<?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>175722</bug_id>
          
          <creation_ts>2017-08-18 09:55:40 -0700</creation_ts>
          <short_desc>Update googletest</short_desc>
          <delta_ts>2021-03-22 15:21:39 -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>Tools / Tests</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=223607</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Ross Kirsling">ross.kirsling</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>koivisto</cc>
    
    <cc>lforschler</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>rniwa</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1340121</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-08-18 09:55:40 -0700</bug_when>
    <thetext>The version of googletest we use for TestWebKitAPI is version 1.5.0, which is pretty old at this point. We should update to the latest (1.7.0 as of this filing) and has some features that would be useful, including the ability to use EXPECT_EQ on types that do not have an operator&lt;&lt; specified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346251</commentid>
    <comment_count>1</comment_count>
      <attachid>320105</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-07 03:20:58 -0700</bug_when>
    <thetext>Created attachment 320105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346351</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-07 09:36:33 -0700</bug_when>
    <thetext>Thanks Yusuke!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346746</commentid>
    <comment_count>3</comment_count>
      <attachid>320249</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-08 01:04:50 -0700</bug_when>
    <thetext>Created attachment 320249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346880</commentid>
    <comment_count>4</comment_count>
      <attachid>320284</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-08 11:25:05 -0700</bug_when>
    <thetext>Created attachment 320284
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347312</commentid>
    <comment_count>5</comment_count>
      <attachid>320284</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-09-10 16:26:31 -0700</bug_when>
    <thetext>Comment on attachment 320284
Patch

When importing a whole directory, I don’t think the ChangeLog should list the individual files as if we were doing the programming as part of this project. Just one big one like this should do:

    gtest: Replaced with a new version.

If changes to our code for compatibility with the new gtest were needed, for those we should use the normal change log style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349852</commentid>
    <comment_count>6</comment_count>
      <attachid>320284</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-09-17 23:31:42 -0700</bug_when>
    <thetext>Comment on attachment 320284
Patch

Marking r- since the patch breaks the build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349853</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-09-17 23:48:42 -0700</bug_when>
    <thetext>I wonder if this will mean we can remove the GTEST_HAS_TR1_TUPLE=0 hack that is in a few places in our project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455251</commentid>
    <comment_count>8</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-08-30 09:53:13 -0700</bug_when>
    <thetext>It sounds like there might be a 1.8.1 release in the near future so perhaps we should revisit this work.

https://github.com/google/googletest/issues/1079#issuecomment-412532869

After that the 1.8.1 branch goes into maintenance and a 1.9 release will drop pre C++11 support.

https://github.com/google/googletest/issues/1366</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455430</commentid>
    <comment_count>9</comment_count>
      <attachid>348556</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-08-30 14:53:22 -0700</bug_when>
    <thetext>Created attachment 348556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455434</commentid>
    <comment_count>10</comment_count>
      <attachid>348556</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-08-30 14:57:10 -0700</bug_when>
    <thetext>Comment on attachment 348556
Patch

This updates gtest to HEAD and ensures that we don&apos;t stick any WebKit stuff into gtest itself this time.

In doing so, there was just one missing include in WebCore that blocked compilation -- otherwise it was as simple as adding wtf/Assertions.h (and FastMalloc.h and DisallowCType.h for good measure) to TestWebKitAPI/config.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455450</commentid>
    <comment_count>11</comment_count>
      <attachid>348561</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-08-30 15:57:19 -0700</bug_when>
    <thetext>Created attachment 348561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455456</commentid>
    <comment_count>12</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-08-30 16:09:03 -0700</bug_when>
    <thetext>Confirmed locally that Mac and WinCairo API tests all pass locally with this patch. :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455462</commentid>
    <comment_count>13</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-08-30 16:30:32 -0700</bug_when>
    <thetext>This WPE EWS bot is currently borked. Its giving the same errors across different patches.

Michael could you maybe make sure GTK and WPE run API tests successfully?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455484</commentid>
    <comment_count>14</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-08-30 17:07:53 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #7)
&gt; I wonder if this will mean we can remove the GTEST_HAS_TR1_TUPLE=0 hack that
&gt; is in a few places in our project.

Regarding this comment, the only place I see this occurring is here:
https://github.com/WebKit/webkit/blob/master/Tools/TestWebKitAPI/Configurations/Base.xcconfig#L38

But I believe we can remove GTEST_HAS_TR1_TUPLE=0 as well as GTEST_HAS_RTTI=0 there, as these were also removed from gtest/xcode/Config/General.xcconfig.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455486</commentid>
    <comment_count>15</comment_count>
      <attachid>348573</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-08-30 17:26:24 -0700</bug_when>
    <thetext>Created attachment 348573
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455502</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-08-30 18:45:51 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #13)
&gt; This WPE EWS bot is currently borked. Its giving the same errors across
&gt; different patches.
&gt; 
&gt; Michael could you maybe make sure GTK and WPE run API tests successfully?

The buildbot (separate from EWS) is broken since r235531 &quot;[CMake] Replace AVFoundationSupport.py using CMake&quot; and is showing the same error. So I think the EWS bot is fine, and the build is just broken.

I have no clue why it broke, maybe one of the changes in WebKitFeatures.cmake?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455532</commentid>
    <comment_count>17</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-08-30 20:41:09 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #16)
&gt; (In reply to Don Olmstead from comment #13)
&gt; &gt; This WPE EWS bot is currently borked. Its giving the same errors across
&gt; &gt; different patches.
&gt; &gt; 
&gt; &gt; Michael could you maybe make sure GTK and WPE run API tests successfully?
&gt; 
&gt; The buildbot (separate from EWS) is broken since r235531 &quot;[CMake] Replace
&gt; AVFoundationSupport.py using CMake&quot; and is showing the same error. So I
&gt; think the EWS bot is fine, and the build is just broken.
&gt; 
&gt; I have no clue why it broke, maybe one of the changes in
&gt; WebKitFeatures.cmake?

Weird I swore previous patches for that one passed.

Is the bundling of the unified build deterministic? There’s always a chance that if the sets change that there can be a build breakage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455533</commentid>
    <comment_count>18</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-08-30 20:59:06 -0700</bug_when>
    <thetext>It is deterministic, but yes if files are added or removed that will change the sets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455549</commentid>
    <comment_count>19</comment_count>
      <attachid>348597</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-08-30 21:34:24 -0700</bug_when>
    <thetext>Created attachment 348597
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455552</commentid>
    <comment_count>20</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-08-30 21:36:54 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #19)
&gt; Created attachment 348597 [details]
&gt; Patch

Resubmitted now that WPE is stable again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455686</commentid>
    <comment_count>21</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-08-31 08:44:48 -0700</bug_when>
    <thetext>I believe this is ready for a review. We can follow up with whatever changes happen between this point in gtest master and 1.8.1.

There hasn&apos;t been a release to gtest in over 2 years and they keep teasing a release soon but who realistically knows. I would assume there will be a 1.8.1 release right after we land this of course because that&apos;s how the world works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455855</commentid>
    <comment_count>22</comment_count>
      <attachid>348597</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-08-31 14:20:13 -0700</bug_when>
    <thetext>Comment on attachment 348597
Patch

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

Overall this patch looks fine, but I think the Project file changes in ThirdParty/gtest are wrong. It seems to lose our Production build target, and does not understand that we might build with our Internal SDK versus the external developer&apos;s SDK. I can&apos;t approve the patch in this form.

&gt; Source/ThirdParty/gtest/xcode/Config/DebugProject.xcconfig:-39
&gt; -SDKROOT_YES = macosx.internal;

I don&apos;t think we want this change.

&gt; Source/ThirdParty/gtest/xcode/Config/FrameworkTarget.xcconfig:-19
&gt; -INSTALL_PATH = $(SYSTEM_LIBRARY_DIR)/PrivateFrameworks;

I don&apos;t think we want this change.

&gt; Source/ThirdParty/gtest/xcode/Config/General.xcconfig:-19
&gt; -ARCHS = $(ARCHS_STANDARD_32_64_BIT);

I don&apos;t think we want this change.

&gt; Source/ThirdParty/gtest/xcode/Config/General.xcconfig:20
&gt; +WARNING_CFLAGS = -Wall -Werror -Wendif-labels -Wnewline-eof -Wno-sign-compare -Wshadow

I really don&apos;t think we want these changes for the macOS/iOS port.

&gt; Source/ThirdParty/gtest/xcode/Config/ProductionProject.xcconfig:-34
&gt; -WK_QUOTED_OVERRIDE_FRAMEWORKS_DIR_YES = &quot;$(WK_OVERRIDE_FRAMEWORKS_DIR)&quot;;

Why is this file going away?

&gt; Source/ThirdParty/gtest/xcode/Config/ReleaseProject.xcconfig:-41
&gt; -SDKROOT_YES = macosx.internal;

I don&apos;t think we want this change.

&gt; Source/ThirdParty/gtest/xcode/Config/StaticLibraryTarget.xcconfig:-20
&gt; -OTHER_LDFLAGS = ;

I don&apos;t think we want this change.

&gt; Source/ThirdParty/gtest/xcode/Makefile:-2
&gt; -include ../../../../Makefile.shared

I don&apos;t think we want this change.

&gt; Source/ThirdParty/gtest/xcode/gtest.xcodeproj/project.pbxproj:-294
&gt; -		};

Why is this going away?

&gt; Source/ThirdParty/gtest/xcode/gtest.xcodeproj/project.pbxproj:-319
&gt; -				1A0A4C4614B7A3BC00895135 /* Frameworks */,

Why is this going away?

&gt; Source/ThirdParty/gtest/xcode/gtest.xcodeproj/project.pbxproj:-347
&gt; -		};

Ditto.

&gt; Source/ThirdParty/gtest/xcode/gtest.xcodeproj/project.pbxproj:841
&gt; +				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;

GCC_VERSION should be controlled by our xcconfig files. I don&apos;t want it set individually!

&gt; Source/ThirdParty/gtest/xcode/gtest.xcodeproj/project.pbxproj:967
&gt; +				SDKROOT = macosx;

We don&apos;t want this set in the project file. It should be controlled by the xcconfig file.

&gt; Source/ThirdParty/gtest/xcode/gtest.xcodeproj/project.pbxproj:-1026
&gt; -		};

Why are you taking away our Production build target?

&gt; Source/ThirdParty/gtest/xcode/gtest.xcodeproj/project.pbxproj:1096
&gt; +			defaultConfigurationName = Release;

Are all of these changes from Production to Release expected? I am a little surprised to see this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455934</commentid>
    <comment_count>23</comment_count>
      <attachid>348700</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-08-31 20:00:18 -0700</bug_when>
    <thetext>Created attachment 348700
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455935</commentid>
    <comment_count>24</comment_count>
      <attachid>348701</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-08-31 20:11:48 -0700</bug_when>
    <thetext>Created attachment 348701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455937</commentid>
    <comment_count>25</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-08-31 20:15:41 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #22)
&gt; Comment on attachment 348597 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=348597&amp;action=review
&gt; 
&gt; Overall this patch looks fine, but I think the Project file changes in
&gt; ThirdParty/gtest are wrong. It seems to lose our Production build target,
&gt; and does not understand that we might build with our Internal SDK versus the
&gt; external developer&apos;s SDK. I can&apos;t approve the patch in this form.

Sorry, I didn&apos;t know the files in that directory were custom. I&apos;ve now gone through them all manually and believe existing functionality should be preserved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456067</commentid>
    <comment_count>26</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-09-02 10:19:23 -0700</bug_when>
    <thetext>There&apos;s been a legit release of gtest.

https://github.com/google/googletest/releases/tag/release-1.8.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456072</commentid>
    <comment_count>27</comment_count>
      <attachid>348740</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-09-02 11:40:52 -0700</bug_when>
    <thetext>Created attachment 348740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456074</commentid>
    <comment_count>28</comment_count>
      <attachid>348741</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-09-02 11:52:33 -0700</bug_when>
    <thetext>Created attachment 348741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456082</commentid>
    <comment_count>29</comment_count>
      <attachid>348745</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-09-02 12:09:13 -0700</bug_when>
    <thetext>Created attachment 348745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456083</commentid>
    <comment_count>30</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-09-02 12:12:04 -0700</bug_when>
    <thetext>Man, it sure doesn&apos;t like it when I include the runtests.sh mode updates...
Oh well, we don&apos;t need them anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456100</commentid>
    <comment_count>31</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-09-02 16:23:50 -0700</bug_when>
    <thetext>Note that the WinCairo EWS failure here is a sporadically-occurring fluke (bug 187725).

Stepping forward from the earlier hash to the 1.8.1 release was a relatively trivial update to the patch here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456320</commentid>
    <comment_count>32</comment_count>
      <attachid>348745</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-09-04 09:12:36 -0700</bug_when>
    <thetext>Comment on attachment 348745
Patch

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

This patch looks like it has correct the project file issues I was concerned about. I think this looks fine.

&gt; Source/ThirdParty/gtest/README.WebKit:-16
&gt; -      gtest-md.vcproj upgraded to VS 2005 (8.0) format to match the rest of WebKit

Were these changes rolled into gtest proper?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456322</commentid>
    <comment_count>33</comment_count>
      <attachid>348745</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-09-04 09:18:20 -0700</bug_when>
    <thetext>Comment on attachment 348745
Patch

rs=me under the assumption that the Sony folks will fix the WinCairo build failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456324</commentid>
    <comment_count>34</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-09-04 09:30:06 -0700</bug_when>
    <thetext>Thanks Brent!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456335</commentid>
    <comment_count>35</comment_count>
      <attachid>348745</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-04 09:56:22 -0700</bug_when>
    <thetext>Comment on attachment 348745
Patch

Clearing flags on attachment: 348745

Committed r235613: &lt;https://trac.webkit.org/changeset/235613&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456336</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-04 09:56:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456337</commentid>
    <comment_count>37</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-04 09:57:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/44100989&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320105</attachid>
            <date>2017-09-07 03:20:58 -0700</date>
            <delta_ts>2017-09-08 01:04:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175722-20170907192056.patch</filename>
            <type>text/plain</type>
            <size>2177462</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9DaGFuZ2VMb2cKaW5kZXggZWQ1ZmE1ODcz
NGYxYTA3Y2EyY2U3M2FjZGM3NWNlMjY0YzI4YTdjYi4uOWEyOGJkODIxZWY5MGVkYmY3NjY5Yzk1
Y2ViMzVlMzYwYzFlN2FkNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0NyBAQAorMjAx
Ny0wOS0wNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBVcGRhdGUgZ29vZ2xldGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc1NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIGd0ZXN0IHZlcnNpb24gZnJvbSAxLjUuMCB0byAxLjguMC4KKwor
ICAgICAgICAqIGd0ZXN0Ly5naXRpZ25vcmU6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L0NIQU5H
RVM6CisgICAgICAgICogZ3Rlc3QvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogZ3Rlc3QvQ09O
VFJJQlVUT1JTOgorICAgICAgICAqIGd0ZXN0L0xJQ0VOU0U6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9DT1BZSU5HLgorICAgICAgICAqIGd0ZXN0L01ha2VmaWxlLmFtOgor
ICAgICAgICAqIGd0ZXN0L1JFQURNRTogUmVtb3ZlZC4KKyAgICAgICAgKiBndGVzdC9SRUFETUUu
V2ViS2l0OiBSZW1vdmVkLgorICAgICAgICAqIGd0ZXN0L1JFQURNRS5tZDogQWRkZWQuCisgICAg
ICAgICogZ3Rlc3QvYnVpbGQtYXV4Ly5rZWVwOiBBZGRlZC4KKyAgICAgICAgKiBndGVzdC9jbWFr
ZS9pbnRlcm5hbF91dGlscy5jbWFrZTogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvY29kZWdlYXIv
Z3Rlc3RfYWxsLmNjOgorICAgICAgICAqIGd0ZXN0L2NvZGVnZWFyL2d0ZXN0X2xpbmsuY2M6Cisg
ICAgICAgICogZ3Rlc3QvY29uZmlndXJlLmFjOgorICAgICAgICAqIGd0ZXN0L2RvY3MvQWR2YW5j
ZWRHdWlkZS5tZDogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvZG9jcy9EZXZHdWlkZS5tZDogQWRk
ZWQuCisgICAgICAgICogZ3Rlc3QvZG9jcy9Eb2N1bWVudGF0aW9uLm1kOiBBZGRlZC4KKyAgICAg
ICAgKiBndGVzdC9kb2NzL0ZBUS5tZDogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvZG9jcy9Qcmlt
ZXIubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvUHVtcE1hbnVhbC5tZDogQWRkZWQu
CisgICAgICAgICogZ3Rlc3QvZG9jcy9TYW1wbGVzLm1kOiBBZGRlZC4KKyAgICAgICAgKiBndGVz
dC9kb2NzL1YxXzVfQWR2YW5jZWRHdWlkZS5tZDogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvZG9j
cy9WMV81X0RvY3VtZW50YXRpb24ubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvVjFf
NV9GQVEubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvVjFfNV9QcmltZXIubWQ6IEFk
ZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvVjFfNV9QdW1wTWFudWFsLm1kOiBBZGRlZC4KKyAg
ICAgICAgKiBndGVzdC9kb2NzL1YxXzVfWGNvZGVHdWlkZS5tZDogQWRkZWQuCisgICAgICAgICog
Z3Rlc3QvZG9jcy9WMV82X0FkdmFuY2VkR3VpZGUubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0
L2RvY3MvVjFfNl9Eb2N1bWVudGF0aW9uLm1kOiBBZGRlZC4KKyAgICAgICAgKiBndGVzdC9kb2Nz
L1YxXzZfRkFRLm1kOiBBZGRlZC4KKyAgICAgICAgKiBndGVzdC9kb2NzL1YxXzZfUHJpbWVyLm1k
OiBBZGRlZC4KKyAgICAgICAgKiBndGVzdC9kb2NzL1YxXzZfUHVtcE1hbnVhbC5tZDogQWRkZWQu
CisgICAgICAgICogZ3Rlc3QvZG9jcy9WMV82X1NhbXBsZXMubWQ6IEFkZGVkLgorICAgICAgICAq
IGd0ZXN0L2RvY3MvVjFfNl9YY29kZUd1aWRlLm1kOiBBZGRlZC4KKyAgICAgICAgKiBndGVzdC9k
b2NzL1YxXzdfQWR2YW5jZWRHdWlkZS5tZDogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvZG9jcy9W
MV83X0RvY3VtZW50YXRpb24ubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvVjFfN19G
QVEubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvVjFfN19QcmltZXIubWQ6IEFkZGVk
LgorICAgICAgICAqIGd0ZXN0L2RvY3MvVjFfN19QdW1wTWFudWFsLm1kOiBBZGRlZC4KKyAgICAg
ICAgKiBndGVzdC9kb2NzL1YxXzdfU2FtcGxlcy5tZDogQWRkZWQuCisgICAgICAgICogZ3Rlc3Qv
ZG9jcy9WMV83X1hjb2RlR3VpZGUubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvWGNv
ZGVHdWlkZS5tZDogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1k
ZWF0aC10ZXN0Lmg6CisgICAgICAgICogZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdl
Lmg6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6U3RyZWFtYWJsZVRvU3RyaW5nKToKKyAg
ICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaDoKKyAgICAgICAg
KFRFU1RfUCk6CisgICAgICAgICh0ZXN0aW5nOjpWYWx1ZXNJbik6CisgICAgICAgICogZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcDoKKyAgICAgICAgKiBndGVzdC9p
bmNsdWRlL2d0ZXN0L2d0ZXN0LXByaW50ZXJzLmg6IEFkZGVkLgorICAgICAgICAodGVzdGluZzo6
aW50ZXJuYWwyOjpUeXBlV2l0aG91dEZvcm1hdHRlcjo6UHJpbnRWYWx1ZSk6CisgICAgICAgICh0
ZXN0aW5nOjppbnRlcm5hbDI6Om9wZXJhdG9yPDwpOgorICAgICAgICAodGVzdGluZ19pbnRlcm5h
bDo6RGVmYXVsdFByaW50Tm9uQ29udGFpbmVyVG8pOgorICAgICAgICAodGVzdGluZzo6aW50ZXJu
YWw6OkZvcm1hdEZvckNvbXBhcmlzb246OkZvcm1hdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRl
cm5hbDo6Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKToKKyAgICAgICAgKHRlc3Rp
bmc6OmludGVybmFsOjpEZWZhdWx0UHJpbnRUbyk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5h
bDo6UHJpbnRUbyk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6UHJpbnRSYXdBcnJheVRv
KToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxQcmludGVyOjpQcmludCk6
CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnRBcnJheSk6CisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnRlcjxUOjpQcmludCk6CisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludGVyOjpQcmludCk6Cisg
ICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludGVyPFQ6OlByaW50
KToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50ZXI8Y2hh
cjo6UHJpbnQpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJp
bnRlcjx3Y2hhcl90OjpQcmludCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVy
c2FsVGVyc2VQcmludCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJp
bnQpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlR1cGxlUG9saWN5OjpnZXQpOgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlR1cGxlUHJlZml4UHJpbnRlcjo6UHJpbnRQcmVmaXhU
byk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VHVwbGVQcmVmaXhQcmludGVyOjpUZXJz
ZVByaW50UHJlZml4VG9TdHJpbmdzKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUdXBs
ZVByZWZpeFByaW50ZXI8MD46OlByaW50UHJlZml4VG8pOgorICAgICAgICAodGVzdGluZzo6aW50
ZXJuYWw6OlR1cGxlUHJlZml4UHJpbnRlcjwwPjo6VGVyc2VQcmludFByZWZpeFRvU3RyaW5ncyk6
CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6UHJpbnRUdXBsZVRvKToKKyAgICAgICAgKHRl
c3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3Mp
OgorICAgICAgICAodGVzdGluZzo6UHJpbnRUb1N0cmluZyk6CisgICAgICAgICogZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9ndGVzdC1zcGkuaDoKKyAgICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2d0
ZXN0LXRlc3QtcGFydC5oOgorICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlw
ZWQtdGVzdC5oOgorICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaDoKKyAgICAg
ICAgKHRlc3Rpbmc6OlRlc3RQcm9wZXJ0eTo6VGVzdFByb3BlcnR5KToKKyAgICAgICAgKHRlc3Rp
bmc6OlRlc3RQcm9wZXJ0eTo6U2V0VmFsdWUpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6
OkNtcEhlbHBlckVRRmFpbHVyZSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVs
cGVyRVEpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkVxSGVscGVyOjpDb21wYXJlKToK
KyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpFcUhlbHBlcjx0cnVlPjo6Q29tcGFyZSk6Cisg
ICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyT3BGYWlsdXJlKToKKyAgICAgICAg
KHRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJGbG9hdGluZ1BvaW50RVEpOgorICAgICAgICAo
dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlOjp+V2l0aFBhcmFtSW50ZXJmYWNlKToKKyAgICAg
ICAgKHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTo6R2V0UGFyYW0gY29uc3QpOgorICAgICAg
ICAodGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxKToKKyAgICAgICAgKFJVTl9BTExfVEVTVFMp
OgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlN0cmVhbWFibGVUb1N0cmluZyk6IERlbGV0
ZWQuCisgICAgICAgICh0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQ6Om9wZXJhdG9yPDwpOiBEZWxl
dGVkLgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkZvcm1hdEZvckZhaWx1cmVNZXNzYWdl
KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2UpOiBEZWxldGVkLgorICAgICAgICAodGVzdGluZzo6VGVzdFdpdGhQ
YXJhbTo6R2V0UGFyYW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAodGVzdGluZzo6VGVzdFdp
dGhQYXJhbTo6U2V0UGFyYW0pOiBEZWxldGVkLgorICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rl
c3QvZ3Rlc3RfcHJlZF9pbXBsLmg6CisgICAgICAgIChBc3NlcnRQcmVkMUhlbHBlcik6CisgICAg
ICAgIChBc3NlcnRQcmVkMkhlbHBlcik6CisgICAgICAgIChBc3NlcnRQcmVkM0hlbHBlcik6Cisg
ICAgICAgIChBc3NlcnRQcmVkNEhlbHBlcik6CisgICAgICAgIChBc3NlcnRQcmVkNUhlbHBlcik6
CisgICAgICAgICogZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9y
dC5oOiBBZGRlZC4KKyAgICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3Rv
bS9ndGVzdC1wcmludGVycy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMV90ZXN0Xy5jYy4KKyAgICAgICAgKiBndGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9saW5rLmNjLgorICAgICAgICAqIGd0ZXN0L2luY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5oOgorICAgICAgICAo
dGVzdGluZzo6aW50ZXJuYWw6OkludGVybmFsUnVuRGVhdGhUZXN0RmxhZzo6SW50ZXJuYWxSdW5E
ZWF0aFRlc3RGbGFnKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpJbnRlcm5hbFJ1bkRl
YXRoVGVzdEZsYWc6OmZpbGUgY29uc3QpOgorICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaDoKKyAgICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6
RmxvYXRpbmdQb2ludDxmbG9hdD46Ok1heCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6
RmxvYXRpbmdQb2ludDxkb3VibGU+OjpNYXgpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6
OkNvZGVMb2NhdGlvbjo6Q29kZUxvY2F0aW9uKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFs
OjpTa2lwQ29tbWEpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkdldFByZWZpeFVudGls
Q29tbWEpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlR5cGVQYXJhbWV0ZXJpemVkVGVz
dDo6UmVnaXN0ZXIpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlR5cGVQYXJhbWV0ZXJp
emVkVGVzdENhc2U6OlJlZ2lzdGVyKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpJc0Nv
bnRhaW5lclRlc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkFycmF5RXEpOgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkFycmF5QXdhcmVGaW5kKToKKyAgICAgICAgKHRlc3Rp
bmc6OmludGVybmFsOjpDb3B5QXJyYXkpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Ok5h
dGl2ZUFycmF5OjpOYXRpdmVBcnJheSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6TmF0
aXZlQXJyYXk6On5OYXRpdmVBcnJheSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6TmF0
aXZlQXJyYXk6OnNpemUgY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Ok5hdGl2
ZUFycmF5OjpiZWdpbiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6TmF0aXZl
QXJyYXk6OmVuZCBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6TmF0aXZlQXJy
YXk6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Ok5hdGl2
ZUFycmF5OjpJbml0Q29weSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6TmF0aXZlQXJy
YXk6OkluaXRSZWYpOgorICAgICAgICAoR1Rlc3RTdHJlYW1Ub0hlbHBlcik6IERlbGV0ZWQuCisg
ICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0VmFsdWVGb3JGYWlsdXJlTWVzc2FnZSk6
IERlbGV0ZWQuCisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0Rm9yRmFpbHVyZU1l
c3NhZ2UpOiBEZWxldGVkLgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkZvcm1hdEZpbGVM
b2NhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC1saW5rZWRfcHRyLmg6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2Vk
X3B0cl9pbnRlcm5hbDo6R1RFU1RfTE9DS19FWENMVURFRF8pOgorICAgICAgICAodGVzdGluZzo6
aW50ZXJuYWw6OmxpbmtlZF9wdHI6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5n
OjppbnRlcm5hbDo6bGlua2VkX3B0cl9pbnRlcm5hbDo6am9pbik6IERlbGV0ZWQuCisgICAgICAg
ICh0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cl9pbnRlcm5hbDo6ZGVwYXJ0KTogRGVsZXRl
ZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpsaW5rZWRfcHRyOjpyZWxlYXNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFt
LXV0aWwtZ2VuZXJhdGVkLmg6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJh
eTE6Om9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+IGNvbnN0KToKKyAgICAgICAgKHRlc3Rpbmc6
OmludGVybmFsOjpWYWx1ZUFycmF5Mjo6b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4gY29uc3Qp
OgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlZhbHVlQXJyYXkzOjpvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVB
cnJheTQ6Om9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+IGNvbnN0KToKKyAgICAgICAgKHRlc3Rp
bmc6OmludGVybmFsOjpWYWx1ZUFycmF5NTo6b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4gY29u
c3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlZhbHVlQXJyYXk2OjpvcGVyYXRvciBQ
YXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFs
dWVBcnJheTc6Om9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+IGNvbnN0KToKKyAgICAgICAgKHRl
c3Rpbmc6OmludGVybmFsOjpWYWx1ZUFycmF5ODo6b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4g
Y29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlZhbHVlQXJyYXk5OjpvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6
VmFsdWVBcnJheTEwOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAg
ICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTExOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTEyOjpv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRl
cm5hbDo6VmFsdWVBcnJheTEzOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6Cisg
ICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTE0OjpvcGVyYXRvciBQYXJhbUdl
bmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJh
eTE1OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5n
OjppbnRlcm5hbDo6VmFsdWVBcnJheTE2OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25z
dCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTE3OjpvcGVyYXRvciBQ
YXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFs
dWVBcnJheTE4OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0
ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTE5OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTIwOjpvcGVy
YXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5h
bDo6VmFsdWVBcnJheTIxOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTIyOjpvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTIz
OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjpp
bnRlcm5hbDo6VmFsdWVBcnJheTI0OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6
CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTI1OjpvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVB
cnJheTI2OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0
aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTI3OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBj
b25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTI4OjpvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6
VmFsdWVBcnJheTI5OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAg
ICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTMwOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTMxOjpv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRl
cm5hbDo6VmFsdWVBcnJheTMyOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6Cisg
ICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTMzOjpvcGVyYXRvciBQYXJhbUdl
bmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJh
eTM0OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5n
OjppbnRlcm5hbDo6VmFsdWVBcnJheTM1OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25z
dCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTM2OjpvcGVyYXRvciBQ
YXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFs
dWVBcnJheTM3OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0
ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTM4OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTM5OjpvcGVy
YXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5h
bDo6VmFsdWVBcnJheTQwOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTQxOjpvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTQy
OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjpp
bnRlcm5hbDo6VmFsdWVBcnJheTQzOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6
CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTQ0OjpvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVB
cnJheTQ1OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0
aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTQ2OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBj
b25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTQ3OjpvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6
VmFsdWVBcnJheTQ4OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAg
ICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTQ5OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTUwOjpv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRl
cm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjI6Om9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6
OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMj4gPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRl
cm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjM6Om9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6
OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDM+ID4gY29uc3QpOgorICAgICAgICAodGVzdGluZzo6
aW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXI0OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPiBjb25zdCk6CisgICAgICAgICh0
ZXN0aW5nOjppbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjU6Om9wZXJhdG9yIFBhcmFt
R2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gPiBjb25zdCk6
CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjY6Om9w
ZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDY+ID4gY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkNhcnRlc2lhblBy
b2R1Y3RIb2xkZXI3OjogY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkNhcnRl
c2lhblByb2R1Y3RIb2xkZXI4OjogY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6
OkNhcnRlc2lhblByb2R1Y3RIb2xkZXI5OjogY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50
ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIxMDo6IGNvbnN0KToKKyAgICAgICAgKHRlc3Rp
bmc6OmludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMjo6b3BlcmF0b3IgUGFyYW1HZW5l
cmF0b3I8IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMj4gPiBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjM6Om9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzPiA+IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9s
ZGVyNDo6b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwg
VDMsIFQ0PiA+IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpD
YXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNTo6b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0
cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gPiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICh0ZXN0aW5nOjppbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjY6Om9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiA+
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcDoKKyAgICAgICAgKiBndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaDoKKyAgICAgICAgKHRlc3Rpbmc6
OlRlc3RQYXJhbUluZm86OlRlc3RQYXJhbUluZm8pOgorICAgICAgICAodGVzdGluZzo6UHJpbnRU
b1N0cmluZ1BhcmFtTmFtZTo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjpp
bnRlcm5hbDo6UmFuZ2VHZW5lcmF0b3I6Okl0ZXJhdG9yOjpBZHZhbmNlKToKKyAgICAgICAgKHRl
c3Rpbmc6OmludGVybmFsOjpSYW5nZUdlbmVyYXRvcjo6Q2FsY3VsYXRlRW5kSW5kZXgpOgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvcjo6
SXRlcmF0b3I6Okl0ZXJhdG9yKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpEZWZhdWx0
UGFyYW1OYW1lKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpHZXRQYXJhbU5hbWVHZW4p
OgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm86
OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8pOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6
OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm86OkdldFRlc3RDYXNlTmFtZSBjb25zdCk6CisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbzo6QWRkVGVz
dENhc2VJbnN0YW50aWF0aW9uKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpQYXJhbWV0
ZXJpemVkVGVzdENhc2VJbmZvOjpSZWdpc3RlclRlc3RzKToKKyAgICAgICAgKHRlc3Rpbmc6Omlu
dGVybmFsOjpQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvOjpJbnN0YW50aWF0aW9uSW5mbzo6SW5z
dGFudGlhdGlvbkluZm8pOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtZXRlcml6
ZWRUZXN0Q2FzZUluZm86OklzVmFsaWRQYXJhbU5hbWUpOgorICAgICAgICAodGVzdGluZzo6aW50
ZXJuYWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5OjpHZXRUZXN0Q2FzZVBhdHRlcm5I
b2xkZXIpOgorICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9y
dC1hcmNoLmg6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtcG9ydC5oOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI6OnN3
YXApOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Om1vdmUpOgorICAgICAgICAodGVzdGlu
Zzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF8pOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6
OkRvd25DYXN0Xyk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Q2hlY2tlZERvd25jYXN0
VG9BY3R1YWxUeXBlKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpOb3RpZmljYXRpb246
Ok5vdGlmaWNhdGlvbik6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Tm90aWZpY2F0aW9u
Ojp+Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpOb3RpZmljYXRp
b246Ok5vdGlmeSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Tm90aWZpY2F0aW9uOjpX
YWl0Rm9yTm90aWZpY2F0aW9uKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJlYWRX
aXRoUGFyYW06OlRocmVhZFdpdGhQYXJhbSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6
R1Rlc3RNdXRleExvY2s6OkdUZXN0TXV0ZXhMb2NrKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVy
bmFsOjpHVGVzdE11dGV4TG9jazo6fkdUZXN0TXV0ZXhMb2NrKToKKyAgICAgICAgKHRlc3Rpbmc6
OmludGVybmFsOjpUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZTo6flRocmVhZExvY2FsVmFsdWVI
b2xkZXJCYXNlKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJlYWRMb2NhbEJhc2U6
OlRocmVhZExvY2FsQmFzZSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkTG9j
YWxCYXNlOjp+VGhyZWFkTG9jYWxCYXNlKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpU
aHJlYWRXaXRoUGFyYW06On5UaHJlYWRXaXRoUGFyYW0pOgorICAgICAgICAodGVzdGluZzo6aW50
ZXJuYWw6OlRocmVhZFdpdGhQYXJhbTo6UnVubmFibGVJbXBsOjpSdW5uYWJsZUltcGwpOgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRocmVhZFdpdGhQYXJhbTo6UnVubmFibGVJbXBsOjp+
UnVubmFibGVJbXBsKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJlYWRXaXRoUGFy
YW06OlJ1bm5hYmxlSW1wbDo6UnVuKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJl
YWRMb2NhbDo6VGhyZWFkTG9jYWwpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRocmVh
ZExvY2FsOjp+VGhyZWFkTG9jYWwpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRocmVh
ZExvY2FsOjpwb2ludGVyKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJlYWRMb2Nh
bDo6cG9pbnRlciBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkTG9j
YWw6OmdldCBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkTG9jYWw6
OnNldCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkTG9jYWw6OlZhbHVlSG9s
ZGVyOjpWYWx1ZUhvbGRlcik6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkTG9j
YWw6OlZhbHVlSG9sZGVyOjpwb2ludGVyKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpU
aHJlYWRMb2NhbDo6R2V0T3JDcmVhdGVWYWx1ZSBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjpp
bnRlcm5hbDo6VGhyZWFkTG9jYWw6Ok5ld1ZhbHVlRm9yQ3VycmVudFRocmVhZCBjb25zdCk6Cisg
ICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkTG9jYWw6OlZhbHVlSG9sZGVyRmFjdG9y
eTo6VmFsdWVIb2xkZXJGYWN0b3J5KToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJl
YWRMb2NhbDo6VmFsdWVIb2xkZXJGYWN0b3J5Ojp+VmFsdWVIb2xkZXJGYWN0b3J5KToKKyAgICAg
ICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJlYWRMb2NhbDo6RGVmYXVsdFZhbHVlSG9sZGVyRmFj
dG9yeTo6RGVmYXVsdFZhbHVlSG9sZGVyRmFjdG9yeSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRl
cm5hbDo6VGhyZWFkTG9jYWw6OkRlZmF1bHRWYWx1ZUhvbGRlckZhY3Rvcnk6Ok1ha2VOZXdIb2xk
ZXIgY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRocmVhZExvY2FsOjpJbnN0
YW5jZVZhbHVlSG9sZGVyRmFjdG9yeTo6SW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkpOgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRocmVhZExvY2FsOjpJbnN0YW5jZVZhbHVlSG9sZGVy
RmFjdG9yeTo6TWFrZU5ld0hvbGRlciBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5h
bDo6TXV0ZXhCYXNlOjpMb2NrKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpNdXRleEJh
c2U6OlVubG9jayk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXhCYXNlOjpBc3Nl
cnRIZWxkIGNvbnN0KToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpNdXRleDo6TXV0ZXgp
OgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4OjpMb2NrKToKKyAgICAgICAgKHRl
c3Rpbmc6OmludGVybmFsOjpNdXRleDo6VW5sb2NrKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVy
bmFsOjpJc0FscGhhKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpJc0FsTnVtKToKKyAg
ICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpJc0RpZ2l0KToKKyAgICAgICAgKHRlc3Rpbmc6Omlu
dGVybmFsOjpJc0xvd2VyKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpJc1NwYWNlKToK
KyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpJc1VwcGVyKToKKyAgICAgICAgKHRlc3Rpbmc6
OmludGVybmFsOjpJc1hEaWdpdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VG9Mb3dl
cik6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VG9VcHBlcik6CisgICAgICAgICh0ZXN0
aW5nOjppbnRlcm5hbDo6U3RyaXBUcmFpbGluZ1NwYWNlcyk6CisgICAgICAgICh0ZXN0aW5nOjpp
bnRlcm5hbDo6cG9zaXg6OkdldEVudik6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6U3Ry
U3RyZWFtOjpvcGVyYXRvciBuZXcpOiBEZWxldGVkLgorICAgICAgICAodGVzdGluZzo6aW50ZXJu
YWw6OlN0clN0cmVhbTo6b3BlcmF0b3IgbmV3W10pOiBEZWxldGVkLgorICAgICAgICAodGVzdGlu
Zzo6aW50ZXJuYWw6OlN0clN0cmVhbTo6b3BlcmF0b3IgZGVsZXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKHRlc3Rpbmc6OmludGVybmFsOjpTdHJTdHJlYW06Om9wZXJhdG9yIGRlbGV0ZVtdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmlu
Zy5oOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Om9wZXJhdG9yPDwpOiBEZWxldGVkLgor
ICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaDoKKyAg
ICAgICAgKHN0ZDo6dHIxOjpndGVzdF9pbnRlcm5hbDo6PEdURVNUXzEwX1RZUEVOQU1FU18pOgor
ICAgICAgICAoc3RkOjp0cjE6OjxHVEVTVF8wX1RZUEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0
cjE6OjxHVEVTVF8xX1RZUEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6OjxHVEVTVF8yX1RZ
UEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6OjxHVEVTVF8zX1RZUEVOQU1FU18pOgorICAg
ICAgICAoc3RkOjp0cjE6OjxHVEVTVF80X1RZUEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6
OjxHVEVTVF81X1RZUEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6OjxHVEVTVF82X1RZUEVO
QU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6OjxHVEVTVF83X1RZUEVOQU1FU18pOgorICAgICAg
ICAoc3RkOjp0cjE6OjxHVEVTVF84X1RZUEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6OjxH
VEVTVF85X1RZUEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6OjxHVEVTVF8xMF9UWVBFTkFN
RVNfKToKKyAgICAgICAgKHN0ZDo6dHIxOjpHVEVTVF8xMF9UWVBFTkFNRVNfKToKKyAgICAgICAg
KiBndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcDoKKyAgICAg
ICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oOgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkdldFR5cGVOYW1lKToKKyAgICAgICAgKiBndGVzdC9p
bmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oLnB1bXA6CisgICAgICAgICog
Z3Rlc3QvbWFrZS9NYWtlZmlsZToKKyAgICAgICAgKiBndGVzdC9tc3ZjL2d0ZXN0LW1kLnNsbjog
QWRkZWQuCisgICAgICAgICogZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3Byb2o6IEFkZGVkLgorICAg
ICAgICAqIGd0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4cHJvajogUmVtb3ZlZC4KKyAgICAgICAgKiBn
dGVzdC9tc3ZjL2d0ZXN0LW1kLnZjeHByb2ouZmlsdGVyczogUmVtb3ZlZC4KKyAgICAgICAgKiBn
dGVzdC9tc3ZjL2d0ZXN0LnNsbjogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvbXN2Yy9ndGVzdC52
Y3Byb2o6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L21zdmMvZ3Rlc3RfbWFpbi1tZC52Y3Byb2o6
IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L21zdmMvZ3Rlc3RfbWFpbi52Y3Byb2o6IEFkZGVkLgor
ICAgICAgICAqIGd0ZXN0L21zdmMvZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjcHJvajogQWRkZWQuCisg
ICAgICAgICogZ3Rlc3QvbXN2Yy9ndGVzdF9wcm9kX3Rlc3QudmNwcm9qOiBBZGRlZC4KKyAgICAg
ICAgKiBndGVzdC9tc3ZjL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjcHJvajogQWRkZWQuCisgICAgICAg
ICogZ3Rlc3QvbXN2Yy9ndGVzdF91bml0dGVzdC52Y3Byb2o6IEFkZGVkLgorICAgICAgICAqIGd0
ZXN0L3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2M6CisgICAgICAgICogZ3Rlc3Qvc2FtcGxl
cy9zYW1wbGUxX3VuaXR0ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3NhbXBsZXMvc2FtcGxlMi5o
OgorICAgICAgICAqIGd0ZXN0L3NhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYzoKKyAgICAgICAg
KiBndGVzdC9zYW1wbGVzL3NhbXBsZTMtaW5sLmg6CisgICAgICAgIChRdWV1ZU5vZGU6OlF1ZXVl
Tm9kZSk6CisgICAgICAgICogZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjOgorICAg
ICAgICAqIGd0ZXN0L3NhbXBsZXMvc2FtcGxlNF91bml0dGVzdC5jYzoKKyAgICAgICAgKiBndGVz
dC9zYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2M6CisgICAgICAgICogZ3Rlc3Qvc2FtcGxlcy9z
YW1wbGU2X3VuaXR0ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3NhbXBsZXMvc2FtcGxlN191bml0
dGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC9zYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2M6Cisg
ICAgICAgICogZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjOgorICAgICAgICAqIGd0
ZXN0L3NjcmlwdHMvY29tbW9uLnB5OiBSZW5hbWVkIGZyb20gU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvcnVuX3Rlc3RzLnB5LgorICAgICAgICAoR2V0Q29tbWFuZE91dHB1dCk6CisgICAgICAgIChH
ZXRTdm5JbmZvKToKKyAgICAgICAgKEdldFN2blRydW5rKToKKyAgICAgICAgKElzSW5HVGVzdFN2
bik6CisgICAgICAgIChJc0luR01vY2tTdm4pOgorICAgICAgICAqIGd0ZXN0L3NjcmlwdHMvZnVz
ZV9ndGVzdF9maWxlcy5weToKKyAgICAgICAgKFZlcmlmeUZpbGVFeGlzdHMpOgorICAgICAgICAo
VmVyaWZ5T3V0cHV0RmlsZSk6CisgICAgICAgIChGdXNlR1Rlc3RIKToKKyAgICAgICAgKEZ1c2VH
VGVzdEguUHJvY2Vzc0ZpbGUpOgorICAgICAgICAoRnVzZUdUZXN0QWxsQ2NUb0ZpbGUpOgorICAg
ICAgICAoRnVzZUdUZXN0QWxsQ2NUb0ZpbGUuUHJvY2Vzc0ZpbGUpOgorICAgICAgICAoRnVzZUdU
ZXN0QWxsQ2MpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogZ3Rlc3Qvc2NyaXB0cy9nZW5f
Z3Rlc3RfcHJlZF9pbXBsLnB5OgorICAgICAgICAqIGd0ZXN0L3NjcmlwdHMvZ3Rlc3QtY29uZmln
LmluOgorICAgICAgICAqIGd0ZXN0L3NjcmlwdHMvcHVtcC5weToKKyAgICAgICAgKFN0cmlwTWV0
YUNvbW1lbnRzKToKKyAgICAgICAgKFRva2VuaXplTGluZXMpOgorICAgICAgICAoVG9rZW5pemUp
OgorICAgICAgICAoUGFyc2VUb0FTVCk6CisgICAgICAgIChJc1NpbmdsZUxpbmVDb21tZW50KToK
KyAgICAgICAgKElzSW5QcmVwcm9jZXNzb3JEaXJlY3RpdmUpOgorICAgICAgICAoV3JhcFByZXBy
b2Nlc3NvckRpcmVjdGl2ZSk6CisgICAgICAgIChJc011bHRpTGluZUlXWVVQcmFnbWEpOgorICAg
ICAgICAoSXNIZWFkZXJHdWFyZEluY2x1ZGVPck9uZUxpbmVJV1lVUHJhZ21hKToKKyAgICAgICAg
KFdyYXBMb25nTGluZSk6CisgICAgICAgIChDb252ZXJ0RnJvbVB1bXBTb3VyY2UpOgorICAgICAg
ICAobWFpbik6CisgICAgICAgIChDb252ZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKElzQ29tbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChJc0luUHJlcHJvY2Vzc29yRGlyZXZhdGl2ZSk6IERlbGV0
ZWQuCisgICAgICAgIChXcmFwUHJlcHJvY2Vzc29yRGlyZXZhdGl2ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChJc0hlYWRlckd1YXJkT3JJbmNsdWRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBndGVzdC9z
Y3JpcHRzL3JlbGVhc2VfZG9jcy5weTogQWRkZWQuCisgICAgICAgIChEcm9wV2lraVN1ZmZpeCk6
CisgICAgICAgIChXaWtpQnJhbmNoZXIpOgorICAgICAgICAoV2lraUJyYW5jaGVyLl9faW5pdF9f
KToKKyAgICAgICAgKFdpa2lCcmFuY2hlci5HZXRGaWxlc1RvQnJhbmNoKToKKyAgICAgICAgKFdp
a2lCcmFuY2hlci5CcmFuY2hGaWxlcyk6CisgICAgICAgIChXaWtpQnJhbmNoZXIuVXBkYXRlTGlu
a3NJbkJyYW5jaGVkRmlsZXMpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogZ3Rlc3Qvc2Ny
aXB0cy90ZXN0L01ha2VmaWxlOgorICAgICAgICAqIGd0ZXN0L3NyYy9ndGVzdC1hbGwuY2M6Cisg
ICAgICAgICogZ3Rlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2M6CisgICAgICAgICogZ3Rlc3Qv
c3JjL2d0ZXN0LWZpbGVwYXRoLmNjOgorICAgICAgICAqIGd0ZXN0L3NyYy9ndGVzdC1pbnRlcm5h
bC1pbmwuaDoKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpHVGVzdEZsYWdTYXZlcjo6R1Rl
c3RGbGFnU2F2ZXIpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkdUZXN0RmxhZ1NhdmVy
Ojp+R1Rlc3RGbGFnU2F2ZXIpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkNvdW50SWYp
OgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRlc3RQcm9wZXJ0eUtleUlzOjpUZXN0UHJv
cGVydHlLZXlJcyk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdFByb3BlcnR5S2V5
SXM6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Ok9zU3Rh
Y2tUcmFjZUdldHRlcjo6T3NTdGFja1RyYWNlR2V0dGVyKToKKyAgICAgICAgKHRlc3Rpbmc6Omlu
dGVybmFsOjpQYXJzZU5hdHVyYWxOdW1iZXIpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6
OlRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkpOgorICAgICAgICAodGVzdGluZzo6
aW50ZXJuYWw6OlRlc3RJbmZvSW1wbDo6c2hvdWxkX3J1biBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdEluZm9JbXBsOjpzZXRfc2hvdWxkX3J1bik6IERl
bGV0ZWQuCisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdEluZm9JbXBsOjppc19kaXNh
YmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdElu
Zm9JbXBsOjpzZXRfaXNfZGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAodGVzdGluZzo6aW50
ZXJuYWw6OlRlc3RJbmZvSW1wbDo6bWF0Y2hlc19maWx0ZXIgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRlc3RJbmZvSW1wbDo6c2V0X21hdGNoZXNfZmlsdGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUZXN0SW5mb0ltcGw6OnRl
c3RfY2FzZV9uYW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFs
OjpUZXN0SW5mb0ltcGw6Om5hbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAodGVzdGluZzo6
aW50ZXJuYWw6OlRlc3RJbmZvSW1wbDo6dGVzdF9jYXNlX2NvbW1lbnQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRlc3RJbmZvSW1wbDo6Y29tbWVudCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdEluZm9JbXBsOjpm
aXh0dXJlX2NsYXNzX2lkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVy
bmFsOjpUZXN0SW5mb0ltcGw6OnJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0aW5nOjpp
bnRlcm5hbDo6VGVzdEluZm9JbXBsOjpyZXN1bHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
dGVzdGluZzo6aW50ZXJuYWw6OlRlc3RJbmZvSW1wbDo6Q2xlYXJSZXN1bHQpOiBEZWxldGVkLgor
ICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRlc3RJbmZvSW1wbDo6Q2xlYXJUZXN0UmVzdWx0
KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxlOjpBdXRv
SGFuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxl
Ojp+QXV0b0hhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6QXV0
b0hhbmRsZTo6R2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFs
OjpBdXRvSGFuZGxlOjpSZXNldCk6IERlbGV0ZWQuCisgICAgICAgICogZ3Rlc3Qvc3JjL2d0ZXN0
LXBvcnQuY2M6CisgICAgICAgICogZ3Rlc3Qvc3JjL2d0ZXN0LXByaW50ZXJzLmNjOiBBZGRlZC4K
KyAgICAgICAgKiBndGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjOgorICAgICAgICAqIGd0ZXN0
L3NyYy9ndGVzdC10eXBlZC10ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3NyYy9ndGVzdC5jYzoK
KyAgICAgICAgKiBndGVzdC9zcmMvZ3Rlc3RfbWFpbi5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0
L2d0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYzogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvdGVz
dC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdC1m
aWxlcGF0aF90ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3QtbGlua2VkX3B0cl90
ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYzoKKyAg
ICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0LW1lc3NhZ2VfdGVzdC5jYzoKKyAgICAgICAgKiBndGVz
dC90ZXN0L2d0ZXN0LW9wdGlvbnNfdGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0
LXBhcmFtLXRlc3QyX3Rlc3QuY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10
ZXN0X3Rlc3QuY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3Qu
aDoKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYzoKKyAgICAgICAgKiBn
dGVzdC90ZXN0L2d0ZXN0LXByaW50ZXJzX3Rlc3QuY2M6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0
L3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVz
dC10dXBsZV90ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJf
dGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYzoK
KyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oOgorICAgICAgICAq
IGd0ZXN0L3Rlc3QvZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2M6CisgICAgICAgICogZ3Rlc3Qv
dGVzdC9ndGVzdF9hbGxfdGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0X2JyZWFr
X29uX2ZhaWx1cmVfdW5pdHRlc3QucHk6CisgICAgICAgIChTZXRFbnZWYXIpOiBEZWxldGVkLgor
ICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8uY2M6
CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9jYXRjaF9leGNlcHRpb25zX3Rlc3QucHk6IEFk
ZGVkLgorICAgICAgICAoQ2F0Y2hTZWhFeGNlcHRpb25zVGVzdCk6CisgICAgICAgIChDYXRjaFNl
aEV4Y2VwdGlvbnNUZXN0LlRlc3RTZWhFeGNlcHRpb25zKToKKyAgICAgICAgKENhdGNoU2VoRXhj
ZXB0aW9uc1Rlc3QudGVzdENhdGNoZXNTZWhFeGNlcHRpb25zV2l0aEN4eEV4Y2VwdGlvbnNFbmFi
bGVkKToKKyAgICAgICAgKENhdGNoU2VoRXhjZXB0aW9uc1Rlc3QudGVzdENhdGNoZXNTZWhFeGNl
cHRpb25zV2l0aEN4eEV4Y2VwdGlvbnNEaXNhYmxlZCk6CisgICAgICAgIChDYXRjaEN4eEV4Y2Vw
dGlvbnNUZXN0KToKKyAgICAgICAgKENhdGNoQ3h4RXhjZXB0aW9uc1Rlc3QudGVzdENhdGNoZXND
eHhFeGNlcHRpb25zSW5GaXh0dXJlQ29uc3RydWN0b3IpOgorICAgICAgICAoQ2F0Y2hDeHhFeGNl
cHRpb25zVGVzdC50ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJbkZpeHR1cmVEZXN0cnVjdG9yKToK
KyAgICAgICAgKENhdGNoQ3h4RXhjZXB0aW9uc1Rlc3QudGVzdENhdGNoZXNDeHhFeGNlcHRpb25z
SW5TZXRVcFRlc3RDYXNlKToKKyAgICAgICAgKENhdGNoQ3h4RXhjZXB0aW9uc1Rlc3QudGVzdENh
dGNoZXNDeHhFeGNlcHRpb25zSW5UZWFyRG93blRlc3RDYXNlKToKKyAgICAgICAgKENhdGNoQ3h4
RXhjZXB0aW9uc1Rlc3QudGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5TZXRVcCk6CisgICAgICAg
IChDYXRjaEN4eEV4Y2VwdGlvbnNUZXN0LnRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luVGVhckRv
d24pOgorICAgICAgICAoQ2F0Y2hDeHhFeGNlcHRpb25zVGVzdC50ZXN0Q2F0Y2hlc0N4eEV4Y2Vw
dGlvbnNJblRlc3RCb2R5KToKKyAgICAgICAgKENhdGNoQ3h4RXhjZXB0aW9uc1Rlc3QudGVzdENh
dGNoZXNOb25TdGRDeHhFeGNlcHRpb25zKToKKyAgICAgICAgKENhdGNoQ3h4RXhjZXB0aW9uc1Rl
c3QudGVzdFVuaGFuZGxlZEN4eEV4Y2VwdGlvbnNBYm9ydFRoZVByb2dyYW0pOgorICAgICAgICAq
IGd0ZXN0L3Rlc3QvZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc190ZXN0Xy5jYzogQWRkZWQuCisgICAg
ICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0Xy5jYzoKKyAgICAgICAgKiBndGVzdC90
ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weToKKyAgICAgICAgKEFzc2VydEVxKToKKyAgICAgICAg
KEdUZXN0RW52VmFyVGVzdC50ZXN0RW52VmFyQWZmZWN0c0ZsYWcpOgorICAgICAgICAoR1Rlc3RF
bnZWYXJUZXN0LnRlc3RYbWxPdXRwdXRGaWxlKToKKyAgICAgICAgKEdUZXN0RW52VmFyVGVzdCk6
CisgICAgICAgIChHVGVzdEVudlZhclRlc3QudGVzdFhtbE91dHB1dEZpbGVPdmVycmlkZSk6Cisg
ICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3RfLmNjOgorICAgICAgICAqIGd0
ZXN0L3Rlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0
L2d0ZXN0X2ZpbHRlcl91bml0dGVzdC5weToKKyAgICAgICAgKEdUZXN0RmlsdGVyVW5pdFRlc3Qu
QXNzZXJ0UGFydGl0aW9uSXNWYWxpZCk6CisgICAgICAgIChHVGVzdEZpbHRlclVuaXRUZXN0LkFk
anVzdEZvclBhcmFtZXRlcml6ZWRUZXN0cyk6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9m
aWx0ZXJfdW5pdHRlc3RfLmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0
LnB5OgorICAgICAgICAoR1Rlc3RIZWxwVGVzdC5UZXN0SGVscEZsYWcpOgorICAgICAgICAqIGd0
ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0Xy5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0
X2xpc3RfdGVzdHNfdW5pdHRlc3QucHk6CisgICAgICAgIChWZXJ5TG8pOgorICAgICAgICAoR1Rl
c3RMaXN0VGVzdHNVbml0VGVzdC5SdW5BbmRWZXJpZnkpOgorICAgICAgICAoR1Rlc3RMaXN0VGVz
dHNVbml0VGVzdC50ZXN0RGVmYXVsdEJlaGF2aW9yKToKKyAgICAgICAgKEdUZXN0TGlzdFRlc3Rz
VW5pdFRlc3QudGVzdEZsYWcpOgorICAgICAgICAoR1Rlc3RMaXN0VGVzdHNVbml0VGVzdC50ZXN0
T3ZlcnJpZGVOb25GaWx0ZXJGbGFncyk6CisgICAgICAgIChHVGVzdExpc3RUZXN0c1VuaXRUZXN0
LnRlc3RXaXRoRmlsdGVyRmxhZ3MpOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90
ZXN0c191bml0dGVzdF8uY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9tYWluX3VuaXR0
ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfbmMuY2M6IFJlbW92ZWQuCisgICAg
ICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9uY190ZXN0LnB5OiBSZW1vdmVkLgorICAgICAgICAqIGd0
ZXN0L3Rlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0
L2d0ZXN0X291dHB1dF90ZXN0LnB5OgorICAgICAgICAoTm9ybWFsaXplVG9DdXJyZW50UGxhdGZv
cm0pOgorICAgICAgICAoR1Rlc3RPdXRwdXRUZXN0LnRlc3RPdXRwdXQpOgorICAgICAgICAqIGd0
ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rl
c3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQ6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVz
dF9vdXRwdXRfdGVzdF9nb2xkZW5fd2luLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBndGVzdC90
ZXN0L2d0ZXN0X3ByZWRfaW1wbF91bml0dGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0
ZXN0X3ByZW1hdHVyZV9leGl0X3Rlc3QuY2M6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L3Rlc3Qv
Z3Rlc3RfcHJvZF90ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfcmVwZWF0X3Rl
c3QuY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3RfLmNjOgorICAg
ICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYzoKKyAgICAgICAgKiBn
dGVzdC90ZXN0L2d0ZXN0X3N0cmVzc190ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rl
c3RfdGVzdF91dGlscy5weToKKyAgICAgICAgKFNldEVudlZhcik6CisgICAgICAgIChHZXRTb3Vy
Y2VEaXIpOgorICAgICAgICAoR2V0QnVpbGREaXIpOgorICAgICAgICAoR2V0VGVzdEV4ZWN1dGFi
bGVQYXRoKToKKyAgICAgICAgKFN1YnByb2Nlc3MuX19pbml0X18uX1JlcGxhY2VFbnZEaWN0KToK
KyAgICAgICAgKFN1YnByb2Nlc3MpOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3df
b25fZmFpbHVyZV9leF90ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3df
b25fZmFpbHVyZV90ZXN0LnB5OgorICAgICAgICAoUnVuKToKKyAgICAgICAgKiBndGVzdC90ZXN0
L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9n
dGVzdF91bmluaXRpYWxpemVkX3Rlc3QucHk6CisgICAgICAgIChBc3NlcnRFcSk6CisgICAgICAg
ICogZ3Rlc3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3RfLmNjOgorICAgICAgICAqIGd0
ZXN0L3Rlc3QvZ3Rlc3RfdW5pdHRlc3QuY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF94
bWxfb3V0ZmlsZTFfdGVzdF8uY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0
ZmlsZTJfdGVzdF8uY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZXNf
dGVzdC5weToKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3Qu
cHk6CisgICAgICAgIChHVGVzdFhNTE91dHB1dFVuaXRUZXN0KToKKyAgICAgICAgKEdUZXN0WE1M
T3V0cHV0VW5pdFRlc3QudGVzdE5vbkVtcHR5WG1sT3V0cHV0KToKKyAgICAgICAgKEdUZXN0WE1M
T3V0cHV0VW5pdFRlc3QudGVzdEVtcHR5WG1sT3V0cHV0KToKKyAgICAgICAgKEdUZXN0WE1MT3V0
cHV0VW5pdFRlc3QudGVzdFRpbWVzdGFtcFZhbHVlKToKKyAgICAgICAgKEdUZXN0WE1MT3V0cHV0
VW5pdFRlc3QudGVzdERlZmF1bHRPdXRwdXRGaWxlKToKKyAgICAgICAgKEdUZXN0WE1MT3V0cHV0
VW5pdFRlc3QudGVzdFN1cHByZXNzZWRYbWxPdXRwdXQpOgorICAgICAgICAoR1Rlc3RYTUxPdXRw
dXRVbml0VGVzdC50ZXN0RmlsdGVyZWRUZXN0WG1sT3V0cHV0KToKKyAgICAgICAgKEdUZXN0WE1M
T3V0cHV0VW5pdFRlc3QuX0dldFhtbE91dHB1dCk6CisgICAgICAgIChHVGVzdFhNTE91dHB1dFVu
aXRUZXN0Ll9UZXN0WG1sT3V0cHV0KToKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0X3htbF9v
dXRwdXRfdW5pdHRlc3RfLmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX3Rlc3Rf
dXRpbHMucHk6CisgICAgICAgIChHVGVzdFhNTFRlc3RDYXNlLkFzc2VydEVxdWl2YWxlbnROb2Rl
cyk6CisgICAgICAgIChHVGVzdFhNTFRlc3RDYXNlKToKKyAgICAgICAgKEdUZXN0WE1MVGVzdENh
c2UuX0dldENoaWxkcmVuKToKKyAgICAgICAgKEdUZXN0WE1MVGVzdENhc2UuTm9ybWFsaXplWG1s
KToKKyAgICAgICAgKiBndGVzdC90ZXN0L3Byb2R1Y3Rpb24uaDoKKyAgICAgICAgKiBndGVzdC90
ZXN0L3J1bl90ZXN0c191dGlsLnB5OiBSZW1vdmVkLgorICAgICAgICAqIGd0ZXN0L3Rlc3QvcnVu
X3Rlc3RzX3V0aWxfdGVzdC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBndGVzdC94Y29kZS9Db25m
aWcvRGVidWdQcm9qZWN0LnhjY29uZmlnOgorICAgICAgICAqIGd0ZXN0L3hjb2RlL0NvbmZpZy9G
cmFtZXdvcmtUYXJnZXQueGNjb25maWc6CisgICAgICAgICogZ3Rlc3QveGNvZGUvQ29uZmlnL0dl
bmVyYWwueGNjb25maWc6CisgICAgICAgICogZ3Rlc3QveGNvZGUvQ29uZmlnL1Byb2R1Y3Rpb25Q
cm9qZWN0LnhjY29uZmlnOiBSZW1vdmVkLgorICAgICAgICAqIGd0ZXN0L3hjb2RlL0NvbmZpZy9S
ZWxlYXNlUHJvamVjdC54Y2NvbmZpZzoKKyAgICAgICAgKiBndGVzdC94Y29kZS9Db25maWcvU3Rh
dGljTGlicmFyeVRhcmdldC54Y2NvbmZpZzoKKyAgICAgICAgKiBndGVzdC94Y29kZS9NYWtlZmls
ZTogUmVtb3ZlZC4KKyAgICAgICAgKiBndGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBs
ZS9ydW50ZXN0cy5zaDoKKyAgICAgICAgKiBndGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1Nh
bXBsZS93aWRnZXRfdGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC94Y29kZS9TY3JpcHRzL3J1bnRl
c3RzLnNoOgorICAgICAgICAqIGd0ZXN0L3hjb2RlL1NjcmlwdHMvdmVyc2lvbmdlbmVyYXRlLnB5
OgorICAgICAgICAqIGd0ZXN0L3hjb2RlL2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKIDIwMTctMDgtMDggIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtDTWFrZV0gUHJvcGVybHkgdGVzdCBpZiBjb21waWxlciBzdXBwb3J0cyBj
b21waWxlciBmbGFncwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvLmdpdGln
bm9yZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0Ly5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI3
YmU0YjkxYjcwMWRiOWYzZjg5ODkxZTBiZGIxMjc5ZmIxNTNiNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0Ly5naXRpZ25vcmUKQEAgLTAsMCArMSwyIEBACisjIHB5
dGhvbgorKi5weWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NIQU5HRVMg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DSEFOR0VTCmluZGV4IGU1NzQ0MTVlZTZlZDgxY2Y0
OTJiZTI5NTM0NmM0NDRlZWIxMGNlODguLjA1NTIxMzI0MjEyYzkxMjg3ZDkyNDRkNDRiYWIzMDZk
YjY2NGJhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NIQU5HRVMKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ0hBTkdFUwpAQCAtMSwzICsxLDYyIEBACitDaGFu
Z2VzIGZvciAxLjcuMDoKKworKiBOZXcgZmVhdHVyZTogZGVhdGggdGVzdHMgYXJlIHN1cHBvcnRl
ZCBvbiBPcGVuQlNEIGFuZCBpbiBpT1MKKyAgc2ltdWxhdG9yIG5vdy4KKyogTmV3IGZlYXR1cmU6
IEdvb2dsZSBUZXN0IG5vdyBpbXBsZW1lbnRzIGEgcHJvdG9jb2wgdG8gYWxsb3cKKyAgYSB0ZXN0
IHJ1bm5lciB0byBkZXRlY3QgdGhhdCBhIHRlc3QgcHJvZ3JhbSBoYXMgZXhpdGVkCisgIHByZW1h
dHVyZWx5IGFuZCByZXBvcnQgaXQgYXMgYSBmYWlsdXJlIChiZWZvcmUgaXQgd291bGQgYmUKKyAg
ZmFsc2VseSByZXBvcnRlZCBhcyBhIHN1Y2Nlc3MgaWYgdGhlIGV4aXQgY29kZSBpcyAwKS4KKyog
TmV3IGZlYXR1cmU6IFRlc3Q6OlJlY29yZFByb3BlcnR5KCkgY2FuIG5vdyBiZSB1c2VkIG91dHNp
ZGUgb2YgdGhlCisgIGxpZmVzcGFuIG9mIGEgdGVzdCBtZXRob2QsIGluIHdoaWNoIGNhc2UgaXQg
d2lsbCBiZSBhdHRyaWJ1dGVkIHRvCisgIHRoZSBjdXJyZW50IHRlc3QgY2FzZSBvciB0aGUgdGVz
dCBwcm9ncmFtIGluIHRoZSBYTUwgcmVwb3J0LgorKiBOZXcgZmVhdHVyZSAocG90ZW50aWFsbHkg
YnJlYWtpbmcpOiAtLWd0ZXN0X2xpc3RfdGVzdHMgbm93IHByaW50cworICB0aGUgdHlwZSBwYXJh
bWV0ZXJzIGFuZCB2YWx1ZSBwYXJhbWV0ZXJzIGZvciBlYWNoIHRlc3QuCisqIEltcHJvdmVtZW50
OiBjaGFyIHBvaW50ZXJzIGFuZCBjaGFyIGFycmF5cyBhcmUgbm93IGVzY2FwZWQgcHJvcGVybHkK
KyAgaW4gZmFpbHVyZSBtZXNzYWdlcy4KKyogSW1wcm92ZW1lbnQ6IGZhaWx1cmUgc3VtbWFyeSBp
biBYTUwgcmVwb3J0cyBub3cgaW5jbHVkZXMgZmlsZSBhbmQKKyAgbGluZSBpbmZvcm1hdGlvbi4K
KyogSW1wcm92ZW1lbnQ6IHRoZSA8dGVzdHN1aXRlcz4gWE1MIGVsZW1lbnQgbm93IGhhcyBhIHRp
bWVzdGFtcCBhdHRyaWJ1dGUuCisqIEltcHJvdmVtZW50OiBXaGVuIC0tZ3Rlc3RfZmlsdGVyIGlz
IHNwZWNpZmllZCwgWE1MIHJlcG9ydCBub3cgZG9lc24ndAorICBjb250YWluIGluZm9ybWF0aW9u
IGFib3V0IHRlc3RzIHRoYXQgYXJlIGZpbHRlcmVkIG91dC4KKyogRml4ZWQgdGhlIGJ1ZyB3aGVy
ZSBsb25nIC0tZ3Rlc3RfZmlsdGVyIGZsYWcgdmFsdWVzIGFyZSB0cnVuY2F0ZWQgaW4KKyAgZGVh
dGggdGVzdHMuCisqIFBvdGVudGlhbGx5IGJyZWFraW5nIGNoYW5nZTogUlVOX0FMTF9URVNUUygp
IGlzIG5vdyBpbXBsZW1lbnRlZCBhcyBhCisgIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBtYWNybyBp
biBvcmRlciB0byB3b3JrIGJldHRlciB3aXRoIENsYW5nLgorKiBDb21wYXRpYmlsaXR5IGZpeGVz
IHdpdGggQysrIDExIGFuZCB2YXJpb3VzIHBsYXRmb3Jtcy4KKyogQnVnL3dhcm5pbmcgZml4ZXMu
CisKK0NoYW5nZXMgZm9yIDEuNi4wOgorCisqIE5ldyBmZWF0dXJlOiBBRERfRkFJTFVSRV9BVCgp
IGZvciByZXBvcnRpbmcgYSB0ZXN0IGZhaWx1cmUgYXQgdGhlCisgIGdpdmVuIHNvdXJjZSBsb2Nh
dGlvbiAtLSB1c2VmdWwgZm9yIHdyaXRpbmcgdGVzdGluZyB1dGlsaXRpZXMuCisqIE5ldyBmZWF0
dXJlOiB0aGUgdW5pdmVyc2FsIHZhbHVlIHByaW50ZXIgaXMgbW92ZWQgZnJvbSBHb29nbGUgTW9j
aworICB0byBHb29nbGUgVGVzdC4KKyogTmV3IGZlYXR1cmU6IHR5cGUgcGFyYW1ldGVycyBhbmQg
dmFsdWUgcGFyYW1ldGVycyBhcmUgcmVwb3J0ZWQgaW4KKyAgdGhlIFhNTCByZXBvcnQgbm93Lgor
KiBBIGd0ZXN0X2Rpc2FibGVfcHRocmVhZHMgQ01ha2Ugb3B0aW9uLgorKiBDb2xvcmVkIG91dHB1
dCB3b3JrcyBpbiBHTlUgU2NyZWVuIHNlc3Npb25zIG5vdy4KKyogUGFyYW1ldGVycyBvZiB2YWx1
ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBub3cgcHJpbnRlZCBpbiB0aGUKKyAgdGV4dHVhbCBv
dXRwdXQuCisqIEZhaWx1cmVzIGZyb20gYWQgaG9jIHRlc3QgYXNzZXJ0aW9ucyBydW4gYmVmb3Jl
IFJVTl9BTExfVEVTVFMoKSBhcmUKKyAgbm93IGNvcnJlY3RseSByZXBvcnRlZC4KKyogQXJndW1l
bnRzIG9mIEFTU0VSVF9YWSBhbmQgRVhQRUNUX1hZIG5vIGxvbmdlciBuZWVkIHRvIHN1cHBvcnQg
PDwgdG8KKyAgb3N0cmVhbS4KKyogTW9yZSBjb21wbGV0ZSBoYW5kbGluZyBvZiBleGNlcHRpb25z
LgorKiBHVEVTVF9BU1NFUlRfWFkgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBBU1NFUlRfWFkgaW4g
Y2FzZSB0aGUgbGF0dGVyCisgIG5hbWUgaXMgYWxyZWFkeSB1c2VkIGJ5IGFub3RoZXIgbGlicmFy
eS4KKyogLS1ndGVzdF9jYXRjaF9leGNlcHRpb25zIGlzIG5vdyB0cnVlIGJ5IGRlZmF1bHQsIGFs
bG93aW5nIGEgdGVzdAorICBwcm9ncmFtIHRvIGNvbnRpbnVlIGFmdGVyIGFuIGV4Y2VwdGlvbiBp
cyB0aHJvd24uCisqIFZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdCBmaXh0dXJlcyBjYW4gbm93IGRl
cml2ZSBmcm9tIFRlc3QgYW5kCisgIFdpdGhQYXJhbUludGVyZmFjZTxUPiBzZXBhcmF0ZWx5LCBl
YXNpbmcgY29udmVyc2lvbiBvZiBsZWdhY3kgdGVzdHMuCisqIERlYXRoIHRlc3QgbWVzc2FnZXMg
YXJlIGNsZWFybHkgbWFya2VkIHRvIG1ha2UgdGhlbSBtb3JlCisgIGRpc3Rpbmd1aXNoYWJsZSBm
cm9tIG90aGVyIG1lc3NhZ2VzLgorKiBDb21wYXRpYmlsaXR5IGZpeGVzIGZvciBBbmRyb2lkLCBH
b29nbGUgTmF0aXZlIENsaWVudCwgTWluR1csIEhQIFVYLAorICBQb3dlclBDLCBMdWNpZCBhdXRv
dG9vbHMsIGxpYkNTdGQsIFN1biBDKyssIEJvcmxhbmQgQysrIEJ1aWxkZXIgKENvZGUgR2Vhciks
CisgIElCTSBYTCBDKysgKFZpc3VhbCBBZ2UgQysrKSwgYW5kIEMrKzB4LgorKiBCdWcgZml4ZXMg
YW5kIGltcGxlbWVudGF0aW9uIGNsZWFuLXVwcy4KKyogUG90ZW50aWFsbHkgaW5jb21wYXRpYmxl
IGNoYW5nZXM6IGRpc2FibGVzIHRoZSBoYXJtZnVsICdtYWtlIGluc3RhbGwnCisgIGNvbW1hbmQg
aW4gYXV0b3Rvb2xzLgorCiBDaGFuZ2VzIGZvciAxLjUuMDoKIAogICogTmV3IGZlYXR1cmU6IGFz
c2VydGlvbnMgY2FuIGJlIHNhZmVseSBjYWxsZWQgaW4gbXVsdGlwbGUgdGhyZWFkcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9DTWFrZUxpc3RzLnR4dApvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAw
NjQ0CmluZGV4IGU5MjFmOTUyM2NlZGQ4NGE5ZDNlYWFlY2IxMWE5ZmY3NDNlMGI5OGMuLmFmZGQw
ZGVmMGNiNDRlNTUzM2I3NWEwNjlkNTUzMmE0ZTU5OGM0MDEKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ01h
a2VMaXN0cy50eHQKQEAgLTE4LDYgKzE4LDcgQEAgc2V0KEdURVNUX1NPVVJDRVMKICAgICAke0dU
RVNUX0RJUn0vc3JjL2d0ZXN0LWZpbGVwYXRoLmNjCiAgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVz
dF9tYWluLmNjCiAgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1wb3J0LmNjCisgICAgJHtHVEVT
VF9ESVJ9L3NyYy9ndGVzdC1wcmludGVycy5jYwogICAgICR7R1RFU1RfRElSfS9zcmMvZ3Rlc3Qt
dGVzdC1wYXJ0LmNjCiAgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC10eXBlZC10ZXN0LmNjCiAp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DT05UUklCVVRPUlMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9DT05UUklCVVRPUlMKaW5kZXggMDkzNGFlMTMwNTlhZmNkYzA1
ZGY4MTI0N2U2MWI5YTg0YTIzMTJlMi4uZmVhZTJmYzA0NDEwZGMzMDhlNDY0YWEyNTZmZTFmMmQz
MWVkYzk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09OVFJJQlVUT1JT
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NPTlRSSUJVVE9SUwpAQCAtMjEsNiArMjEs
NyBAQCBNYW51ZWwgS2xpbWVrIDxrbGltZWtAZ29vZ2xlLmNvbT4KIE1hcmt1cyBIZXVsZSA8bWFy
a3VzLmhldWxlQGdtYWlsLmNvbT4KIE1pa2EgUmFlbnRvIDxtaWtpZUBpa2kuZmk+CiBNaWtsw7Nz
IEZhemVrYXMgPG1mYXpla2FzQHN6ZW1hZm9yLmNvbT4KK1Bhc2kgVmFsbWluZW4gPHBhc2kudmFs
bWluZW5AZ21haWwuY29tPgogUGF0cmljayBIYW5uYSA8cGhhbm5hQGdvb2dsZS5jb20+CiBQYXRy
aWNrIFJpbGV5IDxwZnJAZ29vZ2xlLmNvbT4KIFBldGVyIEthbWluc2tpIDxwaW90cmtAZ29vZ2xl
LmNvbT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NPUFlJTkcgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9DT1BZSU5HCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxOTQxYTExZjhjZTk0Mzg5MTYwYjQ1ODkyN2EyOWJhMjE3NTQyODE4Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L0NPUFlJTkcKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Db3B5cmlnaHQgMjAwOCwg
R29vZ2xlIEluYy4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotbWV0OgotCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotZGlzdHJpYnV0aW9uLgotICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLXRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLVNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0oSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLU9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9MSUNFTlNFIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTQxYTExZjhjZTk0Mzg5MTYw
YjQ1ODkyN2EyOWJhMjE3NTQyODE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvTElDRU5TRQpAQCAtMCwwICsxLDI4IEBACitDb3B5cmlnaHQgMjAwOCwgR29vZ2xl
IEluYy4KK0FsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
bWV0OgorCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlz
dHJpYnV0aW9uLgorICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKK0EgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCitPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCitUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9NYWtlZmlsZS5hbSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L01ha2VmaWxlLmFtCmluZGV4IDhkNzVlMzJjYzIwY2RlODNjMTc0ZjRl
MDc4ZTI5OTNhOTMyYTlkMTguLjI5Nzk3ZTRlOWRlNGUxZDVlNWY5M2JiYTE0Mjg4ZGU4N2Y2MjM5
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L01ha2VmaWxlLmFtCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L01ha2VmaWxlLmFtCkBAIC0xLDEzICsxLDE2IEBACiAj
IEF1dG9tYWtlIGZpbGUKIAorQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQKKwogIyBOb25zdGFuZGFy
ZCBwYWNrYWdlIGZpbGVzIGZvciBkaXN0cmlidXRpb24KIEVYVFJBX0RJU1QgPSBcCiAgIENIQU5H
RVMgXAogICBDT05UUklCVVRPUlMgXAorICBMSUNFTlNFIFwKICAgaW5jbHVkZS9ndGVzdC9ndGVz
dC1wYXJhbS10ZXN0LmgucHVtcCBcCisgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFy
YW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wIFwKICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC10dXBsZS5oLnB1bXAgXAogICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRp
bC5oLnB1bXAgXAotICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2Vu
ZXJhdGVkLmgucHVtcCBcCiAgIG1ha2UvTWFrZWZpbGUgXAogICBzY3JpcHRzL2Z1c2VfZ3Rlc3Rf
ZmlsZXMucHkgXAogICBzY3JpcHRzL2dlbl9ndGVzdF9wcmVkX2ltcGwucHkgXApAQCAtMTcsMTMg
KzIwLDE0IEBAIEVYVFJBX0RJU1QgPSBcCiAjIGd0ZXN0IHNvdXJjZSBmaWxlcyB0aGF0IHdlIGRv
bid0IGNvbXBpbGUgZGlyZWN0bHkuICBUaGV5IGFyZQogIyAjaW5jbHVkZWQgYnkgZ3Rlc3QtYWxs
LmNjLgogR1RFU1RfU1JDID0gXAotICBzcmMvZ3Rlc3QuY2MgXAogICBzcmMvZ3Rlc3QtZGVhdGgt
dGVzdC5jYyBcCiAgIHNyYy9ndGVzdC1maWxlcGF0aC5jYyBcCiAgIHNyYy9ndGVzdC1pbnRlcm5h
bC1pbmwuaCBcCiAgIHNyYy9ndGVzdC1wb3J0LmNjIFwKKyAgc3JjL2d0ZXN0LXByaW50ZXJzLmNj
IFwKICAgc3JjL2d0ZXN0LXRlc3QtcGFydC5jYyBcCi0gIHNyYy9ndGVzdC10eXBlZC10ZXN0LmNj
CisgIHNyYy9ndGVzdC10eXBlZC10ZXN0LmNjIFwKKyAgc3JjL2d0ZXN0LmNjCiAKIEVYVFJBX0RJ
U1QgKz0gJChHVEVTVF9TUkMpCiAKQEAgLTQxLDU2ICs0NSw1OSBAQCBFWFRSQV9ESVNUICs9IFwK
IAogIyBDKysgdGVzdCBmaWxlcyB0aGF0IHdlIGRvbid0IGNvbXBpbGUgZGlyZWN0bHkuCiBFWFRS
QV9ESVNUICs9IFwKKyAgdGVzdC9ndGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MgXAogICB0ZXN0
L2d0ZXN0LWRlYXRoLXRlc3RfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVz
dC5jYyBcCiAgIHRlc3QvZ3Rlc3QtZmlsZXBhdGhfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3QtbGlu
a2VkX3B0cl90ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC1saXN0ZW5lcl90ZXN0LmNjIFwKICAgdGVz
dC9ndGVzdC1tZXNzYWdlX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3Qu
Y2MgXAogICB0ZXN0L2d0ZXN0LW9wdGlvbnNfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtcGFyYW0t
dGVzdF90ZXN0LmNjIFwKICAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjIFwKKyAgdGVz
dC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rl
c3QuY2MgXAorICB0ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3Qt
cGFyYW0tdGVzdF90ZXN0LmggXAogICB0ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYyBcCi0gIHRlc3Qv
Z3Rlc3RfcHJlZF9pbXBsX3VuaXR0ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2Mg
XAotICB0ZXN0L3Byb2R1Y3Rpb24uY2MgXAotICB0ZXN0L3Byb2R1Y3Rpb24uaCBcCi0gIHRlc3Qv
Z3Rlc3RfcmVwZWF0X3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0X3NvbGVfaGVhZGVyX3Rlc3QuY2Mg
XAotICB0ZXN0L2d0ZXN0X3N0cmVzc190ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdF9wcmVtYXR1cmVf
ZXhpdF90ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC1wcmludGVyc190ZXN0LmNjIFwKICAgdGVzdC9n
dGVzdC10ZXN0LXBhcnRfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9l
eF90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MgXAorICB0ZXN0L2d0
ZXN0LXR1cGxlX3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MgXAor
ICB0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3QtdHlwZWQtdGVz
dF90ZXN0LmggXAotICB0ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjIFwKICAgdGVzdC9ndGVzdC11bml0
dGVzdC1hcGlfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYyBcCi0gIHRl
c3QvZ3Rlc3RfbWFpbl91bml0dGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MgXAot
ICB0ZXN0L2d0ZXN0LXR1cGxlX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVz
dC5jYyBcCi0gIHRlc3QvZ3Rlc3QtcGFyYW0tdGVzdDJfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3Rf
YnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8uY2MgXAorICB0ZXN0L2d0ZXN0X2NhdGNoX2V4Y2Vw
dGlvbnNfdGVzdF8uY2MgXAogICB0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjIFwKICAgdGVzdC9n
dGVzdF9lbnZfdmFyX3Rlc3RfLmNjIFwKKyAgdGVzdC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNj
IFwKICAgdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3RfLmNjIFwKICAgdGVzdC9ndGVzdF9oZWxw
X3Rlc3RfLmNjIFwKICAgdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYyBcCisgIHRl
c3QvZ3Rlc3RfbWFpbl91bml0dGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0dGVz
dC5jYyBcCiAgIHRlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjIFwKKyAgdGVzdC9ndGVzdF9wcmVk
X2ltcGxfdW5pdHRlc3QuY2MgXAorICB0ZXN0L2d0ZXN0X3Byb2RfdGVzdC5jYyBcCisgIHRlc3Qv
Z3Rlc3RfcmVwZWF0X3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdF8uY2MgXAor
ICB0ZXN0L2d0ZXN0X3NvbGVfaGVhZGVyX3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0X3N0cmVzc190
ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MgXAogICB0
ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2MgXAogICB0ZXN0L2d0ZXN0X3VuaW5p
dGlhbGl6ZWRfdGVzdF8uY2MgXAorICB0ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjIFwKKyAgdGVzdC9n
dGVzdF91bml0dGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfLmNjIFwK
ICAgdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X3htbF9v
dXRwdXRfdW5pdHRlc3RfLmNjCisgIHRlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2Mg
XAorICB0ZXN0L3Byb2R1Y3Rpb24uY2MgXAorICB0ZXN0L3Byb2R1Y3Rpb24uaAogCiAjIFB5dGhv
biB0ZXN0cyB0aGF0IHdlIGRvbid0IHJ1bi4KIEVYVFJBX0RJU1QgKz0gXAotICB0ZXN0L2d0ZXN0
X3Rlc3RfdXRpbHMucHkgXAotICB0ZXN0L2d0ZXN0X3htbF90ZXN0X3V0aWxzLnB5IFwKICAgdGVz
dC9ndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0LnB5IFwKKyAgdGVzdC9ndGVzdF9jYXRj
aF9leGNlcHRpb25zX3Rlc3QucHkgXAogICB0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkgXAogICB0
ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weSBcCiAgIHRlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0
LnB5IFwKQEAgLTk4LDI0ICsxMDUsMjQgQEAgRVhUUkFfRElTVCArPSBcCiAgIHRlc3QvZ3Rlc3Rf
bGlzdF90ZXN0c191bml0dGVzdC5weSBcCiAgIHRlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkgXAog
ICB0ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0IFwKLSAgdGVzdC9ndGVzdF9v
dXRwdXRfdGVzdF9nb2xkZW5fd2luLnR4dCBcCiAgIHRlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0LnB5
IFwKKyAgdGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5IFwKICAgdGVzdC9ndGVzdF90aHJvd19vbl9m
YWlsdXJlX3Rlc3QucHkgXAogICB0ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5weSBcCiAg
IHRlc3QvZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkgXAogICB0ZXN0L2d0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3QucHkgXAotICB0ZXN0L3J1bl90ZXN0c191dGlsLnB5IFwKLSAgdGVzdC9ydW5f
dGVzdHNfdXRpbF90ZXN0LnB5CisgIHRlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkKIAogIyBD
TWFrZSBzY3JpcHQKIEVYVFJBX0RJU1QgKz0gXAotICBDTWFrZUxpc3RzLnR4dAorICBDTWFrZUxp
c3RzLnR4dCBcCisgIGNtYWtlL2ludGVybmFsX3V0aWxzLmNtYWtlCiAKICMgTVNWQyBwcm9qZWN0
IGZpbGVzCiBFWFRSQV9ESVNUICs9IFwKICAgbXN2Yy9ndGVzdC1tZC5zbG4gXAotICBtc3ZjL2d0
ZXN0LnNsbiBcCiAgIG1zdmMvZ3Rlc3QtbWQudmNwcm9qIFwKKyAgbXN2Yy9ndGVzdC5zbG4gXAog
ICBtc3ZjL2d0ZXN0LnZjcHJvaiBcCiAgIG1zdmMvZ3Rlc3RfbWFpbi1tZC52Y3Byb2ogXAogICBt
c3ZjL2d0ZXN0X21haW4udmNwcm9qIFwKQEAgLTEzMywzMSArMTQwLDI3IEBAIEVYVFJBX0RJU1Qg
Kz0gXAogICB4Y29kZS9Db25maWcvU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyBcCiAgIHhj
b2RlL0NvbmZpZy9UZXN0VGFyZ2V0LnhjY29uZmlnIFwKICAgeGNvZGUvUmVzb3VyY2VzL0luZm8u
cGxpc3QgXAotICB4Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weSBcCiAgIHhjb2RlL1Nj
cmlwdHMvcnVudGVzdHMuc2ggXAorICB4Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weSBc
CiAgIHhjb2RlL2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKIAogIyB4Y29kZSBzYW1w
bGUgZmlsZXMKIEVYVFJBX0RJU1QgKz0gXAogICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBs
ZS9JbmZvLnBsaXN0IFwKKyAgeGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvV2lkZ2V0RnJh
bWV3b3JrLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogXAogICB4Y29kZS9TYW1wbGVzL0ZyYW1l
d29ya1NhbXBsZS9ydW50ZXN0cy5zaCBcCi0gIHhjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxl
L3dpZGdldF90ZXN0LmNjIFwKICAgeGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0
LmNjIFwKICAgeGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0LmggXAotICB4Y29k
ZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9XaWRnZXRGcmFtZXdvcmsueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS93aWRnZXRfdGVzdC5j
YwogCiAjIEMrK0J1aWxkZXIgcHJvamVjdCBmaWxlcwogRVhUUkFfRElTVCArPSBcCisgIGNvZGVn
ZWFyL2d0ZXN0LmNicHJvaiBcCisgIGNvZGVnZWFyL2d0ZXN0Lmdyb3VwcHJvaiBcCiAgIGNvZGVn
ZWFyL2d0ZXN0X2FsbC5jYyBcCiAgIGNvZGVnZWFyL2d0ZXN0X2xpbmsuY2MgXAotICBjb2RlZ2Vh
ci9ndGVzdC5jYnByb2ogXAogICBjb2RlZ2Vhci9ndGVzdF9tYWluLmNicHJvaiBcCi0gIGNvZGVn
ZWFyL2d0ZXN0X3VuaXR0ZXN0LmNicHJvaiBcCi0gIGNvZGVnZWFyL2d0ZXN0Lmdyb3VwcHJvagot
Ci0jIFNjcmlwdHMgYW5kIHV0aWxpdGllcwotYmluX1NDUklQVFMgPSBzY3JpcHRzL2d0ZXN0LWNv
bmZpZwotQ0xFQU5GSUxFUyA9ICQoYmluX1NDUklQVFMpCisgIGNvZGVnZWFyL2d0ZXN0X3VuaXR0
ZXN0LmNicHJvagogCiAjIERpc3RyaWJ1dGUgYW5kIGluc3RhbGwgTTQgbWFjcm8KIG00ZGF0YWRp
ciA9ICQoZGF0YWRpcikvYWNsb2NhbApAQCAtMTgxLDE1ICsxODQsMTcgQEAgbGliX0xUTElCUkFS
SUVTID0gbGliL2xpYmd0ZXN0LmxhIGxpYi9saWJndGVzdF9tYWluLmxhCiAKIGxpYl9saWJndGVz
dF9sYV9TT1VSQ0VTID0gc3JjL2d0ZXN0LWFsbC5jYwogCi1wa2dpbmNsdWRlX0hFQURFUlMgPSBp
bmNsdWRlL2d0ZXN0L2d0ZXN0LmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVz
dC9ndGVzdC1kZWF0aC10ZXN0LmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVz
dC9ndGVzdC1tZXNzYWdlLmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9n
dGVzdC1wYXJhbS10ZXN0LmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9n
dGVzdF9wcmVkX2ltcGwuaCBcCi0gICAgICAgICAgICAgICAgICAgICBpbmNsdWRlL2d0ZXN0L2d0
ZXN0X3Byb2QuaCBcCi0gICAgICAgICAgICAgICAgICAgICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXNw
aS5oIFwKLSAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0
LmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVzdC10eXBlZC10ZXN0
LmgKK3BrZ2luY2x1ZGVfSEVBREVSUyA9IFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10
ZXN0LmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCBcCisgIGluY2x1ZGUvZ3Rl
c3QvZ3Rlc3QtcGFyYW0tdGVzdC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC1wcmludGVycy5o
IFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC1zcGkuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3Qt
dGVzdC1wYXJ0LmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaCBcCisgIGlu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmgg
XAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaAogCiBwa2dpbmNsdWRlX2ludGVybmFsZGly
ID0gJChwa2dpbmNsdWRlZGlyKS9pbnRlcm5hbAogcGtnaW5jbHVkZV9pbnRlcm5hbF9IRUFERVJT
ID0gXApAQCAtMjAwLDkgKzIwNSwxMyBAQCBwa2dpbmNsdWRlX2ludGVybmFsX0hFQURFUlMgPSBc
CiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCBc
CiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oIFwKICAgaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmggXAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXBvcnQtYXJjaC5oIFwKICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJp
bmcuaCBcCiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaCBcCi0gIGluY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgKKyAgaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC10eXBlLXV0aWwuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9t
L2d0ZXN0LmggXAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0Lmgg
XAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wcmludGVycy5oCiAKIGxp
Yl9saWJndGVzdF9tYWluX2xhX1NPVVJDRVMgPSBzcmMvZ3Rlc3RfbWFpbi5jYwogbGliX2xpYmd0
ZXN0X21haW5fbGFfTElCQUREID0gbGliL2xpYmd0ZXN0LmxhCkBAIC0yMTYsMTMgKzIyNSwxNCBA
QCBsaWJfbGliZ3Rlc3RfbWFpbl9sYV9MSUJBREQgPSBsaWIvbGliZ3Rlc3QubGEKIAogbm9pbnN0
X0xUTElCUkFSSUVTID0gc2FtcGxlcy9saWJzYW1wbGVzLmxhCiAKLXNhbXBsZXNfbGlic2FtcGxl
c19sYV9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGUxLmNjIFwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2FtcGxlcy9zYW1wbGUxLmggXAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzYW1wbGVzL3NhbXBsZTIuY2MgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzYW1wbGVzL3NhbXBsZTIuaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNhbXBsZXMvc2FtcGxlMy1pbmwuaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNhbXBsZXMvc2FtcGxlNC5jYyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNh
bXBsZXMvc2FtcGxlNC5oCitzYW1wbGVzX2xpYnNhbXBsZXNfbGFfU09VUkNFUyA9IFwKKyAgc2Ft
cGxlcy9zYW1wbGUxLmNjIFwKKyAgc2FtcGxlcy9zYW1wbGUxLmggXAorICBzYW1wbGVzL3NhbXBs
ZTIuY2MgXAorICBzYW1wbGVzL3NhbXBsZTIuaCBcCisgIHNhbXBsZXMvc2FtcGxlMy1pbmwuaCBc
CisgIHNhbXBsZXMvc2FtcGxlNC5jYyBcCisgIHNhbXBsZXMvc2FtcGxlNC5oCiAKIFRFU1RTPQog
VEVTVFNfRU5WSVJPTk1FTlQgPSBHVEVTVF9TT1VSQ0VfRElSPSIkKHNyY2RpcikvdGVzdCIgXApA
QCAtMjM0LDYgKzI0NCw3IEBAIFRFU1RTICs9IHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdAogY2hl
Y2tfUFJPR1JBTVMgKz0gc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0CiBzYW1wbGVzX3NhbXBsZTFf
dW5pdHRlc3RfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYwogc2FtcGxlc19z
YW1wbGUxX3VuaXR0ZXN0X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGliL2xpYmd0ZXN0LmxhIFwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvbGlic2FtcGxlcy5sYQogCiAjIEFub3RoZXIgc2Ft
cGxlLiAgSXQgYWxzbyB2ZXJpZmllcyB0aGF0IGxpYmd0ZXN0IHdvcmtzLgpAQCAtMjQzLDE4ICsy
NTQsMjAgQEAgc2FtcGxlc19zYW1wbGUxMF91bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1w
bGUxMF91bml0dGVzdC5jYwogc2FtcGxlc19zYW1wbGUxMF91bml0dGVzdF9MREFERCA9IGxpYi9s
aWJndGVzdC5sYQogCiAjIFRoaXMgdGVzdHMgbW9zdCBjb25zdHJ1Y3RzIG9mIGd0ZXN0IGFuZCB2
ZXJpZmllcyB0aGF0IGxpYmd0ZXN0X21haW4KLSMgd29ya3MuCisjIGFuZCBsaWJndGVzdCB3b3Jr
LgogVEVTVFMgKz0gdGVzdC9ndGVzdF9hbGxfdGVzdAogY2hlY2tfUFJPR1JBTVMgKz0gdGVzdC9n
dGVzdF9hbGxfdGVzdAogdGVzdF9ndGVzdF9hbGxfdGVzdF9TT1VSQ0VTID0gdGVzdC9ndGVzdF9h
bGxfdGVzdC5jYwotdGVzdF9ndGVzdF9hbGxfdGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWlu
LmxhCit0ZXN0X2d0ZXN0X2FsbF90ZXN0X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQogCiAjIFRlc3RzIHRo
YXQgZnVzZWQgZ3Rlc3QgZmlsZXMgY29tcGlsZSBhbmQgd29yay4KIEZVU0VEX0dURVNUX1NSQyA9
IFwKICAgZnVzZWQtc3JjL2d0ZXN0L2d0ZXN0LWFsbC5jYyBcCi0gIGZ1c2VkLXNyYy9ndGVzdC9n
dGVzdF9tYWluLmNjIFwKLSAgZnVzZWQtc3JjL2d0ZXN0L2d0ZXN0LmgKKyAgZnVzZWQtc3JjL2d0
ZXN0L2d0ZXN0LmggXAorICBmdXNlZC1zcmMvZ3Rlc3QvZ3Rlc3RfbWFpbi5jYwogCitpZiBIQVZF
X1BZVEhPTgogVEVTVFMgKz0gdGVzdC9mdXNlZF9ndGVzdF90ZXN0CiBjaGVja19QUk9HUkFNUyAr
PSB0ZXN0L2Z1c2VkX2d0ZXN0X3Rlc3QKIHRlc3RfZnVzZWRfZ3Rlc3RfdGVzdF9TT1VSQ0VTID0g
JChGVVNFRF9HVEVTVF9TUkMpIFwKQEAgLTI3OCw3ICsyOTEsMjAgQEAgZnVzZWQtZ3Rlc3Q6ICQo
cGtnaW5jbHVkZV9IRUFERVJTKSAkKHBrZ2luY2x1ZGVfaW50ZXJuYWxfSEVBREVSUykgXAogCiBt
YWludGFpbmVyLWNsZWFuLWxvY2FsOgogCXJtIC1yZiAiJChzcmNkaXIpL2Z1c2VkLXNyYyIKK2Vu
ZGlmCiAKICMgRGVhdGggdGVzdHMgbWF5IHByb2R1Y2UgY29yZSBkdW1wcyBpbiB0aGUgYnVpbGQg
ZGlyZWN0b3J5LiBJbiBjYXNlCiAjIHRoaXMgaGFwcGVucywgY2xlYW4gdGhlbSB0byBrZWVwIGRp
c3RjbGVhbmNoZWNrIGhhcHB5LgotQ0xFQU5GSUxFUyArPSBjb3JlCitDTEVBTkZJTEVTID0gY29y
ZQorCisjIERpc2FibGVzICdtYWtlIGluc3RhbGwnIGFzIGluc3RhbGxpbmcgYSBjb21waWxlZCB2
ZXJzaW9uIG9mIEdvb2dsZQorIyBUZXN0IGNhbiBsZWFkIHRvIHVuZGVmaW5lZCBiZWhhdmlvciBk
dWUgdG8gdmlvbGF0aW9uIG9mIHRoZQorIyBPbmUtRGVmaW5pdGlvbiBSdWxlLgorCitpbnN0YWxs
LWV4ZWMtbG9jYWw6CisJZWNobyAiJ21ha2UgaW5zdGFsbCcgaXMgZGFuZ2Vyb3VzIGFuZCBub3Qg
c3VwcG9ydGVkLiBJbnN0ZWFkLCBzZWUgUkVBRE1FIGZvciBob3cgdG8gaW50ZWdyYXRlIEdvb2ds
ZSBUZXN0IGludG8geW91ciBidWlsZCBzeXN0ZW0uIgorCWZhbHNlCisKK2luc3RhbGwtZGF0YS1s
b2NhbDoKKwllY2hvICInbWFrZSBpbnN0YWxsJyBpcyBkYW5nZXJvdXMgYW5kIG5vdCBzdXBwb3J0
ZWQuIEluc3RlYWQsIHNlZSBSRUFETUUgZm9yIGhvdyB0byBpbnRlZ3JhdGUgR29vZ2xlIFRlc3Qg
aW50byB5b3VyIGJ1aWxkIHN5c3RlbS4iCisJZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L1JFQURNRSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM2MTE5MDAyMDk5MTUwZDcxNTc0OWExNmUwM2My
ZjU3MzY4NmJiNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9SRUFETUUKKysrIC9kZXYvbnVsbApAQCAtMSw0MTcg
KzAsMCBAQAotR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yawotPT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotCi1odHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC8KLQotT3Zl
cnZpZXcKLS0tLS0tLS0tCi0KLUdvb2dsZSdzIGZyYW1ld29yayBmb3Igd3JpdGluZyBDKysgdGVz
dHMgb24gYSB2YXJpZXR5IG9mIHBsYXRmb3JtcwotKExpbnV4LCBNYWMgT1MgWCwgV2luZG93cywg
V2luZG93cyBDRSwgU3ltYmlhbiwgZXRjKS4gIEJhc2VkIG9uIHRoZQoteFVuaXQgYXJjaGl0ZWN0
dXJlLiAgU3VwcG9ydHMgYXV0b21hdGljIHRlc3QgZGlzY292ZXJ5LCBhIHJpY2ggc2V0IG9mCi1h
c3NlcnRpb25zLCB1c2VyLWRlZmluZWQgYXNzZXJ0aW9ucywgZGVhdGggdGVzdHMsIGZhdGFsIGFu
ZCBub24tZmF0YWwKLWZhaWx1cmVzLCB2YXJpb3VzIG9wdGlvbnMgZm9yIHJ1bm5pbmcgdGhlIHRl
c3RzLCBhbmQgWE1MIHRlc3QgcmVwb3J0Ci1nZW5lcmF0aW9uLgotCi1QbGVhc2Ugc2VlIHRoZSBw
cm9qZWN0IHBhZ2UgYWJvdmUgZm9yIG1vcmUgaW5mb3JtYXRpb24gYXMgd2VsbCBhcyB0aGUKLW1h
aWxpbmcgbGlzdCBmb3IgcXVlc3Rpb25zLCBkaXNjdXNzaW9ucywgYW5kIGRldmVsb3BtZW50LiAg
VGhlcmUgaXMKLWFsc28gYW4gSVJDIGNoYW5uZWwgb24gT0ZUQyAoaXJjLm9mdGMubmV0KSAjZ3Rl
c3QgYXZhaWxhYmxlLiAgUGxlYXNlCi1qb2luIHVzIQotCi1SZXF1aXJlbWVudHMgZm9yIEVuZCBV
c2VycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotR29vZ2xlIFRlc3QgaXMgZGVzaWdu
ZWQgdG8gaGF2ZSBmYWlybHkgbWluaW1hbCByZXF1aXJlbWVudHMgdG8gYnVpbGQKLWFuZCB1c2Ug
d2l0aCB5b3VyIHByb2plY3RzLCBidXQgdGhlcmUgYXJlIHNvbWUuICBDdXJyZW50bHksIHdlIHN1
cHBvcnQKLUxpbnV4LCBXaW5kb3dzLCBNYWMgT1MgWCwgYW5kIEN5Z3dpbi4gIFdlIHdpbGwgYWxz
byBtYWtlIG91ciBiZXN0Ci1lZmZvcnQgdG8gc3VwcG9ydCBvdGhlciBwbGF0Zm9ybXMgKGUuZy4g
U29sYXJpcywgQUlYLCBhbmQgei9PUykuCi1Ib3dldmVyLCBzaW5jZSBjb3JlIG1lbWJlcnMgb2Yg
dGhlIEdvb2dsZSBUZXN0IHByb2plY3QgaGF2ZSBubyBhY2Nlc3MKLXRvIHRoZXNlIHBsYXRmb3Jt
cywgR29vZ2xlIFRlc3QgbWF5IGhhdmUgb3V0c3RhbmRpbmcgaXNzdWVzIHRoZXJlLiAgSWYKLXlv
dSBub3RpY2UgYW55IHByb2JsZW1zIG9uIHlvdXIgcGxhdGZvcm0sIHBsZWFzZSBub3RpZnkKLWdv
b2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbS4gIFBhdGNoZXMgZm9yIGZpeGluZyB0
aGVtIGFyZQotZXZlbiBtb3JlIHdlbGNvbWUhCi0KLSMjIyBMaW51eCBSZXF1aXJlbWVudHMgIyMj
Ci0KLVRoZXNlIGFyZSB0aGUgYmFzZSByZXF1aXJlbWVudHMgdG8gYnVpbGQgYW5kIHVzZSBHb29n
bGUgVGVzdCBmcm9tIGEgc291cmNlCi1wYWNrYWdlIChhcyBkZXNjcmliZWQgYmVsb3cpOgotICAq
IEdOVS1jb21wYXRpYmxlIE1ha2Ugb3IgZ21ha2UKLSAgKiBQT1NJWC1zdGFuZGFyZCBzaGVsbAot
ICAqIFBPU0lYKC0yKSBSZWd1bGFyIEV4cHJlc3Npb25zIChyZWdleC5oKQotICAqIEEgQysrOTgt
c3RhbmRhcmQtY29tcGxpYW50IGNvbXBpbGVyCi0KLSMjIyBXaW5kb3dzIFJlcXVpcmVtZW50cyAj
IyMKLQotICAqIE1pY3Jvc29mdCBWaXN1YWwgQysrIDcuMSBvciBuZXdlcgotCi0jIyMgQ3lnd2lu
IFJlcXVpcmVtZW50cyAjIyMKLQotICAqIEN5Z3dpbiAxLjUuMjUtMTQgb3IgbmV3ZXIKLQotIyMj
IE1hYyBPUyBYIFJlcXVpcmVtZW50cyAjIyMKLQotICAqIE1hYyBPUyBYIDEwLjQgVGlnZXIgb3Ig
bmV3ZXIKLSAgKiBEZXZlbG9wZXIgVG9vbHMgSW5zdGFsbGVkCi0KLUFsc28sIHlvdSdsbCBuZWVk
IENNYWtlIDIuNi40IG9yIGhpZ2hlciBpZiB5b3Ugd2FudCB0byBidWlsZCB0aGUKLXNhbXBsZXMg
dXNpbmcgdGhlIHByb3ZpZGVkIENNYWtlIHNjcmlwdCwgcmVnYXJkbGVzcyBvZiB0aGUgcGxhdGZv
cm0uCi0KLVJlcXVpcmVtZW50cyBmb3IgQ29udHJpYnV0b3JzCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotCi1XZSB3ZWxjb21lIHBhdGNoZXMuICBJZiB5b3UgcGxhbiB0byBjb250cmli
dXRlIGEgcGF0Y2gsIHlvdSBuZWVkIHRvCi1idWlsZCBHb29nbGUgVGVzdCBhbmQgaXRzIG93biB0
ZXN0cyBmcm9tIGFuIFNWTiBjaGVja291dCAoZGVzY3JpYmVkCi1iZWxvdyksIHdoaWNoIGhhcyBm
dXJ0aGVyIHJlcXVpcmVtZW50czoKLQotICAqIFB5dGhvbiB2ZXJzaW9uIDIuMyBvciBuZXdlciAo
Zm9yIHJ1bm5pbmcgc29tZSBvZiB0aGUgdGVzdHMgYW5kCi0gICAgcmUtZ2VuZXJhdGluZyBjZXJ0
YWluIHNvdXJjZSBmaWxlcyBmcm9tIHRlbXBsYXRlcykKLSAgKiBDTWFrZSAyLjYuNCBvciBuZXdl
cgotCi1HZXR0aW5nIHRoZSBTb3VyY2UKLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UaGVyZSBhcmUg
dHdvIHByaW1hcnkgd2F5cyBvZiBnZXR0aW5nIEdvb2dsZSBUZXN0J3Mgc291cmNlIGNvZGU6IHlv
dQotY2FuIGRvd25sb2FkIGEgc3RhYmxlIHNvdXJjZSByZWxlYXNlIGluIHlvdXIgcHJlZmVycmVk
IGFyY2hpdmUgZm9ybWF0LAotb3IgZGlyZWN0bHkgY2hlY2sgb3V0IHRoZSBzb3VyY2UgZnJvbSBv
dXIgU3VidmVyc2lvbiAoU1ZOKSByZXBvc2l0YXJ5LgotVGhlIFNWTiBjaGVja291dCByZXF1aXJl
cyBhIGZldyBleHRyYSBzdGVwcyBhbmQgc29tZSBleHRyYSBzb2Z0d2FyZQotcGFja2FnZXMgb24g
eW91ciBzeXN0ZW0sIGJ1dCBsZXRzIHlvdSB0cmFjayB0aGUgbGF0ZXN0IGRldmVsb3BtZW50IGFu
ZAotbWFrZSBwYXRjaGVzIG11Y2ggbW9yZSBlYXNpbHksIHNvIHdlIGhpZ2hseSBlbmNvdXJhZ2Ug
aXQuCi0KLSMjIyBTb3VyY2UgUGFja2FnZSAjIyMKLQotR29vZ2xlIFRlc3QgaXMgcmVsZWFzZWQg
aW4gdmVyc2lvbmVkIHNvdXJjZSBwYWNrYWdlcyB3aGljaCBjYW4gYmUKLWRvd25sb2FkZWQgZnJv
bSB0aGUgZG93bmxvYWQgcGFnZSBbMV0uICBTZXZlcmFsIGRpZmZlcmVudCBhcmNoaXZlCi1mb3Jt
YXRzIGFyZSBwcm92aWRlZCwgYnV0IHRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhlIHRvb2xzIHVz
ZWQgdG8KLW1hbmlwdWxhdGUgdGhlbSwgYW5kIHRoZSBzaXplIG9mIHRoZSByZXN1bHRpbmcgZmls
ZS4gIERvd25sb2FkCi13aGljaGV2ZXIgeW91IGFyZSBtb3N0IGNvbWZvcnRhYmxlIHdpdGguCi0K
LSAgWzFdIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L2Rvd25sb2Fkcy9saXN0
Ci0KLU9uY2UgdGhlIHBhY2thZ2UgaXMgZG93bmxvYWRlZCwgZXhwYW5kIGl0IHVzaW5nIHdoaWNo
ZXZlciB0b29scyB5b3UKLXByZWZlciBmb3IgdGhhdCB0eXBlLiAgVGhpcyB3aWxsIHJlc3VsdCBp
biBhIG5ldyBkaXJlY3Rvcnkgd2l0aCB0aGUKLW5hbWUgImd0ZXN0LVguWS5aIiB3aGljaCBjb250
YWlucyBhbGwgb2YgdGhlIHNvdXJjZSBjb2RlLiAgSGVyZSBhcmUKLXNvbWUgZXhhbXBsZXMgb24g
TGludXg6Ci0KLSAgdGFyIC14dnpmIGd0ZXN0LVguWS5aLnRhci5negotICB0YXIgLXh2amYgZ3Rl
c3QtWC5ZLloudGFyLmJ6MgotICB1bnppcCBndGVzdC1YLlkuWi56aXAKLQotIyMjIFNWTiBDaGVj
a291dCAjIyMKLQotVG8gY2hlY2sgb3V0IHRoZSBtYWluIGJyYW5jaCAoYWxzbyBrbm93biBhcyB0
aGUgInRydW5rIikgb2YgR29vZ2xlCi1UZXN0LCBydW4gdGhlIGZvbGxvd2luZyBTdWJ2ZXJzaW9u
IGNvbW1hbmQ6Ci0KLSAgc3ZuIGNoZWNrb3V0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUu
Y29tL3N2bi90cnVuay8gZ3Rlc3Qtc3ZuCi0KLVNldHRpbmcgdXAgdGhlIEJ1aWxkCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotCi1UbyBidWlsZCBHb29nbGUgVGVzdCBhbmQgeW91ciB0ZXN0cyB0aGF0
IHVzZSBpdCwgeW91IG5lZWQgdG8gdGVsbCB5b3VyCi1idWlsZCBzeXN0ZW0gd2hlcmUgdG8gZmlu
ZCBpdHMgaGVhZGVycyBhbmQgc291cmNlIGZpbGVzLiAgVGhlIGV4YWN0Ci13YXkgdG8gZG8gaXQg
ZGVwZW5kcyBvbiB3aGljaCBidWlsZCBzeXN0ZW0geW91IHVzZSwgYW5kIGlzIHVzdWFsbHkKLXN0
cmFpZ2h0Zm9yd2FyZC4KLQotIyMjIEdlbmVyaWMgQnVpbGQgSW5zdHJ1Y3Rpb25zICMjIwotCi1T
dXBwb3NlIHlvdSBwdXQgR29vZ2xlIFRlc3QgaW4gZGlyZWN0b3J5ICR7R1RFU1RfRElSfS4gIFRv
IGJ1aWxkIGl0LAotY3JlYXRlIGEgbGlicmFyeSBidWlsZCB0YXJnZXQgKG9yIGEgcHJvamVjdCBh
cyBjYWxsZWQgYnkgVmlzdWFsIFN0dWRpbwotYW5kIFhjb2RlKSB0byBjb21waWxlCi0KLSAgJHtH
VEVTVF9ESVJ9L3NyYy9ndGVzdC1hbGwuY2MKLQotd2l0aAotCi0gICR7R1RFU1RfRElSfS9pbmNs
dWRlIGFuZCAke0dURVNUX0RJUn0KLQotaW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0aC4gIEFzc3Vt
aW5nIGEgTGludXgtbGlrZSBzeXN0ZW0gYW5kIGdjYywKLXNvbWV0aGluZyBsaWtlIHRoZSBmb2xs
b3dpbmcgd2lsbCBkbzoKLQotICBnKysgLUkke0dURVNUX0RJUn0vaW5jbHVkZSAtSSR7R1RFU1Rf
RElSfSAtYyAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LWFsbC5jYwotICBhciAtcnYgbGliZ3Rlc3Qu
YSBndGVzdC1hbGwubwotCi1OZXh0LCB5b3Ugc2hvdWxkIGNvbXBpbGUgeW91ciB0ZXN0IHNvdXJj
ZSBmaWxlIHdpdGgKLSR7R1RFU1RfRElSfS9pbmNsdWRlIGluIHRoZSBoZWFkZXIgc2VhcmNoIHBh
dGgsIGFuZCBsaW5rIGl0IHdpdGggZ3Rlc3QKLWFuZCBhbnkgb3RoZXIgbmVjZXNzYXJ5IGxpYnJh
cmllczoKLQotICBnKysgLUkke0dURVNUX0RJUn0vaW5jbHVkZSBwYXRoL3RvL3lvdXJfdGVzdC5j
YyBsaWJndGVzdC5hIC1vIHlvdXJfdGVzdAotCi1BcyBhbiBleGFtcGxlLCB0aGUgbWFrZS8gZGly
ZWN0b3J5IGNvbnRhaW5zIGEgTWFrZWZpbGUgdGhhdCB5b3UgY2FuCi11c2UgdG8gYnVpbGQgR29v
Z2xlIFRlc3Qgb24gc3lzdGVtcyB3aGVyZSBHTlUgbWFrZSBpcyBhdmFpbGFibGUKLShlLmcuIExp
bnV4LCBNYWMgT1MgWCwgYW5kIEN5Z3dpbikuICBJdCBkb2Vzbid0IHRyeSB0byBidWlsZCBHb29n
bGUKLVRlc3QncyBvd24gdGVzdHMuICBJbnN0ZWFkLCBpdCBqdXN0IGJ1aWxkcyB0aGUgR29vZ2xl
IFRlc3QgbGlicmFyeSBhbmQKLWEgc2FtcGxlIHRlc3QuICBZb3UgY2FuIHVzZSBpdCBhcyBhIHN0
YXJ0aW5nIHBvaW50IGZvciB5b3VyIG93biBidWlsZAotc2NyaXB0LgotCi1JZiB0aGUgZGVmYXVs
dCBzZXR0aW5ncyBhcmUgY29ycmVjdCBmb3IgeW91ciBlbnZpcm9ubWVudCwgdGhlCi1mb2xsb3dp
bmcgY29tbWFuZHMgc2hvdWxkIHN1Y2NlZWQ6Ci0KLSAgY2QgJHtHVEVTVF9ESVJ9L21ha2UKLSAg
bWFrZQotICAuL3NhbXBsZTFfdW5pdHRlc3QKLQotSWYgeW91IHNlZSBlcnJvcnMsIHRyeSB0byB0
d2VhayB0aGUgY29udGVudHMgb2YgbWFrZS9NYWtlZmlsZSB0byBtYWtlCi10aGVtIGdvIGF3YXku
ICBUaGVyZSBhcmUgaW5zdHJ1Y3Rpb25zIGluIG1ha2UvTWFrZWZpbGUgb24gaG93IHRvIGRvCi1p
dC4KLQotIyMjIFVzaW5nIENNYWtlICMjIwotCi1Hb29nbGUgVGVzdCBjb21lcyB3aXRoIGEgQ01h
a2UgYnVpbGQgc2NyaXB0IChDTWFrZUxpc3RzLnR4dCkgdGhhdCBjYW4KLWJlIHVzZWQgb24gYSB3
aWRlIHJhbmdlIG9mIHBsYXRmb3JtcyAoIkMiIHN0YW5kcyBmb3IgY3Jvc3MtcGxhdG9mcm0uKS4K
LUlmIHlvdSBkb24ndCBoYXZlIENNYWtlIGluc3RhbGxlZCBhbHJlYWR5LCB5b3UgY2FuIGRvd25s
b2FkIGl0IGZvcgotZnJlZSBmcm9tIGh0dHA6Ly93d3cuY21ha2Uub3JnLy4KLQotQ01ha2Ugd29y
a3MgYnkgZ2VuZXJhdGluZyBuYXRpdmUgbWFrZWZpbGVzIG9yIGJ1aWxkIHByb2plY3RzIHRoYXQg
Y2FuCi1iZSB1c2VkIGluIHRoZSBjb21waWxlciBlbnZpcm9ubWVudCBvZiB5b3VyIGNob2ljZS4g
IFRoZSB0eXBpY2FsCi13b3JrZmxvdyBzdGFydHMgd2l0aDoKLQotICBta2RpciBteWJ1aWxkICAg
ICAgICMgQ3JlYXRlIGEgZGlyZWN0b3J5IHRvIGhvbGQgdGhlIGJ1aWxkIG91dHB1dC4KLSAgY2Qg
bXlidWlsZAotICBjbWFrZSAke0dURVNUX0RJUn0gICMgR2VuZXJhdGUgbmF0aXZlIGJ1aWxkIHNj
cmlwdHMuCi0KLUlmIHlvdSB3YW50IHRvIGJ1aWxkIEdvb2dsZSBUZXN0J3Mgc2FtcGxlcywgeW91
IHNob3VsZCByZXBsYWNlIHRoZQotbGFzdCBjb21tYW5kIHdpdGgKLQotICBjbWFrZSAtRGJ1aWxk
X2d0ZXN0X3NhbXBsZXM9T04gJHtHVEVTVF9ESVJ9Ci0KLUlmIHlvdSBhcmUgb24gYSAqbml4IHN5
c3RlbSwgeW91IHNob3VsZCBub3cgc2VlIGEgTWFrZWZpbGUgaW4gdGhlCi1jdXJyZW50IGRpcmVj
dG9yeS4gIEp1c3QgdHlwZSAnbWFrZScgdG8gYnVpbGQgZ3Rlc3QuCi0KLUlmIHlvdSB1c2UgV2lu
ZG93cyBhbmQgaGF2ZSBWaXN0dWFsIFN0dWRpbyBpbnN0YWxsZWQsIGEgZ3Rlc3Quc2xuIGZpbGUK
LWFuZCBzZXZlcmFsIC52Y3Byb2ogZmlsZXMgd2lsbCBiZSBjcmVhdGVkLiAgWW91IGNhbiB0aGVu
IGJ1aWxkIHRoZW0KLXVzaW5nIFZpc3VhbCBTdHVkaW8uCi0KLU9uIE1hYyBPUyBYIHdpdGggWGNv
ZGUgaW5zdGFsbGVkLCBhIC54Y29kZXByb2ogZmlsZSB3aWxsIGJlIGdlbmVyYXRlZC4KLQotIyMj
IExlZ2FjeSBCdWlsZCBTY3JpcHRzICMjIwotCi1CZWZvcmUgc2V0dGxpbmcgb24gQ01ha2UsIHdl
IGhhdmUgYmVlbiBwcm92aWRpbmcgaGFuZC1tYWludGFpbmVkIGJ1aWxkCi1wcm9qZWN0cy9zY3Jp
cHRzIGZvciBWaXN1YWwgU3R1ZGlvLCBYY29kZSwgYW5kIEF1dG90b29scy4gIFdoaWxlIHdlCi1j
b250aW51ZSB0byBwcm92aWRlIHRoZW0gZm9yIGNvbnZlbmllbmNlLCB0aGV5IGFyZSBub3QgYWN0
aXZlbHkKLW1haW50YWluZWQgYW55IG1vcmUuICBXZSBoaWdobHkgcmVjb21tZW5kIHRoYXQgeW91
IGZvbGxvdyB0aGUKLWluc3RydWN0aW9ucyBpbiB0aGUgcHJldmlvdXMgdHdvIHNlY3Rpb25zIHRv
IGludGVncmF0ZSBHb29nbGUgVGVzdAotd2l0aCB5b3VyIGV4aXN0aW5nIGJ1aWxkIHN5c3RlbS4K
LQotSWYgeW91IHN0aWxsIG5lZWQgdG8gdXNlIHRoZSBsZWdhY3kgYnVpbGQgc2NyaXB0cywgaGVy
ZSdzIGhvdzoKLQotVGhlIG1zdmNcIGZvbGRlciBjb250YWlucyB0d28gc29sdXRpb25zIHdpdGgg
VmlzdWFsIEMrKyBwcm9qZWN0cy4KLU9wZW4gdGhlIGd0ZXN0LnNsbiBvciBndGVzdC1tZC5zbG4g
ZmlsZSB1c2luZyBWaXN1YWwgU3R1ZGlvLCBhbmQgeW91Ci1hcmUgcmVhZHkgdG8gYnVpbGQgR29v
Z2xlIFRlc3QgdGhlIHNhbWUgd2F5IHlvdSBidWlsZCBhbnkgVmlzdWFsCi1TdHVkaW8gcHJvamVj
dC4gIEZpbGVzIHRoYXQgaGF2ZSBuYW1lcyBlbmRpbmcgd2l0aCAtbWQgdXNlIERMTAotdmVyc2lv
bnMgb2YgTWljcm9zb2Z0IHJ1bnRpbWUgbGlicmFyaWVzICh0aGUgL01EIG9yIHRoZSAvTURkIGNv
bXBpbGVyCi1vcHRpb24pLiAgRmlsZXMgd2l0aG91dCB0aGF0IHN1ZmZpeCB1c2Ugc3RhdGljIHZl
cnNpb25zIG9mIHRoZSBydW50aW1lCi1saWJyYXJpZXMgKHRoZSAvTVQgb3IgdGhlIC9NVGQgb3B0
aW9uKS4gIFBsZWFzZSBub3RlIHRoYXQgb25lIG11c3QgdXNlCi10aGUgc2FtZSBvcHRpb24gdG8g
Y29tcGlsZSBib3RoIGd0ZXN0IGFuZCB0aGUgdGVzdCBjb2RlLiAgSWYgeW91IHVzZQotVmlzdWFs
IFN0dWRpbyAyMDA1IG9yIGFib3ZlLCB3ZSByZWNvbW1lbmQgdGhlIC1tZCB2ZXJzaW9uIGFzIC9N
RCBpcwotdGhlIGRlZmF1bHQgZm9yIG5ldyBwcm9qZWN0cyBpbiB0aGVzZSB2ZXJzaW9ucyBvZiBW
aXN1YWwgU3R1ZGlvLgotCi1PbiBNYWMgT1MgWCwgb3BlbiB0aGUgZ3Rlc3QueGNvZGVwcm9qIGlu
IHRoZSB4Y29kZS8gZm9sZGVyIHVzaW5nCi1YY29kZS4gIEJ1aWxkIHRoZSAiZ3Rlc3QiIHRhcmdl
dC4gIFRoZSB1bml2ZXJzYWwgYmluYXJ5IGZyYW1ld29yayB3aWxsCi1lbmQgdXAgaW4geW91ciBz
ZWxlY3RlZCBidWlsZCBkaXJlY3RvcnkgKHNlbGVjdGVkIGluIHRoZSBYY29kZQotIlByZWZlcmVu
Y2VzLi4uIiAtPiAiQnVpbGRpbmciIHBhbmUgYW5kIGRlZmF1bHRzIHRvIHhjb2RlL2J1aWxkKS4K
LUFsdGVybmF0aXZlbHksIGF0IHRoZSBjb21tYW5kIGxpbmUsIGVudGVyOgotCi0gIHhjb2RlYnVp
bGQKLQotVGhpcyB3aWxsIGJ1aWxkIHRoZSAiUmVsZWFzZSIgY29uZmlndXJhdGlvbiBvZiBndGVz
dC5mcmFtZXdvcmsgaW4geW91cgotZGVmYXVsdCBidWlsZCBsb2NhdGlvbi4gIFNlZSB0aGUgInhj
b2RlYnVpbGQiIG1hbiBwYWdlIGZvciBtb3JlCi1pbmZvcm1hdGlvbiBhYm91dCBidWlsZGluZyBk
aWZmZXJlbnQgY29uZmlndXJhdGlvbnMgYW5kIGJ1aWxkaW5nIGluCi1kaWZmZXJlbnQgbG9jYXRp
b25zLgotCi1Ud2Vha2luZyBHb29nbGUgVGVzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotR29v
Z2xlIFRlc3QgY2FuIGJlIHVzZWQgaW4gZGl2ZXJzZSBlbnZpcm9ubWVudHMuICBUaGUgZGVmYXVs
dAotY29uZmlndXJhdGlvbiBtYXkgbm90IHdvcmsgKG9yIG1heSBub3Qgd29yayB3ZWxsKSBvdXQg
b2YgdGhlIGJveCBpbgotc29tZSBlbnZpcm9ubWVudHMuICBIb3dldmVyLCB5b3UgY2FuIGVhc2ls
eSB0d2VhayBHb29nbGUgVGVzdCBieQotZGVmaW5pbmcgY29udHJvbCBtYWNyb3Mgb24gdGhlIGNv
bXBpbGVyIGNvbW1hbmQgbGluZS4gIEdlbmVyYWxseSwKLXRoZXNlIG1hY3JvcyBhcmUgbmFtZWQg
bGlrZSBHVEVTVF9YWVogYW5kIHlvdSBkZWZpbmUgdGhlbSB0byBlaXRoZXIgMQotb3IgMCB0byBl
bmFibGUgb3IgZGlzYWJsZSBhIGNlcnRhaW4gZmVhdHVyZS4KLQotV2UgbGlzdCB0aGUgbW9zdCBm
cmVxdWVudGx5IHVzZWQgbWFjcm9zIGJlbG93LiAgRm9yIGEgY29tcGxldGUgbGlzdCwKLXNlZSBm
aWxlIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oLgotCi0jIyMgQ2hvb3Npbmcg
YSBUUjEgVHVwbGUgTGlicmFyeSAjIyMKLQotU29tZSBHb29nbGUgVGVzdCBmZWF0dXJlcyByZXF1
aXJlIHRoZSBDKysgVGVjaG5pY2FsIFJlcG9ydCAxIChUUjEpCi10dXBsZSBsaWJyYXJ5LCB3aGlj
aCBpcyBub3QgeWV0IGF2YWlsYWJsZSB3aXRoIGFsbCBjb21waWxlcnMuICBUaGUKLWdvb2QgbmV3
cyBpcyB0aGF0IEdvb2dsZSBUZXN0IGltcGxlbWVudHMgYSBzdWJzZXQgb2YgVFIxIHR1cGxlIHRo
YXQncwotZW5vdWdoIGZvciBpdHMgb3duIG5lZWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdXNl
IHRoaXMgd2hlbiB0aGUKLWNvbXBpbGVyIGRvZXNuJ3QgcHJvdmlkZSBUUjEgdHVwbGUuCi0KLVVz
dWFsbHkgeW91IGRvbid0IG5lZWQgdG8gY2FyZSBhYm91dCB3aGljaCB0dXBsZSBsaWJyYXJ5IEdv
b2dsZSBUZXN0Ci11c2VzLiAgSG93ZXZlciwgaWYgeW91ciBwcm9qZWN0IGFscmVhZHkgdXNlcyBU
UjEgdHVwbGUsIHlvdSBuZWVkIHRvCi10ZWxsIEdvb2dsZSBUZXN0IHRvIHVzZSB0aGUgc2FtZSBU
UjEgdHVwbGUgbGlicmFyeSB0aGUgcmVzdCBvZiB5b3VyCi1wcm9qZWN0IHVzZXMsIG9yIHRoZSB0
d28gdHVwbGUgaW1wbGVtZW50YXRpb25zIHdpbGwgY2xhc2guICBUbyBkbwotdGhhdCwgYWRkCi0K
LSAgLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0wCi0KLXRvIHRoZSBjb21waWxlciBmbGFncyB3
aGlsZSBjb21waWxpbmcgR29vZ2xlIFRlc3QgYW5kIHlvdXIgdGVzdHMuICBJZgoteW91IHdhbnQg
dG8gZm9yY2UgR29vZ2xlIFRlc3QgdG8gdXNlIGl0cyBvd24gdHVwbGUgbGlicmFyeSwganVzdCBh
ZGQKLQotICAtREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTEKLQotdG8gdGhlIGNvbXBpbGVyIGZs
YWdzIGluc3RlYWQuCi0KLUlmIHlvdSBkb24ndCB3YW50IEdvb2dsZSBUZXN0IHRvIHVzZSB0dXBs
ZSBhdCBhbGwsIGFkZAotCi0gIC1ER1RFU1RfSEFTX1RSMV9UVVBMRT0wCi0KLWFuZCBhbGwgZmVh
dHVyZXMgdXNpbmcgdHVwbGUgd2lsbCBiZSBkaXNhYmxlZC4KLQotIyMjIE11bHRpLXRocmVhZGVk
IFRlc3RzICMjIwotCi1Hb29nbGUgVGVzdCBpcyB0aHJlYWQtc2FmZSB3aGVyZSB0aGUgcHRocmVh
ZCBsaWJyYXJ5IGlzIGF2YWlsYWJsZS4KLUFmdGVyICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPiwg
eW91IGNhbiBjaGVjayB0aGUgR1RFU1RfSVNfVEhSRUFEU0FGRQotbWFjcm8gdG8gc2VlIHdoZXRo
ZXIgdGhpcyBpcyB0aGUgY2FzZSAoeWVzIGlmIHRoZSBtYWNybyBpcyAjZGVmaW5lZCB0bwotMSwg
bm8gaWYgaXQncyB1bmRlZmluZWQuKS4KLQotSWYgR29vZ2xlIFRlc3QgZG9lc24ndCBjb3JyZWN0
bHkgZGV0ZWN0IHdoZXRoZXIgcHRocmVhZCBpcyBhdmFpbGFibGUKLWluIHlvdXIgZW52aXJvbm1l
bnQsIHlvdSBjYW4gZm9yY2UgaXQgd2l0aAotCi0gIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MQotCi1v
cgotCi0gIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MAotCi1XaGVuIEdvb2dsZSBUZXN0IHVzZXMgcHRo
cmVhZCwgeW91IG1heSBuZWVkIHRvIGFkZCBmbGFncyB0byB5b3VyCi1jb21waWxlciBhbmQvb3Ig
bGlua2VyIHRvIHNlbGVjdCB0aGUgcHRocmVhZCBsaWJyYXJ5LCBvciB5b3UnbGwgZ2V0Ci1saW5r
IGVycm9ycy4gIElmIHlvdSB1c2UgdGhlIENNYWtlIHNjcmlwdCBvciB0aGUgZGVwcmVjYXRlZCBB
dXRvdG9vbHMKLXNjcmlwdCwgdGhpcyBpcyB0YWtlbiBjYXJlIG9mIGZvciB5b3UuICBJZiB5b3Ug
dXNlIHlvdXIgb3duIGJ1aWxkCi1zY3JpcHQsIHlvdSdsbCBuZWVkIHRvIHJlYWQgeW91ciBjb21w
aWxlciBhbmQgbGlua2VyJ3MgbWFudWFsIHRvCi1maWd1cmUgb3V0IHdoYXQgZmxhZ3MgdG8gYWRk
LgotCi0jIyMgQXMgYSBTaGFyZWQgTGlicmFyeSAoRExMKSAjIyMKLQotR29vZ2xlIFRlc3QgaXMg
Y29tcGFjdCwgc28gbW9zdCB1c2VycyBjYW4gYnVpbGQgYW5kIGxpbmsgaXQgYXMgYQotc3RhdGlj
IGxpYnJhcnkgZm9yIHRoZSBzaW1wbGljaXR5LiAgWW91IGNhbiBjaG9vc2UgdG8gdXNlIEdvb2ds
ZSBUZXN0Ci1hcyBhIHNoYXJlZCBsaWJyYXJ5IChrbm93biBhcyBhIERMTCBvbiBXaW5kb3dzKSBp
ZiB5b3UgcHJlZmVyLgotCi1UbyBjb21waWxlIGd0ZXN0IGFzIGEgc2hhcmVkIGxpYnJhcnksIGFk
ZAotCi0gIC1ER1RFU1RfQ1JFQVRFX1NIQVJFRF9MSUJSQVJZPTEKLQotdG8gdGhlIGNvbXBpbGVy
IGZsYWdzLiAgWW91J2xsIGFsc28gbmVlZCB0byB0ZWxsIHRoZSBsaW5rZXIgdG8gcHJvZHVjZQot
YSBzaGFyZWQgbGlicmFyeSBpbnN0ZWFkIC0gY29uc3VsdCB5b3VyIGxpbmtlcidzIG1hbnVhbCBm
b3IgaG93IHRvIGRvCi1pdC4KLQotVG8gY29tcGlsZSB5b3VyIHRlc3RzIHRoYXQgdXNlIHRoZSBn
dGVzdCBzaGFyZWQgbGlicmFyeSwgYWRkCi0KLSAgLURHVEVTVF9MSU5LRURfQVNfU0hBUkVEX0xJ
QlJBUlk9MQotCi10byB0aGUgY29tcGlsZXIgZmxhZ3MuCi0KLSMjIyBBdm9pZGluZyBNYWNybyBO
YW1lIENsYXNoZXMgIyMjCi0KLUluIEMrKywgbWFjcm9zIGRvbid0IG9iZXkgbmFtZXNwYWNlcy4g
IFRoZXJlZm9yZSB0d28gbGlicmFyaWVzIHRoYXQKLWJvdGggZGVmaW5lIGEgbWFjcm8gb2YgdGhl
IHNhbWUgbmFtZSB3aWxsIGNsYXNoIGlmIHlvdSAjaW5jbHVkZSBib3RoCi1kZWZpbml0aW9ucy4g
IEluIGNhc2UgYSBHb29nbGUgVGVzdCBtYWNybyBjbGFzaGVzIHdpdGggYW5vdGhlcgotbGlicmFy
eSwgeW91IGNhbiBmb3JjZSBHb29nbGUgVGVzdCB0byByZW5hbWUgaXRzIG1hY3JvIHRvIGF2b2lk
IHRoZQotY29uZmxpY3QuCi0KLVNwZWNpZmljYWxseSwgaWYgYm90aCBHb29nbGUgVGVzdCBhbmQg
c29tZSBvdGhlciBjb2RlIGRlZmluZSBtYWNybwotRk9PLCB5b3UgY2FuIGFkZAotCi0gIC1ER1RF
U1RfRE9OVF9ERUZJTkVfRk9PPTEKLQotdG8gdGhlIGNvbXBpbGVyIGZsYWdzIHRvIHRlbGwgR29v
Z2xlIFRlc3QgdG8gY2hhbmdlIHRoZSBtYWNybydzIG5hbWUKLWZyb20gRk9PIHRvIEdURVNUX0ZP
Ty4gIEN1cnJlbnRseSBGT08gY2FuIGJlIEZBSUwsIFNVQ0NFRUQsIG9yIFRFU1QuCi1Gb3IgZXhh
bXBsZSwgd2l0aCAtREdURVNUX0RPTlRfREVGSU5FX1RFU1Q9MSwgeW91J2xsIG5lZWQgdG8gd3Jp
dGUKLQotICBHVEVTVF9URVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAuLi4gfQotCi1pbnN0ZWFk
IG9mCi0KLSAgVEVTVChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KLQotaW4gb3JkZXIgdG8g
ZGVmaW5lIGEgdGVzdC4KLQotVXBncmF0aW5nIGZyb20gYW4gRWFybGllciBWZXJzaW9uCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotV2Ugc3RyaXZlIHRvIGtlZXAgR29vZ2xl
IFRlc3QgcmVsZWFzZXMgYmFja3dhcmQgY29tcGF0aWJsZS4KLVNvbWV0aW1lcywgdGhvdWdoLCB3
ZSBoYXZlIHRvIG1ha2Ugc29tZSBicmVha2luZyBjaGFuZ2VzIGZvciB0aGUKLXVzZXJzJyBsb25n
LXRlcm0gYmVuZWZpdHMuICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHdoYXQgeW91J2xsIG5lZWQg
dG8KLWRvIGlmIHlvdSBhcmUgdXBncmFkaW5nIGZyb20gYW4gZWFybGllciB2ZXJzaW9uIG9mIEdv
b2dsZSBUZXN0LgotCi0jIyMgVXBncmFkaW5nIGZyb20gMS4zLjAgb3IgRWFybGllciAjIyMKLQot
WW91IG1heSBuZWVkIHRvIGV4cGxpY2l0bHkgZW5hYmxlIG9yIGRpc2FibGUgR29vZ2xlIFRlc3Qn
cyBvd24gVFIxCi10dXBsZSBsaWJyYXJ5LiAgU2VlIHRoZSBpbnN0cnVjdGlvbnMgaW4gc2VjdGlv
biAiQ2hvb3NpbmcgYSBUUjEgVHVwbGUKLUxpYnJhcnkiLgotCi0jIyMgVXBncmFkaW5nIGZyb20g
MS40LjAgb3IgRWFybGllciAjIyMKLQotVGhlIEF1dG90b29scyBidWlsZCBzY3JpcHQgKGNvbmZp
Z3VyZSArIG1ha2UpIGlzIG5vIGxvbmdlciBvZmZpY2lhbGx5Ci1zdXBwb3J0dGVkLiAgWW91IGFy
ZSBlbmNvdXJhZ2VkIHRvIG1pZ3JhdGUgdG8geW91ciBvd24gYnVpbGQgc3lzdGVtIG9yCi11c2Ug
Q01ha2UuICBJZiB5b3Ugc3RpbGwgbmVlZCB0byB1c2UgQXV0b3Rvb2xzLCB5b3UgY2FuIGZpbmQK
LWluc3RydWN0aW9ucyBpbiB0aGUgUkVBRE1FIGZpbGUgZnJvbSBHb29nbGUgVGVzdCAxLjQuMC4K
LQotT24gcGxhdGZvcm1zIHdoZXJlIHRoZSBwdGhyZWFkIGxpYnJhcnkgaXMgYXZhaWxhYmxlLCBH
b29nbGUgVGVzdCB1c2VzCi1pdCBpbiBvcmRlciB0byBiZSB0aHJlYWQtc2FmZS4gIFNlZSB0aGUg
Ik11bHRpLXRocmVhZGVkIFRlc3RzIiBzZWN0aW9uCi1mb3Igd2hhdCB0aGlzIG1lYW5zIHRvIHlv
dXIgYnVpbGQgc2NyaXB0LgotCi1JZiB5b3UgdXNlIE1pY3Jvc29mdCBWaXN1YWwgQysrIDcuMSB3
aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQsIEdvb2dsZQotVGVzdCB3aWxsIG5vIGxvbmdlciBjb21w
aWxlLiAgVGhpcyBzaG91bGQgYWZmZWN0IHZlcnkgZmV3IHBlb3BsZSwgYXMgYQotbGFyZ2UgcG9y
dGlvbiBvZiBTVEwgKGluY2x1ZGluZyA8c3RyaW5nPikgZG9lc24ndCBjb21waWxlIGluIHRoaXMg
bW9kZQotYW55d2F5LiAgV2UgZGVjaWRlZCB0byBzdG9wIHN1cHBvcnRpbmcgaXQgaW4gb3JkZXIg
dG8gZ3JlYXRseSBzaW1wbGlmeQotR29vZ2xlIFRlc3QncyBpbXBsZW1lbnRhdGlvbi4KLQotRGV2
ZWxvcGluZyBHb29nbGUgVGVzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UaGlzIHNlY3Rp
b24gZGlzY3Vzc2VzIGhvdyB0byBtYWtlIHlvdXIgb3duIGNoYW5nZXMgdG8gR29vZ2xlIFRlc3Qu
Ci0KLSMjIyBUZXN0aW5nIEdvb2dsZSBUZXN0IEl0c2VsZiAjIyMKLQotVG8gbWFrZSBzdXJlIHlv
dXIgY2hhbmdlcyB3b3JrIGFzIGludGVuZGVkIGFuZCBkb24ndCBicmVhayBleGlzdGluZwotZnVu
Y3Rpb25hbGl0eSwgeW91J2xsIHdhbnQgdG8gY29tcGlsZSBhbmQgcnVuIEdvb2dsZSBUZXN0J3Mg
b3duIHRlc3RzLgotRm9yIHRoYXQgeW91IGNhbiB1c2UgQ01ha2U6Ci0KLSAgbWtkaXIgbXlidWls
ZAotICBjZCBteWJ1aWxkCi0gIGNtYWtlIC1EYnVpbGRfYWxsX2d0ZXN0X3Rlc3RzPU9OICR7R1RF
U1RfRElSfQotCi1NYWtlIHN1cmUgeW91IGhhdmUgUHl0aG9uIGluc3RhbGxlZCwgYXMgc29tZSBv
ZiBHb29nbGUgVGVzdCdzIHRlc3RzCi1hcmUgd3JpdHRlbiBpbiBQeXRob24uICBJZiB0aGUgY21h
a2UgY29tbWFuZCBjb21wbGFpbnMgYWJvdXQgbm90IGJlaW5nCi1hYmxlIHRvIGZpbmQgUHl0aG9u
ICgiQ291bGQgTk9UIGZpbmQgUHl0aG9uSW50ZXJwIChtaXNzaW5nOgotUFlUSE9OX0VYRUNVVEFC
TEUpIiksIHRyeSB0ZWxsaW5nIGl0IGV4cGxpY2l0bHkgd2hlcmUgeW91ciBQeXRob24KLWV4ZWN1
dGFibGUgY2FuIGJlIGZvdW5kOgotCi0gIGNtYWtlIC1EUFlUSE9OX0VYRUNVVEFCTEU9cGF0aC90
by9weXRob24gLURidWlsZF9hbGxfZ3Rlc3RfdGVzdHM9T04gXAotICAgICAgJHtHVEVTVF9ESVJ9
Ci0KLU5leHQsIHlvdSBjYW4gYnVpbGQgR29vZ2xlIFRlc3QgYW5kIGFsbCBvZiBpdHMgb3duIHRl
c3RzLiAgT24gKm5peCwKLXRoaXMgaXMgdXN1YWxseSBkb25lIGJ5ICdtYWtlJy4gIFRvIHJ1biB0
aGUgdGVzdHMsIGRvCi0KLSAgbWFrZSB0ZXN0Ci0KLUFsbCB0ZXN0cyBzaG91bGQgcGFzcy4KLQot
IyMjIFJlZ2VuZXJhdGluZyBTb3VyY2UgRmlsZXMgIyMjCi0KLVNvbWUgb2YgR29vZ2xlIFRlc3Qn
cyBzb3VyY2UgZmlsZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRlbXBsYXRlcyAobm90Ci1pbiB0aGUg
QysrIHNlbnNlKSB1c2luZyBhIHNjcmlwdC4gIEEgdGVtcGxhdGUgZmlsZSBpcyBuYW1lZCBGT08u
cHVtcCwKLXdoZXJlIEZPTyBpcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSBpdCB3aWxsIGdlbmVyYXRl
LiAgRm9yIGV4YW1wbGUsIHRoZQotZmlsZSBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5
cGUtdXRpbC5oLnB1bXAgaXMgdXNlZCB0byBnZW5lcmF0ZQotZ3Rlc3QtdHlwZS11dGlsLmggaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgotCi1Ob3JtYWxseSB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBh
Ym91dCByZWdlbmVyYXRpbmcgdGhlIHNvdXJjZSBmaWxlcywKLXVubGVzcyB5b3UgbmVlZCB0byBt
b2RpZnkgdGhlbS4gIEluIHRoYXQgY2FzZSwgeW91IHNob3VsZCBtb2RpZnkgdGhlCi1jb3JyZXNw
b25kaW5nIC5wdW1wIGZpbGVzIGluc3RlYWQgYW5kIHJ1biB0aGUgcHVtcC5weSBQeXRob24gc2Ny
aXB0IHRvCi1yZWdlbmVyYXRlIHRoZW0uICBZb3UgY2FuIGZpbmQgcHVtcC5weSBpbiB0aGUgc2Ny
aXB0cy8gZGlyZWN0b3J5LgotUmVhZCB0aGUgUHVtcCBtYW51YWwgWzJdIGZvciBob3cgdG8gdXNl
IGl0LgotCi0gIFsyXSBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL1B1
bXBNYW51YWwKLQotIyMjIENvbnRyaWJ1dGluZyBhIFBhdGNoICMjIwotCi1XZSB3ZWxjb21lIHBh
dGNoZXMuICBQbGVhc2UgcmVhZCB0aGUgR29vZ2xlIFRlc3QgZGV2ZWxvcGVyJ3MgZ3VpZGUgWzNd
Ci1mb3IgaG93IHlvdSBjYW4gY29udHJpYnV0ZS4gIEluIHBhcnRpY3VsYXIsIG1ha2Ugc3VyZSB5
b3UgaGF2ZSBzaWduZWQKLXRoZSBDb250cmlidXRvciBMaWNlbnNlIEFncmVlbWVudCwgb3Igd2Ug
d29uJ3QgYmUgYWJsZSB0byBhY2NlcHQgdGhlCi1wYXRjaC4KLQotICBbM10gaHR0cDovL2NvZGUu
Z29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvd2lraS9Hb29nbGVUZXN0RGV2R3VpZGUKLQotSGFwcHkg
dGVzdGluZyEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5XZWJL
aXQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9SRUFETUUuV2ViS2l0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2YTMxOGZmNjJlMzI0OWM4ZTY1MzIwOTNmNDBlM2NiNDFjMTVmOWFj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5XZWJLaXQKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCww
IEBACi1HVGVzdCB2LjEuNS4wCi0KLWh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2
bi90YWdzL3JlbGVhc2UtMS41LjAvIAotCi0yMDE2LTAxLTAyIFRpbmctV2VpIExhbiAobGFudHc0
NEBnbWFpbC5jb20pCi0gICAgICBSZW1vdmUgdXNhZ2Ugb2YgZW52aXJvbiBnbG9iYWwgdmFyaWFi
bGUgdG8gZml4IHRoZSBidWlsZCBvbiBGcmVlQlNELgotCi0yMDEyLTAxLTA0IERtaXRyeSBMb21v
diAoZHNsb21vdkBnb29nbGUuY29tKSAgRGF2aWQgS2lsemVyIChkZGtpbHplckBhcHBsZS5jb20p
Ci0gICAgICAtIFdlYktpdCBwb3J0IG9mIGd0ZXN0IHVzZXMgRmFzdE1hbGxvYyAibmV3IiBhbmQg
ImRlbGV0ZSIgb3BlcmF0b3JzIGZyb20gSmF2YVNjcmlwdENvcmUuCi0gICAgICAtIFRoZSBndGVz
dC5mcmFtZXdvcmsgdGFyZ2V0IG5vdyBsaW5rcyB0byBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsu
Ci0KLTIwMTEtMTItMjIgRGF2aWQgS2lsemVyIChkZGtpbHplckBhcHBsZS5jb20pCi0gICAgICBB
ZGRlZCBQcm9kdWN0aW9uIGNvbmZpZ3VyYXRpb24gdG8gZ3Rlc3QgWGNvZGUgcHJvamVjdC4KLQot
MjAxMS0wNS0wNiBEbWl0cnkgTG9tb3YgKGRzbG9tb3ZAZ29vZ2xlLmNvbSkKLSAgICAgIGd0ZXN0
LW1kLnZjcHJvaiB1cGdyYWRlZCB0byBWUyAyMDA1ICg4LjApIGZvcm1hdCB0byBtYXRjaCB0aGUg
cmVzdCBvZiBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURN
RS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGQ0
NDA4MDU0YjMyNDk2YWEwYjQzN2MwMjY0NTIzMjQ1NzU5MGU2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMjgwIEBACisKKyMj
IyBHZW5lcmljIEJ1aWxkIEluc3RydWN0aW9ucyAjIyMKKworIyMjIyBTZXR1cCAjIyMjCisKK1Rv
IGJ1aWxkIEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRlc3RzIHRoYXQgdXNlIGl0LCB5b3UgbmVlZCB0
byB0ZWxsIHlvdXIKK2J1aWxkIHN5c3RlbSB3aGVyZSB0byBmaW5kIGl0cyBoZWFkZXJzIGFuZCBz
b3VyY2UgZmlsZXMuICBUaGUgZXhhY3QKK3dheSB0byBkbyBpdCBkZXBlbmRzIG9uIHdoaWNoIGJ1
aWxkIHN5c3RlbSB5b3UgdXNlLCBhbmQgaXMgdXN1YWxseQorc3RyYWlnaHRmb3J3YXJkLgorCisj
IyMjIEJ1aWxkICMjIyMKKworU3VwcG9zZSB5b3UgcHV0IEdvb2dsZSBUZXN0IGluIGRpcmVjdG9y
eSBgJHtHVEVTVF9ESVJ9YC4gIFRvIGJ1aWxkIGl0LAorY3JlYXRlIGEgbGlicmFyeSBidWlsZCB0
YXJnZXQgKG9yIGEgcHJvamVjdCBhcyBjYWxsZWQgYnkgVmlzdWFsIFN0dWRpbworYW5kIFhjb2Rl
KSB0byBjb21waWxlCisKKyAgICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LWFsbC5jYworCit3aXRo
IGAke0dURVNUX0RJUn0vaW5jbHVkZWAgaW4gdGhlIHN5c3RlbSBoZWFkZXIgc2VhcmNoIHBhdGgg
YW5kIGAke0dURVNUX0RJUn1gCitpbiB0aGUgbm9ybWFsIGhlYWRlciBzZWFyY2ggcGF0aC4gIEFz
c3VtaW5nIGEgTGludXgtbGlrZSBzeXN0ZW0gYW5kIGdjYywKK3NvbWV0aGluZyBsaWtlIHRoZSBm
b2xsb3dpbmcgd2lsbCBkbzoKKworICAgIGcrKyAtaXN5c3RlbSAke0dURVNUX0RJUn0vaW5jbHVk
ZSAtSSR7R1RFU1RfRElSfSBcCisgICAgICAgIC1wdGhyZWFkIC1jICR7R1RFU1RfRElSfS9zcmMv
Z3Rlc3QtYWxsLmNjCisgICAgYXIgLXJ2IGxpYmd0ZXN0LmEgZ3Rlc3QtYWxsLm8KKworKFdlIG5l
ZWQgYC1wdGhyZWFkYCBhcyBHb29nbGUgVGVzdCB1c2VzIHRocmVhZHMuKQorCitOZXh0LCB5b3Ug
c2hvdWxkIGNvbXBpbGUgeW91ciB0ZXN0IHNvdXJjZSBmaWxlIHdpdGgKK2Ake0dURVNUX0RJUn0v
aW5jbHVkZWAgaW4gdGhlIHN5c3RlbSBoZWFkZXIgc2VhcmNoIHBhdGgsIGFuZCBsaW5rIGl0Cit3
aXRoIGd0ZXN0IGFuZCBhbnkgb3RoZXIgbmVjZXNzYXJ5IGxpYnJhcmllczoKKworICAgIGcrKyAt
aXN5c3RlbSAke0dURVNUX0RJUn0vaW5jbHVkZSAtcHRocmVhZCBwYXRoL3RvL3lvdXJfdGVzdC5j
YyBsaWJndGVzdC5hIFwKKyAgICAgICAgLW8geW91cl90ZXN0CisKK0FzIGFuIGV4YW1wbGUsIHRo
ZSBtYWtlLyBkaXJlY3RvcnkgY29udGFpbnMgYSBNYWtlZmlsZSB0aGF0IHlvdSBjYW4KK3VzZSB0
byBidWlsZCBHb29nbGUgVGVzdCBvbiBzeXN0ZW1zIHdoZXJlIEdOVSBtYWtlIGlzIGF2YWlsYWJs
ZQorKGUuZy4gTGludXgsIE1hYyBPUyBYLCBhbmQgQ3lnd2luKS4gIEl0IGRvZXNuJ3QgdHJ5IHRv
IGJ1aWxkIEdvb2dsZQorVGVzdCdzIG93biB0ZXN0cy4gIEluc3RlYWQsIGl0IGp1c3QgYnVpbGRz
IHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5IGFuZAorYSBzYW1wbGUgdGVzdC4gIFlvdSBjYW4gdXNl
IGl0IGFzIGEgc3RhcnRpbmcgcG9pbnQgZm9yIHlvdXIgb3duIGJ1aWxkCitzY3JpcHQuCisKK0lm
IHRoZSBkZWZhdWx0IHNldHRpbmdzIGFyZSBjb3JyZWN0IGZvciB5b3VyIGVudmlyb25tZW50LCB0
aGUKK2ZvbGxvd2luZyBjb21tYW5kcyBzaG91bGQgc3VjY2VlZDoKKworICAgIGNkICR7R1RFU1Rf
RElSfS9tYWtlCisgICAgbWFrZQorICAgIC4vc2FtcGxlMV91bml0dGVzdAorCitJZiB5b3Ugc2Vl
IGVycm9ycywgdHJ5IHRvIHR3ZWFrIHRoZSBjb250ZW50cyBvZiBgbWFrZS9NYWtlZmlsZWAgdG8g
bWFrZQordGhlbSBnbyBhd2F5LiAgVGhlcmUgYXJlIGluc3RydWN0aW9ucyBpbiBgbWFrZS9NYWtl
ZmlsZWAgb24gaG93IHRvIGRvCitpdC4KKworIyMjIFVzaW5nIENNYWtlICMjIworCitHb29nbGUg
VGVzdCBjb21lcyB3aXRoIGEgQ01ha2UgYnVpbGQgc2NyaXB0ICgKK1tDTWFrZUxpc3RzLnR4dF0o
Q01ha2VMaXN0cy50eHQpKSB0aGF0IGNhbiBiZSB1c2VkIG9uIGEgd2lkZSByYW5nZSBvZiBwbGF0
Zm9ybXMgKCJDIiBzdGFuZHMgZm9yCitjcm9zcy1wbGF0Zm9ybS4pLiBJZiB5b3UgZG9uJ3QgaGF2
ZSBDTWFrZSBpbnN0YWxsZWQgYWxyZWFkeSwgeW91IGNhbgorZG93bmxvYWQgaXQgZm9yIGZyZWUg
ZnJvbSA8aHR0cDovL3d3dy5jbWFrZS5vcmcvPi4KKworQ01ha2Ugd29ya3MgYnkgZ2VuZXJhdGlu
ZyBuYXRpdmUgbWFrZWZpbGVzIG9yIGJ1aWxkIHByb2plY3RzIHRoYXQgY2FuCitiZSB1c2VkIGlu
IHRoZSBjb21waWxlciBlbnZpcm9ubWVudCBvZiB5b3VyIGNob2ljZS4gIFRoZSB0eXBpY2FsCit3
b3JrZmxvdyBzdGFydHMgd2l0aDoKKworICAgIG1rZGlyIG15YnVpbGQgICAgICAgIyBDcmVhdGUg
YSBkaXJlY3RvcnkgdG8gaG9sZCB0aGUgYnVpbGQgb3V0cHV0LgorICAgIGNkIG15YnVpbGQKKyAg
ICBjbWFrZSAke0dURVNUX0RJUn0gICMgR2VuZXJhdGUgbmF0aXZlIGJ1aWxkIHNjcmlwdHMuCisK
K0lmIHlvdSB3YW50IHRvIGJ1aWxkIEdvb2dsZSBUZXN0J3Mgc2FtcGxlcywgeW91IHNob3VsZCBy
ZXBsYWNlIHRoZQorbGFzdCBjb21tYW5kIHdpdGgKKworICAgIGNtYWtlIC1EZ3Rlc3RfYnVpbGRf
c2FtcGxlcz1PTiAke0dURVNUX0RJUn0KKworSWYgeW91IGFyZSBvbiBhIFwqbml4IHN5c3RlbSwg
eW91IHNob3VsZCBub3cgc2VlIGEgTWFrZWZpbGUgaW4gdGhlCitjdXJyZW50IGRpcmVjdG9yeS4g
IEp1c3QgdHlwZSAnbWFrZScgdG8gYnVpbGQgZ3Rlc3QuCisKK0lmIHlvdSB1c2UgV2luZG93cyBh
bmQgaGF2ZSBWaXN1YWwgU3R1ZGlvIGluc3RhbGxlZCwgYSBgZ3Rlc3Quc2xuYCBmaWxlCithbmQg
c2V2ZXJhbCBgLnZjcHJvamAgZmlsZXMgd2lsbCBiZSBjcmVhdGVkLiAgWW91IGNhbiB0aGVuIGJ1
aWxkIHRoZW0KK3VzaW5nIFZpc3VhbCBTdHVkaW8uCisKK09uIE1hYyBPUyBYIHdpdGggWGNvZGUg
aW5zdGFsbGVkLCBhIGAueGNvZGVwcm9qYCBmaWxlIHdpbGwgYmUgZ2VuZXJhdGVkLgorCisjIyMg
TGVnYWN5IEJ1aWxkIFNjcmlwdHMgIyMjCisKK0JlZm9yZSBzZXR0bGluZyBvbiBDTWFrZSwgd2Ug
aGF2ZSBiZWVuIHByb3ZpZGluZyBoYW5kLW1haW50YWluZWQgYnVpbGQKK3Byb2plY3RzL3Njcmlw
dHMgZm9yIFZpc3VhbCBTdHVkaW8sIFhjb2RlLCBhbmQgQXV0b3Rvb2xzLiAgV2hpbGUgd2UKK2Nv
bnRpbnVlIHRvIHByb3ZpZGUgdGhlbSBmb3IgY29udmVuaWVuY2UsIHRoZXkgYXJlIG5vdCBhY3Rp
dmVseQorbWFpbnRhaW5lZCBhbnkgbW9yZS4gIFdlIGhpZ2hseSByZWNvbW1lbmQgdGhhdCB5b3Ug
Zm9sbG93IHRoZQoraW5zdHJ1Y3Rpb25zIGluIHRoZSBwcmV2aW91cyB0d28gc2VjdGlvbnMgdG8g
aW50ZWdyYXRlIEdvb2dsZSBUZXN0Cit3aXRoIHlvdXIgZXhpc3RpbmcgYnVpbGQgc3lzdGVtLgor
CitJZiB5b3Ugc3RpbGwgbmVlZCB0byB1c2UgdGhlIGxlZ2FjeSBidWlsZCBzY3JpcHRzLCBoZXJl
J3MgaG93OgorCitUaGUgbXN2Y1wgZm9sZGVyIGNvbnRhaW5zIHR3byBzb2x1dGlvbnMgd2l0aCBW
aXN1YWwgQysrIHByb2plY3RzLgorT3BlbiB0aGUgYGd0ZXN0LnNsbmAgb3IgYGd0ZXN0LW1kLnNs
bmAgZmlsZSB1c2luZyBWaXN1YWwgU3R1ZGlvLCBhbmQgeW91CithcmUgcmVhZHkgdG8gYnVpbGQg
R29vZ2xlIFRlc3QgdGhlIHNhbWUgd2F5IHlvdSBidWlsZCBhbnkgVmlzdWFsCitTdHVkaW8gcHJv
amVjdC4gIEZpbGVzIHRoYXQgaGF2ZSBuYW1lcyBlbmRpbmcgd2l0aCAtbWQgdXNlIERMTAordmVy
c2lvbnMgb2YgTWljcm9zb2Z0IHJ1bnRpbWUgbGlicmFyaWVzICh0aGUgL01EIG9yIHRoZSAvTURk
IGNvbXBpbGVyCitvcHRpb24pLiAgRmlsZXMgd2l0aG91dCB0aGF0IHN1ZmZpeCB1c2Ugc3RhdGlj
IHZlcnNpb25zIG9mIHRoZSBydW50aW1lCitsaWJyYXJpZXMgKHRoZSAvTVQgb3IgdGhlIC9NVGQg
b3B0aW9uKS4gIFBsZWFzZSBub3RlIHRoYXQgb25lIG11c3QgdXNlCit0aGUgc2FtZSBvcHRpb24g
dG8gY29tcGlsZSBib3RoIGd0ZXN0IGFuZCB0aGUgdGVzdCBjb2RlLiAgSWYgeW91IHVzZQorVmlz
dWFsIFN0dWRpbyAyMDA1IG9yIGFib3ZlLCB3ZSByZWNvbW1lbmQgdGhlIC1tZCB2ZXJzaW9uIGFz
IC9NRCBpcwordGhlIGRlZmF1bHQgZm9yIG5ldyBwcm9qZWN0cyBpbiB0aGVzZSB2ZXJzaW9ucyBv
ZiBWaXN1YWwgU3R1ZGlvLgorCitPbiBNYWMgT1MgWCwgb3BlbiB0aGUgYGd0ZXN0Lnhjb2RlcHJv
amAgaW4gdGhlIGB4Y29kZS9gIGZvbGRlciB1c2luZworWGNvZGUuICBCdWlsZCB0aGUgImd0ZXN0
IiB0YXJnZXQuICBUaGUgdW5pdmVyc2FsIGJpbmFyeSBmcmFtZXdvcmsgd2lsbAorZW5kIHVwIGlu
IHlvdXIgc2VsZWN0ZWQgYnVpbGQgZGlyZWN0b3J5IChzZWxlY3RlZCBpbiB0aGUgWGNvZGUKKyJQ
cmVmZXJlbmNlcy4uLiIgLT4gIkJ1aWxkaW5nIiBwYW5lIGFuZCBkZWZhdWx0cyB0byB4Y29kZS9i
dWlsZCkuCitBbHRlcm5hdGl2ZWx5LCBhdCB0aGUgY29tbWFuZCBsaW5lLCBlbnRlcjoKKworICAg
IHhjb2RlYnVpbGQKKworVGhpcyB3aWxsIGJ1aWxkIHRoZSAiUmVsZWFzZSIgY29uZmlndXJhdGlv
biBvZiBndGVzdC5mcmFtZXdvcmsgaW4geW91cgorZGVmYXVsdCBidWlsZCBsb2NhdGlvbi4gIFNl
ZSB0aGUgInhjb2RlYnVpbGQiIG1hbiBwYWdlIGZvciBtb3JlCitpbmZvcm1hdGlvbiBhYm91dCBi
dWlsZGluZyBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgYW5kIGJ1aWxkaW5nIGluCitkaWZmZXJl
bnQgbG9jYXRpb25zLgorCitJZiB5b3Ugd2lzaCB0byB1c2UgdGhlIEdvb2dsZSBUZXN0IFhjb2Rl
IHByb2plY3Qgd2l0aCBYY29kZSA0LnggYW5kCithYm92ZSwgeW91IG5lZWQgdG8gZWl0aGVyOgor
CisgKiB1cGRhdGUgdGhlIFNESyBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4geGNvZGUvQ29uZmln
L0dlbmVyYWwueGNvbmZpZy4KKyAgIENvbW1lbnQgb3B0aW9ucyBgU0RLUk9PVGAsIGBNQUNPU19E
RVBMT1lNRU5UX1RBUkdFVGAsIGFuZCBgR0NDX1ZFUlNJT05gLiBJZgorICAgeW91IGNob29zZSB0
aGlzIHJvdXRlIHlvdSBsb3NlIHRoZSBhYmlsaXR5IHRvIHRhcmdldCBlYXJsaWVyIHZlcnNpb25z
CisgICBvZiBNYWNPUyBYLgorICogSW5zdGFsbCBhbiBTREsgZm9yIGFuIGVhcmxpZXIgdmVyc2lv
bi4gVGhpcyBkb2Vzbid0IGFwcGVhciB0byBiZQorICAgc3VwcG9ydGVkIGJ5IEFwcGxlLCBidXQg
aGFzIGJlZW4gcmVwb3J0ZWQgdG8gd29yaworICAgKGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9x
dWVzdGlvbnMvNTM3ODUxOCkuCisKKyMjIyBUd2Vha2luZyBHb29nbGUgVGVzdCAjIyMKKworR29v
Z2xlIFRlc3QgY2FuIGJlIHVzZWQgaW4gZGl2ZXJzZSBlbnZpcm9ubWVudHMuICBUaGUgZGVmYXVs
dAorY29uZmlndXJhdGlvbiBtYXkgbm90IHdvcmsgKG9yIG1heSBub3Qgd29yayB3ZWxsKSBvdXQg
b2YgdGhlIGJveCBpbgorc29tZSBlbnZpcm9ubWVudHMuICBIb3dldmVyLCB5b3UgY2FuIGVhc2ls
eSB0d2VhayBHb29nbGUgVGVzdCBieQorZGVmaW5pbmcgY29udHJvbCBtYWNyb3Mgb24gdGhlIGNv
bXBpbGVyIGNvbW1hbmQgbGluZS4gIEdlbmVyYWxseSwKK3RoZXNlIG1hY3JvcyBhcmUgbmFtZWQg
bGlrZSBgR1RFU1RfWFlaYCBhbmQgeW91IGRlZmluZSB0aGVtIHRvIGVpdGhlciAxCitvciAwIHRv
IGVuYWJsZSBvciBkaXNhYmxlIGEgY2VydGFpbiBmZWF0dXJlLgorCitXZSBsaXN0IHRoZSBtb3N0
IGZyZXF1ZW50bHkgdXNlZCBtYWNyb3MgYmVsb3cuICBGb3IgYSBjb21wbGV0ZSBsaXN0LAorc2Vl
IGZpbGUgW2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oXShpbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LXBvcnQuaCkuCisKKyMjIyBDaG9vc2luZyBhIFRSMSBUdXBsZSBMaWJy
YXJ5ICMjIworCitTb21lIEdvb2dsZSBUZXN0IGZlYXR1cmVzIHJlcXVpcmUgdGhlIEMrKyBUZWNo
bmljYWwgUmVwb3J0IDEgKFRSMSkKK3R1cGxlIGxpYnJhcnksIHdoaWNoIGlzIG5vdCB5ZXQgYXZh
aWxhYmxlIHdpdGggYWxsIGNvbXBpbGVycy4gIFRoZQorZ29vZCBuZXdzIGlzIHRoYXQgR29vZ2xl
IFRlc3QgaW1wbGVtZW50cyBhIHN1YnNldCBvZiBUUjEgdHVwbGUgdGhhdCdzCitlbm91Z2ggZm9y
IGl0cyBvd24gbmVlZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB1c2UgdGhpcyB3aGVuIHRoZQor
Y29tcGlsZXIgZG9lc24ndCBwcm92aWRlIFRSMSB0dXBsZS4KKworVXN1YWxseSB5b3UgZG9uJ3Qg
bmVlZCB0byBjYXJlIGFib3V0IHdoaWNoIHR1cGxlIGxpYnJhcnkgR29vZ2xlIFRlc3QKK3VzZXMu
ICBIb3dldmVyLCBpZiB5b3VyIHByb2plY3QgYWxyZWFkeSB1c2VzIFRSMSB0dXBsZSwgeW91IG5l
ZWQgdG8KK3RlbGwgR29vZ2xlIFRlc3QgdG8gdXNlIHRoZSBzYW1lIFRSMSB0dXBsZSBsaWJyYXJ5
IHRoZSByZXN0IG9mIHlvdXIKK3Byb2plY3QgdXNlcywgb3IgdGhlIHR3byB0dXBsZSBpbXBsZW1l
bnRhdGlvbnMgd2lsbCBjbGFzaC4gIFRvIGRvCit0aGF0LCBhZGQKKworICAgIC1ER1RFU1RfVVNF
X09XTl9UUjFfVFVQTEU9MAorCit0byB0aGUgY29tcGlsZXIgZmxhZ3Mgd2hpbGUgY29tcGlsaW5n
IEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRlc3RzLiAgSWYKK3lvdSB3YW50IHRvIGZvcmNlIEdvb2ds
ZSBUZXN0IHRvIHVzZSBpdHMgb3duIHR1cGxlIGxpYnJhcnksIGp1c3QgYWRkCisKKyAgICAtREdU
RVNUX1VTRV9PV05fVFIxX1RVUExFPTEKKwordG8gdGhlIGNvbXBpbGVyIGZsYWdzIGluc3RlYWQu
CisKK0lmIHlvdSBkb24ndCB3YW50IEdvb2dsZSBUZXN0IHRvIHVzZSB0dXBsZSBhdCBhbGwsIGFk
ZAorCisgICAgLURHVEVTVF9IQVNfVFIxX1RVUExFPTAKKworYW5kIGFsbCBmZWF0dXJlcyB1c2lu
ZyB0dXBsZSB3aWxsIGJlIGRpc2FibGVkLgorCisjIyMgTXVsdGktdGhyZWFkZWQgVGVzdHMgIyMj
CisKK0dvb2dsZSBUZXN0IGlzIHRocmVhZC1zYWZlIHdoZXJlIHRoZSBwdGhyZWFkIGxpYnJhcnkg
aXMgYXZhaWxhYmxlLgorQWZ0ZXIgYCNpbmNsdWRlICJndGVzdC9ndGVzdC5oImAsIHlvdSBjYW4g
Y2hlY2sgdGhlIGBHVEVTVF9JU19USFJFQURTQUZFYAorbWFjcm8gdG8gc2VlIHdoZXRoZXIgdGhp
cyBpcyB0aGUgY2FzZSAoeWVzIGlmIHRoZSBtYWNybyBpcyBgI2RlZmluZWRgIHRvCisxLCBubyBp
ZiBpdCdzIHVuZGVmaW5lZC4pLgorCitJZiBHb29nbGUgVGVzdCBkb2Vzbid0IGNvcnJlY3RseSBk
ZXRlY3Qgd2hldGhlciBwdGhyZWFkIGlzIGF2YWlsYWJsZQoraW4geW91ciBlbnZpcm9ubWVudCwg
eW91IGNhbiBmb3JjZSBpdCB3aXRoCisKKyAgICAtREdURVNUX0hBU19QVEhSRUFEPTEKKworb3IK
KworICAgIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MAorCitXaGVuIEdvb2dsZSBUZXN0IHVzZXMgcHRo
cmVhZCwgeW91IG1heSBuZWVkIHRvIGFkZCBmbGFncyB0byB5b3VyCitjb21waWxlciBhbmQvb3Ig
bGlua2VyIHRvIHNlbGVjdCB0aGUgcHRocmVhZCBsaWJyYXJ5LCBvciB5b3UnbGwgZ2V0CitsaW5r
IGVycm9ycy4gIElmIHlvdSB1c2UgdGhlIENNYWtlIHNjcmlwdCBvciB0aGUgZGVwcmVjYXRlZCBB
dXRvdG9vbHMKK3NjcmlwdCwgdGhpcyBpcyB0YWtlbiBjYXJlIG9mIGZvciB5b3UuICBJZiB5b3Ug
dXNlIHlvdXIgb3duIGJ1aWxkCitzY3JpcHQsIHlvdSdsbCBuZWVkIHRvIHJlYWQgeW91ciBjb21w
aWxlciBhbmQgbGlua2VyJ3MgbWFudWFsIHRvCitmaWd1cmUgb3V0IHdoYXQgZmxhZ3MgdG8gYWRk
LgorCisjIyMgQXMgYSBTaGFyZWQgTGlicmFyeSAoRExMKSAjIyMKKworR29vZ2xlIFRlc3QgaXMg
Y29tcGFjdCwgc28gbW9zdCB1c2VycyBjYW4gYnVpbGQgYW5kIGxpbmsgaXQgYXMgYQorc3RhdGlj
IGxpYnJhcnkgZm9yIHRoZSBzaW1wbGljaXR5LiAgWW91IGNhbiBjaG9vc2UgdG8gdXNlIEdvb2ds
ZSBUZXN0CithcyBhIHNoYXJlZCBsaWJyYXJ5IChrbm93biBhcyBhIERMTCBvbiBXaW5kb3dzKSBp
ZiB5b3UgcHJlZmVyLgorCitUbyBjb21waWxlICpndGVzdCogYXMgYSBzaGFyZWQgbGlicmFyeSwg
YWRkCisKKyAgICAtREdURVNUX0NSRUFURV9TSEFSRURfTElCUkFSWT0xCisKK3RvIHRoZSBjb21w
aWxlciBmbGFncy4gIFlvdSdsbCBhbHNvIG5lZWQgdG8gdGVsbCB0aGUgbGlua2VyIHRvIHByb2R1
Y2UKK2Egc2hhcmVkIGxpYnJhcnkgaW5zdGVhZCAtIGNvbnN1bHQgeW91ciBsaW5rZXIncyBtYW51
YWwgZm9yIGhvdyB0byBkbworaXQuCisKK1RvIGNvbXBpbGUgeW91ciAqdGVzdHMqIHRoYXQgdXNl
IHRoZSBndGVzdCBzaGFyZWQgbGlicmFyeSwgYWRkCisKKyAgICAtREdURVNUX0xJTktFRF9BU19T
SEFSRURfTElCUkFSWT0xCisKK3RvIHRoZSBjb21waWxlciBmbGFncy4KKworTm90ZTogd2hpbGUg
dGhlIGFib3ZlIHN0ZXBzIGFyZW4ndCB0ZWNobmljYWxseSBuZWNlc3NhcnkgdG9kYXkgd2hlbgor
dXNpbmcgc29tZSBjb21waWxlcnMgKGUuZy4gR0NDKSwgdGhleSBtYXkgYmVjb21lIG5lY2Vzc2Fy
eSBpbiB0aGUKK2Z1dHVyZSwgaWYgd2UgZGVjaWRlIHRvIGltcHJvdmUgdGhlIHNwZWVkIG9mIGxv
YWRpbmcgdGhlIGxpYnJhcnkgKHNlZQorPGh0dHA6Ly9nY2MuZ251Lm9yZy93aWtpL1Zpc2liaWxp
dHk+IGZvciBkZXRhaWxzKS4gIFRoZXJlZm9yZSB5b3UgYXJlCityZWNvbW1lbmRlZCB0byBhbHdh
eXMgYWRkIHRoZSBhYm92ZSBmbGFncyB3aGVuIHVzaW5nIEdvb2dsZSBUZXN0IGFzIGEKK3NoYXJl
ZCBsaWJyYXJ5LiAgT3RoZXJ3aXNlIGEgZnV0dXJlIHJlbGVhc2Ugb2YgR29vZ2xlIFRlc3QgbWF5
IGJyZWFrCit5b3VyIGJ1aWxkIHNjcmlwdC4KKworIyMjIEF2b2lkaW5nIE1hY3JvIE5hbWUgQ2xh
c2hlcyAjIyMKKworSW4gQysrLCBtYWNyb3MgZG9uJ3Qgb2JleSBuYW1lc3BhY2VzLiAgVGhlcmVm
b3JlIHR3byBsaWJyYXJpZXMgdGhhdAorYm90aCBkZWZpbmUgYSBtYWNybyBvZiB0aGUgc2FtZSBu
YW1lIHdpbGwgY2xhc2ggaWYgeW91IGAjaW5jbHVkZWAgYm90aAorZGVmaW5pdGlvbnMuICBJbiBj
YXNlIGEgR29vZ2xlIFRlc3QgbWFjcm8gY2xhc2hlcyB3aXRoIGFub3RoZXIKK2xpYnJhcnksIHlv
dSBjYW4gZm9yY2UgR29vZ2xlIFRlc3QgdG8gcmVuYW1lIGl0cyBtYWNybyB0byBhdm9pZCB0aGUK
K2NvbmZsaWN0LgorCitTcGVjaWZpY2FsbHksIGlmIGJvdGggR29vZ2xlIFRlc3QgYW5kIHNvbWUg
b3RoZXIgY29kZSBkZWZpbmUgbWFjcm8KK0ZPTywgeW91IGNhbiBhZGQKKworICAgIC1ER1RFU1Rf
RE9OVF9ERUZJTkVfRk9PPTEKKwordG8gdGhlIGNvbXBpbGVyIGZsYWdzIHRvIHRlbGwgR29vZ2xl
IFRlc3QgdG8gY2hhbmdlIHRoZSBtYWNybydzIG5hbWUKK2Zyb20gYEZPT2AgdG8gYEdURVNUX0ZP
T2AuICBDdXJyZW50bHkgYEZPT2AgY2FuIGJlIGBGQUlMYCwgYFNVQ0NFRURgLAorb3IgYFRFU1Rg
LiAgRm9yIGV4YW1wbGUsIHdpdGggYC1ER1RFU1RfRE9OVF9ERUZJTkVfVEVTVD0xYCwgeW91J2xs
CituZWVkIHRvIHdyaXRlCisKKyAgICBHVEVTVF9URVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAu
Li4gfQorCitpbnN0ZWFkIG9mCisKKyAgICBURVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAuLi4g
fQorCitpbiBvcmRlciB0byBkZWZpbmUgYSB0ZXN0LgorCisjIyBEZXZlbG9waW5nIEdvb2dsZSBU
ZXN0ICMjCisKK1RoaXMgc2VjdGlvbiBkaXNjdXNzZXMgaG93IHRvIG1ha2UgeW91ciBvd24gY2hh
bmdlcyB0byBHb29nbGUgVGVzdC4KKworIyMjIFRlc3RpbmcgR29vZ2xlIFRlc3QgSXRzZWxmICMj
IworCitUbyBtYWtlIHN1cmUgeW91ciBjaGFuZ2VzIHdvcmsgYXMgaW50ZW5kZWQgYW5kIGRvbid0
IGJyZWFrIGV4aXN0aW5nCitmdW5jdGlvbmFsaXR5LCB5b3UnbGwgd2FudCB0byBjb21waWxlIGFu
ZCBydW4gR29vZ2xlIFRlc3QncyBvd24gdGVzdHMuCitGb3IgdGhhdCB5b3UgY2FuIHVzZSBDTWFr
ZToKKworICAgIG1rZGlyIG15YnVpbGQKKyAgICBjZCBteWJ1aWxkCisgICAgY21ha2UgLURndGVz
dF9idWlsZF90ZXN0cz1PTiAke0dURVNUX0RJUn0KKworTWFrZSBzdXJlIHlvdSBoYXZlIFB5dGhv
biBpbnN0YWxsZWQsIGFzIHNvbWUgb2YgR29vZ2xlIFRlc3QncyB0ZXN0cworYXJlIHdyaXR0ZW4g
aW4gUHl0aG9uLiAgSWYgdGhlIGNtYWtlIGNvbW1hbmQgY29tcGxhaW5zIGFib3V0IG5vdCBiZWlu
ZworYWJsZSB0byBmaW5kIFB5dGhvbiAoYENvdWxkIE5PVCBmaW5kIFB5dGhvbkludGVycCAobWlz
c2luZzoKK1BZVEhPTl9FWEVDVVRBQkxFKWApLCB0cnkgdGVsbGluZyBpdCBleHBsaWNpdGx5IHdo
ZXJlIHlvdXIgUHl0aG9uCitleGVjdXRhYmxlIGNhbiBiZSBmb3VuZDoKKworICAgIGNtYWtlIC1E
UFlUSE9OX0VYRUNVVEFCTEU9cGF0aC90by9weXRob24gLURndGVzdF9idWlsZF90ZXN0cz1PTiAk
e0dURVNUX0RJUn0KKworTmV4dCwgeW91IGNhbiBidWlsZCBHb29nbGUgVGVzdCBhbmQgYWxsIG9m
IGl0cyBvd24gdGVzdHMuICBPbiBcKm5peCwKK3RoaXMgaXMgdXN1YWxseSBkb25lIGJ5ICdtYWtl
Jy4gIFRvIHJ1biB0aGUgdGVzdHMsIGRvCisKKyAgICBtYWtlIHRlc3QKKworQWxsIHRlc3RzIHNo
b3VsZCBwYXNzLgorCitOb3JtYWxseSB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCByZWdl
bmVyYXRpbmcgdGhlIHNvdXJjZSBmaWxlcywKK3VubGVzcyB5b3UgbmVlZCB0byBtb2RpZnkgdGhl
bS4gIEluIHRoYXQgY2FzZSwgeW91IHNob3VsZCBtb2RpZnkgdGhlCitjb3JyZXNwb25kaW5nIC5w
dW1wIGZpbGVzIGluc3RlYWQgYW5kIHJ1biB0aGUgcHVtcC5weSBQeXRob24gc2NyaXB0IHRvCity
ZWdlbmVyYXRlIHRoZW0uICBZb3UgY2FuIGZpbmQgcHVtcC5weSBpbiB0aGUgW3NjcmlwdHMvXShz
Y3JpcHRzLykgZGlyZWN0b3J5LgorUmVhZCB0aGUgW1B1bXAgbWFudWFsXShkb2NzL1B1bXBNYW51
YWwubWQpIGZvciBob3cgdG8gdXNlIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvYnVpbGQtYXV4Ly5rZWVwIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvYnVpbGQtYXV4
Ly5rZWVwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUz
OTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2ludGVybmFsX3V0
aWxzLmNtYWtlIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvaW50ZXJuYWxfdXRpbHMu
Y21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzc3YjkxZWQ0YjhjYWEyMjZlYTU1Y2ZhNjFmZTdlYzQzM2ZmYjQ1
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2ludGVy
bmFsX3V0aWxzLmNtYWtlCkBAIC0wLDAgKzEsMjU0IEBACisjIERlZmluZXMgZnVuY3Rpb25zIGFu
ZCBtYWNyb3MgdXNlZnVsIGZvciBidWlsZGluZyBHb29nbGUgVGVzdCBhbmQKKyMgR29vZ2xlIE1v
Y2suCisjCisjIE5vdGU6CisjCisjIC0gVGhpcyBmaWxlIHdpbGwgYmUgcnVuIHR3aWNlIHdoZW4g
YnVpbGRpbmcgR29vZ2xlIE1vY2sgKG9uY2UgdmlhCisjICAgR29vZ2xlIFRlc3QncyBDTWFrZUxp
c3RzLnR4dCwgYW5kIG9uY2UgdmlhIEdvb2dsZSBNb2NrJ3MpLgorIyAgIFRoZXJlZm9yZSBpdCBz
aG91bGRuJ3QgaGF2ZSBhbnkgc2lkZSBlZmZlY3RzIG90aGVyIHRoYW4gZGVmaW5pbmcKKyMgICB0
aGUgZnVuY3Rpb25zIGFuZCBtYWNyb3MuCisjCisjIC0gVGhlIGZ1bmN0aW9ucy9tYWNyb3MgZGVm
aW5lZCBpbiB0aGlzIGZpbGUgbWF5IGRlcGVuZCBvbiBHb29nbGUKKyMgICBUZXN0IGFuZCBHb29n
bGUgTW9jaydzIG9wdGlvbigpIGRlZmluaXRpb25zLCBhbmQgdGh1cyBtdXN0IGJlCisjICAgY2Fs
bGVkICphZnRlciogdGhlIG9wdGlvbnMgaGF2ZSBiZWVuIGRlZmluZWQuCisKKyMgVHdlYWtzIENN
YWtlJ3MgZGVmYXVsdCBjb21waWxlci9saW5rZXIgc2V0dGluZ3MgdG8gc3VpdCBHb29nbGUgVGVz
dCdzIG5lZWRzLgorIworIyBUaGlzIG11c3QgYmUgYSBtYWNybygpLCBhcyBpbnNpZGUgYSBmdW5j
dGlvbiBzdHJpbmcoKSBjYW4gb25seQorIyB1cGRhdGUgdmFyaWFibGVzIGluIHRoZSBmdW5jdGlv
biBzY29wZS4KK21hY3JvKGZpeF9kZWZhdWx0X2NvbXBpbGVyX3NldHRpbmdzXykKKyAgaWYgKE1T
VkMpCisgICAgIyBGb3IgTVNWQywgQ01ha2Ugc2V0cyBjZXJ0YWluIGZsYWdzIHRvIGRlZmF1bHRz
IHdlIHdhbnQgdG8gb3ZlcnJpZGUuCisgICAgIyBUaGlzIHJlcGxhY2VtZW50IGNvZGUgaXMgdGFr
ZW4gZnJvbSBzYW1wbGUgaW4gdGhlIENNYWtlIFdpa2kgYXQKKyAgICAjIGh0dHA6Ly93d3cuY21h
a2Uub3JnL1dpa2kvQ01ha2VfRkFRI0R5bmFtaWNfUmVwbGFjZS4KKyAgICBmb3JlYWNoIChmbGFn
X3ZhcgorICAgICAgICAgICAgIENNQUtFX0NYWF9GTEFHUyBDTUFLRV9DWFhfRkxBR1NfREVCVUcg
Q01BS0VfQ1hYX0ZMQUdTX1JFTEVBU0UKKyAgICAgICAgICAgICBDTUFLRV9DWFhfRkxBR1NfTUlO
U0laRVJFTCBDTUFLRV9DWFhfRkxBR1NfUkVMV0lUSERFQklORk8pCisgICAgICBpZiAoTk9UIEJV
SUxEX1NIQVJFRF9MSUJTIEFORCBOT1QgZ3Rlc3RfZm9yY2Vfc2hhcmVkX2NydCkKKyAgICAgICAg
IyBXaGVuIEdvb2dsZSBUZXN0IGlzIGJ1aWx0IGFzIGEgc2hhcmVkIGxpYnJhcnksIGl0IHNob3Vs
ZCBhbHNvIHVzZQorICAgICAgICAjIHNoYXJlZCBydW50aW1lIGxpYnJhcmllcy4gIE90aGVyd2lz
ZSwgaXQgbWF5IGVuZCB1cCB3aXRoIG11bHRpcGxlCisgICAgICAgICMgY29waWVzIG9mIHJ1bnRp
bWUgbGlicmFyeSBkYXRhIGluIGRpZmZlcmVudCBtb2R1bGVzLCByZXN1bHRpbmcgaW4KKyAgICAg
ICAgIyBoYXJkLXRvLWZpbmQgY3Jhc2hlcy4gV2hlbiBpdCBpcyBidWlsdCBhcyBhIHN0YXRpYyBs
aWJyYXJ5LCBpdCBpcworICAgICAgICAjIHByZWZlcmFibGUgdG8gdXNlIENSVCBhcyBzdGF0aWMg
bGlicmFyaWVzLCBhcyB3ZSBkb24ndCBoYXZlIHRvIHJlbHkKKyAgICAgICAgIyBvbiBDUlQgRExM
cyBiZWluZyBhdmFpbGFibGUuIENNYWtlIGFsd2F5cyBkZWZhdWx0cyB0byB1c2luZyBzaGFyZWQK
KyAgICAgICAgIyBDUlQgbGlicmFyaWVzLCBzbyB3ZSBvdmVycmlkZSB0aGF0IGRlZmF1bHQgaGVy
ZS4KKyAgICAgICAgc3RyaW5nKFJFUExBQ0UgIi9NRCIgIi1NVCIgJHtmbGFnX3Zhcn0gIiR7JHtm
bGFnX3Zhcn19IikKKyAgICAgIGVuZGlmKCkKKworICAgICAgIyBXZSBwcmVmZXIgbW9yZSBzdHJp
Y3Qgd2FybmluZyBjaGVja2luZyBmb3IgYnVpbGRpbmcgR29vZ2xlIFRlc3QuCisgICAgICAjIFJl
cGxhY2VzIC9XMyB3aXRoIC9XNCBpbiBkZWZhdWx0cy4KKyAgICAgIHN0cmluZyhSRVBMQUNFICIv
VzMiICIvVzQiICR7ZmxhZ192YXJ9ICIkeyR7ZmxhZ192YXJ9fSIpCisgICAgZW5kZm9yZWFjaCgp
CisgIGVuZGlmKCkKK2VuZG1hY3JvKCkKKworIyBEZWZpbmVzIHRoZSBjb21waWxlci9saW5rZXIg
ZmxhZ3MgdXNlZCB0byBidWlsZCBHb29nbGUgVGVzdCBhbmQKKyMgR29vZ2xlIE1vY2suICBZb3Ug
Y2FuIHR3ZWFrIHRoZXNlIGRlZmluaXRpb25zIHRvIHN1aXQgeW91ciBuZWVkLiAgQQorIyB2YXJp
YWJsZSdzIHZhbHVlIGlzIGVtcHR5IGJlZm9yZSBpdCdzIGV4cGxpY2l0bHkgYXNzaWduZWQgdG8u
CittYWNybyhjb25maWdfY29tcGlsZXJfYW5kX2xpbmtlcikKKyAgaWYgKE5PVCBndGVzdF9kaXNh
YmxlX3B0aHJlYWRzKQorICAgICMgRGVmaW5lcyBDTUFLRV9VU0VfUFRIUkVBRFNfSU5JVCBhbmQg
Q01BS0VfVEhSRUFEX0xJQlNfSU5JVC4KKyAgICBmaW5kX3BhY2thZ2UoVGhyZWFkcykKKyAgZW5k
aWYoKQorCisgIGZpeF9kZWZhdWx0X2NvbXBpbGVyX3NldHRpbmdzXygpCisgIGlmIChNU1ZDKQor
ICAgICMgTmV3bGluZXMgaW5zaWRlIGZsYWdzIHZhcmlhYmxlcyBicmVhayBDTWFrZSdzIE5NYWtl
IGdlbmVyYXRvci4KKyAgICAjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEFkZCAtUlRDcyBhbmQg
LVJUQ3UgdG8gZGVidWcgYnVpbGRzLgorICAgIHNldChjeHhfYmFzZV9mbGFncyAiLUdTIC1XNCAt
V1ggLXdkNDI1MSAtd2Q0Mjc1IC1ub2xvZ28gLUogLVppIikKKyAgICBpZiAoTVNWQ19WRVJTSU9O
IExFU1MgMTQwMCkgICMgMTQwMCBpcyBWaXN1YWwgU3R1ZGlvIDIwMDUKKyAgICAgICMgU3VwcHJl
c3Mgc3B1cmlvdXMgd2FybmluZ3MgTVNWQyA3LjEgc29tZXRpbWVzIGlzc3Vlcy4KKyAgICAgICMg
Rm9yY2luZyB2YWx1ZSB0byBib29sLgorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9i
YXNlX2ZsYWdzfSAtd2Q0ODAwIikKKyAgICAgICMgQ29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdu
bWVudCBvcGVyYXRvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkLgorICAgICAgc2V0KGN4eF9iYXNl
X2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtd2Q0NTExIC13ZDQ1MTIiKQorICAgICAgIyBDb21w
YXRpYmlsaXR5IHdhcm5pbmdzIG5vdCBhcHBsaWNhYmxlIHRvIEdvb2dsZSBUZXN0LgorICAgICAg
IyBSZXNvbHZlZCBvdmVybG9hZCB3YXMgZm91bmQgYnkgYXJndW1lbnQtZGVwZW5kZW50IGxvb2t1
cC4KKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLXdkNDY3NSIp
CisgICAgZW5kaWYoKQorICAgIGlmIChNU1ZDX1ZFUlNJT04gTEVTUyAxNTAwKSAgIyAxNTAwIGlz
IFZpc3VhbCBTdHVkaW8gMjAwOAorICAgICAgIyBDb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNv
bnN0YW50LgorICAgICAgIyBXaGVuIGNvbXBpbGluZyB3aXRoIC9XNCwgd2UgZ2V0IHNldmVyYWwg
aW5zdGFuY2VzIG9mIEM0MTI3CisgICAgICAjIChDb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNv
bnN0YW50KS4gSW4gb3VyIGNvZGUsIHdlIGRpc2FibGUgdGhhdAorICAgICAgIyB3YXJuaW5nIG9u
IGEgY2FzZS1ieS1jYXNlIGJhc2lzLiBIb3dldmVyLCBvbiBWaXN1YWwgU3R1ZGlvIDIwMDUsCisg
ICAgICAjIHRoZSB3YXJuaW5nIGZpcmVzIG9uIHN0ZDo6bGlzdC4gVGhlcmVmb3JlIG9uIHRoYXQg
Y29tcGlsZXIgYW5kIGVhcmxpZXIsCisgICAgICAjIHdlIGRpc2FibGUgdGhlIHdhcm5pbmcgcHJv
amVjdC13aWRlLgorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAt
d2Q0MTI3IikKKyAgICBlbmRpZigpCisgICAgaWYgKE5PVCAoTVNWQ19WRVJTSU9OIExFU1MgMTcw
MCkpICAjIDE3MDAgaXMgVmlzdWFsIFN0dWRpbyAyMDEyLgorICAgICAgIyBTdXBwcmVzcyAidW5y
ZWFjaGFibGUgY29kZSIgd2FybmluZyBvbiBWUyAyMDEyIGFuZCBsYXRlci4KKyAgICAgICMgaHR0
cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMjMyNjY5IGV4cGxhaW5zIHRoZSBpc3N1
ZS4KKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLXdkNDcwMiIp
CisgICAgZW5kaWYoKQorICAgIGlmIChOT1QgKE1TVkNfVkVSU0lPTiBHUkVBVEVSIDE5MDApKSAg
IyAxOTAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxNQorICAgICAgIyBCaWdPYmogcmVxdWlyZWQgZm9y
IHRlc3RzLgorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtYmln
b2JqIikKKyAgICBlbmRpZigpCisKKyAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2Vf
ZmxhZ3N9IC1EX1VOSUNPREUgLURVTklDT0RFIC1EV0lOMzIgLURfV0lOMzIiKQorICAgIHNldChj
eHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLURTVFJJQ1QgLURXSU4zMl9MRUFOX0FO
RF9NRUFOIikKKyAgICBzZXQoY3h4X2V4Y2VwdGlvbl9mbGFncyAiLUVIc2MgLURfSEFTX0VYQ0VQ
VElPTlM9MSIpCisgICAgc2V0KGN4eF9ub19leGNlcHRpb25fZmxhZ3MgIi1EX0hBU19FWENFUFRJ
T05TPTAiKQorICAgIHNldChjeHhfbm9fcnR0aV9mbGFncyAiLUdSLSIpCisgIGVsc2VpZiAoQ01B
S0VfQ09NUElMRVJfSVNfR05VQ1hYKQorICAgIHNldChjeHhfYmFzZV9mbGFncyAiLVdhbGwgLVdz
aGFkb3ciKQorICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICItZmV4Y2VwdGlvbnMiKQorICAg
IHNldChjeHhfbm9fZXhjZXB0aW9uX2ZsYWdzICItZm5vLWV4Y2VwdGlvbnMiKQorICAgICMgVW50
aWwgdmVyc2lvbiA0LjMuMiwgR0NDIGRvZXNuJ3QgZGVmaW5lIGEgbWFjcm8gdG8gaW5kaWNhdGUK
KyAgICAjIHdoZXRoZXIgUlRUSSBpcyBlbmFibGVkLiAgVGhlcmVmb3JlIHdlIGRlZmluZSBHVEVT
VF9IQVNfUlRUSQorICAgICMgZXhwbGljaXRseS4KKyAgICBzZXQoY3h4X25vX3J0dGlfZmxhZ3Mg
Ii1mbm8tcnR0aSAtREdURVNUX0hBU19SVFRJPTAiKQorICAgIHNldChjeHhfc3RyaWN0X2ZsYWdz
CisgICAgICAiLVdleHRyYSAtV25vLXVudXNlZC1wYXJhbWV0ZXIgLVduby1taXNzaW5nLWZpZWxk
LWluaXRpYWxpemVycyIpCisgIGVsc2VpZiAoQ01BS0VfQ1hYX0NPTVBJTEVSX0lEIFNUUkVRVUFM
ICJTdW5Qcm8iKQorICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICItZmVhdHVyZXM9ZXhjZXB0
IikKKyAgICAjIFN1biBQcm8gZG9lc24ndCBwcm92aWRlIG1hY3JvcyB0byBpbmRpY2F0ZSB3aGV0
aGVyIGV4Y2VwdGlvbnMgYW5kCisgICAgIyBSVFRJIGFyZSBlbmFibGVkLCBzbyB3ZSBkZWZpbmUg
R1RFU1RfSEFTXyogZXhwbGljaXRseS4KKyAgICBzZXQoY3h4X25vX2V4Y2VwdGlvbl9mbGFncyAi
LWZlYXR1cmVzPW5vJWV4Y2VwdCAtREdURVNUX0hBU19FWENFUFRJT05TPTAiKQorICAgIHNldChj
eHhfbm9fcnR0aV9mbGFncyAiLWZlYXR1cmVzPW5vJXJ0dGkgLURHVEVTVF9IQVNfUlRUST0wIikK
KyAgZWxzZWlmIChDTUFLRV9DWFhfQ09NUElMRVJfSUQgU1RSRVFVQUwgIlZpc3VhbEFnZSIgT1IK
KyAgICAgIENNQUtFX0NYWF9DT01QSUxFUl9JRCBTVFJFUVVBTCAiWEwiKQorICAgICMgQ01ha2Ug
Mi44IGNoYW5nZXMgVmlzdWFsIEFnZSdzIGNvbXBpbGVyIElEIHRvICJYTCIuCisgICAgc2V0KGN4
eF9leGNlcHRpb25fZmxhZ3MgIi1xZWgiKQorICAgIHNldChjeHhfbm9fZXhjZXB0aW9uX2ZsYWdz
ICItcW5vZWgiKQorICAgICMgVW50aWwgdmVyc2lvbiA5LjAsIFZpc3VhbCBBZ2UgZG9lc24ndCBk
ZWZpbmUgYSBtYWNybyB0byBpbmRpY2F0ZQorICAgICMgd2hldGhlciBSVFRJIGlzIGVuYWJsZWQu
ICBUaGVyZWZvcmUgd2UgZGVmaW5lIEdURVNUX0hBU19SVFRJCisgICAgIyBleHBsaWNpdGx5Lgor
ICAgIHNldChjeHhfbm9fcnR0aV9mbGFncyAiLXFub3J0dGkgLURHVEVTVF9IQVNfUlRUST0wIikK
KyAgZWxzZWlmIChDTUFLRV9DWFhfQ09NUElMRVJfSUQgU1RSRVFVQUwgIkhQIikKKyAgICBzZXQo
Y3h4X2Jhc2VfZmxhZ3MgIi1BQSAtbXQiKQorICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICIt
REdURVNUX0hBU19FWENFUFRJT05TPTEiKQorICAgIHNldChjeHhfbm9fZXhjZXB0aW9uX2ZsYWdz
ICIrbm9laCAtREdURVNUX0hBU19FWENFUFRJT05TPTAiKQorICAgICMgUlRUSSBjYW4gbm90IGJl
IGRpc2FibGVkIGluIEhQIGFDQyBjb21waWxlci4KKyAgICBzZXQoY3h4X25vX3J0dGlfZmxhZ3Mg
IiIpCisgIGVuZGlmKCkKKworICBpZiAoQ01BS0VfVVNFX1BUSFJFQURTX0lOSVQpICAjIFRoZSBw
dGhyZWFkcyBsaWJyYXJ5IGlzIGF2YWlsYWJsZSBhbmQgYWxsb3dlZC4KKyAgICBzZXQoY3h4X2Jh
c2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC1ER1RFU1RfSEFTX1BUSFJFQUQ9MSIpCisgIGVs
c2UoKQorICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLURHVEVTVF9I
QVNfUFRIUkVBRD0wIikKKyAgZW5kaWYoKQorCisgICMgRm9yIGJ1aWxkaW5nIGd0ZXN0J3Mgb3du
IHRlc3RzIGFuZCBzYW1wbGVzLgorICBzZXQoY3h4X2V4Y2VwdGlvbiAiJHtDTUFLRV9DWFhfRkxB
R1N9ICR7Y3h4X2Jhc2VfZmxhZ3N9ICR7Y3h4X2V4Y2VwdGlvbl9mbGFnc30iKQorICBzZXQoY3h4
X25vX2V4Y2VwdGlvbgorICAgICIke0NNQUtFX0NYWF9GTEFHU30gJHtjeHhfYmFzZV9mbGFnc30g
JHtjeHhfbm9fZXhjZXB0aW9uX2ZsYWdzfSIpCisgIHNldChjeHhfZGVmYXVsdCAiJHtjeHhfZXhj
ZXB0aW9ufSIpCisgIHNldChjeHhfbm9fcnR0aSAiJHtjeHhfZGVmYXVsdH0gJHtjeHhfbm9fcnR0
aV9mbGFnc30iKQorICBzZXQoY3h4X3VzZV9vd25fdHVwbGUgIiR7Y3h4X2RlZmF1bHR9IC1ER1RF
U1RfVVNFX09XTl9UUjFfVFVQTEU9MSIpCisKKyAgIyBGb3IgYnVpbGRpbmcgdGhlIGd0ZXN0IGxp
YnJhcmllcy4KKyAgc2V0KGN4eF9zdHJpY3QgIiR7Y3h4X2RlZmF1bHR9ICR7Y3h4X3N0cmljdF9m
bGFnc30iKQorZW5kbWFjcm8oKQorCisjIERlZmluZXMgdGhlIGd0ZXN0ICYgZ3Rlc3RfbWFpbiBs
aWJyYXJpZXMuICBVc2VyIHRlc3RzIHNob3VsZCBsaW5rCisjIHdpdGggb25lIG9mIHRoZW0uCitm
dW5jdGlvbihjeHhfbGlicmFyeV93aXRoX3R5cGUgbmFtZSB0eXBlIGN4eF9mbGFncykKKyAgIyB0
eXBlIGNhbiBiZSBlaXRoZXIgU1RBVElDIG9yIFNIQVJFRCB0byBkZW5vdGUgYSBzdGF0aWMgb3Ig
c2hhcmVkIGxpYnJhcnkuCisgICMgQVJHTiByZWZlcnMgdG8gYWRkaXRpb25hbCBhcmd1bWVudHMg
YWZ0ZXIgJ2N4eF9mbGFncycuCisgIGFkZF9saWJyYXJ5KCR7bmFtZX0gJHt0eXBlfSAke0FSR059
KQorICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtuYW1lfQorICAgIFBST1BFUlRJRVMKKyAgICBD
T01QSUxFX0ZMQUdTICIke2N4eF9mbGFnc30iKQorICBpZiAoQlVJTERfU0hBUkVEX0xJQlMgT1Ig
dHlwZSBTVFJFUVVBTCAiU0hBUkVEIikKKyAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtuYW1l
fQorICAgICAgUFJPUEVSVElFUworICAgICAgQ09NUElMRV9ERUZJTklUSU9OUyAiR1RFU1RfQ1JF
QVRFX1NIQVJFRF9MSUJSQVJZPTEiKQorICBlbmRpZigpCisgIGlmIChDTUFLRV9VU0VfUFRIUkVB
RFNfSU5JVCkKKyAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtuYW1lfSAke0NNQUtFX1RIUkVB
RF9MSUJTX0lOSVR9KQorICBlbmRpZigpCitlbmRmdW5jdGlvbigpCisKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworIworIyBIZWxwZXIgZnVuY3Rpb25zIGZvciBjcmVhdGluZyBidWlsZCB0YXJnZXRzLgorCitm
dW5jdGlvbihjeHhfc2hhcmVkX2xpYnJhcnkgbmFtZSBjeHhfZmxhZ3MpCisgIGN4eF9saWJyYXJ5
X3dpdGhfdHlwZSgke25hbWV9IFNIQVJFRCAiJHtjeHhfZmxhZ3N9IiAke0FSR059KQorZW5kZnVu
Y3Rpb24oKQorCitmdW5jdGlvbihjeHhfbGlicmFyeSBuYW1lIGN4eF9mbGFncykKKyAgY3h4X2xp
YnJhcnlfd2l0aF90eXBlKCR7bmFtZX0gIiIgIiR7Y3h4X2ZsYWdzfSIgJHtBUkdOfSkKK2VuZGZ1
bmN0aW9uKCkKKworIyBjeHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzKG5hbWUgY3h4X2ZsYWdzIGxp
YnMgc3Jjcy4uLikKKyMKKyMgY3JlYXRlcyBhIG5hbWVkIEMrKyBleGVjdXRhYmxlIHRoYXQgZGVw
ZW5kcyBvbiB0aGUgZ2l2ZW4gbGlicmFyaWVzIGFuZAorIyBpcyBidWlsdCBmcm9tIHRoZSBnaXZl
biBzb3VyY2UgZmlsZXMgd2l0aCB0aGUgZ2l2ZW4gY29tcGlsZXIgZmxhZ3MuCitmdW5jdGlvbihj
eHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzIG5hbWUgY3h4X2ZsYWdzIGxpYnMpCisgIGFkZF9leGVj
dXRhYmxlKCR7bmFtZX0gJHtBUkdOfSkKKyAgaWYgKGN4eF9mbGFncykKKyAgICBzZXRfdGFyZ2V0
X3Byb3BlcnRpZXMoJHtuYW1lfQorICAgICAgUFJPUEVSVElFUworICAgICAgQ09NUElMRV9GTEFH
UyAiJHtjeHhfZmxhZ3N9IikKKyAgZW5kaWYoKQorICBpZiAoQlVJTERfU0hBUkVEX0xJQlMpCisg
ICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7bmFtZX0KKyAgICAgIFBST1BFUlRJRVMKKyAgICAg
IENPTVBJTEVfREVGSU5JVElPTlMgIkdURVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFSWT0xIikK
KyAgZW5kaWYoKQorICAjIFRvIHN1cHBvcnQgbWl4aW5nIGxpbmtpbmcgaW4gc3RhdGljIGFuZCBk
eW5hbWljIGxpYnJhcmllcywgbGluayBlYWNoCisgICMgbGlicmFyeSBpbiB3aXRoIGFuIGV4dHJh
IGNhbGwgdG8gdGFyZ2V0X2xpbmtfbGlicmFyaWVzLgorICBmb3JlYWNoIChsaWIgIiR7bGlic30i
KQorICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke25hbWV9ICR7bGlifSkKKyAgZW5kZm9yZWFj
aCgpCitlbmRmdW5jdGlvbigpCisKKyMgY3h4X2V4ZWN1dGFibGUobmFtZSBkaXIgbGliIHNyY3Mu
Li4pCisjCisjIGNyZWF0ZXMgYSBuYW1lZCB0YXJnZXQgdGhhdCBkZXBlbmRzIG9uIHRoZSBnaXZl
biBsaWJzIGFuZCBpcyBidWlsdAorIyBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmlsZXMuICBkaXIv
bmFtZS5jYyBpcyBpbXBsaWNpdGx5IGluY2x1ZGVkIGluCisjIHRoZSBzb3VyY2UgZmlsZSBsaXN0
LgorZnVuY3Rpb24oY3h4X2V4ZWN1dGFibGUgbmFtZSBkaXIgbGlicykKKyAgY3h4X2V4ZWN1dGFi
bGVfd2l0aF9mbGFncygKKyAgICAke25hbWV9ICIke2N4eF9kZWZhdWx0fSIgIiR7bGlic30iICIk
e2Rpcn0vJHtuYW1lfS5jYyIgJHtBUkdOfSkKK2VuZGZ1bmN0aW9uKCkKKworIyBTZXRzIFBZVEhP
TklOVEVSUF9GT1VORCBhbmQgUFlUSE9OX0VYRUNVVEFCTEUuCitmaW5kX3BhY2thZ2UoUHl0aG9u
SW50ZXJwKQorCisjIGN4eF90ZXN0X3dpdGhfZmxhZ3MobmFtZSBjeHhfZmxhZ3MgbGlicyBzcmNz
Li4uKQorIworIyBjcmVhdGVzIGEgbmFtZWQgQysrIHRlc3QgdGhhdCBkZXBlbmRzIG9uIHRoZSBn
aXZlbiBsaWJzIGFuZCBpcyBidWlsdAorIyBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmlsZXMgd2l0
aCB0aGUgZ2l2ZW4gY29tcGlsZXIgZmxhZ3MuCitmdW5jdGlvbihjeHhfdGVzdF93aXRoX2ZsYWdz
IG5hbWUgY3h4X2ZsYWdzIGxpYnMpCisgIGN4eF9leGVjdXRhYmxlX3dpdGhfZmxhZ3MoJHtuYW1l
fSAiJHtjeHhfZmxhZ3N9IiAiJHtsaWJzfSIgJHtBUkdOfSkKKyAgYWRkX3Rlc3QoJHtuYW1lfSAk
e25hbWV9KQorZW5kZnVuY3Rpb24oKQorCisjIGN4eF90ZXN0KG5hbWUgbGlicyBzcmNzLi4uKQor
IworIyBjcmVhdGVzIGEgbmFtZWQgdGVzdCB0YXJnZXQgdGhhdCBkZXBlbmRzIG9uIHRoZSBnaXZl
biBsaWJzIGFuZCBpcworIyBidWlsdCBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmlsZXMuICBVbmxp
a2UgY3h4X3Rlc3Rfd2l0aF9mbGFncywKKyMgdGVzdC9uYW1lLmNjIGlzIGFscmVhZHkgaW1wbGlj
aXRseSBpbmNsdWRlZCBpbiB0aGUgc291cmNlIGZpbGUgbGlzdC4KK2Z1bmN0aW9uKGN4eF90ZXN0
IG5hbWUgbGlicykKKyAgY3h4X3Rlc3Rfd2l0aF9mbGFncygiJHtuYW1lfSIgIiR7Y3h4X2RlZmF1
bHR9IiAiJHtsaWJzfSIKKyAgICAidGVzdC8ke25hbWV9LmNjIiAke0FSR059KQorZW5kZnVuY3Rp
b24oKQorCisjIHB5X3Rlc3QobmFtZSkKKyMKKyMgY3JlYXRlcyBhIFB5dGhvbiB0ZXN0IHdpdGgg
dGhlIGdpdmVuIG5hbWUgd2hvc2UgbWFpbiBtb2R1bGUgaXMgaW4KKyMgdGVzdC9uYW1lLnB5LiAg
SXQgZG9lcyBub3RoaW5nIGlmIFB5dGhvbiBpcyBub3QgaW5zdGFsbGVkLgorZnVuY3Rpb24ocHlf
dGVzdCBuYW1lKQorICAjIFdlIGFyZSBub3Qgc3VwcG9ydGluZyBQeXRob24gdGVzdHMgb24gTGlu
dXggeWV0IGFzIHRoZXkgY29uc2lkZXIKKyAgIyBhbGwgTGludXggZW52aXJvbm1lbnRzIHRvIGJl
IGdvb2dsZTMgYW5kIHRyeSB0byB1c2UgZ29vZ2xlMyBmZWF0dXJlcy4KKyAgaWYgKFBZVEhPTklO
VEVSUF9GT1VORCkKKyAgICAjICR7Q01BS0VfQklOQVJZX0RJUn0gaXMga25vd24gYXQgY29uZmln
dXJhdGlvbiB0aW1lLCBzbyB3ZSBjYW4KKyAgICAjIGRpcmVjdGx5IGJpbmQgaXQgZnJvbSBjbWFr
ZS4gJHtDVEVTVF9DT05GSUdVUkFUSU9OX1RZUEV9IGlzIGtub3duCisgICAgIyBvbmx5IGF0IGN0
ZXN0IHJ1bnRpbWUgKGJ5IGNhbGxpbmcgY3Rlc3QgLWMgPENvbmZpZ3VyYXRpb24+KSwgc28KKyAg
ICAjIHdlIGhhdmUgdG8gZXNjYXBlICQgdG8gZGVsYXkgdmFyaWFibGUgc3Vic3RpdHV0aW9uIGhl
cmUuCisgICAgaWYgKCR7Q01BS0VfTUFKT1JfVkVSU0lPTn0uJHtDTUFLRV9NSU5PUl9WRVJTSU9O
fSBHUkVBVEVSIDMuMSkKKyAgICAgIGFkZF90ZXN0KAorICAgICAgICBOQU1FICR7bmFtZX0KKyAg
ICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNF
X0RJUn0vdGVzdC8ke25hbWV9LnB5CisgICAgICAgICAgICAtLWJ1aWxkX2Rpcj0ke0NNQUtFX0NV
UlJFTlRfQklOQVJZX0RJUn0vJDxDT05GSUdVUkFUSU9OPikKKyAgICBlbHNlICgke0NNQUtFX01B
Sk9SX1ZFUlNJT059LiR7Q01BS0VfTUlOT1JfVkVSU0lPTn0gR1JFQVRFUiAzLjEpCisgICAgICBh
ZGRfdGVzdCgKKyAgICAgICAgJHtuYW1lfQorICAgICAgICAke1BZVEhPTl9FWEVDVVRBQkxFfSAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vdGVzdC8ke25hbWV9LnB5CisgICAgICAgICAgLS1i
dWlsZF9kaXI9JHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L1wke0NURVNUX0NPTkZJR1VSQVRJ
T05fVFlQRX0pCisgICAgZW5kaWYgKCR7Q01BS0VfTUFKT1JfVkVSU0lPTn0uJHtDTUFLRV9NSU5P
Ul9WRVJTSU9OfSBHUkVBVEVSIDMuMSkKKyAgZW5kaWYoKQorZW5kZnVuY3Rpb24oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29kZWdlYXIvZ3Rlc3RfYWxsLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29kZWdlYXIvZ3Rlc3RfYWxsLmNjCmluZGV4IGJhN2FkNjhh
ZDFjYWE1ZmIyMDgzOGM3MDA4OTZhNDE4MmJhNTlkOWYuLjEyMWIyZDgwZTgzZWM3Y2QwZmRmN2Rj
NjcxMjcyZGM1NGY2ZTlmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2Nv
ZGVnZWFyL2d0ZXN0X2FsbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vh
ci9ndGVzdF9hbGwuY2MKQEAgLTEsMzggKzEsMzggQEAKLS8vIENvcHlyaWdodCAyMDA5LCBHb29n
bGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IEpvc2ggS2VsbGV5IChqb3Noa2Vs
QGdtYWlsLmNvbSkKLS8vCi0vLyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUg
VGVzdCkKLS8vCi0vLyBDKytCdWlsZGVyJ3MgSURFIGNhbm5vdCBidWlsZCBhIHN0YXRpYyBsaWJy
YXJ5IGZyb20gZmlsZXMgd2l0aCBoeXBoZW5zCi0vLyBpbiB0aGVpciBuYW1lLiAgU2VlIGh0dHA6
Ly9xYy5jb2RlZ2Vhci5jb20vd2MvcWNtYWluLmFzcHg/ZD03MDk3NyAuCi0vLyBUaGlzIGZpbGUg
c2VydmVzIGFzIGEgd29ya2Fyb3VuZC4KLQotI2luY2x1ZGUgInNyYy9ndGVzdC1hbGwuY2MiCisv
LyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4NCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLg0K
Ky8vDQorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0DQorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQ0KKy8vIG1ldDoNCisvLw0KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0DQorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyDQorLy8g
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQ0KKy8vIGRpc3RyaWJ1dGlvbi4NCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzDQorLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKy8v
DQorLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUw0KKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQNCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQorLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
DQorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZDQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KKy8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuDQorLy8NCisvLyBBdXRob3I6IEpvc2ggS2VsbGV5IChqb3Noa2VsQGdtYWls
LmNvbSkNCisvLw0KKy8vIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0
KQ0KKy8vDQorLy8gQysrQnVpbGRlcidzIElERSBjYW5ub3QgYnVpbGQgYSBzdGF0aWMgbGlicmFy
eSBmcm9tIGZpbGVzIHdpdGggaHlwaGVucw0KKy8vIGluIHRoZWlyIG5hbWUuICBTZWUgaHR0cDov
L3FjLmNvZGVnZWFyLmNvbS93Yy9xY21haW4uYXNweD9kPTcwOTc3IC4NCisvLyBUaGlzIGZpbGUg
c2VydmVzIGFzIGEgd29ya2Fyb3VuZC4NCisNCisjaW5jbHVkZSAic3JjL2d0ZXN0LWFsbC5jYyIN
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9saW5r
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29kZWdlYXIvZ3Rlc3RfbGluay5jYwppbmRl
eCBiOTU1ZWJmMmY5MTEwZTYzNTNjNjg3Y2MzOTQyMzQ4ZGE3OTdjYjUwLi45MThlY2NkMTliN2Rh
ZmEzMmI1MjkzODBiNzA5MjM4YzllM2EzNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9saW5rLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2NvZGVnZWFyL2d0ZXN0X2xpbmsuY2MKQEAgLTEsNDAgKzEsNDAgQEAKLS8vIENvcHlyaWdo
dCAyMDA5LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9u
LgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IEpvc2ggS2Vs
bGV5IChqb3Noa2VsQGdtYWlsLmNvbSkKLS8vCi0vLyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3
b3JrIChHb29nbGUgVGVzdCkKLS8vCi0vLyBMaW5rcyBndGVzdC5saWIgYW5kIGd0ZXN0X21haW4u
bGliIGludG8gdGhlIGN1cnJlbnQgcHJvamVjdCBpbiBDKytCdWlsZGVyLgotLy8gVGhpcyBtZWFu
cyB0aGF0IHRoZXNlIGxpYnJhcmllcyBjYW4ndCBiZSByZW5hbWVkLCBidXQgaXQncyB0aGUgb25s
eSB3YXkgdG8KLS8vIGVuc3VyZSB0aGF0IERlYnVnIHZlcnN1cyBSZWxlYXNlIHRlc3QgYnVpbGRz
IGFyZSBsaW5rZWQgYWdhaW5zdCB0aGUKLS8vIGFwcHJvcHJpYXRlIERlYnVnIG9yIFJlbGVhc2Ug
YnVpbGQgb2YgdGhlIGxpYnJhcmllcy4KLQotI3ByYWdtYSBsaW5rICJndGVzdC5saWIiCi0jcHJh
Z21hIGxpbmsgImd0ZXN0X21haW4ubGliIgorLy8gQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMu
DQorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLw0KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKy8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUNCisvLyBtZXQ6DQorLy8NCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlDQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcg0KKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCisvLyBkaXN0cmlidXRpb24uDQorLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cw0KKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tDQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCisvLw0KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMNCisvLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VA0KKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUg0KKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUDQorLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQor
Ly8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVA0KKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0KKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQ0KKy8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQNCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKy8vDQorLy8gQXV0aG9y
OiBKb3NoIEtlbGxleSAoam9zaGtlbEBnbWFpbC5jb20pDQorLy8NCisvLyBHb29nbGUgQysrIFRl
c3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkNCisvLw0KKy8vIExpbmtzIGd0ZXN0LmxpYiBh
bmQgZ3Rlc3RfbWFpbi5saWIgaW50byB0aGUgY3VycmVudCBwcm9qZWN0IGluIEMrK0J1aWxkZXIu
DQorLy8gVGhpcyBtZWFucyB0aGF0IHRoZXNlIGxpYnJhcmllcyBjYW4ndCBiZSByZW5hbWVkLCBi
dXQgaXQncyB0aGUgb25seSB3YXkgdG8NCisvLyBlbnN1cmUgdGhhdCBEZWJ1ZyB2ZXJzdXMgUmVs
ZWFzZSB0ZXN0IGJ1aWxkcyBhcmUgbGlua2VkIGFnYWluc3QgdGhlDQorLy8gYXBwcm9wcmlhdGUg
RGVidWcgb3IgUmVsZWFzZSBidWlsZCBvZiB0aGUgbGlicmFyaWVzLg0KKw0KKyNwcmFnbWEgbGlu
ayAiZ3Rlc3QubGliIg0KKyNwcmFnbWEgbGluayAiZ3Rlc3RfbWFpbi5saWIiDQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29uZmlndXJlLmFjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvY29uZmlndXJlLmFjCmluZGV4IDFiOTEyMzc0NjFlMzlmZjYxYjYzMGYzZTAxOWFk
ZmVlZWI3ODNhZTYuLmNjNTkyZTE1ODMwMmVkNjkzMzNkYjUwZjc1NTE3ZWViZjg4NjQ3ZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NvbmZpZ3VyZS5hYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9jb25maWd1cmUuYWMKQEAgLTUsMTMgKzUsMTQgQEAgbTRfaW5j
bHVkZShtNC9hY3hfcHRocmVhZC5tNCkKICMgIlsxLjAuMV0iKS4gSXQgYWxzbyBhc3VtZXMgdGhh
dCB0aGVyZSB3b24ndCBiZSBhbnkgY2xvc2luZyBwYXJlbnRoZXNpcwogIyBiZXR3ZWVuICJBQ19J
TklUKCIgYW5kIHRoZSBjbG9zaW5nICIpIiBpbmNsdWRpbmcgY29tbWVudHMgYW5kIHN0cmluZ3Mu
CiBBQ19JTklUKFtHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrXSwKLSAgICAgICAgWzEuNS4w
XSwKKyAgICAgICAgWzEuNy4wXSwKICAgICAgICAgW2dvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xl
Z3JvdXBzLmNvbV0sCiAgICAgICAgIFtndGVzdF0pCiAKICMgUHJvdmlkZSB2YXJpb3VzIG9wdGlv
bnMgdG8gaW5pdGlhbGl6ZSB0aGUgQXV0b2NvbmYgYW5kIGNvbmZpZ3VyZSBwcm9jZXNzZXMuCiBB
Q19QUkVSRVEoWzIuNTldKQotQUNfQ09ORklHX1NSQ0RJUihbLi9DT1BZSU5HXSkKK0FDX0NPTkZJ
R19TUkNESVIoWy4vTElDRU5TRV0pCitBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCiBBQ19DT05G
SUdfQVVYX0RJUihbYnVpbGQtYXV4XSkKIEFDX0NPTkZJR19IRUFERVJTKFtidWlsZC1hdXgvY29u
ZmlnLmhdKQogQUNfQ09ORklHX0ZJTEVTKFtNYWtlZmlsZV0pCkBAIC01NCw3ICs1NSw3IEBAIEFT
X0lGKFt0ZXN0ICJ4JHdpdGhfcHRocmVhZHMiICE9ICJ4bm8iXSwKICAgICAgICAgICAgICAgIFtB
Q19NU0dfRkFJTFVSRSgKICAgICAgICAgICAgICAgICAgWy0td2l0aC1wdGhyZWFkcyB3YXMgc3Bl
Y2lmaWVkLCBidXQgdW5hYmxlIHRvIGJlIHVzZWRdKV0pXSkKICAgICAgICBoYXZlX3B0aHJlYWRz
PSIkYWN4X3B0aHJlYWRfb2siXSkKLUFNX0NPTkRJVElPTkFMKFtIQVZFX1BUSFJFQURTXSxbdGVz
dCAieCRoYXZlX3B0aHJlYWRzIiA9PSAieHllcyJdKQorQU1fQ09ORElUSU9OQUwoW0hBVkVfUFRI
UkVBRFNdLFt0ZXN0ICJ4JGhhdmVfcHRocmVhZHMiID0gInh5ZXMiXSkKIEFDX1NVQlNUKFBUSFJF
QURfQ0ZMQUdTKQogQUNfU1VCU1QoUFRIUkVBRF9MSUJTKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9kb2NzL0FkdmFuY2VkR3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9kb2NzL0FkdmFuY2VkR3VpZGUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTNhNjUyMDBkYWRiMGEz
YmQ4MWQ2Mjk5YjgwMGZhMzg5MDhmNmY5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2RvY3MvQWR2YW5jZWRHdWlkZS5tZApAQCAtMCwwICsxLDIxODIgQEAKKwor
CitOb3cgdGhhdCB5b3UgaGF2ZSByZWFkIFtQcmltZXJdKFByaW1lci5tZCkgYW5kIGxlYXJuZWQg
aG93IHRvIHdyaXRlIHRlc3RzCit1c2luZyBHb29nbGUgVGVzdCwgaXQncyB0aW1lIHRvIGxlYXJu
IHNvbWUgbmV3IHRyaWNrcy4gVGhpcyBkb2N1bWVudAord2lsbCBzaG93IHlvdSBtb3JlIGFzc2Vy
dGlvbnMgYXMgd2VsbCBhcyBob3cgdG8gY29uc3RydWN0IGNvbXBsZXgKK2ZhaWx1cmUgbWVzc2Fn
ZXMsIHByb3BhZ2F0ZSBmYXRhbCBmYWlsdXJlcywgcmV1c2UgYW5kIHNwZWVkIHVwIHlvdXIKK3Rl
c3QgZml4dHVyZXMsIGFuZCB1c2UgdmFyaW91cyBmbGFncyB3aXRoIHlvdXIgdGVzdHMuCisKKyMg
TW9yZSBBc3NlcnRpb25zICMKKworVGhpcyBzZWN0aW9uIGNvdmVycyBzb21lIGxlc3MgZnJlcXVl
bnRseSB1c2VkLCBidXQgc3RpbGwgc2lnbmlmaWNhbnQsCithc3NlcnRpb25zLgorCisjIyBFeHBs
aWNpdCBTdWNjZXNzIGFuZCBGYWlsdXJlICMjCisKK1RoZXNlIHRocmVlIGFzc2VydGlvbnMgZG8g
bm90IGFjdHVhbGx5IHRlc3QgYSB2YWx1ZSBvciBleHByZXNzaW9uLiBJbnN0ZWFkLAordGhleSBn
ZW5lcmF0ZSBhIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBkaXJlY3RseS4gTGlrZSB0aGUgbWFjcm9zIHRo
YXQgYWN0dWFsbHkKK3BlcmZvcm0gYSB0ZXN0LCB5b3UgbWF5IHN0cmVhbSBhIGN1c3RvbSBmYWls
dXJlIG1lc3NhZ2UgaW50byB0aGUgdGhlbS4KKworfCBgU1VDQ0VFRCgpO2AgfAorfDotLS0tLS0t
LS0tLS0tfAorCitHZW5lcmF0ZXMgYSBzdWNjZXNzLiBUaGlzIGRvZXMgTk9UIG1ha2UgdGhlIG92
ZXJhbGwgdGVzdCBzdWNjZWVkLiBBIHRlc3QgaXMKK2NvbnNpZGVyZWQgc3VjY2Vzc2Z1bCBvbmx5
IGlmIG5vbmUgb2YgaXRzIGFzc2VydGlvbnMgZmFpbCBkdXJpbmcgaXRzIGV4ZWN1dGlvbi4KKwor
Tm90ZTogYFNVQ0NFRUQoKWAgaXMgcHVyZWx5IGRvY3VtZW50YXJ5IGFuZCBjdXJyZW50bHkgZG9l
c24ndCBnZW5lcmF0ZSBhbnkKK3VzZXItdmlzaWJsZSBvdXRwdXQuIEhvd2V2ZXIsIHdlIG1heSBh
ZGQgYFNVQ0NFRUQoKWAgbWVzc2FnZXMgdG8gR29vZ2xlIFRlc3Qncworb3V0cHV0IGluIHRoZSBm
dXR1cmUuCisKK3wgYEZBSUwoKTtgICB8IGBBRERfRkFJTFVSRSgpO2AgfCBgQUREX0ZBSUxVUkVf
QVQoImBfZmlsZVxfcGF0aF9gIiwgYF9saW5lXF9udW1iZXJfYCk7YCB8Cit8Oi0tLS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfAorCitgRkFJTCgpYCBnZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJl
LCB3aGlsZSBgQUREX0ZBSUxVUkUoKWAgYW5kIGBBRERfRkFJTFVSRV9BVCgpYCBnZW5lcmF0ZSBh
IG5vbmZhdGFsCitmYWlsdXJlLiBUaGVzZSBhcmUgdXNlZnVsIHdoZW4gY29udHJvbCBmbG93LCBy
YXRoZXIgdGhhbiBhIEJvb2xlYW4gZXhwcmVzc2lvbiwKK2RldGVyZW1pbmVzIHRoZSB0ZXN0J3Mg
c3VjY2VzcyBvciBmYWlsdXJlLiBGb3IgZXhhbXBsZSwgeW91IG1pZ2h0IHdhbnQgdG8gd3JpdGUK
K3NvbWV0aGluZyBsaWtlOgorCitgYGAKK3N3aXRjaChleHByZXNzaW9uKSB7CisgIGNhc2UgMTog
Li4uIHNvbWUgY2hlY2tzIC4uLgorICBjYXNlIDI6IC4uLiBzb21lIG90aGVyIGNoZWNrcworICAu
Li4KKyAgZGVmYXVsdDogRkFJTCgpIDw8ICJXZSBzaG91bGRuJ3QgZ2V0IGhlcmUuIjsKK30KK2Bg
YAorCitOb3RlOiB5b3UgY2FuIG9ubHkgdXNlIGBGQUlMKClgIGluIGZ1bmN0aW9ucyB0aGF0IHJl
dHVybiBgdm9pZGAuIFNlZSB0aGUgW0Fzc2VydGlvbiBQbGFjZW1lbnQgc2VjdGlvbl0oI2Fzc2Vy
dGlvbi1wbGFjZW1lbnQpIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCitfQXZhaWxhYmlsaXR5Xzog
TGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgRXhjZXB0aW9uIEFzc2VydGlvbnMgIyMKKworVGhl
c2UgYXJlIGZvciB2ZXJpZnlpbmcgdGhhdCBhIHBpZWNlIG9mIGNvZGUgdGhyb3dzIChvciBkb2Vz
IG5vdAordGhyb3cpIGFuIGV4Y2VwdGlvbiBvZiB0aGUgZ2l2ZW4gdHlwZToKKworfCAqKkZhdGFs
IGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0t
LS0tLXwKK3wgYEFTU0VSVF9USFJPVyhgX3N0YXRlbWVudF8sIF9leGNlcHRpb25cX3R5cGVfYCk7
YCAgfCBgRVhQRUNUX1RIUk9XKGBfc3RhdGVtZW50XywgX2V4Y2VwdGlvblxfdHlwZV9gKTtgICB8
IF9zdGF0ZW1lbnRfIHRocm93cyBhbiBleGNlcHRpb24gb2YgdGhlIGdpdmVuIHR5cGUgIHwKK3wg
YEFTU0VSVF9BTllfVEhST1coYF9zdGF0ZW1lbnRfYCk7YCAgICAgICAgICAgICAgICB8IGBFWFBF
Q1RfQU5ZX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAgfCBfc3RhdGVtZW50
XyB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIGFueSB0eXBlICAgICAgICB8Cit8IGBBU1NFUlRfTk9f
VEhST1coYF9zdGF0ZW1lbnRfYCk7YCAgICAgICAgICAgICAgICAgfCBgRVhQRUNUX05PX1RIUk9X
KGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAgIHwgX3N0YXRlbWVudF8gZG9lc24ndCB0
aHJvdyBhbnkgZXhjZXB0aW9uICAgICAgICAgICAgfAorCitFeGFtcGxlczoKKworYGBgCitBU1NF
UlRfVEhST1coRm9vKDUpLCBiYXJfZXhjZXB0aW9uKTsKKworRVhQRUNUX05PX1RIUk9XKHsKKyAg
aW50IG4gPSA1OworICBCYXIoJm4pOworfSk7CitgYGAKKworX0F2YWlsYWJpbGl0eV86IExpbnV4
LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4xLjAuCisKKyMjIFByZWRpY2F0ZSBBc3Nl
cnRpb25zIGZvciBCZXR0ZXIgRXJyb3IgTWVzc2FnZXMgIyMKKworRXZlbiB0aG91Z2ggR29vZ2xl
IFRlc3QgaGFzIGEgcmljaCBzZXQgb2YgYXNzZXJ0aW9ucywgdGhleSBjYW4gbmV2ZXIgYmUKK2Nv
bXBsZXRlLCBhcyBpdCdzIGltcG9zc2libGUgKG5vciBhIGdvb2QgaWRlYSkgdG8gYW50aWNpcGF0
ZSBhbGwgdGhlIHNjZW5hcmlvcworYSB1c2VyIG1pZ2h0IHJ1biBpbnRvLiBUaGVyZWZvcmUsIHNv
bWV0aW1lcyBhIHVzZXIgaGFzIHRvIHVzZSBgRVhQRUNUX1RSVUUoKWAKK3RvIGNoZWNrIGEgY29t
cGxleCBleHByZXNzaW9uLCBmb3IgbGFjayBvZiBhIGJldHRlciBtYWNyby4gVGhpcyBoYXMgdGhl
IHByb2JsZW0KK29mIG5vdCBzaG93aW5nIHlvdSB0aGUgdmFsdWVzIG9mIHRoZSBwYXJ0cyBvZiB0
aGUgZXhwcmVzc2lvbiwgbWFraW5nIGl0IGhhcmQgdG8KK3VuZGVyc3RhbmQgd2hhdCB3ZW50IHdy
b25nLiBBcyBhIHdvcmthcm91bmQsIHNvbWUgdXNlcnMgY2hvb3NlIHRvIGNvbnN0cnVjdCB0aGUK
K2ZhaWx1cmUgbWVzc2FnZSBieSB0aGVtc2VsdmVzLCBzdHJlYW1pbmcgaXQgaW50byBgRVhQRUNU
X1RSVUUoKWAuIEhvd2V2ZXIsIHRoaXMKK2lzIGF3a3dhcmQgZXNwZWNpYWxseSB3aGVuIHRoZSBl
eHByZXNzaW9uIGhhcyBzaWRlLWVmZmVjdHMgb3IgaXMgZXhwZW5zaXZlIHRvCitldmFsdWF0ZS4K
KworR29vZ2xlIFRlc3QgZ2l2ZXMgeW91IHRocmVlIGRpZmZlcmVudCBvcHRpb25zIHRvIHNvbHZl
IHRoaXMgcHJvYmxlbToKKworIyMjIFVzaW5nIGFuIEV4aXN0aW5nIEJvb2xlYW4gRnVuY3Rpb24g
IyMjCisKK0lmIHlvdSBhbHJlYWR5IGhhdmUgYSBmdW5jdGlvbiBvciBhIGZ1bmN0b3IgdGhhdCBy
ZXR1cm5zIGBib29sYCAob3IgYSB0eXBlCit0aGF0IGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRl
ZCB0byBgYm9vbGApLCB5b3UgY2FuIHVzZSBpdCBpbiBhIF9wcmVkaWNhdGUKK2Fzc2VydGlvbl8g
dG8gZ2V0IHRoZSBmdW5jdGlvbiBhcmd1bWVudHMgcHJpbnRlZCBmb3IgZnJlZToKKworfCAqKkZh
dGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8
Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLXwKK3wgYEFTU0VSVF9QUkVEMShgX3ByZWQxLCB2YWwxX2ApO2AgICAgICAgfCBgRVhQ
RUNUX1BSRUQxKGBfcHJlZDEsIHZhbDFfYCk7YCB8IF9wcmVkMSh2YWwxKV8gcmV0dXJucyB0cnVl
IHwKK3wgYEFTU0VSVF9QUkVEMihgX3ByZWQyLCB2YWwxLCB2YWwyX2ApO2AgfCBgRVhQRUNUX1BS
RUQyKGBfcHJlZDIsIHZhbDEsIHZhbDJfYCk7YCB8ICBfcHJlZDIodmFsMSwgdmFsMilfIHJldHVy
bnMgdHJ1ZSB8Cit8ICAuLi4gICAgICAgICAgICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAg
IHwgLi4uICAgICAgICAgIHwKKworSW4gdGhlIGFib3ZlLCBfcHJlZG5fIGlzIGFuIF9uXy1hcnkg
cHJlZGljYXRlIGZ1bmN0aW9uIG9yIGZ1bmN0b3IsIHdoZXJlCitfdmFsMV8sIF92YWwyXywgLi4u
LCBhbmQgX3ZhbG5fIGFyZSBpdHMgYXJndW1lbnRzLiBUaGUgYXNzZXJ0aW9uIHN1Y2NlZWRzCitp
ZiB0aGUgcHJlZGljYXRlIHJldHVybnMgYHRydWVgIHdoZW4gYXBwbGllZCB0byB0aGUgZ2l2ZW4g
YXJndW1lbnRzLCBhbmQgZmFpbHMKK290aGVyd2lzZS4gV2hlbiB0aGUgYXNzZXJ0aW9uIGZhaWxz
LCBpdCBwcmludHMgdGhlIHZhbHVlIG9mIGVhY2ggYXJndW1lbnQuIEluCitlaXRoZXIgY2FzZSwg
dGhlIGFyZ3VtZW50cyBhcmUgZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4KKworSGVyZSdzIGFuIGV4
YW1wbGUuIEdpdmVuCisKK2BgYAorLy8gUmV0dXJucyB0cnVlIGlmZiBtIGFuZCBuIGhhdmUgbm8g
Y29tbW9uIGRpdmlzb3JzIGV4Y2VwdCAxLgorYm9vbCBNdXR1YWxseVByaW1lKGludCBtLCBpbnQg
bikgeyAuLi4gfQorY29uc3QgaW50IGEgPSAzOworY29uc3QgaW50IGIgPSA0OworY29uc3QgaW50
IGMgPSAxMDsKK2BgYAorCit0aGUgYXNzZXJ0aW9uIGBFWFBFQ1RfUFJFRDIoTXV0dWFsbHlQcmlt
ZSwgYSwgYik7YCB3aWxsIHN1Y2NlZWQsIHdoaWxlIHRoZQorYXNzZXJ0aW9uIGBFWFBFQ1RfUFJF
RDIoTXV0dWFsbHlQcmltZSwgYiwgYyk7YCB3aWxsIGZhaWwgd2l0aCB0aGUgbWVzc2FnZQorCis8
cHJlPgorIU11dHVhbGx5UHJpbWUoYiwgYykgaXMgZmFsc2UsIHdoZXJlPGJyPgorYiBpcyA0PGJy
PgorYyBpcyAxMDxicj4KKzwvcHJlPgorCisqKk5vdGVzOioqCisKKyAgMS4gSWYgeW91IHNlZSBh
IGNvbXBpbGVyIGVycm9yICJubyBtYXRjaGluZyBmdW5jdGlvbiB0byBjYWxsIiB3aGVuIHVzaW5n
IGBBU1NFUlRfUFJFRCpgIG9yIGBFWFBFQ1RfUFJFRCpgLCBwbGVhc2Ugc2VlIFt0aGlzIEZBUV0o
RkFRLm1kI3RoZS1jb21waWxlci1jb21wbGFpbnMtbm8tbWF0Y2hpbmctZnVuY3Rpb24tdG8tY2Fs
bC13aGVuLWktdXNlLWFzc2VydF9wcmVkbi1ob3ctZG8taS1maXgtaXQpIGZvciBob3cgdG8gcmVz
b2x2ZSBpdC4KKyAgMS4gQ3VycmVudGx5IHdlIG9ubHkgcHJvdmlkZSBwcmVkaWNhdGUgYXNzZXJ0
aW9ucyBvZiBhcml0eSA8PSA1LiBJZiB5b3UgbmVlZCBhIGhpZ2hlci1hcml0eSBhc3NlcnRpb24s
IGxldCB1cyBrbm93LgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYworCisj
IyMgVXNpbmcgYSBGdW5jdGlvbiBUaGF0IFJldHVybnMgYW4gQXNzZXJ0aW9uUmVzdWx0ICMjIwor
CitXaGlsZSBgRVhQRUNUX1BSRUQqKClgIGFuZCBmcmllbmRzIGFyZSBoYW5keSBmb3IgYSBxdWlj
ayBqb2IsIHRoZQorc3ludGF4IGlzIG5vdCBzYXRpc2ZhY3Rvcnk6IHlvdSBoYXZlIHRvIHVzZSBk
aWZmZXJlbnQgbWFjcm9zIGZvcgorZGlmZmVyZW50IGFyaXRpZXMsIGFuZCBpdCBmZWVscyBtb3Jl
IGxpa2UgTGlzcCB0aGFuIEMrKy4gIFRoZQorYDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0YCBj
bGFzcyBzb2x2ZXMgdGhpcyBwcm9ibGVtLgorCitBbiBgQXNzZXJ0aW9uUmVzdWx0YCBvYmplY3Qg
cmVwcmVzZW50cyB0aGUgcmVzdWx0IG9mIGFuIGFzc2VydGlvbgorKHdoZXRoZXIgaXQncyBhIHN1
Y2Nlc3Mgb3IgYSBmYWlsdXJlLCBhbmQgYW4gYXNzb2NpYXRlZCBtZXNzYWdlKS4gIFlvdQorY2Fu
IGNyZWF0ZSBhbiBgQXNzZXJ0aW9uUmVzdWx0YCB1c2luZyBvbmUgb2YgdGhlc2UgZmFjdG9yeQor
ZnVuY3Rpb25zOgorCitgYGAKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworLy8gUmV0dXJucyBhbiBB
c3NlcnRpb25SZXN1bHQgb2JqZWN0IHRvIGluZGljYXRlIHRoYXQgYW4gYXNzZXJ0aW9uIGhhcwor
Ly8gc3VjY2VlZGVkLgorQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvblN1Y2Nlc3MoKTsKKworLy8g
UmV0dXJucyBhbiBBc3NlcnRpb25SZXN1bHQgb2JqZWN0IHRvIGluZGljYXRlIHRoYXQgYW4gYXNz
ZXJ0aW9uIGhhcworLy8gZmFpbGVkLgorQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvbkZhaWx1cmUo
KTsKKworfQorYGBgCisKK1lvdSBjYW4gdGhlbiB1c2UgdGhlIGA8PGAgb3BlcmF0b3IgdG8gc3Ry
ZWFtIG1lc3NhZ2VzIHRvIHRoZQorYEFzc2VydGlvblJlc3VsdGAgb2JqZWN0LgorCitUbyBwcm92
aWRlIG1vcmUgcmVhZGFibGUgbWVzc2FnZXMgaW4gQm9vbGVhbiBhc3NlcnRpb25zCisoZS5nLiBg
RVhQRUNUX1RSVUUoKWApLCB3cml0ZSBhIHByZWRpY2F0ZSBmdW5jdGlvbiB0aGF0IHJldHVybnMK
K2BBc3NlcnRpb25SZXN1bHRgIGluc3RlYWQgb2YgYGJvb2xgLiBGb3IgZXhhbXBsZSwgaWYgeW91
IGRlZmluZQorYElzRXZlbigpYCBhczoKKworYGBgCis6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3Vs
dCBJc0V2ZW4oaW50IG4pIHsKKyAgaWYgKChuICUgMikgPT0gMCkKKyAgICByZXR1cm4gOjp0ZXN0
aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CisgIGVsc2UKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjpB
c3NlcnRpb25GYWlsdXJlKCkgPDwgbiA8PCAiIGlzIG9kZCI7Cit9CitgYGAKKworaW5zdGVhZCBv
ZjoKKworYGBgCitib29sIElzRXZlbihpbnQgbikgeworICByZXR1cm4gKG4gJSAyKSA9PSAwOwor
fQorYGBgCisKK3RoZSBmYWlsZWQgYXNzZXJ0aW9uIGBFWFBFQ1RfVFJVRShJc0V2ZW4oRmliKDQp
KSlgIHdpbGwgcHJpbnQ6CisKKzxwcmU+CitWYWx1ZSBvZjogSXNFdmVuKEZpYig0KSk8YnI+CitB
Y3R1YWw6IGZhbHNlICgqMyBpcyBvZGQqKTxicj4KK0V4cGVjdGVkOiB0cnVlPGJyPgorPC9wcmU+
CisKK2luc3RlYWQgb2YgYSBtb3JlIG9wYXF1ZQorCis8cHJlPgorVmFsdWUgb2Y6IElzRXZlbihG
aWIoNCkpPGJyPgorQWN0dWFsOiBmYWxzZTxicj4KK0V4cGVjdGVkOiB0cnVlPGJyPgorPC9wcmU+
CisKK0lmIHlvdSB3YW50IGluZm9ybWF0aXZlIG1lc3NhZ2VzIGluIGBFWFBFQ1RfRkFMU0VgIGFu
ZCBgQVNTRVJUX0ZBTFNFYAorYXMgd2VsbCwgYW5kIGFyZSBmaW5lIHdpdGggbWFraW5nIHRoZSBw
cmVkaWNhdGUgc2xvd2VyIGluIHRoZSBzdWNjZXNzCitjYXNlLCB5b3UgY2FuIHN1cHBseSBhIHN1
Y2Nlc3MgbWVzc2FnZToKKworYGBgCis6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBJc0V2ZW4o
aW50IG4pIHsKKyAgaWYgKChuICUgMikgPT0gMCkKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3Nl
cnRpb25TdWNjZXNzKCkgPDwgbiA8PCAiIGlzIGV2ZW4iOworICBlbHNlCisgICAgcmV0dXJuIDo6
dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG4gPDwgIiBpcyBvZGQiOworfQorYGBgCisK
K1RoZW4gdGhlIHN0YXRlbWVudCBgRVhQRUNUX0ZBTFNFKElzRXZlbihGaWIoNikpKWAgd2lsbCBw
cmludAorCis8cHJlPgorVmFsdWUgb2Y6IElzRXZlbihGaWIoNikpPGJyPgorQWN0dWFsOiB0cnVl
ICg4IGlzIGV2ZW4pPGJyPgorRXhwZWN0ZWQ6IGZhbHNlPGJyPgorPC9wcmU+CisKK19BdmFpbGFi
aWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuNC4xLgorCisjIyMg
VXNpbmcgYSBQcmVkaWNhdGUtRm9ybWF0dGVyICMjIworCitJZiB5b3UgZmluZCB0aGUgZGVmYXVs
dCBtZXNzYWdlIGdlbmVyYXRlZCBieSBgKEFTU0VSVHxFWFBFQ1QpX1BSRUQqYCBhbmQKK2AoQVNT
RVJUfEVYUEVDVClfKFRSVUV8RkFMU0UpYCB1bnNhdGlzZmFjdG9yeSwgb3Igc29tZSBhcmd1bWVu
dHMgdG8geW91cgorcHJlZGljYXRlIGRvIG5vdCBzdXBwb3J0IHN0cmVhbWluZyB0byBgb3N0cmVh
bWAsIHlvdSBjYW4gaW5zdGVhZCB1c2UgdGhlCitmb2xsb3dpbmcgX3ByZWRpY2F0ZS1mb3JtYXR0
ZXIgYXNzZXJ0aW9uc18gdG8gX2Z1bGx5XyBjdXN0b21pemUgaG93IHRoZQorbWVzc2FnZSBpcyBm
b3JtYXR0ZWQ6CisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9u
KiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfUFJFRF9GT1JNQVQxKGBfcHJl
ZFxfZm9ybWF0MSwgdmFsMV9gKTtgICAgICAgICB8IGBFWFBFQ1RfUFJFRF9GT1JNQVQxKGBfcHJl
ZFxfZm9ybWF0MSwgdmFsMV9gKTtgIHwgX3ByZWRcX2Zvcm1hdDEodmFsMSlfIGlzIHN1Y2Nlc3Nm
dWwgfAorfCBgQVNTRVJUX1BSRURfRk9STUFUMihgX3ByZWRcX2Zvcm1hdDIsIHZhbDEsIHZhbDJf
YCk7YCB8IGBFWFBFQ1RfUFJFRF9GT1JNQVQyKGBfcHJlZFxfZm9ybWF0MiwgdmFsMSwgdmFsMl9g
KTtgIHwgX3ByZWRcX2Zvcm1hdDIodmFsMSwgdmFsMilfIGlzIHN1Y2Nlc3NmdWwgfAorfCBgLi4u
YCAgICAgICAgICAgICAgIHwgYC4uLmAgICAgICAgICAgICAgICAgICB8IGAuLi5gICAgICAgICB8
CisKK1RoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBhbmQgdGhlIHByZXZpb3VzIHR3byBncm91
cHMgb2YgbWFjcm9zIGlzIHRoYXQgaW5zdGVhZCBvZgorYSBwcmVkaWNhdGUsIGAoQVNTRVJUfEVY
UEVDVClfUFJFRF9GT1JNQVQqYCB0YWtlIGEgX3ByZWRpY2F0ZS1mb3JtYXR0ZXJfCisoX3ByZWRc
X2Zvcm1hdG5fKSwgd2hpY2ggaXMgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHdpdGggdGhlIHNpZ25h
dHVyZToKKworYDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRpY2F0ZUZvcm1hdHRlcm4o
Y29uc3QgY2hhciogYF9leHByMV9gLCBjb25zdCBjaGFyKiBgX2V4cHIyX2AsIC4uLiBjb25zdCBj
aGFyKiBgX2V4cHJuX2AsIFQxIGBfdmFsMV9gLCBUMiBgX3ZhbDJfYCwgLi4uIFRuIGBfdmFsbl9g
KTtgCisKK3doZXJlIF92YWwxXywgX3ZhbDJfLCAuLi4sIGFuZCBfdmFsbl8gYXJlIHRoZSB2YWx1
ZXMgb2YgdGhlIHByZWRpY2F0ZQorYXJndW1lbnRzLCBhbmQgX2V4cHIxXywgX2V4cHIyXywgLi4u
LCBhbmQgX2V4cHJuXyBhcmUgdGhlIGNvcnJlc3BvbmRpbmcKK2V4cHJlc3Npb25zIGFzIHRoZXkg
YXBwZWFyIGluIHRoZSBzb3VyY2UgY29kZS4gVGhlIHR5cGVzIGBUMWAsIGBUMmAsIC4uLiwgYW5k
CitgVG5gIGNhbiBiZSBlaXRoZXIgdmFsdWUgdHlwZXMgb3IgcmVmZXJlbmNlIHR5cGVzLiBGb3Ig
ZXhhbXBsZSwgaWYgYW4KK2FyZ3VtZW50IGhhcyB0eXBlIGBGb29gLCB5b3UgY2FuIGRlY2xhcmUg
aXQgYXMgZWl0aGVyIGBGb29gIG9yIGBjb25zdCBGb28mYCwKK3doaWNoZXZlciBpcyBhcHByb3By
aWF0ZS4KKworQSBwcmVkaWNhdGUtZm9ybWF0dGVyIHJldHVybnMgYSBgOjp0ZXN0aW5nOjpBc3Nl
cnRpb25SZXN1bHRgIG9iamVjdCB0byBpbmRpY2F0ZQord2hldGhlciB0aGUgYXNzZXJ0aW9uIGhh
cyBzdWNjZWVkZWQgb3Igbm90LiBUaGUgb25seSB3YXkgdG8gY3JlYXRlIHN1Y2ggYW4KK29iamVj
dCBpcyB0byBjYWxsIG9uZSBvZiB0aGVzZSBmYWN0b3J5IGZ1bmN0aW9uczoKKworQXMgYW4gZXhh
bXBsZSwgbGV0J3MgaW1wcm92ZSB0aGUgZmFpbHVyZSBtZXNzYWdlIGluIHRoZSBwcmV2aW91cyBl
eGFtcGxlLCB3aGljaCB1c2VzIGBFWFBFQ1RfUFJFRDIoKWA6CisKK2BgYAorLy8gUmV0dXJucyB0
aGUgc21hbGxlc3QgcHJpbWUgY29tbW9uIGRpdmlzb3Igb2YgbSBhbmQgbiwKKy8vIG9yIDEgd2hl
biBtIGFuZCBuIGFyZSBtdXR1YWxseSBwcmltZS4KK2ludCBTbWFsbGVzdFByaW1lQ29tbW9uRGl2
aXNvcihpbnQgbSwgaW50IG4pIHsgLi4uIH0KKworLy8gQSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZv
ciBhc3NlcnRpbmcgdGhhdCB0d28gaW50ZWdlcnMgYXJlIG11dHVhbGx5IHByaW1lLgorOjp0ZXN0
aW5nOjpBc3NlcnRpb25SZXN1bHQgQXNzZXJ0TXV0dWFsbHlQcmltZShjb25zdCBjaGFyKiBtX2V4
cHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIG5fZXhwciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IG0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBuKSB7CisgIGlmIChNdXR1YWxseVByaW1lKG0sIG4pKQorICAgIHJldHVybiA6OnRl
c3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKKworICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRp
b25GYWlsdXJlKCkKKyAgICAgIDw8IG1fZXhwciA8PCAiIGFuZCAiIDw8IG5fZXhwciA8PCAiICgi
IDw8IG0gPDwgIiBhbmQgIiA8PCBuCisgICAgICA8PCAiKSBhcmUgbm90IG11dHVhbGx5IHByaW1l
LCAiIDw8ICJhcyB0aGV5IGhhdmUgYSBjb21tb24gZGl2aXNvciAiCisgICAgICA8PCBTbWFsbGVz
dFByaW1lQ29tbW9uRGl2aXNvcihtLCBuKTsKK30KK2BgYAorCitXaXRoIHRoaXMgcHJlZGljYXRl
LWZvcm1hdHRlciwgd2UgY2FuIHVzZQorCitgYGAKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoQXNzZXJ0
TXV0dWFsbHlQcmltZSwgYiwgYyk7CitgYGAKKwordG8gZ2VuZXJhdGUgdGhlIG1lc3NhZ2UKKwor
PHByZT4KK2IgYW5kIGMgKDQgYW5kIDEwKSBhcmUgbm90IG11dHVhbGx5IHByaW1lLCBhcyB0aGV5
IGhhdmUgYSBjb21tb24gZGl2aXNvciAyLjxicj4KKzwvcHJlPgorCitBcyB5b3UgbWF5IGhhdmUg
cmVhbGl6ZWQsIG1hbnkgb2YgdGhlIGFzc2VydGlvbnMgd2UgaW50cm9kdWNlZCBlYXJsaWVyIGFy
ZQorc3BlY2lhbCBjYXNlcyBvZiBgKEVYUEVDVHxBU1NFUlQpX1BSRURfRk9STUFUKmAuIEluIGZh
Y3QsIG1vc3Qgb2YgdGhlbSBhcmUKK2luZGVlZCBkZWZpbmVkIHVzaW5nIGAoRVhQRUNUfEFTU0VS
VClfUFJFRF9GT1JNQVQqYC4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKKworIyMgRmxvYXRpbmctUG9pbnQgQ29tcGFyaXNvbiAjIworCitDb21wYXJpbmcgZmxvYXRp
bmctcG9pbnQgbnVtYmVycyBpcyB0cmlja3kuIER1ZSB0byByb3VuZC1vZmYgZXJyb3JzLCBpdCBp
cwordmVyeSB1bmxpa2VseSB0aGF0IHR3byBmbG9hdGluZy1wb2ludHMgd2lsbCBtYXRjaCBleGFj
dGx5LiBUaGVyZWZvcmUsCitgQVNTRVJUX0VRYCAncyBuYWl2ZSBjb21wYXJpc29uIHVzdWFsbHkg
ZG9lc24ndCB3b3JrLiBBbmQgc2luY2UgZmxvYXRpbmctcG9pbnRzCitjYW4gaGF2ZSBhIHdpZGUg
dmFsdWUgcmFuZ2UsIG5vIHNpbmdsZSBmaXhlZCBlcnJvciBib3VuZCB3b3Jrcy4gSXQncyBiZXR0
ZXIgdG8KK2NvbXBhcmUgYnkgYSBmaXhlZCByZWxhdGl2ZSBlcnJvciBib3VuZCwgZXhjZXB0IGZv
ciB2YWx1ZXMgY2xvc2UgdG8gMCBkdWUgdG8KK3RoZSBsb3NzIG9mIHByZWNpc2lvbiB0aGVyZS4K
KworSW4gZ2VuZXJhbCwgZm9yIGZsb2F0aW5nLXBvaW50IGNvbXBhcmlzb24gdG8gbWFrZSBzZW5z
ZSwgdGhlIHVzZXIgbmVlZHMgdG8KK2NhcmVmdWxseSBjaG9vc2UgdGhlIGVycm9yIGJvdW5kLiBJ
ZiB0aGV5IGRvbid0IHdhbnQgb3IgY2FyZSB0bywgY29tcGFyaW5nIGluCit0ZXJtcyBvZiBVbml0
cyBpbiB0aGUgTGFzdCBQbGFjZSAoVUxQcykgaXMgYSBnb29kIGRlZmF1bHQsIGFuZCBHb29nbGUg
VGVzdAorcHJvdmlkZXMgYXNzZXJ0aW9ucyB0byBkbyB0aGlzLiBGdWxsIGRldGFpbHMgYWJvdXQg
VUxQcyBhcmUgcXVpdGUgbG9uZzsgaWYgeW91Cit3YW50IHRvIGxlYXJuIG1vcmUsIHNlZQorW3Ro
aXMgYXJ0aWNsZSBvbiBmbG9hdCBjb21wYXJpc29uXShodHRwOi8vd3d3LmN5Z251cy1zb2Z0d2Fy
ZS5jb20vcGFwZXJzL2NvbXBhcmluZ2Zsb2F0cy9jb21wYXJpbmdmbG9hdHMuaHRtKS4KKworIyMj
IEZsb2F0aW5nLVBvaW50IE1hY3JvcyAjIyMKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipO
b25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9G
TE9BVF9FUShgX3ZhbDEsIHZhbDJfYCk7YCAgfCBgRVhQRUNUX0ZMT0FUX0VRKGBfdmFsMSwgdmFs
Ml9gKTtgIHwgdGhlIHR3byBgZmxvYXRgIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsIHwKK3wgYEFT
U0VSVF9ET1VCTEVfRVEoYF92YWwxLCB2YWwyX2ApO2AgfCBgRVhQRUNUX0RPVUJMRV9FUShgX3Zh
bDEsIHZhbDJfYCk7YCB8IHRoZSB0d28gYGRvdWJsZWAgdmFsdWVzIGFyZSBhbG1vc3QgZXF1YWwg
fAorCitCeSAiYWxtb3N0IGVxdWFsIiwgd2UgbWVhbiB0aGUgdHdvIHZhbHVlcyBhcmUgd2l0aGlu
IDQgVUxQJ3MgZnJvbSBlYWNoCitvdGhlci4KKworVGhlIGZvbGxvd2luZyBhc3NlcnRpb25zIGFs
bG93IHlvdSB0byBjaG9vc2UgdGhlIGFjY2VwdGFibGUgZXJyb3IgYm91bmQ6CisKK3wgKipGYXRh
bCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAor
fDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS18Cit8IGBBU1NFUlRfTkVBUihgX3ZhbDEsIHZhbDIsIGFic1xfZXJyb3JfYCk7YCB8IGBF
WFBFQ1RfTkVBUmBfKHZhbDEsIHZhbDIsIGFic1xfZXJyb3JfYCk7YCB8IHRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gX3ZhbDFfIGFuZCBfdmFsMl8gZG9lc24ndCBleGNlZWQgdGhlIGdpdmVuIGFic29s
dXRlIGVycm9yIHwKKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMj
IyBGbG9hdGluZy1Qb2ludCBQcmVkaWNhdGUtRm9ybWF0IEZ1bmN0aW9ucyAjIyMKKworU29tZSBm
bG9hdGluZy1wb2ludCBvcGVyYXRpb25zIGFyZSB1c2VmdWwsIGJ1dCBub3QgdGhhdCBvZnRlbiB1
c2VkLiBJbiBvcmRlcgordG8gYXZvaWQgYW4gZXhwbG9zaW9uIG9mIG5ldyBtYWNyb3MsIHdlIHBy
b3ZpZGUgdGhlbSBhcyBwcmVkaWNhdGUtZm9ybWF0CitmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNl
ZCBpbiBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3JvcyAoZS5nLgorYEVYUEVDVF9QUkVEX0ZPUk1B
VDJgLCBldGMpLgorCitgYGAKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpGbG9hdExF
LCB2YWwxLCB2YWwyKTsKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpEb3VibGVMRSwg
dmFsMSwgdmFsMik7CitgYGAKKworVmVyaWZpZXMgdGhhdCBfdmFsMV8gaXMgbGVzcyB0aGFuLCBv
ciBhbG1vc3QgZXF1YWwgdG8sIF92YWwyXy4gWW91IGNhbgorcmVwbGFjZSBgRVhQRUNUX1BSRURf
Rk9STUFUMmAgaW4gdGhlIGFib3ZlIHRhYmxlIHdpdGggYEFTU0VSVF9QUkVEX0ZPUk1BVDJgLgor
CitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgV2luZG93cyBIUkVT
VUxUIGFzc2VydGlvbnMgIyMKKworVGhlc2UgYXNzZXJ0aW9ucyB0ZXN0IGZvciBgSFJFU1VMVGAg
c3VjY2VzcyBvciBmYWlsdXJlLgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFs
IGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX0hSRVNVTFRf
U1VDQ0VFREVEKGBfZXhwcmVzc2lvbl9gKTtgIHwgYEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChg
X2V4cHJlc3Npb25fYCk7YCB8IF9leHByZXNzaW9uXyBpcyBhIHN1Y2Nlc3MgYEhSRVNVTFRgIHwK
K3wgYEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChgX2V4cHJlc3Npb25fYCk7YCAgICB8IGBFWFBFQ1Rf
SFJFU1VMVF9GQUlMRUQoYF9leHByZXNzaW9uX2ApO2AgICAgfCBfZXhwcmVzc2lvbl8gaXMgYSBm
YWlsdXJlIGBIUkVTVUxUYCB8CisKK1RoZSBnZW5lcmF0ZWQgb3V0cHV0IGNvbnRhaW5zIHRoZSBo
dW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlCithc3NvY2lhdGVkIHdpdGggdGhlIGBIUkVTVUxU
YCBjb2RlIHJldHVybmVkIGJ5IF9leHByZXNzaW9uXy4KKworWW91IG1pZ2h0IHVzZSB0aGVtIGxp
a2UgdGhpczoKKworYGBgCitDQ29tUHRyIHNoZWxsOworQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVE
KHNoZWxsLkNvQ3JlYXRlSW5zdGFuY2UoTCJTaGVsbC5BcHBsaWNhdGlvbiIpKTsKK0NDb21WYXJp
YW50IGVtcHR5OworQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKHNoZWxsLT5TaGVsbEV4ZWN1dGUo
Q0NvbUJTVFIodXJsKSwgZW1wdHksIGVtcHR5LCBlbXB0eSwgZW1wdHkpKTsKK2BgYAorCitfQXZh
aWxhYmlsaXR5XzogV2luZG93cy4KKworIyMgVHlwZSBBc3NlcnRpb25zICMjCisKK1lvdSBjYW4g
Y2FsbCB0aGUgZnVuY3Rpb24KK2BgYAorOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8VDEs
IFQyPigpOworYGBgCit0byBhc3NlcnQgdGhhdCB0eXBlcyBgVDFgIGFuZCBgVDJgIGFyZSB0aGUg
c2FtZS4gIFRoZSBmdW5jdGlvbiBkb2VzCitub3RoaW5nIGlmIHRoZSBhc3NlcnRpb24gaXMgc2F0
aXNmaWVkLiAgSWYgdGhlIHR5cGVzIGFyZSBkaWZmZXJlbnQsCit0aGUgZnVuY3Rpb24gY2FsbCB3
aWxsIGZhaWwgdG8gY29tcGlsZSwgYW5kIHRoZSBjb21waWxlciBlcnJvciBtZXNzYWdlCit3aWxs
IGxpa2VseSAoZGVwZW5kaW5nIG9uIHRoZSBjb21waWxlcikgc2hvdyB5b3UgdGhlIGFjdHVhbCB2
YWx1ZXMgb2YKK2BUMWAgYW5kIGBUMmAuICBUaGlzIGlzIG1haW5seSB1c2VmdWwgaW5zaWRlIHRl
bXBsYXRlIGNvZGUuCisKK19DYXZlYXQ6XyBXaGVuIHVzZWQgaW5zaWRlIGEgbWVtYmVyIGZ1bmN0
aW9uIG9mIGEgY2xhc3MgdGVtcGxhdGUgb3IgYQorZnVuY3Rpb24gdGVtcGxhdGUsIGBTdGF0aWNB
c3NlcnRUeXBlRXE8VDEsIFQyPigpYCBpcyBlZmZlY3RpdmUgX29ubHkgaWZfCit0aGUgZnVuY3Rp
b24gaXMgaW5zdGFudGlhdGVkLiAgRm9yIGV4YW1wbGUsIGdpdmVuOgorYGBgCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MgRm9vIHsKKyBwdWJsaWM6CisgIHZvaWQgQmFyKCkgeyA6OnRlc3Rp
bmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIFQ+KCk7IH0KK307CitgYGAKK3RoZSBjb2RlOgor
YGBgCit2b2lkIFRlc3QxKCkgeyBGb288Ym9vbD4gZm9vOyB9CitgYGAKK3dpbGwgX25vdF8gZ2Vu
ZXJhdGUgYSBjb21waWxlciBlcnJvciwgYXMgYEZvbzxib29sPjo6QmFyKClgIGlzIG5ldmVyCith
Y3R1YWxseSBpbnN0YW50aWF0ZWQuICBJbnN0ZWFkLCB5b3UgbmVlZDoKK2BgYAordm9pZCBUZXN0
MigpIHsgRm9vPGJvb2w+IGZvbzsgZm9vLkJhcigpOyB9CitgYGAKK3RvIGNhdXNlIGEgY29tcGls
ZXIgZXJyb3IuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2
ZXJzaW9uIDEuMy4wLgorCisjIyBBc3NlcnRpb24gUGxhY2VtZW50ICMjCisKK1lvdSBjYW4gdXNl
IGFzc2VydGlvbnMgaW4gYW55IEMrKyBmdW5jdGlvbi4gSW4gcGFydGljdWxhciwgaXQgZG9lc24n
dAoraGF2ZSB0byBiZSBhIG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLiBUaGUgb25l
IGNvbnN0cmFpbnQgaXMKK3RoYXQgYXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIGEgZmF0YWwgZmFp
bHVyZSAoYEZBSUwqYCBhbmQgYEFTU0VSVF8qYCkKK2NhbiBvbmx5IGJlIHVzZWQgaW4gdm9pZC1y
ZXR1cm5pbmcgZnVuY3Rpb25zLiBUaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2YKK0dvb2dsZSBUZXN0
IG5vdCB1c2luZyBleGNlcHRpb25zLiBCeSBwbGFjaW5nIGl0IGluIGEgbm9uLXZvaWQgZnVuY3Rp
b24KK3lvdSdsbCBnZXQgYSBjb25mdXNpbmcgY29tcGlsZSBlcnJvciBsaWtlCitgImVycm9yOiB2
b2lkIHZhbHVlIG5vdCBpZ25vcmVkIGFzIGl0IG91Z2h0IHRvIGJlImAuCisKK0lmIHlvdSBuZWVk
IHRvIHVzZSBhc3NlcnRpb25zIGluIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIG5vbi12b2lkLCBv
bmUgb3B0aW9uCitpcyB0byBtYWtlIHRoZSBmdW5jdGlvbiByZXR1cm4gdGhlIHZhbHVlIGluIGFu
IG91dCBwYXJhbWV0ZXIgaW5zdGVhZC4gRm9yCitleGFtcGxlLCB5b3UgY2FuIHJld3JpdGUgYFQy
IEZvbyhUMSB4KWAgdG8gYHZvaWQgRm9vKFQxIHgsIFQyKiByZXN1bHQpYC4gWW91CituZWVkIHRv
IG1ha2Ugc3VyZSB0aGF0IGAqcmVzdWx0YCBjb250YWlucyBzb21lIHNlbnNpYmxlIHZhbHVlIGV2
ZW4gd2hlbiB0aGUKK2Z1bmN0aW9uIHJldHVybnMgcHJlbWF0dXJlbHkuIEFzIHRoZSBmdW5jdGlv
biBub3cgcmV0dXJucyBgdm9pZGAsIHlvdSBjYW4gdXNlCithbnkgYXNzZXJ0aW9uIGluc2lkZSBv
ZiBpdC4KKworSWYgY2hhbmdpbmcgdGhlIGZ1bmN0aW9uJ3MgdHlwZSBpcyBub3QgYW4gb3B0aW9u
LCB5b3Ugc2hvdWxkIGp1c3QgdXNlCithc3NlcnRpb25zIHRoYXQgZ2VuZXJhdGUgbm9uLWZhdGFs
IGZhaWx1cmVzLCBzdWNoIGFzIGBBRERfRkFJTFVSRSpgIGFuZAorYEVYUEVDVF8qYC4KKworX05v
dGVfOiBDb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzIGFyZSBub3QgY29uc2lkZXJlZCB2b2lk
LXJldHVybmluZworZnVuY3Rpb25zLCBhY2NvcmRpbmcgdG8gdGhlIEMrKyBsYW5ndWFnZSBzcGVj
aWZpY2F0aW9uLCBhbmQgc28geW91IG1heSBub3QgdXNlCitmYXRhbCBhc3NlcnRpb25zIGluIHRo
ZW0uIFlvdSdsbCBnZXQgYSBjb21waWxhdGlvbiBlcnJvciBpZiB5b3UgdHJ5LiBBIHNpbXBsZQor
d29ya2Fyb3VuZCBpcyB0byB0cmFuc2ZlciB0aGUgZW50aXJlIGJvZHkgb2YgdGhlIGNvbnN0cnVj
dG9yIG9yIGRlc3RydWN0b3IgdG8gYQorcHJpdmF0ZSB2b2lkLXJldHVybmluZyBtZXRob2QuIEhv
d2V2ZXIsIHlvdSBzaG91bGQgYmUgYXdhcmUgdGhhdCBhIGZhdGFsCithc3NlcnRpb24gZmFpbHVy
ZSBpbiBhIGNvbnN0cnVjdG9yIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUgY3VycmVudCB0ZXN0LCBh
cyB5b3VyCitpbnR1aXRpb24gbWlnaHQgc3VnZ2VzdDsgaXQgbWVyZWx5IHJldHVybnMgZnJvbSB0
aGUgY29uc3RydWN0b3IgZWFybHksIHBvc3NpYmx5CitsZWF2aW5nIHlvdXIgb2JqZWN0IGluIGEg
cGFydGlhbGx5LWNvbnN0cnVjdGVkIHN0YXRlLiBMaWtld2lzZSwgYSBmYXRhbAorYXNzZXJ0aW9u
IGZhaWx1cmUgaW4gYSBkZXN0cnVjdG9yIG1heSBsZWF2ZSB5b3VyIG9iamVjdCBpbiBhCitwYXJ0
aWFsbHktZGVzdHJ1Y3RlZCBzdGF0ZS4gVXNlIGFzc2VydGlvbnMgY2FyZWZ1bGx5IGluIHRoZXNl
IHNpdHVhdGlvbnMhCisKKyMgVGVhY2hpbmcgR29vZ2xlIFRlc3QgSG93IHRvIFByaW50IFlvdXIg
VmFsdWVzICMKKworV2hlbiBhIHRlc3QgYXNzZXJ0aW9uIHN1Y2ggYXMgYEVYUEVDVF9FUWAgZmFp
bHMsIEdvb2dsZSBUZXN0IHByaW50cyB0aGUKK2FyZ3VtZW50IHZhbHVlcyB0byBoZWxwIHlvdSBk
ZWJ1Zy4gIEl0IGRvZXMgdGhpcyB1c2luZyBhCit1c2VyLWV4dGVuc2libGUgdmFsdWUgcHJpbnRl
ci4KKworVGhpcyBwcmludGVyIGtub3dzIGhvdyB0byBwcmludCBidWlsdC1pbiBDKysgdHlwZXMs
IG5hdGl2ZSBhcnJheXMsIFNUTAorY29udGFpbmVycywgYW5kIGFueSB0eXBlIHRoYXQgc3VwcG9y
dHMgdGhlIGA8PGAgb3BlcmF0b3IuICBGb3Igb3RoZXIKK3R5cGVzLCBpdCBwcmludHMgdGhlIHJh
dyBieXRlcyBpbiB0aGUgdmFsdWUgYW5kIGhvcGVzIHRoYXQgeW91IHRoZQordXNlciBjYW4gZmln
dXJlIGl0IG91dC4KKworQXMgbWVudGlvbmVkIGVhcmxpZXIsIHRoZSBwcmludGVyIGlzIF9leHRl
bnNpYmxlXy4gIFRoYXQgbWVhbnMKK3lvdSBjYW4gdGVhY2ggaXQgdG8gZG8gYSBiZXR0ZXIgam9i
IGF0IHByaW50aW5nIHlvdXIgcGFydGljdWxhciB0eXBlCit0aGFuIHRvIGR1bXAgdGhlIGJ5dGVz
LiAgVG8gZG8gdGhhdCwgZGVmaW5lIGA8PGAgZm9yIHlvdXIgdHlwZToKKworYGBgCisjaW5jbHVk
ZSA8aW9zdHJlYW0+CisKK25hbWVzcGFjZSBmb28geworCitjbGFzcyBCYXIgeyAuLi4gfTsgIC8v
IFdlIHdhbnQgR29vZ2xlIFRlc3QgdG8gYmUgYWJsZSB0byBwcmludCBpbnN0YW5jZXMgb2YgdGhp
cy4KKworLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB0aGUgPDwgb3BlcmF0b3IgaXMgZGVmaW5lZCBp
biB0aGUgU0FNRQorLy8gbmFtZXNwYWNlIHRoYXQgZGVmaW5lcyBCYXIuICBDKysncyBsb29rLXVw
IHJ1bGVzIHJlbHkgb24gdGhhdC4KKzo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpv
c3RyZWFtJiBvcywgY29uc3QgQmFyJiBiYXIpIHsKKyAgcmV0dXJuIG9zIDw8IGJhci5EZWJ1Z1N0
cmluZygpOyAgLy8gd2hhdGV2ZXIgbmVlZGVkIHRvIHByaW50IGJhciB0byBvcworfQorCit9ICAv
LyBuYW1lc3BhY2UgZm9vCitgYGAKKworU29tZXRpbWVzLCB0aGlzIG1pZ2h0IG5vdCBiZSBhbiBv
cHRpb246IHlvdXIgdGVhbSBtYXkgY29uc2lkZXIgaXQgYmFkCitzdHlsZSB0byBoYXZlIGEgYDw8
YCBvcGVyYXRvciBmb3IgYEJhcmAsIG9yIGBCYXJgIG1heSBhbHJlYWR5IGhhdmUgYQorYDw8YCBv
cGVyYXRvciB0aGF0IGRvZXNuJ3QgZG8gd2hhdCB5b3Ugd2FudCAoYW5kIHlvdSBjYW5ub3QgY2hh
bmdlCitpdCkuICBJZiBzbywgeW91IGNhbiBpbnN0ZWFkIGRlZmluZSBhIGBQcmludFRvKClgIGZ1
bmN0aW9uIGxpa2UgdGhpczoKKworYGBgCisjaW5jbHVkZSA8aW9zdHJlYW0+CisKK25hbWVzcGFj
ZSBmb28geworCitjbGFzcyBCYXIgeyAuLi4gfTsKKworLy8gSXQncyBpbXBvcnRhbnQgdGhhdCBQ
cmludFRvKCkgaXMgZGVmaW5lZCBpbiB0aGUgU0FNRQorLy8gbmFtZXNwYWNlIHRoYXQgZGVmaW5l
cyBCYXIuICBDKysncyBsb29rLXVwIHJ1bGVzIHJlbHkgb24gdGhhdC4KK3ZvaWQgUHJpbnRUbyhj
b25zdCBCYXImIGJhciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCBiYXIuRGVidWdT
dHJpbmcoKTsgIC8vIHdoYXRldmVyIG5lZWRlZCB0byBwcmludCBiYXIgdG8gb3MKK30KKworfSAg
Ly8gbmFtZXNwYWNlIGZvbworYGBgCisKK0lmIHlvdSBoYXZlIGRlZmluZWQgYm90aCBgPDxgIGFu
ZCBgUHJpbnRUbygpYCwgdGhlIGxhdHRlciB3aWxsIGJlIHVzZWQKK3doZW4gR29vZ2xlIFRlc3Qg
aXMgY29uY2VybmVkLiAgVGhpcyBhbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSBob3cgdGhlIHZhbHVl
CithcHBlYXJzIGluIEdvb2dsZSBUZXN0J3Mgb3V0cHV0IHdpdGhvdXQgYWZmZWN0aW5nIGNvZGUg
dGhhdCByZWxpZXMgb24gdGhlCitiZWhhdmlvciBvZiBpdHMgYDw8YCBvcGVyYXRvci4KKworSWYg
eW91IHdhbnQgdG8gcHJpbnQgYSB2YWx1ZSBgeGAgdXNpbmcgR29vZ2xlIFRlc3QncyB2YWx1ZSBw
cmludGVyCit5b3Vyc2VsZiwganVzdCBjYWxsIGA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoYF94
X2ApYCwgd2hpY2gKK3JldHVybnMgYW4gYHN0ZDo6c3RyaW5nYDoKKworYGBgCit2ZWN0b3I8cGFp
cjxCYXIsIGludD4gPiBiYXJfaW50cyA9IEdldEJhckludFZlY3RvcigpOworCitFWFBFQ1RfVFJV
RShJc0NvcnJlY3RCYXJJbnRWZWN0b3IoYmFyX2ludHMpKQorICAgIDw8ICJiYXJfaW50cyA9ICIg
PDwgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGJhcl9pbnRzKTsKK2BgYAorCisjIERlYXRoIFRl
c3RzICMKKworSW4gbWFueSBhcHBsaWNhdGlvbnMsIHRoZXJlIGFyZSBhc3NlcnRpb25zIHRoYXQg
Y2FuIGNhdXNlIGFwcGxpY2F0aW9uIGZhaWx1cmUKK2lmIGEgY29uZGl0aW9uIGlzIG5vdCBtZXQu
IFRoZXNlIHNhbml0eSBjaGVja3MsIHdoaWNoIGVuc3VyZSB0aGF0IHRoZSBwcm9ncmFtCitpcyBp
biBhIGtub3duIGdvb2Qgc3RhdGUsIGFyZSB0aGVyZSB0byBmYWlsIGF0IHRoZSBlYXJsaWVzdCBw
b3NzaWJsZSB0aW1lIGFmdGVyCitzb21lIHByb2dyYW0gc3RhdGUgaXMgY29ycnVwdGVkLiBJZiB0
aGUgYXNzZXJ0aW9uIGNoZWNrcyB0aGUgd3JvbmcgY29uZGl0aW9uLAordGhlbiB0aGUgcHJvZ3Jh
bSBtYXkgcHJvY2VlZCBpbiBhbiBlcnJvbmVvdXMgc3RhdGUsIHdoaWNoIGNvdWxkIGxlYWQgdG8g
bWVtb3J5Citjb3JydXB0aW9uLCBzZWN1cml0eSBob2xlcywgb3Igd29yc2UuIEhlbmNlIGl0IGlz
IHZpdGFsbHkgaW1wb3J0YW50IHRvIHRlc3QKK3RoYXQgc3VjaCBhc3NlcnRpb24gc3RhdGVtZW50
cyB3b3JrIGFzIGV4cGVjdGVkLgorCitTaW5jZSB0aGVzZSBwcmVjb25kaXRpb24gY2hlY2tzIGNh
dXNlIHRoZSBwcm9jZXNzZXMgdG8gZGllLCB3ZSBjYWxsIHN1Y2ggdGVzdHMKK19kZWF0aCB0ZXN0
c18uIE1vcmUgZ2VuZXJhbGx5LCBhbnkgdGVzdCB0aGF0IGNoZWNrcyB0aGF0IGEgcHJvZ3JhbSB0
ZXJtaW5hdGVzCisoZXhjZXB0IGJ5IHRocm93aW5nIGFuIGV4Y2VwdGlvbikgaW4gYW4gZXhwZWN0
ZWQgZmFzaGlvbiBpcyBhbHNvIGEgZGVhdGggdGVzdC4KKworTm90ZSB0aGF0IGlmIGEgcGllY2Ug
b2YgY29kZSB0aHJvd3MgYW4gZXhjZXB0aW9uLCB3ZSBkb24ndCBjb25zaWRlciBpdCAiZGVhdGgi
Citmb3IgdGhlIHB1cnBvc2Ugb2YgZGVhdGggdGVzdHMsIGFzIHRoZSBjYWxsZXIgb2YgdGhlIGNv
ZGUgY291bGQgY2F0Y2ggdGhlIGV4Y2VwdGlvbgorYW5kIGF2b2lkIHRoZSBjcmFzaC4gSWYgeW91
IHdhbnQgdG8gdmVyaWZ5IGV4Y2VwdGlvbnMgdGhyb3duIGJ5IHlvdXIgY29kZSwKK3NlZSBbRXhj
ZXB0aW9uIEFzc2VydGlvbnNdKCNleGNlcHRpb24tYXNzZXJ0aW9ucykuCisKK0lmIHlvdSB3YW50
IHRvIHRlc3QgYEVYUEVDVF8qKCkvQVNTRVJUXyooKWAgZmFpbHVyZXMgaW4geW91ciB0ZXN0IGNv
ZGUsIHNlZSBbQ2F0Y2hpbmcgRmFpbHVyZXNdKCNjYXRjaGluZy1mYWlsdXJlcykuCisKKyMjIEhv
dyB0byBXcml0ZSBhIERlYXRoIFRlc3QgIyMKKworR29vZ2xlIFRlc3QgaGFzIHRoZSBmb2xsb3dp
bmcgbWFjcm9zIHRvIHN1cHBvcnQgZGVhdGggdGVzdHM6CisKK3wgKipGYXRhbCBhc3NlcnRpb24q
KiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0t
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBB
U1NFUlRfREVBVEgoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApO2AgfCBgRVhQRUNUX0RFQVRIKGBfc3Rh
dGVtZW50LCByZWdleF9gKTtgIHwgX3N0YXRlbWVudF8gY3Jhc2hlcyB3aXRoIHRoZSBnaXZlbiBl
cnJvciB8Cit8IGBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKGBfc3RhdGVtZW50LCByZWdleF9g
KTtgIHwgYEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApO2Ag
fCBpZiBkZWF0aCB0ZXN0cyBhcmUgc3VwcG9ydGVkLCB2ZXJpZmllcyB0aGF0IF9zdGF0ZW1lbnRf
IGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3I7IG90aGVyd2lzZSB2ZXJpZmllcyBub3RoaW5n
IHwKK3wgYEFTU0VSVF9FWElUKGBfc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4X2ApO2AgfCBg
RVhQRUNUX0VYSVQoYF9zdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXhfYCk7YCB8X3N0YXRlbWVu
dF8gZXhpdHMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3IgYW5kIGl0cyBleGl0IGNvZGUgbWF0Y2hlcyBf
cHJlZGljYXRlXyB8CisKK3doZXJlIF9zdGF0ZW1lbnRfIGlzIGEgc3RhdGVtZW50IHRoYXQgaXMg
ZXhwZWN0ZWQgdG8gY2F1c2UgdGhlIHByb2Nlc3MgdG8KK2RpZSwgX3ByZWRpY2F0ZV8gaXMgYSBm
dW5jdGlvbiBvciBmdW5jdGlvbiBvYmplY3QgdGhhdCBldmFsdWF0ZXMgYW4gaW50ZWdlcgorZXhp
dCBzdGF0dXMsIGFuZCBfcmVnZXhfIGlzIGEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgdGhlIHN0
ZGVyciBvdXRwdXQgb2YKK19zdGF0ZW1lbnRfIGlzIGV4cGVjdGVkIHRvIG1hdGNoLiBOb3RlIHRo
YXQgX3N0YXRlbWVudF8gY2FuIGJlIF9hbnkgdmFsaWQKK3N0YXRlbWVudF8gKGluY2x1ZGluZyBf
Y29tcG91bmQgc3RhdGVtZW50XykgYW5kIGRvZXNuJ3QgaGF2ZSB0byBiZSBhbgorZXhwcmVzc2lv
bi4KKworQXMgdXN1YWwsIHRoZSBgQVNTRVJUYCB2YXJpYW50cyBhYm9ydCB0aGUgY3VycmVudCB0
ZXN0IGZ1bmN0aW9uLCB3aGlsZSB0aGUKK2BFWFBFQ1RgIHZhcmlhbnRzIGRvIG5vdC4KKworKipO
b3RlOioqIFdlIHVzZSB0aGUgd29yZCAiY3Jhc2giIGhlcmUgdG8gbWVhbiB0aGF0IHRoZSBwcm9j
ZXNzCit0ZXJtaW5hdGVzIHdpdGggYSBfbm9uLXplcm9fIGV4aXQgc3RhdHVzIGNvZGUuICBUaGVy
ZSBhcmUgdHdvCitwb3NzaWJpbGl0aWVzOiBlaXRoZXIgdGhlIHByb2Nlc3MgaGFzIGNhbGxlZCBg
ZXhpdCgpYCBvciBgX2V4aXQoKWAKK3dpdGggYSBub24temVybyB2YWx1ZSwgb3IgaXQgbWF5IGJl
IGtpbGxlZCBieSBhIHNpZ25hbC4KKworVGhpcyBtZWFucyB0aGF0IGlmIF9zdGF0ZW1lbnRfIHRl
cm1pbmF0ZXMgdGhlIHByb2Nlc3Mgd2l0aCBhIDAgZXhpdAorY29kZSwgaXQgaXMgX25vdF8gY29u
c2lkZXJlZCBhIGNyYXNoIGJ5IGBFWFBFQ1RfREVBVEhgLiAgVXNlCitgRVhQRUNUX0VYSVRgIGlu
c3RlYWQgaWYgdGhpcyBpcyB0aGUgY2FzZSwgb3IgaWYgeW91IHdhbnQgdG8gcmVzdHJpY3QKK3Ro
ZSBleGl0IGNvZGUgbW9yZSBwcmVjaXNlbHkuCisKK0EgcHJlZGljYXRlIGhlcmUgbXVzdCBhY2Nl
cHQgYW4gYGludGAgYW5kIHJldHVybiBhIGBib29sYC4gVGhlIGRlYXRoIHRlc3QKK3N1Y2NlZWRz
IG9ubHkgaWYgdGhlIHByZWRpY2F0ZSByZXR1cm5zIGB0cnVlYC4gR29vZ2xlIFRlc3QgZGVmaW5l
cyBhIGZldworcHJlZGljYXRlcyB0aGF0IGhhbmRsZSB0aGUgbW9zdCBjb21tb24gY2FzZXM6CisK
K2BgYAorOjp0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZShleGl0X2NvZGUpCitgYGAKKworVGhpcyBl
eHByZXNzaW9uIGlzIGB0cnVlYCBpZiB0aGUgcHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHkgd2l0aCB0
aGUgZ2l2ZW4gZXhpdAorY29kZS4KKworYGBgCis6OnRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKHNp
Z25hbF9udW1iZXIpICAvLyBOb3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCitgYGAKKworVGhpcyBl
eHByZXNzaW9uIGlzIGB0cnVlYCBpZiB0aGUgcHJvZ3JhbSB3YXMga2lsbGVkIGJ5IHRoZSBnaXZl
biBzaWduYWwuCisKK1RoZSBgKl9ERUFUSGAgbWFjcm9zIGFyZSBjb252ZW5pZW50IHdyYXBwZXJz
IGZvciBgKl9FWElUYCB0aGF0IHVzZSBhIHByZWRpY2F0ZQordGhhdCB2ZXJpZmllcyB0aGUgcHJv
Y2VzcycgZXhpdCBjb2RlIGlzIG5vbi16ZXJvLgorCitOb3RlIHRoYXQgYSBkZWF0aCB0ZXN0IG9u
bHkgY2FyZXMgYWJvdXQgdGhyZWUgdGhpbmdzOgorCisgIDEuIGRvZXMgX3N0YXRlbWVudF8gYWJv
cnQgb3IgZXhpdCB0aGUgcHJvY2Vzcz8KKyAgMS4gKGluIHRoZSBjYXNlIG9mIGBBU1NFUlRfRVhJ
VGAgYW5kIGBFWFBFQ1RfRVhJVGApIGRvZXMgdGhlIGV4aXQgc3RhdHVzIHNhdGlzZnkgX3ByZWRp
Y2F0ZV8/ICBPciAoaW4gdGhlIGNhc2Ugb2YgYEFTU0VSVF9ERUFUSGAgYW5kIGBFWFBFQ1RfREVB
VEhgKSBpcyB0aGUgZXhpdCBzdGF0dXMgbm9uLXplcm8/ICBBbmQKKyAgMS4gZG9lcyB0aGUgc3Rk
ZXJyIG91dHB1dCBtYXRjaCBfcmVnZXhfPworCitJbiBwYXJ0aWN1bGFyLCBpZiBfc3RhdGVtZW50
XyBnZW5lcmF0ZXMgYW4gYEFTU0VSVF8qYCBvciBgRVhQRUNUXypgIGZhaWx1cmUsIGl0IHdpbGwg
Kipub3QqKiBjYXVzZSB0aGUgZGVhdGggdGVzdCB0byBmYWlsLCBhcyBHb29nbGUgVGVzdCBhc3Nl
cnRpb25zIGRvbid0IGFib3J0IHRoZSBwcm9jZXNzLgorCitUbyB3cml0ZSBhIGRlYXRoIHRlc3Qs
IHNpbXBseSB1c2Ugb25lIG9mIHRoZSBhYm92ZSBtYWNyb3MgaW5zaWRlIHlvdXIgdGVzdAorZnVu
Y3Rpb24uIEZvciBleGFtcGxlLAorCitgYGAKK1RFU1QoTXlEZWF0aFRlc3QsIEZvbykgeworICAv
LyBUaGlzIGRlYXRoIHRlc3QgdXNlcyBhIGNvbXBvdW5kIHN0YXRlbWVudC4KKyAgQVNTRVJUX0RF
QVRIKHsgaW50IG4gPSA1OyBGb28oJm4pOyB9LCAiRXJyb3Igb24gbGluZSAuKiBvZiBGb28oKSIp
OworfQorVEVTVChNeURlYXRoVGVzdCwgTm9ybWFsRXhpdCkgeworICBFWFBFQ1RfRVhJVChOb3Jt
YWxFeGl0KCksIDo6dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCksICJTdWNjZXNzIik7Cit9CitU
RVNUKE15RGVhdGhUZXN0LCBLaWxsTXlzZWxmKSB7CisgIEVYUEVDVF9FWElUKEtpbGxNeXNlbGYo
KSwgOjp0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChTSUdLSUxMKSwgIlNlbmRpbmcgbXlzZWxmIHVu
YmxvY2thYmxlIHNpZ25hbCIpOworfQorYGBgCisKK3ZlcmlmaWVzIHRoYXQ6CisKKyAgKiBjYWxs
aW5nIGBGb28oNSlgIGNhdXNlcyB0aGUgcHJvY2VzcyB0byBkaWUgd2l0aCB0aGUgZ2l2ZW4gZXJy
b3IgbWVzc2FnZSwKKyAgKiBjYWxsaW5nIGBOb3JtYWxFeGl0KClgIGNhdXNlcyB0aGUgcHJvY2Vz
cyB0byBwcmludCBgIlN1Y2Nlc3MiYCB0byBzdGRlcnIgYW5kIGV4aXQgd2l0aCBleGl0IGNvZGUg
MCwgYW5kCisgICogY2FsbGluZyBgS2lsbE15c2VsZigpYCBraWxscyB0aGUgcHJvY2VzcyB3aXRo
IHNpZ25hbCBgU0lHS0lMTGAuCisKK1RoZSB0ZXN0IGZ1bmN0aW9uIGJvZHkgbWF5IGNvbnRhaW4g
b3RoZXIgYXNzZXJ0aW9ucyBhbmQgc3RhdGVtZW50cyBhcyB3ZWxsLCBpZgorbmVjZXNzYXJ5Lgor
CitfSW1wb3J0YW50Ol8gV2Ugc3Ryb25nbHkgcmVjb21tZW5kIHlvdSB0byBmb2xsb3cgdGhlIGNv
bnZlbnRpb24gb2YgbmFtaW5nIHlvdXIKK3Rlc3QgY2FzZSAobm90IHRlc3QpIGAqRGVhdGhUZXN0
YCB3aGVuIGl0IGNvbnRhaW5zIGEgZGVhdGggdGVzdCwgYXMKK2RlbW9uc3RyYXRlZCBpbiB0aGUg
YWJvdmUgZXhhbXBsZS4gVGhlIGBEZWF0aCBUZXN0cyBBbmQgVGhyZWFkc2Agc2VjdGlvbiBiZWxv
dworZXhwbGFpbnMgd2h5LgorCitJZiBhIHRlc3QgZml4dHVyZSBjbGFzcyBpcyBzaGFyZWQgYnkg
bm9ybWFsIHRlc3RzIGFuZCBkZWF0aCB0ZXN0cywgeW91CitjYW4gdXNlIHR5cGVkZWYgdG8gaW50
cm9kdWNlIGFuIGFsaWFzIGZvciB0aGUgZml4dHVyZSBjbGFzcyBhbmQgYXZvaWQKK2R1cGxpY2F0
aW5nIGl0cyBjb2RlOgorYGBgCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVz
dCB7IC4uLiB9OworCit0eXBlZGVmIEZvb1Rlc3QgRm9vRGVhdGhUZXN0OworCitURVNUX0YoRm9v
VGVzdCwgRG9lc1RoaXMpIHsKKyAgLy8gbm9ybWFsIHRlc3QKK30KKworVEVTVF9GKEZvb0RlYXRo
VGVzdCwgRG9lc1RoYXQpIHsKKyAgLy8gZGVhdGggdGVzdAorfQorYGBgCisKK19BdmFpbGFiaWxp
dHk6XyBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBDeWd3aW4s
IGFuZCBNYWMgKHRoZSBsYXR0ZXIgdGhyZWUgYXJlIHN1cHBvcnRlZCBzaW5jZSB2MS4zLjApLiAg
YChBU1NFUlR8RVhQRUNUKV9ERUFUSF9JRl9TVVBQT1JURURgIGFyZSBuZXcgaW4gdjEuNC4wLgor
CisjIyBSZWd1bGFyIEV4cHJlc3Npb24gU3ludGF4ICMjCisKK09uIFBPU0lYIHN5c3RlbXMgKGUu
Zy4gTGludXgsIEN5Z3dpbiwgYW5kIE1hYyksIEdvb2dsZSBUZXN0IHVzZXMgdGhlCitbUE9TSVgg
ZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9uXShodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25s
aW5lcHVicy8wMDk2OTUzOTkvYmFzZWRlZnMveGJkX2NoYXAwOS5odG1sI3RhZ18wOV8wNCkKK3N5
bnRheCBpbiBkZWF0aCB0ZXN0cy4gVG8gbGVhcm4gYWJvdXQgdGhpcyBzeW50YXgsIHlvdSBtYXkg
d2FudCB0byByZWFkIHRoaXMgW1dpa2lwZWRpYSBlbnRyeV0oaHR0cDovL2VuLndpa2lwZWRpYS5v
cmcvd2lraS9SZWd1bGFyX2V4cHJlc3Npb24jUE9TSVhfRXh0ZW5kZWRfUmVndWxhcl9FeHByZXNz
aW9ucykuCisKK09uIFdpbmRvd3MsIEdvb2dsZSBUZXN0IHVzZXMgaXRzIG93biBzaW1wbGUgcmVn
dWxhciBleHByZXNzaW9uCitpbXBsZW1lbnRhdGlvbi4gSXQgbGFja3MgbWFueSBmZWF0dXJlcyB5
b3UgY2FuIGZpbmQgaW4gUE9TSVggZXh0ZW5kZWQKK3JlZ3VsYXIgZXhwcmVzc2lvbnMuICBGb3Ig
ZXhhbXBsZSwgd2UgZG9uJ3Qgc3VwcG9ydCB1bmlvbiAoYCJ4fHkiYCksCitncm91cGluZyAoYCIo
eHkpImApLCBicmFja2V0cyAoYCJbeHldImApLCBhbmQgcmVwZXRpdGlvbiBjb3VudAorKGAieHs1
LDd9ImApLCBhbW9uZyBvdGhlcnMuIEJlbG93IGlzIHdoYXQgd2UgZG8gc3VwcG9ydCAoTGV0dGVy
IGBBYCBkZW5vdGVzIGEKK2xpdGVyYWwgY2hhcmFjdGVyLCBwZXJpb2QgKGAuYCksIG9yIGEgc2lu
Z2xlIGBcXGAgZXNjYXBlIHNlcXVlbmNlOyBgeGAKK2FuZCBgeWAgZGVub3RlIHJlZ3VsYXIgZXhw
cmVzc2lvbnMuKToKKworfCBgY2AgfCBtYXRjaGVzIGFueSBsaXRlcmFsIGNoYXJhY3RlciBgY2Ag
fAorfDotLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBgXFxkYCB8
IG1hdGNoZXMgYW55IGRlY2ltYWwgZGlnaXQgICAgICAgICB8Cit8IGBcXERgIHwgbWF0Y2hlcyBh
bnkgY2hhcmFjdGVyIHRoYXQncyBub3QgYSBkZWNpbWFsIGRpZ2l0IHwKK3wgYFxcZmAgfCBtYXRj
aGVzIGBcZmAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFxuYCB8IG1hdGNoZXMgYFxuYCAg
ICAgICAgICAgICAgICAgICAgICB8Cit8IGBcXHJgIHwgbWF0Y2hlcyBgXHJgICAgICAgICAgICAg
ICAgICAgICAgIHwKK3wgYFxcc2AgfCBtYXRjaGVzIGFueSBBU0NJSSB3aGl0ZXNwYWNlLCBpbmNs
dWRpbmcgYFxuYCB8Cit8IGBcXFNgIHwgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIHRoYXQncyBub3Qg
YSB3aGl0ZXNwYWNlIHwKK3wgYFxcdGAgfCBtYXRjaGVzIGBcdGAgICAgICAgICAgICAgICAgICAg
ICAgfAorfCBgXFx2YCB8IG1hdGNoZXMgYFx2YCAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBc
XHdgIHwgbWF0Y2hlcyBhbnkgbGV0dGVyLCBgX2AsIG9yIGRlY2ltYWwgZGlnaXQgfAorfCBgXFxX
YCB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0IGBcXHdgIGRvZXNuJ3QgbWF0Y2ggfAorfCBg
XFxjYCB8IG1hdGNoZXMgYW55IGxpdGVyYWwgY2hhcmFjdGVyIGBjYCwgd2hpY2ggbXVzdCBiZSBh
IHB1bmN0dWF0aW9uIHwKK3wgYFxcLmAgfCBtYXRjaGVzIHRoZSBgLmAgY2hhcmFjdGVyICAgICAg
ICAgfAorfCBgLmAgfCBtYXRjaGVzIGFueSBzaW5nbGUgY2hhcmFjdGVyIGV4Y2VwdCBgXG5gIHwK
K3wgYEE/YCB8IG1hdGNoZXMgMCBvciAxIG9jY3VycmVuY2VzIG9mIGBBYCB8Cit8IGBBKmAgfCBt
YXRjaGVzIDAgb3IgbWFueSBvY2N1cnJlbmNlcyBvZiBgQWAgfAorfCBgQStgIHwgbWF0Y2hlcyAx
IG9yIG1hbnkgb2NjdXJyZW5jZXMgb2YgYEFgIHwKK3wgYF5gIHwgbWF0Y2hlcyB0aGUgYmVnaW5u
aW5nIG9mIGEgc3RyaW5nIChub3QgdGhhdCBvZiBlYWNoIGxpbmUpIHwKK3wgYCRgIHwgbWF0Y2hl
cyB0aGUgZW5kIG9mIGEgc3RyaW5nIChub3QgdGhhdCBvZiBlYWNoIGxpbmUpIHwKK3wgYHh5YCB8
IG1hdGNoZXMgYHhgIGZvbGxvd2VkIGJ5IGB5YCAgICAgICB8CisKK1RvIGhlbHAgeW91IGRldGVy
bWluZSB3aGljaCBjYXBhYmlsaXR5IGlzIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbSwKK0dvb2ds
ZSBUZXN0IGRlZmluZXMgbWFjcm8gYEdURVNUX1VTRVNfUE9TSVhfUkU9MWAgd2hlbiBpdCB1c2Vz
IFBPU0lYCitleHRlbmRlZCByZWd1bGFyIGV4cHJlc3Npb25zLCBvciBgR1RFU1RfVVNFU19TSU1Q
TEVfUkU9MWAgd2hlbiBpdCB1c2VzCit0aGUgc2ltcGxlIHZlcnNpb24uICBJZiB5b3Ugd2FudCB5
b3VyIGRlYXRoIHRlc3RzIHRvIHdvcmsgaW4gYm90aAorY2FzZXMsIHlvdSBjYW4gZWl0aGVyIGAj
aWZgIG9uIHRoZXNlIG1hY3JvcyBvciB1c2UgdGhlIG1vcmUgbGltaXRlZAorc3ludGF4IG9ubHku
CisKKyMjIEhvdyBJdCBXb3JrcyAjIworCitVbmRlciB0aGUgaG9vZCwgYEFTU0VSVF9FWElUKClg
IHNwYXducyBhIG5ldyBwcm9jZXNzIGFuZCBleGVjdXRlcyB0aGUKK2RlYXRoIHRlc3Qgc3RhdGVt
ZW50IGluIHRoYXQgcHJvY2Vzcy4gVGhlIGRldGFpbHMgb2Ygb2YgaG93IHByZWNpc2VseQordGhh
dCBoYXBwZW5zIGRlcGVuZCBvbiB0aGUgcGxhdGZvcm0gYW5kIHRoZSB2YXJpYWJsZQorYDo6dGVz
dGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKWAgKHdoaWNoIGlzIGluaXRpYWxpemVk
IGZyb20gdGhlCitjb21tYW5kLWxpbmUgZmxhZyBgLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlYCku
CisKKyAgKiBPbiBQT1NJWCBzeXN0ZW1zLCBgZm9yaygpYCAob3IgYGNsb25lKClgIG9uIExpbnV4
KSBpcyB1c2VkIHRvIHNwYXduIHRoZSBjaGlsZCwgYWZ0ZXIgd2hpY2g6CisgICAgKiBJZiB0aGUg
dmFyaWFibGUncyB2YWx1ZSBpcyBgImZhc3QiYCwgdGhlIGRlYXRoIHRlc3Qgc3RhdGVtZW50IGlz
IGltbWVkaWF0ZWx5IGV4ZWN1dGVkLgorICAgICogSWYgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgaXMg
YCJ0aHJlYWRzYWZlImAsIHRoZSBjaGlsZCBwcm9jZXNzIHJlLWV4ZWN1dGVzIHRoZSB1bml0IHRl
c3QgYmluYXJ5IGp1c3QgYXMgaXQgd2FzIG9yaWdpbmFsbHkgaW52b2tlZCwgYnV0IHdpdGggc29t
ZSBleHRyYSBmbGFncyB0byBjYXVzZSBqdXN0IHRoZSBzaW5nbGUgZGVhdGggdGVzdCB1bmRlciBj
b25zaWRlcmF0aW9uIHRvIGJlIHJ1bi4KKyAgKiBPbiBXaW5kb3dzLCB0aGUgY2hpbGQgaXMgc3Bh
d25lZCB1c2luZyB0aGUgYENyZWF0ZVByb2Nlc3MoKWAgQVBJLCBhbmQgcmUtZXhlY3V0ZXMgdGhl
IGJpbmFyeSB0byBjYXVzZSBqdXN0IHRoZSBzaW5nbGUgZGVhdGggdGVzdCB1bmRlciBjb25zaWRl
cmF0aW9uIHRvIGJlIHJ1biAtIG11Y2ggbGlrZSB0aGUgYHRocmVhZHNhZmVgIG1vZGUgb24gUE9T
SVguCisKK090aGVyIHZhbHVlcyBmb3IgdGhlIHZhcmlhYmxlIGFyZSBpbGxlZ2FsIGFuZCB3aWxs
IGNhdXNlIHRoZSBkZWF0aCB0ZXN0IHRvCitmYWlsLiBDdXJyZW50bHksIHRoZSBmbGFnJ3MgZGVm
YXVsdCB2YWx1ZSBpcyBgImZhc3QiYC4gSG93ZXZlciwgd2UgcmVzZXJ2ZSB0aGUKK3JpZ2h0IHRv
IGNoYW5nZSBpdCBpbiB0aGUgZnV0dXJlLiBUaGVyZWZvcmUsIHlvdXIgdGVzdHMgc2hvdWxkIG5v
dCBkZXBlbmQgb24KK3RoaXMuCisKK0luIGVpdGhlciBjYXNlLCB0aGUgcGFyZW50IHByb2Nlc3Mg
d2FpdHMgZm9yIHRoZSBjaGlsZCBwcm9jZXNzIHRvIGNvbXBsZXRlLCBhbmQgY2hlY2tzIHRoYXQK
KworICAxLiB0aGUgY2hpbGQncyBleGl0IHN0YXR1cyBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZSwg
YW5kCisgIDEuIHRoZSBjaGlsZCdzIHN0ZGVyciBtYXRjaGVzIHRoZSByZWd1bGFyIGV4cHJlc3Np
b24uCisKK0lmIHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudCBydW5zIHRvIGNvbXBsZXRpb24gd2l0
aG91dCBkeWluZywgdGhlIGNoaWxkCitwcm9jZXNzIHdpbGwgbm9uZXRoZWxlc3MgdGVybWluYXRl
LCBhbmQgdGhlIGFzc2VydGlvbiBmYWlscy4KKworIyMgRGVhdGggVGVzdHMgQW5kIFRocmVhZHMg
IyMKKworVGhlIHJlYXNvbiBmb3IgdGhlIHR3byBkZWF0aCB0ZXN0IHN0eWxlcyBoYXMgdG8gZG8g
d2l0aCB0aHJlYWQgc2FmZXR5LiBEdWUgdG8KK3dlbGwta25vd24gcHJvYmxlbXMgd2l0aCBmb3Jr
aW5nIGluIHRoZSBwcmVzZW5jZSBvZiB0aHJlYWRzLCBkZWF0aCB0ZXN0cyBzaG91bGQKK2JlIHJ1
biBpbiBhIHNpbmdsZS10aHJlYWRlZCBjb250ZXh0LiBTb21ldGltZXMsIGhvd2V2ZXIsIGl0IGlz
bid0IGZlYXNpYmxlIHRvCithcnJhbmdlIHRoYXQga2luZCBvZiBlbnZpcm9ubWVudC4gRm9yIGV4
YW1wbGUsIHN0YXRpY2FsbHktaW5pdGlhbGl6ZWQgbW9kdWxlcworbWF5IHN0YXJ0IHRocmVhZHMg
YmVmb3JlIG1haW4gaXMgZXZlciByZWFjaGVkLiBPbmNlIHRocmVhZHMgaGF2ZSBiZWVuIGNyZWF0
ZWQsCitpdCBtYXkgYmUgZGlmZmljdWx0IG9yIGltcG9zc2libGUgdG8gY2xlYW4gdGhlbSB1cC4K
KworR29vZ2xlIFRlc3QgaGFzIHRocmVlIGZlYXR1cmVzIGludGVuZGVkIHRvIHJhaXNlIGF3YXJl
bmVzcyBvZiB0aHJlYWRpbmcgaXNzdWVzLgorCisgIDEuIEEgd2FybmluZyBpcyBlbWl0dGVkIGlm
IG11bHRpcGxlIHRocmVhZHMgYXJlIHJ1bm5pbmcgd2hlbiBhIGRlYXRoIHRlc3QgaXMgZW5jb3Vu
dGVyZWQuCisgIDEuIFRlc3QgY2FzZXMgd2l0aCBhIG5hbWUgZW5kaW5nIGluICJEZWF0aFRlc3Qi
IGFyZSBydW4gYmVmb3JlIGFsbCBvdGhlciB0ZXN0cy4KKyAgMS4gSXQgdXNlcyBgY2xvbmUoKWAg
aW5zdGVhZCBvZiBgZm9yaygpYCB0byBzcGF3biB0aGUgY2hpbGQgcHJvY2VzcyBvbiBMaW51eCAo
YGNsb25lKClgIGlzIG5vdCBhdmFpbGFibGUgb24gQ3lnd2luIGFuZCBNYWMpLCBhcyBgZm9yaygp
YCBpcyBtb3JlIGxpa2VseSB0byBjYXVzZSB0aGUgY2hpbGQgdG8gaGFuZyB3aGVuIHRoZSBwYXJl
bnQgcHJvY2VzcyBoYXMgbXVsdGlwbGUgdGhyZWFkcy4KKworSXQncyBwZXJmZWN0bHkgZmluZSB0
byBjcmVhdGUgdGhyZWFkcyBpbnNpZGUgYSBkZWF0aCB0ZXN0IHN0YXRlbWVudDsgdGhleSBhcmUK
K2V4ZWN1dGVkIGluIGEgc2VwYXJhdGUgcHJvY2VzcyBhbmQgY2Fubm90IGFmZmVjdCB0aGUgcGFy
ZW50LgorCisjIyBEZWF0aCBUZXN0IFN0eWxlcyAjIworCitUaGUgInRocmVhZHNhZmUiIGRlYXRo
IHRlc3Qgc3R5bGUgd2FzIGludHJvZHVjZWQgaW4gb3JkZXIgdG8gaGVscCBtaXRpZ2F0ZSB0aGUK
K3Jpc2tzIG9mIHRlc3RpbmcgaW4gYSBwb3NzaWJseSBtdWx0aXRocmVhZGVkIGVudmlyb25tZW50
LiBJdCB0cmFkZXMgaW5jcmVhc2VkCit0ZXN0IGV4ZWN1dGlvbiB0aW1lIChwb3RlbnRpYWxseSBk
cmFtYXRpY2FsbHkgc28pIGZvciBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5LgorV2Ugc3VnZ2VzdCB1
c2luZyB0aGUgZmFzdGVyLCBkZWZhdWx0ICJmYXN0IiBzdHlsZSB1bmxlc3MgeW91ciB0ZXN0IGhh
cyBzcGVjaWZpYworcHJvYmxlbXMgd2l0aCBpdC4KKworWW91IGNhbiBjaG9vc2UgYSBwYXJ0aWN1
bGFyIHN0eWxlIG9mIGRlYXRoIHRlc3RzIGJ5IHNldHRpbmcgdGhlIGZsYWcKK3Byb2dyYW1tYXRp
Y2FsbHk6CisKK2BgYAorOjp0ZXN0aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0g
InRocmVhZHNhZmUiOworYGBgCisKK1lvdSBjYW4gZG8gdGhpcyBpbiBgbWFpbigpYCB0byBzZXQg
dGhlIHN0eWxlIGZvciBhbGwgZGVhdGggdGVzdHMgaW4gdGhlCitiaW5hcnksIG9yIGluIGluZGl2
aWR1YWwgdGVzdHMuIFJlY2FsbCB0aGF0IGZsYWdzIGFyZSBzYXZlZCBiZWZvcmUgcnVubmluZyBl
YWNoCit0ZXN0IGFuZCByZXN0b3JlZCBhZnRlcndhcmRzLCBzbyB5b3UgbmVlZCBub3QgZG8gdGhh
dCB5b3Vyc2VsZi4gRm9yIGV4YW1wbGU6CisKK2BgYAorVEVTVChNeURlYXRoVGVzdCwgVGVzdE9u
ZSkgeworICA6OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAidGhyZWFk
c2FmZSI7CisgIC8vIFRoaXMgdGVzdCBpcyBydW4gaW4gdGhlICJ0aHJlYWRzYWZlIiBzdHlsZToK
KyAgQVNTRVJUX0RFQVRIKFRoaXNTaG91bGREaWUoKSwgIiIpOworfQorCitURVNUKE15RGVhdGhU
ZXN0LCBUZXN0VHdvKSB7CisgIC8vIFRoaXMgdGVzdCBpcyBydW4gaW4gdGhlICJmYXN0IiBzdHls
ZToKKyAgQVNTRVJUX0RFQVRIKFRoaXNTaG91bGREaWUoKSwgIiIpOworfQorCitpbnQgbWFpbihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJn
YywgYXJndik7CisgIDo6dGVzdGluZzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJm
YXN0IjsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAorCisjIyBDYXZlYXRzICMj
CisKK1RoZSBfc3RhdGVtZW50XyBhcmd1bWVudCBvZiBgQVNTRVJUX0VYSVQoKWAgY2FuIGJlIGFu
eSB2YWxpZCBDKysgc3RhdGVtZW50LgorSWYgaXQgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9u
IHZpYSBhIGByZXR1cm5gIHN0YXRlbWVudCBvciBieSB0aHJvd2luZyBhbiBleGNlcHRpb24sCit0
aGUgZGVhdGggdGVzdCBpcyBjb25zaWRlcmVkIHRvIGhhdmUgZmFpbGVkLiAgU29tZSBHb29nbGUg
VGVzdCBtYWNyb3MgbWF5IHJldHVybgorZnJvbSB0aGUgY3VycmVudCBmdW5jdGlvbiAoZS5nLiBg
QVNTRVJUX1RSVUUoKWApLCBzbyBiZSBzdXJlIHRvIGF2b2lkIHRoZW0gaW4gX3N0YXRlbWVudF8u
CisKK1NpbmNlIF9zdGF0ZW1lbnRfIHJ1bnMgaW4gdGhlIGNoaWxkIHByb2Nlc3MsIGFueSBpbi1t
ZW1vcnkgc2lkZSBlZmZlY3QgKGUuZy4KK21vZGlmeWluZyBhIHZhcmlhYmxlLCByZWxlYXNpbmcg
bWVtb3J5LCBldGMpIGl0IGNhdXNlcyB3aWxsIF9ub3RfIGJlIG9ic2VydmFibGUKK2luIHRoZSBw
YXJlbnQgcHJvY2Vzcy4gSW4gcGFydGljdWxhciwgaWYgeW91IHJlbGVhc2UgbWVtb3J5IGluIGEg
ZGVhdGggdGVzdCwKK3lvdXIgcHJvZ3JhbSB3aWxsIGZhaWwgdGhlIGhlYXAgY2hlY2sgYXMgdGhl
IHBhcmVudCBwcm9jZXNzIHdpbGwgbmV2ZXIgc2VlIHRoZQorbWVtb3J5IHJlY2xhaW1lZC4gVG8g
c29sdmUgdGhpcyBwcm9ibGVtLCB5b3UgY2FuCisKKyAgMS4gdHJ5IG5vdCB0byBmcmVlIG1lbW9y
eSBpbiBhIGRlYXRoIHRlc3Q7CisgIDEuIGZyZWUgdGhlIG1lbW9yeSBhZ2FpbiBpbiB0aGUgcGFy
ZW50IHByb2Nlc3M7IG9yCisgIDEuIGRvIG5vdCB1c2UgdGhlIGhlYXAgY2hlY2tlciBpbiB5b3Vy
IHByb2dyYW0uCisKK0R1ZSB0byBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIHlvdSBjYW5ub3Qg
cGxhY2UgbXVsdGlwbGUgZGVhdGggdGVzdAorYXNzZXJ0aW9ucyBvbiB0aGUgc2FtZSBsaW5lOyBv
dGhlcndpc2UsIGNvbXBpbGF0aW9uIHdpbGwgZmFpbCB3aXRoIGFuIHVub2J2aW91cworZXJyb3Ig
bWVzc2FnZS4KKworRGVzcGl0ZSB0aGUgaW1wcm92ZWQgdGhyZWFkIHNhZmV0eSBhZmZvcmRlZCBi
eSB0aGUgInRocmVhZHNhZmUiIHN0eWxlIG9mIGRlYXRoCit0ZXN0LCB0aHJlYWQgcHJvYmxlbXMg
c3VjaCBhcyBkZWFkbG9jayBhcmUgc3RpbGwgcG9zc2libGUgaW4gdGhlIHByZXNlbmNlIG9mCito
YW5kbGVycyByZWdpc3RlcmVkIHdpdGggYHB0aHJlYWRfYXRmb3JrKDMpYC4KKworIyBVc2luZyBB
c3NlcnRpb25zIGluIFN1Yi1yb3V0aW5lcyAjCisKKyMjIEFkZGluZyBUcmFjZXMgdG8gQXNzZXJ0
aW9ucyAjIworCitJZiBhIHRlc3Qgc3ViLXJvdXRpbmUgaXMgY2FsbGVkIGZyb20gc2V2ZXJhbCBw
bGFjZXMsIHdoZW4gYW4gYXNzZXJ0aW9uCitpbnNpZGUgaXQgZmFpbHMsIGl0IGNhbiBiZSBoYXJk
IHRvIHRlbGwgd2hpY2ggaW52b2NhdGlvbiBvZiB0aGUKK3N1Yi1yb3V0aW5lIHRoZSBmYWlsdXJl
IGlzIGZyb20uICBZb3UgY2FuIGFsbGV2aWF0ZSB0aGlzIHByb2JsZW0gdXNpbmcKK2V4dHJhIGxv
Z2dpbmcgb3IgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZXMsIGJ1dCB0aGF0IHVzdWFsbHkgY2x1dHRl
cnMgdXAKK3lvdXIgdGVzdHMuIEEgYmV0dGVyIHNvbHV0aW9uIGlzIHRvIHVzZSB0aGUgYFNDT1BF
RF9UUkFDRWAgbWFjcm86CisKK3wgYFNDT1BFRF9UUkFDRShgX21lc3NhZ2VfYCk7YCB8Cit8Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorCit3aGVyZSBfbWVzc2FnZV8gY2FuIGJlIGFu
eXRoaW5nIHN0cmVhbWFibGUgdG8gYHN0ZDo6b3N0cmVhbWAuIFRoaXMKK21hY3JvIHdpbGwgY2F1
c2UgdGhlIGN1cnJlbnQgZmlsZSBuYW1lLCBsaW5lIG51bWJlciwgYW5kIHRoZSBnaXZlbgorbWVz
c2FnZSB0byBiZSBhZGRlZCBpbiBldmVyeSBmYWlsdXJlIG1lc3NhZ2UuIFRoZSBlZmZlY3Qgd2ls
bCBiZQordW5kb25lIHdoZW4gdGhlIGNvbnRyb2wgbGVhdmVzIHRoZSBjdXJyZW50IGxleGljYWwg
c2NvcGUuCisKK0ZvciBleGFtcGxlLAorCitgYGAKKzEwOiB2b2lkIFN1YjEoaW50IG4pIHsKKzEx
OiAgIEVYUEVDVF9FUSgxLCBCYXIobikpOworMTI6ICAgRVhQRUNUX0VRKDIsIEJhcihuICsgMSkp
OworMTM6IH0KKzE0OgorMTU6IFRFU1QoRm9vVGVzdCwgQmFyKSB7CisxNjogICB7CisxNzogICAg
IFNDT1BFRF9UUkFDRSgiQSIpOyAgLy8gVGhpcyB0cmFjZSBwb2ludCB3aWxsIGJlIGluY2x1ZGVk
IGluCisxODogICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXZlcnkgZmFpbHVyZSBpbiB0aGlz
IHNjb3BlLgorMTk6ICAgICBTdWIxKDEpOworMjA6ICAgfQorMjE6ICAgLy8gTm93IGl0IHdvbid0
LgorMjI6ICAgU3ViMSg5KTsKKzIzOiB9CitgYGAKKworY291bGQgcmVzdWx0IGluIG1lc3NhZ2Vz
IGxpa2UgdGhlc2U6CisKK2BgYAorcGF0aC90by9mb29fdGVzdC5jYzoxMTogRmFpbHVyZQorVmFs
dWUgb2Y6IEJhcihuKQorRXhwZWN0ZWQ6IDEKKyAgQWN0dWFsOiAyCisgICBUcmFjZToKK3BhdGgv
dG8vZm9vX3Rlc3QuY2M6MTc6IEEKKworcGF0aC90by9mb29fdGVzdC5jYzoxMjogRmFpbHVyZQor
VmFsdWUgb2Y6IEJhcihuICsgMSkKK0V4cGVjdGVkOiAyCisgIEFjdHVhbDogMworYGBgCisKK1dp
dGhvdXQgdGhlIHRyYWNlLCBpdCB3b3VsZCd2ZSBiZWVuIGRpZmZpY3VsdCB0byBrbm93IHdoaWNo
IGludm9jYXRpb24KK29mIGBTdWIxKClgIHRoZSB0d28gZmFpbHVyZXMgY29tZSBmcm9tIHJlc3Bl
Y3RpdmVseS4gKFlvdSBjb3VsZCBhZGQgYW4KK2V4dHJhIG1lc3NhZ2UgdG8gZWFjaCBhc3NlcnRp
b24gaW4gYFN1YjEoKWAgdG8gaW5kaWNhdGUgdGhlIHZhbHVlIG9mCitgbmAsIGJ1dCB0aGF0J3Mg
dGVkaW91cy4pCisKK1NvbWUgdGlwcyBvbiB1c2luZyBgU0NPUEVEX1RSQUNFYDoKKworICAxLiBX
aXRoIGEgc3VpdGFibGUgbWVzc2FnZSwgaXQncyBvZnRlbiBlbm91Z2ggdG8gdXNlIGBTQ09QRURf
VFJBQ0VgIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBzdWItcm91dGluZSwgaW5zdGVhZCBvZiBhdCBl
YWNoIGNhbGwgc2l0ZS4KKyAgMS4gV2hlbiBjYWxsaW5nIHN1Yi1yb3V0aW5lcyBpbnNpZGUgYSBs
b29wLCBtYWtlIHRoZSBsb29wIGl0ZXJhdG9yIHBhcnQgb2YgdGhlIG1lc3NhZ2UgaW4gYFNDT1BF
RF9UUkFDRWAgc3VjaCB0aGF0IHlvdSBjYW4ga25vdyB3aGljaCBpdGVyYXRpb24gdGhlIGZhaWx1
cmUgaXMgZnJvbS4KKyAgMS4gU29tZXRpbWVzIHRoZSBsaW5lIG51bWJlciBvZiB0aGUgdHJhY2Ug
cG9pbnQgaXMgZW5vdWdoIGZvciBpZGVudGlmeWluZyB0aGUgcGFydGljdWxhciBpbnZvY2F0aW9u
IG9mIGEgc3ViLXJvdXRpbmUuIEluIHRoaXMgY2FzZSwgeW91IGRvbid0IGhhdmUgdG8gY2hvb3Nl
IGEgdW5pcXVlIG1lc3NhZ2UgZm9yIGBTQ09QRURfVFJBQ0VgLiBZb3UgY2FuIHNpbXBseSB1c2Ug
YCIiYC4KKyAgMS4gWW91IGNhbiB1c2UgYFNDT1BFRF9UUkFDRWAgaW4gYW4gaW5uZXIgc2NvcGUg
d2hlbiB0aGVyZSBpcyBvbmUgaW4gdGhlIG91dGVyIHNjb3BlLiBJbiB0aGlzIGNhc2UsIGFsbCBh
Y3RpdmUgdHJhY2UgcG9pbnRzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGZhaWx1cmUgbWVzc2Fn
ZXMsIGluIHJldmVyc2Ugb3JkZXIgdGhleSBhcmUgZW5jb3VudGVyZWQuCisgIDEuIFRoZSB0cmFj
ZSBkdW1wIGlzIGNsaWNrYWJsZSBpbiBFbWFjcycgY29tcGlsYXRpb24gYnVmZmVyIC0gaGl0IHJl
dHVybiBvbiBhIGxpbmUgbnVtYmVyIGFuZCB5b3UnbGwgYmUgdGFrZW4gdG8gdGhhdCBsaW5lIGlu
IHRoZSBzb3VyY2UgZmlsZSEKKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKKyMjIFByb3BhZ2F0aW5nIEZhdGFsIEZhaWx1cmVzICMjCisKK0EgY29tbW9uIHBpdGZhbGwg
d2hlbiB1c2luZyBgQVNTRVJUXypgIGFuZCBgRkFJTCpgIGlzIG5vdCB1bmRlcnN0YW5kaW5nIHRo
YXQKK3doZW4gdGhleSBmYWlsIHRoZXkgb25seSBhYm9ydCB0aGUgX2N1cnJlbnQgZnVuY3Rpb25f
LCBub3QgdGhlIGVudGlyZSB0ZXN0LiBGb3IKK2V4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVzdCB3
aWxsIHNlZ2ZhdWx0OgorYGBgCit2b2lkIFN1YnJvdXRpbmUoKSB7CisgIC8vIEdlbmVyYXRlcyBh
IGZhdGFsIGZhaWx1cmUgYW5kIGFib3J0cyB0aGUgY3VycmVudCBmdW5jdGlvbi4KKyAgQVNTRVJU
X0VRKDEsIDIpOworICAvLyBUaGUgZm9sbG93aW5nIHdvbid0IGJlIGV4ZWN1dGVkLgorICAuLi4K
K30KKworVEVTVChGb29UZXN0LCBCYXIpIHsKKyAgU3Vicm91dGluZSgpOworICAvLyBUaGUgaW50
ZW5kZWQgYmVoYXZpb3IgaXMgZm9yIHRoZSBmYXRhbCBmYWlsdXJlCisgIC8vIGluIFN1YnJvdXRp
bmUoKSB0byBhYm9ydCB0aGUgZW50aXJlIHRlc3QuCisgIC8vIFRoZSBhY3R1YWwgYmVoYXZpb3I6
IHRoZSBmdW5jdGlvbiBnb2VzIG9uIGFmdGVyIFN1YnJvdXRpbmUoKSByZXR1cm5zLgorICBpbnQq
IHAgPSBOVUxMOworICAqcCA9IDM7IC8vIFNlZ2ZhdWx0IQorfQorYGBgCisKK1NpbmNlIHdlIGRv
bid0IHVzZSBleGNlcHRpb25zLCBpdCBpcyB0ZWNobmljYWxseSBpbXBvc3NpYmxlIHRvCitpbXBs
ZW1lbnQgdGhlIGludGVuZGVkIGJlaGF2aW9yIGhlcmUuICBUbyBhbGxldmlhdGUgdGhpcywgR29v
Z2xlIFRlc3QKK3Byb3ZpZGVzIHR3byBzb2x1dGlvbnMuICBZb3UgY291bGQgdXNlIGVpdGhlciB0
aGUKK2AoQVNTRVJUfEVYUEVDVClfTk9fRkFUQUxfRkFJTFVSRWAgYXNzZXJ0aW9ucyBvciB0aGUK
K2BIYXNGYXRhbEZhaWx1cmUoKWAgZnVuY3Rpb24uICBUaGV5IGFyZSBkZXNjcmliZWQgaW4gdGhl
IGZvbGxvd2luZyB0d28KK3N1YnNlY3Rpb25zLgorCisjIyMgQXNzZXJ0aW5nIG9uIFN1YnJvdXRp
bmVzICMjIworCitBcyBzaG93biBhYm92ZSwgaWYgeW91ciB0ZXN0IGNhbGxzIGEgc3Vicm91dGlu
ZSB0aGF0IGhhcyBhbiBgQVNTRVJUXypgCitmYWlsdXJlIGluIGl0LCB0aGUgdGVzdCB3aWxsIGNv
bnRpbnVlIGFmdGVyIHRoZSBzdWJyb3V0aW5lCityZXR1cm5zLiBUaGlzIG1heSBub3QgYmUgd2hh
dCB5b3Ugd2FudC4KKworT2Z0ZW4gcGVvcGxlIHdhbnQgZmF0YWwgZmFpbHVyZXMgdG8gcHJvcGFn
YXRlIGxpa2UgZXhjZXB0aW9ucy4gIEZvcgordGhhdCBHb29nbGUgVGVzdCBvZmZlcnMgdGhlIGZv
bGxvd2luZyBtYWNyb3M6CisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNz
ZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfTk9fRkFUQUxfRkFJ
TFVSRShgX3N0YXRlbWVudF9gKTtgIHwgYEVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKGBfc3RhdGVt
ZW50X2ApO2AgfCBfc3RhdGVtZW50XyBkb2Vzbid0IGdlbmVyYXRlIGFueSBuZXcgZmF0YWwgZmFp
bHVyZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkLiB8CisKK09ubHkgZmFpbHVyZXMgaW4gdGhlIHRo
cmVhZCB0aGF0IGV4ZWN1dGVzIHRoZSBhc3NlcnRpb24gYXJlIGNoZWNrZWQgdG8KK2RldGVybWlu
ZSB0aGUgcmVzdWx0IG9mIHRoaXMgdHlwZSBvZiBhc3NlcnRpb25zLiAgSWYgX3N0YXRlbWVudF8K
K2NyZWF0ZXMgbmV3IHRocmVhZHMsIGZhaWx1cmVzIGluIHRoZXNlIHRocmVhZHMgYXJlIGlnbm9y
ZWQuCisKK0V4YW1wbGVzOgorCitgYGAKK0FTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEZvbygpKTsK
KworaW50IGk7CitFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRSh7CisgIGkgPSBCYXIoKTsKK30pOwor
YGBgCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLiBBc3NlcnRpb25zIGZy
b20gbXVsdGlwbGUgdGhyZWFkcworYXJlIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgorCisjIyMg
Q2hlY2tpbmcgZm9yIEZhaWx1cmVzIGluIHRoZSBDdXJyZW50IFRlc3QgIyMjCisKK2BIYXNGYXRh
bEZhaWx1cmUoKWAgaW4gdGhlIGA6OnRlc3Rpbmc6OlRlc3RgIGNsYXNzIHJldHVybnMgYHRydWVg
IGlmIGFuCithc3NlcnRpb24gaW4gdGhlIGN1cnJlbnQgdGVzdCBoYXMgc3VmZmVyZWQgYSBmYXRh
bCBmYWlsdXJlLiBUaGlzCithbGxvd3MgZnVuY3Rpb25zIHRvIGNhdGNoIGZhdGFsIGZhaWx1cmVz
IGluIGEgc3ViLXJvdXRpbmUgYW5kIHJldHVybgorZWFybHkuCisKK2BgYAorY2xhc3MgVGVzdCB7
CisgcHVibGljOgorICAuLi4KKyAgc3RhdGljIGJvb2wgSGFzRmF0YWxGYWlsdXJlKCk7Cit9Owor
YGBgCisKK1RoZSB0eXBpY2FsIHVzYWdlLCB3aGljaCBiYXNpY2FsbHkgc2ltdWxhdGVzIHRoZSBi
ZWhhdmlvciBvZiBhIHRocm93bgorZXhjZXB0aW9uLCBpczoKKworYGBgCitURVNUKEZvb1Rlc3Qs
IEJhcikgeworICBTdWJyb3V0aW5lKCk7CisgIC8vIEFib3J0cyBpZiBTdWJyb3V0aW5lKCkgaGFk
IGEgZmF0YWwgZmFpbHVyZS4KKyAgaWYgKEhhc0ZhdGFsRmFpbHVyZSgpKQorICAgIHJldHVybjsK
KyAgLy8gVGhlIGZvbGxvd2luZyB3b24ndCBiZSBleGVjdXRlZC4KKyAgLi4uCit9CitgYGAKKwor
SWYgYEhhc0ZhdGFsRmFpbHVyZSgpYCBpcyB1c2VkIG91dHNpZGUgb2YgYFRFU1QoKWAgLCBgVEVT
VF9GKClgICwgb3IgYSB0ZXN0CitmaXh0dXJlLCB5b3UgbXVzdCBhZGQgdGhlIGA6OnRlc3Rpbmc6
OlRlc3Q6OmAgcHJlZml4LCBhcyBpbjoKKworYGBgCitpZiAoOjp0ZXN0aW5nOjpUZXN0OjpIYXNG
YXRhbEZhaWx1cmUoKSkKKyAgcmV0dXJuOworYGBgCisKK1NpbWlsYXJseSwgYEhhc05vbmZhdGFs
RmFpbHVyZSgpYCByZXR1cm5zIGB0cnVlYCBpZiB0aGUgY3VycmVudCB0ZXN0CitoYXMgYXQgbGVh
c3Qgb25lIG5vbi1mYXRhbCBmYWlsdXJlLCBhbmQgYEhhc0ZhaWx1cmUoKWAgcmV0dXJucyBgdHJ1
ZWAKK2lmIHRoZSBjdXJyZW50IHRlc3QgaGFzIGF0IGxlYXN0IG9uZSBmYWlsdXJlIG9mIGVpdGhl
ciBraW5kLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4gIGBIYXNOb25m
YXRhbEZhaWx1cmUoKWAgYW5kCitgSGFzRmFpbHVyZSgpYCBhcmUgYXZhaWxhYmxlIHNpbmNlIHZl
cnNpb24gMS40LjAuCisKKyMgTG9nZ2luZyBBZGRpdGlvbmFsIEluZm9ybWF0aW9uICMKKworSW4g
eW91ciB0ZXN0IGNvZGUsIHlvdSBjYW4gY2FsbCBgUmVjb3JkUHJvcGVydHkoImtleSIsIHZhbHVl
KWAgdG8gbG9nCithZGRpdGlvbmFsIGluZm9ybWF0aW9uLCB3aGVyZSBgdmFsdWVgIGNhbiBiZSBl
aXRoZXIgYSBzdHJpbmcgb3IgYW4gYGludGAuIFRoZSBfbGFzdF8gdmFsdWUgcmVjb3JkZWQgZm9y
IGEga2V5IHdpbGwgYmUgZW1pdHRlZCB0byB0aGUgWE1MIG91dHB1dAoraWYgeW91IHNwZWNpZnkg
b25lLiBGb3IgZXhhbXBsZSwgdGhlIHRlc3QKKworYGBgCitURVNUX0YoV2lkZ2V0VXNhZ2VUZXN0
LCBNaW5BbmRNYXhXaWRnZXRzKSB7CisgIFJlY29yZFByb3BlcnR5KCJNYXhpbXVtV2lkZ2V0cyIs
IENvbXB1dGVNYXhVc2FnZSgpKTsKKyAgUmVjb3JkUHJvcGVydHkoIk1pbmltdW1XaWRnZXRzIiwg
Q29tcHV0ZU1pblVzYWdlKCkpOworfQorYGBgCisKK3dpbGwgb3V0cHV0IFhNTCBsaWtlIHRoaXM6
CisKK2BgYAorLi4uCisgIDx0ZXN0Y2FzZSBuYW1lPSJNaW5BbmRNYXhXaWRnZXRzIiBzdGF0dXM9
InJ1biIgdGltZT0iNiIgY2xhc3NuYW1lPSJXaWRnZXRVc2FnZVRlc3QiCisgICAgICAgICAgICBN
YXhpbXVtV2lkZ2V0cz0iMTIiCisgICAgICAgICAgICBNaW5pbXVtV2lkZ2V0cz0iOSIgLz4KKy4u
LgorYGBgCisKK19Ob3RlXzoKKyAgKiBgUmVjb3JkUHJvcGVydHkoKWAgaXMgYSBzdGF0aWMgbWVt
YmVyIG9mIHRoZSBgVGVzdGAgY2xhc3MuIFRoZXJlZm9yZSBpdCBuZWVkcyB0byBiZSBwcmVmaXhl
ZCB3aXRoIGA6OnRlc3Rpbmc6OlRlc3Q6OmAgaWYgdXNlZCBvdXRzaWRlIG9mIHRoZSBgVEVTVGAg
Ym9keSBhbmQgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4KKyAgKiBga2V5YCBtdXN0IGJlIGEgdmFs
aWQgWE1MIGF0dHJpYnV0ZSBuYW1lLCBhbmQgY2Fubm90IGNvbmZsaWN0IHdpdGggdGhlIG9uZXMg
YWxyZWFkeSB1c2VkIGJ5IEdvb2dsZSBUZXN0IChgbmFtZWAsIGBzdGF0dXNgLCBgdGltZWAsIGBj
bGFzc25hbWVgLCBgdHlwZV9wYXJhbWAsIGFuZCBgdmFsdWVfcGFyYW1gKS4KKyAgKiBDYWxsaW5n
IGBSZWNvcmRQcm9wZXJ0eSgpYCBvdXRzaWRlIG9mIHRoZSBsaWZlc3BhbiBvZiBhIHRlc3QgaXMg
YWxsb3dlZC4gSWYgaXQncyBjYWxsZWQgb3V0c2lkZSBvZiBhIHRlc3QgYnV0IGJldHdlZW4gYSB0
ZXN0IGNhc2UncyBgU2V0VXBUZXN0Q2FzZSgpYCBhbmQgYFRlYXJEb3duVGVzdENhc2UoKWAgbWV0
aG9kcywgaXQgd2lsbCBiZSBhdHRyaWJ1dGVkIHRvIHRoZSBYTUwgZWxlbWVudCBmb3IgdGhlIHRl
c3QgY2FzZS4gSWYgaXQncyBjYWxsZWQgb3V0c2lkZSBvZiBhbGwgdGVzdCBjYXNlcyAoZS5nLiBp
biBhIHRlc3QgZW52aXJvbm1lbnQpLCBpdCB3aWxsIGJlIGF0dHJpYnV0ZWQgdG8gdGhlIHRvcC1s
ZXZlbCBYTUwgZWxlbWVudC4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKKyMgU2hhcmluZyBSZXNvdXJjZXMgQmV0d2VlbiBUZXN0cyBpbiB0aGUgU2FtZSBUZXN0IENh
c2UgIworCisKKworR29vZ2xlIFRlc3QgY3JlYXRlcyBhIG5ldyB0ZXN0IGZpeHR1cmUgb2JqZWN0
IGZvciBlYWNoIHRlc3QgaW4gb3JkZXIgdG8gbWFrZQordGVzdHMgaW5kZXBlbmRlbnQgYW5kIGVh
c2llciB0byBkZWJ1Zy4gSG93ZXZlciwgc29tZXRpbWVzIHRlc3RzIHVzZSByZXNvdXJjZXMKK3Ro
YXQgYXJlIGV4cGVuc2l2ZSB0byBzZXQgdXAsIG1ha2luZyB0aGUgb25lLWNvcHktcGVyLXRlc3Qg
bW9kZWwgcHJvaGliaXRpdmVseQorZXhwZW5zaXZlLgorCitJZiB0aGUgdGVzdHMgZG9uJ3QgY2hh
bmdlIHRoZSByZXNvdXJjZSwgdGhlcmUncyBubyBoYXJtIGluIHRoZW0gc2hhcmluZyBhCitzaW5n
bGUgcmVzb3VyY2UgY29weS4gU28sIGluIGFkZGl0aW9uIHRvIHBlci10ZXN0IHNldC11cC90ZWFy
LWRvd24sIEdvb2dsZSBUZXN0CithbHNvIHN1cHBvcnRzIHBlci10ZXN0LWNhc2Ugc2V0LXVwL3Rl
YXItZG93bi4gVG8gdXNlIGl0OgorCisgIDEuIEluIHlvdXIgdGVzdCBmaXh0dXJlIGNsYXNzIChz
YXkgYEZvb1Rlc3RgICksIGRlZmluZSBhcyBgc3RhdGljYCBzb21lIG1lbWJlciB2YXJpYWJsZXMg
dG8gaG9sZCB0aGUgc2hhcmVkIHJlc291cmNlcy4KKyAgMS4gSW4gdGhlIHNhbWUgdGVzdCBmaXh0
dXJlIGNsYXNzLCBkZWZpbmUgYSBgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpYCBmdW5jdGlv
biAocmVtZW1iZXIgbm90IHRvIHNwZWxsIGl0IGFzICoqYFNldHVwVGVzdENhc2VgKiogd2l0aCBh
IHNtYWxsIGB1YCEpIHRvIHNldCB1cCB0aGUgc2hhcmVkIHJlc291cmNlcyBhbmQgYSBgc3RhdGlj
IHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpYCBmdW5jdGlvbiB0byB0ZWFyIHRoZW0gZG93bi4KKwor
VGhhdCdzIGl0ISBHb29nbGUgVGVzdCBhdXRvbWF0aWNhbGx5IGNhbGxzIGBTZXRVcFRlc3RDYXNl
KClgIGJlZm9yZSBydW5uaW5nIHRoZQorX2ZpcnN0IHRlc3RfIGluIHRoZSBgRm9vVGVzdGAgdGVz
dCBjYXNlIChpLmUuIGJlZm9yZSBjcmVhdGluZyB0aGUgZmlyc3QKK2BGb29UZXN0YCBvYmplY3Qp
LCBhbmQgY2FsbHMgYFRlYXJEb3duVGVzdENhc2UoKWAgYWZ0ZXIgcnVubmluZyB0aGUgX2xhc3Qg
dGVzdF8KK2luIGl0IChpLmUuIGFmdGVyIGRlbGV0aW5nIHRoZSBsYXN0IGBGb29UZXN0YCBvYmpl
Y3QpLiBJbiBiZXR3ZWVuLCB0aGUgdGVzdHMKK2NhbiB1c2UgdGhlIHNoYXJlZCByZXNvdXJjZXMu
CisKK1JlbWVtYmVyIHRoYXQgdGhlIHRlc3Qgb3JkZXIgaXMgdW5kZWZpbmVkLCBzbyB5b3VyIGNv
ZGUgY2FuJ3QgZGVwZW5kIG9uIGEgdGVzdAorcHJlY2VkaW5nIG9yIGZvbGxvd2luZyBhbm90aGVy
LiBBbHNvLCB0aGUgdGVzdHMgbXVzdCBlaXRoZXIgbm90IG1vZGlmeSB0aGUKK3N0YXRlIG9mIGFu
eSBzaGFyZWQgcmVzb3VyY2UsIG9yLCBpZiB0aGV5IGRvIG1vZGlmeSB0aGUgc3RhdGUsIHRoZXkg
bXVzdAorcmVzdG9yZSB0aGUgc3RhdGUgdG8gaXRzIG9yaWdpbmFsIHZhbHVlIGJlZm9yZSBwYXNz
aW5nIGNvbnRyb2wgdG8gdGhlIG5leHQKK3Rlc3QuCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIHBl
ci10ZXN0LWNhc2Ugc2V0LXVwIGFuZCB0ZWFyLWRvd246CitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBw
dWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIC8vIFBlci10ZXN0LWNhc2Ug
c2V0LXVwLgorICAvLyBDYWxsZWQgYmVmb3JlIHRoZSBmaXJzdCB0ZXN0IGluIHRoaXMgdGVzdCBj
YXNlLgorICAvLyBDYW4gYmUgb21pdHRlZCBpZiBub3QgbmVlZGVkLgorICBzdGF0aWMgdm9pZCBT
ZXRVcFRlc3RDYXNlKCkgeworICAgIHNoYXJlZF9yZXNvdXJjZV8gPSBuZXcgLi4uOworICB9CisK
KyAgLy8gUGVyLXRlc3QtY2FzZSB0ZWFyLWRvd24uCisgIC8vIENhbGxlZCBhZnRlciB0aGUgbGFz
dCB0ZXN0IGluIHRoaXMgdGVzdCBjYXNlLgorICAvLyBDYW4gYmUgb21pdHRlZCBpZiBub3QgbmVl
ZGVkLgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIGRlbGV0ZSBzaGFy
ZWRfcmVzb3VyY2VfOworICAgIHNoYXJlZF9yZXNvdXJjZV8gPSBOVUxMOworICB9CisKKyAgLy8g
WW91IGNhbiBkZWZpbmUgcGVyLXRlc3Qgc2V0LXVwIGFuZCB0ZWFyLWRvd24gbG9naWMgYXMgdXN1
YWwuCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsgLi4uIH0KKyAgdmlydHVhbCB2b2lkIFRlYXJE
b3duKCkgeyAuLi4gfQorCisgIC8vIFNvbWUgZXhwZW5zaXZlIHJlc291cmNlIHNoYXJlZCBieSBh
bGwgdGVzdHMuCisgIHN0YXRpYyBUKiBzaGFyZWRfcmVzb3VyY2VfOworfTsKKworVCogRm9vVGVz
dDo6c2hhcmVkX3Jlc291cmNlXyA9IE5VTEw7CisKK1RFU1RfRihGb29UZXN0LCBUZXN0MSkgewor
ICAuLi4geW91IGNhbiByZWZlciB0byBzaGFyZWRfcmVzb3VyY2UgaGVyZSAuLi4KK30KK1RFU1Rf
RihGb29UZXN0LCBUZXN0MikgeworICAuLi4geW91IGNhbiByZWZlciB0byBzaGFyZWRfcmVzb3Vy
Y2UgaGVyZSAuLi4KK30KK2BgYAorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1h
Yy4KKworIyBHbG9iYWwgU2V0LVVwIGFuZCBUZWFyLURvd24gIworCitKdXN0IGFzIHlvdSBjYW4g
ZG8gc2V0LXVwIGFuZCB0ZWFyLWRvd24gYXQgdGhlIHRlc3QgbGV2ZWwgYW5kIHRoZSB0ZXN0IGNh
c2UKK2xldmVsLCB5b3UgY2FuIGFsc28gZG8gaXQgYXQgdGhlIHRlc3QgcHJvZ3JhbSBsZXZlbC4g
SGVyZSdzIGhvdy4KKworRmlyc3QsIHlvdSBzdWJjbGFzcyB0aGUgYDo6dGVzdGluZzo6RW52aXJv
bm1lbnRgIGNsYXNzIHRvIGRlZmluZSBhIHRlc3QKK2Vudmlyb25tZW50LCB3aGljaCBrbm93cyBo
b3cgdG8gc2V0LXVwIGFuZCB0ZWFyLWRvd246CisKK2BgYAorY2xhc3MgRW52aXJvbm1lbnQgewor
IHB1YmxpYzoKKyAgdmlydHVhbCB+RW52aXJvbm1lbnQoKSB7fQorICAvLyBPdmVycmlkZSB0aGlz
IHRvIGRlZmluZSBob3cgdG8gc2V0IHVwIHRoZSBlbnZpcm9ubWVudC4KKyAgdmlydHVhbCB2b2lk
IFNldFVwKCkge30KKyAgLy8gT3ZlcnJpZGUgdGhpcyB0byBkZWZpbmUgaG93IHRvIHRlYXIgZG93
biB0aGUgZW52aXJvbm1lbnQuCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHt9Cit9OworYGBg
CisKK1RoZW4sIHlvdSByZWdpc3RlciBhbiBpbnN0YW5jZSBvZiB5b3VyIGVudmlyb25tZW50IGNs
YXNzIHdpdGggR29vZ2xlIFRlc3QgYnkKK2NhbGxpbmcgdGhlIGA6OnRlc3Rpbmc6OkFkZEdsb2Jh
bFRlc3RFbnZpcm9ubWVudCgpYCBmdW5jdGlvbjoKKworYGBgCitFbnZpcm9ubWVudCogQWRkR2xv
YmFsVGVzdEVudmlyb25tZW50KEVudmlyb25tZW50KiBlbnYpOworYGBgCisKK05vdywgd2hlbiBg
UlVOX0FMTF9URVNUUygpYCBpcyBjYWxsZWQsIGl0IGZpcnN0IGNhbGxzIHRoZSBgU2V0VXAoKWAg
bWV0aG9kIG9mCit0aGUgZW52aXJvbm1lbnQgb2JqZWN0LCB0aGVuIHJ1bnMgdGhlIHRlc3RzIGlm
IHRoZXJlIHdhcyBubyBmYXRhbCBmYWlsdXJlcywgYW5kCitmaW5hbGx5IGNhbGxzIGBUZWFyRG93
bigpYCBvZiB0aGUgZW52aXJvbm1lbnQgb2JqZWN0LgorCitJdCdzIE9LIHRvIHJlZ2lzdGVyIG11
bHRpcGxlIGVudmlyb25tZW50IG9iamVjdHMuIEluIHRoaXMgY2FzZSwgdGhlaXIgYFNldFVwKClg
Cit3aWxsIGJlIGNhbGxlZCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgcmVnaXN0ZXJlZCwgYW5kIHRo
ZWlyIGBUZWFyRG93bigpYCB3aWxsIGJlCitjYWxsZWQgaW4gdGhlIHJldmVyc2Ugb3JkZXIuCisK
K05vdGUgdGhhdCBHb29nbGUgVGVzdCB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHJlZ2lzdGVyZWQg
ZW52aXJvbm1lbnQgb2JqZWN0cy4KK1RoZXJlZm9yZSAqKmRvIG5vdCBkZWxldGUgdGhlbSoqIGJ5
IHlvdXJzZWxmLgorCitZb3Ugc2hvdWxkIGNhbGwgYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgp
YCBiZWZvcmUgYFJVTl9BTExfVEVTVFMoKWAgaXMKK2NhbGxlZCwgcHJvYmFibHkgaW4gYG1haW4o
KWAuIElmIHlvdSB1c2UgYGd0ZXN0X21haW5gLCB5b3UgbmVlZCB0byAgICAgIGNhbGwKK3RoaXMg
YmVmb3JlIGBtYWluKClgIHN0YXJ0cyBmb3IgaXQgdG8gdGFrZSBlZmZlY3QuIE9uZSB3YXkgdG8g
ZG8gdGhpcyBpcyB0bworZGVmaW5lIGEgZ2xvYmFsIHZhcmlhYmxlIGxpa2UgdGhpczoKKworYGBg
Cis6OnRlc3Rpbmc6OkVudmlyb25tZW50KiBjb25zdCBmb29fZW52ID0gOjp0ZXN0aW5nOjpBZGRH
bG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEZvb0Vudmlyb25tZW50KTsKK2BgYAorCitIb3dldmVy
LCB3ZSBzdHJvbmdseSByZWNvbW1lbmQgeW91IHRvIHdyaXRlIHlvdXIgb3duIGBtYWluKClgIGFu
ZCBjYWxsCitgQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KClgIHRoZXJlLCBhcyByZWx5aW5nIG9u
IGluaXRpYWxpemF0aW9uIG9mIGdsb2JhbAordmFyaWFibGVzIG1ha2VzIHRoZSBjb2RlIGhhcmRl
ciB0byByZWFkIGFuZCBtYXkgY2F1c2UgcHJvYmxlbXMgd2hlbiB5b3UKK3JlZ2lzdGVyIG11bHRp
cGxlIGVudmlyb25tZW50cyBmcm9tIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cyBhbmQgdGhl
CitlbnZpcm9ubWVudHMgaGF2ZSBkZXBlbmRlbmNpZXMgYW1vbmcgdGhlbSAocmVtZW1iZXIgdGhh
dCB0aGUgY29tcGlsZXIgZG9lc24ndAorZ3VhcmFudGVlIHRoZSBvcmRlciBpbiB3aGljaCBnbG9i
YWwgdmFyaWFibGVzIGZyb20gZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXRzCithcmUgaW5pdGlh
bGl6ZWQpLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworCisjIFZh
bHVlIFBhcmFtZXRlcml6ZWQgVGVzdHMgIworCitfVmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0c18g
YWxsb3cgeW91IHRvIHRlc3QgeW91ciBjb2RlIHdpdGggZGlmZmVyZW50CitwYXJhbWV0ZXJzIHdp
dGhvdXQgd3JpdGluZyBtdWx0aXBsZSBjb3BpZXMgb2YgdGhlIHNhbWUgdGVzdC4KKworU3VwcG9z
ZSB5b3Ugd3JpdGUgYSB0ZXN0IGZvciB5b3VyIGNvZGUgYW5kIHRoZW4gcmVhbGl6ZSB0aGF0IHlv
dXIgY29kZSBpcyBhZmZlY3RlZCBieSBhIHByZXNlbmNlIG9mIGEgQm9vbGVhbiBjb21tYW5kIGxp
bmUgZmxhZy4KKworYGBgCitURVNUKE15Q29kZVRlc3QsIFRlc3RGb28pIHsKKyAgLy8gQSBjb2Rl
IHRvIHRlc3QgZm9vKCkuCit9CitgYGAKKworVXN1YWxseSBwZW9wbGUgZmFjdG9yIHRoZWlyIHRl
c3QgY29kZSBpbnRvIGEgZnVuY3Rpb24gd2l0aCBhIEJvb2xlYW4gcGFyYW1ldGVyIGluIHN1Y2gg
c2l0dWF0aW9ucy4gVGhlIGZ1bmN0aW9uIHNldHMgdGhlIGZsYWcsIHRoZW4gZXhlY3V0ZXMgdGhl
IHRlc3RpbmcgY29kZS4KKworYGBgCit2b2lkIFRlc3RGb29IZWxwZXIoYm9vbCBmbGFnX3ZhbHVl
KSB7CisgIGZsYWcgPSBmbGFnX3ZhbHVlOworICAvLyBBIGNvZGUgdG8gdGVzdCBmb28oKS4KK30K
KworVEVTVChNeUNvZGVUZXN0LCBUZXN0Rm9vKSB7CisgIFRlc3RGb29IZWxwZXIoZmFsc2UpOwor
ICBUZXN0Rm9vSGVscGVyKHRydWUpOworfQorYGBgCisKK0J1dCB0aGlzIHNldHVwIGhhcyBzZXJp
b3VzIGRyYXdiYWNrcy4gRmlyc3QsIHdoZW4gYSB0ZXN0IGFzc2VydGlvbiBmYWlscyBpbiB5b3Vy
IHRlc3RzLCBpdCBiZWNvbWVzIHVuY2xlYXIgd2hhdCB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyIGNh
dXNlZCBpdCB0byBmYWlsLiBZb3UgY2FuIHN0cmVhbSBhIGNsYXJpZnlpbmcgbWVzc2FnZSBpbnRv
IHlvdXIgYEVYUEVDVGAvYEFTU0VSVGAgc3RhdGVtZW50cywgYnV0IGl0IHlvdSdsbCBoYXZlIHRv
IGRvIGl0IHdpdGggYWxsIG9mIHRoZW0uIFNlY29uZCwgeW91IGhhdmUgdG8gYWRkIG9uZSBzdWNo
IGhlbHBlciBmdW5jdGlvbiBwZXIgdGVzdC4gV2hhdCBpZiB5b3UgaGF2ZSB0ZW4gdGVzdHM/IFR3
ZW50eT8gQSBodW5kcmVkPworCitWYWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIHdpbGwgbGV0IHlv
dSB3cml0ZSB5b3VyIHRlc3Qgb25seSBvbmNlIGFuZCB0aGVuIGVhc2lseSBpbnN0YW50aWF0ZSBh
bmQgcnVuIGl0IHdpdGggYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBwYXJhbWV0ZXIgdmFsdWVzLgor
CitIZXJlIGFyZSBzb21lIG90aGVyIHNpdHVhdGlvbnMgd2hlbiB2YWx1ZS1wYXJhbWV0ZXJpemVk
IHRlc3RzIGNvbWUgaGFuZHk6CisKKyAgKiBZb3Ugd2FudCB0byB0ZXN0IGRpZmZlcmVudCBpbXBs
ZW1lbnRhdGlvbnMgb2YgYW4gT08gaW50ZXJmYWNlLgorICAqIFlvdSB3YW50IHRvIHRlc3QgeW91
ciBjb2RlIG92ZXIgdmFyaW91cyBpbnB1dHMgKGEuay5hLiBkYXRhLWRyaXZlbiB0ZXN0aW5nKS4g
VGhpcyBmZWF0dXJlIGlzIGVhc3kgdG8gYWJ1c2UsIHNvIHBsZWFzZSBleGVyY2lzZSB5b3VyIGdv
b2Qgc2Vuc2Ugd2hlbiBkb2luZyBpdCEKKworIyMgSG93IHRvIFdyaXRlIFZhbHVlLVBhcmFtZXRl
cml6ZWQgVGVzdHMgIyMKKworVG8gd3JpdGUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cywgZmly
c3QgeW91IHNob3VsZCBkZWZpbmUgYSBmaXh0dXJlCitjbGFzcy4gIEl0IG11c3QgYmUgZGVyaXZl
ZCBmcm9tIGJvdGggYDo6dGVzdGluZzo6VGVzdGAgYW5kCitgOjp0ZXN0aW5nOjpXaXRoUGFyYW1J
bnRlcmZhY2U8VD5gICh0aGUgbGF0dGVyIGlzIGEgcHVyZSBpbnRlcmZhY2UpLAord2hlcmUgYFRg
IGlzIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVlcy4gIEZvciBjb252ZW5pZW5jZSwg
eW91CitjYW4ganVzdCBkZXJpdmUgdGhlIGZpeHR1cmUgY2xhc3MgZnJvbSBgOjp0ZXN0aW5nOjpU
ZXN0V2l0aFBhcmFtPFQ+YCwKK3doaWNoIGl0c2VsZiBpcyBkZXJpdmVkIGZyb20gYm90aCBgOjp0
ZXN0aW5nOjpUZXN0YCBhbmQKK2A6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxUPmAuIGBU
YCBjYW4gYmUgYW55IGNvcHlhYmxlIHR5cGUuIElmCitpdCdzIGEgcmF3IHBvaW50ZXIsIHlvdSBh
cmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBsaWZlc3BhbiBvZgordGhlIHBvaW50ZWQg
dmFsdWVzLgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0
aFBhcmFtPGNvbnN0IGNoYXIqPiB7CisgIC8vIFlvdSBjYW4gaW1wbGVtZW50IGFsbCB0aGUgdXN1
YWwgZml4dHVyZSBjbGFzcyBtZW1iZXJzIGhlcmUuCisgIC8vIFRvIGFjY2VzcyB0aGUgdGVzdCBw
YXJhbWV0ZXIsIGNhbGwgR2V0UGFyYW0oKSBmcm9tIGNsYXNzCisgIC8vIFRlc3RXaXRoUGFyYW08
VD4uCit9OworCisvLyBPciwgd2hlbiB5b3Ugd2FudCB0byBhZGQgcGFyYW1ldGVycyB0byBhIHBy
ZS1leGlzdGluZyBmaXh0dXJlIGNsYXNzOgorY2xhc3MgQmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpUZXN0IHsKKyAgLi4uCit9OworY2xhc3MgQmFyVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCwK
KyAgICAgICAgICAgICAgICBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8Y29u
c3QgY2hhcio+IHsKKyAgLi4uCit9OworYGBgCisKK1RoZW4sIHVzZSB0aGUgYFRFU1RfUGAgbWFj
cm8gdG8gZGVmaW5lIGFzIG1hbnkgdGVzdCBwYXR0ZXJucyB1c2luZwordGhpcyBmaXh0dXJlIGFz
IHlvdSB3YW50LiAgVGhlIGBfUGAgc3VmZml4IGlzIGZvciAicGFyYW1ldGVyaXplZCIgb3IKKyJw
YXR0ZXJuIiwgd2hpY2hldmVyIHlvdSBwcmVmZXIgdG8gdGhpbmsuCisKK2BgYAorVEVTVF9QKEZv
b1Rlc3QsIERvZXNCbGFoKSB7CisgIC8vIEluc2lkZSBhIHRlc3QsIGFjY2VzcyB0aGUgdGVzdCBw
YXJhbWV0ZXIgd2l0aCB0aGUgR2V0UGFyYW0oKSBtZXRob2QKKyAgLy8gb2YgdGhlIFRlc3RXaXRo
UGFyYW08VD4gY2xhc3M6CisgIEVYUEVDVF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsKKyAg
Li4uCit9CisKK1RFU1RfUChGb29UZXN0LCBIYXNCbGFoQmxhaCkgeworICAuLi4KK30KK2BgYAor
CitGaW5hbGx5LCB5b3UgY2FuIHVzZSBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIHRvIGluc3Rh
bnRpYXRlIHRoZSB0ZXN0CitjYXNlIHdpdGggYW55IHNldCBvZiBwYXJhbWV0ZXJzIHlvdSB3YW50
LiBHb29nbGUgVGVzdCBkZWZpbmVzIGEgbnVtYmVyIG9mCitmdW5jdGlvbnMgZm9yIGdlbmVyYXRp
bmcgdGVzdCBwYXJhbWV0ZXJzLiBUaGV5IHJldHVybiB3aGF0IHdlIGNhbGwKKyhzdXJwcmlzZSEp
IF9wYXJhbWV0ZXIgZ2VuZXJhdG9yc18uIEhlcmUgaXMgYSBzdW1tYXJ5IG9mIHRoZW0sCit3aGlj
aCBhcmUgYWxsIGluIHRoZSBgdGVzdGluZ2AgbmFtZXNwYWNlOgorCit8IGBSYW5nZShiZWdpbiwg
ZW5kWywgc3RlcF0pYCB8IFlpZWxkcyB2YWx1ZXMgYHtiZWdpbiwgYmVnaW4rc3RlcCwgYmVnaW4r
c3RlcCtzdGVwLCAuLi59YC4gVGhlIHZhbHVlcyBkbyBub3QgaW5jbHVkZSBgZW5kYC4gYHN0ZXBg
IGRlZmF1bHRzIHRvIDEuIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBg
VmFsdWVzKHYxLCB2MiwgLi4uLCB2TilgICAgfCBZaWVsZHMgdmFsdWVzIGB7djEsIHYyLCAuLi4s
IHZOfWAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBWYWx1ZXNJbihjb250YWluZXIpYCBh
bmQgYFZhbHVlc0luKGJlZ2luLCBlbmQpYCB8IFlpZWxkcyB2YWx1ZXMgZnJvbSBhIEMtc3R5bGUg
YXJyYXksIGFuIFNUTC1zdHlsZSBjb250YWluZXIsIG9yIGFuIGl0ZXJhdG9yIHJhbmdlIGBbYmVn
aW4sIGVuZClgLiBgY29udGFpbmVyYCwgYGJlZ2luYCwgYW5kIGBlbmRgIGNhbiBiZSBleHByZXNz
aW9ucyB3aG9zZSB2YWx1ZXMgYXJlIGRldGVybWluZWQgYXQgcnVuIHRpbWUuICB8Cit8IGBCb29s
KClgICAgICAgICAgICAgICAgICAgICB8IFlpZWxkcyBzZXF1ZW5jZSBge2ZhbHNlLCB0cnVlfWAu
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYENvbWJpbmUoZzEsIGcyLCAuLi4sIGdOKWAg
IHwgWWllbGRzIGFsbCBjb21iaW5hdGlvbnMgKHRoZSBDYXJ0ZXNpYW4gcHJvZHVjdCBmb3IgdGhl
IG1hdGggc2F2dnkpIG9mIHRoZSB2YWx1ZXMgZ2VuZXJhdGVkIGJ5IHRoZSBgTmAgZ2VuZXJhdG9y
cy4gVGhpcyBpcyBvbmx5IGF2YWlsYWJsZSBpZiB5b3VyIHN5c3RlbSBwcm92aWRlcyB0aGUgYDx0
cjEvdHVwbGU+YCBoZWFkZXIuIElmIHlvdSBhcmUgc3VyZSB5b3VyIHN5c3RlbSBkb2VzLCBhbmQg
R29vZ2xlIFRlc3QgZGlzYWdyZWVzLCB5b3UgY2FuIG92ZXJyaWRlIGl0IGJ5IGRlZmluaW5nIGBH
VEVTVF9IQVNfVFIxX1RVUExFPTFgLiBTZWUgY29tbWVudHMgaW4gW2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcG9ydC5oXSguLi9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQu
aCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uIHwKKworRm9yIG1vcmUgZGV0YWlscywgc2VlIHRoZSBj
b21tZW50cyBhdCB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlc2UgZnVuY3Rpb25zIGluIHRoZSBbc291
cmNlIGNvZGVdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oKS4KKworVGhlIGZv
bGxvd2luZyBzdGF0ZW1lbnQgd2lsbCBpbnN0YW50aWF0ZSB0ZXN0cyBmcm9tIHRoZSBgRm9vVGVz
dGAgdGVzdCBjYXNlCitlYWNoIHdpdGggcGFyYW1ldGVyIHZhbHVlcyBgIm1lZW55ImAsIGAibWlu
eSJgLCBhbmQgYCJtb2UiYC4KKworYGBgCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChJbnN0YW50
aWF0aW9uTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvb1Rlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygibWVlbnkiLCAibWlueSIsICJtb2UiKSk7
CitgYGAKKworVG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50IGluc3RhbmNlcyBvZiB0aGUgcGF0dGVy
biAoeWVzLCB5b3UgY2FuCitpbnN0YW50aWF0ZSBpdCBtb3JlIHRoYW4gb25jZSksIHRoZSBmaXJz
dCBhcmd1bWVudCB0bworYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCBpcyBhIHByZWZpeCB0aGF0
IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGFjdHVhbAordGVzdCBjYXNlIG5hbWUuIFJlbWVtYmVyIHRv
IHBpY2sgdW5pcXVlIHByZWZpeGVzIGZvciBkaWZmZXJlbnQKK2luc3RhbnRpYXRpb25zLiBUaGUg
dGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhhdmUgdGhlc2UKK25hbWVz
OgorCisgICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMGAgZm9yIGAibWVl
bnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzFgIGZvciBgIm1p
bnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzJgIGZvciBgIm1v
ZSJgCisgICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMGAgZm9yIGAi
bWVlbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzFgIGZv
ciBgIm1pbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzJg
IGZvciBgIm1vZSJgCisKK1lvdSBjYW4gdXNlIHRoZXNlIG5hbWVzIGluIFstLWd0ZXN0XF9maWx0
ZXJdKCNydW5uaW5nLWEtc3Vic2V0LW9mLXRoZS10ZXN0cykuCisKK1RoaXMgc3RhdGVtZW50IHdp
bGwgaW5zdGFudGlhdGUgYWxsIHRlc3RzIGZyb20gYEZvb1Rlc3RgIGFnYWluLCBlYWNoCit3aXRo
IHBhcmFtZXRlciB2YWx1ZXMgYCJjYXQiYCBhbmQgYCJkb2ciYDoKKworYGBgCitjb25zdCBjaGFy
KiBwZXRzW10gPSB7ImNhdCIsICJkb2cifTsKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFub3Ro
ZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6
dGVzdGluZzo6VmFsdWVzSW4ocGV0cykpOworYGBgCisKK1RoZSB0ZXN0cyBmcm9tIHRoZSBpbnN0
YW50aWF0aW9uIGFib3ZlIHdpbGwgaGF2ZSB0aGVzZSBuYW1lczoKKworICAqIGBBbm90aGVySW5z
dGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8wYCBmb3IgYCJjYXQiYAorICAqIGBBbm90
aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8xYCBmb3IgYCJkb2ciYAorICAq
IGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8wYCBmb3IgYCJj
YXQiYAorICAqIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8x
YCBmb3IgYCJkb2ciYAorCitQbGVhc2Ugbm90ZSB0aGF0IGBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UGAgd2lsbCBpbnN0YW50aWF0ZSBfYWxsXwordGVzdHMgaW4gdGhlIGdpdmVuIHRlc3QgY2FzZSwg
d2hldGhlciB0aGVpciBkZWZpbml0aW9ucyBjb21lIGJlZm9yZSBvcgorX2FmdGVyXyB0aGUgYElO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCBzdGF0ZW1lbnQuCisKK1lvdSBjYW4gc2VlCitbdGhlc2Vd
KC4uL3NhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYykKK1tmaWxlc10oLi4vc2FtcGxlcy9zYW1w
bGU4X3VuaXR0ZXN0LmNjKSBmb3IgbW9yZSBleGFtcGxlcy4KKworX0F2YWlsYWJpbGl0eV86IExp
bnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYzsgc2luY2UgdmVy
c2lvbiAxLjIuMC4KKworIyMgQ3JlYXRpbmcgVmFsdWUtUGFyYW1ldGVyaXplZCBBYnN0cmFjdCBU
ZXN0cyAjIworCitJbiB0aGUgYWJvdmUsIHdlIGRlZmluZSBhbmQgaW5zdGFudGlhdGUgYEZvb1Rl
c3RgIGluIHRoZSBzYW1lIHNvdXJjZQorZmlsZS4gU29tZXRpbWVzIHlvdSBtYXkgd2FudCB0byBk
ZWZpbmUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBpbiBhCitsaWJyYXJ5IGFuZCBsZXQgb3Ro
ZXIgcGVvcGxlIGluc3RhbnRpYXRlIHRoZW0gbGF0ZXIuIFRoaXMgcGF0dGVybiBpcwora25vd24g
YXMgPGk+YWJzdHJhY3QgdGVzdHM8L2k+LiBBcyBhbiBleGFtcGxlIG9mIGl0cyBhcHBsaWNhdGlv
biwgd2hlbiB5b3UKK2FyZSBkZXNpZ25pbmcgYW4gaW50ZXJmYWNlIHlvdSBjYW4gd3JpdGUgYSBz
dGFuZGFyZCBzdWl0ZSBvZiBhYnN0cmFjdAordGVzdHMgKHBlcmhhcHMgdXNpbmcgYSBmYWN0b3J5
IGZ1bmN0aW9uIGFzIHRoZSB0ZXN0IHBhcmFtZXRlcikgdGhhdAorYWxsIGltcGxlbWVudGF0aW9u
cyBvZiB0aGUgaW50ZXJmYWNlIGFyZSBleHBlY3RlZCB0byBwYXNzLiBXaGVuCitzb21lb25lIGlt
cGxlbWVudHMgdGhlIGludGVyZmFjZSwgaGUgY2FuIGluc3RhbnRpYXRlIHlvdXIgc3VpdGUgdG8g
Z2V0CithbGwgdGhlIGludGVyZmFjZS1jb25mb3JtYW5jZSB0ZXN0cyBmb3IgZnJlZS4KKworVG8g
ZGVmaW5lIGFic3RyYWN0IHRlc3RzLCB5b3Ugc2hvdWxkIG9yZ2FuaXplIHlvdXIgY29kZSBsaWtl
IHRoaXM6CisKKyAgMS4gUHV0IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBwYXJhbWV0ZXJpemVkIHRl
c3QgZml4dHVyZSBjbGFzcyAoZS5nLiBgRm9vVGVzdGApIGluIGEgaGVhZGVyIGZpbGUsIHNheSBg
Zm9vX3BhcmFtX3Rlc3QuaGAuIFRoaW5rIG9mIHRoaXMgYXMgX2RlY2xhcmluZ18geW91ciBhYnN0
cmFjdCB0ZXN0cy4KKyAgMS4gUHV0IHRoZSBgVEVTVF9QYCBkZWZpbml0aW9ucyBpbiBgZm9vX3Bh
cmFtX3Rlc3QuY2NgLCB3aGljaCBpbmNsdWRlcyBgZm9vX3BhcmFtX3Rlc3QuaGAuIFRoaW5rIG9m
IHRoaXMgYXMgX2ltcGxlbWVudGluZ18geW91ciBhYnN0cmFjdCB0ZXN0cy4KKworT25jZSB0aGV5
IGFyZSBkZWZpbmVkLCB5b3UgY2FuIGluc3RhbnRpYXRlIHRoZW0gYnkgaW5jbHVkaW5nCitgZm9v
X3BhcmFtX3Rlc3QuaGAsIGludm9raW5nIGBJTlNUQU5USUFURV9URVNUX0NBU0VfUCgpYCwgYW5k
IGxpbmtpbmcKK3dpdGggYGZvb19wYXJhbV90ZXN0LmNjYC4gWW91IGNhbiBpbnN0YW50aWF0ZSB0
aGUgc2FtZSBhYnN0cmFjdCB0ZXN0CitjYXNlIG11bHRpcGxlIHRpbWVzLCBwb3NzaWJseSBpbiBk
aWZmZXJlbnQgc291cmNlIGZpbGVzLgorCisjIFR5cGVkIFRlc3RzICMKKworU3VwcG9zZSB5b3Ug
aGF2ZSBtdWx0aXBsZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZAor
d2FudCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb2YgdGhlbSBzYXRpc2Z5IHNvbWUgY29tbW9uIHJl
cXVpcmVtZW50cy4KK09yLCB5b3UgbWF5IGhhdmUgZGVmaW5lZCBzZXZlcmFsIHR5cGVzIHRoYXQg
YXJlIHN1cHBvc2VkIHRvIGNvbmZvcm0gdG8KK3RoZSBzYW1lICJjb25jZXB0IiBhbmQgeW91IHdh
bnQgdG8gdmVyaWZ5IGl0LiAgSW4gYm90aCBjYXNlcywgeW91IHdhbnQKK3RoZSBzYW1lIHRlc3Qg
bG9naWMgcmVwZWF0ZWQgZm9yIGRpZmZlcmVudCB0eXBlcy4KKworV2hpbGUgeW91IGNhbiB3cml0
ZSBvbmUgYFRFU1RgIG9yIGBURVNUX0ZgIGZvciBlYWNoIHR5cGUgeW91IHdhbnQgdG8KK3Rlc3Qg
KGFuZCB5b3UgbWF5IGV2ZW4gZmFjdG9yIHRoZSB0ZXN0IGxvZ2ljIGludG8gYSBmdW5jdGlvbiB0
ZW1wbGF0ZQordGhhdCB5b3UgaW52b2tlIGZyb20gdGhlIGBURVNUYCksIGl0J3MgdGVkaW91cyBh
bmQgZG9lc24ndCBzY2FsZToKK2lmIHlvdSB3YW50IF9tXyB0ZXN0cyBvdmVyIF9uXyB0eXBlcywg
eW91J2xsIGVuZCB1cCB3cml0aW5nIF9tXCpuXworYFRFU1Rgcy4KKworX1R5cGVkIHRlc3RzXyBh
bGxvdyB5b3UgdG8gcmVwZWF0IHRoZSBzYW1lIHRlc3QgbG9naWMgb3ZlciBhIGxpc3Qgb2YKK3R5
cGVzLiAgWW91IG9ubHkgbmVlZCB0byB3cml0ZSB0aGUgdGVzdCBsb2dpYyBvbmNlLCBhbHRob3Vn
aCB5b3UgbXVzdAora25vdyB0aGUgdHlwZSBsaXN0IHdoZW4gd3JpdGluZyB0eXBlZCB0ZXN0cy4g
IEhlcmUncyBob3cgeW91IGRvIGl0OgorCitGaXJzdCwgZGVmaW5lIGEgZml4dHVyZSBjbGFzcyB0
ZW1wbGF0ZS4gIEl0IHNob3VsZCBiZSBwYXJhbWV0ZXJpemVkCitieSBhIHR5cGUuICBSZW1lbWJl
ciB0byBkZXJpdmUgaXQgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0YDoKKworYGBgCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBw
dWJsaWM6CisgIC4uLgorICB0eXBlZGVmIHN0ZDo6bGlzdDxUPiBMaXN0OworICBzdGF0aWMgVCBz
aGFyZWRfOworICBUIHZhbHVlXzsKK307CitgYGAKKworTmV4dCwgYXNzb2NpYXRlIGEgbGlzdCBv
ZiB0eXBlcyB3aXRoIHRoZSB0ZXN0IGNhc2UsIHdoaWNoIHdpbGwgYmUKK3JlcGVhdGVkIGZvciBl
YWNoIHR5cGUgaW4gdGhlIGxpc3Q6CisKK2BgYAordHlwZWRlZiA6OnRlc3Rpbmc6OlR5cGVzPGNo
YXIsIGludCwgdW5zaWduZWQgaW50PiBNeVR5cGVzOworVFlQRURfVEVTVF9DQVNFKEZvb1Rlc3Qs
IE15VHlwZXMpOworYGBgCisKK1RoZSBgdHlwZWRlZmAgaXMgbmVjZXNzYXJ5IGZvciB0aGUgYFRZ
UEVEX1RFU1RfQ0FTRWAgbWFjcm8gdG8gcGFyc2UKK2NvcnJlY3RseS4gIE90aGVyd2lzZSB0aGUg
Y29tcGlsZXIgd2lsbCB0aGluayB0aGF0IGVhY2ggY29tbWEgaW4gdGhlCit0eXBlIGxpc3QgaW50
cm9kdWNlcyBhIG5ldyBtYWNybyBhcmd1bWVudC4KKworVGhlbiwgdXNlIGBUWVBFRF9URVNUKClg
IGluc3RlYWQgb2YgYFRFU1RfRigpYCB0byBkZWZpbmUgYSB0eXBlZCB0ZXN0Citmb3IgdGhpcyB0
ZXN0IGNhc2UuICBZb3UgY2FuIHJlcGVhdCB0aGlzIGFzIG1hbnkgdGltZXMgYXMgeW91IHdhbnQ6
CisKK2BgYAorVFlQRURfVEVTVChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJbnNpZGUgYSB0
ZXN0LCByZWZlciB0byB0aGUgc3BlY2lhbCBuYW1lIFR5cGVQYXJhbSB0byBnZXQgdGhlIHR5cGUK
KyAgLy8gcGFyYW1ldGVyLiAgU2luY2Ugd2UgYXJlIGluc2lkZSBhIGRlcml2ZWQgY2xhc3MgdGVt
cGxhdGUsIEMrKyByZXF1aXJlcworICAvLyB1cyB0byB2aXNpdCB0aGUgbWVtYmVycyBvZiBGb29U
ZXN0IHZpYSAndGhpcycuCisgIFR5cGVQYXJhbSBuID0gdGhpcy0+dmFsdWVfOworCisgIC8vIFRv
IHZpc2l0IHN0YXRpYyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlLCBhZGQgdGhlICdUZXN0Rml4dHVy
ZTo6JworICAvLyBwcmVmaXguCisgIG4gKz0gVGVzdEZpeHR1cmU6OnNoYXJlZF87CisKKyAgLy8g
VG8gcmVmZXIgdG8gdHlwZWRlZnMgaW4gdGhlIGZpeHR1cmUsIGFkZCB0aGUgJ3R5cGVuYW1lIFRl
c3RGaXh0dXJlOjonCisgIC8vIHByZWZpeC4gIFRoZSAndHlwZW5hbWUnIGlzIHJlcXVpcmVkIHRv
IHNhdGlzZnkgdGhlIGNvbXBpbGVyLgorICB0eXBlbmFtZSBUZXN0Rml4dHVyZTo6TGlzdCB2YWx1
ZXM7CisgIHZhbHVlcy5wdXNoX2JhY2sobik7CisgIC4uLgorfQorCitUWVBFRF9URVNUKEZvb1Rl
c3QsIEhhc1Byb3BlcnR5QSkgeyAuLi4gfQorYGBgCisKK1lvdSBjYW4gc2VlIGBzYW1wbGVzL3Nh
bXBsZTZfdW5pdHRlc3QuY2NgIGZvciBhIGNvbXBsZXRlIGV4YW1wbGUuCisKK19BdmFpbGFiaWxp
dHk6XyBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBNYWM7Citz
aW5jZSB2ZXJzaW9uIDEuMS4wLgorCisjIFR5cGUtUGFyYW1ldGVyaXplZCBUZXN0cyAjCisKK19U
eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHNfIGFyZSBsaWtlIHR5cGVkIHRlc3RzLCBleGNlcHQgdGhh
dCB0aGV5Citkb24ndCByZXF1aXJlIHlvdSB0byBrbm93IHRoZSBsaXN0IG9mIHR5cGVzIGFoZWFk
IG9mIHRpbWUuICBJbnN0ZWFkLAoreW91IGNhbiBkZWZpbmUgdGhlIHRlc3QgbG9naWMgZmlyc3Qg
YW5kIGluc3RhbnRpYXRlIGl0IHdpdGggZGlmZmVyZW50Cit0eXBlIGxpc3RzIGxhdGVyLiAgWW91
IGNhbiBldmVuIGluc3RhbnRpYXRlIGl0IG1vcmUgdGhhbiBvbmNlIGluIHRoZQorc2FtZSBwcm9n
cmFtLgorCitJZiB5b3UgYXJlIGRlc2lnbmluZyBhbiBpbnRlcmZhY2Ugb3IgY29uY2VwdCwgeW91
IGNhbiBkZWZpbmUgYSBzdWl0ZQorb2YgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzIHRvIHZlcmlm
eSBwcm9wZXJ0aWVzIHRoYXQgYW55IHZhbGlkCitpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaW50ZXJm
YWNlL2NvbmNlcHQgc2hvdWxkIGhhdmUuICBUaGVuLCB0aGUgYXV0aG9yCitvZiBlYWNoIGltcGxl
bWVudGF0aW9uIGNhbiBqdXN0IGluc3RhbnRpYXRlIHRoZSB0ZXN0IHN1aXRlIHdpdGggaGlzCit0
eXBlIHRvIHZlcmlmeSB0aGF0IGl0IGNvbmZvcm1zIHRvIHRoZSByZXF1aXJlbWVudHMsIHdpdGhv
dXQgaGF2aW5nIHRvCit3cml0ZSBzaW1pbGFyIHRlc3RzIHJlcGVhdGVkbHkuICBIZXJlJ3MgYW4g
ZXhhbXBsZToKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUsIGFzIHdl
IGRpZCB3aXRoIHR5cGVkIHRlc3RzOgorCitgYGAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xh
c3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICAuLi4KK307CitgYGAKKwor
TmV4dCwgZGVjbGFyZSB0aGF0IHlvdSB3aWxsIGRlZmluZSBhIHR5cGUtcGFyYW1ldGVyaXplZCB0
ZXN0IGNhc2U6CisKK2BgYAorVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7CitgYGAKKworVGhl
IGBfUGAgc3VmZml4IGlzIGZvciAicGFyYW1ldGVyaXplZCIgb3IgInBhdHRlcm4iLCB3aGljaGV2
ZXIgeW91CitwcmVmZXIgdG8gdGhpbmsuCisKK1RoZW4sIHVzZSBgVFlQRURfVEVTVF9QKClgIHRv
IGRlZmluZSBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LiAgWW91CitjYW4gcmVwZWF0IHRoaXMg
YXMgbWFueSB0aW1lcyBhcyB5b3Ugd2FudDoKKworYGBgCitUWVBFRF9URVNUX1AoRm9vVGVzdCwg
RG9lc0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIgdG8gVHlwZVBhcmFtIHRvIGdl
dCB0aGUgdHlwZSBwYXJhbWV0ZXIuCisgIFR5cGVQYXJhbSBuID0gMDsKKyAgLi4uCit9CisKK1RZ
UEVEX1RFU1RfUChGb29UZXN0LCBIYXNQcm9wZXJ0eUEpIHsgLi4uIH0KK2BgYAorCitOb3cgdGhl
IHRyaWNreSBwYXJ0OiB5b3UgbmVlZCB0byByZWdpc3RlciBhbGwgdGVzdCBwYXR0ZXJucyB1c2lu
ZyB0aGUKK2BSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUGAgbWFjcm8gYmVmb3JlIHlvdSBjYW4g
aW5zdGFudGlhdGUgdGhlbS4KK1RoZSBmaXJzdCBhcmd1bWVudCBvZiB0aGUgbWFjcm8gaXMgdGhl
IHRlc3QgY2FzZSBuYW1lOyB0aGUgcmVzdCBhcmUKK3RoZSBuYW1lcyBvZiB0aGUgdGVzdHMgaW4g
dGhpcyB0ZXN0IGNhc2U6CisKK2BgYAorUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERvZXNCbGFoLCBIYXNQcm9wZXJ0eUEpOwor
YGBgCisKK0ZpbmFsbHksIHlvdSBhcmUgZnJlZSB0byBpbnN0YW50aWF0ZSB0aGUgcGF0dGVybiB3
aXRoIHRoZSB0eXBlcyB5b3UKK3dhbnQuICBJZiB5b3UgcHV0IHRoZSBhYm92ZSBjb2RlIGluIGEg
aGVhZGVyIGZpbGUsIHlvdSBjYW4gYCNpbmNsdWRlYAoraXQgaW4gbXVsdGlwbGUgQysrIHNvdXJj
ZSBmaWxlcyBhbmQgaW5zdGFudGlhdGUgaXQgbXVsdGlwbGUgdGltZXMuCisKK2BgYAordHlwZWRl
ZiA6OnRlc3Rpbmc6OlR5cGVzPGNoYXIsIGludCwgdW5zaWduZWQgaW50PiBNeVR5cGVzOworSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMpOworYGBgCisK
K1RvIGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4sIHRoZSBm
aXJzdCBhcmd1bWVudAordG8gdGhlIGBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUGAgbWFj
cm8gaXMgYSBwcmVmaXggdGhhdCB3aWxsIGJlCithZGRlZCB0byB0aGUgYWN0dWFsIHRlc3QgY2Fz
ZSBuYW1lLiAgUmVtZW1iZXIgdG8gcGljayB1bmlxdWUgcHJlZml4ZXMKK2ZvciBkaWZmZXJlbnQg
aW5zdGFuY2VzLgorCitJbiB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoZSB0eXBlIGxpc3QgY29u
dGFpbnMgb25seSBvbmUgdHlwZSwgeW91CitjYW4gd3JpdGUgdGhhdCB0eXBlIGRpcmVjdGx5IHdp
dGhvdXQgYDo6dGVzdGluZzo6VHlwZXM8Li4uPmAsIGxpa2UgdGhpczoKKworYGBgCitJTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgaW50KTsKK2BgYAorCitZb3UgY2Fu
IHNlZSBgc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjYCBmb3IgYSBjb21wbGV0ZSBleGFtcGxl
LgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9y
IGFib3ZlKSwgTWFjOworc2luY2UgdmVyc2lvbiAxLjEuMC4KKworIyBUZXN0aW5nIFByaXZhdGUg
Q29kZSAjCisKK0lmIHlvdSBjaGFuZ2UgeW91ciBzb2Z0d2FyZSdzIGludGVybmFsIGltcGxlbWVu
dGF0aW9uLCB5b3VyIHRlc3RzIHNob3VsZCBub3QKK2JyZWFrIGFzIGxvbmcgYXMgdGhlIGNoYW5n
ZSBpcyBub3Qgb2JzZXJ2YWJsZSBieSB1c2Vycy4gVGhlcmVmb3JlLCBwZXIgdGhlCitfYmxhY2st
Ym94IHRlc3RpbmcgcHJpbmNpcGxlXywgbW9zdCBvZiB0aGUgdGltZSB5b3Ugc2hvdWxkIHRlc3Qg
eW91ciBjb2RlCit0aHJvdWdoIGl0cyBwdWJsaWMgaW50ZXJmYWNlcy4KKworSWYgeW91IHN0aWxs
IGZpbmQgeW91cnNlbGYgbmVlZGluZyB0byB0ZXN0IGludGVybmFsIGltcGxlbWVudGF0aW9uIGNv
ZGUsCitjb25zaWRlciBpZiB0aGVyZSdzIGEgYmV0dGVyIGRlc2lnbiB0aGF0IHdvdWxkbid0IHJl
cXVpcmUgeW91IHRvIGRvIHNvLiBJZiB5b3UKK2Fic29sdXRlbHkgaGF2ZSB0byB0ZXN0IG5vbi1w
dWJsaWMgaW50ZXJmYWNlIGNvZGUgdGhvdWdoLCB5b3UgY2FuLiBUaGVyZSBhcmUKK3R3byBjYXNl
cyB0byBjb25zaWRlcjoKKworICAqIFN0YXRpYyBmdW5jdGlvbnMgKF9ub3RfIHRoZSBzYW1lIGFz
IHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zISkgb3IgdW5uYW1lZCBuYW1lc3BhY2VzLCBhbmQKKyAg
KiBQcml2YXRlIG9yIHByb3RlY3RlZCBjbGFzcyBtZW1iZXJzCisKKyMjIFN0YXRpYyBGdW5jdGlv
bnMgIyMKKworQm90aCBzdGF0aWMgZnVuY3Rpb25zIGFuZCBkZWZpbml0aW9ucy9kZWNsYXJhdGlv
bnMgaW4gYW4gdW5uYW1lZCBuYW1lc3BhY2UgYXJlCitvbmx5IHZpc2libGUgd2l0aGluIHRoZSBz
YW1lIHRyYW5zbGF0aW9uIHVuaXQuIFRvIHRlc3QgdGhlbSwgeW91IGNhbiBgI2luY2x1ZGVgCit0
aGUgZW50aXJlIGAuY2NgIGZpbGUgYmVpbmcgdGVzdGVkIGluIHlvdXIgYCpfdGVzdC5jY2AgZmls
ZS4gKGAjaW5jbHVkZWBpbmcgYC5jY2AKK2ZpbGVzIGlzIG5vdCBhIGdvb2Qgd2F5IHRvIHJldXNl
IGNvZGUgLSB5b3Ugc2hvdWxkIG5vdCBkbyB0aGlzIGluIHByb2R1Y3Rpb24KK2NvZGUhKQorCitI
b3dldmVyLCBhIGJldHRlciBhcHByb2FjaCBpcyB0byBtb3ZlIHRoZSBwcml2YXRlIGNvZGUgaW50
byB0aGUKK2Bmb286OmludGVybmFsYCBuYW1lc3BhY2UsIHdoZXJlIGBmb29gIGlzIHRoZSBuYW1l
c3BhY2UgeW91ciBwcm9qZWN0IG5vcm1hbGx5Cit1c2VzLCBhbmQgcHV0IHRoZSBwcml2YXRlIGRl
Y2xhcmF0aW9ucyBpbiBhIGAqLWludGVybmFsLmhgIGZpbGUuIFlvdXIKK3Byb2R1Y3Rpb24gYC5j
Y2AgZmlsZXMgYW5kIHlvdXIgdGVzdHMgYXJlIGFsbG93ZWQgdG8gaW5jbHVkZSB0aGlzIGludGVy
bmFsCitoZWFkZXIsIGJ1dCB5b3VyIGNsaWVudHMgYXJlIG5vdC4gVGhpcyB3YXksIHlvdSBjYW4g
ZnVsbHkgdGVzdCB5b3VyIGludGVybmFsCitpbXBsZW1lbnRhdGlvbiB3aXRob3V0IGxlYWtpbmcg
aXQgdG8geW91ciBjbGllbnRzLgorCisjIyBQcml2YXRlIENsYXNzIE1lbWJlcnMgIyMKKworUHJp
dmF0ZSBjbGFzcyBtZW1iZXJzIGFyZSBvbmx5IGFjY2Vzc2libGUgZnJvbSB3aXRoaW4gdGhlIGNs
YXNzIG9yIGJ5IGZyaWVuZHMuCitUbyBhY2Nlc3MgYSBjbGFzcycgcHJpdmF0ZSBtZW1iZXJzLCB5
b3UgY2FuIGRlY2xhcmUgeW91ciB0ZXN0IGZpeHR1cmUgYXMgYQorZnJpZW5kIHRvIHRoZSBjbGFz
cyBhbmQgZGVmaW5lIGFjY2Vzc29ycyBpbiB5b3VyIGZpeHR1cmUuIFRlc3RzIHVzaW5nIHRoZQor
Zml4dHVyZSBjYW4gdGhlbiBhY2Nlc3MgdGhlIHByaXZhdGUgbWVtYmVycyBvZiB5b3VyIHByb2R1
Y3Rpb24gY2xhc3MgdmlhIHRoZQorYWNjZXNzb3JzIGluIHRoZSBmaXh0dXJlLiBOb3RlIHRoYXQg
ZXZlbiB0aG91Z2ggeW91ciBmaXh0dXJlIGlzIGEgZnJpZW5kIHRvCit5b3VyIHByb2R1Y3Rpb24g
Y2xhc3MsIHlvdXIgdGVzdHMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IGZyaWVuZHMgdG8gaXQsIGFz
IHRoZXkKK2FyZSB0ZWNobmljYWxseSBkZWZpbmVkIGluIHN1Yi1jbGFzc2VzIG9mIHRoZSBmaXh0
dXJlLgorCitBbm90aGVyIHdheSB0byB0ZXN0IHByaXZhdGUgbWVtYmVycyBpcyB0byByZWZhY3Rv
ciB0aGVtIGludG8gYW4gaW1wbGVtZW50YXRpb24KK2NsYXNzLCB3aGljaCBpcyB0aGVuIGRlY2xh
cmVkIGluIGEgYCotaW50ZXJuYWwuaGAgZmlsZS4gWW91ciBjbGllbnRzIGFyZW4ndAorYWxsb3dl
ZCB0byBpbmNsdWRlIHRoaXMgaGVhZGVyIGJ1dCB5b3VyIHRlc3RzIGNhbi4gU3VjaCBpcyBjYWxs
ZWQgdGhlIFBpbXBsCisoUHJpdmF0ZSBJbXBsZW1lbnRhdGlvbikgaWRpb20uCisKK09yLCB5b3Ug
Y2FuIGRlY2xhcmUgYW4gaW5kaXZpZHVhbCB0ZXN0IGFzIGEgZnJpZW5kIG9mIHlvdXIgY2xhc3Mg
YnkgYWRkaW5nIHRoaXMKK2xpbmUgaW4gdGhlIGNsYXNzIGJvZHk6CisKK2BgYAorRlJJRU5EX1RF
U1QoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSk7CitgYGAKKworRm9yIGV4YW1wbGUsCitgYGAKKy8v
IGZvby5oCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3RfcHJvZC5oIgorCisvLyBEZWZpbmVzIEZSSUVO
RF9URVNULgorY2xhc3MgRm9vIHsKKyAgLi4uCisgcHJpdmF0ZToKKyAgRlJJRU5EX1RFU1QoRm9v
VGVzdCwgQmFyUmV0dXJuc1plcm9Pbk51bGwpOworICBpbnQgQmFyKHZvaWQqIHgpOworfTsKKwor
Ly8gZm9vX3Rlc3QuY2MKKy4uLgorVEVTVChGb29UZXN0LCBCYXJSZXR1cm5zWmVyb09uTnVsbCkg
eworICBGb28gZm9vOworICBFWFBFQ1RfRVEoMCwgZm9vLkJhcihOVUxMKSk7CisgIC8vIFVzZXMg
Rm9vJ3MgcHJpdmF0ZSBtZW1iZXIgQmFyKCkuCit9CitgYGAKKworUGF5IHNwZWNpYWwgYXR0ZW50
aW9uIHdoZW4geW91ciBjbGFzcyBpcyBkZWZpbmVkIGluIGEgbmFtZXNwYWNlLCBhcyB5b3Ugc2hv
dWxkCitkZWZpbmUgeW91ciB0ZXN0IGZpeHR1cmVzIGFuZCB0ZXN0cyBpbiB0aGUgc2FtZSBuYW1l
c3BhY2UgaWYgeW91IHdhbnQgdGhlbSB0bworYmUgZnJpZW5kcyBvZiB5b3VyIGNsYXNzLiBGb3Ig
ZXhhbXBsZSwgaWYgdGhlIGNvZGUgdG8gYmUgdGVzdGVkIGxvb2tzIGxpa2U6CisKK2BgYAorbmFt
ZXNwYWNlIG15X25hbWVzcGFjZSB7CisKK2NsYXNzIEZvbyB7CisgIGZyaWVuZCBjbGFzcyBGb29U
ZXN0OworICBGUklFTkRfVEVTVChGb29UZXN0LCBCYXIpOworICBGUklFTkRfVEVTVChGb29UZXN0
LCBCYXopOworICAuLi4KKyAgZGVmaW5pdGlvbiBvZiB0aGUgY2xhc3MgRm9vCisgIC4uLgorfTsK
KworfSAgLy8gbmFtZXNwYWNlIG15X25hbWVzcGFjZQorYGBgCisKK1lvdXIgdGVzdCBjb2RlIHNo
b3VsZCBiZSBzb21ldGhpbmcgbGlrZToKKworYGBgCituYW1lc3BhY2UgbXlfbmFtZXNwYWNlIHsK
K2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6Cisg
IC4uLgorfTsKKworVEVTVF9GKEZvb1Rlc3QsIEJhcikgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3Qs
IEJheikgeyAuLi4gfQorCit9ICAvLyBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlCitgYGAKKworIyBD
YXRjaGluZyBGYWlsdXJlcyAjCisKK0lmIHlvdSBhcmUgYnVpbGRpbmcgYSB0ZXN0aW5nIHV0aWxp
dHkgb24gdG9wIG9mIEdvb2dsZSBUZXN0LCB5b3UnbGwKK3dhbnQgdG8gdGVzdCB5b3VyIHV0aWxp
dHkuICBXaGF0IGZyYW1ld29yayB3b3VsZCB5b3UgdXNlIHRvIHRlc3QgaXQ/CitHb29nbGUgVGVz
dCwgb2YgY291cnNlLgorCitUaGUgY2hhbGxlbmdlIGlzIHRvIHZlcmlmeSB0aGF0IHlvdXIgdGVz
dGluZyB1dGlsaXR5IHJlcG9ydHMgZmFpbHVyZXMKK2NvcnJlY3RseS4gIEluIGZyYW1ld29ya3Mg
dGhhdCByZXBvcnQgYSBmYWlsdXJlIGJ5IHRocm93aW5nIGFuCitleGNlcHRpb24sIHlvdSBjb3Vs
ZCBjYXRjaCB0aGUgZXhjZXB0aW9uIGFuZCBhc3NlcnQgb24gaXQuICBCdXQgR29vZ2xlCitUZXN0
IGRvZXNuJ3QgdXNlIGV4Y2VwdGlvbnMsIHNvIGhvdyBkbyB3ZSB0ZXN0IHRoYXQgYSBwaWVjZSBv
ZiBjb2RlCitnZW5lcmF0ZXMgYW4gZXhwZWN0ZWQgZmFpbHVyZT8KKworYCJndGVzdC9ndGVzdC1z
cGkuaCJgIGNvbnRhaW5zIHNvbWUgY29uc3RydWN0cyB0byBkbyB0aGlzLiAgQWZ0ZXIgCitgI2lu
Y2x1ZGVgaW5nIHRoaXMgaGVhZGVyLCB5b3UgY2FuIHVzZQorCit8IGBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAorfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKwordG8gYXNzZXJ0IHRoYXQgX3N0YXRl
bWVudF8gZ2VuZXJhdGVzIGEgZmF0YWwgKGUuZy4gYEFTU0VSVF8qYCkgZmFpbHVyZQord2hvc2Ug
bWVzc2FnZSBjb250YWlucyB0aGUgZ2l2ZW4gX3N1YnN0cmluZ18sIG9yIHVzZQorCit8IGBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAorfDotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKworaWYg
eW91IGFyZSBleHBlY3RpbmcgYSBub24tZmF0YWwgKGUuZy4gYEVYUEVDVF8qYCkgZmFpbHVyZS4K
KworRm9yIHRlY2huaWNhbCByZWFzb25zLCB0aGVyZSBhcmUgc29tZSBjYXZlYXRzOgorCisgIDEu
IFlvdSBjYW5ub3Qgc3RyZWFtIGEgZmFpbHVyZSBtZXNzYWdlIHRvIGVpdGhlciBtYWNyby4KKyAg
MS4gX3N0YXRlbWVudF8gaW4gYEVYUEVDVF9GQVRBTF9GQUlMVVJFKClgIGNhbm5vdCByZWZlcmVu
Y2UgbG9jYWwgbm9uLXN0YXRpYyB2YXJpYWJsZXMgb3Igbm9uLXN0YXRpYyBtZW1iZXJzIG9mIGB0
aGlzYCBvYmplY3QuCisgIDEuIF9zdGF0ZW1lbnRfIGluIGBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgp
YCBjYW5ub3QgcmV0dXJuIGEgdmFsdWUuCisKK19Ob3RlOl8gR29vZ2xlIFRlc3QgaXMgZGVzaWdu
ZWQgd2l0aCB0aHJlYWRzIGluIG1pbmQuIE9uY2UgdGhlCitzeW5jaHJvbml6YXRpb24gcHJpbWl0
aXZlcyBpbiBgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCJgIGhhdmUKK2JlZW4gaW1wbGVt
ZW50ZWQsIEdvb2dsZSBUZXN0IHdpbGwgYmVjb21lIHRocmVhZC1zYWZlLCBtZWFuaW5nIHRoYXQK
K3lvdSBjYW4gdGhlbiB1c2UgYXNzZXJ0aW9ucyBpbiBtdWx0aXBsZSB0aHJlYWRzIGNvbmN1cnJl
bnRseS4gQmVmb3JlCit0aGF0LCBob3dldmVyLCBHb29nbGUgVGVzdCBvbmx5IHN1cHBvcnRzIHNp
bmdsZS10aHJlYWRlZCB1c2FnZS4gT25jZQordGhyZWFkLXNhZmUsIGBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRSgpYCBhbmQgYEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKClgCit3aWxsIGNhcHR1cmUgZmFp
bHVyZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkIG9ubHkuIElmIF9zdGF0ZW1lbnRfCitjcmVhdGVz
IG5ldyB0aHJlYWRzLCBmYWlsdXJlcyBpbiB0aGVzZSB0aHJlYWRzIHdpbGwgYmUgaWdub3JlZC4g
SWYKK3lvdSB3YW50IHRvIGNhcHR1cmUgZmFpbHVyZXMgZnJvbSBhbGwgdGhyZWFkcyBpbnN0ZWFk
LCB5b3Ugc2hvdWxkIHVzZQordGhlIGZvbGxvd2luZyBtYWNyb3M6CisKK3wgYEVYUEVDVF9GQVRB
TF9GQUlMVVJFX09OX0FMTF9USFJFQURTKGBfc3RhdGVtZW50LCBzdWJzdHJpbmdfYCk7YCB8Cit8
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tfAorfCBgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoYF9z
dGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtgIHwKKworIyBHZXR0aW5nIHRoZSBDdXJyZW50IFRlc3Qn
cyBOYW1lICMKKworU29tZXRpbWVzIGEgZnVuY3Rpb24gbWF5IG5lZWQgdG8ga25vdyB0aGUgbmFt
ZSBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdC4KK0ZvciBleGFtcGxlLCB5b3UgbWF5IGJl
IHVzaW5nIHRoZSBgU2V0VXAoKWAgbWV0aG9kIG9mIHlvdXIgdGVzdCBmaXh0dXJlIHRvIHNldAor
dGhlIGdvbGRlbiBmaWxlIG5hbWUgYmFzZWQgb24gd2hpY2ggdGVzdCBpcyBydW5uaW5nLiBUaGUg
YDo6dGVzdGluZzo6VGVzdEluZm9gCitjbGFzcyBoYXMgdGhpcyBpbmZvcm1hdGlvbjoKKworYGBg
CituYW1lc3BhY2UgdGVzdGluZyB7CisKK2NsYXNzIFRlc3RJbmZvIHsKKyBwdWJsaWM6CisgIC8v
IFJldHVybnMgdGhlIHRlc3QgY2FzZSBuYW1lIGFuZCB0aGUgdGVzdCBuYW1lLCByZXNwZWN0aXZl
bHkuCisgIC8vCisgIC8vIERvIE5PVCBkZWxldGUgb3IgZnJlZSB0aGUgcmV0dXJuIHZhbHVlIC0g
aXQncyBtYW5hZ2VkIGJ5IHRoZQorICAvLyBUZXN0SW5mbyBjbGFzcy4KKyAgY29uc3QgY2hhciog
dGVzdF9jYXNlX25hbWUoKSBjb25zdDsKKyAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0OworfTsK
KworfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKK2BgYAorCisKKz4gVG8gb2J0YWluIGEgYFRlc3RJ
bmZvYCBvYmplY3QgZm9yIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LCBjYWxsCitgY3VycmVu
dF90ZXN0X2luZm8oKWAgb24gdGhlIGBVbml0VGVzdGAgc2luZ2xldG9uIG9iamVjdDoKKworYGBg
CisvLyBHZXRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0Lgor
Ly8gRG8gTk9UIGRlbGV0ZSB0aGUgcmV0dXJuZWQgb2JqZWN0IC0gaXQncyBtYW5hZ2VkIGJ5IHRo
ZSBVbml0VGVzdCBjbGFzcy4KK2NvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3Rf
aW5mbyA9CisgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVz
dF9pbmZvKCk7CitwcmludGYoIldlIGFyZSBpbiB0ZXN0ICVzIG9mIHRlc3QgY2FzZSAlcy5cbiIs
CisgICAgICAgdGVzdF9pbmZvLT5uYW1lKCksIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7
CitgYGAKKworYGN1cnJlbnRfdGVzdF9pbmZvKClgIHJldHVybnMgYSBudWxsIHBvaW50ZXIgaWYg
bm8gdGVzdCBpcyBydW5uaW5nLiBJbgorcGFydGljdWxhciwgeW91IGNhbm5vdCBmaW5kIHRoZSB0
ZXN0IGNhc2UgbmFtZSBpbiBgVGVzdENhc2VTZXRVcCgpYCwKK2BUZXN0Q2FzZVRlYXJEb3duKClg
ICh3aGVyZSB5b3Uga25vdyB0aGUgdGVzdCBjYXNlIG5hbWUgaW1wbGljaXRseSksIG9yCitmdW5j
dGlvbnMgY2FsbGVkIGZyb20gdGhlbS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dz
LCBNYWMuCisKKyMgRXh0ZW5kaW5nIEdvb2dsZSBUZXN0IGJ5IEhhbmRsaW5nIFRlc3QgRXZlbnRz
ICMKKworR29vZ2xlIFRlc3QgcHJvdmlkZXMgYW4gPGI+ZXZlbnQgbGlzdGVuZXIgQVBJPC9iPiB0
byBsZXQgeW91IHJlY2VpdmUKK25vdGlmaWNhdGlvbnMgYWJvdXQgdGhlIHByb2dyZXNzIG9mIGEg
dGVzdCBwcm9ncmFtIGFuZCB0ZXN0CitmYWlsdXJlcy4gVGhlIGV2ZW50cyB5b3UgY2FuIGxpc3Rl
biB0byBpbmNsdWRlIHRoZSBzdGFydCBhbmQgZW5kIG9mCit0aGUgdGVzdCBwcm9ncmFtLCBhIHRl
c3QgY2FzZSwgb3IgYSB0ZXN0IG1ldGhvZCwgYW1vbmcgb3RoZXJzLiBZb3UgbWF5Cit1c2UgdGhp
cyBBUEkgdG8gYXVnbWVudCBvciByZXBsYWNlIHRoZSBzdGFuZGFyZCBjb25zb2xlIG91dHB1dCwK
K3JlcGxhY2UgdGhlIFhNTCBvdXRwdXQsIG9yIHByb3ZpZGUgYSBjb21wbGV0ZWx5IGRpZmZlcmVu
dCBmb3JtIG9mCitvdXRwdXQsIHN1Y2ggYXMgYSBHVUkgb3IgYSBkYXRhYmFzZS4gWW91IGNhbiBh
bHNvIHVzZSB0ZXN0IGV2ZW50cyBhcworY2hlY2twb2ludHMgdG8gaW1wbGVtZW50IGEgcmVzb3Vy
Y2UgbGVhayBjaGVja2VyLCBmb3IgZXhhbXBsZS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBX
aW5kb3dzLCBNYWM7IHNpbmNlIHYxLjQuMC4KKworIyMgRGVmaW5pbmcgRXZlbnQgTGlzdGVuZXJz
ICMjCisKK1RvIGRlZmluZSBhIGV2ZW50IGxpc3RlbmVyLCB5b3Ugc3ViY2xhc3MgZWl0aGVyCitb
dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMOTkx
KQorb3IgW3Rlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXJdKC4uL2luY2x1ZGUvZ3Rlc3Qv
Z3Rlc3QuaCNMMTA0NCkuCitUaGUgZm9ybWVyIGlzIGFuIChhYnN0cmFjdCkgaW50ZXJmYWNlLCB3
aGVyZSA8aT5lYWNoIHB1cmUgdmlydHVhbCBtZXRob2Q8YnI+CitjYW4gYmUgb3ZlcnJpZGRlbiB0
byBoYW5kbGUgYSB0ZXN0IGV2ZW50PC9pPiAoRm9yIGV4YW1wbGUsIHdoZW4gYSB0ZXN0CitzdGFy
dHMsIHRoZSBgT25UZXN0U3RhcnQoKWAgbWV0aG9kIHdpbGwgYmUgY2FsbGVkLikuIFRoZSBsYXR0
ZXIgcHJvdmlkZXMKK2FuIGVtcHR5IGltcGxlbWVudGF0aW9uIG9mIGFsbCBtZXRob2RzIGluIHRo
ZSBpbnRlcmZhY2UsIHN1Y2ggdGhhdCBhCitzdWJjbGFzcyBvbmx5IG5lZWRzIHRvIG92ZXJyaWRl
IHRoZSBtZXRob2RzIGl0IGNhcmVzIGFib3V0LgorCitXaGVuIGFuIGV2ZW50IGlzIGZpcmVkLCBp
dHMgY29udGV4dCBpcyBwYXNzZWQgdG8gdGhlIGhhbmRsZXIgZnVuY3Rpb24KK2FzIGFuIGFyZ3Vt
ZW50LiBUaGUgZm9sbG93aW5nIGFyZ3VtZW50IHR5cGVzIGFyZSB1c2VkOgorICAqIFtVbml0VGVz
dF0oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0wxMTUxKSByZWZsZWN0cyB0aGUgc3RhdGUgb2Yg
dGhlIGVudGlyZSB0ZXN0IHByb2dyYW0sCisgICogW1Rlc3RDYXNlXSguLi9pbmNsdWRlL2d0ZXN0
L2d0ZXN0LmgjTDc3OCkgaGFzIGluZm9ybWF0aW9uIGFib3V0IGEgdGVzdCBjYXNlLCB3aGljaCBj
YW4gY29udGFpbiBvbmUgb3IgbW9yZSB0ZXN0cywKKyAgKiBbVGVzdEluZm9dKC4uL2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QuaCNMNjQ0KSBjb250YWlucyB0aGUgc3RhdGUgb2YgYSB0ZXN0LCBhbmQKKyAg
KiBbVGVzdFBhcnRSZXN1bHRdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgjTDQ3
KSByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYSB0ZXN0IGFzc2VydGlvbi4KKworQW4gZXZlbnQg
aGFuZGxlciBmdW5jdGlvbiBjYW4gZXhhbWluZSB0aGUgYXJndW1lbnQgaXQgcmVjZWl2ZXMgdG8g
ZmluZAorb3V0IGludGVyZXN0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBldmVudCBhbmQgdGhl
IHRlc3QgcHJvZ3JhbSdzCitzdGF0ZS4gIEhlcmUncyBhbiBleGFtcGxlOgorCitgYGAKKyAgY2xh
c3MgTWluaW1hbGlzdFByaW50ZXIgOiBwdWJsaWMgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExp
c3RlbmVyIHsKKyAgICAvLyBDYWxsZWQgYmVmb3JlIGEgdGVzdCBzdGFydHMuCisgICAgdmlydHVh
bCB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8mIHRlc3RfaW5mbykg
eworICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBzdGFydGluZy5cbiIsCisgICAgICAgICAg
ICAgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOworICAgIH0K
KworICAgIC8vIENhbGxlZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRUVEKCkg
aW52b2NhdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJlc3VsdCgKKyAgICAgICAg
Y29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgeworICAg
ICAgcHJpbnRmKCIlcyBpbiAlczolZFxuJXNcbiIsCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jl
c3VsdC5mYWlsZWQoKSA/ICIqKiogRmFpbHVyZSIgOiAiU3VjY2VzcyIsCisgICAgICAgICAgICAg
dGVzdF9wYXJ0X3Jlc3VsdC5maWxlX25hbWUoKSwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVz
dWx0LmxpbmVfbnVtYmVyKCksCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5zdW1tYXJ5
KCkpOworICAgIH0KKworICAgIC8vIENhbGxlZCBhZnRlciBhIHRlc3QgZW5kcy4KKyAgICB2aXJ0
dWFsIHZvaWQgT25UZXN0RW5kKGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8mIHRlc3RfaW5mbykg
eworICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBlbmRpbmcuXG4iLAorICAgICAgICAgICAg
IHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgICB9Cisg
IH07CitgYGAKKworIyMgVXNpbmcgRXZlbnQgTGlzdGVuZXJzICMjCisKK1RvIHVzZSB0aGUgZXZl
bnQgbGlzdGVuZXIgeW91IGhhdmUgZGVmaW5lZCwgYWRkIGFuIGluc3RhbmNlIG9mIGl0IHRvCit0
aGUgR29vZ2xlIFRlc3QgZXZlbnQgbGlzdGVuZXIgbGlzdCAocmVwcmVzZW50ZWQgYnkgY2xhc3MK
K1tUZXN0RXZlbnRMaXN0ZW5lcnNdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMMTA2NCkKKy0g
bm90ZSB0aGUgInMiIGF0IHRoZSBlbmQgb2YgdGhlIG5hbWUpIGluIHlvdXIKK2BtYWluKClgIGZ1
bmN0aW9uLCBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9URVNUUygpYDoKK2BgYAoraW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOworICAvLyBHZXRzIGhvbGQgb2YgdGhlIGV2ZW50IGxpc3RlbmVyIGxpc3QuCisg
IDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMgPQorICAgICAgOjp0ZXN0
aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCk7CisgIC8vIEFkZHMgYSBs
aXN0ZW5lciB0byB0aGUgZW5kLiAgR29vZ2xlIFRlc3QgdGFrZXMgdGhlIG93bmVyc2hpcC4KKyAg
bGlzdGVuZXJzLkFwcGVuZChuZXcgTWluaW1hbGlzdFByaW50ZXIpOworICByZXR1cm4gUlVOX0FM
TF9URVNUUygpOworfQorYGBgCisKK1RoZXJlJ3Mgb25seSBvbmUgcHJvYmxlbTogdGhlIGRlZmF1
bHQgdGVzdCByZXN1bHQgcHJpbnRlciBpcyBzdGlsbCBpbgorZWZmZWN0LCBzbyBpdHMgb3V0cHV0
IHdpbGwgbWluZ2xlIHdpdGggdGhlIG91dHB1dCBmcm9tIHlvdXIgbWluaW1hbGlzdAorcHJpbnRl
ci4gVG8gc3VwcHJlc3MgdGhlIGRlZmF1bHQgcHJpbnRlciwganVzdCByZWxlYXNlIGl0IGZyb20g
dGhlCitldmVudCBsaXN0ZW5lciBsaXN0IGFuZCBkZWxldGUgaXQuIFlvdSBjYW4gZG8gc28gYnkg
YWRkaW5nIG9uZSBsaW5lOgorYGBgCisgIC4uLgorICBkZWxldGUgbGlzdGVuZXJzLlJlbGVhc2Uo
bGlzdGVuZXJzLmRlZmF1bHRfcmVzdWx0X3ByaW50ZXIoKSk7CisgIGxpc3RlbmVycy5BcHBlbmQo
bmV3IE1pbmltYWxpc3RQcmludGVyKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK2BgYAor
CitOb3csIHNpdCBiYWNrIGFuZCBlbmpveSBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IG91dHB1dCBm
cm9tIHlvdXIKK3Rlc3RzLiBGb3IgbW9yZSBkZXRhaWxzLCB5b3UgY2FuIHJlYWQgdGhpcworW3Nh
bXBsZV0oLi4vc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjKS4KKworWW91IG1heSBhcHBlbmQg
bW9yZSB0aGFuIG9uZSBsaXN0ZW5lciB0byB0aGUgbGlzdC4gV2hlbiBhbiBgT24qU3RhcnQoKWAK
K29yIGBPblRlc3RQYXJ0UmVzdWx0KClgIGV2ZW50IGlzIGZpcmVkLCB0aGUgbGlzdGVuZXJzIHdp
bGwgcmVjZWl2ZSBpdCBpbgordGhlIG9yZGVyIHRoZXkgYXBwZWFyIGluIHRoZSBsaXN0IChzaW5j
ZSBuZXcgbGlzdGVuZXJzIGFyZSBhZGRlZCB0bwordGhlIGVuZCBvZiB0aGUgbGlzdCwgdGhlIGRl
ZmF1bHQgdGV4dCBwcmludGVyIGFuZCB0aGUgZGVmYXVsdCBYTUwKK2dlbmVyYXRvciB3aWxsIHJl
Y2VpdmUgdGhlIGV2ZW50IGZpcnN0KS4gQW4gYE9uKkVuZCgpYCBldmVudCB3aWxsIGJlCityZWNl
aXZlZCBieSB0aGUgbGlzdGVuZXJzIGluIHRoZSBfcmV2ZXJzZV8gb3JkZXIuIFRoaXMgYWxsb3dz
IG91dHB1dCBieQorbGlzdGVuZXJzIGFkZGVkIGxhdGVyIHRvIGJlIGZyYW1lZCBieSBvdXRwdXQg
ZnJvbSBsaXN0ZW5lcnMgYWRkZWQKK2VhcmxpZXIuCisKKyMjIEdlbmVyYXRpbmcgRmFpbHVyZXMg
aW4gTGlzdGVuZXJzICMjCisKK1lvdSBtYXkgdXNlIGZhaWx1cmUtcmFpc2luZyBtYWNyb3MgKGBF
WFBFQ1RfKigpYCwgYEFTU0VSVF8qKClgLAorYEZBSUwoKWAsIGV0Yykgd2hlbiBwcm9jZXNzaW5n
IGFuIGV2ZW50LiBUaGVyZSBhcmUgc29tZSByZXN0cmljdGlvbnM6CisKKyAgMS4gWW91IGNhbm5v
dCBnZW5lcmF0ZSBhbnkgZmFpbHVyZSBpbiBgT25UZXN0UGFydFJlc3VsdCgpYCAob3RoZXJ3aXNl
IGl0IHdpbGwgY2F1c2UgYE9uVGVzdFBhcnRSZXN1bHQoKWAgdG8gYmUgY2FsbGVkIHJlY3Vyc2l2
ZWx5KS4KKyAgMS4gQSBsaXN0ZW5lciB0aGF0IGhhbmRsZXMgYE9uVGVzdFBhcnRSZXN1bHQoKWAg
aXMgbm90IGFsbG93ZWQgdG8gZ2VuZXJhdGUgYW55IGZhaWx1cmUuCisKK1doZW4geW91IGFkZCBs
aXN0ZW5lcnMgdG8gdGhlIGxpc3RlbmVyIGxpc3QsIHlvdSBzaG91bGQgcHV0IGxpc3RlbmVycwor
dGhhdCBoYW5kbGUgYE9uVGVzdFBhcnRSZXN1bHQoKWAgX2JlZm9yZV8gbGlzdGVuZXJzIHRoYXQg
Y2FuIGdlbmVyYXRlCitmYWlsdXJlcy4gVGhpcyBlbnN1cmVzIHRoYXQgZmFpbHVyZXMgZ2VuZXJh
dGVkIGJ5IHRoZSBsYXR0ZXIgYXJlCithdHRyaWJ1dGVkIHRvIHRoZSByaWdodCB0ZXN0IGJ5IHRo
ZSBmb3JtZXIuCisKK1dlIGhhdmUgYSBzYW1wbGUgb2YgZmFpbHVyZS1yYWlzaW5nIGxpc3RlbmVy
CitbaGVyZV0oLi4vc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYykuCisKKyMgUnVubmluZyBU
ZXN0IFByb2dyYW1zOiBBZHZhbmNlZCBPcHRpb25zICMKKworR29vZ2xlIFRlc3QgdGVzdCBwcm9n
cmFtcyBhcmUgb3JkaW5hcnkgZXhlY3V0YWJsZXMuIE9uY2UgYnVpbHQsIHlvdSBjYW4gcnVuCit0
aGVtIGRpcmVjdGx5IGFuZCBhZmZlY3QgdGhlaXIgYmVoYXZpb3IgdmlhIHRoZSBmb2xsb3dpbmcg
ZW52aXJvbm1lbnQgdmFyaWFibGVzCithbmQvb3IgY29tbWFuZCBsaW5lIGZsYWdzLiBGb3IgdGhl
IGZsYWdzIHRvIHdvcmssIHlvdXIgcHJvZ3JhbXMgbXVzdCBjYWxsCitgOjp0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdCgpYCBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9URVNUUygpYC4KKworVG8gc2Vl
IGEgbGlzdCBvZiBzdXBwb3J0ZWQgZmxhZ3MgYW5kIHRoZWlyIHVzYWdlLCBwbGVhc2UgcnVuIHlv
dXIgdGVzdAorcHJvZ3JhbSB3aXRoIHRoZSBgLS1oZWxwYCBmbGFnLiAgWW91IGNhbiBhbHNvIHVz
ZSBgLWhgLCBgLT9gLCBvciBgLz9gCitmb3Igc2hvcnQuICBUaGlzIGZlYXR1cmUgaXMgYWRkZWQg
aW4gdmVyc2lvbiAxLjMuMC4KKworSWYgYW4gb3B0aW9uIGlzIHNwZWNpZmllZCBib3RoIGJ5IGFu
IGVudmlyb25tZW50IHZhcmlhYmxlIGFuZCBieSBhCitmbGFnLCB0aGUgbGF0dGVyIHRha2VzIHBy
ZWNlZGVuY2UuICBNb3N0IG9mIHRoZSBvcHRpb25zIGNhbiBhbHNvIGJlCitzZXQvcmVhZCBpbiBj
b2RlOiB0byBhY2Nlc3MgdGhlIHZhbHVlIG9mIGNvbW1hbmQgbGluZSBmbGFnCitgLS1ndGVzdF9m
b29gLCB3cml0ZSBgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKGZvbylgLiAgQSBjb21tb24gcGF0dGVy
biBpcwordG8gc2V0IHRoZSB2YWx1ZSBvZiBhIGZsYWcgYmVmb3JlIGNhbGxpbmcgYDo6dGVzdGlu
Zzo6SW5pdEdvb2dsZVRlc3QoKWAKK3RvIGNoYW5nZSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUg
ZmxhZzoKK2BgYAoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIC8vIERpc2Fi
bGVzIGVsYXBzZWQgdGltZSBieSBkZWZhdWx0LgorICA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcocHJp
bnRfdGltZSkgPSBmYWxzZTsKKworICAvLyBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBvdmVycmlk
ZSB0aGUgZmxhZyBvbiB0aGUgY29tbWFuZCBsaW5lLgorICA6OnRlc3Rpbmc6OkluaXRHb29nbGVU
ZXN0KCZhcmdjLCBhcmd2KTsKKworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQorYGBgCisK
KyMjIFNlbGVjdGluZyBUZXN0cyAjIworCitUaGlzIHNlY3Rpb24gc2hvd3MgdmFyaW91cyBvcHRp
b25zIGZvciBjaG9vc2luZyB3aGljaCB0ZXN0cyB0byBydW4uCisKKyMjIyBMaXN0aW5nIFRlc3Qg
TmFtZXMgIyMjCisKK1NvbWV0aW1lcyBpdCBpcyBuZWNlc3NhcnkgdG8gbGlzdCB0aGUgYXZhaWxh
YmxlIHRlc3RzIGluIGEgcHJvZ3JhbSBiZWZvcmUKK3J1bm5pbmcgdGhlbSBzbyB0aGF0IGEgZmls
dGVyIG1heSBiZSBhcHBsaWVkIGlmIG5lZWRlZC4gSW5jbHVkaW5nIHRoZSBmbGFnCitgLS1ndGVz
dF9saXN0X3Rlc3RzYCBvdmVycmlkZXMgYWxsIG90aGVyIGZsYWdzIGFuZCBsaXN0cyB0ZXN0cyBp
biB0aGUgZm9sbG93aW5nCitmb3JtYXQ6CitgYGAKK1Rlc3RDYXNlMS4KKyAgVGVzdE5hbWUxCisg
IFRlc3ROYW1lMgorVGVzdENhc2UyLgorICBUZXN0TmFtZQorYGBgCisKK05vbmUgb2YgdGhlIHRl
c3RzIGxpc3RlZCBhcmUgYWN0dWFsbHkgcnVuIGlmIHRoZSBmbGFnIGlzIHByb3ZpZGVkLiBUaGVy
ZSBpcyBubworY29ycmVzcG9uZGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgdGhpcyBmbGFn
LgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIFJ1bm5pbmcg
YSBTdWJzZXQgb2YgdGhlIFRlc3RzICMjIworCitCeSBkZWZhdWx0LCBhIEdvb2dsZSBUZXN0IHBy
b2dyYW0gcnVucyBhbGwgdGVzdHMgdGhlIHVzZXIgaGFzIGRlZmluZWQuCitTb21ldGltZXMsIHlv
dSB3YW50IHRvIHJ1biBvbmx5IGEgc3Vic2V0IG9mIHRoZSB0ZXN0cyAoZS5nLiBmb3IgZGVidWdn
aW5nIG9yCitxdWlja2x5IHZlcmlmeWluZyBhIGNoYW5nZSkuIElmIHlvdSBzZXQgdGhlIGBHVEVT
VF9GSUxURVJgIGVudmlyb25tZW50IHZhcmlhYmxlCitvciB0aGUgYC0tZ3Rlc3RfZmlsdGVyYCBm
bGFnIHRvIGEgZmlsdGVyIHN0cmluZywgR29vZ2xlIFRlc3Qgd2lsbCBvbmx5IHJ1biB0aGUKK3Rl
c3RzIHdob3NlIGZ1bGwgbmFtZXMgKGluIHRoZSBmb3JtIG9mIGBUZXN0Q2FzZU5hbWUuVGVzdE5h
bWVgKSBtYXRjaCB0aGUKK2ZpbHRlci4KKworVGhlIGZvcm1hdCBvZiBhIGZpbHRlciBpcyBhICdg
OmAnLXNlcGFyYXRlZCBsaXN0IG9mIHdpbGRjYXJkIHBhdHRlcm5zIChjYWxsZWQKK3RoZSBwb3Np
dGl2ZSBwYXR0ZXJucykgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhICdgLWAnIGFuZCBhbm90aGVy
CisnYDpgJy1zZXBhcmF0ZWQgcGF0dGVybiBsaXN0IChjYWxsZWQgdGhlIG5lZ2F0aXZlIHBhdHRl
cm5zKS4gQSB0ZXN0IG1hdGNoZXMgdGhlCitmaWx0ZXIgaWYgYW5kIG9ubHkgaWYgaXQgbWF0Y2hl
cyBhbnkgb2YgdGhlIHBvc2l0aXZlIHBhdHRlcm5zIGJ1dCBkb2VzIG5vdAorbWF0Y2ggYW55IG9m
IHRoZSBuZWdhdGl2ZSBwYXR0ZXJucy4KKworQSBwYXR0ZXJuIG1heSBjb250YWluIGAnKidgICht
YXRjaGVzIGFueSBzdHJpbmcpIG9yIGAnPydgIChtYXRjaGVzIGFueSBzaW5nbGUKK2NoYXJhY3Rl
cikuIEZvciBjb252ZW5pZW5jZSwgdGhlIGZpbHRlciBgJyotTmVnYXRpdmVQYXR0ZXJucydgIGNh
biBiZSBhbHNvCit3cml0dGVuIGFzIGAnLU5lZ2F0aXZlUGF0dGVybnMnYC4KKworRm9yIGV4YW1w
bGU6CisKKyAgKiBgLi9mb29fdGVzdGAgSGFzIG5vIGZsYWcsIGFuZCB0aHVzIHJ1bnMgYWxsIGl0
cyB0ZXN0cy4KKyAgKiBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj0qYCBBbHNvIHJ1bnMgZXZl
cnl0aGluZywgZHVlIHRvIHRoZSBzaW5nbGUgbWF0Y2gtZXZlcnl0aGluZyBgKmAgdmFsdWUuCisg
ICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Rm9vVGVzdC4qYCBSdW5zIGV2ZXJ5dGhpbmcg
aW4gdGVzdCBjYXNlIGBGb29UZXN0YC4KKyAgKiBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj0q
TnVsbCo6KkNvbnN0cnVjdG9yKmAgUnVucyBhbnkgdGVzdCB3aG9zZSBmdWxsIG5hbWUgY29udGFp
bnMgZWl0aGVyIGAiTnVsbCJgIG9yIGAiQ29uc3RydWN0b3IiYC4KKyAgKiBgLi9mb29fdGVzdCAt
LWd0ZXN0X2ZpbHRlcj0tKkRlYXRoVGVzdC4qYCBSdW5zIGFsbCBub24tZGVhdGggdGVzdHMuCisg
ICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Rm9vVGVzdC4qLUZvb1Rlc3QuQmFyYCBSdW5z
IGV2ZXJ5dGhpbmcgaW4gdGVzdCBjYXNlIGBGb29UZXN0YCBleGNlcHQgYEZvb1Rlc3QuQmFyYC4K
KworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBUZW1wb3Jhcmls
eSBEaXNhYmxpbmcgVGVzdHMgIyMjCisKK0lmIHlvdSBoYXZlIGEgYnJva2VuIHRlc3QgdGhhdCB5
b3UgY2Fubm90IGZpeCByaWdodCBhd2F5LCB5b3UgY2FuIGFkZCB0aGUKK2BESVNBQkxFRF9gIHBy
ZWZpeCB0byBpdHMgbmFtZS4gVGhpcyB3aWxsIGV4Y2x1ZGUgaXQgZnJvbSBleGVjdXRpb24uIFRo
aXMgaXMKK2JldHRlciB0aGFuIGNvbW1lbnRpbmcgb3V0IHRoZSBjb2RlIG9yIHVzaW5nIGAjaWYg
MGAsIGFzIGRpc2FibGVkIHRlc3RzIGFyZQorc3RpbGwgY29tcGlsZWQgKGFuZCB0aHVzIHdvbid0
IHJvdCkuCisKK0lmIHlvdSBuZWVkIHRvIGRpc2FibGUgYWxsIHRlc3RzIGluIGEgdGVzdCBjYXNl
LCB5b3UgY2FuIGVpdGhlciBhZGQgYERJU0FCTEVEX2AKK3RvIHRoZSBmcm9udCBvZiB0aGUgbmFt
ZSBvZiBlYWNoIHRlc3QsIG9yIGFsdGVybmF0aXZlbHkgYWRkIGl0IHRvIHRoZSBmcm9udCBvZgor
dGhlIHRlc3QgY2FzZSBuYW1lLgorCitGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyB0ZXN0cyB3
b24ndCBiZSBydW4gYnkgR29vZ2xlIFRlc3QsIGV2ZW4gdGhvdWdoIHRoZXkKK3dpbGwgc3RpbGwg
YmUgY29tcGlsZWQ6CisKK2BgYAorLy8gVGVzdHMgdGhhdCBGb28gZG9lcyBBYmMuCitURVNUKEZv
b1Rlc3QsIERJU0FCTEVEX0RvZXNBYmMpIHsgLi4uIH0KKworY2xhc3MgRElTQUJMRURfQmFyVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKKworLy8gVGVzdHMgdGhhdCBCYXIg
ZG9lcyBYeXouCitURVNUX0YoRElTQUJMRURfQmFyVGVzdCwgRG9lc1h5eikgeyAuLi4gfQorYGBg
CisKK19Ob3RlOl8gVGhpcyBmZWF0dXJlIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHRlbXBvcmFy
eSBwYWluLXJlbGllZi4gWW91IHN0aWxsCitoYXZlIHRvIGZpeCB0aGUgZGlzYWJsZWQgdGVzdHMg
YXQgYSBsYXRlciBkYXRlLiBBcyBhIHJlbWluZGVyLCBHb29nbGUgVGVzdCB3aWxsCitwcmludCBh
IGJhbm5lciB3YXJuaW5nIHlvdSBpZiBhIHRlc3QgcHJvZ3JhbSBjb250YWlucyBhbnkgZGlzYWJs
ZWQgdGVzdHMuCisKK19UaXA6XyBZb3UgY2FuIGVhc2lseSBjb3VudCB0aGUgbnVtYmVyIG9mIGRp
c2FibGVkIHRlc3RzIHlvdSBoYXZlCit1c2luZyBgZ3JlcGAuIFRoaXMgbnVtYmVyIGNhbiBiZSB1
c2VkIGFzIGEgbWV0cmljIGZvciBpbXByb3ZpbmcgeW91cgordGVzdCBxdWFsaXR5LgorCitfQXZh
aWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIFRlbXBvcmFyaWx5IEVuYWJs
aW5nIERpc2FibGVkIFRlc3RzICMjIworCitUbyBpbmNsdWRlIFtkaXNhYmxlZCB0ZXN0c10oI3Rl
bXBvcmFyaWx5LWRpc2FibGluZy10ZXN0cykgaW4gdGVzdAorZXhlY3V0aW9uLCBqdXN0IGludm9r
ZSB0aGUgdGVzdCBwcm9ncmFtIHdpdGggdGhlCitgLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90
ZXN0c2AgZmxhZyBvciBzZXQgdGhlCitgR1RFU1RfQUxTT19SVU5fRElTQUJMRURfVEVTVFNgIGVu
dmlyb25tZW50IHZhcmlhYmxlIHRvIGEgdmFsdWUgb3RoZXIKK3RoYW4gYDBgLiAgWW91IGNhbiBj
b21iaW5lIHRoaXMgd2l0aCB0aGUKK1stLWd0ZXN0XF9maWx0ZXJdKCNydW5uaW5nLWEtc3Vic2V0
LW9mLXRoZS10ZXN0cykgZmxhZyB0byBmdXJ0aGVyIHNlbGVjdAord2hpY2ggZGlzYWJsZWQgdGVz
dHMgdG8gcnVuLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2Ug
dmVyc2lvbiAxLjMuMC4KKworIyMgUmVwZWF0aW5nIHRoZSBUZXN0cyAjIworCitPbmNlIGluIGEg
d2hpbGUgeW91J2xsIHJ1biBpbnRvIGEgdGVzdCB3aG9zZSByZXN1bHQgaXMgaGl0LW9yLW1pc3Mu
IFBlcmhhcHMgaXQKK3dpbGwgZmFpbCBvbmx5IDElIG9mIHRoZSB0aW1lLCBtYWtpbmcgaXQgcmF0
aGVyIGhhcmQgdG8gcmVwcm9kdWNlIHRoZSBidWcgdW5kZXIKK2EgZGVidWdnZXIuIFRoaXMgY2Fu
IGJlIGEgbWFqb3Igc291cmNlIG9mIGZydXN0cmF0aW9uLgorCitUaGUgYC0tZ3Rlc3RfcmVwZWF0
YCBmbGFnIGFsbG93cyB5b3UgdG8gcmVwZWF0IGFsbCAob3Igc2VsZWN0ZWQpIHRlc3QgbWV0aG9k
cworaW4gYSBwcm9ncmFtIG1hbnkgdGltZXMuIEhvcGVmdWxseSwgYSBmbGFreSB0ZXN0IHdpbGwg
ZXZlbnR1YWxseSBmYWlsIGFuZCBnaXZlCit5b3UgYSBjaGFuY2UgdG8gZGVidWcuIEhlcmUncyBo
b3cgdG8gdXNlIGl0OgorCit8IGAkIGZvb190ZXN0IC0tZ3Rlc3RfcmVwZWF0PTEwMDBgIHwgUmVw
ZWF0IGZvb1xfdGVzdCAxMDAwIHRpbWVzIGFuZCBkb24ndCBzdG9wIGF0IGZhaWx1cmVzLiB8Cit8
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGAkIGZvb190ZXN0IC0tZ3Rl
c3RfcmVwZWF0PS0xYCAgIHwgQSBuZWdhdGl2ZSBjb3VudCBtZWFucyByZXBlYXRpbmcgZm9yZXZl
ci4gICAgICAgICAgICAgICB8Cit8IGAkIGZvb190ZXN0IC0tZ3Rlc3RfcmVwZWF0PTEwMDAgLS1n
dGVzdF9icmVha19vbl9mYWlsdXJlYCB8IFJlcGVhdCBmb29cX3Rlc3QgMTAwMCB0aW1lcywgc3Rv
cHBpbmcgYXQgdGhlIGZpcnN0IGZhaWx1cmUuIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgd2hl
biBydW5uaW5nIHVuZGVyIGEgZGVidWdnZXI6IHdoZW4gdGhlIHRlc3RmYWlscywgaXQgd2lsbCBk
cm9wIGludG8gdGhlIGRlYnVnZ2VyIGFuZCB5b3UgY2FuIHRoZW4gaW5zcGVjdCB2YXJpYWJsZXMg
YW5kIHN0YWNrcy4gfAorfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwIC0tZ3Rlc3Rf
ZmlsdGVyPUZvb0JhcmAgfCBSZXBlYXQgdGhlIHRlc3RzIHdob3NlIG5hbWUgbWF0Y2hlcyB0aGUg
ZmlsdGVyIDEwMDAgdGltZXMuIHwKKworSWYgeW91ciB0ZXN0IHByb2dyYW0gY29udGFpbnMgZ2xv
YmFsIHNldC11cC90ZWFyLWRvd24gY29kZSByZWdpc3RlcmVkCit1c2luZyBgQWRkR2xvYmFsVGVz
dEVudmlyb25tZW50KClgLCBpdCB3aWxsIGJlIHJlcGVhdGVkIGluIGVhY2gKK2l0ZXJhdGlvbiBh
cyB3ZWxsLCBhcyB0aGUgZmxha2luZXNzIG1heSBiZSBpbiBpdC4gWW91IGNhbiBhbHNvIHNwZWNp
ZnkKK3RoZSByZXBlYXQgY291bnQgYnkgc2V0dGluZyB0aGUgYEdURVNUX1JFUEVBVGAgZW52aXJv
bm1lbnQgdmFyaWFibGUuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgor
CisjIyBTaHVmZmxpbmcgdGhlIFRlc3RzICMjCisKK1lvdSBjYW4gc3BlY2lmeSB0aGUgYC0tZ3Rl
c3Rfc2h1ZmZsZWAgZmxhZyAob3Igc2V0IHRoZSBgR1RFU1RfU0hVRkZMRWAKK2Vudmlyb25tZW50
IHZhcmlhYmxlIHRvIGAxYCkgdG8gcnVuIHRoZSB0ZXN0cyBpbiBhIHByb2dyYW0gaW4gYSByYW5k
b20KK29yZGVyLiBUaGlzIGhlbHBzIHRvIHJldmVhbCBiYWQgZGVwZW5kZW5jaWVzIGJldHdlZW4g
dGVzdHMuCisKK0J5IGRlZmF1bHQsIEdvb2dsZSBUZXN0IHVzZXMgYSByYW5kb20gc2VlZCBjYWxj
dWxhdGVkIGZyb20gdGhlIGN1cnJlbnQKK3RpbWUuIFRoZXJlZm9yZSB5b3UnbGwgZ2V0IGEgZGlm
ZmVyZW50IG9yZGVyIGV2ZXJ5IHRpbWUuIFRoZSBjb25zb2xlCitvdXRwdXQgaW5jbHVkZXMgdGhl
IHJhbmRvbSBzZWVkIHZhbHVlLCBzdWNoIHRoYXQgeW91IGNhbiByZXByb2R1Y2UgYW4KK29yZGVy
LXJlbGF0ZWQgdGVzdCBmYWlsdXJlIGxhdGVyLiBUbyBzcGVjaWZ5IHRoZSByYW5kb20gc2VlZAor
ZXhwbGljaXRseSwgdXNlIHRoZSBgLS1ndGVzdF9yYW5kb21fc2VlZD1TRUVEYCBmbGFnIChvciBz
ZXQgdGhlCitgR1RFU1RfUkFORE9NX1NFRURgIGVudmlyb25tZW50IHZhcmlhYmxlKSwgd2hlcmUg
YFNFRURgIGlzIGFuIGludGVnZXIKK2JldHdlZW4gMCBhbmQgOTk5OTkuIFRoZSBzZWVkIHZhbHVl
IDAgaXMgc3BlY2lhbDogaXQgdGVsbHMgR29vZ2xlIFRlc3QKK3RvIGRvIHRoZSBkZWZhdWx0IGJl
aGF2aW9yIG9mIGNhbGN1bGF0aW5nIHRoZSBzZWVkIGZyb20gdGhlIGN1cnJlbnQKK3RpbWUuCisK
K0lmIHlvdSBjb21iaW5lIHRoaXMgd2l0aCBgLS1ndGVzdF9yZXBlYXQ9TmAsIEdvb2dsZSBUZXN0
IHdpbGwgcGljayBhCitkaWZmZXJlbnQgcmFuZG9tIHNlZWQgYW5kIHJlLXNodWZmbGUgdGhlIHRl
c3RzIGluIGVhY2ggaXRlcmF0aW9uLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3Ms
IE1hYzsgc2luY2UgdjEuNC4wLgorCisjIyBDb250cm9sbGluZyBUZXN0IE91dHB1dCAjIworCitU
aGlzIHNlY3Rpb24gdGVhY2hlcyBob3cgdG8gdHdlYWsgdGhlIHdheSB0ZXN0IHJlc3VsdHMgYXJl
IHJlcG9ydGVkLgorCisjIyMgQ29sb3JlZCBUZXJtaW5hbCBPdXRwdXQgIyMjCisKK0dvb2dsZSBU
ZXN0IGNhbiB1c2UgY29sb3JzIGluIGl0cyB0ZXJtaW5hbCBvdXRwdXQgdG8gbWFrZSBpdCBlYXNp
ZXIgdG8gc3BvdAordGhlIHNlcGFyYXRpb24gYmV0d2VlbiB0ZXN0cywgYW5kIHdoZXRoZXIgdGVz
dHMgcGFzc2VkLgorCitZb3UgY2FuIHNldCB0aGUgR1RFU1RcX0NPTE9SIGVudmlyb25tZW50IHZh
cmlhYmxlIG9yIHNldCB0aGUgYC0tZ3Rlc3RfY29sb3JgCitjb21tYW5kIGxpbmUgZmxhZyB0byBg
eWVzYCwgYG5vYCwgb3IgYGF1dG9gICh0aGUgZGVmYXVsdCkgdG8gZW5hYmxlIGNvbG9ycywKK2Rp
c2FibGUgY29sb3JzLCBvciBsZXQgR29vZ2xlIFRlc3QgZGVjaWRlLiBXaGVuIHRoZSB2YWx1ZSBp
cyBgYXV0b2AsIEdvb2dsZQorVGVzdCB3aWxsIHVzZSBjb2xvcnMgaWYgYW5kIG9ubHkgaWYgdGhl
IG91dHB1dCBnb2VzIHRvIGEgdGVybWluYWwgYW5kIChvbgorbm9uLVdpbmRvd3MgcGxhdGZvcm1z
KSB0aGUgYFRFUk1gIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCB0byBgeHRlcm1gIG9yCitg
eHRlcm0tY29sb3JgLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKwor
IyMjIFN1cHByZXNzaW5nIHRoZSBFbGFwc2VkIFRpbWUgIyMjCisKK0J5IGRlZmF1bHQsIEdvb2ds
ZSBUZXN0IHByaW50cyB0aGUgdGltZSBpdCB0YWtlcyB0byBydW4gZWFjaCB0ZXN0LiAgVG8KK3N1
cHByZXNzIHRoYXQsIHJ1biB0aGUgdGVzdCBwcm9ncmFtIHdpdGggdGhlIGAtLWd0ZXN0X3ByaW50
X3RpbWU9MGAKK2NvbW1hbmQgbGluZSBmbGFnLiAgU2V0dGluZyB0aGUgYEdURVNUX1BSSU5UX1RJ
TUVgIGVudmlyb25tZW50Cit2YXJpYWJsZSB0byBgMGAgaGFzIHRoZSBzYW1lIGVmZmVjdC4KKwor
X0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuICAoSW4gR29vZ2xlIFRlc3QgMS4z
LjAgYW5kIGxvd2VyLAordGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdGhhdCB0aGUgZWxhcHNlZCB0
aW1lIGlzICoqbm90KiogcHJpbnRlZC4pCisKKyMjIyBHZW5lcmF0aW5nIGFuIFhNTCBSZXBvcnQg
IyMjCisKK0dvb2dsZSBUZXN0IGNhbiBlbWl0IGEgZGV0YWlsZWQgWE1MIHJlcG9ydCB0byBhIGZp
bGUgaW4gYWRkaXRpb24gdG8gaXRzIG5vcm1hbAordGV4dHVhbCBvdXRwdXQuIFRoZSByZXBvcnQg
Y29udGFpbnMgdGhlIGR1cmF0aW9uIG9mIGVhY2ggdGVzdCwgYW5kIHRodXMgY2FuCitoZWxwIHlv
dSBpZGVudGlmeSBzbG93IHRlc3RzLgorCitUbyBnZW5lcmF0ZSB0aGUgWE1MIHJlcG9ydCwgc2V0
IHRoZSBgR1RFU1RfT1VUUFVUYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUKK2AtLWd0ZXN0
X291dHB1dGAgZmxhZyB0byB0aGUgc3RyaW5nIGAieG1sOl9wYXRoX3RvX291dHB1dF9maWxlXyJg
LCB3aGljaCB3aWxsCitjcmVhdGUgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIGxvY2F0aW9uLiBZb3Ug
Y2FuIGFsc28ganVzdCB1c2UgdGhlIHN0cmluZworYCJ4bWwiYCwgaW4gd2hpY2ggY2FzZSB0aGUg
b3V0cHV0IGNhbiBiZSBmb3VuZCBpbiB0aGUgYHRlc3RfZGV0YWlsLnhtbGAgZmlsZSBpbgordGhl
IGN1cnJlbnQgZGlyZWN0b3J5LgorCitJZiB5b3Ugc3BlY2lmeSBhIGRpcmVjdG9yeSAoZm9yIGV4
YW1wbGUsIGAieG1sOm91dHB1dC9kaXJlY3RvcnkvImAgb24gTGludXggb3IKK2AieG1sOm91dHB1
dFxkaXJlY3RvcnlcImAgb24gV2luZG93cyksIEdvb2dsZSBUZXN0IHdpbGwgY3JlYXRlIHRoZSBY
TUwgZmlsZSBpbgordGhhdCBkaXJlY3RvcnksIG5hbWVkIGFmdGVyIHRoZSB0ZXN0IGV4ZWN1dGFi
bGUgKGUuZy4gYGZvb190ZXN0LnhtbGAgZm9yIHRlc3QKK3Byb2dyYW0gYGZvb190ZXN0YCBvciBg
Zm9vX3Rlc3QuZXhlYCkuIElmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzIChwZXJoYXBzIGxlZnQK
K292ZXIgZnJvbSBhIHByZXZpb3VzIHJ1biksIEdvb2dsZSBUZXN0IHdpbGwgcGljayBhIGRpZmZl
cmVudCBuYW1lIChlLmcuCitgZm9vX3Rlc3RfMS54bWxgKSB0byBhdm9pZCBvdmVyd3JpdGluZyBp
dC4KKworVGhlIHJlcG9ydCB1c2VzIHRoZSBmb3JtYXQgZGVzY3JpYmVkIGhlcmUuICBJdCBpcyBi
YXNlZCBvbiB0aGUKK2BqdW5pdHJlcG9ydGAgQW50IHRhc2sgYW5kIGNhbiBiZSBwYXJzZWQgYnkg
cG9wdWxhciBjb250aW51b3VzIGJ1aWxkCitzeXN0ZW1zIGxpa2UgW0h1ZHNvbl0oaHR0cHM6Ly9o
dWRzb24uZGV2LmphdmEubmV0LykuIFNpbmNlIHRoYXQgZm9ybWF0Cit3YXMgb3JpZ2luYWxseSBp
bnRlbmRlZCBmb3IgSmF2YSwgYSBsaXR0bGUgaW50ZXJwcmV0YXRpb24gaXMgcmVxdWlyZWQKK3Rv
IG1ha2UgaXQgYXBwbHkgdG8gR29vZ2xlIFRlc3QgdGVzdHMsIGFzIHNob3duIGhlcmU6CisKK2Bg
YAorPHRlc3RzdWl0ZXMgbmFtZT0iQWxsVGVzdHMiIC4uLj4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJ0
ZXN0X2Nhc2VfbmFtZSIgLi4uPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJ0ZXN0X25hbWUiIC4uLj4K
KyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiIvPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0i
Li4uIi8+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4KKyAgICA8L3Rlc3RjYXNlPgor
ICA8L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1aXRlcz4KK2BgYAorCisgICogVGhlIHJvb3QgYDx0ZXN0
c3VpdGVzPmAgZWxlbWVudCBjb3JyZXNwb25kcyB0byB0aGUgZW50aXJlIHRlc3QgcHJvZ3JhbS4K
KyAgKiBgPHRlc3RzdWl0ZT5gIGVsZW1lbnRzIGNvcnJlc3BvbmQgdG8gR29vZ2xlIFRlc3QgdGVz
dCBjYXNlcy4KKyAgKiBgPHRlc3RjYXNlPmAgZWxlbWVudHMgY29ycmVzcG9uZCB0byBHb29nbGUg
VGVzdCB0ZXN0IGZ1bmN0aW9ucy4KKworRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIHByb2dy
YW0KKworYGBgCitURVNUKE1hdGhUZXN0LCBBZGRpdGlvbikgeyAuLi4gfQorVEVTVChNYXRoVGVz
dCwgU3VidHJhY3Rpb24pIHsgLi4uIH0KK1RFU1QoTG9naWNUZXN0LCBOb25Db250cmFkaWN0aW9u
KSB7IC4uLiB9CitgYGAKKworY291bGQgZ2VuZXJhdGUgdGhpcyByZXBvcnQ6CisKK2BgYAorPD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIz
IiBmYWlsdXJlcz0iMSIgZXJyb3JzPSIwIiB0aW1lPSIzNSIgbmFtZT0iQWxsVGVzdHMiPgorICA8
dGVzdHN1aXRlIG5hbWU9Ik1hdGhUZXN0IiB0ZXN0cz0iMiIgZmFpbHVyZXM9IjEiIGVycm9ycz0i
MCIgdGltZT0iMTUiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJBZGRpdGlvbiIgc3RhdHVzPSJydW4i
IHRpbWU9IjciIGNsYXNzbmFtZT0iIj4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IlZhbHVlIG9m
OiBhZGQoMSwgMSkmI3gwQTsgQWN0dWFsOiAzJiN4MEE7RXhwZWN0ZWQ6IDIiIHR5cGU9IiIvPgor
ICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IGFkZCgxLCAtMSkmI3gwQTsgQWN0dWFs
OiAxJiN4MEE7RXhwZWN0ZWQ6IDAiIHR5cGU9IiIvPgorICAgIDwvdGVzdGNhc2U+CisgICAgPHRl
c3RjYXNlIG5hbWU9IlN1YnRyYWN0aW9uIiBzdGF0dXM9InJ1biIgdGltZT0iNSIgY2xhc3NuYW1l
PSIiPgorICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorICA8dGVzdHN1aXRlIG5hbWU9
IkxvZ2ljVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBlcnJvcnM9IjAiIHRpbWU9IjUiPgor
ICAgIDx0ZXN0Y2FzZSBuYW1lPSJOb25Db250cmFkaWN0aW9uIiBzdGF0dXM9InJ1biIgdGltZT0i
NSIgY2xhc3NuYW1lPSIiPgorICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0
c3VpdGVzPgorYGBgCisKK1RoaW5ncyB0byBub3RlOgorCisgICogVGhlIGB0ZXN0c2AgYXR0cmli
dXRlIG9mIGEgYDx0ZXN0c3VpdGVzPmAgb3IgYDx0ZXN0c3VpdGU+YCBlbGVtZW50IHRlbGxzIGhv
dyBtYW55IHRlc3QgZnVuY3Rpb25zIHRoZSBHb29nbGUgVGVzdCBwcm9ncmFtIG9yIHRlc3QgY2Fz
ZSBjb250YWlucywgd2hpbGUgdGhlIGBmYWlsdXJlc2AgYXR0cmlidXRlIHRlbGxzIGhvdyBtYW55
IG9mIHRoZW0gZmFpbGVkLgorICAqIFRoZSBgdGltZWAgYXR0cmlidXRlIGV4cHJlc3NlcyB0aGUg
ZHVyYXRpb24gb2YgdGhlIHRlc3QsIHRlc3QgY2FzZSwgb3IgZW50aXJlIHRlc3QgcHJvZ3JhbSBp
biBtaWxsaXNlY29uZHMuCisgICogRWFjaCBgPGZhaWx1cmU+YCBlbGVtZW50IGNvcnJlc3BvbmRz
IHRvIGEgc2luZ2xlIGZhaWxlZCBHb29nbGUgVGVzdCBhc3NlcnRpb24uCisgICogU29tZSBKVW5p
dCBjb25jZXB0cyBkb24ndCBhcHBseSB0byBHb29nbGUgVGVzdCwgeWV0IHdlIGhhdmUgdG8gY29u
Zm9ybSB0byB0aGUgRFRELiBUaGVyZWZvcmUgeW91J2xsIHNlZSBzb21lIGR1bW15IGVsZW1lbnRz
IGFuZCBhdHRyaWJ1dGVzIGluIHRoZSByZXBvcnQuIFlvdSBjYW4gc2FmZWx5IGlnbm9yZSB0aGVz
ZSBwYXJ0cy4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIENv
bnRyb2xsaW5nIEhvdyBGYWlsdXJlcyBBcmUgUmVwb3J0ZWQgIyMKKworIyMjIFR1cm5pbmcgQXNz
ZXJ0aW9uIEZhaWx1cmVzIGludG8gQnJlYWstUG9pbnRzICMjIworCitXaGVuIHJ1bm5pbmcgdGVz
dCBwcm9ncmFtcyB1bmRlciBhIGRlYnVnZ2VyLCBpdCdzIHZlcnkgY29udmVuaWVudCBpZiB0aGUK
K2RlYnVnZ2VyIGNhbiBjYXRjaCBhbiBhc3NlcnRpb24gZmFpbHVyZSBhbmQgYXV0b21hdGljYWxs
eSBkcm9wIGludG8gaW50ZXJhY3RpdmUKK21vZGUuIEdvb2dsZSBUZXN0J3MgX2JyZWFrLW9uLWZh
aWx1cmVfIG1vZGUgc3VwcG9ydHMgdGhpcyBiZWhhdmlvci4KKworVG8gZW5hYmxlIGl0LCBzZXQg
dGhlIGBHVEVTVF9CUkVBS19PTl9GQUlMVVJFYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIHZh
bHVlCitvdGhlciB0aGFuIGAwYCAuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHRoZSBgLS1n
dGVzdF9icmVha19vbl9mYWlsdXJlYAorY29tbWFuZCBsaW5lIGZsYWcuCisKK19BdmFpbGFiaWxp
dHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgRGlzYWJsaW5nIENhdGNoaW5nIFRlc3Qt
VGhyb3duIEV4Y2VwdGlvbnMgIyMjCisKK0dvb2dsZSBUZXN0IGNhbiBiZSB1c2VkIGVpdGhlciB3
aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucyBlbmFibGVkLiAgSWYKK2EgdGVzdCB0aHJvd3MgYSBD
KysgZXhjZXB0aW9uIG9yIChvbiBXaW5kb3dzKSBhIHN0cnVjdHVyZWQgZXhjZXB0aW9uCisoU0VI
KSwgYnkgZGVmYXVsdCBHb29nbGUgVGVzdCBjYXRjaGVzIGl0LCByZXBvcnRzIGl0IGFzIGEgdGVz
dAorZmFpbHVyZSwgYW5kIGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0IHRlc3QgbWV0aG9kLiAgVGhp
cyBtYXhpbWl6ZXMgdGhlCitjb3ZlcmFnZSBvZiBhIHRlc3QgcnVuLiAgQWxzbywgb24gV2luZG93
cyBhbiB1bmNhdWdodCBleGNlcHRpb24gd2lsbAorY2F1c2UgYSBwb3AtdXAgd2luZG93LCBzbyBj
YXRjaGluZyB0aGUgZXhjZXB0aW9ucyBhbGxvd3MgeW91IHRvIHJ1bgordGhlIHRlc3RzIGF1dG9t
YXRpY2FsbHkuCisKK1doZW4gZGVidWdnaW5nIHRoZSB0ZXN0IGZhaWx1cmVzLCBob3dldmVyLCB5
b3UgbWF5IGluc3RlYWQgd2FudCB0aGUKK2V4Y2VwdGlvbnMgdG8gYmUgaGFuZGxlZCBieSB0aGUg
ZGVidWdnZXIsIHN1Y2ggdGhhdCB5b3UgY2FuIGV4YW1pbmUKK3RoZSBjYWxsIHN0YWNrIHdoZW4g
YW4gZXhjZXB0aW9uIGlzIHRocm93bi4gIFRvIGFjaGlldmUgdGhhdCwgc2V0IHRoZQorYEdURVNU
X0NBVENIX0VYQ0VQVElPTlNgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGAwYCwgb3IgdXNlIHRo
ZQorYC0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucz0wYCBmbGFnIHdoZW4gcnVubmluZyB0aGUgdGVz
dHMuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBMZXR0
aW5nIEFub3RoZXIgVGVzdGluZyBGcmFtZXdvcmsgRHJpdmUgIyMjCisKK0lmIHlvdSB3b3JrIG9u
IGEgcHJvamVjdCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gdXNpbmcgYW5vdGhlciB0ZXN0aW5nCitm
cmFtZXdvcmsgYW5kIGlzIG5vdCByZWFkeSB0byBjb21wbGV0ZWx5IHN3aXRjaCB0byBHb29nbGUg
VGVzdCB5ZXQsCit5b3UgY2FuIGdldCBtdWNoIG9mIEdvb2dsZSBUZXN0J3MgYmVuZWZpdCBieSB1
c2luZyBpdHMgYXNzZXJ0aW9ucyBpbgoreW91ciBleGlzdGluZyB0ZXN0cy4gIEp1c3QgY2hhbmdl
IHlvdXIgYG1haW4oKWAgZnVuY3Rpb24gdG8gbG9vaworbGlrZToKKworYGBgCisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIDo6
dGVzdGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9IHRydWU7CisgIC8vIEltcG9y
dGFudDogR29vZ2xlIFRlc3QgbXVzdCBiZSBpbml0aWFsaXplZC4KKyAgOjp0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgLi4uIHdoYXRldmVyIHlvdXIgZXhpc3Rpbmcg
dGVzdGluZyBmcmFtZXdvcmsgcmVxdWlyZXMgLi4uCit9CitgYGAKKworV2l0aCB0aGF0LCB5b3Ug
Y2FuIHVzZSBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGluIGFkZGl0aW9uIHRvIHRoZQorbmF0aXZl
IGFzc2VydGlvbnMgeW91ciB0ZXN0aW5nIGZyYW1ld29yayBwcm92aWRlcywgZm9yIGV4YW1wbGU6
CisKK2BgYAordm9pZCBUZXN0Rm9vRG9lc0JhcigpIHsKKyAgRm9vIGZvbzsKKyAgRVhQRUNUX0xF
KGZvby5CYXIoMSksIDEwMCk7ICAgICAvLyBBIEdvb2dsZSBUZXN0IGFzc2VydGlvbi4KKyAgQ1BQ
VU5JVF9BU1NFUlQoZm9vLklzRW1wdHkoKSk7ICAvLyBBIG5hdGl2ZSBhc3NlcnRpb24uCit9Citg
YGAKKworSWYgYSBHb29nbGUgVGVzdCBhc3NlcnRpb24gZmFpbHMsIGl0IHdpbGwgcHJpbnQgYW4g
ZXJyb3IgbWVzc2FnZSBhbmQKK3Rocm93IGFuIGV4Y2VwdGlvbiwgd2hpY2ggd2lsbCBiZSB0cmVh
dGVkIGFzIGEgZmFpbHVyZSBieSB5b3VyIGhvc3QKK3Rlc3RpbmcgZnJhbWV3b3JrLiAgSWYgeW91
IGNvbXBpbGUgeW91ciBjb2RlIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZCwKK2EgZmFpbGVkIEdv
b2dsZSBUZXN0IGFzc2VydGlvbiB3aWxsIGluc3RlYWQgZXhpdCB5b3VyIHByb2dyYW0gd2l0aCBh
Citub24temVybyBjb2RlLCB3aGljaCB3aWxsIGFsc28gc2lnbmFsIGEgdGVzdCBmYWlsdXJlIHRv
IHlvdXIgdGVzdAorcnVubmVyLgorCitJZiB5b3UgZG9uJ3Qgd3JpdGUgYDo6dGVzdGluZzo6R1RF
U1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9IHRydWU7YCBpbgoreW91ciBgbWFpbigpYCwgeW91
IGNhbiBhbHRlcm5hdGl2ZWx5IGVuYWJsZSB0aGlzIGZlYXR1cmUgYnkgc3BlY2lmeWluZwordGhl
IGAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmVgIGZsYWcgb24gdGhlIGNvbW1hbmQtbGluZSBvciBz
ZXR0aW5nIHRoZQorYEdURVNUX1RIUk9XX09OX0ZBSUxVUkVgIGVudmlyb25tZW50IHZhcmlhYmxl
IHRvIGEgbm9uLXplcm8gdmFsdWUuCisKK0RlYXRoIHRlc3RzIGFyZSBfbm90XyBzdXBwb3J0ZWQg
d2hlbiBvdGhlciB0ZXN0IGZyYW1ld29yayBpcyB1c2VkIHRvIG9yZ2FuaXplIHRlc3RzLgorCitf
QXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdjEuMy4wLgorCisjIyBE
aXN0cmlidXRpbmcgVGVzdCBGdW5jdGlvbnMgdG8gTXVsdGlwbGUgTWFjaGluZXMgIyMKKworSWYg
eW91IGhhdmUgbW9yZSB0aGFuIG9uZSBtYWNoaW5lIHlvdSBjYW4gdXNlIHRvIHJ1biBhIHRlc3Qg
cHJvZ3JhbSwKK3lvdSBtaWdodCB3YW50IHRvIHJ1biB0aGUgdGVzdCBmdW5jdGlvbnMgaW4gcGFy
YWxsZWwgYW5kIGdldCB0aGUKK3Jlc3VsdCBmYXN0ZXIuICBXZSBjYWxsIHRoaXMgdGVjaG5pcXVl
IF9zaGFyZGluZ18sIHdoZXJlIGVhY2ggbWFjaGluZQoraXMgY2FsbGVkIGEgX3NoYXJkXy4KKwor
R29vZ2xlIFRlc3QgaXMgY29tcGF0aWJsZSB3aXRoIHRlc3Qgc2hhcmRpbmcuICBUbyB0YWtlIGFk
dmFudGFnZSBvZgordGhpcyBmZWF0dXJlLCB5b3VyIHRlc3QgcnVubmVyIChub3QgcGFydCBvZiBH
b29nbGUgVGVzdCkgbmVlZHMgdG8gZG8KK3RoZSBmb2xsb3dpbmc6CisKKyAgMS4gQWxsb2NhdGUg
YSBudW1iZXIgb2YgbWFjaGluZXMgKHNoYXJkcykgdG8gcnVuIHRoZSB0ZXN0cy4KKyAgMS4gT24g
ZWFjaCBzaGFyZCwgc2V0IHRoZSBgR1RFU1RfVE9UQUxfU0hBUkRTYCBlbnZpcm9ubWVudCB2YXJp
YWJsZSB0byB0aGUgdG90YWwgbnVtYmVyIG9mIHNoYXJkcy4gIEl0IG11c3QgYmUgdGhlIHNhbWUg
Zm9yIGFsbCBzaGFyZHMuCisgIDEuIE9uIGVhY2ggc2hhcmQsIHNldCB0aGUgYEdURVNUX1NIQVJE
X0lOREVYYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0aGUgaW5kZXggb2YgdGhlIHNoYXJkLiAg
RGlmZmVyZW50IHNoYXJkcyBtdXN0IGJlIGFzc2lnbmVkIGRpZmZlcmVudCBpbmRpY2VzLCB3aGlj
aCBtdXN0IGJlIGluIHRoZSByYW5nZSBgWzAsIEdURVNUX1RPVEFMX1NIQVJEUyAtIDFdYC4KKyAg
MS4gUnVuIHRoZSBzYW1lIHRlc3QgcHJvZ3JhbSBvbiBhbGwgc2hhcmRzLiAgV2hlbiBHb29nbGUg
VGVzdCBzZWVzIHRoZSBhYm92ZSB0d28gZW52aXJvbm1lbnQgdmFyaWFibGVzLCBpdCB3aWxsIHNl
bGVjdCBhIHN1YnNldCBvZiB0aGUgdGVzdCBmdW5jdGlvbnMgdG8gcnVuLiAgQWNyb3NzIGFsbCBz
aGFyZHMsIGVhY2ggdGVzdCBmdW5jdGlvbiBpbiB0aGUgcHJvZ3JhbSB3aWxsIGJlIHJ1biBleGFj
dGx5IG9uY2UuCisgIDEuIFdhaXQgZm9yIGFsbCBzaGFyZHMgdG8gZmluaXNoLCB0aGVuIGNvbGxl
Y3QgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cy4KKworWW91ciBwcm9qZWN0IG1heSBoYXZlIHRlc3Rz
IHRoYXQgd2VyZSB3cml0dGVuIHdpdGhvdXQgR29vZ2xlIFRlc3QgYW5kCit0aHVzIGRvbid0IHVu
ZGVyc3RhbmQgdGhpcyBwcm90b2NvbC4gIEluIG9yZGVyIGZvciB5b3VyIHRlc3QgcnVubmVyIHRv
CitmaWd1cmUgb3V0IHdoaWNoIHRlc3Qgc3VwcG9ydHMgc2hhcmRpbmcsIGl0IGNhbiBzZXQgdGhl
IGVudmlyb25tZW50Cit2YXJpYWJsZSBgR1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEVgIHRvIGEgbm9u
LWV4aXN0ZW50IGZpbGUgcGF0aC4gIElmIGEKK3Rlc3QgcHJvZ3JhbSBzdXBwb3J0cyBzaGFyZGlu
ZywgaXQgd2lsbCBjcmVhdGUgdGhpcyBmaWxlIHRvCithY2tub3dsZWRnZSB0aGUgZmFjdCAodGhl
IGFjdHVhbCBjb250ZW50cyBvZiB0aGUgZmlsZSBhcmUgbm90CitpbXBvcnRhbnQgYXQgdGhpcyB0
aW1lOyBhbHRob3VnaCB3ZSBtYXkgc3RpY2sgc29tZSB1c2VmdWwgaW5mb3JtYXRpb24KK2luIGl0
IGluIHRoZSBmdXR1cmUuKTsgb3RoZXJ3aXNlIGl0IHdpbGwgbm90IGNyZWF0ZSBpdC4KKworSGVy
ZSdzIGFuIGV4YW1wbGUgdG8gbWFrZSBpdCBjbGVhci4gIFN1cHBvc2UgeW91IGhhdmUgYSB0ZXN0
IHByb2dyYW0KK2Bmb29fdGVzdGAgdGhhdCBjb250YWlucyB0aGUgZm9sbG93aW5nIDUgdGVzdCBm
dW5jdGlvbnM6CitgYGAKK1RFU1QoQSwgVikKK1RFU1QoQSwgVykKK1RFU1QoQiwgWCkKK1RFU1Qo
QiwgWSkKK1RFU1QoQiwgWikKK2BgYAorYW5kIHlvdSBoYXZlIDMgbWFjaGluZXMgYXQgeW91ciBk
aXNwb3NhbC4gIFRvIHJ1biB0aGUgdGVzdCBmdW5jdGlvbnMgaW4KK3BhcmFsbGVsLCB5b3Ugd291
bGQgc2V0IGBHVEVTVF9UT1RBTF9TSEFSRFNgIHRvIDMgb24gYWxsIG1hY2hpbmVzLCBhbmQKK3Nl
dCBgR1RFU1RfU0hBUkRfSU5ERVhgIHRvIDAsIDEsIGFuZCAyIG9uIHRoZSBtYWNoaW5lcyByZXNw
ZWN0aXZlbHkuCitUaGVuIHlvdSB3b3VsZCBydW4gdGhlIHNhbWUgYGZvb190ZXN0YCBvbiBlYWNo
IG1hY2hpbmUuCisKK0dvb2dsZSBUZXN0IHJlc2VydmVzIHRoZSByaWdodCB0byBjaGFuZ2UgaG93
IHRoZSB3b3JrIGlzIGRpc3RyaWJ1dGVkCithY3Jvc3MgdGhlIHNoYXJkcywgYnV0IGhlcmUncyBv
bmUgcG9zc2libGUgc2NlbmFyaW86CisKKyAgKiBNYWNoaW5lICMwIHJ1bnMgYEEuVmAgYW5kIGBC
LlhgLgorICAqIE1hY2hpbmUgIzEgcnVucyBgQS5XYCBhbmQgYEIuWWAuCisgICogTWFjaGluZSAj
MiBydW5zIGBCLlpgLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2lu
Y2UgdmVyc2lvbiAxLjMuMC4KKworIyBGdXNpbmcgR29vZ2xlIFRlc3QgU291cmNlIEZpbGVzICMK
KworR29vZ2xlIFRlc3QncyBpbXBsZW1lbnRhdGlvbiBjb25zaXN0cyBvZiB+MzAgZmlsZXMgKGV4
Y2x1ZGluZyBpdHMgb3duCit0ZXN0cykuICBTb21ldGltZXMgeW91IG1heSB3YW50IHRoZW0gdG8g
YmUgcGFja2FnZWQgdXAgaW4gdHdvIGZpbGVzIChhCitgLmhgIGFuZCBhIGAuY2NgKSBpbnN0ZWFk
LCBzdWNoIHRoYXQgeW91IGNhbiBlYXNpbHkgY29weSB0aGVtIHRvIGEgbmV3CittYWNoaW5lIGFu
ZCBzdGFydCBoYWNraW5nIHRoZXJlLiAgRm9yIHRoaXMgd2UgcHJvdmlkZSBhbiBleHBlcmltZW50
YWwKK1B5dGhvbiBzY3JpcHQgYGZ1c2VfZ3Rlc3RfZmlsZXMucHlgIGluIHRoZSBgc2NyaXB0cy9g
IGRpcmVjdG9yeSAoc2luY2UgcmVsZWFzZSAxLjMuMCkuCitBc3N1bWluZyB5b3UgaGF2ZSBQeXRo
b24gMi40IG9yIGFib3ZlIGluc3RhbGxlZCBvbiB5b3VyIG1hY2hpbmUsIGp1c3QKK2dvIHRvIHRo
YXQgZGlyZWN0b3J5IGFuZCBydW4KK2BgYAorcHl0aG9uIGZ1c2VfZ3Rlc3RfZmlsZXMucHkgT1VU
UFVUX0RJUgorYGBgCisKK2FuZCB5b3Ugc2hvdWxkIHNlZSBhbiBgT1VUUFVUX0RJUmAgZGlyZWN0
b3J5IGJlaW5nIGNyZWF0ZWQgd2l0aCBmaWxlcworYGd0ZXN0L2d0ZXN0LmhgIGFuZCBgZ3Rlc3Qv
Z3Rlc3QtYWxsLmNjYCBpbiBpdC4gIFRoZXNlIGZpbGVzIGNvbnRhaW4KK2V2ZXJ5dGhpbmcgeW91
IG5lZWQgdG8gdXNlIEdvb2dsZSBUZXN0LiAgSnVzdCBjb3B5IHRoZW0gdG8gYW55d2hlcmUKK3lv
dSB3YW50IGFuZCB5b3UgYXJlIHJlYWR5IHRvIHdyaXRlIHRlc3RzLiAgWW91IGNhbiB1c2UgdGhl
Citbc2NyaXB0cy90ZXN0L01ha2VmaWxlXSguLi9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUpCitmaWxl
IGFzIGFuIGV4YW1wbGUgb24gaG93IHRvIGNvbXBpbGUgeW91ciB0ZXN0cyBhZ2FpbnN0IHRoZW0u
CisKKyMgV2hlcmUgdG8gR28gZnJvbSBIZXJlICMKKworQ29uZ3JhdHVsYXRpb25zISBZb3UndmUg
bm93IGxlYXJuZWQgbW9yZSBhZHZhbmNlZCBHb29nbGUgVGVzdCB0b29scyBhbmQgYXJlCityZWFk
eSB0byB0YWNrbGUgbW9yZSBjb21wbGV4IHRlc3RpbmcgdGFza3MuIElmIHlvdSB3YW50IHRvIGRp
dmUgZXZlbiBkZWVwZXIsIHlvdQorY2FuIHJlYWQgdGhlIFtGcmVxdWVudGx5LUFza2VkIFF1ZXN0
aW9uc10oRkFRLm1kKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3Mv
RGV2R3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL0Rldkd1aWRlLm1kCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA2NDY3YTMyNzcxZjUzYzRhOWI5NWE2YWExMzRlZGRlM2ZhZGY2MzcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL0Rldkd1aWRlLm1kCkBA
IC0wLDAgKzEsMTI2IEBACisKKworSWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIHVuZGVyc3RhbmRp
bmcgdGhlIGludGVybmFscyBvZiBHb29nbGUgVGVzdCwKK2J1aWxkaW5nIGZyb20gc291cmNlLCBv
ciBjb250cmlidXRpbmcgaWRlYXMgb3IgbW9kaWZpY2F0aW9ucyB0byB0aGUKK3Byb2plY3QsIHRo
ZW4gdGhpcyBkb2N1bWVudCBpcyBmb3IgeW91LgorCisjIEludHJvZHVjdGlvbiAjCisKK0ZpcnN0
LCBsZXQncyBnaXZlIHlvdSBzb21lIGJhY2tncm91bmQgb2YgdGhlIHByb2plY3QuCisKKyMjIExp
Y2Vuc2luZyAjIworCitBbGwgR29vZ2xlIFRlc3Qgc291cmNlIGFuZCBwcmUtYnVpbHQgcGFja2Fn
ZXMgYXJlIHByb3ZpZGVkIHVuZGVyIHRoZSBbTmV3IEJTRCBMaWNlbnNlXShodHRwOi8vd3d3Lm9w
ZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocCkuCisKKyMjIFRoZSBHb29nbGUg
VGVzdCBDb21tdW5pdHkgIyMKKworVGhlIEdvb2dsZSBUZXN0IGNvbW11bml0eSBleGlzdHMgcHJp
bWFyaWx5IHRocm91Z2ggdGhlIFtkaXNjdXNzaW9uIGdyb3VwXShodHRwOi8vZ3JvdXBzLmdvb2ds
ZS5jb20vZ3JvdXAvZ29vZ2xldGVzdGZyYW1ld29yaykgYW5kIHRoZSBHaXRIdWIgcmVwb3NpdG9y
eS4KK1lvdSBhcmUgZGVmaW5pdGVseSBlbmNvdXJhZ2VkIHRvIGNvbnRyaWJ1dGUgdG8gdGhlCitk
aXNjdXNzaW9uIGFuZCB5b3UgY2FuIGFsc28gaGVscCB1cyB0byBrZWVwIHRoZSBlZmZlY3RpdmVu
ZXNzIG9mIHRoZQorZ3JvdXAgaGlnaCBieSBmb2xsb3dpbmcgYW5kIHByb21vdGluZyB0aGUgZ3Vp
ZGVsaW5lcyBsaXN0ZWQgaGVyZS4KKworIyMjIFBsZWFzZSBCZSBGcmllbmRseSAjIyMKKworU2hv
d2luZyBjb3VydGVzeSBhbmQgcmVzcGVjdCB0byBvdGhlcnMgaXMgYSB2aXRhbCBwYXJ0IG9mIHRo
ZSBHb29nbGUKK2N1bHR1cmUsIGFuZCB3ZSBzdHJvbmdseSBlbmNvdXJhZ2UgZXZlcnlvbmUgcGFy
dGljaXBhdGluZyBpbiBHb29nbGUKK1Rlc3QgZGV2ZWxvcG1lbnQgdG8gam9pbiB1cyBpbiBhY2Nl
cHRpbmcgbm90aGluZyBsZXNzLiBPZiBjb3Vyc2UsCitiZWluZyBjb3VydGVvdXMgaXMgbm90IHRo
ZSBzYW1lIGFzIGZhaWxpbmcgdG8gY29uc3RydWN0aXZlbHkgZGlzYWdyZWUKK3dpdGggZWFjaCBv
dGhlciwgYnV0IGl0IGRvZXMgbWVhbiB0aGF0IHdlIHNob3VsZCBiZSByZXNwZWN0ZnVsIG9mIGVh
Y2gKK290aGVyIHdoZW4gZW51bWVyYXRpbmcgdGhlIDQyIHRlY2huaWNhbCByZWFzb25zIHRoYXQg
YSBwYXJ0aWN1bGFyCitwcm9wb3NhbCBtYXkgbm90IGJlIHRoZSBiZXN0IGNob2ljZS4gVGhlcmUn
cyBuZXZlciBhIHJlYXNvbiB0byBiZQorYW50YWdvbmlzdGljIG9yIGRpc21pc3NpdmUgdG93YXJk
IGFueW9uZSB3aG8gaXMgc2luY2VyZWx5IHRyeWluZyB0bworY29udHJpYnV0ZSB0byBhIGRpc2N1
c3Npb24uCisKK1N1cmUsIEMrKyB0ZXN0aW5nIGlzIHNlcmlvdXMgYnVzaW5lc3MgYW5kIGFsbCB0
aGF0LCBidXQgaXQncyBhbHNvCithIGxvdCBvZiBmdW4uIExldCdzIGtlZXAgaXQgdGhhdCB3YXku
IExldCdzIHN0cml2ZSB0byBiZSBvbmUgb2YgdGhlCitmcmllbmRsaWVzdCBjb21tdW5pdGllcyBp
biBhbGwgb2Ygb3BlbiBzb3VyY2UuCisKK0FzIGFsd2F5cywgZGlzY3VzcyBHb29nbGUgVGVzdCBp
biB0aGUgb2ZmaWNpYWwgR29vZ2xlVGVzdCBkaXNjdXNzaW9uIGdyb3VwLgorWW91IGRvbid0IGhh
dmUgdG8gYWN0dWFsbHkgc3VibWl0IGNvZGUgaW4gb3JkZXIgdG8gc2lnbiB1cC4gWW91ciBwYXJ0
aWNpcGF0aW9uCitpdHNlbGYgaXMgYSB2YWx1YWJsZSBjb250cmlidXRpb24uCisKKyMgV29ya2lu
ZyB3aXRoIHRoZSBDb2RlICMKKworSWYgeW91IHdhbnQgdG8gZ2V0IHlvdXIgaGFuZHMgZGlydHkg
d2l0aCB0aGUgY29kZSBpbnNpZGUgR29vZ2xlIFRlc3QsCit0aGlzIGlzIHRoZSBzZWN0aW9uIGZv
ciB5b3UuCisKKyMjIENvbXBpbGluZyBmcm9tIFNvdXJjZSAjIworCitPbmNlIHlvdSBjaGVjayBv
dXQgdGhlIGNvZGUsIHlvdSBjYW4gZmluZCBpbnN0cnVjdGlvbnMgb24gaG93IHRvCitjb21waWxl
IGl0IGluIHRoZSBbUkVBRE1FXSguLi9SRUFETUUubWQpIGZpbGUuCisKKyMjIFRlc3RpbmcgIyMK
KworQSB0ZXN0aW5nIGZyYW1ld29yayBpcyBvZiBubyBnb29kIGlmIGl0c2VsZiBpcyBub3QgdGhv
cm91Z2hseSB0ZXN0ZWQuCitUZXN0cyBzaG91bGQgYmUgd3JpdHRlbiBmb3IgYW55IG5ldyBjb2Rl
LCBhbmQgY2hhbmdlcyBzaG91bGQgYmUKK3ZlcmlmaWVkIHRvIG5vdCBicmVhayBleGlzdGluZyB0
ZXN0cyBiZWZvcmUgdGhleSBhcmUgc3VibWl0dGVkIGZvcgorcmV2aWV3LiBUbyBwZXJmb3JtIHRo
ZSB0ZXN0cywgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgaW4KK1tSRUFETUVdKC4uL1JFQURNRS5t
ZCkgYW5kIHZlcmlmeSB0aGF0IHRoZXJlIGFyZSBubyBmYWlsdXJlcy4KKworIyBDb250cmlidXRp
bmcgQ29kZSAjCisKK1dlIGFyZSBleGNpdGVkIHRoYXQgR29vZ2xlIFRlc3QgaXMgbm93IG9wZW4g
c291cmNlLCBhbmQgaG9wZSB0byBnZXQKK2dyZWF0IHBhdGNoZXMgZnJvbSB0aGUgY29tbXVuaXR5
LiBCZWZvcmUgeW91IGZpcmUgdXAgeW91ciBmYXZvcml0ZSBJREUKK2FuZCBiZWdpbiBoYW1tZXJp
bmcgYXdheSBhdCB0aGF0IG5ldyBmZWF0dXJlLCB0aG91Z2gsIHBsZWFzZSB0YWtlIHRoZQordGlt
ZSB0byByZWFkIHRoaXMgc2VjdGlvbiBhbmQgdW5kZXJzdGFuZCB0aGUgcHJvY2Vzcy4gV2hpbGUg
aXQgc2VlbXMKK3JpZ29yb3VzLCB3ZSB3YW50IHRvIGtlZXAgYSBoaWdoIHN0YW5kYXJkIG9mIHF1
YWxpdHkgaW4gdGhlIGNvZGUKK2Jhc2UuCisKKyMjIENvbnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVt
ZW50cyAjIworCitZb3UgbXVzdCBzaWduIGEgQ29udHJpYnV0b3IgTGljZW5zZSBBZ3JlZW1lbnQg
KENMQSkgYmVmb3JlIHdlIGNhbgorYWNjZXB0IGFueSBjb2RlLiAgVGhlIENMQSBwcm90ZWN0cyB5
b3UgYW5kIHVzLgorCisgICogSWYgeW91IGFyZSBhbiBpbmRpdmlkdWFsIHdyaXRpbmcgb3JpZ2lu
YWwgc291cmNlIGNvZGUgYW5kIHlvdSdyZSBzdXJlIHlvdSBvd24gdGhlIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSwgdGhlbiB5b3UnbGwgbmVlZCB0byBzaWduIGFuIFtpbmRpdmlkdWFsIENMQV0oaHR0
cDovL2NvZGUuZ29vZ2xlLmNvbS9sZWdhbC9pbmRpdmlkdWFsLWNsYS12MS4wLmh0bWwpLgorICAq
IElmIHlvdSB3b3JrIGZvciBhIGNvbXBhbnkgdGhhdCB3YW50cyB0byBhbGxvdyB5b3UgdG8gY29u
dHJpYnV0ZSB5b3VyIHdvcmsgdG8gR29vZ2xlIFRlc3QsIHRoZW4geW91J2xsIG5lZWQgdG8gc2ln
biBhIFtjb3Jwb3JhdGUgQ0xBXShodHRwOi8vY29kZS5nb29nbGUuY29tL2xlZ2FsL2NvcnBvcmF0
ZS1jbGEtdjEuMC5odG1sKS4KKworRm9sbG93IGVpdGhlciBvZiB0aGUgdHdvIGxpbmtzIGFib3Zl
IHRvIGFjY2VzcyB0aGUgYXBwcm9wcmlhdGUgQ0xBIGFuZAoraW5zdHJ1Y3Rpb25zIGZvciBob3cg
dG8gc2lnbiBhbmQgcmV0dXJuIGl0LgorCisjIyBDb2RpbmcgU3R5bGUgIyMKKworVG8ga2VlcCB0
aGUgc291cmNlIGNvbnNpc3RlbnQsIHJlYWRhYmxlLCBkaWZmYWJsZSBhbmQgZWFzeSB0byBtZXJn
ZSwKK3dlIHVzZSBhIGZhaXJseSByaWdpZCBjb2Rpbmcgc3R5bGUsIGFzIGRlZmluZWQgYnkgdGhl
IFtnb29nbGUtc3R5bGVndWlkZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS1zdHls
ZWd1aWRlLykgcHJvamVjdC4gIEFsbCBwYXRjaGVzIHdpbGwgYmUgZXhwZWN0ZWQKK3RvIGNvbmZv
cm0gdG8gdGhlIHN0eWxlIG91dGxpbmVkIFtoZXJlXShodHRwOi8vZ29vZ2xlLXN0eWxlZ3VpZGUu
Z29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2NwcGd1aWRlLnhtbCkuCisKKyMjIFVwZGF0aW5nIEdl
bmVyYXRlZCBDb2RlICMjCisKK1NvbWUgb2YgR29vZ2xlIFRlc3QncyBzb3VyY2UgZmlsZXMgYXJl
IGdlbmVyYXRlZCBieSB0aGUgUHVtcCB0b29sIChhCitQeXRob24gc2NyaXB0KS4gIElmIHlvdSBu
ZWVkIHRvIHVwZGF0ZSBzdWNoIGZpbGVzLCBwbGVhc2UgbW9kaWZ5IHRoZQorc291cmNlIChgZm9v
LmgucHVtcGApIGFuZCByZS1nZW5lcmF0ZSB0aGUgQysrIGZpbGUgdXNpbmcgUHVtcC4gIFlvdQor
Y2FuIHJlYWQgdGhlIFB1bXBNYW51YWwgZm9yIGRldGFpbHMuCisKKyMjIFN1Ym1pdHRpbmcgUGF0
Y2hlcyAjIworCitQbGVhc2UgZG8gc3VibWl0IGNvZGUuIEhlcmUncyB3aGF0IHlvdSBuZWVkIHRv
IGRvOgorCisgIDEuIEEgc3VibWlzc2lvbiBzaG91bGQgYmUgYSBzZXQgb2YgY2hhbmdlcyB0aGF0
IGFkZHJlc3NlcyBvbmUgaXNzdWUgaW4gdGhlIFtpc3N1ZSB0cmFja2VyXShodHRwczovL2dpdGh1
Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvaXNzdWVzKS4gUGxlYXNlIGRvbid0IG1peCBtb3JlIHRo
YW4gb25lIGxvZ2ljYWwgY2hhbmdlIHBlciBzdWJtaXR0YWwsIGJlY2F1c2UgaXQgbWFrZXMgdGhl
IGhpc3RvcnkgaGFyZCB0byBmb2xsb3cuIElmIHlvdSB3YW50IHRvIG1ha2UgYSBjaGFuZ2UgdGhh
dCBkb2Vzbid0IGhhdmUgYSBjb3JyZXNwb25kaW5nIGlzc3VlIGluIHRoZSBpc3N1ZSB0cmFja2Vy
LCBwbGVhc2UgY3JlYXRlIG9uZS4KKyAgMS4gQWxzbywgY29vcmRpbmF0ZSB3aXRoIHRlYW0gbWVt
YmVycyB0aGF0IGFyZSBsaXN0ZWQgb24gdGhlIGlzc3VlIGluIHF1ZXN0aW9uLiBUaGlzIGVuc3Vy
ZXMgdGhhdCB3b3JrIGlzbid0IGJlaW5nIGR1cGxpY2F0ZWQgYW5kIGNvbW11bmljYXRpbmcgeW91
ciBwbGFuIGVhcmx5IGFsc28gZ2VuZXJhbGx5IGxlYWRzIHRvIGJldHRlciBwYXRjaGVzLgorICAx
LiBFbnN1cmUgdGhhdCB5b3VyIGNvZGUgYWRoZXJlcyB0byB0aGUgW0dvb2dsZSBUZXN0IHNvdXJj
ZSBjb2RlIHN0eWxlXSgjQ29kaW5nX1N0eWxlLm1kKS4KKyAgMS4gRW5zdXJlIHRoYXQgdGhlcmUg
YXJlIHVuaXQgdGVzdHMgZm9yIHlvdXIgY29kZS4KKyAgMS4gU2lnbiBhIENvbnRyaWJ1dG9yIExp
Y2Vuc2UgQWdyZWVtZW50LgorICAxLiBDcmVhdGUgYSBQdWxsIFJlcXVlc3QgaW4gdGhlIHVzdWFs
IHdheS4KKworIyMgR29vZ2xlIFRlc3QgQ29tbWl0dGVycyAjIworCitUaGUgY3VycmVudCBtZW1i
ZXJzIG9mIHRoZSBHb29nbGUgVGVzdCBlbmdpbmVlcmluZyB0ZWFtIGFyZSB0aGUgb25seQorY29t
bWl0dGVycyBhdCBwcmVzZW50LiBJbiB0aGUgZ3JlYXQgdHJhZGl0aW9uIG9mIGVhdGluZyBvbmUn
cyBvd24KK2RvZ2Zvb2QsIHdlIHdpbGwgYmUgcmVxdWlyaW5nIGVhY2ggbmV3IEdvb2dsZSBUZXN0
IGVuZ2luZWVyaW5nIHRlYW0KK21lbWJlciB0byBlYXJuIHRoZSByaWdodCB0byBiZWNvbWUgYSBj
b21taXR0ZXIgYnkgZm9sbG93aW5nIHRoZQorcHJvY2VkdXJlcyBpbiB0aGlzIGRvY3VtZW50LCB3
cml0aW5nIGNvbnNpc3RlbnRseSBncmVhdCBjb2RlLCBhbmQKK2RlbW9uc3RyYXRpbmcgcmVwZWF0
ZWRseSB0aGF0IGhlIG9yIHNoZSB0cnVseSBnZXRzIHRoZSB6ZW4gb2YgR29vZ2xlCitUZXN0Lgor
CisjIFJlbGVhc2UgUHJvY2VzcyAjCisKK1dlIGZvbGxvdyBhIHR5cGljYWwgcmVsZWFzZSBwcm9j
ZXNzOgorCisgIDEuIEEgcmVsZWFzZSBicmFuY2ggbmFtZWQgYHJlbGVhc2UtWC5ZYCBpcyBjcmVh
dGVkLgorICAxLiBCdWdzIGFyZSBmaXhlZCBhbmQgZmVhdHVyZXMgYXJlIGFkZGVkIGluIHRydW5r
OyB0aG9zZSBpbmRpdmlkdWFsIHBhdGNoZXMgYXJlIG1lcmdlZCBpbnRvIHRoZSByZWxlYXNlIGJy
YW5jaCB1bnRpbCBpdCdzIHN0YWJsZS4KKyAgMS4gQW4gaW5kaXZpZHVhbCBwb2ludCByZWxlYXNl
ICh0aGUgYFpgIGluIGBYLlkuWmApIGlzIG1hZGUgYnkgY3JlYXRpbmcgYSB0YWcgZnJvbSB0aGUg
YnJhbmNoLgorICAxLiBSZXBlYXQgc3RlcHMgMiBhbmQgMyB0aHJvdWdob3V0IG9uZSByZWxlYXNl
IGN5Y2xlIChhcyBkZXRlcm1pbmVkIGJ5IGZlYXR1cmVzIG9yIHRpbWUpLgorICAxLiBHbyBiYWNr
IHRvIHN0ZXAgMSB0byBjcmVhdGUgYW5vdGhlciByZWxlYXNlIGJyYW5jaCBhbmQgc28gb24uCisK
Ky0tLQorCitUaGlzIHBhZ2UgaXMgYmFzZWQgb24gdGhlIFtNYWtpbmcgR1dUIEJldHRlcl0oaHR0
cDovL2NvZGUuZ29vZ2xlLmNvbS93ZWJ0b29sa2l0L21ha2luZ2d3dGJldHRlci5odG1sKSBndWlk
ZSBmcm9tIHRoZSBbR29vZ2xlIFdlYiBUb29sa2l0XShodHRwOi8vY29kZS5nb29nbGUuY29tL3dl
YnRvb2xraXQvKSBwcm9qZWN0LiAgRXhjZXB0IGFzIG90aGVyd2lzZSBbbm90ZWRdKGh0dHA6Ly9j
b2RlLmdvb2dsZS5jb20vcG9saWNpZXMuaHRtbCNyZXN0cmljdGlvbnMpLCB0aGUgY29udGVudCBv
ZiB0aGlzIHBhZ2UgaXMgbGljZW5zZWQgdW5kZXIgdGhlIFtDcmVhdGl2ZSBDb21tb25zIEF0dHJp
YnV0aW9uIDIuNSBMaWNlbnNlXShodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9i
eS8yLjUvKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvRG9jdW1l
bnRhdGlvbi5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvRG9jdW1lbnRhdGlvbi5t
ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44Y2ExYWFjNzU5OTM3MmUwZDk1MTlhMjEwYzMzNGFlYjM5MzA2MWMwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9Eb2N1bWVudGF0
aW9uLm1kCkBAIC0wLDAgKzEsMTQgQEAKK1RoaXMgcGFnZSBsaXN0cyBhbGwgZG9jdW1lbnRhdGlv
biB3aWtpIHBhZ2VzIGZvciBHb29nbGUgVGVzdCAqKih0aGUgU1ZOIHRydW5rIHZlcnNpb24pKioK
Ky0tICoqaWYgeW91IHVzZSBhIHJlbGVhc2VkIHZlcnNpb24gb2YgR29vZ2xlIFRlc3QsIHBsZWFz
ZSByZWFkIHRoZQorZG9jdW1lbnRhdGlvbiBmb3IgdGhhdCBzcGVjaWZpYyB2ZXJzaW9uIGluc3Rl
YWQuKioKKworICAqIFtQcmltZXJdKFByaW1lci5tZCkgLS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJl
IG5ldyB0byBHb29nbGUgVGVzdC4KKyAgKiBbU2FtcGxlc10oU2FtcGxlcy5tZCkgLS0gbGVhcm4g
ZnJvbSBleGFtcGxlcy4KKyAgKiBbQWR2YW5jZWRHdWlkZV0oQWR2YW5jZWRHdWlkZS5tZCkgLS0g
bGVhcm4gbW9yZSBhYm91dCBHb29nbGUgVGVzdC4KKyAgKiBbWGNvZGVHdWlkZV0oWGNvZGVHdWlk
ZS5tZCkgLS0gaG93IHRvIHVzZSBHb29nbGUgVGVzdCBpbiBYY29kZSBvbiBNYWMuCisgICogW0Zy
ZXF1ZW50bHktQXNrZWQgUXVlc3Rpb25zXShGQVEubWQpIC0tIGNoZWNrIGhlcmUgYmVmb3JlIGFz
a2luZyBhIHF1ZXN0aW9uIG9uIHRoZSBtYWlsaW5nIGxpc3QuCisKK1RvIGNvbnRyaWJ1dGUgY29k
ZSB0byBHb29nbGUgVGVzdCwgcmVhZDoKKworICAqIFtEZXZHdWlkZV0oRGV2R3VpZGUubWQpIC0t
IHJlYWQgdGhpcyBfYmVmb3JlXyB3cml0aW5nIHlvdXIgZmlyc3QgcGF0Y2guCisgICogW1B1bXBN
YW51YWxdKFB1bXBNYW51YWwubWQpIC0tIGhvdyB3ZSBnZW5lcmF0ZSBzb21lIG9mIEdvb2dsZSBU
ZXN0J3Mgc291cmNlIGZpbGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvRkFRLm1kIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvZG9jcy9GQVEubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZkNmNiNzIzOGExOWI3YTcxYTRhOTVh
NjNiZTkzZTE5MjE0NTJkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2RvY3MvRkFRLm1kCkBAIC0wLDAgKzEsMTA4NyBAQAorCisKK0lmIHlvdSBjYW5ub3QgZmlu
ZCB0aGUgYW5zd2VyIHRvIHlvdXIgcXVlc3Rpb24gaGVyZSwgYW5kIHlvdSBoYXZlIHJlYWQKK1tQ
cmltZXJdKFByaW1lci5tZCkgYW5kIFtBZHZhbmNlZEd1aWRlXShBZHZhbmNlZEd1aWRlLm1kKSwg
c2VuZCBpdCB0bworZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tLgorCisjIyBX
aHkgc2hvdWxkIEkgdXNlIEdvb2dsZSBUZXN0IGluc3RlYWQgb2YgbXkgZmF2b3JpdGUgQysrIHRl
c3RpbmcgZnJhbWV3b3JrPyAjIworCitGaXJzdCwgbGV0IHVzIHNheSBjbGVhcmx5IHRoYXQgd2Ug
ZG9uJ3Qgd2FudCB0byBnZXQgaW50byB0aGUgZGViYXRlIG9mCit3aGljaCBDKysgdGVzdGluZyBm
cmFtZXdvcmsgaXMgKip0aGUgYmVzdCoqLiAgVGhlcmUgZXhpc3QgbWFueSBmaW5lCitmcmFtZXdv
cmtzIGZvciB3cml0aW5nIEMrKyB0ZXN0cywgYW5kIHdlIGhhdmUgdHJlbWVuZG91cyByZXNwZWN0
IGZvcgordGhlIGRldmVsb3BlcnMgYW5kIHVzZXJzIG9mIHRoZW0uICBXZSBkb24ndCB0aGluayB0
aGVyZSBpcyAob3Igd2lsbAorYmUpIGEgc2luZ2xlIGJlc3QgZnJhbWV3b3JrIC0geW91IGhhdmUg
dG8gcGljayB0aGUgcmlnaHQgdG9vbCBmb3IgdGhlCitwYXJ0aWN1bGFyIHRhc2sgeW91IGFyZSB0
YWNrbGluZy4KKworV2UgY3JlYXRlZCBHb29nbGUgVGVzdCBiZWNhdXNlIHdlIGNvdWxkbid0IGZp
bmQgdGhlIHJpZ2h0IGNvbWJpbmF0aW9uCitvZiBmZWF0dXJlcyBhbmQgY29udmVuaWVuY2VzIGlu
IGFuIGV4aXN0aW5nIGZyYW1ld29yayB0byBzYXRpc2Z5IF9vdXJfCituZWVkcy4gIFRoZSBmb2xs
b3dpbmcgaXMgYSBsaXN0IG9mIHRoaW5ncyB0aGF0IF93ZV8gbGlrZSBhYm91dCBHb29nbGUKK1Rl
c3QuICBXZSBkb24ndCBjbGFpbSB0aGVtIHRvIGJlIHVuaXF1ZSB0byBHb29nbGUgVGVzdCAtIHJh
dGhlciwgdGhlCitjb21iaW5hdGlvbiBvZiB0aGVtIG1ha2VzIEdvb2dsZSBUZXN0IHRoZSBjaG9p
Y2UgZm9yIHVzLiAgV2UgaG9wZSB0aGlzCitsaXN0IGNhbiBoZWxwIHlvdSBkZWNpZGUgd2hldGhl
ciBpdCBpcyBmb3IgeW91IHRvby4KKworICAqIEdvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHRvIGJl
IHBvcnRhYmxlOiBpdCBkb2Vzbid0IHJlcXVpcmUgZXhjZXB0aW9ucyBvciBSVFRJOyBpdCB3b3Jr
cyBhcm91bmQgdmFyaW91cyBidWdzIGluIHZhcmlvdXMgY29tcGlsZXJzIGFuZCBlbnZpcm9ubWVu
dHM7IGV0Yy4gIEFzIGEgcmVzdWx0LCBpdCB3b3JrcyBvbiBMaW51eCwgTWFjIE9TIFgsIFdpbmRv
d3MgYW5kIHNldmVyYWwgZW1iZWRkZWQgb3BlcmF0aW5nIHN5c3RlbXMuCisgICogTm9uZmF0YWwg
YXNzZXJ0aW9ucyAoYEVYUEVDVF8qYCkgaGF2ZSBwcm92ZW4gdG8gYmUgZ3JlYXQgdGltZSBzYXZl
cnMsIGFzIHRoZXkgYWxsb3cgYSB0ZXN0IHRvIHJlcG9ydCBtdWx0aXBsZSBmYWlsdXJlcyBpbiBh
IHNpbmdsZSBlZGl0LWNvbXBpbGUtdGVzdCBjeWNsZS4KKyAgKiBJdCdzIGVhc3kgdG8gd3JpdGUg
YXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIGluZm9ybWF0aXZlIG1lc3NhZ2VzOiB5b3UganVzdCB1
c2UgdGhlIHN0cmVhbSBzeW50YXggdG8gYXBwZW5kIGFueSBhZGRpdGlvbmFsIGluZm9ybWF0aW9u
LCBlLmcuIGBBU1NFUlRfRVEoNSwgRm9vKGkpKSA8PCAiIHdoZXJlIGkgPSAiIDw8IGk7YC4gIEl0
IGRvZXNuJ3QgcmVxdWlyZSBhIG5ldyBzZXQgb2YgbWFjcm9zIG9yIHNwZWNpYWwgZnVuY3Rpb25z
LgorICAqIEdvb2dsZSBUZXN0IGF1dG9tYXRpY2FsbHkgZGV0ZWN0cyB5b3VyIHRlc3RzIGFuZCBk
b2Vzbid0IHJlcXVpcmUgeW91IHRvIGVudW1lcmF0ZSB0aGVtIGluIG9yZGVyIHRvIHJ1biB0aGVt
LgorICAqIERlYXRoIHRlc3RzIGFyZSBwcmV0dHkgaGFuZHkgZm9yIGVuc3VyaW5nIHRoYXQgeW91
ciBhc3NlcnRzIGluIHByb2R1Y3Rpb24gY29kZSBhcmUgdHJpZ2dlcmVkIGJ5IHRoZSByaWdodCBj
b25kaXRpb25zLgorICAqIGBTQ09QRURfVFJBQ0VgIGhlbHBzIHlvdSB1bmRlcnN0YW5kIHRoZSBj
b250ZXh0IG9mIGFuIGFzc2VydGlvbiBmYWlsdXJlIHdoZW4gaXQgY29tZXMgZnJvbSBpbnNpZGUg
YSBzdWItcm91dGluZSBvciBsb29wLgorICAqIFlvdSBjYW4gZGVjaWRlIHdoaWNoIHRlc3RzIHRv
IHJ1biB1c2luZyBuYW1lIHBhdHRlcm5zLiAgVGhpcyBzYXZlcyB0aW1lIHdoZW4geW91IHdhbnQg
dG8gcXVpY2tseSByZXByb2R1Y2UgYSB0ZXN0IGZhaWx1cmUuCisgICogR29vZ2xlIFRlc3QgY2Fu
IGdlbmVyYXRlIFhNTCB0ZXN0IHJlc3VsdCByZXBvcnRzIHRoYXQgY2FuIGJlIHBhcnNlZCBieSBw
b3B1bGFyIGNvbnRpbnVvdXMgYnVpbGQgc3lzdGVtIGxpa2UgSHVkc29uLgorICAqIFNpbXBsZSB0
aGluZ3MgYXJlIGVhc3kgaW4gR29vZ2xlIFRlc3QsIHdoaWxlIGhhcmQgdGhpbmdzIGFyZSBwb3Nz
aWJsZTogaW4gYWRkaXRpb24gdG8gYWR2YW5jZWQgZmVhdHVyZXMgbGlrZSBbZ2xvYmFsIHRlc3Qg
ZW52aXJvbm1lbnRzXShBZHZhbmNlZEd1aWRlLm1kI2dsb2JhbC1zZXQtdXAtYW5kLXRlYXItZG93
bikgYW5kIHRlc3RzIHBhcmFtZXRlcml6ZWQgYnkgW3ZhbHVlc10oQWR2YW5jZWRHdWlkZS5tZCN2
YWx1ZS1wYXJhbWV0ZXJpemVkLXRlc3RzKSBvciBbdHlwZXNdKGRvY3MvQWR2YW5jZWRHdWlkZS5t
ZCN0eXBlZC10ZXN0cyksIEdvb2dsZSBUZXN0IHN1cHBvcnRzIHZhcmlvdXMgd2F5cyBmb3IgdGhl
IHVzZXIgdG8gZXh0ZW5kIHRoZSBmcmFtZXdvcmsgLS0gaWYgR29vZ2xlIFRlc3QgZG9lc24ndCBk
byBzb21ldGhpbmcgb3V0IG9mIHRoZSBib3gsIGNoYW5jZXMgYXJlIHRoYXQgYSB1c2VyIGNhbiBp
bXBsZW1lbnQgdGhlIGZlYXR1cmUgdXNpbmcgR29vZ2xlIFRlc3QncyBwdWJsaWMgQVBJLCB3aXRo
b3V0IGNoYW5naW5nIEdvb2dsZSBUZXN0IGl0c2VsZi4gIEluIHBhcnRpY3VsYXIsIHlvdSBjYW46
CisgICAgKiBleHBhbmQgeW91ciB0ZXN0aW5nIHZvY2FidWxhcnkgYnkgZGVmaW5pbmcgW2N1c3Rv
bSBwcmVkaWNhdGVzXShBZHZhbmNlZEd1aWRlLm1kI3ByZWRpY2F0ZS1hc3NlcnRpb25zLWZvci1i
ZXR0ZXItZXJyb3ItbWVzc2FnZXMpLAorICAgICogdGVhY2ggR29vZ2xlIFRlc3QgaG93IHRvIFtw
cmludCB5b3VyIHR5cGVzXShBZHZhbmNlZEd1aWRlLm1kI3RlYWNoaW5nLWdvb2dsZS10ZXN0LWhv
dy10by1wcmludC15b3VyLXZhbHVlcyksCisgICAgKiBkZWZpbmUgeW91ciBvd24gdGVzdGluZyBt
YWNyb3Mgb3IgdXRpbGl0aWVzIGFuZCB2ZXJpZnkgdGhlbSB1c2luZyBHb29nbGUgVGVzdCdzIFtT
ZXJ2aWNlIFByb3ZpZGVyIEludGVyZmFjZV0oQWR2YW5jZWRHdWlkZS5tZCNjYXRjaGluZy1mYWls
dXJlcyksIGFuZAorICAgICogcmVmbGVjdCBvbiB0aGUgdGVzdCBjYXNlcyBvciBjaGFuZ2UgdGhl
IHRlc3Qgb3V0cHV0IGZvcm1hdCBieSBpbnRlcmNlcHRpbmcgdGhlIFt0ZXN0IGV2ZW50c10oQWR2
YW5jZWRHdWlkZS5tZCNleHRlbmRpbmctZ29vZ2xlLXRlc3QtYnktaGFuZGxpbmctdGVzdC1ldmVu
dHMpLgorCisjIyBJJ20gZ2V0dGluZyB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZyBHb29nbGUgVGVz
dC4gIFdvdWxkIHlvdSBmaXggdGhlbT8gIyMKKworV2Ugc3RyaXZlIHRvIG1pbmltaXplIGNvbXBp
bGVyIHdhcm5pbmdzIEdvb2dsZSBUZXN0IGdlbmVyYXRlcy4gIEJlZm9yZSByZWxlYXNpbmcgYSBu
ZXcgdmVyc2lvbiwgd2UgdGVzdCB0byBtYWtlIHN1cmUgdGhhdCBpdCBkb2Vzbid0IGdlbmVyYXRl
IHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgdXNpbmcgaXRzIENNYWtlIHNjcmlwdCBvbiBXaW5kb3dz
LCBMaW51eCwgYW5kIE1hYyBPUy4KKworVW5mb3J0dW5hdGVseSwgdGhpcyBkb2Vzbid0IG1lYW4g
eW91IGFyZSBndWFyYW50ZWVkIHRvIHNlZSBubyB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZyBHb29n
bGUgVGVzdCBpbiB5b3VyIGVudmlyb25tZW50OgorCisgICogWW91IG1heSBiZSB1c2luZyBhIGRp
ZmZlcmVudCBjb21waWxlciBhcyB3ZSB1c2UsIG9yIGEgZGlmZmVyZW50IHZlcnNpb24gb2YgdGhl
IHNhbWUgY29tcGlsZXIuICBXZSBjYW5ub3QgcG9zc2libHkgdGVzdCBmb3IgYWxsIGNvbXBpbGVy
cy4KKyAgKiBZb3UgbWF5IGJlIGNvbXBpbGluZyBvbiBhIGRpZmZlcmVudCBwbGF0Zm9ybSBhcyB3
ZSBkby4KKyAgKiBZb3VyIHByb2plY3QgbWF5IGJlIHVzaW5nIGRpZmZlcmVudCBjb21waWxlciBm
bGFncyBhcyB3ZSBkby4KKworSXQgaXMgbm90IGFsd2F5cyBwb3NzaWJsZSB0byBtYWtlIEdvb2ds
ZSBUZXN0IHdhcm5pbmctZnJlZSBmb3IgZXZlcnlvbmUuICBPciwgaXQgbWF5IG5vdCBiZSBkZXNp
cmFibGUgaWYgdGhlIHdhcm5pbmcgaXMgcmFyZWx5IGVuYWJsZWQgYW5kIGZpeGluZyB0aGUgdmlv
bGF0aW9ucyBtYWtlcyB0aGUgY29kZSBtb3JlIGNvbXBsZXguCisKK0lmIHlvdSBzZWUgd2Fybmlu
Z3Mgd2hlbiBjb21waWxpbmcgR29vZ2xlIFRlc3QsIHdlIHN1Z2dlc3QgdGhhdCB5b3UgdXNlIHRo
ZSBgLWlzeXN0ZW1gIGZsYWcgKGFzc3VtaW5nIHlvdXIgYXJlIHVzaW5nIEdDQykgdG8gbWFyayBH
b29nbGUgVGVzdCBoZWFkZXJzIGFzIHN5c3RlbSBoZWFkZXJzLiAgVGhhdCdsbCBzdXBwcmVzcyB3
YXJuaW5ncyBmcm9tIEdvb2dsZSBUZXN0IGhlYWRlcnMuCisKKyMjIFdoeSBzaG91bGQgbm90IHRl
c3QgY2FzZSBuYW1lcyBhbmQgdGVzdCBuYW1lcyBjb250YWluIHVuZGVyc2NvcmU/ICMjCisKK1Vu
ZGVyc2NvcmUgKGBfYCkgaXMgc3BlY2lhbCwgYXMgQysrIHJlc2VydmVzIHRoZSBmb2xsb3dpbmcg
dG8gYmUgdXNlZCBieQordGhlIGNvbXBpbGVyIGFuZCB0aGUgc3RhbmRhcmQgbGlicmFyeToKKwor
ICAxLiBhbnkgaWRlbnRpZmllciB0aGF0IHN0YXJ0cyB3aXRoIGFuIGBfYCBmb2xsb3dlZCBieSBh
biB1cHBlci1jYXNlIGxldHRlciwgYW5kCisgIDEuIGFueSBpZGVudGlmaWVyIHRoYXQgY29udGFp
bmVycyB0d28gY29uc2VjdXRpdmUgdW5kZXJzY29yZXMgKGkuZS4gYF9fYCkgX2FueXdoZXJlXyBp
biBpdHMgbmFtZS4KKworVXNlciBjb2RlIGlzIF9wcm9oaWJpdGVkXyBmcm9tIHVzaW5nIHN1Y2gg
aWRlbnRpZmllcnMuCisKK05vdyBsZXQncyBsb29rIGF0IHdoYXQgdGhpcyBtZWFucyBmb3IgYFRF
U1RgIGFuZCBgVEVTVF9GYC4KKworQ3VycmVudGx5IGBURVNUKFRlc3RDYXNlTmFtZSwgVGVzdE5h
bWUpYCBnZW5lcmF0ZXMgYSBjbGFzcyBuYW1lZAorYFRlc3RDYXNlTmFtZV9UZXN0TmFtZV9UZXN0
YC4gIFdoYXQgaGFwcGVucyBpZiBgVGVzdENhc2VOYW1lYCBvciBgVGVzdE5hbWVgCitjb250YWlu
cyBgX2A/CisKKyAgMS4gSWYgYFRlc3RDYXNlTmFtZWAgc3RhcnRzIHdpdGggYW4gYF9gIGZvbGxv
d2VkIGJ5IGFuIHVwcGVyLWNhc2UgbGV0dGVyIChzYXksIGBfRm9vYCksIHdlIGVuZCB1cCB3aXRo
IGBfRm9vX1Rlc3ROYW1lX1Rlc3RgLCB3aGljaCBpcyByZXNlcnZlZCBhbmQgdGh1cyBpbnZhbGlk
LgorICAxLiBJZiBgVGVzdENhc2VOYW1lYCBlbmRzIHdpdGggYW4gYF9gIChzYXksIGBGb29fYCks
IHdlIGdldCBgRm9vX19UZXN0TmFtZV9UZXN0YCwgd2hpY2ggaXMgaW52YWxpZC4KKyAgMS4gSWYg
YFRlc3ROYW1lYCBzdGFydHMgd2l0aCBhbiBgX2AgKHNheSwgYF9CYXJgKSwgd2UgZ2V0IGBUZXN0
Q2FzZU5hbWVfX0Jhcl9UZXN0YCwgd2hpY2ggaXMgaW52YWxpZC4KKyAgMS4gSWYgYFRlc3ROYW1l
YCBlbmRzIHdpdGggYW4gYF9gIChzYXksIGBCYXJfYCksIHdlIGdldCBgVGVzdENhc2VOYW1lX0Jh
cl9fVGVzdGAsIHdoaWNoIGlzIGludmFsaWQuCisKK1NvIGNsZWFybHkgYFRlc3RDYXNlTmFtZWAg
YW5kIGBUZXN0TmFtZWAgY2Fubm90IHN0YXJ0IG9yIGVuZCB3aXRoIGBfYAorKEFjdHVhbGx5LCBg
VGVzdENhc2VOYW1lYCBjYW4gc3RhcnQgd2l0aCBgX2AgLS0gYXMgbG9uZyBhcyB0aGUgYF9gIGlz
bid0Citmb2xsb3dlZCBieSBhbiB1cHBlci1jYXNlIGxldHRlci4gIEJ1dCB0aGF0J3MgZ2V0dGlu
ZyBjb21wbGljYXRlZC4gIFNvCitmb3Igc2ltcGxpY2l0eSB3ZSBqdXN0IHNheSB0aGF0IGl0IGNh
bm5vdCBzdGFydCB3aXRoIGBfYC4pLgorCitJdCBtYXkgc2VlbSBmaW5lIGZvciBgVGVzdENhc2VO
YW1lYCBhbmQgYFRlc3ROYW1lYCB0byBjb250YWluIGBfYCBpbiB0aGUKK21pZGRsZS4gIEhvd2V2
ZXIsIGNvbnNpZGVyIHRoaXM6CitgYGAgY3BwCitURVNUKFRpbWUsIEZsaWVzX0xpa2VfQW5fQXJy
b3cpIHsgLi4uIH0KK1RFU1QoVGltZV9GbGllcywgTGlrZV9Bbl9BcnJvdykgeyAuLi4gfQorYGBg
CisKK05vdywgdGhlIHR3byBgVEVTVGBzIHdpbGwgYm90aCBnZW5lcmF0ZSB0aGUgc2FtZSBjbGFz
cworKGBUaW1lX0ZpbGVzX0xpa2VfQW5fQXJyb3dfVGVzdGApLiAgVGhhdCdzIG5vdCBnb29kLgor
CitTbyBmb3Igc2ltcGxpY2l0eSwgd2UganVzdCBhc2sgdGhlIHVzZXJzIHRvIGF2b2lkIGBfYCBp
biBgVGVzdENhc2VOYW1lYAorYW5kIGBUZXN0TmFtZWAuICBUaGUgcnVsZSBpcyBtb3JlIGNvbnN0
cmFpbmluZyB0aGFuIG5lY2Vzc2FyeSwgYnV0IGl0J3MKK3NpbXBsZSBhbmQgZWFzeSB0byByZW1l
bWJlci4gIEl0IGFsc28gZ2l2ZXMgR29vZ2xlIFRlc3Qgc29tZSB3aWdnbGUKK3Jvb20gaW4gY2Fz
ZSBpdHMgaW1wbGVtZW50YXRpb24gbmVlZHMgdG8gY2hhbmdlIGluIHRoZSBmdXR1cmUuCisKK0lm
IHlvdSB2aW9sYXRlIHRoZSBydWxlLCB0aGVyZSBtYXkgbm90IGJlIGltbWVkaWF0ZWx5IGNvbnNl
cXVlbmNlcywKK2J1dCB5b3VyIHRlc3QgbWF5IChqdXN0IG1heSkgYnJlYWsgd2l0aCBhIG5ldyBj
b21waWxlciAob3IgYSBuZXcKK3ZlcnNpb24gb2YgdGhlIGNvbXBpbGVyIHlvdSBhcmUgdXNpbmcp
IG9yIHdpdGggYSBuZXcgdmVyc2lvbiBvZiBHb29nbGUKK1Rlc3QuICBUaGVyZWZvcmUgaXQncyBi
ZXN0IHRvIGZvbGxvdyB0aGUgcnVsZS4KKworIyMgV2h5IGlzIGl0IG5vdCByZWNvbW1lbmRlZCB0
byBpbnN0YWxsIGEgcHJlLWNvbXBpbGVkIGNvcHkgb2YgR29vZ2xlIFRlc3QgKGZvciBleGFtcGxl
LCBpbnRvIC91c3IvbG9jYWwpPyAjIworCitJbiB0aGUgZWFybHkgZGF5cywgd2Ugc2FpZCB0aGF0
IHlvdSBjb3VsZCBpbnN0YWxsCitjb21waWxlZCBHb29nbGUgVGVzdCBsaWJyYXJpZXMgb24gYCpg
bml4IHN5c3RlbXMgdXNpbmcgYG1ha2UgaW5zdGFsbGAuCitUaGVuIGV2ZXJ5IHVzZXIgb2YgeW91
ciBtYWNoaW5lIGNhbiB3cml0ZSB0ZXN0cyB3aXRob3V0CityZWNvbXBpbGluZyBHb29nbGUgVGVz
dC4KKworVGhpcyBzZWVtZWQgbGlrZSBhIGdvb2QgaWRlYSwgYnV0IGl0IGhhcyBhCitnb3QtY2hh
OiBldmVyeSB1c2VyIG5lZWRzIHRvIGNvbXBpbGUgaGlzIHRlc3RzIHVzaW5nIHRoZSBfc2FtZV8g
Y29tcGlsZXIKK2ZsYWdzIHVzZWQgdG8gY29tcGlsZSB0aGUgaW5zdGFsbGVkIEdvb2dsZSBUZXN0
IGxpYnJhcmllczsgb3RoZXJ3aXNlCitoZSBtYXkgcnVuIGludG8gdW5kZWZpbmVkIGJlaGF2aW9y
cyAoaS5lLiB0aGUgdGVzdHMgY2FuIGJlaGF2ZQorc3RyYW5nZWx5IGFuZCBtYXkgZXZlbiBjcmFz
aCBmb3Igbm8gb2J2aW91cyByZWFzb25zKS4KKworV2h5PyAgQmVjYXVzZSBDKysgaGFzIHRoaXMg
dGhpbmcgY2FsbGVkIHRoZSBPbmUtRGVmaW5pdGlvbiBSdWxlOiBpZgordHdvIEMrKyBzb3VyY2Ug
ZmlsZXMgY29udGFpbiBkaWZmZXJlbnQgZGVmaW5pdGlvbnMgb2YgdGhlIHNhbWUKK2NsYXNzL2Z1
bmN0aW9uL3ZhcmlhYmxlLCBhbmQgeW91IGxpbmsgdGhlbSB0b2dldGhlciwgeW91IHZpb2xhdGUg
dGhlCitydWxlLiAgVGhlIGxpbmtlciBtYXkgb3IgbWF5IG5vdCBjYXRjaCB0aGUgZXJyb3IgKGlu
IG1hbnkgY2FzZXMgaXQncworbm90IHJlcXVpcmVkIGJ5IHRoZSBDKysgc3RhbmRhcmQgdG8gY2F0
Y2ggdGhlIHZpb2xhdGlvbikuICBJZiBpdAorZG9lc24ndCwgeW91IGdldCBzdHJhbmdlIHJ1bi10
aW1lIGJlaGF2aW9ycyB0aGF0IGFyZSB1bmV4cGVjdGVkIGFuZAoraGFyZCB0byBkZWJ1Zy4KKwor
SWYgeW91IGNvbXBpbGUgR29vZ2xlIFRlc3QgYW5kIHlvdXIgdGVzdCBjb2RlIHVzaW5nIGRpZmZl
cmVudCBjb21waWxlcgorZmxhZ3MsIHRoZXkgbWF5IHNlZSBkaWZmZXJlbnQgZGVmaW5pdGlvbnMg
b2YgdGhlIHNhbWUKK2NsYXNzL2Z1bmN0aW9uL3ZhcmlhYmxlIChlLmcuIGR1ZSB0byB0aGUgdXNl
IG9mIGAjaWZgIGluIEdvb2dsZSBUZXN0KS4KK1RoZXJlZm9yZSwgZm9yIHlvdXIgc2FuaXR5LCB3
ZSByZWNvbW1lbmQgdG8gYXZvaWQgaW5zdGFsbGluZyBwcmUtY29tcGlsZWQKK0dvb2dsZSBUZXN0
IGxpYnJhcmllcy4gIEluc3RlYWQsIGVhY2ggcHJvamVjdCBzaG91bGQgY29tcGlsZQorR29vZ2xl
IFRlc3QgaXRzZWxmIHN1Y2ggdGhhdCBpdCBjYW4gYmUgc3VyZSB0aGF0IHRoZSBzYW1lIGZsYWdz
IGFyZQordXNlZCBmb3IgYm90aCBHb29nbGUgVGVzdCBhbmQgdGhlIHRlc3RzLgorCisjIyBIb3cg
ZG8gSSBnZW5lcmF0ZSA2NC1iaXQgYmluYXJpZXMgb24gV2luZG93cyAodXNpbmcgVmlzdWFsIFN0
dWRpbyAyMDA4KT8gIyMKKworKEFuc3dlcmVkIGJ5IFRyZXZvciBSb2JpbnNvbikKKworTG9hZCB0
aGUgc3VwcGxpZWQgVmlzdWFsIFN0dWRpbyBzb2x1dGlvbiBmaWxlLCBlaXRoZXIgYG1zdmNcZ3Rl
c3QtbWQuc2xuYCBvcgorYG1zdmNcZ3Rlc3Quc2xuYC4gR28gdGhyb3VnaCB0aGUgbWlncmF0aW9u
IHdpemFyZCB0byBtaWdyYXRlIHRoZQorc29sdXRpb24gYW5kIHByb2plY3QgZmlsZXMgdG8gVmlz
dWFsIFN0dWRpbyAyMDA4LiBTZWxlY3QKK2BDb25maWd1cmF0aW9uIE1hbmFnZXIuLi5gIGZyb20g
dGhlIGBCdWlsZGAgbWVudS4gU2VsZWN0IGA8TmV3Li4uPmAgZnJvbQordGhlIGBBY3RpdmUgc29s
dXRpb24gcGxhdGZvcm1gIGRyb3Bkb3duLiAgU2VsZWN0IGB4NjRgIGZyb20gdGhlIG5ldworcGxh
dGZvcm0gZHJvcGRvd24sIGxlYXZlIGBDb3B5IHNldHRpbmdzIGZyb21gIHNldCB0byBgV2luMzJg
IGFuZAorYENyZWF0ZSBuZXcgcHJvamVjdCBwbGF0Zm9ybXNgIGNoZWNrZWQsIHRoZW4gY2xpY2sg
YE9LYC4gWW91IG5vdyBoYXZlCitgV2luMzJgIGFuZCBgeDY0YCBwbGF0Zm9ybSBjb25maWd1cmF0
aW9ucywgc2VsZWN0YWJsZSBmcm9tIHRoZQorYFN0YW5kYXJkYCB0b29sYmFyLCB3aGljaCBhbGxv
dyB5b3UgdG8gdG9nZ2xlIGJldHdlZW4gYnVpbGRpbmcgMzItYml0IG9yCis2NC1iaXQgYmluYXJp
ZXMgKG9yIGJvdGggYXQgb25jZSB1c2luZyBCYXRjaCBCdWlsZCkuCisKK0luIG9yZGVyIHRvIHBy
ZXZlbnQgYnVpbGQgb3V0cHV0IGZpbGVzIGZyb20gb3ZlcndyaXRpbmcgb25lIGFub3RoZXIsCit5
b3UnbGwgbmVlZCB0byBjaGFuZ2UgdGhlIGBJbnRlcm1lZGlhdGUgRGlyZWN0b3J5YCBzZXR0aW5n
cyBmb3IgdGhlCituZXdseSBjcmVhdGVkIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gYWNyb3NzIGFs
bCB0aGUgcHJvamVjdHMuIFRvIGRvCit0aGlzLCBtdWx0aS1zZWxlY3QgKGUuZy4gdXNpbmcgc2hp
ZnQtY2xpY2spIGFsbCBwcm9qZWN0cyAoYnV0IG5vdCB0aGUKK3NvbHV0aW9uKSBpbiB0aGUgYFNv
bHV0aW9uIEV4cGxvcmVyYC4gUmlnaHQtY2xpY2sgb25lIG9mIHRoZW0gYW5kCitzZWxlY3QgYFBy
b3BlcnRpZXNgLiBJbiB0aGUgbGVmdCBwYW5lLCBzZWxlY3QgYENvbmZpZ3VyYXRpb24gUHJvcGVy
dGllc2AsCithbmQgZnJvbSB0aGUgYENvbmZpZ3VyYXRpb25gIGRyb3Bkb3duLCBzZWxlY3QgYEFs
bCBDb25maWd1cmF0aW9uc2AuCitNYWtlIHN1cmUgdGhlIHNlbGVjdGVkIHBsYXRmb3JtIGlzIGB4
NjRgLiBGb3IgdGhlCitgSW50ZXJtZWRpYXRlIERpcmVjdG9yeWAgc2V0dGluZywgY2hhbmdlIHRo
ZSB2YWx1ZSBmcm9tCitgJChQbGF0Zm9ybU5hbWUpXCQoQ29uZmlndXJhdGlvbk5hbWUpYCB0bwor
YCQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWAuIENsaWNrIGBPS2AgYW5kIHRoZW4gYnVpbGQgdGhl
Citzb2x1dGlvbi4gV2hlbiB0aGUgYnVpbGQgaXMgY29tcGxldGUsIHRoZSA2NC1iaXQgYmluYXJp
ZXMgd2lsbCBiZSBpbgordGhlIGBtc3ZjXHg2NFxEZWJ1Z2AgZGlyZWN0b3J5LgorCisjIyBDYW4g
SSB1c2UgR29vZ2xlIFRlc3Qgb24gTWluR1c/ICMjCisKK1dlIGhhdmVuJ3QgdGVzdGVkIHRoaXMg
b3Vyc2VsdmVzLCBidXQgUGVyIEFicmFoYW1zZW4gcmVwb3J0ZWQgdGhhdCBoZQord2FzIGFibGUg
dG8gY29tcGlsZSBhbmQgaW5zdGFsbCBHb29nbGUgVGVzdCBzdWNjZXNzZnVsbHkgd2hlbiB1c2lu
ZworTWluR1cgZnJvbSBDeWd3aW4uICBZb3UnbGwgbmVlZCB0byBjb25maWd1cmUgaXQgd2l0aDoK
KworYFBBVEgvVE8vY29uZmlndXJlIENDPSJnY2MgLW1uby1jeWd3aW4iIENYWD0iZysrIC1tbm8t
Y3lnd2luImAKKworWW91IHNob3VsZCBiZSBhYmxlIHRvIHJlcGxhY2UgdGhlIGAtbW5vLWN5Z3dp
bmAgb3B0aW9uIHdpdGggZGlyZWN0IGxpbmtzCit0byB0aGUgcmVhbCBNaW5HVyBiaW5hcmllcywg
YnV0IHdlIGhhdmVuJ3QgdHJpZWQgdGhhdC4KKworQ2F2ZWF0czoKKworICAqIFRoZXJlIGFyZSBt
YW55IHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nLgorICAqIGBtYWtlIGNoZWNrYCB3aWxsIHByb2R1
Y2Ugc29tZSBlcnJvcnMgYXMgbm90IGFsbCB0ZXN0cyBmb3IgR29vZ2xlIFRlc3QgaXRzZWxmIGFy
ZSBjb21wYXRpYmxlIHdpdGggTWluR1cuCisKK1dlIGFsc28gaGF2ZSByZXBvcnRzIG9uIHN1Y2Nl
c3NmdWwgY3Jvc3MgY29tcGlsYXRpb24gb2YgR29vZ2xlIFRlc3QKK01pbkdXIGJpbmFyaWVzIG9u
IExpbnV4IHVzaW5nCitbdGhlc2UgaW5zdHJ1Y3Rpb25zXShodHRwOi8vd2lraS53eHdpZGdldHMu
b3JnL0Nyb3NzLUNvbXBpbGluZ19VbmRlcl9MaW51eCNDcm9zcy1jb21waWxpbmdfdW5kZXJfTGlu
dXhfZm9yX01TX1dpbmRvd3MpCitvbiB0aGUgV3hXaWRnZXRzIHNpdGUuCisKK1BsZWFzZSBjb250
YWN0IGBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb21gIGlmIHlvdSBhcmUKK2lu
dGVyZXN0ZWQgaW4gaW1wcm92aW5nIHRoZSBzdXBwb3J0IGZvciBNaW5HVy4KKworIyMgV2h5IGRv
ZXMgR29vZ2xlIFRlc3Qgc3VwcG9ydCBFWFBFQ1RcX0VRKE5VTEwsIHB0cikgYW5kIEFTU0VSVFxf
RVEoTlVMTCwgcHRyKSBidXQgbm90IEVYUEVDVFxfTkUoTlVMTCwgcHRyKSBhbmQgQVNTRVJUXF9O
RShOVUxMLCBwdHIpPyAjIworCitEdWUgdG8gc29tZSBwZWN1bGlhcml0eSBvZiBDKyssIGl0IHJl
cXVpcmVzIHNvbWUgbm9uLXRyaXZpYWwgdGVtcGxhdGUKK21ldGEgcHJvZ3JhbW1pbmcgdHJpY2tz
IHRvIHN1cHBvcnQgdXNpbmcgYE5VTExgIGFzIGFuIGFyZ3VtZW50IG9mIHRoZQorYEVYUEVDVF9Y
WCgpYCBhbmQgYEFTU0VSVF9YWCgpYCBtYWNyb3MuIFRoZXJlZm9yZSB3ZSBvbmx5IGRvIGl0IHdo
ZXJlCitpdCdzIG1vc3QgbmVlZGVkIChvdGhlcndpc2Ugd2UgbWFrZSB0aGUgaW1wbGVtZW50YXRp
b24gb2YgR29vZ2xlIFRlc3QKK2hhcmRlciB0byBtYWludGFpbiBhbmQgbW9yZSBlcnJvci1wcm9u
ZSB0aGFuIG5lY2Vzc2FyeSkuCisKK1RoZSBgRVhQRUNUX0VRKClgIG1hY3JvIHRha2VzIHRoZSBf
ZXhwZWN0ZWRfIHZhbHVlIGFzIGl0cyBmaXJzdAorYXJndW1lbnQgYW5kIHRoZSBfYWN0dWFsXyB2
YWx1ZSBhcyB0aGUgc2Vjb25kLiBJdCdzIHJlYXNvbmFibGUgdGhhdAorc29tZW9uZSB3YW50cyB0
byB3cml0ZSBgRVhQRUNUX0VRKE5VTEwsIHNvbWVfZXhwcmVzc2lvbilgLCBhbmQgdGhpcworaW5k
ZWVkIHdhcyByZXF1ZXN0ZWQgc2V2ZXJhbCB0aW1lcy4gVGhlcmVmb3JlIHdlIGltcGxlbWVudGVk
IGl0LgorCitUaGUgbmVlZCBmb3IgYEVYUEVDVF9ORShOVUxMLCBwdHIpYCBpc24ndCBuZWFybHkg
YXMgc3Ryb25nLiBXaGVuIHRoZQorYXNzZXJ0aW9uIGZhaWxzLCB5b3UgYWxyZWFkeSBrbm93IHRo
YXQgYHB0cmAgbXVzdCBiZSBgTlVMTGAsIHNvIGl0Citkb2Vzbid0IGFkZCBhbnkgaW5mb3JtYXRp
b24gdG8gcHJpbnQgcHRyIGluIHRoaXMgY2FzZS4gVGhhdCBtZWFucworYEVYUEVDVF9UUlVFKHB0
ciAhPSBOVUxMKWAgd29ya3MganVzdCBhcyB3ZWxsLgorCitJZiB3ZSB3ZXJlIHRvIHN1cHBvcnQg
YEVYUEVDVF9ORShOVUxMLCBwdHIpYCwgZm9yIGNvbnNpc3RlbmN5IHdlJ2xsCitoYXZlIHRvIHN1
cHBvcnQgYEVYUEVDVF9ORShwdHIsIE5VTEwpYCBhcyB3ZWxsLCBhcyB1bmxpa2UgYEVYUEVDVF9F
UWAsCit3ZSBkb24ndCBoYXZlIGEgY29udmVudGlvbiBvbiB0aGUgb3JkZXIgb2YgdGhlIHR3byBh
cmd1bWVudHMgZm9yCitgRVhQRUNUX05FYC4gVGhpcyBtZWFucyB1c2luZyB0aGUgdGVtcGxhdGUg
bWV0YSBwcm9ncmFtbWluZyB0cmlja3MKK3R3aWNlIGluIHRoZSBpbXBsZW1lbnRhdGlvbiwgbWFr
aW5nIGl0IGV2ZW4gaGFyZGVyIHRvIHVuZGVyc3RhbmQgYW5kCittYWludGFpbi4gV2UgYmVsaWV2
ZSB0aGUgYmVuZWZpdCBkb2Vzbid0IGp1c3RpZnkgdGhlIGNvc3QuCisKK0ZpbmFsbHksIHdpdGgg
dGhlIGdyb3d0aCBvZiBHb29nbGUgTW9jaydzIFttYXRjaGVyXSguLi8uLi9nb29nbGVtb2NrL2Rv
Y3MvQ29va0Jvb2subWQjdXNpbmctbWF0Y2hlcnMtaW4tZ29vZ2xlLXRlc3QtYXNzZXJ0aW9ucykg
bGlicmFyeSwgd2UgYXJlCitlbmNvdXJhZ2luZyBwZW9wbGUgdG8gdXNlIHRoZSB1bmlmaWVkIGBF
WFBFQ1RfVEhBVCh2YWx1ZSwgbWF0Y2hlcilgCitzeW50YXggbW9yZSBvZnRlbiBpbiB0ZXN0cy4g
T25lIHNpZ25pZmljYW50IGFkdmFudGFnZSBvZiB0aGUgbWF0Y2hlcgorYXBwcm9hY2ggaXMgdGhh
dCBtYXRjaGVycyBjYW4gYmUgZWFzaWx5IGNvbWJpbmVkIHRvIGZvcm0gbmV3IG1hdGNoZXJzLAor
d2hpbGUgdGhlIGBFWFBFQ1RfTkVgLCBldGMsIG1hY3JvcyBjYW5ub3QgYmUgZWFzaWx5Citjb21i
aW5lZC4gVGhlcmVmb3JlIHdlIHdhbnQgdG8gaW52ZXN0IG1vcmUgaW4gdGhlIG1hdGNoZXJzIHRo
YW4gaW4gdGhlCitgRVhQRUNUX1hYKClgIG1hY3Jvcy4KKworIyMgRG9lcyBHb29nbGUgVGVzdCBz
dXBwb3J0IHJ1bm5pbmcgdGVzdHMgaW4gcGFyYWxsZWw/ICMjCisKK1Rlc3QgcnVubmVycyB0ZW5k
IHRvIGJlIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBidWlsZC90ZXN0CitlbnZpcm9ubWVudCwg
YW5kIEdvb2dsZSBUZXN0IGRvZXNuJ3QgdHJ5IHRvIHNvbHZlIHRoZSBwcm9ibGVtIG9mCitydW5u
aW5nIHRlc3RzIGluIHBhcmFsbGVsLiAgSW5zdGVhZCwgd2UgdHJpZWQgdG8gbWFrZSBHb29nbGUg
VGVzdCB3b3JrCituaWNlbHkgd2l0aCB0ZXN0IHJ1bm5lcnMuICBGb3IgZXhhbXBsZSwgR29vZ2xl
IFRlc3QncyBYTUwgcmVwb3J0Citjb250YWlucyB0aGUgdGltZSBzcGVudCBvbiBlYWNoIHRlc3Qs
IGFuZCBpdHMgYGd0ZXN0X2xpc3RfdGVzdHNgIGFuZAorYGd0ZXN0X2ZpbHRlcmAgZmxhZ3MgY2Fu
IGJlIHVzZWQgZm9yIHNwbGl0dGluZyB0aGUgZXhlY3V0aW9uIG9mIHRlc3QKK21ldGhvZHMgaW50
byBtdWx0aXBsZSBwcm9jZXNzZXMuICBUaGVzZSBmdW5jdGlvbmFsaXRpZXMgY2FuIGhlbHAgdGhl
Cit0ZXN0IHJ1bm5lciBydW4gdGhlIHRlc3RzIGluIHBhcmFsbGVsLgorCisjIyBXaHkgZG9uJ3Qg
R29vZ2xlIFRlc3QgcnVuIHRoZSB0ZXN0cyBpbiBkaWZmZXJlbnQgdGhyZWFkcyB0byBzcGVlZCB0
aGluZ3MgdXA/ICMjCisKK0l0J3MgZGlmZmljdWx0IHRvIHdyaXRlIHRocmVhZC1zYWZlIGNvZGUu
ICBNb3N0IHRlc3RzIGFyZSBub3Qgd3JpdHRlbgord2l0aCB0aHJlYWQtc2FmZXR5IGluIG1pbmQs
IGFuZCB0aHVzIG1heSBub3Qgd29yayBjb3JyZWN0bHkgaW4gYQorbXVsdGktdGhyZWFkZWQgc2V0
dGluZy4KKworSWYgeW91IHRoaW5rIGFib3V0IGl0LCBpdCdzIGFscmVhZHkgaGFyZCB0byBtYWtl
IHlvdXIgY29kZSB3b3JrIHdoZW4KK3lvdSBrbm93IHdoYXQgb3RoZXIgdGhyZWFkcyBhcmUgZG9p
bmcuICBJdCdzIG11Y2ggaGFyZGVyLCBhbmQKK3NvbWV0aW1lcyBldmVuIGltcG9zc2libGUsIHRv
IG1ha2UgeW91ciBjb2RlIHdvcmsgd2hlbiB5b3UgZG9uJ3Qga25vdword2hhdCBvdGhlciB0aHJl
YWRzIGFyZSBkb2luZyAocmVtZW1iZXIgdGhhdCB0ZXN0IG1ldGhvZHMgY2FuIGJlIGFkZGVkLAor
ZGVsZXRlZCwgb3IgbW9kaWZpZWQgYWZ0ZXIgeW91ciB0ZXN0IHdhcyB3cml0dGVuKS4gIElmIHlv
dSB3YW50IHRvIHJ1bgordGhlIHRlc3RzIGluIHBhcmFsbGVsLCB5b3UnZCBiZXR0ZXIgcnVuIHRo
ZW0gaW4gZGlmZmVyZW50IHByb2Nlc3Nlcy4KKworIyMgV2h5IGFyZW4ndCBHb29nbGUgVGVzdCBh
c3NlcnRpb25zIGltcGxlbWVudGVkIHVzaW5nIGV4Y2VwdGlvbnM/ICMjCisKK091ciBvcmlnaW5h
bCBtb3RpdmF0aW9uIHdhcyB0byBiZSBhYmxlIHRvIHVzZSBHb29nbGUgVGVzdCBpbiBwcm9qZWN0
cwordGhhdCBkaXNhYmxlIGV4Y2VwdGlvbnMuICBMYXRlciB3ZSByZWFsaXplZCBzb21lIGFkZGl0
aW9uYWwgYmVuZWZpdHMKK29mIHRoaXMgYXBwcm9hY2g6CisKKyAgMS4gVGhyb3dpbmcgaW4gYSBk
ZXN0cnVjdG9yIGlzIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBDKysuICBOb3QgdXNpbmcgZXhjZXB0
aW9ucyBtZWFucyBHb29nbGUgVGVzdCdzIGFzc2VydGlvbnMgYXJlIHNhZmUgdG8gdXNlIGluIGRl
c3RydWN0b3JzLgorICAxLiBUaGUgYEVYUEVDVF8qYCBmYW1pbHkgb2YgbWFjcm9zIHdpbGwgY29u
dGludWUgZXZlbiBhZnRlciBhIGZhaWx1cmUsIGFsbG93aW5nIG11bHRpcGxlIGZhaWx1cmVzIGlu
IGEgYFRFU1RgIHRvIGJlIHJlcG9ydGVkIGluIGEgc2luZ2xlIHJ1bi4gVGhpcyBpcyBhIHBvcHVs
YXIgZmVhdHVyZSwgYXMgaW4gQysrIHRoZSBlZGl0LWNvbXBpbGUtdGVzdCBjeWNsZSBpcyB1c3Vh
bGx5IHF1aXRlIGxvbmcgYW5kIGJlaW5nIGFibGUgdG8gZml4aW5nIG1vcmUgdGhhbiBvbmUgdGhp
bmcgYXQgYSB0aW1lIGlzIGEgYmxlc3NpbmcuCisgIDEuIElmIGFzc2VydGlvbnMgYXJlIGltcGxl
bWVudGVkIHVzaW5nIGV4Y2VwdGlvbnMsIGEgdGVzdCBtYXkgZmFsc2VseSBpZ25vcmUgYSBmYWls
dXJlIGlmIGl0J3MgY2F1Z2h0IGJ5IHVzZXIgY29kZToKK2BgYCBjcHAKK3RyeSB7IC4uLiBBU1NF
UlRfVFJVRSguLi4pIC4uLiB9CitjYXRjaCAoLi4uKSB7IC4uLiB9CitgYGAKK1RoZSBhYm92ZSBj
b2RlIHdpbGwgcGFzcyBldmVuIGlmIHRoZSBgQVNTRVJUX1RSVUVgIHRocm93cy4gIFdoaWxlIGl0
J3MgdW5saWtlbHkgZm9yIHNvbWVvbmUgdG8gd3JpdGUgdGhpcyBpbiBhIHRlc3QsIGl0J3MgcG9z
c2libGUgdG8gcnVuIGludG8gdGhpcyBwYXR0ZXJuIHdoZW4geW91IHdyaXRlIGFzc2VydGlvbnMg
aW4gY2FsbGJhY2tzIHRoYXQgYXJlIGNhbGxlZCBieSB0aGUgY29kZSB1bmRlciB0ZXN0LgorCitU
aGUgZG93bnNpZGUgb2Ygbm90IHVzaW5nIGV4Y2VwdGlvbnMgaXMgdGhhdCBgQVNTRVJUXypgIChp
bXBsZW1lbnRlZAordXNpbmcgYHJldHVybmApIHdpbGwgb25seSBhYm9ydCB0aGUgY3VycmVudCBm
dW5jdGlvbiwgbm90IHRoZSBjdXJyZW50CitgVEVTVGAuCisKKyMjIFdoeSBkbyB3ZSB1c2UgdHdv
IGRpZmZlcmVudCBtYWNyb3MgZm9yIHRlc3RzIHdpdGggYW5kIHdpdGhvdXQgZml4dHVyZXM/ICMj
CisKK1VuZm9ydHVuYXRlbHksIEMrKydzIG1hY3JvIHN5c3RlbSBkb2Vzbid0IGFsbG93IHVzIHRv
IHVzZSB0aGUgc2FtZQorbWFjcm8gZm9yIGJvdGggY2FzZXMuICBPbmUgcG9zc2liaWxpdHkgaXMg
dG8gcHJvdmlkZSBvbmx5IG9uZSBtYWNybworZm9yIHRlc3RzIHdpdGggZml4dHVyZXMsIGFuZCBy
ZXF1aXJlIHRoZSB1c2VyIHRvIGRlZmluZSBhbiBlbXB0eQorZml4dHVyZSBzb21ldGltZXM6CisK
K2BgYCBjcHAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCitU
RVNUX0YoRm9vVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KK2BgYAorb3IKK2BgYCBjcHAKK3R5cGVk
ZWYgOjp0ZXN0aW5nOjpUZXN0IEZvb1Rlc3Q7CisKK1RFU1RfRihGb29UZXN0LCBEb2VzVGhhdCkg
eyAuLi4gfQorYGBgCisKK1lldCwgbWFueSBwZW9wbGUgdGhpbmsgdGhpcyBpcyBvbmUgbGluZSB0
b28gbWFueS4gOi0pIE91ciBnb2FsIHdhcyB0bworbWFrZSBpdCByZWFsbHkgZWFzeSB0byB3cml0
ZSB0ZXN0cywgc28gd2UgdHJpZWQgdG8gbWFrZSBzaW1wbGUgdGVzdHMKK3RyaXZpYWwgdG8gY3Jl
YXRlLiAgVGhhdCBtZWFucyB1c2luZyBhIHNlcGFyYXRlIG1hY3JvIGZvciBzdWNoIHRlc3RzLgor
CitXZSB0aGluayBuZWl0aGVyIGFwcHJvYWNoIGlzIGlkZWFsLCB5ZXQgZWl0aGVyIG9mIHRoZW0g
aXMgcmVhc29uYWJsZS4KK0luIHRoZSBlbmQsIGl0IHByb2JhYmx5IGRvZXNuJ3QgbWF0dGVyIG11
Y2ggZWl0aGVyIHdheS4KKworIyMgV2h5IGRvbid0IHdlIHVzZSBzdHJ1Y3RzIGFzIHRlc3QgZml4
dHVyZXM/ICMjCisKK1dlIGxpa2UgdG8gdXNlIHN0cnVjdHMgb25seSB3aGVuIHJlcHJlc2VudGlu
ZyBwYXNzaXZlIGRhdGEuICBUaGlzCitkaXN0aW5jdGlvbiBiZXR3ZWVuIHN0cnVjdHMgYW5kIGNs
YXNzZXMgaXMgZ29vZCBmb3IgZG9jdW1lbnRpbmcgdGhlCitpbnRlbnQgb2YgdGhlIGNvZGUncyBh
dXRob3IuICBTaW5jZSB0ZXN0IGZpeHR1cmVzIGhhdmUgbG9naWMgbGlrZQorYFNldFVwKClgIGFu
ZCBgVGVhckRvd24oKWAsIHRoZXkgYXJlIGJldHRlciBkZWZpbmVkIGFzIGNsYXNzZXMuCisKKyMj
IFdoeSBhcmUgZGVhdGggdGVzdHMgaW1wbGVtZW50ZWQgYXMgYXNzZXJ0aW9ucyBpbnN0ZWFkIG9m
IHVzaW5nIGEgdGVzdCBydW5uZXI/ICMjCisKK091ciBnb2FsIHdhcyB0byBtYWtlIGRlYXRoIHRl
c3RzIGFzIGNvbnZlbmllbnQgZm9yIGEgdXNlciBhcyBDKysKK3Bvc3NpYmx5IGFsbG93cy4gIElu
IHBhcnRpY3VsYXI6CisKKyAgKiBUaGUgcnVubmVyLXN0eWxlIHJlcXVpcmVzIHRvIHNwbGl0IHRo
ZSBpbmZvcm1hdGlvbiBpbnRvIHR3byBwaWVjZXM6IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBkZWF0
aCB0ZXN0IGl0c2VsZiwgYW5kIHRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgcnVubmVyIG9uIGhv
dyB0byBydW4gdGhlIGRlYXRoIHRlc3QgYW5kIHdoYXQgdG8gZXhwZWN0LiAgVGhlIGRlYXRoIHRl
c3Qgd291bGQgYmUgd3JpdHRlbiBpbiBDKyssIHdoaWxlIHRoZSBydW5uZXIgc3BlYyBtYXkgb3Ig
bWF5IG5vdCBiZS4gIEEgdXNlciBuZWVkcyB0byBjYXJlZnVsbHkga2VlcCB0aGUgdHdvIGluIHN5
bmMuIGBBU1NFUlRfREVBVEgoc3RhdGVtZW50LCBleHBlY3RlZF9tZXNzYWdlKWAgc3BlY2lmaWVz
IGFsbCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gaW4gb25lIHBsYWNlLCBpbiBvbmUgbGFuZ3VhZ2Us
IHdpdGhvdXQgYm9pbGVycGxhdGUgY29kZS4gSXQgaXMgdmVyeSBkZWNsYXJhdGl2ZS4KKyAgKiBg
QVNTRVJUX0RFQVRIYCBoYXMgYSBzaW1pbGFyIHN5bnRheCBhbmQgZXJyb3ItcmVwb3J0aW5nIHNl
bWFudGljcyBhcyBvdGhlciBHb29nbGUgVGVzdCBhc3NlcnRpb25zLCBhbmQgdGh1cyBpcyBlYXN5
IHRvIGxlYXJuLgorICAqIGBBU1NFUlRfREVBVEhgIGNhbiBiZSBtaXhlZCB3aXRoIG90aGVyIGFz
c2VydGlvbnMgYW5kIG90aGVyIGxvZ2ljIGF0IHlvdXIgd2lsbC4gIFlvdSBhcmUgbm90IGxpbWl0
ZWQgdG8gb25lIGRlYXRoIHRlc3QgcGVyIHRlc3QgbWV0aG9kLiBGb3IgZXhhbXBsZSwgeW91IGNh
biB3cml0ZSBzb21ldGhpbmcgbGlrZToKK2BgYCBjcHAKKyAgICBpZiAoRm9vQ29uZGl0aW9uKCkp
IHsKKyAgICAgIEFTU0VSVF9ERUFUSChCYXIoKSwgImJsYWgiKTsKKyAgICB9IGVsc2UgeworICAg
ICAgQVNTRVJUX0VRKDUsIEJhcigpKTsKKyAgICB9CitgYGAKK0lmIHlvdSBwcmVmZXIgb25lIGRl
YXRoIHRlc3QgcGVyIHRlc3QgbWV0aG9kLCB5b3UgY2FuIHdyaXRlIHlvdXIgdGVzdHMgaW4gdGhh
dCBzdHlsZSB0b28sIGJ1dCB3ZSBkb24ndCB3YW50IHRvIGltcG9zZSB0aGF0IG9uIHRoZSB1c2Vy
cy4gIFRoZSBmZXdlciBhcnRpZmljaWFsIGxpbWl0YXRpb25zIHRoZSBiZXR0ZXIuCisgICogYEFT
U0VSVF9ERUFUSGAgY2FuIHJlZmVyZW5jZSBsb2NhbCB2YXJpYWJsZXMgaW4gdGhlIGN1cnJlbnQg
ZnVuY3Rpb24sIGFuZCB5b3UgY2FuIGRlY2lkZSBob3cgbWFueSBkZWF0aCB0ZXN0cyB5b3Ugd2Fu
dCBiYXNlZCBvbiBydW4tdGltZSBpbmZvcm1hdGlvbi4gIEZvciBleGFtcGxlLAorYGBgIGNwcAor
ICAgIGNvbnN0IGludCBjb3VudCA9IEdldENvdW50KCk7ICAvLyBPbmx5IGtub3duIGF0IHJ1biB0
aW1lLgorICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGNvdW50OyBpKyspIHsKKyAgICAgIEFTU0VS
VF9ERUFUSCh7CisgICAgICAgIGRvdWJsZSogYnVmZmVyID0gbmV3IGRvdWJsZVtpXTsKKyAgICAg
ICAgLi4uIGluaXRpYWxpemVzIGJ1ZmZlciAuLi4KKyAgICAgICAgRm9vKGJ1ZmZlciwgaSkKKyAg
ICAgIH0sICJibGFoIGJsYWgiKTsKKyAgICB9CitgYGAKK1RoZSBydW5uZXItYmFzZWQgYXBwcm9h
Y2ggdGVuZHMgdG8gYmUgbW9yZSBzdGF0aWMgYW5kIGxlc3MgZmxleGlibGUsIG9yIHJlcXVpcmVz
IG1vcmUgdXNlciBlZmZvcnQgdG8gZ2V0IHRoaXMga2luZCBvZiBmbGV4aWJpbGl0eS4KKworQW5v
dGhlciBpbnRlcmVzdGluZyB0aGluZyBhYm91dCBgQVNTRVJUX0RFQVRIYCBpcyB0aGF0IGl0IGNh
bGxzIGBmb3JrKClgCit0byBjcmVhdGUgYSBjaGlsZCBwcm9jZXNzIHRvIHJ1biB0aGUgZGVhdGgg
dGVzdC4gIFRoaXMgaXMgbGlnaHRlbmluZworZmFzdCwgYXMgYGZvcmsoKWAgdXNlcyBjb3B5LW9u
LXdyaXRlIHBhZ2VzIGFuZCBpbmN1cnMgYWxtb3N0IHplcm8KK292ZXJoZWFkLCBhbmQgdGhlIGNo
aWxkIHByb2Nlc3Mgc3RhcnRzIGZyb20gdGhlIHVzZXItc3VwcGxpZWQKK3N0YXRlbWVudCBkaXJl
Y3RseSwgc2tpcHBpbmcgYWxsIGdsb2JhbCBhbmQgbG9jYWwgaW5pdGlhbGl6YXRpb24gYW5kCith
bnkgY29kZSBsZWFkaW5nIHRvIHRoZSBnaXZlbiBzdGF0ZW1lbnQuICBJZiB5b3UgbGF1bmNoIHRo
ZSBjaGlsZAorcHJvY2VzcyBmcm9tIHNjcmF0Y2gsIGl0IGNhbiB0YWtlIHNlY29uZHMganVzdCB0
byBsb2FkIGV2ZXJ5dGhpbmcgYW5kCitzdGFydCBydW5uaW5nIGlmIHRoZSB0ZXN0IGxpbmtzIHRv
IG1hbnkgbGlicmFyaWVzIGR5bmFtaWNhbGx5LgorCisjIyBNeSBkZWF0aCB0ZXN0IG1vZGlmaWVz
IHNvbWUgc3RhdGUsIGJ1dCB0aGUgY2hhbmdlIHNlZW1zIGxvc3QgYWZ0ZXIgdGhlIGRlYXRoIHRl
c3QgZmluaXNoZXMuIFdoeT8gIyMKKworRGVhdGggdGVzdHMgKGBFWFBFQ1RfREVBVEhgLCBldGMp
IGFyZSBleGVjdXRlZCBpbiBhIHN1Yi1wcm9jZXNzIHMudC4gdGhlCitleHBlY3RlZCBjcmFzaCB3
b24ndCBraWxsIHRoZSB0ZXN0IHByb2dyYW0gKGkuZS4gdGhlIHBhcmVudCBwcm9jZXNzKS4gQXMg
YQorcmVzdWx0LCBhbnkgaW4tbWVtb3J5IHNpZGUgZWZmZWN0cyB0aGV5IGluY3VyIGFyZSBvYnNl
cnZhYmxlIGluIHRoZWlyCityZXNwZWN0aXZlIHN1Yi1wcm9jZXNzZXMsIGJ1dCBub3QgaW4gdGhl
IHBhcmVudCBwcm9jZXNzLiBZb3UgY2FuIHRoaW5rIG9mIHRoZW0KK2FzIHJ1bm5pbmcgaW4gYSBw
YXJhbGxlbCB1bml2ZXJzZSwgbW9yZSBvciBsZXNzLgorCisjIyBUaGUgY29tcGlsZXIgY29tcGxh
aW5zIGFib3V0ICJ1bmRlZmluZWQgcmVmZXJlbmNlcyIgdG8gc29tZSBzdGF0aWMgY29uc3QgbWVt
YmVyIHZhcmlhYmxlcywgYnV0IEkgZGlkIGRlZmluZSB0aGVtIGluIHRoZSBjbGFzcyBib2R5LiBX
aGF0J3Mgd3Jvbmc/ICMjCisKK0lmIHlvdXIgY2xhc3MgaGFzIGEgc3RhdGljIGRhdGEgbWVtYmVy
OgorCitgYGAgY3BwCisvLyBmb28uaAorY2xhc3MgRm9vIHsKKyAgLi4uCisgIHN0YXRpYyBjb25z
dCBpbnQga0JhciA9IDEwMDsKK307CitgYGAKKworWW91IGFsc28gbmVlZCB0byBkZWZpbmUgaXQg
X291dHNpZGVfIG9mIHRoZSBjbGFzcyBib2R5IGluIGBmb28uY2NgOgorCitgYGAgY3BwCitjb25z
dCBpbnQgRm9vOjprQmFyOyAgLy8gTm8gaW5pdGlhbGl6ZXIgaGVyZS4KK2BgYAorCitPdGhlcndp
c2UgeW91ciBjb2RlIGlzICoqaW52YWxpZCBDKysqKiwgYW5kIG1heSBicmVhayBpbiB1bmV4cGVj
dGVkIHdheXMuIEluCitwYXJ0aWN1bGFyLCB1c2luZyBpdCBpbiBHb29nbGUgVGVzdCBjb21wYXJp
c29uIGFzc2VydGlvbnMgKGBFWFBFQ1RfRVFgLCBldGMpCit3aWxsIGdlbmVyYXRlIGFuICJ1bmRl
ZmluZWQgcmVmZXJlbmNlIiBsaW5rZXIgZXJyb3IuCisKKyMjIEkgaGF2ZSBhbiBpbnRlcmZhY2Ug
dGhhdCBoYXMgc2V2ZXJhbCBpbXBsZW1lbnRhdGlvbnMuIENhbiBJIHdyaXRlIGEgc2V0IG9mIHRl
c3RzIG9uY2UgYW5kIHJlcGVhdCB0aGVtIG92ZXIgYWxsIHRoZSBpbXBsZW1lbnRhdGlvbnM/ICMj
CisKK0dvb2dsZSBUZXN0IGRvZXNuJ3QgeWV0IGhhdmUgZ29vZCBzdXBwb3J0IGZvciB0aGlzIGtp
bmQgb2YgdGVzdHMsIG9yCitkYXRhLWRyaXZlbiB0ZXN0cyBpbiBnZW5lcmFsLiBXZSBob3BlIHRv
IGJlIGFibGUgdG8gbWFrZSBpbXByb3ZlbWVudHMgaW4gdGhpcworYXJlYSBzb29uLgorCisjIyBD
YW4gSSBkZXJpdmUgYSB0ZXN0IGZpeHR1cmUgZnJvbSBhbm90aGVyPyAjIworCitZZXMuCisKK0Vh
Y2ggdGVzdCBmaXh0dXJlIGhhcyBhIGNvcnJlc3BvbmRpbmcgYW5kIHNhbWUgbmFtZWQgdGVzdCBj
YXNlLiBUaGlzIG1lYW5zIG9ubHkKK29uZSB0ZXN0IGNhc2UgY2FuIHVzZSBhIHBhcnRpY3VsYXIg
Zml4dHVyZS4gU29tZXRpbWVzLCBob3dldmVyLCBtdWx0aXBsZSB0ZXN0CitjYXNlcyBtYXkgd2Fu
dCB0byB1c2UgdGhlIHNhbWUgb3Igc2xpZ2h0bHkgZGlmZmVyZW50IGZpeHR1cmVzLiBGb3IgZXhh
bXBsZSwgeW91CittYXkgd2FudCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb2YgYSBHVUkgbGlicmFy
eSdzIHRlc3QgY2FzZXMgZG9uJ3QgbGVhaworaW1wb3J0YW50IHN5c3RlbSByZXNvdXJjZXMgbGlr
ZSBmb250cyBhbmQgYnJ1c2hlcy4KKworSW4gR29vZ2xlIFRlc3QsIHlvdSBzaGFyZSBhIGZpeHR1
cmUgYW1vbmcgdGVzdCBjYXNlcyBieSBwdXR0aW5nIHRoZSBzaGFyZWQKK2xvZ2ljIGluIGEgYmFz
ZSB0ZXN0IGZpeHR1cmUsIHRoZW4gZGVyaXZpbmcgZnJvbSB0aGF0IGJhc2UgYSBzZXBhcmF0ZSBm
aXh0dXJlCitmb3IgZWFjaCB0ZXN0IGNhc2UgdGhhdCB3YW50cyB0byB1c2UgdGhpcyBjb21tb24g
bG9naWMuIFlvdSB0aGVuIHVzZSBgVEVTVF9GKClgCit0byB3cml0ZSB0ZXN0cyB1c2luZyBlYWNo
IGRlcml2ZWQgZml4dHVyZS4KKworVHlwaWNhbGx5LCB5b3VyIGNvZGUgbG9va3MgbGlrZSB0aGlz
OgorCitgYGAgY3BwCisvLyBEZWZpbmVzIGEgYmFzZSB0ZXN0IGZpeHR1cmUuCitjbGFzcyBCYXNl
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICBwcm90ZWN0ZWQ6CisgICAuLi4KK307
CisKKy8vIERlcml2ZXMgYSBmaXh0dXJlIEZvb1Rlc3QgZnJvbSBCYXNlVGVzdC4KK2NsYXNzIEZv
b1Rlc3QgOiBwdWJsaWMgQmFzZVRlc3QgeworICBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lk
IFNldFVwKCkgeworICAgICAgQmFzZVRlc3Q6OlNldFVwKCk7ICAvLyBTZXRzIHVwIHRoZSBiYXNl
IGZpeHR1cmUgZmlyc3QuCisgICAgICAuLi4gYWRkaXRpb25hbCBzZXQtdXAgd29yayAuLi4KKyAg
ICB9CisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgICAgLi4uIGNsZWFuLXVwIHdv
cmsgZm9yIEZvb1Rlc3QgLi4uCisgICAgICBCYXNlVGVzdDo6VGVhckRvd24oKTsgIC8vIFJlbWVt
YmVyIHRvIHRlYXIgZG93biB0aGUgYmFzZSBmaXh0dXJlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGFmdGVyIGNsZWFuaW5nIHVwIEZvb1Rlc3QhCisgICAgfQorICAgIC4uLiBmdW5j
dGlvbnMgYW5kIHZhcmlhYmxlcyBmb3IgRm9vVGVzdCAuLi4KK307CisKKy8vIFRlc3RzIHRoYXQg
dXNlIHRoZSBmaXh0dXJlIEZvb1Rlc3QuCitURVNUX0YoRm9vVGVzdCwgQmFyKSB7IC4uLiB9CitU
RVNUX0YoRm9vVGVzdCwgQmF6KSB7IC4uLiB9CisKKy4uLiBhZGRpdGlvbmFsIGZpeHR1cmVzIGRl
cml2ZWQgZnJvbSBCYXNlVGVzdCAuLi4KK2BgYAorCitJZiBuZWNlc3NhcnksIHlvdSBjYW4gY29u
dGludWUgdG8gZGVyaXZlIHRlc3QgZml4dHVyZXMgZnJvbSBhIGRlcml2ZWQgZml4dHVyZS4KK0dv
b2dsZSBUZXN0IGhhcyBubyBsaW1pdCBvbiBob3cgZGVlcCB0aGUgaGllcmFyY2h5IGNhbiBiZS4K
KworRm9yIGEgY29tcGxldGUgZXhhbXBsZSB1c2luZyBkZXJpdmVkIHRlc3QgZml4dHVyZXMsIHNl
ZQorW3NhbXBsZTVdKC4uL3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYykuCisKKyMjIE15IGNv
bXBpbGVyIGNvbXBsYWlucyAidm9pZCB2YWx1ZSBub3QgaWdub3JlZCBhcyBpdCBvdWdodCB0byBi
ZS4iIFdoYXQgZG9lcyB0aGlzIG1lYW4/ICMjCisKK1lvdSdyZSBwcm9iYWJseSB1c2luZyBhbiBg
QVNTRVJUXyooKWAgaW4gYSBmdW5jdGlvbiB0aGF0IGRvZXNuJ3QgcmV0dXJuIGB2b2lkYC4KK2BB
U1NFUlRfKigpYCBjYW4gb25seSBiZSB1c2VkIGluIGB2b2lkYCBmdW5jdGlvbnMuCisKKyMjIE15
IGRlYXRoIHRlc3QgaGFuZ3MgKG9yIHNlZy1mYXVsdHMpLiBIb3cgZG8gSSBmaXggaXQ/ICMjCisK
K0luIEdvb2dsZSBUZXN0LCBkZWF0aCB0ZXN0cyBhcmUgcnVuIGluIGEgY2hpbGQgcHJvY2VzcyBh
bmQgdGhlIHdheSB0aGV5IHdvcmsgaXMKK2RlbGljYXRlLiBUbyB3cml0ZSBkZWF0aCB0ZXN0cyB5
b3UgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhleSB3b3JrLgorUGxlYXNlIG1ha2Ug
c3VyZSB5b3UgaGF2ZSByZWFkIHRoaXMuCisKK0luIHBhcnRpY3VsYXIsIGRlYXRoIHRlc3RzIGRv
bid0IGxpa2UgaGF2aW5nIG11bHRpcGxlIHRocmVhZHMgaW4gdGhlIHBhcmVudAorcHJvY2Vzcy4g
U28gdGhlIGZpcnN0IHRoaW5nIHlvdSBjYW4gdHJ5IGlzIHRvIGVsaW1pbmF0ZSBjcmVhdGluZyB0
aHJlYWRzCitvdXRzaWRlIG9mIGBFWFBFQ1RfREVBVEgoKWAuCisKK1NvbWV0aW1lcyB0aGlzIGlz
IGltcG9zc2libGUgYXMgc29tZSBsaWJyYXJ5IHlvdSBtdXN0IHVzZSBtYXkgYmUgY3JlYXRpbmcK
K3RocmVhZHMgYmVmb3JlIGBtYWluKClgIGlzIGV2ZW4gcmVhY2hlZC4gSW4gdGhpcyBjYXNlLCB5
b3UgY2FuIHRyeSB0byBtaW5pbWl6ZQordGhlIGNoYW5jZSBvZiBjb25mbGljdHMgYnkgZWl0aGVy
IG1vdmluZyBhcyBtYW55IGFjdGl2aXRpZXMgYXMgcG9zc2libGUgaW5zaWRlCitgRVhQRUNUX0RF
QVRIKClgIChpbiB0aGUgZXh0cmVtZSBjYXNlLCB5b3Ugd2FudCB0byBtb3ZlIGV2ZXJ5dGhpbmcg
aW5zaWRlKSwgb3IKK2xlYXZpbmcgYXMgZmV3IHRoaW5ncyBhcyBwb3NzaWJsZSBpbiBpdC4gQWxz
bywgeW91IGNhbiB0cnkgdG8gc2V0IHRoZSBkZWF0aAordGVzdCBzdHlsZSB0byBgInRocmVhZHNh
ZmUiYCwgd2hpY2ggaXMgc2FmZXIgYnV0IHNsb3dlciwgYW5kIHNlZSBpZiBpdCBoZWxwcy4KKwor
SWYgeW91IGdvIHdpdGggdGhyZWFkLXNhZmUgZGVhdGggdGVzdHMsIHJlbWVtYmVyIHRoYXQgdGhl
eSByZXJ1biB0aGUgdGVzdAorcHJvZ3JhbSBmcm9tIHRoZSBiZWdpbm5pbmcgaW4gdGhlIGNoaWxk
IHByb2Nlc3MuIFRoZXJlZm9yZSBtYWtlIHN1cmUgeW91cgorcHJvZ3JhbSBjYW4gcnVuIHNpZGUt
Ynktc2lkZSB3aXRoIGl0c2VsZiBhbmQgaXMgZGV0ZXJtaW5pc3RpYy4KKworSW4gdGhlIGVuZCwg
dGhpcyBib2lscyBkb3duIHRvIGdvb2QgY29uY3VycmVudCBwcm9ncmFtbWluZy4gWW91IGhhdmUg
dG8gbWFrZQorc3VyZSB0aGF0IHRoZXJlIGlzIG5vIHJhY2UgY29uZGl0aW9ucyBvciBkZWFkIGxv
Y2tzIGluIHlvdXIgcHJvZ3JhbS4gTm8gc2lsdmVyCitidWxsZXQgLSBzb3JyeSEKKworIyMgU2hv
dWxkIEkgdXNlIHRoZSBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIG9mIHRoZSB0ZXN0IGZpeHR1cmUg
b3IgdGhlIHNldC11cC90ZWFyLWRvd24gZnVuY3Rpb24/ICMjCisKK1RoZSBmaXJzdCB0aGluZyB0
byByZW1lbWJlciBpcyB0aGF0IEdvb2dsZSBUZXN0IGRvZXMgbm90IHJldXNlIHRoZQorc2FtZSB0
ZXN0IGZpeHR1cmUgb2JqZWN0IGFjcm9zcyBtdWx0aXBsZSB0ZXN0cy4gRm9yIGVhY2ggYFRFU1Rf
RmAsCitHb29nbGUgVGVzdCB3aWxsIGNyZWF0ZSBhIGZyZXNoIHRlc3QgZml4dHVyZSBvYmplY3Qs
IF9pbW1lZGlhdGVseV8KK2NhbGwgYFNldFVwKClgLCBydW4gdGhlIHRlc3QgYm9keSwgY2FsbCBg
VGVhckRvd24oKWAsIGFuZCB0aGVuCitfaW1tZWRpYXRlbHlfIGRlbGV0ZSB0aGUgdGVzdCBmaXh0
dXJlIG9iamVjdC4KKworV2hlbiB5b3UgbmVlZCB0byB3cml0ZSBwZXItdGVzdCBzZXQtdXAgYW5k
IHRlYXItZG93biBsb2dpYywgeW91IGhhdmUKK3RoZSBjaG9pY2UgYmV0d2VlbiB1c2luZyB0aGUg
dGVzdCBmaXh0dXJlIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3Igb3IKK2BTZXRVcCgpL1RlYXJEb3du
KClgLiBUaGUgZm9ybWVyIGlzIHVzdWFsbHkgcHJlZmVycmVkLCBhcyBpdCBoYXMgdGhlCitmb2xs
b3dpbmcgYmVuZWZpdHM6CisKKyAgKiBCeSBpbml0aWFsaXppbmcgYSBtZW1iZXIgdmFyaWFibGUg
aW4gdGhlIGNvbnN0cnVjdG9yLCB3ZSBoYXZlIHRoZSBvcHRpb24gdG8gbWFrZSBpdCBgY29uc3Rg
LCB3aGljaCBoZWxwcyBwcmV2ZW50IGFjY2lkZW50YWwgY2hhbmdlcyB0byBpdHMgdmFsdWUgYW5k
IG1ha2VzIHRoZSB0ZXN0cyBtb3JlIG9idmlvdXNseSBjb3JyZWN0LgorICAqIEluIGNhc2Ugd2Ug
bmVlZCB0byBzdWJjbGFzcyB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLCB0aGUgc3ViY2xhc3MnIGNv
bnN0cnVjdG9yIGlzIGd1YXJhbnRlZWQgdG8gY2FsbCB0aGUgYmFzZSBjbGFzcycgY29uc3RydWN0
b3IgZmlyc3QsIGFuZCB0aGUgc3ViY2xhc3MnIGRlc3RydWN0b3IgaXMgZ3VhcmFudGVlZCB0byBj
YWxsIHRoZSBiYXNlIGNsYXNzJyBkZXN0cnVjdG9yIGFmdGVyd2FyZC4gV2l0aCBgU2V0VXAoKS9U
ZWFyRG93bigpYCwgYSBzdWJjbGFzcyBtYXkgbWFrZSB0aGUgbWlzdGFrZSBvZiBmb3JnZXR0aW5n
IHRvIGNhbGwgdGhlIGJhc2UgY2xhc3MnIGBTZXRVcCgpL1RlYXJEb3duKClgIG9yIGNhbGwgdGhl
bSBhdCB0aGUgd3JvbmcgbW9tZW50LgorCitZb3UgbWF5IHN0aWxsIHdhbnQgdG8gdXNlIGBTZXRV
cCgpL1RlYXJEb3duKClgIGluIHRoZSBmb2xsb3dpbmcgcmFyZSBjYXNlczoKKyAgKiBJZiB0aGUg
dGVhci1kb3duIG9wZXJhdGlvbiBjb3VsZCB0aHJvdyBhbiBleGNlcHRpb24sIHlvdSBtdXN0IHVz
ZSBgVGVhckRvd24oKWAgYXMgb3Bwb3NlZCB0byB0aGUgZGVzdHJ1Y3RvciwgYXMgdGhyb3dpbmcg
aW4gYSBkZXN0cnVjdG9yIGxlYWRzIHRvIHVuZGVmaW5lZCBiZWhhdmlvciBhbmQgdXN1YWxseSB3
aWxsIGtpbGwgeW91ciBwcm9ncmFtIHJpZ2h0IGF3YXkuIE5vdGUgdGhhdCBtYW55IHN0YW5kYXJk
IGxpYnJhcmllcyAobGlrZSBTVEwpIG1heSB0aHJvdyB3aGVuIGV4Y2VwdGlvbnMgYXJlIGVuYWJs
ZWQgaW4gdGhlIGNvbXBpbGVyLiBUaGVyZWZvcmUgeW91IHNob3VsZCBwcmVmZXIgYFRlYXJEb3du
KClgIGlmIHlvdSB3YW50IHRvIHdyaXRlIHBvcnRhYmxlIHRlc3RzIHRoYXQgd29yayB3aXRoIG9y
IHdpdGhvdXQgZXhjZXB0aW9ucy4KKyAgKiBUaGUgYXNzZXJ0aW9uIG1hY3JvcyB0aHJvdyBhbiBl
eGNlcHRpb24gd2hlbiBmbGFnIGAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmVgIGlzIHNwZWNpZmll
ZC4gVGhlcmVmb3JlLCB5b3Ugc2hvdWxkbid0IHVzZSBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGlu
IGEgZGVzdHJ1Y3RvciBpZiB5b3UgcGxhbiB0byBydW4geW91ciB0ZXN0cyB3aXRoIHRoaXMgZmxh
Zy4KKyAgKiBJbiBhIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IsIHlvdSBjYW5ub3QgbWFrZSBh
IHZpcnR1YWwgZnVuY3Rpb24gY2FsbCBvbiB0aGlzIG9iamVjdC4gKFlvdSBjYW4gY2FsbCBhIG1l
dGhvZCBkZWNsYXJlZCBhcyB2aXJ0dWFsLCBidXQgaXQgd2lsbCBiZSBzdGF0aWNhbGx5IGJvdW5k
LikgVGhlcmVmb3JlLCBpZiB5b3UgbmVlZCB0byBjYWxsIGEgbWV0aG9kIHRoYXQgd2lsbCBiZSBv
dmVycmlkZW4gaW4gYSBkZXJpdmVkIGNsYXNzLCB5b3UgaGF2ZSB0byB1c2UgYFNldFVwKCkvVGVh
ckRvd24oKWAuCisKKyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgIm5vIG1hdGNoaW5nIGZ1bmN0
aW9uIHRvIGNhbGwiIHdoZW4gSSB1c2UgQVNTRVJUXF9QUkVEbi4gSG93IGRvIEkgZml4IGl0PyAj
IworCitJZiB0aGUgcHJlZGljYXRlIGZ1bmN0aW9uIHlvdSB1c2UgaW4gYEFTU0VSVF9QUkVEKmAg
b3IgYEVYUEVDVF9QUkVEKmAgaXMKK292ZXJsb2FkZWQgb3IgYSB0ZW1wbGF0ZSwgdGhlIGNvbXBp
bGVyIHdpbGwgaGF2ZSB0cm91YmxlIGZpZ3VyaW5nIG91dCB3aGljaAorb3ZlcmxvYWRlZCB2ZXJz
aW9uIGl0IHNob3VsZCB1c2UuIGBBU1NFUlRfUFJFRF9GT1JNQVQqYCBhbmQKK2BFWFBFQ1RfUFJF
RF9GT1JNQVQqYCBkb24ndCBoYXZlIHRoaXMgcHJvYmxlbS4KKworSWYgeW91IHNlZSB0aGlzIGVy
cm9yLCB5b3UgbWlnaHQgd2FudCB0byBzd2l0Y2ggdG8KK2AoQVNTRVJUfEVYUEVDVClfUFJFRF9G
T1JNQVQqYCwgd2hpY2ggd2lsbCBhbHNvIGdpdmUgeW91IGEgYmV0dGVyIGZhaWx1cmUKK21lc3Nh
Z2UuIElmLCBob3dldmVyLCB0aGF0IGlzIG5vdCBhbiBvcHRpb24sIHlvdSBjYW4gcmVzb2x2ZSB0
aGUgcHJvYmxlbSBieQorZXhwbGljaXRseSB0ZWxsaW5nIHRoZSBjb21waWxlciB3aGljaCB2ZXJz
aW9uIHRvIHBpY2suCisKK0ZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYXZlCisKK2BgYCBjcHAK
K2Jvb2wgSXNQb3NpdGl2ZShpbnQgbikgeworICByZXR1cm4gbiA+IDA7Cit9Citib29sIElzUG9z
aXRpdmUoZG91YmxlIHgpIHsKKyAgcmV0dXJuIHggPiAwOworfQorYGBgCisKK3lvdSB3aWxsIGdl
dCBhIGNvbXBpbGVyIGVycm9yIGlmIHlvdSB3cml0ZQorCitgYGAgY3BwCitFWFBFQ1RfUFJFRDEo
SXNQb3NpdGl2ZSwgNSk7CitgYGAKKworSG93ZXZlciwgdGhpcyB3aWxsIHdvcms6CisKK2BgYCBj
cHAKK0VYUEVDVF9QUkVEMSgqc3RhdGljX2Nhc3Q8Ym9vbCAoKikoaW50KT4qKElzUG9zaXRpdmUp
LCA1KTsKK2BgYAorCisoVGhlIHN0dWZmIGluc2lkZSB0aGUgYW5nbGVkIGJyYWNrZXRzIGZvciB0
aGUgYHN0YXRpY19jYXN0YCBvcGVyYXRvciBpcyB0aGUKK3R5cGUgb2YgdGhlIGZ1bmN0aW9uIHBv
aW50ZXIgZm9yIHRoZSBgaW50YC12ZXJzaW9uIG9mIGBJc1Bvc2l0aXZlKClgLikKKworQXMgYW5v
dGhlciBleGFtcGxlLCB3aGVuIHlvdSBoYXZlIGEgdGVtcGxhdGUgZnVuY3Rpb24KKworYGBgIGNw
cAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citib29sIElzTmVnYXRpdmUoVCB4KSB7CisgIHJldHVy
biB4IDwgMDsKK30KK2BgYAorCit5b3UgY2FuIHVzZSBpdCBpbiBhIHByZWRpY2F0ZSBhc3NlcnRp
b24gbGlrZSB0aGlzOgorCitgYGAgY3BwCitBU1NFUlRfUFJFRDEoSXNOZWdhdGl2ZSo8aW50Pios
IC01KTsKK2BgYAorCitUaGluZ3MgYXJlIG1vcmUgaW50ZXJlc3RpbmcgaWYgeW91ciB0ZW1wbGF0
ZSBoYXMgbW9yZSB0aGFuIG9uZSBwYXJhbWV0ZXJzLiBUaGUKK2ZvbGxvd2luZyB3b24ndCBjb21w
aWxlOgorCitgYGAgY3BwCitBU1NFUlRfUFJFRDIoKkdyZWF0ZXJUaGFuPGludCwgaW50PiosIDUs
IDApOworYGBgCisKKworYXMgdGhlIEMrKyBwcmUtcHJvY2Vzc29yIHRoaW5rcyB5b3UgYXJlIGdp
dmluZyBgQVNTRVJUX1BSRUQyYCA0IGFyZ3VtZW50cywKK3doaWNoIGlzIG9uZSBtb3JlIHRoYW4g
ZXhwZWN0ZWQuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIHdyYXAgdGhlIHByZWRpY2F0ZQorZnVuY3Rp
b24gaW4gcGFyZW50aGVzZXM6CisKK2BgYCBjcHAKK0FTU0VSVF9QUkVEMigqKEdyZWF0ZXJUaGFu
PGludCwgaW50PikqLCA1LCAwKTsKK2BgYAorCisKKyMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyBh
Ym91dCAiaWdub3JpbmcgcmV0dXJuIHZhbHVlIiB3aGVuIEkgY2FsbCBSVU5cX0FMTFxfVEVTVFMo
KS4gV2h5PyAjIworCitTb21lIHBlb3BsZSBoYWQgYmVlbiBpZ25vcmluZyB0aGUgcmV0dXJuIHZh
bHVlIG9mIGBSVU5fQUxMX1RFU1RTKClgLiBUaGF0IGlzLAoraW5zdGVhZCBvZgorCitgYGAgY3Bw
CityZXR1cm4gUlVOX0FMTF9URVNUUygpOworYGBgCisKK3RoZXkgd3JpdGUKKworYGBgIGNwcAor
UlVOX0FMTF9URVNUUygpOworYGBgCisKK1RoaXMgaXMgd3JvbmcgYW5kIGRhbmdlcm91cy4gQSB0
ZXN0IHJ1bm5lciBuZWVkcyB0byBzZWUgdGhlIHJldHVybiB2YWx1ZSBvZgorYFJVTl9BTExfVEVT
VFMoKWAgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGlmIGEgdGVzdCBoYXMgcGFzc2VkLiBJZiB5b3Vy
IGBtYWluKClgCitmdW5jdGlvbiBpZ25vcmVzIGl0LCB5b3VyIHRlc3Qgd2lsbCBiZSBjb25zaWRl
cmVkIHN1Y2Nlc3NmdWwgZXZlbiBpZiBpdCBoYXMgYQorR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIGZh
aWx1cmUuIFZlcnkgYmFkLgorCitUbyBoZWxwIHRoZSB1c2VycyBhdm9pZCB0aGlzIGRhbmdlcm91
cyBidWcsIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgorYFJVTl9BTExfVEVTVFMoKWAgY2F1c2VzIGdj
YyB0byByYWlzZSB0aGlzIHdhcm5pbmcsIHdoZW4gdGhlIHJldHVybiB2YWx1ZSBpcworaWdub3Jl
ZC4gSWYgeW91IHNlZSB0aGlzIHdhcm5pbmcsIHRoZSBmaXggaXMgc2ltcGxlOiBqdXN0IG1ha2Ug
c3VyZSBpdHMgdmFsdWUKK2lzIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZSBvZiBgbWFpbigpYC4K
KworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5zIHRoYXQgYSBjb25zdHJ1Y3RvciAob3IgZGVzdHJ1
Y3RvcikgY2Fubm90IHJldHVybiBhIHZhbHVlLiBXaGF0J3MgZ29pbmcgb24/ICMjCisKK0R1ZSB0
byBhIHBlY3VsaWFyaXR5IG9mIEMrKywgaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGUgc3ludGF4IGZv
ciBzdHJlYW1pbmcKK21lc3NhZ2VzIHRvIGFuIGBBU1NFUlRfKmAsIGUuZy4KKworYGBgIGNwcAor
QVNTRVJUX0VRKDEsIEZvbygpKSA8PCAiYmxhaCBibGFoIiA8PCBmb287CitgYGAKKword2UgaGFk
IHRvIGdpdmUgdXAgdXNpbmcgYEFTU0VSVCpgIGFuZCBgRkFJTCpgIChidXQgbm90IGBFWFBFQ1Qq
YCBhbmQKK2BBRERfRkFJTFVSRSpgKSBpbiBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzLiBU
aGUgd29ya2Fyb3VuZCBpcyB0byBtb3ZlIHRoZQorY29udGVudCBvZiB5b3VyIGNvbnN0cnVjdG9y
L2Rlc3RydWN0b3IgdG8gYSBwcml2YXRlIHZvaWQgbWVtYmVyIGZ1bmN0aW9uLCBvcgorc3dpdGNo
IHRvIGBFWFBFQ1RfKigpYCBpZiB0aGF0IHdvcmtzLiBUaGlzIHNlY3Rpb24gaW4gdGhlIHVzZXIn
cyBndWlkZSBleHBsYWlucworaXQuCisKKyMjIE15IHNldC11cCBmdW5jdGlvbiBpcyBub3QgY2Fs
bGVkLiBXaHk/ICMjCisKK0MrKyBpcyBjYXNlLXNlbnNpdGl2ZS4gSXQgc2hvdWxkIGJlIHNwZWxs
ZWQgYXMgYFNldFVwKClgLiAgRGlkIHlvdQorc3BlbGwgaXQgYXMgYFNldHVwKClgPworCitTaW1p
bGFybHksIHNvbWV0aW1lcyBwZW9wbGUgc3BlbGwgYFNldFVwVGVzdENhc2UoKWAgYXMgYFNldHVw
VGVzdENhc2UoKWAgYW5kCit3b25kZXIgd2h5IGl0J3MgbmV2ZXIgY2FsbGVkLgorCisjIyBIb3cg
ZG8gSSBqdW1wIHRvIHRoZSBsaW5lIG9mIGEgZmFpbHVyZSBpbiBFbWFjcyBkaXJlY3RseT8gIyMK
KworR29vZ2xlIFRlc3QncyBmYWlsdXJlIG1lc3NhZ2UgZm9ybWF0IGlzIHVuZGVyc3Rvb2QgYnkg
RW1hY3MgYW5kIG1hbnkgb3RoZXIKK0lERXMsIGxpa2UgYWNtZSBhbmQgWENvZGUuIElmIGEgR29v
Z2xlIFRlc3QgbWVzc2FnZSBpcyBpbiBhIGNvbXBpbGF0aW9uIGJ1ZmZlcgoraW4gRW1hY3MsIHRo
ZW4gaXQncyBjbGlja2FibGUuIFlvdSBjYW4gbm93IGhpdCBgZW50ZXJgIG9uIGEgbWVzc2FnZSB0
byBqdW1wIHRvCit0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgb3IgdXNlIGBDLXggYGAg
dG8ganVtcCB0byB0aGUgbmV4dCBmYWlsdXJlLgorCisjIyBJIGhhdmUgc2V2ZXJhbCB0ZXN0IGNh
c2VzIHdoaWNoIHNoYXJlIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBsb2dpYywgZG8gSSBoYXZlIHRv
IGRlZmluZSBhIG5ldyB0ZXN0IGZpeHR1cmUgY2xhc3MgZm9yIGVhY2ggb2YgdGhlbT8gVGhpcyBz
ZWVtcyBwcmV0dHkgdGVkaW91cy4gIyMKKworWW91IGRvbid0IGhhdmUgdG8uIEluc3RlYWQgb2YK
KworYGBgIGNwcAorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCB7fTsKKworVEVTVF9G
KEZvb1Rlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQorCitj
bGFzcyBCYXJUZXN0IDogcHVibGljIEJhc2VUZXN0IHt9OworCitURVNUX0YoQmFyVGVzdCwgQWJj
KSB7IC4uLiB9CitURVNUX0YoQmFyVGVzdCwgRGVmKSB7IC4uLiB9CitgYGAKKworeW91IGNhbiBz
aW1wbHkgYHR5cGVkZWZgIHRoZSB0ZXN0IGZpeHR1cmVzOgorYGBgIGNwcAordHlwZWRlZiBCYXNl
VGVzdCBGb29UZXN0OworCitURVNUX0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0YoRm9v
VGVzdCwgRGVmKSB7IC4uLiB9CisKK3R5cGVkZWYgQmFzZVRlc3QgQmFyVGVzdDsKKworVEVTVF9G
KEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIERlZikgeyAuLi4gfQorYGBg
CisKKyMjIFRoZSBHb29nbGUgVGVzdCBvdXRwdXQgaXMgYnVyaWVkIGluIGEgd2hvbGUgYnVuY2gg
b2YgbG9nIG1lc3NhZ2VzLiBXaGF0IGRvIEkgZG8/ICMjCisKK1RoZSBHb29nbGUgVGVzdCBvdXRw
dXQgaXMgbWVhbnQgdG8gYmUgYSBjb25jaXNlIGFuZCBodW1hbi1mcmllbmRseSByZXBvcnQuIElm
Cit5b3VyIHRlc3QgZ2VuZXJhdGVzIHRleHR1YWwgb3V0cHV0IGl0c2VsZiwgaXQgd2lsbCBtaXgg
d2l0aCB0aGUgR29vZ2xlIFRlc3QKK291dHB1dCwgbWFraW5nIGl0IGhhcmQgdG8gcmVhZC4gSG93
ZXZlciwgdGhlcmUgaXMgYW4gZWFzeSBzb2x1dGlvbiB0byB0aGlzCitwcm9ibGVtLgorCitTaW5j
ZSBtb3N0IGxvZyBtZXNzYWdlcyBnbyB0byBzdGRlcnIsIHdlIGRlY2lkZWQgdG8gbGV0IEdvb2ds
ZSBUZXN0IG91dHB1dCBnbwordG8gc3Rkb3V0LiBUaGlzIHdheSwgeW91IGNhbiBlYXNpbHkgc2Vw
YXJhdGUgdGhlIHR3byB1c2luZyByZWRpcmVjdGlvbi4gRm9yCitleGFtcGxlOgorYGBgCisuL215
X3Rlc3QgPiBnb29nbGV0ZXN0X291dHB1dC50eHQKK2BgYAorCisjIyBXaHkgc2hvdWxkIEkgcHJl
ZmVyIHRlc3QgZml4dHVyZXMgb3ZlciBnbG9iYWwgdmFyaWFibGVzPyAjIworCitUaGVyZSBhcmUg
c2V2ZXJhbCBnb29kIHJlYXNvbnM6CisgIDEuIEl0J3MgbGlrZWx5IHlvdXIgdGVzdCBuZWVkcyB0
byBjaGFuZ2UgdGhlIHN0YXRlcyBvZiBpdHMgZ2xvYmFsIHZhcmlhYmxlcy4gVGhpcyBtYWtlcyBp
dCBkaWZmaWN1bHQgdG8ga2VlcCBzaWRlIGVmZmVjdHMgZnJvbSBlc2NhcGluZyBvbmUgdGVzdCBh
bmQgY29udGFtaW5hdGluZyBvdGhlcnMsIG1ha2luZyBkZWJ1Z2dpbmcgZGlmZmljdWx0LiBCeSB1
c2luZyBmaXh0dXJlcywgZWFjaCB0ZXN0IGhhcyBhIGZyZXNoIHNldCBvZiB2YXJpYWJsZXMgdGhh
dCdzIGRpZmZlcmVudCAoYnV0IHdpdGggdGhlIHNhbWUgbmFtZXMpLiBUaHVzLCB0ZXN0cyBhcmUg
a2VwdCBpbmRlcGVuZGVudCBvZiBlYWNoIG90aGVyLgorICAxLiBHbG9iYWwgdmFyaWFibGVzIHBv
bGx1dGUgdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisgIDEuIFRlc3QgZml4dHVyZXMgY2FuIGJlIHJl
dXNlZCB2aWEgc3ViY2xhc3NpbmcsIHdoaWNoIGNhbm5vdCBiZSBkb25lIGVhc2lseSB3aXRoIGds
b2JhbCB2YXJpYWJsZXMuIFRoaXMgaXMgdXNlZnVsIGlmIG1hbnkgdGVzdCBjYXNlcyBoYXZlIHNv
bWV0aGluZyBpbiBjb21tb24uCisKKyMjIEhvdyBkbyBJIHRlc3QgcHJpdmF0ZSBjbGFzcyBtZW1i
ZXJzIHdpdGhvdXQgd3JpdGluZyBGUklFTkRcX1RFU1QoKXM/ICMjCisKK1lvdSBzaG91bGQgdHJ5
IHRvIHdyaXRlIHRlc3RhYmxlIGNvZGUsIHdoaWNoIG1lYW5zIGNsYXNzZXMgc2hvdWxkIGJlIGVh
c2lseQordGVzdGVkIGZyb20gdGhlaXIgcHVibGljIGludGVyZmFjZS4gT25lIHdheSB0byBhY2hp
ZXZlIHRoaXMgaXMgdGhlIFBpbXBsIGlkaW9tOgoreW91IG1vdmUgYWxsIHByaXZhdGUgbWVtYmVy
cyBvZiBhIGNsYXNzIGludG8gYSBoZWxwZXIgY2xhc3MsIGFuZCBtYWtlIGFsbAorbWVtYmVycyBv
ZiB0aGUgaGVscGVyIGNsYXNzIHB1YmxpYy4KKworWW91IGhhdmUgc2V2ZXJhbCBvdGhlciBvcHRp
b25zIHRoYXQgZG9uJ3QgcmVxdWlyZSB1c2luZyBgRlJJRU5EX1RFU1RgOgorICAqIFdyaXRlIHRo
ZSB0ZXN0cyBhcyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlIGNsYXNzOgorYGBgIGNwcAorY2xhc3Mg
Rm9vIHsKKyAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7CisgIC4uLgorfTsKKworY2xhc3MgRm9vVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLi4uCisgIHZvaWQg
VGVzdDEoKSB7Li4ufSAvLyBUaGlzIGFjY2Vzc2VzIHByaXZhdGUgbWVtYmVycyBvZiBjbGFzcyBG
b28uCisgIHZvaWQgVGVzdDIoKSB7Li4ufSAvLyBTbyBkb2VzIHRoaXMgb25lLgorfTsKKworVEVT
VF9GKEZvb1Rlc3QsIFRlc3QxKSB7CisgIFRlc3QxKCk7Cit9CisKK1RFU1RfRihGb29UZXN0LCBU
ZXN0MikgeworICBUZXN0MigpOworfQorYGBgCisgICogSW4gdGhlIGZpeHR1cmUgY2xhc3MsIHdy
aXRlIGFjY2Vzc29ycyBmb3IgdGhlIHRlc3RlZCBjbGFzcycgcHJpdmF0ZSBtZW1iZXJzLCB0aGVu
IHVzZSB0aGUgYWNjZXNzb3JzIGluIHlvdXIgdGVzdHM6CitgYGAgY3BwCitjbGFzcyBGb28gewor
ICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKKyAgLi4uCit9OworCitjbGFzcyBGb29UZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAuLi4KKyAgVDEgZ2V0X3ByaXZh
dGVfbWVtYmVyMShGb28qIG9iaikgeworICAgIHJldHVybiBvYmotPnByaXZhdGVfbWVtYmVyMV87
CisgIH0KK307CisKK1RFU1RfRihGb29UZXN0LCBUZXN0MSkgeworICAuLi4KKyAgZ2V0X3ByaXZh
dGVfbWVtYmVyMSh4KQorICAuLi4KK30KK2BgYAorICAqIElmIHRoZSBtZXRob2RzIGFyZSBkZWNs
YXJlZCAqKnByb3RlY3RlZCoqLCB5b3UgY2FuIGNoYW5nZSB0aGVpciBhY2Nlc3MgbGV2ZWwgaW4g
YSB0ZXN0LW9ubHkgc3ViY2xhc3M6CitgYGAgY3BwCitjbGFzcyBZb3VyQ2xhc3MgeworICAuLi4K
KyBwcm90ZWN0ZWQ6IC8vIHByb3RlY3RlZCBhY2Nlc3MgZm9yIHRlc3RhYmlsaXR5LgorICBpbnQg
RG9Tb21ldGhpbmdSZXR1cm5pbmdJbnQoKTsKKyAgLi4uCit9OworCisvLyBpbiB0aGUgeW91cl9j
bGFzc190ZXN0LmNjIGZpbGU6CitjbGFzcyBUZXN0YWJsZVlvdXJDbGFzcyA6IHB1YmxpYyBZb3Vy
Q2xhc3MgeworICAuLi4KKyBwdWJsaWM6IHVzaW5nIFlvdXJDbGFzczo6RG9Tb21ldGhpbmdSZXR1
cm5pbmdJbnQ7IC8vIGNoYW5nZXMgYWNjZXNzIHJpZ2h0cworICAuLi4KK307CisKK1RFU1RfRihZ
b3VyQ2xhc3NUZXN0LCBEb1NvbWV0aGluZ1Rlc3QpIHsKKyAgVGVzdGFibGVZb3VyQ2xhc3Mgb2Jq
OworICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWRfdmFsdWUsIG9iai5Eb1NvbWV0aGluZ1JldHVybmlu
Z0ludCgpKTsKK30KK2BgYAorCisjIyBIb3cgZG8gSSB0ZXN0IHByaXZhdGUgY2xhc3Mgc3RhdGlj
IG1lbWJlcnMgd2l0aG91dCB3cml0aW5nIEZSSUVORFxfVEVTVCgpcz8gIyMKKworV2UgZmluZCBw
cml2YXRlIHN0YXRpYyBtZXRob2RzIGNsdXR0ZXIgdGhlIGhlYWRlciBmaWxlLiAgVGhleSBhcmUK
K2ltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIGlkZWFsbHkgc2hvdWxkIGJlIGtlcHQgb3V0IG9m
IGEgLmguIFNvIG9mdGVuIEkgbWFrZQordGhlbSBmcmVlIGZ1bmN0aW9ucyBpbnN0ZWFkLgorCitJ
bnN0ZWFkIG9mOgorYGBgIGNwcAorLy8gZm9vLmgKK2NsYXNzIEZvbyB7CisgIC4uLgorIHByaXZh
dGU6CisgIHN0YXRpYyBib29sIEZ1bmMoaW50IG4pOworfTsKKworLy8gZm9vLmNjCitib29sIEZv
bzo6RnVuYyhpbnQgbikgeyAuLi4gfQorCisvLyBmb29fdGVzdC5jYworRVhQRUNUX1RSVUUoRm9v
OjpGdW5jKDEyMzQ1KSk7CitgYGAKKworWW91IHByb2JhYmx5IHNob3VsZCBiZXR0ZXIgd3JpdGU6
CitgYGAgY3BwCisvLyBmb28uaAorY2xhc3MgRm9vIHsKKyAgLi4uCit9OworCisvLyBmb28uY2MK
K25hbWVzcGFjZSBpbnRlcm5hbCB7CisgIGJvb2wgRnVuYyhpbnQgbikgeyAuLi4gfQorfQorCisv
LyBmb29fdGVzdC5jYworbmFtZXNwYWNlIGludGVybmFsIHsKKyAgYm9vbCBGdW5jKGludCBuKTsK
K30KKworRVhQRUNUX1RSVUUoaW50ZXJuYWw6OkZ1bmMoMTIzNDUpKTsKK2BgYAorCisjIyBJIHdv
dWxkIGxpa2UgdG8gcnVuIGEgdGVzdCBzZXZlcmFsIHRpbWVzIHdpdGggZGlmZmVyZW50IHBhcmFt
ZXRlcnMuIERvIEkgbmVlZCB0byB3cml0ZSBzZXZlcmFsIHNpbWlsYXIgY29waWVzIG9mIGl0PyAj
IworCitOby4gWW91IGNhbiB1c2UgYSBmZWF0dXJlIGNhbGxlZCBbdmFsdWUtcGFyYW1ldGVyaXpl
ZCB0ZXN0c10oQWR2YW5jZWRHdWlkZS5tZCNWYWx1ZV9QYXJhbWV0ZXJpemVkX1Rlc3RzKSB3aGlj
aAorbGV0cyB5b3UgcmVwZWF0IHlvdXIgdGVzdHMgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVycywg
d2l0aG91dCBkZWZpbmluZyBpdCBtb3JlIHRoYW4gb25jZS4KKworIyMgSG93IGRvIEkgdGVzdCBh
IGZpbGUgdGhhdCBkZWZpbmVzIG1haW4oKT8gIyMKKworVG8gdGVzdCBhIGBmb28uY2NgIGZpbGUs
IHlvdSBuZWVkIHRvIGNvbXBpbGUgYW5kIGxpbmsgaXQgaW50byB5b3VyIHVuaXQgdGVzdAorcHJv
Z3JhbS4gSG93ZXZlciwgd2hlbiB0aGUgZmlsZSBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIHRo
ZSBgbWFpbigpYAorZnVuY3Rpb24sIGl0IHdpbGwgY2xhc2ggd2l0aCB0aGUgYG1haW4oKWAgb2Yg
eW91ciB1bml0IHRlc3QsIGFuZCB3aWxsIHJlc3VsdCBpbgorYSBidWlsZCBlcnJvci4KKworVGhl
IHJpZ2h0IHNvbHV0aW9uIGlzIHRvIHNwbGl0IGl0IGludG8gdGhyZWUgZmlsZXM6CisgIDEuIGBm
b28uaGAgd2hpY2ggY29udGFpbnMgdGhlIGRlY2xhcmF0aW9ucywKKyAgMS4gYGZvby5jY2Agd2hp
Y2ggY29udGFpbnMgdGhlIGRlZmluaXRpb25zIGV4Y2VwdCBgbWFpbigpYCwgYW5kCisgIDEuIGBm
b29fbWFpbi5jY2Agd2hpY2ggY29udGFpbnMgbm90aGluZyBidXQgdGhlIGRlZmluaXRpb24gb2Yg
YG1haW4oKWAuCisKK1RoZW4gYGZvby5jY2AgY2FuIGJlIGVhc2lseSB0ZXN0ZWQuCisKK0lmIHlv
dSBhcmUgYWRkaW5nIHRlc3RzIHRvIGFuIGV4aXN0aW5nIGZpbGUgYW5kIGRvbid0IHdhbnQgYW4g
aW50cnVzaXZlIGNoYW5nZQorbGlrZSB0aGlzLCB0aGVyZSBpcyBhIGhhY2s6IGp1c3QgaW5jbHVk
ZSB0aGUgZW50aXJlIGBmb28uY2NgIGZpbGUgaW4geW91ciB1bml0Cit0ZXN0LiBGb3IgZXhhbXBs
ZToKK2BgYCBjcHAKKy8vIEZpbGUgZm9vX3VuaXR0ZXN0LmNjCisKKy8vIFRoZSBoZWFkZXJzIHNl
Y3Rpb24KKy4uLgorCisvLyBSZW5hbWVzIG1haW4oKSBpbiBmb28uY2MgdG8gbWFrZSByb29tIGZv
ciB0aGUgdW5pdCB0ZXN0IG1haW4oKQorI2RlZmluZSBtYWluIEZvb01haW4KKworI2luY2x1ZGUg
ImEvYi9mb28uY2MiCisKKy8vIFRoZSB0ZXN0cyBzdGFydCBoZXJlLgorLi4uCitgYGAKKworCitI
b3dldmVyLCBwbGVhc2UgcmVtZW1iZXIgdGhpcyBpcyBhIGhhY2sgYW5kIHNob3VsZCBvbmx5IGJl
IHVzZWQgYXMgdGhlIGxhc3QKK3Jlc29ydC4KKworIyMgV2hhdCBjYW4gdGhlIHN0YXRlbWVudCBh
cmd1bWVudCBpbiBBU1NFUlRcX0RFQVRIKCkgYmU/ICMjCisKK2BBU1NFUlRfREVBVEgoX3N0YXRl
bWVudF8sIF9yZWdleF8pYCAob3IgYW55IGRlYXRoIGFzc2VydGlvbiBtYWNybykgY2FuIGJlIHVz
ZWQKK3doZXJldmVyIGBfc3RhdGVtZW50X2AgaXMgdmFsaWQuIFNvIGJhc2ljYWxseSBgX3N0YXRl
bWVudF9gIGNhbiBiZSBhbnkgQysrCitzdGF0ZW1lbnQgdGhhdCBtYWtlcyBzZW5zZSBpbiB0aGUg
Y3VycmVudCBjb250ZXh0LiBJbiBwYXJ0aWN1bGFyLCBpdCBjYW4KK3JlZmVyZW5jZSBnbG9iYWwg
YW5kL29yIGxvY2FsIHZhcmlhYmxlcywgYW5kIGNhbiBiZToKKyAgKiBhIHNpbXBsZSBmdW5jdGlv
biBjYWxsIChvZnRlbiB0aGUgY2FzZSksCisgICogYSBjb21wbGV4IGV4cHJlc3Npb24sIG9yCisg
ICogYSBjb21wb3VuZCBzdGF0ZW1lbnQuCisKK1NvbWUgZXhhbXBsZXMgYXJlIHNob3duIGhlcmU6
CisKK2BgYCBjcHAKKy8vIEEgZGVhdGggdGVzdCBjYW4gYmUgYSBzaW1wbGUgZnVuY3Rpb24gY2Fs
bC4KK1RFU1QoTXlEZWF0aFRlc3QsIEZ1bmN0aW9uQ2FsbCkgeworICBBU1NFUlRfREVBVEgoWHl6
KDUpLCAiWHl6IGZhaWxlZCIpOworfQorCisvLyBPciBhIGNvbXBsZXggZXhwcmVzc2lvbiB0aGF0
IHJlZmVyZW5jZXMgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMuCitURVNUKE15RGVhdGhUZXN0LCBD
b21wbGV4RXhwcmVzc2lvbikgeworICBjb25zdCBib29sIGMgPSBDb25kaXRpb24oKTsKKyAgQVNT
RVJUX0RFQVRIKChjID8gRnVuYzEoMCkgOiBvYmplY3QyLk1ldGhvZCgidGVzdCIpKSwKKyAgICAg
ICAgICAgICAgICIoRnVuYzF8TWV0aG9kKSBmYWlsZWQiKTsKK30KKworLy8gRGVhdGggYXNzZXJ0
aW9ucyBjYW4gYmUgdXNlZCBhbnkgd2hlcmUgaW4gYSBmdW5jdGlvbi4gSW4KKy8vIHBhcnRpY3Vs
YXIsIHRoZXkgY2FuIGJlIGluc2lkZSBhIGxvb3AuCitURVNUKE15RGVhdGhUZXN0LCBJbnNpZGVM
b29wKSB7CisgIC8vIFZlcmlmaWVzIHRoYXQgRm9vKDApLCBGb28oMSksIC4uLiwgYW5kIEZvbyg0
KSBhbGwgZGllLgorICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgeworICAgIEVYUEVDVF9E
RUFUSF9NKEZvbyhpKSwgIkZvbyBoYXMgXFxkKyBlcnJvcnMiLAorICAgICAgICAgICAgICAgICAg
IDo6dGVzdGluZzo6TWVzc2FnZSgpIDw8ICJ3aGVyZSBpIGlzICIgPDwgaSk7CisgIH0KK30KKwor
Ly8gQSBkZWF0aCBhc3NlcnRpb24gY2FuIGNvbnRhaW4gYSBjb21wb3VuZCBzdGF0ZW1lbnQuCitU
RVNUKE15RGVhdGhUZXN0LCBDb21wb3VuZFN0YXRlbWVudCkgeworICAvLyBWZXJpZmllcyB0aGF0
IGF0IGxlYXNlIG9uZSBvZiBCYXIoMCksIEJhcigxKSwgLi4uLCBhbmQKKyAgLy8gQmFyKDQpIGRp
ZXMuCisgIEFTU0VSVF9ERUFUSCh7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsK
KyAgICAgIEJhcihpKTsKKyAgICB9CisgIH0sCisgICJCYXIgaGFzIFxcZCsgZXJyb3JzIik7fQor
YGBgCisKK2Bnb29nbGV0ZXN0X3VuaXR0ZXN0LmNjYCBjb250YWlucyBtb3JlIGV4YW1wbGVzIGlm
IHlvdSBhcmUgaW50ZXJlc3RlZC4KKworIyMgV2hhdCBzeW50YXggZG9lcyB0aGUgcmVndWxhciBl
eHByZXNzaW9uIGluIEFTU0VSVFxfREVBVEggdXNlPyAjIworCitPbiBQT1NJWCBzeXN0ZW1zLCBH
b29nbGUgVGVzdCB1c2VzIHRoZSBQT1NJWCBFeHRlbmRlZCByZWd1bGFyCitleHByZXNzaW9uIHN5
bnRheAorKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVndWxhcl9leHByZXNzaW9uI1BP
U0lYX0V4dGVuZGVkX1JlZ3VsYXJfRXhwcmVzc2lvbnMpLgorT24gV2luZG93cywgaXQgdXNlcyBh
IGxpbWl0ZWQgdmFyaWFudCBvZiByZWd1bGFyIGV4cHJlc3Npb24KK3N5bnRheC4gRm9yIG1vcmUg
ZGV0YWlscywgc2VlIHRoZQorW3JlZ3VsYXIgZXhwcmVzc2lvbiBzeW50YXhdKEFkdmFuY2VkR3Vp
ZGUubWQjUmVndWxhcl9FeHByZXNzaW9uX1N5bnRheCkuCisKKyMjIEkgaGF2ZSBhIGZpeHR1cmUg
Y2xhc3MgRm9vLCBidXQgVEVTVFxfRihGb28sIEJhcikgZ2l2ZXMgbWUgZXJyb3IgIm5vIG1hdGNo
aW5nIGZ1bmN0aW9uIGZvciBjYWxsIHRvIEZvbzo6Rm9vKCkiLiBXaHk/ICMjCisKK0dvb2dsZSBU
ZXN0IG5lZWRzIHRvIGJlIGFibGUgdG8gY3JlYXRlIG9iamVjdHMgb2YgeW91ciB0ZXN0IGZpeHR1
cmUgY2xhc3MsIHNvCitpdCBtdXN0IGhhdmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLiBOb3JtYWxs
eSB0aGUgY29tcGlsZXIgd2lsbCBkZWZpbmUgb25lIGZvcgoreW91LiBIb3dldmVyLCB0aGVyZSBh
cmUgY2FzZXMgd2hlcmUgeW91IGhhdmUgdG8gZGVmaW5lIHlvdXIgb3duOgorICAqIElmIHlvdSBl
eHBsaWNpdGx5IGRlY2xhcmUgYSBub24tZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgY2xhc3MgYEZv
b2AsIHRoZW4geW91IG5lZWQgdG8gZGVmaW5lIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciwgZXZlbiBp
ZiBpdCB3b3VsZCBiZSBlbXB0eS4KKyAgKiBJZiBgRm9vYCBoYXMgYSBjb25zdCBub24tc3RhdGlj
IGRhdGEgbWVtYmVyLCB0aGVuIHlvdSBoYXZlIHRvIGRlZmluZSB0aGUgZGVmYXVsdCBjb25zdHJ1
Y3RvciBfYW5kXyBpbml0aWFsaXplIHRoZSBjb25zdCBtZW1iZXIgaW4gdGhlIGluaXRpYWxpemVy
IGxpc3Qgb2YgdGhlIGNvbnN0cnVjdG9yLiAoRWFybHkgdmVyc2lvbnMgb2YgYGdjY2AgZG9lc24n
dCBmb3JjZSB5b3UgdG8gaW5pdGlhbGl6ZSB0aGUgY29uc3QgbWVtYmVyLiBJdCdzIGEgYnVnIHRo
YXQgaGFzIGJlZW4gZml4ZWQgaW4gYGdjYyA0YC4pCisKKyMjIFdoeSBkb2VzIEFTU0VSVFxfREVB
VEggY29tcGxhaW4gYWJvdXQgcHJldmlvdXMgdGhyZWFkcyB0aGF0IHdlcmUgYWxyZWFkeSBqb2lu
ZWQ/ICMjCisKK1dpdGggdGhlIExpbnV4IHB0aHJlYWQgbGlicmFyeSwgdGhlcmUgaXMgbm8gdHVy
bmluZyBiYWNrIG9uY2UgeW91IGNyb3NzIHRoZQorbGluZSBmcm9tIHNpbmdsZSB0aHJlYWQgdG8g
bXVsdGlwbGUgdGhyZWFkcy4gVGhlIGZpcnN0IHRpbWUgeW91IGNyZWF0ZSBhCit0aHJlYWQsIGEg
bWFuYWdlciB0aHJlYWQgaXMgY3JlYXRlZCBpbiBhZGRpdGlvbiwgc28geW91IGdldCAzLCBub3Qg
MiwgdGhyZWFkcy4KK0xhdGVyIHdoZW4gdGhlIHRocmVhZCB5b3UgY3JlYXRlIGpvaW5zIHRoZSBt
YWluIHRocmVhZCwgdGhlIHRocmVhZCBjb3VudAorZGVjcmVtZW50cyBieSAxLCBidXQgdGhlIG1h
bmFnZXIgdGhyZWFkIHdpbGwgbmV2ZXIgYmUga2lsbGVkLCBzbyB5b3Ugc3RpbGwgaGF2ZQorMiB0
aHJlYWRzLCB3aGljaCBtZWFucyB5b3UgY2Fubm90IHNhZmVseSBydW4gYSBkZWF0aCB0ZXN0Lgor
CitUaGUgbmV3IE5QVEwgdGhyZWFkIGxpYnJhcnkgZG9lc24ndCBzdWZmZXIgZnJvbSB0aGlzIHBy
b2JsZW0sIGFzIGl0IGRvZXNuJ3QKK2NyZWF0ZSBhIG1hbmFnZXIgdGhyZWFkLiBIb3dldmVyLCBp
ZiB5b3UgZG9uJ3QgY29udHJvbCB3aGljaCBtYWNoaW5lIHlvdXIgdGVzdAorcnVucyBvbiwgeW91
IHNob3VsZG4ndCBkZXBlbmQgb24gdGhpcy4KKworIyMgV2h5IGRvZXMgR29vZ2xlIFRlc3QgcmVx
dWlyZSB0aGUgZW50aXJlIHRlc3QgY2FzZSwgaW5zdGVhZCBvZiBpbmRpdmlkdWFsIHRlc3RzLCB0
byBiZSBuYW1lZCBGT09EZWF0aFRlc3Qgd2hlbiBpdCB1c2VzIEFTU0VSVFxfREVBVEg/ICMjCisK
K0dvb2dsZSBUZXN0IGRvZXMgbm90IGludGVybGVhdmUgdGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVz
dCBjYXNlcy4gVGhhdCBpcywgaXQKK3J1bnMgYWxsIHRlc3RzIGluIG9uZSB0ZXN0IGNhc2UgZmly
c3QsIGFuZCB0aGVuIHJ1bnMgYWxsIHRlc3RzIGluIHRoZSBuZXh0IHRlc3QKK2Nhc2UsIGFuZCBz
byBvbi4gR29vZ2xlIFRlc3QgZG9lcyB0aGlzIGJlY2F1c2UgaXQgbmVlZHMgdG8gc2V0IHVwIGEg
dGVzdCBjYXNlCitiZWZvcmUgdGhlIGZpcnN0IHRlc3QgaW4gaXQgaXMgcnVuLCBhbmQgdGVhciBp
dCBkb3duIGFmdGVyd29yZHMuIFNwbGl0dGluZyB1cAordGhlIHRlc3QgY2FzZSB3b3VsZCByZXF1
aXJlIG11bHRpcGxlIHNldC11cCBhbmQgdGVhci1kb3duIHByb2Nlc3Nlcywgd2hpY2ggaXMKK2lu
ZWZmaWNpZW50IGFuZCBtYWtlcyB0aGUgc2VtYW50aWNzIHVuY2xlYW4uCisKK0lmIHdlIHdlcmUg
dG8gZGV0ZXJtaW5lIHRoZSBvcmRlciBvZiB0ZXN0cyBiYXNlZCBvbiB0ZXN0IG5hbWUgaW5zdGVh
ZCBvZiB0ZXN0CitjYXNlIG5hbWUsIHRoZW4gd2Ugd291bGQgaGF2ZSBhIHByb2JsZW0gd2l0aCB0
aGUgZm9sbG93aW5nIHNpdHVhdGlvbjoKKworYGBgIGNwcAorVEVTVF9GKEZvb1Rlc3QsIEFiY0Rl
YXRoVGVzdCkgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIFV2dykgeyAuLi4gfQorCitURVNUX0Yo
QmFyVGVzdCwgRGVmRGVhdGhUZXN0KSB7IC4uLiB9CitURVNUX0YoQmFyVGVzdCwgWHl6KSB7IC4u
LiB9CitgYGAKKworU2luY2UgYEZvb1Rlc3QuQWJjRGVhdGhUZXN0YCBuZWVkcyB0byBydW4gYmVm
b3JlIGBCYXJUZXN0Llh5emAsIGFuZCB3ZSBkb24ndAoraW50ZXJsZWF2ZSB0ZXN0cyBmcm9tIGRp
ZmZlcmVudCB0ZXN0IGNhc2VzLCB3ZSBuZWVkIHRvIHJ1biBhbGwgdGVzdHMgaW4gdGhlCitgRm9v
VGVzdGAgY2FzZSBiZWZvcmUgcnVubmluZyBhbnkgdGVzdCBpbiB0aGUgYEJhclRlc3RgIGNhc2Uu
IFRoaXMgY29udHJhZGljdHMKK3dpdGggdGhlIHJlcXVpcmVtZW50IHRvIHJ1biBgQmFyVGVzdC5E
ZWZEZWF0aFRlc3RgIGJlZm9yZSBgRm9vVGVzdC5VdndgLgorCisjIyBCdXQgSSBkb24ndCBsaWtl
IGNhbGxpbmcgbXkgZW50aXJlIHRlc3QgY2FzZSBGT09EZWF0aFRlc3Qgd2hlbiBpdCBjb250YWlu
cyBib3RoIGRlYXRoIHRlc3RzIGFuZCBub24tZGVhdGggdGVzdHMuIFdoYXQgZG8gSSBkbz8gIyMK
KworWW91IGRvbid0IGhhdmUgdG8sIGJ1dCBpZiB5b3UgbGlrZSwgeW91IG1heSBzcGxpdCB1cCB0
aGUgdGVzdCBjYXNlIGludG8KK2BGb29UZXN0YCBhbmQgYEZvb0RlYXRoVGVzdGAsIHdoZXJlIHRo
ZSBuYW1lcyBtYWtlIGl0IGNsZWFyIHRoYXQgdGhleSBhcmUKK3JlbGF0ZWQ6CisKK2BgYCBjcHAK
K2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07CisKK1RFU1Rf
RihGb29UZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0KKwor
dHlwZWRlZiBGb29UZXN0IEZvb0RlYXRoVGVzdDsKKworVEVTVF9GKEZvb0RlYXRoVGVzdCwgVXZ3
KSB7IC4uLiBFWFBFQ1RfREVBVEgoLi4uKSAuLi4gfQorVEVTVF9GKEZvb0RlYXRoVGVzdCwgWHl6
KSB7IC4uLiBBU1NFUlRfREVBVEgoLi4uKSAuLi4gfQorYGBgCisKKyMjIFRoZSBjb21waWxlciBj
b21wbGFpbnMgYWJvdXQgIm5vIG1hdGNoIGZvciAnb3BlcmF0b3I8PCciIHdoZW4gSSB1c2UgYW4g
YXNzZXJ0aW9uLiBXaGF0IGdpdmVzPyAjIworCitJZiB5b3UgdXNlIGEgdXNlci1kZWZpbmVkIHR5
cGUgYEZvb1R5cGVgIGluIGFuIGFzc2VydGlvbiwgeW91IG11c3QgbWFrZSBzdXJlCit0aGVyZSBp
cyBhbiBgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYsIGNvbnN0IEZvb1R5
cGUmKWAgZnVuY3Rpb24KK2RlZmluZWQgc3VjaCB0aGF0IHdlIGNhbiBwcmludCBhIHZhbHVlIG9m
IGBGb29UeXBlYC4KKworSW4gYWRkaXRpb24sIGlmIGBGb29UeXBlYCBpcyBkZWNsYXJlZCBpbiBh
IG5hbWUgc3BhY2UsIHRoZSBgPDxgIG9wZXJhdG9yIGFsc28KK25lZWRzIHRvIGJlIGRlZmluZWQg
aW4gdGhlIF9zYW1lXyBuYW1lIHNwYWNlLgorCisjIyBIb3cgZG8gSSBzdXBwcmVzcyB0aGUgbWVt
b3J5IGxlYWsgbWVzc2FnZXMgb24gV2luZG93cz8gIyMKKworU2luY2UgdGhlIHN0YXRpY2FsbHkg
aW5pdGlhbGl6ZWQgR29vZ2xlIFRlc3Qgc2luZ2xldG9uIHJlcXVpcmVzIGFsbG9jYXRpb25zIG9u
Cit0aGUgaGVhcCwgdGhlIFZpc3VhbCBDKysgbWVtb3J5IGxlYWsgZGV0ZWN0b3Igd2lsbCByZXBv
cnQgbWVtb3J5IGxlYWtzIGF0IHRoZQorZW5kIG9mIHRoZSBwcm9ncmFtIHJ1bi4gVGhlIGVhc2ll
c3Qgd2F5IHRvIGF2b2lkIHRoaXMgaXMgdG8gdXNlIHRoZQorYF9DcnRNZW1DaGVja3BvaW50YCBh
bmQgYF9DcnRNZW1EdW1wQWxsT2JqZWN0c1NpbmNlYCBjYWxscyB0byBub3QgcmVwb3J0IGFueQor
c3RhdGljYWxseSBpbml0aWFsaXplZCBoZWFwIG9iamVjdHMuIFNlZSBNU0ROIGZvciBtb3JlIGRl
dGFpbHMgYW5kIGFkZGl0aW9uYWwKK2hlYXAgY2hlY2svZGVidWcgcm91dGluZXMuCisKKyMjIEkg
YW0gYnVpbGRpbmcgbXkgcHJvamVjdCB3aXRoIEdvb2dsZSBUZXN0IGluIFZpc3VhbCBTdHVkaW8g
YW5kIGFsbCBJJ20gZ2V0dGluZyBpcyBhIGJ1bmNoIG9mIGxpbmtlciBlcnJvcnMgKG9yIHdhcm5p
bmdzKS4gSGVscCEgIyMKKworWW91IG1heSBnZXQgYSBudW1iZXIgb2YgdGhlIGZvbGxvd2luZyBs
aW5rZXIgZXJyb3Igb3Igd2FybmluZ3MgaWYgeW91CithdHRlbXB0IHRvIGxpbmsgeW91ciB0ZXN0
IHByb2plY3Qgd2l0aCB0aGUgR29vZ2xlIFRlc3QgbGlicmFyeSB3aGVuCit5b3VyIHByb2plY3Qg
YW5kIHRoZSBhcmUgbm90IGJ1aWx0IHVzaW5nIHRoZSBzYW1lIGNvbXBpbGVyIHNldHRpbmdzLgor
CisgICogTE5LMjAwNTogc3ltYm9sIGFscmVhZHkgZGVmaW5lZCBpbiBvYmplY3QKKyAgKiBMTks0
MjE3OiBsb2NhbGx5IGRlZmluZWQgc3ltYm9sICdzeW1ib2wnIGltcG9ydGVkIGluIGZ1bmN0aW9u
ICdmdW5jdGlvbicKKyAgKiBMTks0MDQ5OiBsb2NhbGx5IGRlZmluZWQgc3ltYm9sICdzeW1ib2wn
IGltcG9ydGVkCisKK1RoZSBHb29nbGUgVGVzdCBwcm9qZWN0IChndGVzdC52Y3Byb2opIGhhcyB0
aGUgUnVudGltZSBMaWJyYXJ5IG9wdGlvbgorc2V0IHRvIC9NVCAodXNlIG11bHRpLXRocmVhZGVk
IHN0YXRpYyBsaWJyYXJpZXMsIC9NVGQgZm9yIGRlYnVnKS4gSWYKK3lvdXIgcHJvamVjdCB1c2Vz
IHNvbWV0aGluZyBlbHNlLCBmb3IgZXhhbXBsZSAvTUQgKHVzZSBtdWx0aS10aHJlYWRlZAorRExM
cywgL01EZCBmb3IgZGVidWcpLCB5b3UgbmVlZCB0byBjaGFuZ2UgdGhlIHNldHRpbmcgaW4gdGhl
IEdvb2dsZQorVGVzdCBwcm9qZWN0IHRvIG1hdGNoIHlvdXIgcHJvamVjdCdzLgorCitUbyB1cGRh
dGUgdGhpcyBzZXR0aW5nIG9wZW4gdGhlIHByb2plY3QgcHJvcGVydGllcyBpbiB0aGUgVmlzdWFs
CitTdHVkaW8gSURFIHRoZW4gc2VsZWN0IHRoZSBicmFuY2ggQ29uZmlndXJhdGlvbiBQcm9wZXJ0
aWVzIHwgQy9DKysgfAorQ29kZSBHZW5lcmF0aW9uIGFuZCBjaGFuZ2UgdGhlIG9wdGlvbiAiUnVu
dGltZSBMaWJyYXJ5Ii4gIFlvdSBtYXkgYWxzbyB0cnkKK3VzaW5nIGd0ZXN0LW1kLnZjcHJvaiBp
bnN0ZWFkIG9mIGd0ZXN0LnZjcHJvai4KKworIyMgSSBwdXQgbXkgdGVzdHMgaW4gYSBsaWJyYXJ5
IGFuZCBHb29nbGUgVGVzdCBkb2Vzbid0IHJ1biB0aGVtLiBXaGF0J3MgaGFwcGVuaW5nPyAjIwor
SGF2ZSB5b3UgcmVhZCBhCitbd2FybmluZ10oUHJpbWVyLm1kI2ltcG9ydGFudC1ub3RlLWZvci12
aXN1YWwtYy11c2Vycykgb24KK3RoZSBHb29nbGUgVGVzdCBQcmltZXIgcGFnZT8KKworIyMgSSB3
YW50IHRvIHVzZSBHb29nbGUgVGVzdCB3aXRoIFZpc3VhbCBTdHVkaW8gYnV0IGRvbid0IGtub3cg
d2hlcmUgdG8gc3RhcnQuICMjCitNYW55IHBlb3BsZSBhcmUgaW4geW91ciBwb3NpdGlvbiBhbmQg
b25lIG9mIHRoZSBwb3N0ZWQgaGlzIHNvbHV0aW9uIHRvCitvdXIgbWFpbGluZyBsaXN0LgorCisj
IyBJIGFtIHNlZWluZyBjb21waWxlIGVycm9ycyBtZW50aW9uaW5nIHN0ZDo6dHlwZVxfdHJhaXRz
IHdoZW4gSSB0cnkgdG8gdXNlIEdvb2dsZSBUZXN0IG9uIFNvbGFyaXMuICMjCitHb29nbGUgVGVz
dCB1c2VzIHBhcnRzIG9mIHRoZSBzdGFuZGFyZCBDKysgbGlicmFyeSB0aGF0IFN1blN0dWRpbyBk
b2VzIG5vdCBzdXBwb3J0LgorT3VyIHVzZXJzIHJlcG9ydGVkIHN1Y2Nlc3MgdXNpbmcgYWx0ZXJu
YXRpdmUgaW1wbGVtZW50YXRpb25zLiBUcnkgcnVubmluZyB0aGUgYnVpbGQgYWZ0ZXIgcnVuaW5n
IHRoaXMgY29tbWFkOgorCitgZXhwb3J0IENDPWNjIENYWD1DQyBDWFhGTEFHUz0nLWxpYnJhcnk9
c3RscG9ydDQnYAorCisjIyBIb3cgY2FuIG15IGNvZGUgZGV0ZWN0IGlmIGl0IGlzIHJ1bm5pbmcg
aW4gYSB0ZXN0PyAjIworCitJZiB5b3Ugd3JpdGUgY29kZSB0aGF0IHNuaWZmcyB3aGV0aGVyIGl0
J3MgcnVubmluZyBpbiBhIHRlc3QgYW5kIGRvZXMKK2RpZmZlcmVudCB0aGluZ3MgYWNjb3JkaW5n
bHksIHlvdSBhcmUgbGVha2luZyB0ZXN0LW9ubHkgbG9naWMgaW50bworcHJvZHVjdGlvbiBjb2Rl
IGFuZCB0aGVyZSBpcyBubyBlYXN5IHdheSB0byBlbnN1cmUgdGhhdCB0aGUgdGVzdC1vbmx5Citj
b2RlIHBhdGhzIGFyZW4ndCBydW4gYnkgbWlzdGFrZSBpbiBwcm9kdWN0aW9uLiAgU3VjaCBjbGV2
ZXJuZXNzIGFsc28KK2xlYWRzIHRvCitbSGVpc2VuYnVnc10oaHR0cDovL2VuLndpa2lwZWRpYS5v
cmcvd2lraS9VbnVzdWFsX3NvZnR3YXJlX2J1ZyNIZWlzZW5idWcpLgorVGhlcmVmb3JlIHdlIHN0
cm9uZ2x5IGFkdmlzZSBhZ2FpbnN0IHRoZSBwcmFjdGljZSwgYW5kIEdvb2dsZSBUZXN0IGRvZXNu
J3QKK3Byb3ZpZGUgYSB3YXkgdG8gZG8gaXQuCisKK0luIGdlbmVyYWwsIHRoZSByZWNvbW1lbmRl
ZCB3YXkgdG8gY2F1c2UgdGhlIGNvZGUgdG8gYmVoYXZlCitkaWZmZXJlbnRseSB1bmRlciB0ZXN0
IGlzIFtkZXBlbmRlbmN5IGluamVjdGlvbl0oaHR0cDovL2phbWVzc2hvcmUuY29tL0Jsb2cvRGVw
ZW5kZW5jeS1JbmplY3Rpb24tRGVteXN0aWZpZWQuaHRtbCkuCitZb3UgY2FuIGluamVjdCBkaWZm
ZXJlbnQgZnVuY3Rpb25hbGl0eSBmcm9tIHRoZSB0ZXN0IGFuZCBmcm9tIHRoZQorcHJvZHVjdGlv
biBjb2RlLiAgU2luY2UgeW91ciBwcm9kdWN0aW9uIGNvZGUgZG9lc24ndCBsaW5rIGluIHRoZQor
Zm9yLXRlc3QgbG9naWMgYXQgYWxsLCB0aGVyZSBpcyBubyBkYW5nZXIgaW4gYWNjaWRlbnRhbGx5
IHJ1bm5pbmcgaXQuCisKK0hvd2V2ZXIsIGlmIHlvdSBfcmVhbGx5XywgX3JlYWxseV8sIF9yZWFs
bHlfIGhhdmUgbm8gY2hvaWNlLCBhbmQgaWYKK3lvdSBmb2xsb3cgdGhlIHJ1bGUgb2YgZW5kaW5n
IHlvdXIgdGVzdCBwcm9ncmFtIG5hbWVzIHdpdGggYF90ZXN0YCwKK3lvdSBjYW4gdXNlIHRoZSBf
aG9ycmlibGVfIGhhY2sgb2Ygc25pZmZpbmcgeW91ciBleGVjdXRhYmxlIG5hbWUKKyhgYXJndlsw
XWAgaW4gYG1haW4oKWApIHRvIGtub3cgd2hldGhlciB0aGUgY29kZSBpcyB1bmRlciB0ZXN0Lgor
CisjIyBHb29nbGUgVGVzdCBkZWZpbmVzIGEgbWFjcm8gdGhhdCBjbGFzaGVzIHdpdGggb25lIGRl
ZmluZWQgYnkgYW5vdGhlciBsaWJyYXJ5LiBIb3cgZG8gSSBkZWFsIHdpdGggdGhhdD8gIyMKKwor
SW4gQysrLCBtYWNyb3MgZG9uJ3Qgb2JleSBuYW1lc3BhY2VzLiAgVGhlcmVmb3JlIHR3byBsaWJy
YXJpZXMgdGhhdAorYm90aCBkZWZpbmUgYSBtYWNybyBvZiB0aGUgc2FtZSBuYW1lIHdpbGwgY2xh
c2ggaWYgeW91IGAjaW5jbHVkZWAgYm90aAorZGVmaW5pdGlvbnMuICBJbiBjYXNlIGEgR29vZ2xl
IFRlc3QgbWFjcm8gY2xhc2hlcyB3aXRoIGFub3RoZXIKK2xpYnJhcnksIHlvdSBjYW4gZm9yY2Ug
R29vZ2xlIFRlc3QgdG8gcmVuYW1lIGl0cyBtYWNybyB0byBhdm9pZCB0aGUKK2NvbmZsaWN0Lgor
CitTcGVjaWZpY2FsbHksIGlmIGJvdGggR29vZ2xlIFRlc3QgYW5kIHNvbWUgb3RoZXIgY29kZSBk
ZWZpbmUgbWFjcm8KK2BGT09gLCB5b3UgY2FuIGFkZAorYGBgCisgIC1ER1RFU1RfRE9OVF9ERUZJ
TkVfRk9PPTEKK2BgYAordG8gdGhlIGNvbXBpbGVyIGZsYWdzIHRvIHRlbGwgR29vZ2xlIFRlc3Qg
dG8gY2hhbmdlIHRoZSBtYWNybydzIG5hbWUKK2Zyb20gYEZPT2AgdG8gYEdURVNUX0ZPT2AuIEZv
ciBleGFtcGxlLCB3aXRoIGAtREdURVNUX0RPTlRfREVGSU5FX1RFU1Q9MWAsIHlvdSdsbCBuZWVk
IHRvIHdyaXRlCitgYGAgY3BwCisgIEdURVNUX1RFU1QoU29tZVRlc3QsIERvZXNUaGlzKSB7IC4u
LiB9CitgYGAKK2luc3RlYWQgb2YKK2BgYCBjcHAKKyAgVEVTVChTb21lVGVzdCwgRG9lc1RoaXMp
IHsgLi4uIH0KK2BgYAoraW4gb3JkZXIgdG8gZGVmaW5lIGEgdGVzdC4KKworQ3VycmVudGx5LCB0
aGUgZm9sbG93aW5nIGBURVNUYCwgYEZBSUxgLCBgU1VDQ0VFRGAsIGFuZCB0aGUgYmFzaWMgY29t
cGFyaXNvbiBhc3NlcnRpb24gbWFjcm9zIGNhbiBoYXZlIGFsdGVybmF0aXZlIG5hbWVzLiBZb3Ug
Y2FuIHNlZSB0aGUgZnVsbCBsaXN0IG9mIGNvdmVyZWQgbWFjcm9zIFtoZXJlXShodHRwOi8vd3d3
Lmdvb2dsZS5jb20vY29kZXNlYXJjaD9xPWlmKyFHVEVTVF9ET05UX0RFRklORV9cdyUyQitwYWNr
YWdlOmh0dHA6Ly9nb29nbGV0ZXN0XC5nb29nbGVjb2RlXC5jb20rZmlsZTovaW5jbHVkZS9ndGVz
dC9ndGVzdC5oKS4gTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gdGhlICJBdm9pZGlu
ZyBNYWNybyBOYW1lIENsYXNoZXMiIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBmaWxlLgorCisKKyMj
IElzIGl0IE9LIGlmIEkgaGF2ZSB0d28gc2VwYXJhdGUgYFRFU1QoRm9vLCBCYXIpYCB0ZXN0IG1l
dGhvZHMgZGVmaW5lZCBpbiBkaWZmZXJlbnQgbmFtZXNwYWNlcz8gIyMKKworWWVzLgorCitUaGUg
cnVsZSBpcyAqKmFsbCB0ZXN0IG1ldGhvZHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNl
IHRoZSBzYW1lIGZpeHR1cmUgY2xhc3MqKi4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcg
aXMgKiphbGxvd2VkKiogYmVjYXVzZSBib3RoIHRlc3RzIHVzZSB0aGUgc2FtZSBmaXh0dXJlIGNs
YXNzIChgOjp0ZXN0aW5nOjpUZXN0YCkuCisKK2BgYCBjcHAKK25hbWVzcGFjZSBmb28geworVEVT
VChDb29sVGVzdCwgRG9Tb21ldGhpbmcpIHsKKyAgU1VDQ0VFRCgpOworfQorfSAgLy8gbmFtZXNw
YWNlIGZvbworCituYW1lc3BhY2UgYmFyIHsKK1RFU1QoQ29vbFRlc3QsIERvU29tZXRoaW5nKSB7
CisgIFNVQ0NFRUQoKTsKK30KK30gIC8vIG5hbWVzcGFjZSBmb28KK2BgYAorCitIb3dldmVyLCB0
aGUgZm9sbG93aW5nIGNvZGUgaXMgKipub3QgYWxsb3dlZCoqIGFuZCB3aWxsIHByb2R1Y2UgYSBy
dW50aW1lIGVycm9yIGZyb20gR29vZ2xlIFRlc3QgYmVjYXVzZSB0aGUgdGVzdCBtZXRob2RzIGFy
ZSB1c2luZyBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMgd2l0aCB0aGUgc2FtZSB0ZXN0
IGNhc2UgbmFtZS4KKworYGBgIGNwcAorbmFtZXNwYWNlIGZvbyB7CitjbGFzcyBDb29sVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307ICAvLyBGaXh0dXJlIGZvbzo6Q29vbFRlc3QKK1RF
U1RfRihDb29sVGVzdCwgRG9Tb21ldGhpbmcpIHsKKyAgU1VDQ0VFRCgpOworfQorfSAgLy8gbmFt
ZXNwYWNlIGZvbworCituYW1lc3BhY2UgYmFyIHsKK2NsYXNzIENvb2xUZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCB7fTsgIC8vIEZpeHR1cmU6IGJhcjo6Q29vbFRlc3QKK1RFU1RfRihDb29s
VGVzdCwgRG9Tb21ldGhpbmcpIHsKKyAgU1VDQ0VFRCgpOworfQorfSAgLy8gbmFtZXNwYWNlIGZv
bworYGBgCisKKyMjIEhvdyBkbyBJIGJ1aWxkIEdvb2dsZSBUZXN0aW5nIEZyYW1ld29yayB3aXRo
IFhjb2RlIDQ/ICMjCisKK0lmIHlvdSB0cnkgdG8gYnVpbGQgR29vZ2xlIFRlc3QncyBYY29kZSBw
cm9qZWN0IHdpdGggWGNvZGUgNC4wIG9yIGxhdGVyLCB5b3UgbWF5IGVuY291bnRlciBhbiBlcnJv
ciBtZXNzYWdlIHRoYXQgbG9va3MgbGlrZQorIk1pc3NpbmcgU0RLIGluIHRhcmdldCBndGVzdFxf
ZnJhbWV3b3JrOiAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrIi4gVGhhdCBtZWFucyB0
aGF0IFhjb2RlIGRvZXMgbm90IHN1cHBvcnQgdGhlIFNESyB0aGUgcHJvamVjdCBpcyB0YXJnZXRp
bmcuIFNlZSB0aGUgWGNvZGUgc2VjdGlvbiBpbiB0aGUgW1JFQURNRV0oLi4vUkVBRE1FLm1kKSBm
aWxlIG9uIGhvdyB0byByZXNvbHZlIHRoaXMuCisKKyMjIE15IHF1ZXN0aW9uIGlzIG5vdCBjb3Zl
cmVkIGluIHlvdXIgRkFRISAjIworCitJZiB5b3UgY2Fubm90IGZpbmQgdGhlIGFuc3dlciB0byB5
b3VyIHF1ZXN0aW9uIGluIHRoaXMgRkFRLCB0aGVyZSBhcmUKK3NvbWUgb3RoZXIgcmVzb3VyY2Vz
IHlvdSBjYW4gdXNlOgorCisgIDEuIHJlYWQgb3RoZXIgW3dpa2kgcGFnZXNdKC4uL2RvY3MpLAor
ICAxLiBzZWFyY2ggdGhlIG1haWxpbmcgbGlzdCBbYXJjaGl2ZV0oaHR0cHM6Ly9ncm91cHMuZ29v
Z2xlLmNvbS9mb3J1bS8jIWZvcnVtL2dvb2dsZXRlc3RmcmFtZXdvcmspLAorICAxLiBhc2sgaXQg
b24gW2dvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbV0obWFpbHRvOmdvb2dsZXRl
c3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbSkgYW5kIHNvbWVvbmUgd2lsbCBhbnN3ZXIgaXQg
KHRvIHByZXZlbnQgc3BhbSwgd2UgcmVxdWlyZSB5b3UgdG8gam9pbiB0aGUgW2Rpc2N1c3Npb24g
Z3JvdXBdKGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGV0ZXN0ZnJhbWV3b3Jr
KSBiZWZvcmUgeW91IGNhbiBwb3N0LikuCisKK1BsZWFzZSBub3RlIHRoYXQgY3JlYXRpbmcgYW4g
aXNzdWUgaW4gdGhlCitbaXNzdWUgdHJhY2tlcl0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9n
b29nbGV0ZXN0L2lzc3VlcykgaXMgX25vdF8KK2EgZ29vZCB3YXkgdG8gZ2V0IHlvdXIgYW5zd2Vy
LCBhcyBpdCBpcyBtb25pdG9yZWQgaW5mcmVxdWVudGx5IGJ5IGEKK3Zlcnkgc21hbGwgbnVtYmVy
IG9mIHBlb3BsZS4KKworV2hlbiBhc2tpbmcgYSBxdWVzdGlvbiwgaXQncyBoZWxwZnVsIHRvIHBy
b3ZpZGUgYXMgbXVjaCBvZiB0aGUKK2ZvbGxvd2luZyBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSAo
cGVvcGxlIGNhbm5vdCBoZWxwIHlvdSBpZiB0aGVyZSdzCitub3QgZW5vdWdoIGluZm9ybWF0aW9u
IGluIHlvdXIgcXVlc3Rpb24pOgorCisgICogdGhlIHZlcnNpb24gKG9yIHRoZSBjb21taXQgaGFz
aCBpZiB5b3UgY2hlY2sgb3V0IGZyb20gR2l0IGRpcmVjdGx5KSBvZiBHb29nbGUgVGVzdCB5b3Ug
dXNlIChHb29nbGUgVGVzdCBpcyB1bmRlciBhY3RpdmUgZGV2ZWxvcG1lbnQsIHNvIGl0J3MgcG9z
c2libGUgdGhhdCB5b3VyIHByb2JsZW0gaGFzIGJlZW4gc29sdmVkIGluIGEgbGF0ZXIgdmVyc2lv
biksCisgICogeW91ciBvcGVyYXRpbmcgc3lzdGVtLAorICAqIHRoZSBuYW1lIGFuZCB2ZXJzaW9u
IG9mIHlvdXIgY29tcGlsZXIsCisgICogdGhlIGNvbXBsZXRlIGNvbW1hbmQgbGluZSBmbGFncyB5
b3UgZ2l2ZSB0byB5b3VyIGNvbXBpbGVyLAorICAqIHRoZSBjb21wbGV0ZSBjb21waWxlciBlcnJv
ciBtZXNzYWdlcyAoaWYgdGhlIHF1ZXN0aW9uIGlzIGFib3V0IGNvbXBpbGF0aW9uKSwKKyAgKiB0
aGUgX2FjdHVhbF8gY29kZSAoaWRlYWxseSwgYSBtaW5pbWFsIGJ1dCBjb21wbGV0ZSBwcm9ncmFt
KSB0aGF0IGhhcyB0aGUgcHJvYmxlbSB5b3UgZW5jb3VudGVyLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9QcmltZXIubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9kb2NzL1ByaW1lci5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzRjMWQyYWI2MzIxOTMyMDJmNWJmYTc5OWVi
ZDY0MmQwYTMwOGE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
ZG9jcy9QcmltZXIubWQKQEAgLTAsMCArMSw1MDIgQEAKKworCisjIEludHJvZHVjdGlvbjogV2h5
IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcms/ICMKKworX0dvb2dsZSBDKysgVGVzdGluZyBG
cmFtZXdvcmtfIGhlbHBzIHlvdSB3cml0ZSBiZXR0ZXIgQysrIHRlc3RzLgorCitObyBtYXR0ZXIg
d2hldGhlciB5b3Ugd29yayBvbiBMaW51eCwgV2luZG93cywgb3IgYSBNYWMsIGlmIHlvdSB3cml0
ZSBDKysgY29kZSwKK0dvb2dsZSBUZXN0IGNhbiBoZWxwIHlvdS4KKworU28gd2hhdCBtYWtlcyBh
IGdvb2QgdGVzdCwgYW5kIGhvdyBkb2VzIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgZml0
IGluPyBXZSBiZWxpZXZlOgorICAxLiBUZXN0cyBzaG91bGQgYmUgX2luZGVwZW5kZW50XyBhbmQg
X3JlcGVhdGFibGVfLiBJdCdzIGEgcGFpbiB0byBkZWJ1ZyBhIHRlc3QgdGhhdCBzdWNjZWVkcyBv
ciBmYWlscyBhcyBhIHJlc3VsdCBvZiBvdGhlciB0ZXN0cy4gIEdvb2dsZSBDKysgVGVzdGluZyBG
cmFtZXdvcmsgaXNvbGF0ZXMgdGhlIHRlc3RzIGJ5IHJ1bm5pbmcgZWFjaCBvZiB0aGVtIG9uIGEg
ZGlmZmVyZW50IG9iamVjdC4gV2hlbiBhIHRlc3QgZmFpbHMsIEdvb2dsZSBDKysgVGVzdGluZyBG
cmFtZXdvcmsgYWxsb3dzIHlvdSB0byBydW4gaXQgaW4gaXNvbGF0aW9uIGZvciBxdWljayBkZWJ1
Z2dpbmcuCisgIDEuIFRlc3RzIHNob3VsZCBiZSB3ZWxsIF9vcmdhbml6ZWRfIGFuZCByZWZsZWN0
IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3RlZCBjb2RlLiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZy
YW1ld29yayBncm91cHMgcmVsYXRlZCB0ZXN0cyBpbnRvIHRlc3QgY2FzZXMgdGhhdCBjYW4gc2hh
cmUgZGF0YSBhbmQgc3Vicm91dGluZXMuIFRoaXMgY29tbW9uIHBhdHRlcm4gaXMgZWFzeSB0byBy
ZWNvZ25pemUgYW5kIG1ha2VzIHRlc3RzIGVhc3kgdG8gbWFpbnRhaW4uIFN1Y2ggY29uc2lzdGVu
Y3kgaXMgZXNwZWNpYWxseSBoZWxwZnVsIHdoZW4gcGVvcGxlIHN3aXRjaCBwcm9qZWN0cyBhbmQg
c3RhcnQgdG8gd29yayBvbiBhIG5ldyBjb2RlIGJhc2UuCisgIDEuIFRlc3RzIHNob3VsZCBiZSBf
cG9ydGFibGVfIGFuZCBfcmV1c2FibGVfLiBUaGUgb3Blbi1zb3VyY2UgY29tbXVuaXR5IGhhcyBh
IGxvdCBvZiBjb2RlIHRoYXQgaXMgcGxhdGZvcm0tbmV1dHJhbCwgaXRzIHRlc3RzIHNob3VsZCBh
bHNvIGJlIHBsYXRmb3JtLW5ldXRyYWwuICBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIHdv
cmtzIG9uIGRpZmZlcmVudCBPU2VzLCB3aXRoIGRpZmZlcmVudCBjb21waWxlcnMgKGdjYywgTVNW
QywgYW5kIG90aGVycyksIHdpdGggb3Igd2l0aG91dCBleGNlcHRpb25zLCBzbyBHb29nbGUgQysr
IFRlc3RpbmcgRnJhbWV3b3JrIHRlc3RzIGNhbiBlYXNpbHkgd29yayB3aXRoIGEgdmFyaWV0eSBv
ZiBjb25maWd1cmF0aW9ucy4gIChOb3RlIHRoYXQgdGhlIGN1cnJlbnQgcmVsZWFzZSBvbmx5IGNv
bnRhaW5zIGJ1aWxkIHNjcmlwdHMgZm9yIExpbnV4IC0gd2UgYXJlIGFjdGl2ZWx5IHdvcmtpbmcg
b24gc2NyaXB0cyBmb3Igb3RoZXIgcGxhdGZvcm1zLikKKyAgMS4gV2hlbiB0ZXN0cyBmYWlsLCB0
aGV5IHNob3VsZCBwcm92aWRlIGFzIG11Y2ggX2luZm9ybWF0aW9uXyBhYm91dCB0aGUgcHJvYmxl
bSBhcyBwb3NzaWJsZS4gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBkb2Vzbid0IHN0b3Ag
YXQgdGhlIGZpcnN0IHRlc3QgZmFpbHVyZS4gSW5zdGVhZCwgaXQgb25seSBzdG9wcyB0aGUgY3Vy
cmVudCB0ZXN0IGFuZCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dC4gWW91IGNhbiBhbHNvIHNldCB1
cCB0ZXN0cyB0aGF0IHJlcG9ydCBub24tZmF0YWwgZmFpbHVyZXMgYWZ0ZXIgd2hpY2ggdGhlIGN1
cnJlbnQgdGVzdCBjb250aW51ZXMuIFRodXMsIHlvdSBjYW4gZGV0ZWN0IGFuZCBmaXggbXVsdGlw
bGUgYnVncyBpbiBhIHNpbmdsZSBydW4tZWRpdC1jb21waWxlIGN5Y2xlLgorICAxLiBUaGUgdGVz
dGluZyBmcmFtZXdvcmsgc2hvdWxkIGxpYmVyYXRlIHRlc3Qgd3JpdGVycyBmcm9tIGhvdXNla2Vl
cGluZyBjaG9yZXMgYW5kIGxldCB0aGVtIGZvY3VzIG9uIHRoZSB0ZXN0IF9jb250ZW50Xy4gIEdv
b2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgYXV0b21hdGljYWxseSBrZWVwcyB0cmFjayBvZiBh
bGwgdGVzdHMgZGVmaW5lZCwgYW5kIGRvZXNuJ3QgcmVxdWlyZSB0aGUgdXNlciB0byBlbnVtZXJh
dGUgdGhlbSBpbiBvcmRlciB0byBydW4gdGhlbS4KKyAgMS4gVGVzdHMgc2hvdWxkIGJlIF9mYXN0
Xy4gV2l0aCBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrLCB5b3UgY2FuIHJldXNlIHNoYXJl
ZCByZXNvdXJjZXMgYWNyb3NzIHRlc3RzIGFuZCBwYXkgZm9yIHRoZSBzZXQtdXAvdGVhci1kb3du
IG9ubHkgb25jZSwgd2l0aG91dCBtYWtpbmcgdGVzdHMgZGVwZW5kIG9uIGVhY2ggb3RoZXIuCisK
K1NpbmNlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgaXMgYmFzZWQgb24gdGhlIHBvcHVs
YXIgeFVuaXQKK2FyY2hpdGVjdHVyZSwgeW91J2xsIGZlZWwgcmlnaHQgYXQgaG9tZSBpZiB5b3Un
dmUgdXNlZCBKVW5pdCBvciBQeVVuaXQgYmVmb3JlLgorSWYgbm90LCBpdCB3aWxsIHRha2UgeW91
IGFib3V0IDEwIG1pbnV0ZXMgdG8gbGVhcm4gdGhlIGJhc2ljcyBhbmQgZ2V0IHN0YXJ0ZWQuCitT
byBsZXQncyBnbyEKKworX05vdGU6XyBXZSBzb21ldGltZXMgcmVmZXIgdG8gR29vZ2xlIEMrKyBU
ZXN0aW5nIEZyYW1ld29yayBpbmZvcm1hbGx5CithcyBfR29vZ2xlIFRlc3RfLgorCisjIFNldHRp
bmcgdXAgYSBOZXcgVGVzdCBQcm9qZWN0ICMKKworVG8gd3JpdGUgYSB0ZXN0IHByb2dyYW0gdXNp
bmcgR29vZ2xlIFRlc3QsIHlvdSBuZWVkIHRvIGNvbXBpbGUgR29vZ2xlCitUZXN0IGludG8gYSBs
aWJyYXJ5IGFuZCBsaW5rIHlvdXIgdGVzdCB3aXRoIGl0LiAgV2UgcHJvdmlkZSBidWlsZAorZmls
ZXMgZm9yIHNvbWUgcG9wdWxhciBidWlsZCBzeXN0ZW1zOiBgbXN2Yy9gIGZvciBWaXN1YWwgU3R1
ZGlvLAorYHhjb2RlL2AgZm9yIE1hYyBYY29kZSwgYG1ha2UvYCBmb3IgR05VIG1ha2UsIGBjb2Rl
Z2Vhci9gIGZvciBCb3JsYW5kCitDKysgQnVpbGRlciwgYW5kIHRoZSBhdXRvdG9vbHMgc2NyaXB0
IChkZXByZWNhdGVkKSBhbmQKK2BDTWFrZUxpc3RzLnR4dGAgZm9yIENNYWtlIChyZWNvbW1lbmRl
ZCkgaW4gdGhlIEdvb2dsZSBUZXN0IHJvb3QKK2RpcmVjdG9yeS4gIElmIHlvdXIgYnVpbGQgc3lz
dGVtIGlzIG5vdCBvbiB0aGlzIGxpc3QsIHlvdSBjYW4gdGFrZSBhCitsb29rIGF0IGBtYWtlL01h
a2VmaWxlYCB0byBsZWFybiBob3cgR29vZ2xlIFRlc3Qgc2hvdWxkIGJlIGNvbXBpbGVkCisoYmFz
aWNhbGx5IHlvdSB3YW50IHRvIGNvbXBpbGUgYHNyYy9ndGVzdC1hbGwuY2NgIHdpdGggYEdURVNU
X1JPT1RgCithbmQgYEdURVNUX1JPT1QvaW5jbHVkZWAgaW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0
aCwgd2hlcmUgYEdURVNUX1JPT1RgCitpcyB0aGUgR29vZ2xlIFRlc3Qgcm9vdCBkaXJlY3Rvcnkp
LgorCitPbmNlIHlvdSBhcmUgYWJsZSB0byBjb21waWxlIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5
LCB5b3Ugc2hvdWxkCitjcmVhdGUgYSBwcm9qZWN0IG9yIGJ1aWxkIHRhcmdldCBmb3IgeW91ciB0
ZXN0IHByb2dyYW0uICBNYWtlIHN1cmUgeW91CitoYXZlIGBHVEVTVF9ST09UL2luY2x1ZGVgIGlu
IHRoZSBoZWFkZXIgc2VhcmNoIHBhdGggc28gdGhhdCB0aGUKK2NvbXBpbGVyIGNhbiBmaW5kIGAi
Z3Rlc3QvZ3Rlc3QuaCJgIHdoZW4gY29tcGlsaW5nIHlvdXIgdGVzdC4gIFNldCB1cAoreW91ciB0
ZXN0IHByb2plY3QgdG8gbGluayB3aXRoIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5IChmb3IgZXhh
bXBsZSwKK2luIFZpc3VhbCBTdHVkaW8sIHRoaXMgaXMgZG9uZSBieSBhZGRpbmcgYSBkZXBlbmRl
bmN5IG9uCitgZ3Rlc3QudmNwcm9qYCkuCisKK0lmIHlvdSBzdGlsbCBoYXZlIHF1ZXN0aW9ucywg
dGFrZSBhIGxvb2sgYXQgaG93IEdvb2dsZSBUZXN0J3Mgb3duCit0ZXN0cyBhcmUgYnVpbHQgYW5k
IHVzZSB0aGVtIGFzIGV4YW1wbGVzLgorCisjIEJhc2ljIENvbmNlcHRzICMKKworV2hlbiB1c2lu
ZyBHb29nbGUgVGVzdCwgeW91IHN0YXJ0IGJ5IHdyaXRpbmcgX2Fzc2VydGlvbnNfLCB3aGljaCBh
cmUgc3RhdGVtZW50cwordGhhdCBjaGVjayB3aGV0aGVyIGEgY29uZGl0aW9uIGlzIHRydWUuIEFu
IGFzc2VydGlvbidzIHJlc3VsdCBjYW4gYmUgX3N1Y2Nlc3NfLAorX25vbmZhdGFsIGZhaWx1cmVf
LCBvciBfZmF0YWwgZmFpbHVyZV8uIElmIGEgZmF0YWwgZmFpbHVyZSBvY2N1cnMsIGl0IGFib3J0
cwordGhlIGN1cnJlbnQgZnVuY3Rpb247IG90aGVyd2lzZSB0aGUgcHJvZ3JhbSBjb250aW51ZXMg
bm9ybWFsbHkuCisKK19UZXN0c18gdXNlIGFzc2VydGlvbnMgdG8gdmVyaWZ5IHRoZSB0ZXN0ZWQg
Y29kZSdzIGJlaGF2aW9yLiBJZiBhIHRlc3QgY3Jhc2hlcworb3IgaGFzIGEgZmFpbGVkIGFzc2Vy
dGlvbiwgdGhlbiBpdCBfZmFpbHNfOyBvdGhlcndpc2UgaXQgX3N1Y2NlZWRzXy4KKworQSBfdGVz
dCBjYXNlXyBjb250YWlucyBvbmUgb3IgbWFueSB0ZXN0cy4gWW91IHNob3VsZCBncm91cCB5b3Vy
IHRlc3RzIGludG8gdGVzdAorY2FzZXMgdGhhdCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhl
IHRlc3RlZCBjb2RlLiBXaGVuIG11bHRpcGxlIHRlc3RzIGluIGEKK3Rlc3QgY2FzZSBuZWVkIHRv
IHNoYXJlIGNvbW1vbiBvYmplY3RzIGFuZCBzdWJyb3V0aW5lcywgeW91IGNhbiBwdXQgdGhlbSBp
bnRvIGEKK190ZXN0IGZpeHR1cmVfIGNsYXNzLgorCitBIF90ZXN0IHByb2dyYW1fIGNhbiBjb250
YWluIG11bHRpcGxlIHRlc3QgY2FzZXMuCisKK1dlJ2xsIG5vdyBleHBsYWluIGhvdyB0byB3cml0
ZSBhIHRlc3QgcHJvZ3JhbSwgc3RhcnRpbmcgYXQgdGhlIGluZGl2aWR1YWwKK2Fzc2VydGlvbiBs
ZXZlbCBhbmQgYnVpbGRpbmcgdXAgdG8gdGVzdHMgYW5kIHRlc3QgY2FzZXMuCisKKyMgQXNzZXJ0
aW9ucyAjCisKK0dvb2dsZSBUZXN0IGFzc2VydGlvbnMgYXJlIG1hY3JvcyB0aGF0IHJlc2VtYmxl
IGZ1bmN0aW9uIGNhbGxzLiBZb3UgdGVzdCBhCitjbGFzcyBvciBmdW5jdGlvbiBieSBtYWtpbmcg
YXNzZXJ0aW9ucyBhYm91dCBpdHMgYmVoYXZpb3IuIFdoZW4gYW4gYXNzZXJ0aW9uCitmYWlscywg
R29vZ2xlIFRlc3QgcHJpbnRzIHRoZSBhc3NlcnRpb24ncyBzb3VyY2UgZmlsZSBhbmQgbGluZSBu
dW1iZXIgbG9jYXRpb24sCithbG9uZyB3aXRoIGEgZmFpbHVyZSBtZXNzYWdlLiBZb3UgbWF5IGFs
c28gc3VwcGx5IGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZQord2hpY2ggd2lsbCBiZSBhcHBlbmRl
ZCB0byBHb29nbGUgVGVzdCdzIG1lc3NhZ2UuCisKK1RoZSBhc3NlcnRpb25zIGNvbWUgaW4gcGFp
cnMgdGhhdCB0ZXN0IHRoZSBzYW1lIHRoaW5nIGJ1dCBoYXZlIGRpZmZlcmVudAorZWZmZWN0cyBv
biB0aGUgY3VycmVudCBmdW5jdGlvbi4gYEFTU0VSVF8qYCB2ZXJzaW9ucyBnZW5lcmF0ZSBmYXRh
bCBmYWlsdXJlcword2hlbiB0aGV5IGZhaWwsIGFuZCAqKmFib3J0IHRoZSBjdXJyZW50IGZ1bmN0
aW9uKiouIGBFWFBFQ1RfKmAgdmVyc2lvbnMgZ2VuZXJhdGUKK25vbmZhdGFsIGZhaWx1cmVzLCB3
aGljaCBkb24ndCBhYm9ydCB0aGUgY3VycmVudCBmdW5jdGlvbi4gVXN1YWxseSBgRVhQRUNUXypg
CithcmUgcHJlZmVycmVkLCBhcyB0aGV5IGFsbG93IG1vcmUgdGhhbiBvbmUgZmFpbHVyZXMgdG8g
YmUgcmVwb3J0ZWQgaW4gYSB0ZXN0LgorSG93ZXZlciwgeW91IHNob3VsZCB1c2UgYEFTU0VSVF8q
YCBpZiBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gY29udGludWUgd2hlbgordGhlIGFzc2VydGlv
biBpbiBxdWVzdGlvbiBmYWlscy4KKworU2luY2UgYSBmYWlsZWQgYEFTU0VSVF8qYCByZXR1cm5z
IGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gaW1tZWRpYXRlbHksCitwb3NzaWJseSBza2lwcGlu
ZyBjbGVhbi11cCBjb2RlIHRoYXQgY29tZXMgYWZ0ZXIgaXQsIGl0IG1heSBjYXVzZSBhIHNwYWNl
IGxlYWsuCitEZXBlbmRpbmcgb24gdGhlIG5hdHVyZSBvZiB0aGUgbGVhaywgaXQgbWF5IG9yIG1h
eSBub3QgYmUgd29ydGggZml4aW5nIC0gc28KK2tlZXAgdGhpcyBpbiBtaW5kIGlmIHlvdSBnZXQg
YSBoZWFwIGNoZWNrZXIgZXJyb3IgaW4gYWRkaXRpb24gdG8gYXNzZXJ0aW9uCitlcnJvcnMuCisK
K1RvIHByb3ZpZGUgYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlLCBzaW1wbHkgc3RyZWFtIGl0IGlu
dG8gdGhlIG1hY3JvIHVzaW5nIHRoZQorYDw8YCBvcGVyYXRvciwgb3IgYSBzZXF1ZW5jZSBvZiBz
dWNoIG9wZXJhdG9ycy4gQW4gZXhhbXBsZToKK2BgYAorQVNTRVJUX0VRKHguc2l6ZSgpLCB5LnNp
emUoKSkgPDwgIlZlY3RvcnMgeCBhbmQgeSBhcmUgb2YgdW5lcXVhbCBsZW5ndGgiOworCitmb3Ig
KGludCBpID0gMDsgaSA8IHguc2l6ZSgpOyArK2kpIHsKKyAgRVhQRUNUX0VRKHhbaV0sIHlbaV0p
IDw8ICJWZWN0b3JzIHggYW5kIHkgZGlmZmVyIGF0IGluZGV4ICIgPDwgaTsKK30KK2BgYAorCitB
bnl0aGluZyB0aGF0IGNhbiBiZSBzdHJlYW1lZCB0byBhbiBgb3N0cmVhbWAgY2FuIGJlIHN0cmVh
bWVkIHRvIGFuIGFzc2VydGlvbgorbWFjcm8tLWluIHBhcnRpY3VsYXIsIEMgc3RyaW5ncyBhbmQg
YHN0cmluZ2Agb2JqZWN0cy4gSWYgYSB3aWRlIHN0cmluZworKGB3Y2hhcl90KmAsIGBUQ0hBUipg
IGluIGBVTklDT0RFYCBtb2RlIG9uIFdpbmRvd3MsIG9yIGBzdGQ6OndzdHJpbmdgKSBpcworc3Ry
ZWFtZWQgdG8gYW4gYXNzZXJ0aW9uLCBpdCB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gVVRGLTggd2hl
biBwcmludGVkLgorCisjIyBCYXNpYyBBc3NlcnRpb25zICMjCisKK1RoZXNlIGFzc2VydGlvbnMg
ZG8gYmFzaWMgdHJ1ZS9mYWxzZSBjb25kaXRpb24gdGVzdGluZy4KKworfCAqKkZhdGFsIGFzc2Vy
dGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwK
K3wgYEFTU0VSVF9UUlVFKGBfY29uZGl0aW9uX2ApYDsgIHwgYEVYUEVDVF9UUlVFKGBfY29uZGl0
aW9uX2ApYDsgICB8IF9jb25kaXRpb25fIGlzIHRydWUgfAorfCBgQVNTRVJUX0ZBTFNFKGBfY29u
ZGl0aW9uX2ApYDsgfCBgRVhQRUNUX0ZBTFNFKGBfY29uZGl0aW9uX2ApYDsgIHwgX2NvbmRpdGlv
bl8gaXMgZmFsc2UgfAorCitSZW1lbWJlciwgd2hlbiB0aGV5IGZhaWwsIGBBU1NFUlRfKmAgeWll
bGRzIGEgZmF0YWwgZmFpbHVyZSBhbmQKK3JldHVybnMgZnJvbSB0aGUgY3VycmVudCBmdW5jdGlv
biwgd2hpbGUgYEVYUEVDVF8qYCB5aWVsZHMgYSBub25mYXRhbAorZmFpbHVyZSwgYWxsb3dpbmcg
dGhlIGZ1bmN0aW9uIHRvIGNvbnRpbnVlIHJ1bm5pbmcuIEluIGVpdGhlciBjYXNlLCBhbgorYXNz
ZXJ0aW9uIGZhaWx1cmUgbWVhbnMgaXRzIGNvbnRhaW5pbmcgdGVzdCBmYWlscy4KKworX0F2YWls
YWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIEJpbmFyeSBDb21wYXJpc29uICMj
CisKK1RoaXMgc2VjdGlvbiBkZXNjcmliZXMgYXNzZXJ0aW9ucyB0aGF0IGNvbXBhcmUgdHdvIHZh
bHVlcy4KKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8
ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3xgQVNTRVJUX0VRKGBfdmFsMV9gLCBgX3ZhbDJfYCk7
YHxgRVhQRUNUX0VRKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YHwgX3ZhbDFfIGA9PWAgX3ZhbDJfIHwK
K3xgQVNTRVJUX05FKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YHxgRVhQRUNUX05FKGBfdmFsMV9gLCBg
X3ZhbDJfYCk7YHwgX3ZhbDFfIGAhPWAgX3ZhbDJfIHwKK3xgQVNTRVJUX0xUKGBfdmFsMV9gLCBg
X3ZhbDJfYCk7YHxgRVhQRUNUX0xUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YHwgX3ZhbDFfIGA8YCBf
dmFsMl8gfAorfGBBU1NFUlRfTEUoYF92YWwxX2AsIGBfdmFsMl9gKTtgfGBFWFBFQ1RfTEUoYF92
YWwxX2AsIGBfdmFsMl9gKTtgfCBfdmFsMV8gYDw9YCBfdmFsMl8gfAorfGBBU1NFUlRfR1QoYF92
YWwxX2AsIGBfdmFsMl9gKTtgfGBFWFBFQ1RfR1QoYF92YWwxX2AsIGBfdmFsMl9gKTtgfCBfdmFs
MV8gYD5gIF92YWwyXyB8Cit8YEFTU0VSVF9HRShgX3ZhbDFfYCwgYF92YWwyX2ApO2B8YEVYUEVD
VF9HRShgX3ZhbDFfYCwgYF92YWwyX2ApO2B8IF92YWwxXyBgPj1gIF92YWwyXyB8CisKK0luIHRo
ZSBldmVudCBvZiBhIGZhaWx1cmUsIEdvb2dsZSBUZXN0IHByaW50cyBib3RoIF92YWwxXyBhbmQg
X3ZhbDJfLgorCitWYWx1ZSBhcmd1bWVudHMgbXVzdCBiZSBjb21wYXJhYmxlIGJ5IHRoZSBhc3Nl
cnRpb24ncyBjb21wYXJpc29uCitvcGVyYXRvciBvciB5b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJy
b3IuICBXZSB1c2VkIHRvIHJlcXVpcmUgdGhlCithcmd1bWVudHMgdG8gc3VwcG9ydCB0aGUgYDw8
YCBvcGVyYXRvciBmb3Igc3RyZWFtaW5nIHRvIGFuIGBvc3RyZWFtYCwKK2J1dCBpdCdzIG5vIGxv
bmdlciBuZWNlc3Nhcnkgc2luY2UgdjEuNi4wIChpZiBgPDxgIGlzIHN1cHBvcnRlZCwgaXQKK3dp
bGwgYmUgY2FsbGVkIHRvIHByaW50IHRoZSBhcmd1bWVudHMgd2hlbiB0aGUgYXNzZXJ0aW9uIGZh
aWxzOworb3RoZXJ3aXNlIEdvb2dsZSBUZXN0IHdpbGwgYXR0ZW1wdCB0byBwcmludCB0aGVtIGlu
IHRoZSBiZXN0IHdheSBpdAorY2FuLiBGb3IgbW9yZSBkZXRhaWxzIGFuZCBob3cgdG8gY3VzdG9t
aXplIHRoZSBwcmludGluZyBvZiB0aGUKK2FyZ3VtZW50cywgc2VlIHRoaXMgR29vZ2xlIE1vY2sg
W3JlY2lwZV0oLi4vLi4vZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3RlYWNoaW5nLWdvb2ds
ZS1tb2NrLWhvdy10by1wcmludC15b3VyLXZhbHVlcykuKS4KKworVGhlc2UgYXNzZXJ0aW9ucyBj
YW4gd29yayB3aXRoIGEgdXNlci1kZWZpbmVkIHR5cGUsIGJ1dCBvbmx5IGlmIHlvdSBkZWZpbmUg
dGhlCitjb3JyZXNwb25kaW5nIGNvbXBhcmlzb24gb3BlcmF0b3IgKGUuZy4gYD09YCwgYDxgLCBl
dGMpLiAgSWYgdGhlIGNvcnJlc3BvbmRpbmcKK29wZXJhdG9yIGlzIGRlZmluZWQsIHByZWZlciB1
c2luZyB0aGUgYEFTU0VSVF8qKClgIG1hY3JvcyBiZWNhdXNlIHRoZXkgd2lsbAorcHJpbnQgb3V0
IG5vdCBvbmx5IHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24sIGJ1dCB0aGUgdHdvIG9wZXJh
bmRzIGFzIHdlbGwuCisKK0FyZ3VtZW50cyBhcmUgYWx3YXlzIGV2YWx1YXRlZCBleGFjdGx5IG9u
Y2UuIFRoZXJlZm9yZSwgaXQncyBPSyBmb3IgdGhlCithcmd1bWVudHMgdG8gaGF2ZSBzaWRlIGVm
ZmVjdHMuIEhvd2V2ZXIsIGFzIHdpdGggYW55IG9yZGluYXJ5IEMvQysrIGZ1bmN0aW9uLAordGhl
IGFyZ3VtZW50cycgZXZhbHVhdGlvbiBvcmRlciBpcyB1bmRlZmluZWQgKGkuZS4gdGhlIGNvbXBp
bGVyIGlzIGZyZWUgdG8KK2Nob29zZSBhbnkgb3JkZXIpIGFuZCB5b3VyIGNvZGUgc2hvdWxkIG5v
dCBkZXBlbmQgb24gYW55IHBhcnRpY3VsYXIgYXJndW1lbnQKK2V2YWx1YXRpb24gb3JkZXIuCisK
K2BBU1NFUlRfRVEoKWAgZG9lcyBwb2ludGVyIGVxdWFsaXR5IG9uIHBvaW50ZXJzLiBJZiB1c2Vk
IG9uIHR3byBDIHN0cmluZ3MsIGl0Cit0ZXN0cyBpZiB0aGV5IGFyZSBpbiB0aGUgc2FtZSBtZW1v
cnkgbG9jYXRpb24sIG5vdCBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgdmFsdWUuCitUaGVyZWZvcmUs
IGlmIHlvdSB3YW50IHRvIGNvbXBhcmUgQyBzdHJpbmdzIChlLmcuIGBjb25zdCBjaGFyKmApIGJ5
IHZhbHVlLCB1c2UKK2BBU1NFUlRfU1RSRVEoKWAgLCB3aGljaCB3aWxsIGJlIGRlc2NyaWJlZCBs
YXRlciBvbi4gSW4gcGFydGljdWxhciwgdG8gYXNzZXJ0Cit0aGF0IGEgQyBzdHJpbmcgaXMgYE5V
TExgLCB1c2UgYEFTU0VSVF9TVFJFUShOVUxMLCBjX3N0cmluZylgIC4gSG93ZXZlciwgdG8KK2Nv
bXBhcmUgdHdvIGBzdHJpbmdgIG9iamVjdHMsIHlvdSBzaG91bGQgdXNlIGBBU1NFUlRfRVFgLgor
CitNYWNyb3MgaW4gdGhpcyBzZWN0aW9uIHdvcmsgd2l0aCBib3RoIG5hcnJvdyBhbmQgd2lkZSBz
dHJpbmcgb2JqZWN0cyAoYHN0cmluZ2AKK2FuZCBgd3N0cmluZ2ApLgorCitfQXZhaWxhYmlsaXR5
XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworX0hpc3RvcmljYWwgbm90ZV86IEJlZm9yZSBGZWJy
dWFyeSAyMDE2IGAqX0VRYCBoYWQgYSBjb252ZW50aW9uIG9mIGNhbGxpbmcgaXQgYXMKK2BBU1NF
UlRfRVEoZXhwZWN0ZWQsIGFjdHVhbClgLCBzbyBsb3RzIG9mIGV4aXN0aW5nIGNvZGUgdXNlcyB0
aGlzIG9yZGVyLgorTm93IGAqX0VRYCB0cmVhdHMgYm90aCBwYXJhbWV0ZXJzIGluIHRoZSBzYW1l
IHdheS4KKworIyMgU3RyaW5nIENvbXBhcmlzb24gIyMKKworVGhlIGFzc2VydGlvbnMgaW4gdGhp
cyBncm91cCBjb21wYXJlIHR3byAqKkMgc3RyaW5ncyoqLiBJZiB5b3Ugd2FudCB0byBjb21wYXJl
Cit0d28gYHN0cmluZ2Agb2JqZWN0cywgdXNlIGBFWFBFQ1RfRVFgLCBgRVhQRUNUX05FYCwgYW5k
IGV0YyBpbnN0ZWFkLgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2Vy
dGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX1NUUkVRKGBfc3RyMV9g
LCBgX3N0cjJfYCk7YCAgICB8IGBFWFBFQ1RfU1RSRVEoYF9zdHIxX2AsIGBfc3RyXzJgKTtgICAg
ICB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUgdGhlIHNhbWUgY29udGVudCB8Cit8IGBBU1NFUlRf
U1RSTkUoYF9zdHIxX2AsIGBfc3RyMl9gKTtgICAgIHwgYEVYUEVDVF9TVFJORShgX3N0cjFfYCwg
YF9zdHIyX2ApO2AgICAgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSBkaWZmZXJlbnQgY29udGVu
dCB8Cit8IGBBU1NFUlRfU1RSQ0FTRUVRKGBfc3RyMV9gLCBgX3N0cjJfYCk7YHwgYEVYUEVDVF9T
VFJDQVNFRVEoYF9zdHIxX2AsIGBfc3RyMl9gKTtgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSB0
aGUgc2FtZSBjb250ZW50LCBpZ25vcmluZyBjYXNlIHwKK3wgYEFTU0VSVF9TVFJDQVNFTkUoYF9z
dHIxX2AsIGBfc3RyMl9gKTtgfCBgRVhQRUNUX1NUUkNBU0VORShgX3N0cjFfYCwgYF9zdHIyX2Ap
O2AgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIGRpZmZlcmVudCBjb250ZW50LCBpZ25vcmluZyBj
YXNlIHwKKworTm90ZSB0aGF0ICJDQVNFIiBpbiBhbiBhc3NlcnRpb24gbmFtZSBtZWFucyB0aGF0
IGNhc2UgaXMgaWdub3JlZC4KKworYCpTVFJFUSpgIGFuZCBgKlNUUk5FKmAgYWxzbyBhY2NlcHQg
d2lkZSBDIHN0cmluZ3MgKGB3Y2hhcl90KmApLiBJZiBhCitjb21wYXJpc29uIG9mIHR3byB3aWRl
IHN0cmluZ3MgZmFpbHMsIHRoZWlyIHZhbHVlcyB3aWxsIGJlIHByaW50ZWQgYXMgVVRGLTgKK25h
cnJvdyBzdHJpbmdzLgorCitBIGBOVUxMYCBwb2ludGVyIGFuZCBhbiBlbXB0eSBzdHJpbmcgYXJl
IGNvbnNpZGVyZWQgX2RpZmZlcmVudF8uCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjLgorCitTZWUgYWxzbzogRm9yIG1vcmUgc3RyaW5nIGNvbXBhcmlzb24gdHJpY2tzIChz
dWJzdHJpbmcsIHByZWZpeCwgc3VmZml4LCBhbmQKK3JlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGlu
ZywgZm9yIGV4YW1wbGUpLCBzZWUgdGhlIFtBZHZhbmNlZCBHb29nbGUgVGVzdCBHdWlkZV0oQWR2
YW5jZWRHdWlkZS5tZCkuCisKKyMgU2ltcGxlIFRlc3RzICMKKworVG8gY3JlYXRlIGEgdGVzdDoK
KyAgMS4gVXNlIHRoZSBgVEVTVCgpYCBtYWNybyB0byBkZWZpbmUgYW5kIG5hbWUgYSB0ZXN0IGZ1
bmN0aW9uLCBUaGVzZSBhcmUgb3JkaW5hcnkgQysrIGZ1bmN0aW9ucyB0aGF0IGRvbid0IHJldHVy
biBhIHZhbHVlLgorICAxLiBJbiB0aGlzIGZ1bmN0aW9uLCBhbG9uZyB3aXRoIGFueSB2YWxpZCBD
Kysgc3RhdGVtZW50cyB5b3Ugd2FudCB0byBpbmNsdWRlLCB1c2UgdGhlIHZhcmlvdXMgR29vZ2xl
IFRlc3QgYXNzZXJ0aW9ucyB0byBjaGVjayB2YWx1ZXMuCisgIDEuIFRoZSB0ZXN0J3MgcmVzdWx0
IGlzIGRldGVybWluZWQgYnkgdGhlIGFzc2VydGlvbnM7IGlmIGFueSBhc3NlcnRpb24gaW4gdGhl
IHRlc3QgZmFpbHMgKGVpdGhlciBmYXRhbGx5IG9yIG5vbi1mYXRhbGx5KSwgb3IgaWYgdGhlIHRl
c3QgY3Jhc2hlcywgdGhlIGVudGlyZSB0ZXN0IGZhaWxzLiBPdGhlcndpc2UsIGl0IHN1Y2NlZWRz
LgorCitgYGAKK1RFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgeworIC4uLiB0ZXN0IGJv
ZHkgLi4uCit9CitgYGAKKworCitgVEVTVCgpYCBhcmd1bWVudHMgZ28gZnJvbSBnZW5lcmFsIHRv
IHNwZWNpZmljLiBUaGUgX2ZpcnN0XyBhcmd1bWVudCBpcyB0aGUKK25hbWUgb2YgdGhlIHRlc3Qg
Y2FzZSwgYW5kIHRoZSBfc2Vjb25kXyBhcmd1bWVudCBpcyB0aGUgdGVzdCdzIG5hbWUgd2l0aGlu
IHRoZQordGVzdCBjYXNlLiBCb3RoIG5hbWVzIG11c3QgYmUgdmFsaWQgQysrIGlkZW50aWZpZXJz
LCBhbmQgdGhleSBzaG91bGQgbm90IGNvbnRhaW4gdW5kZXJzY29yZSAoYF9gKS4gQSB0ZXN0J3Mg
X2Z1bGwgbmFtZV8gY29uc2lzdHMgb2YgaXRzIGNvbnRhaW5pbmcgdGVzdCBjYXNlIGFuZCBpdHMK
K2luZGl2aWR1YWwgbmFtZS4gVGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcyBjYW4gaGF2
ZSB0aGUgc2FtZSBpbmRpdmlkdWFsCituYW1lLgorCitGb3IgZXhhbXBsZSwgbGV0J3MgdGFrZSBh
IHNpbXBsZSBpbnRlZ2VyIGZ1bmN0aW9uOgorYGBgCitpbnQgRmFjdG9yaWFsKGludCBuKTsgLy8g
UmV0dXJucyB0aGUgZmFjdG9yaWFsIG9mIG4KK2BgYAorCitBIHRlc3QgY2FzZSBmb3IgdGhpcyBm
dW5jdGlvbiBtaWdodCBsb29rIGxpa2U6CitgYGAKKy8vIFRlc3RzIGZhY3RvcmlhbCBvZiAwLgor
VEVTVChGYWN0b3JpYWxUZXN0LCBIYW5kbGVzWmVyb0lucHV0KSB7CisgIEVYUEVDVF9FUSgxLCBG
YWN0b3JpYWwoMCkpOworfQorCisvLyBUZXN0cyBmYWN0b3JpYWwgb2YgcG9zaXRpdmUgbnVtYmVy
cy4KK1RFU1QoRmFjdG9yaWFsVGVzdCwgSGFuZGxlc1Bvc2l0aXZlSW5wdXQpIHsKKyAgRVhQRUNU
X0VRKDEsIEZhY3RvcmlhbCgxKSk7CisgIEVYUEVDVF9FUSgyLCBGYWN0b3JpYWwoMikpOworICBF
WFBFQ1RfRVEoNiwgRmFjdG9yaWFsKDMpKTsKKyAgRVhQRUNUX0VRKDQwMzIwLCBGYWN0b3JpYWwo
OCkpOworfQorYGBgCisKK0dvb2dsZSBUZXN0IGdyb3VwcyB0aGUgdGVzdCByZXN1bHRzIGJ5IHRl
c3QgY2FzZXMsIHNvIGxvZ2ljYWxseS1yZWxhdGVkIHRlc3RzCitzaG91bGQgYmUgaW4gdGhlIHNh
bWUgdGVzdCBjYXNlOyBpbiBvdGhlciB3b3JkcywgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZWly
CitgVEVTVCgpYCBzaG91bGQgYmUgdGhlIHNhbWUuIEluIHRoZSBhYm92ZSBleGFtcGxlLCB3ZSBo
YXZlIHR3byB0ZXN0cywKK2BIYW5kbGVzWmVyb0lucHV0YCBhbmQgYEhhbmRsZXNQb3NpdGl2ZUlu
cHV0YCwgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUgdGVzdAorY2FzZSBgRmFjdG9yaWFsVGVzdGAu
CisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIFRlc3QgRml4dHVy
ZXM6IFVzaW5nIHRoZSBTYW1lIERhdGEgQ29uZmlndXJhdGlvbiBmb3IgTXVsdGlwbGUgVGVzdHMg
IworCitJZiB5b3UgZmluZCB5b3Vyc2VsZiB3cml0aW5nIHR3byBvciBtb3JlIHRlc3RzIHRoYXQg
b3BlcmF0ZSBvbiBzaW1pbGFyIGRhdGEsCit5b3UgY2FuIHVzZSBhIF90ZXN0IGZpeHR1cmVfLiBJ
dCBhbGxvd3MgeW91IHRvIHJldXNlIHRoZSBzYW1lIGNvbmZpZ3VyYXRpb24gb2YKK29iamVjdHMg
Zm9yIHNldmVyYWwgZGlmZmVyZW50IHRlc3RzLgorCitUbyBjcmVhdGUgYSBmaXh0dXJlLCBqdXN0
OgorICAxLiBEZXJpdmUgYSBjbGFzcyBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RgIC4gU3RhcnQgaXRz
IGJvZHkgd2l0aCBgcHJvdGVjdGVkOmAgb3IgYHB1YmxpYzpgIGFzIHdlJ2xsIHdhbnQgdG8gYWNj
ZXNzIGZpeHR1cmUgbWVtYmVycyBmcm9tIHN1Yi1jbGFzc2VzLgorICAxLiBJbnNpZGUgdGhlIGNs
YXNzLCBkZWNsYXJlIGFueSBvYmplY3RzIHlvdSBwbGFuIHRvIHVzZS4KKyAgMS4gSWYgbmVjZXNz
YXJ5LCB3cml0ZSBhIGRlZmF1bHQgY29uc3RydWN0b3Igb3IgYFNldFVwKClgIGZ1bmN0aW9uIHRv
IHByZXBhcmUgdGhlIG9iamVjdHMgZm9yIGVhY2ggdGVzdC4gQSBjb21tb24gbWlzdGFrZSBpcyB0
byBzcGVsbCBgU2V0VXAoKWAgYXMgYFNldHVwKClgIHdpdGggYSBzbWFsbCBgdWAgLSBkb24ndCBs
ZXQgdGhhdCBoYXBwZW4gdG8geW91LgorICAxLiBJZiBuZWNlc3NhcnksIHdyaXRlIGEgZGVzdHJ1
Y3RvciBvciBgVGVhckRvd24oKWAgZnVuY3Rpb24gdG8gcmVsZWFzZSBhbnkgcmVzb3VyY2VzIHlv
dSBhbGxvY2F0ZWQgaW4gYFNldFVwKClgIC4gVG8gbGVhcm4gd2hlbiB5b3Ugc2hvdWxkIHVzZSB0
aGUgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBhbmQgd2hlbiB5b3Ugc2hvdWxkIHVzZSBgU2V0VXAo
KS9UZWFyRG93bigpYCwgcmVhZCB0aGlzIFtGQVEgZW50cnldKEZBUS5tZCNzaG91bGQtaS11c2Ut
dGhlLWNvbnN0cnVjdG9yZGVzdHJ1Y3Rvci1vZi10aGUtdGVzdC1maXh0dXJlLW9yLXRoZS1zZXQt
dXB0ZWFyLWRvd24tZnVuY3Rpb24pLgorICAxLiBJZiBuZWVkZWQsIGRlZmluZSBzdWJyb3V0aW5l
cyBmb3IgeW91ciB0ZXN0cyB0byBzaGFyZS4KKworV2hlbiB1c2luZyBhIGZpeHR1cmUsIHVzZSBg
VEVTVF9GKClgIGluc3RlYWQgb2YgYFRFU1QoKWAgYXMgaXQgYWxsb3dzIHlvdSB0bworYWNjZXNz
IG9iamVjdHMgYW5kIHN1YnJvdXRpbmVzIGluIHRoZSB0ZXN0IGZpeHR1cmU6CitgYGAKK1RFU1Rf
Rih0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSB7CisgLi4uIHRlc3QgYm9keSAuLi4KK30KK2Bg
YAorCitMaWtlIGBURVNUKClgLCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIHRlc3QgY2FzZSBu
YW1lLCBidXQgZm9yIGBURVNUX0YoKWAKK3RoaXMgbXVzdCBiZSB0aGUgbmFtZSBvZiB0aGUgdGVz
dCBmaXh0dXJlIGNsYXNzLiBZb3UndmUgcHJvYmFibHkgZ3Vlc3NlZDogYF9GYAoraXMgZm9yIGZp
eHR1cmUuCisKK1VuZm9ydHVuYXRlbHksIHRoZSBDKysgbWFjcm8gc3lzdGVtIGRvZXMgbm90IGFs
bG93IHVzIHRvIGNyZWF0ZSBhIHNpbmdsZSBtYWNybwordGhhdCBjYW4gaGFuZGxlIGJvdGggdHlw
ZXMgb2YgdGVzdHMuIFVzaW5nIHRoZSB3cm9uZyBtYWNybyBjYXVzZXMgYSBjb21waWxlcgorZXJy
b3IuCisKK0Fsc28sIHlvdSBtdXN0IGZpcnN0IGRlZmluZSBhIHRlc3QgZml4dHVyZSBjbGFzcyBi
ZWZvcmUgdXNpbmcgaXQgaW4gYQorYFRFU1RfRigpYCwgb3IgeW91J2xsIGdldCB0aGUgY29tcGls
ZXIgZXJyb3IgImB2aXJ0dWFsIG91dHNpZGUgY2xhc3MKK2RlY2xhcmF0aW9uYCIuCisKK0ZvciBl
YWNoIHRlc3QgZGVmaW5lZCB3aXRoIGBURVNUX0YoKWAsIEdvb2dsZSBUZXN0IHdpbGw6CisgIDEu
IENyZWF0ZSBhIF9mcmVzaF8gdGVzdCBmaXh0dXJlIGF0IHJ1bnRpbWUKKyAgMS4gSW1tZWRpYXRl
bHkgaW5pdGlhbGl6ZSBpdCB2aWEgYFNldFVwKClgICwKKyAgMS4gUnVuIHRoZSB0ZXN0CisgIDEu
IENsZWFuIHVwIGJ5IGNhbGxpbmcgYFRlYXJEb3duKClgCisgIDEuIERlbGV0ZSB0aGUgdGVzdCBm
aXh0dXJlLiAgTm90ZSB0aGF0IGRpZmZlcmVudCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2Ug
aGF2ZSBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIG9iamVjdHMsIGFuZCBHb29nbGUgVGVzdCBhbHdh
eXMgZGVsZXRlcyBhIHRlc3QgZml4dHVyZSBiZWZvcmUgaXQgY3JlYXRlcyB0aGUgbmV4dCBvbmUu
IEdvb2dsZSBUZXN0IGRvZXMgbm90IHJldXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBmb3IgbXVs
dGlwbGUgdGVzdHMuIEFueSBjaGFuZ2VzIG9uZSB0ZXN0IG1ha2VzIHRvIHRoZSBmaXh0dXJlIGRv
IG5vdCBhZmZlY3Qgb3RoZXIgdGVzdHMuCisKK0FzIGFuIGV4YW1wbGUsIGxldCdzIHdyaXRlIHRl
c3RzIGZvciBhIEZJRk8gcXVldWUgY2xhc3MgbmFtZWQgYFF1ZXVlYCwgd2hpY2gKK2hhcyB0aGUg
Zm9sbG93aW5nIGludGVyZmFjZToKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIEU+IC8vIEUgaXMg
dGhlIGVsZW1lbnQgdHlwZS4KK2NsYXNzIFF1ZXVlIHsKKyBwdWJsaWM6CisgIFF1ZXVlKCk7Cisg
IHZvaWQgRW5xdWV1ZShjb25zdCBFJiBlbGVtZW50KTsKKyAgRSogRGVxdWV1ZSgpOyAvLyBSZXR1
cm5zIE5VTEwgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LgorICBzaXplX3Qgc2l6ZSgpIGNvbnN0Owor
ICAuLi4KK307CitgYGAKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MuIEJ5IGNvbnZl
bnRpb24sIHlvdSBzaG91bGQgZ2l2ZSBpdCB0aGUgbmFtZQorYEZvb1Rlc3RgIHdoZXJlIGBGb29g
IGlzIHRoZSBjbGFzcyBiZWluZyB0ZXN0ZWQuCitgYGAKK2NsYXNzIFF1ZXVlVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkg
eworICAgIHExXy5FbnF1ZXVlKDEpOworICAgIHEyXy5FbnF1ZXVlKDIpOworICAgIHEyXy5FbnF1
ZXVlKDMpOworICB9CisKKyAgLy8gdmlydHVhbCB2b2lkIFRlYXJEb3duKCkge30KKworICBRdWV1
ZTxpbnQ+IHEwXzsKKyAgUXVldWU8aW50PiBxMV87CisgIFF1ZXVlPGludD4gcTJfOworfTsKK2Bg
YAorCitJbiB0aGlzIGNhc2UsIGBUZWFyRG93bigpYCBpcyBub3QgbmVlZGVkIHNpbmNlIHdlIGRv
bid0IGhhdmUgdG8gY2xlYW4gdXAgYWZ0ZXIKK2VhY2ggdGVzdCwgb3RoZXIgdGhhbiB3aGF0J3Mg
YWxyZWFkeSBkb25lIGJ5IHRoZSBkZXN0cnVjdG9yLgorCitOb3cgd2UnbGwgd3JpdGUgdGVzdHMg
dXNpbmcgYFRFU1RfRigpYCBhbmQgdGhpcyBmaXh0dXJlLgorYGBgCitURVNUX0YoUXVldWVUZXN0
LCBJc0VtcHR5SW5pdGlhbGx5KSB7CisgIEVYUEVDVF9FUSgwLCBxMF8uc2l6ZSgpKTsKK30KKwor
VEVTVF9GKFF1ZXVlVGVzdCwgRGVxdWV1ZVdvcmtzKSB7CisgIGludCogbiA9IHEwXy5EZXF1ZXVl
KCk7CisgIEVYUEVDVF9FUShOVUxMLCBuKTsKKworICBuID0gcTFfLkRlcXVldWUoKTsKKyAgQVNT
RVJUX1RSVUUobiAhPSBOVUxMKTsKKyAgRVhQRUNUX0VRKDEsICpuKTsKKyAgRVhQRUNUX0VRKDAs
IHExXy5zaXplKCkpOworICBkZWxldGUgbjsKKworICBuID0gcTJfLkRlcXVldWUoKTsKKyAgQVNT
RVJUX1RSVUUobiAhPSBOVUxMKTsKKyAgRVhQRUNUX0VRKDIsICpuKTsKKyAgRVhQRUNUX0VRKDEs
IHEyXy5zaXplKCkpOworICBkZWxldGUgbjsKK30KK2BgYAorCitUaGUgYWJvdmUgdXNlcyBib3Ro
IGBBU1NFUlRfKmAgYW5kIGBFWFBFQ1RfKmAgYXNzZXJ0aW9ucy4gVGhlIHJ1bGUgb2YgdGh1bWIg
aXMKK3RvIHVzZSBgRVhQRUNUXypgIHdoZW4geW91IHdhbnQgdGhlIHRlc3QgdG8gY29udGludWUg
dG8gcmV2ZWFsIG1vcmUgZXJyb3JzCithZnRlciB0aGUgYXNzZXJ0aW9uIGZhaWx1cmUsIGFuZCB1
c2UgYEFTU0VSVF8qYCB3aGVuIGNvbnRpbnVpbmcgYWZ0ZXIgZmFpbHVyZQorZG9lc24ndCBtYWtl
IHNlbnNlLiBGb3IgZXhhbXBsZSwgdGhlIHNlY29uZCBhc3NlcnRpb24gaW4gdGhlIGBEZXF1ZXVl
YCB0ZXN0IGlzCitgQVNTRVJUX1RSVUUobiAhPSBOVUxMKWAsIGFzIHdlIG5lZWQgdG8gZGVyZWZl
cmVuY2UgdGhlIHBvaW50ZXIgYG5gIGxhdGVyLAord2hpY2ggd291bGQgbGVhZCB0byBhIHNlZ2Zh
dWx0IHdoZW4gYG5gIGlzIGBOVUxMYC4KKworV2hlbiB0aGVzZSB0ZXN0cyBydW4sIHRoZSBmb2xs
b3dpbmcgaGFwcGVuczoKKyAgMS4gR29vZ2xlIFRlc3QgY29uc3RydWN0cyBhIGBRdWV1ZVRlc3Rg
IG9iamVjdCAobGV0J3MgY2FsbCBpdCBgdDFgICkuCisgIDEuIGB0MS5TZXRVcCgpYCBpbml0aWFs
aXplcyBgdDFgIC4KKyAgMS4gVGhlIGZpcnN0IHRlc3QgKCBgSXNFbXB0eUluaXRpYWxseWAgKSBy
dW5zIG9uIGB0MWAgLgorICAxLiBgdDEuVGVhckRvd24oKWAgY2xlYW5zIHVwIGFmdGVyIHRoZSB0
ZXN0IGZpbmlzaGVzLgorICAxLiBgdDFgIGlzIGRlc3RydWN0ZWQuCisgIDEuIFRoZSBhYm92ZSBz
dGVwcyBhcmUgcmVwZWF0ZWQgb24gYW5vdGhlciBgUXVldWVUZXN0YCBvYmplY3QsIHRoaXMgdGlt
ZSBydW5uaW5nIHRoZSBgRGVxdWV1ZVdvcmtzYCB0ZXN0LgorCitfQXZhaWxhYmlsaXR5XzogTGlu
dXgsIFdpbmRvd3MsIE1hYy4KKworX05vdGVfOiBHb29nbGUgVGVzdCBhdXRvbWF0aWNhbGx5IHNh
dmVzIGFsbCBfR29vZ2xlIFRlc3RfIGZsYWdzIHdoZW4gYSB0ZXN0CitvYmplY3QgaXMgY29uc3Ry
dWN0ZWQsIGFuZCByZXN0b3JlcyB0aGVtIHdoZW4gaXQgaXMgZGVzdHJ1Y3RlZC4KKworIyBJbnZv
a2luZyB0aGUgVGVzdHMgIworCitgVEVTVCgpYCBhbmQgYFRFU1RfRigpYCBpbXBsaWNpdGx5IHJl
Z2lzdGVyIHRoZWlyIHRlc3RzIHdpdGggR29vZ2xlIFRlc3QuIFNvLCB1bmxpa2Ugd2l0aCBtYW55
IG90aGVyIEMrKyB0ZXN0aW5nIGZyYW1ld29ya3MsIHlvdSBkb24ndCBoYXZlIHRvIHJlLWxpc3Qg
YWxsIHlvdXIgZGVmaW5lZCB0ZXN0cyBpbiBvcmRlciB0byBydW4gdGhlbS4KKworQWZ0ZXIgZGVm
aW5pbmcgeW91ciB0ZXN0cywgeW91IGNhbiBydW4gdGhlbSB3aXRoIGBSVU5fQUxMX1RFU1RTKClg
ICwgd2hpY2ggcmV0dXJucyBgMGAgaWYgYWxsIHRoZSB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3Ig
YDFgIG90aGVyd2lzZS4gTm90ZSB0aGF0IGBSVU5fQUxMX1RFU1RTKClgIHJ1bnMgX2FsbCB0ZXN0
c18gaW4geW91ciBsaW5rIHVuaXQgLS0gdGhleSBjYW4gYmUgZnJvbSBkaWZmZXJlbnQgdGVzdCBj
YXNlcywgb3IgZXZlbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgorCitXaGVuIGludm9rZWQsIHRo
ZSBgUlVOX0FMTF9URVNUUygpYCBtYWNybzoKKyAgMS4gU2F2ZXMgdGhlIHN0YXRlIG9mIGFsbCAg
R29vZ2xlIFRlc3QgZmxhZ3MuCisgIDEuIENyZWF0ZXMgYSB0ZXN0IGZpeHR1cmUgb2JqZWN0IGZv
ciB0aGUgZmlyc3QgdGVzdC4KKyAgMS4gSW5pdGlhbGl6ZXMgaXQgdmlhIGBTZXRVcCgpYC4KKyAg
MS4gUnVucyB0aGUgdGVzdCBvbiB0aGUgZml4dHVyZSBvYmplY3QuCisgIDEuIENsZWFucyB1cCB0
aGUgZml4dHVyZSB2aWEgYFRlYXJEb3duKClgLgorICAxLiBEZWxldGVzIHRoZSBmaXh0dXJlLgor
ICAxLiBSZXN0b3JlcyB0aGUgc3RhdGUgb2YgYWxsIEdvb2dsZSBUZXN0IGZsYWdzLgorICAxLiBS
ZXBlYXRzIHRoZSBhYm92ZSBzdGVwcyBmb3IgdGhlIG5leHQgdGVzdCwgdW50aWwgYWxsIHRlc3Rz
IGhhdmUgcnVuLgorCitJbiBhZGRpdGlvbiwgaWYgdGhlIHRleHQgZml4dHVyZSdzIGNvbnN0cnVj
dG9yIGdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUgaW4KK3N0ZXAgMiwgdGhlcmUgaXMgbm8gcG9p
bnQgZm9yIHN0ZXAgMyAtIDUgYW5kIHRoZXkgYXJlIHRodXMgc2tpcHBlZC4gU2ltaWxhcmx5LAor
aWYgc3RlcCAzIGdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUsIHN0ZXAgNCB3aWxsIGJlIHNraXBw
ZWQuCisKK19JbXBvcnRhbnRfOiBZb3UgbXVzdCBub3QgaWdub3JlIHRoZSByZXR1cm4gdmFsdWUg
b2YgYFJVTl9BTExfVEVTVFMoKWAsIG9yIGBnY2NgCit3aWxsIGdpdmUgeW91IGEgY29tcGlsZXIg
ZXJyb3IuIFRoZSByYXRpb25hbGUgZm9yIHRoaXMgZGVzaWduIGlzIHRoYXQgdGhlCithdXRvbWF0
ZWQgdGVzdGluZyBzZXJ2aWNlIGRldGVybWluZXMgd2hldGhlciBhIHRlc3QgaGFzIHBhc3NlZCBi
YXNlZCBvbiBpdHMKK2V4aXQgY29kZSwgbm90IG9uIGl0cyBzdGRvdXQvc3RkZXJyIG91dHB1dDsg
dGh1cyB5b3VyIGBtYWluKClgIGZ1bmN0aW9uIG11c3QKK3JldHVybiB0aGUgdmFsdWUgb2YgYFJV
Tl9BTExfVEVTVFMoKWAuCisKK0Fsc28sIHlvdSBzaG91bGQgY2FsbCBgUlVOX0FMTF9URVNUUygp
YCBvbmx5ICoqb25jZSoqLiBDYWxsaW5nIGl0IG1vcmUgdGhhbiBvbmNlCitjb25mbGljdHMgd2l0
aCBzb21lIGFkdmFuY2VkIEdvb2dsZSBUZXN0IGZlYXR1cmVzIChlLmcuIHRocmVhZC1zYWZlIGRl
YXRoCit0ZXN0cykgYW5kIHRodXMgaXMgbm90IHN1cHBvcnRlZC4KKworX0F2YWlsYWJpbGl0eV86
IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMgV3JpdGluZyB0aGUgbWFpbigpIEZ1bmN0aW9uICMK
KworWW91IGNhbiBzdGFydCBmcm9tIHRoaXMgYm9pbGVycGxhdGU6CitgYGAKKyNpbmNsdWRlICJ0
aGlzL3BhY2thZ2UvZm9vLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNl
IHsKKworLy8gVGhlIGZpeHR1cmUgZm9yIHRlc3RpbmcgY2xhc3MgRm9vLgorY2xhc3MgRm9vVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLy8gWW91IGNhbiBy
ZW1vdmUgYW55IG9yIGFsbCBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBpZiBpdHMgYm9keQor
ICAvLyBpcyBlbXB0eS4KKworICBGb29UZXN0KCkgeworICAgIC8vIFlvdSBjYW4gZG8gc2V0LXVw
IHdvcmsgZm9yIGVhY2ggdGVzdCBoZXJlLgorICB9CisKKyAgdmlydHVhbCB+Rm9vVGVzdCgpIHsK
KyAgICAvLyBZb3UgY2FuIGRvIGNsZWFuLXVwIHdvcmsgdGhhdCBkb2Vzbid0IHRocm93IGV4Y2Vw
dGlvbnMgaGVyZS4KKyAgfQorCisgIC8vIElmIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3Rv
ciBhcmUgbm90IGVub3VnaCBmb3Igc2V0dGluZyB1cAorICAvLyBhbmQgY2xlYW5pbmcgdXAgZWFj
aCB0ZXN0LCB5b3UgY2FuIGRlZmluZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CisKKyAgdmlydHVh
bCB2b2lkIFNldFVwKCkgeworICAgIC8vIENvZGUgaGVyZSB3aWxsIGJlIGNhbGxlZCBpbW1lZGlh
dGVseSBhZnRlciB0aGUgY29uc3RydWN0b3IgKHJpZ2h0CisgICAgLy8gYmVmb3JlIGVhY2ggdGVz
dCkuCisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgLy8gQ29kZSBoZXJl
IHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIGVhY2ggdGVzdCAocmlnaHQKKyAgICAv
LyBiZWZvcmUgdGhlIGRlc3RydWN0b3IpLgorICB9CisKKyAgLy8gT2JqZWN0cyBkZWNsYXJlZCBo
ZXJlIGNhbiBiZSB1c2VkIGJ5IGFsbCB0ZXN0cyBpbiB0aGUgdGVzdCBjYXNlIGZvciBGb28uCit9
OworCisvLyBUZXN0cyB0aGF0IHRoZSBGb286OkJhcigpIG1ldGhvZCBkb2VzIEFiYy4KK1RFU1Rf
RihGb29UZXN0LCBNZXRob2RCYXJEb2VzQWJjKSB7CisgIGNvbnN0IHN0cmluZyBpbnB1dF9maWxl
cGF0aCA9ICJ0aGlzL3BhY2thZ2UvdGVzdGRhdGEvbXlpbnB1dGZpbGUuZGF0IjsKKyAgY29uc3Qg
c3RyaW5nIG91dHB1dF9maWxlcGF0aCA9ICJ0aGlzL3BhY2thZ2UvdGVzdGRhdGEvbXlvdXRwdXRm
aWxlLmRhdCI7CisgIEZvbyBmOworICBFWFBFQ1RfRVEoMCwgZi5CYXIoaW5wdXRfZmlsZXBhdGgs
IG91dHB1dF9maWxlcGF0aCkpOworfQorCisvLyBUZXN0cyB0aGF0IEZvbyBkb2VzIFh5ei4KK1RF
U1RfRihGb29UZXN0LCBEb2VzWHl6KSB7CisgIC8vIEV4ZXJjaXNlcyB0aGUgWHl6IGZlYXR1cmUg
b2YgRm9vLgorfQorCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg
Kiphcmd2KSB7CisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICBy
ZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQorYGBgCisKK1RoZSBgOjp0ZXN0aW5nOjpJbml0R29v
Z2xlVGVzdCgpYCBmdW5jdGlvbiBwYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IgR29vZ2xlCitU
ZXN0IGZsYWdzLCBhbmQgcmVtb3ZlcyBhbGwgcmVjb2duaXplZCBmbGFncy4gVGhpcyBhbGxvd3Mg
dGhlIHVzZXIgdG8gY29udHJvbCBhCit0ZXN0IHByb2dyYW0ncyBiZWhhdmlvciB2aWEgdmFyaW91
cyBmbGFncywgd2hpY2ggd2UnbGwgY292ZXIgaW4gW0FkdmFuY2VkR3VpZGVdKEFkdmFuY2VkR3Vp
ZGUubWQpLgorWW91IG11c3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGJlZm9yZSBjYWxsaW5nIGBSVU5f
QUxMX1RFU1RTKClgLCBvciB0aGUgZmxhZ3MKK3dvbid0IGJlIHByb3Blcmx5IGluaXRpYWxpemVk
LgorCitPbiBXaW5kb3dzLCBgSW5pdEdvb2dsZVRlc3QoKWAgYWxzbyB3b3JrcyB3aXRoIHdpZGUg
c3RyaW5ncywgc28gaXQgY2FuIGJlIHVzZWQKK2luIHByb2dyYW1zIGNvbXBpbGVkIGluIGBVTklD
T0RFYCBtb2RlIGFzIHdlbGwuCisKK0J1dCBtYXliZSB5b3UgdGhpbmsgdGhhdCB3cml0aW5nIGFs
bCB0aG9zZSBtYWluKCkgZnVuY3Rpb25zIGlzIHRvbyBtdWNoIHdvcms/IFdlIGFncmVlIHdpdGgg
eW91IGNvbXBsZXRlbHkgYW5kIHRoYXQncyB3aHkgR29vZ2xlIFRlc3QgcHJvdmlkZXMgYSBiYXNp
YyBpbXBsZW1lbnRhdGlvbiBvZiBtYWluKCkuIElmIGl0IGZpdHMgeW91ciBuZWVkcywgdGhlbiBq
dXN0IGxpbmsgeW91ciB0ZXN0IHdpdGggZ3Rlc3RcX21haW4gbGlicmFyeSBhbmQgeW91IGFyZSBn
b29kIHRvIGdvLgorCisjIyBJbXBvcnRhbnQgbm90ZSBmb3IgVmlzdWFsIEMrKyB1c2VycyAjIwor
SWYgeW91IHB1dCB5b3VyIHRlc3RzIGludG8gYSBsaWJyYXJ5IGFuZCB5b3VyIGBtYWluKClgIGZ1
bmN0aW9uIGlzIGluIGEgZGlmZmVyZW50IGxpYnJhcnkgb3IgaW4geW91ciAuZXhlIGZpbGUsIHRo
b3NlIHRlc3RzIHdpbGwgbm90IHJ1bi4gVGhlIHJlYXNvbiBpcyBhIFtidWddKGh0dHBzOi8vY29u
bmVjdC5taWNyb3NvZnQuY29tL2ZlZWRiYWNrL3ZpZXdmZWVkYmFjay5hc3B4P0ZlZWRiYWNrSUQ9
MjQ0NDEwJnNpdGVpZD0yMTApIGluIFZpc3VhbCBDKysuIFdoZW4geW91IGRlZmluZSB5b3VyIHRl
c3RzLCBHb29nbGUgVGVzdCBjcmVhdGVzIGNlcnRhaW4gc3RhdGljIG9iamVjdHMgdG8gcmVnaXN0
ZXIgdGhlbS4gVGhlc2Ugb2JqZWN0cyBhcmUgbm90IHJlZmVyZW5jZWQgZnJvbSBlbHNld2hlcmUg
YnV0IHRoZWlyIGNvbnN0cnVjdG9ycyBhcmUgc3RpbGwgc3VwcG9zZWQgdG8gcnVuLiBXaGVuIFZp
c3VhbCBDKysgbGlua2VyIHNlZXMgdGhhdCBub3RoaW5nIGluIHRoZSBsaWJyYXJ5IGlzIHJlZmVy
ZW5jZWQgZnJvbSBvdGhlciBwbGFjZXMgaXQgdGhyb3dzIHRoZSBsaWJyYXJ5IG91dC4gWW91IGhh
dmUgdG8gcmVmZXJlbmNlIHlvdXIgbGlicmFyeSB3aXRoIHRlc3RzIGZyb20geW91ciBtYWluIHBy
b2dyYW0gdG8ga2VlcCB0aGUgbGlua2VyIGZyb20gZGlzY2FyZGluZyBpdC4gSGVyZSBpcyBob3cg
dG8gZG8gaXQuIFNvbWV3aGVyZSBpbiB5b3VyIGxpYnJhcnkgY29kZSBkZWNsYXJlIGEgZnVuY3Rp
b246CitgYGAKK19fZGVjbHNwZWMoZGxsZXhwb3J0KSBpbnQgUHVsbEluTXlMaWJyYXJ5KCkgeyBy
ZXR1cm4gMDsgfQorYGBgCitJZiB5b3UgcHV0IHlvdXIgdGVzdHMgaW4gYSBzdGF0aWMgbGlicmFy
eSAobm90IERMTCkgdGhlbiBgX19kZWNsc3BlYyhkbGxleHBvcnQpYCBpcyBub3QgcmVxdWlyZWQu
IE5vdywgaW4geW91ciBtYWluIHByb2dyYW0sIHdyaXRlIGEgY29kZSB0aGF0IGludm9rZXMgdGhh
dCBmdW5jdGlvbjoKK2BgYAoraW50IFB1bGxJbk15TGlicmFyeSgpOworc3RhdGljIGludCBkdW1t
eSA9IFB1bGxJbk15TGlicmFyeSgpOworYGBgCitUaGlzIHdpbGwga2VlcCB5b3VyIHRlc3RzIHJl
ZmVyZW5jZWQgYW5kIHdpbGwgbWFrZSB0aGVtIHJlZ2lzdGVyIHRoZW1zZWx2ZXMgYXQgc3RhcnR1
cC4KKworSW4gYWRkaXRpb24sIGlmIHlvdSBkZWZpbmUgeW91ciB0ZXN0cyBpbiBhIHN0YXRpYyBs
aWJyYXJ5LCBhZGQgYC9PUFQ6Tk9SRUZgIHRvIHlvdXIgbWFpbiBwcm9ncmFtIGxpbmtlciBvcHRp
b25zLiBJZiB5b3UgdXNlIE1TVkMrKyBJREUsIGdvIHRvIHlvdXIgLmV4ZSBwcm9qZWN0IHByb3Bl
cnRpZXMvQ29uZmlndXJhdGlvbiBQcm9wZXJ0aWVzL0xpbmtlci9PcHRpbWl6YXRpb24gYW5kIHNl
dCBSZWZlcmVuY2VzIHNldHRpbmcgdG8gYEtlZXAgVW5yZWZlcmVuY2VkIERhdGEgKC9PUFQ6Tk9S
RUYpYC4gVGhpcyB3aWxsIGtlZXAgVmlzdWFsIEMrKyBsaW5rZXIgZnJvbSBkaXNjYXJkaW5nIGlu
ZGl2aWR1YWwgc3ltYm9scyBnZW5lcmF0ZWQgYnkgeW91ciB0ZXN0cyBmcm9tIHRoZSBmaW5hbCBl
eGVjdXRhYmxlLgorCitUaGVyZSBpcyBvbmUgbW9yZSBwaXRmYWxsLCB0aG91Z2guIElmIHlvdSB1
c2UgR29vZ2xlIFRlc3QgYXMgYSBzdGF0aWMgbGlicmFyeSAodGhhdCdzIGhvdyBpdCBpcyBkZWZp
bmVkIGluIGd0ZXN0LnZjcHJvaikgeW91ciB0ZXN0cyBtdXN0IGFsc28gcmVzaWRlIGluIGEgc3Rh
dGljIGxpYnJhcnkuIElmIHlvdSBoYXZlIHRvIGhhdmUgdGhlbSBpbiBhIERMTCwgeW91IF9tdXN0
XyBjaGFuZ2UgR29vZ2xlIFRlc3QgdG8gYnVpbGQgaW50byBhIERMTCBhcyB3ZWxsLiBPdGhlcndp
c2UgeW91ciB0ZXN0cyB3aWxsIG5vdCBydW4gY29ycmVjdGx5IG9yIHdpbGwgbm90IHJ1biBhdCBh
bGwuIFRoZSBnZW5lcmFsIGNvbmNsdXNpb24gaGVyZSBpczogbWFrZSB5b3VyIGxpZmUgZWFzaWVy
IC0gZG8gbm90IHdyaXRlIHlvdXIgdGVzdHMgaW4gbGlicmFyaWVzIQorCisjIFdoZXJlIHRvIEdv
IGZyb20gSGVyZSAjCisKK0NvbmdyYXR1bGF0aW9ucyEgWW91J3ZlIGxlYXJuZWQgdGhlIEdvb2ds
ZSBUZXN0IGJhc2ljcy4gWW91IGNhbiBzdGFydCB3cml0aW5nCithbmQgcnVubmluZyBHb29nbGUg
VGVzdCB0ZXN0cywgcmVhZCBzb21lIFtzYW1wbGVzXShTYW1wbGVzLm1kKSwgb3IgY29udGludWUg
d2l0aAorW0FkdmFuY2VkR3VpZGVdKEFkdmFuY2VkR3VpZGUubWQpLCB3aGljaCBkZXNjcmliZXMg
bWFueSBtb3JlIHVzZWZ1bCBHb29nbGUgVGVzdCBmZWF0dXJlcy4KKworIyBLbm93biBMaW1pdGF0
aW9ucyAjCisKK0dvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHRvIGJlIHRocmVhZC1zYWZlLiAgVGhl
IGltcGxlbWVudGF0aW9uIGlzCit0aHJlYWQtc2FmZSBvbiBzeXN0ZW1zIHdoZXJlIHRoZSBgcHRo
cmVhZHNgIGxpYnJhcnkgaXMgYXZhaWxhYmxlLiAgSXQKK2lzIGN1cnJlbnRseSBfdW5zYWZlXyB0
byB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBmcm9tIHR3byB0aHJlYWRzCitjb25jdXJyZW50
bHkgb24gb3RoZXIgc3lzdGVtcyAoZS5nLiBXaW5kb3dzKS4gIEluIG1vc3QgdGVzdHMgdGhpcyBp
cworbm90IGFuIGlzc3VlIGFzIHVzdWFsbHkgdGhlIGFzc2VydGlvbnMgYXJlIGRvbmUgaW4gdGhl
IG1haW4gdGhyZWFkLiBJZgoreW91IHdhbnQgdG8gaGVscCwgeW91IGNhbiB2b2x1bnRlZXIgdG8g
aW1wbGVtZW50IHRoZSBuZWNlc3NhcnkKK3N5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGluIGBn
dGVzdC1wb3J0LmhgIGZvciB5b3VyIHBsYXRmb3JtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvZG9jcy9QdW1wTWFudWFsLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
ZG9jcy9QdW1wTWFudWFsLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxODRmMTUzY2EyZWNhZDdjNjVjYjU4YzI3
ZmIzMWJkNzIzNzVmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9kb2NzL1B1bXBNYW51YWwubWQKQEAgLTAsMCArMSwxNzcgQEAKKworCis8Yj5QPC9iPnVtcCBp
cyA8Yj5VPC9iPnNlZnVsIGZvciA8Yj5NPC9iPmV0YSA8Yj5QPC9iPnJvZ3JhbW1pbmcuCisKKyMg
VGhlIFByb2JsZW0gIworCitUZW1wbGF0ZSBhbmQgbWFjcm8gbGlicmFyaWVzIG9mdGVuIG5lZWQg
dG8gZGVmaW5lIG1hbnkgY2xhc3NlcywKK2Z1bmN0aW9ucywgb3IgbWFjcm9zIHRoYXQgdmFyeSBv
bmx5IChvciBhbG1vc3Qgb25seSkgaW4gdGhlIG51bWJlciBvZgorYXJndW1lbnRzIHRoZXkgdGFr
ZS4gSXQncyBhIGxvdCBvZiByZXBldGl0aXZlLCBtZWNoYW5pY2FsLCBhbmQKK2Vycm9yLXByb25l
IHdvcmsuCisKK1ZhcmlhZGljIHRlbXBsYXRlcyBhbmQgdmFyaWFkaWMgbWFjcm9zIGNhbiBhbGxl
dmlhdGUgdGhlIHByb2JsZW0uCitIb3dldmVyLCB3aGlsZSBib3RoIGFyZSBiZWluZyBjb25zaWRl
cmVkIGJ5IHRoZSBDKysgY29tbWl0dGVlLCBuZWl0aGVyCitpcyBpbiB0aGUgc3RhbmRhcmQgeWV0
IG9yIHdpZGVseSBzdXBwb3J0ZWQgYnkgY29tcGlsZXJzLiAgVGh1cyB0aGV5CithcmUgb2Z0ZW4g
bm90IGEgZ29vZCBjaG9pY2UsIGVzcGVjaWFsbHkgd2hlbiB5b3VyIGNvZGUgbmVlZHMgdG8gYmUK
K3BvcnRhYmxlLiBBbmQgdGhlaXIgY2FwYWJpbGl0aWVzIGFyZSBzdGlsbCBsaW1pdGVkLgorCitB
cyBhIHJlc3VsdCwgYXV0aG9ycyBvZiBzdWNoIGxpYnJhcmllcyBvZnRlbiBoYXZlIHRvIHdyaXRl
IHNjcmlwdHMgdG8KK2dlbmVyYXRlIHRoZWlyIGltcGxlbWVudGF0aW9uLiBIb3dldmVyLCBvdXIg
ZXhwZXJpZW5jZSBpcyB0aGF0IGl0J3MKK3RlZGlvdXMgdG8gd3JpdGUgc3VjaCBzY3JpcHRzLCB3
aGljaCB0ZW5kIHRvIHJlZmxlY3QgdGhlIHN0cnVjdHVyZSBvZgordGhlIGdlbmVyYXRlZCBjb2Rl
IHBvb3JseSBhbmQgYXJlIG9mdGVuIGhhcmQgdG8gcmVhZCBhbmQgZWRpdC4gRm9yCitleGFtcGxl
LCBhIHNtYWxsIGNoYW5nZSBuZWVkZWQgaW4gdGhlIGdlbmVyYXRlZCBjb2RlIG1heSByZXF1aXJl
IHNvbWUKK25vbi1pbnR1aXRpdmUsIG5vbi10cml2aWFsIGNoYW5nZXMgaW4gdGhlIHNjcmlwdC4g
VGhpcyBpcyBlc3BlY2lhbGx5CitwYWluZnVsIHdoZW4gZXhwZXJpbWVudGluZyB3aXRoIHRoZSBj
b2RlLgorCisjIE91ciBTb2x1dGlvbiAjCisKK1B1bXAgKGZvciBQdW1wIGlzIFVzZWZ1bCBmb3Ig
TWV0YSBQcm9ncmFtbWluZywgUHJldHR5IFVzZWZ1bCBmb3IgTWV0YQorUHJvZ3JhbW1pbmcsIG9y
IFByYWN0aWNhbCBVdGlsaXR5IGZvciBNZXRhIFByb2dyYW1taW5nLCB3aGljaGV2ZXIgeW91Citw
cmVmZXIpIGlzIGEgc2ltcGxlIG1ldGEtcHJvZ3JhbW1pbmcgdG9vbCBmb3IgQysrLiBUaGUgaWRl
YSBpcyB0aGF0IGEKK3Byb2dyYW1tZXIgd3JpdGVzIGEgYGZvby5wdW1wYCBmaWxlIHdoaWNoIGNv
bnRhaW5zIEMrKyBjb2RlIHBsdXMgbWV0YQorY29kZSB0aGF0IG1hbmlwdWxhdGVzIHRoZSBDKysg
Y29kZS4gVGhlIG1ldGEgY29kZSBjYW4gaGFuZGxlCitpdGVyYXRpb25zIG92ZXIgYSByYW5nZSwg
bmVzdGVkIGl0ZXJhdGlvbnMsIGxvY2FsIG1ldGEgdmFyaWFibGUKK2RlZmluaXRpb25zLCBzaW1w
bGUgYXJpdGhtZXRpYywgYW5kIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zLiBZb3UgY2FuCit2aWV3
IGl0IGFzIGEgc21hbGwgRG9tYWluLVNwZWNpZmljIExhbmd1YWdlLiBUaGUgbWV0YSBsYW5ndWFn
ZSBpcworZGVzaWduZWQgdG8gYmUgbm9uLWludHJ1c2l2ZSAocy50LiBpdCB3b24ndCBjb25mdXNl
IEVtYWNzJyBDKysgbW9kZSwKK2ZvciBleGFtcGxlKSBhbmQgY29uY2lzZSwgbWFraW5nIFB1bXAg
Y29kZSBpbnR1aXRpdmUgYW5kIGVhc3kgdG8KK21haW50YWluLgorCisjIyBIaWdobGlnaHRzICMj
CisKKyAgKiBUaGUgaW1wbGVtZW50YXRpb24gaXMgaW4gYSBzaW5nbGUgUHl0aG9uIHNjcmlwdCBh
bmQgdGh1cyB1bHRyYSBwb3J0YWJsZTogbm8gYnVpbGQgb3IgaW5zdGFsbGF0aW9uIGlzIG5lZWRl
ZCBhbmQgaXQgd29ya3MgY3Jvc3MgcGxhdGZvcm1zLgorICAqIFB1bXAgdHJpZXMgdG8gYmUgc21h
cnQgd2l0aCByZXNwZWN0IHRvIFtHb29nbGUncyBzdHlsZSBndWlkZV0oaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wL2dvb2dsZS1zdHlsZWd1aWRlLyk6IGl0IGJyZWFrcyBsb25nIGxpbmVzIChlYXN5
IHRvIGhhdmUgd2hlbiB0aGV5IGFyZSBnZW5lcmF0ZWQpIGF0IGFjY2VwdGFibGUgcGxhY2VzIHRv
IGZpdCB3aXRoaW4gODAgY29sdW1ucyBhbmQgaW5kZW50IHRoZSBjb250aW51YXRpb24gbGluZXMg
Y29ycmVjdGx5LgorICAqIFRoZSBmb3JtYXQgaXMgaHVtYW4tcmVhZGFibGUgYW5kIG1vcmUgY29u
Y2lzZSB0aGFuIFhNTC4KKyAgKiBUaGUgZm9ybWF0IHdvcmtzIHJlbGF0aXZlbHkgd2VsbCB3aXRo
IEVtYWNzJyBDKysgbW9kZS4KKworIyMgRXhhbXBsZXMgIyMKKworVGhlIGZvbGxvd2luZyBQdW1w
IGNvZGUgKHdoZXJlIG1ldGEga2V5d29yZHMgc3RhcnQgd2l0aCBgJGAsIGBbW2AgYW5kIGBdXWAg
YXJlIG1ldGEgYnJhY2tldHMsIGFuZCBgJCRgIHN0YXJ0cyBhIG1ldGEgY29tbWVudCB0aGF0IGVu
ZHMgd2l0aCB0aGUgbGluZSk6CisKK2BgYAorJHZhciBuID0gMyAgICAgJCQgRGVmaW5lcyBhIG1l
dGEgdmFyaWFibGUgbi4KKyRyYW5nZSBpIDAuLm4gICQkIERlY2xhcmVzIHRoZSByYW5nZSBvZiBt
ZXRhIGl0ZXJhdG9yIGkgKGluY2x1c2l2ZSkuCiskZm9yIGkgW1sKKyAgICAgICAgICAgICAgICQk
IE1ldGEgbG9vcC4KKy8vIEZvbyRpIGRvZXMgYmxhaCBmb3IgJGktYXJ5IHByZWRpY2F0ZXMuCisk
cmFuZ2UgaiAxLi5pCit0ZW1wbGF0ZSA8c2l6ZV90IE4gJGZvciBqIFtbLCB0eXBlbmFtZSBBJGpd
XT4KK2NsYXNzIEZvbyRpIHsKKyRpZiBpID09IDAgW1sKKyAgYmxhaCBhOworXV0gJGVsaWYgaSA8
PSAyIFtbCisgIGJsYWggYjsKK11dICRlbHNlIFtbCisgIGJsYWggYzsKK11dCit9OworCitdXQor
YGBgCisKK3dpbGwgYmUgdHJhbnNsYXRlZCBieSB0aGUgUHVtcCBjb21waWxlciB0bzoKKworYGBg
CisvLyBGb28wIGRvZXMgYmxhaCBmb3IgMC1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXpl
X3QgTj4KK2NsYXNzIEZvbzAgeworICBibGFoIGE7Cit9OworCisvLyBGb28xIGRvZXMgYmxhaCBm
b3IgMS1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTE+Citj
bGFzcyBGb28xIHsKKyAgYmxhaCBiOworfTsKKworLy8gRm9vMiBkb2VzIGJsYWggZm9yIDItYXJ5
IHByZWRpY2F0ZXMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBB
Mj4KK2NsYXNzIEZvbzIgeworICBibGFoIGI7Cit9OworCisvLyBGb28zIGRvZXMgYmxhaCBmb3Ig
My1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5cGVu
YW1lIEEyLCB0eXBlbmFtZSBBMz4KK2NsYXNzIEZvbzMgeworICBibGFoIGM7Cit9OworYGBgCisK
K0luIGFub3RoZXIgZXhhbXBsZSwKKworYGBgCiskcmFuZ2UgaSAxLi5uCitGdW5jKCRmb3IgaSAr
IFtbYSRpXV0pOworJCQgVGhlIHRleHQgYmV0d2VlbiBpIGFuZCBbWyBpcyB0aGUgc2VwYXJhdG9y
IGJldHdlZW4gaXRlcmF0aW9ucy4KK2BgYAorCit3aWxsIGdlbmVyYXRlIG9uZSBvZiB0aGUgZm9s
bG93aW5nIGxpbmVzICh3aXRob3V0IHRoZSBjb21tZW50cyksIGRlcGVuZGluZyBvbiB0aGUgdmFs
dWUgb2YgYG5gOgorCitgYGAKK0Z1bmMoKTsgICAgICAgICAgICAgIC8vIElmIG4gaXMgMC4KK0Z1
bmMoYTEpOyAgICAgICAgICAgIC8vIElmIG4gaXMgMS4KK0Z1bmMoYTEgKyBhMik7ICAgICAgIC8v
IElmIG4gaXMgMi4KK0Z1bmMoYTEgKyBhMiArIGEzKTsgIC8vIElmIG4gaXMgMy4KKy8vIEFuZCBz
byBvbi4uLgorYGBgCisKKyMjIENvbnN0cnVjdHMgIyMKKworV2Ugc3VwcG9ydCB0aGUgZm9sbG93
aW5nIG1ldGEgcHJvZ3JhbW1pbmcgY29uc3RydWN0czoKKworfCBgJHZhciBpZCA9IGV4cGAgfCBE
ZWZpbmVzIGEgbmFtZWQgY29uc3RhbnQgdmFsdWUuIGAkaWRgIGlzIHZhbGlkIHV0aWwgdGhlIGVu
ZCBvZiB0aGUgY3VycmVudCBtZXRhIGxleGljYWwgYmxvY2suIHwKK3w6LS0tLS0tLS0tLS0tLS0t
LXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGAkcmFuZ2UgaWQg
ZXhwLi5leHBgIHwgU2V0cyB0aGUgcmFuZ2Ugb2YgYW4gaXRlcmF0aW9uIHZhcmlhYmxlLCB3aGlj
aCBjYW4gYmUgcmV1c2VkIGluIG11bHRpcGxlIGxvb3BzIGxhdGVyLiAgICAgICAgICB8Cit8IGAk
Zm9yIGlkIHNlcCBbWyBjb2RlIF1dYCB8IEl0ZXJhdGlvbi4gVGhlIHJhbmdlIG9mIGBpZGAgbXVz
dCBoYXZlIGJlZW4gZGVmaW5lZCBlYXJsaWVyLiBgJGlkYCBpcyB2YWxpZCBpbiBgY29kZWAuICAg
ICAgICAgfAorfCBgJCgkKWAgICAgICAgICAgfCBHZW5lcmF0ZXMgYSBzaW5nbGUgYCRgIGNoYXJh
Y3Rlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKK3wgYCRpZGAgICAgICAgICAgIHwgVmFsdWUgb2YgdGhlIG5hbWVkIGNvbnN0
YW50IG9yIGl0ZXJhdGlvbiB2YXJpYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8Cit8IGAkKGV4cClgICAgICAgICB8IFZhbHVlIG9mIHRoZSBleHByZXNz
aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorfCBgJGlmIGV4cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNoYCB8
IENvbmRpdGlvbmFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgW1sgY29kZSBdXWAg
ICAgfCBNZXRhIGxleGljYWwgYmxvY2suICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYGNwcF9jb2Rl
YCAgICAgIHwgUmF3IEMrKyBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGAkJCBj
b21tZW50YCAgICB8IE1ldGEgY29tbWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCisq
Kk5vdGU6KiogVG8gZ2l2ZSB0aGUgdXNlciBzb21lIGZyZWVkb20gaW4gZm9ybWF0dGluZyB0aGUg
UHVtcCBzb3VyY2UKK2NvZGUsIFB1bXAgaWdub3JlcyBhIG5ldy1saW5lIGNoYXJhY3RlciBpZiBp
dCdzIHJpZ2h0IGFmdGVyIGAkZm9yIGZvb2AKK29yIG5leHQgdG8gYFtbYCBvciBgXV1gLiBXaXRo
b3V0IHRoaXMgcnVsZSB5b3UnbGwgb2Z0ZW4gYmUgZm9yY2VkIHRvIHdyaXRlCit2ZXJ5IGxvbmcg
bGluZXMgdG8gZ2V0IHRoZSBkZXNpcmVkIG91dHB1dC4gVGhlcmVmb3JlIHNvbWV0aW1lcyB5b3Ug
bWF5CituZWVkIHRvIGluc2VydCBhbiBleHRyYSBuZXctbGluZSBpbiBzdWNoIHBsYWNlcyBmb3Ig
YSBuZXctbGluZSB0byBzaG93Cit1cCBpbiB5b3VyIG91dHB1dC4KKworIyMgR3JhbW1hciAjIwor
CitgYGAKK2NvZGUgOjo9IGF0b21pY19jb2RlKgorYXRvbWljX2NvZGUgOjo9ICR2YXIgaWQgPSBl
eHAKKyAgICB8ICR2YXIgaWQgPSBbWyBjb2RlIF1dCisgICAgfCAkcmFuZ2UgaWQgZXhwLi5leHAK
KyAgICB8ICRmb3IgaWQgc2VwIFtbIGNvZGUgXV0KKyAgICB8ICQoJCkKKyAgICB8ICRpZAorICAg
IHwgJChleHApCisgICAgfCAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2gKKyAgICB8IFtb
IGNvZGUgXV0KKyAgICB8IGNwcF9jb2RlCitzZXAgOjo9IGNwcF9jb2RlIHwgZW1wdHlfc3RyaW5n
CitlbHNlX2JyYW5jaCA6Oj0gJGVsc2UgW1sgY29kZSBdXQorICAgIHwgJGVsaWYgZXhwIFtbIGNv
ZGUgXV0gZWxzZV9icmFuY2gKKyAgICB8IGVtcHR5X3N0cmluZworZXhwIDo6PSBzaW1wbGVfZXhw
cmVzc2lvbl9pbl9QeXRob25fc3ludGF4CitgYGAKKworIyMgQ29kZSAjIworCitZb3UgY2FuIGZp
bmQgdGhlIHNvdXJjZSBjb2RlIG9mIFB1bXAgaW4gW3NjcmlwdHMvcHVtcC5weV0oLi4vc2NyaXB0
cy9wdW1wLnB5KS4gSXQgaXMgc3RpbGwKK3ZlcnkgdW5wb2xpc2hlZCBhbmQgbGFja3MgYXV0b21h
dGVkIHRlc3RzLCBhbHRob3VnaCBpdCBoYXMgYmVlbgorc3VjY2Vzc2Z1bGx5IHVzZWQgbWFueSB0
aW1lcy4gSWYgeW91IGZpbmQgYSBjaGFuY2UgdG8gdXNlIGl0IGluIHlvdXIKK3Byb2plY3QsIHBs
ZWFzZSBsZXQgdXMga25vdyB3aGF0IHlvdSB0aGluayEgIFdlIGFsc28gd2VsY29tZSBoZWxwIG9u
CitpbXByb3ZpbmcgUHVtcC4KKworIyMgUmVhbCBFeGFtcGxlcyAjIworCitZb3UgY2FuIGZpbmQg
cmVhbC13b3JsZCBhcHBsaWNhdGlvbnMgb2YgUHVtcCBpbiBbR29vZ2xlIFRlc3RdKGh0dHA6Ly93
d3cuZ29vZ2xlLmNvbS9jb2Rlc2VhcmNoP3E9ZmlsZSUzQVwucHVtcCUyNCtwYWNrYWdlJTNBaHR0
cCUzQSUyRiUyRmdvb2dsZXRlc3RcLmdvb2dsZWNvZGVcLmNvbSkgYW5kIFtHb29nbGUgTW9ja10o
aHR0cDovL3d3dy5nb29nbGUuY29tL2NvZGVzZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3BhY2th
Z2UlM0FodHRwJTNBJTJGJTJGZ29vZ2xlbW9ja1wuZ29vZ2xlY29kZVwuY29tKS4gIFRoZSBzb3Vy
Y2UgZmlsZSBgZm9vLmgucHVtcGAgZ2VuZXJhdGVzIGBmb28uaGAuCisKKyMjIFRpcHMgIyMKKwor
ICAqIElmIGEgbWV0YSB2YXJpYWJsZSBpcyBmb2xsb3dlZCBieSBhIGxldHRlciBvciBkaWdpdCwg
eW91IGNhbiBzZXBhcmF0ZSB0aGVtIHVzaW5nIGBbW11dYCwgd2hpY2ggaW5zZXJ0cyBhbiBlbXB0
eSBzdHJpbmcuIEZvciBleGFtcGxlIGBGb28kaltbXV1IZWxwZXJgIGdlbmVyYXRlIGBGb28xSGVs
cGVyYCB3aGVuIGBqYCBpcyAxLgorICAqIFRvIGF2b2lkIGV4dHJhLWxvbmcgUHVtcCBzb3VyY2Ug
bGluZXMsIHlvdSBjYW4gYnJlYWsgYSBsaW5lIGFueXdoZXJlIHlvdSB3YW50IGJ5IGluc2VydGlu
ZyBgW1tdXWAgZm9sbG93ZWQgYnkgYSBuZXcgbGluZS4gU2luY2UgYW55IG5ldy1saW5lIGNoYXJh
Y3RlciBuZXh0IHRvIGBbW2Agb3IgYF1dYCBpcyBpZ25vcmVkLCB0aGUgZ2VuZXJhdGVkIGNvZGUg
d29uJ3QgY29udGFpbiB0aGlzIG5ldyBsaW5lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvZG9jcy9TYW1wbGVzLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9T
YW1wbGVzLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyMWQyMDA1NjczNTQ1N2Y2ZjQ5YWVjYzYxMjE5ZGFkMjI2
MTJiZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1Nh
bXBsZXMubWQKQEAgLTAsMCArMSwxNCBAQAorSWYgeW91J3JlIGxpa2UgdXMsIHlvdSdkIGxpa2Ug
dG8gbG9vayBhdCBzb21lIEdvb2dsZSBUZXN0IHNhbXBsZSBjb2RlLiAgVGhlCitbc2FtcGxlcyBm
b2xkZXJdKC4uL3NhbXBsZXMpIGhhcyBhIG51bWJlciBvZiB3ZWxsLWNvbW1lbnRlZCBzYW1wbGVz
IHNob3dpbmcgaG93IHRvIHVzZSBhCit2YXJpZXR5IG9mIEdvb2dsZSBUZXN0IGZlYXR1cmVzLgor
CisgICogW1NhbXBsZSAjMV0oLi4vc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjKSBzaG93cyB0
aGUgYmFzaWMgc3RlcHMgb2YgdXNpbmcgR29vZ2xlIFRlc3QgdG8gdGVzdCBDKysgZnVuY3Rpb25z
LgorICAqIFtTYW1wbGUgIzJdKC4uL3NhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYykgc2hvd3Mg
YSBtb3JlIGNvbXBsZXggdW5pdCB0ZXN0IGZvciBhIGNsYXNzIHdpdGggbXVsdGlwbGUgbWVtYmVy
IGZ1bmN0aW9ucy4KKyAgKiBbU2FtcGxlICMzXSguLi9zYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3Qu
Y2MpIHVzZXMgYSB0ZXN0IGZpeHR1cmUuCisgICogW1NhbXBsZSAjNF0oLi4vc2FtcGxlcy9zYW1w
bGU0X3VuaXR0ZXN0LmNjKSBpcyBhbm90aGVyIGJhc2ljIGV4YW1wbGUgb2YgdXNpbmcgR29vZ2xl
IFRlc3QuCisgICogW1NhbXBsZSAjNV0oLi4vc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjKSB0
ZWFjaGVzIGhvdyB0byByZXVzZSBhIHRlc3QgZml4dHVyZSBpbiBtdWx0aXBsZSB0ZXN0IGNhc2Vz
IGJ5IGRlcml2aW5nIHN1Yi1maXh0dXJlcyBmcm9tIGl0LgorICAqIFtTYW1wbGUgIzZdKC4uL3Nh
bXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYykgZGVtb25zdHJhdGVzIHR5cGUtcGFyYW1ldGVyaXpl
ZCB0ZXN0cy4KKyAgKiBbU2FtcGxlICM3XSguLi9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2Mp
IHRlYWNoZXMgdGhlIGJhc2ljcyBvZiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorICAqIFtT
YW1wbGUgIzhdKC4uL3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYykgc2hvd3MgdXNpbmcgYENv
bWJpbmUoKWAgaW4gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKyAgKiBbU2FtcGxlICM5XSgu
Li9zYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MpIHNob3dzIHVzZSBvZiB0aGUgbGlzdGVuZXIg
QVBJIHRvIG1vZGlmeSBHb29nbGUgVGVzdCdzIGNvbnNvbGUgb3V0cHV0IGFuZCB0aGUgdXNlIG9m
IGl0cyByZWZsZWN0aW9uIEFQSSB0byBpbnNwZWN0IHRlc3QgcmVzdWx0cy4KKyAgKiBbU2FtcGxl
ICMxMF0oLi4vc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYykgc2hvd3MgdXNlIG9mIHRoZSBs
aXN0ZW5lciBBUEkgdG8gaW1wbGVtZW50IGEgcHJpbWl0aXZlIG1lbW9yeSBsZWFrIGNoZWNrZXIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzVfQWR2YW5jZWRH
dWlkZS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfNV9BZHZhbmNlZEd1aWRl
Lm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM0ZTE5YzI2ZmRmZjIxOWE1ZDgzOTU5Zjc1ZDMxNjE4OTUxMGIwNDUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzVfQWR2
YW5jZWRHdWlkZS5tZApAQCAtMCwwICsxLDIwOTYgQEAKKworCitOb3cgdGhhdCB5b3UgaGF2ZSBy
ZWFkIFtQcmltZXJdKFYxXzVfUHJpbWVyLm1kKSBhbmQgbGVhcm5lZCBob3cgdG8gd3JpdGUgdGVz
dHMKK3VzaW5nIEdvb2dsZSBUZXN0LCBpdCdzIHRpbWUgdG8gbGVhcm4gc29tZSBuZXcgdHJpY2tz
LiBUaGlzIGRvY3VtZW50Cit3aWxsIHNob3cgeW91IG1vcmUgYXNzZXJ0aW9ucyBhcyB3ZWxsIGFz
IGhvdyB0byBjb25zdHJ1Y3QgY29tcGxleAorZmFpbHVyZSBtZXNzYWdlcywgcHJvcGFnYXRlIGZh
dGFsIGZhaWx1cmVzLCByZXVzZSBhbmQgc3BlZWQgdXAgeW91cgordGVzdCBmaXh0dXJlcywgYW5k
IHVzZSB2YXJpb3VzIGZsYWdzIHdpdGggeW91ciB0ZXN0cy4KKworIyBNb3JlIEFzc2VydGlvbnMg
IworCitUaGlzIHNlY3Rpb24gY292ZXJzIHNvbWUgbGVzcyBmcmVxdWVudGx5IHVzZWQsIGJ1dCBz
dGlsbCBzaWduaWZpY2FudCwKK2Fzc2VydGlvbnMuCisKKyMjIEV4cGxpY2l0IFN1Y2Nlc3MgYW5k
IEZhaWx1cmUgIyMKKworVGhlc2UgdGhyZWUgYXNzZXJ0aW9ucyBkbyBub3QgYWN0dWFsbHkgdGVz
dCBhIHZhbHVlIG9yIGV4cHJlc3Npb24uIEluc3RlYWQsCit0aGV5IGdlbmVyYXRlIGEgc3VjY2Vz
cyBvciBmYWlsdXJlIGRpcmVjdGx5LiBMaWtlIHRoZSBtYWNyb3MgdGhhdCBhY3R1YWxseQorcGVy
Zm9ybSBhIHRlc3QsIHlvdSBtYXkgc3RyZWFtIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSBpbnRv
IHRoZSB0aGVtLgorCit8IGBTVUNDRUVEKCk7YCB8Cit8Oi0tLS0tLS0tLS0tLS18CisKK0dlbmVy
YXRlcyBhIHN1Y2Nlc3MuIFRoaXMgZG9lcyBOT1QgbWFrZSB0aGUgb3ZlcmFsbCB0ZXN0IHN1Y2Nl
ZWQuIEEgdGVzdCBpcworY29uc2lkZXJlZCBzdWNjZXNzZnVsIG9ubHkgaWYgbm9uZSBvZiBpdHMg
YXNzZXJ0aW9ucyBmYWlsIGR1cmluZyBpdHMgZXhlY3V0aW9uLgorCitOb3RlOiBgU1VDQ0VFRCgp
YCBpcyBwdXJlbHkgZG9jdW1lbnRhcnkgYW5kIGN1cnJlbnRseSBkb2Vzbid0IGdlbmVyYXRlIGFu
eQordXNlci12aXNpYmxlIG91dHB1dC4gSG93ZXZlciwgd2UgbWF5IGFkZCBgU1VDQ0VFRCgpYCBt
ZXNzYWdlcyB0byBHb29nbGUgVGVzdCdzCitvdXRwdXQgaW4gdGhlIGZ1dHVyZS4KKworfCBgRkFJ
TCgpO2AgIHwgYEFERF9GQUlMVVJFKCk7YCB8Cit8Oi0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0t
LS0tLXwKKworYEZBSUwqYCBnZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlIHdoaWxlIGBBRERfRkFJ
TFVSRSpgIGdlbmVyYXRlcyBhIG5vbmZhdGFsCitmYWlsdXJlLiBUaGVzZSBhcmUgdXNlZnVsIHdo
ZW4gY29udHJvbCBmbG93LCByYXRoZXIgdGhhbiBhIEJvb2xlYW4gZXhwcmVzc2lvbiwKK2RldGVy
ZW1pbmVzIHRoZSB0ZXN0J3Mgc3VjY2VzcyBvciBmYWlsdXJlLiBGb3IgZXhhbXBsZSwgeW91IG1p
Z2h0IHdhbnQgdG8gd3JpdGUKK3NvbWV0aGluZyBsaWtlOgorCitgYGAKK3N3aXRjaChleHByZXNz
aW9uKSB7CisgIGNhc2UgMTogLi4uIHNvbWUgY2hlY2tzIC4uLgorICBjYXNlIDI6IC4uLiBzb21l
IG90aGVyIGNoZWNrcworICAuLi4KKyAgZGVmYXVsdDogRkFJTCgpIDw8ICJXZSBzaG91bGRuJ3Qg
Z2V0IGhlcmUuIjsKK30KK2BgYAorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1h
Yy4KKworIyMgRXhjZXB0aW9uIEFzc2VydGlvbnMgIyMKKworVGhlc2UgYXJlIGZvciB2ZXJpZnlp
bmcgdGhhdCBhIHBpZWNlIG9mIGNvZGUgdGhyb3dzIChvciBkb2VzIG5vdAordGhyb3cpIGFuIGV4
Y2VwdGlvbiBvZiB0aGUgZ2l2ZW4gdHlwZToKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipO
b25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9U
SFJPVyhgX3N0YXRlbWVudF8sIF9leGNlcHRpb25cX3R5cGVfYCk7YCAgfCBgRVhQRUNUX1RIUk9X
KGBfc3RhdGVtZW50XywgX2V4Y2VwdGlvblxfdHlwZV9gKTtgICB8IF9zdGF0ZW1lbnRfIHRocm93
cyBhbiBleGNlcHRpb24gb2YgdGhlIGdpdmVuIHR5cGUgIHwKK3wgYEFTU0VSVF9BTllfVEhST1co
YF9zdGF0ZW1lbnRfYCk7YCAgICAgICAgICAgICAgICB8IGBFWFBFQ1RfQU5ZX1RIUk9XKGBfc3Rh
dGVtZW50X2ApO2AgICAgICAgICAgICAgICAgfCBfc3RhdGVtZW50XyB0aHJvd3MgYW4gZXhjZXB0
aW9uIG9mIGFueSB0eXBlICAgICAgICB8Cit8IGBBU1NFUlRfTk9fVEhST1coYF9zdGF0ZW1lbnRf
YCk7YCAgICAgICAgICAgICAgICAgfCBgRVhQRUNUX05PX1RIUk9XKGBfc3RhdGVtZW50X2ApO2Ag
ICAgICAgICAgICAgICAgIHwgX3N0YXRlbWVudF8gZG9lc24ndCB0aHJvdyBhbnkgZXhjZXB0aW9u
ICAgICAgICAgICAgfAorCitFeGFtcGxlczoKKworYGBgCitBU1NFUlRfVEhST1coRm9vKDUpLCBi
YXJfZXhjZXB0aW9uKTsKKworRVhQRUNUX05PX1RIUk9XKHsKKyAgaW50IG4gPSA1OworICBCYXIo
Jm4pOworfSk7CitgYGAKKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWM7IHNp
bmNlIHZlcnNpb24gMS4xLjAuCisKKyMjIFByZWRpY2F0ZSBBc3NlcnRpb25zIGZvciBCZXR0ZXIg
RXJyb3IgTWVzc2FnZXMgIyMKKworRXZlbiB0aG91Z2ggR29vZ2xlIFRlc3QgaGFzIGEgcmljaCBz
ZXQgb2YgYXNzZXJ0aW9ucywgdGhleSBjYW4gbmV2ZXIgYmUKK2NvbXBsZXRlLCBhcyBpdCdzIGlt
cG9zc2libGUgKG5vciBhIGdvb2QgaWRlYSkgdG8gYW50aWNpcGF0ZSBhbGwgdGhlIHNjZW5hcmlv
cworYSB1c2VyIG1pZ2h0IHJ1biBpbnRvLiBUaGVyZWZvcmUsIHNvbWV0aW1lcyBhIHVzZXIgaGFz
IHRvIHVzZSBgRVhQRUNUX1RSVUUoKWAKK3RvIGNoZWNrIGEgY29tcGxleCBleHByZXNzaW9uLCBm
b3IgbGFjayBvZiBhIGJldHRlciBtYWNyby4gVGhpcyBoYXMgdGhlIHByb2JsZW0KK29mIG5vdCBz
aG93aW5nIHlvdSB0aGUgdmFsdWVzIG9mIHRoZSBwYXJ0cyBvZiB0aGUgZXhwcmVzc2lvbiwgbWFr
aW5nIGl0IGhhcmQgdG8KK3VuZGVyc3RhbmQgd2hhdCB3ZW50IHdyb25nLiBBcyBhIHdvcmthcm91
bmQsIHNvbWUgdXNlcnMgY2hvb3NlIHRvIGNvbnN0cnVjdCB0aGUKK2ZhaWx1cmUgbWVzc2FnZSBi
eSB0aGVtc2VsdmVzLCBzdHJlYW1pbmcgaXQgaW50byBgRVhQRUNUX1RSVUUoKWAuIEhvd2V2ZXIs
IHRoaXMKK2lzIGF3a3dhcmQgZXNwZWNpYWxseSB3aGVuIHRoZSBleHByZXNzaW9uIGhhcyBzaWRl
LWVmZmVjdHMgb3IgaXMgZXhwZW5zaXZlIHRvCitldmFsdWF0ZS4KKworR29vZ2xlIFRlc3QgZ2l2
ZXMgeW91IHRocmVlIGRpZmZlcmVudCBvcHRpb25zIHRvIHNvbHZlIHRoaXMgcHJvYmxlbToKKwor
IyMjIFVzaW5nIGFuIEV4aXN0aW5nIEJvb2xlYW4gRnVuY3Rpb24gIyMjCisKK0lmIHlvdSBhbHJl
YWR5IGhhdmUgYSBmdW5jdGlvbiBvciBhIGZ1bmN0b3IgdGhhdCByZXR1cm5zIGBib29sYCAob3Ig
YSB0eXBlCit0aGF0IGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBgYm9vbGApLCB5b3Ug
Y2FuIHVzZSBpdCBpbiBhIF9wcmVkaWNhdGUKK2Fzc2VydGlvbl8gdG8gZ2V0IHRoZSBmdW5jdGlv
biBhcmd1bWVudHMgcHJpbnRlZCBmb3IgZnJlZToKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwg
KipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0t
LS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VS
VF9QUkVEMShgX3ByZWQxLCB2YWwxX2ApO2AgICAgICAgfCBgRVhQRUNUX1BSRUQxKGBfcHJlZDEs
IHZhbDFfYCk7YCB8IF9wcmVkMSh2YWwxKV8gcmV0dXJucyB0cnVlIHwKK3wgYEFTU0VSVF9QUkVE
MihgX3ByZWQyLCB2YWwxLCB2YWwyX2ApO2AgfCBgRVhQRUNUX1BSRUQyKGBfcHJlZDIsIHZhbDEs
IHZhbDJfYCk7YCB8ICBfcHJlZDIodmFsMSwgdmFsMilfIHJldHVybnMgdHJ1ZSB8Cit8ICAuLi4g
ICAgICAgICAgICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgIHwgLi4uICAgICAgICAgIHwK
KworSW4gdGhlIGFib3ZlLCBfcHJlZG5fIGlzIGFuIF9uXy1hcnkgcHJlZGljYXRlIGZ1bmN0aW9u
IG9yIGZ1bmN0b3IsIHdoZXJlCitfdmFsMV8sIF92YWwyXywgLi4uLCBhbmQgX3ZhbG5fIGFyZSBp
dHMgYXJndW1lbnRzLiBUaGUgYXNzZXJ0aW9uIHN1Y2NlZWRzCitpZiB0aGUgcHJlZGljYXRlIHJl
dHVybnMgYHRydWVgIHdoZW4gYXBwbGllZCB0byB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBhbmQgZmFp
bHMKK290aGVyd2lzZS4gV2hlbiB0aGUgYXNzZXJ0aW9uIGZhaWxzLCBpdCBwcmludHMgdGhlIHZh
bHVlIG9mIGVhY2ggYXJndW1lbnQuIEluCitlaXRoZXIgY2FzZSwgdGhlIGFyZ3VtZW50cyBhcmUg
ZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4KKworSGVyZSdzIGFuIGV4YW1wbGUuIEdpdmVuCisKK2Bg
YAorLy8gUmV0dXJucyB0cnVlIGlmZiBtIGFuZCBuIGhhdmUgbm8gY29tbW9uIGRpdmlzb3JzIGV4
Y2VwdCAxLgorYm9vbCBNdXR1YWxseVByaW1lKGludCBtLCBpbnQgbikgeyAuLi4gfQorY29uc3Qg
aW50IGEgPSAzOworY29uc3QgaW50IGIgPSA0OworY29uc3QgaW50IGMgPSAxMDsKK2BgYAorCit0
aGUgYXNzZXJ0aW9uIGBFWFBFQ1RfUFJFRDIoTXV0dWFsbHlQcmltZSwgYSwgYik7YCB3aWxsIHN1
Y2NlZWQsIHdoaWxlIHRoZQorYXNzZXJ0aW9uIGBFWFBFQ1RfUFJFRDIoTXV0dWFsbHlQcmltZSwg
YiwgYyk7YCB3aWxsIGZhaWwgd2l0aCB0aGUgbWVzc2FnZQorCis8cHJlPgorIU11dHVhbGx5UHJp
bWUoYiwgYykgaXMgZmFsc2UsIHdoZXJlPGJyPgorYiBpcyA0PGJyPgorYyBpcyAxMDxicj4KKzwv
cHJlPgorCisqKk5vdGVzOioqCisKKyAgMS4gSWYgeW91IHNlZSBhIGNvbXBpbGVyIGVycm9yICJu
byBtYXRjaGluZyBmdW5jdGlvbiB0byBjYWxsIiB3aGVuIHVzaW5nIGBBU1NFUlRfUFJFRCpgIG9y
IGBFWFBFQ1RfUFJFRCpgLCBwbGVhc2Ugc2VlIFt0aGlzXShWMV81X0ZBUS5tZCN0aGUtY29tcGls
ZXItY29tcGxhaW5zLWFib3V0LXVuZGVmaW5lZC1yZWZlcmVuY2VzLXRvLXNvbWUtc3RhdGljLWNv
bnN0LW1lbWJlci12YXJpYWJsZXMtYnV0LWktZGlkLWRlZmluZS10aGVtLWluLXRoZS1jbGFzcy1i
b2R5LXdoYXRzLXdyb25nKSBmb3IgaG93IHRvIHJlc29sdmUgaXQuCisgIDEuIEN1cnJlbnRseSB3
ZSBvbmx5IHByb3ZpZGUgcHJlZGljYXRlIGFzc2VydGlvbnMgb2YgYXJpdHkgPD0gNS4gSWYgeW91
IG5lZWQgYSBoaWdoZXItYXJpdHkgYXNzZXJ0aW9uLCBsZXQgdXMga25vdy4KKworX0F2YWlsYWJp
bGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMKKworIyMjIFVzaW5nIGEgRnVuY3Rpb24gVGhhdCBS
ZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCAjIyMKKworV2hpbGUgYEVYUEVDVF9QUkVEKigpYCBh
bmQgZnJpZW5kcyBhcmUgaGFuZHkgZm9yIGEgcXVpY2sgam9iLCB0aGUKK3N5bnRheCBpcyBub3Qg
c2F0aXNmYWN0b3J5OiB5b3UgaGF2ZSB0byB1c2UgZGlmZmVyZW50IG1hY3JvcyBmb3IKK2RpZmZl
cmVudCBhcml0aWVzLCBhbmQgaXQgZmVlbHMgbW9yZSBsaWtlIExpc3AgdGhhbiBDKysuICBUaGUK
K2A6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdGAgY2xhc3Mgc29sdmVzIHRoaXMgcHJvYmxlbS4K
KworQW4gYEFzc2VydGlvblJlc3VsdGAgb2JqZWN0IHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBh
biBhc3NlcnRpb24KKyh3aGV0aGVyIGl0J3MgYSBzdWNjZXNzIG9yIGEgZmFpbHVyZSwgYW5kIGFu
IGFzc29jaWF0ZWQgbWVzc2FnZSkuICBZb3UKK2NhbiBjcmVhdGUgYW4gYEFzc2VydGlvblJlc3Vs
dGAgdXNpbmcgb25lIG9mIHRoZXNlIGZhY3RvcnkKK2Z1bmN0aW9uczoKKworYGBgCituYW1lc3Bh
Y2UgdGVzdGluZyB7CisKKy8vIFJldHVybnMgYW4gQXNzZXJ0aW9uUmVzdWx0IG9iamVjdCB0byBp
bmRpY2F0ZSB0aGF0IGFuIGFzc2VydGlvbiBoYXMKKy8vIHN1Y2NlZWRlZC4KK0Fzc2VydGlvblJl
c3VsdCBBc3NlcnRpb25TdWNjZXNzKCk7CisKKy8vIFJldHVybnMgYW4gQXNzZXJ0aW9uUmVzdWx0
IG9iamVjdCB0byBpbmRpY2F0ZSB0aGF0IGFuIGFzc2VydGlvbiBoYXMKKy8vIGZhaWxlZC4KK0Fz
c2VydGlvblJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKCk7CisKK30KK2BgYAorCitZb3UgY2FuIHRo
ZW4gdXNlIHRoZSBgPDxgIG9wZXJhdG9yIHRvIHN0cmVhbSBtZXNzYWdlcyB0byB0aGUKK2BBc3Nl
cnRpb25SZXN1bHRgIG9iamVjdC4KKworVG8gcHJvdmlkZSBtb3JlIHJlYWRhYmxlIG1lc3NhZ2Vz
IGluIEJvb2xlYW4gYXNzZXJ0aW9ucworKGUuZy4gYEVYUEVDVF9UUlVFKClgKSwgd3JpdGUgYSBw
cmVkaWNhdGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zCitgQXNzZXJ0aW9uUmVzdWx0YCBpbnN0ZWFk
IG9mIGBib29sYC4gRm9yIGV4YW1wbGUsIGlmIHlvdSBkZWZpbmUKK2BJc0V2ZW4oKWAgYXM6CisK
K2BgYAorOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgSXNFdmVuKGludCBuKSB7CisgIGlmICgo
biAlIDIpID09IDApCisgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwor
ICBlbHNlCisgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG4gPDwg
IiBpcyBvZGQiOworfQorYGBgCisKK2luc3RlYWQgb2Y6CisKK2BgYAorYm9vbCBJc0V2ZW4oaW50
IG4pIHsKKyAgcmV0dXJuIChuICUgMikgPT0gMDsKK30KK2BgYAorCit0aGUgZmFpbGVkIGFzc2Vy
dGlvbiBgRVhQRUNUX1RSVUUoSXNFdmVuKEZpYig0KSkpYCB3aWxsIHByaW50OgorCis8cHJlPgor
VmFsdWUgb2Y6ICFJc0V2ZW4oRmliKDQpKTxicj4KK0FjdHVhbDogZmFsc2UgKCozIGlzIG9kZCop
PGJyPgorRXhwZWN0ZWQ6IHRydWU8YnI+Cis8L3ByZT4KKworaW5zdGVhZCBvZiBhIG1vcmUgb3Bh
cXVlCisKKzxwcmU+CitWYWx1ZSBvZjogIUlzRXZlbihGaWIoNCkpPGJyPgorQWN0dWFsOiBmYWxz
ZTxicj4KK0V4cGVjdGVkOiB0cnVlPGJyPgorPC9wcmU+CisKK0lmIHlvdSB3YW50IGluZm9ybWF0
aXZlIG1lc3NhZ2VzIGluIGBFWFBFQ1RfRkFMU0VgIGFuZCBgQVNTRVJUX0ZBTFNFYAorYXMgd2Vs
bCwgYW5kIGFyZSBmaW5lIHdpdGggbWFraW5nIHRoZSBwcmVkaWNhdGUgc2xvd2VyIGluIHRoZSBz
dWNjZXNzCitjYXNlLCB5b3UgY2FuIHN1cHBseSBhIHN1Y2Nlc3MgbWVzc2FnZToKKworYGBgCis6
OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBJc0V2ZW4oaW50IG4pIHsKKyAgaWYgKChuICUgMikg
PT0gMCkKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCkgPDwgbiA8PCAi
IGlzIGV2ZW4iOworICBlbHNlCisgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVy
ZSgpIDw8IG4gPDwgIiBpcyBvZGQiOworfQorYGBgCisKK1RoZW4gdGhlIHN0YXRlbWVudCBgRVhQ
RUNUX0ZBTFNFKElzRXZlbihGaWIoNikpKWAgd2lsbCBwcmludAorCis8cHJlPgorVmFsdWUgb2Y6
ICFJc0V2ZW4oRmliKDYpKTxicj4KK0FjdHVhbDogdHJ1ZSAoOCBpcyBldmVuKTxicj4KK0V4cGVj
dGVkOiBmYWxzZTxicj4KKzwvcHJlPgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3Ms
IE1hYzsgc2luY2UgdmVyc2lvbiAxLjQuMS4KKworIyMjIFVzaW5nIGEgUHJlZGljYXRlLUZvcm1h
dHRlciAjIyMKKworSWYgeW91IGZpbmQgdGhlIGRlZmF1bHQgbWVzc2FnZSBnZW5lcmF0ZWQgYnkg
YChBU1NFUlR8RVhQRUNUKV9QUkVEKmAgYW5kCitgKEFTU0VSVHxFWFBFQ1QpXyhUUlVFfEZBTFNF
KWAgdW5zYXRpc2ZhY3RvcnksIG9yIHNvbWUgYXJndW1lbnRzIHRvIHlvdXIKK3ByZWRpY2F0ZSBk
byBub3Qgc3VwcG9ydCBzdHJlYW1pbmcgdG8gYG9zdHJlYW1gLCB5b3UgY2FuIGluc3RlYWQgdXNl
IHRoZQorZm9sbG93aW5nIF9wcmVkaWNhdGUtZm9ybWF0dGVyIGFzc2VydGlvbnNfIHRvIF9mdWxs
eV8gY3VzdG9taXplIGhvdyB0aGUKK21lc3NhZ2UgaXMgZm9ybWF0dGVkOgorCit8ICoqRmF0YWwg
YXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6
LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tfAorfCBgQVNTRVJUX1BSRURfRk9STUFUMShgX3ByZWRcX2Zvcm1hdDEsIHZhbDFfYCk7YCAg
ICAgICAgfCBgRVhQRUNUX1BSRURfRk9STUFUMShgX3ByZWRcX2Zvcm1hdDEsIHZhbDFfYCk7IHwg
X3ByZWRcX2Zvcm1hdDEodmFsMSlfIGlzIHN1Y2Nlc3NmdWwgfAorfCBgQVNTRVJUX1BSRURfRk9S
TUFUMihgX3ByZWRcX2Zvcm1hdDIsIHZhbDEsIHZhbDJfYCk7YCB8IGBFWFBFQ1RfUFJFRF9GT1JN
QVQyKGBfcHJlZFxfZm9ybWF0MiwgdmFsMSwgdmFsMl9gKTtgIHwgX3ByZWRcX2Zvcm1hdDIodmFs
MSwgdmFsMilfIGlzIHN1Y2Nlc3NmdWwgfAorfCBgLi4uYCAgICAgICAgICAgICAgIHwgYC4uLmAg
ICAgICAgICAgICAgICAgICB8IGAuLi5gICAgICAgICB8CisKK1RoZSBkaWZmZXJlbmNlIGJldHdl
ZW4gdGhpcyBhbmQgdGhlIHByZXZpb3VzIHR3byBncm91cHMgb2YgbWFjcm9zIGlzIHRoYXQgaW5z
dGVhZCBvZgorYSBwcmVkaWNhdGUsIGAoQVNTRVJUfEVYUEVDVClfUFJFRF9GT1JNQVQqYCB0YWtl
IGEgX3ByZWRpY2F0ZS1mb3JtYXR0ZXJfCisoX3ByZWRcX2Zvcm1hdG5fKSwgd2hpY2ggaXMgYSBm
dW5jdGlvbiBvciBmdW5jdG9yIHdpdGggdGhlIHNpZ25hdHVyZToKKworYDo6dGVzdGluZzo6QXNz
ZXJ0aW9uUmVzdWx0IFByZWRpY2F0ZUZvcm1hdHRlcm4oY29uc3QgY2hhciogYF9leHByMV9gLCBj
b25zdCBjaGFyKiBgX2V4cHIyX2AsIC4uLiBjb25zdCBjaGFyKiBgX2V4cHJuX2AsIFQxIGBfdmFs
MV9gLCBUMiBgX3ZhbDJfYCwgLi4uIFRuIGBfdmFsbl9gKTtgCisKK3doZXJlIF92YWwxXywgX3Zh
bDJfLCAuLi4sIGFuZCBfdmFsbl8gYXJlIHRoZSB2YWx1ZXMgb2YgdGhlIHByZWRpY2F0ZQorYXJn
dW1lbnRzLCBhbmQgX2V4cHIxXywgX2V4cHIyXywgLi4uLCBhbmQgX2V4cHJuXyBhcmUgdGhlIGNv
cnJlc3BvbmRpbmcKK2V4cHJlc3Npb25zIGFzIHRoZXkgYXBwZWFyIGluIHRoZSBzb3VyY2UgY29k
ZS4gVGhlIHR5cGVzIGBUMWAsIGBUMmAsIC4uLiwgYW5kCitgVG5gIGNhbiBiZSBlaXRoZXIgdmFs
dWUgdHlwZXMgb3IgcmVmZXJlbmNlIHR5cGVzLiBGb3IgZXhhbXBsZSwgaWYgYW4KK2FyZ3VtZW50
IGhhcyB0eXBlIGBGb29gLCB5b3UgY2FuIGRlY2xhcmUgaXQgYXMgZWl0aGVyIGBGb29gIG9yIGBj
b25zdCBGb28mYCwKK3doaWNoZXZlciBpcyBhcHByb3ByaWF0ZS4KKworQSBwcmVkaWNhdGUtZm9y
bWF0dGVyIHJldHVybnMgYSBgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHRgIG9iamVjdCB0byBp
bmRpY2F0ZQord2hldGhlciB0aGUgYXNzZXJ0aW9uIGhhcyBzdWNjZWVkZWQgb3Igbm90LiBUaGUg
b25seSB3YXkgdG8gY3JlYXRlIHN1Y2ggYW4KK29iamVjdCBpcyB0byBjYWxsIG9uZSBvZiB0aGVz
ZSBmYWN0b3J5IGZ1bmN0aW9uczoKKworQXMgYW4gZXhhbXBsZSwgbGV0J3MgaW1wcm92ZSB0aGUg
ZmFpbHVyZSBtZXNzYWdlIGluIHRoZSBwcmV2aW91cyBleGFtcGxlLCB3aGljaCB1c2VzIGBFWFBF
Q1RfUFJFRDIoKWA6CisKK2BgYAorLy8gUmV0dXJucyB0aGUgc21hbGxlc3QgcHJpbWUgY29tbW9u
IGRpdmlzb3Igb2YgbSBhbmQgbiwKKy8vIG9yIDEgd2hlbiBtIGFuZCBuIGFyZSBtdXR1YWxseSBw
cmltZS4KK2ludCBTbWFsbGVzdFByaW1lQ29tbW9uRGl2aXNvcihpbnQgbSwgaW50IG4pIHsgLi4u
IH0KKworLy8gQSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZvciBhc3NlcnRpbmcgdGhhdCB0d28gaW50
ZWdlcnMgYXJlIG11dHVhbGx5IHByaW1lLgorOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgQXNz
ZXJ0TXV0dWFsbHlQcmltZShjb25zdCBjaGFyKiBtX2V4cHIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5fZXhwciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuKSB7CisgIGlmIChNdXR1
YWxseVByaW1lKG0sIG4pKQorICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3Mo
KTsKKworICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IG1f
ZXhwciA8PCAiIGFuZCAiIDw8IG5fZXhwciA8PCAiICgiIDw8IG0gPDwgIiBhbmQgIiA8PCBuCisg
ICAgICA8PCAiKSBhcmUgbm90IG11dHVhbGx5IHByaW1lLCAiIDw8ICJhcyB0aGV5IGhhdmUgYSBj
b21tb24gZGl2aXNvciAiCisgICAgICA8PCBTbWFsbGVzdFByaW1lQ29tbW9uRGl2aXNvcihtLCBu
KTsKK30KK2BgYAorCitXaXRoIHRoaXMgcHJlZGljYXRlLWZvcm1hdHRlciwgd2UgY2FuIHVzZQor
CitgYGAKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoQXNzZXJ0TXV0dWFsbHlQcmltZSwgYiwgYyk7Citg
YGAKKwordG8gZ2VuZXJhdGUgdGhlIG1lc3NhZ2UKKworPHByZT4KK2IgYW5kIGMgKDQgYW5kIDEw
KSBhcmUgbm90IG11dHVhbGx5IHByaW1lLCBhcyB0aGV5IGhhdmUgYSBjb21tb24gZGl2aXNvciAy
Ljxicj4KKzwvcHJlPgorCitBcyB5b3UgbWF5IGhhdmUgcmVhbGl6ZWQsIG1hbnkgb2YgdGhlIGFz
c2VydGlvbnMgd2UgaW50cm9kdWNlZCBlYXJsaWVyIGFyZQorc3BlY2lhbCBjYXNlcyBvZiBgKEVY
UEVDVHxBU1NFUlQpX1BSRURfRk9STUFUKmAuIEluIGZhY3QsIG1vc3Qgb2YgdGhlbSBhcmUKK2lu
ZGVlZCBkZWZpbmVkIHVzaW5nIGAoRVhQRUNUfEFTU0VSVClfUFJFRF9GT1JNQVQqYC4KKworX0F2
YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKworIyMgRmxvYXRpbmctUG9pbnQg
Q29tcGFyaXNvbiAjIworCitDb21wYXJpbmcgZmxvYXRpbmctcG9pbnQgbnVtYmVycyBpcyB0cmlj
a3kuIER1ZSB0byByb3VuZC1vZmYgZXJyb3JzLCBpdCBpcwordmVyeSB1bmxpa2VseSB0aGF0IHR3
byBmbG9hdGluZy1wb2ludHMgd2lsbCBtYXRjaCBleGFjdGx5LiBUaGVyZWZvcmUsCitgQVNTRVJU
X0VRYCAncyBuYWl2ZSBjb21wYXJpc29uIHVzdWFsbHkgZG9lc24ndCB3b3JrLiBBbmQgc2luY2Ug
ZmxvYXRpbmctcG9pbnRzCitjYW4gaGF2ZSBhIHdpZGUgdmFsdWUgcmFuZ2UsIG5vIHNpbmdsZSBm
aXhlZCBlcnJvciBib3VuZCB3b3Jrcy4gSXQncyBiZXR0ZXIgdG8KK2NvbXBhcmUgYnkgYSBmaXhl
ZCByZWxhdGl2ZSBlcnJvciBib3VuZCwgZXhjZXB0IGZvciB2YWx1ZXMgY2xvc2UgdG8gMCBkdWUg
dG8KK3RoZSBsb3NzIG9mIHByZWNpc2lvbiB0aGVyZS4KKworSW4gZ2VuZXJhbCwgZm9yIGZsb2F0
aW5nLXBvaW50IGNvbXBhcmlzb24gdG8gbWFrZSBzZW5zZSwgdGhlIHVzZXIgbmVlZHMgdG8KK2Nh
cmVmdWxseSBjaG9vc2UgdGhlIGVycm9yIGJvdW5kLiBJZiB0aGV5IGRvbid0IHdhbnQgb3IgY2Fy
ZSB0bywgY29tcGFyaW5nIGluCit0ZXJtcyBvZiBVbml0cyBpbiB0aGUgTGFzdCBQbGFjZSAoVUxQ
cykgaXMgYSBnb29kIGRlZmF1bHQsIGFuZCBHb29nbGUgVGVzdAorcHJvdmlkZXMgYXNzZXJ0aW9u
cyB0byBkbyB0aGlzLiBGdWxsIGRldGFpbHMgYWJvdXQgVUxQcyBhcmUgcXVpdGUgbG9uZzsgaWYg
eW91Cit3YW50IHRvIGxlYXJuIG1vcmUsIHNlZQorW3RoaXMgYXJ0aWNsZSBvbiBmbG9hdCBjb21w
YXJpc29uXShodHRwOi8vd3d3LmN5Z251cy1zb2Z0d2FyZS5jb20vcGFwZXJzL2NvbXBhcmluZ2Zs
b2F0cy9jb21wYXJpbmdmbG9hdHMuaHRtKS4KKworIyMjIEZsb2F0aW5nLVBvaW50IE1hY3JvcyAj
IyMKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoq
VmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9GTE9BVF9FUShgX2V4cGVjdGVkLCBhY3R1
YWxfYCk7YCAgfCBgRVhQRUNUX0ZMT0FUX0VRKGBfZXhwZWN0ZWQsIGFjdHVhbF9gKTtgIHwgdGhl
IHR3byBgZmxvYXRgIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsIHwKK3wgYEFTU0VSVF9ET1VCTEVf
RVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgfCBgRVhQRUNUX0RPVUJMRV9FUShgX2V4cGVjdGVk
LCBhY3R1YWxfYCk7YCB8IHRoZSB0d28gYGRvdWJsZWAgdmFsdWVzIGFyZSBhbG1vc3QgZXF1YWwg
fAorCitCeSAiYWxtb3N0IGVxdWFsIiwgd2UgbWVhbiB0aGUgdHdvIHZhbHVlcyBhcmUgd2l0aGlu
IDQgVUxQJ3MgZnJvbSBlYWNoCitvdGhlci4KKworVGhlIGZvbGxvd2luZyBhc3NlcnRpb25zIGFs
bG93IHlvdSB0byBjaG9vc2UgdGhlIGFjY2VwdGFibGUgZXJyb3IgYm91bmQ6CisKK3wgKipGYXRh
bCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAor
fDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS18Cit8IGBBU1NFUlRfTkVBUihgX3ZhbDEsIHZhbDIsIGFic1xfZXJyb3JfYCk7YCB8IGBF
WFBFQ1RfTkVBUmBfKHZhbDEsIHZhbDIsIGFic1xfZXJyb3JfYCk7YCB8IHRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gX3ZhbDFfIGFuZCBfdmFsMl8gZG9lc24ndCBleGNlZWQgdGhlIGdpdmVuIGFic29s
dXRlIGVycm9yIHwKKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMj
IyBGbG9hdGluZy1Qb2ludCBQcmVkaWNhdGUtRm9ybWF0IEZ1bmN0aW9ucyAjIyMKKworU29tZSBm
bG9hdGluZy1wb2ludCBvcGVyYXRpb25zIGFyZSB1c2VmdWwsIGJ1dCBub3QgdGhhdCBvZnRlbiB1
c2VkLiBJbiBvcmRlcgordG8gYXZvaWQgYW4gZXhwbG9zaW9uIG9mIG5ldyBtYWNyb3MsIHdlIHBy
b3ZpZGUgdGhlbSBhcyBwcmVkaWNhdGUtZm9ybWF0CitmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNl
ZCBpbiBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3JvcyAoZS5nLgorYEVYUEVDVF9QUkVEX0ZPUk1B
VDJgLCBldGMpLgorCitgYGAKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpGbG9hdExF
LCB2YWwxLCB2YWwyKTsKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpEb3VibGVMRSwg
dmFsMSwgdmFsMik7CitgYGAKKworVmVyaWZpZXMgdGhhdCBfdmFsMV8gaXMgbGVzcyB0aGFuLCBv
ciBhbG1vc3QgZXF1YWwgdG8sIF92YWwyXy4gWW91IGNhbgorcmVwbGFjZSBgRVhQRUNUX1BSRURf
Rk9STUFUMmAgaW4gdGhlIGFib3ZlIHRhYmxlIHdpdGggYEFTU0VSVF9QUkVEX0ZPUk1BVDJgLgor
CitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgV2luZG93cyBIUkVT
VUxUIGFzc2VydGlvbnMgIyMKKworVGhlc2UgYXNzZXJ0aW9ucyB0ZXN0IGZvciBgSFJFU1VMVGAg
c3VjY2VzcyBvciBmYWlsdXJlLgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFs
IGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX0hSRVNVTFRf
U1VDQ0VFREVEKGBfZXhwcmVzc2lvbl9gKTtgIHwgYEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChg
X2V4cHJlc3Npb25fYCk7YCB8IF9leHByZXNzaW9uXyBpcyBhIHN1Y2Nlc3MgYEhSRVNVTFRgIHwK
K3wgYEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChgX2V4cHJlc3Npb25fYCk7YCAgICB8IGBFWFBFQ1Rf
SFJFU1VMVF9GQUlMRUQoYF9leHByZXNzaW9uX2ApO2AgICAgfCBfZXhwcmVzc2lvbl8gaXMgYSBm
YWlsdXJlIGBIUkVTVUxUYCB8CisKK1RoZSBnZW5lcmF0ZWQgb3V0cHV0IGNvbnRhaW5zIHRoZSBo
dW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlCithc3NvY2lhdGVkIHdpdGggdGhlIGBIUkVTVUxU
YCBjb2RlIHJldHVybmVkIGJ5IF9leHByZXNzaW9uXy4KKworWW91IG1pZ2h0IHVzZSB0aGVtIGxp
a2UgdGhpczoKKworYGBgCitDQ29tUHRyIHNoZWxsOworQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVE
KHNoZWxsLkNvQ3JlYXRlSW5zdGFuY2UoTCJTaGVsbC5BcHBsaWNhdGlvbiIpKTsKK0NDb21WYXJp
YW50IGVtcHR5OworQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKHNoZWxsLT5TaGVsbEV4ZWN1dGUo
Q0NvbUJTVFIodXJsKSwgZW1wdHksIGVtcHR5LCBlbXB0eSwgZW1wdHkpKTsKK2BgYAorCitfQXZh
aWxhYmlsaXR5XzogV2luZG93cy4KKworIyMgVHlwZSBBc3NlcnRpb25zICMjCisKK1lvdSBjYW4g
Y2FsbCB0aGUgZnVuY3Rpb24KK2BgYAorOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8VDEs
IFQyPigpOworYGBgCit0byBhc3NlcnQgdGhhdCB0eXBlcyBgVDFgIGFuZCBgVDJgIGFyZSB0aGUg
c2FtZS4gIFRoZSBmdW5jdGlvbiBkb2VzCitub3RoaW5nIGlmIHRoZSBhc3NlcnRpb24gaXMgc2F0
aXNmaWVkLiAgSWYgdGhlIHR5cGVzIGFyZSBkaWZmZXJlbnQsCit0aGUgZnVuY3Rpb24gY2FsbCB3
aWxsIGZhaWwgdG8gY29tcGlsZSwgYW5kIHRoZSBjb21waWxlciBlcnJvciBtZXNzYWdlCit3aWxs
IGxpa2VseSAoZGVwZW5kaW5nIG9uIHRoZSBjb21waWxlcikgc2hvdyB5b3UgdGhlIGFjdHVhbCB2
YWx1ZXMgb2YKK2BUMWAgYW5kIGBUMmAuICBUaGlzIGlzIG1haW5seSB1c2VmdWwgaW5zaWRlIHRl
bXBsYXRlIGNvZGUuCisKK19DYXZlYXQ6XyBXaGVuIHVzZWQgaW5zaWRlIGEgbWVtYmVyIGZ1bmN0
aW9uIG9mIGEgY2xhc3MgdGVtcGxhdGUgb3IgYQorZnVuY3Rpb24gdGVtcGxhdGUsIGBTdGF0aWNB
c3NlcnRUeXBlRXE8VDEsIFQyPigpYCBpcyBlZmZlY3RpdmUgX29ubHkgaWZfCit0aGUgZnVuY3Rp
b24gaXMgaW5zdGFudGlhdGVkLiAgRm9yIGV4YW1wbGUsIGdpdmVuOgorYGBgCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MgRm9vIHsKKyBwdWJsaWM6CisgIHZvaWQgQmFyKCkgeyA6OnRlc3Rp
bmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIFQ+KCk7IH0KK307CitgYGAKK3RoZSBjb2RlOgor
YGBgCit2b2lkIFRlc3QxKCkgeyBGb288Ym9vbD4gZm9vOyB9CitgYGAKK3dpbGwgX25vdF8gZ2Vu
ZXJhdGUgYSBjb21waWxlciBlcnJvciwgYXMgYEZvbzxib29sPjo6QmFyKClgIGlzIG5ldmVyCith
Y3R1YWxseSBpbnN0YW50aWF0ZWQuICBJbnN0ZWFkLCB5b3UgbmVlZDoKK2BgYAordm9pZCBUZXN0
MigpIHsgRm9vPGJvb2w+IGZvbzsgZm9vLkJhcigpOyB9CitgYGAKK3RvIGNhdXNlIGEgY29tcGls
ZXIgZXJyb3IuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2
ZXJzaW9uIDEuMy4wLgorCisjIyBBc3NlcnRpb24gUGxhY2VtZW50ICMjCisKK1lvdSBjYW4gdXNl
IGFzc2VydGlvbnMgaW4gYW55IEMrKyBmdW5jdGlvbi4gSW4gcGFydGljdWxhciwgaXQgZG9lc24n
dAoraGF2ZSB0byBiZSBhIG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLiBUaGUgb25l
IGNvbnN0cmFpbnQgaXMKK3RoYXQgYXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIGEgZmF0YWwgZmFp
bHVyZSAoYEZBSUwqYCBhbmQgYEFTU0VSVF8qYCkKK2NhbiBvbmx5IGJlIHVzZWQgaW4gdm9pZC1y
ZXR1cm5pbmcgZnVuY3Rpb25zLiBUaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2YKK0dvb2dsZSBUZXN0
IG5vdCB1c2luZyBleGNlcHRpb25zLiBCeSBwbGFjaW5nIGl0IGluIGEgbm9uLXZvaWQgZnVuY3Rp
b24KK3lvdSdsbCBnZXQgYSBjb25mdXNpbmcgY29tcGlsZSBlcnJvciBsaWtlCitgImVycm9yOiB2
b2lkIHZhbHVlIG5vdCBpZ25vcmVkIGFzIGl0IG91Z2h0IHRvIGJlImAuCisKK0lmIHlvdSBuZWVk
IHRvIHVzZSBhc3NlcnRpb25zIGluIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIG5vbi12b2lkLCBv
bmUgb3B0aW9uCitpcyB0byBtYWtlIHRoZSBmdW5jdGlvbiByZXR1cm4gdGhlIHZhbHVlIGluIGFu
IG91dCBwYXJhbWV0ZXIgaW5zdGVhZC4gRm9yCitleGFtcGxlLCB5b3UgY2FuIHJld3JpdGUgYFQy
IEZvbyhUMSB4KWAgdG8gYHZvaWQgRm9vKFQxIHgsIFQyKiByZXN1bHQpYC4gWW91CituZWVkIHRv
IG1ha2Ugc3VyZSB0aGF0IGAqcmVzdWx0YCBjb250YWlucyBzb21lIHNlbnNpYmxlIHZhbHVlIGV2
ZW4gd2hlbiB0aGUKK2Z1bmN0aW9uIHJldHVybnMgcHJlbWF0dXJlbHkuIEFzIHRoZSBmdW5jdGlv
biBub3cgcmV0dXJucyBgdm9pZGAsIHlvdSBjYW4gdXNlCithbnkgYXNzZXJ0aW9uIGluc2lkZSBv
ZiBpdC4KKworSWYgY2hhbmdpbmcgdGhlIGZ1bmN0aW9uJ3MgdHlwZSBpcyBub3QgYW4gb3B0aW9u
LCB5b3Ugc2hvdWxkIGp1c3QgdXNlCithc3NlcnRpb25zIHRoYXQgZ2VuZXJhdGUgbm9uLWZhdGFs
IGZhaWx1cmVzLCBzdWNoIGFzIGBBRERfRkFJTFVSRSpgIGFuZAorYEVYUEVDVF8qYC4KKworX05v
dGVfOiBDb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzIGFyZSBub3QgY29uc2lkZXJlZCB2b2lk
LXJldHVybmluZworZnVuY3Rpb25zLCBhY2NvcmRpbmcgdG8gdGhlIEMrKyBsYW5ndWFnZSBzcGVj
aWZpY2F0aW9uLCBhbmQgc28geW91IG1heSBub3QgdXNlCitmYXRhbCBhc3NlcnRpb25zIGluIHRo
ZW0uIFlvdSdsbCBnZXQgYSBjb21waWxhdGlvbiBlcnJvciBpZiB5b3UgdHJ5LiBBIHNpbXBsZQor
d29ya2Fyb3VuZCBpcyB0byB0cmFuc2ZlciB0aGUgZW50aXJlIGJvZHkgb2YgdGhlIGNvbnN0cnVj
dG9yIG9yIGRlc3RydWN0b3IgdG8gYQorcHJpdmF0ZSB2b2lkLXJldHVybmluZyBtZXRob2QuIEhv
d2V2ZXIsIHlvdSBzaG91bGQgYmUgYXdhcmUgdGhhdCBhIGZhdGFsCithc3NlcnRpb24gZmFpbHVy
ZSBpbiBhIGNvbnN0cnVjdG9yIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUgY3VycmVudCB0ZXN0LCBh
cyB5b3VyCitpbnR1aXRpb24gbWlnaHQgc3VnZ2VzdDsgaXQgbWVyZWx5IHJldHVybnMgZnJvbSB0
aGUgY29uc3RydWN0b3IgZWFybHksIHBvc3NpYmx5CitsZWF2aW5nIHlvdXIgb2JqZWN0IGluIGEg
cGFydGlhbGx5LWNvbnN0cnVjdGVkIHN0YXRlLiBMaWtld2lzZSwgYSBmYXRhbAorYXNzZXJ0aW9u
IGZhaWx1cmUgaW4gYSBkZXN0cnVjdG9yIG1heSBsZWF2ZSB5b3VyIG9iamVjdCBpbiBhCitwYXJ0
aWFsbHktZGVzdHJ1Y3RlZCBzdGF0ZS4gVXNlIGFzc2VydGlvbnMgY2FyZWZ1bGx5IGluIHRoZXNl
IHNpdHVhdGlvbnMhCisKKyMgRGVhdGggVGVzdHMgIworCitJbiBtYW55IGFwcGxpY2F0aW9ucywg
dGhlcmUgYXJlIGFzc2VydGlvbnMgdGhhdCBjYW4gY2F1c2UgYXBwbGljYXRpb24gZmFpbHVyZQor
aWYgYSBjb25kaXRpb24gaXMgbm90IG1ldC4gVGhlc2Ugc2FuaXR5IGNoZWNrcywgd2hpY2ggZW5z
dXJlIHRoYXQgdGhlIHByb2dyYW0KK2lzIGluIGEga25vd24gZ29vZCBzdGF0ZSwgYXJlIHRoZXJl
IHRvIGZhaWwgYXQgdGhlIGVhcmxpZXN0IHBvc3NpYmxlIHRpbWUgYWZ0ZXIKK3NvbWUgcHJvZ3Jh
bSBzdGF0ZSBpcyBjb3JydXB0ZWQuIElmIHRoZSBhc3NlcnRpb24gY2hlY2tzIHRoZSB3cm9uZyBj
b25kaXRpb24sCit0aGVuIHRoZSBwcm9ncmFtIG1heSBwcm9jZWVkIGluIGFuIGVycm9uZW91cyBz
dGF0ZSwgd2hpY2ggY291bGQgbGVhZCB0byBtZW1vcnkKK2NvcnJ1cHRpb24sIHNlY3VyaXR5IGhv
bGVzLCBvciB3b3JzZS4gSGVuY2UgaXQgaXMgdml0YWxseSBpbXBvcnRhbnQgdG8gdGVzdAordGhh
dCBzdWNoIGFzc2VydGlvbiBzdGF0ZW1lbnRzIHdvcmsgYXMgZXhwZWN0ZWQuCisKK1NpbmNlIHRo
ZXNlIHByZWNvbmRpdGlvbiBjaGVja3MgY2F1c2UgdGhlIHByb2Nlc3NlcyB0byBkaWUsIHdlIGNh
bGwgc3VjaCB0ZXN0cworX2RlYXRoIHRlc3RzXy4gTW9yZSBnZW5lcmFsbHksIGFueSB0ZXN0IHRo
YXQgY2hlY2tzIHRoYXQgYSBwcm9ncmFtIHRlcm1pbmF0ZXMKK2luIGFuIGV4cGVjdGVkIGZhc2hp
b24gaXMgYWxzbyBhIGRlYXRoIHRlc3QuCisKK0lmIHlvdSB3YW50IHRvIHRlc3QgYEVYUEVDVF8q
KCkvQVNTRVJUXyooKWAgZmFpbHVyZXMgaW4geW91ciB0ZXN0IGNvZGUsIHNlZSBbQ2F0Y2hpbmcg
RmFpbHVyZXNdKCNjYXRjaGluZy1mYWlsdXJlcykuCisKKyMjIEhvdyB0byBXcml0ZSBhIERlYXRo
IFRlc3QgIyMKKworR29vZ2xlIFRlc3QgaGFzIHRoZSBmb2xsb3dpbmcgbWFjcm9zIHRvIHN1cHBv
cnQgZGVhdGggdGVzdHM6CisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNz
ZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfREVBVEgoYF9zdGF0
ZW1lbnQsIHJlZ2V4X2ApOyB8IGBFWFBFQ1RfREVBVEgoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApOyB8
IF9zdGF0ZW1lbnRfIGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3IgfAorfCBgQVNTRVJUX0RF
QVRIX0lGX1NVUFBPUlRFRChgX3N0YXRlbWVudCwgcmVnZXhfYCk7IHwgYEVYUEVDVF9ERUFUSF9J
Rl9TVVBQT1JURUQoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApOyB8IGlmIGRlYXRoIHRlc3RzIGFyZSBz
dXBwb3J0ZWQsIHZlcmlmaWVzIHRoYXQgX3N0YXRlbWVudF8gY3Jhc2hlcyB3aXRoIHRoZSBnaXZl
biBlcnJvcjsgb3RoZXJ3aXNlIHZlcmlmaWVzIG5vdGhpbmcgfAorfCBgQVNTRVJUX0VYSVQoYF9z
dGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXhfYCk7IHwgYEVYUEVDVF9FWElUKGBfc3RhdGVtZW50
LCBwcmVkaWNhdGUsIHJlZ2V4X2ApOyB8X3N0YXRlbWVudF8gZXhpdHMgd2l0aCB0aGUgZ2l2ZW4g
ZXJyb3IgYW5kIGl0cyBleGl0IGNvZGUgbWF0Y2hlcyBfcHJlZGljYXRlXyB8CisKK3doZXJlIF9z
dGF0ZW1lbnRfIGlzIGEgc3RhdGVtZW50IHRoYXQgaXMgZXhwZWN0ZWQgdG8gY2F1c2UgdGhlIHBy
b2Nlc3MgdG8KK2RpZSwgX3ByZWRpY2F0ZV8gaXMgYSBmdW5jdGlvbiBvciBmdW5jdGlvbiBvYmpl
Y3QgdGhhdCBldmFsdWF0ZXMgYW4gaW50ZWdlcgorZXhpdCBzdGF0dXMsIGFuZCBfcmVnZXhfIGlz
IGEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgdGhlIHN0ZGVyciBvdXRwdXQgb2YKK19zdGF0ZW1l
bnRfIGlzIGV4cGVjdGVkIHRvIG1hdGNoLiBOb3RlIHRoYXQgX3N0YXRlbWVudF8gY2FuIGJlIF9h
bnkgdmFsaWQKK3N0YXRlbWVudF8gKGluY2x1ZGluZyBfY29tcG91bmQgc3RhdGVtZW50XykgYW5k
IGRvZXNuJ3QgaGF2ZSB0byBiZSBhbgorZXhwcmVzc2lvbi4KKworQXMgdXN1YWwsIHRoZSBgQVNT
RVJUYCB2YXJpYW50cyBhYm9ydCB0aGUgY3VycmVudCB0ZXN0IGZ1bmN0aW9uLCB3aGlsZSB0aGUK
K2BFWFBFQ1RgIHZhcmlhbnRzIGRvIG5vdC4KKworKipOb3RlOioqIFdlIHVzZSB0aGUgd29yZCAi
Y3Jhc2giIGhlcmUgdG8gbWVhbiB0aGF0IHRoZSBwcm9jZXNzCit0ZXJtaW5hdGVzIHdpdGggYSBf
bm9uLXplcm9fIGV4aXQgc3RhdHVzIGNvZGUuICBUaGVyZSBhcmUgdHdvCitwb3NzaWJpbGl0aWVz
OiBlaXRoZXIgdGhlIHByb2Nlc3MgaGFzIGNhbGxlZCBgZXhpdCgpYCBvciBgX2V4aXQoKWAKK3dp
dGggYSBub24temVybyB2YWx1ZSwgb3IgaXQgbWF5IGJlIGtpbGxlZCBieSBhIHNpZ25hbC4KKwor
VGhpcyBtZWFucyB0aGF0IGlmIF9zdGF0ZW1lbnRfIHRlcm1pbmF0ZXMgdGhlIHByb2Nlc3Mgd2l0
aCBhIDAgZXhpdAorY29kZSwgaXQgaXMgX25vdF8gY29uc2lkZXJlZCBhIGNyYXNoIGJ5IGBFWFBF
Q1RfREVBVEhgLiAgVXNlCitgRVhQRUNUX0VYSVRgIGluc3RlYWQgaWYgdGhpcyBpcyB0aGUgY2Fz
ZSwgb3IgaWYgeW91IHdhbnQgdG8gcmVzdHJpY3QKK3RoZSBleGl0IGNvZGUgbW9yZSBwcmVjaXNl
bHkuCisKK0EgcHJlZGljYXRlIGhlcmUgbXVzdCBhY2NlcHQgYW4gYGludGAgYW5kIHJldHVybiBh
IGBib29sYC4gVGhlIGRlYXRoIHRlc3QKK3N1Y2NlZWRzIG9ubHkgaWYgdGhlIHByZWRpY2F0ZSBy
ZXR1cm5zIGB0cnVlYC4gR29vZ2xlIFRlc3QgZGVmaW5lcyBhIGZldworcHJlZGljYXRlcyB0aGF0
IGhhbmRsZSB0aGUgbW9zdCBjb21tb24gY2FzZXM6CisKK2BgYAorOjp0ZXN0aW5nOjpFeGl0ZWRX
aXRoQ29kZShleGl0X2NvZGUpCitgYGAKKworVGhpcyBleHByZXNzaW9uIGlzIGB0cnVlYCBpZiB0
aGUgcHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHkgd2l0aCB0aGUgZ2l2ZW4gZXhpdAorY29kZS4KKwor
YGBgCis6OnRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKHNpZ25hbF9udW1iZXIpICAvLyBOb3QgYXZh
aWxhYmxlIG9uIFdpbmRvd3MuCitgYGAKKworVGhpcyBleHByZXNzaW9uIGlzIGB0cnVlYCBpZiB0
aGUgcHJvZ3JhbSB3YXMga2lsbGVkIGJ5IHRoZSBnaXZlbiBzaWduYWwuCisKK1RoZSBgKl9ERUFU
SGAgbWFjcm9zIGFyZSBjb252ZW5pZW50IHdyYXBwZXJzIGZvciBgKl9FWElUYCB0aGF0IHVzZSBh
IHByZWRpY2F0ZQordGhhdCB2ZXJpZmllcyB0aGUgcHJvY2VzcycgZXhpdCBjb2RlIGlzIG5vbi16
ZXJvLgorCitOb3RlIHRoYXQgYSBkZWF0aCB0ZXN0IG9ubHkgY2FyZXMgYWJvdXQgdGhyZWUgdGhp
bmdzOgorCisgIDEuIGRvZXMgX3N0YXRlbWVudF8gYWJvcnQgb3IgZXhpdCB0aGUgcHJvY2Vzcz8K
KyAgMS4gKGluIHRoZSBjYXNlIG9mIGBBU1NFUlRfRVhJVGAgYW5kIGBFWFBFQ1RfRVhJVGApIGRv
ZXMgdGhlIGV4aXQgc3RhdHVzIHNhdGlzZnkgX3ByZWRpY2F0ZV8/ICBPciAoaW4gdGhlIGNhc2Ug
b2YgYEFTU0VSVF9ERUFUSGAgYW5kIGBFWFBFQ1RfREVBVEhgKSBpcyB0aGUgZXhpdCBzdGF0dXMg
bm9uLXplcm8/ICBBbmQKKyAgMS4gZG9lcyB0aGUgc3RkZXJyIG91dHB1dCBtYXRjaCBfcmVnZXhf
PworCitJbiBwYXJ0aWN1bGFyLCBpZiBfc3RhdGVtZW50XyBnZW5lcmF0ZXMgYW4gYEFTU0VSVF8q
YCBvciBgRVhQRUNUXypgIGZhaWx1cmUsIGl0IHdpbGwgKipub3QqKiBjYXVzZSB0aGUgZGVhdGgg
dGVzdCB0byBmYWlsLCBhcyBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGRvbid0IGFib3J0IHRoZSBw
cm9jZXNzLgorCitUbyB3cml0ZSBhIGRlYXRoIHRlc3QsIHNpbXBseSB1c2Ugb25lIG9mIHRoZSBh
Ym92ZSBtYWNyb3MgaW5zaWRlIHlvdXIgdGVzdAorZnVuY3Rpb24uIEZvciBleGFtcGxlLAorCitg
YGAKK1RFU1QoTXkqRGVhdGhUZXN0KiwgRm9vKSB7CisgIC8vIFRoaXMgZGVhdGggdGVzdCB1c2Vz
IGEgY29tcG91bmQgc3RhdGVtZW50LgorICBBU1NFUlRfREVBVEgoeyBpbnQgbiA9IDU7IEZvbygm
bik7IH0sICJFcnJvciBvbiBsaW5lIC4qIG9mIEZvbygpIik7Cit9CitURVNUKE15RGVhdGhUZXN0
LCBOb3JtYWxFeGl0KSB7CisgIEVYUEVDVF9FWElUKE5vcm1hbEV4aXQoKSwgOjp0ZXN0aW5nOjpF
eGl0ZWRXaXRoQ29kZSgwKSwgIlN1Y2Nlc3MiKTsKK30KK1RFU1QoTXlEZWF0aFRlc3QsIEtpbGxN
eXNlbGYpIHsKKyAgRVhQRUNUX0VYSVQoS2lsbE15c2VsZigpLCA6OnRlc3Rpbmc6OktpbGxlZEJ5
U2lnbmFsKFNJR0tJTEwpLCAiU2VuZGluZyBteXNlbGYgdW5ibG9ja2FibGUgc2lnbmFsIik7Cit9
CitgYGAKKwordmVyaWZpZXMgdGhhdDoKKworICAqIGNhbGxpbmcgYEZvbyg1KWAgY2F1c2VzIHRo
ZSBwcm9jZXNzIHRvIGRpZSB3aXRoIHRoZSBnaXZlbiBlcnJvciBtZXNzYWdlLAorICAqIGNhbGxp
bmcgYE5vcm1hbEV4aXQoKWAgY2F1c2VzIHRoZSBwcm9jZXNzIHRvIHByaW50IGAiU3VjY2VzcyJg
IHRvIHN0ZGVyciBhbmQgZXhpdCB3aXRoIGV4aXQgY29kZSAwLCBhbmQKKyAgKiBjYWxsaW5nIGBL
aWxsTXlzZWxmKClgIGtpbGxzIHRoZSBwcm9jZXNzIHdpdGggc2lnbmFsIGBTSUdLSUxMYC4KKwor
VGhlIHRlc3QgZnVuY3Rpb24gYm9keSBtYXkgY29udGFpbiBvdGhlciBhc3NlcnRpb25zIGFuZCBz
dGF0ZW1lbnRzIGFzIHdlbGwsIGlmCituZWNlc3NhcnkuCisKK19JbXBvcnRhbnQ6XyBXZSBzdHJv
bmdseSByZWNvbW1lbmQgeW91IHRvIGZvbGxvdyB0aGUgY29udmVudGlvbiBvZiBuYW1pbmcgeW91
cgordGVzdCBjYXNlIChub3QgdGVzdCkgYCpEZWF0aFRlc3RgIHdoZW4gaXQgY29udGFpbnMgYSBk
ZWF0aCB0ZXN0LCBhcworZGVtb25zdHJhdGVkIGluIHRoZSBhYm92ZSBleGFtcGxlLiBUaGUgYERl
YXRoIFRlc3RzIEFuZCBUaHJlYWRzYCBzZWN0aW9uIGJlbG93CitleHBsYWlucyB3aHkuCisKK0lm
IGEgdGVzdCBmaXh0dXJlIGNsYXNzIGlzIHNoYXJlZCBieSBub3JtYWwgdGVzdHMgYW5kIGRlYXRo
IHRlc3RzLCB5b3UKK2NhbiB1c2UgdHlwZWRlZiB0byBpbnRyb2R1Y2UgYW4gYWxpYXMgZm9yIHRo
ZSBmaXh0dXJlIGNsYXNzIGFuZCBhdm9pZAorZHVwbGljYXRpbmcgaXRzIGNvZGU6CitgYGAKK2Ns
YXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07CisKK3R5cGVkZWYg
Rm9vVGVzdCBGb29EZWF0aFRlc3Q7CisKK1RFU1RfRihGb29UZXN0LCBEb2VzVGhpcykgeworICAv
LyBub3JtYWwgdGVzdAorfQorCitURVNUX0YoRm9vRGVhdGhUZXN0LCBEb2VzVGhhdCkgeworICAv
LyBkZWF0aCB0ZXN0Cit9CitgYGAKKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzIChy
ZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIEN5Z3dpbiwgYW5kIE1hYyAodGhlIGxhdHRlciB0
aHJlZSBhcmUgc3VwcG9ydGVkIHNpbmNlIHYxLjMuMCkuICBgKEFTU0VSVHxFWFBFQ1QpX0RFQVRI
X0lGX1NVUFBPUlRFRGAgYXJlIG5ldyBpbiB2MS40LjAuCisKKyMjIFJlZ3VsYXIgRXhwcmVzc2lv
biBTeW50YXggIyMKKworT24gUE9TSVggc3lzdGVtcyAoZS5nLiBMaW51eCwgQ3lnd2luLCBhbmQg
TWFjKSwgR29vZ2xlIFRlc3QgdXNlcyB0aGUKK1tQT1NJWCBleHRlbmRlZCByZWd1bGFyIGV4cHJl
c3Npb25dKGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9iYXNl
ZGVmcy94YmRfY2hhcDA5Lmh0bWwjdGFnXzA5XzA0KQorc3ludGF4IGluIGRlYXRoIHRlc3RzLiBU
byBsZWFybiBhYm91dCB0aGlzIHN5bnRheCwgeW91IG1heSB3YW50IHRvIHJlYWQgdGhpcyBbV2lr
aXBlZGlhIGVudHJ5XShodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlZ3VsYXJfZXhwcmVz
c2lvbiNQT1NJWF9FeHRlbmRlZF9SZWd1bGFyX0V4cHJlc3Npb25zKS4KKworT24gV2luZG93cywg
R29vZ2xlIFRlc3QgdXNlcyBpdHMgb3duIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24KK2ltcGxl
bWVudGF0aW9uLiBJdCBsYWNrcyBtYW55IGZlYXR1cmVzIHlvdSBjYW4gZmluZCBpbiBQT1NJWCBl
eHRlbmRlZAorcmVndWxhciBleHByZXNzaW9ucy4gIEZvciBleGFtcGxlLCB3ZSBkb24ndCBzdXBw
b3J0IHVuaW9uIChgInh8eSJgKSwKK2dyb3VwaW5nIChgIih4eSkiYCksIGJyYWNrZXRzIChgIlt4
eV0iYCksIGFuZCByZXBldGl0aW9uIGNvdW50CisoYCJ4ezUsN30iYCksIGFtb25nIG90aGVycy4g
QmVsb3cgaXMgd2hhdCB3ZSBkbyBzdXBwb3J0IChgQWAgZGVub3RlcyBhCitsaXRlcmFsIGNoYXJh
Y3RlciwgcGVyaW9kIChgLmApLCBvciBhIHNpbmdsZSBgXFxgIGVzY2FwZSBzZXF1ZW5jZTsgYHhg
CithbmQgYHlgIGRlbm90ZSByZWd1bGFyIGV4cHJlc3Npb25zLik6CisKK3wgYGNgIHwgbWF0Y2hl
cyBhbnkgbGl0ZXJhbCBjaGFyYWN0ZXIgYGNgIHwKK3w6LS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXwKK3wgYFxcZGAgfCBtYXRjaGVzIGFueSBkZWNpbWFsIGRpZ2l0ICAg
ICAgICAgfAorfCBgXFxEYCB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgZGVj
aW1hbCBkaWdpdCB8Cit8IGBcXGZgIHwgbWF0Y2hlcyBgXGZgICAgICAgICAgICAgICAgICAgICAg
IHwKK3wgYFxcbmAgfCBtYXRjaGVzIGBcbmAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFxy
YCB8IG1hdGNoZXMgYFxyYCAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBcXHNgIHwgbWF0Y2hl
cyBhbnkgQVNDSUkgd2hpdGVzcGFjZSwgaW5jbHVkaW5nIGBcbmAgfAorfCBgXFxTYCB8IG1hdGNo
ZXMgYW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgd2hpdGVzcGFjZSB8Cit8IGBcXHRgIHwgbWF0
Y2hlcyBgXHRgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYFxcdmAgfCBtYXRjaGVzIGBcdmAg
ICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFx3YCB8IG1hdGNoZXMgYW55IGxldHRlciwgYF9g
LCBvciBkZWNpbWFsIGRpZ2l0IHwKK3wgYFxcV2AgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhh
dCBgXFx3YCBkb2Vzbid0IG1hdGNoIHwKK3wgYFxcY2AgfCBtYXRjaGVzIGFueSBsaXRlcmFsIGNo
YXJhY3RlciBgY2AsIHdoaWNoIG11c3QgYmUgYSBwdW5jdHVhdGlvbiB8Cit8IGAuYCB8IG1hdGNo
ZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIgZXhjZXB0IGBcbmAgfAorfCBgQT9gIHwgbWF0Y2hlcyAw
IG9yIDEgb2NjdXJyZW5jZXMgb2YgYEFgIHwKK3wgYEEqYCB8IG1hdGNoZXMgMCBvciBtYW55IG9j
Y3VycmVuY2VzIG9mIGBBYCB8Cit8IGBBK2AgfCBtYXRjaGVzIDEgb3IgbWFueSBvY2N1cnJlbmNl
cyBvZiBgQWAgfAorfCBgXmAgfCBtYXRjaGVzIHRoZSBiZWdpbm5pbmcgb2YgYSBzdHJpbmcgKG5v
dCB0aGF0IG9mIGVhY2ggbGluZSkgfAorfCBgJGAgfCBtYXRjaGVzIHRoZSBlbmQgb2YgYSBzdHJp
bmcgKG5vdCB0aGF0IG9mIGVhY2ggbGluZSkgfAorfCBgeHlgIHwgbWF0Y2hlcyBgeGAgZm9sbG93
ZWQgYnkgYHlgICAgICAgIHwKKworVG8gaGVscCB5b3UgZGV0ZXJtaW5lIHdoaWNoIGNhcGFiaWxp
dHkgaXMgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtLAorR29vZ2xlIFRlc3QgZGVmaW5lcyBtYWNy
byBgR1RFU1RfVVNFU19QT1NJWF9SRT0xYCB3aGVuIGl0IHVzZXMgUE9TSVgKK2V4dGVuZGVkIHJl
Z3VsYXIgZXhwcmVzc2lvbnMsIG9yIGBHVEVTVF9VU0VTX1NJTVBMRV9SRT0xYCB3aGVuIGl0IHVz
ZXMKK3RoZSBzaW1wbGUgdmVyc2lvbi4gIElmIHlvdSB3YW50IHlvdXIgZGVhdGggdGVzdHMgdG8g
d29yayBpbiBib3RoCitjYXNlcywgeW91IGNhbiBlaXRoZXIgYCNpZmAgb24gdGhlc2UgbWFjcm9z
IG9yIHVzZSB0aGUgbW9yZSBsaW1pdGVkCitzeW50YXggb25seS4KKworIyMgSG93IEl0IFdvcmtz
ICMjCisKK1VuZGVyIHRoZSBob29kLCBgQVNTRVJUX0VYSVQoKWAgc3Bhd25zIGEgbmV3IHByb2Nl
c3MgYW5kIGV4ZWN1dGVzIHRoZQorZGVhdGggdGVzdCBzdGF0ZW1lbnQgaW4gdGhhdCBwcm9jZXNz
LiBUaGUgZGV0YWlscyBvZiBvZiBob3cgcHJlY2lzZWx5Cit0aGF0IGhhcHBlbnMgZGVwZW5kIG9u
IHRoZSBwbGF0Zm9ybSBhbmQgdGhlIHZhcmlhYmxlCitgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKGRl
YXRoX3Rlc3Rfc3R5bGUpYCAod2hpY2ggaXMgaW5pdGlhbGl6ZWQgZnJvbSB0aGUKK2NvbW1hbmQt
bGluZSBmbGFnIGAtLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGVgKS4KKworICAqIE9uIFBPU0lYIHN5
c3RlbXMsIGBmb3JrKClgIChvciBgY2xvbmUoKWAgb24gTGludXgpIGlzIHVzZWQgdG8gc3Bhd24g
dGhlIGNoaWxkLCBhZnRlciB3aGljaDoKKyAgICAqIElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlz
IGAiZmFzdCJgLCB0aGUgZGVhdGggdGVzdCBzdGF0ZW1lbnQgaXMgaW1tZWRpYXRlbHkgZXhlY3V0
ZWQuCisgICAgKiBJZiB0aGUgdmFyaWFibGUncyB2YWx1ZSBpcyBgInRocmVhZHNhZmUiYCwgdGhl
IGNoaWxkIHByb2Nlc3MgcmUtZXhlY3V0ZXMgdGhlIHVuaXQgdGVzdCBiaW5hcnkganVzdCBhcyBp
dCB3YXMgb3JpZ2luYWxseSBpbnZva2VkLCBidXQgd2l0aCBzb21lIGV4dHJhIGZsYWdzIHRvIGNh
dXNlIGp1c3QgdGhlIHNpbmdsZSBkZWF0aCB0ZXN0IHVuZGVyIGNvbnNpZGVyYXRpb24gdG8gYmUg
cnVuLgorICAqIE9uIFdpbmRvd3MsIHRoZSBjaGlsZCBpcyBzcGF3bmVkIHVzaW5nIHRoZSBgQ3Jl
YXRlUHJvY2VzcygpYCBBUEksIGFuZCByZS1leGVjdXRlcyB0aGUgYmluYXJ5IHRvIGNhdXNlIGp1
c3QgdGhlIHNpbmdsZSBkZWF0aCB0ZXN0IHVuZGVyIGNvbnNpZGVyYXRpb24gdG8gYmUgcnVuIC0g
bXVjaCBsaWtlIHRoZSBgdGhyZWFkc2FmZWAgbW9kZSBvbiBQT1NJWC4KKworT3RoZXIgdmFsdWVz
IGZvciB0aGUgdmFyaWFibGUgYXJlIGlsbGVnYWwgYW5kIHdpbGwgY2F1c2UgdGhlIGRlYXRoIHRl
c3QgdG8KK2ZhaWwuIEN1cnJlbnRseSwgdGhlIGZsYWcncyBkZWZhdWx0IHZhbHVlIGlzIGAiZmFz
dCJgLiBIb3dldmVyLCB3ZSByZXNlcnZlIHRoZQorcmlnaHQgdG8gY2hhbmdlIGl0IGluIHRoZSBm
dXR1cmUuIFRoZXJlZm9yZSwgeW91ciB0ZXN0cyBzaG91bGQgbm90IGRlcGVuZCBvbgordGhpcy4K
KworSW4gZWl0aGVyIGNhc2UsIHRoZSBwYXJlbnQgcHJvY2VzcyB3YWl0cyBmb3IgdGhlIGNoaWxk
IHByb2Nlc3MgdG8gY29tcGxldGUsIGFuZCBjaGVja3MgdGhhdAorCisgIDEuIHRoZSBjaGlsZCdz
IGV4aXQgc3RhdHVzIHNhdGlzZmllcyB0aGUgcHJlZGljYXRlLCBhbmQKKyAgMS4gdGhlIGNoaWxk
J3Mgc3RkZXJyIG1hdGNoZXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4KKworSWYgdGhlIGRlYXRo
IHRlc3Qgc3RhdGVtZW50IHJ1bnMgdG8gY29tcGxldGlvbiB3aXRob3V0IGR5aW5nLCB0aGUgY2hp
bGQKK3Byb2Nlc3Mgd2lsbCBub25ldGhlbGVzcyB0ZXJtaW5hdGUsIGFuZCB0aGUgYXNzZXJ0aW9u
IGZhaWxzLgorCisjIyBEZWF0aCBUZXN0cyBBbmQgVGhyZWFkcyAjIworCitUaGUgcmVhc29uIGZv
ciB0aGUgdHdvIGRlYXRoIHRlc3Qgc3R5bGVzIGhhcyB0byBkbyB3aXRoIHRocmVhZCBzYWZldHku
IER1ZSB0bword2VsbC1rbm93biBwcm9ibGVtcyB3aXRoIGZvcmtpbmcgaW4gdGhlIHByZXNlbmNl
IG9mIHRocmVhZHMsIGRlYXRoIHRlc3RzIHNob3VsZAorYmUgcnVuIGluIGEgc2luZ2xlLXRocmVh
ZGVkIGNvbnRleHQuIFNvbWV0aW1lcywgaG93ZXZlciwgaXQgaXNuJ3QgZmVhc2libGUgdG8KK2Fy
cmFuZ2UgdGhhdCBraW5kIG9mIGVudmlyb25tZW50LiBGb3IgZXhhbXBsZSwgc3RhdGljYWxseS1p
bml0aWFsaXplZCBtb2R1bGVzCittYXkgc3RhcnQgdGhyZWFkcyBiZWZvcmUgbWFpbiBpcyBldmVy
IHJlYWNoZWQuIE9uY2UgdGhyZWFkcyBoYXZlIGJlZW4gY3JlYXRlZCwKK2l0IG1heSBiZSBkaWZm
aWN1bHQgb3IgaW1wb3NzaWJsZSB0byBjbGVhbiB0aGVtIHVwLgorCitHb29nbGUgVGVzdCBoYXMg
dGhyZWUgZmVhdHVyZXMgaW50ZW5kZWQgdG8gcmFpc2UgYXdhcmVuZXNzIG9mIHRocmVhZGluZyBp
c3N1ZXMuCisKKyAgMS4gQSB3YXJuaW5nIGlzIGVtaXR0ZWQgaWYgbXVsdGlwbGUgdGhyZWFkcyBh
cmUgcnVubmluZyB3aGVuIGEgZGVhdGggdGVzdCBpcyBlbmNvdW50ZXJlZC4KKyAgMS4gVGVzdCBj
YXNlcyB3aXRoIGEgbmFtZSBlbmRpbmcgaW4gIkRlYXRoVGVzdCIgYXJlIHJ1biBiZWZvcmUgYWxs
IG90aGVyIHRlc3RzLgorICAxLiBJdCB1c2VzIGBjbG9uZSgpYCBpbnN0ZWFkIG9mIGBmb3JrKClg
IHRvIHNwYXduIHRoZSBjaGlsZCBwcm9jZXNzIG9uIExpbnV4IChgY2xvbmUoKWAgaXMgbm90IGF2
YWlsYWJsZSBvbiBDeWd3aW4gYW5kIE1hYyksIGFzIGBmb3JrKClgIGlzIG1vcmUgbGlrZWx5IHRv
IGNhdXNlIHRoZSBjaGlsZCB0byBoYW5nIHdoZW4gdGhlIHBhcmVudCBwcm9jZXNzIGhhcyBtdWx0
aXBsZSB0aHJlYWRzLgorCitJdCdzIHBlcmZlY3RseSBmaW5lIHRvIGNyZWF0ZSB0aHJlYWRzIGlu
c2lkZSBhIGRlYXRoIHRlc3Qgc3RhdGVtZW50OyB0aGV5IGFyZQorZXhlY3V0ZWQgaW4gYSBzZXBh
cmF0ZSBwcm9jZXNzIGFuZCBjYW5ub3QgYWZmZWN0IHRoZSBwYXJlbnQuCisKKyMjIERlYXRoIFRl
c3QgU3R5bGVzICMjCisKK1RoZSAidGhyZWFkc2FmZSIgZGVhdGggdGVzdCBzdHlsZSB3YXMgaW50
cm9kdWNlZCBpbiBvcmRlciB0byBoZWxwIG1pdGlnYXRlIHRoZQorcmlza3Mgb2YgdGVzdGluZyBp
biBhIHBvc3NpYmx5IG11bHRpdGhyZWFkZWQgZW52aXJvbm1lbnQuIEl0IHRyYWRlcyBpbmNyZWFz
ZWQKK3Rlc3QgZXhlY3V0aW9uIHRpbWUgKHBvdGVudGlhbGx5IGRyYW1hdGljYWxseSBzbykgZm9y
IGltcHJvdmVkIHRocmVhZCBzYWZldHkuCitXZSBzdWdnZXN0IHVzaW5nIHRoZSBmYXN0ZXIsIGRl
ZmF1bHQgImZhc3QiIHN0eWxlIHVubGVzcyB5b3VyIHRlc3QgaGFzIHNwZWNpZmljCitwcm9ibGVt
cyB3aXRoIGl0LgorCitZb3UgY2FuIGNob29zZSBhIHBhcnRpY3VsYXIgc3R5bGUgb2YgZGVhdGgg
dGVzdHMgYnkgc2V0dGluZyB0aGUgZmxhZworcHJvZ3JhbW1hdGljYWxseToKKworYGBgCis6OnRl
c3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAidGhyZWFkc2FmZSI7CitgYGAK
KworWW91IGNhbiBkbyB0aGlzIGluIGBtYWluKClgIHRvIHNldCB0aGUgc3R5bGUgZm9yIGFsbCBk
ZWF0aCB0ZXN0cyBpbiB0aGUKK2JpbmFyeSwgb3IgaW4gaW5kaXZpZHVhbCB0ZXN0cy4gUmVjYWxs
IHRoYXQgZmxhZ3MgYXJlIHNhdmVkIGJlZm9yZSBydW5uaW5nIGVhY2gKK3Rlc3QgYW5kIHJlc3Rv
cmVkIGFmdGVyd2FyZHMsIHNvIHlvdSBuZWVkIG5vdCBkbyB0aGF0IHlvdXJzZWxmLiBGb3IgZXhh
bXBsZToKKworYGBgCitURVNUKE15RGVhdGhUZXN0LCBUZXN0T25lKSB7CisgIDo6dGVzdGluZzo6
RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJ0aHJlYWRzYWZlIjsKKyAgLy8gVGhpcyB0
ZXN0IGlzIHJ1biBpbiB0aGUgInRocmVhZHNhZmUiIHN0eWxlOgorICBBU1NFUlRfREVBVEgoVGhp
c1Nob3VsZERpZSgpLCAiIik7Cit9CisKK1RFU1QoTXlEZWF0aFRlc3QsIFRlc3RUd28pIHsKKyAg
Ly8gVGhpcyB0ZXN0IGlzIHJ1biBpbiB0aGUgImZhc3QiIHN0eWxlOgorICBBU1NFUlRfREVBVEgo
VGhpc1Nob3VsZERpZSgpLCAiIik7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJn
dikgeworICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgOjp0ZXN0
aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0gImZhc3QiOworICByZXR1cm4gUlVO
X0FMTF9URVNUUygpOworfQorYGBgCisKKyMjIENhdmVhdHMgIyMKKworVGhlIF9zdGF0ZW1lbnRf
IGFyZ3VtZW50IG9mIGBBU1NFUlRfRVhJVCgpYCBjYW4gYmUgYW55IHZhbGlkIEMrKyBzdGF0ZW1l
bnQKK2V4Y2VwdCB0aGF0IGl0IGNhbiBub3QgcmV0dXJuIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rp
b24uIFRoaXMgbWVhbnMKK19zdGF0ZW1lbnRfIHNob3VsZCBub3QgY29udGFpbiBgcmV0dXJuYCBv
ciBhIG1hY3JvIHRoYXQgbWlnaHQgcmV0dXJuIChlLmcuCitgQVNTRVJUX1RSVUUoKWAgKS4gSWYg
X3N0YXRlbWVudF8gcmV0dXJucyBiZWZvcmUgaXQgY3Jhc2hlcywgR29vZ2xlIFRlc3Qgd2lsbAor
cHJpbnQgYW4gZXJyb3IgbWVzc2FnZSwgYW5kIHRoZSB0ZXN0IHdpbGwgZmFpbC4KKworU2luY2Ug
X3N0YXRlbWVudF8gcnVucyBpbiB0aGUgY2hpbGQgcHJvY2VzcywgYW55IGluLW1lbW9yeSBzaWRl
IGVmZmVjdCAoZS5nLgorbW9kaWZ5aW5nIGEgdmFyaWFibGUsIHJlbGVhc2luZyBtZW1vcnksIGV0
YykgaXQgY2F1c2VzIHdpbGwgX25vdF8gYmUgb2JzZXJ2YWJsZQoraW4gdGhlIHBhcmVudCBwcm9j
ZXNzLiBJbiBwYXJ0aWN1bGFyLCBpZiB5b3UgcmVsZWFzZSBtZW1vcnkgaW4gYSBkZWF0aCB0ZXN0
LAoreW91ciBwcm9ncmFtIHdpbGwgZmFpbCB0aGUgaGVhcCBjaGVjayBhcyB0aGUgcGFyZW50IHBy
b2Nlc3Mgd2lsbCBuZXZlciBzZWUgdGhlCittZW1vcnkgcmVjbGFpbWVkLiBUbyBzb2x2ZSB0aGlz
IHByb2JsZW0sIHlvdSBjYW4KKworICAxLiB0cnkgbm90IHRvIGZyZWUgbWVtb3J5IGluIGEgZGVh
dGggdGVzdDsKKyAgMS4gZnJlZSB0aGUgbWVtb3J5IGFnYWluIGluIHRoZSBwYXJlbnQgcHJvY2Vz
czsgb3IKKyAgMS4gZG8gbm90IHVzZSB0aGUgaGVhcCBjaGVja2VyIGluIHlvdXIgcHJvZ3JhbS4K
KworRHVlIHRvIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCwgeW91IGNhbm5vdCBwbGFjZSBtdWx0
aXBsZSBkZWF0aCB0ZXN0Cithc3NlcnRpb25zIG9uIHRoZSBzYW1lIGxpbmU7IG90aGVyd2lzZSwg
Y29tcGlsYXRpb24gd2lsbCBmYWlsIHdpdGggYW4gdW5vYnZpb3VzCitlcnJvciBtZXNzYWdlLgor
CitEZXNwaXRlIHRoZSBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5IGFmZm9yZGVkIGJ5IHRoZSAidGhy
ZWFkc2FmZSIgc3R5bGUgb2YgZGVhdGgKK3Rlc3QsIHRocmVhZCBwcm9ibGVtcyBzdWNoIGFzIGRl
YWRsb2NrIGFyZSBzdGlsbCBwb3NzaWJsZSBpbiB0aGUgcHJlc2VuY2Ugb2YKK2hhbmRsZXJzIHJl
Z2lzdGVyZWQgd2l0aCBgcHRocmVhZF9hdGZvcmsoMylgLgorCisjIFVzaW5nIEFzc2VydGlvbnMg
aW4gU3ViLXJvdXRpbmVzICMKKworIyMgQWRkaW5nIFRyYWNlcyB0byBBc3NlcnRpb25zICMjCisK
K0lmIGEgdGVzdCBzdWItcm91dGluZSBpcyBjYWxsZWQgZnJvbSBzZXZlcmFsIHBsYWNlcywgd2hl
biBhbiBhc3NlcnRpb24KK2luc2lkZSBpdCBmYWlscywgaXQgY2FuIGJlIGhhcmQgdG8gdGVsbCB3
aGljaCBpbnZvY2F0aW9uIG9mIHRoZQorc3ViLXJvdXRpbmUgdGhlIGZhaWx1cmUgaXMgZnJvbS4g
IFlvdSBjYW4gYWxsZXZpYXRlIHRoaXMgcHJvYmxlbSB1c2luZworZXh0cmEgbG9nZ2luZyBvciBj
dXN0b20gZmFpbHVyZSBtZXNzYWdlcywgYnV0IHRoYXQgdXN1YWxseSBjbHV0dGVycyB1cAoreW91
ciB0ZXN0cy4gQSBiZXR0ZXIgc29sdXRpb24gaXMgdG8gdXNlIHRoZSBgU0NPUEVEX1RSQUNFYCBt
YWNybzoKKworfCBgU0NPUEVEX1RSQUNFKGBfbWVzc2FnZV9gKTtgIHwKK3w6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS18CisKK3doZXJlIF9tZXNzYWdlXyBjYW4gYmUgYW55dGhpbmcgc3Ry
ZWFtYWJsZSB0byBgc3RkOjpvc3RyZWFtYC4gVGhpcworbWFjcm8gd2lsbCBjYXVzZSB0aGUgY3Vy
cmVudCBmaWxlIG5hbWUsIGxpbmUgbnVtYmVyLCBhbmQgdGhlIGdpdmVuCittZXNzYWdlIHRvIGJl
IGFkZGVkIGluIGV2ZXJ5IGZhaWx1cmUgbWVzc2FnZS4gVGhlIGVmZmVjdCB3aWxsIGJlCit1bmRv
bmUgd2hlbiB0aGUgY29udHJvbCBsZWF2ZXMgdGhlIGN1cnJlbnQgbGV4aWNhbCBzY29wZS4KKwor
Rm9yIGV4YW1wbGUsCisKK2BgYAorMTA6IHZvaWQgU3ViMShpbnQgbikgeworMTE6ICAgRVhQRUNU
X0VRKDEsIEJhcihuKSk7CisxMjogICBFWFBFQ1RfRVEoMiwgQmFyKG4gKyAxKSk7CisxMzogfQor
MTQ6CisxNTogVEVTVChGb29UZXN0LCBCYXIpIHsKKzE2OiAgIHsKKzE3OiAgICAgU0NPUEVEX1RS
QUNFKCJBIik7ICAvLyBUaGlzIHRyYWNlIHBvaW50IHdpbGwgYmUgaW5jbHVkZWQgaW4KKzE4OiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVyeSBmYWlsdXJlIGluIHRoaXMgc2NvcGUuCisx
OTogICAgIFN1YjEoMSk7CisyMDogICB9CisyMTogICAvLyBOb3cgaXQgd29uJ3QuCisyMjogICBT
dWIxKDkpOworMjM6IH0KK2BgYAorCitjb3VsZCByZXN1bHQgaW4gbWVzc2FnZXMgbGlrZSB0aGVz
ZToKKworYGBgCitwYXRoL3RvL2Zvb190ZXN0LmNjOjExOiBGYWlsdXJlCitWYWx1ZSBvZjogQmFy
KG4pCitFeHBlY3RlZDogMQorICBBY3R1YWw6IDIKKyAgIFRyYWNlOgorcGF0aC90by9mb29fdGVz
dC5jYzoxNzogQQorCitwYXRoL3RvL2Zvb190ZXN0LmNjOjEyOiBGYWlsdXJlCitWYWx1ZSBvZjog
QmFyKG4gKyAxKQorRXhwZWN0ZWQ6IDIKKyAgQWN0dWFsOiAzCitgYGAKKworV2l0aG91dCB0aGUg
dHJhY2UsIGl0IHdvdWxkJ3ZlIGJlZW4gZGlmZmljdWx0IHRvIGtub3cgd2hpY2ggaW52b2NhdGlv
bgorb2YgYFN1YjEoKWAgdGhlIHR3byBmYWlsdXJlcyBjb21lIGZyb20gcmVzcGVjdGl2ZWx5LiAo
WW91IGNvdWxkIGFkZCBhbgorZXh0cmEgbWVzc2FnZSB0byBlYWNoIGFzc2VydGlvbiBpbiBgU3Vi
MSgpYCB0byBpbmRpY2F0ZSB0aGUgdmFsdWUgb2YKK2BuYCwgYnV0IHRoYXQncyB0ZWRpb3VzLikK
KworU29tZSB0aXBzIG9uIHVzaW5nIGBTQ09QRURfVFJBQ0VgOgorCisgIDEuIFdpdGggYSBzdWl0
YWJsZSBtZXNzYWdlLCBpdCdzIG9mdGVuIGVub3VnaCB0byB1c2UgYFNDT1BFRF9UUkFDRWAgYXQg
dGhlIGJlZ2lubmluZyBvZiBhIHN1Yi1yb3V0aW5lLCBpbnN0ZWFkIG9mIGF0IGVhY2ggY2FsbCBz
aXRlLgorICAxLiBXaGVuIGNhbGxpbmcgc3ViLXJvdXRpbmVzIGluc2lkZSBhIGxvb3AsIG1ha2Ug
dGhlIGxvb3AgaXRlcmF0b3IgcGFydCBvZiB0aGUgbWVzc2FnZSBpbiBgU0NPUEVEX1RSQUNFYCBz
dWNoIHRoYXQgeW91IGNhbiBrbm93IHdoaWNoIGl0ZXJhdGlvbiB0aGUgZmFpbHVyZSBpcyBmcm9t
LgorICAxLiBTb21ldGltZXMgdGhlIGxpbmUgbnVtYmVyIG9mIHRoZSB0cmFjZSBwb2ludCBpcyBl
bm91Z2ggZm9yIGlkZW50aWZ5aW5nIHRoZSBwYXJ0aWN1bGFyIGludm9jYXRpb24gb2YgYSBzdWIt
cm91dGluZS4gSW4gdGhpcyBjYXNlLCB5b3UgZG9uJ3QgaGF2ZSB0byBjaG9vc2UgYSB1bmlxdWUg
bWVzc2FnZSBmb3IgYFNDT1BFRF9UUkFDRWAuIFlvdSBjYW4gc2ltcGx5IHVzZSBgIiJgLgorICAx
LiBZb3UgY2FuIHVzZSBgU0NPUEVEX1RSQUNFYCBpbiBhbiBpbm5lciBzY29wZSB3aGVuIHRoZXJl
IGlzIG9uZSBpbiB0aGUgb3V0ZXIgc2NvcGUuIEluIHRoaXMgY2FzZSwgYWxsIGFjdGl2ZSB0cmFj
ZSBwb2ludHMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZmFpbHVyZSBtZXNzYWdlcywgaW4gcmV2
ZXJzZSBvcmRlciB0aGV5IGFyZSBlbmNvdW50ZXJlZC4KKyAgMS4gVGhlIHRyYWNlIGR1bXAgaXMg
Y2xpY2thYmxlIGluIEVtYWNzJyBjb21waWxhdGlvbiBidWZmZXIgLSBoaXQgcmV0dXJuIG9uIGEg
bGluZSBudW1iZXIgYW5kIHlvdSdsbCBiZSB0YWtlbiB0byB0aGF0IGxpbmUgaW4gdGhlIHNvdXJj
ZSBmaWxlIQorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgUHJv
cGFnYXRpbmcgRmF0YWwgRmFpbHVyZXMgIyMKKworQSBjb21tb24gcGl0ZmFsbCB3aGVuIHVzaW5n
IGBBU1NFUlRfKmAgYW5kIGBGQUlMKmAgaXMgbm90IHVuZGVyc3RhbmRpbmcgdGhhdAord2hlbiB0
aGV5IGZhaWwgdGhleSBvbmx5IGFib3J0IHRoZSBfY3VycmVudCBmdW5jdGlvbl8sIG5vdCB0aGUg
ZW50aXJlIHRlc3QuIEZvcgorZXhhbXBsZSwgdGhlIGZvbGxvd2luZyB0ZXN0IHdpbGwgc2VnZmF1
bHQ6CitgYGAKK3ZvaWQgU3Vicm91dGluZSgpIHsKKyAgLy8gR2VuZXJhdGVzIGEgZmF0YWwgZmFp
bHVyZSBhbmQgYWJvcnRzIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgorICBBU1NFUlRfRVEoMSwgMik7
CisgIC8vIFRoZSBmb2xsb3dpbmcgd29uJ3QgYmUgZXhlY3V0ZWQuCisgIC4uLgorfQorCitURVNU
KEZvb1Rlc3QsIEJhcikgeworICBTdWJyb3V0aW5lKCk7CisgIC8vIFRoZSBpbnRlbmRlZCBiZWhh
dmlvciBpcyBmb3IgdGhlIGZhdGFsIGZhaWx1cmUKKyAgLy8gaW4gU3Vicm91dGluZSgpIHRvIGFi
b3J0IHRoZSBlbnRpcmUgdGVzdC4KKyAgLy8gVGhlIGFjdHVhbCBiZWhhdmlvcjogdGhlIGZ1bmN0
aW9uIGdvZXMgb24gYWZ0ZXIgU3Vicm91dGluZSgpIHJldHVybnMuCisgIGludCogcCA9IE5VTEw7
CisgICpwID0gMzsgLy8gU2VnZmF1bHQhCit9CitgYGAKKworU2luY2Ugd2UgZG9uJ3QgdXNlIGV4
Y2VwdGlvbnMsIGl0IGlzIHRlY2huaWNhbGx5IGltcG9zc2libGUgdG8KK2ltcGxlbWVudCB0aGUg
aW50ZW5kZWQgYmVoYXZpb3IgaGVyZS4gIFRvIGFsbGV2aWF0ZSB0aGlzLCBHb29nbGUgVGVzdAor
cHJvdmlkZXMgdHdvIHNvbHV0aW9ucy4gIFlvdSBjb3VsZCB1c2UgZWl0aGVyIHRoZQorYChBU1NF
UlR8RVhQRUNUKV9OT19GQVRBTF9GQUlMVVJFYCBhc3NlcnRpb25zIG9yIHRoZQorYEhhc0ZhdGFs
RmFpbHVyZSgpYCBmdW5jdGlvbi4gIFRoZXkgYXJlIGRlc2NyaWJlZCBpbiB0aGUgZm9sbG93aW5n
IHR3bworc3Vic2VjdGlvbnMuCisKKworCisjIyMgQXNzZXJ0aW5nIG9uIFN1YnJvdXRpbmVzICMj
IworCitBcyBzaG93biBhYm92ZSwgaWYgeW91ciB0ZXN0IGNhbGxzIGEgc3Vicm91dGluZSB0aGF0
IGhhcyBhbiBgQVNTRVJUXypgCitmYWlsdXJlIGluIGl0LCB0aGUgdGVzdCB3aWxsIGNvbnRpbnVl
IGFmdGVyIHRoZSBzdWJyb3V0aW5lCityZXR1cm5zLiBUaGlzIG1heSBub3QgYmUgd2hhdCB5b3Ug
d2FudC4KKworT2Z0ZW4gcGVvcGxlIHdhbnQgZmF0YWwgZmFpbHVyZXMgdG8gcHJvcGFnYXRlIGxp
a2UgZXhjZXB0aW9ucy4gIEZvcgordGhhdCBHb29nbGUgVGVzdCBvZmZlcnMgdGhlIGZvbGxvd2lu
ZyBtYWNyb3M6CisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9u
KiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShg
X3N0YXRlbWVudF9gKTtgIHwgYEVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50X2Ap
O2AgfCBfc3RhdGVtZW50XyBkb2Vzbid0IGdlbmVyYXRlIGFueSBuZXcgZmF0YWwgZmFpbHVyZXMg
aW4gdGhlIGN1cnJlbnQgdGhyZWFkLiB8CisKK09ubHkgZmFpbHVyZXMgaW4gdGhlIHRocmVhZCB0
aGF0IGV4ZWN1dGVzIHRoZSBhc3NlcnRpb24gYXJlIGNoZWNrZWQgdG8KK2RldGVybWluZSB0aGUg
cmVzdWx0IG9mIHRoaXMgdHlwZSBvZiBhc3NlcnRpb25zLiAgSWYgX3N0YXRlbWVudF8KK2NyZWF0
ZXMgbmV3IHRocmVhZHMsIGZhaWx1cmVzIGluIHRoZXNlIHRocmVhZHMgYXJlIGlnbm9yZWQuCisK
K0V4YW1wbGVzOgorCitgYGAKK0FTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEZvbygpKTsKKworaW50
IGk7CitFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRSh7CisgIGkgPSBCYXIoKTsKK30pOworYGBgCisK
K19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLiBBc3NlcnRpb25zIGZyb20gbXVs
dGlwbGUgdGhyZWFkcworYXJlIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgorCisjIyMgQ2hlY2tp
bmcgZm9yIEZhaWx1cmVzIGluIHRoZSBDdXJyZW50IFRlc3QgIyMjCisKK2BIYXNGYXRhbEZhaWx1
cmUoKWAgaW4gdGhlIGA6OnRlc3Rpbmc6OlRlc3RgIGNsYXNzIHJldHVybnMgYHRydWVgIGlmIGFu
Cithc3NlcnRpb24gaW4gdGhlIGN1cnJlbnQgdGVzdCBoYXMgc3VmZmVyZWQgYSBmYXRhbCBmYWls
dXJlLiBUaGlzCithbGxvd3MgZnVuY3Rpb25zIHRvIGNhdGNoIGZhdGFsIGZhaWx1cmVzIGluIGEg
c3ViLXJvdXRpbmUgYW5kIHJldHVybgorZWFybHkuCisKK2BgYAorY2xhc3MgVGVzdCB7CisgcHVi
bGljOgorICAuLi4KKyAgc3RhdGljIGJvb2wgSGFzRmF0YWxGYWlsdXJlKCk7Cit9OworYGBgCisK
K1RoZSB0eXBpY2FsIHVzYWdlLCB3aGljaCBiYXNpY2FsbHkgc2ltdWxhdGVzIHRoZSBiZWhhdmlv
ciBvZiBhIHRocm93bgorZXhjZXB0aW9uLCBpczoKKworYGBgCitURVNUKEZvb1Rlc3QsIEJhcikg
eworICBTdWJyb3V0aW5lKCk7CisgIC8vIEFib3J0cyBpZiBTdWJyb3V0aW5lKCkgaGFkIGEgZmF0
YWwgZmFpbHVyZS4KKyAgaWYgKEhhc0ZhdGFsRmFpbHVyZSgpKQorICAgIHJldHVybjsKKyAgLy8g
VGhlIGZvbGxvd2luZyB3b24ndCBiZSBleGVjdXRlZC4KKyAgLi4uCit9CitgYGAKKworSWYgYEhh
c0ZhdGFsRmFpbHVyZSgpYCBpcyB1c2VkIG91dHNpZGUgb2YgYFRFU1QoKWAgLCBgVEVTVF9GKClg
ICwgb3IgYSB0ZXN0CitmaXh0dXJlLCB5b3UgbXVzdCBhZGQgdGhlIGA6OnRlc3Rpbmc6OlRlc3Q6
OmAgcHJlZml4LCBhcyBpbjoKKworYGBgCitpZiAoOjp0ZXN0aW5nOjpUZXN0OjpIYXNGYXRhbEZh
aWx1cmUoKSkKKyAgcmV0dXJuOworYGBgCisKK1NpbWlsYXJseSwgYEhhc05vbmZhdGFsRmFpbHVy
ZSgpYCByZXR1cm5zIGB0cnVlYCBpZiB0aGUgY3VycmVudCB0ZXN0CitoYXMgYXQgbGVhc3Qgb25l
IG5vbi1mYXRhbCBmYWlsdXJlLCBhbmQgYEhhc0ZhaWx1cmUoKWAgcmV0dXJucyBgdHJ1ZWAKK2lm
IHRoZSBjdXJyZW50IHRlc3QgaGFzIGF0IGxlYXN0IG9uZSBmYWlsdXJlIG9mIGVpdGhlciBraW5k
LgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4gIGBIYXNOb25mYXRhbEZh
aWx1cmUoKWAgYW5kCitgSGFzRmFpbHVyZSgpYCBhcmUgYXZhaWxhYmxlIHNpbmNlIHZlcnNpb24g
MS40LjAuCisKKyMgTG9nZ2luZyBBZGRpdGlvbmFsIEluZm9ybWF0aW9uICMKKworSW4geW91ciB0
ZXN0IGNvZGUsIHlvdSBjYW4gY2FsbCBgUmVjb3JkUHJvcGVydHkoImtleSIsIHZhbHVlKWAgdG8g
bG9nCithZGRpdGlvbmFsIGluZm9ybWF0aW9uLCB3aGVyZSBgdmFsdWVgIGNhbiBiZSBlaXRoZXIg
YSBDIHN0cmluZyBvciBhIDMyLWJpdAoraW50ZWdlci4gVGhlIF9sYXN0XyB2YWx1ZSByZWNvcmRl
ZCBmb3IgYSBrZXkgd2lsbCBiZSBlbWl0dGVkIHRvIHRoZSBYTUwgb3V0cHV0CitpZiB5b3Ugc3Bl
Y2lmeSBvbmUuIEZvciBleGFtcGxlLCB0aGUgdGVzdAorCitgYGAKK1RFU1RfRihXaWRnZXRVc2Fn
ZVRlc3QsIE1pbkFuZE1heFdpZGdldHMpIHsKKyAgUmVjb3JkUHJvcGVydHkoIk1heGltdW1XaWRn
ZXRzIiwgQ29tcHV0ZU1heFVzYWdlKCkpOworICBSZWNvcmRQcm9wZXJ0eSgiTWluaW11bVdpZGdl
dHMiLCBDb21wdXRlTWluVXNhZ2UoKSk7Cit9CitgYGAKKword2lsbCBvdXRwdXQgWE1MIGxpa2Ug
dGhpczoKKworYGBgCisuLi4KKyAgPHRlc3RjYXNlIG5hbWU9Ik1pbkFuZE1heFdpZGdldHMiIHN0
YXR1cz0icnVuIiB0aW1lPSI2IiBjbGFzc25hbWU9IldpZGdldFVzYWdlVGVzdCIKKyAgICAgICAg
ICAgIE1heGltdW1XaWRnZXRzPSIxMiIKKyAgICAgICAgICAgIE1pbmltdW1XaWRnZXRzPSI5IiAv
PgorLi4uCitgYGAKKworX05vdGVfOgorICAqIGBSZWNvcmRQcm9wZXJ0eSgpYCBpcyBhIHN0YXRp
YyBtZW1iZXIgb2YgdGhlIGBUZXN0YCBjbGFzcy4gVGhlcmVmb3JlIGl0IG5lZWRzIHRvIGJlIHBy
ZWZpeGVkIHdpdGggYDo6dGVzdGluZzo6VGVzdDo6YCBpZiB1c2VkIG91dHNpZGUgb2YgdGhlIGBU
RVNUYCBib2R5IGFuZCB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLgorICAqIGBrZXlgIG11c3QgYmUg
YSB2YWxpZCBYTUwgYXR0cmlidXRlIG5hbWUsIGFuZCBjYW5ub3QgY29uZmxpY3Qgd2l0aCB0aGUg
b25lcyBhbHJlYWR5IHVzZWQgYnkgR29vZ2xlIFRlc3QgKGBuYW1lYCwgYHN0YXR1c2AsICAgICBg
dGltZWAsIGFuZCBgY2xhc3NuYW1lYCkuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjLgorCisjIFNoYXJpbmcgUmVzb3VyY2VzIEJldHdlZW4gVGVzdHMgaW4gdGhlIFNhbWUg
VGVzdCBDYXNlICMKKworCisKK0dvb2dsZSBUZXN0IGNyZWF0ZXMgYSBuZXcgdGVzdCBmaXh0dXJl
IG9iamVjdCBmb3IgZWFjaCB0ZXN0IGluIG9yZGVyIHRvIG1ha2UKK3Rlc3RzIGluZGVwZW5kZW50
IGFuZCBlYXNpZXIgdG8gZGVidWcuIEhvd2V2ZXIsIHNvbWV0aW1lcyB0ZXN0cyB1c2UgcmVzb3Vy
Y2VzCit0aGF0IGFyZSBleHBlbnNpdmUgdG8gc2V0IHVwLCBtYWtpbmcgdGhlIG9uZS1jb3B5LXBl
ci10ZXN0IG1vZGVsIHByb2hpYml0aXZlbHkKK2V4cGVuc2l2ZS4KKworSWYgdGhlIHRlc3RzIGRv
bid0IGNoYW5nZSB0aGUgcmVzb3VyY2UsIHRoZXJlJ3Mgbm8gaGFybSBpbiB0aGVtIHNoYXJpbmcg
YQorc2luZ2xlIHJlc291cmNlIGNvcHkuIFNvLCBpbiBhZGRpdGlvbiB0byBwZXItdGVzdCBzZXQt
dXAvdGVhci1kb3duLCBHb29nbGUgVGVzdAorYWxzbyBzdXBwb3J0cyBwZXItdGVzdC1jYXNlIHNl
dC11cC90ZWFyLWRvd24uIFRvIHVzZSBpdDoKKworICAxLiBJbiB5b3VyIHRlc3QgZml4dHVyZSBj
bGFzcyAoc2F5IGBGb29UZXN0YCApLCBkZWZpbmUgYXMgYHN0YXRpY2Agc29tZSBtZW1iZXIgdmFy
aWFibGVzIHRvIGhvbGQgdGhlIHNoYXJlZCByZXNvdXJjZXMuCisgIDEuIEluIHRoZSBzYW1lIHRl
c3QgZml4dHVyZSBjbGFzcywgZGVmaW5lIGEgYHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKWAg
ZnVuY3Rpb24gKHJlbWVtYmVyIG5vdCB0byBzcGVsbCBpdCBhcyAqKmBTZXR1cFRlc3RDYXNlYCoq
IHdpdGggYSBzbWFsbCBgdWAhKSB0byBzZXQgdXAgdGhlIHNoYXJlZCByZXNvdXJjZXMgYW5kIGEg
YHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKWAgZnVuY3Rpb24gdG8gdGVhciB0aGVtIGRv
d24uCisKK1RoYXQncyBpdCEgR29vZ2xlIFRlc3QgYXV0b21hdGljYWxseSBjYWxscyBgU2V0VXBU
ZXN0Q2FzZSgpYCBiZWZvcmUgcnVubmluZyB0aGUKK19maXJzdCB0ZXN0XyBpbiB0aGUgYEZvb1Rl
c3RgIHRlc3QgY2FzZSAoaS5lLiBiZWZvcmUgY3JlYXRpbmcgdGhlIGZpcnN0CitgRm9vVGVzdGAg
b2JqZWN0KSwgYW5kIGNhbGxzIGBUZWFyRG93blRlc3RDYXNlKClgIGFmdGVyIHJ1bm5pbmcgdGhl
IF9sYXN0IHRlc3RfCitpbiBpdCAoaS5lLiBhZnRlciBkZWxldGluZyB0aGUgbGFzdCBgRm9vVGVz
dGAgb2JqZWN0KS4gSW4gYmV0d2VlbiwgdGhlIHRlc3RzCitjYW4gdXNlIHRoZSBzaGFyZWQgcmVz
b3VyY2VzLgorCitSZW1lbWJlciB0aGF0IHRoZSB0ZXN0IG9yZGVyIGlzIHVuZGVmaW5lZCwgc28g
eW91ciBjb2RlIGNhbid0IGRlcGVuZCBvbiBhIHRlc3QKK3ByZWNlZGluZyBvciBmb2xsb3dpbmcg
YW5vdGhlci4gQWxzbywgdGhlIHRlc3RzIG11c3QgZWl0aGVyIG5vdCBtb2RpZnkgdGhlCitzdGF0
ZSBvZiBhbnkgc2hhcmVkIHJlc291cmNlLCBvciwgaWYgdGhleSBkbyBtb2RpZnkgdGhlIHN0YXRl
LCB0aGV5IG11c3QKK3Jlc3RvcmUgdGhlIHN0YXRlIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZSBiZWZv
cmUgcGFzc2luZyBjb250cm9sIHRvIHRoZSBuZXh0Cit0ZXN0LgorCitIZXJlJ3MgYW4gZXhhbXBs
ZSBvZiBwZXItdGVzdC1jYXNlIHNldC11cCBhbmQgdGVhci1kb3duOgorYGBgCitjbGFzcyBGb29U
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAvLyBQZXItdGVz
dC1jYXNlIHNldC11cC4KKyAgLy8gQ2FsbGVkIGJlZm9yZSB0aGUgZmlyc3QgdGVzdCBpbiB0aGlz
IHRlc3QgY2FzZS4KKyAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90IG5lZWRlZC4KKyAgc3RhdGlj
IHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKKyAgICBzaGFyZWRfcmVzb3VyY2VfID0gbmV3IC4uLjsK
KyAgfQorCisgIC8vIFBlci10ZXN0LWNhc2UgdGVhci1kb3duLgorICAvLyBDYWxsZWQgYWZ0ZXIg
dGhlIGxhc3QgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZS4KKyAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYg
bm90IG5lZWRlZC4KKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBkZWxl
dGUgc2hhcmVkX3Jlc291cmNlXzsKKyAgICBzaGFyZWRfcmVzb3VyY2VfID0gTlVMTDsKKyAgfQor
CisgIC8vIFlvdSBjYW4gZGVmaW5lIHBlci10ZXN0IHNldC11cCBhbmQgdGVhci1kb3duIGxvZ2lj
IGFzIHVzdWFsLgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IC4uLiB9CisgIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsgLi4uIH0KKworICAvLyBTb21lIGV4cGVuc2l2ZSByZXNvdXJjZSBzaGFy
ZWQgYnkgYWxsIHRlc3RzLgorICBzdGF0aWMgVCogc2hhcmVkX3Jlc291cmNlXzsKK307CisKK1Qq
IEZvb1Rlc3Q6OnNoYXJlZF9yZXNvdXJjZV8gPSBOVUxMOworCitURVNUX0YoRm9vVGVzdCwgVGVz
dDEpIHsKKyAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlIGhlcmUgLi4uCit9
CitURVNUX0YoRm9vVGVzdCwgVGVzdDIpIHsKKyAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVk
X3Jlc291cmNlIGhlcmUgLi4uCit9CitgYGAKKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5k
b3dzLCBNYWMuCisKKyMgR2xvYmFsIFNldC1VcCBhbmQgVGVhci1Eb3duICMKKworSnVzdCBhcyB5
b3UgY2FuIGRvIHNldC11cCBhbmQgdGVhci1kb3duIGF0IHRoZSB0ZXN0IGxldmVsIGFuZCB0aGUg
dGVzdCBjYXNlCitsZXZlbCwgeW91IGNhbiBhbHNvIGRvIGl0IGF0IHRoZSB0ZXN0IHByb2dyYW0g
bGV2ZWwuIEhlcmUncyBob3cuCisKK0ZpcnN0LCB5b3Ugc3ViY2xhc3MgdGhlIGA6OnRlc3Rpbmc6
OkVudmlyb25tZW50YCBjbGFzcyB0byBkZWZpbmUgYSB0ZXN0CitlbnZpcm9ubWVudCwgd2hpY2gg
a25vd3MgaG93IHRvIHNldC11cCBhbmQgdGVhci1kb3duOgorCitgYGAKK2NsYXNzIEVudmlyb25t
ZW50IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfkVudmlyb25tZW50KCkge30KKyAgLy8gT3ZlcnJp
ZGUgdGhpcyB0byBkZWZpbmUgaG93IHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQuCisgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHt9CisgIC8vIE92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGhvdyB0byB0
ZWFyIGRvd24gdGhlIGVudmlyb25tZW50LgorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7fQor
fTsKK2BgYAorCitUaGVuLCB5b3UgcmVnaXN0ZXIgYW4gaW5zdGFuY2Ugb2YgeW91ciBlbnZpcm9u
bWVudCBjbGFzcyB3aXRoIEdvb2dsZSBUZXN0IGJ5CitjYWxsaW5nIHRoZSBgOjp0ZXN0aW5nOjpB
ZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgZnVuY3Rpb246CisKK2BgYAorRW52aXJvbm1lbnQq
IEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KTsKK2BgYAorCitOb3cs
IHdoZW4gYFJVTl9BTExfVEVTVFMoKWAgaXMgY2FsbGVkLCBpdCBmaXJzdCBjYWxscyB0aGUgYFNl
dFVwKClgIG1ldGhvZCBvZgordGhlIGVudmlyb25tZW50IG9iamVjdCwgdGhlbiBydW5zIHRoZSB0
ZXN0cyBpZiB0aGVyZSB3YXMgbm8gZmF0YWwgZmFpbHVyZXMsIGFuZAorZmluYWxseSBjYWxscyBg
VGVhckRvd24oKWAgb2YgdGhlIGVudmlyb25tZW50IG9iamVjdC4KKworSXQncyBPSyB0byByZWdp
c3RlciBtdWx0aXBsZSBlbnZpcm9ubWVudCBvYmplY3RzLiBJbiB0aGlzIGNhc2UsIHRoZWlyIGBT
ZXRVcCgpYAord2lsbCBiZSBjYWxsZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIHJlZ2lzdGVyZWQs
IGFuZCB0aGVpciBgVGVhckRvd24oKWAgd2lsbCBiZQorY2FsbGVkIGluIHRoZSByZXZlcnNlIG9y
ZGVyLgorCitOb3RlIHRoYXQgR29vZ2xlIFRlc3QgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSByZWdp
c3RlcmVkIGVudmlyb25tZW50IG9iamVjdHMuCitUaGVyZWZvcmUgKipkbyBub3QgZGVsZXRlIHRo
ZW0qKiBieSB5b3Vyc2VsZi4KKworWW91IHNob3VsZCBjYWxsIGBBZGRHbG9iYWxUZXN0RW52aXJv
bm1lbnQoKWAgYmVmb3JlIGBSVU5fQUxMX1RFU1RTKClgIGlzCitjYWxsZWQsIHByb2JhYmx5IGlu
IGBtYWluKClgLiBJZiB5b3UgdXNlIGBndGVzdF9tYWluYCwgeW91IG5lZWQgdG8gICAgICBjYWxs
Cit0aGlzIGJlZm9yZSBgbWFpbigpYCBzdGFydHMgZm9yIGl0IHRvIHRha2UgZWZmZWN0LiBPbmUg
d2F5IHRvIGRvIHRoaXMgaXMgdG8KK2RlZmluZSBhIGdsb2JhbCB2YXJpYWJsZSBsaWtlIHRoaXM6
CisKK2BgYAorOjp0ZXN0aW5nOjpFbnZpcm9ubWVudCogY29uc3QgZm9vX2VudiA9IDo6dGVzdGlu
Zzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBGb29FbnZpcm9ubWVudCk7CitgYGAKKwor
SG93ZXZlciwgd2Ugc3Ryb25nbHkgcmVjb21tZW5kIHlvdSB0byB3cml0ZSB5b3VyIG93biBgbWFp
bigpYCBhbmQgY2FsbAorYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCB0aGVyZSwgYXMgcmVs
eWluZyBvbiBpbml0aWFsaXphdGlvbiBvZiBnbG9iYWwKK3ZhcmlhYmxlcyBtYWtlcyB0aGUgY29k
ZSBoYXJkZXIgdG8gcmVhZCBhbmQgbWF5IGNhdXNlIHByb2JsZW1zIHdoZW4geW91CityZWdpc3Rl
ciBtdWx0aXBsZSBlbnZpcm9ubWVudHMgZnJvbSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMg
YW5kIHRoZQorZW52aXJvbm1lbnRzIGhhdmUgZGVwZW5kZW5jaWVzIGFtb25nIHRoZW0gKHJlbWVt
YmVyIHRoYXQgdGhlIGNvbXBpbGVyIGRvZXNuJ3QKK2d1YXJhbnRlZSB0aGUgb3JkZXIgaW4gd2hp
Y2ggZ2xvYmFsIHZhcmlhYmxlcyBmcm9tIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cworYXJl
IGluaXRpYWxpemVkKS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisK
KworIyBWYWx1ZSBQYXJhbWV0ZXJpemVkIFRlc3RzICMKKworX1ZhbHVlLXBhcmFtZXRlcml6ZWQg
dGVzdHNfIGFsbG93IHlvdSB0byB0ZXN0IHlvdXIgY29kZSB3aXRoIGRpZmZlcmVudAorcGFyYW1l
dGVycyB3aXRob3V0IHdyaXRpbmcgbXVsdGlwbGUgY29waWVzIG9mIHRoZSBzYW1lIHRlc3QuCisK
K1N1cHBvc2UgeW91IHdyaXRlIGEgdGVzdCBmb3IgeW91ciBjb2RlIGFuZCB0aGVuIHJlYWxpemUg
dGhhdCB5b3VyIGNvZGUgaXMgYWZmZWN0ZWQgYnkgYSBwcmVzZW5jZSBvZiBhIEJvb2xlYW4gY29t
bWFuZCBsaW5lIGZsYWcuCisKK2BgYAorVEVTVChNeUNvZGVUZXN0LCBUZXN0Rm9vKSB7CisgIC8v
IEEgY29kZSB0byB0ZXN0IGZvbygpLgorfQorYGBgCisKK1VzdWFsbHkgcGVvcGxlIGZhY3RvciB0
aGVpciB0ZXN0IGNvZGUgaW50byBhIGZ1bmN0aW9uIHdpdGggYSBCb29sZWFuIHBhcmFtZXRlciBp
biBzdWNoIHNpdHVhdGlvbnMuIFRoZSBmdW5jdGlvbiBzZXRzIHRoZSBmbGFnLCB0aGVuIGV4ZWN1
dGVzIHRoZSB0ZXN0aW5nIGNvZGUuCisKK2BgYAordm9pZCBUZXN0Rm9vSGVscGVyKGJvb2wgZmxh
Z192YWx1ZSkgeworICBmbGFnID0gZmxhZ192YWx1ZTsKKyAgLy8gQSBjb2RlIHRvIHRlc3QgZm9v
KCkuCit9CisKK1RFU1QoTXlDb2RlVGVzdCwgVGVzdEZvb28pIHsKKyAgVGVzdEZvb0hlbHBlcihm
YWxzZSk7CisgIFRlc3RGb29IZWxwZXIodHJ1ZSk7Cit9CitgYGAKKworQnV0IHRoaXMgc2V0dXAg
aGFzIHNlcmlvdXMgZHJhd2JhY2tzLiBGaXJzdCwgd2hlbiBhIHRlc3QgYXNzZXJ0aW9uIGZhaWxz
IGluIHlvdXIgdGVzdHMsIGl0IGJlY29tZXMgdW5jbGVhciB3aGF0IHZhbHVlIG9mIHRoZSBwYXJh
bWV0ZXIgY2F1c2VkIGl0IHRvIGZhaWwuIFlvdSBjYW4gc3RyZWFtIGEgY2xhcmlmeWluZyBtZXNz
YWdlIGludG8geW91ciBgRVhQRUNUYC9gQVNTRVJUYCBzdGF0ZW1lbnRzLCBidXQgaXQgeW91J2xs
IGhhdmUgdG8gZG8gaXQgd2l0aCBhbGwgb2YgdGhlbS4gU2Vjb25kLCB5b3UgaGF2ZSB0byBhZGQg
b25lIHN1Y2ggaGVscGVyIGZ1bmN0aW9uIHBlciB0ZXN0LiBXaGF0IGlmIHlvdSBoYXZlIHRlbiB0
ZXN0cz8gVHdlbnR5PyBBIGh1bmRyZWQ/CisKK1ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgd2ls
bCBsZXQgeW91IHdyaXRlIHlvdXIgdGVzdCBvbmx5IG9uY2UgYW5kIHRoZW4gZWFzaWx5IGluc3Rh
bnRpYXRlIGFuZCBydW4gaXQgd2l0aCBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHBhcmFtZXRlciB2
YWx1ZXMuCisKK0hlcmUgYXJlIHNvbWUgb3RoZXIgc2l0dWF0aW9ucyB3aGVuIHZhbHVlLXBhcmFt
ZXRlcml6ZWQgdGVzdHMgY29tZSBoYW5keToKKworICAqIFlvdSB3YW4gdG8gdGVzdCBkaWZmZXJl
bnQgaW1wbGVtZW50YXRpb25zIG9mIGFuIE9PIGludGVyZmFjZS4KKyAgKiBZb3Ugd2FudCB0byB0
ZXN0IHlvdXIgY29kZSBvdmVyIHZhcmlvdXMgaW5wdXRzIChhLmsuYS4gZGF0YS1kcml2ZW4gdGVz
dGluZykuIFRoaXMgZmVhdHVyZSBpcyBlYXN5IHRvIGFidXNlLCBzbyBwbGVhc2UgZXhlcmNpc2Ug
eW91ciBnb29kIHNlbnNlIHdoZW4gZG9pbmcgaXQhCisKKyMjIEhvdyB0byBXcml0ZSBWYWx1ZS1Q
YXJhbWV0ZXJpemVkIFRlc3RzICMjCisKK1RvIHdyaXRlIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dHMsIGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4dHVyZQorY2xhc3MuIEl0IG11c3QgYmUg
ZGVyaXZlZCBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08VD5gLCB3aGVyZSBgVGAKK2lz
IHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVlcy4gYFRlc3RXaXRoUGFyYW08VD5gIGlz
IGl0c2VsZgorZGVyaXZlZCBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RgLiBgVGAgY2FuIGJlIGFueSBj
b3B5YWJsZSB0eXBlLiBJZiBpdCdzCithIHJhdyBwb2ludGVyLCB5b3UgYXJlIHJlc3BvbnNpYmxl
IGZvciBtYW5hZ2luZyB0aGUgbGlmZXNwYW4gb2YgdGhlCitwb2ludGVkIHZhbHVlcy4KKworYGBg
CitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBj
aGFyKj4geworICAvLyBZb3UgY2FuIGltcGxlbWVudCBhbGwgdGhlIHVzdWFsIGZpeHR1cmUgY2xh
c3MgbWVtYmVycyBoZXJlLgorICAvLyBUbyBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyLCBjYWxs
IEdldFBhcmFtKCkgZnJvbSBjbGFzcworICAvLyBUZXN0V2l0aFBhcmFtPFQ+LgorfTsKK2BgYAor
CitUaGVuLCB1c2UgdGhlIGBURVNUX1BgIG1hY3JvIHRvIGRlZmluZSBhcyBtYW55IHRlc3QgcGF0
dGVybnMgdXNpbmcKK3RoaXMgZml4dHVyZSBhcyB5b3Ugd2FudC4gIFRoZSBgX1BgIHN1ZmZpeCBp
cyBmb3IgInBhcmFtZXRlcml6ZWQiIG9yCisicGF0dGVybiIsIHdoaWNoZXZlciB5b3UgcHJlZmVy
IHRvIHRoaW5rLgorCitgYGAKK1RFU1RfUChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJbnNp
ZGUgYSB0ZXN0LCBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyIHdpdGggdGhlIEdldFBhcmFtKCkg
bWV0aG9kCisgIC8vIG9mIHRoZSBUZXN0V2l0aFBhcmFtPFQ+IGNsYXNzOgorICBFWFBFQ1RfVFJV
RShmb28uQmxhaChHZXRQYXJhbSgpKSk7CisgIC4uLgorfQorCitURVNUX1AoRm9vVGVzdCwgSGFz
QmxhaEJsYWgpIHsKKyAgLi4uCit9CitgYGAKKworRmluYWxseSwgeW91IGNhbiB1c2UgYElOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QYCB0byBpbnN0YW50aWF0ZSB0aGUgdGVzdAorY2FzZSB3aXRoIGFu
eSBzZXQgb2YgcGFyYW1ldGVycyB5b3Ugd2FudC4gR29vZ2xlIFRlc3QgZGVmaW5lcyBhIG51bWJl
ciBvZgorZnVuY3Rpb25zIGZvciBnZW5lcmF0aW5nIHRlc3QgcGFyYW1ldGVycy4gVGhleSByZXR1
cm4gd2hhdCB3ZSBjYWxsCisoc3VycHJpc2UhKSBfcGFyYW1ldGVyIGdlbmVyYXRvcnNfLiBIZXJl
IGlzIGEgc3VtbWFyeSBvZiB0aGVtLAord2hpY2ggYXJlIGFsbCBpbiB0aGUgYHRlc3RpbmdgIG5h
bWVzcGFjZToKKworfCBgUmFuZ2UoYmVnaW4sIGVuZFssIHN0ZXBdKWAgfCBZaWVsZHMgdmFsdWVz
IGB7YmVnaW4sIGJlZ2luK3N0ZXAsIGJlZ2luK3N0ZXArc3RlcCwgLi4ufWAuIFRoZSB2YWx1ZXMg
ZG8gbm90IGluY2x1ZGUgYGVuZGAuIGBzdGVwYCBkZWZhdWx0cyB0byAxLiB8Cit8Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYFZhbHVlcyh2MSwgdjIsIC4uLiwgdk4pYCAgIHwg
WWllbGRzIHZhbHVlcyBge3YxLCB2MiwgLi4uLCB2Tn1gLiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorfCBgVmFsdWVzSW4oY29udGFpbmVyKWAgYW5kIGBWYWx1ZXNJbihiZWdpbiwgZW5kKWAgfCBZ
aWVsZHMgdmFsdWVzIGZyb20gYSBDLXN0eWxlIGFycmF5LCBhbiBTVEwtc3R5bGUgY29udGFpbmVy
LCBvciBhbiBpdGVyYXRvciByYW5nZSBgW2JlZ2luLCBlbmQpYC4gICAgICAgICAgICAgICAgICB8
Cit8IGBCb29sKClgICAgICAgICAgICAgICAgICAgICB8IFlpZWxkcyBzZXF1ZW5jZSBge2ZhbHNl
LCB0cnVlfWAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYENvbWJpbmUoZzEsIGcyLCAu
Li4sIGdOKWAgIHwgWWllbGRzIGFsbCBjb21iaW5hdGlvbnMgKHRoZSBDYXJ0ZXNpYW4gcHJvZHVj
dCBmb3IgdGhlIG1hdGggc2F2dnkpIG9mIHRoZSB2YWx1ZXMgZ2VuZXJhdGVkIGJ5IHRoZSBgTmAg
Z2VuZXJhdG9ycy4gVGhpcyBpcyBvbmx5IGF2YWlsYWJsZSBpZiB5b3VyIHN5c3RlbSBwcm92aWRl
cyB0aGUgYDx0cjEvdHVwbGU+YCBoZWFkZXIuIElmIHlvdSBhcmUgc3VyZSB5b3VyIHN5c3RlbSBk
b2VzLCBhbmQgR29vZ2xlIFRlc3QgZGlzYWdyZWVzLCB5b3UgY2FuIG92ZXJyaWRlIGl0IGJ5IGRl
ZmluaW5nIGBHVEVTVF9IQVNfVFIxX1RVUExFPTFgLiBTZWUgY29tbWVudHMgaW4gW2luY2x1ZGUv
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oXSguLi9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uIHwKKworRm9yIG1vcmUgZGV0YWlscywg
c2VlIHRoZSBjb21tZW50cyBhdCB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlc2UgZnVuY3Rpb25zIGlu
IHRoZSBbc291cmNlIGNvZGVdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oKS4K
KworVGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgd2lsbCBpbnN0YW50aWF0ZSB0ZXN0cyBmcm9tIHRo
ZSBgRm9vVGVzdGAgdGVzdCBjYXNlCitlYWNoIHdpdGggcGFyYW1ldGVyIHZhbHVlcyBgIm1lZW55
ImAsIGAibWlueSJgLCBhbmQgYCJtb2UiYC4KKworYGBgCitJTlNUQU5USUFURV9URVNUX0NBU0Vf
UChJbnN0YW50aWF0aW9uTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvb1Rlc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygibWVlbnkiLCAibWlueSIs
ICJtb2UiKSk7CitgYGAKKworVG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50IGluc3RhbmNlcyBvZiB0
aGUgcGF0dGVybiAoeWVzLCB5b3UgY2FuCitpbnN0YW50aWF0ZSBpdCBtb3JlIHRoYW4gb25jZSks
IHRoZSBmaXJzdCBhcmd1bWVudCB0bworYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCBpcyBhIHBy
ZWZpeCB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGFjdHVhbAordGVzdCBjYXNlIG5hbWUuIFJl
bWVtYmVyIHRvIHBpY2sgdW5pcXVlIHByZWZpeGVzIGZvciBkaWZmZXJlbnQKK2luc3RhbnRpYXRp
b25zLiBUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhhdmUgdGhl
c2UKK25hbWVzOgorCisgICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMGAg
Zm9yIGAibWVlbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzFg
IGZvciBgIm1pbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzJg
IGZvciBgIm1vZSJgCisgICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgv
MGAgZm9yIGAibWVlbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhC
bGFoLzFgIGZvciBgIm1pbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0Js
YWhCbGFoLzJgIGZvciBgIm1vZSJgCisKK1lvdSBjYW4gdXNlIHRoZXNlIG5hbWVzIGluIFstLWd0
ZXN0XC1maWx0ZXJdKCNydW5uaW5nLWEtc3Vic2V0LW9mLXRoZS10ZXN0cykuCisKK1RoaXMgc3Rh
dGVtZW50IHdpbGwgaW5zdGFudGlhdGUgYWxsIHRlc3RzIGZyb20gYEZvb1Rlc3RgIGFnYWluLCBl
YWNoCit3aXRoIHBhcmFtZXRlciB2YWx1ZXMgYCJjYXQiYCBhbmQgYCJkb2ciYDoKKworYGBgCitj
b25zdCBjaGFyKiBwZXRzW10gPSB7ImNhdCIsICJkb2cifTsKK0lOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QKEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIDo6dGVzdGluZzo6VmFsdWVzSW4ocGV0cykpOworYGBgCisKK1RoZSB0ZXN0cyBmcm9t
IHRoZSBpbnN0YW50aWF0aW9uIGFib3ZlIHdpbGwgaGF2ZSB0aGVzZSBuYW1lczoKKworICAqIGBB
bm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8wYCBmb3IgYCJjYXQiYAor
ICAqIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8xYCBmb3IgYCJk
b2ciYAorICAqIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8w
YCBmb3IgYCJjYXQiYAorICAqIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNC
bGFoQmxhaC8xYCBmb3IgYCJkb2ciYAorCitQbGVhc2Ugbm90ZSB0aGF0IGBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUGAgd2lsbCBpbnN0YW50aWF0ZSBfYWxsXwordGVzdHMgaW4gdGhlIGdpdmVuIHRl
c3QgY2FzZSwgd2hldGhlciB0aGVpciBkZWZpbml0aW9ucyBjb21lIGJlZm9yZSBvcgorX2FmdGVy
XyB0aGUgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCBzdGF0ZW1lbnQuCisKK1lvdSBjYW4gc2Vl
CitbdGhlc2VdKC4uL3NhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYykKK1tmaWxlc10oLi4vc2Ft
cGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjKSBmb3IgbW9yZSBleGFtcGxlcy4KKworX0F2YWlsYWJp
bGl0eV86IExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYzsg
c2luY2UgdmVyc2lvbiAxLjIuMC4KKworIyMgQ3JlYXRpbmcgVmFsdWUtUGFyYW1ldGVyaXplZCBB
YnN0cmFjdCBUZXN0cyAjIworCitJbiB0aGUgYWJvdmUsIHdlIGRlZmluZSBhbmQgaW5zdGFudGlh
dGUgYEZvb1Rlc3RgIGluIHRoZSBzYW1lIHNvdXJjZQorZmlsZS4gU29tZXRpbWVzIHlvdSBtYXkg
d2FudCB0byBkZWZpbmUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBpbiBhCitsaWJyYXJ5IGFu
ZCBsZXQgb3RoZXIgcGVvcGxlIGluc3RhbnRpYXRlIHRoZW0gbGF0ZXIuIFRoaXMgcGF0dGVybiBp
cwora25vd24gYXMgPGk+YWJzdHJhY3QgdGVzdHM8L2k+LiBBcyBhbiBleGFtcGxlIG9mIGl0cyBh
cHBsaWNhdGlvbiwgd2hlbiB5b3UKK2FyZSBkZXNpZ25pbmcgYW4gaW50ZXJmYWNlIHlvdSBjYW4g
d3JpdGUgYSBzdGFuZGFyZCBzdWl0ZSBvZiBhYnN0cmFjdAordGVzdHMgKHBlcmhhcHMgdXNpbmcg
YSBmYWN0b3J5IGZ1bmN0aW9uIGFzIHRoZSB0ZXN0IHBhcmFtZXRlcikgdGhhdAorYWxsIGltcGxl
bWVudGF0aW9ucyBvZiB0aGUgaW50ZXJmYWNlIGFyZSBleHBlY3RlZCB0byBwYXNzLiBXaGVuCitz
b21lb25lIGltcGxlbWVudHMgdGhlIGludGVyZmFjZSwgaGUgY2FuIGluc3RhbnRpYXRlIHlvdXIg
c3VpdGUgdG8gZ2V0CithbGwgdGhlIGludGVyZmFjZS1jb25mb3JtYW5jZSB0ZXN0cyBmb3IgZnJl
ZS4KKworVG8gZGVmaW5lIGFic3RyYWN0IHRlc3RzLCB5b3Ugc2hvdWxkIG9yZ2FuaXplIHlvdXIg
Y29kZSBsaWtlIHRoaXM6CisKKyAgMS4gUHV0IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBwYXJhbWV0
ZXJpemVkIHRlc3QgZml4dHVyZSBjbGFzcyAoZS5nLiBgRm9vVGVzdGApIGluIGEgaGVhZGVyIGZp
bGUsIHNheSBgZm9vX3BhcmFtX3Rlc3QuaGAuIFRoaW5rIG9mIHRoaXMgYXMgX2RlY2xhcmluZ18g
eW91ciBhYnN0cmFjdCB0ZXN0cy4KKyAgMS4gUHV0IHRoZSBgVEVTVF9QYCBkZWZpbml0aW9ucyBp
biBgZm9vX3BhcmFtX3Rlc3QuY2NgLCB3aGljaCBpbmNsdWRlcyBgZm9vX3BhcmFtX3Rlc3QuaGAu
IFRoaW5rIG9mIHRoaXMgYXMgX2ltcGxlbWVudGluZ18geW91ciBhYnN0cmFjdCB0ZXN0cy4KKwor
T25jZSB0aGV5IGFyZSBkZWZpbmVkLCB5b3UgY2FuIGluc3RhbnRpYXRlIHRoZW0gYnkgaW5jbHVk
aW5nCitgZm9vX3BhcmFtX3Rlc3QuaGAsIGludm9raW5nIGBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UCgpYCwgYW5kIGxpbmtpbmcKK3dpdGggYGZvb19wYXJhbV90ZXN0LmNjYC4gWW91IGNhbiBpbnN0
YW50aWF0ZSB0aGUgc2FtZSBhYnN0cmFjdCB0ZXN0CitjYXNlIG11bHRpcGxlIHRpbWVzLCBwb3Nz
aWJseSBpbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgorCisjIFR5cGVkIFRlc3RzICMKKworU3Vw
cG9zZSB5b3UgaGF2ZSBtdWx0aXBsZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHNhbWUgaW50ZXJm
YWNlIGFuZAord2FudCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb2YgdGhlbSBzYXRpc2Z5IHNvbWUg
Y29tbW9uIHJlcXVpcmVtZW50cy4KK09yLCB5b3UgbWF5IGhhdmUgZGVmaW5lZCBzZXZlcmFsIHR5
cGVzIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGNvbmZvcm0gdG8KK3RoZSBzYW1lICJjb25jZXB0IiBh
bmQgeW91IHdhbnQgdG8gdmVyaWZ5IGl0LiAgSW4gYm90aCBjYXNlcywgeW91IHdhbnQKK3RoZSBz
YW1lIHRlc3QgbG9naWMgcmVwZWF0ZWQgZm9yIGRpZmZlcmVudCB0eXBlcy4KKworV2hpbGUgeW91
IGNhbiB3cml0ZSBvbmUgYFRFU1RgIG9yIGBURVNUX0ZgIGZvciBlYWNoIHR5cGUgeW91IHdhbnQg
dG8KK3Rlc3QgKGFuZCB5b3UgbWF5IGV2ZW4gZmFjdG9yIHRoZSB0ZXN0IGxvZ2ljIGludG8gYSBm
dW5jdGlvbiB0ZW1wbGF0ZQordGhhdCB5b3UgaW52b2tlIGZyb20gdGhlIGBURVNUYCksIGl0J3Mg
dGVkaW91cyBhbmQgZG9lc24ndCBzY2FsZToKK2lmIHlvdSB3YW50IF9tXyB0ZXN0cyBvdmVyIF9u
XyB0eXBlcywgeW91J2xsIGVuZCB1cCB3cml0aW5nIF9tXCpuXworYFRFU1Rgcy4KKworX1R5cGVk
IHRlc3RzXyBhbGxvdyB5b3UgdG8gcmVwZWF0IHRoZSBzYW1lIHRlc3QgbG9naWMgb3ZlciBhIGxp
c3Qgb2YKK3R5cGVzLiAgWW91IG9ubHkgbmVlZCB0byB3cml0ZSB0aGUgdGVzdCBsb2dpYyBvbmNl
LCBhbHRob3VnaCB5b3UgbXVzdAora25vdyB0aGUgdHlwZSBsaXN0IHdoZW4gd3JpdGluZyB0eXBl
ZCB0ZXN0cy4gIEhlcmUncyBob3cgeW91IGRvIGl0OgorCitGaXJzdCwgZGVmaW5lIGEgZml4dHVy
ZSBjbGFzcyB0ZW1wbGF0ZS4gIEl0IHNob3VsZCBiZSBwYXJhbWV0ZXJpemVkCitieSBhIHR5cGUu
ICBSZW1lbWJlciB0byBkZXJpdmUgaXQgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0YDoKKworYGBgCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHsKKyBwdWJsaWM6CisgIC4uLgorICB0eXBlZGVmIHN0ZDo6bGlzdDxUPiBMaXN0OworICBz
dGF0aWMgVCBzaGFyZWRfOworICBUIHZhbHVlXzsKK307CitgYGAKKworTmV4dCwgYXNzb2NpYXRl
IGEgbGlzdCBvZiB0eXBlcyB3aXRoIHRoZSB0ZXN0IGNhc2UsIHdoaWNoIHdpbGwgYmUKK3JlcGVh
dGVkIGZvciBlYWNoIHR5cGUgaW4gdGhlIGxpc3Q6CisKK2BgYAordHlwZWRlZiA6OnRlc3Rpbmc6
OlR5cGVzPGNoYXIsIGludCwgdW5zaWduZWQgaW50PiBNeVR5cGVzOworVFlQRURfVEVTVF9DQVNF
KEZvb1Rlc3QsIE15VHlwZXMpOworYGBgCisKK1RoZSBgdHlwZWRlZmAgaXMgbmVjZXNzYXJ5IGZv
ciB0aGUgYFRZUEVEX1RFU1RfQ0FTRWAgbWFjcm8gdG8gcGFyc2UKK2NvcnJlY3RseS4gIE90aGVy
d2lzZSB0aGUgY29tcGlsZXIgd2lsbCB0aGluayB0aGF0IGVhY2ggY29tbWEgaW4gdGhlCit0eXBl
IGxpc3QgaW50cm9kdWNlcyBhIG5ldyBtYWNybyBhcmd1bWVudC4KKworVGhlbiwgdXNlIGBUWVBF
RF9URVNUKClgIGluc3RlYWQgb2YgYFRFU1RfRigpYCB0byBkZWZpbmUgYSB0eXBlZCB0ZXN0Citm
b3IgdGhpcyB0ZXN0IGNhc2UuICBZb3UgY2FuIHJlcGVhdCB0aGlzIGFzIG1hbnkgdGltZXMgYXMg
eW91IHdhbnQ6CisKK2BgYAorVFlQRURfVEVTVChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJ
bnNpZGUgYSB0ZXN0LCByZWZlciB0byB0aGUgc3BlY2lhbCBuYW1lIFR5cGVQYXJhbSB0byBnZXQg
dGhlIHR5cGUKKyAgLy8gcGFyYW1ldGVyLiAgU2luY2Ugd2UgYXJlIGluc2lkZSBhIGRlcml2ZWQg
Y2xhc3MgdGVtcGxhdGUsIEMrKyByZXF1aXJlcworICAvLyB1cyB0byB2aXNpdCB0aGUgbWVtYmVy
cyBvZiBGb29UZXN0IHZpYSAndGhpcycuCisgIFR5cGVQYXJhbSBuID0gdGhpcy0+dmFsdWVfOwor
CisgIC8vIFRvIHZpc2l0IHN0YXRpYyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlLCBhZGQgdGhlICdU
ZXN0Rml4dHVyZTo6JworICAvLyBwcmVmaXguCisgIG4gKz0gVGVzdEZpeHR1cmU6OnNoYXJlZF87
CisKKyAgLy8gVG8gcmVmZXIgdG8gdHlwZWRlZnMgaW4gdGhlIGZpeHR1cmUsIGFkZCB0aGUgJ3R5
cGVuYW1lIFRlc3RGaXh0dXJlOjonCisgIC8vIHByZWZpeC4gIFRoZSAndHlwZW5hbWUnIGlzIHJl
cXVpcmVkIHRvIHNhdGlzZnkgdGhlIGNvbXBpbGVyLgorICB0eXBlbmFtZSBUZXN0Rml4dHVyZTo6
TGlzdCB2YWx1ZXM7CisgIHZhbHVlcy5wdXNoX2JhY2sobik7CisgIC4uLgorfQorCitUWVBFRF9U
RVNUKEZvb1Rlc3QsIEhhc1Byb3BlcnR5QSkgeyAuLi4gfQorYGBgCisKK1lvdSBjYW4gc2VlIGBz
YW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2NgIGZvciBhIGNvbXBsZXRlIGV4YW1wbGUuCisKK19B
dmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUp
LCBNYWM7CitzaW5jZSB2ZXJzaW9uIDEuMS4wLgorCisjIFR5cGUtUGFyYW1ldGVyaXplZCBUZXN0
cyAjCisKK19UeXBlLXBhcmFtZXRlcml6ZWQgdGVzdHNfIGFyZSBsaWtlIHR5cGVkIHRlc3RzLCBl
eGNlcHQgdGhhdCB0aGV5Citkb24ndCByZXF1aXJlIHlvdSB0byBrbm93IHRoZSBsaXN0IG9mIHR5
cGVzIGFoZWFkIG9mIHRpbWUuICBJbnN0ZWFkLAoreW91IGNhbiBkZWZpbmUgdGhlIHRlc3QgbG9n
aWMgZmlyc3QgYW5kIGluc3RhbnRpYXRlIGl0IHdpdGggZGlmZmVyZW50Cit0eXBlIGxpc3RzIGxh
dGVyLiAgWW91IGNhbiBldmVuIGluc3RhbnRpYXRlIGl0IG1vcmUgdGhhbiBvbmNlIGluIHRoZQor
c2FtZSBwcm9ncmFtLgorCitJZiB5b3UgYXJlIGRlc2lnbmluZyBhbiBpbnRlcmZhY2Ugb3IgY29u
Y2VwdCwgeW91IGNhbiBkZWZpbmUgYSBzdWl0ZQorb2YgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3Rz
IHRvIHZlcmlmeSBwcm9wZXJ0aWVzIHRoYXQgYW55IHZhbGlkCitpbXBsZW1lbnRhdGlvbiBvZiB0
aGUgaW50ZXJmYWNlL2NvbmNlcHQgc2hvdWxkIGhhdmUuICBUaGVuLCB0aGUgYXV0aG9yCitvZiBl
YWNoIGltcGxlbWVudGF0aW9uIGNhbiBqdXN0IGluc3RhbnRpYXRlIHRoZSB0ZXN0IHN1aXRlIHdp
dGggaGlzCit0eXBlIHRvIHZlcmlmeSB0aGF0IGl0IGNvbmZvcm1zIHRvIHRoZSByZXF1aXJlbWVu
dHMsIHdpdGhvdXQgaGF2aW5nIHRvCit3cml0ZSBzaW1pbGFyIHRlc3RzIHJlcGVhdGVkbHkuICBI
ZXJlJ3MgYW4gZXhhbXBsZToKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxh
dGUsIGFzIHdlIGRpZCB3aXRoIHR5cGVkIHRlc3RzOgorCitgYGAKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICAuLi4KK307
CitgYGAKKworTmV4dCwgZGVjbGFyZSB0aGF0IHlvdSB3aWxsIGRlZmluZSBhIHR5cGUtcGFyYW1l
dGVyaXplZCB0ZXN0IGNhc2U6CisKK2BgYAorVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7Citg
YGAKKworVGhlIGBfUGAgc3VmZml4IGlzIGZvciAicGFyYW1ldGVyaXplZCIgb3IgInBhdHRlcm4i
LCB3aGljaGV2ZXIgeW91CitwcmVmZXIgdG8gdGhpbmsuCisKK1RoZW4sIHVzZSBgVFlQRURfVEVT
VF9QKClgIHRvIGRlZmluZSBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LiAgWW91CitjYW4gcmVw
ZWF0IHRoaXMgYXMgbWFueSB0aW1lcyBhcyB5b3Ugd2FudDoKKworYGBgCitUWVBFRF9URVNUX1Ao
Rm9vVGVzdCwgRG9lc0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIgdG8gVHlwZVBh
cmFtIHRvIGdldCB0aGUgdHlwZSBwYXJhbWV0ZXIuCisgIFR5cGVQYXJhbSBuID0gMDsKKyAgLi4u
Cit9CisKK1RZUEVEX1RFU1RfUChGb29UZXN0LCBIYXNQcm9wZXJ0eUEpIHsgLi4uIH0KK2BgYAor
CitOb3cgdGhlIHRyaWNreSBwYXJ0OiB5b3UgbmVlZCB0byByZWdpc3RlciBhbGwgdGVzdCBwYXR0
ZXJucyB1c2luZyB0aGUKK2BSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUGAgbWFjcm8gYmVmb3Jl
IHlvdSBjYW4gaW5zdGFudGlhdGUgdGhlbS4KK1RoZSBmaXJzdCBhcmd1bWVudCBvZiB0aGUgbWFj
cm8gaXMgdGhlIHRlc3QgY2FzZSBuYW1lOyB0aGUgcmVzdCBhcmUKK3RoZSBuYW1lcyBvZiB0aGUg
dGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2U6CisKK2BgYAorUkVHSVNURVJfVFlQRURfVEVTVF9DQVNF
X1AoRm9vVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERvZXNCbGFoLCBIYXNQcm9w
ZXJ0eUEpOworYGBgCisKK0ZpbmFsbHksIHlvdSBhcmUgZnJlZSB0byBpbnN0YW50aWF0ZSB0aGUg
cGF0dGVybiB3aXRoIHRoZSB0eXBlcyB5b3UKK3dhbnQuICBJZiB5b3UgcHV0IHRoZSBhYm92ZSBj
b2RlIGluIGEgaGVhZGVyIGZpbGUsIHlvdSBjYW4gYCNpbmNsdWRlYAoraXQgaW4gbXVsdGlwbGUg
QysrIHNvdXJjZSBmaWxlcyBhbmQgaW5zdGFudGlhdGUgaXQgbXVsdGlwbGUgdGltZXMuCisKK2Bg
YAordHlwZWRlZiA6OnRlc3Rpbmc6OlR5cGVzPGNoYXIsIGludCwgdW5zaWduZWQgaW50PiBNeVR5
cGVzOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMp
OworYGBgCisKK1RvIGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRl
cm4sIHRoZSBmaXJzdCBhcmd1bWVudAordG8gdGhlIGBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NB
U0VfUGAgbWFjcm8gaXMgYSBwcmVmaXggdGhhdCB3aWxsIGJlCithZGRlZCB0byB0aGUgYWN0dWFs
IHRlc3QgY2FzZSBuYW1lLiAgUmVtZW1iZXIgdG8gcGljayB1bmlxdWUgcHJlZml4ZXMKK2ZvciBk
aWZmZXJlbnQgaW5zdGFuY2VzLgorCitJbiB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoZSB0eXBl
IGxpc3QgY29udGFpbnMgb25seSBvbmUgdHlwZSwgeW91CitjYW4gd3JpdGUgdGhhdCB0eXBlIGRp
cmVjdGx5IHdpdGhvdXQgYDo6dGVzdGluZzo6VHlwZXM8Li4uPmAsIGxpa2UgdGhpczoKKworYGBg
CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgaW50KTsKK2BgYAor
CitZb3UgY2FuIHNlZSBgc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjYCBmb3IgYSBjb21wbGV0
ZSBleGFtcGxlLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1T
VkMgOC4wIG9yIGFib3ZlKSwgTWFjOworc2luY2UgdmVyc2lvbiAxLjEuMC4KKworIyBUZXN0aW5n
IFByaXZhdGUgQ29kZSAjCisKK0lmIHlvdSBjaGFuZ2UgeW91ciBzb2Z0d2FyZSdzIGludGVybmFs
IGltcGxlbWVudGF0aW9uLCB5b3VyIHRlc3RzIHNob3VsZCBub3QKK2JyZWFrIGFzIGxvbmcgYXMg
dGhlIGNoYW5nZSBpcyBub3Qgb2JzZXJ2YWJsZSBieSB1c2Vycy4gVGhlcmVmb3JlLCBwZXIgdGhl
CitfYmxhY2stYm94IHRlc3RpbmcgcHJpbmNpcGxlXywgbW9zdCBvZiB0aGUgdGltZSB5b3Ugc2hv
dWxkIHRlc3QgeW91ciBjb2RlCit0aHJvdWdoIGl0cyBwdWJsaWMgaW50ZXJmYWNlcy4KKworSWYg
eW91IHN0aWxsIGZpbmQgeW91cnNlbGYgbmVlZGluZyB0byB0ZXN0IGludGVybmFsIGltcGxlbWVu
dGF0aW9uIGNvZGUsCitjb25zaWRlciBpZiB0aGVyZSdzIGEgYmV0dGVyIGRlc2lnbiB0aGF0IHdv
dWxkbid0IHJlcXVpcmUgeW91IHRvIGRvIHNvLiBJZiB5b3UKK2Fic29sdXRlbHkgaGF2ZSB0byB0
ZXN0IG5vbi1wdWJsaWMgaW50ZXJmYWNlIGNvZGUgdGhvdWdoLCB5b3UgY2FuLiBUaGVyZSBhcmUK
K3R3byBjYXNlcyB0byBjb25zaWRlcjoKKworICAqIFN0YXRpYyBmdW5jdGlvbnMgKF9ub3RfIHRo
ZSBzYW1lIGFzIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zISkgb3IgdW5uYW1lZCBuYW1lc3BhY2Vz
LCBhbmQKKyAgKiBQcml2YXRlIG9yIHByb3RlY3RlZCBjbGFzcyBtZW1iZXJzCisKKyMjIFN0YXRp
YyBGdW5jdGlvbnMgIyMKKworQm90aCBzdGF0aWMgZnVuY3Rpb25zIGFuZCBkZWZpbml0aW9ucy9k
ZWNsYXJhdGlvbnMgaW4gYW4gdW5uYW1lZCBuYW1lc3BhY2UgYXJlCitvbmx5IHZpc2libGUgd2l0
aGluIHRoZSBzYW1lIHRyYW5zbGF0aW9uIHVuaXQuIFRvIHRlc3QgdGhlbSwgeW91IGNhbiBgI2lu
Y2x1ZGVgCit0aGUgZW50aXJlIGAuY2NgIGZpbGUgYmVpbmcgdGVzdGVkIGluIHlvdXIgYCpfdGVz
dC5jY2AgZmlsZS4gKGAjaW5jbHVkZWBpbmcgYC5jY2AKK2ZpbGVzIGlzIG5vdCBhIGdvb2Qgd2F5
IHRvIHJldXNlIGNvZGUgLSB5b3Ugc2hvdWxkIG5vdCBkbyB0aGlzIGluIHByb2R1Y3Rpb24KK2Nv
ZGUhKQorCitIb3dldmVyLCBhIGJldHRlciBhcHByb2FjaCBpcyB0byBtb3ZlIHRoZSBwcml2YXRl
IGNvZGUgaW50byB0aGUKK2Bmb286OmludGVybmFsYCBuYW1lc3BhY2UsIHdoZXJlIGBmb29gIGlz
IHRoZSBuYW1lc3BhY2UgeW91ciBwcm9qZWN0IG5vcm1hbGx5Cit1c2VzLCBhbmQgcHV0IHRoZSBw
cml2YXRlIGRlY2xhcmF0aW9ucyBpbiBhIGAqLWludGVybmFsLmhgIGZpbGUuIFlvdXIKK3Byb2R1
Y3Rpb24gYC5jY2AgZmlsZXMgYW5kIHlvdXIgdGVzdHMgYXJlIGFsbG93ZWQgdG8gaW5jbHVkZSB0
aGlzIGludGVybmFsCitoZWFkZXIsIGJ1dCB5b3VyIGNsaWVudHMgYXJlIG5vdC4gVGhpcyB3YXks
IHlvdSBjYW4gZnVsbHkgdGVzdCB5b3VyIGludGVybmFsCitpbXBsZW1lbnRhdGlvbiB3aXRob3V0
IGxlYWtpbmcgaXQgdG8geW91ciBjbGllbnRzLgorCisjIyBQcml2YXRlIENsYXNzIE1lbWJlcnMg
IyMKKworUHJpdmF0ZSBjbGFzcyBtZW1iZXJzIGFyZSBvbmx5IGFjY2Vzc2libGUgZnJvbSB3aXRo
aW4gdGhlIGNsYXNzIG9yIGJ5IGZyaWVuZHMuCitUbyBhY2Nlc3MgYSBjbGFzcycgcHJpdmF0ZSBt
ZW1iZXJzLCB5b3UgY2FuIGRlY2xhcmUgeW91ciB0ZXN0IGZpeHR1cmUgYXMgYQorZnJpZW5kIHRv
IHRoZSBjbGFzcyBhbmQgZGVmaW5lIGFjY2Vzc29ycyBpbiB5b3VyIGZpeHR1cmUuIFRlc3RzIHVz
aW5nIHRoZQorZml4dHVyZSBjYW4gdGhlbiBhY2Nlc3MgdGhlIHByaXZhdGUgbWVtYmVycyBvZiB5
b3VyIHByb2R1Y3Rpb24gY2xhc3MgdmlhIHRoZQorYWNjZXNzb3JzIGluIHRoZSBmaXh0dXJlLiBO
b3RlIHRoYXQgZXZlbiB0aG91Z2ggeW91ciBmaXh0dXJlIGlzIGEgZnJpZW5kIHRvCit5b3VyIHBy
b2R1Y3Rpb24gY2xhc3MsIHlvdXIgdGVzdHMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IGZyaWVuZHMg
dG8gaXQsIGFzIHRoZXkKK2FyZSB0ZWNobmljYWxseSBkZWZpbmVkIGluIHN1Yi1jbGFzc2VzIG9m
IHRoZSBmaXh0dXJlLgorCitBbm90aGVyIHdheSB0byB0ZXN0IHByaXZhdGUgbWVtYmVycyBpcyB0
byByZWZhY3RvciB0aGVtIGludG8gYW4gaW1wbGVtZW50YXRpb24KK2NsYXNzLCB3aGljaCBpcyB0
aGVuIGRlY2xhcmVkIGluIGEgYCotaW50ZXJuYWwuaGAgZmlsZS4gWW91ciBjbGllbnRzIGFyZW4n
dAorYWxsb3dlZCB0byBpbmNsdWRlIHRoaXMgaGVhZGVyIGJ1dCB5b3VyIHRlc3RzIGNhbi4gU3Vj
aCBpcyBjYWxsZWQgdGhlIFBpbXBsCisoUHJpdmF0ZSBJbXBsZW1lbnRhdGlvbikgaWRpb20uCisK
K09yLCB5b3UgY2FuIGRlY2xhcmUgYW4gaW5kaXZpZHVhbCB0ZXN0IGFzIGEgZnJpZW5kIG9mIHlv
dXIgY2xhc3MgYnkgYWRkaW5nIHRoaXMKK2xpbmUgaW4gdGhlIGNsYXNzIGJvZHk6CisKK2BgYAor
RlJJRU5EX1RFU1QoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSk7CitgYGAKKworRm9yIGV4YW1wbGUs
CitgYGAKKy8vIGZvby5oCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3RfcHJvZC5oPgorCisvLyBEZWZp
bmVzIEZSSUVORF9URVNULgorY2xhc3MgRm9vIHsKKyAgLi4uCisgcHJpdmF0ZToKKyAgRlJJRU5E
X1RFU1QoRm9vVGVzdCwgQmFyUmV0dXJuc1plcm9Pbk51bGwpOworICBpbnQgQmFyKHZvaWQqIHgp
OworfTsKKworLy8gZm9vX3Rlc3QuY2MKKy4uLgorVEVTVChGb29UZXN0LCBCYXJSZXR1cm5zWmVy
b09uTnVsbCkgeworICBGb28gZm9vOworICBFWFBFQ1RfRVEoMCwgZm9vLkJhcihOVUxMKSk7Cisg
IC8vIFVzZXMgRm9vJ3MgcHJpdmF0ZSBtZW1iZXIgQmFyKCkuCit9CitgYGAKKworUGF5IHNwZWNp
YWwgYXR0ZW50aW9uIHdoZW4geW91ciBjbGFzcyBpcyBkZWZpbmVkIGluIGEgbmFtZXNwYWNlLCBh
cyB5b3Ugc2hvdWxkCitkZWZpbmUgeW91ciB0ZXN0IGZpeHR1cmVzIGFuZCB0ZXN0cyBpbiB0aGUg
c2FtZSBuYW1lc3BhY2UgaWYgeW91IHdhbnQgdGhlbSB0bworYmUgZnJpZW5kcyBvZiB5b3VyIGNs
YXNzLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGNvZGUgdG8gYmUgdGVzdGVkIGxvb2tzIGxpa2U6CisK
K2BgYAorbmFtZXNwYWNlIG15X25hbWVzcGFjZSB7CisKK2NsYXNzIEZvbyB7CisgIGZyaWVuZCBj
bGFzcyBGb29UZXN0OworICBGUklFTkRfVEVTVChGb29UZXN0LCBCYXIpOworICBGUklFTkRfVEVT
VChGb29UZXN0LCBCYXopOworICAuLi4KKyAgZGVmaW5pdGlvbiBvZiB0aGUgY2xhc3MgRm9vCisg
IC4uLgorfTsKKworfSAgLy8gbmFtZXNwYWNlIG15X25hbWVzcGFjZQorYGBgCisKK1lvdXIgdGVz
dCBjb2RlIHNob3VsZCBiZSBzb21ldGhpbmcgbGlrZToKKworYGBgCituYW1lc3BhY2UgbXlfbmFt
ZXNwYWNlIHsKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90
ZWN0ZWQ6CisgIC4uLgorfTsKKworVEVTVF9GKEZvb1Rlc3QsIEJhcikgeyAuLi4gfQorVEVTVF9G
KEZvb1Rlc3QsIEJheikgeyAuLi4gfQorCit9ICAvLyBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlCitg
YGAKKworIyBDYXRjaGluZyBGYWlsdXJlcyAjCisKK0lmIHlvdSBhcmUgYnVpbGRpbmcgYSB0ZXN0
aW5nIHV0aWxpdHkgb24gdG9wIG9mIEdvb2dsZSBUZXN0LCB5b3UnbGwKK3dhbnQgdG8gdGVzdCB5
b3VyIHV0aWxpdHkuICBXaGF0IGZyYW1ld29yayB3b3VsZCB5b3UgdXNlIHRvIHRlc3QgaXQ/CitH
b29nbGUgVGVzdCwgb2YgY291cnNlLgorCitUaGUgY2hhbGxlbmdlIGlzIHRvIHZlcmlmeSB0aGF0
IHlvdXIgdGVzdGluZyB1dGlsaXR5IHJlcG9ydHMgZmFpbHVyZXMKK2NvcnJlY3RseS4gIEluIGZy
YW1ld29ya3MgdGhhdCByZXBvcnQgYSBmYWlsdXJlIGJ5IHRocm93aW5nIGFuCitleGNlcHRpb24s
IHlvdSBjb3VsZCBjYXRjaCB0aGUgZXhjZXB0aW9uIGFuZCBhc3NlcnQgb24gaXQuICBCdXQgR29v
Z2xlCitUZXN0IGRvZXNuJ3QgdXNlIGV4Y2VwdGlvbnMsIHNvIGhvdyBkbyB3ZSB0ZXN0IHRoYXQg
YSBwaWVjZSBvZiBjb2RlCitnZW5lcmF0ZXMgYW4gZXhwZWN0ZWQgZmFpbHVyZT8KKworYDxndGVz
dC9ndGVzdC1zcGkuaD5gIGNvbnRhaW5zIHNvbWUgY29uc3RydWN0cyB0byBkbyB0aGlzLiAgQWZ0
ZXIKK2AjaW5jbHVkZWBpbmcgdGhpcyBoZWFkZXIsIHlvdSBjYW4gdXNlCisKK3wgYEVYUEVDVF9G
QVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50LCBzdWJzdHJpbmdfYCk7YCB8Cit8Oi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorCit0byBhc3NlcnQgdGhh
dCBfc3RhdGVtZW50XyBnZW5lcmF0ZXMgYSBmYXRhbCAoZS5nLiBgQVNTRVJUXypgKSBmYWlsdXJl
Cit3aG9zZSBtZXNzYWdlIGNvbnRhaW5zIHRoZSBnaXZlbiBfc3Vic3RyaW5nXywgb3IgdXNlCisK
K3wgYEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50LCBzdWJzdHJpbmdfYCk7YCB8
Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fAorCitpZiB5b3UgYXJlIGV4cGVjdGluZyBhIG5vbi1mYXRhbCAoZS5nLiBgRVhQRUNUXypgKSBm
YWlsdXJlLgorCitGb3IgdGVjaG5pY2FsIHJlYXNvbnMsIHRoZXJlIGFyZSBzb21lIGNhdmVhdHM6
CisKKyAgMS4gWW91IGNhbm5vdCBzdHJlYW0gYSBmYWlsdXJlIG1lc3NhZ2UgdG8gZWl0aGVyIG1h
Y3JvLgorICAxLiBfc3RhdGVtZW50XyBpbiBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKWAgY2Fubm90
IHJlZmVyZW5jZSBsb2NhbCBub24tc3RhdGljIHZhcmlhYmxlcyBvciBub24tc3RhdGljIG1lbWJl
cnMgb2YgYHRoaXNgIG9iamVjdC4KKyAgMS4gX3N0YXRlbWVudF8gaW4gYEVYUEVDVF9GQVRBTF9G
QUlMVVJFKClgIGNhbm5vdCByZXR1cm4gYSB2YWx1ZS4KKworX05vdGU6XyBHb29nbGUgVGVzdCBp
cyBkZXNpZ25lZCB3aXRoIHRocmVhZHMgaW4gbWluZC4gIE9uY2UgdGhlCitzeW5jaHJvbml6YXRp
b24gcHJpbWl0aXZlcyBpbiBgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD5gIGhhdmUKK2Jl
ZW4gaW1wbGVtZW50ZWQsIEdvb2dsZSBUZXN0IHdpbGwgYmVjb21lIHRocmVhZC1zYWZlLCBtZWFu
aW5nIHRoYXQKK3lvdSBjYW4gdGhlbiB1c2UgYXNzZXJ0aW9ucyBpbiBtdWx0aXBsZSB0aHJlYWRz
IGNvbmN1cnJlbnRseS4gIEJlZm9yZQorCit0aGF0LCBob3dldmVyLCBHb29nbGUgVGVzdCBvbmx5
IHN1cHBvcnRzIHNpbmdsZS10aHJlYWRlZCB1c2FnZS4gIE9uY2UKK3RocmVhZC1zYWZlLCBgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoKWAgYW5kIGBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpYAord2ls
bCBjYXB0dXJlIGZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZCBvbmx5LiBJZiBfc3RhdGVt
ZW50XworY3JlYXRlcyBuZXcgdGhyZWFkcywgZmFpbHVyZXMgaW4gdGhlc2UgdGhyZWFkcyB3aWxs
IGJlIGlnbm9yZWQuICBJZgoreW91IHdhbnQgdG8gY2FwdHVyZSBmYWlsdXJlcyBmcm9tIGFsbCB0
aHJlYWRzIGluc3RlYWQsIHlvdSBzaG91bGQgdXNlCit0aGUgZm9sbG93aW5nIG1hY3JvczoKKwor
fCBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoYF9zdGF0ZW1lbnQsIHN1YnN0
cmluZ19gKTtgIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9B
TExfVEhSRUFEUyhgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAorCisjIEdldHRpbmcgdGhl
IEN1cnJlbnQgVGVzdCdzIE5hbWUgIworCitTb21ldGltZXMgYSBmdW5jdGlvbiBtYXkgbmVlZCB0
byBrbm93IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LgorRm9yIGV4YW1w
bGUsIHlvdSBtYXkgYmUgdXNpbmcgdGhlIGBTZXRVcCgpYCBtZXRob2Qgb2YgeW91ciB0ZXN0IGZp
eHR1cmUgdG8gc2V0Cit0aGUgZ29sZGVuIGZpbGUgbmFtZSBiYXNlZCBvbiB3aGljaCB0ZXN0IGlz
IHJ1bm5pbmcuIFRoZSBgOjp0ZXN0aW5nOjpUZXN0SW5mb2AKK2NsYXNzIGhhcyB0aGlzIGluZm9y
bWF0aW9uOgorCitgYGAKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworY2xhc3MgVGVzdEluZm8gewor
IHB1YmxpYzoKKyAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIG5hbWUgYW5kIHRoZSB0ZXN0IG5h
bWUsIHJlc3BlY3RpdmVseS4KKyAgLy8KKyAgLy8gRG8gTk9UIGRlbGV0ZSBvciBmcmVlIHRoZSBy
ZXR1cm4gdmFsdWUgLSBpdCdzIG1hbmFnZWQgYnkgdGhlCisgIC8vIFRlc3RJbmZvIGNsYXNzLgor
ICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0OworICBjb25zdCBjaGFyKiBuYW1l
KCkgY29uc3Q7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworYGBgCisKKworPiBUbyBv
YnRhaW4gYSBgVGVzdEluZm9gIG9iamVjdCBmb3IgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRlc3Qs
IGNhbGwKK2BjdXJyZW50X3Rlc3RfaW5mbygpYCBvbiB0aGUgYFVuaXRUZXN0YCBzaW5nbGV0b24g
b2JqZWN0OgorCitgYGAKKy8vIEdldHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnRseSBy
dW5uaW5nIHRlc3QuCisvLyBEbyBOT1QgZGVsZXRlIHRoZSByZXR1cm5lZCBvYmplY3QgLSBpdCdz
IG1hbmFnZWQgYnkgdGhlIFVuaXRUZXN0IGNsYXNzLgorY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5m
byogY29uc3QgdGVzdF9pbmZvID0KKyAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2Uo
KS0+Y3VycmVudF90ZXN0X2luZm8oKTsKK3ByaW50ZigiV2UgYXJlIGluIHRlc3QgJXMgb2YgdGVz
dCBjYXNlICVzLlxuIiwKKyAgICAgICB0ZXN0X2luZm8tPm5hbWUoKSwgdGVzdF9pbmZvLT50ZXN0
X2Nhc2VfbmFtZSgpKTsKK2BgYAorCitgY3VycmVudF90ZXN0X2luZm8oKWAgcmV0dXJucyBhIG51
bGwgcG9pbnRlciBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcuIEluCitwYXJ0aWN1bGFyLCB5b3UgY2Fu
bm90IGZpbmQgdGhlIHRlc3QgY2FzZSBuYW1lIGluIGBUZXN0Q2FzZVNldFVwKClgLAorYFRlc3RD
YXNlVGVhckRvd24oKWAgKHdoZXJlIHlvdSBrbm93IHRoZSB0ZXN0IGNhc2UgbmFtZSBpbXBsaWNp
dGx5KSwgb3IKK2Z1bmN0aW9ucyBjYWxsZWQgZnJvbSB0aGVtLgorCitfQXZhaWxhYmlsaXR5Ol8g
TGludXgsIFdpbmRvd3MsIE1hYy4KKworIyBFeHRlbmRpbmcgR29vZ2xlIFRlc3QgYnkgSGFuZGxp
bmcgVGVzdCBFdmVudHMgIworCitHb29nbGUgVGVzdCBwcm92aWRlcyBhbiA8Yj5ldmVudCBsaXN0
ZW5lciBBUEk8L2I+IHRvIGxldCB5b3UgcmVjZWl2ZQorbm90aWZpY2F0aW9ucyBhYm91dCB0aGUg
cHJvZ3Jlc3Mgb2YgYSB0ZXN0IHByb2dyYW0gYW5kIHRlc3QKK2ZhaWx1cmVzLiBUaGUgZXZlbnRz
IHlvdSBjYW4gbGlzdGVuIHRvIGluY2x1ZGUgdGhlIHN0YXJ0IGFuZCBlbmQgb2YKK3RoZSB0ZXN0
IHByb2dyYW0sIGEgdGVzdCBjYXNlLCBvciBhIHRlc3QgbWV0aG9kLCBhbW9uZyBvdGhlcnMuIFlv
dSBtYXkKK3VzZSB0aGlzIEFQSSB0byBhdWdtZW50IG9yIHJlcGxhY2UgdGhlIHN0YW5kYXJkIGNv
bnNvbGUgb3V0cHV0LAorcmVwbGFjZSB0aGUgWE1MIG91dHB1dCwgb3IgcHJvdmlkZSBhIGNvbXBs
ZXRlbHkgZGlmZmVyZW50IGZvcm0gb2YKK291dHB1dCwgc3VjaCBhcyBhIEdVSSBvciBhIGRhdGFi
YXNlLiBZb3UgY2FuIGFsc28gdXNlIHRlc3QgZXZlbnRzIGFzCitjaGVja3BvaW50cyB0byBpbXBs
ZW1lbnQgYSByZXNvdXJjZSBsZWFrIGNoZWNrZXIsIGZvciBleGFtcGxlLgorCitfQXZhaWxhYmls
aXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdjEuNC4wLgorCisjIyBEZWZpbmluZyBF
dmVudCBMaXN0ZW5lcnMgIyMKKworVG8gZGVmaW5lIGEgZXZlbnQgbGlzdGVuZXIsIHlvdSBzdWJj
bGFzcyBlaXRoZXIKK1t0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcl0oLi4vaW5jbHVkZS9ndGVz
dC9ndGVzdC5oI0w4NTUpCitvciBbdGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lcl0oLi4v
aW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w5MDUpLgorVGhlIGZvcm1lciBpcyBhbiAoYWJzdHJhY3Qp
IGludGVyZmFjZSwgd2hlcmUgPGk+ZWFjaCBwdXJlIHZpcnR1YWwgbWV0aG9kPGJyPgorY2FuIGJl
IG92ZXJyaWRkZW4gdG8gaGFuZGxlIGEgdGVzdCBldmVudDwvaT4gKEZvciBleGFtcGxlLCB3aGVu
IGEgdGVzdAorc3RhcnRzLCB0aGUgYE9uVGVzdFN0YXJ0KClgIG1ldGhvZCB3aWxsIGJlIGNhbGxl
ZC4pLiBUaGUgbGF0dGVyIHByb3ZpZGVzCithbiBlbXB0eSBpbXBsZW1lbnRhdGlvbiBvZiBhbGwg
bWV0aG9kcyBpbiB0aGUgaW50ZXJmYWNlLCBzdWNoIHRoYXQgYQorc3ViY2xhc3Mgb25seSBuZWVk
cyB0byBvdmVycmlkZSB0aGUgbWV0aG9kcyBpdCBjYXJlcyBhYm91dC4KKworV2hlbiBhbiBldmVu
dCBpcyBmaXJlZCwgaXRzIGNvbnRleHQgaXMgcGFzc2VkIHRvIHRoZSBoYW5kbGVyIGZ1bmN0aW9u
CithcyBhbiBhcmd1bWVudC4gVGhlIGZvbGxvd2luZyBhcmd1bWVudCB0eXBlcyBhcmUgdXNlZDoK
KyAgKiBbVW5pdFRlc3RdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMMTAwNykgcmVmbGVjdHMg
dGhlIHN0YXRlIG9mIHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFtLAorICAqIFtUZXN0Q2FzZV0oLi4v
aW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w2ODkpIGhhcyBpbmZvcm1hdGlvbiBhYm91dCBhIHRlc3Qg
Y2FzZSwgd2hpY2ggY2FuIGNvbnRhaW4gb25lIG9yIG1vcmUgdGVzdHMsCisgICogW1Rlc3RJbmZv
XSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDU5OSkgY29udGFpbnMgdGhlIHN0YXRlIG9mIGEg
dGVzdCwgYW5kCisgICogW1Rlc3RQYXJ0UmVzdWx0XSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXRl
c3QtcGFydC5oI0w0MikgcmVwcmVzZW50cyB0aGUgcmVzdWx0IG9mIGEgdGVzdCBhc3NlcnRpb24u
CisKK0FuIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb24gY2FuIGV4YW1pbmUgdGhlIGFyZ3VtZW50IGl0
IHJlY2VpdmVzIHRvIGZpbmQKK291dCBpbnRlcmVzdGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUg
ZXZlbnQgYW5kIHRoZSB0ZXN0IHByb2dyYW0ncworc3RhdGUuICBIZXJlJ3MgYW4gZXhhbXBsZToK
KworYGBgCisgIGNsYXNzIE1pbmltYWxpc3RQcmludGVyIDogcHVibGljIDo6dGVzdGluZzo6RW1w
dHlUZXN0RXZlbnRMaXN0ZW5lciB7CisgICAgLy8gQ2FsbGVkIGJlZm9yZSBhIHRlc3Qgc3RhcnRz
LgorICAgIHZpcnR1YWwgdm9pZCBPblRlc3RTdGFydChjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZv
JiB0ZXN0X2luZm8pIHsKKyAgICAgIHByaW50ZigiKioqIFRlc3QgJXMuJXMgc3RhcnRpbmcuXG4i
LAorICAgICAgICAgICAgIHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFt
ZSgpKTsKKyAgICB9CisKKyAgICAvLyBDYWxsZWQgYWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0aW9uIG9y
IGEgU1VDQ0VTUygpLgorICAgIHZpcnR1YWwgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KAorICAgICAg
ICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7Cisg
ICAgICBwcmludGYoIiVzIGluICVzOiVkXG4lc1xuIiwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRf
cmVzdWx0LmZhaWxlZCgpID8gIioqKiBGYWlsdXJlIiA6ICJTdWNjZXNzIiwKKyAgICAgICAgICAg
ICB0ZXN0X3BhcnRfcmVzdWx0LmZpbGVfbmFtZSgpLAorICAgICAgICAgICAgIHRlc3RfcGFydF9y
ZXN1bHQubGluZV9udW1iZXIoKSwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LnN1bW1h
cnkoKSk7CisgICAgfQorCisgICAgLy8gQ2FsbGVkIGFmdGVyIGEgdGVzdCBlbmRzLgorICAgIHZp
cnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyYgdGVzdF9pbmZv
KSB7CisgICAgICBwcmludGYoIioqKiBUZXN0ICVzLiVzIGVuZGluZy5cbiIsCisgICAgICAgICAg
ICAgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOworICAgIH0K
KyAgfTsKK2BgYAorCisjIyBVc2luZyBFdmVudCBMaXN0ZW5lcnMgIyMKKworVG8gdXNlIHRoZSBl
dmVudCBsaXN0ZW5lciB5b3UgaGF2ZSBkZWZpbmVkLCBhZGQgYW4gaW5zdGFuY2Ugb2YgaXQgdG8K
K3RoZSBHb29nbGUgVGVzdCBldmVudCBsaXN0ZW5lciBsaXN0IChyZXByZXNlbnRlZCBieSBjbGFz
cworW1Rlc3RFdmVudExpc3RlbmVyc10oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w5MjkpCist
IG5vdGUgdGhlICJzIiBhdCB0aGUgZW5kIG9mIHRoZSBuYW1lKSBpbiB5b3VyCitgbWFpbigpYCBm
dW5jdGlvbiwgYmVmb3JlIGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWA6CitgYGAKK2ludCBtYWlu
KGludCBhcmdjLCBjaGFyKiogYXJndikgeworICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZh
cmdjLCBhcmd2KTsKKyAgLy8gR2V0cyBob2xkIG9mIHRoZSBldmVudCBsaXN0ZW5lciBsaXN0Lgor
ICA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0KKyAgICAgIDo6dGVz
dGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpOworICAvLyBBZGRzIGEg
bGlzdGVuZXIgdG8gdGhlIGVuZC4gIEdvb2dsZSBUZXN0IHRha2VzIHRoZSBvd25lcnNoaXAuCisg
IGxpc3RlbmVycy5BcHBlbmQobmV3IE1pbmltYWxpc3RQcmludGVyKTsKKyAgcmV0dXJuIFJVTl9B
TExfVEVTVFMoKTsKK30KK2BgYAorCitUaGVyZSdzIG9ubHkgb25lIHByb2JsZW06IHRoZSBkZWZh
dWx0IHRlc3QgcmVzdWx0IHByaW50ZXIgaXMgc3RpbGwgaW4KK2VmZmVjdCwgc28gaXRzIG91dHB1
dCB3aWxsIG1pbmdsZSB3aXRoIHRoZSBvdXRwdXQgZnJvbSB5b3VyIG1pbmltYWxpc3QKK3ByaW50
ZXIuIFRvIHN1cHByZXNzIHRoZSBkZWZhdWx0IHByaW50ZXIsIGp1c3QgcmVsZWFzZSBpdCBmcm9t
IHRoZQorZXZlbnQgbGlzdGVuZXIgbGlzdCBhbmQgZGVsZXRlIGl0LiBZb3UgY2FuIGRvIHNvIGJ5
IGFkZGluZyBvbmUgbGluZToKK2BgYAorICAuLi4KKyAgZGVsZXRlIGxpc3RlbmVycy5SZWxlYXNl
KGxpc3RlbmVycy5kZWZhdWx0X3Jlc3VsdF9wcmludGVyKCkpOworICBsaXN0ZW5lcnMuQXBwZW5k
KG5ldyBNaW5pbWFsaXN0UHJpbnRlcik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CitgYGAK
KworTm93LCBzaXQgYmFjayBhbmQgZW5qb3kgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBvdXRwdXQg
ZnJvbSB5b3VyCit0ZXN0cy4gRm9yIG1vcmUgZGV0YWlscywgeW91IGNhbiByZWFkIHRoaXMKK1tz
YW1wbGVdKC4uL3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYykuCisKK1lvdSBtYXkgYXBwZW5k
IG1vcmUgdGhhbiBvbmUgbGlzdGVuZXIgdG8gdGhlIGxpc3QuIFdoZW4gYW4gYE9uKlN0YXJ0KClg
CitvciBgT25UZXN0UGFydFJlc3VsdCgpYCBldmVudCBpcyBmaXJlZCwgdGhlIGxpc3RlbmVycyB3
aWxsIHJlY2VpdmUgaXQgaW4KK3RoZSBvcmRlciB0aGV5IGFwcGVhciBpbiB0aGUgbGlzdCAoc2lu
Y2UgbmV3IGxpc3RlbmVycyBhcmUgYWRkZWQgdG8KK3RoZSBlbmQgb2YgdGhlIGxpc3QsIHRoZSBk
ZWZhdWx0IHRleHQgcHJpbnRlciBhbmQgdGhlIGRlZmF1bHQgWE1MCitnZW5lcmF0b3Igd2lsbCBy
ZWNlaXZlIHRoZSBldmVudCBmaXJzdCkuIEFuIGBPbipFbmQoKWAgZXZlbnQgd2lsbCBiZQorcmVj
ZWl2ZWQgYnkgdGhlIGxpc3RlbmVycyBpbiB0aGUgX3JldmVyc2VfIG9yZGVyLiBUaGlzIGFsbG93
cyBvdXRwdXQgYnkKK2xpc3RlbmVycyBhZGRlZCBsYXRlciB0byBiZSBmcmFtZWQgYnkgb3V0cHV0
IGZyb20gbGlzdGVuZXJzIGFkZGVkCitlYXJsaWVyLgorCisjIyBHZW5lcmF0aW5nIEZhaWx1cmVz
IGluIExpc3RlbmVycyAjIworCitZb3UgbWF5IHVzZSBmYWlsdXJlLXJhaXNpbmcgbWFjcm9zIChg
RVhQRUNUXyooKWAsIGBBU1NFUlRfKigpYCwKK2BGQUlMKClgLCBldGMpIHdoZW4gcHJvY2Vzc2lu
ZyBhbiBldmVudC4gVGhlcmUgYXJlIHNvbWUgcmVzdHJpY3Rpb25zOgorCisgIDEuIFlvdSBjYW5u
b3QgZ2VuZXJhdGUgYW55IGZhaWx1cmUgaW4gYE9uVGVzdFBhcnRSZXN1bHQoKWAgKG90aGVyd2lz
ZSBpdCB3aWxsIGNhdXNlIGBPblRlc3RQYXJ0UmVzdWx0KClgIHRvIGJlIGNhbGxlZCByZWN1cnNp
dmVseSkuCisgIDEuIEEgbGlzdGVuZXIgdGhhdCBoYW5kbGVzIGBPblRlc3RQYXJ0UmVzdWx0KClg
IGlzIG5vdCBhbGxvd2VkIHRvIGdlbmVyYXRlIGFueSBmYWlsdXJlLgorCitXaGVuIHlvdSBhZGQg
bGlzdGVuZXJzIHRvIHRoZSBsaXN0ZW5lciBsaXN0LCB5b3Ugc2hvdWxkIHB1dCBsaXN0ZW5lcnMK
K3RoYXQgaGFuZGxlIGBPblRlc3RQYXJ0UmVzdWx0KClgIF9iZWZvcmVfIGxpc3RlbmVycyB0aGF0
IGNhbiBnZW5lcmF0ZQorZmFpbHVyZXMuIFRoaXMgZW5zdXJlcyB0aGF0IGZhaWx1cmVzIGdlbmVy
YXRlZCBieSB0aGUgbGF0dGVyIGFyZQorYXR0cmlidXRlZCB0byB0aGUgcmlnaHQgdGVzdCBieSB0
aGUgZm9ybWVyLgorCitXZSBoYXZlIGEgc2FtcGxlIG9mIGZhaWx1cmUtcmFpc2luZyBsaXN0ZW5l
cgorW2hlcmVdKC4uL3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MpLgorCisjIFJ1bm5pbmcg
VGVzdCBQcm9ncmFtczogQWR2YW5jZWQgT3B0aW9ucyAjCisKK0dvb2dsZSBUZXN0IHRlc3QgcHJv
Z3JhbXMgYXJlIG9yZGluYXJ5IGV4ZWN1dGFibGVzLiBPbmNlIGJ1aWx0LCB5b3UgY2FuIHJ1bgor
dGhlbSBkaXJlY3RseSBhbmQgYWZmZWN0IHRoZWlyIGJlaGF2aW9yIHZpYSB0aGUgZm9sbG93aW5n
IGVudmlyb25tZW50IHZhcmlhYmxlcworYW5kL29yIGNvbW1hbmQgbGluZSBmbGFncy4gRm9yIHRo
ZSBmbGFncyB0byB3b3JrLCB5b3VyIHByb2dyYW1zIG11c3QgY2FsbAorYDo6dGVzdGluZzo6SW5p
dEdvb2dsZVRlc3QoKWAgYmVmb3JlIGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWAuCisKK1RvIHNl
ZSBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGZsYWdzIGFuZCB0aGVpciB1c2FnZSwgcGxlYXNlIHJ1biB5
b3VyIHRlc3QKK3Byb2dyYW0gd2l0aCB0aGUgYC0taGVscGAgZmxhZy4gIFlvdSBjYW4gYWxzbyB1
c2UgYC1oYCwgYC0/YCwgb3IgYC8/YAorZm9yIHNob3J0LiAgVGhpcyBmZWF0dXJlIGlzIGFkZGVk
IGluIHZlcnNpb24gMS4zLjAuCisKK0lmIGFuIG9wdGlvbiBpcyBzcGVjaWZpZWQgYm90aCBieSBh
biBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbmQgYnkgYQorZmxhZywgdGhlIGxhdHRlciB0YWtlcyBw
cmVjZWRlbmNlLiAgTW9zdCBvZiB0aGUgb3B0aW9ucyBjYW4gYWxzbyBiZQorc2V0L3JlYWQgaW4g
Y29kZTogdG8gYWNjZXNzIHRoZSB2YWx1ZSBvZiBjb21tYW5kIGxpbmUgZmxhZworYC0tZ3Rlc3Rf
Zm9vYCwgd3JpdGUgYDo6dGVzdGluZzo6R1RFU1RfRkxBRyhmb28pYC4gIEEgY29tbW9uIHBhdHRl
cm4gaXMKK3RvIHNldCB0aGUgdmFsdWUgb2YgYSBmbGFnIGJlZm9yZSBjYWxsaW5nIGA6OnRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0KClgCit0byBjaGFuZ2UgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhl
IGZsYWc6CitgYGAKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICAvLyBEaXNh
YmxlcyBlbGFwc2VkIHRpbWUgYnkgZGVmYXVsdC4KKyAgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHBy
aW50X3RpbWUpID0gZmFsc2U7CisKKyAgLy8gVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gb3ZlcnJp
ZGUgdGhlIGZsYWcgb24gdGhlIGNvbW1hbmQgbGluZS4KKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xl
VGVzdCgmYXJnYywgYXJndik7CisKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAor
CisjIyBTZWxlY3RpbmcgVGVzdHMgIyMKKworVGhpcyBzZWN0aW9uIHNob3dzIHZhcmlvdXMgb3B0
aW9ucyBmb3IgY2hvb3Npbmcgd2hpY2ggdGVzdHMgdG8gcnVuLgorCisjIyMgTGlzdGluZyBUZXN0
IE5hbWVzICMjIworCitTb21ldGltZXMgaXQgaXMgbmVjZXNzYXJ5IHRvIGxpc3QgdGhlIGF2YWls
YWJsZSB0ZXN0cyBpbiBhIHByb2dyYW0gYmVmb3JlCitydW5uaW5nIHRoZW0gc28gdGhhdCBhIGZp
bHRlciBtYXkgYmUgYXBwbGllZCBpZiBuZWVkZWQuIEluY2x1ZGluZyB0aGUgZmxhZworYC0tZ3Rl
c3RfbGlzdF90ZXN0c2Agb3ZlcnJpZGVzIGFsbCBvdGhlciBmbGFncyBhbmQgbGlzdHMgdGVzdHMg
aW4gdGhlIGZvbGxvd2luZworZm9ybWF0OgorYGBgCitUZXN0Q2FzZTEuCisgIFRlc3ROYW1lMQor
ICBUZXN0TmFtZTIKK1Rlc3RDYXNlMi4KKyAgVGVzdE5hbWUKK2BgYAorCitOb25lIG9mIHRoZSB0
ZXN0cyBsaXN0ZWQgYXJlIGFjdHVhbGx5IHJ1biBpZiB0aGUgZmxhZyBpcyBwcm92aWRlZC4gVGhl
cmUgaXMgbm8KK2NvcnJlc3BvbmRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIHRoaXMgZmxh
Zy4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBSdW5uaW5n
IGEgU3Vic2V0IG9mIHRoZSBUZXN0cyAjIyMKKworQnkgZGVmYXVsdCwgYSBHb29nbGUgVGVzdCBw
cm9ncmFtIHJ1bnMgYWxsIHRlc3RzIHRoZSB1c2VyIGhhcyBkZWZpbmVkLgorU29tZXRpbWVzLCB5
b3Ugd2FudCB0byBydW4gb25seSBhIHN1YnNldCBvZiB0aGUgdGVzdHMgKGUuZy4gZm9yIGRlYnVn
Z2luZyBvcgorcXVpY2tseSB2ZXJpZnlpbmcgYSBjaGFuZ2UpLiBJZiB5b3Ugc2V0IHRoZSBgR1RF
U1RfRklMVEVSYCBlbnZpcm9ubWVudCB2YXJpYWJsZQorb3IgdGhlIGAtLWd0ZXN0X2ZpbHRlcmAg
ZmxhZyB0byBhIGZpbHRlciBzdHJpbmcsIEdvb2dsZSBUZXN0IHdpbGwgb25seSBydW4gdGhlCit0
ZXN0cyB3aG9zZSBmdWxsIG5hbWVzIChpbiB0aGUgZm9ybSBvZiBgVGVzdENhc2VOYW1lLlRlc3RO
YW1lYCkgbWF0Y2ggdGhlCitmaWx0ZXIuCisKK1RoZSBmb3JtYXQgb2YgYSBmaWx0ZXIgaXMgYSAn
YDpgJy1zZXBhcmF0ZWQgbGlzdCBvZiB3aWxkY2FyZCBwYXR0ZXJucyAoY2FsbGVkCit0aGUgcG9z
aXRpdmUgcGF0dGVybnMpIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAnYC1gJyBhbmQgYW5vdGhl
cgorJ2A6YCctc2VwYXJhdGVkIHBhdHRlcm4gbGlzdCAoY2FsbGVkIHRoZSBuZWdhdGl2ZSBwYXR0
ZXJucykuIEEgdGVzdCBtYXRjaGVzIHRoZQorZmlsdGVyIGlmIGFuZCBvbmx5IGlmIGl0IG1hdGNo
ZXMgYW55IG9mIHRoZSBwb3NpdGl2ZSBwYXR0ZXJucyBidXQgZG9lcyBub3QKK21hdGNoIGFueSBv
ZiB0aGUgbmVnYXRpdmUgcGF0dGVybnMuCisKK0EgcGF0dGVybiBtYXkgY29udGFpbiBgJyonYCAo
bWF0Y2hlcyBhbnkgc3RyaW5nKSBvciBgJz8nYCAobWF0Y2hlcyBhbnkgc2luZ2xlCitjaGFyYWN0
ZXIpLiBGb3IgY29udmVuaWVuY2UsIHRoZSBmaWx0ZXIgYCcqLU5lZ2F0aXZlUGF0dGVybnMnYCBj
YW4gYmUgYWxzbword3JpdHRlbiBhcyBgJy1OZWdhdGl2ZVBhdHRlcm5zJ2AuCisKK0ZvciBleGFt
cGxlOgorCisgICogYC4vZm9vX3Rlc3RgIEhhcyBubyBmbGFnLCBhbmQgdGh1cyBydW5zIGFsbCBp
dHMgdGVzdHMuCisgICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9KmAgQWxzbyBydW5zIGV2
ZXJ5dGhpbmcsIGR1ZSB0byB0aGUgc2luZ2xlIG1hdGNoLWV2ZXJ5dGhpbmcgYCpgIHZhbHVlLgor
ICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rlc3QuKmAgUnVucyBldmVyeXRoaW5n
IGluIHRlc3QgY2FzZSBgRm9vVGVzdGAuCisgICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9
Kk51bGwqOipDb25zdHJ1Y3RvcipgIFJ1bnMgYW55IHRlc3Qgd2hvc2UgZnVsbCBuYW1lIGNvbnRh
aW5zIGVpdGhlciBgIk51bGwiYCBvciBgIkNvbnN0cnVjdG9yImAuCisgICogYC4vZm9vX3Rlc3Qg
LS1ndGVzdF9maWx0ZXI9LSpEZWF0aFRlc3QuKmAgUnVucyBhbGwgbm9uLWRlYXRoIHRlc3RzLgor
ICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rlc3QuKi1Gb29UZXN0LkJhcmAgUnVu
cyBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBgRm9vVGVzdGAgZXhjZXB0IGBGb29UZXN0LkJhcmAu
CisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgVGVtcG9yYXJp
bHkgRGlzYWJsaW5nIFRlc3RzICMjIworCitJZiB5b3UgaGF2ZSBhIGJyb2tlbiB0ZXN0IHRoYXQg
eW91IGNhbm5vdCBmaXggcmlnaHQgYXdheSwgeW91IGNhbiBhZGQgdGhlCitgRElTQUJMRURfYCBw
cmVmaXggdG8gaXRzIG5hbWUuIFRoaXMgd2lsbCBleGNsdWRlIGl0IGZyb20gZXhlY3V0aW9uLiBU
aGlzIGlzCitiZXR0ZXIgdGhhbiBjb21tZW50aW5nIG91dCB0aGUgY29kZSBvciB1c2luZyBgI2lm
IDBgLCBhcyBkaXNhYmxlZCB0ZXN0cyBhcmUKK3N0aWxsIGNvbXBpbGVkIChhbmQgdGh1cyB3b24n
dCByb3QpLgorCitJZiB5b3UgbmVlZCB0byBkaXNhYmxlIGFsbCB0ZXN0cyBpbiBhIHRlc3QgY2Fz
ZSwgeW91IGNhbiBlaXRoZXIgYWRkIGBESVNBQkxFRF9gCit0byB0aGUgZnJvbnQgb2YgdGhlIG5h
bWUgb2YgZWFjaCB0ZXN0LCBvciBhbHRlcm5hdGl2ZWx5IGFkZCBpdCB0byB0aGUgZnJvbnQgb2YK
K3RoZSB0ZXN0IGNhc2UgbmFtZS4KKworRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVzdHMg
d29uJ3QgYmUgcnVuIGJ5IEdvb2dsZSBUZXN0LCBldmVuIHRob3VnaCB0aGV5Cit3aWxsIHN0aWxs
IGJlIGNvbXBpbGVkOgorCitgYGAKKy8vIFRlc3RzIHRoYXQgRm9vIGRvZXMgQWJjLgorVEVTVChG
b29UZXN0LCBESVNBQkxFRF9Eb2VzQWJjKSB7IC4uLiB9CisKK2NsYXNzIERJU0FCTEVEX0JhclRl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07CisKKy8vIFRlc3RzIHRoYXQgQmFy
IGRvZXMgWHl6LgorVEVTVF9GKERJU0FCTEVEX0JhclRlc3QsIERvZXNYeXopIHsgLi4uIH0KK2Bg
YAorCitfTm90ZTpfIFRoaXMgZmVhdHVyZSBzaG91bGQgb25seSBiZSB1c2VkIGZvciB0ZW1wb3Jh
cnkgcGFpbi1yZWxpZWYuIFlvdSBzdGlsbAoraGF2ZSB0byBmaXggdGhlIGRpc2FibGVkIHRlc3Rz
IGF0IGEgbGF0ZXIgZGF0ZS4gQXMgYSByZW1pbmRlciwgR29vZ2xlIFRlc3Qgd2lsbAorcHJpbnQg
YSBiYW5uZXIgd2FybmluZyB5b3UgaWYgYSB0ZXN0IHByb2dyYW0gY29udGFpbnMgYW55IGRpc2Fi
bGVkIHRlc3RzLgorCitfVGlwOl8gWW91IGNhbiBlYXNpbHkgY291bnQgdGhlIG51bWJlciBvZiBk
aXNhYmxlZCB0ZXN0cyB5b3UgaGF2ZQordXNpbmcgYGdyZXBgLiBUaGlzIG51bWJlciBjYW4gYmUg
dXNlZCBhcyBhIG1ldHJpYyBmb3IgaW1wcm92aW5nIHlvdXIKK3Rlc3QgcXVhbGl0eS4KKworX0F2
YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBUZW1wb3JhcmlseSBFbmFi
bGluZyBEaXNhYmxlZCBUZXN0cyAjIyMKKworVG8gaW5jbHVkZSBbZGlzYWJsZWQgdGVzdHNdKCN0
ZW1wb3JhcmlseS1kaXNhYmxpbmctdGVzdHMpIGluIHRlc3QKK2V4ZWN1dGlvbiwganVzdCBpbnZv
a2UgdGhlIHRlc3QgcHJvZ3JhbSB3aXRoIHRoZQorYC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRf
dGVzdHNgIGZsYWcgb3Igc2V0IHRoZQorYEdURVNUX0FMU09fUlVOX0RJU0FCTEVEX1RFU1RTYCBl
bnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIHZhbHVlIG90aGVyCit0aGFuIGAwYC4gIFlvdSBjYW4g
Y29tYmluZSB0aGlzIHdpdGggdGhlCitbLS1ndGVzdFxfZmlsdGVyXSgjcnVubmluZy1hLXN1YnNl
dC1vZi10aGUtdGVzdHMpIGZsYWcgdG8gZnVydGhlciBzZWxlY3QKK3doaWNoIGRpc2FibGVkIHRl
c3RzIHRvIHJ1bi4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNl
IHZlcnNpb24gMS4zLjAuCisKKyMjIFJlcGVhdGluZyB0aGUgVGVzdHMgIyMKKworT25jZSBpbiBh
IHdoaWxlIHlvdSdsbCBydW4gaW50byBhIHRlc3Qgd2hvc2UgcmVzdWx0IGlzIGhpdC1vci1taXNz
LiBQZXJoYXBzIGl0Cit3aWxsIGZhaWwgb25seSAxJSBvZiB0aGUgdGltZSwgbWFraW5nIGl0IHJh
dGhlciBoYXJkIHRvIHJlcHJvZHVjZSB0aGUgYnVnIHVuZGVyCithIGRlYnVnZ2VyLiBUaGlzIGNh
biBiZSBhIG1ham9yIHNvdXJjZSBvZiBmcnVzdHJhdGlvbi4KKworVGhlIGAtLWd0ZXN0X3JlcGVh
dGAgZmxhZyBhbGxvd3MgeW91IHRvIHJlcGVhdCBhbGwgKG9yIHNlbGVjdGVkKSB0ZXN0IG1ldGhv
ZHMKK2luIGEgcHJvZ3JhbSBtYW55IHRpbWVzLiBIb3BlZnVsbHksIGEgZmxha3kgdGVzdCB3aWxs
IGV2ZW50dWFsbHkgZmFpbCBhbmQgZ2l2ZQoreW91IGEgY2hhbmNlIHRvIGRlYnVnLiBIZXJlJ3Mg
aG93IHRvIHVzZSBpdDoKKworfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwYCB8IFJl
cGVhdCBmb29cX3Rlc3QgMTAwMCB0aW1lcyBhbmQgZG9uJ3Qgc3RvcCBhdCBmYWlsdXJlcy4gfAor
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBgJCBmb29fdGVzdCAtLWd0
ZXN0X3JlcGVhdD0tMWAgICB8IEEgbmVnYXRpdmUgY291bnQgbWVhbnMgcmVwZWF0aW5nIGZvcmV2
ZXIuICAgICAgICAgICAgICAgfAorfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwIC0t
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZWAgfCBSZXBlYXQgZm9vXF90ZXN0IDEwMDAgdGltZXMsIHN0
b3BwaW5nIGF0IHRoZSBmaXJzdCBmYWlsdXJlLiBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIHdo
ZW4gcnVubmluZyB1bmRlciBhIGRlYnVnZ2VyOiB3aGVuIHRoZSB0ZXN0ZmFpbHMsIGl0IHdpbGwg
ZHJvcCBpbnRvIHRoZSBkZWJ1Z2dlciBhbmQgeW91IGNhbiB0aGVuIGluc3BlY3QgdmFyaWFibGVz
IGFuZCBzdGFja3MuIHwKK3wgYCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMCAtLWd0ZXN0
X2ZpbHRlcj1Gb29CYXJgIHwgUmVwZWF0IHRoZSB0ZXN0cyB3aG9zZSBuYW1lIG1hdGNoZXMgdGhl
IGZpbHRlciAxMDAwIHRpbWVzLiB8CisKK0lmIHlvdXIgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIGds
b2JhbCBzZXQtdXAvdGVhci1kb3duIGNvZGUgcmVnaXN0ZXJlZAordXNpbmcgYEFkZEdsb2JhbFRl
c3RFbnZpcm9ubWVudCgpYCwgaXQgd2lsbCBiZSByZXBlYXRlZCBpbiBlYWNoCitpdGVyYXRpb24g
YXMgd2VsbCwgYXMgdGhlIGZsYWtpbmVzcyBtYXkgYmUgaW4gaXQuIFlvdSBjYW4gYWxzbyBzcGVj
aWZ5Cit0aGUgcmVwZWF0IGNvdW50IGJ5IHNldHRpbmcgdGhlIGBHVEVTVF9SRVBFQVRgIGVudmly
b25tZW50IHZhcmlhYmxlLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4K
KworIyMgU2h1ZmZsaW5nIHRoZSBUZXN0cyAjIworCitZb3UgY2FuIHNwZWNpZnkgdGhlIGAtLWd0
ZXN0X3NodWZmbGVgIGZsYWcgKG9yIHNldCB0aGUgYEdURVNUX1NIVUZGTEVgCitlbnZpcm9ubWVu
dCB2YXJpYWJsZSB0byBgMWApIHRvIHJ1biB0aGUgdGVzdHMgaW4gYSBwcm9ncmFtIGluIGEgcmFu
ZG9tCitvcmRlci4gVGhpcyBoZWxwcyB0byByZXZlYWwgYmFkIGRlcGVuZGVuY2llcyBiZXR3ZWVu
IHRlc3RzLgorCitCeSBkZWZhdWx0LCBHb29nbGUgVGVzdCB1c2VzIGEgcmFuZG9tIHNlZWQgY2Fs
Y3VsYXRlZCBmcm9tIHRoZSBjdXJyZW50Cit0aW1lLiBUaGVyZWZvcmUgeW91J2xsIGdldCBhIGRp
ZmZlcmVudCBvcmRlciBldmVyeSB0aW1lLiBUaGUgY29uc29sZQorb3V0cHV0IGluY2x1ZGVzIHRo
ZSByYW5kb20gc2VlZCB2YWx1ZSwgc3VjaCB0aGF0IHlvdSBjYW4gcmVwcm9kdWNlIGFuCitvcmRl
ci1yZWxhdGVkIHRlc3QgZmFpbHVyZSBsYXRlci4gVG8gc3BlY2lmeSB0aGUgcmFuZG9tIHNlZWQK
K2V4cGxpY2l0bHksIHVzZSB0aGUgYC0tZ3Rlc3RfcmFuZG9tX3NlZWQ9U0VFRGAgZmxhZyAob3Ig
c2V0IHRoZQorYEdURVNUX1JBTkRPTV9TRUVEYCBlbnZpcm9ubWVudCB2YXJpYWJsZSksIHdoZXJl
IGBTRUVEYCBpcyBhbiBpbnRlZ2VyCitiZXR3ZWVuIDAgYW5kIDk5OTk5LiBUaGUgc2VlZCB2YWx1
ZSAwIGlzIHNwZWNpYWw6IGl0IHRlbGxzIEdvb2dsZSBUZXN0Cit0byBkbyB0aGUgZGVmYXVsdCBi
ZWhhdmlvciBvZiBjYWxjdWxhdGluZyB0aGUgc2VlZCBmcm9tIHRoZSBjdXJyZW50Cit0aW1lLgor
CitJZiB5b3UgY29tYmluZSB0aGlzIHdpdGggYC0tZ3Rlc3RfcmVwZWF0PU5gLCBHb29nbGUgVGVz
dCB3aWxsIHBpY2sgYQorZGlmZmVyZW50IHJhbmRvbSBzZWVkIGFuZCByZS1zaHVmZmxlIHRoZSB0
ZXN0cyBpbiBlYWNoIGl0ZXJhdGlvbi4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dz
LCBNYWM7IHNpbmNlIHYxLjQuMC4KKworIyMgQ29udHJvbGxpbmcgVGVzdCBPdXRwdXQgIyMKKwor
VGhpcyBzZWN0aW9uIHRlYWNoZXMgaG93IHRvIHR3ZWFrIHRoZSB3YXkgdGVzdCByZXN1bHRzIGFy
ZSByZXBvcnRlZC4KKworIyMjIENvbG9yZWQgVGVybWluYWwgT3V0cHV0ICMjIworCitHb29nbGUg
VGVzdCBjYW4gdXNlIGNvbG9ycyBpbiBpdHMgdGVybWluYWwgb3V0cHV0IHRvIG1ha2UgaXQgZWFz
aWVyIHRvIHNwb3QKK3RoZSBzZXBhcmF0aW9uIGJldHdlZW4gdGVzdHMsIGFuZCB3aGV0aGVyIHRl
c3RzIHBhc3NlZC4KKworWW91IGNhbiBzZXQgdGhlIEdURVNUXF9DT0xPUiBlbnZpcm9ubWVudCB2
YXJpYWJsZSBvciBzZXQgdGhlIGAtLWd0ZXN0X2NvbG9yYAorY29tbWFuZCBsaW5lIGZsYWcgdG8g
YHllc2AsIGBub2AsIG9yIGBhdXRvYCAodGhlIGRlZmF1bHQpIHRvIGVuYWJsZSBjb2xvcnMsCitk
aXNhYmxlIGNvbG9ycywgb3IgbGV0IEdvb2dsZSBUZXN0IGRlY2lkZS4gV2hlbiB0aGUgdmFsdWUg
aXMgYGF1dG9gLCBHb29nbGUKK1Rlc3Qgd2lsbCB1c2UgY29sb3JzIGlmIGFuZCBvbmx5IGlmIHRo
ZSBvdXRwdXQgZ29lcyB0byBhIHRlcm1pbmFsIGFuZCAob24KK25vbi1XaW5kb3dzIHBsYXRmb3Jt
cykgdGhlIGBURVJNYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQgdG8gYHh0ZXJtYCBvcgor
YHh0ZXJtLWNvbG9yYC4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisK
KyMjIyBTdXBwcmVzc2luZyB0aGUgRWxhcHNlZCBUaW1lICMjIworCitCeSBkZWZhdWx0LCBHb29n
bGUgVGVzdCBwcmludHMgdGhlIHRpbWUgaXQgdGFrZXMgdG8gcnVuIGVhY2ggdGVzdC4gIFRvCitz
dXBwcmVzcyB0aGF0LCBydW4gdGhlIHRlc3QgcHJvZ3JhbSB3aXRoIHRoZSBgLS1ndGVzdF9wcmlu
dF90aW1lPTBgCitjb21tYW5kIGxpbmUgZmxhZy4gIFNldHRpbmcgdGhlIGBHVEVTVF9QUklOVF9U
SU1FYCBlbnZpcm9ubWVudAordmFyaWFibGUgdG8gYDBgIGhhcyB0aGUgc2FtZSBlZmZlY3QuCisK
K19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLiAgKEluIEdvb2dsZSBUZXN0IDEu
My4wIGFuZCBsb3dlciwKK3RoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRoYXQgdGhlIGVsYXBzZWQg
dGltZSBpcyAqKm5vdCoqIHByaW50ZWQuKQorCisjIyMgR2VuZXJhdGluZyBhbiBYTUwgUmVwb3J0
ICMjIworCitHb29nbGUgVGVzdCBjYW4gZW1pdCBhIGRldGFpbGVkIFhNTCByZXBvcnQgdG8gYSBm
aWxlIGluIGFkZGl0aW9uIHRvIGl0cyBub3JtYWwKK3RleHR1YWwgb3V0cHV0LiBUaGUgcmVwb3J0
IGNvbnRhaW5zIHRoZSBkdXJhdGlvbiBvZiBlYWNoIHRlc3QsIGFuZCB0aHVzIGNhbgoraGVscCB5
b3UgaWRlbnRpZnkgc2xvdyB0ZXN0cy4KKworVG8gZ2VuZXJhdGUgdGhlIFhNTCByZXBvcnQsIHNl
dCB0aGUgYEdURVNUX09VVFBVVGAgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCitgLS1ndGVz
dF9vdXRwdXRgIGZsYWcgdG8gdGhlIHN0cmluZyBgInhtbDpfcGF0aF90b19vdXRwdXRfZmlsZV8i
YCwgd2hpY2ggd2lsbAorY3JlYXRlIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBsb2NhdGlvbi4gWW91
IGNhbiBhbHNvIGp1c3QgdXNlIHRoZSBzdHJpbmcKK2AieG1sImAsIGluIHdoaWNoIGNhc2UgdGhl
IG91dHB1dCBjYW4gYmUgZm91bmQgaW4gdGhlIGB0ZXN0X2RldGFpbC54bWxgIGZpbGUgaW4KK3Ro
ZSBjdXJyZW50IGRpcmVjdG9yeS4KKworSWYgeW91IHNwZWNpZnkgYSBkaXJlY3RvcnkgKGZvciBl
eGFtcGxlLCBgInhtbDpvdXRwdXQvZGlyZWN0b3J5LyJgIG9uIExpbnV4IG9yCitgInhtbDpvdXRw
dXRcZGlyZWN0b3J5XCJgIG9uIFdpbmRvd3MpLCBHb29nbGUgVGVzdCB3aWxsIGNyZWF0ZSB0aGUg
WE1MIGZpbGUgaW4KK3RoYXQgZGlyZWN0b3J5LCBuYW1lZCBhZnRlciB0aGUgdGVzdCBleGVjdXRh
YmxlIChlLmcuIGBmb29fdGVzdC54bWxgIGZvciB0ZXN0Citwcm9ncmFtIGBmb29fdGVzdGAgb3Ig
YGZvb190ZXN0LmV4ZWApLiBJZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cyAocGVyaGFwcyBsZWZ0
CitvdmVyIGZyb20gYSBwcmV2aW91cyBydW4pLCBHb29nbGUgVGVzdCB3aWxsIHBpY2sgYSBkaWZm
ZXJlbnQgbmFtZSAoZS5nLgorYGZvb190ZXN0XzEueG1sYCkgdG8gYXZvaWQgb3ZlcndyaXRpbmcg
aXQuCisKK1RoZSByZXBvcnQgdXNlcyB0aGUgZm9ybWF0IGRlc2NyaWJlZCBoZXJlLiAgSXQgaXMg
YmFzZWQgb24gdGhlCitganVuaXRyZXBvcnRgIEFudCB0YXNrIGFuZCBjYW4gYmUgcGFyc2VkIGJ5
IHBvcHVsYXIgY29udGludW91cyBidWlsZAorc3lzdGVtcyBsaWtlIFtIdWRzb25dKGh0dHBzOi8v
aHVkc29uLmRldi5qYXZhLm5ldC8pLiBTaW5jZSB0aGF0IGZvcm1hdAord2FzIG9yaWdpbmFsbHkg
aW50ZW5kZWQgZm9yIEphdmEsIGEgbGl0dGxlIGludGVycHJldGF0aW9uIGlzIHJlcXVpcmVkCit0
byBtYWtlIGl0IGFwcGx5IHRvIEdvb2dsZSBUZXN0IHRlc3RzLCBhcyBzaG93biBoZXJlOgorCitg
YGAKKzx0ZXN0c3VpdGVzIG5hbWU9IkFsbFRlc3RzIiAuLi4+CisgIDx0ZXN0c3VpdGUgbmFtZT0i
dGVzdF9jYXNlX25hbWUiIC4uLj4KKyAgICA8dGVzdGNhc2UgbmFtZT0idGVzdF9uYW1lIiAuLi4+
CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9
Ii4uLiIvPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+CisgICAgPC90ZXN0Y2FzZT4K
KyAgPC90ZXN0c3VpdGU+Cis8L3Rlc3RzdWl0ZXM+CitgYGAKKworICAqIFRoZSByb290IGA8dGVz
dHN1aXRlcz5gIGVsZW1lbnQgY29ycmVzcG9uZHMgdG8gdGhlIGVudGlyZSB0ZXN0IHByb2dyYW0u
CisgICogYDx0ZXN0c3VpdGU+YCBlbGVtZW50cyBjb3JyZXNwb25kIHRvIEdvb2dsZSBUZXN0IHRl
c3QgY2FzZXMuCisgICogYDx0ZXN0Y2FzZT5gIGVsZW1lbnRzIGNvcnJlc3BvbmQgdG8gR29vZ2xl
IFRlc3QgdGVzdCBmdW5jdGlvbnMuCisKK0ZvciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBwcm9n
cmFtCisKK2BgYAorVEVTVChNYXRoVGVzdCwgQWRkaXRpb24pIHsgLi4uIH0KK1RFU1QoTWF0aFRl
c3QsIFN1YnRyYWN0aW9uKSB7IC4uLiB9CitURVNUKExvZ2ljVGVzdCwgTm9uQ29udHJhZGljdGlv
bikgeyAuLi4gfQorYGBgCisKK2NvdWxkIGdlbmVyYXRlIHRoaXMgcmVwb3J0OgorCitgYGAKKzw/
eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8dGVzdHN1aXRlcyB0ZXN0cz0i
MyIgZmFpbHVyZXM9IjEiIGVycm9ycz0iMCIgdGltZT0iMzUiIG5hbWU9IkFsbFRlc3RzIj4KKyAg
PHRlc3RzdWl0ZSBuYW1lPSJNYXRoVGVzdCIgdGVzdHM9IjIiIGZhaWx1cmVzPSIxIiogZXJyb3Jz
PSIwIiB0aW1lPSIxNSI+CisgICAgPHRlc3RjYXNlIG5hbWU9IkFkZGl0aW9uIiBzdGF0dXM9InJ1
biIgdGltZT0iNyIgY2xhc3NuYW1lPSIiPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUg
b2Y6IGFkZCgxLCAxKSYjeDBBOyBBY3R1YWw6IDMmI3gwQTtFeHBlY3RlZDogMiIgdHlwZT0iIi8+
CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogYWRkKDEsIC0xKSYjeDBBOyBBY3R1
YWw6IDEmI3gwQTtFeHBlY3RlZDogMCIgdHlwZT0iIi8+CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8
dGVzdGNhc2UgbmFtZT0iU3VidHJhY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSI1IiBjbGFzc25h
bWU9IiI+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFt
ZT0iTG9naWNUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGVycm9ycz0iMCIgdGltZT0iNSI+
CisgICAgPHRlc3RjYXNlIG5hbWU9Ik5vbkNvbnRyYWRpY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1l
PSI1IiBjbGFzc25hbWU9IiI+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rl
c3RzdWl0ZXM+CitgYGAKKworVGhpbmdzIHRvIG5vdGU6CisKKyAgKiBUaGUgYHRlc3RzYCBhdHRy
aWJ1dGUgb2YgYSBgPHRlc3RzdWl0ZXM+YCBvciBgPHRlc3RzdWl0ZT5gIGVsZW1lbnQgdGVsbHMg
aG93IG1hbnkgdGVzdCBmdW5jdGlvbnMgdGhlIEdvb2dsZSBUZXN0IHByb2dyYW0gb3IgdGVzdCBj
YXNlIGNvbnRhaW5zLCB3aGlsZSB0aGUgYGZhaWx1cmVzYCBhdHRyaWJ1dGUgdGVsbHMgaG93IG1h
bnkgb2YgdGhlbSBmYWlsZWQuCisgICogVGhlIGB0aW1lYCBhdHRyaWJ1dGUgZXhwcmVzc2VzIHRo
ZSBkdXJhdGlvbiBvZiB0aGUgdGVzdCwgdGVzdCBjYXNlLCBvciBlbnRpcmUgdGVzdCBwcm9ncmFt
IGluIG1pbGxpc2Vjb25kcy4KKyAgKiBFYWNoIGA8ZmFpbHVyZT5gIGVsZW1lbnQgY29ycmVzcG9u
ZHMgdG8gYSBzaW5nbGUgZmFpbGVkIEdvb2dsZSBUZXN0IGFzc2VydGlvbi4KKyAgKiBTb21lIEpV
bml0IGNvbmNlcHRzIGRvbid0IGFwcGx5IHRvIEdvb2dsZSBUZXN0LCB5ZXQgd2UgaGF2ZSB0byBj
b25mb3JtIHRvIHRoZSBEVEQuIFRoZXJlZm9yZSB5b3UnbGwgc2VlIHNvbWUgZHVtbXkgZWxlbWVu
dHMgYW5kIGF0dHJpYnV0ZXMgaW4gdGhlIHJlcG9ydC4gWW91IGNhbiBzYWZlbHkgaWdub3JlIHRo
ZXNlIHBhcnRzLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMg
Q29udHJvbGxpbmcgSG93IEZhaWx1cmVzIEFyZSBSZXBvcnRlZCAjIworCisjIyMgVHVybmluZyBB
c3NlcnRpb24gRmFpbHVyZXMgaW50byBCcmVhay1Qb2ludHMgIyMjCisKK1doZW4gcnVubmluZyB0
ZXN0IHByb2dyYW1zIHVuZGVyIGEgZGVidWdnZXIsIGl0J3MgdmVyeSBjb252ZW5pZW50IGlmIHRo
ZQorZGVidWdnZXIgY2FuIGNhdGNoIGFuIGFzc2VydGlvbiBmYWlsdXJlIGFuZCBhdXRvbWF0aWNh
bGx5IGRyb3AgaW50byBpbnRlcmFjdGl2ZQorbW9kZS4gR29vZ2xlIFRlc3QncyBfYnJlYWstb24t
ZmFpbHVyZV8gbW9kZSBzdXBwb3J0cyB0aGlzIGJlaGF2aW9yLgorCitUbyBlbmFibGUgaXQsIHNl
dCB0aGUgYEdURVNUX0JSRUFLX09OX0ZBSUxVUkVgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEg
dmFsdWUKK290aGVyIHRoYW4gYDBgIC4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhlIGAt
LWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVgCitjb21tYW5kIGxpbmUgZmxhZy4KKworX0F2YWlsYWJp
bGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBTdXBwcmVzc2luZyBQb3AtdXBzIENh
dXNlZCBieSBFeGNlcHRpb25zICMjIworCitPbiBXaW5kb3dzLCBHb29nbGUgVGVzdCBtYXkgYmUg
dXNlZCB3aXRoIGV4Y2VwdGlvbnMgZW5hYmxlZC4gRXZlbiB3aGVuCitleGNlcHRpb25zIGFyZSBk
aXNhYmxlZCwgYW4gYXBwbGljYXRpb24gY2FuIHN0aWxsIHRocm93IHN0cnVjdHVyZWQgZXhjZXB0
aW9ucworKFNFSCdzKS4gSWYgYSB0ZXN0IHRocm93cyBhbiBleGNlcHRpb24sIGJ5IGRlZmF1bHQg
R29vZ2xlIFRlc3QgZG9lc24ndCB0cnkgdG8KK2NhdGNoIGl0LiBJbnN0ZWFkLCB5b3UnbGwgc2Vl
IGEgcG9wLXVwIGRpYWxvZywgYXQgd2hpY2ggcG9pbnQgeW91IGNhbiBhdHRhY2gKK3RoZSBwcm9j
ZXNzIHRvIGEgZGVidWdnZXIgYW5kIGVhc2lseSBmaW5kIG91dCB3aGF0IHdlbnQgd3JvbmcuCisK
K0hvd2V2ZXIsIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlZSB0aGUgcG9wLXVwcyAoZm9yIGV4YW1w
bGUsIGlmIHlvdSBydW4gdGhlCit0ZXN0cyBpbiBhIGJhdGNoIGpvYiksIHNldCB0aGUgYEdURVNU
X0NBVENIX0VYQ0VQVElPTlNgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvCithIG5vbi0gYDBgIHZh
bHVlLCBvciB1c2UgdGhlIGAtLWd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNgIGZsYWcuIEdvb2dsZSBU
ZXN0IG5vdworY2F0Y2hlcyBhbGwgdGVzdC10aHJvd24gZXhjZXB0aW9ucyBhbmQgbG9ncyB0aGVt
IGFzIGZhaWx1cmVzLgorCitfQXZhaWxhYmlsaXR5Ol8gV2luZG93cy4gYEdURVNUX0NBVENIX0VY
Q0VQVElPTlNgIGFuZAorYC0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc2AgaGF2ZSBubyBlZmZlY3Qg
b24gR29vZ2xlIFRlc3QncyBiZWhhdmlvciBvbiBMaW51eCBvcgorTWFjLCBldmVuIGlmIGV4Y2Vw
dGlvbnMgYXJlIGVuYWJsZWQuIEl0IGlzIHBvc3NpYmxlIHRvIGFkZCBzdXBwb3J0IGZvciBjYXRj
aGluZworZXhjZXB0aW9ucyBvbiB0aGVzZSBwbGF0Zm9ybXMsIGJ1dCBpdCBpcyBub3QgaW1wbGVt
ZW50ZWQgeWV0LgorCisjIyMgTGV0dGluZyBBbm90aGVyIFRlc3RpbmcgRnJhbWV3b3JrIERyaXZl
ICMjIworCitJZiB5b3Ugd29yayBvbiBhIHByb2plY3QgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHVz
aW5nIGFub3RoZXIgdGVzdGluZworZnJhbWV3b3JrIGFuZCBpcyBub3QgcmVhZHkgdG8gY29tcGxl
dGVseSBzd2l0Y2ggdG8gR29vZ2xlIFRlc3QgeWV0LAoreW91IGNhbiBnZXQgbXVjaCBvZiBHb29n
bGUgVGVzdCdzIGJlbmVmaXQgYnkgdXNpbmcgaXRzIGFzc2VydGlvbnMgaW4KK3lvdXIgZXhpc3Rp
bmcgdGVzdHMuICBKdXN0IGNoYW5nZSB5b3VyIGBtYWluKClgIGZ1bmN0aW9uIHRvIGxvb2sKK2xp
a2U6CisKK2BgYAorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK2ludCBtYWluKGludCBhcmdj
LCBjaGFyKiogYXJndikgeworICA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVy
ZSkgPSB0cnVlOworICAvLyBJbXBvcnRhbnQ6IEdvb2dsZSBUZXN0IG11c3QgYmUgaW5pdGlhbGl6
ZWQuCisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIC4uLiB3
aGF0ZXZlciB5b3VyIGV4aXN0aW5nIHRlc3RpbmcgZnJhbWV3b3JrIHJlcXVpcmVzIC4uLgorfQor
YGBgCisKK1dpdGggdGhhdCwgeW91IGNhbiB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBpbiBh
ZGRpdGlvbiB0byB0aGUKK25hdGl2ZSBhc3NlcnRpb25zIHlvdXIgdGVzdGluZyBmcmFtZXdvcmsg
cHJvdmlkZXMsIGZvciBleGFtcGxlOgorCitgYGAKK3ZvaWQgVGVzdEZvb0RvZXNCYXIoKSB7Cisg
IEZvbyBmb287CisgIEVYUEVDVF9MRShmb28uQmFyKDEpLCAxMDApOyAgICAgLy8gQSBHb29nbGUg
VGVzdCBhc3NlcnRpb24uCisgIENQUFVOSVRfQVNTRVJUKGZvby5Jc0VtcHR5KCkpOyAgLy8gQSBu
YXRpdmUgYXNzZXJ0aW9uLgorfQorYGBgCisKK0lmIGEgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIGZh
aWxzLCBpdCB3aWxsIHByaW50IGFuIGVycm9yIG1lc3NhZ2UgYW5kCit0aHJvdyBhbiBleGNlcHRp
b24sIHdoaWNoIHdpbGwgYmUgdHJlYXRlZCBhcyBhIGZhaWx1cmUgYnkgeW91ciBob3N0Cit0ZXN0
aW5nIGZyYW1ld29yay4gIElmIHlvdSBjb21waWxlIHlvdXIgY29kZSB3aXRoIGV4Y2VwdGlvbnMg
ZGlzYWJsZWQsCithIGZhaWxlZCBHb29nbGUgVGVzdCBhc3NlcnRpb24gd2lsbCBpbnN0ZWFkIGV4
aXQgeW91ciBwcm9ncmFtIHdpdGggYQorbm9uLXplcm8gY29kZSwgd2hpY2ggd2lsbCBhbHNvIHNp
Z25hbCBhIHRlc3QgZmFpbHVyZSB0byB5b3VyIHRlc3QKK3J1bm5lci4KKworSWYgeW91IGRvbid0
IHdyaXRlIGA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSB0cnVlO2Ag
aW4KK3lvdXIgYG1haW4oKWAsIHlvdSBjYW4gYWx0ZXJuYXRpdmVseSBlbmFibGUgdGhpcyBmZWF0
dXJlIGJ5IHNwZWNpZnlpbmcKK3RoZSBgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlYCBmbGFnIG9u
IHRoZSBjb21tYW5kLWxpbmUgb3Igc2V0dGluZyB0aGUKK2BHVEVTVF9USFJPV19PTl9GQUlMVVJF
YCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIG5vbi16ZXJvIHZhbHVlLgorCitfQXZhaWxhYmls
aXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdjEuMy4wLgorCisjIyBEaXN0cmlidXRp
bmcgVGVzdCBGdW5jdGlvbnMgdG8gTXVsdGlwbGUgTWFjaGluZXMgIyMKKworSWYgeW91IGhhdmUg
bW9yZSB0aGFuIG9uZSBtYWNoaW5lIHlvdSBjYW4gdXNlIHRvIHJ1biBhIHRlc3QgcHJvZ3JhbSwK
K3lvdSBtaWdodCB3YW50IHRvIHJ1biB0aGUgdGVzdCBmdW5jdGlvbnMgaW4gcGFyYWxsZWwgYW5k
IGdldCB0aGUKK3Jlc3VsdCBmYXN0ZXIuICBXZSBjYWxsIHRoaXMgdGVjaG5pcXVlIF9zaGFyZGlu
Z18sIHdoZXJlIGVhY2ggbWFjaGluZQoraXMgY2FsbGVkIGEgX3NoYXJkXy4KKworR29vZ2xlIFRl
c3QgaXMgY29tcGF0aWJsZSB3aXRoIHRlc3Qgc2hhcmRpbmcuICBUbyB0YWtlIGFkdmFudGFnZSBv
ZgordGhpcyBmZWF0dXJlLCB5b3VyIHRlc3QgcnVubmVyIChub3QgcGFydCBvZiBHb29nbGUgVGVz
dCkgbmVlZHMgdG8gZG8KK3RoZSBmb2xsb3dpbmc6CisKKyAgMS4gQWxsb2NhdGUgYSBudW1iZXIg
b2YgbWFjaGluZXMgKHNoYXJkcykgdG8gcnVuIHRoZSB0ZXN0cy4KKyAgMS4gT24gZWFjaCBzaGFy
ZCwgc2V0IHRoZSBgR1RFU1RfVE9UQUxfU0hBUkRTYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0
aGUgdG90YWwgbnVtYmVyIG9mIHNoYXJkcy4gIEl0IG11c3QgYmUgdGhlIHNhbWUgZm9yIGFsbCBz
aGFyZHMuCisgIDEuIE9uIGVhY2ggc2hhcmQsIHNldCB0aGUgYEdURVNUX1NIQVJEX0lOREVYYCBl
bnZpcm9ubWVudCB2YXJpYWJsZSB0byB0aGUgaW5kZXggb2YgdGhlIHNoYXJkLiAgRGlmZmVyZW50
IHNoYXJkcyBtdXN0IGJlIGFzc2lnbmVkIGRpZmZlcmVudCBpbmRpY2VzLCB3aGljaCBtdXN0IGJl
IGluIHRoZSByYW5nZSBgWzAsIEdURVNUX1RPVEFMX1NIQVJEUyAtIDFdYC4KKyAgMS4gUnVuIHRo
ZSBzYW1lIHRlc3QgcHJvZ3JhbSBvbiBhbGwgc2hhcmRzLiAgV2hlbiBHb29nbGUgVGVzdCBzZWVz
IHRoZSBhYm92ZSB0d28gZW52aXJvbm1lbnQgdmFyaWFibGVzLCBpdCB3aWxsIHNlbGVjdCBhIHN1
YnNldCBvZiB0aGUgdGVzdCBmdW5jdGlvbnMgdG8gcnVuLiAgQWNyb3NzIGFsbCBzaGFyZHMsIGVh
Y2ggdGVzdCBmdW5jdGlvbiBpbiB0aGUgcHJvZ3JhbSB3aWxsIGJlIHJ1biBleGFjdGx5IG9uY2Uu
CisgIDEuIFdhaXQgZm9yIGFsbCBzaGFyZHMgdG8gZmluaXNoLCB0aGVuIGNvbGxlY3QgYW5kIHJl
cG9ydCB0aGUgcmVzdWx0cy4KKworWW91ciBwcm9qZWN0IG1heSBoYXZlIHRlc3RzIHRoYXQgd2Vy
ZSB3cml0dGVuIHdpdGhvdXQgR29vZ2xlIFRlc3QgYW5kCit0aHVzIGRvbid0IHVuZGVyc3RhbmQg
dGhpcyBwcm90b2NvbC4gIEluIG9yZGVyIGZvciB5b3VyIHRlc3QgcnVubmVyIHRvCitmaWd1cmUg
b3V0IHdoaWNoIHRlc3Qgc3VwcG9ydHMgc2hhcmRpbmcsIGl0IGNhbiBzZXQgdGhlIGVudmlyb25t
ZW50Cit2YXJpYWJsZSBgR1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEVgIHRvIGEgbm9uLWV4aXN0ZW50
IGZpbGUgcGF0aC4gIElmIGEKK3Rlc3QgcHJvZ3JhbSBzdXBwb3J0cyBzaGFyZGluZywgaXQgd2ls
bCBjcmVhdGUgdGhpcyBmaWxlIHRvCithY2tub3dsZWRnZSB0aGUgZmFjdCAodGhlIGFjdHVhbCBj
b250ZW50cyBvZiB0aGUgZmlsZSBhcmUgbm90CitpbXBvcnRhbnQgYXQgdGhpcyB0aW1lOyBhbHRo
b3VnaCB3ZSBtYXkgc3RpY2sgc29tZSB1c2VmdWwgaW5mb3JtYXRpb24KK2luIGl0IGluIHRoZSBm
dXR1cmUuKTsgb3RoZXJ3aXNlIGl0IHdpbGwgbm90IGNyZWF0ZSBpdC4KKworSGVyZSdzIGFuIGV4
YW1wbGUgdG8gbWFrZSBpdCBjbGVhci4gIFN1cHBvc2UgeW91IGhhdmUgYSB0ZXN0IHByb2dyYW0K
K2Bmb29fdGVzdGAgdGhhdCBjb250YWlucyB0aGUgZm9sbG93aW5nIDUgdGVzdCBmdW5jdGlvbnM6
CitgYGAKK1RFU1QoQSwgVikKK1RFU1QoQSwgVykKK1RFU1QoQiwgWCkKK1RFU1QoQiwgWSkKK1RF
U1QoQiwgWikKK2BgYAorYW5kIHlvdSBoYXZlIDMgbWFjaGluZXMgYXQgeW91ciBkaXNwb3NhbC4g
IFRvIHJ1biB0aGUgdGVzdCBmdW5jdGlvbnMgaW4KK3BhcmFsbGVsLCB5b3Ugd291bGQgc2V0IGBH
VEVTVF9UT1RBTF9TSEFSRFNgIHRvIDMgb24gYWxsIG1hY2hpbmVzLCBhbmQKK3NldCBgR1RFU1Rf
U0hBUkRfSU5ERVhgIHRvIDAsIDEsIGFuZCAyIG9uIHRoZSBtYWNoaW5lcyByZXNwZWN0aXZlbHku
CitUaGVuIHlvdSB3b3VsZCBydW4gdGhlIHNhbWUgYGZvb190ZXN0YCBvbiBlYWNoIG1hY2hpbmUu
CisKK0dvb2dsZSBUZXN0IHJlc2VydmVzIHRoZSByaWdodCB0byBjaGFuZ2UgaG93IHRoZSB3b3Jr
IGlzIGRpc3RyaWJ1dGVkCithY3Jvc3MgdGhlIHNoYXJkcywgYnV0IGhlcmUncyBvbmUgcG9zc2li
bGUgc2NlbmFyaW86CisKKyAgKiBNYWNoaW5lICMwIHJ1bnMgYEEuVmAgYW5kIGBCLlhgLgorICAq
IE1hY2hpbmUgIzEgcnVucyBgQS5XYCBhbmQgYEIuWWAuCisgICogTWFjaGluZSAjMiBydW5zIGBC
LlpgLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lv
biAxLjMuMC4KKworIyBGdXNpbmcgR29vZ2xlIFRlc3QgU291cmNlIEZpbGVzICMKKworR29vZ2xl
IFRlc3QncyBpbXBsZW1lbnRhdGlvbiBjb25zaXN0cyBvZiB+MzAgZmlsZXMgKGV4Y2x1ZGluZyBp
dHMgb3duCit0ZXN0cykuICBTb21ldGltZXMgeW91IG1heSB3YW50IHRoZW0gdG8gYmUgcGFja2Fn
ZWQgdXAgaW4gdHdvIGZpbGVzIChhCitgLmhgIGFuZCBhIGAuY2NgKSBpbnN0ZWFkLCBzdWNoIHRo
YXQgeW91IGNhbiBlYXNpbHkgY29weSB0aGVtIHRvIGEgbmV3CittYWNoaW5lIGFuZCBzdGFydCBo
YWNraW5nIHRoZXJlLiAgRm9yIHRoaXMgd2UgcHJvdmlkZSBhbiBleHBlcmltZW50YWwKK1B5dGhv
biBzY3JpcHQgYGZ1c2VfZ3Rlc3RfZmlsZXMucHlgIGluIHRoZSBgc2NyaXB0cy9gIGRpcmVjdG9y
eSAoc2luY2UgcmVsZWFzZSAxLjMuMCkuCitBc3N1bWluZyB5b3UgaGF2ZSBQeXRob24gMi40IG9y
IGFib3ZlIGluc3RhbGxlZCBvbiB5b3VyIG1hY2hpbmUsIGp1c3QKK2dvIHRvIHRoYXQgZGlyZWN0
b3J5IGFuZCBydW4KK2BgYAorcHl0aG9uIGZ1c2VfZ3Rlc3RfZmlsZXMucHkgT1VUUFVUX0RJUgor
YGBgCisKK2FuZCB5b3Ugc2hvdWxkIHNlZSBhbiBgT1VUUFVUX0RJUmAgZGlyZWN0b3J5IGJlaW5n
IGNyZWF0ZWQgd2l0aCBmaWxlcworYGd0ZXN0L2d0ZXN0LmhgIGFuZCBgZ3Rlc3QvZ3Rlc3QtYWxs
LmNjYCBpbiBpdC4gIFRoZXNlIGZpbGVzIGNvbnRhaW4KK2V2ZXJ5dGhpbmcgeW91IG5lZWQgdG8g
dXNlIEdvb2dsZSBUZXN0LiAgSnVzdCBjb3B5IHRoZW0gdG8gYW55d2hlcmUKK3lvdSB3YW50IGFu
ZCB5b3UgYXJlIHJlYWR5IHRvIHdyaXRlIHRlc3RzLiAgWW91IGNhbiB1c2UgdGhlCitbc2NycHRz
L3Rlc3QvTWFrZWZpbGVdKC4uL3NjcmlwdHMvdGVzdC9NYWtlZmlsZSkKK2ZpbGUgYXMgYW4gZXhh
bXBsZSBvbiBob3cgdG8gY29tcGlsZSB5b3VyIHRlc3RzIGFnYWluc3QgdGhlbS4KKworIyBXaGVy
ZSB0byBHbyBmcm9tIEhlcmUgIworCitDb25ncmF0dWxhdGlvbnMhIFlvdSd2ZSBub3cgbGVhcm5l
ZCBtb3JlIGFkdmFuY2VkIEdvb2dsZSBUZXN0IHRvb2xzIGFuZCBhcmUKK3JlYWR5IHRvIHRhY2ts
ZSBtb3JlIGNvbXBsZXggdGVzdGluZyB0YXNrcy4gSWYgeW91IHdhbnQgdG8gZGl2ZSBldmVuIGRl
ZXBlciwgeW91CitjYW4gcmVhZCB0aGUgW0ZBUV0oVjFfNV9GQVEubWQpLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV81X0RvY3VtZW50YXRpb24ubWQgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzVfRG9jdW1lbnRhdGlvbi5tZApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NmJiYTJlYzg2ZTZjNmE0ODFiZGJlYWE1YWYxY2ZkYmVlM2FmYTIwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV81X0RvY3VtZW50YXRpb24ubWQK
QEAgLTAsMCArMSwxMiBAQAorVGhpcyBwYWdlIGxpc3RzIGFsbCBvZmZpY2lhbCBkb2N1bWVudGF0
aW9uIHdpa2kgcGFnZXMgZm9yIEdvb2dsZSBUZXN0ICoqMS41LjAqKiAtLSAqKmlmIHlvdSB1c2Ug
YSBkaWZmZXJlbnQgdmVyc2lvbiBvZiBHb29nbGUgVGVzdCwgbWFrZSBzdXJlIHRvIHJlYWQgdGhl
IGRvY3VtZW50YXRpb24gZm9yIHRoYXQgdmVyc2lvbiBpbnN0ZWFkLioqCisKKyAgKiBbUHJpbWVy
XShWMV81X1ByaW1lci5tZCkgLS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJlIG5ldyB0byBHb29nbGUg
VGVzdC4KKyAgKiBbU2FtcGxlc10oU2FtcGxlcy5tZCkgLS0gbGVhcm4gZnJvbSBleGFtcGxlcy4K
KyAgKiBbQWR2YW5jZWRHdWlkZV0oVjFfNV9BZHZhbmNlZEd1aWRlLm1kKSAtLSBsZWFybiBtb3Jl
IGFib3V0IEdvb2dsZSBUZXN0LgorICAqIFtYY29kZUd1aWRlXShWMV81X1hjb2RlR3VpZGUubWQp
IC0tIGhvdyB0byB1c2UgR29vZ2xlIFRlc3QgaW4gWGNvZGUgb24gTWFjLgorICAqIFtGcmVxdWVu
dGx5LUFza2VkIFF1ZXN0aW9uc10oVjFfNV9GQVEubWQpIC0tIGNoZWNrIGhlcmUgYmVmb3JlIGFz
a2luZyBhIHF1ZXN0aW9uIG9uIHRoZSBtYWlsaW5nIGxpc3QuCisKK1RvIGNvbnRyaWJ1dGUgY29k
ZSB0byBHb29nbGUgVGVzdCwgcmVhZDoKKworICAqIERldkd1aWRlIC0tIHJlYWQgdGhpcyBfYmVm
b3JlXyB3cml0aW5nIHlvdXIgZmlyc3QgcGF0Y2guCisgICogW1B1bXBNYW51YWxdKFYxXzVfUHVt
cE1hbnVhbC5tZCkgLS0gaG93IHdlIGdlbmVyYXRlIHNvbWUgb2YgR29vZ2xlIFRlc3QncyBzb3Vy
Y2UgZmlsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV81X0ZBUS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2RvY3MvVjFfNV9GQVEubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg3MGFmZjAwMDdmMmM2YTJjNTNmZmFj
MjFiZTBhZTA1MWQyNDNlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2RvY3MvVjFfNV9GQVEubWQKQEAgLTAsMCArMSw4ODYgQEAKKworCitJZiB5b3UgY2Fubm90
IGZpbmQgdGhlIGFuc3dlciB0byB5b3VyIHF1ZXN0aW9uIGhlcmUsIGFuZCB5b3UgaGF2ZSByZWFk
CitbUHJpbWVyXShWMV81X1ByaW1lci5tZCkgYW5kIFtBZHZhbmNlZEd1aWRlXShWMV81X0FkdmFu
Y2VkR3VpZGUubWQpLCBzZW5kIGl0IHRvCitnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vw
cy5jb20uCisKKyMjIFdoeSBzaG91bGQgSSB1c2UgR29vZ2xlIFRlc3QgaW5zdGVhZCBvZiBteSBm
YXZvcml0ZSBDKysgdGVzdGluZyBmcmFtZXdvcms/ICMjCisKK0ZpcnN0LCBsZXQncyBzYXkgY2xl
YXJseSB0aGF0IHdlIGRvbid0IHdhbnQgdG8gZ2V0IGludG8gdGhlIGRlYmF0ZSBvZgord2hpY2gg
QysrIHRlc3RpbmcgZnJhbWV3b3JrIGlzICoqdGhlIGJlc3QqKi4gIFRoZXJlIGV4aXN0IG1hbnkg
ZmluZQorZnJhbWV3b3JrcyBmb3Igd3JpdGluZyBDKysgdGVzdHMsIGFuZCB3ZSBoYXZlIHRyZW1l
bmRvdXMgcmVzcGVjdCBmb3IKK3RoZSBkZXZlbG9wZXJzIGFuZCB1c2VycyBvZiB0aGVtLiAgV2Ug
ZG9uJ3QgdGhpbmsgdGhlcmUgaXMgKG9yIHdpbGwKK2JlKSBhIHNpbmdsZSBiZXN0IGZyYW1ld29y
ayAtIHlvdSBoYXZlIHRvIHBpY2sgdGhlIHJpZ2h0IHRvb2wgZm9yIHRoZQorcGFydGljdWxhciB0
YXNrIHlvdSBhcmUgdGFja2xpbmcuCisKK1dlIGNyZWF0ZWQgR29vZ2xlIFRlc3QgYmVjYXVzZSB3
ZSBjb3VsZG4ndCBmaW5kIHRoZSByaWdodCBjb21iaW5hdGlvbgorb2YgZmVhdHVyZXMgYW5kIGNv
bnZlbmllbmNlcyBpbiBhbiBleGlzdGluZyBmcmFtZXdvcmsgdG8gc2F0aXNmeSBfb3VyXworbmVl
ZHMuICBUaGUgZm9sbG93aW5nIGlzIGEgbGlzdCBvZiB0aGluZ3MgdGhhdCBfd2VfIGxpa2UgYWJv
dXQgR29vZ2xlCitUZXN0LiAgV2UgZG9uJ3QgY2xhaW0gdGhlbSB0byBiZSB1bmlxdWUgdG8gR29v
Z2xlIFRlc3QgLSByYXRoZXIsIHRoZQorY29tYmluYXRpb24gb2YgdGhlbSBtYWtlcyBHb29nbGUg
VGVzdCB0aGUgY2hvaWNlIGZvciB1cy4gIFdlIGhvcGUgdGhpcworbGlzdCBjYW4gaGVscCB5b3Ug
ZGVjaWRlIHdoZXRoZXIgaXQgaXMgZm9yIHlvdSB0b28uCisKKyAgKiBHb29nbGUgVGVzdCBpcyBk
ZXNpZ25lZCB0byBiZSBwb3J0YWJsZS4gIEl0IHdvcmtzIHdoZXJlIG1hbnkgU1RMIHR5cGVzIChl
LmcuIGBzdGQ6OnN0cmluZ2AgYW5kIGBzdGQ6OnZlY3RvcmApIGRvbid0IGNvbXBpbGUuICBJdCBk
b2Vzbid0IHJlcXVpcmUgZXhjZXB0aW9ucyBvciBSVFRJLiAgQXMgYSByZXN1bHQsIGl0IHJ1bnMg
b24gTGludXgsIE1hYyBPUyBYLCBXaW5kb3dzIGFuZCBzZXZlcmFsIGVtYmVkZGVkIG9wZXJhdGlu
ZyBzeXN0ZW1zLgorICAqIE5vbmZhdGFsIGFzc2VydGlvbnMgKGBFWFBFQ1RfKmApIGhhdmUgcHJv
dmVuIHRvIGJlIGdyZWF0IHRpbWUgc2F2ZXJzLCBhcyB0aGV5IGFsbG93IGEgdGVzdCB0byByZXBv
cnQgbXVsdGlwbGUgZmFpbHVyZXMgaW4gYSBzaW5nbGUgZWRpdC1jb21waWxlLXRlc3QgY3ljbGUu
CisgICogSXQncyBlYXN5IHRvIHdyaXRlIGFzc2VydGlvbnMgdGhhdCBnZW5lcmF0ZSBpbmZvcm1h
dGl2ZSBtZXNzYWdlczogeW91IGp1c3QgdXNlIHRoZSBzdHJlYW0gc3ludGF4IHRvIGFwcGVuZCBh
bnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgZS5nLiBgQVNTRVJUX0VRKDUsIEZvbyhpKSkgPDwg
IiB3aGVyZSBpID0gIiA8PCBpO2AuICBJdCBkb2Vzbid0IHJlcXVpcmUgYSBuZXcgc2V0IG9mIG1h
Y3JvcyBvciBzcGVjaWFsIGZ1bmN0aW9ucy4KKyAgKiBHb29nbGUgVGVzdCBhdXRvbWF0aWNhbGx5
IGRldGVjdHMgeW91ciB0ZXN0cyBhbmQgZG9lc24ndCByZXF1aXJlIHlvdSB0byBlbnVtZXJhdGUg
dGhlbSBpbiBvcmRlciB0byBydW4gdGhlbS4KKyAgKiBObyBmcmFtZXdvcmsgY2FuIGFudGljaXBh
dGUgYWxsIHlvdXIgbmVlZHMsIHNvIEdvb2dsZSBUZXN0IHByb3ZpZGVzIGBFWFBFQ1RfUFJFRCpg
IHRvIG1ha2UgaXQgZWFzeSB0byBleHRlbmQgeW91ciBhc3NlcnRpb24gdm9jYWJ1bGFyeS4gIEZv
ciBhIG5pY2VyIHN5bnRheCwgeW91IGNhbiBkZWZpbmUgeW91ciBvd24gYXNzZXJ0aW9uIG1hY3Jv
cyB0cml2aWFsbHkgaW4gdGVybXMgb2YgYEVYUEVDVF9QUkVEKmAuCisgICogRGVhdGggdGVzdHMg
YXJlIHByZXR0eSBoYW5keSBmb3IgZW5zdXJpbmcgdGhhdCB5b3VyIGFzc2VydHMgaW4gcHJvZHVj
dGlvbiBjb2RlIGFyZSB0cmlnZ2VyZWQgYnkgdGhlIHJpZ2h0IGNvbmRpdGlvbnMuCisgICogYFND
T1BFRF9UUkFDRWAgaGVscHMgeW91IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYW4gYXNzZXJ0
aW9uIGZhaWx1cmUgd2hlbiBpdCBjb21lcyBmcm9tIGluc2lkZSBhIHN1Yi1yb3V0aW5lIG9yIGxv
b3AuCisgICogWW91IGNhbiBkZWNpZGUgd2hpY2ggdGVzdHMgdG8gcnVuIHVzaW5nIG5hbWUgcGF0
dGVybnMuICBUaGlzIHNhdmVzIHRpbWUgd2hlbiB5b3Ugd2FudCB0byBxdWlja2x5IHJlcHJvZHVj
ZSBhIHRlc3QgZmFpbHVyZS4KKworIyMgSG93IGRvIEkgZ2VuZXJhdGUgNjQtYml0IGJpbmFyaWVz
IG9uIFdpbmRvd3MgKHVzaW5nIFZpc3VhbCBTdHVkaW8gMjAwOCk/ICMjCisKKyhBbnN3ZXJlZCBi
eSBUcmV2b3IgUm9iaW5zb24pCisKK0xvYWQgdGhlIHN1cHBsaWVkIFZpc3VhbCBTdHVkaW8gc29s
dXRpb24gZmlsZSwgZWl0aGVyIGBtc3ZjXGd0ZXN0LW1kLnNsbmAgb3IKK2Btc3ZjXGd0ZXN0LnNs
bmAuIEdvIHRocm91Z2ggdGhlIG1pZ3JhdGlvbiB3aXphcmQgdG8gbWlncmF0ZSB0aGUKK3NvbHV0
aW9uIGFuZCBwcm9qZWN0IGZpbGVzIHRvIFZpc3VhbCBTdHVkaW8gMjAwOC4gU2VsZWN0CitgQ29u
ZmlndXJhdGlvbiBNYW5hZ2VyLi4uYCBmcm9tIHRoZSBgQnVpbGRgIG1lbnUuIFNlbGVjdCBgPE5l
dy4uLj5gIGZyb20KK3RoZSBgQWN0aXZlIHNvbHV0aW9uIHBsYXRmb3JtYCBkcm9wZG93bi4gIFNl
bGVjdCBgeDY0YCBmcm9tIHRoZSBuZXcKK3BsYXRmb3JtIGRyb3Bkb3duLCBsZWF2ZSBgQ29weSBz
ZXR0aW5ncyBmcm9tYCBzZXQgdG8gYFdpbjMyYCBhbmQKK2BDcmVhdGUgbmV3IHByb2plY3QgcGxh
dGZvcm1zYCBjaGVja2VkLCB0aGVuIGNsaWNrIGBPS2AuIFlvdSBub3cgaGF2ZQorYFdpbjMyYCBh
bmQgYHg2NGAgcGxhdGZvcm0gY29uZmlndXJhdGlvbnMsIHNlbGVjdGFibGUgZnJvbSB0aGUKK2BT
dGFuZGFyZGAgdG9vbGJhciwgd2hpY2ggYWxsb3cgeW91IHRvIHRvZ2dsZSBiZXR3ZWVuIGJ1aWxk
aW5nIDMyLWJpdCBvcgorNjQtYml0IGJpbmFyaWVzIChvciBib3RoIGF0IG9uY2UgdXNpbmcgQmF0
Y2ggQnVpbGQpLgorCitJbiBvcmRlciB0byBwcmV2ZW50IGJ1aWxkIG91dHB1dCBmaWxlcyBmcm9t
IG92ZXJ3cml0aW5nIG9uZSBhbm90aGVyLAoreW91J2xsIG5lZWQgdG8gY2hhbmdlIHRoZSBgSW50
ZXJtZWRpYXRlIERpcmVjdG9yeWAgc2V0dGluZ3MgZm9yIHRoZQorbmV3bHkgY3JlYXRlZCBwbGF0
Zm9ybSBjb25maWd1cmF0aW9uIGFjcm9zcyBhbGwgdGhlIHByb2plY3RzLiBUbyBkbwordGhpcywg
bXVsdGktc2VsZWN0IChlLmcuIHVzaW5nIHNoaWZ0LWNsaWNrKSBhbGwgcHJvamVjdHMgKGJ1dCBu
b3QgdGhlCitzb2x1dGlvbikgaW4gdGhlIGBTb2x1dGlvbiBFeHBsb3JlcmAuIFJpZ2h0LWNsaWNr
IG9uZSBvZiB0aGVtIGFuZAorc2VsZWN0IGBQcm9wZXJ0aWVzYC4gSW4gdGhlIGxlZnQgcGFuZSwg
c2VsZWN0IGBDb25maWd1cmF0aW9uIFByb3BlcnRpZXNgLAorYW5kIGZyb20gdGhlIGBDb25maWd1
cmF0aW9uYCBkcm9wZG93biwgc2VsZWN0IGBBbGwgQ29uZmlndXJhdGlvbnNgLgorTWFrZSBzdXJl
IHRoZSBzZWxlY3RlZCBwbGF0Zm9ybSBpcyBgeDY0YC4gRm9yIHRoZQorYEludGVybWVkaWF0ZSBE
aXJlY3RvcnlgIHNldHRpbmcsIGNoYW5nZSB0aGUgdmFsdWUgZnJvbQorYCQoUGxhdGZvcm1OYW1l
KVwkKENvbmZpZ3VyYXRpb25OYW1lKWAgdG8KK2AkKE91dERpcilcJChQcm9qZWN0TmFtZSlgLiBD
bGljayBgT0tgIGFuZCB0aGVuIGJ1aWxkIHRoZQorc29sdXRpb24uIFdoZW4gdGhlIGJ1aWxkIGlz
IGNvbXBsZXRlLCB0aGUgNjQtYml0IGJpbmFyaWVzIHdpbGwgYmUgaW4KK3RoZSBgbXN2Y1x4NjRc
RGVidWdgIGRpcmVjdG9yeS4KKworIyMgQ2FuIEkgdXNlIEdvb2dsZSBUZXN0IG9uIE1pbkdXPyAj
IworCitXZSBoYXZlbid0IHRlc3RlZCB0aGlzIG91cnNlbHZlcywgYnV0IFBlciBBYnJhaGFtc2Vu
IHJlcG9ydGVkIHRoYXQgaGUKK3dhcyBhYmxlIHRvIGNvbXBpbGUgYW5kIGluc3RhbGwgR29vZ2xl
IFRlc3Qgc3VjY2Vzc2Z1bGx5IHdoZW4gdXNpbmcKK01pbkdXIGZyb20gQ3lnd2luLiAgWW91J2xs
IG5lZWQgdG8gY29uZmlndXJlIGl0IHdpdGg6CisKK2BQQVRIL1RPL2NvbmZpZ3VyZSBDQz0iZ2Nj
IC1tbm8tY3lnd2luIiBDWFg9ImcrKyAtbW5vLWN5Z3dpbiJgCisKK1lvdSBzaG91bGQgYmUgYWJs
ZSB0byByZXBsYWNlIHRoZSBgLW1uby1jeWd3aW5gIG9wdGlvbiB3aXRoIGRpcmVjdCBsaW5rcwor
dG8gdGhlIHJlYWwgTWluR1cgYmluYXJpZXMsIGJ1dCB3ZSBoYXZlbid0IHRyaWVkIHRoYXQuCisK
K0NhdmVhdHM6CisKKyAgKiBUaGVyZSBhcmUgbWFueSB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZy4K
KyAgKiBgbWFrZSBjaGVja2Agd2lsbCBwcm9kdWNlIHNvbWUgZXJyb3JzIGFzIG5vdCBhbGwgdGVz
dHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZiBhcmUgY29tcGF0aWJsZSB3aXRoIE1pbkdXLgorCitX
ZSBhbHNvIGhhdmUgcmVwb3J0cyBvbiBzdWNjZXNzZnVsIGNyb3NzIGNvbXBpbGF0aW9uIG9mIEdv
b2dsZSBUZXN0IE1pbkdXIGJpbmFyaWVzIG9uIExpbnV4IHVzaW5nIFt0aGVzZSBpbnN0cnVjdGlv
bnNdKGh0dHA6Ly93aWtpLnd4d2lkZ2V0cy5vcmcvQ3Jvc3MtQ29tcGlsaW5nX1VuZGVyX0xpbnV4
I0Nyb3NzLWNvbXBpbGluZ191bmRlcl9MaW51eF9mb3JfTVNfV2luZG93cykgb24gdGhlIFd4V2lk
Z2V0cyBzaXRlLgorCitQbGVhc2UgY29udGFjdCBgZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVn
cm91cHMuY29tYCBpZiB5b3UgYXJlCitpbnRlcmVzdGVkIGluIGltcHJvdmluZyB0aGUgc3VwcG9y
dCBmb3IgTWluR1cuCisKKyMjIFdoeSBkb2VzIEdvb2dsZSBUZXN0IHN1cHBvcnQgRVhQRUNUXF9F
UShOVUxMLCBwdHIpIGFuZCBBU1NFUlRcX0VRKE5VTEwsIHB0cikgYnV0IG5vdCBFWFBFQ1RcX05F
KE5VTEwsIHB0cikgYW5kIEFTU0VSVFxfTkUoTlVMTCwgcHRyKT8gIyMKKworRHVlIHRvIHNvbWUg
cGVjdWxpYXJpdHkgb2YgQysrLCBpdCByZXF1aXJlcyBzb21lIG5vbi10cml2aWFsIHRlbXBsYXRl
CittZXRhIHByb2dyYW1taW5nIHRyaWNrcyB0byBzdXBwb3J0IHVzaW5nIGBOVUxMYCBhcyBhbiBh
cmd1bWVudCBvZiB0aGUKK2BFWFBFQ1RfWFgoKWAgYW5kIGBBU1NFUlRfWFgoKWAgbWFjcm9zLiBU
aGVyZWZvcmUgd2Ugb25seSBkbyBpdCB3aGVyZQoraXQncyBtb3N0IG5lZWRlZCAob3RoZXJ3aXNl
IHdlIG1ha2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIEdvb2dsZSBUZXN0CitoYXJkZXIgdG8gbWFp
bnRhaW4gYW5kIG1vcmUgZXJyb3ItcHJvbmUgdGhhbiBuZWNlc3NhcnkpLgorCitUaGUgYEVYUEVD
VF9FUSgpYCBtYWNybyB0YWtlcyB0aGUgX2V4cGVjdGVkXyB2YWx1ZSBhcyBpdHMgZmlyc3QKK2Fy
Z3VtZW50IGFuZCB0aGUgX2FjdHVhbF8gdmFsdWUgYXMgdGhlIHNlY29uZC4gSXQncyByZWFzb25h
YmxlIHRoYXQKK3NvbWVvbmUgd2FudHMgdG8gd3JpdGUgYEVYUEVDVF9FUShOVUxMLCBzb21lX2V4
cHJlc3Npb24pYCwgYW5kIHRoaXMKK2luZGVlZCB3YXMgcmVxdWVzdGVkIHNldmVyYWwgdGltZXMu
IFRoZXJlZm9yZSB3ZSBpbXBsZW1lbnRlZCBpdC4KKworVGhlIG5lZWQgZm9yIGBFWFBFQ1RfTkUo
TlVMTCwgcHRyKWAgaXNuJ3QgbmVhcmx5IGFzIHN0cm9uZy4gV2hlbiB0aGUKK2Fzc2VydGlvbiBm
YWlscywgeW91IGFscmVhZHkga25vdyB0aGF0IGBwdHJgIG11c3QgYmUgYE5VTExgLCBzbyBpdAor
ZG9lc24ndCBhZGQgYW55IGluZm9ybWF0aW9uIHRvIHByaW50IHB0ciBpbiB0aGlzIGNhc2UuIFRo
YXQgbWVhbnMKK2BFWFBFQ1RfVFJVRShwdHIgISBOVUxMKWAgd29ya3MganVzdCBhcyB3ZWxsLgor
CitJZiB3ZSB3ZXJlIHRvIHN1cHBvcnQgYEVYUEVDVF9ORShOVUxMLCBwdHIpYCwgZm9yIGNvbnNp
c3RlbmN5IHdlJ2xsCitoYXZlIHRvIHN1cHBvcnQgYEVYUEVDVF9ORShwdHIsIE5VTEwpYCBhcyB3
ZWxsLCBhcyB1bmxpa2UgYEVYUEVDVF9FUWAsCit3ZSBkb24ndCBoYXZlIGEgY29udmVudGlvbiBv
biB0aGUgb3JkZXIgb2YgdGhlIHR3byBhcmd1bWVudHMgZm9yCitgRVhQRUNUX05FYC4gVGhpcyBt
ZWFucyB1c2luZyB0aGUgdGVtcGxhdGUgbWV0YSBwcm9ncmFtbWluZyB0cmlja3MKK3R3aWNlIGlu
IHRoZSBpbXBsZW1lbnRhdGlvbiwgbWFraW5nIGl0IGV2ZW4gaGFyZGVyIHRvIHVuZGVyc3RhbmQg
YW5kCittYWludGFpbi4gV2UgYmVsaWV2ZSB0aGUgYmVuZWZpdCBkb2Vzbid0IGp1c3RpZnkgdGhl
IGNvc3QuCisKK0ZpbmFsbHksIHdpdGggdGhlIGdyb3d0aCBvZiBHb29nbGUgTW9jaydzIFttYXRj
aGVyXSguLi8uLi9Db29rQm9vay5tZCN1c2luZy1tYXRjaGVycy1pbi1nb29nbGUtdGVzdC1hc3Nl
cnRpb25zKSBsaWJyYXJ5LCB3ZSBhcmUKK2VuY291cmFnaW5nIHBlb3BsZSB0byB1c2UgdGhlIHVu
aWZpZWQgYEVYUEVDVF9USEFUKHZhbHVlLCBtYXRjaGVyKWAKK3N5bnRheCBtb3JlIG9mdGVuIGlu
IHRlc3RzLiBPbmUgc2lnbmlmaWNhbnQgYWR2YW50YWdlIG9mIHRoZSBtYXRjaGVyCithcHByb2Fj
aCBpcyB0aGF0IG1hdGNoZXJzIGNhbiBiZSBlYXNpbHkgY29tYmluZWQgdG8gZm9ybSBuZXcgbWF0
Y2hlcnMsCit3aGlsZSB0aGUgYEVYUEVDVF9ORWAsIGV0YywgbWFjcm9zIGNhbm5vdCBiZSBlYXNp
bHkKK2NvbWJpbmVkLiBUaGVyZWZvcmUgd2Ugd2FudCB0byBpbnZlc3QgbW9yZSBpbiB0aGUgbWF0
Y2hlcnMgdGhhbiBpbiB0aGUKK2BFWFBFQ1RfWFgoKWAgbWFjcm9zLgorCisjIyBEb2VzIEdvb2ds
ZSBUZXN0IHN1cHBvcnQgcnVubmluZyB0ZXN0cyBpbiBwYXJhbGxlbD8gIyMKKworVGVzdCBydW5u
ZXJzIHRlbmQgdG8gYmUgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIGJ1aWxkL3Rlc3QKK2Vudmly
b25tZW50LCBhbmQgR29vZ2xlIFRlc3QgZG9lc24ndCB0cnkgdG8gc29sdmUgdGhlIHByb2JsZW0g
b2YKK3J1bm5pbmcgdGVzdHMgaW4gcGFyYWxsZWwuICBJbnN0ZWFkLCB3ZSB0cmllZCB0byBtYWtl
IEdvb2dsZSBUZXN0IHdvcmsKK25pY2VseSB3aXRoIHRlc3QgcnVubmVycy4gIEZvciBleGFtcGxl
LCBHb29nbGUgVGVzdCdzIFhNTCByZXBvcnQKK2NvbnRhaW5zIHRoZSB0aW1lIHNwZW50IG9uIGVh
Y2ggdGVzdCwgYW5kIGl0cyBgZ3Rlc3RfbGlzdF90ZXN0c2AgYW5kCitgZ3Rlc3RfZmlsdGVyYCBm
bGFncyBjYW4gYmUgdXNlZCBmb3Igc3BsaXR0aW5nIHRoZSBleGVjdXRpb24gb2YgdGVzdAorbWV0
aG9kcyBpbnRvIG11bHRpcGxlIHByb2Nlc3Nlcy4gIFRoZXNlIGZ1bmN0aW9uYWxpdGllcyBjYW4g
aGVscCB0aGUKK3Rlc3QgcnVubmVyIHJ1biB0aGUgdGVzdHMgaW4gcGFyYWxsZWwuCisKKyMjIFdo
eSBkb24ndCBHb29nbGUgVGVzdCBydW4gdGhlIHRlc3RzIGluIGRpZmZlcmVudCB0aHJlYWRzIHRv
IHNwZWVkIHRoaW5ncyB1cD8gIyMKKworSXQncyBkaWZmaWN1bHQgdG8gd3JpdGUgdGhyZWFkLXNh
ZmUgY29kZS4gIE1vc3QgdGVzdHMgYXJlIG5vdCB3cml0dGVuCit3aXRoIHRocmVhZC1zYWZldHkg
aW4gbWluZCwgYW5kIHRodXMgbWF5IG5vdCB3b3JrIGNvcnJlY3RseSBpbiBhCittdWx0aS10aHJl
YWRlZCBzZXR0aW5nLgorCitJZiB5b3UgdGhpbmsgYWJvdXQgaXQsIGl0J3MgYWxyZWFkeSBoYXJk
IHRvIG1ha2UgeW91ciBjb2RlIHdvcmsgd2hlbgoreW91IGtub3cgd2hhdCBvdGhlciB0aHJlYWRz
IGFyZSBkb2luZy4gIEl0J3MgbXVjaCBoYXJkZXIsIGFuZAorc29tZXRpbWVzIGV2ZW4gaW1wb3Nz
aWJsZSwgdG8gbWFrZSB5b3VyIGNvZGUgd29yayB3aGVuIHlvdSBkb24ndCBrbm93Cit3aGF0IG90
aGVyIHRocmVhZHMgYXJlIGRvaW5nIChyZW1lbWJlciB0aGF0IHRlc3QgbWV0aG9kcyBjYW4gYmUg
YWRkZWQsCitkZWxldGVkLCBvciBtb2RpZmllZCBhZnRlciB5b3VyIHRlc3Qgd2FzIHdyaXR0ZW4p
LiAgSWYgeW91IHdhbnQgdG8gcnVuCit0aGUgdGVzdHMgaW4gcGFyYWxsZWwsIHlvdSdkIGJldHRl
ciBydW4gdGhlbSBpbiBkaWZmZXJlbnQgcHJvY2Vzc2VzLgorCisjIyBXaHkgYXJlbid0IEdvb2ds
ZSBUZXN0IGFzc2VydGlvbnMgaW1wbGVtZW50ZWQgdXNpbmcgZXhjZXB0aW9ucz8gIyMKKworT3Vy
IG9yaWdpbmFsIG1vdGl2YXRpb24gd2FzIHRvIGJlIGFibGUgdG8gdXNlIEdvb2dsZSBUZXN0IGlu
IHByb2plY3RzCit0aGF0IGRpc2FibGUgZXhjZXB0aW9ucy4gIExhdGVyIHdlIHJlYWxpemVkIHNv
bWUgYWRkaXRpb25hbCBiZW5lZml0cworb2YgdGhpcyBhcHByb2FjaDoKKworICAxLiBUaHJvd2lu
ZyBpbiBhIGRlc3RydWN0b3IgaXMgdW5kZWZpbmVkIGJlaGF2aW9yIGluIEMrKy4gIE5vdCB1c2lu
ZyBleGNlcHRpb25zIG1lYW5zIEdvb2dsZSBUZXN0J3MgYXNzZXJ0aW9ucyBhcmUgc2FmZSB0byB1
c2UgaW4gZGVzdHJ1Y3RvcnMuCisgIDEuIFRoZSBgRVhQRUNUXypgIGZhbWlseSBvZiBtYWNyb3Mg
d2lsbCBjb250aW51ZSBldmVuIGFmdGVyIGEgZmFpbHVyZSwgYWxsb3dpbmcgbXVsdGlwbGUgZmFp
bHVyZXMgaW4gYSBgVEVTVGAgdG8gYmUgcmVwb3J0ZWQgaW4gYSBzaW5nbGUgcnVuLiBUaGlzIGlz
IGEgcG9wdWxhciBmZWF0dXJlLCBhcyBpbiBDKysgdGhlIGVkaXQtY29tcGlsZS10ZXN0IGN5Y2xl
IGlzIHVzdWFsbHkgcXVpdGUgbG9uZyBhbmQgYmVpbmcgYWJsZSB0byBmaXhpbmcgbW9yZSB0aGFu
IG9uZSB0aGluZyBhdCBhIHRpbWUgaXMgYSBibGVzc2luZy4KKyAgMS4gSWYgYXNzZXJ0aW9ucyBh
cmUgaW1wbGVtZW50ZWQgdXNpbmcgZXhjZXB0aW9ucywgYSB0ZXN0IG1heSBmYWxzZWx5IGlnbm9y
ZSBhIGZhaWx1cmUgaWYgaXQncyBjYXVnaHQgYnkgdXNlciBjb2RlOgorYGBgCit0cnkgeyAuLi4g
QVNTRVJUX1RSVUUoLi4uKSAuLi4gfQorY2F0Y2ggKC4uLikgeyAuLi4gfQorYGBgCitUaGUgYWJv
dmUgY29kZSB3aWxsIHBhc3MgZXZlbiBpZiB0aGUgYEFTU0VSVF9UUlVFYCB0aHJvd3MuICBXaGls
ZSBpdCdzIHVubGlrZWx5IGZvciBzb21lb25lIHRvIHdyaXRlIHRoaXMgaW4gYSB0ZXN0LCBpdCdz
IHBvc3NpYmxlIHRvIHJ1biBpbnRvIHRoaXMgcGF0dGVybiB3aGVuIHlvdSB3cml0ZSBhc3NlcnRp
b25zIGluIGNhbGxiYWNrcyB0aGF0IGFyZSBjYWxsZWQgYnkgdGhlIGNvZGUgdW5kZXIgdGVzdC4K
KworVGhlIGRvd25zaWRlIG9mIG5vdCB1c2luZyBleGNlcHRpb25zIGlzIHRoYXQgYEFTU0VSVF8q
YCAoaW1wbGVtZW50ZWQKK3VzaW5nIGByZXR1cm5gKSB3aWxsIG9ubHkgYWJvcnQgdGhlIGN1cnJl
bnQgZnVuY3Rpb24sIG5vdCB0aGUgY3VycmVudAorYFRFU1RgLgorCisjIyBXaHkgZG8gd2UgdXNl
IHR3byBkaWZmZXJlbnQgbWFjcm9zIGZvciB0ZXN0cyB3aXRoIGFuZCB3aXRob3V0IGZpeHR1cmVz
PyAjIworCitVbmZvcnR1bmF0ZWx5LCBDKysncyBtYWNybyBzeXN0ZW0gZG9lc24ndCBhbGxvdyB1
cyB0byB1c2UgdGhlIHNhbWUKK21hY3JvIGZvciBib3RoIGNhc2VzLiAgT25lIHBvc3NpYmlsaXR5
IGlzIHRvIHByb3ZpZGUgb25seSBvbmUgbWFjcm8KK2ZvciB0ZXN0cyB3aXRoIGZpeHR1cmVzLCBh
bmQgcmVxdWlyZSB0aGUgdXNlciB0byBkZWZpbmUgYW4gZW1wdHkKK2ZpeHR1cmUgc29tZXRpbWVz
OgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCitU
RVNUX0YoRm9vVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KK2BgYAorb3IKK2BgYAordHlwZWRlZiA6
OnRlc3Rpbmc6OlRlc3QgRm9vVGVzdDsKKworVEVTVF9GKEZvb1Rlc3QsIERvZXNUaGF0KSB7IC4u
LiB9CitgYGAKKworWWV0LCBtYW55IHBlb3BsZSB0aGluayB0aGlzIGlzIG9uZSBsaW5lIHRvbyBt
YW55LiA6LSkgT3VyIGdvYWwgd2FzIHRvCittYWtlIGl0IHJlYWxseSBlYXN5IHRvIHdyaXRlIHRl
c3RzLCBzbyB3ZSB0cmllZCB0byBtYWtlIHNpbXBsZSB0ZXN0cwordHJpdmlhbCB0byBjcmVhdGUu
ICBUaGF0IG1lYW5zIHVzaW5nIGEgc2VwYXJhdGUgbWFjcm8gZm9yIHN1Y2ggdGVzdHMuCisKK1dl
IHRoaW5rIG5laXRoZXIgYXBwcm9hY2ggaXMgaWRlYWwsIHlldCBlaXRoZXIgb2YgdGhlbSBpcyBy
ZWFzb25hYmxlLgorSW4gdGhlIGVuZCwgaXQgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIgbXVjaCBl
aXRoZXIgd2F5LgorCisjIyBXaHkgZG9uJ3Qgd2UgdXNlIHN0cnVjdHMgYXMgdGVzdCBmaXh0dXJl
cz8gIyMKKworV2UgbGlrZSB0byB1c2Ugc3RydWN0cyBvbmx5IHdoZW4gcmVwcmVzZW50aW5nIHBh
c3NpdmUgZGF0YS4gIFRoaXMKK2Rpc3RpbmN0aW9uIGJldHdlZW4gc3RydWN0cyBhbmQgY2xhc3Nl
cyBpcyBnb29kIGZvciBkb2N1bWVudGluZyB0aGUKK2ludGVudCBvZiB0aGUgY29kZSdzIGF1dGhv
ci4gIFNpbmNlIHRlc3QgZml4dHVyZXMgaGF2ZSBsb2dpYyBsaWtlCitgU2V0VXAoKWAgYW5kIGBU
ZWFyRG93bigpYCwgdGhleSBhcmUgYmV0dGVyIGRlZmluZWQgYXMgY2xhc3Nlcy4KKworIyMgV2h5
IGFyZSBkZWF0aCB0ZXN0cyBpbXBsZW1lbnRlZCBhcyBhc3NlcnRpb25zIGluc3RlYWQgb2YgdXNp
bmcgYSB0ZXN0IHJ1bm5lcj8gIyMKKworT3VyIGdvYWwgd2FzIHRvIG1ha2UgZGVhdGggdGVzdHMg
YXMgY29udmVuaWVudCBmb3IgYSB1c2VyIGFzIEMrKworcG9zc2libHkgYWxsb3dzLiAgSW4gcGFy
dGljdWxhcjoKKworICAqIFRoZSBydW5uZXItc3R5bGUgcmVxdWlyZXMgdG8gc3BsaXQgdGhlIGlu
Zm9ybWF0aW9uIGludG8gdHdvIHBpZWNlczogdGhlIGRlZmluaXRpb24gb2YgdGhlIGRlYXRoIHRl
c3QgaXRzZWxmLCBhbmQgdGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBydW5uZXIgb24gaG93IHRv
IHJ1biB0aGUgZGVhdGggdGVzdCBhbmQgd2hhdCB0byBleHBlY3QuICBUaGUgZGVhdGggdGVzdCB3
b3VsZCBiZSB3cml0dGVuIGluIEMrKywgd2hpbGUgdGhlIHJ1bm5lciBzcGVjIG1heSBvciBtYXkg
bm90IGJlLiAgQSB1c2VyIG5lZWRzIHRvIGNhcmVmdWxseSBrZWVwIHRoZSB0d28gaW4gc3luYy4g
YEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIGV4cGVjdGVkX21lc3NhZ2UpYCBzcGVjaWZpZXMgYWxs
IG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBpbiBvbmUgcGxhY2UsIGluIG9uZSBsYW5ndWFnZSwgd2l0
aG91dCBib2lsZXJwbGF0ZSBjb2RlLiBJdCBpcyB2ZXJ5IGRlY2xhcmF0aXZlLgorICAqIGBBU1NF
UlRfREVBVEhgIGhhcyBhIHNpbWlsYXIgc3ludGF4IGFuZCBlcnJvci1yZXBvcnRpbmcgc2VtYW50
aWNzIGFzIG90aGVyIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMsIGFuZCB0aHVzIGlzIGVhc3kgdG8g
bGVhcm4uCisgICogYEFTU0VSVF9ERUFUSGAgY2FuIGJlIG1peGVkIHdpdGggb3RoZXIgYXNzZXJ0
aW9ucyBhbmQgb3RoZXIgbG9naWMgYXQgeW91ciB3aWxsLiAgWW91IGFyZSBub3QgbGltaXRlZCB0
byBvbmUgZGVhdGggdGVzdCBwZXIgdGVzdCBtZXRob2QuIEZvciBleGFtcGxlLCB5b3UgY2FuIHdy
aXRlIHNvbWV0aGluZyBsaWtlOgorYGBgCisgICAgaWYgKEZvb0NvbmRpdGlvbigpKSB7CisgICAg
ICBBU1NFUlRfREVBVEgoQmFyKCksICJibGFoIik7CisgICAgfSBlbHNlIHsKKyAgICAgIEFTU0VS
VF9FUSg1LCBCYXIoKSk7CisgICAgfQorYGBgCitJZiB5b3UgcHJlZmVyIG9uZSBkZWF0aCB0ZXN0
IHBlciB0ZXN0IG1ldGhvZCwgeW91IGNhbiB3cml0ZSB5b3VyIHRlc3RzIGluIHRoYXQgc3R5bGUg
dG9vLCBidXQgd2UgZG9uJ3Qgd2FudCB0byBpbXBvc2UgdGhhdCBvbiB0aGUgdXNlcnMuICBUaGUg
ZmV3ZXIgYXJ0aWZpY2lhbCBsaW1pdGF0aW9ucyB0aGUgYmV0dGVyLgorICAqIGBBU1NFUlRfREVB
VEhgIGNhbiByZWZlcmVuY2UgbG9jYWwgdmFyaWFibGVzIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9u
LCBhbmQgeW91IGNhbiBkZWNpZGUgaG93IG1hbnkgZGVhdGggdGVzdHMgeW91IHdhbnQgYmFzZWQg
b24gcnVuLXRpbWUgaW5mb3JtYXRpb24uICBGb3IgZXhhbXBsZSwKK2BgYAorICAgIGNvbnN0IGlu
dCBjb3VudCA9IEdldENvdW50KCk7ICAvLyBPbmx5IGtub3duIGF0IHJ1biB0aW1lLgorICAgIGZv
ciAoaW50IGkgPSAxOyBpIDw9IGNvdW50OyBpKyspIHsKKyAgICAgIEFTU0VSVF9ERUFUSCh7Cisg
ICAgICAgIGRvdWJsZSogYnVmZmVyID0gbmV3IGRvdWJsZVtpXTsKKyAgICAgICAgLi4uIGluaXRp
YWxpemVzIGJ1ZmZlciAuLi4KKyAgICAgICAgRm9vKGJ1ZmZlciwgaSkKKyAgICAgIH0sICJibGFo
IGJsYWgiKTsKKyAgICB9CitgYGAKK1RoZSBydW5uZXItYmFzZWQgYXBwcm9hY2ggdGVuZHMgdG8g
YmUgbW9yZSBzdGF0aWMgYW5kIGxlc3MgZmxleGlibGUsIG9yIHJlcXVpcmVzIG1vcmUgdXNlciBl
ZmZvcnQgdG8gZ2V0IHRoaXMga2luZCBvZiBmbGV4aWJpbGl0eS4KKworQW5vdGhlciBpbnRlcmVz
dGluZyB0aGluZyBhYm91dCBgQVNTRVJUX0RFQVRIYCBpcyB0aGF0IGl0IGNhbGxzIGBmb3JrKClg
Cit0byBjcmVhdGUgYSBjaGlsZCBwcm9jZXNzIHRvIHJ1biB0aGUgZGVhdGggdGVzdC4gIFRoaXMg
aXMgbGlnaHRlbmluZworZmFzdCwgYXMgYGZvcmsoKWAgdXNlcyBjb3B5LW9uLXdyaXRlIHBhZ2Vz
IGFuZCBpbmN1cnMgYWxtb3N0IHplcm8KK292ZXJoZWFkLCBhbmQgdGhlIGNoaWxkIHByb2Nlc3Mg
c3RhcnRzIGZyb20gdGhlIHVzZXItc3VwcGxpZWQKK3N0YXRlbWVudCBkaXJlY3RseSwgc2tpcHBp
bmcgYWxsIGdsb2JhbCBhbmQgbG9jYWwgaW5pdGlhbGl6YXRpb24gYW5kCithbnkgY29kZSBsZWFk
aW5nIHRvIHRoZSBnaXZlbiBzdGF0ZW1lbnQuICBJZiB5b3UgbGF1bmNoIHRoZSBjaGlsZAorcHJv
Y2VzcyBmcm9tIHNjcmF0Y2gsIGl0IGNhbiB0YWtlIHNlY29uZHMganVzdCB0byBsb2FkIGV2ZXJ5
dGhpbmcgYW5kCitzdGFydCBydW5uaW5nIGlmIHRoZSB0ZXN0IGxpbmtzIHRvIG1hbnkgbGlicmFy
aWVzIGR5bmFtaWNhbGx5LgorCisjIyBNeSBkZWF0aCB0ZXN0IG1vZGlmaWVzIHNvbWUgc3RhdGUs
IGJ1dCB0aGUgY2hhbmdlIHNlZW1zIGxvc3QgYWZ0ZXIgdGhlIGRlYXRoIHRlc3QgZmluaXNoZXMu
IFdoeT8gIyMKKworRGVhdGggdGVzdHMgKGBFWFBFQ1RfREVBVEhgLCBldGMpIGFyZSBleGVjdXRl
ZCBpbiBhIHN1Yi1wcm9jZXNzIHMudC4gdGhlCitleHBlY3RlZCBjcmFzaCB3b24ndCBraWxsIHRo
ZSB0ZXN0IHByb2dyYW0gKGkuZS4gdGhlIHBhcmVudCBwcm9jZXNzKS4gQXMgYQorcmVzdWx0LCBh
bnkgaW4tbWVtb3J5IHNpZGUgZWZmZWN0cyB0aGV5IGluY3VyIGFyZSBvYnNlcnZhYmxlIGluIHRo
ZWlyCityZXNwZWN0aXZlIHN1Yi1wcm9jZXNzZXMsIGJ1dCBub3QgaW4gdGhlIHBhcmVudCBwcm9j
ZXNzLiBZb3UgY2FuIHRoaW5rIG9mIHRoZW0KK2FzIHJ1bm5pbmcgaW4gYSBwYXJhbGxlbCB1bml2
ZXJzZSwgbW9yZSBvciBsZXNzLgorCisjIyBUaGUgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJ1
bmRlZmluZWQgcmVmZXJlbmNlcyIgdG8gc29tZSBzdGF0aWMgY29uc3QgbWVtYmVyIHZhcmlhYmxl
cywgYnV0IEkgZGlkIGRlZmluZSB0aGVtIGluIHRoZSBjbGFzcyBib2R5LiBXaGF0J3Mgd3Jvbmc/
ICMjCisKK0lmIHlvdXIgY2xhc3MgaGFzIGEgc3RhdGljIGRhdGEgbWVtYmVyOgorCitgYGAKKy8v
IGZvby5oCitjbGFzcyBGb28geworICAuLi4KKyAgc3RhdGljIGNvbnN0IGludCBrQmFyID0gMTAw
OworfTsKK2BgYAorCitZb3UgYWxzbyBuZWVkIHRvIGRlZmluZSBpdCBfb3V0c2lkZV8gb2YgdGhl
IGNsYXNzIGJvZHkgaW4gYGZvby5jY2A6CisKK2BgYAorY29uc3QgaW50IEZvbzo6a0JhcjsgIC8v
IE5vIGluaXRpYWxpemVyIGhlcmUuCitgYGAKKworT3RoZXJ3aXNlIHlvdXIgY29kZSBpcyAqKmlu
dmFsaWQgQysrKiosIGFuZCBtYXkgYnJlYWsgaW4gdW5leHBlY3RlZCB3YXlzLiBJbgorcGFydGlj
dWxhciwgdXNpbmcgaXQgaW4gR29vZ2xlIFRlc3QgY29tcGFyaXNvbiBhc3NlcnRpb25zIChgRVhQ
RUNUX0VRYCwgZXRjKQord2lsbCBnZW5lcmF0ZSBhbiAidW5kZWZpbmVkIHJlZmVyZW5jZSIgbGlu
a2VyIGVycm9yLgorCisjIyBJIGhhdmUgYW4gaW50ZXJmYWNlIHRoYXQgaGFzIHNldmVyYWwgaW1w
bGVtZW50YXRpb25zLiBDYW4gSSB3cml0ZSBhIHNldCBvZiB0ZXN0cyBvbmNlIGFuZCByZXBlYXQg
dGhlbSBvdmVyIGFsbCB0aGUgaW1wbGVtZW50YXRpb25zPyAjIworCitHb29nbGUgVGVzdCBkb2Vz
bid0IHlldCBoYXZlIGdvb2Qgc3VwcG9ydCBmb3IgdGhpcyBraW5kIG9mIHRlc3RzLCBvcgorZGF0
YS1kcml2ZW4gdGVzdHMgaW4gZ2VuZXJhbC4gV2UgaG9wZSB0byBiZSBhYmxlIHRvIG1ha2UgaW1w
cm92ZW1lbnRzIGluIHRoaXMKK2FyZWEgc29vbi4KKworIyMgQ2FuIEkgZGVyaXZlIGEgdGVzdCBm
aXh0dXJlIGZyb20gYW5vdGhlcj8gIyMKKworWWVzLgorCitFYWNoIHRlc3QgZml4dHVyZSBoYXMg
YSBjb3JyZXNwb25kaW5nIGFuZCBzYW1lIG5hbWVkIHRlc3QgY2FzZS4gVGhpcyBtZWFucyBvbmx5
CitvbmUgdGVzdCBjYXNlIGNhbiB1c2UgYSBwYXJ0aWN1bGFyIGZpeHR1cmUuIFNvbWV0aW1lcywg
aG93ZXZlciwgbXVsdGlwbGUgdGVzdAorY2FzZXMgbWF5IHdhbnQgdG8gdXNlIHRoZSBzYW1lIG9y
IHNsaWdodGx5IGRpZmZlcmVudCBmaXh0dXJlcy4gRm9yIGV4YW1wbGUsIHlvdQorbWF5IHdhbnQg
dG8gbWFrZSBzdXJlIHRoYXQgYWxsIG9mIGEgR1VJIGxpYnJhcnkncyB0ZXN0IGNhc2VzIGRvbid0
IGxlYWsKK2ltcG9ydGFudCBzeXN0ZW0gcmVzb3VyY2VzIGxpa2UgZm9udHMgYW5kIGJydXNoZXMu
CisKK0luIEdvb2dsZSBUZXN0LCB5b3Ugc2hhcmUgYSBmaXh0dXJlIGFtb25nIHRlc3QgY2FzZXMg
YnkgcHV0dGluZyB0aGUgc2hhcmVkCitsb2dpYyBpbiBhIGJhc2UgdGVzdCBmaXh0dXJlLCB0aGVu
IGRlcml2aW5nIGZyb20gdGhhdCBiYXNlIGEgc2VwYXJhdGUgZml4dHVyZQorZm9yIGVhY2ggdGVz
dCBjYXNlIHRoYXQgd2FudHMgdG8gdXNlIHRoaXMgY29tbW9uIGxvZ2ljLiBZb3UgdGhlbiB1c2Ug
YFRFU1RfRigpYAordG8gd3JpdGUgdGVzdHMgdXNpbmcgZWFjaCBkZXJpdmVkIGZpeHR1cmUuCisK
K1R5cGljYWxseSwgeW91ciBjb2RlIGxvb2tzIGxpa2UgdGhpczoKKworYGBgCisvLyBEZWZpbmVz
IGEgYmFzZSB0ZXN0IGZpeHR1cmUuCitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgeworICBwcm90ZWN0ZWQ6CisgICAuLi4KK307CisKKy8vIERlcml2ZXMgYSBmaXh0dXJl
IEZvb1Rlc3QgZnJvbSBCYXNlVGVzdC4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgQmFzZVRlc3Qg
eworICBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgICAgQmFzZVRl
c3Q6OlNldFVwKCk7ICAvLyBTZXRzIHVwIHRoZSBiYXNlIGZpeHR1cmUgZmlyc3QuCisgICAgICAu
Li4gYWRkaXRpb25hbCBzZXQtdXAgd29yayAuLi4KKyAgICB9CisgICAgdmlydHVhbCB2b2lkIFRl
YXJEb3duKCkgeworICAgICAgLi4uIGNsZWFuLXVwIHdvcmsgZm9yIEZvb1Rlc3QgLi4uCisgICAg
ICBCYXNlVGVzdDo6VGVhckRvd24oKTsgIC8vIFJlbWVtYmVyIHRvIHRlYXIgZG93biB0aGUgYmFz
ZSBmaXh0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFmdGVyIGNsZWFuaW5n
IHVwIEZvb1Rlc3QhCisgICAgfQorICAgIC4uLiBmdW5jdGlvbnMgYW5kIHZhcmlhYmxlcyBmb3Ig
Rm9vVGVzdCAuLi4KK307CisKKy8vIFRlc3RzIHRoYXQgdXNlIHRoZSBmaXh0dXJlIEZvb1Rlc3Qu
CitURVNUX0YoRm9vVGVzdCwgQmFyKSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgQmF6KSB7IC4u
LiB9CisKKy4uLiBhZGRpdGlvbmFsIGZpeHR1cmVzIGRlcml2ZWQgZnJvbSBCYXNlVGVzdCAuLi4K
K2BgYAorCitJZiBuZWNlc3NhcnksIHlvdSBjYW4gY29udGludWUgdG8gZGVyaXZlIHRlc3QgZml4
dHVyZXMgZnJvbSBhIGRlcml2ZWQgZml4dHVyZS4KK0dvb2dsZSBUZXN0IGhhcyBubyBsaW1pdCBv
biBob3cgZGVlcCB0aGUgaGllcmFyY2h5IGNhbiBiZS4KKworRm9yIGEgY29tcGxldGUgZXhhbXBs
ZSB1c2luZyBkZXJpdmVkIHRlc3QgZml4dHVyZXMsIHNlZQorYHNhbXBsZXMvc2FtcGxlNV91bml0
dGVzdC5jY2AuCisKKyMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyAidm9pZCB2YWx1ZSBub3QgaWdu
b3JlZCBhcyBpdCBvdWdodCB0byBiZS4iIFdoYXQgZG9lcyB0aGlzIG1lYW4/ICMjCisKK1lvdSdy
ZSBwcm9iYWJseSB1c2luZyBhbiBgQVNTRVJUXyooKWAgaW4gYSBmdW5jdGlvbiB0aGF0IGRvZXNu
J3QgcmV0dXJuIGB2b2lkYC4KK2BBU1NFUlRfKigpYCBjYW4gb25seSBiZSB1c2VkIGluIGB2b2lk
YCBmdW5jdGlvbnMuCisKKyMjIE15IGRlYXRoIHRlc3QgaGFuZ3MgKG9yIHNlZy1mYXVsdHMpLiBI
b3cgZG8gSSBmaXggaXQ/ICMjCisKK0luIEdvb2dsZSBUZXN0LCBkZWF0aCB0ZXN0cyBhcmUgcnVu
IGluIGEgY2hpbGQgcHJvY2VzcyBhbmQgdGhlIHdheSB0aGV5IHdvcmsgaXMKK2RlbGljYXRlLiBU
byB3cml0ZSBkZWF0aCB0ZXN0cyB5b3UgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhl
eSB3b3JrLgorUGxlYXNlIG1ha2Ugc3VyZSB5b3UgaGF2ZSByZWFkIHRoaXMuCisKK0luIHBhcnRp
Y3VsYXIsIGRlYXRoIHRlc3RzIGRvbid0IGxpa2UgaGF2aW5nIG11bHRpcGxlIHRocmVhZHMgaW4g
dGhlIHBhcmVudAorcHJvY2Vzcy4gU28gdGhlIGZpcnN0IHRoaW5nIHlvdSBjYW4gdHJ5IGlzIHRv
IGVsaW1pbmF0ZSBjcmVhdGluZyB0aHJlYWRzCitvdXRzaWRlIG9mIGBFWFBFQ1RfREVBVEgoKWAu
CisKK1NvbWV0aW1lcyB0aGlzIGlzIGltcG9zc2libGUgYXMgc29tZSBsaWJyYXJ5IHlvdSBtdXN0
IHVzZSBtYXkgYmUgY3JlYXRpbmcKK3RocmVhZHMgYmVmb3JlIGBtYWluKClgIGlzIGV2ZW4gcmVh
Y2hlZC4gSW4gdGhpcyBjYXNlLCB5b3UgY2FuIHRyeSB0byBtaW5pbWl6ZQordGhlIGNoYW5jZSBv
ZiBjb25mbGljdHMgYnkgZWl0aGVyIG1vdmluZyBhcyBtYW55IGFjdGl2aXRpZXMgYXMgcG9zc2li
bGUgaW5zaWRlCitgRVhQRUNUX0RFQVRIKClgIChpbiB0aGUgZXh0cmVtZSBjYXNlLCB5b3Ugd2Fu
dCB0byBtb3ZlIGV2ZXJ5dGhpbmcgaW5zaWRlKSwgb3IKK2xlYXZpbmcgYXMgZmV3IHRoaW5ncyBh
cyBwb3NzaWJsZSBpbiBpdC4gQWxzbywgeW91IGNhbiB0cnkgdG8gc2V0IHRoZSBkZWF0aAordGVz
dCBzdHlsZSB0byBgInRocmVhZHNhZmUiYCwgd2hpY2ggaXMgc2FmZXIgYnV0IHNsb3dlciwgYW5k
IHNlZSBpZiBpdCBoZWxwcy4KKworSWYgeW91IGdvIHdpdGggdGhyZWFkLXNhZmUgZGVhdGggdGVz
dHMsIHJlbWVtYmVyIHRoYXQgdGhleSByZXJ1biB0aGUgdGVzdAorcHJvZ3JhbSBmcm9tIHRoZSBi
ZWdpbm5pbmcgaW4gdGhlIGNoaWxkIHByb2Nlc3MuIFRoZXJlZm9yZSBtYWtlIHN1cmUgeW91cgor
cHJvZ3JhbSBjYW4gcnVuIHNpZGUtYnktc2lkZSB3aXRoIGl0c2VsZiBhbmQgaXMgZGV0ZXJtaW5p
c3RpYy4KKworSW4gdGhlIGVuZCwgdGhpcyBib2lscyBkb3duIHRvIGdvb2QgY29uY3VycmVudCBw
cm9ncmFtbWluZy4gWW91IGhhdmUgdG8gbWFrZQorc3VyZSB0aGF0IHRoZXJlIGlzIG5vIHJhY2Ug
Y29uZGl0aW9ucyBvciBkZWFkIGxvY2tzIGluIHlvdXIgcHJvZ3JhbS4gTm8gc2lsdmVyCitidWxs
ZXQgLSBzb3JyeSEKKworIyMgU2hvdWxkIEkgdXNlIHRoZSBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9y
IG9mIHRoZSB0ZXN0IGZpeHR1cmUgb3IgdGhlIHNldC11cC90ZWFyLWRvd24gZnVuY3Rpb24/ICMj
CisKK1RoZSBmaXJzdCB0aGluZyB0byByZW1lbWJlciBpcyB0aGF0IEdvb2dsZSBUZXN0IGRvZXMg
bm90IHJldXNlIHRoZQorc2FtZSB0ZXN0IGZpeHR1cmUgb2JqZWN0IGFjcm9zcyBtdWx0aXBsZSB0
ZXN0cy4gRm9yIGVhY2ggYFRFU1RfRmAsCitHb29nbGUgVGVzdCB3aWxsIGNyZWF0ZSBhIGZyZXNo
IHRlc3QgZml4dHVyZSBvYmplY3QsIF9pbW1lZGlhdGVseV8KK2NhbGwgYFNldFVwKClgLCBydW4g
dGhlIHRlc3QsIGNhbGwgYFRlYXJEb3duKClgLCBhbmQgdGhlbgorX2ltbWVkaWF0ZWx5XyBkZWxl
dGUgdGhlIHRlc3QgZml4dHVyZSBvYmplY3QuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8KK25lZWQg
dG8gd3JpdGUgYSBgU2V0VXAoKWAgb3IgYFRlYXJEb3duKClgIGZ1bmN0aW9uIGlmIHRoZSBjb25z
dHJ1Y3Rvcgorb3IgZGVzdHJ1Y3RvciBhbHJlYWR5IGRvZXMgdGhlIGpvYi4KKworWW91IG1heSBz
dGlsbCB3YW50IHRvIHVzZSBgU2V0VXAoKS9UZWFyRG93bigpYCBpbiB0aGUgZm9sbG93aW5nIGNh
c2VzOgorICAqIElmIHRoZSB0ZWFyLWRvd24gb3BlcmF0aW9uIGNvdWxkIHRocm93IGFuIGV4Y2Vw
dGlvbiwgeW91IG11c3QgdXNlIGBUZWFyRG93bigpYCBhcyBvcHBvc2VkIHRvIHRoZSBkZXN0cnVj
dG9yLCBhcyB0aHJvd2luZyBpbiBhIGRlc3RydWN0b3IgbGVhZHMgdG8gdW5kZWZpbmVkIGJlaGF2
aW9yIGFuZCB1c3VhbGx5IHdpbGwga2lsbCB5b3VyIHByb2dyYW0gcmlnaHQgYXdheS4gTm90ZSB0
aGF0IG1hbnkgc3RhbmRhcmQgbGlicmFyaWVzIChsaWtlIFNUTCkgbWF5IHRocm93IHdoZW4gZXhj
ZXB0aW9ucyBhcmUgZW5hYmxlZCBpbiB0aGUgY29tcGlsZXIuIFRoZXJlZm9yZSB5b3Ugc2hvdWxk
IHByZWZlciBgVGVhckRvd24oKWAgaWYgeW91IHdhbnQgdG8gd3JpdGUgcG9ydGFibGUgdGVzdHMg
dGhhdCB3b3JrIHdpdGggb3Igd2l0aG91dCBleGNlcHRpb25zLgorICAqIFRoZSBHb29nbGUgVGVz
dCB0ZWFtIGlzIGNvbnNpZGVyaW5nIG1ha2luZyB0aGUgYXNzZXJ0aW9uIG1hY3JvcyB0aHJvdyBv
biBwbGF0Zm9ybXMgd2hlcmUgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCAoZS5nLiBXaW5kb3dzLCBN
YWMgT1MsIGFuZCBMaW51eCBjbGllbnQtc2lkZSksIHdoaWNoIHdpbGwgZWxpbWluYXRlIHRoZSBu
ZWVkIGZvciB0aGUgdXNlciB0byBwcm9wYWdhdGUgZmFpbHVyZXMgZnJvbSBhIHN1YnJvdXRpbmUg
dG8gaXRzIGNhbGxlci4gVGhlcmVmb3JlLCB5b3Ugc2hvdWxkbid0IHVzZSBHb29nbGUgVGVzdCBh
c3NlcnRpb25zIGluIGEgZGVzdHJ1Y3RvciBpZiB5b3VyIGNvZGUgY291bGQgcnVuIG9uIHN1Y2gg
YSBwbGF0Zm9ybS4KKyAgKiBJbiBhIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IsIHlvdSBjYW5u
b3QgbWFrZSBhIHZpcnR1YWwgZnVuY3Rpb24gY2FsbCBvbiB0aGlzIG9iamVjdC4gKFlvdSBjYW4g
Y2FsbCBhIG1ldGhvZCBkZWNsYXJlZCBhcyB2aXJ0dWFsLCBidXQgaXQgd2lsbCBiZSBzdGF0aWNh
bGx5IGJvdW5kLikgVGhlcmVmb3JlLCBpZiB5b3UgbmVlZCB0byBjYWxsIGEgbWV0aG9kIHRoYXQg
d2lsbCBiZSBvdmVycmlkZW4gaW4gYSBkZXJpdmVkIGNsYXNzLCB5b3UgaGF2ZSB0byB1c2UgYFNl
dFVwKCkvVGVhckRvd24oKWAuCisKKyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgIm5vIG1hdGNo
aW5nIGZ1bmN0aW9uIHRvIGNhbGwiIHdoZW4gSSB1c2UgQVNTRVJUXF9QUkVEbi4gSG93IGRvIEkg
Zml4IGl0PyAjIworCitJZiB0aGUgcHJlZGljYXRlIGZ1bmN0aW9uIHlvdSB1c2UgaW4gYEFTU0VS
VF9QUkVEKmAgb3IgYEVYUEVDVF9QUkVEKmAgaXMKK292ZXJsb2FkZWQgb3IgYSB0ZW1wbGF0ZSwg
dGhlIGNvbXBpbGVyIHdpbGwgaGF2ZSB0cm91YmxlIGZpZ3VyaW5nIG91dCB3aGljaAorb3Zlcmxv
YWRlZCB2ZXJzaW9uIGl0IHNob3VsZCB1c2UuIGBBU1NFUlRfUFJFRF9GT1JNQVQqYCBhbmQKK2BF
WFBFQ1RfUFJFRF9GT1JNQVQqYCBkb24ndCBoYXZlIHRoaXMgcHJvYmxlbS4KKworSWYgeW91IHNl
ZSB0aGlzIGVycm9yLCB5b3UgbWlnaHQgd2FudCB0byBzd2l0Y2ggdG8KK2AoQVNTRVJUfEVYUEVD
VClfUFJFRF9GT1JNQVQqYCwgd2hpY2ggd2lsbCBhbHNvIGdpdmUgeW91IGEgYmV0dGVyIGZhaWx1
cmUKK21lc3NhZ2UuIElmLCBob3dldmVyLCB0aGF0IGlzIG5vdCBhbiBvcHRpb24sIHlvdSBjYW4g
cmVzb2x2ZSB0aGUgcHJvYmxlbSBieQorZXhwbGljaXRseSB0ZWxsaW5nIHRoZSBjb21waWxlciB3
aGljaCB2ZXJzaW9uIHRvIHBpY2suCisKK0ZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYXZlCisK
K2BgYAorYm9vbCBJc1Bvc2l0aXZlKGludCBuKSB7CisgIHJldHVybiBuID4gMDsKK30KK2Jvb2wg
SXNQb3NpdGl2ZShkb3VibGUgeCkgeworICByZXR1cm4geCA+IDA7Cit9CitgYGAKKworeW91IHdp
bGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IgaWYgeW91IHdyaXRlCisKK2BgYAorRVhQRUNUX1BSRUQx
KElzUG9zaXRpdmUsIDUpOworYGBgCisKK0hvd2V2ZXIsIHRoaXMgd2lsbCB3b3JrOgorCitgYGAK
K0VYUEVDVF9QUkVEMSgqc3RhdGljX2Nhc3Q8Ym9vbCAoKikoaW50KT4qKElzUG9zaXRpdmUpLCA1
KTsKK2BgYAorCisoVGhlIHN0dWZmIGluc2lkZSB0aGUgYW5nbGVkIGJyYWNrZXRzIGZvciB0aGUg
YHN0YXRpY19jYXN0YCBvcGVyYXRvciBpcyB0aGUKK3R5cGUgb2YgdGhlIGZ1bmN0aW9uIHBvaW50
ZXIgZm9yIHRoZSBgaW50YC12ZXJzaW9uIG9mIGBJc1Bvc2l0aXZlKClgLikKKworQXMgYW5vdGhl
ciBleGFtcGxlLCB3aGVuIHlvdSBoYXZlIGEgdGVtcGxhdGUgZnVuY3Rpb24KKworYGBgCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK2Jvb2wgSXNOZWdhdGl2ZShUIHgpIHsKKyAgcmV0dXJuIHggPCAw
OworfQorYGBgCisKK3lvdSBjYW4gdXNlIGl0IGluIGEgcHJlZGljYXRlIGFzc2VydGlvbiBsaWtl
IHRoaXM6CisKK2BgYAorQVNTRVJUX1BSRUQxKElzTmVnYXRpdmUqPGludD4qLCAtNSk7CitgYGAK
KworVGhpbmdzIGFyZSBtb3JlIGludGVyZXN0aW5nIGlmIHlvdXIgdGVtcGxhdGUgaGFzIG1vcmUg
dGhhbiBvbmUgcGFyYW1ldGVycy4gVGhlCitmb2xsb3dpbmcgd29uJ3QgY29tcGlsZToKKworYGBg
CitBU1NFUlRfUFJFRDIoKkdyZWF0ZXJUaGFuPGludCwgaW50PiosIDUsIDApOworYGBgCisKKwor
YXMgdGhlIEMrKyBwcmUtcHJvY2Vzc29yIHRoaW5rcyB5b3UgYXJlIGdpdmluZyBgQVNTRVJUX1BS
RUQyYCA0IGFyZ3VtZW50cywKK3doaWNoIGlzIG9uZSBtb3JlIHRoYW4gZXhwZWN0ZWQuIFRoZSB3
b3JrYXJvdW5kIGlzIHRvIHdyYXAgdGhlIHByZWRpY2F0ZQorZnVuY3Rpb24gaW4gcGFyZW50aGVz
ZXM6CisKK2BgYAorQVNTRVJUX1BSRUQyKCooR3JlYXRlclRoYW48aW50LCBpbnQ+KSosIDUsIDAp
OworYGBgCisKKworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJpZ25vcmluZyByZXR1
cm4gdmFsdWUiIHdoZW4gSSBjYWxsIFJVTlxfQUxMXF9URVNUUygpLiBXaHk/ICMjCisKK1NvbWUg
cGVvcGxlIGhhZCBiZWVuIGlnbm9yaW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgYFJVTl9BTExfVEVT
VFMoKWAuIFRoYXQgaXMsCitpbnN0ZWFkIG9mCisKK2BgYAorcmV0dXJuIFJVTl9BTExfVEVTVFMo
KTsKK2BgYAorCit0aGV5IHdyaXRlCisKK2BgYAorUlVOX0FMTF9URVNUUygpOworYGBgCisKK1Ro
aXMgaXMgd3JvbmcgYW5kIGRhbmdlcm91cy4gQSB0ZXN0IHJ1bm5lciBuZWVkcyB0byBzZWUgdGhl
IHJldHVybiB2YWx1ZSBvZgorYFJVTl9BTExfVEVTVFMoKWAgaW4gb3JkZXIgdG8gZGV0ZXJtaW5l
IGlmIGEgdGVzdCBoYXMgcGFzc2VkLiBJZiB5b3VyIGBtYWluKClgCitmdW5jdGlvbiBpZ25vcmVz
IGl0LCB5b3VyIHRlc3Qgd2lsbCBiZSBjb25zaWRlcmVkIHN1Y2Nlc3NmdWwgZXZlbiBpZiBpdCBo
YXMgYQorR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIGZhaWx1cmUuIFZlcnkgYmFkLgorCitUbyBoZWxw
IHRoZSB1c2VycyBhdm9pZCB0aGlzIGRhbmdlcm91cyBidWcsIHRoZSBpbXBsZW1lbnRhdGlvbiBv
ZgorYFJVTl9BTExfVEVTVFMoKWAgY2F1c2VzIGdjYyB0byByYWlzZSB0aGlzIHdhcm5pbmcsIHdo
ZW4gdGhlIHJldHVybiB2YWx1ZSBpcworaWdub3JlZC4gSWYgeW91IHNlZSB0aGlzIHdhcm5pbmcs
IHRoZSBmaXggaXMgc2ltcGxlOiBqdXN0IG1ha2Ugc3VyZSBpdHMgdmFsdWUKK2lzIHVzZWQgYXMg
dGhlIHJldHVybiB2YWx1ZSBvZiBgbWFpbigpYC4KKworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5z
IHRoYXQgYSBjb25zdHJ1Y3RvciAob3IgZGVzdHJ1Y3RvcikgY2Fubm90IHJldHVybiBhIHZhbHVl
LiBXaGF0J3MgZ29pbmcgb24/ICMjCisKK0R1ZSB0byBhIHBlY3VsaWFyaXR5IG9mIEMrKywgaW4g
b3JkZXIgdG8gc3VwcG9ydCB0aGUgc3ludGF4IGZvciBzdHJlYW1pbmcKK21lc3NhZ2VzIHRvIGFu
IGBBU1NFUlRfKmAsIGUuZy4KKworYGBgCitBU1NFUlRfRVEoMSwgRm9vKCkpIDw8ICJibGFoIGJs
YWgiIDw8IGZvbzsKK2BgYAorCit3ZSBoYWQgdG8gZ2l2ZSB1cCB1c2luZyBgQVNTRVJUKmAgYW5k
IGBGQUlMKmAgKGJ1dCBub3QgYEVYUEVDVCpgIGFuZAorYEFERF9GQUlMVVJFKmApIGluIGNvbnN0
cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIG1vdmUgdGhlCitj
b250ZW50IG9mIHlvdXIgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciB0byBhIHByaXZhdGUgdm9pZCBt
ZW1iZXIgZnVuY3Rpb24sIG9yCitzd2l0Y2ggdG8gYEVYUEVDVF8qKClgIGlmIHRoYXQgd29ya3Mu
IFRoaXMgc2VjdGlvbiBpbiB0aGUgdXNlcidzIGd1aWRlIGV4cGxhaW5zCitpdC4KKworIyMgTXkg
c2V0LXVwIGZ1bmN0aW9uIGlzIG5vdCBjYWxsZWQuIFdoeT8gIyMKKworQysrIGlzIGNhc2Utc2Vu
c2l0aXZlLiBJdCBzaG91bGQgYmUgc3BlbGxlZCBhcyBgU2V0VXAoKWAuICBEaWQgeW91CitzcGVs
bCBpdCBhcyBgU2V0dXAoKWA/CisKK1NpbWlsYXJseSwgc29tZXRpbWVzIHBlb3BsZSBzcGVsbCBg
U2V0VXBUZXN0Q2FzZSgpYCBhcyBgU2V0dXBUZXN0Q2FzZSgpYCBhbmQKK3dvbmRlciB3aHkgaXQn
cyBuZXZlciBjYWxsZWQuCisKKyMjIEhvdyBkbyBJIGp1bXAgdG8gdGhlIGxpbmUgb2YgYSBmYWls
dXJlIGluIEVtYWNzIGRpcmVjdGx5PyAjIworCitHb29nbGUgVGVzdCdzIGZhaWx1cmUgbWVzc2Fn
ZSBmb3JtYXQgaXMgdW5kZXJzdG9vZCBieSBFbWFjcyBhbmQgbWFueSBvdGhlcgorSURFcywgbGlr
ZSBhY21lIGFuZCBYQ29kZS4gSWYgYSBHb29nbGUgVGVzdCBtZXNzYWdlIGlzIGluIGEgY29tcGls
YXRpb24gYnVmZmVyCitpbiBFbWFjcywgdGhlbiBpdCdzIGNsaWNrYWJsZS4gWW91IGNhbiBub3cg
aGl0IGBlbnRlcmAgb24gYSBtZXNzYWdlIHRvIGp1bXAgdG8KK3RoZSBjb3JyZXNwb25kaW5nIHNv
dXJjZSBjb2RlLCBvciB1c2UgYEMteCBgYCB0byBqdW1wIHRvIHRoZSBuZXh0IGZhaWx1cmUuCisK
KyMjIEkgaGF2ZSBzZXZlcmFsIHRlc3QgY2FzZXMgd2hpY2ggc2hhcmUgdGhlIHNhbWUgdGVzdCBm
aXh0dXJlIGxvZ2ljLCBkbyBJIGhhdmUgdG8gZGVmaW5lIGEgbmV3IHRlc3QgZml4dHVyZSBjbGFz
cyBmb3IgZWFjaCBvZiB0aGVtPyBUaGlzIHNlZW1zIHByZXR0eSB0ZWRpb3VzLiAjIworCitZb3Ug
ZG9uJ3QgaGF2ZSB0by4gSW5zdGVhZCBvZgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMg
QmFzZVRlc3Qge307CisKK1RFU1RfRihGb29UZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihGb29U
ZXN0LCBEZWYpIHsgLi4uIH0KKworY2xhc3MgQmFyVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCB7fTsK
KworVEVTVF9GKEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIERlZikgeyAu
Li4gfQorYGBgCisKK3lvdSBjYW4gc2ltcGx5IGB0eXBlZGVmYCB0aGUgdGVzdCBmaXh0dXJlczoK
K2BgYAordHlwZWRlZiBCYXNlVGVzdCBGb29UZXN0OworCitURVNUX0YoRm9vVGVzdCwgQWJjKSB7
IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9CisKK3R5cGVkZWYgQmFzZVRlc3Qg
QmFyVGVzdDsKKworVEVTVF9GKEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRlc3Qs
IERlZikgeyAuLi4gfQorYGBgCisKKyMjIFRoZSBHb29nbGUgVGVzdCBvdXRwdXQgaXMgYnVyaWVk
IGluIGEgd2hvbGUgYnVuY2ggb2YgbG9nIG1lc3NhZ2VzLiBXaGF0IGRvIEkgZG8/ICMjCisKK1Ro
ZSBHb29nbGUgVGVzdCBvdXRwdXQgaXMgbWVhbnQgdG8gYmUgYSBjb25jaXNlIGFuZCBodW1hbi1m
cmllbmRseSByZXBvcnQuIElmCit5b3VyIHRlc3QgZ2VuZXJhdGVzIHRleHR1YWwgb3V0cHV0IGl0
c2VsZiwgaXQgd2lsbCBtaXggd2l0aCB0aGUgR29vZ2xlIFRlc3QKK291dHB1dCwgbWFraW5nIGl0
IGhhcmQgdG8gcmVhZC4gSG93ZXZlciwgdGhlcmUgaXMgYW4gZWFzeSBzb2x1dGlvbiB0byB0aGlz
Citwcm9ibGVtLgorCitTaW5jZSBtb3N0IGxvZyBtZXNzYWdlcyBnbyB0byBzdGRlcnIsIHdlIGRl
Y2lkZWQgdG8gbGV0IEdvb2dsZSBUZXN0IG91dHB1dCBnbwordG8gc3Rkb3V0LiBUaGlzIHdheSwg
eW91IGNhbiBlYXNpbHkgc2VwYXJhdGUgdGhlIHR3byB1c2luZyByZWRpcmVjdGlvbi4gRm9yCitl
eGFtcGxlOgorYGBgCisuL215X3Rlc3QgPiBnb29nbGV0ZXN0X291dHB1dC50eHQKK2BgYAorCisj
IyBXaHkgc2hvdWxkIEkgcHJlZmVyIHRlc3QgZml4dHVyZXMgb3ZlciBnbG9iYWwgdmFyaWFibGVz
PyAjIworCitUaGVyZSBhcmUgc2V2ZXJhbCBnb29kIHJlYXNvbnM6CisgIDEuIEl0J3MgbGlrZWx5
IHlvdXIgdGVzdCBuZWVkcyB0byBjaGFuZ2UgdGhlIHN0YXRlcyBvZiBpdHMgZ2xvYmFsIHZhcmlh
Ymxlcy4gVGhpcyBtYWtlcyBpdCBkaWZmaWN1bHQgdG8ga2VlcCBzaWRlIGVmZmVjdHMgZnJvbSBl
c2NhcGluZyBvbmUgdGVzdCBhbmQgY29udGFtaW5hdGluZyBvdGhlcnMsIG1ha2luZyBkZWJ1Z2dp
bmcgZGlmZmljdWx0LiBCeSB1c2luZyBmaXh0dXJlcywgZWFjaCB0ZXN0IGhhcyBhIGZyZXNoIHNl
dCBvZiB2YXJpYWJsZXMgdGhhdCdzIGRpZmZlcmVudCAoYnV0IHdpdGggdGhlIHNhbWUgbmFtZXMp
LiBUaHVzLCB0ZXN0cyBhcmUga2VwdCBpbmRlcGVuZGVudCBvZiBlYWNoIG90aGVyLgorICAxLiBH
bG9iYWwgdmFyaWFibGVzIHBvbGx1dGUgdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisgIDEuIFRlc3Qg
Zml4dHVyZXMgY2FuIGJlIHJldXNlZCB2aWEgc3ViY2xhc3NpbmcsIHdoaWNoIGNhbm5vdCBiZSBk
b25lIGVhc2lseSB3aXRoIGdsb2JhbCB2YXJpYWJsZXMuIFRoaXMgaXMgdXNlZnVsIGlmIG1hbnkg
dGVzdCBjYXNlcyBoYXZlIHNvbWV0aGluZyBpbiBjb21tb24uCisKKyMjIEhvdyBkbyBJIHRlc3Qg
cHJpdmF0ZSBjbGFzcyBtZW1iZXJzIHdpdGhvdXQgd3JpdGluZyBGUklFTkRcX1RFU1QoKXM/ICMj
CisKK1lvdSBzaG91bGQgdHJ5IHRvIHdyaXRlIHRlc3RhYmxlIGNvZGUsIHdoaWNoIG1lYW5zIGNs
YXNzZXMgc2hvdWxkIGJlIGVhc2lseQordGVzdGVkIGZyb20gdGhlaXIgcHVibGljIGludGVyZmFj
ZS4gT25lIHdheSB0byBhY2hpZXZlIHRoaXMgaXMgdGhlIFBpbXBsIGlkaW9tOgoreW91IG1vdmUg
YWxsIHByaXZhdGUgbWVtYmVycyBvZiBhIGNsYXNzIGludG8gYSBoZWxwZXIgY2xhc3MsIGFuZCBt
YWtlIGFsbAorbWVtYmVycyBvZiB0aGUgaGVscGVyIGNsYXNzIHB1YmxpYy4KKworWW91IGhhdmUg
c2V2ZXJhbCBvdGhlciBvcHRpb25zIHRoYXQgZG9uJ3QgcmVxdWlyZSB1c2luZyBgRlJJRU5EX1RF
U1RgOgorICAqIFdyaXRlIHRoZSB0ZXN0cyBhcyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlIGNsYXNz
OgorYGBgCitjbGFzcyBGb28geworICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKKyAgLi4uCit9Owor
CitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgor
ICAuLi4KKyAgdm9pZCBUZXN0MSgpIHsuLi59IC8vIFRoaXMgYWNjZXNzZXMgcHJpdmF0ZSBtZW1i
ZXJzIG9mIGNsYXNzIEZvby4KKyAgdm9pZCBUZXN0MigpIHsuLi59IC8vIFNvIGRvZXMgdGhpcyBv
bmUuCit9OworCitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgVGVzdDEoKTsKK30KKworVEVT
VF9GKEZvb1Rlc3QsIFRlc3QyKSB7CisgIFRlc3QyKCk7Cit9CitgYGAKKyAgKiBJbiB0aGUgZml4
dHVyZSBjbGFzcywgd3JpdGUgYWNjZXNzb3JzIGZvciB0aGUgdGVzdGVkIGNsYXNzJyBwcml2YXRl
IG1lbWJlcnMsIHRoZW4gdXNlIHRoZSBhY2Nlc3NvcnMgaW4geW91ciB0ZXN0czoKK2BgYAorY2xh
c3MgRm9vIHsKKyAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7CisgIC4uLgorfTsKKworY2xhc3MgRm9v
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLi4uCisgIFQx
IGdldF9wcml2YXRlX21lbWJlcjEoRm9vKiBvYmopIHsKKyAgICByZXR1cm4gb2JqLT5wcml2YXRl
X21lbWJlcjFfOworICB9Cit9OworCitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgLi4uCisg
IGdldF9wcml2YXRlX21lbWJlcjEoeCkKKyAgLi4uCit9CitgYGAKKyAgKiBJZiB0aGUgbWV0aG9k
cyBhcmUgZGVjbGFyZWQgKipwcm90ZWN0ZWQqKiwgeW91IGNhbiBjaGFuZ2UgdGhlaXIgYWNjZXNz
IGxldmVsIGluIGEgdGVzdC1vbmx5IHN1YmNsYXNzOgorYGBgCitjbGFzcyBZb3VyQ2xhc3Mgewor
ICAuLi4KKyBwcm90ZWN0ZWQ6IC8vIHByb3RlY3RlZCBhY2Nlc3MgZm9yIHRlc3RhYmlsaXR5Lgor
ICBpbnQgRG9Tb21ldGhpbmdSZXR1cm5pbmdJbnQoKTsKKyAgLi4uCit9OworCisvLyBpbiB0aGUg
eW91cl9jbGFzc190ZXN0LmNjIGZpbGU6CitjbGFzcyBUZXN0YWJsZVlvdXJDbGFzcyA6IHB1Ymxp
YyBZb3VyQ2xhc3MgeworICAuLi4KKyBwdWJsaWM6IHVzaW5nIFlvdXJDbGFzczo6RG9Tb21ldGhp
bmdSZXR1cm5pbmdJbnQ7IC8vIGNoYW5nZXMgYWNjZXNzIHJpZ2h0cworICAuLi4KK307CisKK1RF
U1RfRihZb3VyQ2xhc3NUZXN0LCBEb1NvbWV0aGluZ1Rlc3QpIHsKKyAgVGVzdGFibGVZb3VyQ2xh
c3Mgb2JqOworICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWRfdmFsdWUsIG9iai5Eb1NvbWV0aGluZ1Jl
dHVybmluZ0ludCgpKTsKK30KK2BgYAorCisjIyBIb3cgZG8gSSB0ZXN0IHByaXZhdGUgY2xhc3Mg
c3RhdGljIG1lbWJlcnMgd2l0aG91dCB3cml0aW5nIEZSSUVORFxfVEVTVCgpcz8gIyMKKworV2Ug
ZmluZCBwcml2YXRlIHN0YXRpYyBtZXRob2RzIGNsdXR0ZXIgdGhlIGhlYWRlciBmaWxlLiAgVGhl
eSBhcmUKK2ltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIGlkZWFsbHkgc2hvdWxkIGJlIGtlcHQg
b3V0IG9mIGEgLmguIFNvIG9mdGVuIEkgbWFrZQordGhlbSBmcmVlIGZ1bmN0aW9ucyBpbnN0ZWFk
LgorCitJbnN0ZWFkIG9mOgorYGBgCisvLyBmb28uaAorY2xhc3MgRm9vIHsKKyAgLi4uCisgcHJp
dmF0ZToKKyAgc3RhdGljIGJvb2wgRnVuYyhpbnQgbik7Cit9OworCisvLyBmb28uY2MKK2Jvb2wg
Rm9vOjpGdW5jKGludCBuKSB7IC4uLiB9CisKKy8vIGZvb190ZXN0LmNjCitFWFBFQ1RfVFJVRShG
b286OkZ1bmMoMTIzNDUpKTsKK2BgYAorCitZb3UgcHJvYmFibHkgc2hvdWxkIGJldHRlciB3cml0
ZToKK2BgYAorLy8gZm9vLmgKK2NsYXNzIEZvbyB7CisgIC4uLgorfTsKKworLy8gZm9vLmNjCitu
YW1lc3BhY2UgaW50ZXJuYWwgeworICBib29sIEZ1bmMoaW50IG4pIHsgLi4uIH0KK30KKworLy8g
Zm9vX3Rlc3QuY2MKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisgIGJvb2wgRnVuYyhpbnQgbik7Cit9
CisKK0VYUEVDVF9UUlVFKGludGVybmFsOjpGdW5jKDEyMzQ1KSk7CitgYGAKKworIyMgSSB3b3Vs
ZCBsaWtlIHRvIHJ1biBhIHRlc3Qgc2V2ZXJhbCB0aW1lcyB3aXRoIGRpZmZlcmVudCBwYXJhbWV0
ZXJzLiBEbyBJIG5lZWQgdG8gd3JpdGUgc2V2ZXJhbCBzaW1pbGFyIGNvcGllcyBvZiBpdD8gIyMK
KworTm8uIFlvdSBjYW4gdXNlIGEgZmVhdHVyZSBjYWxsZWQgW3ZhbHVlLXBhcmFtZXRlcml6ZWQg
dGVzdHNdKFYxXzVfQWR2YW5jZWRHdWlkZS5tZCNWYWx1ZV9QYXJhbWV0ZXJpemVkX1Rlc3RzKSB3
aGljaAorbGV0cyB5b3UgcmVwZWF0IHlvdXIgdGVzdHMgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVy
cywgd2l0aG91dCBkZWZpbmluZyBpdCBtb3JlIHRoYW4gb25jZS4KKworIyMgSG93IGRvIEkgdGVz
dCBhIGZpbGUgdGhhdCBkZWZpbmVzIG1haW4oKT8gIyMKKworVG8gdGVzdCBhIGBmb28uY2NgIGZp
bGUsIHlvdSBuZWVkIHRvIGNvbXBpbGUgYW5kIGxpbmsgaXQgaW50byB5b3VyIHVuaXQgdGVzdAor
cHJvZ3JhbS4gSG93ZXZlciwgd2hlbiB0aGUgZmlsZSBjb250YWlucyBhIGRlZmluaXRpb24gZm9y
IHRoZSBgbWFpbigpYAorZnVuY3Rpb24sIGl0IHdpbGwgY2xhc2ggd2l0aCB0aGUgYG1haW4oKWAg
b2YgeW91ciB1bml0IHRlc3QsIGFuZCB3aWxsIHJlc3VsdCBpbgorYSBidWlsZCBlcnJvci4KKwor
VGhlIHJpZ2h0IHNvbHV0aW9uIGlzIHRvIHNwbGl0IGl0IGludG8gdGhyZWUgZmlsZXM6CisgIDEu
IGBmb28uaGAgd2hpY2ggY29udGFpbnMgdGhlIGRlY2xhcmF0aW9ucywKKyAgMS4gYGZvby5jY2Ag
d2hpY2ggY29udGFpbnMgdGhlIGRlZmluaXRpb25zIGV4Y2VwdCBgbWFpbigpYCwgYW5kCisgIDEu
IGBmb29fbWFpbi5jY2Agd2hpY2ggY29udGFpbnMgbm90aGluZyBidXQgdGhlIGRlZmluaXRpb24g
b2YgYG1haW4oKWAuCisKK1RoZW4gYGZvby5jY2AgY2FuIGJlIGVhc2lseSB0ZXN0ZWQuCisKK0lm
IHlvdSBhcmUgYWRkaW5nIHRlc3RzIHRvIGFuIGV4aXN0aW5nIGZpbGUgYW5kIGRvbid0IHdhbnQg
YW4gaW50cnVzaXZlIGNoYW5nZQorbGlrZSB0aGlzLCB0aGVyZSBpcyBhIGhhY2s6IGp1c3QgaW5j
bHVkZSB0aGUgZW50aXJlIGBmb28uY2NgIGZpbGUgaW4geW91ciB1bml0Cit0ZXN0LiBGb3IgZXhh
bXBsZToKK2BgYAorLy8gRmlsZSBmb29fdW5pdHRlc3QuY2MKKworLy8gVGhlIGhlYWRlcnMgc2Vj
dGlvbgorLi4uCisKKy8vIFJlbmFtZXMgbWFpbigpIGluIGZvby5jYyB0byBtYWtlIHJvb20gZm9y
IHRoZSB1bml0IHRlc3QgbWFpbigpCisjZGVmaW5lIG1haW4gRm9vTWFpbgorCisjaW5jbHVkZSAi
YS9iL2Zvby5jYyIKKworLy8gVGhlIHRlc3RzIHN0YXJ0IGhlcmUuCisuLi4KK2BgYAorCisKK0hv
d2V2ZXIsIHBsZWFzZSByZW1lbWJlciB0aGlzIGlzIGEgaGFjayBhbmQgc2hvdWxkIG9ubHkgYmUg
dXNlZCBhcyB0aGUgbGFzdAorcmVzb3J0LgorCisjIyBXaGF0IGNhbiB0aGUgc3RhdGVtZW50IGFy
Z3VtZW50IGluIEFTU0VSVFxfREVBVEgoKSBiZT8gIyMKKworYEFTU0VSVF9ERUFUSChfc3RhdGVt
ZW50XywgX3JlZ2V4XylgIChvciBhbnkgZGVhdGggYXNzZXJ0aW9uIG1hY3JvKSBjYW4gYmUgdXNl
ZAord2hlcmV2ZXIgYF9zdGF0ZW1lbnRfYCBpcyB2YWxpZC4gU28gYmFzaWNhbGx5IGBfc3RhdGVt
ZW50X2AgY2FuIGJlIGFueSBDKysKK3N0YXRlbWVudCB0aGF0IG1ha2VzIHNlbnNlIGluIHRoZSBj
dXJyZW50IGNvbnRleHQuIEluIHBhcnRpY3VsYXIsIGl0IGNhbgorcmVmZXJlbmNlIGdsb2JhbCBh
bmQvb3IgbG9jYWwgdmFyaWFibGVzLCBhbmQgY2FuIGJlOgorICAqIGEgc2ltcGxlIGZ1bmN0aW9u
IGNhbGwgKG9mdGVuIHRoZSBjYXNlKSwKKyAgKiBhIGNvbXBsZXggZXhwcmVzc2lvbiwgb3IKKyAg
KiBhIGNvbXBvdW5kIHN0YXRlbWVudC4KKworPiBTb21lIGV4YW1wbGVzIGFyZSBzaG93biBoZXJl
OgorCitgYGAKKy8vIEEgZGVhdGggdGVzdCBjYW4gYmUgYSBzaW1wbGUgZnVuY3Rpb24gY2FsbC4K
K1RFU1QoTXlEZWF0aFRlc3QsIEZ1bmN0aW9uQ2FsbCkgeworICBBU1NFUlRfREVBVEgoWHl6KDUp
LCAiWHl6IGZhaWxlZCIpOworfQorCisvLyBPciBhIGNvbXBsZXggZXhwcmVzc2lvbiB0aGF0IHJl
ZmVyZW5jZXMgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMuCitURVNUKE15RGVhdGhUZXN0LCBDb21w
bGV4RXhwcmVzc2lvbikgeworICBjb25zdCBib29sIGMgPSBDb25kaXRpb24oKTsKKyAgQVNTRVJU
X0RFQVRIKChjID8gRnVuYzEoMCkgOiBvYmplY3QyLk1ldGhvZCgidGVzdCIpKSwKKyAgICAgICAg
ICAgICAgICIoRnVuYzF8TWV0aG9kKSBmYWlsZWQiKTsKK30KKworLy8gRGVhdGggYXNzZXJ0aW9u
cyBjYW4gYmUgdXNlZCBhbnkgd2hlcmUgaW4gYSBmdW5jdGlvbi4gSW4KKy8vIHBhcnRpY3VsYXIs
IHRoZXkgY2FuIGJlIGluc2lkZSBhIGxvb3AuCitURVNUKE15RGVhdGhUZXN0LCBJbnNpZGVMb29w
KSB7CisgIC8vIFZlcmlmaWVzIHRoYXQgRm9vKDApLCBGb28oMSksIC4uLiwgYW5kIEZvbyg0KSBh
bGwgZGllLgorICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgeworICAgIEVYUEVDVF9ERUFU
SF9NKEZvbyhpKSwgIkZvbyBoYXMgXFxkKyBlcnJvcnMiLAorICAgICAgICAgICAgICAgICAgIDo6
dGVzdGluZzo6TWVzc2FnZSgpIDw8ICJ3aGVyZSBpIGlzICIgPDwgaSk7CisgIH0KK30KKworLy8g
QSBkZWF0aCBhc3NlcnRpb24gY2FuIGNvbnRhaW4gYSBjb21wb3VuZCBzdGF0ZW1lbnQuCitURVNU
KE15RGVhdGhUZXN0LCBDb21wb3VuZFN0YXRlbWVudCkgeworICAvLyBWZXJpZmllcyB0aGF0IGF0
IGxlYXNlIG9uZSBvZiBCYXIoMCksIEJhcigxKSwgLi4uLCBhbmQKKyAgLy8gQmFyKDQpIGRpZXMu
CisgIEFTU0VSVF9ERUFUSCh7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAg
ICAgIEJhcihpKTsKKyAgICB9CisgIH0sCisgICJCYXIgaGFzIFxcZCsgZXJyb3JzIik7fQorYGBg
CisKK2Bnb29nbGV0ZXN0X3VuaXR0ZXN0LmNjYCBjb250YWlucyBtb3JlIGV4YW1wbGVzIGlmIHlv
dSBhcmUgaW50ZXJlc3RlZC4KKworIyMgV2hhdCBzeW50YXggZG9lcyB0aGUgcmVndWxhciBleHBy
ZXNzaW9uIGluIEFTU0VSVFxfREVBVEggdXNlPyAjIworCitPbiBQT1NJWCBzeXN0ZW1zLCBHb29n
bGUgVGVzdCB1c2VzIHRoZSBQT1NJWCBFeHRlbmRlZCByZWd1bGFyCitleHByZXNzaW9uIHN5bnRh
eAorKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVndWxhcl9leHByZXNzaW9uI1BPU0lY
X0V4dGVuZGVkX1JlZ3VsYXJfRXhwcmVzc2lvbnMpLiBPbgorV2luZG93cywgaXQgdXNlcyBhIGxp
bWl0ZWQgdmFyaWFudCBvZiByZWd1bGFyIGV4cHJlc3Npb24gc3ludGF4LiBGb3IKK21vcmUgZGV0
YWlscywgc2VlIHRoZSBbcmVndWxhciBleHByZXNzaW9uIHN5bnRheF0oVjFfNV9BZHZhbmNlZEd1
aWRlLm1kI1JlZ3VsYXJfRXhwcmVzc2lvbl9TeW50YXgpLgorCisjIyBJIGhhdmUgYSBmaXh0dXJl
IGNsYXNzIEZvbywgYnV0IFRFU1RcX0YoRm9vLCBCYXIpIGdpdmVzIG1lIGVycm9yICJubyBtYXRj
aGluZyBmdW5jdGlvbiBmb3IgY2FsbCB0byBGb286OkZvbygpIi4gV2h5PyAjIworCitHb29nbGUg
VGVzdCBuZWVkcyB0byBiZSBhYmxlIHRvIGNyZWF0ZSBvYmplY3RzIG9mIHlvdXIgdGVzdCBmaXh0
dXJlIGNsYXNzLCBzbworaXQgbXVzdCBoYXZlIGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4gTm9ybWFs
bHkgdGhlIGNvbXBpbGVyIHdpbGwgZGVmaW5lIG9uZSBmb3IKK3lvdS4gSG93ZXZlciwgdGhlcmUg
YXJlIGNhc2VzIHdoZXJlIHlvdSBoYXZlIHRvIGRlZmluZSB5b3VyIG93bjoKKyAgKiBJZiB5b3Ug
ZXhwbGljaXRseSBkZWNsYXJlIGEgbm9uLWRlZmF1bHQgY29uc3RydWN0b3IgZm9yIGNsYXNzIGBG
b29gLCB0aGVuIHlvdSBuZWVkIHRvIGRlZmluZSBhIGRlZmF1bHQgY29uc3RydWN0b3IsIGV2ZW4g
aWYgaXQgd291bGQgYmUgZW1wdHkuCisgICogSWYgYEZvb2AgaGFzIGEgY29uc3Qgbm9uLXN0YXRp
YyBkYXRhIG1lbWJlciwgdGhlbiB5b3UgaGF2ZSB0byBkZWZpbmUgdGhlIGRlZmF1bHQgY29uc3Ry
dWN0b3IgX2FuZF8gaW5pdGlhbGl6ZSB0aGUgY29uc3QgbWVtYmVyIGluIHRoZSBpbml0aWFsaXpl
ciBsaXN0IG9mIHRoZSBjb25zdHJ1Y3Rvci4gKEVhcmx5IHZlcnNpb25zIG9mIGBnY2NgIGRvZXNu
J3QgZm9yY2UgeW91IHRvIGluaXRpYWxpemUgdGhlIGNvbnN0IG1lbWJlci4gSXQncyBhIGJ1ZyB0
aGF0IGhhcyBiZWVuIGZpeGVkIGluIGBnY2MgNGAuKQorCisjIyBXaHkgZG9lcyBBU1NFUlRcX0RF
QVRIIGNvbXBsYWluIGFib3V0IHByZXZpb3VzIHRocmVhZHMgdGhhdCB3ZXJlIGFscmVhZHkgam9p
bmVkPyAjIworCitXaXRoIHRoZSBMaW51eCBwdGhyZWFkIGxpYnJhcnksIHRoZXJlIGlzIG5vIHR1
cm5pbmcgYmFjayBvbmNlIHlvdSBjcm9zcyB0aGUKK2xpbmUgZnJvbSBzaW5nbGUgdGhyZWFkIHRv
IG11bHRpcGxlIHRocmVhZHMuIFRoZSBmaXJzdCB0aW1lIHlvdSBjcmVhdGUgYQordGhyZWFkLCBh
IG1hbmFnZXIgdGhyZWFkIGlzIGNyZWF0ZWQgaW4gYWRkaXRpb24sIHNvIHlvdSBnZXQgMywgbm90
IDIsIHRocmVhZHMuCitMYXRlciB3aGVuIHRoZSB0aHJlYWQgeW91IGNyZWF0ZSBqb2lucyB0aGUg
bWFpbiB0aHJlYWQsIHRoZSB0aHJlYWQgY291bnQKK2RlY3JlbWVudHMgYnkgMSwgYnV0IHRoZSBt
YW5hZ2VyIHRocmVhZCB3aWxsIG5ldmVyIGJlIGtpbGxlZCwgc28geW91IHN0aWxsIGhhdmUKKzIg
dGhyZWFkcywgd2hpY2ggbWVhbnMgeW91IGNhbm5vdCBzYWZlbHkgcnVuIGEgZGVhdGggdGVzdC4K
KworVGhlIG5ldyBOUFRMIHRocmVhZCBsaWJyYXJ5IGRvZXNuJ3Qgc3VmZmVyIGZyb20gdGhpcyBw
cm9ibGVtLCBhcyBpdCBkb2Vzbid0CitjcmVhdGUgYSBtYW5hZ2VyIHRocmVhZC4gSG93ZXZlciwg
aWYgeW91IGRvbid0IGNvbnRyb2wgd2hpY2ggbWFjaGluZSB5b3VyIHRlc3QKK3J1bnMgb24sIHlv
dSBzaG91bGRuJ3QgZGVwZW5kIG9uIHRoaXMuCisKKyMjIFdoeSBkb2VzIEdvb2dsZSBUZXN0IHJl
cXVpcmUgdGhlIGVudGlyZSB0ZXN0IGNhc2UsIGluc3RlYWQgb2YgaW5kaXZpZHVhbCB0ZXN0cywg
dG8gYmUgbmFtZWQgRk9PRGVhdGhUZXN0IHdoZW4gaXQgdXNlcyBBU1NFUlRcX0RFQVRIPyAjIwor
CitHb29nbGUgVGVzdCBkb2VzIG5vdCBpbnRlcmxlYXZlIHRlc3RzIGZyb20gZGlmZmVyZW50IHRl
c3QgY2FzZXMuIFRoYXQgaXMsIGl0CitydW5zIGFsbCB0ZXN0cyBpbiBvbmUgdGVzdCBjYXNlIGZp
cnN0LCBhbmQgdGhlbiBydW5zIGFsbCB0ZXN0cyBpbiB0aGUgbmV4dCB0ZXN0CitjYXNlLCBhbmQg
c28gb24uIEdvb2dsZSBUZXN0IGRvZXMgdGhpcyBiZWNhdXNlIGl0IG5lZWRzIHRvIHNldCB1cCBh
IHRlc3QgY2FzZQorYmVmb3JlIHRoZSBmaXJzdCB0ZXN0IGluIGl0IGlzIHJ1biwgYW5kIHRlYXIg
aXQgZG93biBhZnRlcndvcmRzLiBTcGxpdHRpbmcgdXAKK3RoZSB0ZXN0IGNhc2Ugd291bGQgcmVx
dWlyZSBtdWx0aXBsZSBzZXQtdXAgYW5kIHRlYXItZG93biBwcm9jZXNzZXMsIHdoaWNoIGlzCitp
bmVmZmljaWVudCBhbmQgbWFrZXMgdGhlIHNlbWFudGljcyB1bmNsZWFuLgorCitJZiB3ZSB3ZXJl
IHRvIGRldGVybWluZSB0aGUgb3JkZXIgb2YgdGVzdHMgYmFzZWQgb24gdGVzdCBuYW1lIGluc3Rl
YWQgb2YgdGVzdAorY2FzZSBuYW1lLCB0aGVuIHdlIHdvdWxkIGhhdmUgYSBwcm9ibGVtIHdpdGgg
dGhlIGZvbGxvd2luZyBzaXR1YXRpb246CisKK2BgYAorVEVTVF9GKEZvb1Rlc3QsIEFiY0RlYXRo
VGVzdCkgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIFV2dykgeyAuLi4gfQorCitURVNUX0YoQmFy
VGVzdCwgRGVmRGVhdGhUZXN0KSB7IC4uLiB9CitURVNUX0YoQmFyVGVzdCwgWHl6KSB7IC4uLiB9
CitgYGAKKworU2luY2UgYEZvb1Rlc3QuQWJjRGVhdGhUZXN0YCBuZWVkcyB0byBydW4gYmVmb3Jl
IGBCYXJUZXN0Llh5emAsIGFuZCB3ZSBkb24ndAoraW50ZXJsZWF2ZSB0ZXN0cyBmcm9tIGRpZmZl
cmVudCB0ZXN0IGNhc2VzLCB3ZSBuZWVkIHRvIHJ1biBhbGwgdGVzdHMgaW4gdGhlCitgRm9vVGVz
dGAgY2FzZSBiZWZvcmUgcnVubmluZyBhbnkgdGVzdCBpbiB0aGUgYEJhclRlc3RgIGNhc2UuIFRo
aXMgY29udHJhZGljdHMKK3dpdGggdGhlIHJlcXVpcmVtZW50IHRvIHJ1biBgQmFyVGVzdC5EZWZE
ZWF0aFRlc3RgIGJlZm9yZSBgRm9vVGVzdC5VdndgLgorCisjIyBCdXQgSSBkb24ndCBsaWtlIGNh
bGxpbmcgbXkgZW50aXJlIHRlc3QgY2FzZSBGT09EZWF0aFRlc3Qgd2hlbiBpdCBjb250YWlucyBi
b3RoIGRlYXRoIHRlc3RzIGFuZCBub24tZGVhdGggdGVzdHMuIFdoYXQgZG8gSSBkbz8gIyMKKwor
WW91IGRvbid0IGhhdmUgdG8sIGJ1dCBpZiB5b3UgbGlrZSwgeW91IG1heSBzcGxpdCB1cCB0aGUg
dGVzdCBjYXNlIGludG8KK2BGb29UZXN0YCBhbmQgYEZvb0RlYXRoVGVzdGAsIHdoZXJlIHRoZSBu
YW1lcyBtYWtlIGl0IGNsZWFyIHRoYXQgdGhleSBhcmUKK3JlbGF0ZWQ6CisKK2BgYAorY2xhc3Mg
Rm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKKworVEVTVF9GKEZvb1Rl
c3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQorCit0eXBlZGVm
IEZvb1Rlc3QgRm9vRGVhdGhUZXN0OworCitURVNUX0YoRm9vRGVhdGhUZXN0LCBVdncpIHsgLi4u
IEVYUEVDVF9ERUFUSCguLi4pIC4uLiB9CitURVNUX0YoRm9vRGVhdGhUZXN0LCBYeXopIHsgLi4u
IEFTU0VSVF9ERUFUSCguLi4pIC4uLiB9CitgYGAKKworIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlu
cyBhYm91dCAibm8gbWF0Y2ggZm9yICdvcGVyYXRvcjw8JyIgd2hlbiBJIHVzZSBhbiBhc3NlcnRp
b24uIFdoYXQgZ2l2ZXM/ICMjCisKK0lmIHlvdSB1c2UgYSB1c2VyLWRlZmluZWQgdHlwZSBgRm9v
VHlwZWAgaW4gYW4gYXNzZXJ0aW9uLCB5b3UgbXVzdCBtYWtlIHN1cmUKK3RoZXJlIGlzIGFuIGBz
dGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiwgY29uc3QgRm9vVHlwZSYpYCBm
dW5jdGlvbgorZGVmaW5lZCBzdWNoIHRoYXQgd2UgY2FuIHByaW50IGEgdmFsdWUgb2YgYEZvb1R5
cGVgLgorCitJbiBhZGRpdGlvbiwgaWYgYEZvb1R5cGVgIGlzIGRlY2xhcmVkIGluIGEgbmFtZSBz
cGFjZSwgdGhlIGA8PGAgb3BlcmF0b3IgYWxzbworbmVlZHMgdG8gYmUgZGVmaW5lZCBpbiB0aGUg
X3NhbWVfIG5hbWUgc3BhY2UuCisKKyMjIEhvdyBkbyBJIHN1cHByZXNzIHRoZSBtZW1vcnkgbGVh
ayBtZXNzYWdlcyBvbiBXaW5kb3dzPyAjIworCitTaW5jZSB0aGUgc3RhdGljYWxseSBpbml0aWFs
aXplZCBHb29nbGUgVGVzdCBzaW5nbGV0b24gcmVxdWlyZXMgYWxsb2NhdGlvbnMgb24KK3RoZSBo
ZWFwLCB0aGUgVmlzdWFsIEMrKyBtZW1vcnkgbGVhayBkZXRlY3RvciB3aWxsIHJlcG9ydCBtZW1v
cnkgbGVha3MgYXQgdGhlCitlbmQgb2YgdGhlIHByb2dyYW0gcnVuLiBUaGUgZWFzaWVzdCB3YXkg
dG8gYXZvaWQgdGhpcyBpcyB0byB1c2UgdGhlCitgX0NydE1lbUNoZWNrcG9pbnRgIGFuZCBgX0Ny
dE1lbUR1bXBBbGxPYmplY3RzU2luY2VgIGNhbGxzIHRvIG5vdCByZXBvcnQgYW55CitzdGF0aWNh
bGx5IGluaXRpYWxpemVkIGhlYXAgb2JqZWN0cy4gU2VlIE1TRE4gZm9yIG1vcmUgZGV0YWlscyBh
bmQgYWRkaXRpb25hbAoraGVhcCBjaGVjay9kZWJ1ZyByb3V0aW5lcy4KKworIyMgSSBhbSBidWls
ZGluZyBteSBwcm9qZWN0IHdpdGggR29vZ2xlIFRlc3QgaW4gVmlzdWFsIFN0dWRpbyBhbmQgYWxs
IEknbSBnZXR0aW5nIGlzIGEgYnVuY2ggb2YgbGlua2VyIGVycm9ycyAob3Igd2FybmluZ3MpLiBI
ZWxwISAjIworCitZb3UgbWF5IGdldCBhIG51bWJlciBvZiB0aGUgZm9sbG93aW5nIGxpbmtlciBl
cnJvciBvciB3YXJuaW5ncyBpZiB5b3UKK2F0dGVtcHQgdG8gbGluayB5b3VyIHRlc3QgcHJvamVj
dCB3aXRoIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5IHdoZW4KK3lvdXIgcHJvamVjdCBhbmQgdGhl
IGFyZSBub3QgYnVpbHQgdXNpbmcgdGhlIHNhbWUgY29tcGlsZXIgc2V0dGluZ3MuCisKKyAgKiBM
TksyMDA1OiBzeW1ib2wgYWxyZWFkeSBkZWZpbmVkIGluIG9iamVjdAorICAqIExOSzQyMTc6IGxv
Y2FsbHkgZGVmaW5lZCBzeW1ib2wgJ3N5bWJvbCcgaW1wb3J0ZWQgaW4gZnVuY3Rpb24gJ2Z1bmN0
aW9uJworICAqIExOSzQwNDk6IGxvY2FsbHkgZGVmaW5lZCBzeW1ib2wgJ3N5bWJvbCcgaW1wb3J0
ZWQKKworVGhlIEdvb2dsZSBUZXN0IHByb2plY3QgKGd0ZXN0LnZjcHJvaikgaGFzIHRoZSBSdW50
aW1lIExpYnJhcnkgb3B0aW9uCitzZXQgdG8gL01UICh1c2UgbXVsdGktdGhyZWFkZWQgc3RhdGlj
IGxpYnJhcmllcywgL01UZCBmb3IgZGVidWcpLiBJZgoreW91ciBwcm9qZWN0IHVzZXMgc29tZXRo
aW5nIGVsc2UsIGZvciBleGFtcGxlIC9NRCAodXNlIG11bHRpLXRocmVhZGVkCitETExzLCAvTURk
IGZvciBkZWJ1ZyksIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgc2V0dGluZyBpbiB0aGUgR29vZ2xl
CitUZXN0IHByb2plY3QgdG8gbWF0Y2ggeW91ciBwcm9qZWN0J3MuCisKK1RvIHVwZGF0ZSB0aGlz
IHNldHRpbmcgb3BlbiB0aGUgcHJvamVjdCBwcm9wZXJ0aWVzIGluIHRoZSBWaXN1YWwKK1N0dWRp
byBJREUgdGhlbiBzZWxlY3QgdGhlIGJyYW5jaCBDb25maWd1cmF0aW9uIFByb3BlcnRpZXMgfCBD
L0MrKyB8CitDb2RlIEdlbmVyYXRpb24gYW5kIGNoYW5nZSB0aGUgb3B0aW9uICJSdW50aW1lIExp
YnJhcnkiLiAgWW91IG1heSBhbHNvIHRyeQordXNpbmcgZ3Rlc3QtbWQudmNwcm9qIGluc3RlYWQg
b2YgZ3Rlc3QudmNwcm9qLgorCisjIyBJIHB1dCBteSB0ZXN0cyBpbiBhIGxpYnJhcnkgYW5kIEdv
b2dsZSBUZXN0IGRvZXNuJ3QgcnVuIHRoZW0uIFdoYXQncyBoYXBwZW5pbmc/ICMjCitIYXZlIHlv
dSByZWFkIGEKK1t3YXJuaW5nXShWMV81X1ByaW1lci5tZCNpbXBvcnRhbnQtbm90ZS1mb3Itdmlz
dWFsLWMtdXNlcnMpIG9uCit0aGUgR29vZ2xlIFRlc3QgUHJpbWVyIHBhZ2U/CisKKyMjIEkgd2Fu
dCB0byB1c2UgR29vZ2xlIFRlc3Qgd2l0aCBWaXN1YWwgU3R1ZGlvIGJ1dCBkb24ndCBrbm93IHdo
ZXJlIHRvIHN0YXJ0LiAjIworTWFueSBwZW9wbGUgYXJlIGluIHlvdXIgcG9zaXRpb24gYW5kIG9u
ZSBvZiB0aGUgcG9zdGVkIGhpcyBzb2x1dGlvbiB0bworb3VyIG1haWxpbmcgbGlzdC4gSGVyZSBp
cyBoaXMgbGluazoKK2h0dHA6Ly9oYXNzYW5qYW1pbGFobWFkLmJsb2dzcG90LmNvbS8yMDA5LzA3
L2d0ZXN0LXN0YXJ0ZXJzLWhlbHAuaHRtbC4KKworIyMgTXkgcXVlc3Rpb24gaXMgbm90IGNvdmVy
ZWQgaW4geW91ciBGQVEhICMjCisKK0lmIHlvdSBjYW5ub3QgZmluZCB0aGUgYW5zd2VyIHRvIHlv
dXIgcXVlc3Rpb24gaW4gdGhpcyBGQVEsIHRoZXJlIGFyZQorc29tZSBvdGhlciByZXNvdXJjZXMg
eW91IGNhbiB1c2U6CisKKyAgMS4gcmVhZCBvdGhlciBbd2lraSBwYWdlc10oaHR0cDovL2NvZGUu
Z29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvdy9saXN0KSwKKyAgMS4gc2VhcmNoIHRoZSBtYWlsaW5n
IGxpc3QgW2FyY2hpdmVdKGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGV0ZXN0
ZnJhbWV3b3JrL3RvcGljcyksCisgIDEuIGFzayBpdCBvbiBbZ29vZ2xldGVzdGZyYW1ld29ya0Bn
b29nbGVncm91cHMuY29tXShtYWlsdG86Z29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMu
Y29tKSBhbmQgc29tZW9uZSB3aWxsIGFuc3dlciBpdCAodG8gcHJldmVudCBzcGFtLCB3ZSByZXF1
aXJlIHlvdSB0byBqb2luIHRoZSBbZGlzY3Vzc2lvbiBncm91cF0oaHR0cDovL2dyb3Vwcy5nb29n
bGUuY29tL2dyb3VwL2dvb2dsZXRlc3RmcmFtZXdvcmspIGJlZm9yZSB5b3UgY2FuIHBvc3QuKS4K
KworUGxlYXNlIG5vdGUgdGhhdCBjcmVhdGluZyBhbiBpc3N1ZSBpbiB0aGUKK1tpc3N1ZSB0cmFj
a2VyXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC9pc3N1ZXMvbGlzdCkgaXMg
X25vdF8KK2EgZ29vZCB3YXkgdG8gZ2V0IHlvdXIgYW5zd2VyLCBhcyBpdCBpcyBtb25pdG9yZWQg
aW5mcmVxdWVudGx5IGJ5IGEKK3Zlcnkgc21hbGwgbnVtYmVyIG9mIHBlb3BsZS4KKworV2hlbiBh
c2tpbmcgYSBxdWVzdGlvbiwgaXQncyBoZWxwZnVsIHRvIHByb3ZpZGUgYXMgbXVjaCBvZiB0aGUK
K2ZvbGxvd2luZyBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSAocGVvcGxlIGNhbm5vdCBoZWxwIHlv
dSBpZiB0aGVyZSdzCitub3QgZW5vdWdoIGluZm9ybWF0aW9uIGluIHlvdXIgcXVlc3Rpb24pOgor
CisgICogdGhlIHZlcnNpb24gKG9yIHRoZSByZXZpc2lvbiBudW1iZXIgaWYgeW91IGNoZWNrIG91
dCBmcm9tIFNWTiBkaXJlY3RseSkgb2YgR29vZ2xlIFRlc3QgeW91IHVzZSAoR29vZ2xlIFRlc3Qg
aXMgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRoYXQgeW91ciBw
cm9ibGVtIGhhcyBiZWVuIHNvbHZlZCBpbiBhIGxhdGVyIHZlcnNpb24pLAorICAqIHlvdXIgb3Bl
cmF0aW5nIHN5c3RlbSwKKyAgKiB0aGUgbmFtZSBhbmQgdmVyc2lvbiBvZiB5b3VyIGNvbXBpbGVy
LAorICAqIHRoZSBjb21wbGV0ZSBjb21tYW5kIGxpbmUgZmxhZ3MgeW91IGdpdmUgdG8geW91ciBj
b21waWxlciwKKyAgKiB0aGUgY29tcGxldGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZXMgKGlmIHRo
ZSBxdWVzdGlvbiBpcyBhYm91dCBjb21waWxhdGlvbiksCisgICogdGhlIF9hY3R1YWxfIGNvZGUg
KGlkZWFsbHksIGEgbWluaW1hbCBidXQgY29tcGxldGUgcHJvZ3JhbSkgdGhhdCBoYXMgdGhlIHBy
b2JsZW0geW91IGVuY291bnRlci7vnIEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2RvY3MvVjFfNV9QcmltZXIubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1Yx
XzVfUHJpbWVyLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5NjBkMmNlNGMzNDRmZDM5MjMxN2JkYjAzOWZkNGIz
YjE4Y2M0MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2Nz
L1YxXzVfUHJpbWVyLm1kCkBAIC0wLDAgKzEsNDk3IEBACisKKworIyBJbnRyb2R1Y3Rpb246IFdo
eSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrPyAjCisKK19Hb29nbGUgQysrIFRlc3Rpbmcg
RnJhbWV3b3JrXyBoZWxwcyB5b3Ugd3JpdGUgYmV0dGVyIEMrKyB0ZXN0cy4KKworTm8gbWF0dGVy
IHdoZXRoZXIgeW91IHdvcmsgb24gTGludXgsIFdpbmRvd3MsIG9yIGEgTWFjLCBpZiB5b3Ugd3Jp
dGUgQysrIGNvZGUsCitHb29nbGUgVGVzdCBjYW4gaGVscCB5b3UuCisKK1NvIHdoYXQgbWFrZXMg
YSBnb29kIHRlc3QsIGFuZCBob3cgZG9lcyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGZp
dCBpbj8gV2UgYmVsaWV2ZToKKyAgMS4gVGVzdHMgc2hvdWxkIGJlIF9pbmRlcGVuZGVudF8gYW5k
IF9yZXBlYXRhYmxlXy4gSXQncyBhIHBhaW4gdG8gZGVidWcgYSB0ZXN0IHRoYXQgc3VjY2VlZHMg
b3IgZmFpbHMgYXMgYSByZXN1bHQgb2Ygb3RoZXIgdGVzdHMuICBHb29nbGUgQysrIFRlc3Rpbmcg
RnJhbWV3b3JrIGlzb2xhdGVzIHRoZSB0ZXN0cyBieSBydW5uaW5nIGVhY2ggb2YgdGhlbSBvbiBh
IGRpZmZlcmVudCBvYmplY3QuIFdoZW4gYSB0ZXN0IGZhaWxzLCBHb29nbGUgQysrIFRlc3Rpbmcg
RnJhbWV3b3JrIGFsbG93cyB5b3UgdG8gcnVuIGl0IGluIGlzb2xhdGlvbiBmb3IgcXVpY2sgZGVi
dWdnaW5nLgorICAxLiBUZXN0cyBzaG91bGQgYmUgd2VsbCBfb3JnYW5pemVkXyBhbmQgcmVmbGVj
dCB0aGUgc3RydWN0dXJlIG9mIHRoZSB0ZXN0ZWQgY29kZS4gIEdvb2dsZSBDKysgVGVzdGluZyBG
cmFtZXdvcmsgZ3JvdXBzIHJlbGF0ZWQgdGVzdHMgaW50byB0ZXN0IGNhc2VzIHRoYXQgY2FuIHNo
YXJlIGRhdGEgYW5kIHN1YnJvdXRpbmVzLiBUaGlzIGNvbW1vbiBwYXR0ZXJuIGlzIGVhc3kgdG8g
cmVjb2duaXplIGFuZCBtYWtlcyB0ZXN0cyBlYXN5IHRvIG1haW50YWluLiBTdWNoIGNvbnNpc3Rl
bmN5IGlzIGVzcGVjaWFsbHkgaGVscGZ1bCB3aGVuIHBlb3BsZSBzd2l0Y2ggcHJvamVjdHMgYW5k
IHN0YXJ0IHRvIHdvcmsgb24gYSBuZXcgY29kZSBiYXNlLgorICAxLiBUZXN0cyBzaG91bGQgYmUg
X3BvcnRhYmxlXyBhbmQgX3JldXNhYmxlXy4gVGhlIG9wZW4tc291cmNlIGNvbW11bml0eSBoYXMg
YSBsb3Qgb2YgY29kZSB0aGF0IGlzIHBsYXRmb3JtLW5ldXRyYWwsIGl0cyB0ZXN0cyBzaG91bGQg
YWxzbyBiZSBwbGF0Zm9ybS1uZXV0cmFsLiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayB3
b3JrcyBvbiBkaWZmZXJlbnQgT1Nlcywgd2l0aCBkaWZmZXJlbnQgY29tcGlsZXJzIChnY2MsIE1T
VkMsIGFuZCBvdGhlcnMpLCB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucywgc28gR29vZ2xlIEMr
KyBUZXN0aW5nIEZyYW1ld29yayB0ZXN0cyBjYW4gZWFzaWx5IHdvcmsgd2l0aCBhIHZhcmlldHkg
b2YgY29uZmlndXJhdGlvbnMuICAoTm90ZSB0aGF0IHRoZSBjdXJyZW50IHJlbGVhc2Ugb25seSBj
b250YWlucyBidWlsZCBzY3JpcHRzIGZvciBMaW51eCAtIHdlIGFyZSBhY3RpdmVseSB3b3JraW5n
IG9uIHNjcmlwdHMgZm9yIG90aGVyIHBsYXRmb3Jtcy4pCisgIDEuIFdoZW4gdGVzdHMgZmFpbCwg
dGhleSBzaG91bGQgcHJvdmlkZSBhcyBtdWNoIF9pbmZvcm1hdGlvbl8gYWJvdXQgdGhlIHByb2Js
ZW0gYXMgcG9zc2libGUuIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgZG9lc24ndCBzdG9w
IGF0IHRoZSBmaXJzdCB0ZXN0IGZhaWx1cmUuIEluc3RlYWQsIGl0IG9ubHkgc3RvcHMgdGhlIGN1
cnJlbnQgdGVzdCBhbmQgY29udGludWVzIHdpdGggdGhlIG5leHQuIFlvdSBjYW4gYWxzbyBzZXQg
dXAgdGVzdHMgdGhhdCByZXBvcnQgbm9uLWZhdGFsIGZhaWx1cmVzIGFmdGVyIHdoaWNoIHRoZSBj
dXJyZW50IHRlc3QgY29udGludWVzLiBUaHVzLCB5b3UgY2FuIGRldGVjdCBhbmQgZml4IG11bHRp
cGxlIGJ1Z3MgaW4gYSBzaW5nbGUgcnVuLWVkaXQtY29tcGlsZSBjeWNsZS4KKyAgMS4gVGhlIHRl
c3RpbmcgZnJhbWV3b3JrIHNob3VsZCBsaWJlcmF0ZSB0ZXN0IHdyaXRlcnMgZnJvbSBob3VzZWtl
ZXBpbmcgY2hvcmVzIGFuZCBsZXQgdGhlbSBmb2N1cyBvbiB0aGUgdGVzdCBfY29udGVudF8uICBH
b29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGF1dG9tYXRpY2FsbHkga2VlcHMgdHJhY2sgb2Yg
YWxsIHRlc3RzIGRlZmluZWQsIGFuZCBkb2Vzbid0IHJlcXVpcmUgdGhlIHVzZXIgdG8gZW51bWVy
YXRlIHRoZW0gaW4gb3JkZXIgdG8gcnVuIHRoZW0uCisgIDEuIFRlc3RzIHNob3VsZCBiZSBfZmFz
dF8uIFdpdGggR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yaywgeW91IGNhbiByZXVzZSBzaGFy
ZWQgcmVzb3VyY2VzIGFjcm9zcyB0ZXN0cyBhbmQgcGF5IGZvciB0aGUgc2V0LXVwL3RlYXItZG93
biBvbmx5IG9uY2UsIHdpdGhvdXQgbWFraW5nIHRlc3RzIGRlcGVuZCBvbiBlYWNoIG90aGVyLgor
CitTaW5jZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGlzIGJhc2VkIG9uIHRoZSBwb3B1
bGFyIHhVbml0CithcmNoaXRlY3R1cmUsIHlvdSdsbCBmZWVsIHJpZ2h0IGF0IGhvbWUgaWYgeW91
J3ZlIHVzZWQgSlVuaXQgb3IgUHlVbml0IGJlZm9yZS4KK0lmIG5vdCwgaXQgd2lsbCB0YWtlIHlv
dSBhYm91dCAxMCBtaW51dGVzIHRvIGxlYXJuIHRoZSBiYXNpY3MgYW5kIGdldCBzdGFydGVkLgor
U28gbGV0J3MgZ28hCisKK19Ob3RlOl8gV2Ugc29tZXRpbWVzIHJlZmVyIHRvIEdvb2dsZSBDKysg
VGVzdGluZyBGcmFtZXdvcmsgaW5mb3JtYWxseQorYXMgX0dvb2dsZSBUZXN0Xy4KKworIyBTZXR0
aW5nIHVwIGEgTmV3IFRlc3QgUHJvamVjdCAjCisKK1RvIHdyaXRlIGEgdGVzdCBwcm9ncmFtIHVz
aW5nIEdvb2dsZSBUZXN0LCB5b3UgbmVlZCB0byBjb21waWxlIEdvb2dsZQorVGVzdCBpbnRvIGEg
bGlicmFyeSBhbmQgbGluayB5b3VyIHRlc3Qgd2l0aCBpdC4gIFdlIHByb3ZpZGUgYnVpbGQKK2Zp
bGVzIGZvciBzb21lIHBvcHVsYXIgYnVpbGQgc3lzdGVtcyAoYG1zdmMvYCBmb3IgVmlzdWFsIFN0
dWRpbywKK2B4Y29kZS9gIGZvciBNYWMgWGNvZGUsIGBtYWtlL2AgZm9yIEdOVSBtYWtlLCBgY29k
ZWdlYXIvYCBmb3IgQm9ybGFuZAorQysrIEJ1aWxkZXIsIGFuZCB0aGUgYXV0b3Rvb2xzIHNjcmlw
dCBpbiB0aGUKK0dvb2dsZSBUZXN0IHJvb3QgZGlyZWN0b3J5KS4gIElmIHlvdXIgYnVpbGQgc3lz
dGVtIGlzIG5vdCBvbiB0aGlzCitsaXN0LCB5b3UgY2FuIHRha2UgYSBsb29rIGF0IGBtYWtlL01h
a2VmaWxlYCB0byBsZWFybiBob3cgR29vZ2xlIFRlc3QKK3Nob3VsZCBiZSBjb21waWxlZCAoYmFz
aWNhbGx5IHlvdSB3YW50IHRvIGNvbXBpbGUgYHNyYy9ndGVzdC1hbGwuY2NgCit3aXRoIGBHVEVT
VF9ST09UYCBhbmQgYEdURVNUX1JPT1QvaW5jbHVkZWAgaW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0
aCwKK3doZXJlIGBHVEVTVF9ST09UYCBpcyB0aGUgR29vZ2xlIFRlc3Qgcm9vdCBkaXJlY3Rvcnkp
LgorCitPbmNlIHlvdSBhcmUgYWJsZSB0byBjb21waWxlIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5
LCB5b3Ugc2hvdWxkCitjcmVhdGUgYSBwcm9qZWN0IG9yIGJ1aWxkIHRhcmdldCBmb3IgeW91ciB0
ZXN0IHByb2dyYW0uICBNYWtlIHN1cmUgeW91CitoYXZlIGBHVEVTVF9ST09UL2luY2x1ZGVgIGlu
IHRoZSBoZWFkZXIgc2VhcmNoIHBhdGggc28gdGhhdCB0aGUKK2NvbXBpbGVyIGNhbiBmaW5kIGA8
Z3Rlc3QvZ3Rlc3QuaD5gIHdoZW4gY29tcGlsaW5nIHlvdXIgdGVzdC4gIFNldCB1cAoreW91ciB0
ZXN0IHByb2plY3QgdG8gbGluayB3aXRoIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5IChmb3IgZXhh
bXBsZSwKK2luIFZpc3VhbCBTdHVkaW8sIHRoaXMgaXMgZG9uZSBieSBhZGRpbmcgYSBkZXBlbmRl
bmN5IG9uCitgZ3Rlc3QudmNwcm9qYCkuCisKK0lmIHlvdSBzdGlsbCBoYXZlIHF1ZXN0aW9ucywg
dGFrZSBhIGxvb2sgYXQgaG93IEdvb2dsZSBUZXN0J3Mgb3duCit0ZXN0cyBhcmUgYnVpbHQgYW5k
IHVzZSB0aGVtIGFzIGV4YW1wbGVzLgorCisjIEJhc2ljIENvbmNlcHRzICMKKworV2hlbiB1c2lu
ZyBHb29nbGUgVGVzdCwgeW91IHN0YXJ0IGJ5IHdyaXRpbmcgX2Fzc2VydGlvbnNfLCB3aGljaCBh
cmUgc3RhdGVtZW50cwordGhhdCBjaGVjayB3aGV0aGVyIGEgY29uZGl0aW9uIGlzIHRydWUuIEFu
IGFzc2VydGlvbidzIHJlc3VsdCBjYW4gYmUgX3N1Y2Nlc3NfLAorX25vbmZhdGFsIGZhaWx1cmVf
LCBvciBfZmF0YWwgZmFpbHVyZV8uIElmIGEgZmF0YWwgZmFpbHVyZSBvY2N1cnMsIGl0IGFib3J0
cwordGhlIGN1cnJlbnQgZnVuY3Rpb247IG90aGVyd2lzZSB0aGUgcHJvZ3JhbSBjb250aW51ZXMg
bm9ybWFsbHkuCisKK19UZXN0c18gdXNlIGFzc2VydGlvbnMgdG8gdmVyaWZ5IHRoZSB0ZXN0ZWQg
Y29kZSdzIGJlaGF2aW9yLiBJZiBhIHRlc3QgY3Jhc2hlcworb3IgaGFzIGEgZmFpbGVkIGFzc2Vy
dGlvbiwgdGhlbiBpdCBfZmFpbHNfOyBvdGhlcndpc2UgaXQgX3N1Y2NlZWRzXy4KKworQSBfdGVz
dCBjYXNlXyBjb250YWlucyBvbmUgb3IgbWFueSB0ZXN0cy4gWW91IHNob3VsZCBncm91cCB5b3Vy
IHRlc3RzIGludG8gdGVzdAorY2FzZXMgdGhhdCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhl
IHRlc3RlZCBjb2RlLiBXaGVuIG11bHRpcGxlIHRlc3RzIGluIGEKK3Rlc3QgY2FzZSBuZWVkIHRv
IHNoYXJlIGNvbW1vbiBvYmplY3RzIGFuZCBzdWJyb3V0aW5lcywgeW91IGNhbiBwdXQgdGhlbSBp
bnRvIGEKK190ZXN0IGZpeHR1cmVfIGNsYXNzLgorCitBIF90ZXN0IHByb2dyYW1fIGNhbiBjb250
YWluIG11bHRpcGxlIHRlc3QgY2FzZXMuCisKK1dlJ2xsIG5vdyBleHBsYWluIGhvdyB0byB3cml0
ZSBhIHRlc3QgcHJvZ3JhbSwgc3RhcnRpbmcgYXQgdGhlIGluZGl2aWR1YWwKK2Fzc2VydGlvbiBs
ZXZlbCBhbmQgYnVpbGRpbmcgdXAgdG8gdGVzdHMgYW5kIHRlc3QgY2FzZXMuCisKKyMgQXNzZXJ0
aW9ucyAjCisKK0dvb2dsZSBUZXN0IGFzc2VydGlvbnMgYXJlIG1hY3JvcyB0aGF0IHJlc2VtYmxl
IGZ1bmN0aW9uIGNhbGxzLiBZb3UgdGVzdCBhCitjbGFzcyBvciBmdW5jdGlvbiBieSBtYWtpbmcg
YXNzZXJ0aW9ucyBhYm91dCBpdHMgYmVoYXZpb3IuIFdoZW4gYW4gYXNzZXJ0aW9uCitmYWlscywg
R29vZ2xlIFRlc3QgcHJpbnRzIHRoZSBhc3NlcnRpb24ncyBzb3VyY2UgZmlsZSBhbmQgbGluZSBu
dW1iZXIgbG9jYXRpb24sCithbG9uZyB3aXRoIGEgZmFpbHVyZSBtZXNzYWdlLiBZb3UgbWF5IGFs
c28gc3VwcGx5IGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZQord2hpY2ggd2lsbCBiZSBhcHBlbmRl
ZCB0byBHb29nbGUgVGVzdCdzIG1lc3NhZ2UuCisKK1RoZSBhc3NlcnRpb25zIGNvbWUgaW4gcGFp
cnMgdGhhdCB0ZXN0IHRoZSBzYW1lIHRoaW5nIGJ1dCBoYXZlIGRpZmZlcmVudAorZWZmZWN0cyBv
biB0aGUgY3VycmVudCBmdW5jdGlvbi4gYEFTU0VSVF8qYCB2ZXJzaW9ucyBnZW5lcmF0ZSBmYXRh
bCBmYWlsdXJlcword2hlbiB0aGV5IGZhaWwsIGFuZCAqKmFib3J0IHRoZSBjdXJyZW50IGZ1bmN0
aW9uKiouIGBFWFBFQ1RfKmAgdmVyc2lvbnMgZ2VuZXJhdGUKK25vbmZhdGFsIGZhaWx1cmVzLCB3
aGljaCBkb24ndCBhYm9ydCB0aGUgY3VycmVudCBmdW5jdGlvbi4gVXN1YWxseSBgRVhQRUNUXypg
CithcmUgcHJlZmVycmVkLCBhcyB0aGV5IGFsbG93IG1vcmUgdGhhbiBvbmUgZmFpbHVyZXMgdG8g
YmUgcmVwb3J0ZWQgaW4gYSB0ZXN0LgorSG93ZXZlciwgeW91IHNob3VsZCB1c2UgYEFTU0VSVF8q
YCBpZiBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gY29udGludWUgd2hlbgordGhlIGFzc2VydGlv
biBpbiBxdWVzdGlvbiBmYWlscy4KKworU2luY2UgYSBmYWlsZWQgYEFTU0VSVF8qYCByZXR1cm5z
IGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gaW1tZWRpYXRlbHksCitwb3NzaWJseSBza2lwcGlu
ZyBjbGVhbi11cCBjb2RlIHRoYXQgY29tZXMgYWZ0ZXIgaXQsIGl0IG1heSBjYXVzZSBhIHNwYWNl
IGxlYWsuCitEZXBlbmRpbmcgb24gdGhlIG5hdHVyZSBvZiB0aGUgbGVhaywgaXQgbWF5IG9yIG1h
eSBub3QgYmUgd29ydGggZml4aW5nIC0gc28KK2tlZXAgdGhpcyBpbiBtaW5kIGlmIHlvdSBnZXQg
YSBoZWFwIGNoZWNrZXIgZXJyb3IgaW4gYWRkaXRpb24gdG8gYXNzZXJ0aW9uCitlcnJvcnMuCisK
K1RvIHByb3ZpZGUgYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlLCBzaW1wbHkgc3RyZWFtIGl0IGlu
dG8gdGhlIG1hY3JvIHVzaW5nIHRoZQorYDw8YCBvcGVyYXRvciwgb3IgYSBzZXF1ZW5jZSBvZiBz
dWNoIG9wZXJhdG9ycy4gQW4gZXhhbXBsZToKK2BgYAorQVNTRVJUX0VRKHguc2l6ZSgpLCB5LnNp
emUoKSkgPDwgIlZlY3RvcnMgeCBhbmQgeSBhcmUgb2YgdW5lcXVhbCBsZW5ndGgiOworCitmb3Ig
KGludCBpID0gMDsgaSA8IHguc2l6ZSgpOyArK2kpIHsKKyAgRVhQRUNUX0VRKHhbaV0sIHlbaV0p
IDw8ICJWZWN0b3JzIHggYW5kIHkgZGlmZmVyIGF0IGluZGV4ICIgPDwgaTsKK30KK2BgYAorCitB
bnl0aGluZyB0aGF0IGNhbiBiZSBzdHJlYW1lZCB0byBhbiBgb3N0cmVhbWAgY2FuIGJlIHN0cmVh
bWVkIHRvIGFuIGFzc2VydGlvbgorbWFjcm8tLWluIHBhcnRpY3VsYXIsIEMgc3RyaW5ncyBhbmQg
YHN0cmluZ2Agb2JqZWN0cy4gSWYgYSB3aWRlIHN0cmluZworKGB3Y2hhcl90KmAsIGBUQ0hBUipg
IGluIGBVTklDT0RFYCBtb2RlIG9uIFdpbmRvd3MsIG9yIGBzdGQ6OndzdHJpbmdgKSBpcworc3Ry
ZWFtZWQgdG8gYW4gYXNzZXJ0aW9uLCBpdCB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gVVRGLTggd2hl
biBwcmludGVkLgorCisjIyBCYXNpYyBBc3NlcnRpb25zICMjCisKK1RoZXNlIGFzc2VydGlvbnMg
ZG8gYmFzaWMgdHJ1ZS9mYWxzZSBjb25kaXRpb24gdGVzdGluZy4KK3wgKipGYXRhbCBhc3NlcnRp
b24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8
IGBBU1NFUlRfVFJVRShgX2NvbmRpdGlvbl9gKWA7ICB8IGBFWFBFQ1RfVFJVRShgX2NvbmRpdGlv
bl9gKWA7ICAgfCBfY29uZGl0aW9uXyBpcyB0cnVlIHwKK3wgYEFTU0VSVF9GQUxTRShgX2NvbmRp
dGlvbl9gKWA7IHwgYEVYUEVDVF9GQUxTRShgX2NvbmRpdGlvbl9gKWA7ICB8IF9jb25kaXRpb25f
IGlzIGZhbHNlIHwKKworUmVtZW1iZXIsIHdoZW4gdGhleSBmYWlsLCBgQVNTRVJUXypgIHlpZWxk
cyBhIGZhdGFsIGZhaWx1cmUgYW5kCityZXR1cm5zIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24s
IHdoaWxlIGBFWFBFQ1RfKmAgeWllbGRzIGEgbm9uZmF0YWwKK2ZhaWx1cmUsIGFsbG93aW5nIHRo
ZSBmdW5jdGlvbiB0byBjb250aW51ZSBydW5uaW5nLiBJbiBlaXRoZXIgY2FzZSwgYW4KK2Fzc2Vy
dGlvbiBmYWlsdXJlIG1lYW5zIGl0cyBjb250YWluaW5nIHRlc3QgZmFpbHMuCisKK19BdmFpbGFi
aWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBCaW5hcnkgQ29tcGFyaXNvbiAjIwor
CitUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGFzc2VydGlvbnMgdGhhdCBjb21wYXJlIHR3byB2YWx1
ZXMuCisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAq
KlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8YEFTU0VSVF9FUShgX2V4cGVjdGVkX2AsIGBfYWN0dWFs
X2ApO2B8YEVYUEVDVF9FUShgX2V4cGVjdGVkX2AsIGBfYWN0dWFsX2ApO2B8IF9leHBlY3RlZF8g
YD09YCBfYWN0dWFsXyB8Cit8YEFTU0VSVF9ORShgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8
YEVYUEVDVF9ORShgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8IF92YWwxXyBgIT1gIF92YWwy
XyB8Cit8YEFTU0VSVF9MVChgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9MVChg
X3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8IF92YWwxXyBgPGAgX3ZhbDJfIHwKK3xgQVNTRVJU
X0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHxgRVhQRUNUX0xFKGBfdmFsMV9gLCBgX3Zh
bDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA8PWAgX3ZhbDJfIHwKK3xgQVNTRVJUX0dUKGBfdmFsMV9g
LCBgX3ZhbDJfYCk7YCAgICAgIHxgRVhQRUNUX0dUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAg
IHwgX3ZhbDFfIGA+YCBfdmFsMl8gfAorfGBBU1NFUlRfR0UoYF92YWwxX2AsIGBfdmFsMl9gKTtg
ICAgICAgfGBFWFBFQ1RfR0UoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfCBfdmFsMV8gYD49
YCBfdmFsMl8gfAorCitJbiB0aGUgZXZlbnQgb2YgYSBmYWlsdXJlLCBHb29nbGUgVGVzdCBwcmlu
dHMgYm90aCBfdmFsMV8gYW5kIF92YWwyXworLiBJbiBgQVNTRVJUX0VRKmAgYW5kIGBFWFBFQ1Rf
RVEqYCAoYW5kIGFsbCBvdGhlciBlcXVhbGl0eSBhc3NlcnRpb25zCit3ZSdsbCBpbnRyb2R1Y2Ug
bGF0ZXIpLCB5b3Ugc2hvdWxkIHB1dCB0aGUgZXhwcmVzc2lvbiB5b3Ugd2FudCB0byB0ZXN0Citp
biB0aGUgcG9zaXRpb24gb2YgX2FjdHVhbF8sIGFuZCBwdXQgaXRzIGV4cGVjdGVkIHZhbHVlIGlu
IF9leHBlY3RlZF8sCithcyBHb29nbGUgVGVzdCdzIGZhaWx1cmUgbWVzc2FnZXMgYXJlIG9wdGlt
aXplZCBmb3IgdGhpcyBjb252ZW50aW9uLgorCitWYWx1ZSBhcmd1bWVudHMgbXVzdCBiZSBjb21w
YXJhYmxlIGJ5IHRoZSBhc3NlcnRpb24ncyBjb21wYXJpc29uIG9wZXJhdG9yIG9yCit5b3UnbGwg
Z2V0IGEgY29tcGlsZXIgZXJyb3IuIFZhbHVlcyBtdXN0IGFsc28gc3VwcG9ydCB0aGUgYDw8YCBv
cGVyYXRvciBmb3IKK3N0cmVhbWluZyB0byBhbiBgb3N0cmVhbWAuIEFsbCBidWlsdC1pbiB0eXBl
cyBzdXBwb3J0IHRoaXMuCisKK1RoZXNlIGFzc2VydGlvbnMgY2FuIHdvcmsgd2l0aCBhIHVzZXIt
ZGVmaW5lZCB0eXBlLCBidXQgb25seSBpZiB5b3UgZGVmaW5lIHRoZQorY29ycmVzcG9uZGluZyBj
b21wYXJpc29uIG9wZXJhdG9yIChlLmcuIGA9PWAsIGA8YCwgZXRjKS4gIElmIHRoZSBjb3JyZXNw
b25kaW5nCitvcGVyYXRvciBpcyBkZWZpbmVkLCBwcmVmZXIgdXNpbmcgdGhlIGBBU1NFUlRfKigp
YCBtYWNyb3MgYmVjYXVzZSB0aGV5IHdpbGwKK3ByaW50IG91dCBub3Qgb25seSB0aGUgcmVzdWx0
IG9mIHRoZSBjb21wYXJpc29uLCBidXQgdGhlIHR3byBvcGVyYW5kcyBhcyB3ZWxsLgorCitBcmd1
bWVudHMgYXJlIGFsd2F5cyBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLiBUaGVyZWZvcmUsIGl0J3Mg
T0sgZm9yIHRoZQorYXJndW1lbnRzIHRvIGhhdmUgc2lkZSBlZmZlY3RzLiBIb3dldmVyLCBhcyB3
aXRoIGFueSBvcmRpbmFyeSBDL0MrKyBmdW5jdGlvbiwKK3RoZSBhcmd1bWVudHMnIGV2YWx1YXRp
b24gb3JkZXIgaXMgdW5kZWZpbmVkIChpLmUuIHRoZSBjb21waWxlciBpcyBmcmVlIHRvCitjaG9v
c2UgYW55IG9yZGVyKSBhbmQgeW91ciBjb2RlIHNob3VsZCBub3QgZGVwZW5kIG9uIGFueSBwYXJ0
aWN1bGFyIGFyZ3VtZW50CitldmFsdWF0aW9uIG9yZGVyLgorCitgQVNTRVJUX0VRKClgIGRvZXMg
cG9pbnRlciBlcXVhbGl0eSBvbiBwb2ludGVycy4gSWYgdXNlZCBvbiB0d28gQyBzdHJpbmdzLCBp
dAordGVzdHMgaWYgdGhleSBhcmUgaW4gdGhlIHNhbWUgbWVtb3J5IGxvY2F0aW9uLCBub3QgaWYg
dGhleSBoYXZlIHRoZSBzYW1lIHZhbHVlLgorVGhlcmVmb3JlLCBpZiB5b3Ugd2FudCB0byBjb21w
YXJlIEMgc3RyaW5ncyAoZS5nLiBgY29uc3QgY2hhcipgKSBieSB2YWx1ZSwgdXNlCitgQVNTRVJU
X1NUUkVRKClgICwgd2hpY2ggd2lsbCBiZSBkZXNjcmliZWQgbGF0ZXIgb24uIEluIHBhcnRpY3Vs
YXIsIHRvIGFzc2VydAordGhhdCBhIEMgc3RyaW5nIGlzIGBOVUxMYCwgdXNlIGBBU1NFUlRfU1RS
RVEoTlVMTCwgY19zdHJpbmcpYCAuIEhvd2V2ZXIsIHRvCitjb21wYXJlIHR3byBgc3RyaW5nYCBv
YmplY3RzLCB5b3Ugc2hvdWxkIHVzZSBgQVNTRVJUX0VRYC4KKworTWFjcm9zIGluIHRoaXMgc2Vj
dGlvbiB3b3JrIHdpdGggYm90aCBuYXJyb3cgYW5kIHdpZGUgc3RyaW5nIG9iamVjdHMgKGBzdHJp
bmdgCithbmQgYHdzdHJpbmdgKS4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBN
YWMuCisKKyMjIFN0cmluZyBDb21wYXJpc29uICMjCisKK1RoZSBhc3NlcnRpb25zIGluIHRoaXMg
Z3JvdXAgY29tcGFyZSB0d28gKipDIHN0cmluZ3MqKi4gSWYgeW91IHdhbnQgdG8gY29tcGFyZQor
dHdvIGBzdHJpbmdgIG9iamVjdHMsIHVzZSBgRVhQRUNUX0VRYCwgYEVYUEVDVF9ORWAsIGFuZCBl
dGMgaW5zdGVhZC4KKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRp
b24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9TVFJFUShgX2V4cGVjdGVk
XF9zdHJfYCwgYF9hY3R1YWxcX3N0cl9gKTtgICAgIHwgYEVYUEVDVF9TVFJFUShgX2V4cGVjdGVk
XF9zdHJfYCwgYF9hY3R1YWxcX3N0cl9gKTtgICAgICB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUg
dGhlIHNhbWUgY29udGVudCB8Cit8IGBBU1NFUlRfU1RSTkUoYF9zdHIxX2AsIGBfc3RyMl9gKTtg
ICAgIHwgYEVYUEVDVF9TVFJORShgX3N0cjFfYCwgYF9zdHIyX2ApO2AgICAgIHwgdGhlIHR3byBD
IHN0cmluZ3MgaGF2ZSBkaWZmZXJlbnQgY29udGVudCB8Cit8IGBBU1NFUlRfU1RSQ0FTRUVRKGBf
ZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2B8IGBFWFBFQ1RfU1RSQ0FTRUVRKGBf
ZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgfCB0aGUgdHdvIEMgc3RyaW5ncyBo
YXZlIHRoZSBzYW1lIGNvbnRlbnQsIGlnbm9yaW5nIGNhc2UgfAorfCBgQVNTRVJUX1NUUkNBU0VO
RShgX3N0cjFfYCwgYF9zdHIyX2ApO2B8IGBFWFBFQ1RfU1RSQ0FTRU5FKGBfc3RyMV9gLCBgX3N0
cjJfYCk7YCB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUgZGlmZmVyZW50IGNvbnRlbnQsIGlnbm9y
aW5nIGNhc2UgfAorCitOb3RlIHRoYXQgIkNBU0UiIGluIGFuIGFzc2VydGlvbiBuYW1lIG1lYW5z
IHRoYXQgY2FzZSBpcyBpZ25vcmVkLgorCitgKlNUUkVRKmAgYW5kIGAqU1RSTkUqYCBhbHNvIGFj
Y2VwdCB3aWRlIEMgc3RyaW5ncyAoYHdjaGFyX3QqYCkuIElmIGEKK2NvbXBhcmlzb24gb2YgdHdv
IHdpZGUgc3RyaW5ncyBmYWlscywgdGhlaXIgdmFsdWVzIHdpbGwgYmUgcHJpbnRlZCBhcyBVVEYt
OAorbmFycm93IHN0cmluZ3MuCisKK0EgYE5VTExgIHBvaW50ZXIgYW5kIGFuIGVtcHR5IHN0cmlu
ZyBhcmUgY29uc2lkZXJlZCBfZGlmZmVyZW50Xy4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBX
aW5kb3dzLCBNYWMuCisKK1NlZSBhbHNvOiBGb3IgbW9yZSBzdHJpbmcgY29tcGFyaXNvbiB0cmlj
a3MgKHN1YnN0cmluZywgcHJlZml4LCBzdWZmaXgsIGFuZAorcmVndWxhciBleHByZXNzaW9uIG1h
dGNoaW5nLCBmb3IgZXhhbXBsZSksIHNlZSB0aGUgW0FkdmFuY2VkR3VpZGUgQWR2YW5jZWQKK0dv
b2dsZSBUZXN0IEd1aWRlXS4KKworIyBTaW1wbGUgVGVzdHMgIworCitUbyBjcmVhdGUgYSB0ZXN0
OgorICAxLiBVc2UgdGhlIGBURVNUKClgIG1hY3JvIHRvIGRlZmluZSBhbmQgbmFtZSBhIHRlc3Qg
ZnVuY3Rpb24sIFRoZXNlIGFyZSBvcmRpbmFyeSBDKysgZnVuY3Rpb25zIHRoYXQgZG9uJ3QgcmV0
dXJuIGEgdmFsdWUuCisgIDEuIEluIHRoaXMgZnVuY3Rpb24sIGFsb25nIHdpdGggYW55IHZhbGlk
IEMrKyBzdGF0ZW1lbnRzIHlvdSB3YW50IHRvIGluY2x1ZGUsIHVzZSB0aGUgdmFyaW91cyBHb29n
bGUgVGVzdCBhc3NlcnRpb25zIHRvIGNoZWNrIHZhbHVlcy4KKyAgMS4gVGhlIHRlc3QncyByZXN1
bHQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgYXNzZXJ0aW9uczsgaWYgYW55IGFzc2VydGlvbiBpbiB0
aGUgdGVzdCBmYWlscyAoZWl0aGVyIGZhdGFsbHkgb3Igbm9uLWZhdGFsbHkpLCBvciBpZiB0aGUg
dGVzdCBjcmFzaGVzLCB0aGUgZW50aXJlIHRlc3QgZmFpbHMuIE90aGVyd2lzZSwgaXQgc3VjY2Vl
ZHMuCisKK2BgYAorVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSB7CisgLi4uIHRlc3Qg
Ym9keSAuLi4KK30KK2BgYAorCisKK2BURVNUKClgIGFyZ3VtZW50cyBnbyBmcm9tIGdlbmVyYWwg
dG8gc3BlY2lmaWMuIFRoZSBfZmlyc3RfIGFyZ3VtZW50IGlzIHRoZQorbmFtZSBvZiB0aGUgdGVz
dCBjYXNlLCBhbmQgdGhlIF9zZWNvbmRfIGFyZ3VtZW50IGlzIHRoZSB0ZXN0J3MgbmFtZSB3aXRo
aW4gdGhlCit0ZXN0IGNhc2UuIFJlbWVtYmVyIHRoYXQgYSB0ZXN0IGNhc2UgY2FuIGNvbnRhaW4g
YW55IG51bWJlciBvZiBpbmRpdmlkdWFsCit0ZXN0cy4gQSB0ZXN0J3MgX2Z1bGwgbmFtZV8gY29u
c2lzdHMgb2YgaXRzIGNvbnRhaW5pbmcgdGVzdCBjYXNlIGFuZCBpdHMKK2luZGl2aWR1YWwgbmFt
ZS4gVGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcyBjYW4gaGF2ZSB0aGUgc2FtZSBpbmRp
dmlkdWFsCituYW1lLgorCitGb3IgZXhhbXBsZSwgbGV0J3MgdGFrZSBhIHNpbXBsZSBpbnRlZ2Vy
IGZ1bmN0aW9uOgorYGBgCitpbnQgRmFjdG9yaWFsKGludCBuKTsgLy8gUmV0dXJucyB0aGUgZmFj
dG9yaWFsIG9mIG4KK2BgYAorCitBIHRlc3QgY2FzZSBmb3IgdGhpcyBmdW5jdGlvbiBtaWdodCBs
b29rIGxpa2U6CitgYGAKKy8vIFRlc3RzIGZhY3RvcmlhbCBvZiAwLgorVEVTVChGYWN0b3JpYWxU
ZXN0LCBIYW5kbGVzWmVyb0lucHV0KSB7CisgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoMCkpOwor
fQorCisvLyBUZXN0cyBmYWN0b3JpYWwgb2YgcG9zaXRpdmUgbnVtYmVycy4KK1RFU1QoRmFjdG9y
aWFsVGVzdCwgSGFuZGxlc1Bvc2l0aXZlSW5wdXQpIHsKKyAgRVhQRUNUX0VRKDEsIEZhY3Rvcmlh
bCgxKSk7CisgIEVYUEVDVF9FUSgyLCBGYWN0b3JpYWwoMikpOworICBFWFBFQ1RfRVEoNiwgRmFj
dG9yaWFsKDMpKTsKKyAgRVhQRUNUX0VRKDQwMzIwLCBGYWN0b3JpYWwoOCkpOworfQorYGBgCisK
K0dvb2dsZSBUZXN0IGdyb3VwcyB0aGUgdGVzdCByZXN1bHRzIGJ5IHRlc3QgY2FzZXMsIHNvIGxv
Z2ljYWxseS1yZWxhdGVkIHRlc3RzCitzaG91bGQgYmUgaW4gdGhlIHNhbWUgdGVzdCBjYXNlOyBp
biBvdGhlciB3b3JkcywgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZWlyCitgVEVTVCgpYCBzaG91
bGQgYmUgdGhlIHNhbWUuIEluIHRoZSBhYm92ZSBleGFtcGxlLCB3ZSBoYXZlIHR3byB0ZXN0cywK
K2BIYW5kbGVzWmVyb0lucHV0YCBhbmQgYEhhbmRsZXNQb3NpdGl2ZUlucHV0YCwgdGhhdCBiZWxv
bmcgdG8gdGhlIHNhbWUgdGVzdAorY2FzZSBgRmFjdG9yaWFsVGVzdGAuCisKK19BdmFpbGFiaWxp
dHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIFRlc3QgRml4dHVyZXM6IFVzaW5nIHRoZSBT
YW1lIERhdGEgQ29uZmlndXJhdGlvbiBmb3IgTXVsdGlwbGUgVGVzdHMgIworCitJZiB5b3UgZmlu
ZCB5b3Vyc2VsZiB3cml0aW5nIHR3byBvciBtb3JlIHRlc3RzIHRoYXQgb3BlcmF0ZSBvbiBzaW1p
bGFyIGRhdGEsCit5b3UgY2FuIHVzZSBhIF90ZXN0IGZpeHR1cmVfLiBJdCBhbGxvd3MgeW91IHRv
IHJldXNlIHRoZSBzYW1lIGNvbmZpZ3VyYXRpb24gb2YKK29iamVjdHMgZm9yIHNldmVyYWwgZGlm
ZmVyZW50IHRlc3RzLgorCitUbyBjcmVhdGUgYSBmaXh0dXJlLCBqdXN0OgorICAxLiBEZXJpdmUg
YSBjbGFzcyBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RgIC4gU3RhcnQgaXRzIGJvZHkgd2l0aCBgcHJv
dGVjdGVkOmAgb3IgYHB1YmxpYzpgIGFzIHdlJ2xsIHdhbnQgdG8gYWNjZXNzIGZpeHR1cmUgbWVt
YmVycyBmcm9tIHN1Yi1jbGFzc2VzLgorICAxLiBJbnNpZGUgdGhlIGNsYXNzLCBkZWNsYXJlIGFu
eSBvYmplY3RzIHlvdSBwbGFuIHRvIHVzZS4KKyAgMS4gSWYgbmVjZXNzYXJ5LCB3cml0ZSBhIGRl
ZmF1bHQgY29uc3RydWN0b3Igb3IgYFNldFVwKClgIGZ1bmN0aW9uIHRvIHByZXBhcmUgdGhlIG9i
amVjdHMgZm9yIGVhY2ggdGVzdC4gQSBjb21tb24gbWlzdGFrZSBpcyB0byBzcGVsbCBgU2V0VXAo
KWAgYXMgYFNldHVwKClgIHdpdGggYSBzbWFsbCBgdWAgLSBkb24ndCBsZXQgdGhhdCBoYXBwZW4g
dG8geW91LgorICAxLiBJZiBuZWNlc3NhcnksIHdyaXRlIGEgZGVzdHJ1Y3RvciBvciBgVGVhckRv
d24oKWAgZnVuY3Rpb24gdG8gcmVsZWFzZSBhbnkgcmVzb3VyY2VzIHlvdSBhbGxvY2F0ZWQgaW4g
YFNldFVwKClgIC4gVG8gbGVhcm4gd2hlbiB5b3Ugc2hvdWxkIHVzZSB0aGUgY29uc3RydWN0b3Iv
ZGVzdHJ1Y3RvciBhbmQgd2hlbiB5b3Ugc2hvdWxkIHVzZSBgU2V0VXAoKS9UZWFyRG93bigpYCwg
cmVhZCB0aGlzIFtGQVEgZW50cnldKFYxXzVfRkFRLm1kI3Nob3VsZC1pLXVzZS10aGUtY29uc3Ry
dWN0b3JkZXN0cnVjdG9yLW9mLXRoZS10ZXN0LWZpeHR1cmUtb3ItdGhlLXNldC11cHRlYXItZG93
bi1mdW5jdGlvbikuCisgIDEuIElmIG5lZWRlZCwgZGVmaW5lIHN1YnJvdXRpbmVzIGZvciB5b3Vy
IHRlc3RzIHRvIHNoYXJlLgorCitXaGVuIHVzaW5nIGEgZml4dHVyZSwgdXNlIGBURVNUX0YoKWAg
aW5zdGVhZCBvZiBgVEVTVCgpYCBhcyBpdCBhbGxvd3MgeW91IHRvCithY2Nlc3Mgb2JqZWN0cyBh
bmQgc3Vicm91dGluZXMgaW4gdGhlIHRlc3QgZml4dHVyZToKK2BgYAorVEVTVF9GKHRlc3RfY2Fz
ZV9uYW1lLCB0ZXN0X25hbWUpIHsKKyAuLi4gdGVzdCBib2R5IC4uLgorfQorYGBgCisKK0xpa2Ug
YFRFU1QoKWAsIHRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgdGVzdCBjYXNlIG5hbWUsIGJ1dCBm
b3IgYFRFU1RfRigpYAordGhpcyBtdXN0IGJlIHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGZpeHR1cmUg
Y2xhc3MuIFlvdSd2ZSBwcm9iYWJseSBndWVzc2VkOiBgX0ZgCitpcyBmb3IgZml4dHVyZS4KKwor
VW5mb3J0dW5hdGVseSwgdGhlIEMrKyBtYWNybyBzeXN0ZW0gZG9lcyBub3QgYWxsb3cgdXMgdG8g
Y3JlYXRlIGEgc2luZ2xlIG1hY3JvCit0aGF0IGNhbiBoYW5kbGUgYm90aCB0eXBlcyBvZiB0ZXN0
cy4gVXNpbmcgdGhlIHdyb25nIG1hY3JvIGNhdXNlcyBhIGNvbXBpbGVyCitlcnJvci4KKworQWxz
bywgeW91IG11c3QgZmlyc3QgZGVmaW5lIGEgdGVzdCBmaXh0dXJlIGNsYXNzIGJlZm9yZSB1c2lu
ZyBpdCBpbiBhCitgVEVTVF9GKClgLCBvciB5b3UnbGwgZ2V0IHRoZSBjb21waWxlciBlcnJvciAi
YHZpcnR1YWwgb3V0c2lkZSBjbGFzcworZGVjbGFyYXRpb25gIi4KKworRm9yIGVhY2ggdGVzdCBk
ZWZpbmVkIHdpdGggYFRFU1RfRigpYCwgR29vZ2xlIFRlc3Qgd2lsbDoKKyAgMS4gQ3JlYXRlIGEg
X2ZyZXNoXyB0ZXN0IGZpeHR1cmUgYXQgcnVudGltZQorICAxLiBJbW1lZGlhdGVseSBpbml0aWFs
aXplIGl0IHZpYSBgU2V0VXAoKWAgLAorICAxLiBSdW4gdGhlIHRlc3QKKyAgMS4gQ2xlYW4gdXAg
YnkgY2FsbGluZyBgVGVhckRvd24oKWAKKyAgMS4gRGVsZXRlIHRoZSB0ZXN0IGZpeHR1cmUuICBO
b3RlIHRoYXQgZGlmZmVyZW50IHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBoYXZlIGRpZmZl
cmVudCB0ZXN0IGZpeHR1cmUgb2JqZWN0cywgYW5kIEdvb2dsZSBUZXN0IGFsd2F5cyBkZWxldGVz
IGEgdGVzdCBmaXh0dXJlIGJlZm9yZSBpdCBjcmVhdGVzIHRoZSBuZXh0IG9uZS4gR29vZ2xlIFRl
c3QgZG9lcyBub3QgcmV1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlIGZvciBtdWx0aXBsZSB0ZXN0
cy4gQW55IGNoYW5nZXMgb25lIHRlc3QgbWFrZXMgdG8gdGhlIGZpeHR1cmUgZG8gbm90IGFmZmVj
dCBvdGhlciB0ZXN0cy4KKworQXMgYW4gZXhhbXBsZSwgbGV0J3Mgd3JpdGUgdGVzdHMgZm9yIGEg
RklGTyBxdWV1ZSBjbGFzcyBuYW1lZCBgUXVldWVgLCB3aGljaAoraGFzIHRoZSBmb2xsb3dpbmcg
aW50ZXJmYWNlOgorYGBgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRT4gLy8gRSBpcyB0aGUgZWxlbWVu
dCB0eXBlLgorY2xhc3MgUXVldWUgeworIHB1YmxpYzoKKyAgUXVldWUoKTsKKyAgdm9pZCBFbnF1
ZXVlKGNvbnN0IEUmIGVsZW1lbnQpOworICBFKiBEZXF1ZXVlKCk7IC8vIFJldHVybnMgTlVMTCBp
ZiB0aGUgcXVldWUgaXMgZW1wdHkuCisgIHNpemVfdCBzaXplKCkgY29uc3Q7CisgIC4uLgorfTsK
K2BgYAorCitGaXJzdCwgZGVmaW5lIGEgZml4dHVyZSBjbGFzcy4gQnkgY29udmVudGlvbiwgeW91
IHNob3VsZCBnaXZlIGl0IHRoZSBuYW1lCitgRm9vVGVzdGAgd2hlcmUgYEZvb2AgaXMgdGhlIGNs
YXNzIGJlaW5nIHRlc3RlZC4KK2BgYAorY2xhc3MgUXVldWVUZXN0IDogcHVibGljIDo6dGVzdGlu
Zzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgcTFf
LkVucXVldWUoMSk7CisgICAgcTJfLkVucXVldWUoMik7CisgICAgcTJfLkVucXVldWUoMyk7Cisg
IH0KKworICAvLyB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7fQorCisgIFF1ZXVlPGludD4gcTBf
OworICBRdWV1ZTxpbnQ+IHExXzsKKyAgUXVldWU8aW50PiBxMl87Cit9OworYGBgCisKK0luIHRo
aXMgY2FzZSwgYFRlYXJEb3duKClgIGlzIG5vdCBuZWVkZWQgc2luY2Ugd2UgZG9uJ3QgaGF2ZSB0
byBjbGVhbiB1cCBhZnRlcgorZWFjaCB0ZXN0LCBvdGhlciB0aGFuIHdoYXQncyBhbHJlYWR5IGRv
bmUgYnkgdGhlIGRlc3RydWN0b3IuCisKK05vdyB3ZSdsbCB3cml0ZSB0ZXN0cyB1c2luZyBgVEVT
VF9GKClgIGFuZCB0aGlzIGZpeHR1cmUuCitgYGAKK1RFU1RfRihRdWV1ZVRlc3QsIElzRW1wdHlJ
bml0aWFsbHkpIHsKKyAgRVhQRUNUX0VRKDAsIHEwXy5zaXplKCkpOworfQorCitURVNUX0YoUXVl
dWVUZXN0LCBEZXF1ZXVlV29ya3MpIHsKKyAgaW50KiBuID0gcTBfLkRlcXVldWUoKTsKKyAgRVhQ
RUNUX0VRKE5VTEwsIG4pOworCisgIG4gPSBxMV8uRGVxdWV1ZSgpOworICBBU1NFUlRfVFJVRShu
ICE9IE5VTEwpOworICBFWFBFQ1RfRVEoMSwgKm4pOworICBFWFBFQ1RfRVEoMCwgcTFfLnNpemUo
KSk7CisgIGRlbGV0ZSBuOworCisgIG4gPSBxMl8uRGVxdWV1ZSgpOworICBBU1NFUlRfVFJVRShu
ICE9IE5VTEwpOworICBFWFBFQ1RfRVEoMiwgKm4pOworICBFWFBFQ1RfRVEoMSwgcTJfLnNpemUo
KSk7CisgIGRlbGV0ZSBuOworfQorYGBgCisKK1RoZSBhYm92ZSB1c2VzIGJvdGggYEFTU0VSVF8q
YCBhbmQgYEVYUEVDVF8qYCBhc3NlcnRpb25zLiBUaGUgcnVsZSBvZiB0aHVtYiBpcwordG8gdXNl
IGBFWFBFQ1RfKmAgd2hlbiB5b3Ugd2FudCB0aGUgdGVzdCB0byBjb250aW51ZSB0byByZXZlYWwg
bW9yZSBlcnJvcnMKK2FmdGVyIHRoZSBhc3NlcnRpb24gZmFpbHVyZSwgYW5kIHVzZSBgQVNTRVJU
XypgIHdoZW4gY29udGludWluZyBhZnRlciBmYWlsdXJlCitkb2Vzbid0IG1ha2Ugc2Vuc2UuIEZv
ciBleGFtcGxlLCB0aGUgc2Vjb25kIGFzc2VydGlvbiBpbiB0aGUgYERlcXVldWVgIHRlc3QgaXMK
K2BBU1NFUlRfVFJVRShuICE9IE5VTEwpYCwgYXMgd2UgbmVlZCB0byBkZXJlZmVyZW5jZSB0aGUg
cG9pbnRlciBgbmAgbGF0ZXIsCit3aGljaCB3b3VsZCBsZWFkIHRvIGEgc2VnZmF1bHQgd2hlbiBg
bmAgaXMgYE5VTExgLgorCitXaGVuIHRoZXNlIHRlc3RzIHJ1biwgdGhlIGZvbGxvd2luZyBoYXBw
ZW5zOgorICAxLiBHb29nbGUgVGVzdCBjb25zdHJ1Y3RzIGEgYFF1ZXVlVGVzdGAgb2JqZWN0IChs
ZXQncyBjYWxsIGl0IGB0MWAgKS4KKyAgMS4gYHQxLlNldFVwKClgIGluaXRpYWxpemVzIGB0MWAg
LgorICAxLiBUaGUgZmlyc3QgdGVzdCAoIGBJc0VtcHR5SW5pdGlhbGx5YCApIHJ1bnMgb24gYHQx
YCAuCisgIDEuIGB0MS5UZWFyRG93bigpYCBjbGVhbnMgdXAgYWZ0ZXIgdGhlIHRlc3QgZmluaXNo
ZXMuCisgIDEuIGB0MWAgaXMgZGVzdHJ1Y3RlZC4KKyAgMS4gVGhlIGFib3ZlIHN0ZXBzIGFyZSBy
ZXBlYXRlZCBvbiBhbm90aGVyIGBRdWV1ZVRlc3RgIG9iamVjdCwgdGhpcyB0aW1lIHJ1bm5pbmcg
dGhlIGBEZXF1ZXVlV29ya3NgIHRlc3QuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjLgorCitfTm90ZV86IEdvb2dsZSBUZXN0IGF1dG9tYXRpY2FsbHkgc2F2ZXMgYWxsIF9H
b29nbGUgVGVzdF8gZmxhZ3Mgd2hlbiBhIHRlc3QKK29iamVjdCBpcyBjb25zdHJ1Y3RlZCwgYW5k
IHJlc3RvcmVzIHRoZW0gd2hlbiBpdCBpcyBkZXN0cnVjdGVkLgorCisjIEludm9raW5nIHRoZSBU
ZXN0cyAjCisKK2BURVNUKClgIGFuZCBgVEVTVF9GKClgIGltcGxpY2l0bHkgcmVnaXN0ZXIgdGhl
aXIgdGVzdHMgd2l0aCBHb29nbGUgVGVzdC4gU28sIHVubGlrZSB3aXRoIG1hbnkgb3RoZXIgQysr
IHRlc3RpbmcgZnJhbWV3b3JrcywgeW91IGRvbid0IGhhdmUgdG8gcmUtbGlzdCBhbGwgeW91ciBk
ZWZpbmVkIHRlc3RzIGluIG9yZGVyIHRvIHJ1biB0aGVtLgorCitBZnRlciBkZWZpbmluZyB5b3Vy
IHRlc3RzLCB5b3UgY2FuIHJ1biB0aGVtIHdpdGggYFJVTl9BTExfVEVTVFMoKWAgLCB3aGljaCBy
ZXR1cm5zIGAwYCBpZiBhbGwgdGhlIHRlc3RzIGFyZSBzdWNjZXNzZnVsLCBvciBgMWAgb3RoZXJ3
aXNlLiBOb3RlIHRoYXQgYFJVTl9BTExfVEVTVFMoKWAgcnVucyBfYWxsIHRlc3RzXyBpbiB5b3Vy
IGxpbmsgdW5pdCAtLSB0aGV5IGNhbiBiZSBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLCBvciBl
dmVuIGRpZmZlcmVudCBzb3VyY2UgZmlsZXMuCisKK1doZW4gaW52b2tlZCwgdGhlIGBSVU5fQUxM
X1RFU1RTKClgIG1hY3JvOgorICAxLiBTYXZlcyB0aGUgc3RhdGUgb2YgYWxsICBHb29nbGUgVGVz
dCBmbGFncy4KKyAgMS4gQ3JlYXRlcyBhIHRlc3QgZml4dHVyZSBvYmplY3QgZm9yIHRoZSBmaXJz
dCB0ZXN0LgorICAxLiBJbml0aWFsaXplcyBpdCB2aWEgYFNldFVwKClgLgorICAxLiBSdW5zIHRo
ZSB0ZXN0IG9uIHRoZSBmaXh0dXJlIG9iamVjdC4KKyAgMS4gQ2xlYW5zIHVwIHRoZSBmaXh0dXJl
IHZpYSBgVGVhckRvd24oKWAuCisgIDEuIERlbGV0ZXMgdGhlIGZpeHR1cmUuCisgIDEuIFJlc3Rv
cmVzIHRoZSBzdGF0ZSBvZiBhbGwgR29vZ2xlIFRlc3QgZmxhZ3MuCisgIDEuIFJlcGVhdHMgdGhl
IGFib3ZlIHN0ZXBzIGZvciB0aGUgbmV4dCB0ZXN0LCB1bnRpbCBhbGwgdGVzdHMgaGF2ZSBydW4u
CisKK0luIGFkZGl0aW9uLCBpZiB0aGUgdGV4dCBmaXh0dXJlJ3MgY29uc3RydWN0b3IgZ2VuZXJh
dGVzIGEgZmF0YWwgZmFpbHVyZSBpbgorc3RlcCAyLCB0aGVyZSBpcyBubyBwb2ludCBmb3Igc3Rl
cCAzIC0gNSBhbmQgdGhleSBhcmUgdGh1cyBza2lwcGVkLiBTaW1pbGFybHksCitpZiBzdGVwIDMg
Z2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSwgc3RlcCA0IHdpbGwgYmUgc2tpcHBlZC4KKworX0lt
cG9ydGFudF86IFlvdSBtdXN0IG5vdCBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBvZiBgUlVOX0FM
TF9URVNUUygpYCwgb3IgYGdjY2AKK3dpbGwgZ2l2ZSB5b3UgYSBjb21waWxlciBlcnJvci4gVGhl
IHJhdGlvbmFsZSBmb3IgdGhpcyBkZXNpZ24gaXMgdGhhdCB0aGUKK2F1dG9tYXRlZCB0ZXN0aW5n
IHNlcnZpY2UgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgdGVzdCBoYXMgcGFzc2VkIGJhc2VkIG9uIGl0
cworZXhpdCBjb2RlLCBub3Qgb24gaXRzIHN0ZG91dC9zdGRlcnIgb3V0cHV0OyB0aHVzIHlvdXIg
YG1haW4oKWAgZnVuY3Rpb24gbXVzdAorcmV0dXJuIHRoZSB2YWx1ZSBvZiBgUlVOX0FMTF9URVNU
UygpYC4KKworQWxzbywgeW91IHNob3VsZCBjYWxsIGBSVU5fQUxMX1RFU1RTKClgIG9ubHkgKipv
bmNlKiouIENhbGxpbmcgaXQgbW9yZSB0aGFuIG9uY2UKK2NvbmZsaWN0cyB3aXRoIHNvbWUgYWR2
YW5jZWQgR29vZ2xlIFRlc3QgZmVhdHVyZXMgKGUuZy4gdGhyZWFkLXNhZmUgZGVhdGgKK3Rlc3Rz
KSBhbmQgdGh1cyBpcyBub3Qgc3VwcG9ydGVkLgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdp
bmRvd3MsIE1hYy4KKworIyBXcml0aW5nIHRoZSBtYWluKCkgRnVuY3Rpb24gIworCitZb3UgY2Fu
IHN0YXJ0IGZyb20gdGhpcyBib2lsZXJwbGF0ZToKK2BgYAorI2luY2x1ZGUgInRoaXMvcGFja2Fn
ZS9mb28uaCIKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCituYW1lc3BhY2UgeworCisvLyBU
aGUgZml4dHVyZSBmb3IgdGVzdGluZyBjbGFzcyBGb28uCitjbGFzcyBGb29UZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAvLyBZb3UgY2FuIHJlbW92ZSBhbnkg
b3IgYWxsIG9mIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGlmIGl0cyBib2R5CisgIC8vIGlzIGVt
cHR5LgorCisgIEZvb1Rlc3QoKSB7CisgICAgLy8gWW91IGNhbiBkbyBzZXQtdXAgd29yayBmb3Ig
ZWFjaCB0ZXN0IGhlcmUuCisgIH0KKworICB2aXJ0dWFsIH5Gb29UZXN0KCkgeworICAgIC8vIFlv
dSBjYW4gZG8gY2xlYW4tdXAgd29yayB0aGF0IGRvZXNuJ3QgdGhyb3cgZXhjZXB0aW9ucyBoZXJl
LgorICB9CisKKyAgLy8gSWYgdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIGFyZSBub3Qg
ZW5vdWdoIGZvciBzZXR0aW5nIHVwCisgIC8vIGFuZCBjbGVhbmluZyB1cCBlYWNoIHRlc3QsIHlv
dSBjYW4gZGVmaW5lIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKKworICB2aXJ0dWFsIHZvaWQgU2V0
VXAoKSB7CisgICAgLy8gQ29kZSBoZXJlIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVy
IHRoZSBjb25zdHJ1Y3RvciAocmlnaHQKKyAgICAvLyBiZWZvcmUgZWFjaCB0ZXN0KS4KKyAgfQor
CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBj
YWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgZWFjaCB0ZXN0IChyaWdodAorICAgIC8vIGJlZm9yZSB0
aGUgZGVzdHJ1Y3RvcikuCisgIH0KKworICAvLyBPYmplY3RzIGRlY2xhcmVkIGhlcmUgY2FuIGJl
IHVzZWQgYnkgYWxsIHRlc3RzIGluIHRoZSB0ZXN0IGNhc2UgZm9yIEZvby4KK307CisKKy8vIFRl
c3RzIHRoYXQgdGhlIEZvbzo6QmFyKCkgbWV0aG9kIGRvZXMgQWJjLgorVEVTVF9GKEZvb1Rlc3Qs
IE1ldGhvZEJhckRvZXNBYmMpIHsKKyAgY29uc3Qgc3RyaW5nIGlucHV0X2ZpbGVwYXRoID0gInRo
aXMvcGFja2FnZS90ZXN0ZGF0YS9teWlucHV0ZmlsZS5kYXQiOworICBjb25zdCBzdHJpbmcgb3V0
cHV0X2ZpbGVwYXRoID0gInRoaXMvcGFja2FnZS90ZXN0ZGF0YS9teW91dHB1dGZpbGUuZGF0IjsK
KyAgRm9vIGY7CisgIEVYUEVDVF9FUSgwLCBmLkJhcihpbnB1dF9maWxlcGF0aCwgb3V0cHV0X2Zp
bGVwYXRoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgRm9vIGRvZXMgWHl6LgorVEVTVF9GKEZvb1Rl
c3QsIERvZXNYeXopIHsKKyAgLy8gRXhlcmNpc2VzIHRoZSBYeXogZmVhdHVyZSBvZiBGb28uCit9
CisKK30gIC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsK
KyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIHJldHVybiBSVU5f
QUxMX1RFU1RTKCk7Cit9CitgYGAKKworVGhlIGA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClg
IGZ1bmN0aW9uIHBhcnNlcyB0aGUgY29tbWFuZCBsaW5lIGZvciBHb29nbGUKK1Rlc3QgZmxhZ3Ms
IGFuZCByZW1vdmVzIGFsbCByZWNvZ25pemVkIGZsYWdzLiBUaGlzIGFsbG93cyB0aGUgdXNlciB0
byBjb250cm9sIGEKK3Rlc3QgcHJvZ3JhbSdzIGJlaGF2aW9yIHZpYSB2YXJpb3VzIGZsYWdzLCB3
aGljaCB3ZSdsbCBjb3ZlciBpbiBbQWR2YW5jZWRHdWlkZV0oVjFfNV9BZHZhbmNlZEd1aWRlLm1k
KS4KK1lvdSBtdXN0IGNhbGwgdGhpcyBmdW5jdGlvbiBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9U
RVNUUygpYCwgb3IgdGhlIGZsYWdzCit3b24ndCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4KKwor
T24gV2luZG93cywgYEluaXRHb29nbGVUZXN0KClgIGFsc28gd29ya3Mgd2l0aCB3aWRlIHN0cmlu
Z3MsIHNvIGl0IGNhbiBiZSB1c2VkCitpbiBwcm9ncmFtcyBjb21waWxlZCBpbiBgVU5JQ09ERWAg
bW9kZSBhcyB3ZWxsLgorCitCdXQgbWF5YmUgeW91IHRoaW5rIHRoYXQgd3JpdGluZyBhbGwgdGhv
c2UgbWFpbigpIGZ1bmN0aW9ucyBpcyB0b28gbXVjaCB3b3JrPyBXZSBhZ3JlZSB3aXRoIHlvdSBj
b21wbGV0ZWx5IGFuZCB0aGF0J3Mgd2h5IEdvb2dsZSBUZXN0IHByb3ZpZGVzIGEgYmFzaWMgaW1w
bGVtZW50YXRpb24gb2YgbWFpbigpLiBJZiBpdCBmaXRzIHlvdXIgbmVlZHMsIHRoZW4ganVzdCBs
aW5rIHlvdXIgdGVzdCB3aXRoIGd0ZXN0XF9tYWluIGxpYnJhcnkgYW5kIHlvdSBhcmUgZ29vZCB0
byBnby4KKworIyMgSW1wb3J0YW50IG5vdGUgZm9yIFZpc3VhbCBDKysgdXNlcnMgIyMKK0lmIHlv
dSBwdXQgeW91ciB0ZXN0cyBpbnRvIGEgbGlicmFyeSBhbmQgeW91ciBgbWFpbigpYCBmdW5jdGlv
biBpcyBpbiBhIGRpZmZlcmVudCBsaWJyYXJ5IG9yIGluIHlvdXIgLmV4ZSBmaWxlLCB0aG9zZSB0
ZXN0cyB3aWxsIG5vdCBydW4uIFRoZSByZWFzb24gaXMgYSBbYnVnXShodHRwczovL2Nvbm5lY3Qu
bWljcm9zb2Z0LmNvbS9mZWVkYmFjay92aWV3ZmVlZGJhY2suYXNweD9GZWVkYmFja0lEPTI0NDQx
MCZzaXRlaWQ9MjEwKSBpbiBWaXN1YWwgQysrLiBXaGVuIHlvdSBkZWZpbmUgeW91ciB0ZXN0cywg
R29vZ2xlIFRlc3QgY3JlYXRlcyBjZXJ0YWluIHN0YXRpYyBvYmplY3RzIHRvIHJlZ2lzdGVyIHRo
ZW0uIFRoZXNlIG9iamVjdHMgYXJlIG5vdCByZWZlcmVuY2VkIGZyb20gZWxzZXdoZXJlIGJ1dCB0
aGVpciBjb25zdHJ1Y3RvcnMgYXJlIHN0aWxsIHN1cHBvc2VkIHRvIHJ1bi4gV2hlbiBWaXN1YWwg
QysrIGxpbmtlciBzZWVzIHRoYXQgbm90aGluZyBpbiB0aGUgbGlicmFyeSBpcyByZWZlcmVuY2Vk
IGZyb20gb3RoZXIgcGxhY2VzIGl0IHRocm93cyB0aGUgbGlicmFyeSBvdXQuIFlvdSBoYXZlIHRv
IHJlZmVyZW5jZSB5b3VyIGxpYnJhcnkgd2l0aCB0ZXN0cyBmcm9tIHlvdXIgbWFpbiBwcm9ncmFt
IHRvIGtlZXAgdGhlIGxpbmtlciBmcm9tIGRpc2NhcmRpbmcgaXQuIEhlcmUgaXMgaG93IHRvIGRv
IGl0LiBTb21ld2hlcmUgaW4geW91ciBsaWJyYXJ5IGNvZGUgZGVjbGFyZSBhIGZ1bmN0aW9uOgor
YGBgCitfX2RlY2xzcGVjKGRsbGV4cG9ydCkgaW50IFB1bGxJbk15TGlicmFyeSgpIHsgcmV0dXJu
IDA7IH0KK2BgYAorSWYgeW91IHB1dCB5b3VyIHRlc3RzIGluIGEgc3RhdGljIGxpYnJhcnkgKG5v
dCBETEwpIHRoZW4gYF9fZGVjbHNwZWMoZGxsZXhwb3J0KWAgaXMgbm90IHJlcXVpcmVkLiBOb3cs
IGluIHlvdXIgbWFpbiBwcm9ncmFtLCB3cml0ZSBhIGNvZGUgdGhhdCBpbnZva2VzIHRoYXQgZnVu
Y3Rpb246CitgYGAKK2ludCBQdWxsSW5NeUxpYnJhcnkoKTsKK3N0YXRpYyBpbnQgZHVtbXkgPSBQ
dWxsSW5NeUxpYnJhcnkoKTsKK2BgYAorVGhpcyB3aWxsIGtlZXAgeW91ciB0ZXN0cyByZWZlcmVu
Y2VkIGFuZCB3aWxsIG1ha2UgdGhlbSByZWdpc3RlciB0aGVtc2VsdmVzIGF0IHN0YXJ0dXAuCisK
K0luIGFkZGl0aW9uLCBpZiB5b3UgZGVmaW5lIHlvdXIgdGVzdHMgaW4gYSBzdGF0aWMgbGlicmFy
eSwgYWRkIGAvT1BUOk5PUkVGYCB0byB5b3VyIG1haW4gcHJvZ3JhbSBsaW5rZXIgb3B0aW9ucy4g
SWYgeW91IHVzZSBNU1ZDKysgSURFLCBnbyB0byB5b3VyIC5leGUgcHJvamVjdCBwcm9wZXJ0aWVz
L0NvbmZpZ3VyYXRpb24gUHJvcGVydGllcy9MaW5rZXIvT3B0aW1pemF0aW9uIGFuZCBzZXQgUmVm
ZXJlbmNlcyBzZXR0aW5nIHRvIGBLZWVwIFVucmVmZXJlbmNlZCBEYXRhICgvT1BUOk5PUkVGKWAu
IFRoaXMgd2lsbCBrZWVwIFZpc3VhbCBDKysgbGlua2VyIGZyb20gZGlzY2FyZGluZyBpbmRpdmlk
dWFsIHN5bWJvbHMgZ2VuZXJhdGVkIGJ5IHlvdXIgdGVzdHMgZnJvbSB0aGUgZmluYWwgZXhlY3V0
YWJsZS4KKworVGhlcmUgaXMgb25lIG1vcmUgcGl0ZmFsbCwgdGhvdWdoLiBJZiB5b3UgdXNlIEdv
b2dsZSBUZXN0IGFzIGEgc3RhdGljIGxpYnJhcnkgKHRoYXQncyBob3cgaXQgaXMgZGVmaW5lZCBp
biBndGVzdC52Y3Byb2opIHlvdXIgdGVzdHMgbXVzdCBhbHNvIHJlc2lkZSBpbiBhIHN0YXRpYyBs
aWJyYXJ5LiBJZiB5b3UgaGF2ZSB0byBoYXZlIHRoZW0gaW4gYSBETEwsIHlvdSBfbXVzdF8gY2hh
bmdlIEdvb2dsZSBUZXN0IHRvIGJ1aWxkIGludG8gYSBETEwgYXMgd2VsbC4gT3RoZXJ3aXNlIHlv
dXIgdGVzdHMgd2lsbCBub3QgcnVuIGNvcnJlY3RseSBvciB3aWxsIG5vdCBydW4gYXQgYWxsLiBU
aGUgZ2VuZXJhbCBjb25jbHVzaW9uIGhlcmUgaXM6IG1ha2UgeW91ciBsaWZlIGVhc2llciAtIGRv
IG5vdCB3cml0ZSB5b3VyIHRlc3RzIGluIGxpYnJhcmllcyEKKworIyBXaGVyZSB0byBHbyBmcm9t
IEhlcmUgIworCitDb25ncmF0dWxhdGlvbnMhIFlvdSd2ZSBsZWFybmVkIHRoZSBHb29nbGUgVGVz
dCBiYXNpY3MuIFlvdSBjYW4gc3RhcnQgd3JpdGluZworYW5kIHJ1bm5pbmcgR29vZ2xlIFRlc3Qg
dGVzdHMsIHJlYWQgc29tZSBbc2FtcGxlc10oU2FtcGxlcy5tZCksIG9yIGNvbnRpbnVlIHdpdGgK
K1tBZHZhbmNlZEd1aWRlXShWMV81X0FkdmFuY2VkR3VpZGUubWQpLCB3aGljaCBkZXNjcmliZXMg
bWFueSBtb3JlIHVzZWZ1bCBHb29nbGUgVGVzdCBmZWF0dXJlcy4KKworIyBLbm93biBMaW1pdGF0
aW9ucyAjCisKK0dvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHRvIGJlIHRocmVhZC1zYWZlLiAgVGhl
IGltcGxlbWVudGF0aW9uIGlzCit0aHJlYWQtc2FmZSBvbiBzeXN0ZW1zIHdoZXJlIHRoZSBgcHRo
cmVhZHNgIGxpYnJhcnkgaXMgYXZhaWxhYmxlLiAgSXQKK2lzIGN1cnJlbnRseSBfdW5zYWZlXyB0
byB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBmcm9tIHR3byB0aHJlYWRzCitjb25jdXJyZW50
bHkgb24gb3RoZXIgc3lzdGVtcyAoZS5nLiBXaW5kb3dzKS4gIEluIG1vc3QgdGVzdHMgdGhpcyBp
cworbm90IGFuIGlzc3VlIGFzIHVzdWFsbHkgdGhlIGFzc2VydGlvbnMgYXJlIGRvbmUgaW4gdGhl
IG1haW4gdGhyZWFkLiBJZgoreW91IHdhbnQgdG8gaGVscCwgeW91IGNhbiB2b2x1bnRlZXIgdG8g
aW1wbGVtZW50IHRoZSBuZWNlc3NhcnkKK3N5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGluIGBn
dGVzdC1wb3J0LmhgIGZvciB5b3VyIHBsYXRmb3JtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvZG9jcy9WMV81X1B1bXBNYW51YWwubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9kb2NzL1YxXzVfUHVtcE1hbnVhbC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTcxMDc4OWRkZDFlZWE1
ZWY1ZTc5M2NhMzUwZTUyZTA0NTU2YTU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvZG9jcy9WMV81X1B1bXBNYW51YWwubWQKQEAgLTAsMCArMSwxNzcgQEAKKwor
Cis8Yj5QPC9iPnVtcCBpcyA8Yj5VPC9iPnNlZnVsIGZvciA8Yj5NPC9iPmV0YSA8Yj5QPC9iPnJv
Z3JhbW1pbmcuCisKKyMgVGhlIFByb2JsZW0gIworCitUZW1wbGF0ZSBhbmQgbWFjcm8gbGlicmFy
aWVzIG9mdGVuIG5lZWQgdG8gZGVmaW5lIG1hbnkgY2xhc3NlcywKK2Z1bmN0aW9ucywgb3IgbWFj
cm9zIHRoYXQgdmFyeSBvbmx5IChvciBhbG1vc3Qgb25seSkgaW4gdGhlIG51bWJlciBvZgorYXJn
dW1lbnRzIHRoZXkgdGFrZS4gSXQncyBhIGxvdCBvZiByZXBldGl0aXZlLCBtZWNoYW5pY2FsLCBh
bmQKK2Vycm9yLXByb25lIHdvcmsuCisKK1ZhcmlhZGljIHRlbXBsYXRlcyBhbmQgdmFyaWFkaWMg
bWFjcm9zIGNhbiBhbGxldmlhdGUgdGhlIHByb2JsZW0uCitIb3dldmVyLCB3aGlsZSBib3RoIGFy
ZSBiZWluZyBjb25zaWRlcmVkIGJ5IHRoZSBDKysgY29tbWl0dGVlLCBuZWl0aGVyCitpcyBpbiB0
aGUgc3RhbmRhcmQgeWV0IG9yIHdpZGVseSBzdXBwb3J0ZWQgYnkgY29tcGlsZXJzLiAgVGh1cyB0
aGV5CithcmUgb2Z0ZW4gbm90IGEgZ29vZCBjaG9pY2UsIGVzcGVjaWFsbHkgd2hlbiB5b3VyIGNv
ZGUgbmVlZHMgdG8gYmUKK3BvcnRhYmxlLiBBbmQgdGhlaXIgY2FwYWJpbGl0aWVzIGFyZSBzdGls
bCBsaW1pdGVkLgorCitBcyBhIHJlc3VsdCwgYXV0aG9ycyBvZiBzdWNoIGxpYnJhcmllcyBvZnRl
biBoYXZlIHRvIHdyaXRlIHNjcmlwdHMgdG8KK2dlbmVyYXRlIHRoZWlyIGltcGxlbWVudGF0aW9u
LiBIb3dldmVyLCBvdXIgZXhwZXJpZW5jZSBpcyB0aGF0IGl0J3MKK3RlZGlvdXMgdG8gd3JpdGUg
c3VjaCBzY3JpcHRzLCB3aGljaCB0ZW5kIHRvIHJlZmxlY3QgdGhlIHN0cnVjdHVyZSBvZgordGhl
IGdlbmVyYXRlZCBjb2RlIHBvb3JseSBhbmQgYXJlIG9mdGVuIGhhcmQgdG8gcmVhZCBhbmQgZWRp
dC4gRm9yCitleGFtcGxlLCBhIHNtYWxsIGNoYW5nZSBuZWVkZWQgaW4gdGhlIGdlbmVyYXRlZCBj
b2RlIG1heSByZXF1aXJlIHNvbWUKK25vbi1pbnR1aXRpdmUsIG5vbi10cml2aWFsIGNoYW5nZXMg
aW4gdGhlIHNjcmlwdC4gVGhpcyBpcyBlc3BlY2lhbGx5CitwYWluZnVsIHdoZW4gZXhwZXJpbWVu
dGluZyB3aXRoIHRoZSBjb2RlLgorCisjIE91ciBTb2x1dGlvbiAjCisKK1B1bXAgKGZvciBQdW1w
IGlzIFVzZWZ1bCBmb3IgTWV0YSBQcm9ncmFtbWluZywgUHJldHR5IFVzZWZ1bCBmb3IgTWV0YQor
UHJvZ3JhbW1pbmcsIG9yIFByYWN0aWNhbCBVdGlsaXR5IGZvciBNZXRhIFByb2dyYW1taW5nLCB3
aGljaGV2ZXIgeW91CitwcmVmZXIpIGlzIGEgc2ltcGxlIG1ldGEtcHJvZ3JhbW1pbmcgdG9vbCBm
b3IgQysrLiBUaGUgaWRlYSBpcyB0aGF0IGEKK3Byb2dyYW1tZXIgd3JpdGVzIGEgYGZvby5wdW1w
YCBmaWxlIHdoaWNoIGNvbnRhaW5zIEMrKyBjb2RlIHBsdXMgbWV0YQorY29kZSB0aGF0IG1hbmlw
dWxhdGVzIHRoZSBDKysgY29kZS4gVGhlIG1ldGEgY29kZSBjYW4gaGFuZGxlCitpdGVyYXRpb25z
IG92ZXIgYSByYW5nZSwgbmVzdGVkIGl0ZXJhdGlvbnMsIGxvY2FsIG1ldGEgdmFyaWFibGUKK2Rl
ZmluaXRpb25zLCBzaW1wbGUgYXJpdGhtZXRpYywgYW5kIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25z
LiBZb3UgY2FuCit2aWV3IGl0IGFzIGEgc21hbGwgRG9tYWluLVNwZWNpZmljIExhbmd1YWdlLiBU
aGUgbWV0YSBsYW5ndWFnZSBpcworZGVzaWduZWQgdG8gYmUgbm9uLWludHJ1c2l2ZSAocy50LiBp
dCB3b24ndCBjb25mdXNlIEVtYWNzJyBDKysgbW9kZSwKK2ZvciBleGFtcGxlKSBhbmQgY29uY2lz
ZSwgbWFraW5nIFB1bXAgY29kZSBpbnR1aXRpdmUgYW5kIGVhc3kgdG8KK21haW50YWluLgorCisj
IyBIaWdobGlnaHRzICMjCisKKyAgKiBUaGUgaW1wbGVtZW50YXRpb24gaXMgaW4gYSBzaW5nbGUg
UHl0aG9uIHNjcmlwdCBhbmQgdGh1cyB1bHRyYSBwb3J0YWJsZTogbm8gYnVpbGQgb3IgaW5zdGFs
bGF0aW9uIGlzIG5lZWRlZCBhbmQgaXQgd29ya3MgY3Jvc3MgcGxhdGZvcm1zLgorICAqIFB1bXAg
dHJpZXMgdG8gYmUgc21hcnQgd2l0aCByZXNwZWN0IHRvIFtHb29nbGUncyBzdHlsZSBndWlkZV0o
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS1zdHlsZWd1aWRlLyk6IGl0IGJyZWFrcyBs
b25nIGxpbmVzIChlYXN5IHRvIGhhdmUgd2hlbiB0aGV5IGFyZSBnZW5lcmF0ZWQpIGF0IGFjY2Vw
dGFibGUgcGxhY2VzIHRvIGZpdCB3aXRoaW4gODAgY29sdW1ucyBhbmQgaW5kZW50IHRoZSBjb250
aW51YXRpb24gbGluZXMgY29ycmVjdGx5LgorICAqIFRoZSBmb3JtYXQgaXMgaHVtYW4tcmVhZGFi
bGUgYW5kIG1vcmUgY29uY2lzZSB0aGFuIFhNTC4KKyAgKiBUaGUgZm9ybWF0IHdvcmtzIHJlbGF0
aXZlbHkgd2VsbCB3aXRoIEVtYWNzJyBDKysgbW9kZS4KKworIyMgRXhhbXBsZXMgIyMKKworVGhl
IGZvbGxvd2luZyBQdW1wIGNvZGUgKHdoZXJlIG1ldGEga2V5d29yZHMgc3RhcnQgd2l0aCBgJGAs
IGBbW2AgYW5kIGBdXWAgYXJlIG1ldGEgYnJhY2tldHMsIGFuZCBgJCRgIHN0YXJ0cyBhIG1ldGEg
Y29tbWVudCB0aGF0IGVuZHMgd2l0aCB0aGUgbGluZSk6CisKK2BgYAorJHZhciBuID0gMyAgICAg
JCQgRGVmaW5lcyBhIG1ldGEgdmFyaWFibGUgbi4KKyRyYW5nZSBpIDAuLm4gICQkIERlY2xhcmVz
IHRoZSByYW5nZSBvZiBtZXRhIGl0ZXJhdG9yIGkgKGluY2x1c2l2ZSkuCiskZm9yIGkgW1sKKyAg
ICAgICAgICAgICAgICQkIE1ldGEgbG9vcC4KKy8vIEZvbyRpIGRvZXMgYmxhaCBmb3IgJGktYXJ5
IHByZWRpY2F0ZXMuCiskcmFuZ2UgaiAxLi5pCit0ZW1wbGF0ZSA8c2l6ZV90IE4gJGZvciBqIFtb
LCB0eXBlbmFtZSBBJGpdXT4KK2NsYXNzIEZvbyRpIHsKKyRpZiBpID09IDAgW1sKKyAgYmxhaCBh
OworXV0gJGVsaWYgaSA8PSAyIFtbCisgIGJsYWggYjsKK11dICRlbHNlIFtbCisgIGJsYWggYzsK
K11dCit9OworCitdXQorYGBgCisKK3dpbGwgYmUgdHJhbnNsYXRlZCBieSB0aGUgUHVtcCBjb21w
aWxlciB0bzoKKworYGBgCisvLyBGb28wIGRvZXMgYmxhaCBmb3IgMC1hcnkgcHJlZGljYXRlcy4K
K3RlbXBsYXRlIDxzaXplX3QgTj4KK2NsYXNzIEZvbzAgeworICBibGFoIGE7Cit9OworCisvLyBG
b28xIGRvZXMgYmxhaCBmb3IgMS1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwg
dHlwZW5hbWUgQTE+CitjbGFzcyBGb28xIHsKKyAgYmxhaCBiOworfTsKKworLy8gRm9vMiBkb2Vz
IGJsYWggZm9yIDItYXJ5IHByZWRpY2F0ZXMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1l
IEExLCB0eXBlbmFtZSBBMj4KK2NsYXNzIEZvbzIgeworICBibGFoIGI7Cit9OworCisvLyBGb28z
IGRvZXMgYmxhaCBmb3IgMy1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlw
ZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMz4KK2NsYXNzIEZvbzMgeworICBibGFo
IGM7Cit9OworYGBgCisKK0luIGFub3RoZXIgZXhhbXBsZSwKKworYGBgCiskcmFuZ2UgaSAxLi5u
CitGdW5jKCRmb3IgaSArIFtbYSRpXV0pOworJCQgVGhlIHRleHQgYmV0d2VlbiBpIGFuZCBbWyBp
cyB0aGUgc2VwYXJhdG9yIGJldHdlZW4gaXRlcmF0aW9ucy4KK2BgYAorCit3aWxsIGdlbmVyYXRl
IG9uZSBvZiB0aGUgZm9sbG93aW5nIGxpbmVzICh3aXRob3V0IHRoZSBjb21tZW50cyksIGRlcGVu
ZGluZyBvbiB0aGUgdmFsdWUgb2YgYG5gOgorCitgYGAKK0Z1bmMoKTsgICAgICAgICAgICAgIC8v
IElmIG4gaXMgMC4KK0Z1bmMoYTEpOyAgICAgICAgICAgIC8vIElmIG4gaXMgMS4KK0Z1bmMoYTEg
KyBhMik7ICAgICAgIC8vIElmIG4gaXMgMi4KK0Z1bmMoYTEgKyBhMiArIGEzKTsgIC8vIElmIG4g
aXMgMy4KKy8vIEFuZCBzbyBvbi4uLgorYGBgCisKKyMjIENvbnN0cnVjdHMgIyMKKworV2Ugc3Vw
cG9ydCB0aGUgZm9sbG93aW5nIG1ldGEgcHJvZ3JhbW1pbmcgY29uc3RydWN0czoKKworfCBgJHZh
ciBpZCA9IGV4cGAgfCBEZWZpbmVzIGEgbmFtZWQgY29uc3RhbnQgdmFsdWUuIGAkaWRgIGlzIHZh
bGlkIHV0aWwgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBtZXRhIGxleGljYWwgYmxvY2suIHwKK3w6
LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18
Cit8ICRyYW5nZSBpZCBleHAuLmV4cCB8IFNldHMgdGhlIHJhbmdlIG9mIGFuIGl0ZXJhdGlvbiB2
YXJpYWJsZSwgd2hpY2ggY2FuIGJlIHJldXNlZCBpbiBtdWx0aXBsZSBsb29wcyBsYXRlci4gICAg
ICAgICAgfAorfCAkZm9yIGlkIHNlcCBbW2NvZGUgXSgubWQpXSB8IEl0ZXJhdGlvbi4gVGhlIHJh
bmdlIG9mIGBpZGAgbXVzdCBoYXZlIGJlZW4gZGVmaW5lZCBlYXJsaWVyLiBgJGlkYCBpcyB2YWxp
ZCBpbiBgY29kZWAuICAgICAgICAgfAorfCBgJCgkKWAgICAgICAgICAgfCBHZW5lcmF0ZXMgYSBz
aW5nbGUgYCRgIGNoYXJhY3Rlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYCRpZGAgICAgICAgICAgIHwgVmFsdWUgb2Yg
dGhlIG5hbWVkIGNvbnN0YW50IG9yIGl0ZXJhdGlvbiB2YXJpYWJsZS4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGAkKGV4cClgICAgICAgICB8IFZhbHVl
IG9mIHRoZSBleHByZXNzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgJGlmIGV4cCBbWyBjb2RlIF1d
IGVsc2VfYnJhbmNoYCB8IENvbmRpdGlvbmFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
fCBgW1sgY29kZSBdXWAgICAgfCBNZXRhIGxleGljYWwgYmxvY2suICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKK3wgYGNwcF9jb2RlYCAgICAgIHwgUmF3IEMrKyBjb2RlLiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8Cit8IGAkJCBjb21tZW50YCAgICB8IE1ldGEgY29tbWVudC4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorCisqKk5vdGU6KiogVG8gZ2l2ZSB0aGUgdXNlciBzb21lIGZyZWVkb20gaW4g
Zm9ybWF0dGluZyB0aGUgUHVtcCBzb3VyY2UKK2NvZGUsIFB1bXAgaWdub3JlcyBhIG5ldy1saW5l
IGNoYXJhY3RlciBpZiBpdCdzIHJpZ2h0IGFmdGVyIGAkZm9yIGZvb2AKK29yIG5leHQgdG8gYFtb
YCBvciBgXV1gLiBXaXRob3V0IHRoaXMgcnVsZSB5b3UnbGwgb2Z0ZW4gYmUgZm9yY2VkIHRvIHdy
aXRlCit2ZXJ5IGxvbmcgbGluZXMgdG8gZ2V0IHRoZSBkZXNpcmVkIG91dHB1dC4gVGhlcmVmb3Jl
IHNvbWV0aW1lcyB5b3UgbWF5CituZWVkIHRvIGluc2VydCBhbiBleHRyYSBuZXctbGluZSBpbiBz
dWNoIHBsYWNlcyBmb3IgYSBuZXctbGluZSB0byBzaG93Cit1cCBpbiB5b3VyIG91dHB1dC4KKwor
IyMgR3JhbW1hciAjIworCitgYGAKK2NvZGUgOjo9IGF0b21pY19jb2RlKgorYXRvbWljX2NvZGUg
Ojo9ICR2YXIgaWQgPSBleHAKKyAgICB8ICR2YXIgaWQgPSBbWyBjb2RlIF1dCisgICAgfCAkcmFu
Z2UgaWQgZXhwLi5leHAKKyAgICB8ICRmb3IgaWQgc2VwIFtbIGNvZGUgXV0KKyAgICB8ICQoJCkK
KyAgICB8ICRpZAorICAgIHwgJChleHApCisgICAgfCAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9i
cmFuY2gKKyAgICB8IFtbIGNvZGUgXV0KKyAgICB8IGNwcF9jb2RlCitzZXAgOjo9IGNwcF9jb2Rl
IHwgZW1wdHlfc3RyaW5nCitlbHNlX2JyYW5jaCA6Oj0gJGVsc2UgW1sgY29kZSBdXQorICAgIHwg
JGVsaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2gKKyAgICB8IGVtcHR5X3N0cmluZworZXhw
IDo6PSBzaW1wbGVfZXhwcmVzc2lvbl9pbl9QeXRob25fc3ludGF4CitgYGAKKworIyMgQ29kZSAj
IworCitZb3UgY2FuIGZpbmQgdGhlIHNvdXJjZSBjb2RlIG9mIFB1bXAgaW4gW3NjcmlwdHMvcHVt
cC5weV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvc291cmNlL2Jyb3dzZS90
cnVuay9zY3JpcHRzL3B1bXAucHkpLiBJdCBpcyBzdGlsbAordmVyeSB1bnBvbGlzaGVkIGFuZCBs
YWNrcyBhdXRvbWF0ZWQgdGVzdHMsIGFsdGhvdWdoIGl0IGhhcyBiZWVuCitzdWNjZXNzZnVsbHkg
dXNlZCBtYW55IHRpbWVzLiBJZiB5b3UgZmluZCBhIGNoYW5jZSB0byB1c2UgaXQgaW4geW91cgor
cHJvamVjdCwgcGxlYXNlIGxldCB1cyBrbm93IHdoYXQgeW91IHRoaW5rISAgV2UgYWxzbyB3ZWxj
b21lIGhlbHAgb24KK2ltcHJvdmluZyBQdW1wLgorCisjIyBSZWFsIEV4YW1wbGVzICMjCisKK1lv
dSBjYW4gZmluZCByZWFsLXdvcmxkIGFwcGxpY2F0aW9ucyBvZiBQdW1wIGluIFtHb29nbGUgVGVz
dF0oaHR0cDovL3d3dy5nb29nbGUuY29tL2NvZGVzZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3Bh
Y2thZ2UlM0FodHRwJTNBJTJGJTJGZ29vZ2xldGVzdFwuZ29vZ2xlY29kZVwuY29tKSBhbmQgW0dv
b2dsZSBNb2NrXShodHRwOi8vd3d3Lmdvb2dsZS5jb20vY29kZXNlYXJjaD9xPWZpbGUlM0FcLnB1
bXAlMjQrcGFja2FnZSUzQWh0dHAlM0ElMkYlMkZnb29nbGVtb2NrXC5nb29nbGVjb2RlXC5jb20p
LiAgVGhlIHNvdXJjZSBmaWxlIGBmb28uaC5wdW1wYCBnZW5lcmF0ZXMgYGZvby5oYC4KKworIyMg
VGlwcyAjIworCisgICogSWYgYSBtZXRhIHZhcmlhYmxlIGlzIGZvbGxvd2VkIGJ5IGEgbGV0dGVy
IG9yIGRpZ2l0LCB5b3UgY2FuIHNlcGFyYXRlIHRoZW0gdXNpbmcgYFtbXV1gLCB3aGljaCBpbnNl
cnRzIGFuIGVtcHR5IHN0cmluZy4gRm9yIGV4YW1wbGUgYEZvbyRqW1tdXUhlbHBlcmAgZ2VuZXJh
dGUgYEZvbzFIZWxwZXJgIHdoZW4gYGpgIGlzIDEuCisgICogVG8gYXZvaWQgZXh0cmEtbG9uZyBQ
dW1wIHNvdXJjZSBsaW5lcywgeW91IGNhbiBicmVhayBhIGxpbmUgYW55d2hlcmUgeW91IHdhbnQg
YnkgaW5zZXJ0aW5nIGBbW11dYCBmb2xsb3dlZCBieSBhIG5ldyBsaW5lLiBTaW5jZSBhbnkgbmV3
LWxpbmUgY2hhcmFjdGVyIG5leHQgdG8gYFtbYCBvciBgXV1gIGlzIGlnbm9yZWQsIHRoZSBnZW5l
cmF0ZWQgY29kZSB3b24ndCBjb250YWluIHRoaXMgbmV3IGxpbmUuClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV81
X1hjb2RlR3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzVfWGNvZGVH
dWlkZS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iZjI0YmY1MWJmYzQ1NDEyZjY1OGJkZGQ1M2EzMzJlMTQ5ZDc3
MzA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV81
X1hjb2RlR3VpZGUubWQKQEAgLTAsMCArMSw5MyBAQAorCisKK1RoaXMgZ3VpZGUgd2lsbCBleHBs
YWluIGhvdyB0byB1c2UgdGhlIEdvb2dsZSBUZXN0aW5nIEZyYW1ld29yayBpbiB5b3VyIFhjb2Rl
IHByb2plY3RzIG9uIE1hYyBPUyBYLiBUaGlzIHR1dG9yaWFsIGJlZ2lucyBieSBxdWlja2x5IGV4
cGxhaW5pbmcgd2hhdCB0byBkbyBmb3IgZXhwZXJpZW5jZWQgdXNlcnMuIEFmdGVyIHRoZSBxdWlj
ayBzdGFydCwgdGhlIGd1aWRlIGdvZXMgcHJvdmlkZXMgYWRkaXRpb25hbCBleHBsYW5hdGlvbiBh
Ym91dCBlYWNoIHN0ZXAuCisKKyMgUXVpY2sgU3RhcnQgIworCitIZXJlIGlzIHRoZSBxdWljayBn
dWlkZSBmb3IgdXNpbmcgR29vZ2xlIFRlc3QgaW4geW91ciBYY29kZSBwcm9qZWN0LgorCisgIDEu
IERvd25sb2FkIHRoZSBzb3VyY2UgZnJvbSB0aGUgW3dlYnNpdGVdKGh0dHA6Ly9jb2RlLmdvb2ds
ZS5jb20vcC9nb29nbGV0ZXN0KSB1c2luZyB0aGlzIGNvbW1hbmQ6IGBzdm4gY2hlY2tvdXQgaHR0
cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rLyBnb29nbGV0ZXN0LXJlYWQt
b25seWAKKyAgMS4gT3BlbiB1cCB0aGUgYGd0ZXN0Lnhjb2RlcHJvamAgaW4gdGhlIGBnb29nbGV0
ZXN0LXJlYWQtb25seS94Y29kZS9gIGRpcmVjdG9yeSBhbmQgYnVpbGQgdGhlIGd0ZXN0LmZyYW1l
d29yay4KKyAgMS4gQ3JlYXRlIGEgbmV3ICJTaGVsbCBUb29sIiB0YXJnZXQgaW4geW91ciBYY29k
ZSBwcm9qZWN0IGNhbGxlZCBzb21ldGhpbmcgbGlrZSAiVW5pdFRlc3RzIgorICAxLiBBZGQgdGhl
IGd0ZXN0LmZyYW1ld29yayB0byB5b3VyIHByb2plY3QgYW5kIGFkZCBpdCB0byB0aGUgIkxpbmsg
QmluYXJ5IHdpdGggTGlicmFyaWVzIiBidWlsZCBwaGFzZSBvZiAiVW5pdFRlc3RzIgorICAxLiBB
ZGQgeW91ciB1bml0IHRlc3Qgc291cmNlIGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJjZXMiIGJ1
aWxkIHBoYXNlIG9mICJVbml0VGVzdHMiCisgIDEuIEVkaXQgdGhlICJVbml0VGVzdHMiIGV4ZWN1
dGFibGUgYW5kIGFkZCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lZCAiRFlMRFxfRlJBTUVX
T1JLXF9QQVRIIiB3aXRoIGEgdmFsdWUgZXF1YWwgdG8gdGhlIHBhdGggdG8gdGhlIGZyYW1ld29y
ayBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsgcmVsYXRpdmUgdG8gdGhlIGNvbXBpbGVk
IGV4ZWN1dGFibGUuCisgIDEuIEJ1aWxkIGFuZCBHbworCitUaGUgZm9sbG93aW5nIHNlY3Rpb25z
IGZ1cnRoZXIgZXhwbGFpbiBlYWNoIG9mIHRoZSBzdGVwcyBsaXN0ZWQgYWJvdmUgaW4gZGVwdGgs
IGRlc2NyaWJpbmcgaW4gbW9yZSBkZXRhaWwgaG93IHRvIGNvbXBsZXRlIGl0IGluY2x1ZGluZyBz
b21lIHZhcmlhdGlvbnMuCisKKyMgR2V0IHRoZSBTb3VyY2UgIworCitDdXJyZW50bHksIHRoZSBn
dGVzdC5mcmFtZXdvcmsgZGlzY3Vzc2VkIGhlcmUgaXNuJ3QgYXZhaWxhYmxlIGluIGEgdGFnZ2Vk
IHJlbGVhc2Ugb2YgR29vZ2xlIFRlc3QsIGl0IGlzIG9ubHkgYXZhaWxhYmxlIGluIHRoZSB0cnVu
ay4gQXMgZXhwbGFpbmVkIGF0IHRoZSBHb29nbGUgVGVzdCBbc2l0ZV0oaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wL2dvb2dsZXRlc3Qvc291cmNlL2NoZWNrb3V0Ij5zdm4pLCB5b3UgY2FuIGdldCB0
aGUgY29kZSBmcm9tIGFub255bW91cyBTVk4gd2l0aCB0aGlzIGNvbW1hbmQ6CisKK2BgYAorc3Zu
IGNoZWNrb3V0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay8gZ29v
Z2xldGVzdC1yZWFkLW9ubHkKK2BgYAorCitBbHRlcm5hdGl2ZWx5LCBpZiB5b3UgYXJlIHdvcmtp
bmcgd2l0aCBTdWJ2ZXJzaW9uIGluIHlvdXIgb3duIGNvZGUgYmFzZSwgeW91IGNhbiBhZGQgR29v
Z2xlIFRlc3QgYXMgYW4gZXh0ZXJuYWwgZGVwZW5kZW5jeSB0byB5b3VyIG93biBTdWJ2ZXJzaW9u
IHJlcG9zaXRvcnkuIEJ5IGZvbGxvd2luZyB0aGlzIGFwcHJvYWNoLCBldmVyeW9uZSB0aGF0IGNo
ZWNrcyBvdXQgeW91ciBzdm4gcmVwb3NpdG9yeSB3aWxsIGFsc28gcmVjZWl2ZSBhIGNvcHkgb2Yg
R29vZ2xlIFRlc3QgKGEgc3BlY2lmaWMgdmVyc2lvbiwgaWYgeW91IHdpc2gpIHdpdGhvdXQgaGF2
aW5nIHRvIGNoZWNrIGl0IG91dCBleHBsaWNpdGx5LiBUaGlzIG1ha2VzIHRoZSBzZXQgdXAgb2Yg
eW91ciBwcm9qZWN0IHNpbXBsZXIgYW5kIHJlZHVjZXMgdGhlIGNvcGllZCBjb2RlIGluIHRoZSBy
ZXBvc2l0b3J5LgorCitUbyB1c2UgYHN2bjpleHRlcm5hbHNgLCBkZWNpZGUgd2hlcmUgeW91IHdv
dWxkIGxpa2UgdG8gaGF2ZSB0aGUgZXh0ZXJuYWwgc291cmNlIHJlc2lkZS4gWW91IG1pZ2h0IGNo
b29zZSB0byBwdXQgdGhlIGV4dGVybmFsIHNvdXJjZSBpbnNpZGUgdGhlIHRydW5rLCBiZWNhdXNl
IHlvdSB3YW50IGl0IHRvIGJlIHBhcnQgb2YgdGhlIGJyYW5jaCB3aGVuIHlvdSBtYWtlIGEgcmVs
ZWFzZS4gSG93ZXZlciwga2VlcGluZyBpdCBvdXRzaWRlIHRoZSB0cnVuayBpbiBhIHZlcnNpb24t
dGFnZ2VkIGRpcmVjdG9yeSBjYWxsZWQgc29tZXRoaW5nIGxpa2UgYHRoaXJkLXBhcnR5L2dvb2ds
ZXRlc3QvMS4wLjFgLCBpcyBhbm90aGVyIG9wdGlvbi4gT25jZSB0aGUgbG9jYXRpb24gaXMgZXN0
YWJsaXNoZWQsIHVzZSBgc3ZuIHByb3BlZGl0IHN2bjpleHRlcm5hbHMgX2RpcmVjdG9yeV9gIHRv
IHNldCB0aGUgc3ZuOmV4dGVybmFscyBwcm9wZXJ0eSBvbiBhIGRpcmVjdG9yeSBpbiB5b3VyIHJl
cG9zaXRvcnkuIFRoaXMgZGlyZWN0b3J5IHdvbid0IGNvbnRhaW4gdGhlIGNvZGUsIGJ1dCBiZSBp
dHMgdmVyc2lvbmVkIHBhcmVudCBkaXJlY3RvcnkuCisKK1RoZSBjb21tYW5kIGBzdm4gcHJvcGVk
aXRgIHdpbGwgYnJpbmcgdXAgeW91ciBTdWJ2ZXJzaW9uIGVkaXRvciwgbWFraW5nIGVkaXRpbmcg
dGhlIGxvbmcsIChwb3RlbnRpYWxseSBtdWx0aS1saW5lKSBwcm9wZXJ0eSBzaW1wbGVyLiBUaGlz
IHNhbWUgbWV0aG9kIGNhbiBiZSB1c2VkIHRvIGNoZWNrIG91dCBhIHRhZ2dlZCBicmFuY2gsIGJ5
IHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBVUkwgKGUuZy4gYGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2ds
ZWNvZGUuY29tL3N2bi90YWdzL3JlbGVhc2UtMS4wLjFgKS4gQWRkaXRpb25hbGx5LCB0aGUgc3Zu
OmV4dGVybmFscyBwcm9wZXJ0eSBhbGxvd3MgdGhlIHNwZWNpZmljYXRpb24gb2YgYSBwYXJ0aWN1
bGFyIHJldmlzaW9uIG9mIHRoZSB0cnVuayB3aXRoIHRoZSBgLXJfIyNfYCBvcHRpb24gKGUuZy4g
YGV4dGVybmFscy9zcmMvZ29vZ2xldGVzdCAtcjYwIGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNv
ZGUuY29tL3N2bi90cnVua2ApLgorCitIZXJlIGlzIGFuIGV4YW1wbGUgb2YgdXNpbmcgdGhlIHN2
bjpleHRlcm5hbHMgcHJvcGVydGllcyBvbiBhIHRydW5rIChyZWFkIHZpYSBgc3ZuIHByb3BnZXRg
KSBvZiBhIHByb2plY3QuIFRoaXMgdmFsdWUgY2hlY2tzIG91dCBhIGNvcHkgb2YgR29vZ2xlIFRl
c3QgaW50byB0aGUgYHRydW5rL2V4dGVybmFscy9zcmMvZ29vZ2xldGVzdC9gIGRpcmVjdG9yeS4K
KworYGBgCitbQ29tcHV0ZXI6c3ZuXSB1c2VyJCBzdm4gcHJvcGdldCBzdm46ZXh0ZXJuYWxzIHRy
dW5rCitleHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QgaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29k
ZS5jb20vc3ZuL3RydW5rCitgYGAKKworIyBBZGQgdGhlIEZyYW1ld29yayB0byBZb3VyIFByb2pl
Y3QgIworCitUaGUgbmV4dCBzdGVwIGlzIHRvIGJ1aWxkIGFuZCBhZGQgdGhlIGd0ZXN0LmZyYW1l
d29yayB0byB5b3VyIG93biBwcm9qZWN0LiBUaGlzIGd1aWRlIGRlc2NyaWJlcyB0d28gY29tbW9u
IHdheXMgYmVsb3cuCisKKyAgKiAqKk9wdGlvbiAxKiogLS0tIFRoZSBzaW1wbGVzdCB3YXkgdG8g
YWRkIEdvb2dsZSBUZXN0IHRvIHlvdXIgb3duIHByb2plY3QsIGlzIHRvIG9wZW4gZ3Rlc3QueGNv
ZGVwcm9qIChmb3VuZCBpbiB0aGUgeGNvZGUvIGRpcmVjdG9yeSBvZiB0aGUgR29vZ2xlIFRlc3Qg
dHJ1bmspIGFuZCBidWlsZCB0aGUgZnJhbWV3b3JrIG1hbnVhbGx5LiBUaGVuLCBhZGQgdGhlIGJ1
aWx0IGZyYW1ld29yayBpbnRvIHlvdXIgcHJvamVjdCB1c2luZyB0aGUgIkFkZC0+RXhpc3Rpbmcg
RnJhbWV3b3JrLi4uIiBmcm9tIHRoZSBjb250ZXh0IG1lbnUgb3IgIlByb2plY3QtPkFkZC4uLiIg
ZnJvbSB0aGUgbWFpbiBtZW51LiBUaGUgZ3Rlc3QuZnJhbWV3b3JrIGlzIHJlbG9jYXRhYmxlIGFu
ZCBjb250YWlucyB0aGUgaGVhZGVycyBhbmQgb2JqZWN0IGNvZGUgdGhhdCB5b3UnbGwgbmVlZCB0
byBtYWtlIHRlc3RzLiBUaGlzIG1ldGhvZCByZXF1aXJlcyByZWJ1aWxkaW5nIGV2ZXJ5IHRpbWUg
eW91IHVwZ3JhZGUgR29vZ2xlIFRlc3QgaW4geW91ciBwcm9qZWN0LgorICAqICoqT3B0aW9uIDIq
KiAtLS0gSWYgeW91IGFyZSBnb2luZyB0byBiZSBsaXZpbmcgb2ZmIHRoZSB0cnVuayBvZiBHb29n
bGUgVGVzdCwgaW5jb3Jwb3JhdGluZyBpdHMgbGF0ZXN0IGZlYXR1cmVzIGludG8geW91ciB1bml0
IHRlc3RzIChvciBhcmUgYSBHb29nbGUgVGVzdCBkZXZlbG9wZXIgeW91cnNlbGYpLiBZb3UnbGwg
d2FudCB0byByZWJ1aWxkIHRoZSBmcmFtZXdvcmsgZXZlcnkgdGltZSB0aGUgc291cmNlIHVwZGF0
ZXMuIHRvIGRvIHRoaXMsIHlvdSdsbCBuZWVkIHRvIGFkZCB0aGUgZ3Rlc3QueGNvZGVwcm9qIGZp
bGUsIG5vdCB0aGUgZnJhbWV3b3JrIGl0c2VsZiwgdG8geW91ciBvd24gWGNvZGUgcHJvamVjdC4g
VGhlbiwgZnJvbSB0aGUgYnVpbGQgcHJvZHVjdHMgdGhhdCBhcmUgcmV2ZWFsZWQgYnkgdGhlIHBy
b2plY3QncyBkaXNjbG9zdXJlIHRyaWFuZ2xlLCB5b3UgY2FuIGZpbmQgdGhlIGd0ZXN0LmZyYW1l
d29yaywgd2hpY2ggY2FuIGJlIGFkZGVkIHRvIHlvdXIgdGFyZ2V0cyAoZGlzY3Vzc2VkIGJlbG93
KS4KKworIyBNYWtlIGEgVGVzdCBUYXJnZXQgIworCitUbyBzdGFydCB3cml0aW5nIHRlc3RzLCBt
YWtlIGEgbmV3ICJTaGVsbCBUb29sIiB0YXJnZXQuIFRoaXMgdGFyZ2V0IHRlbXBsYXRlIGlzIGF2
YWlsYWJsZSB1bmRlciBCU0QsIENvY29hLCBvciBDYXJib24uIEFkZCB5b3VyIHVuaXQgdGVzdCBz
b3VyY2UgY29kZSB0byB0aGUgIkNvbXBpbGUgU291cmNlcyIgYnVpbGQgcGhhc2Ugb2YgdGhlIHRh
cmdldC4KKworTmV4dCwgeW91J2xsIHdhbnQgdG8gYWRkIGd0ZXN0LmZyYW1ld29yayBpbiB0d28g
ZGlmZmVyZW50IHdheXMsIGRlcGVuZGluZyB1cG9uIHdoaWNoIG9wdGlvbiB5b3UgY2hvc2UgYWJv
dmUuCisKKyAgKiAqKk9wdGlvbiAxKiogLS0tIER1cmluZyBjb21waWxhdGlvbiwgWGNvZGUgd2ls
bCBuZWVkIHRvIGtub3cgdGhhdCB5b3UgYXJlIGxpbmtpbmcgYWdhaW5zdCB0aGUgZ3Rlc3QuZnJh
bWV3b3JrLiBBZGQgdGhlIGd0ZXN0LmZyYW1ld29yayB0byB0aGUgIkxpbmsgQmluYXJ5IHdpdGgg
TGlicmFyaWVzIiBidWlsZCBwaGFzZSBvZiB5b3VyIHRlc3QgdGFyZ2V0LiBUaGlzIHdpbGwgaW5j
bHVkZSB0aGUgR29vZ2xlIFRlc3QgaGVhZGVycyBpbiB5b3VyIGhlYWRlciBzZWFyY2ggcGF0aCwg
YW5kIHdpbGwgdGVsbCB0aGUgbGlua2VyIHdoZXJlIHRvIGZpbmQgdGhlIGxpYnJhcnkuCisgICog
KipPcHRpb24gMioqIC0tLSBJZiB5b3VyIHdvcmtpbmcgb3V0IG9mIHRoZSB0cnVuaywgeW91J2xs
IGFsc28gd2FudCB0byBhZGQgZ3Rlc3QuZnJhbWV3b3JrIHRvIHlvdXIgIkxpbmsgQmluYXJ5IHdp
dGggTGlicmFyaWVzIiBidWlsZCBwaGFzZSBvZiB5b3VyIHRlc3QgdGFyZ2V0LiBJbiBhZGRpdGlv
biwgeW91J2xsICB3YW50IHRvIGFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIGFzIGEgZGVwZW5kZW5j
eSB0byB5b3VyIHVuaXQgdGVzdCB0YXJnZXQuIFRoaXMgd2F5LCBYY29kZSB3aWxsIG1ha2Ugc3Vy
ZSB0aGF0IGd0ZXN0LmZyYW1ld29yayBpcyB1cCB0byBkYXRlLCBldmVyeSB0aW1lIHlvdXIgYnVp
bGQgeW91ciB0YXJnZXQuIEZpbmFsbHksIGlmIHlvdSBkb24ndCBzaGFyZSBidWlsZCBkaXJlY3Rv
cmllcyB3aXRoIEdvb2dsZSBUZXN0LCB5b3UnbGwgaGF2ZSB0byBjb3B5IHRoZSBndGVzdC5mcmFt
ZXdvcmsgaW50byB5b3VyIG93biBidWlsZCBwcm9kdWN0cyBkaXJlY3RvcnkgdXNpbmcgYSAiUnVu
IFNjcmlwdCIgYnVpbGQgcGhhc2UuCisKKyMgU2V0IFVwIHRoZSBFeGVjdXRhYmxlIFJ1biBFbnZp
cm9ubWVudCAjCisKK1NpbmNlIHRoZSB1bml0IHRlc3QgZXhlY3V0YWJsZSBpcyBhIHNoZWxsIHRv
b2wsIGl0IGRvZXNuJ3QgaGF2ZSBhIGJ1bmRsZSB3aXRoIGEgYENvbnRlbnRzL0ZyYW1ld29ya3Ng
IGRpcmVjdG9yeSwgaW4gd2hpY2ggdG8gcGxhY2UgZ3Rlc3QuZnJhbWV3b3JrLiBJbnN0ZWFkLCB0
aGUgZHluYW1pYyBsaW5rZXIgbXVzdCBiZSB0b2xkIGF0IHJ1bnRpbWUgdG8gc2VhcmNoIGZvciB0
aGUgZnJhbWV3b3JrIGluIGFub3RoZXIgbG9jYXRpb24uIFRoaXMgY2FuIGJlIGFjY29tcGxpc2hl
ZCBieSBzZXR0aW5nIHRoZSAiRFlMRFxfRlJBTUVXT1JLXF9QQVRIIiBlbnZpcm9ubWVudCB2YXJp
YWJsZSBpbiB0aGUgIkVkaXQgQWN0aXZlIEV4ZWN1dGFibGUgLi4uIiBBcmd1bWVudHMgdGFiLCB1
bmRlciAiVmFyaWFibGVzIHRvIGJlIHNldCBpbiB0aGUgZW52aXJvbm1lbnQ6Ii4gVGhlIHBhdGgg
Zm9yIHRoaXMgdmFsdWUgaXMgdGhlIHBhdGggKHJlbGF0aXZlIG9yIGFic29sdXRlKSBvZiB0aGUg
ZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGd0ZXN0LmZyYW1ld29yay4KKworSWYgeW91IGhhdmVu
J3Qgc2V0IHVwIHRoZSBEWUxEXF9GUkFNRVdPUktcX1BBVEgsIGNvcnJlY3RseSwgeW91IG1pZ2h0
IGdldCBhIG1lc3NhZ2UgbGlrZSB0aGlzOgorCitgYGAKK1tTZXNzaW9uIHN0YXJ0ZWQgYXQgMjAw
OC0wOC0xNSAwNjoyMzo1NyAtMDYwMC5dCisgIGR5bGQ6IExpYnJhcnkgbm90IGxvYWRlZDogQGxv
YWRlcl9wYXRoLy4uL0ZyYW1ld29ya3MvZ3Rlc3QuZnJhbWV3b3JrL1ZlcnNpb25zL0EvZ3Rlc3QK
KyAgICBSZWZlcmVuY2VkIGZyb206IC9Vc2Vycy91c2VybmFtZS9Eb2N1bWVudHMvU2FuZGJveC9n
dGVzdFNhbXBsZS9idWlsZC9EZWJ1Zy9XaWRnZXRGcmFtZXdvcmtUZXN0CisgICAgUmVhc29uOiBp
bWFnZSBub3QgZm91bmQKK2BgYAorCitUbyBjb3JyZWN0IHRoaXMgcHJvYmxlbSwgZ290IHRvIHRo
ZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZXhlY3V0YWJsZSBuYW1lZCBpbiAiUmVmZXJlbmNl
ZCBmcm9tOiIgdmFsdWUgaW4gdGhlIGVycm9yIG1lc3NhZ2UgYWJvdmUuIFRoZW4sIHdpdGggdGhl
IHRlcm1pbmFsIGluIHRoaXMgbG9jYXRpb24sIGZpbmQgdGhlIHJlbGF0aXZlIHBhdGggdG8gdGhl
IGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsuIFRoYXQgaXMgdGhlIHZh
bHVlIHlvdSdsbCBuZWVkIHRvIHNldCBhcyB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRILgorCisj
IEJ1aWxkIGFuZCBHbyAjCisKK05vdywgd2hlbiB5b3UgY2xpY2sgIkJ1aWxkIGFuZCBHbyIsIHRo
ZSB0ZXN0IHdpbGwgYmUgZXhlY3V0ZWQuIER1bXBpbmcgb3V0IHNvbWV0aGluZyBsaWtlIHRoaXM6
CisKK2BgYAorW1Nlc3Npb24gc3RhcnRlZCBhdCAyMDA4LTA4LTA2IDA2OjM2OjEzIC0wNjAwLl0K
K1s9PT09PT09PT09XSBSdW5uaW5nIDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZS4KK1stLS0tLS0t
LS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCitbLS0tLS0tLS0tLV0gMiB0ZXN0
cyBmcm9tIFdpZGdldEluaXRpYWxpemVyVGVzdAorWyBSVU4gICAgICBdIFdpZGdldEluaXRpYWxp
emVyVGVzdC5UZXN0Q29uc3RydWN0b3IKK1sgICAgICAgT0sgXSBXaWRnZXRJbml0aWFsaXplclRl
c3QuVGVzdENvbnN0cnVjdG9yCitbIFJVTiAgICAgIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRl
c3RDb252ZXJzaW9uCitbICAgICAgIE9LIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb252
ZXJzaW9uCitbLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCitb
PT09PT09PT09PV0gMiB0ZXN0cyBmcm9tIDEgdGVzdCBjYXNlIHJhbi4KK1sgIFBBU1NFRCAgXSAy
IHRlc3RzLgorCitUaGUgRGVidWdnZXIgaGFzIGV4aXRlZCB3aXRoIHN0YXR1cyAwLiAgCitgYGAK
KworIyBTdW1tYXJ5ICMKKworVW5pdCB0ZXN0aW5nIGlzIGEgdmFsdWFibGUgd2F5IHRvIGVuc3Vy
ZSB5b3VyIGRhdGEgbW9kZWwgc3RheXMgdmFsaWQgZXZlbiBkdXJpbmcgcmFwaWQgZGV2ZWxvcG1l
bnQgb3IgcmVmYWN0b3JpbmcuIFRoZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaXMgYSBncmVh
dCB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIGZvciBDIGFuZCBDKysgd2hpY2ggaW50ZWdyYXRlcyB3
ZWxsIHdpdGggYW4gWGNvZGUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9W
MV82X0FkdmFuY2VkR3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzZf
QWR2YW5jZWRHdWlkZS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODg2NGIxNjY3YzFjNDA3MzMwMDlkMWExNzBj
YzFhYmIxMDA4Nzg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
ZG9jcy9WMV82X0FkdmFuY2VkR3VpZGUubWQKQEAgLTAsMCArMSwyMTc4IEBACisKKworTm93IHRo
YXQgeW91IGhhdmUgcmVhZCBbUHJpbWVyXShWMV82X1ByaW1lci5tZCkgYW5kIGxlYXJuZWQgaG93
IHRvIHdyaXRlIHRlc3RzCit1c2luZyBHb29nbGUgVGVzdCwgaXQncyB0aW1lIHRvIGxlYXJuIHNv
bWUgbmV3IHRyaWNrcy4gVGhpcyBkb2N1bWVudAord2lsbCBzaG93IHlvdSBtb3JlIGFzc2VydGlv
bnMgYXMgd2VsbCBhcyBob3cgdG8gY29uc3RydWN0IGNvbXBsZXgKK2ZhaWx1cmUgbWVzc2FnZXMs
IHByb3BhZ2F0ZSBmYXRhbCBmYWlsdXJlcywgcmV1c2UgYW5kIHNwZWVkIHVwIHlvdXIKK3Rlc3Qg
Zml4dHVyZXMsIGFuZCB1c2UgdmFyaW91cyBmbGFncyB3aXRoIHlvdXIgdGVzdHMuCisKKyMgTW9y
ZSBBc3NlcnRpb25zICMKKworVGhpcyBzZWN0aW9uIGNvdmVycyBzb21lIGxlc3MgZnJlcXVlbnRs
eSB1c2VkLCBidXQgc3RpbGwgc2lnbmlmaWNhbnQsCithc3NlcnRpb25zLgorCisjIyBFeHBsaWNp
dCBTdWNjZXNzIGFuZCBGYWlsdXJlICMjCisKK1RoZXNlIHRocmVlIGFzc2VydGlvbnMgZG8gbm90
IGFjdHVhbGx5IHRlc3QgYSB2YWx1ZSBvciBleHByZXNzaW9uLiBJbnN0ZWFkLAordGhleSBnZW5l
cmF0ZSBhIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBkaXJlY3RseS4gTGlrZSB0aGUgbWFjcm9zIHRoYXQg
YWN0dWFsbHkKK3BlcmZvcm0gYSB0ZXN0LCB5b3UgbWF5IHN0cmVhbSBhIGN1c3RvbSBmYWlsdXJl
IG1lc3NhZ2UgaW50byB0aGUgdGhlbS4KKworfCBgU1VDQ0VFRCgpO2AgfAorfDotLS0tLS0tLS0t
LS0tfAorCitHZW5lcmF0ZXMgYSBzdWNjZXNzLiBUaGlzIGRvZXMgTk9UIG1ha2UgdGhlIG92ZXJh
bGwgdGVzdCBzdWNjZWVkLiBBIHRlc3QgaXMKK2NvbnNpZGVyZWQgc3VjY2Vzc2Z1bCBvbmx5IGlm
IG5vbmUgb2YgaXRzIGFzc2VydGlvbnMgZmFpbCBkdXJpbmcgaXRzIGV4ZWN1dGlvbi4KKworTm90
ZTogYFNVQ0NFRUQoKWAgaXMgcHVyZWx5IGRvY3VtZW50YXJ5IGFuZCBjdXJyZW50bHkgZG9lc24n
dCBnZW5lcmF0ZSBhbnkKK3VzZXItdmlzaWJsZSBvdXRwdXQuIEhvd2V2ZXIsIHdlIG1heSBhZGQg
YFNVQ0NFRUQoKWAgbWVzc2FnZXMgdG8gR29vZ2xlIFRlc3Qncworb3V0cHV0IGluIHRoZSBmdXR1
cmUuCisKK3wgYEZBSUwoKTtgICB8IGBBRERfRkFJTFVSRSgpO2AgfCBgQUREX0ZBSUxVUkVfQVQo
ImBfZmlsZVxfcGF0aF9gIiwgYF9saW5lXF9udW1iZXJfYCk7YCB8Cit8Oi0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfAorCitgRkFJTCgpYCBnZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlLCB3
aGlsZSBgQUREX0ZBSUxVUkUoKWAgYW5kIGBBRERfRkFJTFVSRV9BVCgpYCBnZW5lcmF0ZSBhIG5v
bmZhdGFsCitmYWlsdXJlLiBUaGVzZSBhcmUgdXNlZnVsIHdoZW4gY29udHJvbCBmbG93LCByYXRo
ZXIgdGhhbiBhIEJvb2xlYW4gZXhwcmVzc2lvbiwKK2RldGVyZW1pbmVzIHRoZSB0ZXN0J3Mgc3Vj
Y2VzcyBvciBmYWlsdXJlLiBGb3IgZXhhbXBsZSwgeW91IG1pZ2h0IHdhbnQgdG8gd3JpdGUKK3Nv
bWV0aGluZyBsaWtlOgorCitgYGAKK3N3aXRjaChleHByZXNzaW9uKSB7CisgIGNhc2UgMTogLi4u
IHNvbWUgY2hlY2tzIC4uLgorICBjYXNlIDI6IC4uLiBzb21lIG90aGVyIGNoZWNrcworICAuLi4K
KyAgZGVmYXVsdDogRkFJTCgpIDw8ICJXZSBzaG91bGRuJ3QgZ2V0IGhlcmUuIjsKK30KK2BgYAor
CitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgRXhjZXB0aW9uIEFz
c2VydGlvbnMgIyMKKworVGhlc2UgYXJlIGZvciB2ZXJpZnlpbmcgdGhhdCBhIHBpZWNlIG9mIGNv
ZGUgdGhyb3dzIChvciBkb2VzIG5vdAordGhyb3cpIGFuIGV4Y2VwdGlvbiBvZiB0aGUgZ2l2ZW4g
dHlwZToKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8
ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9USFJPVyhgX3N0YXRlbWVudF8sIF9l
eGNlcHRpb25cX3R5cGVfYCk7YCAgfCBgRVhQRUNUX1RIUk9XKGBfc3RhdGVtZW50XywgX2V4Y2Vw
dGlvblxfdHlwZV9gKTtgICB8IF9zdGF0ZW1lbnRfIHRocm93cyBhbiBleGNlcHRpb24gb2YgdGhl
IGdpdmVuIHR5cGUgIHwKK3wgYEFTU0VSVF9BTllfVEhST1coYF9zdGF0ZW1lbnRfYCk7YCAgICAg
ICAgICAgICAgICB8IGBFWFBFQ1RfQU5ZX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAg
ICAgICAgfCBfc3RhdGVtZW50XyB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIGFueSB0eXBlICAgICAg
ICB8Cit8IGBBU1NFUlRfTk9fVEhST1coYF9zdGF0ZW1lbnRfYCk7YCAgICAgICAgICAgICAgICAg
fCBgRVhQRUNUX05PX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAgIHwgX3N0
YXRlbWVudF8gZG9lc24ndCB0aHJvdyBhbnkgZXhjZXB0aW9uICAgICAgICAgICAgfAorCitFeGFt
cGxlczoKKworYGBgCitBU1NFUlRfVEhST1coRm9vKDUpLCBiYXJfZXhjZXB0aW9uKTsKKworRVhQ
RUNUX05PX1RIUk9XKHsKKyAgaW50IG4gPSA1OworICBCYXIoJm4pOworfSk7CitgYGAKKworX0F2
YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4xLjAuCisK
KyMjIFByZWRpY2F0ZSBBc3NlcnRpb25zIGZvciBCZXR0ZXIgRXJyb3IgTWVzc2FnZXMgIyMKKwor
RXZlbiB0aG91Z2ggR29vZ2xlIFRlc3QgaGFzIGEgcmljaCBzZXQgb2YgYXNzZXJ0aW9ucywgdGhl
eSBjYW4gbmV2ZXIgYmUKK2NvbXBsZXRlLCBhcyBpdCdzIGltcG9zc2libGUgKG5vciBhIGdvb2Qg
aWRlYSkgdG8gYW50aWNpcGF0ZSBhbGwgdGhlIHNjZW5hcmlvcworYSB1c2VyIG1pZ2h0IHJ1biBp
bnRvLiBUaGVyZWZvcmUsIHNvbWV0aW1lcyBhIHVzZXIgaGFzIHRvIHVzZSBgRVhQRUNUX1RSVUUo
KWAKK3RvIGNoZWNrIGEgY29tcGxleCBleHByZXNzaW9uLCBmb3IgbGFjayBvZiBhIGJldHRlciBt
YWNyby4gVGhpcyBoYXMgdGhlIHByb2JsZW0KK29mIG5vdCBzaG93aW5nIHlvdSB0aGUgdmFsdWVz
IG9mIHRoZSBwYXJ0cyBvZiB0aGUgZXhwcmVzc2lvbiwgbWFraW5nIGl0IGhhcmQgdG8KK3VuZGVy
c3RhbmQgd2hhdCB3ZW50IHdyb25nLiBBcyBhIHdvcmthcm91bmQsIHNvbWUgdXNlcnMgY2hvb3Nl
IHRvIGNvbnN0cnVjdCB0aGUKK2ZhaWx1cmUgbWVzc2FnZSBieSB0aGVtc2VsdmVzLCBzdHJlYW1p
bmcgaXQgaW50byBgRVhQRUNUX1RSVUUoKWAuIEhvd2V2ZXIsIHRoaXMKK2lzIGF3a3dhcmQgZXNw
ZWNpYWxseSB3aGVuIHRoZSBleHByZXNzaW9uIGhhcyBzaWRlLWVmZmVjdHMgb3IgaXMgZXhwZW5z
aXZlIHRvCitldmFsdWF0ZS4KKworR29vZ2xlIFRlc3QgZ2l2ZXMgeW91IHRocmVlIGRpZmZlcmVu
dCBvcHRpb25zIHRvIHNvbHZlIHRoaXMgcHJvYmxlbToKKworIyMjIFVzaW5nIGFuIEV4aXN0aW5n
IEJvb2xlYW4gRnVuY3Rpb24gIyMjCisKK0lmIHlvdSBhbHJlYWR5IGhhdmUgYSBmdW5jdGlvbiBv
ciBhIGZ1bmN0b3IgdGhhdCByZXR1cm5zIGBib29sYCAob3IgYSB0eXBlCit0aGF0IGNhbiBiZSBp
bXBsaWNpdGx5IGNvbnZlcnRlZCB0byBgYm9vbGApLCB5b3UgY2FuIHVzZSBpdCBpbiBhIF9wcmVk
aWNhdGUKK2Fzc2VydGlvbl8gdG8gZ2V0IHRoZSBmdW5jdGlvbiBhcmd1bWVudHMgcHJpbnRlZCBm
b3IgZnJlZToKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24q
KiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9QUkVEMShgX3ByZWQxLCB2YWwx
X2ApO2AgICAgICAgfCBgRVhQRUNUX1BSRUQxKGBfcHJlZDEsIHZhbDFfYCk7YCB8IF9wcmVkMSh2
YWwxKV8gcmV0dXJucyB0cnVlIHwKK3wgYEFTU0VSVF9QUkVEMihgX3ByZWQyLCB2YWwxLCB2YWwy
X2ApO2AgfCBgRVhQRUNUX1BSRUQyKGBfcHJlZDIsIHZhbDEsIHZhbDJfYCk7YCB8ICBfcHJlZDIo
dmFsMSwgdmFsMilfIHJldHVybnMgdHJ1ZSB8Cit8ICAuLi4gICAgICAgICAgICAgICAgfCAuLi4g
ICAgICAgICAgICAgICAgICAgIHwgLi4uICAgICAgICAgIHwKKworSW4gdGhlIGFib3ZlLCBfcHJl
ZG5fIGlzIGFuIF9uXy1hcnkgcHJlZGljYXRlIGZ1bmN0aW9uIG9yIGZ1bmN0b3IsIHdoZXJlCitf
dmFsMV8sIF92YWwyXywgLi4uLCBhbmQgX3ZhbG5fIGFyZSBpdHMgYXJndW1lbnRzLiBUaGUgYXNz
ZXJ0aW9uIHN1Y2NlZWRzCitpZiB0aGUgcHJlZGljYXRlIHJldHVybnMgYHRydWVgIHdoZW4gYXBw
bGllZCB0byB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBhbmQgZmFpbHMKK290aGVyd2lzZS4gV2hlbiB0
aGUgYXNzZXJ0aW9uIGZhaWxzLCBpdCBwcmludHMgdGhlIHZhbHVlIG9mIGVhY2ggYXJndW1lbnQu
IEluCitlaXRoZXIgY2FzZSwgdGhlIGFyZ3VtZW50cyBhcmUgZXZhbHVhdGVkIGV4YWN0bHkgb25j
ZS4KKworSGVyZSdzIGFuIGV4YW1wbGUuIEdpdmVuCisKK2BgYAorLy8gUmV0dXJucyB0cnVlIGlm
ZiBtIGFuZCBuIGhhdmUgbm8gY29tbW9uIGRpdmlzb3JzIGV4Y2VwdCAxLgorYm9vbCBNdXR1YWxs
eVByaW1lKGludCBtLCBpbnQgbikgeyAuLi4gfQorY29uc3QgaW50IGEgPSAzOworY29uc3QgaW50
IGIgPSA0OworY29uc3QgaW50IGMgPSAxMDsKK2BgYAorCit0aGUgYXNzZXJ0aW9uIGBFWFBFQ1Rf
UFJFRDIoTXV0dWFsbHlQcmltZSwgYSwgYik7YCB3aWxsIHN1Y2NlZWQsIHdoaWxlIHRoZQorYXNz
ZXJ0aW9uIGBFWFBFQ1RfUFJFRDIoTXV0dWFsbHlQcmltZSwgYiwgYyk7YCB3aWxsIGZhaWwgd2l0
aCB0aGUgbWVzc2FnZQorCis8cHJlPgorIU11dHVhbGx5UHJpbWUoYiwgYykgaXMgZmFsc2UsIHdo
ZXJlPGJyPgorYiBpcyA0PGJyPgorYyBpcyAxMDxicj4KKzwvcHJlPgorCisqKk5vdGVzOioqCisK
KyAgMS4gSWYgeW91IHNlZSBhIGNvbXBpbGVyIGVycm9yICJubyBtYXRjaGluZyBmdW5jdGlvbiB0
byBjYWxsIiB3aGVuIHVzaW5nIGBBU1NFUlRfUFJFRCpgIG9yIGBFWFBFQ1RfUFJFRCpgLCBwbGVh
c2Ugc2VlIFt0aGlzXSh2MV82X0ZBUS5tZCNpdGhlLWNvbXBpbGVyLWNvbXBsYWlucy1hYm91dC11
bmRlZmluZWQtcmVmZXJlbmNlcy10by1zb21lLXN0YXRpYy1jb25zdC1tZW1iZXItdmFyaWFibGVz
LWJ1dC1pLWRpZC1kZWZpbmUtdGhlbS1pbi10aGUtY2xhc3MtYm9keS13aGF0cy13cm9uZykgZm9y
IGhvdyB0byByZXNvbHZlIGl0LgorICAxLiBDdXJyZW50bHkgd2Ugb25seSBwcm92aWRlIHByZWRp
Y2F0ZSBhc3NlcnRpb25zIG9mIGFyaXR5IDw9IDUuIElmIHlvdSBuZWVkIGEgaGlnaGVyLWFyaXR5
IGFzc2VydGlvbiwgbGV0IHVzIGtub3cuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjCisKKyMjIyBVc2luZyBhIEZ1bmN0aW9uIFRoYXQgUmV0dXJucyBhbiBBc3NlcnRpb25S
ZXN1bHQgIyMjCisKK1doaWxlIGBFWFBFQ1RfUFJFRCooKWAgYW5kIGZyaWVuZHMgYXJlIGhhbmR5
IGZvciBhIHF1aWNrIGpvYiwgdGhlCitzeW50YXggaXMgbm90IHNhdGlzZmFjdG9yeTogeW91IGhh
dmUgdG8gdXNlIGRpZmZlcmVudCBtYWNyb3MgZm9yCitkaWZmZXJlbnQgYXJpdGllcywgYW5kIGl0
IGZlZWxzIG1vcmUgbGlrZSBMaXNwIHRoYW4gQysrLiAgVGhlCitgOjp0ZXN0aW5nOjpBc3NlcnRp
b25SZXN1bHRgIGNsYXNzIHNvbHZlcyB0aGlzIHByb2JsZW0uCisKK0FuIGBBc3NlcnRpb25SZXN1
bHRgIG9iamVjdCByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYW4gYXNzZXJ0aW9uCisod2hldGhl
ciBpdCdzIGEgc3VjY2VzcyBvciBhIGZhaWx1cmUsIGFuZCBhbiBhc3NvY2lhdGVkIG1lc3NhZ2Up
LiAgWW91CitjYW4gY3JlYXRlIGFuIGBBc3NlcnRpb25SZXN1bHRgIHVzaW5nIG9uZSBvZiB0aGVz
ZSBmYWN0b3J5CitmdW5jdGlvbnM6CisKK2BgYAorbmFtZXNwYWNlIHRlc3RpbmcgeworCisvLyBS
ZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBhbiBhc3Nl
cnRpb24gaGFzCisvLyBzdWNjZWVkZWQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uU3VjY2Vz
cygpOworCisvLyBSZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUg
dGhhdCBhbiBhc3NlcnRpb24gaGFzCisvLyBmYWlsZWQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0
aW9uRmFpbHVyZSgpOworCit9CitgYGAKKworWW91IGNhbiB0aGVuIHVzZSB0aGUgYDw8YCBvcGVy
YXRvciB0byBzdHJlYW0gbWVzc2FnZXMgdG8gdGhlCitgQXNzZXJ0aW9uUmVzdWx0YCBvYmplY3Qu
CisKK1RvIHByb3ZpZGUgbW9yZSByZWFkYWJsZSBtZXNzYWdlcyBpbiBCb29sZWFuIGFzc2VydGlv
bnMKKyhlLmcuIGBFWFBFQ1RfVFJVRSgpYCksIHdyaXRlIGEgcHJlZGljYXRlIGZ1bmN0aW9uIHRo
YXQgcmV0dXJucworYEFzc2VydGlvblJlc3VsdGAgaW5zdGVhZCBvZiBgYm9vbGAuIEZvciBleGFt
cGxlLCBpZiB5b3UgZGVmaW5lCitgSXNFdmVuKClgIGFzOgorCitgYGAKKzo6dGVzdGluZzo6QXNz
ZXJ0aW9uUmVzdWx0IElzRXZlbihpbnQgbikgeworICBpZiAoKG4gJSAyKSA9PSAwKQorICAgIHJl
dHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKKyAgZWxzZQorICAgIHJldHVybiA6
OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2RkIjsKK30KK2BgYAor
CitpbnN0ZWFkIG9mOgorCitgYGAKK2Jvb2wgSXNFdmVuKGludCBuKSB7CisgIHJldHVybiAobiAl
IDIpID09IDA7Cit9CitgYGAKKwordGhlIGZhaWxlZCBhc3NlcnRpb24gYEVYUEVDVF9UUlVFKElz
RXZlbihGaWIoNCkpKWAgd2lsbCBwcmludDoKKworPHByZT4KK1ZhbHVlIG9mOiAhSXNFdmVuKEZp
Yig0KSk8YnI+CitBY3R1YWw6IGZhbHNlICgqMyBpcyBvZGQqKTxicj4KK0V4cGVjdGVkOiB0cnVl
PGJyPgorPC9wcmU+CisKK2luc3RlYWQgb2YgYSBtb3JlIG9wYXF1ZQorCis8cHJlPgorVmFsdWUg
b2Y6ICFJc0V2ZW4oRmliKDQpKTxicj4KK0FjdHVhbDogZmFsc2U8YnI+CitFeHBlY3RlZDogdHJ1
ZTxicj4KKzwvcHJlPgorCitJZiB5b3Ugd2FudCBpbmZvcm1hdGl2ZSBtZXNzYWdlcyBpbiBgRVhQ
RUNUX0ZBTFNFYCBhbmQgYEFTU0VSVF9GQUxTRWAKK2FzIHdlbGwsIGFuZCBhcmUgZmluZSB3aXRo
IG1ha2luZyB0aGUgcHJlZGljYXRlIHNsb3dlciBpbiB0aGUgc3VjY2VzcworY2FzZSwgeW91IGNh
biBzdXBwbHkgYSBzdWNjZXNzIG1lc3NhZ2U6CisKK2BgYAorOjp0ZXN0aW5nOjpBc3NlcnRpb25S
ZXN1bHQgSXNFdmVuKGludCBuKSB7CisgIGlmICgobiAlIDIpID09IDApCisgICAgcmV0dXJuIDo6
dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpIDw8IG4gPDwgIiBpcyBldmVuIjsKKyAgZWxzZQor
ICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2Rk
IjsKK30KK2BgYAorCitUaGVuIHRoZSBzdGF0ZW1lbnQgYEVYUEVDVF9GQUxTRShJc0V2ZW4oRmli
KDYpKSlgIHdpbGwgcHJpbnQKKworPHByZT4KK1ZhbHVlIG9mOiAhSXNFdmVuKEZpYig2KSk8YnI+
CitBY3R1YWw6IHRydWUgKDggaXMgZXZlbik8YnI+CitFeHBlY3RlZDogZmFsc2U8YnI+Cis8L3By
ZT4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24g
MS40LjEuCisKKyMjIyBVc2luZyBhIFByZWRpY2F0ZS1Gb3JtYXR0ZXIgIyMjCisKK0lmIHlvdSBm
aW5kIHRoZSBkZWZhdWx0IG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IGAoQVNTRVJUfEVYUEVDVClfUFJF
RCpgIGFuZAorYChBU1NFUlR8RVhQRUNUKV8oVFJVRXxGQUxTRSlgIHVuc2F0aXNmYWN0b3J5LCBv
ciBzb21lIGFyZ3VtZW50cyB0byB5b3VyCitwcmVkaWNhdGUgZG8gbm90IHN1cHBvcnQgc3RyZWFt
aW5nIHRvIGBvc3RyZWFtYCwgeW91IGNhbiBpbnN0ZWFkIHVzZSB0aGUKK2ZvbGxvd2luZyBfcHJl
ZGljYXRlLWZvcm1hdHRlciBhc3NlcnRpb25zXyB0byBfZnVsbHlfIGN1c3RvbWl6ZSBob3cgdGhl
CittZXNzYWdlIGlzIGZvcm1hdHRlZDoKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25m
YXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9QUkVE
X0ZPUk1BVDEoYF9wcmVkXF9mb3JtYXQxLCB2YWwxX2ApO2AgICAgICAgIHwgYEVYUEVDVF9QUkVE
X0ZPUk1BVDEoYF9wcmVkXF9mb3JtYXQxLCB2YWwxX2ApOyB8IF9wcmVkXF9mb3JtYXQxKHZhbDEp
XyBpcyBzdWNjZXNzZnVsIHwKK3wgYEFTU0VSVF9QUkVEX0ZPUk1BVDIoYF9wcmVkXF9mb3JtYXQy
LCB2YWwxLCB2YWwyX2ApO2AgfCBgRVhQRUNUX1BSRURfRk9STUFUMihgX3ByZWRcX2Zvcm1hdDIs
IHZhbDEsIHZhbDJfYCk7YCB8IF9wcmVkXF9mb3JtYXQyKHZhbDEsIHZhbDIpXyBpcyBzdWNjZXNz
ZnVsIHwKK3wgYC4uLmAgICAgICAgICAgICAgICB8IGAuLi5gICAgICAgICAgICAgICAgICAgfCBg
Li4uYCAgICAgICAgfAorCitUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIHRoZSBwcmV2
aW91cyB0d28gZ3JvdXBzIG9mIG1hY3JvcyBpcyB0aGF0IGluc3RlYWQgb2YKK2EgcHJlZGljYXRl
LCBgKEFTU0VSVHxFWFBFQ1QpX1BSRURfRk9STUFUKmAgdGFrZSBhIF9wcmVkaWNhdGUtZm9ybWF0
dGVyXworKF9wcmVkXF9mb3JtYXRuXyksIHdoaWNoIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3RvciB3
aXRoIHRoZSBzaWduYXR1cmU6CisKK2A6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkaWNh
dGVGb3JtYXR0ZXJuKGNvbnN0IGNoYXIqIGBfZXhwcjFfYCwgY29uc3QgY2hhciogYF9leHByMl9g
LCAuLi4gY29uc3QgY2hhciogYF9leHBybl9gLCBUMSBgX3ZhbDFfYCwgVDIgYF92YWwyX2AsIC4u
LiBUbiBgX3ZhbG5fYCk7YAorCit3aGVyZSBfdmFsMV8sIF92YWwyXywgLi4uLCBhbmQgX3ZhbG5f
IGFyZSB0aGUgdmFsdWVzIG9mIHRoZSBwcmVkaWNhdGUKK2FyZ3VtZW50cywgYW5kIF9leHByMV8s
IF9leHByMl8sIC4uLiwgYW5kIF9leHBybl8gYXJlIHRoZSBjb3JyZXNwb25kaW5nCitleHByZXNz
aW9ucyBhcyB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGNvZGUuIFRoZSB0eXBlcyBgVDFgLCBg
VDJgLCAuLi4sIGFuZAorYFRuYCBjYW4gYmUgZWl0aGVyIHZhbHVlIHR5cGVzIG9yIHJlZmVyZW5j
ZSB0eXBlcy4gRm9yIGV4YW1wbGUsIGlmIGFuCithcmd1bWVudCBoYXMgdHlwZSBgRm9vYCwgeW91
IGNhbiBkZWNsYXJlIGl0IGFzIGVpdGhlciBgRm9vYCBvciBgY29uc3QgRm9vJmAsCit3aGljaGV2
ZXIgaXMgYXBwcm9wcmlhdGUuCisKK0EgcHJlZGljYXRlLWZvcm1hdHRlciByZXR1cm5zIGEgYDo6
dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0YCBvYmplY3QgdG8gaW5kaWNhdGUKK3doZXRoZXIgdGhl
IGFzc2VydGlvbiBoYXMgc3VjY2VlZGVkIG9yIG5vdC4gVGhlIG9ubHkgd2F5IHRvIGNyZWF0ZSBz
dWNoIGFuCitvYmplY3QgaXMgdG8gY2FsbCBvbmUgb2YgdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnM6
CisKK0FzIGFuIGV4YW1wbGUsIGxldCdzIGltcHJvdmUgdGhlIGZhaWx1cmUgbWVzc2FnZSBpbiB0
aGUgcHJldmlvdXMgZXhhbXBsZSwgd2hpY2ggdXNlcyBgRVhQRUNUX1BSRUQyKClgOgorCitgYGAK
Ky8vIFJldHVybnMgdGhlIHNtYWxsZXN0IHByaW1lIGNvbW1vbiBkaXZpc29yIG9mIG0gYW5kIG4s
CisvLyBvciAxIHdoZW4gbSBhbmQgbiBhcmUgbXV0dWFsbHkgcHJpbWUuCitpbnQgU21hbGxlc3RQ
cmltZUNvbW1vbkRpdmlzb3IoaW50IG0sIGludCBuKSB7IC4uLiB9CisKKy8vIEEgcHJlZGljYXRl
LWZvcm1hdHRlciBmb3IgYXNzZXJ0aW5nIHRoYXQgdHdvIGludGVnZXJzIGFyZSBtdXR1YWxseSBw
cmltZS4KKzo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IEFzc2VydE11dHVhbGx5UHJpbWUoY29u
c3QgY2hhciogbV9leHByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBuX2V4cHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgbikgeworICBpZiAoTXV0dWFsbHlQcmltZShtLCBuKSkKKyAg
ICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CisKKyAgcmV0dXJuIDo6dGVz
dGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBtX2V4cHIgPDwgIiBhbmQgIiA8PCBu
X2V4cHIgPDwgIiAoIiA8PCBtIDw8ICIgYW5kICIgPDwgbgorICAgICAgPDwgIikgYXJlIG5vdCBt
dXR1YWxseSBwcmltZSwgIiA8PCAiYXMgdGhleSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgIgorICAg
ICAgPDwgU21hbGxlc3RQcmltZUNvbW1vbkRpdmlzb3IobSwgbik7Cit9CitgYGAKKworV2l0aCB0
aGlzIHByZWRpY2F0ZS1mb3JtYXR0ZXIsIHdlIGNhbiB1c2UKKworYGBgCitFWFBFQ1RfUFJFRF9G
T1JNQVQyKEFzc2VydE11dHVhbGx5UHJpbWUsIGIsIGMpOworYGBgCisKK3RvIGdlbmVyYXRlIHRo
ZSBtZXNzYWdlCisKKzxwcmU+CitiIGFuZCBjICg0IGFuZCAxMCkgYXJlIG5vdCBtdXR1YWxseSBw
cmltZSwgYXMgdGhleSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgMi48YnI+Cis8L3ByZT4KKworQXMg
eW91IG1heSBoYXZlIHJlYWxpemVkLCBtYW55IG9mIHRoZSBhc3NlcnRpb25zIHdlIGludHJvZHVj
ZWQgZWFybGllciBhcmUKK3NwZWNpYWwgY2FzZXMgb2YgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZP
Uk1BVCpgLiBJbiBmYWN0LCBtb3N0IG9mIHRoZW0gYXJlCitpbmRlZWQgZGVmaW5lZCB1c2luZyBg
KEVYUEVDVHxBU1NFUlQpX1BSRURfRk9STUFUKmAuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwg
V2luZG93cywgTWFjLgorCisKKyMjIEZsb2F0aW5nLVBvaW50IENvbXBhcmlzb24gIyMKKworQ29t
cGFyaW5nIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgaXMgdHJpY2t5LiBEdWUgdG8gcm91bmQtb2Zm
IGVycm9ycywgaXQgaXMKK3ZlcnkgdW5saWtlbHkgdGhhdCB0d28gZmxvYXRpbmctcG9pbnRzIHdp
bGwgbWF0Y2ggZXhhY3RseS4gVGhlcmVmb3JlLAorYEFTU0VSVF9FUWAgJ3MgbmFpdmUgY29tcGFy
aXNvbiB1c3VhbGx5IGRvZXNuJ3Qgd29yay4gQW5kIHNpbmNlIGZsb2F0aW5nLXBvaW50cworY2Fu
IGhhdmUgYSB3aWRlIHZhbHVlIHJhbmdlLCBubyBzaW5nbGUgZml4ZWQgZXJyb3IgYm91bmQgd29y
a3MuIEl0J3MgYmV0dGVyIHRvCitjb21wYXJlIGJ5IGEgZml4ZWQgcmVsYXRpdmUgZXJyb3IgYm91
bmQsIGV4Y2VwdCBmb3IgdmFsdWVzIGNsb3NlIHRvIDAgZHVlIHRvCit0aGUgbG9zcyBvZiBwcmVj
aXNpb24gdGhlcmUuCisKK0luIGdlbmVyYWwsIGZvciBmbG9hdGluZy1wb2ludCBjb21wYXJpc29u
IHRvIG1ha2Ugc2Vuc2UsIHRoZSB1c2VyIG5lZWRzIHRvCitjYXJlZnVsbHkgY2hvb3NlIHRoZSBl
cnJvciBib3VuZC4gSWYgdGhleSBkb24ndCB3YW50IG9yIGNhcmUgdG8sIGNvbXBhcmluZyBpbgor
dGVybXMgb2YgVW5pdHMgaW4gdGhlIExhc3QgUGxhY2UgKFVMUHMpIGlzIGEgZ29vZCBkZWZhdWx0
LCBhbmQgR29vZ2xlIFRlc3QKK3Byb3ZpZGVzIGFzc2VydGlvbnMgdG8gZG8gdGhpcy4gRnVsbCBk
ZXRhaWxzIGFib3V0IFVMUHMgYXJlIHF1aXRlIGxvbmc7IGlmIHlvdQord2FudCB0byBsZWFybiBt
b3JlLCBzZWUKK1t0aGlzIGFydGljbGUgb24gZmxvYXQgY29tcGFyaXNvbl0oaHR0cDovL3d3dy5j
eWdudXMtc29mdHdhcmUuY29tL3BhcGVycy9jb21wYXJpbmdmbG9hdHMvY29tcGFyaW5nZmxvYXRz
Lmh0bSkuCisKKyMjIyBGbG9hdGluZy1Qb2ludCBNYWNyb3MgIyMjCisKK3wgKipGYXRhbCBhc3Nl
cnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0t
LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18
Cit8IGBBU1NFUlRfRkxPQVRfRVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgIHwgYEVYUEVDVF9G
TE9BVF9FUShgX2V4cGVjdGVkLCBhY3R1YWxfYCk7YCB8IHRoZSB0d28gYGZsb2F0YCB2YWx1ZXMg
YXJlIGFsbW9zdCBlcXVhbCB8Cit8IGBBU1NFUlRfRE9VQkxFX0VRKGBfZXhwZWN0ZWQsIGFjdHVh
bF9gKTtgIHwgYEVYUEVDVF9ET1VCTEVfRVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgfCB0aGUg
dHdvIGBkb3VibGVgIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsIHwKKworQnkgImFsbW9zdCBlcXVh
bCIsIHdlIG1lYW4gdGhlIHR3byB2YWx1ZXMgYXJlIHdpdGhpbiA0IFVMUCdzIGZyb20gZWFjaAor
b3RoZXIuCisKK1RoZSBmb2xsb3dpbmcgYXNzZXJ0aW9ucyBhbGxvdyB5b3UgdG8gY2hvb3NlIHRo
ZSBhY2NlcHRhYmxlIGVycm9yIGJvdW5kOgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5v
bmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0t
LS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX05F
QVIoYF92YWwxLCB2YWwyLCBhYnNcX2Vycm9yX2ApO2AgfCBgRVhQRUNUX05FQVJgXyh2YWwxLCB2
YWwyLCBhYnNcX2Vycm9yX2ApO2AgfCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIF92YWwxXyBhbmQg
X3ZhbDJfIGRvZXNuJ3QgZXhjZWVkIHRoZSBnaXZlbiBhYnNvbHV0ZSBlcnJvciB8CisKK19BdmFp
bGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgRmxvYXRpbmctUG9pbnQgUHJl
ZGljYXRlLUZvcm1hdCBGdW5jdGlvbnMgIyMjCisKK1NvbWUgZmxvYXRpbmctcG9pbnQgb3BlcmF0
aW9ucyBhcmUgdXNlZnVsLCBidXQgbm90IHRoYXQgb2Z0ZW4gdXNlZC4gSW4gb3JkZXIKK3RvIGF2
b2lkIGFuIGV4cGxvc2lvbiBvZiBuZXcgbWFjcm9zLCB3ZSBwcm92aWRlIHRoZW0gYXMgcHJlZGlj
YXRlLWZvcm1hdAorZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgaW4gcHJlZGljYXRlIGFzc2Vy
dGlvbiBtYWNyb3MgKGUuZy4KK2BFWFBFQ1RfUFJFRF9GT1JNQVQyYCwgZXRjKS4KKworYGBgCitF
WFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RmxvYXRMRSwgdmFsMSwgdmFsMik7CitFWFBF
Q1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RG91YmxlTEUsIHZhbDEsIHZhbDIpOworYGBgCisK
K1ZlcmlmaWVzIHRoYXQgX3ZhbDFfIGlzIGxlc3MgdGhhbiwgb3IgYWxtb3N0IGVxdWFsIHRvLCBf
dmFsMl8uIFlvdSBjYW4KK3JlcGxhY2UgYEVYUEVDVF9QUkVEX0ZPUk1BVDJgIGluIHRoZSBhYm92
ZSB0YWJsZSB3aXRoIGBBU1NFUlRfUFJFRF9GT1JNQVQyYC4KKworX0F2YWlsYWJpbGl0eV86IExp
bnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIFdpbmRvd3MgSFJFU1VMVCBhc3NlcnRpb25zICMjCisK
K1RoZXNlIGFzc2VydGlvbnMgdGVzdCBmb3IgYEhSRVNVTFRgIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4K
KworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVy
aWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChgX2V4cHJlc3Np
b25fYCk7YCB8IGBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQoYF9leHByZXNzaW9uX2ApO2AgfCBf
ZXhwcmVzc2lvbl8gaXMgYSBzdWNjZXNzIGBIUkVTVUxUYCB8Cit8IGBBU1NFUlRfSFJFU1VMVF9G
QUlMRUQoYF9leHByZXNzaW9uX2ApO2AgICAgfCBgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKGBfZXhw
cmVzc2lvbl9gKTtgICAgIHwgX2V4cHJlc3Npb25fIGlzIGEgZmFpbHVyZSBgSFJFU1VMVGAgfAor
CitUaGUgZ2VuZXJhdGVkIG91dHB1dCBjb250YWlucyB0aGUgaHVtYW4tcmVhZGFibGUgZXJyb3Ig
bWVzc2FnZQorYXNzb2NpYXRlZCB3aXRoIHRoZSBgSFJFU1VMVGAgY29kZSByZXR1cm5lZCBieSBf
ZXhwcmVzc2lvbl8uCisKK1lvdSBtaWdodCB1c2UgdGhlbSBsaWtlIHRoaXM6CisKK2BgYAorQ0Nv
bVB0ciBzaGVsbDsKK0FTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChzaGVsbC5Db0NyZWF0ZUluc3Rh
bmNlKEwiU2hlbGwuQXBwbGljYXRpb24iKSk7CitDQ29tVmFyaWFudCBlbXB0eTsKK0FTU0VSVF9I
UkVTVUxUX1NVQ0NFRURFRChzaGVsbC0+U2hlbGxFeGVjdXRlKENDb21CU1RSKHVybCksIGVtcHR5
LCBlbXB0eSwgZW1wdHksIGVtcHR5KSk7CitgYGAKKworX0F2YWlsYWJpbGl0eV86IFdpbmRvd3Mu
CisKKyMjIFR5cGUgQXNzZXJ0aW9ucyAjIworCitZb3UgY2FuIGNhbGwgdGhlIGZ1bmN0aW9uCitg
YGAKKzo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4oKTsKK2BgYAordG8gYXNz
ZXJ0IHRoYXQgdHlwZXMgYFQxYCBhbmQgYFQyYCBhcmUgdGhlIHNhbWUuICBUaGUgZnVuY3Rpb24g
ZG9lcworbm90aGluZyBpZiB0aGUgYXNzZXJ0aW9uIGlzIHNhdGlzZmllZC4gIElmIHRoZSB0eXBl
cyBhcmUgZGlmZmVyZW50LAordGhlIGZ1bmN0aW9uIGNhbGwgd2lsbCBmYWlsIHRvIGNvbXBpbGUs
IGFuZCB0aGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZQord2lsbCBsaWtlbHkgKGRlcGVuZGluZyBv
biB0aGUgY29tcGlsZXIpIHNob3cgeW91IHRoZSBhY3R1YWwgdmFsdWVzIG9mCitgVDFgIGFuZCBg
VDJgLiAgVGhpcyBpcyBtYWlubHkgdXNlZnVsIGluc2lkZSB0ZW1wbGF0ZSBjb2RlLgorCitfQ2F2
ZWF0Ol8gV2hlbiB1c2VkIGluc2lkZSBhIG1lbWJlciBmdW5jdGlvbiBvZiBhIGNsYXNzIHRlbXBs
YXRlIG9yIGEKK2Z1bmN0aW9uIHRlbXBsYXRlLCBgU3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4o
KWAgaXMgZWZmZWN0aXZlIF9vbmx5IGlmXwordGhlIGZ1bmN0aW9uIGlzIGluc3RhbnRpYXRlZC4g
IEZvciBleGFtcGxlLCBnaXZlbjoKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZv
byB7CisgcHVibGljOgorICB2b2lkIEJhcigpIHsgOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBl
RXE8aW50LCBUPigpOyB9Cit9OworYGBgCit0aGUgY29kZToKK2BgYAordm9pZCBUZXN0MSgpIHsg
Rm9vPGJvb2w+IGZvbzsgfQorYGBgCit3aWxsIF9ub3RfIGdlbmVyYXRlIGEgY29tcGlsZXIgZXJy
b3IsIGFzIGBGb288Ym9vbD46OkJhcigpYCBpcyBuZXZlcgorYWN0dWFsbHkgaW5zdGFudGlhdGVk
LiAgSW5zdGVhZCwgeW91IG5lZWQ6CitgYGAKK3ZvaWQgVGVzdDIoKSB7IEZvbzxib29sPiBmb287
IGZvby5CYXIoKTsgfQorYGBgCit0byBjYXVzZSBhIGNvbXBpbGVyIGVycm9yLgorCitfQXZhaWxh
YmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lvbiAxLjMuMC4KKworIyMg
QXNzZXJ0aW9uIFBsYWNlbWVudCAjIworCitZb3UgY2FuIHVzZSBhc3NlcnRpb25zIGluIGFueSBD
KysgZnVuY3Rpb24uIEluIHBhcnRpY3VsYXIsIGl0IGRvZXNuJ3QKK2hhdmUgdG8gYmUgYSBtZXRo
b2Qgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4gVGhlIG9uZSBjb25zdHJhaW50IGlzCit0aGF0
IGFzc2VydGlvbnMgdGhhdCBnZW5lcmF0ZSBhIGZhdGFsIGZhaWx1cmUgKGBGQUlMKmAgYW5kIGBB
U1NFUlRfKmApCitjYW4gb25seSBiZSB1c2VkIGluIHZvaWQtcmV0dXJuaW5nIGZ1bmN0aW9ucy4g
VGhpcyBpcyBhIGNvbnNlcXVlbmNlIG9mCitHb29nbGUgVGVzdCBub3QgdXNpbmcgZXhjZXB0aW9u
cy4gQnkgcGxhY2luZyBpdCBpbiBhIG5vbi12b2lkIGZ1bmN0aW9uCit5b3UnbGwgZ2V0IGEgY29u
ZnVzaW5nIGNvbXBpbGUgZXJyb3IgbGlrZQorYCJlcnJvcjogdm9pZCB2YWx1ZSBub3QgaWdub3Jl
ZCBhcyBpdCBvdWdodCB0byBiZSJgLgorCitJZiB5b3UgbmVlZCB0byB1c2UgYXNzZXJ0aW9ucyBp
biBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBub24tdm9pZCwgb25lIG9wdGlvbgoraXMgdG8gbWFr
ZSB0aGUgZnVuY3Rpb24gcmV0dXJuIHRoZSB2YWx1ZSBpbiBhbiBvdXQgcGFyYW1ldGVyIGluc3Rl
YWQuIEZvcgorZXhhbXBsZSwgeW91IGNhbiByZXdyaXRlIGBUMiBGb28oVDEgeClgIHRvIGB2b2lk
IEZvbyhUMSB4LCBUMiogcmVzdWx0KWAuIFlvdQorbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgKnJl
c3VsdGAgY29udGFpbnMgc29tZSBzZW5zaWJsZSB2YWx1ZSBldmVuIHdoZW4gdGhlCitmdW5jdGlv
biByZXR1cm5zIHByZW1hdHVyZWx5LiBBcyB0aGUgZnVuY3Rpb24gbm93IHJldHVybnMgYHZvaWRg
LCB5b3UgY2FuIHVzZQorYW55IGFzc2VydGlvbiBpbnNpZGUgb2YgaXQuCisKK0lmIGNoYW5naW5n
IHRoZSBmdW5jdGlvbidzIHR5cGUgaXMgbm90IGFuIG9wdGlvbiwgeW91IHNob3VsZCBqdXN0IHVz
ZQorYXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIG5vbi1mYXRhbCBmYWlsdXJlcywgc3VjaCBhcyBg
QUREX0ZBSUxVUkUqYCBhbmQKK2BFWFBFQ1RfKmAuCisKK19Ob3RlXzogQ29uc3RydWN0b3JzIGFu
ZCBkZXN0cnVjdG9ycyBhcmUgbm90IGNvbnNpZGVyZWQgdm9pZC1yZXR1cm5pbmcKK2Z1bmN0aW9u
cywgYWNjb3JkaW5nIHRvIHRoZSBDKysgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbiwgYW5kIHNvIHlv
dSBtYXkgbm90IHVzZQorZmF0YWwgYXNzZXJ0aW9ucyBpbiB0aGVtLiBZb3UnbGwgZ2V0IGEgY29t
cGlsYXRpb24gZXJyb3IgaWYgeW91IHRyeS4gQSBzaW1wbGUKK3dvcmthcm91bmQgaXMgdG8gdHJh
bnNmZXIgdGhlIGVudGlyZSBib2R5IG9mIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yIHRv
IGEKK3ByaXZhdGUgdm9pZC1yZXR1cm5pbmcgbWV0aG9kLiBIb3dldmVyLCB5b3Ugc2hvdWxkIGJl
IGF3YXJlIHRoYXQgYSBmYXRhbAorYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYSBjb25zdHJ1Y3RvciBk
b2VzIG5vdCB0ZXJtaW5hdGUgdGhlIGN1cnJlbnQgdGVzdCwgYXMgeW91cgoraW50dWl0aW9uIG1p
Z2h0IHN1Z2dlc3Q7IGl0IG1lcmVseSByZXR1cm5zIGZyb20gdGhlIGNvbnN0cnVjdG9yIGVhcmx5
LCBwb3NzaWJseQorbGVhdmluZyB5b3VyIG9iamVjdCBpbiBhIHBhcnRpYWxseS1jb25zdHJ1Y3Rl
ZCBzdGF0ZS4gTGlrZXdpc2UsIGEgZmF0YWwKK2Fzc2VydGlvbiBmYWlsdXJlIGluIGEgZGVzdHJ1
Y3RvciBtYXkgbGVhdmUgeW91ciBvYmplY3QgaW4gYQorcGFydGlhbGx5LWRlc3RydWN0ZWQgc3Rh
dGUuIFVzZSBhc3NlcnRpb25zIGNhcmVmdWxseSBpbiB0aGVzZSBzaXR1YXRpb25zIQorCisjIFRl
YWNoaW5nIEdvb2dsZSBUZXN0IEhvdyB0byBQcmludCBZb3VyIFZhbHVlcyAjCisKK1doZW4gYSB0
ZXN0IGFzc2VydGlvbiBzdWNoIGFzIGBFWFBFQ1RfRVFgIGZhaWxzLCBHb29nbGUgVGVzdCBwcmlu
dHMgdGhlCithcmd1bWVudCB2YWx1ZXMgdG8gaGVscCB5b3UgZGVidWcuICBJdCBkb2VzIHRoaXMg
dXNpbmcgYQordXNlci1leHRlbnNpYmxlIHZhbHVlIHByaW50ZXIuCisKK1RoaXMgcHJpbnRlciBr
bm93cyBob3cgdG8gcHJpbnQgYnVpbHQtaW4gQysrIHR5cGVzLCBuYXRpdmUgYXJyYXlzLCBTVEwK
K2NvbnRhaW5lcnMsIGFuZCBhbnkgdHlwZSB0aGF0IHN1cHBvcnRzIHRoZSBgPDxgIG9wZXJhdG9y
LiAgRm9yIG90aGVyCit0eXBlcywgaXQgcHJpbnRzIHRoZSByYXcgYnl0ZXMgaW4gdGhlIHZhbHVl
IGFuZCBob3BlcyB0aGF0IHlvdSB0aGUKK3VzZXIgY2FuIGZpZ3VyZSBpdCBvdXQuCisKK0FzIG1l
bnRpb25lZCBlYXJsaWVyLCB0aGUgcHJpbnRlciBpcyBfZXh0ZW5zaWJsZV8uICBUaGF0IG1lYW5z
Cit5b3UgY2FuIHRlYWNoIGl0IHRvIGRvIGEgYmV0dGVyIGpvYiBhdCBwcmludGluZyB5b3VyIHBh
cnRpY3VsYXIgdHlwZQordGhhbiB0byBkdW1wIHRoZSBieXRlcy4gIFRvIGRvIHRoYXQsIGRlZmlu
ZSBgPDxgIGZvciB5b3VyIHR5cGU6CisKK2BgYAorI2luY2x1ZGUgPGlvc3RyZWFtPgorCituYW1l
c3BhY2UgZm9vIHsKKworY2xhc3MgQmFyIHsgLi4uIH07ICAvLyBXZSB3YW50IEdvb2dsZSBUZXN0
IHRvIGJlIGFibGUgdG8gcHJpbnQgaW5zdGFuY2VzIG9mIHRoaXMuCisKKy8vIEl0J3MgaW1wb3J0
YW50IHRoYXQgdGhlIDw8IG9wZXJhdG9yIGlzIGRlZmluZWQgaW4gdGhlIFNBTUUKKy8vIG5hbWVz
cGFjZSB0aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11cCBydWxlcyByZWx5IG9uIHRoYXQu
Cis6OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IEJh
ciYgYmFyKSB7CisgIHJldHVybiBvcyA8PCBiYXIuRGVidWdTdHJpbmcoKTsgIC8vIHdoYXRldmVy
IG5lZWRlZCB0byBwcmludCBiYXIgdG8gb3MKK30KKworfSAgLy8gbmFtZXNwYWNlIGZvbworYGBg
CisKK1NvbWV0aW1lcywgdGhpcyBtaWdodCBub3QgYmUgYW4gb3B0aW9uOiB5b3VyIHRlYW0gbWF5
IGNvbnNpZGVyIGl0IGJhZAorc3R5bGUgdG8gaGF2ZSBhIGA8PGAgb3BlcmF0b3IgZm9yIGBCYXJg
LCBvciBgQmFyYCBtYXkgYWxyZWFkeSBoYXZlIGEKK2A8PGAgb3BlcmF0b3IgdGhhdCBkb2Vzbid0
IGRvIHdoYXQgeW91IHdhbnQgKGFuZCB5b3UgY2Fubm90IGNoYW5nZQoraXQpLiAgSWYgc28sIHlv
dSBjYW4gaW5zdGVhZCBkZWZpbmUgYSBgUHJpbnRUbygpYCBmdW5jdGlvbiBsaWtlIHRoaXM6CisK
K2BgYAorI2luY2x1ZGUgPGlvc3RyZWFtPgorCituYW1lc3BhY2UgZm9vIHsKKworY2xhc3MgQmFy
IHsgLi4uIH07CisKKy8vIEl0J3MgaW1wb3J0YW50IHRoYXQgUHJpbnRUbygpIGlzIGRlZmluZWQg
aW4gdGhlIFNBTUUKKy8vIG5hbWVzcGFjZSB0aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11
cCBydWxlcyByZWx5IG9uIHRoYXQuCit2b2lkIFByaW50VG8oY29uc3QgQmFyJiBiYXIsIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgeworICAqb3MgPDwgYmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3aGF0ZXZl
ciBuZWVkZWQgdG8gcHJpbnQgYmFyIHRvIG9zCit9CisKK30gIC8vIG5hbWVzcGFjZSBmb28KK2Bg
YAorCitJZiB5b3UgaGF2ZSBkZWZpbmVkIGJvdGggYDw8YCBhbmQgYFByaW50VG8oKWAsIHRoZSBs
YXR0ZXIgd2lsbCBiZSB1c2VkCit3aGVuIEdvb2dsZSBUZXN0IGlzIGNvbmNlcm5lZC4gIFRoaXMg
YWxsb3dzIHlvdSB0byBjdXN0b21pemUgaG93IHRoZSB2YWx1ZQorYXBwZWFycyBpbiBHb29nbGUg
VGVzdCdzIG91dHB1dCB3aXRob3V0IGFmZmVjdGluZyBjb2RlIHRoYXQgcmVsaWVzIG9uIHRoZQor
YmVoYXZpb3Igb2YgaXRzIGA8PGAgb3BlcmF0b3IuCisKK0lmIHlvdSB3YW50IHRvIHByaW50IGEg
dmFsdWUgYHhgIHVzaW5nIEdvb2dsZSBUZXN0J3MgdmFsdWUgcHJpbnRlcgoreW91cnNlbGYsIGp1
c3QgY2FsbCBgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGBfeF9gKWAsIHdoaWNoCityZXR1cm5z
IGFuIGBzdGQ6OnN0cmluZ2A6CisKK2BgYAordmVjdG9yPHBhaXI8QmFyLCBpbnQ+ID4gYmFyX2lu
dHMgPSBHZXRCYXJJbnRWZWN0b3IoKTsKKworRVhQRUNUX1RSVUUoSXNDb3JyZWN0QmFySW50VmVj
dG9yKGJhcl9pbnRzKSkKKyAgICA8PCAiYmFyX2ludHMgPSAiIDw8IDo6dGVzdGluZzo6UHJpbnRU
b1N0cmluZyhiYXJfaW50cyk7CitgYGAKKworIyBEZWF0aCBUZXN0cyAjCisKK0luIG1hbnkgYXBw
bGljYXRpb25zLCB0aGVyZSBhcmUgYXNzZXJ0aW9ucyB0aGF0IGNhbiBjYXVzZSBhcHBsaWNhdGlv
biBmYWlsdXJlCitpZiBhIGNvbmRpdGlvbiBpcyBub3QgbWV0LiBUaGVzZSBzYW5pdHkgY2hlY2tz
LCB3aGljaCBlbnN1cmUgdGhhdCB0aGUgcHJvZ3JhbQoraXMgaW4gYSBrbm93biBnb29kIHN0YXRl
LCBhcmUgdGhlcmUgdG8gZmFpbCBhdCB0aGUgZWFybGllc3QgcG9zc2libGUgdGltZSBhZnRlcgor
c29tZSBwcm9ncmFtIHN0YXRlIGlzIGNvcnJ1cHRlZC4gSWYgdGhlIGFzc2VydGlvbiBjaGVja3Mg
dGhlIHdyb25nIGNvbmRpdGlvbiwKK3RoZW4gdGhlIHByb2dyYW0gbWF5IHByb2NlZWQgaW4gYW4g
ZXJyb25lb3VzIHN0YXRlLCB3aGljaCBjb3VsZCBsZWFkIHRvIG1lbW9yeQorY29ycnVwdGlvbiwg
c2VjdXJpdHkgaG9sZXMsIG9yIHdvcnNlLiBIZW5jZSBpdCBpcyB2aXRhbGx5IGltcG9ydGFudCB0
byB0ZXN0Cit0aGF0IHN1Y2ggYXNzZXJ0aW9uIHN0YXRlbWVudHMgd29yayBhcyBleHBlY3RlZC4K
KworU2luY2UgdGhlc2UgcHJlY29uZGl0aW9uIGNoZWNrcyBjYXVzZSB0aGUgcHJvY2Vzc2VzIHRv
IGRpZSwgd2UgY2FsbCBzdWNoIHRlc3RzCitfZGVhdGggdGVzdHNfLiBNb3JlIGdlbmVyYWxseSwg
YW55IHRlc3QgdGhhdCBjaGVja3MgdGhhdCBhIHByb2dyYW0gdGVybWluYXRlcworKGV4Y2VwdCBi
eSB0aHJvd2luZyBhbiBleGNlcHRpb24pIGluIGFuIGV4cGVjdGVkIGZhc2hpb24gaXMgYWxzbyBh
IGRlYXRoIHRlc3QuCisKK05vdGUgdGhhdCBpZiBhIHBpZWNlIG9mIGNvZGUgdGhyb3dzIGFuIGV4
Y2VwdGlvbiwgd2UgZG9uJ3QgY29uc2lkZXIgaXQgImRlYXRoIgorZm9yIHRoZSBwdXJwb3NlIG9m
IGRlYXRoIHRlc3RzLCBhcyB0aGUgY2FsbGVyIG9mIHRoZSBjb2RlIGNvdWxkIGNhdGNoIHRoZSBl
eGNlcHRpb24KK2FuZCBhdm9pZCB0aGUgY3Jhc2guIElmIHlvdSB3YW50IHRvIHZlcmlmeSBleGNl
cHRpb25zIHRocm93biBieSB5b3VyIGNvZGUsCitzZWUgW0V4Y2VwdGlvbiBBc3NlcnRpb25zXSgj
ZXhjZXB0aW9uLWFzc2VydGlvbnMpLgorCitJZiB5b3Ugd2FudCB0byB0ZXN0IGBFWFBFQ1RfKigp
L0FTU0VSVF8qKClgIGZhaWx1cmVzIGluIHlvdXIgdGVzdCBjb2RlLCBzZWUgW0NhdGNoaW5nIEZh
aWx1cmVzXSgjY2F0Y2hpbmctZmFpbHVyZXMpLgorCisjIyBIb3cgdG8gV3JpdGUgYSBEZWF0aCBU
ZXN0ICMjCisKK0dvb2dsZSBUZXN0IGhhcyB0aGUgZm9sbG93aW5nIG1hY3JvcyB0byBzdXBwb3J0
IGRlYXRoIHRlc3RzOgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2Vy
dGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX0RFQVRIKGBfc3RhdGVt
ZW50LCByZWdleF9gKTsgfCBgRVhQRUNUX0RFQVRIKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBf
c3RhdGVtZW50XyBjcmFzaGVzIHdpdGggdGhlIGdpdmVuIGVycm9yIHwKK3wgYEFTU0VSVF9ERUFU
SF9JRl9TVVBQT1JURUQoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApOyB8IGBFWFBFQ1RfREVBVEhfSUZf
U1VQUE9SVEVEKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBpZiBkZWF0aCB0ZXN0cyBhcmUgc3Vw
cG9ydGVkLCB2ZXJpZmllcyB0aGF0IF9zdGF0ZW1lbnRfIGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4g
ZXJyb3I7IG90aGVyd2lzZSB2ZXJpZmllcyBub3RoaW5nIHwKK3wgYEFTU0VSVF9FWElUKGBfc3Rh
dGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4X2ApOyB8IGBFWFBFQ1RfRVhJVChgX3N0YXRlbWVudCwg
cHJlZGljYXRlLCByZWdleF9gKTsgfF9zdGF0ZW1lbnRfIGV4aXRzIHdpdGggdGhlIGdpdmVuIGVy
cm9yIGFuZCBpdHMgZXhpdCBjb2RlIG1hdGNoZXMgX3ByZWRpY2F0ZV8gfAorCit3aGVyZSBfc3Rh
dGVtZW50XyBpcyBhIHN0YXRlbWVudCB0aGF0IGlzIGV4cGVjdGVkIHRvIGNhdXNlIHRoZSBwcm9j
ZXNzIHRvCitkaWUsIF9wcmVkaWNhdGVfIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3Rpb24gb2JqZWN0
IHRoYXQgZXZhbHVhdGVzIGFuIGludGVnZXIKK2V4aXQgc3RhdHVzLCBhbmQgX3JlZ2V4XyBpcyBh
IHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IHRoZSBzdGRlcnIgb3V0cHV0IG9mCitfc3RhdGVtZW50
XyBpcyBleHBlY3RlZCB0byBtYXRjaC4gTm90ZSB0aGF0IF9zdGF0ZW1lbnRfIGNhbiBiZSBfYW55
IHZhbGlkCitzdGF0ZW1lbnRfIChpbmNsdWRpbmcgX2NvbXBvdW5kIHN0YXRlbWVudF8pIGFuZCBk
b2Vzbid0IGhhdmUgdG8gYmUgYW4KK2V4cHJlc3Npb24uCisKK0FzIHVzdWFsLCB0aGUgYEFTU0VS
VGAgdmFyaWFudHMgYWJvcnQgdGhlIGN1cnJlbnQgdGVzdCBmdW5jdGlvbiwgd2hpbGUgdGhlCitg
RVhQRUNUYCB2YXJpYW50cyBkbyBub3QuCisKKyoqTm90ZToqKiBXZSB1c2UgdGhlIHdvcmQgImNy
YXNoIiBoZXJlIHRvIG1lYW4gdGhhdCB0aGUgcHJvY2VzcwordGVybWluYXRlcyB3aXRoIGEgX25v
bi16ZXJvXyBleGl0IHN0YXR1cyBjb2RlLiAgVGhlcmUgYXJlIHR3bworcG9zc2liaWxpdGllczog
ZWl0aGVyIHRoZSBwcm9jZXNzIGhhcyBjYWxsZWQgYGV4aXQoKWAgb3IgYF9leGl0KClgCit3aXRo
IGEgbm9uLXplcm8gdmFsdWUsIG9yIGl0IG1heSBiZSBraWxsZWQgYnkgYSBzaWduYWwuCisKK1Ro
aXMgbWVhbnMgdGhhdCBpZiBfc3RhdGVtZW50XyB0ZXJtaW5hdGVzIHRoZSBwcm9jZXNzIHdpdGgg
YSAwIGV4aXQKK2NvZGUsIGl0IGlzIF9ub3RfIGNvbnNpZGVyZWQgYSBjcmFzaCBieSBgRVhQRUNU
X0RFQVRIYC4gIFVzZQorYEVYUEVDVF9FWElUYCBpbnN0ZWFkIGlmIHRoaXMgaXMgdGhlIGNhc2Us
IG9yIGlmIHlvdSB3YW50IHRvIHJlc3RyaWN0Cit0aGUgZXhpdCBjb2RlIG1vcmUgcHJlY2lzZWx5
LgorCitBIHByZWRpY2F0ZSBoZXJlIG11c3QgYWNjZXB0IGFuIGBpbnRgIGFuZCByZXR1cm4gYSBg
Ym9vbGAuIFRoZSBkZWF0aCB0ZXN0CitzdWNjZWVkcyBvbmx5IGlmIHRoZSBwcmVkaWNhdGUgcmV0
dXJucyBgdHJ1ZWAuIEdvb2dsZSBUZXN0IGRlZmluZXMgYSBmZXcKK3ByZWRpY2F0ZXMgdGhhdCBo
YW5kbGUgdGhlIG1vc3QgY29tbW9uIGNhc2VzOgorCitgYGAKKzo6dGVzdGluZzo6RXhpdGVkV2l0
aENvZGUoZXhpdF9jb2RlKQorYGBgCisKK1RoaXMgZXhwcmVzc2lvbiBpcyBgdHJ1ZWAgaWYgdGhl
IHByb2dyYW0gZXhpdGVkIG5vcm1hbGx5IHdpdGggdGhlIGdpdmVuIGV4aXQKK2NvZGUuCisKK2Bg
YAorOjp0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChzaWduYWxfbnVtYmVyKSAgLy8gTm90IGF2YWls
YWJsZSBvbiBXaW5kb3dzLgorYGBgCisKK1RoaXMgZXhwcmVzc2lvbiBpcyBgdHJ1ZWAgaWYgdGhl
IHByb2dyYW0gd2FzIGtpbGxlZCBieSB0aGUgZ2l2ZW4gc2lnbmFsLgorCitUaGUgYCpfREVBVEhg
IG1hY3JvcyBhcmUgY29udmVuaWVudCB3cmFwcGVycyBmb3IgYCpfRVhJVGAgdGhhdCB1c2UgYSBw
cmVkaWNhdGUKK3RoYXQgdmVyaWZpZXMgdGhlIHByb2Nlc3MnIGV4aXQgY29kZSBpcyBub24temVy
by4KKworTm90ZSB0aGF0IGEgZGVhdGggdGVzdCBvbmx5IGNhcmVzIGFib3V0IHRocmVlIHRoaW5n
czoKKworICAxLiBkb2VzIF9zdGF0ZW1lbnRfIGFib3J0IG9yIGV4aXQgdGhlIHByb2Nlc3M/Cisg
IDEuIChpbiB0aGUgY2FzZSBvZiBgQVNTRVJUX0VYSVRgIGFuZCBgRVhQRUNUX0VYSVRgKSBkb2Vz
IHRoZSBleGl0IHN0YXR1cyBzYXRpc2Z5IF9wcmVkaWNhdGVfPyAgT3IgKGluIHRoZSBjYXNlIG9m
IGBBU1NFUlRfREVBVEhgIGFuZCBgRVhQRUNUX0RFQVRIYCkgaXMgdGhlIGV4aXQgc3RhdHVzIG5v
bi16ZXJvPyAgQW5kCisgIDEuIGRvZXMgdGhlIHN0ZGVyciBvdXRwdXQgbWF0Y2ggX3JlZ2V4Xz8K
KworSW4gcGFydGljdWxhciwgaWYgX3N0YXRlbWVudF8gZ2VuZXJhdGVzIGFuIGBBU1NFUlRfKmAg
b3IgYEVYUEVDVF8qYCBmYWlsdXJlLCBpdCB3aWxsICoqbm90KiogY2F1c2UgdGhlIGRlYXRoIHRl
c3QgdG8gZmFpbCwgYXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBkb24ndCBhYm9ydCB0aGUgcHJv
Y2Vzcy4KKworVG8gd3JpdGUgYSBkZWF0aCB0ZXN0LCBzaW1wbHkgdXNlIG9uZSBvZiB0aGUgYWJv
dmUgbWFjcm9zIGluc2lkZSB5b3VyIHRlc3QKK2Z1bmN0aW9uLiBGb3IgZXhhbXBsZSwKKworYGBg
CitURVNUKE15KkRlYXRoVGVzdCosIEZvbykgeworICAvLyBUaGlzIGRlYXRoIHRlc3QgdXNlcyBh
IGNvbXBvdW5kIHN0YXRlbWVudC4KKyAgQVNTRVJUX0RFQVRIKHsgaW50IG4gPSA1OyBGb28oJm4p
OyB9LCAiRXJyb3Igb24gbGluZSAuKiBvZiBGb28oKSIpOworfQorVEVTVChNeURlYXRoVGVzdCwg
Tm9ybWFsRXhpdCkgeworICBFWFBFQ1RfRVhJVChOb3JtYWxFeGl0KCksIDo6dGVzdGluZzo6RXhp
dGVkV2l0aENvZGUoMCksICJTdWNjZXNzIik7Cit9CitURVNUKE15RGVhdGhUZXN0LCBLaWxsTXlz
ZWxmKSB7CisgIEVYUEVDVF9FWElUKEtpbGxNeXNlbGYoKSwgOjp0ZXN0aW5nOjpLaWxsZWRCeVNp
Z25hbChTSUdLSUxMKSwgIlNlbmRpbmcgbXlzZWxmIHVuYmxvY2thYmxlIHNpZ25hbCIpOworfQor
YGBgCisKK3ZlcmlmaWVzIHRoYXQ6CisKKyAgKiBjYWxsaW5nIGBGb28oNSlgIGNhdXNlcyB0aGUg
cHJvY2VzcyB0byBkaWUgd2l0aCB0aGUgZ2l2ZW4gZXJyb3IgbWVzc2FnZSwKKyAgKiBjYWxsaW5n
IGBOb3JtYWxFeGl0KClgIGNhdXNlcyB0aGUgcHJvY2VzcyB0byBwcmludCBgIlN1Y2Nlc3MiYCB0
byBzdGRlcnIgYW5kIGV4aXQgd2l0aCBleGl0IGNvZGUgMCwgYW5kCisgICogY2FsbGluZyBgS2ls
bE15c2VsZigpYCBraWxscyB0aGUgcHJvY2VzcyB3aXRoIHNpZ25hbCBgU0lHS0lMTGAuCisKK1Ro
ZSB0ZXN0IGZ1bmN0aW9uIGJvZHkgbWF5IGNvbnRhaW4gb3RoZXIgYXNzZXJ0aW9ucyBhbmQgc3Rh
dGVtZW50cyBhcyB3ZWxsLCBpZgorbmVjZXNzYXJ5LgorCitfSW1wb3J0YW50Ol8gV2Ugc3Ryb25n
bHkgcmVjb21tZW5kIHlvdSB0byBmb2xsb3cgdGhlIGNvbnZlbnRpb24gb2YgbmFtaW5nIHlvdXIK
K3Rlc3QgY2FzZSAobm90IHRlc3QpIGAqRGVhdGhUZXN0YCB3aGVuIGl0IGNvbnRhaW5zIGEgZGVh
dGggdGVzdCwgYXMKK2RlbW9uc3RyYXRlZCBpbiB0aGUgYWJvdmUgZXhhbXBsZS4gVGhlIGBEZWF0
aCBUZXN0cyBBbmQgVGhyZWFkc2Agc2VjdGlvbiBiZWxvdworZXhwbGFpbnMgd2h5LgorCitJZiBh
IHRlc3QgZml4dHVyZSBjbGFzcyBpcyBzaGFyZWQgYnkgbm9ybWFsIHRlc3RzIGFuZCBkZWF0aCB0
ZXN0cywgeW91CitjYW4gdXNlIHR5cGVkZWYgdG8gaW50cm9kdWNlIGFuIGFsaWFzIGZvciB0aGUg
Zml4dHVyZSBjbGFzcyBhbmQgYXZvaWQKK2R1cGxpY2F0aW5nIGl0cyBjb2RlOgorYGBgCitjbGFz
cyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OworCit0eXBlZGVmIEZv
b1Rlc3QgRm9vRGVhdGhUZXN0OworCitURVNUX0YoRm9vVGVzdCwgRG9lc1RoaXMpIHsKKyAgLy8g
bm9ybWFsIHRlc3QKK30KKworVEVTVF9GKEZvb0RlYXRoVGVzdCwgRG9lc1RoYXQpIHsKKyAgLy8g
ZGVhdGggdGVzdAorfQorYGBgCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cyAocmVx
dWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBDeWd3aW4sIGFuZCBNYWMgKHRoZSBsYXR0ZXIgdGhy
ZWUgYXJlIHN1cHBvcnRlZCBzaW5jZSB2MS4zLjApLiAgYChBU1NFUlR8RVhQRUNUKV9ERUFUSF9J
Rl9TVVBQT1JURURgIGFyZSBuZXcgaW4gdjEuNC4wLgorCisjIyBSZWd1bGFyIEV4cHJlc3Npb24g
U3ludGF4ICMjCisKK09uIFBPU0lYIHN5c3RlbXMgKGUuZy4gTGludXgsIEN5Z3dpbiwgYW5kIE1h
YyksIEdvb2dsZSBUZXN0IHVzZXMgdGhlCitbUE9TSVggZXh0ZW5kZWQgcmVndWxhciBleHByZXNz
aW9uXShodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvYmFzZWRl
ZnMveGJkX2NoYXAwOS5odG1sI3RhZ18wOV8wNCkKK3N5bnRheCBpbiBkZWF0aCB0ZXN0cy4gVG8g
bGVhcm4gYWJvdXQgdGhpcyBzeW50YXgsIHlvdSBtYXkgd2FudCB0byByZWFkIHRoaXMgW1dpa2lw
ZWRpYSBlbnRyeV0oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWd1bGFyX2V4cHJlc3Np
b24jUE9TSVhfRXh0ZW5kZWRfUmVndWxhcl9FeHByZXNzaW9ucykuCisKK09uIFdpbmRvd3MsIEdv
b2dsZSBUZXN0IHVzZXMgaXRzIG93biBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uCitpbXBsZW1l
bnRhdGlvbi4gSXQgbGFja3MgbWFueSBmZWF0dXJlcyB5b3UgY2FuIGZpbmQgaW4gUE9TSVggZXh0
ZW5kZWQKK3JlZ3VsYXIgZXhwcmVzc2lvbnMuICBGb3IgZXhhbXBsZSwgd2UgZG9uJ3Qgc3VwcG9y
dCB1bmlvbiAoYCJ4fHkiYCksCitncm91cGluZyAoYCIoeHkpImApLCBicmFja2V0cyAoYCJbeHld
ImApLCBhbmQgcmVwZXRpdGlvbiBjb3VudAorKGAieHs1LDd9ImApLCBhbW9uZyBvdGhlcnMuIEJl
bG93IGlzIHdoYXQgd2UgZG8gc3VwcG9ydCAoYEFgIGRlbm90ZXMgYQorbGl0ZXJhbCBjaGFyYWN0
ZXIsIHBlcmlvZCAoYC5gKSwgb3IgYSBzaW5nbGUgYFxcYCBlc2NhcGUgc2VxdWVuY2U7IGB4YAor
YW5kIGB5YCBkZW5vdGUgcmVndWxhciBleHByZXNzaW9ucy4pOgorCit8IGBjYCB8IG1hdGNoZXMg
YW55IGxpdGVyYWwgY2hhcmFjdGVyIGBjYCB8Cit8Oi0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS18Cit8IGBcXGRgIHwgbWF0Y2hlcyBhbnkgZGVjaW1hbCBkaWdpdCAgICAg
ICAgIHwKK3wgYFxcRGAgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBhIGRlY2lt
YWwgZGlnaXQgfAorfCBgXFxmYCB8IG1hdGNoZXMgYFxmYCAgICAgICAgICAgICAgICAgICAgICB8
Cit8IGBcXG5gIHwgbWF0Y2hlcyBgXG5gICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYFxccmAg
fCBtYXRjaGVzIGBccmAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFxzYCB8IG1hdGNoZXMg
YW55IEFTQ0lJIHdoaXRlc3BhY2UsIGluY2x1ZGluZyBgXG5gIHwKK3wgYFxcU2AgfCBtYXRjaGVz
IGFueSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBhIHdoaXRlc3BhY2UgfAorfCBgXFx0YCB8IG1hdGNo
ZXMgYFx0YCAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBcXHZgIHwgbWF0Y2hlcyBgXHZgICAg
ICAgICAgICAgICAgICAgICAgIHwKK3wgYFxcd2AgfCBtYXRjaGVzIGFueSBsZXR0ZXIsIGBfYCwg
b3IgZGVjaW1hbCBkaWdpdCB8Cit8IGBcXFdgIHwgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIHRoYXQg
YFxcd2AgZG9lc24ndCBtYXRjaCB8Cit8IGBcXGNgIHwgbWF0Y2hlcyBhbnkgbGl0ZXJhbCBjaGFy
YWN0ZXIgYGNgLCB3aGljaCBtdXN0IGJlIGEgcHVuY3R1YXRpb24gfAorfCBgLmAgfCBtYXRjaGVz
IGFueSBzaW5nbGUgY2hhcmFjdGVyIGV4Y2VwdCBgXG5gIHwKK3wgYEE/YCB8IG1hdGNoZXMgMCBv
ciAxIG9jY3VycmVuY2VzIG9mIGBBYCB8Cit8IGBBKmAgfCBtYXRjaGVzIDAgb3IgbWFueSBvY2N1
cnJlbmNlcyBvZiBgQWAgfAorfCBgQStgIHwgbWF0Y2hlcyAxIG9yIG1hbnkgb2NjdXJyZW5jZXMg
b2YgYEFgIHwKK3wgYF5gIHwgbWF0Y2hlcyB0aGUgYmVnaW5uaW5nIG9mIGEgc3RyaW5nIChub3Qg
dGhhdCBvZiBlYWNoIGxpbmUpIHwKK3wgYCRgIHwgbWF0Y2hlcyB0aGUgZW5kIG9mIGEgc3RyaW5n
IChub3QgdGhhdCBvZiBlYWNoIGxpbmUpIHwKK3wgYHh5YCB8IG1hdGNoZXMgYHhgIGZvbGxvd2Vk
IGJ5IGB5YCAgICAgICB8CisKK1RvIGhlbHAgeW91IGRldGVybWluZSB3aGljaCBjYXBhYmlsaXR5
IGlzIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbSwKK0dvb2dsZSBUZXN0IGRlZmluZXMgbWFjcm8g
YEdURVNUX1VTRVNfUE9TSVhfUkU9MWAgd2hlbiBpdCB1c2VzIFBPU0lYCitleHRlbmRlZCByZWd1
bGFyIGV4cHJlc3Npb25zLCBvciBgR1RFU1RfVVNFU19TSU1QTEVfUkU9MWAgd2hlbiBpdCB1c2Vz
Cit0aGUgc2ltcGxlIHZlcnNpb24uICBJZiB5b3Ugd2FudCB5b3VyIGRlYXRoIHRlc3RzIHRvIHdv
cmsgaW4gYm90aAorY2FzZXMsIHlvdSBjYW4gZWl0aGVyIGAjaWZgIG9uIHRoZXNlIG1hY3JvcyBv
ciB1c2UgdGhlIG1vcmUgbGltaXRlZAorc3ludGF4IG9ubHkuCisKKyMjIEhvdyBJdCBXb3JrcyAj
IworCitVbmRlciB0aGUgaG9vZCwgYEFTU0VSVF9FWElUKClgIHNwYXducyBhIG5ldyBwcm9jZXNz
IGFuZCBleGVjdXRlcyB0aGUKK2RlYXRoIHRlc3Qgc3RhdGVtZW50IGluIHRoYXQgcHJvY2Vzcy4g
VGhlIGRldGFpbHMgb2Ygb2YgaG93IHByZWNpc2VseQordGhhdCBoYXBwZW5zIGRlcGVuZCBvbiB0
aGUgcGxhdGZvcm0gYW5kIHRoZSB2YXJpYWJsZQorYDo6dGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0
aF90ZXN0X3N0eWxlKWAgKHdoaWNoIGlzIGluaXRpYWxpemVkIGZyb20gdGhlCitjb21tYW5kLWxp
bmUgZmxhZyBgLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlYCkuCisKKyAgKiBPbiBQT1NJWCBzeXN0
ZW1zLCBgZm9yaygpYCAob3IgYGNsb25lKClgIG9uIExpbnV4KSBpcyB1c2VkIHRvIHNwYXduIHRo
ZSBjaGlsZCwgYWZ0ZXIgd2hpY2g6CisgICAgKiBJZiB0aGUgdmFyaWFibGUncyB2YWx1ZSBpcyBg
ImZhc3QiYCwgdGhlIGRlYXRoIHRlc3Qgc3RhdGVtZW50IGlzIGltbWVkaWF0ZWx5IGV4ZWN1dGVk
LgorICAgICogSWYgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgaXMgYCJ0aHJlYWRzYWZlImAsIHRoZSBj
aGlsZCBwcm9jZXNzIHJlLWV4ZWN1dGVzIHRoZSB1bml0IHRlc3QgYmluYXJ5IGp1c3QgYXMgaXQg
d2FzIG9yaWdpbmFsbHkgaW52b2tlZCwgYnV0IHdpdGggc29tZSBleHRyYSBmbGFncyB0byBjYXVz
ZSBqdXN0IHRoZSBzaW5nbGUgZGVhdGggdGVzdCB1bmRlciBjb25zaWRlcmF0aW9uIHRvIGJlIHJ1
bi4KKyAgKiBPbiBXaW5kb3dzLCB0aGUgY2hpbGQgaXMgc3Bhd25lZCB1c2luZyB0aGUgYENyZWF0
ZVByb2Nlc3MoKWAgQVBJLCBhbmQgcmUtZXhlY3V0ZXMgdGhlIGJpbmFyeSB0byBjYXVzZSBqdXN0
IHRoZSBzaW5nbGUgZGVhdGggdGVzdCB1bmRlciBjb25zaWRlcmF0aW9uIHRvIGJlIHJ1biAtIG11
Y2ggbGlrZSB0aGUgYHRocmVhZHNhZmVgIG1vZGUgb24gUE9TSVguCisKK090aGVyIHZhbHVlcyBm
b3IgdGhlIHZhcmlhYmxlIGFyZSBpbGxlZ2FsIGFuZCB3aWxsIGNhdXNlIHRoZSBkZWF0aCB0ZXN0
IHRvCitmYWlsLiBDdXJyZW50bHksIHRoZSBmbGFnJ3MgZGVmYXVsdCB2YWx1ZSBpcyBgImZhc3Qi
YC4gSG93ZXZlciwgd2UgcmVzZXJ2ZSB0aGUKK3JpZ2h0IHRvIGNoYW5nZSBpdCBpbiB0aGUgZnV0
dXJlLiBUaGVyZWZvcmUsIHlvdXIgdGVzdHMgc2hvdWxkIG5vdCBkZXBlbmQgb24KK3RoaXMuCisK
K0luIGVpdGhlciBjYXNlLCB0aGUgcGFyZW50IHByb2Nlc3Mgd2FpdHMgZm9yIHRoZSBjaGlsZCBw
cm9jZXNzIHRvIGNvbXBsZXRlLCBhbmQgY2hlY2tzIHRoYXQKKworICAxLiB0aGUgY2hpbGQncyBl
eGl0IHN0YXR1cyBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZSwgYW5kCisgIDEuIHRoZSBjaGlsZCdz
IHN0ZGVyciBtYXRjaGVzIHRoZSByZWd1bGFyIGV4cHJlc3Npb24uCisKK0lmIHRoZSBkZWF0aCB0
ZXN0IHN0YXRlbWVudCBydW5zIHRvIGNvbXBsZXRpb24gd2l0aG91dCBkeWluZywgdGhlIGNoaWxk
Citwcm9jZXNzIHdpbGwgbm9uZXRoZWxlc3MgdGVybWluYXRlLCBhbmQgdGhlIGFzc2VydGlvbiBm
YWlscy4KKworIyMgRGVhdGggVGVzdHMgQW5kIFRocmVhZHMgIyMKKworVGhlIHJlYXNvbiBmb3Ig
dGhlIHR3byBkZWF0aCB0ZXN0IHN0eWxlcyBoYXMgdG8gZG8gd2l0aCB0aHJlYWQgc2FmZXR5LiBE
dWUgdG8KK3dlbGwta25vd24gcHJvYmxlbXMgd2l0aCBmb3JraW5nIGluIHRoZSBwcmVzZW5jZSBv
ZiB0aHJlYWRzLCBkZWF0aCB0ZXN0cyBzaG91bGQKK2JlIHJ1biBpbiBhIHNpbmdsZS10aHJlYWRl
ZCBjb250ZXh0LiBTb21ldGltZXMsIGhvd2V2ZXIsIGl0IGlzbid0IGZlYXNpYmxlIHRvCithcnJh
bmdlIHRoYXQga2luZCBvZiBlbnZpcm9ubWVudC4gRm9yIGV4YW1wbGUsIHN0YXRpY2FsbHktaW5p
dGlhbGl6ZWQgbW9kdWxlcworbWF5IHN0YXJ0IHRocmVhZHMgYmVmb3JlIG1haW4gaXMgZXZlciBy
ZWFjaGVkLiBPbmNlIHRocmVhZHMgaGF2ZSBiZWVuIGNyZWF0ZWQsCitpdCBtYXkgYmUgZGlmZmlj
dWx0IG9yIGltcG9zc2libGUgdG8gY2xlYW4gdGhlbSB1cC4KKworR29vZ2xlIFRlc3QgaGFzIHRo
cmVlIGZlYXR1cmVzIGludGVuZGVkIHRvIHJhaXNlIGF3YXJlbmVzcyBvZiB0aHJlYWRpbmcgaXNz
dWVzLgorCisgIDEuIEEgd2FybmluZyBpcyBlbWl0dGVkIGlmIG11bHRpcGxlIHRocmVhZHMgYXJl
IHJ1bm5pbmcgd2hlbiBhIGRlYXRoIHRlc3QgaXMgZW5jb3VudGVyZWQuCisgIDEuIFRlc3QgY2Fz
ZXMgd2l0aCBhIG5hbWUgZW5kaW5nIGluICJEZWF0aFRlc3QiIGFyZSBydW4gYmVmb3JlIGFsbCBv
dGhlciB0ZXN0cy4KKyAgMS4gSXQgdXNlcyBgY2xvbmUoKWAgaW5zdGVhZCBvZiBgZm9yaygpYCB0
byBzcGF3biB0aGUgY2hpbGQgcHJvY2VzcyBvbiBMaW51eCAoYGNsb25lKClgIGlzIG5vdCBhdmFp
bGFibGUgb24gQ3lnd2luIGFuZCBNYWMpLCBhcyBgZm9yaygpYCBpcyBtb3JlIGxpa2VseSB0byBj
YXVzZSB0aGUgY2hpbGQgdG8gaGFuZyB3aGVuIHRoZSBwYXJlbnQgcHJvY2VzcyBoYXMgbXVsdGlw
bGUgdGhyZWFkcy4KKworSXQncyBwZXJmZWN0bHkgZmluZSB0byBjcmVhdGUgdGhyZWFkcyBpbnNp
ZGUgYSBkZWF0aCB0ZXN0IHN0YXRlbWVudDsgdGhleSBhcmUKK2V4ZWN1dGVkIGluIGEgc2VwYXJh
dGUgcHJvY2VzcyBhbmQgY2Fubm90IGFmZmVjdCB0aGUgcGFyZW50LgorCisjIyBEZWF0aCBUZXN0
IFN0eWxlcyAjIworCitUaGUgInRocmVhZHNhZmUiIGRlYXRoIHRlc3Qgc3R5bGUgd2FzIGludHJv
ZHVjZWQgaW4gb3JkZXIgdG8gaGVscCBtaXRpZ2F0ZSB0aGUKK3Jpc2tzIG9mIHRlc3RpbmcgaW4g
YSBwb3NzaWJseSBtdWx0aXRocmVhZGVkIGVudmlyb25tZW50LiBJdCB0cmFkZXMgaW5jcmVhc2Vk
Cit0ZXN0IGV4ZWN1dGlvbiB0aW1lIChwb3RlbnRpYWxseSBkcmFtYXRpY2FsbHkgc28pIGZvciBp
bXByb3ZlZCB0aHJlYWQgc2FmZXR5LgorV2Ugc3VnZ2VzdCB1c2luZyB0aGUgZmFzdGVyLCBkZWZh
dWx0ICJmYXN0IiBzdHlsZSB1bmxlc3MgeW91ciB0ZXN0IGhhcyBzcGVjaWZpYworcHJvYmxlbXMg
d2l0aCBpdC4KKworWW91IGNhbiBjaG9vc2UgYSBwYXJ0aWN1bGFyIHN0eWxlIG9mIGRlYXRoIHRl
c3RzIGJ5IHNldHRpbmcgdGhlIGZsYWcKK3Byb2dyYW1tYXRpY2FsbHk6CisKK2BgYAorOjp0ZXN0
aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0gInRocmVhZHNhZmUiOworYGBgCisK
K1lvdSBjYW4gZG8gdGhpcyBpbiBgbWFpbigpYCB0byBzZXQgdGhlIHN0eWxlIGZvciBhbGwgZGVh
dGggdGVzdHMgaW4gdGhlCitiaW5hcnksIG9yIGluIGluZGl2aWR1YWwgdGVzdHMuIFJlY2FsbCB0
aGF0IGZsYWdzIGFyZSBzYXZlZCBiZWZvcmUgcnVubmluZyBlYWNoCit0ZXN0IGFuZCByZXN0b3Jl
ZCBhZnRlcndhcmRzLCBzbyB5b3UgbmVlZCBub3QgZG8gdGhhdCB5b3Vyc2VsZi4gRm9yIGV4YW1w
bGU6CisKK2BgYAorVEVTVChNeURlYXRoVGVzdCwgVGVzdE9uZSkgeworICA6OnRlc3Rpbmc6OkZM
QUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAidGhyZWFkc2FmZSI7CisgIC8vIFRoaXMgdGVz
dCBpcyBydW4gaW4gdGhlICJ0aHJlYWRzYWZlIiBzdHlsZToKKyAgQVNTRVJUX0RFQVRIKFRoaXNT
aG91bGREaWUoKSwgIiIpOworfQorCitURVNUKE15RGVhdGhUZXN0LCBUZXN0VHdvKSB7CisgIC8v
IFRoaXMgdGVzdCBpcyBydW4gaW4gdGhlICJmYXN0IiBzdHlsZToKKyAgQVNTRVJUX0RFQVRIKFRo
aXNTaG91bGREaWUoKSwgIiIpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3Yp
IHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIDo6dGVzdGlu
Zzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJmYXN0IjsKKyAgcmV0dXJuIFJVTl9B
TExfVEVTVFMoKTsKK30KK2BgYAorCisjIyBDYXZlYXRzICMjCisKK1RoZSBfc3RhdGVtZW50XyBh
cmd1bWVudCBvZiBgQVNTRVJUX0VYSVQoKWAgY2FuIGJlIGFueSB2YWxpZCBDKysgc3RhdGVtZW50
LgorSWYgaXQgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9uIHZpYSBhIGByZXR1cm5gIHN0YXRl
bWVudCBvciBieSB0aHJvd2luZyBhbiBleGNlcHRpb24sCit0aGUgZGVhdGggdGVzdCBpcyBjb25z
aWRlcmVkIHRvIGhhdmUgZmFpbGVkLiAgU29tZSBHb29nbGUgVGVzdCBtYWNyb3MgbWF5IHJldHVy
bgorZnJvbSB0aGUgY3VycmVudCBmdW5jdGlvbiAoZS5nLiBgQVNTRVJUX1RSVUUoKWApLCBzbyBi
ZSBzdXJlIHRvIGF2b2lkIHRoZW0gaW4gX3N0YXRlbWVudF8uCisKK1NpbmNlIF9zdGF0ZW1lbnRf
IHJ1bnMgaW4gdGhlIGNoaWxkIHByb2Nlc3MsIGFueSBpbi1tZW1vcnkgc2lkZSBlZmZlY3QgKGUu
Zy4KK21vZGlmeWluZyBhIHZhcmlhYmxlLCByZWxlYXNpbmcgbWVtb3J5LCBldGMpIGl0IGNhdXNl
cyB3aWxsIF9ub3RfIGJlIG9ic2VydmFibGUKK2luIHRoZSBwYXJlbnQgcHJvY2Vzcy4gSW4gcGFy
dGljdWxhciwgaWYgeW91IHJlbGVhc2UgbWVtb3J5IGluIGEgZGVhdGggdGVzdCwKK3lvdXIgcHJv
Z3JhbSB3aWxsIGZhaWwgdGhlIGhlYXAgY2hlY2sgYXMgdGhlIHBhcmVudCBwcm9jZXNzIHdpbGwg
bmV2ZXIgc2VlIHRoZQorbWVtb3J5IHJlY2xhaW1lZC4gVG8gc29sdmUgdGhpcyBwcm9ibGVtLCB5
b3UgY2FuCisKKyAgMS4gdHJ5IG5vdCB0byBmcmVlIG1lbW9yeSBpbiBhIGRlYXRoIHRlc3Q7Cisg
IDEuIGZyZWUgdGhlIG1lbW9yeSBhZ2FpbiBpbiB0aGUgcGFyZW50IHByb2Nlc3M7IG9yCisgIDEu
IGRvIG5vdCB1c2UgdGhlIGhlYXAgY2hlY2tlciBpbiB5b3VyIHByb2dyYW0uCisKK0R1ZSB0byBh
biBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIHlvdSBjYW5ub3QgcGxhY2UgbXVsdGlwbGUgZGVhdGgg
dGVzdAorYXNzZXJ0aW9ucyBvbiB0aGUgc2FtZSBsaW5lOyBvdGhlcndpc2UsIGNvbXBpbGF0aW9u
IHdpbGwgZmFpbCB3aXRoIGFuIHVub2J2aW91cworZXJyb3IgbWVzc2FnZS4KKworRGVzcGl0ZSB0
aGUgaW1wcm92ZWQgdGhyZWFkIHNhZmV0eSBhZmZvcmRlZCBieSB0aGUgInRocmVhZHNhZmUiIHN0
eWxlIG9mIGRlYXRoCit0ZXN0LCB0aHJlYWQgcHJvYmxlbXMgc3VjaCBhcyBkZWFkbG9jayBhcmUg
c3RpbGwgcG9zc2libGUgaW4gdGhlIHByZXNlbmNlIG9mCitoYW5kbGVycyByZWdpc3RlcmVkIHdp
dGggYHB0aHJlYWRfYXRmb3JrKDMpYC4KKworIyBVc2luZyBBc3NlcnRpb25zIGluIFN1Yi1yb3V0
aW5lcyAjCisKKyMjIEFkZGluZyBUcmFjZXMgdG8gQXNzZXJ0aW9ucyAjIworCitJZiBhIHRlc3Qg
c3ViLXJvdXRpbmUgaXMgY2FsbGVkIGZyb20gc2V2ZXJhbCBwbGFjZXMsIHdoZW4gYW4gYXNzZXJ0
aW9uCitpbnNpZGUgaXQgZmFpbHMsIGl0IGNhbiBiZSBoYXJkIHRvIHRlbGwgd2hpY2ggaW52b2Nh
dGlvbiBvZiB0aGUKK3N1Yi1yb3V0aW5lIHRoZSBmYWlsdXJlIGlzIGZyb20uICBZb3UgY2FuIGFs
bGV2aWF0ZSB0aGlzIHByb2JsZW0gdXNpbmcKK2V4dHJhIGxvZ2dpbmcgb3IgY3VzdG9tIGZhaWx1
cmUgbWVzc2FnZXMsIGJ1dCB0aGF0IHVzdWFsbHkgY2x1dHRlcnMgdXAKK3lvdXIgdGVzdHMuIEEg
YmV0dGVyIHNvbHV0aW9uIGlzIHRvIHVzZSB0aGUgYFNDT1BFRF9UUkFDRWAgbWFjcm86CisKK3wg
YFNDT1BFRF9UUkFDRShgX21lc3NhZ2VfYCk7YCB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfAorCit3aGVyZSBfbWVzc2FnZV8gY2FuIGJlIGFueXRoaW5nIHN0cmVhbWFibGUgdG8g
YHN0ZDo6b3N0cmVhbWAuIFRoaXMKK21hY3JvIHdpbGwgY2F1c2UgdGhlIGN1cnJlbnQgZmlsZSBu
YW1lLCBsaW5lIG51bWJlciwgYW5kIHRoZSBnaXZlbgorbWVzc2FnZSB0byBiZSBhZGRlZCBpbiBl
dmVyeSBmYWlsdXJlIG1lc3NhZ2UuIFRoZSBlZmZlY3Qgd2lsbCBiZQordW5kb25lIHdoZW4gdGhl
IGNvbnRyb2wgbGVhdmVzIHRoZSBjdXJyZW50IGxleGljYWwgc2NvcGUuCisKK0ZvciBleGFtcGxl
LAorCitgYGAKKzEwOiB2b2lkIFN1YjEoaW50IG4pIHsKKzExOiAgIEVYUEVDVF9FUSgxLCBCYXIo
bikpOworMTI6ICAgRVhQRUNUX0VRKDIsIEJhcihuICsgMSkpOworMTM6IH0KKzE0OgorMTU6IFRF
U1QoRm9vVGVzdCwgQmFyKSB7CisxNjogICB7CisxNzogICAgIFNDT1BFRF9UUkFDRSgiQSIpOyAg
Ly8gVGhpcyB0cmFjZSBwb2ludCB3aWxsIGJlIGluY2x1ZGVkIGluCisxODogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZXZlcnkgZmFpbHVyZSBpbiB0aGlzIHNjb3BlLgorMTk6ICAgICBTdWIx
KDEpOworMjA6ICAgfQorMjE6ICAgLy8gTm93IGl0IHdvbid0LgorMjI6ICAgU3ViMSg5KTsKKzIz
OiB9CitgYGAKKworY291bGQgcmVzdWx0IGluIG1lc3NhZ2VzIGxpa2UgdGhlc2U6CisKK2BgYAor
cGF0aC90by9mb29fdGVzdC5jYzoxMTogRmFpbHVyZQorVmFsdWUgb2Y6IEJhcihuKQorRXhwZWN0
ZWQ6IDEKKyAgQWN0dWFsOiAyCisgICBUcmFjZToKK3BhdGgvdG8vZm9vX3Rlc3QuY2M6MTc6IEEK
KworcGF0aC90by9mb29fdGVzdC5jYzoxMjogRmFpbHVyZQorVmFsdWUgb2Y6IEJhcihuICsgMSkK
K0V4cGVjdGVkOiAyCisgIEFjdHVhbDogMworYGBgCisKK1dpdGhvdXQgdGhlIHRyYWNlLCBpdCB3
b3VsZCd2ZSBiZWVuIGRpZmZpY3VsdCB0byBrbm93IHdoaWNoIGludm9jYXRpb24KK29mIGBTdWIx
KClgIHRoZSB0d28gZmFpbHVyZXMgY29tZSBmcm9tIHJlc3BlY3RpdmVseS4gKFlvdSBjb3VsZCBh
ZGQgYW4KK2V4dHJhIG1lc3NhZ2UgdG8gZWFjaCBhc3NlcnRpb24gaW4gYFN1YjEoKWAgdG8gaW5k
aWNhdGUgdGhlIHZhbHVlIG9mCitgbmAsIGJ1dCB0aGF0J3MgdGVkaW91cy4pCisKK1NvbWUgdGlw
cyBvbiB1c2luZyBgU0NPUEVEX1RSQUNFYDoKKworICAxLiBXaXRoIGEgc3VpdGFibGUgbWVzc2Fn
ZSwgaXQncyBvZnRlbiBlbm91Z2ggdG8gdXNlIGBTQ09QRURfVFJBQ0VgIGF0IHRoZSBiZWdpbm5p
bmcgb2YgYSBzdWItcm91dGluZSwgaW5zdGVhZCBvZiBhdCBlYWNoIGNhbGwgc2l0ZS4KKyAgMS4g
V2hlbiBjYWxsaW5nIHN1Yi1yb3V0aW5lcyBpbnNpZGUgYSBsb29wLCBtYWtlIHRoZSBsb29wIGl0
ZXJhdG9yIHBhcnQgb2YgdGhlIG1lc3NhZ2UgaW4gYFNDT1BFRF9UUkFDRWAgc3VjaCB0aGF0IHlv
dSBjYW4ga25vdyB3aGljaCBpdGVyYXRpb24gdGhlIGZhaWx1cmUgaXMgZnJvbS4KKyAgMS4gU29t
ZXRpbWVzIHRoZSBsaW5lIG51bWJlciBvZiB0aGUgdHJhY2UgcG9pbnQgaXMgZW5vdWdoIGZvciBp
ZGVudGlmeWluZyB0aGUgcGFydGljdWxhciBpbnZvY2F0aW9uIG9mIGEgc3ViLXJvdXRpbmUuIElu
IHRoaXMgY2FzZSwgeW91IGRvbid0IGhhdmUgdG8gY2hvb3NlIGEgdW5pcXVlIG1lc3NhZ2UgZm9y
IGBTQ09QRURfVFJBQ0VgLiBZb3UgY2FuIHNpbXBseSB1c2UgYCIiYC4KKyAgMS4gWW91IGNhbiB1
c2UgYFNDT1BFRF9UUkFDRWAgaW4gYW4gaW5uZXIgc2NvcGUgd2hlbiB0aGVyZSBpcyBvbmUgaW4g
dGhlIG91dGVyIHNjb3BlLiBJbiB0aGlzIGNhc2UsIGFsbCBhY3RpdmUgdHJhY2UgcG9pbnRzIHdp
bGwgYmUgaW5jbHVkZWQgaW4gdGhlIGZhaWx1cmUgbWVzc2FnZXMsIGluIHJldmVyc2Ugb3JkZXIg
dGhleSBhcmUgZW5jb3VudGVyZWQuCisgIDEuIFRoZSB0cmFjZSBkdW1wIGlzIGNsaWNrYWJsZSBp
biBFbWFjcycgY29tcGlsYXRpb24gYnVmZmVyIC0gaGl0IHJldHVybiBvbiBhIGxpbmUgbnVtYmVy
IGFuZCB5b3UnbGwgYmUgdGFrZW4gdG8gdGhhdCBsaW5lIGluIHRoZSBzb3VyY2UgZmlsZSEKKwor
X0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIFByb3BhZ2F0aW5nIEZh
dGFsIEZhaWx1cmVzICMjCisKK0EgY29tbW9uIHBpdGZhbGwgd2hlbiB1c2luZyBgQVNTRVJUXypg
IGFuZCBgRkFJTCpgIGlzIG5vdCB1bmRlcnN0YW5kaW5nIHRoYXQKK3doZW4gdGhleSBmYWlsIHRo
ZXkgb25seSBhYm9ydCB0aGUgX2N1cnJlbnQgZnVuY3Rpb25fLCBub3QgdGhlIGVudGlyZSB0ZXN0
LiBGb3IKK2V4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVzdCB3aWxsIHNlZ2ZhdWx0OgorYGBgCit2
b2lkIFN1YnJvdXRpbmUoKSB7CisgIC8vIEdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUgYW5kIGFi
b3J0cyB0aGUgY3VycmVudCBmdW5jdGlvbi4KKyAgQVNTRVJUX0VRKDEsIDIpOworICAvLyBUaGUg
Zm9sbG93aW5nIHdvbid0IGJlIGV4ZWN1dGVkLgorICAuLi4KK30KKworVEVTVChGb29UZXN0LCBC
YXIpIHsKKyAgU3Vicm91dGluZSgpOworICAvLyBUaGUgaW50ZW5kZWQgYmVoYXZpb3IgaXMgZm9y
IHRoZSBmYXRhbCBmYWlsdXJlCisgIC8vIGluIFN1YnJvdXRpbmUoKSB0byBhYm9ydCB0aGUgZW50
aXJlIHRlc3QuCisgIC8vIFRoZSBhY3R1YWwgYmVoYXZpb3I6IHRoZSBmdW5jdGlvbiBnb2VzIG9u
IGFmdGVyIFN1YnJvdXRpbmUoKSByZXR1cm5zLgorICBpbnQqIHAgPSBOVUxMOworICAqcCA9IDM7
IC8vIFNlZ2ZhdWx0IQorfQorYGBgCisKK1NpbmNlIHdlIGRvbid0IHVzZSBleGNlcHRpb25zLCBp
dCBpcyB0ZWNobmljYWxseSBpbXBvc3NpYmxlIHRvCitpbXBsZW1lbnQgdGhlIGludGVuZGVkIGJl
aGF2aW9yIGhlcmUuICBUbyBhbGxldmlhdGUgdGhpcywgR29vZ2xlIFRlc3QKK3Byb3ZpZGVzIHR3
byBzb2x1dGlvbnMuICBZb3UgY291bGQgdXNlIGVpdGhlciB0aGUKK2AoQVNTRVJUfEVYUEVDVClf
Tk9fRkFUQUxfRkFJTFVSRWAgYXNzZXJ0aW9ucyBvciB0aGUKK2BIYXNGYXRhbEZhaWx1cmUoKWAg
ZnVuY3Rpb24uICBUaGV5IGFyZSBkZXNjcmliZWQgaW4gdGhlIGZvbGxvd2luZyB0d28KK3N1YnNl
Y3Rpb25zLgorCisjIyMgQXNzZXJ0aW5nIG9uIFN1YnJvdXRpbmVzICMjIworCitBcyBzaG93biBh
Ym92ZSwgaWYgeW91ciB0ZXN0IGNhbGxzIGEgc3Vicm91dGluZSB0aGF0IGhhcyBhbiBgQVNTRVJU
XypgCitmYWlsdXJlIGluIGl0LCB0aGUgdGVzdCB3aWxsIGNvbnRpbnVlIGFmdGVyIHRoZSBzdWJy
b3V0aW5lCityZXR1cm5zLiBUaGlzIG1heSBub3QgYmUgd2hhdCB5b3Ugd2FudC4KKworT2Z0ZW4g
cGVvcGxlIHdhbnQgZmF0YWwgZmFpbHVyZXMgdG8gcHJvcGFnYXRlIGxpa2UgZXhjZXB0aW9ucy4g
IEZvcgordGhhdCBHb29nbGUgVGVzdCBvZmZlcnMgdGhlIGZvbGxvd2luZyBtYWNyb3M6CisKK3wg
KipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVz
KiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShgX3N0YXRlbWVudF9gKTtg
IHwgYEVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50X2ApO2AgfCBfc3RhdGVtZW50
XyBkb2Vzbid0IGdlbmVyYXRlIGFueSBuZXcgZmF0YWwgZmFpbHVyZXMgaW4gdGhlIGN1cnJlbnQg
dGhyZWFkLiB8CisKK09ubHkgZmFpbHVyZXMgaW4gdGhlIHRocmVhZCB0aGF0IGV4ZWN1dGVzIHRo
ZSBhc3NlcnRpb24gYXJlIGNoZWNrZWQgdG8KK2RldGVybWluZSB0aGUgcmVzdWx0IG9mIHRoaXMg
dHlwZSBvZiBhc3NlcnRpb25zLiAgSWYgX3N0YXRlbWVudF8KK2NyZWF0ZXMgbmV3IHRocmVhZHMs
IGZhaWx1cmVzIGluIHRoZXNlIHRocmVhZHMgYXJlIGlnbm9yZWQuCisKK0V4YW1wbGVzOgorCitg
YGAKK0FTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEZvbygpKTsKKworaW50IGk7CitFWFBFQ1RfTk9f
RkFUQUxfRkFJTFVSRSh7CisgIGkgPSBCYXIoKTsKK30pOworYGBgCisKK19BdmFpbGFiaWxpdHk6
XyBMaW51eCwgV2luZG93cywgTWFjLiBBc3NlcnRpb25zIGZyb20gbXVsdGlwbGUgdGhyZWFkcwor
YXJlIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgorCisjIyMgQ2hlY2tpbmcgZm9yIEZhaWx1cmVz
IGluIHRoZSBDdXJyZW50IFRlc3QgIyMjCisKK2BIYXNGYXRhbEZhaWx1cmUoKWAgaW4gdGhlIGA6
OnRlc3Rpbmc6OlRlc3RgIGNsYXNzIHJldHVybnMgYHRydWVgIGlmIGFuCithc3NlcnRpb24gaW4g
dGhlIGN1cnJlbnQgdGVzdCBoYXMgc3VmZmVyZWQgYSBmYXRhbCBmYWlsdXJlLiBUaGlzCithbGxv
d3MgZnVuY3Rpb25zIHRvIGNhdGNoIGZhdGFsIGZhaWx1cmVzIGluIGEgc3ViLXJvdXRpbmUgYW5k
IHJldHVybgorZWFybHkuCisKK2BgYAorY2xhc3MgVGVzdCB7CisgcHVibGljOgorICAuLi4KKyAg
c3RhdGljIGJvb2wgSGFzRmF0YWxGYWlsdXJlKCk7Cit9OworYGBgCisKK1RoZSB0eXBpY2FsIHVz
YWdlLCB3aGljaCBiYXNpY2FsbHkgc2ltdWxhdGVzIHRoZSBiZWhhdmlvciBvZiBhIHRocm93bgor
ZXhjZXB0aW9uLCBpczoKKworYGBgCitURVNUKEZvb1Rlc3QsIEJhcikgeworICBTdWJyb3V0aW5l
KCk7CisgIC8vIEFib3J0cyBpZiBTdWJyb3V0aW5lKCkgaGFkIGEgZmF0YWwgZmFpbHVyZS4KKyAg
aWYgKEhhc0ZhdGFsRmFpbHVyZSgpKQorICAgIHJldHVybjsKKyAgLy8gVGhlIGZvbGxvd2luZyB3
b24ndCBiZSBleGVjdXRlZC4KKyAgLi4uCit9CitgYGAKKworSWYgYEhhc0ZhdGFsRmFpbHVyZSgp
YCBpcyB1c2VkIG91dHNpZGUgb2YgYFRFU1QoKWAgLCBgVEVTVF9GKClgICwgb3IgYSB0ZXN0Citm
aXh0dXJlLCB5b3UgbXVzdCBhZGQgdGhlIGA6OnRlc3Rpbmc6OlRlc3Q6OmAgcHJlZml4LCBhcyBp
bjoKKworYGBgCitpZiAoOjp0ZXN0aW5nOjpUZXN0OjpIYXNGYXRhbEZhaWx1cmUoKSkKKyAgcmV0
dXJuOworYGBgCisKK1NpbWlsYXJseSwgYEhhc05vbmZhdGFsRmFpbHVyZSgpYCByZXR1cm5zIGB0
cnVlYCBpZiB0aGUgY3VycmVudCB0ZXN0CitoYXMgYXQgbGVhc3Qgb25lIG5vbi1mYXRhbCBmYWls
dXJlLCBhbmQgYEhhc0ZhaWx1cmUoKWAgcmV0dXJucyBgdHJ1ZWAKK2lmIHRoZSBjdXJyZW50IHRl
c3QgaGFzIGF0IGxlYXN0IG9uZSBmYWlsdXJlIG9mIGVpdGhlciBraW5kLgorCitfQXZhaWxhYmls
aXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4gIGBIYXNOb25mYXRhbEZhaWx1cmUoKWAgYW5kCitg
SGFzRmFpbHVyZSgpYCBhcmUgYXZhaWxhYmxlIHNpbmNlIHZlcnNpb24gMS40LjAuCisKKyMgTG9n
Z2luZyBBZGRpdGlvbmFsIEluZm9ybWF0aW9uICMKKworSW4geW91ciB0ZXN0IGNvZGUsIHlvdSBj
YW4gY2FsbCBgUmVjb3JkUHJvcGVydHkoImtleSIsIHZhbHVlKWAgdG8gbG9nCithZGRpdGlvbmFs
IGluZm9ybWF0aW9uLCB3aGVyZSBgdmFsdWVgIGNhbiBiZSBlaXRoZXIgYSBDIHN0cmluZyBvciBh
IDMyLWJpdAoraW50ZWdlci4gVGhlIF9sYXN0XyB2YWx1ZSByZWNvcmRlZCBmb3IgYSBrZXkgd2ls
bCBiZSBlbWl0dGVkIHRvIHRoZSBYTUwgb3V0cHV0CitpZiB5b3Ugc3BlY2lmeSBvbmUuIEZvciBl
eGFtcGxlLCB0aGUgdGVzdAorCitgYGAKK1RFU1RfRihXaWRnZXRVc2FnZVRlc3QsIE1pbkFuZE1h
eFdpZGdldHMpIHsKKyAgUmVjb3JkUHJvcGVydHkoIk1heGltdW1XaWRnZXRzIiwgQ29tcHV0ZU1h
eFVzYWdlKCkpOworICBSZWNvcmRQcm9wZXJ0eSgiTWluaW11bVdpZGdldHMiLCBDb21wdXRlTWlu
VXNhZ2UoKSk7Cit9CitgYGAKKword2lsbCBvdXRwdXQgWE1MIGxpa2UgdGhpczoKKworYGBgCisu
Li4KKyAgPHRlc3RjYXNlIG5hbWU9Ik1pbkFuZE1heFdpZGdldHMiIHN0YXR1cz0icnVuIiB0aW1l
PSI2IiBjbGFzc25hbWU9IldpZGdldFVzYWdlVGVzdCIKKyAgICAgICAgICAgIE1heGltdW1XaWRn
ZXRzPSIxMiIKKyAgICAgICAgICAgIE1pbmltdW1XaWRnZXRzPSI5IiAvPgorLi4uCitgYGAKKwor
X05vdGVfOgorICAqIGBSZWNvcmRQcm9wZXJ0eSgpYCBpcyBhIHN0YXRpYyBtZW1iZXIgb2YgdGhl
IGBUZXN0YCBjbGFzcy4gVGhlcmVmb3JlIGl0IG5lZWRzIHRvIGJlIHByZWZpeGVkIHdpdGggYDo6
dGVzdGluZzo6VGVzdDo6YCBpZiB1c2VkIG91dHNpZGUgb2YgdGhlIGBURVNUYCBib2R5IGFuZCB0
aGUgdGVzdCBmaXh0dXJlIGNsYXNzLgorICAqIGBrZXlgIG11c3QgYmUgYSB2YWxpZCBYTUwgYXR0
cmlidXRlIG5hbWUsIGFuZCBjYW5ub3QgY29uZmxpY3Qgd2l0aCB0aGUgb25lcyBhbHJlYWR5IHVz
ZWQgYnkgR29vZ2xlIFRlc3QgKGBuYW1lYCwgYHN0YXR1c2AsICAgICBgdGltZWAsIGFuZCBgY2xh
c3NuYW1lYCkuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIFNo
YXJpbmcgUmVzb3VyY2VzIEJldHdlZW4gVGVzdHMgaW4gdGhlIFNhbWUgVGVzdCBDYXNlICMKKwor
CisKK0dvb2dsZSBUZXN0IGNyZWF0ZXMgYSBuZXcgdGVzdCBmaXh0dXJlIG9iamVjdCBmb3IgZWFj
aCB0ZXN0IGluIG9yZGVyIHRvIG1ha2UKK3Rlc3RzIGluZGVwZW5kZW50IGFuZCBlYXNpZXIgdG8g
ZGVidWcuIEhvd2V2ZXIsIHNvbWV0aW1lcyB0ZXN0cyB1c2UgcmVzb3VyY2VzCit0aGF0IGFyZSBl
eHBlbnNpdmUgdG8gc2V0IHVwLCBtYWtpbmcgdGhlIG9uZS1jb3B5LXBlci10ZXN0IG1vZGVsIHBy
b2hpYml0aXZlbHkKK2V4cGVuc2l2ZS4KKworSWYgdGhlIHRlc3RzIGRvbid0IGNoYW5nZSB0aGUg
cmVzb3VyY2UsIHRoZXJlJ3Mgbm8gaGFybSBpbiB0aGVtIHNoYXJpbmcgYQorc2luZ2xlIHJlc291
cmNlIGNvcHkuIFNvLCBpbiBhZGRpdGlvbiB0byBwZXItdGVzdCBzZXQtdXAvdGVhci1kb3duLCBH
b29nbGUgVGVzdAorYWxzbyBzdXBwb3J0cyBwZXItdGVzdC1jYXNlIHNldC11cC90ZWFyLWRvd24u
IFRvIHVzZSBpdDoKKworICAxLiBJbiB5b3VyIHRlc3QgZml4dHVyZSBjbGFzcyAoc2F5IGBGb29U
ZXN0YCApLCBkZWZpbmUgYXMgYHN0YXRpY2Agc29tZSBtZW1iZXIgdmFyaWFibGVzIHRvIGhvbGQg
dGhlIHNoYXJlZCByZXNvdXJjZXMuCisgIDEuIEluIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBjbGFz
cywgZGVmaW5lIGEgYHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKWAgZnVuY3Rpb24gKHJlbWVt
YmVyIG5vdCB0byBzcGVsbCBpdCBhcyAqKmBTZXR1cFRlc3RDYXNlYCoqIHdpdGggYSBzbWFsbCBg
dWAhKSB0byBzZXQgdXAgdGhlIHNoYXJlZCByZXNvdXJjZXMgYW5kIGEgYHN0YXRpYyB2b2lkIFRl
YXJEb3duVGVzdENhc2UoKWAgZnVuY3Rpb24gdG8gdGVhciB0aGVtIGRvd24uCisKK1RoYXQncyBp
dCEgR29vZ2xlIFRlc3QgYXV0b21hdGljYWxseSBjYWxscyBgU2V0VXBUZXN0Q2FzZSgpYCBiZWZv
cmUgcnVubmluZyB0aGUKK19maXJzdCB0ZXN0XyBpbiB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZSAo
aS5lLiBiZWZvcmUgY3JlYXRpbmcgdGhlIGZpcnN0CitgRm9vVGVzdGAgb2JqZWN0KSwgYW5kIGNh
bGxzIGBUZWFyRG93blRlc3RDYXNlKClgIGFmdGVyIHJ1bm5pbmcgdGhlIF9sYXN0IHRlc3RfCitp
biBpdCAoaS5lLiBhZnRlciBkZWxldGluZyB0aGUgbGFzdCBgRm9vVGVzdGAgb2JqZWN0KS4gSW4g
YmV0d2VlbiwgdGhlIHRlc3RzCitjYW4gdXNlIHRoZSBzaGFyZWQgcmVzb3VyY2VzLgorCitSZW1l
bWJlciB0aGF0IHRoZSB0ZXN0IG9yZGVyIGlzIHVuZGVmaW5lZCwgc28geW91ciBjb2RlIGNhbid0
IGRlcGVuZCBvbiBhIHRlc3QKK3ByZWNlZGluZyBvciBmb2xsb3dpbmcgYW5vdGhlci4gQWxzbywg
dGhlIHRlc3RzIG11c3QgZWl0aGVyIG5vdCBtb2RpZnkgdGhlCitzdGF0ZSBvZiBhbnkgc2hhcmVk
IHJlc291cmNlLCBvciwgaWYgdGhleSBkbyBtb2RpZnkgdGhlIHN0YXRlLCB0aGV5IG11c3QKK3Jl
c3RvcmUgdGhlIHN0YXRlIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZSBiZWZvcmUgcGFzc2luZyBjb250
cm9sIHRvIHRoZSBuZXh0Cit0ZXN0LgorCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBwZXItdGVzdC1j
YXNlIHNldC11cCBhbmQgdGVhci1kb3duOgorYGBgCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAvLyBQZXItdGVzdC1jYXNlIHNldC11cC4K
KyAgLy8gQ2FsbGVkIGJlZm9yZSB0aGUgZmlyc3QgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZS4KKyAg
Ly8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90IG5lZWRlZC4KKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0
Q2FzZSgpIHsKKyAgICBzaGFyZWRfcmVzb3VyY2VfID0gbmV3IC4uLjsKKyAgfQorCisgIC8vIFBl
ci10ZXN0LWNhc2UgdGVhci1kb3duLgorICAvLyBDYWxsZWQgYWZ0ZXIgdGhlIGxhc3QgdGVzdCBp
biB0aGlzIHRlc3QgY2FzZS4KKyAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90IG5lZWRlZC4KKyAg
c3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBkZWxldGUgc2hhcmVkX3Jlc291
cmNlXzsKKyAgICBzaGFyZWRfcmVzb3VyY2VfID0gTlVMTDsKKyAgfQorCisgIC8vIFlvdSBjYW4g
ZGVmaW5lIHBlci10ZXN0IHNldC11cCBhbmQgdGVhci1kb3duIGxvZ2ljIGFzIHVzdWFsLgorICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IC4uLiB9CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsg
Li4uIH0KKworICAvLyBTb21lIGV4cGVuc2l2ZSByZXNvdXJjZSBzaGFyZWQgYnkgYWxsIHRlc3Rz
LgorICBzdGF0aWMgVCogc2hhcmVkX3Jlc291cmNlXzsKK307CisKK1QqIEZvb1Rlc3Q6OnNoYXJl
ZF9yZXNvdXJjZV8gPSBOVUxMOworCitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgLi4uIHlv
dSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlIGhlcmUgLi4uCit9CitURVNUX0YoRm9vVGVz
dCwgVGVzdDIpIHsKKyAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlIGhlcmUg
Li4uCit9CitgYGAKKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMg
R2xvYmFsIFNldC1VcCBhbmQgVGVhci1Eb3duICMKKworSnVzdCBhcyB5b3UgY2FuIGRvIHNldC11
cCBhbmQgdGVhci1kb3duIGF0IHRoZSB0ZXN0IGxldmVsIGFuZCB0aGUgdGVzdCBjYXNlCitsZXZl
bCwgeW91IGNhbiBhbHNvIGRvIGl0IGF0IHRoZSB0ZXN0IHByb2dyYW0gbGV2ZWwuIEhlcmUncyBo
b3cuCisKK0ZpcnN0LCB5b3Ugc3ViY2xhc3MgdGhlIGA6OnRlc3Rpbmc6OkVudmlyb25tZW50YCBj
bGFzcyB0byBkZWZpbmUgYSB0ZXN0CitlbnZpcm9ubWVudCwgd2hpY2gga25vd3MgaG93IHRvIHNl
dC11cCBhbmQgdGVhci1kb3duOgorCitgYGAKK2NsYXNzIEVudmlyb25tZW50IHsKKyBwdWJsaWM6
CisgIHZpcnR1YWwgfkVudmlyb25tZW50KCkge30KKyAgLy8gT3ZlcnJpZGUgdGhpcyB0byBkZWZp
bmUgaG93IHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQuCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgp
IHt9CisgIC8vIE92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGhvdyB0byB0ZWFyIGRvd24gdGhlIGVu
dmlyb25tZW50LgorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7fQorfTsKK2BgYAorCitUaGVu
LCB5b3UgcmVnaXN0ZXIgYW4gaW5zdGFuY2Ugb2YgeW91ciBlbnZpcm9ubWVudCBjbGFzcyB3aXRo
IEdvb2dsZSBUZXN0IGJ5CitjYWxsaW5nIHRoZSBgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52
aXJvbm1lbnQoKWAgZnVuY3Rpb246CisKK2BgYAorRW52aXJvbm1lbnQqIEFkZEdsb2JhbFRlc3RF
bnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KTsKK2BgYAorCitOb3csIHdoZW4gYFJVTl9BTExf
VEVTVFMoKWAgaXMgY2FsbGVkLCBpdCBmaXJzdCBjYWxscyB0aGUgYFNldFVwKClgIG1ldGhvZCBv
ZgordGhlIGVudmlyb25tZW50IG9iamVjdCwgdGhlbiBydW5zIHRoZSB0ZXN0cyBpZiB0aGVyZSB3
YXMgbm8gZmF0YWwgZmFpbHVyZXMsIGFuZAorZmluYWxseSBjYWxscyBgVGVhckRvd24oKWAgb2Yg
dGhlIGVudmlyb25tZW50IG9iamVjdC4KKworSXQncyBPSyB0byByZWdpc3RlciBtdWx0aXBsZSBl
bnZpcm9ubWVudCBvYmplY3RzLiBJbiB0aGlzIGNhc2UsIHRoZWlyIGBTZXRVcCgpYAord2lsbCBi
ZSBjYWxsZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIHJlZ2lzdGVyZWQsIGFuZCB0aGVpciBgVGVh
ckRvd24oKWAgd2lsbCBiZQorY2FsbGVkIGluIHRoZSByZXZlcnNlIG9yZGVyLgorCitOb3RlIHRo
YXQgR29vZ2xlIFRlc3QgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSByZWdpc3RlcmVkIGVudmlyb25t
ZW50IG9iamVjdHMuCitUaGVyZWZvcmUgKipkbyBub3QgZGVsZXRlIHRoZW0qKiBieSB5b3Vyc2Vs
Zi4KKworWW91IHNob3VsZCBjYWxsIGBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgYmVmb3Jl
IGBSVU5fQUxMX1RFU1RTKClgIGlzCitjYWxsZWQsIHByb2JhYmx5IGluIGBtYWluKClgLiBJZiB5
b3UgdXNlIGBndGVzdF9tYWluYCwgeW91IG5lZWQgdG8gICAgICBjYWxsCit0aGlzIGJlZm9yZSBg
bWFpbigpYCBzdGFydHMgZm9yIGl0IHRvIHRha2UgZWZmZWN0LiBPbmUgd2F5IHRvIGRvIHRoaXMg
aXMgdG8KK2RlZmluZSBhIGdsb2JhbCB2YXJpYWJsZSBsaWtlIHRoaXM6CisKK2BgYAorOjp0ZXN0
aW5nOjpFbnZpcm9ubWVudCogY29uc3QgZm9vX2VudiA9IDo6dGVzdGluZzo6QWRkR2xvYmFsVGVz
dEVudmlyb25tZW50KG5ldyBGb29FbnZpcm9ubWVudCk7CitgYGAKKworSG93ZXZlciwgd2Ugc3Ry
b25nbHkgcmVjb21tZW5kIHlvdSB0byB3cml0ZSB5b3VyIG93biBgbWFpbigpYCBhbmQgY2FsbAor
YEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCB0aGVyZSwgYXMgcmVseWluZyBvbiBpbml0aWFs
aXphdGlvbiBvZiBnbG9iYWwKK3ZhcmlhYmxlcyBtYWtlcyB0aGUgY29kZSBoYXJkZXIgdG8gcmVh
ZCBhbmQgbWF5IGNhdXNlIHByb2JsZW1zIHdoZW4geW91CityZWdpc3RlciBtdWx0aXBsZSBlbnZp
cm9ubWVudHMgZnJvbSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMgYW5kIHRoZQorZW52aXJv
bm1lbnRzIGhhdmUgZGVwZW5kZW5jaWVzIGFtb25nIHRoZW0gKHJlbWVtYmVyIHRoYXQgdGhlIGNv
bXBpbGVyIGRvZXNuJ3QKK2d1YXJhbnRlZSB0aGUgb3JkZXIgaW4gd2hpY2ggZ2xvYmFsIHZhcmlh
YmxlcyBmcm9tIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cworYXJlIGluaXRpYWxpemVkKS4K
KworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKworIyBWYWx1ZSBQYXJh
bWV0ZXJpemVkIFRlc3RzICMKKworX1ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHNfIGFsbG93IHlv
dSB0byB0ZXN0IHlvdXIgY29kZSB3aXRoIGRpZmZlcmVudAorcGFyYW1ldGVycyB3aXRob3V0IHdy
aXRpbmcgbXVsdGlwbGUgY29waWVzIG9mIHRoZSBzYW1lIHRlc3QuCisKK1N1cHBvc2UgeW91IHdy
aXRlIGEgdGVzdCBmb3IgeW91ciBjb2RlIGFuZCB0aGVuIHJlYWxpemUgdGhhdCB5b3VyIGNvZGUg
aXMgYWZmZWN0ZWQgYnkgYSBwcmVzZW5jZSBvZiBhIEJvb2xlYW4gY29tbWFuZCBsaW5lIGZsYWcu
CisKK2BgYAorVEVTVChNeUNvZGVUZXN0LCBUZXN0Rm9vKSB7CisgIC8vIEEgY29kZSB0byB0ZXN0
IGZvbygpLgorfQorYGBgCisKK1VzdWFsbHkgcGVvcGxlIGZhY3RvciB0aGVpciB0ZXN0IGNvZGUg
aW50byBhIGZ1bmN0aW9uIHdpdGggYSBCb29sZWFuIHBhcmFtZXRlciBpbiBzdWNoIHNpdHVhdGlv
bnMuIFRoZSBmdW5jdGlvbiBzZXRzIHRoZSBmbGFnLCB0aGVuIGV4ZWN1dGVzIHRoZSB0ZXN0aW5n
IGNvZGUuCisKK2BgYAordm9pZCBUZXN0Rm9vSGVscGVyKGJvb2wgZmxhZ192YWx1ZSkgeworICBm
bGFnID0gZmxhZ192YWx1ZTsKKyAgLy8gQSBjb2RlIHRvIHRlc3QgZm9vKCkuCit9CisKK1RFU1Qo
TXlDb2RlVGVzdCwgVGVzdEZvb28pIHsKKyAgVGVzdEZvb0hlbHBlcihmYWxzZSk7CisgIFRlc3RG
b29IZWxwZXIodHJ1ZSk7Cit9CitgYGAKKworQnV0IHRoaXMgc2V0dXAgaGFzIHNlcmlvdXMgZHJh
d2JhY2tzLiBGaXJzdCwgd2hlbiBhIHRlc3QgYXNzZXJ0aW9uIGZhaWxzIGluIHlvdXIgdGVzdHMs
IGl0IGJlY29tZXMgdW5jbGVhciB3aGF0IHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgY2F1c2VkIGl0
IHRvIGZhaWwuIFlvdSBjYW4gc3RyZWFtIGEgY2xhcmlmeWluZyBtZXNzYWdlIGludG8geW91ciBg
RVhQRUNUYC9gQVNTRVJUYCBzdGF0ZW1lbnRzLCBidXQgaXQgeW91J2xsIGhhdmUgdG8gZG8gaXQg
d2l0aCBhbGwgb2YgdGhlbS4gU2Vjb25kLCB5b3UgaGF2ZSB0byBhZGQgb25lIHN1Y2ggaGVscGVy
IGZ1bmN0aW9uIHBlciB0ZXN0LiBXaGF0IGlmIHlvdSBoYXZlIHRlbiB0ZXN0cz8gVHdlbnR5PyBB
IGh1bmRyZWQ/CisKK1ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgd2lsbCBsZXQgeW91IHdyaXRl
IHlvdXIgdGVzdCBvbmx5IG9uY2UgYW5kIHRoZW4gZWFzaWx5IGluc3RhbnRpYXRlIGFuZCBydW4g
aXQgd2l0aCBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHBhcmFtZXRlciB2YWx1ZXMuCisKK0hlcmUg
YXJlIHNvbWUgb3RoZXIgc2l0dWF0aW9ucyB3aGVuIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMg
Y29tZSBoYW5keToKKworICAqIFlvdSB3YW50IHRvIHRlc3QgZGlmZmVyZW50IGltcGxlbWVudGF0
aW9ucyBvZiBhbiBPTyBpbnRlcmZhY2UuCisgICogWW91IHdhbnQgdG8gdGVzdCB5b3VyIGNvZGUg
b3ZlciB2YXJpb3VzIGlucHV0cyAoYS5rLmEuIGRhdGEtZHJpdmVuIHRlc3RpbmcpLiBUaGlzIGZl
YXR1cmUgaXMgZWFzeSB0byBhYnVzZSwgc28gcGxlYXNlIGV4ZXJjaXNlIHlvdXIgZ29vZCBzZW5z
ZSB3aGVuIGRvaW5nIGl0IQorCisjIyBIb3cgdG8gV3JpdGUgVmFsdWUtUGFyYW1ldGVyaXplZCBU
ZXN0cyAjIworCitUbyB3cml0ZSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLCBmaXJzdCB5b3Ug
c2hvdWxkIGRlZmluZSBhIGZpeHR1cmUKK2NsYXNzLiAgSXQgbXVzdCBiZSBkZXJpdmVkIGZyb20g
Ym90aCBgOjp0ZXN0aW5nOjpUZXN0YCBhbmQKK2A6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFj
ZTxUPmAgKHRoZSBsYXR0ZXIgaXMgYSBwdXJlIGludGVyZmFjZSksCit3aGVyZSBgVGAgaXMgdGhl
IHR5cGUgb2YgeW91ciBwYXJhbWV0ZXIgdmFsdWVzLiAgRm9yIGNvbnZlbmllbmNlLCB5b3UKK2Nh
biBqdXN0IGRlcml2ZSB0aGUgZml4dHVyZSBjbGFzcyBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RXaXRo
UGFyYW08VD5gLAord2hpY2ggaXRzZWxmIGlzIGRlcml2ZWQgZnJvbSBib3RoIGA6OnRlc3Rpbmc6
OlRlc3RgIGFuZAorYDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPFQ+YC4gYFRgIGNhbiBi
ZSBhbnkgY29weWFibGUgdHlwZS4gSWYKK2l0J3MgYSByYXcgcG9pbnRlciwgeW91IGFyZSByZXNw
b25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIGxpZmVzcGFuIG9mCit0aGUgcG9pbnRlZCB2YWx1ZXMu
CisKK2BgYAorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08
Y29uc3QgY2hhcio+IHsKKyAgLy8gWW91IGNhbiBpbXBsZW1lbnQgYWxsIHRoZSB1c3VhbCBmaXh0
dXJlIGNsYXNzIG1lbWJlcnMgaGVyZS4KKyAgLy8gVG8gYWNjZXNzIHRoZSB0ZXN0IHBhcmFtZXRl
ciwgY2FsbCBHZXRQYXJhbSgpIGZyb20gY2xhc3MKKyAgLy8gVGVzdFdpdGhQYXJhbTxUPi4KK307
CisKKy8vIE9yLCB3aGVuIHlvdSB3YW50IHRvIGFkZCBwYXJhbWV0ZXJzIHRvIGEgcHJlLWV4aXN0
aW5nIGZpeHR1cmUgY2xhc3M6CitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3QgeworICAuLi4KK307CitjbGFzcyBCYXJUZXN0IDogcHVibGljIEJhc2VUZXN0LAorICAgICAg
ICAgICAgICAgIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxjb25zdCBjaGFy
Kj4geworICAuLi4KK307CitgYGAKKworVGhlbiwgdXNlIHRoZSBgVEVTVF9QYCBtYWNybyB0byBk
ZWZpbmUgYXMgbWFueSB0ZXN0IHBhdHRlcm5zIHVzaW5nCit0aGlzIGZpeHR1cmUgYXMgeW91IHdh
bnQuICBUaGUgYF9QYCBzdWZmaXggaXMgZm9yICJwYXJhbWV0ZXJpemVkIiBvcgorInBhdHRlcm4i
LCB3aGljaGV2ZXIgeW91IHByZWZlciB0byB0aGluay4KKworYGBgCitURVNUX1AoRm9vVGVzdCwg
RG9lc0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgYWNjZXNzIHRoZSB0ZXN0IHBhcmFtZXRl
ciB3aXRoIHRoZSBHZXRQYXJhbSgpIG1ldGhvZAorICAvLyBvZiB0aGUgVGVzdFdpdGhQYXJhbTxU
PiBjbGFzczoKKyAgRVhQRUNUX1RSVUUoZm9vLkJsYWgoR2V0UGFyYW0oKSkpOworICAuLi4KK30K
KworVEVTVF9QKEZvb1Rlc3QsIEhhc0JsYWhCbGFoKSB7CisgIC4uLgorfQorYGBgCisKK0ZpbmFs
bHksIHlvdSBjYW4gdXNlIGBJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgdG8gaW5zdGFudGlhdGUg
dGhlIHRlc3QKK2Nhc2Ugd2l0aCBhbnkgc2V0IG9mIHBhcmFtZXRlcnMgeW91IHdhbnQuIEdvb2ds
ZSBUZXN0IGRlZmluZXMgYSBudW1iZXIgb2YKK2Z1bmN0aW9ucyBmb3IgZ2VuZXJhdGluZyB0ZXN0
IHBhcmFtZXRlcnMuIFRoZXkgcmV0dXJuIHdoYXQgd2UgY2FsbAorKHN1cnByaXNlISkgX3BhcmFt
ZXRlciBnZW5lcmF0b3JzXy4gSGVyZSBpcyBhIHN1bW1hcnkgb2YgdGhlbSwKK3doaWNoIGFyZSBh
bGwgaW4gdGhlIGB0ZXN0aW5nYCBuYW1lc3BhY2U6CisKK3wgYFJhbmdlKGJlZ2luLCBlbmRbLCBz
dGVwXSlgIHwgWWllbGRzIHZhbHVlcyBge2JlZ2luLCBiZWdpbitzdGVwLCBiZWdpbitzdGVwK3N0
ZXAsIC4uLn1gLiBUaGUgdmFsdWVzIGRvIG5vdCBpbmNsdWRlIGBlbmRgLiBgc3RlcGAgZGVmYXVs
dHMgdG8gMS4gfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGBWYWx1ZXMo
djEsIHYyLCAuLi4sIHZOKWAgICB8IFlpZWxkcyB2YWx1ZXMgYHt2MSwgdjIsIC4uLiwgdk59YC4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYFZhbHVlc0luKGNvbnRhaW5lcilgIGFuZCBgVmFs
dWVzSW4oYmVnaW4sIGVuZClgIHwgWWllbGRzIHZhbHVlcyBmcm9tIGEgQy1zdHlsZSBhcnJheSwg
YW4gU1RMLXN0eWxlIGNvbnRhaW5lciwgb3IgYW4gaXRlcmF0b3IgcmFuZ2UgYFtiZWdpbiwgZW5k
KWAuIGBjb250YWluZXJgLCBgYmVnaW5gLCBhbmQgYGVuZGAgY2FuIGJlIGV4cHJlc3Npb25zIHdo
b3NlIHZhbHVlcyBhcmUgZGV0ZXJtaW5lZCBhdCBydW4gdGltZS4gIHwKK3wgYEJvb2woKWAgICAg
ICAgICAgICAgICAgICAgIHwgWWllbGRzIHNlcXVlbmNlIGB7ZmFsc2UsIHRydWV9YC4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorfCBgQ29tYmluZShnMSwgZzIsIC4uLiwgZ04pYCAgfCBZaWVs
ZHMgYWxsIGNvbWJpbmF0aW9ucyAodGhlIENhcnRlc2lhbiBwcm9kdWN0IGZvciB0aGUgbWF0aCBz
YXZ2eSkgb2YgdGhlIHZhbHVlcyBnZW5lcmF0ZWQgYnkgdGhlIGBOYCBnZW5lcmF0b3JzLiBUaGlz
IGlzIG9ubHkgYXZhaWxhYmxlIGlmIHlvdXIgc3lzdGVtIHByb3ZpZGVzIHRoZSBgPHRyMS90dXBs
ZT5gIGhlYWRlci4gSWYgeW91IGFyZSBzdXJlIHlvdXIgc3lzdGVtIGRvZXMsIGFuZCBHb29nbGUg
VGVzdCBkaXNhZ3JlZXMsIHlvdSBjYW4gb3ZlcnJpZGUgaXQgYnkgZGVmaW5pbmcgYEdURVNUX0hB
U19UUjFfVFVQTEU9MWAuIFNlZSBjb21tZW50cyBpbiBbaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9n
dGVzdC1wb3J0LmhdKC4uL2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oKSBmb3Ig
bW9yZSBpbmZvcm1hdGlvbi4gfAorCitGb3IgbW9yZSBkZXRhaWxzLCBzZWUgdGhlIGNvbW1lbnRz
IGF0IHRoZSBkZWZpbml0aW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMgaW4gdGhlIFtzb3VyY2UgY29k
ZV0oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgpLgorCitUaGUgZm9sbG93aW5n
IHN0YXRlbWVudCB3aWxsIGluc3RhbnRpYXRlIHRlc3RzIGZyb20gdGhlIGBGb29UZXN0YCB0ZXN0
IGNhc2UKK2VhY2ggd2l0aCBwYXJhbWV0ZXIgdmFsdWVzIGAibWVlbnkiYCwgYCJtaW55ImAsIGFu
ZCBgIm1vZSJgLgorCitgYGAKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEluc3RhbnRpYXRpb25O
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgRm9vVGVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKCJtZWVueSIsICJtaW55IiwgIm1vZSIpKTsKK2BgYAor
CitUbyBkaXN0aW5ndWlzaCBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIHRoZSBwYXR0ZXJuICh5ZXMs
IHlvdSBjYW4KK2luc3RhbnRpYXRlIGl0IG1vcmUgdGhhbiBvbmNlKSwgdGhlIGZpcnN0IGFyZ3Vt
ZW50IHRvCitgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIGlzIGEgcHJlZml4IHRoYXQgd2lsbCBi
ZSBhZGRlZCB0byB0aGUgYWN0dWFsCit0ZXN0IGNhc2UgbmFtZS4gUmVtZW1iZXIgdG8gcGljayB1
bmlxdWUgcHJlZml4ZXMgZm9yIGRpZmZlcmVudAoraW5zdGFudGlhdGlvbnMuIFRoZSB0ZXN0cyBm
cm9tIHRoZSBpbnN0YW50aWF0aW9uIGFib3ZlIHdpbGwgaGF2ZSB0aGVzZQorbmFtZXM6CisKKyAg
KiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8wYCBmb3IgYCJtZWVueSJgCisg
ICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMWAgZm9yIGAibWlueSJgCisg
ICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMmAgZm9yIGAibW9lImAKKyAg
KiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8wYCBmb3IgYCJtZWVueSJg
CisgICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMWAgZm9yIGAibWlu
eSJgCisgICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMmAgZm9yIGAi
bW9lImAKKworWW91IGNhbiB1c2UgdGhlc2UgbmFtZXMgaW4gWy0tZ3Rlc3RcLWZpbHRlcl0oI3J1
bm5pbmctYS1zdWJzZXQtb2YtdGhlLXRlc3RzKS4KKworVGhpcyBzdGF0ZW1lbnQgd2lsbCBpbnN0
YW50aWF0ZSBhbGwgdGVzdHMgZnJvbSBgRm9vVGVzdGAgYWdhaW4sIGVhY2gKK3dpdGggcGFyYW1l
dGVyIHZhbHVlcyBgImNhdCJgIGFuZCBgImRvZyJgOgorCitgYGAKK2NvbnN0IGNoYXIqIHBldHNb
XSA9IHsiY2F0IiwgImRvZyJ9OworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQW5vdGhlckluc3Rh
bnRpYXRpb25OYW1lLCBGb29UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5n
OjpWYWx1ZXNJbihwZXRzKSk7CitgYGAKKworVGhlIHRlc3RzIGZyb20gdGhlIGluc3RhbnRpYXRp
b24gYWJvdmUgd2lsbCBoYXZlIHRoZXNlIG5hbWVzOgorCisgICogYEFub3RoZXJJbnN0YW50aWF0
aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzBgIGZvciBgImNhdCJgCisgICogYEFub3RoZXJJbnN0
YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzFgIGZvciBgImRvZyJgCisgICogYEFub3Ro
ZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzBgIGZvciBgImNhdCJgCisg
ICogYEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzFgIGZvciBg
ImRvZyJgCisKK1BsZWFzZSBub3RlIHRoYXQgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCB3aWxs
IGluc3RhbnRpYXRlIF9hbGxfCit0ZXN0cyBpbiB0aGUgZ2l2ZW4gdGVzdCBjYXNlLCB3aGV0aGVy
IHRoZWlyIGRlZmluaXRpb25zIGNvbWUgYmVmb3JlIG9yCitfYWZ0ZXJfIHRoZSBgSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1BgIHN0YXRlbWVudC4KKworWW91IGNhbiBzZWUKK1t0aGVzZV0oLi4vc2Ft
cGxlcy9zYW1wbGU3X3VuaXR0ZXN0LmNjKQorW2ZpbGVzXSguLi9zYW1wbGVzL3NhbXBsZThfdW5p
dHRlc3QuY2MpIGZvciBtb3JlIGV4YW1wbGVzLgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdp
bmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFjOyBzaW5jZSB2ZXJzaW9uIDEu
Mi4wLgorCisjIyBDcmVhdGluZyBWYWx1ZS1QYXJhbWV0ZXJpemVkIEFic3RyYWN0IFRlc3RzICMj
CisKK0luIHRoZSBhYm92ZSwgd2UgZGVmaW5lIGFuZCBpbnN0YW50aWF0ZSBgRm9vVGVzdGAgaW4g
dGhlIHNhbWUgc291cmNlCitmaWxlLiBTb21ldGltZXMgeW91IG1heSB3YW50IHRvIGRlZmluZSB2
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGluIGEKK2xpYnJhcnkgYW5kIGxldCBvdGhlciBwZW9w
bGUgaW5zdGFudGlhdGUgdGhlbSBsYXRlci4gVGhpcyBwYXR0ZXJuIGlzCitrbm93biBhcyA8aT5h
YnN0cmFjdCB0ZXN0czwvaT4uIEFzIGFuIGV4YW1wbGUgb2YgaXRzIGFwcGxpY2F0aW9uLCB3aGVu
IHlvdQorYXJlIGRlc2lnbmluZyBhbiBpbnRlcmZhY2UgeW91IGNhbiB3cml0ZSBhIHN0YW5kYXJk
IHN1aXRlIG9mIGFic3RyYWN0Cit0ZXN0cyAocGVyaGFwcyB1c2luZyBhIGZhY3RvcnkgZnVuY3Rp
b24gYXMgdGhlIHRlc3QgcGFyYW1ldGVyKSB0aGF0CithbGwgaW1wbGVtZW50YXRpb25zIG9mIHRo
ZSBpbnRlcmZhY2UgYXJlIGV4cGVjdGVkIHRvIHBhc3MuIFdoZW4KK3NvbWVvbmUgaW1wbGVtZW50
cyB0aGUgaW50ZXJmYWNlLCBoZSBjYW4gaW5zdGFudGlhdGUgeW91ciBzdWl0ZSB0byBnZXQKK2Fs
bCB0aGUgaW50ZXJmYWNlLWNvbmZvcm1hbmNlIHRlc3RzIGZvciBmcmVlLgorCitUbyBkZWZpbmUg
YWJzdHJhY3QgdGVzdHMsIHlvdSBzaG91bGQgb3JnYW5pemUgeW91ciBjb2RlIGxpa2UgdGhpczoK
KworICAxLiBQdXQgdGhlIGRlZmluaXRpb24gb2YgdGhlIHBhcmFtZXRlcml6ZWQgdGVzdCBmaXh0
dXJlIGNsYXNzIChlLmcuIGBGb29UZXN0YCkgaW4gYSBoZWFkZXIgZmlsZSwgc2F5IGBmb29fcGFy
YW1fdGVzdC5oYC4gVGhpbmsgb2YgdGhpcyBhcyBfZGVjbGFyaW5nXyB5b3VyIGFic3RyYWN0IHRl
c3RzLgorICAxLiBQdXQgdGhlIGBURVNUX1BgIGRlZmluaXRpb25zIGluIGBmb29fcGFyYW1fdGVz
dC5jY2AsIHdoaWNoIGluY2x1ZGVzIGBmb29fcGFyYW1fdGVzdC5oYC4gVGhpbmsgb2YgdGhpcyBh
cyBfaW1wbGVtZW50aW5nXyB5b3VyIGFic3RyYWN0IHRlc3RzLgorCitPbmNlIHRoZXkgYXJlIGRl
ZmluZWQsIHlvdSBjYW4gaW5zdGFudGlhdGUgdGhlbSBieSBpbmNsdWRpbmcKK2Bmb29fcGFyYW1f
dGVzdC5oYCwgaW52b2tpbmcgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKClgLCBhbmQgbGlua2lu
Zword2l0aCBgZm9vX3BhcmFtX3Rlc3QuY2NgLiBZb3UgY2FuIGluc3RhbnRpYXRlIHRoZSBzYW1l
IGFic3RyYWN0IHRlc3QKK2Nhc2UgbXVsdGlwbGUgdGltZXMsIHBvc3NpYmx5IGluIGRpZmZlcmVu
dCBzb3VyY2UgZmlsZXMuCisKKyMgVHlwZWQgVGVzdHMgIworCitTdXBwb3NlIHlvdSBoYXZlIG11
bHRpcGxlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kCit3YW50IHRv
IG1ha2Ugc3VyZSB0aGF0IGFsbCBvZiB0aGVtIHNhdGlzZnkgc29tZSBjb21tb24gcmVxdWlyZW1l
bnRzLgorT3IsIHlvdSBtYXkgaGF2ZSBkZWZpbmVkIHNldmVyYWwgdHlwZXMgdGhhdCBhcmUgc3Vw
cG9zZWQgdG8gY29uZm9ybSB0bwordGhlIHNhbWUgImNvbmNlcHQiIGFuZCB5b3Ugd2FudCB0byB2
ZXJpZnkgaXQuICBJbiBib3RoIGNhc2VzLCB5b3Ugd2FudAordGhlIHNhbWUgdGVzdCBsb2dpYyBy
ZXBlYXRlZCBmb3IgZGlmZmVyZW50IHR5cGVzLgorCitXaGlsZSB5b3UgY2FuIHdyaXRlIG9uZSBg
VEVTVGAgb3IgYFRFU1RfRmAgZm9yIGVhY2ggdHlwZSB5b3Ugd2FudCB0bwordGVzdCAoYW5kIHlv
dSBtYXkgZXZlbiBmYWN0b3IgdGhlIHRlc3QgbG9naWMgaW50byBhIGZ1bmN0aW9uIHRlbXBsYXRl
Cit0aGF0IHlvdSBpbnZva2UgZnJvbSB0aGUgYFRFU1RgKSwgaXQncyB0ZWRpb3VzIGFuZCBkb2Vz
bid0IHNjYWxlOgoraWYgeW91IHdhbnQgX21fIHRlc3RzIG92ZXIgX25fIHR5cGVzLCB5b3UnbGwg
ZW5kIHVwIHdyaXRpbmcgX21cKm5fCitgVEVTVGBzLgorCitfVHlwZWQgdGVzdHNfIGFsbG93IHlv
dSB0byByZXBlYXQgdGhlIHNhbWUgdGVzdCBsb2dpYyBvdmVyIGEgbGlzdCBvZgordHlwZXMuICBZ
b3Ugb25seSBuZWVkIHRvIHdyaXRlIHRoZSB0ZXN0IGxvZ2ljIG9uY2UsIGFsdGhvdWdoIHlvdSBt
dXN0Citrbm93IHRoZSB0eXBlIGxpc3Qgd2hlbiB3cml0aW5nIHR5cGVkIHRlc3RzLiAgSGVyZSdz
IGhvdyB5b3UgZG8gaXQ6CisKK0ZpcnN0LCBkZWZpbmUgYSBmaXh0dXJlIGNsYXNzIHRlbXBsYXRl
LiAgSXQgc2hvdWxkIGJlIHBhcmFtZXRlcml6ZWQKK2J5IGEgdHlwZS4gIFJlbWVtYmVyIHRvIGRl
cml2ZSBpdCBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RgOgorCitgYGAKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHB1YmxpYzoK
KyAgLi4uCisgIHR5cGVkZWYgc3RkOjpsaXN0PFQ+IExpc3Q7CisgIHN0YXRpYyBUIHNoYXJlZF87
CisgIFQgdmFsdWVfOworfTsKK2BgYAorCitOZXh0LCBhc3NvY2lhdGUgYSBsaXN0IG9mIHR5cGVz
IHdpdGggdGhlIHRlc3QgY2FzZSwgd2hpY2ggd2lsbCBiZQorcmVwZWF0ZWQgZm9yIGVhY2ggdHlw
ZSBpbiB0aGUgbGlzdDoKKworYGBgCit0eXBlZGVmIDo6dGVzdGluZzo6VHlwZXM8Y2hhciwgaW50
LCB1bnNpZ25lZCBpbnQ+IE15VHlwZXM7CitUWVBFRF9URVNUX0NBU0UoRm9vVGVzdCwgTXlUeXBl
cyk7CitgYGAKKworVGhlIGB0eXBlZGVmYCBpcyBuZWNlc3NhcnkgZm9yIHRoZSBgVFlQRURfVEVT
VF9DQVNFYCBtYWNybyB0byBwYXJzZQorY29ycmVjdGx5LiAgT3RoZXJ3aXNlIHRoZSBjb21waWxl
ciB3aWxsIHRoaW5rIHRoYXQgZWFjaCBjb21tYSBpbiB0aGUKK3R5cGUgbGlzdCBpbnRyb2R1Y2Vz
IGEgbmV3IG1hY3JvIGFyZ3VtZW50LgorCitUaGVuLCB1c2UgYFRZUEVEX1RFU1QoKWAgaW5zdGVh
ZCBvZiBgVEVTVF9GKClgIHRvIGRlZmluZSBhIHR5cGVkIHRlc3QKK2ZvciB0aGlzIHRlc3QgY2Fz
ZS4gIFlvdSBjYW4gcmVwZWF0IHRoaXMgYXMgbWFueSB0aW1lcyBhcyB5b3Ugd2FudDoKKworYGBg
CitUWVBFRF9URVNUKEZvb1Rlc3QsIERvZXNCbGFoKSB7CisgIC8vIEluc2lkZSBhIHRlc3QsIHJl
ZmVyIHRvIHRoZSBzcGVjaWFsIG5hbWUgVHlwZVBhcmFtIHRvIGdldCB0aGUgdHlwZQorICAvLyBw
YXJhbWV0ZXIuICBTaW5jZSB3ZSBhcmUgaW5zaWRlIGEgZGVyaXZlZCBjbGFzcyB0ZW1wbGF0ZSwg
QysrIHJlcXVpcmVzCisgIC8vIHVzIHRvIHZpc2l0IHRoZSBtZW1iZXJzIG9mIEZvb1Rlc3Qgdmlh
ICd0aGlzJy4KKyAgVHlwZVBhcmFtIG4gPSB0aGlzLT52YWx1ZV87CisKKyAgLy8gVG8gdmlzaXQg
c3RhdGljIG1lbWJlcnMgb2YgdGhlIGZpeHR1cmUsIGFkZCB0aGUgJ1Rlc3RGaXh0dXJlOjonCisg
IC8vIHByZWZpeC4KKyAgbiArPSBUZXN0Rml4dHVyZTo6c2hhcmVkXzsKKworICAvLyBUbyByZWZl
ciB0byB0eXBlZGVmcyBpbiB0aGUgZml4dHVyZSwgYWRkIHRoZSAndHlwZW5hbWUgVGVzdEZpeHR1
cmU6OicKKyAgLy8gcHJlZml4LiAgVGhlICd0eXBlbmFtZScgaXMgcmVxdWlyZWQgdG8gc2F0aXNm
eSB0aGUgY29tcGlsZXIuCisgIHR5cGVuYW1lIFRlc3RGaXh0dXJlOjpMaXN0IHZhbHVlczsKKyAg
dmFsdWVzLnB1c2hfYmFjayhuKTsKKyAgLi4uCit9CisKK1RZUEVEX1RFU1QoRm9vVGVzdCwgSGFz
UHJvcGVydHlBKSB7IC4uLiB9CitgYGAKKworWW91IGNhbiBzZWUgYHNhbXBsZXMvc2FtcGxlNl91
bml0dGVzdC5jY2AgZm9yIGEgY29tcGxldGUgZXhhbXBsZS4KKworX0F2YWlsYWJpbGl0eTpfIExp
bnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYzsKK3NpbmNlIHZl
cnNpb24gMS4xLjAuCisKKyMgVHlwZS1QYXJhbWV0ZXJpemVkIFRlc3RzICMKKworX1R5cGUtcGFy
YW1ldGVyaXplZCB0ZXN0c18gYXJlIGxpa2UgdHlwZWQgdGVzdHMsIGV4Y2VwdCB0aGF0IHRoZXkK
K2Rvbid0IHJlcXVpcmUgeW91IHRvIGtub3cgdGhlIGxpc3Qgb2YgdHlwZXMgYWhlYWQgb2YgdGlt
ZS4gIEluc3RlYWQsCit5b3UgY2FuIGRlZmluZSB0aGUgdGVzdCBsb2dpYyBmaXJzdCBhbmQgaW5z
dGFudGlhdGUgaXQgd2l0aCBkaWZmZXJlbnQKK3R5cGUgbGlzdHMgbGF0ZXIuICBZb3UgY2FuIGV2
ZW4gaW5zdGFudGlhdGUgaXQgbW9yZSB0aGFuIG9uY2UgaW4gdGhlCitzYW1lIHByb2dyYW0uCisK
K0lmIHlvdSBhcmUgZGVzaWduaW5nIGFuIGludGVyZmFjZSBvciBjb25jZXB0LCB5b3UgY2FuIGRl
ZmluZSBhIHN1aXRlCitvZiB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMgdG8gdmVyaWZ5IHByb3Bl
cnRpZXMgdGhhdCBhbnkgdmFsaWQKK2ltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnRlcmZhY2UvY29u
Y2VwdCBzaG91bGQgaGF2ZS4gIFRoZW4sIHRoZSBhdXRob3IKK29mIGVhY2ggaW1wbGVtZW50YXRp
b24gY2FuIGp1c3QgaW5zdGFudGlhdGUgdGhlIHRlc3Qgc3VpdGUgd2l0aCBoaXMKK3R5cGUgdG8g
dmVyaWZ5IHRoYXQgaXQgY29uZm9ybXMgdG8gdGhlIHJlcXVpcmVtZW50cywgd2l0aG91dCBoYXZp
bmcgdG8KK3dyaXRlIHNpbWlsYXIgdGVzdHMgcmVwZWF0ZWRseS4gIEhlcmUncyBhbiBleGFtcGxl
OgorCitGaXJzdCwgZGVmaW5lIGEgZml4dHVyZSBjbGFzcyB0ZW1wbGF0ZSwgYXMgd2UgZGlkIHdp
dGggdHlwZWQgdGVzdHM6CisKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBGb29U
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgIC4uLgorfTsKK2BgYAorCitOZXh0LCBk
ZWNsYXJlIHRoYXQgeW91IHdpbGwgZGVmaW5lIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2Fz
ZToKKworYGBgCitUWVBFRF9URVNUX0NBU0VfUChGb29UZXN0KTsKK2BgYAorCitUaGUgYF9QYCBz
dWZmaXggaXMgZm9yICJwYXJhbWV0ZXJpemVkIiBvciAicGF0dGVybiIsIHdoaWNoZXZlciB5b3UK
K3ByZWZlciB0byB0aGluay4KKworVGhlbiwgdXNlIGBUWVBFRF9URVNUX1AoKWAgdG8gZGVmaW5l
IGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuICBZb3UKK2NhbiByZXBlYXQgdGhpcyBhcyBtYW55
IHRpbWVzIGFzIHlvdSB3YW50OgorCitgYGAKK1RZUEVEX1RFU1RfUChGb29UZXN0LCBEb2VzQmxh
aCkgeworICAvLyBJbnNpZGUgYSB0ZXN0LCByZWZlciB0byBUeXBlUGFyYW0gdG8gZ2V0IHRoZSB0
eXBlIHBhcmFtZXRlci4KKyAgVHlwZVBhcmFtIG4gPSAwOworICAuLi4KK30KKworVFlQRURfVEVT
VF9QKEZvb1Rlc3QsIEhhc1Byb3BlcnR5QSkgeyAuLi4gfQorYGBgCisKK05vdyB0aGUgdHJpY2t5
IHBhcnQ6IHlvdSBuZWVkIHRvIHJlZ2lzdGVyIGFsbCB0ZXN0IHBhdHRlcm5zIHVzaW5nIHRoZQor
YFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QYCBtYWNybyBiZWZvcmUgeW91IGNhbiBpbnN0YW50
aWF0ZSB0aGVtLgorVGhlIGZpcnN0IGFyZ3VtZW50IG9mIHRoZSBtYWNybyBpcyB0aGUgdGVzdCBj
YXNlIG5hbWU7IHRoZSByZXN0IGFyZQordGhlIG5hbWVzIG9mIHRoZSB0ZXN0cyBpbiB0aGlzIHRl
c3QgY2FzZToKKworYGBgCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRG9lc0JsYWgsIEhhc1Byb3BlcnR5QSk7CitgYGAKKwor
RmluYWxseSwgeW91IGFyZSBmcmVlIHRvIGluc3RhbnRpYXRlIHRoZSBwYXR0ZXJuIHdpdGggdGhl
IHR5cGVzIHlvdQord2FudC4gIElmIHlvdSBwdXQgdGhlIGFib3ZlIGNvZGUgaW4gYSBoZWFkZXIg
ZmlsZSwgeW91IGNhbiBgI2luY2x1ZGVgCitpdCBpbiBtdWx0aXBsZSBDKysgc291cmNlIGZpbGVz
IGFuZCBpbnN0YW50aWF0ZSBpdCBtdWx0aXBsZSB0aW1lcy4KKworYGBgCit0eXBlZGVmIDo6dGVz
dGluZzo6VHlwZXM8Y2hhciwgaW50LCB1bnNpZ25lZCBpbnQ+IE15VHlwZXM7CitJTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcyk7CitgYGAKKworVG8gZGlz
dGluZ3Vpc2ggZGlmZmVyZW50IGluc3RhbmNlcyBvZiB0aGUgcGF0dGVybiwgdGhlIGZpcnN0IGFy
Z3VtZW50Cit0byB0aGUgYElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QYCBtYWNybyBpcyBh
IHByZWZpeCB0aGF0IHdpbGwgYmUKK2FkZGVkIHRvIHRoZSBhY3R1YWwgdGVzdCBjYXNlIG5hbWUu
ICBSZW1lbWJlciB0byBwaWNrIHVuaXF1ZSBwcmVmaXhlcworZm9yIGRpZmZlcmVudCBpbnN0YW5j
ZXMuCisKK0luIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhlIHR5cGUgbGlzdCBjb250YWlucyBv
bmx5IG9uZSB0eXBlLCB5b3UKK2NhbiB3cml0ZSB0aGF0IHR5cGUgZGlyZWN0bHkgd2l0aG91dCBg
Ojp0ZXN0aW5nOjpUeXBlczwuLi4+YCwgbGlrZSB0aGlzOgorCitgYGAKK0lOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBpbnQpOworYGBgCisKK1lvdSBjYW4gc2VlIGBz
YW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2NgIGZvciBhIGNvbXBsZXRlIGV4YW1wbGUuCisKK19B
dmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUp
LCBNYWM7CitzaW5jZSB2ZXJzaW9uIDEuMS4wLgorCisjIFRlc3RpbmcgUHJpdmF0ZSBDb2RlICMK
KworSWYgeW91IGNoYW5nZSB5b3VyIHNvZnR3YXJlJ3MgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24s
IHlvdXIgdGVzdHMgc2hvdWxkIG5vdAorYnJlYWsgYXMgbG9uZyBhcyB0aGUgY2hhbmdlIGlzIG5v
dCBvYnNlcnZhYmxlIGJ5IHVzZXJzLiBUaGVyZWZvcmUsIHBlciB0aGUKK19ibGFjay1ib3ggdGVz
dGluZyBwcmluY2lwbGVfLCBtb3N0IG9mIHRoZSB0aW1lIHlvdSBzaG91bGQgdGVzdCB5b3VyIGNv
ZGUKK3Rocm91Z2ggaXRzIHB1YmxpYyBpbnRlcmZhY2VzLgorCitJZiB5b3Ugc3RpbGwgZmluZCB5
b3Vyc2VsZiBuZWVkaW5nIHRvIHRlc3QgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gY29kZSwKK2Nv
bnNpZGVyIGlmIHRoZXJlJ3MgYSBiZXR0ZXIgZGVzaWduIHRoYXQgd291bGRuJ3QgcmVxdWlyZSB5
b3UgdG8gZG8gc28uIElmIHlvdQorYWJzb2x1dGVseSBoYXZlIHRvIHRlc3Qgbm9uLXB1YmxpYyBp
bnRlcmZhY2UgY29kZSB0aG91Z2gsIHlvdSBjYW4uIFRoZXJlIGFyZQordHdvIGNhc2VzIHRvIGNv
bnNpZGVyOgorCisgICogU3RhdGljIGZ1bmN0aW9ucyAoX25vdF8gdGhlIHNhbWUgYXMgc3RhdGlj
IG1lbWJlciBmdW5jdGlvbnMhKSBvciB1bm5hbWVkIG5hbWVzcGFjZXMsIGFuZAorICAqIFByaXZh
dGUgb3IgcHJvdGVjdGVkIGNsYXNzIG1lbWJlcnMKKworIyMgU3RhdGljIEZ1bmN0aW9ucyAjIwor
CitCb3RoIHN0YXRpYyBmdW5jdGlvbnMgYW5kIGRlZmluaXRpb25zL2RlY2xhcmF0aW9ucyBpbiBh
biB1bm5hbWVkIG5hbWVzcGFjZSBhcmUKK29ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIHNhbWUgdHJh
bnNsYXRpb24gdW5pdC4gVG8gdGVzdCB0aGVtLCB5b3UgY2FuIGAjaW5jbHVkZWAKK3RoZSBlbnRp
cmUgYC5jY2AgZmlsZSBiZWluZyB0ZXN0ZWQgaW4geW91ciBgKl90ZXN0LmNjYCBmaWxlLiAoYCNp
bmNsdWRlYGluZyBgLmNjYAorZmlsZXMgaXMgbm90IGEgZ29vZCB3YXkgdG8gcmV1c2UgY29kZSAt
IHlvdSBzaG91bGQgbm90IGRvIHRoaXMgaW4gcHJvZHVjdGlvbgorY29kZSEpCisKK0hvd2V2ZXIs
IGEgYmV0dGVyIGFwcHJvYWNoIGlzIHRvIG1vdmUgdGhlIHByaXZhdGUgY29kZSBpbnRvIHRoZQor
YGZvbzo6aW50ZXJuYWxgIG5hbWVzcGFjZSwgd2hlcmUgYGZvb2AgaXMgdGhlIG5hbWVzcGFjZSB5
b3VyIHByb2plY3Qgbm9ybWFsbHkKK3VzZXMsIGFuZCBwdXQgdGhlIHByaXZhdGUgZGVjbGFyYXRp
b25zIGluIGEgYCotaW50ZXJuYWwuaGAgZmlsZS4gWW91cgorcHJvZHVjdGlvbiBgLmNjYCBmaWxl
cyBhbmQgeW91ciB0ZXN0cyBhcmUgYWxsb3dlZCB0byBpbmNsdWRlIHRoaXMgaW50ZXJuYWwKK2hl
YWRlciwgYnV0IHlvdXIgY2xpZW50cyBhcmUgbm90LiBUaGlzIHdheSwgeW91IGNhbiBmdWxseSB0
ZXN0IHlvdXIgaW50ZXJuYWwKK2ltcGxlbWVudGF0aW9uIHdpdGhvdXQgbGVha2luZyBpdCB0byB5
b3VyIGNsaWVudHMuCisKKyMjIFByaXZhdGUgQ2xhc3MgTWVtYmVycyAjIworCitQcml2YXRlIGNs
YXNzIG1lbWJlcnMgYXJlIG9ubHkgYWNjZXNzaWJsZSBmcm9tIHdpdGhpbiB0aGUgY2xhc3Mgb3Ig
YnkgZnJpZW5kcy4KK1RvIGFjY2VzcyBhIGNsYXNzJyBwcml2YXRlIG1lbWJlcnMsIHlvdSBjYW4g
ZGVjbGFyZSB5b3VyIHRlc3QgZml4dHVyZSBhcyBhCitmcmllbmQgdG8gdGhlIGNsYXNzIGFuZCBk
ZWZpbmUgYWNjZXNzb3JzIGluIHlvdXIgZml4dHVyZS4gVGVzdHMgdXNpbmcgdGhlCitmaXh0dXJl
IGNhbiB0aGVuIGFjY2VzcyB0aGUgcHJpdmF0ZSBtZW1iZXJzIG9mIHlvdXIgcHJvZHVjdGlvbiBj
bGFzcyB2aWEgdGhlCithY2Nlc3NvcnMgaW4gdGhlIGZpeHR1cmUuIE5vdGUgdGhhdCBldmVuIHRo
b3VnaCB5b3VyIGZpeHR1cmUgaXMgYSBmcmllbmQgdG8KK3lvdXIgcHJvZHVjdGlvbiBjbGFzcywg
eW91ciB0ZXN0cyBhcmUgbm90IGF1dG9tYXRpY2FsbHkgZnJpZW5kcyB0byBpdCwgYXMgdGhleQor
YXJlIHRlY2huaWNhbGx5IGRlZmluZWQgaW4gc3ViLWNsYXNzZXMgb2YgdGhlIGZpeHR1cmUuCisK
K0Fub3RoZXIgd2F5IHRvIHRlc3QgcHJpdmF0ZSBtZW1iZXJzIGlzIHRvIHJlZmFjdG9yIHRoZW0g
aW50byBhbiBpbXBsZW1lbnRhdGlvbgorY2xhc3MsIHdoaWNoIGlzIHRoZW4gZGVjbGFyZWQgaW4g
YSBgKi1pbnRlcm5hbC5oYCBmaWxlLiBZb3VyIGNsaWVudHMgYXJlbid0CithbGxvd2VkIHRvIGlu
Y2x1ZGUgdGhpcyBoZWFkZXIgYnV0IHlvdXIgdGVzdHMgY2FuLiBTdWNoIGlzIGNhbGxlZCB0aGUg
UGltcGwKKyhQcml2YXRlIEltcGxlbWVudGF0aW9uKSBpZGlvbS4KKworT3IsIHlvdSBjYW4gZGVj
bGFyZSBhbiBpbmRpdmlkdWFsIHRlc3QgYXMgYSBmcmllbmQgb2YgeW91ciBjbGFzcyBieSBhZGRp
bmcgdGhpcworbGluZSBpbiB0aGUgY2xhc3MgYm9keToKKworYGBgCitGUklFTkRfVEVTVChUZXN0
Q2FzZU5hbWUsIFRlc3ROYW1lKTsKK2BgYAorCitGb3IgZXhhbXBsZSwKK2BgYAorLy8gZm9vLmgK
KyNpbmNsdWRlICJndGVzdC9ndGVzdF9wcm9kLmgiCisKKy8vIERlZmluZXMgRlJJRU5EX1RFU1Qu
CitjbGFzcyBGb28geworICAuLi4KKyBwcml2YXRlOgorICBGUklFTkRfVEVTVChGb29UZXN0LCBC
YXJSZXR1cm5zWmVyb09uTnVsbCk7CisgIGludCBCYXIodm9pZCogeCk7Cit9OworCisvLyBmb29f
dGVzdC5jYworLi4uCitURVNUKEZvb1Rlc3QsIEJhclJldHVybnNaZXJvT25OdWxsKSB7CisgIEZv
byBmb287CisgIEVYUEVDVF9FUSgwLCBmb28uQmFyKE5VTEwpKTsKKyAgLy8gVXNlcyBGb28ncyBw
cml2YXRlIG1lbWJlciBCYXIoKS4KK30KK2BgYAorCitQYXkgc3BlY2lhbCBhdHRlbnRpb24gd2hl
biB5b3VyIGNsYXNzIGlzIGRlZmluZWQgaW4gYSBuYW1lc3BhY2UsIGFzIHlvdSBzaG91bGQKK2Rl
ZmluZSB5b3VyIHRlc3QgZml4dHVyZXMgYW5kIHRlc3RzIGluIHRoZSBzYW1lIG5hbWVzcGFjZSBp
ZiB5b3Ugd2FudCB0aGVtIHRvCitiZSBmcmllbmRzIG9mIHlvdXIgY2xhc3MuIEZvciBleGFtcGxl
LCBpZiB0aGUgY29kZSB0byBiZSB0ZXN0ZWQgbG9va3MgbGlrZToKKworYGBgCituYW1lc3BhY2Ug
bXlfbmFtZXNwYWNlIHsKKworY2xhc3MgRm9vIHsKKyAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7Cisg
IEZSSUVORF9URVNUKEZvb1Rlc3QsIEJhcik7CisgIEZSSUVORF9URVNUKEZvb1Rlc3QsIEJheik7
CisgIC4uLgorICBkZWZpbml0aW9uIG9mIHRoZSBjbGFzcyBGb28KKyAgLi4uCit9OworCit9ICAv
LyBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlCitgYGAKKworWW91ciB0ZXN0IGNvZGUgc2hvdWxkIGJl
IHNvbWV0aGluZyBsaWtlOgorCitgYGAKK25hbWVzcGFjZSBteV9uYW1lc3BhY2UgeworY2xhc3Mg
Rm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLi4uCit9
OworCitURVNUX0YoRm9vVGVzdCwgQmFyKSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgQmF6KSB7
IC4uLiB9CisKK30gIC8vIG5hbWVzcGFjZSBteV9uYW1lc3BhY2UKK2BgYAorCisjIENhdGNoaW5n
IEZhaWx1cmVzICMKKworSWYgeW91IGFyZSBidWlsZGluZyBhIHRlc3RpbmcgdXRpbGl0eSBvbiB0
b3Agb2YgR29vZ2xlIFRlc3QsIHlvdSdsbAord2FudCB0byB0ZXN0IHlvdXIgdXRpbGl0eS4gIFdo
YXQgZnJhbWV3b3JrIHdvdWxkIHlvdSB1c2UgdG8gdGVzdCBpdD8KK0dvb2dsZSBUZXN0LCBvZiBj
b3Vyc2UuCisKK1RoZSBjaGFsbGVuZ2UgaXMgdG8gdmVyaWZ5IHRoYXQgeW91ciB0ZXN0aW5nIHV0
aWxpdHkgcmVwb3J0cyBmYWlsdXJlcworY29ycmVjdGx5LiAgSW4gZnJhbWV3b3JrcyB0aGF0IHJl
cG9ydCBhIGZhaWx1cmUgYnkgdGhyb3dpbmcgYW4KK2V4Y2VwdGlvbiwgeW91IGNvdWxkIGNhdGNo
IHRoZSBleGNlcHRpb24gYW5kIGFzc2VydCBvbiBpdC4gIEJ1dCBHb29nbGUKK1Rlc3QgZG9lc24n
dCB1c2UgZXhjZXB0aW9ucywgc28gaG93IGRvIHdlIHRlc3QgdGhhdCBhIHBpZWNlIG9mIGNvZGUK
K2dlbmVyYXRlcyBhbiBleHBlY3RlZCBmYWlsdXJlPworCitgImd0ZXN0L2d0ZXN0LXNwaS5oImAg
Y29udGFpbnMgc29tZSBjb25zdHJ1Y3RzIHRvIGRvIHRoaXMuICBBZnRlcgorYCNpbmNsdWRlYGlu
ZyB0aGlzIGhlYWRlciwgeW91IGNhbiB1c2UKKworfCBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoYF9z
dGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtgIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisKK3RvIGFzc2VydCB0aGF0IF9zdGF0ZW1lbnRfIGdl
bmVyYXRlcyBhIGZhdGFsIChlLmcuIGBBU1NFUlRfKmApIGZhaWx1cmUKK3dob3NlIG1lc3NhZ2Ug
Y29udGFpbnMgdGhlIGdpdmVuIF9zdWJzdHJpbmdfLCBvciB1c2UKKworfCBgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoYF9zdGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtgIHwKK3w6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisKK2lmIHlvdSBhcmUg
ZXhwZWN0aW5nIGEgbm9uLWZhdGFsIChlLmcuIGBFWFBFQ1RfKmApIGZhaWx1cmUuCisKK0ZvciB0
ZWNobmljYWwgcmVhc29ucywgdGhlcmUgYXJlIHNvbWUgY2F2ZWF0czoKKworICAxLiBZb3UgY2Fu
bm90IHN0cmVhbSBhIGZhaWx1cmUgbWVzc2FnZSB0byBlaXRoZXIgbWFjcm8uCisgIDEuIF9zdGF0
ZW1lbnRfIGluIGBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpYCBjYW5ub3QgcmVmZXJlbmNlIGxvY2Fs
IG5vbi1zdGF0aWMgdmFyaWFibGVzIG9yIG5vbi1zdGF0aWMgbWVtYmVycyBvZiBgdGhpc2Agb2Jq
ZWN0LgorICAxLiBfc3RhdGVtZW50XyBpbiBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKWAgY2Fubm90
IHJldHVybiBhIHZhbHVlLgorCitfTm90ZTpfIEdvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHdpdGgg
dGhyZWFkcyBpbiBtaW5kLiAgT25jZSB0aGUKK3N5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGlu
IGAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oImAgaGF2ZQorYmVlbiBpbXBsZW1lbnRlZCwg
R29vZ2xlIFRlc3Qgd2lsbCBiZWNvbWUgdGhyZWFkLXNhZmUsIG1lYW5pbmcgdGhhdAoreW91IGNh
biB0aGVuIHVzZSBhc3NlcnRpb25zIGluIG11bHRpcGxlIHRocmVhZHMgY29uY3VycmVudGx5LiAg
QmVmb3JlCisKK3RoYXQsIGhvd2V2ZXIsIEdvb2dsZSBUZXN0IG9ubHkgc3VwcG9ydHMgc2luZ2xl
LXRocmVhZGVkIHVzYWdlLiAgT25jZQordGhyZWFkLXNhZmUsIGBFWFBFQ1RfRkFUQUxfRkFJTFVS
RSgpYCBhbmQgYEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKClgCit3aWxsIGNhcHR1cmUgZmFpbHVy
ZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkIG9ubHkuIElmIF9zdGF0ZW1lbnRfCitjcmVhdGVzIG5l
dyB0aHJlYWRzLCBmYWlsdXJlcyBpbiB0aGVzZSB0aHJlYWRzIHdpbGwgYmUgaWdub3JlZC4gIElm
Cit5b3Ugd2FudCB0byBjYXB0dXJlIGZhaWx1cmVzIGZyb20gYWxsIHRocmVhZHMgaW5zdGVhZCwg
eW91IHNob3VsZCB1c2UKK3RoZSBmb2xsb3dpbmcgbWFjcm9zOgorCit8IGBFWFBFQ1RfRkFUQUxf
RkFJTFVSRV9PTl9BTExfVEhSRUFEUyhgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAorfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXwKK3wgYEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKGBfc3Rh
dGVtZW50LCBzdWJzdHJpbmdfYCk7YCB8CisKKyMgR2V0dGluZyB0aGUgQ3VycmVudCBUZXN0J3Mg
TmFtZSAjCisKK1NvbWV0aW1lcyBhIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGtub3cgdGhlIG5hbWUg
b2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRlc3QuCitGb3IgZXhhbXBsZSwgeW91IG1heSBiZSB1
c2luZyB0aGUgYFNldFVwKClgIG1ldGhvZCBvZiB5b3VyIHRlc3QgZml4dHVyZSB0byBzZXQKK3Ro
ZSBnb2xkZW4gZmlsZSBuYW1lIGJhc2VkIG9uIHdoaWNoIHRlc3QgaXMgcnVubmluZy4gVGhlIGA6
OnRlc3Rpbmc6OlRlc3RJbmZvYAorY2xhc3MgaGFzIHRoaXMgaW5mb3JtYXRpb246CisKK2BgYAor
bmFtZXNwYWNlIHRlc3RpbmcgeworCitjbGFzcyBUZXN0SW5mbyB7CisgcHVibGljOgorICAvLyBS
ZXR1cm5zIHRoZSB0ZXN0IGNhc2UgbmFtZSBhbmQgdGhlIHRlc3QgbmFtZSwgcmVzcGVjdGl2ZWx5
LgorICAvLworICAvLyBEbyBOT1QgZGVsZXRlIG9yIGZyZWUgdGhlIHJldHVybiB2YWx1ZSAtIGl0
J3MgbWFuYWdlZCBieSB0aGUKKyAgLy8gVGVzdEluZm8gY2xhc3MuCisgIGNvbnN0IGNoYXIqIHRl
c3RfY2FzZV9uYW1lKCkgY29uc3Q7CisgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKK307CisK
K30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCitgYGAKKworCis+IFRvIG9idGFpbiBhIGBUZXN0SW5m
b2Agb2JqZWN0IGZvciB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdCwgY2FsbAorYGN1cnJlbnRf
dGVzdF9pbmZvKClgIG9uIHRoZSBgVW5pdFRlc3RgIHNpbmdsZXRvbiBvYmplY3Q6CisKK2BgYAor
Ly8gR2V0cyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdC4KKy8v
IERvIE5PVCBkZWxldGUgdGhlIHJldHVybmVkIG9iamVjdCAtIGl0J3MgbWFuYWdlZCBieSB0aGUg
VW5pdFRlc3QgY2xhc3MuCitjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2lu
Zm8gPQorICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3Rf
aW5mbygpOworcHJpbnRmKCJXZSBhcmUgaW4gdGVzdCAlcyBvZiB0ZXN0IGNhc2UgJXMuXG4iLAor
ICAgICAgIHRlc3RfaW5mby0+bmFtZSgpLCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOwor
YGBgCisKK2BjdXJyZW50X3Rlc3RfaW5mbygpYCByZXR1cm5zIGEgbnVsbCBwb2ludGVyIGlmIG5v
IHRlc3QgaXMgcnVubmluZy4gSW4KK3BhcnRpY3VsYXIsIHlvdSBjYW5ub3QgZmluZCB0aGUgdGVz
dCBjYXNlIG5hbWUgaW4gYFRlc3RDYXNlU2V0VXAoKWAsCitgVGVzdENhc2VUZWFyRG93bigpYCAo
d2hlcmUgeW91IGtub3cgdGhlIHRlc3QgY2FzZSBuYW1lIGltcGxpY2l0bHkpLCBvcgorZnVuY3Rp
b25zIGNhbGxlZCBmcm9tIHRoZW0uCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywg
TWFjLgorCisjIEV4dGVuZGluZyBHb29nbGUgVGVzdCBieSBIYW5kbGluZyBUZXN0IEV2ZW50cyAj
CisKK0dvb2dsZSBUZXN0IHByb3ZpZGVzIGFuIDxiPmV2ZW50IGxpc3RlbmVyIEFQSTwvYj4gdG8g
bGV0IHlvdSByZWNlaXZlCitub3RpZmljYXRpb25zIGFib3V0IHRoZSBwcm9ncmVzcyBvZiBhIHRl
c3QgcHJvZ3JhbSBhbmQgdGVzdAorZmFpbHVyZXMuIFRoZSBldmVudHMgeW91IGNhbiBsaXN0ZW4g
dG8gaW5jbHVkZSB0aGUgc3RhcnQgYW5kIGVuZCBvZgordGhlIHRlc3QgcHJvZ3JhbSwgYSB0ZXN0
IGNhc2UsIG9yIGEgdGVzdCBtZXRob2QsIGFtb25nIG90aGVycy4gWW91IG1heQordXNlIHRoaXMg
QVBJIHRvIGF1Z21lbnQgb3IgcmVwbGFjZSB0aGUgc3RhbmRhcmQgY29uc29sZSBvdXRwdXQsCity
ZXBsYWNlIHRoZSBYTUwgb3V0cHV0LCBvciBwcm92aWRlIGEgY29tcGxldGVseSBkaWZmZXJlbnQg
Zm9ybSBvZgorb3V0cHV0LCBzdWNoIGFzIGEgR1VJIG9yIGEgZGF0YWJhc2UuIFlvdSBjYW4gYWxz
byB1c2UgdGVzdCBldmVudHMgYXMKK2NoZWNrcG9pbnRzIHRvIGltcGxlbWVudCBhIHJlc291cmNl
IGxlYWsgY2hlY2tlciwgZm9yIGV4YW1wbGUuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2lu
ZG93cywgTWFjOyBzaW5jZSB2MS40LjAuCisKKyMjIERlZmluaW5nIEV2ZW50IExpc3RlbmVycyAj
IworCitUbyBkZWZpbmUgYSBldmVudCBsaXN0ZW5lciwgeW91IHN1YmNsYXNzIGVpdGhlcgorW3Rl
c3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDg1NSkK
K29yIFt0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyXSguLi9pbmNsdWRlL2d0ZXN0L2d0
ZXN0LmgjTDkwNSkuCitUaGUgZm9ybWVyIGlzIGFuIChhYnN0cmFjdCkgaW50ZXJmYWNlLCB3aGVy
ZSA8aT5lYWNoIHB1cmUgdmlydHVhbCBtZXRob2Q8YnI+CitjYW4gYmUgb3ZlcnJpZGRlbiB0byBo
YW5kbGUgYSB0ZXN0IGV2ZW50PC9pPiAoRm9yIGV4YW1wbGUsIHdoZW4gYSB0ZXN0CitzdGFydHMs
IHRoZSBgT25UZXN0U3RhcnQoKWAgbWV0aG9kIHdpbGwgYmUgY2FsbGVkLikuIFRoZSBsYXR0ZXIg
cHJvdmlkZXMKK2FuIGVtcHR5IGltcGxlbWVudGF0aW9uIG9mIGFsbCBtZXRob2RzIGluIHRoZSBp
bnRlcmZhY2UsIHN1Y2ggdGhhdCBhCitzdWJjbGFzcyBvbmx5IG5lZWRzIHRvIG92ZXJyaWRlIHRo
ZSBtZXRob2RzIGl0IGNhcmVzIGFib3V0LgorCitXaGVuIGFuIGV2ZW50IGlzIGZpcmVkLCBpdHMg
Y29udGV4dCBpcyBwYXNzZWQgdG8gdGhlIGhhbmRsZXIgZnVuY3Rpb24KK2FzIGFuIGFyZ3VtZW50
LiBUaGUgZm9sbG93aW5nIGFyZ3VtZW50IHR5cGVzIGFyZSB1c2VkOgorICAqIFtVbml0VGVzdF0o
Li4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0wxMDA3KSByZWZsZWN0cyB0aGUgc3RhdGUgb2YgdGhl
IGVudGlyZSB0ZXN0IHByb2dyYW0sCisgICogW1Rlc3RDYXNlXSguLi9pbmNsdWRlL2d0ZXN0L2d0
ZXN0LmgjTDY4OSkgaGFzIGluZm9ybWF0aW9uIGFib3V0IGEgdGVzdCBjYXNlLCB3aGljaCBjYW4g
Y29udGFpbiBvbmUgb3IgbW9yZSB0ZXN0cywKKyAgKiBbVGVzdEluZm9dKC4uL2luY2x1ZGUvZ3Rl
c3QvZ3Rlc3QuaCNMNTk5KSBjb250YWlucyB0aGUgc3RhdGUgb2YgYSB0ZXN0LCBhbmQKKyAgKiBb
VGVzdFBhcnRSZXN1bHRdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgjTDQyKSBy
ZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYSB0ZXN0IGFzc2VydGlvbi4KKworQW4gZXZlbnQgaGFu
ZGxlciBmdW5jdGlvbiBjYW4gZXhhbWluZSB0aGUgYXJndW1lbnQgaXQgcmVjZWl2ZXMgdG8gZmlu
ZAorb3V0IGludGVyZXN0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBldmVudCBhbmQgdGhlIHRl
c3QgcHJvZ3JhbSdzCitzdGF0ZS4gIEhlcmUncyBhbiBleGFtcGxlOgorCitgYGAKKyAgY2xhc3Mg
TWluaW1hbGlzdFByaW50ZXIgOiBwdWJsaWMgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3Rl
bmVyIHsKKyAgICAvLyBDYWxsZWQgYmVmb3JlIGEgdGVzdCBzdGFydHMuCisgICAgdmlydHVhbCB2
b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8mIHRlc3RfaW5mbykgewor
ICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBzdGFydGluZy5cbiIsCisgICAgICAgICAgICAg
dGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOworICAgIH0KKwor
ICAgIC8vIENhbGxlZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRUVEKCkgaW52
b2NhdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJlc3VsdCgKKyAgICAgICAgY29u
c3QgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgeworICAgICAg
cHJpbnRmKCIlcyBpbiAlczolZFxuJXNcbiIsCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3Vs
dC5mYWlsZWQoKSA/ICIqKiogRmFpbHVyZSIgOiAiU3VjY2VzcyIsCisgICAgICAgICAgICAgdGVz
dF9wYXJ0X3Jlc3VsdC5maWxlX25hbWUoKSwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0
LmxpbmVfbnVtYmVyKCksCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5zdW1tYXJ5KCkp
OworICAgIH0KKworICAgIC8vIENhbGxlZCBhZnRlciBhIHRlc3QgZW5kcy4KKyAgICB2aXJ0dWFs
IHZvaWQgT25UZXN0RW5kKGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8mIHRlc3RfaW5mbykgewor
ICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBlbmRpbmcuXG4iLAorICAgICAgICAgICAgIHRl
c3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgICB9CisgIH07
CitgYGAKKworIyMgVXNpbmcgRXZlbnQgTGlzdGVuZXJzICMjCisKK1RvIHVzZSB0aGUgZXZlbnQg
bGlzdGVuZXIgeW91IGhhdmUgZGVmaW5lZCwgYWRkIGFuIGluc3RhbmNlIG9mIGl0IHRvCit0aGUg
R29vZ2xlIFRlc3QgZXZlbnQgbGlzdGVuZXIgbGlzdCAocmVwcmVzZW50ZWQgYnkgY2xhc3MKK1tU
ZXN0RXZlbnRMaXN0ZW5lcnNdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMOTI5KQorLSBub3Rl
IHRoZSAicyIgYXQgdGhlIGVuZCBvZiB0aGUgbmFtZSkgaW4geW91cgorYG1haW4oKWAgZnVuY3Rp
b24sIGJlZm9yZSBjYWxsaW5nIGBSVU5fQUxMX1RFU1RTKClgOgorYGBgCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywg
YXJndik7CisgIC8vIEdldHMgaG9sZCBvZiB0aGUgZXZlbnQgbGlzdGVuZXIgbGlzdC4KKyAgOjp0
ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnMmIGxpc3RlbmVycyA9CisgICAgICA6OnRlc3Rpbmc6
OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKTsKKyAgLy8gQWRkcyBhIGxpc3Rl
bmVyIHRvIHRoZSBlbmQuICBHb29nbGUgVGVzdCB0YWtlcyB0aGUgb3duZXJzaGlwLgorICBsaXN0
ZW5lcnMuQXBwZW5kKG5ldyBNaW5pbWFsaXN0UHJpbnRlcik7CisgIHJldHVybiBSVU5fQUxMX1RF
U1RTKCk7Cit9CitgYGAKKworVGhlcmUncyBvbmx5IG9uZSBwcm9ibGVtOiB0aGUgZGVmYXVsdCB0
ZXN0IHJlc3VsdCBwcmludGVyIGlzIHN0aWxsIGluCitlZmZlY3QsIHNvIGl0cyBvdXRwdXQgd2ls
bCBtaW5nbGUgd2l0aCB0aGUgb3V0cHV0IGZyb20geW91ciBtaW5pbWFsaXN0CitwcmludGVyLiBU
byBzdXBwcmVzcyB0aGUgZGVmYXVsdCBwcmludGVyLCBqdXN0IHJlbGVhc2UgaXQgZnJvbSB0aGUK
K2V2ZW50IGxpc3RlbmVyIGxpc3QgYW5kIGRlbGV0ZSBpdC4gWW91IGNhbiBkbyBzbyBieSBhZGRp
bmcgb25lIGxpbmU6CitgYGAKKyAgLi4uCisgIGRlbGV0ZSBsaXN0ZW5lcnMuUmVsZWFzZShsaXN0
ZW5lcnMuZGVmYXVsdF9yZXN1bHRfcHJpbnRlcigpKTsKKyAgbGlzdGVuZXJzLkFwcGVuZChuZXcg
TWluaW1hbGlzdFByaW50ZXIpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworYGBgCisKK05v
dywgc2l0IGJhY2sgYW5kIGVuam95IGEgY29tcGxldGVseSBkaWZmZXJlbnQgb3V0cHV0IGZyb20g
eW91cgordGVzdHMuIEZvciBtb3JlIGRldGFpbHMsIHlvdSBjYW4gcmVhZCB0aGlzCitbc2FtcGxl
XSguLi9zYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MpLgorCitZb3UgbWF5IGFwcGVuZCBtb3Jl
IHRoYW4gb25lIGxpc3RlbmVyIHRvIHRoZSBsaXN0LiBXaGVuIGFuIGBPbipTdGFydCgpYAorb3Ig
YE9uVGVzdFBhcnRSZXN1bHQoKWAgZXZlbnQgaXMgZmlyZWQsIHRoZSBsaXN0ZW5lcnMgd2lsbCBy
ZWNlaXZlIGl0IGluCit0aGUgb3JkZXIgdGhleSBhcHBlYXIgaW4gdGhlIGxpc3QgKHNpbmNlIG5l
dyBsaXN0ZW5lcnMgYXJlIGFkZGVkIHRvCit0aGUgZW5kIG9mIHRoZSBsaXN0LCB0aGUgZGVmYXVs
dCB0ZXh0IHByaW50ZXIgYW5kIHRoZSBkZWZhdWx0IFhNTAorZ2VuZXJhdG9yIHdpbGwgcmVjZWl2
ZSB0aGUgZXZlbnQgZmlyc3QpLiBBbiBgT24qRW5kKClgIGV2ZW50IHdpbGwgYmUKK3JlY2VpdmVk
IGJ5IHRoZSBsaXN0ZW5lcnMgaW4gdGhlIF9yZXZlcnNlXyBvcmRlci4gVGhpcyBhbGxvd3Mgb3V0
cHV0IGJ5CitsaXN0ZW5lcnMgYWRkZWQgbGF0ZXIgdG8gYmUgZnJhbWVkIGJ5IG91dHB1dCBmcm9t
IGxpc3RlbmVycyBhZGRlZAorZWFybGllci4KKworIyMgR2VuZXJhdGluZyBGYWlsdXJlcyBpbiBM
aXN0ZW5lcnMgIyMKKworWW91IG1heSB1c2UgZmFpbHVyZS1yYWlzaW5nIG1hY3JvcyAoYEVYUEVD
VF8qKClgLCBgQVNTRVJUXyooKWAsCitgRkFJTCgpYCwgZXRjKSB3aGVuIHByb2Nlc3NpbmcgYW4g
ZXZlbnQuIFRoZXJlIGFyZSBzb21lIHJlc3RyaWN0aW9uczoKKworICAxLiBZb3UgY2Fubm90IGdl
bmVyYXRlIGFueSBmYWlsdXJlIGluIGBPblRlc3RQYXJ0UmVzdWx0KClgIChvdGhlcndpc2UgaXQg
d2lsbCBjYXVzZSBgT25UZXN0UGFydFJlc3VsdCgpYCB0byBiZSBjYWxsZWQgcmVjdXJzaXZlbHkp
LgorICAxLiBBIGxpc3RlbmVyIHRoYXQgaGFuZGxlcyBgT25UZXN0UGFydFJlc3VsdCgpYCBpcyBu
b3QgYWxsb3dlZCB0byBnZW5lcmF0ZSBhbnkgZmFpbHVyZS4KKworV2hlbiB5b3UgYWRkIGxpc3Rl
bmVycyB0byB0aGUgbGlzdGVuZXIgbGlzdCwgeW91IHNob3VsZCBwdXQgbGlzdGVuZXJzCit0aGF0
IGhhbmRsZSBgT25UZXN0UGFydFJlc3VsdCgpYCBfYmVmb3JlXyBsaXN0ZW5lcnMgdGhhdCBjYW4g
Z2VuZXJhdGUKK2ZhaWx1cmVzLiBUaGlzIGVuc3VyZXMgdGhhdCBmYWlsdXJlcyBnZW5lcmF0ZWQg
YnkgdGhlIGxhdHRlciBhcmUKK2F0dHJpYnV0ZWQgdG8gdGhlIHJpZ2h0IHRlc3QgYnkgdGhlIGZv
cm1lci4KKworV2UgaGF2ZSBhIHNhbXBsZSBvZiBmYWlsdXJlLXJhaXNpbmcgbGlzdGVuZXIKK1to
ZXJlXSguLi9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjKS4KKworIyBSdW5uaW5nIFRlc3Qg
UHJvZ3JhbXM6IEFkdmFuY2VkIE9wdGlvbnMgIworCitHb29nbGUgVGVzdCB0ZXN0IHByb2dyYW1z
IGFyZSBvcmRpbmFyeSBleGVjdXRhYmxlcy4gT25jZSBidWlsdCwgeW91IGNhbiBydW4KK3RoZW0g
ZGlyZWN0bHkgYW5kIGFmZmVjdCB0aGVpciBiZWhhdmlvciB2aWEgdGhlIGZvbGxvd2luZyBlbnZp
cm9ubWVudCB2YXJpYWJsZXMKK2FuZC9vciBjb21tYW5kIGxpbmUgZmxhZ3MuIEZvciB0aGUgZmxh
Z3MgdG8gd29yaywgeW91ciBwcm9ncmFtcyBtdXN0IGNhbGwKK2A6OnRlc3Rpbmc6OkluaXRHb29n
bGVUZXN0KClgIGJlZm9yZSBjYWxsaW5nIGBSVU5fQUxMX1RFU1RTKClgLgorCitUbyBzZWUgYSBs
aXN0IG9mIHN1cHBvcnRlZCBmbGFncyBhbmQgdGhlaXIgdXNhZ2UsIHBsZWFzZSBydW4geW91ciB0
ZXN0Citwcm9ncmFtIHdpdGggdGhlIGAtLWhlbHBgIGZsYWcuICBZb3UgY2FuIGFsc28gdXNlIGAt
aGAsIGAtP2AsIG9yIGAvP2AKK2ZvciBzaG9ydC4gIFRoaXMgZmVhdHVyZSBpcyBhZGRlZCBpbiB2
ZXJzaW9uIDEuMy4wLgorCitJZiBhbiBvcHRpb24gaXMgc3BlY2lmaWVkIGJvdGggYnkgYW4gZW52
aXJvbm1lbnQgdmFyaWFibGUgYW5kIGJ5IGEKK2ZsYWcsIHRoZSBsYXR0ZXIgdGFrZXMgcHJlY2Vk
ZW5jZS4gIE1vc3Qgb2YgdGhlIG9wdGlvbnMgY2FuIGFsc28gYmUKK3NldC9yZWFkIGluIGNvZGU6
IHRvIGFjY2VzcyB0aGUgdmFsdWUgb2YgY29tbWFuZCBsaW5lIGZsYWcKK2AtLWd0ZXN0X2Zvb2As
IHdyaXRlIGA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcoZm9vKWAuICBBIGNvbW1vbiBwYXR0ZXJuIGlz
Cit0byBzZXQgdGhlIHZhbHVlIG9mIGEgZmxhZyBiZWZvcmUgY2FsbGluZyBgOjp0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdCgpYAordG8gY2hhbmdlIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBmbGFn
OgorYGBgCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgLy8gRGlzYWJsZXMg
ZWxhcHNlZCB0aW1lIGJ5IGRlZmF1bHQuCisgIDo6dGVzdGluZzo6R1RFU1RfRkxBRyhwcmludF90
aW1lKSA9IGZhbHNlOworCisgIC8vIFRoaXMgYWxsb3dzIHRoZSB1c2VyIHRvIG92ZXJyaWRlIHRo
ZSBmbGFnIG9uIHRoZSBjb21tYW5kIGxpbmUuCisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Qo
JmFyZ2MsIGFyZ3YpOworCisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CitgYGAKKworIyMg
U2VsZWN0aW5nIFRlc3RzICMjCisKK1RoaXMgc2VjdGlvbiBzaG93cyB2YXJpb3VzIG9wdGlvbnMg
Zm9yIGNob29zaW5nIHdoaWNoIHRlc3RzIHRvIHJ1bi4KKworIyMjIExpc3RpbmcgVGVzdCBOYW1l
cyAjIyMKKworU29tZXRpbWVzIGl0IGlzIG5lY2Vzc2FyeSB0byBsaXN0IHRoZSBhdmFpbGFibGUg
dGVzdHMgaW4gYSBwcm9ncmFtIGJlZm9yZQorcnVubmluZyB0aGVtIHNvIHRoYXQgYSBmaWx0ZXIg
bWF5IGJlIGFwcGxpZWQgaWYgbmVlZGVkLiBJbmNsdWRpbmcgdGhlIGZsYWcKK2AtLWd0ZXN0X2xp
c3RfdGVzdHNgIG92ZXJyaWRlcyBhbGwgb3RoZXIgZmxhZ3MgYW5kIGxpc3RzIHRlc3RzIGluIHRo
ZSBmb2xsb3dpbmcKK2Zvcm1hdDoKK2BgYAorVGVzdENhc2UxLgorICBUZXN0TmFtZTEKKyAgVGVz
dE5hbWUyCitUZXN0Q2FzZTIuCisgIFRlc3ROYW1lCitgYGAKKworTm9uZSBvZiB0aGUgdGVzdHMg
bGlzdGVkIGFyZSBhY3R1YWxseSBydW4gaWYgdGhlIGZsYWcgaXMgcHJvdmlkZWQuIFRoZXJlIGlz
IG5vCitjb3JyZXNwb25kaW5nIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciB0aGlzIGZsYWcuCisK
K19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgUnVubmluZyBhIFN1
YnNldCBvZiB0aGUgVGVzdHMgIyMjCisKK0J5IGRlZmF1bHQsIGEgR29vZ2xlIFRlc3QgcHJvZ3Jh
bSBydW5zIGFsbCB0ZXN0cyB0aGUgdXNlciBoYXMgZGVmaW5lZC4KK1NvbWV0aW1lcywgeW91IHdh
bnQgdG8gcnVuIG9ubHkgYSBzdWJzZXQgb2YgdGhlIHRlc3RzIChlLmcuIGZvciBkZWJ1Z2dpbmcg
b3IKK3F1aWNrbHkgdmVyaWZ5aW5nIGEgY2hhbmdlKS4gSWYgeW91IHNldCB0aGUgYEdURVNUX0ZJ
TFRFUmAgZW52aXJvbm1lbnQgdmFyaWFibGUKK29yIHRoZSBgLS1ndGVzdF9maWx0ZXJgIGZsYWcg
dG8gYSBmaWx0ZXIgc3RyaW5nLCBHb29nbGUgVGVzdCB3aWxsIG9ubHkgcnVuIHRoZQordGVzdHMg
d2hvc2UgZnVsbCBuYW1lcyAoaW4gdGhlIGZvcm0gb2YgYFRlc3RDYXNlTmFtZS5UZXN0TmFtZWAp
IG1hdGNoIHRoZQorZmlsdGVyLgorCitUaGUgZm9ybWF0IG9mIGEgZmlsdGVyIGlzIGEgJ2A6YCct
c2VwYXJhdGVkIGxpc3Qgb2Ygd2lsZGNhcmQgcGF0dGVybnMgKGNhbGxlZAordGhlIHBvc2l0aXZl
IHBhdHRlcm5zKSBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgJ2AtYCcgYW5kIGFub3RoZXIKKydg
OmAnLXNlcGFyYXRlZCBwYXR0ZXJuIGxpc3QgKGNhbGxlZCB0aGUgbmVnYXRpdmUgcGF0dGVybnMp
LiBBIHRlc3QgbWF0Y2hlcyB0aGUKK2ZpbHRlciBpZiBhbmQgb25seSBpZiBpdCBtYXRjaGVzIGFu
eSBvZiB0aGUgcG9zaXRpdmUgcGF0dGVybnMgYnV0IGRvZXMgbm90CittYXRjaCBhbnkgb2YgdGhl
IG5lZ2F0aXZlIHBhdHRlcm5zLgorCitBIHBhdHRlcm4gbWF5IGNvbnRhaW4gYCcqJ2AgKG1hdGNo
ZXMgYW55IHN0cmluZykgb3IgYCc/J2AgKG1hdGNoZXMgYW55IHNpbmdsZQorY2hhcmFjdGVyKS4g
Rm9yIGNvbnZlbmllbmNlLCB0aGUgZmlsdGVyIGAnKi1OZWdhdGl2ZVBhdHRlcm5zJ2AgY2FuIGJl
IGFsc28KK3dyaXR0ZW4gYXMgYCctTmVnYXRpdmVQYXR0ZXJucydgLgorCitGb3IgZXhhbXBsZToK
KworICAqIGAuL2Zvb190ZXN0YCBIYXMgbm8gZmxhZywgYW5kIHRodXMgcnVucyBhbGwgaXRzIHRl
c3RzLgorICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPSpgIEFsc28gcnVucyBldmVyeXRo
aW5nLCBkdWUgdG8gdGhlIHNpbmdsZSBtYXRjaC1ldmVyeXRoaW5nIGAqYCB2YWx1ZS4KKyAgKiBg
Li9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj1Gb29UZXN0LipgIFJ1bnMgZXZlcnl0aGluZyBpbiB0
ZXN0IGNhc2UgYEZvb1Rlc3RgLgorICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPSpOdWxs
KjoqQ29uc3RydWN0b3IqYCBSdW5zIGFueSB0ZXN0IHdob3NlIGZ1bGwgbmFtZSBjb250YWlucyBl
aXRoZXIgYCJOdWxsImAgb3IgYCJDb25zdHJ1Y3RvciJgLgorICAqIGAuL2Zvb190ZXN0IC0tZ3Rl
c3RfZmlsdGVyPS0qRGVhdGhUZXN0LipgIFJ1bnMgYWxsIG5vbi1kZWF0aCB0ZXN0cy4KKyAgKiBg
Li9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj1Gb29UZXN0LiotRm9vVGVzdC5CYXJgIFJ1bnMgZXZl
cnl0aGluZyBpbiB0ZXN0IGNhc2UgYEZvb1Rlc3RgIGV4Y2VwdCBgRm9vVGVzdC5CYXJgLgorCitf
QXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIFRlbXBvcmFyaWx5IERp
c2FibGluZyBUZXN0cyAjIyMKKworSWYgeW91IGhhdmUgYSBicm9rZW4gdGVzdCB0aGF0IHlvdSBj
YW5ub3QgZml4IHJpZ2h0IGF3YXksIHlvdSBjYW4gYWRkIHRoZQorYERJU0FCTEVEX2AgcHJlZml4
IHRvIGl0cyBuYW1lLiBUaGlzIHdpbGwgZXhjbHVkZSBpdCBmcm9tIGV4ZWN1dGlvbi4gVGhpcyBp
cworYmV0dGVyIHRoYW4gY29tbWVudGluZyBvdXQgdGhlIGNvZGUgb3IgdXNpbmcgYCNpZiAwYCwg
YXMgZGlzYWJsZWQgdGVzdHMgYXJlCitzdGlsbCBjb21waWxlZCAoYW5kIHRodXMgd29uJ3Qgcm90
KS4KKworSWYgeW91IG5lZWQgdG8gZGlzYWJsZSBhbGwgdGVzdHMgaW4gYSB0ZXN0IGNhc2UsIHlv
dSBjYW4gZWl0aGVyIGFkZCBgRElTQUJMRURfYAordG8gdGhlIGZyb250IG9mIHRoZSBuYW1lIG9m
IGVhY2ggdGVzdCwgb3IgYWx0ZXJuYXRpdmVseSBhZGQgaXQgdG8gdGhlIGZyb250IG9mCit0aGUg
dGVzdCBjYXNlIG5hbWUuCisKK0ZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHRlc3RzIHdvbid0
IGJlIHJ1biBieSBHb29nbGUgVGVzdCwgZXZlbiB0aG91Z2ggdGhleQord2lsbCBzdGlsbCBiZSBj
b21waWxlZDoKKworYGBgCisvLyBUZXN0cyB0aGF0IEZvbyBkb2VzIEFiYy4KK1RFU1QoRm9vVGVz
dCwgRElTQUJMRURfRG9lc0FiYykgeyAuLi4gfQorCitjbGFzcyBESVNBQkxFRF9CYXJUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OworCisvLyBUZXN0cyB0aGF0IEJhciBkb2Vz
IFh5ei4KK1RFU1RfRihESVNBQkxFRF9CYXJUZXN0LCBEb2VzWHl6KSB7IC4uLiB9CitgYGAKKwor
X05vdGU6XyBUaGlzIGZlYXR1cmUgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgdGVtcG9yYXJ5IHBh
aW4tcmVsaWVmLiBZb3Ugc3RpbGwKK2hhdmUgdG8gZml4IHRoZSBkaXNhYmxlZCB0ZXN0cyBhdCBh
IGxhdGVyIGRhdGUuIEFzIGEgcmVtaW5kZXIsIEdvb2dsZSBUZXN0IHdpbGwKK3ByaW50IGEgYmFu
bmVyIHdhcm5pbmcgeW91IGlmIGEgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIGFueSBkaXNhYmxlZCB0
ZXN0cy4KKworX1RpcDpfIFlvdSBjYW4gZWFzaWx5IGNvdW50IHRoZSBudW1iZXIgb2YgZGlzYWJs
ZWQgdGVzdHMgeW91IGhhdmUKK3VzaW5nIGBncmVwYC4gVGhpcyBudW1iZXIgY2FuIGJlIHVzZWQg
YXMgYSBtZXRyaWMgZm9yIGltcHJvdmluZyB5b3VyCit0ZXN0IHF1YWxpdHkuCisKK19BdmFpbGFi
aWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgVGVtcG9yYXJpbHkgRW5hYmxpbmcg
RGlzYWJsZWQgVGVzdHMgIyMjCisKK1RvIGluY2x1ZGUgW2Rpc2FibGVkIHRlc3RzXSgjdGVtcG9y
YXJpbHktZGlzYWJsaW5nLXRlc3RzKSBpbiB0ZXN0CitleGVjdXRpb24sIGp1c3QgaW52b2tlIHRo
ZSB0ZXN0IHByb2dyYW0gd2l0aCB0aGUKK2AtLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3Rz
YCBmbGFnIG9yIHNldCB0aGUKK2BHVEVTVF9BTFNPX1JVTl9ESVNBQkxFRF9URVNUU2AgZW52aXJv
bm1lbnQgdmFyaWFibGUgdG8gYSB2YWx1ZSBvdGhlcgordGhhbiBgMGAuICBZb3UgY2FuIGNvbWJp
bmUgdGhpcyB3aXRoIHRoZQorWy0tZ3Rlc3RcLWZpbHRlcl0oI3J1bm5pbmctYS1zdWJzZXQtb2Yt
dGhlX3Rlc3RzKSBmbGFnIHRvIGZ1cnRoZXIgc2VsZWN0Cit3aGljaCBkaXNhYmxlZCB0ZXN0cyB0
byBydW4uCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJz
aW9uIDEuMy4wLgorCisjIyBSZXBlYXRpbmcgdGhlIFRlc3RzICMjCisKK09uY2UgaW4gYSB3aGls
ZSB5b3UnbGwgcnVuIGludG8gYSB0ZXN0IHdob3NlIHJlc3VsdCBpcyBoaXQtb3ItbWlzcy4gUGVy
aGFwcyBpdAord2lsbCBmYWlsIG9ubHkgMSUgb2YgdGhlIHRpbWUsIG1ha2luZyBpdCByYXRoZXIg
aGFyZCB0byByZXByb2R1Y2UgdGhlIGJ1ZyB1bmRlcgorYSBkZWJ1Z2dlci4gVGhpcyBjYW4gYmUg
YSBtYWpvciBzb3VyY2Ugb2YgZnJ1c3RyYXRpb24uCisKK1RoZSBgLS1ndGVzdF9yZXBlYXRgIGZs
YWcgYWxsb3dzIHlvdSB0byByZXBlYXQgYWxsIChvciBzZWxlY3RlZCkgdGVzdCBtZXRob2RzCitp
biBhIHByb2dyYW0gbWFueSB0aW1lcy4gSG9wZWZ1bGx5LCBhIGZsYWt5IHRlc3Qgd2lsbCBldmVu
dHVhbGx5IGZhaWwgYW5kIGdpdmUKK3lvdSBhIGNoYW5jZSB0byBkZWJ1Zy4gSGVyZSdzIGhvdyB0
byB1c2UgaXQ6CisKK3wgYCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMGAgfCBSZXBlYXQg
Zm9vXF90ZXN0IDEwMDAgdGltZXMgYW5kIGRvbid0IHN0b3AgYXQgZmFpbHVyZXMuIHwKK3w6LS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYCQgZm9vX3Rlc3QgLS1ndGVzdF9y
ZXBlYXQ9LTFgICAgfCBBIG5lZ2F0aXZlIGNvdW50IG1lYW5zIHJlcGVhdGluZyBmb3JldmVyLiAg
ICAgICAgICAgICAgIHwKK3wgYCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMCAtLWd0ZXN0
X2JyZWFrX29uX2ZhaWx1cmVgIHwgUmVwZWF0IGZvb1xfdGVzdCAxMDAwIHRpbWVzLCBzdG9wcGlu
ZyBhdCB0aGUgZmlyc3QgZmFpbHVyZS4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB3aGVuIHJ1
bm5pbmcgdW5kZXIgYSBkZWJ1Z2dlcjogd2hlbiB0aGUgdGVzdGZhaWxzLCBpdCB3aWxsIGRyb3Ag
aW50byB0aGUgZGVidWdnZXIgYW5kIHlvdSBjYW4gdGhlbiBpbnNwZWN0IHZhcmlhYmxlcyBhbmQg
c3RhY2tzLiB8Cit8IGAkIGZvb190ZXN0IC0tZ3Rlc3RfcmVwZWF0PTEwMDAgLS1ndGVzdF9maWx0
ZXI9Rm9vQmFyYCB8IFJlcGVhdCB0aGUgdGVzdHMgd2hvc2UgbmFtZSBtYXRjaGVzIHRoZSBmaWx0
ZXIgMTAwMCB0aW1lcy4gfAorCitJZiB5b3VyIHRlc3QgcHJvZ3JhbSBjb250YWlucyBnbG9iYWwg
c2V0LXVwL3RlYXItZG93biBjb2RlIHJlZ2lzdGVyZWQKK3VzaW5nIGBBZGRHbG9iYWxUZXN0RW52
aXJvbm1lbnQoKWAsIGl0IHdpbGwgYmUgcmVwZWF0ZWQgaW4gZWFjaAoraXRlcmF0aW9uIGFzIHdl
bGwsIGFzIHRoZSBmbGFraW5lc3MgbWF5IGJlIGluIGl0LiBZb3UgY2FuIGFsc28gc3BlY2lmeQor
dGhlIHJlcGVhdCBjb3VudCBieSBzZXR0aW5nIHRoZSBgR1RFU1RfUkVQRUFUYCBlbnZpcm9ubWVu
dCB2YXJpYWJsZS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMj
IFNodWZmbGluZyB0aGUgVGVzdHMgIyMKKworWW91IGNhbiBzcGVjaWZ5IHRoZSBgLS1ndGVzdF9z
aHVmZmxlYCBmbGFnIChvciBzZXQgdGhlIGBHVEVTVF9TSFVGRkxFYAorZW52aXJvbm1lbnQgdmFy
aWFibGUgdG8gYDFgKSB0byBydW4gdGhlIHRlc3RzIGluIGEgcHJvZ3JhbSBpbiBhIHJhbmRvbQor
b3JkZXIuIFRoaXMgaGVscHMgdG8gcmV2ZWFsIGJhZCBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0ZXN0
cy4KKworQnkgZGVmYXVsdCwgR29vZ2xlIFRlc3QgdXNlcyBhIHJhbmRvbSBzZWVkIGNhbGN1bGF0
ZWQgZnJvbSB0aGUgY3VycmVudAordGltZS4gVGhlcmVmb3JlIHlvdSdsbCBnZXQgYSBkaWZmZXJl
bnQgb3JkZXIgZXZlcnkgdGltZS4gVGhlIGNvbnNvbGUKK291dHB1dCBpbmNsdWRlcyB0aGUgcmFu
ZG9tIHNlZWQgdmFsdWUsIHN1Y2ggdGhhdCB5b3UgY2FuIHJlcHJvZHVjZSBhbgorb3JkZXItcmVs
YXRlZCB0ZXN0IGZhaWx1cmUgbGF0ZXIuIFRvIHNwZWNpZnkgdGhlIHJhbmRvbSBzZWVkCitleHBs
aWNpdGx5LCB1c2UgdGhlIGAtLWd0ZXN0X3JhbmRvbV9zZWVkPVNFRURgIGZsYWcgKG9yIHNldCB0
aGUKK2BHVEVTVF9SQU5ET01fU0VFRGAgZW52aXJvbm1lbnQgdmFyaWFibGUpLCB3aGVyZSBgU0VF
RGAgaXMgYW4gaW50ZWdlcgorYmV0d2VlbiAwIGFuZCA5OTk5OS4gVGhlIHNlZWQgdmFsdWUgMCBp
cyBzcGVjaWFsOiBpdCB0ZWxscyBHb29nbGUgVGVzdAordG8gZG8gdGhlIGRlZmF1bHQgYmVoYXZp
b3Igb2YgY2FsY3VsYXRpbmcgdGhlIHNlZWQgZnJvbSB0aGUgY3VycmVudAordGltZS4KKworSWYg
eW91IGNvbWJpbmUgdGhpcyB3aXRoIGAtLWd0ZXN0X3JlcGVhdD1OYCwgR29vZ2xlIFRlc3Qgd2ls
bCBwaWNrIGEKK2RpZmZlcmVudCByYW5kb20gc2VlZCBhbmQgcmUtc2h1ZmZsZSB0aGUgdGVzdHMg
aW4gZWFjaCBpdGVyYXRpb24uCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFj
OyBzaW5jZSB2MS40LjAuCisKKyMjIENvbnRyb2xsaW5nIFRlc3QgT3V0cHV0ICMjCisKK1RoaXMg
c2VjdGlvbiB0ZWFjaGVzIGhvdyB0byB0d2VhayB0aGUgd2F5IHRlc3QgcmVzdWx0cyBhcmUgcmVw
b3J0ZWQuCisKKyMjIyBDb2xvcmVkIFRlcm1pbmFsIE91dHB1dCAjIyMKKworR29vZ2xlIFRlc3Qg
Y2FuIHVzZSBjb2xvcnMgaW4gaXRzIHRlcm1pbmFsIG91dHB1dCB0byBtYWtlIGl0IGVhc2llciB0
byBzcG90Cit0aGUgc2VwYXJhdGlvbiBiZXR3ZWVuIHRlc3RzLCBhbmQgd2hldGhlciB0ZXN0cyBw
YXNzZWQuCisKK1lvdSBjYW4gc2V0IHRoZSBHVEVTVFxfQ09MT1IgZW52aXJvbm1lbnQgdmFyaWFi
bGUgb3Igc2V0IHRoZSBgLS1ndGVzdF9jb2xvcmAKK2NvbW1hbmQgbGluZSBmbGFnIHRvIGB5ZXNg
LCBgbm9gLCBvciBgYXV0b2AgKHRoZSBkZWZhdWx0KSB0byBlbmFibGUgY29sb3JzLAorZGlzYWJs
ZSBjb2xvcnMsIG9yIGxldCBHb29nbGUgVGVzdCBkZWNpZGUuIFdoZW4gdGhlIHZhbHVlIGlzIGBh
dXRvYCwgR29vZ2xlCitUZXN0IHdpbGwgdXNlIGNvbG9ycyBpZiBhbmQgb25seSBpZiB0aGUgb3V0
cHV0IGdvZXMgdG8gYSB0ZXJtaW5hbCBhbmQgKG9uCitub24tV2luZG93cyBwbGF0Zm9ybXMpIHRo
ZSBgVEVSTWAgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0IHRvIGB4dGVybWAgb3IKK2B4dGVy
bS1jb2xvcmAuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMg
U3VwcHJlc3NpbmcgdGhlIEVsYXBzZWQgVGltZSAjIyMKKworQnkgZGVmYXVsdCwgR29vZ2xlIFRl
c3QgcHJpbnRzIHRoZSB0aW1lIGl0IHRha2VzIHRvIHJ1biBlYWNoIHRlc3QuICBUbworc3VwcHJl
c3MgdGhhdCwgcnVuIHRoZSB0ZXN0IHByb2dyYW0gd2l0aCB0aGUgYC0tZ3Rlc3RfcHJpbnRfdGlt
ZT0wYAorY29tbWFuZCBsaW5lIGZsYWcuICBTZXR0aW5nIHRoZSBgR1RFU1RfUFJJTlRfVElNRWAg
ZW52aXJvbm1lbnQKK3ZhcmlhYmxlIHRvIGAwYCBoYXMgdGhlIHNhbWUgZWZmZWN0LgorCitfQXZh
aWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4gIChJbiBHb29nbGUgVGVzdCAxLjMuMCBh
bmQgbG93ZXIsCit0aGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0aGF0IHRoZSBlbGFwc2VkIHRpbWUg
aXMgKipub3QqKiBwcmludGVkLikKKworIyMjIEdlbmVyYXRpbmcgYW4gWE1MIFJlcG9ydCAjIyMK
KworR29vZ2xlIFRlc3QgY2FuIGVtaXQgYSBkZXRhaWxlZCBYTUwgcmVwb3J0IHRvIGEgZmlsZSBp
biBhZGRpdGlvbiB0byBpdHMgbm9ybWFsCit0ZXh0dWFsIG91dHB1dC4gVGhlIHJlcG9ydCBjb250
YWlucyB0aGUgZHVyYXRpb24gb2YgZWFjaCB0ZXN0LCBhbmQgdGh1cyBjYW4KK2hlbHAgeW91IGlk
ZW50aWZ5IHNsb3cgdGVzdHMuCisKK1RvIGdlbmVyYXRlIHRoZSBYTUwgcmVwb3J0LCBzZXQgdGhl
IGBHVEVTVF9PVVRQVVRgIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQorYC0tZ3Rlc3Rfb3V0
cHV0YCBmbGFnIHRvIHRoZSBzdHJpbmcgYCJ4bWw6X3BhdGhfdG9fb3V0cHV0X2ZpbGVfImAsIHdo
aWNoIHdpbGwKK2NyZWF0ZSB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24uIFlvdSBjYW4g
YWxzbyBqdXN0IHVzZSB0aGUgc3RyaW5nCitgInhtbCJgLCBpbiB3aGljaCBjYXNlIHRoZSBvdXRw
dXQgY2FuIGJlIGZvdW5kIGluIHRoZSBgdGVzdF9kZXRhaWwueG1sYCBmaWxlIGluCit0aGUgY3Vy
cmVudCBkaXJlY3RvcnkuCisKK0lmIHlvdSBzcGVjaWZ5IGEgZGlyZWN0b3J5IChmb3IgZXhhbXBs
ZSwgYCJ4bWw6b3V0cHV0L2RpcmVjdG9yeS8iYCBvbiBMaW51eCBvcgorYCJ4bWw6b3V0cHV0XGRp
cmVjdG9yeVwiYCBvbiBXaW5kb3dzKSwgR29vZ2xlIFRlc3Qgd2lsbCBjcmVhdGUgdGhlIFhNTCBm
aWxlIGluCit0aGF0IGRpcmVjdG9yeSwgbmFtZWQgYWZ0ZXIgdGhlIHRlc3QgZXhlY3V0YWJsZSAo
ZS5nLiBgZm9vX3Rlc3QueG1sYCBmb3IgdGVzdAorcHJvZ3JhbSBgZm9vX3Rlc3RgIG9yIGBmb29f
dGVzdC5leGVgKS4gSWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMgKHBlcmhhcHMgbGVmdAorb3Zl
ciBmcm9tIGEgcHJldmlvdXMgcnVuKSwgR29vZ2xlIFRlc3Qgd2lsbCBwaWNrIGEgZGlmZmVyZW50
IG5hbWUgKGUuZy4KK2Bmb29fdGVzdF8xLnhtbGApIHRvIGF2b2lkIG92ZXJ3cml0aW5nIGl0Lgor
CitUaGUgcmVwb3J0IHVzZXMgdGhlIGZvcm1hdCBkZXNjcmliZWQgaGVyZS4gIEl0IGlzIGJhc2Vk
IG9uIHRoZQorYGp1bml0cmVwb3J0YCBBbnQgdGFzayBhbmQgY2FuIGJlIHBhcnNlZCBieSBwb3B1
bGFyIGNvbnRpbnVvdXMgYnVpbGQKK3N5c3RlbXMgbGlrZSBbSHVkc29uXShodHRwczovL2h1ZHNv
bi5kZXYuamF2YS5uZXQvKS4gU2luY2UgdGhhdCBmb3JtYXQKK3dhcyBvcmlnaW5hbGx5IGludGVu
ZGVkIGZvciBKYXZhLCBhIGxpdHRsZSBpbnRlcnByZXRhdGlvbiBpcyByZXF1aXJlZAordG8gbWFr
ZSBpdCBhcHBseSB0byBHb29nbGUgVGVzdCB0ZXN0cywgYXMgc2hvd24gaGVyZToKKworYGBgCis8
dGVzdHN1aXRlcyBuYW1lPSJBbGxUZXN0cyIgLi4uPgorICA8dGVzdHN1aXRlIG5hbWU9InRlc3Rf
Y2FzZV9uYW1lIiAuLi4+CisgICAgPHRlc3RjYXNlIG5hbWU9InRlc3RfbmFtZSIgLi4uPgorICAg
ICAgPGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4i
Lz4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiIvPgorICAgIDwvdGVzdGNhc2U+CisgIDwv
dGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPgorYGBgCisKKyAgKiBUaGUgcm9vdCBgPHRlc3RzdWl0
ZXM+YCBlbGVtZW50IGNvcnJlc3BvbmRzIHRvIHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFtLgorICAq
IGA8dGVzdHN1aXRlPmAgZWxlbWVudHMgY29ycmVzcG9uZCB0byBHb29nbGUgVGVzdCB0ZXN0IGNh
c2VzLgorICAqIGA8dGVzdGNhc2U+YCBlbGVtZW50cyBjb3JyZXNwb25kIHRvIEdvb2dsZSBUZXN0
IHRlc3QgZnVuY3Rpb25zLgorCitGb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgcHJvZ3JhbQor
CitgYGAKK1RFU1QoTWF0aFRlc3QsIEFkZGl0aW9uKSB7IC4uLiB9CitURVNUKE1hdGhUZXN0LCBT
dWJ0cmFjdGlvbikgeyAuLi4gfQorVEVTVChMb2dpY1Rlc3QsIE5vbkNvbnRyYWRpY3Rpb24pIHsg
Li4uIH0KK2BgYAorCitjb3VsZCBnZW5lcmF0ZSB0aGlzIHJlcG9ydDoKKworYGBgCis8P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHRlc3RzdWl0ZXMgdGVzdHM9IjMiIGZh
aWx1cmVzPSIxIiBlcnJvcnM9IjAiIHRpbWU9IjM1IiBuYW1lPSJBbGxUZXN0cyI+CisgIDx0ZXN0
c3VpdGUgbmFtZT0iTWF0aFRlc3QiIHRlc3RzPSIyIiBmYWlsdXJlcz0iMSIgZXJyb3JzPSIwIiB0
aW1lPSIxNSI+CisgICAgPHRlc3RjYXNlIG5hbWU9IkFkZGl0aW9uIiBzdGF0dXM9InJ1biIgdGlt
ZT0iNyIgY2xhc3NuYW1lPSIiPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IGFk
ZCgxLCAxKSYjeDBBOyBBY3R1YWw6IDMmI3gwQTtFeHBlY3RlZDogMiIgdHlwZT0iIi8+CisgICAg
ICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogYWRkKDEsIC0xKSYjeDBBOyBBY3R1YWw6IDEm
I3gwQTtFeHBlY3RlZDogMCIgdHlwZT0iIi8+CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8dGVzdGNh
c2UgbmFtZT0iU3VidHJhY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSI1IiBjbGFzc25hbWU9IiI+
CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iTG9n
aWNUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGVycm9ycz0iMCIgdGltZT0iNSI+CisgICAg
PHRlc3RjYXNlIG5hbWU9Ik5vbkNvbnRyYWRpY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSI1IiBj
bGFzc25hbWU9IiI+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rlc3RzdWl0
ZXM+CitgYGAKKworVGhpbmdzIHRvIG5vdGU6CisKKyAgKiBUaGUgYHRlc3RzYCBhdHRyaWJ1dGUg
b2YgYSBgPHRlc3RzdWl0ZXM+YCBvciBgPHRlc3RzdWl0ZT5gIGVsZW1lbnQgdGVsbHMgaG93IG1h
bnkgdGVzdCBmdW5jdGlvbnMgdGhlIEdvb2dsZSBUZXN0IHByb2dyYW0gb3IgdGVzdCBjYXNlIGNv
bnRhaW5zLCB3aGlsZSB0aGUgYGZhaWx1cmVzYCBhdHRyaWJ1dGUgdGVsbHMgaG93IG1hbnkgb2Yg
dGhlbSBmYWlsZWQuCisgICogVGhlIGB0aW1lYCBhdHRyaWJ1dGUgZXhwcmVzc2VzIHRoZSBkdXJh
dGlvbiBvZiB0aGUgdGVzdCwgdGVzdCBjYXNlLCBvciBlbnRpcmUgdGVzdCBwcm9ncmFtIGluIG1p
bGxpc2Vjb25kcy4KKyAgKiBFYWNoIGA8ZmFpbHVyZT5gIGVsZW1lbnQgY29ycmVzcG9uZHMgdG8g
YSBzaW5nbGUgZmFpbGVkIEdvb2dsZSBUZXN0IGFzc2VydGlvbi4KKyAgKiBTb21lIEpVbml0IGNv
bmNlcHRzIGRvbid0IGFwcGx5IHRvIEdvb2dsZSBUZXN0LCB5ZXQgd2UgaGF2ZSB0byBjb25mb3Jt
IHRvIHRoZSBEVEQuIFRoZXJlZm9yZSB5b3UnbGwgc2VlIHNvbWUgZHVtbXkgZWxlbWVudHMgYW5k
IGF0dHJpYnV0ZXMgaW4gdGhlIHJlcG9ydC4gWW91IGNhbiBzYWZlbHkgaWdub3JlIHRoZXNlIHBh
cnRzLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgQ29udHJv
bGxpbmcgSG93IEZhaWx1cmVzIEFyZSBSZXBvcnRlZCAjIworCisjIyMgVHVybmluZyBBc3NlcnRp
b24gRmFpbHVyZXMgaW50byBCcmVhay1Qb2ludHMgIyMjCisKK1doZW4gcnVubmluZyB0ZXN0IHBy
b2dyYW1zIHVuZGVyIGEgZGVidWdnZXIsIGl0J3MgdmVyeSBjb252ZW5pZW50IGlmIHRoZQorZGVi
dWdnZXIgY2FuIGNhdGNoIGFuIGFzc2VydGlvbiBmYWlsdXJlIGFuZCBhdXRvbWF0aWNhbGx5IGRy
b3AgaW50byBpbnRlcmFjdGl2ZQorbW9kZS4gR29vZ2xlIFRlc3QncyBfYnJlYWstb24tZmFpbHVy
ZV8gbW9kZSBzdXBwb3J0cyB0aGlzIGJlaGF2aW9yLgorCitUbyBlbmFibGUgaXQsIHNldCB0aGUg
YEdURVNUX0JSRUFLX09OX0ZBSUxVUkVgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEgdmFsdWUK
K290aGVyIHRoYW4gYDBgIC4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhlIGAtLWd0ZXN0
X2JyZWFrX29uX2ZhaWx1cmVgCitjb21tYW5kIGxpbmUgZmxhZy4KKworX0F2YWlsYWJpbGl0eTpf
IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBEaXNhYmxpbmcgQ2F0Y2hpbmcgVGVzdC1UaHJv
d24gRXhjZXB0aW9ucyAjIyMKKworR29vZ2xlIFRlc3QgY2FuIGJlIHVzZWQgZWl0aGVyIHdpdGgg
b3Igd2l0aG91dCBleGNlcHRpb25zIGVuYWJsZWQuICBJZgorYSB0ZXN0IHRocm93cyBhIEMrKyBl
eGNlcHRpb24gb3IgKG9uIFdpbmRvd3MpIGEgc3RydWN0dXJlZCBleGNlcHRpb24KKyhTRUgpLCBi
eSBkZWZhdWx0IEdvb2dsZSBUZXN0IGNhdGNoZXMgaXQsIHJlcG9ydHMgaXQgYXMgYSB0ZXN0Citm
YWlsdXJlLCBhbmQgY29udGludWVzIHdpdGggdGhlIG5leHQgdGVzdCBtZXRob2QuICBUaGlzIG1h
eGltaXplcyB0aGUKK2NvdmVyYWdlIG9mIGEgdGVzdCBydW4uICBBbHNvLCBvbiBXaW5kb3dzIGFu
IHVuY2F1Z2h0IGV4Y2VwdGlvbiB3aWxsCitjYXVzZSBhIHBvcC11cCB3aW5kb3csIHNvIGNhdGNo
aW5nIHRoZSBleGNlcHRpb25zIGFsbG93cyB5b3UgdG8gcnVuCit0aGUgdGVzdHMgYXV0b21hdGlj
YWxseS4KKworV2hlbiBkZWJ1Z2dpbmcgdGhlIHRlc3QgZmFpbHVyZXMsIGhvd2V2ZXIsIHlvdSBt
YXkgaW5zdGVhZCB3YW50IHRoZQorZXhjZXB0aW9ucyB0byBiZSBoYW5kbGVkIGJ5IHRoZSBkZWJ1
Z2dlciwgc3VjaCB0aGF0IHlvdSBjYW4gZXhhbWluZQordGhlIGNhbGwgc3RhY2sgd2hlbiBhbiBl
eGNlcHRpb24gaXMgdGhyb3duLiAgVG8gYWNoaWV2ZSB0aGF0LCBzZXQgdGhlCitgR1RFU1RfQ0FU
Q0hfRVhDRVBUSU9OU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYDBgLCBvciB1c2UgdGhlCitg
LS1ndGVzdF9jYXRjaF9leGNlcHRpb25zPTBgIGZsYWcgd2hlbiBydW5uaW5nIHRoZSB0ZXN0cy4K
KworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIExldHRpbmcg
QW5vdGhlciBUZXN0aW5nIEZyYW1ld29yayBEcml2ZSAjIyMKKworSWYgeW91IHdvcmsgb24gYSBw
cm9qZWN0IHRoYXQgaGFzIGFscmVhZHkgYmVlbiB1c2luZyBhbm90aGVyIHRlc3RpbmcKK2ZyYW1l
d29yayBhbmQgaXMgbm90IHJlYWR5IHRvIGNvbXBsZXRlbHkgc3dpdGNoIHRvIEdvb2dsZSBUZXN0
IHlldCwKK3lvdSBjYW4gZ2V0IG11Y2ggb2YgR29vZ2xlIFRlc3QncyBiZW5lZml0IGJ5IHVzaW5n
IGl0cyBhc3NlcnRpb25zIGluCit5b3VyIGV4aXN0aW5nIHRlc3RzLiAgSnVzdCBjaGFuZ2UgeW91
ciBgbWFpbigpYCBmdW5jdGlvbiB0byBsb29rCitsaWtlOgorCitgYGAKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgOjp0ZXN0
aW5nOjpHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1ZTsKKyAgLy8gSW1wb3J0YW50
OiBHb29nbGUgVGVzdCBtdXN0IGJlIGluaXRpYWxpemVkLgorICA6OnRlc3Rpbmc6OkluaXRHb29n
bGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICAuLi4gd2hhdGV2ZXIgeW91ciBleGlzdGluZyB0ZXN0
aW5nIGZyYW1ld29yayByZXF1aXJlcyAuLi4KK30KK2BgYAorCitXaXRoIHRoYXQsIHlvdSBjYW4g
dXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW4gYWRkaXRpb24gdG8gdGhlCituYXRpdmUgYXNz
ZXJ0aW9ucyB5b3VyIHRlc3RpbmcgZnJhbWV3b3JrIHByb3ZpZGVzLCBmb3IgZXhhbXBsZToKKwor
YGBgCit2b2lkIFRlc3RGb29Eb2VzQmFyKCkgeworICBGb28gZm9vOworICBFWFBFQ1RfTEUoZm9v
LkJhcigxKSwgMTAwKTsgICAgIC8vIEEgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uLgorICBDUFBVTklU
X0FTU0VSVChmb28uSXNFbXB0eSgpKTsgIC8vIEEgbmF0aXZlIGFzc2VydGlvbi4KK30KK2BgYAor
CitJZiBhIEdvb2dsZSBUZXN0IGFzc2VydGlvbiBmYWlscywgaXQgd2lsbCBwcmludCBhbiBlcnJv
ciBtZXNzYWdlIGFuZAordGhyb3cgYW4gZXhjZXB0aW9uLCB3aGljaCB3aWxsIGJlIHRyZWF0ZWQg
YXMgYSBmYWlsdXJlIGJ5IHlvdXIgaG9zdAordGVzdGluZyBmcmFtZXdvcmsuICBJZiB5b3UgY29t
cGlsZSB5b3VyIGNvZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLAorYSBmYWlsZWQgR29vZ2xl
IFRlc3QgYXNzZXJ0aW9uIHdpbGwgaW5zdGVhZCBleGl0IHlvdXIgcHJvZ3JhbSB3aXRoIGEKK25v
bi16ZXJvIGNvZGUsIHdoaWNoIHdpbGwgYWxzbyBzaWduYWwgYSB0ZXN0IGZhaWx1cmUgdG8geW91
ciB0ZXN0CitydW5uZXIuCisKK0lmIHlvdSBkb24ndCB3cml0ZSBgOjp0ZXN0aW5nOjpHVEVTVF9G
TEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1ZTtgIGluCit5b3VyIGBtYWluKClgLCB5b3UgY2Fu
IGFsdGVybmF0aXZlbHkgZW5hYmxlIHRoaXMgZmVhdHVyZSBieSBzcGVjaWZ5aW5nCit0aGUgYC0t
Z3Rlc3RfdGhyb3dfb25fZmFpbHVyZWAgZmxhZyBvbiB0aGUgY29tbWFuZC1saW5lIG9yIHNldHRp
bmcgdGhlCitgR1RFU1RfVEhST1dfT05fRkFJTFVSRWAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8g
YSBub24temVybyB2YWx1ZS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7
IHNpbmNlIHYxLjMuMC4KKworIyMgRGlzdHJpYnV0aW5nIFRlc3QgRnVuY3Rpb25zIHRvIE11bHRp
cGxlIE1hY2hpbmVzICMjCisKK0lmIHlvdSBoYXZlIG1vcmUgdGhhbiBvbmUgbWFjaGluZSB5b3Ug
Y2FuIHVzZSB0byBydW4gYSB0ZXN0IHByb2dyYW0sCit5b3UgbWlnaHQgd2FudCB0byBydW4gdGhl
IHRlc3QgZnVuY3Rpb25zIGluIHBhcmFsbGVsIGFuZCBnZXQgdGhlCityZXN1bHQgZmFzdGVyLiAg
V2UgY2FsbCB0aGlzIHRlY2huaXF1ZSBfc2hhcmRpbmdfLCB3aGVyZSBlYWNoIG1hY2hpbmUKK2lz
IGNhbGxlZCBhIF9zaGFyZF8uCisKK0dvb2dsZSBUZXN0IGlzIGNvbXBhdGlibGUgd2l0aCB0ZXN0
IHNoYXJkaW5nLiAgVG8gdGFrZSBhZHZhbnRhZ2Ugb2YKK3RoaXMgZmVhdHVyZSwgeW91ciB0ZXN0
IHJ1bm5lciAobm90IHBhcnQgb2YgR29vZ2xlIFRlc3QpIG5lZWRzIHRvIGRvCit0aGUgZm9sbG93
aW5nOgorCisgIDEuIEFsbG9jYXRlIGEgbnVtYmVyIG9mIG1hY2hpbmVzIChzaGFyZHMpIHRvIHJ1
biB0aGUgdGVzdHMuCisgIDEuIE9uIGVhY2ggc2hhcmQsIHNldCB0aGUgYEdURVNUX1RPVEFMX1NI
QVJEU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhlIHRvdGFsIG51bWJlciBvZiBzaGFyZHMu
ICBJdCBtdXN0IGJlIHRoZSBzYW1lIGZvciBhbGwgc2hhcmRzLgorICAxLiBPbiBlYWNoIHNoYXJk
LCBzZXQgdGhlIGBHVEVTVF9TSEFSRF9JTkRFWGAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhl
IGluZGV4IG9mIHRoZSBzaGFyZC4gIERpZmZlcmVudCBzaGFyZHMgbXVzdCBiZSBhc3NpZ25lZCBk
aWZmZXJlbnQgaW5kaWNlcywgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcmFuZ2UgYFswLCBHVEVTVF9U
T1RBTF9TSEFSRFMgLSAxXWAuCisgIDEuIFJ1biB0aGUgc2FtZSB0ZXN0IHByb2dyYW0gb24gYWxs
IHNoYXJkcy4gIFdoZW4gR29vZ2xlIFRlc3Qgc2VlcyB0aGUgYWJvdmUgdHdvIGVudmlyb25tZW50
IHZhcmlhYmxlcywgaXQgd2lsbCBzZWxlY3QgYSBzdWJzZXQgb2YgdGhlIHRlc3QgZnVuY3Rpb25z
IHRvIHJ1bi4gIEFjcm9zcyBhbGwgc2hhcmRzLCBlYWNoIHRlc3QgZnVuY3Rpb24gaW4gdGhlIHBy
b2dyYW0gd2lsbCBiZSBydW4gZXhhY3RseSBvbmNlLgorICAxLiBXYWl0IGZvciBhbGwgc2hhcmRz
IHRvIGZpbmlzaCwgdGhlbiBjb2xsZWN0IGFuZCByZXBvcnQgdGhlIHJlc3VsdHMuCisKK1lvdXIg
cHJvamVjdCBtYXkgaGF2ZSB0ZXN0cyB0aGF0IHdlcmUgd3JpdHRlbiB3aXRob3V0IEdvb2dsZSBU
ZXN0IGFuZAordGh1cyBkb24ndCB1bmRlcnN0YW5kIHRoaXMgcHJvdG9jb2wuICBJbiBvcmRlciBm
b3IgeW91ciB0ZXN0IHJ1bm5lciB0bworZmlndXJlIG91dCB3aGljaCB0ZXN0IHN1cHBvcnRzIHNo
YXJkaW5nLCBpdCBjYW4gc2V0IHRoZSBlbnZpcm9ubWVudAordmFyaWFibGUgYEdURVNUX1NIQVJE
X1NUQVRVU19GSUxFYCB0byBhIG5vbi1leGlzdGVudCBmaWxlIHBhdGguICBJZiBhCit0ZXN0IHBy
b2dyYW0gc3VwcG9ydHMgc2hhcmRpbmcsIGl0IHdpbGwgY3JlYXRlIHRoaXMgZmlsZSB0bworYWNr
bm93bGVkZ2UgdGhlIGZhY3QgKHRoZSBhY3R1YWwgY29udGVudHMgb2YgdGhlIGZpbGUgYXJlIG5v
dAoraW1wb3J0YW50IGF0IHRoaXMgdGltZTsgYWx0aG91Z2ggd2UgbWF5IHN0aWNrIHNvbWUgdXNl
ZnVsIGluZm9ybWF0aW9uCitpbiBpdCBpbiB0aGUgZnV0dXJlLik7IG90aGVyd2lzZSBpdCB3aWxs
IG5vdCBjcmVhdGUgaXQuCisKK0hlcmUncyBhbiBleGFtcGxlIHRvIG1ha2UgaXQgY2xlYXIuICBT
dXBwb3NlIHlvdSBoYXZlIGEgdGVzdCBwcm9ncmFtCitgZm9vX3Rlc3RgIHRoYXQgY29udGFpbnMg
dGhlIGZvbGxvd2luZyA1IHRlc3QgZnVuY3Rpb25zOgorYGBgCitURVNUKEEsIFYpCitURVNUKEEs
IFcpCitURVNUKEIsIFgpCitURVNUKEIsIFkpCitURVNUKEIsIFopCitgYGAKK2FuZCB5b3UgaGF2
ZSAzIG1hY2hpbmVzIGF0IHlvdXIgZGlzcG9zYWwuICBUbyBydW4gdGhlIHRlc3QgZnVuY3Rpb25z
IGluCitwYXJhbGxlbCwgeW91IHdvdWxkIHNldCBgR1RFU1RfVE9UQUxfU0hBUkRTYCB0byAzIG9u
IGFsbCBtYWNoaW5lcywgYW5kCitzZXQgYEdURVNUX1NIQVJEX0lOREVYYCB0byAwLCAxLCBhbmQg
MiBvbiB0aGUgbWFjaGluZXMgcmVzcGVjdGl2ZWx5LgorVGhlbiB5b3Ugd291bGQgcnVuIHRoZSBz
YW1lIGBmb29fdGVzdGAgb24gZWFjaCBtYWNoaW5lLgorCitHb29nbGUgVGVzdCByZXNlcnZlcyB0
aGUgcmlnaHQgdG8gY2hhbmdlIGhvdyB0aGUgd29yayBpcyBkaXN0cmlidXRlZAorYWNyb3NzIHRo
ZSBzaGFyZHMsIGJ1dCBoZXJlJ3Mgb25lIHBvc3NpYmxlIHNjZW5hcmlvOgorCisgICogTWFjaGlu
ZSAjMCBydW5zIGBBLlZgIGFuZCBgQi5YYC4KKyAgKiBNYWNoaW5lICMxIHJ1bnMgYEEuV2AgYW5k
IGBCLllgLgorICAqIE1hY2hpbmUgIzIgcnVucyBgQi5aYC4KKworX0F2YWlsYWJpbGl0eTpfIExp
bnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4zLjAuCisKKyMgRnVzaW5nIEdvb2ds
ZSBUZXN0IFNvdXJjZSBGaWxlcyAjCisKK0dvb2dsZSBUZXN0J3MgaW1wbGVtZW50YXRpb24gY29u
c2lzdHMgb2YgfjMwIGZpbGVzIChleGNsdWRpbmcgaXRzIG93bgordGVzdHMpLiAgU29tZXRpbWVz
IHlvdSBtYXkgd2FudCB0aGVtIHRvIGJlIHBhY2thZ2VkIHVwIGluIHR3byBmaWxlcyAoYQorYC5o
YCBhbmQgYSBgLmNjYCkgaW5zdGVhZCwgc3VjaCB0aGF0IHlvdSBjYW4gZWFzaWx5IGNvcHkgdGhl
bSB0byBhIG5ldworbWFjaGluZSBhbmQgc3RhcnQgaGFja2luZyB0aGVyZS4gIEZvciB0aGlzIHdl
IHByb3ZpZGUgYW4gZXhwZXJpbWVudGFsCitQeXRob24gc2NyaXB0IGBmdXNlX2d0ZXN0X2ZpbGVz
LnB5YCBpbiB0aGUgYHNjcmlwdHMvYCBkaXJlY3RvcnkgKHNpbmNlIHJlbGVhc2UgMS4zLjApLgor
QXNzdW1pbmcgeW91IGhhdmUgUHl0aG9uIDIuNCBvciBhYm92ZSBpbnN0YWxsZWQgb24geW91ciBt
YWNoaW5lLCBqdXN0CitnbyB0byB0aGF0IGRpcmVjdG9yeSBhbmQgcnVuCitgYGAKK3B5dGhvbiBm
dXNlX2d0ZXN0X2ZpbGVzLnB5IE9VVFBVVF9ESVIKK2BgYAorCithbmQgeW91IHNob3VsZCBzZWUg
YW4gYE9VVFBVVF9ESVJgIGRpcmVjdG9yeSBiZWluZyBjcmVhdGVkIHdpdGggZmlsZXMKK2BndGVz
dC9ndGVzdC5oYCBhbmQgYGd0ZXN0L2d0ZXN0LWFsbC5jY2AgaW4gaXQuICBUaGVzZSBmaWxlcyBj
b250YWluCitldmVyeXRoaW5nIHlvdSBuZWVkIHRvIHVzZSBHb29nbGUgVGVzdC4gIEp1c3QgY29w
eSB0aGVtIHRvIGFueXdoZXJlCit5b3Ugd2FudCBhbmQgeW91IGFyZSByZWFkeSB0byB3cml0ZSB0
ZXN0cy4gIFlvdSBjYW4gdXNlIHRoZQorW3NjcmlwdHMvdGVzdC9NYWtlZmlsZV0oLi4vc2NyaXB0
cy90ZXN0L01ha2VmaWxlKQorZmlsZSBhcyBhbiBleGFtcGxlIG9uIGhvdyB0byBjb21waWxlIHlv
dXIgdGVzdHMgYWdhaW5zdCB0aGVtLgorCisjIFdoZXJlIHRvIEdvIGZyb20gSGVyZSAjCisKK0Nv
bmdyYXR1bGF0aW9ucyEgWW91J3ZlIG5vdyBsZWFybmVkIG1vcmUgYWR2YW5jZWQgR29vZ2xlIFRl
c3QgdG9vbHMgYW5kIGFyZQorcmVhZHkgdG8gdGFja2xlIG1vcmUgY29tcGxleCB0ZXN0aW5nIHRh
c2tzLiBJZiB5b3Ugd2FudCB0byBkaXZlIGV2ZW4gZGVlcGVyLCB5b3UKK2NhbiByZWFkIHRoZSBb
RnJlcXVlbnRseS1Bc2tlZCBRdWVzdGlvbnNdKFYxXzZfRkFRLm1kKS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfNl9Eb2N1bWVudGF0aW9uLm1kIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV82X0RvY3VtZW50YXRpb24ubWQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2E5MjQ2NjBhM2RjMDYwM2Y4MTM3NDM4OThjY2Q2YzNjOTIwNzk3NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfNl9Eb2N1bWVudGF0aW9uLm1kCkBA
IC0wLDAgKzEsMTQgQEAKK1RoaXMgcGFnZSBsaXN0cyBhbGwgZG9jdW1lbnRhdGlvbiB3aWtpIHBh
Z2VzIGZvciBHb29nbGUgVGVzdCAqKjEuNioqCistLSAqKmlmIHlvdSB1c2UgYSByZWxlYXNlZCB2
ZXJzaW9uIG9mIEdvb2dsZSBUZXN0LCBwbGVhc2UgcmVhZCB0aGUKK2RvY3VtZW50YXRpb24gZm9y
IHRoYXQgc3BlY2lmaWMgdmVyc2lvbiBpbnN0ZWFkLioqCisKKyAgKiBbUHJpbWVyXShWMV82X1By
aW1lci5tZCkgLS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJlIG5ldyB0byBHb29nbGUgVGVzdC4KKyAg
KiBbU2FtcGxlc10oVjFfNl9TYW1wbGVzLm1kKSAtLSBsZWFybiBmcm9tIGV4YW1wbGVzLgorICAq
IFtBZHZhbmNlZEd1aWRlXShWMV82X0FkdmFuY2VkR3VpZGUubWQpIC0tIGxlYXJuIG1vcmUgYWJv
dXQgR29vZ2xlIFRlc3QuCisgICogW1hjb2RlR3VpZGVdKFYxXzZfWGNvZGVHdWlkZS5tZCkgLS0g
aG93IHRvIHVzZSBHb29nbGUgVGVzdCBpbiBYY29kZSBvbiBNYWMuCisgICogW0ZyZXF1ZW50bHkt
QXNrZWQgUXVlc3Rpb25zXShWMV82X0ZBUS5tZCkgLS0gY2hlY2sgaGVyZSBiZWZvcmUgYXNraW5n
IGEgcXVlc3Rpb24gb24gdGhlIG1haWxpbmcgbGlzdC4KKworVG8gY29udHJpYnV0ZSBjb2RlIHRv
IEdvb2dsZSBUZXN0LCByZWFkOgorCisgICogW0Rldkd1aWRlXShEZXZHdWlkZS5tZCkgLS0gcmVh
ZCB0aGlzIF9iZWZvcmVfIHdyaXRpbmcgeW91ciBmaXJzdCBwYXRjaC4KKyAgKiBbUHVtcE1hbnVh
bF0oVjFfNl9QdW1wTWFudWFsLm1kKSAtLSBob3cgd2UgZ2VuZXJhdGUgc29tZSBvZiBHb29nbGUg
VGVzdCdzIHNvdXJjZSBmaWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzZfRkFRLm1kIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV82X0ZBUS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjdmNzg0MDc3MjJl
MWU1ZTdhODZjNjcxMzU5OGU1Nzk2MDdiNzgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV82X0ZBUS5tZApAQCAtMCwwICsxLDEwMzggQEAKKworCitJ
ZiB5b3UgY2Fubm90IGZpbmQgdGhlIGFuc3dlciB0byB5b3VyIHF1ZXN0aW9uIGhlcmUsIGFuZCB5
b3UgaGF2ZSByZWFkCitbUHJpbWVyXShWMV82X1ByaW1lci5tZCkgYW5kIFtBZHZhbmNlZEd1aWRl
XShWMV82X0FkdmFuY2VkR3VpZGUubWQpLCBzZW5kIGl0IHRvCitnb29nbGV0ZXN0ZnJhbWV3b3Jr
QGdvb2dsZWdyb3Vwcy5jb20uCisKKyMjIFdoeSBzaG91bGQgSSB1c2UgR29vZ2xlIFRlc3QgaW5z
dGVhZCBvZiBteSBmYXZvcml0ZSBDKysgdGVzdGluZyBmcmFtZXdvcms/ICMjCisKK0ZpcnN0LCBs
ZXQgdXMgc2F5IGNsZWFybHkgdGhhdCB3ZSBkb24ndCB3YW50IHRvIGdldCBpbnRvIHRoZSBkZWJh
dGUgb2YKK3doaWNoIEMrKyB0ZXN0aW5nIGZyYW1ld29yayBpcyAqKnRoZSBiZXN0KiouICBUaGVy
ZSBleGlzdCBtYW55IGZpbmUKK2ZyYW1ld29ya3MgZm9yIHdyaXRpbmcgQysrIHRlc3RzLCBhbmQg
d2UgaGF2ZSB0cmVtZW5kb3VzIHJlc3BlY3QgZm9yCit0aGUgZGV2ZWxvcGVycyBhbmQgdXNlcnMg
b2YgdGhlbS4gIFdlIGRvbid0IHRoaW5rIHRoZXJlIGlzIChvciB3aWxsCitiZSkgYSBzaW5nbGUg
YmVzdCBmcmFtZXdvcmsgLSB5b3UgaGF2ZSB0byBwaWNrIHRoZSByaWdodCB0b29sIGZvciB0aGUK
K3BhcnRpY3VsYXIgdGFzayB5b3UgYXJlIHRhY2tsaW5nLgorCitXZSBjcmVhdGVkIEdvb2dsZSBU
ZXN0IGJlY2F1c2Ugd2UgY291bGRuJ3QgZmluZCB0aGUgcmlnaHQgY29tYmluYXRpb24KK29mIGZl
YXR1cmVzIGFuZCBjb252ZW5pZW5jZXMgaW4gYW4gZXhpc3RpbmcgZnJhbWV3b3JrIHRvIHNhdGlz
ZnkgX291cl8KK25lZWRzLiAgVGhlIGZvbGxvd2luZyBpcyBhIGxpc3Qgb2YgdGhpbmdzIHRoYXQg
X3dlXyBsaWtlIGFib3V0IEdvb2dsZQorVGVzdC4gIFdlIGRvbid0IGNsYWltIHRoZW0gdG8gYmUg
dW5pcXVlIHRvIEdvb2dsZSBUZXN0IC0gcmF0aGVyLCB0aGUKK2NvbWJpbmF0aW9uIG9mIHRoZW0g
bWFrZXMgR29vZ2xlIFRlc3QgdGhlIGNob2ljZSBmb3IgdXMuICBXZSBob3BlIHRoaXMKK2xpc3Qg
Y2FuIGhlbHAgeW91IGRlY2lkZSB3aGV0aGVyIGl0IGlzIGZvciB5b3UgdG9vLgorCisgICogR29v
Z2xlIFRlc3QgaXMgZGVzaWduZWQgdG8gYmUgcG9ydGFibGU6IGl0IGRvZXNuJ3QgcmVxdWlyZSBl
eGNlcHRpb25zIG9yIFJUVEk7IGl0IHdvcmtzIGFyb3VuZCB2YXJpb3VzIGJ1Z3MgaW4gdmFyaW91
cyBjb21waWxlcnMgYW5kIGVudmlyb25tZW50czsgZXRjLiAgQXMgYSByZXN1bHQsIGl0IHdvcmtz
IG9uIExpbnV4LCBNYWMgT1MgWCwgV2luZG93cyBhbmQgc2V2ZXJhbCBlbWJlZGRlZCBvcGVyYXRp
bmcgc3lzdGVtcy4KKyAgKiBOb25mYXRhbCBhc3NlcnRpb25zIChgRVhQRUNUXypgKSBoYXZlIHBy
b3ZlbiB0byBiZSBncmVhdCB0aW1lIHNhdmVycywgYXMgdGhleSBhbGxvdyBhIHRlc3QgdG8gcmVw
b3J0IG11bHRpcGxlIGZhaWx1cmVzIGluIGEgc2luZ2xlIGVkaXQtY29tcGlsZS10ZXN0IGN5Y2xl
LgorICAqIEl0J3MgZWFzeSB0byB3cml0ZSBhc3NlcnRpb25zIHRoYXQgZ2VuZXJhdGUgaW5mb3Jt
YXRpdmUgbWVzc2FnZXM6IHlvdSBqdXN0IHVzZSB0aGUgc3RyZWFtIHN5bnRheCB0byBhcHBlbmQg
YW55IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24sIGUuZy4gYEFTU0VSVF9FUSg1LCBGb28oaSkpIDw8
ICIgd2hlcmUgaSA9ICIgPDwgaTtgLiAgSXQgZG9lc24ndCByZXF1aXJlIGEgbmV3IHNldCBvZiBt
YWNyb3Mgb3Igc3BlY2lhbCBmdW5jdGlvbnMuCisgICogR29vZ2xlIFRlc3QgYXV0b21hdGljYWxs
eSBkZXRlY3RzIHlvdXIgdGVzdHMgYW5kIGRvZXNuJ3QgcmVxdWlyZSB5b3UgdG8gZW51bWVyYXRl
IHRoZW0gaW4gb3JkZXIgdG8gcnVuIHRoZW0uCisgICogRGVhdGggdGVzdHMgYXJlIHByZXR0eSBo
YW5keSBmb3IgZW5zdXJpbmcgdGhhdCB5b3VyIGFzc2VydHMgaW4gcHJvZHVjdGlvbiBjb2RlIGFy
ZSB0cmlnZ2VyZWQgYnkgdGhlIHJpZ2h0IGNvbmRpdGlvbnMuCisgICogYFNDT1BFRF9UUkFDRWAg
aGVscHMgeW91IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYW4gYXNzZXJ0aW9uIGZhaWx1cmUg
d2hlbiBpdCBjb21lcyBmcm9tIGluc2lkZSBhIHN1Yi1yb3V0aW5lIG9yIGxvb3AuCisgICogWW91
IGNhbiBkZWNpZGUgd2hpY2ggdGVzdHMgdG8gcnVuIHVzaW5nIG5hbWUgcGF0dGVybnMuICBUaGlz
IHNhdmVzIHRpbWUgd2hlbiB5b3Ugd2FudCB0byBxdWlja2x5IHJlcHJvZHVjZSBhIHRlc3QgZmFp
bHVyZS4KKyAgKiBHb29nbGUgVGVzdCBjYW4gZ2VuZXJhdGUgWE1MIHRlc3QgcmVzdWx0IHJlcG9y
dHMgdGhhdCBjYW4gYmUgcGFyc2VkIGJ5IHBvcHVsYXIgY29udGludW91cyBidWlsZCBzeXN0ZW0g
bGlrZSBIdWRzb24uCisgICogU2ltcGxlIHRoaW5ncyBhcmUgZWFzeSBpbiBHb29nbGUgVGVzdCwg
d2hpbGUgaGFyZCB0aGluZ3MgYXJlIHBvc3NpYmxlOiBpbiBhZGRpdGlvbiB0byBhZHZhbmNlZCBm
ZWF0dXJlcyBsaWtlIFtnbG9iYWwgdGVzdCBlbnZpcm9ubWVudHNdKFYxXzZfQWR2YW5jZWRHdWlk
ZS5tZCNHbG9iYWxfU2V0LVVwX2FuZF9UZWFyLURvd24pIGFuZCB0ZXN0cyBwYXJhbWV0ZXJpemVk
IGJ5IFt2YWx1ZXNdKFYxXzZfQWR2YW5jZWRHdWlkZS5tZCN2YWx1ZS1wYXJhbWV0ZXJpemVkLXRl
c3RzKSBvciBbdHlwZXNdKFYxXzZfQWR2YW5jZWRHdWlkZS5tZCN0eXBlZC10ZXN0cyksIEdvb2ds
ZSBUZXN0IHN1cHBvcnRzIHZhcmlvdXMgd2F5cyBmb3IgdGhlIHVzZXIgdG8gZXh0ZW5kIHRoZSBm
cmFtZXdvcmsgLS0gaWYgR29vZ2xlIFRlc3QgZG9lc24ndCBkbyBzb21ldGhpbmcgb3V0IG9mIHRo
ZSBib3gsIGNoYW5jZXMgYXJlIHRoYXQgYSB1c2VyIGNhbiBpbXBsZW1lbnQgdGhlIGZlYXR1cmUg
dXNpbmcgR29vZ2xlIFRlc3QncyBwdWJsaWMgQVBJLCB3aXRob3V0IGNoYW5naW5nIEdvb2dsZSBU
ZXN0IGl0c2VsZi4gIEluIHBhcnRpY3VsYXIsIHlvdSBjYW46CisgICAgKiBleHBhbmQgeW91ciB0
ZXN0aW5nIHZvY2FidWxhcnkgYnkgZGVmaW5pbmcgW2N1c3RvbSBwcmVkaWNhdGVzXShWMV82X0Fk
dmFuY2VkR3VpZGUubWQjcHJlZGljYXRlLWFzc2VydGlvbnMtZm9yLWJldHRlci1lcnJvci1tZXNz
YWdlcyksCisgICAgKiB0ZWFjaCBHb29nbGUgVGVzdCBob3cgdG8gW3ByaW50IHlvdXIgdHlwZXNd
KFYxXzZfQWR2YW5jZWRHdWlkZS5tZCN0ZWFjaGluZy1nb29nbGUtdGVzdC1ob3ctdG8tcHJpbnQt
eW91ci12YWx1ZXMpLAorICAgICogZGVmaW5lIHlvdXIgb3duIHRlc3RpbmcgbWFjcm9zIG9yIHV0
aWxpdGllcyBhbmQgdmVyaWZ5IHRoZW0gdXNpbmcgR29vZ2xlIFRlc3QncyBbU2VydmljZSBQcm92
aWRlciBJbnRlcmZhY2VdKFYxXzZfQWR2YW5jZWRHdWlkZS5tZCNjYXRjaGluZy1mYWlsdXJlcyks
IGFuZAorICAgICogcmVmbGVjdCBvbiB0aGUgdGVzdCBjYXNlcyBvciBjaGFuZ2UgdGhlIHRlc3Qg
b3V0cHV0IGZvcm1hdCBieSBpbnRlcmNlcHRpbmcgdGhlIFt0ZXN0IGV2ZW50c10oVjFfNl9BZHZh
bmNlZEd1aWRlLm1kI2V4dGVuZGluZy1nb29nbGUtdGVzdC1ieS1oYW5kbGluZy10ZXN0LWV2ZW50
cykuCisKKyMjIEknbSBnZXR0aW5nIHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nIEdvb2dsZSBUZXN0
LiAgV291bGQgeW91IGZpeCB0aGVtPyAjIworCitXZSBzdHJpdmUgdG8gbWluaW1pemUgY29tcGls
ZXIgd2FybmluZ3MgR29vZ2xlIFRlc3QgZ2VuZXJhdGVzLiAgQmVmb3JlIHJlbGVhc2luZyBhIG5l
dyB2ZXJzaW9uLCB3ZSB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IGl0IGRvZXNuJ3QgZ2VuZXJhdGUg
d2FybmluZ3Mgd2hlbiBjb21waWxlZCB1c2luZyBpdHMgQ01ha2Ugc2NyaXB0IG9uIFdpbmRvd3Ms
IExpbnV4LCBhbmQgTWFjIE9TLgorCitVbmZvcnR1bmF0ZWx5LCB0aGlzIGRvZXNuJ3QgbWVhbiB5
b3UgYXJlIGd1YXJhbnRlZWQgdG8gc2VlIG5vIHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nIEdvb2ds
ZSBUZXN0IGluIHlvdXIgZW52aXJvbm1lbnQ6CisKKyAgKiBZb3UgbWF5IGJlIHVzaW5nIGEgZGlm
ZmVyZW50IGNvbXBpbGVyIGFzIHdlIHVzZSwgb3IgYSBkaWZmZXJlbnQgdmVyc2lvbiBvZiB0aGUg
c2FtZSBjb21waWxlci4gIFdlIGNhbm5vdCBwb3NzaWJseSB0ZXN0IGZvciBhbGwgY29tcGlsZXJz
LgorICAqIFlvdSBtYXkgYmUgY29tcGlsaW5nIG9uIGEgZGlmZmVyZW50IHBsYXRmb3JtIGFzIHdl
IGRvLgorICAqIFlvdXIgcHJvamVjdCBtYXkgYmUgdXNpbmcgZGlmZmVyZW50IGNvbXBpbGVyIGZs
YWdzIGFzIHdlIGRvLgorCitJdCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIG1ha2UgR29vZ2xl
IFRlc3Qgd2FybmluZy1mcmVlIGZvciBldmVyeW9uZS4gIE9yLCBpdCBtYXkgbm90IGJlIGRlc2ly
YWJsZSBpZiB0aGUgd2FybmluZyBpcyByYXJlbHkgZW5hYmxlZCBhbmQgZml4aW5nIHRoZSB2aW9s
YXRpb25zIG1ha2VzIHRoZSBjb2RlIG1vcmUgY29tcGxleC4KKworSWYgeW91IHNlZSB3YXJuaW5n
cyB3aGVuIGNvbXBpbGluZyBHb29nbGUgVGVzdCwgd2Ugc3VnZ2VzdCB0aGF0IHlvdSB1c2UgdGhl
IGAtaXN5c3RlbWAgZmxhZyAoYXNzdW1pbmcgeW91ciBhcmUgdXNpbmcgR0NDKSB0byBtYXJrIEdv
b2dsZSBUZXN0IGhlYWRlcnMgYXMgc3lzdGVtIGhlYWRlcnMuICBUaGF0J2xsIHN1cHByZXNzIHdh
cm5pbmdzIGZyb20gR29vZ2xlIFRlc3QgaGVhZGVycy4KKworIyMgV2h5IHNob3VsZCBub3QgdGVz
dCBjYXNlIG5hbWVzIGFuZCB0ZXN0IG5hbWVzIGNvbnRhaW4gdW5kZXJzY29yZT8gIyMKKworVW5k
ZXJzY29yZSAoYF9gKSBpcyBzcGVjaWFsLCBhcyBDKysgcmVzZXJ2ZXMgdGhlIGZvbGxvd2luZyB0
byBiZSB1c2VkIGJ5Cit0aGUgY29tcGlsZXIgYW5kIHRoZSBzdGFuZGFyZCBsaWJyYXJ5OgorCisg
IDEuIGFueSBpZGVudGlmaWVyIHRoYXQgc3RhcnRzIHdpdGggYW4gYF9gIGZvbGxvd2VkIGJ5IGFu
IHVwcGVyLWNhc2UgbGV0dGVyLCBhbmQKKyAgMS4gYW55IGlkZW50aWZpZXIgdGhhdCBjb250YWlu
ZXJzIHR3byBjb25zZWN1dGl2ZSB1bmRlcnNjb3JlcyAoaS5lLiBgX19gKSBfYW55d2hlcmVfIGlu
IGl0cyBuYW1lLgorCitVc2VyIGNvZGUgaXMgX3Byb2hpYml0ZWRfIGZyb20gdXNpbmcgc3VjaCBp
ZGVudGlmaWVycy4KKworTm93IGxldCdzIGxvb2sgYXQgd2hhdCB0aGlzIG1lYW5zIGZvciBgVEVT
VGAgYW5kIGBURVNUX0ZgLgorCitDdXJyZW50bHkgYFRFU1QoVGVzdENhc2VOYW1lLCBUZXN0TmFt
ZSlgIGdlbmVyYXRlcyBhIGNsYXNzIG5hbWVkCitgVGVzdENhc2VOYW1lX1Rlc3ROYW1lX1Rlc3Rg
LiAgV2hhdCBoYXBwZW5zIGlmIGBUZXN0Q2FzZU5hbWVgIG9yIGBUZXN0TmFtZWAKK2NvbnRhaW5z
IGBfYD8KKworICAxLiBJZiBgVGVzdENhc2VOYW1lYCBzdGFydHMgd2l0aCBhbiBgX2AgZm9sbG93
ZWQgYnkgYW4gdXBwZXItY2FzZSBsZXR0ZXIgKHNheSwgYF9Gb29gKSwgd2UgZW5kIHVwIHdpdGgg
YF9Gb29fVGVzdE5hbWVfVGVzdGAsIHdoaWNoIGlzIHJlc2VydmVkIGFuZCB0aHVzIGludmFsaWQu
CisgIDEuIElmIGBUZXN0Q2FzZU5hbWVgIGVuZHMgd2l0aCBhbiBgX2AgKHNheSwgYEZvb19gKSwg
d2UgZ2V0IGBGb29fX1Rlc3ROYW1lX1Rlc3RgLCB3aGljaCBpcyBpbnZhbGlkLgorICAxLiBJZiBg
VGVzdE5hbWVgIHN0YXJ0cyB3aXRoIGFuIGBfYCAoc2F5LCBgX0JhcmApLCB3ZSBnZXQgYFRlc3RD
YXNlTmFtZV9fQmFyX1Rlc3RgLCB3aGljaCBpcyBpbnZhbGlkLgorICAxLiBJZiBgVGVzdE5hbWVg
IGVuZHMgd2l0aCBhbiBgX2AgKHNheSwgYEJhcl9gKSwgd2UgZ2V0IGBUZXN0Q2FzZU5hbWVfQmFy
X19UZXN0YCwgd2hpY2ggaXMgaW52YWxpZC4KKworU28gY2xlYXJseSBgVGVzdENhc2VOYW1lYCBh
bmQgYFRlc3ROYW1lYCBjYW5ub3Qgc3RhcnQgb3IgZW5kIHdpdGggYF9gCisoQWN0dWFsbHksIGBU
ZXN0Q2FzZU5hbWVgIGNhbiBzdGFydCB3aXRoIGBfYCAtLSBhcyBsb25nIGFzIHRoZSBgX2AgaXNu
J3QKK2ZvbGxvd2VkIGJ5IGFuIHVwcGVyLWNhc2UgbGV0dGVyLiAgQnV0IHRoYXQncyBnZXR0aW5n
IGNvbXBsaWNhdGVkLiAgU28KK2ZvciBzaW1wbGljaXR5IHdlIGp1c3Qgc2F5IHRoYXQgaXQgY2Fu
bm90IHN0YXJ0IHdpdGggYF9gLikuCisKK0l0IG1heSBzZWVtIGZpbmUgZm9yIGBUZXN0Q2FzZU5h
bWVgIGFuZCBgVGVzdE5hbWVgIHRvIGNvbnRhaW4gYF9gIGluIHRoZQorbWlkZGxlLiAgSG93ZXZl
ciwgY29uc2lkZXIgdGhpczoKK2BgYAorVEVTVChUaW1lLCBGbGllc19MaWtlX0FuX0Fycm93KSB7
IC4uLiB9CitURVNUKFRpbWVfRmxpZXMsIExpa2VfQW5fQXJyb3cpIHsgLi4uIH0KK2BgYAorCitO
b3csIHRoZSB0d28gYFRFU1RgcyB3aWxsIGJvdGggZ2VuZXJhdGUgdGhlIHNhbWUgY2xhc3MKKyhg
VGltZV9GaWxlc19MaWtlX0FuX0Fycm93X1Rlc3RgKS4gIFRoYXQncyBub3QgZ29vZC4KKworU28g
Zm9yIHNpbXBsaWNpdHksIHdlIGp1c3QgYXNrIHRoZSB1c2VycyB0byBhdm9pZCBgX2AgaW4gYFRl
c3RDYXNlTmFtZWAKK2FuZCBgVGVzdE5hbWVgLiAgVGhlIHJ1bGUgaXMgbW9yZSBjb25zdHJhaW5p
bmcgdGhhbiBuZWNlc3NhcnksIGJ1dCBpdCdzCitzaW1wbGUgYW5kIGVhc3kgdG8gcmVtZW1iZXIu
ICBJdCBhbHNvIGdpdmVzIEdvb2dsZSBUZXN0IHNvbWUgd2lnZ2xlCityb29tIGluIGNhc2UgaXRz
IGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIGNoYW5nZSBpbiB0aGUgZnV0dXJlLgorCitJZiB5b3Ug
dmlvbGF0ZSB0aGUgcnVsZSwgdGhlcmUgbWF5IG5vdCBiZSBpbW1lZGlhdGVseSBjb25zZXF1ZW5j
ZXMsCitidXQgeW91ciB0ZXN0IG1heSAoanVzdCBtYXkpIGJyZWFrIHdpdGggYSBuZXcgY29tcGls
ZXIgKG9yIGEgbmV3Cit2ZXJzaW9uIG9mIHRoZSBjb21waWxlciB5b3UgYXJlIHVzaW5nKSBvciB3
aXRoIGEgbmV3IHZlcnNpb24gb2YgR29vZ2xlCitUZXN0LiAgVGhlcmVmb3JlIGl0J3MgYmVzdCB0
byBmb2xsb3cgdGhlIHJ1bGUuCisKKyMjIFdoeSBpcyBpdCBub3QgcmVjb21tZW5kZWQgdG8gaW5z
dGFsbCBhIHByZS1jb21waWxlZCBjb3B5IG9mIEdvb2dsZSBUZXN0IChmb3IgZXhhbXBsZSwgaW50
byAvdXNyL2xvY2FsKT8gIyMKKworSW4gdGhlIGVhcmx5IGRheXMsIHdlIHNhaWQgdGhhdCB5b3Ug
Y291bGQgaW5zdGFsbAorY29tcGlsZWQgR29vZ2xlIFRlc3QgbGlicmFyaWVzIG9uIGAqYG5peCBz
eXN0ZW1zIHVzaW5nIGBtYWtlIGluc3RhbGxgLgorVGhlbiBldmVyeSB1c2VyIG9mIHlvdXIgbWFj
aGluZSBjYW4gd3JpdGUgdGVzdHMgd2l0aG91dAorcmVjb21waWxpbmcgR29vZ2xlIFRlc3QuCisK
K1RoaXMgc2VlbWVkIGxpa2UgYSBnb29kIGlkZWEsIGJ1dCBpdCBoYXMgYQorZ290LWNoYTogZXZl
cnkgdXNlciBuZWVkcyB0byBjb21waWxlIGhpcyB0ZXN0cyB1c2luZyB0aGUgX3NhbWVfIGNvbXBp
bGVyCitmbGFncyB1c2VkIHRvIGNvbXBpbGUgdGhlIGluc3RhbGxlZCBHb29nbGUgVGVzdCBsaWJy
YXJpZXM7IG90aGVyd2lzZQoraGUgbWF5IHJ1biBpbnRvIHVuZGVmaW5lZCBiZWhhdmlvcnMgKGku
ZS4gdGhlIHRlc3RzIGNhbiBiZWhhdmUKK3N0cmFuZ2VseSBhbmQgbWF5IGV2ZW4gY3Jhc2ggZm9y
IG5vIG9idmlvdXMgcmVhc29ucykuCisKK1doeT8gIEJlY2F1c2UgQysrIGhhcyB0aGlzIHRoaW5n
IGNhbGxlZCB0aGUgT25lLURlZmluaXRpb24gUnVsZTogaWYKK3R3byBDKysgc291cmNlIGZpbGVz
IGNvbnRhaW4gZGlmZmVyZW50IGRlZmluaXRpb25zIG9mIHRoZSBzYW1lCitjbGFzcy9mdW5jdGlv
bi92YXJpYWJsZSwgYW5kIHlvdSBsaW5rIHRoZW0gdG9nZXRoZXIsIHlvdSB2aW9sYXRlIHRoZQor
cnVsZS4gIFRoZSBsaW5rZXIgbWF5IG9yIG1heSBub3QgY2F0Y2ggdGhlIGVycm9yIChpbiBtYW55
IGNhc2VzIGl0J3MKK25vdCByZXF1aXJlZCBieSB0aGUgQysrIHN0YW5kYXJkIHRvIGNhdGNoIHRo
ZSB2aW9sYXRpb24pLiAgSWYgaXQKK2RvZXNuJ3QsIHlvdSBnZXQgc3RyYW5nZSBydW4tdGltZSBi
ZWhhdmlvcnMgdGhhdCBhcmUgdW5leHBlY3RlZCBhbmQKK2hhcmQgdG8gZGVidWcuCisKK0lmIHlv
dSBjb21waWxlIEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRlc3QgY29kZSB1c2luZyBkaWZmZXJlbnQg
Y29tcGlsZXIKK2ZsYWdzLCB0aGV5IG1heSBzZWUgZGlmZmVyZW50IGRlZmluaXRpb25zIG9mIHRo
ZSBzYW1lCitjbGFzcy9mdW5jdGlvbi92YXJpYWJsZSAoZS5nLiBkdWUgdG8gdGhlIHVzZSBvZiBg
I2lmYCBpbiBHb29nbGUgVGVzdCkuCitUaGVyZWZvcmUsIGZvciB5b3VyIHNhbml0eSwgd2UgcmVj
b21tZW5kIHRvIGF2b2lkIGluc3RhbGxpbmcgcHJlLWNvbXBpbGVkCitHb29nbGUgVGVzdCBsaWJy
YXJpZXMuICBJbnN0ZWFkLCBlYWNoIHByb2plY3Qgc2hvdWxkIGNvbXBpbGUKK0dvb2dsZSBUZXN0
IGl0c2VsZiBzdWNoIHRoYXQgaXQgY2FuIGJlIHN1cmUgdGhhdCB0aGUgc2FtZSBmbGFncyBhcmUK
K3VzZWQgZm9yIGJvdGggR29vZ2xlIFRlc3QgYW5kIHRoZSB0ZXN0cy4KKworIyMgSG93IGRvIEkg
Z2VuZXJhdGUgNjQtYml0IGJpbmFyaWVzIG9uIFdpbmRvd3MgKHVzaW5nIFZpc3VhbCBTdHVkaW8g
MjAwOCk/ICMjCisKKyhBbnN3ZXJlZCBieSBUcmV2b3IgUm9iaW5zb24pCisKK0xvYWQgdGhlIHN1
cHBsaWVkIFZpc3VhbCBTdHVkaW8gc29sdXRpb24gZmlsZSwgZWl0aGVyIGBtc3ZjXGd0ZXN0LW1k
LnNsbmAgb3IKK2Btc3ZjXGd0ZXN0LnNsbmAuIEdvIHRocm91Z2ggdGhlIG1pZ3JhdGlvbiB3aXph
cmQgdG8gbWlncmF0ZSB0aGUKK3NvbHV0aW9uIGFuZCBwcm9qZWN0IGZpbGVzIHRvIFZpc3VhbCBT
dHVkaW8gMjAwOC4gU2VsZWN0CitgQ29uZmlndXJhdGlvbiBNYW5hZ2VyLi4uYCBmcm9tIHRoZSBg
QnVpbGRgIG1lbnUuIFNlbGVjdCBgPE5ldy4uLj5gIGZyb20KK3RoZSBgQWN0aXZlIHNvbHV0aW9u
IHBsYXRmb3JtYCBkcm9wZG93bi4gIFNlbGVjdCBgeDY0YCBmcm9tIHRoZSBuZXcKK3BsYXRmb3Jt
IGRyb3Bkb3duLCBsZWF2ZSBgQ29weSBzZXR0aW5ncyBmcm9tYCBzZXQgdG8gYFdpbjMyYCBhbmQK
K2BDcmVhdGUgbmV3IHByb2plY3QgcGxhdGZvcm1zYCBjaGVja2VkLCB0aGVuIGNsaWNrIGBPS2Au
IFlvdSBub3cgaGF2ZQorYFdpbjMyYCBhbmQgYHg2NGAgcGxhdGZvcm0gY29uZmlndXJhdGlvbnMs
IHNlbGVjdGFibGUgZnJvbSB0aGUKK2BTdGFuZGFyZGAgdG9vbGJhciwgd2hpY2ggYWxsb3cgeW91
IHRvIHRvZ2dsZSBiZXR3ZWVuIGJ1aWxkaW5nIDMyLWJpdCBvcgorNjQtYml0IGJpbmFyaWVzIChv
ciBib3RoIGF0IG9uY2UgdXNpbmcgQmF0Y2ggQnVpbGQpLgorCitJbiBvcmRlciB0byBwcmV2ZW50
IGJ1aWxkIG91dHB1dCBmaWxlcyBmcm9tIG92ZXJ3cml0aW5nIG9uZSBhbm90aGVyLAoreW91J2xs
IG5lZWQgdG8gY2hhbmdlIHRoZSBgSW50ZXJtZWRpYXRlIERpcmVjdG9yeWAgc2V0dGluZ3MgZm9y
IHRoZQorbmV3bHkgY3JlYXRlZCBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIGFjcm9zcyBhbGwgdGhl
IHByb2plY3RzLiBUbyBkbwordGhpcywgbXVsdGktc2VsZWN0IChlLmcuIHVzaW5nIHNoaWZ0LWNs
aWNrKSBhbGwgcHJvamVjdHMgKGJ1dCBub3QgdGhlCitzb2x1dGlvbikgaW4gdGhlIGBTb2x1dGlv
biBFeHBsb3JlcmAuIFJpZ2h0LWNsaWNrIG9uZSBvZiB0aGVtIGFuZAorc2VsZWN0IGBQcm9wZXJ0
aWVzYC4gSW4gdGhlIGxlZnQgcGFuZSwgc2VsZWN0IGBDb25maWd1cmF0aW9uIFByb3BlcnRpZXNg
LAorYW5kIGZyb20gdGhlIGBDb25maWd1cmF0aW9uYCBkcm9wZG93biwgc2VsZWN0IGBBbGwgQ29u
ZmlndXJhdGlvbnNgLgorTWFrZSBzdXJlIHRoZSBzZWxlY3RlZCBwbGF0Zm9ybSBpcyBgeDY0YC4g
Rm9yIHRoZQorYEludGVybWVkaWF0ZSBEaXJlY3RvcnlgIHNldHRpbmcsIGNoYW5nZSB0aGUgdmFs
dWUgZnJvbQorYCQoUGxhdGZvcm1OYW1lKVwkKENvbmZpZ3VyYXRpb25OYW1lKWAgdG8KK2AkKE91
dERpcilcJChQcm9qZWN0TmFtZSlgLiBDbGljayBgT0tgIGFuZCB0aGVuIGJ1aWxkIHRoZQorc29s
dXRpb24uIFdoZW4gdGhlIGJ1aWxkIGlzIGNvbXBsZXRlLCB0aGUgNjQtYml0IGJpbmFyaWVzIHdp
bGwgYmUgaW4KK3RoZSBgbXN2Y1x4NjRcRGVidWdgIGRpcmVjdG9yeS4KKworIyMgQ2FuIEkgdXNl
IEdvb2dsZSBUZXN0IG9uIE1pbkdXPyAjIworCitXZSBoYXZlbid0IHRlc3RlZCB0aGlzIG91cnNl
bHZlcywgYnV0IFBlciBBYnJhaGFtc2VuIHJlcG9ydGVkIHRoYXQgaGUKK3dhcyBhYmxlIHRvIGNv
bXBpbGUgYW5kIGluc3RhbGwgR29vZ2xlIFRlc3Qgc3VjY2Vzc2Z1bGx5IHdoZW4gdXNpbmcKK01p
bkdXIGZyb20gQ3lnd2luLiAgWW91J2xsIG5lZWQgdG8gY29uZmlndXJlIGl0IHdpdGg6CisKK2BQ
QVRIL1RPL2NvbmZpZ3VyZSBDQz0iZ2NjIC1tbm8tY3lnd2luIiBDWFg9ImcrKyAtbW5vLWN5Z3dp
biJgCisKK1lvdSBzaG91bGQgYmUgYWJsZSB0byByZXBsYWNlIHRoZSBgLW1uby1jeWd3aW5gIG9w
dGlvbiB3aXRoIGRpcmVjdCBsaW5rcwordG8gdGhlIHJlYWwgTWluR1cgYmluYXJpZXMsIGJ1dCB3
ZSBoYXZlbid0IHRyaWVkIHRoYXQuCisKK0NhdmVhdHM6CisKKyAgKiBUaGVyZSBhcmUgbWFueSB3
YXJuaW5ncyB3aGVuIGNvbXBpbGluZy4KKyAgKiBgbWFrZSBjaGVja2Agd2lsbCBwcm9kdWNlIHNv
bWUgZXJyb3JzIGFzIG5vdCBhbGwgdGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZiBhcmUgY29t
cGF0aWJsZSB3aXRoIE1pbkdXLgorCitXZSBhbHNvIGhhdmUgcmVwb3J0cyBvbiBzdWNjZXNzZnVs
IGNyb3NzIGNvbXBpbGF0aW9uIG9mIEdvb2dsZSBUZXN0CitNaW5HVyBiaW5hcmllcyBvbiBMaW51
eCB1c2luZworW3RoZXNlIGluc3RydWN0aW9uc10oaHR0cDovL3dpa2kud3h3aWRnZXRzLm9yZy9D
cm9zcy1Db21waWxpbmdfVW5kZXJfTGludXgjQ3Jvc3MtY29tcGlsaW5nX3VuZGVyX0xpbnV4X2Zv
cl9NU19XaW5kb3dzKQorb24gdGhlIFd4V2lkZ2V0cyBzaXRlLgorCitQbGVhc2UgY29udGFjdCBg
Z29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tYCBpZiB5b3UgYXJlCitpbnRlcmVz
dGVkIGluIGltcHJvdmluZyB0aGUgc3VwcG9ydCBmb3IgTWluR1cuCisKKyMjIFdoeSBkb2VzIEdv
b2dsZSBUZXN0IHN1cHBvcnQgRVhQRUNUXF9FUShOVUxMLCBwdHIpIGFuZCBBU1NFUlRcX0VRKE5V
TEwsIHB0cikgYnV0IG5vdCBFWFBFQ1RcX05FKE5VTEwsIHB0cikgYW5kIEFTU0VSVFxfTkUoTlVM
TCwgcHRyKT8gIyMKKworRHVlIHRvIHNvbWUgcGVjdWxpYXJpdHkgb2YgQysrLCBpdCByZXF1aXJl
cyBzb21lIG5vbi10cml2aWFsIHRlbXBsYXRlCittZXRhIHByb2dyYW1taW5nIHRyaWNrcyB0byBz
dXBwb3J0IHVzaW5nIGBOVUxMYCBhcyBhbiBhcmd1bWVudCBvZiB0aGUKK2BFWFBFQ1RfWFgoKWAg
YW5kIGBBU1NFUlRfWFgoKWAgbWFjcm9zLiBUaGVyZWZvcmUgd2Ugb25seSBkbyBpdCB3aGVyZQor
aXQncyBtb3N0IG5lZWRlZCAob3RoZXJ3aXNlIHdlIG1ha2UgdGhlIGltcGxlbWVudGF0aW9uIG9m
IEdvb2dsZSBUZXN0CitoYXJkZXIgdG8gbWFpbnRhaW4gYW5kIG1vcmUgZXJyb3ItcHJvbmUgdGhh
biBuZWNlc3NhcnkpLgorCitUaGUgYEVYUEVDVF9FUSgpYCBtYWNybyB0YWtlcyB0aGUgX2V4cGVj
dGVkXyB2YWx1ZSBhcyBpdHMgZmlyc3QKK2FyZ3VtZW50IGFuZCB0aGUgX2FjdHVhbF8gdmFsdWUg
YXMgdGhlIHNlY29uZC4gSXQncyByZWFzb25hYmxlIHRoYXQKK3NvbWVvbmUgd2FudHMgdG8gd3Jp
dGUgYEVYUEVDVF9FUShOVUxMLCBzb21lX2V4cHJlc3Npb24pYCwgYW5kIHRoaXMKK2luZGVlZCB3
YXMgcmVxdWVzdGVkIHNldmVyYWwgdGltZXMuIFRoZXJlZm9yZSB3ZSBpbXBsZW1lbnRlZCBpdC4K
KworVGhlIG5lZWQgZm9yIGBFWFBFQ1RfTkUoTlVMTCwgcHRyKWAgaXNuJ3QgbmVhcmx5IGFzIHN0
cm9uZy4gV2hlbiB0aGUKK2Fzc2VydGlvbiBmYWlscywgeW91IGFscmVhZHkga25vdyB0aGF0IGBw
dHJgIG11c3QgYmUgYE5VTExgLCBzbyBpdAorZG9lc24ndCBhZGQgYW55IGluZm9ybWF0aW9uIHRv
IHByaW50IHB0ciBpbiB0aGlzIGNhc2UuIFRoYXQgbWVhbnMKK2BFWFBFQ1RfVFJVRShwdHIgISBO
VUxMKWAgd29ya3MganVzdCBhcyB3ZWxsLgorCitJZiB3ZSB3ZXJlIHRvIHN1cHBvcnQgYEVYUEVD
VF9ORShOVUxMLCBwdHIpYCwgZm9yIGNvbnNpc3RlbmN5IHdlJ2xsCitoYXZlIHRvIHN1cHBvcnQg
YEVYUEVDVF9ORShwdHIsIE5VTEwpYCBhcyB3ZWxsLCBhcyB1bmxpa2UgYEVYUEVDVF9FUWAsCit3
ZSBkb24ndCBoYXZlIGEgY29udmVudGlvbiBvbiB0aGUgb3JkZXIgb2YgdGhlIHR3byBhcmd1bWVu
dHMgZm9yCitgRVhQRUNUX05FYC4gVGhpcyBtZWFucyB1c2luZyB0aGUgdGVtcGxhdGUgbWV0YSBw
cm9ncmFtbWluZyB0cmlja3MKK3R3aWNlIGluIHRoZSBpbXBsZW1lbnRhdGlvbiwgbWFraW5nIGl0
IGV2ZW4gaGFyZGVyIHRvIHVuZGVyc3RhbmQgYW5kCittYWludGFpbi4gV2UgYmVsaWV2ZSB0aGUg
YmVuZWZpdCBkb2Vzbid0IGp1c3RpZnkgdGhlIGNvc3QuCisKK0ZpbmFsbHksIHdpdGggdGhlIGdy
b3d0aCBvZiBHb29nbGUgTW9jaydzIFttYXRjaGVyXSguLi8uLi9Db29rQm9vay5tZCN1c2luZy1t
YXRjaGVycy1pbi1nb29nbGUtdGVzdC1hc3NlcnRpb25zKSBsaWJyYXJ5LCB3ZSBhcmUKK2VuY291
cmFnaW5nIHBlb3BsZSB0byB1c2UgdGhlIHVuaWZpZWQgYEVYUEVDVF9USEFUKHZhbHVlLCBtYXRj
aGVyKWAKK3N5bnRheCBtb3JlIG9mdGVuIGluIHRlc3RzLiBPbmUgc2lnbmlmaWNhbnQgYWR2YW50
YWdlIG9mIHRoZSBtYXRjaGVyCithcHByb2FjaCBpcyB0aGF0IG1hdGNoZXJzIGNhbiBiZSBlYXNp
bHkgY29tYmluZWQgdG8gZm9ybSBuZXcgbWF0Y2hlcnMsCit3aGlsZSB0aGUgYEVYUEVDVF9ORWAs
IGV0YywgbWFjcm9zIGNhbm5vdCBiZSBlYXNpbHkKK2NvbWJpbmVkLiBUaGVyZWZvcmUgd2Ugd2Fu
dCB0byBpbnZlc3QgbW9yZSBpbiB0aGUgbWF0Y2hlcnMgdGhhbiBpbiB0aGUKK2BFWFBFQ1RfWFgo
KWAgbWFjcm9zLgorCisjIyBEb2VzIEdvb2dsZSBUZXN0IHN1cHBvcnQgcnVubmluZyB0ZXN0cyBp
biBwYXJhbGxlbD8gIyMKKworVGVzdCBydW5uZXJzIHRlbmQgdG8gYmUgdGlnaHRseSBjb3VwbGVk
IHdpdGggdGhlIGJ1aWxkL3Rlc3QKK2Vudmlyb25tZW50LCBhbmQgR29vZ2xlIFRlc3QgZG9lc24n
dCB0cnkgdG8gc29sdmUgdGhlIHByb2JsZW0gb2YKK3J1bm5pbmcgdGVzdHMgaW4gcGFyYWxsZWwu
ICBJbnN0ZWFkLCB3ZSB0cmllZCB0byBtYWtlIEdvb2dsZSBUZXN0IHdvcmsKK25pY2VseSB3aXRo
IHRlc3QgcnVubmVycy4gIEZvciBleGFtcGxlLCBHb29nbGUgVGVzdCdzIFhNTCByZXBvcnQKK2Nv
bnRhaW5zIHRoZSB0aW1lIHNwZW50IG9uIGVhY2ggdGVzdCwgYW5kIGl0cyBgZ3Rlc3RfbGlzdF90
ZXN0c2AgYW5kCitgZ3Rlc3RfZmlsdGVyYCBmbGFncyBjYW4gYmUgdXNlZCBmb3Igc3BsaXR0aW5n
IHRoZSBleGVjdXRpb24gb2YgdGVzdAorbWV0aG9kcyBpbnRvIG11bHRpcGxlIHByb2Nlc3Nlcy4g
IFRoZXNlIGZ1bmN0aW9uYWxpdGllcyBjYW4gaGVscCB0aGUKK3Rlc3QgcnVubmVyIHJ1biB0aGUg
dGVzdHMgaW4gcGFyYWxsZWwuCisKKyMjIFdoeSBkb24ndCBHb29nbGUgVGVzdCBydW4gdGhlIHRl
c3RzIGluIGRpZmZlcmVudCB0aHJlYWRzIHRvIHNwZWVkIHRoaW5ncyB1cD8gIyMKKworSXQncyBk
aWZmaWN1bHQgdG8gd3JpdGUgdGhyZWFkLXNhZmUgY29kZS4gIE1vc3QgdGVzdHMgYXJlIG5vdCB3
cml0dGVuCit3aXRoIHRocmVhZC1zYWZldHkgaW4gbWluZCwgYW5kIHRodXMgbWF5IG5vdCB3b3Jr
IGNvcnJlY3RseSBpbiBhCittdWx0aS10aHJlYWRlZCBzZXR0aW5nLgorCitJZiB5b3UgdGhpbmsg
YWJvdXQgaXQsIGl0J3MgYWxyZWFkeSBoYXJkIHRvIG1ha2UgeW91ciBjb2RlIHdvcmsgd2hlbgor
eW91IGtub3cgd2hhdCBvdGhlciB0aHJlYWRzIGFyZSBkb2luZy4gIEl0J3MgbXVjaCBoYXJkZXIs
IGFuZAorc29tZXRpbWVzIGV2ZW4gaW1wb3NzaWJsZSwgdG8gbWFrZSB5b3VyIGNvZGUgd29yayB3
aGVuIHlvdSBkb24ndCBrbm93Cit3aGF0IG90aGVyIHRocmVhZHMgYXJlIGRvaW5nIChyZW1lbWJl
ciB0aGF0IHRlc3QgbWV0aG9kcyBjYW4gYmUgYWRkZWQsCitkZWxldGVkLCBvciBtb2RpZmllZCBh
ZnRlciB5b3VyIHRlc3Qgd2FzIHdyaXR0ZW4pLiAgSWYgeW91IHdhbnQgdG8gcnVuCit0aGUgdGVz
dHMgaW4gcGFyYWxsZWwsIHlvdSdkIGJldHRlciBydW4gdGhlbSBpbiBkaWZmZXJlbnQgcHJvY2Vz
c2VzLgorCisjIyBXaHkgYXJlbid0IEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW1wbGVtZW50ZWQg
dXNpbmcgZXhjZXB0aW9ucz8gIyMKKworT3VyIG9yaWdpbmFsIG1vdGl2YXRpb24gd2FzIHRvIGJl
IGFibGUgdG8gdXNlIEdvb2dsZSBUZXN0IGluIHByb2plY3RzCit0aGF0IGRpc2FibGUgZXhjZXB0
aW9ucy4gIExhdGVyIHdlIHJlYWxpemVkIHNvbWUgYWRkaXRpb25hbCBiZW5lZml0cworb2YgdGhp
cyBhcHByb2FjaDoKKworICAxLiBUaHJvd2luZyBpbiBhIGRlc3RydWN0b3IgaXMgdW5kZWZpbmVk
IGJlaGF2aW9yIGluIEMrKy4gIE5vdCB1c2luZyBleGNlcHRpb25zIG1lYW5zIEdvb2dsZSBUZXN0
J3MgYXNzZXJ0aW9ucyBhcmUgc2FmZSB0byB1c2UgaW4gZGVzdHJ1Y3RvcnMuCisgIDEuIFRoZSBg
RVhQRUNUXypgIGZhbWlseSBvZiBtYWNyb3Mgd2lsbCBjb250aW51ZSBldmVuIGFmdGVyIGEgZmFp
bHVyZSwgYWxsb3dpbmcgbXVsdGlwbGUgZmFpbHVyZXMgaW4gYSBgVEVTVGAgdG8gYmUgcmVwb3J0
ZWQgaW4gYSBzaW5nbGUgcnVuLiBUaGlzIGlzIGEgcG9wdWxhciBmZWF0dXJlLCBhcyBpbiBDKysg
dGhlIGVkaXQtY29tcGlsZS10ZXN0IGN5Y2xlIGlzIHVzdWFsbHkgcXVpdGUgbG9uZyBhbmQgYmVp
bmcgYWJsZSB0byBmaXhpbmcgbW9yZSB0aGFuIG9uZSB0aGluZyBhdCBhIHRpbWUgaXMgYSBibGVz
c2luZy4KKyAgMS4gSWYgYXNzZXJ0aW9ucyBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgZXhjZXB0aW9u
cywgYSB0ZXN0IG1heSBmYWxzZWx5IGlnbm9yZSBhIGZhaWx1cmUgaWYgaXQncyBjYXVnaHQgYnkg
dXNlciBjb2RlOgorYGBgCit0cnkgeyAuLi4gQVNTRVJUX1RSVUUoLi4uKSAuLi4gfQorY2F0Y2gg
KC4uLikgeyAuLi4gfQorYGBgCitUaGUgYWJvdmUgY29kZSB3aWxsIHBhc3MgZXZlbiBpZiB0aGUg
YEFTU0VSVF9UUlVFYCB0aHJvd3MuICBXaGlsZSBpdCdzIHVubGlrZWx5IGZvciBzb21lb25lIHRv
IHdyaXRlIHRoaXMgaW4gYSB0ZXN0LCBpdCdzIHBvc3NpYmxlIHRvIHJ1biBpbnRvIHRoaXMgcGF0
dGVybiB3aGVuIHlvdSB3cml0ZSBhc3NlcnRpb25zIGluIGNhbGxiYWNrcyB0aGF0IGFyZSBjYWxs
ZWQgYnkgdGhlIGNvZGUgdW5kZXIgdGVzdC4KKworVGhlIGRvd25zaWRlIG9mIG5vdCB1c2luZyBl
eGNlcHRpb25zIGlzIHRoYXQgYEFTU0VSVF8qYCAoaW1wbGVtZW50ZWQKK3VzaW5nIGByZXR1cm5g
KSB3aWxsIG9ubHkgYWJvcnQgdGhlIGN1cnJlbnQgZnVuY3Rpb24sIG5vdCB0aGUgY3VycmVudAor
YFRFU1RgLgorCisjIyBXaHkgZG8gd2UgdXNlIHR3byBkaWZmZXJlbnQgbWFjcm9zIGZvciB0ZXN0
cyB3aXRoIGFuZCB3aXRob3V0IGZpeHR1cmVzPyAjIworCitVbmZvcnR1bmF0ZWx5LCBDKysncyBt
YWNybyBzeXN0ZW0gZG9lc24ndCBhbGxvdyB1cyB0byB1c2UgdGhlIHNhbWUKK21hY3JvIGZvciBi
b3RoIGNhc2VzLiAgT25lIHBvc3NpYmlsaXR5IGlzIHRvIHByb3ZpZGUgb25seSBvbmUgbWFjcm8K
K2ZvciB0ZXN0cyB3aXRoIGZpeHR1cmVzLCBhbmQgcmVxdWlyZSB0aGUgdXNlciB0byBkZWZpbmUg
YW4gZW1wdHkKK2ZpeHR1cmUgc29tZXRpbWVzOgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCitURVNUX0YoRm9vVGVzdCwgRG9lc1RoaXMpIHsgLi4u
IH0KK2BgYAorb3IKK2BgYAordHlwZWRlZiA6OnRlc3Rpbmc6OlRlc3QgRm9vVGVzdDsKKworVEVT
VF9GKEZvb1Rlc3QsIERvZXNUaGF0KSB7IC4uLiB9CitgYGAKKworWWV0LCBtYW55IHBlb3BsZSB0
aGluayB0aGlzIGlzIG9uZSBsaW5lIHRvbyBtYW55LiA6LSkgT3VyIGdvYWwgd2FzIHRvCittYWtl
IGl0IHJlYWxseSBlYXN5IHRvIHdyaXRlIHRlc3RzLCBzbyB3ZSB0cmllZCB0byBtYWtlIHNpbXBs
ZSB0ZXN0cwordHJpdmlhbCB0byBjcmVhdGUuICBUaGF0IG1lYW5zIHVzaW5nIGEgc2VwYXJhdGUg
bWFjcm8gZm9yIHN1Y2ggdGVzdHMuCisKK1dlIHRoaW5rIG5laXRoZXIgYXBwcm9hY2ggaXMgaWRl
YWwsIHlldCBlaXRoZXIgb2YgdGhlbSBpcyByZWFzb25hYmxlLgorSW4gdGhlIGVuZCwgaXQgcHJv
YmFibHkgZG9lc24ndCBtYXR0ZXIgbXVjaCBlaXRoZXIgd2F5LgorCisjIyBXaHkgZG9uJ3Qgd2Ug
dXNlIHN0cnVjdHMgYXMgdGVzdCBmaXh0dXJlcz8gIyMKKworV2UgbGlrZSB0byB1c2Ugc3RydWN0
cyBvbmx5IHdoZW4gcmVwcmVzZW50aW5nIHBhc3NpdmUgZGF0YS4gIFRoaXMKK2Rpc3RpbmN0aW9u
IGJldHdlZW4gc3RydWN0cyBhbmQgY2xhc3NlcyBpcyBnb29kIGZvciBkb2N1bWVudGluZyB0aGUK
K2ludGVudCBvZiB0aGUgY29kZSdzIGF1dGhvci4gIFNpbmNlIHRlc3QgZml4dHVyZXMgaGF2ZSBs
b2dpYyBsaWtlCitgU2V0VXAoKWAgYW5kIGBUZWFyRG93bigpYCwgdGhleSBhcmUgYmV0dGVyIGRl
ZmluZWQgYXMgY2xhc3Nlcy4KKworIyMgV2h5IGFyZSBkZWF0aCB0ZXN0cyBpbXBsZW1lbnRlZCBh
cyBhc3NlcnRpb25zIGluc3RlYWQgb2YgdXNpbmcgYSB0ZXN0IHJ1bm5lcj8gIyMKKworT3VyIGdv
YWwgd2FzIHRvIG1ha2UgZGVhdGggdGVzdHMgYXMgY29udmVuaWVudCBmb3IgYSB1c2VyIGFzIEMr
KworcG9zc2libHkgYWxsb3dzLiAgSW4gcGFydGljdWxhcjoKKworICAqIFRoZSBydW5uZXItc3R5
bGUgcmVxdWlyZXMgdG8gc3BsaXQgdGhlIGluZm9ybWF0aW9uIGludG8gdHdvIHBpZWNlczogdGhl
IGRlZmluaXRpb24gb2YgdGhlIGRlYXRoIHRlc3QgaXRzZWxmLCBhbmQgdGhlIHNwZWNpZmljYXRp
b24gZm9yIHRoZSBydW5uZXIgb24gaG93IHRvIHJ1biB0aGUgZGVhdGggdGVzdCBhbmQgd2hhdCB0
byBleHBlY3QuICBUaGUgZGVhdGggdGVzdCB3b3VsZCBiZSB3cml0dGVuIGluIEMrKywgd2hpbGUg
dGhlIHJ1bm5lciBzcGVjIG1heSBvciBtYXkgbm90IGJlLiAgQSB1c2VyIG5lZWRzIHRvIGNhcmVm
dWxseSBrZWVwIHRoZSB0d28gaW4gc3luYy4gYEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIGV4cGVj
dGVkX21lc3NhZ2UpYCBzcGVjaWZpZXMgYWxsIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBpbiBvbmUg
cGxhY2UsIGluIG9uZSBsYW5ndWFnZSwgd2l0aG91dCBib2lsZXJwbGF0ZSBjb2RlLiBJdCBpcyB2
ZXJ5IGRlY2xhcmF0aXZlLgorICAqIGBBU1NFUlRfREVBVEhgIGhhcyBhIHNpbWlsYXIgc3ludGF4
IGFuZCBlcnJvci1yZXBvcnRpbmcgc2VtYW50aWNzIGFzIG90aGVyIEdvb2dsZSBUZXN0IGFzc2Vy
dGlvbnMsIGFuZCB0aHVzIGlzIGVhc3kgdG8gbGVhcm4uCisgICogYEFTU0VSVF9ERUFUSGAgY2Fu
IGJlIG1peGVkIHdpdGggb3RoZXIgYXNzZXJ0aW9ucyBhbmQgb3RoZXIgbG9naWMgYXQgeW91ciB3
aWxsLiAgWW91IGFyZSBub3QgbGltaXRlZCB0byBvbmUgZGVhdGggdGVzdCBwZXIgdGVzdCBtZXRo
b2QuIEZvciBleGFtcGxlLCB5b3UgY2FuIHdyaXRlIHNvbWV0aGluZyBsaWtlOgorYGBgCisgICAg
aWYgKEZvb0NvbmRpdGlvbigpKSB7CisgICAgICBBU1NFUlRfREVBVEgoQmFyKCksICJibGFoIik7
CisgICAgfSBlbHNlIHsKKyAgICAgIEFTU0VSVF9FUSg1LCBCYXIoKSk7CisgICAgfQorYGBgCitJ
ZiB5b3UgcHJlZmVyIG9uZSBkZWF0aCB0ZXN0IHBlciB0ZXN0IG1ldGhvZCwgeW91IGNhbiB3cml0
ZSB5b3VyIHRlc3RzIGluIHRoYXQgc3R5bGUgdG9vLCBidXQgd2UgZG9uJ3Qgd2FudCB0byBpbXBv
c2UgdGhhdCBvbiB0aGUgdXNlcnMuICBUaGUgZmV3ZXIgYXJ0aWZpY2lhbCBsaW1pdGF0aW9ucyB0
aGUgYmV0dGVyLgorICAqIGBBU1NFUlRfREVBVEhgIGNhbiByZWZlcmVuY2UgbG9jYWwgdmFyaWFi
bGVzIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uLCBhbmQgeW91IGNhbiBkZWNpZGUgaG93IG1hbnkg
ZGVhdGggdGVzdHMgeW91IHdhbnQgYmFzZWQgb24gcnVuLXRpbWUgaW5mb3JtYXRpb24uICBGb3Ig
ZXhhbXBsZSwKK2BgYAorICAgIGNvbnN0IGludCBjb3VudCA9IEdldENvdW50KCk7ICAvLyBPbmx5
IGtub3duIGF0IHJ1biB0aW1lLgorICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGNvdW50OyBpKysp
IHsKKyAgICAgIEFTU0VSVF9ERUFUSCh7CisgICAgICAgIGRvdWJsZSogYnVmZmVyID0gbmV3IGRv
dWJsZVtpXTsKKyAgICAgICAgLi4uIGluaXRpYWxpemVzIGJ1ZmZlciAuLi4KKyAgICAgICAgRm9v
KGJ1ZmZlciwgaSkKKyAgICAgIH0sICJibGFoIGJsYWgiKTsKKyAgICB9CitgYGAKK1RoZSBydW5u
ZXItYmFzZWQgYXBwcm9hY2ggdGVuZHMgdG8gYmUgbW9yZSBzdGF0aWMgYW5kIGxlc3MgZmxleGli
bGUsIG9yIHJlcXVpcmVzIG1vcmUgdXNlciBlZmZvcnQgdG8gZ2V0IHRoaXMga2luZCBvZiBmbGV4
aWJpbGl0eS4KKworQW5vdGhlciBpbnRlcmVzdGluZyB0aGluZyBhYm91dCBgQVNTRVJUX0RFQVRI
YCBpcyB0aGF0IGl0IGNhbGxzIGBmb3JrKClgCit0byBjcmVhdGUgYSBjaGlsZCBwcm9jZXNzIHRv
IHJ1biB0aGUgZGVhdGggdGVzdC4gIFRoaXMgaXMgbGlnaHRlbmluZworZmFzdCwgYXMgYGZvcmso
KWAgdXNlcyBjb3B5LW9uLXdyaXRlIHBhZ2VzIGFuZCBpbmN1cnMgYWxtb3N0IHplcm8KK292ZXJo
ZWFkLCBhbmQgdGhlIGNoaWxkIHByb2Nlc3Mgc3RhcnRzIGZyb20gdGhlIHVzZXItc3VwcGxpZWQK
K3N0YXRlbWVudCBkaXJlY3RseSwgc2tpcHBpbmcgYWxsIGdsb2JhbCBhbmQgbG9jYWwgaW5pdGlh
bGl6YXRpb24gYW5kCithbnkgY29kZSBsZWFkaW5nIHRvIHRoZSBnaXZlbiBzdGF0ZW1lbnQuICBJ
ZiB5b3UgbGF1bmNoIHRoZSBjaGlsZAorcHJvY2VzcyBmcm9tIHNjcmF0Y2gsIGl0IGNhbiB0YWtl
IHNlY29uZHMganVzdCB0byBsb2FkIGV2ZXJ5dGhpbmcgYW5kCitzdGFydCBydW5uaW5nIGlmIHRo
ZSB0ZXN0IGxpbmtzIHRvIG1hbnkgbGlicmFyaWVzIGR5bmFtaWNhbGx5LgorCisjIyBNeSBkZWF0
aCB0ZXN0IG1vZGlmaWVzIHNvbWUgc3RhdGUsIGJ1dCB0aGUgY2hhbmdlIHNlZW1zIGxvc3QgYWZ0
ZXIgdGhlIGRlYXRoIHRlc3QgZmluaXNoZXMuIFdoeT8gIyMKKworRGVhdGggdGVzdHMgKGBFWFBF
Q1RfREVBVEhgLCBldGMpIGFyZSBleGVjdXRlZCBpbiBhIHN1Yi1wcm9jZXNzIHMudC4gdGhlCitl
eHBlY3RlZCBjcmFzaCB3b24ndCBraWxsIHRoZSB0ZXN0IHByb2dyYW0gKGkuZS4gdGhlIHBhcmVu
dCBwcm9jZXNzKS4gQXMgYQorcmVzdWx0LCBhbnkgaW4tbWVtb3J5IHNpZGUgZWZmZWN0cyB0aGV5
IGluY3VyIGFyZSBvYnNlcnZhYmxlIGluIHRoZWlyCityZXNwZWN0aXZlIHN1Yi1wcm9jZXNzZXMs
IGJ1dCBub3QgaW4gdGhlIHBhcmVudCBwcm9jZXNzLiBZb3UgY2FuIHRoaW5rIG9mIHRoZW0KK2Fz
IHJ1bm5pbmcgaW4gYSBwYXJhbGxlbCB1bml2ZXJzZSwgbW9yZSBvciBsZXNzLgorCisjIyBUaGUg
Y29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJ1bmRlZmluZWQgcmVmZXJlbmNlcyIgdG8gc29tZSBz
dGF0aWMgY29uc3QgbWVtYmVyIHZhcmlhYmxlcywgYnV0IEkgZGlkIGRlZmluZSB0aGVtIGluIHRo
ZSBjbGFzcyBib2R5LiBXaGF0J3Mgd3Jvbmc/ICMjCisKK0lmIHlvdXIgY2xhc3MgaGFzIGEgc3Rh
dGljIGRhdGEgbWVtYmVyOgorCitgYGAKKy8vIGZvby5oCitjbGFzcyBGb28geworICAuLi4KKyAg
c3RhdGljIGNvbnN0IGludCBrQmFyID0gMTAwOworfTsKK2BgYAorCitZb3UgYWxzbyBuZWVkIHRv
IGRlZmluZSBpdCBfb3V0c2lkZV8gb2YgdGhlIGNsYXNzIGJvZHkgaW4gYGZvby5jY2A6CisKK2Bg
YAorY29uc3QgaW50IEZvbzo6a0JhcjsgIC8vIE5vIGluaXRpYWxpemVyIGhlcmUuCitgYGAKKwor
T3RoZXJ3aXNlIHlvdXIgY29kZSBpcyAqKmludmFsaWQgQysrKiosIGFuZCBtYXkgYnJlYWsgaW4g
dW5leHBlY3RlZCB3YXlzLiBJbgorcGFydGljdWxhciwgdXNpbmcgaXQgaW4gR29vZ2xlIFRlc3Qg
Y29tcGFyaXNvbiBhc3NlcnRpb25zIChgRVhQRUNUX0VRYCwgZXRjKQord2lsbCBnZW5lcmF0ZSBh
biAidW5kZWZpbmVkIHJlZmVyZW5jZSIgbGlua2VyIGVycm9yLgorCisjIyBJIGhhdmUgYW4gaW50
ZXJmYWNlIHRoYXQgaGFzIHNldmVyYWwgaW1wbGVtZW50YXRpb25zLiBDYW4gSSB3cml0ZSBhIHNl
dCBvZiB0ZXN0cyBvbmNlIGFuZCByZXBlYXQgdGhlbSBvdmVyIGFsbCB0aGUgaW1wbGVtZW50YXRp
b25zPyAjIworCitHb29nbGUgVGVzdCBkb2Vzbid0IHlldCBoYXZlIGdvb2Qgc3VwcG9ydCBmb3Ig
dGhpcyBraW5kIG9mIHRlc3RzLCBvcgorZGF0YS1kcml2ZW4gdGVzdHMgaW4gZ2VuZXJhbC4gV2Ug
aG9wZSB0byBiZSBhYmxlIHRvIG1ha2UgaW1wcm92ZW1lbnRzIGluIHRoaXMKK2FyZWEgc29vbi4K
KworIyMgQ2FuIEkgZGVyaXZlIGEgdGVzdCBmaXh0dXJlIGZyb20gYW5vdGhlcj8gIyMKKworWWVz
LgorCitFYWNoIHRlc3QgZml4dHVyZSBoYXMgYSBjb3JyZXNwb25kaW5nIGFuZCBzYW1lIG5hbWVk
IHRlc3QgY2FzZS4gVGhpcyBtZWFucyBvbmx5CitvbmUgdGVzdCBjYXNlIGNhbiB1c2UgYSBwYXJ0
aWN1bGFyIGZpeHR1cmUuIFNvbWV0aW1lcywgaG93ZXZlciwgbXVsdGlwbGUgdGVzdAorY2FzZXMg
bWF5IHdhbnQgdG8gdXNlIHRoZSBzYW1lIG9yIHNsaWdodGx5IGRpZmZlcmVudCBmaXh0dXJlcy4g
Rm9yIGV4YW1wbGUsIHlvdQorbWF5IHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIG9mIGEgR1VJ
IGxpYnJhcnkncyB0ZXN0IGNhc2VzIGRvbid0IGxlYWsKK2ltcG9ydGFudCBzeXN0ZW0gcmVzb3Vy
Y2VzIGxpa2UgZm9udHMgYW5kIGJydXNoZXMuCisKK0luIEdvb2dsZSBUZXN0LCB5b3Ugc2hhcmUg
YSBmaXh0dXJlIGFtb25nIHRlc3QgY2FzZXMgYnkgcHV0dGluZyB0aGUgc2hhcmVkCitsb2dpYyBp
biBhIGJhc2UgdGVzdCBmaXh0dXJlLCB0aGVuIGRlcml2aW5nIGZyb20gdGhhdCBiYXNlIGEgc2Vw
YXJhdGUgZml4dHVyZQorZm9yIGVhY2ggdGVzdCBjYXNlIHRoYXQgd2FudHMgdG8gdXNlIHRoaXMg
Y29tbW9uIGxvZ2ljLiBZb3UgdGhlbiB1c2UgYFRFU1RfRigpYAordG8gd3JpdGUgdGVzdHMgdXNp
bmcgZWFjaCBkZXJpdmVkIGZpeHR1cmUuCisKK1R5cGljYWxseSwgeW91ciBjb2RlIGxvb2tzIGxp
a2UgdGhpczoKKworYGBgCisvLyBEZWZpbmVzIGEgYmFzZSB0ZXN0IGZpeHR1cmUuCitjbGFzcyBC
YXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICBwcm90ZWN0ZWQ6CisgICAuLi4K
K307CisKKy8vIERlcml2ZXMgYSBmaXh0dXJlIEZvb1Rlc3QgZnJvbSBCYXNlVGVzdC4KK2NsYXNz
IEZvb1Rlc3QgOiBwdWJsaWMgQmFzZVRlc3QgeworICBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2
b2lkIFNldFVwKCkgeworICAgICAgQmFzZVRlc3Q6OlNldFVwKCk7ICAvLyBTZXRzIHVwIHRoZSBi
YXNlIGZpeHR1cmUgZmlyc3QuCisgICAgICAuLi4gYWRkaXRpb25hbCBzZXQtdXAgd29yayAuLi4K
KyAgICB9CisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgICAgLi4uIGNsZWFuLXVw
IHdvcmsgZm9yIEZvb1Rlc3QgLi4uCisgICAgICBCYXNlVGVzdDo6VGVhckRvd24oKTsgIC8vIFJl
bWVtYmVyIHRvIHRlYXIgZG93biB0aGUgYmFzZSBmaXh0dXJlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGFmdGVyIGNsZWFuaW5nIHVwIEZvb1Rlc3QhCisgICAgfQorICAgIC4uLiBm
dW5jdGlvbnMgYW5kIHZhcmlhYmxlcyBmb3IgRm9vVGVzdCAuLi4KK307CisKKy8vIFRlc3RzIHRo
YXQgdXNlIHRoZSBmaXh0dXJlIEZvb1Rlc3QuCitURVNUX0YoRm9vVGVzdCwgQmFyKSB7IC4uLiB9
CitURVNUX0YoRm9vVGVzdCwgQmF6KSB7IC4uLiB9CisKKy4uLiBhZGRpdGlvbmFsIGZpeHR1cmVz
IGRlcml2ZWQgZnJvbSBCYXNlVGVzdCAuLi4KK2BgYAorCitJZiBuZWNlc3NhcnksIHlvdSBjYW4g
Y29udGludWUgdG8gZGVyaXZlIHRlc3QgZml4dHVyZXMgZnJvbSBhIGRlcml2ZWQgZml4dHVyZS4K
K0dvb2dsZSBUZXN0IGhhcyBubyBsaW1pdCBvbiBob3cgZGVlcCB0aGUgaGllcmFyY2h5IGNhbiBi
ZS4KKworRm9yIGEgY29tcGxldGUgZXhhbXBsZSB1c2luZyBkZXJpdmVkIHRlc3QgZml4dHVyZXMs
IHNlZQorW3NhbXBsZTVdKC4uL3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYykuCisKKyMjIE15
IGNvbXBpbGVyIGNvbXBsYWlucyAidm9pZCB2YWx1ZSBub3QgaWdub3JlZCBhcyBpdCBvdWdodCB0
byBiZS4iIFdoYXQgZG9lcyB0aGlzIG1lYW4/ICMjCisKK1lvdSdyZSBwcm9iYWJseSB1c2luZyBh
biBgQVNTRVJUXyooKWAgaW4gYSBmdW5jdGlvbiB0aGF0IGRvZXNuJ3QgcmV0dXJuIGB2b2lkYC4K
K2BBU1NFUlRfKigpYCBjYW4gb25seSBiZSB1c2VkIGluIGB2b2lkYCBmdW5jdGlvbnMuCisKKyMj
IE15IGRlYXRoIHRlc3QgaGFuZ3MgKG9yIHNlZy1mYXVsdHMpLiBIb3cgZG8gSSBmaXggaXQ/ICMj
CisKK0luIEdvb2dsZSBUZXN0LCBkZWF0aCB0ZXN0cyBhcmUgcnVuIGluIGEgY2hpbGQgcHJvY2Vz
cyBhbmQgdGhlIHdheSB0aGV5IHdvcmsgaXMKK2RlbGljYXRlLiBUbyB3cml0ZSBkZWF0aCB0ZXN0
cyB5b3UgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhleSB3b3JrLgorUGxlYXNlIG1h
a2Ugc3VyZSB5b3UgaGF2ZSByZWFkIHRoaXMuCisKK0luIHBhcnRpY3VsYXIsIGRlYXRoIHRlc3Rz
IGRvbid0IGxpa2UgaGF2aW5nIG11bHRpcGxlIHRocmVhZHMgaW4gdGhlIHBhcmVudAorcHJvY2Vz
cy4gU28gdGhlIGZpcnN0IHRoaW5nIHlvdSBjYW4gdHJ5IGlzIHRvIGVsaW1pbmF0ZSBjcmVhdGlu
ZyB0aHJlYWRzCitvdXRzaWRlIG9mIGBFWFBFQ1RfREVBVEgoKWAuCisKK1NvbWV0aW1lcyB0aGlz
IGlzIGltcG9zc2libGUgYXMgc29tZSBsaWJyYXJ5IHlvdSBtdXN0IHVzZSBtYXkgYmUgY3JlYXRp
bmcKK3RocmVhZHMgYmVmb3JlIGBtYWluKClgIGlzIGV2ZW4gcmVhY2hlZC4gSW4gdGhpcyBjYXNl
LCB5b3UgY2FuIHRyeSB0byBtaW5pbWl6ZQordGhlIGNoYW5jZSBvZiBjb25mbGljdHMgYnkgZWl0
aGVyIG1vdmluZyBhcyBtYW55IGFjdGl2aXRpZXMgYXMgcG9zc2libGUgaW5zaWRlCitgRVhQRUNU
X0RFQVRIKClgIChpbiB0aGUgZXh0cmVtZSBjYXNlLCB5b3Ugd2FudCB0byBtb3ZlIGV2ZXJ5dGhp
bmcgaW5zaWRlKSwgb3IKK2xlYXZpbmcgYXMgZmV3IHRoaW5ncyBhcyBwb3NzaWJsZSBpbiBpdC4g
QWxzbywgeW91IGNhbiB0cnkgdG8gc2V0IHRoZSBkZWF0aAordGVzdCBzdHlsZSB0byBgInRocmVh
ZHNhZmUiYCwgd2hpY2ggaXMgc2FmZXIgYnV0IHNsb3dlciwgYW5kIHNlZSBpZiBpdCBoZWxwcy4K
KworSWYgeW91IGdvIHdpdGggdGhyZWFkLXNhZmUgZGVhdGggdGVzdHMsIHJlbWVtYmVyIHRoYXQg
dGhleSByZXJ1biB0aGUgdGVzdAorcHJvZ3JhbSBmcm9tIHRoZSBiZWdpbm5pbmcgaW4gdGhlIGNo
aWxkIHByb2Nlc3MuIFRoZXJlZm9yZSBtYWtlIHN1cmUgeW91cgorcHJvZ3JhbSBjYW4gcnVuIHNp
ZGUtYnktc2lkZSB3aXRoIGl0c2VsZiBhbmQgaXMgZGV0ZXJtaW5pc3RpYy4KKworSW4gdGhlIGVu
ZCwgdGhpcyBib2lscyBkb3duIHRvIGdvb2QgY29uY3VycmVudCBwcm9ncmFtbWluZy4gWW91IGhh
dmUgdG8gbWFrZQorc3VyZSB0aGF0IHRoZXJlIGlzIG5vIHJhY2UgY29uZGl0aW9ucyBvciBkZWFk
IGxvY2tzIGluIHlvdXIgcHJvZ3JhbS4gTm8gc2lsdmVyCitidWxsZXQgLSBzb3JyeSEKKworIyMg
U2hvdWxkIEkgdXNlIHRoZSBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIG9mIHRoZSB0ZXN0IGZpeHR1
cmUgb3IgdGhlIHNldC11cC90ZWFyLWRvd24gZnVuY3Rpb24/ICMjCisKK1RoZSBmaXJzdCB0aGlu
ZyB0byByZW1lbWJlciBpcyB0aGF0IEdvb2dsZSBUZXN0IGRvZXMgbm90IHJldXNlIHRoZQorc2Ft
ZSB0ZXN0IGZpeHR1cmUgb2JqZWN0IGFjcm9zcyBtdWx0aXBsZSB0ZXN0cy4gRm9yIGVhY2ggYFRF
U1RfRmAsCitHb29nbGUgVGVzdCB3aWxsIGNyZWF0ZSBhIGZyZXNoIHRlc3QgZml4dHVyZSBvYmpl
Y3QsIF9pbW1lZGlhdGVseV8KK2NhbGwgYFNldFVwKClgLCBydW4gdGhlIHRlc3QsIGNhbGwgYFRl
YXJEb3duKClgLCBhbmQgdGhlbgorX2ltbWVkaWF0ZWx5XyBkZWxldGUgdGhlIHRlc3QgZml4dHVy
ZSBvYmplY3QuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8KK25lZWQgdG8gd3JpdGUgYSBgU2V0VXAo
KWAgb3IgYFRlYXJEb3duKClgIGZ1bmN0aW9uIGlmIHRoZSBjb25zdHJ1Y3Rvcgorb3IgZGVzdHJ1
Y3RvciBhbHJlYWR5IGRvZXMgdGhlIGpvYi4KKworWW91IG1heSBzdGlsbCB3YW50IHRvIHVzZSBg
U2V0VXAoKS9UZWFyRG93bigpYCBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOgorICAqIElmIHRoZSB0
ZWFyLWRvd24gb3BlcmF0aW9uIGNvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiwgeW91IG11c3QgdXNl
IGBUZWFyRG93bigpYCBhcyBvcHBvc2VkIHRvIHRoZSBkZXN0cnVjdG9yLCBhcyB0aHJvd2luZyBp
biBhIGRlc3RydWN0b3IgbGVhZHMgdG8gdW5kZWZpbmVkIGJlaGF2aW9yIGFuZCB1c3VhbGx5IHdp
bGwga2lsbCB5b3VyIHByb2dyYW0gcmlnaHQgYXdheS4gTm90ZSB0aGF0IG1hbnkgc3RhbmRhcmQg
bGlicmFyaWVzIChsaWtlIFNUTCkgbWF5IHRocm93IHdoZW4gZXhjZXB0aW9ucyBhcmUgZW5hYmxl
ZCBpbiB0aGUgY29tcGlsZXIuIFRoZXJlZm9yZSB5b3Ugc2hvdWxkIHByZWZlciBgVGVhckRvd24o
KWAgaWYgeW91IHdhbnQgdG8gd3JpdGUgcG9ydGFibGUgdGVzdHMgdGhhdCB3b3JrIHdpdGggb3Ig
d2l0aG91dCBleGNlcHRpb25zLgorICAqIFRoZSBHb29nbGUgVGVzdCB0ZWFtIGlzIGNvbnNpZGVy
aW5nIG1ha2luZyB0aGUgYXNzZXJ0aW9uIG1hY3JvcyB0aHJvdyBvbiBwbGF0Zm9ybXMgd2hlcmUg
ZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCAoZS5nLiBXaW5kb3dzLCBNYWMgT1MsIGFuZCBMaW51eCBj
bGllbnQtc2lkZSksIHdoaWNoIHdpbGwgZWxpbWluYXRlIHRoZSBuZWVkIGZvciB0aGUgdXNlciB0
byBwcm9wYWdhdGUgZmFpbHVyZXMgZnJvbSBhIHN1YnJvdXRpbmUgdG8gaXRzIGNhbGxlci4gVGhl
cmVmb3JlLCB5b3Ugc2hvdWxkbid0IHVzZSBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGluIGEgZGVz
dHJ1Y3RvciBpZiB5b3VyIGNvZGUgY291bGQgcnVuIG9uIHN1Y2ggYSBwbGF0Zm9ybS4KKyAgKiBJ
biBhIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IsIHlvdSBjYW5ub3QgbWFrZSBhIHZpcnR1YWwg
ZnVuY3Rpb24gY2FsbCBvbiB0aGlzIG9iamVjdC4gKFlvdSBjYW4gY2FsbCBhIG1ldGhvZCBkZWNs
YXJlZCBhcyB2aXJ0dWFsLCBidXQgaXQgd2lsbCBiZSBzdGF0aWNhbGx5IGJvdW5kLikgVGhlcmVm
b3JlLCBpZiB5b3UgbmVlZCB0byBjYWxsIGEgbWV0aG9kIHRoYXQgd2lsbCBiZSBvdmVycmlkZW4g
aW4gYSBkZXJpdmVkIGNsYXNzLCB5b3UgaGF2ZSB0byB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAu
CisKKyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgIm5vIG1hdGNoaW5nIGZ1bmN0aW9uIHRvIGNh
bGwiIHdoZW4gSSB1c2UgQVNTRVJUXF9QUkVEbi4gSG93IGRvIEkgZml4IGl0PyAjIworCitJZiB0
aGUgcHJlZGljYXRlIGZ1bmN0aW9uIHlvdSB1c2UgaW4gYEFTU0VSVF9QUkVEKmAgb3IgYEVYUEVD
VF9QUkVEKmAgaXMKK292ZXJsb2FkZWQgb3IgYSB0ZW1wbGF0ZSwgdGhlIGNvbXBpbGVyIHdpbGwg
aGF2ZSB0cm91YmxlIGZpZ3VyaW5nIG91dCB3aGljaAorb3ZlcmxvYWRlZCB2ZXJzaW9uIGl0IHNo
b3VsZCB1c2UuIGBBU1NFUlRfUFJFRF9GT1JNQVQqYCBhbmQKK2BFWFBFQ1RfUFJFRF9GT1JNQVQq
YCBkb24ndCBoYXZlIHRoaXMgcHJvYmxlbS4KKworSWYgeW91IHNlZSB0aGlzIGVycm9yLCB5b3Ug
bWlnaHQgd2FudCB0byBzd2l0Y2ggdG8KK2AoQVNTRVJUfEVYUEVDVClfUFJFRF9GT1JNQVQqYCwg
d2hpY2ggd2lsbCBhbHNvIGdpdmUgeW91IGEgYmV0dGVyIGZhaWx1cmUKK21lc3NhZ2UuIElmLCBo
b3dldmVyLCB0aGF0IGlzIG5vdCBhbiBvcHRpb24sIHlvdSBjYW4gcmVzb2x2ZSB0aGUgcHJvYmxl
bSBieQorZXhwbGljaXRseSB0ZWxsaW5nIHRoZSBjb21waWxlciB3aGljaCB2ZXJzaW9uIHRvIHBp
Y2suCisKK0ZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYXZlCisKK2BgYAorYm9vbCBJc1Bvc2l0
aXZlKGludCBuKSB7CisgIHJldHVybiBuID4gMDsKK30KK2Jvb2wgSXNQb3NpdGl2ZShkb3VibGUg
eCkgeworICByZXR1cm4geCA+IDA7Cit9CitgYGAKKworeW91IHdpbGwgZ2V0IGEgY29tcGlsZXIg
ZXJyb3IgaWYgeW91IHdyaXRlCisKK2BgYAorRVhQRUNUX1BSRUQxKElzUG9zaXRpdmUsIDUpOwor
YGBgCisKK0hvd2V2ZXIsIHRoaXMgd2lsbCB3b3JrOgorCitgYGAKK0VYUEVDVF9QUkVEMSgqc3Rh
dGljX2Nhc3Q8Ym9vbCAoKikoaW50KT4qKElzUG9zaXRpdmUpLCA1KTsKK2BgYAorCisoVGhlIHN0
dWZmIGluc2lkZSB0aGUgYW5nbGVkIGJyYWNrZXRzIGZvciB0aGUgYHN0YXRpY19jYXN0YCBvcGVy
YXRvciBpcyB0aGUKK3R5cGUgb2YgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgZm9yIHRoZSBgaW50YC12
ZXJzaW9uIG9mIGBJc1Bvc2l0aXZlKClgLikKKworQXMgYW5vdGhlciBleGFtcGxlLCB3aGVuIHlv
dSBoYXZlIGEgdGVtcGxhdGUgZnVuY3Rpb24KKworYGBgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2Jvb2wgSXNOZWdhdGl2ZShUIHgpIHsKKyAgcmV0dXJuIHggPCAwOworfQorYGBgCisKK3lvdSBj
YW4gdXNlIGl0IGluIGEgcHJlZGljYXRlIGFzc2VydGlvbiBsaWtlIHRoaXM6CisKK2BgYAorQVNT
RVJUX1BSRUQxKElzTmVnYXRpdmUqPGludD4qLCAtNSk7CitgYGAKKworVGhpbmdzIGFyZSBtb3Jl
IGludGVyZXN0aW5nIGlmIHlvdXIgdGVtcGxhdGUgaGFzIG1vcmUgdGhhbiBvbmUgcGFyYW1ldGVy
cy4gVGhlCitmb2xsb3dpbmcgd29uJ3QgY29tcGlsZToKKworYGBgCitBU1NFUlRfUFJFRDIoKkdy
ZWF0ZXJUaGFuPGludCwgaW50PiosIDUsIDApOworYGBgCisKKworYXMgdGhlIEMrKyBwcmUtcHJv
Y2Vzc29yIHRoaW5rcyB5b3UgYXJlIGdpdmluZyBgQVNTRVJUX1BSRUQyYCA0IGFyZ3VtZW50cywK
K3doaWNoIGlzIG9uZSBtb3JlIHRoYW4gZXhwZWN0ZWQuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIHdy
YXAgdGhlIHByZWRpY2F0ZQorZnVuY3Rpb24gaW4gcGFyZW50aGVzZXM6CisKK2BgYAorQVNTRVJU
X1BSRUQyKCooR3JlYXRlclRoYW48aW50LCBpbnQ+KSosIDUsIDApOworYGBgCisKKworIyMgTXkg
Y29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJpZ25vcmluZyByZXR1cm4gdmFsdWUiIHdoZW4gSSBj
YWxsIFJVTlxfQUxMXF9URVNUUygpLiBXaHk/ICMjCisKK1NvbWUgcGVvcGxlIGhhZCBiZWVuIGln
bm9yaW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAuIFRoYXQgaXMsCitp
bnN0ZWFkIG9mCisKK2BgYAorcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK2BgYAorCit0aGV5IHdy
aXRlCisKK2BgYAorUlVOX0FMTF9URVNUUygpOworYGBgCisKK1RoaXMgaXMgd3JvbmcgYW5kIGRh
bmdlcm91cy4gQSB0ZXN0IHJ1bm5lciBuZWVkcyB0byBzZWUgdGhlIHJldHVybiB2YWx1ZSBvZgor
YFJVTl9BTExfVEVTVFMoKWAgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGlmIGEgdGVzdCBoYXMgcGFz
c2VkLiBJZiB5b3VyIGBtYWluKClgCitmdW5jdGlvbiBpZ25vcmVzIGl0LCB5b3VyIHRlc3Qgd2ls
bCBiZSBjb25zaWRlcmVkIHN1Y2Nlc3NmdWwgZXZlbiBpZiBpdCBoYXMgYQorR29vZ2xlIFRlc3Qg
YXNzZXJ0aW9uIGZhaWx1cmUuIFZlcnkgYmFkLgorCitUbyBoZWxwIHRoZSB1c2VycyBhdm9pZCB0
aGlzIGRhbmdlcm91cyBidWcsIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgorYFJVTl9BTExfVEVTVFMo
KWAgY2F1c2VzIGdjYyB0byByYWlzZSB0aGlzIHdhcm5pbmcsIHdoZW4gdGhlIHJldHVybiB2YWx1
ZSBpcworaWdub3JlZC4gSWYgeW91IHNlZSB0aGlzIHdhcm5pbmcsIHRoZSBmaXggaXMgc2ltcGxl
OiBqdXN0IG1ha2Ugc3VyZSBpdHMgdmFsdWUKK2lzIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZSBv
ZiBgbWFpbigpYC4KKworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5zIHRoYXQgYSBjb25zdHJ1Y3Rv
ciAob3IgZGVzdHJ1Y3RvcikgY2Fubm90IHJldHVybiBhIHZhbHVlLiBXaGF0J3MgZ29pbmcgb24/
ICMjCisKK0R1ZSB0byBhIHBlY3VsaWFyaXR5IG9mIEMrKywgaW4gb3JkZXIgdG8gc3VwcG9ydCB0
aGUgc3ludGF4IGZvciBzdHJlYW1pbmcKK21lc3NhZ2VzIHRvIGFuIGBBU1NFUlRfKmAsIGUuZy4K
KworYGBgCitBU1NFUlRfRVEoMSwgRm9vKCkpIDw8ICJibGFoIGJsYWgiIDw8IGZvbzsKK2BgYAor
Cit3ZSBoYWQgdG8gZ2l2ZSB1cCB1c2luZyBgQVNTRVJUKmAgYW5kIGBGQUlMKmAgKGJ1dCBub3Qg
YEVYUEVDVCpgIGFuZAorYEFERF9GQUlMVVJFKmApIGluIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1
Y3RvcnMuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIG1vdmUgdGhlCitjb250ZW50IG9mIHlvdXIgY29u
c3RydWN0b3IvZGVzdHJ1Y3RvciB0byBhIHByaXZhdGUgdm9pZCBtZW1iZXIgZnVuY3Rpb24sIG9y
Citzd2l0Y2ggdG8gYEVYUEVDVF8qKClgIGlmIHRoYXQgd29ya3MuIFRoaXMgc2VjdGlvbiBpbiB0
aGUgdXNlcidzIGd1aWRlIGV4cGxhaW5zCitpdC4KKworIyMgTXkgc2V0LXVwIGZ1bmN0aW9uIGlz
IG5vdCBjYWxsZWQuIFdoeT8gIyMKKworQysrIGlzIGNhc2Utc2Vuc2l0aXZlLiBJdCBzaG91bGQg
YmUgc3BlbGxlZCBhcyBgU2V0VXAoKWAuICBEaWQgeW91CitzcGVsbCBpdCBhcyBgU2V0dXAoKWA/
CisKK1NpbWlsYXJseSwgc29tZXRpbWVzIHBlb3BsZSBzcGVsbCBgU2V0VXBUZXN0Q2FzZSgpYCBh
cyBgU2V0dXBUZXN0Q2FzZSgpYCBhbmQKK3dvbmRlciB3aHkgaXQncyBuZXZlciBjYWxsZWQuCisK
KyMjIEhvdyBkbyBJIGp1bXAgdG8gdGhlIGxpbmUgb2YgYSBmYWlsdXJlIGluIEVtYWNzIGRpcmVj
dGx5PyAjIworCitHb29nbGUgVGVzdCdzIGZhaWx1cmUgbWVzc2FnZSBmb3JtYXQgaXMgdW5kZXJz
dG9vZCBieSBFbWFjcyBhbmQgbWFueSBvdGhlcgorSURFcywgbGlrZSBhY21lIGFuZCBYQ29kZS4g
SWYgYSBHb29nbGUgVGVzdCBtZXNzYWdlIGlzIGluIGEgY29tcGlsYXRpb24gYnVmZmVyCitpbiBF
bWFjcywgdGhlbiBpdCdzIGNsaWNrYWJsZS4gWW91IGNhbiBub3cgaGl0IGBlbnRlcmAgb24gYSBt
ZXNzYWdlIHRvIGp1bXAgdG8KK3RoZSBjb3JyZXNwb25kaW5nIHNvdXJjZSBjb2RlLCBvciB1c2Ug
YEMteCBgYCB0byBqdW1wIHRvIHRoZSBuZXh0IGZhaWx1cmUuCisKKyMjIEkgaGF2ZSBzZXZlcmFs
IHRlc3QgY2FzZXMgd2hpY2ggc2hhcmUgdGhlIHNhbWUgdGVzdCBmaXh0dXJlIGxvZ2ljLCBkbyBJ
IGhhdmUgdG8gZGVmaW5lIGEgbmV3IHRlc3QgZml4dHVyZSBjbGFzcyBmb3IgZWFjaCBvZiB0aGVt
PyBUaGlzIHNlZW1zIHByZXR0eSB0ZWRpb3VzLiAjIworCitZb3UgZG9uJ3QgaGF2ZSB0by4gSW5z
dGVhZCBvZgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgQmFzZVRlc3Qge307CisKK1RF
U1RfRihGb29UZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0K
KworY2xhc3MgQmFyVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCB7fTsKKworVEVTVF9GKEJhclRlc3Qs
IEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIERlZikgeyAuLi4gfQorYGBgCisKK3lvdSBj
YW4gc2ltcGx5IGB0eXBlZGVmYCB0aGUgdGVzdCBmaXh0dXJlczoKK2BgYAordHlwZWRlZiBCYXNl
VGVzdCBGb29UZXN0OworCitURVNUX0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0YoRm9v
VGVzdCwgRGVmKSB7IC4uLiB9CisKK3R5cGVkZWYgQmFzZVRlc3QgQmFyVGVzdDsKKworVEVTVF9G
KEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIERlZikgeyAuLi4gfQorYGBg
CisKKyMjIFRoZSBHb29nbGUgVGVzdCBvdXRwdXQgaXMgYnVyaWVkIGluIGEgd2hvbGUgYnVuY2gg
b2YgbG9nIG1lc3NhZ2VzLiBXaGF0IGRvIEkgZG8/ICMjCisKK1RoZSBHb29nbGUgVGVzdCBvdXRw
dXQgaXMgbWVhbnQgdG8gYmUgYSBjb25jaXNlIGFuZCBodW1hbi1mcmllbmRseSByZXBvcnQuIElm
Cit5b3VyIHRlc3QgZ2VuZXJhdGVzIHRleHR1YWwgb3V0cHV0IGl0c2VsZiwgaXQgd2lsbCBtaXgg
d2l0aCB0aGUgR29vZ2xlIFRlc3QKK291dHB1dCwgbWFraW5nIGl0IGhhcmQgdG8gcmVhZC4gSG93
ZXZlciwgdGhlcmUgaXMgYW4gZWFzeSBzb2x1dGlvbiB0byB0aGlzCitwcm9ibGVtLgorCitTaW5j
ZSBtb3N0IGxvZyBtZXNzYWdlcyBnbyB0byBzdGRlcnIsIHdlIGRlY2lkZWQgdG8gbGV0IEdvb2ds
ZSBUZXN0IG91dHB1dCBnbwordG8gc3Rkb3V0LiBUaGlzIHdheSwgeW91IGNhbiBlYXNpbHkgc2Vw
YXJhdGUgdGhlIHR3byB1c2luZyByZWRpcmVjdGlvbi4gRm9yCitleGFtcGxlOgorYGBgCisuL215
X3Rlc3QgPiBnb29nbGV0ZXN0X291dHB1dC50eHQKK2BgYAorCisjIyBXaHkgc2hvdWxkIEkgcHJl
ZmVyIHRlc3QgZml4dHVyZXMgb3ZlciBnbG9iYWwgdmFyaWFibGVzPyAjIworCitUaGVyZSBhcmUg
c2V2ZXJhbCBnb29kIHJlYXNvbnM6CisgIDEuIEl0J3MgbGlrZWx5IHlvdXIgdGVzdCBuZWVkcyB0
byBjaGFuZ2UgdGhlIHN0YXRlcyBvZiBpdHMgZ2xvYmFsIHZhcmlhYmxlcy4gVGhpcyBtYWtlcyBp
dCBkaWZmaWN1bHQgdG8ga2VlcCBzaWRlIGVmZmVjdHMgZnJvbSBlc2NhcGluZyBvbmUgdGVzdCBh
bmQgY29udGFtaW5hdGluZyBvdGhlcnMsIG1ha2luZyBkZWJ1Z2dpbmcgZGlmZmljdWx0LiBCeSB1
c2luZyBmaXh0dXJlcywgZWFjaCB0ZXN0IGhhcyBhIGZyZXNoIHNldCBvZiB2YXJpYWJsZXMgdGhh
dCdzIGRpZmZlcmVudCAoYnV0IHdpdGggdGhlIHNhbWUgbmFtZXMpLiBUaHVzLCB0ZXN0cyBhcmUg
a2VwdCBpbmRlcGVuZGVudCBvZiBlYWNoIG90aGVyLgorICAxLiBHbG9iYWwgdmFyaWFibGVzIHBv
bGx1dGUgdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisgIDEuIFRlc3QgZml4dHVyZXMgY2FuIGJlIHJl
dXNlZCB2aWEgc3ViY2xhc3NpbmcsIHdoaWNoIGNhbm5vdCBiZSBkb25lIGVhc2lseSB3aXRoIGds
b2JhbCB2YXJpYWJsZXMuIFRoaXMgaXMgdXNlZnVsIGlmIG1hbnkgdGVzdCBjYXNlcyBoYXZlIHNv
bWV0aGluZyBpbiBjb21tb24uCisKKyMjIEhvdyBkbyBJIHRlc3QgcHJpdmF0ZSBjbGFzcyBtZW1i
ZXJzIHdpdGhvdXQgd3JpdGluZyBGUklFTkRcX1RFU1QoKXM/ICMjCisKK1lvdSBzaG91bGQgdHJ5
IHRvIHdyaXRlIHRlc3RhYmxlIGNvZGUsIHdoaWNoIG1lYW5zIGNsYXNzZXMgc2hvdWxkIGJlIGVh
c2lseQordGVzdGVkIGZyb20gdGhlaXIgcHVibGljIGludGVyZmFjZS4gT25lIHdheSB0byBhY2hp
ZXZlIHRoaXMgaXMgdGhlIFBpbXBsIGlkaW9tOgoreW91IG1vdmUgYWxsIHByaXZhdGUgbWVtYmVy
cyBvZiBhIGNsYXNzIGludG8gYSBoZWxwZXIgY2xhc3MsIGFuZCBtYWtlIGFsbAorbWVtYmVycyBv
ZiB0aGUgaGVscGVyIGNsYXNzIHB1YmxpYy4KKworWW91IGhhdmUgc2V2ZXJhbCBvdGhlciBvcHRp
b25zIHRoYXQgZG9uJ3QgcmVxdWlyZSB1c2luZyBgRlJJRU5EX1RFU1RgOgorICAqIFdyaXRlIHRo
ZSB0ZXN0cyBhcyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlIGNsYXNzOgorYGBgCitjbGFzcyBGb28g
eworICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKKyAgLi4uCit9OworCitjbGFzcyBGb29UZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAuLi4KKyAgdm9pZCBUZXN0
MSgpIHsuLi59IC8vIFRoaXMgYWNjZXNzZXMgcHJpdmF0ZSBtZW1iZXJzIG9mIGNsYXNzIEZvby4K
KyAgdm9pZCBUZXN0MigpIHsuLi59IC8vIFNvIGRvZXMgdGhpcyBvbmUuCit9OworCitURVNUX0Yo
Rm9vVGVzdCwgVGVzdDEpIHsKKyAgVGVzdDEoKTsKK30KKworVEVTVF9GKEZvb1Rlc3QsIFRlc3Qy
KSB7CisgIFRlc3QyKCk7Cit9CitgYGAKKyAgKiBJbiB0aGUgZml4dHVyZSBjbGFzcywgd3JpdGUg
YWNjZXNzb3JzIGZvciB0aGUgdGVzdGVkIGNsYXNzJyBwcml2YXRlIG1lbWJlcnMsIHRoZW4gdXNl
IHRoZSBhY2Nlc3NvcnMgaW4geW91ciB0ZXN0czoKK2BgYAorY2xhc3MgRm9vIHsKKyAgZnJpZW5k
IGNsYXNzIEZvb1Rlc3Q7CisgIC4uLgorfTsKKworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLi4uCisgIFQxIGdldF9wcml2YXRlX21lbWJl
cjEoRm9vKiBvYmopIHsKKyAgICByZXR1cm4gb2JqLT5wcml2YXRlX21lbWJlcjFfOworICB9Cit9
OworCitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgLi4uCisgIGdldF9wcml2YXRlX21lbWJl
cjEoeCkKKyAgLi4uCit9CitgYGAKKyAgKiBJZiB0aGUgbWV0aG9kcyBhcmUgZGVjbGFyZWQgKipw
cm90ZWN0ZWQqKiwgeW91IGNhbiBjaGFuZ2UgdGhlaXIgYWNjZXNzIGxldmVsIGluIGEgdGVzdC1v
bmx5IHN1YmNsYXNzOgorYGBgCitjbGFzcyBZb3VyQ2xhc3MgeworICAuLi4KKyBwcm90ZWN0ZWQ6
IC8vIHByb3RlY3RlZCBhY2Nlc3MgZm9yIHRlc3RhYmlsaXR5LgorICBpbnQgRG9Tb21ldGhpbmdS
ZXR1cm5pbmdJbnQoKTsKKyAgLi4uCit9OworCisvLyBpbiB0aGUgeW91cl9jbGFzc190ZXN0LmNj
IGZpbGU6CitjbGFzcyBUZXN0YWJsZVlvdXJDbGFzcyA6IHB1YmxpYyBZb3VyQ2xhc3MgeworICAu
Li4KKyBwdWJsaWM6IHVzaW5nIFlvdXJDbGFzczo6RG9Tb21ldGhpbmdSZXR1cm5pbmdJbnQ7IC8v
IGNoYW5nZXMgYWNjZXNzIHJpZ2h0cworICAuLi4KK307CisKK1RFU1RfRihZb3VyQ2xhc3NUZXN0
LCBEb1NvbWV0aGluZ1Rlc3QpIHsKKyAgVGVzdGFibGVZb3VyQ2xhc3Mgb2JqOworICBhc3NlcnRF
cXVhbHMoZXhwZWN0ZWRfdmFsdWUsIG9iai5Eb1NvbWV0aGluZ1JldHVybmluZ0ludCgpKTsKK30K
K2BgYAorCisjIyBIb3cgZG8gSSB0ZXN0IHByaXZhdGUgY2xhc3Mgc3RhdGljIG1lbWJlcnMgd2l0
aG91dCB3cml0aW5nIEZSSUVORFxfVEVTVCgpcz8gIyMKKworV2UgZmluZCBwcml2YXRlIHN0YXRp
YyBtZXRob2RzIGNsdXR0ZXIgdGhlIGhlYWRlciBmaWxlLiAgVGhleSBhcmUKK2ltcGxlbWVudGF0
aW9uIGRldGFpbHMgYW5kIGlkZWFsbHkgc2hvdWxkIGJlIGtlcHQgb3V0IG9mIGEgLmguIFNvIG9m
dGVuIEkgbWFrZQordGhlbSBmcmVlIGZ1bmN0aW9ucyBpbnN0ZWFkLgorCitJbnN0ZWFkIG9mOgor
YGBgCisvLyBmb28uaAorY2xhc3MgRm9vIHsKKyAgLi4uCisgcHJpdmF0ZToKKyAgc3RhdGljIGJv
b2wgRnVuYyhpbnQgbik7Cit9OworCisvLyBmb28uY2MKK2Jvb2wgRm9vOjpGdW5jKGludCBuKSB7
IC4uLiB9CisKKy8vIGZvb190ZXN0LmNjCitFWFBFQ1RfVFJVRShGb286OkZ1bmMoMTIzNDUpKTsK
K2BgYAorCitZb3UgcHJvYmFibHkgc2hvdWxkIGJldHRlciB3cml0ZToKK2BgYAorLy8gZm9vLmgK
K2NsYXNzIEZvbyB7CisgIC4uLgorfTsKKworLy8gZm9vLmNjCituYW1lc3BhY2UgaW50ZXJuYWwg
eworICBib29sIEZ1bmMoaW50IG4pIHsgLi4uIH0KK30KKworLy8gZm9vX3Rlc3QuY2MKK25hbWVz
cGFjZSBpbnRlcm5hbCB7CisgIGJvb2wgRnVuYyhpbnQgbik7Cit9CisKK0VYUEVDVF9UUlVFKGlu
dGVybmFsOjpGdW5jKDEyMzQ1KSk7CitgYGAKKworIyMgSSB3b3VsZCBsaWtlIHRvIHJ1biBhIHRl
c3Qgc2V2ZXJhbCB0aW1lcyB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzLiBEbyBJIG5lZWQgdG8g
d3JpdGUgc2V2ZXJhbCBzaW1pbGFyIGNvcGllcyBvZiBpdD8gIyMKKworTm8uIFlvdSBjYW4gdXNl
IGEgZmVhdHVyZSBjYWxsZWQgW3ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHNdKFYxXzZfQWR2YW5j
ZWRHdWlkZS5tZCNWYWx1ZV9QYXJhbWV0ZXJpemVkX1Rlc3RzKSB3aGljaAorbGV0cyB5b3UgcmVw
ZWF0IHlvdXIgdGVzdHMgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVycywgd2l0aG91dCBkZWZpbmlu
ZyBpdCBtb3JlIHRoYW4gb25jZS4KKworIyMgSG93IGRvIEkgdGVzdCBhIGZpbGUgdGhhdCBkZWZp
bmVzIG1haW4oKT8gIyMKKworVG8gdGVzdCBhIGBmb28uY2NgIGZpbGUsIHlvdSBuZWVkIHRvIGNv
bXBpbGUgYW5kIGxpbmsgaXQgaW50byB5b3VyIHVuaXQgdGVzdAorcHJvZ3JhbS4gSG93ZXZlciwg
d2hlbiB0aGUgZmlsZSBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIHRoZSBgbWFpbigpYAorZnVu
Y3Rpb24sIGl0IHdpbGwgY2xhc2ggd2l0aCB0aGUgYG1haW4oKWAgb2YgeW91ciB1bml0IHRlc3Qs
IGFuZCB3aWxsIHJlc3VsdCBpbgorYSBidWlsZCBlcnJvci4KKworVGhlIHJpZ2h0IHNvbHV0aW9u
IGlzIHRvIHNwbGl0IGl0IGludG8gdGhyZWUgZmlsZXM6CisgIDEuIGBmb28uaGAgd2hpY2ggY29u
dGFpbnMgdGhlIGRlY2xhcmF0aW9ucywKKyAgMS4gYGZvby5jY2Agd2hpY2ggY29udGFpbnMgdGhl
IGRlZmluaXRpb25zIGV4Y2VwdCBgbWFpbigpYCwgYW5kCisgIDEuIGBmb29fbWFpbi5jY2Agd2hp
Y2ggY29udGFpbnMgbm90aGluZyBidXQgdGhlIGRlZmluaXRpb24gb2YgYG1haW4oKWAuCisKK1Ro
ZW4gYGZvby5jY2AgY2FuIGJlIGVhc2lseSB0ZXN0ZWQuCisKK0lmIHlvdSBhcmUgYWRkaW5nIHRl
c3RzIHRvIGFuIGV4aXN0aW5nIGZpbGUgYW5kIGRvbid0IHdhbnQgYW4gaW50cnVzaXZlIGNoYW5n
ZQorbGlrZSB0aGlzLCB0aGVyZSBpcyBhIGhhY2s6IGp1c3QgaW5jbHVkZSB0aGUgZW50aXJlIGBm
b28uY2NgIGZpbGUgaW4geW91ciB1bml0Cit0ZXN0LiBGb3IgZXhhbXBsZToKK2BgYAorLy8gRmls
ZSBmb29fdW5pdHRlc3QuY2MKKworLy8gVGhlIGhlYWRlcnMgc2VjdGlvbgorLi4uCisKKy8vIFJl
bmFtZXMgbWFpbigpIGluIGZvby5jYyB0byBtYWtlIHJvb20gZm9yIHRoZSB1bml0IHRlc3QgbWFp
bigpCisjZGVmaW5lIG1haW4gRm9vTWFpbgorCisjaW5jbHVkZSAiYS9iL2Zvby5jYyIKKworLy8g
VGhlIHRlc3RzIHN0YXJ0IGhlcmUuCisuLi4KK2BgYAorCisKK0hvd2V2ZXIsIHBsZWFzZSByZW1l
bWJlciB0aGlzIGlzIGEgaGFjayBhbmQgc2hvdWxkIG9ubHkgYmUgdXNlZCBhcyB0aGUgbGFzdAor
cmVzb3J0LgorCisjIyBXaGF0IGNhbiB0aGUgc3RhdGVtZW50IGFyZ3VtZW50IGluIEFTU0VSVFxf
REVBVEgoKSBiZT8gIyMKKworYEFTU0VSVF9ERUFUSChfc3RhdGVtZW50XywgX3JlZ2V4XylgIChv
ciBhbnkgZGVhdGggYXNzZXJ0aW9uIG1hY3JvKSBjYW4gYmUgdXNlZAord2hlcmV2ZXIgYF9zdGF0
ZW1lbnRfYCBpcyB2YWxpZC4gU28gYmFzaWNhbGx5IGBfc3RhdGVtZW50X2AgY2FuIGJlIGFueSBD
KysKK3N0YXRlbWVudCB0aGF0IG1ha2VzIHNlbnNlIGluIHRoZSBjdXJyZW50IGNvbnRleHQuIElu
IHBhcnRpY3VsYXIsIGl0IGNhbgorcmVmZXJlbmNlIGdsb2JhbCBhbmQvb3IgbG9jYWwgdmFyaWFi
bGVzLCBhbmQgY2FuIGJlOgorICAqIGEgc2ltcGxlIGZ1bmN0aW9uIGNhbGwgKG9mdGVuIHRoZSBj
YXNlKSwKKyAgKiBhIGNvbXBsZXggZXhwcmVzc2lvbiwgb3IKKyAgKiBhIGNvbXBvdW5kIHN0YXRl
bWVudC4KKworPiBTb21lIGV4YW1wbGVzIGFyZSBzaG93biBoZXJlOgorCitgYGAKKy8vIEEgZGVh
dGggdGVzdCBjYW4gYmUgYSBzaW1wbGUgZnVuY3Rpb24gY2FsbC4KK1RFU1QoTXlEZWF0aFRlc3Qs
IEZ1bmN0aW9uQ2FsbCkgeworICBBU1NFUlRfREVBVEgoWHl6KDUpLCAiWHl6IGZhaWxlZCIpOwor
fQorCisvLyBPciBhIGNvbXBsZXggZXhwcmVzc2lvbiB0aGF0IHJlZmVyZW5jZXMgdmFyaWFibGVz
IGFuZCBmdW5jdGlvbnMuCitURVNUKE15RGVhdGhUZXN0LCBDb21wbGV4RXhwcmVzc2lvbikgewor
ICBjb25zdCBib29sIGMgPSBDb25kaXRpb24oKTsKKyAgQVNTRVJUX0RFQVRIKChjID8gRnVuYzEo
MCkgOiBvYmplY3QyLk1ldGhvZCgidGVzdCIpKSwKKyAgICAgICAgICAgICAgICIoRnVuYzF8TWV0
aG9kKSBmYWlsZWQiKTsKK30KKworLy8gRGVhdGggYXNzZXJ0aW9ucyBjYW4gYmUgdXNlZCBhbnkg
d2hlcmUgaW4gYSBmdW5jdGlvbi4gSW4KKy8vIHBhcnRpY3VsYXIsIHRoZXkgY2FuIGJlIGluc2lk
ZSBhIGxvb3AuCitURVNUKE15RGVhdGhUZXN0LCBJbnNpZGVMb29wKSB7CisgIC8vIFZlcmlmaWVz
IHRoYXQgRm9vKDApLCBGb28oMSksIC4uLiwgYW5kIEZvbyg0KSBhbGwgZGllLgorICBmb3IgKGlu
dCBpID0gMDsgaSA8IDU7IGkrKykgeworICAgIEVYUEVDVF9ERUFUSF9NKEZvbyhpKSwgIkZvbyBo
YXMgXFxkKyBlcnJvcnMiLAorICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6TWVzc2FnZSgp
IDw8ICJ3aGVyZSBpIGlzICIgPDwgaSk7CisgIH0KK30KKworLy8gQSBkZWF0aCBhc3NlcnRpb24g
Y2FuIGNvbnRhaW4gYSBjb21wb3VuZCBzdGF0ZW1lbnQuCitURVNUKE15RGVhdGhUZXN0LCBDb21w
b3VuZFN0YXRlbWVudCkgeworICAvLyBWZXJpZmllcyB0aGF0IGF0IGxlYXNlIG9uZSBvZiBCYXIo
MCksIEJhcigxKSwgLi4uLCBhbmQKKyAgLy8gQmFyKDQpIGRpZXMuCisgIEFTU0VSVF9ERUFUSCh7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICAgIEJhcihpKTsKKyAgICB9
CisgIH0sCisgICJCYXIgaGFzIFxcZCsgZXJyb3JzIik7fQorYGBgCisKK2Bnb29nbGV0ZXN0X3Vu
aXR0ZXN0LmNjYCBjb250YWlucyBtb3JlIGV4YW1wbGVzIGlmIHlvdSBhcmUgaW50ZXJlc3RlZC4K
KworIyMgV2hhdCBzeW50YXggZG9lcyB0aGUgcmVndWxhciBleHByZXNzaW9uIGluIEFTU0VSVFxf
REVBVEggdXNlPyAjIworCitPbiBQT1NJWCBzeXN0ZW1zLCBHb29nbGUgVGVzdCB1c2VzIHRoZSBQ
T1NJWCBFeHRlbmRlZCByZWd1bGFyCitleHByZXNzaW9uIHN5bnRheAorKGh0dHA6Ly9lbi53aWtp
cGVkaWEub3JnL3dpa2kvUmVndWxhcl9leHByZXNzaW9uI1BPU0lYX0V4dGVuZGVkX1JlZ3VsYXJf
RXhwcmVzc2lvbnMpLgorT24gV2luZG93cywgaXQgdXNlcyBhIGxpbWl0ZWQgdmFyaWFudCBvZiBy
ZWd1bGFyIGV4cHJlc3Npb24KK3N5bnRheC4gRm9yIG1vcmUgZGV0YWlscywgc2VlIHRoZQorW3Jl
Z3VsYXIgZXhwcmVzc2lvbiBzeW50YXhdKFYxXzZfQWR2YW5jZWRHdWlkZS5tZCNSZWd1bGFyX0V4
cHJlc3Npb25fU3ludGF4KS4KKworIyMgSSBoYXZlIGEgZml4dHVyZSBjbGFzcyBGb28sIGJ1dCBU
RVNUXF9GKEZvbywgQmFyKSBnaXZlcyBtZSBlcnJvciAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gZm9y
IGNhbGwgdG8gRm9vOjpGb28oKSIuIFdoeT8gIyMKKworR29vZ2xlIFRlc3QgbmVlZHMgdG8gYmUg
YWJsZSB0byBjcmVhdGUgb2JqZWN0cyBvZiB5b3VyIHRlc3QgZml4dHVyZSBjbGFzcywgc28KK2l0
IG11c3QgaGF2ZSBhIGRlZmF1bHQgY29uc3RydWN0b3IuIE5vcm1hbGx5IHRoZSBjb21waWxlciB3
aWxsIGRlZmluZSBvbmUgZm9yCit5b3UuIEhvd2V2ZXIsIHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB5
b3UgaGF2ZSB0byBkZWZpbmUgeW91ciBvd246CisgICogSWYgeW91IGV4cGxpY2l0bHkgZGVjbGFy
ZSBhIG5vbi1kZWZhdWx0IGNvbnN0cnVjdG9yIGZvciBjbGFzcyBgRm9vYCwgdGhlbiB5b3UgbmVl
ZCB0byBkZWZpbmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLCBldmVuIGlmIGl0IHdvdWxkIGJlIGVt
cHR5LgorICAqIElmIGBGb29gIGhhcyBhIGNvbnN0IG5vbi1zdGF0aWMgZGF0YSBtZW1iZXIsIHRo
ZW4geW91IGhhdmUgdG8gZGVmaW5lIHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIF9hbmRfIGluaXRp
YWxpemUgdGhlIGNvbnN0IG1lbWJlciBpbiB0aGUgaW5pdGlhbGl6ZXIgbGlzdCBvZiB0aGUgY29u
c3RydWN0b3IuIChFYXJseSB2ZXJzaW9ucyBvZiBgZ2NjYCBkb2Vzbid0IGZvcmNlIHlvdSB0byBp
bml0aWFsaXplIHRoZSBjb25zdCBtZW1iZXIuIEl0J3MgYSBidWcgdGhhdCBoYXMgYmVlbiBmaXhl
ZCBpbiBgZ2NjIDRgLikKKworIyMgV2h5IGRvZXMgQVNTRVJUXF9ERUFUSCBjb21wbGFpbiBhYm91
dCBwcmV2aW91cyB0aHJlYWRzIHRoYXQgd2VyZSBhbHJlYWR5IGpvaW5lZD8gIyMKKworV2l0aCB0
aGUgTGludXggcHRocmVhZCBsaWJyYXJ5LCB0aGVyZSBpcyBubyB0dXJuaW5nIGJhY2sgb25jZSB5
b3UgY3Jvc3MgdGhlCitsaW5lIGZyb20gc2luZ2xlIHRocmVhZCB0byBtdWx0aXBsZSB0aHJlYWRz
LiBUaGUgZmlyc3QgdGltZSB5b3UgY3JlYXRlIGEKK3RocmVhZCwgYSBtYW5hZ2VyIHRocmVhZCBp
cyBjcmVhdGVkIGluIGFkZGl0aW9uLCBzbyB5b3UgZ2V0IDMsIG5vdCAyLCB0aHJlYWRzLgorTGF0
ZXIgd2hlbiB0aGUgdGhyZWFkIHlvdSBjcmVhdGUgam9pbnMgdGhlIG1haW4gdGhyZWFkLCB0aGUg
dGhyZWFkIGNvdW50CitkZWNyZW1lbnRzIGJ5IDEsIGJ1dCB0aGUgbWFuYWdlciB0aHJlYWQgd2ls
bCBuZXZlciBiZSBraWxsZWQsIHNvIHlvdSBzdGlsbCBoYXZlCisyIHRocmVhZHMsIHdoaWNoIG1l
YW5zIHlvdSBjYW5ub3Qgc2FmZWx5IHJ1biBhIGRlYXRoIHRlc3QuCisKK1RoZSBuZXcgTlBUTCB0
aHJlYWQgbGlicmFyeSBkb2Vzbid0IHN1ZmZlciBmcm9tIHRoaXMgcHJvYmxlbSwgYXMgaXQgZG9l
c24ndAorY3JlYXRlIGEgbWFuYWdlciB0aHJlYWQuIEhvd2V2ZXIsIGlmIHlvdSBkb24ndCBjb250
cm9sIHdoaWNoIG1hY2hpbmUgeW91ciB0ZXN0CitydW5zIG9uLCB5b3Ugc2hvdWxkbid0IGRlcGVu
ZCBvbiB0aGlzLgorCisjIyBXaHkgZG9lcyBHb29nbGUgVGVzdCByZXF1aXJlIHRoZSBlbnRpcmUg
dGVzdCBjYXNlLCBpbnN0ZWFkIG9mIGluZGl2aWR1YWwgdGVzdHMsIHRvIGJlIG5hbWVkIEZPT0Rl
YXRoVGVzdCB3aGVuIGl0IHVzZXMgQVNTRVJUXF9ERUFUSD8gIyMKKworR29vZ2xlIFRlc3QgZG9l
cyBub3QgaW50ZXJsZWF2ZSB0ZXN0cyBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLiBUaGF0IGlz
LCBpdAorcnVucyBhbGwgdGVzdHMgaW4gb25lIHRlc3QgY2FzZSBmaXJzdCwgYW5kIHRoZW4gcnVu
cyBhbGwgdGVzdHMgaW4gdGhlIG5leHQgdGVzdAorY2FzZSwgYW5kIHNvIG9uLiBHb29nbGUgVGVz
dCBkb2VzIHRoaXMgYmVjYXVzZSBpdCBuZWVkcyB0byBzZXQgdXAgYSB0ZXN0IGNhc2UKK2JlZm9y
ZSB0aGUgZmlyc3QgdGVzdCBpbiBpdCBpcyBydW4sIGFuZCB0ZWFyIGl0IGRvd24gYWZ0ZXJ3b3Jk
cy4gU3BsaXR0aW5nIHVwCit0aGUgdGVzdCBjYXNlIHdvdWxkIHJlcXVpcmUgbXVsdGlwbGUgc2V0
LXVwIGFuZCB0ZWFyLWRvd24gcHJvY2Vzc2VzLCB3aGljaCBpcworaW5lZmZpY2llbnQgYW5kIG1h
a2VzIHRoZSBzZW1hbnRpY3MgdW5jbGVhbi4KKworSWYgd2Ugd2VyZSB0byBkZXRlcm1pbmUgdGhl
IG9yZGVyIG9mIHRlc3RzIGJhc2VkIG9uIHRlc3QgbmFtZSBpbnN0ZWFkIG9mIHRlc3QKK2Nhc2Ug
bmFtZSwgdGhlbiB3ZSB3b3VsZCBoYXZlIGEgcHJvYmxlbSB3aXRoIHRoZSBmb2xsb3dpbmcgc2l0
dWF0aW9uOgorCitgYGAKK1RFU1RfRihGb29UZXN0LCBBYmNEZWF0aFRlc3QpIHsgLi4uIH0KK1RF
U1RfRihGb29UZXN0LCBVdncpIHsgLi4uIH0KKworVEVTVF9GKEJhclRlc3QsIERlZkRlYXRoVGVz
dCkgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIFh5eikgeyAuLi4gfQorYGBgCisKK1NpbmNlIGBG
b29UZXN0LkFiY0RlYXRoVGVzdGAgbmVlZHMgdG8gcnVuIGJlZm9yZSBgQmFyVGVzdC5YeXpgLCBh
bmQgd2UgZG9uJ3QKK2ludGVybGVhdmUgdGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcywg
d2UgbmVlZCB0byBydW4gYWxsIHRlc3RzIGluIHRoZQorYEZvb1Rlc3RgIGNhc2UgYmVmb3JlIHJ1
bm5pbmcgYW55IHRlc3QgaW4gdGhlIGBCYXJUZXN0YCBjYXNlLiBUaGlzIGNvbnRyYWRpY3RzCit3
aXRoIHRoZSByZXF1aXJlbWVudCB0byBydW4gYEJhclRlc3QuRGVmRGVhdGhUZXN0YCBiZWZvcmUg
YEZvb1Rlc3QuVXZ3YC4KKworIyMgQnV0IEkgZG9uJ3QgbGlrZSBjYWxsaW5nIG15IGVudGlyZSB0
ZXN0IGNhc2UgRk9PRGVhdGhUZXN0IHdoZW4gaXQgY29udGFpbnMgYm90aCBkZWF0aCB0ZXN0cyBh
bmQgbm9uLWRlYXRoIHRlc3RzLiBXaGF0IGRvIEkgZG8/ICMjCisKK1lvdSBkb24ndCBoYXZlIHRv
LCBidXQgaWYgeW91IGxpa2UsIHlvdSBtYXkgc3BsaXQgdXAgdGhlIHRlc3QgY2FzZSBpbnRvCitg
Rm9vVGVzdGAgYW5kIGBGb29EZWF0aFRlc3RgLCB3aGVyZSB0aGUgbmFtZXMgbWFrZSBpdCBjbGVh
ciB0aGF0IHRoZXkgYXJlCityZWxhdGVkOgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07CisKK1RFU1RfRihGb29UZXN0LCBBYmMpIHsgLi4uIH0K
K1RFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0KKwordHlwZWRlZiBGb29UZXN0IEZvb0RlYXRo
VGVzdDsKKworVEVTVF9GKEZvb0RlYXRoVGVzdCwgVXZ3KSB7IC4uLiBFWFBFQ1RfREVBVEgoLi4u
KSAuLi4gfQorVEVTVF9GKEZvb0RlYXRoVGVzdCwgWHl6KSB7IC4uLiBBU1NFUlRfREVBVEgoLi4u
KSAuLi4gfQorYGBgCisKKyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgIm5vIG1hdGNo
IGZvciAnb3BlcmF0b3I8PCciIHdoZW4gSSB1c2UgYW4gYXNzZXJ0aW9uLiBXaGF0IGdpdmVzPyAj
IworCitJZiB5b3UgdXNlIGEgdXNlci1kZWZpbmVkIHR5cGUgYEZvb1R5cGVgIGluIGFuIGFzc2Vy
dGlvbiwgeW91IG11c3QgbWFrZSBzdXJlCit0aGVyZSBpcyBhbiBgc3RkOjpvc3RyZWFtJiBvcGVy
YXRvcjw8KHN0ZDo6b3N0cmVhbSYsIGNvbnN0IEZvb1R5cGUmKWAgZnVuY3Rpb24KK2RlZmluZWQg
c3VjaCB0aGF0IHdlIGNhbiBwcmludCBhIHZhbHVlIG9mIGBGb29UeXBlYC4KKworSW4gYWRkaXRp
b24sIGlmIGBGb29UeXBlYCBpcyBkZWNsYXJlZCBpbiBhIG5hbWUgc3BhY2UsIHRoZSBgPDxgIG9w
ZXJhdG9yIGFsc28KK25lZWRzIHRvIGJlIGRlZmluZWQgaW4gdGhlIF9zYW1lXyBuYW1lIHNwYWNl
LgorCisjIyBIb3cgZG8gSSBzdXBwcmVzcyB0aGUgbWVtb3J5IGxlYWsgbWVzc2FnZXMgb24gV2lu
ZG93cz8gIyMKKworU2luY2UgdGhlIHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQgR29vZ2xlIFRlc3Qg
c2luZ2xldG9uIHJlcXVpcmVzIGFsbG9jYXRpb25zIG9uCit0aGUgaGVhcCwgdGhlIFZpc3VhbCBD
KysgbWVtb3J5IGxlYWsgZGV0ZWN0b3Igd2lsbCByZXBvcnQgbWVtb3J5IGxlYWtzIGF0IHRoZQor
ZW5kIG9mIHRoZSBwcm9ncmFtIHJ1bi4gVGhlIGVhc2llc3Qgd2F5IHRvIGF2b2lkIHRoaXMgaXMg
dG8gdXNlIHRoZQorYF9DcnRNZW1DaGVja3BvaW50YCBhbmQgYF9DcnRNZW1EdW1wQWxsT2JqZWN0
c1NpbmNlYCBjYWxscyB0byBub3QgcmVwb3J0IGFueQorc3RhdGljYWxseSBpbml0aWFsaXplZCBo
ZWFwIG9iamVjdHMuIFNlZSBNU0ROIGZvciBtb3JlIGRldGFpbHMgYW5kIGFkZGl0aW9uYWwKK2hl
YXAgY2hlY2svZGVidWcgcm91dGluZXMuCisKKyMjIEkgYW0gYnVpbGRpbmcgbXkgcHJvamVjdCB3
aXRoIEdvb2dsZSBUZXN0IGluIFZpc3VhbCBTdHVkaW8gYW5kIGFsbCBJJ20gZ2V0dGluZyBpcyBh
IGJ1bmNoIG9mIGxpbmtlciBlcnJvcnMgKG9yIHdhcm5pbmdzKS4gSGVscCEgIyMKKworWW91IG1h
eSBnZXQgYSBudW1iZXIgb2YgdGhlIGZvbGxvd2luZyBsaW5rZXIgZXJyb3Igb3Igd2FybmluZ3Mg
aWYgeW91CithdHRlbXB0IHRvIGxpbmsgeW91ciB0ZXN0IHByb2plY3Qgd2l0aCB0aGUgR29vZ2xl
IFRlc3QgbGlicmFyeSB3aGVuCit5b3VyIHByb2plY3QgYW5kIHRoZSBhcmUgbm90IGJ1aWx0IHVz
aW5nIHRoZSBzYW1lIGNvbXBpbGVyIHNldHRpbmdzLgorCisgICogTE5LMjAwNTogc3ltYm9sIGFs
cmVhZHkgZGVmaW5lZCBpbiBvYmplY3QKKyAgKiBMTks0MjE3OiBsb2NhbGx5IGRlZmluZWQgc3lt
Ym9sICdzeW1ib2wnIGltcG9ydGVkIGluIGZ1bmN0aW9uICdmdW5jdGlvbicKKyAgKiBMTks0MDQ5
OiBsb2NhbGx5IGRlZmluZWQgc3ltYm9sICdzeW1ib2wnIGltcG9ydGVkCisKK1RoZSBHb29nbGUg
VGVzdCBwcm9qZWN0IChndGVzdC52Y3Byb2opIGhhcyB0aGUgUnVudGltZSBMaWJyYXJ5IG9wdGlv
bgorc2V0IHRvIC9NVCAodXNlIG11bHRpLXRocmVhZGVkIHN0YXRpYyBsaWJyYXJpZXMsIC9NVGQg
Zm9yIGRlYnVnKS4gSWYKK3lvdXIgcHJvamVjdCB1c2VzIHNvbWV0aGluZyBlbHNlLCBmb3IgZXhh
bXBsZSAvTUQgKHVzZSBtdWx0aS10aHJlYWRlZAorRExMcywgL01EZCBmb3IgZGVidWcpLCB5b3Ug
bmVlZCB0byBjaGFuZ2UgdGhlIHNldHRpbmcgaW4gdGhlIEdvb2dsZQorVGVzdCBwcm9qZWN0IHRv
IG1hdGNoIHlvdXIgcHJvamVjdCdzLgorCitUbyB1cGRhdGUgdGhpcyBzZXR0aW5nIG9wZW4gdGhl
IHByb2plY3QgcHJvcGVydGllcyBpbiB0aGUgVmlzdWFsCitTdHVkaW8gSURFIHRoZW4gc2VsZWN0
IHRoZSBicmFuY2ggQ29uZmlndXJhdGlvbiBQcm9wZXJ0aWVzIHwgQy9DKysgfAorQ29kZSBHZW5l
cmF0aW9uIGFuZCBjaGFuZ2UgdGhlIG9wdGlvbiAiUnVudGltZSBMaWJyYXJ5Ii4gIFlvdSBtYXkg
YWxzbyB0cnkKK3VzaW5nIGd0ZXN0LW1kLnZjcHJvaiBpbnN0ZWFkIG9mIGd0ZXN0LnZjcHJvai4K
KworIyMgSSBwdXQgbXkgdGVzdHMgaW4gYSBsaWJyYXJ5IGFuZCBHb29nbGUgVGVzdCBkb2Vzbid0
IHJ1biB0aGVtLiBXaGF0J3MgaGFwcGVuaW5nPyAjIworSGF2ZSB5b3UgcmVhZCBhCitbd2Fybmlu
Z10oVjFfNl9QcmltZXIubWQjaW1wb3J0YW50LW5vdGUtZm9yLXZpc3VhbC1jLXVzZXJzKSBvbgor
dGhlIEdvb2dsZSBUZXN0IFByaW1lciBwYWdlPworCisjIyBJIHdhbnQgdG8gdXNlIEdvb2dsZSBU
ZXN0IHdpdGggVmlzdWFsIFN0dWRpbyBidXQgZG9uJ3Qga25vdyB3aGVyZSB0byBzdGFydC4gIyMK
K01hbnkgcGVvcGxlIGFyZSBpbiB5b3VyIHBvc2l0aW9uIGFuZCBvbmUgb2YgdGhlIHBvc3RlZCBo
aXMgc29sdXRpb24gdG8KK291ciBtYWlsaW5nIGxpc3QuIEhlcmUgaXMgaGlzIGxpbms6CitodHRw
Oi8vaGFzc2FuamFtaWxhaG1hZC5ibG9nc3BvdC5jb20vMjAwOS8wNy9ndGVzdC1zdGFydGVycy1o
ZWxwLmh0bWwuCisKKyMjIEkgYW0gc2VlaW5nIGNvbXBpbGUgZXJyb3JzIG1lbnRpb25pbmcgc3Rk
Ojp0eXBlXF90cmFpdHMgd2hlbiBJIHRyeSB0byB1c2UgR29vZ2xlIFRlc3Qgb24gU29sYXJpcy4g
IyMKK0dvb2dsZSBUZXN0IHVzZXMgcGFydHMgb2YgdGhlIHN0YW5kYXJkIEMrKyBsaWJyYXJ5IHRo
YXQgU3VuU3R1ZGlvIGRvZXMgbm90IHN1cHBvcnQuCitPdXIgdXNlcnMgcmVwb3J0ZWQgc3VjY2Vz
cyB1c2luZyBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbnMuIFRyeSBydW5uaW5nIHRoZSBidWls
ZCBhZnRlciBydW5pbmcgdGhpcyBjb21tYWQ6CisKK2BleHBvcnQgQ0M9Y2MgQ1hYPUNDIENYWEZM
QUdTPSctbGlicmFyeT1zdGxwb3J0NCdgCisKKyMjIEhvdyBjYW4gbXkgY29kZSBkZXRlY3QgaWYg
aXQgaXMgcnVubmluZyBpbiBhIHRlc3Q/ICMjCisKK0lmIHlvdSB3cml0ZSBjb2RlIHRoYXQgc25p
ZmZzIHdoZXRoZXIgaXQncyBydW5uaW5nIGluIGEgdGVzdCBhbmQgZG9lcworZGlmZmVyZW50IHRo
aW5ncyBhY2NvcmRpbmdseSwgeW91IGFyZSBsZWFraW5nIHRlc3Qtb25seSBsb2dpYyBpbnRvCitw
cm9kdWN0aW9uIGNvZGUgYW5kIHRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIGVuc3VyZSB0aGF0IHRo
ZSB0ZXN0LW9ubHkKK2NvZGUgcGF0aHMgYXJlbid0IHJ1biBieSBtaXN0YWtlIGluIHByb2R1Y3Rp
b24uICBTdWNoIGNsZXZlcm5lc3MgYWxzbworbGVhZHMgdG8KK1tIZWlzZW5idWdzXShodHRwOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL1VudXN1YWxfc29mdHdhcmVfYnVnI0hlaXNlbmJ1ZykuCitU
aGVyZWZvcmUgd2Ugc3Ryb25nbHkgYWR2aXNlIGFnYWluc3QgdGhlIHByYWN0aWNlLCBhbmQgR29v
Z2xlIFRlc3QgZG9lc24ndAorcHJvdmlkZSBhIHdheSB0byBkbyBpdC4KKworSW4gZ2VuZXJhbCwg
dGhlIHJlY29tbWVuZGVkIHdheSB0byBjYXVzZSB0aGUgY29kZSB0byBiZWhhdmUKK2RpZmZlcmVu
dGx5IHVuZGVyIHRlc3QgaXMgW2RlcGVuZGVuY3kgaW5qZWN0aW9uXShodHRwOi8vamFtZXNzaG9y
ZS5jb20vQmxvZy9EZXBlbmRlbmN5LUluamVjdGlvbi1EZW15c3RpZmllZC5odG1sKS4KK1lvdSBj
YW4gaW5qZWN0IGRpZmZlcmVudCBmdW5jdGlvbmFsaXR5IGZyb20gdGhlIHRlc3QgYW5kIGZyb20g
dGhlCitwcm9kdWN0aW9uIGNvZGUuICBTaW5jZSB5b3VyIHByb2R1Y3Rpb24gY29kZSBkb2Vzbid0
IGxpbmsgaW4gdGhlCitmb3ItdGVzdCBsb2dpYyBhdCBhbGwsIHRoZXJlIGlzIG5vIGRhbmdlciBp
biBhY2NpZGVudGFsbHkgcnVubmluZyBpdC4KKworSG93ZXZlciwgaWYgeW91IF9yZWFsbHlfLCBf
cmVhbGx5XywgX3JlYWxseV8gaGF2ZSBubyBjaG9pY2UsIGFuZCBpZgoreW91IGZvbGxvdyB0aGUg
cnVsZSBvZiBlbmRpbmcgeW91ciB0ZXN0IHByb2dyYW0gbmFtZXMgd2l0aCBgX3Rlc3RgLAoreW91
IGNhbiB1c2UgdGhlIF9ob3JyaWJsZV8gaGFjayBvZiBzbmlmZmluZyB5b3VyIGV4ZWN1dGFibGUg
bmFtZQorKGBhcmd2WzBdYCBpbiBgbWFpbigpYCkgdG8ga25vdyB3aGV0aGVyIHRoZSBjb2RlIGlz
IHVuZGVyIHRlc3QuCisKKyMjIEdvb2dsZSBUZXN0IGRlZmluZXMgYSBtYWNybyB0aGF0IGNsYXNo
ZXMgd2l0aCBvbmUgZGVmaW5lZCBieSBhbm90aGVyIGxpYnJhcnkuIEhvdyBkbyBJIGRlYWwgd2l0
aCB0aGF0PyAjIworCitJbiBDKyssIG1hY3JvcyBkb24ndCBvYmV5IG5hbWVzcGFjZXMuICBUaGVy
ZWZvcmUgdHdvIGxpYnJhcmllcyB0aGF0Citib3RoIGRlZmluZSBhIG1hY3JvIG9mIHRoZSBzYW1l
IG5hbWUgd2lsbCBjbGFzaCBpZiB5b3UgYCNpbmNsdWRlYCBib3RoCitkZWZpbml0aW9ucy4gIElu
IGNhc2UgYSBHb29nbGUgVGVzdCBtYWNybyBjbGFzaGVzIHdpdGggYW5vdGhlcgorbGlicmFyeSwg
eW91IGNhbiBmb3JjZSBHb29nbGUgVGVzdCB0byByZW5hbWUgaXRzIG1hY3JvIHRvIGF2b2lkIHRo
ZQorY29uZmxpY3QuCisKK1NwZWNpZmljYWxseSwgaWYgYm90aCBHb29nbGUgVGVzdCBhbmQgc29t
ZSBvdGhlciBjb2RlIGRlZmluZSBtYWNybworYEZPT2AsIHlvdSBjYW4gYWRkCitgYGAKKyAgLURH
VEVTVF9ET05UX0RFRklORV9GT089MQorYGBgCit0byB0aGUgY29tcGlsZXIgZmxhZ3MgdG8gdGVs
bCBHb29nbGUgVGVzdCB0byBjaGFuZ2UgdGhlIG1hY3JvJ3MgbmFtZQorZnJvbSBgRk9PYCB0byBg
R1RFU1RfRk9PYC4gRm9yIGV4YW1wbGUsIHdpdGggYC1ER1RFU1RfRE9OVF9ERUZJTkVfVEVTVD0x
YCwgeW91J2xsIG5lZWQgdG8gd3JpdGUKK2BgYAorICBHVEVTVF9URVNUKFNvbWVUZXN0LCBEb2Vz
VGhpcykgeyAuLi4gfQorYGBgCitpbnN0ZWFkIG9mCitgYGAKKyAgVEVTVChTb21lVGVzdCwgRG9l
c1RoaXMpIHsgLi4uIH0KK2BgYAoraW4gb3JkZXIgdG8gZGVmaW5lIGEgdGVzdC4KKworQ3VycmVu
dGx5LCB0aGUgZm9sbG93aW5nIGBURVNUYCwgYEZBSUxgLCBgU1VDQ0VFRGAsIGFuZCB0aGUgYmFz
aWMgY29tcGFyaXNvbiBhc3NlcnRpb24gbWFjcm9zIGNhbiBoYXZlIGFsdGVybmF0aXZlIG5hbWVz
LiBZb3UgY2FuIHNlZSB0aGUgZnVsbCBsaXN0IG9mIGNvdmVyZWQgbWFjcm9zIFtoZXJlXShodHRw
Oi8vd3d3Lmdvb2dsZS5jb20vY29kZXNlYXJjaD9xPWlmKyFHVEVTVF9ET05UX0RFRklORV9cdyUy
QitwYWNrYWdlOmh0dHA6Ly9nb29nbGV0ZXN0XC5nb29nbGVjb2RlXC5jb20rZmlsZTovaW5jbHVk
ZS9ndGVzdC9ndGVzdC5oKS4gTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gdGhlICJB
dm9pZGluZyBNYWNybyBOYW1lIENsYXNoZXMiIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBmaWxlLgor
CisjIyBNeSBxdWVzdGlvbiBpcyBub3QgY292ZXJlZCBpbiB5b3VyIEZBUSEgIyMKKworSWYgeW91
IGNhbm5vdCBmaW5kIHRoZSBhbnN3ZXIgdG8geW91ciBxdWVzdGlvbiBpbiB0aGlzIEZBUSwgdGhl
cmUgYXJlCitzb21lIG90aGVyIHJlc291cmNlcyB5b3UgY2FuIHVzZToKKworICAxLiByZWFkIG90
aGVyIFt3aWtpIHBhZ2VzXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC93L2xp
c3QpLAorICAxLiBzZWFyY2ggdGhlIG1haWxpbmcgbGlzdCBbYXJjaGl2ZV0oaHR0cDovL2dyb3Vw
cy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZXRlc3RmcmFtZXdvcmsvdG9waWNzKSwKKyAgMS4gYXNr
IGl0IG9uIFtnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb21dKG1haWx0bzpnb29n
bGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20pIGFuZCBzb21lb25lIHdpbGwgYW5zd2Vy
IGl0ICh0byBwcmV2ZW50IHNwYW0sIHdlIHJlcXVpcmUgeW91IHRvIGpvaW4gdGhlIFtkaXNjdXNz
aW9uIGdyb3VwXShodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xldGVzdGZyYW1l
d29yaykgYmVmb3JlIHlvdSBjYW4gcG9zdC4pLgorCitQbGVhc2Ugbm90ZSB0aGF0IGNyZWF0aW5n
IGFuIGlzc3VlIGluIHRoZQorW2lzc3VlIHRyYWNrZXJdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20v
cC9nb29nbGV0ZXN0L2lzc3Vlcy9saXN0KSBpcyBfbm90XworYSBnb29kIHdheSB0byBnZXQgeW91
ciBhbnN3ZXIsIGFzIGl0IGlzIG1vbml0b3JlZCBpbmZyZXF1ZW50bHkgYnkgYQordmVyeSBzbWFs
bCBudW1iZXIgb2YgcGVvcGxlLgorCitXaGVuIGFza2luZyBhIHF1ZXN0aW9uLCBpdCdzIGhlbHBm
dWwgdG8gcHJvdmlkZSBhcyBtdWNoIG9mIHRoZQorZm9sbG93aW5nIGluZm9ybWF0aW9uIGFzIHBv
c3NpYmxlIChwZW9wbGUgY2Fubm90IGhlbHAgeW91IGlmIHRoZXJlJ3MKK25vdCBlbm91Z2ggaW5m
b3JtYXRpb24gaW4geW91ciBxdWVzdGlvbik6CisKKyAgKiB0aGUgdmVyc2lvbiAob3IgdGhlIHJl
dmlzaW9uIG51bWJlciBpZiB5b3UgY2hlY2sgb3V0IGZyb20gU1ZOIGRpcmVjdGx5KSBvZiBHb29n
bGUgVGVzdCB5b3UgdXNlIChHb29nbGUgVGVzdCBpcyB1bmRlciBhY3RpdmUgZGV2ZWxvcG1lbnQs
IHNvIGl0J3MgcG9zc2libGUgdGhhdCB5b3VyIHByb2JsZW0gaGFzIGJlZW4gc29sdmVkIGluIGEg
bGF0ZXIgdmVyc2lvbiksCisgICogeW91ciBvcGVyYXRpbmcgc3lzdGVtLAorICAqIHRoZSBuYW1l
IGFuZCB2ZXJzaW9uIG9mIHlvdXIgY29tcGlsZXIsCisgICogdGhlIGNvbXBsZXRlIGNvbW1hbmQg
bGluZSBmbGFncyB5b3UgZ2l2ZSB0byB5b3VyIGNvbXBpbGVyLAorICAqIHRoZSBjb21wbGV0ZSBj
b21waWxlciBlcnJvciBtZXNzYWdlcyAoaWYgdGhlIHF1ZXN0aW9uIGlzIGFib3V0IGNvbXBpbGF0
aW9uKSwKKyAgKiB0aGUgX2FjdHVhbF8gY29kZSAoaWRlYWxseSwgYSBtaW5pbWFsIGJ1dCBjb21w
bGV0ZSBwcm9ncmFtKSB0aGF0IGhhcyB0aGUgcHJvYmxlbSB5b3UgZW5jb3VudGVyLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV82X1ByaW1lci5tZCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfNl9QcmltZXIubWQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQ4NDBl
ZjQ1YjljYTU3ZjE1YjA5NzQ0ZjNiODBhYTE3ZjA5NjQ2YQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfNl9QcmltZXIubWQKQEAgLTAsMCArMSw1MDEg
QEAKKworCisjIEludHJvZHVjdGlvbjogV2h5IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcms/
ICMKKworX0dvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmtfIGhlbHBzIHlvdSB3cml0ZSBiZXR0
ZXIgQysrIHRlc3RzLgorCitObyBtYXR0ZXIgd2hldGhlciB5b3Ugd29yayBvbiBMaW51eCwgV2lu
ZG93cywgb3IgYSBNYWMsIGlmIHlvdSB3cml0ZSBDKysgY29kZSwKK0dvb2dsZSBUZXN0IGNhbiBo
ZWxwIHlvdS4KKworU28gd2hhdCBtYWtlcyBhIGdvb2QgdGVzdCwgYW5kIGhvdyBkb2VzIEdvb2ds
ZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgZml0IGluPyBXZSBiZWxpZXZlOgorICAxLiBUZXN0cyBz
aG91bGQgYmUgX2luZGVwZW5kZW50XyBhbmQgX3JlcGVhdGFibGVfLiBJdCdzIGEgcGFpbiB0byBk
ZWJ1ZyBhIHRlc3QgdGhhdCBzdWNjZWVkcyBvciBmYWlscyBhcyBhIHJlc3VsdCBvZiBvdGhlciB0
ZXN0cy4gIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgaXNvbGF0ZXMgdGhlIHRlc3RzIGJ5
IHJ1bm5pbmcgZWFjaCBvZiB0aGVtIG9uIGEgZGlmZmVyZW50IG9iamVjdC4gV2hlbiBhIHRlc3Qg
ZmFpbHMsIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgYWxsb3dzIHlvdSB0byBydW4gaXQg
aW4gaXNvbGF0aW9uIGZvciBxdWljayBkZWJ1Z2dpbmcuCisgIDEuIFRlc3RzIHNob3VsZCBiZSB3
ZWxsIF9vcmdhbml6ZWRfIGFuZCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3RlZCBj
b2RlLiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBncm91cHMgcmVsYXRlZCB0ZXN0cyBp
bnRvIHRlc3QgY2FzZXMgdGhhdCBjYW4gc2hhcmUgZGF0YSBhbmQgc3Vicm91dGluZXMuIFRoaXMg
Y29tbW9uIHBhdHRlcm4gaXMgZWFzeSB0byByZWNvZ25pemUgYW5kIG1ha2VzIHRlc3RzIGVhc3kg
dG8gbWFpbnRhaW4uIFN1Y2ggY29uc2lzdGVuY3kgaXMgZXNwZWNpYWxseSBoZWxwZnVsIHdoZW4g
cGVvcGxlIHN3aXRjaCBwcm9qZWN0cyBhbmQgc3RhcnQgdG8gd29yayBvbiBhIG5ldyBjb2RlIGJh
c2UuCisgIDEuIFRlc3RzIHNob3VsZCBiZSBfcG9ydGFibGVfIGFuZCBfcmV1c2FibGVfLiBUaGUg
b3Blbi1zb3VyY2UgY29tbXVuaXR5IGhhcyBhIGxvdCBvZiBjb2RlIHRoYXQgaXMgcGxhdGZvcm0t
bmV1dHJhbCwgaXRzIHRlc3RzIHNob3VsZCBhbHNvIGJlIHBsYXRmb3JtLW5ldXRyYWwuICBHb29n
bGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIHdvcmtzIG9uIGRpZmZlcmVudCBPU2VzLCB3aXRoIGRp
ZmZlcmVudCBjb21waWxlcnMgKGdjYywgTVNWQywgYW5kIG90aGVycyksIHdpdGggb3Igd2l0aG91
dCBleGNlcHRpb25zLCBzbyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIHRlc3RzIGNhbiBl
YXNpbHkgd29yayB3aXRoIGEgdmFyaWV0eSBvZiBjb25maWd1cmF0aW9ucy4gIChOb3RlIHRoYXQg
dGhlIGN1cnJlbnQgcmVsZWFzZSBvbmx5IGNvbnRhaW5zIGJ1aWxkIHNjcmlwdHMgZm9yIExpbnV4
IC0gd2UgYXJlIGFjdGl2ZWx5IHdvcmtpbmcgb24gc2NyaXB0cyBmb3Igb3RoZXIgcGxhdGZvcm1z
LikKKyAgMS4gV2hlbiB0ZXN0cyBmYWlsLCB0aGV5IHNob3VsZCBwcm92aWRlIGFzIG11Y2ggX2lu
Zm9ybWF0aW9uXyBhYm91dCB0aGUgcHJvYmxlbSBhcyBwb3NzaWJsZS4gR29vZ2xlIEMrKyBUZXN0
aW5nIEZyYW1ld29yayBkb2Vzbid0IHN0b3AgYXQgdGhlIGZpcnN0IHRlc3QgZmFpbHVyZS4gSW5z
dGVhZCwgaXQgb25seSBzdG9wcyB0aGUgY3VycmVudCB0ZXN0IGFuZCBjb250aW51ZXMgd2l0aCB0
aGUgbmV4dC4gWW91IGNhbiBhbHNvIHNldCB1cCB0ZXN0cyB0aGF0IHJlcG9ydCBub24tZmF0YWwg
ZmFpbHVyZXMgYWZ0ZXIgd2hpY2ggdGhlIGN1cnJlbnQgdGVzdCBjb250aW51ZXMuIFRodXMsIHlv
dSBjYW4gZGV0ZWN0IGFuZCBmaXggbXVsdGlwbGUgYnVncyBpbiBhIHNpbmdsZSBydW4tZWRpdC1j
b21waWxlIGN5Y2xlLgorICAxLiBUaGUgdGVzdGluZyBmcmFtZXdvcmsgc2hvdWxkIGxpYmVyYXRl
IHRlc3Qgd3JpdGVycyBmcm9tIGhvdXNla2VlcGluZyBjaG9yZXMgYW5kIGxldCB0aGVtIGZvY3Vz
IG9uIHRoZSB0ZXN0IF9jb250ZW50Xy4gIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgYXV0
b21hdGljYWxseSBrZWVwcyB0cmFjayBvZiBhbGwgdGVzdHMgZGVmaW5lZCwgYW5kIGRvZXNuJ3Qg
cmVxdWlyZSB0aGUgdXNlciB0byBlbnVtZXJhdGUgdGhlbSBpbiBvcmRlciB0byBydW4gdGhlbS4K
KyAgMS4gVGVzdHMgc2hvdWxkIGJlIF9mYXN0Xy4gV2l0aCBHb29nbGUgQysrIFRlc3RpbmcgRnJh
bWV3b3JrLCB5b3UgY2FuIHJldXNlIHNoYXJlZCByZXNvdXJjZXMgYWNyb3NzIHRlc3RzIGFuZCBw
YXkgZm9yIHRoZSBzZXQtdXAvdGVhci1kb3duIG9ubHkgb25jZSwgd2l0aG91dCBtYWtpbmcgdGVz
dHMgZGVwZW5kIG9uIGVhY2ggb3RoZXIuCisKK1NpbmNlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFt
ZXdvcmsgaXMgYmFzZWQgb24gdGhlIHBvcHVsYXIgeFVuaXQKK2FyY2hpdGVjdHVyZSwgeW91J2xs
IGZlZWwgcmlnaHQgYXQgaG9tZSBpZiB5b3UndmUgdXNlZCBKVW5pdCBvciBQeVVuaXQgYmVmb3Jl
LgorSWYgbm90LCBpdCB3aWxsIHRha2UgeW91IGFib3V0IDEwIG1pbnV0ZXMgdG8gbGVhcm4gdGhl
IGJhc2ljcyBhbmQgZ2V0IHN0YXJ0ZWQuCitTbyBsZXQncyBnbyEKKworX05vdGU6XyBXZSBzb21l
dGltZXMgcmVmZXIgdG8gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBpbmZvcm1hbGx5Cith
cyBfR29vZ2xlIFRlc3RfLgorCisjIFNldHRpbmcgdXAgYSBOZXcgVGVzdCBQcm9qZWN0ICMKKwor
VG8gd3JpdGUgYSB0ZXN0IHByb2dyYW0gdXNpbmcgR29vZ2xlIFRlc3QsIHlvdSBuZWVkIHRvIGNv
bXBpbGUgR29vZ2xlCitUZXN0IGludG8gYSBsaWJyYXJ5IGFuZCBsaW5rIHlvdXIgdGVzdCB3aXRo
IGl0LiAgV2UgcHJvdmlkZSBidWlsZAorZmlsZXMgZm9yIHNvbWUgcG9wdWxhciBidWlsZCBzeXN0
ZW1zOiBgbXN2Yy9gIGZvciBWaXN1YWwgU3R1ZGlvLAorYHhjb2RlL2AgZm9yIE1hYyBYY29kZSwg
YG1ha2UvYCBmb3IgR05VIG1ha2UsIGBjb2RlZ2Vhci9gIGZvciBCb3JsYW5kCitDKysgQnVpbGRl
ciwgYW5kIHRoZSBhdXRvdG9vbHMgc2NyaXB0IChkZXByZWNhdGVkKSBhbmQKK2BDTWFrZUxpc3Rz
LnR4dGAgZm9yIENNYWtlIChyZWNvbW1lbmRlZCkgaW4gdGhlIEdvb2dsZSBUZXN0IHJvb3QKK2Rp
cmVjdG9yeS4gIElmIHlvdXIgYnVpbGQgc3lzdGVtIGlzIG5vdCBvbiB0aGlzIGxpc3QsIHlvdSBj
YW4gdGFrZSBhCitsb29rIGF0IGBtYWtlL01ha2VmaWxlYCB0byBsZWFybiBob3cgR29vZ2xlIFRl
c3Qgc2hvdWxkIGJlIGNvbXBpbGVkCisoYmFzaWNhbGx5IHlvdSB3YW50IHRvIGNvbXBpbGUgYHNy
Yy9ndGVzdC1hbGwuY2NgIHdpdGggYEdURVNUX1JPT1RgCithbmQgYEdURVNUX1JPT1QvaW5jbHVk
ZWAgaW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0aCwgd2hlcmUgYEdURVNUX1JPT1RgCitpcyB0aGUg
R29vZ2xlIFRlc3Qgcm9vdCBkaXJlY3RvcnkpLgorCitPbmNlIHlvdSBhcmUgYWJsZSB0byBjb21w
aWxlIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5LCB5b3Ugc2hvdWxkCitjcmVhdGUgYSBwcm9qZWN0
IG9yIGJ1aWxkIHRhcmdldCBmb3IgeW91ciB0ZXN0IHByb2dyYW0uICBNYWtlIHN1cmUgeW91Cito
YXZlIGBHVEVTVF9ST09UL2luY2x1ZGVgIGluIHRoZSBoZWFkZXIgc2VhcmNoIHBhdGggc28gdGhh
dCB0aGUKK2NvbXBpbGVyIGNhbiBmaW5kIGAiZ3Rlc3QvZ3Rlc3QuaCJgIHdoZW4gY29tcGlsaW5n
IHlvdXIgdGVzdC4gIFNldCB1cAoreW91ciB0ZXN0IHByb2plY3QgdG8gbGluayB3aXRoIHRoZSBH
b29nbGUgVGVzdCBsaWJyYXJ5IChmb3IgZXhhbXBsZSwKK2luIFZpc3VhbCBTdHVkaW8sIHRoaXMg
aXMgZG9uZSBieSBhZGRpbmcgYSBkZXBlbmRlbmN5IG9uCitgZ3Rlc3QudmNwcm9qYCkuCisKK0lm
IHlvdSBzdGlsbCBoYXZlIHF1ZXN0aW9ucywgdGFrZSBhIGxvb2sgYXQgaG93IEdvb2dsZSBUZXN0
J3Mgb3duCit0ZXN0cyBhcmUgYnVpbHQgYW5kIHVzZSB0aGVtIGFzIGV4YW1wbGVzLgorCisjIEJh
c2ljIENvbmNlcHRzICMKKworV2hlbiB1c2luZyBHb29nbGUgVGVzdCwgeW91IHN0YXJ0IGJ5IHdy
aXRpbmcgX2Fzc2VydGlvbnNfLCB3aGljaCBhcmUgc3RhdGVtZW50cwordGhhdCBjaGVjayB3aGV0
aGVyIGEgY29uZGl0aW9uIGlzIHRydWUuIEFuIGFzc2VydGlvbidzIHJlc3VsdCBjYW4gYmUgX3N1
Y2Nlc3NfLAorX25vbmZhdGFsIGZhaWx1cmVfLCBvciBfZmF0YWwgZmFpbHVyZV8uIElmIGEgZmF0
YWwgZmFpbHVyZSBvY2N1cnMsIGl0IGFib3J0cwordGhlIGN1cnJlbnQgZnVuY3Rpb247IG90aGVy
d2lzZSB0aGUgcHJvZ3JhbSBjb250aW51ZXMgbm9ybWFsbHkuCisKK19UZXN0c18gdXNlIGFzc2Vy
dGlvbnMgdG8gdmVyaWZ5IHRoZSB0ZXN0ZWQgY29kZSdzIGJlaGF2aW9yLiBJZiBhIHRlc3QgY3Jh
c2hlcworb3IgaGFzIGEgZmFpbGVkIGFzc2VydGlvbiwgdGhlbiBpdCBfZmFpbHNfOyBvdGhlcndp
c2UgaXQgX3N1Y2NlZWRzXy4KKworQSBfdGVzdCBjYXNlXyBjb250YWlucyBvbmUgb3IgbWFueSB0
ZXN0cy4gWW91IHNob3VsZCBncm91cCB5b3VyIHRlc3RzIGludG8gdGVzdAorY2FzZXMgdGhhdCBy
ZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3RlZCBjb2RlLiBXaGVuIG11bHRpcGxlIHRl
c3RzIGluIGEKK3Rlc3QgY2FzZSBuZWVkIHRvIHNoYXJlIGNvbW1vbiBvYmplY3RzIGFuZCBzdWJy
b3V0aW5lcywgeW91IGNhbiBwdXQgdGhlbSBpbnRvIGEKK190ZXN0IGZpeHR1cmVfIGNsYXNzLgor
CitBIF90ZXN0IHByb2dyYW1fIGNhbiBjb250YWluIG11bHRpcGxlIHRlc3QgY2FzZXMuCisKK1dl
J2xsIG5vdyBleHBsYWluIGhvdyB0byB3cml0ZSBhIHRlc3QgcHJvZ3JhbSwgc3RhcnRpbmcgYXQg
dGhlIGluZGl2aWR1YWwKK2Fzc2VydGlvbiBsZXZlbCBhbmQgYnVpbGRpbmcgdXAgdG8gdGVzdHMg
YW5kIHRlc3QgY2FzZXMuCisKKyMgQXNzZXJ0aW9ucyAjCisKK0dvb2dsZSBUZXN0IGFzc2VydGlv
bnMgYXJlIG1hY3JvcyB0aGF0IHJlc2VtYmxlIGZ1bmN0aW9uIGNhbGxzLiBZb3UgdGVzdCBhCitj
bGFzcyBvciBmdW5jdGlvbiBieSBtYWtpbmcgYXNzZXJ0aW9ucyBhYm91dCBpdHMgYmVoYXZpb3Iu
IFdoZW4gYW4gYXNzZXJ0aW9uCitmYWlscywgR29vZ2xlIFRlc3QgcHJpbnRzIHRoZSBhc3NlcnRp
b24ncyBzb3VyY2UgZmlsZSBhbmQgbGluZSBudW1iZXIgbG9jYXRpb24sCithbG9uZyB3aXRoIGEg
ZmFpbHVyZSBtZXNzYWdlLiBZb3UgbWF5IGFsc28gc3VwcGx5IGEgY3VzdG9tIGZhaWx1cmUgbWVz
c2FnZQord2hpY2ggd2lsbCBiZSBhcHBlbmRlZCB0byBHb29nbGUgVGVzdCdzIG1lc3NhZ2UuCisK
K1RoZSBhc3NlcnRpb25zIGNvbWUgaW4gcGFpcnMgdGhhdCB0ZXN0IHRoZSBzYW1lIHRoaW5nIGJ1
dCBoYXZlIGRpZmZlcmVudAorZWZmZWN0cyBvbiB0aGUgY3VycmVudCBmdW5jdGlvbi4gYEFTU0VS
VF8qYCB2ZXJzaW9ucyBnZW5lcmF0ZSBmYXRhbCBmYWlsdXJlcword2hlbiB0aGV5IGZhaWwsIGFu
ZCAqKmFib3J0IHRoZSBjdXJyZW50IGZ1bmN0aW9uKiouIGBFWFBFQ1RfKmAgdmVyc2lvbnMgZ2Vu
ZXJhdGUKK25vbmZhdGFsIGZhaWx1cmVzLCB3aGljaCBkb24ndCBhYm9ydCB0aGUgY3VycmVudCBm
dW5jdGlvbi4gVXN1YWxseSBgRVhQRUNUXypgCithcmUgcHJlZmVycmVkLCBhcyB0aGV5IGFsbG93
IG1vcmUgdGhhbiBvbmUgZmFpbHVyZXMgdG8gYmUgcmVwb3J0ZWQgaW4gYSB0ZXN0LgorSG93ZXZl
ciwgeW91IHNob3VsZCB1c2UgYEFTU0VSVF8qYCBpZiBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8g
Y29udGludWUgd2hlbgordGhlIGFzc2VydGlvbiBpbiBxdWVzdGlvbiBmYWlscy4KKworU2luY2Ug
YSBmYWlsZWQgYEFTU0VSVF8qYCByZXR1cm5zIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gaW1t
ZWRpYXRlbHksCitwb3NzaWJseSBza2lwcGluZyBjbGVhbi11cCBjb2RlIHRoYXQgY29tZXMgYWZ0
ZXIgaXQsIGl0IG1heSBjYXVzZSBhIHNwYWNlIGxlYWsuCitEZXBlbmRpbmcgb24gdGhlIG5hdHVy
ZSBvZiB0aGUgbGVhaywgaXQgbWF5IG9yIG1heSBub3QgYmUgd29ydGggZml4aW5nIC0gc28KK2tl
ZXAgdGhpcyBpbiBtaW5kIGlmIHlvdSBnZXQgYSBoZWFwIGNoZWNrZXIgZXJyb3IgaW4gYWRkaXRp
b24gdG8gYXNzZXJ0aW9uCitlcnJvcnMuCisKK1RvIHByb3ZpZGUgYSBjdXN0b20gZmFpbHVyZSBt
ZXNzYWdlLCBzaW1wbHkgc3RyZWFtIGl0IGludG8gdGhlIG1hY3JvIHVzaW5nIHRoZQorYDw8YCBv
cGVyYXRvciwgb3IgYSBzZXF1ZW5jZSBvZiBzdWNoIG9wZXJhdG9ycy4gQW4gZXhhbXBsZToKK2Bg
YAorQVNTRVJUX0VRKHguc2l6ZSgpLCB5LnNpemUoKSkgPDwgIlZlY3RvcnMgeCBhbmQgeSBhcmUg
b2YgdW5lcXVhbCBsZW5ndGgiOworCitmb3IgKGludCBpID0gMDsgaSA8IHguc2l6ZSgpOyArK2kp
IHsKKyAgRVhQRUNUX0VRKHhbaV0sIHlbaV0pIDw8ICJWZWN0b3JzIHggYW5kIHkgZGlmZmVyIGF0
IGluZGV4ICIgPDwgaTsKK30KK2BgYAorCitBbnl0aGluZyB0aGF0IGNhbiBiZSBzdHJlYW1lZCB0
byBhbiBgb3N0cmVhbWAgY2FuIGJlIHN0cmVhbWVkIHRvIGFuIGFzc2VydGlvbgorbWFjcm8tLWlu
IHBhcnRpY3VsYXIsIEMgc3RyaW5ncyBhbmQgYHN0cmluZ2Agb2JqZWN0cy4gSWYgYSB3aWRlIHN0
cmluZworKGB3Y2hhcl90KmAsIGBUQ0hBUipgIGluIGBVTklDT0RFYCBtb2RlIG9uIFdpbmRvd3Ms
IG9yIGBzdGQ6OndzdHJpbmdgKSBpcworc3RyZWFtZWQgdG8gYW4gYXNzZXJ0aW9uLCBpdCB3aWxs
IGJlIHRyYW5zbGF0ZWQgdG8gVVRGLTggd2hlbiBwcmludGVkLgorCisjIyBCYXNpYyBBc3NlcnRp
b25zICMjCisKK1RoZXNlIGFzc2VydGlvbnMgZG8gYmFzaWMgdHJ1ZS9mYWxzZSBjb25kaXRpb24g
dGVzdGluZy4KK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiog
fCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfVFJVRShgX2NvbmRpdGlvbl9gKWA7
ICB8IGBFWFBFQ1RfVFJVRShgX2NvbmRpdGlvbl9gKWA7ICAgfCBfY29uZGl0aW9uXyBpcyB0cnVl
IHwKK3wgYEFTU0VSVF9GQUxTRShgX2NvbmRpdGlvbl9gKWA7IHwgYEVYUEVDVF9GQUxTRShgX2Nv
bmRpdGlvbl9gKWA7ICB8IF9jb25kaXRpb25fIGlzIGZhbHNlIHwKKworUmVtZW1iZXIsIHdoZW4g
dGhleSBmYWlsLCBgQVNTRVJUXypgIHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUgYW5kCityZXR1cm5z
IGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24sIHdoaWxlIGBFWFBFQ1RfKmAgeWllbGRzIGEgbm9u
ZmF0YWwKK2ZhaWx1cmUsIGFsbG93aW5nIHRoZSBmdW5jdGlvbiB0byBjb250aW51ZSBydW5uaW5n
LiBJbiBlaXRoZXIgY2FzZSwgYW4KK2Fzc2VydGlvbiBmYWlsdXJlIG1lYW5zIGl0cyBjb250YWlu
aW5nIHRlc3QgZmFpbHMuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgor
CisjIyBCaW5hcnkgQ29tcGFyaXNvbiAjIworCitUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGFzc2Vy
dGlvbnMgdGhhdCBjb21wYXJlIHR3byB2YWx1ZXMuCisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8
ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8YEFTU0VS
VF9FUShgX2V4cGVjdGVkX2AsIGBfYWN0dWFsX2ApO2B8YEVYUEVDVF9FUShgX2V4cGVjdGVkX2As
IGBfYWN0dWFsX2ApO2B8IF9leHBlY3RlZF8gYD09YCBfYWN0dWFsXyB8Cit8YEFTU0VSVF9ORShg
X3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9ORShgX3ZhbDFfYCwgYF92YWwyX2Ap
O2AgICAgICB8IF92YWwxXyBgIT1gIF92YWwyXyB8Cit8YEFTU0VSVF9MVChgX3ZhbDFfYCwgYF92
YWwyX2ApO2AgICAgICB8YEVYUEVDVF9MVChgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8IF92
YWwxXyBgPGAgX3ZhbDJfIHwKK3xgQVNTRVJUX0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAg
IHxgRVhQRUNUX0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA8PWAgX3Zh
bDJfIHwKK3xgQVNTRVJUX0dUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHxgRVhQRUNUX0dU
KGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA+YCBfdmFsMl8gfAorfGBBU1NF
UlRfR0UoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfGBFWFBFQ1RfR0UoYF92YWwxX2AsIGBf
dmFsMl9gKTtgICAgICAgfCBfdmFsMV8gYD49YCBfdmFsMl8gfAorCitJbiB0aGUgZXZlbnQgb2Yg
YSBmYWlsdXJlLCBHb29nbGUgVGVzdCBwcmludHMgYm90aCBfdmFsMV8gYW5kIF92YWwyXworLiBJ
biBgQVNTRVJUX0VRKmAgYW5kIGBFWFBFQ1RfRVEqYCAoYW5kIGFsbCBvdGhlciBlcXVhbGl0eSBh
c3NlcnRpb25zCit3ZSdsbCBpbnRyb2R1Y2UgbGF0ZXIpLCB5b3Ugc2hvdWxkIHB1dCB0aGUgZXhw
cmVzc2lvbiB5b3Ugd2FudCB0byB0ZXN0CitpbiB0aGUgcG9zaXRpb24gb2YgX2FjdHVhbF8sIGFu
ZCBwdXQgaXRzIGV4cGVjdGVkIHZhbHVlIGluIF9leHBlY3RlZF8sCithcyBHb29nbGUgVGVzdCdz
IGZhaWx1cmUgbWVzc2FnZXMgYXJlIG9wdGltaXplZCBmb3IgdGhpcyBjb252ZW50aW9uLgorCitW
YWx1ZSBhcmd1bWVudHMgbXVzdCBiZSBjb21wYXJhYmxlIGJ5IHRoZSBhc3NlcnRpb24ncyBjb21w
YXJpc29uCitvcGVyYXRvciBvciB5b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IuICBXZSB1c2Vk
IHRvIHJlcXVpcmUgdGhlCithcmd1bWVudHMgdG8gc3VwcG9ydCB0aGUgYDw8YCBvcGVyYXRvciBm
b3Igc3RyZWFtaW5nIHRvIGFuIGBvc3RyZWFtYCwKK2J1dCBpdCdzIG5vIGxvbmdlciBuZWNlc3Nh
cnkgc2luY2UgdjEuNi4wIChpZiBgPDxgIGlzIHN1cHBvcnRlZCwgaXQKK3dpbGwgYmUgY2FsbGVk
IHRvIHByaW50IHRoZSBhcmd1bWVudHMgd2hlbiB0aGUgYXNzZXJ0aW9uIGZhaWxzOworb3RoZXJ3
aXNlIEdvb2dsZSBUZXN0IHdpbGwgYXR0ZW1wdCB0byBwcmludCB0aGVtIGluIHRoZSBiZXN0IHdh
eSBpdAorY2FuLiBGb3IgbW9yZSBkZXRhaWxzIGFuZCBob3cgdG8gY3VzdG9taXplIHRoZSBwcmlu
dGluZyBvZiB0aGUKK2FyZ3VtZW50cywgc2VlIHRoaXMgR29vZ2xlIE1vY2sgW3JlY2lwZV0oLi4v
Li4vZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3RlYWNoaW5nLWdvb2dsZS1tb2NrLWhvdy10
by1wcmludC15b3VyLXZhbHVlcykuKS4KKworVGhlc2UgYXNzZXJ0aW9ucyBjYW4gd29yayB3aXRo
IGEgdXNlci1kZWZpbmVkIHR5cGUsIGJ1dCBvbmx5IGlmIHlvdSBkZWZpbmUgdGhlCitjb3JyZXNw
b25kaW5nIGNvbXBhcmlzb24gb3BlcmF0b3IgKGUuZy4gYD09YCwgYDxgLCBldGMpLiAgSWYgdGhl
IGNvcnJlc3BvbmRpbmcKK29wZXJhdG9yIGlzIGRlZmluZWQsIHByZWZlciB1c2luZyB0aGUgYEFT
U0VSVF8qKClgIG1hY3JvcyBiZWNhdXNlIHRoZXkgd2lsbAorcHJpbnQgb3V0IG5vdCBvbmx5IHRo
ZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24sIGJ1dCB0aGUgdHdvIG9wZXJhbmRzIGFzIHdlbGwu
CisKK0FyZ3VtZW50cyBhcmUgYWx3YXlzIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuIFRoZXJlZm9y
ZSwgaXQncyBPSyBmb3IgdGhlCithcmd1bWVudHMgdG8gaGF2ZSBzaWRlIGVmZmVjdHMuIEhvd2V2
ZXIsIGFzIHdpdGggYW55IG9yZGluYXJ5IEMvQysrIGZ1bmN0aW9uLAordGhlIGFyZ3VtZW50cycg
ZXZhbHVhdGlvbiBvcmRlciBpcyB1bmRlZmluZWQgKGkuZS4gdGhlIGNvbXBpbGVyIGlzIGZyZWUg
dG8KK2Nob29zZSBhbnkgb3JkZXIpIGFuZCB5b3VyIGNvZGUgc2hvdWxkIG5vdCBkZXBlbmQgb24g
YW55IHBhcnRpY3VsYXIgYXJndW1lbnQKK2V2YWx1YXRpb24gb3JkZXIuCisKK2BBU1NFUlRfRVEo
KWAgZG9lcyBwb2ludGVyIGVxdWFsaXR5IG9uIHBvaW50ZXJzLiBJZiB1c2VkIG9uIHR3byBDIHN0
cmluZ3MsIGl0Cit0ZXN0cyBpZiB0aGV5IGFyZSBpbiB0aGUgc2FtZSBtZW1vcnkgbG9jYXRpb24s
IG5vdCBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgdmFsdWUuCitUaGVyZWZvcmUsIGlmIHlvdSB3YW50
IHRvIGNvbXBhcmUgQyBzdHJpbmdzIChlLmcuIGBjb25zdCBjaGFyKmApIGJ5IHZhbHVlLCB1c2UK
K2BBU1NFUlRfU1RSRVEoKWAgLCB3aGljaCB3aWxsIGJlIGRlc2NyaWJlZCBsYXRlciBvbi4gSW4g
cGFydGljdWxhciwgdG8gYXNzZXJ0Cit0aGF0IGEgQyBzdHJpbmcgaXMgYE5VTExgLCB1c2UgYEFT
U0VSVF9TVFJFUShOVUxMLCBjX3N0cmluZylgIC4gSG93ZXZlciwgdG8KK2NvbXBhcmUgdHdvIGBz
dHJpbmdgIG9iamVjdHMsIHlvdSBzaG91bGQgdXNlIGBBU1NFUlRfRVFgLgorCitNYWNyb3MgaW4g
dGhpcyBzZWN0aW9uIHdvcmsgd2l0aCBib3RoIG5hcnJvdyBhbmQgd2lkZSBzdHJpbmcgb2JqZWN0
cyAoYHN0cmluZ2AKK2FuZCBgd3N0cmluZ2ApLgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdp
bmRvd3MsIE1hYy4KKworIyMgU3RyaW5nIENvbXBhcmlzb24gIyMKKworVGhlIGFzc2VydGlvbnMg
aW4gdGhpcyBncm91cCBjb21wYXJlIHR3byAqKkMgc3RyaW5ncyoqLiBJZiB5b3Ugd2FudCB0byBj
b21wYXJlCit0d28gYHN0cmluZ2Agb2JqZWN0cywgdXNlIGBFWFBFQ1RfRVFgLCBgRVhQRUNUX05F
YCwgYW5kIGV0YyBpbnN0ZWFkLgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFs
IGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX1NUUkVRKGBf
ZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgICAgfCBgRVhQRUNUX1NUUkVRKGBf
ZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgICAgIHwgdGhlIHR3byBDIHN0cmlu
Z3MgaGF2ZSB0aGUgc2FtZSBjb250ZW50IHwKK3wgYEFTU0VSVF9TVFJORShgX3N0cjFfYCwgYF9z
dHIyX2ApO2AgICAgfCBgRVhQRUNUX1NUUk5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YCAgICAgfCB0
aGUgdHdvIEMgc3RyaW5ncyBoYXZlIGRpZmZlcmVudCBjb250ZW50IHwKK3wgYEFTU0VSVF9TVFJD
QVNFRVEoYF9leHBlY3RlZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YHwgYEVYUEVDVF9TVFJD
QVNFRVEoYF9leHBlY3RlZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YCB8IHRoZSB0d28gQyBz
dHJpbmdzIGhhdmUgdGhlIHNhbWUgY29udGVudCwgaWdub3JpbmcgY2FzZSB8Cit8IGBBU1NFUlRf
U1RSQ0FTRU5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YHwgYEVYUEVDVF9TVFJDQVNFTkUoYF9zdHIx
X2AsIGBfc3RyMl9gKTtgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSBkaWZmZXJlbnQgY29udGVu
dCwgaWdub3JpbmcgY2FzZSB8CisKK05vdGUgdGhhdCAiQ0FTRSIgaW4gYW4gYXNzZXJ0aW9uIG5h
bWUgbWVhbnMgdGhhdCBjYXNlIGlzIGlnbm9yZWQuCisKK2AqU1RSRVEqYCBhbmQgYCpTVFJORSpg
IGFsc28gYWNjZXB0IHdpZGUgQyBzdHJpbmdzIChgd2NoYXJfdCpgKS4gSWYgYQorY29tcGFyaXNv
biBvZiB0d28gd2lkZSBzdHJpbmdzIGZhaWxzLCB0aGVpciB2YWx1ZXMgd2lsbCBiZSBwcmludGVk
IGFzIFVURi04CituYXJyb3cgc3RyaW5ncy4KKworQSBgTlVMTGAgcG9pbnRlciBhbmQgYW4gZW1w
dHkgc3RyaW5nIGFyZSBjb25zaWRlcmVkIF9kaWZmZXJlbnRfLgorCitfQXZhaWxhYmlsaXR5Xzog
TGludXgsIFdpbmRvd3MsIE1hYy4KKworU2VlIGFsc286IEZvciBtb3JlIHN0cmluZyBjb21wYXJp
c29uIHRyaWNrcyAoc3Vic3RyaW5nLCBwcmVmaXgsIHN1ZmZpeCwgYW5kCityZWd1bGFyIGV4cHJl
c3Npb24gbWF0Y2hpbmcsIGZvciBleGFtcGxlKSwgc2VlIHRoZSBbQWR2YW5jZWQgR29vZ2xlIFRl
c3QgR3VpZGVdKFYxXzZfQWR2YW5jZWRHdWlkZS5tZCkuCisKKyMgU2ltcGxlIFRlc3RzICMKKwor
VG8gY3JlYXRlIGEgdGVzdDoKKyAgMS4gVXNlIHRoZSBgVEVTVCgpYCBtYWNybyB0byBkZWZpbmUg
YW5kIG5hbWUgYSB0ZXN0IGZ1bmN0aW9uLCBUaGVzZSBhcmUgb3JkaW5hcnkgQysrIGZ1bmN0aW9u
cyB0aGF0IGRvbid0IHJldHVybiBhIHZhbHVlLgorICAxLiBJbiB0aGlzIGZ1bmN0aW9uLCBhbG9u
ZyB3aXRoIGFueSB2YWxpZCBDKysgc3RhdGVtZW50cyB5b3Ugd2FudCB0byBpbmNsdWRlLCB1c2Ug
dGhlIHZhcmlvdXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyB0byBjaGVjayB2YWx1ZXMuCisgIDEu
IFRoZSB0ZXN0J3MgcmVzdWx0IGlzIGRldGVybWluZWQgYnkgdGhlIGFzc2VydGlvbnM7IGlmIGFu
eSBhc3NlcnRpb24gaW4gdGhlIHRlc3QgZmFpbHMgKGVpdGhlciBmYXRhbGx5IG9yIG5vbi1mYXRh
bGx5KSwgb3IgaWYgdGhlIHRlc3QgY3Jhc2hlcywgdGhlIGVudGlyZSB0ZXN0IGZhaWxzLiBPdGhl
cndpc2UsIGl0IHN1Y2NlZWRzLgorCitgYGAKK1RFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFt
ZSkgeworIC4uLiB0ZXN0IGJvZHkgLi4uCit9CitgYGAKKworCitgVEVTVCgpYCBhcmd1bWVudHMg
Z28gZnJvbSBnZW5lcmFsIHRvIHNwZWNpZmljLiBUaGUgX2ZpcnN0XyBhcmd1bWVudCBpcyB0aGUK
K25hbWUgb2YgdGhlIHRlc3QgY2FzZSwgYW5kIHRoZSBfc2Vjb25kXyBhcmd1bWVudCBpcyB0aGUg
dGVzdCdzIG5hbWUgd2l0aGluIHRoZQordGVzdCBjYXNlLiBCb3RoIG5hbWVzIG11c3QgYmUgdmFs
aWQgQysrIGlkZW50aWZpZXJzLCBhbmQgdGhleSBzaG91bGQgbm90IGNvbnRhaW4gdW5kZXJzY29y
ZSAoYF9gKS4gQSB0ZXN0J3MgX2Z1bGwgbmFtZV8gY29uc2lzdHMgb2YgaXRzIGNvbnRhaW5pbmcg
dGVzdCBjYXNlIGFuZCBpdHMKK2luZGl2aWR1YWwgbmFtZS4gVGVzdHMgZnJvbSBkaWZmZXJlbnQg
dGVzdCBjYXNlcyBjYW4gaGF2ZSB0aGUgc2FtZSBpbmRpdmlkdWFsCituYW1lLgorCitGb3IgZXhh
bXBsZSwgbGV0J3MgdGFrZSBhIHNpbXBsZSBpbnRlZ2VyIGZ1bmN0aW9uOgorYGBgCitpbnQgRmFj
dG9yaWFsKGludCBuKTsgLy8gUmV0dXJucyB0aGUgZmFjdG9yaWFsIG9mIG4KK2BgYAorCitBIHRl
c3QgY2FzZSBmb3IgdGhpcyBmdW5jdGlvbiBtaWdodCBsb29rIGxpa2U6CitgYGAKKy8vIFRlc3Rz
IGZhY3RvcmlhbCBvZiAwLgorVEVTVChGYWN0b3JpYWxUZXN0LCBIYW5kbGVzWmVyb0lucHV0KSB7
CisgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoMCkpOworfQorCisvLyBUZXN0cyBmYWN0b3JpYWwg
b2YgcG9zaXRpdmUgbnVtYmVycy4KK1RFU1QoRmFjdG9yaWFsVGVzdCwgSGFuZGxlc1Bvc2l0aXZl
SW5wdXQpIHsKKyAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgxKSk7CisgIEVYUEVDVF9FUSgyLCBG
YWN0b3JpYWwoMikpOworICBFWFBFQ1RfRVEoNiwgRmFjdG9yaWFsKDMpKTsKKyAgRVhQRUNUX0VR
KDQwMzIwLCBGYWN0b3JpYWwoOCkpOworfQorYGBgCisKK0dvb2dsZSBUZXN0IGdyb3VwcyB0aGUg
dGVzdCByZXN1bHRzIGJ5IHRlc3QgY2FzZXMsIHNvIGxvZ2ljYWxseS1yZWxhdGVkIHRlc3RzCitz
aG91bGQgYmUgaW4gdGhlIHNhbWUgdGVzdCBjYXNlOyBpbiBvdGhlciB3b3JkcywgdGhlIGZpcnN0
IGFyZ3VtZW50IHRvIHRoZWlyCitgVEVTVCgpYCBzaG91bGQgYmUgdGhlIHNhbWUuIEluIHRoZSBh
Ym92ZSBleGFtcGxlLCB3ZSBoYXZlIHR3byB0ZXN0cywKK2BIYW5kbGVzWmVyb0lucHV0YCBhbmQg
YEhhbmRsZXNQb3NpdGl2ZUlucHV0YCwgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUgdGVzdAorY2Fz
ZSBgRmFjdG9yaWFsVGVzdGAuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFj
LgorCisjIFRlc3QgRml4dHVyZXM6IFVzaW5nIHRoZSBTYW1lIERhdGEgQ29uZmlndXJhdGlvbiBm
b3IgTXVsdGlwbGUgVGVzdHMgIworCitJZiB5b3UgZmluZCB5b3Vyc2VsZiB3cml0aW5nIHR3byBv
ciBtb3JlIHRlc3RzIHRoYXQgb3BlcmF0ZSBvbiBzaW1pbGFyIGRhdGEsCit5b3UgY2FuIHVzZSBh
IF90ZXN0IGZpeHR1cmVfLiBJdCBhbGxvd3MgeW91IHRvIHJldXNlIHRoZSBzYW1lIGNvbmZpZ3Vy
YXRpb24gb2YKK29iamVjdHMgZm9yIHNldmVyYWwgZGlmZmVyZW50IHRlc3RzLgorCitUbyBjcmVh
dGUgYSBmaXh0dXJlLCBqdXN0OgorICAxLiBEZXJpdmUgYSBjbGFzcyBmcm9tIGA6OnRlc3Rpbmc6
OlRlc3RgIC4gU3RhcnQgaXRzIGJvZHkgd2l0aCBgcHJvdGVjdGVkOmAgb3IgYHB1YmxpYzpgIGFz
IHdlJ2xsIHdhbnQgdG8gYWNjZXNzIGZpeHR1cmUgbWVtYmVycyBmcm9tIHN1Yi1jbGFzc2VzLgor
ICAxLiBJbnNpZGUgdGhlIGNsYXNzLCBkZWNsYXJlIGFueSBvYmplY3RzIHlvdSBwbGFuIHRvIHVz
ZS4KKyAgMS4gSWYgbmVjZXNzYXJ5LCB3cml0ZSBhIGRlZmF1bHQgY29uc3RydWN0b3Igb3IgYFNl
dFVwKClgIGZ1bmN0aW9uIHRvIHByZXBhcmUgdGhlIG9iamVjdHMgZm9yIGVhY2ggdGVzdC4gQSBj
b21tb24gbWlzdGFrZSBpcyB0byBzcGVsbCBgU2V0VXAoKWAgYXMgYFNldHVwKClgIHdpdGggYSBz
bWFsbCBgdWAgLSBkb24ndCBsZXQgdGhhdCBoYXBwZW4gdG8geW91LgorICAxLiBJZiBuZWNlc3Nh
cnksIHdyaXRlIGEgZGVzdHJ1Y3RvciBvciBgVGVhckRvd24oKWAgZnVuY3Rpb24gdG8gcmVsZWFz
ZSBhbnkgcmVzb3VyY2VzIHlvdSBhbGxvY2F0ZWQgaW4gYFNldFVwKClgIC4gVG8gbGVhcm4gd2hl
biB5b3Ugc2hvdWxkIHVzZSB0aGUgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBhbmQgd2hlbiB5b3Ug
c2hvdWxkIHVzZSBgU2V0VXAoKS9UZWFyRG93bigpYCwgcmVhZCB0aGlzIFtGQVEgZW50cnldKFYx
XzZfRkFRLm1kI3Nob3VsZC1pLXVzZS10aGUtY29uc3RydWN0b3JkZXN0cnVjdG9yLW9mLXRoZS10
ZXN0LWZpeHR1cmUtb3ItdGhlLXNldC11cHRlYXItZG93bi1mdW5jdGlvbikuCisgIDEuIElmIG5l
ZWRlZCwgZGVmaW5lIHN1YnJvdXRpbmVzIGZvciB5b3VyIHRlc3RzIHRvIHNoYXJlLgorCitXaGVu
IHVzaW5nIGEgZml4dHVyZSwgdXNlIGBURVNUX0YoKWAgaW5zdGVhZCBvZiBgVEVTVCgpYCBhcyBp
dCBhbGxvd3MgeW91IHRvCithY2Nlc3Mgb2JqZWN0cyBhbmQgc3Vicm91dGluZXMgaW4gdGhlIHRl
c3QgZml4dHVyZToKK2BgYAorVEVTVF9GKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIHsKKyAu
Li4gdGVzdCBib2R5IC4uLgorfQorYGBgCisKK0xpa2UgYFRFU1QoKWAsIHRoZSBmaXJzdCBhcmd1
bWVudCBpcyB0aGUgdGVzdCBjYXNlIG5hbWUsIGJ1dCBmb3IgYFRFU1RfRigpYAordGhpcyBtdXN0
IGJlIHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuIFlvdSd2ZSBwcm9iYWJseSBn
dWVzc2VkOiBgX0ZgCitpcyBmb3IgZml4dHVyZS4KKworVW5mb3J0dW5hdGVseSwgdGhlIEMrKyBt
YWNybyBzeXN0ZW0gZG9lcyBub3QgYWxsb3cgdXMgdG8gY3JlYXRlIGEgc2luZ2xlIG1hY3JvCit0
aGF0IGNhbiBoYW5kbGUgYm90aCB0eXBlcyBvZiB0ZXN0cy4gVXNpbmcgdGhlIHdyb25nIG1hY3Jv
IGNhdXNlcyBhIGNvbXBpbGVyCitlcnJvci4KKworQWxzbywgeW91IG11c3QgZmlyc3QgZGVmaW5l
IGEgdGVzdCBmaXh0dXJlIGNsYXNzIGJlZm9yZSB1c2luZyBpdCBpbiBhCitgVEVTVF9GKClgLCBv
ciB5b3UnbGwgZ2V0IHRoZSBjb21waWxlciBlcnJvciAiYHZpcnR1YWwgb3V0c2lkZSBjbGFzcwor
ZGVjbGFyYXRpb25gIi4KKworRm9yIGVhY2ggdGVzdCBkZWZpbmVkIHdpdGggYFRFU1RfRigpYCwg
R29vZ2xlIFRlc3Qgd2lsbDoKKyAgMS4gQ3JlYXRlIGEgX2ZyZXNoXyB0ZXN0IGZpeHR1cmUgYXQg
cnVudGltZQorICAxLiBJbW1lZGlhdGVseSBpbml0aWFsaXplIGl0IHZpYSBgU2V0VXAoKWAgLAor
ICAxLiBSdW4gdGhlIHRlc3QKKyAgMS4gQ2xlYW4gdXAgYnkgY2FsbGluZyBgVGVhckRvd24oKWAK
KyAgMS4gRGVsZXRlIHRoZSB0ZXN0IGZpeHR1cmUuICBOb3RlIHRoYXQgZGlmZmVyZW50IHRlc3Rz
IGluIHRoZSBzYW1lIHRlc3QgY2FzZSBoYXZlIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgb2JqZWN0
cywgYW5kIEdvb2dsZSBUZXN0IGFsd2F5cyBkZWxldGVzIGEgdGVzdCBmaXh0dXJlIGJlZm9yZSBp
dCBjcmVhdGVzIHRoZSBuZXh0IG9uZS4gR29vZ2xlIFRlc3QgZG9lcyBub3QgcmV1c2UgdGhlIHNh
bWUgdGVzdCBmaXh0dXJlIGZvciBtdWx0aXBsZSB0ZXN0cy4gQW55IGNoYW5nZXMgb25lIHRlc3Qg
bWFrZXMgdG8gdGhlIGZpeHR1cmUgZG8gbm90IGFmZmVjdCBvdGhlciB0ZXN0cy4KKworQXMgYW4g
ZXhhbXBsZSwgbGV0J3Mgd3JpdGUgdGVzdHMgZm9yIGEgRklGTyBxdWV1ZSBjbGFzcyBuYW1lZCBg
UXVldWVgLCB3aGljaAoraGFzIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlOgorYGBgCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgRT4gLy8gRSBpcyB0aGUgZWxlbWVudCB0eXBlLgorY2xhc3MgUXVldWUgewor
IHB1YmxpYzoKKyAgUXVldWUoKTsKKyAgdm9pZCBFbnF1ZXVlKGNvbnN0IEUmIGVsZW1lbnQpOwor
ICBFKiBEZXF1ZXVlKCk7IC8vIFJldHVybnMgTlVMTCBpZiB0aGUgcXVldWUgaXMgZW1wdHkuCisg
IHNpemVfdCBzaXplKCkgY29uc3Q7CisgIC4uLgorfTsKK2BgYAorCitGaXJzdCwgZGVmaW5lIGEg
Zml4dHVyZSBjbGFzcy4gQnkgY29udmVudGlvbiwgeW91IHNob3VsZCBnaXZlIGl0IHRoZSBuYW1l
CitgRm9vVGVzdGAgd2hlcmUgYEZvb2AgaXMgdGhlIGNsYXNzIGJlaW5nIHRlc3RlZC4KK2BgYAor
Y2xhc3MgUXVldWVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgor
ICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgcTFfLkVucXVldWUoMSk7CisgICAgcTJfLkVu
cXVldWUoMik7CisgICAgcTJfLkVucXVldWUoMyk7CisgIH0KKworICAvLyB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKSB7fQorCisgIFF1ZXVlPGludD4gcTBfOworICBRdWV1ZTxpbnQ+IHExXzsKKyAg
UXVldWU8aW50PiBxMl87Cit9OworYGBgCisKK0luIHRoaXMgY2FzZSwgYFRlYXJEb3duKClgIGlz
IG5vdCBuZWVkZWQgc2luY2Ugd2UgZG9uJ3QgaGF2ZSB0byBjbGVhbiB1cCBhZnRlcgorZWFjaCB0
ZXN0LCBvdGhlciB0aGFuIHdoYXQncyBhbHJlYWR5IGRvbmUgYnkgdGhlIGRlc3RydWN0b3IuCisK
K05vdyB3ZSdsbCB3cml0ZSB0ZXN0cyB1c2luZyBgVEVTVF9GKClgIGFuZCB0aGlzIGZpeHR1cmUu
CitgYGAKK1RFU1RfRihRdWV1ZVRlc3QsIElzRW1wdHlJbml0aWFsbHkpIHsKKyAgRVhQRUNUX0VR
KDAsIHEwXy5zaXplKCkpOworfQorCitURVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVlV29ya3MpIHsK
KyAgaW50KiBuID0gcTBfLkRlcXVldWUoKTsKKyAgRVhQRUNUX0VRKE5VTEwsIG4pOworCisgIG4g
PSBxMV8uRGVxdWV1ZSgpOworICBBU1NFUlRfVFJVRShuICE9IE5VTEwpOworICBFWFBFQ1RfRVEo
MSwgKm4pOworICBFWFBFQ1RfRVEoMCwgcTFfLnNpemUoKSk7CisgIGRlbGV0ZSBuOworCisgIG4g
PSBxMl8uRGVxdWV1ZSgpOworICBBU1NFUlRfVFJVRShuICE9IE5VTEwpOworICBFWFBFQ1RfRVEo
MiwgKm4pOworICBFWFBFQ1RfRVEoMSwgcTJfLnNpemUoKSk7CisgIGRlbGV0ZSBuOworfQorYGBg
CisKK1RoZSBhYm92ZSB1c2VzIGJvdGggYEFTU0VSVF8qYCBhbmQgYEVYUEVDVF8qYCBhc3NlcnRp
b25zLiBUaGUgcnVsZSBvZiB0aHVtYiBpcwordG8gdXNlIGBFWFBFQ1RfKmAgd2hlbiB5b3Ugd2Fu
dCB0aGUgdGVzdCB0byBjb250aW51ZSB0byByZXZlYWwgbW9yZSBlcnJvcnMKK2FmdGVyIHRoZSBh
c3NlcnRpb24gZmFpbHVyZSwgYW5kIHVzZSBgQVNTRVJUXypgIHdoZW4gY29udGludWluZyBhZnRl
ciBmYWlsdXJlCitkb2Vzbid0IG1ha2Ugc2Vuc2UuIEZvciBleGFtcGxlLCB0aGUgc2Vjb25kIGFz
c2VydGlvbiBpbiB0aGUgYERlcXVldWVgIHRlc3QgaXMKK2BBU1NFUlRfVFJVRShuICE9IE5VTEwp
YCwgYXMgd2UgbmVlZCB0byBkZXJlZmVyZW5jZSB0aGUgcG9pbnRlciBgbmAgbGF0ZXIsCit3aGlj
aCB3b3VsZCBsZWFkIHRvIGEgc2VnZmF1bHQgd2hlbiBgbmAgaXMgYE5VTExgLgorCitXaGVuIHRo
ZXNlIHRlc3RzIHJ1biwgdGhlIGZvbGxvd2luZyBoYXBwZW5zOgorICAxLiBHb29nbGUgVGVzdCBj
b25zdHJ1Y3RzIGEgYFF1ZXVlVGVzdGAgb2JqZWN0IChsZXQncyBjYWxsIGl0IGB0MWAgKS4KKyAg
MS4gYHQxLlNldFVwKClgIGluaXRpYWxpemVzIGB0MWAgLgorICAxLiBUaGUgZmlyc3QgdGVzdCAo
IGBJc0VtcHR5SW5pdGlhbGx5YCApIHJ1bnMgb24gYHQxYCAuCisgIDEuIGB0MS5UZWFyRG93bigp
YCBjbGVhbnMgdXAgYWZ0ZXIgdGhlIHRlc3QgZmluaXNoZXMuCisgIDEuIGB0MWAgaXMgZGVzdHJ1
Y3RlZC4KKyAgMS4gVGhlIGFib3ZlIHN0ZXBzIGFyZSByZXBlYXRlZCBvbiBhbm90aGVyIGBRdWV1
ZVRlc3RgIG9iamVjdCwgdGhpcyB0aW1lIHJ1bm5pbmcgdGhlIGBEZXF1ZXVlV29ya3NgIHRlc3Qu
CisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCitfTm90ZV86IEdvb2ds
ZSBUZXN0IGF1dG9tYXRpY2FsbHkgc2F2ZXMgYWxsIF9Hb29nbGUgVGVzdF8gZmxhZ3Mgd2hlbiBh
IHRlc3QKK29iamVjdCBpcyBjb25zdHJ1Y3RlZCwgYW5kIHJlc3RvcmVzIHRoZW0gd2hlbiBpdCBp
cyBkZXN0cnVjdGVkLgorCisjIEludm9raW5nIHRoZSBUZXN0cyAjCisKK2BURVNUKClgIGFuZCBg
VEVTVF9GKClgIGltcGxpY2l0bHkgcmVnaXN0ZXIgdGhlaXIgdGVzdHMgd2l0aCBHb29nbGUgVGVz
dC4gU28sIHVubGlrZSB3aXRoIG1hbnkgb3RoZXIgQysrIHRlc3RpbmcgZnJhbWV3b3JrcywgeW91
IGRvbid0IGhhdmUgdG8gcmUtbGlzdCBhbGwgeW91ciBkZWZpbmVkIHRlc3RzIGluIG9yZGVyIHRv
IHJ1biB0aGVtLgorCitBZnRlciBkZWZpbmluZyB5b3VyIHRlc3RzLCB5b3UgY2FuIHJ1biB0aGVt
IHdpdGggYFJVTl9BTExfVEVTVFMoKWAgLCB3aGljaCByZXR1cm5zIGAwYCBpZiBhbGwgdGhlIHRl
c3RzIGFyZSBzdWNjZXNzZnVsLCBvciBgMWAgb3RoZXJ3aXNlLiBOb3RlIHRoYXQgYFJVTl9BTExf
VEVTVFMoKWAgcnVucyBfYWxsIHRlc3RzXyBpbiB5b3VyIGxpbmsgdW5pdCAtLSB0aGV5IGNhbiBi
ZSBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLCBvciBldmVuIGRpZmZlcmVudCBzb3VyY2UgZmls
ZXMuCisKK1doZW4gaW52b2tlZCwgdGhlIGBSVU5fQUxMX1RFU1RTKClgIG1hY3JvOgorICAxLiBT
YXZlcyB0aGUgc3RhdGUgb2YgYWxsICBHb29nbGUgVGVzdCBmbGFncy4KKyAgMS4gQ3JlYXRlcyBh
IHRlc3QgZml4dHVyZSBvYmplY3QgZm9yIHRoZSBmaXJzdCB0ZXN0LgorICAxLiBJbml0aWFsaXpl
cyBpdCB2aWEgYFNldFVwKClgLgorICAxLiBSdW5zIHRoZSB0ZXN0IG9uIHRoZSBmaXh0dXJlIG9i
amVjdC4KKyAgMS4gQ2xlYW5zIHVwIHRoZSBmaXh0dXJlIHZpYSBgVGVhckRvd24oKWAuCisgIDEu
IERlbGV0ZXMgdGhlIGZpeHR1cmUuCisgIDEuIFJlc3RvcmVzIHRoZSBzdGF0ZSBvZiBhbGwgR29v
Z2xlIFRlc3QgZmxhZ3MuCisgIDEuIFJlcGVhdHMgdGhlIGFib3ZlIHN0ZXBzIGZvciB0aGUgbmV4
dCB0ZXN0LCB1bnRpbCBhbGwgdGVzdHMgaGF2ZSBydW4uCisKK0luIGFkZGl0aW9uLCBpZiB0aGUg
dGV4dCBmaXh0dXJlJ3MgY29uc3RydWN0b3IgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSBpbgor
c3RlcCAyLCB0aGVyZSBpcyBubyBwb2ludCBmb3Igc3RlcCAzIC0gNSBhbmQgdGhleSBhcmUgdGh1
cyBza2lwcGVkLiBTaW1pbGFybHksCitpZiBzdGVwIDMgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVy
ZSwgc3RlcCA0IHdpbGwgYmUgc2tpcHBlZC4KKworX0ltcG9ydGFudF86IFlvdSBtdXN0IG5vdCBp
Z25vcmUgdGhlIHJldHVybiB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYCwgb3IgYGdjY2AKK3dp
bGwgZ2l2ZSB5b3UgYSBjb21waWxlciBlcnJvci4gVGhlIHJhdGlvbmFsZSBmb3IgdGhpcyBkZXNp
Z24gaXMgdGhhdCB0aGUKK2F1dG9tYXRlZCB0ZXN0aW5nIHNlcnZpY2UgZGV0ZXJtaW5lcyB3aGV0
aGVyIGEgdGVzdCBoYXMgcGFzc2VkIGJhc2VkIG9uIGl0cworZXhpdCBjb2RlLCBub3Qgb24gaXRz
IHN0ZG91dC9zdGRlcnIgb3V0cHV0OyB0aHVzIHlvdXIgYG1haW4oKWAgZnVuY3Rpb24gbXVzdAor
cmV0dXJuIHRoZSB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYC4KKworQWxzbywgeW91IHNob3Vs
ZCBjYWxsIGBSVU5fQUxMX1RFU1RTKClgIG9ubHkgKipvbmNlKiouIENhbGxpbmcgaXQgbW9yZSB0
aGFuIG9uY2UKK2NvbmZsaWN0cyB3aXRoIHNvbWUgYWR2YW5jZWQgR29vZ2xlIFRlc3QgZmVhdHVy
ZXMgKGUuZy4gdGhyZWFkLXNhZmUgZGVhdGgKK3Rlc3RzKSBhbmQgdGh1cyBpcyBub3Qgc3VwcG9y
dGVkLgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyBXcml0aW5n
IHRoZSBtYWluKCkgRnVuY3Rpb24gIworCitZb3UgY2FuIHN0YXJ0IGZyb20gdGhpcyBib2lsZXJw
bGF0ZToKK2BgYAorI2luY2x1ZGUgInRoaXMvcGFja2FnZS9mb28uaCIKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCisvLyBUaGUgZml4dHVyZSBmb3IgdGVzdGluZyBj
bGFzcyBGb28uCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJv
dGVjdGVkOgorICAvLyBZb3UgY2FuIHJlbW92ZSBhbnkgb3IgYWxsIG9mIHRoZSBmb2xsb3dpbmcg
ZnVuY3Rpb25zIGlmIGl0cyBib2R5CisgIC8vIGlzIGVtcHR5LgorCisgIEZvb1Rlc3QoKSB7Cisg
ICAgLy8gWW91IGNhbiBkbyBzZXQtdXAgd29yayBmb3IgZWFjaCB0ZXN0IGhlcmUuCisgIH0KKwor
ICB2aXJ0dWFsIH5Gb29UZXN0KCkgeworICAgIC8vIFlvdSBjYW4gZG8gY2xlYW4tdXAgd29yayB0
aGF0IGRvZXNuJ3QgdGhyb3cgZXhjZXB0aW9ucyBoZXJlLgorICB9CisKKyAgLy8gSWYgdGhlIGNv
bnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIGFyZSBub3QgZW5vdWdoIGZvciBzZXR0aW5nIHVwCisg
IC8vIGFuZCBjbGVhbmluZyB1cCBlYWNoIHRlc3QsIHlvdSBjYW4gZGVmaW5lIHRoZSBmb2xsb3dp
bmcgbWV0aG9kczoKKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgLy8gQ29kZSBoZXJl
IHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjb25zdHJ1Y3RvciAocmlnaHQK
KyAgICAvLyBiZWZvcmUgZWFjaCB0ZXN0KS4KKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93
bigpIHsKKyAgICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIg
ZWFjaCB0ZXN0IChyaWdodAorICAgIC8vIGJlZm9yZSB0aGUgZGVzdHJ1Y3RvcikuCisgIH0KKwor
ICAvLyBPYmplY3RzIGRlY2xhcmVkIGhlcmUgY2FuIGJlIHVzZWQgYnkgYWxsIHRlc3RzIGluIHRo
ZSB0ZXN0IGNhc2UgZm9yIEZvby4KK307CisKKy8vIFRlc3RzIHRoYXQgdGhlIEZvbzo6QmFyKCkg
bWV0aG9kIGRvZXMgQWJjLgorVEVTVF9GKEZvb1Rlc3QsIE1ldGhvZEJhckRvZXNBYmMpIHsKKyAg
Y29uc3Qgc3RyaW5nIGlucHV0X2ZpbGVwYXRoID0gInRoaXMvcGFja2FnZS90ZXN0ZGF0YS9teWlu
cHV0ZmlsZS5kYXQiOworICBjb25zdCBzdHJpbmcgb3V0cHV0X2ZpbGVwYXRoID0gInRoaXMvcGFj
a2FnZS90ZXN0ZGF0YS9teW91dHB1dGZpbGUuZGF0IjsKKyAgRm9vIGY7CisgIEVYUEVDVF9FUSgw
LCBmLkJhcihpbnB1dF9maWxlcGF0aCwgb3V0cHV0X2ZpbGVwYXRoKSk7Cit9CisKKy8vIFRlc3Rz
IHRoYXQgRm9vIGRvZXMgWHl6LgorVEVTVF9GKEZvb1Rlc3QsIERvZXNYeXopIHsKKyAgLy8gRXhl
cmNpc2VzIHRoZSBYeXogZmVhdHVyZSBvZiBGb28uCit9CisKK30gIC8vIG5hbWVzcGFjZQorCitp
bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xl
VGVzdCgmYXJnYywgYXJndik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CitgYGAKKwor
VGhlIGA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClgIGZ1bmN0aW9uIHBhcnNlcyB0aGUgY29t
bWFuZCBsaW5lIGZvciBHb29nbGUKK1Rlc3QgZmxhZ3MsIGFuZCByZW1vdmVzIGFsbCByZWNvZ25p
emVkIGZsYWdzLiBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBjb250cm9sIGEKK3Rlc3QgcHJvZ3Jh
bSdzIGJlaGF2aW9yIHZpYSB2YXJpb3VzIGZsYWdzLCB3aGljaCB3ZSdsbCBjb3ZlciBpbiBbQWR2
YW5jZWRHdWlkZV0oVjFfNl9BZHZhbmNlZEd1aWRlLm1kKS4KK1lvdSBtdXN0IGNhbGwgdGhpcyBm
dW5jdGlvbiBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9URVNUUygpYCwgb3IgdGhlIGZsYWdzCit3
b24ndCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4KKworT24gV2luZG93cywgYEluaXRHb29nbGVU
ZXN0KClgIGFsc28gd29ya3Mgd2l0aCB3aWRlIHN0cmluZ3MsIHNvIGl0IGNhbiBiZSB1c2VkCitp
biBwcm9ncmFtcyBjb21waWxlZCBpbiBgVU5JQ09ERWAgbW9kZSBhcyB3ZWxsLgorCitCdXQgbWF5
YmUgeW91IHRoaW5rIHRoYXQgd3JpdGluZyBhbGwgdGhvc2UgbWFpbigpIGZ1bmN0aW9ucyBpcyB0
b28gbXVjaCB3b3JrPyBXZSBhZ3JlZSB3aXRoIHlvdSBjb21wbGV0ZWx5IGFuZCB0aGF0J3Mgd2h5
IEdvb2dsZSBUZXN0IHByb3ZpZGVzIGEgYmFzaWMgaW1wbGVtZW50YXRpb24gb2YgbWFpbigpLiBJ
ZiBpdCBmaXRzIHlvdXIgbmVlZHMsIHRoZW4ganVzdCBsaW5rIHlvdXIgdGVzdCB3aXRoIGd0ZXN0
XF9tYWluIGxpYnJhcnkgYW5kIHlvdSBhcmUgZ29vZCB0byBnby4KKworIyMgSW1wb3J0YW50IG5v
dGUgZm9yIFZpc3VhbCBDKysgdXNlcnMgIyMKK0lmIHlvdSBwdXQgeW91ciB0ZXN0cyBpbnRvIGEg
bGlicmFyeSBhbmQgeW91ciBgbWFpbigpYCBmdW5jdGlvbiBpcyBpbiBhIGRpZmZlcmVudCBsaWJy
YXJ5IG9yIGluIHlvdXIgLmV4ZSBmaWxlLCB0aG9zZSB0ZXN0cyB3aWxsIG5vdCBydW4uIFRoZSBy
ZWFzb24gaXMgYSBbYnVnXShodHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNvbS9mZWVkYmFjay92
aWV3ZmVlZGJhY2suYXNweD9GZWVkYmFja0lEPTI0NDQxMCZzaXRlaWQ9MjEwKSBpbiBWaXN1YWwg
QysrLiBXaGVuIHlvdSBkZWZpbmUgeW91ciB0ZXN0cywgR29vZ2xlIFRlc3QgY3JlYXRlcyBjZXJ0
YWluIHN0YXRpYyBvYmplY3RzIHRvIHJlZ2lzdGVyIHRoZW0uIFRoZXNlIG9iamVjdHMgYXJlIG5v
dCByZWZlcmVuY2VkIGZyb20gZWxzZXdoZXJlIGJ1dCB0aGVpciBjb25zdHJ1Y3RvcnMgYXJlIHN0
aWxsIHN1cHBvc2VkIHRvIHJ1bi4gV2hlbiBWaXN1YWwgQysrIGxpbmtlciBzZWVzIHRoYXQgbm90
aGluZyBpbiB0aGUgbGlicmFyeSBpcyByZWZlcmVuY2VkIGZyb20gb3RoZXIgcGxhY2VzIGl0IHRo
cm93cyB0aGUgbGlicmFyeSBvdXQuIFlvdSBoYXZlIHRvIHJlZmVyZW5jZSB5b3VyIGxpYnJhcnkg
d2l0aCB0ZXN0cyBmcm9tIHlvdXIgbWFpbiBwcm9ncmFtIHRvIGtlZXAgdGhlIGxpbmtlciBmcm9t
IGRpc2NhcmRpbmcgaXQuIEhlcmUgaXMgaG93IHRvIGRvIGl0LiBTb21ld2hlcmUgaW4geW91ciBs
aWJyYXJ5IGNvZGUgZGVjbGFyZSBhIGZ1bmN0aW9uOgorYGBgCitfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgaW50IFB1bGxJbk15TGlicmFyeSgpIHsgcmV0dXJuIDA7IH0KK2BgYAorSWYgeW91IHB1dCB5
b3VyIHRlc3RzIGluIGEgc3RhdGljIGxpYnJhcnkgKG5vdCBETEwpIHRoZW4gYF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KWAgaXMgbm90IHJlcXVpcmVkLiBOb3csIGluIHlvdXIgbWFpbiBwcm9ncmFtLCB3
cml0ZSBhIGNvZGUgdGhhdCBpbnZva2VzIHRoYXQgZnVuY3Rpb246CitgYGAKK2ludCBQdWxsSW5N
eUxpYnJhcnkoKTsKK3N0YXRpYyBpbnQgZHVtbXkgPSBQdWxsSW5NeUxpYnJhcnkoKTsKK2BgYAor
VGhpcyB3aWxsIGtlZXAgeW91ciB0ZXN0cyByZWZlcmVuY2VkIGFuZCB3aWxsIG1ha2UgdGhlbSBy
ZWdpc3RlciB0aGVtc2VsdmVzIGF0IHN0YXJ0dXAuCisKK0luIGFkZGl0aW9uLCBpZiB5b3UgZGVm
aW5lIHlvdXIgdGVzdHMgaW4gYSBzdGF0aWMgbGlicmFyeSwgYWRkIGAvT1BUOk5PUkVGYCB0byB5
b3VyIG1haW4gcHJvZ3JhbSBsaW5rZXIgb3B0aW9ucy4gSWYgeW91IHVzZSBNU1ZDKysgSURFLCBn
byB0byB5b3VyIC5leGUgcHJvamVjdCBwcm9wZXJ0aWVzL0NvbmZpZ3VyYXRpb24gUHJvcGVydGll
cy9MaW5rZXIvT3B0aW1pemF0aW9uIGFuZCBzZXQgUmVmZXJlbmNlcyBzZXR0aW5nIHRvIGBLZWVw
IFVucmVmZXJlbmNlZCBEYXRhICgvT1BUOk5PUkVGKWAuIFRoaXMgd2lsbCBrZWVwIFZpc3VhbCBD
KysgbGlua2VyIGZyb20gZGlzY2FyZGluZyBpbmRpdmlkdWFsIHN5bWJvbHMgZ2VuZXJhdGVkIGJ5
IHlvdXIgdGVzdHMgZnJvbSB0aGUgZmluYWwgZXhlY3V0YWJsZS4KKworVGhlcmUgaXMgb25lIG1v
cmUgcGl0ZmFsbCwgdGhvdWdoLiBJZiB5b3UgdXNlIEdvb2dsZSBUZXN0IGFzIGEgc3RhdGljIGxp
YnJhcnkgKHRoYXQncyBob3cgaXQgaXMgZGVmaW5lZCBpbiBndGVzdC52Y3Byb2opIHlvdXIgdGVz
dHMgbXVzdCBhbHNvIHJlc2lkZSBpbiBhIHN0YXRpYyBsaWJyYXJ5LiBJZiB5b3UgaGF2ZSB0byBo
YXZlIHRoZW0gaW4gYSBETEwsIHlvdSBfbXVzdF8gY2hhbmdlIEdvb2dsZSBUZXN0IHRvIGJ1aWxk
IGludG8gYSBETEwgYXMgd2VsbC4gT3RoZXJ3aXNlIHlvdXIgdGVzdHMgd2lsbCBub3QgcnVuIGNv
cnJlY3RseSBvciB3aWxsIG5vdCBydW4gYXQgYWxsLiBUaGUgZ2VuZXJhbCBjb25jbHVzaW9uIGhl
cmUgaXM6IG1ha2UgeW91ciBsaWZlIGVhc2llciAtIGRvIG5vdCB3cml0ZSB5b3VyIHRlc3RzIGlu
IGxpYnJhcmllcyEKKworIyBXaGVyZSB0byBHbyBmcm9tIEhlcmUgIworCitDb25ncmF0dWxhdGlv
bnMhIFlvdSd2ZSBsZWFybmVkIHRoZSBHb29nbGUgVGVzdCBiYXNpY3MuIFlvdSBjYW4gc3RhcnQg
d3JpdGluZworYW5kIHJ1bm5pbmcgR29vZ2xlIFRlc3QgdGVzdHMsIHJlYWQgc29tZSBbc2FtcGxl
c10oVjFfNl9TYW1wbGVzLm1kKSwgb3IgY29udGludWUgd2l0aAorW0FkdmFuY2VkR3VpZGVdKFYx
XzZfQWR2YW5jZWRHdWlkZS5tZCksIHdoaWNoIGRlc2NyaWJlcyBtYW55IG1vcmUgdXNlZnVsIEdv
b2dsZSBUZXN0IGZlYXR1cmVzLgorCisjIEtub3duIExpbWl0YXRpb25zICMKKworR29vZ2xlIFRl
c3QgaXMgZGVzaWduZWQgdG8gYmUgdGhyZWFkLXNhZmUuICBUaGUgaW1wbGVtZW50YXRpb24gaXMK
K3RocmVhZC1zYWZlIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGBwdGhyZWFkc2AgbGlicmFyeSBpcyBh
dmFpbGFibGUuICBJdAoraXMgY3VycmVudGx5IF91bnNhZmVfIHRvIHVzZSBHb29nbGUgVGVzdCBh
c3NlcnRpb25zIGZyb20gdHdvIHRocmVhZHMKK2NvbmN1cnJlbnRseSBvbiBvdGhlciBzeXN0ZW1z
IChlLmcuIFdpbmRvd3MpLiAgSW4gbW9zdCB0ZXN0cyB0aGlzIGlzCitub3QgYW4gaXNzdWUgYXMg
dXN1YWxseSB0aGUgYXNzZXJ0aW9ucyBhcmUgZG9uZSBpbiB0aGUgbWFpbiB0aHJlYWQuIElmCit5
b3Ugd2FudCB0byBoZWxwLCB5b3UgY2FuIHZvbHVudGVlciB0byBpbXBsZW1lbnQgdGhlIG5lY2Vz
c2FyeQorc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYGd0ZXN0LXBvcnQuaGAgZm9yIHlv
dXIgcGxhdGZvcm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1Yx
XzZfUHVtcE1hbnVhbC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfNl9QdW1w
TWFudWFsLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxODRmMTUzY2EyZWNhZDdjNjVjYjU4YzI3ZmIzMWJkNzIz
NzVmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1Yx
XzZfUHVtcE1hbnVhbC5tZApAQCAtMCwwICsxLDE3NyBAQAorCisKKzxiPlA8L2I+dW1wIGlzIDxi
PlU8L2I+c2VmdWwgZm9yIDxiPk08L2I+ZXRhIDxiPlA8L2I+cm9ncmFtbWluZy4KKworIyBUaGUg
UHJvYmxlbSAjCisKK1RlbXBsYXRlIGFuZCBtYWNybyBsaWJyYXJpZXMgb2Z0ZW4gbmVlZCB0byBk
ZWZpbmUgbWFueSBjbGFzc2VzLAorZnVuY3Rpb25zLCBvciBtYWNyb3MgdGhhdCB2YXJ5IG9ubHkg
KG9yIGFsbW9zdCBvbmx5KSBpbiB0aGUgbnVtYmVyIG9mCithcmd1bWVudHMgdGhleSB0YWtlLiBJ
dCdzIGEgbG90IG9mIHJlcGV0aXRpdmUsIG1lY2hhbmljYWwsIGFuZAorZXJyb3ItcHJvbmUgd29y
ay4KKworVmFyaWFkaWMgdGVtcGxhdGVzIGFuZCB2YXJpYWRpYyBtYWNyb3MgY2FuIGFsbGV2aWF0
ZSB0aGUgcHJvYmxlbS4KK0hvd2V2ZXIsIHdoaWxlIGJvdGggYXJlIGJlaW5nIGNvbnNpZGVyZWQg
YnkgdGhlIEMrKyBjb21taXR0ZWUsIG5laXRoZXIKK2lzIGluIHRoZSBzdGFuZGFyZCB5ZXQgb3Ig
d2lkZWx5IHN1cHBvcnRlZCBieSBjb21waWxlcnMuICBUaHVzIHRoZXkKK2FyZSBvZnRlbiBub3Qg
YSBnb29kIGNob2ljZSwgZXNwZWNpYWxseSB3aGVuIHlvdXIgY29kZSBuZWVkcyB0byBiZQorcG9y
dGFibGUuIEFuZCB0aGVpciBjYXBhYmlsaXRpZXMgYXJlIHN0aWxsIGxpbWl0ZWQuCisKK0FzIGEg
cmVzdWx0LCBhdXRob3JzIG9mIHN1Y2ggbGlicmFyaWVzIG9mdGVuIGhhdmUgdG8gd3JpdGUgc2Ny
aXB0cyB0bworZ2VuZXJhdGUgdGhlaXIgaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIsIG91ciBleHBl
cmllbmNlIGlzIHRoYXQgaXQncwordGVkaW91cyB0byB3cml0ZSBzdWNoIHNjcmlwdHMsIHdoaWNo
IHRlbmQgdG8gcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mCit0aGUgZ2VuZXJhdGVkIGNvZGUgcG9v
cmx5IGFuZCBhcmUgb2Z0ZW4gaGFyZCB0byByZWFkIGFuZCBlZGl0LiBGb3IKK2V4YW1wbGUsIGEg
c21hbGwgY2hhbmdlIG5lZWRlZCBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUgbWF5IHJlcXVpcmUgc29t
ZQorbm9uLWludHVpdGl2ZSwgbm9uLXRyaXZpYWwgY2hhbmdlcyBpbiB0aGUgc2NyaXB0LiBUaGlz
IGlzIGVzcGVjaWFsbHkKK3BhaW5mdWwgd2hlbiBleHBlcmltZW50aW5nIHdpdGggdGhlIGNvZGUu
CisKKyMgT3VyIFNvbHV0aW9uICMKKworUHVtcCAoZm9yIFB1bXAgaXMgVXNlZnVsIGZvciBNZXRh
IFByb2dyYW1taW5nLCBQcmV0dHkgVXNlZnVsIGZvciBNZXRhCitQcm9ncmFtbWluZywgb3IgUHJh
Y3RpY2FsIFV0aWxpdHkgZm9yIE1ldGEgUHJvZ3JhbW1pbmcsIHdoaWNoZXZlciB5b3UKK3ByZWZl
cikgaXMgYSBzaW1wbGUgbWV0YS1wcm9ncmFtbWluZyB0b29sIGZvciBDKysuIFRoZSBpZGVhIGlz
IHRoYXQgYQorcHJvZ3JhbW1lciB3cml0ZXMgYSBgZm9vLnB1bXBgIGZpbGUgd2hpY2ggY29udGFp
bnMgQysrIGNvZGUgcGx1cyBtZXRhCitjb2RlIHRoYXQgbWFuaXB1bGF0ZXMgdGhlIEMrKyBjb2Rl
LiBUaGUgbWV0YSBjb2RlIGNhbiBoYW5kbGUKK2l0ZXJhdGlvbnMgb3ZlciBhIHJhbmdlLCBuZXN0
ZWQgaXRlcmF0aW9ucywgbG9jYWwgbWV0YSB2YXJpYWJsZQorZGVmaW5pdGlvbnMsIHNpbXBsZSBh
cml0aG1ldGljLCBhbmQgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMuIFlvdSBjYW4KK3ZpZXcgaXQg
YXMgYSBzbWFsbCBEb21haW4tU3BlY2lmaWMgTGFuZ3VhZ2UuIFRoZSBtZXRhIGxhbmd1YWdlIGlz
CitkZXNpZ25lZCB0byBiZSBub24taW50cnVzaXZlIChzLnQuIGl0IHdvbid0IGNvbmZ1c2UgRW1h
Y3MnIEMrKyBtb2RlLAorZm9yIGV4YW1wbGUpIGFuZCBjb25jaXNlLCBtYWtpbmcgUHVtcCBjb2Rl
IGludHVpdGl2ZSBhbmQgZWFzeSB0bworbWFpbnRhaW4uCisKKyMjIEhpZ2hsaWdodHMgIyMKKwor
ICAqIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBpbiBhIHNpbmdsZSBQeXRob24gc2NyaXB0IGFuZCB0
aHVzIHVsdHJhIHBvcnRhYmxlOiBubyBidWlsZCBvciBpbnN0YWxsYXRpb24gaXMgbmVlZGVkIGFu
ZCBpdCB3b3JrcyBjcm9zcyBwbGF0Zm9ybXMuCisgICogUHVtcCB0cmllcyB0byBiZSBzbWFydCB3
aXRoIHJlc3BlY3QgdG8gW0dvb2dsZSdzIHN0eWxlIGd1aWRlXShodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvZ29vZ2xlLXN0eWxlZ3VpZGUvKTogaXQgYnJlYWtzIGxvbmcgbGluZXMgKGVhc3kgdG8g
aGF2ZSB3aGVuIHRoZXkgYXJlIGdlbmVyYXRlZCkgYXQgYWNjZXB0YWJsZSBwbGFjZXMgdG8gZml0
IHdpdGhpbiA4MCBjb2x1bW5zIGFuZCBpbmRlbnQgdGhlIGNvbnRpbnVhdGlvbiBsaW5lcyBjb3Jy
ZWN0bHkuCisgICogVGhlIGZvcm1hdCBpcyBodW1hbi1yZWFkYWJsZSBhbmQgbW9yZSBjb25jaXNl
IHRoYW4gWE1MLgorICAqIFRoZSBmb3JtYXQgd29ya3MgcmVsYXRpdmVseSB3ZWxsIHdpdGggRW1h
Y3MnIEMrKyBtb2RlLgorCisjIyBFeGFtcGxlcyAjIworCitUaGUgZm9sbG93aW5nIFB1bXAgY29k
ZSAod2hlcmUgbWV0YSBrZXl3b3JkcyBzdGFydCB3aXRoIGAkYCwgYFtbYCBhbmQgYF1dYCBhcmUg
bWV0YSBicmFja2V0cywgYW5kIGAkJGAgc3RhcnRzIGEgbWV0YSBjb21tZW50IHRoYXQgZW5kcyB3
aXRoIHRoZSBsaW5lKToKKworYGBgCiskdmFyIG4gPSAzICAgICAkJCBEZWZpbmVzIGEgbWV0YSB2
YXJpYWJsZSBuLgorJHJhbmdlIGkgMC4ubiAgJCQgRGVjbGFyZXMgdGhlIHJhbmdlIG9mIG1ldGEg
aXRlcmF0b3IgaSAoaW5jbHVzaXZlKS4KKyRmb3IgaSBbWworICAgICAgICAgICAgICAgJCQgTWV0
YSBsb29wLgorLy8gRm9vJGkgZG9lcyBibGFoIGZvciAkaS1hcnkgcHJlZGljYXRlcy4KKyRyYW5n
ZSBqIDEuLmkKK3RlbXBsYXRlIDxzaXplX3QgTiAkZm9yIGogW1ssIHR5cGVuYW1lIEEkal1dPgor
Y2xhc3MgRm9vJGkgeworJGlmIGkgPT0gMCBbWworICBibGFoIGE7CitdXSAkZWxpZiBpIDw9IDIg
W1sKKyAgYmxhaCBiOworXV0gJGVsc2UgW1sKKyAgYmxhaCBjOworXV0KK307CisKK11dCitgYGAK
Kword2lsbCBiZSB0cmFuc2xhdGVkIGJ5IHRoZSBQdW1wIGNvbXBpbGVyIHRvOgorCitgYGAKKy8v
IEZvbzAgZG9lcyBibGFoIGZvciAwLWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBO
PgorY2xhc3MgRm9vMCB7CisgIGJsYWggYTsKK307CisKKy8vIEZvbzEgZG9lcyBibGFoIGZvciAx
LWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBBMT4KK2NsYXNz
IEZvbzEgeworICBibGFoIGI7Cit9OworCisvLyBGb28yIGRvZXMgYmxhaCBmb3IgMi1hcnkgcHJl
ZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgor
Y2xhc3MgRm9vMiB7CisgIGJsYWggYjsKK307CisKKy8vIEZvbzMgZG9lcyBibGFoIGZvciAzLWFy
eSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUg
QTIsIHR5cGVuYW1lIEEzPgorY2xhc3MgRm9vMyB7CisgIGJsYWggYzsKK307CitgYGAKKworSW4g
YW5vdGhlciBleGFtcGxlLAorCitgYGAKKyRyYW5nZSBpIDEuLm4KK0Z1bmMoJGZvciBpICsgW1th
JGldXSk7CiskJCBUaGUgdGV4dCBiZXR3ZWVuIGkgYW5kIFtbIGlzIHRoZSBzZXBhcmF0b3IgYmV0
d2VlbiBpdGVyYXRpb25zLgorYGBgCisKK3dpbGwgZ2VuZXJhdGUgb25lIG9mIHRoZSBmb2xsb3dp
bmcgbGluZXMgKHdpdGhvdXQgdGhlIGNvbW1lbnRzKSwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBv
ZiBgbmA6CisKK2BgYAorRnVuYygpOyAgICAgICAgICAgICAgLy8gSWYgbiBpcyAwLgorRnVuYyhh
MSk7ICAgICAgICAgICAgLy8gSWYgbiBpcyAxLgorRnVuYyhhMSArIGEyKTsgICAgICAgLy8gSWYg
biBpcyAyLgorRnVuYyhhMSArIGEyICsgYTMpOyAgLy8gSWYgbiBpcyAzLgorLy8gQW5kIHNvIG9u
Li4uCitgYGAKKworIyMgQ29uc3RydWN0cyAjIworCitXZSBzdXBwb3J0IHRoZSBmb2xsb3dpbmcg
bWV0YSBwcm9ncmFtbWluZyBjb25zdHJ1Y3RzOgorCit8IGAkdmFyIGlkID0gZXhwYCB8IERlZmlu
ZXMgYSBuYW1lZCBjb25zdGFudCB2YWx1ZS4gYCRpZGAgaXMgdmFsaWQgdXRpbCB0aGUgZW5kIG9m
IHRoZSBjdXJyZW50IG1ldGEgbGV4aWNhbCBibG9jay4gfAorfDotLS0tLS0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYCRyYW5nZSBpZCBleHAu
LmV4cGAgfCBTZXRzIHRoZSByYW5nZSBvZiBhbiBpdGVyYXRpb24gdmFyaWFibGUsIHdoaWNoIGNh
biBiZSByZXVzZWQgaW4gbXVsdGlwbGUgbG9vcHMgbGF0ZXIuICAgICAgICAgIHwKK3wgYCRmb3Ig
aWQgc2VwIFtbIGNvZGUgXV1gIHwgSXRlcmF0aW9uLiBUaGUgcmFuZ2Ugb2YgYGlkYCBtdXN0IGhh
dmUgYmVlbiBkZWZpbmVkIGVhcmxpZXIuIGAkaWRgIGlzIHZhbGlkIGluIGBjb2RlYC4gICAgICAg
ICB8Cit8IGAkKCQpYCAgICAgICAgICB8IEdlbmVyYXRlcyBhIHNpbmdsZSBgJGAgY2hhcmFjdGVy
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorfCBgJGlkYCAgICAgICAgICAgfCBWYWx1ZSBvZiB0aGUgbmFtZWQgY29uc3RhbnQg
b3IgaXRlcmF0aW9uIHZhcmlhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKK3wgYCQoZXhwKWAgICAgICAgIHwgVmFsdWUgb2YgdGhlIGV4cHJlc3Npb24u
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8Cit8IGAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2hgIHwgQ29u
ZGl0aW9uYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBbWyBjb2RlIF1dYCAgICB8
IE1ldGEgbGV4aWNhbCBibG9jay4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgY3BwX2NvZGVgICAg
ICAgfCBSYXcgQysrIGNvZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYCQkIGNvbW1l
bnRgICAgIHwgTWV0YSBjb21tZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisKKyoqTm90
ZToqKiBUbyBnaXZlIHRoZSB1c2VyIHNvbWUgZnJlZWRvbSBpbiBmb3JtYXR0aW5nIHRoZSBQdW1w
IHNvdXJjZQorY29kZSwgUHVtcCBpZ25vcmVzIGEgbmV3LWxpbmUgY2hhcmFjdGVyIGlmIGl0J3Mg
cmlnaHQgYWZ0ZXIgYCRmb3IgZm9vYAorb3IgbmV4dCB0byBgW1tgIG9yIGBdXWAuIFdpdGhvdXQg
dGhpcyBydWxlIHlvdSdsbCBvZnRlbiBiZSBmb3JjZWQgdG8gd3JpdGUKK3ZlcnkgbG9uZyBsaW5l
cyB0byBnZXQgdGhlIGRlc2lyZWQgb3V0cHV0LiBUaGVyZWZvcmUgc29tZXRpbWVzIHlvdSBtYXkK
K25lZWQgdG8gaW5zZXJ0IGFuIGV4dHJhIG5ldy1saW5lIGluIHN1Y2ggcGxhY2VzIGZvciBhIG5l
dy1saW5lIHRvIHNob3cKK3VwIGluIHlvdXIgb3V0cHV0LgorCisjIyBHcmFtbWFyICMjCisKK2Bg
YAorY29kZSA6Oj0gYXRvbWljX2NvZGUqCithdG9taWNfY29kZSA6Oj0gJHZhciBpZCA9IGV4cAor
ICAgIHwgJHZhciBpZCA9IFtbIGNvZGUgXV0KKyAgICB8ICRyYW5nZSBpZCBleHAuLmV4cAorICAg
IHwgJGZvciBpZCBzZXAgW1sgY29kZSBdXQorICAgIHwgJCgkKQorICAgIHwgJGlkCisgICAgfCAk
KGV4cCkKKyAgICB8ICRpZiBleHAgW1sgY29kZSBdXSBlbHNlX2JyYW5jaAorICAgIHwgW1sgY29k
ZSBdXQorICAgIHwgY3BwX2NvZGUKK3NlcCA6Oj0gY3BwX2NvZGUgfCBlbXB0eV9zdHJpbmcKK2Vs
c2VfYnJhbmNoIDo6PSAkZWxzZSBbWyBjb2RlIF1dCisgICAgfCAkZWxpZiBleHAgW1sgY29kZSBd
XSBlbHNlX2JyYW5jaAorICAgIHwgZW1wdHlfc3RyaW5nCitleHAgOjo9IHNpbXBsZV9leHByZXNz
aW9uX2luX1B5dGhvbl9zeW50YXgKK2BgYAorCisjIyBDb2RlICMjCisKK1lvdSBjYW4gZmluZCB0
aGUgc291cmNlIGNvZGUgb2YgUHVtcCBpbiBbc2NyaXB0cy9wdW1wLnB5XSguLi9zY3JpcHRzL3B1
bXAucHkpLiBJdCBpcyBzdGlsbAordmVyeSB1bnBvbGlzaGVkIGFuZCBsYWNrcyBhdXRvbWF0ZWQg
dGVzdHMsIGFsdGhvdWdoIGl0IGhhcyBiZWVuCitzdWNjZXNzZnVsbHkgdXNlZCBtYW55IHRpbWVz
LiBJZiB5b3UgZmluZCBhIGNoYW5jZSB0byB1c2UgaXQgaW4geW91cgorcHJvamVjdCwgcGxlYXNl
IGxldCB1cyBrbm93IHdoYXQgeW91IHRoaW5rISAgV2UgYWxzbyB3ZWxjb21lIGhlbHAgb24KK2lt
cHJvdmluZyBQdW1wLgorCisjIyBSZWFsIEV4YW1wbGVzICMjCisKK1lvdSBjYW4gZmluZCByZWFs
LXdvcmxkIGFwcGxpY2F0aW9ucyBvZiBQdW1wIGluIFtHb29nbGUgVGVzdF0oaHR0cDovL3d3dy5n
b29nbGUuY29tL2NvZGVzZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3BhY2thZ2UlM0FodHRwJTNB
JTJGJTJGZ29vZ2xldGVzdFwuZ29vZ2xlY29kZVwuY29tKSBhbmQgW0dvb2dsZSBNb2NrXShodHRw
Oi8vd3d3Lmdvb2dsZS5jb20vY29kZXNlYXJjaD9xPWZpbGUlM0FcLnB1bXAlMjQrcGFja2FnZSUz
QWh0dHAlM0ElMkYlMkZnb29nbGVtb2NrXC5nb29nbGVjb2RlXC5jb20pLiAgVGhlIHNvdXJjZSBm
aWxlIGBmb28uaC5wdW1wYCBnZW5lcmF0ZXMgYGZvby5oYC4KKworIyMgVGlwcyAjIworCisgICog
SWYgYSBtZXRhIHZhcmlhYmxlIGlzIGZvbGxvd2VkIGJ5IGEgbGV0dGVyIG9yIGRpZ2l0LCB5b3Ug
Y2FuIHNlcGFyYXRlIHRoZW0gdXNpbmcgYFtbXV1gLCB3aGljaCBpbnNlcnRzIGFuIGVtcHR5IHN0
cmluZy4gRm9yIGV4YW1wbGUgYEZvbyRqW1tdXUhlbHBlcmAgZ2VuZXJhdGUgYEZvbzFIZWxwZXJg
IHdoZW4gYGpgIGlzIDEuCisgICogVG8gYXZvaWQgZXh0cmEtbG9uZyBQdW1wIHNvdXJjZSBsaW5l
cywgeW91IGNhbiBicmVhayBhIGxpbmUgYW55d2hlcmUgeW91IHdhbnQgYnkgaW5zZXJ0aW5nIGBb
W11dYCBmb2xsb3dlZCBieSBhIG5ldyBsaW5lLiBTaW5jZSBhbnkgbmV3LWxpbmUgY2hhcmFjdGVy
IG5leHQgdG8gYFtbYCBvciBgXV1gIGlzIGlnbm9yZWQsIHRoZSBnZW5lcmF0ZWQgY29kZSB3b24n
dCBjb250YWluIHRoaXMgbmV3IGxpbmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9kb2NzL1YxXzZfU2FtcGxlcy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3Mv
VjFfNl9TYW1wbGVzLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyMWQyMDA1NjczNTQ1N2Y2ZjQ5YWVjYzYxMjE5
ZGFkMjI2MTJiZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9k
b2NzL1YxXzZfU2FtcGxlcy5tZApAQCAtMCwwICsxLDE0IEBACitJZiB5b3UncmUgbGlrZSB1cywg
eW91J2QgbGlrZSB0byBsb29rIGF0IHNvbWUgR29vZ2xlIFRlc3Qgc2FtcGxlIGNvZGUuICBUaGUK
K1tzYW1wbGVzIGZvbGRlcl0oLi4vc2FtcGxlcykgaGFzIGEgbnVtYmVyIG9mIHdlbGwtY29tbWVu
dGVkIHNhbXBsZXMgc2hvd2luZyBob3cgdG8gdXNlIGEKK3ZhcmlldHkgb2YgR29vZ2xlIFRlc3Qg
ZmVhdHVyZXMuCisKKyAgKiBbU2FtcGxlICMxXSguLi9zYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3Qu
Y2MpIHNob3dzIHRoZSBiYXNpYyBzdGVwcyBvZiB1c2luZyBHb29nbGUgVGVzdCB0byB0ZXN0IEMr
KyBmdW5jdGlvbnMuCisgICogW1NhbXBsZSAjMl0oLi4vc2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0
LmNjKSBzaG93cyBhIG1vcmUgY29tcGxleCB1bml0IHRlc3QgZm9yIGEgY2xhc3Mgd2l0aCBtdWx0
aXBsZSBtZW1iZXIgZnVuY3Rpb25zLgorICAqIFtTYW1wbGUgIzNdKC4uL3NhbXBsZXMvc2FtcGxl
M191bml0dGVzdC5jYykgdXNlcyBhIHRlc3QgZml4dHVyZS4KKyAgKiBbU2FtcGxlICM0XSguLi9z
YW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QuY2MpIGlzIGFub3RoZXIgYmFzaWMgZXhhbXBsZSBvZiB1
c2luZyBHb29nbGUgVGVzdC4KKyAgKiBbU2FtcGxlICM1XSguLi9zYW1wbGVzL3NhbXBsZTVfdW5p
dHRlc3QuY2MpIHRlYWNoZXMgaG93IHRvIHJldXNlIGEgdGVzdCBmaXh0dXJlIGluIG11bHRpcGxl
IHRlc3QgY2FzZXMgYnkgZGVyaXZpbmcgc3ViLWZpeHR1cmVzIGZyb20gaXQuCisgICogW1NhbXBs
ZSAjNl0oLi4vc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjKSBkZW1vbnN0cmF0ZXMgdHlwZS1w
YXJhbWV0ZXJpemVkIHRlc3RzLgorICAqIFtTYW1wbGUgIzddKC4uL3NhbXBsZXMvc2FtcGxlN191
bml0dGVzdC5jYykgdGVhY2hlcyB0aGUgYmFzaWNzIG9mIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dHMuCisgICogW1NhbXBsZSAjOF0oLi4vc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjKSBzaG93
cyB1c2luZyBgQ29tYmluZSgpYCBpbiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorICAqIFtT
YW1wbGUgIzldKC4uL3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYykgc2hvd3MgdXNlIG9mIHRo
ZSBsaXN0ZW5lciBBUEkgdG8gbW9kaWZ5IEdvb2dsZSBUZXN0J3MgY29uc29sZSBvdXRwdXQgYW5k
IHRoZSB1c2Ugb2YgaXRzIHJlZmxlY3Rpb24gQVBJIHRvIGluc3BlY3QgdGVzdCByZXN1bHRzLgor
ICAqIFtTYW1wbGUgIzEwXSguLi9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjKSBzaG93cyB1
c2Ugb2YgdGhlIGxpc3RlbmVyIEFQSSB0byBpbXBsZW1lbnQgYSBwcmltaXRpdmUgbWVtb3J5IGxl
YWsgY2hlY2tlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFf
Nl9YY29kZUd1aWRlLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV82X1hjb2Rl
R3VpZGUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmYyNGJmNTFiZmM0NTQxMmY2NThiZGRkNTNhMzMyZTE0OWQ3
NzMwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFf
Nl9YY29kZUd1aWRlLm1kCkBAIC0wLDAgKzEsOTMgQEAKKworCitUaGlzIGd1aWRlIHdpbGwgZXhw
bGFpbiBob3cgdG8gdXNlIHRoZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaW4geW91ciBYY29k
ZSBwcm9qZWN0cyBvbiBNYWMgT1MgWC4gVGhpcyB0dXRvcmlhbCBiZWdpbnMgYnkgcXVpY2tseSBl
eHBsYWluaW5nIHdoYXQgdG8gZG8gZm9yIGV4cGVyaWVuY2VkIHVzZXJzLiBBZnRlciB0aGUgcXVp
Y2sgc3RhcnQsIHRoZSBndWlkZSBnb2VzIHByb3ZpZGVzIGFkZGl0aW9uYWwgZXhwbGFuYXRpb24g
YWJvdXQgZWFjaCBzdGVwLgorCisjIFF1aWNrIFN0YXJ0ICMKKworSGVyZSBpcyB0aGUgcXVpY2sg
Z3VpZGUgZm9yIHVzaW5nIEdvb2dsZSBUZXN0IGluIHlvdXIgWGNvZGUgcHJvamVjdC4KKworICAx
LiBEb3dubG9hZCB0aGUgc291cmNlIGZyb20gdGhlIFt3ZWJzaXRlXShodHRwOi8vY29kZS5nb29n
bGUuY29tL3AvZ29vZ2xldGVzdCkgdXNpbmcgdGhpcyBjb21tYW5kOiBgc3ZuIGNoZWNrb3V0IGh0
dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay8gZ29vZ2xldGVzdC1yZWFk
LW9ubHlgCisgIDEuIE9wZW4gdXAgdGhlIGBndGVzdC54Y29kZXByb2pgIGluIHRoZSBgZ29vZ2xl
dGVzdC1yZWFkLW9ubHkveGNvZGUvYCBkaXJlY3RvcnkgYW5kIGJ1aWxkIHRoZSBndGVzdC5mcmFt
ZXdvcmsuCisgIDEuIENyZWF0ZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0IGluIHlvdXIgWGNv
ZGUgcHJvamVjdCBjYWxsZWQgc29tZXRoaW5nIGxpa2UgIlVuaXRUZXN0cyIKKyAgMS4gQWRkIHRo
ZSBndGVzdC5mcmFtZXdvcmsgdG8geW91ciBwcm9qZWN0IGFuZCBhZGQgaXQgdG8gdGhlICJMaW5r
IEJpbmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgIlVuaXRUZXN0cyIKKyAgMS4g
QWRkIHlvdXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRvIHRoZSAiQ29tcGlsZSBTb3VyY2VzIiBi
dWlsZCBwaGFzZSBvZiAiVW5pdFRlc3RzIgorICAxLiBFZGl0IHRoZSAiVW5pdFRlc3RzIiBleGVj
dXRhYmxlIGFuZCBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZWQgIkRZTERcX0ZSQU1F
V09SS1xfUEFUSCIgd2l0aCBhIHZhbHVlIGVxdWFsIHRvIHRoZSBwYXRoIHRvIHRoZSBmcmFtZXdv
cmsgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHJlbGF0aXZlIHRvIHRoZSBjb21waWxl
ZCBleGVjdXRhYmxlLgorICAxLiBCdWlsZCBhbmQgR28KKworVGhlIGZvbGxvd2luZyBzZWN0aW9u
cyBmdXJ0aGVyIGV4cGxhaW4gZWFjaCBvZiB0aGUgc3RlcHMgbGlzdGVkIGFib3ZlIGluIGRlcHRo
LCBkZXNjcmliaW5nIGluIG1vcmUgZGV0YWlsIGhvdyB0byBjb21wbGV0ZSBpdCBpbmNsdWRpbmcg
c29tZSB2YXJpYXRpb25zLgorCisjIEdldCB0aGUgU291cmNlICMKKworQ3VycmVudGx5LCB0aGUg
Z3Rlc3QuZnJhbWV3b3JrIGRpc2N1c3NlZCBoZXJlIGlzbid0IGF2YWlsYWJsZSBpbiBhIHRhZ2dl
ZCByZWxlYXNlIG9mIEdvb2dsZSBUZXN0LCBpdCBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgdHJ1
bmsuIEFzIGV4cGxhaW5lZCBhdCB0aGUgR29vZ2xlIFRlc3QgW3NpdGVdKGh0dHA6Ly9jb2RlLmdv
b2dsZS5jb20vcC9nb29nbGV0ZXN0L3NvdXJjZS9jaGVja291dCI+c3ZuKSwgeW91IGNhbiBnZXQg
dGhlIGNvZGUgZnJvbSBhbm9ueW1vdXMgU1ZOIHdpdGggdGhpcyBjb21tYW5kOgorCitgYGAKK3N2
biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvIGdv
b2dsZXRlc3QtcmVhZC1vbmx5CitgYGAKKworQWx0ZXJuYXRpdmVseSwgaWYgeW91IGFyZSB3b3Jr
aW5nIHdpdGggU3VidmVyc2lvbiBpbiB5b3VyIG93biBjb2RlIGJhc2UsIHlvdSBjYW4gYWRkIEdv
b2dsZSBUZXN0IGFzIGFuIGV4dGVybmFsIGRlcGVuZGVuY3kgdG8geW91ciBvd24gU3VidmVyc2lv
biByZXBvc2l0b3J5LiBCeSBmb2xsb3dpbmcgdGhpcyBhcHByb2FjaCwgZXZlcnlvbmUgdGhhdCBj
aGVja3Mgb3V0IHlvdXIgc3ZuIHJlcG9zaXRvcnkgd2lsbCBhbHNvIHJlY2VpdmUgYSBjb3B5IG9m
IEdvb2dsZSBUZXN0IChhIHNwZWNpZmljIHZlcnNpb24sIGlmIHlvdSB3aXNoKSB3aXRob3V0IGhh
dmluZyB0byBjaGVjayBpdCBvdXQgZXhwbGljaXRseS4gVGhpcyBtYWtlcyB0aGUgc2V0IHVwIG9m
IHlvdXIgcHJvamVjdCBzaW1wbGVyIGFuZCByZWR1Y2VzIHRoZSBjb3BpZWQgY29kZSBpbiB0aGUg
cmVwb3NpdG9yeS4KKworVG8gdXNlIGBzdm46ZXh0ZXJuYWxzYCwgZGVjaWRlIHdoZXJlIHlvdSB3
b3VsZCBsaWtlIHRvIGhhdmUgdGhlIGV4dGVybmFsIHNvdXJjZSByZXNpZGUuIFlvdSBtaWdodCBj
aG9vc2UgdG8gcHV0IHRoZSBleHRlcm5hbCBzb3VyY2UgaW5zaWRlIHRoZSB0cnVuaywgYmVjYXVz
ZSB5b3Ugd2FudCBpdCB0byBiZSBwYXJ0IG9mIHRoZSBicmFuY2ggd2hlbiB5b3UgbWFrZSBhIHJl
bGVhc2UuIEhvd2V2ZXIsIGtlZXBpbmcgaXQgb3V0c2lkZSB0aGUgdHJ1bmsgaW4gYSB2ZXJzaW9u
LXRhZ2dlZCBkaXJlY3RvcnkgY2FsbGVkIHNvbWV0aGluZyBsaWtlIGB0aGlyZC1wYXJ0eS9nb29n
bGV0ZXN0LzEuMC4xYCwgaXMgYW5vdGhlciBvcHRpb24uIE9uY2UgdGhlIGxvY2F0aW9uIGlzIGVz
dGFibGlzaGVkLCB1c2UgYHN2biBwcm9wZWRpdCBzdm46ZXh0ZXJuYWxzIF9kaXJlY3RvcnlfYCB0
byBzZXQgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgb24gYSBkaXJlY3RvcnkgaW4geW91ciBy
ZXBvc2l0b3J5LiBUaGlzIGRpcmVjdG9yeSB3b24ndCBjb250YWluIHRoZSBjb2RlLCBidXQgYmUg
aXRzIHZlcnNpb25lZCBwYXJlbnQgZGlyZWN0b3J5LgorCitUaGUgY29tbWFuZCBgc3ZuIHByb3Bl
ZGl0YCB3aWxsIGJyaW5nIHVwIHlvdXIgU3VidmVyc2lvbiBlZGl0b3IsIG1ha2luZyBlZGl0aW5n
IHRoZSBsb25nLCAocG90ZW50aWFsbHkgbXVsdGktbGluZSkgcHJvcGVydHkgc2ltcGxlci4gVGhp
cyBzYW1lIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjaGVjayBvdXQgYSB0YWdnZWQgYnJhbmNoLCBi
eSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgVVJMIChlLmcuIGBodHRwOi8vZ29vZ2xldGVzdC5nb29n
bGVjb2RlLmNvbS9zdm4vdGFncy9yZWxlYXNlLTEuMC4xYCkuIEFkZGl0aW9uYWxseSwgdGhlIHN2
bjpleHRlcm5hbHMgcHJvcGVydHkgYWxsb3dzIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgcGFydGlj
dWxhciByZXZpc2lvbiBvZiB0aGUgdHJ1bmsgd2l0aCB0aGUgYC1yXyMjX2Agb3B0aW9uIChlLmcu
IGBleHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QgLXI2MCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVj
b2RlLmNvbS9zdm4vdHJ1bmtgKS4KKworSGVyZSBpcyBhbiBleGFtcGxlIG9mIHVzaW5nIHRoZSBz
dm46ZXh0ZXJuYWxzIHByb3BlcnRpZXMgb24gYSB0cnVuayAocmVhZCB2aWEgYHN2biBwcm9wZ2V0
YCkgb2YgYSBwcm9qZWN0LiBUaGlzIHZhbHVlIGNoZWNrcyBvdXQgYSBjb3B5IG9mIEdvb2dsZSBU
ZXN0IGludG8gdGhlIGB0cnVuay9leHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QvYCBkaXJlY3Rvcnku
CisKK2BgYAorW0NvbXB1dGVyOnN2bl0gdXNlciQgc3ZuIHByb3BnZXQgc3ZuOmV4dGVybmFscyB0
cnVuaworZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNv
ZGUuY29tL3N2bi90cnVuaworYGBgCisKKyMgQWRkIHRoZSBGcmFtZXdvcmsgdG8gWW91ciBQcm9q
ZWN0ICMKKworVGhlIG5leHQgc3RlcCBpcyB0byBidWlsZCBhbmQgYWRkIHRoZSBndGVzdC5mcmFt
ZXdvcmsgdG8geW91ciBvd24gcHJvamVjdC4gVGhpcyBndWlkZSBkZXNjcmliZXMgdHdvIGNvbW1v
biB3YXlzIGJlbG93LgorCisgICogKipPcHRpb24gMSoqIC0tLSBUaGUgc2ltcGxlc3Qgd2F5IHRv
IGFkZCBHb29nbGUgVGVzdCB0byB5b3VyIG93biBwcm9qZWN0LCBpcyB0byBvcGVuIGd0ZXN0Lnhj
b2RlcHJvaiAoZm91bmQgaW4gdGhlIHhjb2RlLyBkaXJlY3Rvcnkgb2YgdGhlIEdvb2dsZSBUZXN0
IHRydW5rKSBhbmQgYnVpbGQgdGhlIGZyYW1ld29yayBtYW51YWxseS4gVGhlbiwgYWRkIHRoZSBi
dWlsdCBmcmFtZXdvcmsgaW50byB5b3VyIHByb2plY3QgdXNpbmcgdGhlICJBZGQtPkV4aXN0aW5n
IEZyYW1ld29yay4uLiIgZnJvbSB0aGUgY29udGV4dCBtZW51IG9yICJQcm9qZWN0LT5BZGQuLi4i
IGZyb20gdGhlIG1haW4gbWVudS4gVGhlIGd0ZXN0LmZyYW1ld29yayBpcyByZWxvY2F0YWJsZSBh
bmQgY29udGFpbnMgdGhlIGhlYWRlcnMgYW5kIG9iamVjdCBjb2RlIHRoYXQgeW91J2xsIG5lZWQg
dG8gbWFrZSB0ZXN0cy4gVGhpcyBtZXRob2QgcmVxdWlyZXMgcmVidWlsZGluZyBldmVyeSB0aW1l
IHlvdSB1cGdyYWRlIEdvb2dsZSBUZXN0IGluIHlvdXIgcHJvamVjdC4KKyAgKiAqKk9wdGlvbiAy
KiogLS0tIElmIHlvdSBhcmUgZ29pbmcgdG8gYmUgbGl2aW5nIG9mZiB0aGUgdHJ1bmsgb2YgR29v
Z2xlIFRlc3QsIGluY29ycG9yYXRpbmcgaXRzIGxhdGVzdCBmZWF0dXJlcyBpbnRvIHlvdXIgdW5p
dCB0ZXN0cyAob3IgYXJlIGEgR29vZ2xlIFRlc3QgZGV2ZWxvcGVyIHlvdXJzZWxmKS4gWW91J2xs
IHdhbnQgdG8gcmVidWlsZCB0aGUgZnJhbWV3b3JrIGV2ZXJ5IHRpbWUgdGhlIHNvdXJjZSB1cGRh
dGVzLiB0byBkbyB0aGlzLCB5b3UnbGwgbmVlZCB0byBhZGQgdGhlIGd0ZXN0Lnhjb2RlcHJvaiBm
aWxlLCBub3QgdGhlIGZyYW1ld29yayBpdHNlbGYsIHRvIHlvdXIgb3duIFhjb2RlIHByb2plY3Qu
IFRoZW4sIGZyb20gdGhlIGJ1aWxkIHByb2R1Y3RzIHRoYXQgYXJlIHJldmVhbGVkIGJ5IHRoZSBw
cm9qZWN0J3MgZGlzY2xvc3VyZSB0cmlhbmdsZSwgeW91IGNhbiBmaW5kIHRoZSBndGVzdC5mcmFt
ZXdvcmssIHdoaWNoIGNhbiBiZSBhZGRlZCB0byB5b3VyIHRhcmdldHMgKGRpc2N1c3NlZCBiZWxv
dykuCisKKyMgTWFrZSBhIFRlc3QgVGFyZ2V0ICMKKworVG8gc3RhcnQgd3JpdGluZyB0ZXN0cywg
bWFrZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0LiBUaGlzIHRhcmdldCB0ZW1wbGF0ZSBpcyBh
dmFpbGFibGUgdW5kZXIgQlNELCBDb2NvYSwgb3IgQ2FyYm9uLiBBZGQgeW91ciB1bml0IHRlc3Qg
c291cmNlIGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJjZXMiIGJ1aWxkIHBoYXNlIG9mIHRoZSB0
YXJnZXQuCisKK05leHQsIHlvdSdsbCB3YW50IHRvIGFkZCBndGVzdC5mcmFtZXdvcmsgaW4gdHdv
IGRpZmZlcmVudCB3YXlzLCBkZXBlbmRpbmcgdXBvbiB3aGljaCBvcHRpb24geW91IGNob3NlIGFi
b3ZlLgorCisgICogKipPcHRpb24gMSoqIC0tLSBEdXJpbmcgY29tcGlsYXRpb24sIFhjb2RlIHdp
bGwgbmVlZCB0byBrbm93IHRoYXQgeW91IGFyZSBsaW5raW5nIGFnYWluc3QgdGhlIGd0ZXN0LmZy
YW1ld29yay4gQWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8gdGhlICJMaW5rIEJpbmFyeSB3aXRo
IExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gVGhpcyB3aWxsIGlu
Y2x1ZGUgdGhlIEdvb2dsZSBUZXN0IGhlYWRlcnMgaW4geW91ciBoZWFkZXIgc2VhcmNoIHBhdGgs
IGFuZCB3aWxsIHRlbGwgdGhlIGxpbmtlciB3aGVyZSB0byBmaW5kIHRoZSBsaWJyYXJ5LgorICAq
ICoqT3B0aW9uIDIqKiAtLS0gSWYgeW91ciB3b3JraW5nIG91dCBvZiB0aGUgdHJ1bmssIHlvdSds
bCBhbHNvIHdhbnQgdG8gYWRkIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyICJMaW5rIEJpbmFyeSB3
aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gSW4gYWRkaXRp
b24sIHlvdSdsbCAgd2FudCB0byBhZGQgdGhlIGd0ZXN0LmZyYW1ld29yayBhcyBhIGRlcGVuZGVu
Y3kgdG8geW91ciB1bml0IHRlc3QgdGFyZ2V0LiBUaGlzIHdheSwgWGNvZGUgd2lsbCBtYWtlIHN1
cmUgdGhhdCBndGVzdC5mcmFtZXdvcmsgaXMgdXAgdG8gZGF0ZSwgZXZlcnkgdGltZSB5b3VyIGJ1
aWxkIHlvdXIgdGFyZ2V0LiBGaW5hbGx5LCBpZiB5b3UgZG9uJ3Qgc2hhcmUgYnVpbGQgZGlyZWN0
b3JpZXMgd2l0aCBHb29nbGUgVGVzdCwgeW91J2xsIGhhdmUgdG8gY29weSB0aGUgZ3Rlc3QuZnJh
bWV3b3JrIGludG8geW91ciBvd24gYnVpbGQgcHJvZHVjdHMgZGlyZWN0b3J5IHVzaW5nIGEgIlJ1
biBTY3JpcHQiIGJ1aWxkIHBoYXNlLgorCisjIFNldCBVcCB0aGUgRXhlY3V0YWJsZSBSdW4gRW52
aXJvbm1lbnQgIworCitTaW5jZSB0aGUgdW5pdCB0ZXN0IGV4ZWN1dGFibGUgaXMgYSBzaGVsbCB0
b29sLCBpdCBkb2Vzbid0IGhhdmUgYSBidW5kbGUgd2l0aCBhIGBDb250ZW50cy9GcmFtZXdvcmtz
YCBkaXJlY3RvcnksIGluIHdoaWNoIHRvIHBsYWNlIGd0ZXN0LmZyYW1ld29yay4gSW5zdGVhZCwg
dGhlIGR5bmFtaWMgbGlua2VyIG11c3QgYmUgdG9sZCBhdCBydW50aW1lIHRvIHNlYXJjaCBmb3Ig
dGhlIGZyYW1ld29yayBpbiBhbm90aGVyIGxvY2F0aW9uLiBUaGlzIGNhbiBiZSBhY2NvbXBsaXNo
ZWQgYnkgc2V0dGluZyB0aGUgIkRZTERcX0ZSQU1FV09SS1xfUEFUSCIgZW52aXJvbm1lbnQgdmFy
aWFibGUgaW4gdGhlICJFZGl0IEFjdGl2ZSBFeGVjdXRhYmxlIC4uLiIgQXJndW1lbnRzIHRhYiwg
dW5kZXIgIlZhcmlhYmxlcyB0byBiZSBzZXQgaW4gdGhlIGVudmlyb25tZW50OiIuIFRoZSBwYXRo
IGZvciB0aGlzIHZhbHVlIGlzIHRoZSBwYXRoIChyZWxhdGl2ZSBvciBhYnNvbHV0ZSkgb2YgdGhl
IGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsuCisKK0lmIHlvdSBoYXZl
bid0IHNldCB1cCB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRILCBjb3JyZWN0bHksIHlvdSBtaWdo
dCBnZXQgYSBtZXNzYWdlIGxpa2UgdGhpczoKKworYGBgCitbU2Vzc2lvbiBzdGFydGVkIGF0IDIw
MDgtMDgtMTUgMDY6MjM6NTcgLTA2MDAuXQorICBkeWxkOiBMaWJyYXJ5IG5vdCBsb2FkZWQ6IEBs
b2FkZXJfcGF0aC8uLi9GcmFtZXdvcmtzL2d0ZXN0LmZyYW1ld29yay9WZXJzaW9ucy9BL2d0ZXN0
CisgICAgUmVmZXJlbmNlZCBmcm9tOiAvVXNlcnMvdXNlcm5hbWUvRG9jdW1lbnRzL1NhbmRib3gv
Z3Rlc3RTYW1wbGUvYnVpbGQvRGVidWcvV2lkZ2V0RnJhbWV3b3JrVGVzdAorICAgIFJlYXNvbjog
aW1hZ2Ugbm90IGZvdW5kCitgYGAKKworVG8gY29ycmVjdCB0aGlzIHByb2JsZW0sIGdvdCB0byB0
aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGV4ZWN1dGFibGUgbmFtZWQgaW4gIlJlZmVyZW5j
ZWQgZnJvbToiIHZhbHVlIGluIHRoZSBlcnJvciBtZXNzYWdlIGFib3ZlLiBUaGVuLCB3aXRoIHRo
ZSB0ZXJtaW5hbCBpbiB0aGlzIGxvY2F0aW9uLCBmaW5kIHRoZSByZWxhdGl2ZSBwYXRoIHRvIHRo
ZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrLiBUaGF0IGlzIHRoZSB2
YWx1ZSB5b3UnbGwgbmVlZCB0byBzZXQgYXMgdGhlIERZTERcX0ZSQU1FV09SS1xfUEFUSC4KKwor
IyBCdWlsZCBhbmQgR28gIworCitOb3csIHdoZW4geW91IGNsaWNrICJCdWlsZCBhbmQgR28iLCB0
aGUgdGVzdCB3aWxsIGJlIGV4ZWN1dGVkLiBEdW1waW5nIG91dCBzb21ldGhpbmcgbGlrZSB0aGlz
OgorCitgYGAKK1tTZXNzaW9uIHN0YXJ0ZWQgYXQgMjAwOC0wOC0wNiAwNjozNjoxMyAtMDYwMC5d
CitbPT09PT09PT09PV0gUnVubmluZyAyIHRlc3RzIGZyb20gMSB0ZXN0IGNhc2UuCitbLS0tLS0t
LS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgorWy0tLS0tLS0tLS1dIDIgdGVz
dHMgZnJvbSBXaWRnZXRJbml0aWFsaXplclRlc3QKK1sgUlVOICAgICAgXSBXaWRnZXRJbml0aWFs
aXplclRlc3QuVGVzdENvbnN0cnVjdG9yCitbICAgICAgIE9LIF0gV2lkZ2V0SW5pdGlhbGl6ZXJU
ZXN0LlRlc3RDb25zdHJ1Y3RvcgorWyBSVU4gICAgICBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5U
ZXN0Q29udmVyc2lvbgorWyAgICAgICBPSyBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29u
dmVyc2lvbgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgor
Wz09PT09PT09PT1dIDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZSByYW4uCitbICBQQVNTRUQgIF0g
MiB0ZXN0cy4KKworVGhlIERlYnVnZ2VyIGhhcyBleGl0ZWQgd2l0aCBzdGF0dXMgMC4gIAorYGBg
CisKKyMgU3VtbWFyeSAjCisKK1VuaXQgdGVzdGluZyBpcyBhIHZhbHVhYmxlIHdheSB0byBlbnN1
cmUgeW91ciBkYXRhIG1vZGVsIHN0YXlzIHZhbGlkIGV2ZW4gZHVyaW5nIHJhcGlkIGRldmVsb3Bt
ZW50IG9yIHJlZmFjdG9yaW5nLiBUaGUgR29vZ2xlIFRlc3RpbmcgRnJhbWV3b3JrIGlzIGEgZ3Jl
YXQgdW5pdCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBhbmQgQysrIHdoaWNoIGludGVncmF0ZXMg
d2VsbCB3aXRoIGFuIFhjb2RlIGRldmVsb3BtZW50IGVudmlyb25tZW50LgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3Mv
VjFfN19BZHZhbmNlZEd1aWRlLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV83
X0FkdmFuY2VkR3VpZGUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ0YWY4ZjM2NmFhNmFjYTgxNDQwZGJkNjY1
OWI1NGJlYWUzMTk5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2RvY3MvVjFfN19BZHZhbmNlZEd1aWRlLm1kCkBAIC0wLDAgKzEsMjE4MSBAQAorCisKK05vdyB0
aGF0IHlvdSBoYXZlIHJlYWQgW1ByaW1lcl0oVjFfN19QcmltZXIubWQpIGFuZCBsZWFybmVkIGhv
dyB0byB3cml0ZSB0ZXN0cwordXNpbmcgR29vZ2xlIFRlc3QsIGl0J3MgdGltZSB0byBsZWFybiBz
b21lIG5ldyB0cmlja3MuIFRoaXMgZG9jdW1lbnQKK3dpbGwgc2hvdyB5b3UgbW9yZSBhc3NlcnRp
b25zIGFzIHdlbGwgYXMgaG93IHRvIGNvbnN0cnVjdCBjb21wbGV4CitmYWlsdXJlIG1lc3NhZ2Vz
LCBwcm9wYWdhdGUgZmF0YWwgZmFpbHVyZXMsIHJldXNlIGFuZCBzcGVlZCB1cCB5b3VyCit0ZXN0
IGZpeHR1cmVzLCBhbmQgdXNlIHZhcmlvdXMgZmxhZ3Mgd2l0aCB5b3VyIHRlc3RzLgorCisjIE1v
cmUgQXNzZXJ0aW9ucyAjCisKK1RoaXMgc2VjdGlvbiBjb3ZlcnMgc29tZSBsZXNzIGZyZXF1ZW50
bHkgdXNlZCwgYnV0IHN0aWxsIHNpZ25pZmljYW50LAorYXNzZXJ0aW9ucy4KKworIyMgRXhwbGlj
aXQgU3VjY2VzcyBhbmQgRmFpbHVyZSAjIworCitUaGVzZSB0aHJlZSBhc3NlcnRpb25zIGRvIG5v
dCBhY3R1YWxseSB0ZXN0IGEgdmFsdWUgb3IgZXhwcmVzc2lvbi4gSW5zdGVhZCwKK3RoZXkgZ2Vu
ZXJhdGUgYSBzdWNjZXNzIG9yIGZhaWx1cmUgZGlyZWN0bHkuIExpa2UgdGhlIG1hY3JvcyB0aGF0
IGFjdHVhbGx5CitwZXJmb3JtIGEgdGVzdCwgeW91IG1heSBzdHJlYW0gYSBjdXN0b20gZmFpbHVy
ZSBtZXNzYWdlIGludG8gdGhlIHRoZW0uCisKK3wgYFNVQ0NFRUQoKTtgIHwKK3w6LS0tLS0tLS0t
LS0tLXwKKworR2VuZXJhdGVzIGEgc3VjY2Vzcy4gVGhpcyBkb2VzIE5PVCBtYWtlIHRoZSBvdmVy
YWxsIHRlc3Qgc3VjY2VlZC4gQSB0ZXN0IGlzCitjb25zaWRlcmVkIHN1Y2Nlc3NmdWwgb25seSBp
ZiBub25lIG9mIGl0cyBhc3NlcnRpb25zIGZhaWwgZHVyaW5nIGl0cyBleGVjdXRpb24uCisKK05v
dGU6IGBTVUNDRUVEKClgIGlzIHB1cmVseSBkb2N1bWVudGFyeSBhbmQgY3VycmVudGx5IGRvZXNu
J3QgZ2VuZXJhdGUgYW55Cit1c2VyLXZpc2libGUgb3V0cHV0LiBIb3dldmVyLCB3ZSBtYXkgYWRk
IGBTVUNDRUVEKClgIG1lc3NhZ2VzIHRvIEdvb2dsZSBUZXN0J3MKK291dHB1dCBpbiB0aGUgZnV0
dXJlLgorCit8IGBGQUlMKCk7YCAgfCBgQUREX0ZBSUxVUkUoKTtgIHwgYEFERF9GQUlMVVJFX0FU
KCJgX2ZpbGVcX3BhdGhfYCIsIGBfbGluZVxfbnVtYmVyX2ApO2AgfAorfDotLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXwKKworYEZBSUwoKWAgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSwg
d2hpbGUgYEFERF9GQUlMVVJFKClgIGFuZCBgQUREX0ZBSUxVUkVfQVQoKWAgZ2VuZXJhdGUgYSBu
b25mYXRhbAorZmFpbHVyZS4gVGhlc2UgYXJlIHVzZWZ1bCB3aGVuIGNvbnRyb2wgZmxvdywgcmF0
aGVyIHRoYW4gYSBCb29sZWFuIGV4cHJlc3Npb24sCitkZXRlcmVtaW5lcyB0aGUgdGVzdCdzIHN1
Y2Nlc3Mgb3IgZmFpbHVyZS4gRm9yIGV4YW1wbGUsIHlvdSBtaWdodCB3YW50IHRvIHdyaXRlCitz
b21ldGhpbmcgbGlrZToKKworYGBgCitzd2l0Y2goZXhwcmVzc2lvbikgeworICBjYXNlIDE6IC4u
LiBzb21lIGNoZWNrcyAuLi4KKyAgY2FzZSAyOiAuLi4gc29tZSBvdGhlciBjaGVja3MKKyAgLi4u
CisgIGRlZmF1bHQ6IEZBSUwoKSA8PCAiV2Ugc2hvdWxkbid0IGdldCBoZXJlLiI7Cit9CitgYGAK
KworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIEV4Y2VwdGlvbiBB
c3NlcnRpb25zICMjCisKK1RoZXNlIGFyZSBmb3IgdmVyaWZ5aW5nIHRoYXQgYSBwaWVjZSBvZiBj
b2RlIHRocm93cyAob3IgZG9lcyBub3QKK3Rocm93KSBhbiBleGNlcHRpb24gb2YgdGhlIGdpdmVu
IHR5cGU6CisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiog
fCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfVEhST1coYF9zdGF0ZW1lbnRfLCBf
ZXhjZXB0aW9uXF90eXBlX2ApO2AgIHwgYEVYUEVDVF9USFJPVyhgX3N0YXRlbWVudF8sIF9leGNl
cHRpb25cX3R5cGVfYCk7YCAgfCBfc3RhdGVtZW50XyB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHRo
ZSBnaXZlbiB0eXBlICB8Cit8IGBBU1NFUlRfQU5ZX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAg
ICAgICAgICAgICAgfCBgRVhQRUNUX0FOWV9USFJPVyhgX3N0YXRlbWVudF9gKTtgICAgICAgICAg
ICAgICAgIHwgX3N0YXRlbWVudF8gdGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiBhbnkgdHlwZSAgICAg
ICAgfAorfCBgQVNTRVJUX05PX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAg
IHwgYEVYUEVDVF9OT19USFJPVyhgX3N0YXRlbWVudF9gKTtgICAgICAgICAgICAgICAgICB8IF9z
dGF0ZW1lbnRfIGRvZXNuJ3QgdGhyb3cgYW55IGV4Y2VwdGlvbiAgICAgICAgICAgIHwKKworRXhh
bXBsZXM6CisKK2BgYAorQVNTRVJUX1RIUk9XKEZvbyg1KSwgYmFyX2V4Y2VwdGlvbik7CisKK0VY
UEVDVF9OT19USFJPVyh7CisgIGludCBuID0gNTsKKyAgQmFyKCZuKTsKK30pOworYGBgCisKK19B
dmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuMS4wLgor
CisjIyBQcmVkaWNhdGUgQXNzZXJ0aW9ucyBmb3IgQmV0dGVyIEVycm9yIE1lc3NhZ2VzICMjCisK
K0V2ZW4gdGhvdWdoIEdvb2dsZSBUZXN0IGhhcyBhIHJpY2ggc2V0IG9mIGFzc2VydGlvbnMsIHRo
ZXkgY2FuIG5ldmVyIGJlCitjb21wbGV0ZSwgYXMgaXQncyBpbXBvc3NpYmxlIChub3IgYSBnb29k
IGlkZWEpIHRvIGFudGljaXBhdGUgYWxsIHRoZSBzY2VuYXJpb3MKK2EgdXNlciBtaWdodCBydW4g
aW50by4gVGhlcmVmb3JlLCBzb21ldGltZXMgYSB1c2VyIGhhcyB0byB1c2UgYEVYUEVDVF9UUlVF
KClgCit0byBjaGVjayBhIGNvbXBsZXggZXhwcmVzc2lvbiwgZm9yIGxhY2sgb2YgYSBiZXR0ZXIg
bWFjcm8uIFRoaXMgaGFzIHRoZSBwcm9ibGVtCitvZiBub3Qgc2hvd2luZyB5b3UgdGhlIHZhbHVl
cyBvZiB0aGUgcGFydHMgb2YgdGhlIGV4cHJlc3Npb24sIG1ha2luZyBpdCBoYXJkIHRvCit1bmRl
cnN0YW5kIHdoYXQgd2VudCB3cm9uZy4gQXMgYSB3b3JrYXJvdW5kLCBzb21lIHVzZXJzIGNob29z
ZSB0byBjb25zdHJ1Y3QgdGhlCitmYWlsdXJlIG1lc3NhZ2UgYnkgdGhlbXNlbHZlcywgc3RyZWFt
aW5nIGl0IGludG8gYEVYUEVDVF9UUlVFKClgLiBIb3dldmVyLCB0aGlzCitpcyBhd2t3YXJkIGVz
cGVjaWFsbHkgd2hlbiB0aGUgZXhwcmVzc2lvbiBoYXMgc2lkZS1lZmZlY3RzIG9yIGlzIGV4cGVu
c2l2ZSB0bworZXZhbHVhdGUuCisKK0dvb2dsZSBUZXN0IGdpdmVzIHlvdSB0aHJlZSBkaWZmZXJl
bnQgb3B0aW9ucyB0byBzb2x2ZSB0aGlzIHByb2JsZW06CisKKyMjIyBVc2luZyBhbiBFeGlzdGlu
ZyBCb29sZWFuIEZ1bmN0aW9uICMjIworCitJZiB5b3UgYWxyZWFkeSBoYXZlIGEgZnVuY3Rpb24g
b3IgYSBmdW5jdG9yIHRoYXQgcmV0dXJucyBgYm9vbGAgKG9yIGEgdHlwZQordGhhdCBjYW4gYmUg
aW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYGJvb2xgKSwgeW91IGNhbiB1c2UgaXQgaW4gYSBfcHJl
ZGljYXRlCithc3NlcnRpb25fIHRvIGdldCB0aGUgZnVuY3Rpb24gYXJndW1lbnRzIHByaW50ZWQg
Zm9yIGZyZWU6CisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9u
KiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfUFJFRDEoYF9wcmVkMSwgdmFs
MV9gKTtgICAgICAgIHwgYEVYUEVDVF9QUkVEMShgX3ByZWQxLCB2YWwxX2ApO2AgfCBfcHJlZDEo
dmFsMSlfIHJldHVybnMgdHJ1ZSB8Cit8IGBBU1NFUlRfUFJFRDIoYF9wcmVkMiwgdmFsMSwgdmFs
Ml9gKTtgIHwgYEVYUEVDVF9QUkVEMihgX3ByZWQyLCB2YWwxLCB2YWwyX2ApO2AgfCAgX3ByZWQy
KHZhbDEsIHZhbDIpXyByZXR1cm5zIHRydWUgfAorfCAgLi4uICAgICAgICAgICAgICAgIHwgLi4u
ICAgICAgICAgICAgICAgICAgICB8IC4uLiAgICAgICAgICB8CisKK0luIHRoZSBhYm92ZSwgX3By
ZWRuXyBpcyBhbiBfbl8tYXJ5IHByZWRpY2F0ZSBmdW5jdGlvbiBvciBmdW5jdG9yLCB3aGVyZQor
X3ZhbDFfLCBfdmFsMl8sIC4uLiwgYW5kIF92YWxuXyBhcmUgaXRzIGFyZ3VtZW50cy4gVGhlIGFz
c2VydGlvbiBzdWNjZWVkcworaWYgdGhlIHByZWRpY2F0ZSByZXR1cm5zIGB0cnVlYCB3aGVuIGFw
cGxpZWQgdG8gdGhlIGdpdmVuIGFyZ3VtZW50cywgYW5kIGZhaWxzCitvdGhlcndpc2UuIFdoZW4g
dGhlIGFzc2VydGlvbiBmYWlscywgaXQgcHJpbnRzIHRoZSB2YWx1ZSBvZiBlYWNoIGFyZ3VtZW50
LiBJbgorZWl0aGVyIGNhc2UsIHRoZSBhcmd1bWVudHMgYXJlIGV2YWx1YXRlZCBleGFjdGx5IG9u
Y2UuCisKK0hlcmUncyBhbiBleGFtcGxlLiBHaXZlbgorCitgYGAKKy8vIFJldHVybnMgdHJ1ZSBp
ZmYgbSBhbmQgbiBoYXZlIG5vIGNvbW1vbiBkaXZpc29ycyBleGNlcHQgMS4KK2Jvb2wgTXV0dWFs
bHlQcmltZShpbnQgbSwgaW50IG4pIHsgLi4uIH0KK2NvbnN0IGludCBhID0gMzsKK2NvbnN0IGlu
dCBiID0gNDsKK2NvbnN0IGludCBjID0gMTA7CitgYGAKKwordGhlIGFzc2VydGlvbiBgRVhQRUNU
X1BSRUQyKE11dHVhbGx5UHJpbWUsIGEsIGIpO2Agd2lsbCBzdWNjZWVkLCB3aGlsZSB0aGUKK2Fz
c2VydGlvbiBgRVhQRUNUX1BSRUQyKE11dHVhbGx5UHJpbWUsIGIsIGMpO2Agd2lsbCBmYWlsIHdp
dGggdGhlIG1lc3NhZ2UKKworPHByZT4KKyFNdXR1YWxseVByaW1lKGIsIGMpIGlzIGZhbHNlLCB3
aGVyZTxicj4KK2IgaXMgNDxicj4KK2MgaXMgMTA8YnI+Cis8L3ByZT4KKworKipOb3RlczoqKgor
CisgIDEuIElmIHlvdSBzZWUgYSBjb21waWxlciBlcnJvciAibm8gbWF0Y2hpbmcgZnVuY3Rpb24g
dG8gY2FsbCIgd2hlbiB1c2luZyBgQVNTRVJUX1BSRUQqYCBvciBgRVhQRUNUX1BSRUQqYCwgcGxl
YXNlIHNlZSBbdGhpc10oVjFfN19GQVEubWQjdGhlLWNvbXBpbGVyLWNvbXBsYWlucy1hYm91dC11
bmRlZmluZWQtcmVmZXJlbmNlcy10by1zb21lLXN0YXRpYy1jb25zdC1tZW1iZXItdmFyaWFibGVz
LWJ1dC1pLWRpZC1kZWZpbmUtdGhlbS1pbi10aGUtY2xhc3MtYm9keS13aGF0cy13cm9uZykgZm9y
IGhvdyB0byByZXNvbHZlIGl0LgorICAxLiBDdXJyZW50bHkgd2Ugb25seSBwcm92aWRlIHByZWRp
Y2F0ZSBhc3NlcnRpb25zIG9mIGFyaXR5IDw9IDUuIElmIHlvdSBuZWVkIGEgaGlnaGVyLWFyaXR5
IGFzc2VydGlvbiwgbGV0IHVzIGtub3cuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjCisKKyMjIyBVc2luZyBhIEZ1bmN0aW9uIFRoYXQgUmV0dXJucyBhbiBBc3NlcnRpb25S
ZXN1bHQgIyMjCisKK1doaWxlIGBFWFBFQ1RfUFJFRCooKWAgYW5kIGZyaWVuZHMgYXJlIGhhbmR5
IGZvciBhIHF1aWNrIGpvYiwgdGhlCitzeW50YXggaXMgbm90IHNhdGlzZmFjdG9yeTogeW91IGhh
dmUgdG8gdXNlIGRpZmZlcmVudCBtYWNyb3MgZm9yCitkaWZmZXJlbnQgYXJpdGllcywgYW5kIGl0
IGZlZWxzIG1vcmUgbGlrZSBMaXNwIHRoYW4gQysrLiAgVGhlCitgOjp0ZXN0aW5nOjpBc3NlcnRp
b25SZXN1bHRgIGNsYXNzIHNvbHZlcyB0aGlzIHByb2JsZW0uCisKK0FuIGBBc3NlcnRpb25SZXN1
bHRgIG9iamVjdCByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYW4gYXNzZXJ0aW9uCisod2hldGhl
ciBpdCdzIGEgc3VjY2VzcyBvciBhIGZhaWx1cmUsIGFuZCBhbiBhc3NvY2lhdGVkIG1lc3NhZ2Up
LiAgWW91CitjYW4gY3JlYXRlIGFuIGBBc3NlcnRpb25SZXN1bHRgIHVzaW5nIG9uZSBvZiB0aGVz
ZSBmYWN0b3J5CitmdW5jdGlvbnM6CisKK2BgYAorbmFtZXNwYWNlIHRlc3RpbmcgeworCisvLyBS
ZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBhbiBhc3Nl
cnRpb24gaGFzCisvLyBzdWNjZWVkZWQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uU3VjY2Vz
cygpOworCisvLyBSZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUg
dGhhdCBhbiBhc3NlcnRpb24gaGFzCisvLyBmYWlsZWQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0
aW9uRmFpbHVyZSgpOworCit9CitgYGAKKworWW91IGNhbiB0aGVuIHVzZSB0aGUgYDw8YCBvcGVy
YXRvciB0byBzdHJlYW0gbWVzc2FnZXMgdG8gdGhlCitgQXNzZXJ0aW9uUmVzdWx0YCBvYmplY3Qu
CisKK1RvIHByb3ZpZGUgbW9yZSByZWFkYWJsZSBtZXNzYWdlcyBpbiBCb29sZWFuIGFzc2VydGlv
bnMKKyhlLmcuIGBFWFBFQ1RfVFJVRSgpYCksIHdyaXRlIGEgcHJlZGljYXRlIGZ1bmN0aW9uIHRo
YXQgcmV0dXJucworYEFzc2VydGlvblJlc3VsdGAgaW5zdGVhZCBvZiBgYm9vbGAuIEZvciBleGFt
cGxlLCBpZiB5b3UgZGVmaW5lCitgSXNFdmVuKClgIGFzOgorCitgYGAKKzo6dGVzdGluZzo6QXNz
ZXJ0aW9uUmVzdWx0IElzRXZlbihpbnQgbikgeworICBpZiAoKG4gJSAyKSA9PSAwKQorICAgIHJl
dHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKKyAgZWxzZQorICAgIHJldHVybiA6
OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2RkIjsKK30KK2BgYAor
CitpbnN0ZWFkIG9mOgorCitgYGAKK2Jvb2wgSXNFdmVuKGludCBuKSB7CisgIHJldHVybiAobiAl
IDIpID09IDA7Cit9CitgYGAKKwordGhlIGZhaWxlZCBhc3NlcnRpb24gYEVYUEVDVF9UUlVFKElz
RXZlbihGaWIoNCkpKWAgd2lsbCBwcmludDoKKworPHByZT4KK1ZhbHVlIG9mOiBJc0V2ZW4oRmli
KDQpKTxicj4KK0FjdHVhbDogZmFsc2UgKCozIGlzIG9kZCopPGJyPgorRXhwZWN0ZWQ6IHRydWU8
YnI+Cis8L3ByZT4KKworaW5zdGVhZCBvZiBhIG1vcmUgb3BhcXVlCisKKzxwcmU+CitWYWx1ZSBv
ZjogSXNFdmVuKEZpYig0KSk8YnI+CitBY3R1YWw6IGZhbHNlPGJyPgorRXhwZWN0ZWQ6IHRydWU8
YnI+Cis8L3ByZT4KKworSWYgeW91IHdhbnQgaW5mb3JtYXRpdmUgbWVzc2FnZXMgaW4gYEVYUEVD
VF9GQUxTRWAgYW5kIGBBU1NFUlRfRkFMU0VgCithcyB3ZWxsLCBhbmQgYXJlIGZpbmUgd2l0aCBt
YWtpbmcgdGhlIHByZWRpY2F0ZSBzbG93ZXIgaW4gdGhlIHN1Y2Nlc3MKK2Nhc2UsIHlvdSBjYW4g
c3VwcGx5IGEgc3VjY2VzcyBtZXNzYWdlOgorCitgYGAKKzo6dGVzdGluZzo6QXNzZXJ0aW9uUmVz
dWx0IElzRXZlbihpbnQgbikgeworICBpZiAoKG4gJSAyKSA9PSAwKQorICAgIHJldHVybiA6OnRl
c3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKSA8PCBuIDw8ICIgaXMgZXZlbiI7CisgIGVsc2UKKyAg
ICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgbiA8PCAiIGlzIG9kZCI7
Cit9CitgYGAKKworVGhlbiB0aGUgc3RhdGVtZW50IGBFWFBFQ1RfRkFMU0UoSXNFdmVuKEZpYig2
KSkpYCB3aWxsIHByaW50CisKKzxwcmU+CitWYWx1ZSBvZjogSXNFdmVuKEZpYig2KSk8YnI+CitB
Y3R1YWw6IHRydWUgKDggaXMgZXZlbik8YnI+CitFeHBlY3RlZDogZmFsc2U8YnI+Cis8L3ByZT4K
KworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS40
LjEuCisKKyMjIyBVc2luZyBhIFByZWRpY2F0ZS1Gb3JtYXR0ZXIgIyMjCisKK0lmIHlvdSBmaW5k
IHRoZSBkZWZhdWx0IG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IGAoQVNTRVJUfEVYUEVDVClfUFJFRCpg
IGFuZAorYChBU1NFUlR8RVhQRUNUKV8oVFJVRXxGQUxTRSlgIHVuc2F0aXNmYWN0b3J5LCBvciBz
b21lIGFyZ3VtZW50cyB0byB5b3VyCitwcmVkaWNhdGUgZG8gbm90IHN1cHBvcnQgc3RyZWFtaW5n
IHRvIGBvc3RyZWFtYCwgeW91IGNhbiBpbnN0ZWFkIHVzZSB0aGUKK2ZvbGxvd2luZyBfcHJlZGlj
YXRlLWZvcm1hdHRlciBhc3NlcnRpb25zXyB0byBfZnVsbHlfIGN1c3RvbWl6ZSBob3cgdGhlCitt
ZXNzYWdlIGlzIGZvcm1hdHRlZDoKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRh
bCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9QUkVEX0ZP
Uk1BVDEoYF9wcmVkXF9mb3JtYXQxLCB2YWwxX2ApO2AgICAgICAgIHwgYEVYUEVDVF9QUkVEX0ZP
Uk1BVDEoYF9wcmVkXF9mb3JtYXQxLCB2YWwxX2ApOyB8IF9wcmVkXF9mb3JtYXQxKHZhbDEpXyBp
cyBzdWNjZXNzZnVsIHwKK3wgYEFTU0VSVF9QUkVEX0ZPUk1BVDIoYF9wcmVkXF9mb3JtYXQyLCB2
YWwxLCB2YWwyX2ApO2AgfCBgRVhQRUNUX1BSRURfRk9STUFUMihgX3ByZWRcX2Zvcm1hdDIsIHZh
bDEsIHZhbDJfYCk7YCB8IF9wcmVkXF9mb3JtYXQyKHZhbDEsIHZhbDIpXyBpcyBzdWNjZXNzZnVs
IHwKK3wgYC4uLmAgICAgICAgICAgICAgICB8IGAuLi5gICAgICAgICAgICAgICAgICAgfCBgLi4u
YCAgICAgICAgfAorCitUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIHRoZSBwcmV2aW91
cyB0d28gZ3JvdXBzIG9mIG1hY3JvcyBpcyB0aGF0IGluc3RlYWQgb2YKK2EgcHJlZGljYXRlLCBg
KEFTU0VSVHxFWFBFQ1QpX1BSRURfRk9STUFUKmAgdGFrZSBhIF9wcmVkaWNhdGUtZm9ybWF0dGVy
XworKF9wcmVkXF9mb3JtYXRuXyksIHdoaWNoIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3RvciB3aXRo
IHRoZSBzaWduYXR1cmU6CisKK2A6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkaWNhdGVG
b3JtYXR0ZXJuKGNvbnN0IGNoYXIqIGBfZXhwcjFfYCwgY29uc3QgY2hhciogYF9leHByMl9gLCAu
Li4gY29uc3QgY2hhciogYF9leHBybl9gLCBUMSBgX3ZhbDFfYCwgVDIgYF92YWwyX2AsIC4uLiBU
biBgX3ZhbG5fYCk7YAorCit3aGVyZSBfdmFsMV8sIF92YWwyXywgLi4uLCBhbmQgX3ZhbG5fIGFy
ZSB0aGUgdmFsdWVzIG9mIHRoZSBwcmVkaWNhdGUKK2FyZ3VtZW50cywgYW5kIF9leHByMV8sIF9l
eHByMl8sIC4uLiwgYW5kIF9leHBybl8gYXJlIHRoZSBjb3JyZXNwb25kaW5nCitleHByZXNzaW9u
cyBhcyB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGNvZGUuIFRoZSB0eXBlcyBgVDFgLCBgVDJg
LCAuLi4sIGFuZAorYFRuYCBjYW4gYmUgZWl0aGVyIHZhbHVlIHR5cGVzIG9yIHJlZmVyZW5jZSB0
eXBlcy4gRm9yIGV4YW1wbGUsIGlmIGFuCithcmd1bWVudCBoYXMgdHlwZSBgRm9vYCwgeW91IGNh
biBkZWNsYXJlIGl0IGFzIGVpdGhlciBgRm9vYCBvciBgY29uc3QgRm9vJmAsCit3aGljaGV2ZXIg
aXMgYXBwcm9wcmlhdGUuCisKK0EgcHJlZGljYXRlLWZvcm1hdHRlciByZXR1cm5zIGEgYDo6dGVz
dGluZzo6QXNzZXJ0aW9uUmVzdWx0YCBvYmplY3QgdG8gaW5kaWNhdGUKK3doZXRoZXIgdGhlIGFz
c2VydGlvbiBoYXMgc3VjY2VlZGVkIG9yIG5vdC4gVGhlIG9ubHkgd2F5IHRvIGNyZWF0ZSBzdWNo
IGFuCitvYmplY3QgaXMgdG8gY2FsbCBvbmUgb2YgdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnM6CisK
K0FzIGFuIGV4YW1wbGUsIGxldCdzIGltcHJvdmUgdGhlIGZhaWx1cmUgbWVzc2FnZSBpbiB0aGUg
cHJldmlvdXMgZXhhbXBsZSwgd2hpY2ggdXNlcyBgRVhQRUNUX1BSRUQyKClgOgorCitgYGAKKy8v
IFJldHVybnMgdGhlIHNtYWxsZXN0IHByaW1lIGNvbW1vbiBkaXZpc29yIG9mIG0gYW5kIG4sCisv
LyBvciAxIHdoZW4gbSBhbmQgbiBhcmUgbXV0dWFsbHkgcHJpbWUuCitpbnQgU21hbGxlc3RQcmlt
ZUNvbW1vbkRpdmlzb3IoaW50IG0sIGludCBuKSB7IC4uLiB9CisKKy8vIEEgcHJlZGljYXRlLWZv
cm1hdHRlciBmb3IgYXNzZXJ0aW5nIHRoYXQgdHdvIGludGVnZXJzIGFyZSBtdXR1YWxseSBwcmlt
ZS4KKzo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IEFzc2VydE11dHVhbGx5UHJpbWUoY29uc3Qg
Y2hhciogbV9leHByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBuX2V4cHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgbikgeworICBpZiAoTXV0dWFsbHlQcmltZShtLCBuKSkKKyAgICBy
ZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CisKKyAgcmV0dXJuIDo6dGVzdGlu
Zzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBtX2V4cHIgPDwgIiBhbmQgIiA8PCBuX2V4
cHIgPDwgIiAoIiA8PCBtIDw8ICIgYW5kICIgPDwgbgorICAgICAgPDwgIikgYXJlIG5vdCBtdXR1
YWxseSBwcmltZSwgIiA8PCAiYXMgdGhleSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgIgorICAgICAg
PDwgU21hbGxlc3RQcmltZUNvbW1vbkRpdmlzb3IobSwgbik7Cit9CitgYGAKKworV2l0aCB0aGlz
IHByZWRpY2F0ZS1mb3JtYXR0ZXIsIHdlIGNhbiB1c2UKKworYGBgCitFWFBFQ1RfUFJFRF9GT1JN
QVQyKEFzc2VydE11dHVhbGx5UHJpbWUsIGIsIGMpOworYGBgCisKK3RvIGdlbmVyYXRlIHRoZSBt
ZXNzYWdlCisKKzxwcmU+CitiIGFuZCBjICg0IGFuZCAxMCkgYXJlIG5vdCBtdXR1YWxseSBwcmlt
ZSwgYXMgdGhleSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgMi48YnI+Cis8L3ByZT4KKworQXMgeW91
IG1heSBoYXZlIHJlYWxpemVkLCBtYW55IG9mIHRoZSBhc3NlcnRpb25zIHdlIGludHJvZHVjZWQg
ZWFybGllciBhcmUKK3NwZWNpYWwgY2FzZXMgb2YgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZPUk1B
VCpgLiBJbiBmYWN0LCBtb3N0IG9mIHRoZW0gYXJlCitpbmRlZWQgZGVmaW5lZCB1c2luZyBgKEVY
UEVDVHxBU1NFUlQpX1BSRURfRk9STUFUKmAuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2lu
ZG93cywgTWFjLgorCisKKyMjIEZsb2F0aW5nLVBvaW50IENvbXBhcmlzb24gIyMKKworQ29tcGFy
aW5nIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgaXMgdHJpY2t5LiBEdWUgdG8gcm91bmQtb2ZmIGVy
cm9ycywgaXQgaXMKK3ZlcnkgdW5saWtlbHkgdGhhdCB0d28gZmxvYXRpbmctcG9pbnRzIHdpbGwg
bWF0Y2ggZXhhY3RseS4gVGhlcmVmb3JlLAorYEFTU0VSVF9FUWAgJ3MgbmFpdmUgY29tcGFyaXNv
biB1c3VhbGx5IGRvZXNuJ3Qgd29yay4gQW5kIHNpbmNlIGZsb2F0aW5nLXBvaW50cworY2FuIGhh
dmUgYSB3aWRlIHZhbHVlIHJhbmdlLCBubyBzaW5nbGUgZml4ZWQgZXJyb3IgYm91bmQgd29ya3Mu
IEl0J3MgYmV0dGVyIHRvCitjb21wYXJlIGJ5IGEgZml4ZWQgcmVsYXRpdmUgZXJyb3IgYm91bmQs
IGV4Y2VwdCBmb3IgdmFsdWVzIGNsb3NlIHRvIDAgZHVlIHRvCit0aGUgbG9zcyBvZiBwcmVjaXNp
b24gdGhlcmUuCisKK0luIGdlbmVyYWwsIGZvciBmbG9hdGluZy1wb2ludCBjb21wYXJpc29uIHRv
IG1ha2Ugc2Vuc2UsIHRoZSB1c2VyIG5lZWRzIHRvCitjYXJlZnVsbHkgY2hvb3NlIHRoZSBlcnJv
ciBib3VuZC4gSWYgdGhleSBkb24ndCB3YW50IG9yIGNhcmUgdG8sIGNvbXBhcmluZyBpbgordGVy
bXMgb2YgVW5pdHMgaW4gdGhlIExhc3QgUGxhY2UgKFVMUHMpIGlzIGEgZ29vZCBkZWZhdWx0LCBh
bmQgR29vZ2xlIFRlc3QKK3Byb3ZpZGVzIGFzc2VydGlvbnMgdG8gZG8gdGhpcy4gRnVsbCBkZXRh
aWxzIGFib3V0IFVMUHMgYXJlIHF1aXRlIGxvbmc7IGlmIHlvdQord2FudCB0byBsZWFybiBtb3Jl
LCBzZWUKK1t0aGlzIGFydGljbGUgb24gZmxvYXQgY29tcGFyaXNvbl0oaHR0cDovL3d3dy5jeWdu
dXMtc29mdHdhcmUuY29tL3BhcGVycy9jb21wYXJpbmdmbG9hdHMvY29tcGFyaW5nZmxvYXRzLmh0
bSkuCisKKyMjIyBGbG9hdGluZy1Qb2ludCBNYWNyb3MgIyMjCisKK3wgKipGYXRhbCBhc3NlcnRp
b24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8
IGBBU1NFUlRfRkxPQVRfRVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgIHwgYEVYUEVDVF9GTE9B
VF9FUShgX2V4cGVjdGVkLCBhY3R1YWxfYCk7YCB8IHRoZSB0d28gYGZsb2F0YCB2YWx1ZXMgYXJl
IGFsbW9zdCBlcXVhbCB8Cit8IGBBU1NFUlRfRE9VQkxFX0VRKGBfZXhwZWN0ZWQsIGFjdHVhbF9g
KTtgIHwgYEVYUEVDVF9ET1VCTEVfRVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgfCB0aGUgdHdv
IGBkb3VibGVgIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsIHwKKworQnkgImFsbW9zdCBlcXVhbCIs
IHdlIG1lYW4gdGhlIHR3byB2YWx1ZXMgYXJlIHdpdGhpbiA0IFVMUCdzIGZyb20gZWFjaAorb3Ro
ZXIuCisKK1RoZSBmb2xsb3dpbmcgYXNzZXJ0aW9ucyBhbGxvdyB5b3UgdG8gY2hvb3NlIHRoZSBh
Y2NlcHRhYmxlIGVycm9yIGJvdW5kOgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZh
dGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX05FQVIo
YF92YWwxLCB2YWwyLCBhYnNcX2Vycm9yX2ApO2AgfCBgRVhQRUNUX05FQVJgXyh2YWwxLCB2YWwy
LCBhYnNcX2Vycm9yX2ApO2AgfCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIF92YWwxXyBhbmQgX3Zh
bDJfIGRvZXNuJ3QgZXhjZWVkIHRoZSBnaXZlbiBhYnNvbHV0ZSBlcnJvciB8CisKK19BdmFpbGFi
aWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgRmxvYXRpbmctUG9pbnQgUHJlZGlj
YXRlLUZvcm1hdCBGdW5jdGlvbnMgIyMjCisKK1NvbWUgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9u
cyBhcmUgdXNlZnVsLCBidXQgbm90IHRoYXQgb2Z0ZW4gdXNlZC4gSW4gb3JkZXIKK3RvIGF2b2lk
IGFuIGV4cGxvc2lvbiBvZiBuZXcgbWFjcm9zLCB3ZSBwcm92aWRlIHRoZW0gYXMgcHJlZGljYXRl
LWZvcm1hdAorZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgaW4gcHJlZGljYXRlIGFzc2VydGlv
biBtYWNyb3MgKGUuZy4KK2BFWFBFQ1RfUFJFRF9GT1JNQVQyYCwgZXRjKS4KKworYGBgCitFWFBF
Q1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RmxvYXRMRSwgdmFsMSwgdmFsMik7CitFWFBFQ1Rf
UFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RG91YmxlTEUsIHZhbDEsIHZhbDIpOworYGBgCisKK1Zl
cmlmaWVzIHRoYXQgX3ZhbDFfIGlzIGxlc3MgdGhhbiwgb3IgYWxtb3N0IGVxdWFsIHRvLCBfdmFs
Ml8uIFlvdSBjYW4KK3JlcGxhY2UgYEVYUEVDVF9QUkVEX0ZPUk1BVDJgIGluIHRoZSBhYm92ZSB0
YWJsZSB3aXRoIGBBU1NFUlRfUFJFRF9GT1JNQVQyYC4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4
LCBXaW5kb3dzLCBNYWMuCisKKyMjIFdpbmRvd3MgSFJFU1VMVCBhc3NlcnRpb25zICMjCisKK1Ro
ZXNlIGFzc2VydGlvbnMgdGVzdCBmb3IgYEhSRVNVTFRgIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4KKwor
fCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZp
ZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChgX2V4cHJlc3Npb25f
YCk7YCB8IGBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQoYF9leHByZXNzaW9uX2ApO2AgfCBfZXhw
cmVzc2lvbl8gaXMgYSBzdWNjZXNzIGBIUkVTVUxUYCB8Cit8IGBBU1NFUlRfSFJFU1VMVF9GQUlM
RUQoYF9leHByZXNzaW9uX2ApO2AgICAgfCBgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKGBfZXhwcmVz
c2lvbl9gKTtgICAgIHwgX2V4cHJlc3Npb25fIGlzIGEgZmFpbHVyZSBgSFJFU1VMVGAgfAorCitU
aGUgZ2VuZXJhdGVkIG91dHB1dCBjb250YWlucyB0aGUgaHVtYW4tcmVhZGFibGUgZXJyb3IgbWVz
c2FnZQorYXNzb2NpYXRlZCB3aXRoIHRoZSBgSFJFU1VMVGAgY29kZSByZXR1cm5lZCBieSBfZXhw
cmVzc2lvbl8uCisKK1lvdSBtaWdodCB1c2UgdGhlbSBsaWtlIHRoaXM6CisKK2BgYAorQ0NvbVB0
ciBzaGVsbDsKK0FTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChzaGVsbC5Db0NyZWF0ZUluc3RhbmNl
KEwiU2hlbGwuQXBwbGljYXRpb24iKSk7CitDQ29tVmFyaWFudCBlbXB0eTsKK0FTU0VSVF9IUkVT
VUxUX1NVQ0NFRURFRChzaGVsbC0+U2hlbGxFeGVjdXRlKENDb21CU1RSKHVybCksIGVtcHR5LCBl
bXB0eSwgZW1wdHksIGVtcHR5KSk7CitgYGAKKworX0F2YWlsYWJpbGl0eV86IFdpbmRvd3MuCisK
KyMjIFR5cGUgQXNzZXJ0aW9ucyAjIworCitZb3UgY2FuIGNhbGwgdGhlIGZ1bmN0aW9uCitgYGAK
Kzo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4oKTsKK2BgYAordG8gYXNzZXJ0
IHRoYXQgdHlwZXMgYFQxYCBhbmQgYFQyYCBhcmUgdGhlIHNhbWUuICBUaGUgZnVuY3Rpb24gZG9l
cworbm90aGluZyBpZiB0aGUgYXNzZXJ0aW9uIGlzIHNhdGlzZmllZC4gIElmIHRoZSB0eXBlcyBh
cmUgZGlmZmVyZW50LAordGhlIGZ1bmN0aW9uIGNhbGwgd2lsbCBmYWlsIHRvIGNvbXBpbGUsIGFu
ZCB0aGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZQord2lsbCBsaWtlbHkgKGRlcGVuZGluZyBvbiB0
aGUgY29tcGlsZXIpIHNob3cgeW91IHRoZSBhY3R1YWwgdmFsdWVzIG9mCitgVDFgIGFuZCBgVDJg
LiAgVGhpcyBpcyBtYWlubHkgdXNlZnVsIGluc2lkZSB0ZW1wbGF0ZSBjb2RlLgorCitfQ2F2ZWF0
Ol8gV2hlbiB1c2VkIGluc2lkZSBhIG1lbWJlciBmdW5jdGlvbiBvZiBhIGNsYXNzIHRlbXBsYXRl
IG9yIGEKK2Z1bmN0aW9uIHRlbXBsYXRlLCBgU3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4oKWAg
aXMgZWZmZWN0aXZlIF9vbmx5IGlmXwordGhlIGZ1bmN0aW9uIGlzIGluc3RhbnRpYXRlZC4gIEZv
ciBleGFtcGxlLCBnaXZlbjoKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbyB7
CisgcHVibGljOgorICB2b2lkIEJhcigpIHsgOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8
aW50LCBUPigpOyB9Cit9OworYGBgCit0aGUgY29kZToKK2BgYAordm9pZCBUZXN0MSgpIHsgRm9v
PGJvb2w+IGZvbzsgfQorYGBgCit3aWxsIF9ub3RfIGdlbmVyYXRlIGEgY29tcGlsZXIgZXJyb3Is
IGFzIGBGb288Ym9vbD46OkJhcigpYCBpcyBuZXZlcgorYWN0dWFsbHkgaW5zdGFudGlhdGVkLiAg
SW5zdGVhZCwgeW91IG5lZWQ6CitgYGAKK3ZvaWQgVGVzdDIoKSB7IEZvbzxib29sPiBmb287IGZv
by5CYXIoKTsgfQorYGBgCit0byBjYXVzZSBhIGNvbXBpbGVyIGVycm9yLgorCitfQXZhaWxhYmls
aXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lvbiAxLjMuMC4KKworIyMgQXNz
ZXJ0aW9uIFBsYWNlbWVudCAjIworCitZb3UgY2FuIHVzZSBhc3NlcnRpb25zIGluIGFueSBDKysg
ZnVuY3Rpb24uIEluIHBhcnRpY3VsYXIsIGl0IGRvZXNuJ3QKK2hhdmUgdG8gYmUgYSBtZXRob2Qg
b2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4gVGhlIG9uZSBjb25zdHJhaW50IGlzCit0aGF0IGFz
c2VydGlvbnMgdGhhdCBnZW5lcmF0ZSBhIGZhdGFsIGZhaWx1cmUgKGBGQUlMKmAgYW5kIGBBU1NF
UlRfKmApCitjYW4gb25seSBiZSB1c2VkIGluIHZvaWQtcmV0dXJuaW5nIGZ1bmN0aW9ucy4gVGhp
cyBpcyBhIGNvbnNlcXVlbmNlIG9mCitHb29nbGUgVGVzdCBub3QgdXNpbmcgZXhjZXB0aW9ucy4g
QnkgcGxhY2luZyBpdCBpbiBhIG5vbi12b2lkIGZ1bmN0aW9uCit5b3UnbGwgZ2V0IGEgY29uZnVz
aW5nIGNvbXBpbGUgZXJyb3IgbGlrZQorYCJlcnJvcjogdm9pZCB2YWx1ZSBub3QgaWdub3JlZCBh
cyBpdCBvdWdodCB0byBiZSJgLgorCitJZiB5b3UgbmVlZCB0byB1c2UgYXNzZXJ0aW9ucyBpbiBh
IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBub24tdm9pZCwgb25lIG9wdGlvbgoraXMgdG8gbWFrZSB0
aGUgZnVuY3Rpb24gcmV0dXJuIHRoZSB2YWx1ZSBpbiBhbiBvdXQgcGFyYW1ldGVyIGluc3RlYWQu
IEZvcgorZXhhbXBsZSwgeW91IGNhbiByZXdyaXRlIGBUMiBGb28oVDEgeClgIHRvIGB2b2lkIEZv
byhUMSB4LCBUMiogcmVzdWx0KWAuIFlvdQorbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgKnJlc3Vs
dGAgY29udGFpbnMgc29tZSBzZW5zaWJsZSB2YWx1ZSBldmVuIHdoZW4gdGhlCitmdW5jdGlvbiBy
ZXR1cm5zIHByZW1hdHVyZWx5LiBBcyB0aGUgZnVuY3Rpb24gbm93IHJldHVybnMgYHZvaWRgLCB5
b3UgY2FuIHVzZQorYW55IGFzc2VydGlvbiBpbnNpZGUgb2YgaXQuCisKK0lmIGNoYW5naW5nIHRo
ZSBmdW5jdGlvbidzIHR5cGUgaXMgbm90IGFuIG9wdGlvbiwgeW91IHNob3VsZCBqdXN0IHVzZQor
YXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIG5vbi1mYXRhbCBmYWlsdXJlcywgc3VjaCBhcyBgQURE
X0ZBSUxVUkUqYCBhbmQKK2BFWFBFQ1RfKmAuCisKK19Ob3RlXzogQ29uc3RydWN0b3JzIGFuZCBk
ZXN0cnVjdG9ycyBhcmUgbm90IGNvbnNpZGVyZWQgdm9pZC1yZXR1cm5pbmcKK2Z1bmN0aW9ucywg
YWNjb3JkaW5nIHRvIHRoZSBDKysgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbiwgYW5kIHNvIHlvdSBt
YXkgbm90IHVzZQorZmF0YWwgYXNzZXJ0aW9ucyBpbiB0aGVtLiBZb3UnbGwgZ2V0IGEgY29tcGls
YXRpb24gZXJyb3IgaWYgeW91IHRyeS4gQSBzaW1wbGUKK3dvcmthcm91bmQgaXMgdG8gdHJhbnNm
ZXIgdGhlIGVudGlyZSBib2R5IG9mIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yIHRvIGEK
K3ByaXZhdGUgdm9pZC1yZXR1cm5pbmcgbWV0aG9kLiBIb3dldmVyLCB5b3Ugc2hvdWxkIGJlIGF3
YXJlIHRoYXQgYSBmYXRhbAorYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYSBjb25zdHJ1Y3RvciBkb2Vz
IG5vdCB0ZXJtaW5hdGUgdGhlIGN1cnJlbnQgdGVzdCwgYXMgeW91cgoraW50dWl0aW9uIG1pZ2h0
IHN1Z2dlc3Q7IGl0IG1lcmVseSByZXR1cm5zIGZyb20gdGhlIGNvbnN0cnVjdG9yIGVhcmx5LCBw
b3NzaWJseQorbGVhdmluZyB5b3VyIG9iamVjdCBpbiBhIHBhcnRpYWxseS1jb25zdHJ1Y3RlZCBz
dGF0ZS4gTGlrZXdpc2UsIGEgZmF0YWwKK2Fzc2VydGlvbiBmYWlsdXJlIGluIGEgZGVzdHJ1Y3Rv
ciBtYXkgbGVhdmUgeW91ciBvYmplY3QgaW4gYQorcGFydGlhbGx5LWRlc3RydWN0ZWQgc3RhdGUu
IFVzZSBhc3NlcnRpb25zIGNhcmVmdWxseSBpbiB0aGVzZSBzaXR1YXRpb25zIQorCisjIFRlYWNo
aW5nIEdvb2dsZSBUZXN0IEhvdyB0byBQcmludCBZb3VyIFZhbHVlcyAjCisKK1doZW4gYSB0ZXN0
IGFzc2VydGlvbiBzdWNoIGFzIGBFWFBFQ1RfRVFgIGZhaWxzLCBHb29nbGUgVGVzdCBwcmludHMg
dGhlCithcmd1bWVudCB2YWx1ZXMgdG8gaGVscCB5b3UgZGVidWcuICBJdCBkb2VzIHRoaXMgdXNp
bmcgYQordXNlci1leHRlbnNpYmxlIHZhbHVlIHByaW50ZXIuCisKK1RoaXMgcHJpbnRlciBrbm93
cyBob3cgdG8gcHJpbnQgYnVpbHQtaW4gQysrIHR5cGVzLCBuYXRpdmUgYXJyYXlzLCBTVEwKK2Nv
bnRhaW5lcnMsIGFuZCBhbnkgdHlwZSB0aGF0IHN1cHBvcnRzIHRoZSBgPDxgIG9wZXJhdG9yLiAg
Rm9yIG90aGVyCit0eXBlcywgaXQgcHJpbnRzIHRoZSByYXcgYnl0ZXMgaW4gdGhlIHZhbHVlIGFu
ZCBob3BlcyB0aGF0IHlvdSB0aGUKK3VzZXIgY2FuIGZpZ3VyZSBpdCBvdXQuCisKK0FzIG1lbnRp
b25lZCBlYXJsaWVyLCB0aGUgcHJpbnRlciBpcyBfZXh0ZW5zaWJsZV8uICBUaGF0IG1lYW5zCit5
b3UgY2FuIHRlYWNoIGl0IHRvIGRvIGEgYmV0dGVyIGpvYiBhdCBwcmludGluZyB5b3VyIHBhcnRp
Y3VsYXIgdHlwZQordGhhbiB0byBkdW1wIHRoZSBieXRlcy4gIFRvIGRvIHRoYXQsIGRlZmluZSBg
PDxgIGZvciB5b3VyIHR5cGU6CisKK2BgYAorI2luY2x1ZGUgPGlvc3RyZWFtPgorCituYW1lc3Bh
Y2UgZm9vIHsKKworY2xhc3MgQmFyIHsgLi4uIH07ICAvLyBXZSB3YW50IEdvb2dsZSBUZXN0IHRv
IGJlIGFibGUgdG8gcHJpbnQgaW5zdGFuY2VzIG9mIHRoaXMuCisKKy8vIEl0J3MgaW1wb3J0YW50
IHRoYXQgdGhlIDw8IG9wZXJhdG9yIGlzIGRlZmluZWQgaW4gdGhlIFNBTUUKKy8vIG5hbWVzcGFj
ZSB0aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11cCBydWxlcyByZWx5IG9uIHRoYXQuCis6
OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IEJhciYg
YmFyKSB7CisgIHJldHVybiBvcyA8PCBiYXIuRGVidWdTdHJpbmcoKTsgIC8vIHdoYXRldmVyIG5l
ZWRlZCB0byBwcmludCBiYXIgdG8gb3MKK30KKworfSAgLy8gbmFtZXNwYWNlIGZvbworYGBgCisK
K1NvbWV0aW1lcywgdGhpcyBtaWdodCBub3QgYmUgYW4gb3B0aW9uOiB5b3VyIHRlYW0gbWF5IGNv
bnNpZGVyIGl0IGJhZAorc3R5bGUgdG8gaGF2ZSBhIGA8PGAgb3BlcmF0b3IgZm9yIGBCYXJgLCBv
ciBgQmFyYCBtYXkgYWxyZWFkeSBoYXZlIGEKK2A8PGAgb3BlcmF0b3IgdGhhdCBkb2Vzbid0IGRv
IHdoYXQgeW91IHdhbnQgKGFuZCB5b3UgY2Fubm90IGNoYW5nZQoraXQpLiAgSWYgc28sIHlvdSBj
YW4gaW5zdGVhZCBkZWZpbmUgYSBgUHJpbnRUbygpYCBmdW5jdGlvbiBsaWtlIHRoaXM6CisKK2Bg
YAorI2luY2x1ZGUgPGlvc3RyZWFtPgorCituYW1lc3BhY2UgZm9vIHsKKworY2xhc3MgQmFyIHsg
Li4uIH07CisKKy8vIEl0J3MgaW1wb3J0YW50IHRoYXQgUHJpbnRUbygpIGlzIGRlZmluZWQgaW4g
dGhlIFNBTUUKKy8vIG5hbWVzcGFjZSB0aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11cCBy
dWxlcyByZWx5IG9uIHRoYXQuCit2b2lkIFByaW50VG8oY29uc3QgQmFyJiBiYXIsIDo6c3RkOjpv
c3RyZWFtKiBvcykgeworICAqb3MgPDwgYmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3aGF0ZXZlciBu
ZWVkZWQgdG8gcHJpbnQgYmFyIHRvIG9zCit9CisKK30gIC8vIG5hbWVzcGFjZSBmb28KK2BgYAor
CitJZiB5b3UgaGF2ZSBkZWZpbmVkIGJvdGggYDw8YCBhbmQgYFByaW50VG8oKWAsIHRoZSBsYXR0
ZXIgd2lsbCBiZSB1c2VkCit3aGVuIEdvb2dsZSBUZXN0IGlzIGNvbmNlcm5lZC4gIFRoaXMgYWxs
b3dzIHlvdSB0byBjdXN0b21pemUgaG93IHRoZSB2YWx1ZQorYXBwZWFycyBpbiBHb29nbGUgVGVz
dCdzIG91dHB1dCB3aXRob3V0IGFmZmVjdGluZyBjb2RlIHRoYXQgcmVsaWVzIG9uIHRoZQorYmVo
YXZpb3Igb2YgaXRzIGA8PGAgb3BlcmF0b3IuCisKK0lmIHlvdSB3YW50IHRvIHByaW50IGEgdmFs
dWUgYHhgIHVzaW5nIEdvb2dsZSBUZXN0J3MgdmFsdWUgcHJpbnRlcgoreW91cnNlbGYsIGp1c3Qg
Y2FsbCBgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGBfeF9gKWAsIHdoaWNoCityZXR1cm5zIGFu
IGBzdGQ6OnN0cmluZ2A6CisKK2BgYAordmVjdG9yPHBhaXI8QmFyLCBpbnQ+ID4gYmFyX2ludHMg
PSBHZXRCYXJJbnRWZWN0b3IoKTsKKworRVhQRUNUX1RSVUUoSXNDb3JyZWN0QmFySW50VmVjdG9y
KGJhcl9pbnRzKSkKKyAgICA8PCAiYmFyX2ludHMgPSAiIDw8IDo6dGVzdGluZzo6UHJpbnRUb1N0
cmluZyhiYXJfaW50cyk7CitgYGAKKworIyBEZWF0aCBUZXN0cyAjCisKK0luIG1hbnkgYXBwbGlj
YXRpb25zLCB0aGVyZSBhcmUgYXNzZXJ0aW9ucyB0aGF0IGNhbiBjYXVzZSBhcHBsaWNhdGlvbiBm
YWlsdXJlCitpZiBhIGNvbmRpdGlvbiBpcyBub3QgbWV0LiBUaGVzZSBzYW5pdHkgY2hlY2tzLCB3
aGljaCBlbnN1cmUgdGhhdCB0aGUgcHJvZ3JhbQoraXMgaW4gYSBrbm93biBnb29kIHN0YXRlLCBh
cmUgdGhlcmUgdG8gZmFpbCBhdCB0aGUgZWFybGllc3QgcG9zc2libGUgdGltZSBhZnRlcgorc29t
ZSBwcm9ncmFtIHN0YXRlIGlzIGNvcnJ1cHRlZC4gSWYgdGhlIGFzc2VydGlvbiBjaGVja3MgdGhl
IHdyb25nIGNvbmRpdGlvbiwKK3RoZW4gdGhlIHByb2dyYW0gbWF5IHByb2NlZWQgaW4gYW4gZXJy
b25lb3VzIHN0YXRlLCB3aGljaCBjb3VsZCBsZWFkIHRvIG1lbW9yeQorY29ycnVwdGlvbiwgc2Vj
dXJpdHkgaG9sZXMsIG9yIHdvcnNlLiBIZW5jZSBpdCBpcyB2aXRhbGx5IGltcG9ydGFudCB0byB0
ZXN0Cit0aGF0IHN1Y2ggYXNzZXJ0aW9uIHN0YXRlbWVudHMgd29yayBhcyBleHBlY3RlZC4KKwor
U2luY2UgdGhlc2UgcHJlY29uZGl0aW9uIGNoZWNrcyBjYXVzZSB0aGUgcHJvY2Vzc2VzIHRvIGRp
ZSwgd2UgY2FsbCBzdWNoIHRlc3RzCitfZGVhdGggdGVzdHNfLiBNb3JlIGdlbmVyYWxseSwgYW55
IHRlc3QgdGhhdCBjaGVja3MgdGhhdCBhIHByb2dyYW0gdGVybWluYXRlcworKGV4Y2VwdCBieSB0
aHJvd2luZyBhbiBleGNlcHRpb24pIGluIGFuIGV4cGVjdGVkIGZhc2hpb24gaXMgYWxzbyBhIGRl
YXRoIHRlc3QuCisKK05vdGUgdGhhdCBpZiBhIHBpZWNlIG9mIGNvZGUgdGhyb3dzIGFuIGV4Y2Vw
dGlvbiwgd2UgZG9uJ3QgY29uc2lkZXIgaXQgImRlYXRoIgorZm9yIHRoZSBwdXJwb3NlIG9mIGRl
YXRoIHRlc3RzLCBhcyB0aGUgY2FsbGVyIG9mIHRoZSBjb2RlIGNvdWxkIGNhdGNoIHRoZSBleGNl
cHRpb24KK2FuZCBhdm9pZCB0aGUgY3Jhc2guIElmIHlvdSB3YW50IHRvIHZlcmlmeSBleGNlcHRp
b25zIHRocm93biBieSB5b3VyIGNvZGUsCitzZWUgW0V4Y2VwdGlvbiBBc3NlcnRpb25zXSgjZXhj
ZXB0aW9uLWFzc2VydGlvbnMpLgorCitJZiB5b3Ugd2FudCB0byB0ZXN0IGBFWFBFQ1RfKigpL0FT
U0VSVF8qKClgIGZhaWx1cmVzIGluIHlvdXIgdGVzdCBjb2RlLCBzZWUgW0NhdGNoaW5nIEZhaWx1
cmVzXSgjY2F0Y2hpbmctZmFpbHVyZXMpLgorCisjIyBIb3cgdG8gV3JpdGUgYSBEZWF0aCBUZXN0
ICMjCisKK0dvb2dsZSBUZXN0IGhhcyB0aGUgZm9sbG93aW5nIG1hY3JvcyB0byBzdXBwb3J0IGRl
YXRoIHRlc3RzOgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlv
bioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX0RFQVRIKGBfc3RhdGVtZW50
LCByZWdleF9gKTsgfCBgRVhQRUNUX0RFQVRIKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBfc3Rh
dGVtZW50XyBjcmFzaGVzIHdpdGggdGhlIGdpdmVuIGVycm9yIHwKK3wgYEFTU0VSVF9ERUFUSF9J
Rl9TVVBQT1JURUQoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApOyB8IGBFWFBFQ1RfREVBVEhfSUZfU1VQ
UE9SVEVEKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBpZiBkZWF0aCB0ZXN0cyBhcmUgc3VwcG9y
dGVkLCB2ZXJpZmllcyB0aGF0IF9zdGF0ZW1lbnRfIGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4gZXJy
b3I7IG90aGVyd2lzZSB2ZXJpZmllcyBub3RoaW5nIHwKK3wgYEFTU0VSVF9FWElUKGBfc3RhdGVt
ZW50LCBwcmVkaWNhdGUsIHJlZ2V4X2ApOyB8IGBFWFBFQ1RfRVhJVChgX3N0YXRlbWVudCwgcHJl
ZGljYXRlLCByZWdleF9gKTsgfF9zdGF0ZW1lbnRfIGV4aXRzIHdpdGggdGhlIGdpdmVuIGVycm9y
IGFuZCBpdHMgZXhpdCBjb2RlIG1hdGNoZXMgX3ByZWRpY2F0ZV8gfAorCit3aGVyZSBfc3RhdGVt
ZW50XyBpcyBhIHN0YXRlbWVudCB0aGF0IGlzIGV4cGVjdGVkIHRvIGNhdXNlIHRoZSBwcm9jZXNz
IHRvCitkaWUsIF9wcmVkaWNhdGVfIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3Rpb24gb2JqZWN0IHRo
YXQgZXZhbHVhdGVzIGFuIGludGVnZXIKK2V4aXQgc3RhdHVzLCBhbmQgX3JlZ2V4XyBpcyBhIHJl
Z3VsYXIgZXhwcmVzc2lvbiB0aGF0IHRoZSBzdGRlcnIgb3V0cHV0IG9mCitfc3RhdGVtZW50XyBp
cyBleHBlY3RlZCB0byBtYXRjaC4gTm90ZSB0aGF0IF9zdGF0ZW1lbnRfIGNhbiBiZSBfYW55IHZh
bGlkCitzdGF0ZW1lbnRfIChpbmNsdWRpbmcgX2NvbXBvdW5kIHN0YXRlbWVudF8pIGFuZCBkb2Vz
bid0IGhhdmUgdG8gYmUgYW4KK2V4cHJlc3Npb24uCisKK0FzIHVzdWFsLCB0aGUgYEFTU0VSVGAg
dmFyaWFudHMgYWJvcnQgdGhlIGN1cnJlbnQgdGVzdCBmdW5jdGlvbiwgd2hpbGUgdGhlCitgRVhQ
RUNUYCB2YXJpYW50cyBkbyBub3QuCisKKyoqTm90ZToqKiBXZSB1c2UgdGhlIHdvcmQgImNyYXNo
IiBoZXJlIHRvIG1lYW4gdGhhdCB0aGUgcHJvY2VzcwordGVybWluYXRlcyB3aXRoIGEgX25vbi16
ZXJvXyBleGl0IHN0YXR1cyBjb2RlLiAgVGhlcmUgYXJlIHR3bworcG9zc2liaWxpdGllczogZWl0
aGVyIHRoZSBwcm9jZXNzIGhhcyBjYWxsZWQgYGV4aXQoKWAgb3IgYF9leGl0KClgCit3aXRoIGEg
bm9uLXplcm8gdmFsdWUsIG9yIGl0IG1heSBiZSBraWxsZWQgYnkgYSBzaWduYWwuCisKK1RoaXMg
bWVhbnMgdGhhdCBpZiBfc3RhdGVtZW50XyB0ZXJtaW5hdGVzIHRoZSBwcm9jZXNzIHdpdGggYSAw
IGV4aXQKK2NvZGUsIGl0IGlzIF9ub3RfIGNvbnNpZGVyZWQgYSBjcmFzaCBieSBgRVhQRUNUX0RF
QVRIYC4gIFVzZQorYEVYUEVDVF9FWElUYCBpbnN0ZWFkIGlmIHRoaXMgaXMgdGhlIGNhc2UsIG9y
IGlmIHlvdSB3YW50IHRvIHJlc3RyaWN0Cit0aGUgZXhpdCBjb2RlIG1vcmUgcHJlY2lzZWx5Lgor
CitBIHByZWRpY2F0ZSBoZXJlIG11c3QgYWNjZXB0IGFuIGBpbnRgIGFuZCByZXR1cm4gYSBgYm9v
bGAuIFRoZSBkZWF0aCB0ZXN0CitzdWNjZWVkcyBvbmx5IGlmIHRoZSBwcmVkaWNhdGUgcmV0dXJu
cyBgdHJ1ZWAuIEdvb2dsZSBUZXN0IGRlZmluZXMgYSBmZXcKK3ByZWRpY2F0ZXMgdGhhdCBoYW5k
bGUgdGhlIG1vc3QgY29tbW9uIGNhc2VzOgorCitgYGAKKzo6dGVzdGluZzo6RXhpdGVkV2l0aENv
ZGUoZXhpdF9jb2RlKQorYGBgCisKK1RoaXMgZXhwcmVzc2lvbiBpcyBgdHJ1ZWAgaWYgdGhlIHBy
b2dyYW0gZXhpdGVkIG5vcm1hbGx5IHdpdGggdGhlIGdpdmVuIGV4aXQKK2NvZGUuCisKK2BgYAor
Ojp0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChzaWduYWxfbnVtYmVyKSAgLy8gTm90IGF2YWlsYWJs
ZSBvbiBXaW5kb3dzLgorYGBgCisKK1RoaXMgZXhwcmVzc2lvbiBpcyBgdHJ1ZWAgaWYgdGhlIHBy
b2dyYW0gd2FzIGtpbGxlZCBieSB0aGUgZ2l2ZW4gc2lnbmFsLgorCitUaGUgYCpfREVBVEhgIG1h
Y3JvcyBhcmUgY29udmVuaWVudCB3cmFwcGVycyBmb3IgYCpfRVhJVGAgdGhhdCB1c2UgYSBwcmVk
aWNhdGUKK3RoYXQgdmVyaWZpZXMgdGhlIHByb2Nlc3MnIGV4aXQgY29kZSBpcyBub24temVyby4K
KworTm90ZSB0aGF0IGEgZGVhdGggdGVzdCBvbmx5IGNhcmVzIGFib3V0IHRocmVlIHRoaW5nczoK
KworICAxLiBkb2VzIF9zdGF0ZW1lbnRfIGFib3J0IG9yIGV4aXQgdGhlIHByb2Nlc3M/CisgIDEu
IChpbiB0aGUgY2FzZSBvZiBgQVNTRVJUX0VYSVRgIGFuZCBgRVhQRUNUX0VYSVRgKSBkb2VzIHRo
ZSBleGl0IHN0YXR1cyBzYXRpc2Z5IF9wcmVkaWNhdGVfPyAgT3IgKGluIHRoZSBjYXNlIG9mIGBB
U1NFUlRfREVBVEhgIGFuZCBgRVhQRUNUX0RFQVRIYCkgaXMgdGhlIGV4aXQgc3RhdHVzIG5vbi16
ZXJvPyAgQW5kCisgIDEuIGRvZXMgdGhlIHN0ZGVyciBvdXRwdXQgbWF0Y2ggX3JlZ2V4Xz8KKwor
SW4gcGFydGljdWxhciwgaWYgX3N0YXRlbWVudF8gZ2VuZXJhdGVzIGFuIGBBU1NFUlRfKmAgb3Ig
YEVYUEVDVF8qYCBmYWlsdXJlLCBpdCB3aWxsICoqbm90KiogY2F1c2UgdGhlIGRlYXRoIHRlc3Qg
dG8gZmFpbCwgYXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBkb24ndCBhYm9ydCB0aGUgcHJvY2Vz
cy4KKworVG8gd3JpdGUgYSBkZWF0aCB0ZXN0LCBzaW1wbHkgdXNlIG9uZSBvZiB0aGUgYWJvdmUg
bWFjcm9zIGluc2lkZSB5b3VyIHRlc3QKK2Z1bmN0aW9uLiBGb3IgZXhhbXBsZSwKKworYGBgCitU
RVNUKE15RGVhdGhUZXN0LCBGb28pIHsKKyAgLy8gVGhpcyBkZWF0aCB0ZXN0IHVzZXMgYSBjb21w
b3VuZCBzdGF0ZW1lbnQuCisgIEFTU0VSVF9ERUFUSCh7IGludCBuID0gNTsgRm9vKCZuKTsgfSwg
IkVycm9yIG9uIGxpbmUgLiogb2YgRm9vKCkiKTsKK30KK1RFU1QoTXlEZWF0aFRlc3QsIE5vcm1h
bEV4aXQpIHsKKyAgRVhQRUNUX0VYSVQoTm9ybWFsRXhpdCgpLCA6OnRlc3Rpbmc6OkV4aXRlZFdp
dGhDb2RlKDApLCAiU3VjY2VzcyIpOworfQorVEVTVChNeURlYXRoVGVzdCwgS2lsbE15c2VsZikg
eworICBFWFBFQ1RfRVhJVChLaWxsTXlzZWxmKCksIDo6dGVzdGluZzo6S2lsbGVkQnlTaWduYWwo
U0lHS0lMTCksICJTZW5kaW5nIG15c2VsZiB1bmJsb2NrYWJsZSBzaWduYWwiKTsKK30KK2BgYAor
Cit2ZXJpZmllcyB0aGF0OgorCisgICogY2FsbGluZyBgRm9vKDUpYCBjYXVzZXMgdGhlIHByb2Nl
c3MgdG8gZGllIHdpdGggdGhlIGdpdmVuIGVycm9yIG1lc3NhZ2UsCisgICogY2FsbGluZyBgTm9y
bWFsRXhpdCgpYCBjYXVzZXMgdGhlIHByb2Nlc3MgdG8gcHJpbnQgYCJTdWNjZXNzImAgdG8gc3Rk
ZXJyIGFuZCBleGl0IHdpdGggZXhpdCBjb2RlIDAsIGFuZAorICAqIGNhbGxpbmcgYEtpbGxNeXNl
bGYoKWAga2lsbHMgdGhlIHByb2Nlc3Mgd2l0aCBzaWduYWwgYFNJR0tJTExgLgorCitUaGUgdGVz
dCBmdW5jdGlvbiBib2R5IG1heSBjb250YWluIG90aGVyIGFzc2VydGlvbnMgYW5kIHN0YXRlbWVu
dHMgYXMgd2VsbCwgaWYKK25lY2Vzc2FyeS4KKworX0ltcG9ydGFudDpfIFdlIHN0cm9uZ2x5IHJl
Y29tbWVuZCB5b3UgdG8gZm9sbG93IHRoZSBjb252ZW50aW9uIG9mIG5hbWluZyB5b3VyCit0ZXN0
IGNhc2UgKG5vdCB0ZXN0KSBgKkRlYXRoVGVzdGAgd2hlbiBpdCBjb250YWlucyBhIGRlYXRoIHRl
c3QsIGFzCitkZW1vbnN0cmF0ZWQgaW4gdGhlIGFib3ZlIGV4YW1wbGUuIFRoZSBgRGVhdGggVGVz
dHMgQW5kIFRocmVhZHNgIHNlY3Rpb24gYmVsb3cKK2V4cGxhaW5zIHdoeS4KKworSWYgYSB0ZXN0
IGZpeHR1cmUgY2xhc3MgaXMgc2hhcmVkIGJ5IG5vcm1hbCB0ZXN0cyBhbmQgZGVhdGggdGVzdHMs
IHlvdQorY2FuIHVzZSB0eXBlZGVmIHRvIGludHJvZHVjZSBhbiBhbGlhcyBmb3IgdGhlIGZpeHR1
cmUgY2xhc3MgYW5kIGF2b2lkCitkdXBsaWNhdGluZyBpdHMgY29kZToKK2BgYAorY2xhc3MgRm9v
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKKwordHlwZWRlZiBGb29UZXN0
IEZvb0RlYXRoVGVzdDsKKworVEVTVF9GKEZvb1Rlc3QsIERvZXNUaGlzKSB7CisgIC8vIG5vcm1h
bCB0ZXN0Cit9CisKK1RFU1RfRihGb29EZWF0aFRlc3QsIERvZXNUaGF0KSB7CisgIC8vIGRlYXRo
IHRlc3QKK30KK2BgYAorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVz
IE1TVkMgOC4wIG9yIGFib3ZlKSwgQ3lnd2luLCBhbmQgTWFjICh0aGUgbGF0dGVyIHRocmVlIGFy
ZSBzdXBwb3J0ZWQgc2luY2UgdjEuMy4wKS4gIGAoQVNTRVJUfEVYUEVDVClfREVBVEhfSUZfU1VQ
UE9SVEVEYCBhcmUgbmV3IGluIHYxLjQuMC4KKworIyMgUmVndWxhciBFeHByZXNzaW9uIFN5bnRh
eCAjIworCitPbiBQT1NJWCBzeXN0ZW1zIChlLmcuIExpbnV4LCBDeWd3aW4sIGFuZCBNYWMpLCBH
b29nbGUgVGVzdCB1c2VzIHRoZQorW1BPU0lYIGV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbl0o
aHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Jhc2VkZWZzL3hi
ZF9jaGFwMDkuaHRtbCN0YWdfMDlfMDQpCitzeW50YXggaW4gZGVhdGggdGVzdHMuIFRvIGxlYXJu
IGFib3V0IHRoaXMgc3ludGF4LCB5b3UgbWF5IHdhbnQgdG8gcmVhZCB0aGlzIFtXaWtpcGVkaWEg
ZW50cnldKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVndWxhcl9leHByZXNzaW9uI1BP
U0lYX0V4dGVuZGVkX1JlZ3VsYXJfRXhwcmVzc2lvbnMpLgorCitPbiBXaW5kb3dzLCBHb29nbGUg
VGVzdCB1c2VzIGl0cyBvd24gc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbgoraW1wbGVtZW50YXRp
b24uIEl0IGxhY2tzIG1hbnkgZmVhdHVyZXMgeW91IGNhbiBmaW5kIGluIFBPU0lYIGV4dGVuZGVk
CityZWd1bGFyIGV4cHJlc3Npb25zLiAgRm9yIGV4YW1wbGUsIHdlIGRvbid0IHN1cHBvcnQgdW5p
b24gKGAieHx5ImApLAorZ3JvdXBpbmcgKGAiKHh5KSJgKSwgYnJhY2tldHMgKGAiW3h5XSJgKSwg
YW5kIHJlcGV0aXRpb24gY291bnQKKyhgInh7NSw3fSJgKSwgYW1vbmcgb3RoZXJzLiBCZWxvdyBp
cyB3aGF0IHdlIGRvIHN1cHBvcnQgKExldHRlciBgQWAgZGVub3RlcyBhCitsaXRlcmFsIGNoYXJh
Y3RlciwgcGVyaW9kIChgLmApLCBvciBhIHNpbmdsZSBgXFxgIGVzY2FwZSBzZXF1ZW5jZTsgYHhg
CithbmQgYHlgIGRlbm90ZSByZWd1bGFyIGV4cHJlc3Npb25zLik6CisKK3wgYGNgIHwgbWF0Y2hl
cyBhbnkgbGl0ZXJhbCBjaGFyYWN0ZXIgYGNgIHwKK3w6LS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXwKK3wgYFxcZGAgfCBtYXRjaGVzIGFueSBkZWNpbWFsIGRpZ2l0ICAg
ICAgICAgfAorfCBgXFxEYCB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgZGVj
aW1hbCBkaWdpdCB8Cit8IGBcXGZgIHwgbWF0Y2hlcyBgXGZgICAgICAgICAgICAgICAgICAgICAg
IHwKK3wgYFxcbmAgfCBtYXRjaGVzIGBcbmAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFxy
YCB8IG1hdGNoZXMgYFxyYCAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBcXHNgIHwgbWF0Y2hl
cyBhbnkgQVNDSUkgd2hpdGVzcGFjZSwgaW5jbHVkaW5nIGBcbmAgfAorfCBgXFxTYCB8IG1hdGNo
ZXMgYW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgd2hpdGVzcGFjZSB8Cit8IGBcXHRgIHwgbWF0
Y2hlcyBgXHRgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYFxcdmAgfCBtYXRjaGVzIGBcdmAg
ICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFx3YCB8IG1hdGNoZXMgYW55IGxldHRlciwgYF9g
LCBvciBkZWNpbWFsIGRpZ2l0IHwKK3wgYFxcV2AgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhh
dCBgXFx3YCBkb2Vzbid0IG1hdGNoIHwKK3wgYFxcY2AgfCBtYXRjaGVzIGFueSBsaXRlcmFsIGNo
YXJhY3RlciBgY2AsIHdoaWNoIG11c3QgYmUgYSBwdW5jdHVhdGlvbiB8Cit8IGBcXC5gIHwgbWF0
Y2hlcyB0aGUgYC5gIGNoYXJhY3RlciAgICAgICAgIHwKK3wgYC5gIHwgbWF0Y2hlcyBhbnkgc2lu
Z2xlIGNoYXJhY3RlciBleGNlcHQgYFxuYCB8Cit8IGBBP2AgfCBtYXRjaGVzIDAgb3IgMSBvY2N1
cnJlbmNlcyBvZiBgQWAgfAorfCBgQSpgIHwgbWF0Y2hlcyAwIG9yIG1hbnkgb2NjdXJyZW5jZXMg
b2YgYEFgIHwKK3wgYEErYCB8IG1hdGNoZXMgMSBvciBtYW55IG9jY3VycmVuY2VzIG9mIGBBYCB8
Cit8IGBeYCB8IG1hdGNoZXMgdGhlIGJlZ2lubmluZyBvZiBhIHN0cmluZyAobm90IHRoYXQgb2Yg
ZWFjaCBsaW5lKSB8Cit8IGAkYCB8IG1hdGNoZXMgdGhlIGVuZCBvZiBhIHN0cmluZyAobm90IHRo
YXQgb2YgZWFjaCBsaW5lKSB8Cit8IGB4eWAgfCBtYXRjaGVzIGB4YCBmb2xsb3dlZCBieSBgeWAg
ICAgICAgfAorCitUbyBoZWxwIHlvdSBkZXRlcm1pbmUgd2hpY2ggY2FwYWJpbGl0eSBpcyBhdmFp
bGFibGUgb24geW91ciBzeXN0ZW0sCitHb29nbGUgVGVzdCBkZWZpbmVzIG1hY3JvIGBHVEVTVF9V
U0VTX1BPU0lYX1JFPTFgIHdoZW4gaXQgdXNlcyBQT1NJWAorZXh0ZW5kZWQgcmVndWxhciBleHBy
ZXNzaW9ucywgb3IgYEdURVNUX1VTRVNfU0lNUExFX1JFPTFgIHdoZW4gaXQgdXNlcwordGhlIHNp
bXBsZSB2ZXJzaW9uLiAgSWYgeW91IHdhbnQgeW91ciBkZWF0aCB0ZXN0cyB0byB3b3JrIGluIGJv
dGgKK2Nhc2VzLCB5b3UgY2FuIGVpdGhlciBgI2lmYCBvbiB0aGVzZSBtYWNyb3Mgb3IgdXNlIHRo
ZSBtb3JlIGxpbWl0ZWQKK3N5bnRheCBvbmx5LgorCisjIyBIb3cgSXQgV29ya3MgIyMKKworVW5k
ZXIgdGhlIGhvb2QsIGBBU1NFUlRfRVhJVCgpYCBzcGF3bnMgYSBuZXcgcHJvY2VzcyBhbmQgZXhl
Y3V0ZXMgdGhlCitkZWF0aCB0ZXN0IHN0YXRlbWVudCBpbiB0aGF0IHByb2Nlc3MuIFRoZSBkZXRh
aWxzIG9mIG9mIGhvdyBwcmVjaXNlbHkKK3RoYXQgaGFwcGVucyBkZXBlbmQgb24gdGhlIHBsYXRm
b3JtIGFuZCB0aGUgdmFyaWFibGUKK2A6OnRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9z
dHlsZSlgICh3aGljaCBpcyBpbml0aWFsaXplZCBmcm9tIHRoZQorY29tbWFuZC1saW5lIGZsYWcg
YC0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZWApLgorCisgICogT24gUE9TSVggc3lzdGVtcywgYGZv
cmsoKWAgKG9yIGBjbG9uZSgpYCBvbiBMaW51eCkgaXMgdXNlZCB0byBzcGF3biB0aGUgY2hpbGQs
IGFmdGVyIHdoaWNoOgorICAgICogSWYgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgaXMgYCJmYXN0ImAs
IHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudCBpcyBpbW1lZGlhdGVseSBleGVjdXRlZC4KKyAgICAq
IElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlzIGAidGhyZWFkc2FmZSJgLCB0aGUgY2hpbGQgcHJv
Y2VzcyByZS1leGVjdXRlcyB0aGUgdW5pdCB0ZXN0IGJpbmFyeSBqdXN0IGFzIGl0IHdhcyBvcmln
aW5hbGx5IGludm9rZWQsIGJ1dCB3aXRoIHNvbWUgZXh0cmEgZmxhZ3MgdG8gY2F1c2UganVzdCB0
aGUgc2luZ2xlIGRlYXRoIHRlc3QgdW5kZXIgY29uc2lkZXJhdGlvbiB0byBiZSBydW4uCisgICog
T24gV2luZG93cywgdGhlIGNoaWxkIGlzIHNwYXduZWQgdXNpbmcgdGhlIGBDcmVhdGVQcm9jZXNz
KClgIEFQSSwgYW5kIHJlLWV4ZWN1dGVzIHRoZSBiaW5hcnkgdG8gY2F1c2UganVzdCB0aGUgc2lu
Z2xlIGRlYXRoIHRlc3QgdW5kZXIgY29uc2lkZXJhdGlvbiB0byBiZSBydW4gLSBtdWNoIGxpa2Ug
dGhlIGB0aHJlYWRzYWZlYCBtb2RlIG9uIFBPU0lYLgorCitPdGhlciB2YWx1ZXMgZm9yIHRoZSB2
YXJpYWJsZSBhcmUgaWxsZWdhbCBhbmQgd2lsbCBjYXVzZSB0aGUgZGVhdGggdGVzdCB0bworZmFp
bC4gQ3VycmVudGx5LCB0aGUgZmxhZydzIGRlZmF1bHQgdmFsdWUgaXMgYCJmYXN0ImAuIEhvd2V2
ZXIsIHdlIHJlc2VydmUgdGhlCityaWdodCB0byBjaGFuZ2UgaXQgaW4gdGhlIGZ1dHVyZS4gVGhl
cmVmb3JlLCB5b3VyIHRlc3RzIHNob3VsZCBub3QgZGVwZW5kIG9uCit0aGlzLgorCitJbiBlaXRo
ZXIgY2FzZSwgdGhlIHBhcmVudCBwcm9jZXNzIHdhaXRzIGZvciB0aGUgY2hpbGQgcHJvY2VzcyB0
byBjb21wbGV0ZSwgYW5kIGNoZWNrcyB0aGF0CisKKyAgMS4gdGhlIGNoaWxkJ3MgZXhpdCBzdGF0
dXMgc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUsIGFuZAorICAxLiB0aGUgY2hpbGQncyBzdGRlcnIg
bWF0Y2hlcyB0aGUgcmVndWxhciBleHByZXNzaW9uLgorCitJZiB0aGUgZGVhdGggdGVzdCBzdGF0
ZW1lbnQgcnVucyB0byBjb21wbGV0aW9uIHdpdGhvdXQgZHlpbmcsIHRoZSBjaGlsZAorcHJvY2Vz
cyB3aWxsIG5vbmV0aGVsZXNzIHRlcm1pbmF0ZSwgYW5kIHRoZSBhc3NlcnRpb24gZmFpbHMuCisK
KyMjIERlYXRoIFRlc3RzIEFuZCBUaHJlYWRzICMjCisKK1RoZSByZWFzb24gZm9yIHRoZSB0d28g
ZGVhdGggdGVzdCBzdHlsZXMgaGFzIHRvIGRvIHdpdGggdGhyZWFkIHNhZmV0eS4gRHVlIHRvCit3
ZWxsLWtub3duIHByb2JsZW1zIHdpdGggZm9ya2luZyBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhyZWFk
cywgZGVhdGggdGVzdHMgc2hvdWxkCitiZSBydW4gaW4gYSBzaW5nbGUtdGhyZWFkZWQgY29udGV4
dC4gU29tZXRpbWVzLCBob3dldmVyLCBpdCBpc24ndCBmZWFzaWJsZSB0bworYXJyYW5nZSB0aGF0
IGtpbmQgb2YgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBzdGF0aWNhbGx5LWluaXRpYWxpemVk
IG1vZHVsZXMKK21heSBzdGFydCB0aHJlYWRzIGJlZm9yZSBtYWluIGlzIGV2ZXIgcmVhY2hlZC4g
T25jZSB0aHJlYWRzIGhhdmUgYmVlbiBjcmVhdGVkLAoraXQgbWF5IGJlIGRpZmZpY3VsdCBvciBp
bXBvc3NpYmxlIHRvIGNsZWFuIHRoZW0gdXAuCisKK0dvb2dsZSBUZXN0IGhhcyB0aHJlZSBmZWF0
dXJlcyBpbnRlbmRlZCB0byByYWlzZSBhd2FyZW5lc3Mgb2YgdGhyZWFkaW5nIGlzc3Vlcy4KKwor
ICAxLiBBIHdhcm5pbmcgaXMgZW1pdHRlZCBpZiBtdWx0aXBsZSB0aHJlYWRzIGFyZSBydW5uaW5n
IHdoZW4gYSBkZWF0aCB0ZXN0IGlzIGVuY291bnRlcmVkLgorICAxLiBUZXN0IGNhc2VzIHdpdGgg
YSBuYW1lIGVuZGluZyBpbiAiRGVhdGhUZXN0IiBhcmUgcnVuIGJlZm9yZSBhbGwgb3RoZXIgdGVz
dHMuCisgIDEuIEl0IHVzZXMgYGNsb25lKClgIGluc3RlYWQgb2YgYGZvcmsoKWAgdG8gc3Bhd24g
dGhlIGNoaWxkIHByb2Nlc3Mgb24gTGludXggKGBjbG9uZSgpYCBpcyBub3QgYXZhaWxhYmxlIG9u
IEN5Z3dpbiBhbmQgTWFjKSwgYXMgYGZvcmsoKWAgaXMgbW9yZSBsaWtlbHkgdG8gY2F1c2UgdGhl
IGNoaWxkIHRvIGhhbmcgd2hlbiB0aGUgcGFyZW50IHByb2Nlc3MgaGFzIG11bHRpcGxlIHRocmVh
ZHMuCisKK0l0J3MgcGVyZmVjdGx5IGZpbmUgdG8gY3JlYXRlIHRocmVhZHMgaW5zaWRlIGEgZGVh
dGggdGVzdCBzdGF0ZW1lbnQ7IHRoZXkgYXJlCitleGVjdXRlZCBpbiBhIHNlcGFyYXRlIHByb2Nl
c3MgYW5kIGNhbm5vdCBhZmZlY3QgdGhlIHBhcmVudC4KKworIyMgRGVhdGggVGVzdCBTdHlsZXMg
IyMKKworVGhlICJ0aHJlYWRzYWZlIiBkZWF0aCB0ZXN0IHN0eWxlIHdhcyBpbnRyb2R1Y2VkIGlu
IG9yZGVyIHRvIGhlbHAgbWl0aWdhdGUgdGhlCityaXNrcyBvZiB0ZXN0aW5nIGluIGEgcG9zc2li
bHkgbXVsdGl0aHJlYWRlZCBlbnZpcm9ubWVudC4gSXQgdHJhZGVzIGluY3JlYXNlZAordGVzdCBl
eGVjdXRpb24gdGltZSAocG90ZW50aWFsbHkgZHJhbWF0aWNhbGx5IHNvKSBmb3IgaW1wcm92ZWQg
dGhyZWFkIHNhZmV0eS4KK1dlIHN1Z2dlc3QgdXNpbmcgdGhlIGZhc3RlciwgZGVmYXVsdCAiZmFz
dCIgc3R5bGUgdW5sZXNzIHlvdXIgdGVzdCBoYXMgc3BlY2lmaWMKK3Byb2JsZW1zIHdpdGggaXQu
CisKK1lvdSBjYW4gY2hvb3NlIGEgcGFydGljdWxhciBzdHlsZSBvZiBkZWF0aCB0ZXN0cyBieSBz
ZXR0aW5nIHRoZSBmbGFnCitwcm9ncmFtbWF0aWNhbGx5OgorCitgYGAKKzo6dGVzdGluZzo6RkxB
R1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJ0aHJlYWRzYWZlIjsKK2BgYAorCitZb3UgY2Fu
IGRvIHRoaXMgaW4gYG1haW4oKWAgdG8gc2V0IHRoZSBzdHlsZSBmb3IgYWxsIGRlYXRoIHRlc3Rz
IGluIHRoZQorYmluYXJ5LCBvciBpbiBpbmRpdmlkdWFsIHRlc3RzLiBSZWNhbGwgdGhhdCBmbGFn
cyBhcmUgc2F2ZWQgYmVmb3JlIHJ1bm5pbmcgZWFjaAordGVzdCBhbmQgcmVzdG9yZWQgYWZ0ZXJ3
YXJkcywgc28geW91IG5lZWQgbm90IGRvIHRoYXQgeW91cnNlbGYuIEZvciBleGFtcGxlOgorCitg
YGAKK1RFU1QoTXlEZWF0aFRlc3QsIFRlc3RPbmUpIHsKKyAgOjp0ZXN0aW5nOjpGTEFHU19ndGVz
dF9kZWF0aF90ZXN0X3N0eWxlID0gInRocmVhZHNhZmUiOworICAvLyBUaGlzIHRlc3QgaXMgcnVu
IGluIHRoZSAidGhyZWFkc2FmZSIgc3R5bGU6CisgIEFTU0VSVF9ERUFUSChUaGlzU2hvdWxkRGll
KCksICIiKTsKK30KKworVEVTVChNeURlYXRoVGVzdCwgVGVzdFR3bykgeworICAvLyBUaGlzIHRl
c3QgaXMgcnVuIGluIHRoZSAiZmFzdCIgc3R5bGU6CisgIEFTU0VSVF9ERUFUSChUaGlzU2hvdWxk
RGllKCksICIiKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIDo6
dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICA6OnRlc3Rpbmc6OkZMQUdT
X2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAiZmFzdCI7CisgIHJldHVybiBSVU5fQUxMX1RFU1RT
KCk7Cit9CitgYGAKKworIyMgQ2F2ZWF0cyAjIworCitUaGUgX3N0YXRlbWVudF8gYXJndW1lbnQg
b2YgYEFTU0VSVF9FWElUKClgIGNhbiBiZSBhbnkgdmFsaWQgQysrIHN0YXRlbWVudC4KK0lmIGl0
IGxlYXZlcyB0aGUgY3VycmVudCBmdW5jdGlvbiB2aWEgYSBgcmV0dXJuYCBzdGF0ZW1lbnQgb3Ig
YnkgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLAordGhlIGRlYXRoIHRlc3QgaXMgY29uc2lkZXJlZCB0
byBoYXZlIGZhaWxlZC4gIFNvbWUgR29vZ2xlIFRlc3QgbWFjcm9zIG1heSByZXR1cm4KK2Zyb20g
dGhlIGN1cnJlbnQgZnVuY3Rpb24gKGUuZy4gYEFTU0VSVF9UUlVFKClgKSwgc28gYmUgc3VyZSB0
byBhdm9pZCB0aGVtIGluIF9zdGF0ZW1lbnRfLgorCitTaW5jZSBfc3RhdGVtZW50XyBydW5zIGlu
IHRoZSBjaGlsZCBwcm9jZXNzLCBhbnkgaW4tbWVtb3J5IHNpZGUgZWZmZWN0IChlLmcuCittb2Rp
ZnlpbmcgYSB2YXJpYWJsZSwgcmVsZWFzaW5nIG1lbW9yeSwgZXRjKSBpdCBjYXVzZXMgd2lsbCBf
bm90XyBiZSBvYnNlcnZhYmxlCitpbiB0aGUgcGFyZW50IHByb2Nlc3MuIEluIHBhcnRpY3VsYXIs
IGlmIHlvdSByZWxlYXNlIG1lbW9yeSBpbiBhIGRlYXRoIHRlc3QsCit5b3VyIHByb2dyYW0gd2ls
bCBmYWlsIHRoZSBoZWFwIGNoZWNrIGFzIHRoZSBwYXJlbnQgcHJvY2VzcyB3aWxsIG5ldmVyIHNl
ZSB0aGUKK21lbW9yeSByZWNsYWltZWQuIFRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgeW91IGNhbgor
CisgIDEuIHRyeSBub3QgdG8gZnJlZSBtZW1vcnkgaW4gYSBkZWF0aCB0ZXN0OworICAxLiBmcmVl
IHRoZSBtZW1vcnkgYWdhaW4gaW4gdGhlIHBhcmVudCBwcm9jZXNzOyBvcgorICAxLiBkbyBub3Qg
dXNlIHRoZSBoZWFwIGNoZWNrZXIgaW4geW91ciBwcm9ncmFtLgorCitEdWUgdG8gYW4gaW1wbGVt
ZW50YXRpb24gZGV0YWlsLCB5b3UgY2Fubm90IHBsYWNlIG11bHRpcGxlIGRlYXRoIHRlc3QKK2Fz
c2VydGlvbnMgb24gdGhlIHNhbWUgbGluZTsgb3RoZXJ3aXNlLCBjb21waWxhdGlvbiB3aWxsIGZh
aWwgd2l0aCBhbiB1bm9idmlvdXMKK2Vycm9yIG1lc3NhZ2UuCisKK0Rlc3BpdGUgdGhlIGltcHJv
dmVkIHRocmVhZCBzYWZldHkgYWZmb3JkZWQgYnkgdGhlICJ0aHJlYWRzYWZlIiBzdHlsZSBvZiBk
ZWF0aAordGVzdCwgdGhyZWFkIHByb2JsZW1zIHN1Y2ggYXMgZGVhZGxvY2sgYXJlIHN0aWxsIHBv
c3NpYmxlIGluIHRoZSBwcmVzZW5jZSBvZgoraGFuZGxlcnMgcmVnaXN0ZXJlZCB3aXRoIGBwdGhy
ZWFkX2F0Zm9yaygzKWAuCisKKyMgVXNpbmcgQXNzZXJ0aW9ucyBpbiBTdWItcm91dGluZXMgIwor
CisjIyBBZGRpbmcgVHJhY2VzIHRvIEFzc2VydGlvbnMgIyMKKworSWYgYSB0ZXN0IHN1Yi1yb3V0
aW5lIGlzIGNhbGxlZCBmcm9tIHNldmVyYWwgcGxhY2VzLCB3aGVuIGFuIGFzc2VydGlvbgoraW5z
aWRlIGl0IGZhaWxzLCBpdCBjYW4gYmUgaGFyZCB0byB0ZWxsIHdoaWNoIGludm9jYXRpb24gb2Yg
dGhlCitzdWItcm91dGluZSB0aGUgZmFpbHVyZSBpcyBmcm9tLiAgWW91IGNhbiBhbGxldmlhdGUg
dGhpcyBwcm9ibGVtIHVzaW5nCitleHRyYSBsb2dnaW5nIG9yIGN1c3RvbSBmYWlsdXJlIG1lc3Nh
Z2VzLCBidXQgdGhhdCB1c3VhbGx5IGNsdXR0ZXJzIHVwCit5b3VyIHRlc3RzLiBBIGJldHRlciBz
b2x1dGlvbiBpcyB0byB1c2UgdGhlIGBTQ09QRURfVFJBQ0VgIG1hY3JvOgorCit8IGBTQ09QRURf
VFJBQ0UoYF9tZXNzYWdlX2ApO2AgfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwK
Kword2hlcmUgX21lc3NhZ2VfIGNhbiBiZSBhbnl0aGluZyBzdHJlYW1hYmxlIHRvIGBzdGQ6Om9z
dHJlYW1gLiBUaGlzCittYWNybyB3aWxsIGNhdXNlIHRoZSBjdXJyZW50IGZpbGUgbmFtZSwgbGlu
ZSBudW1iZXIsIGFuZCB0aGUgZ2l2ZW4KK21lc3NhZ2UgdG8gYmUgYWRkZWQgaW4gZXZlcnkgZmFp
bHVyZSBtZXNzYWdlLiBUaGUgZWZmZWN0IHdpbGwgYmUKK3VuZG9uZSB3aGVuIHRoZSBjb250cm9s
IGxlYXZlcyB0aGUgY3VycmVudCBsZXhpY2FsIHNjb3BlLgorCitGb3IgZXhhbXBsZSwKKworYGBg
CisxMDogdm9pZCBTdWIxKGludCBuKSB7CisxMTogICBFWFBFQ1RfRVEoMSwgQmFyKG4pKTsKKzEy
OiAgIEVYUEVDVF9FUSgyLCBCYXIobiArIDEpKTsKKzEzOiB9CisxNDoKKzE1OiBURVNUKEZvb1Rl
c3QsIEJhcikgeworMTY6ICAgeworMTc6ICAgICBTQ09QRURfVFJBQ0UoIkEiKTsgIC8vIFRoaXMg
dHJhY2UgcG9pbnQgd2lsbCBiZSBpbmNsdWRlZCBpbgorMTg6ICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGV2ZXJ5IGZhaWx1cmUgaW4gdGhpcyBzY29wZS4KKzE5OiAgICAgU3ViMSgxKTsKKzIw
OiAgIH0KKzIxOiAgIC8vIE5vdyBpdCB3b24ndC4KKzIyOiAgIFN1YjEoOSk7CisyMzogfQorYGBg
CisKK2NvdWxkIHJlc3VsdCBpbiBtZXNzYWdlcyBsaWtlIHRoZXNlOgorCitgYGAKK3BhdGgvdG8v
Zm9vX3Rlc3QuY2M6MTE6IEZhaWx1cmUKK1ZhbHVlIG9mOiBCYXIobikKK0V4cGVjdGVkOiAxCisg
IEFjdHVhbDogMgorICAgVHJhY2U6CitwYXRoL3RvL2Zvb190ZXN0LmNjOjE3OiBBCisKK3BhdGgv
dG8vZm9vX3Rlc3QuY2M6MTI6IEZhaWx1cmUKK1ZhbHVlIG9mOiBCYXIobiArIDEpCitFeHBlY3Rl
ZDogMgorICBBY3R1YWw6IDMKK2BgYAorCitXaXRob3V0IHRoZSB0cmFjZSwgaXQgd291bGQndmUg
YmVlbiBkaWZmaWN1bHQgdG8ga25vdyB3aGljaCBpbnZvY2F0aW9uCitvZiBgU3ViMSgpYCB0aGUg
dHdvIGZhaWx1cmVzIGNvbWUgZnJvbSByZXNwZWN0aXZlbHkuIChZb3UgY291bGQgYWRkIGFuCitl
eHRyYSBtZXNzYWdlIHRvIGVhY2ggYXNzZXJ0aW9uIGluIGBTdWIxKClgIHRvIGluZGljYXRlIHRo
ZSB2YWx1ZSBvZgorYG5gLCBidXQgdGhhdCdzIHRlZGlvdXMuKQorCitTb21lIHRpcHMgb24gdXNp
bmcgYFNDT1BFRF9UUkFDRWA6CisKKyAgMS4gV2l0aCBhIHN1aXRhYmxlIG1lc3NhZ2UsIGl0J3Mg
b2Z0ZW4gZW5vdWdoIHRvIHVzZSBgU0NPUEVEX1RSQUNFYCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEg
c3ViLXJvdXRpbmUsIGluc3RlYWQgb2YgYXQgZWFjaCBjYWxsIHNpdGUuCisgIDEuIFdoZW4gY2Fs
bGluZyBzdWItcm91dGluZXMgaW5zaWRlIGEgbG9vcCwgbWFrZSB0aGUgbG9vcCBpdGVyYXRvciBw
YXJ0IG9mIHRoZSBtZXNzYWdlIGluIGBTQ09QRURfVFJBQ0VgIHN1Y2ggdGhhdCB5b3UgY2FuIGtu
b3cgd2hpY2ggaXRlcmF0aW9uIHRoZSBmYWlsdXJlIGlzIGZyb20uCisgIDEuIFNvbWV0aW1lcyB0
aGUgbGluZSBudW1iZXIgb2YgdGhlIHRyYWNlIHBvaW50IGlzIGVub3VnaCBmb3IgaWRlbnRpZnlp
bmcgdGhlIHBhcnRpY3VsYXIgaW52b2NhdGlvbiBvZiBhIHN1Yi1yb3V0aW5lLiBJbiB0aGlzIGNh
c2UsIHlvdSBkb24ndCBoYXZlIHRvIGNob29zZSBhIHVuaXF1ZSBtZXNzYWdlIGZvciBgU0NPUEVE
X1RSQUNFYC4gWW91IGNhbiBzaW1wbHkgdXNlIGAiImAuCisgIDEuIFlvdSBjYW4gdXNlIGBTQ09Q
RURfVFJBQ0VgIGluIGFuIGlubmVyIHNjb3BlIHdoZW4gdGhlcmUgaXMgb25lIGluIHRoZSBvdXRl
ciBzY29wZS4gSW4gdGhpcyBjYXNlLCBhbGwgYWN0aXZlIHRyYWNlIHBvaW50cyB3aWxsIGJlIGlu
Y2x1ZGVkIGluIHRoZSBmYWlsdXJlIG1lc3NhZ2VzLCBpbiByZXZlcnNlIG9yZGVyIHRoZXkgYXJl
IGVuY291bnRlcmVkLgorICAxLiBUaGUgdHJhY2UgZHVtcCBpcyBjbGlja2FibGUgaW4gRW1hY3Mn
IGNvbXBpbGF0aW9uIGJ1ZmZlciAtIGhpdCByZXR1cm4gb24gYSBsaW5lIG51bWJlciBhbmQgeW91
J2xsIGJlIHRha2VuIHRvIHRoYXQgbGluZSBpbiB0aGUgc291cmNlIGZpbGUhCisKK19BdmFpbGFi
aWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBQcm9wYWdhdGluZyBGYXRhbCBGYWls
dXJlcyAjIworCitBIGNvbW1vbiBwaXRmYWxsIHdoZW4gdXNpbmcgYEFTU0VSVF8qYCBhbmQgYEZB
SUwqYCBpcyBub3QgdW5kZXJzdGFuZGluZyB0aGF0Cit3aGVuIHRoZXkgZmFpbCB0aGV5IG9ubHkg
YWJvcnQgdGhlIF9jdXJyZW50IGZ1bmN0aW9uXywgbm90IHRoZSBlbnRpcmUgdGVzdC4gRm9yCitl
eGFtcGxlLCB0aGUgZm9sbG93aW5nIHRlc3Qgd2lsbCBzZWdmYXVsdDoKK2BgYAordm9pZCBTdWJy
b3V0aW5lKCkgeworICAvLyBHZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlIGFuZCBhYm9ydHMgdGhl
IGN1cnJlbnQgZnVuY3Rpb24uCisgIEFTU0VSVF9FUSgxLCAyKTsKKyAgLy8gVGhlIGZvbGxvd2lu
ZyB3b24ndCBiZSBleGVjdXRlZC4KKyAgLi4uCit9CisKK1RFU1QoRm9vVGVzdCwgQmFyKSB7Cisg
IFN1YnJvdXRpbmUoKTsKKyAgLy8gVGhlIGludGVuZGVkIGJlaGF2aW9yIGlzIGZvciB0aGUgZmF0
YWwgZmFpbHVyZQorICAvLyBpbiBTdWJyb3V0aW5lKCkgdG8gYWJvcnQgdGhlIGVudGlyZSB0ZXN0
LgorICAvLyBUaGUgYWN0dWFsIGJlaGF2aW9yOiB0aGUgZnVuY3Rpb24gZ29lcyBvbiBhZnRlciBT
dWJyb3V0aW5lKCkgcmV0dXJucy4KKyAgaW50KiBwID0gTlVMTDsKKyAgKnAgPSAzOyAvLyBTZWdm
YXVsdCEKK30KK2BgYAorCitTaW5jZSB3ZSBkb24ndCB1c2UgZXhjZXB0aW9ucywgaXQgaXMgdGVj
aG5pY2FsbHkgaW1wb3NzaWJsZSB0bworaW1wbGVtZW50IHRoZSBpbnRlbmRlZCBiZWhhdmlvciBo
ZXJlLiAgVG8gYWxsZXZpYXRlIHRoaXMsIEdvb2dsZSBUZXN0Citwcm92aWRlcyB0d28gc29sdXRp
b25zLiAgWW91IGNvdWxkIHVzZSBlaXRoZXIgdGhlCitgKEFTU0VSVHxFWFBFQ1QpX05PX0ZBVEFM
X0ZBSUxVUkVgIGFzc2VydGlvbnMgb3IgdGhlCitgSGFzRmF0YWxGYWlsdXJlKClgIGZ1bmN0aW9u
LiAgVGhleSBhcmUgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgdHdvCitzdWJzZWN0aW9ucy4K
KworIyMjIEFzc2VydGluZyBvbiBTdWJyb3V0aW5lcyAjIyMKKworQXMgc2hvd24gYWJvdmUsIGlm
IHlvdXIgdGVzdCBjYWxscyBhIHN1YnJvdXRpbmUgdGhhdCBoYXMgYW4gYEFTU0VSVF8qYAorZmFp
bHVyZSBpbiBpdCwgdGhlIHRlc3Qgd2lsbCBjb250aW51ZSBhZnRlciB0aGUgc3Vicm91dGluZQor
cmV0dXJucy4gVGhpcyBtYXkgbm90IGJlIHdoYXQgeW91IHdhbnQuCisKK09mdGVuIHBlb3BsZSB3
YW50IGZhdGFsIGZhaWx1cmVzIHRvIHByb3BhZ2F0ZSBsaWtlIGV4Y2VwdGlvbnMuICBGb3IKK3Ro
YXQgR29vZ2xlIFRlc3Qgb2ZmZXJzIHRoZSBmb2xsb3dpbmcgbWFjcm9zOgorCit8ICoqRmF0YWwg
YXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6
LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tfAorfCBgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoYF9zdGF0ZW1lbnRfYCk7YCB8IGBFWFBF
Q1RfTk9fRkFUQUxfRkFJTFVSRShgX3N0YXRlbWVudF9gKTtgIHwgX3N0YXRlbWVudF8gZG9lc24n
dCBnZW5lcmF0ZSBhbnkgbmV3IGZhdGFsIGZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZC4g
fAorCitPbmx5IGZhaWx1cmVzIGluIHRoZSB0aHJlYWQgdGhhdCBleGVjdXRlcyB0aGUgYXNzZXJ0
aW9uIGFyZSBjaGVja2VkIHRvCitkZXRlcm1pbmUgdGhlIHJlc3VsdCBvZiB0aGlzIHR5cGUgb2Yg
YXNzZXJ0aW9ucy4gIElmIF9zdGF0ZW1lbnRfCitjcmVhdGVzIG5ldyB0aHJlYWRzLCBmYWlsdXJl
cyBpbiB0aGVzZSB0aHJlYWRzIGFyZSBpZ25vcmVkLgorCitFeGFtcGxlczoKKworYGBgCitBU1NF
UlRfTk9fRkFUQUxfRkFJTFVSRShGb28oKSk7CisKK2ludCBpOworRVhQRUNUX05PX0ZBVEFMX0ZB
SUxVUkUoeworICBpID0gQmFyKCk7Cit9KTsKK2BgYAorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgs
IFdpbmRvd3MsIE1hYy4gQXNzZXJ0aW9ucyBmcm9tIG11bHRpcGxlIHRocmVhZHMKK2FyZSBjdXJy
ZW50bHkgbm90IHN1cHBvcnRlZC4KKworIyMjIENoZWNraW5nIGZvciBGYWlsdXJlcyBpbiB0aGUg
Q3VycmVudCBUZXN0ICMjIworCitgSGFzRmF0YWxGYWlsdXJlKClgIGluIHRoZSBgOjp0ZXN0aW5n
OjpUZXN0YCBjbGFzcyByZXR1cm5zIGB0cnVlYCBpZiBhbgorYXNzZXJ0aW9uIGluIHRoZSBjdXJy
ZW50IHRlc3QgaGFzIHN1ZmZlcmVkIGEgZmF0YWwgZmFpbHVyZS4gVGhpcworYWxsb3dzIGZ1bmN0
aW9ucyB0byBjYXRjaCBmYXRhbCBmYWlsdXJlcyBpbiBhIHN1Yi1yb3V0aW5lIGFuZCByZXR1cm4K
K2Vhcmx5LgorCitgYGAKK2NsYXNzIFRlc3QgeworIHB1YmxpYzoKKyAgLi4uCisgIHN0YXRpYyBi
b29sIEhhc0ZhdGFsRmFpbHVyZSgpOworfTsKK2BgYAorCitUaGUgdHlwaWNhbCB1c2FnZSwgd2hp
Y2ggYmFzaWNhbGx5IHNpbXVsYXRlcyB0aGUgYmVoYXZpb3Igb2YgYSB0aHJvd24KK2V4Y2VwdGlv
biwgaXM6CisKK2BgYAorVEVTVChGb29UZXN0LCBCYXIpIHsKKyAgU3Vicm91dGluZSgpOworICAv
LyBBYm9ydHMgaWYgU3Vicm91dGluZSgpIGhhZCBhIGZhdGFsIGZhaWx1cmUuCisgIGlmIChIYXNG
YXRhbEZhaWx1cmUoKSkKKyAgICByZXR1cm47CisgIC8vIFRoZSBmb2xsb3dpbmcgd29uJ3QgYmUg
ZXhlY3V0ZWQuCisgIC4uLgorfQorYGBgCisKK0lmIGBIYXNGYXRhbEZhaWx1cmUoKWAgaXMgdXNl
ZCBvdXRzaWRlIG9mIGBURVNUKClgICwgYFRFU1RfRigpYCAsIG9yIGEgdGVzdAorZml4dHVyZSwg
eW91IG11c3QgYWRkIHRoZSBgOjp0ZXN0aW5nOjpUZXN0OjpgIHByZWZpeCwgYXMgaW46CisKK2Bg
YAoraWYgKDo6dGVzdGluZzo6VGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkpCisgIHJldHVybjsKK2Bg
YAorCitTaW1pbGFybHksIGBIYXNOb25mYXRhbEZhaWx1cmUoKWAgcmV0dXJucyBgdHJ1ZWAgaWYg
dGhlIGN1cnJlbnQgdGVzdAoraGFzIGF0IGxlYXN0IG9uZSBub24tZmF0YWwgZmFpbHVyZSwgYW5k
IGBIYXNGYWlsdXJlKClgIHJldHVybnMgYHRydWVgCitpZiB0aGUgY3VycmVudCB0ZXN0IGhhcyBh
dCBsZWFzdCBvbmUgZmFpbHVyZSBvZiBlaXRoZXIga2luZC4KKworX0F2YWlsYWJpbGl0eTpfIExp
bnV4LCBXaW5kb3dzLCBNYWMuICBgSGFzTm9uZmF0YWxGYWlsdXJlKClgIGFuZAorYEhhc0ZhaWx1
cmUoKWAgYXJlIGF2YWlsYWJsZSBzaW5jZSB2ZXJzaW9uIDEuNC4wLgorCisjIExvZ2dpbmcgQWRk
aXRpb25hbCBJbmZvcm1hdGlvbiAjCisKK0luIHlvdXIgdGVzdCBjb2RlLCB5b3UgY2FuIGNhbGwg
YFJlY29yZFByb3BlcnR5KCJrZXkiLCB2YWx1ZSlgIHRvIGxvZworYWRkaXRpb25hbCBpbmZvcm1h
dGlvbiwgd2hlcmUgYHZhbHVlYCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIGBpbnRgLiBU
aGUgX2xhc3RfIHZhbHVlIHJlY29yZGVkIGZvciBhIGtleSB3aWxsIGJlIGVtaXR0ZWQgdG8gdGhl
IFhNTCBvdXRwdXQKK2lmIHlvdSBzcGVjaWZ5IG9uZS4gRm9yIGV4YW1wbGUsIHRoZSB0ZXN0CisK
K2BgYAorVEVTVF9GKFdpZGdldFVzYWdlVGVzdCwgTWluQW5kTWF4V2lkZ2V0cykgeworICBSZWNv
cmRQcm9wZXJ0eSgiTWF4aW11bVdpZGdldHMiLCBDb21wdXRlTWF4VXNhZ2UoKSk7CisgIFJlY29y
ZFByb3BlcnR5KCJNaW5pbXVtV2lkZ2V0cyIsIENvbXB1dGVNaW5Vc2FnZSgpKTsKK30KK2BgYAor
Cit3aWxsIG91dHB1dCBYTUwgbGlrZSB0aGlzOgorCitgYGAKKy4uLgorICA8dGVzdGNhc2UgbmFt
ZT0iTWluQW5kTWF4V2lkZ2V0cyIgc3RhdHVzPSJydW4iIHRpbWU9IjYiIGNsYXNzbmFtZT0iV2lk
Z2V0VXNhZ2VUZXN0IgorICAgICAgICAgICAgTWF4aW11bVdpZGdldHM9IjEyIgorICAgICAgICAg
ICAgTWluaW11bVdpZGdldHM9IjkiIC8+CisuLi4KK2BgYAorCitfTm90ZV86CisgICogYFJlY29y
ZFByb3BlcnR5KClgIGlzIGEgc3RhdGljIG1lbWJlciBvZiB0aGUgYFRlc3RgIGNsYXNzLiBUaGVy
ZWZvcmUgaXQgbmVlZHMgdG8gYmUgcHJlZml4ZWQgd2l0aCBgOjp0ZXN0aW5nOjpUZXN0OjpgIGlm
IHVzZWQgb3V0c2lkZSBvZiB0aGUgYFRFU1RgIGJvZHkgYW5kIHRoZSB0ZXN0IGZpeHR1cmUgY2xh
c3MuCisgICogYGtleWAgbXVzdCBiZSBhIHZhbGlkIFhNTCBhdHRyaWJ1dGUgbmFtZSwgYW5kIGNh
bm5vdCBjb25mbGljdCB3aXRoIHRoZSBvbmVzIGFscmVhZHkgdXNlZCBieSBHb29nbGUgVGVzdCAo
YG5hbWVgLCBgc3RhdHVzYCwgYHRpbWVgLCBgY2xhc3NuYW1lYCwgYHR5cGVfcGFyYW1gLCBhbmQg
YHZhbHVlX3BhcmFtYCkuCisgICogQ2FsbGluZyBgUmVjb3JkUHJvcGVydHkoKWAgb3V0c2lkZSBv
ZiB0aGUgbGlmZXNwYW4gb2YgYSB0ZXN0IGlzIGFsbG93ZWQuIElmIGl0J3MgY2FsbGVkIG91dHNp
ZGUgb2YgYSB0ZXN0IGJ1dCBiZXR3ZWVuIGEgdGVzdCBjYXNlJ3MgYFNldFVwVGVzdENhc2UoKWAg
YW5kIGBUZWFyRG93blRlc3RDYXNlKClgIG1ldGhvZHMsIGl0IHdpbGwgYmUgYXR0cmlidXRlZCB0
byB0aGUgWE1MIGVsZW1lbnQgZm9yIHRoZSB0ZXN0IGNhc2UuIElmIGl0J3MgY2FsbGVkIG91dHNp
ZGUgb2YgYWxsIHRlc3QgY2FzZXMgKGUuZy4gaW4gYSB0ZXN0IGVudmlyb25tZW50KSwgaXQgd2ls
bCBiZSBhdHRyaWJ1dGVkIHRvIHRoZSB0b3AtbGV2ZWwgWE1MIGVsZW1lbnQuCisKK19BdmFpbGFi
aWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIFNoYXJpbmcgUmVzb3VyY2VzIEJldHdl
ZW4gVGVzdHMgaW4gdGhlIFNhbWUgVGVzdCBDYXNlICMKKworCisKK0dvb2dsZSBUZXN0IGNyZWF0
ZXMgYSBuZXcgdGVzdCBmaXh0dXJlIG9iamVjdCBmb3IgZWFjaCB0ZXN0IGluIG9yZGVyIHRvIG1h
a2UKK3Rlc3RzIGluZGVwZW5kZW50IGFuZCBlYXNpZXIgdG8gZGVidWcuIEhvd2V2ZXIsIHNvbWV0
aW1lcyB0ZXN0cyB1c2UgcmVzb3VyY2VzCit0aGF0IGFyZSBleHBlbnNpdmUgdG8gc2V0IHVwLCBt
YWtpbmcgdGhlIG9uZS1jb3B5LXBlci10ZXN0IG1vZGVsIHByb2hpYml0aXZlbHkKK2V4cGVuc2l2
ZS4KKworSWYgdGhlIHRlc3RzIGRvbid0IGNoYW5nZSB0aGUgcmVzb3VyY2UsIHRoZXJlJ3Mgbm8g
aGFybSBpbiB0aGVtIHNoYXJpbmcgYQorc2luZ2xlIHJlc291cmNlIGNvcHkuIFNvLCBpbiBhZGRp
dGlvbiB0byBwZXItdGVzdCBzZXQtdXAvdGVhci1kb3duLCBHb29nbGUgVGVzdAorYWxzbyBzdXBw
b3J0cyBwZXItdGVzdC1jYXNlIHNldC11cC90ZWFyLWRvd24uIFRvIHVzZSBpdDoKKworICAxLiBJ
biB5b3VyIHRlc3QgZml4dHVyZSBjbGFzcyAoc2F5IGBGb29UZXN0YCApLCBkZWZpbmUgYXMgYHN0
YXRpY2Agc29tZSBtZW1iZXIgdmFyaWFibGVzIHRvIGhvbGQgdGhlIHNoYXJlZCByZXNvdXJjZXMu
CisgIDEuIEluIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBjbGFzcywgZGVmaW5lIGEgYHN0YXRpYyB2
b2lkIFNldFVwVGVzdENhc2UoKWAgZnVuY3Rpb24gKHJlbWVtYmVyIG5vdCB0byBzcGVsbCBpdCBh
cyAqKmBTZXR1cFRlc3RDYXNlYCoqIHdpdGggYSBzbWFsbCBgdWAhKSB0byBzZXQgdXAgdGhlIHNo
YXJlZCByZXNvdXJjZXMgYW5kIGEgYHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKWAgZnVu
Y3Rpb24gdG8gdGVhciB0aGVtIGRvd24uCisKK1RoYXQncyBpdCEgR29vZ2xlIFRlc3QgYXV0b21h
dGljYWxseSBjYWxscyBgU2V0VXBUZXN0Q2FzZSgpYCBiZWZvcmUgcnVubmluZyB0aGUKK19maXJz
dCB0ZXN0XyBpbiB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZSAoaS5lLiBiZWZvcmUgY3JlYXRpbmcg
dGhlIGZpcnN0CitgRm9vVGVzdGAgb2JqZWN0KSwgYW5kIGNhbGxzIGBUZWFyRG93blRlc3RDYXNl
KClgIGFmdGVyIHJ1bm5pbmcgdGhlIF9sYXN0IHRlc3RfCitpbiBpdCAoaS5lLiBhZnRlciBkZWxl
dGluZyB0aGUgbGFzdCBgRm9vVGVzdGAgb2JqZWN0KS4gSW4gYmV0d2VlbiwgdGhlIHRlc3RzCitj
YW4gdXNlIHRoZSBzaGFyZWQgcmVzb3VyY2VzLgorCitSZW1lbWJlciB0aGF0IHRoZSB0ZXN0IG9y
ZGVyIGlzIHVuZGVmaW5lZCwgc28geW91ciBjb2RlIGNhbid0IGRlcGVuZCBvbiBhIHRlc3QKK3By
ZWNlZGluZyBvciBmb2xsb3dpbmcgYW5vdGhlci4gQWxzbywgdGhlIHRlc3RzIG11c3QgZWl0aGVy
IG5vdCBtb2RpZnkgdGhlCitzdGF0ZSBvZiBhbnkgc2hhcmVkIHJlc291cmNlLCBvciwgaWYgdGhl
eSBkbyBtb2RpZnkgdGhlIHN0YXRlLCB0aGV5IG11c3QKK3Jlc3RvcmUgdGhlIHN0YXRlIHRvIGl0
cyBvcmlnaW5hbCB2YWx1ZSBiZWZvcmUgcGFzc2luZyBjb250cm9sIHRvIHRoZSBuZXh0Cit0ZXN0
LgorCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBwZXItdGVzdC1jYXNlIHNldC11cCBhbmQgdGVhci1k
b3duOgorYGBgCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJv
dGVjdGVkOgorICAvLyBQZXItdGVzdC1jYXNlIHNldC11cC4KKyAgLy8gQ2FsbGVkIGJlZm9yZSB0
aGUgZmlyc3QgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZS4KKyAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYg
bm90IG5lZWRlZC4KKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKKyAgICBzaGFyZWRf
cmVzb3VyY2VfID0gbmV3IC4uLjsKKyAgfQorCisgIC8vIFBlci10ZXN0LWNhc2UgdGVhci1kb3du
LgorICAvLyBDYWxsZWQgYWZ0ZXIgdGhlIGxhc3QgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZS4KKyAg
Ly8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90IG5lZWRlZC4KKyAgc3RhdGljIHZvaWQgVGVhckRvd25U
ZXN0Q2FzZSgpIHsKKyAgICBkZWxldGUgc2hhcmVkX3Jlc291cmNlXzsKKyAgICBzaGFyZWRfcmVz
b3VyY2VfID0gTlVMTDsKKyAgfQorCisgIC8vIFlvdSBjYW4gZGVmaW5lIHBlci10ZXN0IHNldC11
cCBhbmQgdGVhci1kb3duIGxvZ2ljIGFzIHVzdWFsLgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7
IC4uLiB9CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsgLi4uIH0KKworICAvLyBTb21lIGV4
cGVuc2l2ZSByZXNvdXJjZSBzaGFyZWQgYnkgYWxsIHRlc3RzLgorICBzdGF0aWMgVCogc2hhcmVk
X3Jlc291cmNlXzsKK307CisKK1QqIEZvb1Rlc3Q6OnNoYXJlZF9yZXNvdXJjZV8gPSBOVUxMOwor
CitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVk
X3Jlc291cmNlIGhlcmUgLi4uCit9CitURVNUX0YoRm9vVGVzdCwgVGVzdDIpIHsKKyAgLi4uIHlv
dSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlIGhlcmUgLi4uCit9CitgYGAKKworX0F2YWls
YWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMgR2xvYmFsIFNldC1VcCBhbmQgVGVh
ci1Eb3duICMKKworSnVzdCBhcyB5b3UgY2FuIGRvIHNldC11cCBhbmQgdGVhci1kb3duIGF0IHRo
ZSB0ZXN0IGxldmVsIGFuZCB0aGUgdGVzdCBjYXNlCitsZXZlbCwgeW91IGNhbiBhbHNvIGRvIGl0
IGF0IHRoZSB0ZXN0IHByb2dyYW0gbGV2ZWwuIEhlcmUncyBob3cuCisKK0ZpcnN0LCB5b3Ugc3Vi
Y2xhc3MgdGhlIGA6OnRlc3Rpbmc6OkVudmlyb25tZW50YCBjbGFzcyB0byBkZWZpbmUgYSB0ZXN0
CitlbnZpcm9ubWVudCwgd2hpY2gga25vd3MgaG93IHRvIHNldC11cCBhbmQgdGVhci1kb3duOgor
CitgYGAKK2NsYXNzIEVudmlyb25tZW50IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfkVudmlyb25t
ZW50KCkge30KKyAgLy8gT3ZlcnJpZGUgdGhpcyB0byBkZWZpbmUgaG93IHRvIHNldCB1cCB0aGUg
ZW52aXJvbm1lbnQuCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHt9CisgIC8vIE92ZXJyaWRlIHRo
aXMgdG8gZGVmaW5lIGhvdyB0byB0ZWFyIGRvd24gdGhlIGVudmlyb25tZW50LgorICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7fQorfTsKK2BgYAorCitUaGVuLCB5b3UgcmVnaXN0ZXIgYW4gaW5z
dGFuY2Ugb2YgeW91ciBlbnZpcm9ubWVudCBjbGFzcyB3aXRoIEdvb2dsZSBUZXN0IGJ5CitjYWxs
aW5nIHRoZSBgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgZnVuY3Rpb246
CisKK2BgYAorRW52aXJvbm1lbnQqIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChFbnZpcm9ubWVu
dCogZW52KTsKK2BgYAorCitOb3csIHdoZW4gYFJVTl9BTExfVEVTVFMoKWAgaXMgY2FsbGVkLCBp
dCBmaXJzdCBjYWxscyB0aGUgYFNldFVwKClgIG1ldGhvZCBvZgordGhlIGVudmlyb25tZW50IG9i
amVjdCwgdGhlbiBydW5zIHRoZSB0ZXN0cyBpZiB0aGVyZSB3YXMgbm8gZmF0YWwgZmFpbHVyZXMs
IGFuZAorZmluYWxseSBjYWxscyBgVGVhckRvd24oKWAgb2YgdGhlIGVudmlyb25tZW50IG9iamVj
dC4KKworSXQncyBPSyB0byByZWdpc3RlciBtdWx0aXBsZSBlbnZpcm9ubWVudCBvYmplY3RzLiBJ
biB0aGlzIGNhc2UsIHRoZWlyIGBTZXRVcCgpYAord2lsbCBiZSBjYWxsZWQgaW4gdGhlIG9yZGVy
IHRoZXkgYXJlIHJlZ2lzdGVyZWQsIGFuZCB0aGVpciBgVGVhckRvd24oKWAgd2lsbCBiZQorY2Fs
bGVkIGluIHRoZSByZXZlcnNlIG9yZGVyLgorCitOb3RlIHRoYXQgR29vZ2xlIFRlc3QgdGFrZXMg
b3duZXJzaGlwIG9mIHRoZSByZWdpc3RlcmVkIGVudmlyb25tZW50IG9iamVjdHMuCitUaGVyZWZv
cmUgKipkbyBub3QgZGVsZXRlIHRoZW0qKiBieSB5b3Vyc2VsZi4KKworWW91IHNob3VsZCBjYWxs
IGBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgYmVmb3JlIGBSVU5fQUxMX1RFU1RTKClgIGlz
CitjYWxsZWQsIHByb2JhYmx5IGluIGBtYWluKClgLiBJZiB5b3UgdXNlIGBndGVzdF9tYWluYCwg
eW91IG5lZWQgdG8gICAgICBjYWxsCit0aGlzIGJlZm9yZSBgbWFpbigpYCBzdGFydHMgZm9yIGl0
IHRvIHRha2UgZWZmZWN0LiBPbmUgd2F5IHRvIGRvIHRoaXMgaXMgdG8KK2RlZmluZSBhIGdsb2Jh
bCB2YXJpYWJsZSBsaWtlIHRoaXM6CisKK2BgYAorOjp0ZXN0aW5nOjpFbnZpcm9ubWVudCogY29u
c3QgZm9vX2VudiA9IDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBGb29F
bnZpcm9ubWVudCk7CitgYGAKKworSG93ZXZlciwgd2Ugc3Ryb25nbHkgcmVjb21tZW5kIHlvdSB0
byB3cml0ZSB5b3VyIG93biBgbWFpbigpYCBhbmQgY2FsbAorYEFkZEdsb2JhbFRlc3RFbnZpcm9u
bWVudCgpYCB0aGVyZSwgYXMgcmVseWluZyBvbiBpbml0aWFsaXphdGlvbiBvZiBnbG9iYWwKK3Zh
cmlhYmxlcyBtYWtlcyB0aGUgY29kZSBoYXJkZXIgdG8gcmVhZCBhbmQgbWF5IGNhdXNlIHByb2Js
ZW1zIHdoZW4geW91CityZWdpc3RlciBtdWx0aXBsZSBlbnZpcm9ubWVudHMgZnJvbSBkaWZmZXJl
bnQgdHJhbnNsYXRpb24gdW5pdHMgYW5kIHRoZQorZW52aXJvbm1lbnRzIGhhdmUgZGVwZW5kZW5j
aWVzIGFtb25nIHRoZW0gKHJlbWVtYmVyIHRoYXQgdGhlIGNvbXBpbGVyIGRvZXNuJ3QKK2d1YXJh
bnRlZSB0aGUgb3JkZXIgaW4gd2hpY2ggZ2xvYmFsIHZhcmlhYmxlcyBmcm9tIGRpZmZlcmVudCB0
cmFuc2xhdGlvbiB1bml0cworYXJlIGluaXRpYWxpemVkKS4KKworX0F2YWlsYWJpbGl0eTpfIExp
bnV4LCBXaW5kb3dzLCBNYWMuCisKKworIyBWYWx1ZSBQYXJhbWV0ZXJpemVkIFRlc3RzICMKKwor
X1ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHNfIGFsbG93IHlvdSB0byB0ZXN0IHlvdXIgY29kZSB3
aXRoIGRpZmZlcmVudAorcGFyYW1ldGVycyB3aXRob3V0IHdyaXRpbmcgbXVsdGlwbGUgY29waWVz
IG9mIHRoZSBzYW1lIHRlc3QuCisKK1N1cHBvc2UgeW91IHdyaXRlIGEgdGVzdCBmb3IgeW91ciBj
b2RlIGFuZCB0aGVuIHJlYWxpemUgdGhhdCB5b3VyIGNvZGUgaXMgYWZmZWN0ZWQgYnkgYSBwcmVz
ZW5jZSBvZiBhIEJvb2xlYW4gY29tbWFuZCBsaW5lIGZsYWcuCisKK2BgYAorVEVTVChNeUNvZGVU
ZXN0LCBUZXN0Rm9vKSB7CisgIC8vIEEgY29kZSB0byB0ZXN0IGZvbygpLgorfQorYGBgCisKK1Vz
dWFsbHkgcGVvcGxlIGZhY3RvciB0aGVpciB0ZXN0IGNvZGUgaW50byBhIGZ1bmN0aW9uIHdpdGgg
YSBCb29sZWFuIHBhcmFtZXRlciBpbiBzdWNoIHNpdHVhdGlvbnMuIFRoZSBmdW5jdGlvbiBzZXRz
IHRoZSBmbGFnLCB0aGVuIGV4ZWN1dGVzIHRoZSB0ZXN0aW5nIGNvZGUuCisKK2BgYAordm9pZCBU
ZXN0Rm9vSGVscGVyKGJvb2wgZmxhZ192YWx1ZSkgeworICBmbGFnID0gZmxhZ192YWx1ZTsKKyAg
Ly8gQSBjb2RlIHRvIHRlc3QgZm9vKCkuCit9CisKK1RFU1QoTXlDb2RlVGVzdCwgVGVzdEZvbykg
eworICBUZXN0Rm9vSGVscGVyKGZhbHNlKTsKKyAgVGVzdEZvb0hlbHBlcih0cnVlKTsKK30KK2Bg
YAorCitCdXQgdGhpcyBzZXR1cCBoYXMgc2VyaW91cyBkcmF3YmFja3MuIEZpcnN0LCB3aGVuIGEg
dGVzdCBhc3NlcnRpb24gZmFpbHMgaW4geW91ciB0ZXN0cywgaXQgYmVjb21lcyB1bmNsZWFyIHdo
YXQgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciBjYXVzZWQgaXQgdG8gZmFpbC4gWW91IGNhbiBzdHJl
YW0gYSBjbGFyaWZ5aW5nIG1lc3NhZ2UgaW50byB5b3VyIGBFWFBFQ1RgL2BBU1NFUlRgIHN0YXRl
bWVudHMsIGJ1dCBpdCB5b3UnbGwgaGF2ZSB0byBkbyBpdCB3aXRoIGFsbCBvZiB0aGVtLiBTZWNv
bmQsIHlvdSBoYXZlIHRvIGFkZCBvbmUgc3VjaCBoZWxwZXIgZnVuY3Rpb24gcGVyIHRlc3QuIFdo
YXQgaWYgeW91IGhhdmUgdGVuIHRlc3RzPyBUd2VudHk/IEEgaHVuZHJlZD8KKworVmFsdWUtcGFy
YW1ldGVyaXplZCB0ZXN0cyB3aWxsIGxldCB5b3Ugd3JpdGUgeW91ciB0ZXN0IG9ubHkgb25jZSBh
bmQgdGhlbiBlYXNpbHkgaW5zdGFudGlhdGUgYW5kIHJ1biBpdCB3aXRoIGFuIGFyYml0cmFyeSBu
dW1iZXIgb2YgcGFyYW1ldGVyIHZhbHVlcy4KKworSGVyZSBhcmUgc29tZSBvdGhlciBzaXR1YXRp
b25zIHdoZW4gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBjb21lIGhhbmR5OgorCisgICogWW91
IHdhbnQgdG8gdGVzdCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIG9mIGFuIE9PIGludGVyZmFj
ZS4KKyAgKiBZb3Ugd2FudCB0byB0ZXN0IHlvdXIgY29kZSBvdmVyIHZhcmlvdXMgaW5wdXRzIChh
LmsuYS4gZGF0YS1kcml2ZW4gdGVzdGluZykuIFRoaXMgZmVhdHVyZSBpcyBlYXN5IHRvIGFidXNl
LCBzbyBwbGVhc2UgZXhlcmNpc2UgeW91ciBnb29kIHNlbnNlIHdoZW4gZG9pbmcgaXQhCisKKyMj
IEhvdyB0byBXcml0ZSBWYWx1ZS1QYXJhbWV0ZXJpemVkIFRlc3RzICMjCisKK1RvIHdyaXRlIHZh
bHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4dHVy
ZQorY2xhc3MuICBJdCBtdXN0IGJlIGRlcml2ZWQgZnJvbSBib3RoIGA6OnRlc3Rpbmc6OlRlc3Rg
IGFuZAorYDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPFQ+YCAodGhlIGxhdHRlciBpcyBh
IHB1cmUgaW50ZXJmYWNlKSwKK3doZXJlIGBUYCBpcyB0aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRl
ciB2YWx1ZXMuICBGb3IgY29udmVuaWVuY2UsIHlvdQorY2FuIGp1c3QgZGVyaXZlIHRoZSBmaXh0
dXJlIGNsYXNzIGZyb20gYDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxUPmAsCit3aGljaCBpdHNl
bGYgaXMgZGVyaXZlZCBmcm9tIGJvdGggYDo6dGVzdGluZzo6VGVzdGAgYW5kCitgOjp0ZXN0aW5n
OjpXaXRoUGFyYW1JbnRlcmZhY2U8VD5gLiBgVGAgY2FuIGJlIGFueSBjb3B5YWJsZSB0eXBlLiBJ
ZgoraXQncyBhIHJhdyBwb2ludGVyLCB5b3UgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0
aGUgbGlmZXNwYW4gb2YKK3RoZSBwb2ludGVkIHZhbHVlcy4KKworYGBgCitjbGFzcyBGb29UZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBjaGFyKj4geworICAvLyBZ
b3UgY2FuIGltcGxlbWVudCBhbGwgdGhlIHVzdWFsIGZpeHR1cmUgY2xhc3MgbWVtYmVycyBoZXJl
LgorICAvLyBUbyBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyLCBjYWxsIEdldFBhcmFtKCkgZnJv
bSBjbGFzcworICAvLyBUZXN0V2l0aFBhcmFtPFQ+LgorfTsKKworLy8gT3IsIHdoZW4geW91IHdh
bnQgdG8gYWRkIHBhcmFtZXRlcnMgdG8gYSBwcmUtZXhpc3RpbmcgZml4dHVyZSBjbGFzczoKK2Ns
YXNzIEJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgIC4uLgorfTsKK2NsYXNz
IEJhclRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsCisgICAgICAgICAgICAgICAgcHVibGljIDo6dGVz
dGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPGNvbnN0IGNoYXIqPiB7CisgIC4uLgorfTsKK2BgYAor
CitUaGVuLCB1c2UgdGhlIGBURVNUX1BgIG1hY3JvIHRvIGRlZmluZSBhcyBtYW55IHRlc3QgcGF0
dGVybnMgdXNpbmcKK3RoaXMgZml4dHVyZSBhcyB5b3Ugd2FudC4gIFRoZSBgX1BgIHN1ZmZpeCBp
cyBmb3IgInBhcmFtZXRlcml6ZWQiIG9yCisicGF0dGVybiIsIHdoaWNoZXZlciB5b3UgcHJlZmVy
IHRvIHRoaW5rLgorCitgYGAKK1RFU1RfUChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJbnNp
ZGUgYSB0ZXN0LCBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyIHdpdGggdGhlIEdldFBhcmFtKCkg
bWV0aG9kCisgIC8vIG9mIHRoZSBUZXN0V2l0aFBhcmFtPFQ+IGNsYXNzOgorICBFWFBFQ1RfVFJV
RShmb28uQmxhaChHZXRQYXJhbSgpKSk7CisgIC4uLgorfQorCitURVNUX1AoRm9vVGVzdCwgSGFz
QmxhaEJsYWgpIHsKKyAgLi4uCit9CitgYGAKKworRmluYWxseSwgeW91IGNhbiB1c2UgYElOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QYCB0byBpbnN0YW50aWF0ZSB0aGUgdGVzdAorY2FzZSB3aXRoIGFu
eSBzZXQgb2YgcGFyYW1ldGVycyB5b3Ugd2FudC4gR29vZ2xlIFRlc3QgZGVmaW5lcyBhIG51bWJl
ciBvZgorZnVuY3Rpb25zIGZvciBnZW5lcmF0aW5nIHRlc3QgcGFyYW1ldGVycy4gVGhleSByZXR1
cm4gd2hhdCB3ZSBjYWxsCisoc3VycHJpc2UhKSBfcGFyYW1ldGVyIGdlbmVyYXRvcnNfLiBIZXJl
IGlzIGEgc3VtbWFyeSBvZiB0aGVtLAord2hpY2ggYXJlIGFsbCBpbiB0aGUgYHRlc3RpbmdgIG5h
bWVzcGFjZToKKworfCBgUmFuZ2UoYmVnaW4sIGVuZFssIHN0ZXBdKWAgfCBZaWVsZHMgdmFsdWVz
IGB7YmVnaW4sIGJlZ2luK3N0ZXAsIGJlZ2luK3N0ZXArc3RlcCwgLi4ufWAuIFRoZSB2YWx1ZXMg
ZG8gbm90IGluY2x1ZGUgYGVuZGAuIGBzdGVwYCBkZWZhdWx0cyB0byAxLiB8Cit8Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYFZhbHVlcyh2MSwgdjIsIC4uLiwgdk4pYCAgIHwg
WWllbGRzIHZhbHVlcyBge3YxLCB2MiwgLi4uLCB2Tn1gLiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorfCBgVmFsdWVzSW4oY29udGFpbmVyKWAgYW5kIGBWYWx1ZXNJbihiZWdpbiwgZW5kKWAgfCBZ
aWVsZHMgdmFsdWVzIGZyb20gYSBDLXN0eWxlIGFycmF5LCBhbiBTVEwtc3R5bGUgY29udGFpbmVy
LCBvciBhbiBpdGVyYXRvciByYW5nZSBgW2JlZ2luLCBlbmQpYC4gYGNvbnRhaW5lcmAsIGBiZWdp
bmAsIGFuZCBgZW5kYCBjYW4gYmUgZXhwcmVzc2lvbnMgd2hvc2UgdmFsdWVzIGFyZSBkZXRlcm1p
bmVkIGF0IHJ1biB0aW1lLiAgfAorfCBgQm9vbCgpYCAgICAgICAgICAgICAgICAgICAgfCBZaWVs
ZHMgc2VxdWVuY2UgYHtmYWxzZSwgdHJ1ZX1gLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8
IGBDb21iaW5lKGcxLCBnMiwgLi4uLCBnTilgICB8IFlpZWxkcyBhbGwgY29tYmluYXRpb25zICh0
aGUgQ2FydGVzaWFuIHByb2R1Y3QgZm9yIHRoZSBtYXRoIHNhdnZ5KSBvZiB0aGUgdmFsdWVzIGdl
bmVyYXRlZCBieSB0aGUgYE5gIGdlbmVyYXRvcnMuIFRoaXMgaXMgb25seSBhdmFpbGFibGUgaWYg
eW91ciBzeXN0ZW0gcHJvdmlkZXMgdGhlIGA8dHIxL3R1cGxlPmAgaGVhZGVyLiBJZiB5b3UgYXJl
IHN1cmUgeW91ciBzeXN0ZW0gZG9lcywgYW5kIEdvb2dsZSBUZXN0IGRpc2FncmVlcywgeW91IGNh
biBvdmVycmlkZSBpdCBieSBkZWZpbmluZyBgR1RFU1RfSEFTX1RSMV9UVVBMRT0xYC4gU2VlIGNv
bW1lbnRzIGluIFtpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaF0oLi4vaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgpIGZvciBtb3JlIGluZm9ybWF0aW9uLiB8CisK
K0ZvciBtb3JlIGRldGFpbHMsIHNlZSB0aGUgY29tbWVudHMgYXQgdGhlIGRlZmluaXRpb25zIG9m
IHRoZXNlIGZ1bmN0aW9ucyBpbiB0aGUgW3NvdXJjZSBjb2RlXSguLi9pbmNsdWRlL2d0ZXN0L2d0
ZXN0LXBhcmFtLXRlc3QuaCkuCisKK1RoZSBmb2xsb3dpbmcgc3RhdGVtZW50IHdpbGwgaW5zdGFu
dGlhdGUgdGVzdHMgZnJvbSB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZQorZWFjaCB3aXRoIHBhcmFt
ZXRlciB2YWx1ZXMgYCJtZWVueSJgLCBgIm1pbnkiYCwgYW5kIGAibW9lImAuCisKK2BgYAorSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoSW5zdGFudGlhdGlvbk5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICBGb29UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1
ZXMoIm1lZW55IiwgIm1pbnkiLCAibW9lIikpOworYGBgCisKK1RvIGRpc3Rpbmd1aXNoIGRpZmZl
cmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4gKHllcywgeW91IGNhbgoraW5zdGFudGlhdGUg
aXQgbW9yZSB0aGFuIG9uY2UpLCB0aGUgZmlyc3QgYXJndW1lbnQgdG8KK2BJTlNUQU5USUFURV9U
RVNUX0NBU0VfUGAgaXMgYSBwcmVmaXggdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBhY3R1YWwK
K3Rlc3QgY2FzZSBuYW1lLiBSZW1lbWJlciB0byBwaWNrIHVuaXF1ZSBwcmVmaXhlcyBmb3IgZGlm
ZmVyZW50CitpbnN0YW50aWF0aW9ucy4gVGhlIHRlc3RzIGZyb20gdGhlIGluc3RhbnRpYXRpb24g
YWJvdmUgd2lsbCBoYXZlIHRoZXNlCituYW1lczoKKworICAqIGBJbnN0YW50aWF0aW9uTmFtZS9G
b29UZXN0LkRvZXNCbGFoLzBgIGZvciBgIm1lZW55ImAKKyAgKiBgSW5zdGFudGlhdGlvbk5hbWUv
Rm9vVGVzdC5Eb2VzQmxhaC8xYCBmb3IgYCJtaW55ImAKKyAgKiBgSW5zdGFudGlhdGlvbk5hbWUv
Rm9vVGVzdC5Eb2VzQmxhaC8yYCBmb3IgYCJtb2UiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9G
b29UZXN0Lkhhc0JsYWhCbGFoLzBgIGZvciBgIm1lZW55ImAKKyAgKiBgSW5zdGFudGlhdGlvbk5h
bWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8xYCBmb3IgYCJtaW55ImAKKyAgKiBgSW5zdGFudGlhdGlv
bk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8yYCBmb3IgYCJtb2UiYAorCitZb3UgY2FuIHVzZSB0
aGVzZSBuYW1lcyBpbiBbLS1ndGVzdFxfZmlsdGVyXSgjcnVubmluZy1hLXN1YnNldC1vZi10aGUt
dGVzdHMpLgorCitUaGlzIHN0YXRlbWVudCB3aWxsIGluc3RhbnRpYXRlIGFsbCB0ZXN0cyBmcm9t
IGBGb29UZXN0YCBhZ2FpbiwgZWFjaAord2l0aCBwYXJhbWV0ZXIgdmFsdWVzIGAiY2F0ImAgYW5k
IGAiZG9nImA6CisKK2BgYAorY29uc3QgY2hhciogcGV0c1tdID0geyJjYXQiLCAiZG9nIn07CitJ
TlNUQU5USUFURV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFudGlhdGlvbk5hbWUsIEZvb1Rlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlc0luKHBldHMpKTsKK2Bg
YAorCitUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhhdmUgdGhl
c2UgbmFtZXM6CisKKyAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0Js
YWgvMGAgZm9yIGAiY2F0ImAKKyAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3Qu
RG9lc0JsYWgvMWAgZm9yIGAiZG9nImAKKyAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zv
b1Rlc3QuSGFzQmxhaEJsYWgvMGAgZm9yIGAiY2F0ImAKKyAgKiBgQW5vdGhlckluc3RhbnRpYXRp
b25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMWAgZm9yIGAiZG9nImAKKworUGxlYXNlIG5vdGUg
dGhhdCBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIHdpbGwgaW5zdGFudGlhdGUgX2FsbF8KK3Rl
c3RzIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UsIHdoZXRoZXIgdGhlaXIgZGVmaW5pdGlvbnMgY29t
ZSBiZWZvcmUgb3IKK19hZnRlcl8gdGhlIGBJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgc3RhdGVt
ZW50LgorCitZb3UgY2FuIHNlZQorW3RoZXNlXSguLi9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3Qu
Y2MpCitbZmlsZXNdKC4uL3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYykgZm9yIG1vcmUgZXhh
bXBsZXMuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4
LjAgb3IgYWJvdmUpLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4yLjAuCisKKyMjIENyZWF0aW5nIFZh
bHVlLVBhcmFtZXRlcml6ZWQgQWJzdHJhY3QgVGVzdHMgIyMKKworSW4gdGhlIGFib3ZlLCB3ZSBk
ZWZpbmUgYW5kIGluc3RhbnRpYXRlIGBGb29UZXN0YCBpbiB0aGUgc2FtZSBzb3VyY2UKK2ZpbGUu
IFNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gZGVmaW5lIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dHMgaW4gYQorbGlicmFyeSBhbmQgbGV0IG90aGVyIHBlb3BsZSBpbnN0YW50aWF0ZSB0aGVtIGxh
dGVyLiBUaGlzIHBhdHRlcm4gaXMKK2tub3duIGFzIDxpPmFic3RyYWN0IHRlc3RzPC9pPi4gQXMg
YW4gZXhhbXBsZSBvZiBpdHMgYXBwbGljYXRpb24sIHdoZW4geW91CithcmUgZGVzaWduaW5nIGFu
IGludGVyZmFjZSB5b3UgY2FuIHdyaXRlIGEgc3RhbmRhcmQgc3VpdGUgb2YgYWJzdHJhY3QKK3Rl
c3RzIChwZXJoYXBzIHVzaW5nIGEgZmFjdG9yeSBmdW5jdGlvbiBhcyB0aGUgdGVzdCBwYXJhbWV0
ZXIpIHRoYXQKK2FsbCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGludGVyZmFjZSBhcmUgZXhwZWN0
ZWQgdG8gcGFzcy4gV2hlbgorc29tZW9uZSBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UsIGhlIGNh
biBpbnN0YW50aWF0ZSB5b3VyIHN1aXRlIHRvIGdldAorYWxsIHRoZSBpbnRlcmZhY2UtY29uZm9y
bWFuY2UgdGVzdHMgZm9yIGZyZWUuCisKK1RvIGRlZmluZSBhYnN0cmFjdCB0ZXN0cywgeW91IHNo
b3VsZCBvcmdhbml6ZSB5b3VyIGNvZGUgbGlrZSB0aGlzOgorCisgIDEuIFB1dCB0aGUgZGVmaW5p
dGlvbiBvZiB0aGUgcGFyYW1ldGVyaXplZCB0ZXN0IGZpeHR1cmUgY2xhc3MgKGUuZy4gYEZvb1Rl
c3RgKSBpbiBhIGhlYWRlciBmaWxlLCBzYXkgYGZvb19wYXJhbV90ZXN0LmhgLiBUaGluayBvZiB0
aGlzIGFzIF9kZWNsYXJpbmdfIHlvdXIgYWJzdHJhY3QgdGVzdHMuCisgIDEuIFB1dCB0aGUgYFRF
U1RfUGAgZGVmaW5pdGlvbnMgaW4gYGZvb19wYXJhbV90ZXN0LmNjYCwgd2hpY2ggaW5jbHVkZXMg
YGZvb19wYXJhbV90ZXN0LmhgLiBUaGluayBvZiB0aGlzIGFzIF9pbXBsZW1lbnRpbmdfIHlvdXIg
YWJzdHJhY3QgdGVzdHMuCisKK09uY2UgdGhleSBhcmUgZGVmaW5lZCwgeW91IGNhbiBpbnN0YW50
aWF0ZSB0aGVtIGJ5IGluY2x1ZGluZworYGZvb19wYXJhbV90ZXN0LmhgLCBpbnZva2luZyBgSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoKWAsIGFuZCBsaW5raW5nCit3aXRoIGBmb29fcGFyYW1fdGVz
dC5jY2AuIFlvdSBjYW4gaW5zdGFudGlhdGUgdGhlIHNhbWUgYWJzdHJhY3QgdGVzdAorY2FzZSBt
dWx0aXBsZSB0aW1lcywgcG9zc2libHkgaW4gZGlmZmVyZW50IHNvdXJjZSBmaWxlcy4KKworIyBU
eXBlZCBUZXN0cyAjCisKK1N1cHBvc2UgeW91IGhhdmUgbXVsdGlwbGUgaW1wbGVtZW50YXRpb25z
IG9mIHRoZSBzYW1lIGludGVyZmFjZSBhbmQKK3dhbnQgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIG9m
IHRoZW0gc2F0aXNmeSBzb21lIGNvbW1vbiByZXF1aXJlbWVudHMuCitPciwgeW91IG1heSBoYXZl
IGRlZmluZWQgc2V2ZXJhbCB0eXBlcyB0aGF0IGFyZSBzdXBwb3NlZCB0byBjb25mb3JtIHRvCit0
aGUgc2FtZSAiY29uY2VwdCIgYW5kIHlvdSB3YW50IHRvIHZlcmlmeSBpdC4gIEluIGJvdGggY2Fz
ZXMsIHlvdSB3YW50Cit0aGUgc2FtZSB0ZXN0IGxvZ2ljIHJlcGVhdGVkIGZvciBkaWZmZXJlbnQg
dHlwZXMuCisKK1doaWxlIHlvdSBjYW4gd3JpdGUgb25lIGBURVNUYCBvciBgVEVTVF9GYCBmb3Ig
ZWFjaCB0eXBlIHlvdSB3YW50IHRvCit0ZXN0IChhbmQgeW91IG1heSBldmVuIGZhY3RvciB0aGUg
dGVzdCBsb2dpYyBpbnRvIGEgZnVuY3Rpb24gdGVtcGxhdGUKK3RoYXQgeW91IGludm9rZSBmcm9t
IHRoZSBgVEVTVGApLCBpdCdzIHRlZGlvdXMgYW5kIGRvZXNuJ3Qgc2NhbGU6CitpZiB5b3Ugd2Fu
dCBfbV8gdGVzdHMgb3ZlciBfbl8gdHlwZXMsIHlvdSdsbCBlbmQgdXAgd3JpdGluZyBfbVwqbl8K
K2BURVNUYHMuCisKK19UeXBlZCB0ZXN0c18gYWxsb3cgeW91IHRvIHJlcGVhdCB0aGUgc2FtZSB0
ZXN0IGxvZ2ljIG92ZXIgYSBsaXN0IG9mCit0eXBlcy4gIFlvdSBvbmx5IG5lZWQgdG8gd3JpdGUg
dGhlIHRlc3QgbG9naWMgb25jZSwgYWx0aG91Z2ggeW91IG11c3QKK2tub3cgdGhlIHR5cGUgbGlz
dCB3aGVuIHdyaXRpbmcgdHlwZWQgdGVzdHMuICBIZXJlJ3MgaG93IHlvdSBkbyBpdDoKKworRmly
c3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUuICBJdCBzaG91bGQgYmUgcGFyYW1l
dGVyaXplZAorYnkgYSB0eXBlLiAgUmVtZW1iZXIgdG8gZGVyaXZlIGl0IGZyb20gYDo6dGVzdGlu
Zzo6VGVzdGA6CisKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBGb29UZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHVibGljOgorICAuLi4KKyAgdHlwZWRlZiBzdGQ6
Omxpc3Q8VD4gTGlzdDsKKyAgc3RhdGljIFQgc2hhcmVkXzsKKyAgVCB2YWx1ZV87Cit9OworYGBg
CisKK05leHQsIGFzc29jaWF0ZSBhIGxpc3Qgb2YgdHlwZXMgd2l0aCB0aGUgdGVzdCBjYXNlLCB3
aGljaCB3aWxsIGJlCityZXBlYXRlZCBmb3IgZWFjaCB0eXBlIGluIHRoZSBsaXN0OgorCitgYGAK
K3R5cGVkZWYgOjp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQsIHVuc2lnbmVkIGludD4gTXlUeXBl
czsKK1RZUEVEX1RFU1RfQ0FTRShGb29UZXN0LCBNeVR5cGVzKTsKK2BgYAorCitUaGUgYHR5cGVk
ZWZgIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIGBUWVBFRF9URVNUX0NBU0VgIG1hY3JvIHRvIHBhcnNl
Citjb3JyZWN0bHkuICBPdGhlcndpc2UgdGhlIGNvbXBpbGVyIHdpbGwgdGhpbmsgdGhhdCBlYWNo
IGNvbW1hIGluIHRoZQordHlwZSBsaXN0IGludHJvZHVjZXMgYSBuZXcgbWFjcm8gYXJndW1lbnQu
CisKK1RoZW4sIHVzZSBgVFlQRURfVEVTVCgpYCBpbnN0ZWFkIG9mIGBURVNUX0YoKWAgdG8gZGVm
aW5lIGEgdHlwZWQgdGVzdAorZm9yIHRoaXMgdGVzdCBjYXNlLiAgWW91IGNhbiByZXBlYXQgdGhp
cyBhcyBtYW55IHRpbWVzIGFzIHlvdSB3YW50OgorCitgYGAKK1RZUEVEX1RFU1QoRm9vVGVzdCwg
RG9lc0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIgdG8gdGhlIHNwZWNpYWwgbmFt
ZSBUeXBlUGFyYW0gdG8gZ2V0IHRoZSB0eXBlCisgIC8vIHBhcmFtZXRlci4gIFNpbmNlIHdlIGFy
ZSBpbnNpZGUgYSBkZXJpdmVkIGNsYXNzIHRlbXBsYXRlLCBDKysgcmVxdWlyZXMKKyAgLy8gdXMg
dG8gdmlzaXQgdGhlIG1lbWJlcnMgb2YgRm9vVGVzdCB2aWEgJ3RoaXMnLgorICBUeXBlUGFyYW0g
biA9IHRoaXMtPnZhbHVlXzsKKworICAvLyBUbyB2aXNpdCBzdGF0aWMgbWVtYmVycyBvZiB0aGUg
Zml4dHVyZSwgYWRkIHRoZSAnVGVzdEZpeHR1cmU6OicKKyAgLy8gcHJlZml4LgorICBuICs9IFRl
c3RGaXh0dXJlOjpzaGFyZWRfOworCisgIC8vIFRvIHJlZmVyIHRvIHR5cGVkZWZzIGluIHRoZSBm
aXh0dXJlLCBhZGQgdGhlICd0eXBlbmFtZSBUZXN0Rml4dHVyZTo6JworICAvLyBwcmVmaXguICBU
aGUgJ3R5cGVuYW1lJyBpcyByZXF1aXJlZCB0byBzYXRpc2Z5IHRoZSBjb21waWxlci4KKyAgdHlw
ZW5hbWUgVGVzdEZpeHR1cmU6Okxpc3QgdmFsdWVzOworICB2YWx1ZXMucHVzaF9iYWNrKG4pOwor
ICAuLi4KK30KKworVFlQRURfVEVTVChGb29UZXN0LCBIYXNQcm9wZXJ0eUEpIHsgLi4uIH0KK2Bg
YAorCitZb3UgY2FuIHNlZSBgc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjYCBmb3IgYSBjb21w
bGV0ZSBleGFtcGxlLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVz
IE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFjOworc2luY2UgdmVyc2lvbiAxLjEuMC4KKworIyBUeXBl
LVBhcmFtZXRlcml6ZWQgVGVzdHMgIworCitfVHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzXyBhcmUg
bGlrZSB0eXBlZCB0ZXN0cywgZXhjZXB0IHRoYXQgdGhleQorZG9uJ3QgcmVxdWlyZSB5b3UgdG8g
a25vdyB0aGUgbGlzdCBvZiB0eXBlcyBhaGVhZCBvZiB0aW1lLiAgSW5zdGVhZCwKK3lvdSBjYW4g
ZGVmaW5lIHRoZSB0ZXN0IGxvZ2ljIGZpcnN0IGFuZCBpbnN0YW50aWF0ZSBpdCB3aXRoIGRpZmZl
cmVudAordHlwZSBsaXN0cyBsYXRlci4gIFlvdSBjYW4gZXZlbiBpbnN0YW50aWF0ZSBpdCBtb3Jl
IHRoYW4gb25jZSBpbiB0aGUKK3NhbWUgcHJvZ3JhbS4KKworSWYgeW91IGFyZSBkZXNpZ25pbmcg
YW4gaW50ZXJmYWNlIG9yIGNvbmNlcHQsIHlvdSBjYW4gZGVmaW5lIGEgc3VpdGUKK29mIHR5cGUt
cGFyYW1ldGVyaXplZCB0ZXN0cyB0byB2ZXJpZnkgcHJvcGVydGllcyB0aGF0IGFueSB2YWxpZAor
aW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVyZmFjZS9jb25jZXB0IHNob3VsZCBoYXZlLiAgVGhl
biwgdGhlIGF1dGhvcgorb2YgZWFjaCBpbXBsZW1lbnRhdGlvbiBjYW4ganVzdCBpbnN0YW50aWF0
ZSB0aGUgdGVzdCBzdWl0ZSB3aXRoIGhpcwordHlwZSB0byB2ZXJpZnkgdGhhdCBpdCBjb25mb3Jt
cyB0byB0aGUgcmVxdWlyZW1lbnRzLCB3aXRob3V0IGhhdmluZyB0bword3JpdGUgc2ltaWxhciB0
ZXN0cyByZXBlYXRlZGx5LiAgSGVyZSdzIGFuIGV4YW1wbGU6CisKK0ZpcnN0LCBkZWZpbmUgYSBm
aXh0dXJlIGNsYXNzIHRlbXBsYXRlLCBhcyB3ZSBkaWQgd2l0aCB0eXBlZCB0ZXN0czoKKworYGBg
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0IHsKKyAgLi4uCit9OworYGBgCisKK05leHQsIGRlY2xhcmUgdGhhdCB5b3Ugd2lsbCBk
ZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlOgorCitgYGAKK1RZUEVEX1RFU1Rf
Q0FTRV9QKEZvb1Rlc3QpOworYGBgCisKK1RoZSBgX1BgIHN1ZmZpeCBpcyBmb3IgInBhcmFtZXRl
cml6ZWQiIG9yICJwYXR0ZXJuIiwgd2hpY2hldmVyIHlvdQorcHJlZmVyIHRvIHRoaW5rLgorCitU
aGVuLCB1c2UgYFRZUEVEX1RFU1RfUCgpYCB0byBkZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQg
dGVzdC4gIFlvdQorY2FuIHJlcGVhdCB0aGlzIGFzIG1hbnkgdGltZXMgYXMgeW91IHdhbnQ6CisK
K2BgYAorVFlQRURfVEVTVF9QKEZvb1Rlc3QsIERvZXNCbGFoKSB7CisgIC8vIEluc2lkZSBhIHRl
c3QsIHJlZmVyIHRvIFR5cGVQYXJhbSB0byBnZXQgdGhlIHR5cGUgcGFyYW1ldGVyLgorICBUeXBl
UGFyYW0gbiA9IDA7CisgIC4uLgorfQorCitUWVBFRF9URVNUX1AoRm9vVGVzdCwgSGFzUHJvcGVy
dHlBKSB7IC4uLiB9CitgYGAKKworTm93IHRoZSB0cmlja3kgcGFydDogeW91IG5lZWQgdG8gcmVn
aXN0ZXIgYWxsIHRlc3QgcGF0dGVybnMgdXNpbmcgdGhlCitgUkVHSVNURVJfVFlQRURfVEVTVF9D
QVNFX1BgIG1hY3JvIGJlZm9yZSB5b3UgY2FuIGluc3RhbnRpYXRlIHRoZW0uCitUaGUgZmlyc3Qg
YXJndW1lbnQgb2YgdGhlIG1hY3JvIGlzIHRoZSB0ZXN0IGNhc2UgbmFtZTsgdGhlIHJlc3QgYXJl
Cit0aGUgbmFtZXMgb2YgdGhlIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlOgorCitgYGAKK1JFR0lT
VEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEb2VzQmxhaCwgSGFzUHJvcGVydHlBKTsKK2BgYAorCitGaW5hbGx5LCB5b3UgYXJlIGZyZWUg
dG8gaW5zdGFudGlhdGUgdGhlIHBhdHRlcm4gd2l0aCB0aGUgdHlwZXMgeW91Cit3YW50LiAgSWYg
eW91IHB1dCB0aGUgYWJvdmUgY29kZSBpbiBhIGhlYWRlciBmaWxlLCB5b3UgY2FuIGAjaW5jbHVk
ZWAKK2l0IGluIG11bHRpcGxlIEMrKyBzb3VyY2UgZmlsZXMgYW5kIGluc3RhbnRpYXRlIGl0IG11
bHRpcGxlIHRpbWVzLgorCitgYGAKK3R5cGVkZWYgOjp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQs
IHVuc2lnbmVkIGludD4gTXlUeXBlczsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15
LCBGb29UZXN0LCBNeVR5cGVzKTsKK2BgYAorCitUbyBkaXN0aW5ndWlzaCBkaWZmZXJlbnQgaW5z
dGFuY2VzIG9mIHRoZSBwYXR0ZXJuLCB0aGUgZmlyc3QgYXJndW1lbnQKK3RvIHRoZSBgSU5TVEFO
VElBVEVfVFlQRURfVEVTVF9DQVNFX1BgIG1hY3JvIGlzIGEgcHJlZml4IHRoYXQgd2lsbCBiZQor
YWRkZWQgdG8gdGhlIGFjdHVhbCB0ZXN0IGNhc2UgbmFtZS4gIFJlbWVtYmVyIHRvIHBpY2sgdW5p
cXVlIHByZWZpeGVzCitmb3IgZGlmZmVyZW50IGluc3RhbmNlcy4KKworSW4gdGhlIHNwZWNpYWwg
Y2FzZSB3aGVyZSB0aGUgdHlwZSBsaXN0IGNvbnRhaW5zIG9ubHkgb25lIHR5cGUsIHlvdQorY2Fu
IHdyaXRlIHRoYXQgdHlwZSBkaXJlY3RseSB3aXRob3V0IGA6OnRlc3Rpbmc6OlR5cGVzPC4uLj5g
LCBsaWtlIHRoaXM6CisKK2BgYAorSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZv
b1Rlc3QsIGludCk7CitgYGAKKworWW91IGNhbiBzZWUgYHNhbXBsZXMvc2FtcGxlNl91bml0dGVz
dC5jY2AgZm9yIGEgY29tcGxldGUgZXhhbXBsZS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBX
aW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYzsKK3NpbmNlIHZlcnNpb24g
MS4xLjAuCisKKyMgVGVzdGluZyBQcml2YXRlIENvZGUgIworCitJZiB5b3UgY2hhbmdlIHlvdXIg
c29mdHdhcmUncyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiwgeW91ciB0ZXN0cyBzaG91bGQgbm90
CiticmVhayBhcyBsb25nIGFzIHRoZSBjaGFuZ2UgaXMgbm90IG9ic2VydmFibGUgYnkgdXNlcnMu
IFRoZXJlZm9yZSwgcGVyIHRoZQorX2JsYWNrLWJveCB0ZXN0aW5nIHByaW5jaXBsZV8sIG1vc3Qg
b2YgdGhlIHRpbWUgeW91IHNob3VsZCB0ZXN0IHlvdXIgY29kZQordGhyb3VnaCBpdHMgcHVibGlj
IGludGVyZmFjZXMuCisKK0lmIHlvdSBzdGlsbCBmaW5kIHlvdXJzZWxmIG5lZWRpbmcgdG8gdGVz
dCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBjb2RlLAorY29uc2lkZXIgaWYgdGhlcmUncyBhIGJl
dHRlciBkZXNpZ24gdGhhdCB3b3VsZG4ndCByZXF1aXJlIHlvdSB0byBkbyBzby4gSWYgeW91Cith
YnNvbHV0ZWx5IGhhdmUgdG8gdGVzdCBub24tcHVibGljIGludGVyZmFjZSBjb2RlIHRob3VnaCwg
eW91IGNhbi4gVGhlcmUgYXJlCit0d28gY2FzZXMgdG8gY29uc2lkZXI6CisKKyAgKiBTdGF0aWMg
ZnVuY3Rpb25zIChfbm90XyB0aGUgc2FtZSBhcyBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucyEpIG9y
IHVubmFtZWQgbmFtZXNwYWNlcywgYW5kCisgICogUHJpdmF0ZSBvciBwcm90ZWN0ZWQgY2xhc3Mg
bWVtYmVycworCisjIyBTdGF0aWMgRnVuY3Rpb25zICMjCisKK0JvdGggc3RhdGljIGZ1bmN0aW9u
cyBhbmQgZGVmaW5pdGlvbnMvZGVjbGFyYXRpb25zIGluIGFuIHVubmFtZWQgbmFtZXNwYWNlIGFy
ZQorb25seSB2aXNpYmxlIHdpdGhpbiB0aGUgc2FtZSB0cmFuc2xhdGlvbiB1bml0LiBUbyB0ZXN0
IHRoZW0sIHlvdSBjYW4gYCNpbmNsdWRlYAordGhlIGVudGlyZSBgLmNjYCBmaWxlIGJlaW5nIHRl
c3RlZCBpbiB5b3VyIGAqX3Rlc3QuY2NgIGZpbGUuIChgI2luY2x1ZGVgaW5nIGAuY2NgCitmaWxl
cyBpcyBub3QgYSBnb29kIHdheSB0byByZXVzZSBjb2RlIC0geW91IHNob3VsZCBub3QgZG8gdGhp
cyBpbiBwcm9kdWN0aW9uCitjb2RlISkKKworSG93ZXZlciwgYSBiZXR0ZXIgYXBwcm9hY2ggaXMg
dG8gbW92ZSB0aGUgcHJpdmF0ZSBjb2RlIGludG8gdGhlCitgZm9vOjppbnRlcm5hbGAgbmFtZXNw
YWNlLCB3aGVyZSBgZm9vYCBpcyB0aGUgbmFtZXNwYWNlIHlvdXIgcHJvamVjdCBub3JtYWxseQor
dXNlcywgYW5kIHB1dCB0aGUgcHJpdmF0ZSBkZWNsYXJhdGlvbnMgaW4gYSBgKi1pbnRlcm5hbC5o
YCBmaWxlLiBZb3VyCitwcm9kdWN0aW9uIGAuY2NgIGZpbGVzIGFuZCB5b3VyIHRlc3RzIGFyZSBh
bGxvd2VkIHRvIGluY2x1ZGUgdGhpcyBpbnRlcm5hbAoraGVhZGVyLCBidXQgeW91ciBjbGllbnRz
IGFyZSBub3QuIFRoaXMgd2F5LCB5b3UgY2FuIGZ1bGx5IHRlc3QgeW91ciBpbnRlcm5hbAoraW1w
bGVtZW50YXRpb24gd2l0aG91dCBsZWFraW5nIGl0IHRvIHlvdXIgY2xpZW50cy4KKworIyMgUHJp
dmF0ZSBDbGFzcyBNZW1iZXJzICMjCisKK1ByaXZhdGUgY2xhc3MgbWVtYmVycyBhcmUgb25seSBh
Y2Nlc3NpYmxlIGZyb20gd2l0aGluIHRoZSBjbGFzcyBvciBieSBmcmllbmRzLgorVG8gYWNjZXNz
IGEgY2xhc3MnIHByaXZhdGUgbWVtYmVycywgeW91IGNhbiBkZWNsYXJlIHlvdXIgdGVzdCBmaXh0
dXJlIGFzIGEKK2ZyaWVuZCB0byB0aGUgY2xhc3MgYW5kIGRlZmluZSBhY2Nlc3NvcnMgaW4geW91
ciBmaXh0dXJlLiBUZXN0cyB1c2luZyB0aGUKK2ZpeHR1cmUgY2FuIHRoZW4gYWNjZXNzIHRoZSBw
cml2YXRlIG1lbWJlcnMgb2YgeW91ciBwcm9kdWN0aW9uIGNsYXNzIHZpYSB0aGUKK2FjY2Vzc29y
cyBpbiB0aGUgZml4dHVyZS4gTm90ZSB0aGF0IGV2ZW4gdGhvdWdoIHlvdXIgZml4dHVyZSBpcyBh
IGZyaWVuZCB0bworeW91ciBwcm9kdWN0aW9uIGNsYXNzLCB5b3VyIHRlc3RzIGFyZSBub3QgYXV0
b21hdGljYWxseSBmcmllbmRzIHRvIGl0LCBhcyB0aGV5CithcmUgdGVjaG5pY2FsbHkgZGVmaW5l
ZCBpbiBzdWItY2xhc3NlcyBvZiB0aGUgZml4dHVyZS4KKworQW5vdGhlciB3YXkgdG8gdGVzdCBw
cml2YXRlIG1lbWJlcnMgaXMgdG8gcmVmYWN0b3IgdGhlbSBpbnRvIGFuIGltcGxlbWVudGF0aW9u
CitjbGFzcywgd2hpY2ggaXMgdGhlbiBkZWNsYXJlZCBpbiBhIGAqLWludGVybmFsLmhgIGZpbGUu
IFlvdXIgY2xpZW50cyBhcmVuJ3QKK2FsbG93ZWQgdG8gaW5jbHVkZSB0aGlzIGhlYWRlciBidXQg
eW91ciB0ZXN0cyBjYW4uIFN1Y2ggaXMgY2FsbGVkIHRoZSBQaW1wbAorKFByaXZhdGUgSW1wbGVt
ZW50YXRpb24pIGlkaW9tLgorCitPciwgeW91IGNhbiBkZWNsYXJlIGFuIGluZGl2aWR1YWwgdGVz
dCBhcyBhIGZyaWVuZCBvZiB5b3VyIGNsYXNzIGJ5IGFkZGluZyB0aGlzCitsaW5lIGluIHRoZSBj
bGFzcyBib2R5OgorCitgYGAKK0ZSSUVORF9URVNUKFRlc3RDYXNlTmFtZSwgVGVzdE5hbWUpOwor
YGBgCisKK0ZvciBleGFtcGxlLAorYGBgCisvLyBmb28uaAorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
X3Byb2QuaCIKKworLy8gRGVmaW5lcyBGUklFTkRfVEVTVC4KK2NsYXNzIEZvbyB7CisgIC4uLgor
IHByaXZhdGU6CisgIEZSSUVORF9URVNUKEZvb1Rlc3QsIEJhclJldHVybnNaZXJvT25OdWxsKTsK
KyAgaW50IEJhcih2b2lkKiB4KTsKK307CisKKy8vIGZvb190ZXN0LmNjCisuLi4KK1RFU1QoRm9v
VGVzdCwgQmFyUmV0dXJuc1plcm9Pbk51bGwpIHsKKyAgRm9vIGZvbzsKKyAgRVhQRUNUX0VRKDAs
IGZvby5CYXIoTlVMTCkpOworICAvLyBVc2VzIEZvbydzIHByaXZhdGUgbWVtYmVyIEJhcigpLgor
fQorYGBgCisKK1BheSBzcGVjaWFsIGF0dGVudGlvbiB3aGVuIHlvdXIgY2xhc3MgaXMgZGVmaW5l
ZCBpbiBhIG5hbWVzcGFjZSwgYXMgeW91IHNob3VsZAorZGVmaW5lIHlvdXIgdGVzdCBmaXh0dXJl
cyBhbmQgdGVzdHMgaW4gdGhlIHNhbWUgbmFtZXNwYWNlIGlmIHlvdSB3YW50IHRoZW0gdG8KK2Jl
IGZyaWVuZHMgb2YgeW91ciBjbGFzcy4gRm9yIGV4YW1wbGUsIGlmIHRoZSBjb2RlIHRvIGJlIHRl
c3RlZCBsb29rcyBsaWtlOgorCitgYGAKK25hbWVzcGFjZSBteV9uYW1lc3BhY2UgeworCitjbGFz
cyBGb28geworICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKKyAgRlJJRU5EX1RFU1QoRm9vVGVzdCwg
QmFyKTsKKyAgRlJJRU5EX1RFU1QoRm9vVGVzdCwgQmF6KTsKKyAgLi4uCisgIGRlZmluaXRpb24g
b2YgdGhlIGNsYXNzIEZvbworICAuLi4KK307CisKK30gIC8vIG5hbWVzcGFjZSBteV9uYW1lc3Bh
Y2UKK2BgYAorCitZb3VyIHRlc3QgY29kZSBzaG91bGQgYmUgc29tZXRoaW5nIGxpa2U6CisKK2Bg
YAorbmFtZXNwYWNlIG15X25hbWVzcGFjZSB7CitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVz
dGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAuLi4KK307CisKK1RFU1RfRihGb29UZXN0LCBC
YXIpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBCYXopIHsgLi4uIH0KKworfSAgLy8gbmFtZXNw
YWNlIG15X25hbWVzcGFjZQorYGBgCisKKyMgQ2F0Y2hpbmcgRmFpbHVyZXMgIworCitJZiB5b3Ug
YXJlIGJ1aWxkaW5nIGEgdGVzdGluZyB1dGlsaXR5IG9uIHRvcCBvZiBHb29nbGUgVGVzdCwgeW91
J2xsCit3YW50IHRvIHRlc3QgeW91ciB1dGlsaXR5LiAgV2hhdCBmcmFtZXdvcmsgd291bGQgeW91
IHVzZSB0byB0ZXN0IGl0PworR29vZ2xlIFRlc3QsIG9mIGNvdXJzZS4KKworVGhlIGNoYWxsZW5n
ZSBpcyB0byB2ZXJpZnkgdGhhdCB5b3VyIHRlc3RpbmcgdXRpbGl0eSByZXBvcnRzIGZhaWx1cmVz
Citjb3JyZWN0bHkuICBJbiBmcmFtZXdvcmtzIHRoYXQgcmVwb3J0IGEgZmFpbHVyZSBieSB0aHJv
d2luZyBhbgorZXhjZXB0aW9uLCB5b3UgY291bGQgY2F0Y2ggdGhlIGV4Y2VwdGlvbiBhbmQgYXNz
ZXJ0IG9uIGl0LiAgQnV0IEdvb2dsZQorVGVzdCBkb2Vzbid0IHVzZSBleGNlcHRpb25zLCBzbyBo
b3cgZG8gd2UgdGVzdCB0aGF0IGEgcGllY2Ugb2YgY29kZQorZ2VuZXJhdGVzIGFuIGV4cGVjdGVk
IGZhaWx1cmU/CisKK2AiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiYCBjb250YWlucyBzb21lIGNvbnN0cnVj
dHMgdG8gZG8gdGhpcy4gIEFmdGVyCitgI2luY2x1ZGVgaW5nIHRoaXMgaGVhZGVyLCB5b3UgY2Fu
IHVzZQorCit8IGBFWFBFQ1RfRkFUQUxfRkFJTFVSRShgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2Ap
O2AgfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LXwKKwordG8gYXNzZXJ0IHRoYXQgX3N0YXRlbWVudF8gZ2VuZXJhdGVzIGEgZmF0YWwgKGUuZy4g
YEFTU0VSVF8qYCkgZmFpbHVyZQord2hvc2UgbWVzc2FnZSBjb250YWlucyB0aGUgZ2l2ZW4gX3N1
YnN0cmluZ18sIG9yIHVzZQorCit8IGBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShgX3N0YXRlbWVu
dCwgc3Vic3RyaW5nX2ApO2AgfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLXwKKworaWYgeW91IGFyZSBleHBlY3RpbmcgYSBub24tZmF0YWwg
KGUuZy4gYEVYUEVDVF8qYCkgZmFpbHVyZS4KKworRm9yIHRlY2huaWNhbCByZWFzb25zLCB0aGVy
ZSBhcmUgc29tZSBjYXZlYXRzOgorCisgIDEuIFlvdSBjYW5ub3Qgc3RyZWFtIGEgZmFpbHVyZSBt
ZXNzYWdlIHRvIGVpdGhlciBtYWNyby4KKyAgMS4gX3N0YXRlbWVudF8gaW4gYEVYUEVDVF9GQVRB
TF9GQUlMVVJFKClgIGNhbm5vdCByZWZlcmVuY2UgbG9jYWwgbm9uLXN0YXRpYyB2YXJpYWJsZXMg
b3Igbm9uLXN0YXRpYyBtZW1iZXJzIG9mIGB0aGlzYCBvYmplY3QuCisgIDEuIF9zdGF0ZW1lbnRf
IGluIGBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpYCBjYW5ub3QgcmV0dXJuIGEgdmFsdWUuCisKK19O
b3RlOl8gR29vZ2xlIFRlc3QgaXMgZGVzaWduZWQgd2l0aCB0aHJlYWRzIGluIG1pbmQuICBPbmNl
IHRoZQorc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYCJndGVzdC9pbnRlcm5hbC9ndGVz
dC1wb3J0LmgiYCBoYXZlCitiZWVuIGltcGxlbWVudGVkLCBHb29nbGUgVGVzdCB3aWxsIGJlY29t
ZSB0aHJlYWQtc2FmZSwgbWVhbmluZyB0aGF0Cit5b3UgY2FuIHRoZW4gdXNlIGFzc2VydGlvbnMg
aW4gbXVsdGlwbGUgdGhyZWFkcyBjb25jdXJyZW50bHkuICBCZWZvcmUKKwordGhhdCwgaG93ZXZl
ciwgR29vZ2xlIFRlc3Qgb25seSBzdXBwb3J0cyBzaW5nbGUtdGhyZWFkZWQgdXNhZ2UuICBPbmNl
Cit0aHJlYWQtc2FmZSwgYEVYUEVDVF9GQVRBTF9GQUlMVVJFKClgIGFuZCBgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoKWAKK3dpbGwgY2FwdHVyZSBmYWlsdXJlcyBpbiB0aGUgY3VycmVudCB0aHJl
YWQgb25seS4gSWYgX3N0YXRlbWVudF8KK2NyZWF0ZXMgbmV3IHRocmVhZHMsIGZhaWx1cmVzIGlu
IHRoZXNlIHRocmVhZHMgd2lsbCBiZSBpZ25vcmVkLiAgSWYKK3lvdSB3YW50IHRvIGNhcHR1cmUg
ZmFpbHVyZXMgZnJvbSBhbGwgdGhyZWFkcyBpbnN0ZWFkLCB5b3Ugc2hvdWxkIHVzZQordGhlIGZv
bGxvd2luZyBtYWNyb3M6CisKK3wgYEVYUEVDVF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURT
KGBfc3RhdGVtZW50LCBzdWJzdHJpbmdfYCk7YCB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoYF9zdGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtg
IHwKKworIyBHZXR0aW5nIHRoZSBDdXJyZW50IFRlc3QncyBOYW1lICMKKworU29tZXRpbWVzIGEg
ZnVuY3Rpb24gbWF5IG5lZWQgdG8ga25vdyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IHJ1bm5p
bmcgdGVzdC4KK0ZvciBleGFtcGxlLCB5b3UgbWF5IGJlIHVzaW5nIHRoZSBgU2V0VXAoKWAgbWV0
aG9kIG9mIHlvdXIgdGVzdCBmaXh0dXJlIHRvIHNldAordGhlIGdvbGRlbiBmaWxlIG5hbWUgYmFz
ZWQgb24gd2hpY2ggdGVzdCBpcyBydW5uaW5nLiBUaGUgYDo6dGVzdGluZzo6VGVzdEluZm9gCitj
bGFzcyBoYXMgdGhpcyBpbmZvcm1hdGlvbjoKKworYGBgCituYW1lc3BhY2UgdGVzdGluZyB7CisK
K2NsYXNzIFRlc3RJbmZvIHsKKyBwdWJsaWM6CisgIC8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBu
YW1lIGFuZCB0aGUgdGVzdCBuYW1lLCByZXNwZWN0aXZlbHkuCisgIC8vCisgIC8vIERvIE5PVCBk
ZWxldGUgb3IgZnJlZSB0aGUgcmV0dXJuIHZhbHVlIC0gaXQncyBtYW5hZ2VkIGJ5IHRoZQorICAv
LyBUZXN0SW5mbyBjbGFzcy4KKyAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUoKSBjb25zdDsK
KyAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0OworfTsKKworfSAgLy8gbmFtZXNwYWNlIHRlc3Rp
bmcKK2BgYAorCisKKz4gVG8gb2J0YWluIGEgYFRlc3RJbmZvYCBvYmplY3QgZm9yIHRoZSBjdXJy
ZW50bHkgcnVubmluZyB0ZXN0LCBjYWxsCitgY3VycmVudF90ZXN0X2luZm8oKWAgb24gdGhlIGBV
bml0VGVzdGAgc2luZ2xldG9uIG9iamVjdDoKKworYGBgCisvLyBHZXRzIGluZm9ybWF0aW9uIGFi
b3V0IHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LgorLy8gRG8gTk9UIGRlbGV0ZSB0aGUgcmV0
dXJuZWQgb2JqZWN0IC0gaXQncyBtYW5hZ2VkIGJ5IHRoZSBVbml0VGVzdCBjbGFzcy4KK2NvbnN0
IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgIDo6dGVzdGluZzo6VW5p
dFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CitwcmludGYoIldlIGFy
ZSBpbiB0ZXN0ICVzIG9mIHRlc3QgY2FzZSAlcy5cbiIsCisgICAgICAgdGVzdF9pbmZvLT5uYW1l
KCksIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7CitgYGAKKworYGN1cnJlbnRfdGVzdF9p
bmZvKClgIHJldHVybnMgYSBudWxsIHBvaW50ZXIgaWYgbm8gdGVzdCBpcyBydW5uaW5nLiBJbgor
cGFydGljdWxhciwgeW91IGNhbm5vdCBmaW5kIHRoZSB0ZXN0IGNhc2UgbmFtZSBpbiBgVGVzdENh
c2VTZXRVcCgpYCwKK2BUZXN0Q2FzZVRlYXJEb3duKClgICh3aGVyZSB5b3Uga25vdyB0aGUgdGVz
dCBjYXNlIG5hbWUgaW1wbGljaXRseSksIG9yCitmdW5jdGlvbnMgY2FsbGVkIGZyb20gdGhlbS4K
KworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMgRXh0ZW5kaW5nIEdv
b2dsZSBUZXN0IGJ5IEhhbmRsaW5nIFRlc3QgRXZlbnRzICMKKworR29vZ2xlIFRlc3QgcHJvdmlk
ZXMgYW4gPGI+ZXZlbnQgbGlzdGVuZXIgQVBJPC9iPiB0byBsZXQgeW91IHJlY2VpdmUKK25vdGlm
aWNhdGlvbnMgYWJvdXQgdGhlIHByb2dyZXNzIG9mIGEgdGVzdCBwcm9ncmFtIGFuZCB0ZXN0Citm
YWlsdXJlcy4gVGhlIGV2ZW50cyB5b3UgY2FuIGxpc3RlbiB0byBpbmNsdWRlIHRoZSBzdGFydCBh
bmQgZW5kIG9mCit0aGUgdGVzdCBwcm9ncmFtLCBhIHRlc3QgY2FzZSwgb3IgYSB0ZXN0IG1ldGhv
ZCwgYW1vbmcgb3RoZXJzLiBZb3UgbWF5Cit1c2UgdGhpcyBBUEkgdG8gYXVnbWVudCBvciByZXBs
YWNlIHRoZSBzdGFuZGFyZCBjb25zb2xlIG91dHB1dCwKK3JlcGxhY2UgdGhlIFhNTCBvdXRwdXQs
IG9yIHByb3ZpZGUgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBmb3JtIG9mCitvdXRwdXQsIHN1Y2gg
YXMgYSBHVUkgb3IgYSBkYXRhYmFzZS4gWW91IGNhbiBhbHNvIHVzZSB0ZXN0IGV2ZW50cyBhcwor
Y2hlY2twb2ludHMgdG8gaW1wbGVtZW50IGEgcmVzb3VyY2UgbGVhayBjaGVja2VyLCBmb3IgZXhh
bXBsZS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHYxLjQu
MC4KKworIyMgRGVmaW5pbmcgRXZlbnQgTGlzdGVuZXJzICMjCisKK1RvIGRlZmluZSBhIGV2ZW50
IGxpc3RlbmVyLCB5b3Ugc3ViY2xhc3MgZWl0aGVyCitbdGVzdGluZzo6VGVzdEV2ZW50TGlzdGVu
ZXJdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMODU1KQorb3IgW3Rlc3Rpbmc6OkVtcHR5VGVz
dEV2ZW50TGlzdGVuZXJdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMOTA1KS4KK1RoZSBmb3Jt
ZXIgaXMgYW4gKGFic3RyYWN0KSBpbnRlcmZhY2UsIHdoZXJlIDxpPmVhY2ggcHVyZSB2aXJ0dWFs
IG1ldGhvZDxicj4KK2NhbiBiZSBvdmVycmlkZGVuIHRvIGhhbmRsZSBhIHRlc3QgZXZlbnQ8L2k+
IChGb3IgZXhhbXBsZSwgd2hlbiBhIHRlc3QKK3N0YXJ0cywgdGhlIGBPblRlc3RTdGFydCgpYCBt
ZXRob2Qgd2lsbCBiZSBjYWxsZWQuKS4gVGhlIGxhdHRlciBwcm92aWRlcworYW4gZW1wdHkgaW1w
bGVtZW50YXRpb24gb2YgYWxsIG1ldGhvZHMgaW4gdGhlIGludGVyZmFjZSwgc3VjaCB0aGF0IGEK
K3N1YmNsYXNzIG9ubHkgbmVlZHMgdG8gb3ZlcnJpZGUgdGhlIG1ldGhvZHMgaXQgY2FyZXMgYWJv
dXQuCisKK1doZW4gYW4gZXZlbnQgaXMgZmlyZWQsIGl0cyBjb250ZXh0IGlzIHBhc3NlZCB0byB0
aGUgaGFuZGxlciBmdW5jdGlvbgorYXMgYW4gYXJndW1lbnQuIFRoZSBmb2xsb3dpbmcgYXJndW1l
bnQgdHlwZXMgYXJlIHVzZWQ6CisgICogW1VuaXRUZXN0XSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0
LmgjTDEwMDcpIHJlZmxlY3RzIHRoZSBzdGF0ZSBvZiB0aGUgZW50aXJlIHRlc3QgcHJvZ3JhbSwK
KyAgKiBbVGVzdENhc2VdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMNjg5KSBoYXMgaW5mb3Jt
YXRpb24gYWJvdXQgYSB0ZXN0IGNhc2UsIHdoaWNoIGNhbiBjb250YWluIG9uZSBvciBtb3JlIHRl
c3RzLAorICAqIFtUZXN0SW5mb10oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w1OTkpIGNvbnRh
aW5zIHRoZSBzdGF0ZSBvZiBhIHRlc3QsIGFuZAorICAqIFtUZXN0UGFydFJlc3VsdF0oLi4vaW5j
bHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBhcnQuaCNMNDIpIHJlcHJlc2VudHMgdGhlIHJlc3VsdCBv
ZiBhIHRlc3QgYXNzZXJ0aW9uLgorCitBbiBldmVudCBoYW5kbGVyIGZ1bmN0aW9uIGNhbiBleGFt
aW5lIHRoZSBhcmd1bWVudCBpdCByZWNlaXZlcyB0byBmaW5kCitvdXQgaW50ZXJlc3RpbmcgaW5m
b3JtYXRpb24gYWJvdXQgdGhlIGV2ZW50IGFuZCB0aGUgdGVzdCBwcm9ncmFtJ3MKK3N0YXRlLiAg
SGVyZSdzIGFuIGV4YW1wbGU6CisKK2BgYAorICBjbGFzcyBNaW5pbWFsaXN0UHJpbnRlciA6IHB1
YmxpYyA6OnRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgeworICAgIC8vIENhbGxlZCBi
ZWZvcmUgYSB0ZXN0IHN0YXJ0cy4KKyAgICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3Qg
Ojp0ZXN0aW5nOjpUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CisgICAgICBwcmludGYoIioqKiBUZXN0
ICVzLiVzIHN0YXJ0aW5nLlxuIiwKKyAgICAgICAgICAgICB0ZXN0X2luZm8udGVzdF9jYXNlX25h
bWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7CisgICAgfQorCisgICAgLy8gQ2FsbGVkIGFmdGVyIGEg
ZmFpbGVkIGFzc2VydGlvbiBvciBhIFNVQ0NFRUQoKSBpbnZvY2F0aW9uLgorICAgIHZpcnR1YWwg
dm9pZCBPblRlc3RQYXJ0UmVzdWx0KAorICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJ0
UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7CisgICAgICBwcmludGYoIiVzIGluICVzOiVkXG4l
c1xuIiwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LmZhaWxlZCgpID8gIioqKiBGYWls
dXJlIiA6ICJTdWNjZXNzIiwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LmZpbGVfbmFt
ZSgpLAorICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQubGluZV9udW1iZXIoKSwKKyAgICAg
ICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LnN1bW1hcnkoKSk7CisgICAgfQorCisgICAgLy8gQ2Fs
bGVkIGFmdGVyIGEgdGVzdCBlbmRzLgorICAgIHZpcnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3Qg
Ojp0ZXN0aW5nOjpUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CisgICAgICBwcmludGYoIioqKiBUZXN0
ICVzLiVzIGVuZGluZy5cbiIsCisgICAgICAgICAgICAgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1l
KCksIHRlc3RfaW5mby5uYW1lKCkpOworICAgIH0KKyAgfTsKK2BgYAorCisjIyBVc2luZyBFdmVu
dCBMaXN0ZW5lcnMgIyMKKworVG8gdXNlIHRoZSBldmVudCBsaXN0ZW5lciB5b3UgaGF2ZSBkZWZp
bmVkLCBhZGQgYW4gaW5zdGFuY2Ugb2YgaXQgdG8KK3RoZSBHb29nbGUgVGVzdCBldmVudCBsaXN0
ZW5lciBsaXN0IChyZXByZXNlbnRlZCBieSBjbGFzcworW1Rlc3RFdmVudExpc3RlbmVyc10oLi4v
aW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w5MjkpCistIG5vdGUgdGhlICJzIiBhdCB0aGUgZW5kIG9m
IHRoZSBuYW1lKSBpbiB5b3VyCitgbWFpbigpYCBmdW5jdGlvbiwgYmVmb3JlIGNhbGxpbmcgYFJV
Tl9BTExfVEVTVFMoKWA6CitgYGAKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewor
ICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgLy8gR2V0cyBob2xk
IG9mIHRoZSBldmVudCBsaXN0ZW5lciBsaXN0LgorICA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3Rl
bmVycyYgbGlzdGVuZXJzID0KKyAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPmxpc3RlbmVycygpOworICAvLyBBZGRzIGEgbGlzdGVuZXIgdG8gdGhlIGVuZC4gIEdvb2ds
ZSBUZXN0IHRha2VzIHRoZSBvd25lcnNoaXAuCisgIGxpc3RlbmVycy5BcHBlbmQobmV3IE1pbmlt
YWxpc3RQcmludGVyKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAorCitUaGVy
ZSdzIG9ubHkgb25lIHByb2JsZW06IHRoZSBkZWZhdWx0IHRlc3QgcmVzdWx0IHByaW50ZXIgaXMg
c3RpbGwgaW4KK2VmZmVjdCwgc28gaXRzIG91dHB1dCB3aWxsIG1pbmdsZSB3aXRoIHRoZSBvdXRw
dXQgZnJvbSB5b3VyIG1pbmltYWxpc3QKK3ByaW50ZXIuIFRvIHN1cHByZXNzIHRoZSBkZWZhdWx0
IHByaW50ZXIsIGp1c3QgcmVsZWFzZSBpdCBmcm9tIHRoZQorZXZlbnQgbGlzdGVuZXIgbGlzdCBh
bmQgZGVsZXRlIGl0LiBZb3UgY2FuIGRvIHNvIGJ5IGFkZGluZyBvbmUgbGluZToKK2BgYAorICAu
Li4KKyAgZGVsZXRlIGxpc3RlbmVycy5SZWxlYXNlKGxpc3RlbmVycy5kZWZhdWx0X3Jlc3VsdF9w
cmludGVyKCkpOworICBsaXN0ZW5lcnMuQXBwZW5kKG5ldyBNaW5pbWFsaXN0UHJpbnRlcik7Cisg
IHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CitgYGAKKworTm93LCBzaXQgYmFjayBhbmQgZW5qb3kg
YSBjb21wbGV0ZWx5IGRpZmZlcmVudCBvdXRwdXQgZnJvbSB5b3VyCit0ZXN0cy4gRm9yIG1vcmUg
ZGV0YWlscywgeW91IGNhbiByZWFkIHRoaXMKK1tzYW1wbGVdKC4uL3NhbXBsZXMvc2FtcGxlOV91
bml0dGVzdC5jYykuCisKK1lvdSBtYXkgYXBwZW5kIG1vcmUgdGhhbiBvbmUgbGlzdGVuZXIgdG8g
dGhlIGxpc3QuIFdoZW4gYW4gYE9uKlN0YXJ0KClgCitvciBgT25UZXN0UGFydFJlc3VsdCgpYCBl
dmVudCBpcyBmaXJlZCwgdGhlIGxpc3RlbmVycyB3aWxsIHJlY2VpdmUgaXQgaW4KK3RoZSBvcmRl
ciB0aGV5IGFwcGVhciBpbiB0aGUgbGlzdCAoc2luY2UgbmV3IGxpc3RlbmVycyBhcmUgYWRkZWQg
dG8KK3RoZSBlbmQgb2YgdGhlIGxpc3QsIHRoZSBkZWZhdWx0IHRleHQgcHJpbnRlciBhbmQgdGhl
IGRlZmF1bHQgWE1MCitnZW5lcmF0b3Igd2lsbCByZWNlaXZlIHRoZSBldmVudCBmaXJzdCkuIEFu
IGBPbipFbmQoKWAgZXZlbnQgd2lsbCBiZQorcmVjZWl2ZWQgYnkgdGhlIGxpc3RlbmVycyBpbiB0
aGUgX3JldmVyc2VfIG9yZGVyLiBUaGlzIGFsbG93cyBvdXRwdXQgYnkKK2xpc3RlbmVycyBhZGRl
ZCBsYXRlciB0byBiZSBmcmFtZWQgYnkgb3V0cHV0IGZyb20gbGlzdGVuZXJzIGFkZGVkCitlYXJs
aWVyLgorCisjIyBHZW5lcmF0aW5nIEZhaWx1cmVzIGluIExpc3RlbmVycyAjIworCitZb3UgbWF5
IHVzZSBmYWlsdXJlLXJhaXNpbmcgbWFjcm9zIChgRVhQRUNUXyooKWAsIGBBU1NFUlRfKigpYCwK
K2BGQUlMKClgLCBldGMpIHdoZW4gcHJvY2Vzc2luZyBhbiBldmVudC4gVGhlcmUgYXJlIHNvbWUg
cmVzdHJpY3Rpb25zOgorCisgIDEuIFlvdSBjYW5ub3QgZ2VuZXJhdGUgYW55IGZhaWx1cmUgaW4g
YE9uVGVzdFBhcnRSZXN1bHQoKWAgKG90aGVyd2lzZSBpdCB3aWxsIGNhdXNlIGBPblRlc3RQYXJ0
UmVzdWx0KClgIHRvIGJlIGNhbGxlZCByZWN1cnNpdmVseSkuCisgIDEuIEEgbGlzdGVuZXIgdGhh
dCBoYW5kbGVzIGBPblRlc3RQYXJ0UmVzdWx0KClgIGlzIG5vdCBhbGxvd2VkIHRvIGdlbmVyYXRl
IGFueSBmYWlsdXJlLgorCitXaGVuIHlvdSBhZGQgbGlzdGVuZXJzIHRvIHRoZSBsaXN0ZW5lciBs
aXN0LCB5b3Ugc2hvdWxkIHB1dCBsaXN0ZW5lcnMKK3RoYXQgaGFuZGxlIGBPblRlc3RQYXJ0UmVz
dWx0KClgIF9iZWZvcmVfIGxpc3RlbmVycyB0aGF0IGNhbiBnZW5lcmF0ZQorZmFpbHVyZXMuIFRo
aXMgZW5zdXJlcyB0aGF0IGZhaWx1cmVzIGdlbmVyYXRlZCBieSB0aGUgbGF0dGVyIGFyZQorYXR0
cmlidXRlZCB0byB0aGUgcmlnaHQgdGVzdCBieSB0aGUgZm9ybWVyLgorCitXZSBoYXZlIGEgc2Ft
cGxlIG9mIGZhaWx1cmUtcmFpc2luZyBsaXN0ZW5lcgorW2hlcmVdKC4uL3NhbXBsZXMvc2FtcGxl
MTBfdW5pdHRlc3QuY2MpLgorCisjIFJ1bm5pbmcgVGVzdCBQcm9ncmFtczogQWR2YW5jZWQgT3B0
aW9ucyAjCisKK0dvb2dsZSBUZXN0IHRlc3QgcHJvZ3JhbXMgYXJlIG9yZGluYXJ5IGV4ZWN1dGFi
bGVzLiBPbmNlIGJ1aWx0LCB5b3UgY2FuIHJ1bgordGhlbSBkaXJlY3RseSBhbmQgYWZmZWN0IHRo
ZWlyIGJlaGF2aW9yIHZpYSB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcworYW5k
L29yIGNvbW1hbmQgbGluZSBmbGFncy4gRm9yIHRoZSBmbGFncyB0byB3b3JrLCB5b3VyIHByb2dy
YW1zIG11c3QgY2FsbAorYDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKWAgYmVmb3JlIGNhbGxp
bmcgYFJVTl9BTExfVEVTVFMoKWAuCisKK1RvIHNlZSBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGZsYWdz
IGFuZCB0aGVpciB1c2FnZSwgcGxlYXNlIHJ1biB5b3VyIHRlc3QKK3Byb2dyYW0gd2l0aCB0aGUg
YC0taGVscGAgZmxhZy4gIFlvdSBjYW4gYWxzbyB1c2UgYC1oYCwgYC0/YCwgb3IgYC8/YAorZm9y
IHNob3J0LiAgVGhpcyBmZWF0dXJlIGlzIGFkZGVkIGluIHZlcnNpb24gMS4zLjAuCisKK0lmIGFu
IG9wdGlvbiBpcyBzcGVjaWZpZWQgYm90aCBieSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbmQg
YnkgYQorZmxhZywgdGhlIGxhdHRlciB0YWtlcyBwcmVjZWRlbmNlLiAgTW9zdCBvZiB0aGUgb3B0
aW9ucyBjYW4gYWxzbyBiZQorc2V0L3JlYWQgaW4gY29kZTogdG8gYWNjZXNzIHRoZSB2YWx1ZSBv
ZiBjb21tYW5kIGxpbmUgZmxhZworYC0tZ3Rlc3RfZm9vYCwgd3JpdGUgYDo6dGVzdGluZzo6R1RF
U1RfRkxBRyhmb28pYC4gIEEgY29tbW9uIHBhdHRlcm4gaXMKK3RvIHNldCB0aGUgdmFsdWUgb2Yg
YSBmbGFnIGJlZm9yZSBjYWxsaW5nIGA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClgCit0byBj
aGFuZ2UgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGZsYWc6CitgYGAKK2ludCBtYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikgeworICAvLyBEaXNhYmxlcyBlbGFwc2VkIHRpbWUgYnkgZGVmYXVs
dC4KKyAgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHByaW50X3RpbWUpID0gZmFsc2U7CisKKyAgLy8g
VGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gb3ZlcnJpZGUgdGhlIGZsYWcgb24gdGhlIGNvbW1hbmQg
bGluZS4KKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgcmV0
dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAorCisjIyBTZWxlY3RpbmcgVGVzdHMgIyMKKwor
VGhpcyBzZWN0aW9uIHNob3dzIHZhcmlvdXMgb3B0aW9ucyBmb3IgY2hvb3Npbmcgd2hpY2ggdGVz
dHMgdG8gcnVuLgorCisjIyMgTGlzdGluZyBUZXN0IE5hbWVzICMjIworCitTb21ldGltZXMgaXQg
aXMgbmVjZXNzYXJ5IHRvIGxpc3QgdGhlIGF2YWlsYWJsZSB0ZXN0cyBpbiBhIHByb2dyYW0gYmVm
b3JlCitydW5uaW5nIHRoZW0gc28gdGhhdCBhIGZpbHRlciBtYXkgYmUgYXBwbGllZCBpZiBuZWVk
ZWQuIEluY2x1ZGluZyB0aGUgZmxhZworYC0tZ3Rlc3RfbGlzdF90ZXN0c2Agb3ZlcnJpZGVzIGFs
bCBvdGhlciBmbGFncyBhbmQgbGlzdHMgdGVzdHMgaW4gdGhlIGZvbGxvd2luZworZm9ybWF0Ogor
YGBgCitUZXN0Q2FzZTEuCisgIFRlc3ROYW1lMQorICBUZXN0TmFtZTIKK1Rlc3RDYXNlMi4KKyAg
VGVzdE5hbWUKK2BgYAorCitOb25lIG9mIHRoZSB0ZXN0cyBsaXN0ZWQgYXJlIGFjdHVhbGx5IHJ1
biBpZiB0aGUgZmxhZyBpcyBwcm92aWRlZC4gVGhlcmUgaXMgbm8KK2NvcnJlc3BvbmRpbmcgZW52
aXJvbm1lbnQgdmFyaWFibGUgZm9yIHRoaXMgZmxhZy4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4
LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBSdW5uaW5nIGEgU3Vic2V0IG9mIHRoZSBUZXN0cyAjIyMK
KworQnkgZGVmYXVsdCwgYSBHb29nbGUgVGVzdCBwcm9ncmFtIHJ1bnMgYWxsIHRlc3RzIHRoZSB1
c2VyIGhhcyBkZWZpbmVkLgorU29tZXRpbWVzLCB5b3Ugd2FudCB0byBydW4gb25seSBhIHN1YnNl
dCBvZiB0aGUgdGVzdHMgKGUuZy4gZm9yIGRlYnVnZ2luZyBvcgorcXVpY2tseSB2ZXJpZnlpbmcg
YSBjaGFuZ2UpLiBJZiB5b3Ugc2V0IHRoZSBgR1RFU1RfRklMVEVSYCBlbnZpcm9ubWVudCB2YXJp
YWJsZQorb3IgdGhlIGAtLWd0ZXN0X2ZpbHRlcmAgZmxhZyB0byBhIGZpbHRlciBzdHJpbmcsIEdv
b2dsZSBUZXN0IHdpbGwgb25seSBydW4gdGhlCit0ZXN0cyB3aG9zZSBmdWxsIG5hbWVzIChpbiB0
aGUgZm9ybSBvZiBgVGVzdENhc2VOYW1lLlRlc3ROYW1lYCkgbWF0Y2ggdGhlCitmaWx0ZXIuCisK
K1RoZSBmb3JtYXQgb2YgYSBmaWx0ZXIgaXMgYSAnYDpgJy1zZXBhcmF0ZWQgbGlzdCBvZiB3aWxk
Y2FyZCBwYXR0ZXJucyAoY2FsbGVkCit0aGUgcG9zaXRpdmUgcGF0dGVybnMpIG9wdGlvbmFsbHkg
Zm9sbG93ZWQgYnkgYSAnYC1gJyBhbmQgYW5vdGhlcgorJ2A6YCctc2VwYXJhdGVkIHBhdHRlcm4g
bGlzdCAoY2FsbGVkIHRoZSBuZWdhdGl2ZSBwYXR0ZXJucykuIEEgdGVzdCBtYXRjaGVzIHRoZQor
ZmlsdGVyIGlmIGFuZCBvbmx5IGlmIGl0IG1hdGNoZXMgYW55IG9mIHRoZSBwb3NpdGl2ZSBwYXR0
ZXJucyBidXQgZG9lcyBub3QKK21hdGNoIGFueSBvZiB0aGUgbmVnYXRpdmUgcGF0dGVybnMuCisK
K0EgcGF0dGVybiBtYXkgY29udGFpbiBgJyonYCAobWF0Y2hlcyBhbnkgc3RyaW5nKSBvciBgJz8n
YCAobWF0Y2hlcyBhbnkgc2luZ2xlCitjaGFyYWN0ZXIpLiBGb3IgY29udmVuaWVuY2UsIHRoZSBm
aWx0ZXIgYCcqLU5lZ2F0aXZlUGF0dGVybnMnYCBjYW4gYmUgYWxzbword3JpdHRlbiBhcyBgJy1O
ZWdhdGl2ZVBhdHRlcm5zJ2AuCisKK0ZvciBleGFtcGxlOgorCisgICogYC4vZm9vX3Rlc3RgIEhh
cyBubyBmbGFnLCBhbmQgdGh1cyBydW5zIGFsbCBpdHMgdGVzdHMuCisgICogYC4vZm9vX3Rlc3Qg
LS1ndGVzdF9maWx0ZXI9KmAgQWxzbyBydW5zIGV2ZXJ5dGhpbmcsIGR1ZSB0byB0aGUgc2luZ2xl
IG1hdGNoLWV2ZXJ5dGhpbmcgYCpgIHZhbHVlLgorICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmls
dGVyPUZvb1Rlc3QuKmAgUnVucyBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBgRm9vVGVzdGAuCisg
ICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Kk51bGwqOipDb25zdHJ1Y3RvcipgIFJ1bnMg
YW55IHRlc3Qgd2hvc2UgZnVsbCBuYW1lIGNvbnRhaW5zIGVpdGhlciBgIk51bGwiYCBvciBgIkNv
bnN0cnVjdG9yImAuCisgICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9LSpEZWF0aFRlc3Qu
KmAgUnVucyBhbGwgbm9uLWRlYXRoIHRlc3RzLgorICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmls
dGVyPUZvb1Rlc3QuKi1Gb29UZXN0LkJhcmAgUnVucyBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBg
Rm9vVGVzdGAgZXhjZXB0IGBGb29UZXN0LkJhcmAuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwg
V2luZG93cywgTWFjLgorCisjIyMgVGVtcG9yYXJpbHkgRGlzYWJsaW5nIFRlc3RzICMjIworCitJ
ZiB5b3UgaGF2ZSBhIGJyb2tlbiB0ZXN0IHRoYXQgeW91IGNhbm5vdCBmaXggcmlnaHQgYXdheSwg
eW91IGNhbiBhZGQgdGhlCitgRElTQUJMRURfYCBwcmVmaXggdG8gaXRzIG5hbWUuIFRoaXMgd2ls
bCBleGNsdWRlIGl0IGZyb20gZXhlY3V0aW9uLiBUaGlzIGlzCitiZXR0ZXIgdGhhbiBjb21tZW50
aW5nIG91dCB0aGUgY29kZSBvciB1c2luZyBgI2lmIDBgLCBhcyBkaXNhYmxlZCB0ZXN0cyBhcmUK
K3N0aWxsIGNvbXBpbGVkIChhbmQgdGh1cyB3b24ndCByb3QpLgorCitJZiB5b3UgbmVlZCB0byBk
aXNhYmxlIGFsbCB0ZXN0cyBpbiBhIHRlc3QgY2FzZSwgeW91IGNhbiBlaXRoZXIgYWRkIGBESVNB
QkxFRF9gCit0byB0aGUgZnJvbnQgb2YgdGhlIG5hbWUgb2YgZWFjaCB0ZXN0LCBvciBhbHRlcm5h
dGl2ZWx5IGFkZCBpdCB0byB0aGUgZnJvbnQgb2YKK3RoZSB0ZXN0IGNhc2UgbmFtZS4KKworRm9y
IGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVzdHMgd29uJ3QgYmUgcnVuIGJ5IEdvb2dsZSBUZXN0
LCBldmVuIHRob3VnaCB0aGV5Cit3aWxsIHN0aWxsIGJlIGNvbXBpbGVkOgorCitgYGAKKy8vIFRl
c3RzIHRoYXQgRm9vIGRvZXMgQWJjLgorVEVTVChGb29UZXN0LCBESVNBQkxFRF9Eb2VzQWJjKSB7
IC4uLiB9CisKK2NsYXNzIERJU0FCTEVEX0JhclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHsgLi4uIH07CisKKy8vIFRlc3RzIHRoYXQgQmFyIGRvZXMgWHl6LgorVEVTVF9GKERJU0FCTEVE
X0JhclRlc3QsIERvZXNYeXopIHsgLi4uIH0KK2BgYAorCitfTm90ZTpfIFRoaXMgZmVhdHVyZSBz
aG91bGQgb25seSBiZSB1c2VkIGZvciB0ZW1wb3JhcnkgcGFpbi1yZWxpZWYuIFlvdSBzdGlsbAor
aGF2ZSB0byBmaXggdGhlIGRpc2FibGVkIHRlc3RzIGF0IGEgbGF0ZXIgZGF0ZS4gQXMgYSByZW1p
bmRlciwgR29vZ2xlIFRlc3Qgd2lsbAorcHJpbnQgYSBiYW5uZXIgd2FybmluZyB5b3UgaWYgYSB0
ZXN0IHByb2dyYW0gY29udGFpbnMgYW55IGRpc2FibGVkIHRlc3RzLgorCitfVGlwOl8gWW91IGNh
biBlYXNpbHkgY291bnQgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB5b3UgaGF2ZQordXNp
bmcgYGdyZXBgLiBUaGlzIG51bWJlciBjYW4gYmUgdXNlZCBhcyBhIG1ldHJpYyBmb3IgaW1wcm92
aW5nIHlvdXIKK3Rlc3QgcXVhbGl0eS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dz
LCBNYWMuCisKKyMjIyBUZW1wb3JhcmlseSBFbmFibGluZyBEaXNhYmxlZCBUZXN0cyAjIyMKKwor
VG8gaW5jbHVkZSBbZGlzYWJsZWQgdGVzdHNdKCN0ZW1wb3JhcmlseS1kaXNhYmxpbmctdGVzdHMp
IGluIHRlc3QKK2V4ZWN1dGlvbiwganVzdCBpbnZva2UgdGhlIHRlc3QgcHJvZ3JhbSB3aXRoIHRo
ZQorYC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHNgIGZsYWcgb3Igc2V0IHRoZQorYEdU
RVNUX0FMU09fUlVOX0RJU0FCTEVEX1RFU1RTYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIHZh
bHVlIG90aGVyCit0aGFuIGAwYC4gIFlvdSBjYW4gY29tYmluZSB0aGlzIHdpdGggdGhlCitbLS1n
dGVzdFxfZmlsdGVyXSgjcnVubmluZy1hLXN1YnNldC1vZi10aGUtdGVzdHMpIGZsYWcgdG8gZnVy
dGhlciBzZWxlY3QKK3doaWNoIGRpc2FibGVkIHRlc3RzIHRvIHJ1bi4KKworX0F2YWlsYWJpbGl0
eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4zLjAuCisKKyMjIFJlcGVh
dGluZyB0aGUgVGVzdHMgIyMKKworT25jZSBpbiBhIHdoaWxlIHlvdSdsbCBydW4gaW50byBhIHRl
c3Qgd2hvc2UgcmVzdWx0IGlzIGhpdC1vci1taXNzLiBQZXJoYXBzIGl0Cit3aWxsIGZhaWwgb25s
eSAxJSBvZiB0aGUgdGltZSwgbWFraW5nIGl0IHJhdGhlciBoYXJkIHRvIHJlcHJvZHVjZSB0aGUg
YnVnIHVuZGVyCithIGRlYnVnZ2VyLiBUaGlzIGNhbiBiZSBhIG1ham9yIHNvdXJjZSBvZiBmcnVz
dHJhdGlvbi4KKworVGhlIGAtLWd0ZXN0X3JlcGVhdGAgZmxhZyBhbGxvd3MgeW91IHRvIHJlcGVh
dCBhbGwgKG9yIHNlbGVjdGVkKSB0ZXN0IG1ldGhvZHMKK2luIGEgcHJvZ3JhbSBtYW55IHRpbWVz
LiBIb3BlZnVsbHksIGEgZmxha3kgdGVzdCB3aWxsIGV2ZW50dWFsbHkgZmFpbCBhbmQgZ2l2ZQor
eW91IGEgY2hhbmNlIHRvIGRlYnVnLiBIZXJlJ3MgaG93IHRvIHVzZSBpdDoKKworfCBgJCBmb29f
dGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwYCB8IFJlcGVhdCBmb29cX3Rlc3QgMTAwMCB0aW1lcyBh
bmQgZG9uJ3Qgc3RvcCBhdCBmYWlsdXJlcy4gfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tfAorfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0tMWAgICB8IEEgbmVnYXRp
dmUgY291bnQgbWVhbnMgcmVwZWF0aW5nIGZvcmV2ZXIuICAgICAgICAgICAgICAgfAorfCBgJCBm
b29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZWAgfCBS
ZXBlYXQgZm9vXF90ZXN0IDEwMDAgdGltZXMsIHN0b3BwaW5nIGF0IHRoZSBmaXJzdCBmYWlsdXJl
LiBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIHdoZW4gcnVubmluZyB1bmRlciBhIGRlYnVnZ2Vy
OiB3aGVuIHRoZSB0ZXN0ZmFpbHMsIGl0IHdpbGwgZHJvcCBpbnRvIHRoZSBkZWJ1Z2dlciBhbmQg
eW91IGNhbiB0aGVuIGluc3BlY3QgdmFyaWFibGVzIGFuZCBzdGFja3MuIHwKK3wgYCQgZm9vX3Rl
c3QgLS1ndGVzdF9yZXBlYXQ9MTAwMCAtLWd0ZXN0X2ZpbHRlcj1Gb29CYXJgIHwgUmVwZWF0IHRo
ZSB0ZXN0cyB3aG9zZSBuYW1lIG1hdGNoZXMgdGhlIGZpbHRlciAxMDAwIHRpbWVzLiB8CisKK0lm
IHlvdXIgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIGdsb2JhbCBzZXQtdXAvdGVhci1kb3duIGNvZGUg
cmVnaXN0ZXJlZAordXNpbmcgYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCwgaXQgd2lsbCBi
ZSByZXBlYXRlZCBpbiBlYWNoCitpdGVyYXRpb24gYXMgd2VsbCwgYXMgdGhlIGZsYWtpbmVzcyBt
YXkgYmUgaW4gaXQuIFlvdSBjYW4gYWxzbyBzcGVjaWZ5Cit0aGUgcmVwZWF0IGNvdW50IGJ5IHNl
dHRpbmcgdGhlIGBHVEVTVF9SRVBFQVRgIGVudmlyb25tZW50IHZhcmlhYmxlLgorCitfQXZhaWxh
YmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgU2h1ZmZsaW5nIHRoZSBUZXN0cyAj
IworCitZb3UgY2FuIHNwZWNpZnkgdGhlIGAtLWd0ZXN0X3NodWZmbGVgIGZsYWcgKG9yIHNldCB0
aGUgYEdURVNUX1NIVUZGTEVgCitlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBgMWApIHRvIHJ1biB0
aGUgdGVzdHMgaW4gYSBwcm9ncmFtIGluIGEgcmFuZG9tCitvcmRlci4gVGhpcyBoZWxwcyB0byBy
ZXZlYWwgYmFkIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRlc3RzLgorCitCeSBkZWZhdWx0LCBHb29n
bGUgVGVzdCB1c2VzIGEgcmFuZG9tIHNlZWQgY2FsY3VsYXRlZCBmcm9tIHRoZSBjdXJyZW50Cit0
aW1lLiBUaGVyZWZvcmUgeW91J2xsIGdldCBhIGRpZmZlcmVudCBvcmRlciBldmVyeSB0aW1lLiBU
aGUgY29uc29sZQorb3V0cHV0IGluY2x1ZGVzIHRoZSByYW5kb20gc2VlZCB2YWx1ZSwgc3VjaCB0
aGF0IHlvdSBjYW4gcmVwcm9kdWNlIGFuCitvcmRlci1yZWxhdGVkIHRlc3QgZmFpbHVyZSBsYXRl
ci4gVG8gc3BlY2lmeSB0aGUgcmFuZG9tIHNlZWQKK2V4cGxpY2l0bHksIHVzZSB0aGUgYC0tZ3Rl
c3RfcmFuZG9tX3NlZWQ9U0VFRGAgZmxhZyAob3Igc2V0IHRoZQorYEdURVNUX1JBTkRPTV9TRUVE
YCBlbnZpcm9ubWVudCB2YXJpYWJsZSksIHdoZXJlIGBTRUVEYCBpcyBhbiBpbnRlZ2VyCitiZXR3
ZWVuIDAgYW5kIDk5OTk5LiBUaGUgc2VlZCB2YWx1ZSAwIGlzIHNwZWNpYWw6IGl0IHRlbGxzIEdv
b2dsZSBUZXN0Cit0byBkbyB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBjYWxjdWxhdGluZyB0aGUg
c2VlZCBmcm9tIHRoZSBjdXJyZW50Cit0aW1lLgorCitJZiB5b3UgY29tYmluZSB0aGlzIHdpdGgg
YC0tZ3Rlc3RfcmVwZWF0PU5gLCBHb29nbGUgVGVzdCB3aWxsIHBpY2sgYQorZGlmZmVyZW50IHJh
bmRvbSBzZWVkIGFuZCByZS1zaHVmZmxlIHRoZSB0ZXN0cyBpbiBlYWNoIGl0ZXJhdGlvbi4KKwor
X0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHYxLjQuMC4KKworIyMg
Q29udHJvbGxpbmcgVGVzdCBPdXRwdXQgIyMKKworVGhpcyBzZWN0aW9uIHRlYWNoZXMgaG93IHRv
IHR3ZWFrIHRoZSB3YXkgdGVzdCByZXN1bHRzIGFyZSByZXBvcnRlZC4KKworIyMjIENvbG9yZWQg
VGVybWluYWwgT3V0cHV0ICMjIworCitHb29nbGUgVGVzdCBjYW4gdXNlIGNvbG9ycyBpbiBpdHMg
dGVybWluYWwgb3V0cHV0IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNwb3QKK3RoZSBzZXBhcmF0aW9u
IGJldHdlZW4gdGVzdHMsIGFuZCB3aGV0aGVyIHRlc3RzIHBhc3NlZC4KKworWW91IGNhbiBzZXQg
dGhlIEdURVNUXF9DT0xPUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciBzZXQgdGhlIGAtLWd0ZXN0
X2NvbG9yYAorY29tbWFuZCBsaW5lIGZsYWcgdG8gYHllc2AsIGBub2AsIG9yIGBhdXRvYCAodGhl
IGRlZmF1bHQpIHRvIGVuYWJsZSBjb2xvcnMsCitkaXNhYmxlIGNvbG9ycywgb3IgbGV0IEdvb2ds
ZSBUZXN0IGRlY2lkZS4gV2hlbiB0aGUgdmFsdWUgaXMgYGF1dG9gLCBHb29nbGUKK1Rlc3Qgd2ls
bCB1c2UgY29sb3JzIGlmIGFuZCBvbmx5IGlmIHRoZSBvdXRwdXQgZ29lcyB0byBhIHRlcm1pbmFs
IGFuZCAob24KK25vbi1XaW5kb3dzIHBsYXRmb3JtcykgdGhlIGBURVJNYCBlbnZpcm9ubWVudCB2
YXJpYWJsZSBpcyBzZXQgdG8gYHh0ZXJtYCBvcgorYHh0ZXJtLWNvbG9yYC4KKworX0F2YWlsYWJp
bGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBTdXBwcmVzc2luZyB0aGUgRWxhcHNl
ZCBUaW1lICMjIworCitCeSBkZWZhdWx0LCBHb29nbGUgVGVzdCBwcmludHMgdGhlIHRpbWUgaXQg
dGFrZXMgdG8gcnVuIGVhY2ggdGVzdC4gIFRvCitzdXBwcmVzcyB0aGF0LCBydW4gdGhlIHRlc3Qg
cHJvZ3JhbSB3aXRoIHRoZSBgLS1ndGVzdF9wcmludF90aW1lPTBgCitjb21tYW5kIGxpbmUgZmxh
Zy4gIFNldHRpbmcgdGhlIGBHVEVTVF9QUklOVF9USU1FYCBlbnZpcm9ubWVudAordmFyaWFibGUg
dG8gYDBgIGhhcyB0aGUgc2FtZSBlZmZlY3QuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2lu
ZG93cywgTWFjLiAgKEluIEdvb2dsZSBUZXN0IDEuMy4wIGFuZCBsb3dlciwKK3RoZSBkZWZhdWx0
IGJlaGF2aW9yIGlzIHRoYXQgdGhlIGVsYXBzZWQgdGltZSBpcyAqKm5vdCoqIHByaW50ZWQuKQor
CisjIyMgR2VuZXJhdGluZyBhbiBYTUwgUmVwb3J0ICMjIworCitHb29nbGUgVGVzdCBjYW4gZW1p
dCBhIGRldGFpbGVkIFhNTCByZXBvcnQgdG8gYSBmaWxlIGluIGFkZGl0aW9uIHRvIGl0cyBub3Jt
YWwKK3RleHR1YWwgb3V0cHV0LiBUaGUgcmVwb3J0IGNvbnRhaW5zIHRoZSBkdXJhdGlvbiBvZiBl
YWNoIHRlc3QsIGFuZCB0aHVzIGNhbgoraGVscCB5b3UgaWRlbnRpZnkgc2xvdyB0ZXN0cy4KKwor
VG8gZ2VuZXJhdGUgdGhlIFhNTCByZXBvcnQsIHNldCB0aGUgYEdURVNUX09VVFBVVGAgZW52aXJv
bm1lbnQgdmFyaWFibGUgb3IgdGhlCitgLS1ndGVzdF9vdXRwdXRgIGZsYWcgdG8gdGhlIHN0cmlu
ZyBgInhtbDpfcGF0aF90b19vdXRwdXRfZmlsZV8iYCwgd2hpY2ggd2lsbAorY3JlYXRlIHRoZSBm
aWxlIGF0IHRoZSBnaXZlbiBsb2NhdGlvbi4gWW91IGNhbiBhbHNvIGp1c3QgdXNlIHRoZSBzdHJp
bmcKK2AieG1sImAsIGluIHdoaWNoIGNhc2UgdGhlIG91dHB1dCBjYW4gYmUgZm91bmQgaW4gdGhl
IGB0ZXN0X2RldGFpbC54bWxgIGZpbGUgaW4KK3RoZSBjdXJyZW50IGRpcmVjdG9yeS4KKworSWYg
eW91IHNwZWNpZnkgYSBkaXJlY3RvcnkgKGZvciBleGFtcGxlLCBgInhtbDpvdXRwdXQvZGlyZWN0
b3J5LyJgIG9uIExpbnV4IG9yCitgInhtbDpvdXRwdXRcZGlyZWN0b3J5XCJgIG9uIFdpbmRvd3Mp
LCBHb29nbGUgVGVzdCB3aWxsIGNyZWF0ZSB0aGUgWE1MIGZpbGUgaW4KK3RoYXQgZGlyZWN0b3J5
LCBuYW1lZCBhZnRlciB0aGUgdGVzdCBleGVjdXRhYmxlIChlLmcuIGBmb29fdGVzdC54bWxgIGZv
ciB0ZXN0Citwcm9ncmFtIGBmb29fdGVzdGAgb3IgYGZvb190ZXN0LmV4ZWApLiBJZiB0aGUgZmls
ZSBhbHJlYWR5IGV4aXN0cyAocGVyaGFwcyBsZWZ0CitvdmVyIGZyb20gYSBwcmV2aW91cyBydW4p
LCBHb29nbGUgVGVzdCB3aWxsIHBpY2sgYSBkaWZmZXJlbnQgbmFtZSAoZS5nLgorYGZvb190ZXN0
XzEueG1sYCkgdG8gYXZvaWQgb3ZlcndyaXRpbmcgaXQuCisKK1RoZSByZXBvcnQgdXNlcyB0aGUg
Zm9ybWF0IGRlc2NyaWJlZCBoZXJlLiAgSXQgaXMgYmFzZWQgb24gdGhlCitganVuaXRyZXBvcnRg
IEFudCB0YXNrIGFuZCBjYW4gYmUgcGFyc2VkIGJ5IHBvcHVsYXIgY29udGludW91cyBidWlsZAor
c3lzdGVtcyBsaWtlIFtKZW5raW5zXShodHRwOi8vamVua2lucy1jaS5vcmcvKS4gU2luY2UgdGhh
dCBmb3JtYXQKK3dhcyBvcmlnaW5hbGx5IGludGVuZGVkIGZvciBKYXZhLCBhIGxpdHRsZSBpbnRl
cnByZXRhdGlvbiBpcyByZXF1aXJlZAordG8gbWFrZSBpdCBhcHBseSB0byBHb29nbGUgVGVzdCB0
ZXN0cywgYXMgc2hvd24gaGVyZToKKworYGBgCis8dGVzdHN1aXRlcyBuYW1lPSJBbGxUZXN0cyIg
Li4uPgorICA8dGVzdHN1aXRlIG5hbWU9InRlc3RfY2FzZV9uYW1lIiAuLi4+CisgICAgPHRlc3Rj
YXNlIG5hbWU9InRlc3RfbmFtZSIgLi4uPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+
CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9
Ii4uLiIvPgorICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPgor
YGBgCisKKyAgKiBUaGUgcm9vdCBgPHRlc3RzdWl0ZXM+YCBlbGVtZW50IGNvcnJlc3BvbmRzIHRv
IHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFtLgorICAqIGA8dGVzdHN1aXRlPmAgZWxlbWVudHMgY29y
cmVzcG9uZCB0byBHb29nbGUgVGVzdCB0ZXN0IGNhc2VzLgorICAqIGA8dGVzdGNhc2U+YCBlbGVt
ZW50cyBjb3JyZXNwb25kIHRvIEdvb2dsZSBUZXN0IHRlc3QgZnVuY3Rpb25zLgorCitGb3IgaW5z
dGFuY2UsIHRoZSBmb2xsb3dpbmcgcHJvZ3JhbQorCitgYGAKK1RFU1QoTWF0aFRlc3QsIEFkZGl0
aW9uKSB7IC4uLiB9CitURVNUKE1hdGhUZXN0LCBTdWJ0cmFjdGlvbikgeyAuLi4gfQorVEVTVChM
b2dpY1Rlc3QsIE5vbkNvbnRyYWRpY3Rpb24pIHsgLi4uIH0KK2BgYAorCitjb3VsZCBnZW5lcmF0
ZSB0aGlzIHJlcG9ydDoKKworYGBgCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYt
OCI/PgorPHRlc3RzdWl0ZXMgdGVzdHM9IjMiIGZhaWx1cmVzPSIxIiBlcnJvcnM9IjAiIHRpbWU9
IjM1IiBuYW1lPSJBbGxUZXN0cyI+CisgIDx0ZXN0c3VpdGUgbmFtZT0iTWF0aFRlc3QiIHRlc3Rz
PSIyIiBmYWlsdXJlcz0iMSIgZXJyb3JzPSIwIiB0aW1lPSIxNSI+CisgICAgPHRlc3RjYXNlIG5h
bWU9IkFkZGl0aW9uIiBzdGF0dXM9InJ1biIgdGltZT0iNyIgY2xhc3NuYW1lPSIiPgorICAgICAg
PGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IGFkZCgxLCAxKSYjeDBBOyBBY3R1YWw6IDMmI3gw
QTtFeHBlY3RlZDogMiIgdHlwZT0iIi8+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBv
ZjogYWRkKDEsIC0xKSYjeDBBOyBBY3R1YWw6IDEmI3gwQTtFeHBlY3RlZDogMCIgdHlwZT0iIi8+
CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8dGVzdGNhc2UgbmFtZT0iU3VidHJhY3Rpb24iIHN0YXR1
cz0icnVuIiB0aW1lPSI1IiBjbGFzc25hbWU9IiI+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0
c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iTG9naWNUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9
IjAiIGVycm9ycz0iMCIgdGltZT0iNSI+CisgICAgPHRlc3RjYXNlIG5hbWU9Ik5vbkNvbnRyYWRp
Y3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSI1IiBjbGFzc25hbWU9IiI+CisgICAgPC90ZXN0Y2Fz
ZT4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rlc3RzdWl0ZXM+CitgYGAKKworVGhpbmdzIHRvIG5vdGU6
CisKKyAgKiBUaGUgYHRlc3RzYCBhdHRyaWJ1dGUgb2YgYSBgPHRlc3RzdWl0ZXM+YCBvciBgPHRl
c3RzdWl0ZT5gIGVsZW1lbnQgdGVsbHMgaG93IG1hbnkgdGVzdCBmdW5jdGlvbnMgdGhlIEdvb2ds
ZSBUZXN0IHByb2dyYW0gb3IgdGVzdCBjYXNlIGNvbnRhaW5zLCB3aGlsZSB0aGUgYGZhaWx1cmVz
YCBhdHRyaWJ1dGUgdGVsbHMgaG93IG1hbnkgb2YgdGhlbSBmYWlsZWQuCisgICogVGhlIGB0aW1l
YCBhdHRyaWJ1dGUgZXhwcmVzc2VzIHRoZSBkdXJhdGlvbiBvZiB0aGUgdGVzdCwgdGVzdCBjYXNl
LCBvciBlbnRpcmUgdGVzdCBwcm9ncmFtIGluIG1pbGxpc2Vjb25kcy4KKyAgKiBFYWNoIGA8ZmFp
bHVyZT5gIGVsZW1lbnQgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgZmFpbGVkIEdvb2dsZSBUZXN0
IGFzc2VydGlvbi4KKyAgKiBTb21lIEpVbml0IGNvbmNlcHRzIGRvbid0IGFwcGx5IHRvIEdvb2ds
ZSBUZXN0LCB5ZXQgd2UgaGF2ZSB0byBjb25mb3JtIHRvIHRoZSBEVEQuIFRoZXJlZm9yZSB5b3Un
bGwgc2VlIHNvbWUgZHVtbXkgZWxlbWVudHMgYW5kIGF0dHJpYnV0ZXMgaW4gdGhlIHJlcG9ydC4g
WW91IGNhbiBzYWZlbHkgaWdub3JlIHRoZXNlIHBhcnRzLgorCitfQXZhaWxhYmlsaXR5Ol8gTGlu
dXgsIFdpbmRvd3MsIE1hYy4KKworIyMgQ29udHJvbGxpbmcgSG93IEZhaWx1cmVzIEFyZSBSZXBv
cnRlZCAjIworCisjIyMgVHVybmluZyBBc3NlcnRpb24gRmFpbHVyZXMgaW50byBCcmVhay1Qb2lu
dHMgIyMjCisKK1doZW4gcnVubmluZyB0ZXN0IHByb2dyYW1zIHVuZGVyIGEgZGVidWdnZXIsIGl0
J3MgdmVyeSBjb252ZW5pZW50IGlmIHRoZQorZGVidWdnZXIgY2FuIGNhdGNoIGFuIGFzc2VydGlv
biBmYWlsdXJlIGFuZCBhdXRvbWF0aWNhbGx5IGRyb3AgaW50byBpbnRlcmFjdGl2ZQorbW9kZS4g
R29vZ2xlIFRlc3QncyBfYnJlYWstb24tZmFpbHVyZV8gbW9kZSBzdXBwb3J0cyB0aGlzIGJlaGF2
aW9yLgorCitUbyBlbmFibGUgaXQsIHNldCB0aGUgYEdURVNUX0JSRUFLX09OX0ZBSUxVUkVgIGVu
dmlyb25tZW50IHZhcmlhYmxlIHRvIGEgdmFsdWUKK290aGVyIHRoYW4gYDBgIC4gQWx0ZXJuYXRp
dmVseSwgeW91IGNhbiB1c2UgdGhlIGAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVgCitjb21tYW5k
IGxpbmUgZmxhZy4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMj
IyBEaXNhYmxpbmcgQ2F0Y2hpbmcgVGVzdC1UaHJvd24gRXhjZXB0aW9ucyAjIyMKKworR29vZ2xl
IFRlc3QgY2FuIGJlIHVzZWQgZWl0aGVyIHdpdGggb3Igd2l0aG91dCBleGNlcHRpb25zIGVuYWJs
ZWQuICBJZgorYSB0ZXN0IHRocm93cyBhIEMrKyBleGNlcHRpb24gb3IgKG9uIFdpbmRvd3MpIGEg
c3RydWN0dXJlZCBleGNlcHRpb24KKyhTRUgpLCBieSBkZWZhdWx0IEdvb2dsZSBUZXN0IGNhdGNo
ZXMgaXQsIHJlcG9ydHMgaXQgYXMgYSB0ZXN0CitmYWlsdXJlLCBhbmQgY29udGludWVzIHdpdGgg
dGhlIG5leHQgdGVzdCBtZXRob2QuICBUaGlzIG1heGltaXplcyB0aGUKK2NvdmVyYWdlIG9mIGEg
dGVzdCBydW4uICBBbHNvLCBvbiBXaW5kb3dzIGFuIHVuY2F1Z2h0IGV4Y2VwdGlvbiB3aWxsCitj
YXVzZSBhIHBvcC11cCB3aW5kb3csIHNvIGNhdGNoaW5nIHRoZSBleGNlcHRpb25zIGFsbG93cyB5
b3UgdG8gcnVuCit0aGUgdGVzdHMgYXV0b21hdGljYWxseS4KKworV2hlbiBkZWJ1Z2dpbmcgdGhl
IHRlc3QgZmFpbHVyZXMsIGhvd2V2ZXIsIHlvdSBtYXkgaW5zdGVhZCB3YW50IHRoZQorZXhjZXB0
aW9ucyB0byBiZSBoYW5kbGVkIGJ5IHRoZSBkZWJ1Z2dlciwgc3VjaCB0aGF0IHlvdSBjYW4gZXhh
bWluZQordGhlIGNhbGwgc3RhY2sgd2hlbiBhbiBleGNlcHRpb24gaXMgdGhyb3duLiAgVG8gYWNo
aWV2ZSB0aGF0LCBzZXQgdGhlCitgR1RFU1RfQ0FUQ0hfRVhDRVBUSU9OU2AgZW52aXJvbm1lbnQg
dmFyaWFibGUgdG8gYDBgLCBvciB1c2UgdGhlCitgLS1ndGVzdF9jYXRjaF9leGNlcHRpb25zPTBg
IGZsYWcgd2hlbiBydW5uaW5nIHRoZSB0ZXN0cy4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgs
IFdpbmRvd3MsIE1hYy4KKworIyMjIExldHRpbmcgQW5vdGhlciBUZXN0aW5nIEZyYW1ld29yayBE
cml2ZSAjIyMKKworSWYgeW91IHdvcmsgb24gYSBwcm9qZWN0IHRoYXQgaGFzIGFscmVhZHkgYmVl
biB1c2luZyBhbm90aGVyIHRlc3RpbmcKK2ZyYW1ld29yayBhbmQgaXMgbm90IHJlYWR5IHRvIGNv
bXBsZXRlbHkgc3dpdGNoIHRvIEdvb2dsZSBUZXN0IHlldCwKK3lvdSBjYW4gZ2V0IG11Y2ggb2Yg
R29vZ2xlIFRlc3QncyBiZW5lZml0IGJ5IHVzaW5nIGl0cyBhc3NlcnRpb25zIGluCit5b3VyIGV4
aXN0aW5nIHRlc3RzLiAgSnVzdCBjaGFuZ2UgeW91ciBgbWFpbigpYCBmdW5jdGlvbiB0byBsb29r
CitsaWtlOgorCitgYGAKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHRocm93X29uX2Zh
aWx1cmUpID0gdHJ1ZTsKKyAgLy8gSW1wb3J0YW50OiBHb29nbGUgVGVzdCBtdXN0IGJlIGluaXRp
YWxpemVkLgorICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICAu
Li4gd2hhdGV2ZXIgeW91ciBleGlzdGluZyB0ZXN0aW5nIGZyYW1ld29yayByZXF1aXJlcyAuLi4K
K30KK2BgYAorCitXaXRoIHRoYXQsIHlvdSBjYW4gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMg
aW4gYWRkaXRpb24gdG8gdGhlCituYXRpdmUgYXNzZXJ0aW9ucyB5b3VyIHRlc3RpbmcgZnJhbWV3
b3JrIHByb3ZpZGVzLCBmb3IgZXhhbXBsZToKKworYGBgCit2b2lkIFRlc3RGb29Eb2VzQmFyKCkg
eworICBGb28gZm9vOworICBFWFBFQ1RfTEUoZm9vLkJhcigxKSwgMTAwKTsgICAgIC8vIEEgR29v
Z2xlIFRlc3QgYXNzZXJ0aW9uLgorICBDUFBVTklUX0FTU0VSVChmb28uSXNFbXB0eSgpKTsgIC8v
IEEgbmF0aXZlIGFzc2VydGlvbi4KK30KK2BgYAorCitJZiBhIEdvb2dsZSBUZXN0IGFzc2VydGlv
biBmYWlscywgaXQgd2lsbCBwcmludCBhbiBlcnJvciBtZXNzYWdlIGFuZAordGhyb3cgYW4gZXhj
ZXB0aW9uLCB3aGljaCB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBmYWlsdXJlIGJ5IHlvdXIgaG9zdAor
dGVzdGluZyBmcmFtZXdvcmsuICBJZiB5b3UgY29tcGlsZSB5b3VyIGNvZGUgd2l0aCBleGNlcHRp
b25zIGRpc2FibGVkLAorYSBmYWlsZWQgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIHdpbGwgaW5zdGVh
ZCBleGl0IHlvdXIgcHJvZ3JhbSB3aXRoIGEKK25vbi16ZXJvIGNvZGUsIHdoaWNoIHdpbGwgYWxz
byBzaWduYWwgYSB0ZXN0IGZhaWx1cmUgdG8geW91ciB0ZXN0CitydW5uZXIuCisKK0lmIHlvdSBk
b24ndCB3cml0ZSBgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1
ZTtgIGluCit5b3VyIGBtYWluKClgLCB5b3UgY2FuIGFsdGVybmF0aXZlbHkgZW5hYmxlIHRoaXMg
ZmVhdHVyZSBieSBzcGVjaWZ5aW5nCit0aGUgYC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZWAgZmxh
ZyBvbiB0aGUgY29tbWFuZC1saW5lIG9yIHNldHRpbmcgdGhlCitgR1RFU1RfVEhST1dfT05fRkFJ
TFVSRWAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSBub24temVybyB2YWx1ZS4KKworRGVhdGgg
dGVzdHMgYXJlIF9ub3RfIHN1cHBvcnRlZCB3aGVuIG90aGVyIHRlc3QgZnJhbWV3b3JrIGlzIHVz
ZWQgdG8gb3JnYW5pemUgdGVzdHMuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywg
TWFjOyBzaW5jZSB2MS4zLjAuCisKKyMjIERpc3RyaWJ1dGluZyBUZXN0IEZ1bmN0aW9ucyB0byBN
dWx0aXBsZSBNYWNoaW5lcyAjIworCitJZiB5b3UgaGF2ZSBtb3JlIHRoYW4gb25lIG1hY2hpbmUg
eW91IGNhbiB1c2UgdG8gcnVuIGEgdGVzdCBwcm9ncmFtLAoreW91IG1pZ2h0IHdhbnQgdG8gcnVu
IHRoZSB0ZXN0IGZ1bmN0aW9ucyBpbiBwYXJhbGxlbCBhbmQgZ2V0IHRoZQorcmVzdWx0IGZhc3Rl
ci4gIFdlIGNhbGwgdGhpcyB0ZWNobmlxdWUgX3NoYXJkaW5nXywgd2hlcmUgZWFjaCBtYWNoaW5l
CitpcyBjYWxsZWQgYSBfc2hhcmRfLgorCitHb29nbGUgVGVzdCBpcyBjb21wYXRpYmxlIHdpdGgg
dGVzdCBzaGFyZGluZy4gIFRvIHRha2UgYWR2YW50YWdlIG9mCit0aGlzIGZlYXR1cmUsIHlvdXIg
dGVzdCBydW5uZXIgKG5vdCBwYXJ0IG9mIEdvb2dsZSBUZXN0KSBuZWVkcyB0byBkbwordGhlIGZv
bGxvd2luZzoKKworICAxLiBBbGxvY2F0ZSBhIG51bWJlciBvZiBtYWNoaW5lcyAoc2hhcmRzKSB0
byBydW4gdGhlIHRlc3RzLgorICAxLiBPbiBlYWNoIHNoYXJkLCBzZXQgdGhlIGBHVEVTVF9UT1RB
TF9TSEFSRFNgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2hh
cmRzLiAgSXQgbXVzdCBiZSB0aGUgc2FtZSBmb3IgYWxsIHNoYXJkcy4KKyAgMS4gT24gZWFjaCBz
aGFyZCwgc2V0IHRoZSBgR1RFU1RfU0hBUkRfSU5ERVhgIGVudmlyb25tZW50IHZhcmlhYmxlIHRv
IHRoZSBpbmRleCBvZiB0aGUgc2hhcmQuICBEaWZmZXJlbnQgc2hhcmRzIG11c3QgYmUgYXNzaWdu
ZWQgZGlmZmVyZW50IGluZGljZXMsIHdoaWNoIG11c3QgYmUgaW4gdGhlIHJhbmdlIGBbMCwgR1RF
U1RfVE9UQUxfU0hBUkRTIC0gMV1gLgorICAxLiBSdW4gdGhlIHNhbWUgdGVzdCBwcm9ncmFtIG9u
IGFsbCBzaGFyZHMuICBXaGVuIEdvb2dsZSBUZXN0IHNlZXMgdGhlIGFib3ZlIHR3byBlbnZpcm9u
bWVudCB2YXJpYWJsZXMsIGl0IHdpbGwgc2VsZWN0IGEgc3Vic2V0IG9mIHRoZSB0ZXN0IGZ1bmN0
aW9ucyB0byBydW4uICBBY3Jvc3MgYWxsIHNoYXJkcywgZWFjaCB0ZXN0IGZ1bmN0aW9uIGluIHRo
ZSBwcm9ncmFtIHdpbGwgYmUgcnVuIGV4YWN0bHkgb25jZS4KKyAgMS4gV2FpdCBmb3IgYWxsIHNo
YXJkcyB0byBmaW5pc2gsIHRoZW4gY29sbGVjdCBhbmQgcmVwb3J0IHRoZSByZXN1bHRzLgorCitZ
b3VyIHByb2plY3QgbWF5IGhhdmUgdGVzdHMgdGhhdCB3ZXJlIHdyaXR0ZW4gd2l0aG91dCBHb29n
bGUgVGVzdCBhbmQKK3RodXMgZG9uJ3QgdW5kZXJzdGFuZCB0aGlzIHByb3RvY29sLiAgSW4gb3Jk
ZXIgZm9yIHlvdXIgdGVzdCBydW5uZXIgdG8KK2ZpZ3VyZSBvdXQgd2hpY2ggdGVzdCBzdXBwb3J0
cyBzaGFyZGluZywgaXQgY2FuIHNldCB0aGUgZW52aXJvbm1lbnQKK3ZhcmlhYmxlIGBHVEVTVF9T
SEFSRF9TVEFUVVNfRklMRWAgdG8gYSBub24tZXhpc3RlbnQgZmlsZSBwYXRoLiAgSWYgYQordGVz
dCBwcm9ncmFtIHN1cHBvcnRzIHNoYXJkaW5nLCBpdCB3aWxsIGNyZWF0ZSB0aGlzIGZpbGUgdG8K
K2Fja25vd2xlZGdlIHRoZSBmYWN0ICh0aGUgYWN0dWFsIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGFy
ZSBub3QKK2ltcG9ydGFudCBhdCB0aGlzIHRpbWU7IGFsdGhvdWdoIHdlIG1heSBzdGljayBzb21l
IHVzZWZ1bCBpbmZvcm1hdGlvbgoraW4gaXQgaW4gdGhlIGZ1dHVyZS4pOyBvdGhlcndpc2UgaXQg
d2lsbCBub3QgY3JlYXRlIGl0LgorCitIZXJlJ3MgYW4gZXhhbXBsZSB0byBtYWtlIGl0IGNsZWFy
LiAgU3VwcG9zZSB5b3UgaGF2ZSBhIHRlc3QgcHJvZ3JhbQorYGZvb190ZXN0YCB0aGF0IGNvbnRh
aW5zIHRoZSBmb2xsb3dpbmcgNSB0ZXN0IGZ1bmN0aW9uczoKK2BgYAorVEVTVChBLCBWKQorVEVT
VChBLCBXKQorVEVTVChCLCBYKQorVEVTVChCLCBZKQorVEVTVChCLCBaKQorYGBgCithbmQgeW91
IGhhdmUgMyBtYWNoaW5lcyBhdCB5b3VyIGRpc3Bvc2FsLiAgVG8gcnVuIHRoZSB0ZXN0IGZ1bmN0
aW9ucyBpbgorcGFyYWxsZWwsIHlvdSB3b3VsZCBzZXQgYEdURVNUX1RPVEFMX1NIQVJEU2AgdG8g
MyBvbiBhbGwgbWFjaGluZXMsIGFuZAorc2V0IGBHVEVTVF9TSEFSRF9JTkRFWGAgdG8gMCwgMSwg
YW5kIDIgb24gdGhlIG1hY2hpbmVzIHJlc3BlY3RpdmVseS4KK1RoZW4geW91IHdvdWxkIHJ1biB0
aGUgc2FtZSBgZm9vX3Rlc3RgIG9uIGVhY2ggbWFjaGluZS4KKworR29vZ2xlIFRlc3QgcmVzZXJ2
ZXMgdGhlIHJpZ2h0IHRvIGNoYW5nZSBob3cgdGhlIHdvcmsgaXMgZGlzdHJpYnV0ZWQKK2Fjcm9z
cyB0aGUgc2hhcmRzLCBidXQgaGVyZSdzIG9uZSBwb3NzaWJsZSBzY2VuYXJpbzoKKworICAqIE1h
Y2hpbmUgIzAgcnVucyBgQS5WYCBhbmQgYEIuWGAuCisgICogTWFjaGluZSAjMSBydW5zIGBBLldg
IGFuZCBgQi5ZYC4KKyAgKiBNYWNoaW5lICMyIHJ1bnMgYEIuWmAuCisKK19BdmFpbGFiaWxpdHk6
XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuMy4wLgorCisjIEZ1c2luZyBH
b29nbGUgVGVzdCBTb3VyY2UgRmlsZXMgIworCitHb29nbGUgVGVzdCdzIGltcGxlbWVudGF0aW9u
IGNvbnNpc3RzIG9mIH4zMCBmaWxlcyAoZXhjbHVkaW5nIGl0cyBvd24KK3Rlc3RzKS4gIFNvbWV0
aW1lcyB5b3UgbWF5IHdhbnQgdGhlbSB0byBiZSBwYWNrYWdlZCB1cCBpbiB0d28gZmlsZXMgKGEK
K2AuaGAgYW5kIGEgYC5jY2ApIGluc3RlYWQsIHN1Y2ggdGhhdCB5b3UgY2FuIGVhc2lseSBjb3B5
IHRoZW0gdG8gYSBuZXcKK21hY2hpbmUgYW5kIHN0YXJ0IGhhY2tpbmcgdGhlcmUuICBGb3IgdGhp
cyB3ZSBwcm92aWRlIGFuIGV4cGVyaW1lbnRhbAorUHl0aG9uIHNjcmlwdCBgZnVzZV9ndGVzdF9m
aWxlcy5weWAgaW4gdGhlIGBzY3JpcHRzL2AgZGlyZWN0b3J5IChzaW5jZSByZWxlYXNlIDEuMy4w
KS4KK0Fzc3VtaW5nIHlvdSBoYXZlIFB5dGhvbiAyLjQgb3IgYWJvdmUgaW5zdGFsbGVkIG9uIHlv
dXIgbWFjaGluZSwganVzdAorZ28gdG8gdGhhdCBkaXJlY3RvcnkgYW5kIHJ1bgorYGBgCitweXRo
b24gZnVzZV9ndGVzdF9maWxlcy5weSBPVVRQVVRfRElSCitgYGAKKworYW5kIHlvdSBzaG91bGQg
c2VlIGFuIGBPVVRQVVRfRElSYCBkaXJlY3RvcnkgYmVpbmcgY3JlYXRlZCB3aXRoIGZpbGVzCitg
Z3Rlc3QvZ3Rlc3QuaGAgYW5kIGBndGVzdC9ndGVzdC1hbGwuY2NgIGluIGl0LiAgVGhlc2UgZmls
ZXMgY29udGFpbgorZXZlcnl0aGluZyB5b3UgbmVlZCB0byB1c2UgR29vZ2xlIFRlc3QuICBKdXN0
IGNvcHkgdGhlbSB0byBhbnl3aGVyZQoreW91IHdhbnQgYW5kIHlvdSBhcmUgcmVhZHkgdG8gd3Jp
dGUgdGVzdHMuICBZb3UgY2FuIHVzZSB0aGUKK1tzY3JpcHRzL3Rlc3QvTWFrZWZpbGVdKC4uL3Nj
cmlwdHMvdGVzdC9NYWtlZmlsZSkKK2ZpbGUgYXMgYW4gZXhhbXBsZSBvbiBob3cgdG8gY29tcGls
ZSB5b3VyIHRlc3RzIGFnYWluc3QgdGhlbS4KKworIyBXaGVyZSB0byBHbyBmcm9tIEhlcmUgIwor
CitDb25ncmF0dWxhdGlvbnMhIFlvdSd2ZSBub3cgbGVhcm5lZCBtb3JlIGFkdmFuY2VkIEdvb2ds
ZSBUZXN0IHRvb2xzIGFuZCBhcmUKK3JlYWR5IHRvIHRhY2tsZSBtb3JlIGNvbXBsZXggdGVzdGlu
ZyB0YXNrcy4gSWYgeW91IHdhbnQgdG8gZGl2ZSBldmVuIGRlZXBlciwgeW91CitjYW4gcmVhZCB0
aGUgW0ZyZXF1ZW50bHktQXNrZWQgUXVlc3Rpb25zXShWMV83X0ZBUS5tZCkuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzdfRG9jdW1lbnRhdGlvbi5tZCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfN19Eb2N1bWVudGF0aW9uLm1kCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI4MjY5N2E1MGI5YWFhZDFkMDRmYjRhZTNmZjkwY2E3MTA0MmJhYTMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzdfRG9jdW1lbnRhdGlvbi5t
ZApAQCAtMCwwICsxLDE0IEBACitUaGlzIHBhZ2UgbGlzdHMgYWxsIGRvY3VtZW50YXRpb24gd2lr
aSBwYWdlcyBmb3IgR29vZ2xlIFRlc3QgKioodGhlIFNWTiB0cnVuayB2ZXJzaW9uKSoqCistLSAq
KmlmIHlvdSB1c2UgYSByZWxlYXNlZCB2ZXJzaW9uIG9mIEdvb2dsZSBUZXN0LCBwbGVhc2UgcmVh
ZCB0aGUKK2RvY3VtZW50YXRpb24gZm9yIHRoYXQgc3BlY2lmaWMgdmVyc2lvbiBpbnN0ZWFkLioq
CisKKyAgKiBbUHJpbWVyXShWMV83X1ByaW1lci5tZCkgLS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJl
IG5ldyB0byBHb29nbGUgVGVzdC4KKyAgKiBbU2FtcGxlc10oVjFfN19TYW1wbGVzLm1kKSAtLSBs
ZWFybiBmcm9tIGV4YW1wbGVzLgorICAqIFtBZHZhbmNlZEd1aWRlXShWMV83X0FkdmFuY2VkR3Vp
ZGUubWQpIC0tIGxlYXJuIG1vcmUgYWJvdXQgR29vZ2xlIFRlc3QuCisgICogW1hjb2RlR3VpZGVd
KFYxXzdfWGNvZGVHdWlkZS5tZCkgLS0gaG93IHRvIHVzZSBHb29nbGUgVGVzdCBpbiBYY29kZSBv
biBNYWMuCisgICogW0ZyZXF1ZW50bHktQXNrZWQgUXVlc3Rpb25zXShWMV83X0ZBUS5tZCkgLS0g
Y2hlY2sgaGVyZSBiZWZvcmUgYXNraW5nIGEgcXVlc3Rpb24gb24gdGhlIG1haWxpbmcgbGlzdC4K
KworVG8gY29udHJpYnV0ZSBjb2RlIHRvIEdvb2dsZSBUZXN0LCByZWFkOgorCisgICogW0Rldkd1
aWRlXShEZXZHdWlkZS5tZCkgLS0gcmVhZCB0aGlzIF9iZWZvcmVfIHdyaXRpbmcgeW91ciBmaXJz
dCBwYXRjaC4KKyAgKiBbUHVtcE1hbnVhbF0oVjFfN19QdW1wTWFudWFsLm1kKSAtLSBob3cgd2Ug
Z2VuZXJhdGUgc29tZSBvZiBHb29nbGUgVGVzdCdzIHNvdXJjZSBmaWxlcy4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2Nz
L1YxXzdfRkFRLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV83X0ZBUS5tZApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zZGQ5MTRkY2YxNmFlMzQyMDhlMDkwOGQxNmNiOTMzMjQxMzIwNmYwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV83X0ZBUS5tZApA
QCAtMCwwICsxLDEwODIgQEAKKworCitJZiB5b3UgY2Fubm90IGZpbmQgdGhlIGFuc3dlciB0byB5
b3VyIHF1ZXN0aW9uIGhlcmUsIGFuZCB5b3UgaGF2ZSByZWFkCitbUHJpbWVyXShWMV83X1ByaW1l
ci5tZCkgYW5kIFtBZHZhbmNlZEd1aWRlXShWMV83X0FkdmFuY2VkR3VpZGUubWQpLCBzZW5kIGl0
IHRvCitnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20uCisKKyMjIFdoeSBzaG91
bGQgSSB1c2UgR29vZ2xlIFRlc3QgaW5zdGVhZCBvZiBteSBmYXZvcml0ZSBDKysgdGVzdGluZyBm
cmFtZXdvcms/ICMjCisKK0ZpcnN0LCBsZXQgdXMgc2F5IGNsZWFybHkgdGhhdCB3ZSBkb24ndCB3
YW50IHRvIGdldCBpbnRvIHRoZSBkZWJhdGUgb2YKK3doaWNoIEMrKyB0ZXN0aW5nIGZyYW1ld29y
ayBpcyAqKnRoZSBiZXN0KiouICBUaGVyZSBleGlzdCBtYW55IGZpbmUKK2ZyYW1ld29ya3MgZm9y
IHdyaXRpbmcgQysrIHRlc3RzLCBhbmQgd2UgaGF2ZSB0cmVtZW5kb3VzIHJlc3BlY3QgZm9yCit0
aGUgZGV2ZWxvcGVycyBhbmQgdXNlcnMgb2YgdGhlbS4gIFdlIGRvbid0IHRoaW5rIHRoZXJlIGlz
IChvciB3aWxsCitiZSkgYSBzaW5nbGUgYmVzdCBmcmFtZXdvcmsgLSB5b3UgaGF2ZSB0byBwaWNr
IHRoZSByaWdodCB0b29sIGZvciB0aGUKK3BhcnRpY3VsYXIgdGFzayB5b3UgYXJlIHRhY2tsaW5n
LgorCitXZSBjcmVhdGVkIEdvb2dsZSBUZXN0IGJlY2F1c2Ugd2UgY291bGRuJ3QgZmluZCB0aGUg
cmlnaHQgY29tYmluYXRpb24KK29mIGZlYXR1cmVzIGFuZCBjb252ZW5pZW5jZXMgaW4gYW4gZXhp
c3RpbmcgZnJhbWV3b3JrIHRvIHNhdGlzZnkgX291cl8KK25lZWRzLiAgVGhlIGZvbGxvd2luZyBp
cyBhIGxpc3Qgb2YgdGhpbmdzIHRoYXQgX3dlXyBsaWtlIGFib3V0IEdvb2dsZQorVGVzdC4gIFdl
IGRvbid0IGNsYWltIHRoZW0gdG8gYmUgdW5pcXVlIHRvIEdvb2dsZSBUZXN0IC0gcmF0aGVyLCB0
aGUKK2NvbWJpbmF0aW9uIG9mIHRoZW0gbWFrZXMgR29vZ2xlIFRlc3QgdGhlIGNob2ljZSBmb3Ig
dXMuICBXZSBob3BlIHRoaXMKK2xpc3QgY2FuIGhlbHAgeW91IGRlY2lkZSB3aGV0aGVyIGl0IGlz
IGZvciB5b3UgdG9vLgorCisgICogR29vZ2xlIFRlc3QgaXMgZGVzaWduZWQgdG8gYmUgcG9ydGFi
bGU6IGl0IGRvZXNuJ3QgcmVxdWlyZSBleGNlcHRpb25zIG9yIFJUVEk7IGl0IHdvcmtzIGFyb3Vu
ZCB2YXJpb3VzIGJ1Z3MgaW4gdmFyaW91cyBjb21waWxlcnMgYW5kIGVudmlyb25tZW50czsgZXRj
LiAgQXMgYSByZXN1bHQsIGl0IHdvcmtzIG9uIExpbnV4LCBNYWMgT1MgWCwgV2luZG93cyBhbmQg
c2V2ZXJhbCBlbWJlZGRlZCBvcGVyYXRpbmcgc3lzdGVtcy4KKyAgKiBOb25mYXRhbCBhc3NlcnRp
b25zIChgRVhQRUNUXypgKSBoYXZlIHByb3ZlbiB0byBiZSBncmVhdCB0aW1lIHNhdmVycywgYXMg
dGhleSBhbGxvdyBhIHRlc3QgdG8gcmVwb3J0IG11bHRpcGxlIGZhaWx1cmVzIGluIGEgc2luZ2xl
IGVkaXQtY29tcGlsZS10ZXN0IGN5Y2xlLgorICAqIEl0J3MgZWFzeSB0byB3cml0ZSBhc3NlcnRp
b25zIHRoYXQgZ2VuZXJhdGUgaW5mb3JtYXRpdmUgbWVzc2FnZXM6IHlvdSBqdXN0IHVzZSB0aGUg
c3RyZWFtIHN5bnRheCB0byBhcHBlbmQgYW55IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24sIGUuZy4g
YEFTU0VSVF9FUSg1LCBGb28oaSkpIDw8ICIgd2hlcmUgaSA9ICIgPDwgaTtgLiAgSXQgZG9lc24n
dCByZXF1aXJlIGEgbmV3IHNldCBvZiBtYWNyb3Mgb3Igc3BlY2lhbCBmdW5jdGlvbnMuCisgICog
R29vZ2xlIFRlc3QgYXV0b21hdGljYWxseSBkZXRlY3RzIHlvdXIgdGVzdHMgYW5kIGRvZXNuJ3Qg
cmVxdWlyZSB5b3UgdG8gZW51bWVyYXRlIHRoZW0gaW4gb3JkZXIgdG8gcnVuIHRoZW0uCisgICog
RGVhdGggdGVzdHMgYXJlIHByZXR0eSBoYW5keSBmb3IgZW5zdXJpbmcgdGhhdCB5b3VyIGFzc2Vy
dHMgaW4gcHJvZHVjdGlvbiBjb2RlIGFyZSB0cmlnZ2VyZWQgYnkgdGhlIHJpZ2h0IGNvbmRpdGlv
bnMuCisgICogYFNDT1BFRF9UUkFDRWAgaGVscHMgeW91IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQg
b2YgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgd2hlbiBpdCBjb21lcyBmcm9tIGluc2lkZSBhIHN1Yi1y
b3V0aW5lIG9yIGxvb3AuCisgICogWW91IGNhbiBkZWNpZGUgd2hpY2ggdGVzdHMgdG8gcnVuIHVz
aW5nIG5hbWUgcGF0dGVybnMuICBUaGlzIHNhdmVzIHRpbWUgd2hlbiB5b3Ugd2FudCB0byBxdWlj
a2x5IHJlcHJvZHVjZSBhIHRlc3QgZmFpbHVyZS4KKyAgKiBHb29nbGUgVGVzdCBjYW4gZ2VuZXJh
dGUgWE1MIHRlc3QgcmVzdWx0IHJlcG9ydHMgdGhhdCBjYW4gYmUgcGFyc2VkIGJ5IHBvcHVsYXIg
Y29udGludW91cyBidWlsZCBzeXN0ZW0gbGlrZSBIdWRzb24uCisgICogU2ltcGxlIHRoaW5ncyBh
cmUgZWFzeSBpbiBHb29nbGUgVGVzdCwgd2hpbGUgaGFyZCB0aGluZ3MgYXJlIHBvc3NpYmxlOiBp
biBhZGRpdGlvbiB0byBhZHZhbmNlZCBmZWF0dXJlcyBsaWtlIFtnbG9iYWwgdGVzdCBlbnZpcm9u
bWVudHNdKFYxXzdfQWR2YW5jZWRHdWlkZS5tZCNnbG9iYWwtc2V0LXVwLWFuZC10ZWFyLWRvd24p
IGFuZCB0ZXN0cyBwYXJhbWV0ZXJpemVkIGJ5IFt2YWx1ZXNdKFYxXzdfQWR2YW5jZWRHdWlkZS5t
ZCN2YWx1ZS1wYXJhbWV0ZXJpemVkLXRlc3RzKSBvciBbdHlwZXNdKFYxXzdfQWR2YW5jZWRHdWlk
ZS5tZCN0eXBlZC10ZXN0cyksIEdvb2dsZSBUZXN0IHN1cHBvcnRzIHZhcmlvdXMgd2F5cyBmb3Ig
dGhlIHVzZXIgdG8gZXh0ZW5kIHRoZSBmcmFtZXdvcmsgLS0gaWYgR29vZ2xlIFRlc3QgZG9lc24n
dCBkbyBzb21ldGhpbmcgb3V0IG9mIHRoZSBib3gsIGNoYW5jZXMgYXJlIHRoYXQgYSB1c2VyIGNh
biBpbXBsZW1lbnQgdGhlIGZlYXR1cmUgdXNpbmcgR29vZ2xlIFRlc3QncyBwdWJsaWMgQVBJLCB3
aXRob3V0IGNoYW5naW5nIEdvb2dsZSBUZXN0IGl0c2VsZi4gIEluIHBhcnRpY3VsYXIsIHlvdSBj
YW46CisgICAgKiBleHBhbmQgeW91ciB0ZXN0aW5nIHZvY2FidWxhcnkgYnkgZGVmaW5pbmcgW2N1
c3RvbSBwcmVkaWNhdGVzXShWMV83X0FkdmFuY2VkR3VpZGUubWQjcHJlZGljYXRlLWFzc2VydGlv
bnMtZm9yLWJldHRlci1lcnJvci1tZXNzYWdlcyksCisgICAgKiB0ZWFjaCBHb29nbGUgVGVzdCBo
b3cgdG8gW3ByaW50IHlvdXIgdHlwZXNdKFYxXzdfQWR2YW5jZWRHdWlkZS5tZCN0ZWFjaGluZy1n
b29nbGUtdGVzdC1ob3ctdG8tcHJpbnQteW91ci12YWx1ZXMpLAorICAgICogZGVmaW5lIHlvdXIg
b3duIHRlc3RpbmcgbWFjcm9zIG9yIHV0aWxpdGllcyBhbmQgdmVyaWZ5IHRoZW0gdXNpbmcgR29v
Z2xlIFRlc3QncyBbU2VydmljZSBQcm92aWRlciBJbnRlcmZhY2VdKFYxXzdfQWR2YW5jZWRHdWlk
ZS5tZCNjYXRjaGluZy1mYWlsdXJlcyksIGFuZAorICAgICogcmVmbGVjdCBvbiB0aGUgdGVzdCBj
YXNlcyBvciBjaGFuZ2UgdGhlIHRlc3Qgb3V0cHV0IGZvcm1hdCBieSBpbnRlcmNlcHRpbmcgdGhl
IFt0ZXN0IGV2ZW50c10oVjFfN19BZHZhbmNlZEd1aWRlLm1kI2V4dGVuZGluZy1nb29nbGUtdGVz
dC1ieS1oYW5kbGluZy10ZXN0LWV2ZW50cykuCisKKyMjIEknbSBnZXR0aW5nIHdhcm5pbmdzIHdo
ZW4gY29tcGlsaW5nIEdvb2dsZSBUZXN0LiAgV291bGQgeW91IGZpeCB0aGVtPyAjIworCitXZSBz
dHJpdmUgdG8gbWluaW1pemUgY29tcGlsZXIgd2FybmluZ3MgR29vZ2xlIFRlc3QgZ2VuZXJhdGVz
LiAgQmVmb3JlIHJlbGVhc2luZyBhIG5ldyB2ZXJzaW9uLCB3ZSB0ZXN0IHRvIG1ha2Ugc3VyZSB0
aGF0IGl0IGRvZXNuJ3QgZ2VuZXJhdGUgd2FybmluZ3Mgd2hlbiBjb21waWxlZCB1c2luZyBpdHMg
Q01ha2Ugc2NyaXB0IG9uIFdpbmRvd3MsIExpbnV4LCBhbmQgTWFjIE9TLgorCitVbmZvcnR1bmF0
ZWx5LCB0aGlzIGRvZXNuJ3QgbWVhbiB5b3UgYXJlIGd1YXJhbnRlZWQgdG8gc2VlIG5vIHdhcm5p
bmdzIHdoZW4gY29tcGlsaW5nIEdvb2dsZSBUZXN0IGluIHlvdXIgZW52aXJvbm1lbnQ6CisKKyAg
KiBZb3UgbWF5IGJlIHVzaW5nIGEgZGlmZmVyZW50IGNvbXBpbGVyIGFzIHdlIHVzZSwgb3IgYSBk
aWZmZXJlbnQgdmVyc2lvbiBvZiB0aGUgc2FtZSBjb21waWxlci4gIFdlIGNhbm5vdCBwb3NzaWJs
eSB0ZXN0IGZvciBhbGwgY29tcGlsZXJzLgorICAqIFlvdSBtYXkgYmUgY29tcGlsaW5nIG9uIGEg
ZGlmZmVyZW50IHBsYXRmb3JtIGFzIHdlIGRvLgorICAqIFlvdXIgcHJvamVjdCBtYXkgYmUgdXNp
bmcgZGlmZmVyZW50IGNvbXBpbGVyIGZsYWdzIGFzIHdlIGRvLgorCitJdCBpcyBub3QgYWx3YXlz
IHBvc3NpYmxlIHRvIG1ha2UgR29vZ2xlIFRlc3Qgd2FybmluZy1mcmVlIGZvciBldmVyeW9uZS4g
IE9yLCBpdCBtYXkgbm90IGJlIGRlc2lyYWJsZSBpZiB0aGUgd2FybmluZyBpcyByYXJlbHkgZW5h
YmxlZCBhbmQgZml4aW5nIHRoZSB2aW9sYXRpb25zIG1ha2VzIHRoZSBjb2RlIG1vcmUgY29tcGxl
eC4KKworSWYgeW91IHNlZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZyBHb29nbGUgVGVzdCwgd2Ug
c3VnZ2VzdCB0aGF0IHlvdSB1c2UgdGhlIGAtaXN5c3RlbWAgZmxhZyAoYXNzdW1pbmcgeW91ciBh
cmUgdXNpbmcgR0NDKSB0byBtYXJrIEdvb2dsZSBUZXN0IGhlYWRlcnMgYXMgc3lzdGVtIGhlYWRl
cnMuICBUaGF0J2xsIHN1cHByZXNzIHdhcm5pbmdzIGZyb20gR29vZ2xlIFRlc3QgaGVhZGVycy4K
KworIyMgV2h5IHNob3VsZCBub3QgdGVzdCBjYXNlIG5hbWVzIGFuZCB0ZXN0IG5hbWVzIGNvbnRh
aW4gdW5kZXJzY29yZT8gIyMKKworVW5kZXJzY29yZSAoYF9gKSBpcyBzcGVjaWFsLCBhcyBDKysg
cmVzZXJ2ZXMgdGhlIGZvbGxvd2luZyB0byBiZSB1c2VkIGJ5Cit0aGUgY29tcGlsZXIgYW5kIHRo
ZSBzdGFuZGFyZCBsaWJyYXJ5OgorCisgIDEuIGFueSBpZGVudGlmaWVyIHRoYXQgc3RhcnRzIHdp
dGggYW4gYF9gIGZvbGxvd2VkIGJ5IGFuIHVwcGVyLWNhc2UgbGV0dGVyLCBhbmQKKyAgMS4gYW55
IGlkZW50aWZpZXIgdGhhdCBjb250YWluZXJzIHR3byBjb25zZWN1dGl2ZSB1bmRlcnNjb3JlcyAo
aS5lLiBgX19gKSBfYW55d2hlcmVfIGluIGl0cyBuYW1lLgorCitVc2VyIGNvZGUgaXMgX3Byb2hp
Yml0ZWRfIGZyb20gdXNpbmcgc3VjaCBpZGVudGlmaWVycy4KKworTm93IGxldCdzIGxvb2sgYXQg
d2hhdCB0aGlzIG1lYW5zIGZvciBgVEVTVGAgYW5kIGBURVNUX0ZgLgorCitDdXJyZW50bHkgYFRF
U1QoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSlgIGdlbmVyYXRlcyBhIGNsYXNzIG5hbWVkCitgVGVz
dENhc2VOYW1lX1Rlc3ROYW1lX1Rlc3RgLiAgV2hhdCBoYXBwZW5zIGlmIGBUZXN0Q2FzZU5hbWVg
IG9yIGBUZXN0TmFtZWAKK2NvbnRhaW5zIGBfYD8KKworICAxLiBJZiBgVGVzdENhc2VOYW1lYCBz
dGFydHMgd2l0aCBhbiBgX2AgZm9sbG93ZWQgYnkgYW4gdXBwZXItY2FzZSBsZXR0ZXIgKHNheSwg
YF9Gb29gKSwgd2UgZW5kIHVwIHdpdGggYF9Gb29fVGVzdE5hbWVfVGVzdGAsIHdoaWNoIGlzIHJl
c2VydmVkIGFuZCB0aHVzIGludmFsaWQuCisgIDEuIElmIGBUZXN0Q2FzZU5hbWVgIGVuZHMgd2l0
aCBhbiBgX2AgKHNheSwgYEZvb19gKSwgd2UgZ2V0IGBGb29fX1Rlc3ROYW1lX1Rlc3RgLCB3aGlj
aCBpcyBpbnZhbGlkLgorICAxLiBJZiBgVGVzdE5hbWVgIHN0YXJ0cyB3aXRoIGFuIGBfYCAoc2F5
LCBgX0JhcmApLCB3ZSBnZXQgYFRlc3RDYXNlTmFtZV9fQmFyX1Rlc3RgLCB3aGljaCBpcyBpbnZh
bGlkLgorICAxLiBJZiBgVGVzdE5hbWVgIGVuZHMgd2l0aCBhbiBgX2AgKHNheSwgYEJhcl9gKSwg
d2UgZ2V0IGBUZXN0Q2FzZU5hbWVfQmFyX19UZXN0YCwgd2hpY2ggaXMgaW52YWxpZC4KKworU28g
Y2xlYXJseSBgVGVzdENhc2VOYW1lYCBhbmQgYFRlc3ROYW1lYCBjYW5ub3Qgc3RhcnQgb3IgZW5k
IHdpdGggYF9gCisoQWN0dWFsbHksIGBUZXN0Q2FzZU5hbWVgIGNhbiBzdGFydCB3aXRoIGBfYCAt
LSBhcyBsb25nIGFzIHRoZSBgX2AgaXNuJ3QKK2ZvbGxvd2VkIGJ5IGFuIHVwcGVyLWNhc2UgbGV0
dGVyLiAgQnV0IHRoYXQncyBnZXR0aW5nIGNvbXBsaWNhdGVkLiAgU28KK2ZvciBzaW1wbGljaXR5
IHdlIGp1c3Qgc2F5IHRoYXQgaXQgY2Fubm90IHN0YXJ0IHdpdGggYF9gLikuCisKK0l0IG1heSBz
ZWVtIGZpbmUgZm9yIGBUZXN0Q2FzZU5hbWVgIGFuZCBgVGVzdE5hbWVgIHRvIGNvbnRhaW4gYF9g
IGluIHRoZQorbWlkZGxlLiAgSG93ZXZlciwgY29uc2lkZXIgdGhpczoKK2BgYAorVEVTVChUaW1l
LCBGbGllc19MaWtlX0FuX0Fycm93KSB7IC4uLiB9CitURVNUKFRpbWVfRmxpZXMsIExpa2VfQW5f
QXJyb3cpIHsgLi4uIH0KK2BgYAorCitOb3csIHRoZSB0d28gYFRFU1RgcyB3aWxsIGJvdGggZ2Vu
ZXJhdGUgdGhlIHNhbWUgY2xhc3MKKyhgVGltZV9GaWxlc19MaWtlX0FuX0Fycm93X1Rlc3RgKS4g
IFRoYXQncyBub3QgZ29vZC4KKworU28gZm9yIHNpbXBsaWNpdHksIHdlIGp1c3QgYXNrIHRoZSB1
c2VycyB0byBhdm9pZCBgX2AgaW4gYFRlc3RDYXNlTmFtZWAKK2FuZCBgVGVzdE5hbWVgLiAgVGhl
IHJ1bGUgaXMgbW9yZSBjb25zdHJhaW5pbmcgdGhhbiBuZWNlc3NhcnksIGJ1dCBpdCdzCitzaW1w
bGUgYW5kIGVhc3kgdG8gcmVtZW1iZXIuICBJdCBhbHNvIGdpdmVzIEdvb2dsZSBUZXN0IHNvbWUg
d2lnZ2xlCityb29tIGluIGNhc2UgaXRzIGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIGNoYW5nZSBp
biB0aGUgZnV0dXJlLgorCitJZiB5b3UgdmlvbGF0ZSB0aGUgcnVsZSwgdGhlcmUgbWF5IG5vdCBi
ZSBpbW1lZGlhdGVseSBjb25zZXF1ZW5jZXMsCitidXQgeW91ciB0ZXN0IG1heSAoanVzdCBtYXkp
IGJyZWFrIHdpdGggYSBuZXcgY29tcGlsZXIgKG9yIGEgbmV3Cit2ZXJzaW9uIG9mIHRoZSBjb21w
aWxlciB5b3UgYXJlIHVzaW5nKSBvciB3aXRoIGEgbmV3IHZlcnNpb24gb2YgR29vZ2xlCitUZXN0
LiAgVGhlcmVmb3JlIGl0J3MgYmVzdCB0byBmb2xsb3cgdGhlIHJ1bGUuCisKKyMjIFdoeSBpcyBp
dCBub3QgcmVjb21tZW5kZWQgdG8gaW5zdGFsbCBhIHByZS1jb21waWxlZCBjb3B5IG9mIEdvb2ds
ZSBUZXN0IChmb3IgZXhhbXBsZSwgaW50byAvdXNyL2xvY2FsKT8gIyMKKworSW4gdGhlIGVhcmx5
IGRheXMsIHdlIHNhaWQgdGhhdCB5b3UgY291bGQgaW5zdGFsbAorY29tcGlsZWQgR29vZ2xlIFRl
c3QgbGlicmFyaWVzIG9uIGAqYG5peCBzeXN0ZW1zIHVzaW5nIGBtYWtlIGluc3RhbGxgLgorVGhl
biBldmVyeSB1c2VyIG9mIHlvdXIgbWFjaGluZSBjYW4gd3JpdGUgdGVzdHMgd2l0aG91dAorcmVj
b21waWxpbmcgR29vZ2xlIFRlc3QuCisKK1RoaXMgc2VlbWVkIGxpa2UgYSBnb29kIGlkZWEsIGJ1
dCBpdCBoYXMgYQorZ290LWNoYTogZXZlcnkgdXNlciBuZWVkcyB0byBjb21waWxlIGhpcyB0ZXN0
cyB1c2luZyB0aGUgX3NhbWVfIGNvbXBpbGVyCitmbGFncyB1c2VkIHRvIGNvbXBpbGUgdGhlIGlu
c3RhbGxlZCBHb29nbGUgVGVzdCBsaWJyYXJpZXM7IG90aGVyd2lzZQoraGUgbWF5IHJ1biBpbnRv
IHVuZGVmaW5lZCBiZWhhdmlvcnMgKGkuZS4gdGhlIHRlc3RzIGNhbiBiZWhhdmUKK3N0cmFuZ2Vs
eSBhbmQgbWF5IGV2ZW4gY3Jhc2ggZm9yIG5vIG9idmlvdXMgcmVhc29ucykuCisKK1doeT8gIEJl
Y2F1c2UgQysrIGhhcyB0aGlzIHRoaW5nIGNhbGxlZCB0aGUgT25lLURlZmluaXRpb24gUnVsZTog
aWYKK3R3byBDKysgc291cmNlIGZpbGVzIGNvbnRhaW4gZGlmZmVyZW50IGRlZmluaXRpb25zIG9m
IHRoZSBzYW1lCitjbGFzcy9mdW5jdGlvbi92YXJpYWJsZSwgYW5kIHlvdSBsaW5rIHRoZW0gdG9n
ZXRoZXIsIHlvdSB2aW9sYXRlIHRoZQorcnVsZS4gIFRoZSBsaW5rZXIgbWF5IG9yIG1heSBub3Qg
Y2F0Y2ggdGhlIGVycm9yIChpbiBtYW55IGNhc2VzIGl0J3MKK25vdCByZXF1aXJlZCBieSB0aGUg
QysrIHN0YW5kYXJkIHRvIGNhdGNoIHRoZSB2aW9sYXRpb24pLiAgSWYgaXQKK2RvZXNuJ3QsIHlv
dSBnZXQgc3RyYW5nZSBydW4tdGltZSBiZWhhdmlvcnMgdGhhdCBhcmUgdW5leHBlY3RlZCBhbmQK
K2hhcmQgdG8gZGVidWcuCisKK0lmIHlvdSBjb21waWxlIEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRl
c3QgY29kZSB1c2luZyBkaWZmZXJlbnQgY29tcGlsZXIKK2ZsYWdzLCB0aGV5IG1heSBzZWUgZGlm
ZmVyZW50IGRlZmluaXRpb25zIG9mIHRoZSBzYW1lCitjbGFzcy9mdW5jdGlvbi92YXJpYWJsZSAo
ZS5nLiBkdWUgdG8gdGhlIHVzZSBvZiBgI2lmYCBpbiBHb29nbGUgVGVzdCkuCitUaGVyZWZvcmUs
IGZvciB5b3VyIHNhbml0eSwgd2UgcmVjb21tZW5kIHRvIGF2b2lkIGluc3RhbGxpbmcgcHJlLWNv
bXBpbGVkCitHb29nbGUgVGVzdCBsaWJyYXJpZXMuICBJbnN0ZWFkLCBlYWNoIHByb2plY3Qgc2hv
dWxkIGNvbXBpbGUKK0dvb2dsZSBUZXN0IGl0c2VsZiBzdWNoIHRoYXQgaXQgY2FuIGJlIHN1cmUg
dGhhdCB0aGUgc2FtZSBmbGFncyBhcmUKK3VzZWQgZm9yIGJvdGggR29vZ2xlIFRlc3QgYW5kIHRo
ZSB0ZXN0cy4KKworIyMgSG93IGRvIEkgZ2VuZXJhdGUgNjQtYml0IGJpbmFyaWVzIG9uIFdpbmRv
d3MgKHVzaW5nIFZpc3VhbCBTdHVkaW8gMjAwOCk/ICMjCisKKyhBbnN3ZXJlZCBieSBUcmV2b3Ig
Um9iaW5zb24pCisKK0xvYWQgdGhlIHN1cHBsaWVkIFZpc3VhbCBTdHVkaW8gc29sdXRpb24gZmls
ZSwgZWl0aGVyIGBtc3ZjXGd0ZXN0LW1kLnNsbmAgb3IKK2Btc3ZjXGd0ZXN0LnNsbmAuIEdvIHRo
cm91Z2ggdGhlIG1pZ3JhdGlvbiB3aXphcmQgdG8gbWlncmF0ZSB0aGUKK3NvbHV0aW9uIGFuZCBw
cm9qZWN0IGZpbGVzIHRvIFZpc3VhbCBTdHVkaW8gMjAwOC4gU2VsZWN0CitgQ29uZmlndXJhdGlv
biBNYW5hZ2VyLi4uYCBmcm9tIHRoZSBgQnVpbGRgIG1lbnUuIFNlbGVjdCBgPE5ldy4uLj5gIGZy
b20KK3RoZSBgQWN0aXZlIHNvbHV0aW9uIHBsYXRmb3JtYCBkcm9wZG93bi4gIFNlbGVjdCBgeDY0
YCBmcm9tIHRoZSBuZXcKK3BsYXRmb3JtIGRyb3Bkb3duLCBsZWF2ZSBgQ29weSBzZXR0aW5ncyBm
cm9tYCBzZXQgdG8gYFdpbjMyYCBhbmQKK2BDcmVhdGUgbmV3IHByb2plY3QgcGxhdGZvcm1zYCBj
aGVja2VkLCB0aGVuIGNsaWNrIGBPS2AuIFlvdSBub3cgaGF2ZQorYFdpbjMyYCBhbmQgYHg2NGAg
cGxhdGZvcm0gY29uZmlndXJhdGlvbnMsIHNlbGVjdGFibGUgZnJvbSB0aGUKK2BTdGFuZGFyZGAg
dG9vbGJhciwgd2hpY2ggYWxsb3cgeW91IHRvIHRvZ2dsZSBiZXR3ZWVuIGJ1aWxkaW5nIDMyLWJp
dCBvcgorNjQtYml0IGJpbmFyaWVzIChvciBib3RoIGF0IG9uY2UgdXNpbmcgQmF0Y2ggQnVpbGQp
LgorCitJbiBvcmRlciB0byBwcmV2ZW50IGJ1aWxkIG91dHB1dCBmaWxlcyBmcm9tIG92ZXJ3cml0
aW5nIG9uZSBhbm90aGVyLAoreW91J2xsIG5lZWQgdG8gY2hhbmdlIHRoZSBgSW50ZXJtZWRpYXRl
IERpcmVjdG9yeWAgc2V0dGluZ3MgZm9yIHRoZQorbmV3bHkgY3JlYXRlZCBwbGF0Zm9ybSBjb25m
aWd1cmF0aW9uIGFjcm9zcyBhbGwgdGhlIHByb2plY3RzLiBUbyBkbwordGhpcywgbXVsdGktc2Vs
ZWN0IChlLmcuIHVzaW5nIHNoaWZ0LWNsaWNrKSBhbGwgcHJvamVjdHMgKGJ1dCBub3QgdGhlCitz
b2x1dGlvbikgaW4gdGhlIGBTb2x1dGlvbiBFeHBsb3JlcmAuIFJpZ2h0LWNsaWNrIG9uZSBvZiB0
aGVtIGFuZAorc2VsZWN0IGBQcm9wZXJ0aWVzYC4gSW4gdGhlIGxlZnQgcGFuZSwgc2VsZWN0IGBD
b25maWd1cmF0aW9uIFByb3BlcnRpZXNgLAorYW5kIGZyb20gdGhlIGBDb25maWd1cmF0aW9uYCBk
cm9wZG93biwgc2VsZWN0IGBBbGwgQ29uZmlndXJhdGlvbnNgLgorTWFrZSBzdXJlIHRoZSBzZWxl
Y3RlZCBwbGF0Zm9ybSBpcyBgeDY0YC4gRm9yIHRoZQorYEludGVybWVkaWF0ZSBEaXJlY3Rvcnlg
IHNldHRpbmcsIGNoYW5nZSB0aGUgdmFsdWUgZnJvbQorYCQoUGxhdGZvcm1OYW1lKVwkKENvbmZp
Z3VyYXRpb25OYW1lKWAgdG8KK2AkKE91dERpcilcJChQcm9qZWN0TmFtZSlgLiBDbGljayBgT0tg
IGFuZCB0aGVuIGJ1aWxkIHRoZQorc29sdXRpb24uIFdoZW4gdGhlIGJ1aWxkIGlzIGNvbXBsZXRl
LCB0aGUgNjQtYml0IGJpbmFyaWVzIHdpbGwgYmUgaW4KK3RoZSBgbXN2Y1x4NjRcRGVidWdgIGRp
cmVjdG9yeS4KKworIyMgQ2FuIEkgdXNlIEdvb2dsZSBUZXN0IG9uIE1pbkdXPyAjIworCitXZSBo
YXZlbid0IHRlc3RlZCB0aGlzIG91cnNlbHZlcywgYnV0IFBlciBBYnJhaGFtc2VuIHJlcG9ydGVk
IHRoYXQgaGUKK3dhcyBhYmxlIHRvIGNvbXBpbGUgYW5kIGluc3RhbGwgR29vZ2xlIFRlc3Qgc3Vj
Y2Vzc2Z1bGx5IHdoZW4gdXNpbmcKK01pbkdXIGZyb20gQ3lnd2luLiAgWW91J2xsIG5lZWQgdG8g
Y29uZmlndXJlIGl0IHdpdGg6CisKK2BQQVRIL1RPL2NvbmZpZ3VyZSBDQz0iZ2NjIC1tbm8tY3ln
d2luIiBDWFg9ImcrKyAtbW5vLWN5Z3dpbiJgCisKK1lvdSBzaG91bGQgYmUgYWJsZSB0byByZXBs
YWNlIHRoZSBgLW1uby1jeWd3aW5gIG9wdGlvbiB3aXRoIGRpcmVjdCBsaW5rcwordG8gdGhlIHJl
YWwgTWluR1cgYmluYXJpZXMsIGJ1dCB3ZSBoYXZlbid0IHRyaWVkIHRoYXQuCisKK0NhdmVhdHM6
CisKKyAgKiBUaGVyZSBhcmUgbWFueSB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZy4KKyAgKiBgbWFr
ZSBjaGVja2Agd2lsbCBwcm9kdWNlIHNvbWUgZXJyb3JzIGFzIG5vdCBhbGwgdGVzdHMgZm9yIEdv
b2dsZSBUZXN0IGl0c2VsZiBhcmUgY29tcGF0aWJsZSB3aXRoIE1pbkdXLgorCitXZSBhbHNvIGhh
dmUgcmVwb3J0cyBvbiBzdWNjZXNzZnVsIGNyb3NzIGNvbXBpbGF0aW9uIG9mIEdvb2dsZSBUZXN0
CitNaW5HVyBiaW5hcmllcyBvbiBMaW51eCB1c2luZworW3RoZXNlIGluc3RydWN0aW9uc10oaHR0
cDovL3dpa2kud3h3aWRnZXRzLm9yZy9Dcm9zcy1Db21waWxpbmdfVW5kZXJfTGludXgjQ3Jvc3Mt
Y29tcGlsaW5nX3VuZGVyX0xpbnV4X2Zvcl9NU19XaW5kb3dzKQorb24gdGhlIFd4V2lkZ2V0cyBz
aXRlLgorCitQbGVhc2UgY29udGFjdCBgZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMu
Y29tYCBpZiB5b3UgYXJlCitpbnRlcmVzdGVkIGluIGltcHJvdmluZyB0aGUgc3VwcG9ydCBmb3Ig
TWluR1cuCisKKyMjIFdoeSBkb2VzIEdvb2dsZSBUZXN0IHN1cHBvcnQgRVhQRUNUXF9FUShOVUxM
LCBwdHIpIGFuZCBBU1NFUlRcX0VRKE5VTEwsIHB0cikgYnV0IG5vdCBFWFBFQ1RcX05FKE5VTEws
IHB0cikgYW5kIEFTU0VSVFxfTkUoTlVMTCwgcHRyKT8gIyMKKworRHVlIHRvIHNvbWUgcGVjdWxp
YXJpdHkgb2YgQysrLCBpdCByZXF1aXJlcyBzb21lIG5vbi10cml2aWFsIHRlbXBsYXRlCittZXRh
IHByb2dyYW1taW5nIHRyaWNrcyB0byBzdXBwb3J0IHVzaW5nIGBOVUxMYCBhcyBhbiBhcmd1bWVu
dCBvZiB0aGUKK2BFWFBFQ1RfWFgoKWAgYW5kIGBBU1NFUlRfWFgoKWAgbWFjcm9zLiBUaGVyZWZv
cmUgd2Ugb25seSBkbyBpdCB3aGVyZQoraXQncyBtb3N0IG5lZWRlZCAob3RoZXJ3aXNlIHdlIG1h
a2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIEdvb2dsZSBUZXN0CitoYXJkZXIgdG8gbWFpbnRhaW4g
YW5kIG1vcmUgZXJyb3ItcHJvbmUgdGhhbiBuZWNlc3NhcnkpLgorCitUaGUgYEVYUEVDVF9FUSgp
YCBtYWNybyB0YWtlcyB0aGUgX2V4cGVjdGVkXyB2YWx1ZSBhcyBpdHMgZmlyc3QKK2FyZ3VtZW50
IGFuZCB0aGUgX2FjdHVhbF8gdmFsdWUgYXMgdGhlIHNlY29uZC4gSXQncyByZWFzb25hYmxlIHRo
YXQKK3NvbWVvbmUgd2FudHMgdG8gd3JpdGUgYEVYUEVDVF9FUShOVUxMLCBzb21lX2V4cHJlc3Np
b24pYCwgYW5kIHRoaXMKK2luZGVlZCB3YXMgcmVxdWVzdGVkIHNldmVyYWwgdGltZXMuIFRoZXJl
Zm9yZSB3ZSBpbXBsZW1lbnRlZCBpdC4KKworVGhlIG5lZWQgZm9yIGBFWFBFQ1RfTkUoTlVMTCwg
cHRyKWAgaXNuJ3QgbmVhcmx5IGFzIHN0cm9uZy4gV2hlbiB0aGUKK2Fzc2VydGlvbiBmYWlscywg
eW91IGFscmVhZHkga25vdyB0aGF0IGBwdHJgIG11c3QgYmUgYE5VTExgLCBzbyBpdAorZG9lc24n
dCBhZGQgYW55IGluZm9ybWF0aW9uIHRvIHByaW50IHB0ciBpbiB0aGlzIGNhc2UuIFRoYXQgbWVh
bnMKK2BFWFBFQ1RfVFJVRShwdHIgIT0gTlVMTClgIHdvcmtzIGp1c3QgYXMgd2VsbC4KKworSWYg
d2Ugd2VyZSB0byBzdXBwb3J0IGBFWFBFQ1RfTkUoTlVMTCwgcHRyKWAsIGZvciBjb25zaXN0ZW5j
eSB3ZSdsbAoraGF2ZSB0byBzdXBwb3J0IGBFWFBFQ1RfTkUocHRyLCBOVUxMKWAgYXMgd2VsbCwg
YXMgdW5saWtlIGBFWFBFQ1RfRVFgLAord2UgZG9uJ3QgaGF2ZSBhIGNvbnZlbnRpb24gb24gdGhl
IG9yZGVyIG9mIHRoZSB0d28gYXJndW1lbnRzIGZvcgorYEVYUEVDVF9ORWAuIFRoaXMgbWVhbnMg
dXNpbmcgdGhlIHRlbXBsYXRlIG1ldGEgcHJvZ3JhbW1pbmcgdHJpY2tzCit0d2ljZSBpbiB0aGUg
aW1wbGVtZW50YXRpb24sIG1ha2luZyBpdCBldmVuIGhhcmRlciB0byB1bmRlcnN0YW5kIGFuZAor
bWFpbnRhaW4uIFdlIGJlbGlldmUgdGhlIGJlbmVmaXQgZG9lc24ndCBqdXN0aWZ5IHRoZSBjb3N0
LgorCitGaW5hbGx5LCB3aXRoIHRoZSBncm93dGggb2YgR29vZ2xlIE1vY2sncyBbbWF0Y2hlcl0o
Li4vLi4vQ29va0Jvb2subWQjdXNpbmctbWF0Y2hlcnMtaW4tZ29vZ2xlLXRlc3QtYXNzZXJ0aW9u
cykgbGlicmFyeSwgd2UgYXJlCitlbmNvdXJhZ2luZyBwZW9wbGUgdG8gdXNlIHRoZSB1bmlmaWVk
IGBFWFBFQ1RfVEhBVCh2YWx1ZSwgbWF0Y2hlcilgCitzeW50YXggbW9yZSBvZnRlbiBpbiB0ZXN0
cy4gT25lIHNpZ25pZmljYW50IGFkdmFudGFnZSBvZiB0aGUgbWF0Y2hlcgorYXBwcm9hY2ggaXMg
dGhhdCBtYXRjaGVycyBjYW4gYmUgZWFzaWx5IGNvbWJpbmVkIHRvIGZvcm0gbmV3IG1hdGNoZXJz
LAord2hpbGUgdGhlIGBFWFBFQ1RfTkVgLCBldGMsIG1hY3JvcyBjYW5ub3QgYmUgZWFzaWx5Citj
b21iaW5lZC4gVGhlcmVmb3JlIHdlIHdhbnQgdG8gaW52ZXN0IG1vcmUgaW4gdGhlIG1hdGNoZXJz
IHRoYW4gaW4gdGhlCitgRVhQRUNUX1hYKClgIG1hY3Jvcy4KKworIyMgRG9lcyBHb29nbGUgVGVz
dCBzdXBwb3J0IHJ1bm5pbmcgdGVzdHMgaW4gcGFyYWxsZWw/ICMjCisKK1Rlc3QgcnVubmVycyB0
ZW5kIHRvIGJlIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBidWlsZC90ZXN0CitlbnZpcm9ubWVu
dCwgYW5kIEdvb2dsZSBUZXN0IGRvZXNuJ3QgdHJ5IHRvIHNvbHZlIHRoZSBwcm9ibGVtIG9mCity
dW5uaW5nIHRlc3RzIGluIHBhcmFsbGVsLiAgSW5zdGVhZCwgd2UgdHJpZWQgdG8gbWFrZSBHb29n
bGUgVGVzdCB3b3JrCituaWNlbHkgd2l0aCB0ZXN0IHJ1bm5lcnMuICBGb3IgZXhhbXBsZSwgR29v
Z2xlIFRlc3QncyBYTUwgcmVwb3J0Citjb250YWlucyB0aGUgdGltZSBzcGVudCBvbiBlYWNoIHRl
c3QsIGFuZCBpdHMgYGd0ZXN0X2xpc3RfdGVzdHNgIGFuZAorYGd0ZXN0X2ZpbHRlcmAgZmxhZ3Mg
Y2FuIGJlIHVzZWQgZm9yIHNwbGl0dGluZyB0aGUgZXhlY3V0aW9uIG9mIHRlc3QKK21ldGhvZHMg
aW50byBtdWx0aXBsZSBwcm9jZXNzZXMuICBUaGVzZSBmdW5jdGlvbmFsaXRpZXMgY2FuIGhlbHAg
dGhlCit0ZXN0IHJ1bm5lciBydW4gdGhlIHRlc3RzIGluIHBhcmFsbGVsLgorCisjIyBXaHkgZG9u
J3QgR29vZ2xlIFRlc3QgcnVuIHRoZSB0ZXN0cyBpbiBkaWZmZXJlbnQgdGhyZWFkcyB0byBzcGVl
ZCB0aGluZ3MgdXA/ICMjCisKK0l0J3MgZGlmZmljdWx0IHRvIHdyaXRlIHRocmVhZC1zYWZlIGNv
ZGUuICBNb3N0IHRlc3RzIGFyZSBub3Qgd3JpdHRlbgord2l0aCB0aHJlYWQtc2FmZXR5IGluIG1p
bmQsIGFuZCB0aHVzIG1heSBub3Qgd29yayBjb3JyZWN0bHkgaW4gYQorbXVsdGktdGhyZWFkZWQg
c2V0dGluZy4KKworSWYgeW91IHRoaW5rIGFib3V0IGl0LCBpdCdzIGFscmVhZHkgaGFyZCB0byBt
YWtlIHlvdXIgY29kZSB3b3JrIHdoZW4KK3lvdSBrbm93IHdoYXQgb3RoZXIgdGhyZWFkcyBhcmUg
ZG9pbmcuICBJdCdzIG11Y2ggaGFyZGVyLCBhbmQKK3NvbWV0aW1lcyBldmVuIGltcG9zc2libGUs
IHRvIG1ha2UgeW91ciBjb2RlIHdvcmsgd2hlbiB5b3UgZG9uJ3Qga25vdword2hhdCBvdGhlciB0
aHJlYWRzIGFyZSBkb2luZyAocmVtZW1iZXIgdGhhdCB0ZXN0IG1ldGhvZHMgY2FuIGJlIGFkZGVk
LAorZGVsZXRlZCwgb3IgbW9kaWZpZWQgYWZ0ZXIgeW91ciB0ZXN0IHdhcyB3cml0dGVuKS4gIElm
IHlvdSB3YW50IHRvIHJ1bgordGhlIHRlc3RzIGluIHBhcmFsbGVsLCB5b3UnZCBiZXR0ZXIgcnVu
IHRoZW0gaW4gZGlmZmVyZW50IHByb2Nlc3Nlcy4KKworIyMgV2h5IGFyZW4ndCBHb29nbGUgVGVz
dCBhc3NlcnRpb25zIGltcGxlbWVudGVkIHVzaW5nIGV4Y2VwdGlvbnM/ICMjCisKK091ciBvcmln
aW5hbCBtb3RpdmF0aW9uIHdhcyB0byBiZSBhYmxlIHRvIHVzZSBHb29nbGUgVGVzdCBpbiBwcm9q
ZWN0cwordGhhdCBkaXNhYmxlIGV4Y2VwdGlvbnMuICBMYXRlciB3ZSByZWFsaXplZCBzb21lIGFk
ZGl0aW9uYWwgYmVuZWZpdHMKK29mIHRoaXMgYXBwcm9hY2g6CisKKyAgMS4gVGhyb3dpbmcgaW4g
YSBkZXN0cnVjdG9yIGlzIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBDKysuICBOb3QgdXNpbmcgZXhj
ZXB0aW9ucyBtZWFucyBHb29nbGUgVGVzdCdzIGFzc2VydGlvbnMgYXJlIHNhZmUgdG8gdXNlIGlu
IGRlc3RydWN0b3JzLgorICAxLiBUaGUgYEVYUEVDVF8qYCBmYW1pbHkgb2YgbWFjcm9zIHdpbGwg
Y29udGludWUgZXZlbiBhZnRlciBhIGZhaWx1cmUsIGFsbG93aW5nIG11bHRpcGxlIGZhaWx1cmVz
IGluIGEgYFRFU1RgIHRvIGJlIHJlcG9ydGVkIGluIGEgc2luZ2xlIHJ1bi4gVGhpcyBpcyBhIHBv
cHVsYXIgZmVhdHVyZSwgYXMgaW4gQysrIHRoZSBlZGl0LWNvbXBpbGUtdGVzdCBjeWNsZSBpcyB1
c3VhbGx5IHF1aXRlIGxvbmcgYW5kIGJlaW5nIGFibGUgdG8gZml4aW5nIG1vcmUgdGhhbiBvbmUg
dGhpbmcgYXQgYSB0aW1lIGlzIGEgYmxlc3NpbmcuCisgIDEuIElmIGFzc2VydGlvbnMgYXJlIGlt
cGxlbWVudGVkIHVzaW5nIGV4Y2VwdGlvbnMsIGEgdGVzdCBtYXkgZmFsc2VseSBpZ25vcmUgYSBm
YWlsdXJlIGlmIGl0J3MgY2F1Z2h0IGJ5IHVzZXIgY29kZToKK2BgYAordHJ5IHsgLi4uIEFTU0VS
VF9UUlVFKC4uLikgLi4uIH0KK2NhdGNoICguLi4pIHsgLi4uIH0KK2BgYAorVGhlIGFib3ZlIGNv
ZGUgd2lsbCBwYXNzIGV2ZW4gaWYgdGhlIGBBU1NFUlRfVFJVRWAgdGhyb3dzLiAgV2hpbGUgaXQn
cyB1bmxpa2VseSBmb3Igc29tZW9uZSB0byB3cml0ZSB0aGlzIGluIGEgdGVzdCwgaXQncyBwb3Nz
aWJsZSB0byBydW4gaW50byB0aGlzIHBhdHRlcm4gd2hlbiB5b3Ugd3JpdGUgYXNzZXJ0aW9ucyBp
biBjYWxsYmFja3MgdGhhdCBhcmUgY2FsbGVkIGJ5IHRoZSBjb2RlIHVuZGVyIHRlc3QuCisKK1Ro
ZSBkb3duc2lkZSBvZiBub3QgdXNpbmcgZXhjZXB0aW9ucyBpcyB0aGF0IGBBU1NFUlRfKmAgKGlt
cGxlbWVudGVkCit1c2luZyBgcmV0dXJuYCkgd2lsbCBvbmx5IGFib3J0IHRoZSBjdXJyZW50IGZ1
bmN0aW9uLCBub3QgdGhlIGN1cnJlbnQKK2BURVNUYC4KKworIyMgV2h5IGRvIHdlIHVzZSB0d28g
ZGlmZmVyZW50IG1hY3JvcyBmb3IgdGVzdHMgd2l0aCBhbmQgd2l0aG91dCBmaXh0dXJlcz8gIyMK
KworVW5mb3J0dW5hdGVseSwgQysrJ3MgbWFjcm8gc3lzdGVtIGRvZXNuJ3QgYWxsb3cgdXMgdG8g
dXNlIHRoZSBzYW1lCittYWNybyBmb3IgYm90aCBjYXNlcy4gIE9uZSBwb3NzaWJpbGl0eSBpcyB0
byBwcm92aWRlIG9ubHkgb25lIG1hY3JvCitmb3IgdGVzdHMgd2l0aCBmaXh0dXJlcywgYW5kIHJl
cXVpcmUgdGhlIHVzZXIgdG8gZGVmaW5lIGFuIGVtcHR5CitmaXh0dXJlIHNvbWV0aW1lczoKKwor
YGBgCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKworVEVTVF9G
KEZvb1Rlc3QsIERvZXNUaGlzKSB7IC4uLiB9CitgYGAKK29yCitgYGAKK3R5cGVkZWYgOjp0ZXN0
aW5nOjpUZXN0IEZvb1Rlc3Q7CisKK1RFU1RfRihGb29UZXN0LCBEb2VzVGhhdCkgeyAuLi4gfQor
YGBgCisKK1lldCwgbWFueSBwZW9wbGUgdGhpbmsgdGhpcyBpcyBvbmUgbGluZSB0b28gbWFueS4g
Oi0pIE91ciBnb2FsIHdhcyB0bworbWFrZSBpdCByZWFsbHkgZWFzeSB0byB3cml0ZSB0ZXN0cywg
c28gd2UgdHJpZWQgdG8gbWFrZSBzaW1wbGUgdGVzdHMKK3RyaXZpYWwgdG8gY3JlYXRlLiAgVGhh
dCBtZWFucyB1c2luZyBhIHNlcGFyYXRlIG1hY3JvIGZvciBzdWNoIHRlc3RzLgorCitXZSB0aGlu
ayBuZWl0aGVyIGFwcHJvYWNoIGlzIGlkZWFsLCB5ZXQgZWl0aGVyIG9mIHRoZW0gaXMgcmVhc29u
YWJsZS4KK0luIHRoZSBlbmQsIGl0IHByb2JhYmx5IGRvZXNuJ3QgbWF0dGVyIG11Y2ggZWl0aGVy
IHdheS4KKworIyMgV2h5IGRvbid0IHdlIHVzZSBzdHJ1Y3RzIGFzIHRlc3QgZml4dHVyZXM/ICMj
CisKK1dlIGxpa2UgdG8gdXNlIHN0cnVjdHMgb25seSB3aGVuIHJlcHJlc2VudGluZyBwYXNzaXZl
IGRhdGEuICBUaGlzCitkaXN0aW5jdGlvbiBiZXR3ZWVuIHN0cnVjdHMgYW5kIGNsYXNzZXMgaXMg
Z29vZCBmb3IgZG9jdW1lbnRpbmcgdGhlCitpbnRlbnQgb2YgdGhlIGNvZGUncyBhdXRob3IuICBT
aW5jZSB0ZXN0IGZpeHR1cmVzIGhhdmUgbG9naWMgbGlrZQorYFNldFVwKClgIGFuZCBgVGVhckRv
d24oKWAsIHRoZXkgYXJlIGJldHRlciBkZWZpbmVkIGFzIGNsYXNzZXMuCisKKyMjIFdoeSBhcmUg
ZGVhdGggdGVzdHMgaW1wbGVtZW50ZWQgYXMgYXNzZXJ0aW9ucyBpbnN0ZWFkIG9mIHVzaW5nIGEg
dGVzdCBydW5uZXI/ICMjCisKK091ciBnb2FsIHdhcyB0byBtYWtlIGRlYXRoIHRlc3RzIGFzIGNv
bnZlbmllbnQgZm9yIGEgdXNlciBhcyBDKysKK3Bvc3NpYmx5IGFsbG93cy4gIEluIHBhcnRpY3Vs
YXI6CisKKyAgKiBUaGUgcnVubmVyLXN0eWxlIHJlcXVpcmVzIHRvIHNwbGl0IHRoZSBpbmZvcm1h
dGlvbiBpbnRvIHR3byBwaWVjZXM6IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBkZWF0aCB0ZXN0IGl0
c2VsZiwgYW5kIHRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgcnVubmVyIG9uIGhvdyB0byBydW4g
dGhlIGRlYXRoIHRlc3QgYW5kIHdoYXQgdG8gZXhwZWN0LiAgVGhlIGRlYXRoIHRlc3Qgd291bGQg
YmUgd3JpdHRlbiBpbiBDKyssIHdoaWxlIHRoZSBydW5uZXIgc3BlYyBtYXkgb3IgbWF5IG5vdCBi
ZS4gIEEgdXNlciBuZWVkcyB0byBjYXJlZnVsbHkga2VlcCB0aGUgdHdvIGluIHN5bmMuIGBBU1NF
UlRfREVBVEgoc3RhdGVtZW50LCBleHBlY3RlZF9tZXNzYWdlKWAgc3BlY2lmaWVzIGFsbCBuZWNl
c3NhcnkgaW5mb3JtYXRpb24gaW4gb25lIHBsYWNlLCBpbiBvbmUgbGFuZ3VhZ2UsIHdpdGhvdXQg
Ym9pbGVycGxhdGUgY29kZS4gSXQgaXMgdmVyeSBkZWNsYXJhdGl2ZS4KKyAgKiBgQVNTRVJUX0RF
QVRIYCBoYXMgYSBzaW1pbGFyIHN5bnRheCBhbmQgZXJyb3ItcmVwb3J0aW5nIHNlbWFudGljcyBh
cyBvdGhlciBHb29nbGUgVGVzdCBhc3NlcnRpb25zLCBhbmQgdGh1cyBpcyBlYXN5IHRvIGxlYXJu
LgorICAqIGBBU1NFUlRfREVBVEhgIGNhbiBiZSBtaXhlZCB3aXRoIG90aGVyIGFzc2VydGlvbnMg
YW5kIG90aGVyIGxvZ2ljIGF0IHlvdXIgd2lsbC4gIFlvdSBhcmUgbm90IGxpbWl0ZWQgdG8gb25l
IGRlYXRoIHRlc3QgcGVyIHRlc3QgbWV0aG9kLiBGb3IgZXhhbXBsZSwgeW91IGNhbiB3cml0ZSBz
b21ldGhpbmcgbGlrZToKK2BgYAorICAgIGlmIChGb29Db25kaXRpb24oKSkgeworICAgICAgQVNT
RVJUX0RFQVRIKEJhcigpLCAiYmxhaCIpOworICAgIH0gZWxzZSB7CisgICAgICBBU1NFUlRfRVEo
NSwgQmFyKCkpOworICAgIH0KK2BgYAorSWYgeW91IHByZWZlciBvbmUgZGVhdGggdGVzdCBwZXIg
dGVzdCBtZXRob2QsIHlvdSBjYW4gd3JpdGUgeW91ciB0ZXN0cyBpbiB0aGF0IHN0eWxlIHRvbywg
YnV0IHdlIGRvbid0IHdhbnQgdG8gaW1wb3NlIHRoYXQgb24gdGhlIHVzZXJzLiAgVGhlIGZld2Vy
IGFydGlmaWNpYWwgbGltaXRhdGlvbnMgdGhlIGJldHRlci4KKyAgKiBgQVNTRVJUX0RFQVRIYCBj
YW4gcmVmZXJlbmNlIGxvY2FsIHZhcmlhYmxlcyBpbiB0aGUgY3VycmVudCBmdW5jdGlvbiwgYW5k
IHlvdSBjYW4gZGVjaWRlIGhvdyBtYW55IGRlYXRoIHRlc3RzIHlvdSB3YW50IGJhc2VkIG9uIHJ1
bi10aW1lIGluZm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsCitgYGAKKyAgICBjb25zdCBpbnQgY291
bnQgPSBHZXRDb3VudCgpOyAgLy8gT25seSBrbm93biBhdCBydW4gdGltZS4KKyAgICBmb3IgKGlu
dCBpID0gMTsgaSA8PSBjb3VudDsgaSsrKSB7CisgICAgICBBU1NFUlRfREVBVEgoeworICAgICAg
ICBkb3VibGUqIGJ1ZmZlciA9IG5ldyBkb3VibGVbaV07CisgICAgICAgIC4uLiBpbml0aWFsaXpl
cyBidWZmZXIgLi4uCisgICAgICAgIEZvbyhidWZmZXIsIGkpCisgICAgICB9LCAiYmxhaCBibGFo
Iik7CisgICAgfQorYGBgCitUaGUgcnVubmVyLWJhc2VkIGFwcHJvYWNoIHRlbmRzIHRvIGJlIG1v
cmUgc3RhdGljIGFuZCBsZXNzIGZsZXhpYmxlLCBvciByZXF1aXJlcyBtb3JlIHVzZXIgZWZmb3J0
IHRvIGdldCB0aGlzIGtpbmQgb2YgZmxleGliaWxpdHkuCisKK0Fub3RoZXIgaW50ZXJlc3Rpbmcg
dGhpbmcgYWJvdXQgYEFTU0VSVF9ERUFUSGAgaXMgdGhhdCBpdCBjYWxscyBgZm9yaygpYAordG8g
Y3JlYXRlIGEgY2hpbGQgcHJvY2VzcyB0byBydW4gdGhlIGRlYXRoIHRlc3QuICBUaGlzIGlzIGxp
Z2h0ZW5pbmcKK2Zhc3QsIGFzIGBmb3JrKClgIHVzZXMgY29weS1vbi13cml0ZSBwYWdlcyBhbmQg
aW5jdXJzIGFsbW9zdCB6ZXJvCitvdmVyaGVhZCwgYW5kIHRoZSBjaGlsZCBwcm9jZXNzIHN0YXJ0
cyBmcm9tIHRoZSB1c2VyLXN1cHBsaWVkCitzdGF0ZW1lbnQgZGlyZWN0bHksIHNraXBwaW5nIGFs
bCBnbG9iYWwgYW5kIGxvY2FsIGluaXRpYWxpemF0aW9uIGFuZAorYW55IGNvZGUgbGVhZGluZyB0
byB0aGUgZ2l2ZW4gc3RhdGVtZW50LiAgSWYgeW91IGxhdW5jaCB0aGUgY2hpbGQKK3Byb2Nlc3Mg
ZnJvbSBzY3JhdGNoLCBpdCBjYW4gdGFrZSBzZWNvbmRzIGp1c3QgdG8gbG9hZCBldmVyeXRoaW5n
IGFuZAorc3RhcnQgcnVubmluZyBpZiB0aGUgdGVzdCBsaW5rcyB0byBtYW55IGxpYnJhcmllcyBk
eW5hbWljYWxseS4KKworIyMgTXkgZGVhdGggdGVzdCBtb2RpZmllcyBzb21lIHN0YXRlLCBidXQg
dGhlIGNoYW5nZSBzZWVtcyBsb3N0IGFmdGVyIHRoZSBkZWF0aCB0ZXN0IGZpbmlzaGVzLiBXaHk/
ICMjCisKK0RlYXRoIHRlc3RzIChgRVhQRUNUX0RFQVRIYCwgZXRjKSBhcmUgZXhlY3V0ZWQgaW4g
YSBzdWItcHJvY2VzcyBzLnQuIHRoZQorZXhwZWN0ZWQgY3Jhc2ggd29uJ3Qga2lsbCB0aGUgdGVz
dCBwcm9ncmFtIChpLmUuIHRoZSBwYXJlbnQgcHJvY2VzcykuIEFzIGEKK3Jlc3VsdCwgYW55IGlu
LW1lbW9yeSBzaWRlIGVmZmVjdHMgdGhleSBpbmN1ciBhcmUgb2JzZXJ2YWJsZSBpbiB0aGVpcgor
cmVzcGVjdGl2ZSBzdWItcHJvY2Vzc2VzLCBidXQgbm90IGluIHRoZSBwYXJlbnQgcHJvY2Vzcy4g
WW91IGNhbiB0aGluayBvZiB0aGVtCithcyBydW5uaW5nIGluIGEgcGFyYWxsZWwgdW5pdmVyc2Us
IG1vcmUgb3IgbGVzcy4KKworIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCAidW5kZWZp
bmVkIHJlZmVyZW5jZXMiIHRvIHNvbWUgc3RhdGljIGNvbnN0IG1lbWJlciB2YXJpYWJsZXMsIGJ1
dCBJIGRpZCBkZWZpbmUgdGhlbSBpbiB0aGUgY2xhc3MgYm9keS4gV2hhdCdzIHdyb25nPyAjIwor
CitJZiB5b3VyIGNsYXNzIGhhcyBhIHN0YXRpYyBkYXRhIG1lbWJlcjoKKworYGBgCisvLyBmb28u
aAorY2xhc3MgRm9vIHsKKyAgLi4uCisgIHN0YXRpYyBjb25zdCBpbnQga0JhciA9IDEwMDsKK307
CitgYGAKKworWW91IGFsc28gbmVlZCB0byBkZWZpbmUgaXQgX291dHNpZGVfIG9mIHRoZSBjbGFz
cyBib2R5IGluIGBmb28uY2NgOgorCitgYGAKK2NvbnN0IGludCBGb286OmtCYXI7ICAvLyBObyBp
bml0aWFsaXplciBoZXJlLgorYGBgCisKK090aGVyd2lzZSB5b3VyIGNvZGUgaXMgKippbnZhbGlk
IEMrKyoqLCBhbmQgbWF5IGJyZWFrIGluIHVuZXhwZWN0ZWQgd2F5cy4gSW4KK3BhcnRpY3VsYXIs
IHVzaW5nIGl0IGluIEdvb2dsZSBUZXN0IGNvbXBhcmlzb24gYXNzZXJ0aW9ucyAoYEVYUEVDVF9F
UWAsIGV0YykKK3dpbGwgZ2VuZXJhdGUgYW4gInVuZGVmaW5lZCByZWZlcmVuY2UiIGxpbmtlciBl
cnJvci4KKworIyMgSSBoYXZlIGFuIGludGVyZmFjZSB0aGF0IGhhcyBzZXZlcmFsIGltcGxlbWVu
dGF0aW9ucy4gQ2FuIEkgd3JpdGUgYSBzZXQgb2YgdGVzdHMgb25jZSBhbmQgcmVwZWF0IHRoZW0g
b3ZlciBhbGwgdGhlIGltcGxlbWVudGF0aW9ucz8gIyMKKworR29vZ2xlIFRlc3QgZG9lc24ndCB5
ZXQgaGF2ZSBnb29kIHN1cHBvcnQgZm9yIHRoaXMga2luZCBvZiB0ZXN0cywgb3IKK2RhdGEtZHJp
dmVuIHRlc3RzIGluIGdlbmVyYWwuIFdlIGhvcGUgdG8gYmUgYWJsZSB0byBtYWtlIGltcHJvdmVt
ZW50cyBpbiB0aGlzCithcmVhIHNvb24uCisKKyMjIENhbiBJIGRlcml2ZSBhIHRlc3QgZml4dHVy
ZSBmcm9tIGFub3RoZXI/ICMjCisKK1llcy4KKworRWFjaCB0ZXN0IGZpeHR1cmUgaGFzIGEgY29y
cmVzcG9uZGluZyBhbmQgc2FtZSBuYW1lZCB0ZXN0IGNhc2UuIFRoaXMgbWVhbnMgb25seQorb25l
IHRlc3QgY2FzZSBjYW4gdXNlIGEgcGFydGljdWxhciBmaXh0dXJlLiBTb21ldGltZXMsIGhvd2V2
ZXIsIG11bHRpcGxlIHRlc3QKK2Nhc2VzIG1heSB3YW50IHRvIHVzZSB0aGUgc2FtZSBvciBzbGln
aHRseSBkaWZmZXJlbnQgZml4dHVyZXMuIEZvciBleGFtcGxlLCB5b3UKK21heSB3YW50IHRvIG1h
a2Ugc3VyZSB0aGF0IGFsbCBvZiBhIEdVSSBsaWJyYXJ5J3MgdGVzdCBjYXNlcyBkb24ndCBsZWFr
CitpbXBvcnRhbnQgc3lzdGVtIHJlc291cmNlcyBsaWtlIGZvbnRzIGFuZCBicnVzaGVzLgorCitJ
biBHb29nbGUgVGVzdCwgeW91IHNoYXJlIGEgZml4dHVyZSBhbW9uZyB0ZXN0IGNhc2VzIGJ5IHB1
dHRpbmcgdGhlIHNoYXJlZAorbG9naWMgaW4gYSBiYXNlIHRlc3QgZml4dHVyZSwgdGhlbiBkZXJp
dmluZyBmcm9tIHRoYXQgYmFzZSBhIHNlcGFyYXRlIGZpeHR1cmUKK2ZvciBlYWNoIHRlc3QgY2Fz
ZSB0aGF0IHdhbnRzIHRvIHVzZSB0aGlzIGNvbW1vbiBsb2dpYy4gWW91IHRoZW4gdXNlIGBURVNU
X0YoKWAKK3RvIHdyaXRlIHRlc3RzIHVzaW5nIGVhY2ggZGVyaXZlZCBmaXh0dXJlLgorCitUeXBp
Y2FsbHksIHlvdXIgY29kZSBsb29rcyBsaWtlIHRoaXM6CisKK2BgYAorLy8gRGVmaW5lcyBhIGJh
c2UgdGVzdCBmaXh0dXJlLgorY2xhc3MgQmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHsKKyAgcHJvdGVjdGVkOgorICAgLi4uCit9OworCisvLyBEZXJpdmVzIGEgZml4dHVyZSBGb29U
ZXN0IGZyb20gQmFzZVRlc3QuCitjbGFzcyBGb29UZXN0IDogcHVibGljIEJhc2VUZXN0IHsKKyAg
cHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICAgIEJhc2VUZXN0OjpT
ZXRVcCgpOyAgLy8gU2V0cyB1cCB0aGUgYmFzZSBmaXh0dXJlIGZpcnN0LgorICAgICAgLi4uIGFk
ZGl0aW9uYWwgc2V0LXVwIHdvcmsgLi4uCisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93
bigpIHsKKyAgICAgIC4uLiBjbGVhbi11cCB3b3JrIGZvciBGb29UZXN0IC4uLgorICAgICAgQmFz
ZVRlc3Q6OlRlYXJEb3duKCk7ICAvLyBSZW1lbWJlciB0byB0ZWFyIGRvd24gdGhlIGJhc2UgZml4
dHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciBjbGVhbmluZyB1cCBG
b29UZXN0IQorICAgIH0KKyAgICAuLi4gZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMgZm9yIEZvb1Rl
c3QgLi4uCit9OworCisvLyBUZXN0cyB0aGF0IHVzZSB0aGUgZml4dHVyZSBGb29UZXN0LgorVEVT
VF9GKEZvb1Rlc3QsIEJhcikgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIEJheikgeyAuLi4gfQor
CisuLi4gYWRkaXRpb25hbCBmaXh0dXJlcyBkZXJpdmVkIGZyb20gQmFzZVRlc3QgLi4uCitgYGAK
KworSWYgbmVjZXNzYXJ5LCB5b3UgY2FuIGNvbnRpbnVlIHRvIGRlcml2ZSB0ZXN0IGZpeHR1cmVz
IGZyb20gYSBkZXJpdmVkIGZpeHR1cmUuCitHb29nbGUgVGVzdCBoYXMgbm8gbGltaXQgb24gaG93
IGRlZXAgdGhlIGhpZXJhcmNoeSBjYW4gYmUuCisKK0ZvciBhIGNvbXBsZXRlIGV4YW1wbGUgdXNp
bmcgZGVyaXZlZCB0ZXN0IGZpeHR1cmVzLCBzZWUKK1tzYW1wbGU1XSguLi9zYW1wbGVzL3NhbXBs
ZTVfdW5pdHRlc3QuY2MpLgorCisjIyBNeSBjb21waWxlciBjb21wbGFpbnMgInZvaWQgdmFsdWUg
bm90IGlnbm9yZWQgYXMgaXQgb3VnaHQgdG8gYmUuIiBXaGF0IGRvZXMgdGhpcyBtZWFuPyAjIwor
CitZb3UncmUgcHJvYmFibHkgdXNpbmcgYW4gYEFTU0VSVF8qKClgIGluIGEgZnVuY3Rpb24gdGhh
dCBkb2Vzbid0IHJldHVybiBgdm9pZGAuCitgQVNTRVJUXyooKWAgY2FuIG9ubHkgYmUgdXNlZCBp
biBgdm9pZGAgZnVuY3Rpb25zLgorCisjIyBNeSBkZWF0aCB0ZXN0IGhhbmdzIChvciBzZWctZmF1
bHRzKS4gSG93IGRvIEkgZml4IGl0PyAjIworCitJbiBHb29nbGUgVGVzdCwgZGVhdGggdGVzdHMg
YXJlIHJ1biBpbiBhIGNoaWxkIHByb2Nlc3MgYW5kIHRoZSB3YXkgdGhleSB3b3JrIGlzCitkZWxp
Y2F0ZS4gVG8gd3JpdGUgZGVhdGggdGVzdHMgeW91IHJlYWxseSBuZWVkIHRvIHVuZGVyc3RhbmQg
aG93IHRoZXkgd29yay4KK1BsZWFzZSBtYWtlIHN1cmUgeW91IGhhdmUgcmVhZCB0aGlzLgorCitJ
biBwYXJ0aWN1bGFyLCBkZWF0aCB0ZXN0cyBkb24ndCBsaWtlIGhhdmluZyBtdWx0aXBsZSB0aHJl
YWRzIGluIHRoZSBwYXJlbnQKK3Byb2Nlc3MuIFNvIHRoZSBmaXJzdCB0aGluZyB5b3UgY2FuIHRy
eSBpcyB0byBlbGltaW5hdGUgY3JlYXRpbmcgdGhyZWFkcworb3V0c2lkZSBvZiBgRVhQRUNUX0RF
QVRIKClgLgorCitTb21ldGltZXMgdGhpcyBpcyBpbXBvc3NpYmxlIGFzIHNvbWUgbGlicmFyeSB5
b3UgbXVzdCB1c2UgbWF5IGJlIGNyZWF0aW5nCit0aHJlYWRzIGJlZm9yZSBgbWFpbigpYCBpcyBl
dmVuIHJlYWNoZWQuIEluIHRoaXMgY2FzZSwgeW91IGNhbiB0cnkgdG8gbWluaW1pemUKK3RoZSBj
aGFuY2Ugb2YgY29uZmxpY3RzIGJ5IGVpdGhlciBtb3ZpbmcgYXMgbWFueSBhY3Rpdml0aWVzIGFz
IHBvc3NpYmxlIGluc2lkZQorYEVYUEVDVF9ERUFUSCgpYCAoaW4gdGhlIGV4dHJlbWUgY2FzZSwg
eW91IHdhbnQgdG8gbW92ZSBldmVyeXRoaW5nIGluc2lkZSksIG9yCitsZWF2aW5nIGFzIGZldyB0
aGluZ3MgYXMgcG9zc2libGUgaW4gaXQuIEFsc28sIHlvdSBjYW4gdHJ5IHRvIHNldCB0aGUgZGVh
dGgKK3Rlc3Qgc3R5bGUgdG8gYCJ0aHJlYWRzYWZlImAsIHdoaWNoIGlzIHNhZmVyIGJ1dCBzbG93
ZXIsIGFuZCBzZWUgaWYgaXQgaGVscHMuCisKK0lmIHlvdSBnbyB3aXRoIHRocmVhZC1zYWZlIGRl
YXRoIHRlc3RzLCByZW1lbWJlciB0aGF0IHRoZXkgcmVydW4gdGhlIHRlc3QKK3Byb2dyYW0gZnJv
bSB0aGUgYmVnaW5uaW5nIGluIHRoZSBjaGlsZCBwcm9jZXNzLiBUaGVyZWZvcmUgbWFrZSBzdXJl
IHlvdXIKK3Byb2dyYW0gY2FuIHJ1biBzaWRlLWJ5LXNpZGUgd2l0aCBpdHNlbGYgYW5kIGlzIGRl
dGVybWluaXN0aWMuCisKK0luIHRoZSBlbmQsIHRoaXMgYm9pbHMgZG93biB0byBnb29kIGNvbmN1
cnJlbnQgcHJvZ3JhbW1pbmcuIFlvdSBoYXZlIHRvIG1ha2UKK3N1cmUgdGhhdCB0aGVyZSBpcyBu
byByYWNlIGNvbmRpdGlvbnMgb3IgZGVhZCBsb2NrcyBpbiB5b3VyIHByb2dyYW0uIE5vIHNpbHZl
cgorYnVsbGV0IC0gc29ycnkhCisKKyMjIFNob3VsZCBJIHVzZSB0aGUgY29uc3RydWN0b3IvZGVz
dHJ1Y3RvciBvZiB0aGUgdGVzdCBmaXh0dXJlIG9yIHRoZSBzZXQtdXAvdGVhci1kb3duIGZ1bmN0
aW9uPyAjIworCitUaGUgZmlyc3QgdGhpbmcgdG8gcmVtZW1iZXIgaXMgdGhhdCBHb29nbGUgVGVz
dCBkb2VzIG5vdCByZXVzZSB0aGUKK3NhbWUgdGVzdCBmaXh0dXJlIG9iamVjdCBhY3Jvc3MgbXVs
dGlwbGUgdGVzdHMuIEZvciBlYWNoIGBURVNUX0ZgLAorR29vZ2xlIFRlc3Qgd2lsbCBjcmVhdGUg
YSBmcmVzaCB0ZXN0IGZpeHR1cmUgb2JqZWN0LCBfaW1tZWRpYXRlbHlfCitjYWxsIGBTZXRVcCgp
YCwgcnVuIHRoZSB0ZXN0LCBjYWxsIGBUZWFyRG93bigpYCwgYW5kIHRoZW4KK19pbW1lZGlhdGVs
eV8gZGVsZXRlIHRoZSB0ZXN0IGZpeHR1cmUgb2JqZWN0LiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5v
CituZWVkIHRvIHdyaXRlIGEgYFNldFVwKClgIG9yIGBUZWFyRG93bigpYCBmdW5jdGlvbiBpZiB0
aGUgY29uc3RydWN0b3IKK29yIGRlc3RydWN0b3IgYWxyZWFkeSBkb2VzIHRoZSBqb2IuCisKK1lv
dSBtYXkgc3RpbGwgd2FudCB0byB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAgaW4gdGhlIGZvbGxv
d2luZyBjYXNlczoKKyAgKiBJZiB0aGUgdGVhci1kb3duIG9wZXJhdGlvbiBjb3VsZCB0aHJvdyBh
biBleGNlcHRpb24sIHlvdSBtdXN0IHVzZSBgVGVhckRvd24oKWAgYXMgb3Bwb3NlZCB0byB0aGUg
ZGVzdHJ1Y3RvciwgYXMgdGhyb3dpbmcgaW4gYSBkZXN0cnVjdG9yIGxlYWRzIHRvIHVuZGVmaW5l
ZCBiZWhhdmlvciBhbmQgdXN1YWxseSB3aWxsIGtpbGwgeW91ciBwcm9ncmFtIHJpZ2h0IGF3YXku
IE5vdGUgdGhhdCBtYW55IHN0YW5kYXJkIGxpYnJhcmllcyAobGlrZSBTVEwpIG1heSB0aHJvdyB3
aGVuIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQgaW4gdGhlIGNvbXBpbGVyLiBUaGVyZWZvcmUgeW91
IHNob3VsZCBwcmVmZXIgYFRlYXJEb3duKClgIGlmIHlvdSB3YW50IHRvIHdyaXRlIHBvcnRhYmxl
IHRlc3RzIHRoYXQgd29yayB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucy4KKyAgKiBUaGUgYXNz
ZXJ0aW9uIG1hY3JvcyB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBmbGFnIGAtLWd0ZXN0X3Rocm93
X29uX2ZhaWx1cmVgIGlzIHNwZWNpZmllZC4gVGhlcmVmb3JlLCB5b3Ugc2hvdWxkbid0IHVzZSBH
b29nbGUgVGVzdCBhc3NlcnRpb25zIGluIGEgZGVzdHJ1Y3RvciBpZiB5b3UgcGxhbiB0byBydW4g
eW91ciB0ZXN0cyB3aXRoIHRoaXMgZmxhZy4KKyAgKiBJbiBhIGNvbnN0cnVjdG9yIG9yIGRlc3Ry
dWN0b3IsIHlvdSBjYW5ub3QgbWFrZSBhIHZpcnR1YWwgZnVuY3Rpb24gY2FsbCBvbiB0aGlzIG9i
amVjdC4gKFlvdSBjYW4gY2FsbCBhIG1ldGhvZCBkZWNsYXJlZCBhcyB2aXJ0dWFsLCBidXQgaXQg
d2lsbCBiZSBzdGF0aWNhbGx5IGJvdW5kLikgVGhlcmVmb3JlLCBpZiB5b3UgbmVlZCB0byBjYWxs
IGEgbWV0aG9kIHRoYXQgd2lsbCBiZSBvdmVycmlkZW4gaW4gYSBkZXJpdmVkIGNsYXNzLCB5b3Ug
aGF2ZSB0byB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAuCisKKyMjIFRoZSBjb21waWxlciBjb21w
bGFpbnMgIm5vIG1hdGNoaW5nIGZ1bmN0aW9uIHRvIGNhbGwiIHdoZW4gSSB1c2UgQVNTRVJUXF9Q
UkVEbi4gSG93IGRvIEkgZml4IGl0PyAjIworCitJZiB0aGUgcHJlZGljYXRlIGZ1bmN0aW9uIHlv
dSB1c2UgaW4gYEFTU0VSVF9QUkVEKmAgb3IgYEVYUEVDVF9QUkVEKmAgaXMKK292ZXJsb2FkZWQg
b3IgYSB0ZW1wbGF0ZSwgdGhlIGNvbXBpbGVyIHdpbGwgaGF2ZSB0cm91YmxlIGZpZ3VyaW5nIG91
dCB3aGljaAorb3ZlcmxvYWRlZCB2ZXJzaW9uIGl0IHNob3VsZCB1c2UuIGBBU1NFUlRfUFJFRF9G
T1JNQVQqYCBhbmQKK2BFWFBFQ1RfUFJFRF9GT1JNQVQqYCBkb24ndCBoYXZlIHRoaXMgcHJvYmxl
bS4KKworSWYgeW91IHNlZSB0aGlzIGVycm9yLCB5b3UgbWlnaHQgd2FudCB0byBzd2l0Y2ggdG8K
K2AoQVNTRVJUfEVYUEVDVClfUFJFRF9GT1JNQVQqYCwgd2hpY2ggd2lsbCBhbHNvIGdpdmUgeW91
IGEgYmV0dGVyIGZhaWx1cmUKK21lc3NhZ2UuIElmLCBob3dldmVyLCB0aGF0IGlzIG5vdCBhbiBv
cHRpb24sIHlvdSBjYW4gcmVzb2x2ZSB0aGUgcHJvYmxlbSBieQorZXhwbGljaXRseSB0ZWxsaW5n
IHRoZSBjb21waWxlciB3aGljaCB2ZXJzaW9uIHRvIHBpY2suCisKK0ZvciBleGFtcGxlLCBzdXBw
b3NlIHlvdSBoYXZlCisKK2BgYAorYm9vbCBJc1Bvc2l0aXZlKGludCBuKSB7CisgIHJldHVybiBu
ID4gMDsKK30KK2Jvb2wgSXNQb3NpdGl2ZShkb3VibGUgeCkgeworICByZXR1cm4geCA+IDA7Cit9
CitgYGAKKworeW91IHdpbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IgaWYgeW91IHdyaXRlCisKK2Bg
YAorRVhQRUNUX1BSRUQxKElzUG9zaXRpdmUsIDUpOworYGBgCisKK0hvd2V2ZXIsIHRoaXMgd2ls
bCB3b3JrOgorCitgYGAKK0VYUEVDVF9QUkVEMSgqc3RhdGljX2Nhc3Q8Ym9vbCAoKikoaW50KT4q
KElzUG9zaXRpdmUpLCA1KTsKK2BgYAorCisoVGhlIHN0dWZmIGluc2lkZSB0aGUgYW5nbGVkIGJy
YWNrZXRzIGZvciB0aGUgYHN0YXRpY19jYXN0YCBvcGVyYXRvciBpcyB0aGUKK3R5cGUgb2YgdGhl
IGZ1bmN0aW9uIHBvaW50ZXIgZm9yIHRoZSBgaW50YC12ZXJzaW9uIG9mIGBJc1Bvc2l0aXZlKClg
LikKKworQXMgYW5vdGhlciBleGFtcGxlLCB3aGVuIHlvdSBoYXZlIGEgdGVtcGxhdGUgZnVuY3Rp
b24KKworYGBgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Jvb2wgSXNOZWdhdGl2ZShUIHgpIHsK
KyAgcmV0dXJuIHggPCAwOworfQorYGBgCisKK3lvdSBjYW4gdXNlIGl0IGluIGEgcHJlZGljYXRl
IGFzc2VydGlvbiBsaWtlIHRoaXM6CisKK2BgYAorQVNTRVJUX1BSRUQxKElzTmVnYXRpdmUqPGlu
dD4qLCAtNSk7CitgYGAKKworVGhpbmdzIGFyZSBtb3JlIGludGVyZXN0aW5nIGlmIHlvdXIgdGVt
cGxhdGUgaGFzIG1vcmUgdGhhbiBvbmUgcGFyYW1ldGVycy4gVGhlCitmb2xsb3dpbmcgd29uJ3Qg
Y29tcGlsZToKKworYGBgCitBU1NFUlRfUFJFRDIoKkdyZWF0ZXJUaGFuPGludCwgaW50PiosIDUs
IDApOworYGBgCisKKworYXMgdGhlIEMrKyBwcmUtcHJvY2Vzc29yIHRoaW5rcyB5b3UgYXJlIGdp
dmluZyBgQVNTRVJUX1BSRUQyYCA0IGFyZ3VtZW50cywKK3doaWNoIGlzIG9uZSBtb3JlIHRoYW4g
ZXhwZWN0ZWQuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIHdyYXAgdGhlIHByZWRpY2F0ZQorZnVuY3Rp
b24gaW4gcGFyZW50aGVzZXM6CisKK2BgYAorQVNTRVJUX1BSRUQyKCooR3JlYXRlclRoYW48aW50
LCBpbnQ+KSosIDUsIDApOworYGBgCisKKworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0
ICJpZ25vcmluZyByZXR1cm4gdmFsdWUiIHdoZW4gSSBjYWxsIFJVTlxfQUxMXF9URVNUUygpLiBX
aHk/ICMjCisKK1NvbWUgcGVvcGxlIGhhZCBiZWVuIGlnbm9yaW5nIHRoZSByZXR1cm4gdmFsdWUg
b2YgYFJVTl9BTExfVEVTVFMoKWAuIFRoYXQgaXMsCitpbnN0ZWFkIG9mCisKK2BgYAorcmV0dXJu
IFJVTl9BTExfVEVTVFMoKTsKK2BgYAorCit0aGV5IHdyaXRlCisKK2BgYAorUlVOX0FMTF9URVNU
UygpOworYGBgCisKK1RoaXMgaXMgd3JvbmcgYW5kIGRhbmdlcm91cy4gQSB0ZXN0IHJ1bm5lciBu
ZWVkcyB0byBzZWUgdGhlIHJldHVybiB2YWx1ZSBvZgorYFJVTl9BTExfVEVTVFMoKWAgaW4gb3Jk
ZXIgdG8gZGV0ZXJtaW5lIGlmIGEgdGVzdCBoYXMgcGFzc2VkLiBJZiB5b3VyIGBtYWluKClgCitm
dW5jdGlvbiBpZ25vcmVzIGl0LCB5b3VyIHRlc3Qgd2lsbCBiZSBjb25zaWRlcmVkIHN1Y2Nlc3Nm
dWwgZXZlbiBpZiBpdCBoYXMgYQorR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIGZhaWx1cmUuIFZlcnkg
YmFkLgorCitUbyBoZWxwIHRoZSB1c2VycyBhdm9pZCB0aGlzIGRhbmdlcm91cyBidWcsIHRoZSBp
bXBsZW1lbnRhdGlvbiBvZgorYFJVTl9BTExfVEVTVFMoKWAgY2F1c2VzIGdjYyB0byByYWlzZSB0
aGlzIHdhcm5pbmcsIHdoZW4gdGhlIHJldHVybiB2YWx1ZSBpcworaWdub3JlZC4gSWYgeW91IHNl
ZSB0aGlzIHdhcm5pbmcsIHRoZSBmaXggaXMgc2ltcGxlOiBqdXN0IG1ha2Ugc3VyZSBpdHMgdmFs
dWUKK2lzIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZSBvZiBgbWFpbigpYC4KKworIyMgTXkgY29t
cGlsZXIgY29tcGxhaW5zIHRoYXQgYSBjb25zdHJ1Y3RvciAob3IgZGVzdHJ1Y3RvcikgY2Fubm90
IHJldHVybiBhIHZhbHVlLiBXaGF0J3MgZ29pbmcgb24/ICMjCisKK0R1ZSB0byBhIHBlY3VsaWFy
aXR5IG9mIEMrKywgaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGUgc3ludGF4IGZvciBzdHJlYW1pbmcK
K21lc3NhZ2VzIHRvIGFuIGBBU1NFUlRfKmAsIGUuZy4KKworYGBgCitBU1NFUlRfRVEoMSwgRm9v
KCkpIDw8ICJibGFoIGJsYWgiIDw8IGZvbzsKK2BgYAorCit3ZSBoYWQgdG8gZ2l2ZSB1cCB1c2lu
ZyBgQVNTRVJUKmAgYW5kIGBGQUlMKmAgKGJ1dCBub3QgYEVYUEVDVCpgIGFuZAorYEFERF9GQUlM
VVJFKmApIGluIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMuIFRoZSB3b3JrYXJvdW5kIGlz
IHRvIG1vdmUgdGhlCitjb250ZW50IG9mIHlvdXIgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciB0byBh
IHByaXZhdGUgdm9pZCBtZW1iZXIgZnVuY3Rpb24sIG9yCitzd2l0Y2ggdG8gYEVYUEVDVF8qKClg
IGlmIHRoYXQgd29ya3MuIFRoaXMgc2VjdGlvbiBpbiB0aGUgdXNlcidzIGd1aWRlIGV4cGxhaW5z
CitpdC4KKworIyMgTXkgc2V0LXVwIGZ1bmN0aW9uIGlzIG5vdCBjYWxsZWQuIFdoeT8gIyMKKwor
QysrIGlzIGNhc2Utc2Vuc2l0aXZlLiBJdCBzaG91bGQgYmUgc3BlbGxlZCBhcyBgU2V0VXAoKWAu
ICBEaWQgeW91CitzcGVsbCBpdCBhcyBgU2V0dXAoKWA/CisKK1NpbWlsYXJseSwgc29tZXRpbWVz
IHBlb3BsZSBzcGVsbCBgU2V0VXBUZXN0Q2FzZSgpYCBhcyBgU2V0dXBUZXN0Q2FzZSgpYCBhbmQK
K3dvbmRlciB3aHkgaXQncyBuZXZlciBjYWxsZWQuCisKKyMjIEhvdyBkbyBJIGp1bXAgdG8gdGhl
IGxpbmUgb2YgYSBmYWlsdXJlIGluIEVtYWNzIGRpcmVjdGx5PyAjIworCitHb29nbGUgVGVzdCdz
IGZhaWx1cmUgbWVzc2FnZSBmb3JtYXQgaXMgdW5kZXJzdG9vZCBieSBFbWFjcyBhbmQgbWFueSBv
dGhlcgorSURFcywgbGlrZSBhY21lIGFuZCBYQ29kZS4gSWYgYSBHb29nbGUgVGVzdCBtZXNzYWdl
IGlzIGluIGEgY29tcGlsYXRpb24gYnVmZmVyCitpbiBFbWFjcywgdGhlbiBpdCdzIGNsaWNrYWJs
ZS4gWW91IGNhbiBub3cgaGl0IGBlbnRlcmAgb24gYSBtZXNzYWdlIHRvIGp1bXAgdG8KK3RoZSBj
b3JyZXNwb25kaW5nIHNvdXJjZSBjb2RlLCBvciB1c2UgYEMteCBgYCB0byBqdW1wIHRvIHRoZSBu
ZXh0IGZhaWx1cmUuCisKKyMjIEkgaGF2ZSBzZXZlcmFsIHRlc3QgY2FzZXMgd2hpY2ggc2hhcmUg
dGhlIHNhbWUgdGVzdCBmaXh0dXJlIGxvZ2ljLCBkbyBJIGhhdmUgdG8gZGVmaW5lIGEgbmV3IHRl
c3QgZml4dHVyZSBjbGFzcyBmb3IgZWFjaCBvZiB0aGVtPyBUaGlzIHNlZW1zIHByZXR0eSB0ZWRp
b3VzLiAjIworCitZb3UgZG9uJ3QgaGF2ZSB0by4gSW5zdGVhZCBvZgorCitgYGAKK2NsYXNzIEZv
b1Rlc3QgOiBwdWJsaWMgQmFzZVRlc3Qge307CisKK1RFU1RfRihGb29UZXN0LCBBYmMpIHsgLi4u
IH0KK1RFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0KKworY2xhc3MgQmFyVGVzdCA6IHB1Ymxp
YyBCYXNlVGVzdCB7fTsKKworVEVTVF9GKEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJh
clRlc3QsIERlZikgeyAuLi4gfQorYGBgCisKK3lvdSBjYW4gc2ltcGx5IGB0eXBlZGVmYCB0aGUg
dGVzdCBmaXh0dXJlczoKK2BgYAordHlwZWRlZiBCYXNlVGVzdCBGb29UZXN0OworCitURVNUX0Yo
Rm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9CisKK3R5
cGVkZWYgQmFzZVRlc3QgQmFyVGVzdDsKKworVEVTVF9GKEJhclRlc3QsIEFiYykgeyAuLi4gfQor
VEVTVF9GKEJhclRlc3QsIERlZikgeyAuLi4gfQorYGBgCisKKyMjIFRoZSBHb29nbGUgVGVzdCBv
dXRwdXQgaXMgYnVyaWVkIGluIGEgd2hvbGUgYnVuY2ggb2YgbG9nIG1lc3NhZ2VzLiBXaGF0IGRv
IEkgZG8/ICMjCisKK1RoZSBHb29nbGUgVGVzdCBvdXRwdXQgaXMgbWVhbnQgdG8gYmUgYSBjb25j
aXNlIGFuZCBodW1hbi1mcmllbmRseSByZXBvcnQuIElmCit5b3VyIHRlc3QgZ2VuZXJhdGVzIHRl
eHR1YWwgb3V0cHV0IGl0c2VsZiwgaXQgd2lsbCBtaXggd2l0aCB0aGUgR29vZ2xlIFRlc3QKK291
dHB1dCwgbWFraW5nIGl0IGhhcmQgdG8gcmVhZC4gSG93ZXZlciwgdGhlcmUgaXMgYW4gZWFzeSBz
b2x1dGlvbiB0byB0aGlzCitwcm9ibGVtLgorCitTaW5jZSBtb3N0IGxvZyBtZXNzYWdlcyBnbyB0
byBzdGRlcnIsIHdlIGRlY2lkZWQgdG8gbGV0IEdvb2dsZSBUZXN0IG91dHB1dCBnbwordG8gc3Rk
b3V0LiBUaGlzIHdheSwgeW91IGNhbiBlYXNpbHkgc2VwYXJhdGUgdGhlIHR3byB1c2luZyByZWRp
cmVjdGlvbi4gRm9yCitleGFtcGxlOgorYGBgCisuL215X3Rlc3QgPiBnb29nbGV0ZXN0X291dHB1
dC50eHQKK2BgYAorCisjIyBXaHkgc2hvdWxkIEkgcHJlZmVyIHRlc3QgZml4dHVyZXMgb3ZlciBn
bG9iYWwgdmFyaWFibGVzPyAjIworCitUaGVyZSBhcmUgc2V2ZXJhbCBnb29kIHJlYXNvbnM6Cisg
IDEuIEl0J3MgbGlrZWx5IHlvdXIgdGVzdCBuZWVkcyB0byBjaGFuZ2UgdGhlIHN0YXRlcyBvZiBp
dHMgZ2xvYmFsIHZhcmlhYmxlcy4gVGhpcyBtYWtlcyBpdCBkaWZmaWN1bHQgdG8ga2VlcCBzaWRl
IGVmZmVjdHMgZnJvbSBlc2NhcGluZyBvbmUgdGVzdCBhbmQgY29udGFtaW5hdGluZyBvdGhlcnMs
IG1ha2luZyBkZWJ1Z2dpbmcgZGlmZmljdWx0LiBCeSB1c2luZyBmaXh0dXJlcywgZWFjaCB0ZXN0
IGhhcyBhIGZyZXNoIHNldCBvZiB2YXJpYWJsZXMgdGhhdCdzIGRpZmZlcmVudCAoYnV0IHdpdGgg
dGhlIHNhbWUgbmFtZXMpLiBUaHVzLCB0ZXN0cyBhcmUga2VwdCBpbmRlcGVuZGVudCBvZiBlYWNo
IG90aGVyLgorICAxLiBHbG9iYWwgdmFyaWFibGVzIHBvbGx1dGUgdGhlIGdsb2JhbCBuYW1lc3Bh
Y2UuCisgIDEuIFRlc3QgZml4dHVyZXMgY2FuIGJlIHJldXNlZCB2aWEgc3ViY2xhc3NpbmcsIHdo
aWNoIGNhbm5vdCBiZSBkb25lIGVhc2lseSB3aXRoIGdsb2JhbCB2YXJpYWJsZXMuIFRoaXMgaXMg
dXNlZnVsIGlmIG1hbnkgdGVzdCBjYXNlcyBoYXZlIHNvbWV0aGluZyBpbiBjb21tb24uCisKKyMj
IEhvdyBkbyBJIHRlc3QgcHJpdmF0ZSBjbGFzcyBtZW1iZXJzIHdpdGhvdXQgd3JpdGluZyBGUklF
TkRcX1RFU1QoKXM/ICMjCisKK1lvdSBzaG91bGQgdHJ5IHRvIHdyaXRlIHRlc3RhYmxlIGNvZGUs
IHdoaWNoIG1lYW5zIGNsYXNzZXMgc2hvdWxkIGJlIGVhc2lseQordGVzdGVkIGZyb20gdGhlaXIg
cHVibGljIGludGVyZmFjZS4gT25lIHdheSB0byBhY2hpZXZlIHRoaXMgaXMgdGhlIFBpbXBsIGlk
aW9tOgoreW91IG1vdmUgYWxsIHByaXZhdGUgbWVtYmVycyBvZiBhIGNsYXNzIGludG8gYSBoZWxw
ZXIgY2xhc3MsIGFuZCBtYWtlIGFsbAorbWVtYmVycyBvZiB0aGUgaGVscGVyIGNsYXNzIHB1Ymxp
Yy4KKworWW91IGhhdmUgc2V2ZXJhbCBvdGhlciBvcHRpb25zIHRoYXQgZG9uJ3QgcmVxdWlyZSB1
c2luZyBgRlJJRU5EX1RFU1RgOgorICAqIFdyaXRlIHRoZSB0ZXN0cyBhcyBtZW1iZXJzIG9mIHRo
ZSBmaXh0dXJlIGNsYXNzOgorYGBgCitjbGFzcyBGb28geworICBmcmllbmQgY2xhc3MgRm9vVGVz
dDsKKyAgLi4uCit9OworCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
CisgcHJvdGVjdGVkOgorICAuLi4KKyAgdm9pZCBUZXN0MSgpIHsuLi59IC8vIFRoaXMgYWNjZXNz
ZXMgcHJpdmF0ZSBtZW1iZXJzIG9mIGNsYXNzIEZvby4KKyAgdm9pZCBUZXN0MigpIHsuLi59IC8v
IFNvIGRvZXMgdGhpcyBvbmUuCit9OworCitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgVGVz
dDEoKTsKK30KKworVEVTVF9GKEZvb1Rlc3QsIFRlc3QyKSB7CisgIFRlc3QyKCk7Cit9CitgYGAK
KyAgKiBJbiB0aGUgZml4dHVyZSBjbGFzcywgd3JpdGUgYWNjZXNzb3JzIGZvciB0aGUgdGVzdGVk
IGNsYXNzJyBwcml2YXRlIG1lbWJlcnMsIHRoZW4gdXNlIHRoZSBhY2Nlc3NvcnMgaW4geW91ciB0
ZXN0czoKK2BgYAorY2xhc3MgRm9vIHsKKyAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7CisgIC4uLgor
fTsKKworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3Rl
ZDoKKyAgLi4uCisgIFQxIGdldF9wcml2YXRlX21lbWJlcjEoRm9vKiBvYmopIHsKKyAgICByZXR1
cm4gb2JqLT5wcml2YXRlX21lbWJlcjFfOworICB9Cit9OworCitURVNUX0YoRm9vVGVzdCwgVGVz
dDEpIHsKKyAgLi4uCisgIGdldF9wcml2YXRlX21lbWJlcjEoeCkKKyAgLi4uCit9CitgYGAKKyAg
KiBJZiB0aGUgbWV0aG9kcyBhcmUgZGVjbGFyZWQgKipwcm90ZWN0ZWQqKiwgeW91IGNhbiBjaGFu
Z2UgdGhlaXIgYWNjZXNzIGxldmVsIGluIGEgdGVzdC1vbmx5IHN1YmNsYXNzOgorYGBgCitjbGFz
cyBZb3VyQ2xhc3MgeworICAuLi4KKyBwcm90ZWN0ZWQ6IC8vIHByb3RlY3RlZCBhY2Nlc3MgZm9y
IHRlc3RhYmlsaXR5LgorICBpbnQgRG9Tb21ldGhpbmdSZXR1cm5pbmdJbnQoKTsKKyAgLi4uCit9
OworCisvLyBpbiB0aGUgeW91cl9jbGFzc190ZXN0LmNjIGZpbGU6CitjbGFzcyBUZXN0YWJsZVlv
dXJDbGFzcyA6IHB1YmxpYyBZb3VyQ2xhc3MgeworICAuLi4KKyBwdWJsaWM6IHVzaW5nIFlvdXJD
bGFzczo6RG9Tb21ldGhpbmdSZXR1cm5pbmdJbnQ7IC8vIGNoYW5nZXMgYWNjZXNzIHJpZ2h0cwor
ICAuLi4KK307CisKK1RFU1RfRihZb3VyQ2xhc3NUZXN0LCBEb1NvbWV0aGluZ1Rlc3QpIHsKKyAg
VGVzdGFibGVZb3VyQ2xhc3Mgb2JqOworICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWRfdmFsdWUsIG9i
ai5Eb1NvbWV0aGluZ1JldHVybmluZ0ludCgpKTsKK30KK2BgYAorCisjIyBIb3cgZG8gSSB0ZXN0
IHByaXZhdGUgY2xhc3Mgc3RhdGljIG1lbWJlcnMgd2l0aG91dCB3cml0aW5nIEZSSUVORFxfVEVT
VCgpcz8gIyMKKworV2UgZmluZCBwcml2YXRlIHN0YXRpYyBtZXRob2RzIGNsdXR0ZXIgdGhlIGhl
YWRlciBmaWxlLiAgVGhleSBhcmUKK2ltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIGlkZWFsbHkg
c2hvdWxkIGJlIGtlcHQgb3V0IG9mIGEgLmguIFNvIG9mdGVuIEkgbWFrZQordGhlbSBmcmVlIGZ1
bmN0aW9ucyBpbnN0ZWFkLgorCitJbnN0ZWFkIG9mOgorYGBgCisvLyBmb28uaAorY2xhc3MgRm9v
IHsKKyAgLi4uCisgcHJpdmF0ZToKKyAgc3RhdGljIGJvb2wgRnVuYyhpbnQgbik7Cit9OworCisv
LyBmb28uY2MKK2Jvb2wgRm9vOjpGdW5jKGludCBuKSB7IC4uLiB9CisKKy8vIGZvb190ZXN0LmNj
CitFWFBFQ1RfVFJVRShGb286OkZ1bmMoMTIzNDUpKTsKK2BgYAorCitZb3UgcHJvYmFibHkgc2hv
dWxkIGJldHRlciB3cml0ZToKK2BgYAorLy8gZm9vLmgKK2NsYXNzIEZvbyB7CisgIC4uLgorfTsK
KworLy8gZm9vLmNjCituYW1lc3BhY2UgaW50ZXJuYWwgeworICBib29sIEZ1bmMoaW50IG4pIHsg
Li4uIH0KK30KKworLy8gZm9vX3Rlc3QuY2MKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisgIGJvb2wg
RnVuYyhpbnQgbik7Cit9CisKK0VYUEVDVF9UUlVFKGludGVybmFsOjpGdW5jKDEyMzQ1KSk7Citg
YGAKKworIyMgSSB3b3VsZCBsaWtlIHRvIHJ1biBhIHRlc3Qgc2V2ZXJhbCB0aW1lcyB3aXRoIGRp
ZmZlcmVudCBwYXJhbWV0ZXJzLiBEbyBJIG5lZWQgdG8gd3JpdGUgc2V2ZXJhbCBzaW1pbGFyIGNv
cGllcyBvZiBpdD8gIyMKKworTm8uIFlvdSBjYW4gdXNlIGEgZmVhdHVyZSBjYWxsZWQgW3ZhbHVl
LXBhcmFtZXRlcml6ZWQgdGVzdHNdKFYxXzdfQWR2YW5jZWRHdWlkZS5tZCNWYWx1ZV9QYXJhbWV0
ZXJpemVkX1Rlc3RzKSB3aGljaAorbGV0cyB5b3UgcmVwZWF0IHlvdXIgdGVzdHMgd2l0aCBkaWZm
ZXJlbnQgcGFyYW1ldGVycywgd2l0aG91dCBkZWZpbmluZyBpdCBtb3JlIHRoYW4gb25jZS4KKwor
IyMgSG93IGRvIEkgdGVzdCBhIGZpbGUgdGhhdCBkZWZpbmVzIG1haW4oKT8gIyMKKworVG8gdGVz
dCBhIGBmb28uY2NgIGZpbGUsIHlvdSBuZWVkIHRvIGNvbXBpbGUgYW5kIGxpbmsgaXQgaW50byB5
b3VyIHVuaXQgdGVzdAorcHJvZ3JhbS4gSG93ZXZlciwgd2hlbiB0aGUgZmlsZSBjb250YWlucyBh
IGRlZmluaXRpb24gZm9yIHRoZSBgbWFpbigpYAorZnVuY3Rpb24sIGl0IHdpbGwgY2xhc2ggd2l0
aCB0aGUgYG1haW4oKWAgb2YgeW91ciB1bml0IHRlc3QsIGFuZCB3aWxsIHJlc3VsdCBpbgorYSBi
dWlsZCBlcnJvci4KKworVGhlIHJpZ2h0IHNvbHV0aW9uIGlzIHRvIHNwbGl0IGl0IGludG8gdGhy
ZWUgZmlsZXM6CisgIDEuIGBmb28uaGAgd2hpY2ggY29udGFpbnMgdGhlIGRlY2xhcmF0aW9ucywK
KyAgMS4gYGZvby5jY2Agd2hpY2ggY29udGFpbnMgdGhlIGRlZmluaXRpb25zIGV4Y2VwdCBgbWFp
bigpYCwgYW5kCisgIDEuIGBmb29fbWFpbi5jY2Agd2hpY2ggY29udGFpbnMgbm90aGluZyBidXQg
dGhlIGRlZmluaXRpb24gb2YgYG1haW4oKWAuCisKK1RoZW4gYGZvby5jY2AgY2FuIGJlIGVhc2ls
eSB0ZXN0ZWQuCisKK0lmIHlvdSBhcmUgYWRkaW5nIHRlc3RzIHRvIGFuIGV4aXN0aW5nIGZpbGUg
YW5kIGRvbid0IHdhbnQgYW4gaW50cnVzaXZlIGNoYW5nZQorbGlrZSB0aGlzLCB0aGVyZSBpcyBh
IGhhY2s6IGp1c3QgaW5jbHVkZSB0aGUgZW50aXJlIGBmb28uY2NgIGZpbGUgaW4geW91ciB1bml0
Cit0ZXN0LiBGb3IgZXhhbXBsZToKK2BgYAorLy8gRmlsZSBmb29fdW5pdHRlc3QuY2MKKworLy8g
VGhlIGhlYWRlcnMgc2VjdGlvbgorLi4uCisKKy8vIFJlbmFtZXMgbWFpbigpIGluIGZvby5jYyB0
byBtYWtlIHJvb20gZm9yIHRoZSB1bml0IHRlc3QgbWFpbigpCisjZGVmaW5lIG1haW4gRm9vTWFp
bgorCisjaW5jbHVkZSAiYS9iL2Zvby5jYyIKKworLy8gVGhlIHRlc3RzIHN0YXJ0IGhlcmUuCisu
Li4KK2BgYAorCisKK0hvd2V2ZXIsIHBsZWFzZSByZW1lbWJlciB0aGlzIGlzIGEgaGFjayBhbmQg
c2hvdWxkIG9ubHkgYmUgdXNlZCBhcyB0aGUgbGFzdAorcmVzb3J0LgorCisjIyBXaGF0IGNhbiB0
aGUgc3RhdGVtZW50IGFyZ3VtZW50IGluIEFTU0VSVFxfREVBVEgoKSBiZT8gIyMKKworYEFTU0VS
VF9ERUFUSChfc3RhdGVtZW50XywgX3JlZ2V4XylgIChvciBhbnkgZGVhdGggYXNzZXJ0aW9uIG1h
Y3JvKSBjYW4gYmUgdXNlZAord2hlcmV2ZXIgYF9zdGF0ZW1lbnRfYCBpcyB2YWxpZC4gU28gYmFz
aWNhbGx5IGBfc3RhdGVtZW50X2AgY2FuIGJlIGFueSBDKysKK3N0YXRlbWVudCB0aGF0IG1ha2Vz
IHNlbnNlIGluIHRoZSBjdXJyZW50IGNvbnRleHQuIEluIHBhcnRpY3VsYXIsIGl0IGNhbgorcmVm
ZXJlbmNlIGdsb2JhbCBhbmQvb3IgbG9jYWwgdmFyaWFibGVzLCBhbmQgY2FuIGJlOgorICAqIGEg
c2ltcGxlIGZ1bmN0aW9uIGNhbGwgKG9mdGVuIHRoZSBjYXNlKSwKKyAgKiBhIGNvbXBsZXggZXhw
cmVzc2lvbiwgb3IKKyAgKiBhIGNvbXBvdW5kIHN0YXRlbWVudC4KKworPiBTb21lIGV4YW1wbGVz
IGFyZSBzaG93biBoZXJlOgorCitgYGAKKy8vIEEgZGVhdGggdGVzdCBjYW4gYmUgYSBzaW1wbGUg
ZnVuY3Rpb24gY2FsbC4KK1RFU1QoTXlEZWF0aFRlc3QsIEZ1bmN0aW9uQ2FsbCkgeworICBBU1NF
UlRfREVBVEgoWHl6KDUpLCAiWHl6IGZhaWxlZCIpOworfQorCisvLyBPciBhIGNvbXBsZXggZXhw
cmVzc2lvbiB0aGF0IHJlZmVyZW5jZXMgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMuCitURVNUKE15
RGVhdGhUZXN0LCBDb21wbGV4RXhwcmVzc2lvbikgeworICBjb25zdCBib29sIGMgPSBDb25kaXRp
b24oKTsKKyAgQVNTRVJUX0RFQVRIKChjID8gRnVuYzEoMCkgOiBvYmplY3QyLk1ldGhvZCgidGVz
dCIpKSwKKyAgICAgICAgICAgICAgICIoRnVuYzF8TWV0aG9kKSBmYWlsZWQiKTsKK30KKworLy8g
RGVhdGggYXNzZXJ0aW9ucyBjYW4gYmUgdXNlZCBhbnkgd2hlcmUgaW4gYSBmdW5jdGlvbi4gSW4K
Ky8vIHBhcnRpY3VsYXIsIHRoZXkgY2FuIGJlIGluc2lkZSBhIGxvb3AuCitURVNUKE15RGVhdGhU
ZXN0LCBJbnNpZGVMb29wKSB7CisgIC8vIFZlcmlmaWVzIHRoYXQgRm9vKDApLCBGb28oMSksIC4u
LiwgYW5kIEZvbyg0KSBhbGwgZGllLgorICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgewor
ICAgIEVYUEVDVF9ERUFUSF9NKEZvbyhpKSwgIkZvbyBoYXMgXFxkKyBlcnJvcnMiLAorICAgICAg
ICAgICAgICAgICAgIDo6dGVzdGluZzo6TWVzc2FnZSgpIDw8ICJ3aGVyZSBpIGlzICIgPDwgaSk7
CisgIH0KK30KKworLy8gQSBkZWF0aCBhc3NlcnRpb24gY2FuIGNvbnRhaW4gYSBjb21wb3VuZCBz
dGF0ZW1lbnQuCitURVNUKE15RGVhdGhUZXN0LCBDb21wb3VuZFN0YXRlbWVudCkgeworICAvLyBW
ZXJpZmllcyB0aGF0IGF0IGxlYXNlIG9uZSBvZiBCYXIoMCksIEJhcigxKSwgLi4uLCBhbmQKKyAg
Ly8gQmFyKDQpIGRpZXMuCisgIEFTU0VSVF9ERUFUSCh7CisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCA1OyBpKyspIHsKKyAgICAgIEJhcihpKTsKKyAgICB9CisgIH0sCisgICJCYXIgaGFzIFxcZCsg
ZXJyb3JzIik7fQorYGBgCisKK2Bnb29nbGV0ZXN0X3VuaXR0ZXN0LmNjYCBjb250YWlucyBtb3Jl
IGV4YW1wbGVzIGlmIHlvdSBhcmUgaW50ZXJlc3RlZC4KKworIyMgV2hhdCBzeW50YXggZG9lcyB0
aGUgcmVndWxhciBleHByZXNzaW9uIGluIEFTU0VSVFxfREVBVEggdXNlPyAjIworCitPbiBQT1NJ
WCBzeXN0ZW1zLCBHb29nbGUgVGVzdCB1c2VzIHRoZSBQT1NJWCBFeHRlbmRlZCByZWd1bGFyCitl
eHByZXNzaW9uIHN5bnRheAorKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVndWxhcl9l
eHByZXNzaW9uI1BPU0lYX0V4dGVuZGVkX1JlZ3VsYXJfRXhwcmVzc2lvbnMpLgorT24gV2luZG93
cywgaXQgdXNlcyBhIGxpbWl0ZWQgdmFyaWFudCBvZiByZWd1bGFyIGV4cHJlc3Npb24KK3N5bnRh
eC4gRm9yIG1vcmUgZGV0YWlscywgc2VlIHRoZQorW3JlZ3VsYXIgZXhwcmVzc2lvbiBzeW50YXhd
KFYxXzdfQWR2YW5jZWRHdWlkZS5tZCNSZWd1bGFyX0V4cHJlc3Npb25fU3ludGF4KS4KKworIyMg
SSBoYXZlIGEgZml4dHVyZSBjbGFzcyBGb28sIGJ1dCBURVNUXF9GKEZvbywgQmFyKSBnaXZlcyBt
ZSBlcnJvciAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gZm9yIGNhbGwgdG8gRm9vOjpGb28oKSIuIFdo
eT8gIyMKKworR29vZ2xlIFRlc3QgbmVlZHMgdG8gYmUgYWJsZSB0byBjcmVhdGUgb2JqZWN0cyBv
ZiB5b3VyIHRlc3QgZml4dHVyZSBjbGFzcywgc28KK2l0IG11c3QgaGF2ZSBhIGRlZmF1bHQgY29u
c3RydWN0b3IuIE5vcm1hbGx5IHRoZSBjb21waWxlciB3aWxsIGRlZmluZSBvbmUgZm9yCit5b3Uu
IEhvd2V2ZXIsIHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB5b3UgaGF2ZSB0byBkZWZpbmUgeW91ciBv
d246CisgICogSWYgeW91IGV4cGxpY2l0bHkgZGVjbGFyZSBhIG5vbi1kZWZhdWx0IGNvbnN0cnVj
dG9yIGZvciBjbGFzcyBgRm9vYCwgdGhlbiB5b3UgbmVlZCB0byBkZWZpbmUgYSBkZWZhdWx0IGNv
bnN0cnVjdG9yLCBldmVuIGlmIGl0IHdvdWxkIGJlIGVtcHR5LgorICAqIElmIGBGb29gIGhhcyBh
IGNvbnN0IG5vbi1zdGF0aWMgZGF0YSBtZW1iZXIsIHRoZW4geW91IGhhdmUgdG8gZGVmaW5lIHRo
ZSBkZWZhdWx0IGNvbnN0cnVjdG9yIF9hbmRfIGluaXRpYWxpemUgdGhlIGNvbnN0IG1lbWJlciBp
biB0aGUgaW5pdGlhbGl6ZXIgbGlzdCBvZiB0aGUgY29uc3RydWN0b3IuIChFYXJseSB2ZXJzaW9u
cyBvZiBgZ2NjYCBkb2Vzbid0IGZvcmNlIHlvdSB0byBpbml0aWFsaXplIHRoZSBjb25zdCBtZW1i
ZXIuIEl0J3MgYSBidWcgdGhhdCBoYXMgYmVlbiBmaXhlZCBpbiBgZ2NjIDRgLikKKworIyMgV2h5
IGRvZXMgQVNTRVJUXF9ERUFUSCBjb21wbGFpbiBhYm91dCBwcmV2aW91cyB0aHJlYWRzIHRoYXQg
d2VyZSBhbHJlYWR5IGpvaW5lZD8gIyMKKworV2l0aCB0aGUgTGludXggcHRocmVhZCBsaWJyYXJ5
LCB0aGVyZSBpcyBubyB0dXJuaW5nIGJhY2sgb25jZSB5b3UgY3Jvc3MgdGhlCitsaW5lIGZyb20g
c2luZ2xlIHRocmVhZCB0byBtdWx0aXBsZSB0aHJlYWRzLiBUaGUgZmlyc3QgdGltZSB5b3UgY3Jl
YXRlIGEKK3RocmVhZCwgYSBtYW5hZ2VyIHRocmVhZCBpcyBjcmVhdGVkIGluIGFkZGl0aW9uLCBz
byB5b3UgZ2V0IDMsIG5vdCAyLCB0aHJlYWRzLgorTGF0ZXIgd2hlbiB0aGUgdGhyZWFkIHlvdSBj
cmVhdGUgam9pbnMgdGhlIG1haW4gdGhyZWFkLCB0aGUgdGhyZWFkIGNvdW50CitkZWNyZW1lbnRz
IGJ5IDEsIGJ1dCB0aGUgbWFuYWdlciB0aHJlYWQgd2lsbCBuZXZlciBiZSBraWxsZWQsIHNvIHlv
dSBzdGlsbCBoYXZlCisyIHRocmVhZHMsIHdoaWNoIG1lYW5zIHlvdSBjYW5ub3Qgc2FmZWx5IHJ1
biBhIGRlYXRoIHRlc3QuCisKK1RoZSBuZXcgTlBUTCB0aHJlYWQgbGlicmFyeSBkb2Vzbid0IHN1
ZmZlciBmcm9tIHRoaXMgcHJvYmxlbSwgYXMgaXQgZG9lc24ndAorY3JlYXRlIGEgbWFuYWdlciB0
aHJlYWQuIEhvd2V2ZXIsIGlmIHlvdSBkb24ndCBjb250cm9sIHdoaWNoIG1hY2hpbmUgeW91ciB0
ZXN0CitydW5zIG9uLCB5b3Ugc2hvdWxkbid0IGRlcGVuZCBvbiB0aGlzLgorCisjIyBXaHkgZG9l
cyBHb29nbGUgVGVzdCByZXF1aXJlIHRoZSBlbnRpcmUgdGVzdCBjYXNlLCBpbnN0ZWFkIG9mIGlu
ZGl2aWR1YWwgdGVzdHMsIHRvIGJlIG5hbWVkIEZPT0RlYXRoVGVzdCB3aGVuIGl0IHVzZXMgQVNT
RVJUXF9ERUFUSD8gIyMKKworR29vZ2xlIFRlc3QgZG9lcyBub3QgaW50ZXJsZWF2ZSB0ZXN0cyBm
cm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLiBUaGF0IGlzLCBpdAorcnVucyBhbGwgdGVzdHMgaW4g
b25lIHRlc3QgY2FzZSBmaXJzdCwgYW5kIHRoZW4gcnVucyBhbGwgdGVzdHMgaW4gdGhlIG5leHQg
dGVzdAorY2FzZSwgYW5kIHNvIG9uLiBHb29nbGUgVGVzdCBkb2VzIHRoaXMgYmVjYXVzZSBpdCBu
ZWVkcyB0byBzZXQgdXAgYSB0ZXN0IGNhc2UKK2JlZm9yZSB0aGUgZmlyc3QgdGVzdCBpbiBpdCBp
cyBydW4sIGFuZCB0ZWFyIGl0IGRvd24gYWZ0ZXJ3b3Jkcy4gU3BsaXR0aW5nIHVwCit0aGUgdGVz
dCBjYXNlIHdvdWxkIHJlcXVpcmUgbXVsdGlwbGUgc2V0LXVwIGFuZCB0ZWFyLWRvd24gcHJvY2Vz
c2VzLCB3aGljaCBpcworaW5lZmZpY2llbnQgYW5kIG1ha2VzIHRoZSBzZW1hbnRpY3MgdW5jbGVh
bi4KKworSWYgd2Ugd2VyZSB0byBkZXRlcm1pbmUgdGhlIG9yZGVyIG9mIHRlc3RzIGJhc2VkIG9u
IHRlc3QgbmFtZSBpbnN0ZWFkIG9mIHRlc3QKK2Nhc2UgbmFtZSwgdGhlbiB3ZSB3b3VsZCBoYXZl
IGEgcHJvYmxlbSB3aXRoIHRoZSBmb2xsb3dpbmcgc2l0dWF0aW9uOgorCitgYGAKK1RFU1RfRihG
b29UZXN0LCBBYmNEZWF0aFRlc3QpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBVdncpIHsgLi4u
IH0KKworVEVTVF9GKEJhclRlc3QsIERlZkRlYXRoVGVzdCkgeyAuLi4gfQorVEVTVF9GKEJhclRl
c3QsIFh5eikgeyAuLi4gfQorYGBgCisKK1NpbmNlIGBGb29UZXN0LkFiY0RlYXRoVGVzdGAgbmVl
ZHMgdG8gcnVuIGJlZm9yZSBgQmFyVGVzdC5YeXpgLCBhbmQgd2UgZG9uJ3QKK2ludGVybGVhdmUg
dGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcywgd2UgbmVlZCB0byBydW4gYWxsIHRlc3Rz
IGluIHRoZQorYEZvb1Rlc3RgIGNhc2UgYmVmb3JlIHJ1bm5pbmcgYW55IHRlc3QgaW4gdGhlIGBC
YXJUZXN0YCBjYXNlLiBUaGlzIGNvbnRyYWRpY3RzCit3aXRoIHRoZSByZXF1aXJlbWVudCB0byBy
dW4gYEJhclRlc3QuRGVmRGVhdGhUZXN0YCBiZWZvcmUgYEZvb1Rlc3QuVXZ3YC4KKworIyMgQnV0
IEkgZG9uJ3QgbGlrZSBjYWxsaW5nIG15IGVudGlyZSB0ZXN0IGNhc2UgRk9PRGVhdGhUZXN0IHdo
ZW4gaXQgY29udGFpbnMgYm90aCBkZWF0aCB0ZXN0cyBhbmQgbm9uLWRlYXRoIHRlc3RzLiBXaGF0
IGRvIEkgZG8/ICMjCisKK1lvdSBkb24ndCBoYXZlIHRvLCBidXQgaWYgeW91IGxpa2UsIHlvdSBt
YXkgc3BsaXQgdXAgdGhlIHRlc3QgY2FzZSBpbnRvCitgRm9vVGVzdGAgYW5kIGBGb29EZWF0aFRl
c3RgLCB3aGVyZSB0aGUgbmFtZXMgbWFrZSBpdCBjbGVhciB0aGF0IHRoZXkgYXJlCityZWxhdGVk
OgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07
CisKK1RFU1RfRihGb29UZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBEZWYpIHsg
Li4uIH0KKwordHlwZWRlZiBGb29UZXN0IEZvb0RlYXRoVGVzdDsKKworVEVTVF9GKEZvb0RlYXRo
VGVzdCwgVXZ3KSB7IC4uLiBFWFBFQ1RfREVBVEgoLi4uKSAuLi4gfQorVEVTVF9GKEZvb0RlYXRo
VGVzdCwgWHl6KSB7IC4uLiBBU1NFUlRfREVBVEgoLi4uKSAuLi4gfQorYGBgCisKKyMjIFRoZSBj
b21waWxlciBjb21wbGFpbnMgYWJvdXQgIm5vIG1hdGNoIGZvciAnb3BlcmF0b3I8PCciIHdoZW4g
SSB1c2UgYW4gYXNzZXJ0aW9uLiBXaGF0IGdpdmVzPyAjIworCitJZiB5b3UgdXNlIGEgdXNlci1k
ZWZpbmVkIHR5cGUgYEZvb1R5cGVgIGluIGFuIGFzc2VydGlvbiwgeW91IG11c3QgbWFrZSBzdXJl
Cit0aGVyZSBpcyBhbiBgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYsIGNv
bnN0IEZvb1R5cGUmKWAgZnVuY3Rpb24KK2RlZmluZWQgc3VjaCB0aGF0IHdlIGNhbiBwcmludCBh
IHZhbHVlIG9mIGBGb29UeXBlYC4KKworSW4gYWRkaXRpb24sIGlmIGBGb29UeXBlYCBpcyBkZWNs
YXJlZCBpbiBhIG5hbWUgc3BhY2UsIHRoZSBgPDxgIG9wZXJhdG9yIGFsc28KK25lZWRzIHRvIGJl
IGRlZmluZWQgaW4gdGhlIF9zYW1lXyBuYW1lIHNwYWNlLgorCisjIyBIb3cgZG8gSSBzdXBwcmVz
cyB0aGUgbWVtb3J5IGxlYWsgbWVzc2FnZXMgb24gV2luZG93cz8gIyMKKworU2luY2UgdGhlIHN0
YXRpY2FsbHkgaW5pdGlhbGl6ZWQgR29vZ2xlIFRlc3Qgc2luZ2xldG9uIHJlcXVpcmVzIGFsbG9j
YXRpb25zIG9uCit0aGUgaGVhcCwgdGhlIFZpc3VhbCBDKysgbWVtb3J5IGxlYWsgZGV0ZWN0b3Ig
d2lsbCByZXBvcnQgbWVtb3J5IGxlYWtzIGF0IHRoZQorZW5kIG9mIHRoZSBwcm9ncmFtIHJ1bi4g
VGhlIGVhc2llc3Qgd2F5IHRvIGF2b2lkIHRoaXMgaXMgdG8gdXNlIHRoZQorYF9DcnRNZW1DaGVj
a3BvaW50YCBhbmQgYF9DcnRNZW1EdW1wQWxsT2JqZWN0c1NpbmNlYCBjYWxscyB0byBub3QgcmVw
b3J0IGFueQorc3RhdGljYWxseSBpbml0aWFsaXplZCBoZWFwIG9iamVjdHMuIFNlZSBNU0ROIGZv
ciBtb3JlIGRldGFpbHMgYW5kIGFkZGl0aW9uYWwKK2hlYXAgY2hlY2svZGVidWcgcm91dGluZXMu
CisKKyMjIEkgYW0gYnVpbGRpbmcgbXkgcHJvamVjdCB3aXRoIEdvb2dsZSBUZXN0IGluIFZpc3Vh
bCBTdHVkaW8gYW5kIGFsbCBJJ20gZ2V0dGluZyBpcyBhIGJ1bmNoIG9mIGxpbmtlciBlcnJvcnMg
KG9yIHdhcm5pbmdzKS4gSGVscCEgIyMKKworWW91IG1heSBnZXQgYSBudW1iZXIgb2YgdGhlIGZv
bGxvd2luZyBsaW5rZXIgZXJyb3Igb3Igd2FybmluZ3MgaWYgeW91CithdHRlbXB0IHRvIGxpbmsg
eW91ciB0ZXN0IHByb2plY3Qgd2l0aCB0aGUgR29vZ2xlIFRlc3QgbGlicmFyeSB3aGVuCit5b3Vy
IHByb2plY3QgYW5kIHRoZSBhcmUgbm90IGJ1aWx0IHVzaW5nIHRoZSBzYW1lIGNvbXBpbGVyIHNl
dHRpbmdzLgorCisgICogTE5LMjAwNTogc3ltYm9sIGFscmVhZHkgZGVmaW5lZCBpbiBvYmplY3QK
KyAgKiBMTks0MjE3OiBsb2NhbGx5IGRlZmluZWQgc3ltYm9sICdzeW1ib2wnIGltcG9ydGVkIGlu
IGZ1bmN0aW9uICdmdW5jdGlvbicKKyAgKiBMTks0MDQ5OiBsb2NhbGx5IGRlZmluZWQgc3ltYm9s
ICdzeW1ib2wnIGltcG9ydGVkCisKK1RoZSBHb29nbGUgVGVzdCBwcm9qZWN0IChndGVzdC52Y3By
b2opIGhhcyB0aGUgUnVudGltZSBMaWJyYXJ5IG9wdGlvbgorc2V0IHRvIC9NVCAodXNlIG11bHRp
LXRocmVhZGVkIHN0YXRpYyBsaWJyYXJpZXMsIC9NVGQgZm9yIGRlYnVnKS4gSWYKK3lvdXIgcHJv
amVjdCB1c2VzIHNvbWV0aGluZyBlbHNlLCBmb3IgZXhhbXBsZSAvTUQgKHVzZSBtdWx0aS10aHJl
YWRlZAorRExMcywgL01EZCBmb3IgZGVidWcpLCB5b3UgbmVlZCB0byBjaGFuZ2UgdGhlIHNldHRp
bmcgaW4gdGhlIEdvb2dsZQorVGVzdCBwcm9qZWN0IHRvIG1hdGNoIHlvdXIgcHJvamVjdCdzLgor
CitUbyB1cGRhdGUgdGhpcyBzZXR0aW5nIG9wZW4gdGhlIHByb2plY3QgcHJvcGVydGllcyBpbiB0
aGUgVmlzdWFsCitTdHVkaW8gSURFIHRoZW4gc2VsZWN0IHRoZSBicmFuY2ggQ29uZmlndXJhdGlv
biBQcm9wZXJ0aWVzIHwgQy9DKysgfAorQ29kZSBHZW5lcmF0aW9uIGFuZCBjaGFuZ2UgdGhlIG9w
dGlvbiAiUnVudGltZSBMaWJyYXJ5Ii4gIFlvdSBtYXkgYWxzbyB0cnkKK3VzaW5nIGd0ZXN0LW1k
LnZjcHJvaiBpbnN0ZWFkIG9mIGd0ZXN0LnZjcHJvai4KKworIyMgSSBwdXQgbXkgdGVzdHMgaW4g
YSBsaWJyYXJ5IGFuZCBHb29nbGUgVGVzdCBkb2Vzbid0IHJ1biB0aGVtLiBXaGF0J3MgaGFwcGVu
aW5nPyAjIworSGF2ZSB5b3UgcmVhZCBhCitbd2FybmluZ10oVjFfN19QcmltZXIubWQjaW1wb3J0
YW50LW5vdGUtZm9yLXZpc3VhbC1jLXVzZXJzKSBvbgordGhlIEdvb2dsZSBUZXN0IFByaW1lciBw
YWdlPworCisjIyBJIHdhbnQgdG8gdXNlIEdvb2dsZSBUZXN0IHdpdGggVmlzdWFsIFN0dWRpbyBi
dXQgZG9uJ3Qga25vdyB3aGVyZSB0byBzdGFydC4gIyMKK01hbnkgcGVvcGxlIGFyZSBpbiB5b3Vy
IHBvc2l0aW9uIGFuZCBvbmUgb2YgdGhlIHBvc3RlZCBoaXMgc29sdXRpb24gdG8KK291ciBtYWls
aW5nIGxpc3QuIEhlcmUgaXMgaGlzIGxpbms6CitodHRwOi8vaGFzc2FuamFtaWxhaG1hZC5ibG9n
c3BvdC5jb20vMjAwOS8wNy9ndGVzdC1zdGFydGVycy1oZWxwLmh0bWwuCisKKyMjIEkgYW0gc2Vl
aW5nIGNvbXBpbGUgZXJyb3JzIG1lbnRpb25pbmcgc3RkOjp0eXBlXF90cmFpdHMgd2hlbiBJIHRy
eSB0byB1c2UgR29vZ2xlIFRlc3Qgb24gU29sYXJpcy4gIyMKK0dvb2dsZSBUZXN0IHVzZXMgcGFy
dHMgb2YgdGhlIHN0YW5kYXJkIEMrKyBsaWJyYXJ5IHRoYXQgU3VuU3R1ZGlvIGRvZXMgbm90IHN1
cHBvcnQuCitPdXIgdXNlcnMgcmVwb3J0ZWQgc3VjY2VzcyB1c2luZyBhbHRlcm5hdGl2ZSBpbXBs
ZW1lbnRhdGlvbnMuIFRyeSBydW5uaW5nIHRoZSBidWlsZCBhZnRlciBydW5pbmcgdGhpcyBjb21t
YWQ6CisKK2BleHBvcnQgQ0M9Y2MgQ1hYPUNDIENYWEZMQUdTPSctbGlicmFyeT1zdGxwb3J0NCdg
CisKKyMjIEhvdyBjYW4gbXkgY29kZSBkZXRlY3QgaWYgaXQgaXMgcnVubmluZyBpbiBhIHRlc3Q/
ICMjCisKK0lmIHlvdSB3cml0ZSBjb2RlIHRoYXQgc25pZmZzIHdoZXRoZXIgaXQncyBydW5uaW5n
IGluIGEgdGVzdCBhbmQgZG9lcworZGlmZmVyZW50IHRoaW5ncyBhY2NvcmRpbmdseSwgeW91IGFy
ZSBsZWFraW5nIHRlc3Qtb25seSBsb2dpYyBpbnRvCitwcm9kdWN0aW9uIGNvZGUgYW5kIHRoZXJl
IGlzIG5vIGVhc3kgd2F5IHRvIGVuc3VyZSB0aGF0IHRoZSB0ZXN0LW9ubHkKK2NvZGUgcGF0aHMg
YXJlbid0IHJ1biBieSBtaXN0YWtlIGluIHByb2R1Y3Rpb24uICBTdWNoIGNsZXZlcm5lc3MgYWxz
bworbGVhZHMgdG8KK1tIZWlzZW5idWdzXShodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Vu
dXN1YWxfc29mdHdhcmVfYnVnI0hlaXNlbmJ1ZykuCitUaGVyZWZvcmUgd2Ugc3Ryb25nbHkgYWR2
aXNlIGFnYWluc3QgdGhlIHByYWN0aWNlLCBhbmQgR29vZ2xlIFRlc3QgZG9lc24ndAorcHJvdmlk
ZSBhIHdheSB0byBkbyBpdC4KKworSW4gZ2VuZXJhbCwgdGhlIHJlY29tbWVuZGVkIHdheSB0byBj
YXVzZSB0aGUgY29kZSB0byBiZWhhdmUKK2RpZmZlcmVudGx5IHVuZGVyIHRlc3QgaXMgW2RlcGVu
ZGVuY3kgaW5qZWN0aW9uXShodHRwOi8vamFtZXNzaG9yZS5jb20vQmxvZy9EZXBlbmRlbmN5LUlu
amVjdGlvbi1EZW15c3RpZmllZC5odG1sKS4KK1lvdSBjYW4gaW5qZWN0IGRpZmZlcmVudCBmdW5j
dGlvbmFsaXR5IGZyb20gdGhlIHRlc3QgYW5kIGZyb20gdGhlCitwcm9kdWN0aW9uIGNvZGUuICBT
aW5jZSB5b3VyIHByb2R1Y3Rpb24gY29kZSBkb2Vzbid0IGxpbmsgaW4gdGhlCitmb3ItdGVzdCBs
b2dpYyBhdCBhbGwsIHRoZXJlIGlzIG5vIGRhbmdlciBpbiBhY2NpZGVudGFsbHkgcnVubmluZyBp
dC4KKworSG93ZXZlciwgaWYgeW91IF9yZWFsbHlfLCBfcmVhbGx5XywgX3JlYWxseV8gaGF2ZSBu
byBjaG9pY2UsIGFuZCBpZgoreW91IGZvbGxvdyB0aGUgcnVsZSBvZiBlbmRpbmcgeW91ciB0ZXN0
IHByb2dyYW0gbmFtZXMgd2l0aCBgX3Rlc3RgLAoreW91IGNhbiB1c2UgdGhlIF9ob3JyaWJsZV8g
aGFjayBvZiBzbmlmZmluZyB5b3VyIGV4ZWN1dGFibGUgbmFtZQorKGBhcmd2WzBdYCBpbiBgbWFp
bigpYCkgdG8ga25vdyB3aGV0aGVyIHRoZSBjb2RlIGlzIHVuZGVyIHRlc3QuCisKKyMjIEdvb2ds
ZSBUZXN0IGRlZmluZXMgYSBtYWNybyB0aGF0IGNsYXNoZXMgd2l0aCBvbmUgZGVmaW5lZCBieSBh
bm90aGVyIGxpYnJhcnkuIEhvdyBkbyBJIGRlYWwgd2l0aCB0aGF0PyAjIworCitJbiBDKyssIG1h
Y3JvcyBkb24ndCBvYmV5IG5hbWVzcGFjZXMuICBUaGVyZWZvcmUgdHdvIGxpYnJhcmllcyB0aGF0
Citib3RoIGRlZmluZSBhIG1hY3JvIG9mIHRoZSBzYW1lIG5hbWUgd2lsbCBjbGFzaCBpZiB5b3Ug
YCNpbmNsdWRlYCBib3RoCitkZWZpbml0aW9ucy4gIEluIGNhc2UgYSBHb29nbGUgVGVzdCBtYWNy
byBjbGFzaGVzIHdpdGggYW5vdGhlcgorbGlicmFyeSwgeW91IGNhbiBmb3JjZSBHb29nbGUgVGVz
dCB0byByZW5hbWUgaXRzIG1hY3JvIHRvIGF2b2lkIHRoZQorY29uZmxpY3QuCisKK1NwZWNpZmlj
YWxseSwgaWYgYm90aCBHb29nbGUgVGVzdCBhbmQgc29tZSBvdGhlciBjb2RlIGRlZmluZSBtYWNy
bworYEZPT2AsIHlvdSBjYW4gYWRkCitgYGAKKyAgLURHVEVTVF9ET05UX0RFRklORV9GT089MQor
YGBgCit0byB0aGUgY29tcGlsZXIgZmxhZ3MgdG8gdGVsbCBHb29nbGUgVGVzdCB0byBjaGFuZ2Ug
dGhlIG1hY3JvJ3MgbmFtZQorZnJvbSBgRk9PYCB0byBgR1RFU1RfRk9PYC4gRm9yIGV4YW1wbGUs
IHdpdGggYC1ER1RFU1RfRE9OVF9ERUZJTkVfVEVTVD0xYCwgeW91J2xsIG5lZWQgdG8gd3JpdGUK
K2BgYAorICBHVEVTVF9URVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAuLi4gfQorYGBgCitpbnN0
ZWFkIG9mCitgYGAKKyAgVEVTVChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KK2BgYAoraW4g
b3JkZXIgdG8gZGVmaW5lIGEgdGVzdC4KKworQ3VycmVudGx5LCB0aGUgZm9sbG93aW5nIGBURVNU
YCwgYEZBSUxgLCBgU1VDQ0VFRGAsIGFuZCB0aGUgYmFzaWMgY29tcGFyaXNvbiBhc3NlcnRpb24g
bWFjcm9zIGNhbiBoYXZlIGFsdGVybmF0aXZlIG5hbWVzLiBZb3UgY2FuIHNlZSB0aGUgZnVsbCBs
aXN0IG9mIGNvdmVyZWQgbWFjcm9zIFtoZXJlXShodHRwOi8vd3d3Lmdvb2dsZS5jb20vY29kZXNl
YXJjaD9xPWlmKyFHVEVTVF9ET05UX0RFRklORV9cdyUyQitwYWNrYWdlOmh0dHA6Ly9nb29nbGV0
ZXN0XC5nb29nbGVjb2RlXC5jb20rZmlsZTovaW5jbHVkZS9ndGVzdC9ndGVzdC5oKS4gTW9yZSBp
bmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gdGhlICJBdm9pZGluZyBNYWNybyBOYW1lIENsYXNo
ZXMiIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBmaWxlLgorCisKKyMjIElzIGl0IE9LIGlmIEkgaGF2
ZSB0d28gc2VwYXJhdGUgYFRFU1QoRm9vLCBCYXIpYCB0ZXN0IG1ldGhvZHMgZGVmaW5lZCBpbiBk
aWZmZXJlbnQgbmFtZXNwYWNlcz8gIyMKKworWWVzLgorCitUaGUgcnVsZSBpcyAqKmFsbCB0ZXN0
IG1ldGhvZHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIGZpeHR1cmUg
Y2xhc3MqKi4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgaXMgKiphbGxvd2VkKiogYmVj
YXVzZSBib3RoIHRlc3RzIHVzZSB0aGUgc2FtZSBmaXh0dXJlIGNsYXNzIChgOjp0ZXN0aW5nOjpU
ZXN0YCkuCisKK2BgYAorbmFtZXNwYWNlIGZvbyB7CitURVNUKENvb2xUZXN0LCBEb1NvbWV0aGlu
ZykgeworICBTVUNDRUVEKCk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgZm9vCisKK25hbWVzcGFjZSBi
YXIgeworVEVTVChDb29sVGVzdCwgRG9Tb21ldGhpbmcpIHsKKyAgU1VDQ0VFRCgpOworfQorfSAg
Ly8gbmFtZXNwYWNlIGZvbworYGBgCisKK0hvd2V2ZXIsIHRoZSBmb2xsb3dpbmcgY29kZSBpcyAq
Km5vdCBhbGxvd2VkKiogYW5kIHdpbGwgcHJvZHVjZSBhIHJ1bnRpbWUgZXJyb3IgZnJvbSBHb29n
bGUgVGVzdCBiZWNhdXNlIHRoZSB0ZXN0IG1ldGhvZHMgYXJlIHVzaW5nIGRpZmZlcmVudCB0ZXN0
IGZpeHR1cmUgY2xhc3NlcyB3aXRoIHRoZSBzYW1lIHRlc3QgY2FzZSBuYW1lLgorCitgYGAKK25h
bWVzcGFjZSBmb28geworY2xhc3MgQ29vbFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9
OyAgLy8gRml4dHVyZSBmb286OkNvb2xUZXN0CitURVNUX0YoQ29vbFRlc3QsIERvU29tZXRoaW5n
KSB7CisgIFNVQ0NFRUQoKTsKK30KK30gIC8vIG5hbWVzcGFjZSBmb28KKworbmFtZXNwYWNlIGJh
ciB7CitjbGFzcyBDb29sVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307ICAvLyBGaXh0
dXJlOiBiYXI6OkNvb2xUZXN0CitURVNUX0YoQ29vbFRlc3QsIERvU29tZXRoaW5nKSB7CisgIFNV
Q0NFRUQoKTsKK30KK30gIC8vIG5hbWVzcGFjZSBmb28KK2BgYAorCisjIyBIb3cgZG8gSSBidWls
ZCBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgd2l0aCBYY29kZSA0PyAjIworCitJZiB5b3UgdHJ5
IHRvIGJ1aWxkIEdvb2dsZSBUZXN0J3MgWGNvZGUgcHJvamVjdCB3aXRoIFhjb2RlIDQuMCBvciBs
YXRlciwgeW91IG1heSBlbmNvdW50ZXIgYW4gZXJyb3IgbWVzc2FnZSB0aGF0IGxvb2tzIGxpa2UK
KyJNaXNzaW5nIFNESyBpbiB0YXJnZXQgZ3Rlc3RcX2ZyYW1ld29yazogL0RldmVsb3Blci9TREtz
L01hY09TWDEwLjR1LnNkayIuIFRoYXQgbWVhbnMgdGhhdCBYY29kZSBkb2VzIG5vdCBzdXBwb3J0
IHRoZSBTREsgdGhlIHByb2plY3QgaXMgdGFyZ2V0aW5nLiBTZWUgdGhlIFhjb2RlIHNlY3Rpb24g
aW4gdGhlIFtSRUFETUVdKC4uLy4uL1JFQURNRS5NRCkgZmlsZSBvbiBob3cgdG8gcmVzb2x2ZSB0
aGlzLgorCisjIyBNeSBxdWVzdGlvbiBpcyBub3QgY292ZXJlZCBpbiB5b3VyIEZBUSEgIyMKKwor
SWYgeW91IGNhbm5vdCBmaW5kIHRoZSBhbnN3ZXIgdG8geW91ciBxdWVzdGlvbiBpbiB0aGlzIEZB
USwgdGhlcmUgYXJlCitzb21lIG90aGVyIHJlc291cmNlcyB5b3UgY2FuIHVzZToKKworICAxLiBy
ZWFkIG90aGVyIFt3aWtpIHBhZ2VzXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVz
dC93L2xpc3QpLAorICAxLiBzZWFyY2ggdGhlIG1haWxpbmcgbGlzdCBbYXJjaGl2ZV0oaHR0cDov
L2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZXRlc3RmcmFtZXdvcmsvdG9waWNzKSwKKyAg
MS4gYXNrIGl0IG9uIFtnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb21dKG1haWx0
bzpnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20pIGFuZCBzb21lb25lIHdpbGwg
YW5zd2VyIGl0ICh0byBwcmV2ZW50IHNwYW0sIHdlIHJlcXVpcmUgeW91IHRvIGpvaW4gdGhlIFtk
aXNjdXNzaW9uIGdyb3VwXShodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xldGVz
dGZyYW1ld29yaykgYmVmb3JlIHlvdSBjYW4gcG9zdC4pLgorCitQbGVhc2Ugbm90ZSB0aGF0IGNy
ZWF0aW5nIGFuIGlzc3VlIGluIHRoZQorW2lzc3VlIHRyYWNrZXJdKGh0dHA6Ly9jb2RlLmdvb2ds
ZS5jb20vcC9nb29nbGV0ZXN0L2lzc3Vlcy9saXN0KSBpcyBfbm90XworYSBnb29kIHdheSB0byBn
ZXQgeW91ciBhbnN3ZXIsIGFzIGl0IGlzIG1vbml0b3JlZCBpbmZyZXF1ZW50bHkgYnkgYQordmVy
eSBzbWFsbCBudW1iZXIgb2YgcGVvcGxlLgorCitXaGVuIGFza2luZyBhIHF1ZXN0aW9uLCBpdCdz
IGhlbHBmdWwgdG8gcHJvdmlkZSBhcyBtdWNoIG9mIHRoZQorZm9sbG93aW5nIGluZm9ybWF0aW9u
IGFzIHBvc3NpYmxlIChwZW9wbGUgY2Fubm90IGhlbHAgeW91IGlmIHRoZXJlJ3MKK25vdCBlbm91
Z2ggaW5mb3JtYXRpb24gaW4geW91ciBxdWVzdGlvbik6CisKKyAgKiB0aGUgdmVyc2lvbiAob3Ig
dGhlIHJldmlzaW9uIG51bWJlciBpZiB5b3UgY2hlY2sgb3V0IGZyb20gU1ZOIGRpcmVjdGx5KSBv
ZiBHb29nbGUgVGVzdCB5b3UgdXNlIChHb29nbGUgVGVzdCBpcyB1bmRlciBhY3RpdmUgZGV2ZWxv
cG1lbnQsIHNvIGl0J3MgcG9zc2libGUgdGhhdCB5b3VyIHByb2JsZW0gaGFzIGJlZW4gc29sdmVk
IGluIGEgbGF0ZXIgdmVyc2lvbiksCisgICogeW91ciBvcGVyYXRpbmcgc3lzdGVtLAorICAqIHRo
ZSBuYW1lIGFuZCB2ZXJzaW9uIG9mIHlvdXIgY29tcGlsZXIsCisgICogdGhlIGNvbXBsZXRlIGNv
bW1hbmQgbGluZSBmbGFncyB5b3UgZ2l2ZSB0byB5b3VyIGNvbXBpbGVyLAorICAqIHRoZSBjb21w
bGV0ZSBjb21waWxlciBlcnJvciBtZXNzYWdlcyAoaWYgdGhlIHF1ZXN0aW9uIGlzIGFib3V0IGNv
bXBpbGF0aW9uKSwKKyAgKiB0aGUgX2FjdHVhbF8gY29kZSAoaWRlYWxseSwgYSBtaW5pbWFsIGJ1
dCBjb21wbGV0ZSBwcm9ncmFtKSB0aGF0IGhhcyB0aGUgcHJvYmxlbSB5b3UgZW5jb3VudGVyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV83X1ByaW1lci5tZCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfN19QcmltZXIubWQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjE4MjdjNzM1NTgxM2FkOTQxODAzNDkxM2JjYzM5ZGY0MThkYWY2NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfN19QcmltZXIubWQKQEAgLTAsMCAr
MSw1MDEgQEAKKworCisjIEludHJvZHVjdGlvbjogV2h5IEdvb2dsZSBDKysgVGVzdGluZyBGcmFt
ZXdvcms/ICMKKworX0dvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmtfIGhlbHBzIHlvdSB3cml0
ZSBiZXR0ZXIgQysrIHRlc3RzLgorCitObyBtYXR0ZXIgd2hldGhlciB5b3Ugd29yayBvbiBMaW51
eCwgV2luZG93cywgb3IgYSBNYWMsIGlmIHlvdSB3cml0ZSBDKysgY29kZSwKK0dvb2dsZSBUZXN0
IGNhbiBoZWxwIHlvdS4KKworU28gd2hhdCBtYWtlcyBhIGdvb2QgdGVzdCwgYW5kIGhvdyBkb2Vz
IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgZml0IGluPyBXZSBiZWxpZXZlOgorICAxLiBU
ZXN0cyBzaG91bGQgYmUgX2luZGVwZW5kZW50XyBhbmQgX3JlcGVhdGFibGVfLiBJdCdzIGEgcGFp
biB0byBkZWJ1ZyBhIHRlc3QgdGhhdCBzdWNjZWVkcyBvciBmYWlscyBhcyBhIHJlc3VsdCBvZiBv
dGhlciB0ZXN0cy4gIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgaXNvbGF0ZXMgdGhlIHRl
c3RzIGJ5IHJ1bm5pbmcgZWFjaCBvZiB0aGVtIG9uIGEgZGlmZmVyZW50IG9iamVjdC4gV2hlbiBh
IHRlc3QgZmFpbHMsIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgYWxsb3dzIHlvdSB0byBy
dW4gaXQgaW4gaXNvbGF0aW9uIGZvciBxdWljayBkZWJ1Z2dpbmcuCisgIDEuIFRlc3RzIHNob3Vs
ZCBiZSB3ZWxsIF9vcmdhbml6ZWRfIGFuZCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRl
c3RlZCBjb2RlLiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBncm91cHMgcmVsYXRlZCB0
ZXN0cyBpbnRvIHRlc3QgY2FzZXMgdGhhdCBjYW4gc2hhcmUgZGF0YSBhbmQgc3Vicm91dGluZXMu
IFRoaXMgY29tbW9uIHBhdHRlcm4gaXMgZWFzeSB0byByZWNvZ25pemUgYW5kIG1ha2VzIHRlc3Rz
IGVhc3kgdG8gbWFpbnRhaW4uIFN1Y2ggY29uc2lzdGVuY3kgaXMgZXNwZWNpYWxseSBoZWxwZnVs
IHdoZW4gcGVvcGxlIHN3aXRjaCBwcm9qZWN0cyBhbmQgc3RhcnQgdG8gd29yayBvbiBhIG5ldyBj
b2RlIGJhc2UuCisgIDEuIFRlc3RzIHNob3VsZCBiZSBfcG9ydGFibGVfIGFuZCBfcmV1c2FibGVf
LiBUaGUgb3Blbi1zb3VyY2UgY29tbXVuaXR5IGhhcyBhIGxvdCBvZiBjb2RlIHRoYXQgaXMgcGxh
dGZvcm0tbmV1dHJhbCwgaXRzIHRlc3RzIHNob3VsZCBhbHNvIGJlIHBsYXRmb3JtLW5ldXRyYWwu
ICBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIHdvcmtzIG9uIGRpZmZlcmVudCBPU2VzLCB3
aXRoIGRpZmZlcmVudCBjb21waWxlcnMgKGdjYywgTVNWQywgYW5kIG90aGVycyksIHdpdGggb3Ig
d2l0aG91dCBleGNlcHRpb25zLCBzbyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIHRlc3Rz
IGNhbiBlYXNpbHkgd29yayB3aXRoIGEgdmFyaWV0eSBvZiBjb25maWd1cmF0aW9ucy4gIChOb3Rl
IHRoYXQgdGhlIGN1cnJlbnQgcmVsZWFzZSBvbmx5IGNvbnRhaW5zIGJ1aWxkIHNjcmlwdHMgZm9y
IExpbnV4IC0gd2UgYXJlIGFjdGl2ZWx5IHdvcmtpbmcgb24gc2NyaXB0cyBmb3Igb3RoZXIgcGxh
dGZvcm1zLikKKyAgMS4gV2hlbiB0ZXN0cyBmYWlsLCB0aGV5IHNob3VsZCBwcm92aWRlIGFzIG11
Y2ggX2luZm9ybWF0aW9uXyBhYm91dCB0aGUgcHJvYmxlbSBhcyBwb3NzaWJsZS4gR29vZ2xlIEMr
KyBUZXN0aW5nIEZyYW1ld29yayBkb2Vzbid0IHN0b3AgYXQgdGhlIGZpcnN0IHRlc3QgZmFpbHVy
ZS4gSW5zdGVhZCwgaXQgb25seSBzdG9wcyB0aGUgY3VycmVudCB0ZXN0IGFuZCBjb250aW51ZXMg
d2l0aCB0aGUgbmV4dC4gWW91IGNhbiBhbHNvIHNldCB1cCB0ZXN0cyB0aGF0IHJlcG9ydCBub24t
ZmF0YWwgZmFpbHVyZXMgYWZ0ZXIgd2hpY2ggdGhlIGN1cnJlbnQgdGVzdCBjb250aW51ZXMuIFRo
dXMsIHlvdSBjYW4gZGV0ZWN0IGFuZCBmaXggbXVsdGlwbGUgYnVncyBpbiBhIHNpbmdsZSBydW4t
ZWRpdC1jb21waWxlIGN5Y2xlLgorICAxLiBUaGUgdGVzdGluZyBmcmFtZXdvcmsgc2hvdWxkIGxp
YmVyYXRlIHRlc3Qgd3JpdGVycyBmcm9tIGhvdXNla2VlcGluZyBjaG9yZXMgYW5kIGxldCB0aGVt
IGZvY3VzIG9uIHRoZSB0ZXN0IF9jb250ZW50Xy4gIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdv
cmsgYXV0b21hdGljYWxseSBrZWVwcyB0cmFjayBvZiBhbGwgdGVzdHMgZGVmaW5lZCwgYW5kIGRv
ZXNuJ3QgcmVxdWlyZSB0aGUgdXNlciB0byBlbnVtZXJhdGUgdGhlbSBpbiBvcmRlciB0byBydW4g
dGhlbS4KKyAgMS4gVGVzdHMgc2hvdWxkIGJlIF9mYXN0Xy4gV2l0aCBHb29nbGUgQysrIFRlc3Rp
bmcgRnJhbWV3b3JrLCB5b3UgY2FuIHJldXNlIHNoYXJlZCByZXNvdXJjZXMgYWNyb3NzIHRlc3Rz
IGFuZCBwYXkgZm9yIHRoZSBzZXQtdXAvdGVhci1kb3duIG9ubHkgb25jZSwgd2l0aG91dCBtYWtp
bmcgdGVzdHMgZGVwZW5kIG9uIGVhY2ggb3RoZXIuCisKK1NpbmNlIEdvb2dsZSBDKysgVGVzdGlu
ZyBGcmFtZXdvcmsgaXMgYmFzZWQgb24gdGhlIHBvcHVsYXIgeFVuaXQKK2FyY2hpdGVjdHVyZSwg
eW91J2xsIGZlZWwgcmlnaHQgYXQgaG9tZSBpZiB5b3UndmUgdXNlZCBKVW5pdCBvciBQeVVuaXQg
YmVmb3JlLgorSWYgbm90LCBpdCB3aWxsIHRha2UgeW91IGFib3V0IDEwIG1pbnV0ZXMgdG8gbGVh
cm4gdGhlIGJhc2ljcyBhbmQgZ2V0IHN0YXJ0ZWQuCitTbyBsZXQncyBnbyEKKworX05vdGU6XyBX
ZSBzb21ldGltZXMgcmVmZXIgdG8gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBpbmZvcm1h
bGx5CithcyBfR29vZ2xlIFRlc3RfLgorCisjIFNldHRpbmcgdXAgYSBOZXcgVGVzdCBQcm9qZWN0
ICMKKworVG8gd3JpdGUgYSB0ZXN0IHByb2dyYW0gdXNpbmcgR29vZ2xlIFRlc3QsIHlvdSBuZWVk
IHRvIGNvbXBpbGUgR29vZ2xlCitUZXN0IGludG8gYSBsaWJyYXJ5IGFuZCBsaW5rIHlvdXIgdGVz
dCB3aXRoIGl0LiAgV2UgcHJvdmlkZSBidWlsZAorZmlsZXMgZm9yIHNvbWUgcG9wdWxhciBidWls
ZCBzeXN0ZW1zOiBgbXN2Yy9gIGZvciBWaXN1YWwgU3R1ZGlvLAorYHhjb2RlL2AgZm9yIE1hYyBY
Y29kZSwgYG1ha2UvYCBmb3IgR05VIG1ha2UsIGBjb2RlZ2Vhci9gIGZvciBCb3JsYW5kCitDKysg
QnVpbGRlciwgYW5kIHRoZSBhdXRvdG9vbHMgc2NyaXB0IChkZXByZWNhdGVkKSBhbmQKK2BDTWFr
ZUxpc3RzLnR4dGAgZm9yIENNYWtlIChyZWNvbW1lbmRlZCkgaW4gdGhlIEdvb2dsZSBUZXN0IHJv
b3QKK2RpcmVjdG9yeS4gIElmIHlvdXIgYnVpbGQgc3lzdGVtIGlzIG5vdCBvbiB0aGlzIGxpc3Qs
IHlvdSBjYW4gdGFrZSBhCitsb29rIGF0IGBtYWtlL01ha2VmaWxlYCB0byBsZWFybiBob3cgR29v
Z2xlIFRlc3Qgc2hvdWxkIGJlIGNvbXBpbGVkCisoYmFzaWNhbGx5IHlvdSB3YW50IHRvIGNvbXBp
bGUgYHNyYy9ndGVzdC1hbGwuY2NgIHdpdGggYEdURVNUX1JPT1RgCithbmQgYEdURVNUX1JPT1Qv
aW5jbHVkZWAgaW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0aCwgd2hlcmUgYEdURVNUX1JPT1RgCitp
cyB0aGUgR29vZ2xlIFRlc3Qgcm9vdCBkaXJlY3RvcnkpLgorCitPbmNlIHlvdSBhcmUgYWJsZSB0
byBjb21waWxlIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5LCB5b3Ugc2hvdWxkCitjcmVhdGUgYSBw
cm9qZWN0IG9yIGJ1aWxkIHRhcmdldCBmb3IgeW91ciB0ZXN0IHByb2dyYW0uICBNYWtlIHN1cmUg
eW91CitoYXZlIGBHVEVTVF9ST09UL2luY2x1ZGVgIGluIHRoZSBoZWFkZXIgc2VhcmNoIHBhdGgg
c28gdGhhdCB0aGUKK2NvbXBpbGVyIGNhbiBmaW5kIGAiZ3Rlc3QvZ3Rlc3QuaCJgIHdoZW4gY29t
cGlsaW5nIHlvdXIgdGVzdC4gIFNldCB1cAoreW91ciB0ZXN0IHByb2plY3QgdG8gbGluayB3aXRo
IHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5IChmb3IgZXhhbXBsZSwKK2luIFZpc3VhbCBTdHVkaW8s
IHRoaXMgaXMgZG9uZSBieSBhZGRpbmcgYSBkZXBlbmRlbmN5IG9uCitgZ3Rlc3QudmNwcm9qYCku
CisKK0lmIHlvdSBzdGlsbCBoYXZlIHF1ZXN0aW9ucywgdGFrZSBhIGxvb2sgYXQgaG93IEdvb2ds
ZSBUZXN0J3Mgb3duCit0ZXN0cyBhcmUgYnVpbHQgYW5kIHVzZSB0aGVtIGFzIGV4YW1wbGVzLgor
CisjIEJhc2ljIENvbmNlcHRzICMKKworV2hlbiB1c2luZyBHb29nbGUgVGVzdCwgeW91IHN0YXJ0
IGJ5IHdyaXRpbmcgX2Fzc2VydGlvbnNfLCB3aGljaCBhcmUgc3RhdGVtZW50cwordGhhdCBjaGVj
ayB3aGV0aGVyIGEgY29uZGl0aW9uIGlzIHRydWUuIEFuIGFzc2VydGlvbidzIHJlc3VsdCBjYW4g
YmUgX3N1Y2Nlc3NfLAorX25vbmZhdGFsIGZhaWx1cmVfLCBvciBfZmF0YWwgZmFpbHVyZV8uIElm
IGEgZmF0YWwgZmFpbHVyZSBvY2N1cnMsIGl0IGFib3J0cwordGhlIGN1cnJlbnQgZnVuY3Rpb247
IG90aGVyd2lzZSB0aGUgcHJvZ3JhbSBjb250aW51ZXMgbm9ybWFsbHkuCisKK19UZXN0c18gdXNl
IGFzc2VydGlvbnMgdG8gdmVyaWZ5IHRoZSB0ZXN0ZWQgY29kZSdzIGJlaGF2aW9yLiBJZiBhIHRl
c3QgY3Jhc2hlcworb3IgaGFzIGEgZmFpbGVkIGFzc2VydGlvbiwgdGhlbiBpdCBfZmFpbHNfOyBv
dGhlcndpc2UgaXQgX3N1Y2NlZWRzXy4KKworQSBfdGVzdCBjYXNlXyBjb250YWlucyBvbmUgb3Ig
bWFueSB0ZXN0cy4gWW91IHNob3VsZCBncm91cCB5b3VyIHRlc3RzIGludG8gdGVzdAorY2FzZXMg
dGhhdCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3RlZCBjb2RlLiBXaGVuIG11bHRp
cGxlIHRlc3RzIGluIGEKK3Rlc3QgY2FzZSBuZWVkIHRvIHNoYXJlIGNvbW1vbiBvYmplY3RzIGFu
ZCBzdWJyb3V0aW5lcywgeW91IGNhbiBwdXQgdGhlbSBpbnRvIGEKK190ZXN0IGZpeHR1cmVfIGNs
YXNzLgorCitBIF90ZXN0IHByb2dyYW1fIGNhbiBjb250YWluIG11bHRpcGxlIHRlc3QgY2FzZXMu
CisKK1dlJ2xsIG5vdyBleHBsYWluIGhvdyB0byB3cml0ZSBhIHRlc3QgcHJvZ3JhbSwgc3RhcnRp
bmcgYXQgdGhlIGluZGl2aWR1YWwKK2Fzc2VydGlvbiBsZXZlbCBhbmQgYnVpbGRpbmcgdXAgdG8g
dGVzdHMgYW5kIHRlc3QgY2FzZXMuCisKKyMgQXNzZXJ0aW9ucyAjCisKK0dvb2dsZSBUZXN0IGFz
c2VydGlvbnMgYXJlIG1hY3JvcyB0aGF0IHJlc2VtYmxlIGZ1bmN0aW9uIGNhbGxzLiBZb3UgdGVz
dCBhCitjbGFzcyBvciBmdW5jdGlvbiBieSBtYWtpbmcgYXNzZXJ0aW9ucyBhYm91dCBpdHMgYmVo
YXZpb3IuIFdoZW4gYW4gYXNzZXJ0aW9uCitmYWlscywgR29vZ2xlIFRlc3QgcHJpbnRzIHRoZSBh
c3NlcnRpb24ncyBzb3VyY2UgZmlsZSBhbmQgbGluZSBudW1iZXIgbG9jYXRpb24sCithbG9uZyB3
aXRoIGEgZmFpbHVyZSBtZXNzYWdlLiBZb3UgbWF5IGFsc28gc3VwcGx5IGEgY3VzdG9tIGZhaWx1
cmUgbWVzc2FnZQord2hpY2ggd2lsbCBiZSBhcHBlbmRlZCB0byBHb29nbGUgVGVzdCdzIG1lc3Nh
Z2UuCisKK1RoZSBhc3NlcnRpb25zIGNvbWUgaW4gcGFpcnMgdGhhdCB0ZXN0IHRoZSBzYW1lIHRo
aW5nIGJ1dCBoYXZlIGRpZmZlcmVudAorZWZmZWN0cyBvbiB0aGUgY3VycmVudCBmdW5jdGlvbi4g
YEFTU0VSVF8qYCB2ZXJzaW9ucyBnZW5lcmF0ZSBmYXRhbCBmYWlsdXJlcword2hlbiB0aGV5IGZh
aWwsIGFuZCAqKmFib3J0IHRoZSBjdXJyZW50IGZ1bmN0aW9uKiouIGBFWFBFQ1RfKmAgdmVyc2lv
bnMgZ2VuZXJhdGUKK25vbmZhdGFsIGZhaWx1cmVzLCB3aGljaCBkb24ndCBhYm9ydCB0aGUgY3Vy
cmVudCBmdW5jdGlvbi4gVXN1YWxseSBgRVhQRUNUXypgCithcmUgcHJlZmVycmVkLCBhcyB0aGV5
IGFsbG93IG1vcmUgdGhhbiBvbmUgZmFpbHVyZXMgdG8gYmUgcmVwb3J0ZWQgaW4gYSB0ZXN0Lgor
SG93ZXZlciwgeW91IHNob3VsZCB1c2UgYEFTU0VSVF8qYCBpZiBpdCBkb2Vzbid0IG1ha2Ugc2Vu
c2UgdG8gY29udGludWUgd2hlbgordGhlIGFzc2VydGlvbiBpbiBxdWVzdGlvbiBmYWlscy4KKwor
U2luY2UgYSBmYWlsZWQgYEFTU0VSVF8qYCByZXR1cm5zIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rp
b24gaW1tZWRpYXRlbHksCitwb3NzaWJseSBza2lwcGluZyBjbGVhbi11cCBjb2RlIHRoYXQgY29t
ZXMgYWZ0ZXIgaXQsIGl0IG1heSBjYXVzZSBhIHNwYWNlIGxlYWsuCitEZXBlbmRpbmcgb24gdGhl
IG5hdHVyZSBvZiB0aGUgbGVhaywgaXQgbWF5IG9yIG1heSBub3QgYmUgd29ydGggZml4aW5nIC0g
c28KK2tlZXAgdGhpcyBpbiBtaW5kIGlmIHlvdSBnZXQgYSBoZWFwIGNoZWNrZXIgZXJyb3IgaW4g
YWRkaXRpb24gdG8gYXNzZXJ0aW9uCitlcnJvcnMuCisKK1RvIHByb3ZpZGUgYSBjdXN0b20gZmFp
bHVyZSBtZXNzYWdlLCBzaW1wbHkgc3RyZWFtIGl0IGludG8gdGhlIG1hY3JvIHVzaW5nIHRoZQor
YDw8YCBvcGVyYXRvciwgb3IgYSBzZXF1ZW5jZSBvZiBzdWNoIG9wZXJhdG9ycy4gQW4gZXhhbXBs
ZToKK2BgYAorQVNTRVJUX0VRKHguc2l6ZSgpLCB5LnNpemUoKSkgPDwgIlZlY3RvcnMgeCBhbmQg
eSBhcmUgb2YgdW5lcXVhbCBsZW5ndGgiOworCitmb3IgKGludCBpID0gMDsgaSA8IHguc2l6ZSgp
OyArK2kpIHsKKyAgRVhQRUNUX0VRKHhbaV0sIHlbaV0pIDw8ICJWZWN0b3JzIHggYW5kIHkgZGlm
ZmVyIGF0IGluZGV4ICIgPDwgaTsKK30KK2BgYAorCitBbnl0aGluZyB0aGF0IGNhbiBiZSBzdHJl
YW1lZCB0byBhbiBgb3N0cmVhbWAgY2FuIGJlIHN0cmVhbWVkIHRvIGFuIGFzc2VydGlvbgorbWFj
cm8tLWluIHBhcnRpY3VsYXIsIEMgc3RyaW5ncyBhbmQgYHN0cmluZ2Agb2JqZWN0cy4gSWYgYSB3
aWRlIHN0cmluZworKGB3Y2hhcl90KmAsIGBUQ0hBUipgIGluIGBVTklDT0RFYCBtb2RlIG9uIFdp
bmRvd3MsIG9yIGBzdGQ6OndzdHJpbmdgKSBpcworc3RyZWFtZWQgdG8gYW4gYXNzZXJ0aW9uLCBp
dCB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gVVRGLTggd2hlbiBwcmludGVkLgorCisjIyBCYXNpYyBB
c3NlcnRpb25zICMjCisKK1RoZXNlIGFzc2VydGlvbnMgZG8gYmFzaWMgdHJ1ZS9mYWxzZSBjb25k
aXRpb24gdGVzdGluZy4KK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0
aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfVFJVRShgX2NvbmRpdGlv
bl9gKWA7ICB8IGBFWFBFQ1RfVFJVRShgX2NvbmRpdGlvbl9gKWA7ICAgfCBfY29uZGl0aW9uXyBp
cyB0cnVlIHwKK3wgYEFTU0VSVF9GQUxTRShgX2NvbmRpdGlvbl9gKWA7IHwgYEVYUEVDVF9GQUxT
RShgX2NvbmRpdGlvbl9gKWA7ICB8IF9jb25kaXRpb25fIGlzIGZhbHNlIHwKKworUmVtZW1iZXIs
IHdoZW4gdGhleSBmYWlsLCBgQVNTRVJUXypgIHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUgYW5kCity
ZXR1cm5zIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24sIHdoaWxlIGBFWFBFQ1RfKmAgeWllbGRz
IGEgbm9uZmF0YWwKK2ZhaWx1cmUsIGFsbG93aW5nIHRoZSBmdW5jdGlvbiB0byBjb250aW51ZSBy
dW5uaW5nLiBJbiBlaXRoZXIgY2FzZSwgYW4KK2Fzc2VydGlvbiBmYWlsdXJlIG1lYW5zIGl0cyBj
b250YWluaW5nIHRlc3QgZmFpbHMuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywg
TWFjLgorCisjIyBCaW5hcnkgQ29tcGFyaXNvbiAjIworCitUaGlzIHNlY3Rpb24gZGVzY3JpYmVz
IGFzc2VydGlvbnMgdGhhdCBjb21wYXJlIHR3byB2YWx1ZXMuCisKK3wgKipGYXRhbCBhc3NlcnRp
b24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8
YEFTU0VSVF9FUShgX2V4cGVjdGVkX2AsIGBfYWN0dWFsX2ApO2B8YEVYUEVDVF9FUShgX2V4cGVj
dGVkX2AsIGBfYWN0dWFsX2ApO2B8IF9leHBlY3RlZF8gYD09YCBfYWN0dWFsXyB8Cit8YEFTU0VS
VF9ORShgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9ORShgX3ZhbDFfYCwgYF92
YWwyX2ApO2AgICAgICB8IF92YWwxXyBgIT1gIF92YWwyXyB8Cit8YEFTU0VSVF9MVChgX3ZhbDFf
YCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9MVChgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAg
ICB8IF92YWwxXyBgPGAgX3ZhbDJfIHwKK3xgQVNTRVJUX0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7
YCAgICAgIHxgRVhQRUNUX0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA8
PWAgX3ZhbDJfIHwKK3xgQVNTRVJUX0dUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHxgRVhQ
RUNUX0dUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA+YCBfdmFsMl8gfAor
fGBBU1NFUlRfR0UoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfGBFWFBFQ1RfR0UoYF92YWwx
X2AsIGBfdmFsMl9gKTtgICAgICAgfCBfdmFsMV8gYD49YCBfdmFsMl8gfAorCitJbiB0aGUgZXZl
bnQgb2YgYSBmYWlsdXJlLCBHb29nbGUgVGVzdCBwcmludHMgYm90aCBfdmFsMV8gYW5kIF92YWwy
XworLiBJbiBgQVNTRVJUX0VRKmAgYW5kIGBFWFBFQ1RfRVEqYCAoYW5kIGFsbCBvdGhlciBlcXVh
bGl0eSBhc3NlcnRpb25zCit3ZSdsbCBpbnRyb2R1Y2UgbGF0ZXIpLCB5b3Ugc2hvdWxkIHB1dCB0
aGUgZXhwcmVzc2lvbiB5b3Ugd2FudCB0byB0ZXN0CitpbiB0aGUgcG9zaXRpb24gb2YgX2FjdHVh
bF8sIGFuZCBwdXQgaXRzIGV4cGVjdGVkIHZhbHVlIGluIF9leHBlY3RlZF8sCithcyBHb29nbGUg
VGVzdCdzIGZhaWx1cmUgbWVzc2FnZXMgYXJlIG9wdGltaXplZCBmb3IgdGhpcyBjb252ZW50aW9u
LgorCitWYWx1ZSBhcmd1bWVudHMgbXVzdCBiZSBjb21wYXJhYmxlIGJ5IHRoZSBhc3NlcnRpb24n
cyBjb21wYXJpc29uCitvcGVyYXRvciBvciB5b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IuICBX
ZSB1c2VkIHRvIHJlcXVpcmUgdGhlCithcmd1bWVudHMgdG8gc3VwcG9ydCB0aGUgYDw8YCBvcGVy
YXRvciBmb3Igc3RyZWFtaW5nIHRvIGFuIGBvc3RyZWFtYCwKK2J1dCBpdCdzIG5vIGxvbmdlciBu
ZWNlc3Nhcnkgc2luY2UgdjEuNi4wIChpZiBgPDxgIGlzIHN1cHBvcnRlZCwgaXQKK3dpbGwgYmUg
Y2FsbGVkIHRvIHByaW50IHRoZSBhcmd1bWVudHMgd2hlbiB0aGUgYXNzZXJ0aW9uIGZhaWxzOwor
b3RoZXJ3aXNlIEdvb2dsZSBUZXN0IHdpbGwgYXR0ZW1wdCB0byBwcmludCB0aGVtIGluIHRoZSBi
ZXN0IHdheSBpdAorY2FuLiBGb3IgbW9yZSBkZXRhaWxzIGFuZCBob3cgdG8gY3VzdG9taXplIHRo
ZSBwcmludGluZyBvZiB0aGUKK2FyZ3VtZW50cywgc2VlIHRoaXMgR29vZ2xlIE1vY2sgW3JlY2lw
ZV0oLi4vLi4vZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3RlYWNoaW5nLWdvb2dsZS1tb2Nr
LWhvdy10by1wcmludC15b3VyLXZhbHVlcykuKS4KKworVGhlc2UgYXNzZXJ0aW9ucyBjYW4gd29y
ayB3aXRoIGEgdXNlci1kZWZpbmVkIHR5cGUsIGJ1dCBvbmx5IGlmIHlvdSBkZWZpbmUgdGhlCitj
b3JyZXNwb25kaW5nIGNvbXBhcmlzb24gb3BlcmF0b3IgKGUuZy4gYD09YCwgYDxgLCBldGMpLiAg
SWYgdGhlIGNvcnJlc3BvbmRpbmcKK29wZXJhdG9yIGlzIGRlZmluZWQsIHByZWZlciB1c2luZyB0
aGUgYEFTU0VSVF8qKClgIG1hY3JvcyBiZWNhdXNlIHRoZXkgd2lsbAorcHJpbnQgb3V0IG5vdCBv
bmx5IHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24sIGJ1dCB0aGUgdHdvIG9wZXJhbmRzIGFz
IHdlbGwuCisKK0FyZ3VtZW50cyBhcmUgYWx3YXlzIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuIFRo
ZXJlZm9yZSwgaXQncyBPSyBmb3IgdGhlCithcmd1bWVudHMgdG8gaGF2ZSBzaWRlIGVmZmVjdHMu
IEhvd2V2ZXIsIGFzIHdpdGggYW55IG9yZGluYXJ5IEMvQysrIGZ1bmN0aW9uLAordGhlIGFyZ3Vt
ZW50cycgZXZhbHVhdGlvbiBvcmRlciBpcyB1bmRlZmluZWQgKGkuZS4gdGhlIGNvbXBpbGVyIGlz
IGZyZWUgdG8KK2Nob29zZSBhbnkgb3JkZXIpIGFuZCB5b3VyIGNvZGUgc2hvdWxkIG5vdCBkZXBl
bmQgb24gYW55IHBhcnRpY3VsYXIgYXJndW1lbnQKK2V2YWx1YXRpb24gb3JkZXIuCisKK2BBU1NF
UlRfRVEoKWAgZG9lcyBwb2ludGVyIGVxdWFsaXR5IG9uIHBvaW50ZXJzLiBJZiB1c2VkIG9uIHR3
byBDIHN0cmluZ3MsIGl0Cit0ZXN0cyBpZiB0aGV5IGFyZSBpbiB0aGUgc2FtZSBtZW1vcnkgbG9j
YXRpb24sIG5vdCBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgdmFsdWUuCitUaGVyZWZvcmUsIGlmIHlv
dSB3YW50IHRvIGNvbXBhcmUgQyBzdHJpbmdzIChlLmcuIGBjb25zdCBjaGFyKmApIGJ5IHZhbHVl
LCB1c2UKK2BBU1NFUlRfU1RSRVEoKWAgLCB3aGljaCB3aWxsIGJlIGRlc2NyaWJlZCBsYXRlciBv
bi4gSW4gcGFydGljdWxhciwgdG8gYXNzZXJ0Cit0aGF0IGEgQyBzdHJpbmcgaXMgYE5VTExgLCB1
c2UgYEFTU0VSVF9TVFJFUShOVUxMLCBjX3N0cmluZylgIC4gSG93ZXZlciwgdG8KK2NvbXBhcmUg
dHdvIGBzdHJpbmdgIG9iamVjdHMsIHlvdSBzaG91bGQgdXNlIGBBU1NFUlRfRVFgLgorCitNYWNy
b3MgaW4gdGhpcyBzZWN0aW9uIHdvcmsgd2l0aCBib3RoIG5hcnJvdyBhbmQgd2lkZSBzdHJpbmcg
b2JqZWN0cyAoYHN0cmluZ2AKK2FuZCBgd3N0cmluZ2ApLgorCitfQXZhaWxhYmlsaXR5XzogTGlu
dXgsIFdpbmRvd3MsIE1hYy4KKworIyMgU3RyaW5nIENvbXBhcmlzb24gIyMKKworVGhlIGFzc2Vy
dGlvbnMgaW4gdGhpcyBncm91cCBjb21wYXJlIHR3byAqKkMgc3RyaW5ncyoqLiBJZiB5b3Ugd2Fu
dCB0byBjb21wYXJlCit0d28gYHN0cmluZ2Agb2JqZWN0cywgdXNlIGBFWFBFQ1RfRVFgLCBgRVhQ
RUNUX05FYCwgYW5kIGV0YyBpbnN0ZWFkLgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5v
bmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0t
LS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX1NU
UkVRKGBfZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgICAgfCBgRVhQRUNUX1NU
UkVRKGBfZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgICAgIHwgdGhlIHR3byBD
IHN0cmluZ3MgaGF2ZSB0aGUgc2FtZSBjb250ZW50IHwKK3wgYEFTU0VSVF9TVFJORShgX3N0cjFf
YCwgYF9zdHIyX2ApO2AgICAgfCBgRVhQRUNUX1NUUk5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YCAg
ICAgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIGRpZmZlcmVudCBjb250ZW50IHwKK3wgYEFTU0VS
VF9TVFJDQVNFRVEoYF9leHBlY3RlZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YHwgYEVYUEVD
VF9TVFJDQVNFRVEoYF9leHBlY3RlZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YCB8IHRoZSB0
d28gQyBzdHJpbmdzIGhhdmUgdGhlIHNhbWUgY29udGVudCwgaWdub3JpbmcgY2FzZSB8Cit8IGBB
U1NFUlRfU1RSQ0FTRU5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YHwgYEVYUEVDVF9TVFJDQVNFTkUo
YF9zdHIxX2AsIGBfc3RyMl9gKTtgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSBkaWZmZXJlbnQg
Y29udGVudCwgaWdub3JpbmcgY2FzZSB8CisKK05vdGUgdGhhdCAiQ0FTRSIgaW4gYW4gYXNzZXJ0
aW9uIG5hbWUgbWVhbnMgdGhhdCBjYXNlIGlzIGlnbm9yZWQuCisKK2AqU1RSRVEqYCBhbmQgYCpT
VFJORSpgIGFsc28gYWNjZXB0IHdpZGUgQyBzdHJpbmdzIChgd2NoYXJfdCpgKS4gSWYgYQorY29t
cGFyaXNvbiBvZiB0d28gd2lkZSBzdHJpbmdzIGZhaWxzLCB0aGVpciB2YWx1ZXMgd2lsbCBiZSBw
cmludGVkIGFzIFVURi04CituYXJyb3cgc3RyaW5ncy4KKworQSBgTlVMTGAgcG9pbnRlciBhbmQg
YW4gZW1wdHkgc3RyaW5nIGFyZSBjb25zaWRlcmVkIF9kaWZmZXJlbnRfLgorCitfQXZhaWxhYmls
aXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworU2VlIGFsc286IEZvciBtb3JlIHN0cmluZyBj
b21wYXJpc29uIHRyaWNrcyAoc3Vic3RyaW5nLCBwcmVmaXgsIHN1ZmZpeCwgYW5kCityZWd1bGFy
IGV4cHJlc3Npb24gbWF0Y2hpbmcsIGZvciBleGFtcGxlKSwgc2VlIHRoZSBbQWR2YW5jZWQgR29v
Z2xlIFRlc3QgR3VpZGVdKFYxXzdfQWR2YW5jZWRHdWlkZS5tZCkuCisKKyMgU2ltcGxlIFRlc3Rz
ICMKKworVG8gY3JlYXRlIGEgdGVzdDoKKyAgMS4gVXNlIHRoZSBgVEVTVCgpYCBtYWNybyB0byBk
ZWZpbmUgYW5kIG5hbWUgYSB0ZXN0IGZ1bmN0aW9uLCBUaGVzZSBhcmUgb3JkaW5hcnkgQysrIGZ1
bmN0aW9ucyB0aGF0IGRvbid0IHJldHVybiBhIHZhbHVlLgorICAxLiBJbiB0aGlzIGZ1bmN0aW9u
LCBhbG9uZyB3aXRoIGFueSB2YWxpZCBDKysgc3RhdGVtZW50cyB5b3Ugd2FudCB0byBpbmNsdWRl
LCB1c2UgdGhlIHZhcmlvdXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyB0byBjaGVjayB2YWx1ZXMu
CisgIDEuIFRoZSB0ZXN0J3MgcmVzdWx0IGlzIGRldGVybWluZWQgYnkgdGhlIGFzc2VydGlvbnM7
IGlmIGFueSBhc3NlcnRpb24gaW4gdGhlIHRlc3QgZmFpbHMgKGVpdGhlciBmYXRhbGx5IG9yIG5v
bi1mYXRhbGx5KSwgb3IgaWYgdGhlIHRlc3QgY3Jhc2hlcywgdGhlIGVudGlyZSB0ZXN0IGZhaWxz
LiBPdGhlcndpc2UsIGl0IHN1Y2NlZWRzLgorCitgYGAKK1RFU1QodGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSkgeworIC4uLiB0ZXN0IGJvZHkgLi4uCit9CitgYGAKKworCitgVEVTVCgpYCBhcmd1
bWVudHMgZ28gZnJvbSBnZW5lcmFsIHRvIHNwZWNpZmljLiBUaGUgX2ZpcnN0XyBhcmd1bWVudCBp
cyB0aGUKK25hbWUgb2YgdGhlIHRlc3QgY2FzZSwgYW5kIHRoZSBfc2Vjb25kXyBhcmd1bWVudCBp
cyB0aGUgdGVzdCdzIG5hbWUgd2l0aGluIHRoZQordGVzdCBjYXNlLiBCb3RoIG5hbWVzIG11c3Qg
YmUgdmFsaWQgQysrIGlkZW50aWZpZXJzLCBhbmQgdGhleSBzaG91bGQgbm90IGNvbnRhaW4gdW5k
ZXJzY29yZSAoYF9gKS4gQSB0ZXN0J3MgX2Z1bGwgbmFtZV8gY29uc2lzdHMgb2YgaXRzIGNvbnRh
aW5pbmcgdGVzdCBjYXNlIGFuZCBpdHMKK2luZGl2aWR1YWwgbmFtZS4gVGVzdHMgZnJvbSBkaWZm
ZXJlbnQgdGVzdCBjYXNlcyBjYW4gaGF2ZSB0aGUgc2FtZSBpbmRpdmlkdWFsCituYW1lLgorCitG
b3IgZXhhbXBsZSwgbGV0J3MgdGFrZSBhIHNpbXBsZSBpbnRlZ2VyIGZ1bmN0aW9uOgorYGBgCitp
bnQgRmFjdG9yaWFsKGludCBuKTsgLy8gUmV0dXJucyB0aGUgZmFjdG9yaWFsIG9mIG4KK2BgYAor
CitBIHRlc3QgY2FzZSBmb3IgdGhpcyBmdW5jdGlvbiBtaWdodCBsb29rIGxpa2U6CitgYGAKKy8v
IFRlc3RzIGZhY3RvcmlhbCBvZiAwLgorVEVTVChGYWN0b3JpYWxUZXN0LCBIYW5kbGVzWmVyb0lu
cHV0KSB7CisgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoMCkpOworfQorCisvLyBUZXN0cyBmYWN0
b3JpYWwgb2YgcG9zaXRpdmUgbnVtYmVycy4KK1RFU1QoRmFjdG9yaWFsVGVzdCwgSGFuZGxlc1Bv
c2l0aXZlSW5wdXQpIHsKKyAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgxKSk7CisgIEVYUEVDVF9F
USgyLCBGYWN0b3JpYWwoMikpOworICBFWFBFQ1RfRVEoNiwgRmFjdG9yaWFsKDMpKTsKKyAgRVhQ
RUNUX0VRKDQwMzIwLCBGYWN0b3JpYWwoOCkpOworfQorYGBgCisKK0dvb2dsZSBUZXN0IGdyb3Vw
cyB0aGUgdGVzdCByZXN1bHRzIGJ5IHRlc3QgY2FzZXMsIHNvIGxvZ2ljYWxseS1yZWxhdGVkIHRl
c3RzCitzaG91bGQgYmUgaW4gdGhlIHNhbWUgdGVzdCBjYXNlOyBpbiBvdGhlciB3b3JkcywgdGhl
IGZpcnN0IGFyZ3VtZW50IHRvIHRoZWlyCitgVEVTVCgpYCBzaG91bGQgYmUgdGhlIHNhbWUuIElu
IHRoZSBhYm92ZSBleGFtcGxlLCB3ZSBoYXZlIHR3byB0ZXN0cywKK2BIYW5kbGVzWmVyb0lucHV0
YCBhbmQgYEhhbmRsZXNQb3NpdGl2ZUlucHV0YCwgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUgdGVz
dAorY2FzZSBgRmFjdG9yaWFsVGVzdGAuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjLgorCisjIFRlc3QgRml4dHVyZXM6IFVzaW5nIHRoZSBTYW1lIERhdGEgQ29uZmlndXJh
dGlvbiBmb3IgTXVsdGlwbGUgVGVzdHMgIworCitJZiB5b3UgZmluZCB5b3Vyc2VsZiB3cml0aW5n
IHR3byBvciBtb3JlIHRlc3RzIHRoYXQgb3BlcmF0ZSBvbiBzaW1pbGFyIGRhdGEsCit5b3UgY2Fu
IHVzZSBhIF90ZXN0IGZpeHR1cmVfLiBJdCBhbGxvd3MgeW91IHRvIHJldXNlIHRoZSBzYW1lIGNv
bmZpZ3VyYXRpb24gb2YKK29iamVjdHMgZm9yIHNldmVyYWwgZGlmZmVyZW50IHRlc3RzLgorCitU
byBjcmVhdGUgYSBmaXh0dXJlLCBqdXN0OgorICAxLiBEZXJpdmUgYSBjbGFzcyBmcm9tIGA6OnRl
c3Rpbmc6OlRlc3RgIC4gU3RhcnQgaXRzIGJvZHkgd2l0aCBgcHJvdGVjdGVkOmAgb3IgYHB1Ymxp
YzpgIGFzIHdlJ2xsIHdhbnQgdG8gYWNjZXNzIGZpeHR1cmUgbWVtYmVycyBmcm9tIHN1Yi1jbGFz
c2VzLgorICAxLiBJbnNpZGUgdGhlIGNsYXNzLCBkZWNsYXJlIGFueSBvYmplY3RzIHlvdSBwbGFu
IHRvIHVzZS4KKyAgMS4gSWYgbmVjZXNzYXJ5LCB3cml0ZSBhIGRlZmF1bHQgY29uc3RydWN0b3Ig
b3IgYFNldFVwKClgIGZ1bmN0aW9uIHRvIHByZXBhcmUgdGhlIG9iamVjdHMgZm9yIGVhY2ggdGVz
dC4gQSBjb21tb24gbWlzdGFrZSBpcyB0byBzcGVsbCBgU2V0VXAoKWAgYXMgYFNldHVwKClgIHdp
dGggYSBzbWFsbCBgdWAgLSBkb24ndCBsZXQgdGhhdCBoYXBwZW4gdG8geW91LgorICAxLiBJZiBu
ZWNlc3NhcnksIHdyaXRlIGEgZGVzdHJ1Y3RvciBvciBgVGVhckRvd24oKWAgZnVuY3Rpb24gdG8g
cmVsZWFzZSBhbnkgcmVzb3VyY2VzIHlvdSBhbGxvY2F0ZWQgaW4gYFNldFVwKClgIC4gVG8gbGVh
cm4gd2hlbiB5b3Ugc2hvdWxkIHVzZSB0aGUgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBhbmQgd2hl
biB5b3Ugc2hvdWxkIHVzZSBgU2V0VXAoKS9UZWFyRG93bigpYCwgcmVhZCB0aGlzIFtGQVEgZW50
cnldKFYxXzdfRkFRLm1kI3Nob3VsZC1pLXVzZS10aGUtY29uc3RydWN0b3JkZXN0cnVjdG9yLW9m
LXRoZS10ZXN0LWZpeHR1cmUtb3ItdGhlLXNldC11cHRlYXItZG93bi1mdW5jdGlvbikuCisgIDEu
IElmIG5lZWRlZCwgZGVmaW5lIHN1YnJvdXRpbmVzIGZvciB5b3VyIHRlc3RzIHRvIHNoYXJlLgor
CitXaGVuIHVzaW5nIGEgZml4dHVyZSwgdXNlIGBURVNUX0YoKWAgaW5zdGVhZCBvZiBgVEVTVCgp
YCBhcyBpdCBhbGxvd3MgeW91IHRvCithY2Nlc3Mgb2JqZWN0cyBhbmQgc3Vicm91dGluZXMgaW4g
dGhlIHRlc3QgZml4dHVyZToKK2BgYAorVEVTVF9GKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUp
IHsKKyAuLi4gdGVzdCBib2R5IC4uLgorfQorYGBgCisKK0xpa2UgYFRFU1QoKWAsIHRoZSBmaXJz
dCBhcmd1bWVudCBpcyB0aGUgdGVzdCBjYXNlIG5hbWUsIGJ1dCBmb3IgYFRFU1RfRigpYAordGhp
cyBtdXN0IGJlIHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuIFlvdSd2ZSBwcm9i
YWJseSBndWVzc2VkOiBgX0ZgCitpcyBmb3IgZml4dHVyZS4KKworVW5mb3J0dW5hdGVseSwgdGhl
IEMrKyBtYWNybyBzeXN0ZW0gZG9lcyBub3QgYWxsb3cgdXMgdG8gY3JlYXRlIGEgc2luZ2xlIG1h
Y3JvCit0aGF0IGNhbiBoYW5kbGUgYm90aCB0eXBlcyBvZiB0ZXN0cy4gVXNpbmcgdGhlIHdyb25n
IG1hY3JvIGNhdXNlcyBhIGNvbXBpbGVyCitlcnJvci4KKworQWxzbywgeW91IG11c3QgZmlyc3Qg
ZGVmaW5lIGEgdGVzdCBmaXh0dXJlIGNsYXNzIGJlZm9yZSB1c2luZyBpdCBpbiBhCitgVEVTVF9G
KClgLCBvciB5b3UnbGwgZ2V0IHRoZSBjb21waWxlciBlcnJvciAiYHZpcnR1YWwgb3V0c2lkZSBj
bGFzcworZGVjbGFyYXRpb25gIi4KKworRm9yIGVhY2ggdGVzdCBkZWZpbmVkIHdpdGggYFRFU1Rf
RigpYCwgR29vZ2xlIFRlc3Qgd2lsbDoKKyAgMS4gQ3JlYXRlIGEgX2ZyZXNoXyB0ZXN0IGZpeHR1
cmUgYXQgcnVudGltZQorICAxLiBJbW1lZGlhdGVseSBpbml0aWFsaXplIGl0IHZpYSBgU2V0VXAo
KWAgLAorICAxLiBSdW4gdGhlIHRlc3QKKyAgMS4gQ2xlYW4gdXAgYnkgY2FsbGluZyBgVGVhckRv
d24oKWAKKyAgMS4gRGVsZXRlIHRoZSB0ZXN0IGZpeHR1cmUuICBOb3RlIHRoYXQgZGlmZmVyZW50
IHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBoYXZlIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUg
b2JqZWN0cywgYW5kIEdvb2dsZSBUZXN0IGFsd2F5cyBkZWxldGVzIGEgdGVzdCBmaXh0dXJlIGJl
Zm9yZSBpdCBjcmVhdGVzIHRoZSBuZXh0IG9uZS4gR29vZ2xlIFRlc3QgZG9lcyBub3QgcmV1c2Ug
dGhlIHNhbWUgdGVzdCBmaXh0dXJlIGZvciBtdWx0aXBsZSB0ZXN0cy4gQW55IGNoYW5nZXMgb25l
IHRlc3QgbWFrZXMgdG8gdGhlIGZpeHR1cmUgZG8gbm90IGFmZmVjdCBvdGhlciB0ZXN0cy4KKwor
QXMgYW4gZXhhbXBsZSwgbGV0J3Mgd3JpdGUgdGVzdHMgZm9yIGEgRklGTyBxdWV1ZSBjbGFzcyBu
YW1lZCBgUXVldWVgLCB3aGljaAoraGFzIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlOgorYGBgCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRT4gLy8gRSBpcyB0aGUgZWxlbWVudCB0eXBlLgorY2xhc3MgUXVl
dWUgeworIHB1YmxpYzoKKyAgUXVldWUoKTsKKyAgdm9pZCBFbnF1ZXVlKGNvbnN0IEUmIGVsZW1l
bnQpOworICBFKiBEZXF1ZXVlKCk7IC8vIFJldHVybnMgTlVMTCBpZiB0aGUgcXVldWUgaXMgZW1w
dHkuCisgIHNpemVfdCBzaXplKCkgY29uc3Q7CisgIC4uLgorfTsKK2BgYAorCitGaXJzdCwgZGVm
aW5lIGEgZml4dHVyZSBjbGFzcy4gQnkgY29udmVudGlvbiwgeW91IHNob3VsZCBnaXZlIGl0IHRo
ZSBuYW1lCitgRm9vVGVzdGAgd2hlcmUgYEZvb2AgaXMgdGhlIGNsYXNzIGJlaW5nIHRlc3RlZC4K
K2BgYAorY2xhc3MgUXVldWVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVj
dGVkOgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgcTFfLkVucXVldWUoMSk7CisgICAg
cTJfLkVucXVldWUoMik7CisgICAgcTJfLkVucXVldWUoMyk7CisgIH0KKworICAvLyB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7fQorCisgIFF1ZXVlPGludD4gcTBfOworICBRdWV1ZTxpbnQ+IHEx
XzsKKyAgUXVldWU8aW50PiBxMl87Cit9OworYGBgCisKK0luIHRoaXMgY2FzZSwgYFRlYXJEb3du
KClgIGlzIG5vdCBuZWVkZWQgc2luY2Ugd2UgZG9uJ3QgaGF2ZSB0byBjbGVhbiB1cCBhZnRlcgor
ZWFjaCB0ZXN0LCBvdGhlciB0aGFuIHdoYXQncyBhbHJlYWR5IGRvbmUgYnkgdGhlIGRlc3RydWN0
b3IuCisKK05vdyB3ZSdsbCB3cml0ZSB0ZXN0cyB1c2luZyBgVEVTVF9GKClgIGFuZCB0aGlzIGZp
eHR1cmUuCitgYGAKK1RFU1RfRihRdWV1ZVRlc3QsIElzRW1wdHlJbml0aWFsbHkpIHsKKyAgRVhQ
RUNUX0VRKDAsIHEwXy5zaXplKCkpOworfQorCitURVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVlV29y
a3MpIHsKKyAgaW50KiBuID0gcTBfLkRlcXVldWUoKTsKKyAgRVhQRUNUX0VRKE5VTEwsIG4pOwor
CisgIG4gPSBxMV8uRGVxdWV1ZSgpOworICBBU1NFUlRfVFJVRShuICE9IE5VTEwpOworICBFWFBF
Q1RfRVEoMSwgKm4pOworICBFWFBFQ1RfRVEoMCwgcTFfLnNpemUoKSk7CisgIGRlbGV0ZSBuOwor
CisgIG4gPSBxMl8uRGVxdWV1ZSgpOworICBBU1NFUlRfVFJVRShuICE9IE5VTEwpOworICBFWFBF
Q1RfRVEoMiwgKm4pOworICBFWFBFQ1RfRVEoMSwgcTJfLnNpemUoKSk7CisgIGRlbGV0ZSBuOwor
fQorYGBgCisKK1RoZSBhYm92ZSB1c2VzIGJvdGggYEFTU0VSVF8qYCBhbmQgYEVYUEVDVF8qYCBh
c3NlcnRpb25zLiBUaGUgcnVsZSBvZiB0aHVtYiBpcwordG8gdXNlIGBFWFBFQ1RfKmAgd2hlbiB5
b3Ugd2FudCB0aGUgdGVzdCB0byBjb250aW51ZSB0byByZXZlYWwgbW9yZSBlcnJvcnMKK2FmdGVy
IHRoZSBhc3NlcnRpb24gZmFpbHVyZSwgYW5kIHVzZSBgQVNTRVJUXypgIHdoZW4gY29udGludWlu
ZyBhZnRlciBmYWlsdXJlCitkb2Vzbid0IG1ha2Ugc2Vuc2UuIEZvciBleGFtcGxlLCB0aGUgc2Vj
b25kIGFzc2VydGlvbiBpbiB0aGUgYERlcXVldWVgIHRlc3QgaXMKK2BBU1NFUlRfVFJVRShuICE9
IE5VTEwpYCwgYXMgd2UgbmVlZCB0byBkZXJlZmVyZW5jZSB0aGUgcG9pbnRlciBgbmAgbGF0ZXIs
Cit3aGljaCB3b3VsZCBsZWFkIHRvIGEgc2VnZmF1bHQgd2hlbiBgbmAgaXMgYE5VTExgLgorCitX
aGVuIHRoZXNlIHRlc3RzIHJ1biwgdGhlIGZvbGxvd2luZyBoYXBwZW5zOgorICAxLiBHb29nbGUg
VGVzdCBjb25zdHJ1Y3RzIGEgYFF1ZXVlVGVzdGAgb2JqZWN0IChsZXQncyBjYWxsIGl0IGB0MWAg
KS4KKyAgMS4gYHQxLlNldFVwKClgIGluaXRpYWxpemVzIGB0MWAgLgorICAxLiBUaGUgZmlyc3Qg
dGVzdCAoIGBJc0VtcHR5SW5pdGlhbGx5YCApIHJ1bnMgb24gYHQxYCAuCisgIDEuIGB0MS5UZWFy
RG93bigpYCBjbGVhbnMgdXAgYWZ0ZXIgdGhlIHRlc3QgZmluaXNoZXMuCisgIDEuIGB0MWAgaXMg
ZGVzdHJ1Y3RlZC4KKyAgMS4gVGhlIGFib3ZlIHN0ZXBzIGFyZSByZXBlYXRlZCBvbiBhbm90aGVy
IGBRdWV1ZVRlc3RgIG9iamVjdCwgdGhpcyB0aW1lIHJ1bm5pbmcgdGhlIGBEZXF1ZXVlV29ya3Ng
IHRlc3QuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCitfTm90ZV86
IEdvb2dsZSBUZXN0IGF1dG9tYXRpY2FsbHkgc2F2ZXMgYWxsIF9Hb29nbGUgVGVzdF8gZmxhZ3Mg
d2hlbiBhIHRlc3QKK29iamVjdCBpcyBjb25zdHJ1Y3RlZCwgYW5kIHJlc3RvcmVzIHRoZW0gd2hl
biBpdCBpcyBkZXN0cnVjdGVkLgorCisjIEludm9raW5nIHRoZSBUZXN0cyAjCisKK2BURVNUKClg
IGFuZCBgVEVTVF9GKClgIGltcGxpY2l0bHkgcmVnaXN0ZXIgdGhlaXIgdGVzdHMgd2l0aCBHb29n
bGUgVGVzdC4gU28sIHVubGlrZSB3aXRoIG1hbnkgb3RoZXIgQysrIHRlc3RpbmcgZnJhbWV3b3Jr
cywgeW91IGRvbid0IGhhdmUgdG8gcmUtbGlzdCBhbGwgeW91ciBkZWZpbmVkIHRlc3RzIGluIG9y
ZGVyIHRvIHJ1biB0aGVtLgorCitBZnRlciBkZWZpbmluZyB5b3VyIHRlc3RzLCB5b3UgY2FuIHJ1
biB0aGVtIHdpdGggYFJVTl9BTExfVEVTVFMoKWAgLCB3aGljaCByZXR1cm5zIGAwYCBpZiBhbGwg
dGhlIHRlc3RzIGFyZSBzdWNjZXNzZnVsLCBvciBgMWAgb3RoZXJ3aXNlLiBOb3RlIHRoYXQgYFJV
Tl9BTExfVEVTVFMoKWAgcnVucyBfYWxsIHRlc3RzXyBpbiB5b3VyIGxpbmsgdW5pdCAtLSB0aGV5
IGNhbiBiZSBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLCBvciBldmVuIGRpZmZlcmVudCBzb3Vy
Y2UgZmlsZXMuCisKK1doZW4gaW52b2tlZCwgdGhlIGBSVU5fQUxMX1RFU1RTKClgIG1hY3JvOgor
ICAxLiBTYXZlcyB0aGUgc3RhdGUgb2YgYWxsICBHb29nbGUgVGVzdCBmbGFncy4KKyAgMS4gQ3Jl
YXRlcyBhIHRlc3QgZml4dHVyZSBvYmplY3QgZm9yIHRoZSBmaXJzdCB0ZXN0LgorICAxLiBJbml0
aWFsaXplcyBpdCB2aWEgYFNldFVwKClgLgorICAxLiBSdW5zIHRoZSB0ZXN0IG9uIHRoZSBmaXh0
dXJlIG9iamVjdC4KKyAgMS4gQ2xlYW5zIHVwIHRoZSBmaXh0dXJlIHZpYSBgVGVhckRvd24oKWAu
CisgIDEuIERlbGV0ZXMgdGhlIGZpeHR1cmUuCisgIDEuIFJlc3RvcmVzIHRoZSBzdGF0ZSBvZiBh
bGwgR29vZ2xlIFRlc3QgZmxhZ3MuCisgIDEuIFJlcGVhdHMgdGhlIGFib3ZlIHN0ZXBzIGZvciB0
aGUgbmV4dCB0ZXN0LCB1bnRpbCBhbGwgdGVzdHMgaGF2ZSBydW4uCisKK0luIGFkZGl0aW9uLCBp
ZiB0aGUgdGV4dCBmaXh0dXJlJ3MgY29uc3RydWN0b3IgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVy
ZSBpbgorc3RlcCAyLCB0aGVyZSBpcyBubyBwb2ludCBmb3Igc3RlcCAzIC0gNSBhbmQgdGhleSBh
cmUgdGh1cyBza2lwcGVkLiBTaW1pbGFybHksCitpZiBzdGVwIDMgZ2VuZXJhdGVzIGEgZmF0YWwg
ZmFpbHVyZSwgc3RlcCA0IHdpbGwgYmUgc2tpcHBlZC4KKworX0ltcG9ydGFudF86IFlvdSBtdXN0
IG5vdCBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYCwgb3IgYGdj
Y2AKK3dpbGwgZ2l2ZSB5b3UgYSBjb21waWxlciBlcnJvci4gVGhlIHJhdGlvbmFsZSBmb3IgdGhp
cyBkZXNpZ24gaXMgdGhhdCB0aGUKK2F1dG9tYXRlZCB0ZXN0aW5nIHNlcnZpY2UgZGV0ZXJtaW5l
cyB3aGV0aGVyIGEgdGVzdCBoYXMgcGFzc2VkIGJhc2VkIG9uIGl0cworZXhpdCBjb2RlLCBub3Qg
b24gaXRzIHN0ZG91dC9zdGRlcnIgb3V0cHV0OyB0aHVzIHlvdXIgYG1haW4oKWAgZnVuY3Rpb24g
bXVzdAorcmV0dXJuIHRoZSB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYC4KKworQWxzbywgeW91
IHNob3VsZCBjYWxsIGBSVU5fQUxMX1RFU1RTKClgIG9ubHkgKipvbmNlKiouIENhbGxpbmcgaXQg
bW9yZSB0aGFuIG9uY2UKK2NvbmZsaWN0cyB3aXRoIHNvbWUgYWR2YW5jZWQgR29vZ2xlIFRlc3Qg
ZmVhdHVyZXMgKGUuZy4gdGhyZWFkLXNhZmUgZGVhdGgKK3Rlc3RzKSBhbmQgdGh1cyBpcyBub3Qg
c3VwcG9ydGVkLgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyBX
cml0aW5nIHRoZSBtYWluKCkgRnVuY3Rpb24gIworCitZb3UgY2FuIHN0YXJ0IGZyb20gdGhpcyBi
b2lsZXJwbGF0ZToKK2BgYAorI2luY2x1ZGUgInRoaXMvcGFja2FnZS9mb28uaCIKKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCisvLyBUaGUgZml4dHVyZSBmb3IgdGVz
dGluZyBjbGFzcyBGb28uCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
CisgcHJvdGVjdGVkOgorICAvLyBZb3UgY2FuIHJlbW92ZSBhbnkgb3IgYWxsIG9mIHRoZSBmb2xs
b3dpbmcgZnVuY3Rpb25zIGlmIGl0cyBib2R5CisgIC8vIGlzIGVtcHR5LgorCisgIEZvb1Rlc3Qo
KSB7CisgICAgLy8gWW91IGNhbiBkbyBzZXQtdXAgd29yayBmb3IgZWFjaCB0ZXN0IGhlcmUuCisg
IH0KKworICB2aXJ0dWFsIH5Gb29UZXN0KCkgeworICAgIC8vIFlvdSBjYW4gZG8gY2xlYW4tdXAg
d29yayB0aGF0IGRvZXNuJ3QgdGhyb3cgZXhjZXB0aW9ucyBoZXJlLgorICB9CisKKyAgLy8gSWYg
dGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIGFyZSBub3QgZW5vdWdoIGZvciBzZXR0aW5n
IHVwCisgIC8vIGFuZCBjbGVhbmluZyB1cCBlYWNoIHRlc3QsIHlvdSBjYW4gZGVmaW5lIHRoZSBm
b2xsb3dpbmcgbWV0aG9kczoKKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgLy8gQ29k
ZSBoZXJlIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjb25zdHJ1Y3RvciAo
cmlnaHQKKyAgICAvLyBiZWZvcmUgZWFjaCB0ZXN0KS4KKyAgfQorCisgIHZpcnR1YWwgdm9pZCBU
ZWFyRG93bigpIHsKKyAgICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkg
YWZ0ZXIgZWFjaCB0ZXN0IChyaWdodAorICAgIC8vIGJlZm9yZSB0aGUgZGVzdHJ1Y3RvcikuCisg
IH0KKworICAvLyBPYmplY3RzIGRlY2xhcmVkIGhlcmUgY2FuIGJlIHVzZWQgYnkgYWxsIHRlc3Rz
IGluIHRoZSB0ZXN0IGNhc2UgZm9yIEZvby4KK307CisKKy8vIFRlc3RzIHRoYXQgdGhlIEZvbzo6
QmFyKCkgbWV0aG9kIGRvZXMgQWJjLgorVEVTVF9GKEZvb1Rlc3QsIE1ldGhvZEJhckRvZXNBYmMp
IHsKKyAgY29uc3Qgc3RyaW5nIGlucHV0X2ZpbGVwYXRoID0gInRoaXMvcGFja2FnZS90ZXN0ZGF0
YS9teWlucHV0ZmlsZS5kYXQiOworICBjb25zdCBzdHJpbmcgb3V0cHV0X2ZpbGVwYXRoID0gInRo
aXMvcGFja2FnZS90ZXN0ZGF0YS9teW91dHB1dGZpbGUuZGF0IjsKKyAgRm9vIGY7CisgIEVYUEVD
VF9FUSgwLCBmLkJhcihpbnB1dF9maWxlcGF0aCwgb3V0cHV0X2ZpbGVwYXRoKSk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgRm9vIGRvZXMgWHl6LgorVEVTVF9GKEZvb1Rlc3QsIERvZXNYeXopIHsKKyAg
Ly8gRXhlcmNpc2VzIHRoZSBYeXogZmVhdHVyZSBvZiBGb28uCit9CisKK30gIC8vIG5hbWVzcGFj
ZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9Citg
YGAKKworVGhlIGA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClgIGZ1bmN0aW9uIHBhcnNlcyB0
aGUgY29tbWFuZCBsaW5lIGZvciBHb29nbGUKK1Rlc3QgZmxhZ3MsIGFuZCByZW1vdmVzIGFsbCBy
ZWNvZ25pemVkIGZsYWdzLiBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBjb250cm9sIGEKK3Rlc3Qg
cHJvZ3JhbSdzIGJlaGF2aW9yIHZpYSB2YXJpb3VzIGZsYWdzLCB3aGljaCB3ZSdsbCBjb3ZlciBp
biBbQWR2YW5jZWRHdWlkZV0oVjFfN19BZHZhbmNlZEd1aWRlLm1kKS4KK1lvdSBtdXN0IGNhbGwg
dGhpcyBmdW5jdGlvbiBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9URVNUUygpYCwgb3IgdGhlIGZs
YWdzCit3b24ndCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4KKworT24gV2luZG93cywgYEluaXRH
b29nbGVUZXN0KClgIGFsc28gd29ya3Mgd2l0aCB3aWRlIHN0cmluZ3MsIHNvIGl0IGNhbiBiZSB1
c2VkCitpbiBwcm9ncmFtcyBjb21waWxlZCBpbiBgVU5JQ09ERWAgbW9kZSBhcyB3ZWxsLgorCitC
dXQgbWF5YmUgeW91IHRoaW5rIHRoYXQgd3JpdGluZyBhbGwgdGhvc2UgbWFpbigpIGZ1bmN0aW9u
cyBpcyB0b28gbXVjaCB3b3JrPyBXZSBhZ3JlZSB3aXRoIHlvdSBjb21wbGV0ZWx5IGFuZCB0aGF0
J3Mgd2h5IEdvb2dsZSBUZXN0IHByb3ZpZGVzIGEgYmFzaWMgaW1wbGVtZW50YXRpb24gb2YgbWFp
bigpLiBJZiBpdCBmaXRzIHlvdXIgbmVlZHMsIHRoZW4ganVzdCBsaW5rIHlvdXIgdGVzdCB3aXRo
IGd0ZXN0XF9tYWluIGxpYnJhcnkgYW5kIHlvdSBhcmUgZ29vZCB0byBnby4KKworIyMgSW1wb3J0
YW50IG5vdGUgZm9yIFZpc3VhbCBDKysgdXNlcnMgIyMKK0lmIHlvdSBwdXQgeW91ciB0ZXN0cyBp
bnRvIGEgbGlicmFyeSBhbmQgeW91ciBgbWFpbigpYCBmdW5jdGlvbiBpcyBpbiBhIGRpZmZlcmVu
dCBsaWJyYXJ5IG9yIGluIHlvdXIgLmV4ZSBmaWxlLCB0aG9zZSB0ZXN0cyB3aWxsIG5vdCBydW4u
IFRoZSByZWFzb24gaXMgYSBbYnVnXShodHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNvbS9mZWVk
YmFjay92aWV3ZmVlZGJhY2suYXNweD9GZWVkYmFja0lEPTI0NDQxMCZzaXRlaWQ9MjEwKSBpbiBW
aXN1YWwgQysrLiBXaGVuIHlvdSBkZWZpbmUgeW91ciB0ZXN0cywgR29vZ2xlIFRlc3QgY3JlYXRl
cyBjZXJ0YWluIHN0YXRpYyBvYmplY3RzIHRvIHJlZ2lzdGVyIHRoZW0uIFRoZXNlIG9iamVjdHMg
YXJlIG5vdCByZWZlcmVuY2VkIGZyb20gZWxzZXdoZXJlIGJ1dCB0aGVpciBjb25zdHJ1Y3RvcnMg
YXJlIHN0aWxsIHN1cHBvc2VkIHRvIHJ1bi4gV2hlbiBWaXN1YWwgQysrIGxpbmtlciBzZWVzIHRo
YXQgbm90aGluZyBpbiB0aGUgbGlicmFyeSBpcyByZWZlcmVuY2VkIGZyb20gb3RoZXIgcGxhY2Vz
IGl0IHRocm93cyB0aGUgbGlicmFyeSBvdXQuIFlvdSBoYXZlIHRvIHJlZmVyZW5jZSB5b3VyIGxp
YnJhcnkgd2l0aCB0ZXN0cyBmcm9tIHlvdXIgbWFpbiBwcm9ncmFtIHRvIGtlZXAgdGhlIGxpbmtl
ciBmcm9tIGRpc2NhcmRpbmcgaXQuIEhlcmUgaXMgaG93IHRvIGRvIGl0LiBTb21ld2hlcmUgaW4g
eW91ciBsaWJyYXJ5IGNvZGUgZGVjbGFyZSBhIGZ1bmN0aW9uOgorYGBgCitfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgaW50IFB1bGxJbk15TGlicmFyeSgpIHsgcmV0dXJuIDA7IH0KK2BgYAorSWYgeW91
IHB1dCB5b3VyIHRlc3RzIGluIGEgc3RhdGljIGxpYnJhcnkgKG5vdCBETEwpIHRoZW4gYF9fZGVj
bHNwZWMoZGxsZXhwb3J0KWAgaXMgbm90IHJlcXVpcmVkLiBOb3csIGluIHlvdXIgbWFpbiBwcm9n
cmFtLCB3cml0ZSBhIGNvZGUgdGhhdCBpbnZva2VzIHRoYXQgZnVuY3Rpb246CitgYGAKK2ludCBQ
dWxsSW5NeUxpYnJhcnkoKTsKK3N0YXRpYyBpbnQgZHVtbXkgPSBQdWxsSW5NeUxpYnJhcnkoKTsK
K2BgYAorVGhpcyB3aWxsIGtlZXAgeW91ciB0ZXN0cyByZWZlcmVuY2VkIGFuZCB3aWxsIG1ha2Ug
dGhlbSByZWdpc3RlciB0aGVtc2VsdmVzIGF0IHN0YXJ0dXAuCisKK0luIGFkZGl0aW9uLCBpZiB5
b3UgZGVmaW5lIHlvdXIgdGVzdHMgaW4gYSBzdGF0aWMgbGlicmFyeSwgYWRkIGAvT1BUOk5PUkVG
YCB0byB5b3VyIG1haW4gcHJvZ3JhbSBsaW5rZXIgb3B0aW9ucy4gSWYgeW91IHVzZSBNU1ZDKysg
SURFLCBnbyB0byB5b3VyIC5leGUgcHJvamVjdCBwcm9wZXJ0aWVzL0NvbmZpZ3VyYXRpb24gUHJv
cGVydGllcy9MaW5rZXIvT3B0aW1pemF0aW9uIGFuZCBzZXQgUmVmZXJlbmNlcyBzZXR0aW5nIHRv
IGBLZWVwIFVucmVmZXJlbmNlZCBEYXRhICgvT1BUOk5PUkVGKWAuIFRoaXMgd2lsbCBrZWVwIFZp
c3VhbCBDKysgbGlua2VyIGZyb20gZGlzY2FyZGluZyBpbmRpdmlkdWFsIHN5bWJvbHMgZ2VuZXJh
dGVkIGJ5IHlvdXIgdGVzdHMgZnJvbSB0aGUgZmluYWwgZXhlY3V0YWJsZS4KKworVGhlcmUgaXMg
b25lIG1vcmUgcGl0ZmFsbCwgdGhvdWdoLiBJZiB5b3UgdXNlIEdvb2dsZSBUZXN0IGFzIGEgc3Rh
dGljIGxpYnJhcnkgKHRoYXQncyBob3cgaXQgaXMgZGVmaW5lZCBpbiBndGVzdC52Y3Byb2opIHlv
dXIgdGVzdHMgbXVzdCBhbHNvIHJlc2lkZSBpbiBhIHN0YXRpYyBsaWJyYXJ5LiBJZiB5b3UgaGF2
ZSB0byBoYXZlIHRoZW0gaW4gYSBETEwsIHlvdSBfbXVzdF8gY2hhbmdlIEdvb2dsZSBUZXN0IHRv
IGJ1aWxkIGludG8gYSBETEwgYXMgd2VsbC4gT3RoZXJ3aXNlIHlvdXIgdGVzdHMgd2lsbCBub3Qg
cnVuIGNvcnJlY3RseSBvciB3aWxsIG5vdCBydW4gYXQgYWxsLiBUaGUgZ2VuZXJhbCBjb25jbHVz
aW9uIGhlcmUgaXM6IG1ha2UgeW91ciBsaWZlIGVhc2llciAtIGRvIG5vdCB3cml0ZSB5b3VyIHRl
c3RzIGluIGxpYnJhcmllcyEKKworIyBXaGVyZSB0byBHbyBmcm9tIEhlcmUgIworCitDb25ncmF0
dWxhdGlvbnMhIFlvdSd2ZSBsZWFybmVkIHRoZSBHb29nbGUgVGVzdCBiYXNpY3MuIFlvdSBjYW4g
c3RhcnQgd3JpdGluZworYW5kIHJ1bm5pbmcgR29vZ2xlIFRlc3QgdGVzdHMsIHJlYWQgc29tZSBb
c2FtcGxlc10oVjFfN19TYW1wbGVzLm1kKSwgb3IgY29udGludWUgd2l0aAorW0FkdmFuY2VkR3Vp
ZGVdKFYxXzdfQWR2YW5jZWRHdWlkZS5tZCksIHdoaWNoIGRlc2NyaWJlcyBtYW55IG1vcmUgdXNl
ZnVsIEdvb2dsZSBUZXN0IGZlYXR1cmVzLgorCisjIEtub3duIExpbWl0YXRpb25zICMKKworR29v
Z2xlIFRlc3QgaXMgZGVzaWduZWQgdG8gYmUgdGhyZWFkLXNhZmUuICBUaGUgaW1wbGVtZW50YXRp
b24gaXMKK3RocmVhZC1zYWZlIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGBwdGhyZWFkc2AgbGlicmFy
eSBpcyBhdmFpbGFibGUuICBJdAoraXMgY3VycmVudGx5IF91bnNhZmVfIHRvIHVzZSBHb29nbGUg
VGVzdCBhc3NlcnRpb25zIGZyb20gdHdvIHRocmVhZHMKK2NvbmN1cnJlbnRseSBvbiBvdGhlciBz
eXN0ZW1zIChlLmcuIFdpbmRvd3MpLiAgSW4gbW9zdCB0ZXN0cyB0aGlzIGlzCitub3QgYW4gaXNz
dWUgYXMgdXN1YWxseSB0aGUgYXNzZXJ0aW9ucyBhcmUgZG9uZSBpbiB0aGUgbWFpbiB0aHJlYWQu
IElmCit5b3Ugd2FudCB0byBoZWxwLCB5b3UgY2FuIHZvbHVudGVlciB0byBpbXBsZW1lbnQgdGhl
IG5lY2Vzc2FyeQorc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYGd0ZXN0LXBvcnQuaGAg
Zm9yIHlvdXIgcGxhdGZvcm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9k
b2NzL1YxXzdfUHVtcE1hbnVhbC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFf
N19QdW1wTWFudWFsLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxODRmMTUzY2EyZWNhZDdjNjVjYjU4YzI3ZmIz
MWJkNzIzNzVmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9k
b2NzL1YxXzdfUHVtcE1hbnVhbC5tZApAQCAtMCwwICsxLDE3NyBAQAorCisKKzxiPlA8L2I+dW1w
IGlzIDxiPlU8L2I+c2VmdWwgZm9yIDxiPk08L2I+ZXRhIDxiPlA8L2I+cm9ncmFtbWluZy4KKwor
IyBUaGUgUHJvYmxlbSAjCisKK1RlbXBsYXRlIGFuZCBtYWNybyBsaWJyYXJpZXMgb2Z0ZW4gbmVl
ZCB0byBkZWZpbmUgbWFueSBjbGFzc2VzLAorZnVuY3Rpb25zLCBvciBtYWNyb3MgdGhhdCB2YXJ5
IG9ubHkgKG9yIGFsbW9zdCBvbmx5KSBpbiB0aGUgbnVtYmVyIG9mCithcmd1bWVudHMgdGhleSB0
YWtlLiBJdCdzIGEgbG90IG9mIHJlcGV0aXRpdmUsIG1lY2hhbmljYWwsIGFuZAorZXJyb3ItcHJv
bmUgd29yay4KKworVmFyaWFkaWMgdGVtcGxhdGVzIGFuZCB2YXJpYWRpYyBtYWNyb3MgY2FuIGFs
bGV2aWF0ZSB0aGUgcHJvYmxlbS4KK0hvd2V2ZXIsIHdoaWxlIGJvdGggYXJlIGJlaW5nIGNvbnNp
ZGVyZWQgYnkgdGhlIEMrKyBjb21taXR0ZWUsIG5laXRoZXIKK2lzIGluIHRoZSBzdGFuZGFyZCB5
ZXQgb3Igd2lkZWx5IHN1cHBvcnRlZCBieSBjb21waWxlcnMuICBUaHVzIHRoZXkKK2FyZSBvZnRl
biBub3QgYSBnb29kIGNob2ljZSwgZXNwZWNpYWxseSB3aGVuIHlvdXIgY29kZSBuZWVkcyB0byBi
ZQorcG9ydGFibGUuIEFuZCB0aGVpciBjYXBhYmlsaXRpZXMgYXJlIHN0aWxsIGxpbWl0ZWQuCisK
K0FzIGEgcmVzdWx0LCBhdXRob3JzIG9mIHN1Y2ggbGlicmFyaWVzIG9mdGVuIGhhdmUgdG8gd3Jp
dGUgc2NyaXB0cyB0bworZ2VuZXJhdGUgdGhlaXIgaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIsIG91
ciBleHBlcmllbmNlIGlzIHRoYXQgaXQncwordGVkaW91cyB0byB3cml0ZSBzdWNoIHNjcmlwdHMs
IHdoaWNoIHRlbmQgdG8gcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mCit0aGUgZ2VuZXJhdGVkIGNv
ZGUgcG9vcmx5IGFuZCBhcmUgb2Z0ZW4gaGFyZCB0byByZWFkIGFuZCBlZGl0LiBGb3IKK2V4YW1w
bGUsIGEgc21hbGwgY2hhbmdlIG5lZWRlZCBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUgbWF5IHJlcXVp
cmUgc29tZQorbm9uLWludHVpdGl2ZSwgbm9uLXRyaXZpYWwgY2hhbmdlcyBpbiB0aGUgc2NyaXB0
LiBUaGlzIGlzIGVzcGVjaWFsbHkKK3BhaW5mdWwgd2hlbiBleHBlcmltZW50aW5nIHdpdGggdGhl
IGNvZGUuCisKKyMgT3VyIFNvbHV0aW9uICMKKworUHVtcCAoZm9yIFB1bXAgaXMgVXNlZnVsIGZv
ciBNZXRhIFByb2dyYW1taW5nLCBQcmV0dHkgVXNlZnVsIGZvciBNZXRhCitQcm9ncmFtbWluZywg
b3IgUHJhY3RpY2FsIFV0aWxpdHkgZm9yIE1ldGEgUHJvZ3JhbW1pbmcsIHdoaWNoZXZlciB5b3UK
K3ByZWZlcikgaXMgYSBzaW1wbGUgbWV0YS1wcm9ncmFtbWluZyB0b29sIGZvciBDKysuIFRoZSBp
ZGVhIGlzIHRoYXQgYQorcHJvZ3JhbW1lciB3cml0ZXMgYSBgZm9vLnB1bXBgIGZpbGUgd2hpY2gg
Y29udGFpbnMgQysrIGNvZGUgcGx1cyBtZXRhCitjb2RlIHRoYXQgbWFuaXB1bGF0ZXMgdGhlIEMr
KyBjb2RlLiBUaGUgbWV0YSBjb2RlIGNhbiBoYW5kbGUKK2l0ZXJhdGlvbnMgb3ZlciBhIHJhbmdl
LCBuZXN0ZWQgaXRlcmF0aW9ucywgbG9jYWwgbWV0YSB2YXJpYWJsZQorZGVmaW5pdGlvbnMsIHNp
bXBsZSBhcml0aG1ldGljLCBhbmQgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMuIFlvdSBjYW4KK3Zp
ZXcgaXQgYXMgYSBzbWFsbCBEb21haW4tU3BlY2lmaWMgTGFuZ3VhZ2UuIFRoZSBtZXRhIGxhbmd1
YWdlIGlzCitkZXNpZ25lZCB0byBiZSBub24taW50cnVzaXZlIChzLnQuIGl0IHdvbid0IGNvbmZ1
c2UgRW1hY3MnIEMrKyBtb2RlLAorZm9yIGV4YW1wbGUpIGFuZCBjb25jaXNlLCBtYWtpbmcgUHVt
cCBjb2RlIGludHVpdGl2ZSBhbmQgZWFzeSB0bworbWFpbnRhaW4uCisKKyMjIEhpZ2hsaWdodHMg
IyMKKworICAqIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBpbiBhIHNpbmdsZSBQeXRob24gc2NyaXB0
IGFuZCB0aHVzIHVsdHJhIHBvcnRhYmxlOiBubyBidWlsZCBvciBpbnN0YWxsYXRpb24gaXMgbmVl
ZGVkIGFuZCBpdCB3b3JrcyBjcm9zcyBwbGF0Zm9ybXMuCisgICogUHVtcCB0cmllcyB0byBiZSBz
bWFydCB3aXRoIHJlc3BlY3QgdG8gW0dvb2dsZSdzIHN0eWxlIGd1aWRlXShodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xlLXN0eWxlZ3VpZGUvKTogaXQgYnJlYWtzIGxvbmcgbGluZXMgKGVh
c3kgdG8gaGF2ZSB3aGVuIHRoZXkgYXJlIGdlbmVyYXRlZCkgYXQgYWNjZXB0YWJsZSBwbGFjZXMg
dG8gZml0IHdpdGhpbiA4MCBjb2x1bW5zIGFuZCBpbmRlbnQgdGhlIGNvbnRpbnVhdGlvbiBsaW5l
cyBjb3JyZWN0bHkuCisgICogVGhlIGZvcm1hdCBpcyBodW1hbi1yZWFkYWJsZSBhbmQgbW9yZSBj
b25jaXNlIHRoYW4gWE1MLgorICAqIFRoZSBmb3JtYXQgd29ya3MgcmVsYXRpdmVseSB3ZWxsIHdp
dGggRW1hY3MnIEMrKyBtb2RlLgorCisjIyBFeGFtcGxlcyAjIworCitUaGUgZm9sbG93aW5nIFB1
bXAgY29kZSAod2hlcmUgbWV0YSBrZXl3b3JkcyBzdGFydCB3aXRoIGAkYCwgYFtbYCBhbmQgYF1d
YCBhcmUgbWV0YSBicmFja2V0cywgYW5kIGAkJGAgc3RhcnRzIGEgbWV0YSBjb21tZW50IHRoYXQg
ZW5kcyB3aXRoIHRoZSBsaW5lKToKKworYGBgCiskdmFyIG4gPSAzICAgICAkJCBEZWZpbmVzIGEg
bWV0YSB2YXJpYWJsZSBuLgorJHJhbmdlIGkgMC4ubiAgJCQgRGVjbGFyZXMgdGhlIHJhbmdlIG9m
IG1ldGEgaXRlcmF0b3IgaSAoaW5jbHVzaXZlKS4KKyRmb3IgaSBbWworICAgICAgICAgICAgICAg
JCQgTWV0YSBsb29wLgorLy8gRm9vJGkgZG9lcyBibGFoIGZvciAkaS1hcnkgcHJlZGljYXRlcy4K
KyRyYW5nZSBqIDEuLmkKK3RlbXBsYXRlIDxzaXplX3QgTiAkZm9yIGogW1ssIHR5cGVuYW1lIEEk
al1dPgorY2xhc3MgRm9vJGkgeworJGlmIGkgPT0gMCBbWworICBibGFoIGE7CitdXSAkZWxpZiBp
IDw9IDIgW1sKKyAgYmxhaCBiOworXV0gJGVsc2UgW1sKKyAgYmxhaCBjOworXV0KK307CisKK11d
CitgYGAKKword2lsbCBiZSB0cmFuc2xhdGVkIGJ5IHRoZSBQdW1wIGNvbXBpbGVyIHRvOgorCitg
YGAKKy8vIEZvbzAgZG9lcyBibGFoIGZvciAwLWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNp
emVfdCBOPgorY2xhc3MgRm9vMCB7CisgIGJsYWggYTsKK307CisKKy8vIEZvbzEgZG9lcyBibGFo
IGZvciAxLWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBBMT4K
K2NsYXNzIEZvbzEgeworICBibGFoIGI7Cit9OworCisvLyBGb28yIGRvZXMgYmxhaCBmb3IgMi1h
cnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1l
IEEyPgorY2xhc3MgRm9vMiB7CisgIGJsYWggYjsKK307CisKKy8vIEZvbzMgZG9lcyBibGFoIGZv
ciAzLWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBBMSwgdHlw
ZW5hbWUgQTIsIHR5cGVuYW1lIEEzPgorY2xhc3MgRm9vMyB7CisgIGJsYWggYzsKK307CitgYGAK
KworSW4gYW5vdGhlciBleGFtcGxlLAorCitgYGAKKyRyYW5nZSBpIDEuLm4KK0Z1bmMoJGZvciBp
ICsgW1thJGldXSk7CiskJCBUaGUgdGV4dCBiZXR3ZWVuIGkgYW5kIFtbIGlzIHRoZSBzZXBhcmF0
b3IgYmV0d2VlbiBpdGVyYXRpb25zLgorYGBgCisKK3dpbGwgZ2VuZXJhdGUgb25lIG9mIHRoZSBm
b2xsb3dpbmcgbGluZXMgKHdpdGhvdXQgdGhlIGNvbW1lbnRzKSwgZGVwZW5kaW5nIG9uIHRoZSB2
YWx1ZSBvZiBgbmA6CisKK2BgYAorRnVuYygpOyAgICAgICAgICAgICAgLy8gSWYgbiBpcyAwLgor
RnVuYyhhMSk7ICAgICAgICAgICAgLy8gSWYgbiBpcyAxLgorRnVuYyhhMSArIGEyKTsgICAgICAg
Ly8gSWYgbiBpcyAyLgorRnVuYyhhMSArIGEyICsgYTMpOyAgLy8gSWYgbiBpcyAzLgorLy8gQW5k
IHNvIG9uLi4uCitgYGAKKworIyMgQ29uc3RydWN0cyAjIworCitXZSBzdXBwb3J0IHRoZSBmb2xs
b3dpbmcgbWV0YSBwcm9ncmFtbWluZyBjb25zdHJ1Y3RzOgorCit8IGAkdmFyIGlkID0gZXhwYCB8
IERlZmluZXMgYSBuYW1lZCBjb25zdGFudCB2YWx1ZS4gYCRpZGAgaXMgdmFsaWQgdXRpbCB0aGUg
ZW5kIG9mIHRoZSBjdXJyZW50IG1ldGEgbGV4aWNhbCBibG9jay4gfAorfDotLS0tLS0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYCRyYW5nZSBp
ZCBleHAuLmV4cGAgfCBTZXRzIHRoZSByYW5nZSBvZiBhbiBpdGVyYXRpb24gdmFyaWFibGUsIHdo
aWNoIGNhbiBiZSByZXVzZWQgaW4gbXVsdGlwbGUgbG9vcHMgbGF0ZXIuICAgICAgICAgIHwKK3wg
YCRmb3IgaWQgc2VwIFtbIGNvZGUgXV1gIHwgSXRlcmF0aW9uLiBUaGUgcmFuZ2Ugb2YgYGlkYCBt
dXN0IGhhdmUgYmVlbiBkZWZpbmVkIGVhcmxpZXIuIGAkaWRgIGlzIHZhbGlkIGluIGBjb2RlYC4g
ICAgICAgICB8Cit8IGAkKCQpYCAgICAgICAgICB8IEdlbmVyYXRlcyBhIHNpbmdsZSBgJGAgY2hh
cmFjdGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorfCBgJGlkYCAgICAgICAgICAgfCBWYWx1ZSBvZiB0aGUgbmFtZWQgY29u
c3RhbnQgb3IgaXRlcmF0aW9uIHZhcmlhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKK3wgYCQoZXhwKWAgICAgICAgIHwgVmFsdWUgb2YgdGhlIGV4cHJl
c3Npb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8Cit8IGAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2hg
IHwgQ29uZGl0aW9uYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBbWyBjb2RlIF1d
YCAgICB8IE1ldGEgbGV4aWNhbCBibG9jay4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgY3BwX2Nv
ZGVgICAgICAgfCBSYXcgQysrIGNvZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYCQk
IGNvbW1lbnRgICAgIHwgTWV0YSBjb21tZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisK
KyoqTm90ZToqKiBUbyBnaXZlIHRoZSB1c2VyIHNvbWUgZnJlZWRvbSBpbiBmb3JtYXR0aW5nIHRo
ZSBQdW1wIHNvdXJjZQorY29kZSwgUHVtcCBpZ25vcmVzIGEgbmV3LWxpbmUgY2hhcmFjdGVyIGlm
IGl0J3MgcmlnaHQgYWZ0ZXIgYCRmb3IgZm9vYAorb3IgbmV4dCB0byBgW1tgIG9yIGBdXWAuIFdp
dGhvdXQgdGhpcyBydWxlIHlvdSdsbCBvZnRlbiBiZSBmb3JjZWQgdG8gd3JpdGUKK3ZlcnkgbG9u
ZyBsaW5lcyB0byBnZXQgdGhlIGRlc2lyZWQgb3V0cHV0LiBUaGVyZWZvcmUgc29tZXRpbWVzIHlv
dSBtYXkKK25lZWQgdG8gaW5zZXJ0IGFuIGV4dHJhIG5ldy1saW5lIGluIHN1Y2ggcGxhY2VzIGZv
ciBhIG5ldy1saW5lIHRvIHNob3cKK3VwIGluIHlvdXIgb3V0cHV0LgorCisjIyBHcmFtbWFyICMj
CisKK2BgYAorY29kZSA6Oj0gYXRvbWljX2NvZGUqCithdG9taWNfY29kZSA6Oj0gJHZhciBpZCA9
IGV4cAorICAgIHwgJHZhciBpZCA9IFtbIGNvZGUgXV0KKyAgICB8ICRyYW5nZSBpZCBleHAuLmV4
cAorICAgIHwgJGZvciBpZCBzZXAgW1sgY29kZSBdXQorICAgIHwgJCgkKQorICAgIHwgJGlkCisg
ICAgfCAkKGV4cCkKKyAgICB8ICRpZiBleHAgW1sgY29kZSBdXSBlbHNlX2JyYW5jaAorICAgIHwg
W1sgY29kZSBdXQorICAgIHwgY3BwX2NvZGUKK3NlcCA6Oj0gY3BwX2NvZGUgfCBlbXB0eV9zdHJp
bmcKK2Vsc2VfYnJhbmNoIDo6PSAkZWxzZSBbWyBjb2RlIF1dCisgICAgfCAkZWxpZiBleHAgW1sg
Y29kZSBdXSBlbHNlX2JyYW5jaAorICAgIHwgZW1wdHlfc3RyaW5nCitleHAgOjo9IHNpbXBsZV9l
eHByZXNzaW9uX2luX1B5dGhvbl9zeW50YXgKK2BgYAorCisjIyBDb2RlICMjCisKK1lvdSBjYW4g
ZmluZCB0aGUgc291cmNlIGNvZGUgb2YgUHVtcCBpbiBbc2NyaXB0cy9wdW1wLnB5XSguLi9zY3Jp
cHRzL3B1bXAucHkpLiBJdCBpcyBzdGlsbAordmVyeSB1bnBvbGlzaGVkIGFuZCBsYWNrcyBhdXRv
bWF0ZWQgdGVzdHMsIGFsdGhvdWdoIGl0IGhhcyBiZWVuCitzdWNjZXNzZnVsbHkgdXNlZCBtYW55
IHRpbWVzLiBJZiB5b3UgZmluZCBhIGNoYW5jZSB0byB1c2UgaXQgaW4geW91cgorcHJvamVjdCwg
cGxlYXNlIGxldCB1cyBrbm93IHdoYXQgeW91IHRoaW5rISAgV2UgYWxzbyB3ZWxjb21lIGhlbHAg
b24KK2ltcHJvdmluZyBQdW1wLgorCisjIyBSZWFsIEV4YW1wbGVzICMjCisKK1lvdSBjYW4gZmlu
ZCByZWFsLXdvcmxkIGFwcGxpY2F0aW9ucyBvZiBQdW1wIGluIFtHb29nbGUgVGVzdF0oaHR0cDov
L3d3dy5nb29nbGUuY29tL2NvZGVzZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3BhY2thZ2UlM0Fo
dHRwJTNBJTJGJTJGZ29vZ2xldGVzdFwuZ29vZ2xlY29kZVwuY29tKSBhbmQgW0dvb2dsZSBNb2Nr
XShodHRwOi8vd3d3Lmdvb2dsZS5jb20vY29kZXNlYXJjaD9xPWZpbGUlM0FcLnB1bXAlMjQrcGFj
a2FnZSUzQWh0dHAlM0ElMkYlMkZnb29nbGVtb2NrXC5nb29nbGVjb2RlXC5jb20pLiAgVGhlIHNv
dXJjZSBmaWxlIGBmb28uaC5wdW1wYCBnZW5lcmF0ZXMgYGZvby5oYC4KKworIyMgVGlwcyAjIwor
CisgICogSWYgYSBtZXRhIHZhcmlhYmxlIGlzIGZvbGxvd2VkIGJ5IGEgbGV0dGVyIG9yIGRpZ2l0
LCB5b3UgY2FuIHNlcGFyYXRlIHRoZW0gdXNpbmcgYFtbXV1gLCB3aGljaCBpbnNlcnRzIGFuIGVt
cHR5IHN0cmluZy4gRm9yIGV4YW1wbGUgYEZvbyRqW1tdXUhlbHBlcmAgZ2VuZXJhdGUgYEZvbzFI
ZWxwZXJgIHdoZW4gYGpgIGlzIDEuCisgICogVG8gYXZvaWQgZXh0cmEtbG9uZyBQdW1wIHNvdXJj
ZSBsaW5lcywgeW91IGNhbiBicmVhayBhIGxpbmUgYW55d2hlcmUgeW91IHdhbnQgYnkgaW5zZXJ0
aW5nIGBbW11dYCBmb2xsb3dlZCBieSBhIG5ldyBsaW5lLiBTaW5jZSBhbnkgbmV3LWxpbmUgY2hh
cmFjdGVyIG5leHQgdG8gYFtbYCBvciBgXV1gIGlzIGlnbm9yZWQsIHRoZSBnZW5lcmF0ZWQgY29k
ZSB3b24ndCBjb250YWluIHRoaXMgbmV3IGxpbmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9kb2NzL1YxXzdfU2FtcGxlcy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2RvY3MvVjFfN19TYW1wbGVzLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyMWQyMDA1NjczNTQ1N2Y2ZjQ5YWVj
YzYxMjE5ZGFkMjI2MTJiZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9kb2NzL1YxXzdfU2FtcGxlcy5tZApAQCAtMCwwICsxLDE0IEBACitJZiB5b3UncmUgbGlr
ZSB1cywgeW91J2QgbGlrZSB0byBsb29rIGF0IHNvbWUgR29vZ2xlIFRlc3Qgc2FtcGxlIGNvZGUu
ICBUaGUKK1tzYW1wbGVzIGZvbGRlcl0oLi4vc2FtcGxlcykgaGFzIGEgbnVtYmVyIG9mIHdlbGwt
Y29tbWVudGVkIHNhbXBsZXMgc2hvd2luZyBob3cgdG8gdXNlIGEKK3ZhcmlldHkgb2YgR29vZ2xl
IFRlc3QgZmVhdHVyZXMuCisKKyAgKiBbU2FtcGxlICMxXSguLi9zYW1wbGVzL3NhbXBsZTFfdW5p
dHRlc3QuY2MpIHNob3dzIHRoZSBiYXNpYyBzdGVwcyBvZiB1c2luZyBHb29nbGUgVGVzdCB0byB0
ZXN0IEMrKyBmdW5jdGlvbnMuCisgICogW1NhbXBsZSAjMl0oLi4vc2FtcGxlcy9zYW1wbGUyX3Vu
aXR0ZXN0LmNjKSBzaG93cyBhIG1vcmUgY29tcGxleCB1bml0IHRlc3QgZm9yIGEgY2xhc3Mgd2l0
aCBtdWx0aXBsZSBtZW1iZXIgZnVuY3Rpb25zLgorICAqIFtTYW1wbGUgIzNdKC4uL3NhbXBsZXMv
c2FtcGxlM191bml0dGVzdC5jYykgdXNlcyBhIHRlc3QgZml4dHVyZS4KKyAgKiBbU2FtcGxlICM0
XSguLi9zYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QuY2MpIGlzIGFub3RoZXIgYmFzaWMgZXhhbXBs
ZSBvZiB1c2luZyBHb29nbGUgVGVzdC4KKyAgKiBbU2FtcGxlICM1XSguLi9zYW1wbGVzL3NhbXBs
ZTVfdW5pdHRlc3QuY2MpIHRlYWNoZXMgaG93IHRvIHJldXNlIGEgdGVzdCBmaXh0dXJlIGluIG11
bHRpcGxlIHRlc3QgY2FzZXMgYnkgZGVyaXZpbmcgc3ViLWZpeHR1cmVzIGZyb20gaXQuCisgICog
W1NhbXBsZSAjNl0oLi4vc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjKSBkZW1vbnN0cmF0ZXMg
dHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorICAqIFtTYW1wbGUgIzddKC4uL3NhbXBsZXMvc2Ft
cGxlN191bml0dGVzdC5jYykgdGVhY2hlcyB0aGUgYmFzaWNzIG9mIHZhbHVlLXBhcmFtZXRlcml6
ZWQgdGVzdHMuCisgICogW1NhbXBsZSAjOF0oLi4vc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNj
KSBzaG93cyB1c2luZyBgQ29tYmluZSgpYCBpbiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgor
ICAqIFtTYW1wbGUgIzldKC4uL3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYykgc2hvd3MgdXNl
IG9mIHRoZSBsaXN0ZW5lciBBUEkgdG8gbW9kaWZ5IEdvb2dsZSBUZXN0J3MgY29uc29sZSBvdXRw
dXQgYW5kIHRoZSB1c2Ugb2YgaXRzIHJlZmxlY3Rpb24gQVBJIHRvIGluc3BlY3QgdGVzdCByZXN1
bHRzLgorICAqIFtTYW1wbGUgIzEwXSguLi9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjKSBz
aG93cyB1c2Ugb2YgdGhlIGxpc3RlbmVyIEFQSSB0byBpbXBsZW1lbnQgYSBwcmltaXRpdmUgbWVt
b3J5IGxlYWsgY2hlY2tlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2Rv
Y3MvVjFfN19YY29kZUd1aWRlLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV83
X1hjb2RlR3VpZGUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmYyNGJmNTFiZmM0NTQxMmY2NThiZGRkNTNhMzMy
ZTE0OWQ3NzMwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2Rv
Y3MvVjFfN19YY29kZUd1aWRlLm1kCkBAIC0wLDAgKzEsOTMgQEAKKworCitUaGlzIGd1aWRlIHdp
bGwgZXhwbGFpbiBob3cgdG8gdXNlIHRoZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaW4geW91
ciBYY29kZSBwcm9qZWN0cyBvbiBNYWMgT1MgWC4gVGhpcyB0dXRvcmlhbCBiZWdpbnMgYnkgcXVp
Y2tseSBleHBsYWluaW5nIHdoYXQgdG8gZG8gZm9yIGV4cGVyaWVuY2VkIHVzZXJzLiBBZnRlciB0
aGUgcXVpY2sgc3RhcnQsIHRoZSBndWlkZSBnb2VzIHByb3ZpZGVzIGFkZGl0aW9uYWwgZXhwbGFu
YXRpb24gYWJvdXQgZWFjaCBzdGVwLgorCisjIFF1aWNrIFN0YXJ0ICMKKworSGVyZSBpcyB0aGUg
cXVpY2sgZ3VpZGUgZm9yIHVzaW5nIEdvb2dsZSBUZXN0IGluIHlvdXIgWGNvZGUgcHJvamVjdC4K
KworICAxLiBEb3dubG9hZCB0aGUgc291cmNlIGZyb20gdGhlIFt3ZWJzaXRlXShodHRwOi8vY29k
ZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdCkgdXNpbmcgdGhpcyBjb21tYW5kOiBgc3ZuIGNoZWNr
b3V0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay8gZ29vZ2xldGVz
dC1yZWFkLW9ubHlgCisgIDEuIE9wZW4gdXAgdGhlIGBndGVzdC54Y29kZXByb2pgIGluIHRoZSBg
Z29vZ2xldGVzdC1yZWFkLW9ubHkveGNvZGUvYCBkaXJlY3RvcnkgYW5kIGJ1aWxkIHRoZSBndGVz
dC5mcmFtZXdvcmsuCisgIDEuIENyZWF0ZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0IGluIHlv
dXIgWGNvZGUgcHJvamVjdCBjYWxsZWQgc29tZXRoaW5nIGxpa2UgIlVuaXRUZXN0cyIKKyAgMS4g
QWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8geW91ciBwcm9qZWN0IGFuZCBhZGQgaXQgdG8gdGhl
ICJMaW5rIEJpbmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgIlVuaXRUZXN0cyIK
KyAgMS4gQWRkIHlvdXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRvIHRoZSAiQ29tcGlsZSBTb3Vy
Y2VzIiBidWlsZCBwaGFzZSBvZiAiVW5pdFRlc3RzIgorICAxLiBFZGl0IHRoZSAiVW5pdFRlc3Rz
IiBleGVjdXRhYmxlIGFuZCBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZWQgIkRZTERc
X0ZSQU1FV09SS1xfUEFUSCIgd2l0aCBhIHZhbHVlIGVxdWFsIHRvIHRoZSBwYXRoIHRvIHRoZSBm
cmFtZXdvcmsgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHJlbGF0aXZlIHRvIHRoZSBj
b21waWxlZCBleGVjdXRhYmxlLgorICAxLiBCdWlsZCBhbmQgR28KKworVGhlIGZvbGxvd2luZyBz
ZWN0aW9ucyBmdXJ0aGVyIGV4cGxhaW4gZWFjaCBvZiB0aGUgc3RlcHMgbGlzdGVkIGFib3ZlIGlu
IGRlcHRoLCBkZXNjcmliaW5nIGluIG1vcmUgZGV0YWlsIGhvdyB0byBjb21wbGV0ZSBpdCBpbmNs
dWRpbmcgc29tZSB2YXJpYXRpb25zLgorCisjIEdldCB0aGUgU291cmNlICMKKworQ3VycmVudGx5
LCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIGRpc2N1c3NlZCBoZXJlIGlzbid0IGF2YWlsYWJsZSBpbiBh
IHRhZ2dlZCByZWxlYXNlIG9mIEdvb2dsZSBUZXN0LCBpdCBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0
aGUgdHJ1bmsuIEFzIGV4cGxhaW5lZCBhdCB0aGUgR29vZ2xlIFRlc3QgW3NpdGVdKGh0dHA6Ly9j
b2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L3NvdXJjZS9jaGVja291dCI+c3ZuKSwgeW91IGNh
biBnZXQgdGhlIGNvZGUgZnJvbSBhbm9ueW1vdXMgU1ZOIHdpdGggdGhpcyBjb21tYW5kOgorCitg
YGAKK3N2biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1
bmsvIGdvb2dsZXRlc3QtcmVhZC1vbmx5CitgYGAKKworQWx0ZXJuYXRpdmVseSwgaWYgeW91IGFy
ZSB3b3JraW5nIHdpdGggU3VidmVyc2lvbiBpbiB5b3VyIG93biBjb2RlIGJhc2UsIHlvdSBjYW4g
YWRkIEdvb2dsZSBUZXN0IGFzIGFuIGV4dGVybmFsIGRlcGVuZGVuY3kgdG8geW91ciBvd24gU3Vi
dmVyc2lvbiByZXBvc2l0b3J5LiBCeSBmb2xsb3dpbmcgdGhpcyBhcHByb2FjaCwgZXZlcnlvbmUg
dGhhdCBjaGVja3Mgb3V0IHlvdXIgc3ZuIHJlcG9zaXRvcnkgd2lsbCBhbHNvIHJlY2VpdmUgYSBj
b3B5IG9mIEdvb2dsZSBUZXN0IChhIHNwZWNpZmljIHZlcnNpb24sIGlmIHlvdSB3aXNoKSB3aXRo
b3V0IGhhdmluZyB0byBjaGVjayBpdCBvdXQgZXhwbGljaXRseS4gVGhpcyBtYWtlcyB0aGUgc2V0
IHVwIG9mIHlvdXIgcHJvamVjdCBzaW1wbGVyIGFuZCByZWR1Y2VzIHRoZSBjb3BpZWQgY29kZSBp
biB0aGUgcmVwb3NpdG9yeS4KKworVG8gdXNlIGBzdm46ZXh0ZXJuYWxzYCwgZGVjaWRlIHdoZXJl
IHlvdSB3b3VsZCBsaWtlIHRvIGhhdmUgdGhlIGV4dGVybmFsIHNvdXJjZSByZXNpZGUuIFlvdSBt
aWdodCBjaG9vc2UgdG8gcHV0IHRoZSBleHRlcm5hbCBzb3VyY2UgaW5zaWRlIHRoZSB0cnVuaywg
YmVjYXVzZSB5b3Ugd2FudCBpdCB0byBiZSBwYXJ0IG9mIHRoZSBicmFuY2ggd2hlbiB5b3UgbWFr
ZSBhIHJlbGVhc2UuIEhvd2V2ZXIsIGtlZXBpbmcgaXQgb3V0c2lkZSB0aGUgdHJ1bmsgaW4gYSB2
ZXJzaW9uLXRhZ2dlZCBkaXJlY3RvcnkgY2FsbGVkIHNvbWV0aGluZyBsaWtlIGB0aGlyZC1wYXJ0
eS9nb29nbGV0ZXN0LzEuMC4xYCwgaXMgYW5vdGhlciBvcHRpb24uIE9uY2UgdGhlIGxvY2F0aW9u
IGlzIGVzdGFibGlzaGVkLCB1c2UgYHN2biBwcm9wZWRpdCBzdm46ZXh0ZXJuYWxzIF9kaXJlY3Rv
cnlfYCB0byBzZXQgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgb24gYSBkaXJlY3RvcnkgaW4g
eW91ciByZXBvc2l0b3J5LiBUaGlzIGRpcmVjdG9yeSB3b24ndCBjb250YWluIHRoZSBjb2RlLCBi
dXQgYmUgaXRzIHZlcnNpb25lZCBwYXJlbnQgZGlyZWN0b3J5LgorCitUaGUgY29tbWFuZCBgc3Zu
IHByb3BlZGl0YCB3aWxsIGJyaW5nIHVwIHlvdXIgU3VidmVyc2lvbiBlZGl0b3IsIG1ha2luZyBl
ZGl0aW5nIHRoZSBsb25nLCAocG90ZW50aWFsbHkgbXVsdGktbGluZSkgcHJvcGVydHkgc2ltcGxl
ci4gVGhpcyBzYW1lIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjaGVjayBvdXQgYSB0YWdnZWQgYnJh
bmNoLCBieSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgVVJMIChlLmcuIGBodHRwOi8vZ29vZ2xldGVz
dC5nb29nbGVjb2RlLmNvbS9zdm4vdGFncy9yZWxlYXNlLTEuMC4xYCkuIEFkZGl0aW9uYWxseSwg
dGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgYWxsb3dzIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEg
cGFydGljdWxhciByZXZpc2lvbiBvZiB0aGUgdHJ1bmsgd2l0aCB0aGUgYC1yXyMjX2Agb3B0aW9u
IChlLmcuIGBleHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QgLXI2MCBodHRwOi8vZ29vZ2xldGVzdC5n
b29nbGVjb2RlLmNvbS9zdm4vdHJ1bmtgKS4KKworSGVyZSBpcyBhbiBleGFtcGxlIG9mIHVzaW5n
IHRoZSBzdm46ZXh0ZXJuYWxzIHByb3BlcnRpZXMgb24gYSB0cnVuayAocmVhZCB2aWEgYHN2biBw
cm9wZ2V0YCkgb2YgYSBwcm9qZWN0LiBUaGlzIHZhbHVlIGNoZWNrcyBvdXQgYSBjb3B5IG9mIEdv
b2dsZSBUZXN0IGludG8gdGhlIGB0cnVuay9leHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QvYCBkaXJl
Y3RvcnkuCisKK2BgYAorW0NvbXB1dGVyOnN2bl0gdXNlciQgc3ZuIHByb3BnZXQgc3ZuOmV4dGVy
bmFscyB0cnVuaworZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdv
b2dsZWNvZGUuY29tL3N2bi90cnVuaworYGBgCisKKyMgQWRkIHRoZSBGcmFtZXdvcmsgdG8gWW91
ciBQcm9qZWN0ICMKKworVGhlIG5leHQgc3RlcCBpcyB0byBidWlsZCBhbmQgYWRkIHRoZSBndGVz
dC5mcmFtZXdvcmsgdG8geW91ciBvd24gcHJvamVjdC4gVGhpcyBndWlkZSBkZXNjcmliZXMgdHdv
IGNvbW1vbiB3YXlzIGJlbG93LgorCisgICogKipPcHRpb24gMSoqIC0tLSBUaGUgc2ltcGxlc3Qg
d2F5IHRvIGFkZCBHb29nbGUgVGVzdCB0byB5b3VyIG93biBwcm9qZWN0LCBpcyB0byBvcGVuIGd0
ZXN0Lnhjb2RlcHJvaiAoZm91bmQgaW4gdGhlIHhjb2RlLyBkaXJlY3Rvcnkgb2YgdGhlIEdvb2ds
ZSBUZXN0IHRydW5rKSBhbmQgYnVpbGQgdGhlIGZyYW1ld29yayBtYW51YWxseS4gVGhlbiwgYWRk
IHRoZSBidWlsdCBmcmFtZXdvcmsgaW50byB5b3VyIHByb2plY3QgdXNpbmcgdGhlICJBZGQtPkV4
aXN0aW5nIEZyYW1ld29yay4uLiIgZnJvbSB0aGUgY29udGV4dCBtZW51IG9yICJQcm9qZWN0LT5B
ZGQuLi4iIGZyb20gdGhlIG1haW4gbWVudS4gVGhlIGd0ZXN0LmZyYW1ld29yayBpcyByZWxvY2F0
YWJsZSBhbmQgY29udGFpbnMgdGhlIGhlYWRlcnMgYW5kIG9iamVjdCBjb2RlIHRoYXQgeW91J2xs
IG5lZWQgdG8gbWFrZSB0ZXN0cy4gVGhpcyBtZXRob2QgcmVxdWlyZXMgcmVidWlsZGluZyBldmVy
eSB0aW1lIHlvdSB1cGdyYWRlIEdvb2dsZSBUZXN0IGluIHlvdXIgcHJvamVjdC4KKyAgKiAqKk9w
dGlvbiAyKiogLS0tIElmIHlvdSBhcmUgZ29pbmcgdG8gYmUgbGl2aW5nIG9mZiB0aGUgdHJ1bmsg
b2YgR29vZ2xlIFRlc3QsIGluY29ycG9yYXRpbmcgaXRzIGxhdGVzdCBmZWF0dXJlcyBpbnRvIHlv
dXIgdW5pdCB0ZXN0cyAob3IgYXJlIGEgR29vZ2xlIFRlc3QgZGV2ZWxvcGVyIHlvdXJzZWxmKS4g
WW91J2xsIHdhbnQgdG8gcmVidWlsZCB0aGUgZnJhbWV3b3JrIGV2ZXJ5IHRpbWUgdGhlIHNvdXJj
ZSB1cGRhdGVzLiB0byBkbyB0aGlzLCB5b3UnbGwgbmVlZCB0byBhZGQgdGhlIGd0ZXN0Lnhjb2Rl
cHJvaiBmaWxlLCBub3QgdGhlIGZyYW1ld29yayBpdHNlbGYsIHRvIHlvdXIgb3duIFhjb2RlIHBy
b2plY3QuIFRoZW4sIGZyb20gdGhlIGJ1aWxkIHByb2R1Y3RzIHRoYXQgYXJlIHJldmVhbGVkIGJ5
IHRoZSBwcm9qZWN0J3MgZGlzY2xvc3VyZSB0cmlhbmdsZSwgeW91IGNhbiBmaW5kIHRoZSBndGVz
dC5mcmFtZXdvcmssIHdoaWNoIGNhbiBiZSBhZGRlZCB0byB5b3VyIHRhcmdldHMgKGRpc2N1c3Nl
ZCBiZWxvdykuCisKKyMgTWFrZSBhIFRlc3QgVGFyZ2V0ICMKKworVG8gc3RhcnQgd3JpdGluZyB0
ZXN0cywgbWFrZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0LiBUaGlzIHRhcmdldCB0ZW1wbGF0
ZSBpcyBhdmFpbGFibGUgdW5kZXIgQlNELCBDb2NvYSwgb3IgQ2FyYm9uLiBBZGQgeW91ciB1bml0
IHRlc3Qgc291cmNlIGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJjZXMiIGJ1aWxkIHBoYXNlIG9m
IHRoZSB0YXJnZXQuCisKK05leHQsIHlvdSdsbCB3YW50IHRvIGFkZCBndGVzdC5mcmFtZXdvcmsg
aW4gdHdvIGRpZmZlcmVudCB3YXlzLCBkZXBlbmRpbmcgdXBvbiB3aGljaCBvcHRpb24geW91IGNo
b3NlIGFib3ZlLgorCisgICogKipPcHRpb24gMSoqIC0tLSBEdXJpbmcgY29tcGlsYXRpb24sIFhj
b2RlIHdpbGwgbmVlZCB0byBrbm93IHRoYXQgeW91IGFyZSBsaW5raW5nIGFnYWluc3QgdGhlIGd0
ZXN0LmZyYW1ld29yay4gQWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8gdGhlICJMaW5rIEJpbmFy
eSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gVGhpcyB3
aWxsIGluY2x1ZGUgdGhlIEdvb2dsZSBUZXN0IGhlYWRlcnMgaW4geW91ciBoZWFkZXIgc2VhcmNo
IHBhdGgsIGFuZCB3aWxsIHRlbGwgdGhlIGxpbmtlciB3aGVyZSB0byBmaW5kIHRoZSBsaWJyYXJ5
LgorICAqICoqT3B0aW9uIDIqKiAtLS0gSWYgeW91ciB3b3JraW5nIG91dCBvZiB0aGUgdHJ1bmss
IHlvdSdsbCBhbHNvIHdhbnQgdG8gYWRkIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyICJMaW5rIEJp
bmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gSW4g
YWRkaXRpb24sIHlvdSdsbCAgd2FudCB0byBhZGQgdGhlIGd0ZXN0LmZyYW1ld29yayBhcyBhIGRl
cGVuZGVuY3kgdG8geW91ciB1bml0IHRlc3QgdGFyZ2V0LiBUaGlzIHdheSwgWGNvZGUgd2lsbCBt
YWtlIHN1cmUgdGhhdCBndGVzdC5mcmFtZXdvcmsgaXMgdXAgdG8gZGF0ZSwgZXZlcnkgdGltZSB5
b3VyIGJ1aWxkIHlvdXIgdGFyZ2V0LiBGaW5hbGx5LCBpZiB5b3UgZG9uJ3Qgc2hhcmUgYnVpbGQg
ZGlyZWN0b3JpZXMgd2l0aCBHb29nbGUgVGVzdCwgeW91J2xsIGhhdmUgdG8gY29weSB0aGUgZ3Rl
c3QuZnJhbWV3b3JrIGludG8geW91ciBvd24gYnVpbGQgcHJvZHVjdHMgZGlyZWN0b3J5IHVzaW5n
IGEgIlJ1biBTY3JpcHQiIGJ1aWxkIHBoYXNlLgorCisjIFNldCBVcCB0aGUgRXhlY3V0YWJsZSBS
dW4gRW52aXJvbm1lbnQgIworCitTaW5jZSB0aGUgdW5pdCB0ZXN0IGV4ZWN1dGFibGUgaXMgYSBz
aGVsbCB0b29sLCBpdCBkb2Vzbid0IGhhdmUgYSBidW5kbGUgd2l0aCBhIGBDb250ZW50cy9GcmFt
ZXdvcmtzYCBkaXJlY3RvcnksIGluIHdoaWNoIHRvIHBsYWNlIGd0ZXN0LmZyYW1ld29yay4gSW5z
dGVhZCwgdGhlIGR5bmFtaWMgbGlua2VyIG11c3QgYmUgdG9sZCBhdCBydW50aW1lIHRvIHNlYXJj
aCBmb3IgdGhlIGZyYW1ld29yayBpbiBhbm90aGVyIGxvY2F0aW9uLiBUaGlzIGNhbiBiZSBhY2Nv
bXBsaXNoZWQgYnkgc2V0dGluZyB0aGUgIkRZTERcX0ZSQU1FV09SS1xfUEFUSCIgZW52aXJvbm1l
bnQgdmFyaWFibGUgaW4gdGhlICJFZGl0IEFjdGl2ZSBFeGVjdXRhYmxlIC4uLiIgQXJndW1lbnRz
IHRhYiwgdW5kZXIgIlZhcmlhYmxlcyB0byBiZSBzZXQgaW4gdGhlIGVudmlyb25tZW50OiIuIFRo
ZSBwYXRoIGZvciB0aGlzIHZhbHVlIGlzIHRoZSBwYXRoIChyZWxhdGl2ZSBvciBhYnNvbHV0ZSkg
b2YgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsuCisKK0lmIHlv
dSBoYXZlbid0IHNldCB1cCB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRILCBjb3JyZWN0bHksIHlv
dSBtaWdodCBnZXQgYSBtZXNzYWdlIGxpa2UgdGhpczoKKworYGBgCitbU2Vzc2lvbiBzdGFydGVk
IGF0IDIwMDgtMDgtMTUgMDY6MjM6NTcgLTA2MDAuXQorICBkeWxkOiBMaWJyYXJ5IG5vdCBsb2Fk
ZWQ6IEBsb2FkZXJfcGF0aC8uLi9GcmFtZXdvcmtzL2d0ZXN0LmZyYW1ld29yay9WZXJzaW9ucy9B
L2d0ZXN0CisgICAgUmVmZXJlbmNlZCBmcm9tOiAvVXNlcnMvdXNlcm5hbWUvRG9jdW1lbnRzL1Nh
bmRib3gvZ3Rlc3RTYW1wbGUvYnVpbGQvRGVidWcvV2lkZ2V0RnJhbWV3b3JrVGVzdAorICAgIFJl
YXNvbjogaW1hZ2Ugbm90IGZvdW5kCitgYGAKKworVG8gY29ycmVjdCB0aGlzIHByb2JsZW0sIGdv
dCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGV4ZWN1dGFibGUgbmFtZWQgaW4gIlJl
ZmVyZW5jZWQgZnJvbToiIHZhbHVlIGluIHRoZSBlcnJvciBtZXNzYWdlIGFib3ZlLiBUaGVuLCB3
aXRoIHRoZSB0ZXJtaW5hbCBpbiB0aGlzIGxvY2F0aW9uLCBmaW5kIHRoZSByZWxhdGl2ZSBwYXRo
IHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrLiBUaGF0IGlz
IHRoZSB2YWx1ZSB5b3UnbGwgbmVlZCB0byBzZXQgYXMgdGhlIERZTERcX0ZSQU1FV09SS1xfUEFU
SC4KKworIyBCdWlsZCBhbmQgR28gIworCitOb3csIHdoZW4geW91IGNsaWNrICJCdWlsZCBhbmQg
R28iLCB0aGUgdGVzdCB3aWxsIGJlIGV4ZWN1dGVkLiBEdW1waW5nIG91dCBzb21ldGhpbmcgbGlr
ZSB0aGlzOgorCitgYGAKK1tTZXNzaW9uIHN0YXJ0ZWQgYXQgMjAwOC0wOC0wNiAwNjozNjoxMyAt
MDYwMC5dCitbPT09PT09PT09PV0gUnVubmluZyAyIHRlc3RzIGZyb20gMSB0ZXN0IGNhc2UuCitb
LS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgorWy0tLS0tLS0tLS1d
IDIgdGVzdHMgZnJvbSBXaWRnZXRJbml0aWFsaXplclRlc3QKK1sgUlVOICAgICAgXSBXaWRnZXRJ
bml0aWFsaXplclRlc3QuVGVzdENvbnN0cnVjdG9yCitbICAgICAgIE9LIF0gV2lkZ2V0SW5pdGlh
bGl6ZXJUZXN0LlRlc3RDb25zdHJ1Y3RvcgorWyBSVU4gICAgICBdIFdpZGdldEluaXRpYWxpemVy
VGVzdC5UZXN0Q29udmVyc2lvbgorWyAgICAgICBPSyBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5U
ZXN0Q29udmVyc2lvbgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXIt
ZG93bgorWz09PT09PT09PT1dIDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZSByYW4uCitbICBQQVNT
RUQgIF0gMiB0ZXN0cy4KKworVGhlIERlYnVnZ2VyIGhhcyBleGl0ZWQgd2l0aCBzdGF0dXMgMC4g
IAorYGBgCisKKyMgU3VtbWFyeSAjCisKK1VuaXQgdGVzdGluZyBpcyBhIHZhbHVhYmxlIHdheSB0
byBlbnN1cmUgeW91ciBkYXRhIG1vZGVsIHN0YXlzIHZhbGlkIGV2ZW4gZHVyaW5nIHJhcGlkIGRl
dmVsb3BtZW50IG9yIHJlZmFjdG9yaW5nLiBUaGUgR29vZ2xlIFRlc3RpbmcgRnJhbWV3b3JrIGlz
IGEgZ3JlYXQgdW5pdCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBhbmQgQysrIHdoaWNoIGludGVn
cmF0ZXMgd2VsbCB3aXRoIGFuIFhjb2RlIGRldmVsb3BtZW50IGVudmlyb25tZW50LgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2RvY3MvWGNvZGVHdWlkZS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvWGNvZGVH
dWlkZS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iZjI0YmY1MWJmYzQ1NDEyZjY1OGJkZGQ1M2EzMzJlMTQ5ZDc3
MzA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9YY29k
ZUd1aWRlLm1kCkBAIC0wLDAgKzEsOTMgQEAKKworCitUaGlzIGd1aWRlIHdpbGwgZXhwbGFpbiBo
b3cgdG8gdXNlIHRoZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaW4geW91ciBYY29kZSBwcm9q
ZWN0cyBvbiBNYWMgT1MgWC4gVGhpcyB0dXRvcmlhbCBiZWdpbnMgYnkgcXVpY2tseSBleHBsYWlu
aW5nIHdoYXQgdG8gZG8gZm9yIGV4cGVyaWVuY2VkIHVzZXJzLiBBZnRlciB0aGUgcXVpY2sgc3Rh
cnQsIHRoZSBndWlkZSBnb2VzIHByb3ZpZGVzIGFkZGl0aW9uYWwgZXhwbGFuYXRpb24gYWJvdXQg
ZWFjaCBzdGVwLgorCisjIFF1aWNrIFN0YXJ0ICMKKworSGVyZSBpcyB0aGUgcXVpY2sgZ3VpZGUg
Zm9yIHVzaW5nIEdvb2dsZSBUZXN0IGluIHlvdXIgWGNvZGUgcHJvamVjdC4KKworICAxLiBEb3du
bG9hZCB0aGUgc291cmNlIGZyb20gdGhlIFt3ZWJzaXRlXShodHRwOi8vY29kZS5nb29nbGUuY29t
L3AvZ29vZ2xldGVzdCkgdXNpbmcgdGhpcyBjb21tYW5kOiBgc3ZuIGNoZWNrb3V0IGh0dHA6Ly9n
b29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay8gZ29vZ2xldGVzdC1yZWFkLW9ubHlg
CisgIDEuIE9wZW4gdXAgdGhlIGBndGVzdC54Y29kZXByb2pgIGluIHRoZSBgZ29vZ2xldGVzdC1y
ZWFkLW9ubHkveGNvZGUvYCBkaXJlY3RvcnkgYW5kIGJ1aWxkIHRoZSBndGVzdC5mcmFtZXdvcmsu
CisgIDEuIENyZWF0ZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0IGluIHlvdXIgWGNvZGUgcHJv
amVjdCBjYWxsZWQgc29tZXRoaW5nIGxpa2UgIlVuaXRUZXN0cyIKKyAgMS4gQWRkIHRoZSBndGVz
dC5mcmFtZXdvcmsgdG8geW91ciBwcm9qZWN0IGFuZCBhZGQgaXQgdG8gdGhlICJMaW5rIEJpbmFy
eSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgIlVuaXRUZXN0cyIKKyAgMS4gQWRkIHlv
dXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRvIHRoZSAiQ29tcGlsZSBTb3VyY2VzIiBidWlsZCBw
aGFzZSBvZiAiVW5pdFRlc3RzIgorICAxLiBFZGl0IHRoZSAiVW5pdFRlc3RzIiBleGVjdXRhYmxl
IGFuZCBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZWQgIkRZTERcX0ZSQU1FV09SS1xf
UEFUSCIgd2l0aCBhIHZhbHVlIGVxdWFsIHRvIHRoZSBwYXRoIHRvIHRoZSBmcmFtZXdvcmsgY29u
dGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHJlbGF0aXZlIHRvIHRoZSBjb21waWxlZCBleGVj
dXRhYmxlLgorICAxLiBCdWlsZCBhbmQgR28KKworVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBmdXJ0
aGVyIGV4cGxhaW4gZWFjaCBvZiB0aGUgc3RlcHMgbGlzdGVkIGFib3ZlIGluIGRlcHRoLCBkZXNj
cmliaW5nIGluIG1vcmUgZGV0YWlsIGhvdyB0byBjb21wbGV0ZSBpdCBpbmNsdWRpbmcgc29tZSB2
YXJpYXRpb25zLgorCisjIEdldCB0aGUgU291cmNlICMKKworQ3VycmVudGx5LCB0aGUgZ3Rlc3Qu
ZnJhbWV3b3JrIGRpc2N1c3NlZCBoZXJlIGlzbid0IGF2YWlsYWJsZSBpbiBhIHRhZ2dlZCByZWxl
YXNlIG9mIEdvb2dsZSBUZXN0LCBpdCBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgdHJ1bmsuIEFz
IGV4cGxhaW5lZCBhdCB0aGUgR29vZ2xlIFRlc3QgW3NpdGVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9nb29nbGV0ZXN0L3NvdXJjZS9jaGVja291dCI+c3ZuKSwgeW91IGNhbiBnZXQgdGhlIGNv
ZGUgZnJvbSBhbm9ueW1vdXMgU1ZOIHdpdGggdGhpcyBjb21tYW5kOgorCitgYGAKK3N2biBjaGVj
a291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvIGdvb2dsZXRl
c3QtcmVhZC1vbmx5CitgYGAKKworQWx0ZXJuYXRpdmVseSwgaWYgeW91IGFyZSB3b3JraW5nIHdp
dGggU3VidmVyc2lvbiBpbiB5b3VyIG93biBjb2RlIGJhc2UsIHlvdSBjYW4gYWRkIEdvb2dsZSBU
ZXN0IGFzIGFuIGV4dGVybmFsIGRlcGVuZGVuY3kgdG8geW91ciBvd24gU3VidmVyc2lvbiByZXBv
c2l0b3J5LiBCeSBmb2xsb3dpbmcgdGhpcyBhcHByb2FjaCwgZXZlcnlvbmUgdGhhdCBjaGVja3Mg
b3V0IHlvdXIgc3ZuIHJlcG9zaXRvcnkgd2lsbCBhbHNvIHJlY2VpdmUgYSBjb3B5IG9mIEdvb2ds
ZSBUZXN0IChhIHNwZWNpZmljIHZlcnNpb24sIGlmIHlvdSB3aXNoKSB3aXRob3V0IGhhdmluZyB0
byBjaGVjayBpdCBvdXQgZXhwbGljaXRseS4gVGhpcyBtYWtlcyB0aGUgc2V0IHVwIG9mIHlvdXIg
cHJvamVjdCBzaW1wbGVyIGFuZCByZWR1Y2VzIHRoZSBjb3BpZWQgY29kZSBpbiB0aGUgcmVwb3Np
dG9yeS4KKworVG8gdXNlIGBzdm46ZXh0ZXJuYWxzYCwgZGVjaWRlIHdoZXJlIHlvdSB3b3VsZCBs
aWtlIHRvIGhhdmUgdGhlIGV4dGVybmFsIHNvdXJjZSByZXNpZGUuIFlvdSBtaWdodCBjaG9vc2Ug
dG8gcHV0IHRoZSBleHRlcm5hbCBzb3VyY2UgaW5zaWRlIHRoZSB0cnVuaywgYmVjYXVzZSB5b3Ug
d2FudCBpdCB0byBiZSBwYXJ0IG9mIHRoZSBicmFuY2ggd2hlbiB5b3UgbWFrZSBhIHJlbGVhc2Uu
IEhvd2V2ZXIsIGtlZXBpbmcgaXQgb3V0c2lkZSB0aGUgdHJ1bmsgaW4gYSB2ZXJzaW9uLXRhZ2dl
ZCBkaXJlY3RvcnkgY2FsbGVkIHNvbWV0aGluZyBsaWtlIGB0aGlyZC1wYXJ0eS9nb29nbGV0ZXN0
LzEuMC4xYCwgaXMgYW5vdGhlciBvcHRpb24uIE9uY2UgdGhlIGxvY2F0aW9uIGlzIGVzdGFibGlz
aGVkLCB1c2UgYHN2biBwcm9wZWRpdCBzdm46ZXh0ZXJuYWxzIF9kaXJlY3RvcnlfYCB0byBzZXQg
dGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgb24gYSBkaXJlY3RvcnkgaW4geW91ciByZXBvc2l0
b3J5LiBUaGlzIGRpcmVjdG9yeSB3b24ndCBjb250YWluIHRoZSBjb2RlLCBidXQgYmUgaXRzIHZl
cnNpb25lZCBwYXJlbnQgZGlyZWN0b3J5LgorCitUaGUgY29tbWFuZCBgc3ZuIHByb3BlZGl0YCB3
aWxsIGJyaW5nIHVwIHlvdXIgU3VidmVyc2lvbiBlZGl0b3IsIG1ha2luZyBlZGl0aW5nIHRoZSBs
b25nLCAocG90ZW50aWFsbHkgbXVsdGktbGluZSkgcHJvcGVydHkgc2ltcGxlci4gVGhpcyBzYW1l
IG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjaGVjayBvdXQgYSB0YWdnZWQgYnJhbmNoLCBieSB1c2lu
ZyB0aGUgYXBwcm9wcmlhdGUgVVJMIChlLmcuIGBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2Rl
LmNvbS9zdm4vdGFncy9yZWxlYXNlLTEuMC4xYCkuIEFkZGl0aW9uYWxseSwgdGhlIHN2bjpleHRl
cm5hbHMgcHJvcGVydHkgYWxsb3dzIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgcGFydGljdWxhciBy
ZXZpc2lvbiBvZiB0aGUgdHJ1bmsgd2l0aCB0aGUgYC1yXyMjX2Agb3B0aW9uIChlLmcuIGBleHRl
cm5hbHMvc3JjL2dvb2dsZXRlc3QgLXI2MCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNv
bS9zdm4vdHJ1bmtgKS4KKworSGVyZSBpcyBhbiBleGFtcGxlIG9mIHVzaW5nIHRoZSBzdm46ZXh0
ZXJuYWxzIHByb3BlcnRpZXMgb24gYSB0cnVuayAocmVhZCB2aWEgYHN2biBwcm9wZ2V0YCkgb2Yg
YSBwcm9qZWN0LiBUaGlzIHZhbHVlIGNoZWNrcyBvdXQgYSBjb3B5IG9mIEdvb2dsZSBUZXN0IGlu
dG8gdGhlIGB0cnVuay9leHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QvYCBkaXJlY3RvcnkuCisKK2Bg
YAorW0NvbXB1dGVyOnN2bl0gdXNlciQgc3ZuIHByb3BnZXQgc3ZuOmV4dGVybmFscyB0cnVuawor
ZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29t
L3N2bi90cnVuaworYGBgCisKKyMgQWRkIHRoZSBGcmFtZXdvcmsgdG8gWW91ciBQcm9qZWN0ICMK
KworVGhlIG5leHQgc3RlcCBpcyB0byBidWlsZCBhbmQgYWRkIHRoZSBndGVzdC5mcmFtZXdvcmsg
dG8geW91ciBvd24gcHJvamVjdC4gVGhpcyBndWlkZSBkZXNjcmliZXMgdHdvIGNvbW1vbiB3YXlz
IGJlbG93LgorCisgICogKipPcHRpb24gMSoqIC0tLSBUaGUgc2ltcGxlc3Qgd2F5IHRvIGFkZCBH
b29nbGUgVGVzdCB0byB5b3VyIG93biBwcm9qZWN0LCBpcyB0byBvcGVuIGd0ZXN0Lnhjb2RlcHJv
aiAoZm91bmQgaW4gdGhlIHhjb2RlLyBkaXJlY3Rvcnkgb2YgdGhlIEdvb2dsZSBUZXN0IHRydW5r
KSBhbmQgYnVpbGQgdGhlIGZyYW1ld29yayBtYW51YWxseS4gVGhlbiwgYWRkIHRoZSBidWlsdCBm
cmFtZXdvcmsgaW50byB5b3VyIHByb2plY3QgdXNpbmcgdGhlICJBZGQtPkV4aXN0aW5nIEZyYW1l
d29yay4uLiIgZnJvbSB0aGUgY29udGV4dCBtZW51IG9yICJQcm9qZWN0LT5BZGQuLi4iIGZyb20g
dGhlIG1haW4gbWVudS4gVGhlIGd0ZXN0LmZyYW1ld29yayBpcyByZWxvY2F0YWJsZSBhbmQgY29u
dGFpbnMgdGhlIGhlYWRlcnMgYW5kIG9iamVjdCBjb2RlIHRoYXQgeW91J2xsIG5lZWQgdG8gbWFr
ZSB0ZXN0cy4gVGhpcyBtZXRob2QgcmVxdWlyZXMgcmVidWlsZGluZyBldmVyeSB0aW1lIHlvdSB1
cGdyYWRlIEdvb2dsZSBUZXN0IGluIHlvdXIgcHJvamVjdC4KKyAgKiAqKk9wdGlvbiAyKiogLS0t
IElmIHlvdSBhcmUgZ29pbmcgdG8gYmUgbGl2aW5nIG9mZiB0aGUgdHJ1bmsgb2YgR29vZ2xlIFRl
c3QsIGluY29ycG9yYXRpbmcgaXRzIGxhdGVzdCBmZWF0dXJlcyBpbnRvIHlvdXIgdW5pdCB0ZXN0
cyAob3IgYXJlIGEgR29vZ2xlIFRlc3QgZGV2ZWxvcGVyIHlvdXJzZWxmKS4gWW91J2xsIHdhbnQg
dG8gcmVidWlsZCB0aGUgZnJhbWV3b3JrIGV2ZXJ5IHRpbWUgdGhlIHNvdXJjZSB1cGRhdGVzLiB0
byBkbyB0aGlzLCB5b3UnbGwgbmVlZCB0byBhZGQgdGhlIGd0ZXN0Lnhjb2RlcHJvaiBmaWxlLCBu
b3QgdGhlIGZyYW1ld29yayBpdHNlbGYsIHRvIHlvdXIgb3duIFhjb2RlIHByb2plY3QuIFRoZW4s
IGZyb20gdGhlIGJ1aWxkIHByb2R1Y3RzIHRoYXQgYXJlIHJldmVhbGVkIGJ5IHRoZSBwcm9qZWN0
J3MgZGlzY2xvc3VyZSB0cmlhbmdsZSwgeW91IGNhbiBmaW5kIHRoZSBndGVzdC5mcmFtZXdvcmss
IHdoaWNoIGNhbiBiZSBhZGRlZCB0byB5b3VyIHRhcmdldHMgKGRpc2N1c3NlZCBiZWxvdykuCisK
KyMgTWFrZSBhIFRlc3QgVGFyZ2V0ICMKKworVG8gc3RhcnQgd3JpdGluZyB0ZXN0cywgbWFrZSBh
IG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0LiBUaGlzIHRhcmdldCB0ZW1wbGF0ZSBpcyBhdmFpbGFi
bGUgdW5kZXIgQlNELCBDb2NvYSwgb3IgQ2FyYm9uLiBBZGQgeW91ciB1bml0IHRlc3Qgc291cmNl
IGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJjZXMiIGJ1aWxkIHBoYXNlIG9mIHRoZSB0YXJnZXQu
CisKK05leHQsIHlvdSdsbCB3YW50IHRvIGFkZCBndGVzdC5mcmFtZXdvcmsgaW4gdHdvIGRpZmZl
cmVudCB3YXlzLCBkZXBlbmRpbmcgdXBvbiB3aGljaCBvcHRpb24geW91IGNob3NlIGFib3ZlLgor
CisgICogKipPcHRpb24gMSoqIC0tLSBEdXJpbmcgY29tcGlsYXRpb24sIFhjb2RlIHdpbGwgbmVl
ZCB0byBrbm93IHRoYXQgeW91IGFyZSBsaW5raW5nIGFnYWluc3QgdGhlIGd0ZXN0LmZyYW1ld29y
ay4gQWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8gdGhlICJMaW5rIEJpbmFyeSB3aXRoIExpYnJh
cmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gVGhpcyB3aWxsIGluY2x1ZGUg
dGhlIEdvb2dsZSBUZXN0IGhlYWRlcnMgaW4geW91ciBoZWFkZXIgc2VhcmNoIHBhdGgsIGFuZCB3
aWxsIHRlbGwgdGhlIGxpbmtlciB3aGVyZSB0byBmaW5kIHRoZSBsaWJyYXJ5LgorICAqICoqT3B0
aW9uIDIqKiAtLS0gSWYgeW91ciB3b3JraW5nIG91dCBvZiB0aGUgdHJ1bmssIHlvdSdsbCBhbHNv
IHdhbnQgdG8gYWRkIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyICJMaW5rIEJpbmFyeSB3aXRoIExp
YnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gSW4gYWRkaXRpb24sIHlv
dSdsbCAgd2FudCB0byBhZGQgdGhlIGd0ZXN0LmZyYW1ld29yayBhcyBhIGRlcGVuZGVuY3kgdG8g
eW91ciB1bml0IHRlc3QgdGFyZ2V0LiBUaGlzIHdheSwgWGNvZGUgd2lsbCBtYWtlIHN1cmUgdGhh
dCBndGVzdC5mcmFtZXdvcmsgaXMgdXAgdG8gZGF0ZSwgZXZlcnkgdGltZSB5b3VyIGJ1aWxkIHlv
dXIgdGFyZ2V0LiBGaW5hbGx5LCBpZiB5b3UgZG9uJ3Qgc2hhcmUgYnVpbGQgZGlyZWN0b3JpZXMg
d2l0aCBHb29nbGUgVGVzdCwgeW91J2xsIGhhdmUgdG8gY29weSB0aGUgZ3Rlc3QuZnJhbWV3b3Jr
IGludG8geW91ciBvd24gYnVpbGQgcHJvZHVjdHMgZGlyZWN0b3J5IHVzaW5nIGEgIlJ1biBTY3Jp
cHQiIGJ1aWxkIHBoYXNlLgorCisjIFNldCBVcCB0aGUgRXhlY3V0YWJsZSBSdW4gRW52aXJvbm1l
bnQgIworCitTaW5jZSB0aGUgdW5pdCB0ZXN0IGV4ZWN1dGFibGUgaXMgYSBzaGVsbCB0b29sLCBp
dCBkb2Vzbid0IGhhdmUgYSBidW5kbGUgd2l0aCBhIGBDb250ZW50cy9GcmFtZXdvcmtzYCBkaXJl
Y3RvcnksIGluIHdoaWNoIHRvIHBsYWNlIGd0ZXN0LmZyYW1ld29yay4gSW5zdGVhZCwgdGhlIGR5
bmFtaWMgbGlua2VyIG11c3QgYmUgdG9sZCBhdCBydW50aW1lIHRvIHNlYXJjaCBmb3IgdGhlIGZy
YW1ld29yayBpbiBhbm90aGVyIGxvY2F0aW9uLiBUaGlzIGNhbiBiZSBhY2NvbXBsaXNoZWQgYnkg
c2V0dGluZyB0aGUgIkRZTERcX0ZSQU1FV09SS1xfUEFUSCIgZW52aXJvbm1lbnQgdmFyaWFibGUg
aW4gdGhlICJFZGl0IEFjdGl2ZSBFeGVjdXRhYmxlIC4uLiIgQXJndW1lbnRzIHRhYiwgdW5kZXIg
IlZhcmlhYmxlcyB0byBiZSBzZXQgaW4gdGhlIGVudmlyb25tZW50OiIuIFRoZSBwYXRoIGZvciB0
aGlzIHZhbHVlIGlzIHRoZSBwYXRoIChyZWxhdGl2ZSBvciBhYnNvbHV0ZSkgb2YgdGhlIGRpcmVj
dG9yeSBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsuCisKK0lmIHlvdSBoYXZlbid0IHNl
dCB1cCB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRILCBjb3JyZWN0bHksIHlvdSBtaWdodCBnZXQg
YSBtZXNzYWdlIGxpa2UgdGhpczoKKworYGBgCitbU2Vzc2lvbiBzdGFydGVkIGF0IDIwMDgtMDgt
MTUgMDY6MjM6NTcgLTA2MDAuXQorICBkeWxkOiBMaWJyYXJ5IG5vdCBsb2FkZWQ6IEBsb2FkZXJf
cGF0aC8uLi9GcmFtZXdvcmtzL2d0ZXN0LmZyYW1ld29yay9WZXJzaW9ucy9BL2d0ZXN0CisgICAg
UmVmZXJlbmNlZCBmcm9tOiAvVXNlcnMvdXNlcm5hbWUvRG9jdW1lbnRzL1NhbmRib3gvZ3Rlc3RT
YW1wbGUvYnVpbGQvRGVidWcvV2lkZ2V0RnJhbWV3b3JrVGVzdAorICAgIFJlYXNvbjogaW1hZ2Ug
bm90IGZvdW5kCitgYGAKKworVG8gY29ycmVjdCB0aGlzIHByb2JsZW0sIGdvdCB0byB0aGUgZGly
ZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGV4ZWN1dGFibGUgbmFtZWQgaW4gIlJlZmVyZW5jZWQgZnJv
bToiIHZhbHVlIGluIHRoZSBlcnJvciBtZXNzYWdlIGFib3ZlLiBUaGVuLCB3aXRoIHRoZSB0ZXJt
aW5hbCBpbiB0aGlzIGxvY2F0aW9uLCBmaW5kIHRoZSByZWxhdGl2ZSBwYXRoIHRvIHRoZSBkaXJl
Y3RvcnkgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrLiBUaGF0IGlzIHRoZSB2YWx1ZSB5
b3UnbGwgbmVlZCB0byBzZXQgYXMgdGhlIERZTERcX0ZSQU1FV09SS1xfUEFUSC4KKworIyBCdWls
ZCBhbmQgR28gIworCitOb3csIHdoZW4geW91IGNsaWNrICJCdWlsZCBhbmQgR28iLCB0aGUgdGVz
dCB3aWxsIGJlIGV4ZWN1dGVkLiBEdW1waW5nIG91dCBzb21ldGhpbmcgbGlrZSB0aGlzOgorCitg
YGAKK1tTZXNzaW9uIHN0YXJ0ZWQgYXQgMjAwOC0wOC0wNiAwNjozNjoxMyAtMDYwMC5dCitbPT09
PT09PT09PV0gUnVubmluZyAyIHRlc3RzIGZyb20gMSB0ZXN0IGNhc2UuCitbLS0tLS0tLS0tLV0g
R2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgorWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJv
bSBXaWRnZXRJbml0aWFsaXplclRlc3QKK1sgUlVOICAgICAgXSBXaWRnZXRJbml0aWFsaXplclRl
c3QuVGVzdENvbnN0cnVjdG9yCitbICAgICAgIE9LIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRl
c3RDb25zdHJ1Y3RvcgorWyBSVU4gICAgICBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29u
dmVyc2lvbgorWyAgICAgICBPSyBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29udmVyc2lv
bgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgorWz09PT09
PT09PT1dIDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZSByYW4uCitbICBQQVNTRUQgIF0gMiB0ZXN0
cy4KKworVGhlIERlYnVnZ2VyIGhhcyBleGl0ZWQgd2l0aCBzdGF0dXMgMC4gIAorYGBgCisKKyMg
U3VtbWFyeSAjCisKK1VuaXQgdGVzdGluZyBpcyBhIHZhbHVhYmxlIHdheSB0byBlbnN1cmUgeW91
ciBkYXRhIG1vZGVsIHN0YXlzIHZhbGlkIGV2ZW4gZHVyaW5nIHJhcGlkIGRldmVsb3BtZW50IG9y
IHJlZmFjdG9yaW5nLiBUaGUgR29vZ2xlIFRlc3RpbmcgRnJhbWV3b3JrIGlzIGEgZ3JlYXQgdW5p
dCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBhbmQgQysrIHdoaWNoIGludGVncmF0ZXMgd2VsbCB3
aXRoIGFuIFhjb2RlIGRldmVsb3BtZW50IGVudmlyb25tZW50LgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgKaW5kZXggMTIxZGMxZmI1YWM1ZDU5YTMzZDUzMDM0MDU4
ZWVlOTFjMjEyYTIwOC4uOTU3YTY5YzZhOWU3YmVkN2Q1N2ViZDc4NzJmYjA0N2Y5NzE3NWZjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1k
ZWF0aC10ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9n
dGVzdC1kZWF0aC10ZXN0LmgKQEAgLTM4LDcgKzM4LDcgQEAKICNpZm5kZWYgR1RFU1RfSU5DTFVE
RV9HVEVTVF9HVEVTVF9ERUFUSF9URVNUX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1Rf
R1RFU1RfREVBVEhfVEVTVF9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZGVh
dGgtdGVzdC1pbnRlcm5hbC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRo
LXRlc3QtaW50ZXJuYWwuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC01MSw2ICs1MSwx
NyBAQCBHVEVTVF9ERUNMQVJFX3N0cmluZ18oZGVhdGhfdGVzdF9zdHlsZSk7CiAKICNpZiBHVEVT
VF9IQVNfREVBVEhfVEVTVAogCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBSZXR1cm5zIGEg
Qm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNhbGxlciBpcyBjdXJyZW50bHkK
Ky8vIGV4ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiB0aGUgZGVhdGggdGVzdCBjaGlsZCBwcm9j
ZXNzLiAgVG9vbHMgc3VjaCBhcworLy8gVmFsZ3JpbmQgaGVhcCBjaGVja2VycyBtYXkgbmVlZCB0
aGlzIHRvIG1vZGlmeSB0aGVpciBiZWhhdmlvciBpbiBkZWF0aAorLy8gdGVzdHMuICBJTVBPUlRB
TlQ6IFRoaXMgaXMgYW4gaW50ZXJuYWwgdXRpbGl0eS4gIFVzaW5nIGl0IG1heSBicmVhayB0aGUK
Ky8vIGltcGxlbWVudGF0aW9uIG9mIGRlYXRoIHRlc3RzLiAgVXNlciBjb2RlIE1VU1QgTk9UIHVz
ZSBpdC4KK0dURVNUX0FQSV8gYm9vbCBJbkRlYXRoVGVzdENoaWxkKCk7CisKK30gIC8vIG5hbWVz
cGFjZSBpbnRlcm5hbAorCiAvLyBUaGUgZm9sbG93aW5nIG1hY3JvcyBhcmUgdXNlZnVsIGZvciB3
cml0aW5nIGRlYXRoIHRlc3RzLgogCiAvLyBIZXJlJ3Mgd2hhdCBoYXBwZW5zIHdoZW4gYW4gQVNT
RVJUX0RFQVRIKiBvciBFWFBFQ1RfREVBVEgqIGlzCkBAIC03NSw3ICs4Niw3IEBAIEdURVNUX0RF
Q0xBUkVfc3RyaW5nXyhkZWF0aF90ZXN0X3N0eWxlKTsKIC8vICAgZm9yIChpbnQgaSA9IDA7IGkg
PCA1OyBpKyspIHsKIC8vICAgICBFWFBFQ1RfREVBVEgoc2VydmVyLlByb2Nlc3NSZXF1ZXN0KGkp
LAogLy8gICAgICAgICAgICAgICAgICAiSW52YWxpZCByZXF1ZXN0IC4qIGluIFByb2Nlc3NSZXF1
ZXN0KCkiKQotLy8gICAgICAgICA8PCAiRmFpbGVkIHRvIGRpZSBvbiByZXF1ZXN0ICIgPDwgaSk7
CisvLyAgICAgICAgICAgICAgICAgIDw8ICJGYWlsZWQgdG8gZGllIG9uIHJlcXVlc3QgIiA8PCBp
OwogLy8gICB9CiAvLwogLy8gICBBU1NFUlRfRVhJVChzZXJ2ZXIuRXhpdE5vdygpLCA6OnRlc3Rp
bmc6OkV4aXRlZFdpdGhDb2RlKDApLCAiRXhpdGluZyIpOwpAQCAtMTU0LDI0ICsxNjUsMjQgQEAg
R1RFU1RfREVDTEFSRV9zdHJpbmdfKGRlYXRoX3Rlc3Rfc3R5bGUpOwogLy8gQXNzZXJ0cyB0aGF0
IGEgZ2l2ZW4gc3RhdGVtZW50IGNhdXNlcyB0aGUgcHJvZ3JhbSB0byBleGl0LCB3aXRoIGFuCiAv
LyBpbnRlZ2VyIGV4aXQgc3RhdHVzIHRoYXQgc2F0aXNmaWVzIHByZWRpY2F0ZSwgYW5kIGVtaXR0
aW5nIGVycm9yIG91dHB1dAogLy8gdGhhdCBtYXRjaGVzIHJlZ2V4LgotI2RlZmluZSBBU1NFUlRf
RVhJVChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpIFwKLSAgR1RFU1RfREVBVEhfVEVTVF8o
c3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4LCBHVEVTVF9GQVRBTF9GQUlMVVJFXykKKyMgZGVm
aW5lIEFTU0VSVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCkgXAorICAgIEdURVNU
X0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgR1RFU1RfRkFUQUxfRkFJ
TFVSRV8pCiAKIC8vIExpa2UgQVNTRVJUX0VYSVQsIGJ1dCBjb250aW51ZXMgb24gdG8gc3VjY2Vz
c2l2ZSB0ZXN0cyBpbiB0aGUKIC8vIHRlc3QgY2FzZSwgaWYgYW55OgotI2RlZmluZSBFWFBFQ1Rf
RVhJVChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpIFwKLSAgR1RFU1RfREVBVEhfVEVTVF8o
c3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4LCBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXykKKyMg
ZGVmaW5lIEVYUEVDVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCkgXAorICAgIEdU
RVNUX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgR1RFU1RfTk9ORkFU
QUxfRkFJTFVSRV8pCiAKIC8vIEFzc2VydHMgdGhhdCBhIGdpdmVuIHN0YXRlbWVudCBjYXVzZXMg
dGhlIHByb2dyYW0gdG8gZXhpdCwgZWl0aGVyIGJ5CiAvLyBleHBsaWNpdGx5IGV4aXRpbmcgd2l0
aCBhIG5vbnplcm8gZXhpdCBjb2RlIG9yIGJlaW5nIGtpbGxlZCBieSBhCiAvLyBzaWduYWwsIGFu
ZCBlbWl0dGluZyBlcnJvciBvdXRwdXQgdGhhdCBtYXRjaGVzIHJlZ2V4LgotI2RlZmluZSBBU1NF
UlRfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAotICBBU1NFUlRfRVhJVChzdGF0ZW1lbnQsIDo6
dGVzdGluZzo6aW50ZXJuYWw6OkV4aXRlZFVuc3VjY2Vzc2Z1bGx5LCByZWdleCkKKyMgZGVmaW5l
IEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgICAgQVNTRVJUX0VYSVQoc3RhdGVt
ZW50LCA6OnRlc3Rpbmc6OmludGVybmFsOjpFeGl0ZWRVbnN1Y2Nlc3NmdWxseSwgcmVnZXgpCiAK
IC8vIExpa2UgQVNTRVJUX0RFQVRILCBidXQgY29udGludWVzIG9uIHRvIHN1Y2Nlc3NpdmUgdGVz
dHMgaW4gdGhlCiAvLyB0ZXN0IGNhc2UsIGlmIGFueToKLSNkZWZpbmUgRVhQRUNUX0RFQVRIKHN0
YXRlbWVudCwgcmVnZXgpIFwKLSAgRVhQRUNUX0VYSVQoc3RhdGVtZW50LCA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpFeGl0ZWRVbnN1Y2Nlc3NmdWxseSwgcmVnZXgpCisjIGRlZmluZSBFWFBFQ1RfREVB
VEgoc3RhdGVtZW50LCByZWdleCkgXAorICAgIEVYUEVDVF9FWElUKHN0YXRlbWVudCwgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6RXhpdGVkVW5zdWNjZXNzZnVsbHksIHJlZ2V4KQogCiAvLyBUd28gcHJl
ZGljYXRlIGNsYXNzZXMgdGhhdCBjYW4gYmUgdXNlZCBpbiB7QVNTRVJULEVYUEVDVH1fRVhJVCo6
CiAKQEAgLTE4Nyw3ICsxOTgsNyBAQCBjbGFzcyBHVEVTVF9BUElfIEV4aXRlZFdpdGhDb2RlIHsK
ICAgY29uc3QgaW50IGV4aXRfY29kZV87CiB9OwogCi0jaWYgIUdURVNUX09TX1dJTkRPV1MKKyMg
aWYgIUdURVNUX09TX1dJTkRPV1MKIC8vIFRlc3RzIHRoYXQgYW4gZXhpdCBjb2RlIGRlc2NyaWJl
cyBhbiBleGl0IGR1ZSB0byB0ZXJtaW5hdGlvbiBieSBhCiAvLyBnaXZlbiBzaWduYWwuCiBjbGFz
cyBHVEVTVF9BUElfIEtpbGxlZEJ5U2lnbmFsIHsKQEAgLTE5Nyw3ICsyMDgsNyBAQCBjbGFzcyBH
VEVTVF9BUElfIEtpbGxlZEJ5U2lnbmFsIHsKICBwcml2YXRlOgogICBjb25zdCBpbnQgc2lnbnVt
XzsKIH07Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyAhR1RFU1Rf
T1NfV0lORE9XUwogCiAvLyBFWFBFQ1RfREVCVUdfREVBVEggYXNzZXJ0cyB0aGF0IHRoZSBnaXZl
biBzdGF0ZW1lbnRzIGRpZSBpbiBkZWJ1ZyBtb2RlLgogLy8gVGhlIGRlYXRoIHRlc3RpbmcgZnJh
bWV3b3JrIGNhdXNlcyB0aGlzIHRvIGhhdmUgaW50ZXJlc3Rpbmcgc2VtYW50aWNzLApAQCAtMjQy
LDIzICsyNTMsMjMgQEAgY2xhc3MgR1RFU1RfQVBJXyBLaWxsZWRCeVNpZ25hbCB7CiAvLyAgIEVY
UEVDVF9FUSgxMiwgRGllSW5EZWJ1Z09yMTIoJnNpZGVlZmZlY3QpKTsKIC8vIH0sICJkZWF0aCIp
OwogLy8KLSNpZmRlZiBOREVCVUcKKyMgaWZkZWYgTkRFQlVHCiAKLSNkZWZpbmUgRVhQRUNUX0RF
QlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKLSAgZG8geyBzdGF0ZW1lbnQ7IH0gd2hpbGUg
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCisjICBkZWZpbmUgRVhQRUNUX0RF
QlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKKyAgR1RFU1RfRVhFQ1VURV9TVEFURU1FTlRf
KHN0YXRlbWVudCwgcmVnZXgpCiAKLSNkZWZpbmUgQVNTRVJUX0RFQlVHX0RFQVRIKHN0YXRlbWVu
dCwgcmVnZXgpIFwKLSAgZG8geyBzdGF0ZW1lbnQ7IH0gd2hpbGUgKDo6dGVzdGluZzo6aW50ZXJu
YWw6OkFsd2F5c0ZhbHNlKCkpCisjICBkZWZpbmUgQVNTRVJUX0RFQlVHX0RFQVRIKHN0YXRlbWVu
dCwgcmVnZXgpIFwKKyAgR1RFU1RfRVhFQ1VURV9TVEFURU1FTlRfKHN0YXRlbWVudCwgcmVnZXgp
CiAKLSNlbHNlCisjIGVsc2UKIAotI2RlZmluZSBFWFBFQ1RfREVCVUdfREVBVEgoc3RhdGVtZW50
LCByZWdleCkgXAorIyAgZGVmaW5lIEVYUEVDVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4
KSBcCiAgIEVYUEVDVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KQogCi0jZGVmaW5lIEFTU0VSVF9E
RUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisjICBkZWZpbmUgQVNTRVJUX0RFQlVHX0RF
QVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKICAgQVNTRVJUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgp
CiAKLSNlbmRpZiAgLy8gTkRFQlVHIGZvciBFWFBFQ1RfREVCVUdfREVBVEgKKyMgZW5kaWYgIC8v
IE5ERUJVRyBmb3IgRVhQRUNUX0RFQlVHX0RFQVRICiAjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFU
SF9URVNUCiAKIC8vIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkg
YW5kCkBAIC0yNjcsMTQgKzI3OCwxNCBAQCBjbGFzcyBHVEVTVF9BUElfIEtpbGxlZEJ5U2lnbmFs
IHsKIC8vIHVzZWZ1bCB3aGVuIHlvdSBhcmUgY29tYmluaW5nIGRlYXRoIHRlc3QgYXNzZXJ0aW9u
cyB3aXRoIG5vcm1hbCB0ZXN0CiAvLyBhc3NlcnRpb25zIGluIG9uZSB0ZXN0LgogI2lmIEdURVNU
X0hBU19ERUFUSF9URVNUCi0jZGVmaW5lIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVt
ZW50LCByZWdleCkgXAorIyBkZWZpbmUgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1l
bnQsIHJlZ2V4KSBcCiAgICAgRVhQRUNUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpCi0jZGVmaW5l
IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAorIyBkZWZpbmUg
QVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCiAgICAgQVNTRVJU
X0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpCiAjZWxzZQotI2RlZmluZSBFWFBFQ1RfREVBVEhfSUZf
U1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKKyMgZGVmaW5lIEVYUEVDVF9ERUFUSF9JRl9T
VVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAogICAgIEdURVNUX1VOU1VQUE9SVEVEX0RFQVRI
X1RFU1RfKHN0YXRlbWVudCwgcmVnZXgsICkKLSNkZWZpbmUgQVNTRVJUX0RFQVRIX0lGX1NVUFBP
UlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisjIGRlZmluZSBBU1NFUlRfREVBVEhfSUZfU1VQUE9S
VEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKICAgICBHVEVTVF9VTlNVUFBPUlRFRF9ERUFUSF9URVNU
XyhzdGF0ZW1lbnQsIHJlZ2V4LCByZXR1cm4pCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaAppbmRleCBmMTM1
YjY5NDI3ZmU5ZWJlMjM3YzRjZGE3YTljMmYwZDc4ZGQ3NjhlLi5mZTg3OWJjYTc5MjdhZmFlMjQ5
OWE2MTM3YWIyNmY0OTkxZmJiYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaApAQCAtNDgsOCArNDgsMTEgQEAKIAog
I2luY2x1ZGUgPGxpbWl0cz4KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmlu
Zy5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg+CisjaW5jbHVk
ZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorCisvLyBFbnN1cmVzIHRoYXQgdGhlcmUg
aXMgYXQgbGVhc3Qgb25lIG9wZXJhdG9yPDwgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisvLyBT
ZWUgTWVzc2FnZSYgb3BlcmF0b3I8PCguLi4pIGJlbG93IGZvciB3aHkuCit2b2lkIG9wZXJhdG9y
PDwoY29uc3QgdGVzdGluZzo6aW50ZXJuYWw6OlNlY3JldCYsIGludCk7CiAKIG5hbWVzcGFjZSB0
ZXN0aW5nIHsKIApAQCAtNTgsNyArNjEsNyBAQCBuYW1lc3BhY2UgdGVzdGluZyB7CiAvLyBUeXBp
Y2FsIHVzYWdlOgogLy8KIC8vICAgMS4gWW91IHN0cmVhbSBhIGJ1bmNoIG9mIHZhbHVlcyB0byBh
IE1lc3NhZ2Ugb2JqZWN0LgotLy8gICAgICBJdCB3aWxsIHJlbWVtYmVyIHRoZSB0ZXh0IGluIGEg
U3RyU3RyZWFtLgorLy8gICAgICBJdCB3aWxsIHJlbWVtYmVyIHRoZSB0ZXh0IGluIGEgc3RyaW5n
c3RyZWFtLgogLy8gICAyLiBUaGVuIHlvdSBzdHJlYW0gdGhlIE1lc3NhZ2Ugb2JqZWN0IHRvIGFu
IG9zdHJlYW0uCiAvLyAgICAgIFRoaXMgY2F1c2VzIHRoZSB0ZXh0IGluIHRoZSBNZXNzYWdlIHRv
IGJlIHN0cmVhbWVkCiAvLyAgICAgIHRvIHRoZSBvc3RyZWFtLgpAQCAtNzQsNyArNzcsNyBAQCBu
YW1lc3BhY2UgdGVzdGluZyB7CiAvLyBNZXNzYWdlIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBpbmhl
cml0ZWQgZnJvbS4gIEluIHBhcnRpY3VsYXIsIGl0cwogLy8gZGVzdHJ1Y3RvciBpcyBub3Qgdmly
dHVhbC4KIC8vCi0vLyBOb3RlIHRoYXQgU3RyU3RyZWFtIGJlaGF2ZXMgZGlmZmVyZW50bHkgaW4g
Z2NjIGFuZCBpbiBNU1ZDLiAgWW91CisvLyBOb3RlIHRoYXQgc3RyaW5nc3RyZWFtIGJlaGF2ZXMg
ZGlmZmVyZW50bHkgaW4gZ2NjIGFuZCBpbiBNU1ZDLiAgWW91CiAvLyBjYW4gc3RyZWFtIGEgTlVM
TCBjaGFyIHBvaW50ZXIgdG8gaXQgaW4gdGhlIGZvcm1lciwgYnV0IG5vdCBpbiB0aGUKIC8vIGxh
dHRlciAoaXQgY2F1c2VzIGFuIGFjY2VzcyB2aW9sYXRpb24gaWYgeW91IGRvKS4gIFRoZSBNZXNz
YWdlCiAvLyBjbGFzcyBoaWRlcyB0aGlzIGRpZmZlcmVuY2UgYnkgdHJlYXRpbmcgYSBOVUxMIGNo
YXIgcG9pbnRlciBhcwpAQCAtODcsMjcgKzkwLDE4IEBAIGNsYXNzIEdURVNUX0FQSV8gTWVzc2Fn
ZSB7CiAKICBwdWJsaWM6CiAgIC8vIENvbnN0cnVjdHMgYW4gZW1wdHkgTWVzc2FnZS4KLSAgLy8g
V2UgYWxsb2NhdGUgdGhlIFN0clN0cmVhbSBzZXBhcmF0ZWx5IGJlY2F1c2UgaXQgb3RoZXJ3aXNl
IGVhY2ggdXNlIG9mCi0gIC8vIEFTU0VSVC9FWFBFQ1QgaW4gYSBwcm9jZWR1cmUgYWRkcyBvdmVy
IDIwMCBieXRlcyB0byB0aGUgcHJvY2VkdXJlJ3MKLSAgLy8gc3RhY2sgZnJhbWUgbGVhZGluZyB0
byBodWdlIHN0YWNrIGZyYW1lcyBpbiBzb21lIGNhc2VzOyBnY2MgZG9lcyBub3QgcmV1c2UKLSAg
Ly8gdGhlIHN0YWNrIHNwYWNlLgotICBNZXNzYWdlKCkgOiBzc18obmV3IGludGVybmFsOjpTdHJT
dHJlYW0pIHsKLSAgICAvLyBCeSBkZWZhdWx0LCB3ZSB3YW50IHRoZXJlIHRvIGJlIGVub3VnaCBw
cmVjaXNpb24gd2hlbiBwcmludGluZwotICAgIC8vIGEgZG91YmxlIHRvIGEgTWVzc2FnZS4KLSAg
ICAqc3NfIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
ZGlnaXRzMTAgKyAyKTsKLSAgfQorICBNZXNzYWdlKCk7CiAKICAgLy8gQ29weSBjb25zdHJ1Y3Rv
ci4KLSAgTWVzc2FnZShjb25zdCBNZXNzYWdlJiBtc2cpIDogc3NfKG5ldyBpbnRlcm5hbDo6U3Ry
U3RyZWFtKSB7ICAvLyBOT0xJTlQKKyAgTWVzc2FnZShjb25zdCBNZXNzYWdlJiBtc2cpIDogc3Nf
KG5ldyA6OnN0ZDo6c3RyaW5nc3RyZWFtKSB7ICAvLyBOT0xJTlQKICAgICAqc3NfIDw8IG1zZy5H
ZXRTdHJpbmcoKTsKICAgfQogCiAgIC8vIENvbnN0cnVjdHMgYSBNZXNzYWdlIGZyb20gYSBDLXN0
cmluZy4KLSAgZXhwbGljaXQgTWVzc2FnZShjb25zdCBjaGFyKiBzdHIpIDogc3NfKG5ldyBpbnRl
cm5hbDo6U3RyU3RyZWFtKSB7CisgIGV4cGxpY2l0IE1lc3NhZ2UoY29uc3QgY2hhciogc3RyKSA6
IHNzXyhuZXcgOjpzdGQ6OnN0cmluZ3N0cmVhbSkgewogICAgICpzc18gPDwgc3RyOwogICB9CiAK
LSAgfk1lc3NhZ2UoKSB7IGRlbGV0ZSBzc187IH0KICNpZiBHVEVTVF9PU19TWU1CSUFOCiAgIC8v
IFN0cmVhbXMgYSB2YWx1ZSAoZWl0aGVyIGEgcG9pbnRlciBvciBub3QpIHRvIHRoaXMgb2JqZWN0
LgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTExOSw3ICsxMTMsMjIgQEAgY2xhc3MgR1RF
U1RfQVBJXyBNZXNzYWdlIHsKICAgLy8gU3RyZWFtcyBhIG5vbi1wb2ludGVyIHZhbHVlIHRvIHRo
aXMgb2JqZWN0LgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgaW5saW5lIE1lc3NhZ2UmIG9w
ZXJhdG9yIDw8KGNvbnN0IFQmIHZhbCkgewotICAgIDo6R1Rlc3RTdHJlYW1Ub0hlbHBlcihzc18s
IHZhbCk7CisgICAgLy8gU29tZSBsaWJyYXJpZXMgb3ZlcmxvYWQgPDwgZm9yIFNUTCBjb250YWlu
ZXJzLiAgVGhlc2UKKyAgICAvLyBvdmVybG9hZHMgYXJlIGRlZmluZWQgaW4gdGhlIGdsb2JhbCBu
YW1lc3BhY2UgaW5zdGVhZCBvZiA6OnN0ZC4KKyAgICAvLworICAgIC8vIEMrKydzIHN5bWJvbCBs
b29rdXAgcnVsZSAoaS5lLiBLb2VuaWcgbG9va3VwKSBzYXlzIHRoYXQgdGhlc2UKKyAgICAvLyBv
dmVybG9hZHMgYXJlIHZpc2libGUgaW4gZWl0aGVyIHRoZSBzdGQgbmFtZXNwYWNlIG9yIHRoZSBn
bG9iYWwKKyAgICAvLyBuYW1lc3BhY2UsIGJ1dCBub3Qgb3RoZXIgbmFtZXNwYWNlcywgaW5jbHVk
aW5nIHRoZSB0ZXN0aW5nCisgICAgLy8gbmFtZXNwYWNlIHdoaWNoIEdvb2dsZSBUZXN0J3MgTWVz
c2FnZSBjbGFzcyBpcyBpbi4KKyAgICAvLworICAgIC8vIFRvIGFsbG93IFNUTCBjb250YWluZXJz
IChhbmQgb3RoZXIgdHlwZXMgdGhhdCBoYXMgYSA8PCBvcGVyYXRvcgorICAgIC8vIGRlZmluZWQg
aW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UpIHRvIGJlIHVzZWQgaW4gR29vZ2xlIFRlc3QKKyAgICAv
LyBhc3NlcnRpb25zLCB0ZXN0aW5nOjpNZXNzYWdlIG11c3QgYWNjZXNzIHRoZSBjdXN0b20gPDwg
b3BlcmF0b3IKKyAgICAvLyBmcm9tIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAgV2l0aCB0aGlzIHVz
aW5nIGRlY2xhcmF0aW9uLAorICAgIC8vIG92ZXJsb2FkcyBvZiA8PCBkZWZpbmVkIGluIHRoZSBn
bG9iYWwgbmFtZXNwYWNlIGFuZCB0aG9zZQorICAgIC8vIHZpc2libGUgdmlhIEtvZW5pZyBsb29r
dXAgYXJlIGJvdGggZXhwb3NlZCBpbiB0aGlzIGZ1bmN0aW9uLgorICAgIHVzaW5nIDo6b3BlcmF0
b3IgPDw7CisgICAgKnNzXyA8PCB2YWw7CiAgICAgcmV0dXJuICp0aGlzOwogICB9CiAKQEAgLTE0
MSw3ICsxNTAsNyBAQCBjbGFzcyBHVEVTVF9BUElfIE1lc3NhZ2UgewogICAgIGlmIChwb2ludGVy
ID09IE5VTEwpIHsKICAgICAgICpzc18gPDwgIihudWxsKSI7CiAgICAgfSBlbHNlIHsKLSAgICAg
IDo6R1Rlc3RTdHJlYW1Ub0hlbHBlcihzc18sIHBvaW50ZXIpOworICAgICAgKnNzXyA8PCBwb2lu
dGVyOwogICAgIH0KICAgICByZXR1cm4gKnRoaXM7CiAgIH0KQEAgLTE2NSwxMiArMTc0LDggQEAg
Y2xhc3MgR1RFU1RfQVBJXyBNZXNzYWdlIHsKIAogICAvLyBUaGVzZSB0d28gb3ZlcmxvYWRzIGFs
bG93IHN0cmVhbWluZyBhIHdpZGUgQyBzdHJpbmcgdG8gYSBNZXNzYWdlCiAgIC8vIHVzaW5nIHRo
ZSBVVEYtOCBlbmNvZGluZy4KLSAgTWVzc2FnZSYgb3BlcmF0b3IgPDwoY29uc3Qgd2NoYXJfdCog
d2lkZV9jX3N0cikgewotICAgIHJldHVybiAqdGhpcyA8PCBpbnRlcm5hbDo6U3RyaW5nOjpTaG93
V2lkZUNTdHJpbmcod2lkZV9jX3N0cik7Ci0gIH0KLSAgTWVzc2FnZSYgb3BlcmF0b3IgPDwod2No
YXJfdCogd2lkZV9jX3N0cikgewotICAgIHJldHVybiAqdGhpcyA8PCBpbnRlcm5hbDo6U3RyaW5n
OjpTaG93V2lkZUNTdHJpbmcod2lkZV9jX3N0cik7Ci0gIH0KKyAgTWVzc2FnZSYgb3BlcmF0b3Ig
PDwoY29uc3Qgd2NoYXJfdCogd2lkZV9jX3N0cik7CisgIE1lc3NhZ2UmIG9wZXJhdG9yIDw8KHdj
aGFyX3QqIHdpZGVfY19zdHIpOwogCiAjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCiAgIC8vIENv
bnZlcnRzIHRoZSBnaXZlbiB3aWRlIHN0cmluZyB0byBhIG5hcnJvdyBzdHJpbmcgdXNpbmcgdGhl
IFVURi04CkBAIC0xODQsMzYgKzE4OSwzOSBAQCBjbGFzcyBHVEVTVF9BUElfIE1lc3NhZ2Ugewog
ICBNZXNzYWdlJiBvcGVyYXRvciA8PChjb25zdCA6OndzdHJpbmcmIHdzdHIpOwogI2VuZGlmICAv
LyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKIAotICAvLyBHZXRzIHRoZSB0ZXh0IHN0cmVhbWVk
IHRvIHRoaXMgb2JqZWN0IHNvIGZhciBhcyBhIFN0cmluZy4KKyAgLy8gR2V0cyB0aGUgdGV4dCBz
dHJlYW1lZCB0byB0aGlzIG9iamVjdCBzbyBmYXIgYXMgYW4gc3RkOjpzdHJpbmcuCiAgIC8vIEVh
Y2ggJ1wwJyBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlciBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgog
ICAvLwogICAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VS
IFBST0dSQU0uCi0gIGludGVybmFsOjpTdHJpbmcgR2V0U3RyaW5nKCkgY29uc3QgewotICAgIHJl
dHVybiBpbnRlcm5hbDo6U3RyU3RyZWFtVG9TdHJpbmcoc3NfKTsKLSAgfQorICBzdGQ6OnN0cmlu
ZyBHZXRTdHJpbmcoKSBjb25zdDsKIAogIHByaXZhdGU6CisKICNpZiBHVEVTVF9PU19TWU1CSUFO
CiAgIC8vIFRoZXNlIGFyZSBuZWVkZWQgYXMgdGhlIE5va2lhIFN5bWJpYW4gQ29tcGlsZXIgY2Fu
bm90IGRlY2lkZSBiZXR3ZWVuCiAgIC8vIGNvbnN0IFQmIGFuZCBjb25zdCBUKiBpbiBhIGZ1bmN0
aW9uIHRlbXBsYXRlLiBUaGUgTm9raWEgY29tcGlsZXIgX2Nhbl8KICAgLy8gZGVjaWRlIGJldHdl
ZW4gY2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIGZvciBUIGFuZCBUKiwgc28gYQogICAv
LyB0cjE6OnR5cGVfdHJhaXRzLWxpa2UgaXNfcG9pbnRlciB3b3JrcywgYW5kIHdlIGNhbiBvdmVy
bG9hZCBvbiB0aGF0LgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgaW5saW5lIHZvaWQgU3Ry
ZWFtSGVscGVyKGludGVybmFsOjp0cnVlX3R5cGUgLypkdW1teSovLCBUKiBwb2ludGVyKSB7Cisg
IGlubGluZSB2b2lkIFN0cmVhbUhlbHBlcihpbnRlcm5hbDo6dHJ1ZV90eXBlIC8qaXNfcG9pbnRl
ciovLCBUKiBwb2ludGVyKSB7CiAgICAgaWYgKHBvaW50ZXIgPT0gTlVMTCkgewogICAgICAgKnNz
XyA8PCAiKG51bGwpIjsKICAgICB9IGVsc2UgewotICAgICAgOjpHVGVzdFN0cmVhbVRvSGVscGVy
KHNzXywgcG9pbnRlcik7CisgICAgICAqc3NfIDw8IHBvaW50ZXI7CiAgICAgfQogICB9CiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotICBpbmxpbmUgdm9pZCBTdHJlYW1IZWxwZXIoaW50ZXJuYWw6
OmZhbHNlX3R5cGUgLypkdW1teSovLCBjb25zdCBUJiB2YWx1ZSkgewotICAgIDo6R1Rlc3RTdHJl
YW1Ub0hlbHBlcihzc18sIHZhbHVlKTsKKyAgaW5saW5lIHZvaWQgU3RyZWFtSGVscGVyKGludGVy
bmFsOjpmYWxzZV90eXBlIC8qaXNfcG9pbnRlciovLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVCYgdmFsdWUpIHsKKyAgICAvLyBTZWUgdGhlIGNvbW1lbnRzIGluIE1lc3NhZ2Um
IG9wZXJhdG9yIDw8KGNvbnN0IFQmKSBhYm92ZSBmb3Igd2h5CisgICAgLy8gd2UgbmVlZCB0aGlz
IHVzaW5nIHN0YXRlbWVudC4KKyAgICB1c2luZyA6Om9wZXJhdG9yIDw8OworICAgICpzc18gPDwg
dmFsdWU7CiAgIH0KICNlbmRpZiAgLy8gR1RFU1RfT1NfU1lNQklBTgogCiAgIC8vIFdlJ2xsIGhv
bGQgdGhlIHRleHQgc3RyZWFtZWQgdG8gdGhpcyBvYmplY3QgaGVyZS4KLSAgaW50ZXJuYWw6OlN0
clN0cmVhbSogY29uc3Qgc3NfOworICBjb25zdCBpbnRlcm5hbDo6c2NvcGVkX3B0cjwgOjpzdGQ6
OnN0cmluZ3N0cmVhbT4gc3NfOwogCiAgIC8vIFdlIGRlY2xhcmUgKGJ1dCBkb24ndCBpbXBsZW1l
bnQpIHRoaXMgdG8gcHJldmVudCB0aGUgY29tcGlsZXIKICAgLy8gZnJvbSBpbXBsZW1lbnRpbmcg
dGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCkBAIC0yMjUsNiArMjMzLDE4IEBAIGlubGluZSBzdGQ6
Om9zdHJlYW0mIG9wZXJhdG9yIDw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IE1lc3NhZ2UmIHNi
KSB7CiAgIHJldHVybiBvcyA8PCBzYi5HZXRTdHJpbmcoKTsKIH0KIAorbmFtZXNwYWNlIGludGVy
bmFsIHsKKworLy8gQ29udmVydHMgYSBzdHJlYW1hYmxlIHZhbHVlIHRvIGFuIHN0ZDo6c3RyaW5n
LiAgQSBOVUxMIHBvaW50ZXIgaXMKKy8vIGNvbnZlcnRlZCB0byAiKG51bGwpIi4gIFdoZW4gdGhl
IGlucHV0IHZhbHVlIGlzIGEgOjpzdHJpbmcsCisvLyA6OnN0ZDo6c3RyaW5nLCA6OndzdHJpbmcs
IG9yIDo6c3RkOjp3c3RyaW5nIG9iamVjdCwgZWFjaCBOVUwKKy8vIGNoYXJhY3RlciBpbiBpdCBp
cyByZXBsYWNlZCB3aXRoICJcXDAiLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGQ6OnN0cmlu
ZyBTdHJlYW1hYmxlVG9TdHJpbmcoY29uc3QgVCYgc3RyZWFtYWJsZSkgeworICByZXR1cm4gKE1l
c3NhZ2UoKSA8PCBzdHJlYW1hYmxlKS5HZXRTdHJpbmcoKTsKK30KKworfSAgLy8gbmFtZXNwYWNl
IGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCiAjZW5kaWYgIC8vIEdURVNUX0lO
Q0xVREVfR1RFU1RfR1RFU1RfTUVTU0FHRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaAppbmRleCA4MTAwNjk2
NDRkMjNhZDM1NTk3M2NiNTNmY2ViMGE4NTZiMGEwMDZjLi4wMzhmOWJhNzllYjMwMzc3ZjE2NWQ4
YTAyMDBkNDc1MGQzNDliOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9p
bmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaApAQCAtMSw0ICsxLDYgQEAKLS8v
IFRoaXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5IGEgc2NyaXB0LiAgRE8gTk9UIEVESVQgQlkgSEFO
RCEhIQorLy8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgY29tbWFuZDoKKy8vICAgICBwdW1w
LnB5IGd0ZXN0LXBhcmFtLXRlc3QuaC5wdW1wCisvLyBETyBOT1QgRURJVCBCWSBIQU5EISEhCiAK
IC8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgogLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
QEAgLTQ4LDEwICs1MCwxMiBAQAogI2lmIDAKIAogLy8gVG8gd3JpdGUgdmFsdWUtcGFyYW1ldGVy
aXplZCB0ZXN0cywgZmlyc3QgeW91IHNob3VsZCBkZWZpbmUgYSBmaXh0dXJlCi0vLyBjbGFzcy4g
SXQgbXVzdCBiZSBkZXJpdmVkIGZyb20gdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxUPiwgd2hlcmUg
VCBpcwotLy8gdGhlIHR5cGUgb2YgeW91ciBwYXJhbWV0ZXIgdmFsdWVzLiBUZXN0V2l0aFBhcmFt
PFQ+IGlzIGl0c2VsZiBkZXJpdmVkCi0vLyBmcm9tIHRlc3Rpbmc6OlRlc3QuIFQgY2FuIGJlIGFu
eSBjb3B5YWJsZSB0eXBlLiBJZiBpdCdzIGEgcmF3IHBvaW50ZXIsCi0vLyB5b3UgYXJlIHJlc3Bv
bnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgbGlmZXNwYW4gb2YgdGhlIHBvaW50ZWQgdmFsdWVzLgor
Ly8gY2xhc3MuIEl0IGlzIHVzdWFsbHkgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08VD4gKHNlZSBiZWxvdyBmb3IKKy8vIGFub3RoZXIgaW5oZXJpdGFuY2Ugc2NoZW1lIHRoYXQn
cyBzb21ldGltZXMgdXNlZnVsIGluIG1vcmUgY29tcGxpY2F0ZWQKKy8vIGNsYXNzIGhpZXJhcmNo
aWVzKSwgd2hlcmUgdGhlIHR5cGUgb2YgeW91ciBwYXJhbWV0ZXIgdmFsdWVzLgorLy8gVGVzdFdp
dGhQYXJhbTxUPiBpcyBpdHNlbGYgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3QuIFQgY2FuIGJl
IGFueQorLy8gY29weWFibGUgdHlwZS4gSWYgaXQncyBhIHJhdyBwb2ludGVyLCB5b3UgYXJlIHJl
c3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUKKy8vIGxpZmVzcGFuIG9mIHRoZSBwb2ludGVkIHZh
bHVlcy4KIAogY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08
Y29uc3QgY2hhcio+IHsKICAgLy8gWW91IGNhbiBpbXBsZW1lbnQgYWxsIHRoZSB1c3VhbCBjbGFz
cyBmaXh0dXJlIG1lbWJlcnMgaGVyZS4KQEAgLTE0NiwyMSArMTUwLDQ3IEBAIElOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwgVmFsdWVzSW4o
cGV0cykpOwogLy8gSW4gdGhlIGZ1dHVyZSwgd2UgcGxhbiB0byBwdWJsaXNoIHRoZSBBUEkgZm9y
IGRlZmluaW5nIG5ldyBwYXJhbWV0ZXIKIC8vIGdlbmVyYXRvcnMuIEJ1dCBmb3Igbm93IHRoaXMg
aW50ZXJmYWNlIHJlbWFpbnMgcGFydCBvZiB0aGUgaW50ZXJuYWwKIC8vIGltcGxlbWVudGF0aW9u
IGFuZCBpcyBzdWJqZWN0IHRvIGNoYW5nZS4KKy8vCisvLworLy8gQSBwYXJhbWV0ZXJpemVkIHRl
c3QgZml4dHVyZSBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0IGFuZCBmcm9tCisv
LyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD4sIHdoZXJlIFQgaXMgdGhlIHR5cGUgb2Yg
dGhlIHBhcmFtZXRlcgorLy8gdmFsdWVzLiBJbmhlcml0aW5nIGZyb20gVGVzdFdpdGhQYXJhbTxU
PiBzYXRpc2ZpZXMgdGhhdCByZXF1aXJlbWVudCBiZWNhdXNlCisvLyBUZXN0V2l0aFBhcmFtPFQ+
IGluaGVyaXRzIGZyb20gYm90aCBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UuIEluIG1vcmUK
Ky8vIGNvbXBsaWNhdGVkIGhpZXJhcmNoaWVzLCBob3dldmVyLCBpdCBpcyBvY2Nhc2lvbmFsbHkg
dXNlZnVsIHRvIGluaGVyaXQKKy8vIHNlcGFyYXRlbHkgZnJvbSBUZXN0IGFuZCBXaXRoUGFyYW1J
bnRlcmZhY2UuIEZvciBleGFtcGxlOgorCitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3QgeworICAvLyBZb3UgY2FuIGluaGVyaXQgYWxsIHRoZSB1c3VhbCBtZW1iZXJzIGZv
ciBhIG5vbi1wYXJhbWV0ZXJpemVkIHRlc3QKKyAgLy8gZml4dHVyZSBoZXJlLgorfTsKKworY2xh
c3MgRGVyaXZlZFRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQ
YXJhbUludGVyZmFjZTxpbnQ+IHsKKyAgLy8gVGhlIHVzdWFsIHRlc3QgZml4dHVyZSBtZW1iZXJz
IGdvIGhlcmUgdG9vLgorfTsKKworVEVTVF9GKEJhc2VUZXN0LCBIYXNGb28pIHsKKyAgLy8gVGhp
cyBpcyBhbiBvcmRpbmFyeSBub24tcGFyYW1ldGVyaXplZCB0ZXN0LgorfQorCitURVNUX1AoRGVy
aXZlZFRlc3QsIERvZXNCbGFoKSB7CisgIC8vIEdldFBhcmFtIHdvcmtzIGp1c3QgdGhlIHNhbWUg
aGVyZSBhcyBpZiB5b3UgaW5oZXJpdCBmcm9tIFRlc3RXaXRoUGFyYW0uCisgIEVYUEVDVF9UUlVF
KGZvby5CbGFoKEdldFBhcmFtKCkpKTsKK30KIAogI2VuZGlmICAvLyAwCiAKLSNpbmNsdWRlIDxn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oIgogCiAjaWYgIUdURVNUX09TX1NZTUJJQU4KLSNpbmNsdWRlIDx1dGlsaXR5Pgor
IyBpbmNsdWRlIDx1dGlsaXR5PgogI2VuZGlmCiAKIC8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBk
ZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKIC8vICp1bmNvbmRp
dGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKIC8v
IGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJh
bS11dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5l
cmF0ZWQuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaCIKKyNpbmNsdWRlICJndGVz
dC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIgogCiAjaWYgR1RFU1RfSEFT
X1BBUkFNX1RFU1QKIApAQCAtMjc2LDExICszMDYsMTAgQEAgaW50ZXJuYWw6OlBhcmFtR2VuZXJh
dG9yPFQ+IFJhbmdlKFQgc3RhcnQsIFQgZW5kKSB7CiAvLwogdGVtcGxhdGUgPHR5cGVuYW1lIEZv
cndhcmRJdGVyYXRvcj4KIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjwKLSAgICB0eXBlbmFtZSA6
OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+IFZhbHVl
c0luKAotICBGb3J3YXJkSXRlcmF0b3IgYmVnaW4sCi0gIEZvcndhcmRJdGVyYXRvciBlbmQpIHsK
LSAgdHlwZWRlZiB0eXBlbmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRv
cj46OnZhbHVlX3R5cGUKLSAgICAgIFBhcmFtVHlwZTsKKyAgdHlwZW5hbWUgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4KK1Zh
bHVlc0luKEZvcndhcmRJdGVyYXRvciBiZWdpbiwgRm9yd2FyZEl0ZXJhdG9yIGVuZCkgeworICB0
eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJhaXRzPEZvcndh
cmRJdGVyYXRvcj4KKyAgICAgIDo6dmFsdWVfdHlwZSBQYXJhbVR5cGU7CiAgIHJldHVybiBpbnRl
cm5hbDo6UGFyYW1HZW5lcmF0b3I8UGFyYW1UeXBlPigKICAgICAgIG5ldyBpbnRlcm5hbDo6VmFs
dWVzSW5JdGVyYXRvclJhbmdlR2VuZXJhdG9yPFBhcmFtVHlwZT4oYmVnaW4sIGVuZCkpOwogfQpA
QCAtMTE5Miw3ICsxMjIxLDcgQEAgaW5saW5lIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxib29s
PiBCb29sKCkgewogICByZXR1cm4gVmFsdWVzKGZhbHNlLCB0cnVlKTsKIH0KIAotI2lmIEdURVNU
X0hBU19DT01CSU5FCisjIGlmIEdURVNUX0hBU19DT01CSU5FCiAvLyBDb21iaW5lKCkgYWxsb3dz
IHRoZSB1c2VyIHRvIGNvbWJpbmUgdHdvIG9yIG1vcmUgc2VxdWVuY2VzIHRvIHByb2R1Y2UKIC8v
IHZhbHVlcyBvZiBhIENhcnRlc2lhbiBwcm9kdWN0IG9mIHRob3NlIHNlcXVlbmNlcycgZWxlbWVu
dHMuCiAvLwpAQCAtMTIyOCw3ICsxMjU3LDcgQEAgaW5saW5lIGludGVybmFsOjpQYXJhbUdlbmVy
YXRvcjxib29sPiBCb29sKCkgewogLy8gQm9vbGVhbiBmbGFnczoKIC8vCiAvLyBjbGFzcyBGbGFn
RGVwZW5kZW50VGVzdAotLy8gICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08dHVw
bGUoYm9vbCwgYm9vbCk+ID4geworLy8gICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08dHVwbGU8Ym9vbCwgYm9vbD4gPiB7CiAvLyAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKIC8v
ICAgICAvLyBBc3NpZ25zIGV4dGVybmFsX2ZsYWdfMSBhbmQgZXh0ZXJuYWxfZmxhZ18yIHZhbHVl
cyBmcm9tIHRoZSB0dXBsZS4KIC8vICAgICB0aWUoZXh0ZXJuYWxfZmxhZ18xLCBleHRlcm5hbF9m
bGFnXzIpID0gR2V0UGFyYW0oKTsKQEAgLTEzNDQsMTEgKzEzNzMsMTEgQEAgaW50ZXJuYWw6OkNh
cnRlc2lhblByb2R1Y3RIb2xkZXIxMDxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0b3Iz
LAogICAgICAgR2VuZXJhdG9yMTA+KAogICAgICAgZzEsIGcyLCBnMywgZzQsIGc1LCBnNiwgZzcs
IGc4LCBnOSwgZzEwKTsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKKyMgZW5kaWYg
IC8vIEdURVNUX0hBU19DT01CSU5FCiAKIAogCi0jZGVmaW5lIFRFU1RfUCh0ZXN0X2Nhc2VfbmFt
ZSwgdGVzdF9uYW1lKSBcCisjIGRlZmluZSBURVNUX1AodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFt
ZSkgXAogICBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0
X25hbWUpIFwKICAgICAgIDogcHVibGljIHRlc3RfY2FzZV9uYW1lIHsgXAogICAgcHVibGljOiBc
CkBAIC0xMzU4LDE0ICsxMzg3LDE3IEBAIGludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVy
MTA8R2VuZXJhdG9yMSwgR2VuZXJhdG9yMiwgR2VuZXJhdG9yMywKICAgICBzdGF0aWMgaW50IEFk
ZFRvUmVnaXN0cnkoKSB7IFwKICAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpLiBcCiAgICAgICAgICAgR2V0VGVzdENh
c2VQYXR0ZXJuSG9sZGVyPHRlc3RfY2FzZV9uYW1lPihcCi0gICAgICAgICAgICAgICN0ZXN0X2Nh
c2VfbmFtZSwgX19GSUxFX18sIF9fTElORV9fKS0+QWRkVGVzdFBhdHRlcm4oXAotICAgICAgICAg
ICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCi0gICAgICAgICAgICAgICAgICAjdGVzdF9uYW1l
LCBcCi0gICAgICAgICAgICAgICAgICBuZXcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdE1ldGFG
YWN0b3J5PCBcCi0gICAgICAgICAgICAgICAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0
ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKT4oKSk7IFwKKyAgICAgICAgICAgICAgI3Rlc3RfY2Fz
ZV9uYW1lLCBcCisgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlv
bihcCisgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pKS0+QWRkVGVzdFBhdHRl
cm4oXAorICAgICAgICAgICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgXAorICAgICAgICAg
ICAgICAgICAgICAgICN0ZXN0X25hbWUsIFwKKyAgICAgICAgICAgICAgICAgICAgICBuZXcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6VGVzdE1ldGFGYWN0b3J5PCBcCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8oXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSk+KCkpOyBcCiAgICAgICByZXR1cm4gMDsg
XAogICAgIH0gXAotICAgIHN0YXRpYyBpbnQgZ3Rlc3RfcmVnaXN0ZXJpbmdfZHVtbXlfOyBcCisg
ICAgc3RhdGljIGludCBndGVzdF9yZWdpc3RlcmluZ19kdW1teV8gR1RFU1RfQVRUUklCVVRFX1VO
VVNFRF87IFwKICAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFwKICAgICAgICAg
R1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSk7IFwKICAg
fTsgXApAQCAtMTM3NCwxNiArMTQwNiwzNiBAQCBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhv
bGRlcjEwPEdlbmVyYXRvcjEsIEdlbmVyYXRvcjIsIEdlbmVyYXRvcjMsCiAgICAgICBHVEVTVF9U
RVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpOjpBZGRUb1JlZ2lzdHJ5
KCk7IFwKICAgdm9pZCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0
X25hbWUpOjpUZXN0Qm9keSgpCiAKLSNkZWZpbmUgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AocHJl
Zml4LCB0ZXN0X2Nhc2VfbmFtZSwgZ2VuZXJhdG9yKSBcCisvLyBUaGUgb3B0aW9uYWwgbGFzdCBh
cmd1bWVudCB0byBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBhbGxvd3MgdGhlIHVzZXIKKy8vIHRv
IHNwZWNpZnkgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHRoYXQgZ2VuZXJhdGVzIGN1c3RvbSB0ZXN0
IG5hbWUgc3VmZml4ZXMKKy8vIGJhc2VkIG9uIHRoZSB0ZXN0IHBhcmFtZXRlcnMuIFRoZSBmdW5j
dGlvbiBzaG91bGQgYWNjZXB0IG9uZSBhcmd1bWVudCBvZgorLy8gdHlwZSB0ZXN0aW5nOjpUZXN0
UGFyYW1JbmZvPGNsYXNzIFBhcmFtVHlwZT4sIGFuZCByZXR1cm4gc3RkOjpzdHJpbmcuCisvLwor
Ly8gdGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSBpcyBhIGJ1aWx0aW4gdGVzdCBzdWZm
aXggZ2VuZXJhdG9yIHRoYXQKKy8vIHJldHVybnMgdGhlIHZhbHVlIG9mIHRlc3Rpbmc6OlByaW50
VG9TdHJpbmcoR2V0UGFyYW0oKSkuIEl0IGRvZXMgbm90IHdvcmsKKy8vIGZvciBzdGQ6OnN0cmlu
ZyBvciBDIHN0cmluZ3MuCisvLworLy8gTm90ZTogdGVzdCBuYW1lcyBtdXN0IGJlIG5vbi1lbXB0
eSwgdW5pcXVlLCBhbmQgbWF5IG9ubHkgY29udGFpbiBBU0NJSQorLy8gYWxwaGFudW1lcmljIGNo
YXJhY3RlcnMgb3IgdW5kZXJzY29yZS4KKworIyBkZWZpbmUgSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AocHJlZml4LCB0ZXN0X2Nhc2VfbmFtZSwgZ2VuZXJhdG9yLCAuLi4pIFwKICAgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlwZT4gXAog
ICAgICAgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRvcl8oKSB7
IHJldHVybiBnZW5lcmF0b3I7IH0gXAotICBpbnQgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9u
YW1lIyNfZHVtbXlfID0gXAorICA6OnN0ZDo6c3RyaW5nIGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nh
c2VfbmFtZSMjX0V2YWxHZW5lcmF0ZU5hbWVfKCBcCisgICAgICBjb25zdCA6OnRlc3Rpbmc6OlRl
c3RQYXJhbUluZm88dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlwZT4mIGluZm8pIHsgXAorICAgIHJl
dHVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpHZXRQYXJhbU5hbWVHZW48dGVzdF9jYXNlX25hbWU6
OlBhcmFtVHlwZT4gXAorICAgICAgICAoX19WQV9BUkdTX18pKGluZm8pOyBcCisgIH0gXAorICBp
bnQgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfZHVtbXlfIEdURVNUX0FUVFJJQlVU
RV9VTlVTRURfID0gXAogICAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+
cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkuIFwKICAgICAgICAgICBHZXRUZXN0Q2FzZVBh
dHRlcm5Ib2xkZXI8dGVzdF9jYXNlX25hbWU+KFwKLSAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9u
YW1lLCBfX0ZJTEVfXywgX19MSU5FX18pLT5BZGRUZXN0Q2FzZUluc3RhbnRpYXRpb24oXAotICAg
ICAgICAgICAgICAgICAgI3ByZWZpeCwgXAotICAgICAgICAgICAgICAgICAgJmd0ZXN0XyMjcHJl
Zml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0b3JfLCBcCi0gICAgICAgICAgICAgICAg
ICBfX0ZJTEVfXywgX19MSU5FX18pCisgICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgXAor
ICAgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpDb2RlTG9jYXRpb24oXAorICAgICAg
ICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKSktPkFkZFRlc3RDYXNlSW5zdGFudGlhdGlv
bihcCisgICAgICAgICAgICAgICAgICAgICAgI3ByZWZpeCwgXAorICAgICAgICAgICAgICAgICAg
ICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdG9yXywgXAor
ICAgICAgICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19F
dmFsR2VuZXJhdGVOYW1lXywgXAorICAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJ
TkVfXykKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1
bXAKaW5kZXggYTIzMTE4ODI3ZjFkNDgwZmJiYjgyNTJmMzQwZjBlYmVkYTM0NmUyNS4uMzA3OGQ2
ZDJhMTlkNzkxOGVkM2M3NTZhYmNmY2I0OTkzN2UxNmViMSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3Qu
aC5wdW1wCkBAIC00OSwxMCArNDksMTIgQEAgJHZhciBtYXh0dXBsZSA9IDEwICAkJCBNYXhpbXVt
IG51bWJlciBvZiBDb21iaW5lIGFyZ3VtZW50cyB3ZSB3YW50IHRvIHN1cHBvcnQuCiAjaWYgMAog
CiAvLyBUbyB3cml0ZSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLCBmaXJzdCB5b3Ugc2hvdWxk
IGRlZmluZSBhIGZpeHR1cmUKLS8vIGNsYXNzLiBJdCBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0
aW5nOjpUZXN0V2l0aFBhcmFtPFQ+LCB3aGVyZSBUIGlzCi0vLyB0aGUgdHlwZSBvZiB5b3VyIHBh
cmFtZXRlciB2YWx1ZXMuIFRlc3RXaXRoUGFyYW08VD4gaXMgaXRzZWxmIGRlcml2ZWQKLS8vIGZy
b20gdGVzdGluZzo6VGVzdC4gVCBjYW4gYmUgYW55IGNvcHlhYmxlIHR5cGUuIElmIGl0J3MgYSBy
YXcgcG9pbnRlciwKLS8vIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBsaWZl
c3BhbiBvZiB0aGUgcG9pbnRlZCB2YWx1ZXMuCisvLyBjbGFzcy4gSXQgaXMgdXN1YWxseSBkZXJp
dmVkIGZyb20gdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxUPiAoc2VlIGJlbG93IGZvcgorLy8gYW5v
dGhlciBpbmhlcml0YW5jZSBzY2hlbWUgdGhhdCdzIHNvbWV0aW1lcyB1c2VmdWwgaW4gbW9yZSBj
b21wbGljYXRlZAorLy8gY2xhc3MgaGllcmFyY2hpZXMpLCB3aGVyZSB0aGUgdHlwZSBvZiB5b3Vy
IHBhcmFtZXRlciB2YWx1ZXMuCisvLyBUZXN0V2l0aFBhcmFtPFQ+IGlzIGl0c2VsZiBkZXJpdmVk
IGZyb20gdGVzdGluZzo6VGVzdC4gVCBjYW4gYmUgYW55CisvLyBjb3B5YWJsZSB0eXBlLiBJZiBp
dCdzIGEgcmF3IHBvaW50ZXIsIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZQor
Ly8gbGlmZXNwYW4gb2YgdGhlIHBvaW50ZWQgdmFsdWVzLgogCiBjbGFzcyBGb29UZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBjaGFyKj4gewogICAvLyBZb3UgY2Fu
IGltcGxlbWVudCBhbGwgdGhlIHVzdWFsIGNsYXNzIGZpeHR1cmUgbWVtYmVycyBoZXJlLgpAQCAt
MTM0LDkgKzEzNiwxMiBAQCBJTlNUQU5USUFURV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFudGlh
dGlvbk5hbWUsIEZvb1Rlc3QsIFZhbHVlc0luKHBldHMpKTsKIC8vIGluIHRoZSBnaXZlbiB0ZXN0
IGNhc2UsIHdoZXRoZXIgdGhlaXIgZGVmaW5pdGlvbnMgY29tZSBiZWZvcmUgb3IKIC8vIEFGVEVS
IHRoZSBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBzdGF0ZW1lbnQuCiAvLwotLy8gUGxlYXNlIGFs
c28gbm90ZSB0aGF0IGdlbmVyYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIGluCi0vLyBS
VU5fQUxMX1RFU1RTKCksIGFmdGVyIG1haW4oKSBoYXMgc3RhcnRlZC4gVGhpcyBhbGxvd3MgZXZh
bHVhdGlvbiBvZgotLy8gcGFyYW1ldGVyIGxpc3QgYmFzZWQgb24gY29tbWFuZCBsaW5lIHBhcmFt
ZXRlcnMuCisvLyBQbGVhc2UgYWxzbyBub3RlIHRoYXQgZ2VuZXJhdG9yIGV4cHJlc3Npb25zIChp
bmNsdWRpbmcgcGFyYW1ldGVycyB0byB0aGUKKy8vIGdlbmVyYXRvcnMpIGFyZSBldmFsdWF0ZWQg
aW4gSW5pdEdvb2dsZVRlc3QoKSwgYWZ0ZXIgbWFpbigpIGhhcyBzdGFydGVkLgorLy8gVGhpcyBh
bGxvd3MgdGhlIHVzZXIgb24gb25lIGhhbmQsIHRvIGFkanVzdCBnZW5lcmF0b3IgcGFyYW1ldGVy
cyBpbiBvcmRlcgorLy8gdG8gZHluYW1pY2FsbHkgZGV0ZXJtaW5lIGEgc2V0IG9mIHRlc3RzIHRv
IHJ1biBhbmQgb24gdGhlIG90aGVyIGhhbmQsCisvLyBnaXZlIHRoZSB1c2VyIGEgY2hhbmNlIHRv
IGluc3BlY3QgdGhlIGdlbmVyYXRlZCB0ZXN0cyB3aXRoIEdvb2dsZSBUZXN0CisvLyByZWZsZWN0
aW9uIEFQSSBiZWZvcmUgUlVOX0FMTF9URVNUUygpIGlzIGV4ZWN1dGVkLgogLy8KIC8vIFlvdSBj
YW4gc2VlIHNhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYyBhbmQgc2FtcGxlcy9zYW1wbGU4X3Vu
aXR0ZXN0LmNjCiAvLyBmb3IgbW9yZSBleGFtcGxlcy4KQEAgLTE0NCwyMSArMTQ5LDQ3IEBAIElO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwg
VmFsdWVzSW4ocGV0cykpOwogLy8gSW4gdGhlIGZ1dHVyZSwgd2UgcGxhbiB0byBwdWJsaXNoIHRo
ZSBBUEkgZm9yIGRlZmluaW5nIG5ldyBwYXJhbWV0ZXIKIC8vIGdlbmVyYXRvcnMuIEJ1dCBmb3Ig
bm93IHRoaXMgaW50ZXJmYWNlIHJlbWFpbnMgcGFydCBvZiB0aGUgaW50ZXJuYWwKIC8vIGltcGxl
bWVudGF0aW9uIGFuZCBpcyBzdWJqZWN0IHRvIGNoYW5nZS4KKy8vCisvLworLy8gQSBwYXJhbWV0
ZXJpemVkIHRlc3QgZml4dHVyZSBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0IGFu
ZCBmcm9tCisvLyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD4sIHdoZXJlIFQgaXMgdGhl
IHR5cGUgb2YgdGhlIHBhcmFtZXRlcgorLy8gdmFsdWVzLiBJbmhlcml0aW5nIGZyb20gVGVzdFdp
dGhQYXJhbTxUPiBzYXRpc2ZpZXMgdGhhdCByZXF1aXJlbWVudCBiZWNhdXNlCisvLyBUZXN0V2l0
aFBhcmFtPFQ+IGluaGVyaXRzIGZyb20gYm90aCBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2Uu
IEluIG1vcmUKKy8vIGNvbXBsaWNhdGVkIGhpZXJhcmNoaWVzLCBob3dldmVyLCBpdCBpcyBvY2Nh
c2lvbmFsbHkgdXNlZnVsIHRvIGluaGVyaXQKKy8vIHNlcGFyYXRlbHkgZnJvbSBUZXN0IGFuZCBX
aXRoUGFyYW1JbnRlcmZhY2UuIEZvciBleGFtcGxlOgorCitjbGFzcyBCYXNlVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgeworICAvLyBZb3UgY2FuIGluaGVyaXQgYWxsIHRoZSB1c3VhbCBt
ZW1iZXJzIGZvciBhIG5vbi1wYXJhbWV0ZXJpemVkIHRlc3QKKyAgLy8gZml4dHVyZSBoZXJlLgor
fTsKKworY2xhc3MgRGVyaXZlZFRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsIHB1YmxpYyA6OnRlc3Rp
bmc6OldpdGhQYXJhbUludGVyZmFjZTxpbnQ+IHsKKyAgLy8gVGhlIHVzdWFsIHRlc3QgZml4dHVy
ZSBtZW1iZXJzIGdvIGhlcmUgdG9vLgorfTsKKworVEVTVF9GKEJhc2VUZXN0LCBIYXNGb28pIHsK
KyAgLy8gVGhpcyBpcyBhbiBvcmRpbmFyeSBub24tcGFyYW1ldGVyaXplZCB0ZXN0LgorfQorCitU
RVNUX1AoRGVyaXZlZFRlc3QsIERvZXNCbGFoKSB7CisgIC8vIEdldFBhcmFtIHdvcmtzIGp1c3Qg
dGhlIHNhbWUgaGVyZSBhcyBpZiB5b3UgaW5oZXJpdCBmcm9tIFRlc3RXaXRoUGFyYW0uCisgIEVY
UEVDVF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsKK30KIAogI2VuZGlmICAvLyAwCiAKLSNp
bmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAjaWYgIUdURVNUX09TX1NZTUJJQU4KLSNpbmNsdWRlIDx1
dGlsaXR5PgorIyBpbmNsdWRlIDx1dGlsaXR5PgogI2VuZGlmCiAKIC8vIHNjcmlwdHMvZnVzZV9n
dGVzdC5weSBkZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKIC8v
ICp1bmNvbmRpdGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUg
bW92ZWQKIC8vIGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9n
dGVzdC1wYXJhbS11dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC1nZW5lcmF0ZWQuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5h
bC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaCIKKyNpbmNs
dWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIgogCiAjaWYg
R1RFU1RfSEFTX1BBUkFNX1RFU1QKIApAQCAtMjc0LDExICszMDUsMTAgQEAgaW50ZXJuYWw6OlBh
cmFtR2VuZXJhdG9yPFQ+IFJhbmdlKFQgc3RhcnQsIFQgZW5kKSB7CiAvLwogdGVtcGxhdGUgPHR5
cGVuYW1lIEZvcndhcmRJdGVyYXRvcj4KIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjwKLSAgICB0
eXBlbmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5
cGU+IFZhbHVlc0luKAotICBGb3J3YXJkSXRlcmF0b3IgYmVnaW4sCi0gIEZvcndhcmRJdGVyYXRv
ciBlbmQpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndh
cmRJdGVyYXRvcj46OnZhbHVlX3R5cGUKLSAgICAgIFBhcmFtVHlwZTsKKyAgdHlwZW5hbWUgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVf
dHlwZT4KK1ZhbHVlc0luKEZvcndhcmRJdGVyYXRvciBiZWdpbiwgRm9yd2FyZEl0ZXJhdG9yIGVu
ZCkgeworICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJh
aXRzPEZvcndhcmRJdGVyYXRvcj4KKyAgICAgIDo6dmFsdWVfdHlwZSBQYXJhbVR5cGU7CiAgIHJl
dHVybiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8UGFyYW1UeXBlPigKICAgICAgIG5ldyBpbnRl
cm5hbDo6VmFsdWVzSW5JdGVyYXRvclJhbmdlR2VuZXJhdG9yPFBhcmFtVHlwZT4oYmVnaW4sIGVu
ZCkpOwogfQpAQCAtMzQ4LDcgKzM3OCw3IEBAIGlubGluZSBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0
b3I8Ym9vbD4gQm9vbCgpIHsKICAgcmV0dXJuIFZhbHVlcyhmYWxzZSwgdHJ1ZSk7CiB9CiAKLSNp
ZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNfQ09NQklORQogLy8gQ29tYmluZSgp
IGFsbG93cyB0aGUgdXNlciB0byBjb21iaW5lIHR3byBvciBtb3JlIHNlcXVlbmNlcyB0byBwcm9k
dWNlCiAvLyB2YWx1ZXMgb2YgYSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB0aG9zZSBzZXF1ZW5jZXMn
IGVsZW1lbnRzLgogLy8KQEAgLTM4NCw3ICs0MTQsNyBAQCBpbmxpbmUgaW50ZXJuYWw6OlBhcmFt
R2VuZXJhdG9yPGJvb2w+IEJvb2woKSB7CiAvLyBCb29sZWFuIGZsYWdzOgogLy8KIC8vIGNsYXNz
IEZsYWdEZXBlbmRlbnRUZXN0Ci0vLyAgICAgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJh
bTx0dXBsZShib29sLCBib29sKT4gPiB7CisvLyAgICAgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdp
dGhQYXJhbTx0dXBsZTxib29sLCBib29sPiA+IHsKIC8vICAgdmlydHVhbCB2b2lkIFNldFVwKCkg
ewogLy8gICAgIC8vIEFzc2lnbnMgZXh0ZXJuYWxfZmxhZ18xIGFuZCBleHRlcm5hbF9mbGFnXzIg
dmFsdWVzIGZyb20gdGhlIHR1cGxlLgogLy8gICAgIHRpZShleHRlcm5hbF9mbGFnXzEsIGV4dGVy
bmFsX2ZsYWdfMikgPSBHZXRQYXJhbSgpOwpAQCAtNDA5LDExICs0MzksMTEgQEAgaW50ZXJuYWw6
OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIkaTwkZm9yIGosIFtbR2VuZXJhdG9yJGpdXT4gQ29tYmlu
ZSgKIH0KIAogXV0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKKyMgZW5kaWYgIC8vIEdU
RVNUX0hBU19DT01CSU5FCiAKIAogCi0jZGVmaW5lIFRFU1RfUCh0ZXN0X2Nhc2VfbmFtZSwgdGVz
dF9uYW1lKSBcCisjIGRlZmluZSBURVNUX1AodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXAog
ICBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUp
IFwKICAgICAgIDogcHVibGljIHRlc3RfY2FzZV9uYW1lIHsgXAogICAgcHVibGljOiBcCkBAIC00
MjMsMTQgKzQ1MywxNyBAQCBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlciRpPCRmb3Ig
aiwgW1tHZW5lcmF0b3Ikal1dPiBDb21iaW5lKAogICAgIHN0YXRpYyBpbnQgQWRkVG9SZWdpc3Ry
eSgpIHsgXAogICAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+cGFyYW1l
dGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkuIFwKICAgICAgICAgICBHZXRUZXN0Q2FzZVBhdHRlcm5I
b2xkZXI8dGVzdF9jYXNlX25hbWU+KFwKLSAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBf
X0ZJTEVfXywgX19MSU5FX18pLT5BZGRUZXN0UGF0dGVybihcCi0gICAgICAgICAgICAgICAgICAj
dGVzdF9jYXNlX25hbWUsIFwKLSAgICAgICAgICAgICAgICAgICN0ZXN0X25hbWUsIFwKLSAgICAg
ICAgICAgICAgICAgIG5ldyA6OnRlc3Rpbmc6OmludGVybmFsOjpUZXN0TWV0YUZhY3Rvcnk8IFwK
LSAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9u
YW1lLCB0ZXN0X25hbWUpPigpKTsgXAorICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIFwK
KyAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKFwKKyAgICAg
ICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykpLT5BZGRUZXN0UGF0dGVybihcCisgICAg
ICAgICAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCisgICAgICAgICAgICAgICAgICAg
ICAgI3Rlc3RfbmFtZSwgXAorICAgICAgICAgICAgICAgICAgICAgIG5ldyA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpUZXN0TWV0YUZhY3Rvcnk8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR1RF
U1RfVEVTVF9DTEFTU19OQU1FXyhcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKT4oKSk7IFwKICAgICAgIHJldHVybiAwOyBcCiAgICAgfSBc
Ci0gICAgc3RhdGljIGludCBndGVzdF9yZWdpc3RlcmluZ19kdW1teV87IFwKKyAgICBzdGF0aWMg
aW50IGd0ZXN0X3JlZ2lzdGVyaW5nX2R1bW15XyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXzsgXAog
ICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oXAogICAgICAgICBHVEVTVF9URVNU
X0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpKTsgXAogICB9OyBcCkBAIC00
MzksMTYgKzQ3MiwzNiBAQCBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlciRpPCRmb3Ig
aiwgW1tHZW5lcmF0b3Ikal1dPiBDb21iaW5lKAogICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1F
Xyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKTo6QWRkVG9SZWdpc3RyeSgpOyBcCiAgIHZvaWQg
R1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKTo6VGVzdEJv
ZHkoKQogCi0jZGVmaW5lIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKHByZWZpeCwgdGVzdF9jYXNl
X25hbWUsIGdlbmVyYXRvcikgXAorLy8gVGhlIG9wdGlvbmFsIGxhc3QgYXJndW1lbnQgdG8gSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AgYWxsb3dzIHRoZSB1c2VyCisvLyB0byBzcGVjaWZ5IGEgZnVu
Y3Rpb24gb3IgZnVuY3RvciB0aGF0IGdlbmVyYXRlcyBjdXN0b20gdGVzdCBuYW1lIHN1ZmZpeGVz
CisvLyBiYXNlZCBvbiB0aGUgdGVzdCBwYXJhbWV0ZXJzLiBUaGUgZnVuY3Rpb24gc2hvdWxkIGFj
Y2VwdCBvbmUgYXJndW1lbnQgb2YKKy8vIHR5cGUgdGVzdGluZzo6VGVzdFBhcmFtSW5mbzxjbGFz
cyBQYXJhbVR5cGU+LCBhbmQgcmV0dXJuIHN0ZDo6c3RyaW5nLgorLy8KKy8vIHRlc3Rpbmc6OlBy
aW50VG9TdHJpbmdQYXJhbU5hbWUgaXMgYSBidWlsdGluIHRlc3Qgc3VmZml4IGdlbmVyYXRvciB0
aGF0CisvLyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0ZXN0aW5nOjpQcmludFRvU3RyaW5nKEdldFBh
cmFtKCkpLgorLy8KKy8vIE5vdGU6IHRlc3QgbmFtZXMgbXVzdCBiZSBub24tZW1wdHksIHVuaXF1
ZSwgYW5kIG1heSBvbmx5IGNvbnRhaW4gQVNDSUkKKy8vIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJz
IG9yIHVuZGVyc2NvcmUuIEJlY2F1c2UgUHJpbnRUb1N0cmluZyBhZGRzIHF1b3RlcworLy8gdG8g
c3RkOjpzdHJpbmcgYW5kIEMgc3RyaW5ncywgaXQgd29uJ3Qgd29yayBmb3IgdGhlc2UgdHlwZXMu
CisKKyMgZGVmaW5lIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKHByZWZpeCwgdGVzdF9jYXNlX25h
bWUsIGdlbmVyYXRvciwgLi4uKSBcCiAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJh
dG9yPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+IFwKICAgICAgIGd0ZXN0XyMjcHJlZml4IyN0
ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0b3JfKCkgeyByZXR1cm4gZ2VuZXJhdG9yOyB9IFwK
LSAgaW50IGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX2R1bW15XyA9IFwKKyAgOjpz
dGQ6OnN0cmluZyBndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdGVO
YW1lXyggXAorICAgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHRlc3RfY2FzZV9u
YW1lOjpQYXJhbVR5cGU+JiBpbmZvKSB7IFwKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5h
bDo6R2V0UGFyYW1OYW1lR2VuPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+IFwKKyAgICAgICAg
KF9fVkFfQVJHU19fKShpbmZvKTsgXAorICB9IFwKKyAgaW50IGd0ZXN0XyMjcHJlZml4IyN0ZXN0
X2Nhc2VfbmFtZSMjX2R1bW15XyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9IFwKICAgICAgIDo6
dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdp
c3RyeSgpLiBcCiAgICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVyPHRlc3RfY2FzZV9u
YW1lPihcCi0gICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgX19GSUxFX18sIF9fTElORV9f
KS0+QWRkVGVzdENhc2VJbnN0YW50aWF0aW9uKFwKLSAgICAgICAgICAgICAgICAgICNwcmVmaXgs
IFwKLSAgICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19F
dmFsR2VuZXJhdG9yXywgXAotICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKQor
ICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIFwKKyAgICAgICAgICAgICAgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKFwKKyAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBf
X0xJTkVfXykpLT5BZGRUZXN0Q2FzZUluc3RhbnRpYXRpb24oXAorICAgICAgICAgICAgICAgICAg
ICAgICNwcmVmaXgsIFwKKyAgICAgICAgICAgICAgICAgICAgICAmZ3Rlc3RfIyNwcmVmaXgjI3Rl
c3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRvcl8sIFwKKyAgICAgICAgICAgICAgICAgICAgICAm
Z3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRlTmFtZV8sIFwKKyAg
ICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pCiAKIH0gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTMzMTY0Y2IzOGFiNTA1OTYyZjc1
YjE1NzY1NGFlZWU1NDU5ZjNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wcmludGVycy5oCkBAIC0wLDAgKzEsOTkzIEBACisv
LyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRp
c3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
Ky8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9y
OiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisvLyBHb29nbGUgVGVzdCAtIFRoZSBH
b29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrCisvLworLy8gVGhpcyBmaWxlIGltcGxlbWVudHMg
YSB1bml2ZXJzYWwgdmFsdWUgcHJpbnRlciB0aGF0IGNhbiBwcmludCBhCisvLyB2YWx1ZSBvZiBh
bnkgdHlwZSBUOgorLy8KKy8vICAgdm9pZCA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxQ
cmludGVyPFQ+OjpQcmludCh2YWx1ZSwgb3N0cmVhbV9wdHIpOworLy8KKy8vIEEgdXNlciBjYW4g
dGVhY2ggdGhpcyBmdW5jdGlvbiBob3cgdG8gcHJpbnQgYSBjbGFzcyB0eXBlIFQgYnkKKy8vIGRl
ZmluaW5nIGVpdGhlciBvcGVyYXRvcjw8KCkgb3IgUHJpbnRUbygpIGluIHRoZSBuYW1lc3BhY2Ug
dGhhdAorLy8gZGVmaW5lcyBULiAgTW9yZSBzcGVjaWZpY2FsbHksIHRoZSBGSVJTVCBkZWZpbmVk
IGZ1bmN0aW9uIGluIHRoZQorLy8gZm9sbG93aW5nIGxpc3Qgd2lsbCBiZSB1c2VkIChhc3N1bWlu
ZyBUIGlzIGRlZmluZWQgaW4gbmFtZXNwYWNlCisvLyBmb28pOgorLy8KKy8vICAgMS4gZm9vOjpQ
cmludFRvKGNvbnN0IFQmLCBvc3RyZWFtKikKKy8vICAgMi4gb3BlcmF0b3I8PChvc3RyZWFtJiwg
Y29uc3QgVCYpIGRlZmluZWQgaW4gZWl0aGVyIGZvbyBvciB0aGUKKy8vICAgICAgZ2xvYmFsIG5h
bWVzcGFjZS4KKy8vCisvLyBJZiBub25lIG9mIHRoZSBhYm92ZSBpcyBkZWZpbmVkLCBpdCB3aWxs
IHByaW50IHRoZSBkZWJ1ZyBzdHJpbmcgb2YKKy8vIHRoZSB2YWx1ZSBpZiBpdCBpcyBhIHByb3Rv
Y29sIGJ1ZmZlciwgb3IgcHJpbnQgdGhlIHJhdyBieXRlcyBpbiB0aGUKKy8vIHZhbHVlIG90aGVy
d2lzZS4KKy8vCisvLyBUbyBhaWQgZGVidWdnaW5nOiB3aGVuIFQgaXMgYSByZWZlcmVuY2UgdHlw
ZSwgdGhlIGFkZHJlc3Mgb2YgdGhlCisvLyB2YWx1ZSBpcyBhbHNvIHByaW50ZWQ7IHdoZW4gVCBp
cyBhIChjb25zdCkgY2hhciBwb2ludGVyLCBib3RoIHRoZQorLy8gcG9pbnRlciB2YWx1ZSBhbmQg
dGhlIE5VTC10ZXJtaW5hdGVkIHN0cmluZyBpdCBwb2ludHMgdG8gYXJlCisvLyBwcmludGVkLgor
Ly8KKy8vIFdlIGFsc28gcHJvdmlkZSBzb21lIGNvbnZlbmllbnQgd3JhcHBlcnM6CisvLworLy8g
ICAvLyBQcmludHMgYSB2YWx1ZSB0byBhIHN0cmluZy4gIEZvciBhIChjb25zdCBvciBub3QpIGNo
YXIKKy8vICAgLy8gcG9pbnRlciwgdGhlIE5VTC10ZXJtaW5hdGVkIHN0cmluZyAoYnV0IG5vdCB0
aGUgcG9pbnRlcikgaXMKKy8vICAgLy8gcHJpbnRlZC4KKy8vICAgc3RkOjpzdHJpbmcgOjp0ZXN0
aW5nOjpQcmludFRvU3RyaW5nKGNvbnN0IFQmIHZhbHVlKTsKKy8vCisvLyAgIC8vIFByaW50cyBh
IHZhbHVlIHRlcnNlbHk6IGZvciBhIHJlZmVyZW5jZSB0eXBlLCB0aGUgcmVmZXJlbmNlZAorLy8g
ICAvLyB2YWx1ZSAoYnV0IG5vdCB0aGUgYWRkcmVzcykgaXMgcHJpbnRlZDsgZm9yIGEgKGNvbnN0
IG9yIG5vdCkgY2hhcgorLy8gICAvLyBwb2ludGVyLCB0aGUgTlVMLXRlcm1pbmF0ZWQgc3RyaW5n
IChidXQgbm90IHRoZSBwb2ludGVyKSBpcworLy8gICAvLyBwcmludGVkLgorLy8gICB2b2lkIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnQoY29uc3QgVCYgdmFsdWUsIG9z
dHJlYW0qKTsKKy8vCisvLyAgIC8vIFByaW50cyB2YWx1ZSB1c2luZyB0aGUgdHlwZSBpbmZlcnJl
ZCBieSB0aGUgY29tcGlsZXIuICBUaGUgZGlmZmVyZW5jZQorLy8gICAvLyBmcm9tIFVuaXZlcnNh
bFRlcnNlUHJpbnQoKSBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gcHJpbnRzIGJvdGggdGhlCisvLyAg
IC8vIHBvaW50ZXIgYW5kIHRoZSBOVUwtdGVybWluYXRlZCBzdHJpbmcgZm9yIGEgKGNvbnN0IG9y
IG5vdCkgY2hhciBwb2ludGVyLgorLy8gICB2b2lkIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZl
cnNhbFByaW50KGNvbnN0IFQmIHZhbHVlLCBvc3RyZWFtKik7CisvLworLy8gICAvLyBQcmludHMg
dGhlIGZpZWxkcyBvZiBhIHR1cGxlIHRlcnNlbHkgdG8gYSBzdHJpbmcgdmVjdG9yLCBvbmUKKy8v
ICAgLy8gZWxlbWVudCBmb3IgZWFjaCBmaWVsZC4gVHVwbGUgc3VwcG9ydCBtdXN0IGJlIGVuYWJs
ZWQgaW4KKy8vICAgLy8gZ3Rlc3QtcG9ydC5oLgorLy8gICBzdGQ6OnZlY3RvcjxzdHJpbmc+IFVu
aXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKKy8vICAgICAgIGNvbnN0IFR1
cGxlJiB2YWx1ZSk7CisvLworLy8gS25vd24gbGltaXRhdGlvbjoKKy8vCisvLyBUaGUgcHJpbnQg
cHJpbWl0aXZlcyBwcmludCB0aGUgZWxlbWVudHMgb2YgYW4gU1RMLXN0eWxlIGNvbnRhaW5lcgor
Ly8gdXNpbmcgdGhlIGNvbXBpbGVyLWluZmVycmVkIHR5cGUgb2YgKml0ZXIgd2hlcmUgaXRlciBp
cyBhCisvLyBjb25zdF9pdGVyYXRvciBvZiB0aGUgY29udGFpbmVyLiAgV2hlbiBjb25zdF9pdGVy
YXRvciBpcyBhbiBpbnB1dAorLy8gaXRlcmF0b3IgYnV0IG5vdCBhIGZvcndhcmQgaXRlcmF0b3Is
IHRoaXMgaW5mZXJyZWQgdHlwZSBtYXkgbm90CisvLyBtYXRjaCB2YWx1ZV90eXBlLCBhbmQgdGhl
IHByaW50IG91dHB1dCBtYXkgYmUgaW5jb3JyZWN0LiAgSW4KKy8vIHByYWN0aWNlLCB0aGlzIGlz
IHJhcmVseSBhIHByb2JsZW0gYXMgZm9yIG1vc3QgY29udGFpbmVycworLy8gY29uc3RfaXRlcmF0
b3IgaXMgYSBmb3J3YXJkIGl0ZXJhdG9yLiAgV2UnbGwgZml4IHRoaXMgaWYgdGhlcmUncyBhbgor
Ly8gYWN0dWFsIG5lZWQgZm9yIGl0LiAgTm90ZSB0aGF0IHRoaXMgZml4IGNhbm5vdCByZWx5IG9u
IHZhbHVlX3R5cGUKKy8vIGJlaW5nIGRlZmluZWQgYXMgbWFueSB1c2VyLWRlZmluZWQgY29udGFp
bmVyIHR5cGVzIGRvbid0IGhhdmUKKy8vIHZhbHVlX3R5cGUuCisKKyNpZm5kZWYgR1RFU1RfSU5D
TFVERV9HVEVTVF9HVEVTVF9QUklOVEVSU19IXworI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNU
X0dURVNUX1BSSU5URVJTX0hfCisKKyNpbmNsdWRlIDxvc3RyZWFtPiAgLy8gTk9MSU5UCisjaW5j
bHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNp
bmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgor
I2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgiCisKKyNpZiBHVEVTVF9I
QVNfU1REX1RVUExFXworIyBpbmNsdWRlIDx0dXBsZT4KKyNlbmRpZgorCituYW1lc3BhY2UgdGVz
dGluZyB7CisKKy8vIERlZmluaXRpb25zIGluIHRoZSAnaW50ZXJuYWwnIGFuZCAnaW50ZXJuYWwy
JyBuYW1lIHNwYWNlcyBhcmUKKy8vIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLiAg
RE8gTk9UIFVTRSBUSEVNIElOIFVTRVIgQ09ERSEKK25hbWVzcGFjZSBpbnRlcm5hbDIgeworCisv
LyBQcmludHMgdGhlIGdpdmVuIG51bWJlciBvZiBieXRlcyBpbiB0aGUgZ2l2ZW4gb2JqZWN0IHRv
IHRoZSBnaXZlbgorLy8gb3N0cmVhbS4KK0dURVNUX0FQSV8gdm9pZCBQcmludEJ5dGVzSW5PYmpl
Y3RUbyhjb25zdCB1bnNpZ25lZCBjaGFyKiBvYmpfYnl0ZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDo6c3RkOjpvc3RyZWFtKiBvcyk7CisKKy8vIEZvciBzZWxlY3Rpbmcgd2hp
Y2ggcHJpbnRlciB0byB1c2Ugd2hlbiBhIGdpdmVuIHR5cGUgaGFzIG5laXRoZXIgPDwKKy8vIG5v
ciBQcmludFRvKCkuCitlbnVtIFR5cGVLaW5kIHsKKyAga1Byb3RvYnVmLCAgICAgICAgICAgICAg
Ly8gYSBwcm90b2J1ZiB0eXBlCisgIGtDb252ZXJ0aWJsZVRvSW50ZWdlciwgIC8vIGEgdHlwZSBp
bXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRvIEJpZ2dlc3RJbnQKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gKGUuZy4gYSBuYW1lZCBvciB1bm5hbWVkIGVudW0gdHlwZSkKKyAga090aGVyVHlw
ZSAgICAgICAgICAgICAgLy8gYW55dGhpbmcgZWxzZQorfTsKKworLy8gVHlwZVdpdGhvdXRGb3Jt
YXR0ZXI8VCwga1R5cGVLaW5kPjo6UHJpbnRWYWx1ZSh2YWx1ZSwgb3MpIGlzIGNhbGxlZAorLy8g
YnkgdGhlIHVuaXZlcnNhbCBwcmludGVyIHRvIHByaW50IGEgdmFsdWUgb2YgdHlwZSBUIHdoZW4g
bmVpdGhlcgorLy8gb3BlcmF0b3I8PCBub3IgUHJpbnRUbygpIGlzIGRlZmluZWQgZm9yIFQsIHdo
ZXJlIGtUeXBlS2luZCBpcyB0aGUKKy8vICJraW5kIiBvZiBUIGFzIGRlZmluZWQgYnkgZW51bSBU
eXBlS2luZC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBUeXBlS2luZCBrVHlwZUtpbmQ+CitjbGFz
cyBUeXBlV2l0aG91dEZvcm1hdHRlciB7CisgcHVibGljOgorICAvLyBUaGlzIGRlZmF1bHQgdmVy
c2lvbiBpcyBjYWxsZWQgd2hlbiBrVHlwZUtpbmQgaXMga090aGVyVHlwZS4KKyAgc3RhdGljIHZv
aWQgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAg
UHJpbnRCeXRlc0luT2JqZWN0VG8ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
Kj4oJnZhbHVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodmFsdWUpLCBvcyk7
CisgIH0KK307CisKKy8vIFdlIHByaW50IGEgcHJvdG9idWYgdXNpbmcgaXRzIFNob3J0RGVidWdT
dHJpbmcoKSB3aGVuIHRoZSBzdHJpbmcKKy8vIGRvZXNuJ3QgZXhjZWVkIHRoaXMgbWFueSBjaGFy
YWN0ZXJzOyBvdGhlcndpc2Ugd2UgcHJpbnQgaXQgdXNpbmcKKy8vIERlYnVnU3RyaW5nKCkgZm9y
IGJldHRlciByZWFkYWJpbGl0eS4KK2NvbnN0IHNpemVfdCBrUHJvdG9idWZPbmVMaW5lck1heExl
bmd0aCA9IDUwOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVXaXRob3V0Rm9y
bWF0dGVyPFQsIGtQcm90b2J1Zj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnRWYWx1
ZShjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgY29uc3QgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6c3RyaW5nIHNob3J0X3N0ciA9IHZhbHVlLlNob3J0RGVidWdTdHJpbmco
KTsKKyAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmcgcHJldHR5X3N0ciA9Cisg
ICAgICAgIHNob3J0X3N0ci5sZW5ndGgoKSA8PSBrUHJvdG9idWZPbmVMaW5lck1heExlbmd0aCA/
CisgICAgICAgIHNob3J0X3N0ciA6ICgiXG4iICsgdmFsdWUuRGVidWdTdHJpbmcoKSk7CisgICAg
Km9zIDw8ICgiPCIgKyBwcmV0dHlfc3RyICsgIj4iKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitjbGFzcyBUeXBlV2l0aG91dEZvcm1hdHRlcjxULCBrQ29udmVydGlibGVUb0lu
dGVnZXI+IHsKKyBwdWJsaWM6CisgIC8vIFNpbmNlIFQgaGFzIG5vIDw8IG9wZXJhdG9yIG9yIFBy
aW50VG8oKSBidXQgY2FuIGJlIGltcGxpY2l0bHkKKyAgLy8gY29udmVydGVkIHRvIEJpZ2dlc3RJ
bnQsIHdlIHByaW50IGl0IGFzIGEgQmlnZ2VzdEludC4KKyAgLy8KKyAgLy8gTW9zdCBsaWtlbHkg
VCBpcyBhbiBlbnVtIHR5cGUgKGVpdGhlciBuYW1lZCBvciB1bm5hbWVkKSwgaW4gd2hpY2gKKyAg
Ly8gY2FzZSBwcmludGluZyBpdCBhcyBhbiBpbnRlZ2VyIGlzIHRoZSBkZXNpcmVkIGJlaGF2aW9y
LiAgSW4gY2FzZQorICAvLyBUIGlzIG5vdCBhbiBlbnVtLCBwcmludGluZyBpdCBhcyBhbiBpbnRl
Z2VyIGlzIHRoZSBiZXN0IHdlIGNhbiBkbworICAvLyBnaXZlbiB0aGF0IGl0IGhhcyBubyB1c2Vy
LWRlZmluZWQgcHJpbnRlci4KKyAgc3RhdGljIHZvaWQgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1
ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgY29uc3QgaW50ZXJuYWw6OkJpZ2dlc3RJbnQg
a0JpZ0ludCA9IHZhbHVlOworICAgICpvcyA8PCBrQmlnSW50OworICB9Cit9OworCisvLyBQcmlu
dHMgdGhlIGdpdmVuIHZhbHVlIHRvIHRoZSBnaXZlbiBvc3RyZWFtLiAgSWYgdGhlIHZhbHVlIGlz
IGEKKy8vIHByb3RvY29sIG1lc3NhZ2UsIGl0cyBkZWJ1ZyBzdHJpbmcgaXMgcHJpbnRlZDsgaWYg
aXQncyBhbiBlbnVtIG9yCisvLyBvZiBhIHR5cGUgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0byBC
aWdnZXN0SW50LCBpdCdzIHByaW50ZWQgYXMgYW4KKy8vIGludGVnZXI7IG90aGVyd2lzZSB0aGUg
Ynl0ZXMgaW4gdGhlIHZhbHVlIGFyZSBwcmludGVkLiAgVGhpcyBpcworLy8gd2hhdCBVbml2ZXJz
YWxQcmludGVyPFQ+OjpQcmludCgpIGRvZXMgd2hlbiBpdCBrbm93cyBub3RoaW5nIGFib3V0Cisv
LyB0eXBlIFQgYW5kIFQgaGFzIG5laXRoZXIgPDwgb3BlcmF0b3Igbm9yIFByaW50VG8oKS4KKy8v
CisvLyBBIHVzZXIgY2FuIG92ZXJyaWRlIHRoaXMgYmVoYXZpb3IgZm9yIGEgY2xhc3MgdHlwZSBG
b28gYnkgZGVmaW5pbmcKKy8vIGEgPDwgb3BlcmF0b3IgaW4gdGhlIG5hbWVzcGFjZSB3aGVyZSBG
b28gaXMgZGVmaW5lZC4KKy8vCisvLyBXZSBwdXQgdGhpcyBvcGVyYXRvciBpbiBuYW1lc3BhY2Ug
J2ludGVybmFsMicgaW5zdGVhZCBvZiAnaW50ZXJuYWwnCisvLyB0byBzaW1wbGlmeSB0aGUgaW1w
bGVtZW50YXRpb24sIGFzIG11Y2ggY29kZSBpbiAnaW50ZXJuYWwnIG5lZWRzIHRvCisvLyB1c2Ug
PDwgaW4gU1RMLCB3aGljaCB3b3VsZCBjb25mbGljdCB3aXRoIG91ciBvd24gPDwgd2VyZSBpdCBk
ZWZpbmVkCisvLyBpbiAnaW50ZXJuYWwnLgorLy8KKy8vIE5vdGUgdGhhdCB0aGlzIG9wZXJhdG9y
PDwgdGFrZXMgYSBnZW5lcmljIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLAorLy8gQ2hhclRyYWl0
cz4gdHlwZSBpbnN0ZWFkIG9mIHRoZSBtb3JlIHJlc3RyaWN0ZWQgc3RkOjpvc3RyZWFtLiAgSWYK
Ky8vIHdlIGRlZmluZSBpdCB0byB0YWtlIGFuIHN0ZDo6b3N0cmVhbSBpbnN0ZWFkLCB3ZSdsbCBn
ZXQgYW4KKy8vICJhbWJpZ3VvdXMgb3ZlcmxvYWRzIiBjb21waWxlciBlcnJvciB3aGVuIHRyeWlu
ZyB0byBwcmludCBhIHR5cGUKKy8vIEZvbyB0aGF0IHN1cHBvcnRzIHN0cmVhbWluZyB0byBzdGQ6
OmJhc2ljX29zdHJlYW08Q2hhciwKKy8vIENoYXJUcmFpdHM+LCBhcyB0aGUgY29tcGlsZXIgY2Fu
bm90IHRlbGwgd2hldGhlcgorLy8gb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mLCBjb25zdCBUJikg
b3IKKy8vIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4sIGNv
bnN0IEZvbyYpIGlzIG1vcmUKKy8vIHNwZWNpZmljLgordGVtcGxhdGUgPHR5cGVuYW1lIENoYXIs
IHR5cGVuYW1lIENoYXJUcmFpdHMsIHR5cGVuYW1lIFQ+Cis6OnN0ZDo6YmFzaWNfb3N0cmVhbTxD
aGFyLCBDaGFyVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICA6OnN0ZDo6YmFzaWNfb3N0cmVhbTxD
aGFyLCBDaGFyVHJhaXRzPiYgb3MsIGNvbnN0IFQmIHgpIHsKKyAgVHlwZVdpdGhvdXRGb3JtYXR0
ZXI8VCwKKyAgICAgIChpbnRlcm5hbDo6SXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZSA/IGtQ
cm90b2J1ZiA6CisgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTxjb25zdCBU
JiwgaW50ZXJuYWw6OkJpZ2dlc3RJbnQ+Ojp2YWx1ZSA/CisgICAgICAga0NvbnZlcnRpYmxlVG9J
bnRlZ2VyIDoga090aGVyVHlwZSk+OjpQcmludFZhbHVlKHgsICZvcyk7CisgIHJldHVybiBvczsK
K30KKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsMgorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcK
KworLy8gVGhpcyBuYW1lc3BhY2UgTVVTVCBOT1QgQkUgTkVTVEVEIElOIDo6dGVzdGluZywgb3Ig
dGhlIG5hbWUgbG9vay11cAorLy8gbWFnaWMgbmVlZGVkIGZvciBpbXBsZW1lbnRpbmcgVW5pdmVy
c2FsUHJpbnRlciB3b24ndCB3b3JrLgorbmFtZXNwYWNlIHRlc3RpbmdfaW50ZXJuYWwgeworCisv
LyBVc2VkIHRvIHByaW50IGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gU1RMLXN0eWxlIGNvbnRhaW5l
ciB3aGVuIHRoZQorLy8gdXNlciBkb2Vzbid0IGRlZmluZSBQcmludFRvKCkgZm9yIGl0LgordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIERlZmF1bHRQcmludE5vbkNvbnRhaW5lclRvKGNvbnN0
IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgLy8gV2l0aCB0aGUgZm9sbG93aW5n
IHN0YXRlbWVudCwgZHVyaW5nIHVucXVhbGlmaWVkIG5hbWUgbG9va3VwLAorICAvLyB0ZXN0aW5n
OjppbnRlcm5hbDI6Om9wZXJhdG9yPDwgYXBwZWFycyBhcyBpZiBpdCB3YXMgZGVjbGFyZWQgaW4K
KyAgLy8gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSB0aGF0IGNvbnRhaW5zIGJvdGgK
KyAgLy8gOjp0ZXN0aW5nX2ludGVybmFsIGFuZCA6OnRlc3Rpbmc6OmludGVybmFsMiwgaS5lLiB0
aGUgZ2xvYmFsCisgIC8vIG5hbWVzcGFjZS4gIEZvciBtb3JlIGRldGFpbHMsIHJlZmVyIHRvIHRo
ZSBDKysgU3RhbmRhcmQgc2VjdGlvbgorICAvLyA3LjMuNC0xIFtuYW1lc3BhY2UudWRpcl0uICBU
aGlzIGFsbG93cyB1cyB0byBmYWxsIGJhY2sgb250bworICAvLyB0ZXN0aW5nOjppbnRlcm5hbDI6
Om9wZXJhdG9yPDwgaW4gY2FzZSBUIGRvZXNuJ3QgY29tZSB3aXRoIGEgPDwKKyAgLy8gb3BlcmF0
b3IuCisgIC8vCisgIC8vIFdlIGNhbm5vdCB3cml0ZSAndXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5h
bDI6Om9wZXJhdG9yPDw7Jywgd2hpY2gKKyAgLy8gZ2NjIDMuMyBmYWlscyB0byBjb21waWxlIGR1
ZSB0byBhIGNvbXBpbGVyIGJ1Zy4KKyAgdXNpbmcgbmFtZXNwYWNlIDo6dGVzdGluZzo6aW50ZXJu
YWwyOyAgLy8gTk9MSU5UCisKKyAgLy8gQXNzdW1pbmcgVCBpcyBkZWZpbmVkIGluIG5hbWVzcGFj
ZSBmb28sIGluIHRoZSBuZXh0IHN0YXRlbWVudCwKKyAgLy8gdGhlIGNvbXBpbGVyIHdpbGwgY29u
c2lkZXIgYWxsIG9mOgorICAvLworICAvLyAgIDEuIGZvbzo6b3BlcmF0b3I8PCAodGhhbmtzIHRv
IEtvZW5pZyBsb29rLXVwKSwKKyAgLy8gICAyLiA6Om9wZXJhdG9yPDwgKGFzIHRoZSBjdXJyZW50
IG5hbWVzcGFjZSBpcyBlbmNsb3NlZCBpbiA6OiksCisgIC8vICAgMy4gdGVzdGluZzo6aW50ZXJu
YWwyOjpvcGVyYXRvcjw8ICh0aGFua3MgdG8gdGhlIHVzaW5nIHN0YXRlbWVudCBhYm92ZSkuCisg
IC8vCisgIC8vIFRoZSBvcGVyYXRvcjw8IHdob3NlIHR5cGUgbWF0Y2hlcyBUIGJlc3Qgd2lsbCBi
ZSBwaWNrZWQuCisgIC8vCisgIC8vIFdlIGRlbGliZXJhdGVseSBhbGxvdyAjMiB0byBiZSBhIGNh
bmRpZGF0ZSwgYXMgc29tZXRpbWVzIGl0J3MKKyAgLy8gaW1wb3NzaWJsZSB0byBkZWZpbmUgIzEg
KGUuZy4gd2hlbiBmb28gaXMgOjpzdGQsIGRlZmluaW5nCisgIC8vIGFueXRoaW5nIGluIGl0IGlz
IHVuZGVmaW5lZCBiZWhhdmlvciB1bmxlc3MgeW91IGFyZSBhIGNvbXBpbGVyCisgIC8vIHZlbmRv
ci4pLgorICAqb3MgPDwgdmFsdWU7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nX2ludGVy
bmFsCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIEZv
cm1hdEZvckNvbXBhcmlzb248VG9QcmludCwgT3RoZXJPcGVyYW5kPjo6Rm9ybWF0KHZhbHVlKSBm
b3JtYXRzIGEKKy8vIHZhbHVlIG9mIHR5cGUgVG9QcmludCB0aGF0IGlzIGFuIG9wZXJhbmQgb2Yg
YSBjb21wYXJpc29uIGFzc2VydGlvbgorLy8gKGUuZy4gQVNTRVJUX0VRKS4gIE90aGVyT3BlcmFu
ZCBpcyB0aGUgdHlwZSBvZiB0aGUgb3RoZXIgb3BlcmFuZCBpbgorLy8gdGhlIGNvbXBhcmlzb24s
IGFuZCBpcyB1c2VkIHRvIGhlbHAgZGV0ZXJtaW5lIHRoZSBiZXN0IHdheSB0bworLy8gZm9ybWF0
IHRoZSB2YWx1ZS4gIEluIHBhcnRpY3VsYXIsIHdoZW4gdGhlIHZhbHVlIGlzIGEgQyBzdHJpbmcK
Ky8vIChjaGFyIHBvaW50ZXIpIGFuZCB0aGUgb3RoZXIgb3BlcmFuZCBpcyBhbiBTVEwgc3RyaW5n
IG9iamVjdCwgd2UKKy8vIHdhbnQgdG8gZm9ybWF0IHRoZSBDIHN0cmluZyBhcyBhIHN0cmluZywg
c2luY2Ugd2Uga25vdyBpdCBpcworLy8gY29tcGFyZWQgYnkgdmFsdWUgd2l0aCB0aGUgc3RyaW5n
IG9iamVjdC4gIElmIHRoZSB2YWx1ZSBpcyBhIGNoYXIKKy8vIHBvaW50ZXIgYnV0IHRoZSBvdGhl
ciBvcGVyYW5kIGlzIG5vdCBhbiBTVEwgc3RyaW5nIG9iamVjdCwgd2UgZG9uJ3QKKy8vIGtub3cg
d2hldGhlciB0aGUgcG9pbnRlciBpcyBzdXBwb3NlZCB0byBwb2ludCB0byBhIE5VTC10ZXJtaW5h
dGVkCisvLyBzdHJpbmcsIGFuZCB0aHVzIHdhbnQgdG8gcHJpbnQgaXQgYXMgYSBwb2ludGVyIHRv
IGJlIHNhZmUuCisvLworLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElO
IEEgVVNFUiBQUk9HUkFNLgorCisvLyBUaGUgZGVmYXVsdCBjYXNlLgordGVtcGxhdGUgPHR5cGVu
YW1lIFRvUHJpbnQsIHR5cGVuYW1lIE90aGVyT3BlcmFuZD4KK2NsYXNzIEZvcm1hdEZvckNvbXBh
cmlzb24geworIHB1YmxpYzoKKyAgc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9ybWF0KGNvbnN0IFRv
UHJpbnQmIHZhbHVlKSB7CisgICAgcmV0dXJuIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyh2YWx1
ZSk7CisgIH0KK307CisKKy8vIEFycmF5LgordGVtcGxhdGUgPHR5cGVuYW1lIFRvUHJpbnQsIHNp
emVfdCBOLCB0eXBlbmFtZSBPdGhlck9wZXJhbmQ+CitjbGFzcyBGb3JtYXRGb3JDb21wYXJpc29u
PFRvUHJpbnRbTl0sIE90aGVyT3BlcmFuZD4geworIHB1YmxpYzoKKyAgc3RhdGljIDo6c3RkOjpz
dHJpbmcgRm9ybWF0KGNvbnN0IFRvUHJpbnQqIHZhbHVlKSB7CisgICAgcmV0dXJuIEZvcm1hdEZv
ckNvbXBhcmlzb248Y29uc3QgVG9QcmludCosIE90aGVyT3BlcmFuZD46OkZvcm1hdCh2YWx1ZSk7
CisgIH0KK307CisKKy8vIEJ5IGRlZmF1bHQsIHByaW50IEMgc3RyaW5nIGFzIHBvaW50ZXJzIHRv
IGJlIHNhZmUsIGFzIHdlIGRvbid0IGtub3cKKy8vIHdoZXRoZXIgdGhleSBhY3R1YWxseSBwb2lu
dCB0byBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZy4KKworI2RlZmluZSBHVEVTVF9JTVBMX0ZPUk1B
VF9DX1NUUklOR19BU19QT0lOVEVSXyhDaGFyVHlwZSkgICAgICAgICAgICAgICAgXAorICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgT3RoZXJPcGVyYW5kPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICBjbGFzcyBGb3JtYXRGb3JDb21wYXJpc29uPENoYXJUeXBlKiwgT3RoZXJP
cGVyYW5kPiB7ICAgICAgICAgICAgICAgICAgXAorICAgcHVibGljOiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRp
YyA6OnN0ZDo6c3RyaW5nIEZvcm1hdChDaGFyVHlwZSogdmFsdWUpIHsgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgcmV0dXJuIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhzdGF0aWNfY2Fz
dDxjb25zdCB2b2lkKj4odmFsdWUpKTsgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKK0dURVNU
X0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1BPSU5URVJfKGNoYXIpOworR1RFU1RfSU1QTF9GT1JN
QVRfQ19TVFJJTkdfQVNfUE9JTlRFUl8oY29uc3QgY2hhcik7CitHVEVTVF9JTVBMX0ZPUk1BVF9D
X1NUUklOR19BU19QT0lOVEVSXyh3Y2hhcl90KTsKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5H
X0FTX1BPSU5URVJfKGNvbnN0IHdjaGFyX3QpOworCisjdW5kZWYgR1RFU1RfSU1QTF9GT1JNQVRf
Q19TVFJJTkdfQVNfUE9JTlRFUl8KKworLy8gSWYgYSBDIHN0cmluZyBpcyBjb21wYXJlZCB3aXRo
IGFuIFNUTCBzdHJpbmcgb2JqZWN0LCB3ZSBrbm93IGl0J3MgbWVhbnQKKy8vIHRvIHBvaW50IHRv
IGEgTlVMLXRlcm1pbmF0ZWQgc3RyaW5nLCBhbmQgdGh1cyBjYW4gcHJpbnQgaXQgYXMgYSBzdHJp
bmcuCisKKyNkZWZpbmUgR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhDaGFy
VHlwZSwgT3RoZXJTdHJpbmdUeXBlKSBcCisgIHRlbXBsYXRlIDw+ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGNsYXNzIEZvcm1h
dEZvckNvbXBhcmlzb248Q2hhclR5cGUqLCBPdGhlclN0cmluZ1R5cGU+IHsgICAgICAgICAgICAg
ICBcCisgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9ybWF0KENo
YXJUeXBlKiB2YWx1ZSkgeyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICByZXR1cm4gOjp0
ZXN0aW5nOjpQcmludFRvU3RyaW5nKHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgIH0KKworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNf
U1RSSU5HXyhjaGFyLCA6OnN0ZDo6c3RyaW5nKTsKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5H
X0FTX1NUUklOR18oY29uc3QgY2hhciwgOjpzdGQ6OnN0cmluZyk7CisKKyNpZiBHVEVTVF9IQVNf
R0xPQkFMX1NUUklORworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjaGFy
LCA6OnN0cmluZyk7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNvbnN0
IGNoYXIsIDo6c3RyaW5nKTsKKyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5H
CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKHdjaGFyX3QsIDo6d3N0cmlu
Zyk7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNvbnN0IHdjaGFyX3Qs
IDo6d3N0cmluZyk7CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORworR1RFU1Rf
SU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyh3Y2hhcl90LCA6OnN0ZDo6d3N0cmluZyk7
CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNvbnN0IHdjaGFyX3QsIDo6
c3RkOjp3c3RyaW5nKTsKKyNlbmRpZgorCisjdW5kZWYgR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJ
TkdfQVNfU1RSSU5HXworCisvLyBGb3JtYXRzIGEgY29tcGFyaXNvbiBhc3NlcnRpb24gKGUuZy4g
QVNTRVJUX0VRLCBFWFBFQ1RfTFQsIGFuZCBldGMpCisvLyBvcGVyYW5kIHRvIGJlIHVzZWQgaW4g
YSBmYWlsdXJlIG1lc3NhZ2UuICBUaGUgdHlwZSAoYnV0IG5vdCB2YWx1ZSkKKy8vIG9mIHRoZSBv
dGhlciBvcGVyYW5kIG1heSBhZmZlY3QgdGhlIGZvcm1hdC4gIFRoaXMgYWxsb3dzIHVzIHRvCisv
LyBwcmludCBhIGNoYXIqIGFzIGEgcmF3IHBvaW50ZXIgd2hlbiBpdCBpcyBjb21wYXJlZCBhZ2Fp
bnN0IGFub3RoZXIKKy8vIGNoYXIqIG9yIHZvaWQqLCBhbmQgcHJpbnQgaXQgYXMgYSBDIHN0cmlu
ZyB3aGVuIGl0IGlzIGNvbXBhcmVkCisvLyBhZ2FpbnN0IGFuIHN0ZDo6c3RyaW5nIG9iamVjdCwg
Zm9yIGV4YW1wbGUuCisvLworLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNF
IElOIEEgVVNFUiBQUk9HUkFNLgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4K
K3N0ZDo6c3RyaW5nIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSgKKyAgICBjb25z
dCBUMSYgdmFsdWUsIGNvbnN0IFQyJiAvKiBvdGhlcl9vcGVyYW5kICovKSB7CisgIHJldHVybiBG
b3JtYXRGb3JDb21wYXJpc29uPFQxLCBUMj46OkZvcm1hdCh2YWx1ZSk7Cit9CisKKy8vIFVuaXZl
cnNhbFByaW50ZXI8VD46OlByaW50KHZhbHVlLCBvc3RyZWFtX3B0cikgcHJpbnRzIHRoZSBnaXZl
bgorLy8gdmFsdWUgdG8gdGhlIGdpdmVuIG9zdHJlYW0uICBUaGUgY2FsbGVyIG11c3QgZW5zdXJl
IHRoYXQKKy8vICdvc3RyZWFtX3B0cicgaXMgbm90IE5VTEwsIG9yIHRoZSBiZWhhdmlvciBpcyB1
bmRlZmluZWQuCisvLworLy8gV2UgZGVmaW5lIFVuaXZlcnNhbFByaW50ZXIgYXMgYSBjbGFzcyB0
ZW1wbGF0ZSAoYXMgb3Bwb3NlZCB0byBhCisvLyBmdW5jdGlvbiB0ZW1wbGF0ZSksIGFzIHdlIG5l
ZWQgdG8gcGFydGlhbGx5IHNwZWNpYWxpemUgaXQgZm9yCisvLyByZWZlcmVuY2UgdHlwZXMsIHdo
aWNoIGNhbm5vdCBiZSBkb25lIHdpdGggZnVuY3Rpb24gdGVtcGxhdGVzLgordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitjbGFzcyBVbml2ZXJzYWxQcmludGVyOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK3ZvaWQgVW5pdmVyc2FsUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBv
cyk7CisKKy8vIFVzZWQgdG8gcHJpbnQgYW4gU1RMLXN0eWxlIGNvbnRhaW5lciB3aGVuIHRoZSB1
c2VyIGRvZXNuJ3QgZGVmaW5lCisvLyBhIFByaW50VG8oKSBmb3IgaXQuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQz4KK3ZvaWQgRGVmYXVsdFByaW50VG8oSXNDb250YWluZXIgLyogZHVtbXkgKi8sCisg
ICAgICAgICAgICAgICAgICAgIGZhbHNlX3R5cGUgLyogaXMgbm90IGEgcG9pbnRlciAqLywKKyAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQyYgY29udGFpbmVyLCA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgY29uc3Qgc2l6ZV90IGtNYXhDb3VudCA9IDMyOyAgLy8gVGhlIG1heGltdW0gbnVtYmVy
IG9mIGVsZW1lbnRzIHRvIHByaW50LgorICAqb3MgPDwgJ3snOworICBzaXplX3QgY291bnQgPSAw
OworICBmb3IgKHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29udGFpbmVyLmJlZ2lu
KCk7CisgICAgICAgaXQgIT0gY29udGFpbmVyLmVuZCgpOyArK2l0LCArK2NvdW50KSB7CisgICAg
aWYgKGNvdW50ID4gMCkgeworICAgICAgKm9zIDw8ICcsJzsKKyAgICAgIGlmIChjb3VudCA9PSBr
TWF4Q291bnQpIHsgIC8vIEVub3VnaCBoYXMgYmVlbiBwcmludGVkLgorICAgICAgICAqb3MgPDwg
IiAuLi4iOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgKm9zIDw8ICcgJzsK
KyAgICAvLyBXZSBjYW5ub3QgY2FsbCBQcmludFRvKCppdCwgb3MpIGhlcmUgYXMgUHJpbnRUbygp
IGRvZXNuJ3QKKyAgICAvLyBoYW5kbGUgKml0IGJlaW5nIGEgbmF0aXZlIGFycmF5LgorICAgIGlu
dGVybmFsOjpVbml2ZXJzYWxQcmludCgqaXQsIG9zKTsKKyAgfQorCisgIGlmIChjb3VudCA+IDAp
IHsKKyAgICAqb3MgPDwgJyAnOworICB9CisgICpvcyA8PCAnfSc7Cit9CisKKy8vIFVzZWQgdG8g
cHJpbnQgYSBwb2ludGVyIHRoYXQgaXMgbmVpdGhlciBhIGNoYXIgcG9pbnRlciBub3IgYSBtZW1i
ZXIKKy8vIHBvaW50ZXIsIHdoZW4gdGhlIHVzZXIgZG9lc24ndCBkZWZpbmUgUHJpbnRUbygpIGZv
ciBpdC4gIChBIG1lbWJlcgorLy8gdmFyaWFibGUgcG9pbnRlciBvciBtZW1iZXIgZnVuY3Rpb24g
cG9pbnRlciBkb2Vzbid0IHJlYWxseSBwb2ludCB0bworLy8gYSBsb2NhdGlvbiBpbiB0aGUgYWRk
cmVzcyBzcGFjZS4gIFRoZWlyIHJlcHJlc2VudGF0aW9uIGlzCisvLyBpbXBsZW1lbnRhdGlvbi1k
ZWZpbmVkLiAgVGhlcmVmb3JlIHRoZXkgd2lsbCBiZSBwcmludGVkIGFzIHJhdworLy8gYnl0ZXMu
KQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIERlZmF1bHRQcmludFRvKElzTm90Q29udGFp
bmVyIC8qIGR1bW15ICovLAorICAgICAgICAgICAgICAgICAgICB0cnVlX3R5cGUgLyogaXMgYSBw
b2ludGVyICovLAorICAgICAgICAgICAgICAgICAgICBUKiBwLCA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgaWYgKHAgPT0gTlVMTCkgeworICAgICpvcyA8PCAiTlVMTCI7CisgIH0gZWxzZSB7Cisg
ICAgLy8gQysrIGRvZXNuJ3QgYWxsb3cgY2FzdGluZyBmcm9tIGEgZnVuY3Rpb24gcG9pbnRlciB0
byBhbnkgb2JqZWN0CisgICAgLy8gcG9pbnRlci4KKyAgICAvLworICAgIC8vIElzVHJ1ZSgpIHNp
bGVuY2VzIHdhcm5pbmdzOiAiQ29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlIiwKKyAgICAvLyAidW5y
ZWFjaGFibGUgY29kZSIuCisgICAgaWYgKElzVHJ1ZShJbXBsaWNpdGx5Q29udmVydGlibGU8VCos
IGNvbnN0IHZvaWQqPjo6dmFsdWUpKSB7CisgICAgICAvLyBUIGlzIG5vdCBhIGZ1bmN0aW9uIHR5
cGUuICBXZSBqdXN0IGNhbGwgPDwgdG8gcHJpbnQgcCwKKyAgICAgIC8vIHJlbHlpbmcgb24gQURM
IHRvIHBpY2sgdXAgdXNlci1kZWZpbmVkIDw8IGZvciB0aGVpciBwb2ludGVyCisgICAgICAvLyB0
eXBlcywgaWYgYW55LgorICAgICAgKm9zIDw8IHA7CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIFQg
aXMgYSBmdW5jdGlvbiB0eXBlLCBzbyAnKm9zIDw8IHAnIGRvZXNuJ3QgZG8gd2hhdCB3ZSB3YW50
CisgICAgICAvLyAoaXQganVzdCBwcmludHMgcCBhcyBib29sKS4gIFdlIHdhbnQgdG8gcHJpbnQg
cCBhcyBhIGNvbnN0CisgICAgICAvLyB2b2lkKi4gIEhvd2V2ZXIsIHdlIGNhbm5vdCBjYXN0IGl0
IHRvIGNvbnN0IHZvaWQqIGRpcmVjdGx5LAorICAgICAgLy8gZXZlbiB1c2luZyByZWludGVycHJl
dF9jYXN0LCBhcyBlYXJsaWVyIHZlcnNpb25zIG9mIGdjYworICAgICAgLy8gKGUuZy4gMy40LjUp
IGNhbm5vdCBjb21waWxlIHRoZSBjYXN0IHdoZW4gcCBpcyBhIGZ1bmN0aW9uCisgICAgICAvLyBw
b2ludGVyLiAgQ2FzdGluZyB0byBVSW50NjQgZmlyc3Qgc29sdmVzIHRoZSBwcm9ibGVtLgorICAg
ICAgKm9zIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KAorICAgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8aW50ZXJuYWw6OlVJbnQ2ND4ocCkpOworICAgIH0KKyAgfQorfQorCisvLyBV
c2VkIHRvIHByaW50IGEgbm9uLWNvbnRhaW5lciwgbm9uLXBvaW50ZXIgdmFsdWUgd2hlbiB0aGUg
dXNlcgorLy8gZG9lc24ndCBkZWZpbmUgUHJpbnRUbygpIGZvciBpdC4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgordm9pZCBEZWZhdWx0UHJpbnRUbyhJc05vdENvbnRhaW5lciAvKiBkdW1teSAqLywK
KyAgICAgICAgICAgICAgICAgICAgZmFsc2VfdHlwZSAvKiBpcyBub3QgYSBwb2ludGVyICovLAor
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7
CisgIDo6dGVzdGluZ19pbnRlcm5hbDo6RGVmYXVsdFByaW50Tm9uQ29udGFpbmVyVG8odmFsdWUs
IG9zKTsKK30KKworLy8gUHJpbnRzIHRoZSBnaXZlbiB2YWx1ZSB1c2luZyB0aGUgPDwgb3BlcmF0
b3IgaWYgaXQgaGFzIG9uZTsKKy8vIG90aGVyd2lzZSBwcmludHMgdGhlIGJ5dGVzIGluIGl0LiAg
VGhpcyBpcyB3aGF0CisvLyBVbml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCgpIGRvZXMgd2hlbiBQ
cmludFRvKCkgaXMgbm90IHNwZWNpYWxpemVkCisvLyBvciBvdmVybG9hZGVkIGZvciB0eXBlIFQu
CisvLworLy8gQSB1c2VyIGNhbiBvdmVycmlkZSB0aGlzIGJlaGF2aW9yIGZvciBhIGNsYXNzIHR5
cGUgRm9vIGJ5IGRlZmluaW5nCisvLyBhbiBvdmVybG9hZCBvZiBQcmludFRvKCkgaW4gdGhlIG5h
bWVzcGFjZSB3aGVyZSBGb28gaXMgZGVmaW5lZC4gIFdlCisvLyBnaXZlIHRoZSB1c2VyIHRoaXMg
b3B0aW9uIGFzIHNvbWV0aW1lcyBkZWZpbmluZyBhIDw8IG9wZXJhdG9yIGZvcgorLy8gRm9vIGlz
IG5vdCBkZXNpcmFibGUgKGUuZy4gdGhlIGNvZGluZyBzdHlsZSBtYXkgcHJldmVudCBkb2luZyBp
dCwKKy8vIG9yIHRoZXJlIGlzIGFscmVhZHkgYSA8PCBvcGVyYXRvciBidXQgaXQgZG9lc24ndCBk
byB3aGF0IHRoZSB1c2VyCisvLyB3YW50cykuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQg
UHJpbnRUbyhjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIC8vIERlZmF1
bHRQcmludFRvKCkgaXMgb3ZlcmxvYWRlZC4gIFRoZSB0eXBlIG9mIGl0cyBmaXJzdCB0d28KKyAg
Ly8gYXJndW1lbnRzIGRldGVybWluZSB3aGljaCB2ZXJzaW9uIHdpbGwgYmUgcGlja2VkLiAgSWYg
VCBpcyBhbgorICAvLyBTVEwtc3R5bGUgY29udGFpbmVyLCB0aGUgdmVyc2lvbiBmb3IgY29udGFp
bmVyIHdpbGwgYmUgY2FsbGVkOyBpZgorICAvLyBUIGlzIGEgcG9pbnRlciwgdGhlIHBvaW50ZXIg
dmVyc2lvbiB3aWxsIGJlIGNhbGxlZDsgb3RoZXJ3aXNlIHRoZQorICAvLyBnZW5lcmljIHZlcnNp
b24gd2lsbCBiZSBjYWxsZWQuCisgIC8vCisgIC8vIE5vdGUgdGhhdCB3ZSBjaGVjayBmb3IgY29u
dGFpbmVyIHR5cGVzIGhlcmUsIHByaW9yIHRvIHdlIGNoZWNrCisgIC8vIGZvciBwcm90b2NvbCBt
ZXNzYWdlIHR5cGVzIGluIG91ciBvcGVyYXRvcjw8LiAgVGhlIHJhdGlvbmFsZSBpczoKKyAgLy8K
KyAgLy8gRm9yIHByb3RvY29sIG1lc3NhZ2VzLCB3ZSB3YW50IHRvIGdpdmUgcGVvcGxlIGEgY2hh
bmNlIHRvCisgIC8vIG92ZXJyaWRlIEdvb2dsZSBNb2NrJ3MgZm9ybWF0IGJ5IGRlZmluaW5nIGEg
UHJpbnRUbygpIG9yCisgIC8vIG9wZXJhdG9yPDwuICBGb3IgU1RMIGNvbnRhaW5lcnMsIG90aGVy
IGZvcm1hdHMgY2FuIGJlCisgIC8vIGluY29tcGF0aWJsZSB3aXRoIEdvb2dsZSBNb2NrJ3MgZm9y
bWF0IGZvciB0aGUgY29udGFpbmVyCisgIC8vIGVsZW1lbnRzOyB0aGVyZWZvcmUgd2UgY2hlY2sg
Zm9yIGNvbnRhaW5lciB0eXBlcyBoZXJlIHRvIGVuc3VyZQorICAvLyB0aGF0IG91ciBmb3JtYXQg
aXMgdXNlZC4KKyAgLy8KKyAgLy8gVGhlIHNlY29uZCBhcmd1bWVudCBvZiBEZWZhdWx0UHJpbnRU
bygpIGlzIG5lZWRlZCB0byBieXBhc3MgYSBidWcKKyAgLy8gaW4gU3ltYmlhbidzIEMrKyBjb21w
aWxlciB0aGF0IHByZXZlbnRzIGl0IGZyb20gcGlja2luZyB0aGUgcmlnaHQKKyAgLy8gb3Zlcmxv
YWQgYmV0d2VlbjoKKyAgLy8KKyAgLy8gICBQcmludFRvKGNvbnN0IFQmIHgsIC4uLik7CisgIC8v
ICAgUHJpbnRUbyhUKiB4LCAuLi4pOworICBEZWZhdWx0UHJpbnRUbyhJc0NvbnRhaW5lclRlc3Q8
VD4oMCksIGlzX3BvaW50ZXI8VD4oKSwgdmFsdWUsIG9zKTsKK30KKworLy8gVGhlIGZvbGxvd2lu
ZyBsaXN0IG9mIFByaW50VG8oKSBvdmVybG9hZHMgdGVsbHMKKy8vIFVuaXZlcnNhbFByaW50ZXI8
VD46OlByaW50KCkgaG93IHRvIHByaW50IHN0YW5kYXJkIHR5cGVzIChidWlsdC1pbgorLy8gdHlw
ZXMsIHN0cmluZ3MsIHBsYWluIGFycmF5cywgYW5kIHBvaW50ZXJzKS4KKworLy8gT3ZlcmxvYWRz
IGZvciB2YXJpb3VzIGNoYXIgdHlwZXMuCitHVEVTVF9BUElfIHZvaWQgUHJpbnRUbyh1bnNpZ25l
ZCBjaGFyIGMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7CitHVEVTVF9BUElfIHZvaWQgUHJpbnRUbyhz
aWduZWQgY2hhciBjLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhj
aGFyIGMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAvLyBXaGVuIHByaW50aW5nIGEgcGxhaW4g
Y2hhciwgd2UgYWx3YXlzIHRyZWF0IGl0IGFzIHVuc2lnbmVkLiAgVGhpcworICAvLyB3YXksIHRo
ZSBvdXRwdXQgd29uJ3QgYmUgYWZmZWN0ZWQgYnkgd2hldGhlciB0aGUgY29tcGlsZXIgdGhpbmtz
CisgIC8vIGNoYXIgaXMgc2lnbmVkIG9yIG5vdC4KKyAgUHJpbnRUbyhzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyPihjKSwgb3MpOworfQorCisvLyBPdmVybG9hZHMgZm9yIG90aGVyIHNpbXBsZSBi
dWlsdC1pbiB0eXBlcy4KK2lubGluZSB2b2lkIFByaW50VG8oYm9vbCB4LCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgKm9zIDw8ICh4ID8gInRydWUiIDogImZhbHNlIik7Cit9CisKKy8vIE92ZXJs
b2FkIGZvciB3Y2hhcl90IHR5cGUuCisvLyBQcmludHMgYSB3Y2hhcl90IGFzIGEgc3ltYm9sIGlm
IGl0IGlzIHByaW50YWJsZSBvciBhcyBpdHMgaW50ZXJuYWwKKy8vIGNvZGUgb3RoZXJ3aXNlIGFu
ZCBhbHNvIGFzIGl0cyBkZWNpbWFsIGNvZGUgKGV4Y2VwdCBmb3IgTCdcMCcpLgorLy8gVGhlIEwn
XDAnIGNoYXIgaXMgcHJpbnRlZCBhcyAiTCdcXDAnIi4gVGhlIGRlY2ltYWwgY29kZSBpcyBwcmlu
dGVkCisvLyBhcyBzaWduZWQgaW50ZWdlciB3aGVuIHdjaGFyX3QgaXMgaW1wbGVtZW50ZWQgYnkg
dGhlIGNvbXBpbGVyCisvLyBhcyBhIHNpZ25lZCB0eXBlIGFuZCBpcyBwcmludGVkIGFzIGFuIHVu
c2lnbmVkIGludGVnZXIgd2hlbiB3Y2hhcl90CisvLyBpcyBpbXBsZW1lbnRlZCBhcyBhbiB1bnNp
Z25lZCB0eXBlLgorR1RFU1RfQVBJXyB2b2lkIFByaW50VG8od2NoYXJfdCB3YywgOjpzdGQ6Om9z
dHJlYW0qIG9zKTsKKworLy8gT3ZlcmxvYWRzIGZvciBDIHN0cmluZ3MuCitHVEVTVF9BUElfIHZv
aWQgUHJpbnRUbyhjb25zdCBjaGFyKiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZv
aWQgUHJpbnRUbyhjaGFyKiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUbyhJbXBs
aWNpdENhc3RfPGNvbnN0IGNoYXIqPihzKSwgb3MpOworfQorCisvLyBzaWduZWQvdW5zaWduZWQg
Y2hhciBpcyBvZnRlbiB1c2VkIGZvciByZXByZXNlbnRpbmcgYmluYXJ5IGRhdGEsIHNvCisvLyB3
ZSBwcmludCBwb2ludGVycyB0byBpdCBhcyB2b2lkKiB0byBiZSBzYWZlLgoraW5saW5lIHZvaWQg
UHJpbnRUbyhjb25zdCBzaWduZWQgY2hhciogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFBy
aW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocyksIG9zKTsKK30KK2lubGluZSB2b2lk
IFByaW50VG8oc2lnbmVkIGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFRv
KEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMpLCBvcyk7Cit9CitpbmxpbmUgdm9pZCBQcmlu
dFRvKGNvbnN0IHVuc2lnbmVkIGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmlu
dFRvKEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMpLCBvcyk7Cit9CitpbmxpbmUgdm9pZCBQ
cmludFRvKHVuc2lnbmVkIGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFRv
KEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMpLCBvcyk7Cit9CisKKy8vIE1TVkMgY2FuIGJl
IGNvbmZpZ3VyZWQgdG8gZGVmaW5lIHdjaGFyX3QgYXMgYSB0eXBlZGVmIG9mIHVuc2lnbmVkCisv
LyBzaG9ydC4gIEl0IGRlZmluZXMgX05BVElWRV9XQ0hBUl9UX0RFRklORUQgd2hlbiB3Y2hhcl90
IGlzIGEgbmF0aXZlCisvLyB0eXBlLiAgV2hlbiB3Y2hhcl90IGlzIGEgdHlwZWRlZiwgZGVmaW5p
bmcgYW4gb3ZlcmxvYWQgZm9yIGNvbnN0CisvLyB3Y2hhcl90KiB3b3VsZCBjYXVzZSB1bnNpZ25l
ZCBzaG9ydCogYmUgcHJpbnRlZCBhcyBhIHdpZGUgc3RyaW5nLAorLy8gcG9zc2libHkgY2F1c2lu
ZyBpbnZhbGlkIG1lbW9yeSBhY2Nlc3Nlcy4KKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVm
aW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkKKy8vIE92ZXJsb2FkcyBmb3Igd2lkZSBDIHN0
cmluZ3MKK0dURVNUX0FQSV8gdm9pZCBQcmludFRvKGNvbnN0IHdjaGFyX3QqIHMsIDo6c3RkOjpv
c3RyZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRvKHdjaGFyX3QqIHMsIDo6c3RkOjpvc3Ry
ZWFtKiBvcykgeworICBQcmludFRvKEltcGxpY2l0Q2FzdF88Y29uc3Qgd2NoYXJfdCo+KHMpLCBv
cyk7Cit9CisjZW5kaWYKKworLy8gT3ZlcmxvYWQgZm9yIEMgYXJyYXlzLiAgTXVsdGktZGltZW5z
aW9uYWwgYXJyYXlzIGFyZSBwcmludGVkCisvLyBwcm9wZXJseS4KKworLy8gUHJpbnRzIHRoZSBn
aXZlbiBudW1iZXIgb2YgZWxlbWVudHMgaW4gYW4gYXJyYXksIHdpdGhvdXQgcHJpbnRpbmcKKy8v
IHRoZSBjdXJseSBicmFjZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgUHJpbnRSYXdB
cnJheVRvKGNvbnN0IFQgYVtdLCBzaXplX3QgY291bnQsIDo6c3RkOjpvc3RyZWFtKiBvcykgewor
ICBVbml2ZXJzYWxQcmludChhWzBdLCBvcyk7CisgIGZvciAoc2l6ZV90IGkgPSAxOyBpICE9IGNv
dW50OyBpKyspIHsKKyAgICAqb3MgPDwgIiwgIjsKKyAgICBVbml2ZXJzYWxQcmludChhW2ldLCBv
cyk7CisgIH0KK30KKworLy8gT3ZlcmxvYWRzIGZvciA6OnN0cmluZyBhbmQgOjpzdGQ6OnN0cmlu
Zy4KKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworR1RFU1RfQVBJXyB2b2lkIFByaW50U3Ry
aW5nVG8oY29uc3QgOjpzdHJpbmcmcywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKK2lubGluZSB2b2lk
IFByaW50VG8oY29uc3QgOjpzdHJpbmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmlu
dFN0cmluZ1RvKHMsIG9zKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcK
KworR1RFU1RfQVBJXyB2b2lkIFByaW50U3RyaW5nVG8oY29uc3QgOjpzdGQ6OnN0cmluZyZzLCA6
OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6c3Ry
aW5nJiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRTdHJpbmdUbyhzLCBvcyk7Cit9
CisKKy8vIE92ZXJsb2FkcyBmb3IgOjp3c3RyaW5nIGFuZCA6OnN0ZDo6d3N0cmluZy4KKyNpZiBH
VEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKK0dURVNUX0FQSV8gdm9pZCBQcmludFdpZGVTdHJpbmdU
byhjb25zdCA6OndzdHJpbmcmcywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKK2lubGluZSB2b2lkIFBy
aW50VG8oY29uc3QgOjp3c3RyaW5nJiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRX
aWRlU3RyaW5nVG8ocywgb3MpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJ
TkcKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORworR1RFU1RfQVBJXyB2b2lkIFByaW50V2lk
ZVN0cmluZ1RvKGNvbnN0IDo6c3RkOjp3c3RyaW5nJnMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7Citp
bmxpbmUgdm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp3c3RyaW5nJiBzLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgUHJpbnRXaWRlU3RyaW5nVG8ocywgb3MpOworfQorI2VuZGlmICAvLyBHVEVT
VF9IQVNfU1REX1dTVFJJTkcKKworI2lmIEdURVNUX0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFT
X1NURF9UVVBMRV8KKy8vIEhlbHBlciBmdW5jdGlvbiBmb3IgcHJpbnRpbmcgYSB0dXBsZS4gIFQg
bXVzdCBiZSBpbnN0YW50aWF0ZWQgd2l0aAorLy8gYSB0dXBsZSB0eXBlLgordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Cit2b2lkIFByaW50VHVwbGVUbyhjb25zdCBUJiB0LCA6OnN0ZDo6b3N0cmVhbSog
b3MpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfVFIxX1RVUExFIHx8IEdURVNUX0hBU19TVERfVFVQ
TEVfCisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCisvLyBPdmVybG9hZCBmb3IgOjpzdGQ6OnRy
MTo6dHVwbGUuICBOZWVkZWQgZm9yIHByaW50aW5nIGZ1bmN0aW9uIGFyZ3VtZW50cywKKy8vIHdo
aWNoIGFyZSBwYWNrZWQgYXMgdHVwbGVzLgorCisvLyBPdmVybG9hZGVkIFByaW50VG8oKSBmb3Ig
dHVwbGVzIG9mIHZhcmlvdXMgYXJpdGllcy4gIFdlIHN1cHBvcnQKKy8vIHR1cGxlcyBvZiB1cC10
byAxMCBmaWVsZHMuICBUaGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIHdvcmtzCisvLyByZWdh
cmRsZXNzIG9mIHdoZXRoZXIgdHIxOjp0dXBsZSBpcyBpbXBsZW1lbnRlZCB1c2luZyB0aGUKKy8v
IG5vbi1zdGFuZGFyZCB2YXJpYWRpYyB0ZW1wbGF0ZSBmZWF0dXJlIG9yIG5vdC4KKworaW5saW5l
IHZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTw+JiB0LCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQxPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxPiYgdCwgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6
dHVwbGU8VDEsIFQyPiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0
LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDM+JiB0
LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0
Pgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiYg
dCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
NCwgdHlwZW5hbWUgVDU+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEs
IFQyLCBUMywgVDQsIFQ1PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsK
KyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAg
ICB0eXBlbmFtZSBUNj4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAg
ICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6
OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+JiB0LAorICAgICAgICAgICAg
IDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFR1cGxlVG8odCwgb3MpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQs
IHR5cGVuYW1lIFQ1LAorICAgICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5h
bWUgVDg+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwgVDcsIFQ4PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAg
ICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOT4K
K3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDgsIFQ5PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsK
KyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAg
ICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlw
ZW5hbWUgVDEwPgordm9pZCBQcmludFRvKAorICAgIGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD4mIHQsCisgICAgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNU
X0hBU19UUjFfVFVQTEUKKworI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUuLi4gVHlwZXM+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnR1cGxlPFR5cGVzLi4u
PiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9Cisj
ZW5kaWYgIC8vIEdURVNUX0hBU19TVERfVFVQTEVfCisKKy8vIE92ZXJsb2FkIGZvciBzdGQ6OnBh
aXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgordm9pZCBQcmludFRvKGNv
bnN0IDo6c3RkOjpwYWlyPFQxLCBUMj4mIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAg
Km9zIDw8ICcoJzsKKyAgLy8gV2UgY2Fubm90IHVzZSBVbml2ZXJzYWxQcmludCh2YWx1ZS5maXJz
dCwgb3MpIGhlcmUsIGFzIFQxIG1heSBiZQorICAvLyBhIHJlZmVyZW5jZSB0eXBlLiAgVGhlIHNh
bWUgZm9yIHByaW50aW5nIHZhbHVlLnNlY29uZC4KKyAgVW5pdmVyc2FsUHJpbnRlcjxUMT46OlBy
aW50KHZhbHVlLmZpcnN0LCBvcyk7CisgICpvcyA8PCAiLCAiOworICBVbml2ZXJzYWxQcmludGVy
PFQyPjo6UHJpbnQodmFsdWUuc2Vjb25kLCBvcyk7CisgICpvcyA8PCAnKSc7Cit9CisKKy8vIElt
cGxlbWVudHMgcHJpbnRpbmcgYSBub24tcmVmZXJlbmNlIHR5cGUgVCBieSBsZXR0aW5nIHRoZSBj
b21waWxlcgorLy8gcGljayB0aGUgcmlnaHQgb3ZlcmxvYWQgb2YgUHJpbnRUbygpIGZvciBULgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbml2ZXJzYWxQcmludGVyIHsKKyBwdWJsaWM6
CisgIC8vIE1TVkMgd2FybnMgYWJvdXQgYWRkaW5nIGNvbnN0IHRvIGEgZnVuY3Rpb24gdHlwZSwg
c28gd2Ugd2FudCB0bworICAvLyBkaXNhYmxlIHRoZSB3YXJuaW5nLgorICBHVEVTVF9ESVNBQkxF
X01TQ19XQVJOSU5HU19QVVNIXyg0MTgwKQorCisgIC8vIE5vdGU6IHdlIGRlbGliZXJhdGVseSBk
b24ndCBjYWxsIHRoaXMgUHJpbnRUbygpLCBhcyB0aGF0IG5hbWUKKyAgLy8gY29uZmxpY3RzIHdp
dGggOjp0ZXN0aW5nOjppbnRlcm5hbDo6UHJpbnRUbyBpbiB0aGUgYm9keSBvZiB0aGUKKyAgLy8g
ZnVuY3Rpb24uCisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0
cmVhbSogb3MpIHsKKyAgICAvLyBCeSBkZWZhdWx0LCA6OnRlc3Rpbmc6OmludGVybmFsOjpQcmlu
dFRvKCkgaXMgdXNlZCBmb3IgcHJpbnRpbmcKKyAgICAvLyB0aGUgdmFsdWUuCisgICAgLy8KKyAg
ICAvLyBUaGFua3MgdG8gS29lbmlnIGxvb2stdXAsIGlmIFQgaXMgYSBjbGFzcyBhbmQgaGFzIGl0
cyBvd24KKyAgICAvLyBQcmludFRvKCkgZnVuY3Rpb24gZGVmaW5lZCBpbiBpdHMgbmFtZXNwYWNl
LCB0aGF0IGZ1bmN0aW9uIHdpbGwKKyAgICAvLyBiZSB2aXNpYmxlIGhlcmUuICBTaW5jZSBpdCBp
cyBtb3JlIHNwZWNpZmljIHRoYW4gdGhlIGdlbmVyaWMgb25lcworICAgIC8vIGluIDo6dGVzdGlu
Zzo6aW50ZXJuYWwsIGl0IHdpbGwgYmUgcGlja2VkIGJ5IHRoZSBjb21waWxlciBpbiB0aGUKKyAg
ICAvLyBmb2xsb3dpbmcgc3RhdGVtZW50IC0gZXhhY3RseSB3aGF0IHdlIHdhbnQuCisgICAgUHJp
bnRUbyh2YWx1ZSwgb3MpOworICB9CisKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9Q
XygpCit9OworCisvLyBVbml2ZXJzYWxQcmludEFycmF5KGJlZ2luLCBsZW4sIG9zKSBwcmludHMg
YW4gYXJyYXkgb2YgJ2xlbicKKy8vIGVsZW1lbnRzLCBzdGFydGluZyBhdCBhZGRyZXNzICdiZWdp
bicuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVW5pdmVyc2FsUHJpbnRBcnJheShjb25z
dCBUKiBiZWdpbiwgc2l6ZV90IGxlbiwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIGlmIChsZW4g
PT0gMCkgeworICAgICpvcyA8PCAie30iOworICB9IGVsc2UgeworICAgICpvcyA8PCAieyAiOwor
ICAgIGNvbnN0IHNpemVfdCBrVGhyZXNob2xkID0gMTg7CisgICAgY29uc3Qgc2l6ZV90IGtDaHVu
a1NpemUgPSA4OworICAgIC8vIElmIHRoZSBhcnJheSBoYXMgbW9yZSB0aGFuIGtUaHJlc2hvbGQg
ZWxlbWVudHMsIHdlJ2xsIGhhdmUgdG8KKyAgICAvLyBvbWl0IHNvbWUgZGV0YWlscyBieSBwcmlu
dGluZyBvbmx5IHRoZSBmaXJzdCBhbmQgdGhlIGxhc3QKKyAgICAvLyBrQ2h1bmtTaXplIGVsZW1l
bnRzLgorICAgIC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBsZXQgdGhlIHVzZXIgY29udHJvbCB0
aGUgdGhyZXNob2xkIHVzaW5nIGEgZmxhZy4KKyAgICBpZiAobGVuIDw9IGtUaHJlc2hvbGQpIHsK
KyAgICAgIFByaW50UmF3QXJyYXlUbyhiZWdpbiwgbGVuLCBvcyk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIFByaW50UmF3QXJyYXlUbyhiZWdpbiwga0NodW5rU2l6ZSwgb3MpOworICAgICAgKm9zIDw8
ICIsIC4uLiwgIjsKKyAgICAgIFByaW50UmF3QXJyYXlUbyhiZWdpbiArIGxlbiAtIGtDaHVua1Np
emUsIGtDaHVua1NpemUsIG9zKTsKKyAgICB9CisgICAgKm9zIDw8ICIgfSI7CisgIH0KK30KKy8v
IFRoaXMgb3ZlcmxvYWQgcHJpbnRzIGEgKGNvbnN0KSBjaGFyIGFycmF5IGNvbXBhY3RseS4KK0dU
RVNUX0FQSV8gdm9pZCBVbml2ZXJzYWxQcmludEFycmF5KAorICAgIGNvbnN0IGNoYXIqIGJlZ2lu
LCBzaXplX3QgbGVuLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworCisvLyBUaGlzIG92ZXJsb2FkIHBy
aW50cyBhIChjb25zdCkgd2NoYXJfdCBhcnJheSBjb21wYWN0bHkuCitHVEVTVF9BUElfIHZvaWQg
VW5pdmVyc2FsUHJpbnRBcnJheSgKKyAgICBjb25zdCB3Y2hhcl90KiBiZWdpbiwgc2l6ZV90IGxl
biwgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKKworLy8gSW1wbGVtZW50cyBwcmludGluZyBhbiBhcnJh
eSB0eXBlIFRbTl0uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitjbGFzcyBVbml2
ZXJzYWxQcmludGVyPFRbTl0+IHsKKyBwdWJsaWM6CisgIC8vIFByaW50cyB0aGUgZ2l2ZW4gYXJy
YXksIG9taXR0aW5nIHNvbWUgZWxlbWVudHMgd2hlbiB0aGVyZSBhcmUgdG9vCisgIC8vIG1hbnku
CisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQgKCZhKVtOXSwgOjpzdGQ6Om9zdHJlYW0qIG9z
KSB7CisgICAgVW5pdmVyc2FsUHJpbnRBcnJheShhLCBOLCBvcyk7CisgIH0KK307CisKKy8vIElt
cGxlbWVudHMgcHJpbnRpbmcgYSByZWZlcmVuY2UgdHlwZSBUJi4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgVW5pdmVyc2FsUHJpbnRlcjxUJj4geworIHB1YmxpYzoKKyAgLy8gTVNWQyB3
YXJucyBhYm91dCBhZGRpbmcgY29uc3QgdG8gYSBmdW5jdGlvbiB0eXBlLCBzbyB3ZSB3YW50IHRv
CisgIC8vIGRpc2FibGUgdGhlIHdhcm5pbmcuCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdT
X1BVU0hfKDQxODApCisKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgeworICAgIC8vIFByaW50cyB0aGUgYWRkcmVzcyBvZiB0aGUgdmFsdWUu
ICBXZSB1c2UgcmVpbnRlcnByZXRfY2FzdCBoZXJlCisgICAgLy8gYXMgc3RhdGljX2Nhc3QgZG9l
c24ndCBjb21waWxlIHdoZW4gVCBpcyBhIGZ1bmN0aW9uIHR5cGUuCisgICAgKm9zIDw8ICJAIiA8
PCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigmdmFsdWUpIDw8ICIgIjsKKworICAgIC8v
IFRoZW4gcHJpbnRzIHRoZSB2YWx1ZSBpdHNlbGYuCisgICAgVW5pdmVyc2FsUHJpbnQodmFsdWUs
IG9zKTsKKyAgfQorCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQorfTsKKwor
Ly8gUHJpbnRzIGEgdmFsdWUgdGVyc2VseTogZm9yIGEgcmVmZXJlbmNlIHR5cGUsIHRoZSByZWZl
cmVuY2VkIHZhbHVlCisvLyAoYnV0IG5vdCB0aGUgYWRkcmVzcykgaXMgcHJpbnRlZDsgZm9yIGEg
KGNvbnN0KSBjaGFyIHBvaW50ZXIsIHRoZQorLy8gTlVMLXRlcm1pbmF0ZWQgc3RyaW5nIChidXQg
bm90IHRoZSBwb2ludGVyKSBpcyBwcmludGVkLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlciB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBQcmlu
dChjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVW5pdmVyc2FsUHJp
bnQodmFsdWUsIG9zKTsKKyAgfQorfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVW5p
dmVyc2FsVGVyc2VQcmludGVyPFQmPiB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBQcmludChj
b25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVW5pdmVyc2FsUHJpbnQo
dmFsdWUsIG9zKTsKKyAgfQorfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KK2Ns
YXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxUW05dPiB7CisgcHVibGljOgorICBzdGF0aWMgdm9p
ZCBQcmludChjb25zdCBUICgmdmFsdWUpW05dLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBV
bml2ZXJzYWxQcmludGVyPFRbTl0+OjpQcmludCh2YWx1ZSwgb3MpOworICB9Cit9OwordGVtcGxh
dGUgPD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjb25zdCBjaGFyKj4geworIHB1Ymxp
YzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgY2hhciogc3RyLCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICpvcyA8PCAiTlVMTCI7CisgICAg
fSBlbHNlIHsKKyAgICAgIFVuaXZlcnNhbFByaW50KHN0cmluZyhzdHIpLCBvcyk7CisgICAgfQor
ICB9Cit9OwordGVtcGxhdGUgPD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjaGFyKj4g
eworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY2hhciogc3RyLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgICBVbml2ZXJzYWxUZXJzZVByaW50ZXI8Y29uc3QgY2hhcio+OjpQcmludChz
dHIsIG9zKTsKKyAgfQorfTsKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORwordGVtcGxhdGUg
PD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjb25zdCB3Y2hhcl90Kj4geworIHB1Ymxp
YzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3Qgd2NoYXJfdCogc3RyLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICpvcyA8PCAiTlVMTCI7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIFVuaXZlcnNhbFByaW50KDo6c3RkOjp3c3RyaW5nKHN0ciksIG9z
KTsKKyAgICB9CisgIH0KK307CisjZW5kaWYKKwordGVtcGxhdGUgPD4KK2NsYXNzIFVuaXZlcnNh
bFRlcnNlUHJpbnRlcjx3Y2hhcl90Kj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQo
d2NoYXJfdCogc3RyLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBVbml2ZXJzYWxUZXJzZVBy
aW50ZXI8Y29uc3Qgd2NoYXJfdCo+OjpQcmludChzdHIsIG9zKTsKKyAgfQorfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFRlcnNlUHJpbnQoY29uc3QgVCYgdmFsdWUs
IDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBVbml2ZXJzYWxUZXJzZVByaW50ZXI8VD46OlByaW50
KHZhbHVlLCBvcyk7Cit9CisKKy8vIFByaW50cyBhIHZhbHVlIHVzaW5nIHRoZSB0eXBlIGluZmVy
cmVkIGJ5IHRoZSBjb21waWxlci4gIFRoZQorLy8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5k
IFVuaXZlcnNhbFRlcnNlUHJpbnQoKSBpcyB0aGF0IGZvciBhCisvLyAoY29uc3QpIGNoYXIgcG9p
bnRlciwgdGhpcyBwcmludHMgYm90aCB0aGUgcG9pbnRlciBhbmQgdGhlCisvLyBOVUwtdGVybWlu
YXRlZCBzdHJpbmcuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVW5pdmVyc2FsUHJpbnQo
Y29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAvLyBBIHdvcmthcm9uZCBm
b3IgdGhlIGJ1ZyBpbiBWQysrIDcuMSB0aGF0IHByZXZlbnRzIHVzIGZyb20gaW5zdGFudGlhdGlu
ZworICAvLyBVbml2ZXJzYWxQcmludGVyIHdpdGggVCBkaXJlY3RseS4KKyAgdHlwZWRlZiBUIFQx
OworICBVbml2ZXJzYWxQcmludGVyPFQxPjo6UHJpbnQodmFsdWUsIG9zKTsKK30KKwordHlwZWRl
ZiA6OnN0ZDo6dmVjdG9yPHN0cmluZz4gU3RyaW5nczsKKworLy8gVHVwbGVQb2xpY3k8VHVwbGVU
PiBtdXN0IHByb3ZpZGU6CisvLyAtIHR1cGxlX3NpemUKKy8vICAgICBzaXplIG9mIHR1cGxlIFR1
cGxlVC4KKy8vIC0gZ2V0PHNpemVfdCBJPihjb25zdCBUdXBsZVQmIHQpCisvLyAgICAgc3RhdGlj
IGZ1bmN0aW9uIGV4dHJhY3RpbmcgZWxlbWVudCBJIG9mIHR1cGxlIFR1cGxlVC4KKy8vIC0gdHVw
bGVfZWxlbWVudDxzaXplX3QgST46OnR5cGUKKy8vICAgICB0eXBlIG9mIGVsZW1lbnQgSSBvZiB0
dXBsZSBUdXBsZVQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGVUPgorc3RydWN0IFR1cGxlUG9s
aWN5OworCisjaWYgR1RFU1RfSEFTX1RSMV9UVVBMRQordGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxl
VD4KK3N0cnVjdCBUdXBsZVBvbGljeSB7CisgIHR5cGVkZWYgVHVwbGVUIFR1cGxlOworICBzdGF0
aWMgY29uc3Qgc2l6ZV90IHR1cGxlX3NpemUgPSA6OnN0ZDo6dHIxOjp0dXBsZV9zaXplPFR1cGxl
Pjo6dmFsdWU7CisKKyAgdGVtcGxhdGUgPHNpemVfdCBJPgorICBzdHJ1Y3QgdHVwbGVfZWxlbWVu
dCA6IDo6c3RkOjp0cjE6OnR1cGxlX2VsZW1lbnQ8SSwgVHVwbGU+IHt9OworCisgIHRlbXBsYXRl
IDxzaXplX3QgST4KKyAgc3RhdGljIHR5cGVuYW1lIEFkZFJlZmVyZW5jZTwKKyAgICAgIGNvbnN0
IHR5cGVuYW1lIDo6c3RkOjp0cjE6OnR1cGxlX2VsZW1lbnQ8SSwgVHVwbGU+Ojp0eXBlPjo6dHlw
ZSBnZXQoCisgICAgICBjb25zdCBUdXBsZSYgdHVwbGUpIHsKKyAgICByZXR1cm4gOjpzdGQ6OnRy
MTo6Z2V0PEk+KHR1cGxlKTsKKyAgfQorfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZVQ+Citj
b25zdCBzaXplX3QgVHVwbGVQb2xpY3k8VHVwbGVUPjo6dHVwbGVfc2l6ZTsKKyNlbmRpZiAgLy8g
R1RFU1RfSEFTX1RSMV9UVVBMRQorCisjaWYgR1RFU1RfSEFTX1NURF9UVVBMRV8KK3RlbXBsYXRl
IDx0eXBlbmFtZS4uLiBUeXBlcz4KK3N0cnVjdCBUdXBsZVBvbGljeTwgOjpzdGQ6OnR1cGxlPFR5
cGVzLi4uPiA+IHsKKyAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8VHlwZXMuLi4+IFR1cGxlOworICBz
dGF0aWMgY29uc3Qgc2l6ZV90IHR1cGxlX3NpemUgPSA6OnN0ZDo6dHVwbGVfc2l6ZTxUdXBsZT46
OnZhbHVlOworCisgIHRlbXBsYXRlIDxzaXplX3QgST4KKyAgc3RydWN0IHR1cGxlX2VsZW1lbnQg
OiA6OnN0ZDo6dHVwbGVfZWxlbWVudDxJLCBUdXBsZT4ge307CisKKyAgdGVtcGxhdGUgPHNpemVf
dCBJPgorICBzdGF0aWMgY29uc3QgdHlwZW5hbWUgOjpzdGQ6OnR1cGxlX2VsZW1lbnQ8SSwgVHVw
bGU+Ojp0eXBlJiBnZXQoCisgICAgICBjb25zdCBUdXBsZSYgdHVwbGUpIHsKKyAgICByZXR1cm4g
OjpzdGQ6OmdldDxJPih0dXBsZSk7CisgIH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHlw
ZXM+Citjb25zdCBzaXplX3QgVHVwbGVQb2xpY3k8IDo6c3RkOjp0dXBsZTxUeXBlcy4uLj4gPjo6
dHVwbGVfc2l6ZTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9UVVBMRV8KKworI2lmIEdURVNU
X0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8KKy8vIFRoaXMgaGVscGVyIHRl
bXBsYXRlIGFsbG93cyBQcmludFRvKCkgZm9yIHR1cGxlcyBhbmQKKy8vIFVuaXZlcnNhbFRlcnNl
UHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygpIHRvIGJlIGRlZmluZWQgYnkKKy8vIGluZHVjdGlv
biBvbiB0aGUgbnVtYmVyIG9mIHR1cGxlIGZpZWxkcy4gIFRoZSBpZGVhIGlzIHRoYXQKKy8vIFR1
cGxlUHJlZml4UHJpbnRlcjxOPjo6UHJpbnRQcmVmaXhUbyh0LCBvcykgcHJpbnRzIHRoZSBmaXJz
dCBOCisvLyBmaWVsZHMgaW4gdHVwbGUgdCwgYW5kIGNhbiBiZSBkZWZpbmVkIGluIHRlcm1zIG9m
CisvLyBUdXBsZVByZWZpeFByaW50ZXI8TiAtIDE+LgorLy8KKy8vIFRoZSBpbmR1Y3RpdmUgY2Fz
ZS4KK3RlbXBsYXRlIDxzaXplX3QgTj4KK3N0cnVjdCBUdXBsZVByZWZpeFByaW50ZXIgeworICAv
LyBQcmludHMgdGhlIGZpcnN0IE4gZmllbGRzIG9mIGEgdHVwbGUuCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUdXBsZT4KKyAgc3RhdGljIHZvaWQgUHJpbnRQcmVmaXhUbyhjb25zdCBUdXBsZSYgdCwg
OjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVHVwbGVQcmVmaXhQcmludGVyPE4gLSAxPjo6UHJp
bnRQcmVmaXhUbyh0LCBvcyk7CisgICAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QVVNI
XygpCisgICAgaWYgKE4gPiAxKSB7CisgICAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9Q
T1BfKCkKKyAgICAgICpvcyA8PCAiLCAiOworICAgIH0KKyAgICBVbml2ZXJzYWxQcmludGVyPAor
ICAgICAgICB0eXBlbmFtZSBUdXBsZVBvbGljeTxUdXBsZT46OnRlbXBsYXRlIHR1cGxlX2VsZW1l
bnQ8TiAtIDE+Ojp0eXBlPgorICAgICAgICA6OlByaW50KFR1cGxlUG9saWN5PFR1cGxlPjo6dGVt
cGxhdGUgZ2V0PE4gLSAxPih0KSwgb3MpOworICB9CisKKyAgLy8gVGVyc2VseSBwcmludHMgdGhl
IGZpcnN0IE4gZmllbGRzIG9mIGEgdHVwbGUgdG8gYSBzdHJpbmcgdmVjdG9yLAorICAvLyBvbmUg
ZWxlbWVudCBmb3IgZWFjaCBmaWVsZC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPgorICBz
dGF0aWMgdm9pZCBUZXJzZVByaW50UHJlZml4VG9TdHJpbmdzKGNvbnN0IFR1cGxlJiB0LCBTdHJp
bmdzKiBzdHJpbmdzKSB7CisgICAgVHVwbGVQcmVmaXhQcmludGVyPE4gLSAxPjo6VGVyc2VQcmlu
dFByZWZpeFRvU3RyaW5ncyh0LCBzdHJpbmdzKTsKKyAgICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNz
OworICAgIFVuaXZlcnNhbFRlcnNlUHJpbnQoVHVwbGVQb2xpY3k8VHVwbGU+Ojp0ZW1wbGF0ZSBn
ZXQ8TiAtIDE+KHQpLCAmc3MpOworICAgIHN0cmluZ3MtPnB1c2hfYmFjayhzcy5zdHIoKSk7Cisg
IH0KK307CisKKy8vIEJhc2UgY2FzZS4KK3RlbXBsYXRlIDw+CitzdHJ1Y3QgVHVwbGVQcmVmaXhQ
cmludGVyPDA+IHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPgorICBzdGF0aWMgdm9pZCBQ
cmludFByZWZpeFRvKGNvbnN0IFR1cGxlJiwgOjpzdGQ6Om9zdHJlYW0qKSB7fQorCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUdXBsZT4KKyAgc3RhdGljIHZvaWQgVGVyc2VQcmludFByZWZpeFRvU3Ry
aW5ncyhjb25zdCBUdXBsZSYsIFN0cmluZ3MqKSB7fQorfTsKKworLy8gSGVscGVyIGZ1bmN0aW9u
IGZvciBwcmludGluZyBhIHR1cGxlLgorLy8gVHVwbGUgbXVzdCBiZSBlaXRoZXIgc3RkOjp0cjE6
OnR1cGxlIG9yIHN0ZDo6dHVwbGUgdHlwZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4KK3Zv
aWQgUHJpbnRUdXBsZVRvKGNvbnN0IFR1cGxlJiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAg
Km9zIDw8ICIoIjsKKyAgVHVwbGVQcmVmaXhQcmludGVyPFR1cGxlUG9saWN5PFR1cGxlPjo6dHVw
bGVfc2l6ZT46OlByaW50UHJlZml4VG8odCwgb3MpOworICAqb3MgPDwgIikiOworfQorCisvLyBQ
cmludHMgdGhlIGZpZWxkcyBvZiBhIHR1cGxlIHRlcnNlbHkgdG8gYSBzdHJpbmcgdmVjdG9yLCBv
bmUKKy8vIGVsZW1lbnQgZm9yIGVhY2ggZmllbGQuICBTZWUgdGhlIGNvbW1lbnQgYmVmb3JlCisv
LyBVbml2ZXJzYWxUZXJzZVByaW50KCkgZm9yIGhvdyB3ZSBkZWZpbmUgInRlcnNlbHkiLgordGVt
cGxhdGUgPHR5cGVuYW1lIFR1cGxlPgorU3RyaW5ncyBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVG
aWVsZHNUb1N0cmluZ3MoY29uc3QgVHVwbGUmIHZhbHVlKSB7CisgIFN0cmluZ3MgcmVzdWx0Owor
ICBUdXBsZVByZWZpeFByaW50ZXI8VHVwbGVQb2xpY3k8VHVwbGU+Ojp0dXBsZV9zaXplPjo6Cisg
ICAgICBUZXJzZVByaW50UHJlZml4VG9TdHJpbmdzKHZhbHVlLCAmcmVzdWx0KTsKKyAgcmV0dXJu
IHJlc3VsdDsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRSB8fCBHVEVTVF9IQVNf
U1REX1RVUExFXworCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Cis6OnN0ZDo6c3RyaW5nIFByaW50VG9TdHJpbmcoY29uc3QgVCYgdmFsdWUpIHsKKyAg
OjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgaW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnRl
cjxUPjo6UHJpbnQodmFsdWUsICZzcyk7CisgIHJldHVybiBzcy5zdHIoKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIHRlc3RpbmcKKworLy8gSW5jbHVkZSBhbnkgY3VzdG9tIHByaW50ZXIgYWRkZWQg
YnkgdGhlIGxvY2FsIGluc3RhbGxhdGlvbi4KKy8vIFdlIG11c3QgaW5jbHVkZSB0aGlzIGhlYWRl
ciBhdCB0aGUgZW5kIHRvIG1ha2Ugc3VyZSBpdCBjYW4gdXNlIHRoZQorLy8gZGVjbGFyYXRpb25z
IGZyb20gdGhpcyBmaWxlLgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1w
cmludGVycy5oIgorCisjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJJTlRF
UlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
Z3Rlc3Qtc3BpLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0
LXNwaS5oCmluZGV4IGM0MWRhNDg0NDc2MDNlOTY1ZmI3NzJhYmNhMmYxNDVlZTgyYTYwNmYuLmY2
M2ZhOWExYjJhODc1MDgxZGEzNjA2ZmM0NTc4ZWU1YTk0YWJiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qtc3BpLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1zcGkuaApAQCAtMzUsNyArMzUs
NyBAQAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1NQSV9IXwogI2RlZmluZSBH
VEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1NQSV9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKQEAg
LTk4LDEyICs5OCwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIFNpbmdsZUZhaWx1cmVDaGVja2VyIHsK
ICAgLy8gVGhlIGNvbnN0cnVjdG9yIHJlbWVtYmVycyB0aGUgYXJndW1lbnRzLgogICBTaW5nbGVG
YWlsdXJlQ2hlY2tlcihjb25zdCBUZXN0UGFydFJlc3VsdEFycmF5KiByZXN1bHRzLAogICAgICAg
ICAgICAgICAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBzdWJzdHIpOworICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdHJpbmcmIHN1YnN0cik7CiAgIH5TaW5nbGVGYWlsdXJlQ2hlY2tlcigpOwogIHByaXZh
dGU6CiAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0QXJyYXkqIGNvbnN0IHJlc3VsdHNfOwogICBjb25z
dCBUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlXzsKLSAgY29uc3QgU3RyaW5nIHN1YnN0cl87Cisg
IGNvbnN0IHN0cmluZyBzdWJzdHJfOwogCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oU2luZ2xlRmFpbHVyZUNoZWNrZXIpOwogfTsKQEAgLTIyMyw3ICsyMjMsNyBAQCBjbGFzcyBH
VEVTVF9BUElfIFNpbmdsZUZhaWx1cmVDaGVja2VyIHsKICAgICAgICAgKHN1YnN0cikpO1wKICAg
ICB7XAogICAgICAgOjp0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlciBn
dGVzdF9yZXBvcnRlcihcCi0gICAgICAgICAgOjp0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlcjo6SU5URVJDRVBUX0FMTF9USFJFQURTLFwKKyAgICAgICAgICA6OnRlc3Rp
bmc6OlNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpJTlRFUkNFUFRfQUxMX1RIUkVB
RFMsIFwKICAgICAgICAgICAmZ3Rlc3RfZmFpbHVyZXMpO1wKICAgICAgIGlmICg6OnRlc3Rpbmc6
OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgc3RhdGVtZW50OyB9XAogICAgIH1cCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXRlc3QtcGFy
dC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBh
cnQuaAppbmRleCBmNzE0NzU5MDY3NjM5ZjFlYTRlYzBhMTI2MzQ3ZGVjMTIwNDgyNDM5Li43N2Vi
ODQ0ODM5ZDg5MjdhMjkzZDI1NzA0ZGY5YjE3MDdhNDI3M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgKQEAg
LTM1LDggKzM1LDggQEAKIAogI2luY2x1ZGUgPGlvc2Z3ZD4KICNpbmNsdWRlIDx2ZWN0b3I+Ci0j
aW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNsdWRlIDxndGVz
dC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVz
dC1pbnRlcm5hbC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgog
CiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgR1RFU1RfQVBJ
XyBUZXN0UGFydFJlc3VsdCB7CiAgICAgICAgICAgICAgICAgIGludCBhX2xpbmVfbnVtYmVyLAog
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX21lc3NhZ2UpCiAgICAgICA6IHR5cGVfKGFf
dHlwZSksCi0gICAgICAgIGZpbGVfbmFtZV8oYV9maWxlX25hbWUpLAorICAgICAgICBmaWxlX25h
bWVfKGFfZmlsZV9uYW1lID09IE5VTEwgPyAiIiA6IGFfZmlsZV9uYW1lKSwKICAgICAgICAgbGlu
ZV9udW1iZXJfKGFfbGluZV9udW1iZXIpLAogICAgICAgICBzdW1tYXJ5XyhFeHRyYWN0U3VtbWFy
eShhX21lc3NhZ2UpKSwKICAgICAgICAgbWVzc2FnZV8oYV9tZXNzYWdlKSB7CkBAIC03Myw3ICs3
Myw5IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFBhcnRSZXN1bHQgewogCiAgIC8vIEdldHMgdGhl
IG5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRoZSB0ZXN0IHBhcnQgdG9vayBwbGFjZSwg
b3IKICAgLy8gTlVMTCBpZiBpdCdzIHVua25vd24uCi0gIGNvbnN0IGNoYXIqIGZpbGVfbmFtZSgp
IGNvbnN0IHsgcmV0dXJuIGZpbGVfbmFtZV8uY19zdHIoKTsgfQorICBjb25zdCBjaGFyKiBmaWxl
X25hbWUoKSBjb25zdCB7CisgICAgcmV0dXJuIGZpbGVfbmFtZV8uZW1wdHkoKSA/IE5VTEwgOiBm
aWxlX25hbWVfLmNfc3RyKCk7CisgIH0KIAogICAvLyBHZXRzIHRoZSBsaW5lIGluIHRoZSBzb3Vy
Y2UgZmlsZSB3aGVyZSB0aGUgdGVzdCBwYXJ0IHRvb2sgcGxhY2UsCiAgIC8vIG9yIC0xIGlmIGl0
J3MgdW5rbm93bi4KQEAgLTk2LDIxICs5OCwyMiBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RQYXJ0
UmVzdWx0IHsKIAogICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB0ZXN0IHBhcnQgZmF0YWxseSBm
YWlsZWQuCiAgIGJvb2wgZmF0YWxseV9mYWlsZWQoKSBjb25zdCB7IHJldHVybiB0eXBlXyA9PSBr
RmF0YWxGYWlsdXJlOyB9CisKICBwcml2YXRlOgogICBUeXBlIHR5cGVfOwogCiAgIC8vIEdldHMg
dGhlIHN1bW1hcnkgb2YgdGhlIGZhaWx1cmUgbWVzc2FnZSBieSBvbWl0dGluZyB0aGUgc3RhY2sK
ICAgLy8gdHJhY2UgaW4gaXQuCi0gIHN0YXRpYyBpbnRlcm5hbDo6U3RyaW5nIEV4dHJhY3RTdW1t
YXJ5KGNvbnN0IGNoYXIqIG1lc3NhZ2UpOworICBzdGF0aWMgc3RkOjpzdHJpbmcgRXh0cmFjdFN1
bW1hcnkoY29uc3QgY2hhciogbWVzc2FnZSk7CiAKICAgLy8gVGhlIG5hbWUgb2YgdGhlIHNvdXJj
ZSBmaWxlIHdoZXJlIHRoZSB0ZXN0IHBhcnQgdG9vayBwbGFjZSwgb3IKLSAgLy8gTlVMTCBpZiB0
aGUgc291cmNlIGZpbGUgaXMgdW5rbm93bi4KLSAgaW50ZXJuYWw6OlN0cmluZyBmaWxlX25hbWVf
OworICAvLyAiIiBpZiB0aGUgc291cmNlIGZpbGUgaXMgdW5rbm93bi4KKyAgc3RkOjpzdHJpbmcg
ZmlsZV9uYW1lXzsKICAgLy8gVGhlIGxpbmUgaW4gdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRoZSB0
ZXN0IHBhcnQgdG9vayBwbGFjZSwgb3IgLTEKICAgLy8gaWYgdGhlIGxpbmUgbnVtYmVyIGlzIHVu
a25vd24uCiAgIGludCBsaW5lX251bWJlcl87Ci0gIGludGVybmFsOjpTdHJpbmcgc3VtbWFyeV87
ICAvLyBUaGUgdGVzdCBmYWlsdXJlIHN1bW1hcnkuCi0gIGludGVybmFsOjpTdHJpbmcgbWVzc2Fn
ZV87ICAvLyBUaGUgdGVzdCBmYWlsdXJlIG1lc3NhZ2UuCisgIHN0ZDo6c3RyaW5nIHN1bW1hcnlf
OyAgLy8gVGhlIHRlc3QgZmFpbHVyZSBzdW1tYXJ5LgorICBzdGQ6OnN0cmluZyBtZXNzYWdlXzsg
IC8vIFRoZSB0ZXN0IGZhaWx1cmUgbWVzc2FnZS4KIH07CiAKIC8vIFByaW50cyBhIFRlc3RQYXJ0
UmVzdWx0IG9iamVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9ndGVzdC10eXBlZC10ZXN0LmgKaW5kZXggMWVjOGViOGQzMDkzOThkNTJiZDQ5
NjM4NGNmNDc0ODNhZTExNTJlZS4uNWY2OWQ1Njc4ZWFmMzRhNjAwY2E0NWY4Y2Y5MzQwODMxNjJm
YWZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9n
dGVzdC10eXBlZC10ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdC10eXBlZC10ZXN0LmgKQEAgLTE0Niw4ICsxNDYsOCBAQCBJTlNUQU5USUFURV9U
WVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcyk7CiAKICNlbmRpZiAgLy8gMAog
Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgotI2luY2x1ZGUgPGd0ZXN0
L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCIK
IAogLy8gSW1wbGVtZW50cyB0eXBlZCB0ZXN0cy4KIApAQCAtMTU3LDE2ICsxNTcsMTYgQEAgSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMpOwogLy8KIC8v
IEV4cGFuZHMgdG8gdGhlIG5hbWUgb2YgdGhlIHR5cGVkZWYgZm9yIHRoZSB0eXBlIHBhcmFtZXRl
cnMgb2YgdGhlCiAvLyBnaXZlbiB0ZXN0IGNhc2UuCi0jZGVmaW5lIEdURVNUX1RZUEVfUEFSQU1T
XyhUZXN0Q2FzZU5hbWUpIGd0ZXN0X3R5cGVfcGFyYW1zXyMjVGVzdENhc2VOYW1lIyNfCisjIGRl
ZmluZSBHVEVTVF9UWVBFX1BBUkFNU18oVGVzdENhc2VOYW1lKSBndGVzdF90eXBlX3BhcmFtc18j
I1Rlc3RDYXNlTmFtZSMjXwogCiAvLyBUaGUgJ1R5cGVzJyB0ZW1wbGF0ZSBhcmd1bWVudCBiZWxv
dyBtdXN0IGhhdmUgc3BhY2VzIGFyb3VuZCBpdAogLy8gc2luY2Ugc29tZSBjb21waWxlcnMgbWF5
IGNob2tlIG9uICc+Picgd2hlbiBwYXNzaW5nIGEgdGVtcGxhdGUKIC8vIGluc3RhbmNlIChlLmcu
IFR5cGVzPGludD4pCi0jZGVmaW5lIFRZUEVEX1RFU1RfQ0FTRShDYXNlTmFtZSwgVHlwZXMpIFwK
KyMgZGVmaW5lIFRZUEVEX1RFU1RfQ0FTRShDYXNlTmFtZSwgVHlwZXMpIFwKICAgdHlwZWRlZiA6
OnRlc3Rpbmc6OmludGVybmFsOjpUeXBlTGlzdDwgVHlwZXMgPjo6dHlwZSBcCiAgICAgICBHVEVT
VF9UWVBFX1BBUkFNU18oQ2FzZU5hbWUpCiAKLSNkZWZpbmUgVFlQRURfVEVTVChDYXNlTmFtZSwg
VGVzdE5hbWUpIFwKKyMgZGVmaW5lIFRZUEVEX1RFU1QoQ2FzZU5hbWUsIFRlc3ROYW1lKSBcCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiBcCiAgIGNsYXNzIEdURVNUX1RF
U1RfQ0xBU1NfTkFNRV8oQ2FzZU5hbWUsIFRlc3ROYW1lKSBcCiAgICAgICA6IHB1YmxpYyBDYXNl
TmFtZTxndGVzdF9UeXBlUGFyYW1fPiB7IFwKQEAgLTE3NSwxMyArMTc1LDE0IEBAIElOU1RBTlRJ
QVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsKICAgICB0eXBlZGVm
IGd0ZXN0X1R5cGVQYXJhbV8gVHlwZVBhcmFtOyBcCiAgICAgdmlydHVhbCB2b2lkIFRlc3RCb2R5
KCk7IFwKICAgfTsgXAotICBib29sIGd0ZXN0XyMjQ2FzZU5hbWUjI18jI1Rlc3ROYW1lIyNfcmVn
aXN0ZXJlZF8gPSBcCisgIGJvb2wgZ3Rlc3RfIyNDYXNlTmFtZSMjXyMjVGVzdE5hbWUjI19yZWdp
c3RlcmVkXyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9IFwKICAgICAgIDo6dGVzdGluZzo6aW50
ZXJuYWw6OlR5cGVQYXJhbWV0ZXJpemVkVGVzdDwgXAogICAgICAgICAgIENhc2VOYW1lLCBcCiAg
ICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVtcGxhdGVTZWw8IFwKICAgICAgICAgICAg
ICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyhDYXNlTmFtZSwgVGVzdE5hbWUpPiwgXAogICAgICAg
ICAgIEdURVNUX1RZUEVfUEFSQU1TXyhDYXNlTmFtZSk+OjpSZWdpc3RlcihcCi0gICAgICAgICAg
ICAgICIiLCAjQ2FzZU5hbWUsICNUZXN0TmFtZSwgMCk7IFwKKyAgICAgICAgICAgICAgIiIsIDo6
dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihfX0ZJTEVfXywgX19MSU5FX18pLCBcCisg
ICAgICAgICAgICAgICNDYXNlTmFtZSwgI1Rlc3ROYW1lLCAwKTsgXAogICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgZ3Rlc3RfVHlwZVBhcmFtXz4gXAogICB2b2lkIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8o
Q2FzZU5hbWUsIFRlc3ROYW1lKTxndGVzdF9UeXBlUGFyYW1fPjo6VGVzdEJvZHkoKQogCkBAIC0x
OTYsMzEgKzE5NywzMSBAQCBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVz
dCwgTXlUeXBlcyk7CiAvLyBFeHBhbmRzIHRvIHRoZSBuYW1lc3BhY2UgbmFtZSB0aGF0IHRoZSB0
eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMgZm9yCiAvLyB0aGUgZ2l2ZW4gdHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3QgY2FzZSBhcmUgZGVmaW5lZCBpbi4gIFRoZSBleGFjdAogLy8gbmFtZSBvZiB0aGUg
bmFtZXNwYWNlIGlzIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotI2RlZmluZSBH
VEVTVF9DQVNFX05BTUVTUEFDRV8oVGVzdENhc2VOYW1lKSBcCisjIGRlZmluZSBHVEVTVF9DQVNF
X05BTUVTUEFDRV8oVGVzdENhc2VOYW1lKSBcCiAgIGd0ZXN0X2Nhc2VfIyNUZXN0Q2FzZU5hbWUj
I18KIAogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09E
RS4KIC8vCiAvLyBFeHBhbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSB1c2VkIHRvIHJl
bWVtYmVyIHRoZSBuYW1lcyBvZgogLy8gdGhlIGRlZmluZWQgdGVzdHMgaW4gdGhlIGdpdmVuIHRl
c3QgY2FzZS4KLSNkZWZpbmUgR1RFU1RfVFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKFRlc3RDYXNl
TmFtZSkgXAorIyBkZWZpbmUgR1RFU1RfVFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKFRlc3RDYXNl
TmFtZSkgXAogICBndGVzdF90eXBlZF90ZXN0X2Nhc2VfcF9zdGF0ZV8jI1Rlc3RDYXNlTmFtZSMj
XwogCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RF
IERJUkVDVExZLgogLy8KIC8vIEV4cGFuZHMgdG8gdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIHVz
ZWQgdG8gcmVtZW1iZXIgdGhlIG5hbWVzIG9mCiAvLyB0aGUgcmVnaXN0ZXJlZCB0ZXN0cyBpbiB0
aGUgZ2l2ZW4gdGVzdCBjYXNlLgotI2RlZmluZSBHVEVTVF9SRUdJU1RFUkVEX1RFU1RfTkFNRVNf
KFRlc3RDYXNlTmFtZSkgXAorIyBkZWZpbmUgR1RFU1RfUkVHSVNURVJFRF9URVNUX05BTUVTXyhU
ZXN0Q2FzZU5hbWUpIFwKICAgZ3Rlc3RfcmVnaXN0ZXJlZF90ZXN0X25hbWVzXyMjVGVzdENhc2VO
YW1lIyNfCiAKIC8vIFRoZSB2YXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgdHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3QgbWFjcm9zIGFyZQogLy8gc3RhdGljIGFzIHR5cGljYWxseSB0aGVzZSBtYWNyb3Mg
YXJlIHVzZWQgaW4gYSAuaCBmaWxlIHRoYXQgY2FuIGJlCiAvLyAjaW5jbHVkZWQgaW4gbXVsdGlw
bGUgdHJhbnNsYXRpb24gdW5pdHMgbGlua2VkIHRvZ2V0aGVyLgotI2RlZmluZSBUWVBFRF9URVNU
X0NBU0VfUChDYXNlTmFtZSkgXAorIyBkZWZpbmUgVFlQRURfVEVTVF9DQVNFX1AoQ2FzZU5hbWUp
IFwKICAgc3RhdGljIDo6dGVzdGluZzo6aW50ZXJuYWw6OlR5cGVkVGVzdENhc2VQU3RhdGUgXAog
ICAgICAgR1RFU1RfVFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKENhc2VOYW1lKQogCi0jZGVmaW5l
IFRZUEVEX1RFU1RfUChDYXNlTmFtZSwgVGVzdE5hbWUpIFwKKyMgZGVmaW5lIFRZUEVEX1RFU1Rf
UChDYXNlTmFtZSwgVGVzdE5hbWUpIFwKICAgbmFtZXNwYWNlIEdURVNUX0NBU0VfTkFNRVNQQUNF
XyhDYXNlTmFtZSkgeyBcCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiBc
CiAgIGNsYXNzIFRlc3ROYW1lIDogcHVibGljIENhc2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IHsg
XApAQCAtMjI5LDE0ICsyMzAsMTQgQEAgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXks
IEZvb1Rlc3QsIE15VHlwZXMpOwogICAgIHR5cGVkZWYgZ3Rlc3RfVHlwZVBhcmFtXyBUeXBlUGFy
YW07IFwKICAgICB2aXJ0dWFsIHZvaWQgVGVzdEJvZHkoKTsgXAogICB9OyBcCi0gIHN0YXRpYyBi
b29sIGd0ZXN0XyMjVGVzdE5hbWUjI19kZWZpbmVkXyA9IFwKKyAgc3RhdGljIGJvb2wgZ3Rlc3Rf
IyNUZXN0TmFtZSMjX2RlZmluZWRfIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gXAogICAgICAg
R1RFU1RfVFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKENhc2VOYW1lKS5BZGRUZXN0TmFtZShcCiAg
ICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCAjQ2FzZU5hbWUsICNUZXN0TmFtZSk7IFwKICAg
fSBcCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiBcCiAgIHZvaWQgR1RF
U1RfQ0FTRV9OQU1FU1BBQ0VfKENhc2VOYW1lKTo6VGVzdE5hbWU8Z3Rlc3RfVHlwZVBhcmFtXz46
OlRlc3RCb2R5KCkKIAotI2RlZmluZSBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChDYXNlTmFt
ZSwgLi4uKSBcCisjIGRlZmluZSBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChDYXNlTmFtZSwg
Li4uKSBcCiAgIG5hbWVzcGFjZSBHVEVTVF9DQVNFX05BTUVTUEFDRV8oQ2FzZU5hbWUpIHsgXAog
ICB0eXBlZGVmIDo6dGVzdGluZzo6aW50ZXJuYWw6OlRlbXBsYXRlczxfX1ZBX0FSR1NfXz46OnR5
cGUgZ3Rlc3RfQWxsVGVzdHNfOyBcCiAgIH0gXApAQCAtMjQ3LDEyICsyNDgsMTUgQEAgSU5TVEFO
VElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMpOwogLy8gVGhlICdU
eXBlcycgdGVtcGxhdGUgYXJndW1lbnQgYmVsb3cgbXVzdCBoYXZlIHNwYWNlcyBhcm91bmQgaXQK
IC8vIHNpbmNlIHNvbWUgY29tcGlsZXJzIG1heSBjaG9rZSBvbiAnPj4nIHdoZW4gcGFzc2luZyBh
IHRlbXBsYXRlCiAvLyBpbnN0YW5jZSAoZS5nLiBUeXBlczxpbnQ+KQotI2RlZmluZSBJTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChQcmVmaXgsIENhc2VOYW1lLCBUeXBlcykgXAotICBib29s
IGd0ZXN0XyMjUHJlZml4IyNfIyNDYXNlTmFtZSA9IFwKKyMgZGVmaW5lIElOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QKFByZWZpeCwgQ2FzZU5hbWUsIFR5cGVzKSBcCisgIGJvb2wgZ3Rlc3Rf
IyNQcmVmaXgjI18jI0Nhc2VOYW1lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gXAogICAgICAg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTxDYXNlTmFtZSwg
XAogICAgICAgICAgIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhDYXNlTmFtZSk6Omd0ZXN0X0FsbFRl
c3RzXywgXAogICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlR5cGVMaXN0PCBUeXBlcyA+
Ojp0eXBlPjo6UmVnaXN0ZXIoXAotICAgICAgICAgICAgICAjUHJlZml4LCAjQ2FzZU5hbWUsIEdU
RVNUX1JFR0lTVEVSRURfVEVTVF9OQU1FU18oQ2FzZU5hbWUpKQorICAgICAgICAgICAgICAjUHJl
Zml4LCBcCisgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihf
X0ZJTEVfXywgX19MSU5FX18pLCBcCisgICAgICAgICAgICAgICZHVEVTVF9UWVBFRF9URVNUX0NB
U0VfUF9TVEFURV8oQ2FzZU5hbWUpLCBcCisgICAgICAgICAgICAgICNDYXNlTmFtZSwgR1RFU1Rf
UkVHSVNURVJFRF9URVNUX05BTUVTXyhDYXNlTmFtZSkpCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFT
X1RZUEVEX1RFU1RfUAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2d0ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2d0ZXN0LmgKaW5kZXggOTIxZmFkMTFmY2M4ZjI0YzBkZDIyMzk0YTQ4NjdhYjI0YjZlYTBjMy4u
Zjg0NmM1YmQ2Njk2NDk3N2ZhOTFlZmY5MDU5N2RkZDBiZGNkY2U4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaApAQCAtNTIsMzAgKzUyLDMyIEBA
CiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KIAogI2luY2x1ZGUgPGxpbWl0
cz4KKyNpbmNsdWRlIDxvc3RyZWFtPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgPGd0
ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwv
Z3Rlc3Qtc3RyaW5nLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oPgotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1wYXJh
bS10ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3RfcHJvZC5oPgotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0LXRlc3QtcGFydC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaD4K
KyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oIgorI2luY2x1ZGUgImd0
ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LWRlYXRo
LXRlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1tZXNzYWdlLmgiCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QtcGFyYW0tdGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXByaW50ZXJzLmgi
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3RfcHJvZC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXRl
c3QtcGFydC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaCIKIAogLy8gRGVw
ZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSwgZGlmZmVyZW50IHN0cmluZyBjbGFzc2VzIGFyZSBhdmFp
bGFibGUuCiAvLyBPbiBMaW51eCwgaW4gYWRkaXRpb24gdG8gOjpzdGQ6OnN0cmluZywgR29vZ2xl
IGFsc28gbWFrZXMgdXNlIG9mCiAvLyBjbGFzcyA6OnN0cmluZywgd2hpY2ggaGFzIHRoZSBzYW1l
IGludGVyZmFjZSBhcyA6OnN0ZDo6c3RyaW5nLCBidXQKIC8vIGhhcyBhIGRpZmZlcmVudCBpbXBs
ZW1lbnRhdGlvbi4KIC8vCi0vLyBUaGUgdXNlciBjYW4gZGVmaW5lIEdURVNUX0hBU19HTE9CQUxf
U1RSSU5HIHRvIDEgdG8gaW5kaWNhdGUgdGhhdAorLy8gWW91IGNhbiBkZWZpbmUgR1RFU1RfSEFT
X0dMT0JBTF9TVFJJTkcgdG8gMSB0byBpbmRpY2F0ZSB0aGF0CiAvLyA6OnN0cmluZyBpcyBhdmFp
bGFibGUgQU5EIGlzIGEgZGlzdGluY3QgdHlwZSB0byA6OnN0ZDo6c3RyaW5nLCBvcgogLy8gZGVm
aW5lIGl0IHRvIDAgdG8gaW5kaWNhdGUgb3RoZXJ3aXNlLgogLy8KLS8vIElmIHRoZSB1c2VyJ3Mg
OjpzdGQ6OnN0cmluZyBhbmQgOjpzdHJpbmcgYXJlIHRoZSBzYW1lIGNsYXNzIGR1ZSB0bwotLy8g
YWxpYXNpbmcsIGhlIHNob3VsZCBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgdG8gMC4K
Ky8vIElmIDo6c3RkOjpzdHJpbmcgYW5kIDo6c3RyaW5nIGFyZSB0aGUgc2FtZSBjbGFzcyBvbiB5
b3VyIHBsYXRmb3JtCisvLyBkdWUgdG8gYWxpYXNpbmcsIHlvdSBzaG91bGQgZGVmaW5lIEdURVNU
X0hBU19HTE9CQUxfU1RSSU5HIHRvIDAuCiAvLwotLy8gSWYgdGhlIHVzZXIgZG9lc24ndCBkZWZp
bmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcsIGl0IGlzIGRlZmluZWQKKy8vIElmIHlvdSBkbyBu
b3QgZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HLCBpdCBpcyBkZWZpbmVkCiAvLyBoZXVy
aXN0aWNhbGx5LgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CkBAIC0xMzYsNiArMTM4LDExIEBAIEdU
RVNUX0RFQ0xBUkVfaW50MzJfKHN0YWNrX3RyYWNlX2RlcHRoKTsKIC8vIG5vbi16ZXJvIGNvZGUg
b3RoZXJ3aXNlLgogR1RFU1RfREVDTEFSRV9ib29sXyh0aHJvd19vbl9mYWlsdXJlKTsKIAorLy8g
V2hlbiB0aGlzIGZsYWcgaXMgc2V0IHdpdGggYSAiaG9zdDpwb3J0IiBzdHJpbmcsIG9uIHN1cHBv
cnRlZAorLy8gcGxhdGZvcm1zIHRlc3QgcmVzdWx0cyBhcmUgc3RyZWFtZWQgdG8gdGhlIHNwZWNp
ZmllZCBwb3J0IG9uCisvLyB0aGUgc3BlY2lmaWVkIGhvc3QgbWFjaGluZS4KK0dURVNUX0RFQ0xB
UkVfc3RyaW5nXyhzdHJlYW1fcmVzdWx0X3RvKTsKKwogLy8gVGhlIHVwcGVyIGxpbWl0IGZvciB2
YWxpZCBzdGFjayB0cmFjZSBkZXB0aHMuCiBjb25zdCBpbnQga01heFN0YWNrVHJhY2VEZXB0aCA9
IDEwMDsKIApAQCAtMTQ3LDMxICsxNTQsMjYgQEAgY2xhc3MgRXhlY0RlYXRoVGVzdDsKIGNsYXNz
IE5vRXhlY0RlYXRoVGVzdDsKIGNsYXNzIEZpbmFsU3VjY2Vzc0NoZWNrZXI7CiBjbGFzcyBHVGVz
dEZsYWdTYXZlcjsKLWNsYXNzIFRlc3RJbmZvSW1wbDsKK2NsYXNzIFN0cmVhbWluZ0xpc3RlbmVy
VGVzdDsKIGNsYXNzIFRlc3RSZXN1bHRBY2Nlc3NvcjsKIGNsYXNzIFRlc3RFdmVudExpc3RlbmVy
c0FjY2Vzc29yOwogY2xhc3MgVGVzdEV2ZW50UmVwZWF0ZXI7CitjbGFzcyBVbml0VGVzdFJlY29y
ZFByb3BlcnR5VGVzdEhlbHBlcjsKIGNsYXNzIFdpbmRvd3NEZWF0aFRlc3Q7CiBjbGFzcyBVbml0
VGVzdEltcGwqIEdldFVuaXRUZXN0SW1wbCgpOwogdm9pZCBSZXBvcnRGYWlsdXJlSW5Vbmtub3du
TG9jYXRpb24oVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotY2xhc3MgUHJl
dHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOwotY2xhc3MgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVy
OwotCi0vLyBDb252ZXJ0cyBhIHN0cmVhbWFibGUgdmFsdWUgdG8gYSBTdHJpbmcuICBBIE5VTEwg
cG9pbnRlciBpcwotLy8gY29udmVydGVkIHRvICIobnVsbCkiLiAgV2hlbiB0aGUgaW5wdXQgdmFs
dWUgaXMgYSA6OnN0cmluZywKLS8vIDo6c3RkOjpzdHJpbmcsIDo6d3N0cmluZywgb3IgOjpzdGQ6
OndzdHJpbmcgb2JqZWN0LCBlYWNoIE5VTAotLy8gY2hhcmFjdGVyIGluIGl0IGlzIHJlcGxhY2Vk
IHdpdGggIlxcMCIuCi0vLyBEZWNsYXJlZCBpbiBndGVzdC1pbnRlcm5hbC5oIGJ1dCBkZWZpbmVk
IGhlcmUsIHNvIHRoYXQgaXQgaGFzIGFjY2VzcwotLy8gdG8gdGhlIGRlZmluaXRpb24gb2YgdGhl
IE1lc3NhZ2UgY2xhc3MsIHJlcXVpcmVkIGJ5IHRoZSBBUk0KLS8vIGNvbXBpbGVyLgotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1TdHJpbmcgU3RyZWFtYWJsZVRvU3RyaW5nKGNvbnN0IFQmIHN0cmVh
bWFibGUpIHsKLSAgcmV0dXJuIChNZXNzYWdlKCkgPDwgc3RyZWFtYWJsZSkuR2V0U3RyaW5nKCk7
Ci19CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbWVzc2FnZSk7CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogCisvLyBUaGUgZnJpZW5k
IHJlbGF0aW9uc2hpcCBvZiBzb21lIG9mIHRoZXNlIGNsYXNzZXMgaXMgY3ljbGljLgorLy8gSWYg
d2UgZG9uJ3QgZm9yd2FyZCBkZWNsYXJlIHRoZW0gdGhlIGNvbXBpbGVyIG1pZ2h0IGNvbmZ1c2Ug
dGhlIGNsYXNzZXMKKy8vIGluIGZyaWVuZHNoaXAgY2xhdXNlcyB3aXRoIHNhbWUgbmFtZWQgY2xh
c3NlcyBvbiB0aGUgc2NvcGUuCitjbGFzcyBUZXN0OworY2xhc3MgVGVzdENhc2U7CitjbGFzcyBU
ZXN0SW5mbzsKK2NsYXNzIFVuaXRUZXN0OworCiAvLyBBIGNsYXNzIGZvciBpbmRpY2F0aW5nIHdo
ZXRoZXIgYW4gYXNzZXJ0aW9uIHdhcyBzdWNjZXNzZnVsLiAgV2hlbgogLy8gdGhlIGFzc2VydGlv
biB3YXNuJ3Qgc3VjY2Vzc2Z1bCwgdGhlIEFzc2VydGlvblJlc3VsdCBvYmplY3QKIC8vIHJlbWVt
YmVycyBhIG5vbi1lbXB0eSBtZXNzYWdlIHRoYXQgZGVzY3JpYmVzIGhvdyBpdCBmYWlsZWQuCkBA
IC0yNTYsOCArMjU4LDMxIEBAIGNsYXNzIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IHsKICAg
Ly8gQ29weSBjb25zdHJ1Y3Rvci4KICAgLy8gVXNlZCBpbiBFWFBFQ1RfVFJVRS9GQUxTRShhc3Nl
cnRpb25fcmVzdWx0KS4KICAgQXNzZXJ0aW9uUmVzdWx0KGNvbnN0IEFzc2VydGlvblJlc3VsdCYg
b3RoZXIpOworCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQ4MDAgLyogZm9y
Y2luZyB2YWx1ZSB0byBib29sICovKQorCiAgIC8vIFVzZWQgaW4gdGhlIEVYUEVDVF9UUlVFL0ZB
TFNFKGJvb2xfZXhwcmVzc2lvbikuCi0gIGV4cGxpY2l0IEFzc2VydGlvblJlc3VsdChib29sIHN1
Y2Nlc3MpIDogc3VjY2Vzc18oc3VjY2Vzcykge30KKyAgLy8KKyAgLy8gVCBtdXN0IGJlIGNvbnRl
eHR1YWxseSBjb252ZXJ0aWJsZSB0byBib29sLgorICAvLworICAvLyBUaGUgc2Vjb25kIHBhcmFt
ZXRlciBwcmV2ZW50cyB0aGlzIG92ZXJsb2FkIGZyb20gYmVpbmcgY29uc2lkZXJlZCBpZgorICAv
LyB0aGUgYXJndW1lbnQgaXMgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0byBBc3NlcnRpb25SZXN1
bHQuIEluIHRoYXQgY2FzZQorICAvLyB3ZSB3YW50IEFzc2VydGlvblJlc3VsdCdzIGNvcHkgY29u
c3RydWN0b3IgdG8gYmUgdXNlZC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIGV4cGxpY2l0
IEFzc2VydGlvblJlc3VsdCgKKyAgICAgIGNvbnN0IFQmIHN1Y2Nlc3MsCisgICAgICB0eXBlbmFt
ZSBpbnRlcm5hbDo6RW5hYmxlSWY8CisgICAgICAgICAgIWludGVybmFsOjpJbXBsaWNpdGx5Q29u
dmVydGlibGU8VCwgQXNzZXJ0aW9uUmVzdWx0Pjo6dmFsdWU+Ojp0eXBlKgorICAgICAgICAgIC8q
ZW5hYmxlciovID0gTlVMTCkKKyAgICAgIDogc3VjY2Vzc18oc3VjY2Vzcykge30KKworICBHVEVT
VF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKworICAvLyBBc3NpZ25tZW50IG9wZXJhdG9y
LgorICBBc3NlcnRpb25SZXN1bHQmIG9wZXJhdG9yPShBc3NlcnRpb25SZXN1bHQgb3RoZXIpIHsK
KyAgICBzd2FwKG90aGVyKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KIAogICAvLyBSZXR1cm5z
IHRydWUgaWZmIHRoZSBhc3NlcnRpb24gc3VjY2VlZGVkLgogICBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gc3VjY2Vzc187IH0gIC8vIE5PTElOVApAQCAtMjcwLDIwICsyOTUsMzYgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgewogICAvLyBhc3NlcnRpb24ncyBleHBl
Y3RhdGlvbikuIFdoZW4gbm90aGluZyBoYXMgYmVlbiBzdHJlYW1lZCBpbnRvIHRoZQogICAvLyBv
YmplY3QsIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLgogICBjb25zdCBjaGFyKiBtZXNzYWdlKCkg
Y29uc3QgewotICAgIHJldHVybiBtZXNzYWdlXy5nZXQoKSAhPSBOVUxMICYmIG1lc3NhZ2VfLT5j
X3N0cigpICE9IE5VTEwgPwotICAgICAgICAgICBtZXNzYWdlXy0+Y19zdHIoKSA6ICIiOworICAg
IHJldHVybiBtZXNzYWdlXy5nZXQoKSAhPSBOVUxMID8gIG1lc3NhZ2VfLT5jX3N0cigpIDogIiI7
CiAgIH0KICAgLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogUmVtb3ZlIHRoaXMgYWZ0ZXIgbWFr
aW5nIHN1cmUgbm8gY2xpZW50cyB1c2UgaXQuCiAgIC8vIERlcHJlY2F0ZWQ7IHBsZWFzZSB1c2Ug
bWVzc2FnZSgpIGluc3RlYWQuCiAgIGNvbnN0IGNoYXIqIGZhaWx1cmVfbWVzc2FnZSgpIGNvbnN0
IHsgcmV0dXJuIG1lc3NhZ2UoKTsgfQogCiAgIC8vIFN0cmVhbXMgYSBjdXN0b20gZmFpbHVyZSBt
ZXNzYWdlIGludG8gdGhpcyBvYmplY3QuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBBc3NlcnRp
b25SZXN1bHQmIG9wZXJhdG9yPDwoY29uc3QgVCYgdmFsdWUpOworICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gQXNzZXJ0aW9uUmVzdWx0JiBvcGVyYXRvcjw8KGNvbnN0IFQmIHZhbHVlKSB7CisgICAg
QXBwZW5kTWVzc2FnZShNZXNzYWdlKCkgPDwgdmFsdWUpOworICAgIHJldHVybiAqdGhpczsKKyAg
fQorCisgIC8vIEFsbG93cyBzdHJlYW1pbmcgYmFzaWMgb3V0cHV0IG1hbmlwdWxhdG9ycyBzdWNo
IGFzIGVuZGwgb3IgZmx1c2ggaW50bworICAvLyB0aGlzIG9iamVjdC4KKyAgQXNzZXJ0aW9uUmVz
dWx0JiBvcGVyYXRvcjw8KAorICAgICAgOjpzdGQ6Om9zdHJlYW0mICgqYmFzaWNfbWFuaXB1bGF0
b3IpKDo6c3RkOjpvc3RyZWFtJiBzdHJlYW0pKSB7CisgICAgQXBwZW5kTWVzc2FnZShNZXNzYWdl
KCkgPDwgYmFzaWNfbWFuaXB1bGF0b3IpOworICAgIHJldHVybiAqdGhpczsKKyAgfQogCiAgcHJp
dmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSB3ZSB3YW50IEFzc2VydGlvblJlc3VsdCB0
byBiZQotICAvLyBjb3B5LWNvbnN0cnVjdGlibGUgYnV0IG5vdCBhc3NpZ25hYmxlLgotICB2b2lk
IG9wZXJhdG9yPShjb25zdCBBc3NlcnRpb25SZXN1bHQmIG90aGVyKTsKKyAgLy8gQXBwZW5kcyB0
aGUgY29udGVudHMgb2YgbWVzc2FnZSB0byBtZXNzYWdlXy4KKyAgdm9pZCBBcHBlbmRNZXNzYWdl
KGNvbnN0IE1lc3NhZ2UmIGFfbWVzc2FnZSkgeworICAgIGlmIChtZXNzYWdlXy5nZXQoKSA9PSBO
VUxMKQorICAgICAgbWVzc2FnZV8ucmVzZXQobmV3IDo6c3RkOjpzdHJpbmcpOworICAgIG1lc3Nh
Z2VfLT5hcHBlbmQoYV9tZXNzYWdlLkdldFN0cmluZygpLmNfc3RyKCkpOworICB9CisKKyAgLy8g
U3dhcCB0aGUgY29udGVudHMgb2YgdGhpcyBBc3NlcnRpb25SZXN1bHQgd2l0aCBvdGhlci4KKyAg
dm9pZCBzd2FwKEFzc2VydGlvblJlc3VsdCYgb3RoZXIpOwogCiAgIC8vIFN0b3JlcyByZXN1bHQg
b2YgdGhlIGFzc2VydGlvbiBwcmVkaWNhdGUuCiAgIGJvb2wgc3VjY2Vzc187CkBAIC0yOTEsMTkg
KzMzMiw4IEBAIGNsYXNzIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IHsKICAgLy8gY29uc3Ry
dWN0IGlzIG5vdCBzYXRpc2ZpZWQgd2l0aCB0aGUgcHJlZGljYXRlJ3Mgb3V0Y29tZS4KICAgLy8g
UmVmZXJlbmNlZCB2aWEgYSBwb2ludGVyIHRvIGF2b2lkIHRha2luZyB0b28gbXVjaCBzdGFjayBm
cmFtZSBzcGFjZQogICAvLyB3aXRoIHRlc3QgYXNzZXJ0aW9ucy4KLSAgaW50ZXJuYWw6OnNjb3Bl
ZF9wdHI8aW50ZXJuYWw6OlN0cmluZz4gbWVzc2FnZV87Ci19OyAgLy8gY2xhc3MgQXNzZXJ0aW9u
UmVzdWx0Ci0KLS8vIFN0cmVhbXMgYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlIGludG8gdGhpcyBv
YmplY3QuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFzc2VydGlvblJlc3VsdCYgQXNzZXJ0aW9u
UmVzdWx0OjpvcGVyYXRvcjw8KGNvbnN0IFQmIHZhbHVlKSB7Ci0gIE1lc3NhZ2UgbXNnOwotICBp
ZiAobWVzc2FnZV8uZ2V0KCkgIT0gTlVMTCkKLSAgICBtc2cgPDwgKm1lc3NhZ2VfOwotICBtc2cg
PDwgdmFsdWU7Ci0gIG1lc3NhZ2VfLnJlc2V0KG5ldyBpbnRlcm5hbDo6U3RyaW5nKG1zZy5HZXRT
dHJpbmcoKSkpOwotICByZXR1cm4gKnRoaXM7Ci19CisgIGludGVybmFsOjpzY29wZWRfcHRyPCA6
OnN0ZDo6c3RyaW5nPiBtZXNzYWdlXzsKK307CiAKIC8vIE1ha2VzIGEgc3VjY2Vzc2Z1bCBhc3Nl
cnRpb24gcmVzdWx0LgogR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uU3VjY2Vz
cygpOwpAQCAtMzI5LDggKzM1OSw4IEBAIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IEFzc2Vy
dGlvbkZhaWx1cmUoY29uc3QgTWVzc2FnZSYgbXNnKTsKIC8vCiAvLyAgIGNsYXNzIEZvb1Rlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAvLyAgICBwcm90ZWN0ZWQ6Ci0vLyAgICAgdmlydHVh
bCB2b2lkIFNldFVwKCkgeyAuLi4gfQotLy8gICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsg
Li4uIH0KKy8vICAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUgeyAuLi4gfQorLy8gICAgIHZvaWQg
VGVhckRvd24oKSBvdmVycmlkZSB7IC4uLiB9CiAvLyAgICAgLi4uCiAvLyAgIH07CiAvLwpAQCAt
MzQwLDcgKzM3MCw3IEBAIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvbkZhaWx1
cmUoY29uc3QgTWVzc2FnZSYgbXNnKTsKIC8vIFRlc3QgaXMgbm90IGNvcHlhYmxlLgogY2xhc3Mg
R1RFU1RfQVBJXyBUZXN0IHsKICBwdWJsaWM6Ci0gIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VGVz
dEluZm9JbXBsOworICBmcmllbmQgY2xhc3MgVGVzdEluZm87CiAKICAgLy8gRGVmaW5lcyB0eXBl
cyBmb3IgcG9pbnRlcnMgdG8gZnVuY3Rpb25zIHRoYXQgc2V0IHVwIGFuZCB0ZWFyIGRvd24KICAg
Ly8gYSB0ZXN0IGNhc2UuCkBAIC0zNzYsMjAgKzQwNiwyMSBAQCBjbGFzcyBHVEVTVF9BUElfIFRl
c3QgewogICAvLyBub24tZmF0YWwpIGZhaWx1cmUuCiAgIHN0YXRpYyBib29sIEhhc0ZhaWx1cmUo
KSB7IHJldHVybiBIYXNGYXRhbEZhaWx1cmUoKSB8fCBIYXNOb25mYXRhbEZhaWx1cmUoKTsgfQog
Ci0gIC8vIExvZ3MgYSBwcm9wZXJ0eSBmb3IgdGhlIGN1cnJlbnQgdGVzdC4gIE9ubHkgdGhlIGxh
c3QgdmFsdWUgZm9yIGEgZ2l2ZW4KLSAgLy8ga2V5IGlzIHJlbWVtYmVyZWQuCi0gIC8vIFRoZXNl
IGFyZSBwdWJsaWMgc3RhdGljIHNvIHRoZXkgY2FuIGJlIGNhbGxlZCBmcm9tIHV0aWxpdHkgZnVu
Y3Rpb25zCi0gIC8vIHRoYXQgYXJlIG5vdCBtZW1iZXJzIG9mIHRoZSB0ZXN0IGZpeHR1cmUuCi0g
IC8vIFRoZSBhcmd1bWVudHMgYXJlIGNvbnN0IGNoYXIqIGluc3RlYWQgc3RyaW5ncywgYXMgR29v
Z2xlIFRlc3QgaXMgdXNlZAotICAvLyBvbiBwbGF0Zm9ybXMgd2hlcmUgc3RyaW5nIGRvZXNuJ3Qg
Y29tcGlsZS4KLSAgLy8KLSAgLy8gTm90ZSB0aGF0IGEgZHJpdmluZyBjb25zaWRlcmF0aW9uIGZv
ciB0aGVzZSBSZWNvcmRQcm9wZXJ0eSBtZXRob2RzCi0gIC8vIHdhcyB0byBwcm9kdWNlIHhtbCBv
dXRwdXQgc3VpdGVkIHRvIHRoZSBHcmVlbnNwYW4gY2hhcnRpbmcgdXRpbGl0eSwKLSAgLy8gd2hp
Y2ggYXQgcHJlc2VudCB3aWxsIG9ubHkgY2hhcnQgdmFsdWVzIHRoYXQgZml0IGluIGEgMzItYml0
IGludC4gSXQKLSAgLy8gaXMgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0eSB0byByZXN0cmljdCB0
aGVpciB2YWx1ZXMgdG8gMzItYml0IGludHMKLSAgLy8gaWYgdGhleSBpbnRlbmQgdGhlbSB0byBi
ZSB1c2VkIHdpdGggR3JlZW5zcGFuLgotICBzdGF0aWMgdm9pZCBSZWNvcmRQcm9wZXJ0eShjb25z
dCBjaGFyKiBrZXksIGNvbnN0IGNoYXIqIHZhbHVlKTsKLSAgc3RhdGljIHZvaWQgUmVjb3JkUHJv
cGVydHkoY29uc3QgY2hhcioga2V5LCBpbnQgdmFsdWUpOworICAvLyBMb2dzIGEgcHJvcGVydHkg
Zm9yIHRoZSBjdXJyZW50IHRlc3QsIHRlc3QgY2FzZSwgb3IgZm9yIHRoZSBlbnRpcmUKKyAgLy8g
aW52b2NhdGlvbiBvZiB0aGUgdGVzdCBwcm9ncmFtIHdoZW4gdXNlZCBvdXRzaWRlIG9mIHRoZSBj
b250ZXh0IG9mIGEKKyAgLy8gdGVzdCBjYXNlLiAgT25seSB0aGUgbGFzdCB2YWx1ZSBmb3IgYSBn
aXZlbiBrZXkgaXMgcmVtZW1iZXJlZC4gIFRoZXNlCisgIC8vIGFyZSBwdWJsaWMgc3RhdGljIHNv
IHRoZXkgY2FuIGJlIGNhbGxlZCBmcm9tIHV0aWxpdHkgZnVuY3Rpb25zIHRoYXQgYXJlCisgIC8v
IG5vdCBtZW1iZXJzIG9mIHRoZSB0ZXN0IGZpeHR1cmUuICBDYWxscyB0byBSZWNvcmRQcm9wZXJ0
eSBtYWRlIGR1cmluZworICAvLyBsaWZlc3BhbiBvZiB0aGUgdGVzdCAoZnJvbSB0aGUgbW9tZW50
IGl0cyBjb25zdHJ1Y3RvciBzdGFydHMgdG8gdGhlCisgIC8vIG1vbWVudCBpdHMgZGVzdHJ1Y3Rv
ciBmaW5pc2hlcykgd2lsbCBiZSBvdXRwdXQgaW4gWE1MIGFzIGF0dHJpYnV0ZXMgb2YKKyAgLy8g
dGhlIDx0ZXN0Y2FzZT4gZWxlbWVudC4gIFByb3BlcnRpZXMgcmVjb3JkZWQgZnJvbSBmaXh0dXJl
J3MKKyAgLy8gU2V0VXBUZXN0Q2FzZSBvciBUZWFyRG93blRlc3RDYXNlIGFyZSBsb2dnZWQgYXMg
YXR0cmlidXRlcyBvZiB0aGUKKyAgLy8gY29ycmVzcG9uZGluZyA8dGVzdHN1aXRlPiBlbGVtZW50
LiAgQ2FsbHMgdG8gUmVjb3JkUHJvcGVydHkgbWFkZSBpbiB0aGUKKyAgLy8gZ2xvYmFsIGNvbnRl
eHQgKGJlZm9yZSBvciBhZnRlciBpbnZvY2F0aW9uIG9mIFJVTl9BTExfVEVTVFMgYW5kIGZyb20K
KyAgLy8gU2V0VXAvVGVhckRvd24gbWV0aG9kIG9mIEVudmlyb25tZW50IG9iamVjdHMgcmVnaXN0
ZXJlZCB3aXRoIEdvb2dsZQorICAvLyBUZXN0KSB3aWxsIGJlIG91dHB1dCBhcyBhdHRyaWJ1dGVz
IG9mIHRoZSA8dGVzdHN1aXRlcz4gZWxlbWVudC4KKyAgc3RhdGljIHZvaWQgUmVjb3JkUHJvcGVy
dHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKTsKKyAg
c3RhdGljIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwgaW50IHZh
bHVlKTsKIAogIHByb3RlY3RlZDoKICAgLy8gQ3JlYXRlcyBhIFRlc3Qgb2JqZWN0LgpAQCAtNDE3
LDIwICs0NDgsMjMgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0IHsKICAgLy8gU2V0cyB1cCwgZXhl
Y3V0ZXMsIGFuZCB0ZWFycyBkb3duIHRoZSB0ZXN0LgogICB2b2lkIFJ1bigpOwogCi0gIC8vIFVz
ZXMgYSBHVGVzdEZsYWdTYXZlciB0byBzYXZlIGFuZCByZXN0b3JlIGFsbCBHb29nbGUgVGVzdCBm
bGFncy4KLSAgY29uc3QgaW50ZXJuYWw6OkdUZXN0RmxhZ1NhdmVyKiBjb25zdCBndGVzdF9mbGFn
X3NhdmVyXzsKKyAgLy8gRGVsZXRlcyBzZWxmLiAgV2UgZGVsaWJlcmF0ZWx5IHBpY2sgYW4gdW51
c3VhbCBuYW1lIGZvciB0aGlzCisgIC8vIGludGVybmFsIG1ldGhvZCB0byBhdm9pZCBjbGFzaGlu
ZyB3aXRoIG5hbWVzIHVzZWQgaW4gdXNlciBURVNUcy4KKyAgdm9pZCBEZWxldGVTZWxmXygpIHsg
ZGVsZXRlIHRoaXM7IH0KKworICBjb25zdCBpbnRlcm5hbDo6c2NvcGVkX3B0cjwgR1RFU1RfRkxB
R19TQVZFUl8gPiBndGVzdF9mbGFnX3NhdmVyXzsKIAotICAvLyBPZnRlbiBhIHVzZXIgbWlzLXNw
ZWxscyBTZXRVcCgpIGFzIFNldHVwKCkgYW5kIHNwZW5kcyBhIGxvbmcgdGltZQorICAvLyBPZnRl
biBhIHVzZXIgbWlzc3BlbGxzIFNldFVwKCkgYXMgU2V0dXAoKSBhbmQgc3BlbmRzIGEgbG9uZyB0
aW1lCiAgIC8vIHdvbmRlcmluZyB3aHkgaXQgaXMgbmV2ZXIgY2FsbGVkIGJ5IEdvb2dsZSBUZXN0
LiAgVGhlIGRlY2xhcmF0aW9uIG9mCiAgIC8vIHRoZSBmb2xsb3dpbmcgbWV0aG9kIGlzIHNvbGVs
eSBmb3IgY2F0Y2hpbmcgc3VjaCBhbiBlcnJvciBhdAogICAvLyBjb21waWxlIHRpbWU6CiAgIC8v
CiAgIC8vICAgLSBUaGUgcmV0dXJuIHR5cGUgaXMgZGVsaWJlcmF0ZWx5IGNob3NlbiB0byBiZSBu
b3Qgdm9pZCwgc28gaXQKLSAgLy8gICB3aWxsIGJlIGEgY29uZmxpY3QgaWYgYSB1c2VyIGRlY2xh
cmVzIHZvaWQgU2V0dXAoKSBpbiBoaXMgdGVzdAotICAvLyAgIGZpeHR1cmUuCisgIC8vICAgd2ls
bCBiZSBhIGNvbmZsaWN0IGlmIHZvaWQgU2V0dXAoKSBpcyBkZWNsYXJlZCBpbiB0aGUgdXNlcidz
CisgIC8vICAgdGVzdCBmaXh0dXJlLgogICAvLwogICAvLyAgIC0gVGhpcyBtZXRob2QgaXMgcHJp
dmF0ZSwgc28gaXQgd2lsbCBiZSBhbm90aGVyIGNvbXBpbGVyIGVycm9yCi0gIC8vICAgaWYgYSB1
c2VyIGNhbGxzIGl0IGZyb20gaGlzIHRlc3QgZml4dHVyZS4KKyAgLy8gICBpZiB0aGUgbWV0aG9k
IGlzIGNhbGxlZCBmcm9tIHRoZSB1c2VyJ3MgdGVzdCBmaXh0dXJlLgogICAvLwogICAvLyBETyBO
T1QgT1ZFUlJJREUgVEhJUyBGVU5DVElPTi4KICAgLy8KQEAgLTQ1NCw3ICs0ODgsNyBAQCBjbGFz
cyBUZXN0UHJvcGVydHkgewogICAvLyBDJ3Rvci4gIFRlc3RQcm9wZXJ0eSBkb2VzIE5PVCBoYXZl
IGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KICAgLy8gQWx3YXlzIHVzZSB0aGlzIGNvbnN0cnVjdG9y
ICh3aXRoIHBhcmFtZXRlcnMpIHRvIGNyZWF0ZSBhCiAgIC8vIFRlc3RQcm9wZXJ0eSBvYmplY3Qu
Ci0gIFRlc3RQcm9wZXJ0eShjb25zdCBjaGFyKiBhX2tleSwgY29uc3QgY2hhciogYV92YWx1ZSkg
OgorICBUZXN0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGFfa2V5LCBjb25zdCBzdGQ6OnN0
cmluZyYgYV92YWx1ZSkgOgogICAgIGtleV8oYV9rZXkpLCB2YWx1ZV8oYV92YWx1ZSkgewogICB9
CiAKQEAgLTQ2OSwxNSArNTAzLDE1IEBAIGNsYXNzIFRlc3RQcm9wZXJ0eSB7CiAgIH0KIAogICAv
LyBTZXRzIGEgbmV3IHZhbHVlLCBvdmVycmlkaW5nIHRoZSBvbmUgc3VwcGxpZWQgaW4gdGhlIGNv
bnN0cnVjdG9yLgotICB2b2lkIFNldFZhbHVlKGNvbnN0IGNoYXIqIG5ld192YWx1ZSkgeworICB2
b2lkIFNldFZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBuZXdfdmFsdWUpIHsKICAgICB2YWx1ZV8g
PSBuZXdfdmFsdWU7CiAgIH0KIAogIHByaXZhdGU6CiAgIC8vIFRoZSBrZXkgc3VwcGxpZWQgYnkg
dGhlIHVzZXIuCi0gIGludGVybmFsOjpTdHJpbmcga2V5XzsKKyAgc3RkOjpzdHJpbmcga2V5XzsK
ICAgLy8gVGhlIHZhbHVlIHN1cHBsaWVkIGJ5IHRoZSB1c2VyLgotICBpbnRlcm5hbDo6U3RyaW5n
IHZhbHVlXzsKKyAgc3RkOjpzdHJpbmcgdmFsdWVfOwogfTsKIAogLy8gVGhlIHJlc3VsdCBvZiBh
IHNpbmdsZSBUZXN0LiAgVGhpcyBpbmNsdWRlcyBhIGxpc3Qgb2YKQEAgLTUyOCwxMCArNTYyLDEw
IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFJlc3VsdCB7CiAKICBwcml2YXRlOgogICBmcmllbmQg
Y2xhc3MgVGVzdEluZm87CisgIGZyaWVuZCBjbGFzcyBUZXN0Q2FzZTsKICAgZnJpZW5kIGNsYXNz
IFVuaXRUZXN0OwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkRlZmF1bHRHbG9iYWxUZXN0UGFy
dFJlc3VsdFJlcG9ydGVyOwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkV4ZWNEZWF0aFRlc3Q7
Ci0gIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VGVzdEluZm9JbXBsOwogICBmcmllbmQgY2xhc3Mg
aW50ZXJuYWw6OlRlc3RSZXN1bHRBY2Nlc3NvcjsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpV
bml0VGVzdEltcGw7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6V2luZG93c0RlYXRoVGVzdDsK
QEAgLTU1MywxMyArNTg3LDE2IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFJlc3VsdCB7CiAgIC8v
IGEgbm9uLWZhdGFsIGZhaWx1cmUgaWYgaW52YWxpZCAoZS5nLiwgaWYgaXQgY29uZmxpY3RzIHdp
dGggcmVzZXJ2ZWQKICAgLy8ga2V5IG5hbWVzKS4gSWYgYSBwcm9wZXJ0eSBpcyBhbHJlYWR5IHJl
Y29yZGVkIGZvciB0aGUgc2FtZSBrZXksIHRoZQogICAvLyB2YWx1ZSB3aWxsIGJlIHVwZGF0ZWQs
IHJhdGhlciB0aGFuIHN0b3JpbmcgbXVsdGlwbGUgdmFsdWVzIGZvciB0aGUgc2FtZQotICAvLyBr
ZXkuCi0gIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3Bl
cnR5KTsKKyAgLy8ga2V5LiAgeG1sX2VsZW1lbnQgc3BlY2lmaWVzIHRoZSBlbGVtZW50IGZvciB3
aGljaCB0aGUgcHJvcGVydHkgaXMgYmVpbmcKKyAgLy8gcmVjb3JkZWQgYW5kIGlzIHVzZWQgZm9y
IHZhbGlkYXRpb24uCisgIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHht
bF9lbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVz
dF9wcm9wZXJ0eSk7CiAKICAgLy8gQWRkcyBhIGZhaWx1cmUgaWYgdGhlIGtleSBpcyBhIHJlc2Vy
dmVkIGF0dHJpYnV0ZSBvZiBHb29nbGUgVGVzdAogICAvLyB0ZXN0Y2FzZSB0YWdzLiAgUmV0dXJu
cyB0cnVlIGlmIHRoZSBwcm9wZXJ0eSBpcyB2YWxpZC4KICAgLy8gVE9ETyhydXNzcik6IFZhbGlk
YXRlIGF0dHJpYnV0ZSBuYW1lcyBhcmUgbGVnYWwgYW5kIGh1bWFuIHJlYWRhYmxlLgotICBzdGF0
aWMgYm9vbCBWYWxpZGF0ZVRlc3RQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJv
cGVydHkpOworICBzdGF0aWMgYm9vbCBWYWxpZGF0ZVRlc3RQcm9wZXJ0eShjb25zdCBzdGQ6OnN0
cmluZyYgeG1sX2VsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSk7CiAKICAgLy8gQWRkcyBhIHRlc3QgcGFy
dCByZXN1bHQgdG8gdGhlIGxpc3QuCiAgIHZvaWQgQWRkVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVz
dFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpOwpAQCAtNjExLDIwICs2NDgsMzYgQEAgY2xh
c3MgR1RFU1RfQVBJXyBUZXN0SW5mbyB7CiAgIH5UZXN0SW5mbygpOwogCiAgIC8vIFJldHVybnMg
dGhlIHRlc3QgY2FzZSBuYW1lLgotICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0
OworICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRlc3RfY2Fz
ZV9uYW1lXy5jX3N0cigpOyB9CiAKICAgLy8gUmV0dXJucyB0aGUgdGVzdCBuYW1lLgotICBjb25z
dCBjaGFyKiBuYW1lKCkgY29uc3Q7CisgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7IHJldHVy
biBuYW1lXy5jX3N0cigpOyB9CisKKyAgLy8gUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgcGFyYW1l
dGVyIHR5cGUsIG9yIE5VTEwgaWYgdGhpcyBpcyBub3QgYSB0eXBlZAorICAvLyBvciBhIHR5cGUt
cGFyYW1ldGVyaXplZCB0ZXN0LgorICBjb25zdCBjaGFyKiB0eXBlX3BhcmFtKCkgY29uc3Qgewor
ICAgIGlmICh0eXBlX3BhcmFtXy5nZXQoKSAhPSBOVUxMKQorICAgICAgcmV0dXJuIHR5cGVfcGFy
YW1fLT5jX3N0cigpOworICAgIHJldHVybiBOVUxMOworICB9CiAKLSAgLy8gUmV0dXJucyB0aGUg
dGVzdCBjYXNlIGNvbW1lbnQuCi0gIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9jb21tZW50KCkgY29u
c3Q7CisgIC8vIFJldHVybnMgdGhlIHRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZhbHVlIHBh
cmFtZXRlciwgb3IgTlVMTCBpZiB0aGlzCisgIC8vIGlzIG5vdCBhIHZhbHVlLXBhcmFtZXRlcml6
ZWQgdGVzdC4KKyAgY29uc3QgY2hhciogdmFsdWVfcGFyYW0oKSBjb25zdCB7CisgICAgaWYgKHZh
bHVlX3BhcmFtXy5nZXQoKSAhPSBOVUxMKQorICAgICAgcmV0dXJuIHZhbHVlX3BhcmFtXy0+Y19z
dHIoKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIC8vIFJldHVybnMgdGhlIGZpbGUgbmFt
ZSB3aGVyZSB0aGlzIHRlc3QgaXMgZGVmaW5lZC4KKyAgY29uc3QgY2hhciogZmlsZSgpIGNvbnN0
IHsgcmV0dXJuIGxvY2F0aW9uXy5maWxlLmNfc3RyKCk7IH0KIAotICAvLyBSZXR1cm5zIHRoZSB0
ZXN0IGNvbW1lbnQuCi0gIGNvbnN0IGNoYXIqIGNvbW1lbnQoKSBjb25zdDsKKyAgLy8gUmV0dXJu
cyB0aGUgbGluZSB3aGVyZSB0aGlzIHRlc3QgaXMgZGVmaW5lZC4KKyAgaW50IGxpbmUoKSBjb25z
dCB7IHJldHVybiBsb2NhdGlvbl8ubGluZTsgfQogCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlz
IHRlc3Qgc2hvdWxkIHJ1biwgdGhhdCBpcyBpZiB0aGUgdGVzdCBpcyBub3QgZGlzYWJsZWQKLSAg
Ly8gKG9yIGl0IGlzIGRpc2FibGVkIGJ1dCB0aGUgYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxh
ZyBoYXMgYmVlbiBzcGVjaWZpZWQpCi0gIC8vIGFuZCBpdHMgZnVsbCBuYW1lIG1hdGNoZXMgdGhl
IHVzZXItc3BlY2lmaWVkIGZpbHRlci4KKyAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBz
aG91bGQgcnVuLCB0aGF0IGlzIGlmIHRoZSB0ZXN0IGlzIG5vdAorICAvLyBkaXNhYmxlZCAob3Ig
aXQgaXMgZGlzYWJsZWQgYnV0IHRoZSBhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnIGhhcwor
ICAvLyBiZWVuIHNwZWNpZmllZCkgYW5kIGl0cyBmdWxsIG5hbWUgbWF0Y2hlcyB0aGUgdXNlci1z
cGVjaWZpZWQgZmlsdGVyLgogICAvLwogICAvLyBHb29nbGUgVGVzdCBhbGxvd3MgdGhlIHVzZXIg
dG8gZmlsdGVyIHRoZSB0ZXN0cyBieSB0aGVpciBmdWxsIG5hbWVzLgogICAvLyBUaGUgZnVsbCBu
YW1lIG9mIGEgdGVzdCBCYXIgaW4gdGVzdCBjYXNlIEZvbyBpcyBkZWZpbmVkIGFzCkBAIC02Mzgs
MTAgKzY5MSwxOCBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RJbmZvIHsKICAgLy8KICAgLy8gRm9y
IGV4YW1wbGUsICpBKjpGb28uKiBpcyBhIGZpbHRlciB0aGF0IG1hdGNoZXMgYW55IHN0cmluZyB0
aGF0CiAgIC8vIGNvbnRhaW5zIHRoZSBjaGFyYWN0ZXIgJ0EnIG9yIHN0YXJ0cyB3aXRoICJGb28u
Ii4KLSAgYm9vbCBzaG91bGRfcnVuKCkgY29uc3Q7CisgIGJvb2wgc2hvdWxkX3J1bigpIGNvbnN0
IHsgcmV0dXJuIHNob3VsZF9ydW5fOyB9CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIHRl
c3Qgd2lsbCBhcHBlYXIgaW4gdGhlIFhNTCByZXBvcnQuCisgIGJvb2wgaXNfcmVwb3J0YWJsZSgp
IGNvbnN0IHsKKyAgICAvLyBGb3Igbm93LCB0aGUgWE1MIHJlcG9ydCBpbmNsdWRlcyBhbGwgdGVz
dHMgbWF0Y2hpbmcgdGhlIGZpbHRlci4KKyAgICAvLyBJbiB0aGUgZnV0dXJlLCB3ZSBtYXkgdHJp
bSB0ZXN0cyB0aGF0IGFyZSBleGNsdWRlZCBiZWNhdXNlIG9mCisgICAgLy8gc2hhcmRpbmcuCisg
ICAgcmV0dXJuIG1hdGNoZXNfZmlsdGVyXzsKKyAgfQogCiAgIC8vIFJldHVybnMgdGhlIHJlc3Vs
dCBvZiB0aGUgdGVzdC4KLSAgY29uc3QgVGVzdFJlc3VsdCogcmVzdWx0KCkgY29uc3Q7CisgIGNv
bnN0IFRlc3RSZXN1bHQqIHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuICZyZXN1bHRfOyB9CiAKICBw
cml2YXRlOgogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCkBAIC02NDksMzYgKzcxMCw2NCBAQCBj
bGFzcyBHVEVTVF9BUElfIFRlc3RJbmZvIHsKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RF
U1QKICAgZnJpZW5kIGNsYXNzIFRlc3Q7CiAgIGZyaWVuZCBjbGFzcyBUZXN0Q2FzZTsKLSAgZnJp
ZW5kIGNsYXNzIGludGVybmFsOjpUZXN0SW5mb0ltcGw7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5h
bDo6VW5pdFRlc3RJbXBsOworICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlN0cmVhbWluZ0xpc3Rl
bmVyVGVzdDsKICAgZnJpZW5kIFRlc3RJbmZvKiBpbnRlcm5hbDo6TWFrZUFuZFJlZ2lzdGVyVGVz
dEluZm8oCi0gICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwgY29uc3QgY2hhciogbmFt
ZSwKLSAgICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9jb21tZW50LCBjb25zdCBjaGFyKiBjb21t
ZW50LAorICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCisgICAgICBjb25zdCBjaGFy
KiBuYW1lLAorICAgICAgY29uc3QgY2hhciogdHlwZV9wYXJhbSwKKyAgICAgIGNvbnN0IGNoYXIq
IHZhbHVlX3BhcmFtLAorICAgICAgaW50ZXJuYWw6OkNvZGVMb2NhdGlvbiBjb2RlX2xvY2F0aW9u
LAogICAgICAgaW50ZXJuYWw6OlR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkLAogICAgICAgVGVzdDo6
U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAgICAgVGVzdDo6VGVhckRvd25UZXN0Q2Fz
ZUZ1bmMgdGVhcl9kb3duX3RjLAogICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFj
dG9yeSk7CiAKLSAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBtYXRjaGVzIHRoZSB1c2Vy
LXNwZWNpZmllZCBmaWx0ZXIuCi0gIGJvb2wgbWF0Y2hlc19maWx0ZXIoKSBjb25zdDsKKyAgLy8g
Q29uc3RydWN0cyBhIFRlc3RJbmZvIG9iamVjdC4gVGhlIG5ld2x5IGNvbnN0cnVjdGVkIGluc3Rh
bmNlIGFzc3VtZXMKKyAgLy8gb3duZXJzaGlwIG9mIHRoZSBmYWN0b3J5IG9iamVjdC4KKyAgVGVz
dEluZm8oY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RfY2FzZV9uYW1lLAorICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgbmFtZSwKKyAgICAgICAgICAgY29uc3QgY2hhciogYV90eXBlX3BhcmFt
LCAgIC8vIE5VTEwgaWYgbm90IGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QKKyAgICAgICAgICAg
Y29uc3QgY2hhciogYV92YWx1ZV9wYXJhbSwgIC8vIE5VTEwgaWYgbm90IGEgdmFsdWUtcGFyYW1l
dGVyaXplZCB0ZXN0CisgICAgICAgICAgIGludGVybmFsOjpDb2RlTG9jYXRpb24gYV9jb2RlX2xv
Y2F0aW9uLAorICAgICAgICAgICBpbnRlcm5hbDo6VHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCisg
ICAgICAgICAgIGludGVybmFsOjpUZXN0RmFjdG9yeUJhc2UqIGZhY3RvcnkpOwogCiAgIC8vIElu
Y3JlbWVudHMgdGhlIG51bWJlciBvZiBkZWF0aCB0ZXN0cyBlbmNvdW50ZXJlZCBpbiB0aGlzIHRl
c3Qgc28KICAgLy8gZmFyLgotICBpbnQgaW5jcmVtZW50X2RlYXRoX3Rlc3RfY291bnQoKTsKKyAg
aW50IGluY3JlbWVudF9kZWF0aF90ZXN0X2NvdW50KCkgeworICAgIHJldHVybiByZXN1bHRfLmlu
Y3JlbWVudF9kZWF0aF90ZXN0X2NvdW50KCk7CisgIH0KIAotICAvLyBBY2Nlc3NvcnMgZm9yIHRo
ZSBpbXBsZW1lbnRhdGlvbiBvYmplY3QuCi0gIGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGltcGwo
KSB7IHJldHVybiBpbXBsXzsgfQotICBjb25zdCBpbnRlcm5hbDo6VGVzdEluZm9JbXBsKiBpbXBs
KCkgY29uc3QgeyByZXR1cm4gaW1wbF87IH0KKyAgLy8gQ3JlYXRlcyB0aGUgdGVzdCBvYmplY3Qs
IHJ1bnMgaXQsIHJlY29yZHMgaXRzIHJlc3VsdCwgYW5kIHRoZW4KKyAgLy8gZGVsZXRlcyBpdC4K
KyAgdm9pZCBSdW4oKTsKIAotICAvLyBDb25zdHJ1Y3RzIGEgVGVzdEluZm8gb2JqZWN0LiBUaGUg
bmV3bHkgY29uc3RydWN0ZWQgaW5zdGFuY2UgYXNzdW1lcwotICAvLyBvd25lcnNoaXAgb2YgdGhl
IGZhY3Rvcnkgb2JqZWN0LgotICBUZXN0SW5mbyhjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwg
Y29uc3QgY2hhciogbmFtZSwKLSAgICAgICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX2NvbW1l
bnQsIGNvbnN0IGNoYXIqIGNvbW1lbnQsCi0gICAgICAgICAgIGludGVybmFsOjpUeXBlSWQgZml4
dHVyZV9jbGFzc19pZCwKLSAgICAgICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFj
dG9yeSk7CisgIHN0YXRpYyB2b2lkIENsZWFyVGVzdFJlc3VsdChUZXN0SW5mbyogdGVzdF9pbmZv
KSB7CisgICAgdGVzdF9pbmZvLT5yZXN1bHRfLkNsZWFyKCk7CisgIH0KIAotICAvLyBBbiBvcGFx
dWUgaW1wbGVtZW50YXRpb24gb2JqZWN0LgotICBpbnRlcm5hbDo6VGVzdEluZm9JbXBsKiBpbXBs
XzsKKyAgLy8gVGhlc2UgZmllbGRzIGFyZSBpbW11dGFibGUgcHJvcGVydGllcyBvZiB0aGUgdGVz
dC4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdF9jYXNlX25hbWVfOyAgICAgLy8gVGVzdCBjYXNl
IG5hbWUKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZV87ICAgICAgICAgICAgICAgLy8gVGVzdCBu
YW1lCisgIC8vIE5hbWUgb2YgdGhlIHBhcmFtZXRlciB0eXBlLCBvciBOVUxMIGlmIHRoaXMgaXMg
bm90IGEgdHlwZWQgb3IgYQorICAvLyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKyAgY29uc3Qg
aW50ZXJuYWw6OnNjb3BlZF9wdHI8Y29uc3QgOjpzdGQ6OnN0cmluZz4gdHlwZV9wYXJhbV87Cisg
IC8vIFRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZhbHVlIHBhcmFtZXRlciwgb3IgTlVMTCBp
ZiB0aGlzIGlzIG5vdCBhCisgIC8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKyAgY29uc3Qg
aW50ZXJuYWw6OnNjb3BlZF9wdHI8Y29uc3QgOjpzdGQ6OnN0cmluZz4gdmFsdWVfcGFyYW1fOwor
ICBpbnRlcm5hbDo6Q29kZUxvY2F0aW9uIGxvY2F0aW9uXzsKKyAgY29uc3QgaW50ZXJuYWw6OlR5
cGVJZCBmaXh0dXJlX2NsYXNzX2lkXzsgICAvLyBJRCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNz
CisgIGJvb2wgc2hvdWxkX3J1bl87ICAgICAgICAgICAgICAgICAvLyBUcnVlIGlmZiB0aGlzIHRl
c3Qgc2hvdWxkIHJ1bgorICBib29sIGlzX2Rpc2FibGVkXzsgICAgICAgICAgICAgICAgLy8gVHJ1
ZSBpZmYgdGhpcyB0ZXN0IGlzIGRpc2FibGVkCisgIGJvb2wgbWF0Y2hlc19maWx0ZXJfOyAgICAg
ICAgICAgICAvLyBUcnVlIGlmIHRoaXMgdGVzdCBtYXRjaGVzIHRoZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gdXNlci1zcGVjaWZpZWQgZmlsdGVyLgorICBpbnRlcm5h
bDo6VGVzdEZhY3RvcnlCYXNlKiBjb25zdCBmYWN0b3J5XzsgIC8vIFRoZSBmYWN0b3J5IHRoYXQg
Y3JlYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHRoZSB0ZXN0IG9iamVjdAorCisgIC8vIFRoaXMgZmllbGQgaXMgbXV0YWJsZSBhbmQgbmVlZHMg
dG8gYmUgcmVzZXQgYmVmb3JlIHJ1bm5pbmcgdGhlCisgIC8vIHRlc3QgZm9yIHRoZSBzZWNvbmQg
dGltZS4KKyAgVGVzdFJlc3VsdCByZXN1bHRfOwogCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8oVGVzdEluZm8pOwogfTsKQEAgLTY5Niw5ICs3ODUsMTEgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBUZXN0Q2FzZSB7CiAgIC8vIEFyZ3VtZW50czoKICAgLy8KICAgLy8gICBuYW1lOiAgICAg
ICAgIG5hbWUgb2YgdGhlIHRlc3QgY2FzZQorICAvLyAgIGFfdHlwZV9wYXJhbTogdGhlIG5hbWUg
b2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorICAvLyAgICAgICAgICAg
ICAgICAgdGhpcyBpcyBub3QgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KICAgLy8gICBzZXRf
dXBfdGM6ICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBj
YXNlCiAgIC8vICAgdGVhcl9kb3duX3RjOiBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRl
YXJzIGRvd24gdGhlIHRlc3QgY2FzZQotICBUZXN0Q2FzZShjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBjaGFyKiBjb21tZW50LAorICBUZXN0Q2FzZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFy
KiBhX3R5cGVfcGFyYW0sCiAgICAgICAgICAgIFRlc3Q6OlNldFVwVGVzdENhc2VGdW5jIHNldF91
cF90YywKICAgICAgICAgICAgVGVzdDo6VGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3Rj
KTsKIApAQCAtNzA4LDggKzc5OSwxMyBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RDYXNlIHsKICAg
Ly8gR2V0cyB0aGUgbmFtZSBvZiB0aGUgVGVzdENhc2UuCiAgIGNvbnN0IGNoYXIqIG5hbWUoKSBj
b25zdCB7IHJldHVybiBuYW1lXy5jX3N0cigpOyB9CiAKLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBj
YXNlIGNvbW1lbnQuCi0gIGNvbnN0IGNoYXIqIGNvbW1lbnQoKSBjb25zdCB7IHJldHVybiBjb21t
ZW50Xy5jX3N0cigpOyB9CisgIC8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB0
eXBlLCBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEKKyAgLy8gdHlwZS1wYXJhbWV0ZXJpemVkIHRl
c3QgY2FzZS4KKyAgY29uc3QgY2hhciogdHlwZV9wYXJhbSgpIGNvbnN0IHsKKyAgICBpZiAodHlw
ZV9wYXJhbV8uZ2V0KCkgIT0gTlVMTCkKKyAgICAgIHJldHVybiB0eXBlX3BhcmFtXy0+Y19zdHIo
KTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgdGVz
dCBpbiB0aGlzIHRlc3QgY2FzZSBzaG91bGQgcnVuLgogICBib29sIHNob3VsZF9ydW4oKSBjb25z
dCB7IHJldHVybiBzaG91bGRfcnVuXzsgfQpAQCAtNzIwLDkgKzgxNiwxNSBAQCBjbGFzcyBHVEVT
VF9BUElfIFRlc3RDYXNlIHsKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cyBp
biB0aGlzIHRlc3QgY2FzZS4KICAgaW50IGZhaWxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CiAKKyAg
Ly8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHRoYXQgd2lsbCBiZSByZXBvcnRl
ZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3Vu
dCgpIGNvbnN0OworCiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyBpbiB0
aGlzIHRlc3QgY2FzZS4KICAgaW50IGRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAv
LyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJlcG9y
dC4KKyAgaW50IHJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8vIEdldCB0aGUg
bnVtYmVyIG9mIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlIHRoYXQgc2hvdWxkIHJ1bi4KICAgaW50
IHRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3Q7CiAKQEAgLTc0Miw2ICs4NDQsMTAgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIHRvdGFsX3Rlc3RfY291bnQoKSAtIDEuIElmIGkg
aXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVMTC4KICAgY29uc3QgVGVzdEluZm8qIEdl
dFRlc3RJbmZvKGludCBpKSBjb25zdDsKIAorICAvLyBSZXR1cm5zIHRoZSBUZXN0UmVzdWx0IHRo
YXQgaG9sZHMgdGVzdCBwcm9wZXJ0aWVzIHJlY29yZGVkIGR1cmluZworICAvLyBleGVjdXRpb24g
b2YgU2V0VXBUZXN0Q2FzZSBhbmQgVGVhckRvd25UZXN0Q2FzZS4KKyAgY29uc3QgVGVzdFJlc3Vs
dCYgYWRfaG9jX3Rlc3RfcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gYWRfaG9jX3Rlc3RfcmVzdWx0
XzsgfQorCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNsYXNzIFRlc3Q7CiAgIGZyaWVuZCBjbGFzcyBp
bnRlcm5hbDo6VW5pdFRlc3RJbXBsOwpAQCAtNzc2LDE3ICs4ODIsNDQgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBUZXN0Q2FzZSB7CiAgIC8vIFJ1bnMgZXZlcnkgdGVzdCBpbiB0aGlzIFRlc3RDYXNlLgog
ICB2b2lkIFJ1bigpOwogCisgIC8vIFJ1bnMgU2V0VXBUZXN0Q2FzZSgpIGZvciB0aGlzIFRlc3RD
YXNlLiAgVGhpcyB3cmFwcGVyIGlzIG5lZWRlZAorICAvLyBmb3IgY2F0Y2hpbmcgZXhjZXB0aW9u
cyB0aHJvd24gZnJvbSBTZXRVcFRlc3RDYXNlKCkuCisgIHZvaWQgUnVuU2V0VXBUZXN0Q2FzZSgp
IHsgKCpzZXRfdXBfdGNfKSgpOyB9CisKKyAgLy8gUnVucyBUZWFyRG93blRlc3RDYXNlKCkgZm9y
IHRoaXMgVGVzdENhc2UuICBUaGlzIHdyYXBwZXIgaXMKKyAgLy8gbmVlZGVkIGZvciBjYXRjaGlu
ZyBleGNlcHRpb25zIHRocm93biBmcm9tIFRlYXJEb3duVGVzdENhc2UoKS4KKyAgdm9pZCBSdW5U
ZWFyRG93blRlc3RDYXNlKCkgeyAoKnRlYXJfZG93bl90Y18pKCk7IH0KKwogICAvLyBSZXR1cm5z
IHRydWUgaWZmIHRlc3QgcGFzc2VkLgotICBzdGF0aWMgYm9vbCBUZXN0UGFzc2VkKGNvbnN0IFRl
c3RJbmZvICogdGVzdF9pbmZvKTsKKyAgc3RhdGljIGJvb2wgVGVzdFBhc3NlZChjb25zdCBUZXN0
SW5mbyogdGVzdF9pbmZvKSB7CisgICAgcmV0dXJuIHRlc3RfaW5mby0+c2hvdWxkX3J1bigpICYm
IHRlc3RfaW5mby0+cmVzdWx0KCktPlBhc3NlZCgpOworICB9CiAKICAgLy8gUmV0dXJucyB0cnVl
IGlmZiB0ZXN0IGZhaWxlZC4KLSAgc3RhdGljIGJvb2wgVGVzdEZhaWxlZChjb25zdCBUZXN0SW5m
byAqIHRlc3RfaW5mbyk7CisgIHN0YXRpYyBib29sIFRlc3RGYWlsZWQoY29uc3QgVGVzdEluZm8q
IHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPnNob3VsZF9ydW4oKSAmJiB0ZXN0
X2luZm8tPnJlc3VsdCgpLT5GYWlsZWQoKTsKKyAgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYg
dGhlIHRlc3QgaXMgZGlzYWJsZWQgYW5kIHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhNTAorICAv
LyByZXBvcnQuCisgIHN0YXRpYyBib29sIFRlc3RSZXBvcnRhYmxlRGlzYWJsZWQoY29uc3QgVGVz
dEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPmlzX3JlcG9ydGFibGUo
KSAmJiB0ZXN0X2luZm8tPmlzX2Rpc2FibGVkXzsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBp
ZmYgdGVzdCBpcyBkaXNhYmxlZC4KLSAgc3RhdGljIGJvb2wgVGVzdERpc2FibGVkKGNvbnN0IFRl
c3RJbmZvICogdGVzdF9pbmZvKTsKKyAgc3RhdGljIGJvb2wgVGVzdERpc2FibGVkKGNvbnN0IFRl
c3RJbmZvKiB0ZXN0X2luZm8pIHsKKyAgICByZXR1cm4gdGVzdF9pbmZvLT5pc19kaXNhYmxlZF87
CisgIH0KKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgdGVzdCB3aWxsIGFwcGVhciBpbiB0
aGUgWE1MIHJlcG9ydC4KKyAgc3RhdGljIGJvb2wgVGVzdFJlcG9ydGFibGUoY29uc3QgVGVzdElu
Zm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPmlzX3JlcG9ydGFibGUoKTsK
KyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdGVzdCBzaG91bGQgcnVuLgot
ICBzdGF0aWMgYm9vbCBTaG91bGRSdW5UZXN0KGNvbnN0IFRlc3RJbmZvICp0ZXN0X2luZm8pOwor
ICBzdGF0aWMgYm9vbCBTaG91bGRSdW5UZXN0KGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsK
KyAgICByZXR1cm4gdGVzdF9pbmZvLT5zaG91bGRfcnVuKCk7CisgIH0KIAogICAvLyBTaHVmZmxl
cyB0aGUgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCiAgIHZvaWQgU2h1ZmZsZVRlc3RzKGludGVy
bmFsOjpSYW5kb20qIHJhbmRvbSk7CkBAIC03OTUsOSArOTI4LDEwIEBAIGNsYXNzIEdURVNUX0FQ
SV8gVGVzdENhc2UgewogICB2b2lkIFVuc2h1ZmZsZVRlc3RzKCk7CiAKICAgLy8gTmFtZSBvZiB0
aGUgdGVzdCBjYXNlLgotICBpbnRlcm5hbDo6U3RyaW5nIG5hbWVfOwotICAvLyBDb21tZW50IG9u
IHRoZSB0ZXN0IGNhc2UuCi0gIGludGVybmFsOjpTdHJpbmcgY29tbWVudF87CisgIHN0ZDo6c3Ry
aW5nIG5hbWVfOworICAvLyBOYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdHlwZSwgb3IgTlVMTCBpZiB0
aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEKKyAgLy8gdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisg
IGNvbnN0IGludGVybmFsOjpzY29wZWRfcHRyPGNvbnN0IDo6c3RkOjpzdHJpbmc+IHR5cGVfcGFy
YW1fOwogICAvLyBUaGUgdmVjdG9yIG9mIFRlc3RJbmZvcyBpbiB0aGVpciBvcmlnaW5hbCBvcmRl
ci4gIEl0IG93bnMgdGhlCiAgIC8vIGVsZW1lbnRzIGluIHRoZSB2ZWN0b3IuCiAgIHN0ZDo6dmVj
dG9yPFRlc3RJbmZvKj4gdGVzdF9pbmZvX2xpc3RfOwpAQCAtODEzLDEzICs5NDcsMTYgQEAgY2xh
c3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIGJvb2wgc2hvdWxkX3J1bl87CiAgIC8vIEVsYXBz
ZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5NaWxsaXMgZWxhcHNlZF90aW1lXzsK
KyAgLy8gSG9sZHMgdGVzdCBwcm9wZXJ0aWVzIHJlY29yZGVkIGR1cmluZyBleGVjdXRpb24gb2Yg
U2V0VXBUZXN0Q2FzZSBhbmQKKyAgLy8gVGVhckRvd25UZXN0Q2FzZS4KKyAgVGVzdFJlc3VsdCBh
ZF9ob2NfdGVzdF9yZXN1bHRfOwogCiAgIC8vIFdlIGRpc2FsbG93IGNvcHlpbmcgVGVzdENhc2Vz
LgogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRlc3RDYXNlKTsKIH07CiAKIC8v
IEFuIEVudmlyb25tZW50IG9iamVjdCBpcyBjYXBhYmxlIG9mIHNldHRpbmcgdXAgYW5kIHRlYXJp
bmcgZG93biBhbgotLy8gZW52aXJvbm1lbnQuICBUaGUgdXNlciBzaG91bGQgc3ViY2xhc3MgdGhp
cyB0byBkZWZpbmUgaGlzIG93bgorLy8gZW52aXJvbm1lbnQuICBZb3Ugc2hvdWxkIHN1YmNsYXNz
IHRoaXMgdG8gZGVmaW5lIHlvdXIgb3duCiAvLyBlbnZpcm9ubWVudChzKS4KIC8vCiAvLyBBbiBF
bnZpcm9ubWVudCBvYmplY3QgZG9lcyB0aGUgc2V0LXVwIGFuZCB0ZWFyLWRvd24gaW4gdmlydHVh
bApAQCAtODc2LDcgKzEwMTMsNyBAQCBjbGFzcyBUZXN0RXZlbnRMaXN0ZW5lciB7CiAgIC8vIEZp
cmVkIGJlZm9yZSB0aGUgdGVzdCBzdGFydHMuCiAgIHZpcnR1YWwgdm9pZCBPblRlc3RTdGFydChj
b25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSA9IDA7CiAKLSAgLy8gRmlyZWQgYWZ0ZXIgYSBmYWls
ZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VTUygpLgorICAvLyBGaXJlZCBhZnRlciBhIGZhaWxlZCBh
c3NlcnRpb24gb3IgYSBTVUNDRUVEKCkgaW52b2NhdGlvbi4KICAgdmlydHVhbCB2b2lkIE9uVGVz
dFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpID0gMDsK
IAogICAvLyBGaXJlZCBhZnRlciB0aGUgdGVzdCBlbmRzLgpAQCAtOTYxLDEwICsxMDk4LDEwIEBA
IGNsYXNzIEdURVNUX0FQSV8gVGVzdEV2ZW50TGlzdGVuZXJzIHsKIAogIHByaXZhdGU6CiAgIGZy
aWVuZCBjbGFzcyBUZXN0Q2FzZTsKKyAgZnJpZW5kIGNsYXNzIFRlc3RJbmZvOwogICBmcmllbmQg
Y2xhc3MgaW50ZXJuYWw6OkRlZmF1bHRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyOwogICBm
cmllbmQgY2xhc3MgaW50ZXJuYWw6Ok5vRXhlY0RlYXRoVGVzdDsKICAgZnJpZW5kIGNsYXNzIGlu
dGVybmFsOjpUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3NvcjsKLSAgZnJpZW5kIGNsYXNzIGludGVy
bmFsOjpUZXN0SW5mb0ltcGw7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VW5pdFRlc3RJbXBs
OwogCiAgIC8vIFJldHVybnMgcmVwZWF0ZXIgdGhhdCBicm9hZGNhc3RzIHRoZSBUZXN0RXZlbnRM
aXN0ZW5lciBldmVudHMgdG8gYWxsCkBAIC0xMDMyLDExICsxMTY5LDEzIEBAIGNsYXNzIEdURVNU
X0FQSV8gVW5pdFRlc3QgewogCiAgIC8vIFJldHVybnMgdGhlIFRlc3RDYXNlIG9iamVjdCBmb3Ig
dGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLAogICAvLyBvciBOVUxMIGlmIG5vIHRl
c3QgaXMgcnVubmluZy4KLSAgY29uc3QgVGVzdENhc2UqIGN1cnJlbnRfdGVzdF9jYXNlKCkgY29u
c3Q7CisgIGNvbnN0IFRlc3RDYXNlKiBjdXJyZW50X3Rlc3RfY2FzZSgpIGNvbnN0CisgICAgICBH
VEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCiAgIC8vIFJldHVybnMgdGhlIFRlc3RJbmZv
IG9iamVjdCBmb3IgdGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLAogICAvLyBvciBO
VUxMIGlmIG5vIHRlc3QgaXMgcnVubmluZy4KLSAgY29uc3QgVGVzdEluZm8qIGN1cnJlbnRfdGVz
dF9pbmZvKCkgY29uc3Q7CisgIGNvbnN0IFRlc3RJbmZvKiBjdXJyZW50X3Rlc3RfaW5mbygpIGNv
bnN0CisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCiAgIC8vIFJldHVybnMg
dGhlIHJhbmRvbSBzZWVkIHVzZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50IHRlc3QgcnVu
LgogICBpbnQgcmFuZG9tX3NlZWQoKSBjb25zdDsKQEAgLTEwNDYsNyArMTE4NSw4IEBAIGNsYXNz
IEdURVNUX0FQSV8gVW5pdFRlc3QgewogICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFu
ZCBpbnN0YW50aWF0ZSBhbmQgcmVnaXN0ZXIgdGhlbS4KICAgLy8KICAgLy8gSU5URVJOQUwgSU1Q
TEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotICBpbnRlcm5hbDo6
UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkmIHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3Ry
eSgpOworICBpbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkmIHBhcmFtZXRl
cml6ZWRfdGVzdF9yZWdpc3RyeSgpCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8p
OwogI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogCiAgIC8vIEdldHMgdGhlIG51bWJl
ciBvZiBzdWNjZXNzZnVsIHRlc3QgY2FzZXMuCkBAIC0xMDY4LDE1ICsxMjA4LDI1IEBAIGNsYXNz
IEdURVNUX0FQSV8gVW5pdFRlc3QgewogICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZmFpbGVkIHRl
c3RzLgogICBpbnQgZmFpbGVkX3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAvLyBHZXRzIHRoZSBu
dW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwg
cmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CisK
ICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzLgogICBpbnQgZGlzYWJsZWRf
dGVzdF9jb3VudCgpIGNvbnN0OwogCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0cyB0byBi
ZSBwcmludGVkIGluIHRoZSBYTUwgcmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV90ZXN0X2NvdW50
KCkgY29uc3Q7CisKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0cy4KICAgaW50IHRv
dGFsX3Rlc3RfY291bnQoKSBjb25zdDsKIAogICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMg
dGhhdCBzaG91bGQgcnVuLgogICBpbnQgdGVzdF90b19ydW5fY291bnQoKSBjb25zdDsKIAorICAv
LyBHZXRzIHRoZSB0aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0gc3RhcnQsIGluIG1zIGZyb20gdGhl
IHN0YXJ0IG9mIHRoZQorICAvLyBVTklYIGVwb2NoLgorICBUaW1lSW5NaWxsaXMgc3RhcnRfdGlt
ZXN0YW1wKCkgY29uc3Q7CisKICAgLy8gR2V0cyB0aGUgZWxhcHNlZCB0aW1lLCBpbiBtaWxsaXNl
Y29uZHMuCiAgIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3RpbWUoKSBjb25zdDsKIApAQCAtMTA5MSw2
ICsxMjQxLDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3QgewogICAvLyB0b3RhbF90ZXN0
X2Nhc2VfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVM
TC4KICAgY29uc3QgVGVzdENhc2UqIEdldFRlc3RDYXNlKGludCBpKSBjb25zdDsKIAorICAvLyBS
ZXR1cm5zIHRoZSBUZXN0UmVzdWx0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gb24gdGVzdCBmYWls
dXJlcyBhbmQKKyAgLy8gcHJvcGVydGllcyBsb2dnZWQgb3V0c2lkZSBvZiBpbmRpdmlkdWFsIHRl
c3QgY2FzZXMuCisgIGNvbnN0IFRlc3RSZXN1bHQmIGFkX2hvY190ZXN0X3Jlc3VsdCgpIGNvbnN0
OworCiAgIC8vIFJldHVybnMgdGhlIGxpc3Qgb2YgZXZlbnQgbGlzdGVuZXJzIHRoYXQgY2FuIGJl
IHVzZWQgdG8gdHJhY2sgZXZlbnRzCiAgIC8vIGluc2lkZSBHb29nbGUgVGVzdC4KICAgVGVzdEV2
ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMoKTsKQEAgLTExMTQsMTIgKzEyNjgsMTYgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBVbml0VGVzdCB7CiAgIHZvaWQgQWRkVGVzdFBhcnRSZXN1bHQoVGVzdFBhcnRS
ZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogZmlsZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lX251bWJl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnRlcm5hbDo6U3RyaW5nJiBtZXNz
YWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludGVybmFsOjpTdHJpbmcmIG9z
X3N0YWNrX3RyYWNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
b3Nfc3RhY2tfdHJhY2UpCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCi0g
IC8vIEFkZHMgYSBUZXN0UHJvcGVydHkgdG8gdGhlIGN1cnJlbnQgVGVzdFJlc3VsdCBvYmplY3Qu
IElmIHRoZSByZXN1bHQgYWxyZWFkeQotICAvLyBjb250YWlucyBhIHByb3BlcnR5IHdpdGggdGhl
IHNhbWUga2V5LCB0aGUgdmFsdWUgd2lsbCBiZSB1cGRhdGVkLgotICB2b2lkIFJlY29yZFByb3Bl
cnR5Rm9yQ3VycmVudFRlc3QoY29uc3QgY2hhcioga2V5LCBjb25zdCBjaGFyKiB2YWx1ZSk7Cisg
IC8vIEFkZHMgYSBUZXN0UHJvcGVydHkgdG8gdGhlIGN1cnJlbnQgVGVzdFJlc3VsdCBvYmplY3Qg
d2hlbiBpbnZva2VkIGZyb20KKyAgLy8gaW5zaWRlIGEgdGVzdCwgdG8gY3VycmVudCBUZXN0Q2Fz
ZSdzIGFkX2hvY190ZXN0X3Jlc3VsdF8gd2hlbiBpbnZva2VkCisgIC8vIGZyb20gU2V0VXBUZXN0
Q2FzZSBvciBUZWFyRG93blRlc3RDYXNlLCBvciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNldAor
ICAvLyB3aGVuIGludm9rZWQgZWxzZXdoZXJlLiAgSWYgdGhlIHJlc3VsdCBhbHJlYWR5IGNvbnRh
aW5zIGEgcHJvcGVydHkgd2l0aAorICAvLyB0aGUgc2FtZSBrZXksIHRoZSB2YWx1ZSB3aWxsIGJl
IHVwZGF0ZWQuCisgIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwg
Y29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKTsKIAogICAvLyBHZXRzIHRoZSBpLXRoIHRlc3QgY2Fz
ZSBhbW9uZyBhbGwgdGhlIHRlc3QgY2FzZXMuIGkgY2FuIHJhbmdlIGZyb20gMCB0bwogICAvLyB0
b3RhbF90ZXN0X2Nhc2VfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJl
dHVybnMgTlVMTC4KQEAgLTExMzQsMTEgKzEyOTIsMTMgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0
VGVzdCB7CiAgIGZyaWVuZCBjbGFzcyBUZXN0OwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkFz
c2VydEhlbHBlcjsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpTY29wZWRUcmFjZTsKKyAgZnJp
ZW5kIGNsYXNzIGludGVybmFsOjpTdHJlYW1pbmdMaXN0ZW5lclRlc3Q7CisgIGZyaWVuZCBjbGFz
cyBpbnRlcm5hbDo6VW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3RIZWxwZXI7CiAgIGZyaWVuZCBF
bnZpcm9ubWVudCogQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KEVudmlyb25tZW50KiBlbnYpOwog
ICBmcmllbmQgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCogaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1w
bCgpOwogICBmcmllbmQgdm9pZCBpbnRlcm5hbDo6UmVwb3J0RmFpbHVyZUluVW5rbm93bkxvY2F0
aW9uKAogICAgICAgVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCi0gICAgICBjb25z
dCBpbnRlcm5hbDo6U3RyaW5nJiBtZXNzYWdlKTsKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBt
ZXNzYWdlKTsKIAogICAvLyBDcmVhdGVzIGFuIGVtcHR5IFVuaXRUZXN0LgogICBVbml0VGVzdCgp
OwpAQCAtMTE0OCwxMCArMTMwOCwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0IHsKIAog
ICAvLyBQdXNoZXMgYSB0cmFjZSBkZWZpbmVkIGJ5IFNDT1BFRF9UUkFDRSgpIG9uIHRvIHRoZSBw
ZXItdGhyZWFkCiAgIC8vIEdvb2dsZSBUZXN0IHRyYWNlIHN0YWNrLgotICB2b2lkIFB1c2hHVGVz
dFRyYWNlKGNvbnN0IGludGVybmFsOjpUcmFjZUluZm8mIHRyYWNlKTsKKyAgdm9pZCBQdXNoR1Rl
c3RUcmFjZShjb25zdCBpbnRlcm5hbDo6VHJhY2VJbmZvJiB0cmFjZSkKKyAgICAgIEdURVNUX0xP
Q0tfRVhDTFVERURfKG11dGV4Xyk7CiAKICAgLy8gUG9wcyBhIHRyYWNlIGZyb20gdGhlIHBlci10
aHJlYWQgR29vZ2xlIFRlc3QgdHJhY2Ugc3RhY2suCi0gIHZvaWQgUG9wR1Rlc3RUcmFjZSgpOwor
ICB2b2lkIFBvcEdUZXN0VHJhY2UoKQorICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhf
KTsKIAogICAvLyBQcm90ZWN0cyBtdXRhYmxlIHN0YXRlIGluICppbXBsXy4gIFRoaXMgaXMgbXV0
YWJsZSBhcyBzb21lIGNvbnN0CiAgIC8vIG1ldGhvZHMgbmVlZCB0byBsb2NrIGl0IHRvby4KQEAg
LTEyMDYsODIgKzEzNjgsNDIgQEAgR1RFU1RfQVBJXyB2b2lkIEluaXRHb29nbGVUZXN0KGludCog
YXJnYywgd2NoYXJfdCoqIGFyZ3YpOwogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCi0vLyBUaGVz
ZSBvdmVybG9hZGVkIHZlcnNpb25zIGhhbmRsZSA6OnN0ZDo6c3RyaW5nIGFuZCA6OnN0ZDo6d3N0
cmluZy4KLUdURVNUX0FQSV8gaW5saW5lIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShj
b25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIpIHsKLSAgcmV0dXJuIChNZXNzYWdlKCkgPDwgJyInIDw8
IHN0ciA8PCAnIicpLkdldFN0cmluZygpOwotfQotCi0jaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5H
Ci1HVEVTVF9BUElfIGlubGluZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3Qg
OjpzdGQ6OndzdHJpbmcmIHdzdHIpIHsKLSAgcmV0dXJuIChNZXNzYWdlKCkgPDwgIkxcIiIgPDwg
d3N0ciA8PCAnIicpLkdldFN0cmluZygpOwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dT
VFJJTkcKLQotLy8gVGhlc2Ugb3ZlcmxvYWRlZCB2ZXJzaW9ucyBoYW5kbGUgOjpzdHJpbmcgYW5k
IDo6d3N0cmluZy4KLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotR1RFU1RfQVBJXyBpbmxp
bmUgU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKGNvbnN0IDo6c3RyaW5nJiBzdHIpIHsK
LSAgcmV0dXJuIChNZXNzYWdlKCkgPDwgJyInIDw8IHN0ciA8PCAnIicpLkdldFN0cmluZygpOwot
fQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotCi0jaWYgR1RFU1RfSEFTX0dM
T0JBTF9XU1RSSU5HCi1HVEVTVF9BUElfIGlubGluZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1l
c3NhZ2UoY29uc3QgOjp3c3RyaW5nJiB3c3RyKSB7Ci0gIHJldHVybiAoTWVzc2FnZSgpIDw8ICJM
XCIiIDw8IHdzdHIgPDwgJyInKS5HZXRTdHJpbmcoKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X0dMT0JBTF9XU1RSSU5HCi0KLS8vIEZvcm1hdHMgYSBjb21wYXJpc29uIGFzc2VydGlvbiAoZS5n
LiBBU1NFUlRfRVEsIEVYUEVDVF9MVCwgYW5kIGV0YykKLS8vIG9wZXJhbmQgdG8gYmUgdXNlZCBp
biBhIGZhaWx1cmUgbWVzc2FnZS4gIFRoZSB0eXBlIChidXQgbm90IHZhbHVlKQotLy8gb2YgdGhl
IG90aGVyIG9wZXJhbmQgbWF5IGFmZmVjdCB0aGUgZm9ybWF0LiAgVGhpcyBhbGxvd3MgdXMgdG8K
LS8vIHByaW50IGEgY2hhciogYXMgYSByYXcgcG9pbnRlciB3aGVuIGl0IGlzIGNvbXBhcmVkIGFn
YWluc3QgYW5vdGhlcgotLy8gY2hhciosIGFuZCBwcmludCBpdCBhcyBhIEMgc3RyaW5nIHdoZW4g
aXQgaXMgY29tcGFyZWQgYWdhaW5zdCBhbgotLy8gc3RkOjpzdHJpbmcgb2JqZWN0LCBmb3IgZXhh
bXBsZS4KLS8vCi0vLyBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpZ25vcmVzIHRoZSB0eXBl
IG9mIHRoZSBvdGhlciBvcGVyYW5kLgotLy8gU29tZSBzcGVjaWFsaXplZCB2ZXJzaW9ucyBhcmUg
dXNlZCB0byBoYW5kbGUgZm9ybWF0dGluZyB3aWRlIG9yCi0vLyBuYXJyb3cgQyBzdHJpbmdzLgot
Ly8KLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJP
R1JBTS4KKy8vIFNlcGFyYXRlIHRoZSBlcnJvciBnZW5lcmF0aW5nIGNvZGUgZnJvbSB0aGUgY29k
ZSBwYXRoIHRvIHJlZHVjZSB0aGUgc3RhY2sKKy8vIGZyYW1lIHNpemUgb2YgQ21wSGVscGVyRVEu
IFRoaXMgaGVscHMgcmVkdWNlIHRoZSBvdmVyaGVhZCBvZiBzb21lIHNhbml0aXplcnMKKy8vIHdo
ZW4gY2FsbGluZyBFWFBFQ1RfKiBpbiBhIHRpZ2h0IGxvb3AuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyPgotU3RyaW5nIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2Fn
ZShjb25zdCBUMSYgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFQyJiAvKiBvdGhlcl9vcGVyYW5kICovKSB7Ci0gIHJldHVybiBGb3JtYXRGb3JG
YWlsdXJlTWVzc2FnZSh2YWx1ZSk7CitBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRVFGYWlsdXJl
KGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVDEmIGxocywgY29uc3QgVDImIHJocykgeworICByZXR1cm4g
RXFGYWlsdXJlKGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIHJoc19leHByZXNz
aW9uLAorICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2Fn
ZShsaHMsIHJocyksCisgICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1
cmVNZXNzYWdlKHJocywgbGhzKSwKKyAgICAgICAgICAgICAgICAgICBmYWxzZSk7CiB9CiAKIC8v
IFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9FUS4KIHRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRVEoY29u
c3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUMSYgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVDImIGFjdHVhbCkgewotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkg
ICAgICAgICAgLy8gU2F2ZXMgdGhlIGN1cnJlbnQgd2FybmluZyBzdGF0ZS4KLSNwcmFnbWEgd2Fy
bmluZyhkaXNhYmxlOjQzODkpICAvLyBUZW1wb3JhcmlseSBkaXNhYmxlcyB3YXJuaW5nIG9uCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2lnbmVkL3Vuc2lnbmVkIG1pc21hdGNo
LgotI2VuZGlmCi0KLSAgaWYgKGV4cGVjdGVkID09IGFjdHVhbCkgeworQXNzZXJ0aW9uUmVzdWx0
IENtcEhlbHBlckVRKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFQxJiBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVDImIHJocykgeworR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDM4OSAv
KiBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2ggKi8pCisgIGlmIChsaHMgPT0gcmhzKSB7CiAgICAg
cmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklO
R1NfUE9QXygpCiAKLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHBvcCkgICAgICAg
ICAgLy8gUmVzdG9yZXMgdGhlIHdhcm5pbmcgc3RhdGUuCi0jZW5kaWYKLQotICByZXR1cm4gRXFG
YWlsdXJlKGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgYWN0dWFsX2V4
cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVN
ZXNzYWdlKGV4cGVjdGVkLCBhY3R1YWwpLAotICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNv
bXBhcmlzb25GYWlsdXJlTWVzc2FnZShhY3R1YWwsIGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAg
ICAgICBmYWxzZSk7CisgIHJldHVybiBDbXBIZWxwZXJFUUZhaWx1cmUobGhzX2V4cHJlc3Npb24s
IHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7CiB9CiAKIC8vIFdpdGggdGhpcyBvdmVybG9hZGVk
IHZlcnNpb24sIHdlIGFsbG93IGFub255bW91cyBlbnVtcyB0byBiZSB1c2VkCiAvLyBpbiB7QVNT
RVJUfEVYUEVDVH1fRVEgd2hlbiBjb21waWxlZCB3aXRoIGdjYyA0LCBhcyBhbm9ueW1vdXMgZW51
bXMKIC8vIGNhbiBiZSBpbXBsaWNpdGx5IGNhc3QgdG8gQmlnZ2VzdEludC4KLUdURVNUX0FQSV8g
QXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBh
Y3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEJpZ2dlc3RJbnQgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBCaWdnZXN0SW50IGFjdHVhbCk7CitHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBI
ZWxwZXJFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBsaHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IHJocyk7CiAKIC8vIFRoZSBo
ZWxwZXIgY2xhc3MgZm9yIHtBU1NFUlR8RVhQRUNUfV9FUS4gIFRoZSB0ZW1wbGF0ZSBhcmd1bWVu
dAogLy8gbGhzX2lzX251bGxfbGl0ZXJhbCBpcyB0cnVlIGlmZiB0aGUgZmlyc3QgYXJndW1lbnQg
dG8gQVNTRVJUX0VRKCkKQEAgLTEyOTIsMTIgKzE0MTQsMTEgQEAgY2xhc3MgRXFIZWxwZXIgewog
IHB1YmxpYzoKICAgLy8gVGhpcyB0ZW1wbGF0aXplZCB2ZXJzaW9uIGlzIGZvciB0aGUgZ2VuZXJh
bCBjYXNlLgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICBzdGF0aWMg
QXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHBy
ZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGV4cGVj
dGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDImIGFjdHVhbCkg
ewotICAgIHJldHVybiBDbXBIZWxwZXJFUShleHBlY3RlZF9leHByZXNzaW9uLCBhY3R1YWxfZXhw
cmVzc2lvbiwgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbCk7CisgIHN0
YXRpYyBBc3NlcnRpb25SZXN1bHQgQ29tcGFyZShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNz
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGxocywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiByaHMpIHsKKyAgICByZXR1
cm4gQ21wSGVscGVyRVEobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7
CiAgIH0KIAogICAvLyBXaXRoIHRoaXMgb3ZlcmxvYWRlZCB2ZXJzaW9uLCB3ZSBhbGxvdyBhbm9u
eW1vdXMgZW51bXMgdG8gYmUgdXNlZApAQCAtMTMwNiwxNyArMTQyNywxNiBAQCBjbGFzcyBFcUhl
bHBlciB7CiAgIC8vCiAgIC8vIEV2ZW4gdGhvdWdoIGl0cyBib2R5IGxvb2tzIHRoZSBzYW1lIGFz
IHRoZSBhYm92ZSB2ZXJzaW9uLCB3ZQogICAvLyBjYW5ub3QgbWVyZ2UgdGhlIHR3bywgYXMgaXQg
d2lsbCBtYWtlIGFub255bW91cyBlbnVtcyB1bmhhcHB5LgotICBzdGF0aWMgQXNzZXJ0aW9uUmVz
dWx0IENvbXBhcmUoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBleHBlY3RlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgYWN0dWFsKSB7Ci0gICAgcmV0
dXJuIENtcEhlbHBlckVRKGV4cGVjdGVkX2V4cHJlc3Npb24sIGFjdHVhbF9leHByZXNzaW9uLCBl
eHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsKTsKKyAgc3RhdGljIEFzc2Vy
dGlvblJlc3VsdCBDb21wYXJlKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGxocywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgcmhzKSB7CisgICAgcmV0dXJuIENtcEhl
bHBlckVRKGxoc19leHByZXNzaW9uLCByaHNfZXhwcmVzc2lvbiwgbGhzLCByaHMpOwogICB9CiB9
OwogCiAvLyBUaGlzIHNwZWNpYWxpemF0aW9uIGlzIHVzZWQgd2hlbiB0aGUgZmlyc3QgYXJndW1l
bnQgdG8gQVNTRVJUX0VRKCkKLS8vIGlzIGEgbnVsbCBwb2ludGVyIGxpdGVyYWwuCisvLyBpcyBh
IG51bGwgcG9pbnRlciBsaXRlcmFsLCBsaWtlIE5VTEwsIGZhbHNlLCBvciAwLgogdGVtcGxhdGUg
PD4KIGNsYXNzIEVxSGVscGVyPHRydWU+IHsKICBwdWJsaWM6CkBAIC0xMzI1LDI3ICsxNDQ1LDUz
IEBAIGNsYXNzIEVxSGVscGVyPHRydWU+IHsKICAgLy8gTk9UIGEgcG9pbnRlciwgZS5nLiBBU1NF
UlRfRVEoMCwgQW5JbnRGdW5jdGlvbigpKSBvcgogICAvLyBFWFBFQ1RfRVEoZmFsc2UsIGFfYm9v
bCkuCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gIHN0YXRpYyBBc3Nl
cnRpb25SZXN1bHQgQ29tcGFyZShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgZXhwZWN0ZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgYWN0dWFsKSB7Ci0g
ICAgcmV0dXJuIENtcEhlbHBlckVRKGV4cGVjdGVkX2V4cHJlc3Npb24sIGFjdHVhbF9leHByZXNz
aW9uLCBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsKTsKKyAgc3RhdGlj
IEFzc2VydGlvblJlc3VsdCBDb21wYXJlKAorICAgICAgY29uc3QgY2hhciogbGhzX2V4cHJlc3Np
b24sCisgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgIGNvbnN0IFQxJiBs
aHMsCisgICAgICBjb25zdCBUMiYgcmhzLAorICAgICAgLy8gVGhlIGZvbGxvd2luZyBsaW5lIHBy
ZXZlbnRzIHRoaXMgb3ZlcmxvYWQgZnJvbSBiZWluZyBjb25zaWRlcmVkIGlmIFQyCisgICAgICAv
LyBpcyBub3QgYSBwb2ludGVyIHR5cGUuICBXZSBuZWVkIHRoaXMgYmVjYXVzZSBBU1NFUlRfRVEo
TlVMTCwgbXlfcHRyKQorICAgICAgLy8gZXhwYW5kcyB0byBDb21wYXJlKCIiLCAiIiwgTlVMTCwg
bXlfcHRyKSwgd2hpY2ggcmVxdWlyZXMgYSBjb252ZXJzaW9uCisgICAgICAvLyB0byBtYXRjaCB0
aGUgU2VjcmV0KiBpbiB0aGUgb3RoZXIgb3ZlcmxvYWQsIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBt
YWtlCisgICAgICAvLyB0aGlzIHRlbXBsYXRlIG1hdGNoIGJldHRlci4KKyAgICAgIHR5cGVuYW1l
IEVuYWJsZUlmPCFpc19wb2ludGVyPFQyPjo6dmFsdWU+Ojp0eXBlKiA9IDApIHsKKyAgICByZXR1
cm4gQ21wSGVscGVyRVEobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7
CiAgIH0KIAotICAvLyBUaGlzIHZlcnNpb24gd2lsbCBiZSBwaWNrZWQgd2hlbiB0aGUgc2Vjb25k
IGFyZ3VtZW50IHRvCi0gIC8vIEFTU0VSVF9FUSgpIGlzIGEgcG9pbnRlciwgZS5nLiBBU1NFUlRf
RVEoTlVMTCwgYV9wb2ludGVyKS4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
Mj4KLSAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBDb21wYXJlKGNvbnN0IGNoYXIqIGV4cGVjdGVk
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFQxJiAvKiBleHBlY3RlZCAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFQyKiBhY3R1YWwpIHsKLSAgICAvLyBXZSBhbHJlYWR5IGtub3cgdGhhdCAnZXhwZWN0ZWQnIGlz
IGEgbnVsbCBwb2ludGVyLgotICAgIHJldHVybiBDbXBIZWxwZXJFUShleHBlY3RlZF9leHByZXNz
aW9uLCBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8VDIqPihOVUxMKSwgYWN0dWFsKTsKKyAgLy8gVGhpcyB2ZXJzaW9uIHdpbGwgYmUgcGlja2Vk
IHdoZW4gdGhlIHNlY29uZCBhcmd1bWVudCB0byBBU1NFUlRfRVEoKSBpcyBhCisgIC8vIHBvaW50
ZXIsIGUuZy4gQVNTRVJUX0VRKE5VTEwsIGFfcG9pbnRlcikuCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUoCisgICAgICBjb25zdCBjaGFy
KiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAg
ICAgLy8gV2UgdXNlZCB0byBoYXZlIGEgc2Vjb25kIHRlbXBsYXRlIHBhcmFtZXRlciBpbnN0ZWFk
IG9mIFNlY3JldCouICBUaGF0CisgICAgICAvLyB0ZW1wbGF0ZSBwYXJhbWV0ZXIgd291bGQgZGVk
dWNlIHRvICdsb25nJywgbWFraW5nIHRoaXMgYSBiZXR0ZXIgbWF0Y2gKKyAgICAgIC8vIHRoYW4g
dGhlIGZpcnN0IG92ZXJsb2FkIGV2ZW4gd2l0aG91dCB0aGUgZmlyc3Qgb3ZlcmxvYWQncyBFbmFi
bGVJZi4KKyAgICAgIC8vIFVuZm9ydHVuYXRlbHksIGdjYyB3aXRoIC1XY29udmVyc2lvbi1udWxs
IHdhcm5zIHdoZW4gInBhc3NpbmcgTlVMTCB0bworICAgICAgLy8gbm9uLXBvaW50ZXIgYXJndW1l
bnQiIChldmVuIGEgZGVkdWNlZCBpbnRlZ3JhbCBhcmd1bWVudCksIHNvIHRoZSBvbGQKKyAgICAg
IC8vIGltcGxlbWVudGF0aW9uIGNhdXNlZCB3YXJuaW5ncyBpbiB1c2VyIGNvZGUuCisgICAgICBT
ZWNyZXQqIC8qIGxocyAoTlVMTCkgKi8sCisgICAgICBUKiByaHMpIHsKKyAgICAvLyBXZSBhbHJl
YWR5IGtub3cgdGhhdCAnbGhzJyBpcyBhIG51bGwgcG9pbnRlci4KKyAgICByZXR1cm4gQ21wSGVs
cGVyRVEobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxUKj4oTlVMTCksIHJocyk7CiAgIH0KIH07CiAKKy8vIFNlcGFyYXRl
IHRoZSBlcnJvciBnZW5lcmF0aW5nIGNvZGUgZnJvbSB0aGUgY29kZSBwYXRoIHRvIHJlZHVjZSB0
aGUgc3RhY2sKKy8vIGZyYW1lIHNpemUgb2YgQ21wSGVscGVyT1AuIFRoaXMgaGVscHMgcmVkdWNl
IHRoZSBvdmVyaGVhZCBvZiBzb21lIHNhbml0aXplcnMKKy8vIHdoZW4gY2FsbGluZyBFWFBFQ1Rf
T1AgaW4gYSB0aWdodCBsb29wLgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4K
K0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJPcEZhaWx1cmUoY29uc3QgY2hhciogZXhwcjEsIGNv
bnN0IGNoYXIqIGV4cHIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUMSYgdmFsMSwgY29uc3QgVDImIHZhbDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIG9wKSB7CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkKKyAg
ICAgICAgIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgIiA8PCBvcCA8PCAiICgiIDw8
IGV4cHIyCisgICAgICAgICA8PCAiKSwgYWN0dWFsOiAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZSh2YWwxLCB2YWwyKQorICAgICAgICAgPDwgIiB2cyAiIDw8IEZvcm1hdEZv
ckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSh2YWwyLCB2YWwxKTsKK30KKwogLy8gQSBtYWNybyBm
b3IgaW1wbGVtZW50aW5nIHRoZSBoZWxwZXIgZnVuY3Rpb25zIG5lZWRlZCB0byBpbXBsZW1lbnQK
IC8vIEFTU0VSVF8/PyBhbmQgRVhQRUNUXz8/LiAgSXQgaXMgaGVyZSBqdXN0IHRvIGF2b2lkIGNv
cHktYW5kLXBhc3RlCiAvLyBvZiBzaW1pbGFyIGNvZGUuCkBAIC0xMzU2LDYgKzE1MDIsNyBAQCBj
bGFzcyBFcUhlbHBlcjx0cnVlPiB7CiAvLyB3aXRoIGdjYyA0LgogLy8KIC8vIElOVEVSTkFMIElN
UExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KKwogI2RlZmluZSBH
VEVTVF9JTVBMX0NNUF9IRUxQRVJfKG9wX25hbWUsIG9wKVwKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
MSwgdHlwZW5hbWUgVDI+XAogQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlciMjb3BfbmFtZShjb25z
dCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIsIFwKQEAgLTEzNjMsMTEgKzE1MTAsNyBA
QCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyIyNvcF9uYW1lKGNvbnN0IGNoYXIqIGV4cHIxLCBj
b25zdCBjaGFyKiBleHByMiwgXAogICBpZiAodmFsMSBvcCB2YWwyKSB7XAogICAgIHJldHVybiBB
c3NlcnRpb25TdWNjZXNzKCk7XAogICB9IGVsc2Uge1wKLSAgICBNZXNzYWdlIG1zZztcCi0gICAg
bXNnIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgIiAjb3AgIiAoIiA8PCBleHByMlwK
LSAgICAgICAgPDwgIiksIGFjdHVhbDogIiA8PCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2UodmFsMSwgdmFsMilcCi0gICAgICAgIDw8ICIgdnMgIiA8PCBGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2UodmFsMiwgdmFsMSk7XAotICAgIHJldHVybiBBc3NlcnRpb25GYWls
dXJlKG1zZyk7XAorICAgIHJldHVybiBDbXBIZWxwZXJPcEZhaWx1cmUoZXhwcjEsIGV4cHIyLCB2
YWwxLCB2YWwyLCAjb3ApO1wKICAgfVwKIH1cCiBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBD
bXBIZWxwZXIjI29wX25hbWUoXApAQCAtMTM4MCwyOSArMTUyMywyOSBAQCBHVEVTVF9JTVBMX0NN
UF9IRUxQRVJfKE5FLCAhPSk7CiAvLyBJbXBsZW1lbnRzIHRoZSBoZWxwZXIgZnVuY3Rpb24gZm9y
IHtBU1NFUlR8RVhQRUNUfV9MRQogR1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhMRSwgPD0pOwogLy8g
SW1wbGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fTFQKLUdU
RVNUX0lNUExfQ01QX0hFTFBFUl8oTFQsIDwgKTsKK0dURVNUX0lNUExfQ01QX0hFTFBFUl8oTFQs
IDwpOwogLy8gSW1wbGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVD
VH1fR0UKIEdURVNUX0lNUExfQ01QX0hFTFBFUl8oR0UsID49KTsKIC8vIEltcGxlbWVudHMgdGhl
IGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X0dUCi1HVEVTVF9JTVBMX0NNUF9I
RUxQRVJfKEdULCA+ICk7CitHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKEdULCA+KTsKIAogI3VuZGVm
IEdURVNUX0lNUExfQ01QX0hFTFBFUl8KIAogLy8gVGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FT
U0VSVHxFWFBFQ1R9X1NUUkVRLgogLy8KIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8g
Tk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KLUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENt
cEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVz
c2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogYWN0dWFsKTsKK0dURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBl
clNUUkVRKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMl9leHByZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMik7CiAKIC8v
IFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9TVFJDQVNFRVEuCiAvLwog
Ly8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFN
LgotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSQ0FTRUVRKGNvbnN0IGNo
YXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogYWN0dWFsKTsKK0dURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VF
UShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMyX2V4cHJlc3Npb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczIp
OwogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fU1RSTkUuCiAv
LwpAQCAtMTQyNCwxMCArMTU2NywxMCBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBI
ZWxwZXJTVFJDQVNFTkUoY29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKIC8vIEhlbHBlciBmdW5j
dGlvbiBmb3IgKl9TVFJFUSBvbiB3aWRlIHN0cmluZ3MuCiAvLwogLy8gSU5URVJOQUwgSU1QTEVN
RU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotR1RFU1RfQVBJXyBBc3Nl
cnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgd2NoYXJfdCogZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiBhY3R1YWwpOworR1RFU1RfQVBJXyBBc3Nl
cnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMyX2V4
cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB3Y2hhcl90KiBzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHdjaGFyX3QqIHMyKTsKIAogLy8gSGVscGVyIGZ1bmN0aW9uIGZvciAqX1NUUk5FIG9u
IHdpZGUgc3RyaW5ncy4KIC8vCkBAIC0xNDg1LDI4ICsxNjI4LDI4IEBAIG5hbWVzcGFjZSBpbnRl
cm5hbCB7CiAvLwogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEg
VVNFUiBQUk9HUkFNLgogdGVtcGxhdGUgPHR5cGVuYW1lIFJhd1R5cGU+Ci1Bc3NlcnRpb25SZXN1
bHQgQ21wSGVscGVyRmxvYXRpbmdQb2ludEVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSYXdUeXBlIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSYXdUeXBlIGFjdHVhbCkgewotICBjb25zdCBGbG9hdGluZ1BvaW50PFJhd1R5cGU+
IGxocyhleHBlY3RlZCksIHJocyhhY3R1YWwpOworQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckZs
b2F0aW5nUG9pbnRFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhd1R5cGUgbGhzX3ZhbHVl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdUeXBlIHJoc192
YWx1ZSkgeworICBjb25zdCBGbG9hdGluZ1BvaW50PFJhd1R5cGU+IGxocyhsaHNfdmFsdWUpLCBy
aHMocmhzX3ZhbHVlKTsKIAogICBpZiAobGhzLkFsbW9zdEVxdWFscyhyaHMpKSB7CiAgICAgcmV0
dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQogCi0gIFN0clN0cmVhbSBleHBlY3RlZF9zczsK
LSAgZXhwZWN0ZWRfc3MgPDwgc3RkOjpzZXRwcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxS
YXdUeXBlPjo6ZGlnaXRzMTAgKyAyKQotICAgICAgICAgICAgICA8PCBleHBlY3RlZDsKKyAgOjpz
dGQ6OnN0cmluZ3N0cmVhbSBsaHNfc3M7CisgIGxoc19zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihz
dGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+OjpkaWdpdHMxMCArIDIpCisgICAgICAgICA8PCBs
aHNfdmFsdWU7CiAKLSAgU3RyU3RyZWFtIGFjdHVhbF9zczsKLSAgYWN0dWFsX3NzIDw8IHN0ZDo6
c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8UmF3VHlwZT46OmRpZ2l0czEwICsgMikK
LSAgICAgICAgICAgIDw8IGFjdHVhbDsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSByaHNfc3M7Cisg
IHJoc19zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+
OjpkaWdpdHMxMCArIDIpCisgICAgICAgICA8PCByaHNfdmFsdWU7CiAKLSAgcmV0dXJuIEVxRmFp
bHVyZShleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIGFjdHVhbF9leHBy
ZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIFN0clN0cmVhbVRvU3RyaW5nKCZleHBlY3RlZF9z
cyksCi0gICAgICAgICAgICAgICAgICAgU3RyU3RyZWFtVG9TdHJpbmcoJmFjdHVhbF9zcyksCisg
IHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgcmhz
X2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJmxo
c19zcyksCisgICAgICAgICAgICAgICAgICAgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnJoc19zcyks
CiAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwogfQogCkBAIC0xNTQ4LDkgKzE2OTEsOSBAQCBj
bGFzcyBHVEVTVF9BUElfIEFzc2VydEhlbHBlciB7CiAgICAgICAgIDogdHlwZSh0KSwgZmlsZShz
cmNmaWxlKSwgbGluZShsaW5lX251bSksIG1lc3NhZ2UobXNnKSB7IH0KIAogICAgIFRlc3RQYXJ0
UmVzdWx0OjpUeXBlIGNvbnN0IHR5cGU7Ci0gICAgY29uc3QgY2hhciogICAgICAgIGNvbnN0IGZp
bGU7Ci0gICAgaW50ICAgICAgICAgICAgICAgIGNvbnN0IGxpbmU7Ci0gICAgU3RyaW5nICAgICAg
ICAgICAgIGNvbnN0IG1lc3NhZ2U7CisgICAgY29uc3QgY2hhciogY29uc3QgZmlsZTsKKyAgICBp
bnQgY29uc3QgbGluZTsKKyAgICBzdGQ6OnN0cmluZyBjb25zdCBtZXNzYWdlOwogCiAgICBwcml2
YXRlOgogICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQXNzZXJ0SGVscGVyRGF0
YSk7CkBAIC0xNTY0LDkgKzE3MDcsMTMgQEAgY2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRIZWxwZXIg
ewogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiAKICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAot
Ly8gVGhlIGFic3RyYWN0IGJhc2UgY2xhc3MgdGhhdCBhbGwgdmFsdWUtcGFyYW1ldGVyaXplZCB0
ZXN0cyBpbmhlcml0IGZyb20uCisvLyBUaGUgcHVyZSBpbnRlcmZhY2UgY2xhc3MgdGhhdCBhbGwg
dmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBpbmhlcml0IGZyb20uCisvLyBBIHZhbHVlLXBhcmFt
ZXRlcml6ZWQgY2xhc3MgbXVzdCBpbmhlcml0IGZyb20gYm90aCA6OnRlc3Rpbmc6OlRlc3QgYW5k
CisvLyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZS4gSW4gbW9zdCBjYXNlcyB0aGF0IGp1
c3QgbWVhbnMgaW5oZXJpdGluZworLy8gZnJvbSA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW0sIGJ1
dCBtb3JlIGNvbXBsaWNhdGVkIHRlc3QgaGllcmFyY2hpZXMKKy8vIG1heSBuZWVkIHRvIGluaGVy
aXQgZnJvbSBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UgYXQgZGlmZmVyZW50IGxldmVscy4K
IC8vCi0vLyBUaGlzIGNsYXNzIGFkZHMgc3VwcG9ydCBmb3IgYWNjZXNzaW5nIHRoZSB0ZXN0IHBh
cmFtZXRlciB2YWx1ZSB2aWEKKy8vIFRoaXMgaW50ZXJmYWNlIGhhcyBzdXBwb3J0IGZvciBhY2Nl
c3NpbmcgdGhlIHRlc3QgcGFyYW1ldGVyIHZhbHVlIHZpYQogLy8gdGhlIEdldFBhcmFtKCkgbWV0
aG9kLgogLy8KIC8vIFVzZSBpdCB3aXRoIG9uZSBvZiB0aGUgcGFyYW1ldGVyIGdlbmVyYXRvciBk
ZWZpbmluZyBmdW5jdGlvbnMsIGxpa2UgUmFuZ2UoKSwKQEAgLTE1OTUsMTMgKzE3NDIsMjIgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRIZWxwZXIgewogLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoT25lVG9UZW5SYW5nZSwgRm9vVGVzdCwgOjp0ZXN0aW5nOjpSYW5nZSgxLCAxMCkpOwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFRlc3RXaXRoUGFyYW0gOiBwdWJsaWMgVGVzdCB7
CitjbGFzcyBXaXRoUGFyYW1JbnRlcmZhY2UgewogIHB1YmxpYzoKICAgdHlwZWRlZiBUIFBhcmFt
VHlwZTsKKyAgdmlydHVhbCB+V2l0aFBhcmFtSW50ZXJmYWNlKCkge30KIAogICAvLyBUaGUgY3Vy
cmVudCBwYXJhbWV0ZXIgdmFsdWUuIElzIGFsc28gYXZhaWxhYmxlIGluIHRoZSB0ZXN0IGZpeHR1
cmUncwotICAvLyBjb25zdHJ1Y3Rvci4KLSAgY29uc3QgUGFyYW1UeXBlJiBHZXRQYXJhbSgpIGNv
bnN0IHsgcmV0dXJuICpwYXJhbWV0ZXJfOyB9CisgIC8vIGNvbnN0cnVjdG9yLiBUaGlzIG1lbWJl
ciBmdW5jdGlvbiBpcyBub24tc3RhdGljLCBldmVuIHRob3VnaCBpdCBvbmx5CisgIC8vIHJlZmVy
ZW5jZXMgc3RhdGljIGRhdGEsIHRvIHJlZHVjZSB0aGUgb3Bwb3J0dW5pdHkgZm9yIGluY29ycmVj
dCB1c2VzCisgIC8vIGxpa2Ugd3JpdGluZyAnV2l0aFBhcmFtSW50ZXJmYWNlPGJvb2w+OjpHZXRQ
YXJhbSgpJyBmb3IgYSB0ZXN0IHRoYXQKKyAgLy8gdXNlcyBhIGZpeHR1cmUgd2hvc2UgcGFyYW1l
dGVyIHR5cGUgaXMgaW50LgorICBjb25zdCBQYXJhbVR5cGUmIEdldFBhcmFtKCkgY29uc3Qgewor
ICAgIEdURVNUX0NIRUNLXyhwYXJhbWV0ZXJfICE9IE5VTEwpCisgICAgICAgIDw8ICJHZXRQYXJh
bSgpIGNhbiBvbmx5IGJlIGNhbGxlZCBpbnNpZGUgYSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3Qg
IgorICAgICAgICA8PCAiLS0gZGlkIHlvdSBpbnRlbmQgdG8gd3JpdGUgVEVTVF9QIGluc3RlYWQg
b2YgVEVTVF9GPyI7CisgICAgcmV0dXJuICpwYXJhbWV0ZXJfOworICB9CiAKICBwcml2YXRlOgog
ICAvLyBTZXRzIHBhcmFtZXRlciB2YWx1ZS4gVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3Ig
bWFraW5nIHN1cmUgdGhlIHZhbHVlCkBAIC0xNjEzLDEyICsxNzY5LDE5IEBAIGNsYXNzIFRlc3RX
aXRoUGFyYW0gOiBwdWJsaWMgVGVzdCB7CiAgIC8vIFN0YXRpYyB2YWx1ZSB1c2VkIGZvciBhY2Nl
c3NpbmcgcGFyYW1ldGVyIGR1cmluZyBhIHRlc3QgbGlmZXRpbWUuCiAgIHN0YXRpYyBjb25zdCBQ
YXJhbVR5cGUqIHBhcmFtZXRlcl87CiAKLSAgLy8gVGVzdENsYXNzIG11c3QgYmUgYSBzdWJjbGFz
cyBvZiBUZXN0V2l0aFBhcmFtPFQ+LgorICAvLyBUZXN0Q2xhc3MgbXVzdCBiZSBhIHN1YmNsYXNz
IG9mIFdpdGhQYXJhbUludGVyZmFjZTxUPiBhbmQgVGVzdC4KICAgdGVtcGxhdGUgPGNsYXNzIFRl
c3RDbGFzcz4gZnJpZW5kIGNsYXNzIGludGVybmFsOjpQYXJhbWV0ZXJpemVkVGVzdEZhY3Rvcnk7
CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46
OnBhcmFtZXRlcl8gPSBOVUxMOworY29uc3QgVCogV2l0aFBhcmFtSW50ZXJmYWNlPFQ+OjpwYXJh
bWV0ZXJfID0gTlVMTDsKKworLy8gTW9zdCB2YWx1ZS1wYXJhbWV0ZXJpemVkIGNsYXNzZXMgY2Fu
IGlnbm9yZSB0aGUgZXhpc3RlbmNlIG9mCisvLyBXaXRoUGFyYW1JbnRlcmZhY2UsIGFuZCBjYW4g
anVzdCBpbmhlcml0IGZyb20gOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtLgorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK2NsYXNzIFRlc3RXaXRoUGFyYW0gOiBwdWJsaWMgVGVzdCwgcHVibGljIFdp
dGhQYXJhbUludGVyZmFjZTxUPiB7Cit9OwogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9U
RVNUCiAKQEAgLTE2NDAsMjMgKzE4MDMsMjMgQEAgY29uc3QgVCogVGVzdFdpdGhQYXJhbTxUPjo6
cGFyYW1ldGVyXyA9IE5VTEw7CiAvLyB1c3VhbGx5IHdhbnQgdGhlIGZhaWwtZmFzdCBiZWhhdmlv
ciBvZiBGQUlMIGFuZCBBU1NFUlRfKiwgYnV0IHRob3NlCiAvLyB3cml0aW5nIGRhdGEtZHJpdmVu
IHRlc3RzIG9mdGVuIGZpbmQgdGhlbXNlbHZlcyB1c2luZyBBRERfRkFJTFVSRQogLy8gYW5kIEVY
UEVDVF8qIG1vcmUuCi0vLwotLy8gRXhhbXBsZXM6Ci0vLwotLy8gICBFWFBFQ1RfVFJVRShzZXJ2
ZXIuU3RhdHVzSXNPSygpKTsKLS8vICAgQVNTRVJUX0ZBTFNFKHNlcnZlci5IYXNQZW5kaW5nUmVx
dWVzdChwb3J0KSkKLS8vICAgICAgIDw8ICJUaGVyZSBhcmUgc3RpbGwgcGVuZGluZyByZXF1ZXN0
cyAiIDw8ICJvbiBwb3J0ICIgPDwgcG9ydDsKIAogLy8gR2VuZXJhdGVzIGEgbm9uZmF0YWwgZmFp
bHVyZSB3aXRoIGEgZ2VuZXJpYyBtZXNzYWdlLgogI2RlZmluZSBBRERfRkFJTFVSRSgpIEdURVNU
X05PTkZBVEFMX0ZBSUxVUkVfKCJGYWlsZWQiKQogCisvLyBHZW5lcmF0ZXMgYSBub25mYXRhbCBm
YWlsdXJlIGF0IHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlvbiB3aXRoCisvLyBhIGdlbmVy
aWMgbWVzc2FnZS4KKyNkZWZpbmUgQUREX0ZBSUxVUkVfQVQoZmlsZSwgbGluZSkgXAorICBHVEVT
VF9NRVNTQUdFX0FUXyhmaWxlLCBsaW5lLCAiRmFpbGVkIiwgXAorICAgICAgICAgICAgICAgICAg
ICA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlKQorCiAvLyBHZW5l
cmF0ZXMgYSBmYXRhbCBmYWlsdXJlIHdpdGggYSBnZW5lcmljIG1lc3NhZ2UuCiAjZGVmaW5lIEdU
RVNUX0ZBSUwoKSBHVEVTVF9GQVRBTF9GQUlMVVJFXygiRmFpbGVkIikKIAogLy8gRGVmaW5lIHRo
aXMgbWFjcm8gdG8gMSB0byBvbWl0IHRoZSBkZWZpbml0aW9uIG9mIEZBSUwoKSwgd2hpY2ggaXMg
YQogLy8gZ2VuZXJpYyBuYW1lIGFuZCBjbGFzaGVzIHdpdGggc29tZSBvdGhlciBsaWJyYXJpZXMu
CiAjaWYgIUdURVNUX0RPTlRfREVGSU5FX0ZBSUwKLSNkZWZpbmUgRkFJTCgpIEdURVNUX0ZBSUwo
KQorIyBkZWZpbmUgRkFJTCgpIEdURVNUX0ZBSUwoKQogI2VuZGlmCiAKIC8vIEdlbmVyYXRlcyBh
IHN1Y2Nlc3Mgd2l0aCBhIGdlbmVyaWMgbWVzc2FnZS4KQEAgLTE2NjUsNyArMTgyOCw3IEBAIGNv
bnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogLy8gRGVmaW5lIHRo
aXMgbWFjcm8gdG8gMSB0byBvbWl0IHRoZSBkZWZpbml0aW9uIG9mIFNVQ0NFRUQoKSwgd2hpY2gK
IC8vIGlzIGEgZ2VuZXJpYyBuYW1lIGFuZCBjbGFzaGVzIHdpdGggc29tZSBvdGhlciBsaWJyYXJp
ZXMuCiAjaWYgIUdURVNUX0RPTlRfREVGSU5FX1NVQ0NFRUQKLSNkZWZpbmUgU1VDQ0VFRCgpIEdU
RVNUX1NVQ0NFRUQoKQorIyBkZWZpbmUgU1VDQ0VFRCgpIEdURVNUX1NVQ0NFRUQoKQogI2VuZGlm
CiAKIC8vIE1hY3JvcyBmb3IgdGVzdGluZyBleGNlcHRpb25zLgpAQCAtMTY5NCwxMyArMTg1Nywx
MyBAQCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIC8vIEFz
c2VydGlvblJlc3VsdC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSBBc3NlcnRp
b25SZXN1bHQgd2l0aAogLy8gdGhlc2UgbWFjcm9zIHNlZSBjb21tZW50cyBvbiB0aGF0IGNsYXNz
LgogI2RlZmluZSBFWFBFQ1RfVFJVRShjb25kaXRpb24pIFwKLSAgR1RFU1RfVEVTVF9CT09MRUFO
Xyhjb25kaXRpb24sICNjb25kaXRpb24sIGZhbHNlLCB0cnVlLCBcCisgIEdURVNUX1RFU1RfQk9P
TEVBTl8oKGNvbmRpdGlvbiksICNjb25kaXRpb24sIGZhbHNlLCB0cnVlLCBcCiAgICAgICAgICAg
ICAgICAgICAgICAgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8pCiAjZGVmaW5lIEVYUEVDVF9GQUxT
RShjb25kaXRpb24pIFwKICAgR1RFU1RfVEVTVF9CT09MRUFOXyghKGNvbmRpdGlvbiksICNjb25k
aXRpb24sIHRydWUsIGZhbHNlLCBcCiAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfTk9ORkFU
QUxfRkFJTFVSRV8pCiAjZGVmaW5lIEFTU0VSVF9UUlVFKGNvbmRpdGlvbikgXAotICBHVEVTVF9U
RVNUX0JPT0xFQU5fKGNvbmRpdGlvbiwgI2NvbmRpdGlvbiwgZmFsc2UsIHRydWUsIFwKKyAgR1RF
U1RfVEVTVF9CT09MRUFOXygoY29uZGl0aW9uKSwgI2NvbmRpdGlvbiwgZmFsc2UsIHRydWUsIFwK
ICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9GQVRBTF9GQUlMVVJFXykKICNkZWZpbmUgQVNT
RVJUX0ZBTFNFKGNvbmRpdGlvbikgXAogICBHVEVTVF9URVNUX0JPT0xFQU5fKCEoY29uZGl0aW9u
KSwgI2NvbmRpdGlvbiwgdHJ1ZSwgZmFsc2UsIFwKQEAgLTE3MDgsMTYgKzE4NzEsMTYgQEAgY29u
c3QgVCogVGVzdFdpdGhQYXJhbTxUPjo6cGFyYW1ldGVyXyA9IE5VTEw7CiAKIC8vIEluY2x1ZGVz
IHRoZSBhdXRvLWdlbmVyYXRlZCBoZWFkZXIgdGhhdCBpbXBsZW1lbnRzIGEgZmFtaWx5IG9mCiAv
LyBnZW5lcmljIHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9zLgotI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0X3ByZWRfaW1wbC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIgogCiAv
LyBNYWNyb3MgZm9yIHRlc3RpbmcgZXF1YWxpdGllcyBhbmQgaW5lcXVhbGl0aWVzLgogLy8KLS8v
ICAgICoge0FTU0VSVHxFWFBFQ1R9X0VRKGV4cGVjdGVkLCBhY3R1YWwpOiBUZXN0cyB0aGF0IGV4
cGVjdGVkID09IGFjdHVhbAotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTkUodjEsIHYyKTogICAg
ICAgICAgIFRlc3RzIHRoYXQgdjEgIT0gdjIKLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0xUKHYx
LCB2Mik6ICAgICAgICAgICBUZXN0cyB0aGF0IHYxIDwgdjIKLS8vICAgICoge0FTU0VSVHxFWFBF
Q1R9X0xFKHYxLCB2Mik6ICAgICAgICAgICBUZXN0cyB0aGF0IHYxIDw9IHYyCi0vLyAgICAqIHtB
U1NFUlR8RVhQRUNUfV9HVCh2MSwgdjIpOiAgICAgICAgICAgVGVzdHMgdGhhdCB2MSA+IHYyCi0v
LyAgICAqIHtBU1NFUlR8RVhQRUNUfV9HRSh2MSwgdjIpOiAgICAgICAgICAgVGVzdHMgdGhhdCB2
MSA+PSB2MgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fRVEodjEsIHYyKTogVGVzdHMgdGhhdCB2
MSA9PSB2MgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTkUodjEsIHYyKTogVGVzdHMgdGhhdCB2
MSAhPSB2MgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTFQodjEsIHYyKTogVGVzdHMgdGhhdCB2
MSA8IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9MRSh2MSwgdjIpOiBUZXN0cyB0aGF0IHYx
IDw9IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9HVCh2MSwgdjIpOiBUZXN0cyB0aGF0IHYx
ID4gdjIKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0dFKHYxLCB2Mik6IFRlc3RzIHRoYXQgdjEg
Pj0gdjIKIC8vCiAvLyBXaGVuIHRoZXkgYXJlIG5vdCwgR29vZ2xlIFRlc3QgcHJpbnRzIGJvdGgg
dGhlIHRlc3RlZCBleHByZXNzaW9ucyBhbmQKIC8vIHRoZWlyIGFjdHVhbCB2YWx1ZXMuICBUaGUg
dmFsdWVzIG11c3QgYmUgY29tcGF0aWJsZSBidWlsdC1pbiB0eXBlcywKQEAgLTE3MzksOCArMTkw
Miw4IEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogLy8g
ICBhcmUgcmVsYXRlZCwgbm90IGhvdyB0aGVpciBjb250ZW50IGlzIHJlbGF0ZWQuICBUbyBjb21w
YXJlIHR3byBDCiAvLyAgIHN0cmluZ3MgYnkgY29udGVudCwgdXNlIHtBU1NFUlR8RVhQRUNUfV9T
VFIqKCkuCiAvLwotLy8gICAzLiB7QVNTRVJUfEVYUEVDVH1fRVEoZXhwZWN0ZWQsIGFjdHVhbCkg
aXMgcHJlZmVycmVkIHRvCi0vLyAgIHtBU1NFUlR8RVhQRUNUfV9UUlVFKGV4cGVjdGVkID09IGFj
dHVhbCksIGFzIHRoZSBmb3JtZXIgdGVsbHMgeW91CisvLyAgIDMuIHtBU1NFUlR8RVhQRUNUfV9F
USh2MSwgdjIpIGlzIHByZWZlcnJlZCB0bworLy8gICB7QVNTRVJUfEVYUEVDVH1fVFJVRSh2MSA9
PSB2MiksIGFzIHRoZSBmb3JtZXIgdGVsbHMgeW91CiAvLyAgIHdoYXQgdGhlIGFjdHVhbCB2YWx1
ZSBpcyB3aGVuIGl0IGZhaWxzLCBhbmQgc2ltaWxhcmx5IGZvciB0aGUKIC8vICAgb3RoZXIgY29t
cGFyaXNvbnMuCiAvLwpAQCAtMTc1NiwxMiArMTkxOSwxMiBAQCBjb25zdCBUKiBUZXN0V2l0aFBh
cmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIC8vICAgQVNTRVJUX0xUKGksIGFycmF5X3NpemUp
OwogLy8gICBBU1NFUlRfR1QocmVjb3Jkcy5zaXplKCksIDApIDw8ICJUaGVyZSBpcyBubyByZWNv
cmQgbGVmdC4iOwogCi0jZGVmaW5lIEVYUEVDVF9FUShleHBlY3RlZCwgYWN0dWFsKSBcCisjZGVm
aW5lIEVYUEVDVF9FUSh2YWwxLCB2YWwyKSBcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0
aW5nOjppbnRlcm5hbDo6IFwKLSAgICAgICAgICAgICAgICAgICAgICBFcUhlbHBlcjxHVEVTVF9J
U19OVUxMX0xJVEVSQUxfKGV4cGVjdGVkKT46OkNvbXBhcmUsIFwKLSAgICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZCwgYWN0dWFsKQotI2RlZmluZSBFWFBFQ1RfTkUoZXhwZWN0ZWQsIGFjdHVh
bCkgXAotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBl
ck5FLCBleHBlY3RlZCwgYWN0dWFsKQorICAgICAgICAgICAgICAgICAgICAgIEVxSGVscGVyPEdU
RVNUX0lTX05VTExfTElURVJBTF8odmFsMSk+OjpDb21wYXJlLCBcCisgICAgICAgICAgICAgICAg
ICAgICAgdmFsMSwgdmFsMikKKyNkZWZpbmUgRVhQRUNUX05FKHZhbDEsIHZhbDIpIFwKKyAgRVhQ
RUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJORSwgdmFsMSwg
dmFsMikKICNkZWZpbmUgRVhQRUNUX0xFKHZhbDEsIHZhbDIpIFwKICAgRVhQRUNUX1BSRURfRk9S
TUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJMRSwgdmFsMSwgdmFsMikKICNkZWZp
bmUgRVhQRUNUX0xUKHZhbDEsIHZhbDIpIFwKQEAgLTE3NzEsMjIgKzE5MzQsNDkgQEAgY29uc3Qg
VCogVGVzdFdpdGhQYXJhbTxUPjo6cGFyYW1ldGVyXyA9IE5VTEw7CiAjZGVmaW5lIEVYUEVDVF9H
VCh2YWwxLCB2YWwyKSBcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q21wSGVscGVyR1QsIHZhbDEsIHZhbDIpCiAKLSNkZWZpbmUgQVNTRVJUX0VRKGV4cGVjdGVk
LCBhY3R1YWwpIFwKKyNkZWZpbmUgR1RFU1RfQVNTRVJUX0VRKHZhbDEsIHZhbDIpIFwKICAgQVNT
RVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjogXAotICAgICAgICAgICAgICAg
ICAgICAgIEVxSGVscGVyPEdURVNUX0lTX05VTExfTElURVJBTF8oZXhwZWN0ZWQpPjo6Q29tcGFy
ZSwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLCBhY3R1YWwpCi0jZGVmaW5lIEFT
U0VSVF9ORSh2YWwxLCB2YWwyKSBcCisgICAgICAgICAgICAgICAgICAgICAgRXFIZWxwZXI8R1RF
U1RfSVNfTlVMTF9MSVRFUkFMXyh2YWwxKT46OkNvbXBhcmUsIFwKKyAgICAgICAgICAgICAgICAg
ICAgICB2YWwxLCB2YWwyKQorI2RlZmluZSBHVEVTVF9BU1NFUlRfTkUodmFsMSwgdmFsMikgXAog
ICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlck5FLCB2
YWwxLCB2YWwyKQotI2RlZmluZSBBU1NFUlRfTEUodmFsMSwgdmFsMikgXAorI2RlZmluZSBHVEVT
VF9BU1NFUlRfTEUodmFsMSwgdmFsMikgXAogICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkNtcEhlbHBlckxFLCB2YWwxLCB2YWwyKQotI2RlZmluZSBBU1NFUlRfTFQo
dmFsMSwgdmFsMikgXAorI2RlZmluZSBHVEVTVF9BU1NFUlRfTFQodmFsMSwgdmFsMikgXAogICBB
U1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckxULCB2YWwx
LCB2YWwyKQotI2RlZmluZSBBU1NFUlRfR0UodmFsMSwgdmFsMikgXAorI2RlZmluZSBHVEVTVF9B
U1NFUlRfR0UodmFsMSwgdmFsMikgXAogICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6
aW50ZXJuYWw6OkNtcEhlbHBlckdFLCB2YWwxLCB2YWwyKQotI2RlZmluZSBBU1NFUlRfR1QodmFs
MSwgdmFsMikgXAorI2RlZmluZSBHVEVTVF9BU1NFUlRfR1QodmFsMSwgdmFsMikgXAogICBBU1NF
UlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckdULCB2YWwxLCB2
YWwyKQogCi0vLyBDIFN0cmluZyBDb21wYXJpc29ucy4gIEFsbCB0ZXN0cyB0cmVhdCBOVUxMIGFu
ZCBhbnkgbm9uLU5VTEwgc3RyaW5nCisvLyBEZWZpbmUgbWFjcm8gR1RFU1RfRE9OVF9ERUZJTkVf
QVNTRVJUX1hZIHRvIDEgdG8gb21pdCB0aGUgZGVmaW5pdGlvbiBvZgorLy8gQVNTRVJUX1hZKCks
IHdoaWNoIGNsYXNoZXMgd2l0aCBzb21lIHVzZXJzJyBvd24gY29kZS4KKworI2lmICFHVEVTVF9E
T05UX0RFRklORV9BU1NFUlRfRVEKKyMgZGVmaW5lIEFTU0VSVF9FUSh2YWwxLCB2YWwyKSBHVEVT
VF9BU1NFUlRfRVEodmFsMSwgdmFsMikKKyNlbmRpZgorCisjaWYgIUdURVNUX0RPTlRfREVGSU5F
X0FTU0VSVF9ORQorIyBkZWZpbmUgQVNTRVJUX05FKHZhbDEsIHZhbDIpIEdURVNUX0FTU0VSVF9O
RSh2YWwxLCB2YWwyKQorI2VuZGlmCisKKyNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX0xF
CisjIGRlZmluZSBBU1NFUlRfTEUodmFsMSwgdmFsMikgR1RFU1RfQVNTRVJUX0xFKHZhbDEsIHZh
bDIpCisjZW5kaWYKKworI2lmICFHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfTFQKKyMgZGVmaW5l
IEFTU0VSVF9MVCh2YWwxLCB2YWwyKSBHVEVTVF9BU1NFUlRfTFQodmFsMSwgdmFsMikKKyNlbmRp
ZgorCisjaWYgIUdURVNUX0RPTlRfREVGSU5FX0FTU0VSVF9HRQorIyBkZWZpbmUgQVNTRVJUX0dF
KHZhbDEsIHZhbDIpIEdURVNUX0FTU0VSVF9HRSh2YWwxLCB2YWwyKQorI2VuZGlmCisKKyNpZiAh
R1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX0dUCisjIGRlZmluZSBBU1NFUlRfR1QodmFsMSwgdmFs
MikgR1RFU1RfQVNTRVJUX0dUKHZhbDEsIHZhbDIpCisjZW5kaWYKKworLy8gQy1zdHJpbmcgQ29t
cGFyaXNvbnMuICBBbGwgdGVzdHMgdHJlYXQgTlVMTCBhbmQgYW55IG5vbi1OVUxMIHN0cmluZwog
Ly8gYXMgZGlmZmVyZW50LiAgVHdvIE5VTExzIGFyZSBlcXVhbC4KIC8vCiAvLyAgICAqIHtBU1NF
UlR8RVhQRUNUfV9TVFJFUShzMSwgczIpOiAgICAgVGVzdHMgdGhhdCBzMSA9PSBzMgpAQCAtMTgw
MiwyOSArMTk5MiwyOSBAQCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0g
TlVMTDsKIC8vCiAvLyBUaGVzZSBtYWNyb3MgZXZhbHVhdGUgdGhlaXIgYXJndW1lbnRzIGV4YWN0
bHkgb25jZS4KIAotI2RlZmluZSBFWFBFQ1RfU1RSRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAotICBF
WFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkVRLCBl
eHBlY3RlZCwgYWN0dWFsKQorI2RlZmluZSBFWFBFQ1RfU1RSRVEoczEsIHMyKSBcCisgIEVYUEVD
VF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSRVEsIHMxLCBz
MikKICNkZWZpbmUgRVhQRUNUX1NUUk5FKHMxLCBzMikgXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUk5FLCBzMSwgczIpCi0jZGVmaW5lIEVY
UEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAotICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkNBU0VFUSwgZXhwZWN0ZWQsIGFjdHVh
bCkKKyNkZWZpbmUgRVhQRUNUX1NUUkNBU0VFUShzMSwgczIpIFwKKyAgRVhQRUNUX1BSRURfRk9S
TUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJDQVNFRVEsIHMxLCBzMikKICNk
ZWZpbmUgRVhQRUNUX1NUUkNBU0VORShzMSwgczIpXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6
dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkNBU0VORSwgczEsIHMyKQogCi0jZGVmaW5l
IEFTU0VSVF9TVFJFUShleHBlY3RlZCwgYWN0dWFsKSBcCi0gIEFTU0VSVF9QUkVEX0ZPUk1BVDIo
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSRVEsIGV4cGVjdGVkLCBhY3R1YWwpCisj
ZGVmaW5lIEFTU0VSVF9TVFJFUShzMSwgczIpIFwKKyAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRl
c3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJFUSwgczEsIHMyKQogI2RlZmluZSBBU1NFUlRf
U1RSTkUoczEsIHMyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q21wSGVscGVyU1RSTkUsIHMxLCBzMikKLSNkZWZpbmUgQVNTRVJUX1NUUkNBU0VFUShleHBl
Y3RlZCwgYWN0dWFsKSBcCi0gIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q21wSGVscGVyU1RSQ0FTRUVRLCBleHBlY3RlZCwgYWN0dWFsKQorI2RlZmluZSBBU1NFUlRf
U1RSQ0FTRUVRKHMxLCBzMikgXAorICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkNtcEhlbHBlclNUUkNBU0VFUSwgczEsIHMyKQogI2RlZmluZSBBU1NFUlRfU1RSQ0FT
RU5FKHMxLCBzMilcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
Q21wSGVscGVyU1RSQ0FTRU5FLCBzMSwgczIpCiAKIC8vIE1hY3JvcyBmb3IgY29tcGFyaW5nIGZs
b2F0aW5nLXBvaW50IG51bWJlcnMuCiAvLwotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fRkxPQVRf
RVEoZXhwZWN0ZWQsIGFjdHVhbCk6CisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9GTE9BVF9FUSh2
YWwxLCB2YWwyKToKIC8vICAgICAgICAgVGVzdHMgdGhhdCB0d28gZmxvYXQgdmFsdWVzIGFyZSBh
bG1vc3QgZXF1YWwuCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9ET1VCTEVfRVEoZXhwZWN0ZWQs
IGFjdHVhbCk6CisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9ET1VCTEVfRVEodmFsMSwgdmFsMik6
CiAvLyAgICAgICAgIFRlc3RzIHRoYXQgdHdvIGRvdWJsZSB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVh
bC4KIC8vICAgICoge0FTU0VSVHxFWFBFQ1R9X05FQVIodjEsIHYyLCBhYnNfZXJyb3IpOgogLy8g
ICAgICAgICBUZXN0cyB0aGF0IHYxIGFuZCB2MiBhcmUgd2l0aGluIHRoZSBnaXZlbiBkaXN0YW5j
ZSB0byBlYWNoIG90aGVyLgpAQCAtMTgzNCwyMSArMjAyNCwyMSBAQCBjb25zdCBUKiBUZXN0V2l0
aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIC8vIEZsb2F0aW5nUG9pbnQgdGVtcGxhdGUg
Y2xhc3MgaW4gZ3Rlc3QtaW50ZXJuYWwuaCBpZiB5b3UgYXJlCiAvLyBpbnRlcmVzdGVkIGluIHRo
ZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgogCi0jZGVmaW5lIEVYUEVDVF9GTE9BVF9FUShleHBl
Y3RlZCwgYWN0dWFsKVwKKyNkZWZpbmUgRVhQRUNUX0ZMT0FUX0VRKHZhbDEsIHZhbDIpXAogICBF
WFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckZsb2F0aW5n
UG9pbnRFUTxmbG9hdD4sIFwKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwgYWN0dWFs
KQorICAgICAgICAgICAgICAgICAgICAgIHZhbDEsIHZhbDIpCiAKLSNkZWZpbmUgRVhQRUNUX0RP
VUJMRV9FUShleHBlY3RlZCwgYWN0dWFsKVwKKyNkZWZpbmUgRVhQRUNUX0RPVUJMRV9FUSh2YWwx
LCB2YWwyKVwKICAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBI
ZWxwZXJGbG9hdGluZ1BvaW50RVE8ZG91YmxlPiwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4
cGVjdGVkLCBhY3R1YWwpCisgICAgICAgICAgICAgICAgICAgICAgdmFsMSwgdmFsMikKIAotI2Rl
ZmluZSBBU1NFUlRfRkxPQVRfRVEoZXhwZWN0ZWQsIGFjdHVhbClcCisjZGVmaW5lIEFTU0VSVF9G
TE9BVF9FUSh2YWwxLCB2YWwyKVwKICAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6Omlu
dGVybmFsOjpDbXBIZWxwZXJGbG9hdGluZ1BvaW50RVE8ZmxvYXQ+LCBcCi0gICAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0ZWQsIGFjdHVhbCkKKyAgICAgICAgICAgICAgICAgICAgICB2YWwxLCB2
YWwyKQogCi0jZGVmaW5lIEFTU0VSVF9ET1VCTEVfRVEoZXhwZWN0ZWQsIGFjdHVhbClcCisjZGVm
aW5lIEFTU0VSVF9ET1VCTEVfRVEodmFsMSwgdmFsMilcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIo
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyRmxvYXRpbmdQb2ludEVRPGRvdWJsZT4sIFwK
LSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwgYWN0dWFsKQorICAgICAgICAgICAgICAg
ICAgICAgIHZhbDEsIHZhbDIpCiAKICNkZWZpbmUgRVhQRUNUX05FQVIodmFsMSwgdmFsMiwgYWJz
X2Vycm9yKVwKICAgRVhQRUNUX1BSRURfRk9STUFUMyg6OnRlc3Rpbmc6OmludGVybmFsOjpEb3Vi
bGVOZWFyUHJlZEZvcm1hdCwgXApAQCAtMTg4MiwxNiArMjA3MiwxNiBAQCBHVEVTVF9BUElfIEFz
c2VydGlvblJlc3VsdCBEb3VibGVMRShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhw
cjIsCiAvLyBleHBlY3RlZCByZXN1bHQgYW5kIHRoZSBhY3R1YWwgcmVzdWx0IHdpdGggYm90aCBh
IGh1bWFuLXJlYWRhYmxlCiAvLyBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGVycm9yLCBp
ZiBhdmFpbGFibGUsIGFzIHdlbGwgYXMgdGhlCiAvLyBoZXggcmVzdWx0IGNvZGUuCi0jZGVmaW5l
IEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChleHByKSBcCisjIGRlZmluZSBFWFBFQ1RfSFJFU1VM
VF9TVUNDRUVERUQoZXhwcikgXAogICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDEoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6SXNIUkVTVUxUU3VjY2VzcywgKGV4cHIpKQogCi0jZGVmaW5lIEFTU0VSVF9IUkVT
VUxUX1NVQ0NFRURFRChleHByKSBcCisjIGRlZmluZSBBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQo
ZXhwcikgXAogICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDEoOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXNI
UkVTVUxUU3VjY2VzcywgKGV4cHIpKQogCi0jZGVmaW5lIEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChl
eHByKSBcCisjIGRlZmluZSBFWFBFQ1RfSFJFU1VMVF9GQUlMRUQoZXhwcikgXAogICAgIEVYUEVD
VF9QUkVEX0ZPUk1BVDEoOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXNIUkVTVUxURmFpbHVyZSwgKGV4
cHIpKQogCi0jZGVmaW5lIEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChleHByKSBcCisjIGRlZmluZSBB
U1NFUlRfSFJFU1VMVF9GQUlMRUQoZXhwcikgXAogICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDEoOjp0
ZXN0aW5nOjppbnRlcm5hbDo6SXNIUkVTVUxURmFpbHVyZSwgKGV4cHIpKQogCiAjZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1MKQEAgLTE5MjYsMTcgKzIxMTYsNiBAQCBHVEVTVF9BUElfIEFzc2Vy
dGlvblJlc3VsdCBEb3VibGVMRShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIs
CiAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlNjb3BlZFRyYWNlIEdURVNUX0NPTkNBVF9UT0tFTl8o
Z3Rlc3RfdHJhY2VfLCBfX0xJTkVfXykoXAogICAgIF9fRklMRV9fLCBfX0xJTkVfXywgOjp0ZXN0
aW5nOjpNZXNzYWdlKCkgPDwgKG1lc3NhZ2UpKQogCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0v
LyBUaGlzIHRlbXBsYXRlIGlzIGRlY2xhcmVkLCBidXQgaW50ZW50aW9uYWxseSB1bmRlZmluZWQu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotc3RydWN0IFN0YXRpY0Fzc2Vy
dFR5cGVFcUhlbHBlcjsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgU3RhdGljQXNz
ZXJ0VHlwZUVxSGVscGVyPFQsIFQ+IHt9OwotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQog
Ly8gQ29tcGlsZS10aW1lIGFzc2VydGlvbiBmb3IgdHlwZSBlcXVhbGl0eS4KIC8vIFN0YXRpY0Fz
c2VydFR5cGVFcTx0eXBlMSwgdHlwZTI+KCkgY29tcGlsZXMgaWZmIHR5cGUxIGFuZCB0eXBlMiBh
cmUKIC8vIHRoZSBzYW1lIHR5cGUuICBUaGUgdmFsdWUgaXQgcmV0dXJucyBpcyBub3QgaW50ZXJl
c3RpbmcuCkBAIC0xOTY5LDcgKzIxNDgsNyBAQCBzdHJ1Y3QgU3RhdGljQXNzZXJ0VHlwZUVxSGVs
cGVyPFQsIFQ+IHt9OwogLy8gdG8gY2F1c2UgYSBjb21waWxlciBlcnJvci4KIHRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CiBib29sIFN0YXRpY0Fzc2VydFR5cGVFcSgpIHsKLSAg
aW50ZXJuYWw6OlN0YXRpY0Fzc2VydFR5cGVFcUhlbHBlcjxUMSwgVDI+KCk7CisgICh2b2lkKWlu
dGVybmFsOjpTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI8VDEsIFQyPigpOwogICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMTk4MSw4ICsyMTYwLDggQEAgYm9vbCBTdGF0aWNBc3NlcnRUeXBlRXEoKSB7
CiAvLyBUaGUgY29udmVudGlvbiBpcyB0byBlbmQgdGhlIHRlc3QgY2FzZSBuYW1lIHdpdGggIlRl
c3QiLiAgRm9yCiAvLyBleGFtcGxlLCBhIHRlc3QgY2FzZSBmb3IgdGhlIEZvbyBjbGFzcyBjYW4g
YmUgbmFtZWQgRm9vVGVzdC4KIC8vCi0vLyBUaGUgdXNlciBzaG91bGQgcHV0IGhpcyB0ZXN0IGNv
ZGUgYmV0d2VlbiBicmFjZXMgYWZ0ZXIgdXNpbmcgdGhpcwotLy8gbWFjcm8uICBFeGFtcGxlOgor
Ly8gVGVzdCBjb2RlIHNob3VsZCBhcHBlYXIgYmV0d2VlbiBicmFjZXMgYWZ0ZXIgYW4gaW52b2Nh
dGlvbiBvZgorLy8gdGhpcyBtYWNyby4gIEV4YW1wbGU6CiAvLwogLy8gICBURVNUKEZvb1Rlc3Qs
IEluaXRpYWxpemVzQ29ycmVjdGx5KSB7CiAvLyAgICAgRm9vIGZvbzsKQEAgLTIwMDUsNyArMjE4
NCw3IEBAIGJvb2wgU3RhdGljQXNzZXJ0VHlwZUVxKCkgewogLy8gRGVmaW5lIHRoaXMgbWFjcm8g
dG8gMSB0byBvbWl0IHRoZSBkZWZpbml0aW9uIG9mIFRFU1QoKSwgd2hpY2gKIC8vIGlzIGEgZ2Vu
ZXJpYyBuYW1lIGFuZCBjbGFzaGVzIHdpdGggc29tZSBvdGhlciBsaWJyYXJpZXMuCiAjaWYgIUdU
RVNUX0RPTlRfREVGSU5FX1RFU1QKLSNkZWZpbmUgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9u
YW1lKSBHVEVTVF9URVNUKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpCisjIGRlZmluZSBURVNU
KHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIEdURVNUX1RFU1QodGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSkKICNlbmRpZgogCiAvLyBEZWZpbmVzIGEgdGVzdCB0aGF0IHVzZXMgYSB0ZXN0IGZp
eHR1cmUuCkBAIC0yMDM4LDE1ICsyMjE3LDIwIEBAIGJvb2wgU3RhdGljQXNzZXJ0VHlwZUVxKCkg
ewogICBHVEVTVF9URVNUXyh0ZXN0X2ZpeHR1cmUsIHRlc3RfbmFtZSwgdGVzdF9maXh0dXJlLCBc
CiAgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkdldFR5cGVJZDx0ZXN0X2ZpeHR1
cmU+KCkpCiAKLS8vIFVzZSB0aGlzIG1hY3JvIGluIG1haW4oKSB0byBydW4gYWxsIHRlc3RzLiAg
SXQgcmV0dXJucyAwIGlmIGFsbAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKworLy8gVXNlIHRo
aXMgZnVuY3Rpb24gaW4gbWFpbigpIHRvIHJ1biBhbGwgdGVzdHMuICBJdCByZXR1cm5zIDAgaWYg
YWxsCiAvLyB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3IgMSBvdGhlcndpc2UuCiAvLwogLy8gUlVO
X0FMTF9URVNUUygpIHNob3VsZCBiZSBpbnZva2VkIGFmdGVyIHRoZSBjb21tYW5kIGxpbmUgaGFz
IGJlZW4KIC8vIHBhcnNlZCBieSBJbml0R29vZ2xlVGVzdCgpLgorLy8KKy8vIFRoaXMgZnVuY3Rp
b24gd2FzIGZvcm1lcmx5IGEgbWFjcm87IHRodXMsIGl0IGlzIGluIHRoZSBnbG9iYWwKKy8vIG5h
bWVzcGFjZSBhbmQgaGFzIGFuIGFsbC1jYXBzIG5hbWUuCitpbnQgUlVOX0FMTF9URVNUUygpIEdU
RVNUX01VU1RfVVNFX1JFU1VMVF87CiAKLSNkZWZpbmUgUlVOX0FMTF9URVNUUygpXAotICAoOjp0
ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+UnVuKCkpCi0KLX0gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCitpbmxpbmUgaW50IFJVTl9BTExfVEVTVFMoKSB7CisgIHJldHVybiA6OnRlc3Rp
bmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5SdW4oKTsKK30KIAogI2VuZGlmICAvLyBHVEVT
VF9JTkNMVURFX0dURVNUX0dURVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcmVkX2ltcGwuaAppbmRleCBlMWUyZjhjNGM4ODdh
OGRlZmNiNzU4Y2EwY2FhYjNiN2NlYjlkNDFhLi4zMGFlNzEyZjUwZWQzZDhlODQ0NmU0NDk1YWY5
YjFhYmVjYWIyZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmgKQEAgLTI3LDcgKzI3LDcgQEAKIC8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotLy8gVGhpcyBmaWxlIGlzIEFVVE9NQVRJQ0FMTFkg
R0VORVJBVEVEIG9uIDEwLzAyLzIwMDggYnkgY29tbWFuZAorLy8gVGhpcyBmaWxlIGlzIEFVVE9N
QVRJQ0FMTFkgR0VORVJBVEVEIG9uIDEwLzMxLzIwMTEgYnkgY29tbWFuZAogLy8gJ2dlbl9ndGVz
dF9wcmVkX2ltcGwucHkgNScuICBETyBOT1QgRURJVCBCWSBIQU5EIQogLy8KIC8vIEltcGxlbWVu
dHMgYSBmYW1pbHkgb2YgZ2VuZXJpYyBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3Jvcy4KQEAgLTM3
LDcgKzM3LDcgQEAKIAogLy8gTWFrZXMgc3VyZSB0aGlzIGhlYWRlciBpcyBub3QgaW5jbHVkZWQg
YmVmb3JlIGd0ZXN0LmguCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KLSNl
cnJvciBEbyBub3QgaW5jbHVkZSBndGVzdF9wcmVkX2ltcGwuaCBkaXJlY3RseS4gIEluY2x1ZGUg
Z3Rlc3QuaCBpbnN0ZWFkLgorIyBlcnJvciBEbyBub3QgaW5jbHVkZSBndGVzdF9wcmVkX2ltcGwu
aCBkaXJlY3RseS4gIEluY2x1ZGUgZ3Rlc3QuaCBpbnN0ZWFkLgogI2VuZGlmICAvLyBHVEVTVF9J
TkNMVURFX0dURVNUX0dURVNUX0hfCiAKIC8vIFRoaXMgaGVhZGVyIGltcGxlbWVudHMgYSBmYW1p
bHkgb2YgZ2VuZXJpYyBwcmVkaWNhdGUgYXNzZXJ0aW9uCkBAIC05MCwxNyArOTAsMTUgQEAgQXNz
ZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQxSGVscGVyKGNvbnN0IGNoYXIqIHByZWRfdGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgdjEpIHsKICAgaWYgKHBy
ZWQodjEpKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIE1lc3NhZ2UgbXNnOwotICBt
c2cgPDwgcHJlZF90ZXh0IDw8ICIoIgotICAgICAgPDwgZTEgPDwgIikgZXZhbHVhdGVzIHRvIGZh
bHNlLCB3aGVyZSIKLSAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2
MTsKLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgcmV0dXJuIEFzc2VydGlvbkZh
aWx1cmUoKSA8PCBwcmVkX3RleHQgPDwgIigiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PDwgZTEgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjE7CiB9CiAK
IC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRURf
Rk9STUFUMS4KIC8vIERvbid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KICNkZWZpbmUgR1RFU1Rf
UFJFRF9GT1JNQVQxXyhwcmVkX2Zvcm1hdCwgdjEsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NF
UlRfKHByZWRfZm9ybWF0KCN2MSwgdjEpLFwKKyAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgj
djEsIHYxKSwgXAogICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVybmFsIG1h
Y3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQxLiAgRG9uJ3QgdXNlCkBA
IC0xMzYsMTkgKzEzNCwxNyBAQCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDJIZWxwZXIoY29u
c3QgY2hhciogcHJlZF90ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFQyJiB2MikgewogICBpZiAocHJlZCh2MSwgdjIpKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2Vz
cygpOwogCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgcHJlZF90ZXh0IDw8ICIoIgotICAgICAg
PDwgZTEgPDwgIiwgIgotICAgICAgPDwgZTIgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVy
ZSIKLSAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MQotICAgICAg
PDwgIlxuIiA8PCBlMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYyOwotICByZXR1cm4gQXNzZXJ0
aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4
dCA8PCAiKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMSA8PCAiLCAiCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTIgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3
aGVyZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZh
bHVhdGVzIHRvICIgPDwgdjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8
IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjI7CiB9CiAKIC8vIEludGVybmFsIG1hY3JvIGZv
ciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRURfRk9STUFUMi4KIC8vIERvbid0IHVz
ZSB0aGlzIGluIHlvdXIgY29kZS4KICNkZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQyXyhwcmVkX2Zv
cm1hdCwgdjEsIHYyLCBvbl9mYWlsdXJlKVwKLSAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgj
djEsICN2MiwgdjEsIHYyKSxcCisgIEdURVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoI3YxLCAjdjIs
IHYxLCB2MiksIFwKICAgICAgICAgICAgICAgICBvbl9mYWlsdXJlKQogCiAvLyBJbnRlcm5hbCBt
YWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEMi4gIERvbid0IHVzZQpA
QCAtMTg5LDIxICsxODUsMTkgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQzSGVscGVyKGNv
bnN0IGNoYXIqIHByZWRfdGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUMyYgdjMpIHsKICAgaWYgKHByZWQodjEsIHYyLCB2MykpIHJldHVybiBBc3NlcnRpb25T
dWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBwcmVkX3RleHQgPDwgIigiCi0g
ICAgICA8PCBlMSA8PCAiLCAiCi0gICAgICA8PCBlMiA8PCAiLCAiCi0gICAgICA8PCBlMyA8PCAi
KSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2
YWx1YXRlcyB0byAiIDw8IHYxCi0gICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRv
ICIgPDwgdjIKLSAgICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MzsK
LSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1
cmUoKSA8PCBwcmVkX3RleHQgPDwgIigiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
ZTEgPDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUyIDw8ICIsICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMyA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2Us
IHdoZXJlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBl
dmFsdWF0ZXMgdG8gIiA8PCB2MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIg
PDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MzsKIH0KIAogLy8gSW50
ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQz
LgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZP
Uk1BVDNfKHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCBvbl9mYWlsdXJlKVwKLSAgR1RFU1RfQVNT
RVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3YzLCB2MSwgdjIsIHYzKSxcCisgIEdURVNUX0FT
U0VSVF8ocHJlZF9mb3JtYXQoI3YxLCAjdjIsICN2MywgdjEsIHYyLCB2MyksIFwKICAgICAgICAg
ICAgICAgICBvbl9mYWlsdXJlKQogCiAvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5n
IHtFWFBFQ1R8QVNTRVJUfV9QUkVEMy4gIERvbid0IHVzZQpAQCAtMjQ5LDIzICsyNDMsMjEgQEAg
QXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQ0SGVscGVyKGNvbnN0IGNoYXIqIHByZWRfdGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUNCYgdjQpIHsKICAgaWYg
KHByZWQodjEsIHYyLCB2MywgdjQpKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIE1l
c3NhZ2UgbXNnOwotICBtc2cgPDwgcHJlZF90ZXh0IDw8ICIoIgotICAgICAgPDwgZTEgPDwgIiwg
IgotICAgICAgPDwgZTIgPDwgIiwgIgotICAgICAgPDwgZTMgPDwgIiwgIgotICAgICAgPDwgZTQg
PDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKLSAgICAgIDw8ICJcbiIgPDwgZTEgPDwg
IiBldmFsdWF0ZXMgdG8gIiA8PCB2MQotICAgICAgPDwgIlxuIiA8PCBlMiA8PCAiIGV2YWx1YXRl
cyB0byAiIDw8IHYyCi0gICAgICA8PCAiXG4iIDw8IGUzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwg
djMKLSAgICAgIDw8ICJcbiIgPDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NDsKLSAgcmV0
dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8
PCBwcmVkX3RleHQgPDwgIigiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTEgPDwg
IiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUyIDw8ICIsICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCBlMyA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgZTQgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjEK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVz
IHRvICIgPDwgdjIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUzIDw8
ICIgZXZhbHVhdGVzIHRvICIgPDwgdjMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAi
XG4iIDw8IGU0IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjQ7CiB9CiAKIC8vIEludGVybmFsIG1h
Y3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRURfRk9STUFUNC4KIC8vIERv
bid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KICNkZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQ0Xyhw
cmVkX2Zvcm1hdCwgdjEsIHYyLCB2MywgdjQsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NFUlRf
KHByZWRfZm9ybWF0KCN2MSwgI3YyLCAjdjMsICN2NCwgdjEsIHYyLCB2MywgdjQpLFwKKyAgR1RF
U1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3YzLCAjdjQsIHYxLCB2MiwgdjMsIHY0
KSwgXAogICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVybmFsIG1hY3JvIGZv
ciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQ0LiAgRG9uJ3QgdXNlCkBAIC0zMTYs
MjUgKzMwOCwyMyBAQCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDVIZWxwZXIoY29uc3QgY2hh
ciogcHJlZF90ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQ1
JiB2NSkgewogICBpZiAocHJlZCh2MSwgdjIsIHYzLCB2NCwgdjUpKSByZXR1cm4gQXNzZXJ0aW9u
U3VjY2VzcygpOwogCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgcHJlZF90ZXh0IDw8ICIoIgot
ICAgICAgPDwgZTEgPDwgIiwgIgotICAgICAgPDwgZTIgPDwgIiwgIgotICAgICAgPDwgZTMgPDwg
IiwgIgotICAgICAgPDwgZTQgPDwgIiwgIgotICAgICAgPDwgZTUgPDwgIikgZXZhbHVhdGVzIHRv
IGZhbHNlLCB3aGVyZSIKLSAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8
PCB2MQotICAgICAgPDwgIlxuIiA8PCBlMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYyCi0gICAg
ICA8PCAiXG4iIDw8IGUzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjMKLSAgICAgIDw8ICJcbiIg
PDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NAotICAgICAgPDwgIlxuIiA8PCBlNSA8PCAi
IGV2YWx1YXRlcyB0byAiIDw8IHY1OwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwor
ICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCBlMSA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgZTIgPDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUzIDw8
ICIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlNCA8PCAiLCAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgZTUgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVy
ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVh
dGVzIHRvICIgPDwgdjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUy
IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
PCAiXG4iIDw8IGUzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiXG4iIDw8IGU0IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjQKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGU1IDw8ICIgZXZhbHVhdGVzIHRvICIg
PDwgdjU7CiB9CiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxB
U1NFUlR9X1BSRURfRk9STUFUNS4KIC8vIERvbid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KICNk
ZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQ1XyhwcmVkX2Zvcm1hdCwgdjEsIHYyLCB2MywgdjQsIHY1
LCBvbl9mYWlsdXJlKVwKLSAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3Yz
LCAjdjQsICN2NSwgdjEsIHYyLCB2MywgdjQsIHY1KSxcCisgIEdURVNUX0FTU0VSVF8ocHJlZF9m
b3JtYXQoI3YxLCAjdjIsICN2MywgI3Y0LCAjdjUsIHYxLCB2MiwgdjMsIHY0LCB2NSksIFwKICAg
ICAgICAgICAgICAgICBvbl9mYWlsdXJlKQogCiAvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVt
ZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVENS4gIERvbid0IHVzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3Qt
cG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9j
dXN0b20vZ3Rlc3QtcG9ydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlNzQ0YmQzYmIzOGMzYTIxYjc1MjA3OGI3
YTIxZWIzZDYyMjM3ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmgKQEAgLTAsMCArMSw2
OSBAQAorLy8gQ29weXJpZ2h0IDIwMTUsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8v
IEluamVjdGlvbiBwb2ludCBmb3IgY3VzdG9tIHVzZXIgY29uZmlndXJhdGlvbnMuCisvLyBUaGUg
Zm9sbG93aW5nIG1hY3JvcyBjYW4gYmUgZGVmaW5lZDoKKy8vCisvLyAgIEZsYWcgcmVsYXRlZCBt
YWNyb3M6CisvLyAgICAgR1RFU1RfRkxBRyhmbGFnX25hbWUpCisvLyAgICAgR1RFU1RfVVNFX09X
Tl9GTEFHRklMRV9GTEFHXyAgLSBEZWZpbmUgdG8gMCB3aGVuIHRoZSBzeXN0ZW0gcHJvdmlkZXMg
aXRzCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd24gZmxhZ2ZpbGUg
ZmxhZyBwYXJzaW5nLgorLy8gICAgIEdURVNUX0RFQ0xBUkVfYm9vbF8obmFtZSkKKy8vICAgICBH
VEVTVF9ERUNMQVJFX2ludDMyXyhuYW1lKQorLy8gICAgIEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhu
YW1lKQorLy8gICAgIEdURVNUX0RFRklORV9ib29sXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKQor
Ly8gICAgIEdURVNUX0RFRklORV9pbnQzMl8obmFtZSwgZGVmYXVsdF92YWwsIGRvYykKKy8vICAg
ICBHVEVTVF9ERUZJTkVfc3RyaW5nXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKQorLy8KKy8vICAg
VGVzdCBmaWx0ZXJpbmc6CisvLyAgICAgR1RFU1RfVEVTVF9GSUxURVJfRU5WX1ZBUl8gLSBUaGUg
bmFtZSBvZiBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0aGF0CisvLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aWxsIGJlIHVzZWQgaWYgLS1HVEVTVF9GTEFHKHRlc3RfZmlsdGVy
KQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgbm90IHByb3ZpZGVkLgor
Ly8KKy8vICAgTG9nZ2luZzoKKy8vICAgICBHVEVTVF9MT0dfKHNldmVyaXR5KQorLy8gICAgIEdU
RVNUX0NIRUNLXyhjb25kaXRpb24pCisvLyAgICAgRnVuY3Rpb25zIExvZ1RvU3RkZXJyKCkgYW5k
IEZsdXNoSW5mb0xvZygpIGhhdmUgdG8gYmUgcHJvdmlkZWQgdG9vLgorLy8KKy8vICAgVGhyZWFk
aW5nOgorLy8gICAgIEdURVNUX0hBU19OT1RJRklDQVRJT05fIC0gRW5hYmxlZCBpZiBOb3RpZmlj
YXRpb24gaXMgYWxyZWFkeSBwcm92aWRlZC4KKy8vICAgICBHVEVTVF9IQVNfTVVURVhfQU5EX1RI
UkVBRF9MT0NBTF8gLSBFbmFibGVkIGlmIE11dGV4IGFuZCBUaHJlYWRMb2NhbCBhcmUKKy8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IHByb3ZpZGVkLgor
Ly8gICAgIE11c3QgYWxzbyBwcm92aWRlIEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRl
eCkgYW5kCisvLyAgICAgR1RFU1RfREVGSU5FX1NUQVRJQ19NVVRFWF8obXV0ZXgpCisvLworLy8g
ICAgIEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhsb2NrcykKKy8vICAgICBHVEVTVF9M
T0NLX0VYQ0xVREVEXyhsb2NrcykKKy8vCisvLyAqKiBDdXN0b20gaW1wbGVtZW50YXRpb24gc3Rh
cnRzIGhlcmUgKioKKworI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0NVU1RP
TV9HVEVTVF9QT1JUX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VT
VE9NX0dURVNUX1BPUlRfSF8KKworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVS
TkFMX0NVU1RPTV9HVEVTVF9QT1JUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wcmludGVycy5oIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3Qt
cHJpbnRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGMxZWEwNTBiNjFlOTNiZmNmMTQ2ZTYxMTFiZmE1MDMx
NWM4MmVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcHJpbnRlcnMuaApAQCAtMCwwICsxLDQyIEBA
CisvLyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8v
IGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gVGhp
cyBmaWxlIHByb3ZpZGVzIGFuIGluamVjdGlvbiBwb2ludCBmb3IgY3VzdG9tIHByaW50ZXJzIGlu
IGEgbG9jYWwKKy8vIGluc3RhbGxhdGlvbiBvZiBnVGVzdC4KKy8vIEl0IHdpbGwgYmUgaW5jbHVk
ZWQgZnJvbSBndGVzdC1wcmludGVycy5oIGFuZCB0aGUgb3ZlcnJpZGVzIGluIHRoaXMgZmlsZQor
Ly8gd2lsbCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lLgorLy8gU2VlIGRvY3VtZW50YXRpb24gYXQg
Z3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCBmb3IgZGV0YWlscyBvbiBob3cgdG8gZGVmaW5lIGEKKy8v
IGN1c3RvbSBwcmludGVyLgorLy8KKy8vICoqIEN1c3RvbSBpbXBsZW1lbnRhdGlvbiBzdGFydHMg
aGVyZSAqKgorCisjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dU
RVNUX1BSSU5URVJTX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VT
VE9NX0dURVNUX1BSSU5URVJTX0hfCisKKyNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9J
TlRFUk5BTF9DVVNUT01fR1RFU1RfUFJJTlRFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmMyNzQxMmE4OTgxODQ0ZDkyMTcxYWJlNTU4YzFkNjg5ODlkMDE1ZmMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2N1c3RvbS9ndGVzdC5oCkBAIC0wLDAgKzEsNDEgQEAKKy8vIENvcHlyaWdodCAyMDE1
LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBJbmplY3Rpb24gcG9pbnQgZm9yIGN1
c3RvbSB1c2VyIGNvbmZpZ3VyYXRpb25zLgorLy8gVGhlIGZvbGxvd2luZyBtYWNyb3MgY2FuIGJl
IGRlZmluZWQ6CisvLworLy8gR1RFU1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVSXyAgLSBUaGUgbmFt
ZSBvZiBhbiBpbXBsZW1lbnRhdGlvbiBvZgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UuCisvLworLy8gKiogQ3VzdG9tIGltcGxl
bWVudGF0aW9uIHN0YXJ0cyBoZXJlICoqCisKKyNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9J
TlRFUk5BTF9DVVNUT01fR1RFU1RfSF8KKyNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRF
Uk5BTF9DVVNUT01fR1RFU1RfSF8KKworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lO
VEVSTkFMX0NVU1RPTV9HVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRo
LXRlc3QtaW50ZXJuYWwuaAppbmRleCBlNDMzMDg0OGQ0ZWFlNTcwZjI4MGRhYzU3Y2YwMGIyOTcy
MmM3ZDBjLi4yYjNhNzhmNWJmODYzMjhmYzFiZjU4ZjE2ODJjOWVlNDRhNTA1N2MyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0
LWRlYXRoLXRlc3QtaW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaApAQCAtMzcsNyAr
MzcsOSBAQAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0RFQVRI
X1RFU1RfSU5URVJOQUxfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9H
VEVTVF9ERUFUSF9URVNUX0lOVEVSTkFMX0hfCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9n
dGVzdC1pbnRlcm5hbC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFs
LmgiCisKKyNpbmNsdWRlIDxzdGRpby5oPgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiBuYW1lc3Bh
Y2UgaW50ZXJuYWwgewpAQCAtOTYsOCArOTgsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBEZWF0aFRl
c3QgewogICAvLyB0ZXN0LCB0aGVuIHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlLgogICBlbnVtIFRl
c3RSb2xlIHsgT1ZFUlNFRV9URVNULCBFWEVDVVRFX1RFU1QgfTsKIAotICAvLyBBbiBlbnVtZXJh
dGlvbiBvZiB0aGUgdHdvIHJlYXNvbnMgdGhhdCBhIHRlc3QgbWlnaHQgYmUgYWJvcnRlZC4KLSAg
ZW51bSBBYm9ydFJlYXNvbiB7IFRFU1RfRU5DT1VOVEVSRURfUkVUVVJOX1NUQVRFTUVOVCwgVEVT
VF9ESURfTk9UX0RJRSB9OworICAvLyBBbiBlbnVtZXJhdGlvbiBvZiB0aGUgdGhyZWUgcmVhc29u
cyB0aGF0IGEgdGVzdCBtaWdodCBiZSBhYm9ydGVkLgorICBlbnVtIEFib3J0UmVhc29uIHsKKyAg
ICBURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQsCisgICAgVEVTVF9USFJFV19FWENF
UFRJT04sCisgICAgVEVTVF9ESURfTk9UX0RJRQorICB9OwogCiAgIC8vIEFzc3VtZXMgb25lIG9m
IHRoZSBhYm92ZSByb2xlcy4KICAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCkgPSAwOwpA
QCAtMTIxLDExICsxMjcsMTEgQEAgY2xhc3MgR1RFU1RfQVBJXyBEZWF0aFRlc3QgewogICAvLyB0
aGUgbGFzdCBkZWF0aCB0ZXN0LgogICBzdGF0aWMgY29uc3QgY2hhciogTGFzdE1lc3NhZ2UoKTsK
IAotICBzdGF0aWMgdm9pZCBzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKKyAgc3RhdGljIHZvaWQgc2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKGNv
bnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKTsKIAogIHByaXZhdGU6CiAgIC8vIEEgc3RyaW5nIGNv
bnRhaW5pbmcgYSBkZXNjcmlwdGlvbiBvZiB0aGUgb3V0Y29tZSBvZiB0aGUgbGFzdCBkZWF0aCB0
ZXN0LgotICBzdGF0aWMgU3RyaW5nIGxhc3RfZGVhdGhfdGVzdF9tZXNzYWdlXzsKKyAgc3RhdGlj
IHN0ZDo6c3RyaW5nIGxhc3RfZGVhdGhfdGVzdF9tZXNzYWdlXzsKIAogICBHVEVTVF9ESVNBTExP
V19DT1BZX0FORF9BU1NJR05fKERlYXRoVGVzdCk7CiB9OwpAQCAtMTQ5LDkgKzE1NSwzNCBAQCBj
bGFzcyBEZWZhdWx0RGVhdGhUZXN0RmFjdG9yeSA6IHB1YmxpYyBEZWF0aFRlc3RGYWN0b3J5IHsK
IC8vIGJ5IGEgc2lnbmFsLCBvciBleGl0ZWQgbm9ybWFsbHkgd2l0aCBhIG5vbnplcm8gZXhpdCBj
b2RlLgogR1RFU1RfQVBJXyBib29sIEV4aXRlZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1
cyk7CiAKKy8vIFRyYXBzIEMrKyBleGNlcHRpb25zIGVzY2FwaW5nIHN0YXRlbWVudCBhbmQgcmVw
b3J0cyB0aGVtIGFzIHRlc3QKKy8vIGZhaWx1cmVzLiBOb3RlIHRoYXQgdHJhcHBpbmcgU0VIIGV4
Y2VwdGlvbnMgaXMgbm90IGltcGxlbWVudGVkIGhlcmUuCisjIGlmIEdURVNUX0hBU19FWENFUFRJ
T05TCisjICBkZWZpbmUgR1RFU1RfRVhFQ1VURV9ERUFUSF9URVNUX1NUQVRFTUVOVF8oc3RhdGVt
ZW50LCBkZWF0aF90ZXN0KSBcCisgIHRyeSB7IFwKKyAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNI
QUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKKyAgfSBjYXRjaCAoY29uc3Qg
OjpzdGQ6OmV4Y2VwdGlvbiYgZ3Rlc3RfZXhjZXB0aW9uKSB7IFwKKyAgICBmcHJpbnRmKFwKKyAg
ICAgICAgc3RkZXJyLCBcCisgICAgICAgICJcbiVzOiBDYXVnaHQgc3RkOjpleGNlcHRpb24tZGVy
aXZlZCBleGNlcHRpb24gZXNjYXBpbmcgdGhlICIgXAorICAgICAgICAiZGVhdGggdGVzdCBzdGF0
ZW1lbnQuIEV4Y2VwdGlvbiBtZXNzYWdlOiAlc1xuIiwgXAorICAgICAgICA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpGb3JtYXRGaWxlTG9jYXRpb24oX19GSUxFX18sIF9fTElORV9fKS5jX3N0cigpLCBc
CisgICAgICAgIGd0ZXN0X2V4Y2VwdGlvbi53aGF0KCkpOyBcCisgICAgZmZsdXNoKHN0ZGVycik7
IFwKKyAgICBkZWF0aF90ZXN0LT5BYm9ydCg6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q6
OlRFU1RfVEhSRVdfRVhDRVBUSU9OKTsgXAorICB9IGNhdGNoICguLi4pIHsgXAorICAgIGRlYXRo
X3Rlc3QtPkFib3J0KDo6dGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVzdDo6VEVTVF9USFJFV19F
WENFUFRJT04pOyBcCisgIH0KKworIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfRVhFQ1VURV9ERUFU
SF9URVNUX1NUQVRFTUVOVF8oc3RhdGVtZW50LCBkZWF0aF90ZXN0KSBcCisgIEdURVNUX1NVUFBS
RVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KQorCisjIGVuZGlm
CisKIC8vIFRoaXMgbWFjcm8gaXMgZm9yIGltcGxlbWVudGluZyBBU1NFUlRfREVBVEgqLCBFWFBF
Q1RfREVBVEgqLAogLy8gQVNTRVJUX0VYSVQqLCBhbmQgRVhQRUNUX0VYSVQqLgotI2RlZmluZSBH
VEVTVF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIGZhaWwpIFwKKyMg
ZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgZmFp
bCkgXAogICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCiAgIGlmICg6OnRlc3Rpbmc6
OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAogICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJu
YWw6OlJFJiBndGVzdF9yZWdleCA9IChyZWdleCk7IFwKQEAgLTE3MiwxMCArMjAzLDEyIEBAIEdU
RVNUX0FQSV8gYm9vbCBFeGl0ZWRVbnN1Y2Nlc3NmdWxseShpbnQgZXhpdF9zdGF0dXMpOwogICAg
ICAgICBjYXNlIDo6dGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVzdDo6RVhFQ1VURV9URVNUOiB7
IFwKICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OlJldHVyblNlbnRp
bmVsIFwKICAgICAgICAgICAgICAgZ3Rlc3Rfc2VudGluZWwoZ3Rlc3RfZHQpOyBcCi0gICAgICAg
ICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1l
bnQpOyBcCisgICAgICAgICAgR1RFU1RfRVhFQ1VURV9ERUFUSF9URVNUX1NUQVRFTUVOVF8oc3Rh
dGVtZW50LCBndGVzdF9kdCk7IFwKICAgICAgICAgICBndGVzdF9kdC0+QWJvcnQoOjp0ZXN0aW5n
OjppbnRlcm5hbDo6RGVhdGhUZXN0OjpURVNUX0RJRF9OT1RfRElFKTsgXAogICAgICAgICAgIGJy
ZWFrOyBcCiAgICAgICAgIH0gXAorICAgICAgICBkZWZhdWx0OiBcCisgICAgICAgICAgYnJlYWs7
IFwKICAgICAgIH0gXAogICAgIH0gXAogICB9IGVsc2UgXApAQCAtMTg0LDEyICsyMTcsMjMgQEAg
R1RFU1RfQVBJXyBib29sIEV4aXRlZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1cyk7CiAv
LyBUaGUgc3ltYm9sICJmYWlsIiBoZXJlIGV4cGFuZHMgdG8gc29tZXRoaW5nIGludG8gd2hpY2gg
YSBtZXNzYWdlCiAvLyBjYW4gYmUgc3RyZWFtZWQuCiAKKy8vIFRoaXMgbWFjcm8gaXMgZm9yIGlt
cGxlbWVudGluZyBBU1NFUlQvRVhQRUNUX0RFQlVHX0RFQVRIIHdoZW4gY29tcGlsZWQgaW4KKy8v
IE5ERUJVRyBtb2RlLiBJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0aGUgc3RhdGVtZW50cyB0byBiZSBl
eGVjdXRlZCwgdGhlIHJlZ2V4IGlzCisvLyBpZ25vcmVkLCBhbmQgdGhlIG1hY3JvIG11c3QgYWNj
ZXB0IGEgc3RyZWFtZWQgbWVzc2FnZSBldmVuIHRob3VnaCB0aGUgbWVzc2FnZQorLy8gaXMgbmV2
ZXIgcHJpbnRlZC4KKyMgZGVmaW5lIEdURVNUX0VYRUNVVEVfU1RBVEVNRU5UXyhzdGF0ZW1lbnQs
IHJlZ2V4KSBcCisgIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKKyAgaWYgKDo6dGVz
dGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBcCisgICAgIEdURVNUX1NVUFBSRVNTX1VO
UkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KTsgXAorICB9IGVsc2UgXAor
ICAgIDo6dGVzdGluZzo6TWVzc2FnZSgpCisKIC8vIEEgY2xhc3MgcmVwcmVzZW50aW5nIHRoZSBw
YXJzZWQgY29udGVudHMgb2YgdGhlCiAvLyAtLWd0ZXN0X2ludGVybmFsX3J1bl9kZWF0aF90ZXN0
IGZsYWcsIGFzIGl0IGV4aXN0ZWQgd2hlbgogLy8gUlVOX0FMTF9URVNUUyB3YXMgY2FsbGVkLgog
Y2xhc3MgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnIHsKICBwdWJsaWM6Ci0gIEludGVybmFsUnVu
RGVhdGhUZXN0RmxhZyhjb25zdCBTdHJpbmcmIGFfZmlsZSwKKyAgSW50ZXJuYWxSdW5EZWF0aFRl
c3RGbGFnKGNvbnN0IHN0ZDo6c3RyaW5nJiBhX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgYV9saW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFuX2luZGV4
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFfd3JpdGVfZmQpCkBAIC0yMDEsMTMg
KzI0NSwxMyBAQCBjbGFzcyBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcgewogICAgICAgcG9zaXg6
OkNsb3NlKHdyaXRlX2ZkXyk7CiAgIH0KIAotICBTdHJpbmcgZmlsZSgpIGNvbnN0IHsgcmV0dXJu
IGZpbGVfOyB9CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlKCkgY29uc3QgeyByZXR1cm4gZmls
ZV87IH0KICAgaW50IGxpbmUoKSBjb25zdCB7IHJldHVybiBsaW5lXzsgfQogICBpbnQgaW5kZXgo
KSBjb25zdCB7IHJldHVybiBpbmRleF87IH0KICAgaW50IHdyaXRlX2ZkKCkgY29uc3QgeyByZXR1
cm4gd3JpdGVfZmRfOyB9CiAKICBwcml2YXRlOgotICBTdHJpbmcgZmlsZV87CisgIHN0ZDo6c3Ry
aW5nIGZpbGVfOwogICBpbnQgbGluZV87CiAgIGludCBpbmRleF87CiAgIGludCB3cml0ZV9mZF87
CkBAIC0yNTQsNyArMjk4LDcgQEAgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBQYXJzZUludGVy
bmFsUnVuRGVhdGhUZXN0RmxhZygpOwogLy8gIHN0YXRlbWVudCB1bmNvbmRpdGlvbmFsbHkgcmV0
dXJucyBvciB0aHJvd3MuIFRoZSBNZXNzYWdlIGNvbnN0cnVjdG9yIGF0CiAvLyAgdGhlIGVuZCBh
bGxvd3MgdGhlIHN5bnRheCBvZiBzdHJlYW1pbmcgYWRkaXRpb25hbCBtZXNzYWdlcyBpbnRvIHRo
ZQogLy8gIG1hY3JvLCBmb3IgY29tcGlsYXRpb25hbCBjb21wYXRpYmlsaXR5IHdpdGggRVhQRUNU
X0RFQVRIL0FTU0VSVF9ERUFUSC4KLSNkZWZpbmUgR1RFU1RfVU5TVVBQT1JURURfREVBVEhfVEVT
VF8oc3RhdGVtZW50LCByZWdleCwgdGVybWluYXRvcikgXAorIyBkZWZpbmUgR1RFU1RfVU5TVVBQ
T1JURURfREVBVEhfVEVTVF8oc3RhdGVtZW50LCByZWdleCwgdGVybWluYXRvcikgXAogICAgIEdU
RVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKICAgICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6QWx3YXlzVHJ1ZSgpKSB7IFwKICAgICAgIEdURVNUX0xPR18oV0FSTklORykgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC1maWxlcGF0aC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC1maWxlcGF0aC5oCmluZGV4IDRiNzZkNzk1MDZiMDI2YWJhMzcxNjQ3MmZjNDNj
ZWZjMWE3ZTM4OGEuLjdhMTNiNGIwZGU2MDgzYmJmZTY5NjNmOGMwZWQxNmUyN2RlNzcwMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtZmlsZXBhdGguaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgKQEAgLTQwLDcgKzQwLDcgQEAKICNpZm5kZWYg
R1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9GSUxFUEFUSF9IXwogI2RlZmluZSBH
VEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0ZJTEVQQVRIX0hfCiAKLSNpbmNsdWRl
IDxndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5h
bC9ndGVzdC1zdHJpbmcuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVy
bmFsIHsKQEAgLTYxLDExICs2MSw3IEBAIGNsYXNzIEdURVNUX0FQSV8gRmlsZVBhdGggewogICBG
aWxlUGF0aCgpIDogcGF0aG5hbWVfKCIiKSB7IH0KICAgRmlsZVBhdGgoY29uc3QgRmlsZVBhdGgm
IHJocykgOiBwYXRobmFtZV8ocmhzLnBhdGhuYW1lXykgeyB9CiAKLSAgZXhwbGljaXQgRmlsZVBh
dGgoY29uc3QgY2hhciogcGF0aG5hbWUpIDogcGF0aG5hbWVfKHBhdGhuYW1lKSB7Ci0gICAgTm9y
bWFsaXplKCk7Ci0gIH0KLQotICBleHBsaWNpdCBGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGhu
YW1lKSA6IHBhdGhuYW1lXyhwYXRobmFtZSkgeworICBleHBsaWNpdCBGaWxlUGF0aChjb25zdCBz
dGQ6OnN0cmluZyYgcGF0aG5hbWUpIDogcGF0aG5hbWVfKHBhdGhuYW1lKSB7CiAgICAgTm9ybWFs
aXplKCk7CiAgIH0KIApAQCAtNzgsNyArNzQsNyBAQCBjbGFzcyBHVEVTVF9BUElfIEZpbGVQYXRo
IHsKICAgICBwYXRobmFtZV8gPSByaHMucGF0aG5hbWVfOwogICB9CiAKLSAgU3RyaW5nIFRvU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gcGF0aG5hbWVfOyB9CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBz
dHJpbmcoKSBjb25zdCB7IHJldHVybiBwYXRobmFtZV87IH0KICAgY29uc3QgY2hhciogY19zdHIo
KSBjb25zdCB7IHJldHVybiBwYXRobmFtZV8uY19zdHIoKTsgfQogCiAgIC8vIFJldHVybnMgdGhl
IGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksIG9yICIiIGlmIHVuc3VjY2Vzc2Z1bC4KQEAgLTEx
MSw4ICsxMDcsOCBAQCBjbGFzcyBHVEVTVF9BUElfIEZpbGVQYXRoIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmlsZVBhdGgmIGJhc2VfbmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0ZW5z
aW9uKTsKIAotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBwYXRoIGlzIE5VTEwgb3IgIiIuCi0g
IGJvb2wgSXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIGNfc3RyKCkgPT0gTlVMTCB8fCAqY19zdHIo
KSA9PSAnXDAnOyB9CisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHBhdGggaXMgIiIuCisgIGJv
b2wgSXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHBhdGhuYW1lXy5lbXB0eSgpOyB9CiAKICAgLy8g
SWYgaW5wdXQgbmFtZSBoYXMgYSB0cmFpbGluZyBzZXBhcmF0b3IgY2hhcmFjdGVyLCByZW1vdmVz
IGl0IGFuZCByZXR1cm5zCiAgIC8vIHRoZSBuYW1lLCBvdGhlcndpc2UgcmV0dXJuIHRoZSBuYW1l
IHN0cmluZyB1bm1vZGlmaWVkLgpAQCAtMjAxLDcgKzE5Nyw3IEBAIGNsYXNzIEdURVNUX0FQSV8g
RmlsZVBhdGggewogICAvLyBzZXBhcmF0b3JzLiBSZXR1cm5zIE5VTEwgaWYgbm8gcGF0aCBzZXBh
cmF0b3Igd2FzIGZvdW5kLgogICBjb25zdCBjaGFyKiBGaW5kTGFzdFBhdGhTZXBhcmF0b3IoKSBj
b25zdDsKIAotICBTdHJpbmcgcGF0aG5hbWVfOworICBzdGQ6OnN0cmluZyBwYXRobmFtZV87CiB9
OyAgLy8gY2xhc3MgRmlsZVBhdGgKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0
LWludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVy
bmFsL2d0ZXN0LWludGVybmFsLmgKaW5kZXggMzFhNjZlOTlkM2M0ODIxNTFlNDBmYzM1YTQwMjcw
MDY5MDMyYTFkNS4uZWJkMWNmNjE1ZGUwN2Q5YjVhYjBlNjBjNzEwMDgyNjFlZmU1NDIxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9n
dGVzdC1pbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaApAQCAtMzcsMjQgKzM3LDMzIEBACiAjaWZuZGVm
IEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfSU5URVJOQUxfSF8KICNkZWZpbmUg
R1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9JTlRFUk5BTF9IXwogCi0jaW5jbHVk
ZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFs
L2d0ZXN0LXBvcnQuaCIKIAogI2lmIEdURVNUX09TX0xJTlVYCi0jaW5jbHVkZSA8c3RkbGliLmg+
Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3dhaXQuaD4KLSNpbmNsdWRl
IDx1bmlzdGQuaD4KKyMgaW5jbHVkZSA8c3RkbGliLmg+CisjIGluY2x1ZGUgPHN5cy90eXBlcy5o
PgorIyBpbmNsdWRlIDxzeXMvd2FpdC5oPgorIyBpbmNsdWRlIDx1bmlzdGQuaD4KICNlbmRpZiAg
Ly8gR1RFU1RfT1NfTElOVVgKIAorI2lmIEdURVNUX0hBU19FWENFUFRJT05TCisjIGluY2x1ZGUg
PHN0ZGV4Y2VwdD4KKyNlbmRpZgorCiAjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxmbG9h
dC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGlvbWFuaXA+CiAjaW5jbHVkZSA8
bGltaXRzPgorI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxzZXQ+CisjaW5jbHVkZSA8c3RyaW5n
PgorI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0
cmluZy5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmg+Ci0jaW5j
bHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmg+CisjaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3QtbWVzc2FnZS5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5o
IgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgiCisjaW5jbHVkZSAi
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgiCiAKIC8vIER1ZSB0byBDKysgcHJlcHJv
Y2Vzc29yIHdlaXJkbmVzcywgd2UgbmVlZCBkb3VibGUgaW5kaXJlY3Rpb24gdG8KIC8vIGNvbmNh
dGVuYXRlIHR3byB0b2tlbnMgd2hlbiBvbmUgb2YgdGhlbSBpcyBfX0xJTkVfXy4gIFdyaXRpbmcK
QEAgLTY3LDM5ICs3NiwxMiBAQAogI2RlZmluZSBHVEVTVF9DT05DQVRfVE9LRU5fKGZvbywgYmFy
KSBHVEVTVF9DT05DQVRfVE9LRU5fSU1QTF8oZm9vLCBiYXIpCiAjZGVmaW5lIEdURVNUX0NPTkNB
VF9UT0tFTl9JTVBMXyhmb28sIGJhcikgZm9vICMjIGJhcgogCi0vLyBHb29nbGUgVGVzdCBkZWZp
bmVzIHRoZSB0ZXN0aW5nOjpNZXNzYWdlIGNsYXNzIHRvIGFsbG93IGNvbnN0cnVjdGlvbiBvZgot
Ly8gdGVzdCBtZXNzYWdlcyB2aWEgdGhlIDw8IG9wZXJhdG9yLiAgVGhlIGlkZWEgaXMgdGhhdCBh
bnl0aGluZwotLy8gc3RyZWFtYWJsZSB0byBzdGQ6Om9zdHJlYW0gY2FuIGJlIHN0cmVhbWVkIHRv
IGEgdGVzdGluZzo6TWVzc2FnZS4KLS8vIFRoaXMgYWxsb3dzIGEgdXNlciB0byB1c2UgaGlzIG93
biB0eXBlcyBpbiBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGJ5Ci0vLyBvdmVybG9hZGluZyB0aGUg
PDwgb3BlcmF0b3IuCi0vLwotLy8gdXRpbC9ndGwvc3RsX2xvZ2dpbmctaW5sLmggb3ZlcmxvYWRz
IDw8IGZvciBTVEwgY29udGFpbmVycy4gIFRoZXNlCi0vLyBvdmVybG9hZHMgY2Fubm90IGJlIGRl
ZmluZWQgaW4gdGhlIHN0ZCBuYW1lc3BhY2UsIGFzIHRoYXQgd2lsbCBiZQotLy8gdW5kZWZpbmVk
IGJlaGF2aW9yLiAgVGhlcmVmb3JlLCB0aGV5IGFyZSBkZWZpbmVkIGluIHRoZSBnbG9iYWwKLS8v
IG5hbWVzcGFjZSBpbnN0ZWFkLgotLy8KLS8vIEMrKydzIHN5bWJvbCBsb29rdXAgcnVsZSAoaS5l
LiBLb2VuaWcgbG9va3VwKSBzYXlzIHRoYXQgdGhlc2UKLS8vIG92ZXJsb2FkcyBhcmUgdmlzaWJs
ZSBpbiBlaXRoZXIgdGhlIHN0ZCBuYW1lc3BhY2Ugb3IgdGhlIGdsb2JhbAotLy8gbmFtZXNwYWNl
LCBidXQgbm90IG90aGVyIG5hbWVzcGFjZXMsIGluY2x1ZGluZyB0aGUgdGVzdGluZwotLy8gbmFt
ZXNwYWNlIHdoaWNoIEdvb2dsZSBUZXN0J3MgTWVzc2FnZSBjbGFzcyBpcyBpbi4KLS8vCi0vLyBU
byBhbGxvdyBTVEwgY29udGFpbmVycyAoYW5kIG90aGVyIHR5cGVzIHRoYXQgaGFzIGEgPDwgb3Bl
cmF0b3IKLS8vIGRlZmluZWQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UpIHRvIGJlIHVzZWQgaW4g
R29vZ2xlIFRlc3QgYXNzZXJ0aW9ucywKLS8vIHRlc3Rpbmc6Ok1lc3NhZ2UgbXVzdCBhY2Nlc3Mg
dGhlIGN1c3RvbSA8PCBvcGVyYXRvciBmcm9tIHRoZSBnbG9iYWwKLS8vIG5hbWVzcGFjZS4gIEhl
bmNlIHRoaXMgaGVscGVyIGZ1bmN0aW9uLgotLy8KLS8vIE5vdGU6IEplZmZyZXkgWWFzc2tpbiBz
dWdnZXN0ZWQgYW4gYWx0ZXJuYXRpdmUgZml4IGJ5ICJ1c2luZwotLy8gOjpvcGVyYXRvcjw8OyIg
aW4gdGhlIGRlZmluaXRpb24gb2YgTWVzc2FnZSdzIG9wZXJhdG9yPDwuICBUaGF0IGZpeAotLy8g
ZG9lc24ndCByZXF1aXJlIGEgaGVscGVyIGZ1bmN0aW9uLCBidXQgdW5mb3J0dW5hdGVseSBkb2Vz
bid0Ci0vLyBjb21waWxlIHdpdGggTVNWQy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5l
IHZvaWQgR1Rlc3RTdHJlYW1Ub0hlbHBlcihzdGQ6Om9zdHJlYW0qIG9zLCBjb25zdCBUJiB2YWwp
IHsKLSAgKm9zIDw8IHZhbDsKLX0KK2NsYXNzIFByb3RvY29sTWVzc2FnZTsKK25hbWVzcGFjZSBw
cm90bzIgeyBjbGFzcyBNZXNzYWdlOyB9CiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIAotLy8gRm9y
d2FyZCBkZWNsYXJhdGlvbiBvZiBjbGFzc2VzLgorLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMuCiAK
IGNsYXNzIEFzc2VydGlvblJlc3VsdDsgICAgICAgICAgICAgICAgIC8vIFJlc3VsdCBvZiBhbiBh
c3NlcnRpb24uCiBjbGFzcyBNZXNzYWdlOyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXBy
ZXNlbnRzIGEgZmFpbHVyZSBtZXNzYWdlLgpAQCAtMTA4LDYgKzkwLDkgQEAgY2xhc3MgVGVzdElu
Zm87ICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5mb3JtYXRpb24gYWJvdXQgYSB0ZXN0Lgog
Y2xhc3MgVGVzdFBhcnRSZXN1bHQ7ICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0IG9mIGEgdGVz
dCBwYXJ0LgogY2xhc3MgVW5pdFRlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSBjb2xs
ZWN0aW9uIG9mIHRlc3QgY2FzZXMuCiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorOjpzdGQ6OnN0
cmluZyBQcmludFRvU3RyaW5nKGNvbnN0IFQmIHZhbHVlKTsKKwogbmFtZXNwYWNlIGludGVybmFs
IHsKIAogc3RydWN0IFRyYWNlSW5mbzsgICAgICAgICAgICAgICAgICAgICAgLy8gSW5mb3JtYXRp
b24gYWJvdXQgYSB0cmFjZSBwb2ludC4KQEAgLTExNSwxOCArMTAwLDEwIEBAIGNsYXNzIFNjb3Bl
ZFRyYWNlOyAgICAgICAgICAgICAgICAgICAgIC8vIEltcGxlbWVudHMgc2NvcGVkIHRyYWNlLgog
Y2xhc3MgVGVzdEluZm9JbXBsOyAgICAgICAgICAgICAgICAgICAgLy8gT3BhcXVlIGltcGxlbWVu
dGF0aW9uIG9mIFRlc3RJbmZvCiBjbGFzcyBVbml0VGVzdEltcGw7ICAgICAgICAgICAgICAgICAg
ICAvLyBPcGFxdWUgaW1wbGVtZW50YXRpb24gb2YgVW5pdFRlc3QKIAotLy8gSG93IG1hbnkgdGlt
ZXMgSW5pdEdvb2dsZVRlc3QoKSBoYXMgYmVlbiBjYWxsZWQuCi1leHRlcm4gaW50IGdfaW5pdF9n
dGVzdF9jb3VudDsKLQogLy8gVGhlIHRleHQgdXNlZCBpbiBmYWlsdXJlIG1lc3NhZ2VzIHRvIGlu
ZGljYXRlIHRoZSBzdGFydCBvZiB0aGUKIC8vIHN0YWNrIHRyYWNlLgogR1RFU1RfQVBJXyBleHRl
cm4gY29uc3QgY2hhciBrU3RhY2tUcmFjZU1hcmtlcltdOwogCi0vLyBBIHNlY3JldCB0eXBlIHRo
YXQgR29vZ2xlIFRlc3QgdXNlcnMgZG9uJ3Qga25vdyBhYm91dC4gIEl0IGhhcyBubwotLy8gZGVm
aW5pdGlvbiBvbiBwdXJwb3NlLiAgVGhlcmVmb3JlIGl0J3MgaW1wb3NzaWJsZSB0byBjcmVhdGUg
YQotLy8gU2VjcmV0IG9iamVjdCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LgotY2xhc3MgU2VjcmV0
OwotCiAvLyBUd28gb3ZlcmxvYWRlZCBoZWxwZXJzIGZvciBjaGVja2luZyBhdCBjb21waWxlIHRp
bWUgd2hldGhlciBhbgogLy8gZXhwcmVzc2lvbiBpcyBhIG51bGwgcG9pbnRlciBsaXRlcmFsIChp
LmUuIE5VTEwgb3IgYW55IDAtdmFsdWVkCiAvLyBjb21waWxlLXRpbWUgaW50ZWdyYWwgY29uc3Rh
bnQpLiAgVGhlaXIgcmV0dXJuIHZhbHVlcyBoYXZlCkBAIC0xNTAsMTUgKzEyNywzMCBAQCBjaGFy
ICgmSXNOdWxsTGl0ZXJhbEhlbHBlciguLi4pKVsyXTsgIC8vIE5PTElOVAogI2lmZGVmIEdURVNU
X0VMTElQU0lTX05FRURTX1BPRF8KIC8vIFdlIGxvc2Ugc3VwcG9ydCBmb3IgTlVMTCBkZXRlY3Rp
b24gd2hlcmUgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZQogLy8gcGFzc2luZyBub24tUE9EIGNs
YXNzZXMgdGhyb3VnaCBlbGxpcHNpcyAoLi4uKS4KLSNkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRF
UkFMXyh4KSBmYWxzZQorIyBkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBmYWxzZQog
I2Vsc2UKLSNkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBcCisjIGRlZmluZSBHVEVT
VF9JU19OVUxMX0xJVEVSQUxfKHgpIFwKICAgICAoc2l6ZW9mKDo6dGVzdGluZzo6aW50ZXJuYWw6
OklzTnVsbExpdGVyYWxIZWxwZXIoeCkpID09IDEpCiAjZW5kaWYgIC8vIEdURVNUX0VMTElQU0lT
X05FRURTX1BPRF8KIAogLy8gQXBwZW5kcyB0aGUgdXNlci1zdXBwbGllZCBtZXNzYWdlIHRvIHRo
ZSBHb29nbGUtVGVzdC1nZW5lcmF0ZWQgbWVzc2FnZS4KLUdURVNUX0FQSV8gU3RyaW5nIEFwcGVu
ZFVzZXJNZXNzYWdlKGNvbnN0IFN0cmluZyYgZ3Rlc3RfbXNnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgTWVzc2FnZSYgdXNlcl9tc2cpOworR1RFU1RfQVBJXyBz
dGQ6OnN0cmluZyBBcHBlbmRVc2VyTWVzc2FnZSgKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZ3Rl
c3RfbXNnLCBjb25zdCBNZXNzYWdlJiB1c2VyX21zZyk7CisKKyNpZiBHVEVTVF9IQVNfRVhDRVBU
SU9OUworCisvLyBUaGlzIGV4Y2VwdGlvbiBpcyB0aHJvd24gYnkgKGFuZCBvbmx5IGJ5KSBhIGZh
aWxlZCBHb29nbGUgVGVzdAorLy8gYXNzZXJ0aW9uIHdoZW4gR1RFU1RfRkxBRyh0aHJvd19vbl9m
YWlsdXJlKSBpcyB0cnVlIChpZiBleGNlcHRpb25zCisvLyBhcmUgZW5hYmxlZCkuICBXZSBkZXJp
dmUgaXQgZnJvbSBzdGQ6OnJ1bnRpbWVfZXJyb3IsIHdoaWNoIGlzIGZvcgorLy8gZXJyb3JzIHBy
ZXN1bWFibHkgZGV0ZWN0YWJsZSBvbmx5IGF0IHJ1biB0aW1lLiAgU2luY2UKKy8vIHN0ZDo6cnVu
dGltZV9lcnJvciBpbmhlcml0cyBmcm9tIHN0ZDo6ZXhjZXB0aW9uLCBtYW55IHRlc3RpbmcKKy8v
IGZyYW1ld29ya3Mga25vdyBob3cgdG8gZXh0cmFjdCBhbmQgcHJpbnQgdGhlIG1lc3NhZ2UgaW5z
aWRlIGl0LgorY2xhc3MgR1RFU1RfQVBJXyBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbiA6IHB1
YmxpYyA6OnN0ZDo6cnVudGltZV9lcnJvciB7CisgcHVibGljOgorICBleHBsaWNpdCBHb29nbGVU
ZXN0RmFpbHVyZUV4Y2VwdGlvbihjb25zdCBUZXN0UGFydFJlc3VsdCYgZmFpbHVyZSk7Cit9Owor
CisjZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCiAKIC8vIEEgaGVscGVyIGNsYXNzIGZv
ciBjcmVhdGluZyBzY29wZWQgdHJhY2VzIGluIHVzZXIgcHJvZ3JhbXMuCiBjbGFzcyBHVEVTVF9B
UElfIFNjb3BlZFRyYWNlIHsKQEAgLTE3OSw5OCArMTcxLDM1IEBAIGNsYXNzIEdURVNUX0FQSV8g
U2NvcGVkVHJhY2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGMndG9yIGFuZCBk
J3Rvci4gIFRoZXJlZm9yZSBpdCBkb2Vzbid0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gbmVlZCB0byBiZSB1c2VkIG90aGVyd2lzZS4KIAotLy8gQ29udmVydHMgYSBzdHJlYW1hYmxl
IHZhbHVlIHRvIGEgU3RyaW5nLiAgQSBOVUxMIHBvaW50ZXIgaXMKLS8vIGNvbnZlcnRlZCB0byAi
KG51bGwpIi4gIFdoZW4gdGhlIGlucHV0IHZhbHVlIGlzIGEgOjpzdHJpbmcsCi0vLyA6OnN0ZDo6
c3RyaW5nLCA6OndzdHJpbmcsIG9yIDo6c3RkOjp3c3RyaW5nIG9iamVjdCwgZWFjaCBOVUwKLS8v
IGNoYXJhY3RlciBpbiBpdCBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgotLy8gRGVjbGFyZWQgaGVy
ZSBidXQgZGVmaW5lZCBpbiBndGVzdC5oLCBzbyB0aGF0IGl0IGhhcyBhY2Nlc3MKLS8vIHRvIHRo
ZSBkZWZpbml0aW9uIG9mIHRoZSBNZXNzYWdlIGNsYXNzLCByZXF1aXJlZCBieSB0aGUgQVJNCi0v
LyBjb21waWxlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotU3RyaW5nIFN0cmVhbWFibGVUb1N0
cmluZyhjb25zdCBUJiBzdHJlYW1hYmxlKTsKLQotLy8gRm9ybWF0cyBhIHZhbHVlIHRvIGJlIHVz
ZWQgaW4gYSBmYWlsdXJlIG1lc3NhZ2UuCi0KLSNpZmRlZiBHVEVTVF9ORUVEU19JU19QT0lOVEVS
XwotCi0vLyBUaGVzZSBhcmUgbmVlZGVkIGFzIHRoZSBOb2tpYSBTeW1iaWFuIGFuZCBJQk0gWEwg
Qy9DKysgY29tcGlsZXJzCi0vLyBjYW5ub3QgZGVjaWRlIGJldHdlZW4gY29uc3QgVCYgYW5kIGNv
bnN0IFQqIGluIGEgZnVuY3Rpb24gdGVtcGxhdGUuCi0vLyBUaGVzZSBjb21waWxlcnMgX2Nhbl8g
ZGVjaWRlIGJldHdlZW4gY2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zCi0vLyBmb3IgVCBh
bmQgVCosIHNvIGEgdHIxOjp0eXBlX3RyYWl0cy1saWtlIGlzX3BvaW50ZXIgd29ya3MsIGFuZCB3
ZQotLy8gY2FuIG92ZXJsb2FkIG9uIHRoYXQuCi0KLS8vIFRoaXMgb3ZlcmxvYWQgbWFrZXMgc3Vy
ZSB0aGF0IGFsbCBwb2ludGVycyAoaW5jbHVkaW5nCi0vLyB0aG9zZSB0byBjaGFyIG9yIHdjaGFy
X3QpIGFyZSBwcmludGVkIGFzIHJhdyBwb2ludGVycy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
aW5saW5lIFN0cmluZyBGb3JtYXRWYWx1ZUZvckZhaWx1cmVNZXNzYWdlKGludGVybmFsOjp0cnVl
X3R5cGUgLypkdW1teSovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFQqIHBvaW50ZXIpIHsKLSAgcmV0dXJuIFN0cmVhbWFibGVUb1N0cmluZyhzdGF0aWNfY2Fz
dDxjb25zdCB2b2lkKj4ocG9pbnRlcikpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlu
bGluZSBTdHJpbmcgRm9ybWF0VmFsdWVGb3JGYWlsdXJlTWVzc2FnZShpbnRlcm5hbDo6ZmFsc2Vf
dHlwZSAvKmR1bW15Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVCYgdmFsdWUpIHsKLSAgcmV0dXJuIFN0cmVhbWFibGVUb1N0cmluZyh2YWx1ZSk7
Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFN0cmluZyBGb3JtYXRGb3JGYWls
dXJlTWVzc2FnZShjb25zdCBUJiB2YWx1ZSkgewotICByZXR1cm4gRm9ybWF0VmFsdWVGb3JGYWls
dXJlTWVzc2FnZSgKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjppc19wb2ludGVyPFQ+Ojp0eXBl
KCksIHZhbHVlKTsKLX0KLQotI2Vsc2UKLQotLy8gVGhlc2UgYXJlIG5lZWRlZCBhcyB0aGUgYWJv
dmUgc29sdXRpb24gdXNpbmcgaXNfcG9pbnRlciBoYXMgdGhlCi0vLyBsaW1pdGF0aW9uIHRoYXQg
VCBjYW5ub3QgYmUgYSB0eXBlIHdpdGhvdXQgZXh0ZXJuYWwgbGlua2FnZSwgd2hlbgotLy8gY29t
cGlsZWQgdXNpbmcgTVNWQy4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgU3RyaW5n
IEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKGNvbnN0IFQmIHZhbHVlKSB7Ci0gIHJldHVybiBTdHJl
YW1hYmxlVG9TdHJpbmcodmFsdWUpOwotfQotCi0vLyBUaGlzIG92ZXJsb2FkIG1ha2VzIHN1cmUg
dGhhdCBhbGwgcG9pbnRlcnMgKGluY2x1ZGluZwotLy8gdGhvc2UgdG8gY2hhciBvciB3Y2hhcl90
KSBhcmUgcHJpbnRlZCBhcyByYXcgcG9pbnRlcnMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlu
bGluZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoVCogcG9pbnRlcikgewotICByZXR1
cm4gU3RyZWFtYWJsZVRvU3RyaW5nKHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihwb2ludGVyKSk7
Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfTkVFRFNfSVNfUE9JTlRFUl8KLQotLy8gVGhlc2Ugb3Zl
cmxvYWRlZCB2ZXJzaW9ucyBoYW5kbGUgbmFycm93IGFuZCB3aWRlIGNoYXJhY3RlcnMuCi1HVEVT
VF9BUElfIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjaGFyIGNoKTsKLUdURVNUX0FQ
SV8gU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKHdjaGFyX3Qgd2NoYXIpOwotCi0vLyBX
aGVuIHRoaXMgb3BlcmFuZCBpcyBhIGNvbnN0IGNoYXIqIG9yIGNoYXIqLCBhbmQgdGhlIG90aGVy
IG9wZXJhbmQKLS8vIGlzIGEgOjpzdGQ6OnN0cmluZyBvciA6OnN0cmluZywgd2UgcHJpbnQgdGhp
cyBvcGVyYW5kIGFzIGEgQyBzdHJpbmcKLS8vIHJhdGhlciB0aGFuIGEgcG9pbnRlci4gIFdlIGRv
IHRoZSBzYW1lIGZvciB3aWRlIHN0cmluZ3MuCi0KLS8vIFRoaXMgaW50ZXJuYWwgbWFjcm8gaXMg
dXNlZCB0byBhdm9pZCBkdXBsaWNhdGVkIGNvZGUuCi0jZGVmaW5lIEdURVNUX0ZPUk1BVF9JTVBM
XyhvcGVyYW5kMl90eXBlLCBvcGVyYW5kMV9wcmludGVyKVwKLWlubGluZSBTdHJpbmcgRm9ybWF0
Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKFwKLSAgICBvcGVyYW5kMl90eXBlOjp2YWx1ZV90
eXBlKiBzdHIsIGNvbnN0IG9wZXJhbmQyX3R5cGUmIC8qb3BlcmFuZDIqLykge1wKLSAgcmV0dXJu
IG9wZXJhbmQxX3ByaW50ZXIoc3RyKTtcCi19XAotaW5saW5lIFN0cmluZyBGb3JtYXRGb3JDb21w
YXJpc29uRmFpbHVyZU1lc3NhZ2UoXAotICAgIGNvbnN0IG9wZXJhbmQyX3R5cGU6OnZhbHVlX3R5
cGUqIHN0ciwgY29uc3Qgb3BlcmFuZDJfdHlwZSYgLypvcGVyYW5kMiovKSB7XAotICByZXR1cm4g
b3BlcmFuZDFfcHJpbnRlcihzdHIpO1wKLX0KLQotR1RFU1RfRk9STUFUX0lNUExfKDo6c3RkOjpz
dHJpbmcsIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQpCi0jaWYgR1RFU1RfSEFTX1NURF9XU1RS
SU5HCi1HVEVTVF9GT1JNQVRfSU1QTF8oOjpzdGQ6OndzdHJpbmcsIFN0cmluZzo6U2hvd1dpZGVD
U3RyaW5nUXVvdGVkKQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKLQotI2lmIEdU
RVNUX0hBU19HTE9CQUxfU1RSSU5HCi1HVEVTVF9GT1JNQVRfSU1QTF8oOjpzdHJpbmcsIFN0cmlu
Zzo6U2hvd0NTdHJpbmdRdW90ZWQpCi0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5H
Ci0jaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCi1HVEVTVF9GT1JNQVRfSU1QTF8oOjp3c3Ry
aW5nLCBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZCkKLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X0dMT0JBTF9XU1RSSU5HCi0KLSN1bmRlZiBHVEVTVF9GT1JNQVRfSU1QTF8KK25hbWVzcGFjZSBl
ZGl0X2Rpc3RhbmNlIHsKKy8vIFJldHVybnMgdGhlIG9wdGltYWwgZWRpdHMgdG8gZ28gZnJvbSAn
bGVmdCcgdG8gJ3JpZ2h0Jy4KKy8vIEFsbCBlZGl0cyBjb3N0IHRoZSBzYW1lLCB3aXRoIHJlcGxh
Y2UgaGF2aW5nIGxvd2VyIHByaW9yaXR5IHRoYW4KKy8vIGFkZC9yZW1vdmUuCisvLyBTaW1wbGUg
aW1wbGVtZW50YXRpb24gb2YgdGhlIFdhZ25lcuKAk0Zpc2NoZXIgYWxnb3JpdGhtLgorLy8gU2Vl
IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2FnbmVyLUZpc2NoZXJfYWxnb3JpdGhtCitl
bnVtIEVkaXRUeXBlIHsga01hdGNoLCBrQWRkLCBrUmVtb3ZlLCBrUmVwbGFjZSB9OworR1RFU1Rf
QVBJXyBzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKAorICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIGxlZnQsIGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4m
IHJpZ2h0KTsKKworLy8gU2FtZSBhcyBhYm92ZSwgYnV0IHRoZSBpbnB1dCBpcyByZXByZXNlbnRl
ZCBhcyBzdHJpbmdzLgorR1RFU1RfQVBJXyBzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gQ2FsY3VsYXRl
T3B0aW1hbEVkaXRzKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgbGVmdCwK
KyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHJpZ2h0KTsKKworLy8gQ3JlYXRl
IGEgZGlmZiBvZiB0aGUgaW5wdXQgc3RyaW5ncyBpbiBVbmlmaWVkIGRpZmYgZm9ybWF0LgorR1RF
U1RfQVBJXyBzdGQ6OnN0cmluZyBDcmVhdGVVbmlmaWVkRGlmZihjb25zdCBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4mIGxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgcmlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb250ZXh0ID0gMik7CisKK30gIC8v
IG5hbWVzcGFjZSBlZGl0X2Rpc3RhbmNlCisKKy8vIENhbGN1bGF0ZSB0aGUgZGlmZiBiZXR3ZWVu
ICdsZWZ0JyBhbmQgJ3JpZ2h0JyBhbmQgcmV0dXJuIGl0IGluIHVuaWZpZWQgZGlmZgorLy8gZm9y
bWF0LgorLy8gSWYgbm90IG51bGwsIHN0b3JlcyBpbiAndG90YWxfbGluZV9jb3VudCcgdGhlIHRv
dGFsIG51bWJlciBvZiBsaW5lcyBmb3VuZAorLy8gaW4gbGVmdCArIHJpZ2h0LgorR1RFU1RfQVBJ
XyBzdGQ6OnN0cmluZyBEaWZmU3RyaW5ncyhjb25zdCBzdGQ6OnN0cmluZyYgbGVmdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHJpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIHRvdGFsX2xpbmVfY291
bnQpOwogCiAvLyBDb25zdHJ1Y3RzIGFuZCByZXR1cm5zIHRoZSBtZXNzYWdlIGZvciBhbiBlcXVh
bGl0eSBhc3NlcnRpb24KIC8vIChlLmcuIEFTU0VSVF9FUSwgRVhQRUNUX1NUUkVRLCBldGMpIGZh
aWx1cmUuCkBAIC0yODksMTIgKzIxOCwxMiBAQCBHVEVTVF9GT1JNQVRfSU1QTF8oOjp3c3RyaW5n
LCBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZCkKIC8vIGJlIGluc2VydGVkIGludG8gdGhl
IG1lc3NhZ2UuCiBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBFcUZhaWx1cmUoY29uc3QgY2hh
ciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4cGVjdGVkX3ZhbHVlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgYWN0dWFsX3ZhbHVlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBl
eHBlY3RlZF92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgYWN0dWFsX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaWdub3JpbmdfY2FzZSk7CiAKIC8vIENvbnN0cnVjdHMgYSBmYWlsdXJl
IG1lc3NhZ2UgZm9yIEJvb2xlYW4gYXNzZXJ0aW9ucyBzdWNoIGFzIEVYUEVDVF9UUlVFLgotR1RF
U1RfQVBJXyBTdHJpbmcgR2V0Qm9vbEFzc2VydGlvbkZhaWx1cmVNZXNzYWdlKAorR1RFU1RfQVBJ
XyBzdGQ6OnN0cmluZyBHZXRCb29sQXNzZXJ0aW9uRmFpbHVyZU1lc3NhZ2UoCiAgICAgY29uc3Qg
QXNzZXJ0aW9uUmVzdWx0JiBhc3NlcnRpb25fcmVzdWx0LAogICAgIGNvbnN0IGNoYXIqIGV4cHJl
c3Npb25fdGV4dCwKICAgICBjb25zdCBjaGFyKiBhY3R1YWxfcHJlZGljYXRlX3ZhbHVlLApAQCAt
MzY5LDcgKzI5OCw3IEBAIGNsYXNzIEZsb2F0aW5nUG9pbnQgewogICAvLyBiaXRzLiAgVGhlcmVm
b3JlLCA0IHNob3VsZCBiZSBlbm91Z2ggZm9yIG9yZGluYXJ5IHVzZS4KICAgLy8KICAgLy8gU2Vl
IHRoZSBmb2xsb3dpbmcgYXJ0aWNsZSBmb3IgbW9yZSBkZXRhaWxzIG9uIFVMUDoKLSAgLy8gaHR0
cDovL3d3dy5jeWdudXMtc29mdHdhcmUuY29tL3BhcGVycy9jb21wYXJpbmdmbG9hdHMvY29tcGFy
aW5nZmxvYXRzLmh0bS4KKyAgLy8gaHR0cDovL3JhbmRvbWFzY2lpLndvcmRwcmVzcy5jb20vMjAx
Mi8wMi8yNS9jb21wYXJpbmctZmxvYXRpbmctcG9pbnQtbnVtYmVycy0yMDEyLWVkaXRpb24vCiAg
IHN0YXRpYyBjb25zdCBzaXplX3Qga01heFVscHMgPSA0OwogCiAgIC8vIENvbnN0cnVjdHMgYSBG
bG9hdGluZ1BvaW50IGZyb20gYSByYXcgZmxvYXRpbmctcG9pbnQgbnVtYmVyLgpAQCAtMzk2LDYg
KzMyNSw5IEBAIGNsYXNzIEZsb2F0aW5nUG9pbnQgewogICAgIHJldHVybiBSZWludGVycHJldEJp
dHMoa0V4cG9uZW50Qml0TWFzayk7CiAgIH0KIAorICAvLyBSZXR1cm5zIHRoZSBtYXhpbXVtIHJl
cHJlc2VudGFibGUgZmluaXRlIGZsb2F0aW5nLXBvaW50IG51bWJlci4KKyAgc3RhdGljIFJhd1R5
cGUgTWF4KCk7CisKICAgLy8gTm9uLXN0YXRpYyBtZXRob2RzCiAKICAgLy8gUmV0dXJucyB0aGUg
Yml0cyB0aGF0IHJlcHJlc2VudHMgdGhpcyBudW1iZXIuCkBAIC00NzYsNiArNDA4LDEzIEBAIGNs
YXNzIEZsb2F0aW5nUG9pbnQgewogICBGbG9hdGluZ1BvaW50VW5pb24gdV87CiB9OwogCisvLyBX
ZSBjYW5ub3QgdXNlIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpIGFzIGl0IGNsYXNoZXMg
d2l0aCB0aGUgbWF4KCkKKy8vIG1hY3JvIGRlZmluZWQgYnkgPHdpbmRvd3MuaD4uCit0ZW1wbGF0
ZSA8PgoraW5saW5lIGZsb2F0IEZsb2F0aW5nUG9pbnQ8ZmxvYXQ+OjpNYXgoKSB7IHJldHVybiBG
TFRfTUFYOyB9Cit0ZW1wbGF0ZSA8PgoraW5saW5lIGRvdWJsZSBGbG9hdGluZ1BvaW50PGRvdWJs
ZT46Ok1heCgpIHsgcmV0dXJuIERCTF9NQVg7IH0KKwogLy8gVHlwZWRlZnMgdGhlIGluc3RhbmNl
cyBvZiB0aGUgRmxvYXRpbmdQb2ludCB0ZW1wbGF0ZSBjbGFzcyB0aGF0IHdlCiAvLyBjYXJlIHRv
IHVzZS4KIHR5cGVkZWYgRmxvYXRpbmdQb2ludDxmbG9hdD4gRmxvYXQ7CkBAIC01NTgsMjQgKzQ5
NywxNyBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBJc0hSRVNVTFRGYWlsdXJlKGNvbnN0
IGNoYXIqIGV4cHIsCiAKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCi0vLyBGb3JtYXRz
IGEgc291cmNlIGZpbGUgcGF0aCBhbmQgYSBsaW5lIG51bWJlciBhcyB0aGV5IHdvdWxkIGFwcGVh
cgotLy8gaW4gYSBjb21waWxlciBlcnJvciBtZXNzYWdlLgotaW5saW5lIFN0cmluZyBGb3JtYXRG
aWxlTG9jYXRpb24oY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpIHsKLSAgY29uc3QgY2hhciog
Y29uc3QgZmlsZV9uYW1lID0gZmlsZSA9PSBOVUxMID8gInVua25vd24gZmlsZSIgOiBmaWxlOwot
ICBpZiAobGluZSA8IDApIHsKLSAgICByZXR1cm4gU3RyaW5nOjpGb3JtYXQoIiVzOiIsIGZpbGVf
bmFtZSk7Ci0gIH0KLSNpZmRlZiBfTVNDX1ZFUgotICByZXR1cm4gU3RyaW5nOjpGb3JtYXQoIiVz
KCVkKToiLCBmaWxlX25hbWUsIGxpbmUpOwotI2Vsc2UKLSAgcmV0dXJuIFN0cmluZzo6Rm9ybWF0
KCIlczolZDoiLCBmaWxlX25hbWUsIGxpbmUpOwotI2VuZGlmICAvLyBfTVNDX1ZFUgotfQotCiAv
LyBUeXBlcyBvZiBTZXRVcFRlc3RDYXNlKCkgYW5kIFRlYXJEb3duVGVzdENhc2UoKSBmdW5jdGlv
bnMuCiB0eXBlZGVmIHZvaWQgKCpTZXRVcFRlc3RDYXNlRnVuYykoKTsKIHR5cGVkZWYgdm9pZCAo
KlRlYXJEb3duVGVzdENhc2VGdW5jKSgpOwogCitzdHJ1Y3QgQ29kZUxvY2F0aW9uIHsKKyAgQ29k
ZUxvY2F0aW9uKGNvbnN0IHN0cmluZyYgYV9maWxlLCBpbnQgYV9saW5lKSA6IGZpbGUoYV9maWxl
KSwgbGluZShhX2xpbmUpIHt9CisKKyAgc3RyaW5nIGZpbGU7CisgIGludCBsaW5lOworfTsKKwog
Ly8gQ3JlYXRlcyBhIG5ldyBUZXN0SW5mbyBvYmplY3QgYW5kIHJlZ2lzdGVycyBpdCB3aXRoIEdv
b2dsZSBUZXN0OwogLy8gcmV0dXJucyB0aGUgY3JlYXRlZCBvYmplY3QuCiAvLwpAQCAtNTgzLDEw
ICs1MTUsMTEgQEAgdHlwZWRlZiB2b2lkICgqVGVhckRvd25UZXN0Q2FzZUZ1bmMpKCk7CiAvLwog
Ly8gICB0ZXN0X2Nhc2VfbmFtZTogICBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UKIC8vICAgbmFtZTog
ICAgICAgICAgICAgbmFtZSBvZiB0aGUgdGVzdAotLy8gICB0ZXN0X2Nhc2VfY29tbWVudDogYSBj
b21tZW50IG9uIHRoZSB0ZXN0IGNhc2UgdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluCi0vLyAgICAg
ICAgICAgICAgICAgICAgICB0aGUgdGVzdCBvdXRwdXQKLS8vICAgY29tbWVudDogICAgICAgICAg
YSBjb21tZW50IG9uIHRoZSB0ZXN0IHRoYXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKLS8vICAg
ICAgICAgICAgICAgICAgICAgdGVzdCBvdXRwdXQKKy8vICAgdHlwZV9wYXJhbSAgICAgICAgdGhl
IG5hbWUgb2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorLy8gICAgICAg
ICAgICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVk
IHRlc3QuCisvLyAgIHZhbHVlX3BhcmFtICAgICAgIHRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhl
IHRlc3QncyB2YWx1ZSBwYXJhbWV0ZXIsCisvLyAgICAgICAgICAgICAgICAgICAgIG9yIE5VTEwg
aWYgdGhpcyBpcyBub3QgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKy8vICAgY29kZV9sb2Nh
dGlvbjogICAgY29kZSBsb2NhdGlvbiB3aGVyZSB0aGUgdGVzdCBpcyBkZWZpbmVkCiAvLyAgIGZp
eHR1cmVfY2xhc3NfaWQ6IElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKIC8vICAgc2V0X3Vw
X3RjOiAgICAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSB0ZXN0
IGNhc2UKIC8vICAgdGVhcl9kb3duX3RjOiAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhh
dCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UKQEAgLTU5NCw4ICs1MjcsMTEgQEAgdHlwZWRlZiB2
b2lkICgqVGVhckRvd25UZXN0Q2FzZUZ1bmMpKCk7CiAvLyAgICAgICAgICAgICAgICAgICAgIFRo
ZSBuZXdseSBjcmVhdGVkIFRlc3RJbmZvIGluc3RhbmNlIHdpbGwgYXNzdW1lCiAvLyAgICAgICAg
ICAgICAgICAgICAgIG93bmVyc2hpcCBvZiB0aGUgZmFjdG9yeSBvYmplY3QuCiBHVEVTVF9BUElf
IFRlc3RJbmZvKiBNYWtlQW5kUmVnaXN0ZXJUZXN0SW5mbygKLSAgICBjb25zdCBjaGFyKiB0ZXN0
X2Nhc2VfbmFtZSwgY29uc3QgY2hhciogbmFtZSwKLSAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2Vf
Y29tbWVudCwgY29uc3QgY2hhciogY29tbWVudCwKKyAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2Vf
bmFtZSwKKyAgICBjb25zdCBjaGFyKiBuYW1lLAorICAgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0s
CisgICAgY29uc3QgY2hhciogdmFsdWVfcGFyYW0sCisgICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9j
YXRpb24sCiAgICAgVHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCiAgICAgU2V0VXBUZXN0Q2FzZUZ1
bmMgc2V0X3VwX3RjLAogICAgIFRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YywKQEAg
LTYwNCw3ICs1NDAsNyBAQCBHVEVTVF9BUElfIFRlc3RJbmZvKiBNYWtlQW5kUmVnaXN0ZXJUZXN0
SW5mbygKIC8vIElmICpwc3RyIHN0YXJ0cyB3aXRoIHRoZSBnaXZlbiBwcmVmaXgsIG1vZGlmaWVz
ICpwc3RyIHRvIGJlIHJpZ2h0CiAvLyBwYXN0IHRoZSBwcmVmaXggYW5kIHJldHVybnMgdHJ1ZTsg
b3RoZXJ3aXNlIGxlYXZlcyAqcHN0ciB1bmNoYW5nZWQKIC8vIGFuZCByZXR1cm5zIGZhbHNlLiAg
Tm9uZSBvZiBwc3RyLCAqcHN0ciwgYW5kIHByZWZpeCBjYW4gYmUgTlVMTC4KLWJvb2wgU2tpcFBy
ZWZpeChjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IGNoYXIqKiBwc3RyKTsKK0dURVNUX0FQSV8g
Ym9vbCBTa2lwUHJlZml4KGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgY2hhcioqIHBzdHIpOwog
CiAjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAogCkBA
IC02MjUsMTAgKzU2MSwyMSBAQCBjbGFzcyBHVEVTVF9BUElfIFR5cGVkVGVzdENhc2VQU3RhdGUg
ewogICAgICAgZmZsdXNoKHN0ZGVycik7CiAgICAgICBwb3NpeDo6QWJvcnQoKTsKICAgICB9Ci0g
ICAgZGVmaW5lZF90ZXN0X25hbWVzXy5pbnNlcnQodGVzdF9uYW1lKTsKKyAgICByZWdpc3RlcmVk
X3Rlc3RzXy5pbnNlcnQoCisgICAgICAgIDo6c3RkOjptYWtlX3BhaXIodGVzdF9uYW1lLCBDb2Rl
TG9jYXRpb24oZmlsZSwgbGluZSkpKTsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQogCisgIGJvb2wg
VGVzdEV4aXN0cyhjb25zdCBzdGQ6OnN0cmluZyYgdGVzdF9uYW1lKSBjb25zdCB7CisgICAgcmV0
dXJuIHJlZ2lzdGVyZWRfdGVzdHNfLmNvdW50KHRlc3RfbmFtZSkgPiAwOworICB9CisKKyAgY29u
c3QgQ29kZUxvY2F0aW9uJiBHZXRDb2RlTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3Rf
bmFtZSkgY29uc3QgeworICAgIFJlZ2lzdGVyZWRUZXN0c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSByZWdpc3RlcmVkX3Rlc3RzXy5maW5kKHRlc3RfbmFtZSk7CisgICAgR1RFU1RfQ0hFQ0tfKGl0
ICE9IHJlZ2lzdGVyZWRfdGVzdHNfLmVuZCgpKTsKKyAgICByZXR1cm4gaXQtPnNlY29uZDsKKyAg
fQorCiAgIC8vIFZlcmlmaWVzIHRoYXQgcmVnaXN0ZXJlZF90ZXN0cyBtYXRjaCB0aGUgdGVzdCBu
YW1lcyBpbgogICAvLyBkZWZpbmVkX3Rlc3RfbmFtZXNfOyByZXR1cm5zIHJlZ2lzdGVyZWRfdGVz
dHMgaWYgc3VjY2Vzc2Z1bCwgb3IKICAgLy8gYWJvcnRzIHRoZSBwcm9ncmFtIG90aGVyd2lzZS4K
QEAgLTYzNiw4ICs1ODMsMTAgQEAgY2xhc3MgR1RFU1RfQVBJXyBUeXBlZFRlc3RDYXNlUFN0YXRl
IHsKICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiByZWdpc3Rl
cmVkX3Rlc3RzKTsKIAogIHByaXZhdGU6CisgIHR5cGVkZWYgOjpzdGQ6Om1hcDxzdGQ6OnN0cmlu
ZywgQ29kZUxvY2F0aW9uPiBSZWdpc3RlcmVkVGVzdHNNYXA7CisKICAgYm9vbCByZWdpc3RlcmVk
XzsKLSAgOjpzdGQ6OnNldDxjb25zdCBjaGFyKj4gZGVmaW5lZF90ZXN0X25hbWVzXzsKKyAgUmVn
aXN0ZXJlZFRlc3RzTWFwIHJlZ2lzdGVyZWRfdGVzdHNfOwogfTsKIAogLy8gU2tpcHMgdG8gdGhl
IGZpcnN0IG5vbi1zcGFjZSBjaGFyIGFmdGVyIHRoZSBmaXJzdCBjb21tYSBpbiAnc3RyJzsKQEAg
LTY0NywxNyArNTk2LDIyIEBAIGlubGluZSBjb25zdCBjaGFyKiBTa2lwQ29tbWEoY29uc3QgY2hh
ciogc3RyKSB7CiAgIGlmIChjb21tYSA9PSBOVUxMKSB7CiAgICAgcmV0dXJuIE5VTEw7CiAgIH0K
LSAgd2hpbGUgKGlzc3BhY2UoKigrK2NvbW1hKSkpIHt9CisgIHdoaWxlIChJc1NwYWNlKCooKytj
b21tYSkpKSB7fQogICByZXR1cm4gY29tbWE7CiB9CiAKIC8vIFJldHVybnMgdGhlIHByZWZpeCBv
ZiAnc3RyJyBiZWZvcmUgdGhlIGZpcnN0IGNvbW1hIGluIGl0OyByZXR1cm5zCiAvLyB0aGUgZW50
aXJlIHN0cmluZyBpZiBpdCBjb250YWlucyBubyBjb21tYS4KLWlubGluZSBTdHJpbmcgR2V0UHJl
Zml4VW50aWxDb21tYShjb25zdCBjaGFyKiBzdHIpIHsKK2lubGluZSBzdGQ6OnN0cmluZyBHZXRQ
cmVmaXhVbnRpbENvbW1hKGNvbnN0IGNoYXIqIHN0cikgewogICBjb25zdCBjaGFyKiBjb21tYSA9
IHN0cmNocihzdHIsICcsJyk7Ci0gIHJldHVybiBjb21tYSA9PSBOVUxMID8gU3RyaW5nKHN0cikg
OiBTdHJpbmcoc3RyLCBjb21tYSAtIHN0cik7CisgIHJldHVybiBjb21tYSA9PSBOVUxMID8gc3Ry
IDogc3RkOjpzdHJpbmcoc3RyLCBjb21tYSk7CiB9CiAKKy8vIFNwbGl0cyBhIGdpdmVuIHN0cmlu
ZyBvbiBhIGdpdmVuIGRlbGltaXRlciwgcG9wdWxhdGluZyBhIGdpdmVuCisvLyB2ZWN0b3Igd2l0
aCB0aGUgZmllbGRzLgordm9pZCBTcGxpdFN0cmluZyhjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIs
IGNoYXIgZGVsaW1pdGVyLAorICAgICAgICAgICAgICAgICA6OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6
c3RyaW5nPiogZGVzdCk7CisKIC8vIFR5cGVQYXJhbWV0ZXJpemVkVGVzdDxGaXh0dXJlLCBUZXN0
U2VsLCBUeXBlcz46OlJlZ2lzdGVyKCkKIC8vIHJlZ2lzdGVycyBhIGxpc3Qgb2YgdHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3RzIHdpdGggR29vZ2xlIFRlc3QuICBUaGUKIC8vIHJldHVybiB2YWx1ZSBp
cyBpbnNpZ25pZmljYW50IC0gd2UganVzdCBuZWVkIHRvIHJldHVybiBzb21ldGhpbmcKQEAgLTY3
Miw4ICs2MjYsMTAgQEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0IHsKICAgLy8gc3BlY2lm
aWVkIGluIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFByZWZpeCwgVGVzdENhc2UsCiAg
IC8vIFR5cGVzKS4gIFZhbGlkIHZhbHVlcyBmb3IgJ2luZGV4JyBhcmUgWzAsIE4gLSAxXSB3aGVy
ZSBOIGlzIHRoZQogICAvLyBsZW5ndGggb2YgVHlwZXMuCi0gIHN0YXRpYyBib29sIFJlZ2lzdGVy
KGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgY2hhciogY2FzZV9uYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiB0ZXN0X25hbWVzLCBpbnQgaW5kZXgpIHsKKyAgc3RhdGlj
IGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAg
ICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogY2FzZV9uYW1lLCBjb25zdCBjaGFyKiB0ZXN0X25hbWVzLAorICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaW5kZXgpIHsKICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjpIZWFk
IFR5cGU7CiAgICAgdHlwZWRlZiBGaXh0dXJlPFR5cGU+IEZpeHR1cmVDbGFzczsKICAgICB0eXBl
ZGVmIHR5cGVuYW1lIEdURVNUX0JJTkRfKFRlc3RTZWwsIFR5cGUpIFRlc3RDbGFzczsKQEAgLTY4
MSwxMSArNjM3LDEyIEBAIGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVkVGVzdCB7CiAgICAgLy8gRmly
c3QsIHJlZ2lzdGVycyB0aGUgZmlyc3QgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgaW4gdGhlIHR5
cGUKICAgICAvLyBsaXN0LgogICAgIE1ha2VBbmRSZWdpc3RlclRlc3RJbmZvKAotICAgICAgICBT
dHJpbmc6OkZvcm1hdCgiJXMlcyVzLyVkIiwgcHJlZml4LCBwcmVmaXhbMF0gPT0gJ1wwJyA/ICIi
IDogIi8iLAotICAgICAgICAgICAgICAgICAgICAgICBjYXNlX25hbWUsIGluZGV4KS5jX3N0cigp
LAotICAgICAgICBHZXRQcmVmaXhVbnRpbENvbW1hKHRlc3RfbmFtZXMpLmNfc3RyKCksCi0gICAg
ICAgIFN0cmluZzo6Rm9ybWF0KCJUeXBlUGFyYW0gPSAlcyIsIEdldFR5cGVOYW1lPFR5cGU+KCku
Y19zdHIoKSkuY19zdHIoKSwKLSAgICAgICAgIiIsCisgICAgICAgIChzdGQ6OnN0cmluZyhwcmVm
aXgpICsgKHByZWZpeFswXSA9PSAnXDAnID8gIiIgOiAiLyIpICsgY2FzZV9uYW1lICsgIi8iCisg
ICAgICAgICArIFN0cmVhbWFibGVUb1N0cmluZyhpbmRleCkpLmNfc3RyKCksCisgICAgICAgIFN0
cmlwVHJhaWxpbmdTcGFjZXMoR2V0UHJlZml4VW50aWxDb21tYSh0ZXN0X25hbWVzKSkuY19zdHIo
KSwKKyAgICAgICAgR2V0VHlwZU5hbWU8VHlwZT4oKS5jX3N0cigpLAorICAgICAgICBOVUxMLCAg
Ly8gTm8gdmFsdWUgcGFyYW1ldGVyLgorICAgICAgICBjb2RlX2xvY2F0aW9uLAogICAgICAgICBH
ZXRUeXBlSWQ8Rml4dHVyZUNsYXNzPigpLAogICAgICAgICBUZXN0Q2xhc3M6OlNldFVwVGVzdENh
c2UsCiAgICAgICAgIFRlc3RDbGFzczo6VGVhckRvd25UZXN0Q2FzZSwKQEAgLTY5Myw3ICs2NTAs
NyBAQCBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3QgewogCiAgICAgLy8gTmV4dCwgcmVjdXJz
ZXMgKGF0IGNvbXBpbGUgdGltZSkgd2l0aCB0aGUgdGFpbCBvZiB0aGUgdHlwZSBsaXN0LgogICAg
IHJldHVybiBUeXBlUGFyYW1ldGVyaXplZFRlc3Q8Rml4dHVyZSwgVGVzdFNlbCwgdHlwZW5hbWUg
VHlwZXM6OlRhaWw+Ci0gICAgICAgIDo6UmVnaXN0ZXIocHJlZml4LCBjYXNlX25hbWUsIHRlc3Rf
bmFtZXMsIGluZGV4ICsgMSk7CisgICAgICAgIDo6UmVnaXN0ZXIocHJlZml4LCBjb2RlX2xvY2F0
aW9uLCBjYXNlX25hbWUsIHRlc3RfbmFtZXMsIGluZGV4ICsgMSk7CiAgIH0KIH07CiAKQEAgLTcw
MSw4ICs2NTgsOSBAQCBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3QgewogdGVtcGxhdGUgPEdU
RVNUX1RFTVBMQVRFXyBGaXh0dXJlLCBjbGFzcyBUZXN0U2VsPgogY2xhc3MgVHlwZVBhcmFtZXRl
cml6ZWRUZXN0PEZpeHR1cmUsIFRlc3RTZWwsIFR5cGVzMD4gewogIHB1YmxpYzoKLSAgc3RhdGlj
IGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogLypwcmVmaXgqLywgY29uc3QgY2hhciogLypjYXNl
X25hbWUqLywKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLyp0ZXN0X25hbWVz
Ki8sIGludCAvKmluZGV4Ki8pIHsKKyAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciog
LypwcmVmaXgqLywgQ29kZUxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiAvKmNhc2VfbmFtZSovLCBjb25zdCBjaGFyKiAvKnRlc3RfbmFtZXMqLywKKyAgICAgICAg
ICAgICAgICAgICAgICAgaW50IC8qaW5kZXgqLykgewogICAgIHJldHVybiB0cnVlOwogICB9CiB9
OwpAQCAtNzE0LDE3ICs2NzIsMzEgQEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1
cmUsIFRlc3RTZWwsIFR5cGVzMD4gewogdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBGaXh0dXJl
LCB0eXBlbmFtZSBUZXN0cywgdHlwZW5hbWUgVHlwZXM+CiBjbGFzcyBUeXBlUGFyYW1ldGVyaXpl
ZFRlc3RDYXNlIHsKICBwdWJsaWM6Ci0gIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIq
IHByZWZpeCwgY29uc3QgY2hhciogY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiB0ZXN0X25hbWVzKSB7CisgIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNo
YXIqIHByZWZpeCwgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFR5cGVkVGVzdENhc2VQU3RhdGUqIHN0YXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBjYXNlX25hbWUsIGNvbnN0IGNoYXIqIHRlc3RfbmFtZXMpIHsK
KyAgICBzdGQ6OnN0cmluZyB0ZXN0X25hbWUgPSBTdHJpcFRyYWlsaW5nU3BhY2VzKAorICAgICAg
ICBHZXRQcmVmaXhVbnRpbENvbW1hKHRlc3RfbmFtZXMpKTsKKyAgICBpZiAoIXN0YXRlLT5UZXN0
RXhpc3RzKHRlc3RfbmFtZSkpIHsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdl
dCBjb2RlIGxvY2F0aW9uIGZvciB0ZXN0ICVzLiVzIGF0ICVzLiIsCisgICAgICAgICAgICAgIGNh
c2VfbmFtZSwgdGVzdF9uYW1lLmNfc3RyKCksCisgICAgICAgICAgICAgIEZvcm1hdEZpbGVMb2Nh
dGlvbihjb2RlX2xvY2F0aW9uLmZpbGUuY19zdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvZGVfbG9jYXRpb24ubGluZSkuY19zdHIoKSk7CisgICAgICBmZmx1c2goc3Rk
ZXJyKTsKKyAgICAgIHBvc2l4OjpBYm9ydCgpOworICAgIH0KKyAgICBjb25zdCBDb2RlTG9jYXRp
b24mIHRlc3RfbG9jYXRpb24gPSBzdGF0ZS0+R2V0Q29kZUxvY2F0aW9uKHRlc3RfbmFtZSk7CisK
ICAgICB0eXBlZGVmIHR5cGVuYW1lIFRlc3RzOjpIZWFkIEhlYWQ7CiAKICAgICAvLyBGaXJzdCwg
cmVnaXN0ZXIgdGhlIGZpcnN0IHRlc3QgaW4gJ1Rlc3QnIGZvciBlYWNoIHR5cGUgaW4gJ1R5cGVz
Jy4KICAgICBUeXBlUGFyYW1ldGVyaXplZFRlc3Q8Rml4dHVyZSwgSGVhZCwgVHlwZXM+OjpSZWdp
c3RlcigKLSAgICAgICAgcHJlZml4LCBjYXNlX25hbWUsIHRlc3RfbmFtZXMsIDApOworICAgICAg
ICBwcmVmaXgsIHRlc3RfbG9jYXRpb24sIGNhc2VfbmFtZSwgdGVzdF9uYW1lcywgMCk7CiAKICAg
ICAvLyBOZXh0LCByZWN1cnNlcyAoYXQgY29tcGlsZSB0aW1lKSB3aXRoIHRoZSB0YWlsIG9mIHRo
ZSB0ZXN0IGxpc3QuCiAgICAgcmV0dXJuIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2U8Rml4dHVy
ZSwgdHlwZW5hbWUgVGVzdHM6OlRhaWwsIFR5cGVzPgotICAgICAgICA6OlJlZ2lzdGVyKHByZWZp
eCwgY2FzZV9uYW1lLCBTa2lwQ29tbWEodGVzdF9uYW1lcykpOworICAgICAgICA6OlJlZ2lzdGVy
KHByZWZpeCwgY29kZV9sb2NhdGlvbiwgc3RhdGUsCisgICAgICAgICAgICAgICAgICAgY2FzZV9u
YW1lLCBTa2lwQ29tbWEodGVzdF9uYW1lcykpOwogICB9CiB9OwogCkBAIC03MzIsMTUgKzcwNCwx
NiBAQCBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlIHsKIHRlbXBsYXRlIDxHVEVTVF9U
RU1QTEFURV8gRml4dHVyZSwgdHlwZW5hbWUgVHlwZXM+CiBjbGFzcyBUeXBlUGFyYW1ldGVyaXpl
ZFRlc3RDYXNlPEZpeHR1cmUsIFRlbXBsYXRlczAsIFR5cGVzPiB7CiAgcHVibGljOgotICBzdGF0
aWMgYm9vbCBSZWdpc3Rlcihjb25zdCBjaGFyKiAvKnByZWZpeCovLCBjb25zdCBjaGFyKiAvKmNh
c2VfbmFtZSovLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKnRlc3RfbmFt
ZXMqLykgeworICBzdGF0aWMgYm9vbCBSZWdpc3Rlcihjb25zdCBjaGFyKiAvKnByZWZpeCovLCBD
b2RlTG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR5cGVkVGVzdENhc2VQ
U3RhdGUqIC8qc3RhdGUqLywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLypj
YXNlX25hbWUqLywgY29uc3QgY2hhciogLyp0ZXN0X25hbWVzKi8pIHsKICAgICByZXR1cm4gdHJ1
ZTsKICAgfQogfTsKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9I
QVNfVFlQRURfVEVTVF9QCiAKLS8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2Ug
YXMgYSBTdHJpbmcuCisvLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFzIGFu
IHN0ZDo6c3RyaW5nLgogLy8KIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMg
dG8gYmUgaW5jbHVkZWQgaXMgc3BlY2lmaWVkIGJ5CiAvLyB0aGUgZ3Rlc3Rfc3RhY2tfdHJhY2Vf
ZGVwdGggZmxhZy4gIFRoZSBza2lwX2NvdW50IHBhcmFtZXRlcgpAQCAtNzUwLDggKzcyMyw4IEBA
IGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2U8Rml4dHVyZSwgVGVtcGxhdGVzMCwgVHlw
ZXM+IHsKIC8vIEZvciBleGFtcGxlLCBpZiBGb28oKSBjYWxscyBCYXIoKSwgd2hpY2ggaW4gdHVy
biBjYWxscwogLy8gR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCguLi4sIDEpLCBGb28o
KSB3aWxsIGJlIGluY2x1ZGVkIGluCiAvLyB0aGUgdHJhY2UgYnV0IEJhcigpIGFuZCBHZXRDdXJy
ZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKCkgd29uJ3QuCi1HVEVTVF9BUElfIFN0cmluZyBHZXRD
dXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKFVuaXRUZXN0KiB1bml0X3Rlc3QsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBza2lwX2NvdW50
KTsKK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRv
cCgKKyAgICBVbml0VGVzdCogdW5pdF90ZXN0LCBpbnQgc2tpcF9jb3VudCk7CiAKIC8vIEhlbHBl
cnMgZm9yIHN1cHByZXNzaW5nIHdhcm5pbmdzIG9uIHVucmVhY2hhYmxlIGNvZGUgb3IgY29uc3Rh
bnQKIC8vIGNvbmRpdGlvbi4KQEAgLTc2Miw2ICs3MzUsMTUgQEAgR1RFU1RfQVBJXyBib29sIEFs
d2F5c1RydWUoKTsKIC8vIEFsd2F5cyByZXR1cm5zIGZhbHNlLgogaW5saW5lIGJvb2wgQWx3YXlz
RmFsc2UoKSB7IHJldHVybiAhQWx3YXlzVHJ1ZSgpOyB9CiAKKy8vIEhlbHBlciBmb3Igc3VwcHJl
c3NpbmcgZmFsc2Ugd2FybmluZyBmcm9tIENsYW5nIG9uIGEgY29uc3QgY2hhcioKKy8vIHZhcmlh
YmxlIGRlY2xhcmVkIGluIGEgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBhbHdheXMgYmVpbmcgTlVM
TCBpbgorLy8gdGhlIGVsc2UgYnJhbmNoLgorc3RydWN0IEdURVNUX0FQSV8gQ29uc3RDaGFyUHRy
IHsKKyAgQ29uc3RDaGFyUHRyKGNvbnN0IGNoYXIqIHN0cikgOiB2YWx1ZShzdHIpIHt9CisgIG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgIGNvbnN0IGNoYXIqIHZhbHVl
OworfTsKKwogLy8gQSBzaW1wbGUgTGluZWFyIENvbmdydWVudGlhbCBHZW5lcmF0b3IgZm9yIGdl
bmVyYXRpbmcgcmFuZG9tCiAvLyBudW1iZXJzIHdpdGggYSB1bmlmb3JtIGRpc3RyaWJ1dGlvbi4g
IFVubGlrZSByYW5kKCkgYW5kIHNyYW5kKCksIGl0CiAvLyBkb2Vzbid0IHVzZSBnbG9iYWwgc3Rh
dGUgKGFuZCB0aGVyZWZvcmUgY2FuJ3QgaW50ZXJmZXJlIHdpdGggdXNlcgpAQCAtNzg0LDEzICs3
NjYsMzQ2IEBAIGNsYXNzIEdURVNUX0FQSV8gUmFuZG9tIHsKICAgR1RFU1RfRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOXyhSYW5kb20pOwogfTsKIAorLy8gRGVmaW5pbmcgYSB2YXJpYWJsZSBvZiB0
eXBlIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBUMj4gd2lsbCBjYXVzZSBhCisvLyBjb21w
aWxlciBlcnJvciBpZmYgVDEgYW5kIFQyIGFyZSBkaWZmZXJlbnQgdHlwZXMuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorc3RydWN0IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFs
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBDb21waWxlQXNzZXJ0VHlwZXNFcXVh
bDxULCBUPiB7Cit9OworCisvLyBSZW1vdmVzIHRoZSByZWZlcmVuY2UgZnJvbSBhIHR5cGUgaWYg
aXQgaXMgYSByZWZlcmVuY2UgdHlwZSwKKy8vIG90aGVyd2lzZSBsZWF2ZXMgaXQgdW5jaGFuZ2Vk
LiAgVGhpcyBpcyB0aGUgc2FtZSBhcworLy8gdHIxOjpyZW1vdmVfcmVmZXJlbmNlLCB3aGljaCBp
cyBub3Qgd2lkZWx5IGF2YWlsYWJsZSB5ZXQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVj
dCBSZW1vdmVSZWZlcmVuY2UgeyB0eXBlZGVmIFQgdHlwZTsgfTsgIC8vIE5PTElOVAordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUmVtb3ZlUmVmZXJlbmNlPFQmPiB7IHR5cGVkZWYgVCB0
eXBlOyB9OyAgLy8gTk9MSU5UCisKKy8vIEEgaGFuZHkgd3JhcHBlciBhcm91bmQgUmVtb3ZlUmVm
ZXJlbmNlIHRoYXQgd29ya3Mgd2hlbiB0aGUgYXJndW1lbnQKKy8vIFQgZGVwZW5kcyBvbiB0ZW1w
bGF0ZSBwYXJhbWV0ZXJzLgorI2RlZmluZSBHVEVTVF9SRU1PVkVfUkVGRVJFTkNFXyhUKSBcCisg
ICAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UmVtb3ZlUmVmZXJlbmNlPFQ+Ojp0eXBl
CisKKy8vIFJlbW92ZXMgY29uc3QgZnJvbSBhIHR5cGUgaWYgaXQgaXMgYSBjb25zdCB0eXBlLCBv
dGhlcndpc2UgbGVhdmVzCisvLyBpdCB1bmNoYW5nZWQuICBUaGlzIGlzIHRoZSBzYW1lIGFzIHRy
MTo6cmVtb3ZlX2NvbnN0LCB3aGljaCBpcyBub3QKKy8vIHdpZGVseSBhdmFpbGFibGUgeWV0Lgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUmVtb3ZlQ29uc3QgeyB0eXBlZGVmIFQgdHlw
ZTsgfTsgIC8vIE5PTElOVAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUmVtb3ZlQ29u
c3Q8Y29uc3QgVD4geyB0eXBlZGVmIFQgdHlwZTsgfTsgIC8vIE5PTElOVAorCisvLyBNU1ZDIDgu
MCwgU3VuIEMrKywgYW5kIElCTSBYTCBDKysgaGF2ZSBhIGJ1ZyB3aGljaCBjYXVzZXMgdGhlIGFi
b3ZlCisvLyBkZWZpbml0aW9uIHRvIGZhaWwgdG8gcmVtb3ZlIHRoZSBjb25zdCBpbiAnY29uc3Qg
aW50WzNdJyBhbmQgJ2NvbnN0CisvLyBjaGFyWzNdWzRdJy4gIFRoZSBmb2xsb3dpbmcgc3BlY2lh
bGl6YXRpb24gd29ya3MgYXJvdW5kIHRoZSBidWcuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6
ZV90IE4+CitzdHJ1Y3QgUmVtb3ZlQ29uc3Q8Y29uc3QgVFtOXT4geworICB0eXBlZGVmIHR5cGVu
YW1lIFJlbW92ZUNvbnN0PFQ+Ojp0eXBlIHR5cGVbTl07Cit9OworCisjaWYgZGVmaW5lZChfTVND
X1ZFUikgJiYgX01TQ19WRVIgPCAxNDAwCisvLyBUaGlzIGlzIHRoZSBvbmx5IHNwZWNpYWxpemF0
aW9uIHRoYXQgYWxsb3dzIFZDKysgNy4xIHRvIHJlbW92ZSBjb25zdCBpbgorLy8gJ2NvbnN0IGlu
dFszXSBhbmQgJ2NvbnN0IGludFszXVs0XScuICBIb3dldmVyLCBpdCBjYXVzZXMgdHJvdWJsZSB3
aXRoIEdDQworLy8gYW5kIHRodXMgbmVlZHMgdG8gYmUgY29uZGl0aW9uYWxseSBjb21waWxlZC4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KK3N0cnVjdCBSZW1vdmVDb25zdDxUW05d
PiB7CisgIHR5cGVkZWYgdHlwZW5hbWUgUmVtb3ZlQ29uc3Q8VD46OnR5cGUgdHlwZVtOXTsKK307
CisjZW5kaWYKKworLy8gQSBoYW5keSB3cmFwcGVyIGFyb3VuZCBSZW1vdmVDb25zdCB0aGF0IHdv
cmtzIHdoZW4gdGhlIGFyZ3VtZW50CisvLyBUIGRlcGVuZHMgb24gdGVtcGxhdGUgcGFyYW1ldGVy
cy4KKyNkZWZpbmUgR1RFU1RfUkVNT1ZFX0NPTlNUXyhUKSBcCisgICAgdHlwZW5hbWUgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6UmVtb3ZlQ29uc3Q8VD46OnR5cGUKKworLy8gVHVybnMgY29uc3QgVSYs
IFUmLCBjb25zdCBVLCBhbmQgVSBhbGwgaW50byBVLgorI2RlZmluZSBHVEVTVF9SRU1PVkVfUkVG
RVJFTkNFX0FORF9DT05TVF8oVCkgXAorICAgIEdURVNUX1JFTU9WRV9DT05TVF8oR1RFU1RfUkVN
T1ZFX1JFRkVSRU5DRV8oVCkpCisKKy8vIEFkZHMgcmVmZXJlbmNlIHRvIGEgdHlwZSBpZiBpdCBp
cyBub3QgYSByZWZlcmVuY2UgdHlwZSwKKy8vIG90aGVyd2lzZSBsZWF2ZXMgaXQgdW5jaGFuZ2Vk
LiAgVGhpcyBpcyB0aGUgc2FtZSBhcworLy8gdHIxOjphZGRfcmVmZXJlbmNlLCB3aGljaCBpcyBu
b3Qgd2lkZWx5IGF2YWlsYWJsZSB5ZXQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBB
ZGRSZWZlcmVuY2UgeyB0eXBlZGVmIFQmIHR5cGU7IH07ICAvLyBOT0xJTlQKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorc3RydWN0IEFkZFJlZmVyZW5jZTxUJj4geyB0eXBlZGVmIFQmIHR5cGU7IH07
ICAvLyBOT0xJTlQKKworLy8gQSBoYW5keSB3cmFwcGVyIGFyb3VuZCBBZGRSZWZlcmVuY2UgdGhh
dCB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudCBUCisvLyBkZXBlbmRzIG9uIHRlbXBsYXRlIHBhcmFt
ZXRlcnMuCisjZGVmaW5lIEdURVNUX0FERF9SRUZFUkVOQ0VfKFQpIFwKKyAgICB0eXBlbmFtZSA6
OnRlc3Rpbmc6OmludGVybmFsOjpBZGRSZWZlcmVuY2U8VD46OnR5cGUKKworLy8gQWRkcyBhIHJl
ZmVyZW5jZSB0byBjb25zdCBvbiB0b3Agb2YgVCBhcyBuZWNlc3NhcnkuICBGb3IgZXhhbXBsZSwK
Ky8vIGl0IHRyYW5zZm9ybXMKKy8vCisvLyAgIGNoYXIgICAgICAgICA9PT4gY29uc3QgY2hhciYK
Ky8vICAgY29uc3QgY2hhciAgID09PiBjb25zdCBjaGFyJgorLy8gICBjaGFyJiAgICAgICAgPT0+
IGNvbnN0IGNoYXImCisvLyAgIGNvbnN0IGNoYXImICA9PT4gY29uc3QgY2hhciYKKy8vCisvLyBU
aGUgYXJndW1lbnQgVCBtdXN0IGRlcGVuZCBvbiBzb21lIHRlbXBsYXRlIHBhcmFtZXRlcnMuCisj
ZGVmaW5lIEdURVNUX1JFRkVSRU5DRV9UT19DT05TVF8oVCkgXAorICAgIEdURVNUX0FERF9SRUZF
UkVOQ0VfKGNvbnN0IEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfKFQpKQorCisvLyBJbXBsaWNpdGx5
Q29udmVydGlibGU8RnJvbSwgVG8+Ojp2YWx1ZSBpcyBhIGNvbXBpbGUtdGltZSBib29sCisvLyBj
b25zdGFudCB0aGF0J3MgdHJ1ZSBpZmYgdHlwZSBGcm9tIGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZl
cnRlZCB0bworLy8gdHlwZSBUby4KK3RlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBU
bz4KK2NsYXNzIEltcGxpY2l0bHlDb252ZXJ0aWJsZSB7CisgcHJpdmF0ZToKKyAgLy8gV2UgbmVl
ZCB0aGUgZm9sbG93aW5nIGhlbHBlciBmdW5jdGlvbnMgb25seSBmb3IgdGhlaXIgdHlwZXMuCisg
IC8vIFRoZXkgaGF2ZSBubyBpbXBsZW1lbnRhdGlvbnMuCisKKyAgLy8gTWFrZUZyb20oKSBpcyBh
biBleHByZXNzaW9uIHdob3NlIHR5cGUgaXMgRnJvbS4gIFdlIGNhbm5vdCBzaW1wbHkKKyAgLy8g
dXNlIEZyb20oKSwgYXMgdGhlIHR5cGUgRnJvbSBtYXkgbm90IGhhdmUgYSBwdWJsaWMgZGVmYXVs
dAorICAvLyBjb25zdHJ1Y3Rvci4KKyAgc3RhdGljIHR5cGVuYW1lIEFkZFJlZmVyZW5jZTxGcm9t
Pjo6dHlwZSBNYWtlRnJvbSgpOworCisgIC8vIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIG92ZXJs
b2FkZWQuICBHaXZlbiBhbiBleHByZXNzaW9uCisgIC8vIEhlbHBlcih4KSwgdGhlIGNvbXBpbGVy
IHdpbGwgcGljayB0aGUgZmlyc3QgdmVyc2lvbiBpZiB4IGNhbiBiZQorICAvLyBpbXBsaWNpdGx5
IGNvbnZlcnRlZCB0byB0eXBlIFRvOyBvdGhlcndpc2UgaXQgd2lsbCBwaWNrIHRoZQorICAvLyBz
ZWNvbmQgdmVyc2lvbi4KKyAgLy8KKyAgLy8gVGhlIGZpcnN0IHZlcnNpb24gcmV0dXJucyBhIHZh
bHVlIG9mIHNpemUgMSwgYW5kIHRoZSBzZWNvbmQKKyAgLy8gdmVyc2lvbiByZXR1cm5zIGEgdmFs
dWUgb2Ygc2l6ZSAyLiAgVGhlcmVmb3JlLCBieSBjaGVja2luZyB0aGUKKyAgLy8gc2l6ZSBvZiBI
ZWxwZXIoeCksIHdoaWNoIGNhbiBiZSBkb25lIGF0IGNvbXBpbGUgdGltZSwgd2UgY2FuIHRlbGwK
KyAgLy8gd2hpY2ggdmVyc2lvbiBvZiBIZWxwZXIoKSBpcyB1c2VkLCBhbmQgaGVuY2Ugd2hldGhl
ciB4IGNhbiBiZQorICAvLyBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0eXBlIFRvLgorICBzdGF0
aWMgY2hhciBIZWxwZXIoVG8pOworICBzdGF0aWMgY2hhciAoJkhlbHBlciguLi4pKVsyXTsgIC8v
IE5PTElOVAorCisgIC8vIFdlIGhhdmUgdG8gcHV0IHRoZSAncHVibGljJyBzZWN0aW9uIGFmdGVy
IHRoZSAncHJpdmF0ZScgc2VjdGlvbiwKKyAgLy8gb3IgTVNWQyByZWZ1c2VzIHRvIGNvbXBpbGUg
dGhlIGNvZGUuCisgcHVibGljOgorI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKQorICAvLyBDKytC
dWlsZGVyIGNhbm5vdCB1c2UgbWVtYmVyIG92ZXJsb2FkIHJlc29sdXRpb24gZHVyaW5nIHRlbXBs
YXRlCisgIC8vIGluc3RhbnRpYXRpb24uICBUaGUgc2ltcGxlc3Qgd29ya2Fyb3VuZCBpcyB0byB1
c2UgaXRzIEMrKzB4IHR5cGUgdHJhaXRzCisgIC8vIGZ1bmN0aW9ucyAoQysrQnVpbGRlciAyMDA5
IGFuZCBhYm92ZSBvbmx5KS4KKyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBfX2lzX2NvbnZl
cnRpYmxlKEZyb20sIFRvKTsKKyNlbHNlCisgIC8vIE1TVkMgd2FybnMgYWJvdXQgaW1wbGljaXRs
eSBjb252ZXJ0aW5nIGZyb20gZG91YmxlIHRvIGludCBmb3IKKyAgLy8gcG9zc2libGUgbG9zcyBv
ZiBkYXRhLCBzbyB3ZSBuZWVkIHRvIHRlbXBvcmFyaWx5IGRpc2FibGUgdGhlCisgIC8vIHdhcm5p
bmcuCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQyNDQpCisgIHN0YXRpYyBj
b25zdCBib29sIHZhbHVlID0KKyAgICAgIHNpemVvZihIZWxwZXIoSW1wbGljaXRseUNvbnZlcnRp
YmxlOjpNYWtlRnJvbSgpKSkgPT0gMTsKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9Q
XygpCisjZW5kaWYgIC8vIF9fQk9STEFORENfXworfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBGcm9t
LCB0eXBlbmFtZSBUbz4KK2NvbnN0IGJvb2wgSW1wbGljaXRseUNvbnZlcnRpYmxlPEZyb20sIFRv
Pjo6dmFsdWU7CisKKy8vIElzQVByb3RvY29sTWVzc2FnZTxUPjo6dmFsdWUgaXMgYSBjb21waWxl
LXRpbWUgYm9vbCBjb25zdGFudCB0aGF0J3MKKy8vIHRydWUgaWZmIFQgaXMgdHlwZSBQcm90b2Nv
bE1lc3NhZ2UsIHByb3RvMjo6TWVzc2FnZSwgb3IgYSBzdWJjbGFzcworLy8gb2YgdGhvc2UuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBJc0FQcm90b2NvbE1lc3NhZ2UKKyAgICA6IHB1
YmxpYyBib29sX2NvbnN0YW50PAorICBJbXBsaWNpdGx5Q29udmVydGlibGU8Y29uc3QgVCosIGNv
bnN0IDo6UHJvdG9jb2xNZXNzYWdlKj46OnZhbHVlIHx8CisgIEltcGxpY2l0bHlDb252ZXJ0aWJs
ZTxjb25zdCBUKiwgY29uc3QgOjpwcm90bzI6Ok1lc3NhZ2UqPjo6dmFsdWU+IHsKK307CisKKy8v
IFdoZW4gdGhlIGNvbXBpbGVyIHNlZXMgZXhwcmVzc2lvbiBJc0NvbnRhaW5lclRlc3Q8Qz4oMCks
IGlmIEMgaXMgYW4KKy8vIFNUTC1zdHlsZSBjb250YWluZXIgY2xhc3MsIHRoZSBmaXJzdCBvdmVy
bG9hZCBvZiBJc0NvbnRhaW5lclRlc3QKKy8vIHdpbGwgYmUgdmlhYmxlIChzaW5jZSBib3RoIEM6
Oml0ZXJhdG9yKiBhbmQgQzo6Y29uc3RfaXRlcmF0b3IqIGFyZQorLy8gdmFsaWQgdHlwZXMgYW5k
IE5VTEwgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIHRoZW0pLiAgSXQgd2lsbAorLy8g
YmUgcGlja2VkIG92ZXIgdGhlIHNlY29uZCBvdmVybG9hZCBhcyAnaW50JyBpcyBhIHBlcmZlY3Qg
bWF0Y2ggZm9yCisvLyB0aGUgdHlwZSBvZiBhcmd1bWVudCAwLiAgSWYgQzo6aXRlcmF0b3Igb3Ig
Qzo6Y29uc3RfaXRlcmF0b3IgaXMgbm90CisvLyBhIHZhbGlkIHR5cGUsIHRoZSBmaXJzdCBvdmVy
bG9hZCBpcyBub3QgdmlhYmxlLCBhbmQgdGhlIHNlY29uZAorLy8gb3ZlcmxvYWQgd2lsbCBiZSBw
aWNrZWQuICBUaGVyZWZvcmUsIHdlIGNhbiBkZXRlcm1pbmUgd2hldGhlciBDIGlzCisvLyBhIGNv
bnRhaW5lciBjbGFzcyBieSBjaGVja2luZyB0aGUgdHlwZSBvZiBJc0NvbnRhaW5lclRlc3Q8Qz4o
MCkuCisvLyBUaGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaXMgaW5zaWduaWZpY2FudC4KKy8v
CisvLyBOb3RlIHRoYXQgd2UgbG9vayBmb3IgYm90aCBDOjppdGVyYXRvciBhbmQgQzo6Y29uc3Rf
aXRlcmF0b3IuICBUaGUKKy8vIHJlYXNvbiBpcyB0aGF0IEMrKyBpbmplY3RzIHRoZSBuYW1lIG9m
IGEgY2xhc3MgYXMgYSBtZW1iZXIgb2YgdGhlCisvLyBjbGFzcyBpdHNlbGYgKGUuZy4geW91IGNh
biByZWZlciB0byBjbGFzcyBpdGVyYXRvciBhcyBlaXRoZXIKKy8vICdpdGVyYXRvcicgb3IgJ2l0
ZXJhdG9yOjppdGVyYXRvcicpLiAgSWYgd2UgbG9vayBmb3IgQzo6aXRlcmF0b3IKKy8vIG9ubHks
IGZvciBleGFtcGxlLCB3ZSB3b3VsZCBtaXN0YWtlbmx5IHRoaW5rIHRoYXQgYSBjbGFzcyBuYW1l
ZAorLy8gaXRlcmF0b3IgaXMgYW4gU1RMIGNvbnRhaW5lci4KKy8vCisvLyBBbHNvIG5vdGUgdGhh
dCB0aGUgc2ltcGxlciBhcHByb2FjaCBvZiBvdmVybG9hZGluZworLy8gSXNDb250YWluZXJUZXN0
KHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yKikgYW5kCisvLyBJc0NvbnRhaW5lclRlc3QoLi4u
KSBkb2Vzbid0IHdvcmsgd2l0aCBWaXN1YWwgQWdlIEMrKyBhbmQgU3VuIEMrKy4KK3R5cGVkZWYg
aW50IElzQ29udGFpbmVyOwordGVtcGxhdGUgPGNsYXNzIEM+CitJc0NvbnRhaW5lciBJc0NvbnRh
aW5lclRlc3QoaW50IC8qIGR1bW15ICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVuYW1lIEM6Oml0ZXJhdG9yKiAvKiBpdCAqLyA9IE5VTEwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZW5hbWUgQzo6Y29uc3RfaXRlcmF0b3IqIC8qIGNvbnN0X2l0ICovID0gTlVM
TCkgeworICByZXR1cm4gMDsKK30KKwordHlwZWRlZiBjaGFyIElzTm90Q29udGFpbmVyOwordGVt
cGxhdGUgPGNsYXNzIEM+CitJc05vdENvbnRhaW5lciBJc0NvbnRhaW5lclRlc3QobG9uZyAvKiBk
dW1teSAqLykgeyByZXR1cm4gJ1wwJzsgfQorCisvLyBFbmFibGVJZjxjb25kaXRpb24+Ojp0eXBl
IGlzIHZvaWQgd2hlbiAnQ29uZCcgaXMgdHJ1ZSwgYW5kCisvLyB1bmRlZmluZWQgd2hlbiAnQ29u
ZCcgaXMgZmFsc2UuICBUbyB1c2UgU0ZJTkFFIHRvIG1ha2UgYSBmdW5jdGlvbgorLy8gb3Zlcmxv
YWQgb25seSBhcHBseSB3aGVuIGEgcGFydGljdWxhciBleHByZXNzaW9uIGlzIHRydWUsIGFkZAor
Ly8gInR5cGVuYW1lIEVuYWJsZUlmPGV4cHJlc3Npb24+Ojp0eXBlKiA9IDAiIGFzIHRoZSBsYXN0
IHBhcmFtZXRlci4KK3RlbXBsYXRlPGJvb2w+IHN0cnVjdCBFbmFibGVJZjsKK3RlbXBsYXRlPD4g
c3RydWN0IEVuYWJsZUlmPHRydWU+IHsgdHlwZWRlZiB2b2lkIHR5cGU7IH07ICAvLyBOT0xJTlQK
KworLy8gVXRpbGl0aWVzIGZvciBuYXRpdmUgYXJyYXlzLgorCisvLyBBcnJheUVxKCkgY29tcGFy
ZXMgdHdvIGstZGltZW5zaW9uYWwgbmF0aXZlIGFycmF5cyB1c2luZyB0aGUKKy8vIGVsZW1lbnRz
JyBvcGVyYXRvcj09LCB3aGVyZSBrIGNhbiBiZSBhbnkgaW50ZWdlciA+PSAwLiAgV2hlbiBrIGlz
CisvLyAwLCBBcnJheUVxKCkgZGVnZW5lcmF0ZXMgaW50byBjb21wYXJpbmcgYSBzaW5nbGUgcGFp
ciBvZiB2YWx1ZXMuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorYm9vbCBB
cnJheUVxKGNvbnN0IFQqIGxocywgc2l6ZV90IHNpemUsIGNvbnN0IFUqIHJocyk7CisKKy8vIFRo
aXMgZ2VuZXJpYyB2ZXJzaW9uIGlzIHVzZWQgd2hlbiBrIGlzIDAuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4KK2lubGluZSBib29sIEFycmF5RXEoY29uc3QgVCYgbGhzLCBjb25z
dCBVJiByaHMpIHsgcmV0dXJuIGxocyA9PSByaHM7IH0KKworLy8gVGhpcyBvdmVybG9hZCBpcyB1
c2VkIHdoZW4gayA+PSAxLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVf
dCBOPgoraW5saW5lIGJvb2wgQXJyYXlFcShjb25zdCBUKCZsaHMpW05dLCBjb25zdCBVKCZyaHMp
W05dKSB7CisgIHJldHVybiBpbnRlcm5hbDo6QXJyYXlFcShsaHMsIE4sIHJocyk7Cit9CisKKy8v
IFRoaXMgaGVscGVyIHJlZHVjZXMgY29kZSBibG9hdC4gIElmIHdlIGluc3RlYWQgcHV0IGl0cyBs
b2dpYyBpbnNpZGUKKy8vIHRoZSBwcmV2aW91cyBBcnJheUVxKCkgZnVuY3Rpb24sIGFycmF5cyB3
aXRoIGRpZmZlcmVudCBzaXplcyB3b3VsZAorLy8gbGVhZCB0byBkaWZmZXJlbnQgY29waWVzIG9m
IHRoZSB0ZW1wbGF0ZSBjb2RlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Citi
b29sIEFycmF5RXEoY29uc3QgVCogbGhzLCBzaXplX3Qgc2l6ZSwgY29uc3QgVSogcmhzKSB7Cisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHNpemU7IGkrKykgeworICAgIGlmICghaW50ZXJuYWw6
OkFycmF5RXEobGhzW2ldLCByaHNbaV0pKQorICAgICAgcmV0dXJuIGZhbHNlOworICB9CisgIHJl
dHVybiB0cnVlOworfQorCisvLyBGaW5kcyB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgaXRlcmF0
b3IgcmFuZ2UgW2JlZ2luLCBlbmQpIHRoYXQKKy8vIGVxdWFscyBlbGVtLiAgRWxlbWVudCBtYXkg
YmUgYSBuYXRpdmUgYXJyYXkgdHlwZSBpdHNlbGYuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlciwg
dHlwZW5hbWUgRWxlbWVudD4KK0l0ZXIgQXJyYXlBd2FyZUZpbmQoSXRlciBiZWdpbiwgSXRlciBl
bmQsIGNvbnN0IEVsZW1lbnQmIGVsZW0pIHsKKyAgZm9yIChJdGVyIGl0ID0gYmVnaW47IGl0ICE9
IGVuZDsgKytpdCkgeworICAgIGlmIChpbnRlcm5hbDo6QXJyYXlFcSgqaXQsIGVsZW0pKQorICAg
ICAgcmV0dXJuIGl0OworICB9CisgIHJldHVybiBlbmQ7Cit9CisKKy8vIENvcHlBcnJheSgpIGNv
cGllcyBhIGstZGltZW5zaW9uYWwgbmF0aXZlIGFycmF5IHVzaW5nIHRoZSBlbGVtZW50cycKKy8v
IG9wZXJhdG9yPSwgd2hlcmUgayBjYW4gYmUgYW55IGludGVnZXIgPj0gMC4gIFdoZW4gayBpcyAw
LAorLy8gQ29weUFycmF5KCkgZGVnZW5lcmF0ZXMgaW50byBjb3B5aW5nIGEgc2luZ2xlIHZhbHVl
LgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3ZvaWQgQ29weUFycmF5KGNv
bnN0IFQqIGZyb20sIHNpemVfdCBzaXplLCBVKiB0byk7CisKKy8vIFRoaXMgZ2VuZXJpYyB2ZXJz
aW9uIGlzIHVzZWQgd2hlbiBrIGlzIDAuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4KK2lubGluZSB2b2lkIENvcHlBcnJheShjb25zdCBUJiBmcm9tLCBVKiB0bykgeyAqdG8gPSBm
cm9tOyB9CisKKy8vIFRoaXMgb3ZlcmxvYWQgaXMgdXNlZCB3aGVuIGsgPj0gMS4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgTj4KK2lubGluZSB2b2lkIENvcHlBcnJh
eShjb25zdCBUKCZmcm9tKVtOXSwgVSgqdG8pW05dKSB7CisgIGludGVybmFsOjpDb3B5QXJyYXko
ZnJvbSwgTiwgKnRvKTsKK30KKworLy8gVGhpcyBoZWxwZXIgcmVkdWNlcyBjb2RlIGJsb2F0LiAg
SWYgd2UgaW5zdGVhZCBwdXQgaXRzIGxvZ2ljIGluc2lkZQorLy8gdGhlIHByZXZpb3VzIENvcHlB
cnJheSgpIGZ1bmN0aW9uLCBhcnJheXMgd2l0aCBkaWZmZXJlbnQgc2l6ZXMKKy8vIHdvdWxkIGxl
YWQgdG8gZGlmZmVyZW50IGNvcGllcyBvZiB0aGUgdGVtcGxhdGUgY29kZS4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgordm9pZCBDb3B5QXJyYXkoY29uc3QgVCogZnJvbSwgc2l6
ZV90IHNpemUsIFUqIHRvKSB7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHNpemU7IGkrKykg
eworICAgIGludGVybmFsOjpDb3B5QXJyYXkoZnJvbVtpXSwgdG8gKyBpKTsKKyAgfQorfQorCisv
LyBUaGUgcmVsYXRpb24gYmV0d2VlbiBhbiBOYXRpdmVBcnJheSBvYmplY3QgKHNlZSBiZWxvdykg
YW5kIHRoZQorLy8gbmF0aXZlIGFycmF5IGl0IHJlcHJlc2VudHMuCisvLyBXZSB1c2UgMiBkaWZm
ZXJlbnQgc3RydWN0cyB0byBhbGxvdyBub24tY29weWFibGUgdHlwZXMgdG8gYmUgdXNlZCwgYXMg
bG9uZworLy8gYXMgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgpIGlzIHBhc3NlZC4KK3N0cnVj
dCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlIHt9Oworc3RydWN0IFJlbGF0aW9uVG9Tb3VyY2VD
b3B5IHt9OworCisvLyBBZGFwdHMgYSBuYXRpdmUgYXJyYXkgdG8gYSByZWFkLW9ubHkgU1RMLXN0
eWxlIGNvbnRhaW5lci4gIEluc3RlYWQKKy8vIG9mIHRoZSBjb21wbGV0ZSBTVEwgY29udGFpbmVy
IGNvbmNlcHQsIHRoaXMgYWRhcHRvciBvbmx5IGltcGxlbWVudHMKKy8vIG1lbWJlcnMgdXNlZnVs
IGZvciBHb29nbGUgTW9jaydzIGNvbnRhaW5lciBtYXRjaGVycy4gIE5ldyBtZW1iZXJzCisvLyBz
aG91bGQgYmUgYWRkZWQgYXMgbmVlZGVkLiAgVG8gc2ltcGxpZnkgdGhlIGltcGxlbWVudGF0aW9u
LCB3ZSBvbmx5CisvLyBzdXBwb3J0IEVsZW1lbnQgYmVpbmcgYSByYXcgdHlwZSAoaS5lLiBoYXZp
bmcgbm8gdG9wLWxldmVsIGNvbnN0IG9yCisvLyByZWZlcmVuY2UgbW9kaWZpZXIpLiAgSXQncyB0
aGUgY2xpZW50J3MgcmVzcG9uc2liaWxpdHkgdG8gc2F0aXNmeQorLy8gdGhpcyByZXF1aXJlbWVu
dC4gIEVsZW1lbnQgY2FuIGJlIGFuIGFycmF5IHR5cGUgaXRzZWxmIChoZW5jZQorLy8gbXVsdGkt
ZGltZW5zaW9uYWwgYXJyYXlzIGFyZSBzdXBwb3J0ZWQpLgordGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnQ+CitjbGFzcyBOYXRpdmVBcnJheSB7CisgcHVibGljOgorICAvLyBTVEwtc3R5bGUgY29u
dGFpbmVyIHR5cGVkZWZzLgorICB0eXBlZGVmIEVsZW1lbnQgdmFsdWVfdHlwZTsKKyAgdHlwZWRl
ZiBFbGVtZW50KiBpdGVyYXRvcjsKKyAgdHlwZWRlZiBjb25zdCBFbGVtZW50KiBjb25zdF9pdGVy
YXRvcjsKKworICAvLyBDb25zdHJ1Y3RzIGZyb20gYSBuYXRpdmUgYXJyYXkuIFJlZmVyZW5jZXMg
dGhlIHNvdXJjZS4KKyAgTmF0aXZlQXJyYXkoY29uc3QgRWxlbWVudCogYXJyYXksIHNpemVfdCBj
b3VudCwgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSkgeworICAgIEluaXRSZWYoYXJyYXksIGNv
dW50KTsKKyAgfQorCisgIC8vIENvbnN0cnVjdHMgZnJvbSBhIG5hdGl2ZSBhcnJheS4gQ29waWVz
IHRoZSBzb3VyY2UuCisgIE5hdGl2ZUFycmF5KGNvbnN0IEVsZW1lbnQqIGFycmF5LCBzaXplX3Qg
Y291bnQsIFJlbGF0aW9uVG9Tb3VyY2VDb3B5KSB7CisgICAgSW5pdENvcHkoYXJyYXksIGNvdW50
KTsKKyAgfQorCisgIC8vIENvcHkgY29uc3RydWN0b3IuCisgIE5hdGl2ZUFycmF5KGNvbnN0IE5h
dGl2ZUFycmF5JiByaHMpIHsKKyAgICAodGhpcy0+KnJocy5jbG9uZV8pKHJocy5hcnJheV8sIHJo
cy5zaXplXyk7CisgIH0KKworICB+TmF0aXZlQXJyYXkoKSB7CisgICAgaWYgKGNsb25lXyAhPSAm
TmF0aXZlQXJyYXk6OkluaXRSZWYpCisgICAgICBkZWxldGVbXSBhcnJheV87CisgIH0KKworICAv
LyBTVEwtc3R5bGUgY29udGFpbmVyIG1ldGhvZHMuCisgIHNpemVfdCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gc2l6ZV87IH0KKyAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBh
cnJheV87IH0KKyAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gYXJyYXlfICsg
c2l6ZV87IH0KKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5hdGl2ZUFycmF5JiByaHMpIGNvbnN0
IHsKKyAgICByZXR1cm4gc2l6ZSgpID09IHJocy5zaXplKCkgJiYKKyAgICAgICAgQXJyYXlFcShi
ZWdpbigpLCBzaXplKCksIHJocy5iZWdpbigpKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgZW51bSB7
CisgICAga0NoZWNrVHlwZUlzTm90Q29uc3RPckFSZWZlcmVuY2UgPSBTdGF0aWNBc3NlcnRUeXBl
RXFIZWxwZXI8CisgICAgICAgIEVsZW1lbnQsIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NP
TlNUXyhFbGVtZW50KT46OnZhbHVlLAorICB9OworCisgIC8vIEluaXRpYWxpemVzIHRoaXMgb2Jq
ZWN0IHdpdGggYSBjb3B5IG9mIHRoZSBpbnB1dC4KKyAgdm9pZCBJbml0Q29weShjb25zdCBFbGVt
ZW50KiBhcnJheSwgc2l6ZV90IGFfc2l6ZSkgeworICAgIEVsZW1lbnQqIGNvbnN0IGNvcHkgPSBu
ZXcgRWxlbWVudFthX3NpemVdOworICAgIENvcHlBcnJheShhcnJheSwgYV9zaXplLCBjb3B5KTsK
KyAgICBhcnJheV8gPSBjb3B5OworICAgIHNpemVfID0gYV9zaXplOworICAgIGNsb25lXyA9ICZO
YXRpdmVBcnJheTo6SW5pdENvcHk7CisgIH0KKworICAvLyBJbml0aWFsaXplcyB0aGlzIG9iamVj
dCB3aXRoIGEgcmVmZXJlbmNlIG9mIHRoZSBpbnB1dC4KKyAgdm9pZCBJbml0UmVmKGNvbnN0IEVs
ZW1lbnQqIGFycmF5LCBzaXplX3QgYV9zaXplKSB7CisgICAgYXJyYXlfID0gYXJyYXk7CisgICAg
c2l6ZV8gPSBhX3NpemU7CisgICAgY2xvbmVfID0gJk5hdGl2ZUFycmF5OjpJbml0UmVmOworICB9
CisKKyAgY29uc3QgRWxlbWVudCogYXJyYXlfOworICBzaXplX3Qgc2l6ZV87CisgIHZvaWQgKE5h
dGl2ZUFycmF5OjoqY2xvbmVfKShjb25zdCBFbGVtZW50Kiwgc2l6ZV90KTsKKworICBHVEVTVF9E
SVNBTExPV19BU1NJR05fKE5hdGl2ZUFycmF5KTsKK307CisKIH0gIC8vIG5hbWVzcGFjZSBpbnRl
cm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotI2RlZmluZSBHVEVTVF9NRVNTQUdFXyht
ZXNzYWdlLCByZXN1bHRfdHlwZSkgXAotICA6OnRlc3Rpbmc6OmludGVybmFsOjpBc3NlcnRIZWxw
ZXIocmVzdWx0X3R5cGUsIF9fRklMRV9fLCBfX0xJTkVfXywgbWVzc2FnZSkgXAorI2RlZmluZSBH
VEVTVF9NRVNTQUdFX0FUXyhmaWxlLCBsaW5lLCBtZXNzYWdlLCByZXN1bHRfdHlwZSkgXAorICA6
OnRlc3Rpbmc6OmludGVybmFsOjpBc3NlcnRIZWxwZXIocmVzdWx0X3R5cGUsIGZpbGUsIGxpbmUs
IG1lc3NhZ2UpIFwKICAgICA9IDo6dGVzdGluZzo6TWVzc2FnZSgpCiAKKyNkZWZpbmUgR1RFU1Rf
TUVTU0FHRV8obWVzc2FnZSwgcmVzdWx0X3R5cGUpIFwKKyAgR1RFU1RfTUVTU0FHRV9BVF8oX19G
SUxFX18sIF9fTElORV9fLCBtZXNzYWdlLCByZXN1bHRfdHlwZSkKKwogI2RlZmluZSBHVEVTVF9G
QVRBTF9GQUlMVVJFXyhtZXNzYWdlKSBcCiAgIHJldHVybiBHVEVTVF9NRVNTQUdFXyhtZXNzYWdl
LCA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlKQogCkBAIC04MDgsNyAr
MTEyMyw3IEBAIGNsYXNzIEdURVNUX0FQSV8gUmFuZG9tIHsKIAogI2RlZmluZSBHVEVTVF9URVNU
X1RIUk9XXyhzdGF0ZW1lbnQsIGV4cGVjdGVkX2V4Y2VwdGlvbiwgZmFpbCkgXAogICBHVEVTVF9B
TUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0gIGlmIChjb25zdCBjaGFyKiBndGVzdF9tc2cgPSAi
IikgeyBcCisgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpDb25zdENoYXJQdHIgZ3Rlc3RfbXNn
ID0gIiIpIHsgXAogICAgIGJvb2wgZ3Rlc3RfY2F1Z2h0X2V4cGVjdGVkID0gZmFsc2U7IFwKICAg
ICB0cnkgeyBcCiAgICAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdf
QkVMT1dfKHN0YXRlbWVudCk7IFwKQEAgLTgxNywzOCArMTEzMiwzOCBAQCBjbGFzcyBHVEVTVF9B
UElfIFJhbmRvbSB7CiAgICAgICBndGVzdF9jYXVnaHRfZXhwZWN0ZWQgPSB0cnVlOyBcCiAgICAg
fSBcCiAgICAgY2F0Y2ggKC4uLikgeyBcCi0gICAgICBndGVzdF9tc2cgPSAiRXhwZWN0ZWQ6ICIg
I3N0YXRlbWVudCAiIHRocm93cyBhbiBleGNlcHRpb24gb2YgdHlwZSAiIFwKLSAgICAgICAgICAg
ICAgICAgICNleHBlY3RlZF9leGNlcHRpb24gIi5cbiAgQWN0dWFsOiBpdCB0aHJvd3MgYSBkaWZm
ZXJlbnQgIiBcCi0gICAgICAgICAgICAgICAgICAidHlwZS4iOyBcCisgICAgICBndGVzdF9tc2cu
dmFsdWUgPSBcCisgICAgICAgICAgIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4g
ZXhjZXB0aW9uIG9mIHR5cGUgIiBcCisgICAgICAgICAgI2V4cGVjdGVkX2V4Y2VwdGlvbiAiLlxu
ICBBY3R1YWw6IGl0IHRocm93cyBhIGRpZmZlcmVudCB0eXBlLiI7IFwKICAgICAgIGdvdG8gR1RF
U1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0dGhyb3dfLCBfX0xJTkVfXyk7IFwKICAg
ICB9IFwKICAgICBpZiAoIWd0ZXN0X2NhdWdodF9leHBlY3RlZCkgeyBcCi0gICAgICBndGVzdF9t
c2cgPSAiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIHRocm93cyBhbiBleGNlcHRpb24gb2YgdHlw
ZSAiIFwKLSAgICAgICAgICAgICAgICAgICNleHBlY3RlZF9leGNlcHRpb24gIi5cbiAgQWN0dWFs
OiBpdCB0aHJvd3Mgbm90aGluZy4iOyBcCisgICAgICBndGVzdF9tc2cudmFsdWUgPSBcCisgICAg
ICAgICAgIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5
cGUgIiBcCisgICAgICAgICAgI2V4cGVjdGVkX2V4Y2VwdGlvbiAiLlxuICBBY3R1YWw6IGl0IHRo
cm93cyBub3RoaW5nLiI7IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9s
YWJlbF90ZXN0dGhyb3dfLCBfX0xJTkVfXyk7IFwKICAgICB9IFwKICAgfSBlbHNlIFwKICAgICBH
VEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3R0aHJvd18sIF9fTElORV9fKTogXAot
ICAgICAgZmFpbChndGVzdF9tc2cpCisgICAgICBmYWlsKGd0ZXN0X21zZy52YWx1ZSkKIAogI2Rl
ZmluZSBHVEVTVF9URVNUX05PX1RIUk9XXyhzdGF0ZW1lbnQsIGZhaWwpIFwKICAgR1RFU1RfQU1C
SUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAotICBpZiAoY29uc3QgY2hhciogZ3Rlc3RfbXNnID0gIiIp
IHsgXAorICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKICAgICB0
cnkgeyBcCiAgICAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVM
T1dfKHN0YXRlbWVudCk7IFwKICAgICB9IFwKICAgICBjYXRjaCAoLi4uKSB7IFwKLSAgICAgIGd0
ZXN0X21zZyA9ICJFeHBlY3RlZDogIiAjc3RhdGVtZW50ICIgZG9lc24ndCB0aHJvdyBhbiBleGNl
cHRpb24uXG4iIFwKLSAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogaXQgdGhyb3dzLiI7IFwK
ICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0bm90aHJvd18s
IF9fTElORV9fKTsgXAogICAgIH0gXAogICB9IGVsc2UgXAogICAgIEdURVNUX0NPTkNBVF9UT0tF
Tl8oZ3Rlc3RfbGFiZWxfdGVzdG5vdGhyb3dfLCBfX0xJTkVfXyk6IFwKLSAgICAgIGZhaWwoZ3Rl
c3RfbXNnKQorICAgICAgZmFpbCgiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgdGhy
b3cgYW4gZXhjZXB0aW9uLlxuIiBcCisgICAgICAgICAgICIgIEFjdHVhbDogaXQgdGhyb3dzLiIp
CiAKICNkZWZpbmUgR1RFU1RfVEVTVF9BTllfVEhST1dfKHN0YXRlbWVudCwgZmFpbCkgXAogICBH
VEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0gIGlmIChjb25zdCBjaGFyKiBndGVzdF9t
c2cgPSAiIikgeyBcCisgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsg
XAogICAgIGJvb2wgZ3Rlc3RfY2F1Z2h0X2FueSA9IGZhbHNlOyBcCiAgICAgdHJ5IHsgXAogICAg
ICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1l
bnQpOyBcCkBAIC04NTcsMTMgKzExNzIsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBSYW5kb20gewog
ICAgICAgZ3Rlc3RfY2F1Z2h0X2FueSA9IHRydWU7IFwKICAgICB9IFwKICAgICBpZiAoIWd0ZXN0
X2NhdWdodF9hbnkpIHsgXAotICAgICAgZ3Rlc3RfbXNnID0gIkV4cGVjdGVkOiAiICNzdGF0ZW1l
bnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuIiBcCi0gICAgICAgICAgICAgICAgICAiICBBY3R1
YWw6IGl0IGRvZXNuJ3QuIjsgXAogICAgICAgZ290byBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0
X2xhYmVsX3Rlc3Rhbnl0aHJvd18sIF9fTElORV9fKTsgXAogICAgIH0gXAogICB9IGVsc2UgXAog
ICAgIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdGFueXRocm93XywgX19MSU5F
X18pOiBcCi0gICAgICBmYWlsKGd0ZXN0X21zZykKKyAgICAgIGZhaWwoIkV4cGVjdGVkOiAiICNz
dGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuIiBcCisgICAgICAgICAgICIgIEFjdHVh
bDogaXQgZG9lc24ndC4iKQogCiAKIC8vIEltcGxlbWVudHMgQm9vbGVhbiB0ZXN0IGFzc2VydGlv
bnMgc3VjaCBhcyBFWFBFQ1RfVFJVRS4gZXhwcmVzc2lvbiBjYW4gYmUKQEAgLTg4MCwxOCArMTE5
NCwxNyBAQCBjbGFzcyBHVEVTVF9BUElfIFJhbmRvbSB7CiAKICNkZWZpbmUgR1RFU1RfVEVTVF9O
T19GQVRBTF9GQUlMVVJFXyhzdGF0ZW1lbnQsIGZhaWwpIFwKICAgR1RFU1RfQU1CSUdVT1VTX0VM
U0VfQkxPQ0tFUl8gXAotICBpZiAoY29uc3QgY2hhciogZ3Rlc3RfbXNnID0gIiIpIHsgXAorICBp
ZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKICAgICA6OnRlc3Rpbmc6
OmludGVybmFsOjpIYXNOZXdGYXRhbEZhaWx1cmVIZWxwZXIgZ3Rlc3RfZmF0YWxfZmFpbHVyZV9j
aGVja2VyOyBcCiAgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JF
TE9XXyhzdGF0ZW1lbnQpOyBcCiAgICAgaWYgKGd0ZXN0X2ZhdGFsX2ZhaWx1cmVfY2hlY2tlci5o
YXNfbmV3X2ZhdGFsX2ZhaWx1cmUoKSkgeyBcCi0gICAgICBndGVzdF9tc2cgPSAiRXhwZWN0ZWQ6
ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgZ2VuZXJhdGUgbmV3IGZhdGFsICIgXAotICAgICAgICAg
ICAgICAgICAgImZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZC5cbiIgXAotICAgICAgICAg
ICAgICAgICAgIiAgQWN0dWFsOiBpdCBkb2VzLiI7IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FU
X1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0bm9mYXRhbF8sIF9fTElORV9fKTsgXAogICAgIH0gXAog
ICB9IGVsc2UgXAogICAgIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdG5vZmF0
YWxfLCBfX0xJTkVfXyk6IFwKLSAgICAgIGZhaWwoZ3Rlc3RfbXNnKQorICAgICAgZmFpbCgiRXhw
ZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgZ2VuZXJhdGUgbmV3IGZhdGFsICIgXAorICAg
ICAgICAgICAiZmFpbHVyZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkLlxuIiBcCisgICAgICAgICAg
ICIgIEFjdHVhbDogaXQgZG9lcy4iKQogCiAvLyBFeHBhbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSBj
bGFzcyB0aGF0IGltcGxlbWVudHMgdGhlIGdpdmVuIHRlc3QuCiAjZGVmaW5lIEdURVNUX1RFU1Rf
Q0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXApAQCAtOTA0LDcgKzEyMTcs
NyBAQCBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25h
bWUpIDogcHVibGljIHBhcmVudF9jbGFzcyB7XAogICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRl
c3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpKCkge31cCiAgcHJpdmF0ZTpcCiAgIHZpcnR1YWwgdm9p
ZCBUZXN0Qm9keSgpO1wKLSAgc3RhdGljIDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3Rf
aW5mb187XAorICBzdGF0aWMgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvXyBH
VEVTVF9BVFRSSUJVVEVfVU5VU0VEXztcCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oXAogICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9u
YW1lKSk7XAogfTtcCkBAIC05MTIsNyArMTIyNSw4IEBAIGNsYXNzIEdURVNUX1RFU1RfQ0xBU1Nf
TkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgOiBwdWJsaWMgcGFyZW50X2NsYXNzIHtc
CiA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3Rf
Y2FzZV9uYW1lLCB0ZXN0X25hbWUpXAogICA6OnRlc3RfaW5mb18gPVwKICAgICA6OnRlc3Rpbmc6
OmludGVybmFsOjpNYWtlQW5kUmVnaXN0ZXJUZXN0SW5mbyhcCi0gICAgICAgICN0ZXN0X2Nhc2Vf
bmFtZSwgI3Rlc3RfbmFtZSwgIiIsICIiLCBcCisgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgI3Rl
c3RfbmFtZSwgTlVMTCwgTlVMTCwgXAorICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpDb2Rl
TG9jYXRpb24oX19GSUxFX18sIF9fTElORV9fKSwgXAogICAgICAgICAocGFyZW50X2lkKSwgXAog
ICAgICAgICBwYXJlbnRfY2xhc3M6OlNldFVwVGVzdENhc2UsIFwKICAgICAgICAgcGFyZW50X2Ns
YXNzOjpUZWFyRG93blRlc3RDYXNlLCBcCkBAIC05MjEsMyArMTIzNSw0IEBAIDo6dGVzdGluZzo6
VGVzdEluZm8qIGNvbnN0IEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSlcCiB2b2lkIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSk6OlRlc3RCb2R5KCkKIAogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lO
VEVSTkFMX0dURVNUX0lOVEVSTkFMX0hfCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRy
LmgKaW5kZXggNTQwZWY0Y2Q0NGU3MmI1NTg2NTcwODFhNWYwN2EwZjI4YjNlNDBlMy4uMzYwMjk0
MjIxNzRmMjE1ODQ4NjgxZGIxMTEwYmNkYjIzNTM4YTEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRyLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC1saW5rZWRfcHRyLmgKQEAgLTcxLDcgKzcxLDcgQEAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNp
bmNsdWRlIDxhc3NlcnQuaD4KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQu
aD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKIG5hbWVzcGFjZSB0
ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CkBAIC0xMDUsMjUgKzEwNSwzNSBAQCBjbGFz
cyBsaW5rZWRfcHRyX2ludGVybmFsIHsKICAgLy8gZnJhbWV3b3JrLgogCiAgIC8vIEpvaW4gYW4g
ZXhpc3RpbmcgY2lyY2xlLgotICAvLyBMIDwgZ19saW5rZWRfcHRyX211dGV4Ci0gIHZvaWQgam9p
bihsaW5rZWRfcHRyX2ludGVybmFsIGNvbnN0KiBwdHIpIHsKKyAgdm9pZCBqb2luKGxpbmtlZF9w
dHJfaW50ZXJuYWwgY29uc3QqIHB0cikKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGdfbGlu
a2VkX3B0cl9tdXRleCkgewogICAgIE11dGV4TG9jayBsb2NrKCZnX2xpbmtlZF9wdHJfbXV0ZXgp
OwogCiAgICAgbGlua2VkX3B0cl9pbnRlcm5hbCBjb25zdCogcCA9IHB0cjsKLSAgICB3aGlsZSAo
cC0+bmV4dF8gIT0gcHRyKSBwID0gcC0+bmV4dF87CisgICAgd2hpbGUgKHAtPm5leHRfICE9IHB0
cikgeworICAgICAgYXNzZXJ0KHAtPm5leHRfICE9IHRoaXMgJiYKKyAgICAgICAgICAgICAiVHJ5
aW5nIHRvIGpvaW4oKSBhIGxpbmtlZCByaW5nIHdlIGFyZSBhbHJlYWR5IGluLiAiCisgICAgICAg
ICAgICAgIklzIEdNb2NrIHRocmVhZCBzYWZldHkgZW5hYmxlZD8iKTsKKyAgICAgIHAgPSBwLT5u
ZXh0XzsKKyAgICB9CiAgICAgcC0+bmV4dF8gPSB0aGlzOwogICAgIG5leHRfID0gcHRyOwogICB9
CiAKICAgLy8gTGVhdmUgd2hhdGV2ZXIgY2lyY2xlIHdlJ3JlIHBhcnQgb2YuICBSZXR1cm5zIHRy
dWUgaWYgd2Ugd2VyZSB0aGUKICAgLy8gbGFzdCBtZW1iZXIgb2YgdGhlIGNpcmNsZS4gIE9uY2Ug
dGhpcyBpcyBkb25lLCB5b3UgY2FuIGpvaW4oKSBhbm90aGVyLgotICAvLyBMIDwgZ19saW5rZWRf
cHRyX211dGV4Ci0gIGJvb2wgZGVwYXJ0KCkgeworICBib29sIGRlcGFydCgpCisgICAgICBHVEVT
VF9MT0NLX0VYQ0xVREVEXyhnX2xpbmtlZF9wdHJfbXV0ZXgpIHsKICAgICBNdXRleExvY2sgbG9j
aygmZ19saW5rZWRfcHRyX211dGV4KTsKIAogICAgIGlmIChuZXh0XyA9PSB0aGlzKSByZXR1cm4g
dHJ1ZTsKICAgICBsaW5rZWRfcHRyX2ludGVybmFsIGNvbnN0KiBwID0gbmV4dF87Ci0gICAgd2hp
bGUgKHAtPm5leHRfICE9IHRoaXMpIHAgPSBwLT5uZXh0XzsKKyAgICB3aGlsZSAocC0+bmV4dF8g
IT0gdGhpcykgeworICAgICAgYXNzZXJ0KHAtPm5leHRfICE9IG5leHRfICYmCisgICAgICAgICAg
ICAgIlRyeWluZyB0byBkZXBhcnQoKSBhIGxpbmtlZCByaW5nIHdlIGFyZSBub3QgaW4uICIKKyAg
ICAgICAgICAgICAiSXMgR01vY2sgdGhyZWFkIHNhZmV0eSBlbmFibGVkPyIpOworICAgICAgcCA9
IHAtPm5leHRfOworICAgIH0KICAgICBwLT5uZXh0XyA9IG5leHRfOwogICAgIHJldHVybiBmYWxz
ZTsKICAgfQpAQCAtMTcyLDE1ICsxODIsNiBAQCBjbGFzcyBsaW5rZWRfcHRyIHsKICAgVCogZ2V0
KCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CiAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiB2YWx1ZV87IH0KICAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKnZhbHVlXzsg
fQotICAvLyBSZWxlYXNlIG93bmVyc2hpcCBvZiB0aGUgcG9pbnRlZCBvYmplY3QgYW5kIHJldHVy
bnMgaXQuCi0gIC8vIFNvbGUgb3duZXJzaGlwIGJ5IHRoaXMgbGlua2VkX3B0ciBvYmplY3QgaXMg
cmVxdWlyZWQuCi0gIFQqIHJlbGVhc2UoKSB7Ci0gICAgYm9vbCBsYXN0ID0gbGlua18uZGVwYXJ0
KCk7Ci0gICAgYXNzZXJ0KGxhc3QpOwotICAgIFQqIHYgPSB2YWx1ZV87Ci0gICAgdmFsdWVfID0g
TlVMTDsKLSAgICByZXR1cm4gdjsKLSAgfQogCiAgIGJvb2wgb3BlcmF0b3I9PShUKiBwKSBjb25z
dCB7IHJldHVybiB2YWx1ZV8gPT0gcDsgfQogICBib29sIG9wZXJhdG9yIT0oVCogcCkgY29uc3Qg
eyByZXR1cm4gdmFsdWVfICE9IHA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFy
YW0tdXRpbC1nZW5lcmF0ZWQuaAppbmRleCBhYjRhYjU2NjI1NjQyZDI1NThmZDM4YjE4Y2VkMDZk
MDM1MWVjMWY0Li40ZDFkODFkMjBmZmNhMzJiYThmOTU3N2ZmNWJkMDZiZmUyZGU3NDYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oCkBAIC0x
LDQgKzEsNiBAQAotLy8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgYSBzY3JpcHQuICBETyBO
T1QgRURJVCBCWSBIQU5EISEhCisvLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBjb21tYW5k
OgorLy8gICAgIHB1bXAucHkgZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCisvLyBE
TyBOT1QgRURJVCBCWSBIQU5EISEhCiAKIC8vIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJbmMuCiAv
LyBBbGwgUmlnaHRzIFJlc2VydmVkLgpAQCAtMzgsNyArNDAsNyBAQAogLy8gYW5kIGF0IG1vc3Qg
MTAgYXJndW1lbnRzIGluIENvbWJpbmUuIFBsZWFzZSBjb250YWN0CiAvLyBnb29nbGV0ZXN0ZnJh
bWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20gaWYgeW91IG5lZWQgbW9yZS4KIC8vIFBsZWFzZSBub3Rl
IHRoYXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgdG8gQ29tYmluZSBpcyBsaW1pdGVkCi0vLyBi
eSB0aGUgbWF4aW11bSBhcml0eSBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdHIxOjp0dXBsZSB3
aGljaCBpcworLy8gYnkgdGhlIG1heGltdW0gYXJpdHkgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9m
IHR1cGxlIHdoaWNoIGlzCiAvLyBjdXJyZW50bHkgc2V0IGF0IDEwLgogCiAjaWZuZGVmIEdURVNU
X0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFURURfSF8KQEAg
LTQ3LDggKzQ5LDggQEAKIC8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBkZXBlbmRzIG9uIGd0ZXN0
J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKIC8vICp1bmNvbmRpdGlvbmFsbHkqLiAgVGhl
cmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKIC8vIGluc2lkZSAjaWYgR1RF
U1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KKyNpbmNsdWRl
ICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKIApAQCAtNTgs
OCArNjAsOCBAQCBuYW1lc3BhY2UgdGVzdGluZyB7CiAvLyBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXBh
cmFtLXRlc3QuaC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+CiBpbnRlcm5h
bDo6UGFyYW1HZW5lcmF0b3I8Ci0gICAgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxG
b3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKLSAgICAgICAgRm9yd2FyZEl0
ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKTsKKyAgdHlwZW5hbWUgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4K
K1ZhbHVlc0luKEZvcndhcmRJdGVyYXRvciBiZWdpbiwgRm9yd2FyZEl0ZXJhdG9yIGVuZCk7CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KIGludGVybmFsOjpQYXJhbUdlbmVyYXRv
cjxUPiBWYWx1ZXNJbihjb25zdCBUICgmYXJyYXkpW05dKTsKQEAgLTc3LDcgKzc5LDEwIEBAIGNs
YXNzIFZhbHVlQXJyYXkxIHsKICAgZXhwbGljaXQgVmFsdWVBcnJheTEoVDEgdjEpIDogdjFfKHYx
KSB7fQogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsgcmV0dXJuIFZhbHVlc0luKCZ2MV8sICZ2MV8gKyAxKTsgfQorICBvcGVy
YXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7
c3RhdGljX2Nhc3Q8VD4odjFfKX07CisgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKKyAgfQog
CiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3Vw
cG9ydGVkLgpAQCAtOTMsNyArOTgsNyBAQCBjbGFzcyBWYWx1ZUFycmF5MiB7CiAKICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qgewot
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyX307CisgICAgY29uc3QgVCBhcnJheVtdID0g
e3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyl9OwogICAgIHJldHVybiBW
YWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTEyLDcgKzExNyw4IEBAIGNsYXNzIFZhbHVlQXJy
YXkzIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M199Owor
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxU
Pih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pfTsKICAgICByZXR1cm4gVmFsdWVz
SW4oYXJyYXkpOwogICB9CiAKQEAgLTEzMyw3ICsxMzksOCBAQCBjbGFzcyBWYWx1ZUFycmF5NCB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF99Owor
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxU
Pih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8p
fTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTE1NSw3ICsxNjIsOCBA
QCBjbGFzcyBWYWx1ZUFycmF5NSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJh
dG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2
MV8sIHYyXywgdjNfLCB2NF8sIHY1X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19j
YXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyl9OwogICAgIHJl
dHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTc5LDcgKzE4Nyw5IEBAIGNsYXNzIFZh
bHVlQXJyYXk2IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1H
ZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2
M18sIHY0XywgdjVfLCB2Nl99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxU
Pih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18p
LCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2Nl8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAg
LTIwNCw3ICsyMTQsOSBAQCBjbGFzcyBWYWx1ZUFycmF5NyB7CiAKICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N199OworICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0
aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2Fz
dDxUPih2N18pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTIzMSw3
ICsyNDMsOSBAQCBjbGFzcyBWYWx1ZUFycmF5OCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJy
YXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4X307CisgICAgY29u
c3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRp
Y19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0
PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJh
eSk7CiAgIH0KIApAQCAtMjU5LDcgKzI3MywxMCBAQCBjbGFzcyBWYWx1ZUFycmF5OSB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4o
djFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwg
c3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5
KTsKICAgfQogCkBAIC0yODgsNyArMzA1LDEwIEBAIGNsYXNzIFZhbHVlQXJyYXkxMCB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlfLCB2MTBffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nh
c3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4o
djhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyl9
OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMzE5LDcgKzMzOSwxMCBA
QCBjbGFzcyBWYWx1ZUFycmF5MTEgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVy
YXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7
djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExX307
CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0
PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0
XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0
YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKX07
CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0zNTEsOCArMzc0LDExIEBA
IGNsYXNzIFZhbHVlQXJyYXkxMiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJh
dG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2
MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAot
ICAgICAgICB2MTJffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKX07CiAgICAgcmV0dXJu
IFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0zODYsOCArNDEyLDExIEBAIGNsYXNzIFZhbHVl
QXJyYXkxMyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNf
LCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJf
LCB2MTNffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3Rh
dGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nh
c3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+
KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEz
Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtNDIyLDggKzQ1MSwx
MSBAQCBjbGFzcyBWYWx1ZUFycmF5MTQgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKX07CiAgICAgcmV0
dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC00NTksOCArNDkxLDEyIEBAIGNsYXNzIFZh
bHVlQXJyYXkxNSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFt
R2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywg
djNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2
MTJfLCB2MTNfLCB2MTRfLCB2MTVffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nh
c3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4o
djhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyks
IHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3Rh
dGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MTVfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC00
OTksOCArNTM1LDEyIEBAIGNsYXNzIFZhbHVlQXJyYXkxNiB7CiAKICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywgdjlf
LCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZffTsKKyAg
ICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19j
YXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8
VD4odjE2Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtNTQwLDgg
KzU4MCwxMiBAQCBjbGFzcyBWYWx1ZUFycmF5MTcgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFy
cmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEw
XywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3X307Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNf
Y2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0
PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCkBAIC01ODIsOCArNjI2LDEzIEBAIGNsYXNzIFZhbHVlQXJyYXkxOCB7CiAK
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkg
Y29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1Xywg
djZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRf
LCB2MTVfLCB2MTZfLCB2MTdfLCB2MThffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGlj
X2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8
VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEw
XyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwg
c3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYx
N18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKX07CiAgICAgcmV0dXJuIFZhbHVlc0lu
KGFycmF5KTsKICAgfQogCkBAIC02MjUsOCArNjc0LDEzIEBAIGNsYXNzIFZhbHVlQXJyYXkxOSB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2
MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlffTsKKyAgICBjb25zdCBUIGFycmF5W10g
PSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nh
c3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19j
YXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8
VD4odjE5Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtNjcwLDgg
KzcyNCwxMyBAQCBjbGFzcyBWYWx1ZUFycmF5MjAgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFy
cmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEw
XywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4
XywgdjE5XywgdjIwX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYx
XyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0
YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNf
Y2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0
PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC03MTcs
OCArNzc2LDE0IEBAIGNsYXNzIFZhbHVlQXJyYXkyMSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2
MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2
MThfLCB2MTlfLCB2MjBfLCB2MjFffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nh
c3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4o
djhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyks
IHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3Rh
dGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0
YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC03NjUsOCArODMwLDE0IEBAIGNsYXNz
IFZhbHVlQXJyYXkyMiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYy
XywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAg
ICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2
MjFfLCB2MjJffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0
PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4o
djEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVf
KSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+
KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIy
Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtODE1LDkgKzg4Niwx
NCBAQCBjbGFzcyBWYWx1ZUFycmF5MjMgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5
XywgdjIwXywgdjIxXywgdjIyXywKLSAgICAgICAgdjIzX307CisgICAgY29uc3QgVCBhcnJheVtd
ID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0
YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19j
YXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0
PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC04NjcsOSArOTQzLDE1IEBAIGNsYXNz
IFZhbHVlQXJyYXkyNCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYy
XywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAg
ICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2
MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7
c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGlj
X2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8
VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0
PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4o
djE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjRfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQog
CkBAIC05MjAsOSArMTAwMiwxNSBAQCBjbGFzcyBWYWx1ZUFycmF5MjUgewogCiAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAg
ICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2
OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2
XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0
XywgdjI1X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYx
M18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyks
IHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2
MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8p
LCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0
YXRpY19jYXN0PFQ+KHYyNV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAK
QEAgLTk3NSw5ICsxMDYzLDE1IEBAIGNsYXNzIFZhbHVlQXJyYXkyNiB7CiAKICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4
XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZf
LCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRf
LCB2MjVfLCB2MjZffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8
VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0
PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pfTsKICAgICByZXR1
cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTEwMzIsOSArMTEyNiwxNiBAQCBjbGFzcyBW
YWx1ZUFycmF5MjcgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8s
IHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAg
djEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIx
XywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3X307CisgICAgY29u
c3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRp
Y19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0
PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5
XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxU
Pih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYx
Nl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4Xyks
IHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2
MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8p
LCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3Xyl9Owog
ICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTA5MCw5ICsxMTkxLDE2IEBA
IGNsYXNzIFZhbHVlQXJyYXkyOCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJh
dG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2
MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAot
ICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2
MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2
MjhffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyks
IHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0
YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihh
cnJheSk7CiAgIH0KIApAQCAtMTE0OSw5ICsxMjU3LDE2IEBAIGNsYXNzIFZhbHVlQXJyYXkyOSB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2
MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNf
LAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlffTsKKyAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+
KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2
XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwg
c3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYy
M18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pfTsKICAgICByZXR1cm4gVmFs
dWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTEyMTAsOSArMTMyNSwxNyBAQCBjbGFzcyBWYWx1ZUFy
cmF5MzAgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywg
djRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywg
djEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIy
XywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMw
X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19j
YXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+
KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2Xyks
IHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBz
dGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRp
Y19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0
aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19j
YXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7
CiAgIH0KIApAQCAtMTI3Myw5ICsxMzk2LDE3IEBAIGNsYXNzIFZhbHVlQXJyYXkzMSB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2
MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAg
ICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFffTsKKyAg
ICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19j
YXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8
VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0
PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Mjdf
KSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyl9OwogICAgIHJldHVybiBW
YWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTMzNyw5ICsxNDY4LDE3IEBAIGNsYXNzIFZhbHVl
QXJyYXkzMiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNf
LCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJf
LCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2
MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2
MzBfLCB2MzFfLCB2MzJffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4o
djFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwg
c3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRp
Y19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nh
c3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19j
YXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0
PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4o
djMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkp
OwogICB9CiAKQEAgLTE0MDMsOSArMTU0MiwxOCBAQCBjbGFzcyBWYWx1ZUFycmF5MzMgewogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2
XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0Xywg
djE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAg
ICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMy
XywgdjMzX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYx
M18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyks
IHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2
MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8p
LCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0
YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2Mjlf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBz
dGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyl9OwogICAg
IHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTQ3MCw5ICsxNjE4LDE4IEBAIGNs
YXNzIFZhbHVlQXJyYXkzNCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8s
IHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAg
ICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBf
LCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2Mjhf
LCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRffTsKKyAgICBjb25zdCBUIGFycmF5
W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRp
Y19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nh
c3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19j
YXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8
VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0Xyl9OwogICAgIHJldHVy
biBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTUzOCwxMCArMTY5NSwxOCBAQCBjbGFzcyBW
YWx1ZUFycmF5MzUgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8s
IHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAg
djEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIx
XywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5
XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywKLSAgICAgICAgdjM1X307CisgICAgY29u
c3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRp
Y19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0
PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5
XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxU
Pih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYx
Nl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4Xyks
IHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2
MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8p
LCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0
YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBz
dGF0aWNfY2FzdDxUPih2MzVfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQog
CkBAIC0xNjA5LDEwICsxNzc0LDE5IEBAIGNsYXNzIFZhbHVlQXJyYXkzNiB7CiAKICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qgewot
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18s
IHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2
MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2
MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNf
LCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3Rh
dGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nh
c3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4o
djEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJf
KSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+
KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5
XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYy
Nl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3Rh
dGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCkBAIC0xNjgyLDEwICsxODU2LDE5IEBAIGNsYXNzIFZhbHVlQXJyYXkzNyB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2
MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNf
LAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFf
LCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdffTsKKyAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+
KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2
XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwg
c3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYy
M18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0
YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjM3Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAt
MTc1NiwxMCArMTkzOSwxOSBAQCBjbGFzcyBWYWx1ZUFycmF5MzggewogCiAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBj
b25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8s
IHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2Xywg
djE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0Xywg
djI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0
XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4X307CisgICAgY29uc3QgVCBhcnJheVtd
ID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0
YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19j
YXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0
PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+
KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMw
XyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxU
Pih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYz
N18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
ICAgfQogCkBAIC0xODMxLDEwICsyMDIzLDIwIEBAIGNsYXNzIFZhbHVlQXJyYXkzOSB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2
MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAg
ICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJf
LCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlffTsKKyAg
ICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19j
YXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8
VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0
PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Mjdf
KSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+
KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0
XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwg
c3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzlfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBA
IC0xOTA4LDEwICsyMTEwLDIwIEBAIGNsYXNzIFZhbHVlQXJyYXk0MCB7CiAKICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4
XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZf
LCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRf
LCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2
MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBffTsKKyAgICBj
b25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3Rh
dGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nh
c3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0
PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4o
djE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThf
KSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+
KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1
XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYz
Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0Xyks
IHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyl9OwogICAgIHJldHVybiBWYWx1ZXNJ
bihhcnJheSk7CiAgIH0KIApAQCAtMTk4NywxMCArMjE5OSwyMCBAQCBjbGFzcyBWYWx1ZUFycmF5
NDEgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRf
LCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEz
XywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywg
djIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywg
djMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4Xywg
djM5XywgdjQwXywgdjQxX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+
KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyks
IHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0
aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19j
YXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0
PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2Fz
dDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+
KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMz
XyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxU
Pih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0
MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
ICAgfQogCkBAIC0yMDY3LDEwICsyMjg5LDIxIEBAIGNsYXNzIFZhbHVlQXJyYXk0MiB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2
MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAg
ICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJf
LCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBf
LCB2NDFfLCB2NDJffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8
VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0
PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+
KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMx
XyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwg
c3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYz
OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyks
IHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKX07CiAg
ICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0yMTQ4LDEwICsyMzgxLDIxIEBA
IGNsYXNzIFZhbHVlQXJyYXk0MyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJh
dG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2
MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAot
ICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2
MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2
MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2
MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJfLCB2NDNffTsKKyAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+
KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2
XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwg
c3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYy
M18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0
YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyl9OwogICAg
IHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjIzMSwxMCArMjQ3NSwyMSBAQCBj
bGFzcyBWYWx1ZUFycmF5NDQgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFf
LCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAg
ICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIw
XywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4
XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2
XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0X307CisgICAg
Y29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYy
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0
YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19j
YXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2Fz
dDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+
KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4
XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYy
NV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2
MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8p
LCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0
YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBz
dGF0aWNfY2FzdDxUPih2NDRfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQog
CkBAIC0yMzE1LDEwICsyNTcwLDIyIEBAIGNsYXNzIFZhbHVlQXJyYXk0NSB7CiAKICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qgewot
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18s
IHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2
MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2
MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNf
LCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFf
LCB2NDJfLCB2NDNfLCB2NDRfLCB2NDVffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGlj
X2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8
VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEw
XyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwg
c3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYx
N18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5Xyks
IHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3Rh
dGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0
YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGlj
X2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRp
Y19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nh
c3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2NDVfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
ICAgfQogCkBAIC0yNDAxLDEwICsyNjY4LDIyIEBAIGNsYXNzIFZhbHVlQXJyYXk0NiB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2
MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAg
ICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJf
LCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBf
LCB2NDFfLCB2NDJfLCB2NDNfLCB2NDRfLCB2NDVfLCB2NDZffTsKKyAgICBjb25zdCBUIGFycmF5
W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRp
Y19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nh
c3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19j
YXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8
VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0
PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4o
djM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Mzlf
KSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+
KHY0NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDVfKSwgc3RhdGljX2Nhc3Q8VD4odjQ2
Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjQ4OSwxMSArMjc2
OCwyMiBAQCBjbGFzcyBWYWx1ZUFycmF5NDcgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
ICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5
W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywg
djExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4Xywg
djE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2Xywg
djI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAg
ICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0
XywgdjQ1XywgdjQ2XywKLSAgICAgICAgdjQ3X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYx
OV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyks
IHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2
MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8p
LCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0
YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBz
dGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRp
Y19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBzdGF0
aWNfY2FzdDxUPih2NDdfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBA
IC0yNTc5LDExICsyODY5LDIzIEBAIGNsYXNzIFZhbHVlQXJyYXk0OCB7CiAKICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4
XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZf
LCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRf
LCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2
MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFfLCB2
NDJfLCB2NDNfLCB2NDRfLCB2NDVfLCB2NDZfLCB2NDdfLAotICAgICAgICB2NDhffTsKKyAgICBj
b25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3Rh
dGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nh
c3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0
PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4o
djE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThf
KSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+
KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1
XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYz
Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0Xyks
IHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0
YXRpY19jYXN0PFQ+KHY0NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDVfKSwgc3RhdGlj
X2Nhc3Q8VD4odjQ2XyksIHN0YXRpY19jYXN0PFQ+KHY0N18pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2NDhfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0yNjcw
LDExICsyOTcyLDIzIEBAIGNsYXNzIFZhbHVlQXJyYXk0OSB7CiAKICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywgdjlf
LCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdf
LCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVf
LCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2
MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJfLCB2
NDNfLCB2NDRfLCB2NDVfLCB2NDZfLCB2NDdfLAotICAgICAgICB2NDhfLCB2NDlffTsKKyAgICBj
b25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3Rh
dGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nh
c3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0
PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4o
djE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThf
KSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+
KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1
XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYz
Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0Xyks
IHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0
YXRpY19jYXN0PFQ+KHY0NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDVfKSwgc3RhdGlj
X2Nhc3Q8VD4odjQ2XyksIHN0YXRpY19jYXN0PFQ+KHY0N18pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2NDhfKSwgc3RhdGljX2Nhc3Q8VD4odjQ5Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihh
cnJheSk7CiAgIH0KIApAQCAtMjc2MiwxMSArMzA3NiwyMyBAQCBjbGFzcyBWYWx1ZUFycmF5NTAg
ewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2
NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywg
djE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIz
XywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMx
XywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5
XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0XywgdjQ1XywgdjQ2XywgdjQ3XywKLSAgICAg
ICAgdjQ4XywgdjQ5XywgdjUwX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0
PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
XyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBz
dGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRp
Y19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0
aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19j
YXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNf
Y2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0
PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2Fz
dDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+
KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQy
XyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBzdGF0aWNfY2FzdDxU
Pih2NDdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ4XyksIHN0YXRpY19jYXN0PFQ+KHY0
OV8pLCBzdGF0aWNfY2FzdDxUPih2NTBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
ICAgfQogCkBAIC0yODI2LDcgKzMxNTIsNyBAQCBjbGFzcyBWYWx1ZUFycmF5NTAgewogICBjb25z
dCBUNTAgdjUwXzsKIH07CiAKLSNpZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNf
Q09NQklORQogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIg
Q09ERS4KIC8vCiAvLyBHZW5lcmF0ZXMgdmFsdWVzIGZyb20gdGhlIENhcnRlc2lhbiBwcm9kdWN0
IG9mIHZhbHVlcyBwcm9kdWNlZApAQCAtMjgzNCw5ICszMTYwLDkgQEAgY2xhc3MgVmFsdWVBcnJh
eTUwIHsKIC8vCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgogY2xhc3MgQ2Fy
dGVzaWFuUHJvZHVjdEdlbmVyYXRvcjIKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVy
ZmFjZTwgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyPiA+IHsKKyAgICA6IHB1YmxpYyBQYXJhbUdl
bmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDI+ID4gewogIHB1YmxpYzoK
LSAgdHlwZWRlZiA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDI+IFBhcmFtVHlwZTsKKyAgdHlwZWRl
ZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMj4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1
Y3RHZW5lcmF0b3IyKGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUMj4mIGcyKQpAQCAtMjk0OSw5ICszMjc1LDkgQEAgY2xhc3MgQ2FydGVz
aWFuUHJvZHVjdEdlbmVyYXRvcjIKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDM+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMwotICAgIDog
cHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIs
IFQzPiA+IHsKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5n
Ojp0dXBsZTxUMSwgVDIsIFQzPiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnRyMTo6
dHVwbGU8VDEsIFQyLCBUMz4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8
VDEsIFQyLCBUMz4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IzKGNv
bnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxU
Mj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczKQpAQCAtMzA4MSw5ICszNDA3LDkg
QEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjMKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0PgogY2xhc3MgQ2FydGVz
aWFuUHJvZHVjdEdlbmVyYXRvcjQKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFj
ZTwgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+ID4geworICAgIDogcHVibGljIFBh
cmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiA+
IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+
IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiBQ
YXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQoY29uc3QgUGFyYW1HZW5l
cmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBAIC0zMjMyLDkgKzM1NTgsOSBAQCBjbGFzcyBDYXJ0
ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNAogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1PgogY2xhc3MgQ2FydGVz
aWFuUHJvZHVjdEdlbmVyYXRvcjUKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFj
ZTwgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiA+IHsKKyAgICA6IHB1Ymxp
YyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBU
NCwgVDU+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIs
IFQzLCBUNCwgVDU+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBU
MiwgVDMsIFQ0LCBUNT4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1
KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLApAQCAtMzQwMCwxMCArMzcy
NiwxMCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNQogdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NSwKICAgICB0eXBlbmFtZSBUNj4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2Ci0g
ICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6c3RkOjp0cjE6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwg
Ojp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsCiAgICAgICAgIFQ2PiA+IHsKICBw
dWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
Nj4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNj4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2KGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4m
IGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLApAQCAtMzU4NiwxMCArMzkxMiwxMCBA
QCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNgogdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAg
ICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJh
dG9yNwotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHIxOjp0
dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAorICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9y
SW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCiAgICAg
ICAgIFQ3PiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDc+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjcoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMs
CkBAIC0zNzg5LDEwICs0MTE1LDEwIEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5h
bWUgVDg+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOAotICAgIDogcHVibGljIFBh
cmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LAorICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6
OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCiAgICAgICAgIFQ3LCBUOD4gPiB7CiAgcHVi
bGljOgotICB0eXBlZGVmIDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOD4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdl
bmVyYXRvcjgoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFt
R2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBAIC00MDEx
LDEwICs0MzM3LDEwIEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4CiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LAogICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5
cGVuYW1lIFQ5PgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjkKLSAgICA6IHB1Ymxp
YyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0
aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAogICAgICAgICBUNywgVDgsIFQ5PiA+
IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4LCBUOT4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVw
bGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4gUGFyYW1UeXBlOwogCiAgIENh
cnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAg
ICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxU
Mz4mIGczLApAQCAtNDI1MCwxMCArNDU3NiwxMCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2Vu
ZXJhdG9yOQogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMs
IHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcs
IHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgogY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjEwCi0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8
IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCisgICAgOiBwdWJsaWMg
UGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwKICAgICAgICAgVDcsIFQ4LCBUOSwgVDEwPiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVk
ZWYgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwPiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTA+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yMTAoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBA
IC00NTE1LDggKzQ4NDEsOCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMiB7CiBDYXJ0
ZXNpYW5Qcm9kdWN0SG9sZGVyMihjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9y
MiYgZzIpCiAgICAgICA6IGcxXyhnMSksIGcyXyhnMikge30KICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMj4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0cjE6
OnR1cGxlPFQxLCBUMj4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6
c3RkOjp0cjE6OnR1cGxlPFQxLCBUMj4gPigKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6
dGVzdGluZzo6dHVwbGU8VDEsIFQyPiA+KCkgY29uc3QgeworICAgIHJldHVybiBQYXJhbUdlbmVy
YXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDI+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Q
cm9kdWN0R2VuZXJhdG9yMjxUMSwgVDI+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVy
YXRvcjxUMT4gPihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4g
PihnMl8pKSk7CkBAIC00NTM3LDggKzQ4NjMsOCBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMyhj
b25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgY29uc3QgR2Vu
ZXJhdG9yMyYgZzMpCiAgICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhnMykge30KICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci0gIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzPiA+KCkgY29uc3Qg
ewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBU
Mz4gPigKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQy
LCBUMz4gPigpIGNvbnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6
dHVwbGU8VDEsIFQyLCBUMz4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0
b3IzPFQxLCBUMiwgVDM+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4g
PihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pLApA
QCAtNDU2Miw4ICs0ODg4LDggQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjQoY29uc3QgR2VuZXJh
dG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICAgIGNvbnN0IEdlbmVyYXRvcjMmIGcz
LCBjb25zdCBHZW5lcmF0b3I0JiBnNCkKICAgICAgIDogZzFfKGcxKSwgZzJfKGcyKSwgZzNfKGcz
KSwgZzRfKGc0KSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6
dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1H
ZW5lcmF0b3I8IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiA+KAorICBvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPigpIGNv
bnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQy
LCBUMywgVDQ+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNDxUMSwg
VDIsIFQzLCBUND4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcx
XyksCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyksCkBAIC00
NTg5LDggKzQ5MTUsOCBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNShjb25zdCBHZW5lcmF0b3Ix
JiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgY29uc3QgR2VuZXJhdG9yMyYgZzMsIGNv
bnN0IEdlbmVyYXRvcjQmIGc0LCBjb25zdCBHZW5lcmF0b3I1JiBnNSkKICAgICAgIDogZzFfKGcx
KSwgZzJfKGcyKSwgZzNfKGczKSwgZzRfKGc0KSwgZzVfKGc1KSB7fQogICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1l
IFQ1PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQy
LCBUMywgVDQsIFQ1PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpz
dGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiA+KAorICBvcGVyYXRvciBQYXJhbUdl
bmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+ID4oKSBjb25zdCB7
CisgICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0LCBUNT4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1PFQxLCBU
MiwgVDMsIFQ0LCBUNT4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+
KGcxXyksCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyksCkBA
IC00NjIwLDggKzQ5NDYsOCBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNihjb25zdCBHZW5lcmF0
b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgICA6IGcxXyhnMSksIGcyXyhnMiks
IGczXyhnMyksIGc0XyhnNCksIGc1XyhnNSksIGc2XyhnNikge30KICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NSwKICAgICAgIHR5cGVuYW1lIFQ2PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6
OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4gPigpIGNvbnN0IHsKLSAgICByZXR1
cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDY+ID4oCisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDY+ID4oKSBjb25zdCB7CisgICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9y
PCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+ID4oCiAgICAgICAgIG5l
dyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PigKICAg
ICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKICAgICAgICAgc3Rh
dGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwKQEAgLTQ2NTMsOSArNDk3OSw5IEBA
IENhcnRlc2lhblByb2R1Y3RIb2xkZXI3KGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5l
cmF0b3IyJiBnMiwKICAgICAgIDogZzFfKGcxKSwgZzJfKGcyKSwgZzNfKGczKSwgZzRfKGc0KSwg
ZzVfKGc1KSwgZzZfKGc2KSwgZzdfKGc3KSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgICAg
dHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpz
dGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKKyAgb3BlcmF0b3IgUGFyYW1H
ZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKICAgICAg
IFQ3PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnRyMTo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+ID4oCisgICAgcmV0dXJuIFBhcmFtR2Vu
ZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PiA+KAog
ICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjc8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDc+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8p
LAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pLApAQCAtNDY5
MSw5ICs1MDE3LDkgQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjgoY29uc3QgR2VuZXJhdG9yMSYg
ZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICAgICAgICAgIGc4XyhnOCkge30KICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0
eXBlbmFtZSBUNSwKICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+
Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsCiAgICAgICBUOD4gPigpIGNvbnN0IHsK
LSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOD4gPigKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVz
dGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiA+KAogICAgICAgICBu
ZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjg8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4PigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKICAg
ICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwKQEAgLTQ3MzIsOSAr
NTA1OCw5IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXI5KGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBj
b25zdCBHZW5lcmF0b3IyJiBnMiwKICAgICAgICAgICBnOV8oZzkpIHt9CiAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDUsCiAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBl
bmFtZSBUOT4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0cjE6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8
IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LAogICAgICAg
VDk+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0
dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsCisgICAgcmV0dXJuIFBhcmFtR2Vu
ZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwK
ICAgICAgICAgVDk+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOTxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PigKICAgICAgICAgc3RhdGljX2Nhc3Q8
UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKQEAgLTQ3NzYsMTAgKzUxMDIsMTAgQEAgQ2FydGVz
aWFuUHJvZHVjdEhvbGRlcjEwKGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3Iy
JiBnMiwKICAgICAgICAgICBnOV8oZzkpLCBnMTBfKGcxMCkge30KICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NSwKICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1l
IFQ5LCB0eXBlbmFtZSBUMTA+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIx
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsCi0gICAgICBUOSwgVDEwPiA+
KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnRyMTo6dHVwbGU8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LAotICAgICAgICBUOSwgVDEwPiA+KAorICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LAorICAgICAgVDEwPiA+KCkgY29uc3QgeworICAgIHJldHVybiBQ
YXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LAorICAgICAgICBUMTA+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0
R2VuZXJhdG9yMTA8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwKICAgICAgICAg
ICAgIFQxMD4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcxXyks
CkBAIC00ODEwLDcgKzUxMzYsNyBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMTAoY29uc3QgR2Vu
ZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICBjb25zdCBHZW5lcmF0b3IxMCBn
MTBfOwogfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXIxMAogCi0jZW5kaWYgIC8v
IEdURVNUX0hBU19DT01CSU5FCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQogCiB9ICAv
LyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBh
cmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCmluZGV4
IGJhZWRmYmMyZDdlODM0MWI1YjU1OWQ5Y2UzM2I4ZDg3NDUzZGVkNDIuLjVjN2M0N2FmMGJiMWU4
ODk4NDkyZTA1NDI1ZTQwMzk3YTRkMTJmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQu
aC5wdW1wCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCkBAIC0zOSw3ICszOSw3IEBAICR2
YXIgbWF4dHVwbGUgPSAxMCAgJCQgTWF4aW11bSBudW1iZXIgb2YgQ29tYmluZSBhcmd1bWVudHMg
d2Ugd2FudCB0byBzdXBwb3J0LgogLy8gYW5kIGF0IG1vc3QgJG1heHR1cGxlIGFyZ3VtZW50cyBp
biBDb21iaW5lLiBQbGVhc2UgY29udGFjdAogLy8gZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVn
cm91cHMuY29tIGlmIHlvdSBuZWVkIG1vcmUuCiAvLyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBudW1i
ZXIgb2YgYXJndW1lbnRzIHRvIENvbWJpbmUgaXMgbGltaXRlZAotLy8gYnkgdGhlIG1heGltdW0g
YXJpdHkgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRyMTo6dHVwbGUgd2hpY2ggaXMKKy8vIGJ5
IHRoZSBtYXhpbXVtIGFyaXR5IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0dXBsZSB3aGljaCBp
cwogLy8gY3VycmVudGx5IHNldCBhdCAkbWF4dHVwbGUuCiAKICNpZm5kZWYgR1RFU1RfSU5DTFVE
RV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0dFTkVSQVRFRF9IXwpAQCAtNDgsOCAr
NDgsOCBAQCAkdmFyIG1heHR1cGxlID0gMTAgICQkIE1heGltdW0gbnVtYmVyIG9mIENvbWJpbmUg
YXJndW1lbnRzIHdlIHdhbnQgdG8gc3VwcG9ydC4KIC8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBk
ZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKIC8vICp1bmNvbmRp
dGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKIC8v
IGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcGFyYW0tdXRpbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAjaWYgR1RFU1RfSEFTX1BBUkFN
X1RFU1QKIApAQCAtNTksOCArNTksOCBAQCBuYW1lc3BhY2UgdGVzdGluZyB7CiAvLyBpbmNsdWRl
L2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRl
cmF0b3I+CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ci0gICAgdHlwZW5hbWUgOjpzdGQ6Oml0
ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKLSAg
ICAgICAgRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKTsKKyAgdHlw
ZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0ZXJhdG9y
Pjo6dmFsdWVfdHlwZT4KK1ZhbHVlc0luKEZvcndhcmRJdGVyYXRvciBiZWdpbiwgRm9yd2FyZEl0
ZXJhdG9yIGVuZCk7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KIGludGVybmFs
OjpQYXJhbUdlbmVyYXRvcjxUPiBWYWx1ZXNJbihjb25zdCBUICgmYXJyYXkpW05dKTsKQEAgLTcy
LDMzICs3MiwxOCBAQCBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dHlwZW5hbWUgQ29udGFpbmVy
Ojp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIC8vIFVzZWQg
aW4gdGhlIFZhbHVlcygpIGZ1bmN0aW9uIHRvIHByb3ZpZGUgcG9seW1vcnBoaWMgY2FwYWJpbGl0
aWVzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxPgotY2xhc3MgVmFsdWVBcnJheTEgewotIHB1Ymxp
YzoKLSAgZXhwbGljaXQgVmFsdWVBcnJheTEoVDEgdjEpIDogdjFfKHYxKSB7fQotCi0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsg
cmV0dXJuIFZhbHVlc0luKCZ2MV8sICZ2MV8gKyAxKTsgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8g
aW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJh
dG9yPShjb25zdCBWYWx1ZUFycmF5MSYgb3RoZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsKLX07Ci0K
LSRyYW5nZSBpIDIuLm4KKyRyYW5nZSBpIDEuLm4KICRmb3IgaSBbWwogJHJhbmdlIGogMS4uaQog
CiB0ZW1wbGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIFQkal1dPgogY2xhc3MgVmFsdWVBcnJheSRp
IHsKICBwdWJsaWM6Ci0gIFZhbHVlQXJyYXkkaSgkZm9yIGosIFtbVCRqIHYkal1dKSA6ICRmb3Ig
aiwgW1t2JChqKV8odiRqKV1dIHt9CisgICRpZiBpPT0xIFtbZXhwbGljaXQgXV1WYWx1ZUFycmF5
JGkoJGZvciBqLCBbW1QkaiB2JGpdXSkgOiAkZm9yIGosIFtbdiQoailfKHYkaildXSB7fQogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7JGZvciBqLCBbW3YkKGopX11dfTsKKyAgICBj
b25zdCBUIGFycmF5W10gPSB7JGZvciBqLCBbW3N0YXRpY19jYXN0PFQ+KHYkKGopXyldXX07CiAg
ICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0xMTUsNyArMTAwLDcgQEAgJGZv
ciBqIFtbCiAKIF1dCiAKLSNpZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNfQ09N
QklORQogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09E
RS4KIC8vCiAvLyBHZW5lcmF0ZXMgdmFsdWVzIGZyb20gdGhlIENhcnRlc2lhbiBwcm9kdWN0IG9m
IHZhbHVlcyBwcm9kdWNlZApAQCAtMTI4LDkgKzExMyw5IEBAICRyYW5nZSBrIDIuLmkKIAogdGVt
cGxhdGUgPCRmb3IgaiwgW1t0eXBlbmFtZSBUJGpdXT4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RH
ZW5lcmF0b3IkaQotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6
dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4geworICAgIDogcHVibGljIFBhcmFtR2VuZXJh
dG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4gPiB7CiAgcHVi
bGljOgotICB0eXBlZGVmIDo6c3RkOjp0cjE6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4gUGFyYW1U
eXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8JGZvciBqLCBbW1Qkal1dPiBQYXJhbVR5
cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpKCRmb3IgaiwgW1tjb25zdCBQYXJh
bUdlbmVyYXRvcjxUJGo+JiBnJGpdXSkKICAgICAgIDogJGZvciBqLCBbW2ckKGopXyhnJGopXV0g
e30KQEAgLTI2OSw4ICsyNTQsOCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyJGkgewog
Q2FydGVzaWFuUHJvZHVjdEhvbGRlciRpKCRmb3IgaiwgW1tjb25zdCBHZW5lcmF0b3IkaiYgZyRq
XV0pCiAgICAgICA6ICRmb3IgaiwgW1tnJChqKV8oZyRqKV1dIHt9CiAgIHRlbXBsYXRlIDwkZm9y
IGosIFtbdHlwZW5hbWUgVCRqXV0+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6
dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFt
R2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4oCisgIG9wZXJh
dG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4gPigp
IGNvbnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8JGZv
ciBqLCBbW1Qkal1dPiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRp
PCRmb3IgaiwgW1tUJGpdXT4oCiAkZm9yIGosW1sKIApAQCAtMjkxLDcgKzI3Niw3IEBAICRmb3Ig
aiBbWwogCiBdXQogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCisjIGVuZGlmICAvLyBH
VEVTVF9IQVNfQ09NQklORQogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVz
cGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oCmluZGV4IDBjYmI1
OGMyMWI3Yjg5Y2Q0OGE4ZDFjNWNiNTIwZjMxMTM3NGNkZTIuLjgyY2FiOWIwMjAxYjE5YjdhZmJh
MzkxOTdmN2VhN2Y4YTRhMGIxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5o
CkBAIC0zNCwyMCArMzQsNDUgQEAKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5B
TF9HVEVTVF9QQVJBTV9VVElMX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJO
QUxfR1RFU1RfUEFSQU1fVVRJTF9IXwogCisjaW5jbHVkZSA8Y3R5cGUuaD4KKwogI2luY2x1ZGUg
PGl0ZXJhdG9yPgorI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUg
PHZlY3Rvcj4KIAogLy8gc2NyaXB0cy9mdXNlX2d0ZXN0LnB5IGRlcGVuZHMgb24gZ3Rlc3QncyBv
d24gaGVhZGVyIGJlaW5nICNpbmNsdWRlZAogLy8gKnVuY29uZGl0aW9uYWxseSouICBUaGVyZWZv
cmUgdGhlc2UgI2luY2x1ZGVzIGNhbm5vdCBiZSBtb3ZlZAogLy8gaW5zaWRlICNpZiBHVEVTVF9I
QVNfUEFSQU1fVEVTVC4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5o
PgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaD4KLSNpbmNsdWRl
IDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRf
cHRyLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LXByaW50ZXJzLmgiCiAKICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAogCiBu
YW1lc3BhY2UgdGVzdGluZyB7CisKKy8vIElucHV0IHRvIGEgcGFyYW1ldGVyaXplZCB0ZXN0IG5h
bWUgZ2VuZXJhdG9yLCBkZXNjcmliaW5nIGEgdGVzdCBwYXJhbWV0ZXIuCisvLyBDb25zaXN0cyBv
ZiB0aGUgcGFyYW1ldGVyIHZhbHVlIGFuZCB0aGUgaW50ZWdlciBwYXJhbWV0ZXIgaW5kZXguCit0
ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgorc3RydWN0IFRlc3RQYXJhbUluZm8geworICBUZXN0
UGFyYW1JbmZvKGNvbnN0IFBhcmFtVHlwZSYgYV9wYXJhbSwgc2l6ZV90IGFuX2luZGV4KSA6Cisg
ICAgcGFyYW0oYV9wYXJhbSksCisgICAgaW5kZXgoYW5faW5kZXgpIHt9CisgIFBhcmFtVHlwZSBw
YXJhbTsKKyAgc2l6ZV90IGluZGV4OworfTsKKworLy8gQSBidWlsdGluIHBhcmFtZXRlcml6ZWQg
dGVzdCBuYW1lIGdlbmVyYXRvciB3aGljaCByZXR1cm5zIHRoZSByZXN1bHQgb2YKKy8vIHRlc3Rp
bmc6OlByaW50VG9TdHJpbmcuCitzdHJ1Y3QgUHJpbnRUb1N0cmluZ1BhcmFtTmFtZSB7CisgIHRl
bXBsYXRlIDxjbGFzcyBQYXJhbVR5cGU+CisgIHN0ZDo6c3RyaW5nIG9wZXJhdG9yKCkoY29uc3Qg
VGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+JiBpbmZvKSBjb25zdCB7CisgICAgcmV0dXJuIFByaW50
VG9TdHJpbmcoaW5mby5wYXJhbSk7CisgIH0KK307CisKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAK
IC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCkBA
IC01Nyw3ICs4Miw3IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLyBURVNUX1AgbWFjcm8gaXMg
dXNlZCB0byBkZWZpbmUgdHdvIHRlc3RzIHdpdGggdGhlIHNhbWUgbmFtZQogLy8gYnV0IGluIGRp
ZmZlcmVudCBuYW1lc3BhY2VzLgogR1RFU1RfQVBJXyB2b2lkIFJlcG9ydEludmFsaWRUZXN0Q2Fz
ZVR5cGUoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb24gY29kZV9sb2Nh
dGlvbik7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZT4gY2xhc3MgUGFyYW1HZW5lcmF0b3JJbnRlcmZh
Y2U7CiB0ZW1wbGF0ZSA8dHlwZW5hbWU+IGNsYXNzIFBhcmFtR2VuZXJhdG9yOwpAQCAtMTcxLDcg
KzE5Niw3IEBAIGNsYXNzIFBhcmFtR2VuZXJhdG9yIHsKICAgaXRlcmF0b3IgZW5kKCkgY29uc3Qg
eyByZXR1cm4gaXRlcmF0b3IoaW1wbF8tPkVuZCgpKTsgfQogCiAgcHJpdmF0ZToKLSAgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjxjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxU
PiA+IGltcGxfOworICBsaW5rZWRfcHRyPGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+
ID4gaW1wbF87CiB9OwogCiAvLyBHZW5lcmF0ZXMgdmFsdWVzIGZyb20gYSByYW5nZSBvZiB0d28g
Y29tcGFyYWJsZSB2YWx1ZXMuIENhbiBiZSB1c2VkIHRvCkBAIC0yMDUsNyArMjMwLDcgQEAgY2xh
c3MgUmFuZ2VHZW5lcmF0b3IgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4gewog
ICAgICAgcmV0dXJuIGJhc2VfOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgQWR2YW5jZSgpIHsK
LSAgICAgIHZhbHVlXyA9IHZhbHVlXyArIHN0ZXBfOworICAgICAgdmFsdWVfID0gc3RhdGljX2Nh
c3Q8VD4odmFsdWVfICsgc3RlcF8pOwogICAgICAgaW5kZXhfKys7CiAgICAgfQogICAgIHZpcnR1
YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxUPiogQ2xvbmUoKSBjb25zdCB7CkBAIC0yNDIsNyAr
MjY3LDcgQEAgY2xhc3MgUmFuZ2VHZW5lcmF0b3IgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRl
cmZhY2U8VD4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQmIGVuZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbmNyZW1lbnRUJiBzdGVwKSB7
CiAgICAgaW50IGVuZF9pbmRleCA9IDA7Ci0gICAgZm9yIChUIGkgPSBiZWdpbjsgaSA8IGVuZDsg
aSA9IGkgKyBzdGVwKQorICAgIGZvciAoVCBpID0gYmVnaW47IGkgPCBlbmQ7IGkgPSBzdGF0aWNf
Y2FzdDxUPihpICsgc3RlcCkpCiAgICAgICBlbmRfaW5kZXgrKzsKICAgICByZXR1cm4gZW5kX2lu
ZGV4OwogICB9CkBAIC0yODUsNyArMzEwLDcgQEAgY2xhc3MgVmFsdWVzSW5JdGVyYXRvclJhbmdl
R2VuZXJhdG9yIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+IHsKICAgIHB1Ymxp
YzoKICAgICBJdGVyYXRvcihjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiogYmFzZSwK
ICAgICAgICAgICAgICB0eXBlbmFtZSBDb250YWluZXJUeXBlOjpjb25zdF9pdGVyYXRvciBpdGVy
YXRvcikKLSAgICAgICAgOiAgYmFzZV8oYmFzZSksIGl0ZXJhdG9yXyhpdGVyYXRvcikge30KKyAg
ICAgICAgOiBiYXNlXyhiYXNlKSwgaXRlcmF0b3JfKGl0ZXJhdG9yKSB7fQogICAgIHZpcnR1YWwg
fkl0ZXJhdG9yKCkge30KIAogICAgIHZpcnR1YWwgY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZh
Y2U8VD4qIEJhc2VHZW5lcmF0b3IoKSBjb25zdCB7CkBAIC0zNDYsNiArMzcxLDM3IEBAIGNsYXNz
IFZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvciA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvcklu
dGVyZmFjZTxUPiB7CiAKIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJ
TiBVU0VSIENPREUuCiAvLworLy8gRGVmYXVsdCBwYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSBnZW5l
cmF0b3IsIHJldHVybnMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUKKy8vIGludGVnZXIgdGVzdCBw
YXJhbWV0ZXIgaW5kZXguCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgorc3RkOjpzdHJpbmcg
RGVmYXVsdFBhcmFtTmFtZShjb25zdCBUZXN0UGFyYW1JbmZvPFBhcmFtVHlwZT4mIGluZm8pIHsK
KyAgTWVzc2FnZSBuYW1lX3N0cmVhbTsKKyAgbmFtZV9zdHJlYW0gPDwgaW5mby5pbmRleDsKKyAg
cmV0dXJuIG5hbWVfc3RyZWFtLkdldFN0cmluZygpOworfQorCisvLyBJTlRFUk5BTCBJTVBMRU1F
TlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgorLy8KKy8vIFBhcmFtZXRlcml6ZWQg
dGVzdCBuYW1lIG92ZXJsb2FkIGhlbHBlcnMsIHdoaWNoIGhlbHAgdGhlCisvLyBJTlNUQU5USUFU
RV9URVNUX0NBU0VfUCBtYWNybyBjaG9vc2UgYmV0d2VlbiB0aGUgZGVmYXVsdCBwYXJhbWV0ZXJp
emVkCisvLyB0ZXN0IG5hbWUgZ2VuZXJhdG9yIGFuZCB1c2VyIHBhcmFtIG5hbWUgZ2VuZXJhdG9y
LgordGVtcGxhdGUgPGNsYXNzIFBhcmFtVHlwZSwgY2xhc3MgUGFyYW1OYW1lR2VuRnVuY3Rvcj4K
K1BhcmFtTmFtZUdlbkZ1bmN0b3IgR2V0UGFyYW1OYW1lR2VuKFBhcmFtTmFtZUdlbkZ1bmN0b3Ig
ZnVuYykgeworICByZXR1cm4gZnVuYzsKK30KKwordGVtcGxhdGUgPGNsYXNzIFBhcmFtVHlwZT4K
K3N0cnVjdCBQYXJhbU5hbWVHZW5GdW5jIHsKKyAgdHlwZWRlZiBzdGQ6OnN0cmluZyBUeXBlKGNv
bnN0IFRlc3RQYXJhbUluZm88UGFyYW1UeXBlPiYpOworfTsKKwordGVtcGxhdGUgPGNsYXNzIFBh
cmFtVHlwZT4KK3R5cGVuYW1lIFBhcmFtTmFtZUdlbkZ1bmM8UGFyYW1UeXBlPjo6VHlwZSAqR2V0
UGFyYW1OYW1lR2VuKCkgeworICByZXR1cm4gRGVmYXVsdFBhcmFtTmFtZTsKK30KKworLy8gSU5U
RVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KKy8vCiAvLyBT
dG9yZXMgYSBwYXJhbWV0ZXIgdmFsdWUgYW5kIGxhdGVyIGNyZWF0ZXMgdGVzdHMgcGFyYW1ldGVy
aXplZCB3aXRoIHRoYXQKIC8vIHZhbHVlLgogdGVtcGxhdGUgPGNsYXNzIFRlc3RDbGFzcz4KQEAg
LTQxNiw3ICs0NzIsNyBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvQmFzZSB7CiAg
IHZpcnR1YWwgflBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9CYXNlKCkge30KIAogICAvLyBCYXNl
IHBhcnQgb2YgdGVzdCBjYXNlIG5hbWUgZm9yIGRpc3BsYXkgcHVycG9zZXMuCi0gIHZpcnR1YWwg
Y29uc3QgU3RyaW5nJiBHZXRUZXN0Q2FzZU5hbWUoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgY29u
c3Qgc3RyaW5nJiBHZXRUZXN0Q2FzZU5hbWUoKSBjb25zdCA9IDA7CiAgIC8vIFRlc3QgY2FzZSBp
ZCB0byB2ZXJpZnkgaWRlbnRpdHkuCiAgIHZpcnR1YWwgVHlwZUlkIEdldFRlc3RDYXNlVHlwZUlk
KCkgY29uc3QgPSAwOwogICAvLyBVbml0VGVzdCBjbGFzcyBpbnZva2VzIHRoaXMgbWV0aG9kIHRv
IHJlZ2lzdGVyIHRlc3RzIGluIHRoaXMKQEAgLTQ0OCwxMiArNTA0LDE0IEBAIGNsYXNzIFBhcmFt
ZXRlcml6ZWRUZXN0Q2FzZUluZm8gOiBwdWJsaWMgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jh
c2UgewogICB0eXBlZGVmIHR5cGVuYW1lIFRlc3RDYXNlOjpQYXJhbVR5cGUgUGFyYW1UeXBlOwog
ICAvLyBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBhcHByb3ByaWF0ZSBn
ZW5lcmF0b3IgdHlwZS4KICAgdHlwZWRlZiBQYXJhbUdlbmVyYXRvcjxQYXJhbVR5cGU+KEdlbmVy
YXRvckNyZWF0aW9uRnVuYykoKTsKKyAgdHlwZWRlZiB0eXBlbmFtZSBQYXJhbU5hbWVHZW5GdW5j
PFBhcmFtVHlwZT46OlR5cGUgUGFyYW1OYW1lR2VuZXJhdG9yRnVuYzsKIAotICBleHBsaWNpdCBQ
YXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvKGNvbnN0IGNoYXIqIG5hbWUpCi0gICAgICA6IHRlc3Rf
Y2FzZV9uYW1lXyhuYW1lKSB7fQorICBleHBsaWNpdCBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZv
KAorICAgICAgY29uc3QgY2hhciogbmFtZSwgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24pCisg
ICAgICA6IHRlc3RfY2FzZV9uYW1lXyhuYW1lKSwgY29kZV9sb2NhdGlvbl8oY29kZV9sb2NhdGlv
bikge30KIAogICAvLyBUZXN0IGNhc2UgYmFzZSBuYW1lIGZvciBkaXNwbGF5IHB1cnBvc2VzLgot
ICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgR2V0VGVzdENhc2VOYW1lKCkgY29uc3QgeyByZXR1cm4g
dGVzdF9jYXNlX25hbWVfOyB9CisgIHZpcnR1YWwgY29uc3Qgc3RyaW5nJiBHZXRUZXN0Q2FzZU5h
bWUoKSBjb25zdCB7IHJldHVybiB0ZXN0X2Nhc2VfbmFtZV87IH0KICAgLy8gVGVzdCBjYXNlIGlk
IHRvIHZlcmlmeSBpZGVudGl0eS4KICAgdmlydHVhbCBUeXBlSWQgR2V0VGVzdENhc2VUeXBlSWQo
KSBjb25zdCB7IHJldHVybiBHZXRUeXBlSWQ8VGVzdENhc2U+KCk7IH0KICAgLy8gVEVTVF9QIG1h
Y3JvIHVzZXMgQWRkVGVzdFBhdHRlcm4oKSB0byByZWNvcmQgaW5mb3JtYXRpb24KQEAgLTQ3MSwx
MSArNTI5LDEzIEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8gOiBwdWJsaWMgUGFy
YW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UgewogICB9CiAgIC8vIElOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QIG1hY3JvIHVzZXMgQWRkR2VuZXJhdG9yKCkgdG8gcmVjb3JkIGluZm9ybWF0aW9uCiAg
IC8vIGFib3V0IGEgZ2VuZXJhdG9yLgotICBpbnQgQWRkVGVzdENhc2VJbnN0YW50aWF0aW9uKGNv
bnN0IGNoYXIqIGluc3RhbnRpYXRpb25fbmFtZSwKKyAgaW50IEFkZFRlc3RDYXNlSW5zdGFudGlh
dGlvbihjb25zdCBzdHJpbmcmIGluc3RhbnRpYXRpb25fbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHZW5lcmF0b3JDcmVhdGlvbkZ1bmMqIGZ1bmMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLyogZmlsZSAqLywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgLyogbGluZSAqLykgewotICAgIGluc3RhbnRpYXRpb25zXy5w
dXNoX2JhY2soOjpzdGQ6Om1ha2VfcGFpcihpbnN0YW50aWF0aW9uX25hbWUsIGZ1bmMpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbU5hbWVHZW5lcmF0b3JGdW5jKiBuYW1l
X2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZSkgeworICAgIGluc3RhbnRp
YXRpb25zXy5wdXNoX2JhY2soCisgICAgICAgIEluc3RhbnRpYXRpb25JbmZvKGluc3RhbnRpYXRp
b25fbmFtZSwgZnVuYywgbmFtZV9mdW5jLCBmaWxlLCBsaW5lKSk7CiAgICAgcmV0dXJuIDA7ICAv
LyBSZXR1cm4gdmFsdWUgdXNlZCBvbmx5IHRvIHJ1biB0aGlzIG1ldGhvZCBpbiBuYW1lc3BhY2Ug
c2NvcGUuCiAgIH0KICAgLy8gVW5pdFRlc3QgY2xhc3MgaW52b2tlcyB0aGlzIG1ldGhvZCB0byBy
ZWdpc3RlciB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZQpAQCAtNDkwLDI2ICs1NTAsNDUgQEAgY2xh
c3MgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbyA6IHB1YmxpYyBQYXJhbWV0ZXJpemVkVGVzdENh
c2VJbmZvQmFzZSB7CiAgICAgICBmb3IgKHR5cGVuYW1lIEluc3RhbnRpYXRpb25Db250YWluZXI6
Oml0ZXJhdG9yIGdlbl9pdCA9CiAgICAgICAgICAgICAgICBpbnN0YW50aWF0aW9uc18uYmVnaW4o
KTsgZ2VuX2l0ICE9IGluc3RhbnRpYXRpb25zXy5lbmQoKTsKICAgICAgICAgICAgICAgICsrZ2Vu
X2l0KSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgaW5zdGFudGlhdGlvbl9uYW1lID0gZ2VuX2l0
LT5maXJzdDsKLSAgICAgICAgUGFyYW1HZW5lcmF0b3I8UGFyYW1UeXBlPiBnZW5lcmF0b3IoKCpn
ZW5faXQtPnNlY29uZCkoKSk7CisgICAgICAgIGNvbnN0IHN0cmluZyYgaW5zdGFudGlhdGlvbl9u
YW1lID0gZ2VuX2l0LT5uYW1lOworICAgICAgICBQYXJhbUdlbmVyYXRvcjxQYXJhbVR5cGU+IGdl
bmVyYXRvcigoKmdlbl9pdC0+Z2VuZXJhdG9yKSgpKTsKKyAgICAgICAgUGFyYW1OYW1lR2VuZXJh
dG9yRnVuYyogbmFtZV9mdW5jID0gZ2VuX2l0LT5uYW1lX2Z1bmM7CisgICAgICAgIGNvbnN0IGNo
YXIqIGZpbGUgPSBnZW5faXQtPmZpbGU7CisgICAgICAgIGludCBsaW5lID0gZ2VuX2l0LT5saW5l
OwogCi0gICAgICAgIE1lc3NhZ2UgdGVzdF9jYXNlX25hbWVfc3RyZWFtOworICAgICAgICBzdHJp
bmcgdGVzdF9jYXNlX25hbWU7CiAgICAgICAgIGlmICggIWluc3RhbnRpYXRpb25fbmFtZS5lbXB0
eSgpICkKLSAgICAgICAgICB0ZXN0X2Nhc2VfbmFtZV9zdHJlYW0gPDwgaW5zdGFudGlhdGlvbl9u
YW1lLmNfc3RyKCkgPDwgIi8iOwotICAgICAgICB0ZXN0X2Nhc2VfbmFtZV9zdHJlYW0gPDwgdGVz
dF9pbmZvLT50ZXN0X2Nhc2VfYmFzZV9uYW1lLmNfc3RyKCk7CisgICAgICAgICAgdGVzdF9jYXNl
X25hbWUgPSBpbnN0YW50aWF0aW9uX25hbWUgKyAiLyI7CisgICAgICAgIHRlc3RfY2FzZV9uYW1l
ICs9IHRlc3RfaW5mby0+dGVzdF9jYXNlX2Jhc2VfbmFtZTsKIAotICAgICAgICBpbnQgaSA9IDA7
CisgICAgICAgIHNpemVfdCBpID0gMDsKKyAgICAgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IHRl
c3RfcGFyYW1fbmFtZXM7CiAgICAgICAgIGZvciAodHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8UGFy
YW1UeXBlPjo6aXRlcmF0b3IgcGFyYW1faXQgPQogICAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
YmVnaW4oKTsKICAgICAgICAgICAgICBwYXJhbV9pdCAhPSBnZW5lcmF0b3IuZW5kKCk7ICsrcGFy
YW1faXQsICsraSkgewogICAgICAgICAgIE1lc3NhZ2UgdGVzdF9uYW1lX3N0cmVhbTsKLSAgICAg
ICAgICB0ZXN0X25hbWVfc3RyZWFtIDw8IHRlc3RfaW5mby0+dGVzdF9iYXNlX25hbWUuY19zdHIo
KSA8PCAiLyIgPDwgaTsKLSAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpNYWtlQW5kUmVn
aXN0ZXJUZXN0SW5mbygKLSAgICAgICAgICAgICAgdGVzdF9jYXNlX25hbWVfc3RyZWFtLkdldFN0
cmluZygpLmNfc3RyKCksCisKKyAgICAgICAgICBzdGQ6OnN0cmluZyBwYXJhbV9uYW1lID0gbmFt
ZV9mdW5jKAorICAgICAgICAgICAgICBUZXN0UGFyYW1JbmZvPFBhcmFtVHlwZT4oKnBhcmFtX2l0
LCBpKSk7CisKKyAgICAgICAgICBHVEVTVF9DSEVDS18oSXNWYWxpZFBhcmFtTmFtZShwYXJhbV9u
YW1lKSkKKyAgICAgICAgICAgICAgPDwgIlBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lICciIDw8IHBh
cmFtX25hbWUKKyAgICAgICAgICAgICAgPDwgIicgaXMgaW52YWxpZCwgaW4gIiA8PCBmaWxlCisg
ICAgICAgICAgICAgIDw8ICIgbGluZSAiIDw8IGxpbmUgPDwgc3RkOjplbmRsOworCisgICAgICAg
ICAgR1RFU1RfQ0hFQ0tfKHRlc3RfcGFyYW1fbmFtZXMuY291bnQocGFyYW1fbmFtZSkgPT0gMCkK
KyAgICAgICAgICAgICAgPDwgIkR1cGxpY2F0ZSBwYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSAnIiA8
PCBwYXJhbV9uYW1lCisgICAgICAgICAgICAgIDw8ICInLCBpbiAiIDw8IGZpbGUgPDwgIiBsaW5l
ICIgPDwgbGluZSA8PCBzdGQ6OmVuZGw7CisKKyAgICAgICAgICB0ZXN0X3BhcmFtX25hbWVzLmlu
c2VydChwYXJhbV9uYW1lKTsKKworICAgICAgICAgIHRlc3RfbmFtZV9zdHJlYW0gPDwgdGVzdF9p
bmZvLT50ZXN0X2Jhc2VfbmFtZSA8PCAiLyIgPDwgcGFyYW1fbmFtZTsKKyAgICAgICAgICBNYWtl
QW5kUmVnaXN0ZXJUZXN0SW5mbygKKyAgICAgICAgICAgICAgdGVzdF9jYXNlX25hbWUuY19zdHIo
KSwKICAgICAgICAgICAgICAgdGVzdF9uYW1lX3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0cigpLAot
ICAgICAgICAgICAgICAiIiwgIC8vIHRlc3RfY2FzZV9jb21tZW50Ci0gICAgICAgICAgICAgICIi
LCAgLy8gY29tbWVudDsgVE9ETyh2bGFkbEBnb29nbGUuY29tKTogcHJvdmlkZSBwYXJhbWV0ZXIg
dmFsdWUKLSAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXByZXNlbnRhdGlvbi4KKyAgICAgICAgICAgICAgTlVMTCwgIC8vIE5vIHR5cGUgcGFy
YW1ldGVyLgorICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKCpwYXJhbV9pdCkuY19zdHIoKSwK
KyAgICAgICAgICAgICAgY29kZV9sb2NhdGlvbl8sCiAgICAgICAgICAgICAgIEdldFRlc3RDYXNl
VHlwZUlkKCksCiAgICAgICAgICAgICAgIFRlc3RDYXNlOjpTZXRVcFRlc3RDYXNlLAogICAgICAg
ICAgICAgICBUZXN0Q2FzZTo6VGVhckRvd25UZXN0Q2FzZSwKQEAgLTUzMCwxNyArNjA5LDUwIEBA
IGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8gOiBwdWJsaWMgUGFyYW1ldGVyaXplZFRl
c3RDYXNlSW5mb0Jhc2UgewogICAgICAgICB0ZXN0X2Jhc2VfbmFtZShhX3Rlc3RfYmFzZV9uYW1l
KSwKICAgICAgICAgdGVzdF9tZXRhX2ZhY3RvcnkoYV90ZXN0X21ldGFfZmFjdG9yeSkge30KIAot
ICAgIGNvbnN0IFN0cmluZyB0ZXN0X2Nhc2VfYmFzZV9uYW1lOwotICAgIGNvbnN0IFN0cmluZyB0
ZXN0X2Jhc2VfbmFtZTsKKyAgICBjb25zdCBzdHJpbmcgdGVzdF9jYXNlX2Jhc2VfbmFtZTsKKyAg
ICBjb25zdCBzdHJpbmcgdGVzdF9iYXNlX25hbWU7CiAgICAgY29uc3Qgc2NvcGVkX3B0cjxUZXN0
TWV0YUZhY3RvcnlCYXNlPFBhcmFtVHlwZT4gPiB0ZXN0X21ldGFfZmFjdG9yeTsKICAgfTsKICAg
dHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGxpbmtlZF9wdHI8VGVzdEluZm8+ID4gVGVzdEluZm9Db250
YWluZXI7Ci0gIC8vIEtlZXBzIHBhaXJzIG9mIDxJbnN0YW50aWF0aW9uIG5hbWUsIFNlcXVlbmNl
IGdlbmVyYXRvciBjcmVhdGlvbiBmdW5jdGlvbj4KLSAgLy8gcmVjZWl2ZWQgZnJvbSBJTlNUQU5U
SUFURV9URVNUX0NBU0VfUCBtYWNyb3MuCi0gIHR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBHZW5lcmF0b3JDcmVhdGlvbkZ1bmMqPiA+Ci0gICAgICBJbnN0YW50aWF0aW9u
Q29udGFpbmVyOworICAvLyBSZWNvcmRzIGRhdGEgcmVjZWl2ZWQgZnJvbSBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUCBtYWNyb3M6CisgIC8vICA8SW5zdGFudGlhdGlvbiBuYW1lLCBTZXF1ZW5jZSBn
ZW5lcmF0b3IgY3JlYXRpb24gZnVuY3Rpb24sCisgIC8vICAgICBOYW1lIGdlbmVyYXRvciBmdW5j
dGlvbiwgU291cmNlIGZpbGUsIFNvdXJjZSBsaW5lPgorICBzdHJ1Y3QgSW5zdGFudGlhdGlvbklu
Zm8geworICAgICAgSW5zdGFudGlhdGlvbkluZm8oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWVfaW4s
CisgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3JDcmVhdGlvbkZ1bmMqIGdlbmVyYXRv
cl9pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtTmFtZUdlbmVyYXRvckZ1bmMqIG5h
bWVfZnVuY19pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGVfaW4s
CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZV9pbikKKyAgICAgICAgICA6IG5hbWUo
bmFtZV9pbiksCisgICAgICAgICAgICBnZW5lcmF0b3IoZ2VuZXJhdG9yX2luKSwKKyAgICAgICAg
ICAgIG5hbWVfZnVuYyhuYW1lX2Z1bmNfaW4pLAorICAgICAgICAgICAgZmlsZShmaWxlX2luKSwK
KyAgICAgICAgICAgIGxpbmUobGluZV9pbikge30KKworICAgICAgc3RkOjpzdHJpbmcgbmFtZTsK
KyAgICAgIEdlbmVyYXRvckNyZWF0aW9uRnVuYyogZ2VuZXJhdG9yOworICAgICAgUGFyYW1OYW1l
R2VuZXJhdG9yRnVuYyogbmFtZV9mdW5jOworICAgICAgY29uc3QgY2hhciogZmlsZTsKKyAgICAg
IGludCBsaW5lOworICB9OworICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8SW5zdGFudGlhdGlvbklu
Zm8+IEluc3RhbnRpYXRpb25Db250YWluZXI7CisKKyAgc3RhdGljIGJvb2wgSXNWYWxpZFBhcmFt
TmFtZShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkgeworICAgIC8vIENoZWNrIGZvciBlbXB0eSBz
dHJpbmcKKyAgICBpZiAobmFtZS5lbXB0eSgpKQorICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gQ2hlY2sgZm9yIGludmFsaWQgY2hhcmFjdGVycworICAgIGZvciAoc3RkOjpzdHJpbmc6OnNp
emVfdHlwZSBpbmRleCA9IDA7IGluZGV4IDwgbmFtZS5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAg
IGlmICghaXNhbG51bShuYW1lW2luZGV4XSkgJiYgbmFtZVtpbmRleF0gIT0gJ18nKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7CisgIH0KIAotICBjb25z
dCBTdHJpbmcgdGVzdF9jYXNlX25hbWVfOworICBjb25zdCBzdHJpbmcgdGVzdF9jYXNlX25hbWVf
OworICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbl87CiAgIFRlc3RJbmZvQ29udGFpbmVyIHRl
c3RzXzsKICAgSW5zdGFudGlhdGlvbkNvbnRhaW5lciBpbnN0YW50aWF0aW9uc187CiAKQEAgLTU2
OCw4ICs2ODAsNyBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSB7CiAgIHRl
bXBsYXRlIDxjbGFzcyBUZXN0Q2FzZT4KICAgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbzxUZXN0
Q2FzZT4qIEdldFRlc3RDYXNlUGF0dGVybkhvbGRlcigKICAgICAgIGNvbnN0IGNoYXIqIHRlc3Rf
Y2FzZV9uYW1lLAotICAgICAgY29uc3QgY2hhciogZmlsZSwKLSAgICAgIGludCBsaW5lKSB7Cisg
ICAgICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbikgewogICAgIFBhcmFtZXRlcml6ZWRUZXN0
Q2FzZUluZm88VGVzdENhc2U+KiB0eXBlZF90ZXN0X2luZm8gPSBOVUxMOwogICAgIGZvciAoVGVz
dENhc2VJbmZvQ29udGFpbmVyOjppdGVyYXRvciBpdCA9IHRlc3RfY2FzZV9pbmZvc18uYmVnaW4o
KTsKICAgICAgICAgIGl0ICE9IHRlc3RfY2FzZV9pbmZvc18uZW5kKCk7ICsraXQpIHsKQEAgLTU3
OCw4ICs2ODksOCBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSB7CiAgICAg
ICAgICAgLy8gQ29tcGxhaW4gYWJvdXQgaW5jb3JyZWN0IHVzYWdlIG9mIEdvb2dsZSBUZXN0IGZh
Y2lsaXRpZXMKICAgICAgICAgICAvLyBhbmQgdGVybWluYXRlIHRoZSBwcm9ncmFtIHNpbmNlIHdl
IGNhbm5vdCBndWFyYW50eSBjb3JyZWN0CiAgICAgICAgICAgLy8gdGVzdCBjYXNlIHNldHVwIGFu
ZCB0ZWFyLWRvd24gaW4gdGhpcyBjYXNlLgotICAgICAgICAgIFJlcG9ydEludmFsaWRUZXN0Q2Fz
ZVR5cGUodGVzdF9jYXNlX25hbWUsICBmaWxlLCBsaW5lKTsKLSAgICAgICAgICBhYm9ydCgpOwor
ICAgICAgICAgIFJlcG9ydEludmFsaWRUZXN0Q2FzZVR5cGUodGVzdF9jYXNlX25hbWUsIGNvZGVf
bG9jYXRpb24pOworICAgICAgICAgIHBvc2l4OjpBYm9ydCgpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UgYXJlIHN1cmUgdGhhdCB0aGUgb2JqZWN0IHdl
IGZvdW5kIGlzIG9mIHRoZSBzYW1lCiAgICAgICAgICAgLy8gdHlwZSB3ZSBhcmUgbG9va2luZyBm
b3IsIHNvIHdlIGRvd25jYXN0IGl0IHRvIHRoYXQgdHlwZQpAQCAtNTkxLDcgKzcwMiw4IEBAIGNs
YXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IHsKICAgICAgIH0KICAgICB9CiAgICAg
aWYgKHR5cGVkX3Rlc3RfaW5mbyA9PSBOVUxMKSB7Ci0gICAgICB0eXBlZF90ZXN0X2luZm8gPSBu
ZXcgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbzxUZXN0Q2FzZT4odGVzdF9jYXNlX25hbWUpOwor
ICAgICAgdHlwZWRfdGVzdF9pbmZvID0gbmV3IFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm88VGVz
dENhc2U+KAorICAgICAgICAgIHRlc3RfY2FzZV9uYW1lLCBjb2RlX2xvY2F0aW9uKTsKICAgICAg
IHRlc3RfY2FzZV9pbmZvc18ucHVzaF9iYWNrKHR5cGVkX3Rlc3RfaW5mbyk7CiAgICAgfQogICAg
IHJldHVybiB0eXBlZF90ZXN0X2luZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LWFyY2guaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43NGFiOTQ5MDU3YzczNGZhNDkxODhlOGQ2YmM0ZTc0YmU5MTBkYzBkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC1wb3J0LWFyY2guaApAQCAtMCwwICsxLDkzIEBACisvLyBDb3B5cmlnaHQgMjAx
NSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gVGhlIEdvb2dsZSBDKysgVGVzdGlu
ZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8KKy8vIFRoaXMgaGVhZGVyIGZpbGUgZGVmaW5l
cyB0aGUgR1RFU1RfT1NfKiBtYWNyby4KKy8vIEl0IGlzIHNlcGFyYXRlIGZyb20gZ3Rlc3QtcG9y
dC5oIHNvIHRoYXQgY3VzdG9tL2d0ZXN0LXBvcnQuaCBjYW4gaW5jbHVkZSBpdC4KKworI2lmbmRl
ZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRfQVJDSF9IXworI2RlZmlu
ZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRfQVJDSF9IXworCisvLyBE
ZXRlcm1pbmVzIHRoZSBwbGF0Zm9ybSBvbiB3aGljaCBHb29nbGUgVGVzdCBpcyBjb21waWxlZC4K
KyNpZmRlZiBfX0NZR1dJTl9fCisjIGRlZmluZSBHVEVTVF9PU19DWUdXSU4gMQorI2VsaWYgZGVm
aW5lZCBfX1NZTUJJQU4zMl9fCisjIGRlZmluZSBHVEVTVF9PU19TWU1CSUFOIDEKKyNlbGlmIGRl
ZmluZWQgX1dJTjMyCisjIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTIDEKKyMgaWZkZWYgX1dJTjMy
X1dDRQorIyAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIDEKKyMgZWxpZiBkZWZpbmVk
KF9fTUlOR1dfXykgfHwgZGVmaW5lZChfX01JTkdXMzJfXykKKyMgIGRlZmluZSBHVEVTVF9PU19X
SU5ET1dTX01JTkdXIDEKKyMgZWxpZiBkZWZpbmVkKFdJTkFQSV9GQU1JTFkpCisjICBpbmNsdWRl
IDx3aW5hcGlmYW1pbHkuaD4KKyMgIGlmIFdJTkFQSV9GQU1JTFlfUEFSVElUSU9OKFdJTkFQSV9Q
QVJUSVRJT05fREVTS1RPUCkKKyMgICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19ERVNLVE9QIDEK
KyMgIGVsaWYgV0lOQVBJX0ZBTUlMWV9QQVJUSVRJT04oV0lOQVBJX1BBUlRJVElPTl9QSE9ORV9B
UFApCisjICAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfUEhPTkUgMQorIyAgZWxpZiBXSU5BUElf
RkFNSUxZX1BBUlRJVElPTihXSU5BUElfUEFSVElUSU9OX0FQUCkKKyMgICBkZWZpbmUgR1RFU1Rf
T1NfV0lORE9XU19SVCAxCisjICBlbHNlCisgICAgLy8gV0lOQVBJX0ZBTUlMWSBkZWZpbmVkIGJ1
dCBubyBrbm93biBwYXJ0aXRpb24gbWF0Y2hlZC4KKyAgICAvLyBEZWZhdWx0IHRvIGRlc2t0b3Au
CisjICAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfREVTS1RPUCAxCisjICBlbmRpZgorIyBlbHNl
CisjICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19ERVNLVE9QIDEKKyMgZW5kaWYgIC8vIF9XSU4z
Ml9XQ0UKKyNlbGlmIGRlZmluZWQgX19BUFBMRV9fCisjIGRlZmluZSBHVEVTVF9PU19NQUMgMQor
IyBpZiBUQVJHRVRfT1NfSVBIT05FCisjICBkZWZpbmUgR1RFU1RfT1NfSU9TIDEKKyMgZW5kaWYK
KyNlbGlmIGRlZmluZWQgX19GcmVlQlNEX18KKyMgZGVmaW5lIEdURVNUX09TX0ZSRUVCU0QgMQor
I2VsaWYgZGVmaW5lZCBfX2xpbnV4X18KKyMgZGVmaW5lIEdURVNUX09TX0xJTlVYIDEKKyMgaWYg
ZGVmaW5lZCBfX0FORFJPSURfXworIyAgZGVmaW5lIEdURVNUX09TX0xJTlVYX0FORFJPSUQgMQor
IyBlbmRpZgorI2VsaWYgZGVmaW5lZCBfX01WU19fCisjIGRlZmluZSBHVEVTVF9PU19aT1MgMQor
I2VsaWYgZGVmaW5lZChfX3N1bikgJiYgZGVmaW5lZChfX1NWUjQpCisjIGRlZmluZSBHVEVTVF9P
U19TT0xBUklTIDEKKyNlbGlmIGRlZmluZWQoX0FJWCkKKyMgZGVmaW5lIEdURVNUX09TX0FJWCAx
CisjZWxpZiBkZWZpbmVkKF9faHB1eCkKKyMgZGVmaW5lIEdURVNUX09TX0hQVVggMQorI2VsaWYg
ZGVmaW5lZCBfX25hdGl2ZV9jbGllbnRfXworIyBkZWZpbmUgR1RFU1RfT1NfTkFDTCAxCisjZWxp
ZiBkZWZpbmVkIF9fT3BlbkJTRF9fCisjIGRlZmluZSBHVEVTVF9PU19PUEVOQlNEIDEKKyNlbGlm
IGRlZmluZWQgX19RTlhfXworIyBkZWZpbmUgR1RFU1RfT1NfUU5YIDEKKyNlbmRpZiAgLy8gX19D
WUdXSU5fXworCisjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1Rf
UE9SVF9BUkNIX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oCmluZGV4IGUyOWZkZTE0MWEzZGQzMjc4
NDVkODEzZWY3YTI1MDA4YzY4OTJkZWEuLjUzMTc4M2VkNDQ2NjNmZDg5MmFiNmM1MmM1MGJmZDdm
M2Y5Y2IyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oCkBAIC0zMCwxNSArMzAsNDMgQEAKIC8v
IEF1dGhvcnM6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAvLwogLy8gTG93LWxldmVs
IHR5cGVzIGFuZCB1dGlsaXRpZXMgZm9yIHBvcnRpbmcgR29vZ2xlIFRlc3QgdG8gdmFyaW91cwot
Ly8gcGxhdGZvcm1zLiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2Uu
ICBETyBOT1QgVVNFCi0vLyBUSEVNIElOIFVTRVIgQ09ERS4KKy8vIHBsYXRmb3Jtcy4gIEFsbCBt
YWNyb3MgZW5kaW5nIHdpdGggXyBhbmQgc3ltYm9scyBkZWZpbmVkIGluIGFuCisvLyBpbnRlcm5h
bCBuYW1lc3BhY2UgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLiAgQ29kZQor
Ly8gb3V0c2lkZSBHb29nbGUgVGVzdCBNVVNUIE5PVCBVU0UgVEhFTSBESVJFQ1RMWS4gIE1hY3Jv
cyB0aGF0IGRvbid0CisvLyBlbmQgd2l0aCBfIGFyZSBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MgcHVi
bGljIEFQSSBhbmQgY2FuIGJlIHVzZWQgYnkKKy8vIGNvZGUgb3V0c2lkZSBHb29nbGUgVGVzdC4K
Ky8vCisvLyBUaGlzIGZpbGUgaXMgZnVuZGFtZW50YWwgdG8gR29vZ2xlIFRlc3QuICBBbGwgb3Ro
ZXIgR29vZ2xlIFRlc3Qgc291cmNlCisvLyBmaWxlcyBhcmUgZXhwZWN0ZWQgdG8gI2luY2x1ZGUg
dGhpcy4gIFRoZXJlZm9yZSwgaXQgY2Fubm90ICNpbmNsdWRlCisvLyBhbnkgb3RoZXIgR29vZ2xl
IFRlc3QgaGVhZGVyLgogCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RF
U1RfUE9SVF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BP
UlRfSF8KIAotLy8gVGhlIHVzZXIgY2FuIGRlZmluZSB0aGUgZm9sbG93aW5nIG1hY3JvcyBpbiB0
aGUgYnVpbGQgc2NyaXB0IHRvCi0vLyBjb250cm9sIEdvb2dsZSBUZXN0J3MgYmVoYXZpb3IuICBJ
ZiB0aGUgdXNlciBkb2Vzbid0IGRlZmluZSBhIG1hY3JvCi0vLyBpbiB0aGlzIGxpc3QsIEdvb2ds
ZSBUZXN0IHdpbGwgZGVmaW5lIGl0LgorLy8gRW52aXJvbm1lbnQtZGVzY3JpYmluZyBtYWNyb3MK
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gR29vZ2xlIFRlc3QgY2Fu
IGJlIHVzZWQgaW4gbWFueSBkaWZmZXJlbnQgZW52aXJvbm1lbnRzLiAgTWFjcm9zIGluCisvLyB0
aGlzIHNlY3Rpb24gdGVsbCBHb29nbGUgVGVzdCB3aGF0IGtpbmQgb2YgZW52aXJvbm1lbnQgaXQg
aXMgYmVpbmcKKy8vIHVzZWQgaW4sIHN1Y2ggdGhhdCBHb29nbGUgVGVzdCBjYW4gcHJvdmlkZSBl
bnZpcm9ubWVudC1zcGVjaWZpYworLy8gZmVhdHVyZXMgYW5kIGltcGxlbWVudGF0aW9ucy4KKy8v
CisvLyBHb29nbGUgVGVzdCB0cmllcyB0byBhdXRvbWF0aWNhbGx5IGRldGVjdCB0aGUgcHJvcGVy
dGllcyBvZiBpdHMKKy8vIGVudmlyb25tZW50LCBzbyB1c2VycyB1c3VhbGx5IGRvbid0IG5lZWQg
dG8gd29ycnkgYWJvdXQgdGhlc2UKKy8vIG1hY3Jvcy4gIEhvd2V2ZXIsIHRoZSBhdXRvbWF0aWMg
ZGV0ZWN0aW9uIGlzIG5vdCBwZXJmZWN0LgorLy8gU29tZXRpbWVzIGl0J3MgbmVjZXNzYXJ5IGZv
ciBhIHVzZXIgdG8gZGVmaW5lIHNvbWUgb2YgdGhlIGZvbGxvd2luZworLy8gbWFjcm9zIGluIHRo
ZSBidWlsZCBzY3JpcHQgdG8gb3ZlcnJpZGUgR29vZ2xlIFRlc3QncyBkZWNpc2lvbnMuCisvLwor
Ly8gSWYgdGhlIHVzZXIgZG9lc24ndCBkZWZpbmUgYSBtYWNybyBpbiB0aGUgbGlzdCwgR29vZ2xl
IFRlc3Qgd2lsbAorLy8gcHJvdmlkZSBhIGRlZmF1bHQgZGVmaW5pdGlvbi4gIEFmdGVyIHRoaXMg
aGVhZGVyIGlzICNpbmNsdWRlZCwgYWxsCisvLyBtYWNyb3MgaW4gdGhpcyBsaXN0IHdpbGwgYmUg
ZGVmaW5lZCB0byBlaXRoZXIgMSBvciAwLgorLy8KKy8vIE5vdGVzIHRvIG1haW50YWluZXJzOgor
Ly8gICAtIEVhY2ggbWFjcm8gaGVyZSBpcyBhIHVzZXItdHdlYWthYmxlIGtub2I7IGRvIG5vdCBn
cm93IHRoZSBsaXN0CisvLyAgICAgbGlnaHRseS4KKy8vICAgLSBVc2UgI2lmIHRvIGtleSBvZmYg
dGhlc2UgbWFjcm9zLiAgRG9uJ3QgdXNlICNpZmRlZiBvciAiI2lmCisvLyAgICAgZGVmaW5lZCgu
Li4pIiwgd2hpY2ggd2lsbCBub3Qgd29yayBhcyB0aGVzZSBtYWNyb3MgYXJlIEFMV0FZUworLy8g
ICAgIGRlZmluZWQuCiAvLwogLy8gICBHVEVTVF9IQVNfQ0xPTkUgICAgICAgICAgLSBEZWZpbmUg
aXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgY2xvbmUoMikKIC8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlLgpAQCAtNTAsNiArNzgsOCBAQAogLy8gICBH
VEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRo
YXQgOjpzdHJpbmcKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZh
aWxhYmxlIChzb21lIHN5c3RlbXMgZGVmaW5lCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDo6d3N0cmluZywgd2hpY2ggaXMgZGlmZmVyZW50IHRvIHN0ZDo6d3N0cmluZykuCisvLyAg
IEdURVNUX0hBU19QT1NJWF9SRSAgICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUg
dGhhdCBQT1NJWCByZWd1bGFyCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJl
c3Npb25zIGFyZS9hcmVuJ3QgYXZhaWxhYmxlLgogLy8gICBHVEVTVF9IQVNfUFRIUkVBRCAgICAg
ICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgPHB0aHJlYWQuaD4KIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlLgogLy8gICBHVEVT
VF9IQVNfUlRUSSAgICAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQg
UlRUSSBpcy9pc24ndApAQCAtNjIsMTAgKzkyLDE2IEBACiAvLyAgIEdURVNUX0hBU19TRUggICAg
ICAgICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUKIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIgc3VwcG9ydHMgTWljcm9zb2Z0J3Mg
IlN0cnVjdHVyZWQKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uIEhh
bmRsaW5nIi4KKy8vICAgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgorLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHdoZXRoZXIg
dGhlCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtIHN1cHBvcnRzIEkv
TyBzdHJlYW0gcmVkaXJlY3Rpb24gdXNpbmcKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZHVwKCkgYW5kIGR1cDIoKS4KIC8vICAgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgIC0gRGVm
aW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB3aGV0aGVyIEdvb2dsZQogLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXN0J3Mgb3duIHRyMSB0dXBsZSBpbXBsZW1lbnRhdGlvbiBzaG91
bGQgYmUKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZC4gIFVudXNlZCB3aGVu
IHRoZSB1c2VyIHNldHMKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfSEFT
X1RSMV9UVVBMRSB0byAwLgorLy8gICBHVEVTVF9MQU5HX0NYWDExICAgICAgICAgLSBEZWZpbmUg
aXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgR29vZ2xlIFRlc3QKKy8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaXMgYnVpbGRpbmcgaW4gQysrMTEvQysrOTggbW9kZS4KIC8vICAgR1RF
U1RfTElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtIERlZmluZSB0byAxIHdoZW4gY29tcGlsaW5nIHRlc3RzIHRoYXQgdXNlCiAvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdvb2dsZSBUZXN0IGFzIGEgc2hhcmVkIGxpYnJhcnkgKGtu
b3duIGFzCkBAIC03NCwyMiArMTEwLDM0IEBACiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtIERlZmluZSB0byAxIHdoZW4gY29tcGlsaW5nIEdvb2dsZSBUZXN0IGl0c2VsZgogLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBhIHNoYXJlZCBsaWJyYXJ5LgogCi0vLyBUaGlz
IGhlYWRlciBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgdXRpbGl0aWVzOgorLy8gUGxhdGZvcm0taW5k
aWNhdGluZyBtYWNyb3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWFj
cm9zIGluZGljYXRpbmcgdGhlIHBsYXRmb3JtIG9uIHdoaWNoIEdvb2dsZSBUZXN0IGlzIGJlaW5n
IHVzZWQKKy8vIChhIG1hY3JvIGlzIGRlZmluZWQgdG8gMSBpZiBjb21waWxlZCBvbiB0aGUgZ2l2
ZW4gcGxhdGZvcm07CisvLyBvdGhlcndpc2UgVU5ERUZJTkVEIC0tIGl0J3MgbmV2ZXIgZGVmaW5l
ZCB0byAwLikuICBHb29nbGUgVGVzdAorLy8gZGVmaW5lcyB0aGVzZSBtYWNyb3MgYXV0b21hdGlj
YWxseS4gIENvZGUgb3V0c2lkZSBHb29nbGUgVGVzdCBNVVNUCisvLyBOT1QgZGVmaW5lIHRoZW0u
CiAvLwotLy8gTWFjcm9zIGluZGljYXRpbmcgdGhlIGN1cnJlbnQgcGxhdGZvcm0gKGRlZmluZWQg
dG8gMSBpZiBjb21waWxlZCBvbgotLy8gdGhlIGdpdmVuIHBsYXRmb3JtOyBvdGhlcndpc2UgdW5k
ZWZpbmVkKToKIC8vICAgR1RFU1RfT1NfQUlYICAgICAgLSBJQk0gQUlYCiAvLyAgIEdURVNUX09T
X0NZR1dJTiAgIC0gQ3lnd2luCi0vLyAgIEdURVNUX09TX0xJTlVYICAgIC0gTGludXgKIC8vICAg
R1RFU1RfT1NfRlJFRUJTRCAgLSBGcmVlQlNECi0vLyAgIEdURVNUX09TX0hVUkQgICAgIC0gR05V
L0h1cmQKKy8vICAgR1RFU1RfT1NfSFBVWCAgICAgLSBIUC1VWAorLy8gICBHVEVTVF9PU19MSU5V
WCAgICAtIExpbnV4CisvLyAgICAgR1RFU1RfT1NfTElOVVhfQU5EUk9JRCAtIEdvb2dsZSBBbmRy
b2lkCiAvLyAgIEdURVNUX09TX01BQyAgICAgIC0gTWFjIE9TIFgKKy8vICAgICBHVEVTVF9PU19J
T1MgICAgLSBpT1MKKy8vICAgR1RFU1RfT1NfTkFDTCAgICAgLSBHb29nbGUgTmF0aXZlIENsaWVu
dCAoTmFDbCkKKy8vICAgR1RFU1RfT1NfT1BFTkJTRCAgLSBPcGVuQlNECisvLyAgIEdURVNUX09T
X1FOWCAgICAgIC0gUU5YCiAvLyAgIEdURVNUX09TX1NPTEFSSVMgIC0gU3VuIFNvbGFyaXMKIC8v
ICAgR1RFU1RfT1NfU1lNQklBTiAgLSBTeW1iaWFuCiAvLyAgIEdURVNUX09TX1dJTkRPV1MgIC0g
V2luZG93cyAoRGVza3RvcCwgTWluR1csIG9yIE1vYmlsZSkKIC8vICAgICBHVEVTVF9PU19XSU5E
T1dTX0RFU0tUT1AgIC0gV2luZG93cyBEZXNrdG9wCiAvLyAgICAgR1RFU1RfT1NfV0lORE9XU19N
SU5HVyAgICAtIE1pbkdXCiAvLyAgICAgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgICAtIFdpbmRv
d3MgTW9iaWxlCisvLyAgICAgR1RFU1RfT1NfV0lORE9XU19QSE9ORSAgICAtIFdpbmRvd3MgUGhv
bmUKKy8vICAgICBHVEVTVF9PU19XSU5ET1dTX1JUICAgICAgIC0gV2luZG93cyBTdG9yZSBBcHAv
V2luUlQKIC8vICAgR1RFU1RfT1NfWk9TICAgICAgLSB6L09TCiAvLwogLy8gQW1vbmcgdGhlIHBs
YXRmb3JtcywgQ3lnd2luLCBMaW51eCwgTWF4IE9TIFgsIGFuZCBXaW5kb3dzIGhhdmUgdGhlCkBA
IC05OSwyMCArMTQ3LDUwIEBACiAvLyBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5j
b20gKHBhdGNoZXMgZm9yIGZpeGluZyB0aGVtIGFyZQogLy8gZXZlbiBtb3JlIHdlbGNvbWUhKS4K
IC8vCi0vLyBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgdGhhdCBub25lIG9mIHRoZSBHVEVTVF9P
U18qIG1hY3JvcyBhcmUgZGVmaW5lZC4KKy8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgbm9uZSBvZiB0
aGUgR1RFU1RfT1NfKiBtYWNyb3MgYXJlIGRlZmluZWQuCisKKy8vIEZlYXR1cmUtaW5kaWNhdGlu
ZyBtYWNyb3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNYWNyb3MgaW5k
aWNhdGluZyB3aGljaCBHb29nbGUgVGVzdCBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlIChhIG1hY3Jv
CisvLyBpcyBkZWZpbmVkIHRvIDEgaWYgdGhlIGNvcnJlc3BvbmRpbmcgZmVhdHVyZSBpcyBzdXBw
b3J0ZWQ7CisvLyBvdGhlcndpc2UgVU5ERUZJTkVEIC0tIGl0J3MgbmV2ZXIgZGVmaW5lZCB0byAw
LikuICBHb29nbGUgVGVzdAorLy8gZGVmaW5lcyB0aGVzZSBtYWNyb3MgYXV0b21hdGljYWxseS4g
IENvZGUgb3V0c2lkZSBHb29nbGUgVGVzdCBNVVNUCisvLyBOT1QgZGVmaW5lIHRoZW0uCisvLwor
Ly8gVGhlc2UgbWFjcm9zIGFyZSBwdWJsaWMgc28gdGhhdCBwb3J0YWJsZSB0ZXN0cyBjYW4gYmUg
d3JpdHRlbi4KKy8vIFN1Y2ggdGVzdHMgdHlwaWNhbGx5IHN1cnJvdW5kIGNvZGUgdXNpbmcgYSBm
ZWF0dXJlIHdpdGggYW4gI2lmCisvLyB3aGljaCBjb250cm9scyB0aGF0IGNvZGUuICBGb3IgZXhh
bXBsZToKKy8vCisvLyAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKy8vICAgRVhQRUNUX0RFQVRI
KERvU29tZXRoaW5nRGVhZGx5KCkpOworLy8gI2VuZGlmCiAvLwotLy8gTWFjcm9zIGluZGljYXRp
bmcgYXZhaWxhYmxlIEdvb2dsZSBUZXN0IGZlYXR1cmVzIChkZWZpbmVkIHRvIDEgaWYKLS8vIHRo
ZSBjb3JyZXNwb25kaW5nIGZlYXR1cmUgaXMgc3VwcG9ydGVkOyBvdGhlcndpc2UgdW5kZWZpbmVk
KToKIC8vICAgR1RFU1RfSEFTX0NPTUJJTkUgICAgICAtIHRoZSBDb21iaW5lKCkgZnVuY3Rpb24g
KGZvciB2YWx1ZS1wYXJhbWV0ZXJpemVkCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0cykKIC8vICAgR1RFU1RfSEFTX0RFQVRIX1RFU1QgICAtIGRlYXRoIHRlc3RzCiAvLyAgIEdU
RVNUX0hBU19QQVJBTV9URVNUICAgLSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzCiAvLyAgIEdU
RVNUX0hBU19UWVBFRF9URVNUICAgLSB0eXBlZCB0ZXN0cwogLy8gICBHVEVTVF9IQVNfVFlQRURf
VEVTVF9QIC0gdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzCi0vLyAgIEdURVNUX1VTRVNfUE9TSVhf
UkUgICAgLSBlbmhhbmNlZCBQT1NJWCByZWdleCBpcyB1c2VkLgorLy8gICBHVEVTVF9JU19USFJF
QURTQUZFICAgIC0gR29vZ2xlIFRlc3QgaXMgdGhyZWFkLXNhZmUuCisvLyAgIEdURVNUX1VTRVNf
UE9TSVhfUkUgICAgLSBlbmhhbmNlZCBQT1NJWCByZWdleCBpcyB1c2VkLiBEbyBub3QgY29uZnVz
ZSB3aXRoCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9IQVNfUE9TSVhfUkUg
KHNlZSBhYm92ZSkgd2hpY2ggdXNlcnMgY2FuCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWZpbmUgdGhlbXNlbHZlcy4KIC8vICAgR1RFU1RfVVNFU19TSU1QTEVfUkUgICAtIG91ciBv
d24gc2ltcGxlIHJlZ2V4IGlzIHVzZWQ7CiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGUgYWJvdmUgdHdvIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCiAvLyAgIEdURVNUX0NBTl9DT01Q
QVJFX05VTEwgLSBhY2NlcHRzIHVudHlwZWQgTlVMTCBpbiBFWFBFQ1RfRVEoKS4KKworLy8gTWlz
YyBwdWJsaWMgbWFjcm9zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyAgIEdURVNUX0ZM
QUcoZmxhZ19uYW1lKSAgLSByZWZlcmVuY2VzIHRoZSB2YXJpYWJsZSBjb3JyZXNwb25kaW5nIHRv
CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZ2l2ZW4gR29vZ2xlIFRlc3QgZmxh
Zy4KKworLy8gSW50ZXJuYWwgdXRpbGl0aWVzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisv
LyBUaGUgZm9sbG93aW5nIG1hY3JvcyBhbmQgdXRpbGl0aWVzIGFyZSBmb3IgR29vZ2xlIFRlc3Qn
cyBJTlRFUk5BTAorLy8gdXNlIG9ubHkuICBDb2RlIG91dHNpZGUgR29vZ2xlIFRlc3QgTVVTVCBO
T1QgVVNFIFRIRU0gRElSRUNUTFkuCiAvLwogLy8gTWFjcm9zIGZvciBiYXNpYyBDKysgY29kaW5n
OgogLy8gICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyAtIGZvciBkaXNhYmxpbmcgYSBn
Y2Mgd2FybmluZy4KQEAgLTEyMSwyNCArMTk5LDMyIEBACiAvLyAgIEdURVNUX0RJU0FMTE9XX0FT
U0lHTl8gICAtIGRpc2FibGVzIG9wZXJhdG9yPS4KIC8vICAgR1RFU1RfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOXyAtIGRpc2FibGVzIGNvcHkgY3RvciBhbmQgb3BlcmF0b3I9LgogLy8gICBHVEVT
VF9NVVNUX1VTRV9SRVNVTFRfICAgLSBkZWNsYXJlcyB0aGF0IGEgZnVuY3Rpb24ncyByZXN1bHQg
bXVzdCBiZSB1c2VkLgorLy8gICBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BVU0hfIC0g
c3RhcnQgY29kZSBzZWN0aW9uIHdoZXJlIE1TVkMgQzQxMjcgaXMKKy8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzZWQgKGNvbnN0YW50IGNvbmRpdGlvbmFs
KS4KKy8vICAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QT1BfICAtIGZpbmlzaCBjb2Rl
IHNlY3Rpb24gd2hlcmUgTVNWQyBDNDEyNworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXMgc3VwcHJlc3NlZC4KKy8vCisvLyBDKysxMSBmZWF0dXJlIHdyYXBwZXJz
OgorLy8KKy8vICAgdGVzdGluZzo6aW50ZXJuYWw6Om1vdmUgIC0gcG9ydGFiaWxpdHkgd3JhcHBl
ciBmb3Igc3RkOjptb3ZlLgogLy8KIC8vIFN5bmNocm9uaXphdGlvbjoKIC8vICAgTXV0ZXgsIE11
dGV4TG9jaywgVGhyZWFkTG9jYWwsIEdldFRocmVhZENvdW50KCkKLS8vICAgICAgICAgICAgICAg
ICAgLSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcy4KLS8vICAgR1RFU1RfSVNfVEhSRUFEU0FG
RSAtIGRlZmluZWQgdG8gMSB0byBpbmRpY2F0ZSB0aGF0IHRoZSBhYm92ZQotLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaGF2ZSByZWFsIGltcGxl
bWVudGF0aW9ucwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIEdvb2dsZSBUZXN0IGlz
IHRocmVhZC1zYWZlOyBvciAwIG90aGVyd2lzZS4KKy8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC0gc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMuCiAvLwogLy8gVGVtcGxhdGUgbWV0YSBw
cm9ncmFtbWluZzoKIC8vICAgaXNfcG9pbnRlciAgICAgLSBhcyBpbiBUUjE7IG5lZWRlZCBvbiBT
eW1iaWFuIGFuZCBJQk0gWEwgQy9DKysgb25seS4KKy8vICAgSXRlcmF0b3JUcmFpdHMgLSBwYXJ0
aWFsIGltcGxlbWVudGF0aW9uIG9mIHN0ZDo6aXRlcmF0b3JfdHJhaXRzLCB3aGljaAorLy8gICAg
ICAgICAgICAgICAgICAgIGlzIG5vdCBhdmFpbGFibGUgaW4gbGliQ3N0ZCB3aGVuIGNvbXBpbGVk
IHdpdGggU3VuIEMrKy4KIC8vCiAvLyBTbWFydCBwb2ludGVyczoKIC8vICAgc2NvcGVkX3B0ciAg
ICAgLSBhcyBpbiBUUjIuCiAvLwogLy8gUmVndWxhciBleHByZXNzaW9uczoKIC8vICAgUkUgICAg
ICAgICAgICAgLSBhIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24gY2xhc3MgdXNpbmcgdGhlIFBP
U0lYCi0vLyAgICAgICAgICAgICAgICAgICAgRXh0ZW5kZWQgUmVndWxhciBFeHByZXNzaW9uIHN5
bnRheC4gIE5vdCBhdmFpbGFibGUgb24KLS8vICAgICAgICAgICAgICAgICAgICBXaW5kb3dzLgor
Ly8gICAgICAgICAgICAgICAgICAgIEV4dGVuZGVkIFJlZ3VsYXIgRXhwcmVzc2lvbiBzeW50YXgg
b24gVU5JWC1saWtlCisvLyAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm1zLCBvciBhIHJlZHVj
ZWQgcmVndWxhciBleGNlcHRpb24gc3ludGF4IG9uCisvLyAgICAgICAgICAgICAgICAgICAgb3Ro
ZXIgcGxhdGZvcm1zLCBpbmNsdWRpbmcgV2luZG93cy4KIC8vCiAvLyBMb2dnaW5nOgogLy8gICBH
VEVTVF9MT0dfKCkgICAtIGxvZ3MgbWVzc2FnZXMgYXQgdGhlIHNwZWNpZmllZCBzZXZlcml0eSBs
ZXZlbC4KQEAgLTE2MCwxMCArMjQ2LDkgQEAKIC8vICAgQmlnZ2VzdEludCAgICAgLSB0aGUgYmln
Z2VzdCBzaWduZWQgaW50ZWdlciB0eXBlLgogLy8KIC8vIENvbW1hbmQtbGluZSB1dGlsaXRpZXM6
Ci0vLyAgIEdURVNUX0ZMQUcoKSAgICAgICAtIHJlZmVyZW5jZXMgYSBmbGFnLgogLy8gICBHVEVT
VF9ERUNMQVJFXyooKSAgLSBkZWNsYXJlcyBhIGZsYWcuCiAvLyAgIEdURVNUX0RFRklORV8qKCkg
ICAtIGRlZmluZXMgYSBmbGFnLgotLy8gICBHZXRBcmd2cygpICAgICAgICAgLSByZXR1cm5zIHRo
ZSBjb21tYW5kIGxpbmUgYXMgYSB2ZWN0b3Igb2Ygc3RyaW5ncy4KKy8vICAgR2V0SW5qZWN0YWJs
ZUFyZ3ZzKCkgLSByZXR1cm5zIHRoZSBjb21tYW5kIGxpbmUgYXMgYSB2ZWN0b3Igb2Ygc3RyaW5n
cy4KIC8vCiAvLyBFbnZpcm9ubWVudCB2YXJpYWJsZSB1dGlsaXRpZXM6CiAvLyAgIEdldEVudigp
ICAgICAgICAgICAgIC0gZ2V0cyB0aGUgdmFsdWUgb2YgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUu
CkBAIC0xNzEsMTUxICsyNTYsMjYyIEBACiAvLyAgIEludDMyRnJvbUdUZXN0RW52KCkgIC0gcGFy
c2VzIGFuIEludDMyIGVudmlyb25tZW50IHZhcmlhYmxlLgogLy8gICBTdHJpbmdGcm9tR1Rlc3RF
bnYoKSAtIHBhcnNlcyBhIHN0cmluZyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KIAotI2luY2x1ZGUg
PHN0ZGRlZi5oPiAgLy8gRm9yIHB0cmRpZmZfdAorI2luY2x1ZGUgPGN0eXBlLmg+ICAgLy8gZm9y
IGlzc3BhY2UsIGV0YworI2luY2x1ZGUgPHN0ZGRlZi5oPiAgLy8gZm9yIHB0cmRpZmZfdAogI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+
CiAjaWZuZGVmIF9XSU4zMl9XQ0UKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgorIyBpbmNsdWRlIDxz
eXMvdHlwZXMuaD4KKyMgaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNlbmRpZiAgLy8gIV9XSU4zMl9X
Q0UKIAorI2lmIGRlZmluZWQgX19BUFBMRV9fCisjIGluY2x1ZGUgPEF2YWlsYWJpbGl0eU1hY3Jv
cy5oPgorIyBpbmNsdWRlIDxUYXJnZXRDb25kaXRpb25hbHMuaD4KKyNlbmRpZgorCisjaW5jbHVk
ZSA8YWxnb3JpdGhtPiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8aW9zdHJlYW0+ICAvLyBOT0xJTlQK
KyNpbmNsdWRlIDxzc3RyZWFtPiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8c3RyaW5nPiAgLy8gTk9M
SU5UCisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+ICAvLyBOT0xJTlQKKwog
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0pTRXhwb3J0TWFjcm9zLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogCi0jaW5jbHVkZSA8aW9zdHJl
YW0+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDxzc3RyZWFtPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8
c3RyaW5nPiAgLy8gTk9MSU5UCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC1h
cmNoLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXBvcnQuaCIKIAot
I2RlZmluZSBHVEVTVF9ERVZfRU1BSUxfICJnb29nbGV0ZXN0ZnJhbWV3b3JrQEBnb29nbGVncm91
cHMuY29tIgotI2RlZmluZSBHVEVTVF9GTEFHX1BSRUZJWF8gImd0ZXN0XyIKLSNkZWZpbmUgR1RF
U1RfRkxBR19QUkVGSVhfREFTSF8gImd0ZXN0LSIKLSNkZWZpbmUgR1RFU1RfRkxBR19QUkVGSVhf
VVBQRVJfICJHVEVTVF8iCi0jZGVmaW5lIEdURVNUX05BTUVfICJHb29nbGUgVGVzdCIKLSNkZWZp
bmUgR1RFU1RfUFJPSkVDVF9VUkxfICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVz
dC8iCisjaWYgIWRlZmluZWQoR1RFU1RfREVWX0VNQUlMXykKKyMgZGVmaW5lIEdURVNUX0RFVl9F
TUFJTF8gImdvb2dsZXRlc3RmcmFtZXdvcmtAQGdvb2dsZWdyb3Vwcy5jb20iCisjIGRlZmluZSBH
VEVTVF9GTEFHX1BSRUZJWF8gImd0ZXN0XyIKKyMgZGVmaW5lIEdURVNUX0ZMQUdfUFJFRklYX0RB
U0hfICJndGVzdC0iCisjIGRlZmluZSBHVEVTVF9GTEFHX1BSRUZJWF9VUFBFUl8gIkdURVNUXyIK
KyMgZGVmaW5lIEdURVNUX05BTUVfICJHb29nbGUgVGVzdCIKKyMgZGVmaW5lIEdURVNUX1BST0pF
Q1RfVVJMXyAiaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0LyIKKyNlbmRpZiAg
Ly8gIWRlZmluZWQoR1RFU1RfREVWX0VNQUlMXykKKworI2lmICFkZWZpbmVkKEdURVNUX0lOSVRf
R09PR0xFX1RFU1RfTkFNRV8pCisjIGRlZmluZSBHVEVTVF9JTklUX0dPT0dMRV9URVNUX05BTUVf
ICJ0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCIKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfSU5J
VF9HT09HTEVfVEVTVF9OQU1FXykKIAogLy8gRGV0ZXJtaW5lcyB0aGUgdmVyc2lvbiBvZiBnY2Mg
dGhhdCBpcyB1c2VkIHRvIGNvbXBpbGUgdGhpcy4KICNpZmRlZiBfX0dOVUNfXwogLy8gNDAzMDIg
bWVhbnMgdmVyc2lvbiA0LjMuMi4KLSNkZWZpbmUgR1RFU1RfR0NDX1ZFUl8gXAorIyBkZWZpbmUg
R1RFU1RfR0NDX1ZFUl8gXAogICAgIChfX0dOVUNfXyoxMDAwMCArIF9fR05VQ19NSU5PUl9fKjEw
MCArIF9fR05VQ19QQVRDSExFVkVMX18pCiAjZW5kaWYgIC8vIF9fR05VQ19fCiAKLS8vIERldGVy
bWluZXMgdGhlIHBsYXRmb3JtIG9uIHdoaWNoIEdvb2dsZSBUZXN0IGlzIGNvbXBpbGVkLgotI2lm
ZGVmIF9fQ1lHV0lOX18KLSNkZWZpbmUgR1RFU1RfT1NfQ1lHV0lOIDEKLSNlbGlmIGRlZmluZWQg
X19TWU1CSUFOMzJfXwotI2RlZmluZSBHVEVTVF9PU19TWU1CSUFOIDEKLSNlbGlmIGRlZmluZWQg
X1dJTjMyCi0jZGVmaW5lIEdURVNUX09TX1dJTkRPV1MgMQotI2lmZGVmIF9XSU4zMl9XQ0UKLSNk
ZWZpbmUgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgMQotI2VsaWYgZGVmaW5lZChfX01JTkdXX18p
IHx8IGRlZmluZWQoX19NSU5HVzMyX18pCi0jZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfTUlOR1cg
MQorLy8gTWFjcm9zIGZvciBkaXNhYmxpbmcgTWljcm9zb2Z0IFZpc3VhbCBDKysgd2FybmluZ3Mu
CisvLworLy8gICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0ODAwIDQzODUpCisv
LyAgIC8qIGNvZGUgdGhhdCB0cmlnZ2VycyB3YXJuaW5ncyBDNDgwMCBhbmQgQzQzODUgKi8KKy8v
ICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCisjaWYgX01TQ19WRVIgPj0gMTUw
MAorIyBkZWZpbmUgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8od2FybmluZ3MpIFwK
KyAgICBfX3ByYWdtYSh3YXJuaW5nKHB1c2gpKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBfX3ByYWdtYSh3YXJuaW5nKGRpc2FibGU6IHdhcm5pbmdzKSkKKyMgZGVmaW5lIEdURVNUX0RJ
U0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAgICAgICAgICBcCisgICAgX19wcmFnbWEod2Fybmlu
Zyhwb3ApKQogI2Vsc2UKLSNkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19ERVNLVE9QIDEKLSNlbmRp
ZiAgLy8gX1dJTjMyX1dDRQotI2VsaWYgZGVmaW5lZCBfX0FQUExFX18KLSNkZWZpbmUgR1RFU1Rf
T1NfTUFDIDEKLSNlbGlmIGRlZmluZWQgX19saW51eF9fCi0jZGVmaW5lIEdURVNUX09TX0xJTlVY
IDEKLSNlbGlmIGRlZmluZWQgX19HTlVfXwotI2RlZmluZSBHVEVTVF9PU19IVVJEIDEKLSNlbGlm
IGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVmaW5l
ZChfX0ZyZWVCU0Rfa2VybmVsX18pCi0jZGVmaW5lIEdURVNUX09TX0ZSRUVCU0QgMQotI2VsaWYg
ZGVmaW5lZCBfX01WU19fCi0jZGVmaW5lIEdURVNUX09TX1pPUyAxCi0jZWxpZiBkZWZpbmVkKF9f
c3VuKSAmJiBkZWZpbmVkKF9fU1ZSNCkKLSNkZWZpbmUgR1RFU1RfT1NfU09MQVJJUyAxCi0jZWxp
ZiBkZWZpbmVkKF9BSVgpCi0jZGVmaW5lIEdURVNUX09TX0FJWCAxCi0jZW5kaWYgIC8vIF9fQ1lH
V0lOX18KLQotI2lmIEdURVNUX09TX0NZR1dJTiB8fCBHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9P
U19NQUMgfHwgR1RFU1RfT1NfU1lNQklBTiB8fCBcCi0gICAgR1RFU1RfT1NfU09MQVJJUyB8fCBH
VEVTVF9PU19BSVggfHwgR1RFU1RfT1NfRlJFRUJTRCB8fCBHVEVTVF9PU19IVVJECisvLyBPbGRl
ciB2ZXJzaW9ucyBvZiBNU1ZDIGRvbid0IGhhdmUgX19wcmFnbWEuCisjIGRlZmluZSBHVEVTVF9E
SVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyh3YXJuaW5ncykKKyMgZGVmaW5lIEdURVNUX0RJU0FC
TEVfTVNDX1dBUk5JTkdTX1BPUF8oKQorI2VuZGlmCisKKyNpZm5kZWYgR1RFU1RfTEFOR19DWFgx
MQorLy8gZ2NjIGFuZCBjbGFuZyBkZWZpbmUgX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18gd2hl
bgorLy8gLXN0ZD17YyxnbnV9Kyt7MHgsMTF9IGlzIHBhc3NlZC4gIFRoZSBDKysxMSBzdGFuZGFy
ZCBzcGVjaWZpZXMgYQorLy8gdmFsdWUgZm9yIF9fY3BsdXNwbHVzLCBhbmQgcmVjZW50IHZlcnNp
b25zIG9mIGNsYW5nLCBnY2MsIGFuZAorLy8gcHJvYmFibHkgb3RoZXIgY29tcGlsZXJzIHNldCB0
aGF0IHRvbyBpbiBDKysxMSBtb2RlLgorIyBpZiBfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXyB8
fCBfX2NwbHVzcGx1cyA+PSAyMDExMDNMCisvLyBDb21waWxpbmcgaW4gYXQgbGVhc3QgQysrMTEg
bW9kZS4KKyMgIGRlZmluZSBHVEVTVF9MQU5HX0NYWDExIDEKKyMgZWxzZQorIyAgZGVmaW5lIEdU
RVNUX0xBTkdfQ1hYMTEgMAorIyBlbmRpZgorI2VuZGlmCisKKy8vIERpc3RpbmN0IGZyb20gQysr
MTEgbGFuZ3VhZ2Ugc3VwcG9ydCwgc29tZSBlbnZpcm9ubWVudHMgZG9uJ3QgcHJvdmlkZQorLy8g
cHJvcGVyIEMrKzExIGxpYnJhcnkgc3VwcG9ydC4gTm90YWJseSwgaXQncyBwb3NzaWJsZSB0byBi
dWlsZCBpbgorLy8gQysrMTEgbW9kZSB3aGVuIHRhcmdldGluZyBNYWMgT1MgWCAxMC42LCB3aGlj
aCBoYXMgYW4gb2xkIGxpYnN0ZGMrKworLy8gd2l0aCBubyBDKysxMSBzdXBwb3J0LgorLy8KKy8v
IGxpYnN0ZGMrKyBoYXMgc3VmZmljaWVudCBDKysxMSBzdXBwb3J0IGFzIG9mIEdDQyA0LjYuMCwg
X19HTElCQ1hYX18KKy8vIDIwMTEwMzI1LCBidXQgbWFpbnRlbmFuY2UgcmVsZWFzZXMgaW4gdGhl
IDQuNCBhbmQgNC41IHNlcmllcyBmb2xsb3dlZAorLy8gdGhpcyBkYXRlLCBzbyBjaGVjayBmb3Ig
dGhvc2UgdmVyc2lvbnMgYnkgdGhlaXIgZGF0ZSBzdGFtcHMuCisvLyBodHRwczovL2djYy5nbnUu
b3JnL29ubGluZWRvY3MvbGlic3RkYysrL21hbnVhbC9hYmkuaHRtbCNhYmkudmVyc2lvbmluZwor
I2lmIEdURVNUX0xBTkdfQ1hYMTEgJiYgXAorICAgICghZGVmaW5lZChfX0dMSUJDWFhfXykgfHwg
KCBcCisgICAgICAgIF9fR0xJQkNYWF9fID49IDIwMTEwMzI1dWwgJiYgIC8qIEdDQyA+PSA0LjYu
MCAqLyBcCisgICAgICAgIC8qIEJsYWNrbGlzdCBvZiBwYXRjaCByZWxlYXNlcyBvZiBvbGRlciBi
cmFuY2hlczogKi8gXAorICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDExMDQxNnVsICYmICAvKiBH
Q0MgNC40LjYgKi8gXAorICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDEyMDMxM3VsICYmICAvKiBH
Q0MgNC40LjcgKi8gXAorICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDExMDQyOHVsICYmICAvKiBH
Q0MgNC41LjMgKi8gXAorICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDEyMDcwMnVsKSkgICAvKiBH
Q0MgNC41LjQgKi8KKyMgZGVmaW5lIEdURVNUX1NURExJQl9DWFgxMSAxCisjZW5kaWYKKworLy8g
T25seSB1c2UgQysrMTEgbGlicmFyeSBmZWF0dXJlcyBpZiB0aGUgbGlicmFyeSBwcm92aWRlcyB0
aGVtLgorI2lmIEdURVNUX1NURExJQl9DWFgxMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9CRUdJ
Tl9BTkRfRU5EXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8gMQorIyBk
ZWZpbmUgR1RFU1RfSEFTX1NURF9GVU5DVElPTl8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9J
TklUSUFMSVpFUl9MSVNUXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX01PVkVfIDEKKyMgZGVm
aW5lIEdURVNUX0hBU19TVERfU0hBUkVEX1BUUl8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9U
WVBFX1RSQUlUU18gMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9VTklRVUVfUFRSXyAxCisjZW5k
aWYKKworLy8gQysrMTEgc3BlY2lmaWVzIHRoYXQgPHR1cGxlPiBwcm92aWRlcyBzdGQ6OnR1cGxl
LgorLy8gU29tZSBwbGF0Zm9ybXMgc3RpbGwgbWlnaHQgbm90IGhhdmUgaXQsIGhvd2V2ZXIuCisj
aWYgR1RFU1RfTEFOR19DWFgxMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9UVVBMRV8gMQorIyBp
ZiBkZWZpbmVkKF9fY2xhbmdfXykKKy8vIEluc3BpcmVkIGJ5IGh0dHA6Ly9jbGFuZy5sbHZtLm9y
Zy9kb2NzL0xhbmd1YWdlRXh0ZW5zaW9ucy5odG1sI19faGFzX2luY2x1ZGUKKyMgIGlmIGRlZmlu
ZWQoX19oYXNfaW5jbHVkZSkgJiYgIV9faGFzX2luY2x1ZGUoPHR1cGxlPikKKyMgICB1bmRlZiBH
VEVTVF9IQVNfU1REX1RVUExFXworIyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQor
Ly8gSW5zcGlyZWQgYnkgYm9vc3QvY29uZmlnL3N0ZGxpYi9kaW5rdW13YXJlLmhwcAorIyAgaWYg
ZGVmaW5lZChfQ1BQTElCX1ZFUikgJiYgX0NQUExJQl9WRVIgPCA1MjAKKyMgICB1bmRlZiBHVEVT
VF9IQVNfU1REX1RVUExFXworIyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9fR0xJQkNYWF9fKQor
Ly8gSW5zcGlyZWQgYnkgYm9vc3QvY29uZmlnL3N0ZGxpYi9saWJzdGRjcHAzLmhwcCwKKy8vIGh0
dHA6Ly9nY2MuZ251Lm9yZy9nY2MtNC4yL2NoYW5nZXMuaHRtbCBhbmQKKy8vIGh0dHA6Ly9nY2Mu
Z251Lm9yZy9vbmxpbmVkb2NzL2xpYnN0ZGMrKy9tYW51YWwvYmswMXB0MDFjaDAxLmh0bWwjbWFu
dWFsLmludHJvLnN0YXR1cy5zdGFuZGFyZC4yMDB4CisjICBpZiBfX0dOVUNfXyA8IDQgfHwgKF9f
R05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCAyKQorIyAgIHVuZGVmIEdURVNUX0hBU19T
VERfVFVQTEVfCisjICBlbmRpZgorIyBlbmRpZgorI2VuZGlmCisKKy8vIEJyaW5ncyBpbiBkZWZp
bml0aW9ucyBmb3IgZnVuY3Rpb25zIHVzZWQgaW4gdGhlIHRlc3Rpbmc6OmludGVybmFsOjpwb3Np
eAorLy8gbmFtZXNwYWNlIChyZWFkLCB3cml0ZSwgY2xvc2UsIGNoZGlyLCBpc2F0dHksIHN0YXQp
LiBXZSBkbyBub3QgY3VycmVudGx5CisvLyB1c2UgdGhlbSBvbiBXaW5kb3dzIE1vYmlsZS4KKyNp
ZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyAgaW5j
bHVkZSA8ZGlyZWN0Lmg+CisjICBpbmNsdWRlIDxpby5oPgorIyBlbmRpZgorLy8gSW4gb3JkZXIg
dG8gYXZvaWQgaGF2aW5nIHRvIGluY2x1ZGUgPHdpbmRvd3MuaD4sIHVzZSBmb3J3YXJkIGRlY2xh
cmF0aW9uCisvLyBhc3N1bWluZyBDUklUSUNBTF9TRUNUSU9OIGlzIGEgdHlwZWRlZiBvZiBfUlRM
X0NSSVRJQ0FMX1NFQ1RJT04uCisvLyBUaGlzIGFzc3VtcHRpb24gaXMgdmVyaWZpZWQgYnkKKy8v
IFdpbmRvd3NUeXBlc1Rlc3QuQ1JJVElDQUxfU0VDVElPTklzX1JUTF9DUklUSUNBTF9TRUNUSU9O
Lgorc3RydWN0IF9SVExfQ1JJVElDQUxfU0VDVElPTjsKKyNlbHNlCisvLyBUaGlzIGFzc3VtZXMg
dGhhdCBub24tV2luZG93cyBPU2VzIHByb3ZpZGUgdW5pc3RkLmguIEZvciBPU2VzIHdoZXJlIHRo
aXMKKy8vIGlzIG5vdCB0aGUgY2FzZSwgd2UgbmVlZCB0byBpbmNsdWRlIGhlYWRlcnMgdGhhdCBw
cm92aWRlIHRoZSBmdW5jdGlvbnMKKy8vIG1lbnRpb25lZCBhYm92ZS4KKyMgaW5jbHVkZSA8dW5p
c3RkLmg+CisjIGluY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9X
UworCisjaWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRAorLy8gVXNlZCB0byBkZWZpbmUgX19BTkRS
T0lEX0FQSV9fIG1hdGNoaW5nIHRoZSB0YXJnZXQgTkRLIEFQSSBsZXZlbC4KKyMgIGluY2x1ZGUg
PGFuZHJvaWQvYXBpLWxldmVsLmg+ICAvLyBOT0xJTlQKKyNlbmRpZgorCisvLyBEZWZpbmVzIHRo
aXMgdG8gdHJ1ZSBpZmYgR29vZ2xlIFRlc3QgY2FuIHVzZSBQT1NJWCByZWd1bGFyIGV4cHJlc3Np
b25zLgorI2lmbmRlZiBHVEVTVF9IQVNfUE9TSVhfUkUKKyMgaWYgR1RFU1RfT1NfTElOVVhfQU5E
Uk9JRAorLy8gT24gQW5kcm9pZCwgPHJlZ2V4Lmg+IGlzIG9ubHkgYXZhaWxhYmxlIHN0YXJ0aW5n
IHdpdGggR2luZ2VyYnJlYWQuCisjICBkZWZpbmUgR1RFU1RfSEFTX1BPU0lYX1JFIChfX0FORFJP
SURfQVBJX18gPj0gOSkKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0hBU19QT1NJWF9SRSAoIUdU
RVNUX09TX1dJTkRPV1MpCisjIGVuZGlmCisjZW5kaWYKKworI2lmIEdURVNUX1VTRVNfUENSRQor
Ly8gVGhlIGFwcHJvcHJpYXRlIGhlYWRlcnMgaGF2ZSBhbHJlYWR5IGJlZW4gaW5jbHVkZWQuCisK
KyNlbGlmIEdURVNUX0hBU19QT1NJWF9SRQogCiAvLyBPbiBzb21lIHBsYXRmb3JtcywgPHJlZ2V4
Lmg+IG5lZWRzIHNvbWVvbmUgdG8gZGVmaW5lIHNpemVfdCwgYW5kCiAvLyB3b24ndCBjb21waWxl
IG90aGVyd2lzZS4gIFdlIGNhbiAjaW5jbHVkZSBpdCBoZXJlIGFzIHdlIGFscmVhZHkKIC8vIGlu
Y2x1ZGVkIDxzdGRsaWIuaD4sIHdoaWNoIGlzIGd1YXJhbnRlZWQgdG8gZGVmaW5lIHNpemVfdCB0
aHJvdWdoCiAvLyA8c3RkZGVmLmg+LgotI2lmIEhBVkUoUkVHRVhfSCkKLSNpbmNsdWRlIDxyZWdl
eC5oPiAgLy8gTk9MSU5UCi0jZGVmaW5lIEdURVNUX1VTRVNfUE9TSVhfUkUgMQotI2Vsc2UKLSNk
ZWZpbmUgR1RFU1RfVVNFU19TSU1QTEVfUkUgMQotI2VuZGlmCi0jaW5jbHVkZSA8c3RyaW5ncy5o
PiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAvLyBOT0xJTlQKLSNpbmNsdWRl
IDx0aW1lLmg+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDx1bmlzdGQuaD4gIC8vIE5PTElOVAorIyBp
bmNsdWRlIDxyZWdleC5oPiAgLy8gTk9MSU5UCiAKKyMgZGVmaW5lIEdURVNUX1VTRVNfUE9TSVhf
UkUgMQogCiAjZWxpZiBHVEVTVF9PU19XSU5ET1dTCiAKLSNpZiAhR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKLSNpbmNsdWRlIDxkaXJlY3QuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPGlvLmg+ICAv
LyBOT0xJTlQKLSNlbmRpZgotCiAvLyA8cmVnZXguaD4gaXMgbm90IGF2YWlsYWJsZSBvbiBXaW5k
b3dzLiAgVXNlIG91ciBvd24gc2ltcGxlIHJlZ2V4CiAvLyBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFk
LgotI2RlZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9SRSAxCisjIGRlZmluZSBHVEVTVF9VU0VTX1NJ
TVBMRV9SRSAxCiAKICNlbHNlCiAKIC8vIDxyZWdleC5oPiBtYXkgbm90IGJlIGF2YWlsYWJsZSBv
biB0aGlzIHBsYXRmb3JtLiAgVXNlIG91ciBvd24KIC8vIHNpbXBsZSByZWdleCBpbXBsZW1lbnRh
dGlvbiBpbnN0ZWFkLgotI2RlZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9SRSAxCisjIGRlZmluZSBH
VEVTVF9VU0VTX1NJTVBMRV9SRSAxCiAKLSNlbmRpZiAgLy8gR1RFU1RfT1NfQ1lHV0lOIHx8IEdU
RVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fAotICAgICAgICAvLyBHVEVTVF9PU19TWU1C
SUFOIHx8IEdURVNUX09TX1NPTEFSSVMgfHwgR1RFU1RfT1NfQUlYIHx8Ci0gICAgICAgIC8vIEdU
RVNUX09TX0ZSRUVCU0QgfHwgR1RFU1RfT1NfSFVSRAorI2VuZGlmICAvLyBHVEVTVF9VU0VTX1BD
UkUKIAogI2lmbmRlZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwogLy8gVGhlIHVzZXIgZGlkbid0IHRl
bGwgdXMgd2hldGhlciBleGNlcHRpb25zIGFyZSBlbmFibGVkLCBzbyB3ZSBuZWVkCiAvLyB0byBm
aWd1cmUgaXQgb3V0LgotI2lmIGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19CT1JMQU5E
Q19fKQorIyBpZiBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykKIC8v
IE1TVkMncyBhbmQgQysrQnVpbGRlcidzIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgU1RMIHVzZSB0
aGUgX0hBU19FWENFUFRJT05TCiAvLyBtYWNybyB0byBlbmFibGUgZXhjZXB0aW9ucywgc28gd2Un
bGwgZG8gdGhlIHNhbWUuCiAvLyBBc3N1bWVzIHRoYXQgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCBi
eSBkZWZhdWx0LgotI2lmbmRlZiBfSEFTX0VYQ0VQVElPTlMKLSNkZWZpbmUgX0hBU19FWENFUFRJ
T05TIDEKLSNlbmRpZiAgLy8gX0hBU19FWENFUFRJT05TCi0jZGVmaW5lIEdURVNUX0hBU19FWENF
UFRJT05TIF9IQVNfRVhDRVBUSU9OUwotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19FWENF
UFRJT05TCisjICBpZm5kZWYgX0hBU19FWENFUFRJT05TCisjICAgZGVmaW5lIF9IQVNfRVhDRVBU
SU9OUyAxCisjICBlbmRpZiAgLy8gX0hBU19FWENFUFRJT05TCisjICBkZWZpbmUgR1RFU1RfSEFT
X0VYQ0VQVElPTlMgX0hBU19FWENFUFRJT05TCisjIGVsaWYgZGVmaW5lZChfX2NsYW5nX18pCisv
LyBjbGFuZyBkZWZpbmVzIF9fRVhDRVBUSU9OUyBpZmYgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCBi
ZWZvcmUgY2xhbmcgMjIwNzE0LAorLy8gYnV0IGlmZiBjbGVhbnVwcyBhcmUgZW5hYmxlZCBhZnRl
ciB0aGF0LiBJbiBPYmotQysrIGZpbGVzLCB0aGVyZSBjYW4gYmUKKy8vIGNsZWFudXBzIGZvciBP
YmpDIGV4Y2VwdGlvbnMgd2hpY2ggYWxzbyBuZWVkIGNsZWFudXBzLCBldmVuIGlmIEMrKyBleGNl
cHRpb25zCisvLyBhcmUgZGlzYWJsZWQuIGNsYW5nIGhhcyBfX2hhc19mZWF0dXJlKGN4eF9leGNl
cHRpb25zKSB3aGljaCBjaGVja3MgZm9yIEMrKworLy8gZXhjZXB0aW9ucyBzdGFydGluZyBhdCBj
bGFuZyByMjA2MzUyLCBidXQgd2hpY2ggY2hlY2tlZCBmb3IgY2xlYW51cHMgcHJpb3IgdG8KKy8v
IHRoYXQuIFRvIHJlbGlhYmx5IGNoZWNrIGZvciBDKysgZXhjZXB0aW9uIGF2YWlsYWJpbGl0eSB3
aXRoIGNsYW5nLCBjaGVjayBmb3IKKy8vIF9fRVhDRVBUSU9OUyAmJiBfX2hhc19mZWF0dXJlKGN4
eF9leGNlcHRpb25zKS4KKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAoX19FWENFUFRJ
T05TICYmIF9faGFzX2ZlYXR1cmUoY3h4X2V4Y2VwdGlvbnMpKQorIyBlbGlmIGRlZmluZWQoX19H
TlVDX18pICYmIF9fRVhDRVBUSU9OUwogLy8gZ2NjIGRlZmluZXMgX19FWENFUFRJT05TIHRvIDEg
aWZmIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQuCi0jZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05T
IDEKLSNlbGlmIGRlZmluZWQoX19TVU5QUk9fQ0MpCisjICBkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQ
VElPTlMgMQorIyBlbGlmIGRlZmluZWQoX19TVU5QUk9fQ0MpCiAvLyBTdW4gUHJvIENDIHN1cHBv
cnRzIGV4Y2VwdGlvbnMuICBIb3dldmVyLCB0aGVyZSBpcyBubyBjb21waWxlLXRpbWUgd2F5IG9m
CiAvLyBkZXRlY3Rpbmcgd2hldGhlciB0aGV5IGFyZSBlbmFibGVkIG9yIG5vdC4gIFRoZXJlZm9y
ZSwgd2UgYXNzdW1lIHRoYXQKIC8vIHRoZXkgYXJlIGVuYWJsZWQgdW5sZXNzIHRoZSB1c2VyIHRl
bGxzIHVzIG90aGVyd2lzZS4KLSNkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMQotI2VsaWYg
ZGVmaW5lZChfX0lCTUNQUF9fKSAmJiBfX0VYQ0VQVElPTlMKKyMgIGRlZmluZSBHVEVTVF9IQVNf
RVhDRVBUSU9OUyAxCisjIGVsaWYgZGVmaW5lZChfX0lCTUNQUF9fKSAmJiBfX0VYQ0VQVElPTlMK
IC8vIHhsQyBkZWZpbmVzIF9fRVhDRVBUSU9OUyB0byAxIGlmZiBleGNlcHRpb25zIGFyZSBlbmFi
bGVkLgotI2RlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCi0jZWxzZQorIyAgZGVmaW5lIEdU
RVNUX0hBU19FWENFUFRJT05TIDEKKyMgZWxpZiBkZWZpbmVkKF9fSFBfYUNDKQorLy8gRXhjZXB0
aW9uIGhhbmRsaW5nIGlzIGluIGVmZmVjdCBieSBkZWZhdWx0IGluIEhQIGFDQyBjb21waWxlci4g
SXQgaGFzIHRvCisvLyBiZSB0dXJuZWQgb2YgYnkgK25vZWggY29tcGlsZXIgb3B0aW9uIGlmIGRl
c2lyZWQuCisjICBkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMQorIyBlbHNlCiAvLyBGb3Ig
b3RoZXIgY29tcGlsZXJzLCB3ZSBhc3N1bWUgZXhjZXB0aW9ucyBhcmUgZGlzYWJsZWQgdG8gYmUK
IC8vIGNvbnNlcnZhdGl2ZS4KLSNkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMAotI2VuZGlm
ICAvLyBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykKKyMgIGRlZmlu
ZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAwCisjIGVuZGlmICAvLyBkZWZpbmVkKF9NU0NfVkVSKSB8
fCBkZWZpbmVkKF9fQk9STEFORENfXykKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMK
IAogI2lmICFkZWZpbmVkKEdURVNUX0hBU19TVERfU1RSSU5HKQogLy8gRXZlbiB0aG91Z2ggd2Ug
ZG9uJ3QgdXNlIHRoaXMgbWFjcm8gYW55IGxvbmdlciwgd2Uga2VlcCBpdCBpbiBjYXNlCiAvLyBz
b21lIGNsaWVudHMgc3RpbGwgZGVwZW5kIG9uIGl0LgotI2RlZmluZSBHVEVTVF9IQVNfU1REX1NU
UklORyAxCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX1NUUklORyAxCiAjZWxpZiAhR1RFU1RfSEFT
X1NURF9TVFJJTkcKIC8vIFRoZSB1c2VyIHRvbGQgdXMgdGhhdCA6OnN0ZDo6c3RyaW5nIGlzbid0
IGF2YWlsYWJsZS4KLSNlcnJvciAiR29vZ2xlIFRlc3QgY2Fubm90IGJlIHVzZWQgd2hlcmUgOjpz
dGQ6OnN0cmluZyBpc24ndCBhdmFpbGFibGUuIgorIyBlcnJvciAiR29vZ2xlIFRlc3QgY2Fubm90
IGJlIHVzZWQgd2hlcmUgOjpzdGQ6OnN0cmluZyBpc24ndCBhdmFpbGFibGUuIgogI2VuZGlmICAv
LyAhZGVmaW5lZChHVEVTVF9IQVNfU1REX1NUUklORykKIAogI2lmbmRlZiBHVEVTVF9IQVNfR0xP
QkFMX1NUUklORwogLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMgd2hldGhlciA6OnN0cmluZyBp
cyBhdmFpbGFibGUsIHNvIHdlIG5lZWQKIC8vIHRvIGZpZ3VyZSBpdCBvdXQuCiAKLSNkZWZpbmUg
R1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgMAorIyBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJ
TkcgMAogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCiAKQEAgLTMyNSwxNyAr
NTIxLDE4IEBACiAvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogdXNlcyBhdXRvY29uZiB0byBkZXRl
Y3Qgd2hldGhlciA6OnN0ZDo6d3N0cmluZwogLy8gICBpcyBhdmFpbGFibGUuCiAKLS8vIEN5Z3dp
biAxLjUgYW5kIGJlbG93IGRvZXNuJ3Qgc3VwcG9ydCA6OnN0ZDo6d3N0cmluZy4KLS8vIEN5Z3dp
biAxLjcgbWlnaHQgYWRkIHdzdHJpbmcgc3VwcG9ydDsgdGhpcyBzaG91bGQgYmUgdXBkYXRlZCB3
aGVuIGNsZWFyLgotLy8gU29sYXJpcycgbGliYysrIGRvZXNuJ3Qgc3VwcG9ydCBpdCBlaXRoZXIu
Ci0jZGVmaW5lIEdURVNUX0hBU19TVERfV1NUUklORyAoIShHVEVTVF9PU19DWUdXSU4gfHwgR1RF
U1RfT1NfU09MQVJJUykpCisvLyBDeWd3aW4gMS43IGFuZCBiZWxvdyBkb2Vzbid0IHN1cHBvcnQg
OjpzdGQ6OndzdHJpbmcuCisvLyBTb2xhcmlzJyBsaWJjKysgZG9lc24ndCBzdXBwb3J0IGl0IGVp
dGhlci4gIEFuZHJvaWQgaGFzCisvLyBubyBzdXBwb3J0IGZvciBpdCBhdCBsZWFzdCBhcyByZWNl
bnQgYXMgRnJveW8gKDIuMikuCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX1dTVFJJTkcgXAorICAg
ICghKEdURVNUX09TX0xJTlVYX0FORFJPSUQgfHwgR1RFU1RfT1NfQ1lHV0lOIHx8IEdURVNUX09T
X1NPTEFSSVMpKQogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORwogCiAjaWZuZGVm
IEdURVNUX0hBU19HTE9CQUxfV1NUUklORwogLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMgd2hl
dGhlciA6OndzdHJpbmcgaXMgYXZhaWxhYmxlLCBzbyB3ZSBuZWVkCiAvLyB0byBmaWd1cmUgaXQg
b3V0LgotI2RlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcgXAorIyBkZWZpbmUgR1RFU1Rf
SEFTX0dMT0JBTF9XU1RSSU5HIFwKICAgICAoR1RFU1RfSEFTX1NURF9XU1RSSU5HICYmIEdURVNU
X0hBU19HTE9CQUxfU1RSSU5HKQogI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcK
IApAQCAtMzQ0LDY0ICs1NDEsMTA0IEBACiAvLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cyB3aGV0
aGVyIFJUVEkgaXMgZW5hYmxlZCwgc28gd2UgbmVlZCB0bwogLy8gZmlndXJlIGl0IG91dC4KIAot
I2lmZGVmIF9NU0NfVkVSCisjIGlmZGVmIF9NU0NfVkVSCiAKLSNpZmRlZiBfQ1BQUlRUSSAgLy8g
TVNWQyBkZWZpbmVzIHRoaXMgbWFjcm8gaWZmIFJUVEkgaXMgZW5hYmxlZC4KLSNkZWZpbmUgR1RF
U1RfSEFTX1JUVEkgMQotI2Vsc2UKLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAotI2VuZGlmCisj
ICBpZmRlZiBfQ1BQUlRUSSAgLy8gTVNWQyBkZWZpbmVzIHRoaXMgbWFjcm8gaWZmIFJUVEkgaXMg
ZW5hYmxlZC4KKyMgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQorIyAgZWxzZQorIyAgIGRlZmlu
ZSBHVEVTVF9IQVNfUlRUSSAwCisjICBlbmRpZgogCiAvLyBTdGFydGluZyB3aXRoIHZlcnNpb24g
NC4zLjIsIGdjYyBkZWZpbmVzIF9fR1hYX1JUVEkgaWZmIFJUVEkgaXMgZW5hYmxlZC4KLSNlbGlm
IGRlZmluZWQoX19HTlVDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSA0MDMwMikKLQotI2lmZGVm
IF9fR1hYX1JUVEkKLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQotI2Vsc2UKLSNkZWZpbmUgR1RF
U1RfSEFTX1JUVEkgMAotI2VuZGlmICAvLyBfX0dYWF9SVFRJCisjIGVsaWYgZGVmaW5lZChfX0dO
VUNfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMzAyKQorCisjICBpZmRlZiBfX0dYWF9SVFRJ
CisvLyBXaGVuIGJ1aWxkaW5nIGFnYWluc3QgU1RMcG9ydCB3aXRoIHRoZSBBbmRyb2lkIE5ESyBh
bmQgd2l0aAorLy8gLWZydHRpIC1mbm8tZXhjZXB0aW9ucywgdGhlIGJ1aWxkIGZhaWxzIGF0IGxp
bmsgdGltZSB3aXRoIHVuZGVmaW5lZAorLy8gcmVmZXJlbmNlcyB0byBfX2N4YV9iYWRfdHlwZWlk
LiBOb3RlIHN1cmUgaWYgU1RMIG9yIHRvb2xjaGFpbiBidWcsCisvLyBzbyBkaXNhYmxlIFJUVEkg
d2hlbiBkZXRlY3RlZC4KKyMgICBpZiBHVEVTVF9PU19MSU5VWF9BTkRST0lEICYmIGRlZmluZWQo
X1NUTFBPUlRfTUFKT1IpICYmIFwKKyAgICAgICAhZGVmaW5lZChfX0VYQ0VQVElPTlMpCisjICAg
IGRlZmluZSBHVEVTVF9IQVNfUlRUSSAwCisjICAgZWxzZQorIyAgICBkZWZpbmUgR1RFU1RfSEFT
X1JUVEkgMQorIyAgIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWF9BTkRST0lEICYmIF9fU1RMUE9S
VF9NQUpPUiAmJiAhX19FWENFUFRJT05TCisjICBlbHNlCisjICAgZGVmaW5lIEdURVNUX0hBU19S
VFRJIDAKKyMgIGVuZGlmICAvLyBfX0dYWF9SVFRJCisKKy8vIENsYW5nIGRlZmluZXMgX19HWFhf
UlRUSSBzdGFydGluZyB3aXRoIHZlcnNpb24gMy4wLCBidXQgaXRzIG1hbnVhbCByZWNvbW1lbmRz
CisvLyB1c2luZyBoYXNfZmVhdHVyZSBpbnN0ZWFkLiBoYXNfZmVhdHVyZShjeHhfcnR0aSkgaXMg
c3VwcG9ydGVkIHNpbmNlIDIuNywgdGhlCisvLyBmaXJzdCB2ZXJzaW9uIHdpdGggQysrIHN1cHBv
cnQuCisjIGVsaWYgZGVmaW5lZChfX2NsYW5nX18pCisKKyMgIGRlZmluZSBHVEVTVF9IQVNfUlRU
SSBfX2hhc19mZWF0dXJlKGN4eF9ydHRpKQogCiAvLyBTdGFydGluZyB3aXRoIHZlcnNpb24gOS4w
IElCTSBWaXN1YWwgQWdlIGRlZmluZXMgX19SVFRJX0FMTF9fIHRvIDEgaWYKIC8vIGJvdGggdGhl
IHR5cGVpZCBhbmQgZHluYW1pY19jYXN0IGZlYXR1cmVzIGFyZSBwcmVzZW50LgotI2VsaWYgZGVm
aW5lZChfX0lCTUNQUF9fKSAmJiAoX19JQk1DUFBfXyA+PSA5MDApCisjIGVsaWYgZGVmaW5lZChf
X0lCTUNQUF9fKSAmJiAoX19JQk1DUFBfXyA+PSA5MDApCiAKLSNpZmRlZiBfX1JUVElfQUxMX18K
LSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQotI2Vsc2UKLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkg
MAotI2VuZGlmCisjICBpZmRlZiBfX1JUVElfQUxMX18KKyMgICBkZWZpbmUgR1RFU1RfSEFTX1JU
VEkgMQorIyAgZWxzZQorIyAgIGRlZmluZSBHVEVTVF9IQVNfUlRUSSAwCisjICBlbmRpZgogCi0j
ZWxzZQorIyBlbHNlCiAKIC8vIEZvciBhbGwgb3RoZXIgY29tcGlsZXJzLCB3ZSBhc3N1bWUgUlRU
SSBpcyBlbmFibGVkLgotI2RlZmluZSBHVEVTVF9IQVNfUlRUSSAxCisjICBkZWZpbmUgR1RFU1Rf
SEFTX1JUVEkgMQogCi0jZW5kaWYgIC8vIF9NU0NfVkVSCisjIGVuZGlmICAvLyBfTVNDX1ZFUgog
CiAjZW5kaWYgIC8vIEdURVNUX0hBU19SVFRJCiAKIC8vIEl0J3MgdGhpcyBoZWFkZXIncyByZXNw
b25zaWJpbGl0eSB0byAjaW5jbHVkZSA8dHlwZWluZm8+IHdoZW4gUlRUSQogLy8gaXMgZW5hYmxl
ZC4KICNpZiBHVEVTVF9IQVNfUlRUSQotI2luY2x1ZGUgPHR5cGVpbmZvPgorIyBpbmNsdWRlIDx0
eXBlaW5mbz4KICNlbmRpZgogCiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgR29vZ2xlIFRlc3QgY2Fu
IHVzZSB0aGUgcHRocmVhZHMgbGlicmFyeS4KICNpZm5kZWYgR1RFU1RfSEFTX1BUSFJFQUQKLS8v
IFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIGV4cGxpY2l0bHksIHNvIHdlIGFzc3VtZSBwdGhyZWFk
cyBzdXBwb3J0IGlzCi0vLyBhdmFpbGFibGUgb24gTGludXggYW5kIE1hYy4KKy8vIFRoZSB1c2Vy
IGRpZG4ndCB0ZWxsIHVzIGV4cGxpY2l0bHksIHNvIHdlIG1ha2UgcmVhc29uYWJsZSBhc3N1bXB0
aW9ucyBhYm91dAorLy8gd2hpY2ggcGxhdGZvcm1zIGhhdmUgcHRocmVhZHMgc3VwcG9ydC4KIC8v
CiAvLyBUbyBkaXNhYmxlIHRocmVhZGluZyBzdXBwb3J0IGluIEdvb2dsZSBUZXN0LCBhZGQgLURH
VEVTVF9IQVNfUFRIUkVBRD0wCiAvLyB0byB5b3VyIGNvbXBpbGVyIGZsYWdzLgotI2RlZmluZSBH
VEVTVF9IQVNfUFRIUkVBRCAoR1RFU1RfT1NfTElOVVggfHwgR1RFU1RfT1NfRlJFRUJTRCB8fCBH
VEVTVF9PU19IVVJEIHx8IEdURVNUX09TX01BQykKKyMgZGVmaW5lIEdURVNUX0hBU19QVEhSRUFE
IChHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19NQUMgfHwgR1RFU1RfT1NfSFBVWCBcCisgICAg
fHwgR1RFU1RfT1NfUU5YIHx8IEdURVNUX09TX0ZSRUVCU0QgfHwgR1RFU1RfT1NfTkFDTCkKICNl
bmRpZiAgLy8gR1RFU1RfSEFTX1BUSFJFQUQKIAorI2lmIEdURVNUX0hBU19QVEhSRUFECisvLyBn
dGVzdC1wb3J0LmggZ3VhcmFudGVlcyB0byAjaW5jbHVkZSA8cHRocmVhZC5oPiB3aGVuIEdURVNU
X0hBU19QVEhSRUFEIGlzCisvLyB0cnVlLgorIyBpbmNsdWRlIDxwdGhyZWFkLmg+ICAvLyBOT0xJ
TlQKKworLy8gRm9yIHRpbWVzcGVjIGFuZCBuYW5vc2xlZXAsIHVzZWQgYmVsb3cuCisjIGluY2x1
ZGUgPHRpbWUuaD4gIC8vIE5PTElOVAorI2VuZGlmCisKKy8vIERldGVybWluZXMgaWYgaGFzaF9t
YXAvaGFzaF9zZXQgYXJlIGF2YWlsYWJsZS4KKy8vIE9ubHkgdXNlZCBmb3IgdGVzdGluZyBhZ2Fp
bnN0IHRob3NlIGNvbnRhaW5lcnMuCisjaWYgIWRlZmluZWQoR1RFU1RfSEFTX0hBU0hfTUFQXykK
KyMgaWYgX01TQ19WRVIKKyMgIGRlZmluZSBHVEVTVF9IQVNfSEFTSF9NQVBfIDEgIC8vIEluZGlj
YXRlcyB0aGF0IGhhc2hfbWFwIGlzIGF2YWlsYWJsZS4KKyMgIGRlZmluZSBHVEVTVF9IQVNfSEFT
SF9TRVRfIDEgIC8vIEluZGljYXRlcyB0aGF0IGhhc2hfc2V0IGlzIGF2YWlsYWJsZS4KKyMgZW5k
aWYgIC8vIF9NU0NfVkVSCisjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0hBU19IQVNIX01BUF8p
CisKIC8vIERldGVybWluZXMgd2hldGhlciBHb29nbGUgVGVzdCBjYW4gdXNlIHRyMS90dXBsZS4g
IFlvdSBjYW4gZGVmaW5lCiAvLyB0aGlzIG1hY3JvIHRvIDAgdG8gcHJldmVudCBHb29nbGUgVGVz
dCBmcm9tIHVzaW5nIHR1cGxlIChhbnkKIC8vIGZlYXR1cmUgZGVwZW5kaW5nIG9uIHR1cGxlIHdp
dGggYmUgZGlzYWJsZWQgaW4gdGhpcyBtb2RlKS4KICNpZm5kZWYgR1RFU1RfSEFTX1RSMV9UVVBM
RQorIyBpZiBHVEVTVF9PU19MSU5VWF9BTkRST0lEICYmIGRlZmluZWQoX1NUTFBPUlRfTUFKT1Ip
CisvLyBTVExwb3J0LCBwcm92aWRlZCB3aXRoIHRoZSBBbmRyb2lkIE5ESywgaGFzIG5laXRoZXIg
PHRyMS90dXBsZT4gb3IgPHR1cGxlPi4KKyMgIGRlZmluZSBHVEVTVF9IQVNfVFIxX1RVUExFIDAK
KyMgZWxzZQogLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMgbm90IHRvIGRvIGl0LCBzbyB3ZSBh
c3N1bWUgaXQncyBPSy4KLSNkZWZpbmUgR1RFU1RfSEFTX1RSMV9UVVBMRSAxCisjICBkZWZpbmUg
R1RFU1RfSEFTX1RSMV9UVVBMRSAxCisjIGVuZGlmCiAjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFf
VFVQTEUKIAogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIEdvb2dsZSBUZXN0J3Mgb3duIHRyMSB0dXBs
ZSBpbXBsZW1lbnRhdGlvbgpAQCAtNDEwLDY3ICs2NDcsMTA3IEBACiAvLyBUaGUgdXNlciBkaWRu
J3QgdGVsbCB1cywgc28gd2UgbmVlZCB0byBmaWd1cmUgaXQgb3V0LgogCiAvLyBXZSB1c2Ugb3Vy
IG93biBUUjEgdHVwbGUgaWYgd2UgYXJlbid0IHN1cmUgdGhlIHVzZXIgaGFzIGFuCi0vLyBpbXBs
ZW1lbnRhdGlvbiBvZiBpdCBhbHJlYWR5LiAgQXQgdGhpcyB0aW1lLCBHQ0MgNC4wLjArIGFuZCBN
U1ZDCi0vLyAyMDEwIGFyZSB0aGUgb25seSBtYWluc3RyZWFtIGNvbXBpbGVycyB0aGF0IGNvbWUg
d2l0aCBhIFRSMSB0dXBsZQotLy8gaW1wbGVtZW50YXRpb24uICBOVklESUEncyBDVURBIE5WQ0Mg
Y29tcGlsZXIgcHJldGVuZHMgdG8gYmUgR0NDIGJ5Ci0vLyBkZWZpbmluZyBfX0dOVUNfXyBhbmQg
ZnJpZW5kcywgYnV0IGNhbm5vdCBjb21waWxlIEdDQydzIHR1cGxlCi0vLyBpbXBsZW1lbnRhdGlv
bi4gIE1TVkMgMjAwOCAoOS4wKSBwcm92aWRlcyBUUjEgdHVwbGUgaW4gYSAzMjMgTUIKLS8vIEZl
YXR1cmUgUGFjayBkb3dubG9hZCwgd2hpY2ggd2UgY2Fubm90IGFzc3VtZSB0aGUgdXNlciBoYXMu
Ci0jaWYgKGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fQ1VEQUNDX18pICYmIChHVEVT
VF9HQ0NfVkVSXyA+PSA0MDAwMCkpIFwKLSAgICB8fCBfTVNDX1ZFUiA+PSAxNjAwCi0jZGVmaW5l
IEdURVNUX1VTRV9PV05fVFIxX1RVUExFIDAKLSNlbHNlCi0jZGVmaW5lIEdURVNUX1VTRV9PV05f
VFIxX1RVUExFIDEKLSNlbmRpZgorLy8gaW1wbGVtZW50YXRpb24gb2YgaXQgYWxyZWFkeS4gIEF0
IHRoaXMgdGltZSwgbGlic3RkYysrIDQuMC4wKyBhbmQKKy8vIE1TVkMgMjAxMCBhcmUgdGhlIG9u
bHkgbWFpbnN0cmVhbSBzdGFuZGFyZCBsaWJyYXJpZXMgdGhhdCBjb21lCisvLyB3aXRoIGEgVFIx
IHR1cGxlIGltcGxlbWVudGF0aW9uLiAgTlZJRElBJ3MgQ1VEQSBOVkNDIGNvbXBpbGVyCisvLyBw
cmV0ZW5kcyB0byBiZSBHQ0MgYnkgZGVmaW5pbmcgX19HTlVDX18gYW5kIGZyaWVuZHMsIGJ1dCBj
YW5ub3QKKy8vIGNvbXBpbGUgR0NDJ3MgdHVwbGUgaW1wbGVtZW50YXRpb24uICBNU1ZDIDIwMDgg
KDkuMCkgcHJvdmlkZXMgVFIxCisvLyB0dXBsZSBpbiBhIDMyMyBNQiBGZWF0dXJlIFBhY2sgZG93
bmxvYWQsIHdoaWNoIHdlIGNhbm5vdCBhc3N1bWUgdGhlCisvLyB1c2VyIGhhcy4gIFFOWCdzIFFD
QyBjb21waWxlciBpcyBhIG1vZGlmaWVkIEdDQyBidXQgaXQgZG9lc24ndAorLy8gc3VwcG9ydCBU
UjEgdHVwbGUuICBsaWJjKysgb25seSBwcm92aWRlcyBzdGQ6OnR1cGxlLCBpbiBDKysxMSBtb2Rl
LAorLy8gYW5kIGl0IGNhbiBiZSB1c2VkIHdpdGggc29tZSBjb21waWxlcnMgdGhhdCBkZWZpbmUg
X19HTlVDX18uCisjIGlmIChkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX0NVREFDQ19f
KSAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0gNDAwMDApIFwKKyAgICAgICYmICFHVEVTVF9PU19RTlgg
JiYgIWRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKSkgfHwgX01TQ19WRVIgPj0gMTYwMAorIyAgZGVm
aW5lIEdURVNUX0VOVl9IQVNfVFIxX1RVUExFXyAxCisjIGVuZGlmCisKKy8vIEMrKzExIHNwZWNp
ZmllcyB0aGF0IDx0dXBsZT4gcHJvdmlkZXMgc3RkOjp0dXBsZS4gVXNlIHRoYXQgaWYgZ3Rlc3Qg
aXMgdXNlZAorLy8gaW4gQysrMTEgbW9kZSBhbmQgbGlic3RkYysrIGlzbid0IHZlcnkgb2xkIChi
aW5hcmllcyB0YXJnZXRpbmcgT1MgWCAxMC42CisvLyBjYW4gYnVpbGQgd2l0aCBjbGFuZyBidXQg
bmVlZCB0byB1c2UgZ2NjNC4yJ3MgbGlic3RkYysrKS4KKyMgaWYgR1RFU1RfTEFOR19DWFgxMSAm
JiAoIWRlZmluZWQoX19HTElCQ1hYX18pIHx8IF9fR0xJQkNYWF9fID4gMjAxMTAzMjUpCisjICBk
ZWZpbmUgR1RFU1RfRU5WX0hBU19TVERfVFVQTEVfIDEKKyMgZW5kaWYKKworIyBpZiBHVEVTVF9F
TlZfSEFTX1RSMV9UVVBMRV8gfHwgR1RFU1RfRU5WX0hBU19TVERfVFVQTEVfCisjICBkZWZpbmUg
R1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgMAorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfVVNFX09X
Tl9UUjFfVFVQTEUgMQorIyBlbmRpZgogCiAjZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fVFIxX1RV
UExFCiAKIC8vIFRvIGF2b2lkIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGV2ZXJ5d2hlcmUsIHdl
IG1ha2UgaXQKIC8vIGd0ZXN0LXBvcnQuaCdzIHJlc3BvbnNpYmlsaXR5IHRvICNpbmNsdWRlIHRo
ZSBoZWFkZXIgaW1wbGVtZW50aW5nCi0vLyB0cjEvdHVwbGUuCisvLyB0dXBsZS4KKyNpZiBHVEVT
VF9IQVNfU1REX1RVUExFXworIyBpbmNsdWRlIDx0dXBsZT4gIC8vIElXWVUgcHJhZ21hOiBleHBv
cnQKKyMgZGVmaW5lIEdURVNUX1RVUExFX05BTUVTUEFDRV8gOjpzdGQKKyNlbmRpZiAgLy8gR1RF
U1RfSEFTX1NURF9UVVBMRV8KKworLy8gV2UgaW5jbHVkZSB0cjE6OnR1cGxlIGV2ZW4gaWYgc3Rk
Ojp0dXBsZSBpcyBhdmFpbGFibGUgdG8gZGVmaW5lIHByaW50ZXJzIGZvcgorLy8gdGhlbS4KICNp
ZiBHVEVTVF9IQVNfVFIxX1RVUExFCisjIGlmbmRlZiBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfCisj
ICBkZWZpbmUgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXyA6OnN0ZDo6dHIxCisjIGVuZGlmICAvLyBH
VEVTVF9UVVBMRV9OQU1FU1BBQ0VfCisKKyMgaWYgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUKKyMg
IGluY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgiICAvLyBJV1lVIHByYWdtYTog
ZXhwb3J0ICAvLyBOT0xJTlQKKyMgZWxpZiBHVEVTVF9FTlZfSEFTX1NURF9UVVBMRV8KKyMgIGlu
Y2x1ZGUgPHR1cGxlPgorLy8gQysrMTEgcHV0cyBpdHMgdHVwbGUgaW50byB0aGUgOjpzdGQgbmFt
ZXNwYWNlIHJhdGhlciB0aGFuCisvLyA6OnN0ZDo6dHIxLiAgZ3Rlc3QgZXhwZWN0cyB0dXBsZSB0
byBsaXZlIGluIDo6c3RkOjp0cjEsIHNvIHB1dCBpdCB0aGVyZS4KKy8vIFRoaXMgY2F1c2VzIHVu
ZGVmaW5lZCBiZWhhdmlvciwgYnV0IHN1cHBvcnRlZCBjb21waWxlcnMgcmVhY3QgaW4KKy8vIHRo
ZSB3YXkgd2UgaW50ZW5kLgorbmFtZXNwYWNlIHN0ZCB7CituYW1lc3BhY2UgdHIxIHsKK3VzaW5n
IDo6c3RkOjpnZXQ7Cit1c2luZyA6OnN0ZDo6bWFrZV90dXBsZTsKK3VzaW5nIDo6c3RkOjp0dXBs
ZTsKK3VzaW5nIDo6c3RkOjp0dXBsZV9lbGVtZW50OwordXNpbmcgOjpzdGQ6OnR1cGxlX3NpemU7
Cit9Cit9CiAKLSNpZiBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRQotI2luY2x1ZGUgPGd0ZXN0L2lu
dGVybmFsL2d0ZXN0LXR1cGxlLmg+Ci0jZWxpZiBHVEVTVF9PU19TWU1CSUFOCisjIGVsaWYgR1RF
U1RfT1NfU1lNQklBTgogCiAvLyBPbiBTeW1iaWFuLCBCT09TVF9IQVNfVFIxX1RVUExFIGNhdXNl
cyBCb29zdCdzIFRSMSB0dXBsZSBsaWJyYXJ5IHRvCiAvLyB1c2UgU1RMcG9ydCdzIHR1cGxlIGlt
cGxlbWVudGF0aW9uLCB3aGljaCB1bmZvcnR1bmF0ZWx5IGRvZXNuJ3QKIC8vIHdvcmsgYXMgdGhl
IGNvcHkgb2YgU1RMcG9ydCBkaXN0cmlidXRlZCB3aXRoIFN5bWJpYW4gaXMgaW5jb21wbGV0ZS4K
IC8vIEJ5IG1ha2luZyBzdXJlIEJPT1NUX0hBU19UUjFfVFVQTEUgaXMgdW5kZWZpbmVkLCB3ZSBm
b3JjZSBCb29zdCB0bwogLy8gdXNlIGl0cyBvd24gdHVwbGUgaW1wbGVtZW50YXRpb24uCi0jaWZk
ZWYgQk9PU1RfSEFTX1RSMV9UVVBMRQotI3VuZGVmIEJPT1NUX0hBU19UUjFfVFVQTEUKLSNlbmRp
ZiAgLy8gQk9PU1RfSEFTX1RSMV9UVVBMRQorIyAgaWZkZWYgQk9PU1RfSEFTX1RSMV9UVVBMRQor
IyAgIHVuZGVmIEJPT1NUX0hBU19UUjFfVFVQTEUKKyMgIGVuZGlmICAvLyBCT09TVF9IQVNfVFIx
X1RVUExFCiAKIC8vIFRoaXMgcHJldmVudHMgPGJvb3N0L3RyMS9kZXRhaWwvY29uZmlnLmhwcD4s
IHdoaWNoIGRlZmluZXMKIC8vIEJPT1NUX0hBU19UUjFfVFVQTEUsIGZyb20gYmVpbmcgI2luY2x1
ZGVkIGJ5IEJvb3N0J3MgPHR1cGxlPi4KLSNkZWZpbmUgQk9PU1RfVFIxX0RFVEFJTF9DT05GSUdf
SFBQX0lOQ0xVREVECi0jaW5jbHVkZSA8dHVwbGU+CisjICBkZWZpbmUgQk9PU1RfVFIxX0RFVEFJ
TF9DT05GSUdfSFBQX0lOQ0xVREVECisjICBpbmNsdWRlIDx0dXBsZT4gIC8vIElXWVUgcHJhZ21h
OiBleHBvcnQgIC8vIE5PTElOVAogCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoR1RFU1Rf
R0NDX1ZFUl8gPj0gNDAwMDApCisjIGVsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKEdURVNUX0dD
Q19WRVJfID49IDQwMDAwKQogLy8gR0NDIDQuMCsgaW1wbGVtZW50cyB0cjEvdHVwbGUgaW4gdGhl
IDx0cjEvdHVwbGU+IGhlYWRlci4gIFRoaXMgZG9lcwogLy8gbm90IGNvbmZvcm0gdG8gdGhlIFRS
MSBzcGVjLCB3aGljaCByZXF1aXJlcyB0aGUgaGVhZGVyIHRvIGJlIDx0dXBsZT4uCiAKLSNpZiAh
R1RFU1RfSEFTX1JUVEkgJiYgR1RFU1RfR0NDX1ZFUl8gPCA0MDMwMgorIyAgaWYgIUdURVNUX0hB
U19SVFRJICYmIEdURVNUX0dDQ19WRVJfIDwgNDAzMDIKIC8vIFVudGlsIHZlcnNpb24gNC4zLjIs
IGdjYyBoYXMgYSBidWcgdGhhdCBjYXVzZXMgPHRyMS9mdW5jdGlvbmFsPiwKIC8vIHdoaWNoIGlz
ICNpbmNsdWRlZCBieSA8dHIxL3R1cGxlPiwgdG8gbm90IGNvbXBpbGUgd2hlbiBSVFRJIGlzCiAv
LyBkaXNhYmxlZC4gIF9UUjFfRlVOQ1RJT05BTCBpcyB0aGUgaGVhZGVyIGd1YXJkIGZvcgogLy8g
PHRyMS9mdW5jdGlvbmFsPi4gIEhlbmNlIHRoZSBmb2xsb3dpbmcgI2RlZmluZSBpcyBhIGhhY2sg
dG8gcHJldmVudAogLy8gPHRyMS9mdW5jdGlvbmFsPiBmcm9tIGJlaW5nIGluY2x1ZGVkLgotI2Rl
ZmluZSBfVFIxX0ZVTkNUSU9OQUwgMQotI2luY2x1ZGUgPHRyMS90dXBsZT4KLSN1bmRlZiBfVFIx
X0ZVTkNUSU9OQUwgIC8vIEFsbG93cyB0aGUgdXNlciB0byAjaW5jbHVkZQorIyAgIGRlZmluZSBf
VFIxX0ZVTkNUSU9OQUwgMQorIyAgIGluY2x1ZGUgPHRyMS90dXBsZT4KKyMgICB1bmRlZiBfVFIx
X0ZVTkNUSU9OQUwgIC8vIEFsbG93cyB0aGUgdXNlciB0byAjaW5jbHVkZQogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gPHRyMS9mdW5jdGlvbmFsPiBpZiBoZSBjaG9vc2VzIHRvLgotI2Vsc2UK
LSNpbmNsdWRlIDx0cjEvdHVwbGU+ICAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gIUdURVNUX0hBU19S
VFRJICYmIEdURVNUX0dDQ19WRVJfIDwgNDAzMDIKKyMgIGVsc2UKKyMgICBpbmNsdWRlIDx0cjEv
dHVwbGU+ICAvLyBOT0xJTlQKKyMgIGVuZGlmICAvLyAhR1RFU1RfSEFTX1JUVEkgJiYgR1RFU1Rf
R0NDX1ZFUl8gPCA0MDMwMgogCi0jZWxzZQorIyBlbHNlCiAvLyBJZiB0aGUgY29tcGlsZXIgaXMg
bm90IEdDQyA0LjArLCB3ZSBhc3N1bWUgdGhlIHVzZXIgaXMgdXNpbmcgYQogLy8gc3BlYy1jb25m
b3JtaW5nIFRSMSBpbXBsZW1lbnRhdGlvbi4KLSNpbmNsdWRlIDx0dXBsZT4gIC8vIE5PTElOVAot
I2VuZGlmICAvLyBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRQorIyAgaW5jbHVkZSA8dHVwbGU+ICAv
LyBJV1lVIHByYWdtYTogZXhwb3J0ICAvLyBOT0xJTlQKKyMgZW5kaWYgIC8vIEdURVNUX1VTRV9P
V05fVFIxX1RVUExFCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRQogCkBAIC00ODEs
MzAgKzc1OCw0NiBAQAogI2lmbmRlZiBHVEVTVF9IQVNfQ0xPTkUKIC8vIFRoZSB1c2VyIGRpZG4n
dCB0ZWxsIHVzLCBzbyB3ZSBuZWVkIHRvIGZpZ3VyZSBpdCBvdXQuCiAKLSNpZiBHVEVTVF9PU19M
SU5VWCAmJiAhZGVmaW5lZChfX2lhNjRfXykKLSNkZWZpbmUgR1RFU1RfSEFTX0NMT05FIDEKLSNl
bHNlCi0jZGVmaW5lIEdURVNUX0hBU19DTE9ORSAwCi0jZW5kaWYgIC8vIEdURVNUX09TX0xJTlVY
ICYmICFkZWZpbmVkKF9faWE2NF9fKQorIyBpZiBHVEVTVF9PU19MSU5VWCAmJiAhZGVmaW5lZChf
X2lhNjRfXykKKyMgIGlmIEdURVNUX09TX0xJTlVYX0FORFJPSUQKKy8vIE9uIEFuZHJvaWQsIGNs
b25lKCkgaXMgb25seSBhdmFpbGFibGUgb24gQVJNIHN0YXJ0aW5nIHdpdGggR2luZ2VyYnJlYWQu
CisjICAgIGlmIGRlZmluZWQoX19hcm1fXykgJiYgX19BTkRST0lEX0FQSV9fID49IDkKKyMgICAg
IGRlZmluZSBHVEVTVF9IQVNfQ0xPTkUgMQorIyAgICBlbHNlCisjICAgICBkZWZpbmUgR1RFU1Rf
SEFTX0NMT05FIDAKKyMgICAgZW5kaWYKKyMgIGVsc2UKKyMgICBkZWZpbmUgR1RFU1RfSEFTX0NM
T05FIDEKKyMgIGVuZGlmCisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9IQVNfQ0xPTkUgMAorIyBl
bmRpZiAgLy8gR1RFU1RfT1NfTElOVVggJiYgIWRlZmluZWQoX19pYTY0X18pCiAKICNlbmRpZiAg
Ly8gR1RFU1RfSEFTX0NMT05FCiAKIC8vIERldGVybWluZXMgd2hldGhlciB0byBzdXBwb3J0IHN0
cmVhbSByZWRpcmVjdGlvbi4gVGhpcyBpcyB1c2VkIHRvIHRlc3QKIC8vIG91dHB1dCBjb3JyZWN0
bmVzcyBhbmQgdG8gaW1wbGVtZW50IGRlYXRoIHRlc3RzLgotI2lmICFHVEVTVF9PU19XSU5ET1dT
X01PQklMRSAmJiAhR1RFU1RfT1NfU1lNQklBTgotI2RlZmluZSBHVEVTVF9IQVNfU1RSRUFNX1JF
RElSRUNUSU9OXyAxCi0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRSAmJiAhR1RF
U1RfT1NfU1lNQklBTgorI2lmbmRlZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCisvLyBC
eSBkZWZhdWx0LCB3ZSBhc3N1bWUgdGhhdCBzdHJlYW0gcmVkaXJlY3Rpb24gaXMgc3VwcG9ydGVk
IG9uIGFsbAorLy8gcGxhdGZvcm1zIGV4Y2VwdCBrbm93biBtb2JpbGUgb25lcy4KKyMgaWYgR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUgfHwgR1RFU1RfT1NfU1lNQklBTiB8fCBcCisgICAgR1RFU1Rf
T1NfV0lORE9XU19QSE9ORSB8fCBHVEVTVF9PU19XSU5ET1dTX1JUCisjICBkZWZpbmUgR1RFU1Rf
SEFTX1NUUkVBTV9SRURJUkVDVElPTiAwCisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9IQVNfU1RS
RUFNX1JFRElSRUNUSU9OIDEKKyMgZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRSAm
JiAhR1RFU1RfT1NfU1lNQklBTgorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNU
SU9OCiAKIC8vIERldGVybWluZXMgd2hldGhlciB0byBzdXBwb3J0IGRlYXRoIHRlc3RzLgogLy8g
R29vZ2xlIFRlc3QgZG9lcyBub3Qgc3VwcG9ydCBkZWF0aCB0ZXN0cyBmb3IgVkMgNy4xIGFuZCBl
YXJsaWVyIGFzCiAvLyBhYm9ydCgpIGluIGEgVkMgNy4xIGFwcGxpY2F0aW9uIGNvbXBpbGVkIGFz
IEdVSSBpbiBkZWJ1ZyBjb25maWcKIC8vIHBvcHMgdXAgYSBkaWFsb2cgd2luZG93IHRoYXQgY2Fu
bm90IGJlIHN1cHByZXNzZWQgcHJvZ3JhbW1hdGljYWxseS4KLSNpZiAoR1RFU1RfT1NfTElOVVgg
fHwgR1RFU1RfT1NfRlJFRUJTRCB8fCBHVEVTVF9PU19IVVJEIHx8IFwKLSAgICAgR1RFU1RfT1Nf
TUFDIHx8IEdURVNUX09TX0NZR1dJTiB8fCBHVEVTVF9PU19TT0xBUklTIHx8IFwKKyNpZiAoR1RF
U1RfT1NfTElOVVggfHwgR1RFU1RfT1NfQ1lHV0lOIHx8IEdURVNUX09TX1NPTEFSSVMgfHwgXAor
ICAgICAoR1RFU1RfT1NfTUFDICYmICFHVEVTVF9PU19JT1MpIHx8IFwKICAgICAgKEdURVNUX09T
X1dJTkRPV1NfREVTS1RPUCAmJiBfTVNDX1ZFUiA+PSAxNDAwKSB8fCBcCi0gICAgIEdURVNUX09T
X1dJTkRPV1NfTUlOR1cgfHwgR1RFU1RfT1NfQUlYKQotI2RlZmluZSBHVEVTVF9IQVNfREVBVEhf
VEVTVCAxCi0jaW5jbHVkZSA8dmVjdG9yPiAgLy8gTk9MSU5UCisgICAgIEdURVNUX09TX1dJTkRP
V1NfTUlOR1cgfHwgR1RFU1RfT1NfQUlYIHx8IEdURVNUX09TX0hQVVggfHwgXAorICAgICBHVEVT
VF9PU19PUEVOQlNEIHx8IEdURVNUX09TX1FOWCB8fCBHVEVTVF9PU19GUkVFQlNEKQorIyBkZWZp
bmUgR1RFU1RfSEFTX0RFQVRIX1RFU1QgMQogI2VuZGlmCiAKIC8vIFdlIGRvbid0IHN1cHBvcnQg
TVNWQyA3LjEgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkIG5vdy4gIFRoZXJlZm9yZQpAQCAtNTE1
LDExICs4MDgsMTEgQEAKIC8vIERldGVybWluZXMgd2hldGhlciB0byBzdXBwb3J0IHR5cGUtZHJp
dmVuIHRlc3RzLgogCiAvLyBUeXBlZCB0ZXN0cyBuZWVkIDx0eXBlaW5mbz4gYW5kIHZhcmlhZGlj
IG1hY3Jvcywgd2hpY2ggR0NDLCBWQysrIDguMCwKLS8vIFN1biBQcm8gQ0MsIGFuZCBJQk0gVmlz
dWFsIEFnZSBzdXBwb3J0LgorLy8gU3VuIFBybyBDQywgSUJNIFZpc3VhbCBBZ2UsIGFuZCBIUCBh
Q0Mgc3VwcG9ydC4KICNpZiBkZWZpbmVkKF9fR05VQ19fKSB8fCAoX01TQ19WRVIgPj0gMTQwMCkg
fHwgZGVmaW5lZChfX1NVTlBST19DQykgfHwgXAotICAgIGRlZmluZWQoX19JQk1DUFBfXykKLSNk
ZWZpbmUgR1RFU1RfSEFTX1RZUEVEX1RFU1QgMQotI2RlZmluZSBHVEVTVF9IQVNfVFlQRURfVEVT
VF9QIDEKKyAgICBkZWZpbmVkKF9fSUJNQ1BQX18pIHx8IGRlZmluZWQoX19IUF9hQ0MpCisjIGRl
ZmluZSBHVEVTVF9IQVNfVFlQRURfVEVTVCAxCisjIGRlZmluZSBHVEVTVF9IQVNfVFlQRURfVEVT
VF9QIDEKICNlbmRpZgogCiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc3VwcG9ydCBDb21iaW5l
KCkuIFRoaXMgb25seSBtYWtlcyBzZW5zZSB3aGVuCkBAIC01MjcsMTMgKzgyMCwxOCBAQAogLy8g
d29yayBvbiBTdW4gU3R1ZGlvIHNpbmNlIGl0IGRvZXNuJ3QgdW5kZXJzdGFuZCB0ZW1wbGF0ZWQg
Y29udmVyc2lvbgogLy8gb3BlcmF0b3JzLgogI2lmIEdURVNUX0hBU19QQVJBTV9URVNUICYmIEdU
RVNUX0hBU19UUjFfVFVQTEUgJiYgIWRlZmluZWQoX19TVU5QUk9fQ0MpCi0jZGVmaW5lIEdURVNU
X0hBU19DT01CSU5FIDEKKyMgZGVmaW5lIEdURVNUX0hBU19DT01CSU5FIDEKICNlbmRpZgogCiAv
LyBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHN5c3RlbSBjb21waWxlciB1c2VzIFVURi0xNiBmb3Ig
ZW5jb2Rpbmcgd2lkZSBzdHJpbmdzLgogI2RlZmluZSBHVEVTVF9XSURFX1NUUklOR19VU0VTX1VU
RjE2XyBcCiAgICAgKEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfQ1lHV0lOIHx8IEdURVNU
X09TX1NZTUJJQU4gfHwgR1RFU1RfT1NfQUlYKQogCisvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGVz
dCByZXN1bHRzIGNhbiBiZSBzdHJlYW1lZCB0byBhIHNvY2tldC4KKyNpZiBHVEVTVF9PU19MSU5V
WAorIyBkZWZpbmUgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXyAxCisjZW5kaWYKKwogLy8gRGVm
aW5lcyBzb21lIHV0aWxpdHkgbWFjcm9zLgogCiAvLyBUaGUgR05VIGNvbXBpbGVyIGVtaXRzIGEg
d2FybmluZyBpZiBuZXN0ZWQgImlmIiBzdGF0ZW1lbnRzIGFyZSBmb2xsb3dlZCBieQpAQCAtNTQ1
LDkgKzg0Myw5IEBACiAvLwogLy8gVGhlICJzd2l0Y2ggKDApIGNhc2UgMDoiIGlkaW9tIGlzIHVz
ZWQgdG8gc3VwcHJlc3MgdGhpcy4KICNpZmRlZiBfX0lOVEVMX0NPTVBJTEVSCi0jZGVmaW5lIEdU
RVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfCisjIGRlZmluZSBHVEVTVF9BTUJJR1VPVVNfRUxT
RV9CTE9DS0VSXwogI2Vsc2UKLSNkZWZpbmUgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8g
c3dpdGNoICgwKSBjYXNlIDA6ICAvLyBOT0xJTlQKKyMgZGVmaW5lIEdURVNUX0FNQklHVU9VU19F
TFNFX0JMT0NLRVJfIHN3aXRjaCAoMCkgY2FzZSAwOiBkZWZhdWx0OiAgLy8gTk9MSU5UCiAjZW5k
aWYKIAogLy8gVXNlIHRoaXMgYW5ub3RhdGlvbiBhdCB0aGUgZW5kIG9mIGEgc3RydWN0L2NsYXNz
IGRlZmluaXRpb24gdG8KQEAgLTU2Miw5ICs4NjAsMTQgQEAKIC8vIEFsc28gdXNlIGl0IGFmdGVy
IGEgdmFyaWFibGUgb3IgcGFyYW1ldGVyIGRlY2xhcmF0aW9uIHRvIHRlbGwgdGhlCiAvLyBjb21w
aWxlciB0aGUgdmFyaWFibGUvcGFyYW1ldGVyIGRvZXMgbm90IGhhdmUgdG8gYmUgdXNlZC4KICNp
ZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChDT01QSUxFUl9JQ0MpCi0jZGVmaW5lIEdU
RVNUX0FUVFJJQlVURV9VTlVTRURfIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQotI2Vsc2UKLSNk
ZWZpbmUgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8KKyMgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9V
TlVTRURfIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQorI2VsaWYgZGVmaW5lZChfX2NsYW5nX18p
CisjIGlmIF9faGFzX2F0dHJpYnV0ZSh1bnVzZWQpCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRF
X1VOVVNFRF8gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCisjIGVuZGlmCisjZW5kaWYKKyNpZm5k
ZWYgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8KKyMgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9VTlVT
RURfCiAjZW5kaWYKIAogLy8gQSBtYWNybyB0byBkaXNhbGxvdyBvcGVyYXRvcj0KQEAgLTU4NCw3
MiArODg3LDIyNyBAQAogLy8KIC8vICAgU3Byb2NrZXQqIEFsbG9jYXRlU3Byb2NrZXQoKSBHVEVT
VF9NVVNUX1VTRV9SRVNVTFRfOwogI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChHVEVTVF9HQ0Nf
VkVSXyA+PSAzMDQwMCkgJiYgIWRlZmluZWQoQ09NUElMRVJfSUNDKQotI2RlZmluZSBHVEVTVF9N
VVNUX1VTRV9SRVNVTFRfIF9fYXR0cmlidXRlX18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKQorIyBk
ZWZpbmUgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXyBfX2F0dHJpYnV0ZV9fICgod2Fybl91bnVzZWRf
cmVzdWx0KSkKICNlbHNlCi0jZGVmaW5lIEdURVNUX01VU1RfVVNFX1JFU1VMVF8KKyMgZGVmaW5l
IEdURVNUX01VU1RfVVNFX1JFU1VMVF8KICNlbmRpZiAgLy8gX19HTlVDX18gJiYgKEdURVNUX0dD
Q19WRVJfID49IDMwNDAwKSAmJiAhQ09NUElMRVJfSUNDCiAKKy8vIE1TIEMrKyBjb21waWxlciBl
bWl0cyB3YXJuaW5nIHdoZW4gYSBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbXBpbGUgdGlt
ZQorLy8gY29uc3RhbnQuIEluIHNvbWUgY29udGV4dHMgdGhpcyB3YXJuaW5nIGlzIGZhbHNlIHBv
c2l0aXZlIGFuZCBuZWVkcyB0byBiZQorLy8gc3VwcHJlc3NlZC4gVXNlIHRoZSBmb2xsb3dpbmcg
dHdvIG1hY3JvcyBpbiBzdWNoIGNhc2VzOgorLy8KKy8vIEdURVNUX0lOVEVOVElPTkFMX0NPTlNU
X0NPTkRfUFVTSF8oKQorLy8gd2hpbGUgKHRydWUpIHsKKy8vIEdURVNUX0lOVEVOVElPTkFMX0NP
TlNUX0NPTkRfUE9QXygpCisvLyB9CisjIGRlZmluZSBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9D
T05EX1BVU0hfKCkgXAorICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQxMjcp
CisjIGRlZmluZSBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BPUF8oKSBcCisgICAgR1RF
U1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCisKIC8vIERldGVybWluZSB3aGV0aGVyIHRo
ZSBjb21waWxlciBzdXBwb3J0cyBNaWNyb3NvZnQncyBTdHJ1Y3R1cmVkIEV4Y2VwdGlvbgogLy8g
SGFuZGxpbmcuICBUaGlzIGlzIHN1cHBvcnRlZCBieSBzZXZlcmFsIFdpbmRvd3MgY29tcGlsZXJz
IGJ1dCBnZW5lcmFsbHkKIC8vIGRvZXMgbm90IGV4aXN0IG9uIGFueSBvdGhlciBzeXN0ZW0uCiAj
aWZuZGVmIEdURVNUX0hBU19TRUgKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzLCBzbyB3ZSBu
ZWVkIHRvIGZpZ3VyZSBpdCBvdXQuCiAKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVk
KF9fQk9STEFORENfXykKKyMgaWYgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX0JPUkxB
TkRDX18pCiAvLyBUaGVzZSB0d28gY29tcGlsZXJzIGFyZSBrbm93biB0byBzdXBwb3J0IFNFSC4K
LSNkZWZpbmUgR1RFU1RfSEFTX1NFSCAxCi0jZWxzZQorIyAgZGVmaW5lIEdURVNUX0hBU19TRUgg
MQorIyBlbHNlCiAvLyBBc3N1bWUgbm8gU0VILgotI2RlZmluZSBHVEVTVF9IQVNfU0VIIDAKLSNl
bmRpZgorIyAgZGVmaW5lIEdURVNUX0hBU19TRUggMAorIyBlbmRpZgorCisjZGVmaW5lIEdURVNU
X0lTX1RIUkVBRFNBRkUgXAorICAgIChHVEVTVF9IQVNfTVVURVhfQU5EX1RIUkVBRF9MT0NBTF8g
XAorICAgICB8fCAoR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAm
JiAhR1RFU1RfT1NfV0lORE9XU19SVCkgXAorICAgICB8fCBHVEVTVF9IQVNfUFRIUkVBRCkKIAog
I2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICiAKICNpZmRlZiBfTVNDX1ZFUgorIyBpZiBHVEVTVF9M
SU5LRURfQVNfU0hBUkVEX0xJQlJBUlkKKyMgIGRlZmluZSBHVEVTVF9BUElfIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQorIyBlbGlmIEdURVNUX0NSRUFURV9TSEFSRURfTElCUkFSWQorIyAgZGVmaW5l
IEdURVNUX0FQSV8gX19kZWNsc3BlYyhkbGxleHBvcnQpCisjIGVuZGlmCisjZWxpZiBfX0dOVUNf
XyA+PSA0IHx8IGRlZmluZWQoX19jbGFuZ19fKQorIyBkZWZpbmUgR1RFU1RfQVBJXyBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKKyNlbmRpZiAvLyBfTVNDX1ZFUgogCi0j
aWYgR1RFU1RfTElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZCi0jZGVmaW5lIEdURVNUX0FQSV8gX19k
ZWNsc3BlYyhkbGxpbXBvcnQpCi0jZWxpZiBHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJBUlkKLSNk
ZWZpbmUgR1RFU1RfQVBJXyBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyNpZm5kZWYgR1RFU1RfQVBJ
XworIyBkZWZpbmUgR1RFU1RfQVBJXwogI2VuZGlmCiAKLSNlbmRpZiAgLy8gX01TQ19WRVIKKyNp
ZmRlZiBfX0dOVUNfXworLy8gQXNrIHRoZSBjb21waWxlciB0byBuZXZlciBpbmxpbmUgYSBnaXZl
biBmdW5jdGlvbi4KKyMgZGVmaW5lIEdURVNUX05PX0lOTElORV8gX19hdHRyaWJ1dGVfXygobm9p
bmxpbmUpKQorI2Vsc2UKKyMgZGVmaW5lIEdURVNUX05PX0lOTElORV8KKyNlbmRpZgogCi0jaWZu
ZGVmIEdURVNUX0FQSV8KLSNkZWZpbmUgR1RFU1RfQVBJXworLy8gX0xJQkNQUF9WRVJTSU9OIGlz
IGRlZmluZWQgYnkgdGhlIGxpYmMrKyBsaWJyYXJ5IGZyb20gdGhlIExMVk0gcHJvamVjdC4KKyNp
ZiBkZWZpbmVkKF9fR0xJQkNYWF9fKSB8fCBkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikKKyMgZGVm
aW5lIEdURVNUX0hBU19DWFhBQklfSF8gMQorI2Vsc2UKKyMgZGVmaW5lIEdURVNUX0hBU19DWFhB
QklfSF8gMAogI2VuZGlmCiAKKy8vIEEgZnVuY3Rpb24gbGV2ZWwgYXR0cmlidXRlIHRvIGRpc2Fi
bGUgY2hlY2tpbmcgZm9yIHVzZSBvZiB1bmluaXRpYWxpemVkCisvLyBtZW1vcnkgd2hlbiBidWls
dCB3aXRoIE1lbW9yeVNhbml0aXplci4KKyNpZiBkZWZpbmVkKF9fY2xhbmdfXykKKyMgaWYgX19o
YXNfZmVhdHVyZShtZW1vcnlfc2FuaXRpemVyKQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9O
T19TQU5JVElaRV9NRU1PUllfIFwKKyAgICAgICBfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV9t
ZW1vcnkpKQorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX01F
TU9SWV8KKyMgZW5kaWYgIC8vIF9faGFzX2ZlYXR1cmUobWVtb3J5X3Nhbml0aXplcikKKyNlbHNl
CisjIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfTUVNT1JZXworI2VuZGlmICAv
LyBfX2NsYW5nX18KKworLy8gQSBmdW5jdGlvbiBsZXZlbCBhdHRyaWJ1dGUgdG8gZGlzYWJsZSBB
ZGRyZXNzU2FuaXRpemVyIGluc3RydW1lbnRhdGlvbi4KKyNpZiBkZWZpbmVkKF9fY2xhbmdfXykK
KyMgaWYgX19oYXNfZmVhdHVyZShhZGRyZXNzX3Nhbml0aXplcikKKyMgIGRlZmluZSBHVEVTVF9B
VFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTU18gXAorICAgICAgIF9fYXR0cmlidXRlX18oKG5v
X3Nhbml0aXplX2FkZHJlc3MpKQorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05P
X1NBTklUSVpFX0FERFJFU1NfCisjIGVuZGlmICAvLyBfX2hhc19mZWF0dXJlKGFkZHJlc3Nfc2Fu
aXRpemVyKQorI2Vsc2UKKyMgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERS
RVNTXworI2VuZGlmICAvLyBfX2NsYW5nX18KKworLy8gQSBmdW5jdGlvbiBsZXZlbCBhdHRyaWJ1
dGUgdG8gZGlzYWJsZSBUaHJlYWRTYW5pdGl6ZXIgaW5zdHJ1bWVudGF0aW9uLgorI2lmIGRlZmlu
ZWQoX19jbGFuZ19fKQorIyBpZiBfX2hhc19mZWF0dXJlKHRocmVhZF9zYW5pdGl6ZXIpCisjICBk
ZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8gXAorICAgICAgIF9fYXR0
cmlidXRlX18oKG5vX3Nhbml0aXplX3RocmVhZCkpCisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9B
VFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXworIyBlbmRpZiAgLy8gX19oYXNfZmVhdHVyZSh0
aHJlYWRfc2FuaXRpemVyKQorI2Vsc2UKKyMgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5J
VElaRV9USFJFQURfCisjZW5kaWYgIC8vIF9fY2xhbmdfXworCiBuYW1lc3BhY2UgdGVzdGluZyB7
CiAKIGNsYXNzIE1lc3NhZ2U7CiAKKyNpZiBkZWZpbmVkKEdURVNUX1RVUExFX05BTUVTUEFDRV8p
CisvLyBJbXBvcnQgdHVwbGUgYW5kIGZyaWVuZHMgaW50byB0aGUgOjp0ZXN0aW5nIG5hbWVzcGFj
ZS4KKy8vIEl0IGlzIHBhcnQgb2Ygb3VyIGludGVyZmFjZSwgaGF2aW5nIHRoZW0gaW4gOjp0ZXN0
aW5nIGFsbG93cyB1cyB0byBjaGFuZ2UKKy8vIHRoZWlyIHR5cGVzIGFzIG5lZWRlZC4KK3VzaW5n
IEdURVNUX1RVUExFX05BTUVTUEFDRV86OmdldDsKK3VzaW5nIEdURVNUX1RVUExFX05BTUVTUEFD
RV86Om1ha2VfdHVwbGU7Cit1c2luZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjp0dXBsZTsKK3Vz
aW5nIEdURVNUX1RVUExFX05BTUVTUEFDRV86OnR1cGxlX3NpemU7Cit1c2luZyBHVEVTVF9UVVBM
RV9OQU1FU1BBQ0VfOjp0dXBsZV9lbGVtZW50OworI2VuZGlmICAvLyBkZWZpbmVkKEdURVNUX1RV
UExFX05BTUVTUEFDRV8pCisKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKLWNsYXNzIFN0cmluZzsK
Ky8vIEEgc2VjcmV0IHR5cGUgdGhhdCBHb29nbGUgVGVzdCB1c2VycyBkb24ndCBrbm93IGFib3V0
LiAgSXQgaGFzIG5vCisvLyBkZWZpbml0aW9uIG9uIHB1cnBvc2UuICBUaGVyZWZvcmUgaXQncyBp
bXBvc3NpYmxlIHRvIGNyZWF0ZSBhCisvLyBTZWNyZXQgb2JqZWN0LCB3aGljaCBpcyB3aGF0IHdl
IHdhbnQuCitjbGFzcyBTZWNyZXQ7CiAKLWNsYXNzIFN0clN0cmVhbSA6IHB1YmxpYyA6OnN0ZDo6
c3RyaW5nc3RyZWFtIHsKLSBwdWJsaWM6Ci0gIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZv
aWQqIHApIHsgcmV0dXJuIHA7IH0KLSAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lk
KiBwKSB7IHJldHVybiBwOyB9CisvLyBUaGUgR1RFU1RfQ09NUElMRV9BU1NFUlRfIG1hY3JvIGNh
biBiZSB1c2VkIHRvIHZlcmlmeSB0aGF0IGEgY29tcGlsZSB0aW1lCisvLyBleHByZXNzaW9uIGlz
IHRydWUuIEZvciBleGFtcGxlLCB5b3UgY291bGQgdXNlIGl0IHRvIHZlcmlmeSB0aGUKKy8vIHNp
emUgb2YgYSBzdGF0aWMgYXJyYXk6CisvLworLy8gICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oR1RF
U1RfQVJSQVlfU0laRV8obmFtZXMpID09IE5VTV9OQU1FUywKKy8vICAgICAgICAgICAgICAgICAg
ICAgICAgIG5hbWVzX2luY29ycmVjdF9zaXplKTsKKy8vCisvLyBvciB0byBtYWtlIHN1cmUgYSBz
dHJ1Y3QgaXMgc21hbGxlciB0aGFuIGEgY2VydGFpbiBzaXplOgorLy8KKy8vICAgR1RFU1RfQ09N
UElMRV9BU1NFUlRfKHNpemVvZihmb28pIDwgMTI4LCBmb29fdG9vX2xhcmdlKTsKKy8vCisvLyBU
aGUgc2Vjb25kIGFyZ3VtZW50IHRvIHRoZSBtYWNybyBpcyB0aGUgbmFtZSBvZiB0aGUgdmFyaWFi
bGUuIElmCisvLyB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSwgbW9zdCBjb21waWxlcnMgd2lsbCBp
c3N1ZSBhIHdhcm5pbmcvZXJyb3IKKy8vIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIHZhcmlh
YmxlLgorCisjaWYgR1RFU1RfTEFOR19DWFgxMQorIyBkZWZpbmUgR1RFU1RfQ09NUElMRV9BU1NF
UlRfKGV4cHIsIG1zZykgc3RhdGljX2Fzc2VydChleHByLCAjbXNnKQorI2Vsc2UgIC8vICFHVEVT
VF9MQU5HX0NYWDExCit0ZW1wbGF0ZSA8Ym9vbD4KKyAgc3RydWN0IENvbXBpbGVBc3NlcnQgewor
fTsKIAotICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsKLSAgICByZXR1cm4gbWFs
bG9jKHNpemUpOwotICB9CisjIGRlZmluZSBHVEVTVF9DT01QSUxFX0FTU0VSVF8oZXhwciwgbXNn
KSBcCisgIHR5cGVkZWYgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29tcGlsZUFzc2VydDwoc3RhdGlj
X2Nhc3Q8Ym9vbD4oZXhwcikpPiBcCisgICAgICBtc2dbc3RhdGljX2Nhc3Q8Ym9vbD4oZXhwcikg
PyAxIDogLTFdIEdURVNUX0FUVFJJQlVURV9VTlVTRURfCisjZW5kaWYgIC8vICFHVEVTVF9MQU5H
X0NYWDExCiAKLSAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgewotICAgIGZyZWUocCk7
Ci0gIH0KKy8vIEltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgR1RFU1RfQ09NUElMRV9BU1NFUlRf
OgorLy8KKy8vIChJbiBDKysxMSwgd2Ugc2ltcGx5IHVzZSBzdGF0aWNfYXNzZXJ0IGluc3RlYWQg
b2YgdGhlIGZvbGxvd2luZykKKy8vCisvLyAtIEdURVNUX0NPTVBJTEVfQVNTRVJUXyB3b3JrcyBi
eSBkZWZpbmluZyBhbiBhcnJheSB0eXBlIHRoYXQgaGFzIC0xCisvLyAgIGVsZW1lbnRzIChhbmQg
dGh1cyBpcyBpbnZhbGlkKSB3aGVuIHRoZSBleHByZXNzaW9uIGlzIGZhbHNlLgorLy8KKy8vIC0g
VGhlIHNpbXBsZXIgZGVmaW5pdGlvbgorLy8KKy8vICAgICNkZWZpbmUgR1RFU1RfQ09NUElMRV9B
U1NFUlRfKGV4cHIsIG1zZykgdHlwZWRlZiBjaGFyIG1zZ1soZXhwcikgPyAxIDogLTFdCisvLwor
Ly8gICBkb2VzIG5vdCB3b3JrLCBhcyBnY2Mgc3VwcG9ydHMgdmFyaWFibGUtbGVuZ3RoIGFycmF5
cyB3aG9zZSBzaXplcworLy8gICBhcmUgZGV0ZXJtaW5lZCBhdCBydW4tdGltZSAodGhpcyBpcyBn
Y2MncyBleHRlbnNpb24gYW5kIG5vdCBwYXJ0CisvLyAgIG9mIHRoZSBDKysgc3RhbmRhcmQpLiAg
QXMgYSByZXN1bHQsIGdjYyBmYWlscyB0byByZWplY3QgdGhlCisvLyAgIGZvbGxvd2luZyBjb2Rl
IHdpdGggdGhlIHNpbXBsZSBkZWZpbml0aW9uOgorLy8KKy8vICAgICBpbnQgZm9vOworLy8gICAg
IEdURVNUX0NPTVBJTEVfQVNTRVJUXyhmb28sIG1zZyk7IC8vIG5vdCBzdXBwb3NlZCB0byBjb21w
aWxlIGFzIGZvbyBpcworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IG5vdCBhIGNvbXBpbGUtdGltZSBjb25zdGFudC4KKy8vCisvLyAtIEJ5IHVzaW5nIHRoZSB0eXBl
IENvbXBpbGVBc3NlcnQ8KGJvb2woZXhwcikpPiwgd2UgZW5zdXJlcyB0aGF0CisvLyAgIGV4cHIg
aXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuICAoVGVtcGxhdGUgYXJndW1lbnRzIG11c3QgYmUK
Ky8vICAgZGV0ZXJtaW5lZCBhdCBjb21waWxlLXRpbWUuKQorLy8KKy8vIC0gVGhlIG91dHRlciBw
YXJlbnRoZXNlcyBpbiBDb21waWxlQXNzZXJ0PChib29sKGV4cHIpKT4gYXJlIG5lY2Vzc2FyeQor
Ly8gICB0byB3b3JrIGFyb3VuZCBhIGJ1ZyBpbiBnY2MgMy40LjQgYW5kIDQuMC4xLiAgSWYgd2Ug
aGFkIHdyaXR0ZW4KKy8vCisvLyAgICAgQ29tcGlsZUFzc2VydDxib29sKGV4cHIpPgorLy8KKy8v
ICAgaW5zdGVhZCwgdGhlc2UgY29tcGlsZXJzIHdpbGwgcmVmdXNlIHRvIGNvbXBpbGUKKy8vCisv
LyAgICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKDUgPiAwLCBzb21lX21lc3NhZ2UpOworLy8KKy8v
ICAgKFRoZXkgc2VlbSB0byB0aGluayB0aGUgIj4iIGluICI1ID4gMCIgbWFya3MgdGhlIGVuZCBv
ZiB0aGUKKy8vICAgdGVtcGxhdGUgYXJndW1lbnQgbGlzdC4pCisvLworLy8gLSBUaGUgYXJyYXkg
c2l6ZSBpcyAoYm9vbChleHByKSA/IDEgOiAtMSksIGluc3RlYWQgb2Ygc2ltcGx5CisvLworLy8g
ICAgICgoZXhwcikgPyAxIDogLTEpLgorLy8KKy8vICAgVGhpcyBpcyB0byBhdm9pZCBydW5uaW5n
IGludG8gYSBidWcgaW4gTVMgVkMgNy4xLCB3aGljaAorLy8gICBjYXVzZXMgKCgwLjApID8gMSA6
IC0xKSB0byBpbmNvcnJlY3RseSBldmFsdWF0ZSB0byAxLgogCi0gIHZvaWQqIG9wZXJhdG9yIG5l
d1tdKHNpemVfdCBzaXplKSB7Ci0gICAgcmV0dXJuIG1hbGxvYyhzaXplKTsKLSAgfQorLy8gU3Rh
dGljQXNzZXJ0VHlwZUVxSGVscGVyIGlzIHVzZWQgYnkgU3RhdGljQXNzZXJ0VHlwZUVxIGRlZmlu
ZWQgaW4gZ3Rlc3QuaC4KKy8vCisvLyBUaGlzIHRlbXBsYXRlIGlzIGRlY2xhcmVkLCBidXQgaW50
ZW50aW9uYWxseSB1bmRlZmluZWQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
Pgorc3RydWN0IFN0YXRpY0Fzc2VydFR5cGVFcUhlbHBlcjsKIAotICB2b2lkIG9wZXJhdG9yIGRl
bGV0ZVtdKHZvaWQqIHApIHsKLSAgICBmcmVlKHApOwotICB9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK3N0cnVjdCBTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI8VCwgVD4geworICBlbnVtIHsgdmFs
dWUgPSB0cnVlIH07CiB9OwogCisvLyBFdmFsdWF0ZXMgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50
cyBpbiAnYXJyYXknLgorI2RlZmluZSBHVEVTVF9BUlJBWV9TSVpFXyhhcnJheSkgKHNpemVvZihh
cnJheSkgLyBzaXplb2YoYXJyYXlbMF0pKQogCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcK
K3R5cGVkZWYgOjpzdHJpbmcgc3RyaW5nOworI2Vsc2UKK3R5cGVkZWYgOjpzdGQ6OnN0cmluZyBz
dHJpbmc7CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKKyNpZiBHVEVTVF9I
QVNfR0xPQkFMX1dTVFJJTkcKK3R5cGVkZWYgOjp3c3RyaW5nIHdzdHJpbmc7CisjZWxpZiBHVEVT
VF9IQVNfU1REX1dTVFJJTkcKK3R5cGVkZWYgOjpzdGQ6OndzdHJpbmcgd3N0cmluZzsKKyNlbmRp
ZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCiAKIC8vIEEgaGVscGVyIGZvciBzdXBwcmVz
c2luZyB3YXJuaW5ncyBvbiBjb25zdGFudCBjb25kaXRpb24uICBJdCBqdXN0CiAvLyByZXR1cm5z
ICdjb25kaXRpb24nLgpAQCAtNjg1LDYgKzExNDMsMTIgQEAgY2xhc3Mgc2NvcGVkX3B0ciB7CiAg
ICAgICBwdHJfID0gcDsKICAgICB9CiAgIH0KKworICBmcmllbmQgdm9pZCBzd2FwKHNjb3BlZF9w
dHImIGEsIHNjb3BlZF9wdHImIGIpIHsKKyAgICB1c2luZyBzdGQ6OnN3YXA7CisgICAgc3dhcChh
LnB0cl8sIGIucHRyXyk7CisgIH0KKwogIHByaXZhdGU6CiAgIFQqIHB0cl87CiAKQEAgLTcwNSw3
ICsxMTY5LDkgQEAgY2xhc3MgR1RFU1RfQVBJXyBSRSB7CiAgIFJFKGNvbnN0IDo6c3RkOjpzdHJp
bmcmIHJlZ2V4KSB7IEluaXQocmVnZXguY19zdHIoKSk7IH0gIC8vIE5PTElOVAogCiAjaWYgR1RF
U1RfSEFTX0dMT0JBTF9TVFJJTkcKKwogICBSRShjb25zdCA6OnN0cmluZyYgcmVnZXgpIHsgSW5p
dChyZWdleC5jX3N0cigpKTsgfSAgLy8gTk9MSU5UCisKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0dM
T0JBTF9TVFJJTkcKIAogICBSRShjb25zdCBjaGFyKiByZWdleCkgeyBJbml0KHJlZ2V4KTsgfSAg
Ly8gTk9MSU5UCkBAIC03MjksMTIgKzExOTUsMTQgQEAgY2xhc3MgR1RFU1RfQVBJXyBSRSB7CiAg
IH0KIAogI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKICAgc3RhdGljIGJvb2wgRnVsbE1h
dGNoKGNvbnN0IDo6c3RyaW5nJiBzdHIsIGNvbnN0IFJFJiByZSkgewogICAgIHJldHVybiBGdWxs
TWF0Y2goc3RyLmNfc3RyKCksIHJlKTsKICAgfQogICBzdGF0aWMgYm9vbCBQYXJ0aWFsTWF0Y2go
Y29uc3QgOjpzdHJpbmcmIHN0ciwgY29uc3QgUkUmIHJlKSB7CiAgICAgcmV0dXJuIFBhcnRpYWxN
YXRjaChzdHIuY19zdHIoKSwgcmUpOwogICB9CisKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JB
TF9TVFJJTkcKIAogICBzdGF0aWMgYm9vbCBGdWxsTWF0Y2goY29uc3QgY2hhciogc3RyLCBjb25z
dCBSRSYgcmUpOwpAQCAtNzQzLDIyICsxMjExLDM2IEBAIGNsYXNzIEdURVNUX0FQSV8gUkUgewog
IHByaXZhdGU6CiAgIHZvaWQgSW5pdChjb25zdCBjaGFyKiByZWdleCk7CiAKLSAgLy8gV2UgdXNl
IGEgY29uc3QgY2hhciogaW5zdGVhZCBvZiBhIHN0cmluZywgYXMgR29vZ2xlIFRlc3QgbWF5IGJl
IHVzZWQKLSAgLy8gd2hlcmUgc3RyaW5nIGlzIG5vdCBhdmFpbGFibGUuICBXZSBhbHNvIGRvIG5v
dCB1c2UgR29vZ2xlIFRlc3QncyBvd24KLSAgLy8gU3RyaW5nIHR5cGUgaGVyZSwgaW4gb3JkZXIg
dG8gc2ltcGxpZnkgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlCi0gIC8vIGZpbGVzLgorICAvLyBX
ZSB1c2UgYSBjb25zdCBjaGFyKiBpbnN0ZWFkIG9mIGFuIHN0ZDo6c3RyaW5nLCBhcyBHb29nbGUg
VGVzdCB1c2VkIHRvIGJlCisgIC8vIHVzZWQgd2hlcmUgc3RkOjpzdHJpbmcgaXMgbm90IGF2YWls
YWJsZS4gIFRPRE8od2FuQGdvb2dsZS5jb20pOiBjaGFuZ2UgdG8KKyAgLy8gc3RkOjpzdHJpbmcu
CiAgIGNvbnN0IGNoYXIqIHBhdHRlcm5fOwogICBib29sIGlzX3ZhbGlkXzsKKwogI2lmIEdURVNU
X1VTRVNfUE9TSVhfUkUKKwogICByZWdleF90IGZ1bGxfcmVnZXhfOyAgICAgLy8gRm9yIEZ1bGxN
YXRjaCgpLgogICByZWdleF90IHBhcnRpYWxfcmVnZXhfOyAgLy8gRm9yIFBhcnRpYWxNYXRjaCgp
LgorCiAjZWxzZSAgLy8gR1RFU1RfVVNFU19TSU1QTEVfUkUKKwogICBjb25zdCBjaGFyKiBmdWxs
X3BhdHRlcm5fOyAgLy8gRm9yIEZ1bGxNYXRjaCgpOworCiAjZW5kaWYKIAogICBHVEVTVF9ESVNB
TExPV19BU1NJR05fKFJFKTsKIH07CiAKKy8vIEZvcm1hdHMgYSBzb3VyY2UgZmlsZSBwYXRoIGFu
ZCBhIGxpbmUgbnVtYmVyIGFzIHRoZXkgd291bGQgYXBwZWFyCisvLyBpbiBhbiBlcnJvciBtZXNz
YWdlIGZyb20gdGhlIGNvbXBpbGVyIHVzZWQgdG8gY29tcGlsZSB0aGlzIGNvZGUuCitHVEVTVF9B
UElfIDo6c3RkOjpzdHJpbmcgRm9ybWF0RmlsZUxvY2F0aW9uKGNvbnN0IGNoYXIqIGZpbGUsIGlu
dCBsaW5lKTsKKworLy8gRm9ybWF0cyBhIGZpbGUgbG9jYXRpb24gZm9yIGNvbXBpbGVyLWluZGVw
ZW5kZW50IFhNTCBvdXRwdXQuCisvLyBBbHRob3VnaCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwbGF0
Zm9ybSBkZXBlbmRlbnQsIHdlIHB1dCBpdCBuZXh0IHRvCisvLyBGb3JtYXRGaWxlTG9jYXRpb24g
aW4gb3JkZXIgdG8gY29udHJhc3QgdGhlIHR3byBmdW5jdGlvbnMuCitHVEVTVF9BUElfIDo6c3Rk
OjpzdHJpbmcgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvbihjb25zdCBjaGFy
KiBmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGxpbmUpOworCiAvLyBEZWZpbmVzIGxvZ2dpbmcgdXRpbGl0aWVz
OgogLy8gICBHVEVTVF9MT0dfKHNldmVyaXR5KSAtIGxvZ3MgbWVzc2FnZXMgYXQgdGhlIHNwZWNp
ZmllZCBzZXZlcml0eSBsZXZlbC4gVGhlCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgbWVz
c2FnZSBpdHNlbGYgaXMgc3RyZWFtZWQgaW50byB0aGUgbWFjcm8uCkBAIC03OTAsMTMgKzEyNzIs
MTggQEAgY2xhc3MgR1RFU1RfQVBJXyBHVGVzdExvZyB7CiAgIEdURVNUX0RJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTl8oR1Rlc3RMb2cpOwogfTsKIAotI2RlZmluZSBHVEVTVF9MT0dfKHNldmVyaXR5
KSBcCisjaWYgIWRlZmluZWQoR1RFU1RfTE9HXykKKworIyBkZWZpbmUgR1RFU1RfTE9HXyhzZXZl
cml0eSkgXAogICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkdUZXN0TG9nKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkdURVNUXyMjc2V2ZXJpdHksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX0ZJTEVfXywgX19MSU5FX18pLkdldFN0cmVhbSgpCiAKIGlubGluZSB2b2lkIExvZ1Rv
U3RkZXJyKCkge30KIGlubGluZSB2b2lkIEZsdXNoSW5mb0xvZygpIHsgZmZsdXNoKE5VTEwpOyB9
CiAKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfTE9HXykKKworI2lmICFkZWZpbmVkKEdURVNU
X0NIRUNLXykKIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRS4KIC8vCiAv
LyBHVEVTVF9DSEVDS18gaXMgYW4gYWxsLW1vZGUgYXNzZXJ0LiBJdCBhYm9ydHMgdGhlIHByb2dy
YW0gaWYgdGhlIGNvbmRpdGlvbgpAQCAtODExLDEyICsxMjk4LDEzIEBAIGlubGluZSB2b2lkIEZs
dXNoSW5mb0xvZygpIHsgZmZsdXNoKE5VTEwpOyB9CiAvLyAgICBjb25kaXRpb24gaXRzZWxmLCBw
bHVzIGFkZGl0aW9uYWwgbWVzc2FnZSBzdHJlYW1lZCBpbnRvIGl0LCBpZiBhbnksCiAvLyAgICBh
bmQgdGhlbiBpdCBhYm9ydHMgdGhlIHByb2dyYW0uIEl0IGFib3J0cyB0aGUgcHJvZ3JhbSBpcnJl
c3BlY3RpdmUgb2YKIC8vICAgIHdoZXRoZXIgaXQgaXMgYnVpbHQgaW4gdGhlIGRlYnVnIG1vZGUg
b3Igbm90LgotI2RlZmluZSBHVEVTVF9DSEVDS18oY29uZGl0aW9uKSBcCisjIGRlZmluZSBHVEVT
VF9DSEVDS18oY29uZGl0aW9uKSBcCiAgICAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8g
XAogICAgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpJc1RydWUoY29uZGl0aW9uKSkgXAogICAg
ICAgOyBcCiAgICAgZWxzZSBcCiAgICAgICBHVEVTVF9MT0dfKEZBVEFMKSA8PCAiQ29uZGl0aW9u
ICIgI2NvbmRpdGlvbiAiIGZhaWxlZC4gIgorI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9DSEVD
S18pCiAKIC8vIEFuIGFsbC1tb2RlIGFzc2VydCB0byB2ZXJpZnkgdGhhdCB0aGUgZ2l2ZW4gUE9T
SVgtc3R5bGUgZnVuY3Rpb24KIC8vIGNhbGwgcmV0dXJucyAwIChpbmRpY2F0aW5nIHN1Y2Nlc3Mp
LiAgS25vd24gbGltaXRhdGlvbjogdGhpcwpAQCAtODI4LDggKzEzMTYsNzkgQEAgaW5saW5lIHZv
aWQgRmx1c2hJbmZvTG9nKCkgeyBmZmx1c2goTlVMTCk7IH0KICAgICBHVEVTVF9MT0dfKEZBVEFM
KSA8PCAjcG9zaXhfY2FsbCA8PCAiZmFpbGVkIHdpdGggZXJyb3IgIiBcCiAgICAgICAgICAgICAg
ICAgICAgICAgPDwgZ3Rlc3RfZXJyb3IKIAorI2lmIEdURVNUX0hBU19TVERfTU9WRV8KK3VzaW5n
IHN0ZDo6bW92ZTsKKyNlbHNlICAvLyBHVEVTVF9IQVNfU1REX01PVkVfCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2NvbnN0IFQmIG1vdmUoY29uc3QgVCYgdCkgeworICByZXR1cm4gdDsKK30KKyNl
bmRpZiAgLy8gR1RFU1RfSEFTX1NURF9NT1ZFXworCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElP
TiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgogLy8KKy8vIFVzZSBJbXBsaWNpdENhc3RfIGFz
IGEgc2FmZSB2ZXJzaW9uIG9mIHN0YXRpY19jYXN0IGZvciB1cGNhc3RpbmcgaW4KKy8vIHRoZSB0
eXBlIGhpZXJhcmNoeSAoZS5nLiBjYXN0aW5nIGEgRm9vKiB0byBhIFN1cGVyY2xhc3NPZkZvbyog
b3IgYQorLy8gY29uc3QgRm9vKikuICBXaGVuIHlvdSB1c2UgSW1wbGljaXRDYXN0XywgdGhlIGNv
bXBpbGVyIGNoZWNrcyB0aGF0CisvLyB0aGUgY2FzdCBpcyBzYWZlLiAgU3VjaCBleHBsaWNpdCBJ
bXBsaWNpdENhc3RfcyBhcmUgbmVjZXNzYXJ5IGluCisvLyBzdXJwcmlzaW5nbHkgbWFueSBzaXR1
YXRpb25zIHdoZXJlIEMrKyBkZW1hbmRzIGFuIGV4YWN0IHR5cGUgbWF0Y2gKKy8vIGluc3RlYWQg
b2YgYW4gYXJndW1lbnQgdHlwZSBjb252ZXJ0YWJsZSB0byBhIHRhcmdldCB0eXBlLgorLy8KKy8v
IFRoZSBzeW50YXggZm9yIHVzaW5nIEltcGxpY2l0Q2FzdF8gaXMgdGhlIHNhbWUgYXMgZm9yIHN0
YXRpY19jYXN0OgorLy8KKy8vICAgSW1wbGljaXRDYXN0XzxUb1R5cGU+KGV4cHIpCisvLworLy8g
SW1wbGljaXRDYXN0XyB3b3VsZCBoYXZlIGJlZW4gcGFydCBvZiB0aGUgQysrIHN0YW5kYXJkIGxp
YnJhcnksCisvLyBidXQgdGhlIHByb3Bvc2FsIHdhcyBzdWJtaXR0ZWQgdG9vIGxhdGUuICBJdCB3
aWxsIHByb2JhYmx5IG1ha2UKKy8vIGl0cyB3YXkgaW50byB0aGUgbGFuZ3VhZ2UgaW4gdGhlIGZ1
dHVyZS4KKy8vCisvLyBUaGlzIHJlbGF0aXZlbHkgdWdseSBuYW1lIGlzIGludGVudGlvbmFsLiBJ
dCBwcmV2ZW50cyBjbGFzaGVzIHdpdGgKKy8vIHNpbWlsYXIgZnVuY3Rpb25zIHVzZXJzIG1heSBo
YXZlIChlLmcuLCBpbXBsaWNpdF9jYXN0KS4gVGhlIGludGVybmFsCisvLyBuYW1lc3BhY2UgYWxv
bmUgaXMgbm90IGVub3VnaCBiZWNhdXNlIHRoZSBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYnkgQURM
LgordGVtcGxhdGU8dHlwZW5hbWUgVG8+CitpbmxpbmUgVG8gSW1wbGljaXRDYXN0XyhUbyB4KSB7
IHJldHVybiB4OyB9CisKKy8vIFdoZW4geW91IHVwY2FzdCAodGhhdCBpcywgY2FzdCBhIHBvaW50
ZXIgZnJvbSB0eXBlIEZvbyB0byB0eXBlCisvLyBTdXBlcmNsYXNzT2ZGb28pLCBpdCdzIGZpbmUg
dG8gdXNlIEltcGxpY2l0Q2FzdF88Piwgc2luY2UgdXBjYXN0cworLy8gYWx3YXlzIHN1Y2NlZWQu
ICBXaGVuIHlvdSBkb3duY2FzdCAodGhhdCBpcywgY2FzdCBhIHBvaW50ZXIgZnJvbQorLy8gdHlw
ZSBGb28gdG8gdHlwZSBTdWJjbGFzc09mRm9vKSwgc3RhdGljX2Nhc3Q8PiBpc24ndCBzYWZlLCBi
ZWNhdXNlCisvLyBob3cgZG8geW91IGtub3cgdGhlIHBvaW50ZXIgaXMgcmVhbGx5IG9mIHR5cGUg
U3ViY2xhc3NPZkZvbz8gIEl0CisvLyBjb3VsZCBiZSBhIGJhcmUgRm9vLCBvciBvZiB0eXBlIERp
ZmZlcmVudFN1YmNsYXNzT2ZGb28uICBUaHVzLAorLy8gd2hlbiB5b3UgZG93bmNhc3QsIHlvdSBz
aG91bGQgdXNlIHRoaXMgbWFjcm8uICBJbiBkZWJ1ZyBtb2RlLCB3ZQorLy8gdXNlIGR5bmFtaWNf
Y2FzdDw+IHRvIGRvdWJsZS1jaGVjayB0aGUgZG93bmNhc3QgaXMgbGVnYWwgKHdlIGRpZQorLy8g
aWYgaXQncyBub3QpLiAgSW4gbm9ybWFsIG1vZGUsIHdlIGRvIHRoZSBlZmZpY2llbnQgc3RhdGlj
X2Nhc3Q8PgorLy8gaW5zdGVhZC4gIFRodXMsIGl0J3MgaW1wb3J0YW50IHRvIHRlc3QgaW4gZGVi
dWcgbW9kZSB0byBtYWtlIHN1cmUKKy8vIHRoZSBjYXN0IGlzIGxlZ2FsIQorLy8gICAgVGhpcyBp
cyB0aGUgb25seSBwbGFjZSBpbiB0aGUgY29kZSB3ZSBzaG91bGQgdXNlIGR5bmFtaWNfY2FzdDw+
LgorLy8gSW4gcGFydGljdWxhciwgeW91IFNIT1VMRE4nVCBiZSB1c2luZyBkeW5hbWljX2Nhc3Q8
PiBpbiBvcmRlciB0bworLy8gZG8gUlRUSSAoZWcgY29kZSBsaWtlIHRoaXM6CisvLyAgICBpZiAo
ZHluYW1pY19jYXN0PFN1YmNsYXNzMT4oZm9vKSkgSGFuZGxlQVN1YmNsYXNzMU9iamVjdChmb28p
OworLy8gICAgaWYgKGR5bmFtaWNfY2FzdDxTdWJjbGFzczI+KGZvbykpIEhhbmRsZUFTdWJjbGFz
czJPYmplY3QoZm9vKTsKKy8vIFlvdSBzaG91bGQgZGVzaWduIHRoZSBjb2RlIHNvbWUgb3RoZXIg
d2F5IG5vdCB0byBuZWVkIHRoaXMuCisvLworLy8gVGhpcyByZWxhdGl2ZWx5IHVnbHkgbmFtZSBp
cyBpbnRlbnRpb25hbC4gSXQgcHJldmVudHMgY2xhc2hlcyB3aXRoCisvLyBzaW1pbGFyIGZ1bmN0
aW9ucyB1c2VycyBtYXkgaGF2ZSAoZS5nLiwgZG93bl9jYXN0KS4gVGhlIGludGVybmFsCisvLyBu
YW1lc3BhY2UgYWxvbmUgaXMgbm90IGVub3VnaCBiZWNhdXNlIHRoZSBmdW5jdGlvbiBjYW4gYmUg
Zm91bmQgYnkgQURMLgordGVtcGxhdGU8dHlwZW5hbWUgVG8sIHR5cGVuYW1lIEZyb20+ICAvLyB1
c2UgbGlrZSB0aGlzOiBEb3duQ2FzdF88VCo+KGZvbyk7CitpbmxpbmUgVG8gRG93bkNhc3RfKEZy
b20qIGYpIHsgIC8vIHNvIHdlIG9ubHkgYWNjZXB0IHBvaW50ZXJzCisgIC8vIEVuc3VyZXMgdGhh
dCBUbyBpcyBhIHN1Yi10eXBlIG9mIEZyb20gKi4gIFRoaXMgdGVzdCBpcyBoZXJlIG9ubHkKKyAg
Ly8gZm9yIGNvbXBpbGUtdGltZSB0eXBlIGNoZWNraW5nLCBhbmQgaGFzIG5vIG92ZXJoZWFkIGlu
IGFuCisgIC8vIG9wdGltaXplZCBidWlsZCBhdCBydW4tdGltZSwgYXMgaXQgd2lsbCBiZSBvcHRp
bWl6ZWQgYXdheQorICAvLyBjb21wbGV0ZWx5LgorICBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9D
T05EX1BVU0hfKCkKKyAgaWYgKGZhbHNlKSB7CisgIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NP
TkRfUE9QXygpCisgICAgY29uc3QgVG8gdG8gPSBOVUxMOworICAgIDo6dGVzdGluZzo6aW50ZXJu
YWw6OkltcGxpY2l0Q2FzdF88RnJvbSo+KHRvKTsKKyAgfQorCisjaWYgR1RFU1RfSEFTX1JUVEkK
KyAgLy8gUlRUSTogZGVidWcgbW9kZSBvbmx5IQorICBHVEVTVF9DSEVDS18oZiA9PSBOVUxMIHx8
IGR5bmFtaWNfY2FzdDxUbz4oZikgIT0gTlVMTCk7CisjZW5kaWYKKyAgcmV0dXJuIHN0YXRpY19j
YXN0PFRvPihmKTsKK30KKwogLy8gRG93bmNhc3RzIHRoZSBwb2ludGVyIG9mIHR5cGUgQmFzZSB0
byBEZXJpdmVkLgogLy8gRGVyaXZlZCBtdXN0IGJlIGEgc3ViY2xhc3Mgb2YgQmFzZS4gVGhlIHBh
cmFtZXRlciBNVVNUCiAvLyBwb2ludCB0byBhIGNsYXNzIG9mIHR5cGUgRGVyaXZlZCwgbm90IGFu
eSBzdWJjbGFzcyBvZiBpdC4KQEAgLTgzOSwxMyArMTM5OCwxOCBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
RGVyaXZlZCwgY2xhc3MgQmFzZT4KIERlcml2ZWQqIENoZWNrZWREb3duY2FzdFRvQWN0dWFsVHlw
ZShCYXNlKiBiYXNlKSB7CiAjaWYgR1RFU1RfSEFTX1JUVEkKICAgR1RFU1RfQ0hFQ0tfKHR5cGVp
ZCgqYmFzZSkgPT0gdHlwZWlkKERlcml2ZWQpKTsKKyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX0RP
V05DQVNUXworICByZXR1cm4gOjpkb3duX2Nhc3Q8RGVyaXZlZCo+KGJhc2UpOworI2VsaWYgR1RF
U1RfSEFTX1JUVEkKICAgcmV0dXJuIGR5bmFtaWNfY2FzdDxEZXJpdmVkKj4oYmFzZSk7ICAvLyBO
T0xJTlQKICNlbHNlCiAgIHJldHVybiBzdGF0aWNfY2FzdDxEZXJpdmVkKj4oYmFzZSk7ICAvLyBQ
b29yIG1hbidzIGRvd25jYXN0LgogI2VuZGlmCiB9CiAKLSNpZiBHVEVTVF9IQVNfU1RSRUFNX1JF
RElSRUNUSU9OXworI2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KIAogLy8gRGVmaW5l
cyB0aGUgc3RkZXJyIGNhcHR1cmVyOgogLy8gICBDYXB0dXJlU3Rkb3V0ICAgICAtIHN0YXJ0cyBj
YXB0dXJpbmcgc3Rkb3V0LgpAQCAtODU0LDMwICsxNDE4LDM5IEBAIERlcml2ZWQqIENoZWNrZWRE
b3duY2FzdFRvQWN0dWFsVHlwZShCYXNlKiBiYXNlKSB7CiAvLyAgIEdldENhcHR1cmVkU3RkZXJy
IC0gc3RvcHMgY2FwdHVyaW5nIHN0ZGVyciBhbmQgcmV0dXJucyB0aGUgY2FwdHVyZWQgc3RyaW5n
LgogLy8KIEdURVNUX0FQSV8gdm9pZCBDYXB0dXJlU3Rkb3V0KCk7Ci1HVEVTVF9BUElfIFN0cmlu
ZyBHZXRDYXB0dXJlZFN0ZG91dCgpOworR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBHZXRDYXB0dXJl
ZFN0ZG91dCgpOwogR1RFU1RfQVBJXyB2b2lkIENhcHR1cmVTdGRlcnIoKTsKLUdURVNUX0FQSV8g
U3RyaW5nIEdldENhcHR1cmVkU3RkZXJyKCk7CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIEdldENh
cHR1cmVkU3RkZXJyKCk7CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElP
TgorCisvLyBSZXR1cm5zIGEgcGF0aCB0byB0ZW1wb3JhcnkgZGlyZWN0b3J5LgorR1RFU1RfQVBJ
XyBzdGQ6OnN0cmluZyBUZW1wRGlyKCk7CisKKy8vIFJldHVybnMgdGhlIHNpemUgKGluIGJ5dGVz
KSBvZiBhIGZpbGUuCitHVEVTVF9BUElfIHNpemVfdCBHZXRGaWxlU2l6ZShGSUxFKiBmaWxlKTsK
IAotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXworLy8gUmVhZHMgdGhl
IGVudGlyZSBjb250ZW50IG9mIGEgZmlsZSBhcyBhIHN0cmluZy4KK0dURVNUX0FQSV8gc3RkOjpz
dHJpbmcgUmVhZEVudGlyZUZpbGUoRklMRSogZmlsZSk7CiAKKy8vIEFsbCBjb21tYW5kIGxpbmUg
YXJndW1lbnRzLgorR1RFU1RfQVBJXyBjb25zdCA6OnN0ZDo6dmVjdG9yPHRlc3Rpbmc6OmludGVy
bmFsOjpzdHJpbmc+JiBHZXRBcmd2cygpOwogCiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKIAot
Ly8gQSBjb3B5IG9mIGFsbCBjb21tYW5kIGxpbmUgYXJndW1lbnRzLiAgU2V0IGJ5IEluaXRHb29n
bGVUZXN0KCkuCi1leHRlcm4gOjpzdGQ6OnZlY3RvcjxTdHJpbmc+IGdfYXJndnM7Citjb25zdCA6
OnN0ZDo6dmVjdG9yPHRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmc+JiBHZXRJbmplY3RhYmxlQXJn
dnMoKTsKK3ZvaWQgU2V0SW5qZWN0YWJsZUFyZ3ZzKGNvbnN0IDo6c3RkOjp2ZWN0b3I8dGVzdGlu
Zzo6aW50ZXJuYWw6OnN0cmluZz4qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19h
cmd2cyk7CiAKLS8vIEdURVNUX0hBU19ERUFUSF9URVNUIGltcGxpZXMgd2UgaGF2ZSA6OnN0ZDo6
c3RyaW5nLgotY29uc3QgOjpzdGQ6OnZlY3RvcjxTdHJpbmc+JiBHZXRBcmd2cygpOwogCiAjZW5k
aWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCiAKIC8vIERlZmluZXMgc3luY2hyb25pemF0aW9u
IHByaW1pdGl2ZXMuCi0KLSNpZiBHVEVTVF9IQVNfUFRIUkVBRAotCi0vLyBTbGVlcHMgZm9yIChy
b3VnaGx5KSBuIG1pbGxpLXNlY29uZHMuICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZm9yCi0vLyB0
ZXN0aW5nIEdvb2dsZSBUZXN0J3Mgb3duIGNvbnN0cnVjdHMuICBEb24ndCB1c2UgaXQgaW4gdXNl
ciB0ZXN0cywKLS8vIGVpdGhlciBkaXJlY3RseSBvciBpbmRpcmVjdGx5LgorI2lmIEdURVNUX0lT
X1RIUkVBRFNBRkUKKyMgaWYgR1RFU1RfSEFTX1BUSFJFQUQKKy8vIFNsZWVwcyBmb3IgKHJvdWdo
bHkpIG4gbWlsbGlzZWNvbmRzLiAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGZvciB0ZXN0aW5nCisv
LyBHb29nbGUgVGVzdCdzIG93biBjb25zdHJ1Y3RzLiAgRG9uJ3QgdXNlIGl0IGluIHVzZXIgdGVz
dHMsIGVpdGhlcgorLy8gZGlyZWN0bHkgb3IgaW5kaXJlY3RseS4KIGlubGluZSB2b2lkIFNsZWVw
TWlsbGlzZWNvbmRzKGludCBuKSB7CiAgIGNvbnN0IHRpbWVzcGVjIHRpbWUgPSB7CiAgICAgMCwg
ICAgICAgICAgICAgICAgICAvLyAwIHNlY29uZHMuCkBAIC04ODUsNyArMTQ1OCwxMyBAQCBpbmxp
bmUgdm9pZCBTbGVlcE1pbGxpc2Vjb25kcyhpbnQgbikgewogICB9OwogICBuYW5vc2xlZXAoJnRp
bWUsIE5VTEwpOwogfQorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX1BUSFJFQUQKIAorIyBpZiBHVEVT
VF9IQVNfTk9USUZJQ0FUSU9OXworLy8gTm90aWZpY2F0aW9uIGhhcyBhbHJlYWR5IGJlZW4gaW1w
b3J0ZWQgaW50byB0aGUgbmFtZXNwYWNlLgorLy8gTm90aGluZyB0byBkbyBoZXJlLgorCisjIGVs
aWYgR1RFU1RfSEFTX1BUSFJFQUQKIC8vIEFsbG93cyBhIGNvbnRyb2xsZXIgdGhyZWFkIHRvIHBh
dXNlIGV4ZWN1dGlvbiBvZiBuZXdseSBjcmVhdGVkCiAvLyB0aHJlYWRzIHVudGlsIG5vdGlmaWVk
LiAgSW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MgbXVzdCBiZSBjcmVhdGVkCiAvLyBhbmQgZGVzdHJv
eWVkIGluIHRoZSBjb250cm9sbGVyIHRocmVhZC4KQEAgLTg5NCwyNSArMTQ3Myw5NiBAQCBpbmxp
bmUgdm9pZCBTbGVlcE1pbGxpc2Vjb25kcyhpbnQgbikgewogLy8gdXNlIGl0IGluIHVzZXIgdGVz
dHMsIGVpdGhlciBkaXJlY3RseSBvciBpbmRpcmVjdGx5LgogY2xhc3MgTm90aWZpY2F0aW9uIHsK
ICBwdWJsaWM6Ci0gIE5vdGlmaWNhdGlvbigpIDogbm90aWZpZWRfKGZhbHNlKSB7fQorICBOb3Rp
ZmljYXRpb24oKSA6IG5vdGlmaWVkXyhmYWxzZSkgeworICAgIEdURVNUX0NIRUNLX1BPU0lYX1NV
Q0NFU1NfKHB0aHJlYWRfbXV0ZXhfaW5pdCgmbXV0ZXhfLCBOVUxMKSk7CisgIH0KKyAgfk5vdGlm
aWNhdGlvbigpIHsKKyAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm11dGV4Xyk7CisgIH0KIAog
ICAvLyBOb3RpZmllcyBhbGwgdGhyZWFkcyBjcmVhdGVkIHdpdGggdGhpcyBub3RpZmljYXRpb24g
dG8gc3RhcnQuIE11c3QKICAgLy8gYmUgY2FsbGVkIGZyb20gdGhlIGNvbnRyb2xsZXIgdGhyZWFk
LgotICB2b2lkIE5vdGlmeSgpIHsgbm90aWZpZWRfID0gdHJ1ZTsgfQorICB2b2lkIE5vdGlmeSgp
IHsKKyAgICBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4Xyk7CisgICAgbm90aWZpZWRfID0gdHJ1
ZTsKKyAgICBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXhfKTsKKyAgfQogCiAgIC8vIEJsb2Nr
cyB1bnRpbCB0aGUgY29udHJvbGxlciB0aHJlYWQgbm90aWZpZXMuIE11c3QgYmUgY2FsbGVkIGZy
b20gYSB0ZXN0CiAgIC8vIHRocmVhZC4KICAgdm9pZCBXYWl0Rm9yTm90aWZpY2F0aW9uKCkgewot
ICAgIHdoaWxlKCFub3RpZmllZF8pIHsKKyAgICBmb3IgKDs7KSB7CisgICAgICBwdGhyZWFkX211
dGV4X2xvY2soJm11dGV4Xyk7CisgICAgICBjb25zdCBib29sIG5vdGlmaWVkID0gbm90aWZpZWRf
OworICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4Xyk7CisgICAgICBpZiAobm90aWZp
ZWQpCisgICAgICAgIGJyZWFrOwogICAgICAgU2xlZXBNaWxsaXNlY29uZHMoMTApOwogICAgIH0K
ICAgfQogCiAgcHJpdmF0ZToKLSAgdm9sYXRpbGUgYm9vbCBub3RpZmllZF87CisgIHB0aHJlYWRf
bXV0ZXhfdCBtdXRleF87CisgIGJvb2wgbm90aWZpZWRfOworCisgIEdURVNUX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTl8oTm90aWZpY2F0aW9uKTsKK307CisKKyMgZWxpZiBHVEVTVF9PU19XSU5E
T1dTICYmICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUCisK
K0dURVNUX0FQSV8gdm9pZCBTbGVlcE1pbGxpc2Vjb25kcyhpbnQgbik7CisKKy8vIFByb3ZpZGVz
IGxlYWstc2FmZSBXaW5kb3dzIGtlcm5lbCBoYW5kbGUgb3duZXJzaGlwLgorLy8gVXNlZCBpbiBk
ZWF0aCB0ZXN0cyBhbmQgaW4gdGhyZWFkaW5nIHN1cHBvcnQuCitjbGFzcyBHVEVTVF9BUElfIEF1
dG9IYW5kbGUgeworIHB1YmxpYzoKKyAgLy8gQXNzdW1lIHRoYXQgV2luMzIgSEFORExFIHR5cGUg
aXMgZXF1aXZhbGVudCB0byB2b2lkKi4gRG9pbmcgc28gYWxsb3dzIHVzIHRvCisgIC8vIGF2b2lk
IGluY2x1ZGluZyA8d2luZG93cy5oPiBpbiB0aGlzIGhlYWRlciBmaWxlLiBJbmNsdWRpbmcgPHdp
bmRvd3MuaD4gaXMKKyAgLy8gdW5kZXNpcmFibGUgYmVjYXVzZSBpdCBkZWZpbmVzIGEgbG90IG9m
IHN5bWJvbHMgYW5kIG1hY3JvcyB0aGF0IHRlbmQgdG8KKyAgLy8gY29uZmxpY3Qgd2l0aCBjbGll
bnQgY29kZS4gVGhpcyBhc3N1bXB0aW9uIGlzIHZlcmlmaWVkIGJ5CisgIC8vIFdpbmRvd3NUeXBl
c1Rlc3QuSEFORExFSXNWb2lkU3Rhci4KKyAgdHlwZWRlZiB2b2lkKiBIYW5kbGU7CisgIEF1dG9I
YW5kbGUoKTsKKyAgZXhwbGljaXQgQXV0b0hhbmRsZShIYW5kbGUgaGFuZGxlKTsKKworICB+QXV0
b0hhbmRsZSgpOworCisgIEhhbmRsZSBHZXQoKSBjb25zdDsKKyAgdm9pZCBSZXNldCgpOworICB2
b2lkIFJlc2V0KEhhbmRsZSBoYW5kbGUpOworCisgcHJpdmF0ZToKKyAgLy8gUmV0dXJucyB0cnVl
IGlmZiB0aGUgaGFuZGxlIGlzIGEgdmFsaWQgaGFuZGxlIG9iamVjdCB0aGF0IGNhbiBiZSBjbG9z
ZWQuCisgIGJvb2wgSXNDbG9zZWFibGUoKSBjb25zdDsKKworICBIYW5kbGUgaGFuZGxlXzsKKwor
ICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEF1dG9IYW5kbGUpOworfTsKKworLy8g
QWxsb3dzIGEgY29udHJvbGxlciB0aHJlYWQgdG8gcGF1c2UgZXhlY3V0aW9uIG9mIG5ld2x5IGNy
ZWF0ZWQKKy8vIHRocmVhZHMgdW50aWwgbm90aWZpZWQuICBJbnN0YW5jZXMgb2YgdGhpcyBjbGFz
cyBtdXN0IGJlIGNyZWF0ZWQKKy8vIGFuZCBkZXN0cm95ZWQgaW4gdGhlIGNvbnRyb2xsZXIgdGhy
ZWFkLgorLy8KKy8vIFRoaXMgY2xhc3MgaXMgb25seSBmb3IgdGVzdGluZyBHb29nbGUgVGVzdCdz
IG93biBjb25zdHJ1Y3RzLiBEbyBub3QKKy8vIHVzZSBpdCBpbiB1c2VyIHRlc3RzLCBlaXRoZXIg
ZGlyZWN0bHkgb3IgaW5kaXJlY3RseS4KK2NsYXNzIEdURVNUX0FQSV8gTm90aWZpY2F0aW9uIHsK
KyBwdWJsaWM6CisgIE5vdGlmaWNhdGlvbigpOworICB2b2lkIE5vdGlmeSgpOworICB2b2lkIFdh
aXRGb3JOb3RpZmljYXRpb24oKTsKKworIHByaXZhdGU6CisgIEF1dG9IYW5kbGUgZXZlbnRfOwog
CiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTm90aWZpY2F0aW9uKTsKIH07Cisj
IGVuZGlmICAvLyBHVEVTVF9IQVNfTk9USUZJQ0FUSU9OXworCisvLyBPbiBNaW5HVywgd2UgY2Fu
IGhhdmUgYm90aCBHVEVTVF9PU19XSU5ET1dTIGFuZCBHVEVTVF9IQVNfUFRIUkVBRAorLy8gZGVm
aW5lZCwgYnV0IHdlIGRvbid0IHdhbnQgdG8gdXNlIE1pbkdXJ3MgcHRocmVhZHMgaW1wbGVtZW50
YXRpb24sIHdoaWNoCisvLyBoYXMgY29uZm9ybWFuY2UgcHJvYmxlbXMgd2l0aCBzb21lIHZlcnNp
b25zIG9mIHRoZSBQT1NJWCBzdGFuZGFyZC4KKyMgaWYgR1RFU1RfSEFTX1BUSFJFQUQgJiYgIUdU
RVNUX09TX1dJTkRPV1NfTUlOR1cKIAogLy8gQXMgYSBDLWZ1bmN0aW9uLCBUaHJlYWRGdW5jV2l0
aENMaW5rYWdlIGNhbm5vdCBiZSB0ZW1wbGF0ZWQgaXRzZWxmLgogLy8gQ29uc2VxdWVudGx5LCBp
dCBjYW5ub3Qgc2VsZWN0IGEgY29ycmVjdCBpbnN0YW50aWF0aW9uIG9mIFRocmVhZFdpdGhQYXJh
bQpAQCAtOTUxLDEwICsxNjAxLDkgQEAgZXh0ZXJuICJDIiBpbmxpbmUgdm9pZCogVGhyZWFkRnVu
Y1dpdGhDTGlua2FnZSh2b2lkKiB0aHJlYWQpIHsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogY2xh
c3MgVGhyZWFkV2l0aFBhcmFtIDogcHVibGljIFRocmVhZFdpdGhQYXJhbUJhc2UgewogIHB1Ymxp
YzoKLSAgdHlwZWRlZiB2b2lkICgqVXNlclRocmVhZEZ1bmMpKFQpOworICB0eXBlZGVmIHZvaWQg
VXNlclRocmVhZEZ1bmMoVCk7CiAKLSAgVGhyZWFkV2l0aFBhcmFtKAotICAgICAgVXNlclRocmVh
ZEZ1bmMgZnVuYywgVCBwYXJhbSwgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KQorICBU
aHJlYWRXaXRoUGFyYW0oVXNlclRocmVhZEZ1bmMqIGZ1bmMsIFQgcGFyYW0sIE5vdGlmaWNhdGlv
biogdGhyZWFkX2Nhbl9zdGFydCkKICAgICAgIDogZnVuY18oZnVuYyksCiAgICAgICAgIHBhcmFt
XyhwYXJhbSksCiAgICAgICAgIHRocmVhZF9jYW5fc3RhcnRfKHRocmVhZF9jYW5fc3RhcnQpLApA
QCAtOTgxLDcgKzE2MzAsNyBAQCBjbGFzcyBUaHJlYWRXaXRoUGFyYW0gOiBwdWJsaWMgVGhyZWFk
V2l0aFBhcmFtQmFzZSB7CiAgIH0KIAogIHByaXZhdGU6Ci0gIGNvbnN0IFVzZXJUaHJlYWRGdW5j
IGZ1bmNfOyAgLy8gVXNlci1zdXBwbGllZCB0aHJlYWQgZnVuY3Rpb24uCisgIFVzZXJUaHJlYWRG
dW5jKiBjb25zdCBmdW5jXzsgIC8vIFVzZXItc3VwcGxpZWQgdGhyZWFkIGZ1bmN0aW9uLgogICBj
b25zdCBUIHBhcmFtXzsgIC8vIFVzZXItc3VwcGxpZWQgcGFyYW1ldGVyIHRvIHRoZSB0aHJlYWQg
ZnVuY3Rpb24uCiAgIC8vIFdoZW4gbm9uLU5VTEwsIHVzZWQgdG8gYmxvY2sgZXhlY3V0aW9uIHVu
dGlsIHRoZSBjb250cm9sbGVyIHRocmVhZAogICAvLyBub3RpZmllcy4KQEAgLTk5MSw1MSArMTY0
MCwzMTYgQEAgY2xhc3MgVGhyZWFkV2l0aFBhcmFtIDogcHVibGljIFRocmVhZFdpdGhQYXJhbUJh
c2UgewogCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkV2l0aFBhcmFt
KTsKIH07CisjIGVuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUyAmJiBHVEVTVF9IQVNfUFRIUkVB
RCB8fAorICAgICAgICAgLy8gR1RFU1RfSEFTX01VVEVYX0FORF9USFJFQURfTE9DQUxfCiAKLS8v
IGd0ZXN0LXBvcnQuaCBndWFyYW50ZWVzIHRvICNpbmNsdWRlIDxwdGhyZWFkLmg+IHdoZW4gR1RF
U1RfSEFTX1BUSFJFQUQgaXMKLS8vIHRydWUuCi0jaW5jbHVkZSA8cHRocmVhZC5oPgorIyBpZiBH
VEVTVF9IQVNfTVVURVhfQU5EX1RIUkVBRF9MT0NBTF8KKy8vIE11dGV4IGFuZCBUaHJlYWRMb2Nh
bCBoYXZlIGFscmVhZHkgYmVlbiBpbXBvcnRlZCBpbnRvIHRoZSBuYW1lc3BhY2UuCisvLyBOb3Ro
aW5nIHRvIGRvIGhlcmUuCisKKyMgZWxpZiBHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19X
SU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUCiAKLS8vIE11dGV4QmFzZSBhbmQg
TXV0ZXggaW1wbGVtZW50IG11dGV4IG9uIHB0aHJlYWRzLWJhc2VkIHBsYXRmb3Jtcy4gVGhleQot
Ly8gYXJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBjbGFzcyBNdXRleExvY2s6CisvLyBNdXRl
eCBpbXBsZW1lbnRzIG11dGV4IG9uIFdpbmRvd3MgcGxhdGZvcm1zLiAgSXQgaXMgdXNlZCBpbiBj
b25qdW5jdGlvbgorLy8gd2l0aCBjbGFzcyBNdXRleExvY2s6CiAvLwogLy8gICBNdXRleCBtdXRl
eDsKIC8vICAgLi4uCi0vLyAgIE11dGV4TG9jayBsb2NrKCZtdXRleCk7ICAvLyBBY3F1aXJlcyB0
aGUgbXV0ZXggYW5kIHJlbGVhc2VzIGl0IGF0IHRoZSBlbmQKLS8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIG9mIHRoZSBjdXJyZW50IHNjb3BlLgotLy8KLS8vIE11dGV4QmFzZSBpbXBs
ZW1lbnRzIGJlaGF2aW9yIGZvciBib3RoIHN0YXRpY2FsbHkgYW5kIGR5bmFtaWNhbGx5Ci0vLyBh
bGxvY2F0ZWQgbXV0ZXhlcy4gIERvIG5vdCB1c2UgTXV0ZXhCYXNlIGRpcmVjdGx5LiAgSW5zdGVh
ZCwgd3JpdGUKLS8vIHRoZSBmb2xsb3dpbmcgdG8gZGVmaW5lIGEgc3RhdGljIG11dGV4OgorLy8g
ICBNdXRleExvY2sgbG9jaygmbXV0ZXgpOyAgLy8gQWNxdWlyZXMgdGhlIG11dGV4IGFuZCByZWxl
YXNlcyBpdCBhdCB0aGUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuZCBvZiB0
aGUgY3VycmVudCBzY29wZS4KIC8vCisvLyBBIHN0YXRpYyBNdXRleCAqbXVzdCogYmUgZGVmaW5l
ZCBvciBkZWNsYXJlZCB1c2luZyBvbmUgb2YgdGhlIGZvbGxvd2luZworLy8gbWFjcm9zOgogLy8g
ICBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhnX3NvbWVfbXV0ZXgpOworLy8gICBHVEVTVF9E
RUNMQVJFX1NUQVRJQ19NVVRFWF8oZ19zb21lX211dGV4KTsKKy8vCisvLyAoQSBub24tc3RhdGlj
IE11dGV4IGlzIGRlZmluZWQvZGVjbGFyZWQgaW4gdGhlIHVzdWFsIHdheSkuCitjbGFzcyBHVEVT
VF9BUElfIE11dGV4IHsKKyBwdWJsaWM6CisgIGVudW0gTXV0ZXhUeXBlIHsga1N0YXRpYyA9IDAs
IGtEeW5hbWljID0gMSB9OworICAvLyBXZSByZWx5IG9uIGtTdGF0aWNNdXRleCBiZWluZyAwIGFz
IGl0IGlzIHRvIHdoYXQgdGhlIGxpbmtlciBpbml0aWFsaXplcworICAvLyB0eXBlXyBpbiBzdGF0
aWMgbXV0ZXhlcy4gIGNyaXRpY2FsX3NlY3Rpb25fIHdpbGwgYmUgaW5pdGlhbGl6ZWQgbGF6aWx5
CisgIC8vIGluIFRocmVhZFNhZmVMYXp5SW5pdCgpLgorICBlbnVtIFN0YXRpY0NvbnN0cnVjdG9y
U2VsZWN0b3IgeyBrU3RhdGljTXV0ZXggPSAwIH07CisKKyAgLy8gVGhpcyBjb25zdHJ1Y3RvciBp
bnRlbnRpb25hbGx5IGRvZXMgbm90aGluZy4gIEl0IHJlbGllcyBvbiB0eXBlXyBiZWluZworICAv
LyBzdGF0aWNhbGx5IGluaXRpYWxpemVkIHRvIDAgKGVmZmVjdGl2ZWx5IHNldHRpbmcgaXQgdG8g
a1N0YXRpYykgYW5kIG9uCisgIC8vIFRocmVhZFNhZmVMYXp5SW5pdCgpIHRvIGxhemlseSBpbml0
aWFsaXplIHRoZSByZXN0IG9mIHRoZSBtZW1iZXJzLgorICBleHBsaWNpdCBNdXRleChTdGF0aWND
b25zdHJ1Y3RvclNlbGVjdG9yIC8qZHVtbXkqLykge30KKworICBNdXRleCgpOworICB+TXV0ZXgo
KTsKKworICB2b2lkIExvY2soKTsKKworICB2b2lkIFVubG9jaygpOworCisgIC8vIERvZXMgbm90
aGluZyBpZiB0aGUgY3VycmVudCB0aHJlYWQgaG9sZHMgdGhlIG11dGV4LiBPdGhlcndpc2UsIGNy
YXNoZXMKKyAgLy8gd2l0aCBoaWdoIHByb2JhYmlsaXR5LgorICB2b2lkIEFzc2VydEhlbGQoKTsK
KworIHByaXZhdGU6CisgIC8vIEluaXRpYWxpemVzIG93bmVyX3RocmVhZF9pZF8gYW5kIGNyaXRp
Y2FsX3NlY3Rpb25fIGluIHN0YXRpYyBtdXRleGVzLgorICB2b2lkIFRocmVhZFNhZmVMYXp5SW5p
dCgpOworCisgIC8vIFBlciBodHRwOi8vYmxvZ3MubXNkbi5jb20vYi9vbGRuZXd0aGluZy9hcmNo
aXZlLzIwMDQvMDIvMjMvNzgzOTUuYXNweCwKKyAgLy8gd2UgYXNzdW1lIHRoYXQgMCBpcyBhbiBp
bnZhbGlkIHZhbHVlIGZvciB0aHJlYWQgSURzLgorICB1bnNpZ25lZCBpbnQgb3duZXJfdGhyZWFk
X2lkXzsKKworICAvLyBGb3Igc3RhdGljIG11dGV4ZXMsIHdlIHJlbHkgb24gdGhlc2UgbWVtYmVy
cyBiZWluZyBpbml0aWFsaXplZCB0byB6ZXJvcworICAvLyBieSB0aGUgbGlua2VyLgorICBNdXRl
eFR5cGUgdHlwZV87CisgIGxvbmcgY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXzsgIC8vIE5P
TElOVAorICBfUlRMX0NSSVRJQ0FMX1NFQ1RJT04qIGNyaXRpY2FsX3NlY3Rpb25fOworCisgIEdU
RVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTXV0ZXgpOworfTsKKworIyBkZWZpbmUgR1RF
U1RfREVDTEFSRV9TVEFUSUNfTVVURVhfKG11dGV4KSBcCisgICAgZXh0ZXJuIDo6dGVzdGluZzo6
aW50ZXJuYWw6Ok11dGV4IG11dGV4CisKKyMgZGVmaW5lIEdURVNUX0RFRklORV9TVEFUSUNfTVVU
RVhfKG11dGV4KSBcCisgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXggbXV0ZXgoOjp0ZXN0
aW5nOjppbnRlcm5hbDo6TXV0ZXg6OmtTdGF0aWNNdXRleCkKKworLy8gV2UgY2Fubm90IG5hbWUg
dGhpcyBjbGFzcyBNdXRleExvY2sgYmVjYXVzZSB0aGUgY3RvciBkZWNsYXJhdGlvbiB3b3VsZAor
Ly8gY29uZmxpY3Qgd2l0aCBhIG1hY3JvIG5hbWVkIE11dGV4TG9jaywgd2hpY2ggaXMgZGVmaW5l
ZCBvbiBzb21lCisvLyBwbGF0Zm9ybXMuIFRoYXQgbWFjcm8gaXMgdXNlZCBhcyBhIGRlZmVuc2l2
ZSBtZWFzdXJlIHRvIHByZXZlbnQgYWdhaW5zdAorLy8gaW5hZHZlcnRlbnQgbWlzdXNlcyBvZiBN
dXRleExvY2sgbGlrZSAiTXV0ZXhMb2NrKCZtdSkiIHJhdGhlciB0aGFuCisvLyAiTXV0ZXhMb2Nr
IGwoJm11KSIuICBIZW5jZSB0aGUgdHlwZWRlZiB0cmljayBiZWxvdy4KK2NsYXNzIEdUZXN0TXV0
ZXhMb2NrIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEdUZXN0TXV0ZXhMb2NrKE11dGV4KiBtdXRl
eCkKKyAgICAgIDogbXV0ZXhfKG11dGV4KSB7IG11dGV4Xy0+TG9jaygpOyB9CisKKyAgfkdUZXN0
TXV0ZXhMb2NrKCkgeyBtdXRleF8tPlVubG9jaygpOyB9CisKKyBwcml2YXRlOgorICBNdXRleCog
Y29uc3QgbXV0ZXhfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oR1Rlc3RN
dXRleExvY2spOworfTsKKwordHlwZWRlZiBHVGVzdE11dGV4TG9jayBNdXRleExvY2s7CisKKy8v
IEJhc2UgY2xhc3MgZm9yIFZhbHVlSG9sZGVyPFQ+LiAgQWxsb3dzIGEgY2FsbGVyIHRvIGhvbGQg
YW5kIGRlbGV0ZSBhIHZhbHVlCisvLyB3aXRob3V0IGtub3dpbmcgaXRzIHR5cGUuCitjbGFzcyBU
aHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSB7CisgcHVibGljOgorICB2aXJ0dWFsIH5UaHJlYWRM
b2NhbFZhbHVlSG9sZGVyQmFzZSgpIHt9Cit9OworCisvLyBQcm92aWRlcyBhIHdheSBmb3IgYSB0
aHJlYWQgdG8gc2VuZCBub3RpZmljYXRpb25zIHRvIGEgVGhyZWFkTG9jYWwKKy8vIHJlZ2FyZGxl
c3Mgb2YgaXRzIHBhcmFtZXRlciB0eXBlLgorY2xhc3MgVGhyZWFkTG9jYWxCYXNlIHsKKyBwdWJs
aWM6CisgIC8vIENyZWF0ZXMgYSBuZXcgVmFsdWVIb2xkZXI8VD4gb2JqZWN0IGhvbGRpbmcgYSBk
ZWZhdWx0IHZhbHVlIHBhc3NlZCB0bworICAvLyB0aGlzIFRocmVhZExvY2FsPFQ+J3MgY29uc3Ry
dWN0b3IgYW5kIHJldHVybnMgaXQuICBJdCBpcyB0aGUgY2FsbGVyJ3MKKyAgLy8gcmVzcG9uc2li
aWxpdHkgbm90IHRvIGNhbGwgdGhpcyB3aGVuIHRoZSBUaHJlYWRMb2NhbDxUPiBpbnN0YW5jZSBh
bHJlYWR5CisgIC8vIGhhcyBhIHZhbHVlIG9uIHRoZSBjdXJyZW50IHRocmVhZC4KKyAgdmlydHVh
bCBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogTmV3VmFsdWVGb3JDdXJyZW50VGhyZWFkKCkg
Y29uc3QgPSAwOworCisgcHJvdGVjdGVkOgorICBUaHJlYWRMb2NhbEJhc2UoKSB7fQorICB2aXJ0
dWFsIH5UaHJlYWRMb2NhbEJhc2UoKSB7fQorCisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOXyhUaHJlYWRMb2NhbEJhc2UpOworfTsKKworLy8gTWFwcyBhIHRocmVh
ZCB0byBhIHNldCBvZiBUaHJlYWRMb2NhbHMgdGhhdCBoYXZlIHZhbHVlcyBpbnN0YW50aWF0ZWQg
b24gdGhhdAorLy8gdGhyZWFkIGFuZCBub3RpZmllcyB0aGVtIHdoZW4gdGhlIHRocmVhZCBleGl0
cy4gIEEgVGhyZWFkTG9jYWwgaW5zdGFuY2UgaXMKKy8vIGV4cGVjdGVkIHRvIHBlcnNpc3QgdW50
aWwgYWxsIHRocmVhZHMgaXQgaGFzIHZhbHVlcyBvbiBoYXZlIHRlcm1pbmF0ZWQuCitjbGFzcyBH
VEVTVF9BUElfIFRocmVhZExvY2FsUmVnaXN0cnkgeworIHB1YmxpYzoKKyAgLy8gUmVnaXN0ZXJz
IHRocmVhZF9sb2NhbF9pbnN0YW5jZSBhcyBoYXZpbmcgdmFsdWUgb24gdGhlIGN1cnJlbnQgdGhy
ZWFkLgorICAvLyBSZXR1cm5zIGEgdmFsdWUgdGhhdCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSB0
aGUgdGhyZWFkIGZyb20gb3RoZXIgdGhyZWFkcy4KKyAgc3RhdGljIFRocmVhZExvY2FsVmFsdWVI
b2xkZXJCYXNlKiBHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCgKKyAgICAgIGNvbnN0IFRocmVhZExv
Y2FsQmFzZSogdGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKKworICAvLyBJbnZva2VkIHdoZW4gYSBU
aHJlYWRMb2NhbCBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuCisgIHN0YXRpYyB2b2lkIE9uVGhyZWFk
TG9jYWxEZXN0cm95ZWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2Nh
bF9pbnN0YW5jZSk7Cit9OworCitjbGFzcyBHVEVTVF9BUElfIFRocmVhZFdpdGhQYXJhbUJhc2Ug
eworIHB1YmxpYzoKKyAgdm9pZCBKb2luKCk7CisKKyBwcm90ZWN0ZWQ6CisgIGNsYXNzIFJ1bm5h
YmxlIHsKKyAgIHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5SdW5uYWJsZSgpIHt9CisgICAgdmlydHVh
bCB2b2lkIFJ1bigpID0gMDsKKyAgfTsKKworICBUaHJlYWRXaXRoUGFyYW1CYXNlKFJ1bm5hYmxl
ICpydW5uYWJsZSwgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KTsKKyAgdmlydHVhbCB+
VGhyZWFkV2l0aFBhcmFtQmFzZSgpOworCisgcHJpdmF0ZToKKyAgQXV0b0hhbmRsZSB0aHJlYWRf
OworfTsKKworLy8gSGVscGVyIGNsYXNzIGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0J3MgbXVsdGkt
dGhyZWFkaW5nIGNvbnN0cnVjdHMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFRocmVh
ZFdpdGhQYXJhbSA6IHB1YmxpYyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKKyBwdWJsaWM6CisgIHR5
cGVkZWYgdm9pZCBVc2VyVGhyZWFkRnVuYyhUKTsKKworICBUaHJlYWRXaXRoUGFyYW0oVXNlclRo
cmVhZEZ1bmMqIGZ1bmMsIFQgcGFyYW0sIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydCkK
KyAgICAgIDogVGhyZWFkV2l0aFBhcmFtQmFzZShuZXcgUnVubmFibGVJbXBsKGZ1bmMsIHBhcmFt
KSwgdGhyZWFkX2Nhbl9zdGFydCkgeworICB9CisgIHZpcnR1YWwgflRocmVhZFdpdGhQYXJhbSgp
IHt9CisKKyBwcml2YXRlOgorICBjbGFzcyBSdW5uYWJsZUltcGwgOiBwdWJsaWMgUnVubmFibGUg
eworICAgcHVibGljOgorICAgIFJ1bm5hYmxlSW1wbChVc2VyVGhyZWFkRnVuYyogZnVuYywgVCBw
YXJhbSkKKyAgICAgICAgOiBmdW5jXyhmdW5jKSwKKyAgICAgICAgICBwYXJhbV8ocGFyYW0pIHsK
KyAgICB9CisgICAgdmlydHVhbCB+UnVubmFibGVJbXBsKCkge30KKyAgICB2aXJ0dWFsIHZvaWQg
UnVuKCkgeworICAgICAgZnVuY18ocGFyYW1fKTsKKyAgICB9CisKKyAgIHByaXZhdGU6CisgICAg
VXNlclRocmVhZEZ1bmMqIGNvbnN0IGZ1bmNfOworICAgIGNvbnN0IFQgcGFyYW1fOworCisgICAg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhSdW5uYWJsZUltcGwpOworICB9OworCisg
IEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkV2l0aFBhcmFtKTsKK307CisK
Ky8vIEltcGxlbWVudHMgdGhyZWFkLWxvY2FsIHN0b3JhZ2Ugb24gV2luZG93cyBzeXN0ZW1zLgog
Ly8KLS8vIFlvdSBjYW4gZm9yd2FyZCBkZWNsYXJlIGEgc3RhdGljIG11dGV4IGxpa2UgdGhpczoK
Ky8vICAgLy8gVGhyZWFkIDEKKy8vICAgVGhyZWFkTG9jYWw8aW50PiB0bCgxMDApOyAgLy8gMTAw
IGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBlYWNoIHRocmVhZC4KIC8vCi0vLyAgIEdURVNUX0RF
Q0xBUkVfU1RBVElDX01VVEVYXyhnX3NvbWVfbXV0ZXgpOworLy8gICAvLyBUaHJlYWQgMgorLy8g
ICB0bC5zZXQoMTUwKTsgIC8vIENoYW5nZXMgdGhlIHZhbHVlIGZvciB0aHJlYWQgMiBvbmx5Lgor
Ly8gICBFWFBFQ1RfRVEoMTUwLCB0bC5nZXQoKSk7CiAvLwotLy8gVG8gY3JlYXRlIGEgZHluYW1p
YyBtdXRleCwganVzdCBkZWZpbmUgYW4gb2JqZWN0IG9mIHR5cGUgTXV0ZXguCisvLyAgIC8vIFRo
cmVhZCAxCisvLyAgIEVYUEVDVF9FUSgxMDAsIHRsLmdldCgpKTsgIC8vIEluIHRocmVhZCAxLCB0
bCBoYXMgdGhlIG9yaWdpbmFsIHZhbHVlLgorLy8gICB0bC5zZXQoMjAwKTsKKy8vICAgRVhQRUNU
X0VRKDIwMCwgdGwuZ2V0KCkpOworLy8KKy8vIFRoZSB0ZW1wbGF0ZSB0eXBlIGFyZ3VtZW50IFQg
bXVzdCBoYXZlIGEgcHVibGljIGNvcHkgY29uc3RydWN0b3IuCisvLyBJbiBhZGRpdGlvbiwgdGhl
IGRlZmF1bHQgVGhyZWFkTG9jYWwgY29uc3RydWN0b3IgcmVxdWlyZXMgVCB0byBoYXZlCisvLyBh
IHB1YmxpYyBkZWZhdWx0IGNvbnN0cnVjdG9yLgorLy8KKy8vIFRoZSB1c2VycyBvZiBhIFRoZWFk
TG9jYWwgaW5zdGFuY2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCBhbGwgYnV0IG9uZQorLy8gdGhy
ZWFkcyAoaW5jbHVkaW5nIHRoZSBtYWluIG9uZSkgdXNpbmcgdGhhdCBpbnN0YW5jZSBoYXZlIGV4
aXRlZCBiZWZvcmUKKy8vIGRlc3Ryb3lpbmcgaXQuIE90aGVyd2lzZSwgdGhlIHBlci10aHJlYWQg
b2JqZWN0cyBtYW5hZ2VkIGZvciB0aGVtIGJ5IHRoZQorLy8gVGhyZWFkTG9jYWwgaW5zdGFuY2Ug
YXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlIGRlc3Ryb3llZCBvbiBhbGwgcGxhdGZvcm1zLgorLy8K
Ky8vIEdvb2dsZSBUZXN0IG9ubHkgdXNlcyBnbG9iYWwgVGhyZWFkTG9jYWwgb2JqZWN0cy4gIFRo
YXQgbWVhbnMgdGhleQorLy8gd2lsbCBkaWUgYWZ0ZXIgbWFpbigpIGhhcyByZXR1cm5lZC4gIFRo
ZXJlZm9yZSwgbm8gcGVyLXRocmVhZAorLy8gb2JqZWN0IG1hbmFnZWQgYnkgR29vZ2xlIFRlc3Qg
d2lsbCBiZSBsZWFrZWQgYXMgbG9uZyBhcyBhbGwgdGhyZWFkcworLy8gdXNpbmcgR29vZ2xlIFRl
c3QgaGF2ZSBleGl0ZWQgd2hlbiBtYWluKCkgcmV0dXJucy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PgorY2xhc3MgVGhyZWFkTG9jYWwgOiBwdWJsaWMgVGhyZWFkTG9jYWxCYXNlIHsKKyBwdWJsaWM6
CisgIFRocmVhZExvY2FsKCkgOiBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0VmFsdWVIb2xk
ZXJGYWN0b3J5KCkpIHt9CisgIGV4cGxpY2l0IFRocmVhZExvY2FsKGNvbnN0IFQmIHZhbHVlKQor
ICAgICAgOiBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBJbnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeSh2
YWx1ZSkpIHt9CisKKyAgflRocmVhZExvY2FsKCkgeyBUaHJlYWRMb2NhbFJlZ2lzdHJ5OjpPblRo
cmVhZExvY2FsRGVzdHJveWVkKHRoaXMpOyB9CisKKyAgVCogcG9pbnRlcigpIHsgcmV0dXJuIEdl
dE9yQ3JlYXRlVmFsdWUoKTsgfQorICBjb25zdCBUKiBwb2ludGVyKCkgY29uc3QgeyByZXR1cm4g
R2V0T3JDcmVhdGVWYWx1ZSgpOyB9CisgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgcmV0dXJuICpw
b2ludGVyKCk7IH0KKyAgdm9pZCBzZXQoY29uc3QgVCYgdmFsdWUpIHsgKnBvaW50ZXIoKSA9IHZh
bHVlOyB9CisKKyBwcml2YXRlOgorICAvLyBIb2xkcyBhIHZhbHVlIG9mIFQuICBDYW4gYmUgZGVs
ZXRlZCB2aWEgaXRzIGJhc2UgY2xhc3Mgd2l0aG91dCB0aGUgY2FsbGVyCisgIC8vIGtub3dpbmcg
dGhlIHR5cGUgb2YgVC4KKyAgY2xhc3MgVmFsdWVIb2xkZXIgOiBwdWJsaWMgVGhyZWFkTG9jYWxW
YWx1ZUhvbGRlckJhc2UgeworICAgcHVibGljOgorICAgIFZhbHVlSG9sZGVyKCkgOiB2YWx1ZV8o
KSB7fQorICAgIGV4cGxpY2l0IFZhbHVlSG9sZGVyKGNvbnN0IFQmIHZhbHVlKSA6IHZhbHVlXyh2
YWx1ZSkge30KKworICAgIFQqIHBvaW50ZXIoKSB7IHJldHVybiAmdmFsdWVfOyB9CisKKyAgIHBy
aXZhdGU6CisgICAgVCB2YWx1ZV87CisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdO
XyhWYWx1ZUhvbGRlcik7CisgIH07CisKKworICBUKiBHZXRPckNyZWF0ZVZhbHVlKCkgY29uc3Qg
eworICAgIHJldHVybiBzdGF0aWNfY2FzdDxWYWx1ZUhvbGRlcio+KAorICAgICAgICBUaHJlYWRM
b2NhbFJlZ2lzdHJ5OjpHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCh0aGlzKSktPnBvaW50ZXIoKTsK
KyAgfQorCisgIHZpcnR1YWwgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UqIE5ld1ZhbHVlRm9y
Q3VycmVudFRocmVhZCgpIGNvbnN0IHsKKyAgICByZXR1cm4gZGVmYXVsdF9mYWN0b3J5Xy0+TWFr
ZU5ld0hvbGRlcigpOworICB9CisKKyAgY2xhc3MgVmFsdWVIb2xkZXJGYWN0b3J5IHsKKyAgIHB1
YmxpYzoKKyAgICBWYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1YWwgflZhbHVlSG9s
ZGVyRmFjdG9yeSgpIHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRlciogTWFrZU5ld0hvbGRlcigp
IGNvbnN0ID0gMDsKKworICAgcHJpdmF0ZToKKyAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKFZhbHVlSG9sZGVyRmFjdG9yeSk7CisgIH07CisKKyAgY2xhc3MgRGVmYXVsdFZhbHVl
SG9sZGVyRmFjdG9yeSA6IHB1YmxpYyBWYWx1ZUhvbGRlckZhY3RvcnkgeworICAgcHVibGljOgor
ICAgIERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1YWwgVmFsdWVIb2xk
ZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCB7IHJldHVybiBuZXcgVmFsdWVIb2xkZXIoKTsgfQor
CisgICBwcml2YXRlOgorICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oRGVmYXVs
dFZhbHVlSG9sZGVyRmFjdG9yeSk7CisgIH07CisKKyAgY2xhc3MgSW5zdGFuY2VWYWx1ZUhvbGRl
ckZhY3RvcnkgOiBwdWJsaWMgVmFsdWVIb2xkZXJGYWN0b3J5IHsKKyAgIHB1YmxpYzoKKyAgICBl
eHBsaWNpdCBJbnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeShjb25zdCBUJiB2YWx1ZSkgOiB2YWx1
ZV8odmFsdWUpIHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRlciogTWFrZU5ld0hvbGRlcigpIGNv
bnN0IHsKKyAgICAgIHJldHVybiBuZXcgVmFsdWVIb2xkZXIodmFsdWVfKTsKKyAgICB9CisKKyAg
IHByaXZhdGU6CisgICAgY29uc3QgVCB2YWx1ZV87ICAvLyBUaGUgdmFsdWUgZm9yIGVhY2ggdGhy
ZWFkLgorCisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhJbnN0YW5jZVZhbHVl
SG9sZGVyRmFjdG9yeSk7CisgIH07CisKKyAgc2NvcGVkX3B0cjxWYWx1ZUhvbGRlckZhY3Rvcnk+
IGRlZmF1bHRfZmFjdG9yeV87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhU
aHJlYWRMb2NhbCk7Cit9OworCisjIGVsaWYgR1RFU1RfSEFTX1BUSFJFQUQKKworLy8gTXV0ZXhC
YXNlIGFuZCBNdXRleCBpbXBsZW1lbnQgbXV0ZXggb24gcHRocmVhZHMtYmFzZWQgcGxhdGZvcm1z
LgogY2xhc3MgTXV0ZXhCYXNlIHsKICBwdWJsaWM6CiAgIC8vIEFjcXVpcmVzIHRoaXMgbXV0ZXgu
CiAgIHZvaWQgTG9jaygpIHsKICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFk
X211dGV4X2xvY2soJm11dGV4XykpOwogICAgIG93bmVyXyA9IHB0aHJlYWRfc2VsZigpOworICAg
IGhhc19vd25lcl8gPSB0cnVlOwogICB9CiAKICAgLy8gUmVsZWFzZXMgdGhpcyBtdXRleC4KICAg
dm9pZCBVbmxvY2soKSB7Ci0gICAgLy8gV2UgZG9uJ3QgcHJvdGVjdCB3cml0aW5nIHRvIG93bmVy
XyBoZXJlLCBhcyBpdCdzIHRoZSBjYWxsZXIncwotICAgIC8vIHJlc3BvbnNpYmlsaXR5IHRvIGVu
c3VyZSB0aGF0IHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUKKyAgICAvLyBTaW5jZSB0aGUg
bG9jayBpcyBiZWluZyByZWxlYXNlZCB0aGUgb3duZXJfIGZpZWxkIHNob3VsZCBubyBsb25nZXIg
YmUKKyAgICAvLyBjb25zaWRlcmVkIHZhbGlkLiBXZSBkb24ndCBwcm90ZWN0IHdyaXRpbmcgdG8g
aGFzX293bmVyXyBoZXJlLCBhcyBpdCdzCisgICAgLy8gdGhlIGNhbGxlcidzIHJlc3BvbnNpYmls
aXR5IHRvIGVuc3VyZSB0aGF0IHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUKICAgICAvLyBt
dXRleCB3aGVuIHRoaXMgaXMgY2FsbGVkLgotICAgIG93bmVyXyA9IDA7CisgICAgaGFzX293bmVy
XyA9IGZhbHNlOwogICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhf
dW5sb2NrKCZtdXRleF8pKTsKICAgfQogCiAgIC8vIERvZXMgbm90aGluZyBpZiB0aGUgY3VycmVu
dCB0aHJlYWQgaG9sZHMgdGhlIG11dGV4LiBPdGhlcndpc2UsIGNyYXNoZXMKICAgLy8gd2l0aCBo
aWdoIHByb2JhYmlsaXR5LgogICB2b2lkIEFzc2VydEhlbGQoKSBjb25zdCB7Ci0gICAgR1RFU1Rf
Q0hFQ0tfKG93bmVyXyA9PSBwdGhyZWFkX3NlbGYoKSkKKyAgICBHVEVTVF9DSEVDS18oaGFzX293
bmVyXyAmJiBwdGhyZWFkX2VxdWFsKG93bmVyXywgcHRocmVhZF9zZWxmKCkpKQogICAgICAgICA8
PCAiVGhlIGN1cnJlbnQgdGhyZWFkIGlzIG5vdCBob2xkaW5nIHRoZSBtdXRleCBAIiA8PCB0aGlz
OwogICB9CiAKQEAgLTEwNDYsMTYgKzE5NjAsMjMgQEAgY2xhc3MgTXV0ZXhCYXNlIHsKICAgLy8g
aGF2ZSB0byBiZSBwdWJsaWMuCiAgcHVibGljOgogICBwdGhyZWFkX211dGV4X3QgbXV0ZXhfOyAg
Ly8gVGhlIHVuZGVybHlpbmcgcHRocmVhZCBtdXRleC4KLSAgcHRocmVhZF90IG93bmVyXzsgIC8v
IFRoZSB0aHJlYWQgaG9sZGluZyB0aGUgbXV0ZXg7IDAgbWVhbnMgbm8gb25lIGhvbGRzIGl0Lgor
ICAvLyBoYXNfb3duZXJfIGluZGljYXRlcyB3aGV0aGVyIHRoZSBvd25lcl8gZmllbGQgYmVsb3cg
Y29udGFpbnMgYSB2YWxpZCB0aHJlYWQKKyAgLy8gSUQgYW5kIGlzIHRoZXJlZm9yZSBzYWZlIHRv
IGluc3BlY3QgKGUuZy4sIHRvIHVzZSBpbiBwdGhyZWFkX2VxdWFsKCkpLiBBbGwKKyAgLy8gYWNj
ZXNzZXMgdG8gdGhlIG93bmVyXyBmaWVsZCBzaG91bGQgYmUgcHJvdGVjdGVkIGJ5IGEgY2hlY2sg
b2YgdGhpcyBmaWVsZC4KKyAgLy8gQW4gYWx0ZXJuYXRpdmUgbWlnaHQgYmUgdG8gbWVtc2V0KCkg
b3duZXJfIHRvIGFsbCB6ZXJvcywgYnV0IHRoZXJlJ3Mgbm8KKyAgLy8gZ3VhcmFudGVlIHRoYXQg
YSB6ZXJvJ2QgcHRocmVhZF90IGlzIG5lY2Vzc2FyaWx5IGludmFsaWQgb3IgZXZlbiBkaWZmZXJl
bnQKKyAgLy8gZnJvbSBwdGhyZWFkX3NlbGYoKS4KKyAgYm9vbCBoYXNfb3duZXJfOworICBwdGhy
ZWFkX3Qgb3duZXJfOyAgLy8gVGhlIHRocmVhZCBob2xkaW5nIHRoZSBtdXRleC4KIH07CiAKIC8v
IEZvcndhcmQtZGVjbGFyZXMgYSBzdGF0aWMgbXV0ZXguCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVf
U1RBVElDX01VVEVYXyhtdXRleCkgXAotICAgIGV4dGVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpN
dXRleEJhc2UgbXV0ZXgKKyMgIGRlZmluZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRFWF8obXV0
ZXgpIFwKKyAgICAgZXh0ZXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4QmFzZSBtdXRleAog
CiAvLyBEZWZpbmVzIGFuZCBzdGF0aWNhbGx5IChpLmUuIGF0IGxpbmsgdGltZSkgaW5pdGlhbGl6
ZXMgYSBzdGF0aWMgbXV0ZXguCi0jZGVmaW5lIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKG11
dGV4KSBcCi0gICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXhCYXNlIG11dGV4ID0geyBQVEhS
RUFEX01VVEVYX0lOSVRJQUxJWkVSLCAwIH0KKyMgIGRlZmluZSBHVEVTVF9ERUZJTkVfU1RBVElD
X01VVEVYXyhtdXRleCkgXAorICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpNdXRleEJhc2UgbXV0
ZXggPSB7IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVIsIGZhbHNlLCBwdGhyZWFkX3QoKSB9CiAK
IC8vIFRoZSBNdXRleCBjbGFzcyBjYW4gb25seSBiZSB1c2VkIGZvciBtdXRleGVzIGNyZWF0ZWQg
YXQgcnVudGltZS4gSXQKIC8vIHNoYXJlcyBpdHMgQVBJIHdpdGggTXV0ZXhCYXNlIG90aGVyd2lz
ZS4KQEAgLTEwNjMsNyArMTk4NCw3IEBAIGNsYXNzIE11dGV4IDogcHVibGljIE11dGV4QmFzZSB7
CiAgcHVibGljOgogICBNdXRleCgpIHsKICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhw
dGhyZWFkX211dGV4X2luaXQoJm11dGV4XywgTlVMTCkpOwotICAgIG93bmVyXyA9IDA7CisgICAg
aGFzX293bmVyXyA9IGZhbHNlOwogICB9CiAgIH5NdXRleCgpIHsKICAgICBHVEVTVF9DSEVDS19Q
T1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm11dGV4XykpOwpAQCAtMTA3Myw5
ICsxOTk0LDExIEBAIGNsYXNzIE11dGV4IDogcHVibGljIE11dGV4QmFzZSB7CiAgIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTXV0ZXgpOwogfTsKIAotLy8gV2UgY2Fubm90IG5hbWUg
dGhpcyBjbGFzcyBNdXRleExvY2sgYXMgdGhlIGN0b3IgZGVjbGFyYXRpb24gd291bGQKKy8vIFdl
IGNhbm5vdCBuYW1lIHRoaXMgY2xhc3MgTXV0ZXhMb2NrIGJlY2F1c2UgdGhlIGN0b3IgZGVjbGFy
YXRpb24gd291bGQKIC8vIGNvbmZsaWN0IHdpdGggYSBtYWNybyBuYW1lZCBNdXRleExvY2ssIHdo
aWNoIGlzIGRlZmluZWQgb24gc29tZQotLy8gcGxhdGZvcm1zLiAgSGVuY2UgdGhlIHR5cGVkZWYg
dHJpY2sgYmVsb3cuCisvLyBwbGF0Zm9ybXMuIFRoYXQgbWFjcm8gaXMgdXNlZCBhcyBhIGRlZmVu
c2l2ZSBtZWFzdXJlIHRvIHByZXZlbnQgYWdhaW5zdAorLy8gaW5hZHZlcnRlbnQgbWlzdXNlcyBv
ZiBNdXRleExvY2sgbGlrZSAiTXV0ZXhMb2NrKCZtdSkiIHJhdGhlciB0aGFuCisvLyAiTXV0ZXhM
b2NrIGwoJm11KSIuICBIZW5jZSB0aGUgdHlwZWRlZiB0cmljayBiZWxvdy4KIGNsYXNzIEdUZXN0
TXV0ZXhMb2NrIHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0IEdUZXN0TXV0ZXhMb2NrKE11dGV4QmFz
ZSogbXV0ZXgpCkBAIC0xMTA5LDQxICsyMDMyLDE0IEBAIGV4dGVybiAiQyIgaW5saW5lIHZvaWQg
RGVsZXRlVGhyZWFkTG9jYWxWYWx1ZSh2b2lkKiB2YWx1ZV9ob2xkZXIpIHsKIH0KIAogLy8gSW1w
bGVtZW50cyB0aHJlYWQtbG9jYWwgc3RvcmFnZSBvbiBwdGhyZWFkcy1iYXNlZCBzeXN0ZW1zLgot
Ly8KLS8vICAgLy8gVGhyZWFkIDEKLS8vICAgVGhyZWFkTG9jYWw8aW50PiB0bCgxMDApOyAgLy8g
MTAwIGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBlYWNoIHRocmVhZC4KLS8vCi0vLyAgIC8vIFRo
cmVhZCAyCi0vLyAgIHRsLnNldCgxNTApOyAgLy8gQ2hhbmdlcyB0aGUgdmFsdWUgZm9yIHRocmVh
ZCAyIG9ubHkuCi0vLyAgIEVYUEVDVF9FUSgxNTAsIHRsLmdldCgpKTsKLS8vCi0vLyAgIC8vIFRo
cmVhZCAxCi0vLyAgIEVYUEVDVF9FUSgxMDAsIHRsLmdldCgpKTsgIC8vIEluIHRocmVhZCAxLCB0
bCBoYXMgdGhlIG9yaWdpbmFsIHZhbHVlLgotLy8gICB0bC5zZXQoMjAwKTsKLS8vICAgRVhQRUNU
X0VRKDIwMCwgdGwuZ2V0KCkpOwotLy8KLS8vIFRoZSB0ZW1wbGF0ZSB0eXBlIGFyZ3VtZW50IFQg
bXVzdCBoYXZlIGEgcHVibGljIGNvcHkgY29uc3RydWN0b3IuCi0vLyBJbiBhZGRpdGlvbiwgdGhl
IGRlZmF1bHQgVGhyZWFkTG9jYWwgY29uc3RydWN0b3IgcmVxdWlyZXMgVCB0byBoYXZlCi0vLyBh
IHB1YmxpYyBkZWZhdWx0IGNvbnN0cnVjdG9yLgotLy8KLS8vIEFuIG9iamVjdCBtYW5hZ2VkIGZv
ciBhIHRocmVhZCBieSBhIFRocmVhZExvY2FsIGluc3RhbmNlIGlzIGRlbGV0ZWQKLS8vIHdoZW4g
dGhlIHRocmVhZCBleGl0cy4gIE9yLCBpZiB0aGUgVGhyZWFkTG9jYWwgaW5zdGFuY2UgZGllcyBp
bgotLy8gdGhhdCB0aHJlYWQsIHdoZW4gdGhlIFRocmVhZExvY2FsIGRpZXMuICBJdCdzIHRoZSB1
c2VyJ3MKLS8vIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGF0IGFsbCBvdGhlciB0aHJlYWRz
IHVzaW5nIGEgVGhyZWFkTG9jYWwKLS8vIGhhdmUgZXhpdGVkIHdoZW4gaXQgZGllcywgb3IgdGhl
IHBlci10aHJlYWQgb2JqZWN0cyBmb3IgdGhvc2UKLS8vIHRocmVhZHMgd2lsbCBub3QgYmUgZGVs
ZXRlZC4KLS8vCi0vLyBHb29nbGUgVGVzdCBvbmx5IHVzZXMgZ2xvYmFsIFRocmVhZExvY2FsIG9i
amVjdHMuICBUaGF0IG1lYW5zIHRoZXkKLS8vIHdpbGwgZGllIGFmdGVyIG1haW4oKSBoYXMgcmV0
dXJuZWQuICBUaGVyZWZvcmUsIG5vIHBlci10aHJlYWQKLS8vIG9iamVjdCBtYW5hZ2VkIGJ5IEdv
b2dsZSBUZXN0IHdpbGwgYmUgbGVha2VkIGFzIGxvbmcgYXMgYWxsIHRocmVhZHMKLS8vIHVzaW5n
IEdvb2dsZSBUZXN0IGhhdmUgZXhpdGVkIHdoZW4gbWFpbigpIHJldHVybnMuCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KIGNsYXNzIFRocmVhZExvY2FsIHsKICBwdWJsaWM6Ci0gIFRocmVhZExvY2Fs
KCkgOiBrZXlfKENyZWF0ZUtleSgpKSwKLSAgICAgICAgICAgICAgICAgIGRlZmF1bHRfKCkge30K
LSAgZXhwbGljaXQgVGhyZWFkTG9jYWwoY29uc3QgVCYgdmFsdWUpIDoga2V5XyhDcmVhdGVLZXko
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfKHZh
bHVlKSB7fQorICBUaHJlYWRMb2NhbCgpCisgICAgICA6IGtleV8oQ3JlYXRlS2V5KCkpLCBkZWZh
dWx0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5KCkpIHt9CisgIGV4cGxp
Y2l0IFRocmVhZExvY2FsKGNvbnN0IFQmIHZhbHVlKQorICAgICAgOiBrZXlfKENyZWF0ZUtleSgp
KSwKKyAgICAgICAgZGVmYXVsdF9mYWN0b3J5XyhuZXcgSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3Rv
cnkodmFsdWUpKSB7fQogCiAgIH5UaHJlYWRMb2NhbCgpIHsKICAgICAvLyBEZXN0cm95cyB0aGUg
bWFuYWdlZCBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHRocmVhZCwgaWYgYW55LgpAQCAtMTE2Myw2
ICsyMDU5LDcgQEAgY2xhc3MgVGhyZWFkTG9jYWwgewogICAvLyBIb2xkcyBhIHZhbHVlIG9mIHR5
cGUgVC4KICAgY2xhc3MgVmFsdWVIb2xkZXIgOiBwdWJsaWMgVGhyZWFkTG9jYWxWYWx1ZUhvbGRl
ckJhc2UgewogICAgcHVibGljOgorICAgIFZhbHVlSG9sZGVyKCkgOiB2YWx1ZV8oKSB7fQogICAg
IGV4cGxpY2l0IFZhbHVlSG9sZGVyKGNvbnN0IFQmIHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30K
IAogICAgIFQqIHBvaW50ZXIoKSB7IHJldHVybiAmdmFsdWVfOyB9CkBAIC0xMTg4LDIyICsyMDg1
LDU0IEBAIGNsYXNzIFRocmVhZExvY2FsIHsKICAgICAgIHJldHVybiBDaGVja2VkRG93bmNhc3RU
b0FjdHVhbFR5cGU8VmFsdWVIb2xkZXI+KGhvbGRlciktPnBvaW50ZXIoKTsKICAgICB9CiAKLSAg
ICBWYWx1ZUhvbGRlciogY29uc3QgbmV3X2hvbGRlciA9IG5ldyBWYWx1ZUhvbGRlcihkZWZhdWx0
Xyk7CisgICAgVmFsdWVIb2xkZXIqIGNvbnN0IG5ld19ob2xkZXIgPSBkZWZhdWx0X2ZhY3Rvcnlf
LT5NYWtlTmV3SG9sZGVyKCk7CiAgICAgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UqIGNvbnN0
IGhvbGRlcl9iYXNlID0gbmV3X2hvbGRlcjsKICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNT
XyhwdGhyZWFkX3NldHNwZWNpZmljKGtleV8sIGhvbGRlcl9iYXNlKSk7CiAgICAgcmV0dXJuIG5l
d19ob2xkZXItPnBvaW50ZXIoKTsKICAgfQogCisgIGNsYXNzIFZhbHVlSG9sZGVyRmFjdG9yeSB7
CisgICBwdWJsaWM6CisgICAgVmFsdWVIb2xkZXJGYWN0b3J5KCkge30KKyAgICB2aXJ0dWFsIH5W
YWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdI
b2xkZXIoKSBjb25zdCA9IDA7CisKKyAgIHByaXZhdGU6CisgICAgR1RFU1RfRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOXyhWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9OworCisgIGNsYXNzIERlZmF1
bHRWYWx1ZUhvbGRlckZhY3RvcnkgOiBwdWJsaWMgVmFsdWVIb2xkZXJGYWN0b3J5IHsKKyAgIHB1
YmxpYzoKKyAgICBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5KCkge30KKyAgICB2aXJ0dWFsIFZh
bHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkgY29uc3QgeyByZXR1cm4gbmV3IFZhbHVlSG9sZGVy
KCk7IH0KKworICAgcHJpdmF0ZToKKyAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05f
KERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9OworCisgIGNsYXNzIEluc3RhbmNlVmFs
dWVIb2xkZXJGYWN0b3J5IDogcHVibGljIFZhbHVlSG9sZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6
CisgICAgZXhwbGljaXQgSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkoY29uc3QgVCYgdmFsdWUp
IDogdmFsdWVfKHZhbHVlKSB7fQorICAgIHZpcnR1YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xk
ZXIoKSBjb25zdCB7CisgICAgICByZXR1cm4gbmV3IFZhbHVlSG9sZGVyKHZhbHVlXyk7CisgICAg
fQorCisgICBwcml2YXRlOgorICAgIGNvbnN0IFQgdmFsdWVfOyAgLy8gVGhlIHZhbHVlIGZvciBl
YWNoIHRocmVhZC4KKworICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oSW5zdGFu
Y2VWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9OworCiAgIC8vIEEga2V5IHB0aHJlYWRzIHVzZXMg
Zm9yIGxvb2tpbmcgdXAgcGVyLXRocmVhZCB2YWx1ZXMuCiAgIGNvbnN0IHB0aHJlYWRfa2V5X3Qg
a2V5XzsKLSAgY29uc3QgVCBkZWZhdWx0XzsgIC8vIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBlYWNo
IHRocmVhZC4KKyAgc2NvcGVkX3B0cjxWYWx1ZUhvbGRlckZhY3Rvcnk+IGRlZmF1bHRfZmFjdG9y
eV87CiAKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJlYWRMb2NhbCk7CiB9
OwogCi0jZGVmaW5lIEdURVNUX0lTX1RIUkVBRFNBRkUgMQorIyBlbmRpZiAgLy8gR1RFU1RfSEFT
X01VVEVYX0FORF9USFJFQURfTE9DQUxfCiAKLSNlbHNlICAvLyBHVEVTVF9IQVNfUFRIUkVBRAor
I2Vsc2UgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUKIAogLy8gQSBkdW1teSBpbXBsZW1lbnRhdGlv
biBvZiBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyAobXV0ZXgsIGxvY2ssCiAvLyBhbmQgdGhy
ZWFkLWxvY2FsIHZhcmlhYmxlKS4gIE5lY2Vzc2FyeSBmb3IgY29tcGlsaW5nIEdvb2dsZSBUZXN0
IHdoZXJlCkBAIC0xMjEzLDE0ICsyMTQyLDIxIEBAIGNsYXNzIFRocmVhZExvY2FsIHsKIGNsYXNz
IE11dGV4IHsKICBwdWJsaWM6CiAgIE11dGV4KCkge30KKyAgdm9pZCBMb2NrKCkge30KKyAgdm9p
ZCBVbmxvY2soKSB7fQogICB2b2lkIEFzc2VydEhlbGQoKSBjb25zdCB7fQogfTsKIAotI2RlZmlu
ZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRFWF8obXV0ZXgpIFwKKyMgZGVmaW5lIEdURVNUX0RF
Q0xBUkVfU1RBVElDX01VVEVYXyhtdXRleCkgXAogICBleHRlcm4gOjp0ZXN0aW5nOjppbnRlcm5h
bDo6TXV0ZXggbXV0ZXgKIAotI2RlZmluZSBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhtdXRl
eCkgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXggbXV0ZXgKKyMgZGVmaW5lIEdURVNUX0RFRklO
RV9TVEFUSUNfTVVURVhfKG11dGV4KSA6OnRlc3Rpbmc6OmludGVybmFsOjpNdXRleCBtdXRleAog
CisvLyBXZSBjYW5ub3QgbmFtZSB0aGlzIGNsYXNzIE11dGV4TG9jayBiZWNhdXNlIHRoZSBjdG9y
IGRlY2xhcmF0aW9uIHdvdWxkCisvLyBjb25mbGljdCB3aXRoIGEgbWFjcm8gbmFtZWQgTXV0ZXhM
b2NrLCB3aGljaCBpcyBkZWZpbmVkIG9uIHNvbWUKKy8vIHBsYXRmb3Jtcy4gVGhhdCBtYWNybyBp
cyB1c2VkIGFzIGEgZGVmZW5zaXZlIG1lYXN1cmUgdG8gcHJldmVudCBhZ2FpbnN0CisvLyBpbmFk
dmVydGVudCBtaXN1c2VzIG9mIE11dGV4TG9jayBsaWtlICJNdXRleExvY2soJm11KSIgcmF0aGVy
IHRoYW4KKy8vICJNdXRleExvY2sgbCgmbXUpIi4gIEhlbmNlIHRoZSB0eXBlZGVmIHRyaWNrIGJl
bG93LgogY2xhc3MgR1Rlc3RNdXRleExvY2sgewogIHB1YmxpYzoKICAgZXhwbGljaXQgR1Rlc3RN
dXRleExvY2soTXV0ZXgqKSB7fSAgLy8gTk9MSU5UCkBAIC0xMjQxLDExICsyMTc3LDcgQEAgY2xh
c3MgVGhyZWFkTG9jYWwgewogICBUIHZhbHVlXzsKIH07CiAKLS8vIFRoZSBhYm92ZSBzeW5jaHJv
bml6YXRpb24gcHJpbWl0aXZlcyBoYXZlIGR1bW15IGltcGxlbWVudGF0aW9ucy4KLS8vIFRoZXJl
Zm9yZSBHb29nbGUgVGVzdCBpcyBub3QgdGhyZWFkLXNhZmUuCi0jZGVmaW5lIEdURVNUX0lTX1RI
UkVBRFNBRkUgMAotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19QVEhSRUFECisjZW5kaWYgIC8vIEdU
RVNUX0lTX1RIUkVBRFNBRkUKIAogLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHRocmVhZHMgcnVu
bmluZyBpbiB0aGUgcHJvY2Vzcywgb3IgMCB0byBpbmRpY2F0ZSB0aGF0CiAvLyB3ZSBjYW5ub3Qg
ZGV0ZWN0IGl0LgpAQCAtMTI2MCw5ICsyMTkyLDkgQEAgR1RFU1RfQVBJXyBzaXplX3QgR2V0VGhy
ZWFkQ291bnQoKTsKICNpZiBkZWZpbmVkKF9fU1lNQklBTjMyX18pIHx8IGRlZmluZWQoX19JQk1D
UFBfXykgfHwgZGVmaW5lZChfX1NVTlBST19DQykKIC8vIFdlIGxvc2Ugc3VwcG9ydCBmb3IgTlVM
TCBkZXRlY3Rpb24gd2hlcmUgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZQogLy8gcGFzc2luZyBu
b24tUE9EIGNsYXNzZXMgdGhyb3VnaCBlbGxpcHNpcyAoLi4uKS4KLSNkZWZpbmUgR1RFU1RfRUxM
SVBTSVNfTkVFRFNfUE9EXyAxCisjIGRlZmluZSBHVEVTVF9FTExJUFNJU19ORUVEU19QT0RfIDEK
ICNlbHNlCi0jZGVmaW5lIEdURVNUX0NBTl9DT01QQVJFX05VTEwgMQorIyBkZWZpbmUgR1RFU1Rf
Q0FOX0NPTVBBUkVfTlVMTCAxCiAjZW5kaWYKIAogLy8gVGhlIE5va2lhIFN5bWJpYW4gYW5kIElC
TSBYTCBDL0MrKyBjb21waWxlcnMgY2Fubm90IGRlY2lkZSBiZXR3ZWVuCkBAIC0xMjcwLDcgKzIy
MDIsNyBAQCBHVEVTVF9BUElfIHNpemVfdCBHZXRUaHJlYWRDb3VudCgpOwogLy8gX2Nhbl8gZGVj
aWRlIGJldHdlZW4gY2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIGZvciBUIGFuZCBUKiwK
IC8vIHNvIGEgdHIxOjp0eXBlX3RyYWl0cy1saWtlIGlzX3BvaW50ZXIgd29ya3MuCiAjaWYgZGVm
aW5lZChfX1NZTUJJQU4zMl9fKSB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pCi0jZGVmaW5lIEdURVNU
X05FRURTX0lTX1BPSU5URVJfIDEKKyMgZGVmaW5lIEdURVNUX05FRURTX0lTX1BPSU5URVJfIDEK
ICNlbmRpZgogCiB0ZW1wbGF0ZSA8Ym9vbCBib29sX3ZhbHVlPgpAQCAtMTI4OSwxNyArMjIyMSw3
OSBAQCBzdHJ1Y3QgaXNfcG9pbnRlciA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OwogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgaXNfcG9pbnRlcjxUKj4gOiBwdWJsaWMgdHJ1ZV90eXBlIHt9
OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3I+CitzdHJ1Y3QgSXRlcmF0b3JUcmFpdHMg
eworICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Cit9
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBJdGVyYXRvclRyYWl0czxUKj4gewor
ICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3Ry
dWN0IEl0ZXJhdG9yVHJhaXRzPGNvbnN0IFQqPiB7CisgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwor
fTsKKwogI2lmIEdURVNUX09TX1dJTkRPV1MKLSNkZWZpbmUgR1RFU1RfUEFUSF9TRVBfICJcXCIK
LSNkZWZpbmUgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8gMQorIyBkZWZpbmUgR1RFU1RfUEFUSF9T
RVBfICJcXCIKKyMgZGVmaW5lIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfIDEKIC8vIFRoZSBiaWdn
ZXN0IHNpZ25lZCBpbnRlZ2VyIHR5cGUgdGhlIGNvbXBpbGVyIHN1cHBvcnRzLgogdHlwZWRlZiBf
X2ludDY0IEJpZ2dlc3RJbnQ7CiAjZWxzZQotI2RlZmluZSBHVEVTVF9QQVRIX1NFUF8gIi8iCi0j
ZGVmaW5lIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfIDAKKyMgZGVmaW5lIEdURVNUX1BBVEhfU0VQ
XyAiLyIKKyMgZGVmaW5lIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfIDAKIHR5cGVkZWYgbG9uZyBs
b25nIEJpZ2dlc3RJbnQ7ICAvLyBOT0xJTlQKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwog
CisvLyBVdGlsaXRpZXMgZm9yIGNoYXIuCisKKy8vIGlzc3BhY2UoaW50IGNoKSBhbmQgZnJpZW5k
cyBhY2NlcHQgYW4gdW5zaWduZWQgY2hhciBvciBFT0YuICBjaGFyCisvLyBtYXkgYmUgc2lnbmVk
LCBkZXBlbmRpbmcgb24gdGhlIGNvbXBpbGVyIChvciBjb21waWxlciBmbGFncykuCisvLyBUaGVy
ZWZvcmUgd2UgbmVlZCB0byBjYXN0IGEgY2hhciB0byB1bnNpZ25lZCBjaGFyIGJlZm9yZSBjYWxs
aW5nCisvLyBpc3NwYWNlKCksIGV0Yy4KKworaW5saW5lIGJvb2wgSXNBbHBoYShjaGFyIGNoKSB7
CisgIHJldHVybiBpc2FscGhhKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsK
K30KK2lubGluZSBib29sIElzQWxOdW0oY2hhciBjaCkgeworICByZXR1cm4gaXNhbG51bShzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpICE9IDA7Cit9CitpbmxpbmUgYm9vbCBJc0RpZ2l0
KGNoYXIgY2gpIHsKKyAgcmV0dXJuIGlzZGlnaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
Y2gpKSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNMb3dlcihjaGFyIGNoKSB7CisgIHJldHVybiBp
c2xvd2VyKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKK30KK2lubGluZSBi
b29sIElzU3BhY2UoY2hhciBjaCkgeworICByZXR1cm4gaXNzcGFjZShzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyPihjaCkpICE9IDA7Cit9CitpbmxpbmUgYm9vbCBJc1VwcGVyKGNoYXIgY2gpIHsK
KyAgcmV0dXJuIGlzdXBwZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOwor
fQoraW5saW5lIGJvb2wgSXNYRGlnaXQoY2hhciBjaCkgeworICByZXR1cm4gaXN4ZGlnaXQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNYRGln
aXQod2NoYXJfdCBjaCkgeworICBjb25zdCB1bnNpZ25lZCBjaGFyIGxvd19ieXRlID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpOworICByZXR1cm4gY2ggPT0gbG93X2J5dGUgJiYgaXN4
ZGlnaXQobG93X2J5dGUpICE9IDA7Cit9CisKK2lubGluZSBjaGFyIFRvTG93ZXIoY2hhciBjaCkg
eworICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcj4odG9sb3dlcihzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPihjaCkpKTsKK30KK2lubGluZSBjaGFyIFRvVXBwZXIoY2hhciBjaCkgeworICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y2hhcj4odG91cHBlcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihj
aCkpKTsKK30KKworaW5saW5lIHN0ZDo6c3RyaW5nIFN0cmlwVHJhaWxpbmdTcGFjZXMoc3RkOjpz
dHJpbmcgc3RyKSB7CisgIHN0ZDo6c3RyaW5nOjppdGVyYXRvciBpdCA9IHN0ci5lbmQoKTsKKyAg
d2hpbGUgKGl0ICE9IHN0ci5iZWdpbigpICYmIElzU3BhY2UoKi0taXQpKQorICAgIGl0ID0gc3Ry
LmVyYXNlKGl0KTsKKyAgcmV0dXJuIHN0cjsKK30KKwogLy8gVGhlIHRlc3Rpbmc6OmludGVybmFs
Ojpwb3NpeCBuYW1lc3BhY2UgaG9sZHMgd3JhcHBlcnMgZm9yIGNvbW1vbgogLy8gUE9TSVggZnVu
Y3Rpb25zLiAgVGhlc2Ugd3JhcHBlcnMgaGlkZSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbgogLy8g
V2luZG93cy9NU1ZDIGFuZCBQT1NJWCBzeXN0ZW1zLiAgU2luY2Ugc29tZSBjb21waWxlcnMgZGVm
aW5lIHRoZXNlCkBAIC0xMzE0LDM2ICsyMzA4LDM2IEBAIG5hbWVzcGFjZSBwb3NpeCB7CiAKIHR5
cGVkZWYgc3RydWN0IF9zdGF0IFN0YXRTdHJ1Y3Q7CiAKLSNpZmRlZiBfX0JPUkxBTkRDX18KKyMg
aWZkZWYgX19CT1JMQU5EQ19fCiBpbmxpbmUgaW50IElzQVRUWShpbnQgZmQpIHsgcmV0dXJuIGlz
YXR0eShmZCk7IH0KIGlubGluZSBpbnQgU3RyQ2FzZUNtcChjb25zdCBjaGFyKiBzMSwgY29uc3Qg
Y2hhciogczIpIHsKICAgcmV0dXJuIHN0cmljbXAoczEsIHMyKTsKIH0KIGlubGluZSBjaGFyKiBT
dHJEdXAoY29uc3QgY2hhciogc3JjKSB7IHJldHVybiBzdHJkdXAoc3JjKTsgfQotI2Vsc2UgIC8v
ICFfX0JPUkxBTkRDX18KLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBlbHNlICAvLyAh
X19CT1JMQU5EQ19fCisjICBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogaW5saW5lIGludCBJ
c0FUVFkoaW50IC8qIGZkICovKSB7IHJldHVybiAwOyB9Ci0jZWxzZQorIyAgZWxzZQogaW5saW5l
IGludCBJc0FUVFkoaW50IGZkKSB7IHJldHVybiBfaXNhdHR5KGZkKTsgfQotI2VuZGlmICAvLyBH
VEVTVF9PU19XSU5ET1dTX01PQklMRQorIyAgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9C
SUxFCiBpbmxpbmUgaW50IFN0ckNhc2VDbXAoY29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMy
KSB7CiAgIHJldHVybiBfc3RyaWNtcChzMSwgczIpOwogfQogaW5saW5lIGNoYXIqIFN0ckR1cChj
b25zdCBjaGFyKiBzcmMpIHsgcmV0dXJuIF9zdHJkdXAoc3JjKTsgfQotI2VuZGlmICAvLyBfX0JP
UkxBTkRDX18KKyMgZW5kaWYgIC8vIF9fQk9STEFORENfXwogCi0jaWYgR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIGlubGluZSBpbnQgRmlsZU5v
KEZJTEUqIGZpbGUpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aW50PihfZmlsZW5vKGZpbGUp
KTsgfQogLy8gU3RhdCgpLCBSbURpcigpLCBhbmQgSXNEaXIoKSBhcmUgbm90IG5lZWRlZCBvbiBX
aW5kb3dzIENFIGF0IHRoaXMKIC8vIHRpbWUgYW5kIHRodXMgbm90IGRlZmluZWQgdGhlcmUuCi0j
ZWxzZQorIyBlbHNlCiBpbmxpbmUgaW50IEZpbGVObyhGSUxFKiBmaWxlKSB7IHJldHVybiBfZmls
ZW5vKGZpbGUpOyB9CiBpbmxpbmUgaW50IFN0YXQoY29uc3QgY2hhciogcGF0aCwgU3RhdFN0cnVj
dCogYnVmKSB7IHJldHVybiBfc3RhdChwYXRoLCBidWYpOyB9CiBpbmxpbmUgaW50IFJtRGlyKGNv
bnN0IGNoYXIqIGRpcikgeyByZXR1cm4gX3JtZGlyKGRpcik7IH0KIGlubGluZSBib29sIElzRGly
KGNvbnN0IFN0YXRTdHJ1Y3QmIHN0KSB7CiAgIHJldHVybiAoX1NfSUZESVIgJiBzdC5zdF9tb2Rl
KSAhPSAwOwogfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBlbmRpZiAg
Ly8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIAogI2Vsc2UKIApAQCAtMTM2MywxMSArMjM1Nyw3
IEBAIGlubGluZSBib29sIElzRGlyKGNvbnN0IFN0YXRTdHJ1Y3QmIHN0KSB7IHJldHVybiBTX0lT
RElSKHN0LnN0X21vZGUpOyB9CiAKIC8vIEZ1bmN0aW9ucyBkZXByZWNhdGVkIGJ5IE1TVkMgOC4w
LgogCi0jaWZkZWYgX01TQ19WRVIKLS8vIFRlbXBvcmFyaWx5IGRpc2FibGUgd2FybmluZyA0OTk2
IChkZXByZWNhdGVkIGZ1bmN0aW9uKS4KLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3
YXJuaW5nKGRpc2FibGU6NDk5NikKLSNlbmRpZgorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1Nf
UFVTSF8oNDk5NiAvKiBkZXByZWNhdGVkIGZ1bmN0aW9uICovKQogCiBpbmxpbmUgY29uc3QgY2hh
ciogU3RyTkNweShjaGFyKiBkZXN0LCBjb25zdCBjaGFyKiBzcmMsIHNpemVfdCBuKSB7CiAgIHJl
dHVybiBzdHJuY3B5KGRlc3QsIHNyYywgbik7CkBAIC0xMzc3LDcgKzIzNjcsNyBAQCBpbmxpbmUg
Y29uc3QgY2hhciogU3RyTkNweShjaGFyKiBkZXN0LCBjb25zdCBjaGFyKiBzcmMsIHNpemVfdCBu
KSB7CiAvLyBTdHJFcnJvcigpIGFyZW4ndCBuZWVkZWQgb24gV2luZG93cyBDRSBhdCB0aGlzIHRp
bWUgYW5kIHRodXMgbm90CiAvLyBkZWZpbmVkIHRoZXJlLgogCi0jaWYgIUdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCisjaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFICYmICFHVEVTVF9PU19XSU5E
T1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUCiBpbmxpbmUgaW50IENoRGlyKGNvbnN0
IGNoYXIqIGRpcikgeyByZXR1cm4gY2hkaXIoZGlyKTsgfQogI2VuZGlmCiBpbmxpbmUgRklMRSog
Rk9wZW4oY29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciogbW9kZSkgewpAQCAtMTQwMSw4ICsy
MzkxLDkgQEAgaW5saW5lIGludCBDbG9zZShpbnQgZmQpIHsgcmV0dXJuIGNsb3NlKGZkKTsgfQog
aW5saW5lIGNvbnN0IGNoYXIqIFN0ckVycm9yKGludCBlcnJudW0pIHsgcmV0dXJuIHN0cmVycm9y
KGVycm51bSk7IH0KICNlbmRpZgogaW5saW5lIGNvbnN0IGNoYXIqIEdldEVudihjb25zdCBjaGFy
KiBuYW1lKSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyNpZiBHVEVTVF9PU19XSU5E
T1dTX01PQklMRSB8fCBHVEVTVF9PU19XSU5ET1dTX1BIT05FIHwgR1RFU1RfT1NfV0lORE9XU19S
VAogICAvLyBXZSBhcmUgb24gV2luZG93cyBDRSwgd2hpY2ggaGFzIG5vIGVudmlyb25tZW50IHZh
cmlhYmxlcy4KKyAgc3RhdGljX2Nhc3Q8dm9pZD4obmFtZSk7ICAvLyBUbyBwcmV2ZW50ICd1bnVz
ZWQgYXJndW1lbnQnIHdhcm5pbmcuCiAgIHJldHVybiBOVUxMOwogI2VsaWYgZGVmaW5lZChfX0JP
UkxBTkRDX18pIHx8IGRlZmluZWQoX19TdW5PU181XzgpIHx8IGRlZmluZWQoX19TdW5PU181Xzkp
CiAgIC8vIEVudmlyb25tZW50IHZhcmlhYmxlcyB3aGljaCB3ZSBwcm9ncmFtbWF0aWNhbGx5IGNs
ZWFyIHdpbGwgYmUgc2V0IHRvIHRoZQpAQCAtMTQxNCw5ICsyNDA1LDcgQEAgaW5saW5lIGNvbnN0
IGNoYXIqIEdldEVudihjb25zdCBjaGFyKiBuYW1lKSB7CiAjZW5kaWYKIH0KIAotI2lmZGVmIF9N
U0NfVkVSCi0jcHJhZ21hIHdhcm5pbmcocG9wKSAgLy8gUmVzdG9yZXMgdGhlIHdhcm5pbmcgc3Rh
dGUuCi0jZW5kaWYKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQogCiAjaWYgR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKIC8vIFdpbmRvd3MgQ0UgaGFzIG5vIEMgbGlicmFyeS4gVGhl
IGFib3J0KCkgZnVuY3Rpb24gaXMgdXNlZCBpbgpAQCAtMTQyOSw2ICsyNDE4LDIzIEBAIGlubGlu
ZSB2b2lkIEFib3J0KCkgeyBhYm9ydCgpOyB9CiAKIH0gIC8vIG5hbWVzcGFjZSBwb3NpeAogCisv
LyBNU1ZDICJkZXByZWNhdGVzIiBzbnByaW50ZiBhbmQgaXNzdWVzIHdhcm5pbmdzIHdoZXJldmVy
IGl0IGlzIHVzZWQuICBJbgorLy8gb3JkZXIgdG8gYXZvaWQgdGhlc2Ugd2FybmluZ3MsIHdlIG5l
ZWQgdG8gdXNlIF9zbnByaW50ZiBvciBfc25wcmludGZfcyBvbgorLy8gTVNWQy1iYXNlZCBwbGF0
Zm9ybXMuICBXZSBtYXAgdGhlIEdURVNUX1NOUFJJTlRGXyBtYWNybyB0byB0aGUgYXBwcm9wcmlh
dGUKKy8vIGZ1bmN0aW9uIGluIG9yZGVyIHRvIGFjaGlldmUgdGhhdC4gIFdlIHVzZSBtYWNybyBk
ZWZpbml0aW9uIGhlcmUgYmVjYXVzZQorLy8gc25wcmludGYgaXMgYSB2YXJpYWRpYyBmdW5jdGlv
bi4KKyNpZiBfTVNDX1ZFUiA+PSAxNDAwICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorLy8g
TVNWQyAyMDA1IGFuZCBhYm92ZSBzdXBwb3J0IHZhcmlhZGljIG1hY3Jvcy4KKyMgZGVmaW5lIEdU
RVNUX1NOUFJJTlRGXyhidWZmZXIsIHNpemUsIGZvcm1hdCwgLi4uKSBcCisgICAgIF9zbnByaW50
Zl9zKGJ1ZmZlciwgc2l6ZSwgc2l6ZSwgZm9ybWF0LCBfX1ZBX0FSR1NfXykKKyNlbGlmIGRlZmlu
ZWQoX01TQ19WRVIpCisvLyBXaW5kb3dzIENFIGRvZXMgbm90IGRlZmluZSBfc25wcmludGZfcyBh
bmQgTVNWQyBwcmlvciB0byAyMDA1IGRvZXNuJ3QKKy8vIGNvbXBsYWluIGFib3V0IF9zbnByaW50
Zi4KKyMgZGVmaW5lIEdURVNUX1NOUFJJTlRGXyBfc25wcmludGYKKyNlbHNlCisjIGRlZmluZSBH
VEVTVF9TTlBSSU5URl8gc25wcmludGYKKyNlbmRpZgorCiAvLyBUaGUgbWF4aW11bSBudW1iZXIg
YSBCaWdnZXN0SW50IGNhbiByZXByZXNlbnQuICBUaGlzIGRlZmluaXRpb24KIC8vIHdvcmtzIG5v
IG1hdHRlciBCaWdnZXN0SW50IGlzIHJlcHJlc2VudGVkIGluIG9uZSdzIGNvbXBsZW1lbnQgb3IK
IC8vIHR3bydzIGNvbXBsZW1lbnQuCkBAIC0xNTAwLDE0ICsyNTA2LDIzIEBAIHR5cGVkZWYgVHlw
ZVdpdGhTaXplPDg+OjpJbnQgVGltZUluTWlsbGlzOyAgLy8gUmVwcmVzZW50cyB0aW1lIGluIG1p
bGxpc2Vjb25kcy4KIC8vIFV0aWxpdGllcyBmb3IgY29tbWFuZCBsaW5lIGZsYWdzIGFuZCBlbnZp
cm9ubWVudCB2YXJpYWJsZXMuCiAKIC8vIE1hY3JvIGZvciByZWZlcmVuY2luZyBmbGFncy4KLSNk
ZWZpbmUgR1RFU1RfRkxBRyhuYW1lKSBGTEFHU19ndGVzdF8jI25hbWUKKyNpZiAhZGVmaW5lZChH
VEVTVF9GTEFHKQorIyBkZWZpbmUgR1RFU1RfRkxBRyhuYW1lKSBGTEFHU19ndGVzdF8jI25hbWUK
KyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfRkxBRykKKworI2lmICFkZWZpbmVkKEdURVNUX1VT
RV9PV05fRkxBR0ZJTEVfRkxBR18pCisjIGRlZmluZSBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZM
QUdfIDEKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXykK
KworI2lmICFkZWZpbmVkKEdURVNUX0RFQ0xBUkVfYm9vbF8pCisjIGRlZmluZSBHVEVTVF9GTEFH
X1NBVkVSXyA6OnRlc3Rpbmc6OmludGVybmFsOjpHVGVzdEZsYWdTYXZlcgogCiAvLyBNYWNyb3Mg
Zm9yIGRlY2xhcmluZyBmbGFncy4KLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9ib29sXyhuYW1lKSBH
VEVTVF9BUElfIGV4dGVybiBib29sIEdURVNUX0ZMQUcobmFtZSkKLSNkZWZpbmUgR1RFU1RfREVD
TEFSRV9pbnQzMl8obmFtZSkgXAorIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9ib29sXyhuYW1lKSBH
VEVTVF9BUElfIGV4dGVybiBib29sIEdURVNUX0ZMQUcobmFtZSkKKyMgZGVmaW5lIEdURVNUX0RF
Q0xBUkVfaW50MzJfKG5hbWUpIFwKICAgICBHVEVTVF9BUElfIGV4dGVybiA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpJbnQzMiBHVEVTVF9GTEFHKG5hbWUpCiAjZGVmaW5lIEdURVNUX0RFQ0xBUkVfc3Ry
aW5nXyhuYW1lKSBcCi0gICAgR1RFU1RfQVBJXyBleHRlcm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6
U3RyaW5nIEdURVNUX0ZMQUcobmFtZSkKKyAgICBHVEVTVF9BUElfIGV4dGVybiA6OnN0ZDo6c3Ry
aW5nIEdURVNUX0ZMQUcobmFtZSkKIAogLy8gTWFjcm9zIGZvciBkZWZpbmluZyBmbGFncy4KICNk
ZWZpbmUgR1RFU1RfREVGSU5FX2Jvb2xfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpIFwKQEAgLTE1
MTUsNyArMjUzMCwxNSBAQCB0eXBlZGVmIFR5cGVXaXRoU2l6ZTw4Pjo6SW50IFRpbWVJbk1pbGxp
czsgIC8vIFJlcHJlc2VudHMgdGltZSBpbiBtaWxsaXNlY29uZHMuCiAjZGVmaW5lIEdURVNUX0RF
RklORV9pbnQzMl8obmFtZSwgZGVmYXVsdF92YWwsIGRvYykgXAogICAgIEdURVNUX0FQSV8gOjp0
ZXN0aW5nOjppbnRlcm5hbDo6SW50MzIgR1RFU1RfRkxBRyhuYW1lKSA9IChkZWZhdWx0X3ZhbCkK
ICNkZWZpbmUgR1RFU1RfREVGSU5FX3N0cmluZ18obmFtZSwgZGVmYXVsdF92YWwsIGRvYykgXAot
ICAgIEdURVNUX0FQSV8gOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nIEdURVNUX0ZMQUcobmFt
ZSkgPSAoZGVmYXVsdF92YWwpCisgICAgR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEdURVNUX0ZM
QUcobmFtZSkgPSAoZGVmYXVsdF92YWwpCisKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfREVD
TEFSRV9ib29sXykKKworLy8gVGhyZWFkIGFubm90YXRpb25zCisjaWYgIWRlZmluZWQoR1RFU1Rf
RVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKQorIyBkZWZpbmUgR1RFU1RfRVhDTFVTSVZFX0xPQ0tf
UkVRVUlSRURfKGxvY2tzKQorIyBkZWZpbmUgR1RFU1RfTE9DS19FWENMVURFRF8obG9ja3MpCisj
ZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXykKIAogLy8g
UGFyc2VzICdzdHInIGZvciBhIDMyLWJpdCBzaWduZWQgaW50ZWdlci4gIElmIHN1Y2Nlc3NmdWws
IHdyaXRlcyB0aGUgcmVzdWx0CiAvLyB0byAqdmFsdWUgYW5kIHJldHVybnMgdHJ1ZTsgb3RoZXJ3
aXNlIGxlYXZlcyAqdmFsdWUgdW5jaGFuZ2VkIGFuZCByZXR1cm5zCkBAIC0xNTI5LDcgKzI1NTIs
NyBAQCBib29sIFBhcnNlSW50MzIoY29uc3QgTWVzc2FnZSYgc3JjX3RleHQsIGNvbnN0IGNoYXIq
IHN0ciwgSW50MzIqIHZhbHVlKTsKIC8vIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIEdvb2ds
ZSBUZXN0IGZsYWcuCiBib29sIEJvb2xGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywgYm9v
bCBkZWZhdWx0X3ZhbCk7CiBHVEVTVF9BUElfIEludDMyIEludDMyRnJvbUdUZXN0RW52KGNvbnN0
IGNoYXIqIGZsYWcsIEludDMyIGRlZmF1bHRfdmFsKTsKLWNvbnN0IGNoYXIqIFN0cmluZ0Zyb21H
VGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBjb25zdCBjaGFyKiBkZWZhdWx0X3ZhbCk7CitzdGQ6
OnN0cmluZyBTdHJpbmdGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywgY29uc3QgY2hhciog
ZGVmYXVsdF92YWwpOwogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaAppbmRleCBhZmYwOTNkZWM4ZGIzOTkw
NzRlYTNiNzFiYjcyMjdkYTdlOTY3MzBhLi45N2YxYTdmZGQyYzBjYzQ0YzNhMTQ4ZjBmMWVjZGNi
ZGZlOWJhYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgKQEAgLTQzLDU0ICs0MywyMiBA
QAogCiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBzdHJpbmcuaCBpcyBub3QgZ3VhcmFudGVlZCB0
byBwcm92aWRlIHN0cmNweSBvbiBDKysgQnVpbGRlci4KLSNpbmNsdWRlIDxtZW0uaD4KKyMgaW5j
bHVkZSA8bWVtLmg+CiAjZW5kaWYKIAogI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPGd0
ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLQogI2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1
ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKwogbmFtZXNwYWNlIHRlc3Rpbmcgewog
bmFtZXNwYWNlIGludGVybmFsIHsKIAotLy8gU3RyaW5nIC0gYSBVVEYtOCBzdHJpbmcgY2xhc3Mu
Ci0vLwotLy8gRm9yIGhpc3RvcmljIHJlYXNvbnMsIHdlIGRvbid0IHVzZSBzdGQ6OnN0cmluZy4K
LS8vCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogcmVwbGFjZSB0aGlzIGNsYXNzIHdpdGggc3Rk
OjpzdHJpbmcgb3IKLS8vIGltcGxlbWVudCBpdCBpbiB0ZXJtcyBvZiB0aGUgbGF0dGVyLgotLy8K
LS8vIE5vdGUgdGhhdCBTdHJpbmcgY2FuIHJlcHJlc2VudCBib3RoIE5VTEwgYW5kIHRoZSBlbXB0
eSBzdHJpbmcsCi0vLyB3aGlsZSBzdGQ6OnN0cmluZyBjYW5ub3QgcmVwcmVzZW50IE5VTEwuCi0v
LwotLy8gTlVMTCBhbmQgdGhlIGVtcHR5IHN0cmluZyBhcmUgY29uc2lkZXJlZCBkaWZmZXJlbnQu
ICBOVUxMIGlzIGxlc3MKLS8vIHRoYW4gYW55dGhpbmcgKGluY2x1ZGluZyB0aGUgZW1wdHkgc3Ry
aW5nKSBleGNlcHQgaXRzZWxmLgotLy8KLS8vIFRoaXMgY2xhc3Mgb25seSBwcm92aWRlcyBtaW5p
bXVtIGZ1bmN0aW9uYWxpdHkgbmVjZXNzYXJ5IGZvcgotLy8gaW1wbGVtZW50aW5nIEdvb2dsZSBU
ZXN0LiAgV2UgZG8gbm90IGludGVuZCB0byBpbXBsZW1lbnQgYSBmdWxsLWZsZWRnZWQKLS8vIHN0
cmluZyBjbGFzcyBoZXJlLgotLy8KLS8vIFNpbmNlIHRoZSBwdXJwb3NlIG9mIHRoaXMgY2xhc3Mg
aXMgdG8gcHJvdmlkZSBhIHN1YnN0aXR1dGUgZm9yCi0vLyBzdGQ6OnN0cmluZyBvbiBwbGF0Zm9y
bXMgd2hlcmUgaXQgY2Fubm90IGJlIHVzZWQsIHdlIGRlZmluZSBhIGNvcHkKLS8vIGNvbnN0cnVj
dG9yIGFuZCBhc3NpZ25tZW50IG9wZXJhdG9ycyBzdWNoIHRoYXQgd2UgZG9uJ3QgbmVlZAotLy8g
Y29uZGl0aW9uYWwgY29tcGlsYXRpb24gaW4gYSBsb3Qgb2YgcGxhY2VzLgotLy8KLS8vIEluIG9y
ZGVyIHRvIG1ha2UgdGhlIHJlcHJlc2VudGF0aW9uIGVmZmljaWVudCwgdGhlIGQndG9yIG9mIFN0
cmluZwotLy8gaXMgbm90IHZpcnR1YWwuICBUaGVyZWZvcmUgRE8gTk9UIElOSEVSSVQgRlJPTSBT
dHJpbmcuCisvLyBTdHJpbmcgLSBhbiBhYnN0cmFjdCBjbGFzcyBob2xkaW5nIHN0YXRpYyBzdHJp
bmcgdXRpbGl0aWVzLgogY2xhc3MgR1RFU1RfQVBJXyBTdHJpbmcgewogIHB1YmxpYzoKICAgLy8g
U3RhdGljIHV0aWxpdHkgbWV0aG9kcwogCi0gIC8vIFJldHVybnMgdGhlIGlucHV0IGVuY2xvc2Vk
IGluIGRvdWJsZSBxdW90ZXMgaWYgaXQncyBub3QgTlVMTDsKLSAgLy8gb3RoZXJ3aXNlIHJldHVy
bnMgIihudWxsKSIuICBGb3IgZXhhbXBsZSwgIlwiSGVsbG9cIiIgaXMgcmV0dXJuZWQKLSAgLy8g
Zm9yIGlucHV0ICJIZWxsbyIuCi0gIC8vCi0gIC8vIFRoaXMgaXMgdXNlZnVsIGZvciBwcmludGlu
ZyBhIEMgc3RyaW5nIGluIHRoZSBzeW50YXggb2YgYSBsaXRlcmFsLgotICAvLwotICAvLyBLbm93
biBpc3N1ZTogZXNjYXBlIHNlcXVlbmNlcyBhcmUgbm90IGhhbmRsZWQgeWV0LgotICBzdGF0aWMg
U3RyaW5nIFNob3dDU3RyaW5nUXVvdGVkKGNvbnN0IGNoYXIqIGNfc3RyKTsKLQogICAvLyBDbG9u
ZXMgYSAwLXRlcm1pbmF0ZWQgQyBzdHJpbmcsIGFsbG9jYXRpbmcgbWVtb3J5IHVzaW5nIG5ldy4g
IFRoZQogICAvLyBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZSByZXR1cm4g
dmFsdWUgdXNpbmcKICAgLy8gZGVsZXRlW10uICBSZXR1cm5zIHRoZSBjbG9uZWQgc3RyaW5nLCBv
ciBOVUxMIGlmIHRoZSBpbnB1dCBpcwpAQCAtMTM3LDExICsxMDUsNyBAQCBjbGFzcyBHVEVTVF9B
UElfIFN0cmluZyB7CiAgIC8vIE5VTEwgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gIihudWxsKSIuICBJ
ZiBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcKICAgLy8gdGhlIGNvbnZlcnNpb24sICIoZmFpbGVk
IHRvIGNvbnZlcnQgZnJvbSB3aWRlIHN0cmluZykiIGlzCiAgIC8vIHJldHVybmVkLgotICBzdGF0
aWMgU3RyaW5nIFNob3dXaWRlQ1N0cmluZyhjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKTsKLQot
ICAvLyBTaW1pbGFyIHRvIFNob3dXaWRlQ1N0cmluZygpLCBleGNlcHQgdGhhdCB0aGlzIGZ1bmN0
aW9uIGVuY2xvc2VzCi0gIC8vIHRoZSBjb252ZXJ0ZWQgc3RyaW5nIGluIGRvdWJsZSBxdW90ZXMu
Ci0gIHN0YXRpYyBTdHJpbmcgU2hvd1dpZGVDU3RyaW5nUXVvdGVkKGNvbnN0IHdjaGFyX3QqIHdp
ZGVfY19zdHIpOworICBzdGF0aWMgc3RkOjpzdHJpbmcgU2hvd1dpZGVDU3RyaW5nKGNvbnN0IHdj
aGFyX3QqIHdpZGVfY19zdHIpOwogCiAgIC8vIENvbXBhcmVzIHR3byB3aWRlIEMgc3RyaW5ncy4g
IFJldHVybnMgdHJ1ZSBpZmYgdGhleSBoYXZlIHRoZSBzYW1lCiAgIC8vIGNvbnRlbnQuCkBAIC0x
NzUsMTc0ICsxMzksMjcgQEAgY2xhc3MgR1RFU1RfQVBJXyBTdHJpbmcgewogICBzdGF0aWMgYm9v
bCBDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscyhjb25zdCB3Y2hhcl90KiBsaHMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFy
X3QqIHJocyk7CiAKLSAgLy8gRm9ybWF0cyBhIGxpc3Qgb2YgYXJndW1lbnRzIHRvIGEgU3RyaW5n
LCB1c2luZyB0aGUgc2FtZSBmb3JtYXQKLSAgLy8gc3BlYyBzdHJpbmcgYXMgZm9yIHByaW50Zi4K
LSAgLy8KLSAgLy8gV2UgZG8gbm90IHVzZSB0aGUgU3RyaW5nUHJpbnRmIGNsYXNzIGFzIGl0IGlz
IG5vdCB1bml2ZXJzYWxseQotICAvLyBhdmFpbGFibGUuCi0gIC8vCi0gIC8vIFRoZSByZXN1bHQg
aXMgbGltaXRlZCB0byA0MDk2IGNoYXJhY3RlcnMgKGluY2x1ZGluZyB0aGUgdGFpbGluZwotICAv
LyAwKS4gIElmIDQwOTYgY2hhcmFjdGVycyBhcmUgbm90IGVub3VnaCB0byBmb3JtYXQgdGhlIGlu
cHV0LAotICAvLyAiPGJ1ZmZlciBleGNlZWRlZD4iIGlzIHJldHVybmVkLgotICBzdGF0aWMgU3Ry
aW5nIEZvcm1hdChjb25zdCBjaGFyKiBmb3JtYXQsIC4uLik7Ci0KLSAgLy8gQyd0b3JzCi0KLSAg
Ly8gVGhlIGRlZmF1bHQgYyd0b3IgY29uc3RydWN0cyBhIE5VTEwgc3RyaW5nLgotICBTdHJpbmco
KSA6IGNfc3RyXyhOVUxMKSwgbGVuZ3RoXygwKSB7fQotCi0gIC8vIENvbnN0cnVjdHMgYSBTdHJp
bmcgYnkgY2xvbmluZyBhIDAtdGVybWluYXRlZCBDIHN0cmluZy4KLSAgU3RyaW5nKGNvbnN0IGNo
YXIqIGFfY19zdHIpIHsgIC8vIE5PTElOVAotICAgIGlmIChhX2Nfc3RyID09IE5VTEwpIHsKLSAg
ICAgIGNfc3RyXyA9IE5VTEw7Ci0gICAgICBsZW5ndGhfID0gMDsKLSAgICB9IGVsc2UgewotICAg
ICAgQ29uc3RydWN0Tm9uTnVsbChhX2Nfc3RyLCBzdHJsZW4oYV9jX3N0cikpOwotICAgIH0KLSAg
fQotCi0gIC8vIENvbnN0cnVjdHMgYSBTdHJpbmcgYnkgY29weWluZyBhIGdpdmVuIG51bWJlciBv
ZiBjaGFycyBmcm9tIGEKLSAgLy8gYnVmZmVyLiAgRS5nLiBTdHJpbmcoImhlbGxvIiwgMykgY3Jl
YXRlcyB0aGUgc3RyaW5nICJoZWwiLAotICAvLyBTdHJpbmcoImFcMGJjZCIsIDQpIGNyZWF0ZXMg
ImFcMGJjIiwgU3RyaW5nKE5VTEwsIDApIGNyZWF0ZXMgIiIsCi0gIC8vIGFuZCBTdHJpbmcoTlVM
TCwgMSkgcmVzdWx0cyBpbiBhY2Nlc3MgdmlvbGF0aW9uLgotICBTdHJpbmcoY29uc3QgY2hhciog
YnVmZmVyLCBzaXplX3QgYV9sZW5ndGgpIHsKLSAgICBDb25zdHJ1Y3ROb25OdWxsKGJ1ZmZlciwg
YV9sZW5ndGgpOwotICB9CisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGdpdmVuIHN0cmluZyBl
bmRzIHdpdGggdGhlIGdpdmVuIHN1ZmZpeCwgaWdub3JpbmcKKyAgLy8gY2FzZS4gQW55IHN0cmlu
ZyBpcyBjb25zaWRlcmVkIHRvIGVuZCB3aXRoIGFuIGVtcHR5IHN1ZmZpeC4KKyAgc3RhdGljIGJv
b2wgRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoCisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgc3Ry
LCBjb25zdCBzdGQ6OnN0cmluZyYgc3VmZml4KTsKIAotICAvLyBUaGUgY29weSBjJ3RvciBjcmVh
dGVzIGEgbmV3IGNvcHkgb2YgdGhlIHN0cmluZy4gIFRoZSB0d28KLSAgLy8gU3RyaW5nIG9iamVj
dHMgZG8gbm90IHNoYXJlIGNvbnRlbnQuCi0gIFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cikgOiBj
X3N0cl8oTlVMTCksIGxlbmd0aF8oMCkgeyAqdGhpcyA9IHN0cjsgfQorICAvLyBGb3JtYXRzIGFu
IGludCB2YWx1ZSBhcyAiJTAyZCIuCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRJbnRXaWR0
aDIoaW50IHZhbHVlKTsgIC8vICIlMDJkIiBmb3Igd2lkdGggPT0gMgogCi0gIC8vIEQndG9yLiAg
U3RyaW5nIGlzIGludGVuZGVkIHRvIGJlIGEgZmluYWwgY2xhc3MsIHNvIHRoZSBkJ3RvcgotICAv
LyBkb2Vzbid0IG5lZWQgdG8gYmUgdmlydHVhbC4KLSAgflN0cmluZygpIHsgZGVsZXRlW10gY19z
dHJfOyB9CisgIC8vIEZvcm1hdHMgYW4gaW50IHZhbHVlIGFzICIlWCIuCisgIHN0YXRpYyBzdGQ6
OnN0cmluZyBGb3JtYXRIZXhJbnQoaW50IHZhbHVlKTsKIAotICAvLyBBbGxvd3MgYSBTdHJpbmcg
dG8gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYW4gOjpzdGQ6OnN0cmluZyBvcgotICAvLyA6
OnN0cmluZywgYW5kIHZpY2UgdmVyc2EuICBDb252ZXJ0aW5nIGEgU3RyaW5nIGNvbnRhaW5pbmcg
YSBOVUxMCi0gIC8vIHBvaW50ZXIgdG8gOjpzdGQ6OnN0cmluZyBvciA6OnN0cmluZyBpcyB1bmRl
ZmluZWQgYmVoYXZpb3IuCi0gIC8vIENvbnZlcnRpbmcgYSA6OnN0ZDo6c3RyaW5nIG9yIDo6c3Ry
aW5nIGNvbnRhaW5pbmcgYW4gZW1iZWRkZWQgTlVMCi0gIC8vIGNoYXJhY3RlciB0byBhIFN0cmlu
ZyB3aWxsIHJlc3VsdCBpbiB0aGUgcHJlZml4IHVwIHRvIHRoZSBmaXJzdAotICAvLyBOVUwgY2hh
cmFjdGVyLgotICBTdHJpbmcoY29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyKSB7Ci0gICAgQ29uc3Ry
dWN0Tm9uTnVsbChzdHIuY19zdHIoKSwgc3RyLmxlbmd0aCgpKTsKLSAgfQotCi0gIG9wZXJhdG9y
IDo6c3RkOjpzdHJpbmcoKSBjb25zdCB7IHJldHVybiA6OnN0ZDo6c3RyaW5nKGNfc3RyKCksIGxl
bmd0aCgpKTsgfQotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLSAgU3RyaW5nKGNvbnN0
IDo6c3RyaW5nJiBzdHIpIHsKLSAgICBDb25zdHJ1Y3ROb25OdWxsKHN0ci5jX3N0cigpLCBzdHIu
bGVuZ3RoKCkpOwotICB9Ci0KLSAgb3BlcmF0b3IgOjpzdHJpbmcoKSBjb25zdCB7IHJldHVybiA6
OnN0cmluZyhjX3N0cigpLCBsZW5ndGgoKSk7IH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JB
TF9TVFJJTkcKLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgaXMgYW4gZW1wdHkgc3RyaW5n
IChpLmUuICIiKS4KLSAgYm9vbCBlbXB0eSgpIGNvbnN0IHsgcmV0dXJuIChjX3N0cigpICE9IE5V
TEwpICYmIChsZW5ndGgoKSA9PSAwKTsgfQotCi0gIC8vIENvbXBhcmVzIHRoaXMgd2l0aCBhbm90
aGVyIFN0cmluZy4KLSAgLy8gUmV0dXJucyA8IDAgaWYgdGhpcyBpcyBsZXNzIHRoYW4gcmhzLCAw
IGlmIHRoaXMgaXMgZXF1YWwgdG8gcmhzLCBvciA+IDAKLSAgLy8gaWYgdGhpcyBpcyBncmVhdGVy
IHRoYW4gcmhzLgotICBpbnQgQ29tcGFyZShjb25zdCBTdHJpbmcmIHJocykgY29uc3Q7Ci0KLSAg
Ly8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIFN0cmluZyBlcXVhbHMgdGhlIGdpdmVuIEMgc3RyaW5n
LiAgQSBOVUxMCi0gIC8vIHN0cmluZyBhbmQgYSBub24tTlVMTCBzdHJpbmcgYXJlIGNvbnNpZGVy
ZWQgbm90IGVxdWFsLgotICBib29sIG9wZXJhdG9yPT0oY29uc3QgY2hhciogYV9jX3N0cikgY29u
c3QgeyByZXR1cm4gQ29tcGFyZShhX2Nfc3RyKSA9PSAwOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVl
IGlmZiB0aGlzIFN0cmluZyBpcyBsZXNzIHRoYW4gdGhlIGdpdmVuIFN0cmluZy4gIEEKLSAgLy8g
TlVMTCBzdHJpbmcgaXMgY29uc2lkZXJlZCBsZXNzIHRoYW4gIiIuCi0gIGJvb2wgb3BlcmF0b3I8
KGNvbnN0IFN0cmluZyYgcmhzKSBjb25zdCB7IHJldHVybiBDb21wYXJlKHJocykgPCAwOyB9Ci0K
LSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIFN0cmluZyBkb2Vzbid0IGVxdWFsIHRoZSBnaXZl
biBDIHN0cmluZy4gIEEgTlVMTAotICAvLyBzdHJpbmcgYW5kIGEgbm9uLU5VTEwgc3RyaW5nIGFy
ZSBjb25zaWRlcmVkIG5vdCBlcXVhbC4KLSAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIqIGFf
Y19zdHIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gYV9jX3N0cik7IH0KLQotICAvLyBSZXR1
cm5zIHRydWUgaWZmIHRoaXMgU3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LiAgKkFu
eSoKLSAgLy8gU3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGggYSBOVUxMIG9yIGVtcHR5
IHN1ZmZpeC4KLSAgYm9vbCBFbmRzV2l0aChjb25zdCBjaGFyKiBzdWZmaXgpIGNvbnN0OwotCi0g
IC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBTdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZm
aXgsIG5vdCBjb25zaWRlcmluZwotICAvLyBjYXNlLiBBbnkgU3RyaW5nIGlzIGNvbnNpZGVyZWQg
dG8gZW5kIHdpdGggYSBOVUxMIG9yIGVtcHR5IHN1ZmZpeC4KLSAgYm9vbCBFbmRzV2l0aENhc2VJ
bnNlbnNpdGl2ZShjb25zdCBjaGFyKiBzdWZmaXgpIGNvbnN0OwotCi0gIC8vIFJldHVybnMgdGhl
IGxlbmd0aCBvZiB0aGUgZW5jYXBzdWxhdGVkIHN0cmluZywgb3IgMCBpZiB0aGUKLSAgLy8gc3Ry
aW5nIGlzIE5VTEwuCi0gIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBsZW5ndGhfOyB9
Ci0KLSAgLy8gR2V0cyB0aGUgMC10ZXJtaW5hdGVkIEMgc3RyaW5nIHRoaXMgU3RyaW5nIG9iamVj
dCByZXByZXNlbnRzLgotICAvLyBUaGUgU3RyaW5nIG9iamVjdCBzdGlsbCBvd25zIHRoZSBzdHJp
bmcuICBUaGVyZWZvcmUgdGhlIGNhbGxlcgotICAvLyBzaG91bGQgTk9UIGRlbGV0ZSB0aGUgcmV0
dXJuIHZhbHVlLgotICBjb25zdCBjaGFyKiBjX3N0cigpIGNvbnN0IHsgcmV0dXJuIGNfc3RyXzsg
fQotCi0gIC8vIEFzc2lnbnMgYSBDIHN0cmluZyB0byB0aGlzIG9iamVjdC4gIFNlbGYtYXNzaWdu
bWVudCB3b3Jrcy4KLSAgY29uc3QgU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgY2hhciogYV9jX3N0
cikgewotICAgIHJldHVybiAqdGhpcyA9IFN0cmluZyhhX2Nfc3RyKTsKLSAgfQotCi0gIC8vIEFz
c2lnbnMgYSBTdHJpbmcgb2JqZWN0IHRvIHRoaXMgb2JqZWN0LiAgU2VsZi1hc3NpZ25tZW50IHdv
cmtzLgotICBjb25zdCBTdHJpbmcmIG9wZXJhdG9yPShjb25zdCBTdHJpbmcmIHJocykgewotICAg
IGlmICh0aGlzICE9ICZyaHMpIHsKLSAgICAgIGRlbGV0ZVtdIGNfc3RyXzsKLSAgICAgIGlmIChy
aHMuY19zdHIoKSA9PSBOVUxMKSB7Ci0gICAgICAgIGNfc3RyXyA9IE5VTEw7Ci0gICAgICAgIGxl
bmd0aF8gPSAwOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgQ29uc3RydWN0Tm9uTnVsbChyaHMu
Y19zdHIoKSwgcmhzLmxlbmd0aCgpKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gKnRo
aXM7Ci0gIH0KKyAgLy8gRm9ybWF0cyBhIGJ5dGUgYXMgIiUwMlgiLgorICBzdGF0aWMgc3RkOjpz
dHJpbmcgRm9ybWF0Qnl0ZSh1bnNpZ25lZCBjaGFyIHZhbHVlKTsKIAogIHByaXZhdGU6Ci0gIC8v
IENvbnN0cnVjdHMgYSBub24tTlVMTCBTdHJpbmcgZnJvbSB0aGUgZ2l2ZW4gY29udGVudC4gIFRo
aXMKLSAgLy8gZnVuY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gZGF0YV8gaGFzIG5vdCBi
ZWVuIGFsbG9jYXRlZC4KLSAgLy8gQ29uc3RydWN0Tm9uTnVsbChOVUxMLCAwKSByZXN1bHRzIGlu
IGFuIGVtcHR5IHN0cmluZyAoIiIpLgotICAvLyBDb25zdHJ1Y3ROb25OdWxsKE5VTEwsIG5vbl96
ZXJvKSBpcyB1bmRlZmluZWQgYmVoYXZpb3IuCi0gIHZvaWQgQ29uc3RydWN0Tm9uTnVsbChjb25z
dCBjaGFyKiBidWZmZXIsIHNpemVfdCBhX2xlbmd0aCkgewotICAgIGNoYXIqIGNvbnN0IHN0ciA9
IG5ldyBjaGFyW2FfbGVuZ3RoICsgMV07Ci0gICAgbWVtY3B5KHN0ciwgYnVmZmVyLCBhX2xlbmd0
aCk7Ci0gICAgc3RyW2FfbGVuZ3RoXSA9ICdcMCc7Ci0gICAgY19zdHJfID0gc3RyOwotICAgIGxl
bmd0aF8gPSBhX2xlbmd0aDsKLSAgfQotCi0gIGNvbnN0IGNoYXIqIGNfc3RyXzsKLSAgc2l6ZV90
IGxlbmd0aF87CisgIFN0cmluZygpOyAgLy8gTm90IG1lYW50IHRvIGJlIGluc3RhbnRpYXRlZC4K
IH07ICAvLyBjbGFzcyBTdHJpbmcKIAotLy8gU3RyZWFtcyBhIFN0cmluZyB0byBhbiBvc3RyZWFt
LiAgRWFjaCAnXDAnIGNoYXJhY3RlciBpbiB0aGUgU3RyaW5nCi0vLyBpcyByZXBsYWNlZCB3aXRo
ICJcXDAiLgotaW5saW5lIDo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFt
JiBvcywgY29uc3QgU3RyaW5nJiBzdHIpIHsKLSAgaWYgKHN0ci5jX3N0cigpID09IE5VTEwpIHsK
LSAgICBvcyA8PCAiKG51bGwpIjsKLSAgfSBlbHNlIHsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBj
X3N0ciA9IHN0ci5jX3N0cigpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHN0ci5sZW5n
dGgoKTsgaSsrKSB7Ci0gICAgICBpZiAoY19zdHJbaV0gPT0gJ1wwJykgewotICAgICAgICBvcyA8
PCAiXFwwIjsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIG9zIDw8IGNfc3RyW2ldOwotICAgICAg
fQotICAgIH0KLSAgfQotICByZXR1cm4gb3M7Ci19Ci0KLS8vIEdldHMgdGhlIGNvbnRlbnQgb2Yg
dGhlIFN0clN0cmVhbSdzIGJ1ZmZlciBhcyBhIFN0cmluZy4gIEVhY2ggJ1wwJworLy8gR2V0cyB0
aGUgY29udGVudCBvZiB0aGUgc3RyaW5nc3RyZWFtJ3MgYnVmZmVyIGFzIGFuIHN0ZDo6c3RyaW5n
LiAgRWFjaCAnXDAnCiAvLyBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlciBpcyByZXBsYWNlZCB3aXRo
ICJcXDAiLgotR1RFU1RfQVBJXyBTdHJpbmcgU3RyU3RyZWFtVG9TdHJpbmcoU3RyU3RyZWFtKiBz
dHJlYW0pOwotCi0vLyBDb252ZXJ0cyBhIHN0cmVhbWFibGUgdmFsdWUgdG8gYSBTdHJpbmcuICBB
IE5VTEwgcG9pbnRlciBpcwotLy8gY29udmVydGVkIHRvICIobnVsbCkiLiAgV2hlbiB0aGUgaW5w
dXQgdmFsdWUgaXMgYSA6OnN0cmluZywKLS8vIDo6c3RkOjpzdHJpbmcsIDo6d3N0cmluZywgb3Ig
OjpzdGQ6OndzdHJpbmcgb2JqZWN0LCBlYWNoIE5VTAotLy8gY2hhcmFjdGVyIGluIGl0IGlzIHJl
cGxhY2VkIHdpdGggIlxcMCIuCi0KLS8vIERlY2xhcmVkIGhlcmUgYnV0IGRlZmluZWQgaW4gZ3Rl
c3QuaCwgc28gdGhhdCBpdCBoYXMgYWNjZXNzCi0vLyB0byB0aGUgZGVmaW5pdGlvbiBvZiB0aGUg
TWVzc2FnZSBjbGFzcywgcmVxdWlyZWQgYnkgdGhlIEFSTQotLy8gY29tcGlsZXIuCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLVN0cmluZyBTdHJlYW1hYmxlVG9TdHJpbmcoY29uc3QgVCYgc3RyZWFt
YWJsZSk7CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFN0cmluZ1N0cmVhbVRvU3RyaW5nKDo6c3Rk
OjpzdHJpbmdzdHJlYW0qIHN0cmVhbSk7CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAg
Ly8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaAppbmRleCAxNjE3OGZj
MDdhZjEyOWFmMTU0ODcxY2MyZDliM2E5OGQxZDk0YWI0Li5lOWI0MDUzNDBhODU1ZjYwMjU4YjEz
NDAyNmJlN2IxMzYxMmViZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9p
bmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oCkBAIC0xLDQgKzEs
NiBAQAotLy8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgYSBzY3JpcHQuICBETyBOT1QgRURJ
VCBCWSBIQU5EISEhCisvLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBjb21tYW5kOgorLy8g
ICAgIHB1bXAucHkgZ3Rlc3QtdHVwbGUuaC5wdW1wCisvLyBETyBOT1QgRURJVCBCWSBIQU5EISEh
CiAKIC8vIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuCiAvLyBBbGwgUmlnaHRzIFJlc2VydmVk
LgpAQCAtNDQsMTMgKzQ2LDIxIEBACiAvLyBwcml2YXRlIGFzIHB1YmxpYy4KIC8vIFN1biBTdHVk
aW8gdmVyc2lvbnMgPCAxMiBhbHNvIGhhdmUgdGhlIGFib3ZlIGJ1Zy4KICNpZiBkZWZpbmVkKF9f
U1lNQklBTjMyX18pIHx8IChkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiBfX1NVTlBST19DQyA8IDB4
NTkwKQotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8gcHVibGljOgorIyBk
ZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIHB1YmxpYzoKICNlbHNlCi0jZGVm
aW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBcCisjIGRlZmluZSBHVEVTVF9ERUNM
QVJFX1RVUExFX0FTX0ZSSUVORF8gXAogICAgIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNf
KFUpPiBmcmllbmQgY2xhc3MgdHVwbGU7IFwKICAgIHByaXZhdGU6CiAjZW5kaWYKIAorLy8gVmlz
dWFsIFN0dWRpbyAyMDEwLCAyMDEyLCBhbmQgMjAxMyBkZWZpbmUgc3ltYm9scyBpbiBzdGQ6OnRy
MSB0aGF0IGNvbmZsaWN0CisvLyB3aXRoIG91ciBvd24gZGVmaW5pdGlvbnMuIFRoZXJlZm9yZSB1
c2luZyBvdXIgb3duIHR1cGxlIGRvZXMgbm90IHdvcmsgb24KKy8vIHRob3NlIGNvbXBpbGVycy4K
KyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxNjAwICAvKiAxNjAwIGlzIFZp
c3VhbCBTdHVkaW8gMjAxMCAqLworIyBlcnJvciAiZ3Rlc3QncyB0dXBsZSBkb2Vzbid0IGNvbXBp
bGUgb24gVmlzdWFsIFN0dWRpbyAyMDEwIG9yIGxhdGVyLiBcCitHVEVTVF9VU0VfT1dOX1RSMV9U
VVBMRSBtdXN0IGJlIHNldCB0byAwIG9uIHRob3NlIGNvbXBpbGVycy4iCisjZW5kaWYKKwogLy8g
R1RFU1Rfbl9UVVBMRV8oVCkgaXMgdGhlIHR5cGUgb2YgYW4gbi10dXBsZS4KICNkZWZpbmUgR1RF
U1RfMF9UVVBMRV8oVCkgdHVwbGU8PgogI2RlZmluZSBHVEVTVF8xX1RVUExFXyhUKSB0dXBsZTxU
IyMwLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkLCBcCkBAIC0xNDAsMzQgKzE1
MCw1NCBAQCB0ZW1wbGF0ZSA8Ym9vbCBrSW5kZXhWYWxpZCwgaW50IGtJbmRleCwgY2xhc3MgVHVw
bGU+CiBzdHJ1Y3QgVHVwbGVFbGVtZW50OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVT
XyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgMCwgR1RFU1RfMTBfVFVQTEVfKFQpPiB7
IHR5cGVkZWYgVDAgdHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgMCwgR1RFU1Rf
MTBfVFVQTEVfKFQpID4geworICB0eXBlZGVmIFQwIHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8R1RF
U1RfMTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgMSwgR1RFU1Rf
MTBfVFVQTEVfKFQpPiB7IHR5cGVkZWYgVDEgdHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8
dHJ1ZSwgMSwgR1RFU1RfMTBfVFVQTEVfKFQpID4geworICB0eXBlZGVmIFQxIHR5cGU7Cit9Owog
CiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8
dHJ1ZSwgMiwgR1RFU1RfMTBfVFVQTEVfKFQpPiB7IHR5cGVkZWYgVDIgdHlwZTsgfTsKK3N0cnVj
dCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgMiwgR1RFU1RfMTBfVFVQTEVfKFQpID4geworICB0eXBlZGVm
IFQyIHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVj
dCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgMywgR1RFU1RfMTBfVFVQTEVfKFQpPiB7IHR5cGVkZWYgVDMg
dHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgMywgR1RFU1RfMTBfVFVQTEVfKFQp
ID4geworICB0eXBlZGVmIFQzIHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5B
TUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgNCwgR1RFU1RfMTBfVFVQTEVfKFQp
PiB7IHR5cGVkZWYgVDQgdHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgNCwgR1RF
U1RfMTBfVFVQTEVfKFQpID4geworICB0eXBlZGVmIFQ0IHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8
R1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgNSwgR1RF
U1RfMTBfVFVQTEVfKFQpPiB7IHR5cGVkZWYgVDUgdHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1l
bnQ8dHJ1ZSwgNSwgR1RFU1RfMTBfVFVQTEVfKFQpID4geworICB0eXBlZGVmIFQ1IHR5cGU7Cit9
OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1l
bnQ8dHJ1ZSwgNiwgR1RFU1RfMTBfVFVQTEVfKFQpPiB7IHR5cGVkZWYgVDYgdHlwZTsgfTsKK3N0
cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgNiwgR1RFU1RfMTBfVFVQTEVfKFQpID4geworICB0eXBl
ZGVmIFQ2IHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4KLXN0
cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgNywgR1RFU1RfMTBfVFVQTEVfKFQpPiB7IHR5cGVkZWYg
VDcgdHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgNywgR1RFU1RfMTBfVFVQTEVf
KFQpID4geworICB0eXBlZGVmIFQ3IHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQ
RU5BTUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgOCwgR1RFU1RfMTBfVFVQTEVf
KFQpPiB7IHR5cGVkZWYgVDggdHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgOCwg
R1RFU1RfMTBfVFVQTEVfKFQpID4geworICB0eXBlZGVmIFQ4IHR5cGU7Cit9OwogCiB0ZW1wbGF0
ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgOSwg
R1RFU1RfMTBfVFVQTEVfKFQpPiB7IHR5cGVkZWYgVDkgdHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVs
ZW1lbnQ8dHJ1ZSwgOSwgR1RFU1RfMTBfVFVQTEVfKFQpID4geworICB0eXBlZGVmIFQ5IHR5cGU7
Cit9OwogCiB9ICAvLyBuYW1lc3BhY2UgZ3Rlc3RfaW50ZXJuYWwKIApAQCAtNzA4LDM3ICs3Mzgs
NTkgQEAgaW5saW5lIEdURVNUXzEwX1RVUExFXyhUKSBtYWtlX3R1cGxlKGNvbnN0IFQwJiBmMCwg
Y29uc3QgVDEmIGYxLCBjb25zdCBUMiYgZjIsCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+IHN0
cnVjdCB0dXBsZV9zaXplOwogCiB0ZW1wbGF0ZSA8R1RFU1RfMF9UWVBFTkFNRVNfKFQpPgotc3Ry
dWN0IHR1cGxlX3NpemU8R1RFU1RfMF9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1
ZSA9IDA7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8wX1RVUExFXyhUKSA+IHsKKyAgc3Rh
dGljIGNvbnN0IGludCB2YWx1ZSA9IDA7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMV9UWVBFTkFN
RVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfMV9UVVBMRV8oVCk+IHsgc3RhdGljIGNv
bnN0IGludCB2YWx1ZSA9IDE7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8xX1RVUExFXyhU
KSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDE7Cit9OwogCiB0ZW1wbGF0ZSA8R1RF
U1RfMl9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfMl9UVVBMRV8oVCk+
IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDI7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVT
VF8yX1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDI7Cit9OwogCiB0
ZW1wbGF0ZSA8R1RFU1RfM19UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1Rf
M19UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDM7IH07CitzdHJ1Y3QgdHVw
bGVfc2l6ZTxHVEVTVF8zX1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9
IDM7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfNF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxl
X3NpemU8R1RFU1RfNF9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDQ7IH07
CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF80X1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0
IGludCB2YWx1ZSA9IDQ7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfNV9UWVBFTkFNRVNfKFQpPgot
c3RydWN0IHR1cGxlX3NpemU8R1RFU1RfNV9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2
YWx1ZSA9IDU7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF81X1RVUExFXyhUKSA+IHsKKyAg
c3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDU7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfNl9UWVBF
TkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfNl9UVVBMRV8oVCk+IHsgc3RhdGlj
IGNvbnN0IGludCB2YWx1ZSA9IDY7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF82X1RVUExF
XyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDY7Cit9OwogCiB0ZW1wbGF0ZSA8
R1RFU1RfN19UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfN19UVVBMRV8o
VCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDc7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxH
VEVTVF83X1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDc7Cit9Owog
CiB0ZW1wbGF0ZSA8R1RFU1RfOF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RF
U1RfOF9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDg7IH07CitzdHJ1Y3Qg
dHVwbGVfc2l6ZTxHVEVTVF84X1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1
ZSA9IDg7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfOV9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1
cGxlX3NpemU8R1RFU1RfOV9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDk7
IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF85X1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNv
bnN0IGludCB2YWx1ZSA9IDk7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhU
KT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzEwX1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3Qg
aW50IHZhbHVlID0gMTA7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8xMF9UVVBMRV8oVCkg
PiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAxMDsKK307CiAKIHRlbXBsYXRlIDxpbnQg
aywgY2xhc3MgVHVwbGU+CiBzdHJ1Y3QgdHVwbGVfZWxlbWVudCB7CkBAIC05MjIsOCArOTc0LDgg
QEAgdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCksIEdURVNUXzEwX1RZUEVOQU1FU18o
VSk+CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdURVNUXzEwX1RVUExFXyhUKSYgdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR1RFU1RfMTBfVFVQTEVfKFUpJiB1KSB7CiAg
IHJldHVybiBndGVzdF9pbnRlcm5hbDo6U2FtZVNpemVUdXBsZVByZWZpeENvbXBhcmF0b3I8Ci0g
ICAgICB0dXBsZV9zaXplPEdURVNUXzEwX1RVUExFXyhUKT46OnZhbHVlLAotICAgICAgdHVwbGVf
c2l6ZTxHVEVTVF8xMF9UVVBMRV8oVSk+Ojp2YWx1ZT46OkVxKHQsIHUpOworICAgICAgdHVwbGVf
c2l6ZTxHVEVTVF8xMF9UVVBMRV8oVCkgPjo6dmFsdWUsCisgICAgICB0dXBsZV9zaXplPEdURVNU
XzEwX1RVUExFXyhVKSA+Ojp2YWx1ZT46OkVxKHQsIHUpOwogfQogCiB0ZW1wbGF0ZSA8R1RFU1Rf
MTBfVFlQRU5BTUVTXyhUKSwgR1RFU1RfMTBfVFlQRU5BTUVTXyhVKT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUu
aC5wdW1wIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9n
dGVzdC10dXBsZS5oLnB1bXAKaW5kZXggODVlYmM4MDYyZWUxMDQ0NzM3YjM2ZThhNDA4NWQyNjdm
MThkYzIwNS4uNDI5ZGRmZWVjYWE3NGU3MWE5ZDg5ZWM1NjhlOTg1ODFiNzY2MmIwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC10dXBsZS5oLnB1bXAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oLnB1bXAKQEAgLTQ1LDEzICs0NSwyMSBAQCAkJCBUaGlz
IG1ldGEgY29tbWVudCBmaXhlcyBhdXRvLWluZGVudGF0aW9uIGluIEVtYWNzLiB9fQogLy8gcHJp
dmF0ZSBhcyBwdWJsaWMuCiAvLyBTdW4gU3R1ZGlvIHZlcnNpb25zIDwgMTIgYWxzbyBoYXZlIHRo
ZSBhYm92ZSBidWcuCiAjaWYgZGVmaW5lZChfX1NZTUJJQU4zMl9fKSB8fCAoZGVmaW5lZChfX1NV
TlBST19DQykgJiYgX19TVU5QUk9fQ0MgPCAweDU5MCkKLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9U
VVBMRV9BU19GUklFTkRfIHB1YmxpYzoKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNf
RlJJRU5EXyBwdWJsaWM6CiAjZWxzZQotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZS
SUVORF8gXAorIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIFwKICAgICB0
ZW1wbGF0ZSA8R1RFU1RfJChuKV9UWVBFTkFNRVNfKFUpPiBmcmllbmQgY2xhc3MgdHVwbGU7IFwK
ICAgIHByaXZhdGU6CiAjZW5kaWYKIAorLy8gVmlzdWFsIFN0dWRpbyAyMDEwLCAyMDEyLCBhbmQg
MjAxMyBkZWZpbmUgc3ltYm9scyBpbiBzdGQ6OnRyMSB0aGF0IGNvbmZsaWN0CisvLyB3aXRoIG91
ciBvd24gZGVmaW5pdGlvbnMuIFRoZXJlZm9yZSB1c2luZyBvdXIgb3duIHR1cGxlIGRvZXMgbm90
IHdvcmsgb24KKy8vIHRob3NlIGNvbXBpbGVycy4KKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBf
TVNDX1ZFUiA+PSAxNjAwICAvKiAxNjAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxMCAqLworIyBlcnJv
ciAiZ3Rlc3QncyB0dXBsZSBkb2Vzbid0IGNvbXBpbGUgb24gVmlzdWFsIFN0dWRpbyAyMDEwIG9y
IGxhdGVyLiBcCitHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSBtdXN0IGJlIHNldCB0byAwIG9uIHRo
b3NlIGNvbXBpbGVycy4iCisjZW5kaWYKKwogCiAkcmFuZ2UgaSAwLi5uLTEKICRyYW5nZSBqIDAu
Lm4KQEAgLTExOCw4ICsxMjYsOSBAQCBzdHJ1Y3QgVHVwbGVFbGVtZW50OwogCiAkZm9yIGkgW1sK
IHRlbXBsYXRlIDxHVEVTVF8kKG4pX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50
PHRydWUsICRpLCBHVEVTVF8kKG4pX1RVUExFXyhUKT4gW1tdXQoteyB0eXBlZGVmIFQkaSB0eXBl
OyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAkaSwgR1RFU1RfJChuKV9UVVBMRV8oVCkg
PiB7CisgIHR5cGVkZWYgVCRpIHR5cGU7Cit9OwogCiAKIF1dCkBAIC0yMjAsNyArMjI5LDkgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPiBzdHJ1Y3QgdHVwbGVfc2l6ZTsKIAogJGZvciBqIFtb
CiB0ZW1wbGF0ZSA8R1RFU1RfJChqKV9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8
R1RFU1RfJChqKV9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9ICRqOyB9Owor
c3RydWN0IHR1cGxlX3NpemU8R1RFU1RfJChqKV9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25z
dCBpbnQgdmFsdWUgPSAkajsKK307CiAKIAogXV0KQEAgLTMwMiw4ICszMTMsOCBAQCB0ZW1wbGF0
ZSA8R1RFU1RfJChuKV9UWVBFTkFNRVNfKFQpLCBHVEVTVF8kKG4pX1RZUEVOQU1FU18oVSk+CiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdURVNUXyQobilfVFVQTEVfKFQpJiB0LAogICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHVEVTVF8kKG4pX1RVUExFXyhVKSYgdSkgewogICBy
ZXR1cm4gZ3Rlc3RfaW50ZXJuYWw6OlNhbWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9yPAotICAg
ICAgdHVwbGVfc2l6ZTxHVEVTVF8kKG4pX1RVUExFXyhUKT46OnZhbHVlLAotICAgICAgdHVwbGVf
c2l6ZTxHVEVTVF8kKG4pX1RVUExFXyhVKT46OnZhbHVlPjo6RXEodCwgdSk7CisgICAgICB0dXBs
ZV9zaXplPEdURVNUXyQobilfVFVQTEVfKFQpID46OnZhbHVlLAorICAgICAgdHVwbGVfc2l6ZTxH
VEVTVF8kKG4pX1RVUExFXyhVKSA+Ojp2YWx1ZT46OkVxKHQsIHUpOwogfQogCiB0ZW1wbGF0ZSA8
R1RFU1RfJChuKV9UWVBFTkFNRVNfKFQpLCBHVEVTVF8kKG4pX1RZUEVOQU1FU18oVSk+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXR5cGUtdXRpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9p
bnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaAppbmRleCAwOTNlZWU2ZjAxOTYzNTU2OWY0MDRhZTYz
NTdiOGRlNDhiNzE4ZTgxLi5lNDZmN2NmY2I0ODNhOTU1MWMyMGFkYTIzYjc3Zjk4ODA0MDVmNGZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVy
bmFsL2d0ZXN0LXR5cGUtdXRpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgKQEAgLTQ0LDU1ICs0NCw2MyBAQAog
I2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RZUEVfVVRJTF9IXwog
I2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RZUEVfVVRJTF9IXwog
Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgotI2luY2x1ZGUgPGd0ZXN0
L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oPgotCi0jaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwg
R1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaCIKIAogLy8gI2lmZGVmIF9fR05VQ19fIGlzIHRvbyBnZW5lcmFsIGhlcmUuICBJdCBpcyBw
b3NzaWJsZSB0byB1c2UgZ2NjIHdpdGhvdXQgdXNpbmcKIC8vIGxpYnN0ZGMrKyAod2hpY2ggaXMg
d2hlcmUgY3h4YWJpLmggY29tZXMgZnJvbSkuCi0jaWZkZWYgX19HTElCQ1hYX18KLSNpbmNsdWRl
IDxjeHhhYmkuaD4KLSNlbmRpZiAgLy8gX19HTElCQ1hYX18KKyMgaWYgR1RFU1RfSEFTX0NYWEFC
SV9IXworIyAgaW5jbHVkZSA8Y3h4YWJpLmg+CisjIGVsaWYgZGVmaW5lZChfX0hQX2FDQykKKyMg
IGluY2x1ZGUgPGFjeHhfZGVtYW5nbGUuaD4KKyMgZW5kaWYgIC8vIEdURVNUX0hBU0hfQ1hYQUJJ
X0hfCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKLS8vIEFz
c2VydHlUeXBlRXE8VDEsIFQyPjo6dHlwZSBpcyBkZWZpbmVkIGlmZiBUMSBhbmQgVDIgYXJlIHRo
ZSBzYW1lCi0vLyB0eXBlLiAgVGhpcyBjYW4gYmUgdXNlZCBhcyBhIGNvbXBpbGUtdGltZSBhc3Nl
cnRpb24gdG8gZW5zdXJlIHRoYXQKLS8vIHR3byB0eXBlcyBhcmUgZXF1YWwuCi0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1zdHJ1Y3QgQXNzZXJ0VHlwZUVxOwotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBBc3NlcnRUeXBlRXE8VCwgVD4gewotICB0eXBlZGVm
IGJvb2wgdHlwZTsKLX07Ci0KIC8vIEdldFR5cGVOYW1lPFQ+KCkgcmV0dXJucyBhIGh1bWFuLXJl
YWRhYmxlIG5hbWUgb2YgdHlwZSBULgorLy8gTkI6IFRoaXMgZnVuY3Rpb24gaXMgYWxzbyB1c2Vk
IGluIEdvb2dsZSBNb2NrLCBzbyBkb24ndCBtb3ZlIGl0IGluc2lkZSBvZgorLy8gdGhlIHR5cGVk
LXRlc3Qtb25seSBzZWN0aW9uIGJlbG93LgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1TdHJpbmcg
R2V0VHlwZU5hbWUoKSB7Ci0jaWYgR1RFU1RfSEFTX1JUVEkKK3N0ZDo6c3RyaW5nIEdldFR5cGVO
YW1lKCkgeworIyBpZiBHVEVTVF9IQVNfUlRUSQogCiAgIGNvbnN0IGNoYXIqIGNvbnN0IG5hbWUg
PSB0eXBlaWQoVCkubmFtZSgpOwotI2lmZGVmIF9fR0xJQkNYWF9fCisjICBpZiBHVEVTVF9IQVNf
Q1hYQUJJX0hfIHx8IGRlZmluZWQoX19IUF9hQ0MpCiAgIGludCBzdGF0dXMgPSAwOwogICAvLyBn
Y2MncyBpbXBsZW1lbnRhdGlvbiBvZiB0eXBlaWQoVCkubmFtZSgpIG1hbmdsZXMgdGhlIHR5cGUg
bmFtZSwKICAgLy8gc28gd2UgaGF2ZSB0byBkZW1hbmdsZSBpdC4KLSAgY2hhciogY29uc3QgcmVh
ZGFibGVfbmFtZSA9IGFiaTo6X19jeGFfZGVtYW5nbGUobmFtZSwgMCwgMCwgJnN0YXR1cyk7Ci0g
IGNvbnN0IFN0cmluZyBuYW1lX3N0cihzdGF0dXMgPT0gMCA/IHJlYWRhYmxlX25hbWUgOiBuYW1l
KTsKKyMgICBpZiBHVEVTVF9IQVNfQ1hYQUJJX0hfCisgIHVzaW5nIGFiaTo6X19jeGFfZGVtYW5n
bGU7CisjICAgZW5kaWYgIC8vIEdURVNUX0hBU19DWFhBQklfSF8KKyAgY2hhciogY29uc3QgcmVh
ZGFibGVfbmFtZSA9IF9fY3hhX2RlbWFuZ2xlKG5hbWUsIDAsIDAsICZzdGF0dXMpOworICBjb25z
dCBzdGQ6OnN0cmluZyBuYW1lX3N0cihzdGF0dXMgPT0gMCA/IHJlYWRhYmxlX25hbWUgOiBuYW1l
KTsKICAgZnJlZShyZWFkYWJsZV9uYW1lKTsKICAgcmV0dXJuIG5hbWVfc3RyOwotI2Vsc2UKKyMg
IGVsc2UKICAgcmV0dXJuIG5hbWU7Ci0jZW5kaWYgIC8vIF9fR0xJQkNYWF9fCisjICBlbmRpZiAg
Ly8gR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBfX0hQX2FDQworCisjIGVsc2UKIAotI2Vsc2UKICAg
cmV0dXJuICI8dHlwZT4iOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUlRUSQorCisjIGVuZGlmICAv
LyBHVEVTVF9IQVNfUlRUSQogfQogCisjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RFU1Rf
SEFTX1RZUEVEX1RFU1RfUAorCisvLyBBc3NlcnR5VHlwZUVxPFQxLCBUMj46OnR5cGUgaXMgZGVm
aW5lZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQorLy8gdHlwZS4gIFRoaXMgY2FuIGJlIHVz
ZWQgYXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0aGF0CisvLyB0d28gdHlw
ZXMgYXJlIGVxdWFsLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorc3Ry
dWN0IEFzc2VydFR5cGVFcTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQXNzZXJ0
VHlwZUVxPFQsIFQ+IHsKKyAgdHlwZWRlZiBib29sIHR5cGU7Cit9OworCiAvLyBBIHVuaXF1ZSB0
eXBlIHVzZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBhcmd1bWVudHMgb2YgY2xhc3MK
IC8vIHRlbXBsYXRlIFR5cGVzLiAgVGhpcyBhbGxvd3MgdXMgdG8gc2ltdWxhdGUgdmFyaWFkaWMg
dGVtcGxhdGVzCiAvLyAoZS5nLiBUeXBlczxpbnQ+LCBUeXBlPGludCwgZG91YmxlPiwgYW5kIGV0
YyksIHdoaWNoIEMrKyBkb2Vzbid0CkBAIC0xNjExLDcgKzE2MTksNyBAQCBzdHJ1Y3QgVHlwZXM8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBU
MTQsIFQxNSwKIAogbmFtZXNwYWNlIGludGVybmFsIHsKIAotI2RlZmluZSBHVEVTVF9URU1QTEFU
RV8gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzCisjIGRlZmluZSBHVEVTVF9URU1QTEFURV8g
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzCiAKIC8vIFRoZSB0ZW1wbGF0ZSAic2VsZWN0b3Ii
IHN0cnVjdCBUZW1wbGF0ZVNlbDxUbXBsPiBpcyB1c2VkIHRvCiAvLyByZXByZXNlbnQgVG1wbCwg
d2hpY2ggbXVzdCBiZSBhIGNsYXNzIHRlbXBsYXRlIHdpdGggb25lIHR5cGUKQEAgLTE2MjksNyAr
MTYzNyw3IEBAIHN0cnVjdCBUZW1wbGF0ZVNlbCB7CiAgIH07CiB9OwogCi0jZGVmaW5lIEdURVNU
X0JJTkRfKFRtcGxTZWwsIFQpIFwKKyMgZGVmaW5lIEdURVNUX0JJTkRfKFRtcGxTZWwsIFQpIFwK
ICAgVG1wbFNlbDo6dGVtcGxhdGUgQmluZDxUPjo6dHlwZQogCiAvLyBBIHVuaXF1ZSBzdHJ1Y3Qg
dGVtcGxhdGUgdXNlZCBhcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlCkBAIC0zMjkxLDcgKzMy
OTksOSBAQCBzdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAogLy8gSU5TVEFOVElBVEVfVFlQRURfVEVTVF9D
QVNFX1AoKS4KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgVHlwZUxpc3QgeyB0eXBl
ZGVmIFR5cGVzMTxUPiB0eXBlOyB9Oworc3RydWN0IFR5cGVMaXN0IHsKKyAgdHlwZWRlZiBUeXBl
czE8VD4gdHlwZTsKK307CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5
cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgdHlwZW5hbWUgVDYsIHR5
cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKQEAgLTMz
MTMsOSArMzMyMyw5IEBAIHN0cnVjdCBUeXBlTGlzdDxUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCiAgICAgICBUNDEsIFQ0MiwgVDQz
LCBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5LCBUNTA+Ojp0eXBlIHR5cGU7CiB9OwogCisj
ZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AK
KwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCi0j
ZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AK
LQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RZUEVfVVRJ
TF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9p
bnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wCmluZGV4IDVhZWQx
ZTU1NDRmYTJkYTE1ODk3MzRjYmMzYjQxNDFiNTg3YTFmMzIuLjI1MWZkZjAyNWIyYzUzMTFmYWY5
NWU4NmUzMzBmZTkyMWM2MGRhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgucHVtcAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRp
bC5oLnB1bXAKQEAgLTQyLDU1ICs0Miw2MyBAQCAkdmFyIG4gPSA1MCAgJCQgTWF4aW11bSBsZW5n
dGggb2YgdHlwZSBsaXN0cyB3ZSB3YW50IHRvIHN1cHBvcnQuCiAjaWZuZGVmIEdURVNUX0lOQ0xV
REVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xV
REVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCiAKLSNpbmNsdWRlIDxndGVzdC9p
bnRlcm5hbC9ndGVzdC1wb3J0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3Ry
aW5nLmg+Ci0KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVT
VF9QCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAvLyAjaWZkZWYg
X19HTlVDX18gaXMgdG9vIGdlbmVyYWwgaGVyZS4gIEl0IGlzIHBvc3NpYmxlIHRvIHVzZSBnY2Mg
d2l0aG91dCB1c2luZwogLy8gbGlic3RkYysrICh3aGljaCBpcyB3aGVyZSBjeHhhYmkuaCBjb21l
cyBmcm9tKS4KLSNpZmRlZiBfX0dMSUJDWFhfXwotI2luY2x1ZGUgPGN4eGFiaS5oPgotI2VuZGlm
ICAvLyBfX0dMSUJDWFhfXworIyBpZiBHVEVTVF9IQVNfQ1hYQUJJX0hfCisjICBpbmNsdWRlIDxj
eHhhYmkuaD4KKyMgZWxpZiBkZWZpbmVkKF9fSFBfYUNDKQorIyAgaW5jbHVkZSA8YWN4eF9kZW1h
bmdsZS5oPgorIyBlbmRpZiAgLy8gR1RFU1RfSEFTSF9DWFhBQklfSF8KIAogbmFtZXNwYWNlIHRl
c3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsKIAotLy8gQXNzZXJ0eVR5cGVFcTxUMSwgVDI+
Ojp0eXBlIGlzIGRlZmluZWQgaWZmIFQxIGFuZCBUMiBhcmUgdGhlIHNhbWUKLS8vIHR5cGUuICBU
aGlzIGNhbiBiZSB1c2VkIGFzIGEgY29tcGlsZS10aW1lIGFzc2VydGlvbiB0byBlbnN1cmUgdGhh
dAotLy8gdHdvIHR5cGVzIGFyZSBlcXVhbC4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMj4KLXN0cnVjdCBBc3NlcnRUeXBlRXE7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
c3RydWN0IEFzc2VydFR5cGVFcTxULCBUPiB7Ci0gIHR5cGVkZWYgYm9vbCB0eXBlOwotfTsKLQog
Ly8gR2V0VHlwZU5hbWU8VD4oKSByZXR1cm5zIGEgaHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0eXBl
IFQuCisvLyBOQjogVGhpcyBmdW5jdGlvbiBpcyBhbHNvIHVzZWQgaW4gR29vZ2xlIE1vY2ssIHNv
IGRvbid0IG1vdmUgaXQgaW5zaWRlIG9mCisvLyB0aGUgdHlwZWQtdGVzdC1vbmx5IHNlY3Rpb24g
YmVsb3cuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVN0cmluZyBHZXRUeXBlTmFtZSgpIHsKLSNp
ZiBHVEVTVF9IQVNfUlRUSQorc3RkOjpzdHJpbmcgR2V0VHlwZU5hbWUoKSB7CisjIGlmIEdURVNU
X0hBU19SVFRJCiAKICAgY29uc3QgY2hhciogY29uc3QgbmFtZSA9IHR5cGVpZChUKS5uYW1lKCk7
Ci0jaWZkZWYgX19HTElCQ1hYX18KKyMgIGlmIEdURVNUX0hBU19DWFhBQklfSF8gfHwgZGVmaW5l
ZChfX0hQX2FDQykKICAgaW50IHN0YXR1cyA9IDA7CiAgIC8vIGdjYydzIGltcGxlbWVudGF0aW9u
IG9mIHR5cGVpZChUKS5uYW1lKCkgbWFuZ2xlcyB0aGUgdHlwZSBuYW1lLAogICAvLyBzbyB3ZSBo
YXZlIHRvIGRlbWFuZ2xlIGl0LgotICBjaGFyKiBjb25zdCByZWFkYWJsZV9uYW1lID0gYWJpOjpf
X2N4YV9kZW1hbmdsZShuYW1lLCAwLCAwLCAmc3RhdHVzKTsKLSAgY29uc3QgU3RyaW5nIG5hbWVf
c3RyKHN0YXR1cyA9PSAwID8gcmVhZGFibGVfbmFtZSA6IG5hbWUpOworIyAgIGlmIEdURVNUX0hB
U19DWFhBQklfSF8KKyAgdXNpbmcgYWJpOjpfX2N4YV9kZW1hbmdsZTsKKyMgICBlbmRpZiAgLy8g
R1RFU1RfSEFTX0NYWEFCSV9IXworICBjaGFyKiBjb25zdCByZWFkYWJsZV9uYW1lID0gX19jeGFf
ZGVtYW5nbGUobmFtZSwgMCwgMCwgJnN0YXR1cyk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG5hbWVf
c3RyKHN0YXR1cyA9PSAwID8gcmVhZGFibGVfbmFtZSA6IG5hbWUpOwogICBmcmVlKHJlYWRhYmxl
X25hbWUpOwogICByZXR1cm4gbmFtZV9zdHI7Ci0jZWxzZQorIyAgZWxzZQogICByZXR1cm4gbmFt
ZTsKLSNlbmRpZiAgLy8gX19HTElCQ1hYX18KKyMgIGVuZGlmICAvLyBHVEVTVF9IQVNfQ1hYQUJJ
X0hfIHx8IF9fSFBfYUNDCisKKyMgZWxzZQogCi0jZWxzZQogICByZXR1cm4gIjx0eXBlPiI7Ci0j
ZW5kaWYgIC8vIEdURVNUX0hBU19SVFRJCisKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19SVFRJCiB9
CiAKKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisK
Ky8vIEFzc2VydHlUeXBlRXE8VDEsIFQyPjo6dHlwZSBpcyBkZWZpbmVkIGlmZiBUMSBhbmQgVDIg
YXJlIHRoZSBzYW1lCisvLyB0eXBlLiAgVGhpcyBjYW4gYmUgdXNlZCBhcyBhIGNvbXBpbGUtdGlt
ZSBhc3NlcnRpb24gdG8gZW5zdXJlIHRoYXQKKy8vIHR3byB0eXBlcyBhcmUgZXF1YWwuCisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitzdHJ1Y3QgQXNzZXJ0VHlwZUVxOwor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBBc3NlcnRUeXBlRXE8VCwgVD4geworICB0
eXBlZGVmIGJvb2wgdHlwZTsKK307CisKIC8vIEEgdW5pcXVlIHR5cGUgdXNlZCBhcyB0aGUgZGVm
YXVsdCB2YWx1ZSBmb3IgdGhlIGFyZ3VtZW50cyBvZiBjbGFzcwogLy8gdGVtcGxhdGUgVHlwZXMu
ICBUaGlzIGFsbG93cyB1cyB0byBzaW11bGF0ZSB2YXJpYWRpYyB0ZW1wbGF0ZXMKIC8vIChlLmcu
IFR5cGVzPGludD4sIFR5cGU8aW50LCBkb3VibGU+LCBhbmQgZXRjKSwgd2hpY2ggQysrIGRvZXNu
J3QKQEAgLTE2OSw3ICsxNzcsNyBAQCBzdHJ1Y3QgVHlwZXM8JGZvciBqLCBbW1Qkal1dJGZvciBr
W1ssIGludGVybmFsOjpOb25lXV0+IHsKIAogbmFtZXNwYWNlIGludGVybmFsIHsKIAotI2RlZmlu
ZSBHVEVTVF9URU1QTEFURV8gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzCisjIGRlZmluZSBH
VEVTVF9URU1QTEFURV8gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzCiAKIC8vIFRoZSB0ZW1w
bGF0ZSAic2VsZWN0b3IiIHN0cnVjdCBUZW1wbGF0ZVNlbDxUbXBsPiBpcyB1c2VkIHRvCiAvLyBy
ZXByZXNlbnQgVG1wbCwgd2hpY2ggbXVzdCBiZSBhIGNsYXNzIHRlbXBsYXRlIHdpdGggb25lIHR5
cGUKQEAgLTE4Nyw3ICsxOTUsNyBAQCBzdHJ1Y3QgVGVtcGxhdGVTZWwgewogICB9OwogfTsKIAot
I2RlZmluZSBHVEVTVF9CSU5EXyhUbXBsU2VsLCBUKSBcCisjIGRlZmluZSBHVEVTVF9CSU5EXyhU
bXBsU2VsLCBUKSBcCiAgIFRtcGxTZWw6OnRlbXBsYXRlIEJpbmQ8VD46OnR5cGUKIAogLy8gQSB1
bmlxdWUgc3RydWN0IHRlbXBsYXRlIHVzZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZQpA
QCAtMjcwLDcgKzI3OCw5IEBAIHN0cnVjdCBUZW1wbGF0ZXM8JGZvciBqLCBbW1Qkal1dJGZvciBr
W1ssIE5vbmVUXV0+IHsKIC8vIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKCkuCiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IFR5cGVMaXN0IHsgdHlwZWRlZiBUeXBlczE8VD4g
dHlwZTsgfTsKK3N0cnVjdCBUeXBlTGlzdCB7CisgIHR5cGVkZWYgVHlwZXMxPFQ+IHR5cGU7Cit9
OwogCiAKICRyYW5nZSBpIDEuLm4KQEAgLTI3OSw5ICsyODksOSBAQCBzdHJ1Y3QgVHlwZUxpc3Q8
VHlwZXM8JGZvciBpLCBbW1QkaV1dPiA+IHsKICAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlczwkZm9y
IGksIFtbVCRpXV0+Ojp0eXBlIHR5cGU7CiB9OwogCisjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBF
RF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AKKwogfSAgLy8gbmFtZXNwYWNlIGludGVy
bmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19UWVBF
RF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNM
VURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RZUEVfVVRJTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvbWFrZS9NYWtlZmlsZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L21ha2UvTWFrZWZpbGUKaW5kZXggNWIyN2I2YTJjYmIxM2UzODBlZTc1ZDE4NmY1NTNiZmI1ZmEx
NDRiNS4uOWFjNzQ0OTNiYTU1MjQ2NTk3ZTkwYjg5OGZhZTg0N2FlMzU4ZWFiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbWFrZS9NYWtlZmlsZQorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9tYWtlL01ha2VmaWxlCkBAIC0yMCwxMCArMjAsMTIgQEAgR1RFU1RfRElS
ID0gLi4KIFVTRVJfRElSID0gLi4vc2FtcGxlcwogCiAjIEZsYWdzIHBhc3NlZCB0byB0aGUgcHJl
cHJvY2Vzc29yLgotQ1BQRkxBR1MgKz0gLUkkKEdURVNUX0RJUikvaW5jbHVkZQorIyBTZXQgR29v
Z2xlIFRlc3QncyBoZWFkZXIgZGlyZWN0b3J5IGFzIGEgc3lzdGVtIGRpcmVjdG9yeSwgc3VjaCB0
aGF0CisjIHRoZSBjb21waWxlciBkb2Vzbid0IGdlbmVyYXRlIHdhcm5pbmdzIGluIEdvb2dsZSBU
ZXN0IGhlYWRlcnMuCitDUFBGTEFHUyArPSAtaXN5c3RlbSAkKEdURVNUX0RJUikvaW5jbHVkZQog
CiAjIEZsYWdzIHBhc3NlZCB0byB0aGUgQysrIGNvbXBpbGVyLgotQ1hYRkxBR1MgKz0gLWcgLVdh
bGwgLVdleHRyYQorQ1hYRkxBR1MgKz0gLWcgLVdhbGwgLVdleHRyYSAtcHRocmVhZAogCiAjIEFs
bCB0ZXN0cyBwcm9kdWNlZCBieSB0aGlzIE1ha2VmaWxlLiAgUmVtZW1iZXIgdG8gYWRkIG5ldyB0
ZXN0cyB5b3UKICMgY3JlYXRlZCB0byB0aGUgbGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQuc2xuIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
bXN2Yy9ndGVzdC1tZC5zbG4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODI5YjQwMTlhZTNhZTUxZmQwMDYwM2U5MzQ3
OTNjNGRiODM4NTBjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L21zdmMvZ3Rlc3QtbWQuc2xuCkBAIC0wLDAgKzEsNDUgQEAKK01pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDguMDAKK1Byb2plY3QoIns4QkM5Q0VC
OC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3QtbWQiLCAiZ3Rlc3QtbWQu
dmNwcm9qIiwgIntDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9IgorCVByb2pl
Y3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwlFbmRQcm9qZWN0
U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAw
QTBDOTFCQzk0Mn0iKSA9ICJndGVzdF9tYWluLW1kIiwgImd0ZXN0X21haW4tbWQudmNwcm9qIiwg
InszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9IgorCVByb2plY3RTZWN0aW9u
KFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwlFbmRQcm9qZWN0U2VjdGlvbgor
RW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0
Mn0iKSA9ICJndGVzdF9wcm9kX3Rlc3QtbWQiLCAiZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjcHJvaiIs
ICJ7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfSIKKwlQcm9qZWN0U2VjdGlv
bihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJRW5kUHJvamVjdFNlY3Rpb24K
K0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5
NDJ9IikgPSAiZ3Rlc3RfdW5pdHRlc3QtbWQiLCAiZ3Rlc3RfdW5pdHRlc3QtbWQudmNwcm9qIiwg
Ins0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTJ9IgorCVByb2plY3RTZWN0aW9u
KFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwlFbmRQcm9qZWN0U2VjdGlvbgor
RW5kUHJvamVjdAorR2xvYmFsCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb24p
ID0gcHJlU29sdXRpb24KKwkJRGVidWcgPSBEZWJ1ZworCQlSZWxlYXNlID0gUmVsZWFzZQorCUVu
ZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uKSA9IHBv
c3RTb2x1dGlvbgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU4fS5EZWJ1
Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNC
NDIzQjMxQkU4fS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJe0M4RjZDMTcyLTU2RjIt
NEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMy
CisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LlJlbGVhc2UuQnVpbGQu
MCA9IFJlbGVhc2V8V2luMzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAz
M30uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05
MTQ3LUY2OEVEOTg2MjAzM30uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXszQUY1NEM4
QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFz
ZXxXaW4zMgorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5SZWxlYXNl
LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRE
NDlCQzNFQ0J9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXsyNDg0ODU1MS1FRjRG
LTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0J9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7
MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5SZWxlYXNlLkFjdGl2ZUNmZyA9
IFJlbGVhc2V8V2luMzIKKwkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0u
UmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7NEQ5RkRGQjUtOTg2QS00MTM5LTgy
M0MtRjRFRTBFRDQ4MUEyfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7NEQ5RkRG
QjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2lu
MzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uUmVsZWFzZS5BY3Rp
dmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVE
NDgxQTJ9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwlFbmRHbG9iYWxTZWN0aW9u
CisJR2xvYmFsU2VjdGlvbihFeHRlbnNpYmlsaXR5R2xvYmFscykgPSBwb3N0U29sdXRpb24KKwlF
bmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihFeHRlbnNpYmlsaXR5QWRkSW5zKSA9IHBv
c3RTb2x1dGlvbgorCUVuZEdsb2JhbFNlY3Rpb24KK0VuZEdsb2JhbApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3Byb2ogYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0LW1kLnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzE0OTZjY2JmMGM5
NjZlNzk1ODNjMGZjNzRhODk5YzE3NTA5ZmY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3Byb2oKQEAgLTAsMCArMSwxMjYgQEAKKzw/
eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRp
b1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI3LjEwIgorCU5h
bWU9Imd0ZXN0LW1kIgorCVByb2plY3RHVUlEPSJ7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNC
NDIzQjMxQkU4fSIKKwlLZXl3b3JkPSJXaW4zMlByb2oiPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0
Zm9ybQorCQkJTmFtZT0iV2luMzIiLz4KKwk8L1BsYXRmb3Jtcz4KKwk8Q29uZmlndXJhdGlvbnM+
CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCU91dHB1dERpcmVj
dG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJSW50ZXJtZWRp
YXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCisJCQlDb25maWd1cmF0aW9u
VHlwZT0iNCIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCVJlZmVyZW5jZXNQYXRoPSIiPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIK
KwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19MSUIiCisJCQkJTWlu
aW1hbFJlYnVpbGQ9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRp
bWVMaWJyYXJ5PSIzIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdM
ZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZBTFNFIgorCQkJ
CURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0
b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIgorCQkJ
CU91dHB1dEZpbGU9IiQoT3V0RGlyKS9ndGVzdGQubGliIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9
IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wi
Lz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wK
KwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNS
ZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQ
cm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJh
dG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9y
VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2Vu
ZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlO
YW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uTmFtZSkv
JChDb25maWd1cmF0aW9uTmFtZSkiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoT3V0RGly
KS8kKFByb2plY3ROYW1lKSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0IgorCQkJQ2hhcmFjdGVy
U2V0PSIyIgorCQkJUmVmZXJlbmNlc1BhdGg9IiZxdW90Oy4uXGluY2x1ZGUmcXVvdDs7JnF1b3Q7
Li4mcXVvdDsiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCVBy
ZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0xJQiIKKwkJCQlSdW50aW1lTGli
cmFyeT0iMiIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9
IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKKwkJCQlEZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVp
bGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKKwkJCQlPdXRw
dXRGaWxlPSIkKE91dERpcikvZ3Rlc3QubGliIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlE
TFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJ
CTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlO
YW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJj
ZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdl
bmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9v
bCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIv
PgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9y
VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJl
bmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3Vy
Y2UgRmlsZXMiCisJCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTth
c214IgorCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJE
NzUyQTJGRn0iPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xndGVzdC1hbGwu
Y2MiPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90
OyIvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4u
JnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iSGVhZGVyIEZp
bGVzIgorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYzt4c2QiCisJCQlVbmlxdWVJZGVu
dGlmaWVyPSJ7OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfSI+CisJCTwvRmls
dGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Q
cm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1t
ZC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3hwcm9q
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDA3OGU0YWFiNjkxNzEyYTEwM2MyZWI2
M2VlN2RhYzFlZjQ5OWJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4cHJvagorKysg
L2Rldi9udWxsCkBAIC0xLDM2MCArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNp
b249IjE0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9t
c2J1aWxkLzIwMDMiPgotICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMi
PgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z1N1ZmZpeHxXaW4zMiI+
Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Z1N1ZmZpeDwvQ29uZmlndXJhdGlvbj4KLSAgICAg
IDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4K
LSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWdTdWZmaXh8eDY0Ij4KLSAg
ICAgIDxDb25maWd1cmF0aW9uPkRlYnVnU3VmZml4PC9Db25maWd1cmF0aW9uPgotICAgICAgPFBs
YXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8
UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWdfV2luQ2Fpcm98V2luMzIiPgotICAg
ICAgPENvbmZpZ3VyYXRpb24+RGVidWdfV2luQ2Fpcm88L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8
UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0g
ICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnX1dpbkNhaXJvfHg2NCI+Ci0g
ICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Z19XaW5DYWlybzwvQ29uZmlndXJhdGlvbj4KLSAgICAg
IDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0g
ICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KLSAgICAgIDxD
b25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMy
PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29u
ZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVi
dWc8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8
L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRl
PSJQcm9kdWN0aW9ufFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPlByb2R1Y3Rpb248L0Nv
bmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJv
amVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBy
b2R1Y3Rpb258eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPlByb2R1Y3Rpb248L0NvbmZpZ3Vy
YXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25m
aWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlX1dp
bkNhaXJvfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2VfV2luQ2Fpcm88L0Nv
bmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJv
amVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJl
bGVhc2VfV2luQ2Fpcm98eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2VfV2luQ2Fp
cm88L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8
L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRl
PSJSZWxlYXNlfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3Vy
YXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENv
bmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8
eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAg
ICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgot
ICA8L0l0ZW1Hcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgotICAgIDxQ
cm9qZWN0R3VpZD57QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU4fTwvUHJvamVj
dEd1aWQ+Ci0gICAgPFJvb3ROYW1lc3BhY2U+Z3Rlc3QtbWQ8L1Jvb3ROYW1lc3BhY2U+Ci0gICAg
PEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgotICAgIDxXaW5kb3dzVGFyZ2V0UGxhdGZvcm1W
ZXJzaW9uPjguMTwvV2luZG93c1RhcmdldFBsYXRmb3JtVmVyc2lvbj4KLSAgPC9Qcm9wZXJ0eUdy
b3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5E
ZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlv
biI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25U
eXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBs
YXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4K
LSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJh
dGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3Rl
clNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8
L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fp
cm98V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBl
PlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVs
dGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9y
bVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCci
IExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGli
cmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0No
YXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4K
LSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIiBMYWJlbD0iQ29uZmln
dXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3Vy
YXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0g
ICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlH
cm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8
Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAg
PENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29s
c2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVy
dHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5T
dGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRp
Qnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1U
b29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZp
Z3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1
cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pgot
ICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5
R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+
Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBl
PgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRm
b3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZp
Z3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFy
YWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52
MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZp
eHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+
U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0
aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3Jt
VG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciIExhYmVs
PSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwv
Q29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3Rl
clNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Q
cm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9z
b2Z0LkNwcC5wcm9wcyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5n
cyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlT
aGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNw
cC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFw
cERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmll
cylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJ
bXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9
IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29u
ZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9y
dCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3Bz
IiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyIgTGFiZWw9
IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJl
bD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktp
dF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdy
b3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0g
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRm
b3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2
c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxX
aW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVz
ZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlv
bj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIu
cHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJv
amVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4K
LSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVl
dHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4k
KFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilc
TWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERh
dGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylc
dG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBv
cnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0
aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQ
cm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAv
PgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMi
PgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBs
YXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWlj
cm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQ
bGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9v
bHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dp
bkNhaXJvfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIg
Q29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPElt
cG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnBy
b3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIiBMYWJlbD0i
UHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWlj
cm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChV
c2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVs
PSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0
X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3Jv
dXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8
SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0i
IC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJv
cHNcY29tbW9uLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFy
aWVzKVx0b29sc1x2c3Byb3BzXGRlYnVnc3VmZml4LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3Vw
PgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBv
cnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2Vy
LnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4k
KFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4K
LSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xj
b21tb24ucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMp
XHRvb2xzXHZzcHJvcHNcZGVidWdzdWZmaXgucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0g
IDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgotICA8UHJvcGVydHlHcm91cD4K
LSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNp
b24+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdp
bjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
bGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0
RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPE91
dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJv
fHg2NCciPiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxs
aWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj4kKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+
Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAg
ICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFy
Z2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2VfV2luQ2Fpcm98V2luMzInIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICAg
IDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZV9XaW5DYWlyb3x4NjQnIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1lPgot
ICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnxXaW4zMiciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0g
ICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdQcm9kdWN0aW9ufHg2NCciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAg
PFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3xXaW4zMiciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdl
dE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98
V2luMzInIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1l
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fp
cm98eDY0JyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFt
ZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4
fFdpbjMyJyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFt
ZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4
fHg2NCciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91
cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0
aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChD
b25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczsk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwv
UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RD
aGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliPgot
ICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpZ3Rlc3QkKERlYnVnU3VmZml4KS5saWI8L091dHB1
dEZpbGU+Ci0gICAgPC9MaWI+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZp
bml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3x4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxl
ZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQ
cm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVp
bGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxw
cml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVy
PgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRp
bWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYj4KLSAgICAgIDxPdXRwdXRGaWxl
PiQoT3V0RGlyKWd0ZXN0JChEZWJ1Z1N1ZmZpeCkubGliPC9PdXRwdXRGaWxlPgotICAgIDwvTGli
PgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2lu
MzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0
aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0
RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRl
XEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJ
QjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0g
ICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0g
ICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAg
ICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVj
a3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYj4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0
RGlyKWd0ZXN0LmxpYjwvT3V0cHV0RmlsZT4KLSAgICA8L0xpYj4KLSAgPC9JdGVtRGVmaW5pdGlv
bkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPgotICAgIDxDbENvbXBpbGU+
Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4u
XEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4K
LSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5N
dWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRl
cj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tz
PkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICA8L0NsQ29tcGlsZT4K
LSAgICA8TGliPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpZ3Rlc3QubGliPC9PdXRwdXRG
aWxlPgotICAgIDwvTGliPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5p
dGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWdTdWZmaXh8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5E
aXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5j
bHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVk
SGVhZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNp
Y1J1bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYj4KLSAgICAgIDxPdXRw
dXRGaWxlPiQoT3V0RGlyKWd0ZXN0JChEZWJ1Z1N1ZmZpeCkubGliPC9PdXRwdXRGaWxlPgotICAg
IDwvTGliPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8
eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09w
dGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVj
dERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
aW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0
ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9M
SUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgot
ICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAg
ICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hl
Y2tzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWI+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91
dERpcilndGVzdCQoRGVidWdTdWZmaXgpLmxpYjwvT3V0cHV0RmlsZT4KLSAgICA8L0xpYj4KLSAg
PC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8
Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0
RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRl
XEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8
L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7
JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAg
IDwvQ2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8
SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVk
ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9Q
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliIC8+Ci0g
IDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMy
JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
PiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVkZTskKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1
ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVy
PgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliIC8+Ci0gIDwvSXRlbURlZmluaXRpb25H
cm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPgotICAgIDxDbENvbXBpbGU+
Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQ
cm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxw
cml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlw
dENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGls
ZWRIZWFkZXI+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nl
c3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBp
bGU+Ci0gICAgPExpYiAvPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5p
dGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChD
b25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczsk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVj
b21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8UHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYiAvPgotICA8L0l0
ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj4KLSAgICA8Q2xD
b21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGly
KS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNs
dWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGlu
Y2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEph
dmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1By
ZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwv
Q2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRl
bUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LWRlYXRoLXRlc3Qu
Y2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QtZmlsZXBhdGguY2Mi
IC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QtcG9ydC5jYyIgLz4KLSAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC10ZXN0LXBhcnQuY2MiIC8+Ci0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QtdHlwZWQtdGVzdC5jYyIgLz4KLSAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC5jYyIgLz4KLSAgPC9JdGVtR3JvdXA+Ci0g
IDxJdGVtR3JvdXA+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGlu
dGVybmFsXGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtZGVhdGgtdGVzdC5oIiAvPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1maWxlcGF0aC5o
IiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LWludGVybmFsLWlubC5o
IiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxn
dGVzdC1pbnRlcm5hbC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxn
dGVzdFxndGVzdC1tZXNzYWdlLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNs
dWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LXBvcnQuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3Qtc3BpLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LXN0cmluZy5oIiAvPgotICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC5oIiAvPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdF9wcmVkX2ltcGwuaCIgLz4KLSAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3RfcHJvZC5oIiAvPgot
ICA8L0l0ZW1Hcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jv
c29mdC5DcHAudGFyZ2V0cyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJn
ZXRzIj4KLSAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAzN2QxYzliNGRjYTZhMTRlYzcwNmJjNGE4YzEzMWY2YjVjODM4
MDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMKKysrIC9kZXYv
bnVsbApAQCAtMSw3MSArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1
dGYtOCI/PgotPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1h
cy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SXRlbUdyb3VwPgot
ICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KLSAgICAgIDxVbmlxdWVJZGVudGlm
aWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlm
aWVyPgotICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNt
O2FzbXg8L0V4dGVuc2lvbnM+Ci0gICAgPC9GaWx0ZXI+Ci0gICAgPEZpbHRlciBJbmNsdWRlPSJI
ZWFkZXIgRmlsZXMiPgotICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIw
NC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+Ci0gICAgICA8RXh0ZW5zaW9u
cz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+Ci0gICAgPC9GaWx0ZXI+Ci0g
IDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
c3JjXGd0ZXN0LWRlYXRoLXRlc3QuY2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0Zp
bHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xn
dGVzdC1maWxlcGF0aC5jYyI+Ci0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgot
ICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LXBv
cnQuY2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29t
cGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC10ZXN0LXBhcnQuY2Mi
PgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4K
LSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC10eXBlZC10ZXN0LmNjIj4KLSAg
ICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QuY2MiPgotICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJ
dGVtR3JvdXA+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVy
bmFsXGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caW5jbHVkZVxndGVzdFxndGVzdC1kZWF0aC10ZXN0LmgiPgotICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rlc3QtZmlsZXBhdGguaCI+Ci0gICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LWludGVybmFsLWlubC5oIj4KLSAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LWludGVybmFsLmgiPgot
ICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtbWVzc2FnZS5oIj4K
LSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0g
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LXBv
cnQuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNs
dWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC1zcGku
aCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRl
PgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVz
dC1zdHJpbmcuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwv
Q2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVz
dC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1
ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0X3ByZWRf
aW1wbC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbElu
Y2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0X3By
b2QuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNs
dWRlPgotICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0LnNsbiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3Quc2xuCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxYjI5
Mjk2NDlmZjY5YTEwOWVlYTViNGI3ZjZkY2M3MWM1MWNkNGEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0LnNsbgpAQCAtMCwwICsxLDQ1IEBACitN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiA4LjAw
CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0
ZXN0IiwgImd0ZXN0LnZjcHJvaiIsICJ7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMx
QkU3fSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0
CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRB
LTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3RfbWFpbiIsICJndGVzdF9tYWluLnZj
cHJvaiIsICJ7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfSIKKwlQcm9qZWN0
U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJRW5kUHJvamVjdFNl
Y3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEw
QzkxQkM5NDJ9IikgPSAiZ3Rlc3RfdW5pdHRlc3QiLCAiZ3Rlc3RfdW5pdHRlc3QudmNwcm9qIiwg
Ins0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9IgorCVByb2plY3RTZWN0aW9u
KFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwlFbmRQcm9qZWN0U2VjdGlvbgor
RW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0
Mn0iKSA9ICJndGVzdF9wcm9kX3Rlc3QiLCAiZ3Rlc3RfcHJvZF90ZXN0LnZjcHJvaiIsICJ7MjQ4
NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9q
ZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFBy
b2plY3QKK0dsb2JhbAorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uKSA9IHBy
ZVNvbHV0aW9uCisJCURlYnVnID0gRGVidWcKKwkJUmVsZWFzZSA9IFJlbGVhc2UKKwlFbmRHbG9i
YWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvbikgPSBwb3N0U29s
dXRpb24KKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30uRGVidWcuQWN0
aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0Iz
MUJFN30uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYt
QjVGQS1DM0I0MjNCMzFCRTd9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7
QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fS5SZWxlYXNlLkJ1aWxkLjAgPSBS
ZWxlYXNlfFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzJ9LkRl
YnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1G
NjhFRDk4NjIwMzJ9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7M0FGNTRDOEEtMTBC
Ri00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2lu
MzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uUmVsZWFzZS5CdWls
ZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4
MUExfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7NEQ5RkRGQjUtOTg2QS00MTM5
LTgyM0MtRjRFRTBFRDQ4MUExfS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezREOUZE
RkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxl
YXNlfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9LlJlbGVh
c2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVB
NEQ0OUJDM0VDQX0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezI0ODQ4NTUxLUVG
NEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQX0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJ
CXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LlJlbGVhc2UuQWN0aXZlQ2Zn
ID0gUmVsZWFzZXxXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNB
fS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJRW5kR2xvYmFsU2VjdGlvbgorCUds
b2JhbFNlY3Rpb24oRXh0ZW5zaWJpbGl0eUdsb2JhbHMpID0gcG9zdFNvbHV0aW9uCisJRW5kR2xv
YmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oRXh0ZW5zaWJpbGl0eUFkZElucykgPSBwb3N0U29s
dXRpb24KKwlFbmRHbG9iYWxTZWN0aW9uCitFbmRHbG9iYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QudmNwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvbXN2Yy9ndGVzdC52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ5ZTdlMDllYTdlOGE5MTA0ZDliNDUy
MjE5NGIyNGIzZmI4ZTg5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L21zdmMvZ3Rlc3QudmNwcm9qCkBAIC0wLDAgKzEsMTI2IEBACis8P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJv
amVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4xMCIKKwlOYW1lPSJndGVzdCIKKwlQ
cm9qZWN0R1VJRD0ie0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30iCisJS2V5
d29yZD0iV2luMzJQcm9qIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ildp
bjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlv
bgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25O
YW1lKS8kKENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChP
dXREaXIpLyQoUHJvamVjdE5hbWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiCisJCQlDaGFy
YWN0ZXJTZXQ9IjIiCisJCQlSZWZlcmVuY2VzUGF0aD0iIj4KKwkJCTxUb29sCisJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfTElCIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVF
IgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iNSIKKwkJ
CQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0
ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0PSI0Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJ
CQk8VG9vbAorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91
dERpcikvZ3Rlc3RkLmxpYiIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJ
CQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJ
CU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVM
aW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRv
b2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29s
Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxU
b29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29s
CisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJ
PC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4z
MiIKKwkJCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5h
bWUpIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSki
CisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCVJlZmVy
ZW5jZXNQYXRoPSImcXVvdDsuLlxpbmNsdWRlJnF1b3Q7OyZxdW90Oy4uJnF1b3Q7Ij4KKwkJCTxU
b29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz0iV0lOMzI7TkRFQlVHO19MSUIiCisJCQkJUnVudGltZUxpYnJhcnk9IjQiCisJCQkJVXNl
UHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0
Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1h
dD0iMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRv
b2wKKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIp
L2d0ZXN0LmxpYiIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9v
bAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9
IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZl
bnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4K
KwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJ
CQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJ
CQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJ
TmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25m
aWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVu
Y2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJRmls
dGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCIKKwkJCVVuaXF1ZUlk
ZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ij4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNcZ3Rlc3QtYWxsLmNjIj4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiLz4KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNl
fFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJ
CQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxp
bmNsdWRlJnF1b3Q7Ii8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJ
PC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IkhlYWRlciBGaWxlcyIKKwkJCUZpbHRlcj0i
aDtocHA7aHh4O2htO2lubDtpbmM7eHNkIgorCQkJVW5pcXVlSWRlbnRpZmllcj0iezkzOTk1Mzgw
LTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn0iPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgor
CTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3RfbWFpbi1tZC52Y3Byb2ogYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0X21haW4tbWQudmNwcm9qCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQwMDk1NmNkM2QyNmIwODJhMjMwNTI3OWNjOWE3OGNlN2Y3NmIxMmYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0X21haW4tbWQudmNwcm9q
CkBAIC0wLDAgKzEsMTI5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dz
LTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysi
CisJVmVyc2lvbj0iNy4xMCIKKwlOYW1lPSJndGVzdF9tYWluLW1kIgorCVByb2plY3RHVUlEPSJ7
M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfSIKKwlLZXl3b3JkPSJXaW4zMlBy
b2oiPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiLz4KKwk8L1Bs
YXRmb3Jtcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJE
ZWJ1Z3xXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmln
dXJhdGlvbk5hbWUpIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9q
ZWN0TmFtZSkiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCIKKwkJCUNoYXJhY3RlclNldD0iMiIK
KwkJCVJlZmVyZW5jZXNQYXRoPSIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0i
V0lOMzI7X0RFQlVHO19MSUIiCisJCQkJTWluaW1hbFJlYnVpbGQ9IlRSVUUiCisJCQkJQmFzaWNS
dW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCQkJCVVzZVByZWNvbXBp
bGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRh
YmlsaXR5UHJvYmxlbXM9IkZBTFNFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4K
KwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJ
TmFtZT0iVkNMaWJyYXJpYW5Ub29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS8kKFByb2pl
Y3ROYW1lKWQubGliIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxU
b29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFt
ZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtF
dmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIv
PgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4K
KwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wK
KwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJ
CQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0Nv
bmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgor
CQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uTmFtZSkvJChDb25maWd1cmF0aW9uTmFtZSki
CisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKSIKKwkJ
CUNvbmZpZ3VyYXRpb25UeXBlPSI0IgorCQkJQ2hhcmFjdGVyU2V0PSIyIgorCQkJUmVmZXJlbmNl
c1BhdGg9IiZxdW90Oy4uXGluY2x1ZGUmcXVvdDs7JnF1b3Q7Li4mcXVvdDsiPgorCQkJPFRvb2wK
KwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25z
PSJXSU4zMjtOREVCVUc7X0xJQiIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlVc2VQcmVj
b21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQ
b3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIz
Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvJChQ
cm9qZWN0TmFtZSkubGliIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJ
CTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJ
TmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxp
bmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9v
bCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wi
Lz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRv
b2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wK
KwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8
L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwkJPFBy
b2plY3RSZWZlcmVuY2UKKwkJCVJlZmVyZW5jZWRQcm9qZWN0SWRlbnRpZmllcj0ie0M4RjZDMTcy
LTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0iCisJCQlOYW1lPSJndGVzdC1tZCIvPgorCTwv
UmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIK
KwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXgiCisJCQlV
bmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSI+
CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3JjXGd0ZXN0X21haW4uY2MiPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9
IlJlbGVhc2V8V2luMzIiPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4uJnF1b3Q7OyZx
dW90Oy4uXGluY2x1ZGUmcXVvdDsiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9G
aWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJ
RmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYzt4c2QiCisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7
OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfSI+CisJCTwvRmlsdGVyPgorCTwv
RmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdF9tYWluLnZjcHJv
aiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3RfbWFpbi52Y3Byb2oKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTdlOWY0MTc2ODVmZjM3NTg0MjAwMDFkYTk0MzJkNDAzNzFmYmNhZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3RfbWFpbi52Y3Byb2oK
QEAgLTAsMCArMSwxMjkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3Mt
MTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIK
KwlWZXJzaW9uPSI3LjEwIgorCU5hbWU9Imd0ZXN0X21haW4iCisJUHJvamVjdEdVSUQ9InszQUY1
NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzJ9IgorCUtleXdvcmQ9IldpbjMyUHJvaiI+
CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxhdGZv
cm1zPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVn
fFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uTmFtZSkvJChDb25maWd1cmF0
aW9uTmFtZSkiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoT3V0RGlyKS8kKFByb2plY3RO
YW1lKSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0IgorCQkJQ2hhcmFjdGVyU2V0PSIyIgorCQkJ
UmVmZXJlbmNlc1BhdGg9IiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4z
MjtfREVCVUc7X0xJQiIKKwkJCQlNaW5pbWFsUmVidWlsZD0iVFJVRSIKKwkJCQlCYXNpY1J1bnRp
bWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjUiCisJCQkJVXNlUHJlY29tcGlsZWRI
ZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxp
dHlQcm9ibGVtcz0iRkFMU0UiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1l
PSJWQ0xpYnJhcmlhblRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpLyQoUHJvamVjdE5h
bWUpZC5saWIiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wK
KwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJW
Q1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50
VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJ
CQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJ
CU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5h
bWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmln
dXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlP
dXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25OYW1lKS8kKENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJ
CUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChPdXREaXIpLyQoUHJvamVjdE5hbWUpIgorCQkJQ29u
ZmlndXJhdGlvblR5cGU9IjQiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiCisJCQlSZWZlcmVuY2VzUGF0
aD0iJnF1b3Q7Li5caW5jbHVkZSZxdW90OzsmcXVvdDsuLiZxdW90OyI+CisJCQk8VG9vbAorCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJ
TjMyO05ERUJVRztfTElCIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSI0IgorCQkJCVVzZVByZWNvbXBp
bGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRh
YmlsaXR5UHJvYmxlbXM9IkZBTFNFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4K
KwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJ
TmFtZT0iVkNMaWJyYXJpYW5Ub29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS8kKFByb2pl
Y3ROYW1lKS5saWIiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRv
b2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1l
PSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2
ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJ
CU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29u
ZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCQk8UHJvamVj
dFJlZmVyZW5jZQorCQkJUmVmZXJlbmNlZFByb2plY3RJZGVudGlmaWVyPSJ7QzhGNkMxNzItNTZG
Mi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fSIKKwkJCU5hbWU9Imd0ZXN0Ii8+CisJPC9SZWZlcmVu
Y2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJRmls
dGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCIKKwkJCVVuaXF1ZUlk
ZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ij4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNcZ3Rlc3RfbWFpbi5jYyI+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1b3Q7Ii8+CisJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFz
ZXxXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5c
aW5jbHVkZSZxdW90OyIvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJ
CTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQlGaWx0ZXI9
Img7aHBwO2h4eDtobTtpbmw7aW5jO3hzZCIKKwkJCVVuaXF1ZUlkZW50aWZpZXI9Ins5Mzk5NTM4
MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9Ij4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4K
Kwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3By
b2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3By
b2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDA3MWQyOGZlZDAxY2NmYTkzMzA5MWM3MTE3ZjJhNTg0MDFiZmUwMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3RfcHJv
ZF90ZXN0LW1kLnZjcHJvagpAQCAtMCwwICsxLDE2NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RU
eXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjcuMTAiCisJTmFtZT0iZ3Rlc3RfcHJvZF90ZXN0
LW1kIgorCVByb2plY3RHVUlEPSJ7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNC
fSIKKwlLZXl3b3JkPSJXaW4zMlByb2oiPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJ
TmFtZT0iV2luMzIiLz4KKwk8L1BsYXRmb3Jtcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25m
aWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iJChT
b2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0
b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIK
KwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJX
SU4zMjtfREVCVUc7X0NPTlNPTEUiCisJCQkJTWluaW1hbFJlYnVpbGQ9IlRSVUUiCisJCQkJQmFz
aWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCQkJCVVzZVByZWNv
bXBpbGVkSGVhZGVyPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBv
cnRhYmlsaXR5UHJvYmxlbXM9IkZBTFNFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQi
Lz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJ
CQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9ndGVzdF9w
cm9kX3Rlc3QuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiIKKwkJCQlHZW5lcmF0ZURlYnVn
SW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL2d0
ZXN0X3Byb2RfdGVzdC5wZGIiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCVRhcmdldE1hY2hpbmU9
IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlO
YW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1
aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIv
PgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9v
bAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wK
KwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9
IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3Jh
cHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5h
Z2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmln
dXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iJChT
b2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0
b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIK
KwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSIK
KwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMyIKKwkJ
CQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJG
QUxTRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQk8VG9vbAorCQkJCU5h
bWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9v
bCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvZ3Rlc3RfcHJvZF90ZXN0LmV4ZSIKKwkJCQlM
aW5rSW5jcmVtZW50YWw9IjEiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgor
CQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiCisJCQkJRW5hYmxl
Q09NREFURm9sZGluZz0iMiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJ
CU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVu
dFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFt
ZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNl
cnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRh
R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29s
Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JU
b29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVu
Y2VzPgorCQk8UHJvamVjdFJlZmVyZW5jZQorCQkJUmVmZXJlbmNlZFByb2plY3RJZGVudGlmaWVy
PSJ7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfSIKKwkJCU5hbWU9Imd0ZXN0
X21haW4tbWQiLz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1l
PSJTb3VyY2UgRmlsZXMiCisJCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0
O2FzbTthc214IgorCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2
LTJBMzJENzUyQTJGRn0iPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHRlc3RcZ3Rl
c3RfcHJvZF90ZXN0LmNjIj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVi
dWd8V2luMzIiPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4u
XGluY2x1ZGUmcXVvdDsiCisJCQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJl
bGVhc2V8V2luMzIiPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90
Oy4uXGluY2x1ZGUmcXVvdDsiCisJCQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5cdGVzdFxwcm9kdWN0aW9uLmNjIj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJTmFtZT0iRGVidWd8V2luMzIiPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4uJnF1
b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiCisJCQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0i
MCIvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4u
JnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiCisJCQkJCQlVc2VQcmVjb21waWxlZEhlYWRl
cj0iMCIvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVy
PgorCQk8RmlsdGVyCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQlGaWx0ZXI9Img7aHBwO2h4
eDtobTtpbmw7aW5jO3hzZCIKKwkJCVVuaXF1ZUlkZW50aWZpZXI9Ins5Mzk5NTM4MC04OUJELTRi
MDQtODhFQi02MjVGQkU1MkVCRkJ9Ij4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx0
ZXN0XHByb2R1Y3Rpb24uaCI+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJ
PEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdF9wcm9kX3Rlc3QudmNwcm9qIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdF9wcm9kX3Rlc3QudmNwcm9qCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk5OGM3NTgwOGExNjI0ZTY3NDRhMmIyMTc5NjBjMDZlMjExZmFmZjUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0X3Byb2RfdGVzdC52
Y3Byb2oKQEAgLTAsMCArMSwxNjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Ildp
bmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFs
IEMrKyIKKwlWZXJzaW9uPSI3LjEwIgorCU5hbWU9Imd0ZXN0X3Byb2RfdGVzdCIKKwlQcm9qZWN0
R1VJRD0iezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQX0iCisJS2V5d29yZD0i
V2luMzJQcm9qIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+
CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJ
TmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25OYW1lKS8k
KENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChPdXREaXIp
LyQoUHJvamVjdE5hbWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlDaGFyYWN0ZXJT
ZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGlt
aXphdGlvbj0iMCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19D
T05TT0xFIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNr
cz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iNSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0i
MyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2Js
ZW1zPSJGQUxTRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlu
a2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvZ3Rlc3RfcHJvZF90ZXN0LmV4ZSIK
KwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJU
UlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9ndGVzdF9wcm9kX3Rlc3Qu
cGRiIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9v
bAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVp
bGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIv
PgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJ
CQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJW
Q1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNY
TUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1l
bnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JU
b29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5l
cmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5h
bWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25OYW1lKS8k
KENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChPdXREaXIp
LyQoUHJvamVjdE5hbWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlDaGFyYWN0ZXJT
ZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCVByZXBy
b2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiCisJCQkJUnVudGltZUxp
YnJhcnk9IjQiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjMiCisJCQkJV2FybmluZ0xldmVs
PSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiCisJCQkJRGVi
dWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1
aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0
RmlsZT0iJChPdXREaXIpL2d0ZXN0X3Byb2RfdGVzdC5leGUiCisJCQkJTGlua0luY3JlbWVudGFs
PSIxIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlTdWJTeXN0ZW09
IjEiCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIgorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9
IjIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExU
b29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8
VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFt
ZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VD
b21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5l
cmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wi
Lz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wK
KwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJ
CQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0Nv
bmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwkJPFByb2pl
Y3RSZWZlcmVuY2UKKwkJCVJlZmVyZW5jZWRQcm9qZWN0SWRlbnRpZmllcj0iezNBRjU0QzhBLTEw
QkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0iCisJCQlOYW1lPSJndGVzdF9tYWluIi8+CisJPC9S
ZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgor
CQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCIKKwkJCVVu
aXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ij4K
KwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx0ZXN0XGd0ZXN0X3Byb2RfdGVzdC5jYyI+
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIj4KKwkJCQkJ
PFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1b3Q7Igor
CQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1b3Q7
IgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHRlc3RccHJv
ZHVjdGlvbi5jYyI+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdp
bjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNs
dWRlJnF1b3Q7IgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiLz4KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNl
fFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJ
CQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxp
bmNsdWRlJnF1b3Q7IgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiLz4KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJ
TmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYzt4c2Qi
CisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJF
QkZCfSI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cdGVzdFxwcm9kdWN0aW9uLmgi
PgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xv
YmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L21zdmMvZ3Rlc3RfdW5pdHRlc3QtbWQudmNwcm9qIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvbXN2Yy9ndGVzdF91bml0dGVzdC1tZC52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTUyNTkz
OTc1MGQ3NDdjN2I0OGFjNDQ4Mzg2OWNmNjc2NWE2ZWFjYQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3RfdW5pdHRlc3QtbWQudmNwcm9qCkBAIC0w
LDAgKzEsMTQ3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIi
Pz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVy
c2lvbj0iNy4xMCIKKwlOYW1lPSJndGVzdF91bml0dGVzdC1tZCIKKwlQcm9qZWN0R1VJRD0iezRE
OUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0iCisJS2V5d29yZD0iV2luMzJQcm9q
Ij4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0
Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVi
dWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25OYW1lKS8kKENvbmZpZ3Vy
YXRpb25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChPdXREaXIpLyQoUHJvamVj
dE5hbWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0i
MCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19DT05TT0xFIgor
CQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJ
CQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMyIKKwkJCQlX
YXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxT
RSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9
IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIK
KwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvZ3Rlc3RfdW5pdHRlc3QuZXhlIgorCQkJCUxpbmtJ
bmNyZW1lbnRhbD0iMiIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJ
UHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL2d0ZXN0X3VuaXR0ZXN0LnBkYiIKKwkJCQlT
dWJTeXN0ZW09IjEiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1l
PSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29s
Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29s
CisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZD
UmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNl
UHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVy
YXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIv
PgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNl
fFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uTmFtZSkvJChDb25maWd1cmF0
aW9uTmFtZSkiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoT3V0RGlyKS8kKFByb2plY3RO
YW1lKSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJ
CTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgor
CQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlE
ZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZBTFNFIgorCQkJCURlYnVnSW5mb3JtYXRp
b25Gb3JtYXQ9IjMiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4K
KwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0
RGlyKS9ndGVzdF91bml0dGVzdC5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCUdl
bmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJT3B0
aW1pemVSZWZlcmVuY2VzPSIyIgorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiCisJCQkJVGFy
Z2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8
VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5h
bWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5r
RXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wi
Lz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29s
CisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJW
Q01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1
eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+
CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwkJPFByb2plY3RSZWZlcmVuY2UK
KwkJCVJlZmVyZW5jZWRQcm9qZWN0SWRlbnRpZmllcj0iezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3
LUY2OEVEOTg2MjAzM30iCisJCQlOYW1lPSJndGVzdF9tYWluLW1kIi8+CisJPC9SZWZlcmVuY2Vz
PgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJRmlsdGVy
PSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCIKKwkJCVVuaXF1ZUlkZW50
aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ij4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlx0ZXN0XGd0ZXN0X3VuaXR0ZXN0LmNjIj4KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiPgorCQkJCQk8VG9vbAorCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCU9wdGltaXphdGlvbj0iMSIKKwkJCQkJ
CUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGlu
Y2x1ZGUmcXVvdDsiCisJCQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiCisJCQkJCQlVc2VQcmVj
b21waWxlZEhlYWRlcj0iMCIKKwkJCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4KKwkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1l
PSJSZWxlYXNlfFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90Ozsm
cXVvdDsuLlxpbmNsdWRlJnF1b3Q7IgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZp
bHRlcgorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5s
O2luYzt4c2QiCisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7OTM5OTUzODAtODlCRC00YjA0LTg4RUIt
NjI1RkJFNTJFQkZCfSI+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9H
bG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdF91bml0dGVzdC52Y3Byb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9tc3ZjL2d0ZXN0X3VuaXR0ZXN0LnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjJkNzQzNDU3
MTA0OGZhMDUzN2E4ODRlYmE3OGI2ODg3NzU4MTYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdF91bml0dGVzdC52Y3Byb2oKQEAgLTAsMCArMSwx
NDcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZp
c3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI3
LjEwIgorCU5hbWU9Imd0ZXN0X3VuaXR0ZXN0IgorCVByb2plY3RHVUlEPSJ7NEQ5RkRGQjUtOTg2
QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUExfSIKKwlLZXl3b3JkPSJXaW4zMlByb2oiPgorCTxQbGF0
Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiLz4KKwk8L1BsYXRmb3Jtcz4KKwk8
Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIK
KwkJCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUp
IgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCisJ
CQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCVBy
ZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X0NPTlNPTEUiCisJCQkJTWluaW1h
bFJlYnVpbGQ9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVM
aWJyYXJ5PSI1IgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIzIgorCQkJCVdhcm5pbmdMZXZl
bD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZBTFNFIgorCQkJCURl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21C
dWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1
dEZpbGU9IiQoT3V0RGlyKS9ndGVzdF91bml0dGVzdC5leGUiCisJCQkJTGlua0luY3JlbWVudGFs
PSIyIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0
YWJhc2VGaWxlPSIkKE91dERpcikvZ3Rlc3RfdW5pdHRlc3QucGRiIgorCQkJCVN1YlN5c3RlbT0i
MSIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRv
b2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxU
b29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1l
PSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNv
bXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVy
YXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIv
PgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJ
CU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29u
ZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJ
CQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25OYW1lKS8kKENvbmZpZ3VyYXRpb25OYW1lKSIK
KwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChPdXREaXIpLyQoUHJvamVjdE5hbWUpIgorCQkJ
Q29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJX
SU4zMjtOREVCVUc7X0NPTlNPTEUiCisJCQkJUnVudGltZUxpYnJhcnk9IjQiCisJCQkJVXNlUHJl
Y29tcGlsZWRIZWFkZXI9IjMiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0
UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0i
MyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wK
KwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2d0ZXN0
X3VuaXR0ZXN0LmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJR2VuZXJhdGVEZWJ1
Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlPcHRpbWl6ZVJlZmVy
ZW5jZXM9IjIiCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiIKKwkJCQlUYXJnZXRNYWNoaW5l
PSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJ
TmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVC
dWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wi
Lz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRv
b2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29s
CisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1l
PSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdy
YXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFu
YWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZp
Z3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCQk8UHJvamVjdFJlZmVyZW5jZQorCQkJUmVmZXJl
bmNlZFByb2plY3RJZGVudGlmaWVyPSJ7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYy
MDMyfSIKKwkJCU5hbWU9Imd0ZXN0X21haW4iLz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgor
CQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQlGaWx0ZXI9ImNwcDtjO2N4eDtk
ZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214IgorCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzcz
N0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn0iPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2MiPgorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkJT3B0aW1pemF0aW9uPSIxIgorCQkJCQkJQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIK
KwkJCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCIKKwkJCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVy
PSIwIgorCQkJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2lu
MzIiPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCUFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1
ZGUmcXVvdDsiCisJCQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIvPgorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1l
PSJIZWFkZXIgRmlsZXMiCisJCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jO3hzZCIKKwkJ
CVVuaXF1ZUlkZW50aWZpZXI9Ins5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9
Ij4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zp
c3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9y
dW5fdGVzdHMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9ydW5fdGVzdHMucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGUxMDg0MDU2ZTIzYmRkNWNmY2Y0NGYwNjc2YzFkNjI4
YWU2M2Q3NjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvcnVuX3Rlc3RzLnB5CisrKyAvZGV2L251bGwKQEAgLTEs
NjAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA4LCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0j
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIi
UnVucyB0aGUgc3BlY2lmaWVkIHRlc3RzIGZvciBHb29nbGUgVGVzdC4KLQotVGhpcyBzY3JpcHQg
cmVxdWlyZXMgUHl0aG9uIDIuMyBvciBoaWdoZXIuICBUbyBsZWFybiB0aGUgdXNhZ2UsIHJ1biBp
dAotd2l0aCAtaC4KLSIiIgotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotU0NSSVBUX0RJUiA9
IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3IgJy4nCi0KLXN5cy5wYXRoLmFwcGVuZChvcy5w
YXRoLmpvaW4oU0NSSVBUX0RJUiwgJ3Rlc3QnKSkKLWltcG9ydCBydW5fdGVzdHNfdXRpbAotCi0K
LWRlZiBfTWFpbigpOgotICAiIiJSdW5zIGFsbCB0ZXN0cyBmb3IgR29vZ2xlIFRlc3QuIiIiCi0K
LSAgb3B0aW9ucywgYXJncyA9IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygnZ3Rlc3QnKQotICB0
ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5uZXIoc2NyaXB0X2Rpcj1TQ1JJUFRf
RElSKQotICB0ZXN0cyA9IHRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oYXJncywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuY29uZmlndXJhdGlvbnMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRp
b25zKQotICBpZiBub3QgdGVzdHM6Ci0gICAgc3lzLmV4aXQoMSkgICMgSW5jb3JyZWN0IHBhcmFt
ZXRlcnMgZ2l2ZW4sIGFib3J0IGV4ZWN1dGlvbi4KLQotICBzeXMuZXhpdCh0ZXN0X3J1bm5lci5S
dW5UZXN0cyh0ZXN0c1swXSwgdGVzdHNbMV0pKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgotICBfTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVz
L3NhbXBsZTEwX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9z
YW1wbGUxMF91bml0dGVzdC5jYwppbmRleCAzYWQ2ZmQ2NTM4MjYxN2Y3ZDZiNDAxZjRkMWJkODNm
Yzg2ZWQ4NGZlLi4wMDUxY2Q1ZGNkNzE1MmU2ODdhYTdlYTEzOTExYjVkYmI5ZmE2OGEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRl
c3QuY2MKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0
ZGxpYi5oPgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVz
dC5oIgogCiB1c2luZyA6OnRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXI7CiB1c2luZyA6
OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0OwpAQCAtODksOCArODksNyBAQCBjbGFzcyBMZWFrQ2hl
Y2tlciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKICAgICAvLyBZb3UgY2FuIGdl
bmVyYXRlIGEgZmFpbHVyZSBpbiBhbnkgZXZlbnQgaGFuZGxlciBleGNlcHQKICAgICAvLyBPblRl
c3RQYXJ0UmVzdWx0LiBKdXN0IHVzZSBhbiBhcHByb3ByaWF0ZSBHb29nbGUgVGVzdCBhc3NlcnRp
b24gdG8gZG8KICAgICAvLyBpdC4KLSAgICBFWFBFQ1RfVFJVRShkaWZmZXJlbmNlIDw9IDApCi0g
ICAgICAgIDw8ICJMZWFrZWQgIiA8PCBkaWZmZXJlbmNlIDw8ICIgdW5pdChzKSBvZiBXYXRlciEi
OworICAgIEVYUEVDVF9MRShkaWZmZXJlbmNlLCAwKSA8PCAiTGVha2VkICIgPDwgZGlmZmVyZW5j
ZSA8PCAiIHVuaXQocykgb2YgV2F0ZXIhIjsKICAgfQogCiAgIGludCBpbml0aWFsbHlfYWxsb2Nh
dGVkXzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxl
MV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMV91
bml0dGVzdC5jYwppbmRleCAwMWViNTQ2MmY4MWFkNTRiMzhhYzVlZTYzMzc5NzJlYWEwNGQ3YWRl
Li5hZWZjNGYxZDg2NmU4MDkzMzJhNDVmOWEwZTIxOTNjNmY0NWJhZGI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjCkBAIC00
NSw3ICs0NSw3IEBACiAKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlICJzYW1wbGUxLmgi
Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAK
IC8vIFN0ZXAgMi4gVXNlIHRoZSBURVNUIG1hY3JvIHRvIGRlZmluZSB5b3VyIHRlc3RzLgpAQCAt
ODEsNyArODEsNyBAQCBURVNUKEZhY3RvcmlhbFRlc3QsIE5lZ2F0aXZlKSB7CiAgIC8vIHRlc3Qg
Y2FzZS4KICAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgtNSkpOwogICBFWFBFQ1RfRVEoMSwgRmFj
dG9yaWFsKC0xKSk7Ci0gIEVYUEVDVF9UUlVFKEZhY3RvcmlhbCgtMTApID4gMCk7CisgIEVYUEVD
VF9HVChGYWN0b3JpYWwoLTEwKSwgMCk7CiAKICAgLy8gPFRlY2huaWNhbERldGFpbHM+CiAgIC8v
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTIuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMi5oCmluZGV4IDViNTdlNjA4
MmZhNGY2YjcyNGJmYjU4MjY4N2JmZTBhNjMxOWYyYTcuLmNiNDg1YzcwZmIzM2FkN2Q4NDA1ZjY2
YThhMjc0NDEyZGUwNDg1MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nh
bXBsZXMvc2FtcGxlMi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2Ft
cGxlMi5oCkBAIC00NCw3ICs0NCw2IEBAIGNsYXNzIE15U3RyaW5nIHsKICAgY29uc3QgTXlTdHJp
bmcmIG9wZXJhdG9yPShjb25zdCBNeVN0cmluZyYgcmhzKTsKIAogIHB1YmxpYzoKLQogICAvLyBD
bG9uZXMgYSAwLXRlcm1pbmF0ZWQgQyBzdHJpbmcsIGFsbG9jYXRpbmcgbWVtb3J5IHVzaW5nIG5l
dy4KICAgc3RhdGljIGNvbnN0IGNoYXIqIENsb25lQ1N0cmluZyhjb25zdCBjaGFyKiBhX2Nfc3Ry
aW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1w
bGUyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUy
X3VuaXR0ZXN0LmNjCmluZGV4IDMyMjMyZDk4YzBiZDI1NDgyMWM4ZjY5MWE2Yjg1NWYxZjE2MTZm
YjguLjRmYTE5YjcxYzc5MmE0YzZjOWQ2OTAzMTE2MTAwMjgzYjAxMjBhMjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2MKQEAg
LTQxLDcgKzQxLDcgQEAKIC8vIG5lZWRlZC4KIAogI2luY2x1ZGUgInNhbXBsZTIuaCIKLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIC8vIEluIHRo
aXMgZXhhbXBsZSwgd2UgdGVzdCB0aGUgTXlTdHJpbmcgY2xhc3MgKGEgc2ltcGxlIHN0cmluZyku
CiAKQEAgLTc5LDcgKzc5LDcgQEAgY29uc3QgY2hhciBrSGVsbG9TdHJpbmdbXSA9ICJIZWxsbywg
d29ybGQhIjsKIC8vIFRlc3RzIHRoZSBjJ3RvciB0aGF0IGFjY2VwdHMgYSBDIHN0cmluZy4KIFRF
U1QoTXlTdHJpbmcsIENvbnN0cnVjdG9yRnJvbUNTdHJpbmcpIHsKICAgY29uc3QgTXlTdHJpbmcg
cyhrSGVsbG9TdHJpbmcpOwotICBFWFBFQ1RfVFJVRShzdHJjbXAocy5jX3N0cmluZygpLCBrSGVs
bG9TdHJpbmcpID09IDApOworICBFWFBFQ1RfRVEoMCwgc3RyY21wKHMuY19zdHJpbmcoKSwga0hl
bGxvU3RyaW5nKSk7CiAgIEVYUEVDVF9FUShzaXplb2Yoa0hlbGxvU3RyaW5nKS9zaXplb2Yoa0hl
bGxvU3RyaW5nWzBdKSAtIDEsCiAgICAgICAgICAgICBzLkxlbmd0aCgpKTsKIH0KQEAgLTg4LDcg
Kzg4LDcgQEAgVEVTVChNeVN0cmluZywgQ29uc3RydWN0b3JGcm9tQ1N0cmluZykgewogVEVTVChN
eVN0cmluZywgQ29weUNvbnN0cnVjdG9yKSB7CiAgIGNvbnN0IE15U3RyaW5nIHMxKGtIZWxsb1N0
cmluZyk7CiAgIGNvbnN0IE15U3RyaW5nIHMyID0gczE7Ci0gIEVYUEVDVF9UUlVFKHN0cmNtcChz
Mi5jX3N0cmluZygpLCBrSGVsbG9TdHJpbmcpID09IDApOworICBFWFBFQ1RfRVEoMCwgc3RyY21w
KHMyLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykpOwogfQogCiAvLyBUZXN0cyB0aGUgU2V0IG1l
dGhvZC4KQEAgLTk2LDEyICs5NiwxMiBAQCBURVNUKE15U3RyaW5nLCBTZXQpIHsKICAgTXlTdHJp
bmcgczsKIAogICBzLlNldChrSGVsbG9TdHJpbmcpOwotICBFWFBFQ1RfVFJVRShzdHJjbXAocy5j
X3N0cmluZygpLCBrSGVsbG9TdHJpbmcpID09IDApOworICBFWFBFQ1RfRVEoMCwgc3RyY21wKHMu
Y19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSk7CiAKICAgLy8gU2V0IHNob3VsZCB3b3JrIHdoZW4g
dGhlIGlucHV0IHBvaW50ZXIgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZQogICAvLyBhbHJlYWR5IGlu
IHRoZSBNeVN0cmluZyBvYmplY3QuCiAgIHMuU2V0KHMuY19zdHJpbmcoKSk7Ci0gIEVYUEVDVF9U
UlVFKHN0cmNtcChzLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykgPT0gMCk7CisgIEVYUEVDVF9F
USgwLCBzdHJjbXAocy5jX3N0cmluZygpLCBrSGVsbG9TdHJpbmcpKTsKIAogICAvLyBDYW4gd2Ug
c2V0IHRoZSBNeVN0cmluZyB0byBOVUxMPwogICBzLlNldChOVUxMKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMy1pbmwuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMy1pbmwuaAppbmRleCA0NjM2OWEwNzZkODVjNDEx
NDIzYWNhYTk4ZGQ0NTVlNTU5ZWQzMDBhLi43ZTMwODRkNjM4NWRmODk3ZmU1OTI0OGY0OTZiYmM5
MWExNzY4OTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3Nh
bXBsZTMtaW5sLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUz
LWlubC5oCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIFF1ZXVlTm9kZSB7CiAgcHJpdmF0ZToKICAg
Ly8gQ3JlYXRlcyBhIG5vZGUgd2l0aCBhIGdpdmVuIGVsZW1lbnQgdmFsdWUuICBUaGUgbmV4dCBw
b2ludGVyIGlzCiAgIC8vIHNldCB0byBOVUxMLgotICBRdWV1ZU5vZGUoY29uc3QgRSYgYW5fZWxl
bWVudCkgOiBlbGVtZW50Xyhhbl9lbGVtZW50KSwgbmV4dF8oTlVMTCkge30KKyAgZXhwbGljaXQg
UXVldWVOb2RlKGNvbnN0IEUmIGFuX2VsZW1lbnQpIDogZWxlbWVudF8oYW5fZWxlbWVudCksIG5l
eHRfKE5VTEwpIHt9CiAKICAgLy8gV2UgZGlzYWJsZSB0aGUgZGVmYXVsdCBhc3NpZ25tZW50IG9w
ZXJhdG9yIGFuZCBjb3B5IGMndG9yLgogICBjb25zdCBRdWV1ZU5vZGUmIG9wZXJhdG9yID0gKGNv
bnN0IFF1ZXVlTm9kZSYpOwpAQCAtNzIsOCArNzIsNyBAQCBjbGFzcyBRdWV1ZU5vZGUgewogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRT4gIC8vIEUgaXMgdGhlIGVsZW1lbnQgdHlwZS4KIGNsYXNzIFF1
ZXVlIHsKLXB1YmxpYzoKLQorIHB1YmxpYzoKICAgLy8gQ3JlYXRlcyBhbiBlbXB0eSBxdWV1ZS4K
ICAgUXVldWUoKSA6IGhlYWRfKE5VTEwpLCBsYXN0XyhOVUxMKSwgc2l6ZV8oMCkge30KIApAQCAt
MTY4LDYgKzE2Nyw2IEBAIGNsYXNzIFF1ZXVlIHsKICAgLy8gV2UgZGlzYWxsb3cgY29weWluZyBh
IHF1ZXVlLgogICBRdWV1ZShjb25zdCBRdWV1ZSYpOwogICBjb25zdCBRdWV1ZSYgb3BlcmF0b3Ig
PSAoY29uc3QgUXVldWUmKTsKLSB9OworfTsKIAogI2VuZGlmICAvLyBHVEVTVF9TQU1QTEVTX1NB
TVBMRTNfSU5MX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVz
L3NhbXBsZTNfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3Nh
bXBsZTNfdW5pdHRlc3QuY2MKaW5kZXggMzRjMWNhODY1NmVhYjU2NDE4MTU2MGRiZjE0OWQwYTJh
YTkyY2MxZC4uYmYzODc3ZDAxMzIzNDViMTg5ZWQ1ZWJhNzNkMjAxYmVjNTZmOGRhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlM191bml0dGVzdC5j
YwpAQCAtNjQsNyArNjQsNyBAQAogLy8gPC9UZWNobmljYWxEZXRhaWxzPgogCiAjaW5jbHVkZSAi
c2FtcGxlMy1pbmwuaCIKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCiAKIC8vIFRvIHVzZSBhIHRlc3QgZml4dHVyZSwgZGVyaXZlIGEgY2xhc3MgZnJv
bSB0ZXN0aW5nOjpUZXN0LgogY2xhc3MgUXVldWVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0X3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0X3VuaXR0
ZXN0LmNjCmluZGV4IGI0ZmIzNzM2YWJiZmY4M2Y3OWFmNDQ3Y2E0YmM2YjkxMDU4NjkzMmUuLmZh
NWFmYzdkNWExNjg2YjA5ODg5YmYwN2JjYWNmNTgxNjc3MTAzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNF91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QuY2MKQEAgLTI5LDcg
KzI5LDcgQEAKIC8vCiAvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAK
LSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAjaW5j
bHVkZSAic2FtcGxlNC5oIgogCiAvLyBUZXN0cyB0aGUgSW5jcmVtZW50KCkgbWV0aG9kLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNj
CmluZGV4IDQ5ZGFlN2M2OWZhNzZlOGE0ODYwNzcwNmI0YTE2MmM2NDJmMGEwODUuLjQzZDhlNTc3
NzU4M2VjNGJlMDEwODljOTk3OTViOTBiNzNlZjRmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MKQEAgLTQ3LDcgKzQ3LDcg
QEAKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDx0aW1lLmg+CiAjaW5jbHVkZSAic2Ft
cGxlMy1pbmwuaCIKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCiAjaW5jbHVkZSAic2FtcGxlMS5oIgogCiAvLyBJbiB0aGlzIHNhbXBsZSwgd2Ugd2Fu
dCB0byBlbnN1cmUgdGhhdCBldmVyeSB0ZXN0IGZpbmlzaGVzIHdpdGhpbgpAQCAtMTAxLDcgKzEw
MSw3IEBAIFRFU1RfRihJbnRlZ2VyRnVuY3Rpb25UZXN0LCBGYWN0b3JpYWwpIHsKICAgLy8gVGVz
dHMgZmFjdG9yaWFsIG9mIG5lZ2F0aXZlIG51bWJlcnMuCiAgIEVYUEVDVF9FUSgxLCBGYWN0b3Jp
YWwoLTUpKTsKICAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgtMSkpOwotICBFWFBFQ1RfVFJVRShG
YWN0b3JpYWwoLTEwKSA+IDApOworICBFWFBFQ1RfR1QoRmFjdG9yaWFsKC0xMCksIDApOwogCiAg
IC8vIFRlc3RzIGZhY3RvcmlhbCBvZiAwLgogICBFWFBFQ1RfRVEoMSwgRmFjdG9yaWFsKDApKTsK
QEAgLTExNywyMCArMTE3LDIwIEBAIFRFU1RfRihJbnRlZ2VyRnVuY3Rpb25UZXN0LCBGYWN0b3Jp
YWwpIHsKIC8vIFRlc3RzIElzUHJpbWUoKQogVEVTVF9GKEludGVnZXJGdW5jdGlvblRlc3QsIElz
UHJpbWUpIHsKICAgLy8gVGVzdHMgbmVnYXRpdmUgaW5wdXQuCi0gIEVYUEVDVF9UUlVFKCFJc1By
aW1lKC0xKSk7Ci0gIEVYUEVDVF9UUlVFKCFJc1ByaW1lKC0yKSk7Ci0gIEVYUEVDVF9UUlVFKCFJ
c1ByaW1lKElOVF9NSU4pKTsKKyAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoLTEpKTsKKyAgRVhQRUNU
X0ZBTFNFKElzUHJpbWUoLTIpKTsKKyAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoSU5UX01JTikpOwog
CiAgIC8vIFRlc3RzIHNvbWUgdHJpdmlhbCBjYXNlcy4KLSAgRVhQRUNUX1RSVUUoIUlzUHJpbWUo
MCkpOwotICBFWFBFQ1RfVFJVRSghSXNQcmltZSgxKSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1l
KDApKTsKKyAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoMSkpOwogICBFWFBFQ1RfVFJVRShJc1ByaW1l
KDIpKTsKICAgRVhQRUNUX1RSVUUoSXNQcmltZSgzKSk7CiAKICAgLy8gVGVzdHMgcG9zaXRpdmUg
aW5wdXQuCi0gIEVYUEVDVF9UUlVFKCFJc1ByaW1lKDQpKTsKKyAgRVhQRUNUX0ZBTFNFKElzUHJp
bWUoNCkpOwogICBFWFBFQ1RfVFJVRShJc1ByaW1lKDUpKTsKLSAgRVhQRUNUX1RSVUUoIUlzUHJp
bWUoNikpOworICBFWFBFQ1RfRkFMU0UoSXNQcmltZSg2KSk7CiAgIEVYUEVDVF9UUlVFKElzUHJp
bWUoMjMpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxl
cy9zYW1wbGU2X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9z
YW1wbGU2X3VuaXR0ZXN0LmNjCmluZGV4IGRkMGRmMzFmMGJiN2NiZjI2MTYwNzM0MmU4NjQwNGQ3
NWE4NTM0M2UuLjhmMjAzNmE1MTYwODBiYTczOTA0YWUzNmRiZjJhZTYwNTUzYTZmMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3Qu
Y2MKQEAgLTM1LDcgKzM1LDcgQEAKIC8vIFRoZSBpbnRlcmZhY2UgYW5kIGl0cyBpbXBsZW1lbnRh
dGlvbnMgYXJlIGluIHRoaXMgaGVhZGVyLgogI2luY2x1ZGUgInByaW1lX3RhYmxlcy5oIgogCi0j
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAvLyBG
aXJzdCwgd2UgZGVmaW5lIHNvbWUgZmFjdG9yeSBmdW5jdGlvbnMgZm9yIGNyZWF0aW5nIGluc3Rh
bmNlcyBvZgogLy8gdGhlIGltcGxlbWVudGF0aW9ucy4gIFlvdSBtYXkgYmUgYWJsZSB0byBza2lw
IHRoaXMgc3RlcCBpZiBhbGwgeW91cgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2FtcGxlcy9zYW1wbGU3X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGU3X3VuaXR0ZXN0LmNjCmluZGV4IGY0NTUyODI3ZWQ5YjgzMDZjZGQzMTlh
YTU3ZjNlZDA2NzYyYjRmNWYuLjFiNjUxYTIxZDY0OTJmMDJlYzZjMzAwY2Y2YTdlYWRkNWQ0N2Zj
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlN191
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTdf
dW5pdHRlc3QuY2MKQEAgLTM4LDE5ICszOCwxOCBAQAogLy8gVGhlIGludGVyZmFjZSBhbmQgaXRz
IGltcGxlbWVudGF0aW9ucyBhcmUgaW4gdGhpcyBoZWFkZXIuCiAjaW5jbHVkZSAicHJpbWVfdGFi
bGVzLmgiCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCiAKICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAogCiB1c2luZyA6OnRlc3Rpbmc6OlRlc3RX
aXRoUGFyYW07CiB1c2luZyA6OnRlc3Rpbmc6OlZhbHVlczsKIAotLy8gQXMgYSBnZW5lcmFsIHJ1
bGUsIHRlc3RlZCBvYmplY3RzIHNob3VsZCBub3QgYmUgcmV1c2VkIGJldHdlZW4gdGVzdHMuCi0v
LyBBbHNvLCB0aGVpciBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzIG9mIHRlc3RlZCBvYmpl
Y3RzIGNhbiBoYXZlCi0vLyBzaWRlIGVmZmVjdHMuIFRodXMgeW91IHNob3VsZCBjcmVhdGUgYW5k
IGRlc3Ryb3kgdGhlbSBmb3IgZWFjaCB0ZXN0LgotLy8gSW4gdGhpcyBzYW1wbGUgd2Ugd2lsbCBk
ZWZpbmUgYSBzaW1wbGUgZmFjdG9yeSBmdW5jdGlvbiBmb3IgUHJpbWVUYWJsZQotLy8gb2JqZWN0
cy4gV2Ugd2lsbCBpbnN0YW50aWF0ZSBvYmplY3RzIGluIHRlc3QncyBTZXRVcCgpIG1ldGhvZCBh
bmQKLS8vIGRlbGV0ZSB0aGVtIGluIFRlYXJEb3duKCkgbWV0aG9kLgorLy8gQXMgYSBnZW5lcmFs
IHJ1bGUsIHRvIHByZXZlbnQgYSB0ZXN0IGZyb20gYWZmZWN0aW5nIHRoZSB0ZXN0cyB0aGF0IGNv
bWUKKy8vIGFmdGVyIGl0LCB5b3Ugc2hvdWxkIGNyZWF0ZSBhbmQgZGVzdHJveSB0aGUgdGVzdGVk
IG9iamVjdHMgZm9yIGVhY2ggdGVzdAorLy8gaW5zdGVhZCBvZiByZXVzaW5nIHRoZW0uICBJbiB0
aGlzIHNhbXBsZSB3ZSB3aWxsIGRlZmluZSBhIHNpbXBsZSBmYWN0b3J5CisvLyBmdW5jdGlvbiBm
b3IgUHJpbWVUYWJsZSBvYmplY3RzLiAgV2Ugd2lsbCBpbnN0YW50aWF0ZSBvYmplY3RzIGluIHRl
c3QncworLy8gU2V0VXAoKSBtZXRob2QgYW5kIGRlbGV0ZSB0aGVtIGluIFRlYXJEb3duKCkgbWV0
aG9kLgogdHlwZWRlZiBQcmltZVRhYmxlKiBDcmVhdGVQcmltZVRhYmxlRnVuYygpOwogCiBQcmlt
ZVRhYmxlKiBDcmVhdGVPblRoZUZseVByaW1lVGFibGUoKSB7CkBAIC02MiwxMSArNjEsMTAgQEAg
UHJpbWVUYWJsZSogQ3JlYXRlUHJlQ2FsY3VsYXRlZFByaW1lVGFibGUoKSB7CiAgIHJldHVybiBu
ZXcgUHJlQ2FsY3VsYXRlZFByaW1lVGFibGUobWF4X3ByZWNhbGN1bGF0ZWQpOwogfQogCi0vLyBJ
bnNpZGUgdGhlIHRlc3QgYm9keSwgZml4dHVyZSBjb25zdHJ1Y3RvciwgU2V0VXAoKSwgYW5kIFRl
YXJEb3duKCkKLS8vIHlvdSBjYW4gcmVmZXIgdG8gdGhlIHRlc3QgcGFyYW1ldGVyIGJ5IEdldFBh
cmFtKCkuCi0vLyBJbiB0aGlzIGNhc2UsIHRoZSB0ZXN0IHBhcmFtZXRlciBpcyBhIFByaW1lVGFi
bGVGYWN0b3J5IGludGVyZmFjZSBwb2ludGVyCi0vLyB3aGljaCB3ZSB1c2UgaW4gZml4dHVyZSdz
IFNldFVwKCkgdG8gY3JlYXRlIGFuZCBzdG9yZSBhbiBpbnN0YW5jZSBvZgotLy8gUHJpbWVUYWJs
ZS4KKy8vIEluc2lkZSB0aGUgdGVzdCBib2R5LCBmaXh0dXJlIGNvbnN0cnVjdG9yLCBTZXRVcCgp
LCBhbmQgVGVhckRvd24oKSB5b3UKKy8vIGNhbiByZWZlciB0byB0aGUgdGVzdCBwYXJhbWV0ZXIg
YnkgR2V0UGFyYW0oKS4gIEluIHRoaXMgY2FzZSwgdGhlIHRlc3QKKy8vIHBhcmFtZXRlciBpcyBh
IGZhY3RvcnkgZnVuY3Rpb24gd2hpY2ggd2UgY2FsbCBpbiBmaXh0dXJlJ3MgU2V0VXAoKSB0bwor
Ly8gY3JlYXRlIGFuZCBzdG9yZSBhbiBpbnN0YW5jZSBvZiBQcmltZVRhYmxlLgogY2xhc3MgUHJp
bWVUYWJsZVRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxDcmVhdGVQcmltZVRhYmxlRnVuYyo+
IHsKICBwdWJsaWM6CiAgIHZpcnR1YWwgflByaW1lVGFibGVUZXN0KCkgeyBkZWxldGUgdGFibGVf
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZThf
dW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZThfdW5p
dHRlc3QuY2MKaW5kZXggY2NmNjFkOTJiODVjMzEyZjdmMmVjMmY2ZDhhNjczZGZmNGIwMmQ2Ni4u
NzI3NDMzNDA2NzQ4ODg1MTJmYzM4NjA4YzEzOGE0MGY5YWEzMmQ4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYwpAQCAtMzYs
NyArMzYsNyBAQAogLy8gVXNlIGNsYXNzIGRlZmluaXRpb25zIHRvIHRlc3QgZnJvbSB0aGlzIGhl
YWRlci4KICNpbmNsdWRlICJwcmltZV90YWJsZXMuaCIKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2lmIEdURVNUX0hBU19DT01CSU5FCiAK
QEAgLTkwLDcgKzkwLDcgQEAgdXNpbmcgOjp0ZXN0aW5nOjpDb21iaW5lOwogLy8gUHJlQ2FsY3Vs
YXRlZFByaW1lVGFibGUgZGlzYWJsZWQuIFdlIGRvIHRoaXMgYnkgZGVmaW5pbmcgZml4dHVyZSB3
aGljaCB3aWxsCiAvLyBhY2NlcHQgZGlmZmVyZW50IGNvbWJpbmF0aW9ucyBvZiBwYXJhbWV0ZXJz
IGZvciBpbnN0YW50aWF0aW5nIGEKIC8vIEh5YnJpZFByaW1lVGFibGUgaW5zdGFuY2UuCi1jbGFz
cyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPCA6OnN0ZDo6dHIxOjp0dXBs
ZTxib29sLCBpbnQ+ID4geworY2xhc3MgUHJpbWVUYWJsZVRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQ
YXJhbTwgOjp0ZXN0aW5nOjp0dXBsZTxib29sLCBpbnQ+ID4gewogIHByb3RlY3RlZDoKICAgdmly
dHVhbCB2b2lkIFNldFVwKCkgewogICAgIC8vIFRoaXMgY2FuIGJlIHdyaXR0ZW4gYXMKQEAgLTEw
MSw4ICsxMDEsOCBAQCBjbGFzcyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFt
PCA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQ+ID4gewogICAgIC8vCiAgICAgLy8gb25jZSB0
aGUgR29vZ2xlIEMrKyBTdHlsZSBHdWlkZSBhbGxvd3MgdXNlIG9mIDo6c3RkOjp0cjE6OnRpZS4K
ICAgICAvLwotICAgIGJvb2wgZm9yY2Vfb25fdGhlX2ZseSA9IDo6c3RkOjp0cjE6OmdldDwwPihH
ZXRQYXJhbSgpKTsKLSAgICBpbnQgbWF4X3ByZWNhbGN1bGF0ZWQgPSA6OnN0ZDo6dHIxOjpnZXQ8
MT4oR2V0UGFyYW0oKSk7CisgICAgYm9vbCBmb3JjZV9vbl90aGVfZmx5ID0gOjp0ZXN0aW5nOjpn
ZXQ8MD4oR2V0UGFyYW0oKSk7CisgICAgaW50IG1heF9wcmVjYWxjdWxhdGVkID0gOjp0ZXN0aW5n
OjpnZXQ8MT4oR2V0UGFyYW0oKSk7CiAgICAgdGFibGVfID0gbmV3IEh5YnJpZFByaW1lVGFibGUo
Zm9yY2Vfb25fdGhlX2ZseSwgbWF4X3ByZWNhbGN1bGF0ZWQpOwogICB9CiAgIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBs
ZXMvc2FtcGxlOV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMv
c2FtcGxlOV91bml0dGVzdC5jYwppbmRleCBkODI4ZWY0ZDg2Yjc0NmIyNTY5N2JkZDQ2ZDIxMDBh
NDQ2MTQyZDMxLi5iMmUyMDc5YmYzYjNkZTJiMDQ1YjlhODBkN2U3YzdiZGFiOWM4OWY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0
LmNjCkBAIC0zNCw3ICszNCw3IEBACiAKICNpbmNsdWRlIDxzdGRpby5oPgogCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiB1c2luZyA6OnRlc3Rp
bmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXI7CiB1c2luZyA6OnRlc3Rpbmc6OkluaXRHb29nbGVU
ZXN0OwpAQCAtNjksNyArNjksNyBAQCBjbGFzcyBUZXJzZVByaW50ZXIgOiBwdWJsaWMgRW1wdHlU
ZXN0RXZlbnRMaXN0ZW5lciB7CiAgICAgZmZsdXNoKHN0ZG91dCk7CiAgIH0KIAotICAvLyBDYWxs
ZWQgYWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VTUygpLgorICAvLyBDYWxsZWQg
YWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VFRCgpIGludm9jYXRpb24uCiAgIHZp
cnR1YWwgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3Bh
cnRfcmVzdWx0KSB7CiAgICAgZnByaW50ZihzdGRvdXQsCiAgICAgICAgICAgICAiJXMgaW4gJXM6
JWRcbiVzXG4iLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9j
b21tb24ucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2NvbW1vbi5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zYzAzNDdhNzViZGZmMzE4ODA5Nzc0NTAxNWE1ODAzNzY0YWQ3NDFjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9jb21tb24ucHkKQEAg
LTAsMCArMSw4MyBAQAorIyBDb3B5cmlnaHQgMjAxMyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiU2hhcmVkIHV0aWxpdGllcyBmb3Igd3Jp
dGluZyBzY3JpcHRzIGZvciBHb29nbGUgVGVzdC9Nb2NrLiIiIgorCitfX2F1dGhvcl9fID0gJ3dh
bkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJworCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCisK
KworIyBNYXRjaGVzIHRoZSBsaW5lIGZyb20gJ3N2biBpbmZvIC4nIG91dHB1dCB0aGF0IGRlc2Ny
aWJlcyB3aGF0IFNWTgorIyBwYXRoIHRoZSBjdXJyZW50IGxvY2FsIGRpcmVjdG9yeSBjb3JyZXNw
b25kcyB0by4gIEZvciBleGFtcGxlLCBpbgorIyBhIGdvb2dsZXRlc3QgU1ZOIHdvcmtzcGFjZSdz
IHRydW5rL3Rlc3QgZGlyZWN0b3J5LCB0aGUgb3V0cHV0IHdpbGwgYmU6CisjCisjIFVSTDogaHR0
cHM6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay90ZXN0CitfU1ZOX0lORk9f
VVJMX1JFID0gcmUuY29tcGlsZShyJ15VUkw6IGh0dHBzOi8vKFx3KylcLmdvb2dsZWNvZGVcLmNv
bS9zdm4oLiopJykKKworCitkZWYgR2V0Q29tbWFuZE91dHB1dChjb21tYW5kKToKKyAgIiIiUnVu
cyB0aGUgc2hlbGwgY29tbWFuZCBhbmQgcmV0dXJucyBpdHMgc3Rkb3V0IGFzIGEgbGlzdCBvZiBs
aW5lcy4iIiIKKworICBmID0gb3MucG9wZW4oY29tbWFuZCwgJ3InKQorICBsaW5lcyA9IFtsaW5l
LnN0cmlwKCkgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKV0KKyAgZi5jbG9zZSgpCisgIHJldHVy
biBsaW5lcworCisKK2RlZiBHZXRTdm5JbmZvKCk6CisgICIiIlJldHVybnMgdGhlIHByb2plY3Qg
bmFtZSBhbmQgdGhlIGN1cnJlbnQgU1ZOIHdvcmtzcGFjZSdzIHJvb3QgcGF0aC4iIiIKKworICBm
b3IgbGluZSBpbiBHZXRDb21tYW5kT3V0cHV0KCdzdm4gaW5mbyAuJyk6CisgICAgbSA9IF9TVk5f
SU5GT19VUkxfUkUubWF0Y2gobGluZSkKKyAgICBpZiBtOgorICAgICAgcHJvamVjdCA9IG0uZ3Jv
dXAoMSkgICMgZ29vZ2xldGVzdCBvciBnb29nbGVtb2NrCisgICAgICByZWxfcGF0aCA9IG0uZ3Jv
dXAoMikKKyAgICAgIHJvb3QgPSBvcy5wYXRoLnJlYWxwYXRoKHJlbF9wYXRoLmNvdW50KCcvJykg
KiAnLi4vJykKKyAgICAgIHJldHVybiBwcm9qZWN0LCByb290CisKKyAgcmV0dXJuIE5vbmUsIE5v
bmUKKworCitkZWYgR2V0U3ZuVHJ1bmsoKToKKyAgIiIiUmV0dXJucyB0aGUgY3VycmVudCBTVk4g
d29ya3NwYWNlJ3MgdHJ1bmsgcm9vdCBwYXRoLiIiIgorCisgIF8sIHJvb3QgPSBHZXRTdm5JbmZv
KCkKKyAgcmV0dXJuIHJvb3QgKyAnL3RydW5rJyBpZiByb290IGVsc2UgTm9uZQorCisKK2RlZiBJ
c0luR1Rlc3RTdm4oKToKKyAgcHJvamVjdCwgXyA9IEdldFN2bkluZm8oKQorICByZXR1cm4gcHJv
amVjdCA9PSAnZ29vZ2xldGVzdCcKKworCitkZWYgSXNJbkdNb2NrU3ZuKCk6CisgIHByb2plY3Qs
IF8gPSBHZXRTdm5JbmZvKCkKKyAgcmV0dXJuIHByb2plY3QgPT0gJ2dvb2dsZW1vY2snCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMu
cHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMucHkK
aW5kZXggMTQ4NDQ0Y2E3MTFiMWVkYWFhZmVhOGQ3ODI2ZDNjZmQ0YzAxZGUwYi4uM2YzZTlmMzZk
NjFiM2I3Y2E3MmZlNjkzZTU1MDgxMDZiN2NiZjc2MiAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc2NyaXB0cy9mdXNlX2d0ZXN0X2ZpbGVzLnB5CisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NjcmlwdHMvZnVzZV9ndGVzdF9maWxlcy5weQpAQCAtNjAsMTUgKzYwLDE4
IEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgc2V0cwordHJ5OgorICBmcm9tIHNl
dHMgaW1wb3J0IFNldCBhcyBzZXQgICMgRm9yIFB5dGhvbiAyLjMgY29tcGF0aWJpbGl0eQorZXhj
ZXB0IEltcG9ydEVycm9yOgorICBwYXNzCiBpbXBvcnQgc3lzCiAKICMgV2UgYXNzdW1lIHRoYXQg
dGhpcyBmaWxlIGlzIGluIHRoZSBzY3JpcHRzLyBkaXJlY3RvcnkgaW4gdGhlIEdvb2dsZQogIyBU
ZXN0IHJvb3QgZGlyZWN0b3J5LgogREVGQVVMVF9HVEVTVF9ST09UX0RJUiA9IG9zLnBhdGguam9p
bihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nKQogCi0jIFJlZ2V4IGZvciBtYXRjaGlu
ZyAnI2luY2x1ZGUgPGd0ZXN0Ly4uLj4nLgotSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VYID0gcmUu
Y29tcGlsZShyJ15ccyojXHMqaW5jbHVkZVxzKjwoZ3Rlc3QvLispPicpCisjIFJlZ2V4IGZvciBt
YXRjaGluZyAnI2luY2x1ZGUgImd0ZXN0Ly4uLiInLgorSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VY
ID0gcmUuY29tcGlsZShyJ15ccyojXHMqaW5jbHVkZVxzKiIoZ3Rlc3QvLispIicpCiAKICMgUmVn
ZXggZm9yIG1hdGNoaW5nICcjaW5jbHVkZSAic3JjLy4uLiInLgogSU5DTFVERV9TUkNfRklMRV9S
RUdFWCA9IHJlLmNvbXBpbGUocideXHMqI1xzKmluY2x1ZGVccyoiKHNyYy8uKykiJykKQEAgLTkw
LDEwICs5MywxMCBAQCBkZWYgVmVyaWZ5RmlsZUV4aXN0cyhkaXJlY3RvcnksIHJlbGF0aXZlX3Bh
dGgpOgogICAiIiIKIAogICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGRpcmVj
dG9yeSwgcmVsYXRpdmVfcGF0aCkpOgotICAgIHByaW50ICdFUlJPUjogQ2Fubm90IGZpbmQgJXMg
aW4gZGlyZWN0b3J5ICVzLicgJSAocmVsYXRpdmVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSkKLSAgICBwcmludCAo
J1BsZWFzZSBlaXRoZXIgc3BlY2lmeSBhIHZhbGlkIHByb2plY3Qgcm9vdCBkaXJlY3RvcnkgJwot
ICAgICAgICAgICAnb3Igb21pdCBpdCBvbiB0aGUgY29tbWFuZCBsaW5lLicpCisgICAgcHJpbnQo
J0VSUk9SOiBDYW5ub3QgZmluZCAlcyBpbiBkaXJlY3RvcnkgJXMuJyAlIChyZWxhdGl2ZV9wYXRo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGlyZWN0b3J5KSkKKyAgICBwcmludCgnUGxlYXNlIGVpdGhlciBzcGVjaWZ5IGEgdmFsaWQgcHJv
amVjdCByb290IGRpcmVjdG9yeSAnCisgICAgICAgICAgJ29yIG9taXQgaXQgb24gdGhlIGNvbW1h
bmQgbGluZS4nKQogICAgIHN5cy5leGl0KDEpCiAKIApAQCAtMTE5LDExICsxMjIsMTEgQEAgZGVm
IFZlcmlmeU91dHB1dEZpbGUob3V0cHV0X2RpciwgcmVsYXRpdmVfcGF0aCk6CiAgICAgIyBUT0RP
KHdhbkBnb29nbGUuY29tKTogVGhlIGZvbGxvd2luZyB1c2VyLWludGVyYWN0aW9uIGRvZXNuJ3QK
ICAgICAjIHdvcmsgd2l0aCBhdXRvbWF0ZWQgcHJvY2Vzc2VzLiAgV2Ugc2hvdWxkIHByb3ZpZGUg
YSB3YXkgZm9yIHRoZQogICAgICMgTWFrZWZpbGUgdG8gZm9yY2Ugb3ZlcndyaXRpbmcgdGhlIGZp
bGVzLgotICAgIHByaW50ICgnJXMgYWxyZWFkeSBleGlzdHMgaW4gZGlyZWN0b3J5ICVzIC0gb3Zl
cndyaXRlIGl0PyAoeS9OKSAnICUKLSAgICAgICAgICAgKHJlbGF0aXZlX3BhdGgsIG91dHB1dF9k
aXIpKQorICAgIHByaW50KCclcyBhbHJlYWR5IGV4aXN0cyBpbiBkaXJlY3RvcnkgJXMgLSBvdmVy
d3JpdGUgaXQ/ICh5L04pICcgJQorICAgICAgICAgIChyZWxhdGl2ZV9wYXRoLCBvdXRwdXRfZGly
KSkKICAgICBhbnN3ZXIgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKS5zdHJpcCgpCiAgICAgaWYgYW5z
d2VyIG5vdCBpbiBbJ3knLCAnWSddOgotICAgICAgcHJpbnQgJ0FCT1JURUQuJworICAgICAgcHJp
bnQoJ0FCT1JURUQuJykKICAgICAgIHN5cy5leGl0KDEpCiAKICAgIyBNYWtlcyBzdXJlIHRoZSBk
aXJlY3RvcnkgaG9sZGluZyB0aGUgb3V0cHV0IGZpbGUgZXhpc3RzOyBjcmVhdGVzCkBAIC0xNDYs
OCArMTQ5LDggQEAgZGVmIFZhbGlkYXRlT3V0cHV0RGlyKG91dHB1dF9kaXIpOgogZGVmIEZ1c2VH
VGVzdEgoZ3Rlc3Rfcm9vdCwgb3V0cHV0X2Rpcik6CiAgICIiIlNjYW5zIGZvbGRlciBndGVzdF9y
b290IHRvIGdlbmVyYXRlIGd0ZXN0L2d0ZXN0LmggaW4gb3V0cHV0X2Rpci4iIiIKIAotICBvdXRw
dXRfZmlsZSA9IGZpbGUob3MucGF0aC5qb2luKG91dHB1dF9kaXIsIEdURVNUX0hfT1VUUFVUKSwg
J3cnKQotICBwcm9jZXNzZWRfZmlsZXMgPSBzZXRzLlNldCgpICAjIEhvbGRzIGFsbCBndGVzdCBo
ZWFkZXJzIHdlJ3ZlIHByb2Nlc3NlZC4KKyAgb3V0cHV0X2ZpbGUgPSBvcGVuKG9zLnBhdGguam9p
bihvdXRwdXRfZGlyLCBHVEVTVF9IX09VVFBVVCksICd3JykKKyAgcHJvY2Vzc2VkX2ZpbGVzID0g
c2V0KCkgICMgSG9sZHMgYWxsIGd0ZXN0IGhlYWRlcnMgd2UndmUgcHJvY2Vzc2VkLgogCiAgIGRl
ZiBQcm9jZXNzRmlsZShndGVzdF9oZWFkZXJfcGF0aCk6CiAgICAgIiIiUHJvY2Vzc2VzIHRoZSBn
aXZlbiBndGVzdCBoZWFkZXIgZmlsZS4iIiIKQEAgLTE1OSwxMCArMTYyLDEwIEBAIGRlZiBQcm9j
ZXNzRmlsZShndGVzdF9oZWFkZXJfcGF0aCk6CiAgICAgcHJvY2Vzc2VkX2ZpbGVzLmFkZChndGVz
dF9oZWFkZXJfcGF0aCkKIAogICAgICMgUmVhZHMgZWFjaCBsaW5lIGluIHRoZSBnaXZlbiBndGVz
dCBoZWFkZXIuCi0gICAgZm9yIGxpbmUgaW4gZmlsZShvcy5wYXRoLmpvaW4oZ3Rlc3Rfcm9vdCwg
Z3Rlc3RfaGVhZGVyX3BhdGgpLCAncicpOgorICAgIGZvciBsaW5lIGluIG9wZW4ob3MucGF0aC5q
b2luKGd0ZXN0X3Jvb3QsIGd0ZXN0X2hlYWRlcl9wYXRoKSwgJ3InKToKICAgICAgIG0gPSBJTkNM
VURFX0dURVNUX0ZJTEVfUkVHRVgubWF0Y2gobGluZSkKICAgICAgIGlmIG06Ci0gICAgICAgICMg
SXQncyAnI2luY2x1ZGUgPGd0ZXN0Ly4uLj4nIC0gbGV0J3MgcHJvY2VzcyBpdCByZWN1cnNpdmVs
eS4KKyAgICAgICAgIyBJdCdzICcjaW5jbHVkZSAiZ3Rlc3QvLi4uIicgLSBsZXQncyBwcm9jZXNz
IGl0IHJlY3Vyc2l2ZWx5LgogICAgICAgICBQcm9jZXNzRmlsZSgnaW5jbHVkZS8nICsgbS5ncm91
cCgxKSkKICAgICAgIGVsc2U6CiAgICAgICAgICMgT3RoZXJ3aXNlIHdlIGNvcHkgdGhlIGxpbmUg
dW5jaGFuZ2VkIHRvIHRoZSBvdXRwdXQgZmlsZS4KQEAgLTE3NSw3ICsxNzgsNyBAQCBkZWYgUHJv
Y2Vzc0ZpbGUoZ3Rlc3RfaGVhZGVyX3BhdGgpOgogZGVmIEZ1c2VHVGVzdEFsbENjVG9GaWxlKGd0
ZXN0X3Jvb3QsIG91dHB1dF9maWxlKToKICAgIiIiU2NhbnMgZm9sZGVyIGd0ZXN0X3Jvb3QgdG8g
Z2VuZXJhdGUgZ3Rlc3QvZ3Rlc3QtYWxsLmNjIGluIG91dHB1dF9maWxlLiIiIgogCi0gIHByb2Nl
c3NlZF9maWxlcyA9IHNldHMuU2V0KCkKKyAgcHJvY2Vzc2VkX2ZpbGVzID0gc2V0KCkKIAogICBk
ZWYgUHJvY2Vzc0ZpbGUoZ3Rlc3Rfc291cmNlX2ZpbGUpOgogICAgICIiIlByb2Nlc3NlcyB0aGUg
Z2l2ZW4gZ3Rlc3Qgc291cmNlIGZpbGUuIiIiCkBAIC0xODcsMjMgKzE5MCwyMyBAQCBkZWYgUHJv
Y2Vzc0ZpbGUoZ3Rlc3Rfc291cmNlX2ZpbGUpOgogICAgIHByb2Nlc3NlZF9maWxlcy5hZGQoZ3Rl
c3Rfc291cmNlX2ZpbGUpCiAKICAgICAjIFJlYWRzIGVhY2ggbGluZSBpbiB0aGUgZ2l2ZW4gZ3Rl
c3Qgc291cmNlIGZpbGUuCi0gICAgZm9yIGxpbmUgaW4gZmlsZShvcy5wYXRoLmpvaW4oZ3Rlc3Rf
cm9vdCwgZ3Rlc3Rfc291cmNlX2ZpbGUpLCAncicpOgorICAgIGZvciBsaW5lIGluIG9wZW4ob3Mu
cGF0aC5qb2luKGd0ZXN0X3Jvb3QsIGd0ZXN0X3NvdXJjZV9maWxlKSwgJ3InKToKICAgICAgIG0g
PSBJTkNMVURFX0dURVNUX0ZJTEVfUkVHRVgubWF0Y2gobGluZSkKICAgICAgIGlmIG06CiAgICAg
ICAgIGlmICdpbmNsdWRlLycgKyBtLmdyb3VwKDEpID09IEdURVNUX1NQSV9IX1NFRUQ6Ci0gICAg
ICAgICAgIyBJdCdzICcjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+Jy4gIFRoaXMgZmlsZSBp
cyBub3QKLSAgICAgICAgICAjICNpbmNsdWRlZCBieSA8Z3Rlc3QvZ3Rlc3QuaD4sIHNvIHdlIG5l
ZWQgdG8gcHJvY2VzcyBpdC4KKyAgICAgICAgICAjIEl0J3MgJyNpbmNsdWRlICJndGVzdC9ndGVz
dC1zcGkuaCInLiAgVGhpcyBmaWxlIGlzIG5vdAorICAgICAgICAgICMgI2luY2x1ZGVkIGJ5ICJn
dGVzdC9ndGVzdC5oIiwgc28gd2UgbmVlZCB0byBwcm9jZXNzIGl0LgogICAgICAgICAgIFByb2Nl
c3NGaWxlKEdURVNUX1NQSV9IX1NFRUQpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgIyBJdCdz
ICcjaW5jbHVkZSA8Z3Rlc3QvZm9vLmg+JyB3aGVyZSBmb28gaXMgbm90IGd0ZXN0LXNwaS4KLSAg
ICAgICAgICAjIFdlIHRyZWF0IGl0IGFzICcjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4nLCBhcyBh
bGwgb3RoZXIKKyAgICAgICAgICAjIEl0J3MgJyNpbmNsdWRlICJndGVzdC9mb28uaCInIHdoZXJl
IGZvbyBpcyBub3QgZ3Rlc3Qtc3BpLgorICAgICAgICAgICMgV2UgdHJlYXQgaXQgYXMgJyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIicsIGFzIGFsbCBvdGhlcgogICAgICAgICAgICMgZ3Rlc3QgaGVh
ZGVycyBhcmUgYmVpbmcgZnVzZWQgaW50byBndGVzdC5oIGFuZCBjYW5ub3QgYmUKICAgICAgICAg
ICAjICNpbmNsdWRlZCBkaXJlY3RseS4KIAotICAgICAgICAgICMgVGhlcmUgaXMgbm8gbmVlZCB0
byAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4gbW9yZSB0aGFuIG9uY2UuCisgICAgICAgICAgIyBU
aGVyZSBpcyBubyBuZWVkIHRvICNpbmNsdWRlICJndGVzdC9ndGVzdC5oIiBtb3JlIHRoYW4gb25j
ZS4KICAgICAgICAgICBpZiBub3QgR1RFU1RfSF9TRUVEIGluIHByb2Nlc3NlZF9maWxlczoKICAg
ICAgICAgICAgIHByb2Nlc3NlZF9maWxlcy5hZGQoR1RFU1RfSF9TRUVEKQotICAgICAgICAgICAg
b3V0cHV0X2ZpbGUud3JpdGUoJyNpbmNsdWRlIDwlcz5cbicgJSAoR1RFU1RfSF9PVVRQVVQsKSkK
KyAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKCcjaW5jbHVkZSAiJXMiXG4nICUgKEdURVNU
X0hfT1VUUFVULCkpCiAgICAgICBlbHNlOgogICAgICAgICBtID0gSU5DTFVERV9TUkNfRklMRV9S
RUdFWC5tYXRjaChsaW5lKQogICAgICAgICBpZiBtOgpAQCAtMjE4LDcgKzIyMSw3IEBAIGRlZiBQ
cm9jZXNzRmlsZShndGVzdF9zb3VyY2VfZmlsZSk6CiBkZWYgRnVzZUdUZXN0QWxsQ2MoZ3Rlc3Rf
cm9vdCwgb3V0cHV0X2Rpcik6CiAgICIiIlNjYW5zIGZvbGRlciBndGVzdF9yb290IHRvIGdlbmVy
YXRlIGd0ZXN0L2d0ZXN0LWFsbC5jYyBpbiBvdXRwdXRfZGlyLiIiIgogCi0gIG91dHB1dF9maWxl
ID0gZmlsZShvcy5wYXRoLmpvaW4ob3V0cHV0X2RpciwgR1RFU1RfQUxMX0NDX09VVFBVVCksICd3
JykKKyAgb3V0cHV0X2ZpbGUgPSBvcGVuKG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCBHVEVTVF9B
TExfQ0NfT1VUUFVUKSwgJ3cnKQogICBGdXNlR1Rlc3RBbGxDY1RvRmlsZShndGVzdF9yb290LCBv
dXRwdXRfZmlsZSkKICAgb3V0cHV0X2ZpbGUuY2xvc2UoKQogCkBAIC0yNDIsNyArMjQ1LDcgQEAg
ZGVmIG1haW4oKToKICAgICAjIGZ1c2VfZ3Rlc3RfZmlsZXMucHkgR1RFU1RfUk9PVF9ESVIgT1VU
UFVUX0RJUgogICAgIEZ1c2VHVGVzdChzeXMuYXJndlsxXSwgc3lzLmFyZ3ZbMl0pCiAgIGVsc2U6
Ci0gICAgcHJpbnQgX19kb2NfXworICAgIHByaW50KF9fZG9jX18pCiAgICAgc3lzLmV4aXQoMSkK
IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2dlbl9ndGVz
dF9wcmVkX2ltcGwucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2dlbl9ndGVz
dF9wcmVkX2ltcGwucHkKaW5kZXggODMwNzEzNGFkYWY0ZGEyYmU4ZmEyMzMyMjkxNTIwZDM5Yzk0
YmIxMi4uM2U3YWIwNDJlYWNiYTEzOGEyYjJhMTc4MWE3MGI3NTRhN2FjMjVjOSAxMDA3NTUKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9nZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvZ2VuX2d0ZXN0X3ByZWRfaW1w
bC5weQpAQCAtMTE3LDcgKzExNyw3IEBAIGRlZiBIZWFkZXJQcmVhbWJsZShuKToKIAogLy8gTWFr
ZXMgc3VyZSB0aGlzIGhlYWRlciBpcyBub3QgaW5jbHVkZWQgYmVmb3JlIGd0ZXN0LmguCiAjaWZu
ZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KLSNlcnJvciBEbyBub3QgaW5jbHVkZSBn
dGVzdF9wcmVkX2ltcGwuaCBkaXJlY3RseS4gIEluY2x1ZGUgZ3Rlc3QuaCBpbnN0ZWFkLgorIyBl
cnJvciBEbyBub3QgaW5jbHVkZSBndGVzdF9wcmVkX2ltcGwuaCBkaXJlY3RseS4gIEluY2x1ZGUg
Z3Rlc3QuaCBpbnN0ZWFkLgogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0hf
CiAKIC8vIFRoaXMgaGVhZGVyIGltcGxlbWVudHMgYSBmYW1pbHkgb2YgZ2VuZXJpYyBwcmVkaWNh
dGUgYXNzZXJ0aW9uCkBAIC0yMzgsMjcgKzIzOCwyNSBAQCBkZWYgSW1wbGVtZW50YXRpb25Gb3JB
cml0eShuKToKICAgaW1wbCArPSAiIiIpIHsKICAgaWYgKHByZWQoJSh2cylzKSkgcmV0dXJuIEFz
c2VydGlvblN1Y2Nlc3MoKTsKIAotICBNZXNzYWdlIG1zZzsKICIiIiAlIERFRlMKIAotICBpbXBs
ICs9ICcgIG1zZyA8PCBwcmVkX3RleHQgPDwgIigiJworICBpbXBsICs9ICcgIHJldHVybiBBc3Nl
cnRpb25GYWlsdXJlKCkgPDwgcHJlZF90ZXh0IDw8ICIoIicKIAogICBpbXBsICs9IEl0ZXIobiwg
IiIiCi0gICAgICA8PCBlJXMiIiIsIHNlcD0nIDw8ICIsICInKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDw8IGUlcyIiIiwgc2VwPScgPDwgIiwgIicpCiAKICAgaW1wbCArPSAnIDw8ICIp
IGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmUiJwogCiAgIGltcGwgKz0gSXRlcihuLCAiIiIKLSAg
ICAgIDw8ICJcXG4iIDw8IGUlcyA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYlcyIiIikKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAiXFxuIiA8PCBlJXMgPDwgIiBldmFsdWF0ZXMgdG8g
IiA8PCB2JXMiIiIpCiAKICAgaW1wbCArPSAiIiI7Ci0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJl
KG1zZyk7CiB9CiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxB
U1NFUlR9X1BSRURfRk9STUFUJShuKXMuCiAvLyBEb24ndCB1c2UgdGhpcyBpbiB5b3VyIGNvZGUu
CiAjZGVmaW5lIEdURVNUX1BSRURfRk9STUFUJShuKXNfKHByZWRfZm9ybWF0LCAlKHZzKXMsIG9u
X2ZhaWx1cmUpXFwKLSAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCglKHZ0cylzLCAlKHZzKXMp
LFxcCisgIEdURVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoJSh2dHMpcywgJSh2cylzKSwgXFwKICAg
ICAgICAgICAgICAgICBvbl9mYWlsdXJlKQogCiAvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVt
ZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEJShuKXMuICBEb24ndCB1c2UKQEAgLTM4Niw4ICsz
ODQsOCBAQCBkZWYgVW5pdFRlc3RQcmVhbWJsZSgpOgogCiAjaW5jbHVkZSA8aW9zdHJlYW0+CiAK
LSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCiAK
IC8vIEEgdXNlci1kZWZpbmVkIGRhdGEgdHlwZS4KIHN0cnVjdCBCb29sIHsKQEAgLTQ3OCwxNSAr
NDc2LDE0IEBAIGRlZiBUZXN0c0ZvckFyaXR5KG4pOgogICBpZiAoUHJlZEZ1bmN0aW9uJShuKXMo
JSh2cylzKSkKICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIHRl
c3Rpbmc6Ok1lc3NhZ2UgbXNnOwotICBtc2cgPDwgIiIiICUgREVGUworICByZXR1cm4gdGVzdGlu
Zzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCAiIiIgJSBERUZTCiAKICAgdGVzdHMgKz0g
SXRlcihuLCAnZSVzJywgc2VwPScgPDwgIiArICIgPDwgJykKIAogICB0ZXN0cyArPSAiIiIKICAg
ICAgIDw8ICIgaXMgZXhwZWN0ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgog
ICAgICAgPDwgJSh2X3N1bSlzIDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZh
aWx1cmUobXNnKTsKIH0KICIiIiAlIERFRlMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc2NyaXB0cy9ndGVzdC1jb25maWcuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zY3JpcHRzL2d0ZXN0LWNvbmZpZy5pbgppbmRleCA5YzcyNjM4NTRiOWY4NjNiNjE4YzcwOGRl
MWVmZTBlOGIxZjcyODBhLi43ODBmODQzMmVmY2MxYWVlYWFhZDA3MDYwODZkM2ZmNjQxMjg1YjY4
IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2d0ZXN0LWNvbmZp
Zy5pbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2d0ZXN0LWNvbmZpZy5p
bgpAQCAtMjA5LDcgKzIwOSw3IEBAIGlmIHRlc3QgIiR7dGhpc19iaW5kaXJ9IiA9ICIke3RoaXNf
YmluZGlyJSR7YmluZGlyfX0iOyB0aGVuCiAgICMgVGhlIHBhdGggdG8gdGhlIHNjcmlwdCBkb2Vz
bid0IGVuZCBpbiB0aGUgYmluZGlyIHNlcXVlbmNlIGZyb20gQXV0b2NvbmYsCiAgICMgYXNzdW1l
IHRoYXQgd2UgYXJlIGluIGEgYnVpbGQgdHJlZS4KICAgYnVpbGRfZGlyPWBkaXJuYW1lICR7dGhp
c19iaW5kaXJ9YAotICBzcmNfZGlyPWBjZCAke3RoaXNfYmluZGlyfS9AdG9wX3NyY2RpckA7IHB3
ZCAtUGAKKyAgc3JjX2Rpcj1gY2QgJHt0aGlzX2JpbmRpcn07IGNkIEB0b3Bfc3JjZGlyQDsgcHdk
IC1QYAogCiAgICMgVE9ETyhjaGFuZGxlcmNAZ29vZ2xlLmNvbSk6IFRoaXMgaXMgYSBkYW5nZXJv
dXMgZGVwZW5kZW5jeSBvbiBsaWJ0b29sLCB3ZQogICAjIHNob3VsZCB3b3JrIHRvIHJlbW92ZSBp
dCwgYW5kL29yIHJlbW92ZSBsaWJ0b29sIGFsdG9nZXRoZXIsIHJlcGxhY2luZyBpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9wdW1wLnB5IGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9wdW1wLnB5CmluZGV4IGYxNWMxYjZjZWI0YjhiMWJiMGJm
NGU4M2UzZWE5M2IzOGM3ODU4MDAuLjVlZmI2NTNjMjA3ZDFmMWMyYWVjYzRkNjkwYmY3MzJlM2Mx
ZDcxYWIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcHVtcC5w
eQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3B1bXAucHkKQEAgLTI5LDcg
KzI5LDcgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSIiInB1bXAgdjAuMSAt
IFByZXR0eSBVc2VmdWwgZm9yIE1ldGEgUHJvZ3JhbW1pbmcuCisiIiJwdW1wIHYwLjIuMCAtIFBy
ZXR0eSBVc2VmdWwgZm9yIE1ldGEgUHJvZ3JhbW1pbmcuCiAKIEEgdG9vbCBmb3IgcHJlcHJvY2Vz
c29yIG1ldGEgcHJvZ3JhbW1pbmcuICBVc2VmdWwgZm9yIGdlbmVyYXRpbmcKIHJlcGV0aXRpdmUg
Ym9pbGVycGxhdGUgY29kZS4gIEVzcGVjaWFsbHkgdXNlZnVsIGZvciB3cml0aW5nIEMrKwpAQCAt
NzgsNyArNzgsNiBAQAogICAgIChyZS5jb21waWxlKHInXCRyYW5nZVxzKycpLCAnJHJhbmdlJyks
CiAgICAgKHJlLmNvbXBpbGUocidcJFtfQS1aYS16XVx3KicpLCAnJGlkJyksCiAgICAgKHJlLmNv
bXBpbGUocidcJFwoXCRcKScpLCAnJCgkKScpLAotICAgIChyZS5jb21waWxlKHInXCRcJC4qJyks
ICckJCcpLAogICAgIChyZS5jb21waWxlKHInXCQnKSwgJyQnKSwKICAgICAocmUuY29tcGlsZShy
J1xbXFtcbj8nKSwgJ1tbJyksCiAgICAgKHJlLmNvbXBpbGUocidcXVxdXG4/JyksICddXScpLApA
QCAtMjI0LDYgKzIyMywxNyBAQCBkZWYgU3ViU3RyaW5nKGxpbmVzLCBzdGFydCwgZW5kKToKICAg
cmV0dXJuICcnLmpvaW4ocmVzdWx0X2xpbmVzKQogCiAKK2RlZiBTdHJpcE1ldGFDb21tZW50cyhz
dHIpOgorICAiIiJTdHJpcCBtZXRhIGNvbW1lbnRzIGZyb20gZWFjaCBsaW5lIGluIHRoZSBnaXZl
biBzdHJpbmcuIiIiCisKKyAgIyBGaXJzdCwgY29tcGxldGVseSByZW1vdmUgbGluZXMgY29udGFp
bmluZyBub3RoaW5nIGJ1dCBhIG1ldGEKKyAgIyBjb21tZW50LCBpbmNsdWRpbmcgdGhlIHRyYWls
aW5nIFxuLgorICBzdHIgPSByZS5zdWIocideXHMqXCRcJC4qXG4nLCAnJywgc3RyKQorCisgICMg
VGhlbiwgcmVtb3ZlIG1ldGEgY29tbWVudHMgZnJvbSBjb250ZW50ZnVsIGxpbmVzLgorICByZXR1
cm4gcmUuc3ViKHInXHMqXCRcJC4qJywgJycsIHN0cikKKworCiBkZWYgTWFrZVRva2VuKGxpbmVz
LCBzdGFydCwgZW5kLCB0b2tlbl90eXBlKToKICAgIiIiQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBv
ZiBUb2tlbi4iIiIKIApAQCAtMzExLDExICszMjEsNyBAQCBkZWYgVG9rZW5pemVMaW5lcyhsaW5l
cywgcG9zKToKICAgICAgIHByZXZfdG9rZW4gPSBNYWtlVG9rZW4obGluZXMsIHBvcywgZm91bmQu
c3RhcnQsICdjb2RlJykKICAgICAgIHByZXZfdG9rZW5fcnN0cmlwcGVkID0gUlN0cmlwTmV3TGlu
ZUZyb21Ub2tlbihwcmV2X3Rva2VuKQogCi0gICAgaWYgZm91bmQudG9rZW5fdHlwZSA9PSAnJCQn
OiAgIyBBIG1ldGEgY29tbWVudC4KLSAgICAgIGlmIHByZXZfdG9rZW5fcnN0cmlwcGVkOgotICAg
ICAgICB5aWVsZCBwcmV2X3Rva2VuX3JzdHJpcHBlZAotICAgICAgcG9zID0gQ3Vyc29yKGZvdW5k
LmVuZC5saW5lICsgMSwgMCkKLSAgICBlbGlmIGZvdW5kLnRva2VuX3R5cGUgPT0gJyR2YXInOgor
ICAgIGlmIGZvdW5kLnRva2VuX3R5cGUgPT0gJyR2YXInOgogICAgICAgaWYgcHJldl90b2tlbl9y
c3RyaXBwZWQ6CiAgICAgICAgIHlpZWxkIHByZXZfdG9rZW5fcnN0cmlwcGVkCiAgICAgICB5aWVs
ZCBmb3VuZApAQCAtMzc0LDggKzM4MCwxMSBAQCBkZWYgVG9rZW5pemVMaW5lcyhsaW5lcywgcG9z
KToKIAogCiBkZWYgVG9rZW5pemUocyk6Ci0gIGxpbmVzID0gcy5zcGxpdGxpbmVzKFRydWUpCi0g
IHJldHVybiBUb2tlbml6ZUxpbmVzKGxpbmVzLCBDdXJzb3IoMCwgMCkpCisgICIiIkEgZ2VuZXJh
dG9yIHRoYXQgeWllbGRzIHRoZSB0b2tlbnMgaW4gdGhlIGdpdmVuIHN0cmluZy4iIiIKKyAgaWYg
cyAhPSAnJzoKKyAgICBsaW5lcyA9IHMuc3BsaXRsaW5lcyhUcnVlKQorICAgIGZvciB0b2tlbiBp
biBUb2tlbml6ZUxpbmVzKGxpbmVzLCBDdXJzb3IoMCwgMCkpOgorICAgICAgeWllbGQgdG9rZW4K
IAogCiBjbGFzcyBDb2RlTm9kZToKQEAgLTU2NSwxMSArNTc0LDkgQEAgZGVmIFBhcnNlQ29kZU5v
ZGUodG9rZW5zKToKICAgcmV0dXJuIENvZGVOb2RlKGF0b21pY19jb2RlX2xpc3QpCiAKIAotZGVm
IENvbnZlcnQoZmlsZV9wYXRoKToKLSAgcyA9IGZpbGUoZmlsZV9wYXRoLCAncicpLnJlYWQoKQot
ICB0b2tlbnMgPSBbXQotICBmb3IgdG9rZW4gaW4gVG9rZW5pemUocyk6Ci0gICAgdG9rZW5zLmFw
cGVuZCh0b2tlbikKK2RlZiBQYXJzZVRvQVNUKHB1bXBfc3JjX3RleHQpOgorICAiIiJDb252ZXJ0
IHRoZSBnaXZlbiBQdW1wIHNvdXJjZSB0ZXh0IGludG8gYW4gQVNULiIiIgorICB0b2tlbnMgPSBs
aXN0KFRva2VuaXplKHB1bXBfc3JjX3RleHQpKQogICBjb2RlX25vZGUgPSBQYXJzZUNvZGVOb2Rl
KHRva2VucykKICAgcmV0dXJuIGNvZGVfbm9kZQogCkBAIC02OTcsMTQgKzcwNCwxNCBAQCBkZWYg
UnVuQ29kZShlbnYsIGNvZGVfbm9kZSwgb3V0cHV0KToKICAgICBSdW5BdG9taWNDb2RlKGVudiwg
YXRvbWljX2NvZGUsIG91dHB1dCkKIAogCi1kZWYgSXNDb21tZW50KGN1cl9saW5lKToKK2RlZiBJ
c1NpbmdsZUxpbmVDb21tZW50KGN1cl9saW5lKToKICAgcmV0dXJuICcvLycgaW4gY3VyX2xpbmUK
IAogCi1kZWYgSXNJblByZXByb2Nlc3NvckRpcmV2YXRpdmUocHJldl9saW5lcywgY3VyX2xpbmUp
OgorZGVmIElzSW5QcmVwcm9jZXNzb3JEaXJlY3RpdmUocHJldl9saW5lcywgY3VyX2xpbmUpOgog
ICBpZiBjdXJfbGluZS5sc3RyaXAoKS5zdGFydHN3aXRoKCcjJyk6CiAgICAgcmV0dXJuIFRydWUK
LSAgcmV0dXJuIHByZXZfbGluZXMgIT0gW10gYW5kIHByZXZfbGluZXNbLTFdLmVuZHN3aXRoKCdc
XCcpCisgIHJldHVybiBwcmV2X2xpbmVzIGFuZCBwcmV2X2xpbmVzWy0xXS5lbmRzd2l0aCgnXFwn
KQogCiAKIGRlZiBXcmFwQ29tbWVudChsaW5lLCBvdXRwdXQpOgpAQCAtNzYxLDcgKzc2OCw3IEBA
IGRlZiBXcmFwQ29kZShsaW5lLCBsaW5lX2NvbmNhdCwgb3V0cHV0KToKICAgICBvdXRwdXQuYXBw
ZW5kKHByZWZpeCArIGN1cl9saW5lLnN0cmlwKCkpCiAKIAotZGVmIFdyYXBQcmVwcm9jZXNzb3JE
aXJldmF0aXZlKGxpbmUsIG91dHB1dCk6CitkZWYgV3JhcFByZXByb2Nlc3NvckRpcmVjdGl2ZShs
aW5lLCBvdXRwdXQpOgogICBXcmFwQ29kZShsaW5lLCAnIFxcJywgb3V0cHV0KQogCiAKQEAgLTc2
OSwyOSArNzc2LDM3IEBAIGRlZiBXcmFwUGxhaW5Db2RlKGxpbmUsIG91dHB1dCk6CiAgIFdyYXBD
b2RlKGxpbmUsICcnLCBvdXRwdXQpCiAKIAotZGVmIElzSGVhZGVyR3VhcmRPckluY2x1ZGUobGlu
ZSk6CitkZWYgSXNNdWx0aUxpbmVJV1lVUHJhZ21hKGxpbmUpOgorICByZXR1cm4gcmUuc2VhcmNo
KHInL1wqIElXWVUgcHJhZ21hOiAnLCBsaW5lKQorCisKK2RlZiBJc0hlYWRlckd1YXJkSW5jbHVk
ZU9yT25lTGluZUlXWVVQcmFnbWEobGluZSk6CiAgIHJldHVybiAocmUubWF0Y2gocideIyhpZm5k
ZWZ8ZGVmaW5lfGVuZGlmXHMqLy8pXHMqW1x3X10rXHMqJCcsIGxpbmUpIG9yCi0gICAgICAgICAg
cmUubWF0Y2gocideI2luY2x1ZGVccycsIGxpbmUpKQorICAgICAgICAgIHJlLm1hdGNoKHInXiNp
bmNsdWRlXHMnLCBsaW5lKSBvcgorICAgICAgICAgICMgRG9uJ3QgYnJlYWsgSVdZVSBwcmFnbWFz
LCBlaXRoZXI7IHRoYXQgY2F1c2VzIGl3eXUucHkgcHJvYmxlbXMuCisgICAgICAgICAgcmUuc2Vh
cmNoKHInLy8gSVdZVSBwcmFnbWE6ICcsIGxpbmUpKQogCiAKIGRlZiBXcmFwTG9uZ0xpbmUobGlu
ZSwgb3V0cHV0KToKICAgbGluZSA9IGxpbmUucnN0cmlwKCkKICAgaWYgbGVuKGxpbmUpIDw9IDgw
OgogICAgIG91dHB1dC5hcHBlbmQobGluZSkKLSAgZWxpZiBJc0NvbW1lbnQobGluZSk6Ci0gICAg
aWYgSXNIZWFkZXJHdWFyZE9ySW5jbHVkZShsaW5lKToKLSAgICAgICMgVGhlIHN0eWxlIGd1aWRl
IG1hZGUgYW4gZXhjZXB0aW9uIHRvIGFsbG93IGxvbmcgaGVhZGVyIGd1YXJkIGxpbmVzCi0gICAg
ICAjIGFuZCBpbmNsdWRlcy4KKyAgZWxpZiBJc1NpbmdsZUxpbmVDb21tZW50KGxpbmUpOgorICAg
IGlmIElzSGVhZGVyR3VhcmRJbmNsdWRlT3JPbmVMaW5lSVdZVVByYWdtYShsaW5lKToKKyAgICAg
ICMgVGhlIHN0eWxlIGd1aWRlIG1hZGUgYW4gZXhjZXB0aW9uIHRvIGFsbG93IGxvbmcgaGVhZGVy
IGd1YXJkIGxpbmVzLAorICAgICAgIyBpbmNsdWRlcyBhbmQgSVdZVSBwcmFnbWFzLgogICAgICAg
b3V0cHV0LmFwcGVuZChsaW5lKQogICAgIGVsc2U6CiAgICAgICBXcmFwQ29tbWVudChsaW5lLCBv
dXRwdXQpCi0gIGVsaWYgSXNJblByZXByb2Nlc3NvckRpcmV2YXRpdmUob3V0cHV0LCBsaW5lKToK
LSAgICBpZiBJc0hlYWRlckd1YXJkT3JJbmNsdWRlKGxpbmUpOgotICAgICAgIyBUaGUgc3R5bGUg
Z3VpZGUgbWFkZSBhbiBleGNlcHRpb24gdG8gYWxsb3cgbG9uZyBoZWFkZXIgZ3VhcmQgbGluZXMK
LSAgICAgICMgYW5kIGluY2x1ZGVzLgorICBlbGlmIElzSW5QcmVwcm9jZXNzb3JEaXJlY3RpdmUo
b3V0cHV0LCBsaW5lKToKKyAgICBpZiBJc0hlYWRlckd1YXJkSW5jbHVkZU9yT25lTGluZUlXWVVQ
cmFnbWEobGluZSk6CisgICAgICAjIFRoZSBzdHlsZSBndWlkZSBtYWRlIGFuIGV4Y2VwdGlvbiB0
byBhbGxvdyBsb25nIGhlYWRlciBndWFyZCBsaW5lcywKKyAgICAgICMgaW5jbHVkZXMgYW5kIElX
WVUgcHJhZ21hcy4KICAgICAgIG91dHB1dC5hcHBlbmQobGluZSkKICAgICBlbHNlOgotICAgICAg
V3JhcFByZXByb2Nlc3NvckRpcmV2YXRpdmUobGluZSwgb3V0cHV0KQorICAgICAgV3JhcFByZXBy
b2Nlc3NvckRpcmVjdGl2ZShsaW5lLCBvdXRwdXQpCisgIGVsaWYgSXNNdWx0aUxpbmVJV1lVUHJh
Z21hKGxpbmUpOgorICAgIG91dHB1dC5hcHBlbmQobGluZSkKICAgZWxzZToKICAgICBXcmFwUGxh
aW5Db2RlKGxpbmUsIG91dHB1dCkKIApAQCAtODA1LDE2ICs4MjAsMjEgQEAgZGVmIEJlYXV0aWZ5
Q29kZShzdHJpbmcpOgogICByZXR1cm4gJ1xuJy5qb2luKG91dHB1dDIpICsgJ1xuJwogCiAKK2Rl
ZiBDb252ZXJ0RnJvbVB1bXBTb3VyY2Uoc3JjX3RleHQpOgorICAiIiJSZXR1cm4gdGhlIHRleHQg
Z2VuZXJhdGVkIGZyb20gdGhlIGdpdmVuIFB1bXAgc291cmNlIHRleHQuIiIiCisgIGFzdCA9IFBh
cnNlVG9BU1QoU3RyaXBNZXRhQ29tbWVudHMoc3JjX3RleHQpKQorICBvdXRwdXQgPSBPdXRwdXQo
KQorICBSdW5Db2RlKEVudigpLCBhc3QsIG91dHB1dCkKKyAgcmV0dXJuIEJlYXV0aWZ5Q29kZShv
dXRwdXQuc3RyaW5nKQorCisKIGRlZiBtYWluKGFyZ3YpOgogICBpZiBsZW4oYXJndikgPT0gMToK
ICAgICBwcmludCBfX2RvY19fCiAgICAgc3lzLmV4aXQoMSkKIAogICBmaWxlX3BhdGggPSBhcmd2
Wy0xXQotICBhc3QgPSBDb252ZXJ0KGZpbGVfcGF0aCkKLSAgb3V0cHV0ID0gT3V0cHV0KCkKLSAg
UnVuQ29kZShFbnYoKSwgYXN0LCBvdXRwdXQpCi0gIG91dHB1dF9zdHIgPSBCZWF1dGlmeUNvZGUo
b3V0cHV0LnN0cmluZykKKyAgb3V0cHV0X3N0ciA9IENvbnZlcnRGcm9tUHVtcFNvdXJjZShmaWxl
KGZpbGVfcGF0aCwgJ3InKS5yZWFkKCkpCiAgIGlmIGZpbGVfcGF0aC5lbmRzd2l0aCgnLnB1bXAn
KToKICAgICBvdXRwdXRfZmlsZV9wYXRoID0gZmlsZV9wYXRoWzotNV0KICAgZWxzZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcmVsZWFzZV9kb2NzLnB5IGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9yZWxlYXNlX2RvY3MucHkKbmV3IGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTI5MTM0N2Y2NzRhZmQ3YWY4NDk2MTVhNzViMTM4ZDUyOTNmOWNmNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcmVsZWFzZV9kb2NzLnB5CkBA
IC0wLDAgKzEsMTU4IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIw
MTMgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyIiIlNjcmlwdCBmb3IgYnJhbmNoaW5nIEdvb2dsZSBUZXN0L01vY2sgd2lraSBwYWdlcyBmb3Ig
YSBuZXcgdmVyc2lvbi4KKworU1lOT1BTSVMKKyAgICAgICByZWxlYXNlX2RvY3MucHkgTkVXX1JF
TEVBU0VfVkVSU0lPTgorCisgICAgICAgR29vZ2xlIFRlc3QgYW5kIEdvb2dsZSBNb2NrJ3MgZXh0
ZXJuYWwgdXNlciBkb2N1bWVudGF0aW9uIGlzIGluCisgICAgICAgaW50ZXJsaW5rZWQgd2lraSBm
aWxlcy4gIFdoZW4gd2UgcmVsZWFzZSBhIG5ldyB2ZXJzaW9uIG9mCisgICAgICAgR29vZ2xlIFRl
c3Qgb3IgR29vZ2xlIE1vY2ssIHdlIG5lZWQgdG8gYnJhbmNoIHRoZSB3aWtpIGZpbGVzCisgICAg
ICAgc3VjaCB0aGF0IHVzZXJzIG9mIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiBHb29nbGUgVGVzdC9N
b2NrIGNhbgorICAgICAgIGxvb2sgdXAgZG9jdW1lbmF0aW9uIHJlbGV2YW50IGZvciB0aGF0IHZl
cnNpb24uICBUaGlzIHNjcmlwdAorICAgICAgIGF1dG9tYXRlcyB0aGF0IHByb2Nlc3MgYnk6CisK
KyAgICAgICAgIC0gYnJhbmNoaW5nIHRoZSBjdXJyZW50IHdpa2kgcGFnZXMgKHdoaWNoIGRvY3Vt
ZW50IHRoZQorICAgICAgICAgICBiZWhhdmlvciBvZiB0aGUgU1ZOIHRydW5rIGhlYWQpIHRvIHBh
Z2VzIGZvciB0aGUgc3BlY2lmaWVkCisgICAgICAgICAgIHZlcnNpb24gKGUuZy4gYnJhbmNoaW5n
IEZBUS53aWtpIHRvIFYyXzZfRkFRLndpa2kgd2hlbgorICAgICAgICAgICBORVdfUkVMRUFTRV9W
RVJTSU9OIGlzIDIuNik7CisgICAgICAgICAtIHVwZGF0aW5nIHRoZSBsaW5rcyBpbiB0aGUgYnJh
bmNoZWQgZmlsZXMgdG8gcG9pbnQgdG8gdGhlIGJyYW5jaGVkCisgICAgICAgICAgIHZlcnNpb24g
KGUuZy4gYSBsaW5rIGluIFYyXzZfRkFRLndpa2kgdGhhdCBwb2ludGVkIHRvCisgICAgICAgICAg
IFByaW1lci53aWtpI0FuY2hvciB3aWxsIG5vdyBwb2ludCB0byBWMl82X1ByaW1lci53aWtpI0Fu
Y2hvcikuCisKKyAgICAgICBOT1RFOiBORVdfUkVMRUFTRV9WRVJTSU9OIG11c3QgYmUgYSBORVcg
dmVyc2lvbiBudW1iZXIgZm9yCisgICAgICAgd2hpY2ggdGhlIHdpa2kgcGFnZXMgZG9uJ3QgeWV0
IGV4aXN0OyBvdGhlcndpc2UgeW91J2xsIGdldCBTVk4KKyAgICAgICBlcnJvcnMgbGlrZSAic3Zu
OiBQYXRoICdWMV83X1B1bXBNYW51YWwud2lraScgaXMgbm90IGEKKyAgICAgICBkaXJlY3Rvcnki
IHdoZW4gcnVubmluZyB0aGUgc2NyaXB0LgorCitFWEFNUExFCisgICAgICAgJCBjZCBQQVRIL1RP
L0dURVNUX1NWTl9XT1JLU1BBQ0UvdHJ1bmsKKyAgICAgICAkIHNjcmlwdHMvcmVsZWFzZV9kb2Nz
LnB5IDIuNiAgIyBjcmVhdGUgd2lraSBwYWdlcyBmb3IgdjIuNgorICAgICAgICQgc3ZuIHN0YXR1
cyAgICAgICAgICAgICAgICAgICAjIHZlcmlmeSB0aGUgZmlsZSBsaXN0CisgICAgICAgJCBzdm4g
ZGlmZiAgICAgICAgICAgICAgICAgICAgICMgdmVyaWZ5IHRoZSBmaWxlIGNvbnRlbnRzCisgICAg
ICAgJCBzdm4gY29tbWl0IC1tICJyZWxlYXNlIHdpa2kgcGFnZXMgZm9yIHYyLjYiCisiIiIKKwor
X19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKKworaW1wb3J0IG9z
CitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKworaW1wb3J0IGNvbW1vbgorCisKKyMgV2lraSBwYWdl
cyB0aGF0IHNob3VsZG4ndCBiZSBicmFuY2hlZCBmb3IgZXZlcnkgZ3Rlc3QvZ21vY2sgcmVsZWFz
ZS4KK0dURVNUX1VOVkVSU0lPTkVEX1dJS0lTID0gWydEZXZHdWlkZS53aWtpJ10KK0dNT0NLX1VO
VkVSU0lPTkVEX1dJS0lTID0gWworICAgICdEZXNpZ25Eb2Mud2lraScsCisgICAgJ0Rldkd1aWRl
Lndpa2knLAorICAgICdLbm93bklzc3Vlcy53aWtpJworICAgIF0KKworCitkZWYgRHJvcFdpa2lT
dWZmaXgod2lraV9maWxlbmFtZSk6CisgICIiIlJlbW92ZXMgdGhlIC53aWtpIHN1ZmZpeCAoaWYg
YW55KSBmcm9tIHRoZSBnaXZlbiBmaWxlbmFtZS4iIiIKKworICByZXR1cm4gKHdpa2lfZmlsZW5h
bWVbOi1sZW4oJy53aWtpJyldIGlmIHdpa2lfZmlsZW5hbWUuZW5kc3dpdGgoJy53aWtpJykKKyAg
ICAgICAgICBlbHNlIHdpa2lfZmlsZW5hbWUpCisKKworY2xhc3MgV2lraUJyYW5jaGVyKG9iamVj
dCk6CisgICIiIkJyYW5jaGVzIC4uLiIiIgorCisgIGRlZiBfX2luaXRfXyhzZWxmLCBkb3RfdmVy
c2lvbik6CisgICAgc2VsZi5wcm9qZWN0LCBzdm5fcm9vdF9wYXRoID0gY29tbW9uLkdldFN2bklu
Zm8oKQorICAgIGlmIHNlbGYucHJvamVjdCBub3QgaW4gKCdnb29nbGV0ZXN0JywgJ2dvb2dsZW1v
Y2snKToKKyAgICAgIHN5cy5leGl0KCdUaGlzIHNjcmlwdCBtdXN0IGJlIHJ1biBpbiBhIGd0ZXN0
IG9yIGdtb2NrIFNWTiB3b3Jrc3BhY2UuJykKKyAgICBzZWxmLndpa2lfZGlyID0gc3ZuX3Jvb3Rf
cGF0aCArICcvd2lraScKKyAgICAjIFR1cm4gJzIuNicgdG8gJ1YyXzZfJy4KKyAgICBzZWxmLnZl
cnNpb25fcHJlZml4ID0gJ1YnICsgZG90X3ZlcnNpb24ucmVwbGFjZSgnLicsICdfJykgKyAnXycK
KyAgICBzZWxmLmZpbGVzX3RvX2JyYW5jaCA9IHNlbGYuR2V0RmlsZXNUb0JyYW5jaCgpCisgICAg
cGFnZV9uYW1lcyA9IFtEcm9wV2lraVN1ZmZpeChmKSBmb3IgZiBpbiBzZWxmLmZpbGVzX3RvX2Jy
YW5jaF0KKyAgICAjIEEgbGluayB0byBGb28ud2lraSBpcyBpbiBvbmUgb2YgdGhlIGZvbGxvd2lu
ZyBmb3JtczoKKyAgICAjICAgW0ZvbyB3b3Jkc10KKyAgICAjICAgW0ZvbyNBbmNob3Igd29yZHNd
CisgICAgIyAgIFtodHRwOi8vY29kZS5nb29nbGUuY29tLy4uLi93aWtpL0ZvbyB3b3Jkc10KKyAg
ICAjICAgW2h0dHA6Ly9jb2RlLmdvb2dsZS5jb20vLi4uL3dpa2kvRm9vI0FuY2hvciB3b3Jkc10K
KyAgICAjIFdlIHdhbnQgdG8gcmVwbGFjZSAnRm9vJyB3aXRoICdWMl82X0ZvbycgaW4gdGhlIGFi
b3ZlIGNhc2VzLgorICAgIHNlbGYuc2VhcmNoX2Zvcl9yZSA9IHJlLmNvbXBpbGUoCisgICAgICAg
ICMgVGhpcyByZWdleCBtYXRjaGVzIGVpdGhlcgorICAgICAgICAjICAgW0ZvbworICAgICAgICAj
IG9yCisgICAgICAgICMgICAvd2lraS9Gb28KKyAgICAgICAgIyBmb2xsb3dlZCBieSBhIHNwYWNl
IG9yIGEgIywgd2hlcmUgRm9vIGlzIHRoZSBuYW1lIG9mIGFuCisgICAgICAgICMgdW52ZXJzaW9u
ZWQgd2lraSBwYWdlLgorICAgICAgICByJyhcW3wvd2lraS8pKCVzKShbICNdKScgJSAnfCcuam9p
bihwYWdlX25hbWVzKSkKKyAgICBzZWxmLnJlcGxhY2Vfd2l0aCA9IHInXDElc1wyXDMnICUgKHNl
bGYudmVyc2lvbl9wcmVmaXgsKQorCisgIGRlZiBHZXRGaWxlc1RvQnJhbmNoKHNlbGYpOgorICAg
ICIiIlJldHVybnMgYSBsaXN0IG9mIC53aWtpIGZpbGUgbmFtZXMgdGhhdCBuZWVkIHRvIGJlIGJy
YW5jaGVkLiIiIgorCisgICAgdW52ZXJzaW9uZWRfd2lraXMgPSAoR1RFU1RfVU5WRVJTSU9ORURf
V0lLSVMgaWYgc2VsZi5wcm9qZWN0ID09ICdnb29nbGV0ZXN0JworICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgR01PQ0tfVU5WRVJTSU9ORURfV0lLSVMpCisgICAgcmV0dXJuIFtmIGZvciBm
IGluIG9zLmxpc3RkaXIoc2VsZi53aWtpX2RpcikKKyAgICAgICAgICAgIGlmIChmLmVuZHN3aXRo
KCcud2lraScpIGFuZAorICAgICAgICAgICAgICAgIG5vdCByZS5tYXRjaChyJ15WXGQnLCBmKSBh
bmQgICMgRXhjbHVkZWQgdmVyc2lvbmVkIC53aWtpIGZpbGVzLgorICAgICAgICAgICAgICAgIGYg
bm90IGluIHVudmVyc2lvbmVkX3dpa2lzKV0KKworICBkZWYgQnJhbmNoRmlsZXMoc2VsZik6Cisg
ICAgIiIiQnJhbmNoZXMgdGhlIC53aWtpIGZpbGVzIG5lZWRlZCB0byBiZSBicmFuY2hlZC4iIiIK
KworICAgIHByaW50ICdCcmFuY2hpbmcgJWQgLndpa2kgZmlsZXM6JyAlIChsZW4oc2VsZi5maWxl
c190b19icmFuY2gpLCkKKyAgICBvcy5jaGRpcihzZWxmLndpa2lfZGlyKQorICAgIGZvciBmIGlu
IHNlbGYuZmlsZXNfdG9fYnJhbmNoOgorICAgICAgY29tbWFuZCA9ICdzdm4gY3AgJXMgJXMlcycg
JSAoZiwgc2VsZi52ZXJzaW9uX3ByZWZpeCwgZikKKyAgICAgIHByaW50IGNvbW1hbmQKKyAgICAg
IG9zLnN5c3RlbShjb21tYW5kKQorCisgIGRlZiBVcGRhdGVMaW5rc0luQnJhbmNoZWRGaWxlcyhz
ZWxmKToKKworICAgIGZvciBmIGluIHNlbGYuZmlsZXNfdG9fYnJhbmNoOgorICAgICAgc291cmNl
X2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi53aWtpX2RpciwgZikKKyAgICAgIHZlcnNpb25lZF9m
aWxlID0gb3MucGF0aC5qb2luKHNlbGYud2lraV9kaXIsIHNlbGYudmVyc2lvbl9wcmVmaXggKyBm
KQorICAgICAgcHJpbnQgJ1VwZGF0aW5nIGxpbmtzIGluICVzLicgJSAodmVyc2lvbmVkX2ZpbGUs
KQorICAgICAgdGV4dCA9IGZpbGUoc291cmNlX2ZpbGUsICdyJykucmVhZCgpCisgICAgICBuZXdf
dGV4dCA9IHNlbGYuc2VhcmNoX2Zvcl9yZS5zdWIoc2VsZi5yZXBsYWNlX3dpdGgsIHRleHQpCisg
ICAgICBmaWxlKHZlcnNpb25lZF9maWxlLCAndycpLndyaXRlKG5ld190ZXh0KQorCisKK2RlZiBt
YWluKCk6CisgIGlmIGxlbihzeXMuYXJndikgIT0gMjoKKyAgICBzeXMuZXhpdChfX2RvY19fKQor
CisgIGJyYW5jaGVyID0gV2lraUJyYW5jaGVyKHN5cy5hcmd2WzFdKQorICBicmFuY2hlci5CcmFu
Y2hGaWxlcygpCisgIGJyYW5jaGVyLlVwZGF0ZUxpbmtzSW5CcmFuY2hlZEZpbGVzKCkKKworCitp
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBtYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvdGVzdC9NYWtlZmlsZSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NjcmlwdHMvdGVzdC9NYWtlZmlsZQppbmRleCBmZmMwYzkwYWQ5OTU3MmRmOTRhZmI1
YjY0MTM2YTljMjk0ODhhZTA2Li5jZGZmNTg0NjM3YjdhNmU5ZGYxZmE0M2NlOGY1ODhjNDM4MTVl
NTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3Rlc3QvTWFr
ZWZpbGUKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy90ZXN0L01ha2VmaWxl
CkBAIC0yMSw3ICsyMSw5IEBAIFNBTVBMRV9ESVIgPSAuLi8uLi9zYW1wbGVzCiBHVEVTVF9NQUlO
X0NDID0gLi4vLi4vc3JjL2d0ZXN0X21haW4uY2MKIAogIyBGbGFncyBwYXNzZWQgdG8gdGhlIHBy
ZXByb2Nlc3Nvci4KLUNQUEZMQUdTICs9IC1JJChGVVNFRF9HVEVTVF9ESVIpCisjIFdlIGhhdmUg
bm8gaWRlYSBoZXJlIHdoZXRoZXIgcHRocmVhZHMgaXMgYXZhaWxhYmxlIGluIHRoZSBzeXN0ZW0s
IHNvCisjIGRpc2FibGUgaXRzIHVzZS4KK0NQUEZMQUdTICs9IC1JJChGVVNFRF9HVEVTVF9ESVIp
IC1ER1RFU1RfSEFTX1BUSFJFQUQ9MAogCiAjIEZsYWdzIHBhc3NlZCB0byB0aGUgQysrIGNvbXBp
bGVyLgogQ1hYRkxBR1MgKz0gLWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NyYy9ndGVzdC1hbGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtYWxs
LmNjCmluZGV4IGZlMzQ3NjVmYjY3MjE4YTU2Y2I1ZTI1MmE3MGU2OGEzNmJjODhkMDcuLjBhOWNl
ZTUyMjMzMzI4YjFiYWZkYzRiYzQwMjY5OWZhMTQwMzhmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1hbGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc3JjL2d0ZXN0LWFsbC5jYwpAQCAtMzYsMTIgKzM2LDEzIEBACiAKIC8vIFRoaXMgbGlu
ZSBlbnN1cmVzIHRoYXQgZ3Rlc3QuaCBjYW4gYmUgY29tcGlsZWQgb24gaXRzIG93biwgZXZlbgog
Ly8gd2hlbiBpdCdzIGZ1c2VkLgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKIAogLy8gVGhlIGZvbGxvd2luZyBsaW5lcyBwdWxsIGluIHRoZSByZWFs
IGd0ZXN0ICouY2MgZmlsZXMuCiAjaW5jbHVkZSAic3JjL2d0ZXN0LmNjIgogI2luY2x1ZGUgInNy
Yy9ndGVzdC1kZWF0aC10ZXN0LmNjIgogI2luY2x1ZGUgInNyYy9ndGVzdC1maWxlcGF0aC5jYyIK
ICNpbmNsdWRlICJzcmMvZ3Rlc3QtcG9ydC5jYyIKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtcHJpbnRl
cnMuY2MiCiAjaW5jbHVkZSAic3JjL2d0ZXN0LXRlc3QtcGFydC5jYyIKICNpbmNsdWRlICJzcmMv
Z3Rlc3QtdHlwZWQtdGVzdC5jYyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NyYy9ndGVzdC1kZWF0aC10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0
ZXN0LWRlYXRoLXRlc3QuY2MKaW5kZXggMGNmNzgyNWJjYWM3OWZhMzVkMGExMjQ4ZTIzMDhhMjRh
YTYyN2I4YS4uYTAxYTM2OTgzMDg3ODI4MjFlNGY5MGY0MTI4NTEyOGI3NWM4ZTNiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MKQEAgLTMx
LDM3ICszMSw0NyBAQAogLy8KIC8vIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGRlYXRoIHRlc3RzLgog
Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2lu
dGVybmFsL2d0ZXN0LXBvcnQuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC1kZWF0aC10ZXN0Lmgi
CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorI2luY2x1ZGUgImd0ZXN0
L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oIgogCiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKIAot
I2lmIEdURVNUX09TX01BQwotI2luY2x1ZGUgPGNydF9leHRlcm5zLmg+Ci0jZW5kaWYgIC8vIEdU
RVNUX09TX01BQworIyBpZiBHVEVTVF9PU19NQUMKKyMgIGluY2x1ZGUgPGNydF9leHRlcm5zLmg+
CisjIGVuZGlmICAvLyBHVEVTVF9PU19NQUMKIAotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVk
ZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxzdGRhcmcuaD4KKyMg
aW5jbHVkZSA8ZXJybm8uaD4KKyMgaW5jbHVkZSA8ZmNudGwuaD4KKyMgaW5jbHVkZSA8bGltaXRz
Lmg+CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2Vsc2UK
LSNpbmNsdWRlIDxzeXMvbW1hbi5oPgotI2luY2x1ZGUgPHN5cy93YWl0Lmg+Ci0jZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfTElOVVgKKyMgIGluY2x1ZGUgPHNpZ25h
bC5oPgorIyBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKKworIyBpbmNsdWRlIDxzdGRhcmcuaD4K
KworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisjICBpbmNsdWRlIDx3aW5kb3dzLmg+CisjIGVsc2UK
KyMgIGluY2x1ZGUgPHN5cy9tbWFuLmg+CisjICBpbmNsdWRlIDxzeXMvd2FpdC5oPgorIyBlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjIGlmIEdURVNUX09TX1FOWAorIyAgaW5jbHVkZSA8
c3Bhd24uaD4KKyMgZW5kaWYgIC8vIEdURVNUX09TX1FOWAogCiAjZW5kaWYgIC8vIEdURVNUX0hB
U19ERUFUSF9URVNUCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1tZXNzYWdlLmg+Ci0jaW5jbHVk
ZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qt
bWVzc2FnZS5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgogCiAv
LyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUg
VGVzdCdzCiAvLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50
ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIg
ZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50
YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgorLy8g
aW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sg
ZXhpc3RzIHRvCisvLyBwcmV2ZW50IHRoZSBhY2NpZGVudGFsIGluY2x1c2lvbiBvZiBndGVzdC1p
bnRlcm5hbC1pbmwuaCBpbiB0aGUKKy8vIHVzZXIncyBjb2RlLgogI2RlZmluZSBHVEVTVF9JTVBM
RU1FTlRBVElPTl8gMQogI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKICN1bmRl
ZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KQEAgLTEwMCwzNiArMTEwLDc5IEBAIEdURVNUX0RFRklO
RV9zdHJpbmdfKAogICAgICJJbmRpY2F0ZXMgdGhlIGZpbGUsIGxpbmUgbnVtYmVyLCB0ZW1wb3Jh
bCBpbmRleCBvZiAiCiAgICAgInRoZSBzaW5nbGUgZGVhdGggdGVzdCB0byBydW4sIGFuZCBhIGZp
bGUgZGVzY3JpcHRvciB0byAiCiAgICAgIndoaWNoIGEgc3VjY2VzcyBjb2RlIG1heSBiZSBzZW50
LCBhbGwgc2VwYXJhdGVkIGJ5ICIKLSAgICAiY29sb25zLiAgVGhpcyBmbGFnIGlzIHNwZWNpZmll
ZCBpZiBhbmQgb25seSBpZiB0aGUgY3VycmVudCAiCisgICAgInRoZSAnfCcgY2hhcmFjdGVycy4g
IFRoaXMgZmxhZyBpcyBzcGVjaWZpZWQgaWYgYW5kIG9ubHkgaWYgdGhlIGN1cnJlbnQgIgogICAg
ICJwcm9jZXNzIGlzIGEgc3ViLXByb2Nlc3MgbGF1bmNoZWQgZm9yIHJ1bm5pbmcgYSB0aHJlYWQt
c2FmZSAiCiAgICAgImRlYXRoIHRlc3QuICBGT1IgSU5URVJOQUwgVVNFIE9OTFkuIik7CiB9ICAv
LyBuYW1lc3BhY2UgaW50ZXJuYWwKIAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCiAKK25hbWVz
cGFjZSBpbnRlcm5hbCB7CisKKy8vIFZhbGlkIG9ubHkgZm9yIGZhc3QgZGVhdGggdGVzdHMuIElu
ZGljYXRlcyB0aGUgY29kZSBpcyBydW5uaW5nIGluIHRoZQorLy8gY2hpbGQgcHJvY2VzcyBvZiBh
IGZhc3Qgc3R5bGUgZGVhdGggdGVzdC4KKyMgaWYgIUdURVNUX09TX1dJTkRPV1MKK3N0YXRpYyBi
b29sIGdfaW5fZmFzdF9kZWF0aF90ZXN0X2NoaWxkID0gZmFsc2U7CisjIGVuZGlmCisKKy8vIFJl
dHVybnMgYSBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgY2FsbGVyIGlzIGN1
cnJlbnRseQorLy8gZXhlY3V0aW5nIGluIHRoZSBjb250ZXh0IG9mIHRoZSBkZWF0aCB0ZXN0IGNo
aWxkIHByb2Nlc3MuICBUb29scyBzdWNoIGFzCisvLyBWYWxncmluZCBoZWFwIGNoZWNrZXJzIG1h
eSBuZWVkIHRoaXMgdG8gbW9kaWZ5IHRoZWlyIGJlaGF2aW9yIGluIGRlYXRoCisvLyB0ZXN0cy4g
IElNUE9SVEFOVDogVGhpcyBpcyBhbiBpbnRlcm5hbCB1dGlsaXR5LiAgVXNpbmcgaXQgbWF5IGJy
ZWFrIHRoZQorLy8gaW1wbGVtZW50YXRpb24gb2YgZGVhdGggdGVzdHMuICBVc2VyIGNvZGUgTVVT
VCBOT1QgdXNlIGl0LgorYm9vbCBJbkRlYXRoVGVzdENoaWxkKCkgeworIyBpZiBHVEVTVF9PU19X
SU5ET1dTCisKKyAgLy8gT24gV2luZG93cywgZGVhdGggdGVzdHMgYXJlIHRocmVhZC1zYWZlIHJl
Z2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mIHRoZQorICAvLyBkZWF0aF90ZXN0X3N0eWxlIGZsYWcu
CisgIHJldHVybiAhR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkuZW1wdHkoKTsK
KworIyBlbHNlCisKKyAgaWYgKEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPT0gInRocmVh
ZHNhZmUiKQorICAgIHJldHVybiAhR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCku
ZW1wdHkoKTsKKyAgZWxzZQorICAgIHJldHVybiBnX2luX2Zhc3RfZGVhdGhfdGVzdF9jaGlsZDsK
KyNlbmRpZgorfQorCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKwogLy8gRXhpdGVkV2l0aENv
ZGUgY29uc3RydWN0b3IuCiBFeGl0ZWRXaXRoQ29kZTo6RXhpdGVkV2l0aENvZGUoaW50IGV4aXRf
Y29kZSkgOiBleGl0X2NvZGVfKGV4aXRfY29kZSkgewogfQogCiAvLyBFeGl0ZWRXaXRoQ29kZSBm
dW5jdGlvbi1jYWxsIG9wZXJhdG9yLgogYm9vbCBFeGl0ZWRXaXRoQ29kZTo6b3BlcmF0b3IoKShp
bnQgZXhpdF9zdGF0dXMpIGNvbnN0IHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNU
X09TX1dJTkRPV1MKKwogICByZXR1cm4gZXhpdF9zdGF0dXMgPT0gZXhpdF9jb2RlXzsKLSNlbHNl
CisKKyMgZWxzZQorCiAgIHJldHVybiBXSUZFWElURUQoZXhpdF9zdGF0dXMpICYmIFdFWElUU1RB
VFVTKGV4aXRfc3RhdHVzKSA9PSBleGl0X2NvZGVfOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5E
T1dTCisKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIH0KIAotI2lmICFHVEVTVF9PU19X
SU5ET1dTCisjIGlmICFHVEVTVF9PU19XSU5ET1dTCiAvLyBLaWxsZWRCeVNpZ25hbCBjb25zdHJ1
Y3Rvci4KIEtpbGxlZEJ5U2lnbmFsOjpLaWxsZWRCeVNpZ25hbChpbnQgc2lnbnVtKSA6IHNpZ251
bV8oc2lnbnVtKSB7CiB9CiAKIC8vIEtpbGxlZEJ5U2lnbmFsIGZ1bmN0aW9uLWNhbGwgb3BlcmF0
b3IuCiBib29sIEtpbGxlZEJ5U2lnbmFsOjpvcGVyYXRvcigpKGludCBleGl0X3N0YXR1cykgY29u
c3QgeworIyAgaWYgZGVmaW5lZChHVEVTVF9LSUxMRURfQllfU0lHTkFMX09WRVJSSURFXykKKyAg
eworICAgIGJvb2wgcmVzdWx0OworICAgIGlmIChHVEVTVF9LSUxMRURfQllfU0lHTkFMX09WRVJS
SURFXyhzaWdudW1fLCBleGl0X3N0YXR1cywgJnJlc3VsdCkpIHsKKyAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorICB9CisjICBlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9LSUxMRURfQllfU0lH
TkFMX09WRVJSSURFXykKICAgcmV0dXJuIFdJRlNJR05BTEVEKGV4aXRfc3RhdHVzKSAmJiBXVEVS
TVNJRyhleGl0X3N0YXR1cykgPT0gc2lnbnVtXzsKIH0KLSNlbmRpZiAgLy8gIUdURVNUX09TX1dJ
TkRPV1MKKyMgZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCiAKIG5hbWVzcGFjZSBpbnRlcm5h
bCB7CiAKQEAgLTEzNywyMiArMTkwLDI3IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIC8vIEdl
bmVyYXRlcyBhIHRleHR1YWwgZGVzY3JpcHRpb24gb2YgYSBnaXZlbiBleGl0IGNvZGUsIGluIHRo
ZSBmb3JtYXQKIC8vIHNwZWNpZmllZCBieSB3YWl0KDIpLgotc3RhdGljIFN0cmluZyBFeGl0U3Vt
bWFyeShpbnQgZXhpdF9jb2RlKSB7CitzdGF0aWMgc3RkOjpzdHJpbmcgRXhpdFN1bW1hcnkoaW50
IGV4aXRfY29kZSkgewogICBNZXNzYWdlIG07Ci0jaWYgR1RFU1RfT1NfV0lORE9XUworCisjIGlm
IEdURVNUX09TX1dJTkRPV1MKKwogICBtIDw8ICJFeGl0ZWQgd2l0aCBleGl0IHN0YXR1cyAiIDw8
IGV4aXRfY29kZTsKLSNlbHNlCisKKyMgZWxzZQorCiAgIGlmIChXSUZFWElURUQoZXhpdF9jb2Rl
KSkgewogICAgIG0gPDwgIkV4aXRlZCB3aXRoIGV4aXQgc3RhdHVzICIgPDwgV0VYSVRTVEFUVVMo
ZXhpdF9jb2RlKTsKICAgfSBlbHNlIGlmIChXSUZTSUdOQUxFRChleGl0X2NvZGUpKSB7CiAgICAg
bSA8PCAiVGVybWluYXRlZCBieSBzaWduYWwgIiA8PCBXVEVSTVNJRyhleGl0X2NvZGUpOwogICB9
Ci0jaWZkZWYgV0NPUkVEVU1QCisjICBpZmRlZiBXQ09SRURVTVAKICAgaWYgKFdDT1JFRFVNUChl
eGl0X2NvZGUpKSB7CiAgICAgbSA8PCAiIChjb3JlIGR1bXBlZCkiOwogICB9Ci0jZW5kaWYKLSNl
bmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIyAgZW5kaWYKKyMgZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKKwogICByZXR1cm4gbS5HZXRTdHJpbmcoKTsKIH0KIApAQCAtMTYyLDEyICsyMjAs
MTIgQEAgYm9vbCBFeGl0ZWRVbnN1Y2Nlc3NmdWxseShpbnQgZXhpdF9zdGF0dXMpIHsKICAgcmV0
dXJuICFFeGl0ZWRXaXRoQ29kZSgwKShleGl0X3N0YXR1cyk7CiB9CiAKLSNpZiAhR1RFU1RfT1Nf
V0lORE9XUworIyBpZiAhR1RFU1RfT1NfV0lORE9XUwogLy8gR2VuZXJhdGVzIGEgdGV4dHVhbCBm
YWlsdXJlIG1lc3NhZ2Ugd2hlbiBhIGRlYXRoIHRlc3QgZmluZHMgbW9yZSB0aGFuCiAvLyBvbmUg
dGhyZWFkIHJ1bm5pbmcsIG9yIGNhbm5vdCBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiB0aHJlYWRz
LCBwcmlvcgogLy8gdG8gZXhlY3V0aW5nIHRoZSBnaXZlbiBzdGF0ZW1lbnQuICBJdCBpcyB0aGUg
cmVzcG9uc2liaWxpdHkgb2YgdGhlCiAvLyBjYWxsZXIgbm90IHRvIHBhc3MgYSB0aHJlYWRfY291
bnQgb2YgMS4KLXN0YXRpYyBTdHJpbmcgRGVhdGhUZXN0VGhyZWFkV2FybmluZyhzaXplX3QgdGhy
ZWFkX2NvdW50KSB7CitzdGF0aWMgc3RkOjpzdHJpbmcgRGVhdGhUZXN0VGhyZWFkV2FybmluZyhz
aXplX3QgdGhyZWFkX2NvdW50KSB7CiAgIE1lc3NhZ2UgbXNnOwogICBtc2cgPDwgIkRlYXRoIHRl
c3RzIHVzZSBmb3JrKCksIHdoaWNoIGlzIHVuc2FmZSBwYXJ0aWN1bGFybHkiCiAgICAgICA8PCAi
IGluIGEgdGhyZWFkZWQgY29udGV4dC4gRm9yIHRoaXMgdGVzdCwgIiA8PCBHVEVTVF9OQU1FXyA8
PCAiICI7CkBAIC0xNzcsMjcgKzIzNSwzMSBAQCBzdGF0aWMgU3RyaW5nIERlYXRoVGVzdFRocmVh
ZFdhcm5pbmcoc2l6ZV90IHRocmVhZF9jb3VudCkgewogICAgIG1zZyA8PCAiZGV0ZWN0ZWQgIiA8
PCB0aHJlYWRfY291bnQgPDwgIiB0aHJlYWRzLiI7CiAgIHJldHVybiBtc2cuR2V0U3RyaW5nKCk7
CiB9Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyAhR1RFU1RfT1Nf
V0lORE9XUwogCiAvLyBGbGFnIGNoYXJhY3RlcnMgZm9yIHJlcG9ydGluZyBhIGRlYXRoIHRlc3Qg
dGhhdCBkaWQgbm90IGRpZS4KIHN0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RMaXZlZCA9ICdM
JzsKIHN0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RSZXR1cm5lZCA9ICdSJzsKK3N0YXRpYyBj
b25zdCBjaGFyIGtEZWF0aFRlc3RUaHJldyA9ICdUJzsKIHN0YXRpYyBjb25zdCBjaGFyIGtEZWF0
aFRlc3RJbnRlcm5hbEVycm9yID0gJ0knOwogCi0vLyBBbiBlbnVtZXJhdGlvbiBkZXNjcmliaW5n
IGFsbCBvZiB0aGUgcG9zc2libGUgd2F5cyB0aGF0IGEgZGVhdGggdGVzdAotLy8gY2FuIGNvbmNs
dWRlLiAgRElFRCBtZWFucyB0aGF0IHRoZSBwcm9jZXNzIGRpZWQgd2hpbGUgZXhlY3V0aW5nIHRo
ZQotLy8gdGVzdCBjb2RlOyBMSVZFRCBtZWFucyB0aGF0IHByb2Nlc3MgbGl2ZWQgYmV5b25kIHRo
ZSBlbmQgb2YgdGhlIHRlc3QKLS8vIGNvZGU7IGFuZCBSRVRVUk5FRCBtZWFucyB0aGF0IHRoZSB0
ZXN0IHN0YXRlbWVudCBhdHRlbXB0ZWQgYSAicmV0dXJuLCIKLS8vIHdoaWNoIGlzIG5vdCBhbGxv
d2VkLiAgSU5fUFJPR1JFU1MgbWVhbnMgdGhlIHRlc3QgaGFzIG5vdCB5ZXQKLS8vIGNvbmNsdWRl
ZC4KLWVudW0gRGVhdGhUZXN0T3V0Y29tZSB7IElOX1BST0dSRVNTLCBESUVELCBMSVZFRCwgUkVU
VVJORUQgfTsKKy8vIEFuIGVudW1lcmF0aW9uIGRlc2NyaWJpbmcgYWxsIG9mIHRoZSBwb3NzaWJs
ZSB3YXlzIHRoYXQgYSBkZWF0aCB0ZXN0IGNhbgorLy8gY29uY2x1ZGUuICBESUVEIG1lYW5zIHRo
YXQgdGhlIHByb2Nlc3MgZGllZCB3aGlsZSBleGVjdXRpbmcgdGhlIHRlc3QKKy8vIGNvZGU7IExJ
VkVEIG1lYW5zIHRoYXQgcHJvY2VzcyBsaXZlZCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgdGVzdCBj
b2RlOworLy8gUkVUVVJORUQgbWVhbnMgdGhhdCB0aGUgdGVzdCBzdGF0ZW1lbnQgYXR0ZW1wdGVk
IHRvIGV4ZWN1dGUgYSByZXR1cm4KKy8vIHN0YXRlbWVudCwgd2hpY2ggaXMgbm90IGFsbG93ZWQ7
IFRIUkVXIG1lYW5zIHRoYXQgdGhlIHRlc3Qgc3RhdGVtZW50CisvLyByZXR1cm5lZCBjb250cm9s
IGJ5IHRocm93aW5nIGFuIGV4Y2VwdGlvbi4gIElOX1BST0dSRVNTIG1lYW5zIHRoZSB0ZXN0Cisv
LyBoYXMgbm90IHlldCBjb25jbHVkZWQuCisvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBVbmlm
eSBuYW1lcyBhbmQgcG9zc2libHkgdmFsdWVzIGZvcgorLy8gQWJvcnRSZWFzb24sIERlYXRoVGVz
dE91dGNvbWUsIGFuZCBmbGFnIGNoYXJhY3RlcnMgYWJvdmUuCitlbnVtIERlYXRoVGVzdE91dGNv
bWUgeyBJTl9QUk9HUkVTUywgRElFRCwgTElWRUQsIFJFVFVSTkVELCBUSFJFVyB9OwogCiAvLyBS
b3V0aW5lIGZvciBhYm9ydGluZyB0aGUgcHJvZ3JhbSB3aGljaCBpcyBzYWZlIHRvIGNhbGwgZnJv
bSBhbgogLy8gZXhlYy1zdHlsZSBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nlc3MsIGluIHdoaWNoIGNh
c2UgdGhlIGVycm9yCiAvLyBtZXNzYWdlIGlzIHByb3BhZ2F0ZWQgYmFjayB0byB0aGUgcGFyZW50
IHByb2Nlc3MuICBPdGhlcndpc2UsIHRoZQogLy8gbWVzc2FnZSBpcyBzaW1wbHkgcHJpbnRlZCB0
byBzdGRlcnIuICBJbiBlaXRoZXIgY2FzZSwgdGhlIHByb2dyYW0KIC8vIHRoZW4gZXhpdHMgd2l0
aCBzdGF0dXMgMS4KLXZvaWQgRGVhdGhUZXN0QWJvcnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7
Cit2b2lkIERlYXRoVGVzdEFib3J0KGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7CiAgIC8v
IE9uIGEgUE9TSVggc3lzdGVtLCB0aGlzIGZ1bmN0aW9uIG1heSBiZSBjYWxsZWQgZnJvbSBhIHRo
cmVhZHNhZmUtc3R5bGUKICAgLy8gZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzLCB3aGljaCBvcGVy
YXRlcyBvbiBhIHZlcnkgc21hbGwgc3RhY2suICBVc2UKICAgLy8gdGhlIGhlYXAgZm9yIGFueSBh
ZGRpdGlvbmFsIG5vbi1taW51c2N1bGUgbWVtb3J5IHJlcXVpcmVtZW50cy4KQEAgLTIxMiwxOCAr
Mjc0LDE5IEBAIHZvaWQgRGVhdGhUZXN0QWJvcnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7CiAg
IH0gZWxzZSB7CiAgICAgZnByaW50ZihzdGRlcnIsICIlcyIsIG1lc3NhZ2UuY19zdHIoKSk7CiAg
ICAgZmZsdXNoKHN0ZGVycik7Ci0gICAgYWJvcnQoKTsKKyAgICBwb3NpeDo6QWJvcnQoKTsKICAg
fQogfQogCiAvLyBBIHJlcGxhY2VtZW50IGZvciBDSEVDSyB0aGF0IGNhbGxzIERlYXRoVGVzdEFi
b3J0IGlmIHRoZSBhc3NlcnRpb24KIC8vIGZhaWxzLgotI2RlZmluZSBHVEVTVF9ERUFUSF9URVNU
X0NIRUNLXyhleHByZXNzaW9uKSBcCisjIGRlZmluZSBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhl
eHByZXNzaW9uKSBcCiAgIGRvIHsgXAogICAgIGlmICghOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXNU
cnVlKGV4cHJlc3Npb24pKSB7IFwKLSAgICAgIERlYXRoVGVzdEFib3J0KDo6dGVzdGluZzo6aW50
ZXJuYWw6OlN0cmluZzo6Rm9ybWF0KCBcCi0gICAgICAgICAgIkNIRUNLIGZhaWxlZDogRmlsZSAl
cywgbGluZSAlZDogJXMiLCBcCi0gICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCAjZXhwcmVz
c2lvbikpOyBcCisgICAgICBEZWF0aFRlc3RBYm9ydCggXAorICAgICAgICAgIDo6c3RkOjpzdHJp
bmcoIkNIRUNLIGZhaWxlZDogRmlsZSAiKSArIF9fRklMRV9fICsgICIsIGxpbmUgIiBcCisgICAg
ICAgICAgKyA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcoX19MSU5FX18p
ICsgIjogIiBcCisgICAgICAgICAgKyAjZXhwcmVzc2lvbik7IFwKICAgICB9IFwKICAgfSB3aGls
ZSAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2UoKSkKIApAQCAtMjM0LDIyICsyOTcs
MjMgQEAgdm9pZCBEZWF0aFRlc3RBYm9ydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsKIC8vIGV2
YWx1YXRlcyB0aGUgZXhwcmVzc2lvbiBhcyBsb25nIGFzIGl0IGV2YWx1YXRlcyB0byAtMSBhbmQg
c2V0cwogLy8gZXJybm8gdG8gRUlOVFIuICBJZiB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8g
LTEgYnV0IGVycm5vIGlzCiAvLyBzb21ldGhpbmcgb3RoZXIgdGhhbiBFSU5UUiwgRGVhdGhUZXN0
QWJvcnQgaXMgY2FsbGVkLgotI2RlZmluZSBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExf
KGV4cHJlc3Npb24pIFwKKyMgZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8o
ZXhwcmVzc2lvbikgXAogICBkbyB7IFwKICAgICBpbnQgZ3Rlc3RfcmV0dmFsOyBcCiAgICAgZG8g
eyBcCiAgICAgICBndGVzdF9yZXR2YWwgPSAoZXhwcmVzc2lvbik7IFwKICAgICB9IHdoaWxlIChn
dGVzdF9yZXR2YWwgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpOyBcCiAgICAgaWYgKGd0ZXN0X3Jl
dHZhbCA9PSAtMSkgeyBcCi0gICAgICBEZWF0aFRlc3RBYm9ydCg6OnRlc3Rpbmc6OmludGVybmFs
OjpTdHJpbmc6OkZvcm1hdCggXAotICAgICAgICAgICJDSEVDSyBmYWlsZWQ6IEZpbGUgJXMsIGxp
bmUgJWQ6ICVzICE9IC0xIiwgXAotICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgI2V4cHJl
c3Npb24pKTsgXAorICAgICAgRGVhdGhUZXN0QWJvcnQoIFwKKyAgICAgICAgICA6OnN0ZDo6c3Ry
aW5nKCJDSEVDSyBmYWlsZWQ6IEZpbGUgIikgKyBfX0ZJTEVfXyArICIsIGxpbmUgIiBcCisgICAg
ICAgICAgKyA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcoX19MSU5FX18p
ICsgIjogIiBcCisgICAgICAgICAgKyAjZXhwcmVzc2lvbiArICIgIT0gLTEiKTsgXAogICAgIH0g
XAogICB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgpKQogCiAvLyBS
ZXR1cm5zIHRoZSBtZXNzYWdlIGRlc2NyaWJpbmcgdGhlIGxhc3Qgc3lzdGVtIGVycm9yIGluIGVy
cm5vLgotU3RyaW5nIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkgewotICAgIHJldHVybiBTdHJp
bmcoZXJybm8gPT0gMCA/ICIiIDogcG9zaXg6OlN0ckVycm9yKGVycm5vKSk7CitzdGQ6OnN0cmlu
ZyBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpIHsKKyAgICByZXR1cm4gZXJybm8gPT0gMCA/ICIi
IDogcG9zaXg6OlN0ckVycm9yKGVycm5vKTsKIH0KIAogLy8gVGhpcyBpcyBjYWxsZWQgZnJvbSBh
IGRlYXRoIHRlc3QgcGFyZW50IHByb2Nlc3MgdG8gcmVhZCBhIGZhaWx1cmUKQEAgLTI5OSwxMSAr
MzYzLDExIEBAIGNvbnN0IGNoYXIqIERlYXRoVGVzdDo6TGFzdE1lc3NhZ2UoKSB7CiAgIHJldHVy
biBsYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZV8uY19zdHIoKTsKIH0KIAotdm9pZCBEZWF0aFRlc3Q6
OnNldF9sYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsKK3Zv
aWQgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoY29uc3Qgc3RkOjpzdHJp
bmcmIG1lc3NhZ2UpIHsKICAgbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2VfID0gbWVzc2FnZTsKIH0K
IAotU3RyaW5nIERlYXRoVGVzdDo6bGFzdF9kZWF0aF90ZXN0X21lc3NhZ2VfOworc3RkOjpzdHJp
bmcgRGVhdGhUZXN0OjpsYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZV87CiAKIC8vIFByb3ZpZGVzIGNy
b3NzIHBsYXRmb3JtIGltcGxlbWVudGF0aW9uIGZvciBzb21lIGRlYXRoIGZ1bmN0aW9uYWxpdHku
CiBjbGFzcyBEZWF0aFRlc3RJbXBsIDogcHVibGljIERlYXRoVGVzdCB7CkBAIC0zODgsNiArNDUy
LDkgQEAgdm9pZCBEZWF0aFRlc3RJbXBsOjpSZWFkQW5kSW50ZXJwcmV0U3RhdHVzQnl0ZSgpIHsK
ICAgICAgIGNhc2Uga0RlYXRoVGVzdFJldHVybmVkOgogICAgICAgICBzZXRfb3V0Y29tZShSRVRV
Uk5FRCk7CiAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBrRGVhdGhUZXN0VGhyZXc6CisgICAg
ICAgIHNldF9vdXRjb21lKFRIUkVXKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIGtEZWF0
aFRlc3RMaXZlZDoKICAgICAgICAgc2V0X291dGNvbWUoTElWRUQpOwogICAgICAgICBicmVhazsK
QEAgLTQxNiwxOSArNDgzLDQ2IEBAIHZvaWQgRGVhdGhUZXN0SW1wbDo6QWJvcnQoQWJvcnRSZWFz
b24gcmVhc29uKSB7CiAgIC8vIGl0IGZpbmRzIGFueSBkYXRhIGluIG91ciBwaXBlLiAgU28sIGhl
cmUgd2Ugd3JpdGUgYSBzaW5nbGUgZmxhZyBieXRlCiAgIC8vIHRvIHRoZSBwaXBlLCB0aGVuIGV4
aXQuCiAgIGNvbnN0IGNoYXIgc3RhdHVzX2NoID0KLSAgICAgIHJlYXNvbiA9PSBURVNUX0RJRF9O
T1RfRElFID8ga0RlYXRoVGVzdExpdmVkIDoga0RlYXRoVGVzdFJldHVybmVkOworICAgICAgcmVh
c29uID09IFRFU1RfRElEX05PVF9ESUUgPyBrRGVhdGhUZXN0TGl2ZWQgOgorICAgICAgcmVhc29u
ID09IFRFU1RfVEhSRVdfRVhDRVBUSU9OID8ga0RlYXRoVGVzdFRocmV3IDoga0RlYXRoVGVzdFJl
dHVybmVkOworCiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8ocG9zaXg6OldyaXRl
KHdyaXRlX2ZkKCksICZzdGF0dXNfY2gsIDEpKTsKLSAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19T
WVNDQUxMXyhwb3NpeDo6Q2xvc2Uod3JpdGVfZmQoKSkpOworICAvLyBXZSBhcmUgbGVha2luZyB0
aGUgZGVzY3JpcHRvciBoZXJlIGJlY2F1c2Ugb24gc29tZSBwbGF0Zm9ybXMgKGkuZS4sCisgIC8v
IHdoZW4gYnVpbHQgYXMgV2luZG93cyBETEwpLCBkZXN0cnVjdG9ycyBvZiBnbG9iYWwgb2JqZWN0
cyB3aWxsIHN0aWxsCisgIC8vIHJ1biBhZnRlciBjYWxsaW5nIF9leGl0KCkuIE9uIHN1Y2ggc3lz
dGVtcywgd3JpdGVfZmRfIHdpbGwgYmUKKyAgLy8gaW5kaXJlY3RseSBjbG9zZWQgZnJvbSB0aGUg
ZGVzdHJ1Y3RvciBvZiBVbml0VGVzdEltcGwsIGNhdXNpbmcgZG91YmxlCisgIC8vIGNsb3NlIGlm
IGl0IGlzIGFsc28gY2xvc2VkIGhlcmUuIE9uIGRlYnVnIGNvbmZpZ3VyYXRpb25zLCBkb3VibGUg
Y2xvc2UKKyAgLy8gbWF5IGFzc2VydC4gQXMgdGhlcmUgYXJlIG5vIGluLXByb2Nlc3MgYnVmZmVy
cyB0byBmbHVzaCBoZXJlLCB3ZSBhcmUKKyAgLy8gcmVseWluZyBvbiB0aGUgT1MgdG8gY2xvc2Ug
dGhlIGRlc2NyaXB0b3IgYWZ0ZXIgdGhlIHByb2Nlc3MgdGVybWluYXRlcworICAvLyB3aGVuIHRo
ZSBkZXN0cnVjdG9ycyBhcmUgbm90IHJ1bi4KICAgX2V4aXQoMSk7ICAvLyBFeGl0cyB3L28gYW55
IG5vcm1hbCBleGl0IGhvb2tzICh3ZSB3ZXJlIHN1cHBvc2VkIHRvIGNyYXNoKQogfQogCisvLyBS
ZXR1cm5zIGFuIGluZGVudGVkIGNvcHkgb2Ygc3RkZXJyIG91dHB1dCBmb3IgYSBkZWF0aCB0ZXN0
LgorLy8gVGhpcyBtYWtlcyBkaXN0aW5ndWlzaGluZyBkZWF0aCB0ZXN0IG91dHB1dCBsaW5lcyBm
cm9tIHJlZ3VsYXIgbG9nIGxpbmVzCisvLyBtdWNoIGVhc2llci4KK3N0YXRpYyA6OnN0ZDo6c3Ry
aW5nIEZvcm1hdERlYXRoVGVzdE91dHB1dChjb25zdCA6OnN0ZDo6c3RyaW5nJiBvdXRwdXQpIHsK
KyAgOjpzdGQ6OnN0cmluZyByZXQ7CisgIGZvciAoc2l6ZV90IGF0ID0gMDsgOyApIHsKKyAgICBj
b25zdCBzaXplX3QgbGluZV9lbmQgPSBvdXRwdXQuZmluZCgnXG4nLCBhdCk7CisgICAgcmV0ICs9
ICJbICBERUFUSCAgIF0gIjsKKyAgICBpZiAobGluZV9lbmQgPT0gOjpzdGQ6OnN0cmluZzo6bnBv
cykgeworICAgICAgcmV0ICs9IG91dHB1dC5zdWJzdHIoYXQpOworICAgICAgYnJlYWs7CisgICAg
fQorICAgIHJldCArPSBvdXRwdXQuc3Vic3RyKGF0LCBsaW5lX2VuZCArIDEgLSBhdCk7CisgICAg
YXQgPSBsaW5lX2VuZCArIDE7CisgIH0KKyAgcmV0dXJuIHJldDsKK30KKwogLy8gQXNzZXNzZXMg
dGhlIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvZiBhIGRlYXRoIHRlc3QsIHVzaW5nIGJvdGggcHJpdmF0
ZQogLy8gbWVtYmVycyB3aGljaCBoYXZlIHByZXZpb3VzbHkgYmVlbiBzZXQsIGFuZCBvbmUgYXJn
dW1lbnQ6CiAvLwogLy8gUHJpdmF0ZSBkYXRhIG1lbWJlcnM6CiAvLyAgIG91dGNvbWU6ICBBbiBl
bnVtZXJhdGlvbiBkZXNjcmliaW5nIGhvdyB0aGUgZGVhdGggdGVzdAotLy8gICAgICAgICAgICAg
Y29uY2x1ZGVkOiBESUVELCBMSVZFRCwgb3IgUkVUVVJORUQuICBUaGUgZGVhdGggdGVzdCBmYWls
cwotLy8gICAgICAgICAgICAgaW4gdGhlIGxhdHRlciB0d28gY2FzZXMuCisvLyAgICAgICAgICAg
ICBjb25jbHVkZWQ6IERJRUQsIExJVkVELCBUSFJFVywgb3IgUkVUVVJORUQuICBUaGUgZGVhdGgg
dGVzdAorLy8gICAgICAgICAgICAgZmFpbHMgaW4gdGhlIGxhdHRlciB0aHJlZSBjYXNlcy4KIC8v
ICAgc3RhdHVzOiAgIFRoZSBleGl0IHN0YXR1cyBvZiB0aGUgY2hpbGQgcHJvY2Vzcy4gT24gKm5p
eCwgaXQgaXMgaW4gdGhlCiAvLyAgICAgICAgICAgICBpbiB0aGUgZm9ybWF0IHNwZWNpZmllZCBi
eSB3YWl0KDIpLiBPbiBXaW5kb3dzLCB0aGlzIGlzIHRoZQogLy8gICAgICAgICAgICAgdmFsdWUg
c3VwcGxpZWQgdG8gdGhlIEV4aXRQcm9jZXNzKCkgQVBJIG9yIGEgbnVtZXJpYyBjb2RlCkBAIC00
NDgsNyArNTQyLDcgQEAgYm9vbCBEZWF0aFRlc3RJbXBsOjpQYXNzZWQoYm9vbCBzdGF0dXNfb2sp
IHsKICAgaWYgKCFzcGF3bmVkKCkpCiAgICAgcmV0dXJuIGZhbHNlOwogCi0gIGNvbnN0IFN0cmlu
ZyBlcnJvcl9tZXNzYWdlID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKKyAgY29uc3Qgc3RkOjpzdHJp
bmcgZXJyb3JfbWVzc2FnZSA9IEdldENhcHR1cmVkU3RkZXJyKCk7CiAKICAgYm9vbCBzdWNjZXNz
ID0gZmFsc2U7CiAgIE1lc3NhZ2UgYnVmZmVyOwpAQCAtNDU3LDExICs1NTEsMTUgQEAgYm9vbCBE
ZWF0aFRlc3RJbXBsOjpQYXNzZWQoYm9vbCBzdGF0dXNfb2spIHsKICAgc3dpdGNoIChvdXRjb21l
KCkpIHsKICAgICBjYXNlIExJVkVEOgogICAgICAgYnVmZmVyIDw8ICIgICAgUmVzdWx0OiBmYWls
ZWQgdG8gZGllLlxuIgotICAgICAgICAgICAgIDw8ICIgRXJyb3IgbXNnOiAiIDw8IGVycm9yX21l
c3NhZ2U7CisgICAgICAgICAgICAgPDwgIiBFcnJvciBtc2c6XG4iIDw8IEZvcm1hdERlYXRoVGVz
dE91dHB1dChlcnJvcl9tZXNzYWdlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgVEhSRVc6Cisg
ICAgICBidWZmZXIgPDwgIiAgICBSZXN1bHQ6IHRocmV3IGFuIGV4Y2VwdGlvbi5cbiIKKyAgICAg
ICAgICAgICA8PCAiIEVycm9yIG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGVycm9y
X21lc3NhZ2UpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBSRVRVUk5FRDoKICAgICAgIGJ1ZmZl
ciA8PCAiICAgIFJlc3VsdDogaWxsZWdhbCByZXR1cm4gaW4gdGVzdCBzdGF0ZW1lbnQuXG4iCi0g
ICAgICAgICAgICAgPDwgIiBFcnJvciBtc2c6ICIgPDwgZXJyb3JfbWVzc2FnZTsKKyAgICAgICAg
ICAgICA8PCAiIEVycm9yIG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGVycm9yX21l
c3NhZ2UpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBESUVEOgogICAgICAgaWYgKHN0YXR1c19v
aykgewpAQCAtNDcxLDExICs1NjksMTIgQEAgYm9vbCBEZWF0aFRlc3RJbXBsOjpQYXNzZWQoYm9v
bCBzdGF0dXNfb2spIHsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICBidWZmZXIgPDwgIiAg
ICBSZXN1bHQ6IGRpZWQgYnV0IG5vdCB3aXRoIGV4cGVjdGVkIGVycm9yLlxuIgogICAgICAgICAg
ICAgICAgICA8PCAiICBFeHBlY3RlZDogIiA8PCByZWdleCgpLT5wYXR0ZXJuKCkgPDwgIlxuIgot
ICAgICAgICAgICAgICAgICA8PCAiQWN0dWFsIG1zZzogIiA8PCBlcnJvcl9tZXNzYWdlOworICAg
ICAgICAgICAgICAgICA8PCAiQWN0dWFsIG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0
KGVycm9yX21lc3NhZ2UpOwogICAgICAgICB9CiAgICAgICB9IGVsc2UgewogICAgICAgICBidWZm
ZXIgPDwgIiAgICBSZXN1bHQ6IGRpZWQgYnV0IG5vdCB3aXRoIGV4cGVjdGVkIGV4aXQgY29kZTpc
biIKLSAgICAgICAgICAgICAgIDw8ICIgICAgICAgICAgICAiIDw8IEV4aXRTdW1tYXJ5KHN0YXR1
cygpKSA8PCAiXG4iOworICAgICAgICAgICAgICAgPDwgIiAgICAgICAgICAgICIgPDwgRXhpdFN1
bW1hcnkoc3RhdHVzKCkpIDw8ICJcbiIKKyAgICAgICAgICAgICAgIDw8ICJBY3R1YWwgbXNnOlxu
IiA8PCBGb3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2FnZSk7CiAgICAgICB9CiAgICAg
ICBicmVhazsKICAgICBjYXNlIElOX1BST0dSRVNTOgpAQCAtNDg4LDcgKzU4Nyw3IEBAIGJvb2wg
RGVhdGhUZXN0SW1wbDo6UGFzc2VkKGJvb2wgc3RhdHVzX29rKSB7CiAgIHJldHVybiBzdWNjZXNz
OwogfQogCi0jaWYgR1RFU1RfT1NfV0lORE9XUworIyBpZiBHVEVTVF9PU19XSU5ET1dTCiAvLyBX
aW5kb3dzRGVhdGhUZXN0IGltcGxlbWVudHMgZGVhdGggdGVzdHMgb24gV2luZG93cy4gRHVlIHRv
IHRoZQogLy8gc3BlY2lmaWNzIG9mIHN0YXJ0aW5nIG5ldyBwcm9jZXNzZXMgb24gV2luZG93cywg
ZGVhdGggdGVzdHMgdGhlcmUgYXJlCiAvLyBhbHdheXMgdGhyZWFkc2FmZSwgYW5kIEdvb2dsZSBU
ZXN0IGNvbnNpZGVycyB0aGUKQEAgLTUxOSwxMSArNjE4LDExIEBAIGJvb2wgRGVhdGhUZXN0SW1w
bDo6UGFzc2VkKGJvb2wgc3RhdHVzX29rKSB7CiAvLwogY2xhc3MgV2luZG93c0RlYXRoVGVzdCA6
IHB1YmxpYyBEZWF0aFRlc3RJbXBsIHsKICBwdWJsaWM6Ci0gIFdpbmRvd3NEZWF0aFRlc3QoY29u
c3QgY2hhciogc3RhdGVtZW50LAotICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFKiByZWdleCwK
KyAgV2luZG93c0RlYXRoVGVzdChjb25zdCBjaGFyKiBhX3N0YXRlbWVudCwKKyAgICAgICAgICAg
ICAgICAgICBjb25zdCBSRSogYV9yZWdleCwKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBmaWxlLAogICAgICAgICAgICAgICAgICAgIGludCBsaW5lKQotICAgICAgOiBEZWF0aFRlc3RJ
bXBsKHN0YXRlbWVudCwgcmVnZXgpLCBmaWxlXyhmaWxlKSwgbGluZV8obGluZSkge30KKyAgICAg
IDogRGVhdGhUZXN0SW1wbChhX3N0YXRlbWVudCwgYV9yZWdleCksIGZpbGVfKGZpbGUpLCBsaW5l
XyhsaW5lKSB7fQogCiAgIC8vIEFsbCBvZiB0aGVzZSB2aXJ0dWFsIGZ1bmN0aW9ucyBhcmUgaW5o
ZXJpdGVkIGZyb20gRGVhdGhUZXN0LgogICB2aXJ0dWFsIGludCBXYWl0KCk7CkBAIC01ODAsMTIg
KzY3OSwxMiBAQCBpbnQgV2luZG93c0RlYXRoVGVzdDo6V2FpdCgpIHsKICAgR1RFU1RfREVBVEhf
VEVTVF9DSEVDS18oCiAgICAgICBXQUlUX09CSkVDVF8wID09IDo6V2FpdEZvclNpbmdsZU9iamVj
dChjaGlsZF9oYW5kbGVfLkdldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSU5GSU5JVEUpKTsKLSAgRFdPUkQgc3RhdHVzOwotICBHVEVTVF9ERUFUSF9U
RVNUX0NIRUNLXyg6OkdldEV4aXRDb2RlUHJvY2VzcyhjaGlsZF9oYW5kbGVfLkdldCgpLCAmc3Rh
dHVzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAhPSBGQUxTRSk7CisgIERXT1JEIHN0YXR1
c19jb2RlOworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXygKKyAgICAgIDo6R2V0RXhpdENvZGVQ
cm9jZXNzKGNoaWxkX2hhbmRsZV8uR2V0KCksICZzdGF0dXNfY29kZSkgIT0gRkFMU0UpOwogICBj
aGlsZF9oYW5kbGVfLlJlc2V0KCk7Ci0gIHNldF9zdGF0dXMoc3RhdGljX2Nhc3Q8aW50PihzdGF0
dXMpKTsKLSAgcmV0dXJuIHRoaXMtPnN0YXR1cygpOworICBzZXRfc3RhdHVzKHN0YXRpY19jYXN0
PGludD4oc3RhdHVzX2NvZGUpKTsKKyAgcmV0dXJuIHN0YXR1cygpOwogfQogCiAvLyBUaGUgQXNz
dW1lUm9sZSBwcm9jZXNzIGZvciBhIFdpbmRvd3MgZGVhdGggdGVzdC4gIEl0IGNyZWF0ZXMgYSBj
aGlsZApAQCAtNjI1LDIyICs3MjQsMTkgQEAgRGVhdGhUZXN0OjpUZXN0Um9sZSBXaW5kb3dzRGVh
dGhUZXN0OjpBc3N1bWVSb2xlKCkgewogICAgICAgRkFMU0UsICAgLy8gVGhlIGluaXRpYWwgc3Rh
dGUgaXMgbm9uLXNpZ25hbGxlZC4KICAgICAgIE5VTEwpKTsgIC8vIFRoZSBldmVuIGlzIHVubmFt
ZWQuCiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGV2ZW50X2hhbmRsZV8uR2V0KCkgIT0gTlVM
TCk7Ci0gIGNvbnN0IFN0cmluZyBmaWx0ZXJfZmxhZyA9IFN0cmluZzo6Rm9ybWF0KCItLSVzJXM9
JXMuJXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVT
VF9GTEFHX1BSRUZJWF8sIGtGaWx0ZXJGbGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmZvLT50ZXN0X2Nhc2VfbmFtZSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLT5uYW1lKCkpOwotICBjb25zdCBTdHJp
bmcgaW50ZXJuYWxfZmxhZyA9IFN0cmluZzo6Rm9ybWF0KAotICAgICItLSVzJXM9JXN8JWR8JWR8
JXV8JUl1fCVJdSIsCi0gICAgICBHVEVTVF9GTEFHX1BSRUZJWF8sCi0gICAgICBrSW50ZXJuYWxS
dW5EZWF0aFRlc3RGbGFnLAotICAgICAgZmlsZV8sIGxpbmVfLAotICAgICAgZGVhdGhfdGVzdF9p
bmRleCwKLSAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oOjpHZXRDdXJyZW50UHJvY2Vz
c0lkKCkpLAotICAgICAgLy8gc2l6ZV90IGhhcyB0aGUgc2FtZSB3aXRoIGFzIHBvaW50ZXJzIG9u
IGJvdGggMzItYml0IGFuZCA2NC1iaXQKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsdGVyX2ZsYWcg
PQorICAgICAgc3RkOjpzdHJpbmcoIi0tIikgKyBHVEVTVF9GTEFHX1BSRUZJWF8gKyBrRmlsdGVy
RmxhZyArICI9IiArCisgICAgICBpbmZvLT50ZXN0X2Nhc2VfbmFtZSgpICsgIi4iICsgaW5mby0+
bmFtZSgpOworICBjb25zdCBzdGQ6OnN0cmluZyBpbnRlcm5hbF9mbGFnID0KKyAgICAgIHN0ZDo6
c3RyaW5nKCItLSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsga0ludGVybmFsUnVuRGVhdGhUZXN0
RmxhZyArCisgICAgICAiPSIgKyBmaWxlXyArICJ8IiArIFN0cmVhbWFibGVUb1N0cmluZyhsaW5l
XykgKyAifCIgKworICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKGRlYXRoX3Rlc3RfaW5kZXgpICsg
InwiICsKKyAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+
KDo6R2V0Q3VycmVudFByb2Nlc3NJZCgpKSkgKworICAgICAgLy8gc2l6ZV90IGhhcyB0aGUgc2Ft
ZSB3aWR0aCBhcyBwb2ludGVycyBvbiBib3RoIDMyLWJpdCBhbmQgNjQtYml0CiAgICAgICAvLyBX
aW5kb3dzIHBsYXRmb3Jtcy4KICAgICAgIC8vIFNlZSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29t
L2VuLXVzL2xpYnJhcnkvdGN4ZjFkdzYuYXNweC4KLSAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8c2l6
ZV90Pih3cml0ZV9oYW5kbGUpLAotICAgICAgcmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KGV2ZW50
X2hhbmRsZV8uR2V0KCkpKTsKKyAgICAgICJ8IiArIFN0cmVhbWFibGVUb1N0cmluZyhyZWludGVy
cHJldF9jYXN0PHNpemVfdD4od3JpdGVfaGFuZGxlKSkgKworICAgICAgInwiICsgU3RyZWFtYWJs
ZVRvU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihldmVudF9oYW5kbGVfLkdldCgpKSk7
CiAKICAgY2hhciBleGVjdXRhYmxlX3BhdGhbX01BWF9QQVRIICsgMV07ICAvLyBOT0xJTlQKICAg
R1RFU1RfREVBVEhfVEVTVF9DSEVDS18oCkBAIC02NDgsMTAgKzc0NCw5IEBAIERlYXRoVGVzdDo6
VGVzdFJvbGUgV2luZG93c0RlYXRoVGVzdDo6QXNzdW1lUm9sZSgpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZV9wYXRoLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTUFYX1BBVEgpKTsKIAotICBTdHJp
bmcgY29tbWFuZF9saW5lID0gU3RyaW5nOjpGb3JtYXQoIiVzICVzIFwiJXNcIiIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OkdldENvbW1hbmRMaW5lQSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX2ZsYWcuY19zdHIoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsX2ZsYWcuY19z
dHIoKSk7CisgIHN0ZDo6c3RyaW5nIGNvbW1hbmRfbGluZSA9CisgICAgICBzdGQ6OnN0cmluZyg6
OkdldENvbW1hbmRMaW5lQSgpKSArICIgIiArIGZpbHRlcl9mbGFnICsgIiBcIiIgKworICAgICAg
aW50ZXJuYWxfZmxhZyArICJcIiI7CiAKICAgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90ZXN0
X21lc3NhZ2UoIiIpOwogCkBAIC02ODQsNyArNzc5LDcgQEAgRGVhdGhUZXN0OjpUZXN0Um9sZSBX
aW5kb3dzRGVhdGhUZXN0OjpBc3N1bWVSb2xlKCkgewogICBzZXRfc3Bhd25lZCh0cnVlKTsKICAg
cmV0dXJuIE9WRVJTRUVfVEVTVDsKIH0KLSNlbHNlICAvLyBXZSBhcmUgbm90IG9uIFdpbmRvd3Mu
CisjIGVsc2UgIC8vIFdlIGFyZSBub3Qgb24gV2luZG93cy4KIAogLy8gRm9ya2luZ0RlYXRoVGVz
dCBwcm92aWRlcyBpbXBsZW1lbnRhdGlvbnMgZm9yIG1vc3Qgb2YgdGhlIGFic3RyYWN0CiAvLyBt
ZXRob2RzIG9mIHRoZSBEZWF0aFRlc3QgaW50ZXJmYWNlLiAgT25seSB0aGUgQXNzdW1lUm9sZSBt
ZXRob2QgaXMKQEAgLTc2OCw2ICs4NjMsNyBAQCBEZWF0aFRlc3Q6OlRlc3RSb2xlIE5vRXhlY0Rl
YXRoVGVzdDo6QXNzdW1lUm9sZSgpIHsKICAgICAvLyBFdmVudCBmb3J3YXJkaW5nIHRvIHRoZSBs
aXN0ZW5lcnMgb2YgZXZlbnQgbGlzdGVuZXIgQVBJIG11c2ggYmUgc2h1dAogICAgIC8vIGRvd24g
aW4gZGVhdGggdGVzdCBzdWJwcm9jZXNzZXMuCiAgICAgR2V0VW5pdFRlc3RJbXBsKCktPmxpc3Rl
bmVycygpLT5TdXBwcmVzc0V2ZW50Rm9yd2FyZGluZygpOworICAgIGdfaW5fZmFzdF9kZWF0aF90
ZXN0X2NoaWxkID0gdHJ1ZTsKICAgICByZXR1cm4gRVhFQ1VURV9URVNUOwogICB9IGVsc2Ugewog
ICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oY2xvc2UocGlwZV9mZFsxXSkpOwpA
QCAtNzg3LDYgKzg4MywxNiBAQCBjbGFzcyBFeGVjRGVhdGhUZXN0IDogcHVibGljIEZvcmtpbmdE
ZWF0aFRlc3QgewogICAgICAgRm9ya2luZ0RlYXRoVGVzdChhX3N0YXRlbWVudCwgYV9yZWdleCks
IGZpbGVfKGZpbGUpLCBsaW5lXyhsaW5lKSB7IH0KICAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVS
b2xlKCk7CiAgcHJpdmF0ZToKKyAgc3RhdGljIDo6c3RkOjp2ZWN0b3I8dGVzdGluZzo6aW50ZXJu
YWw6OnN0cmluZz4KKyAgR2V0QXJndnNGb3JEZWF0aFRlc3RDaGlsZFByb2Nlc3MoKSB7CisgICAg
OjpzdGQ6OnZlY3Rvcjx0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nPiBhcmdzID0gR2V0SW5qZWN0
YWJsZUFyZ3ZzKCk7CisjICBpZiBkZWZpbmVkKEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ09NTUFO
RF9MSU5FX0FSR1NfKQorICAgIDo6c3RkOjp2ZWN0b3I8dGVzdGluZzo6aW50ZXJuYWw6OnN0cmlu
Zz4gZXh0cmFfYXJncyA9CisgICAgICAgIEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ09NTUFORF9M
SU5FX0FSR1NfKCk7CisgICAgYXJncy5pbnNlcnQoYXJncy5lbmQoKSwgZXh0cmFfYXJncy5iZWdp
bigpLCBleHRyYV9hcmdzLmVuZCgpKTsKKyMgIGVuZGlmICAvLyBkZWZpbmVkKEdURVNUX0VYVFJB
X0RFQVRIX1RFU1RfQ09NTUFORF9MSU5FX0FSR1NfKQorICAgIHJldHVybiBhcmdzOworICB9CiAg
IC8vIFRoZSBuYW1lIG9mIHRoZSBmaWxlIGluIHdoaWNoIHRoZSBkZWF0aCB0ZXN0IGlzIGxvY2F0
ZWQuCiAgIGNvbnN0IGNoYXIqIGNvbnN0IGZpbGVfOwogICAvLyBUaGUgbGluZSBudW1iZXIgb24g
d2hpY2ggdGhlIGRlYXRoIHRlc3QgaXMgbG9jYXRlZC4KQEAgLTgyMSw2ICs5MjcsNyBAQCBjbGFz
cyBBcmd1bWVudHMgewogICBjaGFyKiBjb25zdCogQXJndigpIHsKICAgICByZXR1cm4gJmFyZ3Nf
WzBdOwogICB9CisKICBwcml2YXRlOgogICBzdGQ6OnZlY3RvcjxjaGFyKj4gYXJnc187CiB9OwpA
QCAtODMyLDYgKzkzOSwyMSBAQCBzdHJ1Y3QgRXhlY0RlYXRoVGVzdEFyZ3MgewogICBpbnQgY2xv
c2VfZmQ7ICAgICAgIC8vIEZpbGUgZGVzY3JpcHRvciB0byBjbG9zZTsgdGhlIHJlYWQgZW5kIG9m
IGEgcGlwZQogfTsKIAorIyAgaWYgR1RFU1RfT1NfTUFDCitpbmxpbmUgY2hhcioqIEdldEVudmly
b24oKSB7CisgIC8vIFdoZW4gR29vZ2xlIFRlc3QgaXMgYnVpbHQgYXMgYSBmcmFtZXdvcmsgb24g
TWFjT1MgWCwgdGhlIGVudmlyb24gdmFyaWFibGUKKyAgLy8gaXMgdW5hdmFpbGFibGUuIEFwcGxl
J3MgZG9jdW1lbnRhdGlvbiAobWFuIGVudmlyb24pIHJlY29tbWVuZHMgdXNpbmcKKyAgLy8gX05T
R2V0RW52aXJvbigpIGluc3RlYWQuCisgIHJldHVybiAqX05TR2V0RW52aXJvbigpOworfQorIyAg
ZWxzZQorLy8gU29tZSBQT1NJWCBwbGF0Zm9ybXMgZXhwZWN0IHlvdSB0byBkZWNsYXJlIGVudmly
b24uIGV4dGVybiAiQyIgbWFrZXMKKy8vIGl0IHJlc2lkZSBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFj
ZS4KK2V4dGVybiAiQyIgY2hhcioqIGVudmlyb247CitpbmxpbmUgY2hhcioqIEdldEVudmlyb24o
KSB7IHJldHVybiBlbnZpcm9uOyB9CisjICBlbmRpZiAgLy8gR1RFU1RfT1NfTUFDCisKKyMgIGlm
ICFHVEVTVF9PU19RTlgKIC8vIFRoZSBtYWluIGZ1bmN0aW9uIGZvciBhIHRocmVhZHNhZmUtc3R5
bGUgZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzLgogLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQg
aW4gYSBjbG9uZSgpLWVkIHByb2Nlc3MgYW5kIHRodXMgbXVzdCBhdm9pZAogLy8gYW55IHBvdGVu
dGlhbGx5IHVuc2FmZSBvcGVyYXRpb25zIGxpa2UgbWFsbG9jIG9yIGxpYmMgZnVuY3Rpb25zLgpA
QCAtODQ2LDkgKzk2OCw4IEBAIHN0YXRpYyBpbnQgRXhlY0RlYXRoVGVzdENoaWxkTWFpbih2b2lk
KiBjaGlsZF9hcmcpIHsKICAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93
b3JraW5nX2RpcigpOwogICAvLyBXZSBjYW4gc2FmZWx5IGNhbGwgY2hkaXIoKSBhcyBpdCdzIGEg
ZGlyZWN0IHN5c3RlbSBjYWxsLgogICBpZiAoY2hkaXIob3JpZ2luYWxfZGlyKSAhPSAwKSB7Ci0g
ICAgRGVhdGhUZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQoImNoZGlyKFwiJXNcIikgZmFpbGVkOiAl
cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxfZGlyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCku
Y19zdHIoKSkpOworICAgIERlYXRoVGVzdEFib3J0KHN0ZDo6c3RyaW5nKCJjaGRpcihcIiIpICsg
b3JpZ2luYWxfZGlyICsgIlwiKSBmYWlsZWQ6ICIgKworICAgICAgICAgICAgICAgICAgIEdldExh
c3RFcnJub0Rlc2NyaXB0aW9uKCkpOwogICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgIH0KIApA
QCAtODU3LDQwICs5NzgsOTQgQEAgc3RhdGljIGludCBFeGVjRGVhdGhUZXN0Q2hpbGRNYWluKHZv
aWQqIGNoaWxkX2FyZykgewogICAvLyB1bnNhZmUuICBTaW5jZSBleGVjdmUoKSBkb2Vzbid0IHNl
YXJjaCB0aGUgUEFUSCwgdGhlIHVzZXIgbXVzdAogICAvLyBpbnZva2UgdGhlIHRlc3QgcHJvZ3Jh
bSB2aWEgYSB2YWxpZCBwYXRoIHRoYXQgY29udGFpbnMgYXQgbGVhc3QKICAgLy8gb25lIHBhdGgg
c2VwYXJhdG9yLgotICAvLyBXZSBoYXZlIHJlcGxhY2VkIGV4ZWN2ZSgpIHdpdGggZXhlY3YoKSBm
b3IgV2ViS2l0IHRvIGF2b2lkIHVzaW5nCi0gIC8vIGVudmlyb24uIEl0IHNob3VsZCBiZSBzYWZl
IGJlY2F1c2UgZXhlY3YoKSBpcyBqdXN0IGEgc2ltcGxlIHdyYXBwZXIKLSAgLy8gb2YgZXhlY3Zl
KCkuCi0gIGV4ZWN2KGFyZ3MtPmFyZ3ZbMF0sIGFyZ3MtPmFyZ3YpOwotICBEZWF0aFRlc3RBYm9y
dChTdHJpbmc6OkZvcm1hdCgiZXhlY3YoJXMsIC4uLikgaW4gJXMgZmFpbGVkOiAlcyIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MtPmFyZ3ZbMF0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKS5jX3N0cigpKSk7CisgIGV4ZWN2ZShh
cmdzLT5hcmd2WzBdLCBhcmdzLT5hcmd2LCBHZXRFbnZpcm9uKCkpOworICBEZWF0aFRlc3RBYm9y
dChzdGQ6OnN0cmluZygiZXhlY3ZlKCIpICsgYXJncy0+YXJndlswXSArICIsIC4uLikgaW4gIiAr
CisgICAgICAgICAgICAgICAgIG9yaWdpbmFsX2RpciArICIgZmFpbGVkOiAiICsKKyAgICAgICAg
ICAgICAgICAgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKSk7CiAgIHJldHVybiBFWElUX0ZBSUxV
UkU7CiB9CisjICBlbmRpZiAgLy8gIUdURVNUX09TX1FOWAogCiAvLyBUd28gdXRpbGl0eSByb3V0
aW5lcyB0aGF0IHRvZ2V0aGVyIGRldGVybWluZSB0aGUgZGlyZWN0aW9uIHRoZSBzdGFjawogLy8g
Z3Jvd3MuCiAvLyBUaGlzIGNvdWxkIGJlIGFjY29tcGxpc2hlZCBtb3JlIGVsZWdhbnRseSBieSBh
IHNpbmdsZSByZWN1cnNpdmUKIC8vIGZ1bmN0aW9uLCBidXQgd2Ugd2FudCB0byBndWFyZCBhZ2Fp
bnN0IHRoZSB1bmxpa2VseSBwb3NzaWJpbGl0eSBvZgogLy8gYSBzbWFydCBjb21waWxlciBvcHRp
bWl6aW5nIHRoZSByZWN1cnNpb24gYXdheS4KLWJvb2wgU3RhY2tMb3dlclRoYW5BZGRyZXNzKGNv
bnN0IHZvaWQqIHB0cikgeworLy8KKy8vIEdURVNUX05PX0lOTElORV8gaXMgcmVxdWlyZWQgdG8g
cHJldmVudCBHQ0MgNC42IGZyb20gaW5saW5pbmcKKy8vIFN0YWNrTG93ZXJUaGFuQWRkcmVzcyBp
bnRvIFN0YWNrR3Jvd3NEb3duLCB3aGljaCB0aGVuIGRvZXNuJ3QgZ2l2ZQorLy8gY29ycmVjdCBh
bnN3ZXIuCit2b2lkIFN0YWNrTG93ZXJUaGFuQWRkcmVzcyhjb25zdCB2b2lkKiBwdHIsIGJvb2wq
IHJlc3VsdCkgR1RFU1RfTk9fSU5MSU5FXzsKK3ZvaWQgU3RhY2tMb3dlclRoYW5BZGRyZXNzKGNv
bnN0IHZvaWQqIHB0ciwgYm9vbCogcmVzdWx0KSB7CiAgIGludCBkdW1teTsKLSAgcmV0dXJuICZk
dW1teSA8IHB0cjsKKyAgKnJlc3VsdCA9ICgmZHVtbXkgPCBwdHIpOwogfQogCisvLyBNYWtlIHN1
cmUgQWRkcmVzc1Nhbml0aXplciBkb2VzIG5vdCB0YW1wZXIgd2l0aCB0aGUgc3RhY2sgaGVyZS4K
K0dURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTXwogYm9vbCBTdGFja0dyb3dzRG93
bigpIHsKICAgaW50IGR1bW15OwotICByZXR1cm4gU3RhY2tMb3dlclRoYW5BZGRyZXNzKCZkdW1t
eSk7CisgIGJvb2wgcmVzdWx0OworICBTdGFja0xvd2VyVGhhbkFkZHJlc3MoJmR1bW15LCAmcmVz
dWx0KTsKKyAgcmV0dXJuIHJlc3VsdDsKIH0KIAotLy8gQSB0aHJlYWRzYWZlIGltcGxlbWVudGF0
aW9uIG9mIGZvcmsoMikgZm9yIHRocmVhZHNhZmUtc3R5bGUgZGVhdGggdGVzdHMKLS8vIHRoYXQg
dXNlcyBjbG9uZSgyKS4gIEl0IGRpZXMgd2l0aCBhbiBlcnJvciBtZXNzYWdlIGlmIGFueXRoaW5n
IGdvZXMKLS8vIHdyb25nLgotc3RhdGljIHBpZF90IEV4ZWNEZWF0aFRlc3RGb3JrKGNoYXIqIGNv
bnN0KiBhcmd2LCBpbnQgY2xvc2VfZmQpIHsKKy8vIFNwYXducyBhIGNoaWxkIHByb2Nlc3Mgd2l0
aCB0aGUgc2FtZSBleGVjdXRhYmxlIGFzIHRoZSBjdXJyZW50IHByb2Nlc3MgaW4KKy8vIGEgdGhy
ZWFkLXNhZmUgbWFubmVyIGFuZCBpbnN0cnVjdHMgaXQgdG8gcnVuIHRoZSBkZWF0aCB0ZXN0LiAg
VGhlCisvLyBpbXBsZW1lbnRhdGlvbiB1c2VzIGZvcmsoMikgKyBleGVjLiAgT24gc3lzdGVtcyB3
aGVyZSBjbG9uZSgyKSBpcworLy8gYXZhaWxhYmxlLCBpdCBpcyB1c2VkIGluc3RlYWQsIGJlaW5n
IHNsaWdodGx5IG1vcmUgdGhyZWFkLXNhZmUuICBPbiBRTlgsCisvLyBmb3JrIHN1cHBvcnRzIG9u
bHkgc2luZ2xlLXRocmVhZGVkIGVudmlyb25tZW50cywgc28gdGhpcyBmdW5jdGlvbiB1c2VzCisv
LyBzcGF3bigyKSB0aGVyZSBpbnN0ZWFkLiAgVGhlIGZ1bmN0aW9uIGRpZXMgd2l0aCBhbiBlcnJv
ciBtZXNzYWdlIGlmCisvLyBhbnl0aGluZyBnb2VzIHdyb25nLgorc3RhdGljIHBpZF90IEV4ZWNE
ZWF0aFRlc3RTcGF3bkNoaWxkKGNoYXIqIGNvbnN0KiBhcmd2LCBpbnQgY2xvc2VfZmQpIHsKICAg
RXhlY0RlYXRoVGVzdEFyZ3MgYXJncyA9IHsgYXJndiwgY2xvc2VfZmQgfTsKICAgcGlkX3QgY2hp
bGRfcGlkID0gLTE7CiAKLSNpZiBHVEVTVF9IQVNfQ0xPTkUKKyMgIGlmIEdURVNUX09TX1FOWAor
ICAvLyBPYnRhaW5zIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBhbmQgc2V0cyBpdCB0byBiZSBjbG9z
ZWQgaW4gdGhlIGNoaWxkCisgIC8vIHByb2Nlc3MuCisgIGNvbnN0IGludCBjd2RfZmQgPSBvcGVu
KCIuIiwgT19SRE9OTFkpOworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhjd2RfZmQgIT0gLTEp
OworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGZjbnRsKGN3ZF9mZCwgRl9TRVRG
RCwgRkRfQ0xPRVhFQykpOworICAvLyBXZSBuZWVkIHRvIGV4ZWN1dGUgdGhlIHRlc3QgcHJvZ3Jh
bSBpbiB0aGUgc2FtZSBlbnZpcm9ubWVudCB3aGVyZQorICAvLyBpdCB3YXMgb3JpZ2luYWxseSBp
bnZva2VkLiAgVGhlcmVmb3JlIHdlIGNoYW5nZSB0byB0aGUgb3JpZ2luYWwKKyAgLy8gd29ya2lu
ZyBkaXJlY3RvcnkgZmlyc3QuCisgIGNvbnN0IGNoYXIqIGNvbnN0IG9yaWdpbmFsX2RpciA9Cisg
ICAgICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+b3JpZ2luYWxfd29ya2luZ19kaXIoKTsKKyAg
Ly8gV2UgY2FuIHNhZmVseSBjYWxsIGNoZGlyKCkgYXMgaXQncyBhIGRpcmVjdCBzeXN0ZW0gY2Fs
bC4KKyAgaWYgKGNoZGlyKG9yaWdpbmFsX2RpcikgIT0gMCkgeworICAgIERlYXRoVGVzdEFib3J0
KHN0ZDo6c3RyaW5nKCJjaGRpcihcIiIpICsgb3JpZ2luYWxfZGlyICsgIlwiKSBmYWlsZWQ6ICIg
KworICAgICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkpOworICAgIHJl
dHVybiBFWElUX0ZBSUxVUkU7CisgIH0KKworICBpbnQgZmRfZmxhZ3M7CisgIC8vIFNldCBjbG9z
ZV9mZCB0byBiZSBjbG9zZWQgYWZ0ZXIgc3Bhd24uCisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tf
U1lTQ0FMTF8oZmRfZmxhZ3MgPSBmY250bChjbG9zZV9mZCwgRl9HRVRGRCkpOworICBHVEVTVF9E
RUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGZjbnRsKGNsb3NlX2ZkLCBGX1NFVEZELAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkX2ZsYWdzIHwgRkRfQ0xPRVhFQykp
OworICBzdHJ1Y3QgaW5oZXJpdGFuY2UgaW5oZXJpdCA9IHswfTsKKyAgLy8gc3Bhd24gaXMgYSBz
eXN0ZW0gY2FsbC4KKyAgY2hpbGRfcGlkID0gc3Bhd24oYXJncy5hcmd2WzBdLCAwLCBOVUxMLCAm
aW5oZXJpdCwgYXJncy5hcmd2LCBHZXRFbnZpcm9uKCkpOworICAvLyBSZXN0b3JlcyB0aGUgY3Vy
cmVudCB3b3JraW5nIGRpcmVjdG9yeS4KKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oZmNoZGly
KGN3ZF9mZCkgIT0gLTEpOworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGNsb3Nl
KGN3ZF9mZCkpOworCisjICBlbHNlICAgLy8gR1RFU1RfT1NfUU5YCisjICAgaWYgR1RFU1RfT1Nf
TElOVVgKKyAgLy8gV2hlbiBhIFNJR1BST0Ygc2lnbmFsIGlzIHJlY2VpdmVkIHdoaWxlIGZvcmso
KSBvciBjbG9uZSgpIGFyZSBleGVjdXRpbmcsCisgIC8vIHRoZSBwcm9jZXNzIG1heSBoYW5nLiBU
byBhdm9pZCB0aGlzLCB3ZSBpZ25vcmUgU0lHUFJPRiBoZXJlIGFuZCByZS1lbmFibGUKKyAgLy8g
aXQgYWZ0ZXIgdGhlIGNhbGwgdG8gZm9yaygpL2Nsb25lKCkgaXMgY29tcGxldGUuCisgIHN0cnVj
dCBzaWdhY3Rpb24gc2F2ZWRfc2lncHJvZl9hY3Rpb247CisgIHN0cnVjdCBzaWdhY3Rpb24gaWdu
b3JlX3NpZ3Byb2ZfYWN0aW9uOworICBtZW1zZXQoJmlnbm9yZV9zaWdwcm9mX2FjdGlvbiwgMCwg
c2l6ZW9mKGlnbm9yZV9zaWdwcm9mX2FjdGlvbikpOworICBzaWdlbXB0eXNldCgmaWdub3JlX3Np
Z3Byb2ZfYWN0aW9uLnNhX21hc2spOworICBpZ25vcmVfc2lncHJvZl9hY3Rpb24uc2FfaGFuZGxl
ciA9IFNJR19JR047CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oc2lnYWN0aW9u
KAorICAgICAgU0lHUFJPRiwgJmlnbm9yZV9zaWdwcm9mX2FjdGlvbiwgJnNhdmVkX3NpZ3Byb2Zf
YWN0aW9uKSk7CisjICAgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCisKKyMgICBpZiBHVEVTVF9I
QVNfQ0xPTkUKICAgY29uc3QgYm9vbCB1c2VfZm9yayA9IEdURVNUX0ZMQUcoZGVhdGhfdGVzdF91
c2VfZm9yayk7CiAKICAgaWYgKCF1c2VfZm9yaykgewpAQCAtOTAwLDIxICsxMDc1LDM3IEBAIHN0
YXRpYyBwaWRfdCBFeGVjRGVhdGhUZXN0Rm9yayhjaGFyKiBjb25zdCogYXJndiwgaW50IGNsb3Nl
X2ZkKSB7CiAgICAgdm9pZCogY29uc3Qgc3RhY2sgPSBtbWFwKE5VTEwsIHN0YWNrX3NpemUsIFBS
T1RfUkVBRCB8IFBST1RfV1JJVEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BUF9B
Tk9OIHwgTUFQX1BSSVZBVEUsIC0xLCAwKTsKICAgICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhz
dGFjayAhPSBNQVBfRkFJTEVEKTsKKworICAgIC8vIE1heGltdW0gc3RhY2sgYWxpZ25tZW50IGlu
IGJ5dGVzOiAgRm9yIGEgZG93bndhcmQtZ3Jvd2luZyBzdGFjaywgdGhpcworICAgIC8vIGFtb3Vu
dCBpcyBzdWJ0cmFjdGVkIGZyb20gc2l6ZSBvZiB0aGUgc3RhY2sgc3BhY2UgdG8gZ2V0IGFuIGFk
ZHJlc3MKKyAgICAvLyB0aGF0IGlzIHdpdGhpbiB0aGUgc3RhY2sgc3BhY2UgYW5kIGlzIGFsaWdu
ZWQgb24gYWxsIHN5c3RlbXMgd2UgY2FyZQorICAgIC8vIGFib3V0LiAgQXMgZmFyIGFzIEkga25v
dyB0aGVyZSBpcyBubyBBQkkgd2l0aCBzdGFjayBhbGlnbm1lbnQgZ3JlYXRlcgorICAgIC8vIHRo
YW4gNjQuICBXZSBhc3N1bWUgc3RhY2sgYW5kIHN0YWNrX3NpemUgYWxyZWFkeSBoYXZlIGFsaWdu
bWVudCBvZgorICAgIC8vIGtNYXhTdGFja0FsaWdubWVudC4KKyAgICBjb25zdCBzaXplX3Qga01h
eFN0YWNrQWxpZ25tZW50ID0gNjQ7CiAgICAgdm9pZCogY29uc3Qgc3RhY2tfdG9wID0KLSAgICAg
ICAgc3RhdGljX2Nhc3Q8Y2hhcio+KHN0YWNrKSArIChzdGFja19ncm93c19kb3duID8gc3RhY2tf
c2l6ZSA6IDApOworICAgICAgICBzdGF0aWNfY2FzdDxjaGFyKj4oc3RhY2spICsKKyAgICAgICAg
ICAgIChzdGFja19ncm93c19kb3duID8gc3RhY2tfc2l6ZSAtIGtNYXhTdGFja0FsaWdubWVudCA6
IDApOworICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YWNrX3NpemUgPiBrTWF4U3RhY2tB
bGlnbm1lbnQgJiYKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oc3RhY2tfdG9w
KSAlIGtNYXhTdGFja0FsaWdubWVudCA9PSAwKTsKIAogICAgIGNoaWxkX3BpZCA9IGNsb25lKCZF
eGVjRGVhdGhUZXN0Q2hpbGRNYWluLCBzdGFja190b3AsIFNJR0NITEQsICZhcmdzKTsKIAogICAg
IEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKG11bm1hcChzdGFjaywgc3RhY2tfc2l6ZSkgIT0gLTEp
OwogICB9Ci0jZWxzZQorIyAgIGVsc2UKICAgY29uc3QgYm9vbCB1c2VfZm9yayA9IHRydWU7Ci0j
ZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORQorIyAgIGVuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUK
IAogICBpZiAodXNlX2ZvcmsgJiYgKGNoaWxkX3BpZCA9IGZvcmsoKSkgPT0gMCkgewogICAgICAg
RXhlY0RlYXRoVGVzdENoaWxkTWFpbigmYXJncyk7CiAgICAgICBfZXhpdCgwKTsKICAgfQorIyAg
ZW5kaWYgIC8vIEdURVNUX09TX1FOWAorIyAgaWYgR1RFU1RfT1NfTElOVVgKKyAgR1RFU1RfREVB
VEhfVEVTVF9DSEVDS19TWVNDQUxMXygKKyAgICAgIHNpZ2FjdGlvbihTSUdQUk9GLCAmc2F2ZWRf
c2lncHJvZl9hY3Rpb24sIE5VTEwpKTsKKyMgIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWAogCiAg
IEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGNoaWxkX3BpZCAhPSAtMSk7CiAgIHJldHVybiBjaGls
ZF9waWQ7CkBAIC05NDIsMTYgKzExMzMsMTYgQEAgRGVhdGhUZXN0OjpUZXN0Um9sZSBFeGVjRGVh
dGhUZXN0OjpBc3N1bWVSb2xlKCkgewogICAvLyBpdCBiZSBjbG9zZWQgd2hlbiB0aGUgY2hpbGQg
cHJvY2VzcyBkb2VzIGFuIGV4ZWM6CiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGZjbnRsKHBp
cGVfZmRbMV0sIEZfU0VURkQsIDApICE9IC0xKTsKIAotICBjb25zdCBTdHJpbmcgZmlsdGVyX2Zs
YWcgPQotICAgICAgU3RyaW5nOjpGb3JtYXQoIi0tJXMlcz0lcy4lcyIsCi0gICAgICAgICAgICAg
ICAgICAgICBHVEVTVF9GTEFHX1BSRUZJWF8sIGtGaWx0ZXJGbGFnLAotICAgICAgICAgICAgICAg
ICAgICAgaW5mby0+dGVzdF9jYXNlX25hbWUoKSwgaW5mby0+bmFtZSgpKTsKLSAgY29uc3QgU3Ry
aW5nIGludGVybmFsX2ZsYWcgPQotICAgICAgU3RyaW5nOjpGb3JtYXQoIi0tJXMlcz0lc3wlZHwl
ZHwlZCIsCi0gICAgICAgICAgICAgICAgICAgICBHVEVTVF9GTEFHX1BSRUZJWF8sIGtJbnRlcm5h
bFJ1bkRlYXRoVGVzdEZsYWcsCi0gICAgICAgICAgICAgICAgICAgICBmaWxlXywgbGluZV8sIGRl
YXRoX3Rlc3RfaW5kZXgsIHBpcGVfZmRbMV0pOworICBjb25zdCBzdGQ6OnN0cmluZyBmaWx0ZXJf
ZmxhZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0iKSArIEdURVNUX0ZMQUdfUFJFRklYXyArIGtG
aWx0ZXJGbGFnICsgIj0iCisgICAgICArIGluZm8tPnRlc3RfY2FzZV9uYW1lKCkgKyAiLiIgKyBp
bmZvLT5uYW1lKCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGludGVybmFsX2ZsYWcgPQorICAgICAg
c3RkOjpzdHJpbmcoIi0tIikgKyBHVEVTVF9GTEFHX1BSRUZJWF8gKyBrSW50ZXJuYWxSdW5EZWF0
aFRlc3RGbGFnICsgIj0iCisgICAgICArIGZpbGVfICsgInwiICsgU3RyZWFtYWJsZVRvU3RyaW5n
KGxpbmVfKSArICJ8IgorICAgICAgKyBTdHJlYW1hYmxlVG9TdHJpbmcoZGVhdGhfdGVzdF9pbmRl
eCkgKyAifCIKKyAgICAgICsgU3RyZWFtYWJsZVRvU3RyaW5nKHBpcGVfZmRbMV0pOwogICBBcmd1
bWVudHMgYXJnczsKLSAgYXJncy5BZGRBcmd1bWVudHMoR2V0QXJndnMoKSk7CisgIGFyZ3MuQWRk
QXJndW1lbnRzKEdldEFyZ3ZzRm9yRGVhdGhUZXN0Q2hpbGRQcm9jZXNzKCkpOwogICBhcmdzLkFk
ZEFyZ3VtZW50KGZpbHRlcl9mbGFnLmNfc3RyKCkpOwogICBhcmdzLkFkZEFyZ3VtZW50KGludGVy
bmFsX2ZsYWcuY19zdHIoKSk7CiAKQEAgLTk2Miw3ICsxMTUzLDcgQEAgRGVhdGhUZXN0OjpUZXN0
Um9sZSBFeGVjRGVhdGhUZXN0OjpBc3N1bWVSb2xlKCkgewogICAvLyBpcyBuZWNlc3NhcnkuCiAg
IEZsdXNoSW5mb0xvZygpOwogCi0gIGNvbnN0IHBpZF90IGNoaWxkX3BpZCA9IEV4ZWNEZWF0aFRl
c3RGb3JrKGFyZ3MuQXJndigpLCBwaXBlX2ZkWzBdKTsKKyAgY29uc3QgcGlkX3QgY2hpbGRfcGlk
ID0gRXhlY0RlYXRoVGVzdFNwYXduQ2hpbGQoYXJncy5Bcmd2KCksIHBpcGVfZmRbMF0pOwogICBH
VEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGNsb3NlKHBpcGVfZmRbMV0pKTsKICAgc2V0
X2NoaWxkX3BpZChjaGlsZF9waWQpOwogICBzZXRfcmVhZF9mZChwaXBlX2ZkWzBdKTsKQEAgLTk3
MCw3ICsxMTYxLDcgQEAgRGVhdGhUZXN0OjpUZXN0Um9sZSBFeGVjRGVhdGhUZXN0OjpBc3N1bWVS
b2xlKCkgewogICByZXR1cm4gT1ZFUlNFRV9URVNUOwogfQogCi0jZW5kaWYgIC8vICFHVEVTVF9P
U19XSU5ET1dTCisjIGVuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUwogCiAvLyBDcmVhdGVzIGEg
Y29uY3JldGUgRGVhdGhUZXN0LWRlcml2ZWQgY2xhc3MgdGhhdCBkZXBlbmRzIG9uIHRoZQogLy8g
LS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlIGZsYWcsIGFuZCBzZXRzIHRoZSBwb2ludGVyIHBvaW50
ZWQgdG8KQEAgLTk4OCw5ICsxMTc5LDEwIEBAIGJvb2wgRGVmYXVsdERlYXRoVGVzdEZhY3Rvcnk6
OkNyZWF0ZShjb25zdCBjaGFyKiBzdGF0ZW1lbnQsIGNvbnN0IFJFKiByZWdleCwKIAogICBpZiAo
ZmxhZyAhPSBOVUxMKSB7CiAgICAgaWYgKGRlYXRoX3Rlc3RfaW5kZXggPiBmbGFnLT5pbmRleCgp
KSB7Ci0gICAgICBEZWF0aFRlc3Q6OnNldF9sYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZShTdHJpbmc6
OkZvcm1hdCgKLSAgICAgICAgICAiRGVhdGggdGVzdCBjb3VudCAoJWQpIHNvbWVob3cgZXhjZWVk
ZWQgZXhwZWN0ZWQgbWF4aW11bSAoJWQpIiwKLSAgICAgICAgICBkZWF0aF90ZXN0X2luZGV4LCBm
bGFnLT5pbmRleCgpKSk7CisgICAgICBEZWF0aFRlc3Q6OnNldF9sYXN0X2RlYXRoX3Rlc3RfbWVz
c2FnZSgKKyAgICAgICAgICAiRGVhdGggdGVzdCBjb3VudCAoIiArIFN0cmVhbWFibGVUb1N0cmlu
ZyhkZWF0aF90ZXN0X2luZGV4KQorICAgICAgICAgICsgIikgc29tZWhvdyBleGNlZWRlZCBleHBl
Y3RlZCBtYXhpbXVtICgiCisgICAgICAgICAgKyBTdHJlYW1hYmxlVG9TdHJpbmcoZmxhZy0+aW5k
ZXgoKSkgKyAiKSIpOwogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTAwMSw0OSAr
MTE5MywzNCBAQCBib29sIERlZmF1bHREZWF0aFRlc3RGYWN0b3J5OjpDcmVhdGUoY29uc3QgY2hh
ciogc3RhdGVtZW50LCBjb25zdCBSRSogcmVnZXgsCiAgICAgfQogICB9CiAKLSNpZiBHVEVTVF9P
U19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKwogICBpZiAoR1RFU1RfRkxBRyhkZWF0
aF90ZXN0X3N0eWxlKSA9PSAidGhyZWFkc2FmZSIgfHwKICAgICAgIEdURVNUX0ZMQUcoZGVhdGhf
dGVzdF9zdHlsZSkgPT0gImZhc3QiKSB7CiAgICAgKnRlc3QgPSBuZXcgV2luZG93c0RlYXRoVGVz
dChzdGF0ZW1lbnQsIHJlZ2V4LCBmaWxlLCBsaW5lKTsKICAgfQotI2Vsc2UKKworIyBlbHNlCisK
ICAgaWYgKEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPT0gInRocmVhZHNhZmUiKSB7CiAg
ICAgKnRlc3QgPSBuZXcgRXhlY0RlYXRoVGVzdChzdGF0ZW1lbnQsIHJlZ2V4LCBmaWxlLCBsaW5l
KTsKICAgfSBlbHNlIGlmIChHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJmYXN0Iikg
ewogICAgICp0ZXN0ID0gbmV3IE5vRXhlY0RlYXRoVGVzdChzdGF0ZW1lbnQsIHJlZ2V4KTsKICAg
fQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1MKKwogICBlbHNlIHsgIC8vIE5PTElOVCAtIHRoaXMgaXMgbW9yZSByZWFkYWJsZSB0aGFu
IHVuYmFsYW5jZWQgYnJhY2tldHMgaW5zaWRlICNpZi4KLSAgICBEZWF0aFRlc3Q6OnNldF9sYXN0
X2RlYXRoX3Rlc3RfbWVzc2FnZShTdHJpbmc6OkZvcm1hdCgKLSAgICAgICAgIlVua25vd24gZGVh
dGggdGVzdCBzdHlsZSBcIiVzXCIgZW5jb3VudGVyZWQiLAotICAgICAgICBHVEVTVF9GTEFHKGRl
YXRoX3Rlc3Rfc3R5bGUpLmNfc3RyKCkpKTsKKyAgICBEZWF0aFRlc3Q6OnNldF9sYXN0X2RlYXRo
X3Rlc3RfbWVzc2FnZSgKKyAgICAgICAgIlVua25vd24gZGVhdGggdGVzdCBzdHlsZSBcIiIgKyBH
VEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpCisgICAgICAgICsgIlwiIGVuY291bnRlcmVkIik7
CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAKICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIFNwbGl0
cyBhIGdpdmVuIHN0cmluZyBvbiBhIGdpdmVuIGRlbGltaXRlciwgcG9wdWxhdGluZyBhIGdpdmVu
Ci0vLyB2ZWN0b3Igd2l0aCB0aGUgZmllbGRzLiAgR1RFU1RfSEFTX0RFQVRIX1RFU1QgaW1wbGll
cyB0aGF0IHdlIGhhdmUKLS8vIDo6c3RkOjpzdHJpbmcsIHNvIHdlIGNhbiB1c2UgaXQgaGVyZS4K
LXN0YXRpYyB2b2lkIFNwbGl0U3RyaW5nKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgY2hhciBk
ZWxpbWl0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6
c3RyaW5nPiogZGVzdCkgewotICA6OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6c3RyaW5nPiBwYXJzZWQ7
Ci0gIDo6c3RkOjpzdHJpbmc6OnNpemVfdHlwZSBwb3MgPSAwOwotICB3aGlsZSAoOjp0ZXN0aW5n
OjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7Ci0gICAgY29uc3QgOjpzdGQ6OnN0cmluZzo6c2l6
ZV90eXBlIGNvbG9uID0gc3RyLmZpbmQoZGVsaW1pdGVyLCBwb3MpOwotICAgIGlmIChjb2xvbiA9
PSA6OnN0ZDo6c3RyaW5nOjpucG9zKSB7Ci0gICAgICBwYXJzZWQucHVzaF9iYWNrKHN0ci5zdWJz
dHIocG9zKSk7Ci0gICAgICBicmVhazsKLSAgICB9IGVsc2UgewotICAgICAgcGFyc2VkLnB1c2hf
YmFjayhzdHIuc3Vic3RyKHBvcywgY29sb24gLSBwb3MpKTsKLSAgICAgIHBvcyA9IGNvbG9uICsg
MTsKLSAgICB9Ci0gIH0KLSAgZGVzdC0+c3dhcChwYXJzZWQpOwotfQotCi0jaWYgR1RFU1RfT1Nf
V0lORE9XUworIyBpZiBHVEVTVF9PU19XSU5ET1dTCiAvLyBSZWNyZWF0ZXMgdGhlIHBpcGUgYW5k
IGV2ZW50IGhhbmRsZXMgZnJvbSB0aGUgcHJvdmlkZWQgcGFyYW1ldGVycywKIC8vIHNpZ25hbHMg
dGhlIGV2ZW50LCBhbmQgcmV0dXJucyBhIGZpbGUgZGVzY3JpcHRvciB3cmFwcGVkIGFyb3VuZCB0
aGUgcGlwZQogLy8gaGFuZGxlLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiB0aGUgY2hpbGQg
cHJvY2VzcyBvbmx5LgpAQCAtMTA1NCw4ICsxMjMxLDggQEAgaW50IEdldFN0YXR1c0ZpbGVEZXNj
cmlwdG9yKHVuc2lnbmVkIGludCBwYXJlbnRfcHJvY2Vzc19pZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCAgLy8gTm9uLWluaGVyaXRh
YmxlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyZW50X3Byb2Nlc3NfaWQpKTsKICAgaWYgKHBhcmVudF9wcm9jZXNzX2hhbmRsZS5HZXQoKSA9
PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgIERlYXRoVGVzdEFib3J0KFN0cmluZzo6Rm9y
bWF0KCJVbmFibGUgdG8gb3BlbiBwYXJlbnQgcHJvY2VzcyAldSIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyZW50X3Byb2Nlc3NfaWQpKTsKKyAgICBEZWF0aFRlc3RBYm9y
dCgiVW5hYmxlIHRvIG9wZW4gcGFyZW50IHByb2Nlc3MgIiArCisgICAgICAgICAgICAgICAgICAg
U3RyZWFtYWJsZVRvU3RyaW5nKHBhcmVudF9wcm9jZXNzX2lkKSk7CiAgIH0KIAogICAvLyBUT0RP
KHZsYWRsQGdvb2dsZS5jb20pOiBSZXBsYWNlIHRoZSBmb2xsb3dpbmcgY2hlY2sgd2l0aCBhCkBA
IC0xMDc1LDkgKzEyNTIsMTAgQEAgaW50IEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9yKHVuc2lnbmVk
IGludCBwYXJlbnRfcHJvY2Vzc19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIERVUExJQ0FURV9TQU1FX0FDQ0VTUyBpcyB1c2VkLgogICAgICAgICAgICAgICAgICAgICAg
ICAgIEZBTFNFLCAgLy8gUmVxdWVzdCBub24taW5oZXJpdGFibGUgaGFuZGxlci4KICAgICAgICAg
ICAgICAgICAgICAgICAgICBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MpKSB7Ci0gICAgRGVhdGhUZXN0
QWJvcnQoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICJVbmFibGUgdG8gZHVwbGljYXRlIHRoZSBw
aXBlIGhhbmRsZSAlSXUgZnJvbSB0aGUgcGFyZW50IHByb2Nlc3MgJXUiLAotICAgICAgICB3cml0
ZV9oYW5kbGVfYXNfc2l6ZV90LCBwYXJlbnRfcHJvY2Vzc19pZCkpOworICAgIERlYXRoVGVzdEFi
b3J0KCJVbmFibGUgdG8gZHVwbGljYXRlIHRoZSBwaXBlIGhhbmRsZSAiICsKKyAgICAgICAgICAg
ICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcod3JpdGVfaGFuZGxlX2FzX3NpemVfdCkgKworICAg
ICAgICAgICAgICAgICAgICIgZnJvbSB0aGUgcGFyZW50IHByb2Nlc3MgIiArCisgICAgICAgICAg
ICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHBhcmVudF9wcm9jZXNzX2lkKSk7CiAgIH0KIAog
ICBjb25zdCBIQU5ETEUgZXZlbnRfaGFuZGxlID0gcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KGV2
ZW50X2hhbmRsZV9hc19zaXplX3QpOwpAQCAtMTA4OCwxNyArMTI2NiwxOCBAQCBpbnQgR2V0U3Rh
dHVzRmlsZURlc2NyaXB0b3IodW5zaWduZWQgaW50IHBhcmVudF9wcm9jZXNzX2lkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4MCwKICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MpKSB7Ci0gICAg
RGVhdGhUZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICJVbmFibGUgdG8gZHVwbGlj
YXRlIHRoZSBldmVudCBoYW5kbGUgJUl1IGZyb20gdGhlIHBhcmVudCBwcm9jZXNzICV1IiwKLSAg
ICAgICAgZXZlbnRfaGFuZGxlX2FzX3NpemVfdCwgcGFyZW50X3Byb2Nlc3NfaWQpKTsKKyAgICBE
ZWF0aFRlc3RBYm9ydCgiVW5hYmxlIHRvIGR1cGxpY2F0ZSB0aGUgZXZlbnQgaGFuZGxlICIgKwor
ICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhldmVudF9oYW5kbGVfYXNfc2l6
ZV90KSArCisgICAgICAgICAgICAgICAgICAgIiBmcm9tIHRoZSBwYXJlbnQgcHJvY2VzcyAiICsK
KyAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcocGFyZW50X3Byb2Nlc3NfaWQp
KTsKICAgfQogCiAgIGNvbnN0IGludCB3cml0ZV9mZCA9CiAgICAgICA6Ol9vcGVuX29zZmhhbmRs
ZShyZWludGVycHJldF9jYXN0PGludHB0cl90PihkdXBfd3JpdGVfaGFuZGxlKSwgT19BUFBFTkQp
OwogICBpZiAod3JpdGVfZmQgPT0gLTEpIHsKLSAgICBEZWF0aFRlc3RBYm9ydChTdHJpbmc6OkZv
cm1hdCgKLSAgICAgICAgIlVuYWJsZSB0byBjb252ZXJ0IHBpcGUgaGFuZGxlICVJdSB0byBhIGZp
bGUgZGVzY3JpcHRvciIsCi0gICAgICAgIHdyaXRlX2hhbmRsZV9hc19zaXplX3QpKTsKKyAgICBE
ZWF0aFRlc3RBYm9ydCgiVW5hYmxlIHRvIGNvbnZlcnQgcGlwZSBoYW5kbGUgIiArCisgICAgICAg
ICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHdyaXRlX2hhbmRsZV9hc19zaXplX3QpICsK
KyAgICAgICAgICAgICAgICAgICAiIHRvIGEgZmlsZSBkZXNjcmlwdG9yIik7CiAgIH0KIAogICAv
LyBTaWduYWxzIHRoZSBwYXJlbnQgdGhhdCB0aGUgd3JpdGUgZW5kIG9mIHRoZSBwaXBlIGhhcyBi
ZWVuIGFjcXVpcmVkCkBAIC0xMTA3LDcgKzEyODYsNyBAQCBpbnQgR2V0U3RhdHVzRmlsZURlc2Ny
aXB0b3IodW5zaWduZWQgaW50IHBhcmVudF9wcm9jZXNzX2lkLAogCiAgIHJldHVybiB3cml0ZV9m
ZDsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gR1RFU1RfT1Nf
V0lORE9XUwogCiAvLyBSZXR1cm5zIGEgbmV3bHkgY3JlYXRlZCBJbnRlcm5hbFJ1bkRlYXRoVGVz
dEZsYWcgb2JqZWN0IHdpdGggZmllbGRzCiAvLyBpbml0aWFsaXplZCBmcm9tIHRoZSBHVEVTVF9G
TEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KSBmbGFnIGlmCkBAIC0xMTIzLDcgKzEzMDIsOCBA
QCBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcqIFBhcnNlSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFn
KCkgewogICBTcGxpdFN0cmluZyhHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KS5j
X3N0cigpLCAnfCcsICZmaWVsZHMpOwogICBpbnQgd3JpdGVfZmQgPSAtMTsKIAotI2lmIEdURVNU
X09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lORE9XUworCiAgIHVuc2lnbmVkIGludCBwYXJl
bnRfcHJvY2Vzc19pZCA9IDA7CiAgIHNpemVfdCB3cml0ZV9oYW5kbGVfYXNfc2l6ZV90ID0gMDsK
ICAgc2l6ZV90IGV2ZW50X2hhbmRsZV9hc19zaXplX3QgPSAwOwpAQCAtMTEzNCwyMyArMTMxNCwy
NCBAQCBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcqIFBhcnNlSW50ZXJuYWxSdW5EZWF0aFRlc3RG
bGFnKCkgewogICAgICAgfHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVsZHNbM10sICZwYXJlbnRf
cHJvY2Vzc19pZCkKICAgICAgIHx8ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmllbGRzWzRdLCAmd3Jp
dGVfaGFuZGxlX2FzX3NpemVfdCkKICAgICAgIHx8ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmllbGRz
WzVdLCAmZXZlbnRfaGFuZGxlX2FzX3NpemVfdCkpIHsKLSAgICBEZWF0aFRlc3RBYm9ydChTdHJp
bmc6OkZvcm1hdCgKLSAgICAgICAgIkJhZCAtLWd0ZXN0X2ludGVybmFsX3J1bl9kZWF0aF90ZXN0
IGZsYWc6ICVzIiwKLSAgICAgICAgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCku
Y19zdHIoKSkpOworICAgIERlYXRoVGVzdEFib3J0KCJCYWQgLS1ndGVzdF9pbnRlcm5hbF9ydW5f
ZGVhdGhfdGVzdCBmbGFnOiAiICsKKyAgICAgICAgICAgICAgICAgICBHVEVTVF9GTEFHKGludGVy
bmFsX3J1bl9kZWF0aF90ZXN0KSk7CiAgIH0KICAgd3JpdGVfZmQgPSBHZXRTdGF0dXNGaWxlRGVz
Y3JpcHRvcihwYXJlbnRfcHJvY2Vzc19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3cml0ZV9oYW5kbGVfYXNfc2l6ZV90LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV2ZW50X2hhbmRsZV9hc19zaXplX3QpOwotI2Vsc2UKKyMgZWxzZQorCiAg
IGlmIChmaWVsZHMuc2l6ZSgpICE9IDQKICAgICAgIHx8ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmll
bGRzWzFdLCAmbGluZSkKICAgICAgIHx8ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmllbGRzWzJdLCAm
aW5kZXgpCiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1szXSwgJndyaXRlX2Zk
KSkgewotICAgIERlYXRoVGVzdEFib3J0KFN0cmluZzo6Rm9ybWF0KAotICAgICAgICAiQmFkIC0t
Z3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QgZmxhZzogJXMiLAotICAgICAgICBHVEVTVF9G
TEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KS5jX3N0cigpKSk7CisgICAgRGVhdGhUZXN0QWJv
cnQoIkJhZCAtLWd0ZXN0X2ludGVybmFsX3J1bl9kZWF0aF90ZXN0IGZsYWc6ICIKKyAgICAgICAg
KyBHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KSk7CiAgIH0KLSNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUworCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKICAgcmV0
dXJuIG5ldyBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoZmllbGRzWzBdLCBsaW5lLCBpbmRleCwg
d3JpdGVfZmQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMv
Z3Rlc3QtZmlsZXBhdGguY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtZmls
ZXBhdGguY2MKaW5kZXggYzFlZjkxODhhZDg1YWI4YTA0N2EzM2JmOTk0NWUxY2QwY2M3M2VmZi4u
MDI5MmRjMTE5NTdlYWEyMThiMzU4ZjFmNzYxY2E0YTVjYjJmYWVhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWZpbGVwYXRoLmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1maWxlcGF0aC5jYwpAQCAtMjksMzUgKzI5LDM2IEBA
CiAvLwogLy8gQXV0aG9yczoga2VpdGgucmF5QGdtYWlsLmNvbSAoS2VpdGggUmF5KQogCi0jaW5j
bHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaD4KLSNpbmNsdWRlIDxndGVzdC9p
bnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgor
I2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgiCisjaW5jbHVkZSAiZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKICNpZiBH
VEVTVF9PU19XSU5ET1dTX01PQklMRQotI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyMgaW5jbHVkZSA8
d2luZG93cy5oPgogI2VsaWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1ZGUgPGRpcmVjdC5oPgot
I2luY2x1ZGUgPGlvLmg+CisjIGluY2x1ZGUgPGRpcmVjdC5oPgorIyBpbmNsdWRlIDxpby5oPgog
I2VsaWYgR1RFU1RfT1NfU1lNQklBTgogLy8gU3ltYmlhbiBPcGVuQyBoYXMgUEFUSF9NQVggaW4g
c3lzL3N5c2xpbWl0cy5oCi0jaW5jbHVkZSA8c3lzL3N5c2xpbWl0cy5oPgorIyBpbmNsdWRlIDxz
eXMvc3lzbGltaXRzLmg+CiAjZWxzZQotI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPGNs
aW1pdHM+ICAvLyBTb21lIExpbnV4IGRpc3RyaWJ1dGlvbnMgZGVmaW5lIFBBVEhfTUFYIGhlcmUu
CisjIGluY2x1ZGUgPGxpbWl0cy5oPgorIyBpbmNsdWRlIDxjbGltaXRzPiAgLy8gU29tZSBMaW51
eCBkaXN0cmlidXRpb25zIGRlZmluZSBQQVRIX01BWCBoZXJlLgogI2VuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTX01PQklMRQogCiAjaWYgR1RFU1RfT1NfV0lORE9XUwotI2RlZmluZSBHVEVTVF9Q
QVRIX01BWF8gX01BWF9QQVRICisjIGRlZmluZSBHVEVTVF9QQVRIX01BWF8gX01BWF9QQVRICiAj
ZWxpZiBkZWZpbmVkKFBBVEhfTUFYKQotI2RlZmluZSBHVEVTVF9QQVRIX01BWF8gUEFUSF9NQVgK
KyMgZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBQQVRIX01BWAogI2VsaWYgZGVmaW5lZChfWE9QRU5f
UEFUSF9NQVgpCi0jZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBfWE9QRU5fUEFUSF9NQVgKKyMgZGVm
aW5lIEdURVNUX1BBVEhfTUFYXyBfWE9QRU5fUEFUSF9NQVgKICNlbHNlCi0jZGVmaW5lIEdURVNU
X1BBVEhfTUFYXyBfUE9TSVhfUEFUSF9NQVgKKyMgZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBfUE9T
SVhfUEFUSF9NQVgKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCi0jaW5jbHVkZSA8Z3Rl
c3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3Qtc3RyaW5nLmgiCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7
CkBAIC02OSwyMSArNzAsMTkgQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIC8vIG9mIHRoZW0uCiBj
b25zdCBjaGFyIGtQYXRoU2VwYXJhdG9yID0gJ1xcJzsKIGNvbnN0IGNoYXIga0FsdGVybmF0ZVBh
dGhTZXBhcmF0b3IgPSAnLyc7Ci1jb25zdCBjaGFyIGtQYXRoU2VwYXJhdG9yU3RyaW5nW10gPSAi
XFwiOwogY29uc3QgY2hhciBrQWx0ZXJuYXRlUGF0aFNlcGFyYXRvclN0cmluZ1tdID0gIi8iOwot
I2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxF
CiAvLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSBhIGN1cnJlbnQgZGlyZWN0b3J5LiBZb3Ugc2hv
dWxkIG5vdCB1c2UKIC8vIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpbiB0ZXN0cyBvbiBXaW5kb3dz
IENFLCBidXQgdGhpcyBhdCBsZWFzdAogLy8gcHJvdmlkZXMgYSByZWFzb25hYmxlIGZhbGxiYWNr
LgogY29uc3QgY2hhciBrQ3VycmVudERpcmVjdG9yeVN0cmluZ1tdID0gIlxcIjsKIC8vIFdpbmRv
d3MgQ0UgZG9lc24ndCBkZWZpbmUgSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMKIGNvbnN0IERXT1JE
IGtJbnZhbGlkRmlsZUF0dHJpYnV0ZXMgPSAweGZmZmZmZmZmOwotI2Vsc2UKKyMgZWxzZQogY29u
c3QgY2hhciBrQ3VycmVudERpcmVjdG9yeVN0cmluZ1tdID0gIi5cXCI7Ci0jZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklM
RQogI2Vsc2UKIGNvbnN0IGNoYXIga1BhdGhTZXBhcmF0b3IgPSAnLyc7Ci1jb25zdCBjaGFyIGtQ
YXRoU2VwYXJhdG9yU3RyaW5nW10gPSAiLyI7CiBjb25zdCBjaGFyIGtDdXJyZW50RGlyZWN0b3J5
U3RyaW5nW10gPSAiLi8iOwogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKQEAgLTk4LDcg
Kzk3LDcgQEAgc3RhdGljIGJvb2wgSXNQYXRoU2VwYXJhdG9yKGNoYXIgYykgewogCiAvLyBSZXR1
cm5zIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LCBvciAiIiBpZiB1bnN1Y2Nlc3NmdWwu
CiBGaWxlUGF0aCBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpIHsKLSNpZiBHVEVTVF9PU19XSU5E
T1dTX01PQklMRQorI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNUX09TX1dJTkRP
V1NfUEhPTkUgfHwgR1RFU1RfT1NfV0lORE9XU19SVAogICAvLyBXaW5kb3dzIENFIGRvZXNuJ3Qg
aGF2ZSBhIGN1cnJlbnQgZGlyZWN0b3J5LCBzbyB3ZSBqdXN0IHJldHVybgogICAvLyBzb21ldGhp
bmcgcmVhc29uYWJsZS4KICAgcmV0dXJuIEZpbGVQYXRoKGtDdXJyZW50RGlyZWN0b3J5U3RyaW5n
KTsKQEAgLTEwNyw3ICsxMDYsMTQgQEAgRmlsZVBhdGggRmlsZVBhdGg6OkdldEN1cnJlbnREaXIo
KSB7CiAgIHJldHVybiBGaWxlUGF0aChfZ2V0Y3dkKGN3ZCwgc2l6ZW9mKGN3ZCkpID09IE5VTEwg
PyAiIiA6IGN3ZCk7CiAjZWxzZQogICBjaGFyIGN3ZFtHVEVTVF9QQVRIX01BWF8gKyAxXSA9IHsg
J1wwJyB9OwotICByZXR1cm4gRmlsZVBhdGgoZ2V0Y3dkKGN3ZCwgc2l6ZW9mKGN3ZCkpID09IE5V
TEwgPyAiIiA6IGN3ZCk7CisgIGNoYXIqIHJlc3VsdCA9IGdldGN3ZChjd2QsIHNpemVvZihjd2Qp
KTsKKyMgaWYgR1RFU1RfT1NfTkFDTAorICAvLyBnZXRjd2Qgd2lsbCBsaWtlbHkgZmFpbCBpbiBO
YUNsIGR1ZSB0byB0aGUgc2FuZGJveCwgc28gcmV0dXJuIHNvbWV0aGluZworICAvLyByZWFzb25h
YmxlLiBUaGUgdXNlciBtYXkgaGF2ZSBwcm92aWRlZCBhIHNoaW0gaW1wbGVtZW50YXRpb24gZm9y
IGdldGN3ZCwKKyAgLy8gaG93ZXZlciwgc28gZmFsbGJhY2sgb25seSB3aGVuIGZhaWx1cmUgaXMg
ZGV0ZWN0ZWQuCisgIHJldHVybiBGaWxlUGF0aChyZXN1bHQgPT0gTlVMTCA/IGtDdXJyZW50RGly
ZWN0b3J5U3RyaW5nIDogY3dkKTsKKyMgZW5kaWYgIC8vIEdURVNUX09TX05BQ0wKKyAgcmV0dXJu
IEZpbGVQYXRoKHJlc3VsdCA9PSBOVUxMID8gIiIgOiBjd2QpOwogI2VuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTX01PQklMRQogfQogCkBAIC0xMTYsOSArMTIyLDEwIEBAIEZpbGVQYXRoIEZpbGVQ
YXRoOjpHZXRDdXJyZW50RGlyKCkgewogLy8gRmlsZVBhdGgoImRpci9maWxlIikuIElmIGEgY2Fz
ZS1pbnNlbnNpdGl2ZSBleHRlbnNpb24gaXMgbm90CiAvLyBmb3VuZCwgcmV0dXJucyBhIGNvcHkg
b2YgdGhlIG9yaWdpbmFsIEZpbGVQYXRoLgogRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZUV4dGVu
c2lvbihjb25zdCBjaGFyKiBleHRlbnNpb24pIGNvbnN0IHsKLSAgU3RyaW5nIGRvdF9leHRlbnNp
b24oU3RyaW5nOjpGb3JtYXQoIi4lcyIsIGV4dGVuc2lvbikpOwotICBpZiAocGF0aG5hbWVfLkVu
ZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKGRvdF9leHRlbnNpb24uY19zdHIoKSkpIHsKLSAgICByZXR1
cm4gRmlsZVBhdGgoU3RyaW5nKHBhdGhuYW1lXy5jX3N0cigpLCBwYXRobmFtZV8ubGVuZ3RoKCkg
LSA0KSk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGRvdF9leHRlbnNpb24gPSBzdGQ6OnN0cmluZygi
LiIpICsgZXh0ZW5zaW9uOworICBpZiAoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZShw
YXRobmFtZV8sIGRvdF9leHRlbnNpb24pKSB7CisgICAgcmV0dXJuIEZpbGVQYXRoKHBhdGhuYW1l
Xy5zdWJzdHIoCisgICAgICAgIDAsIHBhdGhuYW1lXy5sZW5ndGgoKSAtIGRvdF9leHRlbnNpb24u
bGVuZ3RoKCkpKTsKICAgfQogICByZXR1cm4gKnRoaXM7CiB9CkBAIC0xNDcsNyArMTU0LDcgQEAg
Y29uc3QgY2hhciogRmlsZVBhdGg6OkZpbmRMYXN0UGF0aFNlcGFyYXRvcigpIGNvbnN0IHsKIC8v
IE9uIFdpbmRvd3MgcGxhdGZvcm0sICdcJyBpcyB0aGUgcGF0aCBzZXBhcmF0b3IsIG90aGVyd2lz
ZSBpdCBpcyAnLycuCiBGaWxlUGF0aCBGaWxlUGF0aDo6UmVtb3ZlRGlyZWN0b3J5TmFtZSgpIGNv
bnN0IHsKICAgY29uc3QgY2hhciogY29uc3QgbGFzdF9zZXAgPSBGaW5kTGFzdFBhdGhTZXBhcmF0
b3IoKTsKLSAgcmV0dXJuIGxhc3Rfc2VwID8gRmlsZVBhdGgoU3RyaW5nKGxhc3Rfc2VwICsgMSkp
IDogKnRoaXM7CisgIHJldHVybiBsYXN0X3NlcCA/IEZpbGVQYXRoKGxhc3Rfc2VwICsgMSkgOiAq
dGhpczsKIH0KIAogLy8gUmVtb3ZlRmlsZU5hbWUgcmV0dXJucyB0aGUgZGlyZWN0b3J5IHBhdGgg
d2l0aCB0aGUgZmlsZW5hbWUgcmVtb3ZlZC4KQEAgLTE1OCw5ICsxNjUsOSBAQCBGaWxlUGF0aCBG
aWxlUGF0aDo6UmVtb3ZlRGlyZWN0b3J5TmFtZSgpIGNvbnN0IHsKIC8vIE9uIFdpbmRvd3MgcGxh
dGZvcm0sICdcJyBpcyB0aGUgcGF0aCBzZXBhcmF0b3IsIG90aGVyd2lzZSBpdCBpcyAnLycuCiBG
aWxlUGF0aCBGaWxlUGF0aDo6UmVtb3ZlRmlsZU5hbWUoKSBjb25zdCB7CiAgIGNvbnN0IGNoYXIq
IGNvbnN0IGxhc3Rfc2VwID0gRmluZExhc3RQYXRoU2VwYXJhdG9yKCk7Ci0gIFN0cmluZyBkaXI7
CisgIHN0ZDo6c3RyaW5nIGRpcjsKICAgaWYgKGxhc3Rfc2VwKSB7Ci0gICAgZGlyID0gU3RyaW5n
KGNfc3RyKCksIGxhc3Rfc2VwICsgMSAtIGNfc3RyKCkpOworICAgIGRpciA9IHN0ZDo6c3RyaW5n
KGNfc3RyKCksIGxhc3Rfc2VwICsgMSAtIGNfc3RyKCkpOwogICB9IGVsc2UgewogICAgIGRpciA9
IGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nOwogICB9CkBAIC0xNzcsMTEgKzE4NCwxMiBAQCBGaWxl
UGF0aCBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKGNvbnN0IEZpbGVQYXRoJiBkaXJlY3RvcnksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZpbGVQYXRoJiBiYXNlX25hbWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1iZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lvbikgewotICBTdHJpbmcg
ZmlsZTsKKyAgc3RkOjpzdHJpbmcgZmlsZTsKICAgaWYgKG51bWJlciA9PSAwKSB7Ci0gICAgZmls
ZSA9IFN0cmluZzo6Rm9ybWF0KCIlcy4lcyIsIGJhc2VfbmFtZS5jX3N0cigpLCBleHRlbnNpb24p
OworICAgIGZpbGUgPSBiYXNlX25hbWUuc3RyaW5nKCkgKyAiLiIgKyBleHRlbnNpb247CiAgIH0g
ZWxzZSB7Ci0gICAgZmlsZSA9IFN0cmluZzo6Rm9ybWF0KCIlc18lZC4lcyIsIGJhc2VfbmFtZS5j
X3N0cigpLCBudW1iZXIsIGV4dGVuc2lvbik7CisgICAgZmlsZSA9IGJhc2VfbmFtZS5zdHJpbmco
KSArICJfIiArIFN0cmVhbWFibGVUb1N0cmluZyhudW1iZXIpCisgICAgICAgICsgIi4iICsgZXh0
ZW5zaW9uOwogICB9CiAgIHJldHVybiBDb25jYXRQYXRocyhkaXJlY3RvcnksIEZpbGVQYXRoKGZp
bGUpKTsKIH0KQEAgLTE5Myw4ICsyMDEsNyBAQCBGaWxlUGF0aCBGaWxlUGF0aDo6Q29uY2F0UGF0
aHMoY29uc3QgRmlsZVBhdGgmIGRpcmVjdG9yeSwKICAgaWYgKGRpcmVjdG9yeS5Jc0VtcHR5KCkp
CiAgICAgcmV0dXJuIHJlbGF0aXZlX3BhdGg7CiAgIGNvbnN0IEZpbGVQYXRoIGRpcihkaXJlY3Rv
cnkuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkpOwotICByZXR1cm4gRmlsZVBhdGgoU3Ry
aW5nOjpGb3JtYXQoIiVzJWMlcyIsIGRpci5jX3N0cigpLCBrUGF0aFNlcGFyYXRvciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlX3BhdGguY19zdHIoKSkpOworICBy
ZXR1cm4gRmlsZVBhdGgoZGlyLnN0cmluZygpICsga1BhdGhTZXBhcmF0b3IgKyByZWxhdGl2ZV9w
YXRoLnN0cmluZygpKTsKIH0KIAogLy8gUmV0dXJucyB0cnVlIGlmIHBhdGhuYW1lIGRlc2NyaWJl
cyBzb21ldGhpbmcgZmluZGFibGUgaW4gdGhlIGZpbGUtc3lzdGVtLApAQCAtMzM4LDcgKzM0NSw3
IEBAIGJvb2wgRmlsZVBhdGg6OkNyZWF0ZUZvbGRlcigpIGNvbnN0IHsKIC8vIE9uIFdpbmRvd3Mg
cGxhdGZvcm0sIHVzZXMgXCBhcyB0aGUgc2VwYXJhdG9yLCBvdGhlciBwbGF0Zm9ybXMgdXNlIC8u
CiBGaWxlUGF0aCBGaWxlUGF0aDo6UmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkgY29uc3Qg
ewogICByZXR1cm4gSXNEaXJlY3RvcnkoKQotICAgICAgPyBGaWxlUGF0aChTdHJpbmcocGF0aG5h
bWVfLmNfc3RyKCksIHBhdGhuYW1lXy5sZW5ndGgoKSAtIDEpKQorICAgICAgPyBGaWxlUGF0aChw
YXRobmFtZV8uc3Vic3RyKDAsIHBhdGhuYW1lXy5sZW5ndGgoKSAtIDEpKQogICAgICAgOiAqdGhp
czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWlu
dGVybmFsLWlubC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWludGVybmFs
LWlubC5oCmluZGV4IDAxNDE1ZjdkOTU5ZGNhMDcwOWZhYzE3NjYxMGRiNzM4OGY2MDQ1NTkuLmVk
OGE2ODJhOTY0ZjA3MGNhMDZhOWQ4ZTlhNzdlYTU2OGRiMGZkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgKQEAgLTQwLDEzICs0MCwx
MyBAQAogLy8gR1RFU1RfSU1QTEVNRU5UQVRJT05fIGlzIGRlZmluZWQgdG8gMSBpZmYgdGhlIGN1
cnJlbnQgdHJhbnNsYXRpb24gdW5pdCBpcwogLy8gcGFydCBvZiBHb29nbGUgVGVzdCdzIGltcGxl
bWVudGF0aW9uOyBvdGhlcndpc2UgaXQncyB1bmRlZmluZWQuCiAjaWYgIUdURVNUX0lNUExFTUVO
VEFUSU9OXwotLy8gQSB1c2VyIGlzIHRyeWluZyB0byBpbmNsdWRlIHRoaXMgZnJvbSBoaXMgY29k
ZSAtIGp1c3Qgc2F5IG5vLgotI2Vycm9yICJndGVzdC1pbnRlcm5hbC1pbmwuaCBpcyBwYXJ0IG9m
IEdvb2dsZSBUZXN0J3MgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24uIgotI2Vycm9yICJJdCBtdXN0
IG5vdCBiZSBpbmNsdWRlZCBleGNlcHQgYnkgR29vZ2xlIFRlc3QgaXRzZWxmLiIKKy8vIElmIHRo
aXMgZmlsZSBpcyBpbmNsdWRlZCBmcm9tIHRoZSB1c2VyJ3MgY29kZSwganVzdCBzYXkgbm8uCisj
IGVycm9yICJndGVzdC1pbnRlcm5hbC1pbmwuaCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MgaW50
ZXJuYWwgaW1wbGVtZW50YXRpb24uIgorIyBlcnJvciAiSXQgbXVzdCBub3QgYmUgaW5jbHVkZWQg
ZXhjZXB0IGJ5IEdvb2dsZSBUZXN0IGl0c2VsZi4iCiAjZW5kaWYgIC8vIEdURVNUX0lNUExFTUVO
VEFUSU9OXwogCiAjaWZuZGVmIF9XSU4zMl9XQ0UKLSNpbmNsdWRlIDxlcnJuby5oPgorIyBpbmNs
dWRlIDxlcnJuby5oPgogI2VuZGlmICAvLyAhX1dJTjMyX1dDRQogI2luY2x1ZGUgPHN0ZGRlZi5o
PgogI2luY2x1ZGUgPHN0ZGxpYi5oPiAgLy8gRm9yIHN0cnRvbGwvX3N0cnRvdWw2NC9tYWxsb2Mv
ZnJlZS4KQEAgLTU2LDE0ICs1NiwxOSBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2
ZWN0b3I+CiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVk
ZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9S
RVNVTFRTXworIyBpbmNsdWRlIDxhcnBhL2luZXQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxu
ZXRkYi5oPiAgLy8gTk9MSU5UCisjZW5kaWYKIAogI2lmIEdURVNUX09TX1dJTkRPV1MKLSNpbmNs
dWRlIDx3aW5kb3dzLmg+ICAvLyBGb3IgRFdPUkQuCisjIGluY2x1ZGUgPHdpbmRvd3MuaD4gIC8v
IE5PTElOVAogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKLSNpbmNsdWRlIDxndGVzdC9n
dGVzdC5oPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+CisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIgIC8vIE5PTElOVAorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5o
IgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKQEAgLTkzLDcgKzk4LDkgQEAgY29uc3QgY2hhciBr
UmFuZG9tU2VlZEZsYWdbXSA9ICJyYW5kb21fc2VlZCI7CiBjb25zdCBjaGFyIGtSZXBlYXRGbGFn
W10gPSAicmVwZWF0IjsKIGNvbnN0IGNoYXIga1NodWZmbGVGbGFnW10gPSAic2h1ZmZsZSI7CiBj
b25zdCBjaGFyIGtTdGFja1RyYWNlRGVwdGhGbGFnW10gPSAic3RhY2tfdHJhY2VfZGVwdGgiOwor
Y29uc3QgY2hhciBrU3RyZWFtUmVzdWx0VG9GbGFnW10gPSAic3RyZWFtX3Jlc3VsdF90byI7CiBj
b25zdCBjaGFyIGtUaHJvd09uRmFpbHVyZUZsYWdbXSA9ICJ0aHJvd19vbl9mYWlsdXJlIjsKK2Nv
bnN0IGNoYXIga0ZsYWdmaWxlRmxhZ1tdID0gImZsYWdmaWxlIjsKIAogLy8gQSB2YWxpZCByYW5k
b20gc2VlZCBtdXN0IGJlIGluIFsxLCBrTWF4UmFuZG9tU2VlZF0uCiBjb25zdCBpbnQga01heFJh
bmRvbVNlZWQgPSA5OTk5OTsKQEAgLTExMSw2ICsxMTgsMTIgQEAgR1RFU1RfQVBJXyBib29sIFNo
b3VsZFVzZUNvbG9yKGJvb2wgc3Rkb3V0X2lzX3R0eSk7CiAvLyBGb3JtYXRzIHRoZSBnaXZlbiB0
aW1lIGluIG1pbGxpc2Vjb25kcyBhcyBzZWNvbmRzLgogR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBG
b3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHMoVGltZUluTWlsbGlzIG1zKTsKIAorLy8gQ29udmVy
dHMgdGhlIGdpdmVuIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIGEgZGF0ZSBzdHJpbmcgaW4gdGhl
IElTTyA4NjAxCisvLyBmb3JtYXQsIHdpdGhvdXQgdGhlIHRpbWV6b25lIGluZm9ybWF0aW9uLiAg
Ti5CLjogZHVlIHRvIHRoZSB1c2UgdGhlCisvLyBub24tcmVlbnRyYW50IGxvY2FsdGltZSgpIGZ1
bmN0aW9uLCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB0aHJlYWQgc2FmZS4gIERvCisvLyBub3QgdXNl
IGl0IGluIGFueSBjb2RlIHRoYXQgY2FuIGJlIGNhbGxlZCBmcm9tIG11bHRpcGxlIHRocmVhZHMu
CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAx
KFRpbWVJbk1pbGxpcyBtcyk7CisKIC8vIFBhcnNlcyBhIHN0cmluZyBmb3IgYW4gSW50MzIgZmxh
ZywgaW4gdGhlIGZvcm0gb2YgIi0tZmxhZz12YWx1ZSIuCiAvLwogLy8gT24gc3VjY2Vzcywgc3Rv
cmVzIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyBpbiAqdmFsdWUsIGFuZCByZXR1cm5zCkBAIC0xNjUs
NiArMTc4LDcgQEAgY2xhc3MgR1Rlc3RGbGFnU2F2ZXIgewogICAgIHJlcGVhdF8gPSBHVEVTVF9G
TEFHKHJlcGVhdCk7CiAgICAgc2h1ZmZsZV8gPSBHVEVTVF9GTEFHKHNodWZmbGUpOwogICAgIHN0
YWNrX3RyYWNlX2RlcHRoXyA9IEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpOworICAgIHN0
cmVhbV9yZXN1bHRfdG9fID0gR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKTsKICAgICB0aHJv
d19vbl9mYWlsdXJlXyA9IEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSk7CiAgIH0KIApAQCAt
MTg1LDM3ICsxOTksMzggQEAgY2xhc3MgR1Rlc3RGbGFnU2F2ZXIgewogICAgIEdURVNUX0ZMQUco
cmVwZWF0KSA9IHJlcGVhdF87CiAgICAgR1RFU1RfRkxBRyhzaHVmZmxlKSA9IHNodWZmbGVfOwog
ICAgIEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpID0gc3RhY2tfdHJhY2VfZGVwdGhfOwor
ICAgIEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykgPSBzdHJlYW1fcmVzdWx0X3RvXzsKICAg
ICBHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdGhyb3dfb25fZmFpbHVyZV87CiAgIH0K
KwogIHByaXZhdGU6CiAgIC8vIEZpZWxkcyBmb3Igc2F2aW5nIHRoZSBvcmlnaW5hbCB2YWx1ZXMg
b2YgZmxhZ3MuCiAgIGJvb2wgYWxzb19ydW5fZGlzYWJsZWRfdGVzdHNfOwogICBib29sIGJyZWFr
X29uX2ZhaWx1cmVfOwogICBib29sIGNhdGNoX2V4Y2VwdGlvbnNfOwotICBTdHJpbmcgY29sb3Jf
OwotICBTdHJpbmcgZGVhdGhfdGVzdF9zdHlsZV87CisgIHN0ZDo6c3RyaW5nIGNvbG9yXzsKKyAg
c3RkOjpzdHJpbmcgZGVhdGhfdGVzdF9zdHlsZV87CiAgIGJvb2wgZGVhdGhfdGVzdF91c2VfZm9y
a187Ci0gIFN0cmluZyBmaWx0ZXJfOwotICBTdHJpbmcgaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3Rf
OworICBzdGQ6OnN0cmluZyBmaWx0ZXJfOworICBzdGQ6OnN0cmluZyBpbnRlcm5hbF9ydW5fZGVh
dGhfdGVzdF87CiAgIGJvb2wgbGlzdF90ZXN0c187Ci0gIFN0cmluZyBvdXRwdXRfOworICBzdGQ6
OnN0cmluZyBvdXRwdXRfOwogICBib29sIHByaW50X3RpbWVfOwogICBpbnRlcm5hbDo6SW50MzIg
cmFuZG9tX3NlZWRfOwogICBpbnRlcm5hbDo6SW50MzIgcmVwZWF0XzsKICAgYm9vbCBzaHVmZmxl
XzsKICAgaW50ZXJuYWw6OkludDMyIHN0YWNrX3RyYWNlX2RlcHRoXzsKKyAgc3RkOjpzdHJpbmcg
c3RyZWFtX3Jlc3VsdF90b187CiAgIGJvb2wgdGhyb3dfb25fZmFpbHVyZV87CiB9IEdURVNUX0FU
VFJJQlVURV9VTlVTRURfOwogCiAvLyBDb252ZXJ0cyBhIFVuaWNvZGUgY29kZSBwb2ludCB0byBh
IG5hcnJvdyBzdHJpbmcgaW4gVVRGLTggZW5jb2RpbmcuCiAvLyBjb2RlX3BvaW50IHBhcmFtZXRl
ciBpcyBvZiB0eXBlIFVJbnQzMiBiZWNhdXNlIHdjaGFyX3QgbWF5IG5vdCBiZQogLy8gd2lkZSBl
bm91Z2ggdG8gY29udGFpbiBhIGNvZGUgcG9pbnQuCi0vLyBUaGUgb3V0cHV0IGJ1ZmZlciBzdHIg
bXVzdCBjb250YWludCBhdCBsZWFzdCAzMiBjaGFyYWN0ZXJzLgotLy8gVGhlIGZ1bmN0aW9uIHJl
dHVybnMgdGhlIGFkZHJlc3Mgb2YgdGhlIG91dHB1dCBidWZmZXIuCiAvLyBJZiB0aGUgY29kZV9w
b2ludCBpcyBub3QgYSB2YWxpZCBVbmljb2RlIGNvZGUgcG9pbnQKLS8vIChpLmUuIG91dHNpZGUg
b2YgVW5pY29kZSByYW5nZSBVKzAgdG8gVSsxMEZGRkYpIGl0IHdpbGwgYmUgb3V0cHV0Ci0vLyBh
cyAnKEludmFsaWQgVW5pY29kZSAweFhYWFhYWFhYKScuCi1HVEVTVF9BUElfIGNoYXIqIENvZGVQ
b2ludFRvVXRmOChVSW50MzIgY29kZV9wb2ludCwgY2hhciogc3RyKTsKKy8vIChpLmUuIG91dHNp
ZGUgb2YgVW5pY29kZSByYW5nZSBVKzAgdG8gVSsxMEZGRkYpIGl0IHdpbGwgYmUgY29udmVydGVk
CisvLyB0byAiKEludmFsaWQgVW5pY29kZSAweFhYWFhYWFhYKSIuCitHVEVTVF9BUElfIHN0ZDo6
c3RyaW5nIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9wb2ludCk7CiAKIC8vIENvbnZlcnRz
IGEgd2lkZSBzdHJpbmcgdG8gYSBuYXJyb3cgc3RyaW5nIGluIFVURi04IGVuY29kaW5nLgogLy8g
VGhlIHdpZGUgc3RyaW5nIGlzIGFzc3VtZWQgdG8gaGF2ZSB0aGUgZm9sbG93aW5nIGVuY29kaW5n
OgpAQCAtMjMwLDcgKzI0NSw3IEBAIEdURVNUX0FQSV8gY2hhciogQ29kZVBvaW50VG9VdGY4KFVJ
bnQzMiBjb2RlX3BvaW50LCBjaGFyKiBzdHIpOwogLy8gYXMgJyhJbnZhbGlkIFVuaWNvZGUgMHhY
WFhYWFhYWCknLiBJZiB0aGUgc3RyaW5nIGlzIGluIFVURjE2IGVuY29kaW5nCiAvLyBhbmQgY29u
dGFpbnMgaW52YWxpZCBVVEYtMTYgc3Vycm9nYXRlIHBhaXJzLCB2YWx1ZXMgaW4gdGhvc2UgcGFp
cnMKIC8vIHdpbGwgYmUgZW5jb2RlZCBhcyBpbmRpdmlkdWFsIFVuaWNvZGUgY2hhcmFjdGVycyBm
cm9tIEJhc2ljIE5vcm1hbCBQbGFuZS4KLUdURVNUX0FQSV8gU3RyaW5nIFdpZGVTdHJpbmdUb1V0
ZjgoY29uc3Qgd2NoYXJfdCogc3RyLCBpbnQgbnVtX2NoYXJzKTsKK0dURVNUX0FQSV8gc3RkOjpz
dHJpbmcgV2lkZVN0cmluZ1RvVXRmOChjb25zdCB3Y2hhcl90KiBzdHIsIGludCBudW1fY2hhcnMp
OwogCiAvLyBSZWFkcyB0aGUgR1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEUgZW52aXJvbm1lbnQgdmFy
aWFibGUsIGFuZCBjcmVhdGVzIHRoZSBmaWxlCiAvLyBpZiB0aGUgdmFyaWFibGUgaXMgcHJlc2Vu
dC4gSWYgYSBmaWxlIGFscmVhZHkgZXhpc3RzIGF0IHRoaXMgbG9jYXRpb24sIHRoaXMKQEAgLTI2
Niw3ICsyODEsMTQgQEAgR1RFU1RfQVBJXyBib29sIFNob3VsZFJ1blRlc3RPblNoYXJkKAogLy8g
dGhlIGdpdmVuIHByZWRpY2F0ZS4KIHRlbXBsYXRlIDxjbGFzcyBDb250YWluZXIsIHR5cGVuYW1l
IFByZWRpY2F0ZT4KIGlubGluZSBpbnQgQ291bnRJZihjb25zdCBDb250YWluZXImIGMsIFByZWRp
Y2F0ZSBwcmVkaWNhdGUpIHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oc3RkOjpjb3VudF9p
ZihjLmJlZ2luKCksIGMuZW5kKCksIHByZWRpY2F0ZSkpOworICAvLyBJbXBsZW1lbnRlZCBhcyBh
biBleHBsaWNpdCBsb29wIHNpbmNlIHN0ZDo6Y291bnRfaWYoKSBpbiBsaWJDc3RkIG9uCisgIC8v
IFNvbGFyaXMgaGFzIGEgbm9uLXN0YW5kYXJkIHNpZ25hdHVyZS4KKyAgaW50IGNvdW50ID0gMDsK
KyAgZm9yICh0eXBlbmFtZSBDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYy5iZWdpbigp
OyBpdCAhPSBjLmVuZCgpOyArK2l0KSB7CisgICAgaWYgKHByZWRpY2F0ZSgqaXQpKQorICAgICAg
Kytjb3VudDsKKyAgfQorICByZXR1cm4gY291bnQ7CiB9CiAKIC8vIEFwcGxpZXMgYSBmdW5jdGlv
bi9mdW5jdG9yIHRvIGVhY2ggZWxlbWVudCBpbiB0aGUgY29udGFpbmVyLgpAQCAtMzI3LDk1ICsz
NDksMTUgQEAgY2xhc3MgVGVzdFByb3BlcnR5S2V5SXMgewogICAvLyBDb25zdHJ1Y3Rvci4KICAg
Ly8KICAgLy8gVGVzdFByb3BlcnR5S2V5SXMgaGFzIE5PIGRlZmF1bHQgY29uc3RydWN0b3IuCi0g
IGV4cGxpY2l0IFRlc3RQcm9wZXJ0eUtleUlzKGNvbnN0IGNoYXIqIGtleSkKLSAgICAgIDoga2V5
XyhrZXkpIHt9CisgIGV4cGxpY2l0IFRlc3RQcm9wZXJ0eUtleUlzKGNvbnN0IHN0ZDo6c3RyaW5n
JiBrZXkpIDoga2V5XyhrZXkpIHt9CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdGVzdCBu
YW1lIG9mIHRlc3QgcHJvcGVydHkgbWF0Y2hlcyBvbiBrZXlfLgogICBib29sIG9wZXJhdG9yKCko
Y29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5KSBjb25zdCB7Ci0gICAgcmV0dXJuIFN0
cmluZyh0ZXN0X3Byb3BlcnR5LmtleSgpKS5Db21wYXJlKGtleV8pID09IDA7CisgICAgcmV0dXJu
IHRlc3RfcHJvcGVydHkua2V5KCkgPT0ga2V5XzsKICAgfQogCiAgcHJpdmF0ZToKLSAgU3RyaW5n
IGtleV87Ci19OwotCi1jbGFzcyBUZXN0SW5mb0ltcGwgewotIHB1YmxpYzoKLSAgVGVzdEluZm9J
bXBsKFRlc3RJbmZvKiBwYXJlbnQsIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAotICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogdGVzdF9jYXNlX2NvbW1lbnQs
Ci0gICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb21tZW50LCBUeXBlSWQgZml4dHVyZV9jbGFz
c19pZCwKLSAgICAgICAgICAgICAgIGludGVybmFsOjpUZXN0RmFjdG9yeUJhc2UqIGZhY3Rvcnkp
OwotICB+VGVzdEluZm9JbXBsKCk7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBz
aG91bGQgcnVuLgotICBib29sIHNob3VsZF9ydW4oKSBjb25zdCB7IHJldHVybiBzaG91bGRfcnVu
XzsgfQotCi0gIC8vIFNldHMgdGhlIHNob3VsZF9ydW4gbWVtYmVyLgotICB2b2lkIHNldF9zaG91
bGRfcnVuKGJvb2wgc2hvdWxkKSB7IHNob3VsZF9ydW5fID0gc2hvdWxkOyB9Ci0KLSAgLy8gUmV0
dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBpcyBkaXNhYmxlZC4gRGlzYWJsZWQgdGVzdHMgYXJlIG5v
dCBydW4uCi0gIGJvb2wgaXNfZGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBpc19kaXNhYmxlZF87
IH0KLQotICAvLyBTZXRzIHRoZSBpc19kaXNhYmxlZCBtZW1iZXIuCi0gIHZvaWQgc2V0X2lzX2Rp
c2FibGVkKGJvb2wgaXMpIHsgaXNfZGlzYWJsZWRfID0gaXM7IH0KLQotICAvLyBSZXR1cm5zIHRy
dWUgaWYgdGhpcyB0ZXN0IG1hdGNoZXMgdGhlIGZpbHRlciBzcGVjaWZpZWQgYnkgdGhlIHVzZXIu
Ci0gIGJvb2wgbWF0Y2hlc19maWx0ZXIoKSBjb25zdCB7IHJldHVybiBtYXRjaGVzX2ZpbHRlcl87
IH0KLQotICAvLyBTZXRzIHRoZSBtYXRjaGVzX2ZpbHRlciBtZW1iZXIuCi0gIHZvaWQgc2V0X21h
dGNoZXNfZmlsdGVyKGJvb2wgbWF0Y2hlcykgeyBtYXRjaGVzX2ZpbHRlcl8gPSBtYXRjaGVzOyB9
Ci0KLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIG5hbWUuCi0gIGNvbnN0IGNoYXIqIHRlc3Rf
Y2FzZV9uYW1lKCkgY29uc3QgeyByZXR1cm4gdGVzdF9jYXNlX25hbWVfLmNfc3RyKCk7IH0KLQot
ICAvLyBSZXR1cm5zIHRoZSB0ZXN0IG5hbWUuCi0gIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7
IHJldHVybiBuYW1lXy5jX3N0cigpOyB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIGNv
bW1lbnQuCi0gIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9jb21tZW50KCkgY29uc3QgeyByZXR1cm4g
dGVzdF9jYXNlX2NvbW1lbnRfLmNfc3RyKCk7IH0KLQotICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNv
bW1lbnQuCi0gIGNvbnN0IGNoYXIqIGNvbW1lbnQoKSBjb25zdCB7IHJldHVybiBjb21tZW50Xy5j
X3N0cigpOyB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgSUQgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFz
cy4KLSAgVHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQoKSBjb25zdCB7IHJldHVybiBmaXh0dXJlX2Ns
YXNzX2lkXzsgfQotCi0gIC8vIFJldHVybnMgdGhlIHRlc3QgcmVzdWx0LgotICBUZXN0UmVzdWx0
KiByZXN1bHQoKSB7IHJldHVybiAmcmVzdWx0XzsgfQotICBjb25zdCBUZXN0UmVzdWx0KiByZXN1
bHQoKSBjb25zdCB7IHJldHVybiAmcmVzdWx0XzsgfQotCi0gIC8vIENyZWF0ZXMgdGhlIHRlc3Qg
b2JqZWN0LCBydW5zIGl0LCByZWNvcmRzIGl0cyByZXN1bHQsIGFuZCB0aGVuCi0gIC8vIGRlbGV0
ZXMgaXQuCi0gIHZvaWQgUnVuKCk7Ci0KLSAgLy8gQ2xlYXJzIHRoZSB0ZXN0IHJlc3VsdC4KLSAg
dm9pZCBDbGVhclJlc3VsdCgpIHsgcmVzdWx0Xy5DbGVhcigpOyB9Ci0KLSAgLy8gQ2xlYXJzIHRo
ZSB0ZXN0IHJlc3VsdCBpbiB0aGUgZ2l2ZW4gVGVzdEluZm8gb2JqZWN0LgotICBzdGF0aWMgdm9p
ZCBDbGVhclRlc3RSZXN1bHQoVGVzdEluZm8gKiB0ZXN0X2luZm8pIHsKLSAgICB0ZXN0X2luZm8t
PmltcGwoKS0+Q2xlYXJSZXN1bHQoKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gVGhlc2UgZmll
bGRzIGFyZSBpbW11dGFibGUgcHJvcGVydGllcyBvZiB0aGUgdGVzdC4KLSAgVGVzdEluZm8qIGNv
bnN0IHBhcmVudF87ICAgICAgICAgIC8vIFRoZSBvd25lciBvZiB0aGlzIG9iamVjdAotICBjb25z
dCBTdHJpbmcgdGVzdF9jYXNlX25hbWVfOyAgICAgLy8gVGVzdCBjYXNlIG5hbWUKLSAgY29uc3Qg
U3RyaW5nIG5hbWVfOyAgICAgICAgICAgICAgIC8vIFRlc3QgbmFtZQotICBjb25zdCBTdHJpbmcg
dGVzdF9jYXNlX2NvbW1lbnRfOyAgLy8gVGVzdCBjYXNlIGNvbW1lbnQKLSAgY29uc3QgU3RyaW5n
IGNvbW1lbnRfOyAgICAgICAgICAgIC8vIFRlc3QgY29tbWVudAotICBjb25zdCBUeXBlSWQgZml4
dHVyZV9jbGFzc19pZF87ICAgLy8gSUQgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcwotICBib29s
IHNob3VsZF9ydW5fOyAgICAgICAgICAgICAgICAgLy8gVHJ1ZSBpZmYgdGhpcyB0ZXN0IHNob3Vs
ZCBydW4KLSAgYm9vbCBpc19kaXNhYmxlZF87ICAgICAgICAgICAgICAgIC8vIFRydWUgaWZmIHRo
aXMgdGVzdCBpcyBkaXNhYmxlZAotICBib29sIG1hdGNoZXNfZmlsdGVyXzsgICAgICAgICAgICAg
Ly8gVHJ1ZSBpZiB0aGlzIHRlc3QgbWF0Y2hlcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHVzZXItc3BlY2lmaWVkIGZpbHRlci4KLSAgaW50ZXJuYWw6OlRlc3RG
YWN0b3J5QmFzZSogY29uc3QgZmFjdG9yeV87ICAvLyBUaGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgdGVz
dCBvYmplY3QKLQotICAvLyBUaGlzIGZpZWxkIGlzIG11dGFibGUgYW5kIG5lZWRzIHRvIGJlIHJl
c2V0IGJlZm9yZSBydW5uaW5nIHRoZQotICAvLyB0ZXN0IGZvciB0aGUgc2Vjb25kIHRpbWUuCi0g
IFRlc3RSZXN1bHQgcmVzdWx0XzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05f
KFRlc3RJbmZvSW1wbCk7CisgIHN0ZDo6c3RyaW5nIGtleV87CiB9OwogCiAvLyBDbGFzcyBVbml0
VGVzdE9wdGlvbnMuCkBAIC00MzMsMTIgKzM3NSwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRU
ZXN0T3B0aW9ucyB7CiAgIC8vIEZ1bmN0aW9ucyBmb3IgcHJvY2Vzc2luZyB0aGUgZ3Rlc3Rfb3V0
cHV0IGZsYWcuCiAKICAgLy8gUmV0dXJucyB0aGUgb3V0cHV0IGZvcm1hdCwgb3IgIiIgZm9yIG5v
cm1hbCBwcmludGVkIG91dHB1dC4KLSAgc3RhdGljIFN0cmluZyBHZXRPdXRwdXRGb3JtYXQoKTsK
KyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldE91dHB1dEZvcm1hdCgpOwogCiAgIC8vIFJldHVybnMg
dGhlIGFic29sdXRlIHBhdGggb2YgdGhlIHJlcXVlc3RlZCBvdXRwdXQgZmlsZSwgb3IgdGhlCiAg
IC8vIGRlZmF1bHQgKHRlc3RfZGV0YWlsLnhtbCBpbiB0aGUgb3JpZ2luYWwgd29ya2luZyBkaXJl
Y3RvcnkpIGlmCiAgIC8vIG5vbmUgd2FzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLgotICBzdGF0aWMg
U3RyaW5nIEdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpOworICBzdGF0aWMgc3RkOjpzdHJp
bmcgR2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7CiAKICAgLy8gRnVuY3Rpb25zIGZvciBw
cm9jZXNzaW5nIHRoZSBndGVzdF9maWx0ZXIgZmxhZy4KIApAQCAtNDUxLDggKzM5Myw4IEBAIGNs
YXNzIEdURVNUX0FQSV8gVW5pdFRlc3RPcHRpb25zIHsKIAogICAvLyBSZXR1cm5zIHRydWUgaWZm
IHRoZSB1c2VyLXNwZWNpZmllZCBmaWx0ZXIgbWF0Y2hlcyB0aGUgdGVzdCBjYXNlCiAgIC8vIG5h
bWUgYW5kIHRoZSB0ZXN0IG5hbWUuCi0gIHN0YXRpYyBib29sIEZpbHRlck1hdGNoZXNUZXN0KGNv
bnN0IFN0cmluZyAmdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFN0cmluZyAmdGVzdF9uYW1lKTsKKyAgc3RhdGljIGJvb2wgRmlsdGVyTWF0Y2hl
c1Rlc3QoY29uc3Qgc3RkOjpzdHJpbmcgJnRlc3RfY2FzZV9uYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdGVzdF9uYW1lKTsKIAogI2lmIEdU
RVNUX09TX1dJTkRPV1MKICAgLy8gRnVuY3Rpb24gZm9yIHN1cHBvcnRpbmcgdGhlIGd0ZXN0X2Nh
dGNoX2V4Y2VwdGlvbiBmbGFnLgpAQCAtNDY1LDcgKzQwNyw3IEBAIGNsYXNzIEdURVNUX0FQSV8g
VW5pdFRlc3RPcHRpb25zIHsKIAogICAvLyBSZXR1cm5zIHRydWUgaWYgIm5hbWUiIG1hdGNoZXMg
dGhlICc6JyBzZXBhcmF0ZWQgbGlzdCBvZiBnbG9iLXN0eWxlCiAgIC8vIGZpbHRlcnMgaW4gImZp
bHRlciIuCi0gIHN0YXRpYyBib29sIE1hdGNoZXNGaWx0ZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBjaGFyKiBmaWx0ZXIpOworICBzdGF0aWMgYm9vbCBNYXRjaGVzRmlsdGVyKGNvbnN0IHN0
ZDo6c3RyaW5nJiBuYW1lLCBjb25zdCBjaGFyKiBmaWx0ZXIpOwogfTsKIAogLy8gUmV0dXJucyB0
aGUgY3VycmVudCBhcHBsaWNhdGlvbidzIG5hbWUsIHJlbW92aW5nIGRpcmVjdG9yeSBwYXRoIGlm
IHRoYXQKQEAgLTQ3OCwxOSArNDIwLDIzIEBAIGNsYXNzIE9zU3RhY2tUcmFjZUdldHRlckludGVy
ZmFjZSB7CiAgIE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSgpIHt9CiAgIHZpcnR1YWwgfk9z
U3RhY2tUcmFjZUdldHRlckludGVyZmFjZSgpIHt9CiAKLSAgLy8gUmV0dXJucyB0aGUgY3VycmVu
dCBPUyBzdGFjayB0cmFjZSBhcyBhIFN0cmluZy4gIFBhcmFtZXRlcnM6CisgIC8vIFJldHVybnMg
dGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYW4gc3RkOjpzdHJpbmcuICBQYXJhbWV0ZXJz
OgogICAvLwogICAvLyAgIG1heF9kZXB0aCAgLSB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhY2sg
ZnJhbWVzIHRvIGJlIGluY2x1ZGVkCiAgIC8vICAgICAgICAgICAgICAgIGluIHRoZSB0cmFjZS4K
ICAgLy8gICBza2lwX2NvdW50IC0gdGhlIG51bWJlciBvZiB0b3AgZnJhbWVzIHRvIGJlIHNraXBw
ZWQ7IGRvZXNuJ3QgY291bnQKICAgLy8gICAgICAgICAgICAgICAgYWdhaW5zdCBtYXhfZGVwdGgu
Ci0gIHZpcnR1YWwgU3RyaW5nIEN1cnJlbnRTdGFja1RyYWNlKGludCBtYXhfZGVwdGgsIGludCBz
a2lwX2NvdW50KSA9IDA7CisgIHZpcnR1YWwgc3RyaW5nIEN1cnJlbnRTdGFja1RyYWNlKGludCBt
YXhfZGVwdGgsIGludCBza2lwX2NvdW50KSA9IDA7CiAKICAgLy8gVXBvbkxlYXZpbmdHVGVzdCgp
IHNob3VsZCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIEdvb2dsZSBUZXN0IGNhbGxzCiAg
IC8vIHVzZXIgY29kZS4gSXQgc2F2ZXMgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVu
dCBzdGFjayB0aGF0CiAgIC8vIEN1cnJlbnRTdGFja1RyYWNlKCkgd2lsbCB1c2UgdG8gZmluZCBh
bmQgaGlkZSBHb29nbGUgVGVzdCBzdGFjayBmcmFtZXMuCiAgIHZpcnR1YWwgdm9pZCBVcG9uTGVh
dmluZ0dUZXN0KCkgPSAwOwogCisgIC8vIFRoaXMgc3RyaW5nIGlzIGluc2VydGVkIGluIHBsYWNl
IG9mIHN0YWNrIGZyYW1lcyB0aGF0IGFyZSBwYXJ0IG9mCisgIC8vIEdvb2dsZSBUZXN0J3MgaW1w
bGVtZW50YXRpb24uCisgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBrRWxpZGVkRnJhbWVzTWFy
a2VyOworCiAgcHJpdmF0ZToKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhPc1N0
YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UpOwogfTsKQEAgLTQ5OCwyMyArNDQ0LDEyIEBAIGNsYXNz
IE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSB7CiAvLyBBIHdvcmtpbmcgaW1wbGVtZW50YXRp
b24gb2YgdGhlIE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSBpbnRlcmZhY2UuCiBjbGFzcyBP
c1N0YWNrVHJhY2VHZXR0ZXIgOiBwdWJsaWMgT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlIHsK
ICBwdWJsaWM6Ci0gIE9zU3RhY2tUcmFjZUdldHRlcigpIDogY2FsbGVyX2ZyYW1lXyhOVUxMKSB7
fQotICB2aXJ0dWFsIFN0cmluZyBDdXJyZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQg
c2tpcF9jb3VudCk7Ci0gIHZpcnR1YWwgdm9pZCBVcG9uTGVhdmluZ0dUZXN0KCk7CisgIE9zU3Rh
Y2tUcmFjZUdldHRlcigpIHt9CiAKLSAgLy8gVGhpcyBzdHJpbmcgaXMgaW5zZXJ0ZWQgaW4gcGxh
Y2Ugb2Ygc3RhY2sgZnJhbWVzIHRoYXQgYXJlIHBhcnQgb2YKLSAgLy8gR29vZ2xlIFRlc3QncyBp
bXBsZW1lbnRhdGlvbi4KLSAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGtFbGlkZWRGcmFtZXNN
YXJrZXI7CisgIHZpcnR1YWwgc3RyaW5nIEN1cnJlbnRTdGFja1RyYWNlKGludCBtYXhfZGVwdGgs
IGludCBza2lwX2NvdW50KTsKKyAgdmlydHVhbCB2b2lkIFVwb25MZWF2aW5nR1Rlc3QoKTsKIAog
IHByaXZhdGU6Ci0gIE11dGV4IG11dGV4XzsgIC8vIHByb3RlY3RzIGFsbCBpbnRlcm5hbCBzdGF0
ZQotCi0gIC8vIFdlIHNhdmUgdGhlIHN0YWNrIGZyYW1lIGJlbG93IHRoZSBmcmFtZSB0aGF0IGNh
bGxzIHVzZXIgY29kZS4KLSAgLy8gV2UgZG8gdGhpcyBiZWNhdXNlIHRoZSBhZGRyZXNzIG9mIHRo
ZSBmcmFtZSBpbW1lZGlhdGVseSBiZWxvdwotICAvLyB0aGUgdXNlciBjb2RlIGNoYW5nZXMgYmV0
d2VlbiB0aGUgY2FsbCB0byBVcG9uTGVhdmluZ0dUZXN0KCkKLSAgLy8gYW5kIGFueSBjYWxscyB0
byBDdXJyZW50U3RhY2tUcmFjZSgpIGZyb20gd2l0aGluIHRoZSB1c2VyIGNvZGUuCi0gIHZvaWQq
IGNhbGxlcl9mcmFtZV87Ci0KICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhPc1N0
YWNrVHJhY2VHZXR0ZXIpOwogfTsKIApAQCAtNTIyLDcgKzQ1Nyw3IEBAIGNsYXNzIE9zU3RhY2tU
cmFjZUdldHRlciA6IHB1YmxpYyBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2Ugewogc3RydWN0
IFRyYWNlSW5mbyB7CiAgIGNvbnN0IGNoYXIqIGZpbGU7CiAgIGludCBsaW5lOwotICBTdHJpbmcg
bWVzc2FnZTsKKyAgc3RkOjpzdHJpbmcgbWVzc2FnZTsKIH07CiAKIC8vIFRoaXMgaXMgdGhlIGRl
ZmF1bHQgZ2xvYmFsIHRlc3QgcGFydCByZXN1bHQgcmVwb3J0ZXIgdXNlZCBpbiBVbml0VGVzdElt
cGwuCkBAIC02MDYsMTUgKzU0MSwyNSBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7
CiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVzdHMuCiAgIGludCBmYWlsZWRfdGVz
dF9jb3VudCgpIGNvbnN0OwogCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0
cyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhNTCByZXBvcnQuCisgIGludCByZXBvcnRh
YmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdDsKKwogICAvLyBHZXRzIHRoZSBudW1iZXIg
b2YgZGlzYWJsZWQgdGVzdHMuCiAgIGludCBkaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CiAK
KyAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50ZWQgaW4gdGhlIFhNTCBy
ZXBvcnQuCisgIGludCByZXBvcnRhYmxlX3Rlc3RfY291bnQoKSBjb25zdDsKKwogICAvLyBHZXRz
IHRoZSBudW1iZXIgb2YgYWxsIHRlc3RzLgogICBpbnQgdG90YWxfdGVzdF9jb3VudCgpIGNvbnN0
OwogCiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0cyB0aGF0IHNob3VsZCBydW4uCiAgIGlu
dCB0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0OwogCisgIC8vIEdldHMgdGhlIHRpbWUgb2YgdGhl
IHRlc3QgcHJvZ3JhbSBzdGFydCwgaW4gbXMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlCisgIC8vIFVO
SVggZXBvY2guCisgIFRpbWVJbk1pbGxpcyBzdGFydF90aW1lc3RhbXAoKSBjb25zdCB7IHJldHVy
biBzdGFydF90aW1lc3RhbXBfOyB9CisKICAgLy8gR2V0cyB0aGUgZWxhcHNlZCB0aW1lLCBpbiBt
aWxsaXNlY29uZHMuCiAgIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3RpbWUoKSBjb25zdCB7IHJldHVy
biBlbGFwc2VkX3RpbWVfOyB9CiAKQEAgLTY2Myw3ICs2MDgsNyBAQCBjbGFzcyBHVEVTVF9BUElf
IFVuaXRUZXN0SW1wbCB7CiAgIC8vIGdldHRlciwgYW5kIHJldHVybnMgaXQuCiAgIE9zU3RhY2tU
cmFjZUdldHRlckludGVyZmFjZSogb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCk7CiAKLSAgLy8gUmV0
dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBhcyBhIFN0cmluZy4KKyAgLy8gUmV0dXJu
cyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBhcyBhbiBzdGQ6OnN0cmluZy4KICAgLy8KICAg
Ly8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZCBpcyBz
cGVjaWZpZWQgYnkKICAgLy8gdGhlIGd0ZXN0X3N0YWNrX3RyYWNlX2RlcHRoIGZsYWcuICBUaGUg
c2tpcF9jb3VudCBwYXJhbWV0ZXIKQEAgLTY3Myw3ICs2MTgsNyBAQCBjbGFzcyBHVEVTVF9BUElf
IFVuaXRUZXN0SW1wbCB7CiAgIC8vIEZvciBleGFtcGxlLCBpZiBGb28oKSBjYWxscyBCYXIoKSwg
d2hpY2ggaW4gdHVybiBjYWxscwogICAvLyBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKDEp
LCBGb28oKSB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZQogICAvLyB0cmFjZSBidXQgQmFyKCkgYW5k
IEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoKSB3b24ndC4KLSAgU3RyaW5nIEN1cnJlbnRP
c1N0YWNrVHJhY2VFeGNlcHRUb3AoaW50IHNraXBfY291bnQpOworICBzdGQ6OnN0cmluZyBDdXJy
ZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKGludCBza2lwX2NvdW50KSBHVEVTVF9OT19JTkxJTkVf
OwogCiAgIC8vIEZpbmRzIGFuZCByZXR1cm5zIGEgVGVzdENhc2Ugd2l0aCB0aGUgZ2l2ZW4gbmFt
ZS4gIElmIG9uZSBkb2Vzbid0CiAgIC8vIGV4aXN0LCBjcmVhdGVzIG9uZSBhbmQgcmV0dXJucyBp
dC4KQEAgLTY4MSwxMCArNjI2LDEyIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsK
ICAgLy8gQXJndW1lbnRzOgogICAvLwogICAvLyAgIHRlc3RfY2FzZV9uYW1lOiBuYW1lIG9mIHRo
ZSB0ZXN0IGNhc2UKKyAgLy8gICB0eXBlX3BhcmFtOiAgICAgdGhlIG5hbWUgb2YgdGhlIHRlc3Qn
cyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorICAvLyAgICAgICAgICAgICAgICAgICB0aGlz
IGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCiAgIC8vICAgc2V0
X3VwX3RjOiAgICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVz
dCBjYXNlCiAgIC8vICAgdGVhcl9kb3duX3RjOiAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRo
YXQgdGVhcnMgZG93biB0aGUgdGVzdCBjYXNlCiAgIFRlc3RDYXNlKiBHZXRUZXN0Q2FzZShjb25z
dCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGNvbW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0eXBlX3Bh
cmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgVGVzdDo6U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0
X3VwX3RjLAogICAgICAgICAgICAgICAgICAgICAgICAgVGVzdDo6VGVhckRvd25UZXN0Q2FzZUZ1
bmMgdGVhcl9kb3duX3RjKTsKIApAQCAtNjk3LDcgKzY0NCw3IEBAIGNsYXNzIEdURVNUX0FQSV8g
VW5pdFRlc3RJbXBsIHsKICAgLy8gICB0ZXN0X2luZm86ICAgIHRoZSBUZXN0SW5mbyBvYmplY3QK
ICAgdm9pZCBBZGRUZXN0SW5mbyhUZXN0OjpTZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCiAg
ICAgICAgICAgICAgICAgICAgVGVzdDo6VGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3Rj
LAotICAgICAgICAgICAgICAgICAgIFRlc3RJbmZvICogdGVzdF9pbmZvKSB7CisgICAgICAgICAg
ICAgICAgICAgVGVzdEluZm8qIHRlc3RfaW5mbykgewogICAgIC8vIEluIG9yZGVyIHRvIHN1cHBv
cnQgdGhyZWFkLXNhZmUgZGVhdGggdGVzdHMsIHdlIG5lZWQgdG8KICAgICAvLyByZW1lbWJlciB0
aGUgb3JpZ2luYWwgd29ya2luZyBkaXJlY3Rvcnkgd2hlbiB0aGUgdGVzdCBwcm9ncmFtCiAgICAg
Ly8gd2FzIGZpcnN0IGludm9rZWQuICBXZSBjYW5ub3QgZG8gdGhpcyBpbiBSVU5fQUxMX1RFU1RT
KCksIGFzCkBAIC03MTIsNyArNjU5LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwg
ewogICAgIH0KIAogICAgIEdldFRlc3RDYXNlKHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSwK
LSAgICAgICAgICAgICAgICB0ZXN0X2luZm8tPnRlc3RfY2FzZV9jb21tZW50KCksCisgICAgICAg
ICAgICAgICAgdGVzdF9pbmZvLT50eXBlX3BhcmFtKCksCiAgICAgICAgICAgICAgICAgc2V0X3Vw
X3RjLAogICAgICAgICAgICAgICAgIHRlYXJfZG93bl90YyktPkFkZFRlc3RJbmZvKHRlc3RfaW5m
byk7CiAgIH0KQEAgLTczOCwyNyArNjg1LDM1IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJ
bXBsIHsKICAgfQogCiAgIC8vIFJlZ2lzdGVycyBhbGwgcGFyYW1ldGVyaXplZCB0ZXN0cyBkZWZp
bmVkIHVzaW5nIFRFU1RfUCBhbmQKLSAgLy8gSU5TVEFOVElBVEVfVEVTVF9QLCBjcmVhdGluZyBy
ZWd1bGFyIHRlc3RzIGZvciBlYWNoIHRlc3QvcGFyYW1ldGVyCi0gIC8vIGNvbWJpbmF0aW9uLiBU
aGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIG1vcmUgdGhlbiBvbmNlOyBpdCBoYXMKLSAgLy8gZ3Vh
cmRzIHByb3RlY3RpbmcgZnJvbSByZWdpc3RlcmluZyB0aGUgdGVzdHMgbW9yZSB0aGVuIG9uY2Uu
Ci0gIC8vIElmIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGRpc2FibGVkLCBSZWdpc3Rl
clBhcmFtZXRlcml6ZWRUZXN0cwotICAvLyBpcyBwcmVzZW50IGJ1dCBkb2VzIG5vdGhpbmcuCisg
IC8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QLCBjcmVhdGluZyByZWd1bGFyIHRlc3RzIGZvciBl
YWNoIHRlc3QvcGFyYW1ldGVyCisgIC8vIGNvbWJpbmF0aW9uLiBUaGlzIG1ldGhvZCBjYW4gYmUg
Y2FsbGVkIG1vcmUgdGhlbiBvbmNlOyBpdCBoYXMgZ3VhcmRzCisgIC8vIHByb3RlY3RpbmcgZnJv
bSByZWdpc3RlcmluZyB0aGUgdGVzdHMgbW9yZSB0aGVuIG9uY2UuICBJZgorICAvLyB2YWx1ZS1w
YXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBkaXNhYmxlZCwgUmVnaXN0ZXJQYXJhbWV0ZXJpemVkVGVz
dHMgaXMKKyAgLy8gcHJlc2VudCBidXQgZG9lcyBub3RoaW5nLgogICB2b2lkIFJlZ2lzdGVyUGFy
YW1ldGVyaXplZFRlc3RzKCk7CiAKICAgLy8gUnVucyBhbGwgdGVzdHMgaW4gdGhpcyBVbml0VGVz
dCBvYmplY3QsIHByaW50cyB0aGUgcmVzdWx0LCBhbmQKLSAgLy8gcmV0dXJucyAwIGlmIGFsbCB0
ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3IgMSBvdGhlcndpc2UuICBJZiBhbnkKLSAgLy8gZXhjZXB0
aW9uIGlzIHRocm93biBkdXJpbmcgYSB0ZXN0IG9uIFdpbmRvd3MsIHRoaXMgdGVzdCBpcwotICAv
LyBjb25zaWRlcmVkIHRvIGJlIGZhaWxlZCwgYnV0IHRoZSByZXN0IG9mIHRoZSB0ZXN0cyB3aWxs
IHN0aWxsIGJlCi0gIC8vIHJ1bi4gIChXZSBkaXNhYmxlIGV4Y2VwdGlvbnMgb24gTGludXggYW5k
IE1hYyBPUyBYLCBzbyB0aGUgaXNzdWUKLSAgLy8gZG9lc24ndCBhcHBseSB0aGVyZS4pCi0gIGlu
dCBSdW5BbGxUZXN0cygpOwotCi0gIC8vIENsZWFycyB0aGUgcmVzdWx0cyBvZiBhbGwgdGVzdHMs
IGluY2x1ZGluZyB0aGUgYWQgaG9jIHRlc3QuCi0gIHZvaWQgQ2xlYXJSZXN1bHQoKSB7CisgIC8v
IHJldHVybnMgdHJ1ZSBpZiBhbGwgdGVzdHMgYXJlIHN1Y2Nlc3NmdWwuICBJZiBhbnkgZXhjZXB0
aW9uIGlzCisgIC8vIHRocm93biBkdXJpbmcgYSB0ZXN0LCB0aGlzIHRlc3QgaXMgY29uc2lkZXJl
ZCB0byBiZSBmYWlsZWQsIGJ1dAorICAvLyB0aGUgcmVzdCBvZiB0aGUgdGVzdHMgd2lsbCBzdGls
bCBiZSBydW4uCisgIGJvb2wgUnVuQWxsVGVzdHMoKTsKKworICAvLyBDbGVhcnMgdGhlIHJlc3Vs
dHMgb2YgYWxsIHRlc3RzLCBleGNlcHQgdGhlIGFkIGhvYyB0ZXN0cy4KKyAgdm9pZCBDbGVhck5v
bkFkSG9jVGVzdFJlc3VsdCgpIHsKICAgICBGb3JFYWNoKHRlc3RfY2FzZXNfLCBUZXN0Q2FzZTo6
Q2xlYXJUZXN0Q2FzZVJlc3VsdCk7CisgIH0KKworICAvLyBDbGVhcnMgdGhlIHJlc3VsdHMgb2Yg
YWQtaG9jIHRlc3QgYXNzZXJ0aW9ucy4KKyAgdm9pZCBDbGVhckFkSG9jVGVzdFJlc3VsdCgpIHsK
ICAgICBhZF9ob2NfdGVzdF9yZXN1bHRfLkNsZWFyKCk7CiAgIH0KIAorICAvLyBBZGRzIGEgVGVz
dFByb3BlcnR5IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0IHdoZW4gaW52b2tlZCBp
biBhCisgIC8vIGNvbnRleHQgb2YgYSB0ZXN0IG9yIGEgdGVzdCBjYXNlLCBvciB0byB0aGUgZ2xv
YmFsIHByb3BlcnR5IHNldC4gSWYgdGhlCisgIC8vIHJlc3VsdCBhbHJlYWR5IGNvbnRhaW5zIGEg
cHJvcGVydHkgd2l0aCB0aGUgc2FtZSBrZXksIHRoZSB2YWx1ZSB3aWxsIGJlCisgIC8vIHVwZGF0
ZWQuCisgIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3Bl
cnR5KTsKKwogICBlbnVtIFJlYWN0aW9uVG9TaGFyZGluZyB7CiAgICAgSE9OT1JfU0hBUkRJTkdf
UFJPVE9DT0wsCiAgICAgSUdOT1JFX1NIQVJESU5HX1BST1RPQ09MCkBAIC04MTcsNiArNzcyLDEy
IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gVW5pdFRlc3RPcHRpb25z
LiBNdXN0IG5vdCBiZSBjYWxsZWQgYmVmb3JlIEluaXRHb29nbGVUZXN0LgogICB2b2lkIENvbmZp
Z3VyZVhtbE91dHB1dCgpOwogCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworICAvLyBJ
bml0aWFsaXplcyB0aGUgZXZlbnQgbGlzdGVuZXIgZm9yIHN0cmVhbWluZyB0ZXN0IHJlc3VsdHMg
dG8gYSBzb2NrZXQuCisgIC8vIE11c3Qgbm90IGJlIGNhbGxlZCBiZWZvcmUgSW5pdEdvb2dsZVRl
c3QuCisgIHZvaWQgQ29uZmlndXJlU3RyZWFtaW5nT3V0cHV0KCk7CisjZW5kaWYKKwogICAvLyBQ
ZXJmb3JtcyBpbml0aWFsaXphdGlvbiBkZXBlbmRlbnQgdXBvbiBmbGFnIHZhbHVlcyBvYnRhaW5l
ZCBpbgogICAvLyBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkuICBJcyBjYWxsZWQgZnJvbSBJbml0
R29vZ2xlVGVzdCBhZnRlciB0aGUgY2FsbCB0bwogICAvLyBQYXJzZUdvb2dsZVRlc3RGbGFnc09u
bHkuICBJbiBjYXNlIGEgdXNlciBuZWdsZWN0cyB0byBjYWxsIEluaXRHb29nbGVUZXN0CkBAIC04
MzcsOSArNzk4LDE3IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gUmVz
dG9yZXMgdGhlIHRlc3QgY2FzZXMgYW5kIHRlc3RzIHRvIHRoZWlyIG9yZGVyIGJlZm9yZSB0aGUg
Zmlyc3Qgc2h1ZmZsZS4KICAgdm9pZCBVbnNodWZmbGVUZXN0cygpOwogCisgIC8vIFJldHVybnMg
dGhlIHZhbHVlIG9mIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgYXQgdGhlIG1vbWVudAor
ICAvLyBVbml0VGVzdDo6UnVuKCkgc3RhcnRzLgorICBib29sIGNhdGNoX2V4Y2VwdGlvbnMoKSBj
b25zdCB7IHJldHVybiBjYXRjaF9leGNlcHRpb25zXzsgfQorCiAgcHJpdmF0ZToKICAgZnJpZW5k
IGNsYXNzIDo6dGVzdGluZzo6VW5pdFRlc3Q7CiAKKyAgLy8gVXNlZCBieSBVbml0VGVzdDo6UnVu
KCkgdG8gY2FwdHVyZSB0aGUgc3RhdGUgb2YKKyAgLy8gR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRp
b25zKSBhdCB0aGUgbW9tZW50IGl0IHN0YXJ0cy4KKyAgdm9pZCBzZXRfY2F0Y2hfZXhjZXB0aW9u
cyhib29sIHZhbHVlKSB7IGNhdGNoX2V4Y2VwdGlvbnNfID0gdmFsdWU7IH0KKwogICAvLyBUaGUg
VW5pdFRlc3Qgb2JqZWN0IHRoYXQgb3ducyB0aGlzIGltcGxlbWVudGF0aW9uIG9iamVjdC4KICAg
VW5pdFRlc3QqIGNvbnN0IHBhcmVudF87CiAKQEAgLTkyOSw2ICs4OTgsMTAgQEAgY2xhc3MgR1RF
U1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBPdXIgcmFuZG9tIG51bWJlciBnZW5lcmF0b3Iu
CiAgIGludGVybmFsOjpSYW5kb20gcmFuZG9tXzsKIAorICAvLyBUaGUgdGltZSBvZiB0aGUgdGVz
dCBwcm9ncmFtIHN0YXJ0LCBpbiBtcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUKKyAgLy8gVU5JWCBl
cG9jaC4KKyAgVGltZUluTWlsbGlzIHN0YXJ0X3RpbWVzdGFtcF87CisKICAgLy8gSG93IGxvbmcg
dGhlIHRlc3QgdG9vayB0byBydW4sIGluIG1pbGxpc2Vjb25kcy4KICAgVGltZUluTWlsbGlzIGVs
YXBzZWRfdGltZV87CiAKQEAgLTk0Miw2ICs5MTUsMTAgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0
VGVzdEltcGwgewogICAvLyBBIHBlci10aHJlYWQgc3RhY2sgb2YgdHJhY2VzIGNyZWF0ZWQgYnkg
dGhlIFNDT1BFRF9UUkFDRSgpIG1hY3JvLgogICBpbnRlcm5hbDo6VGhyZWFkTG9jYWw8c3RkOjp2
ZWN0b3I8VHJhY2VJbmZvPiA+IGd0ZXN0X3RyYWNlX3N0YWNrXzsKIAorICAvLyBUaGUgdmFsdWUg
b2YgR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSBhdCB0aGUgbW9tZW50IFJ1bkFsbFRlc3Rz
KCkKKyAgLy8gc3RhcnRzLgorICBib29sIGNhdGNoX2V4Y2VwdGlvbnNfOworCiAgIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVW5pdFRlc3RJbXBsKTsKIH07ICAvLyBjbGFzcyBVbml0
VGVzdEltcGwKIApAQCAtOTUxLDE0ICs5MjgsMTYgQEAgaW5saW5lIFVuaXRUZXN0SW1wbCogR2V0
VW5pdFRlc3RJbXBsKCkgewogICByZXR1cm4gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmltcGwo
KTsKIH0KIAorI2lmIEdURVNUX1VTRVNfU0lNUExFX1JFCisKIC8vIEludGVybmFsIGhlbHBlciBm
dW5jdGlvbnMgZm9yIGltcGxlbWVudGluZyB0aGUgc2ltcGxlIHJlZ3VsYXIKIC8vIGV4cHJlc3Np
b24gbWF0Y2hlci4KIEdURVNUX0FQSV8gYm9vbCBJc0luU2V0KGNoYXIgY2gsIGNvbnN0IGNoYXIq
IHN0cik7Ci1HVEVTVF9BUElfIGJvb2wgSXNEaWdpdChjaGFyIGNoKTsKLUdURVNUX0FQSV8gYm9v
bCBJc1B1bmN0KGNoYXIgY2gpOworR1RFU1RfQVBJXyBib29sIElzQXNjaWlEaWdpdChjaGFyIGNo
KTsKK0dURVNUX0FQSV8gYm9vbCBJc0FzY2lpUHVuY3QoY2hhciBjaCk7CiBHVEVTVF9BUElfIGJv
b2wgSXNSZXBlYXQoY2hhciBjaCk7Ci1HVEVTVF9BUElfIGJvb2wgSXNXaGl0ZVNwYWNlKGNoYXIg
Y2gpOwotR1RFU1RfQVBJXyBib29sIElzV29yZENoYXIoY2hhciBjaCk7CitHVEVTVF9BUElfIGJv
b2wgSXNBc2NpaVdoaXRlU3BhY2UoY2hhciBjaCk7CitHVEVTVF9BUElfIGJvb2wgSXNBc2NpaVdv
cmRDaGFyKGNoYXIgY2gpOwogR1RFU1RfQVBJXyBib29sIElzVmFsaWRFc2NhcGUoY2hhciBjaCk7
CiBHVEVTVF9BUElfIGJvb2wgQXRvbU1hdGNoZXNDaGFyKGJvb2wgZXNjYXBlZCwgY2hhciBwYXR0
ZXJuLCBjaGFyIGNoKTsKIEdURVNUX0FQSV8gYm9vbCBWYWxpZGF0ZVJlZ2V4KGNvbnN0IGNoYXIq
IHJlZ2V4KTsKQEAgLTk2Nyw2ICs5NDYsOCBAQCBHVEVTVF9BUElfIGJvb2wgTWF0Y2hSZXBldGl0
aW9uQW5kUmVnZXhBdEhlYWQoCiAgICAgYm9vbCBlc2NhcGVkLCBjaGFyIGNoLCBjaGFyIHJlcGVh
dCwgY29uc3QgY2hhciogcmVnZXgsIGNvbnN0IGNoYXIqIHN0cik7CiBHVEVTVF9BUElfIGJvb2wg
TWF0Y2hSZWdleEFueXdoZXJlKGNvbnN0IGNoYXIqIHJlZ2V4LCBjb25zdCBjaGFyKiBzdHIpOwog
CisjZW5kaWYgIC8vIEdURVNUX1VTRVNfU0lNUExFX1JFCisKIC8vIFBhcnNlcyB0aGUgY29tbWFu
ZCBsaW5lIGZvciBHb29nbGUgVGVzdCBmbGFncywgd2l0aG91dCBpbml0aWFsaXppbmcKIC8vIG90
aGVyIHBhcnRzIG9mIEdvb2dsZSBUZXN0LgogR1RFU1RfQVBJXyB2b2lkIFBhcnNlR29vZ2xlVGVz
dEZsYWdzT25seShpbnQqIGFyZ2MsIGNoYXIqKiBhcmd2KTsKQEAgLTk3NiwzMyArOTU3LDcgQEAg
R1RFU1RfQVBJXyB2b2lkIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seShpbnQqIGFyZ2MsIHdjaGFy
X3QqKiBhcmd2KTsKIAogLy8gUmV0dXJucyB0aGUgbWVzc2FnZSBkZXNjcmliaW5nIHRoZSBsYXN0
IHN5c3RlbSBlcnJvciwgcmVnYXJkbGVzcyBvZiB0aGUKIC8vIHBsYXRmb3JtLgotU3RyaW5nIEdl
dExhc3RFcnJub0Rlc2NyaXB0aW9uKCk7Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0vLyBQcm92
aWRlcyBsZWFrLXNhZmUgV2luZG93cyBrZXJuZWwgaGFuZGxlIG93bmVyc2hpcC4KLWNsYXNzIEF1
dG9IYW5kbGUgewotIHB1YmxpYzoKLSAgQXV0b0hhbmRsZSgpIDogaGFuZGxlXyhJTlZBTElEX0hB
TkRMRV9WQUxVRSkge30KLSAgZXhwbGljaXQgQXV0b0hhbmRsZShIQU5ETEUgaGFuZGxlKSA6IGhh
bmRsZV8oaGFuZGxlKSB7fQotCi0gIH5BdXRvSGFuZGxlKCkgeyBSZXNldCgpOyB9Ci0KLSAgSEFO
RExFIEdldCgpIGNvbnN0IHsgcmV0dXJuIGhhbmRsZV87IH0KLSAgdm9pZCBSZXNldCgpIHsgUmVz
ZXQoSU5WQUxJRF9IQU5ETEVfVkFMVUUpOyB9Ci0gIHZvaWQgUmVzZXQoSEFORExFIGhhbmRsZSkg
ewotICAgIGlmIChoYW5kbGUgIT0gaGFuZGxlXykgewotICAgICAgaWYgKGhhbmRsZV8gIT0gSU5W
QUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIDo6Q2xvc2VIYW5kbGUoaGFuZGxlXyk7Ci0gICAg
ICBoYW5kbGVfID0gaGFuZGxlOwotICAgIH0KLSAgfQotCi0gcHJpdmF0ZToKLSAgSEFORExFIGhh
bmRsZV87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhBdXRvSGFuZGxlKTsK
LX07Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcg
R2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKTsKIAogLy8gQXR0ZW1wdHMgdG8gcGFyc2UgYSBzdHJp
bmcgaW50byBhIHBvc2l0aXZlIGludGVnZXIgcG9pbnRlZCB0byBieSB0aGUKIC8vIG51bWJlciBw
YXJhbWV0ZXIuICBSZXR1cm5zIHRydWUgaWYgdGhhdCBpcyBwb3NzaWJsZS4KQEAgLTEwMTMsNyAr
OTY4LDcgQEAgYm9vbCBQYXJzZU5hdHVyYWxOdW1iZXIoY29uc3QgOjpzdGQ6OnN0cmluZyYgc3Ry
LCBJbnRlZ2VyKiBudW1iZXIpIHsKICAgLy8gRmFpbCBmYXN0IGlmIHRoZSBnaXZlbiBzdHJpbmcg
ZG9lcyBub3QgYmVnaW4gd2l0aCBhIGRpZ2l0OwogICAvLyB0aGlzIGJ5cGFzc2VzIHN0cnRvWFhY
J3MgIm9wdGlvbmFsIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgcGx1cwogICAvLyBvciBtaW51cyBz
aWduIiBzZW1hbnRpY3MsIHdoaWNoIGFyZSB1bmRlc2lyYWJsZSBoZXJlLgotICBpZiAoc3RyLmVt
cHR5KCkgfHwgIWlzZGlnaXQoc3RyWzBdKSkgeworICBpZiAoc3RyLmVtcHR5KCkgfHwgIUlzRGln
aXQoc3RyWzBdKSkgewogICAgIHJldHVybiBmYWxzZTsKICAgfQogICBlcnJubyA9IDA7CkBAIC0x
MDIxLDE0ICs5NzYsMjAgQEAgYm9vbCBQYXJzZU5hdHVyYWxOdW1iZXIoY29uc3QgOjpzdGQ6OnN0
cmluZyYgc3RyLCBJbnRlZ2VyKiBudW1iZXIpIHsKICAgY2hhciogZW5kOwogICAvLyBCaWdnZXN0
Q29udmVydGlibGUgaXMgdGhlIGxhcmdlc3QgaW50ZWdlciB0eXBlIHRoYXQgc3lzdGVtLXByb3Zp
ZGVkCiAgIC8vIHN0cmluZy10by1udW1iZXIgY29udmVyc2lvbiByb3V0aW5lcyBjYW4gcmV0dXJu
LgotI2lmIEdURVNUX09TX1dJTkRPV1MgJiYgIWRlZmluZWQoX19HTlVDX18pCisKKyMgaWYgR1RF
U1RfT1NfV0lORE9XUyAmJiAhZGVmaW5lZChfX0dOVUNfXykKKwogICAvLyBNU1ZDIGFuZCBDKysg
QnVpbGRlciBkZWZpbmUgX19pbnQ2NCBpbnN0ZWFkIG9mIHRoZSBzdGFuZGFyZCBsb25nIGxvbmcu
CiAgIHR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCBCaWdnZXN0Q29udmVydGlibGU7CiAgIGNvbnN0
IEJpZ2dlc3RDb252ZXJ0aWJsZSBwYXJzZWQgPSBfc3RydG91aTY0KHN0ci5jX3N0cigpLCAmZW5k
LCAxMCk7Ci0jZWxzZQorCisjIGVsc2UKKwogICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBC
aWdnZXN0Q29udmVydGlibGU7ICAvLyBOT0xJTlQKICAgY29uc3QgQmlnZ2VzdENvbnZlcnRpYmxl
IHBhcnNlZCA9IHN0cnRvdWxsKHN0ci5jX3N0cigpLCAmZW5kLCAxMCk7Ci0jZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MgJiYgIWRlZmluZWQoX19HTlVDX18pCisKKyMgZW5kaWYgIC8vIEdURVNU
X09TX1dJTkRPV1MgJiYgIWRlZmluZWQoX19HTlVDX18pCisKICAgY29uc3QgYm9vbCBwYXJzZV9z
dWNjZXNzID0gKmVuZCA9PSAnXDAnICYmIGVycm5vID09IDA7CiAKICAgLy8gVE9ETyh2bGFkbEBn
b29nbGUuY29tKTogQ29udmVydCB0aGlzIHRvIGNvbXBpbGUgdGltZSBhc3NlcnRpb24gd2hlbiBp
dCBpcwpAQCAtMTA1Myw4ICsxMDE0LDkgQEAgYm9vbCBQYXJzZU5hdHVyYWxOdW1iZXIoY29uc3Qg
OjpzdGQ6OnN0cmluZyYgc3RyLCBJbnRlZ2VyKiBudW1iZXIpIHsKIGNsYXNzIFRlc3RSZXN1bHRB
Y2Nlc3NvciB7CiAgcHVibGljOgogICBzdGF0aWMgdm9pZCBSZWNvcmRQcm9wZXJ0eShUZXN0UmVz
dWx0KiB0ZXN0X3Jlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHhtbF9lbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUZXN0UHJvcGVydHkmIHByb3BlcnR5KSB7Ci0gICAgdGVzdF9yZXN1bHQtPlJlY29yZFByb3Bl
cnR5KHByb3BlcnR5KTsKKyAgICB0ZXN0X3Jlc3VsdC0+UmVjb3JkUHJvcGVydHkoeG1sX2VsZW1l
bnQsIHByb3BlcnR5KTsKICAgfQogCiAgIHN0YXRpYyB2b2lkIENsZWFyVGVzdFBhcnRSZXN1bHRz
KFRlc3RSZXN1bHQqIHRlc3RfcmVzdWx0KSB7CkBAIC0xMDY3LDYgKzEwMjksMTU0IEBAIGNsYXNz
IFRlc3RSZXN1bHRBY2Nlc3NvciB7CiAgIH0KIH07CiAKKyNpZiBHVEVTVF9DQU5fU1RSRUFNX1JF
U1VMVFNfCisKKy8vIFN0cmVhbXMgdGVzdCByZXN1bHRzIHRvIHRoZSBnaXZlbiBwb3J0IG9uIHRo
ZSBnaXZlbiBob3N0IG1hY2hpbmUuCitjbGFzcyBHVEVTVF9BUElfIFN0cmVhbWluZ0xpc3RlbmVy
IDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgeworIHB1YmxpYzoKKyAgLy8gQWJzdHJh
Y3QgYmFzZSBjbGFzcyBmb3Igd3JpdGluZyBzdHJpbmdzIHRvIGEgc29ja2V0LgorICBjbGFzcyBB
YnN0cmFjdFNvY2tldFdyaXRlciB7CisgICBwdWJsaWM6CisgICAgdmlydHVhbCB+QWJzdHJhY3RT
b2NrZXRXcml0ZXIoKSB7fQorCisgICAgLy8gU2VuZHMgYSBzdHJpbmcgdG8gdGhlIHNvY2tldC4K
KyAgICB2aXJ0dWFsIHZvaWQgU2VuZChjb25zdCBzdHJpbmcmIG1lc3NhZ2UpID0gMDsKKworICAg
IC8vIENsb3NlcyB0aGUgc29ja2V0LgorICAgIHZpcnR1YWwgdm9pZCBDbG9zZUNvbm5lY3Rpb24o
KSB7fQorCisgICAgLy8gU2VuZHMgYSBzdHJpbmcgYW5kIGEgbmV3bGluZSB0byB0aGUgc29ja2V0
LgorICAgIHZvaWQgU2VuZExuKGNvbnN0IHN0cmluZyYgbWVzc2FnZSkgeworICAgICAgU2VuZCht
ZXNzYWdlICsgIlxuIik7CisgICAgfQorICB9OworCisgIC8vIENvbmNyZXRlIGNsYXNzIGZvciBh
Y3R1YWxseSB3cml0aW5nIHN0cmluZ3MgdG8gYSBzb2NrZXQuCisgIGNsYXNzIFNvY2tldFdyaXRl
ciA6IHB1YmxpYyBBYnN0cmFjdFNvY2tldFdyaXRlciB7CisgICBwdWJsaWM6CisgICAgU29ja2V0
V3JpdGVyKGNvbnN0IHN0cmluZyYgaG9zdCwgY29uc3Qgc3RyaW5nJiBwb3J0KQorICAgICAgICA6
IHNvY2tmZF8oLTEpLCBob3N0X25hbWVfKGhvc3QpLCBwb3J0X251bV8ocG9ydCkgeworICAgICAg
TWFrZUNvbm5lY3Rpb24oKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Tb2NrZXRXcml0ZXIoKSB7
CisgICAgICBpZiAoc29ja2ZkXyAhPSAtMSkKKyAgICAgICAgQ2xvc2VDb25uZWN0aW9uKCk7Cisg
ICAgfQorCisgICAgLy8gU2VuZHMgYSBzdHJpbmcgdG8gdGhlIHNvY2tldC4KKyAgICB2aXJ0dWFs
IHZvaWQgU2VuZChjb25zdCBzdHJpbmcmIG1lc3NhZ2UpIHsKKyAgICAgIEdURVNUX0NIRUNLXyhz
b2NrZmRfICE9IC0xKQorICAgICAgICAgIDw8ICJTZW5kKCkgY2FuIGJlIGNhbGxlZCBvbmx5IHdo
ZW4gdGhlcmUgaXMgYSBjb25uZWN0aW9uLiI7CisKKyAgICAgIGNvbnN0IGludCBsZW4gPSBzdGF0
aWNfY2FzdDxpbnQ+KG1lc3NhZ2UubGVuZ3RoKCkpOworICAgICAgaWYgKHdyaXRlKHNvY2tmZF8s
IG1lc3NhZ2UuY19zdHIoKSwgbGVuKSAhPSBsZW4pIHsKKyAgICAgICAgR1RFU1RfTE9HXyhXQVJO
SU5HKQorICAgICAgICAgICAgPDwgInN0cmVhbV9yZXN1bHRfdG86IGZhaWxlZCB0byBzdHJlYW0g
dG8gIgorICAgICAgICAgICAgPDwgaG9zdF9uYW1lXyA8PCAiOiIgPDwgcG9ydF9udW1fOworICAg
ICAgfQorICAgIH0KKworICAgcHJpdmF0ZToKKyAgICAvLyBDcmVhdGVzIGEgY2xpZW50IHNvY2tl
dCBhbmQgY29ubmVjdHMgdG8gdGhlIHNlcnZlci4KKyAgICB2b2lkIE1ha2VDb25uZWN0aW9uKCk7
CisKKyAgICAvLyBDbG9zZXMgdGhlIHNvY2tldC4KKyAgICB2b2lkIENsb3NlQ29ubmVjdGlvbigp
IHsKKyAgICAgIEdURVNUX0NIRUNLXyhzb2NrZmRfICE9IC0xKQorICAgICAgICAgIDw8ICJDbG9z
ZUNvbm5lY3Rpb24oKSBjYW4gYmUgY2FsbGVkIG9ubHkgd2hlbiB0aGVyZSBpcyBhIGNvbm5lY3Rp
b24uIjsKKworICAgICAgY2xvc2Uoc29ja2ZkXyk7CisgICAgICBzb2NrZmRfID0gLTE7CisgICAg
fQorCisgICAgaW50IHNvY2tmZF87ICAvLyBzb2NrZXQgZmlsZSBkZXNjcmlwdG9yCisgICAgY29u
c3Qgc3RyaW5nIGhvc3RfbmFtZV87CisgICAgY29uc3Qgc3RyaW5nIHBvcnRfbnVtXzsKKworICAg
IEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oU29ja2V0V3JpdGVyKTsKKyAgfTsgIC8v
IGNsYXNzIFNvY2tldFdyaXRlcgorCisgIC8vIEVzY2FwZXMgJz0nLCAnJicsICclJywgYW5kICdc
bicgY2hhcmFjdGVycyBpbiBzdHIgYXMgIiV4eCIuCisgIHN0YXRpYyBzdHJpbmcgVXJsRW5jb2Rl
KGNvbnN0IGNoYXIqIHN0cik7CisKKyAgU3RyZWFtaW5nTGlzdGVuZXIoY29uc3Qgc3RyaW5nJiBo
b3N0LCBjb25zdCBzdHJpbmcmIHBvcnQpCisgICAgICA6IHNvY2tldF93cml0ZXJfKG5ldyBTb2Nr
ZXRXcml0ZXIoaG9zdCwgcG9ydCkpIHsgU3RhcnQoKTsgfQorCisgIGV4cGxpY2l0IFN0cmVhbWlu
Z0xpc3RlbmVyKEFic3RyYWN0U29ja2V0V3JpdGVyKiBzb2NrZXRfd3JpdGVyKQorICAgICAgOiBz
b2NrZXRfd3JpdGVyXyhzb2NrZXRfd3JpdGVyKSB7IFN0YXJ0KCk7IH0KKworICB2b2lkIE9uVGVz
dFByb2dyYW1TdGFydChjb25zdCBVbml0VGVzdCYgLyogdW5pdF90ZXN0ICovKSB7CisgICAgU2Vu
ZExuKCJldmVudD1UZXN0UHJvZ3JhbVN0YXJ0Iik7CisgIH0KKworICB2b2lkIE9uVGVzdFByb2dy
YW1FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCkgeworICAgIC8vIE5vdGUgdGhhdCBHb29n
bGUgVGVzdCBjdXJyZW50IG9ubHkgcmVwb3J0IGVsYXBzZWQgdGltZSBmb3IgZWFjaAorICAgIC8v
IHRlc3QgaXRlcmF0aW9uLCBub3QgZm9yIHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFtLgorICAgIFNl
bmRMbigiZXZlbnQ9VGVzdFByb2dyYW1FbmQmcGFzc2VkPSIgKyBGb3JtYXRCb29sKHVuaXRfdGVz
dC5QYXNzZWQoKSkpOworCisgICAgLy8gTm90aWZ5IHRoZSBzdHJlYW1pbmcgc2VydmVyIHRvIHN0
b3AuCisgICAgc29ja2V0X3dyaXRlcl8tPkNsb3NlQ29ubmVjdGlvbigpOworICB9CisKKyAgdm9p
ZCBPblRlc3RJdGVyYXRpb25TdGFydChjb25zdCBVbml0VGVzdCYgLyogdW5pdF90ZXN0ICovLCBp
bnQgaXRlcmF0aW9uKSB7CisgICAgU2VuZExuKCJldmVudD1UZXN0SXRlcmF0aW9uU3RhcnQmaXRl
cmF0aW9uPSIgKworICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcoaXRlcmF0aW9uKSk7Cisg
IH0KKworICB2b2lkIE9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0
LCBpbnQgLyogaXRlcmF0aW9uICovKSB7CisgICAgU2VuZExuKCJldmVudD1UZXN0SXRlcmF0aW9u
RW5kJnBhc3NlZD0iICsKKyAgICAgICAgICAgRm9ybWF0Qm9vbCh1bml0X3Rlc3QuUGFzc2VkKCkp
ICsgIiZlbGFwc2VkX3RpbWU9IiArCisgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh1bml0
X3Rlc3QuZWxhcHNlZF90aW1lKCkpICsgIm1zIik7CisgIH0KKworICB2b2lkIE9uVGVzdENhc2VT
dGFydChjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKSB7CisgICAgU2VuZExuKHN0ZDo6c3RyaW5n
KCJldmVudD1UZXN0Q2FzZVN0YXJ0Jm5hbWU9IikgKyB0ZXN0X2Nhc2UubmFtZSgpKTsKKyAgfQor
CisgIHZvaWQgT25UZXN0Q2FzZUVuZChjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKSB7CisgICAg
U2VuZExuKCJldmVudD1UZXN0Q2FzZUVuZCZwYXNzZWQ9IiArIEZvcm1hdEJvb2wodGVzdF9jYXNl
LlBhc3NlZCgpKQorICAgICAgICAgICArICImZWxhcHNlZF90aW1lPSIgKyBTdHJlYW1hYmxlVG9T
dHJpbmcodGVzdF9jYXNlLmVsYXBzZWRfdGltZSgpKQorICAgICAgICAgICArICJtcyIpOworICB9
CisKKyAgdm9pZCBPblRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CisgICAg
U2VuZExuKHN0ZDo6c3RyaW5nKCJldmVudD1UZXN0U3RhcnQmbmFtZT0iKSArIHRlc3RfaW5mby5u
YW1lKCkpOworICB9CisKKyAgdm9pZCBPblRlc3RFbmQoY29uc3QgVGVzdEluZm8mIHRlc3RfaW5m
bykgeworICAgIFNlbmRMbigiZXZlbnQ9VGVzdEVuZCZwYXNzZWQ9IiArCisgICAgICAgICAgIEZv
cm1hdEJvb2woKHRlc3RfaW5mby5yZXN1bHQoKSktPlBhc3NlZCgpKSArCisgICAgICAgICAgICIm
ZWxhcHNlZF90aW1lPSIgKworICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcoKHRlc3RfaW5m
by5yZXN1bHQoKSktPmVsYXBzZWRfdGltZSgpKSArICJtcyIpOworICB9CisKKyAgdm9pZCBPblRl
c3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7Cisg
ICAgY29uc3QgY2hhciogZmlsZV9uYW1lID0gdGVzdF9wYXJ0X3Jlc3VsdC5maWxlX25hbWUoKTsK
KyAgICBpZiAoZmlsZV9uYW1lID09IE5VTEwpCisgICAgICBmaWxlX25hbWUgPSAiIjsKKyAgICBT
ZW5kTG4oImV2ZW50PVRlc3RQYXJ0UmVzdWx0JmZpbGU9IiArIFVybEVuY29kZShmaWxlX25hbWUp
ICsKKyAgICAgICAgICAgIiZsaW5lPSIgKyBTdHJlYW1hYmxlVG9TdHJpbmcodGVzdF9wYXJ0X3Jl
c3VsdC5saW5lX251bWJlcigpKSArCisgICAgICAgICAgICImbWVzc2FnZT0iICsgVXJsRW5jb2Rl
KHRlc3RfcGFydF9yZXN1bHQubWVzc2FnZSgpKSk7CisgIH0KKworIHByaXZhdGU6CisgIC8vIFNl
bmRzIHRoZSBnaXZlbiBtZXNzYWdlIGFuZCBhIG5ld2xpbmUgdG8gdGhlIHNvY2tldC4KKyAgdm9p
ZCBTZW5kTG4oY29uc3Qgc3RyaW5nJiBtZXNzYWdlKSB7IHNvY2tldF93cml0ZXJfLT5TZW5kTG4o
bWVzc2FnZSk7IH0KKworICAvLyBDYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIHN0cmVhbWluZyB0byBu
b3RpZnkgdGhlIHJlY2VpdmVyIHdoYXQKKyAgLy8gcHJvdG9jb2wgd2UgYXJlIHVzaW5nLgorICB2
b2lkIFN0YXJ0KCkgeyBTZW5kTG4oImd0ZXN0X3N0cmVhbWluZ19wcm90b2NvbF92ZXJzaW9uPTEu
MCIpOyB9CisKKyAgc3RyaW5nIEZvcm1hdEJvb2woYm9vbCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUg
PyAiMSIgOiAiMCI7IH0KKworICBjb25zdCBzY29wZWRfcHRyPEFic3RyYWN0U29ja2V0V3JpdGVy
PiBzb2NrZXRfd3JpdGVyXzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFN0
cmVhbWluZ0xpc3RlbmVyKTsKK307ICAvLyBjbGFzcyBTdHJlYW1pbmdMaXN0ZW5lcgorCisjZW5k
aWYgIC8vIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKwogfSAgLy8gbmFtZXNwYWNlIGludGVy
bmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Ny
Yy9ndGVzdC1wb3J0LmNjCmluZGV4IGI5NTA0ZjU2YWU2ZjkzZTEyNmQyYjU2OGE3ZDk3ZGI1MTdm
YjgzZTQuLmU1YmYzZGQyYmU0YmUzMzYxNzZmZWI1ZDE0ZDcwZDk1MjZiMjhjN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1wb3J0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1wb3J0LmNjCkBAIC0yOSwzNiArMjksNTAgQEAK
IC8vCiAvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAKLSNpbmNsdWRl
IDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtcG9ydC5oIgogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+
CiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxmc3Ry
ZWFtPgogCi0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSNpbmNsdWRlIDx3aW5kb3dzLmg+
ICAvLyBGb3IgVGVybWluYXRlUHJvY2VzcygpCi0jZWxpZiBHVEVTVF9PU19XSU5ET1dTCi0jaW5j
bHVkZSA8aW8uaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2lmIEdURVNUX09TX1dJTkRPV1MK
KyMgaW5jbHVkZSA8d2luZG93cy5oPgorIyBpbmNsdWRlIDxpby5oPgorIyBpbmNsdWRlIDxzeXMv
c3RhdC5oPgorIyBpbmNsdWRlIDxtYXA+ICAvLyBVc2VkIGluIFRocmVhZExvY2FsLgogI2Vsc2UK
LSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
KyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAogI2lm
IEdURVNUX09TX01BQwotI2luY2x1ZGUgPG1hY2gvbWFjaF9pbml0Lmg+Ci0jaW5jbHVkZSA8bWFj
aC90YXNrLmg+Ci0jaW5jbHVkZSA8bWFjaC92bV9tYXAuaD4KKyMgaW5jbHVkZSA8bWFjaC9tYWNo
X2luaXQuaD4KKyMgaW5jbHVkZSA8bWFjaC90YXNrLmg+CisjIGluY2x1ZGUgPG1hY2gvdm1fbWFw
Lmg+CiAjZW5kaWYgIC8vIEdURVNUX09TX01BQwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3Bp
Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oPgotI2luY2x1ZGUgPGd0ZXN0L2lu
dGVybmFsL2d0ZXN0LXN0cmluZy5oPgorI2lmIEdURVNUX09TX1FOWAorIyBpbmNsdWRlIDxkZXZj
dGwuaD4KKyMgaW5jbHVkZSA8ZmNudGwuaD4KKyMgaW5jbHVkZSA8c3lzL3Byb2Nmcy5oPgorI2Vu
ZGlmICAvLyBHVEVTVF9PU19RTlgKKworI2lmIEdURVNUX09TX0FJWAorIyBpbmNsdWRlIDxwcm9j
aW5mby5oPgorIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfQUlY
CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1t
ZXNzYWdlLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKyNp
bmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKIAogLy8gSW5kaWNhdGVzIHRo
YXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwogLy8gaW1w
bGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlz
Ci0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0
cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5n
IGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KKy8vIGluY2x1ZGVkLCBvciB0
aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGV4aXN0cyB0bworLy8g
cHJldmVudCB0aGUgYWNjaWRlbnRhbCBpbmNsdXNpb24gb2YgZ3Rlc3QtaW50ZXJuYWwtaW5sLmgg
aW4gdGhlCisvLyB1c2VyJ3MgY29kZS4KICNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEK
ICNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCiAjdW5kZWYgR1RFU1RfSU1QTEVN
RU5UQVRJT05fCkBAIC03NSwxMCArODksMzEgQEAgY29uc3QgaW50IGtTdGRPdXRGaWxlbm8gPSBT
VERPVVRfRklMRU5POwogY29uc3QgaW50IGtTdGRFcnJGaWxlbm8gPSBTVERFUlJfRklMRU5POwog
I2VuZGlmICAvLyBfTVNDX1ZFUgogCi0jaWYgR1RFU1RfT1NfTUFDCisjaWYgR1RFU1RfT1NfTElO
VVgKKworbmFtZXNwYWNlIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorVCBSZWFkUHJvY0ZpbGVG
aWVsZChjb25zdCBzdHJpbmcmIGZpbGVuYW1lLCBpbnQgZmllbGQpIHsKKyAgc3RkOjpzdHJpbmcg
ZHVtbXk7CisgIHN0ZDo6aWZzdHJlYW0gZmlsZShmaWxlbmFtZS5jX3N0cigpKTsKKyAgd2hpbGUg
KGZpZWxkLS0gPiAwKSB7CisgICAgZmlsZSA+PiBkdW1teTsKKyAgfQorICBUIG91dHB1dCA9IDA7
CisgIGZpbGUgPj4gb3V0cHV0OworICByZXR1cm4gb3V0cHV0OworfQorfSAgLy8gbmFtZXNwYWNl
CisKKy8vIFJldHVybnMgdGhlIG51bWJlciBvZiBhY3RpdmUgdGhyZWFkcywgb3IgMCB3aGVuIHRo
ZXJlIGlzIGFuIGVycm9yLgorc2l6ZV90IEdldFRocmVhZENvdW50KCkgeworICBjb25zdCBzdHJp
bmcgZmlsZW5hbWUgPQorICAgICAgKE1lc3NhZ2UoKSA8PCAiL3Byb2MvIiA8PCBnZXRwaWQoKSA8
PCAiL3N0YXQiKS5HZXRTdHJpbmcoKTsKKyAgcmV0dXJuIFJlYWRQcm9jRmlsZUZpZWxkPGludD4o
ZmlsZW5hbWUsIDE5KTsKK30KKworI2VsaWYgR1RFU1RfT1NfTUFDCiAKLS8vIFJldHVybnMgdGhl
IG51bWJlciBvZiB0aHJlYWRzIHJ1bm5pbmcgaW4gdGhlIHByb2Nlc3MsIG9yIDAgdG8gaW5kaWNh
dGUgdGhhdAotLy8gd2UgY2Fubm90IGRldGVjdCBpdC4KIHNpemVfdCBHZXRUaHJlYWRDb3VudCgp
IHsKICAgY29uc3QgdGFza190IHRhc2sgPSBtYWNoX3Rhc2tfc2VsZigpOwogICBtYWNoX21zZ190
eXBlX251bWJlcl90IHRocmVhZF9jb3VudDsKQEAgLTk2LDYgKzEzMSwzOSBAQCBzaXplX3QgR2V0
VGhyZWFkQ291bnQoKSB7CiAgIH0KIH0KIAorI2VsaWYgR1RFU1RfT1NfUU5YCisKKy8vIFJldHVy
bnMgdGhlIG51bWJlciBvZiB0aHJlYWRzIHJ1bm5pbmcgaW4gdGhlIHByb2Nlc3MsIG9yIDAgdG8g
aW5kaWNhdGUgdGhhdAorLy8gd2UgY2Fubm90IGRldGVjdCBpdC4KK3NpemVfdCBHZXRUaHJlYWRD
b3VudCgpIHsKKyAgY29uc3QgaW50IGZkID0gb3BlbigiL3Byb2Mvc2VsZi9hcyIsIE9fUkRPTkxZ
KTsKKyAgaWYgKGZkIDwgMCkgeworICAgIHJldHVybiAwOworICB9CisgIHByb2Nmc19pbmZvIHBy
b2Nlc3NfaW5mbzsKKyAgY29uc3QgaW50IHN0YXR1cyA9CisgICAgICBkZXZjdGwoZmQsIERDTURf
UFJPQ19JTkZPLCAmcHJvY2Vzc19pbmZvLCBzaXplb2YocHJvY2Vzc19pbmZvKSwgTlVMTCk7Cisg
IGNsb3NlKGZkKTsKKyAgaWYgKHN0YXR1cyA9PSBFT0spIHsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8c2l6ZV90Pihwcm9jZXNzX2luZm8ubnVtX3RocmVhZHMpOworICB9IGVsc2UgeworICAgIHJl
dHVybiAwOworICB9Cit9CisKKyNlbGlmIEdURVNUX09TX0FJWAorCitzaXplX3QgR2V0VGhyZWFk
Q291bnQoKSB7CisgIHN0cnVjdCBwcm9jZW50cnk2NCBlbnRyeTsKKyAgcGlkX3QgcGlkID0gZ2V0
cGlkKCk7CisgIGludCBzdGF0dXMgPSBnZXRwcm9jczY0KCZlbnRyeSwgc2l6ZW9mKGVudHJ5KSwg
TlVMTCwgMCwgJnBpZCwgMSk7CisgIGlmIChzdGF0dXMgPT0gMSkgeworICAgIHJldHVybiBlbnRy
eS5waV90aGNvdW50OworICB9IGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKICNlbHNl
CiAKIHNpemVfdCBHZXRUaHJlYWRDb3VudCgpIHsKQEAgLTEwNCw3ICsxNzIsMzkwIEBAIHNpemVf
dCBHZXRUaHJlYWRDb3VudCgpIHsKICAgcmV0dXJuIDA7CiB9CiAKLSNlbmRpZiAgLy8gR1RFU1Rf
T1NfTUFDCisjZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCisKKyNpZiBHVEVTVF9JU19USFJFQURT
QUZFICYmIEdURVNUX09TX1dJTkRPV1MKKwordm9pZCBTbGVlcE1pbGxpc2Vjb25kcyhpbnQgbikg
eworICA6OlNsZWVwKG4pOworfQorCitBdXRvSGFuZGxlOjpBdXRvSGFuZGxlKCkKKyAgICA6IGhh
bmRsZV8oSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHt9CisKK0F1dG9IYW5kbGU6OkF1dG9IYW5kbGUo
SGFuZGxlIGhhbmRsZSkKKyAgICA6IGhhbmRsZV8oaGFuZGxlKSB7fQorCitBdXRvSGFuZGxlOjp+
QXV0b0hhbmRsZSgpIHsKKyAgUmVzZXQoKTsKK30KKworQXV0b0hhbmRsZTo6SGFuZGxlIEF1dG9I
YW5kbGU6OkdldCgpIGNvbnN0IHsKKyAgcmV0dXJuIGhhbmRsZV87Cit9CisKK3ZvaWQgQXV0b0hh
bmRsZTo6UmVzZXQoKSB7CisgIFJlc2V0KElOVkFMSURfSEFORExFX1ZBTFVFKTsKK30KKwordm9p
ZCBBdXRvSGFuZGxlOjpSZXNldChIQU5ETEUgaGFuZGxlKSB7CisgIC8vIFJlc2V0dGluZyB3aXRo
IHRoZSBzYW1lIGhhbmRsZSB3ZSBhbHJlYWR5IG93biBpcyBpbnZhbGlkLgorICBpZiAoaGFuZGxl
XyAhPSBoYW5kbGUpIHsKKyAgICBpZiAoSXNDbG9zZWFibGUoKSkgeworICAgICAgOjpDbG9zZUhh
bmRsZShoYW5kbGVfKTsKKyAgICB9CisgICAgaGFuZGxlXyA9IGhhbmRsZTsKKyAgfSBlbHNlIHsK
KyAgICBHVEVTVF9DSEVDS18oIUlzQ2xvc2VhYmxlKCkpCisgICAgICAgIDw8ICJSZXNldHRpbmcg
YSB2YWxpZCBoYW5kbGUgdG8gaXRzZWxmIGlzIGxpa2VseSBhIHByb2dyYW1tZXIgZXJyb3IgIgor
ICAgICAgICAgICAgImFuZCB0aHVzIG5vdCBhbGxvd2VkLiI7CisgIH0KK30KKworYm9vbCBBdXRv
SGFuZGxlOjpJc0Nsb3NlYWJsZSgpIGNvbnN0IHsKKyAgLy8gRGlmZmVyZW50IFdpbmRvd3MgQVBJ
cyBtYXkgdXNlIGVpdGhlciBvZiB0aGVzZSB2YWx1ZXMgdG8gcmVwcmVzZW50IGFuCisgIC8vIGlu
dmFsaWQgaGFuZGxlLgorICByZXR1cm4gaGFuZGxlXyAhPSBOVUxMICYmIGhhbmRsZV8gIT0gSU5W
QUxJRF9IQU5ETEVfVkFMVUU7Cit9CisKK05vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKCkKKyAg
ICA6IGV2ZW50Xyg6OkNyZWF0ZUV2ZW50KE5VTEwsICAgLy8gRGVmYXVsdCBzZWN1cml0eSBhdHRy
aWJ1dGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwgICAvLyBEbyBub3QgcmVz
ZXQgYXV0b21hdGljYWxseS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCAgLy8g
SW5pdGlhbGx5IHVuc2V0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkpIHsgIC8v
IEFub255bW91cyBldmVudC4KKyAgR1RFU1RfQ0hFQ0tfKGV2ZW50Xy5HZXQoKSAhPSBOVUxMKTsK
K30KKwordm9pZCBOb3RpZmljYXRpb246Ok5vdGlmeSgpIHsKKyAgR1RFU1RfQ0hFQ0tfKDo6U2V0
RXZlbnQoZXZlbnRfLkdldCgpKSAhPSBGQUxTRSk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpX
YWl0Rm9yTm90aWZpY2F0aW9uKCkgeworICBHVEVTVF9DSEVDS18oCisgICAgICA6OldhaXRGb3JT
aW5nbGVPYmplY3QoZXZlbnRfLkdldCgpLCBJTkZJTklURSkgPT0gV0FJVF9PQkpFQ1RfMCk7Cit9
CisKK011dGV4OjpNdXRleCgpCisgICAgOiBvd25lcl90aHJlYWRfaWRfKDApLAorICAgICAgdHlw
ZV8oa0R5bmFtaWMpLAorICAgICAgY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXygwKSwKKyAg
ICAgIGNyaXRpY2FsX3NlY3Rpb25fKG5ldyBDUklUSUNBTF9TRUNUSU9OKSB7CisgIDo6SW5pdGlh
bGl6ZUNyaXRpY2FsU2VjdGlvbihjcml0aWNhbF9zZWN0aW9uXyk7Cit9CisKK011dGV4Ojp+TXV0
ZXgoKSB7CisgIC8vIFN0YXRpYyBtdXRleGVzIGFyZSBsZWFrZWQgaW50ZW50aW9uYWxseS4gSXQg
aXMgbm90IHRocmVhZC1zYWZlIHRvIHRyeQorICAvLyB0byBjbGVhbiB0aGVtIHVwLgorICAvLyBU
T0RPKHl1a2F3YSk6IFN3aXRjaCB0byBTbGltIFJlYWRlci9Xcml0ZXIgKFNSVykgTG9ja3MsIHdo
aWNoIHJlcXVpcmVzCisgIC8vIG5vdGhpbmcgdG8gY2xlYW4gaXQgdXAgYnV0IGlzIGF2YWlsYWJs
ZSBvbmx5IG9uIFZpc3RhIGFuZCBsYXRlci4KKyAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNv
bS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9hYTkwNDkzNy5hc3B4CisgIGlmICh0eXBl
XyA9PSBrRHluYW1pYykgeworICAgIDo6RGVsZXRlQ3JpdGljYWxTZWN0aW9uKGNyaXRpY2FsX3Nl
Y3Rpb25fKTsKKyAgICBkZWxldGUgY3JpdGljYWxfc2VjdGlvbl87CisgICAgY3JpdGljYWxfc2Vj
dGlvbl8gPSBOVUxMOworICB9Cit9CisKK3ZvaWQgTXV0ZXg6OkxvY2soKSB7CisgIFRocmVhZFNh
ZmVMYXp5SW5pdCgpOworICA6OkVudGVyQ3JpdGljYWxTZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb25f
KTsKKyAgb3duZXJfdGhyZWFkX2lkXyA9IDo6R2V0Q3VycmVudFRocmVhZElkKCk7Cit9CisKK3Zv
aWQgTXV0ZXg6OlVubG9jaygpIHsKKyAgVGhyZWFkU2FmZUxhenlJbml0KCk7CisgIC8vIFdlIGRv
bid0IHByb3RlY3Qgd3JpdGluZyB0byBvd25lcl90aHJlYWRfaWRfIGhlcmUsIGFzIGl0J3MgdGhl
CisgIC8vIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGF0IHRoZSBjdXJyZW50
IHRocmVhZCBob2xkcyB0aGUKKyAgLy8gbXV0ZXggd2hlbiB0aGlzIGlzIGNhbGxlZC4KKyAgb3du
ZXJfdGhyZWFkX2lkXyA9IDA7CisgIDo6TGVhdmVDcml0aWNhbFNlY3Rpb24oY3JpdGljYWxfc2Vj
dGlvbl8pOworfQorCisvLyBEb2VzIG5vdGhpbmcgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGhvbGRz
IHRoZSBtdXRleC4gT3RoZXJ3aXNlLCBjcmFzaGVzCisvLyB3aXRoIGhpZ2ggcHJvYmFiaWxpdHku
Cit2b2lkIE11dGV4OjpBc3NlcnRIZWxkKCkgeworICBUaHJlYWRTYWZlTGF6eUluaXQoKTsKKyAg
R1RFU1RfQ0hFQ0tfKG93bmVyX3RocmVhZF9pZF8gPT0gOjpHZXRDdXJyZW50VGhyZWFkSWQoKSkK
KyAgICAgIDw8ICJUaGUgY3VycmVudCB0aHJlYWQgaXMgbm90IGhvbGRpbmcgdGhlIG11dGV4IEAi
IDw8IHRoaXM7Cit9CisKKy8vIEluaXRpYWxpemVzIG93bmVyX3RocmVhZF9pZF8gYW5kIGNyaXRp
Y2FsX3NlY3Rpb25fIGluIHN0YXRpYyBtdXRleGVzLgordm9pZCBNdXRleDo6VGhyZWFkU2FmZUxh
enlJbml0KCkgeworICAvLyBEeW5hbWljIG11dGV4ZXMgYXJlIGluaXRpYWxpemVkIGluIHRoZSBj
b25zdHJ1Y3Rvci4KKyAgaWYgKHR5cGVfID09IGtTdGF0aWMpIHsKKyAgICBzd2l0Y2ggKAorICAg
ICAgICA6OkludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKCZjcml0aWNhbF9zZWN0aW9uX2luaXRf
cGhhc2VfLCAxTCwgMEwpKSB7CisgICAgICBjYXNlIDA6CisgICAgICAgIC8vIElmIGNyaXRpY2Fs
X3NlY3Rpb25faW5pdF9waGFzZV8gd2FzIDAgYmVmb3JlIHRoZSBleGNoYW5nZSwgd2UKKyAgICAg
ICAgLy8gYXJlIHRoZSBmaXJzdCB0byB0ZXN0IGl0IGFuZCBuZWVkIHRvIHBlcmZvcm0gdGhlIGlu
aXRpYWxpemF0aW9uLgorICAgICAgICBvd25lcl90aHJlYWRfaWRfID0gMDsKKyAgICAgICAgY3Jp
dGljYWxfc2VjdGlvbl8gPSBuZXcgQ1JJVElDQUxfU0VDVElPTjsKKyAgICAgICAgOjpJbml0aWFs
aXplQ3JpdGljYWxTZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb25fKTsKKyAgICAgICAgLy8gVXBkYXRl
cyB0aGUgY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXyB0byAyIHRvIHNpZ25hbAorICAgICAg
ICAvLyBpbml0aWFsaXphdGlvbiBjb21wbGV0ZS4KKyAgICAgICAgR1RFU1RfQ0hFQ0tfKDo6SW50
ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICZjcml0
aWNhbF9zZWN0aW9uX2luaXRfcGhhc2VfLCAyTCwgMUwpID09CisgICAgICAgICAgICAgICAgICAg
ICAgMUwpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMToKKyAgICAgICAgLy8gU29tZWJv
ZHkgZWxzZSBpcyBhbHJlYWR5IGluaXRpYWxpemluZyB0aGUgbXV0ZXg7IHNwaW4gdW50aWwgdGhl
eQorICAgICAgICAvLyBhcmUgZG9uZS4KKyAgICAgICAgd2hpbGUgKDo6SW50ZXJsb2NrZWRDb21w
YXJlRXhjaGFuZ2UoJmNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFzZV8sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDJMLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyTCkgIT0gMkwpIHsKKyAgICAgICAgICAvLyBQb3NzaWJs
eSB5aWVsZHMgdGhlIHJlc3Qgb2YgdGhlIHRocmVhZCdzIHRpbWUgc2xpY2UgdG8gb3RoZXIKKyAg
ICAgICAgICAvLyB0aHJlYWRzLgorICAgICAgICAgIDo6U2xlZXAoMCk7CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgMjoKKyAgICAgICAgYnJlYWs7ICAvLyBUaGUgbXV0
ZXggaXMgYWxyZWFkeSBpbml0aWFsaXplZCBhbmQgcmVhZHkgZm9yIHVzZS4KKworICAgICAgZGVm
YXVsdDoKKyAgICAgICAgR1RFU1RfQ0hFQ0tfKGZhbHNlKQorICAgICAgICAgICAgPDwgIlVuZXhw
ZWN0ZWQgdmFsdWUgb2YgY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXyAiCisgICAgICAgICAg
ICA8PCAid2hpbGUgaW5pdGlhbGl6aW5nIGEgc3RhdGljIG11dGV4LiI7CisgICAgfQorICB9Cit9
CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIFRocmVhZFdpdGhQYXJhbVN1cHBvcnQgOiBwdWJsaWMg
VGhyZWFkV2l0aFBhcmFtQmFzZSB7CisgcHVibGljOgorICBzdGF0aWMgSEFORExFIENyZWF0ZVRo
cmVhZChSdW5uYWJsZSogcnVubmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5v
dGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydCkgeworICAgIFRocmVhZE1haW5QYXJhbSogcGFy
YW0gPSBuZXcgVGhyZWFkTWFpblBhcmFtKHJ1bm5hYmxlLCB0aHJlYWRfY2FuX3N0YXJ0KTsKKyAg
ICBEV09SRCB0aHJlYWRfaWQ7CisgICAgLy8gVE9ETyh5dWthd2EpOiBDb25zaWRlciB0byB1c2Ug
X2JlZ2ludGhyZWFkZXggaW5zdGVhZC4KKyAgICBIQU5ETEUgdGhyZWFkX2hhbmRsZSA9IDo6Q3Jl
YXRlVGhyZWFkKAorICAgICAgICBOVUxMLCAgICAvLyBEZWZhdWx0IHNlY3VyaXR5LgorICAgICAg
ICAwLCAgICAgICAvLyBEZWZhdWx0IHN0YWNrIHNpemUuCisgICAgICAgICZUaHJlYWRXaXRoUGFy
YW1TdXBwb3J0OjpUaHJlYWRNYWluLAorICAgICAgICBwYXJhbSwgICAvLyBQYXJhbWV0ZXIgdG8g
VGhyZWFkTWFpblN0YXRpYworICAgICAgICAweDAsICAgICAvLyBEZWZhdWx0IGNyZWF0aW9uIGZs
YWdzLgorICAgICAgICAmdGhyZWFkX2lkKTsgIC8vIE5lZWQgYSB2YWxpZCBwb2ludGVyIGZvciB0
aGUgY2FsbCB0byB3b3JrIHVuZGVyIFdpbjk4LgorICAgIEdURVNUX0NIRUNLXyh0aHJlYWRfaGFu
ZGxlICE9IE5VTEwpIDw8ICJDcmVhdGVUaHJlYWQgZmFpbGVkIHdpdGggZXJyb3IgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDo6R2V0TGFzdEVycm9yKCkgPDwg
Ii4iOworICAgIGlmICh0aHJlYWRfaGFuZGxlID09IE5VTEwpIHsKKyAgICAgIGRlbGV0ZSBwYXJh
bTsKKyAgICB9CisgICAgcmV0dXJuIHRocmVhZF9oYW5kbGU7CisgIH0KKworIHByaXZhdGU6Cisg
IHN0cnVjdCBUaHJlYWRNYWluUGFyYW0geworICAgIFRocmVhZE1haW5QYXJhbShSdW5uYWJsZSog
cnVubmFibGUsIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydCkKKyAgICAgICAgOiBydW5u
YWJsZV8ocnVubmFibGUpLAorICAgICAgICAgIHRocmVhZF9jYW5fc3RhcnRfKHRocmVhZF9jYW5f
c3RhcnQpIHsKKyAgICB9CisgICAgc2NvcGVkX3B0cjxSdW5uYWJsZT4gcnVubmFibGVfOworICAg
IC8vIERvZXMgbm90IG93bi4KKyAgICBOb3RpZmljYXRpb24qIHRocmVhZF9jYW5fc3RhcnRfOwor
ICB9OworCisgIHN0YXRpYyBEV09SRCBXSU5BUEkgVGhyZWFkTWFpbih2b2lkKiBwdHIpIHsKKyAg
ICAvLyBUcmFuc2ZlcnMgb3duZXJzaGlwLgorICAgIHNjb3BlZF9wdHI8VGhyZWFkTWFpblBhcmFt
PiBwYXJhbShzdGF0aWNfY2FzdDxUaHJlYWRNYWluUGFyYW0qPihwdHIpKTsKKyAgICBpZiAocGFy
YW0tPnRocmVhZF9jYW5fc3RhcnRfICE9IE5VTEwpCisgICAgICBwYXJhbS0+dGhyZWFkX2Nhbl9z
dGFydF8tPldhaXRGb3JOb3RpZmljYXRpb24oKTsKKyAgICBwYXJhbS0+cnVubmFibGVfLT5SdW4o
KTsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIC8vIFByb2hpYml0IGluc3RhbnRpYXRpb24uCisg
IFRocmVhZFdpdGhQYXJhbVN1cHBvcnQoKTsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKFRocmVhZFdpdGhQYXJhbVN1cHBvcnQpOworfTsKKworfSAgLy8gbmFtZXNwYWNlCisK
K1RocmVhZFdpdGhQYXJhbUJhc2U6OlRocmVhZFdpdGhQYXJhbUJhc2UoUnVubmFibGUgKnJ1bm5h
YmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRp
b24qIHRocmVhZF9jYW5fc3RhcnQpCisgICAgICA6IHRocmVhZF8oVGhyZWFkV2l0aFBhcmFtU3Vw
cG9ydDo6Q3JlYXRlVGhyZWFkKHJ1bm5hYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRfY2FuX3N0YXJ0KSkgeworfQorCitUaHJl
YWRXaXRoUGFyYW1CYXNlOjp+VGhyZWFkV2l0aFBhcmFtQmFzZSgpIHsKKyAgSm9pbigpOworfQor
Cit2b2lkIFRocmVhZFdpdGhQYXJhbUJhc2U6OkpvaW4oKSB7CisgIEdURVNUX0NIRUNLXyg6Oldh
aXRGb3JTaW5nbGVPYmplY3QodGhyZWFkXy5HZXQoKSwgSU5GSU5JVEUpID09IFdBSVRfT0JKRUNU
XzApCisgICAgICA8PCAiRmFpbGVkIHRvIGpvaW4gdGhlIHRocmVhZCB3aXRoIGVycm9yICIgPDwg
OjpHZXRMYXN0RXJyb3IoKSA8PCAiLiI7Cit9CisKKy8vIE1hcHMgYSB0aHJlYWQgdG8gYSBzZXQg
b2YgVGhyZWFkSWRUb1RocmVhZExvY2FscyB0aGF0IGhhdmUgdmFsdWVzCisvLyBpbnN0YW50aWF0
ZWQgb24gdGhhdCB0aHJlYWQgYW5kIG5vdGlmaWVzIHRoZW0gd2hlbiB0aGUgdGhyZWFkIGV4aXRz
LiAgQQorLy8gVGhyZWFkTG9jYWwgaW5zdGFuY2UgaXMgZXhwZWN0ZWQgdG8gcGVyc2lzdCB1bnRp
bCBhbGwgdGhyZWFkcyBpdCBoYXMKKy8vIHZhbHVlcyBvbiBoYXZlIHRlcm1pbmF0ZWQuCitjbGFz
cyBUaHJlYWRMb2NhbFJlZ2lzdHJ5SW1wbCB7CisgcHVibGljOgorICAvLyBSZWdpc3RlcnMgdGhy
ZWFkX2xvY2FsX2luc3RhbmNlIGFzIGhhdmluZyB2YWx1ZSBvbiB0aGUgY3VycmVudCB0aHJlYWQu
CisgIC8vIFJldHVybnMgYSB2YWx1ZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IHRoZSB0
aHJlYWQgZnJvbSBvdGhlciB0aHJlYWRzLgorICBzdGF0aWMgVGhyZWFkTG9jYWxWYWx1ZUhvbGRl
ckJhc2UqIEdldFZhbHVlT25DdXJyZW50VGhyZWFkKAorICAgICAgY29uc3QgVGhyZWFkTG9jYWxC
YXNlKiB0aHJlYWRfbG9jYWxfaW5zdGFuY2UpIHsKKyAgICBEV09SRCBjdXJyZW50X3RocmVhZCA9
IDo6R2V0Q3VycmVudFRocmVhZElkKCk7CisgICAgTXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7Cisg
ICAgVGhyZWFkSWRUb1RocmVhZExvY2FscyogY29uc3QgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMg
PQorICAgICAgICBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKTsKKyAgICBUaHJlYWRJZFRvVGhy
ZWFkTG9jYWxzOjppdGVyYXRvciB0aHJlYWRfbG9jYWxfcG9zID0KKyAgICAgICAgdGhyZWFkX3Rv
X3RocmVhZF9sb2NhbHMtPmZpbmQoY3VycmVudF90aHJlYWQpOworICAgIGlmICh0aHJlYWRfbG9j
YWxfcG9zID09IHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5lbmQoKSkgeworICAgICAgdGhyZWFk
X2xvY2FsX3BvcyA9IHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5pbnNlcnQoCisgICAgICAgICAg
c3RkOjptYWtlX3BhaXIoY3VycmVudF90aHJlYWQsIFRocmVhZExvY2FsVmFsdWVzKCkpKS5maXJz
dDsKKyAgICAgIFN0YXJ0V2F0Y2hlclRocmVhZEZvcihjdXJyZW50X3RocmVhZCk7CisgICAgfQor
ICAgIFRocmVhZExvY2FsVmFsdWVzJiB0aHJlYWRfbG9jYWxfdmFsdWVzID0gdGhyZWFkX2xvY2Fs
X3Bvcy0+c2Vjb25kOworICAgIFRocmVhZExvY2FsVmFsdWVzOjppdGVyYXRvciB2YWx1ZV9wb3Mg
PQorICAgICAgICB0aHJlYWRfbG9jYWxfdmFsdWVzLmZpbmQodGhyZWFkX2xvY2FsX2luc3RhbmNl
KTsKKyAgICBpZiAodmFsdWVfcG9zID09IHRocmVhZF9sb2NhbF92YWx1ZXMuZW5kKCkpIHsKKyAg
ICAgIHZhbHVlX3BvcyA9CisgICAgICAgICAgdGhyZWFkX2xvY2FsX3ZhbHVlcworICAgICAgICAg
ICAgICAuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKAorICAgICAgICAgICAgICAgICAgdGhyZWFkX2xv
Y2FsX2luc3RhbmNlLAorICAgICAgICAgICAgICAgICAgbGlua2VkX3B0cjxUaHJlYWRMb2NhbFZh
bHVlSG9sZGVyQmFzZT4oCisgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkX2xvY2FsX2luc3Rh
bmNlLT5OZXdWYWx1ZUZvckN1cnJlbnRUaHJlYWQoKSkpKQorICAgICAgICAgICAgICAuZmlyc3Q7
CisgICAgfQorICAgIHJldHVybiB2YWx1ZV9wb3MtPnNlY29uZC5nZXQoKTsKKyAgfQorCisgIHN0
YXRpYyB2b2lkIE9uVGhyZWFkTG9jYWxEZXN0cm95ZWQoCisgICAgICBjb25zdCBUaHJlYWRMb2Nh
bEJhc2UqIHRocmVhZF9sb2NhbF9pbnN0YW5jZSkgeworICAgIHN0ZDo6dmVjdG9yPGxpbmtlZF9w
dHI8VGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2U+ID4gdmFsdWVfaG9sZGVyczsKKyAgICAvLyBD
bGVhbiB1cCB0aGUgVGhyZWFkTG9jYWxWYWx1ZXMgZGF0YSBzdHJ1Y3R1cmUgd2hpbGUgaG9sZGlu
ZyB0aGUgbG9jaywgYnV0CisgICAgLy8gZGVmZXIgdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBUaHJl
YWRMb2NhbFZhbHVlSG9sZGVyQmFzZXMuCisgICAgeworICAgICAgTXV0ZXhMb2NrIGxvY2soJm11
dGV4Xyk7CisgICAgICBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzKiBjb25zdCB0aHJlYWRfdG9fdGhy
ZWFkX2xvY2FscyA9CisgICAgICAgICAgR2V0VGhyZWFkTG9jYWxzTWFwTG9ja2VkKCk7CisgICAg
ICBmb3IgKFRocmVhZElkVG9UaHJlYWRMb2NhbHM6Oml0ZXJhdG9yIGl0ID0KKyAgICAgICAgICB0
aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+YmVnaW4oKTsKKyAgICAgICAgICBpdCAhPSB0aHJlYWRf
dG9fdGhyZWFkX2xvY2Fscy0+ZW5kKCk7CisgICAgICAgICAgKytpdCkgeworICAgICAgICBUaHJl
YWRMb2NhbFZhbHVlcyYgdGhyZWFkX2xvY2FsX3ZhbHVlcyA9IGl0LT5zZWNvbmQ7CisgICAgICAg
IFRocmVhZExvY2FsVmFsdWVzOjppdGVyYXRvciB2YWx1ZV9wb3MgPQorICAgICAgICAgICAgdGhy
ZWFkX2xvY2FsX3ZhbHVlcy5maW5kKHRocmVhZF9sb2NhbF9pbnN0YW5jZSk7CisgICAgICAgIGlm
ICh2YWx1ZV9wb3MgIT0gdGhyZWFkX2xvY2FsX3ZhbHVlcy5lbmQoKSkgeworICAgICAgICAgIHZh
bHVlX2hvbGRlcnMucHVzaF9iYWNrKHZhbHVlX3Bvcy0+c2Vjb25kKTsKKyAgICAgICAgICB0aHJl
YWRfbG9jYWxfdmFsdWVzLmVyYXNlKHZhbHVlX3Bvcyk7CisgICAgICAgICAgLy8gVGhpcyAnaWYn
IGNhbiBvbmx5IGJlIHN1Y2Nlc3NmdWwgYXQgbW9zdCBvbmNlLCBzbyB0aGVvcmV0aWNhbGx5IHdl
CisgICAgICAgICAgLy8gY291bGQgYnJlYWsgb3V0IG9mIHRoZSBsb29wIGhlcmUsIGJ1dCB3ZSBk
b24ndCBib3RoZXIgZG9pbmcgc28uCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgLy8g
T3V0c2lkZSB0aGUgbG9jaywgbGV0IHRoZSBkZXN0cnVjdG9yIGZvciAndmFsdWVfaG9sZGVycycg
ZGVhbGxvY2F0ZSB0aGUKKyAgICAvLyBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZXMuCisgIH0K
KworICBzdGF0aWMgdm9pZCBPblRocmVhZEV4aXQoRFdPUkQgdGhyZWFkX2lkKSB7CisgICAgR1RF
U1RfQ0hFQ0tfKHRocmVhZF9pZCAhPSAwKSA8PCA6OkdldExhc3RFcnJvcigpOworICAgIHN0ZDo6
dmVjdG9yPGxpbmtlZF9wdHI8VGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2U+ID4gdmFsdWVfaG9s
ZGVyczsKKyAgICAvLyBDbGVhbiB1cCB0aGUgVGhyZWFkSWRUb1RocmVhZExvY2FscyBkYXRhIHN0
cnVjdHVyZSB3aGlsZSBob2xkaW5nIHRoZQorICAgIC8vIGxvY2ssIGJ1dCBkZWZlciB0aGUgZGVz
dHJ1Y3Rpb24gb2YgdGhlIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlcy4KKyAgICB7CisgICAg
ICBNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKKyAgICAgIFRocmVhZElkVG9UaHJlYWRMb2NhbHMq
IGNvbnN0IHRocmVhZF90b190aHJlYWRfbG9jYWxzID0KKyAgICAgICAgICBHZXRUaHJlYWRMb2Nh
bHNNYXBMb2NrZWQoKTsKKyAgICAgIFRocmVhZElkVG9UaHJlYWRMb2NhbHM6Oml0ZXJhdG9yIHRo
cmVhZF9sb2NhbF9wb3MgPQorICAgICAgICAgIHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5maW5k
KHRocmVhZF9pZCk7CisgICAgICBpZiAodGhyZWFkX2xvY2FsX3BvcyAhPSB0aHJlYWRfdG9fdGhy
ZWFkX2xvY2Fscy0+ZW5kKCkpIHsKKyAgICAgICAgVGhyZWFkTG9jYWxWYWx1ZXMmIHRocmVhZF9s
b2NhbF92YWx1ZXMgPSB0aHJlYWRfbG9jYWxfcG9zLT5zZWNvbmQ7CisgICAgICAgIGZvciAoVGhy
ZWFkTG9jYWxWYWx1ZXM6Oml0ZXJhdG9yIHZhbHVlX3BvcyA9CisgICAgICAgICAgICB0aHJlYWRf
bG9jYWxfdmFsdWVzLmJlZ2luKCk7CisgICAgICAgICAgICB2YWx1ZV9wb3MgIT0gdGhyZWFkX2xv
Y2FsX3ZhbHVlcy5lbmQoKTsKKyAgICAgICAgICAgICsrdmFsdWVfcG9zKSB7CisgICAgICAgICAg
dmFsdWVfaG9sZGVycy5wdXNoX2JhY2sodmFsdWVfcG9zLT5zZWNvbmQpOworICAgICAgICB9Cisg
ICAgICAgIHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5lcmFzZSh0aHJlYWRfbG9jYWxfcG9zKTsK
KyAgICAgIH0KKyAgICB9CisgICAgLy8gT3V0c2lkZSB0aGUgbG9jaywgbGV0IHRoZSBkZXN0cnVj
dG9yIGZvciAndmFsdWVfaG9sZGVycycgZGVhbGxvY2F0ZSB0aGUKKyAgICAvLyBUaHJlYWRMb2Nh
bFZhbHVlSG9sZGVyQmFzZXMuCisgIH0KKworIHByaXZhdGU6CisgIC8vIEluIGEgcGFydGljdWxh
ciB0aHJlYWQsIG1hcHMgYSBUaHJlYWRMb2NhbCBvYmplY3QgdG8gaXRzIHZhbHVlLgorICB0eXBl
ZGVmIHN0ZDo6bWFwPGNvbnN0IFRocmVhZExvY2FsQmFzZSosCisgICAgICAgICAgICAgICAgICAg
bGlua2VkX3B0cjxUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZT4gPiBUaHJlYWRMb2NhbFZhbHVl
czsKKyAgLy8gU3RvcmVzIGFsbCBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzIGhhdmluZyB2YWx1ZXMg
aW4gYSB0aHJlYWQsIGluZGV4ZWQgYnkKKyAgLy8gdGhyZWFkJ3MgSUQuCisgIHR5cGVkZWYgc3Rk
OjptYXA8RFdPUkQsIFRocmVhZExvY2FsVmFsdWVzPiBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzOwor
CisgIC8vIEhvbGRzIHRoZSB0aHJlYWQgaWQgYW5kIHRocmVhZCBoYW5kbGUgdGhhdCB3ZSBwYXNz
IGZyb20KKyAgLy8gU3RhcnRXYXRjaGVyVGhyZWFkRm9yIHRvIFdhdGNoZXJUaHJlYWRGdW5jLgor
ICB0eXBlZGVmIHN0ZDo6cGFpcjxEV09SRCwgSEFORExFPiBUaHJlYWRJZEFuZEhhbmRsZTsKKwor
ICBzdGF0aWMgdm9pZCBTdGFydFdhdGNoZXJUaHJlYWRGb3IoRFdPUkQgdGhyZWFkX2lkKSB7Cisg
ICAgLy8gVGhlIHJldHVybmVkIGhhbmRsZSB3aWxsIGJlIGtlcHQgaW4gdGhyZWFkX21hcCBhbmQg
Y2xvc2VkIGJ5CisgICAgLy8gd2F0Y2hlcl90aHJlYWQgaW4gV2F0Y2hlclRocmVhZEZ1bmMuCisg
ICAgSEFORExFIHRocmVhZCA9IDo6T3BlblRocmVhZChTWU5DSFJPTklaRSB8IFRIUkVBRF9RVUVS
WV9JTkZPUk1BVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkX2lkKTsKKyAgICBHVEVTVF9D
SEVDS18odGhyZWFkICE9IE5VTEwpOworICAgIC8vIFdlIG5lZWQgdG8gdG8gcGFzcyBhIHZhbGlk
IHRocmVhZCBJRCBwb2ludGVyIGludG8gQ3JlYXRlVGhyZWFkIGZvciBpdAorICAgIC8vIHRvIHdv
cmsgY29ycmVjdGx5IHVuZGVyIFdpbjk4LgorICAgIERXT1JEIHdhdGNoZXJfdGhyZWFkX2lkOwor
ICAgIEhBTkRMRSB3YXRjaGVyX3RocmVhZCA9IDo6Q3JlYXRlVGhyZWFkKAorICAgICAgICBOVUxM
LCAgIC8vIERlZmF1bHQgc2VjdXJpdHkuCisgICAgICAgIDAsICAgICAgLy8gRGVmYXVsdCBzdGFj
ayBzaXplCisgICAgICAgICZUaHJlYWRMb2NhbFJlZ2lzdHJ5SW1wbDo6V2F0Y2hlclRocmVhZEZ1
bmMsCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8TFBWT0lEPihuZXcgVGhyZWFkSWRBbmRIYW5k
bGUodGhyZWFkX2lkLCB0aHJlYWQpKSwKKyAgICAgICAgQ1JFQVRFX1NVU1BFTkRFRCwKKyAgICAg
ICAgJndhdGNoZXJfdGhyZWFkX2lkKTsKKyAgICBHVEVTVF9DSEVDS18od2F0Y2hlcl90aHJlYWQg
IT0gTlVMTCk7CisgICAgLy8gR2l2ZSB0aGUgd2F0Y2hlciB0aHJlYWQgdGhlIHNhbWUgcHJpb3Jp
dHkgYXMgb3VycyB0byBhdm9pZCBiZWluZworICAgIC8vIGJsb2NrZWQgYnkgaXQuCisgICAgOjpT
ZXRUaHJlYWRQcmlvcml0eSh3YXRjaGVyX3RocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IDo6R2V0VGhyZWFkUHJpb3JpdHkoOjpHZXRDdXJyZW50VGhyZWFkKCkpKTsKKyAgICA6OlJlc3Vt
ZVRocmVhZCh3YXRjaGVyX3RocmVhZCk7CisgICAgOjpDbG9zZUhhbmRsZSh3YXRjaGVyX3RocmVh
ZCk7CisgIH0KKworICAvLyBNb25pdG9ycyBleGl0IGZyb20gYSBnaXZlbiB0aHJlYWQgYW5kIG5v
dGlmaWVzIHRob3NlCisgIC8vIFRocmVhZElkVG9UaHJlYWRMb2NhbHMgYWJvdXQgdGhyZWFkIHRl
cm1pbmF0aW9uLgorICBzdGF0aWMgRFdPUkQgV0lOQVBJIFdhdGNoZXJUaHJlYWRGdW5jKExQVk9J
RCBwYXJhbSkgeworICAgIGNvbnN0IFRocmVhZElkQW5kSGFuZGxlKiB0YWggPQorICAgICAgICBy
ZWludGVycHJldF9jYXN0PGNvbnN0IFRocmVhZElkQW5kSGFuZGxlKj4ocGFyYW0pOworICAgIEdU
RVNUX0NIRUNLXygKKyAgICAgICAgOjpXYWl0Rm9yU2luZ2xlT2JqZWN0KHRhaC0+c2Vjb25kLCBJ
TkZJTklURSkgPT0gV0FJVF9PQkpFQ1RfMCk7CisgICAgT25UaHJlYWRFeGl0KHRhaC0+Zmlyc3Qp
OworICAgIDo6Q2xvc2VIYW5kbGUodGFoLT5zZWNvbmQpOworICAgIGRlbGV0ZSB0YWg7CisgICAg
cmV0dXJuIDA7CisgIH0KKworICAvLyBSZXR1cm5zIG1hcCBvZiB0aHJlYWQgbG9jYWwgaW5zdGFu
Y2VzLgorICBzdGF0aWMgVGhyZWFkSWRUb1RocmVhZExvY2FscyogR2V0VGhyZWFkTG9jYWxzTWFw
TG9ja2VkKCkgeworICAgIG11dGV4Xy5Bc3NlcnRIZWxkKCk7CisgICAgc3RhdGljIFRocmVhZElk
VG9UaHJlYWRMb2NhbHMqIG1hcCA9IG5ldyBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzOworICAgIHJl
dHVybiBtYXA7CisgIH0KKworICAvLyBQcm90ZWN0cyBhY2Nlc3MgdG8gR2V0VGhyZWFkTG9jYWxz
TWFwTG9ja2VkKCkgYW5kIGl0cyByZXR1cm4gdmFsdWUuCisgIHN0YXRpYyBNdXRleCBtdXRleF87
CisgIC8vIFByb3RlY3RzIGFjY2VzcyB0byBHZXRUaHJlYWRNYXBMb2NrZWQoKSBhbmQgaXRzIHJl
dHVybiB2YWx1ZS4KKyAgc3RhdGljIE11dGV4IHRocmVhZF9tYXBfbXV0ZXhfOworfTsKKworTXV0
ZXggVGhyZWFkTG9jYWxSZWdpc3RyeUltcGw6Om11dGV4XyhNdXRleDo6a1N0YXRpY011dGV4KTsK
K011dGV4IFRocmVhZExvY2FsUmVnaXN0cnlJbXBsOjp0aHJlYWRfbWFwX211dGV4XyhNdXRleDo6
a1N0YXRpY011dGV4KTsKKworVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UqIFRocmVhZExvY2Fs
UmVnaXN0cnk6OkdldFZhbHVlT25DdXJyZW50VGhyZWFkKAorICAgICAgY29uc3QgVGhyZWFkTG9j
YWxCYXNlKiB0aHJlYWRfbG9jYWxfaW5zdGFuY2UpIHsKKyAgcmV0dXJuIFRocmVhZExvY2FsUmVn
aXN0cnlJbXBsOjpHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCgKKyAgICAgIHRocmVhZF9sb2NhbF9p
bnN0YW5jZSk7Cit9CisKK3ZvaWQgVGhyZWFkTG9jYWxSZWdpc3RyeTo6T25UaHJlYWRMb2NhbERl
c3Ryb3llZCgKKyAgICAgIGNvbnN0IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2FsX2luc3Rh
bmNlKSB7CisgIFRocmVhZExvY2FsUmVnaXN0cnlJbXBsOjpPblRocmVhZExvY2FsRGVzdHJveWVk
KHRocmVhZF9sb2NhbF9pbnN0YW5jZSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFE
U0FGRSAmJiBHVEVTVF9PU19XSU5ET1dTCiAKICNpZiBHVEVTVF9VU0VTX1BPU0lYX1JFCiAKQEAg
LTE4MCwyMCArNjMxLDIwIEBAIGJvb2wgSXNJblNldChjaGFyIGNoLCBjb25zdCBjaGFyKiBzdHIp
IHsKIC8vIFJldHVybnMgdHJ1ZSBpZmYgY2ggYmVsb25ncyB0byB0aGUgZ2l2ZW4gY2xhc3NpZmlj
YXRpb24uICBVbmxpa2UKIC8vIHNpbWlsYXIgZnVuY3Rpb25zIGluIDxjdHlwZS5oPiwgdGhlc2Ug
YXJlbid0IGFmZmVjdGVkIGJ5IHRoZQogLy8gY3VycmVudCBsb2NhbGUuCi1ib29sIElzRGlnaXQo
Y2hhciBjaCkgeyByZXR1cm4gJzAnIDw9IGNoICYmIGNoIDw9ICc5JzsgfQotYm9vbCBJc1B1bmN0
KGNoYXIgY2gpIHsKK2Jvb2wgSXNBc2NpaURpZ2l0KGNoYXIgY2gpIHsgcmV0dXJuICcwJyA8PSBj
aCAmJiBjaCA8PSAnOSc7IH0KK2Jvb2wgSXNBc2NpaVB1bmN0KGNoYXIgY2gpIHsKICAgcmV0dXJu
IElzSW5TZXQoY2gsICJeLSFcIiMkJSYnKCkqKywuLzo7PD0+P0BbXFxdX2B7fH1+Iik7CiB9CiBi
b29sIElzUmVwZWF0KGNoYXIgY2gpIHsgcmV0dXJuIElzSW5TZXQoY2gsICI/KisiKTsgfQotYm9v
bCBJc1doaXRlU3BhY2UoY2hhciBjaCkgeyByZXR1cm4gSXNJblNldChjaCwgIiBcZlxuXHJcdFx2
Iik7IH0KLWJvb2wgSXNXb3JkQ2hhcihjaGFyIGNoKSB7Citib29sIElzQXNjaWlXaGl0ZVNwYWNl
KGNoYXIgY2gpIHsgcmV0dXJuIElzSW5TZXQoY2gsICIgXGZcblxyXHRcdiIpOyB9Citib29sIElz
QXNjaWlXb3JkQ2hhcihjaGFyIGNoKSB7CiAgIHJldHVybiAoJ2EnIDw9IGNoICYmIGNoIDw9ICd6
JykgfHwgKCdBJyA8PSBjaCAmJiBjaCA8PSAnWicpIHx8CiAgICAgICAoJzAnIDw9IGNoICYmIGNo
IDw9ICc5JykgfHwgY2ggPT0gJ18nOwogfQogCiAvLyBSZXR1cm5zIHRydWUgaWZmICJcXGMiIGlz
IGEgc3VwcG9ydGVkIGVzY2FwZSBzZXF1ZW5jZS4KIGJvb2wgSXNWYWxpZEVzY2FwZShjaGFyIGMp
IHsKLSAgcmV0dXJuIChJc1B1bmN0KGMpIHx8IElzSW5TZXQoYywgImREZm5yc1N0dndXIikpOwor
ICByZXR1cm4gKElzQXNjaWlQdW5jdChjKSB8fCBJc0luU2V0KGMsICJkRGZucnNTdHZ3VyIpKTsK
IH0KIAogLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgZ2l2ZW4gYXRvbSAoc3BlY2lmaWVkIGJ5IGVz
Y2FwZWQgYW5kIHBhdHRlcm4pCkBAIC0yMDEsMjYgKzY1MiwyNiBAQCBib29sIElzVmFsaWRFc2Nh
cGUoY2hhciBjKSB7CiBib29sIEF0b21NYXRjaGVzQ2hhcihib29sIGVzY2FwZWQsIGNoYXIgcGF0
dGVybl9jaGFyLCBjaGFyIGNoKSB7CiAgIGlmIChlc2NhcGVkKSB7ICAvLyAiXFxwIiB3aGVyZSBw
IGlzIHBhdHRlcm5fY2hhci4KICAgICBzd2l0Y2ggKHBhdHRlcm5fY2hhcikgewotICAgICAgY2Fz
ZSAnZCc6IHJldHVybiBJc0RpZ2l0KGNoKTsKLSAgICAgIGNhc2UgJ0QnOiByZXR1cm4gIUlzRGln
aXQoY2gpOworICAgICAgY2FzZSAnZCc6IHJldHVybiBJc0FzY2lpRGlnaXQoY2gpOworICAgICAg
Y2FzZSAnRCc6IHJldHVybiAhSXNBc2NpaURpZ2l0KGNoKTsKICAgICAgIGNhc2UgJ2YnOiByZXR1
cm4gY2ggPT0gJ1xmJzsKICAgICAgIGNhc2UgJ24nOiByZXR1cm4gY2ggPT0gJ1xuJzsKICAgICAg
IGNhc2UgJ3InOiByZXR1cm4gY2ggPT0gJ1xyJzsKLSAgICAgIGNhc2UgJ3MnOiByZXR1cm4gSXNX
aGl0ZVNwYWNlKGNoKTsKLSAgICAgIGNhc2UgJ1MnOiByZXR1cm4gIUlzV2hpdGVTcGFjZShjaCk7
CisgICAgICBjYXNlICdzJzogcmV0dXJuIElzQXNjaWlXaGl0ZVNwYWNlKGNoKTsKKyAgICAgIGNh
c2UgJ1MnOiByZXR1cm4gIUlzQXNjaWlXaGl0ZVNwYWNlKGNoKTsKICAgICAgIGNhc2UgJ3QnOiBy
ZXR1cm4gY2ggPT0gJ1x0JzsKICAgICAgIGNhc2UgJ3YnOiByZXR1cm4gY2ggPT0gJ1x2JzsKLSAg
ICAgIGNhc2UgJ3cnOiByZXR1cm4gSXNXb3JkQ2hhcihjaCk7Ci0gICAgICBjYXNlICdXJzogcmV0
dXJuICFJc1dvcmRDaGFyKGNoKTsKKyAgICAgIGNhc2UgJ3cnOiByZXR1cm4gSXNBc2NpaVdvcmRD
aGFyKGNoKTsKKyAgICAgIGNhc2UgJ1cnOiByZXR1cm4gIUlzQXNjaWlXb3JkQ2hhcihjaCk7CiAg
ICAgfQotICAgIHJldHVybiBJc1B1bmN0KHBhdHRlcm5fY2hhcikgJiYgcGF0dGVybl9jaGFyID09
IGNoOworICAgIHJldHVybiBJc0FzY2lpUHVuY3QocGF0dGVybl9jaGFyKSAmJiBwYXR0ZXJuX2No
YXIgPT0gY2g7CiAgIH0KIAogICByZXR1cm4gKHBhdHRlcm5fY2hhciA9PSAnLicgJiYgY2ggIT0g
J1xuJykgfHwgcGF0dGVybl9jaGFyID09IGNoOwogfQogCiAvLyBIZWxwZXIgZnVuY3Rpb24gdXNl
ZCBieSBWYWxpZGF0ZVJlZ2V4KCkgdG8gZm9ybWF0IGVycm9yIG1lc3NhZ2VzLgotU3RyaW5nIEZv
cm1hdFJlZ2V4U3ludGF4RXJyb3IoY29uc3QgY2hhciogcmVnZXgsIGludCBpbmRleCkgeworc3Rk
OjpzdHJpbmcgRm9ybWF0UmVnZXhTeW50YXhFcnJvcihjb25zdCBjaGFyKiByZWdleCwgaW50IGlu
ZGV4KSB7CiAgIHJldHVybiAoTWVzc2FnZSgpIDw8ICJTeW50YXggZXJyb3IgYXQgaW5kZXggIiA8
PCBpbmRleAogICAgICAgICAgIDw8ICIgaW4gc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiBcIiIg
PDwgcmVnZXggPDwgIlwiOiAiKS5HZXRTdHJpbmcoKTsKIH0KQEAgLTQyMiw2ICs4NzMsMzcgQEAg
dm9pZCBSRTo6SW5pdChjb25zdCBjaGFyKiByZWdleCkgewogCiAjZW5kaWYgIC8vIEdURVNUX1VT
RVNfUE9TSVhfUkUKIAorY29uc3QgY2hhciBrVW5rbm93bkZpbGVbXSA9ICJ1bmtub3duIGZpbGUi
OworCisvLyBGb3JtYXRzIGEgc291cmNlIGZpbGUgcGF0aCBhbmQgYSBsaW5lIG51bWJlciBhcyB0
aGV5IHdvdWxkIGFwcGVhcgorLy8gaW4gYW4gZXJyb3IgbWVzc2FnZSBmcm9tIHRoZSBjb21waWxl
ciB1c2VkIHRvIGNvbXBpbGUgdGhpcyBjb2RlLgorR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEZv
cm1hdEZpbGVMb2NhdGlvbihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSkgeworICBjb25zdCBz
dGQ6OnN0cmluZyBmaWxlX25hbWUoZmlsZSA9PSBOVUxMID8ga1Vua25vd25GaWxlIDogZmlsZSk7
CisKKyAgaWYgKGxpbmUgPCAwKSB7CisgICAgcmV0dXJuIGZpbGVfbmFtZSArICI6IjsKKyAgfQor
I2lmZGVmIF9NU0NfVkVSCisgIHJldHVybiBmaWxlX25hbWUgKyAiKCIgKyBTdHJlYW1hYmxlVG9T
dHJpbmcobGluZSkgKyAiKToiOworI2Vsc2UKKyAgcmV0dXJuIGZpbGVfbmFtZSArICI6IiArIFN0
cmVhbWFibGVUb1N0cmluZyhsaW5lKSArICI6IjsKKyNlbmRpZiAgLy8gX01TQ19WRVIKK30KKwor
Ly8gRm9ybWF0cyBhIGZpbGUgbG9jYXRpb24gZm9yIGNvbXBpbGVyLWluZGVwZW5kZW50IFhNTCBv
dXRwdXQuCisvLyBBbHRob3VnaCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwbGF0Zm9ybSBkZXBlbmRl
bnQsIHdlIHB1dCBpdCBuZXh0IHRvCisvLyBGb3JtYXRGaWxlTG9jYXRpb24gaW4gb3JkZXIgdG8g
Y29udHJhc3QgdGhlIHR3byBmdW5jdGlvbnMuCisvLyBOb3RlIHRoYXQgRm9ybWF0Q29tcGlsZXJJ
bmRlcGVuZGVudEZpbGVMb2NhdGlvbigpIGRvZXMgTk9UIGFwcGVuZCBjb2xvbgorLy8gdG8gdGhl
IGZpbGUgbG9jYXRpb24gaXQgcHJvZHVjZXMsIHVubGlrZSBGb3JtYXRGaWxlTG9jYXRpb24oKS4K
K0dURVNUX0FQSV8gOjpzdGQ6OnN0cmluZyBGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxv
Y2F0aW9uKAorICAgIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKSB7CisgIGNvbnN0IHN0ZDo6
c3RyaW5nIGZpbGVfbmFtZShmaWxlID09IE5VTEwgPyBrVW5rbm93bkZpbGUgOiBmaWxlKTsKKwor
ICBpZiAobGluZSA8IDApCisgICAgcmV0dXJuIGZpbGVfbmFtZTsKKyAgZWxzZQorICAgIHJldHVy
biBmaWxlX25hbWUgKyAiOiIgKyBTdHJlYW1hYmxlVG9TdHJpbmcobGluZSk7Cit9CiAKIEdUZXN0
TG9nOjpHVGVzdExvZyhHVGVzdExvZ1NldmVyaXR5IHNldmVyaXR5LCBjb25zdCBjaGFyKiBmaWxl
LCBpbnQgbGluZSkKICAgICA6IHNldmVyaXR5XyhzZXZlcml0eSkgewpAQCAtNDQzLDE5ICs5MjUs
MTYgQEAgR1Rlc3RMb2c6On5HVGVzdExvZygpIHsKIH0KIC8vIERpc2FibGUgTWljcm9zb2Z0IGRl
cHJlY2F0aW9uIHdhcm5pbmdzIGZvciBQT1NJWCBmdW5jdGlvbnMgY2FsbGVkIGZyb20KIC8vIHRo
aXMgY2xhc3MgKGNyZWF0LCBkdXAsIGR1cDIsIGFuZCBjbG9zZSkKLSNpZmRlZiBfTVNDX1ZFUgot
I3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDk5NikKLSNl
bmRpZiAgLy8gX01TQ19WRVIKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQ5OTYp
CiAKLSNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXworI2lmIEdURVNUX0hBU19TVFJF
QU1fUkVESVJFQ1RJT04KIAogLy8gT2JqZWN0IHRoYXQgY2FwdHVyZXMgYW4gb3V0cHV0IHN0cmVh
bSAoc3Rkb3V0L3N0ZGVycikuCiBjbGFzcyBDYXB0dXJlZFN0cmVhbSB7CiAgcHVibGljOgogICAv
LyBUaGUgY3RvciByZWRpcmVjdHMgdGhlIHN0cmVhbSB0byBhIHRlbXBvcmFyeSBmaWxlLgotICBD
YXB0dXJlZFN0cmVhbShpbnQgZmQpIDogZmRfKGZkKSwgdW5jYXB0dXJlZF9mZF8oZHVwKGZkKSkg
ewotI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgZXhwbGljaXQgQ2FwdHVyZWRTdHJlYW0oaW50IGZk
KSA6IGZkXyhmZCksIHVuY2FwdHVyZWRfZmRfKGR1cChmZCkpIHsKKyMgaWYgR1RFU1RfT1NfV0lO
RE9XUwogICAgIGNoYXIgdGVtcF9kaXJfcGF0aFtNQVhfUEFUSCArIDFdID0geyAnXDAnIH07ICAv
LyBOT0xJTlQKICAgICBjaGFyIHRlbXBfZmlsZV9wYXRoW01BWF9QQVRIICsgMV0gPSB7ICdcMCcg
fTsgIC8vIE5PTElOVAogCkBAIC00NzAsMTQgKzk0OSwzMyBAQCBjbGFzcyBDYXB0dXJlZFN0cmVh
bSB7CiAgICAgR1RFU1RfQ0hFQ0tfKGNhcHR1cmVkX2ZkICE9IC0xKSA8PCAiVW5hYmxlIHRvIG9w
ZW4gdGVtcG9yYXJ5IGZpbGUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PDwgdGVtcF9maWxlX3BhdGg7CiAgICAgZmlsZW5hbWVfID0gdGVtcF9maWxlX3BhdGg7Ci0jZWxz
ZQotICAgIC8vIFRoZXJlJ3Mgbm8gZ3VhcmFudGVlIHRoYXQgYSB0ZXN0IGhhcyB3cml0ZSBhY2Nl
c3MgdG8gdGhlCi0gICAgLy8gY3VycmVudCBkaXJlY3RvcnksIHNvIHdlIGNyZWF0ZSB0aGUgdGVt
cG9yYXJ5IGZpbGUgaW4gdGhlIC90bXAKLSAgICAvLyBkaXJlY3RvcnkgaW5zdGVhZC4KKyMgZWxz
ZQorICAgIC8vIFRoZXJlJ3Mgbm8gZ3VhcmFudGVlIHRoYXQgYSB0ZXN0IGhhcyB3cml0ZSBhY2Nl
c3MgdG8gdGhlIGN1cnJlbnQKKyAgICAvLyBkaXJlY3RvcnksIHNvIHdlIGNyZWF0ZSB0aGUgdGVt
cG9yYXJ5IGZpbGUgaW4gdGhlIC90bXAgZGlyZWN0b3J5CisgICAgLy8gaW5zdGVhZC4gV2UgdXNl
IC90bXAgb24gbW9zdCBzeXN0ZW1zLCBhbmQgL3NkY2FyZCBvbiBBbmRyb2lkLgorICAgIC8vIFRo
YXQncyBiZWNhdXNlIEFuZHJvaWQgZG9lc24ndCBoYXZlIC90bXAuCisjICBpZiBHVEVTVF9PU19M
SU5VWF9BTkRST0lECisgICAgLy8gTm90ZTogQW5kcm9pZCBhcHBsaWNhdGlvbnMgYXJlIGV4cGVj
dGVkIHRvIGNhbGwgdGhlIGZyYW1ld29yaydzCisgICAgLy8gQ29udGV4dC5nZXRFeHRlcm5hbFN0
b3JhZ2VEaXJlY3RvcnkoKSBtZXRob2QgdGhyb3VnaCBKTkkgdG8gZ2V0CisgICAgLy8gdGhlIGxv
Y2F0aW9uIG9mIHRoZSB3b3JsZC13cml0YWJsZSBTRCBDYXJkIGRpcmVjdG9yeS4gSG93ZXZlciwK
KyAgICAvLyB0aGlzIHJlcXVpcmVzIGEgQ29udGV4dCBoYW5kbGUsIHdoaWNoIGNhbm5vdCBiZSBy
ZXRyaWV2ZWQKKyAgICAvLyBnbG9iYWxseSBmcm9tIG5hdGl2ZSBjb2RlLiBEb2luZyBzbyBhbHNv
IHByZWNsdWRlcyBydW5uaW5nIHRoZQorICAgIC8vIGNvZGUgYXMgcGFydCBvZiBhIHJlZ3VsYXIg
c3RhbmRhbG9uZSBleGVjdXRhYmxlLCB3aGljaCBkb2Vzbid0CisgICAgLy8gcnVuIGluIGEgRGFs
dmlrIHByb2Nlc3MgKGUuZy4gd2hlbiBydW5uaW5nIGl0IHRocm91Z2ggJ2FkYiBzaGVsbCcpLgor
ICAgIC8vCisgICAgLy8gVGhlIGxvY2F0aW9uIC9zZGNhcmQgaXMgZGlyZWN0bHkgYWNjZXNzaWJs
ZSBmcm9tIG5hdGl2ZSBjb2RlCisgICAgLy8gYW5kIGlzIHRoZSBvbmx5IGxvY2F0aW9uICh1bm9m
ZmljaWFsbHkpIHN1cHBvcnRlZCBieSB0aGUgQW5kcm9pZAorICAgIC8vIHRlYW0uIEl0J3MgZ2Vu
ZXJhbGx5IGEgc3ltbGluayB0byB0aGUgcmVhbCBTRCBDYXJkIG1vdW50IHBvaW50CisgICAgLy8g
d2hpY2ggY2FuIGJlIC9tbnQvc2RjYXJkLCAvbW50L3NkY2FyZDAsIC9zeXN0ZW0vbWVkaWEvc2Rj
YXJkLCBvcgorICAgIC8vIG90aGVyIE9FTS1jdXN0b21pemVkIGxvY2F0aW9ucy4gTmV2ZXIgcmVs
eSBvbiB0aGVzZSwgYW5kIGFsd2F5cworICAgIC8vIHVzZSAvc2RjYXJkLgorICAgIGNoYXIgbmFt
ZV90ZW1wbGF0ZVtdID0gIi9zZGNhcmQvZ3Rlc3RfY2FwdHVyZWRfc3RyZWFtLlhYWFhYWCI7Cisj
ICBlbHNlCiAgICAgY2hhciBuYW1lX3RlbXBsYXRlW10gPSAiL3RtcC9jYXB0dXJlZF9zdHJlYW0u
WFhYWFhYIjsKKyMgIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWF9BTkRST0lECiAgICAgY29uc3Qg
aW50IGNhcHR1cmVkX2ZkID0gbWtzdGVtcChuYW1lX3RlbXBsYXRlKTsKICAgICBmaWxlbmFtZV8g
PSBuYW1lX3RlbXBsYXRlOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTCiAgICAgZmZsdXNoKE5VTEwpOwogICAgIGR1cDIoY2FwdHVyZWRf
ZmQsIGZkXyk7CiAgICAgY2xvc2UoY2FwdHVyZWRfZmQpOwpAQCAtNDg3LDcgKzk4NSw3IEBAIGNs
YXNzIENhcHR1cmVkU3RyZWFtIHsKICAgICByZW1vdmUoZmlsZW5hbWVfLmNfc3RyKCkpOwogICB9
CiAKLSAgU3RyaW5nIEdldENhcHR1cmVkU3RyaW5nKCkgeworICBzdGQ6OnN0cmluZyBHZXRDYXB0
dXJlZFN0cmluZygpIHsKICAgICBpZiAodW5jYXB0dXJlZF9mZF8gIT0gLTEpIHsKICAgICAgIC8v
IFJlc3RvcmVzIHRoZSBvcmlnaW5hbCBzdHJlYW0uCiAgICAgICBmZmx1c2goTlVMTCk7CkBAIC00
OTcsMTggKzk5NSwxMiBAQCBjbGFzcyBDYXB0dXJlZFN0cmVhbSB7CiAgICAgfQogCiAgICAgRklM
RSogY29uc3QgZmlsZSA9IHBvc2l4OjpGT3BlbihmaWxlbmFtZV8uY19zdHIoKSwgInIiKTsKLSAg
ICBjb25zdCBTdHJpbmcgY29udGVudCA9IFJlYWRFbnRpcmVGaWxlKGZpbGUpOworICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIGNvbnRlbnQgPSBSZWFkRW50aXJlRmlsZShmaWxlKTsKICAgICBwb3NpeDo6
RkNsb3NlKGZpbGUpOwogICAgIHJldHVybiBjb250ZW50OwogICB9CiAKICBwcml2YXRlOgotICAv
LyBSZWFkcyB0aGUgZW50aXJlIGNvbnRlbnQgb2YgYSBmaWxlIGFzIGEgU3RyaW5nLgotICBzdGF0
aWMgU3RyaW5nIFJlYWRFbnRpcmVGaWxlKEZJTEUqIGZpbGUpOwotCi0gIC8vIFJldHVybnMgdGhl
IHNpemUgKGluIGJ5dGVzKSBvZiBhIGZpbGUuCi0gIHN0YXRpYyBzaXplX3QgR2V0RmlsZVNpemUo
RklMRSogZmlsZSk7Ci0KICAgY29uc3QgaW50IGZkXzsgIC8vIEEgc3RyZWFtIHRvIGNhcHR1cmUu
CiAgIGludCB1bmNhcHR1cmVkX2ZkXzsKICAgLy8gTmFtZSBvZiB0aGUgdGVtcG9yYXJ5IGZpbGUg
aG9sZGluZyB0aGUgc3RkZXJyIG91dHB1dC4KQEAgLTUxNywzOCArMTAwOSw3IEBAIGNsYXNzIENh
cHR1cmVkU3RyZWFtIHsKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhDYXB0dXJl
ZFN0cmVhbSk7CiB9OwogCi0vLyBSZXR1cm5zIHRoZSBzaXplIChpbiBieXRlcykgb2YgYSBmaWxl
Lgotc2l6ZV90IENhcHR1cmVkU3RyZWFtOjpHZXRGaWxlU2l6ZShGSUxFKiBmaWxlKSB7Ci0gIGZz
ZWVrKGZpbGUsIDAsIFNFRUtfRU5EKTsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oZnRl
bGwoZmlsZSkpOwotfQotCi0vLyBSZWFkcyB0aGUgZW50aXJlIGNvbnRlbnQgb2YgYSBmaWxlIGFz
IGEgc3RyaW5nLgotU3RyaW5nIENhcHR1cmVkU3RyZWFtOjpSZWFkRW50aXJlRmlsZShGSUxFKiBm
aWxlKSB7Ci0gIGNvbnN0IHNpemVfdCBmaWxlX3NpemUgPSBHZXRGaWxlU2l6ZShmaWxlKTsKLSAg
Y2hhciogY29uc3QgYnVmZmVyID0gbmV3IGNoYXJbZmlsZV9zaXplXTsKLQotICBzaXplX3QgYnl0
ZXNfbGFzdF9yZWFkID0gMDsgIC8vICMgb2YgYnl0ZXMgcmVhZCBpbiB0aGUgbGFzdCBmcmVhZCgp
Ci0gIHNpemVfdCBieXRlc19yZWFkID0gMDsgICAgICAgLy8gIyBvZiBieXRlcyByZWFkIHNvIGZh
cgotCi0gIGZzZWVrKGZpbGUsIDAsIFNFRUtfU0VUKTsKLQotICAvLyBLZWVwcyByZWFkaW5nIHRo
ZSBmaWxlIHVudGlsIHdlIGNhbm5vdCByZWFkIGZ1cnRoZXIgb3IgdGhlCi0gIC8vIHByZS1kZXRl
cm1pbmVkIGZpbGUgc2l6ZSBpcyByZWFjaGVkLgotICBkbyB7Ci0gICAgYnl0ZXNfbGFzdF9yZWFk
ID0gZnJlYWQoYnVmZmVyK2J5dGVzX3JlYWQsIDEsIGZpbGVfc2l6ZS1ieXRlc19yZWFkLCBmaWxl
KTsKLSAgICBieXRlc19yZWFkICs9IGJ5dGVzX2xhc3RfcmVhZDsKLSAgfSB3aGlsZSAoYnl0ZXNf
bGFzdF9yZWFkID4gMCAmJiBieXRlc19yZWFkIDwgZmlsZV9zaXplKTsKLQotICBjb25zdCBTdHJp
bmcgY29udGVudChidWZmZXIsIGJ5dGVzX3JlYWQpOwotICBkZWxldGVbXSBidWZmZXI7Ci0KLSAg
cmV0dXJuIGNvbnRlbnQ7Ci19Ci0KLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHBv
cCkKLSNlbmRpZiAgLy8gX01TQ19WRVIKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8o
KQogCiBzdGF0aWMgQ2FwdHVyZWRTdHJlYW0qIGdfY2FwdHVyZWRfc3RkZXJyID0gTlVMTDsKIHN0
YXRpYyBDYXB0dXJlZFN0cmVhbSogZ19jYXB0dXJlZF9zdGRvdXQgPSBOVUxMOwpAQCAtNTYzLDgg
KzEwMjQsOCBAQCB2b2lkIENhcHR1cmVTdHJlYW0oaW50IGZkLCBjb25zdCBjaGFyKiBzdHJlYW1f
bmFtZSwgQ2FwdHVyZWRTdHJlYW0qKiBzdHJlYW0pIHsKIH0KIAogLy8gU3RvcHMgY2FwdHVyaW5n
IHRoZSBvdXRwdXQgc3RyZWFtIGFuZCByZXR1cm5zIHRoZSBjYXB0dXJlZCBzdHJpbmcuCi1TdHJp
bmcgR2V0Q2FwdHVyZWRTdHJlYW0oQ2FwdHVyZWRTdHJlYW0qKiBjYXB0dXJlZF9zdHJlYW0pIHsK
LSAgY29uc3QgU3RyaW5nIGNvbnRlbnQgPSAoKmNhcHR1cmVkX3N0cmVhbSktPkdldENhcHR1cmVk
U3RyaW5nKCk7CitzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0cmVhbShDYXB0dXJlZFN0cmVhbSoq
IGNhcHR1cmVkX3N0cmVhbSkgeworICBjb25zdCBzdGQ6OnN0cmluZyBjb250ZW50ID0gKCpjYXB0
dXJlZF9zdHJlYW0pLT5HZXRDYXB0dXJlZFN0cmluZygpOwogCiAgIGRlbGV0ZSAqY2FwdHVyZWRf
c3RyZWFtOwogICAqY2FwdHVyZWRfc3RyZWFtID0gTlVMTDsKQEAgLTU4MywyMSArMTA0NCw3OSBA
QCB2b2lkIENhcHR1cmVTdGRlcnIoKSB7CiB9CiAKIC8vIFN0b3BzIGNhcHR1cmluZyBzdGRvdXQg
YW5kIHJldHVybnMgdGhlIGNhcHR1cmVkIHN0cmluZy4KLVN0cmluZyBHZXRDYXB0dXJlZFN0ZG91
dCgpIHsgcmV0dXJuIEdldENhcHR1cmVkU3RyZWFtKCZnX2NhcHR1cmVkX3N0ZG91dCk7IH0KK3N0
ZDo6c3RyaW5nIEdldENhcHR1cmVkU3Rkb3V0KCkgeworICByZXR1cm4gR2V0Q2FwdHVyZWRTdHJl
YW0oJmdfY2FwdHVyZWRfc3Rkb3V0KTsKK30KIAogLy8gU3RvcHMgY2FwdHVyaW5nIHN0ZGVyciBh
bmQgcmV0dXJucyB0aGUgY2FwdHVyZWQgc3RyaW5nLgotU3RyaW5nIEdldENhcHR1cmVkU3RkZXJy
KCkgeyByZXR1cm4gR2V0Q2FwdHVyZWRTdHJlYW0oJmdfY2FwdHVyZWRfc3RkZXJyKTsgfQorc3Rk
OjpzdHJpbmcgR2V0Q2FwdHVyZWRTdGRlcnIoKSB7CisgIHJldHVybiBHZXRDYXB0dXJlZFN0cmVh
bSgmZ19jYXB0dXJlZF9zdGRlcnIpOworfQogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1f
UkVESVJFQ1RJT05fCisjZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KKwor
c3RkOjpzdHJpbmcgVGVtcERpcigpIHsKKyNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorICBy
ZXR1cm4gIlxcdGVtcFxcIjsKKyNlbGlmIEdURVNUX09TX1dJTkRPV1MKKyAgY29uc3QgY2hhciog
dGVtcF9kaXIgPSBwb3NpeDo6R2V0RW52KCJURU1QIik7CisgIGlmICh0ZW1wX2RpciA9PSBOVUxM
IHx8IHRlbXBfZGlyWzBdID09ICdcMCcpCisgICAgcmV0dXJuICJcXHRlbXBcXCI7CisgIGVsc2Ug
aWYgKHRlbXBfZGlyW3N0cmxlbih0ZW1wX2RpcikgLSAxXSA9PSAnXFwnKQorICAgIHJldHVybiB0
ZW1wX2RpcjsKKyAgZWxzZQorICAgIHJldHVybiBzdGQ6OnN0cmluZyh0ZW1wX2RpcikgKyAiXFwi
OworI2VsaWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRAorICByZXR1cm4gIi9zZGNhcmQvIjsKKyNl
bHNlCisgIHJldHVybiAiL3RtcC8iOworI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklM
RQorfQorCitzaXplX3QgR2V0RmlsZVNpemUoRklMRSogZmlsZSkgeworICBmc2VlayhmaWxlLCAw
LCBTRUVLX0VORCk7CisgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGZ0ZWxsKGZpbGUpKTsK
K30KKworc3RkOjpzdHJpbmcgUmVhZEVudGlyZUZpbGUoRklMRSogZmlsZSkgeworICBjb25zdCBz
aXplX3QgZmlsZV9zaXplID0gR2V0RmlsZVNpemUoZmlsZSk7CisgIGNoYXIqIGNvbnN0IGJ1ZmZl
ciA9IG5ldyBjaGFyW2ZpbGVfc2l6ZV07CisKKyAgc2l6ZV90IGJ5dGVzX2xhc3RfcmVhZCA9IDA7
ICAvLyAjIG9mIGJ5dGVzIHJlYWQgaW4gdGhlIGxhc3QgZnJlYWQoKQorICBzaXplX3QgYnl0ZXNf
cmVhZCA9IDA7ICAgICAgIC8vICMgb2YgYnl0ZXMgcmVhZCBzbyBmYXIKKworICBmc2VlayhmaWxl
LCAwLCBTRUVLX1NFVCk7CisKKyAgLy8gS2VlcHMgcmVhZGluZyB0aGUgZmlsZSB1bnRpbCB3ZSBj
YW5ub3QgcmVhZCBmdXJ0aGVyIG9yIHRoZQorICAvLyBwcmUtZGV0ZXJtaW5lZCBmaWxlIHNpemUg
aXMgcmVhY2hlZC4KKyAgZG8geworICAgIGJ5dGVzX2xhc3RfcmVhZCA9IGZyZWFkKGJ1ZmZlciti
eXRlc19yZWFkLCAxLCBmaWxlX3NpemUtYnl0ZXNfcmVhZCwgZmlsZSk7CisgICAgYnl0ZXNfcmVh
ZCArPSBieXRlc19sYXN0X3JlYWQ7CisgIH0gd2hpbGUgKGJ5dGVzX2xhc3RfcmVhZCA+IDAgJiYg
Ynl0ZXNfcmVhZCA8IGZpbGVfc2l6ZSk7CisKKyAgY29uc3Qgc3RkOjpzdHJpbmcgY29udGVudChi
dWZmZXIsIGJ5dGVzX3JlYWQpOworICBkZWxldGVbXSBidWZmZXI7CisKKyAgcmV0dXJuIGNvbnRl
bnQ7Cit9CiAKICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogCi0vLyBBIGNvcHkgb2YgYWxsIGNv
bW1hbmQgbGluZSBhcmd1bWVudHMuICBTZXQgYnkgSW5pdEdvb2dsZVRlc3QoKS4KLTo6c3RkOjp2
ZWN0b3I8U3RyaW5nPiBnX2FyZ3ZzOworc3RhdGljIGNvbnN0IDo6c3RkOjp2ZWN0b3I8dGVzdGlu
Zzo6aW50ZXJuYWw6OnN0cmluZz4qIGdfaW5qZWN0ZWRfdGVzdF9hcmd2cyA9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTDsgIC8vIE93bmVkLgogCi0vLyBSZXR1
cm5zIHRoZSBjb21tYW5kIGxpbmUgYXMgYSB2ZWN0b3Igb2Ygc3RyaW5ncy4KLWNvbnN0IDo6c3Rk
Ojp2ZWN0b3I8U3RyaW5nPiYgR2V0QXJndnMoKSB7IHJldHVybiBnX2FyZ3ZzOyB9Cit2b2lkIFNl
dEluamVjdGFibGVBcmd2cyhjb25zdCA6OnN0ZDo6dmVjdG9yPHRlc3Rpbmc6OmludGVybmFsOjpz
dHJpbmc+KiBhcmd2cykgeworICBpZiAoZ19pbmplY3RlZF90ZXN0X2FyZ3ZzICE9IGFyZ3ZzKQor
ICAgIGRlbGV0ZSBnX2luamVjdGVkX3Rlc3RfYXJndnM7CisgIGdfaW5qZWN0ZWRfdGVzdF9hcmd2
cyA9IGFyZ3ZzOworfQogCitjb25zdCA6OnN0ZDo6dmVjdG9yPHRlc3Rpbmc6OmludGVybmFsOjpz
dHJpbmc+JiBHZXRJbmplY3RhYmxlQXJndnMoKSB7CisgIGlmIChnX2luamVjdGVkX3Rlc3RfYXJn
dnMgIT0gTlVMTCkgeworICAgIHJldHVybiAqZ19pbmplY3RlZF90ZXN0X2FyZ3ZzOworICB9Cisg
IHJldHVybiBHZXRBcmd2cygpOworfQogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAog
CiAjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKQEAgLTYxMiwxMyArMTEzMSwxMyBAQCB2b2lk
IEFib3J0KCkgewogLy8gUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFi
bGUgY29ycmVzcG9uZGluZyB0byB0aGUKIC8vIGdpdmVuIGZsYWcuICBGb3IgZXhhbXBsZSwgRmxh
Z1RvRW52VmFyKCJmb28iKSB3aWxsIHJldHVybgogLy8gIkdURVNUX0ZPTyIgaW4gdGhlIG9wZW4t
c291cmNlIHZlcnNpb24uCi1zdGF0aWMgU3RyaW5nIEZsYWdUb0VudlZhcihjb25zdCBjaGFyKiBm
bGFnKSB7Ci0gIGNvbnN0IFN0cmluZyBmdWxsX2ZsYWcgPQorc3RhdGljIHN0ZDo6c3RyaW5nIEZs
YWdUb0VudlZhcihjb25zdCBjaGFyKiBmbGFnKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZ1bGxf
ZmxhZyA9CiAgICAgICAoTWVzc2FnZSgpIDw8IEdURVNUX0ZMQUdfUFJFRklYXyA8PCBmbGFnKS5H
ZXRTdHJpbmcoKTsKIAogICBNZXNzYWdlIGVudl92YXI7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
ICE9IGZ1bGxfZmxhZy5sZW5ndGgoKTsgaSsrKSB7Ci0gICAgZW52X3ZhciA8PCBzdGF0aWNfY2Fz
dDxjaGFyPih0b3VwcGVyKGZ1bGxfZmxhZy5jX3N0cigpW2ldKSk7CisgICAgZW52X3ZhciA8PCBU
b1VwcGVyKGZ1bGxfZmxhZy5jX3N0cigpW2ldKTsKICAgfQogCiAgIHJldHVybiBlbnZfdmFyLkdl
dFN0cmluZygpOwpAQCAtNjcwLDcgKzExODksMTAgQEAgYm9vbCBQYXJzZUludDMyKGNvbnN0IE1l
c3NhZ2UmIHNyY190ZXh0LCBjb25zdCBjaGFyKiBzdHIsIEludDMyKiB2YWx1ZSkgewogLy8KIC8v
IFRoZSB2YWx1ZSBpcyBjb25zaWRlcmVkIHRydWUgaWZmIGl0J3Mgbm90ICIwIi4KIGJvb2wgQm9v
bEZyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBib29sIGRlZmF1bHRfdmFsdWUpIHsKLSAg
Y29uc3QgU3RyaW5nIGVudl92YXIgPSBGbGFnVG9FbnZWYXIoZmxhZyk7CisjaWYgZGVmaW5lZChH
VEVTVF9HRVRfQk9PTF9GUk9NX0VOVl8pCisgIHJldHVybiBHVEVTVF9HRVRfQk9PTF9GUk9NX0VO
Vl8oZmxhZywgZGVmYXVsdF92YWx1ZSk7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfR0VUX0JP
T0xfRlJPTV9FTlZfKQorICBjb25zdCBzdGQ6OnN0cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52VmFy
KGZsYWcpOwogICBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdfdmFsdWUgPSBwb3NpeDo6R2V0RW52
KGVudl92YXIuY19zdHIoKSk7CiAgIHJldHVybiBzdHJpbmdfdmFsdWUgPT0gTlVMTCA/CiAgICAg
ICBkZWZhdWx0X3ZhbHVlIDogc3RyY21wKHN0cmluZ192YWx1ZSwgIjAiKSAhPSAwOwpAQCAtNjgw
LDcgKzEyMDIsMTAgQEAgYm9vbCBCb29sRnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIGJv
b2wgZGVmYXVsdF92YWx1ZSkgewogLy8gdmFyaWFibGUgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2
ZW4gZmxhZzsgaWYgaXQgaXNuJ3Qgc2V0IG9yCiAvLyBkb2Vzbid0IHJlcHJlc2VudCBhIHZhbGlk
IDMyLWJpdCBpbnRlZ2VyLCByZXR1cm5zIGRlZmF1bHRfdmFsdWUuCiBJbnQzMiBJbnQzMkZyb21H
VGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBJbnQzMiBkZWZhdWx0X3ZhbHVlKSB7Ci0gIGNvbnN0
IFN0cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52VmFyKGZsYWcpOworI2lmIGRlZmluZWQoR1RFU1Rf
R0VUX0lOVDMyX0ZST01fRU5WXykKKyAgcmV0dXJuIEdURVNUX0dFVF9JTlQzMl9GUk9NX0VOVl8o
ZmxhZywgZGVmYXVsdF92YWx1ZSk7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfR0VUX0lOVDMy
X0ZST01fRU5WXykKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihm
bGFnKTsKICAgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nX3ZhbHVlID0gcG9zaXg6OkdldEVudihl
bnZfdmFyLmNfc3RyKCkpOwogICBpZiAoc3RyaW5nX3ZhbHVlID09IE5VTEwpIHsKICAgICAvLyBU
aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldC4KQEAgLTcwMSwxMCArMTIyNiwzMyBA
QCBJbnQzMiBJbnQzMkZyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBJbnQzMiBkZWZhdWx0
X3ZhbHVlKSB7CiAKIC8vIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBzdHJpbmcgZW52aXJvbm1lbnQg
dmFyaWFibGUgY29ycmVzcG9uZGluZyB0bwogLy8gdGhlIGdpdmVuIGZsYWc7IGlmIGl0J3Mgbm90
IHNldCwgcmV0dXJucyBkZWZhdWx0X3ZhbHVlLgotY29uc3QgY2hhciogU3RyaW5nRnJvbUdUZXN0
RW52KGNvbnN0IGNoYXIqIGZsYWcsIGNvbnN0IGNoYXIqIGRlZmF1bHRfdmFsdWUpIHsKLSAgY29u
c3QgU3RyaW5nIGVudl92YXIgPSBGbGFnVG9FbnZWYXIoZmxhZyk7Ci0gIGNvbnN0IGNoYXIqIGNv
bnN0IHZhbHVlID0gcG9zaXg6OkdldEVudihlbnZfdmFyLmNfc3RyKCkpOwotICByZXR1cm4gdmFs
dWUgPT0gTlVMTCA/IGRlZmF1bHRfdmFsdWUgOiB2YWx1ZTsKK3N0ZDo6c3RyaW5nIFN0cmluZ0Zy
b21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBjb25zdCBjaGFyKiBkZWZhdWx0X3ZhbHVlKSB7
CisjaWYgZGVmaW5lZChHVEVTVF9HRVRfU1RSSU5HX0ZST01fRU5WXykKKyAgcmV0dXJuIEdURVNU
X0dFVF9TVFJJTkdfRlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOworI2VuZGlmICAvLyBk
ZWZpbmVkKEdURVNUX0dFVF9TVFJJTkdfRlJPTV9FTlZfKQorICBjb25zdCBzdGQ6OnN0cmluZyBl
bnZfdmFyID0gRmxhZ1RvRW52VmFyKGZsYWcpOworICBjb25zdCBjaGFyKiB2YWx1ZSA9IHBvc2l4
OjpHZXRFbnYoZW52X3Zhci5jX3N0cigpKTsKKyAgaWYgKHZhbHVlICE9IE5VTEwpIHsKKyAgICBy
ZXR1cm4gdmFsdWU7CisgIH0KKworICAvLyBBcyBhIHNwZWNpYWwgY2FzZSBmb3IgdGhlICdvdXRw
dXQnIGZsYWcsIGlmIEdURVNUX09VVFBVVCBpcyBub3QKKyAgLy8gc2V0LCB3ZSBsb29rIGZvciBY
TUxfT1VUUFVUX0ZJTEUsIHdoaWNoIGlzIHNldCBieSB0aGUgQmF6ZWwgYnVpbGQKKyAgLy8gc3lz
dGVtLiAgVGhlIHZhbHVlIG9mIFhNTF9PVVRQVVRfRklMRSBpcyBhIGZpbGVuYW1lIHdpdGhvdXQg
dGhlCisgIC8vICJ4bWw6IiBwcmVmaXggb2YgR1RFU1RfT1VUUFVULgorICAvLworICAvLyBUaGUg
bmV0IHByaW9yaXR5IG9yZGVyIGFmdGVyIGZsYWcgcHJvY2Vzc2luZyBpcyB0aHVzOgorICAvLyAg
IC0tZ3Rlc3Rfb3V0cHV0IGNvbW1hbmQgbGluZSBmbGFnCisgIC8vICAgR1RFU1RfT1VUUFVUIGVu
dmlyb25tZW50IHZhcmlhYmxlCisgIC8vICAgWE1MX09VVFBVVF9GSUxFIGVudmlyb25tZW50IHZh
cmlhYmxlCisgIC8vICAgJ2RlZmF1bHRfdmFsdWUnCisgIGlmIChzdHJjbXAoZmxhZywgIm91dHB1
dCIpID09IDApIHsKKyAgICB2YWx1ZSA9IHBvc2l4OjpHZXRFbnYoIlhNTF9PVVRQVVRfRklMRSIp
OworICAgIGlmICh2YWx1ZSAhPSBOVUxMKSB7CisgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoInht
bDoiKSArIHZhbHVlOworICAgIH0KKyAgfQorICByZXR1cm4gZGVmYXVsdF92YWx1ZTsKIH0KIAog
fSAgLy8gbmFtZXNwYWNlIGludGVybmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zcmMvZ3Rlc3QtcHJpbnRlcnMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMv
Z3Rlc3QtcHJpbnRlcnMuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTJkZjQxMmY4YTIwNDU5MDQzY2RiNzBlNWIw
OTVhNzJiN2ExMzk0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NyYy9ndGVzdC1wcmludGVycy5jYwpAQCAtMCwwICsxLDM3MyBAQAorLy8gQ29weXJpZ2h0IDIw
MDcsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisv
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjogd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbikKKworLy8gR29vZ2xlIFRlc3QgLSBUaGUgR29vZ2xlIEMrKyBUZXN0
aW5nIEZyYW1ld29yaworLy8KKy8vIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGEgdW5pdmVyc2FsIHZh
bHVlIHByaW50ZXIgdGhhdCBjYW4gcHJpbnQgYQorLy8gdmFsdWUgb2YgYW55IHR5cGUgVDoKKy8v
CisvLyAgIHZvaWQgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnRlcjxUPjo6UHJp
bnQodmFsdWUsIG9zdHJlYW1fcHRyKTsKKy8vCisvLyBJdCB1c2VzIHRoZSA8PCBvcGVyYXRvciB3
aGVuIHBvc3NpYmxlLCBhbmQgcHJpbnRzIHRoZSBieXRlcyBpbiB0aGUKKy8vIG9iamVjdCBvdGhl
cndpc2UuICBBIHVzZXIgY2FuIG92ZXJyaWRlIGl0cyBiZWhhdmlvciBmb3IgYSBjbGFzcworLy8g
dHlwZSBGb28gYnkgZGVmaW5pbmcgZWl0aGVyIG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0mLCBj
b25zdCBGb28mKQorLy8gb3Igdm9pZCBQcmludFRvKGNvbnN0IEZvbyYsIDo6c3RkOjpvc3RyZWFt
KikgaW4gdGhlIG5hbWVzcGFjZSB0aGF0CisvLyBkZWZpbmVzIEZvby4KKworI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LXByaW50ZXJzLmgiCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdGRp
by5oPgorI2luY2x1ZGUgPGN3Y2hhcj4KKyNpbmNsdWRlIDxvc3RyZWFtPiAgLy8gTk9MSU5UCisj
aW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIK
KworbmFtZXNwYWNlIHRlc3RpbmcgeworCituYW1lc3BhY2UgeworCit1c2luZyA6OnN0ZDo6b3N0
cmVhbTsKKworLy8gUHJpbnRzIGEgc2VnbWVudCBvZiBieXRlcyBpbiB0aGUgZ2l2ZW4gb2JqZWN0
LgorR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8KK0dURVNUX0FUVFJJQlVURV9O
T19TQU5JVElaRV9BRERSRVNTXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8K
K3ZvaWQgUHJpbnRCeXRlU2VnbWVudEluT2JqZWN0VG8oY29uc3QgdW5zaWduZWQgY2hhciogb2Jq
X2J5dGVzLCBzaXplX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBjb3VudCwgb3N0cmVhbSogb3MpIHsKKyAgY2hhciB0ZXh0WzVdID0gIiI7CisgIGZvciAo
c2l6ZV90IGkgPSAwOyBpICE9IGNvdW50OyBpKyspIHsKKyAgICBjb25zdCBzaXplX3QgaiA9IHN0
YXJ0ICsgaTsKKyAgICBpZiAoaSAhPSAwKSB7CisgICAgICAvLyBPcmdhbml6ZXMgdGhlIGJ5dGVz
IGludG8gZ3JvdXBzIG9mIDIgZm9yIGVhc3kgcGFyc2luZyBieQorICAgICAgLy8gaHVtYW4uCisg
ICAgICBpZiAoKGogJSAyKSA9PSAwKQorICAgICAgICAqb3MgPDwgJyAnOworICAgICAgZWxzZQor
ICAgICAgICAqb3MgPDwgJy0nOworICAgIH0KKyAgICBHVEVTVF9TTlBSSU5URl8odGV4dCwgc2l6
ZW9mKHRleHQpLCAiJTAyWCIsIG9ial9ieXRlc1tqXSk7CisgICAgKm9zIDw8IHRleHQ7CisgIH0K
K30KKworLy8gUHJpbnRzIHRoZSBieXRlcyBpbiB0aGUgZ2l2ZW4gdmFsdWUgdG8gdGhlIGdpdmVu
IG9zdHJlYW0uCit2b2lkIFByaW50Qnl0ZXNJbk9iamVjdFRvSW1wbChjb25zdCB1bnNpZ25lZCBj
aGFyKiBvYmpfYnl0ZXMsIHNpemVfdCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9zdHJlYW0qIG9zKSB7CisgIC8vIFRlbGxzIHRoZSB1c2VyIGhvdyBiaWcgdGhlIG9iamVj
dCBpcy4KKyAgKm9zIDw8IGNvdW50IDw8ICItYnl0ZSBvYmplY3QgPCI7CisKKyAgY29uc3Qgc2l6
ZV90IGtUaHJlc2hvbGQgPSAxMzI7CisgIGNvbnN0IHNpemVfdCBrQ2h1bmtTaXplID0gNjQ7Cisg
IC8vIElmIHRoZSBvYmplY3Qgc2l6ZSBpcyBiaWdnZXIgdGhhbiBrVGhyZXNob2xkLCB3ZSdsbCBo
YXZlIHRvIG9taXQKKyAgLy8gc29tZSBkZXRhaWxzIGJ5IHByaW50aW5nIG9ubHkgdGhlIGZpcnN0
IGFuZCB0aGUgbGFzdCBrQ2h1bmtTaXplCisgIC8vIGJ5dGVzLgorICAvLyBUT0RPKHdhbik6IGxl
dCB0aGUgdXNlciBjb250cm9sIHRoZSB0aHJlc2hvbGQgdXNpbmcgYSBmbGFnLgorICBpZiAoY291
bnQgPCBrVGhyZXNob2xkKSB7CisgICAgUHJpbnRCeXRlU2VnbWVudEluT2JqZWN0VG8ob2JqX2J5
dGVzLCAwLCBjb3VudCwgb3MpOworICB9IGVsc2UgeworICAgIFByaW50Qnl0ZVNlZ21lbnRJbk9i
amVjdFRvKG9ial9ieXRlcywgMCwga0NodW5rU2l6ZSwgb3MpOworICAgICpvcyA8PCAiIC4uLiAi
OworICAgIC8vIFJvdW5kcyB1cCB0byAyLWJ5dGUgYm91bmRhcnkuCisgICAgY29uc3Qgc2l6ZV90
IHJlc3VtZV9wb3MgPSAoY291bnQgLSBrQ2h1bmtTaXplICsgMSkvMioyOworICAgIFByaW50Qnl0
ZVNlZ21lbnRJbk9iamVjdFRvKG9ial9ieXRlcywgcmVzdW1lX3BvcywgY291bnQgLSByZXN1bWVf
cG9zLCBvcyk7CisgIH0KKyAgKm9zIDw8ICI+IjsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK25h
bWVzcGFjZSBpbnRlcm5hbDIgeworCisvLyBEZWxlZ2F0ZXMgdG8gUHJpbnRCeXRlc0luT2JqZWN0
VG9JbXBsKCkgdG8gcHJpbnQgdGhlIGJ5dGVzIGluIHRoZQorLy8gZ2l2ZW4gb2JqZWN0LiAgVGhl
IGRlbGVnYXRpb24gc2ltcGxpZmllcyB0aGUgaW1wbGVtZW50YXRpb24sIHdoaWNoCisvLyB1c2Vz
IHRoZSA8PCBvcGVyYXRvciBhbmQgdGh1cyBpcyBlYXNpZXIgZG9uZSBvdXRzaWRlIG9mIHRoZQor
Ly8gOjp0ZXN0aW5nOjppbnRlcm5hbCBuYW1lc3BhY2UsIHdoaWNoIGNvbnRhaW5zIGEgPDwgb3Bl
cmF0b3IgdGhhdAorLy8gc29tZXRpbWVzIGNvbmZsaWN0cyB3aXRoIHRoZSBvbmUgaW4gU1RMLgor
dm9pZCBQcmludEJ5dGVzSW5PYmplY3RUbyhjb25zdCB1bnNpZ25lZCBjaGFyKiBvYmpfYnl0ZXMs
IHNpemVfdCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb3N0cmVhbSogb3MpIHsK
KyAgUHJpbnRCeXRlc0luT2JqZWN0VG9JbXBsKG9ial9ieXRlcywgY291bnQsIG9zKTsKK30KKwor
fSAgLy8gbmFtZXNwYWNlIGludGVybmFsMgorCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBE
ZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGEgY2hhciAob3Igd2NoYXJfdCksIHdlIHByaW50IGl0
IGluIG9uZQorLy8gb2YgdGhyZWUgZm9ybWF0czoKKy8vICAgLSBhcyBpcyBpZiBpdCdzIGEgcHJp
bnRhYmxlIEFTQ0lJIChlLmcuICdhJywgJzInLCAnICcpLAorLy8gICAtIGFzIGEgaGV4aWRlY2lt
YWwgZXNjYXBlIHNlcXVlbmNlIChlLmcuICdceDdGJyksIG9yCisvLyAgIC0gYXMgYSBzcGVjaWFs
IGVzY2FwZSBzZXF1ZW5jZSAoZS5nLiAnXHInLCAnXG4nKS4KK2VudW0gQ2hhckZvcm1hdCB7Cisg
IGtBc0lzLAorICBrSGV4RXNjYXBlLAorICBrU3BlY2lhbEVzY2FwZQorfTsKKworLy8gUmV0dXJu
cyB0cnVlIGlmIGMgaXMgYSBwcmludGFibGUgQVNDSUkgY2hhcmFjdGVyLiAgV2UgdGVzdCB0aGUK
Ky8vIHZhbHVlIG9mIGMgZGlyZWN0bHkgaW5zdGVhZCBvZiBjYWxsaW5nIGlzcHJpbnQoKSwgd2hp
Y2ggaXMgYnVnZ3kgb24KKy8vIFdpbmRvd3MgTW9iaWxlLgoraW5saW5lIGJvb2wgSXNQcmludGFi
bGVBc2NpaSh3Y2hhcl90IGMpIHsKKyAgcmV0dXJuIDB4MjAgPD0gYyAmJiBjIDw9IDB4N0U7Cit9
CisKKy8vIFByaW50cyBhIHdpZGUgb3IgbmFycm93IGNoYXIgYyBhcyBhIGNoYXJhY3RlciBsaXRl
cmFsIHdpdGhvdXQgdGhlCisvLyBxdW90ZXMsIGVzY2FwaW5nIGl0IHdoZW4gbmVjZXNzYXJ5OyBy
ZXR1cm5zIGhvdyBjIHdhcyBmb3JtYXR0ZWQuCisvLyBUaGUgdGVtcGxhdGUgYXJndW1lbnQgVW5z
aWduZWRDaGFyIGlzIHRoZSB1bnNpZ25lZCB2ZXJzaW9uIG9mIENoYXIsCisvLyB3aGljaCBpcyB0
aGUgdHlwZSBvZiBjLgordGVtcGxhdGUgPHR5cGVuYW1lIFVuc2lnbmVkQ2hhciwgdHlwZW5hbWUg
Q2hhcj4KK3N0YXRpYyBDaGFyRm9ybWF0IFByaW50QXNDaGFyTGl0ZXJhbFRvKENoYXIgYywgb3N0
cmVhbSogb3MpIHsKKyAgc3dpdGNoIChzdGF0aWNfY2FzdDx3Y2hhcl90PihjKSkgeworICAgIGNh
c2UgTCdcMCc6CisgICAgICAqb3MgPDwgIlxcMCI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwn
XCcnOgorICAgICAgKm9zIDw8ICJcXCciOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1xcJzoK
KyAgICAgICpvcyA8PCAiXFxcXCI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwnXGEnOgorICAg
ICAgKm9zIDw8ICJcXGEiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1xiJzoKKyAgICAgICpv
cyA8PCAiXFxiIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTCdcZic6CisgICAgICAqb3MgPDwg
IlxcZiI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwnXG4nOgorICAgICAgKm9zIDw8ICJcXG4i
OworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1xyJzoKKyAgICAgICpvcyA8PCAiXFxyIjsKKyAg
ICAgIGJyZWFrOworICAgIGNhc2UgTCdcdCc6CisgICAgICAqb3MgPDwgIlxcdCI7CisgICAgICBi
cmVhazsKKyAgICBjYXNlIEwnXHYnOgorICAgICAgKm9zIDw8ICJcXHYiOworICAgICAgYnJlYWs7
CisgICAgZGVmYXVsdDoKKyAgICAgIGlmIChJc1ByaW50YWJsZUFzY2lpKGMpKSB7CisgICAgICAg
ICpvcyA8PCBzdGF0aWNfY2FzdDxjaGFyPihjKTsKKyAgICAgICAgcmV0dXJuIGtBc0lzOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgKm9zIDw8ICJcXHgiICsgU3RyaW5nOjpGb3JtYXRIZXhJbnQo
c3RhdGljX2Nhc3Q8VW5zaWduZWRDaGFyPihjKSk7CisgICAgICAgIHJldHVybiBrSGV4RXNjYXBl
OworICAgICAgfQorICB9CisgIHJldHVybiBrU3BlY2lhbEVzY2FwZTsKK30KKworLy8gUHJpbnRz
IGEgd2NoYXJfdCBjIGFzIGlmIGl0J3MgcGFydCBvZiBhIHN0cmluZyBsaXRlcmFsLCBlc2NhcGlu
ZyBpdCB3aGVuCisvLyBuZWNlc3Nhcnk7IHJldHVybnMgaG93IGMgd2FzIGZvcm1hdHRlZC4KK3N0
YXRpYyBDaGFyRm9ybWF0IFByaW50QXNTdHJpbmdMaXRlcmFsVG8od2NoYXJfdCBjLCBvc3RyZWFt
KiBvcykgeworICBzd2l0Y2ggKGMpIHsKKyAgICBjYXNlIEwnXCcnOgorICAgICAgKm9zIDw8ICIn
IjsKKyAgICAgIHJldHVybiBrQXNJczsKKyAgICBjYXNlIEwnIic6CisgICAgICAqb3MgPDwgIlxc
XCIiOworICAgICAgcmV0dXJuIGtTcGVjaWFsRXNjYXBlOworICAgIGRlZmF1bHQ6CisgICAgICBy
ZXR1cm4gUHJpbnRBc0NoYXJMaXRlcmFsVG88d2NoYXJfdD4oYywgb3MpOworICB9Cit9CisKKy8v
IFByaW50cyBhIGNoYXIgYyBhcyBpZiBpdCdzIHBhcnQgb2YgYSBzdHJpbmcgbGl0ZXJhbCwgZXNj
YXBpbmcgaXQgd2hlbgorLy8gbmVjZXNzYXJ5OyByZXR1cm5zIGhvdyBjIHdhcyBmb3JtYXR0ZWQu
CitzdGF0aWMgQ2hhckZvcm1hdCBQcmludEFzU3RyaW5nTGl0ZXJhbFRvKGNoYXIgYywgb3N0cmVh
bSogb3MpIHsKKyAgcmV0dXJuIFByaW50QXNTdHJpbmdMaXRlcmFsVG8oCisgICAgICBzdGF0aWNf
Y2FzdDx3Y2hhcl90PihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKSksIG9zKTsKK30KKwor
Ly8gUHJpbnRzIGEgd2lkZSBvciBuYXJyb3cgY2hhcmFjdGVyIGMgYW5kIGl0cyBjb2RlLiAgJ1ww
JyBpcyBwcmludGVkCisvLyBhcyAiJ1xcMCciLCBvdGhlciB1bnByaW50YWJsZSBjaGFyYWN0ZXJz
IGFyZSBhbHNvIHByb3Blcmx5IGVzY2FwZWQKKy8vIHVzaW5nIHRoZSBzdGFuZGFyZCBDKysgZXNj
YXBlIHNlcXVlbmNlLiAgVGhlIHRlbXBsYXRlIGFyZ3VtZW50CisvLyBVbnNpZ25lZENoYXIgaXMg
dGhlIHVuc2lnbmVkIHZlcnNpb24gb2YgQ2hhciwgd2hpY2ggaXMgdGhlIHR5cGUgb2YgYy4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBVbnNpZ25lZENoYXIsIHR5cGVuYW1lIENoYXI+Cit2b2lkIFByaW50
Q2hhckFuZENvZGVUbyhDaGFyIGMsIG9zdHJlYW0qIG9zKSB7CisgIC8vIEZpcnN0LCBwcmludCBj
IGFzIGEgbGl0ZXJhbCBpbiB0aGUgbW9zdCByZWFkYWJsZSBmb3JtIHdlIGNhbiBmaW5kLgorICAq
b3MgPDwgKChzaXplb2YoYykgPiAxKSA/ICJMJyIgOiAiJyIpOworICBjb25zdCBDaGFyRm9ybWF0
IGZvcm1hdCA9IFByaW50QXNDaGFyTGl0ZXJhbFRvPFVuc2lnbmVkQ2hhcj4oYywgb3MpOworICAq
b3MgPDwgIiciOworCisgIC8vIFRvIGFpZCB1c2VyIGRlYnVnZ2luZywgd2UgYWxzbyBwcmludCBj
J3MgY29kZSBpbiBkZWNpbWFsLCB1bmxlc3MKKyAgLy8gaXQncyAwIChpbiB3aGljaCBjYXNlIGMg
d2FzIHByaW50ZWQgYXMgJ1xcMCcsIG1ha2luZyB0aGUgY29kZQorICAvLyBvYnZpb3VzKS4KKyAg
aWYgKGMgPT0gMCkKKyAgICByZXR1cm47CisgICpvcyA8PCAiICgiIDw8IHN0YXRpY19jYXN0PGlu
dD4oYyk7CisKKyAgLy8gRm9yIG1vcmUgY29udmVuaWVuY2UsIHdlIHByaW50IGMncyBjb2RlIGFn
YWluIGluIGhleGlkZWNpbWFsLAorICAvLyB1bmxlc3MgYyB3YXMgYWxyZWFkeSBwcmludGVkIGlu
IHRoZSBmb3JtICdceCMjJyBvciB0aGUgY29kZSBpcyBpbgorICAvLyBbMSwgOV0uCisgIGlmIChm
b3JtYXQgPT0ga0hleEVzY2FwZSB8fCAoMSA8PSBjICYmIGMgPD0gOSkpIHsKKyAgICAvLyBEbyBu
b3RoaW5nLgorICB9IGVsc2UgeworICAgICpvcyA8PCAiLCAweCIgPDwgU3RyaW5nOjpGb3JtYXRI
ZXhJbnQoc3RhdGljX2Nhc3Q8VW5zaWduZWRDaGFyPihjKSk7CisgIH0KKyAgKm9zIDw8ICIpIjsK
K30KKwordm9pZCBQcmludFRvKHVuc2lnbmVkIGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7
CisgIFByaW50Q2hhckFuZENvZGVUbzx1bnNpZ25lZCBjaGFyPihjLCBvcyk7Cit9Cit2b2lkIFBy
aW50VG8oc2lnbmVkIGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hhckFu
ZENvZGVUbzx1bnNpZ25lZCBjaGFyPihjLCBvcyk7Cit9CisKKy8vIFByaW50cyBhIHdjaGFyX3Qg
YXMgYSBzeW1ib2wgaWYgaXQgaXMgcHJpbnRhYmxlIG9yIGFzIGl0cyBpbnRlcm5hbAorLy8gY29k
ZSBvdGhlcndpc2UgYW5kIGFsc28gYXMgaXRzIGNvZGUuICBMJ1wwJyBpcyBwcmludGVkIGFzICJM
J1xcMCciLgordm9pZCBQcmludFRvKHdjaGFyX3Qgd2MsIG9zdHJlYW0qIG9zKSB7CisgIFByaW50
Q2hhckFuZENvZGVUbzx3Y2hhcl90Pih3Yywgb3MpOworfQorCisvLyBQcmludHMgdGhlIGdpdmVu
IGFycmF5IG9mIGNoYXJhY3RlcnMgdG8gdGhlIG9zdHJlYW0uICBDaGFyVHlwZSBtdXN0IGJlIGVp
dGhlcgorLy8gY2hhciBvciB3Y2hhcl90LgorLy8gVGhlIGFycmF5IHN0YXJ0cyBhdCBiZWdpbiwg
dGhlIGxlbmd0aCBpcyBsZW4sIGl0IG1heSBpbmNsdWRlICdcMCcgY2hhcmFjdGVycworLy8gYW5k
IG1heSBub3QgYmUgTlVMLXRlcm1pbmF0ZWQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+
CitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfTUVNT1JZXworR1RFU1RfQVRUUklCVVRFX05P
X1NBTklUSVpFX0FERFJFU1NfCitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXwor
c3RhdGljIHZvaWQgUHJpbnRDaGFyc0FzU3RyaW5nVG8oCisgICAgY29uc3QgQ2hhclR5cGUqIGJl
Z2luLCBzaXplX3QgbGVuLCBvc3RyZWFtKiBvcykgeworICBjb25zdCBjaGFyKiBjb25zdCBrUXVv
dGVCZWdpbiA9IHNpemVvZihDaGFyVHlwZSkgPT0gMSA/ICJcIiIgOiAiTFwiIjsKKyAgKm9zIDw8
IGtRdW90ZUJlZ2luOworICBib29sIGlzX3ByZXZpb3VzX2hleCA9IGZhbHNlOworICBmb3IgKHNp
emVfdCBpbmRleCA9IDA7IGluZGV4IDwgbGVuOyArK2luZGV4KSB7CisgICAgY29uc3QgQ2hhclR5
cGUgY3VyID0gYmVnaW5baW5kZXhdOworICAgIGlmIChpc19wcmV2aW91c19oZXggJiYgSXNYRGln
aXQoY3VyKSkgeworICAgICAgLy8gUHJldmlvdXMgY2hhcmFjdGVyIGlzIG9mICdceC4uJyBmb3Jt
IGFuZCB0aGlzIGNoYXJhY3RlciBjYW4gYmUKKyAgICAgIC8vIGludGVycHJldGVkIGFzIGFub3Ro
ZXIgaGV4YWRlY2ltYWwgZGlnaXQgaW4gaXRzIG51bWJlci4gQnJlYWsgc3RyaW5nIHRvCisgICAg
ICAvLyBkaXNhbWJpZ3VhdGUuCisgICAgICAqb3MgPDwgIlwiICIgPDwga1F1b3RlQmVnaW47Cisg
ICAgfQorICAgIGlzX3ByZXZpb3VzX2hleCA9IFByaW50QXNTdHJpbmdMaXRlcmFsVG8oY3VyLCBv
cykgPT0ga0hleEVzY2FwZTsKKyAgfQorICAqb3MgPDwgIlwiIjsKK30KKworLy8gUHJpbnRzIGEg
KGNvbnN0KSBjaGFyL3djaGFyX3QgYXJyYXkgb2YgJ2xlbicgZWxlbWVudHMsIHN0YXJ0aW5nIGF0
IGFkZHJlc3MKKy8vICdiZWdpbicuICBDaGFyVHlwZSBtdXN0IGJlIGVpdGhlciBjaGFyIG9yIHdj
aGFyX3QuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CitHVEVTVF9BVFRSSUJVVEVfTk9f
U0FOSVRJWkVfTUVNT1JZXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX0FERFJFU1NfCitH
VEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXworc3RhdGljIHZvaWQgVW5pdmVyc2Fs
UHJpbnRDaGFyQXJyYXkoCisgICAgY29uc3QgQ2hhclR5cGUqIGJlZ2luLCBzaXplX3QgbGVuLCBv
c3RyZWFtKiBvcykgeworICAvLyBUaGUgY29kZQorICAvLyAgIGNvbnN0IGNoYXIga0Zvb1tdID0g
ImZvbyI7CisgIC8vIGdlbmVyYXRlcyBhbiBhcnJheSBvZiA0LCBub3QgMywgZWxlbWVudHMsIHdp
dGggdGhlIGxhc3Qgb25lIGJlaW5nICdcMCcuCisgIC8vCisgIC8vIFRoZXJlZm9yZSB3aGVuIHBy
aW50aW5nIGEgY2hhciBhcnJheSwgd2UgZG9uJ3QgcHJpbnQgdGhlIGxhc3QgZWxlbWVudCBpZgor
ICAvLyBpdCdzICdcMCcsIHN1Y2ggdGhhdCB0aGUgb3V0cHV0IG1hdGNoZXMgdGhlIHN0cmluZyBs
aXRlcmFsIGFzIGl0J3MKKyAgLy8gd3JpdHRlbiBpbiB0aGUgc291cmNlIGNvZGUuCisgIGlmIChs
ZW4gPiAwICYmIGJlZ2luW2xlbiAtIDFdID09ICdcMCcpIHsKKyAgICBQcmludENoYXJzQXNTdHJp
bmdUbyhiZWdpbiwgbGVuIC0gMSwgb3MpOworICAgIHJldHVybjsKKyAgfQorCisgIC8vIElmLCBo
b3dldmVyLCB0aGUgbGFzdCBlbGVtZW50IGluIHRoZSBhcnJheSBpcyBub3QgJ1wwJywgZS5nLgor
ICAvLyAgICBjb25zdCBjaGFyIGtGb29bXSA9IHsgJ2YnLCAnbycsICdvJyB9OworICAvLyB3ZSBt
dXN0IHByaW50IHRoZSBlbnRpcmUgYXJyYXkuICBXZSBhbHNvIHByaW50IGEgbWVzc2FnZSB0byBp
bmRpY2F0ZQorICAvLyB0aGF0IHRoZSBhcnJheSBpcyBub3QgTlVMLXRlcm1pbmF0ZWQuCisgIFBy
aW50Q2hhcnNBc1N0cmluZ1RvKGJlZ2luLCBsZW4sIG9zKTsKKyAgKm9zIDw8ICIgKG5vIHRlcm1p
bmF0aW5nIE5VTCkiOworfQorCisvLyBQcmludHMgYSAoY29uc3QpIGNoYXIgYXJyYXkgb2YgJ2xl
bicgZWxlbWVudHMsIHN0YXJ0aW5nIGF0IGFkZHJlc3MgJ2JlZ2luJy4KK3ZvaWQgVW5pdmVyc2Fs
UHJpbnRBcnJheShjb25zdCBjaGFyKiBiZWdpbiwgc2l6ZV90IGxlbiwgb3N0cmVhbSogb3MpIHsK
KyAgVW5pdmVyc2FsUHJpbnRDaGFyQXJyYXkoYmVnaW4sIGxlbiwgb3MpOworfQorCisvLyBQcmlu
dHMgYSAoY29uc3QpIHdjaGFyX3QgYXJyYXkgb2YgJ2xlbicgZWxlbWVudHMsIHN0YXJ0aW5nIGF0
IGFkZHJlc3MKKy8vICdiZWdpbicuCit2b2lkIFVuaXZlcnNhbFByaW50QXJyYXkoY29uc3Qgd2No
YXJfdCogYmVnaW4sIHNpemVfdCBsZW4sIG9zdHJlYW0qIG9zKSB7CisgIFVuaXZlcnNhbFByaW50
Q2hhckFycmF5KGJlZ2luLCBsZW4sIG9zKTsKK30KKworLy8gUHJpbnRzIHRoZSBnaXZlbiBDIHN0
cmluZyB0byB0aGUgb3N0cmVhbS4KK3ZvaWQgUHJpbnRUbyhjb25zdCBjaGFyKiBzLCBvc3RyZWFt
KiBvcykgeworICBpZiAocyA9PSBOVUxMKSB7CisgICAgKm9zIDw8ICJOVUxMIjsKKyAgfSBlbHNl
IHsKKyAgICAqb3MgPDwgSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocykgPDwgIiBwb2ludGlu
ZyB0byAiOworICAgIFByaW50Q2hhcnNBc1N0cmluZ1RvKHMsIHN0cmxlbihzKSwgb3MpOworICB9
Cit9CisKKy8vIE1TVkMgY29tcGlsZXIgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gZGVmaW5lIHdoYXJf
dCBhcyBhIHR5cGVkZWYKKy8vIG9mIHVuc2lnbmVkIHNob3J0LiBEZWZpbmluZyBhbiBvdmVybG9h
ZCBmb3IgY29uc3Qgd2NoYXJfdCogaW4gdGhhdCBjYXNlCisvLyB3b3VsZCBjYXVzZSBwb2ludGVy
cyB0byB1bnNpZ25lZCBzaG9ydHMgYmUgcHJpbnRlZCBhcyB3aWRlIHN0cmluZ3MsCisvLyBwb3Nz
aWJseSBhY2Nlc3NpbmcgbW9yZSBtZW1vcnkgdGhhbiBpbnRlbmRlZCBhbmQgY2F1c2luZyBpbnZh
bGlkCisvLyBtZW1vcnkgYWNjZXNzZXMuIE1TVkMgZGVmaW5lcyBfTkFUSVZFX1dDSEFSX1RfREVG
SU5FRCBzeW1ib2wgd2hlbgorLy8gd2NoYXJfdCBpcyBpbXBsZW1lbnRlZCBhcyBhIG5hdGl2ZSB0
eXBlLgorI2lmICFkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9E
RUZJTkVEKQorLy8gUHJpbnRzIHRoZSBnaXZlbiB3aWRlIEMgc3RyaW5nIHRvIHRoZSBvc3RyZWFt
Lgordm9pZCBQcmludFRvKGNvbnN0IHdjaGFyX3QqIHMsIG9zdHJlYW0qIG9zKSB7CisgIGlmIChz
ID09IE5VTEwpIHsKKyAgICAqb3MgPDwgIk5VTEwiOworICB9IGVsc2UgeworICAgICpvcyA8PCBJ
bXBsaWNpdENhc3RfPGNvbnN0IHZvaWQqPihzKSA8PCAiIHBvaW50aW5nIHRvICI7CisgICAgUHJp
bnRDaGFyc0FzU3RyaW5nVG8ocywgc3RkOjp3Y3NsZW4ocyksIG9zKTsKKyAgfQorfQorI2VuZGlm
ICAvLyB3Y2hhcl90IGlzIG5hdGl2ZQorCisvLyBQcmludHMgYSA6OnN0cmluZyBvYmplY3QuCisj
aWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK3ZvaWQgUHJpbnRTdHJpbmdUbyhjb25zdCA6OnN0
cmluZyYgcywgb3N0cmVhbSogb3MpIHsKKyAgUHJpbnRDaGFyc0FzU3RyaW5nVG8ocy5kYXRhKCks
IHMuc2l6ZSgpLCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisK
K3ZvaWQgUHJpbnRTdHJpbmdUbyhjb25zdCA6OnN0ZDo6c3RyaW5nJiBzLCBvc3RyZWFtKiBvcykg
eworICBQcmludENoYXJzQXNTdHJpbmdUbyhzLmRhdGEoKSwgcy5zaXplKCksIG9zKTsKK30KKwor
Ly8gUHJpbnRzIGEgOjp3c3RyaW5nIG9iamVjdC4KKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJ
TkcKK3ZvaWQgUHJpbnRXaWRlU3RyaW5nVG8oY29uc3QgOjp3c3RyaW5nJiBzLCBvc3RyZWFtKiBv
cykgeworICBQcmludENoYXJzQXNTdHJpbmdUbyhzLmRhdGEoKSwgcy5zaXplKCksIG9zKTsKK30K
KyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCisKKyNpZiBHVEVTVF9IQVNfU1RE
X1dTVFJJTkcKK3ZvaWQgUHJpbnRXaWRlU3RyaW5nVG8oY29uc3QgOjpzdGQ6OndzdHJpbmcmIHMs
IG9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hhcnNBc1N0cmluZ1RvKHMuZGF0YSgpLCBzLnNpemUo
KSwgb3MpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKKworfSAgLy8gbmFt
ZXNwYWNlIGludGVybmFsCisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXRlc3QtcGFydC5jYwppbmRleCA1ZDE4M2E0NDZmMjk0
Y2U5ZTFhODU4N2M4YjkxMjBhOWJlYzg4N2RkLi5mYjBlMzU0MjVlMWU2ZjcxNzlkMDJiOTM5NDVi
ZGVlNDMxYjI1ZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rl
c3QtdGVzdC1wYXJ0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10
ZXN0LXBhcnQuY2MKQEAgLTMxLDEzICszMSwxMyBAQAogLy8KIC8vIFRoZSBHb29nbGUgQysrIFRl
c3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXRl
c3QtcGFydC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oIgogCiAvLyBJbmRp
Y2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdz
CiAvLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwt
aW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3Iu
ICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBp
bmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgorLy8gaW5jbHVk
ZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgZXhpc3Rz
IHRvCisvLyBwcmV2ZW50IHRoZSBhY2NpZGVudGFsIGluY2x1c2lvbiBvZiBndGVzdC1pbnRlcm5h
bC1pbmwuaCBpbiB0aGUKKy8vIHVzZXIncyBjb2RlLgogI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRB
VElPTl8gMQogI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKICN1bmRlZiBHVEVT
VF9JTVBMRU1FTlRBVElPTl8KQEAgLTQ4LDEwICs0OCwxMCBAQCB1c2luZyBpbnRlcm5hbDo6R2V0
VW5pdFRlc3RJbXBsOwogCiAvLyBHZXRzIHRoZSBzdW1tYXJ5IG9mIHRoZSBmYWlsdXJlIG1lc3Nh
Z2UgYnkgb21pdHRpbmcgdGhlIHN0YWNrIHRyYWNlCiAvLyBpbiBpdC4KLWludGVybmFsOjpTdHJp
bmcgVGVzdFBhcnRSZXN1bHQ6OkV4dHJhY3RTdW1tYXJ5KGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsK
K3N0ZDo6c3RyaW5nIFRlc3RQYXJ0UmVzdWx0OjpFeHRyYWN0U3VtbWFyeShjb25zdCBjaGFyKiBt
ZXNzYWdlKSB7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IHN0YWNrX3RyYWNlID0gc3Ryc3RyKG1lc3Nh
Z2UsIGludGVybmFsOjprU3RhY2tUcmFjZU1hcmtlcik7Ci0gIHJldHVybiBzdGFja190cmFjZSA9
PSBOVUxMID8gaW50ZXJuYWw6OlN0cmluZyhtZXNzYWdlKSA6Ci0gICAgICBpbnRlcm5hbDo6U3Ry
aW5nKG1lc3NhZ2UsIHN0YWNrX3RyYWNlIC0gbWVzc2FnZSk7CisgIHJldHVybiBzdGFja190cmFj
ZSA9PSBOVUxMID8gbWVzc2FnZSA6CisgICAgICBzdGQ6OnN0cmluZyhtZXNzYWdlLCBzdGFja190
cmFjZSk7CiB9CiAKIC8vIFByaW50cyBhIFRlc3RQYXJ0UmVzdWx0IG9iamVjdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10eXBlZC10ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKaW5kZXggM2NjNGI1
ZGUyYWFjYjc1OTg5MTE5YzVmOTZjN2Y0ZjgwZWFkNWNhZS4uZGYxZWVmNDc1NGVmZWI2YmMwNjYy
MzliMWNjYzNiZmVlYjg5NjMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3Jj
L2d0ZXN0LXR5cGVkLXRlc3QuY2MKQEAgLTI5LDggKzI5LDggQEAKIC8vCiAvLyBBdXRob3I6IHdh
bkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC10eXBl
ZC10ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVz
dC10eXBlZC10ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogbmFtZXNwYWNlIHRl
c3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsKQEAgLTQwLDM4ICs0MCw0NiBAQCBuYW1lc3Bh
Y2UgaW50ZXJuYWwgewogLy8gU2tpcHMgdG8gdGhlIGZpcnN0IG5vbi1zcGFjZSBjaGFyIGluIHN0
ci4gUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgc3RyCiAvLyBjb250YWlucyBvbmx5IHdoaXRl
c3BhY2UgY2hhcmFjdGVycy4KIHN0YXRpYyBjb25zdCBjaGFyKiBTa2lwU3BhY2VzKGNvbnN0IGNo
YXIqIHN0cikgewotICB3aGlsZSAoaXNzcGFjZSgqc3RyKSkKKyAgd2hpbGUgKElzU3BhY2UoKnN0
cikpCiAgICAgc3RyKys7CiAgIHJldHVybiBzdHI7CiB9CiAKK3N0YXRpYyBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gU3BsaXRJbnRvVGVzdE5hbWVzKGNvbnN0IGNoYXIqIHNyYykgeworICBzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4gbmFtZV92ZWM7CisgIHNyYyA9IFNraXBTcGFjZXMoc3JjKTsK
KyAgZm9yICg7IHNyYyAhPSBOVUxMOyBzcmMgPSBTa2lwQ29tbWEoc3JjKSkgeworICAgIG5hbWVf
dmVjLnB1c2hfYmFjayhTdHJpcFRyYWlsaW5nU3BhY2VzKEdldFByZWZpeFVudGlsQ29tbWEoc3Jj
KSkpOworICB9CisgIHJldHVybiBuYW1lX3ZlYzsKK30KKwogLy8gVmVyaWZpZXMgdGhhdCByZWdp
c3RlcmVkX3Rlc3RzIG1hdGNoIHRoZSB0ZXN0IG5hbWVzIGluCi0vLyBkZWZpbmVkX3Rlc3RfbmFt
ZXNfOyByZXR1cm5zIHJlZ2lzdGVyZWRfdGVzdHMgaWYgc3VjY2Vzc2Z1bCwgb3IKKy8vIHJlZ2lz
dGVyZWRfdGVzdHNfOyByZXR1cm5zIHJlZ2lzdGVyZWRfdGVzdHMgaWYgc3VjY2Vzc2Z1bCwgb3IK
IC8vIGFib3J0cyB0aGUgcHJvZ3JhbSBvdGhlcndpc2UuCiBjb25zdCBjaGFyKiBUeXBlZFRlc3RD
YXNlUFN0YXRlOjpWZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVzKAogICAgIGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiByZWdpc3RlcmVkX3Rlc3RzKSB7Ci0gIHR5cGVkZWYg
OjpzdGQ6OnNldDxjb25zdCBjaGFyKj46OmNvbnN0X2l0ZXJhdG9yIERlZmluZWRUZXN0SXRlcjsK
KyAgdHlwZWRlZiBSZWdpc3RlcmVkVGVzdHNNYXA6OmNvbnN0X2l0ZXJhdG9yIFJlZ2lzdGVyZWRU
ZXN0SXRlcjsKICAgcmVnaXN0ZXJlZF8gPSB0cnVlOwogCi0gIC8vIFNraXAgaW5pdGlhbCB3aGl0
ZXNwYWNlIGluIHJlZ2lzdGVyZWRfdGVzdHMgc2luY2Ugc29tZQotICAvLyBwcmVwcm9jZXNzb3Jz
IHByZWZpeCBzdHJpbmdpemllZCBsaXRlcmFscyB3aXRoIHdoaXRlc3BhY2UuCi0gIHJlZ2lzdGVy
ZWRfdGVzdHMgPSBTa2lwU3BhY2VzKHJlZ2lzdGVyZWRfdGVzdHMpOworICBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gbmFtZV92ZWMgPSBTcGxpdEludG9UZXN0TmFtZXMocmVnaXN0ZXJlZF90ZXN0
cyk7CiAKICAgTWVzc2FnZSBlcnJvcnM7Ci0gIDo6c3RkOjpzZXQ8U3RyaW5nPiB0ZXN0czsKLSAg
Zm9yIChjb25zdCBjaGFyKiBuYW1lcyA9IHJlZ2lzdGVyZWRfdGVzdHM7IG5hbWVzICE9IE5VTEw7
Ci0gICAgICAgbmFtZXMgPSBTa2lwQ29tbWEobmFtZXMpKSB7Ci0gICAgY29uc3QgU3RyaW5nIG5h
bWUgPSBHZXRQcmVmaXhVbnRpbENvbW1hKG5hbWVzKTsKKworICBzdGQ6OnNldDxzdGQ6OnN0cmlu
Zz4gdGVzdHM7CisgIGZvciAoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+Ojpjb25zdF9pdGVyYXRv
ciBuYW1lX2l0ID0gbmFtZV92ZWMuYmVnaW4oKTsKKyAgICAgICBuYW1lX2l0ICE9IG5hbWVfdmVj
LmVuZCgpOyArK25hbWVfaXQpIHsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSA9ICpuYW1l
X2l0OwogICAgIGlmICh0ZXN0cy5jb3VudChuYW1lKSAhPSAwKSB7CiAgICAgICBlcnJvcnMgPDwg
IlRlc3QgIiA8PCBuYW1lIDw8ICIgaXMgbGlzdGVkIG1vcmUgdGhhbiBvbmNlLlxuIjsKICAgICAg
IGNvbnRpbnVlOwogICAgIH0KIAogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICBmb3IgKERl
ZmluZWRUZXN0SXRlciBpdCA9IGRlZmluZWRfdGVzdF9uYW1lc18uYmVnaW4oKTsKLSAgICAgICAg
IGl0ICE9IGRlZmluZWRfdGVzdF9uYW1lc18uZW5kKCk7CisgICAgZm9yIChSZWdpc3RlcmVkVGVz
dEl0ZXIgaXQgPSByZWdpc3RlcmVkX3Rlc3RzXy5iZWdpbigpOworICAgICAgICAgaXQgIT0gcmVn
aXN0ZXJlZF90ZXN0c18uZW5kKCk7CiAgICAgICAgICArK2l0KSB7Ci0gICAgICBpZiAobmFtZSA9
PSAqaXQpIHsKKyAgICAgIGlmIChuYW1lID09IGl0LT5maXJzdCkgewogICAgICAgICBmb3VuZCA9
IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQpAQCAtODUsMTUgKzkzLDE1IEBAIGNvbnN0
IGNoYXIqIFR5cGVkVGVzdENhc2VQU3RhdGU6OlZlcmlmeVJlZ2lzdGVyZWRUZXN0TmFtZXMoCiAg
ICAgfQogICB9CiAKLSAgZm9yIChEZWZpbmVkVGVzdEl0ZXIgaXQgPSBkZWZpbmVkX3Rlc3RfbmFt
ZXNfLmJlZ2luKCk7Ci0gICAgICAgaXQgIT0gZGVmaW5lZF90ZXN0X25hbWVzXy5lbmQoKTsKKyAg
Zm9yIChSZWdpc3RlcmVkVGVzdEl0ZXIgaXQgPSByZWdpc3RlcmVkX3Rlc3RzXy5iZWdpbigpOwor
ICAgICAgIGl0ICE9IHJlZ2lzdGVyZWRfdGVzdHNfLmVuZCgpOwogICAgICAgICsraXQpIHsKLSAg
ICBpZiAodGVzdHMuY291bnQoKml0KSA9PSAwKSB7Ci0gICAgICBlcnJvcnMgPDwgIllvdSBmb3Jn
b3QgdG8gbGlzdCB0ZXN0ICIgPDwgKml0IDw8ICIuXG4iOworICAgIGlmICh0ZXN0cy5jb3VudChp
dC0+Zmlyc3QpID09IDApIHsKKyAgICAgIGVycm9ycyA8PCAiWW91IGZvcmdvdCB0byBsaXN0IHRl
c3QgIiA8PCBpdC0+Zmlyc3QgPDwgIi5cbiI7CiAgICAgfQogICB9CiAKLSAgY29uc3QgU3RyaW5n
JiBlcnJvcnNfc3RyID0gZXJyb3JzLkdldFN0cmluZygpOworICBjb25zdCBzdGQ6OnN0cmluZyYg
ZXJyb3JzX3N0ciA9IGVycm9ycy5HZXRTdHJpbmcoKTsKICAgaWYgKGVycm9yc19zdHIgIT0gIiIp
IHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzICVzIiwgRm9ybWF0RmlsZUxvY2F0aW9uKGZpbGUs
IGxpbmUpLmNfc3RyKCksCiAgICAgICAgICAgICBlcnJvcnNfc3RyLmNfc3RyKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LmNjCmluZGV4IDViODcxYzBhZGIwYTFjNGNmYTIzNzU1NDA1
N2Q1MTYwODQ2MTk1MGUuLmQ4ODJhYjJlMzZhMTI5OTUyODAxM2ZlNTg1NDM4YmFmNmZlNzcyYWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QuY2MKQEAgLTMxLDE5ICszMSwyNSBAQAog
Ly8KIC8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIAot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+Cisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9jdXN0b20v
Z3Rlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKIAogI2luY2x1ZGUgPGN0eXBl
Lmg+CiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0
ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1ZGUg
PHdjaGFyLmg+CiAjaW5jbHVkZSA8d2N0eXBlLmg+CiAKICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0j
aW5jbHVkZSA8b3N0cmVhbT4KKyNpbmNsdWRlIDxpb21hbmlwPgorI2luY2x1ZGUgPGxpbWl0cz4K
KyNpbmNsdWRlIDxsaXN0PgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxvc3RyZWFtPiAgLy8g
Tk9MSU5UCiAjaW5jbHVkZSA8c3N0cmVhbT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKQEAgLTUxLDcy
ICs1Nyw4MCBAQAogCiAvLyBUT0RPKGtlbnRvbkBnb29nbGUuY29tKTogVXNlIGF1dG9jb25mIHRv
IGRldGVjdCBhdmFpbGFiaWxpdHkgb2YKIC8vIGdldHRpbWVvZmRheSgpLgotI2RlZmluZSBHVEVT
VF9IQVNfR0VUVElNRU9GREFZXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfR0VUVElNRU9GREFZXyAx
CiAKLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHNj
aGVkLmg+CisjIGluY2x1ZGUgPGZjbnRsLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8bGltaXRz
Lmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c2NoZWQuaD4gIC8vIE5PTElOVAogLy8gRGVjbGFy
ZXMgdnNucHJpbnRmKCkuICBUaGlzIGhlYWRlciBpcyBub3QgYXZhaWxhYmxlIG9uIFdpbmRvd3Mu
Ci0jaW5jbHVkZSA8c3RyaW5ncy5oPgotI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0jaW5jbHVkZSA8
c3lzL3RpbWUuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5j
bHVkZSA8dmVjdG9yPgorIyBpbmNsdWRlIDxzdHJpbmdzLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVk
ZSA8c3lzL21tYW4uaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxzeXMvdGltZS5oPiAgLy8gTk9M
SU5UCisjIGluY2x1ZGUgPHVuaXN0ZC5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN0cmluZz4K
IAogI2VsaWYgR1RFU1RfT1NfU1lNQklBTgotI2RlZmluZSBHVEVTVF9IQVNfR0VUVElNRU9GREFZ
XyAxCi0jaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAorIyBkZWZpbmUgR1RFU1RfSEFT
X0dFVFRJTUVPRkRBWV8gMQorIyBpbmNsdWRlIDxzeXMvdGltZS5oPiAgLy8gTk9MSU5UCiAKICNl
bGlmIEdURVNUX09TX1pPUwotI2RlZmluZSBHVEVTVF9IQVNfR0VUVElNRU9GREFZXyAxCi0jaW5j
bHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAorIyBkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVP
RkRBWV8gMQorIyBpbmNsdWRlIDxzeXMvdGltZS5oPiAgLy8gTk9MSU5UCiAKIC8vIE9uIHovT1Mg
d2UgYWRkaXRpb25hbGx5IG5lZWQgc3RyaW5ncy5oIGZvciBzdHJjYXNlY21wLgotI2luY2x1ZGUg
PHN0cmluZ3MuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxzdHJpbmdzLmg+ICAvLyBOT0xJTlQK
IAogI2VsaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgIC8vIFdlIGFyZSBvbiBXaW5kb3dzIENF
LgogCi0jaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHdpbmRvd3Mu
aD4gIC8vIE5PTElOVAorIyB1bmRlZiBtaW4KIAogI2VsaWYgR1RFU1RfT1NfV0lORE9XUyAgLy8g
V2UgYXJlIG9uIFdpbmRvd3MgcHJvcGVyLgogCi0jaW5jbHVkZSA8aW8uaD4gIC8vIE5PTElOVAot
I2luY2x1ZGUgPHN5cy90aW1lYi5oPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+
ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUg
PGlvLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3lzL3RpbWViLmg+ICAvLyBOT0xJTlQKKyMg
aW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3lzL3N0YXQuaD4g
IC8vIE5PTElOVAogCi0jaWYgR1RFU1RfT1NfV0lORE9XU19NSU5HVworIyBpZiBHVEVTVF9PU19X
SU5ET1dTX01JTkdXCiAvLyBNaW5HVyBoYXMgZ2V0dGltZW9mZGF5KCkgYnV0IG5vdCBfZnRpbWU2
NCgpLgogLy8gVE9ETyhrZW50b25AZ29vZ2xlLmNvbSk6IFVzZSBhdXRvY29uZiB0byBkZXRlY3Qg
YXZhaWxhYmlsaXR5IG9mCiAvLyAgIGdldHRpbWVvZmRheSgpLgogLy8gVE9ETyhrZW50b25AZ29v
Z2xlLmNvbSk6IFRoZXJlIGFyZSBvdGhlciB3YXlzIHRvIGdldCB0aGUgdGltZSBvbgogLy8gICBX
aW5kb3dzLCBsaWtlIEdldFRpY2tDb3VudCgpIG9yIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCku
ICBNaW5HVwogLy8gICBzdXBwb3J0cyB0aGVzZS4gIGNvbnNpZGVyIHVzaW5nIHRoZW0gaW5zdGVh
ZC4KLSNkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQotI2luY2x1ZGUgPHN5cy90aW1l
Lmg+ICAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NSU5HVworIyAgZGVm
aW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKKyMgIGluY2x1ZGUgPHN5cy90aW1lLmg+ICAv
LyBOT0xJTlQKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTUlOR1cKIAogLy8gY3BwbGlu
dCB0aGlua3MgdGhhdCB0aGUgaGVhZGVyIGlzIGFscmVhZHkgaW5jbHVkZWQsIHNvIHdlIHdhbnQg
dG8KIC8vIHNpbGVuY2UgaXQuCi0jaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gTk9MSU5UCisjIGlu
Y2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAorIyB1bmRlZiBtaW4KIAogI2Vsc2UKIAogLy8g
QXNzdW1lIG90aGVyIHBsYXRmb3JtcyBoYXZlIGdldHRpbWVvZmRheSgpLgogLy8gVE9ETyhrZW50
b25AZ29vZ2xlLmNvbSk6IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZhaWxhYmlsaXR5IG9mCiAv
LyAgIGdldHRpbWVvZmRheSgpLgotI2RlZmluZSBHVEVTVF9IQVNfR0VUVElNRU9GREFZXyAxCisj
IGRlZmluZSBHVEVTVF9IQVNfR0VUVElNRU9GREFZXyAxCiAKIC8vIGNwcGxpbnQgdGhpbmtzIHRo
YXQgdGhlIGhlYWRlciBpcyBhbHJlYWR5IGluY2x1ZGVkLCBzbyB3ZSB3YW50IHRvCiAvLyBzaWxl
bmNlIGl0LgotI2luY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDx1bmlz
dGQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxzeXMvdGltZS5oPiAgLy8gTk9MSU5UCisjIGlu
Y2x1ZGUgPHVuaXN0ZC5oPiAgLy8gTk9MSU5UCiAKICNlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgK
IAogI2lmIEdURVNUX0hBU19FWENFUFRJT05TCi0jaW5jbHVkZSA8c3RkZXhjZXB0PgorIyBpbmNs
dWRlIDxzdGRleGNlcHQ+CisjZW5kaWYKKworI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18K
KyMgaW5jbHVkZSA8YXJwYS9pbmV0Lmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8bmV0ZGIuaD4g
IC8vIE5PTElOVAorIyBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVk
ZSA8c3lzL3R5cGVzLmg+ICAvLyBOT0xJTlQKICNlbmRpZgogCiAvLyBJbmRpY2F0ZXMgdGhhdCB0
aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCkBAIC0xMjksNyAr
MTQzLDcgQEAKICN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KIAogI2lmIEdURVNUX09TX1dJ
TkRPV1MKLSNkZWZpbmUgdnNucHJpbnRmIF92c25wcmludGYKKyMgZGVmaW5lIHZzbnByaW50ZiBf
dnNucHJpbnRmCiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAogbmFtZXNwYWNlIHRlc3Rp
bmcgewpAQCAtMTc1LDYgKzE4OSwxNiBAQCBib29sIGdfaGVscF9mbGFnID0gZmFsc2U7CiAKIH0g
IC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogCitzdGF0aWMgY29uc3QgY2hhciogR2V0RGVmYXVsdEZp
bHRlcigpIHsKKyNpZmRlZiBHVEVTVF9URVNUX0ZJTFRFUl9FTlZfVkFSXworICBjb25zdCBjaGFy
KiBjb25zdCB0ZXN0YnJpZGdlX3Rlc3Rfb25seSA9IGdldGVudihHVEVTVF9URVNUX0ZJTFRFUl9F
TlZfVkFSXyk7CisgIGlmICh0ZXN0YnJpZGdlX3Rlc3Rfb25seSAhPSBOVUxMKSB7CisgICAgcmV0
dXJuIHRlc3RicmlkZ2VfdGVzdF9vbmx5OworICB9CisjZW5kaWYgIC8vIEdURVNUX1RFU1RfRklM
VEVSX0VOVl9WQVJfCisgIHJldHVybiBrVW5pdmVyc2FsRmlsdGVyOworfQorCiBHVEVTVF9ERUZJ
TkVfYm9vbF8oCiAgICAgYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMsCiAgICAgaW50ZXJuYWw6OkJv
b2xGcm9tR1Rlc3RFbnYoImFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIiwgZmFsc2UpLApAQCAtMTg3
LDcgKzIxMSw3IEBAIEdURVNUX0RFRklORV9ib29sXygKIAogR1RFU1RfREVGSU5FX2Jvb2xfKAog
ICAgIGNhdGNoX2V4Y2VwdGlvbnMsCi0gICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RFbnYoImNh
dGNoX2V4Y2VwdGlvbnMiLCBmYWxzZSksCisgICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RFbnYo
ImNhdGNoX2V4Y2VwdGlvbnMiLCB0cnVlKSwKICAgICAiVHJ1ZSBpZmYgIiBHVEVTVF9OQU1FXwog
ICAgICIgc2hvdWxkIGNhdGNoIGV4Y2VwdGlvbnMgYW5kIHRyZWF0IHRoZW0gYXMgdGVzdCBmYWls
dXJlcy4iKTsKIApAQCAtMTk3LDExICsyMjEsMTEgQEAgR1RFU1RfREVGSU5FX3N0cmluZ18oCiAg
ICAgIldoZXRoZXIgdG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0LiAgVmFsaWQgdmFsdWVzOiB5
ZXMsIG5vLCAiCiAgICAgImFuZCBhdXRvLiAgJ2F1dG8nIG1lYW5zIHRvIHVzZSBjb2xvcnMgaWYg
dGhlIG91dHB1dCBpcyAiCiAgICAgImJlaW5nIHNlbnQgdG8gYSB0ZXJtaW5hbCBhbmQgdGhlIFRF
Uk0gZW52aXJvbm1lbnQgdmFyaWFibGUgIgotICAgICJpcyBzZXQgdG8geHRlcm0sIHh0ZXJtLWNv
bG9yLCB4dGVybS0yNTZjb2xvciwgbGludXggb3IgY3lnd2luLiIpOworICAgICJpcyBzZXQgdG8g
YSB0ZXJtaW5hbCB0eXBlIHRoYXQgc3VwcG9ydHMgY29sb3JzLiIpOwogCiBHVEVTVF9ERUZJTkVf
c3RyaW5nXygKICAgICBmaWx0ZXIsCi0gICAgaW50ZXJuYWw6OlN0cmluZ0Zyb21HVGVzdEVudigi
ZmlsdGVyIiwga1VuaXZlcnNhbEZpbHRlciksCisgICAgaW50ZXJuYWw6OlN0cmluZ0Zyb21HVGVz
dEVudigiZmlsdGVyIiwgR2V0RGVmYXVsdEZpbHRlcigpKSwKICAgICAiQSBjb2xvbi1zZXBhcmF0
ZWQgbGlzdCBvZiBnbG9iIChub3QgcmVnZXgpIHBhdHRlcm5zICIKICAgICAiZm9yIGZpbHRlcmlu
ZyB0aGUgdGVzdHMgdG8gcnVuLCBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgIgogICAgICInLScg
YW5kIGEgOiBzZXBhcmF0ZWQgbGlzdCBvZiBuZWdhdGl2ZSBwYXR0ZXJucyAodGVzdHMgdG8gIgpA
QCAtMjU4LDYgKzI4MiwxMyBAQCBHVEVTVF9ERUZJTkVfaW50MzJfKAogICAgICJUaGUgbWF4aW11
bSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIHRvIHByaW50IHdoZW4gYW4gIgogICAgICJhc3NlcnRp
b24gZmFpbHMuICBUaGUgdmFsaWQgcmFuZ2UgaXMgMCB0aHJvdWdoIDEwMCwgaW5jbHVzaXZlLiIp
OwogCitHVEVTVF9ERUZJTkVfc3RyaW5nXygKKyAgICBzdHJlYW1fcmVzdWx0X3RvLAorICAgIGlu
dGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYoInN0cmVhbV9yZXN1bHRfdG8iLCAiIiksCisgICAg
IlRoaXMgZmxhZyBzcGVjaWZpZXMgdGhlIGhvc3QgbmFtZSBhbmQgdGhlIHBvcnQgbnVtYmVyIG9u
IHdoaWNoIHRvIHN0cmVhbSAiCisgICAgInRlc3QgcmVzdWx0cy4gRXhhbXBsZTogXCJsb2NhbGhv
c3Q6NTU1XCIuIFRoZSBmbGFnIGlzIGVmZmVjdGl2ZSBvbmx5IG9uICIKKyAgICAiTGludXguIik7
CisKIEdURVNUX0RFRklORV9ib29sXygKICAgICB0aHJvd19vbl9mYWlsdXJlLAogICAgIGludGVy
bmFsOjpCb29sRnJvbUdUZXN0RW52KCJ0aHJvd19vbl9mYWlsdXJlIiwgZmFsc2UpLApAQCAtMjY1
LDYgKzI5NiwxMyBAQCBHVEVTVF9ERUZJTkVfYm9vbF8oCiAgICAgImlmIGV4Y2VwdGlvbnMgYXJl
IGVuYWJsZWQgb3IgZXhpdCB0aGUgcHJvZ3JhbSB3aXRoIGEgbm9uLXplcm8gY29kZSAiCiAgICAg
Im90aGVyd2lzZS4iKTsKIAorI2lmIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KK0dURVNU
X0RFRklORV9zdHJpbmdfKAorICAgIGZsYWdmaWxlLAorICAgIGludGVybmFsOjpTdHJpbmdGcm9t
R1Rlc3RFbnYoImZsYWdmaWxlIiwgIiIpLAorICAgICJUaGlzIGZsYWcgc3BlY2lmaWVzIHRoZSBm
bGFnZmlsZSB0byByZWFkIGNvbW1hbmQtbGluZSBmbGFncyBmcm9tLiIpOworI2VuZGlmICAvLyBH
VEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCisKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIC8v
IEdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgZnJvbSBbMCwgcmFuZ2UpLCB1c2luZyBhIExpbmVh
cgpAQCAtMjg5LDEzICszMjcsNyBAQCBVSW50MzIgUmFuZG9tOjpHZW5lcmF0ZShVSW50MzIgcmFu
Z2UpIHsKIC8vIEdUZXN0SXNJbml0aWFsaXplZCgpIHJldHVybnMgdHJ1ZSBpZmYgdGhlIHVzZXIg
aGFzIGluaXRpYWxpemVkCiAvLyBHb29nbGUgVGVzdC4gIFVzZWZ1bCBmb3IgY2F0Y2hpbmcgdGhl
IHVzZXIgbWlzdGFrZSBvZiBub3QgaW5pdGlhbGl6aW5nCiAvLyBHb29nbGUgVGVzdCBiZWZvcmUg
Y2FsbGluZyBSVU5fQUxMX1RFU1RTKCkuCi0vLwotLy8gQSB1c2VyIG11c3QgY2FsbCB0ZXN0aW5n
OjpJbml0R29vZ2xlVGVzdCgpIHRvIGluaXRpYWxpemUgR29vZ2xlCi0vLyBUZXN0LiAgZ19pbml0
X2d0ZXN0X2NvdW50IGlzIHNldCB0byB0aGUgbnVtYmVyIG9mIHRpbWVzCi0vLyBJbml0R29vZ2xl
VGVzdCgpIGhhcyBiZWVuIGNhbGxlZC4gIFdlIGRvbid0IHByb3RlY3QgdGhpcyB2YXJpYWJsZQot
Ly8gdW5kZXIgYSBtdXRleCBhcyBpdCBpcyBvbmx5IGFjY2Vzc2VkIGluIHRoZSBtYWluIHRocmVh
ZC4KLWludCBnX2luaXRfZ3Rlc3RfY291bnQgPSAwOwotc3RhdGljIGJvb2wgR1Rlc3RJc0luaXRp
YWxpemVkKCkgeyByZXR1cm4gZ19pbml0X2d0ZXN0X2NvdW50ICE9IDA7IH0KK3N0YXRpYyBib29s
IEdUZXN0SXNJbml0aWFsaXplZCgpIHsgcmV0dXJuIEdldEFyZ3ZzKCkuc2l6ZSgpID4gMDsgfQog
CiAvLyBJdGVyYXRlcyBvdmVyIGEgdmVjdG9yIG9mIFRlc3RDYXNlcywga2VlcGluZyBhIHJ1bm5p
bmcgc3VtIG9mIHRoZQogLy8gcmVzdWx0cyBvZiBjYWxsaW5nIGEgZ2l2ZW4gaW50LXJldHVybmlu
ZyBtZXRob2Qgb24gZWFjaC4KQEAgLTM0OSwxMCArMzgxLDE4IEBAIHZvaWQgQXNzZXJ0SGVscGVy
OjpvcGVyYXRvcj0oY29uc3QgTWVzc2FnZSYgbWVzc2FnZSkgY29uc3QgewogfQogCiAvLyBNdXRl
eCBmb3IgbGlua2VkIHBvaW50ZXJzLgotR1RFU1RfREVGSU5FX1NUQVRJQ19NVVRFWF8oZ19saW5r
ZWRfcHRyX211dGV4KTsKK0dURVNUX0FQSV8gR1RFU1RfREVGSU5FX1NUQVRJQ19NVVRFWF8oZ19s
aW5rZWRfcHRyX211dGV4KTsKIAotLy8gQXBwbGljYXRpb24gcGF0aG5hbWUgZ290dGVuIGluIElu
aXRHb29nbGVUZXN0LgotU3RyaW5nIGdfZXhlY3V0YWJsZV9wYXRoOworLy8gQSBjb3B5IG9mIGFs
bCBjb21tYW5kIGxpbmUgYXJndW1lbnRzLiAgU2V0IGJ5IEluaXRHb29nbGVUZXN0KCkuCis6OnN0
ZDo6dmVjdG9yPHRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmc+IGdfYXJndnM7CisKK2NvbnN0IDo6
c3RkOjp2ZWN0b3I8dGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZz4mIEdldEFyZ3ZzKCkgeworI2lm
IGRlZmluZWQoR1RFU1RfQ1VTVE9NX0dFVF9BUkdWU18pCisgIHJldHVybiBHVEVTVF9DVVNUT01f
R0VUX0FSR1ZTXygpOworI2Vsc2UgIC8vIGRlZmluZWQoR1RFU1RfQ1VTVE9NX0dFVF9BUkdWU18p
CisgIHJldHVybiBnX2FyZ3ZzOworI2VuZGlmICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9HRVRf
QVJHVlNfKQorfQogCiAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uJ3MgbmFtZSwg
cmVtb3ZpbmcgZGlyZWN0b3J5IHBhdGggaWYgdGhhdAogLy8gaXMgcHJlc2VudC4KQEAgLTM2MCw5
ICs0MDAsOSBAQCBGaWxlUGF0aCBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKSB7CiAgIEZpbGVQ
YXRoIHJlc3VsdDsKIAogI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgcmVzdWx0LlNldChGaWxlUGF0
aChnX2V4ZWN1dGFibGVfcGF0aCkuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKSk7CisgIHJlc3VsdC5T
ZXQoRmlsZVBhdGgoR2V0QXJndnMoKVswXSkuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKSk7CiAjZWxz
ZQotICByZXN1bHQuU2V0KEZpbGVQYXRoKGdfZXhlY3V0YWJsZV9wYXRoKSk7CisgIHJlc3VsdC5T
ZXQoRmlsZVBhdGgoR2V0QXJndnMoKVswXSkpOwogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dT
CiAKICAgcmV0dXJuIHJlc3VsdC5SZW1vdmVEaXJlY3RvcnlOYW1lKCk7CkBAIC0zNzEsMjkgKzQx
MSwyOSBAQCBGaWxlUGF0aCBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKSB7CiAvLyBGdW5jdGlv
bnMgZm9yIHByb2Nlc3NpbmcgdGhlIGd0ZXN0X291dHB1dCBmbGFnLgogCiAvLyBSZXR1cm5zIHRo
ZSBvdXRwdXQgZm9ybWF0LCBvciAiIiBmb3Igbm9ybWFsIHByaW50ZWQgb3V0cHV0LgotU3RyaW5n
IFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCkgeworc3RkOjpzdHJpbmcgVW5pdFRl
c3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQoKSB7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGd0ZXN0
X291dHB1dF9mbGFnID0gR1RFU1RfRkxBRyhvdXRwdXQpLmNfc3RyKCk7Ci0gIGlmIChndGVzdF9v
dXRwdXRfZmxhZyA9PSBOVUxMKSByZXR1cm4gU3RyaW5nKCIiKTsKKyAgaWYgKGd0ZXN0X291dHB1
dF9mbGFnID09IE5VTEwpIHJldHVybiBzdGQ6OnN0cmluZygiIik7CiAKICAgY29uc3QgY2hhciog
Y29uc3QgY29sb24gPSBzdHJjaHIoZ3Rlc3Rfb3V0cHV0X2ZsYWcsICc6Jyk7CiAgIHJldHVybiAo
Y29sb24gPT0gTlVMTCkgPwotICAgICAgU3RyaW5nKGd0ZXN0X291dHB1dF9mbGFnKSA6Ci0gICAg
ICBTdHJpbmcoZ3Rlc3Rfb3V0cHV0X2ZsYWcsIGNvbG9uIC0gZ3Rlc3Rfb3V0cHV0X2ZsYWcpOwor
ICAgICAgc3RkOjpzdHJpbmcoZ3Rlc3Rfb3V0cHV0X2ZsYWcpIDoKKyAgICAgIHN0ZDo6c3RyaW5n
KGd0ZXN0X291dHB1dF9mbGFnLCBjb2xvbiAtIGd0ZXN0X291dHB1dF9mbGFnKTsKIH0KIAogLy8g
UmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgcmVxdWVzdGVkIG91dHB1dCBmaWxlLCBvciB0aGUgZGVm
YXVsdCBpZiBub25lCiAvLyB3YXMgZXhwbGljaXRseSBzcGVjaWZpZWQuCi1TdHJpbmcgVW5pdFRl
c3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSB7CitzdGQ6OnN0cmluZyBV
bml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpIHsKICAgY29uc3Qg
Y2hhciogY29uc3QgZ3Rlc3Rfb3V0cHV0X2ZsYWcgPSBHVEVTVF9GTEFHKG91dHB1dCkuY19zdHIo
KTsKICAgaWYgKGd0ZXN0X291dHB1dF9mbGFnID09IE5VTEwpCi0gICAgcmV0dXJuIFN0cmluZygi
Iik7CisgICAgcmV0dXJuICIiOwogCiAgIGNvbnN0IGNoYXIqIGNvbnN0IGNvbG9uID0gc3RyY2hy
KGd0ZXN0X291dHB1dF9mbGFnLCAnOicpOwogICBpZiAoY29sb24gPT0gTlVMTCkKLSAgICByZXR1
cm4gU3RyaW5nKGludGVybmFsOjpGaWxlUGF0aDo6Q29uY2F0UGF0aHMoCi0gICAgICAgICAgICAg
ICBpbnRlcm5hbDo6RmlsZVBhdGgoCi0gICAgICAgICAgICAgICAgICAgVW5pdFRlc3Q6OkdldElu
c3RhbmNlKCktPm9yaWdpbmFsX3dvcmtpbmdfZGlyKCkpLAotICAgICAgICAgICAgICAgaW50ZXJu
YWw6OkZpbGVQYXRoKGtEZWZhdWx0T3V0cHV0RmlsZSkpLlRvU3RyaW5nKCkgKTsKKyAgICByZXR1
cm4gaW50ZXJuYWw6OkZpbGVQYXRoOjpDb25jYXRQYXRocygKKyAgICAgICAgaW50ZXJuYWw6OkZp
bGVQYXRoKAorICAgICAgICAgICAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPm9yaWdpbmFsX3dv
cmtpbmdfZGlyKCkpLAorICAgICAgICBpbnRlcm5hbDo6RmlsZVBhdGgoa0RlZmF1bHRPdXRwdXRG
aWxlKSkuc3RyaW5nKCk7CiAKICAgaW50ZXJuYWw6OkZpbGVQYXRoIG91dHB1dF9uYW1lKGNvbG9u
ICsgMSk7CiAgIGlmICghb3V0cHV0X25hbWUuSXNBYnNvbHV0ZVBhdGgoKSkKQEAgLTQwNiwxMiAr
NDQ2LDEyIEBAIFN0cmluZyBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0
RmlsZSgpIHsKICAgICAgICAgaW50ZXJuYWw6OkZpbGVQYXRoKGNvbG9uICsgMSkpOwogCiAgIGlm
ICghb3V0cHV0X25hbWUuSXNEaXJlY3RvcnkoKSkKLSAgICByZXR1cm4gb3V0cHV0X25hbWUuVG9T
dHJpbmcoKTsKKyAgICByZXR1cm4gb3V0cHV0X25hbWUuc3RyaW5nKCk7CiAKICAgaW50ZXJuYWw6
OkZpbGVQYXRoIHJlc3VsdChpbnRlcm5hbDo6RmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5h
bWUoCiAgICAgICBvdXRwdXRfbmFtZSwgaW50ZXJuYWw6OkdldEN1cnJlbnRFeGVjdXRhYmxlTmFt
ZSgpLAogICAgICAgR2V0T3V0cHV0Rm9ybWF0KCkuY19zdHIoKSkpOwotICByZXR1cm4gcmVzdWx0
LlRvU3RyaW5nKCk7CisgIHJldHVybiByZXN1bHQuc3RyaW5nKCk7CiB9CiAKIC8vIFJldHVybnMg
dHJ1ZSBpZmYgdGhlIHdpbGRjYXJkIHBhdHRlcm4gbWF0Y2hlcyB0aGUgc3RyaW5nLiAgVGhlCkBA
IC00MzYsNyArNDc2LDggQEAgYm9vbCBVbml0VGVzdE9wdGlvbnM6OlBhdHRlcm5NYXRjaGVzU3Ry
aW5nKGNvbnN0IGNoYXIgKnBhdHRlcm4sCiAgIH0KIH0KIAotYm9vbCBVbml0VGVzdE9wdGlvbnM6
Ok1hdGNoZXNGaWx0ZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBjaGFyKiBmaWx0ZXIpIHsK
K2Jvb2wgVW5pdFRlc3RPcHRpb25zOjpNYXRjaGVzRmlsdGVyKAorICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBuYW1lLCBjb25zdCBjaGFyKiBmaWx0ZXIpIHsKICAgY29uc3QgY2hhciAqY3VyX3BhdHRl
cm4gPSBmaWx0ZXI7CiAgIGZvciAoOzspIHsKICAgICBpZiAoUGF0dGVybk1hdGNoZXNTdHJpbmco
Y3VyX3BhdHRlcm4sIG5hbWUuY19zdHIoKSkpIHsKQEAgLTQ1NiwyOCArNDk3LDI0IEBAIGJvb2wg
VW5pdFRlc3RPcHRpb25zOjpNYXRjaGVzRmlsdGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
Y2hhciogZmlsdGVyKSB7CiAgIH0KIH0KIAotLy8gVE9ETyhrZWl0aHJheSk6IG1vdmUgU3RyaW5n
IGZ1bmN0aW9uIGltcGxlbWVudGF0aW9ucyB0byBndGVzdC1zdHJpbmcuY2MuCi0KIC8vIFJldHVy
bnMgdHJ1ZSBpZmYgdGhlIHVzZXItc3BlY2lmaWVkIGZpbHRlciBtYXRjaGVzIHRoZSB0ZXN0IGNh
c2UKIC8vIG5hbWUgYW5kIHRoZSB0ZXN0IG5hbWUuCi1ib29sIFVuaXRUZXN0T3B0aW9uczo6Rmls
dGVyTWF0Y2hlc1Rlc3QoY29uc3QgU3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcgJnRlc3RfbmFtZSkgewot
ICBjb25zdCBTdHJpbmcmIGZ1bGxfbmFtZSA9IFN0cmluZzo6Rm9ybWF0KCIlcy4lcyIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jYXNlX25hbWUuY19z
dHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X25h
bWUuY19zdHIoKSk7Citib29sIFVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0Y2hlc1Rlc3QoY29u
c3Qgc3RkOjpzdHJpbmcgJnRlc3RfY2FzZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0X25hbWUpIHsKKyAgY29uc3Qg
c3RkOjpzdHJpbmcmIGZ1bGxfbmFtZSA9IHRlc3RfY2FzZV9uYW1lICsgIi4iICsgdGVzdF9uYW1l
LmNfc3RyKCk7CiAKICAgLy8gU3BsaXQgLS1ndGVzdF9maWx0ZXIgYXQgJy0nLCBpZiB0aGVyZSBp
cyBvbmUsIHRvIHNlcGFyYXRlIGludG8KICAgLy8gcG9zaXRpdmUgZmlsdGVyIGFuZCBuZWdhdGl2
ZSBmaWx0ZXIgcG9ydGlvbnMKICAgY29uc3QgY2hhciogY29uc3QgcCA9IEdURVNUX0ZMQUcoZmls
dGVyKS5jX3N0cigpOwogICBjb25zdCBjaGFyKiBjb25zdCBkYXNoID0gc3RyY2hyKHAsICctJyk7
Ci0gIFN0cmluZyBwb3NpdGl2ZTsKLSAgU3RyaW5nIG5lZ2F0aXZlOworICBzdGQ6OnN0cmluZyBw
b3NpdGl2ZTsKKyAgc3RkOjpzdHJpbmcgbmVnYXRpdmU7CiAgIGlmIChkYXNoID09IE5VTEwpIHsK
ICAgICBwb3NpdGl2ZSA9IEdURVNUX0ZMQUcoZmlsdGVyKS5jX3N0cigpOyAgLy8gV2hvbGUgc3Ry
aW5nIGlzIGEgcG9zaXRpdmUgZmlsdGVyCi0gICAgbmVnYXRpdmUgPSBTdHJpbmcoIiIpOworICAg
IG5lZ2F0aXZlID0gIiI7CiAgIH0gZWxzZSB7Ci0gICAgcG9zaXRpdmUgPSBTdHJpbmcocCwgZGFz
aCAtIHApOyAgLy8gRXZlcnl0aGluZyB1cCB0byB0aGUgZGFzaAotICAgIG5lZ2F0aXZlID0gU3Ry
aW5nKGRhc2grMSk7ICAgICAgIC8vIEV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGRhc2gKKyAgICBwb3Np
dGl2ZSA9IHN0ZDo6c3RyaW5nKHAsIGRhc2gpOyAgIC8vIEV2ZXJ5dGhpbmcgdXAgdG8gdGhlIGRh
c2gKKyAgICBuZWdhdGl2ZSA9IHN0ZDo6c3RyaW5nKGRhc2ggKyAxKTsgIC8vIEV2ZXJ5dGhpbmcg
YWZ0ZXIgdGhlIGRhc2gKICAgICBpZiAocG9zaXRpdmUuZW1wdHkoKSkgewogICAgICAgLy8gVHJl
YXQgJy10ZXN0MScgYXMgdGhlIHNhbWUgYXMgJyotdGVzdDEnCiAgICAgICBwb3NpdGl2ZSA9IGtV
bml2ZXJzYWxGaWx0ZXI7CkBAIC00OTAsMjAgKzUyNywzMyBAQCBib29sIFVuaXRUZXN0T3B0aW9u
czo6RmlsdGVyTWF0Y2hlc1Rlc3QoY29uc3QgU3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSwKICAgICAg
ICAgICAhTWF0Y2hlc0ZpbHRlcihmdWxsX25hbWUsIG5lZ2F0aXZlLmNfc3RyKCkpKTsKIH0KIAot
I2lmIEdURVNUX09TX1dJTkRPV1MKKyNpZiBHVEVTVF9IQVNfU0VICiAvLyBSZXR1cm5zIEVYQ0VQ
VElPTl9FWEVDVVRFX0hBTkRMRVIgaWYgR29vZ2xlIFRlc3Qgc2hvdWxkIGhhbmRsZSB0aGUKIC8v
IGdpdmVuIFNFSCBleGNlcHRpb24sIG9yIEVYQ0VQVElPTl9DT05USU5VRV9TRUFSQ0ggb3RoZXJ3
aXNlLgogLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgYXMgYW4gX19leGNlcHQgY29uZGl0aW9u
LgogaW50IFVuaXRUZXN0T3B0aW9uczo6R1Rlc3RTaG91bGRQcm9jZXNzU0VIKERXT1JEIGV4Y2Vw
dGlvbl9jb2RlKSB7Ci0gIC8vIEdvb2dsZSBUZXN0IHNob3VsZCBoYW5kbGUgYW4gZXhjZXB0aW9u
IGlmOgorICAvLyBHb29nbGUgVGVzdCBzaG91bGQgaGFuZGxlIGEgU0VIIGV4Y2VwdGlvbiBpZjoK
ICAgLy8gICAxLiB0aGUgdXNlciB3YW50cyBpdCB0bywgQU5ECi0gIC8vICAgMi4gdGhpcyBpcyBu
b3QgYSBicmVha3BvaW50IGV4Y2VwdGlvbi4KLSAgcmV0dXJuIChHVEVTVF9GTEFHKGNhdGNoX2V4
Y2VwdGlvbnMpICYmCi0gICAgICAgICAgZXhjZXB0aW9uX2NvZGUgIT0gRVhDRVBUSU9OX0JSRUFL
UE9JTlQpID8KLSAgICAgIEVYQ0VQVElPTl9FWEVDVVRFX0hBTkRMRVIgOgotICAgICAgRVhDRVBU
SU9OX0NPTlRJTlVFX1NFQVJDSDsKKyAgLy8gICAyLiB0aGlzIGlzIG5vdCBhIGJyZWFrcG9pbnQg
ZXhjZXB0aW9uLCBBTkQKKyAgLy8gICAzLiB0aGlzIGlzIG5vdCBhIEMrKyBleGNlcHRpb24gKFZD
KysgaW1wbGVtZW50cyB0aGVtIHZpYSBTRUgsCisgIC8vICAgICAgYXBwYXJlbnRseSkuCisgIC8v
CisgIC8vIFNFSCBleGNlcHRpb24gY29kZSBmb3IgQysrIGV4Y2VwdGlvbnMuCisgIC8vIChzZWUg
aHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi8xODUyOTQgZm9yIG1vcmUgaW5mb3JtYXRp
b24pLgorICBjb25zdCBEV09SRCBrQ3h4RXhjZXB0aW9uQ29kZSA9IDB4ZTA2ZDczNjM7CisKKyAg
Ym9vbCBzaG91bGRfaGFuZGxlID0gdHJ1ZTsKKworICBpZiAoIUdURVNUX0ZMQUcoY2F0Y2hfZXhj
ZXB0aW9ucykpCisgICAgc2hvdWxkX2hhbmRsZSA9IGZhbHNlOworICBlbHNlIGlmIChleGNlcHRp
b25fY29kZSA9PSBFWENFUFRJT05fQlJFQUtQT0lOVCkKKyAgICBzaG91bGRfaGFuZGxlID0gZmFs
c2U7CisgIGVsc2UgaWYgKGV4Y2VwdGlvbl9jb2RlID09IGtDeHhFeGNlcHRpb25Db2RlKQorICAg
IHNob3VsZF9oYW5kbGUgPSBmYWxzZTsKKworICByZXR1cm4gc2hvdWxkX2hhbmRsZSA/IEVYQ0VQ
VElPTl9FWEVDVVRFX0hBTkRMRVIgOiBFWENFUFRJT05fQ09OVElOVUVfU0VBUkNIOwogfQotI2Vu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisjZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKIAogfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCiAKQEAgLTU4Myw4ICs2MzMsOCBAQCBBc3NlcnRpb25SZXN1
bHQgSGFzT25lRmFpbHVyZShjb25zdCBjaGFyKiAvKiByZXN1bHRzX2V4cHIgKi8sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKiBzdWJzdHJfZXhwciAqLywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0QXJyYXkmIHJl
c3VsdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6VHlw
ZSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogc3Vic3Ry
KSB7Ci0gIGNvbnN0IFN0cmluZyBleHBlY3RlZCh0eXBlID09IFRlc3RQYXJ0UmVzdWx0OjprRmF0
YWxGYWlsdXJlID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cmluZyYg
c3Vic3RyKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdGVkKHR5cGUgPT0gVGVzdFBhcnRS
ZXN1bHQ6OmtGYXRhbEZhaWx1cmUgPwogICAgICAgICAgICAgICAgICAgICAgICAgIjEgZmF0YWwg
ZmFpbHVyZSIgOgogICAgICAgICAgICAgICAgICAgICAgICAgIjEgbm9uLWZhdGFsIGZhaWx1cmUi
KTsKICAgTWVzc2FnZSBtc2c7CkBAIC01OTQsMjMgKzY0NCwyMSBAQCBBc3NlcnRpb25SZXN1bHQg
SGFzT25lRmFpbHVyZShjb25zdCBjaGFyKiAvKiByZXN1bHRzX2V4cHIgKi8sCiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7CiAgICAgICBtc2cgPDwgIlxuIiA8
PCByZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KGkpOwogICAgIH0KLSAgICByZXR1cm4gQXNzZXJ0
aW9uRmFpbHVyZShtc2cpOworICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgbXNnOwog
ICB9CiAKICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIHIgPSByZXN1bHRzLkdldFRlc3RQYXJ0UmVz
dWx0KDApOwogICBpZiAoci50eXBlKCkgIT0gdHlwZSkgewotICAgIG1zZyA8PCAiRXhwZWN0ZWQ6
ICIgPDwgZXhwZWN0ZWQgPDwgIlxuIgotICAgICAgICA8PCAiICBBY3R1YWw6XG4iCi0gICAgICAg
IDw8IHI7Ci0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgICByZXR1cm4gQXNz
ZXJ0aW9uRmFpbHVyZSgpIDw8ICJFeHBlY3RlZDogIiA8PCBleHBlY3RlZCA8PCAiXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiICBBY3R1YWw6XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCByOwogICB9CiAKLSAgaWYgKHN0cnN0cihyLm1lc3NhZ2UoKSwg
c3Vic3RyKSA9PSBOVUxMKSB7Ci0gICAgbXNnIDw8ICJFeHBlY3RlZDogIiA8PCBleHBlY3RlZCA8
PCAiIGNvbnRhaW5pbmcgXCIiCi0gICAgICAgIDw8IHN1YnN0ciA8PCAiXCJcbiIKLSAgICAgICAg
PDwgIiAgQWN0dWFsOlxuIgotICAgICAgICA8PCByOwotICAgIHJldHVybiBBc3NlcnRpb25GYWls
dXJlKG1zZyk7CisgIGlmIChzdHJzdHIoci5tZXNzYWdlKCksIHN1YnN0ci5jX3N0cigpKSA9PSBO
VUxMKSB7CisgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiRXhwZWN0ZWQ6ICIgPDwg
ZXhwZWN0ZWQgPDwgIiBjb250YWluaW5nIFwiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgc3Vic3RyIDw8ICJcIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
IiAgQWN0dWFsOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcjsKICAgfQog
CiAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CkBAIC02MjIsNyArNjcwLDcgQEAgQXNzZXJ0
aW9uUmVzdWx0IEhhc09uZUZhaWx1cmUoY29uc3QgY2hhciogLyogcmVzdWx0c19leHByICovLAog
U2luZ2xlRmFpbHVyZUNoZWNrZXI6OiBTaW5nbGVGYWlsdXJlQ2hlY2tlcigKICAgICBjb25zdCBU
ZXN0UGFydFJlc3VsdEFycmF5KiByZXN1bHRzLAogICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5
cGUsCi0gICAgY29uc3QgY2hhciogc3Vic3RyKQorICAgIGNvbnN0IHN0cmluZyYgc3Vic3RyKQog
ICAgIDogcmVzdWx0c18ocmVzdWx0cyksCiAgICAgICB0eXBlXyh0eXBlKSwKICAgICAgIHN1YnN0
cl8oc3Vic3RyKSB7fQpAQCAtNjMyLDcgKzY4MCw3IEBAIFNpbmdsZUZhaWx1cmVDaGVja2VyOjog
U2luZ2xlRmFpbHVyZUNoZWNrZXIoCiAvLyB0eXBlIGFuZCBjb250YWlucyB0aGUgZ2l2ZW4gc3Vi
c3RyaW5nLiAgSWYgdGhhdCdzIG5vdCB0aGUgY2FzZSwgYQogLy8gbm9uLWZhdGFsIGZhaWx1cmUg
d2lsbCBiZSBnZW5lcmF0ZWQuCiBTaW5nbGVGYWlsdXJlQ2hlY2tlcjo6flNpbmdsZUZhaWx1cmVD
aGVja2VyKCkgewotICBFWFBFQ1RfUFJFRF9GT1JNQVQzKEhhc09uZUZhaWx1cmUsICpyZXN1bHRz
XywgdHlwZV8sIHN1YnN0cl8uY19zdHIoKSk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDMoSGFzT25l
RmFpbHVyZSwgKnJlc3VsdHNfLCB0eXBlXywgc3Vic3RyXyk7CiB9CiAKIERlZmF1bHRHbG9iYWxU
ZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpEZWZhdWx0R2xvYmFsVGVzdFBhcnRSZXN1bHRSZXBvcnRl
cigKQEAgLTcwOSwxMSArNzU3LDIyIEBAIGludCBVbml0VGVzdEltcGw6OmZhaWxlZF90ZXN0X2Nv
dW50KCkgY29uc3QgewogICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0ZXN0X2Nhc2VzXywg
JlRlc3RDYXNlOjpmYWlsZWRfdGVzdF9jb3VudCk7CiB9CiAKKy8vIEdldHMgdGhlIG51bWJlciBv
ZiBkaXNhYmxlZCB0ZXN0cyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhNTCByZXBvcnQu
CitpbnQgVW5pdFRlc3RJbXBsOjpyZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25z
dCB7CisgIHJldHVybiBTdW1PdmVyVGVzdENhc2VMaXN0KHRlc3RfY2FzZXNfLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmVGVzdENhc2U6OnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9j
b3VudCk7Cit9CisKIC8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cy4KIGludCBV
bml0VGVzdEltcGw6OmRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7CiAgIHJldHVybiBTdW1P
dmVyVGVzdENhc2VMaXN0KHRlc3RfY2FzZXNfLCAmVGVzdENhc2U6OmRpc2FibGVkX3Rlc3RfY291
bnQpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0
aGUgWE1MIHJlcG9ydC4KK2ludCBVbml0VGVzdEltcGw6OnJlcG9ydGFibGVfdGVzdF9jb3VudCgp
IGNvbnN0IHsKKyAgcmV0dXJuIFN1bU92ZXJUZXN0Q2FzZUxpc3QodGVzdF9jYXNlc18sICZUZXN0
Q2FzZTo6cmVwb3J0YWJsZV90ZXN0X2NvdW50KTsKK30KKwogLy8gR2V0cyB0aGUgbnVtYmVyIG9m
IGFsbCB0ZXN0cy4KIGludCBVbml0VGVzdEltcGw6OnRvdGFsX3Rlc3RfY291bnQoKSBjb25zdCB7
CiAgIHJldHVybiBTdW1PdmVyVGVzdENhc2VMaXN0KHRlc3RfY2FzZXNfLCAmVGVzdENhc2U6OnRv
dGFsX3Rlc3RfY291bnQpOwpAQCAtNzI0LDcgKzc4Myw3IEBAIGludCBVbml0VGVzdEltcGw6OnRl
c3RfdG9fcnVuX2NvdW50KCkgY29uc3QgewogICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0
ZXN0X2Nhc2VzXywgJlRlc3RDYXNlOjp0ZXN0X3RvX3J1bl9jb3VudCk7CiB9CiAKLS8vIFJldHVy
bnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYSBTdHJpbmcuCisvLyBSZXR1cm5zIHRo
ZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFzIGFuIHN0ZDo6c3RyaW5nLgogLy8KIC8vIFRoZSBt
YXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMgdG8gYmUgaW5jbHVkZWQgaXMgc3BlY2lmaWVk
IGJ5CiAvLyB0aGUgZ3Rlc3Rfc3RhY2tfdHJhY2VfZGVwdGggZmxhZy4gIFRoZSBza2lwX2NvdW50
IHBhcmFtZXRlcgpAQCAtNzM0LDkgKzc5MywxMyBAQCBpbnQgVW5pdFRlc3RJbXBsOjp0ZXN0X3Rv
X3J1bl9jb3VudCgpIGNvbnN0IHsKIC8vIEZvciBleGFtcGxlLCBpZiBGb28oKSBjYWxscyBCYXIo
KSwgd2hpY2ggaW4gdHVybiBjYWxscwogLy8gQ3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgx
KSwgRm9vKCkgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKIC8vIHRyYWNlIGJ1dCBCYXIoKSBhbmQg
Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgpIHdvbid0LgotU3RyaW5nIFVuaXRUZXN0SW1w
bDo6Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcChpbnQgc2tpcF9jb3VudCkgewotICAodm9p
ZClza2lwX2NvdW50OwotICByZXR1cm4gU3RyaW5nKCIiKTsKK3N0ZDo6c3RyaW5nIFVuaXRUZXN0
SW1wbDo6Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcChpbnQgc2tpcF9jb3VudCkgeworICBy
ZXR1cm4gb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPkN1cnJlbnRTdGFja1RyYWNlKAorICAgICAg
c3RhdGljX2Nhc3Q8aW50PihHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSksCisgICAgICBz
a2lwX2NvdW50ICsgMQorICAgICAgLy8gU2tpcHMgdGhlIHVzZXItc3BlY2lmaWVkIG51bWJlciBv
ZiBmcmFtZXMgcGx1cyB0aGlzIGZ1bmN0aW9uCisgICAgICAvLyBpdHNlbGYuCisgICAgICApOyAg
Ly8gTk9MSU5UCiB9CiAKIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgdGltZSBpbiBtaWxsaXNlY29u
ZHMuCkBAIC03NjQsNjUgKzgyNywyOCBAQCBUaW1lSW5NaWxsaXMgR2V0VGltZUluTWlsbGlzKCkg
ewogICByZXR1cm4gMDsKICNlbGlmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX0hBU19HRVRU
SU1FT0ZEQVlfCiAgIF9fdGltZWI2NCBub3c7Ci0jaWZkZWYgX01TQ19WRVIKKwogICAvLyBNU1ZD
IDggZGVwcmVjYXRlcyBfZnRpbWU2NCgpLCBzbyB3ZSB3YW50IHRvIHN1cHByZXNzIHdhcm5pbmcg
NDk5NgogICAvLyAoZGVwcmVjYXRlZCBmdW5jdGlvbikgdGhlcmUuCiAgIC8vIFRPRE8oa2VudG9u
QGdvb2dsZS5jb20pOiBVc2UgR2V0VGlja0NvdW50KCk/ICBPciB1c2UKICAgLy8gICBTeXN0ZW1U
aW1lVG9GaWxlVGltZSgpCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkgICAgICAgICAgLy8gU2F2ZXMg
dGhlIGN1cnJlbnQgd2FybmluZyBzdGF0ZS4KLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5OTYp
ICAvLyBUZW1wb3JhcmlseSBkaXNhYmxlcyB3YXJuaW5nIDQ5OTYuCi0gIF9mdGltZTY0KCZub3cp
OwotI3ByYWdtYSB3YXJuaW5nKHBvcCkgICAgICAgICAgIC8vIFJlc3RvcmVzIHRoZSB3YXJuaW5n
IHN0YXRlLgotI2Vsc2UKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDk5NikK
ICAgX2Z0aW1lNjQoJm5vdyk7Ci0jZW5kaWYgIC8vIF9NU0NfVkVSCisgIEdURVNUX0RJU0FCTEVf
TVNDX1dBUk5JTkdTX1BPUF8oKQorCiAgIHJldHVybiBzdGF0aWNfY2FzdDxUaW1lSW5NaWxsaXM+
KG5vdy50aW1lKSAqIDEwMDAgKyBub3cubWlsbGl0bTsKICNlbGlmIEdURVNUX0hBU19HRVRUSU1F
T0ZEQVlfCiAgIHN0cnVjdCB0aW1ldmFsIG5vdzsKICAgZ2V0dGltZW9mZGF5KCZub3csIE5VTEwp
OwogICByZXR1cm4gc3RhdGljX2Nhc3Q8VGltZUluTWlsbGlzPihub3cudHZfc2VjKSAqIDEwMDAg
KyBub3cudHZfdXNlYyAvIDEwMDA7CiAjZWxzZQotI2Vycm9yICJEb24ndCBrbm93IGhvdyB0byBn
ZXQgdGhlIGN1cnJlbnQgdGltZSBvbiB5b3VyIHN5c3RlbS4iCisjIGVycm9yICJEb24ndCBrbm93
IGhvdyB0byBnZXQgdGhlIGN1cnJlbnQgdGltZSBvbiB5b3VyIHN5c3RlbS4iCiAjZW5kaWYKIH0K
IAogLy8gVXRpbGl0aWVzCiAKLS8vIGNsYXNzIFN0cmluZwotCi0vLyBSZXR1cm5zIHRoZSBpbnB1
dCBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzIGlmIGl0J3Mgbm90IE5VTEw7Ci0vLyBvdGhlcndp
c2UgcmV0dXJucyAiKG51bGwpIi4gIEZvciBleGFtcGxlLCAiXCJIZWxsb1wiIiBpcyByZXR1cm5l
ZAotLy8gZm9yIGlucHV0ICJIZWxsbyIuCi0vLwotLy8gVGhpcyBpcyB1c2VmdWwgZm9yIHByaW50
aW5nIGEgQyBzdHJpbmcgaW4gdGhlIHN5bnRheCBvZiBhIGxpdGVyYWwuCi0vLwotLy8gS25vd24g
aXNzdWU6IGVzY2FwZSBzZXF1ZW5jZXMgYXJlIG5vdCBoYW5kbGVkIHlldC4KLVN0cmluZyBTdHJp
bmc6OlNob3dDU3RyaW5nUXVvdGVkKGNvbnN0IGNoYXIqIGNfc3RyKSB7Ci0gIHJldHVybiBjX3N0
ciA/IFN0cmluZzo6Rm9ybWF0KCJcIiVzXCIiLCBjX3N0cikgOiBTdHJpbmcoIihudWxsKSIpOwot
fQotCi0vLyBDb3BpZXMgYXQgbW9zdCBsZW5ndGggY2hhcmFjdGVycyBmcm9tIHN0ciBpbnRvIGEg
bmV3bHktYWxsb2NhdGVkCi0vLyBwaWVjZSBvZiBtZW1vcnkgb2Ygc2l6ZSBsZW5ndGgrMS4gIFRo
ZSBtZW1vcnkgaXMgYWxsb2NhdGVkIHdpdGggbmV3W10uCi0vLyBBIHRlcm1pbmF0aW5nIG51bGwg
Ynl0ZSBpcyB3cml0dGVuIHRvIHRoZSBtZW1vcnksIGFuZCBhIHBvaW50ZXIgdG8gaXQKLS8vIGlz
IHJldHVybmVkLiAgSWYgc3RyIGlzIE5VTEwsIE5VTEwgaXMgcmV0dXJuZWQuCi1zdGF0aWMgY2hh
ciogQ2xvbmVTdHJpbmcoY29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuZ3RoKSB7Ci0gIGlmIChz
dHIgPT0gTlVMTCkgewotICAgIHJldHVybiBOVUxMOwotICB9IGVsc2UgewotICAgIGNoYXIqIGNv
bnN0IGNsb25lID0gbmV3IGNoYXJbbGVuZ3RoICsgMV07Ci0gICAgcG9zaXg6OlN0ck5DcHkoY2xv
bmUsIHN0ciwgbGVuZ3RoKTsKLSAgICBjbG9uZVtsZW5ndGhdID0gJ1wwJzsKLSAgICByZXR1cm4g
Y2xvbmU7Ci0gIH0KLX0KLQotLy8gQ2xvbmVzIGEgMC10ZXJtaW5hdGVkIEMgc3RyaW5nLCBhbGxv
Y2F0aW5nIG1lbW9yeSB1c2luZyBuZXcuICBUaGUKLS8vIGNhbGxlciBpcyByZXNwb25zaWJsZSBm
b3IgZGVsZXRpbmdbXSB0aGUgcmV0dXJuIHZhbHVlLiAgUmV0dXJucyB0aGUKLS8vIGNsb25lZCBz
dHJpbmcsIG9yIE5VTEwgaWYgdGhlIGlucHV0IGlzIE5VTEwuCi1jb25zdCBjaGFyICogU3RyaW5n
OjpDbG9uZUNTdHJpbmcoY29uc3QgY2hhciogY19zdHIpIHsKLSAgcmV0dXJuIChjX3N0ciA9PSBO
VUxMKSA/Ci0gICAgICAgICAgICAgICAgICAgIE5VTEwgOiBDbG9uZVN0cmluZyhjX3N0ciwgc3Ry
bGVuKGNfc3RyKSk7Ci19CisvLyBjbGFzcyBTdHJpbmcuCiAKICNpZiBHVEVTVF9PU19XSU5ET1dT
X01PQklMRQogLy8gQ3JlYXRlcyBhIFVURi0xNiB3aWRlIHN0cmluZyBmcm9tIHRoZSBnaXZlbiBB
TlNJIHN0cmluZywgYWxsb2NhdGluZwpAQCAtODc5LDExICs5MDUsNiBAQCBib29sIFN0cmluZzo6
Q1N0cmluZ0VxdWFscyhjb25zdCBjaGFyICogbGhzLCBjb25zdCBjaGFyICogcmhzKSB7CiAvLyBl
bmNvZGluZywgYW5kIHN0cmVhbXMgdGhlIHJlc3VsdCB0byB0aGUgZ2l2ZW4gTWVzc2FnZSBvYmpl
Y3QuCiBzdGF0aWMgdm9pZCBTdHJlYW1XaWRlQ2hhcnNUb01lc3NhZ2UoY29uc3Qgd2NoYXJfdCog
d3N0ciwgc2l6ZV90IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNZXNzYWdlKiBtc2cpIHsKLSAgLy8gVE9ETyh3YW4pOiBjb25zaWRlciBhbGxvd2luZyBhIHRl
c3Rpbmc6OlN0cmluZyBvYmplY3QgdG8KLSAgLy8gY29udGFpbiAnXDAnLiAgVGhpcyB3aWxsIG1h
a2UgaXQgYmVoYXZlIG1vcmUgbGlrZSBzdGQ6OnN0cmluZywKLSAgLy8gYW5kIHdpbGwgYWxsb3cg
VG9VdGY4U3RyaW5nKCkgdG8gcmV0dXJuIHRoZSBjb3JyZWN0IGVuY29kaW5nCi0gIC8vIGZvciAn
XDAnIHMudC4gd2UgY2FuIGdldCByaWQgb2YgdGhlIGNvbmRpdGlvbmFsIGhlcmUgKGFuZCBpbgot
ICAvLyBzZXZlcmFsIG90aGVyIHBsYWNlcykuCiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGxl
bmd0aDsgKSB7ICAvLyBOT0xJTlQKICAgICBpZiAod3N0cltpXSAhPSBMJ1wwJykgewogICAgICAg
Km1zZyA8PCBXaWRlU3RyaW5nVG9VdGY4KHdzdHIgKyBpLCBzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0
aCAtIGkpKTsKQEAgLTg5OCw4ICs5MTksNDUgQEAgc3RhdGljIHZvaWQgU3RyZWFtV2lkZUNoYXJz
VG9NZXNzYWdlKGNvbnN0IHdjaGFyX3QqIHdzdHIsIHNpemVfdCBsZW5ndGgsCiAKICNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1NURF9XU1RSSU5HIHx8IEdURVNUX0hBU19HTE9CQUxfV1NUUklORwogCit2
b2lkIFNwbGl0U3RyaW5nKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgY2hhciBkZWxpbWl0ZXIs
CisgICAgICAgICAgICAgICAgIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpzdHJpbmc+KiBkZXN0KSB7
CisgIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpzdHJpbmc+IHBhcnNlZDsKKyAgOjpzdGQ6OnN0cmlu
Zzo6c2l6ZV90eXBlIHBvcyA9IDA7CisgIHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdh
eXNUcnVlKCkpIHsKKyAgICBjb25zdCA6OnN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgY29sb24gPSBz
dHIuZmluZChkZWxpbWl0ZXIsIHBvcyk7CisgICAgaWYgKGNvbG9uID09IDo6c3RkOjpzdHJpbmc6
Om5wb3MpIHsKKyAgICAgIHBhcnNlZC5wdXNoX2JhY2soc3RyLnN1YnN0cihwb3MpKTsKKyAgICAg
IGJyZWFrOworICAgIH0gZWxzZSB7CisgICAgICBwYXJzZWQucHVzaF9iYWNrKHN0ci5zdWJzdHIo
cG9zLCBjb2xvbiAtIHBvcykpOworICAgICAgcG9zID0gY29sb24gKyAxOworICAgIH0KKyAgfQor
ICBkZXN0LT5zd2FwKHBhcnNlZCk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogCisv
LyBDb25zdHJ1Y3RzIGFuIGVtcHR5IE1lc3NhZ2UuCisvLyBXZSBhbGxvY2F0ZSB0aGUgc3RyaW5n
c3RyZWFtIHNlcGFyYXRlbHkgYmVjYXVzZSBvdGhlcndpc2UgZWFjaCB1c2Ugb2YKKy8vIEFTU0VS
VC9FWFBFQ1QgaW4gYSBwcm9jZWR1cmUgYWRkcyBvdmVyIDIwMCBieXRlcyB0byB0aGUgcHJvY2Vk
dXJlJ3MKKy8vIHN0YWNrIGZyYW1lIGxlYWRpbmcgdG8gaHVnZSBzdGFjayBmcmFtZXMgaW4gc29t
ZSBjYXNlczsgZ2NjIGRvZXMgbm90IHJldXNlCisvLyB0aGUgc3RhY2sgc3BhY2UuCitNZXNzYWdl
OjpNZXNzYWdlKCkgOiBzc18obmV3IDo6c3RkOjpzdHJpbmdzdHJlYW0pIHsKKyAgLy8gQnkgZGVm
YXVsdCwgd2Ugd2FudCB0aGVyZSB0byBiZSBlbm91Z2ggcHJlY2lzaW9uIHdoZW4gcHJpbnRpbmcK
KyAgLy8gYSBkb3VibGUgdG8gYSBNZXNzYWdlLgorICAqc3NfIDw8IHN0ZDo6c2V0cHJlY2lzaW9u
KHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZGlnaXRzMTAgKyAyKTsKK30KKworLy8gVGhl
c2UgdHdvIG92ZXJsb2FkcyBhbGxvdyBzdHJlYW1pbmcgYSB3aWRlIEMgc3RyaW5nIHRvIGEgTWVz
c2FnZQorLy8gdXNpbmcgdGhlIFVURi04IGVuY29kaW5nLgorTWVzc2FnZSYgTWVzc2FnZTo6b3Bl
cmF0b3IgPDwoY29uc3Qgd2NoYXJfdCogd2lkZV9jX3N0cikgeworICByZXR1cm4gKnRoaXMgPDwg
aW50ZXJuYWw6OlN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKHdpZGVfY19zdHIpOworfQorTWVzc2Fn
ZSYgTWVzc2FnZTo6b3BlcmF0b3IgPDwod2NoYXJfdCogd2lkZV9jX3N0cikgeworICByZXR1cm4g
KnRoaXMgPDwgaW50ZXJuYWw6OlN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKHdpZGVfY19zdHIpOwor
fQorCiAjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCiAvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gd2lk
ZSBzdHJpbmcgdG8gYSBuYXJyb3cgc3RyaW5nIHVzaW5nIHRoZSBVVEYtOAogLy8gZW5jb2Rpbmcs
IGFuZCBzdHJlYW1zIHRoZSByZXN1bHQgdG8gdGhpcyBNZXNzYWdlIG9iamVjdC4KQEAgLTkxOCw1
NSArOTc2LDI2IEBAIE1lc3NhZ2UmIE1lc3NhZ2U6Om9wZXJhdG9yIDw8KGNvbnN0IDo6d3N0cmlu
ZyYgd3N0cikgewogfQogI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKIAotbmFt
ZXNwYWNlIGludGVybmFsIHsKLQotLy8gRm9ybWF0cyBhIHZhbHVlIHRvIGJlIHVzZWQgaW4gYSBm
YWlsdXJlIG1lc3NhZ2UuCi0KLS8vIEZvciBhIGNoYXIgdmFsdWUsIHdlIHByaW50IGl0IGFzIGEg
QysrIGNoYXIgbGl0ZXJhbCBhbmQgYXMgYW4KLS8vIHVuc2lnbmVkIGludGVnZXIgKGJvdGggaW4g
ZGVjaW1hbCBhbmQgaW4gaGV4YWRlY2ltYWwpLgotU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNz
YWdlKGNoYXIgY2gpIHsKLSAgY29uc3QgdW5zaWduZWQgaW50IGNoX2FzX3VpbnQgPSBjaDsKLSAg
Ly8gQSBTdHJpbmcgb2JqZWN0IGNhbm5vdCBjb250YWluICdcMCcsIHNvIHdlIHByaW50ICJcXDAi
IHdoZW4gY2ggaXMKLSAgLy8gJ1wwJy4KLSAgcmV0dXJuIFN0cmluZzo6Rm9ybWF0KCInJXMnICgl
dSwgMHglWCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgY2ggPyBTdHJpbmc6OkZvcm1hdCgi
JWMiLCBjaCkuY19zdHIoKSA6ICJcXDAiLAotICAgICAgICAgICAgICAgICAgICAgICAgY2hfYXNf
dWludCwgY2hfYXNfdWludCk7Ci19Ci0KLS8vIEZvciBhIHdjaGFyX3QgdmFsdWUsIHdlIHByaW50
IGl0IGFzIGEgQysrIHdjaGFyX3QgbGl0ZXJhbCBhbmQgYXMgYW4KLS8vIHVuc2lnbmVkIGludGVn
ZXIgKGJvdGggaW4gZGVjaW1hbCBhbmQgaW4gaGV4aWRlY2ltYWwpLgotU3RyaW5nIEZvcm1hdEZv
ckZhaWx1cmVNZXNzYWdlKHdjaGFyX3Qgd2NoYXIpIHsKLSAgLy8gVGhlIEMrKyBzdGFuZGFyZCBk
b2Vzbid0IHNwZWNpZnkgdGhlIGV4YWN0IHNpemUgb2YgdGhlIHdjaGFyX3QKLSAgLy8gdHlwZS4g
IEl0IGp1c3Qgc2F5cyB0aGF0IGl0IHNoYWxsIGhhdmUgdGhlIHNhbWUgc2l6ZSBhcyBhbm90aGVy
Ci0gIC8vIGludGVncmFsIHR5cGUsIGNhbGxlZCBpdHMgdW5kZXJseWluZyB0eXBlLgotICAvLwot
ICAvLyBUaGVyZWZvcmUsIGluIG9yZGVyIHRvIHByaW50IGEgd2NoYXJfdCB2YWx1ZSBpbiB0aGUg
bnVtZXJpYyBmb3JtLAotICAvLyB3ZSBmaXJzdCBjb252ZXJ0IGl0IHRvIHRoZSBsYXJnZXN0IGlu
dGVncmFsIHR5cGUgKFVJbnQ2NCkgYW5kCi0gIC8vIHRoZW4gcHJpbnQgdGhlIGNvbnZlcnRlZCB2
YWx1ZS4KLSAgLy8KLSAgLy8gV2UgdXNlIHN0cmVhbWluZyB0byBwcmludCB0aGUgdmFsdWUgYXMg
IiVsbHUiIGRvZXNuJ3Qgd29yawotICAvLyBjb3JyZWN0bHkgd2l0aCBNU1ZDIDcuMS4KLSAgY29u
c3QgVUludDY0IHdjaGFyX2FzX3VpbnQ2NCA9IHdjaGFyOwotICBNZXNzYWdlIG1zZzsKLSAgLy8g
QSBTdHJpbmcgb2JqZWN0IGNhbm5vdCBjb250YWluICdcMCcsIHNvIHdlIHByaW50ICJcXDAiIHdo
ZW4gd2NoYXIgaXMKLSAgLy8gTCdcMCcuCi0gIGNoYXIgYnVmZmVyWzMyXTsgIC8vIENvZGVQb2lu
dFRvVXRmOCByZXF1aXJlcyBhIGJ1ZmZlciB0aGF0IGJpZy4KLSAgbXNnIDw8ICJMJyIKLSAgICAg
IDw8ICh3Y2hhciA/IENvZGVQb2ludFRvVXRmOChzdGF0aWNfY2FzdDxVSW50MzI+KHdjaGFyKSwg
YnVmZmVyKSA6ICJcXDAiKQotICAgICAgPDwgIicgKCIgPDwgd2NoYXJfYXNfdWludDY0IDw8ICIs
IDB4IiA8PCA6OnN0ZDo6c2V0YmFzZSgxNikKLSAgICAgIDw8IHdjaGFyX2FzX3VpbnQ2NCA8PCAi
KSI7Ci0gIHJldHVybiBtc2cuR2V0U3RyaW5nKCk7CisvLyBHZXRzIHRoZSB0ZXh0IHN0cmVhbWVk
IHRvIHRoaXMgb2JqZWN0IHNvIGZhciBhcyBhbiBzdGQ6OnN0cmluZy4KKy8vIEVhY2ggJ1wwJyBj
aGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlciBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgorc3RkOjpzdHJp
bmcgTWVzc2FnZTo6R2V0U3RyaW5nKCkgY29uc3QgeworICByZXR1cm4gaW50ZXJuYWw6OlN0cmlu
Z1N0cmVhbVRvU3RyaW5nKHNzXy5nZXQoKSk7CiB9CiAKLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5h
bAotCiAvLyBBc3NlcnRpb25SZXN1bHQgY29uc3RydWN0b3JzLgogLy8gVXNlZCBpbiBFWFBFQ1Rf
VFJVRS9GQUxTRShhc3NlcnRpb25fcmVzdWx0KS4KIEFzc2VydGlvblJlc3VsdDo6QXNzZXJ0aW9u
UmVzdWx0KGNvbnN0IEFzc2VydGlvblJlc3VsdCYgb3RoZXIpCiAgICAgOiBzdWNjZXNzXyhvdGhl
ci5zdWNjZXNzXyksCiAgICAgICBtZXNzYWdlXyhvdGhlci5tZXNzYWdlXy5nZXQoKSAhPSBOVUxM
ID8KLSAgICAgICAgICAgICAgIG5ldyBpbnRlcm5hbDo6U3RyaW5nKCpvdGhlci5tZXNzYWdlXykg
OgotICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50ZXJuYWw6OlN0cmluZyo+KE5VTEwpKSB7
CisgICAgICAgICAgICAgICBuZXcgOjpzdGQ6OnN0cmluZygqb3RoZXIubWVzc2FnZV8pIDoKKyAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PCA6OnN0ZDo6c3RyaW5nKj4oTlVMTCkpIHsKK30KKwor
Ly8gU3dhcHMgdHdvIEFzc2VydGlvblJlc3VsdHMuCit2b2lkIEFzc2VydGlvblJlc3VsdDo6c3dh
cChBc3NlcnRpb25SZXN1bHQmIG90aGVyKSB7CisgIHVzaW5nIHN0ZDo6c3dhcDsKKyAgc3dhcChz
dWNjZXNzXywgb3RoZXIuc3VjY2Vzc18pOworICBzd2FwKG1lc3NhZ2VfLCBvdGhlci5tZXNzYWdl
Xyk7CiB9CiAKIC8vIFJldHVybnMgdGhlIGFzc2VydGlvbidzIG5lZ2F0aW9uLiBVc2VkIHdpdGgg
RVhQRUNUL0FTU0VSVF9GQUxTRS4KQEAgLTk5NSw2ICsxMDI0LDI3NiBAQCBBc3NlcnRpb25SZXN1
bHQgQXNzZXJ0aW9uRmFpbHVyZShjb25zdCBNZXNzYWdlJiBtZXNzYWdlKSB7CiAKIG5hbWVzcGFj
ZSBpbnRlcm5hbCB7CiAKK25hbWVzcGFjZSBlZGl0X2Rpc3RhbmNlIHsKK3N0ZDo6dmVjdG9yPEVk
aXRUeXBlPiBDYWxjdWxhdGVPcHRpbWFsRWRpdHMoY29uc3Qgc3RkOjp2ZWN0b3I8c2l6ZV90PiYg
bGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8c2l6ZV90PiYgcmlnaHQpIHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8
ZG91YmxlPiA+IGNvc3RzKAorICAgICAgbGVmdC5zaXplKCkgKyAxLCBzdGQ6OnZlY3Rvcjxkb3Vi
bGU+KHJpZ2h0LnNpemUoKSArIDEpKTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8RWRpdFR5
cGU+ID4gYmVzdF9tb3ZlKAorICAgICAgbGVmdC5zaXplKCkgKyAxLCBzdGQ6OnZlY3RvcjxFZGl0
VHlwZT4ocmlnaHQuc2l6ZSgpICsgMSkpOworCisgIC8vIFBvcHVsYXRlIGZvciBlbXB0eSByaWdo
dC4KKyAgZm9yIChzaXplX3QgbF9pID0gMDsgbF9pIDwgY29zdHMuc2l6ZSgpOyArK2xfaSkgewor
ICAgIGNvc3RzW2xfaV1bMF0gPSBzdGF0aWNfY2FzdDxkb3VibGU+KGxfaSk7CisgICAgYmVzdF9t
b3ZlW2xfaV1bMF0gPSBrUmVtb3ZlOworICB9CisgIC8vIFBvcHVsYXRlIGZvciBlbXB0eSBsZWZ0
LgorICBmb3IgKHNpemVfdCByX2kgPSAxOyByX2kgPCBjb3N0c1swXS5zaXplKCk7ICsrcl9pKSB7
CisgICAgY29zdHNbMF1bcl9pXSA9IHN0YXRpY19jYXN0PGRvdWJsZT4ocl9pKTsKKyAgICBiZXN0
X21vdmVbMF1bcl9pXSA9IGtBZGQ7CisgIH0KKworICBmb3IgKHNpemVfdCBsX2kgPSAwOyBsX2kg
PCBsZWZ0LnNpemUoKTsgKytsX2kpIHsKKyAgICBmb3IgKHNpemVfdCByX2kgPSAwOyByX2kgPCBy
aWdodC5zaXplKCk7ICsrcl9pKSB7CisgICAgICBpZiAobGVmdFtsX2ldID09IHJpZ2h0W3JfaV0p
IHsKKyAgICAgICAgLy8gRm91bmQgYSBtYXRjaC4gQ29uc3VtZSBpdC4KKyAgICAgICAgY29zdHNb
bF9pICsgMV1bcl9pICsgMV0gPSBjb3N0c1tsX2ldW3JfaV07CisgICAgICAgIGJlc3RfbW92ZVts
X2kgKyAxXVtyX2kgKyAxXSA9IGtNYXRjaDsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisK
KyAgICAgIGNvbnN0IGRvdWJsZSBhZGQgPSBjb3N0c1tsX2kgKyAxXVtyX2ldOworICAgICAgY29u
c3QgZG91YmxlIHJlbW92ZSA9IGNvc3RzW2xfaV1bcl9pICsgMV07CisgICAgICBjb25zdCBkb3Vi
bGUgcmVwbGFjZSA9IGNvc3RzW2xfaV1bcl9pXTsKKyAgICAgIGlmIChhZGQgPCByZW1vdmUgJiYg
YWRkIDwgcmVwbGFjZSkgeworICAgICAgICBjb3N0c1tsX2kgKyAxXVtyX2kgKyAxXSA9IGFkZCAr
IDE7CisgICAgICAgIGJlc3RfbW92ZVtsX2kgKyAxXVtyX2kgKyAxXSA9IGtBZGQ7CisgICAgICB9
IGVsc2UgaWYgKHJlbW92ZSA8IGFkZCAmJiByZW1vdmUgPCByZXBsYWNlKSB7CisgICAgICAgIGNv
c3RzW2xfaSArIDFdW3JfaSArIDFdID0gcmVtb3ZlICsgMTsKKyAgICAgICAgYmVzdF9tb3ZlW2xf
aSArIDFdW3JfaSArIDFdID0ga1JlbW92ZTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFdl
IG1ha2UgcmVwbGFjZSBhIGxpdHRsZSBtb3JlIGV4cGVuc2l2ZSB0aGFuIGFkZC9yZW1vdmUgdG8g
bG93ZXIKKyAgICAgICAgLy8gdGhlaXIgcHJpb3JpdHkuCisgICAgICAgIGNvc3RzW2xfaSArIDFd
W3JfaSArIDFdID0gcmVwbGFjZSArIDEuMDAwMDE7CisgICAgICAgIGJlc3RfbW92ZVtsX2kgKyAx
XVtyX2kgKyAxXSA9IGtSZXBsYWNlOworICAgICAgfQorICAgIH0KKyAgfQorCisgIC8vIFJlY29u
c3RydWN0IHRoZSBiZXN0IHBhdGguIFdlIGRvIGl0IGluIHJldmVyc2Ugb3JkZXIuCisgIHN0ZDo6
dmVjdG9yPEVkaXRUeXBlPiBiZXN0X3BhdGg7CisgIGZvciAoc2l6ZV90IGxfaSA9IGxlZnQuc2l6
ZSgpLCByX2kgPSByaWdodC5zaXplKCk7IGxfaSA+IDAgfHwgcl9pID4gMDspIHsKKyAgICBFZGl0
VHlwZSBtb3ZlID0gYmVzdF9tb3ZlW2xfaV1bcl9pXTsKKyAgICBiZXN0X3BhdGgucHVzaF9iYWNr
KG1vdmUpOworICAgIGxfaSAtPSBtb3ZlICE9IGtBZGQ7CisgICAgcl9pIC09IG1vdmUgIT0ga1Jl
bW92ZTsKKyAgfQorICBzdGQ6OnJldmVyc2UoYmVzdF9wYXRoLmJlZ2luKCksIGJlc3RfcGF0aC5l
bmQoKSk7CisgIHJldHVybiBiZXN0X3BhdGg7Cit9CisKK25hbWVzcGFjZSB7CisKKy8vIEhlbHBl
ciBjbGFzcyB0byBjb252ZXJ0IHN0cmluZyBpbnRvIGlkcyB3aXRoIGRlZHVwbGljYXRpb24uCitj
bGFzcyBJbnRlcm5hbFN0cmluZ3MgeworIHB1YmxpYzoKKyAgc2l6ZV90IEdldElkKGNvbnN0IHN0
ZDo6c3RyaW5nJiBzdHIpIHsKKyAgICBJZE1hcDo6aXRlcmF0b3IgaXQgPSBpZHNfLmZpbmQoc3Ry
KTsKKyAgICBpZiAoaXQgIT0gaWRzXy5lbmQoKSkgcmV0dXJuIGl0LT5zZWNvbmQ7CisgICAgc2l6
ZV90IGlkID0gaWRzXy5zaXplKCk7CisgICAgcmV0dXJuIGlkc19bc3RyXSA9IGlkOworICB9CisK
KyBwcml2YXRlOgorICB0eXBlZGVmIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzaXplX3Q+IElkTWFw
OworICBJZE1hcCBpZHNfOworfTsKKworfSAgLy8gbmFtZXNwYWNlCisKK3N0ZDo6dmVjdG9yPEVk
aXRUeXBlPiBDYWxjdWxhdGVPcHRpbWFsRWRpdHMoCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+JiBsZWZ0LAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgcmln
aHQpIHsKKyAgc3RkOjp2ZWN0b3I8c2l6ZV90PiBsZWZ0X2lkcywgcmlnaHRfaWRzOworICB7Cisg
ICAgSW50ZXJuYWxTdHJpbmdzIGludGVybl90YWJsZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxlZnQuc2l6ZSgpOyArK2kpIHsKKyAgICAgIGxlZnRfaWRzLnB1c2hfYmFjayhpbnRlcm5f
dGFibGUuR2V0SWQobGVmdFtpXSkpOworICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHJpZ2h0LnNpemUoKTsgKytpKSB7CisgICAgICByaWdodF9pZHMucHVzaF9iYWNrKGludGVybl90
YWJsZS5HZXRJZChyaWdodFtpXSkpOworICAgIH0KKyAgfQorICByZXR1cm4gQ2FsY3VsYXRlT3B0
aW1hbEVkaXRzKGxlZnRfaWRzLCByaWdodF9pZHMpOworfQorCituYW1lc3BhY2UgeworCisvLyBI
ZWxwZXIgY2xhc3MgdGhhdCBob2xkcyB0aGUgc3RhdGUgZm9yIG9uZSBodW5rIGFuZCBwcmludHMg
aXQgb3V0IHRvIHRoZQorLy8gc3RyZWFtLgorLy8gSXQgcmVvcmRlcnMgYWRkcy9yZW1vdmVzIHdo
ZW4gcG9zc2libGUgdG8gZ3JvdXAgYWxsIHJlbW92ZXMgYmVmb3JlIGFsbAorLy8gYWRkcy4gSXQg
YWxzbyBhZGRzIHRoZSBodW5rIGhlYWRlciBiZWZvcmUgcHJpbnRpbnQgaW50byB0aGUgc3RyZWFt
LgorY2xhc3MgSHVuayB7CisgcHVibGljOgorICBIdW5rKHNpemVfdCBsZWZ0X3N0YXJ0LCBzaXpl
X3QgcmlnaHRfc3RhcnQpCisgICAgICA6IGxlZnRfc3RhcnRfKGxlZnRfc3RhcnQpLAorICAgICAg
ICByaWdodF9zdGFydF8ocmlnaHRfc3RhcnQpLAorICAgICAgICBhZGRzXygpLAorICAgICAgICBy
ZW1vdmVzXygpLAorICAgICAgICBjb21tb25fKCkge30KKworICB2b2lkIFB1c2hMaW5lKGNoYXIg
ZWRpdCwgY29uc3QgY2hhciogbGluZSkgeworICAgIHN3aXRjaCAoZWRpdCkgeworICAgICAgY2Fz
ZSAnICc6CisgICAgICAgICsrY29tbW9uXzsKKyAgICAgICAgRmx1c2hFZGl0cygpOworICAgICAg
ICBodW5rXy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoJyAnLCBsaW5lKSk7CisgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSAnLSc6CisgICAgICAgICsrcmVtb3Zlc187CisgICAgICAgIGh1bmtf
cmVtb3Zlc18ucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKCctJywgbGluZSkpOworICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgJysnOgorICAgICAgICArK2FkZHNfOworICAgICAgICBodW5rX2Fk
ZHNfLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcignKycsIGxpbmUpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICB9CisKKyAgdm9pZCBQcmludFRvKHN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBQ
cmludEhlYWRlcihvcyk7CisgICAgRmx1c2hFZGl0cygpOworICAgIGZvciAoc3RkOjpsaXN0PHN0
ZDo6cGFpcjxjaGFyLCBjb25zdCBjaGFyKj4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPQorICAgICAg
ICAgICAgIGh1bmtfLmJlZ2luKCk7CisgICAgICAgICBpdCAhPSBodW5rXy5lbmQoKTsgKytpdCkg
eworICAgICAgKm9zIDw8IGl0LT5maXJzdCA8PCBpdC0+c2Vjb25kIDw8ICJcbiI7CisgICAgfQor
ICB9CisKKyAgYm9vbCBoYXNfZWRpdHMoKSBjb25zdCB7IHJldHVybiBhZGRzXyB8fCByZW1vdmVz
XzsgfQorCisgcHJpdmF0ZToKKyAgdm9pZCBGbHVzaEVkaXRzKCkgeworICAgIGh1bmtfLnNwbGlj
ZShodW5rXy5lbmQoKSwgaHVua19yZW1vdmVzXyk7CisgICAgaHVua18uc3BsaWNlKGh1bmtfLmVu
ZCgpLCBodW5rX2FkZHNfKTsKKyAgfQorCisgIC8vIFByaW50IGEgdW5pZmllZCBkaWZmIGhlYWRl
ciBmb3Igb25lIGh1bmsuCisgIC8vIFRoZSBmb3JtYXQgaXMKKyAgLy8gICAiQEAgLTxsZWZ0X3N0
YXJ0Piw8bGVmdF9sZW5ndGg+ICs8cmlnaHRfc3RhcnQ+LDxyaWdodF9sZW5ndGg+IEBAIgorICAv
LyB3aGVyZSB0aGUgbGVmdC9yaWdodCBwYXJ0cyBhcmUgb21taXR0ZWQgaWYgdW5uZWNlc3Nhcnku
CisgIHZvaWQgUHJpbnRIZWFkZXIoc3RkOjpvc3RyZWFtKiBzcykgY29uc3QgeworICAgICpzcyA8
PCAiQEAgIjsKKyAgICBpZiAocmVtb3Zlc18pIHsKKyAgICAgICpzcyA8PCAiLSIgPDwgbGVmdF9z
dGFydF8gPDwgIiwiIDw8IChyZW1vdmVzXyArIGNvbW1vbl8pOworICAgIH0KKyAgICBpZiAocmVt
b3Zlc18gJiYgYWRkc18pIHsKKyAgICAgICpzcyA8PCAiICI7CisgICAgfQorICAgIGlmIChhZGRz
XykgeworICAgICAgKnNzIDw8ICIrIiA8PCByaWdodF9zdGFydF8gPDwgIiwiIDw8IChhZGRzXyAr
IGNvbW1vbl8pOworICAgIH0KKyAgICAqc3MgPDwgIiBAQFxuIjsKKyAgfQorCisgIHNpemVfdCBs
ZWZ0X3N0YXJ0XywgcmlnaHRfc3RhcnRfOworICBzaXplX3QgYWRkc18sIHJlbW92ZXNfLCBjb21t
b25fOworICBzdGQ6Omxpc3Q8c3RkOjpwYWlyPGNoYXIsIGNvbnN0IGNoYXIqPiA+IGh1bmtfLCBo
dW5rX2FkZHNfLCBodW5rX3JlbW92ZXNfOworfTsKKworfSAgLy8gbmFtZXNwYWNlCisKKy8vIENy
ZWF0ZSBhIGxpc3Qgb2YgZGlmZiBodW5rcyBpbiBVbmlmaWVkIGRpZmYgZm9ybWF0LgorLy8gRWFj
aCBodW5rIGhhcyBhIGhlYWRlciBnZW5lcmF0ZWQgYnkgUHJpbnRIZWFkZXIgYWJvdmUgcGx1cyBh
IGJvZHkgd2l0aAorLy8gbGluZXMgcHJlZml4ZWQgd2l0aCAnICcgZm9yIG5vIGNoYW5nZSwgJy0n
IGZvciBkZWxldGlvbiBhbmQgJysnIGZvcgorLy8gYWRkaXRpb24uCisvLyAnY29udGV4dCcgcmVw
cmVzZW50cyB0aGUgZGVzaXJlZCB1bmNoYW5nZWQgcHJlZml4L3N1ZmZpeCBhcm91bmQgdGhlIGRp
ZmYuCisvLyBJZiB0d28gaHVua3MgYXJlIGNsb3NlIGVub3VnaCB0aGF0IHRoZWlyIGNvbnRleHRz
IG92ZXJsYXAsIHRoZW4gdGhleSBhcmUKKy8vIGpvaW5lZCBpbnRvIG9uZSBodW5rLgorc3RkOjpz
dHJpbmcgQ3JlYXRlVW5pZmllZERpZmYoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBs
ZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+JiByaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBj
b250ZXh0KSB7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPEVkaXRUeXBlPiBlZGl0cyA9IENhbGN1bGF0
ZU9wdGltYWxFZGl0cyhsZWZ0LCByaWdodCk7CisKKyAgc2l6ZV90IGxfaSA9IDAsIHJfaSA9IDAs
IGVkaXRfaSA9IDA7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICB3aGlsZSAoZWRpdF9pIDwg
ZWRpdHMuc2l6ZSgpKSB7CisgICAgLy8gRmluZCBmaXJzdCBlZGl0LgorICAgIHdoaWxlIChlZGl0
X2kgPCBlZGl0cy5zaXplKCkgJiYgZWRpdHNbZWRpdF9pXSA9PSBrTWF0Y2gpIHsKKyAgICAgICsr
bF9pOworICAgICAgKytyX2k7CisgICAgICArK2VkaXRfaTsKKyAgICB9CisKKyAgICAvLyBGaW5k
IHRoZSBmaXJzdCBsaW5lIHRvIGluY2x1ZGUgaW4gdGhlIGh1bmsuCisgICAgY29uc3Qgc2l6ZV90
IHByZWZpeF9jb250ZXh0ID0gc3RkOjptaW4obF9pLCBjb250ZXh0KTsKKyAgICBIdW5rIGh1bmso
bF9pIC0gcHJlZml4X2NvbnRleHQgKyAxLCByX2kgLSBwcmVmaXhfY29udGV4dCArIDEpOworICAg
IGZvciAoc2l6ZV90IGkgPSBwcmVmaXhfY29udGV4dDsgaSA+IDA7IC0taSkgeworICAgICAgaHVu
ay5QdXNoTGluZSgnICcsIGxlZnRbbF9pIC0gaV0uY19zdHIoKSk7CisgICAgfQorCisgICAgLy8g
SXRlcmF0ZSB0aGUgZWRpdHMgdW50aWwgd2UgZm91bmQgZW5vdWdoIHN1ZmZpeCBmb3IgdGhlIGh1
bmsgb3IgdGhlIGlucHV0CisgICAgLy8gaXMgb3Zlci4KKyAgICBzaXplX3Qgbl9zdWZmaXggPSAw
OworICAgIGZvciAoOyBlZGl0X2kgPCBlZGl0cy5zaXplKCk7ICsrZWRpdF9pKSB7CisgICAgICBp
ZiAobl9zdWZmaXggPj0gY29udGV4dCkgeworICAgICAgICAvLyBDb250aW51ZSBvbmx5IGlmIHRo
ZSBuZXh0IGh1bmsgaXMgdmVyeSBjbG9zZS4KKyAgICAgICAgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+
Ojpjb25zdF9pdGVyYXRvciBpdCA9IGVkaXRzLmJlZ2luKCkgKyBlZGl0X2k7CisgICAgICAgIHdo
aWxlIChpdCAhPSBlZGl0cy5lbmQoKSAmJiAqaXQgPT0ga01hdGNoKSArK2l0OworICAgICAgICBp
ZiAoaXQgPT0gZWRpdHMuZW5kKCkgfHwgKGl0IC0gZWRpdHMuYmVnaW4oKSkgLSBlZGl0X2kgPj0g
Y29udGV4dCkgeworICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG5leHQgZWRpdCBvciBpdCBpcyB0
b28gZmFyIGF3YXkuCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKworICAg
ICAgRWRpdFR5cGUgZWRpdCA9IGVkaXRzW2VkaXRfaV07CisgICAgICAvLyBSZXNldCBjb3VudCB3
aGVuIGEgbm9uIG1hdGNoIGlzIGZvdW5kLgorICAgICAgbl9zdWZmaXggPSBlZGl0ID09IGtNYXRj
aCA/IG5fc3VmZml4ICsgMSA6IDA7CisKKyAgICAgIGlmIChlZGl0ID09IGtNYXRjaCB8fCBlZGl0
ID09IGtSZW1vdmUgfHwgZWRpdCA9PSBrUmVwbGFjZSkgeworICAgICAgICBodW5rLlB1c2hMaW5l
KGVkaXQgPT0ga01hdGNoID8gJyAnIDogJy0nLCBsZWZ0W2xfaV0uY19zdHIoKSk7CisgICAgICB9
CisgICAgICBpZiAoZWRpdCA9PSBrQWRkIHx8IGVkaXQgPT0ga1JlcGxhY2UpIHsKKyAgICAgICAg
aHVuay5QdXNoTGluZSgnKycsIHJpZ2h0W3JfaV0uY19zdHIoKSk7CisgICAgICB9CisKKyAgICAg
IC8vIEFkdmFuY2UgaW5kaWNlcywgZGVwZW5kaW5nIG9uIGVkaXQgdHlwZS4KKyAgICAgIGxfaSAr
PSBlZGl0ICE9IGtBZGQ7CisgICAgICByX2kgKz0gZWRpdCAhPSBrUmVtb3ZlOworICAgIH0KKwor
ICAgIGlmICghaHVuay5oYXNfZWRpdHMoKSkgeworICAgICAgLy8gV2UgYXJlIGRvbmUuIFdlIGRv
bid0IHdhbnQgdGhpcyBodW5rLgorICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaHVuay5Qcmlu
dFRvKCZzcyk7CisgIH0KKyAgcmV0dXJuIHNzLnN0cigpOworfQorCit9ICAvLyBuYW1lc3BhY2Ug
ZWRpdF9kaXN0YW5jZQorCituYW1lc3BhY2UgeworCisvLyBUaGUgc3RyaW5nIHJlcHJlc2VudGF0
aW9uIG9mIHRoZSB2YWx1ZXMgcmVjZWl2ZWQgaW4gRXFGYWlsdXJlKCkgYXJlIGFscmVhZHkKKy8v
IGVzY2FwZWQuIFNwbGl0IHRoZW0gb24gZXNjYXBlZCAnXG4nIGJvdW5kYXJpZXMuIExlYXZlIGFs
bCBvdGhlciBlc2NhcGVkCisvLyBjaGFyYWN0ZXJzIHRoZSBzYW1lLgorc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+IFNwbGl0RXNjYXBlZFN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7Cisg
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBsaW5lczsKKyAgc2l6ZV90IHN0YXJ0ID0gMCwgZW5k
ID0gc3RyLnNpemUoKTsKKyAgaWYgKGVuZCA+IDIgJiYgc3RyWzBdID09ICciJyAmJiBzdHJbZW5k
IC0gMV0gPT0gJyInKSB7CisgICAgKytzdGFydDsKKyAgICAtLWVuZDsKKyAgfQorICBib29sIGVz
Y2FwZWQgPSBmYWxzZTsKKyAgZm9yIChzaXplX3QgaSA9IHN0YXJ0OyBpICsgMSA8IGVuZDsgKytp
KSB7CisgICAgaWYgKGVzY2FwZWQpIHsKKyAgICAgIGVzY2FwZWQgPSBmYWxzZTsKKyAgICAgIGlm
IChzdHJbaV0gPT0gJ24nKSB7CisgICAgICAgIGxpbmVzLnB1c2hfYmFjayhzdHIuc3Vic3RyKHN0
YXJ0LCBpIC0gc3RhcnQgLSAxKSk7CisgICAgICAgIHN0YXJ0ID0gaSArIDE7CisgICAgICB9Cisg
ICAgfSBlbHNlIHsKKyAgICAgIGVzY2FwZWQgPSBzdHJbaV0gPT0gJ1xcJzsKKyAgICB9CisgIH0K
KyAgbGluZXMucHVzaF9iYWNrKHN0ci5zdWJzdHIoc3RhcnQsIGVuZCAtIHN0YXJ0KSk7CisgIHJl
dHVybiBsaW5lczsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKIC8vIENvbnN0cnVjdHMgYW5kIHJl
dHVybnMgdGhlIG1lc3NhZ2UgZm9yIGFuIGVxdWFsaXR5IGFzc2VydGlvbgogLy8gKGUuZy4gQVNT
RVJUX0VRLCBFWFBFQ1RfU1RSRVEsIGV0YykgZmFpbHVyZS4KIC8vCkBAIC0xMDAyLDQxICsxMzAx
LDUzIEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLyBhbmQgdGhlaXIgdmFsdWVzLCBhcyBzdHJp
bmdzLiAgRm9yIGV4YW1wbGUsIGZvciBBU1NFUlRfRVEoZm9vLCBiYXIpCiAvLyB3aGVyZSBmb28g
aXMgNSBhbmQgYmFyIGlzIDYsIHdlIGhhdmU6CiAvLwotLy8gICBleHBlY3RlZF9leHByZXNzaW9u
OiAiZm9vIgotLy8gICBhY3R1YWxfZXhwcmVzc2lvbjogICAiYmFyIgotLy8gICBleHBlY3RlZF92
YWx1ZTogICAgICAiNSIKLS8vICAgYWN0dWFsX3ZhbHVlOiAgICAgICAgIjYiCisvLyAgIGxoc19l
eHByZXNzaW9uOiAiZm9vIgorLy8gICByaHNfZXhwcmVzc2lvbjogImJhciIKKy8vICAgbGhzX3Zh
bHVlOiAgICAgICI1IgorLy8gICByaHNfdmFsdWU6ICAgICAgIjYiCiAvLwogLy8gVGhlIGlnbm9y
aW5nX2Nhc2UgcGFyYW1ldGVyIGlzIHRydWUgaWZmIHRoZSBhc3NlcnRpb24gaXMgYQotLy8gKl9T
VFJDQVNFRVEqLiAgV2hlbiBpdCdzIHRydWUsIHRoZSBzdHJpbmcgIiAoaWdub3JpbmcgY2FzZSki
IHdpbGwKKy8vICpfU1RSQ0FTRUVRKi4gIFdoZW4gaXQncyB0cnVlLCB0aGUgc3RyaW5nICJJZ25v
cmluZyBjYXNlIiB3aWxsCiAvLyBiZSBpbnNlcnRlZCBpbnRvIHRoZSBtZXNzYWdlLgotQXNzZXJ0
aW9uUmVzdWx0IEVxRmFpbHVyZShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBleHBlY3RlZF92YWx1ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBhY3R1YWxfdmFsdWUsCitBc3Nl
cnRpb25SZXN1bHQgRXFGYWlsdXJlKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxoc192YWx1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHJoc192YWx1ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBpZ25vcmluZ19jYXNlKSB7CiAgIE1lc3NhZ2UgbXNnOwot
ICBtc2cgPDwgIlZhbHVlIG9mOiAiIDw8IGFjdHVhbF9leHByZXNzaW9uOwotICBpZiAoYWN0dWFs
X3ZhbHVlICE9IGFjdHVhbF9leHByZXNzaW9uKSB7Ci0gICAgbXNnIDw8ICJcbiAgQWN0dWFsOiAi
IDw8IGFjdHVhbF92YWx1ZTsKKyAgbXNnIDw8ICIgICAgICBFeHBlY3RlZDogIiA8PCBsaHNfZXhw
cmVzc2lvbjsKKyAgaWYgKGxoc192YWx1ZSAhPSBsaHNfZXhwcmVzc2lvbikgeworICAgIG1zZyA8
PCAiXG4gICAgICBXaGljaCBpczogIiA8PCBsaHNfdmFsdWU7CisgIH0KKyAgbXNnIDw8ICJcblRv
IGJlIGVxdWFsIHRvOiAiIDw8IHJoc19leHByZXNzaW9uOworICBpZiAocmhzX3ZhbHVlICE9IHJo
c19leHByZXNzaW9uKSB7CisgICAgbXNnIDw8ICJcbiAgICAgIFdoaWNoIGlzOiAiIDw8IHJoc192
YWx1ZTsKICAgfQogCi0gIG1zZyA8PCAiXG5FeHBlY3RlZDogIiA8PCBleHBlY3RlZF9leHByZXNz
aW9uOwogICBpZiAoaWdub3JpbmdfY2FzZSkgewotICAgIG1zZyA8PCAiIChpZ25vcmluZyBjYXNl
KSI7CisgICAgbXNnIDw8ICJcbklnbm9yaW5nIGNhc2UiOwogICB9Ci0gIGlmIChleHBlY3RlZF92
YWx1ZSAhPSBleHBlY3RlZF9leHByZXNzaW9uKSB7Ci0gICAgbXNnIDw8ICJcbldoaWNoIGlzOiAi
IDw8IGV4cGVjdGVkX3ZhbHVlOworCisgIGlmICghbGhzX3ZhbHVlLmVtcHR5KCkgJiYgIXJoc192
YWx1ZS5lbXB0eSgpKSB7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGxoc19s
aW5lcyA9CisgICAgICAgIFNwbGl0RXNjYXBlZFN0cmluZyhsaHNfdmFsdWUpOworICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiByaHNfbGluZXMgPQorICAgICAgICBTcGxpdEVzY2Fw
ZWRTdHJpbmcocmhzX3ZhbHVlKTsKKyAgICBpZiAobGhzX2xpbmVzLnNpemUoKSA+IDEgfHwgcmhz
X2xpbmVzLnNpemUoKSA+IDEpIHsKKyAgICAgIG1zZyA8PCAiXG5XaXRoIGRpZmY6XG4iCisgICAg
ICAgICAgPDwgZWRpdF9kaXN0YW5jZTo6Q3JlYXRlVW5pZmllZERpZmYobGhzX2xpbmVzLCByaHNf
bGluZXMpOworICAgIH0KICAgfQogCi0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7Cisg
IHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgbXNnOwogfQogCiAvLyBDb25zdHJ1Y3RzIGEg
ZmFpbHVyZSBtZXNzYWdlIGZvciBCb29sZWFuIGFzc2VydGlvbnMgc3VjaCBhcyBFWFBFQ1RfVFJV
RS4KLVN0cmluZyBHZXRCb29sQXNzZXJ0aW9uRmFpbHVyZU1lc3NhZ2UoY29uc3QgQXNzZXJ0aW9u
UmVzdWx0JiBhc3NlcnRpb25fcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBleHByZXNzaW9uX3RleHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9wcmVkaWNhdGVfdmFsdWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVk
X3ByZWRpY2F0ZV92YWx1ZSkgeworc3RkOjpzdHJpbmcgR2V0Qm9vbEFzc2VydGlvbkZhaWx1cmVN
ZXNzYWdlKAorICAgIGNvbnN0IEFzc2VydGlvblJlc3VsdCYgYXNzZXJ0aW9uX3Jlc3VsdCwKKyAg
ICBjb25zdCBjaGFyKiBleHByZXNzaW9uX3RleHQsCisgICAgY29uc3QgY2hhciogYWN0dWFsX3By
ZWRpY2F0ZV92YWx1ZSwKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZF9wcmVkaWNhdGVfdmFsdWUp
IHsKICAgY29uc3QgY2hhciogYWN0dWFsX21lc3NhZ2UgPSBhc3NlcnRpb25fcmVzdWx0Lm1lc3Nh
Z2UoKTsKICAgTWVzc2FnZSBtc2c7CiAgIG1zZyA8PCAiVmFsdWUgb2Y6ICIgPDwgZXhwcmVzc2lv
bl90ZXh0CkBAIC0xMDU5LDEzICsxMzcwLDEyIEBAIEFzc2VydGlvblJlc3VsdCBEb3VibGVOZWFy
UHJlZEZvcm1hdChjb25zdCBjaGFyKiBleHByMSwKIAogICAvLyBUT0RPKHdhbik6IGRvIG5vdCBw
cmludCB0aGUgdmFsdWUgb2YgYW4gZXhwcmVzc2lvbiBpZiBpdCdzCiAgIC8vIGFscmVhZHkgYSBs
aXRlcmFsLgotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8ICJUaGUgZGlmZmVyZW5jZSBiZXR3ZWVu
ICIgPDwgZXhwcjEgPDwgIiBhbmQgIiA8PCBleHByMgorICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVy
ZSgpCisgICAgICA8PCAiVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAiIDw8IGV4cHIxIDw8ICIgYW5k
ICIgPDwgZXhwcjIKICAgICAgIDw8ICIgaXMgIiA8PCBkaWZmIDw8ICIsIHdoaWNoIGV4Y2VlZHMg
IiA8PCBhYnNfZXJyb3JfZXhwciA8PCAiLCB3aGVyZVxuIgogICAgICAgPDwgZXhwcjEgPDwgIiBl
dmFsdWF0ZXMgdG8gIiA8PCB2YWwxIDw8ICIsXG4iCiAgICAgICA8PCBleHByMiA8PCAiIGV2YWx1
YXRlcyB0byAiIDw8IHZhbDIgPDwgIiwgYW5kXG4iCiAgICAgICA8PCBhYnNfZXJyb3JfZXhwciA8
PCAiIGV2YWx1YXRlcyB0byAiIDw8IGFic19lcnJvciA8PCAiLiI7Ci0gIHJldHVybiBBc3NlcnRp
b25GYWlsdXJlKG1zZyk7CiB9CiAKIApAQCAtMTA5MCwyMCArMTQwMCwxOCBAQCBBc3NlcnRpb25S
ZXN1bHQgRmxvYXRpbmdQb2ludExFKGNvbnN0IGNoYXIqIGV4cHIxLAogICAvLyB2YWwyIGlzIE5h
TiwgYXMgdGhlIElFRUUgZmxvYXRpbmctcG9pbnQgc3RhbmRhcmQgcmVxdWlyZXMgdGhhdAogICAv
LyBhbnkgcHJlZGljYXRlIGludm9sdmluZyBhIE5hTiBtdXN0IHJldHVybiBmYWxzZS4KIAotICBT
dHJTdHJlYW0gdmFsMV9zczsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSB2YWwxX3NzOwogICB2YWwx
X3NzIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8UmF3VHlwZT46OmRp
Z2l0czEwICsgMikKICAgICAgICAgICA8PCB2YWwxOwogCi0gIFN0clN0cmVhbSB2YWwyX3NzOwor
ICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHZhbDJfc3M7CiAgIHZhbDJfc3MgPDwgc3RkOjpzZXRwcmVj
aXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxSYXdUeXBlPjo6ZGlnaXRzMTAgKyAyKQogICAgICAg
ICAgIDw8IHZhbDI7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCAiRXhwZWN0ZWQ6ICgiIDw8
IGV4cHIxIDw8ICIpIDw9ICgiIDw8IGV4cHIyIDw8ICIpXG4iCi0gICAgICA8PCAiICBBY3R1YWw6
ICIgPDwgU3RyU3RyZWFtVG9TdHJpbmcoJnZhbDFfc3MpIDw8ICIgdnMgIgotICAgICAgPDwgU3Ry
U3RyZWFtVG9TdHJpbmcoJnZhbDJfc3MpOwotCi0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1z
Zyk7CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8ICJFeHBlY3RlZDogKCIg
PDwgZXhwcjEgPDwgIikgPD0gKCIgPDwgZXhwcjIgPDwgIilcbiIKKyAgICAgIDw8ICIgIEFjdHVh
bDogIiA8PCBTdHJpbmdTdHJlYW1Ub1N0cmluZygmdmFsMV9zcykgPDwgIiB2cyAiCisgICAgICA8
PCBTdHJpbmdTdHJlYW1Ub1N0cmluZygmdmFsMl9zcyk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBp
bnRlcm5hbApAQCAtMTEyNiwxOCArMTQzNCwxOCBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogCiAv
LyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fRVEgd2l0aCBpbnQgb3Ig
ZW51bQogLy8gYXJndW1lbnRzLgotQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRKGNvbnN0IGNo
YXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
QmlnZ2VzdEludCBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0
SW50IGFjdHVhbCkgewotICBpZiAoZXhwZWN0ZWQgPT0gYWN0dWFsKSB7CitBc3NlcnRpb25SZXN1
bHQgQ21wSGVscGVyRVEoY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQmlnZ2VzdEludCBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQmlnZ2VzdEludCByaHMpIHsKKyAgaWYgKGxocyA9PSByaHMpIHsKICAgICByZXR1cm4gQXNz
ZXJ0aW9uU3VjY2VzcygpOwogICB9CiAKLSAgcmV0dXJuIEVxRmFpbHVyZShleHBlY3RlZF9leHBy
ZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAg
ICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShleHBlY3RlZCwgYWN0
dWFsKSwKLSAgICAgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2UoYWN0dWFsLCBleHBlY3RlZCksCisgIHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Npb24s
CisgICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAg
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKGxocywgcmhzKSwKKyAgICAgICAgICAg
ICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocmhzLCBsaHMpLAogICAg
ICAgICAgICAgICAgICAgIGZhbHNlKTsKIH0KIApAQCAtMTE1MCwxMSArMTQ1OCwxMCBAQCBBc3Nl
cnRpb25SZXN1bHQgQ21wSGVscGVyIyNvcF9uYW1lKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBj
aGFyKiBleHByMiwgXAogICBpZiAodmFsMSBvcCB2YWwyKSB7XAogICAgIHJldHVybiBBc3NlcnRp
b25TdWNjZXNzKCk7XAogICB9IGVsc2Uge1wKLSAgICBNZXNzYWdlIG1zZztcCi0gICAgbXNnIDw8
ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgIiAjb3AgIiAoIiA8PCBleHByMlwKKyAgICBy
ZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIFwKKyAgICAgICAgPDwgIkV4cGVjdGVkOiAoIiA8PCBl
eHByMSA8PCAiKSAiICNvcCAiICgiIDw8IGV4cHIyXAogICAgICAgICA8PCAiKSwgYWN0dWFsOiAi
IDw8IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSh2YWwxLCB2YWwyKVwKICAgICAg
ICAgPDwgIiB2cyAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSh2YWwyLCB2
YWwxKTtcCi0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTtcCiAgIH1cCiB9CiAKQEAg
LTExNzcsMzQgKzE0ODQsMzQgQEAgR1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhHVCwgPiApCiAjdW5k
ZWYgR1RFU1RfSU1QTF9DTVBfSEVMUEVSXwogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7
QVNTRVJUfEVYUEVDVH1fU1RSRVEuCi1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29u
c3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWwpIHsKLSAgaWYgKFN0cmluZzo6Q1N0cmluZ0VxdWFs
cyhleHBlY3RlZCwgYWN0dWFsKSkgeworQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNv
bnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiByaHMpIHsKKyAgaWYgKFN0cmluZzo6Q1N0cmluZ0VxdWFscyhsaHMsIHJocykpIHsK
ICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9CiAKLSAgcmV0dXJuIEVxRmFpbHVy
ZShleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIGFjdHVhbF9leHByZXNz
aW9uLAotICAgICAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQoZXhwZWN0
ZWQpLAotICAgICAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQoYWN0dWFs
KSwKKyAgcmV0dXJuIEVxRmFpbHVyZShsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAg
ICByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKGxocyks
CisgICAgICAgICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhyaHMpLAogICAgICAgICAgICAgICAg
ICAgIGZhbHNlKTsKIH0KIAogLy8gVGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBF
Q1R9X1NUUkNBU0VFUS4KLUFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJDQVNFRVEoY29uc3Qg
Y2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWwpIHsKLSAgaWYgKFN0cmluZzo6Q2Fz
ZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFscyhleHBlY3RlZCwgYWN0dWFsKSkgeworQXNzZXJ0aW9u
UmVzdWx0IENtcEhlbHBlclNUUkNBU0VFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Np
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxocywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzKSB7Cisg
IGlmIChTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMobGhzLCByaHMpKSB7CiAg
ICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQogCi0gIHJldHVybiBFcUZhaWx1cmUo
ZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBhY3R1YWxfZXhwcmVzc2lv
biwKLSAgICAgICAgICAgICAgICAgICBTdHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKGV4cGVjdGVk
KSwKLSAgICAgICAgICAgICAgICAgICBTdHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKGFjdHVhbCks
CisgIHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAg
cmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhsaHMpLAor
ICAgICAgICAgICAgICAgICAgIFByaW50VG9TdHJpbmcocmhzKSwKICAgICAgICAgICAgICAgICAg
ICB0cnVlKTsKIH0KIApAQCAtMTIxNiwxMSArMTUyMyw5IEBAIEFzc2VydGlvblJlc3VsdCBDbXBI
ZWxwZXJTVFJORShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAogICBpZiAoIVN0cmluZzo6Q1N0
cmluZ0VxdWFscyhzMSwgczIpKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAg
fSBlbHNlIHsKLSAgICBNZXNzYWdlIG1zZzsKLSAgICBtc2cgPDwgIkV4cGVjdGVkOiAoIiA8PCBz
MV9leHByZXNzaW9uIDw8ICIpICE9ICgiCi0gICAgICAgIDw8IHMyX2V4cHJlc3Npb24gPDwgIiks
IGFjdHVhbDogXCIiCi0gICAgICAgIDw8IHMxIDw8ICJcIiB2cyBcIiIgPDwgczIgPDwgIlwiIjsK
LSAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICAgIHJldHVybiBBc3NlcnRpb25G
YWlsdXJlKCkgPDwgIkV4cGVjdGVkOiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzMl9leHByZXNzaW9uIDw8ICIpLCBhY3R1
YWw6IFwiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgczEgPDwgIlwiIHZzIFwi
IiA8PCBzMiA8PCAiXCIiOwogICB9CiB9CiAKQEAgLTEyMzIsMTEgKzE1MzcsMTAgQEAgQXNzZXJ0
aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VORShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAog
ICBpZiAoIVN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFscyhzMSwgczIpKSB7CiAg
ICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfSBlbHNlIHsKLSAgICBNZXNzYWdlIG1z
ZzsKLSAgICBtc2cgPDwgIkV4cGVjdGVkOiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgi
CisgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgICA8PCAiRXhwZWN0ZWQ6ICgi
IDw8IHMxX2V4cHJlc3Npb24gPDwgIikgIT0gKCIKICAgICAgICAgPDwgczJfZXhwcmVzc2lvbiA8
PCAiKSAoaWdub3JpbmcgY2FzZSksIGFjdHVhbDogXCIiCiAgICAgICAgIDw8IHMxIDw8ICJcIiB2
cyBcIiIgPDwgczIgPDwgIlwiIjsKLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwog
ICB9CiB9CiAKQEAgLTEyODUsMTMgKzE1ODksMTIgQEAgQXNzZXJ0aW9uUmVzdWx0IElzU3Vic3Ry
aW5nSW1wbCgKIAogICBjb25zdCBib29sIGlzX3dpZGVfc3RyaW5nID0gc2l6ZW9mKG5lZWRsZVsw
XSkgPiAxOwogICBjb25zdCBjaGFyKiBjb25zdCBiZWdpbl9zdHJpbmdfcXVvdGUgPSBpc193aWRl
X3N0cmluZyA/ICJMXCIiIDogIlwiIjsKLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoCi0gICAg
ICBNZXNzYWdlKCkKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKQogICAgICAgPDwgIlZhbHVl
IG9mOiAiIDw8IG5lZWRsZV9leHByIDw8ICJcbiIKICAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBi
ZWdpbl9zdHJpbmdfcXVvdGUgPDwgbmVlZGxlIDw8ICJcIlxuIgogICAgICAgPDwgIkV4cGVjdGVk
OiAiIDw8IChleHBlY3RlZF90b19iZV9zdWJzdHJpbmcgPyAiIiA6ICJub3QgIikKICAgICAgIDw8
ICJhIHN1YnN0cmluZyBvZiAiIDw8IGhheXN0YWNrX2V4cHIgPDwgIlxuIgotICAgICAgPDwgIldo
aWNoIGlzOiAiIDw8IGJlZ2luX3N0cmluZ19xdW90ZSA8PCBoYXlzdGFjayA8PCAiXCIiKTsKKyAg
ICAgIDw8ICJXaGljaCBpczogIiA8PCBiZWdpbl9zdHJpbmdfcXVvdGUgPDwgaGF5c3RhY2sgPDwg
IlwiIjsKIH0KIAogfSAgLy8gbmFtZXNwYWNlCkBAIC0xMzYwLDE2ICsxNjYzLDE5IEBAIG5hbWVz
cGFjZSB7CiBBc3NlcnRpb25SZXN1bHQgSFJFU1VMVEZhaWx1cmVIZWxwZXIoY29uc3QgY2hhciog
ZXhwciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBl
eHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGhyKSB7
ICAvLyBOT0xJTlQKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBpZiBHVEVTVF9PU19X
SU5ET1dTX01PQklMRQorCiAgIC8vIFdpbmRvd3MgQ0UgZG9lc24ndCBzdXBwb3J0IEZvcm1hdE1l
c3NhZ2UuCiAgIGNvbnN0IGNoYXIgZXJyb3JfdGV4dFtdID0gIiI7Ci0jZWxzZQorCisjIGVsc2UK
KwogICAvLyBMb29rcyB1cCB0aGUgaHVtYW4tcmVhZGFibGUgc3lzdGVtIG1lc3NhZ2UgZm9yIHRo
ZSBIUkVTVUxUIGNvZGUKICAgLy8gYW5kIHNpbmNlIHdlJ3JlIG5vdCBwYXNzaW5nIGFueSBwYXJh
bXMgdG8gRm9ybWF0TWVzc2FnZSwgd2UgZG9uJ3QKICAgLy8gd2FudCBpbnNlcnRzIGV4cGFuZGVk
LgogICBjb25zdCBEV09SRCBrRmxhZ3MgPSBGT1JNQVRfTUVTU0FHRV9GUk9NX1NZU1RFTSB8CiAg
ICAgICAgICAgICAgICAgICAgICAgIEZPUk1BVF9NRVNTQUdFX0lHTk9SRV9JTlNFUlRTOwotICBj
b25zdCBEV09SRCBrQnVmU2l6ZSA9IDQwOTY7ICAvLyBTdHJpbmc6OkZvcm1hdCBjYW4ndCBleGNl
ZWQgdGhpcyBsZW5ndGguCisgIGNvbnN0IERXT1JEIGtCdWZTaXplID0gNDA5NjsKICAgLy8gR2V0
cyB0aGUgc3lzdGVtJ3MgaHVtYW4gcmVhZGFibGUgbWVzc2FnZSBzdHJpbmcgZm9yIHRoaXMgSFJF
U1VMVC4KICAgY2hhciBlcnJvcl90ZXh0W2tCdWZTaXplXSA9IHsgJ1wwJyB9OwogICBEV09SRCBt
ZXNzYWdlX2xlbmd0aCA9IDo6Rm9ybWF0TWVzc2FnZUEoa0ZsYWdzLApAQCAtMTM3OSwxOSArMTY4
NSwxOCBAQCBBc3NlcnRpb25SZXN1bHQgSFJFU1VMVEZhaWx1cmVIZWxwZXIoY29uc3QgY2hhciog
ZXhwciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3Rl
eHQsICAvLyBvdXRwdXQgYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrQnVmU2l6ZSwgIC8vIGJ1ZiBzaXplCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOVUxMKTsgIC8vIG5vIGFyZ3VtZW50cyBmb3IgaW5zZXJ0cwotICAv
LyBUcmltcyB0YWlsaW5nIHdoaXRlIHNwYWNlIChGb3JtYXRNZXNzYWdlIGxlYXZlcyBhIHRyYWls
aW5nIGNyLWxmKQotICBmb3IgKDsgbWVzc2FnZV9sZW5ndGggJiYgaXNzcGFjZShlcnJvcl90ZXh0
W21lc3NhZ2VfbGVuZ3RoIC0gMV0pOworICAvLyBUcmltcyB0YWlsaW5nIHdoaXRlIHNwYWNlIChG
b3JtYXRNZXNzYWdlIGxlYXZlcyBhIHRyYWlsaW5nIENSLUxGKQorICBmb3IgKDsgbWVzc2FnZV9s
ZW5ndGggJiYgSXNTcGFjZShlcnJvcl90ZXh0W21lc3NhZ2VfbGVuZ3RoIC0gMV0pOwogICAgICAg
ICAgIC0tbWVzc2FnZV9sZW5ndGgpIHsKICAgICBlcnJvcl90ZXh0W21lc3NhZ2VfbGVuZ3RoIC0g
MV0gPSAnXDAnOwogICB9Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAKLSAg
Y29uc3QgU3RyaW5nIGVycm9yX2hleChTdHJpbmc6OkZvcm1hdCgiMHglMDhYICIsIGhyKSk7Ci0g
IE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgIkV4cGVjdGVkOiAiIDw8IGV4cHIgPDwgIiAiIDw8IGV4
cGVjdGVkIDw8ICIuXG4iCi0gICAgICA8PCAiICBBY3R1YWw6ICIgPDwgZXJyb3JfaGV4IDw8IGVy
cm9yX3RleHQgPDwgIlxuIjsKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAK
LSAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICBjb25zdCBzdGQ6
OnN0cmluZyBlcnJvcl9oZXgoIjB4IiArIFN0cmluZzo6Rm9ybWF0SGV4SW50KGhyKSk7CisgIHJl
dHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwgIkV4cGVjdGVkOiAi
IDw8IGV4cHIgPDwgIiAiIDw8IGV4cGVjdGVkIDw8ICIuXG4iCisgICAgICA8PCAiICBBY3R1YWw6
ICIgPDwgZXJyb3JfaGV4IDw8ICIgIiA8PCBlcnJvcl90ZXh0IDw8ICJcbiI7CiB9CiAKIH0gIC8v
IG5hbWVzcGFjZQpAQCAtMTQ0OCwxMiArMTc1MywxNSBAQCBpbmxpbmUgVUludDMyIENob3BMb3dC
aXRzKFVJbnQzMiogYml0cywgaW50IG4pIHsKIC8vIENvbnZlcnRzIGEgVW5pY29kZSBjb2RlIHBv
aW50IHRvIGEgbmFycm93IHN0cmluZyBpbiBVVEYtOCBlbmNvZGluZy4KIC8vIGNvZGVfcG9pbnQg
cGFyYW1ldGVyIGlzIG9mIHR5cGUgVUludDMyIGJlY2F1c2Ugd2NoYXJfdCBtYXkgbm90IGJlCiAv
LyB3aWRlIGVub3VnaCB0byBjb250YWluIGEgY29kZSBwb2ludC4KLS8vIFRoZSBvdXRwdXQgYnVm
ZmVyIHN0ciBtdXN0IGNvbnRhaW50IGF0IGxlYXN0IDMyIGNoYXJhY3RlcnMuCi0vLyBUaGUgZnVu
Y3Rpb24gcmV0dXJucyB0aGUgYWRkcmVzcyBvZiB0aGUgb3V0cHV0IGJ1ZmZlci4KIC8vIElmIHRo
ZSBjb2RlX3BvaW50IGlzIG5vdCBhIHZhbGlkIFVuaWNvZGUgY29kZSBwb2ludAotLy8gKGkuZS4g
b3V0c2lkZSBvZiBVbmljb2RlIHJhbmdlIFUrMCB0byBVKzEwRkZGRikgaXQgd2lsbCBiZSBvdXRw
dXQKLS8vIGFzICcoSW52YWxpZCBVbmljb2RlIDB4WFhYWFhYWFgpJy4KLWNoYXIqIENvZGVQb2lu
dFRvVXRmOChVSW50MzIgY29kZV9wb2ludCwgY2hhciogc3RyKSB7CisvLyAoaS5lLiBvdXRzaWRl
IG9mIFVuaWNvZGUgcmFuZ2UgVSswIHRvIFUrMTBGRkZGKSBpdCB3aWxsIGJlIGNvbnZlcnRlZAor
Ly8gdG8gIihJbnZhbGlkIFVuaWNvZGUgMHhYWFhYWFhYWCkiLgorc3RkOjpzdHJpbmcgQ29kZVBv
aW50VG9VdGY4KFVJbnQzMiBjb2RlX3BvaW50KSB7CisgIGlmIChjb2RlX3BvaW50ID4ga01heENv
ZGVQb2ludDQpIHsKKyAgICByZXR1cm4gIihJbnZhbGlkIFVuaWNvZGUgMHgiICsgU3RyaW5nOjpG
b3JtYXRIZXhJbnQoY29kZV9wb2ludCkgKyAiKSI7CisgIH0KKworICBjaGFyIHN0cls1XTsgIC8v
IEJpZyBlbm91Z2ggZm9yIHRoZSBsYXJnZXN0IHZhbGlkIGNvZGUgcG9pbnQuCiAgIGlmIChjb2Rl
X3BvaW50IDw9IGtNYXhDb2RlUG9pbnQxKSB7CiAgICAgc3RyWzFdID0gJ1wwJzsKICAgICBzdHJb
MF0gPSBzdGF0aWNfY2FzdDxjaGFyPihjb2RlX3BvaW50KTsgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIDB4eHh4eHh4CkBAIC0xNDY2LDIyICsxNzc0LDEyIEBAIGNoYXIqIENvZGVQb2ludFRv
VXRmOChVSW50MzIgY29kZV9wb2ludCwgY2hhciogc3RyKSB7CiAgICAgc3RyWzJdID0gc3RhdGlj
X2Nhc3Q8Y2hhcj4oMHg4MCB8IENob3BMb3dCaXRzKCZjb2RlX3BvaW50LCA2KSk7ICAvLyAxMHh4
eHh4eAogICAgIHN0clsxXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgfCBDaG9wTG93Qml0cygm
Y29kZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKICAgICBzdHJbMF0gPSBzdGF0aWNfY2FzdDxj
aGFyPigweEUwIHwgY29kZV9wb2ludCk7ICAgICAgICAgICAgICAgICAgIC8vIDExMTB4eHh4Ci0g
IH0gZWxzZSBpZiAoY29kZV9wb2ludCA8PSBrTWF4Q29kZVBvaW50NCkgeworICB9IGVsc2UgeyAg
Ly8gY29kZV9wb2ludCA8PSBrTWF4Q29kZVBvaW50NAogICAgIHN0cls0XSA9ICdcMCc7CiAgICAg
c3RyWzNdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHg4MCB8IENob3BMb3dCaXRzKCZjb2RlX3BvaW50
LCA2KSk7ICAvLyAxMHh4eHh4eAogICAgIHN0clsyXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAg
fCBDaG9wTG93Qml0cygmY29kZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKICAgICBzdHJbMV0g
PSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVfcG9pbnQsIDYpKTsg
IC8vIDEweHh4eHh4CiAgICAgc3RyWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHhGMCB8IGNvZGVf
cG9pbnQpOyAgICAgICAgICAgICAgICAgICAvLyAxMTExMHh4eAotICB9IGVsc2UgewotICAgIC8v
IFRoZSBsb25nZXN0IHN0cmluZyBTdHJpbmc6OkZvcm1hdCBjYW4gcHJvZHVjZSB3aGVuIGludm9r
ZWQKLSAgICAvLyB3aXRoIHRoZXNlIHBhcmFtZXRlcnMgaXMgMjggY2hhcmFjdGVyIGxvbmcgKG5v
dCBpbmNsdWRpbmcKLSAgICAvLyB0aGUgdGVybWluYXRpbmcgbnVsIGNoYXJhY3RlcikuIFdlIGFy
ZSBhc2tpbmcgZm9yIDMyIGNoYXJhY3RlcgotICAgIC8vIGJ1ZmZlciBqdXN0IGluIGNhc2UuIFRo
aXMgaXMgYWxzbyBlbm91Z2ggZm9yIHN0cm5jcHkgdG8KLSAgICAvLyBudWxsLXRlcm1pbmF0ZSB0
aGUgZGVzdGluYXRpb24gc3RyaW5nLgotICAgIHBvc2l4OjpTdHJOQ3B5KAotICAgICAgICBzdHIs
IFN0cmluZzo6Rm9ybWF0KCIoSW52YWxpZCBVbmljb2RlIDB4JVgpIiwgY29kZV9wb2ludCkuY19z
dHIoKSwgMzIpOwotICAgIHN0clszMV0gPSAnXDAnOyAgLy8gTWFrZXMgc3VyZSBubyBjaGFuZ2Ug
aW4gdGhlIGZvcm1hdCB0byBzdHJuY3B5IGxlYXZlcwotICAgICAgICAgICAgICAgICAgICAgLy8g
dGhlIHJlc3VsdCB1bnRlcm1pbmF0ZWQuCiAgIH0KICAgcmV0dXJuIHN0cjsKIH0KQEAgLTE1MjIs
MTEgKzE4MjAsMTEgQEAgaW5saW5lIFVJbnQzMiBDcmVhdGVDb2RlUG9pbnRGcm9tVXRmMTZTdXJy
b2dhdGVQYWlyKHdjaGFyX3QgZmlyc3QsCiAvLyBhcyAnKEludmFsaWQgVW5pY29kZSAweFhYWFhY
WFhYKScuIElmIHRoZSBzdHJpbmcgaXMgaW4gVVRGMTYgZW5jb2RpbmcKIC8vIGFuZCBjb250YWlu
cyBpbnZhbGlkIFVURi0xNiBzdXJyb2dhdGUgcGFpcnMsIHZhbHVlcyBpbiB0aG9zZSBwYWlycwog
Ly8gd2lsbCBiZSBlbmNvZGVkIGFzIGluZGl2aWR1YWwgVW5pY29kZSBjaGFyYWN0ZXJzIGZyb20g
QmFzaWMgTm9ybWFsIFBsYW5lLgotU3RyaW5nIFdpZGVTdHJpbmdUb1V0ZjgoY29uc3Qgd2NoYXJf
dCogc3RyLCBpbnQgbnVtX2NoYXJzKSB7CitzdGQ6OnN0cmluZyBXaWRlU3RyaW5nVG9VdGY4KGNv
bnN0IHdjaGFyX3QqIHN0ciwgaW50IG51bV9jaGFycykgewogICBpZiAobnVtX2NoYXJzID09IC0x
KQogICAgIG51bV9jaGFycyA9IHN0YXRpY19jYXN0PGludD4od2NzbGVuKHN0cikpOwogCi0gIFN0
clN0cmVhbSBzdHJlYW07CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOwogICBmb3IgKGlu
dCBpID0gMDsgaSA8IG51bV9jaGFyczsgKytpKSB7CiAgICAgVUludDMyIHVuaWNvZGVfY29kZV9w
b2ludDsKIApAQCAtMTU0MCwyNyArMTgzOCwxNyBAQCBTdHJpbmcgV2lkZVN0cmluZ1RvVXRmOChj
b25zdCB3Y2hhcl90KiBzdHIsIGludCBudW1fY2hhcnMpIHsKICAgICAgIHVuaWNvZGVfY29kZV9w
b2ludCA9IHN0YXRpY19jYXN0PFVJbnQzMj4oc3RyW2ldKTsKICAgICB9CiAKLSAgICBjaGFyIGJ1
ZmZlclszMl07ICAvLyBDb2RlUG9pbnRUb1V0ZjggcmVxdWlyZXMgYSBidWZmZXIgdGhpcyBiaWcu
Ci0gICAgc3RyZWFtIDw8IENvZGVQb2ludFRvVXRmOCh1bmljb2RlX2NvZGVfcG9pbnQsIGJ1ZmZl
cik7CisgICAgc3RyZWFtIDw8IENvZGVQb2ludFRvVXRmOCh1bmljb2RlX2NvZGVfcG9pbnQpOwog
ICB9Ci0gIHJldHVybiBTdHJTdHJlYW1Ub1N0cmluZygmc3RyZWFtKTsKKyAgcmV0dXJuIFN0cmlu
Z1N0cmVhbVRvU3RyaW5nKCZzdHJlYW0pOwogfQogCi0vLyBDb252ZXJ0cyBhIHdpZGUgQyBzdHJp
bmcgdG8gYSBTdHJpbmcgdXNpbmcgdGhlIFVURi04IGVuY29kaW5nLgorLy8gQ29udmVydHMgYSB3
aWRlIEMgc3RyaW5nIHRvIGFuIHN0ZDo6c3RyaW5nIHVzaW5nIHRoZSBVVEYtOCBlbmNvZGluZy4K
IC8vIE5VTEwgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gIihudWxsKSIuCi1TdHJpbmcgU3RyaW5nOjpT
aG93V2lkZUNTdHJpbmcoY29uc3Qgd2NoYXJfdCAqIHdpZGVfY19zdHIpIHsKLSAgaWYgKHdpZGVf
Y19zdHIgPT0gTlVMTCkgcmV0dXJuIFN0cmluZygiKG51bGwpIik7Ci0KLSAgcmV0dXJuIFN0cmlu
ZyhpbnRlcm5hbDo6V2lkZVN0cmluZ1RvVXRmOCh3aWRlX2Nfc3RyLCAtMSkuY19zdHIoKSk7Ci19
Ci0KLS8vIFNpbWlsYXIgdG8gU2hvd1dpZGVDU3RyaW5nKCksIGV4Y2VwdCB0aGF0IHRoaXMgZnVu
Y3Rpb24gZW5jbG9zZXMKLS8vIHRoZSBjb252ZXJ0ZWQgc3RyaW5nIGluIGRvdWJsZSBxdW90ZXMu
Ci1TdHJpbmcgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoY29uc3Qgd2NoYXJfdCogd2lk
ZV9jX3N0cikgewotICBpZiAod2lkZV9jX3N0ciA9PSBOVUxMKSByZXR1cm4gU3RyaW5nKCIobnVs
bCkiKTsKK3N0ZDo6c3RyaW5nIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKGNvbnN0IHdjaGFyX3Qg
KiB3aWRlX2Nfc3RyKSB7CisgIGlmICh3aWRlX2Nfc3RyID09IE5VTEwpICByZXR1cm4gIihudWxs
KSI7CiAKLSAgcmV0dXJuIFN0cmluZzo6Rm9ybWF0KCJMXCIlc1wiIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKHdpZGVfY19zdHIpLmNfc3RyKCkpOwor
ICByZXR1cm4gaW50ZXJuYWw6OldpZGVTdHJpbmdUb1V0Zjgod2lkZV9jX3N0ciwgLTEpOwogfQog
CiAvLyBDb21wYXJlcyB0d28gd2lkZSBDIHN0cmluZ3MuICBSZXR1cm5zIHRydWUgaWZmIHRoZXkg
aGF2ZSB0aGUgc2FtZQpAQCAtMTU3OCwxOCArMTg2NiwxOCBAQCBib29sIFN0cmluZzo6V2lkZUNT
dHJpbmdFcXVhbHMoY29uc3Qgd2NoYXJfdCAqIGxocywgY29uc3Qgd2NoYXJfdCAqIHJocykgewog
fQogCiAvLyBIZWxwZXIgZnVuY3Rpb24gZm9yICpfU1RSRVEgb24gd2lkZSBzdHJpbmdzLgotQXNz
ZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4
cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCog
ZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCog
YWN0dWFsKSB7Ci0gIGlmIChTdHJpbmc6OldpZGVDU3RyaW5nRXF1YWxzKGV4cGVjdGVkLCBhY3R1
YWwpKSB7CitBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogbGhzX2V4
cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhz
X2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJf
dCogbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIHJo
cykgeworICBpZiAoU3RyaW5nOjpXaWRlQ1N0cmluZ0VxdWFscyhsaHMsIHJocykpIHsKICAgICBy
ZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9CiAKLSAgcmV0dXJuIEVxRmFpbHVyZShleHBl
Y3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIGFjdHVhbF9leHByZXNzaW9uLAot
ICAgICAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVvdGVkKGV4cGVjdGVk
KSwKLSAgICAgICAgICAgICAgICAgICBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChhY3R1
YWwpLAorICByZXR1cm4gRXFGYWlsdXJlKGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAg
ICAgIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIFByaW50VG9TdHJpbmcobGhz
KSwKKyAgICAgICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKHJocyksCiAgICAgICAgICAgICAg
ICAgICAgZmFsc2UpOwogfQogCkBAIC0xNjAyLDEyICsxODkwLDEwIEBAIEFzc2VydGlvblJlc3Vs
dCBDbXBIZWxwZXJTVFJORShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAogICAgIHJldHVybiBB
c3NlcnRpb25TdWNjZXNzKCk7CiAgIH0KIAotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8ICJFeHBl
Y3RlZDogKCIgPDwgczFfZXhwcmVzc2lvbiA8PCAiKSAhPSAoIgotICAgICAgPDwgczJfZXhwcmVz
c2lvbiA8PCAiKSwgYWN0dWFsOiAiCi0gICAgICA8PCBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1
b3RlZChzMSkKLSAgICAgIDw8ICIgdnMgIiA8PCBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3Rl
ZChzMik7Ci0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIHJldHVybiBBc3NlcnRp
b25GYWlsdXJlKCkgPDwgIkV4cGVjdGVkOiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgi
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgczJfZXhwcmVzc2lvbiA8PCAiKSwgYWN0
dWFsOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgUHJpbnRUb1N0cmluZyhzMSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIHZzICIgPDwgUHJpbnRUb1N0cmluZyhz
Mik7CiB9CiAKIC8vIENvbXBhcmVzIHR3byBDIHN0cmluZ3MsIGlnbm9yaW5nIGNhc2UuICBSZXR1
cm5zIHRydWUgaWZmIHRoZXkgaGF2ZQpAQCAtMTYzOCwxNyArMTkyNCwxNyBAQCBib29sIFN0cmlu
Zzo6Q2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFscyhjb25zdCBjaGFyICogbGhzLCBjb25zdCBj
aGFyICogcmhzKSB7CiAgIC8vIGN1cnJlbnQgbG9jYWxlLgogYm9vbCBTdHJpbmc6OkNhc2VJbnNl
bnNpdGl2ZVdpZGVDU3RyaW5nRXF1YWxzKGNvbnN0IHdjaGFyX3QqIGxocywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiByaHMpIHsK
LSAgaWYgKCBsaHMgPT0gTlVMTCApIHJldHVybiByaHMgPT0gTlVMTDsKKyAgaWYgKGxocyA9PSBO
VUxMKSByZXR1cm4gcmhzID09IE5VTEw7CiAKLSAgaWYgKCByaHMgPT0gTlVMTCApIHJldHVybiBm
YWxzZTsKKyAgaWYgKHJocyA9PSBOVUxMKSByZXR1cm4gZmFsc2U7CiAKICNpZiBHVEVTVF9PU19X
SU5ET1dTCiAgIHJldHVybiBfd2NzaWNtcChsaHMsIHJocykgPT0gMDsKLSNlbGlmIEdURVNUX09T
X0xJTlVYCisjZWxpZiBHVEVTVF9PU19MSU5VWCAmJiAhR1RFU1RfT1NfTElOVVhfQU5EUk9JRAog
ICByZXR1cm4gd2NzY2FzZWNtcChsaHMsIHJocykgPT0gMDsKICNlbHNlCi0gIC8vIE1hYyBPUyBY
IGFuZCBDeWd3aW4gZG9uJ3QgZGVmaW5lIHdjc2Nhc2VjbXAuICBPdGhlciB1bmtub3duIE9TZXMK
LSAgLy8gbWF5IG5vdCBkZWZpbmUgaXQgZWl0aGVyLgorICAvLyBBbmRyb2lkLCBNYWMgT1MgWCBh
bmQgQ3lnd2luIGRvbid0IGRlZmluZSB3Y3NjYXNlY21wLgorICAvLyBPdGhlciB1bmtub3duIE9T
ZXMgbWF5IG5vdCBkZWZpbmUgaXQgZWl0aGVyLgogICB3aW50X3QgbGVmdCwgcmlnaHQ7CiAgIGRv
IHsKICAgICBsZWZ0ID0gdG93bG93ZXIoKmxocysrKTsKQEAgLTE2NTgsMTMzICsxOTQ0LDY5IEBA
IGJvb2wgU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscyhjb25zdCB3Y2hh
cl90KiBsaHMsCiAjZW5kaWYgIC8vIE9TIHNlbGVjdG9yCiB9CiAKLS8vIENvbXBhcmVzIHRoaXMg
d2l0aCBhbm90aGVyIFN0cmluZy4KLS8vIFJldHVybnMgPCAwIGlmIHRoaXMgaXMgbGVzcyB0aGFu
IHJocywgMCBpZiB0aGlzIGlzIGVxdWFsIHRvIHJocywgb3IgPiAwCi0vLyBpZiB0aGlzIGlzIGdy
ZWF0ZXIgdGhhbiByaHMuCi1pbnQgU3RyaW5nOjpDb21wYXJlKGNvbnN0IFN0cmluZyAmIHJocykg
Y29uc3QgewotICBjb25zdCBjaGFyKiBjb25zdCBsaHNfY19zdHIgPSBjX3N0cigpOwotICBjb25z
dCBjaGFyKiBjb25zdCByaHNfY19zdHIgPSByaHMuY19zdHIoKTsKLQotICBpZiAobGhzX2Nfc3Ry
ID09IE5VTEwpIHsKLSAgICByZXR1cm4gcmhzX2Nfc3RyID09IE5VTEwgPyAwIDogLTE7ICAvLyBO
VUxMIDwgYW55dGhpbmcgZXhjZXB0IE5VTEwKLSAgfSBlbHNlIGlmIChyaHNfY19zdHIgPT0gTlVM
TCkgewotICAgIHJldHVybiAxOwotICB9Ci0KLSAgY29uc3Qgc2l6ZV90IHNob3J0ZXJfc3RyX2xl
biA9Ci0gICAgICBsZW5ndGgoKSA8PSByaHMubGVuZ3RoKCkgPyBsZW5ndGgoKSA6IHJocy5sZW5n
dGgoKTsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gc2hvcnRlcl9zdHJfbGVuOyBpKyspIHsK
LSAgICBpZiAobGhzX2Nfc3RyW2ldIDwgcmhzX2Nfc3RyW2ldKSB7Ci0gICAgICByZXR1cm4gLTE7
Ci0gICAgfSBlbHNlIGlmIChsaHNfY19zdHJbaV0gPiByaHNfY19zdHJbaV0pIHsKLSAgICAgIHJl
dHVybiAxOwotICAgIH0KLSAgfQotICByZXR1cm4gKGxlbmd0aCgpIDwgcmhzLmxlbmd0aCgpKSA/
IC0xIDoKLSAgICAgIChsZW5ndGgoKSA+IHJocy5sZW5ndGgoKSkgPyAxIDogMDsKKy8vIFJldHVy
bnMgdHJ1ZSBpZmYgc3RyIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LCBpZ25vcmluZyBjYXNl
LgorLy8gQW55IHN0cmluZyBpcyBjb25zaWRlcmVkIHRvIGVuZCB3aXRoIGFuIGVtcHR5IHN1ZmZp
eC4KK2Jvb2wgU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyYgc3RyLCBjb25zdCBzdGQ6OnN0cmluZyYgc3VmZml4KSB7CisgIGNvbnN0IHNpemVf
dCBzdHJfbGVuID0gc3RyLmxlbmd0aCgpOworICBjb25zdCBzaXplX3Qgc3VmZml4X2xlbiA9IHN1
ZmZpeC5sZW5ndGgoKTsKKyAgcmV0dXJuIChzdHJfbGVuID49IHN1ZmZpeF9sZW4pICYmCisgICAg
ICAgICBDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKHN0ci5jX3N0cigpICsgc3RyX2xlbiAt
IHN1ZmZpeF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZp
eC5jX3N0cigpKTsKIH0KIAotLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIFN0cmluZyBlbmRzIHdp
dGggdGhlIGdpdmVuIHN1ZmZpeC4gICpBbnkqCi0vLyBTdHJpbmcgaXMgY29uc2lkZXJlZCB0byBl
bmQgd2l0aCBhIE5VTEwgb3IgZW1wdHkgc3VmZml4LgotYm9vbCBTdHJpbmc6OkVuZHNXaXRoKGNv
bnN0IGNoYXIqIHN1ZmZpeCkgY29uc3QgewotICBpZiAoc3VmZml4ID09IE5VTEwgfHwgQ1N0cmlu
Z0VxdWFscyhzdWZmaXgsICIiKSkgcmV0dXJuIHRydWU7Ci0KLSAgaWYgKGNfc3RyKCkgPT0gTlVM
TCkgcmV0dXJuIGZhbHNlOwotCi0gIGNvbnN0IHNpemVfdCB0aGlzX2xlbiA9IHN0cmxlbihjX3N0
cigpKTsKLSAgY29uc3Qgc2l6ZV90IHN1ZmZpeF9sZW4gPSBzdHJsZW4oc3VmZml4KTsKLSAgcmV0
dXJuICh0aGlzX2xlbiA+PSBzdWZmaXhfbGVuKSAmJgotICAgICAgICAgQ1N0cmluZ0VxdWFscyhj
X3N0cigpICsgdGhpc19sZW4gLSBzdWZmaXhfbGVuLCBzdWZmaXgpOworLy8gRm9ybWF0cyBhbiBp
bnQgdmFsdWUgYXMgIiUwMmQiLgorc3RkOjpzdHJpbmcgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIo
aW50IHZhbHVlKSB7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICBzcyA8PCBzdGQ6OnNldGZp
bGwoJzAnKSA8PCBzdGQ6OnNldHcoMikgPDwgdmFsdWU7CisgIHJldHVybiBzcy5zdHIoKTsKIH0K
IAotLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIFN0cmluZyBlbmRzIHdpdGggdGhlIGdpdmVuIHN1
ZmZpeCwgaWdub3JpbmcgY2FzZS4KLS8vIEFueSBTdHJpbmcgaXMgY29uc2lkZXJlZCB0byBlbmQg
d2l0aCBhIE5VTEwgb3IgZW1wdHkgc3VmZml4LgotYm9vbCBTdHJpbmc6OkVuZHNXaXRoQ2FzZUlu
c2Vuc2l0aXZlKGNvbnN0IGNoYXIqIHN1ZmZpeCkgY29uc3QgewotICBpZiAoc3VmZml4ID09IE5V
TEwgfHwgQ1N0cmluZ0VxdWFscyhzdWZmaXgsICIiKSkgcmV0dXJuIHRydWU7Ci0KLSAgaWYgKGNf
c3RyKCkgPT0gTlVMTCkgcmV0dXJuIGZhbHNlOwotCi0gIGNvbnN0IHNpemVfdCB0aGlzX2xlbiA9
IHN0cmxlbihjX3N0cigpKTsKLSAgY29uc3Qgc2l6ZV90IHN1ZmZpeF9sZW4gPSBzdHJsZW4oc3Vm
Zml4KTsKLSAgcmV0dXJuICh0aGlzX2xlbiA+PSBzdWZmaXhfbGVuKSAmJgotICAgICAgICAgQ2Fz
ZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFscyhjX3N0cigpICsgdGhpc19sZW4gLSBzdWZmaXhfbGVu
LCBzdWZmaXgpOworLy8gRm9ybWF0cyBhbiBpbnQgdmFsdWUgYXMgIiVYIi4KK3N0ZDo6c3RyaW5n
IFN0cmluZzo6Rm9ybWF0SGV4SW50KGludCB2YWx1ZSkgeworICBzdGQ6OnN0cmluZ3N0cmVhbSBz
czsKKyAgc3MgPDwgc3RkOjpoZXggPDwgc3RkOjp1cHBlcmNhc2UgPDwgdmFsdWU7CisgIHJldHVy
biBzcy5zdHIoKTsKIH0KIAotLy8gRm9ybWF0cyBhIGxpc3Qgb2YgYXJndW1lbnRzIHRvIGEgU3Ry
aW5nLCB1c2luZyB0aGUgc2FtZSBmb3JtYXQKLS8vIHNwZWMgc3RyaW5nIGFzIGZvciBwcmludGYu
Ci0vLwotLy8gV2UgZG8gbm90IHVzZSB0aGUgU3RyaW5nUHJpbnRmIGNsYXNzIGFzIGl0IGlzIG5v
dCB1bml2ZXJzYWxseQotLy8gYXZhaWxhYmxlLgotLy8KLS8vIFRoZSByZXN1bHQgaXMgbGltaXRl
ZCB0byA0MDk2IGNoYXJhY3RlcnMgKGluY2x1ZGluZyB0aGUgdGFpbGluZyAwKS4KLS8vIElmIDQw
OTYgY2hhcmFjdGVycyBhcmUgbm90IGVub3VnaCB0byBmb3JtYXQgdGhlIGlucHV0LCBvciBpZgot
Ly8gdGhlcmUncyBhbiBlcnJvciwgIjxmb3JtYXR0aW5nIGVycm9yIG9yIGJ1ZmZlciBleGNlZWRl
ZD4iIGlzCi0vLyByZXR1cm5lZC4KLVN0cmluZyBTdHJpbmc6OkZvcm1hdChjb25zdCBjaGFyICog
Zm9ybWF0LCAuLi4pIHsKLSAgdmFfbGlzdCBhcmdzOwotICB2YV9zdGFydChhcmdzLCBmb3JtYXQp
OwotCi0gIGNoYXIgYnVmZmVyWzQwOTZdOwotICBjb25zdCBpbnQga0J1ZmZlclNpemUgPSBzaXpl
b2YoYnVmZmVyKS9zaXplb2YoYnVmZmVyWzBdKTsKLQotICAvLyBNU1ZDIDggZGVwcmVjYXRlcyB2
c25wcmludGYoKSwgc28gd2Ugd2FudCB0byBzdXBwcmVzcyB3YXJuaW5nCi0gIC8vIDQ5OTYgKGRl
cHJlY2F0ZWQgZnVuY3Rpb24pIHRoZXJlLgotI2lmZGVmIF9NU0NfVkVSICAvLyBXZSBhcmUgdXNp
bmcgTVNWQy4KLSNwcmFnbWEgd2FybmluZyhwdXNoKSAgICAgICAgICAvLyBTYXZlcyB0aGUgY3Vy
cmVudCB3YXJuaW5nIHN0YXRlLgotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDk5NikgIC8vIFRl
bXBvcmFyaWx5IGRpc2FibGVzIHdhcm5pbmcgNDk5Ni4KLSAgY29uc3QgaW50IHNpemUgPSB2c25w
cmludGYoYnVmZmVyLCBrQnVmZmVyU2l6ZSwgZm9ybWF0LCBhcmdzKTsKLSNwcmFnbWEgd2Fybmlu
Zyhwb3ApICAgICAgICAgICAvLyBSZXN0b3JlcyB0aGUgd2FybmluZyBzdGF0ZS4KLSNlbHNlICAv
LyBXZSBhcmUgbm90IHVzaW5nIE1TVkMuCi0gIGNvbnN0IGludCBzaXplID0gdnNucHJpbnRmKGJ1
ZmZlciwga0J1ZmZlclNpemUsIGZvcm1hdCwgYXJncyk7Ci0jZW5kaWYgIC8vIF9NU0NfVkVSCi0g
IHZhX2VuZChhcmdzKTsKLQotICAvLyB2c25wcmludGYoKSdzIGJlaGF2aW9yIGlzIG5vdCBwb3J0
YWJsZS4gIFdoZW4gdGhlIGJ1ZmZlciBpcyBub3QKLSAgLy8gYmlnIGVub3VnaCwgaXQgcmV0dXJu
cyBhIG5lZ2F0aXZlIHZhbHVlIGluIE1TVkMsIGFuZCByZXR1cm5zIHRoZQotICAvLyBuZWVkZWQg
YnVmZmVyIHNpemUgb24gTGludXguICBXaGVuIHRoZXJlIGlzIGFuIG91dHB1dCBlcnJvciwgaXQK
LSAgLy8gYWx3YXlzIHJldHVybnMgYSBuZWdhdGl2ZSB2YWx1ZS4gIEZvciBzaW1wbGljaXR5LCB3
ZSBsdW1wIHRoZSB0d28KLSAgLy8gZXJyb3IgY2FzZXMgdG9nZXRoZXIuCi0gIGlmIChzaXplIDwg
MCB8fCBzaXplID49IGtCdWZmZXJTaXplKSB7Ci0gICAgcmV0dXJuIFN0cmluZygiPGZvcm1hdHRp
bmcgZXJyb3Igb3IgYnVmZmVyIGV4Y2VlZGVkPiIpOwotICB9IGVsc2UgewotICAgIHJldHVybiBT
dHJpbmcoYnVmZmVyLCBzaXplKTsKLSAgfQorLy8gRm9ybWF0cyBhIGJ5dGUgYXMgIiUwMlgiLgor
c3RkOjpzdHJpbmcgU3RyaW5nOjpGb3JtYXRCeXRlKHVuc2lnbmVkIGNoYXIgdmFsdWUpIHsKKyAg
c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIHNzIDw8IHN0ZDo6c2V0ZmlsbCgnMCcpIDw8IHN0ZDo6
c2V0dygyKSA8PCBzdGQ6OmhleCA8PCBzdGQ6OnVwcGVyY2FzZQorICAgICA8PCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBpbnQ+KHZhbHVlKTsKKyAgcmV0dXJuIHNzLnN0cigpOwogfQogCi0vLyBDb252
ZXJ0cyB0aGUgYnVmZmVyIGluIGEgU3RyU3RyZWFtIHRvIGEgU3RyaW5nLCBjb252ZXJ0aW5nIE5V
TAorLy8gQ29udmVydHMgdGhlIGJ1ZmZlciBpbiBhIHN0cmluZ3N0cmVhbSB0byBhbiBzdGQ6OnN0
cmluZywgY29udmVydGluZyBOVUwKIC8vIGJ5dGVzIHRvICJcXDAiIGFsb25nIHRoZSB3YXkuCi1T
dHJpbmcgU3RyU3RyZWFtVG9TdHJpbmcoU3RyU3RyZWFtKiBzcykgeworc3RkOjpzdHJpbmcgU3Ry
aW5nU3RyZWFtVG9TdHJpbmcoOjpzdGQ6OnN0cmluZ3N0cmVhbSogc3MpIHsKICAgY29uc3QgOjpz
dGQ6OnN0cmluZyYgc3RyID0gc3MtPnN0cigpOwogICBjb25zdCBjaGFyKiBjb25zdCBzdGFydCA9
IHN0ci5jX3N0cigpOwogICBjb25zdCBjaGFyKiBjb25zdCBlbmQgPSBzdGFydCArIHN0ci5sZW5n
dGgoKTsKIAotICAvLyBXZSBuZWVkIHRvIHVzZSBhIGhlbHBlciBTdHJTdHJlYW0gdG8gZG8gdGhp
cyB0cmFuc2Zvcm1hdGlvbgotICAvLyBiZWNhdXNlIFN0cmluZyBkb2Vzbid0IHN1cHBvcnQgcHVz
aF9iYWNrKCkuCi0gIFN0clN0cmVhbSBoZWxwZXI7CisgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKKyAg
cmVzdWx0LnJlc2VydmUoMiAqIChlbmQgLSBzdGFydCkpOwogICBmb3IgKGNvbnN0IGNoYXIqIGNo
ID0gc3RhcnQ7IGNoICE9IGVuZDsgKytjaCkgewogICAgIGlmICgqY2ggPT0gJ1wwJykgewotICAg
ICAgaGVscGVyIDw8ICJcXDAiOyAgLy8gUmVwbGFjZXMgTlVMIHdpdGggIlxcMCI7CisgICAgICBy
ZXN1bHQgKz0gIlxcMCI7ICAvLyBSZXBsYWNlcyBOVUwgd2l0aCAiXFwwIjsKICAgICB9IGVsc2Ug
ewotICAgICAgaGVscGVyLnB1dCgqY2gpOworICAgICAgcmVzdWx0ICs9ICpjaDsKICAgICB9CiAg
IH0KIAotICByZXR1cm4gU3RyaW5nKGhlbHBlci5zdHIoKS5jX3N0cigpKTsKKyAgcmV0dXJuIHJl
c3VsdDsKIH0KIAogLy8gQXBwZW5kcyB0aGUgdXNlci1zdXBwbGllZCBtZXNzYWdlIHRvIHRoZSBH
b29nbGUtVGVzdC1nZW5lcmF0ZWQgbWVzc2FnZS4KLVN0cmluZyBBcHBlbmRVc2VyTWVzc2FnZShj
b25zdCBTdHJpbmcmIGd0ZXN0X21zZywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBN
ZXNzYWdlJiB1c2VyX21zZykgeworc3RkOjpzdHJpbmcgQXBwZW5kVXNlck1lc3NhZ2UoY29uc3Qg
c3RkOjpzdHJpbmcmIGd0ZXN0X21zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IE1lc3NhZ2UmIHVzZXJfbXNnKSB7CiAgIC8vIEFwcGVuZHMgdGhlIHVzZXIgbWVzc2FnZSBp
ZiBpdCdzIG5vbi1lbXB0eS4KLSAgY29uc3QgU3RyaW5nIHVzZXJfbXNnX3N0cmluZyA9IHVzZXJf
bXNnLkdldFN0cmluZygpOworICBjb25zdCBzdGQ6OnN0cmluZyB1c2VyX21zZ19zdHJpbmcgPSB1
c2VyX21zZy5HZXRTdHJpbmcoKTsKICAgaWYgKHVzZXJfbXNnX3N0cmluZy5lbXB0eSgpKSB7CiAg
ICAgcmV0dXJuIGd0ZXN0X21zZzsKICAgfQogCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgZ3Rl
c3RfbXNnIDw8ICJcbiIgPDwgdXNlcl9tc2dfc3RyaW5nOwotCi0gIHJldHVybiBtc2cuR2V0U3Ry
aW5nKCk7CisgIHJldHVybiBndGVzdF9tc2cgKyAiXG4iICsgdXNlcl9tc2dfc3RyaW5nOwogfQog
CiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKQEAgLTE4MzIsOCArMjA1NCw5IEBAIHZvaWQgVGVz
dFJlc3VsdDo6QWRkVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFy
dF9yZXN1bHQpIHsKIC8vIEFkZHMgYSB0ZXN0IHByb3BlcnR5IHRvIHRoZSBsaXN0LiBJZiBhIHBy
b3BlcnR5IHdpdGggdGhlIHNhbWUga2V5IGFzIHRoZQogLy8gc3VwcGxpZWQgcHJvcGVydHkgaXMg
YWxyZWFkeSByZXByZXNlbnRlZCwgdGhlIHZhbHVlIG9mIHRoaXMgdGVzdF9wcm9wZXJ0eQogLy8g
cmVwbGFjZXMgdGhlIG9sZCB2YWx1ZSBmb3IgdGhhdCBrZXkuCi12b2lkIFRlc3RSZXN1bHQ6OlJl
Y29yZFByb3BlcnR5KGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgewotICBpZiAo
IVZhbGlkYXRlVGVzdFByb3BlcnR5KHRlc3RfcHJvcGVydHkpKSB7Cit2b2lkIFRlc3RSZXN1bHQ6
OlJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiB4bWxfZWxlbWVudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5
KSB7CisgIGlmICghVmFsaWRhdGVUZXN0UHJvcGVydHkoeG1sX2VsZW1lbnQsIHRlc3RfcHJvcGVy
dHkpKSB7CiAgICAgcmV0dXJuOwogICB9CiAgIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmdGVz
dF9wcm9wZXJpdGVzX211dGV4Xyk7CkBAIC0xODQ3LDIxICsyMDcwLDk0IEBAIHZvaWQgVGVzdFJl
c3VsdDo6UmVjb3JkUHJvcGVydHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5KSB7
CiAgIHByb3BlcnR5X3dpdGhfbWF0Y2hpbmdfa2V5LT5TZXRWYWx1ZSh0ZXN0X3Byb3BlcnR5LnZh
bHVlKCkpOwogfQogCi0vLyBBZGRzIGEgZmFpbHVyZSBpZiB0aGUga2V5IGlzIGEgcmVzZXJ2ZWQg
YXR0cmlidXRlIG9mIEdvb2dsZSBUZXN0Ci0vLyB0ZXN0Y2FzZSB0YWdzLiAgUmV0dXJucyB0cnVl
IGlmIHRoZSBwcm9wZXJ0eSBpcyB2YWxpZC4KLWJvb2wgVGVzdFJlc3VsdDo6VmFsaWRhdGVUZXN0
UHJvcGVydHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5KSB7Ci0gIGludGVybmFs
OjpTdHJpbmcga2V5KHRlc3RfcHJvcGVydHkua2V5KCkpOwotICBpZiAoa2V5ID09ICJuYW1lIiB8
fCBrZXkgPT0gInN0YXR1cyIgfHwga2V5ID09ICJ0aW1lIiB8fCBrZXkgPT0gImNsYXNzbmFtZSIp
IHsKLSAgICBBRERfRkFJTFVSRSgpCi0gICAgICAgIDw8ICJSZXNlcnZlZCBrZXkgdXNlZCBpbiBS
ZWNvcmRQcm9wZXJ0eSgpOiAiCi0gICAgICAgIDw8IGtleQotICAgICAgICA8PCAiICgnbmFtZScs
ICdzdGF0dXMnLCAndGltZScsIGFuZCAnY2xhc3NuYW1lJyBhcmUgcmVzZXJ2ZWQgYnkgIgotICAg
ICAgICA8PCBHVEVTVF9OQU1FXyA8PCAiKSI7CisvLyBUaGUgbGlzdCBvZiByZXNlcnZlZCBhdHRy
aWJ1dGVzIHVzZWQgaW4gdGhlIDx0ZXN0c3VpdGVzPiBlbGVtZW50IG9mIFhNTAorLy8gb3V0cHV0
Lgorc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGtSZXNlcnZlZFRlc3RTdWl0ZXNBdHRyaWJ1dGVz
W10gPSB7CisgICJkaXNhYmxlZCIsCisgICJlcnJvcnMiLAorICAiZmFpbHVyZXMiLAorICAibmFt
ZSIsCisgICJyYW5kb21fc2VlZCIsCisgICJ0ZXN0cyIsCisgICJ0aW1lIiwKKyAgInRpbWVzdGFt
cCIKK307CisKKy8vIFRoZSBsaXN0IG9mIHJlc2VydmVkIGF0dHJpYnV0ZXMgdXNlZCBpbiB0aGUg
PHRlc3RzdWl0ZT4gZWxlbWVudCBvZiBYTUwKKy8vIG91dHB1dC4KK3N0YXRpYyBjb25zdCBjaGFy
KiBjb25zdCBrUmVzZXJ2ZWRUZXN0U3VpdGVBdHRyaWJ1dGVzW10gPSB7CisgICJkaXNhYmxlZCIs
CisgICJlcnJvcnMiLAorICAiZmFpbHVyZXMiLAorICAibmFtZSIsCisgICJ0ZXN0cyIsCisgICJ0
aW1lIgorfTsKKworLy8gVGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgYXR0cmlidXRlcyB1c2VkIGluIHRo
ZSA8dGVzdGNhc2U+IGVsZW1lbnQgb2YgWE1MIG91dHB1dC4KK3N0YXRpYyBjb25zdCBjaGFyKiBj
b25zdCBrUmVzZXJ2ZWRUZXN0Q2FzZUF0dHJpYnV0ZXNbXSA9IHsKKyAgImNsYXNzbmFtZSIsCisg
ICJuYW1lIiwKKyAgInN0YXR1cyIsCisgICJ0aW1lIiwKKyAgInR5cGVfcGFyYW0iLAorICAidmFs
dWVfcGFyYW0iCit9OworCit0ZW1wbGF0ZSA8aW50IGtTaXplPgorc3RkOjp2ZWN0b3I8c3RkOjpz
dHJpbmc+IEFycmF5QXNWZWN0b3IoY29uc3QgY2hhciogY29uc3QgKCZhcnJheSlba1NpemVdKSB7
CisgIHJldHVybiBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oYXJyYXksIGFycmF5ICsga1NpemUp
OworfQorCitzdGF0aWMgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdldFJlc2VydmVkQXR0cmli
dXRlc0ZvckVsZW1lbnQoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50KSB7Cisg
IGlmICh4bWxfZWxlbWVudCA9PSAidGVzdHN1aXRlcyIpIHsKKyAgICByZXR1cm4gQXJyYXlBc1Zl
Y3RvcihrUmVzZXJ2ZWRUZXN0U3VpdGVzQXR0cmlidXRlcyk7CisgIH0gZWxzZSBpZiAoeG1sX2Vs
ZW1lbnQgPT0gInRlc3RzdWl0ZSIpIHsKKyAgICByZXR1cm4gQXJyYXlBc1ZlY3RvcihrUmVzZXJ2
ZWRUZXN0U3VpdGVBdHRyaWJ1dGVzKTsKKyAgfSBlbHNlIGlmICh4bWxfZWxlbWVudCA9PSAidGVz
dGNhc2UiKSB7CisgICAgcmV0dXJuIEFycmF5QXNWZWN0b3Ioa1Jlc2VydmVkVGVzdENhc2VBdHRy
aWJ1dGVzKTsKKyAgfSBlbHNlIHsKKyAgICBHVEVTVF9DSEVDS18oZmFsc2UpIDw8ICJVbnJlY29n
bml6ZWQgeG1sX2VsZW1lbnQgcHJvdmlkZWQ6ICIgPDwgeG1sX2VsZW1lbnQ7CisgIH0KKyAgLy8g
VGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGJ1dCBzb21lIGNvbXBpbGVycyBtYXkgbm90IHJlYWxp
emVzIHRoYXQuCisgIHJldHVybiBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oKTsKK30KKworc3Rh
dGljIHN0ZDo6c3RyaW5nIEZvcm1hdFdvcmRMaXN0KGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiYgd29yZHMpIHsKKyAgTWVzc2FnZSB3b3JkX2xpc3Q7CisgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgd29yZHMuc2l6ZSgpOyArK2kpIHsKKyAgICBpZiAoaSA+IDAgJiYgd29yZHMuc2l6ZSgp
ID4gMikgeworICAgICAgd29yZF9saXN0IDw8ICIsICI7CisgICAgfQorICAgIGlmIChpID09IHdv
cmRzLnNpemUoKSAtIDEpIHsKKyAgICAgIHdvcmRfbGlzdCA8PCAiYW5kICI7CisgICAgfQorICAg
IHdvcmRfbGlzdCA8PCAiJyIgPDwgd29yZHNbaV0gPDwgIiciOworICB9CisgIHJldHVybiB3b3Jk
X2xpc3QuR2V0U3RyaW5nKCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVUZXN0UHJvcGVydHlOYW1lKGNv
bnN0IHN0ZDo6c3RyaW5nJiBwcm9wZXJ0eV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiByZXNlcnZlZF9uYW1lcykgewor
ICBpZiAoc3RkOjpmaW5kKHJlc2VydmVkX25hbWVzLmJlZ2luKCksIHJlc2VydmVkX25hbWVzLmVu
ZCgpLCBwcm9wZXJ0eV9uYW1lKSAhPQorICAgICAgICAgIHJlc2VydmVkX25hbWVzLmVuZCgpKSB7
CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiUmVzZXJ2ZWQga2V5IHVzZWQgaW4gUmVjb3JkUHJvcGVy
dHkoKTogIiA8PCBwcm9wZXJ0eV9uYW1lCisgICAgICAgICAgICAgICAgICA8PCAiICgiIDw8IEZv
cm1hdFdvcmRMaXN0KHJlc2VydmVkX25hbWVzKQorICAgICAgICAgICAgICAgICAgPDwgIiBhcmUg
cmVzZXJ2ZWQgYnkgIiA8PCBHVEVTVF9OQU1FXyA8PCAiKSI7CiAgICAgcmV0dXJuIGZhbHNlOwog
ICB9CiAgIHJldHVybiB0cnVlOwogfQogCisvLyBBZGRzIGEgZmFpbHVyZSBpZiB0aGUga2V5IGlz
IGEgcmVzZXJ2ZWQgYXR0cmlidXRlIG9mIHRoZSBlbGVtZW50IG5hbWVkCisvLyB4bWxfZWxlbWVu
dC4gIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvcGVydHkgaXMgdmFsaWQuCitib29sIFRlc3RSZXN1
bHQ6OlZhbGlkYXRlVGVzdFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiB4bWxfZWxlbWVudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFByb3BlcnR5
JiB0ZXN0X3Byb3BlcnR5KSB7CisgIHJldHVybiBWYWxpZGF0ZVRlc3RQcm9wZXJ0eU5hbWUodGVz
dF9wcm9wZXJ0eS5rZXkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRS
ZXNlcnZlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KHhtbF9lbGVtZW50KSk7Cit9CisKIC8vIENsZWFy
cyB0aGUgb2JqZWN0Lgogdm9pZCBUZXN0UmVzdWx0OjpDbGVhcigpIHsKICAgdGVzdF9wYXJ0X3Jl
c3VsdHNfLmNsZWFyKCk7CkBAIC0xOTE0LDE0ICsyMjEwLDE1IEBAIGludCBUZXN0UmVzdWx0Ojp0
ZXN0X3Byb3BlcnR5X2NvdW50KCkgY29uc3QgewogCiAvLyBDcmVhdGVzIGEgVGVzdCBvYmplY3Qu
CiAKLS8vIFRoZSBjJ3RvciBzYXZlcyB0aGUgdmFsdWVzIG9mIGFsbCBHb29nbGUgVGVzdCBmbGFn
cy4KKy8vIFRoZSBjJ3RvciBzYXZlcyB0aGUgc3RhdGVzIG9mIGFsbCBmbGFncy4KIFRlc3Q6OlRl
c3QoKQotICAgIDogZ3Rlc3RfZmxhZ19zYXZlcl8obmV3IGludGVybmFsOjpHVGVzdEZsYWdTYXZl
cikgeworICAgIDogZ3Rlc3RfZmxhZ19zYXZlcl8obmV3IEdURVNUX0ZMQUdfU0FWRVJfKSB7CiB9
CiAKLS8vIFRoZSBkJ3RvciByZXN0b3JlcyB0aGUgdmFsdWVzIG9mIGFsbCBHb29nbGUgVGVzdCBm
bGFncy4KKy8vIFRoZSBkJ3RvciByZXN0b3JlcyB0aGUgc3RhdGVzIG9mIGFsbCBmbGFncy4gIFRo
ZSBhY3R1YWwgd29yayBpcworLy8gZG9uZSBieSB0aGUgZCd0b3Igb2YgdGhlIGd0ZXN0X2ZsYWdf
c2F2ZXJfIGZpZWxkLCBhbmQgdGh1cyBub3QKKy8vIHZpc2libGUgaGVyZS4KIFRlc3Q6On5UZXN0
KCkgewotICBkZWxldGUgZ3Rlc3RfZmxhZ19zYXZlcl87CiB9CiAKIC8vIFNldHMgdXAgdGhlIHRl
c3QgZml4dHVyZS4KQEAgLTE5MzcsMTIgKzIyMzQsMTIgQEAgdm9pZCBUZXN0OjpUZWFyRG93bigp
IHsKIH0KIAogLy8gQWxsb3dzIHVzZXIgc3VwcGxpZWQga2V5IHZhbHVlIHBhaXJzIHRvIGJlIHJl
Y29yZGVkIGZvciBsYXRlciBvdXRwdXQuCi12b2lkIFRlc3Q6OlJlY29yZFByb3BlcnR5KGNvbnN0
IGNoYXIqIGtleSwgY29uc3QgY2hhciogdmFsdWUpIHsKLSAgVW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPlJlY29yZFByb3BlcnR5Rm9yQ3VycmVudFRlc3Qoa2V5LCB2YWx1ZSk7Cit2b2lkIFRlc3Q6
OlJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGNvbnN0IHN0ZDo6c3RyaW5n
JiB2YWx1ZSkgeworICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+UmVjb3JkUHJvcGVydHkoa2V5
LCB2YWx1ZSk7CiB9CiAKIC8vIEFsbG93cyB1c2VyIHN1cHBsaWVkIGtleSB2YWx1ZSBwYWlycyB0
byBiZSByZWNvcmRlZCBmb3IgbGF0ZXIgb3V0cHV0Lgotdm9pZCBUZXN0OjpSZWNvcmRQcm9wZXJ0
eShjb25zdCBjaGFyKiBrZXksIGludCB2YWx1ZSkgewordm9pZCBUZXN0OjpSZWNvcmRQcm9wZXJ0
eShjb25zdCBzdGQ6OnN0cmluZyYga2V5LCBpbnQgdmFsdWUpIHsKICAgTWVzc2FnZSB2YWx1ZV9t
ZXNzYWdlOwogICB2YWx1ZV9tZXNzYWdlIDw8IHZhbHVlOwogICBSZWNvcmRQcm9wZXJ0eShrZXks
IHZhbHVlX21lc3NhZ2UuR2V0U3RyaW5nKCkuY19zdHIoKSk7CkBAIC0xOTUxLDcgKzIyNDgsNyBA
QCB2b2lkIFRlc3Q6OlJlY29yZFByb3BlcnR5KGNvbnN0IGNoYXIqIGtleSwgaW50IHZhbHVlKSB7
CiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCiB2b2lkIFJlcG9ydEZhaWx1cmVJblVua25vd25Mb2Nh
dGlvbihUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsKICAg
Ly8gVGhpcyBmdW5jdGlvbiBpcyBhIGZyaWVuZCBvZiBVbml0VGVzdCBhbmQgYXMgc3VjaCBoYXMg
YWNjZXNzIHRvCiAgIC8vIEFkZFRlc3RQYXJ0UmVzdWx0LgogICBVbml0VGVzdDo6R2V0SW5zdGFu
Y2UoKS0+QWRkVGVzdFBhcnRSZXN1bHQoCkBAIC0xOTU5LDI3ICsyMjU2LDExIEBAIHZvaWQgUmVw
b3J0RmFpbHVyZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90
eXBlLAogICAgICAgTlVMTCwgIC8vIE5vIGluZm8gYWJvdXQgdGhlIHNvdXJjZSBmaWxlIHdoZXJl
IHRoZSBleGNlcHRpb24gb2NjdXJyZWQuCiAgICAgICAtMSwgICAgLy8gV2UgaGF2ZSBubyBpbmZv
IG9uIHdoaWNoIGxpbmUgY2F1c2VkIHRoZSBleGNlcHRpb24uCiAgICAgICBtZXNzYWdlLAotICAg
ICAgU3RyaW5nKCkpOyAgLy8gTm8gc3RhY2sgdHJhY2UsIGVpdGhlci4KKyAgICAgICIiKTsgICAv
LyBObyBzdGFjayB0cmFjZSwgZWl0aGVyLgogfQogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwK
IAotI2lmIEdURVNUX09TX1dJTkRPV1MKLS8vIFdlIGFyZSBvbiBXaW5kb3dzLgotCi0vLyBBZGRz
IGFuICJleGNlcHRpb24gdGhyb3duIiBmYXRhbCBmYWlsdXJlIHRvIHRoZSBjdXJyZW50IHRlc3Qu
Ci1zdGF0aWMgdm9pZCBBZGRFeGNlcHRpb25UaHJvd25GYWlsdXJlKERXT1JEIGV4Y2VwdGlvbl9j
b2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBs
b2NhdGlvbikgewotICBNZXNzYWdlIG1lc3NhZ2U7Ci0gIG1lc3NhZ2UgPDwgIkV4Y2VwdGlvbiB0
aHJvd24gd2l0aCBjb2RlIDB4IiA8PCBzdGQ6OnNldGJhc2UoMTYpIDw8Ci0gICAgZXhjZXB0aW9u
X2NvZGUgPDwgc3RkOjpzZXRiYXNlKDEwKSA8PCAiIGluICIgPDwgbG9jYXRpb24gPDwgIi4iOwot
Ci0gIGludGVybmFsOjpSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oVGVzdFBhcnRSZXN1
bHQ6OmtGYXRhbEZhaWx1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVzc2FnZS5HZXRTdHJpbmcoKSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lO
RE9XUwotCiAvLyBHb29nbGUgVGVzdCByZXF1aXJlcyBhbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVz
dCBjYXNlIHRvIHVzZSB0aGUgc2FtZSB0ZXN0CiAvLyBmaXh0dXJlIGNsYXNzLiAgVGhpcyBmdW5j
dGlvbiBjaGVja3MgaWYgdGhlIGN1cnJlbnQgdGVzdCBoYXMgdGhlCiAvLyBzYW1lIGZpeHR1cmUg
Y2xhc3MgYXMgdGhlIGZpcnN0IHRlc3QgaW4gdGhlIGN1cnJlbnQgdGVzdCBjYXNlLiAgSWYKQEAg
LTE5OTAsMTUgKzIyNzEsMTMgQEAgYm9vbCBUZXN0OjpIYXNTYW1lRml4dHVyZUNsYXNzKCkgewog
ICBjb25zdCBUZXN0Q2FzZSogY29uc3QgdGVzdF9jYXNlID0gaW1wbC0+Y3VycmVudF90ZXN0X2Nh
c2UoKTsKIAogICAvLyBJbmZvIGFib3V0IHRoZSBmaXJzdCB0ZXN0IGluIHRoZSBjdXJyZW50IHRl
c3QgY2FzZS4KLSAgY29uc3QgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbCogY29uc3QgZmlyc3RfdGVz
dF9pbmZvID0KLSAgICAgIHRlc3RfY2FzZS0+dGVzdF9pbmZvX2xpc3QoKVswXS0+aW1wbCgpOwot
ICBjb25zdCBpbnRlcm5hbDo6VHlwZUlkIGZpcnN0X2ZpeHR1cmVfaWQgPSBmaXJzdF90ZXN0X2lu
Zm8tPmZpeHR1cmVfY2xhc3NfaWQoKTsKKyAgY29uc3QgVGVzdEluZm8qIGNvbnN0IGZpcnN0X3Rl
c3RfaW5mbyA9IHRlc3RfY2FzZS0+dGVzdF9pbmZvX2xpc3QoKVswXTsKKyAgY29uc3QgaW50ZXJu
YWw6OlR5cGVJZCBmaXJzdF9maXh0dXJlX2lkID0gZmlyc3RfdGVzdF9pbmZvLT5maXh0dXJlX2Ns
YXNzX2lkXzsKICAgY29uc3QgY2hhciogY29uc3QgZmlyc3RfdGVzdF9uYW1lID0gZmlyc3RfdGVz
dF9pbmZvLT5uYW1lKCk7CiAKICAgLy8gSW5mbyBhYm91dCB0aGUgY3VycmVudCB0ZXN0LgotICBj
b25zdCBpbnRlcm5hbDo6VGVzdEluZm9JbXBsKiBjb25zdCB0aGlzX3Rlc3RfaW5mbyA9Ci0gICAg
ICBpbXBsLT5jdXJyZW50X3Rlc3RfaW5mbygpLT5pbXBsKCk7Ci0gIGNvbnN0IGludGVybmFsOjpU
eXBlSWQgdGhpc19maXh0dXJlX2lkID0gdGhpc190ZXN0X2luZm8tPmZpeHR1cmVfY2xhc3NfaWQo
KTsKKyAgY29uc3QgVGVzdEluZm8qIGNvbnN0IHRoaXNfdGVzdF9pbmZvID0gaW1wbC0+Y3VycmVu
dF90ZXN0X2luZm8oKTsKKyAgY29uc3QgaW50ZXJuYWw6OlR5cGVJZCB0aGlzX2ZpeHR1cmVfaWQg
PSB0aGlzX3Rlc3RfaW5mby0+Zml4dHVyZV9jbGFzc19pZF87CiAgIGNvbnN0IGNoYXIqIGNvbnN0
IHRoaXNfdGVzdF9uYW1lID0gdGhpc190ZXN0X2luZm8tPm5hbWUoKTsKIAogICBpZiAodGhpc19m
aXh0dXJlX2lkICE9IGZpcnN0X2ZpeHR1cmVfaWQpIHsKQEAgLTIwMDgsOCArMjI4Nyw4IEBAIGJv
b2wgVGVzdDo6SGFzU2FtZUZpeHR1cmVDbGFzcygpIHsKICAgICBjb25zdCBib29sIHRoaXNfaXNf
VEVTVCA9IHRoaXNfZml4dHVyZV9pZCA9PSBpbnRlcm5hbDo6R2V0VGVzdFR5cGVJZCgpOwogCiAg
ICAgaWYgKGZpcnN0X2lzX1RFU1QgfHwgdGhpc19pc19URVNUKSB7Ci0gICAgICAvLyBUaGUgdXNl
ciBtaXhlZCBURVNUIGFuZCBURVNUX0YgaW4gdGhpcyB0ZXN0IGNhc2UgLSB3ZSdsbCB0ZWxsCi0g
ICAgICAvLyBoaW0vaGVyIGhvdyB0byBmaXggaXQuCisgICAgICAvLyBCb3RoIFRFU1QgYW5kIFRF
U1RfRiBhcHBlYXIgaW4gc2FtZSB0ZXN0IGNhc2UsIHdoaWNoIGlzIGluY29ycmVjdC4KKyAgICAg
IC8vIFRlbGwgdGhlIHVzZXIgaG93IHRvIGZpeCB0aGlzLgogCiAgICAgICAvLyBHZXRzIHRoZSBu
YW1lIG9mIHRoZSBURVNUIGFuZCB0aGUgbmFtZSBvZiB0aGUgVEVTVF9GLiAgTm90ZQogICAgICAg
Ly8gdGhhdCBmaXJzdF9pc19URVNUIGFuZCB0aGlzX2lzX1RFU1QgY2Fubm90IGJvdGggYmUgdHJ1
ZSwgYXMKQEAgLTIwMjksOCArMjMwOCw4IEBAIGJvb2wgVGVzdDo6SGFzU2FtZUZpeHR1cmVDbGFz
cygpIHsKICAgICAgICAgICA8PCAid2FudCB0byBjaGFuZ2UgdGhlIFRFU1QgdG8gVEVTVF9GIG9y
IG1vdmUgaXQgdG8gYW5vdGhlciB0ZXN0XG4iCiAgICAgICAgICAgPDwgImNhc2UuIjsKICAgICB9
IGVsc2UgewotICAgICAgLy8gVGhlIHVzZXIgZGVmaW5lZCB0d28gZml4dHVyZSBjbGFzc2VzIHdp
dGggdGhlIHNhbWUgbmFtZSBpbgotICAgICAgLy8gdHdvIG5hbWVzcGFjZXMgLSB3ZSdsbCB0ZWxs
IGhpbS9oZXIgaG93IHRvIGZpeCBpdC4KKyAgICAgIC8vIFR3byBmaXh0dXJlIGNsYXNzZXMgd2l0
aCB0aGUgc2FtZSBuYW1lIGFwcGVhciBpbiB0d28gZGlmZmVyZW50CisgICAgICAvLyBuYW1lc3Bh
Y2VzLCB3aGljaCBpcyBub3QgYWxsb3dlZC4gVGVsbCB0aGUgdXNlciBob3cgdG8gZml4IHRoaXMu
CiAgICAgICBBRERfRkFJTFVSRSgpCiAgICAgICAgICAgPDwgIkFsbCB0ZXN0cyBpbiB0aGUgc2Ft
ZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlXG4iCiAgICAgICAgICAg
PDwgImNsYXNzLiAgSG93ZXZlciwgaW4gdGVzdCBjYXNlICIKQEAgLTIwNDgsNjIgKzIzMjcsMTYy
IEBAIGJvb2wgVGVzdDo6SGFzU2FtZUZpeHR1cmVDbGFzcygpIHsKICAgcmV0dXJuIHRydWU7CiB9
CiAKLS8vIFJ1bnMgdGhlIHRlc3QgYW5kIHVwZGF0ZXMgdGhlIHRlc3QgcmVzdWx0Lgotdm9pZCBU
ZXN0OjpSdW4oKSB7Ci0gIGlmICghSGFzU2FtZUZpeHR1cmVDbGFzcygpKSByZXR1cm47CisjaWYg
R1RFU1RfSEFTX1NFSAogCi0gIGludGVybmFsOjpVbml0VGVzdEltcGwqIGNvbnN0IGltcGwgPSBp
bnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCk7CisvLyBBZGRzIGFuICJleGNlcHRpb24gdGhyb3du
IiBmYXRhbCBmYWlsdXJlIHRvIHRoZSBjdXJyZW50IHRlc3QuICBUaGlzCisvLyBmdW5jdGlvbiBy
ZXR1cm5zIGl0cyByZXN1bHQgdmlhIGFuIG91dHB1dCBwYXJhbWV0ZXIgcG9pbnRlciBiZWNhdXNl
IFZDKysKKy8vIHByb2hpYml0cyBjcmVhdGlvbiBvZiBvYmplY3RzIHdpdGggZGVzdHJ1Y3RvcnMg
b24gc3RhY2sgaW4gZnVuY3Rpb25zCisvLyB1c2luZyBfX3RyeSAoc2VlIGVycm9yIEMyNzEyKS4K
K3N0YXRpYyBzdGQ6OnN0cmluZyogRm9ybWF0U2VoRXhjZXB0aW9uTWVzc2FnZShEV09SRCBleGNl
cHRpb25fY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBsb2NhdGlvbikgeworICBNZXNzYWdlIG1lc3NhZ2U7CisgIG1lc3NhZ2Ug
PDwgIlNFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4IiA8PCBzdGQ6OnNldGJhc2UoMTYpIDw8Cisg
ICAgZXhjZXB0aW9uX2NvZGUgPDwgc3RkOjpzZXRiYXNlKDEwKSA8PCAiIHRocm93biBpbiAiIDw8
IGxvY2F0aW9uIDw8ICIuIjsKKworICByZXR1cm4gbmV3IHN0ZDo6c3RyaW5nKG1lc3NhZ2UuR2V0
U3RyaW5nKCkpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKKworbmFtZXNwYWNlIGlu
dGVybmFsIHsKKworI2lmIEdURVNUX0hBU19FWENFUFRJT05TCisKKy8vIEFkZHMgYW4gImV4Y2Vw
dGlvbiB0aHJvd24iIGZhdGFsIGZhaWx1cmUgdG8gdGhlIGN1cnJlbnQgdGVzdC4KK3N0YXRpYyBz
dGQ6OnN0cmluZyBGb3JtYXRDeHhFeGNlcHRpb25NZXNzYWdlKGNvbnN0IGNoYXIqIGRlc2NyaXB0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogbG9jYXRpb24pIHsKKyAgTWVzc2FnZSBtZXNzYWdlOworICBpZiAoZGVzY3JpcHRpb24g
IT0gTlVMTCkgeworICAgIG1lc3NhZ2UgPDwgIkMrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlv
biBcIiIgPDwgZGVzY3JpcHRpb24gPDwgIlwiIjsKKyAgfSBlbHNlIHsKKyAgICBtZXNzYWdlIDw8
ICJVbmtub3duIEMrKyBleGNlcHRpb24iOworICB9CisgIG1lc3NhZ2UgPDwgIiB0aHJvd24gaW4g
IiA8PCBsb2NhdGlvbiA8PCAiLiI7CisKKyAgcmV0dXJuIG1lc3NhZ2UuR2V0U3RyaW5nKCk7Cit9
CisKK3N0YXRpYyBzdGQ6OnN0cmluZyBQcmludFRlc3RQYXJ0UmVzdWx0VG9TdHJpbmcoCisgICAg
Y29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpOworCitHb29nbGVUZXN0RmFp
bHVyZUV4Y2VwdGlvbjo6R29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24oCisgICAgY29uc3QgVGVz
dFBhcnRSZXN1bHQmIGZhaWx1cmUpCisgICAgOiA6OnN0ZDo6cnVudGltZV9lcnJvcihQcmludFRl
c3RQYXJ0UmVzdWx0VG9TdHJpbmcoZmFpbHVyZSkuY19zdHIoKSkge30KKworI2VuZGlmICAvLyBH
VEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBXZSBwdXQgdGhlc2UgaGVscGVyIGZ1bmN0aW9ucyBp
biB0aGUgaW50ZXJuYWwgbmFtZXNwYWNlIGFzIElCTSdzIHhsQworLy8gY29tcGlsZXIgcmVqZWN0
cyB0aGUgY29kZSBpZiB0aGV5IHdlcmUgZGVjbGFyZWQgc3RhdGljLgorCisvLyBSdW5zIHRoZSBn
aXZlbiBtZXRob2QgYW5kIGhhbmRsZXMgU0VIIGV4Y2VwdGlvbnMgaXQgdGhyb3dzLCB3aGVuCisv
LyBTRUggaXMgc3VwcG9ydGVkOyByZXR1cm5zIHRoZSAwLXZhbHVlIGZvciB0eXBlIFJlc3VsdCBp
biBjYXNlIG9mIGFuCisvLyBTRUggZXhjZXB0aW9uLiAgKE1pY3Jvc29mdCBjb21waWxlcnMgY2Fu
bm90IGhhbmRsZSBTRUggYW5kIEMrKworLy8gZXhjZXB0aW9ucyBpbiB0aGUgc2FtZSBmdW5jdGlv
bi4gIFRoZXJlZm9yZSwgd2UgcHJvdmlkZSBhIHNlcGFyYXRlCisvLyB3cmFwcGVyIGZ1bmN0aW9u
IGZvciBoYW5kbGluZyBTRUggZXhjZXB0aW9ucy4pCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgdHlwZW5h
bWUgUmVzdWx0PgorUmVzdWx0IEhhbmRsZVNlaEV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVk
KAorICAgIFQqIG9iamVjdCwgUmVzdWx0IChUOjoqbWV0aG9kKSgpLCBjb25zdCBjaGFyKiBsb2Nh
dGlvbikgewogI2lmIEdURVNUX0hBU19TRUgKLSAgLy8gQ2F0Y2ggU0VILXN0eWxlIGV4Y2VwdGlv
bnMuCi0gIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7
CiAgIF9fdHJ5IHsKLSAgICBTZXRVcCgpOwotICB9IF9fZXhjZXB0KGludGVybmFsOjpVbml0VGVz
dE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCgKKyAgICByZXR1cm4gKG9iamVjdC0+Km1l
dGhvZCkoKTsKKyAgfSBfX2V4Y2VwdCAoaW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6R1Rlc3RT
aG91bGRQcm9jZXNzU0VIKCAgLy8gTk9MSU5UCiAgICAgICBHZXRFeGNlcHRpb25Db2RlKCkpKSB7
Ci0gICAgQWRkRXhjZXB0aW9uVGhyb3duRmFpbHVyZShHZXRFeGNlcHRpb25Db2RlKCksICJTZXRV
cCgpIik7CisgICAgLy8gV2UgY3JlYXRlIHRoZSBleGNlcHRpb24gbWVzc2FnZSBvbiB0aGUgaGVh
cCBiZWNhdXNlIFZDKysgcHJvaGliaXRzCisgICAgLy8gY3JlYXRpb24gb2Ygb2JqZWN0cyB3aXRo
IGRlc3RydWN0b3JzIG9uIHN0YWNrIGluIGZ1bmN0aW9ucyB1c2luZyBfX3RyeQorICAgIC8vIChz
ZWUgZXJyb3IgQzI3MTIpLgorICAgIHN0ZDo6c3RyaW5nKiBleGNlcHRpb25fbWVzc2FnZSA9IEZv
cm1hdFNlaEV4Y2VwdGlvbk1lc3NhZ2UoCisgICAgICAgIEdldEV4Y2VwdGlvbkNvZGUoKSwgbG9j
YXRpb24pOworICAgIGludGVybmFsOjpSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oVGVz
dFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqZXhjZXB0aW9uX21lc3NhZ2UpOworICAgIGRlbGV0ZSBleGNlcHRp
b25fbWVzc2FnZTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzdWx0PigwKTsKICAgfQorI2Vs
c2UKKyAgKHZvaWQpbG9jYXRpb247CisgIHJldHVybiAob2JqZWN0LT4qbWV0aG9kKSgpOworI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfU0VICit9CiAKLSAgLy8gV2Ugd2lsbCBydW4gdGhlIHRlc3Qgb25s
eSBpZiBTZXRVcCgpIGhhZCBubyBmYXRhbCBmYWlsdXJlLgotICBpZiAoIUhhc0ZhdGFsRmFpbHVy
ZSgpKSB7Ci0gICAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rl
c3QoKTsKLSAgICBfX3RyeSB7Ci0gICAgICBUZXN0Qm9keSgpOwotICAgIH0gX19leGNlcHQoaW50
ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6R1Rlc3RTaG91bGRQcm9jZXNzU0VIKAotICAgICAgICBH
ZXRFeGNlcHRpb25Db2RlKCkpKSB7Ci0gICAgICBBZGRFeGNlcHRpb25UaHJvd25GYWlsdXJlKEdl
dEV4Y2VwdGlvbkNvZGUoKSwgInRoZSB0ZXN0IGJvZHkiKTsKKy8vIFJ1bnMgdGhlIGdpdmVuIG1l
dGhvZCBhbmQgY2F0Y2hlcyBhbmQgcmVwb3J0cyBDKysgYW5kL29yIFNFSC1zdHlsZQorLy8gZXhj
ZXB0aW9ucywgaWYgdGhleSBhcmUgc3VwcG9ydGVkOyByZXR1cm5zIHRoZSAwLXZhbHVlIGZvciB0
eXBlCisvLyBSZXN1bHQgaW4gY2FzZSBvZiBhbiBTRUggZXhjZXB0aW9uLgordGVtcGxhdGUgPGNs
YXNzIFQsIHR5cGVuYW1lIFJlc3VsdD4KK1Jlc3VsdCBIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJ
ZlN1cHBvcnRlZCgKKyAgICBUKiBvYmplY3QsIFJlc3VsdCAoVDo6Km1ldGhvZCkoKSwgY29uc3Qg
Y2hhciogbG9jYXRpb24pIHsKKyAgLy8gTk9URTogVGhlIHVzZXIgY29kZSBjYW4gYWZmZWN0IHRo
ZSB3YXkgaW4gd2hpY2ggR29vZ2xlIFRlc3QgaGFuZGxlcworICAvLyBleGNlcHRpb25zIGJ5IHNl
dHRpbmcgR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSwgYnV0IG9ubHkgYmVmb3JlCisgIC8v
IFJVTl9BTExfVEVTVFMoKSBzdGFydHMuIEl0IGlzIHRlY2huaWNhbGx5IHBvc3NpYmxlIHRvIGNo
ZWNrIHRoZSBmbGFnCisgIC8vIGFmdGVyIHRoZSBleGNlcHRpb24gaXMgY2F1Z2h0IGFuZCBlaXRo
ZXIgcmVwb3J0IG9yIHJlLXRocm93IHRoZQorICAvLyBleGNlcHRpb24gYmFzZWQgb24gdGhlIGZs
YWcncyB2YWx1ZToKKyAgLy8KKyAgLy8gdHJ5IHsKKyAgLy8gICAvLyBQZXJmb3JtIHRoZSB0ZXN0
IG1ldGhvZC4KKyAgLy8gfSBjYXRjaCAoLi4uKSB7CisgIC8vICAgaWYgKEdURVNUX0ZMQUcoY2F0
Y2hfZXhjZXB0aW9ucykpCisgIC8vICAgICAvLyBSZXBvcnQgdGhlIGV4Y2VwdGlvbiBhcyBmYWls
dXJlLgorICAvLyAgIGVsc2UKKyAgLy8gICAgIHRocm93OyAgLy8gUmUtdGhyb3dzIHRoZSBvcmln
aW5hbCBleGNlcHRpb24uCisgIC8vIH0KKyAgLy8KKyAgLy8gSG93ZXZlciwgdGhlIHB1cnBvc2Ug
b2YgdGhpcyBmbGFnIGlzIHRvIGFsbG93IHRoZSBwcm9ncmFtIHRvIGRyb3AgaW50bworICAvLyB0
aGUgZGVidWdnZXIgd2hlbiB0aGUgZXhjZXB0aW9uIGlzIHRocm93bi4gT24gbW9zdCBwbGF0Zm9y
bXMsIG9uY2UgdGhlCisgIC8vIGNvbnRyb2wgZW50ZXJzIHRoZSBjYXRjaCBibG9jaywgdGhlIGV4
Y2VwdGlvbiBvcmlnaW4gaW5mb3JtYXRpb24gaXMKKyAgLy8gbG9zdCBhbmQgdGhlIGRlYnVnZ2Vy
IHdpbGwgc3RvcCB0aGUgcHJvZ3JhbSBhdCB0aGUgcG9pbnQgb2YgdGhlCisgIC8vIHJlLXRocm93
IGluIHRoaXMgZnVuY3Rpb24gLS0gaW5zdGVhZCBvZiBhdCB0aGUgcG9pbnQgb2YgdGhlIG9yaWdp
bmFsCisgIC8vIHRocm93IHN0YXRlbWVudCBpbiB0aGUgY29kZSB1bmRlciB0ZXN0LiAgRm9yIHRo
aXMgcmVhc29uLCB3ZSBwZXJmb3JtCisgIC8vIHRoZSBjaGVjayBlYXJseSwgc2FjcmlmaWNpbmcg
dGhlIGFiaWxpdHkgdG8gYWZmZWN0IEdvb2dsZSBUZXN0J3MKKyAgLy8gZXhjZXB0aW9uIGhhbmRs
aW5nIGluIHRoZSBtZXRob2Qgd2hlcmUgdGhlIGV4Y2VwdGlvbiBpcyB0aHJvd24uCisgIGlmIChp
bnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCktPmNhdGNoX2V4Y2VwdGlvbnMoKSkgeworI2lmIEdU
RVNUX0hBU19FWENFUFRJT05TCisgICAgdHJ5IHsKKyAgICAgIHJldHVybiBIYW5kbGVTZWhFeGNl
cHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZChvYmplY3QsIG1ldGhvZCwgbG9jYXRpb24pOworICAg
IH0gY2F0Y2ggKGNvbnN0IGludGVybmFsOjpHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbiYpIHsg
IC8vIE5PTElOVAorICAgICAgLy8gVGhpcyBleGNlcHRpb24gdHlwZSBjYW4gb25seSBiZSB0aHJv
d24gYnkgYSBmYWlsZWQgR29vZ2xlCisgICAgICAvLyBUZXN0IGFzc2VydGlvbiB3aXRoIHRoZSBp
bnRlbnRpb24gb2YgbGV0dGluZyBhbm90aGVyIHRlc3RpbmcKKyAgICAgIC8vIGZyYW1ld29yayBj
YXRjaCBpdC4gIFRoZXJlZm9yZSB3ZSBqdXN0IHJlLXRocm93IGl0LgorICAgICAgdGhyb3c7Cisg
ICAgfSBjYXRjaCAoY29uc3Qgc3RkOjpleGNlcHRpb24mIGUpIHsgIC8vIE5PTElOVAorICAgICAg
aW50ZXJuYWw6OlJlcG9ydEZhaWx1cmVJblVua25vd25Mb2NhdGlvbigKKyAgICAgICAgICBUZXN0
UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKKyAgICAgICAgICBGb3JtYXRDeHhFeGNlcHRpb25N
ZXNzYWdlKGUud2hhdCgpLCBsb2NhdGlvbikpOworICAgIH0gY2F0Y2ggKC4uLikgeyAgLy8gTk9M
SU5UCisgICAgICBpbnRlcm5hbDo6UmVwb3J0RmFpbHVyZUluVW5rbm93bkxvY2F0aW9uKAorICAg
ICAgICAgIFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLAorICAgICAgICAgIEZvcm1hdEN4
eEV4Y2VwdGlvbk1lc3NhZ2UoTlVMTCwgbG9jYXRpb24pKTsKICAgICB9CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFJlc3VsdD4oMCk7CisjZWxzZQorICAgIHJldHVybiBIYW5kbGVTZWhFeGNlcHRp
b25zSW5NZXRob2RJZlN1cHBvcnRlZChvYmplY3QsIG1ldGhvZCwgbG9jYXRpb24pOworI2VuZGlm
ICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUworICB9IGVsc2UgeworICAgIHJldHVybiAob2JqZWN0
LT4qbWV0aG9kKSgpOwogICB9Cit9CiAKLSAgLy8gSG93ZXZlciwgd2Ugd2FudCB0byBjbGVhbiB1
cCBhcyBtdWNoIGFzIHBvc3NpYmxlLiAgSGVuY2Ugd2Ugd2lsbAotICAvLyBhbHdheXMgY2FsbCBU
ZWFyRG93bigpLCBldmVuIGlmIFNldFVwKCkgb3IgdGhlIHRlc3QgYm9keSBoYXMKLSAgLy8gZmFp
bGVkLgotICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgp
OwotICBfX3RyeSB7Ci0gICAgVGVhckRvd24oKTsKLSAgfSBfX2V4Y2VwdChpbnRlcm5hbDo6VW5p
dFRlc3RPcHRpb25zOjpHVGVzdFNob3VsZFByb2Nlc3NTRUgoCi0gICAgICBHZXRFeGNlcHRpb25D
b2RlKCkpKSB7Ci0gICAgQWRkRXhjZXB0aW9uVGhyb3duRmFpbHVyZShHZXRFeGNlcHRpb25Db2Rl
KCksICJUZWFyRG93bigpIik7Ci0gIH0KLQotI2Vsc2UgIC8vIFdlIGFyZSBvbiBhIGNvbXBpbGVy
IG9yIHBsYXRmb3JtIHRoYXQgZG9lc24ndCBzdXBwb3J0IFNFSC4KLSAgaW1wbC0+b3Nfc3RhY2tf
dHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgU2V0VXAoKTsKK30gIC8vIG5h
bWVzcGFjZSBpbnRlcm5hbAorCisvLyBSdW5zIHRoZSB0ZXN0IGFuZCB1cGRhdGVzIHRoZSB0ZXN0
IHJlc3VsdC4KK3ZvaWQgVGVzdDo6UnVuKCkgeworICBpZiAoIUhhc1NhbWVGaXh0dXJlQ2xhc3Mo
KSkgcmV0dXJuOwogCisgIGludGVybmFsOjpVbml0VGVzdEltcGwqIGNvbnN0IGltcGwgPSBpbnRl
cm5hbDo6R2V0VW5pdFRlc3RJbXBsKCk7CisgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigp
LT5VcG9uTGVhdmluZ0dUZXN0KCk7CisgIGludGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRo
b2RJZlN1cHBvcnRlZCh0aGlzLCAmVGVzdDo6U2V0VXAsICJTZXRVcCgpIik7CiAgIC8vIFdlIHdp
bGwgcnVuIHRoZSB0ZXN0IG9ubHkgaWYgU2V0VXAoKSB3YXMgc3VjY2Vzc2Z1bC4KICAgaWYgKCFI
YXNGYXRhbEZhaWx1cmUoKSkgewogICAgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5V
cG9uTGVhdmluZ0dUZXN0KCk7Ci0gICAgVGVzdEJvZHkoKTsKKyAgICBpbnRlcm5hbDo6SGFuZGxl
RXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgICAgIHRoaXMsICZUZXN0OjpUZXN0
Qm9keSwgInRoZSB0ZXN0IGJvZHkiKTsKICAgfQogCiAgIC8vIEhvd2V2ZXIsIHdlIHdhbnQgdG8g
Y2xlYW4gdXAgYXMgbXVjaCBhcyBwb3NzaWJsZS4gIEhlbmNlIHdlIHdpbGwKICAgLy8gYWx3YXlz
IGNhbGwgVGVhckRvd24oKSwgZXZlbiBpZiBTZXRVcCgpIG9yIHRoZSB0ZXN0IGJvZHkgaGFzCiAg
IC8vIGZhaWxlZC4KICAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5n
R1Rlc3QoKTsKLSAgVGVhckRvd24oKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAorICBpbnRl
cm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgICB0aGlzLCAm
VGVzdDo6VGVhckRvd24sICJUZWFyRG93bigpIik7CiB9CiAKLQogLy8gUmV0dXJucyB0cnVlIGlm
ZiB0aGUgY3VycmVudCB0ZXN0IGhhcyBhIGZhdGFsIGZhaWx1cmUuCiBib29sIFRlc3Q6Okhhc0Zh
dGFsRmFpbHVyZSgpIHsKICAgcmV0dXJuIGludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKS0+Y3Vy
cmVudF90ZXN0X3Jlc3VsdCgpLT5IYXNGYXRhbEZhaWx1cmUoKTsKQEAgLTIxMTgsMjIgKzI0OTcs
MjggQEAgYm9vbCBUZXN0OjpIYXNOb25mYXRhbEZhaWx1cmUoKSB7CiAvLyBjbGFzcyBUZXN0SW5m
bwogCiAvLyBDb25zdHJ1Y3RzIGEgVGVzdEluZm8gb2JqZWN0LiBJdCBhc3N1bWVzIG93bmVyc2hp
cCBvZiB0aGUgdGVzdCBmYWN0b3J5Ci0vLyBvYmplY3QgdmlhIGltcGxfLgotVGVzdEluZm86OlRl
c3RJbmZvKGNvbnN0IGNoYXIqIGFfdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogYV9uYW1lLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfdGVz
dF9jYXNlX2NvbW1lbnQsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV9jb21tZW50
LAorLy8gb2JqZWN0LgorVGVzdEluZm86OlRlc3RJbmZvKGNvbnN0IHN0ZDo6c3RyaW5nJiBhX3Rl
c3RfY2FzZV9uYW1lLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBhX25h
bWUsCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV90eXBlX3BhcmFtLAorICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfdmFsdWVfcGFyYW0sCisgICAgICAgICAgICAgICAg
ICAgaW50ZXJuYWw6OkNvZGVMb2NhdGlvbiBhX2NvZGVfbG9jYXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgaW50ZXJuYWw6OlR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkLAotICAgICAgICAgICAgICAg
ICAgIGludGVybmFsOjpUZXN0RmFjdG9yeUJhc2UqIGZhY3RvcnkpIHsKLSAgaW1wbF8gPSBuZXcg
aW50ZXJuYWw6OlRlc3RJbmZvSW1wbCh0aGlzLCBhX3Rlc3RfY2FzZV9uYW1lLCBhX25hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYV90ZXN0X2Nhc2VfY29tbWVudCwg
YV9jb21tZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeHR1cmVf
Y2xhc3NfaWQsIGZhY3RvcnkpOwotfQorICAgICAgICAgICAgICAgICAgIGludGVybmFsOjpUZXN0
RmFjdG9yeUJhc2UqIGZhY3RvcnkpCisgICAgOiB0ZXN0X2Nhc2VfbmFtZV8oYV90ZXN0X2Nhc2Vf
bmFtZSksCisgICAgICBuYW1lXyhhX25hbWUpLAorICAgICAgdHlwZV9wYXJhbV8oYV90eXBlX3Bh
cmFtID8gbmV3IHN0ZDo6c3RyaW5nKGFfdHlwZV9wYXJhbSkgOiBOVUxMKSwKKyAgICAgIHZhbHVl
X3BhcmFtXyhhX3ZhbHVlX3BhcmFtID8gbmV3IHN0ZDo6c3RyaW5nKGFfdmFsdWVfcGFyYW0pIDog
TlVMTCksCisgICAgICBsb2NhdGlvbl8oYV9jb2RlX2xvY2F0aW9uKSwKKyAgICAgIGZpeHR1cmVf
Y2xhc3NfaWRfKGZpeHR1cmVfY2xhc3NfaWQpLAorICAgICAgc2hvdWxkX3J1bl8oZmFsc2UpLAor
ICAgICAgaXNfZGlzYWJsZWRfKGZhbHNlKSwKKyAgICAgIG1hdGNoZXNfZmlsdGVyXyhmYWxzZSks
CisgICAgICBmYWN0b3J5XyhmYWN0b3J5KSwKKyAgICAgIHJlc3VsdF8oKSB7fQogCiAvLyBEZXN0
cnVjdHMgYSBUZXN0SW5mbyBvYmplY3QuCi1UZXN0SW5mbzo6flRlc3RJbmZvKCkgewotICBkZWxl
dGUgaW1wbF87Ci19CitUZXN0SW5mbzo6flRlc3RJbmZvKCkgeyBkZWxldGUgZmFjdG9yeV87IH0K
IAogbmFtZXNwYWNlIGludGVybmFsIHsKIApAQCAtMjE0NCwxMCArMjUyOSwxMSBAQCBuYW1lc3Bh
Y2UgaW50ZXJuYWwgewogLy8KIC8vICAgdGVzdF9jYXNlX25hbWU6ICAgbmFtZSBvZiB0aGUgdGVz
dCBjYXNlCiAvLyAgIG5hbWU6ICAgICAgICAgICAgIG5hbWUgb2YgdGhlIHRlc3QKLS8vICAgdGVz
dF9jYXNlX2NvbW1lbnQ6IGEgY29tbWVudCBvbiB0aGUgdGVzdCBjYXNlIHRoYXQgd2lsbCBiZSBp
bmNsdWRlZCBpbgotLy8gICAgICAgICAgICAgICAgICAgICAgdGhlIHRlc3Qgb3V0cHV0Ci0vLyAg
IGNvbW1lbnQ6ICAgICAgICAgIGEgY29tbWVudCBvbiB0aGUgdGVzdCB0aGF0IHdpbGwgYmUgaW5j
bHVkZWQgaW4gdGhlCi0vLyAgICAgICAgICAgICAgICAgICAgIHRlc3Qgb3V0cHV0CisvLyAgIHR5
cGVfcGFyYW06ICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0ZXN0J3MgdHlwZSBwYXJhbWV0ZXIsIG9y
IE5VTEwgaWYKKy8vICAgICAgICAgICAgICAgICAgICAgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBh
IHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LgorLy8gICB2YWx1ZV9wYXJhbTogICAgICB0ZXh0IHJl
cHJlc2VudGF0aW9uIG9mIHRoZSB0ZXN0J3MgdmFsdWUgcGFyYW1ldGVyLAorLy8gICAgICAgICAg
ICAgICAgICAgICBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEgdmFsdWUtcGFyYW1ldGVyaXplZCB0
ZXN0LgorLy8gICBjb2RlX2xvY2F0aW9uOiAgICBjb2RlIGxvY2F0aW9uIHdoZXJlIHRoZSB0ZXN0
IGlzIGRlZmluZWQKIC8vICAgZml4dHVyZV9jbGFzc19pZDogSUQgb2YgdGhlIHRlc3QgZml4dHVy
ZSBjbGFzcwogLy8gICBzZXRfdXBfdGM6ICAgICAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0
aGF0IHNldHMgdXAgdGhlIHRlc3QgY2FzZQogLy8gICB0ZWFyX2Rvd25fdGM6ICAgICBwb2ludGVy
IHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQpAQCAtMjE1NSwy
MiArMjU0MSwyNSBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogLy8gICAgICAgICAgICAgICAgICAg
ICBUaGUgbmV3bHkgY3JlYXRlZCBUZXN0SW5mbyBpbnN0YW5jZSB3aWxsIGFzc3VtZQogLy8gICAg
ICAgICAgICAgICAgICAgICBvd25lcnNoaXAgb2YgdGhlIGZhY3Rvcnkgb2JqZWN0LgogVGVzdElu
Zm8qIE1ha2VBbmRSZWdpc3RlclRlc3RJbmZvKAotICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9u
YW1lLCBjb25zdCBjaGFyKiBuYW1lLAotICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9jb21tZW50
LCBjb25zdCBjaGFyKiBjb21tZW50LAorICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAor
ICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgY29uc3QgY2hhciogdHlwZV9wYXJhbSwKKyAgICBj
b25zdCBjaGFyKiB2YWx1ZV9wYXJhbSwKKyAgICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbiwK
ICAgICBUeXBlSWQgZml4dHVyZV9jbGFzc19pZCwKICAgICBTZXRVcFRlc3RDYXNlRnVuYyBzZXRf
dXBfdGMsCiAgICAgVGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3RjLAogICAgIFRlc3RG
YWN0b3J5QmFzZSogZmFjdG9yeSkgewogICBUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KLSAg
ICAgIG5ldyBUZXN0SW5mbyh0ZXN0X2Nhc2VfbmFtZSwgbmFtZSwgdGVzdF9jYXNlX2NvbW1lbnQs
IGNvbW1lbnQsCi0gICAgICAgICAgICAgICAgICAgZml4dHVyZV9jbGFzc19pZCwgZmFjdG9yeSk7
CisgICAgICBuZXcgVGVzdEluZm8odGVzdF9jYXNlX25hbWUsIG5hbWUsIHR5cGVfcGFyYW0sIHZh
bHVlX3BhcmFtLAorICAgICAgICAgICAgICAgICAgIGNvZGVfbG9jYXRpb24sIGZpeHR1cmVfY2xh
c3NfaWQsIGZhY3RvcnkpOwogICBHZXRVbml0VGVzdEltcGwoKS0+QWRkVGVzdEluZm8oc2V0X3Vw
X3RjLCB0ZWFyX2Rvd25fdGMsIHRlc3RfaW5mbyk7CiAgIHJldHVybiB0ZXN0X2luZm87CiB9CiAK
ICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAogdm9pZCBSZXBvcnRJbnZhbGlkVGVzdENhc2VUeXBl
KGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24pIHsKICAgTWVzc2FnZSBlcnJvcnM7
CiAgIGVycm9ycwogICAgICAgPDwgIkF0dGVtcHRlZCByZWRlZmluaXRpb24gb2YgdGVzdCBjYXNl
ICIgPDwgdGVzdF9jYXNlX25hbWUgPDwgIi5cbiIKQEAgLTIxODIsNDggKzI1NzEsMTUgQEAgdm9p
ZCBSZXBvcnRJbnZhbGlkVGVzdENhc2VUeXBlKGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAog
ICAgICAgPDwgInByb2JhYmx5IHJlbmFtZSBvbmUgb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0
ZXN0cyBpbnRvIGRpZmZlcmVudFxuIgogICAgICAgPDwgInRlc3QgY2FzZXMuIjsKIAotICBmcHJp
bnRmKHN0ZGVyciwgIiVzICVzIiwgRm9ybWF0RmlsZUxvY2F0aW9uKGZpbGUsIGxpbmUpLmNfc3Ry
KCksCisgIGZwcmludGYoc3RkZXJyLCAiJXMgJXMiLAorICAgICAgICAgIEZvcm1hdEZpbGVMb2Nh
dGlvbihjb2RlX2xvY2F0aW9uLmZpbGUuY19zdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29kZV9sb2NhdGlvbi5saW5lKS5jX3N0cigpLAogICAgICAgICAgIGVycm9ycy5HZXRT
dHJpbmcoKS5jX3N0cigpKTsKIH0KICNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIAog
fSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiAKLS8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBuYW1l
LgotY29uc3QgY2hhciogVGVzdEluZm86OnRlc3RfY2FzZV9uYW1lKCkgY29uc3QgewotICByZXR1
cm4gaW1wbF8tPnRlc3RfY2FzZV9uYW1lKCk7Ci19Ci0KLS8vIFJldHVybnMgdGhlIHRlc3QgbmFt
ZS4KLWNvbnN0IGNoYXIqIFRlc3RJbmZvOjpuYW1lKCkgY29uc3QgewotICByZXR1cm4gaW1wbF8t
Pm5hbWUoKTsKLX0KLQotLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIGNvbW1lbnQuCi1jb25zdCBj
aGFyKiBUZXN0SW5mbzo6dGVzdF9jYXNlX2NvbW1lbnQoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBs
Xy0+dGVzdF9jYXNlX2NvbW1lbnQoKTsKLX0KLQotLy8gUmV0dXJucyB0aGUgdGVzdCBjb21tZW50
LgotY29uc3QgY2hhciogVGVzdEluZm86OmNvbW1lbnQoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBs
Xy0+Y29tbWVudCgpOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IHNob3VsZCBy
dW4uCi1ib29sIFRlc3RJbmZvOjpzaG91bGRfcnVuKCkgY29uc3QgeyByZXR1cm4gaW1wbF8tPnNo
b3VsZF9ydW4oKTsgfQotCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IG1hdGNoZXMgdGhl
IHVzZXItc3BlY2lmaWVkIGZpbHRlci4KLWJvb2wgVGVzdEluZm86Om1hdGNoZXNfZmlsdGVyKCkg
Y29uc3QgeyByZXR1cm4gaW1wbF8tPm1hdGNoZXNfZmlsdGVyKCk7IH0KLQotLy8gUmV0dXJucyB0
aGUgcmVzdWx0IG9mIHRoZSB0ZXN0LgotY29uc3QgVGVzdFJlc3VsdCogVGVzdEluZm86OnJlc3Vs
dCgpIGNvbnN0IHsgcmV0dXJuIGltcGxfLT5yZXN1bHQoKTsgfQotCi0vLyBJbmNyZW1lbnRzIHRo
ZSBudW1iZXIgb2YgZGVhdGggdGVzdHMgZW5jb3VudGVyZWQgaW4gdGhpcyB0ZXN0IHNvCi0vLyBm
YXIuCi1pbnQgVGVzdEluZm86OmluY3JlbWVudF9kZWF0aF90ZXN0X2NvdW50KCkgewotICByZXR1
cm4gaW1wbF8tPnJlc3VsdCgpLT5pbmNyZW1lbnRfZGVhdGhfdGVzdF9jb3VudCgpOwotfQotCiBu
YW1lc3BhY2UgewogCiAvLyBBIHByZWRpY2F0ZSB0aGF0IGNoZWNrcyB0aGUgdGVzdCBuYW1lIG9m
IGEgVGVzdEluZm8gYWdhaW5zdCBhIGtub3duCkBAIC0yMjQ0LDExICsyNjAwLDExIEBAIGNsYXNz
IFRlc3ROYW1lSXMgewogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgbmFtZSBvZiB0
ZXN0X2luZm8gbWF0Y2hlcyBuYW1lXy4KICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFRlc3RJbmZv
ICogdGVzdF9pbmZvKSBjb25zdCB7Ci0gICAgcmV0dXJuIHRlc3RfaW5mbyAmJiBpbnRlcm5hbDo6
U3RyaW5nKHRlc3RfaW5mby0+bmFtZSgpKS5Db21wYXJlKG5hbWVfKSA9PSAwOworICAgIHJldHVy
biB0ZXN0X2luZm8gJiYgdGVzdF9pbmZvLT5uYW1lKCkgPT0gbmFtZV87CiAgIH0KIAogIHByaXZh
dGU6Ci0gIGludGVybmFsOjpTdHJpbmcgbmFtZV87CisgIHN0ZDo6c3RyaW5nIG5hbWVfOwogfTsK
IAogfSAgLy8gbmFtZXNwYWNlCkBAIC0yMjY3LDcwICsyNjIzLDU0IEBAIHZvaWQgVW5pdFRlc3RJ
bXBsOjpSZWdpc3RlclBhcmFtZXRlcml6ZWRUZXN0cygpIHsKICNlbmRpZgogfQogCit9ICAvLyBu
YW1lc3BhY2UgaW50ZXJuYWwKKwogLy8gQ3JlYXRlcyB0aGUgdGVzdCBvYmplY3QsIHJ1bnMgaXQs
IHJlY29yZHMgaXRzIHJlc3VsdCwgYW5kIHRoZW4KIC8vIGRlbGV0ZXMgaXQuCi12b2lkIFRlc3RJ
bmZvSW1wbDo6UnVuKCkgewordm9pZCBUZXN0SW5mbzo6UnVuKCkgewogICBpZiAoIXNob3VsZF9y
dW5fKSByZXR1cm47CiAKICAgLy8gVGVsbHMgVW5pdFRlc3Qgd2hlcmUgdG8gc3RvcmUgdGVzdCBy
ZXN1bHQuCi0gIFVuaXRUZXN0SW1wbCogY29uc3QgaW1wbCA9IGludGVybmFsOjpHZXRVbml0VGVz
dEltcGwoKTsKLSAgaW1wbC0+c2V0X2N1cnJlbnRfdGVzdF9pbmZvKHBhcmVudF8pOworICBpbnRl
cm5hbDo6VW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0gaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1w
bCgpOworICBpbXBsLT5zZXRfY3VycmVudF90ZXN0X2luZm8odGhpcyk7CiAKICAgVGVzdEV2ZW50
TGlzdGVuZXIqIHJlcGVhdGVyID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygp
LnJlcGVhdGVyKCk7CiAKICAgLy8gTm90aWZpZXMgdGhlIHVuaXQgdGVzdCBldmVudCBsaXN0ZW5l
cnMgdGhhdCBhIHRlc3QgaXMgYWJvdXQgdG8gc3RhcnQuCi0gIHJlcGVhdGVyLT5PblRlc3RTdGFy
dCgqcGFyZW50Xyk7CisgIHJlcGVhdGVyLT5PblRlc3RTdGFydCgqdGhpcyk7CiAKLSAgY29uc3Qg
VGltZUluTWlsbGlzIHN0YXJ0ID0gR2V0VGltZUluTWlsbGlzKCk7CisgIGNvbnN0IFRpbWVJbk1p
bGxpcyBzdGFydCA9IGludGVybmFsOjpHZXRUaW1lSW5NaWxsaXMoKTsKIAogICBpbXBsLT5vc19z
dGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotI2lmIEdURVNUX0hBU19T
RUgKLSAgLy8gQ2F0Y2ggU0VILXN0eWxlIGV4Y2VwdGlvbnMuCi0gIFRlc3QqIHRlc3QgPSBOVUxM
OwotCi0gIF9fdHJ5IHsKLSAgICAvLyBDcmVhdGVzIHRoZSB0ZXN0IG9iamVjdC4KLSAgICB0ZXN0
ID0gZmFjdG9yeV8tPkNyZWF0ZVRlc3QoKTsKLSAgfSBfX2V4Y2VwdChpbnRlcm5hbDo6VW5pdFRl
c3RPcHRpb25zOjpHVGVzdFNob3VsZFByb2Nlc3NTRUgoCi0gICAgICBHZXRFeGNlcHRpb25Db2Rl
KCkpKSB7Ci0gICAgQWRkRXhjZXB0aW9uVGhyb3duRmFpbHVyZShHZXRFeGNlcHRpb25Db2RlKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIHRlc3QgZml4dHVyZSdzIGNvbnN0
cnVjdG9yIik7Ci0gICAgcmV0dXJuOwotICB9Ci0jZWxzZSAgLy8gV2UgYXJlIG9uIGEgY29tcGls
ZXIgb3IgcGxhdGZvcm0gdGhhdCBkb2Vzbid0IHN1cHBvcnQgU0VILgotCi0gIC8vIFRPRE8od2Fu
KTogSWYgdGVzdC0+UnVuKCkgdGhyb3dzLCB0ZXN0IHdvbid0IGJlIGRlbGV0ZWQuICBUaGlzIGlz
Ci0gIC8vIG5vdCBhIHByb2JsZW0gbm93IGFzIHdlIGRvbid0IHVzZSBleGNlcHRpb25zLiAgSWYg
d2Ugd2VyZSB0bwotICAvLyBlbmFibGUgZXhjZXB0aW9ucywgd2Ugc2hvdWxkIHJldmlzZSB0aGUg
Zm9sbG93aW5nIHRvIGJlCi0gIC8vIGV4Y2VwdGlvbi1zYWZlLgogCiAgIC8vIENyZWF0ZXMgdGhl
IHRlc3Qgb2JqZWN0LgotICBUZXN0KiB0ZXN0ID0gZmFjdG9yeV8tPkNyZWF0ZVRlc3QoKTsKLSNl
bmRpZiAgLy8gR1RFU1RfSEFTX1NFSAotCi0gIC8vIFJ1bnMgdGhlIHRlc3Qgb25seSBpZiB0aGUg
Y29uc3RydWN0b3Igb2YgdGhlIHRlc3QgZml4dHVyZSBkaWRuJ3QKLSAgLy8gZ2VuZXJhdGUgYSBm
YXRhbCBmYWlsdXJlLgotICBpZiAoIVRlc3Q6Okhhc0ZhdGFsRmFpbHVyZSgpKSB7CisgIFRlc3Qq
IGNvbnN0IHRlc3QgPSBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0
ZWQoCisgICAgICBmYWN0b3J5XywgJmludGVybmFsOjpUZXN0RmFjdG9yeUJhc2U6OkNyZWF0ZVRl
c3QsCisgICAgICAidGhlIHRlc3QgZml4dHVyZSdzIGNvbnN0cnVjdG9yIik7CisKKyAgLy8gUnVu
cyB0aGUgdGVzdCBvbmx5IGlmIHRoZSB0ZXN0IG9iamVjdCB3YXMgY3JlYXRlZCBhbmQgaXRzCisg
IC8vIGNvbnN0cnVjdG9yIGRpZG4ndCBnZW5lcmF0ZSBhIGZhdGFsIGZhaWx1cmUuCisgIGlmICgo
dGVzdCAhPSBOVUxMKSAmJiAhVGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkpIHsKKyAgICAvLyBUaGlz
IGRvZXNuJ3QgdGhyb3cgYXMgYWxsIHVzZXIgY29kZSB0aGF0IGNhbiB0aHJvdyBhcmUgd3JhcHBl
ZCBpbnRvCisgICAgLy8gZXhjZXB0aW9uIGhhbmRsaW5nIGNvZGUuCiAgICAgdGVzdC0+UnVuKCk7
CiAgIH0KIAogICAvLyBEZWxldGVzIHRoZSB0ZXN0IG9iamVjdC4KICAgaW1wbC0+b3Nfc3RhY2tf
dHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgZGVsZXRlIHRlc3Q7Ci0gIHRl
c3QgPSBOVUxMOworICBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0
ZWQoCisgICAgICB0ZXN0LCAmVGVzdDo6RGVsZXRlU2VsZl8sICJ0aGUgdGVzdCBmaXh0dXJlJ3Mg
ZGVzdHJ1Y3RvciIpOwogCi0gIHJlc3VsdF8uc2V0X2VsYXBzZWRfdGltZShHZXRUaW1lSW5NaWxs
aXMoKSAtIHN0YXJ0KTsKKyAgcmVzdWx0Xy5zZXRfZWxhcHNlZF90aW1lKGludGVybmFsOjpHZXRU
aW1lSW5NaWxsaXMoKSAtIHN0YXJ0KTsKIAogICAvLyBOb3RpZmllcyB0aGUgdW5pdCB0ZXN0IGV2
ZW50IGxpc3RlbmVyIHRoYXQgYSB0ZXN0IGhhcyBqdXN0IGZpbmlzaGVkLgotICByZXBlYXRlci0+
T25UZXN0RW5kKCpwYXJlbnRfKTsKKyAgcmVwZWF0ZXItPk9uVGVzdEVuZCgqdGhpcyk7CiAKICAg
Ly8gVGVsbHMgVW5pdFRlc3QgdG8gc3RvcCBhc3NvY2lhdGluZyBhc3NlcnRpb24gcmVzdWx0cyB0
byB0aGlzCiAgIC8vIHRlc3QuCiAgIGltcGwtPnNldF9jdXJyZW50X3Rlc3RfaW5mbyhOVUxMKTsK
IH0KIAotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KIC8vIGNsYXNzIFRlc3RDYXNlCiAKIC8v
IEdldHMgdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlLgpA
QCAtMjM0MywxMCArMjY4MywyMSBAQCBpbnQgVGVzdENhc2U6OmZhaWxlZF90ZXN0X2NvdW50KCkg
Y29uc3QgewogICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlzdF8sIFRlc3RGYWlsZWQpOwog
fQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJl
cG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0LgoraW50IFRlc3RDYXNlOjpyZXBvcnRhYmxlX2Rpc2Fi
bGVkX3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBDb3VudElmKHRlc3RfaW5mb19saXN0
XywgVGVzdFJlcG9ydGFibGVEaXNhYmxlZCk7Cit9CisKKy8vIEdldHMgdGhlIG51bWJlciBvZiBk
aXNhYmxlZCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KIGludCBUZXN0Q2FzZTo6ZGlzYWJsZWRf
dGVzdF9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJuIENvdW50SWYodGVzdF9pbmZvX2xpc3RfLCBU
ZXN0RGlzYWJsZWQpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJp
bnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KK2ludCBUZXN0Q2FzZTo6cmVwb3J0YWJsZV90ZXN0X2Nv
dW50KCkgY29uc3QgeworICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlzdF8sIFRlc3RSZXBv
cnRhYmxlKTsKK30KKwogLy8gR2V0IHRoZSBudW1iZXIgb2YgdGVzdHMgaW4gdGhpcyB0ZXN0IGNh
c2UgdGhhdCBzaG91bGQgcnVuLgogaW50IFRlc3RDYXNlOjp0ZXN0X3RvX3J1bl9jb3VudCgpIGNv
bnN0IHsKICAgcmV0dXJuIENvdW50SWYodGVzdF9pbmZvX2xpc3RfLCBTaG91bGRSdW5UZXN0KTsK
QEAgLTIzNjIsMTMgKzI3MTMsMTUgQEAgaW50IFRlc3RDYXNlOjp0b3RhbF90ZXN0X2NvdW50KCkg
Y29uc3QgewogLy8gQXJndW1lbnRzOgogLy8KIC8vICAgbmFtZTogICAgICAgICBuYW1lIG9mIHRo
ZSB0ZXN0IGNhc2UKKy8vICAgYV90eXBlX3BhcmFtOiB0aGUgbmFtZSBvZiB0aGUgdGVzdCBjYXNl
J3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYKKy8vICAgICAgICAgICAgICAgICB0aGlzIGlz
IG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZS4KIC8vICAgc2V0
X3VwX3RjOiAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIHRlc3Qg
Y2FzZQogLy8gICB0ZWFyX2Rvd25fdGM6IHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgdGVh
cnMgZG93biB0aGUgdGVzdCBjYXNlCi1UZXN0Q2FzZTo6VGVzdENhc2UoY29uc3QgY2hhciogYV9u
YW1lLCBjb25zdCBjaGFyKiBhX2NvbW1lbnQsCitUZXN0Q2FzZTo6VGVzdENhc2UoY29uc3QgY2hh
ciogYV9uYW1lLCBjb25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sCiAgICAgICAgICAgICAgICAgICAg
VGVzdDo6U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAgICAgICAgICAgICAgICAgIFRl
c3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YykKICAgICA6IG5hbWVfKGFfbmFt
ZSksCi0gICAgICBjb21tZW50XyhhX2NvbW1lbnQpLAorICAgICAgdHlwZV9wYXJhbV8oYV90eXBl
X3BhcmFtID8gbmV3IHN0ZDo6c3RyaW5nKGFfdHlwZV9wYXJhbSkgOiBOVUxMKSwKICAgICAgIHNl
dF91cF90Y18oc2V0X3VwX3RjKSwKICAgICAgIHRlYXJfZG93bl90Y18odGVhcl9kb3duX3RjKSwK
ICAgICAgIHNob3VsZF9ydW5fKGZhbHNlKSwKQEAgLTI0MTMsNDUgKzI3NjYsMjcgQEAgdm9pZCBU
ZXN0Q2FzZTo6UnVuKCkgewogCiAgIHJlcGVhdGVyLT5PblRlc3RDYXNlU3RhcnQoKnRoaXMpOwog
ICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotICBz
ZXRfdXBfdGNfKCk7CisgIGludGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBv
cnRlZCgKKyAgICAgIHRoaXMsICZUZXN0Q2FzZTo6UnVuU2V0VXBUZXN0Q2FzZSwgIlNldFVwVGVz
dENhc2UoKSIpOwogCiAgIGNvbnN0IGludGVybmFsOjpUaW1lSW5NaWxsaXMgc3RhcnQgPSBpbnRl
cm5hbDo6R2V0VGltZUluTWlsbGlzKCk7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxfdGVz
dF9jb3VudCgpOyBpKyspIHsKLSAgICBHZXRNdXRhYmxlVGVzdEluZm8oaSktPmltcGwoKS0+UnVu
KCk7CisgICAgR2V0TXV0YWJsZVRlc3RJbmZvKGkpLT5SdW4oKTsKICAgfQogICBlbGFwc2VkX3Rp
bWVfID0gaW50ZXJuYWw6OkdldFRpbWVJbk1pbGxpcygpIC0gc3RhcnQ7CiAKICAgaW1wbC0+b3Nf
c3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgdGVhcl9kb3duX3Rj
XygpOworICBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisg
ICAgICB0aGlzLCAmVGVzdENhc2U6OlJ1blRlYXJEb3duVGVzdENhc2UsICJUZWFyRG93blRlc3RD
YXNlKCkiKTsKKwogICByZXBlYXRlci0+T25UZXN0Q2FzZUVuZCgqdGhpcyk7CiAgIGltcGwtPnNl
dF9jdXJyZW50X3Rlc3RfY2FzZShOVUxMKTsKIH0KIAogLy8gQ2xlYXJzIHRoZSByZXN1bHRzIG9m
IGFsbCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KIHZvaWQgVGVzdENhc2U6OkNsZWFyUmVzdWx0
KCkgewotICBGb3JFYWNoKHRlc3RfaW5mb19saXN0XywgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbDo6
Q2xlYXJUZXN0UmVzdWx0KTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0IHBhc3NlZC4K
LWJvb2wgVGVzdENhc2U6OlRlc3RQYXNzZWQoY29uc3QgVGVzdEluZm8gKiB0ZXN0X2luZm8pIHsK
LSAgY29uc3QgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbCogY29uc3QgaW1wbCA9IHRlc3RfaW5mby0+
aW1wbCgpOwotICByZXR1cm4gaW1wbC0+c2hvdWxkX3J1bigpICYmIGltcGwtPnJlc3VsdCgpLT5Q
YXNzZWQoKTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0IGZhaWxlZC4KLWJvb2wgVGVz
dENhc2U6OlRlc3RGYWlsZWQoY29uc3QgVGVzdEluZm8gKiB0ZXN0X2luZm8pIHsKLSAgY29uc3Qg
aW50ZXJuYWw6OlRlc3RJbmZvSW1wbCogY29uc3QgaW1wbCA9IHRlc3RfaW5mby0+aW1wbCgpOwot
ICByZXR1cm4gaW1wbC0+c2hvdWxkX3J1bigpICYmIGltcGwtPnJlc3VsdCgpLT5GYWlsZWQoKTsK
LX0KLQotLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0IGlzIGRpc2FibGVkLgotYm9vbCBUZXN0Q2Fz
ZTo6VGVzdERpc2FibGVkKGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKSB7Ci0gIHJldHVybiB0
ZXN0X2luZm8tPmltcGwoKS0+aXNfZGlzYWJsZWQoKTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlm
IHRoZSBnaXZlbiB0ZXN0IHNob3VsZCBydW4uCi1ib29sIFRlc3RDYXNlOjpTaG91bGRSdW5UZXN0
KGNvbnN0IFRlc3RJbmZvICp0ZXN0X2luZm8pIHsKLSAgcmV0dXJuIHRlc3RfaW5mby0+aW1wbCgp
LT5zaG91bGRfcnVuKCk7CisgIGFkX2hvY190ZXN0X3Jlc3VsdF8uQ2xlYXIoKTsKKyAgRm9yRWFj
aCh0ZXN0X2luZm9fbGlzdF8sIFRlc3RJbmZvOjpDbGVhclRlc3RSZXN1bHQpOwogfQogCiAvLyBT
aHVmZmxlcyB0aGUgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCkBAIC0yNDcxLDIwICsyODA2LDIw
IEBAIHZvaWQgVGVzdENhc2U6OlVuc2h1ZmZsZVRlc3RzKCkgewogLy8KIC8vIEZvcm1hdENvdW50
YWJsZU5vdW4oMSwgImZvcm11bGEiLCAiZm9ybXVsaSIpIHJldHVybnMgIjEgZm9ybXVsYSIuCiAv
LyBGb3JtYXRDb3VudGFibGVOb3VuKDUsICJib29rIiwgImJvb2tzIikgcmV0dXJucyAiNSBib29r
cyIuCi1zdGF0aWMgaW50ZXJuYWw6OlN0cmluZyBGb3JtYXRDb3VudGFibGVOb3VuKGludCBjb3Vu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqIHNpbmd1bGFyX2Zvcm0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIgKiBwbHVyYWxfZm9ybSkgewotICByZXR1cm4gaW50ZXJuYWw6OlN0
cmluZzo6Rm9ybWF0KCIlZCAlcyIsIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvdW50ID09IDEgPyBzaW5ndWxhcl9mb3JtIDogcGx1cmFsX2Zvcm0pOworc3RhdGlj
IHN0ZDo6c3RyaW5nIEZvcm1hdENvdW50YWJsZU5vdW4oaW50IGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIHNpbmd1bGFyX2Zvcm0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogcGx1cmFs
X2Zvcm0pIHsKKyAgcmV0dXJuIGludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcoY291bnQpICsg
IiAiICsKKyAgICAgIChjb3VudCA9PSAxID8gc2luZ3VsYXJfZm9ybSA6IHBsdXJhbF9mb3JtKTsK
IH0KIAogLy8gRm9ybWF0cyB0aGUgY291bnQgb2YgdGVzdHMuCi1zdGF0aWMgaW50ZXJuYWw6OlN0
cmluZyBGb3JtYXRUZXN0Q291bnQoaW50IHRlc3RfY291bnQpIHsKK3N0YXRpYyBzdGQ6OnN0cmlu
ZyBGb3JtYXRUZXN0Q291bnQoaW50IHRlc3RfY291bnQpIHsKICAgcmV0dXJuIEZvcm1hdENvdW50
YWJsZU5vdW4odGVzdF9jb3VudCwgInRlc3QiLCAidGVzdHMiKTsKIH0KIAogLy8gRm9ybWF0cyB0
aGUgY291bnQgb2YgdGVzdCBjYXNlcy4KLXN0YXRpYyBpbnRlcm5hbDo6U3RyaW5nIEZvcm1hdFRl
c3RDYXNlQ291bnQoaW50IHRlc3RfY2FzZV9jb3VudCkgeworc3RhdGljIHN0ZDo6c3RyaW5nIEZv
cm1hdFRlc3RDYXNlQ291bnQoaW50IHRlc3RfY2FzZV9jb3VudCkgewogICByZXR1cm4gRm9ybWF0
Q291bnRhYmxlTm91bih0ZXN0X2Nhc2VfY291bnQsICJ0ZXN0IGNhc2UiLCAidGVzdCBjYXNlcyIp
OwogfQogCkBAIC0yNTA0LDEzICsyODM5LDE1IEBAIHN0YXRpYyBjb25zdCBjaGFyICogVGVzdFBh
cnRSZXN1bHRUeXBlVG9TdHJpbmcoVGVzdFBhcnRSZXN1bHQ6OlR5cGUgdHlwZSkgewogI2Vsc2UK
ICAgICAgIHJldHVybiAiRmFpbHVyZVxuIjsKICNlbmRpZgorICAgIGRlZmF1bHQ6CisgICAgICBy
ZXR1cm4gIlVua25vd24gcmVzdWx0IHR5cGUiOwogICB9Ci0KLSAgcmV0dXJuICJVbmtub3duIHJl
c3VsdCB0eXBlIjsKIH0KIAotLy8gUHJpbnRzIGEgVGVzdFBhcnRSZXN1bHQgdG8gYSBTdHJpbmcu
Ci1zdGF0aWMgaW50ZXJuYWw6OlN0cmluZyBQcmludFRlc3RQYXJ0UmVzdWx0VG9TdHJpbmcoCitu
YW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBQcmludHMgYSBUZXN0UGFydFJlc3VsdCB0byBhbiBz
dGQ6OnN0cmluZy4KK3N0YXRpYyBzdGQ6OnN0cmluZyBQcmludFRlc3RQYXJ0UmVzdWx0VG9TdHJp
bmcoCiAgICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKICAgcmV0
dXJuIChNZXNzYWdlKCkKICAgICAgICAgICA8PCBpbnRlcm5hbDo6Rm9ybWF0RmlsZUxvY2F0aW9u
KHRlc3RfcGFydF9yZXN1bHQuZmlsZV9uYW1lKCksCkBAIC0yNTIxLDcgKzI4NTgsNyBAQCBzdGF0
aWMgaW50ZXJuYWw6OlN0cmluZyBQcmludFRlc3RQYXJ0UmVzdWx0VG9TdHJpbmcoCiAKIC8vIFBy
aW50cyBhIFRlc3RQYXJ0UmVzdWx0Lgogc3RhdGljIHZvaWQgUHJpbnRUZXN0UGFydFJlc3VsdChj
b25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgewotICBjb25zdCBpbnRlcm5h
bDo6U3RyaW5nJiByZXN1bHQgPQorICBjb25zdCBzdGQ6OnN0cmluZyYgcmVzdWx0ID0KICAgICAg
IFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmluZyh0ZXN0X3BhcnRfcmVzdWx0KTsKICAgcHJpbnRm
KCIlc1xuIiwgcmVzdWx0LmNfc3RyKCkpOwogICBmZmx1c2goc3Rkb3V0KTsKQEAgLTI1NDAsOCAr
Mjg3Nyw2IEBAIHN0YXRpYyB2b2lkIFByaW50VGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRS
ZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKIAogLy8gY2xhc3MgUHJldHR5VW5pdFRlc3RSZXN1
bHRQcmludGVyCiAKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KIGVudW0gR1Rlc3RDb2xvciB7CiAg
IENPTE9SX0RFRkFVTFQsCiAgIENPTE9SX1JFRCwKQEAgLTI1NDksNyArMjg4NCw4IEBAIGVudW0g
R1Rlc3RDb2xvciB7CiAgIENPTE9SX1lFTExPVwogfTsKIAotI2lmIEdURVNUX09TX1dJTkRPV1Mg
JiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUgJiYgXAorICAgICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYm
ICFHVEVTVF9PU19XSU5ET1dTX1JUCiAKIC8vIFJldHVybnMgdGhlIGNoYXJhY3RlciBhdHRyaWJ1
dGUgZm9yIHRoZSBnaXZlbiBjb2xvci4KIFdPUkQgR2V0Q29sb3JBdHRyaWJ1dGUoR1Rlc3RDb2xv
ciBjb2xvcikgewpAQCAtMjU5Miw2ICsyOTI4LDEyIEBAIGJvb2wgU2hvdWxkVXNlQ29sb3IoYm9v
bCBzdGRvdXRfaXNfdHR5KSB7CiAgICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAi
eHRlcm0iKSB8fAogICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgInh0ZXJtLWNv
bG9yIikgfHwKICAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJ4dGVybS0yNTZj
b2xvciIpIHx8CisgICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAic2NyZWVuIikg
fHwKKyAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJzY3JlZW4tMjU2Y29sb3Ii
KSB8fAorICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgInRtdXgiKSB8fAorICAg
ICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgInRtdXgtMjU2Y29sb3IiKSB8fAorICAg
ICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgInJ4dnQtdW5pY29kZSIpIHx8CisgICAg
ICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAicnh2dC11bmljb2RlLTI1NmNvbG9yIikg
fHwKICAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJsaW51eCIpIHx8CiAgICAg
ICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAiY3lnd2luIik7CiAgICAgcmV0dXJuIHN0
ZG91dF9pc190dHkgJiYgdGVybV9zdXBwb3J0c19jb2xvcjsKQEAgLTI2MTUsOCArMjk1Nyw5IEBA
IHZvaWQgQ29sb3JlZFByaW50ZihHVGVzdENvbG9yIGNvbG9yLCBjb25zdCBjaGFyKiBmbXQsIC4u
LikgewogICB2YV9saXN0IGFyZ3M7CiAgIHZhX3N0YXJ0KGFyZ3MsIGZtdCk7CiAKLSNpZiBHVEVT
VF9PU19XSU5ET1dTX01PQklMRSB8fCBHVEVTVF9PU19TWU1CSUFOIHx8IEdURVNUX09TX1pPUwot
ICBjb25zdCBib29sIHVzZV9jb2xvciA9IGZhbHNlOworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9C
SUxFIHx8IEdURVNUX09TX1NZTUJJQU4gfHwgR1RFU1RfT1NfWk9TIHx8IFwKKyAgICBHVEVTVF9P
U19JT1MgfHwgR1RFU1RfT1NfV0lORE9XU19QSE9ORSB8fCBHVEVTVF9PU19XSU5ET1dTX1JUCisg
IGNvbnN0IGJvb2wgdXNlX2NvbG9yID0gQWx3YXlzRmFsc2UoKTsKICNlbHNlCiAgIHN0YXRpYyBj
b25zdCBib29sIGluX2NvbG9yX21vZGUgPQogICAgICAgU2hvdWxkVXNlQ29sb3IocG9zaXg6Oklz
QVRUWShwb3NpeDo6RmlsZU5vKHN0ZG91dCkpICE9IDApOwpAQCAtMjYzMCw3ICsyOTczLDggQEAg
dm9pZCBDb2xvcmVkUHJpbnRmKEdUZXN0Q29sb3IgY29sb3IsIGNvbnN0IGNoYXIqIGZtdCwgLi4u
KSB7CiAgICAgcmV0dXJuOwogICB9CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9P
U19XSU5ET1dTX01PQklMRQorI2lmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRP
V1NfTU9CSUxFICYmIFwKKyAgICAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1Nf
V0lORE9XU19SVAogICBjb25zdCBIQU5ETEUgc3Rkb3V0X2hhbmRsZSA9IEdldFN0ZEhhbmRsZShT
VERfT1VUUFVUX0hBTkRMRSk7CiAKICAgLy8gR2V0cyB0aGUgY3VycmVudCB0ZXh0IGNvbG9yLgpA
QCAtMjY1Nyw2ICszMDAxLDI4IEBAIHZvaWQgQ29sb3JlZFByaW50ZihHVGVzdENvbG9yIGNvbG9y
LCBjb25zdCBjaGFyKiBmbXQsIC4uLikgewogICB2YV9lbmQoYXJncyk7CiB9CiAKKy8vIFRleHQg
cHJpbnRlZCBpbiBHb29nbGUgVGVzdCdzIHRleHQgb3V0cHV0IGFuZCAtLWd1bml0X2xpc3RfdGVz
dHMKKy8vIG91dHB1dCB0byBsYWJlbCB0aGUgdHlwZSBwYXJhbWV0ZXIgYW5kIHZhbHVlIHBhcmFt
ZXRlciBmb3IgYSB0ZXN0Lgorc3RhdGljIGNvbnN0IGNoYXIga1R5cGVQYXJhbUxhYmVsW10gPSAi
VHlwZVBhcmFtIjsKK3N0YXRpYyBjb25zdCBjaGFyIGtWYWx1ZVBhcmFtTGFiZWxbXSA9ICJHZXRQ
YXJhbSgpIjsKKwordm9pZCBQcmludEZ1bGxUZXN0Q29tbWVudElmUHJlc2VudChjb25zdCBUZXN0
SW5mbyYgdGVzdF9pbmZvKSB7CisgIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVfcGFyYW0gPSB0ZXN0
X2luZm8udHlwZV9wYXJhbSgpOworICBjb25zdCBjaGFyKiBjb25zdCB2YWx1ZV9wYXJhbSA9IHRl
c3RfaW5mby52YWx1ZV9wYXJhbSgpOworCisgIGlmICh0eXBlX3BhcmFtICE9IE5VTEwgfHwgdmFs
dWVfcGFyYW0gIT0gTlVMTCkgeworICAgIHByaW50ZigiLCB3aGVyZSAiKTsKKyAgICBpZiAodHlw
ZV9wYXJhbSAhPSBOVUxMKSB7CisgICAgICBwcmludGYoIiVzID0gJXMiLCBrVHlwZVBhcmFtTGFi
ZWwsIHR5cGVfcGFyYW0pOworICAgICAgaWYgKHZhbHVlX3BhcmFtICE9IE5VTEwpCisgICAgICAg
IHByaW50ZigiIGFuZCAiKTsKKyAgICB9CisgICAgaWYgKHZhbHVlX3BhcmFtICE9IE5VTEwpIHsK
KyAgICAgIHByaW50ZigiJXMgPSAlcyIsIGtWYWx1ZVBhcmFtTGFiZWwsIHZhbHVlX3BhcmFtKTsK
KyAgICB9CisgIH0KK30KKwogLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBUZXN0RXZlbnRM
aXN0ZW5lciBpbnRlcmZhY2UuCiAvLwogLy8gQ2xhc3MgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmlu
dGVyIGlzIGNvcHlhYmxlLgpAQCAtMjY4NCw4ICszMDUwLDYgQEAgY2xhc3MgUHJldHR5VW5pdFRl
c3RSZXN1bHRQcmludGVyIDogcHVibGljIFRlc3RFdmVudExpc3RlbmVyIHsKIAogIHByaXZhdGU6
CiAgIHN0YXRpYyB2b2lkIFByaW50RmFpbGVkVGVzdHMoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVz
dCk7Ci0KLSAgaW50ZXJuYWw6OlN0cmluZyB0ZXN0X2Nhc2VfbmFtZV87CiB9OwogCiAgIC8vIEZp
cmVkIGJlZm9yZSBlYWNoIGl0ZXJhdGlvbiBvZiB0ZXN0cyBzdGFydHMuCkBAIC0yNjk4LDE1ICsz
MDYyLDE2IEBAIHZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RJdGVyYXRp
b25TdGFydCgKIAogICAvLyBQcmludHMgdGhlIGZpbHRlciBpZiBpdCdzIG5vdCAqLiAgVGhpcyBy
ZW1pbmRzIHRoZSB1c2VyIHRoYXQgc29tZQogICAvLyB0ZXN0cyBtYXkgYmUgc2tpcHBlZC4KLSAg
aWYgKCFpbnRlcm5hbDo6U3RyaW5nOjpDU3RyaW5nRXF1YWxzKGZpbHRlciwga1VuaXZlcnNhbEZp
bHRlcikpIHsKKyAgaWYgKCFTdHJpbmc6OkNTdHJpbmdFcXVhbHMoZmlsdGVyLCBrVW5pdmVyc2Fs
RmlsdGVyKSkgewogICAgIENvbG9yZWRQcmludGYoQ09MT1JfWUVMTE9XLAogICAgICAgICAgICAg
ICAgICAgIk5vdGU6ICVzIGZpbHRlciA9ICVzXG4iLCBHVEVTVF9OQU1FXywgZmlsdGVyKTsKICAg
fQogCiAgIGlmIChpbnRlcm5hbDo6U2hvdWxkU2hhcmQoa1Rlc3RUb3RhbFNoYXJkcywga1Rlc3RT
aGFyZEluZGV4LCBmYWxzZSkpIHsKKyAgICBjb25zdCBJbnQzMiBzaGFyZF9pbmRleCA9IEludDMy
RnJvbUVudk9yRGllKGtUZXN0U2hhcmRJbmRleCwgLTEpOwogICAgIENvbG9yZWRQcmludGYoQ09M
T1JfWUVMTE9XLAotICAgICAgICAgICAgICAgICAgIk5vdGU6IFRoaXMgaXMgdGVzdCBzaGFyZCAl
cyBvZiAlcy5cbiIsCi0gICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cG9zaXg6OkdldEVudihr
VGVzdFNoYXJkSW5kZXgpLAorICAgICAgICAgICAgICAgICAgIk5vdGU6IFRoaXMgaXMgdGVzdCBz
aGFyZCAlZCBvZiAlcy5cbiIsCisgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHNo
YXJkX2luZGV4KSArIDEsCiAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cG9zaXg6OkdldEVu
dihrVGVzdFRvdGFsU2hhcmRzKSk7CiAgIH0KIApAQCAtMjczMSwyNyArMzA5NiwyMiBAQCB2b2lk
IFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0KAog
fQogCiB2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0Q2FzZVN0YXJ0KGNv
bnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKLSAgdGVzdF9jYXNlX25hbWVfID0gdGVzdF9jYXNl
Lm5hbWUoKTsKLSAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyBjb3VudHMgPQorICBjb25zdCBzdGQ6
OnN0cmluZyBjb3VudHMgPQogICAgICAgRm9ybWF0Q291bnRhYmxlTm91bih0ZXN0X2Nhc2UudGVz
dF90b19ydW5fY291bnQoKSwgInRlc3QiLCAidGVzdHMiKTsKICAgQ29sb3JlZFByaW50ZihDT0xP
Ul9HUkVFTiwgIlstLS0tLS0tLS0tXSAiKTsKLSAgcHJpbnRmKCIlcyBmcm9tICVzIiwgY291bnRz
LmNfc3RyKCksIHRlc3RfY2FzZV9uYW1lXy5jX3N0cigpKTsKLSAgaWYgKHRlc3RfY2FzZS5jb21t
ZW50KClbMF0gPT0gJ1wwJykgeworICBwcmludGYoIiVzIGZyb20gJXMiLCBjb3VudHMuY19zdHIo
KSwgdGVzdF9jYXNlLm5hbWUoKSk7CisgIGlmICh0ZXN0X2Nhc2UudHlwZV9wYXJhbSgpID09IE5V
TEwpIHsKICAgICBwcmludGYoIlxuIik7CiAgIH0gZWxzZSB7Ci0gICAgcHJpbnRmKCIsIHdoZXJl
ICVzXG4iLCB0ZXN0X2Nhc2UuY29tbWVudCgpKTsKKyAgICBwcmludGYoIiwgd2hlcmUgJXMgPSAl
c1xuIiwga1R5cGVQYXJhbUxhYmVsLCB0ZXN0X2Nhc2UudHlwZV9wYXJhbSgpKTsKICAgfQogICBm
Zmx1c2goc3Rkb3V0KTsKIH0KIAogdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9u
VGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKICAgQ29sb3JlZFByaW50ZihD
T0xPUl9HUkVFTiwgICJbIFJVTiAgICAgIF0gIik7Ci0gIFByaW50VGVzdE5hbWUodGVzdF9jYXNl
X25hbWVfLmNfc3RyKCksIHRlc3RfaW5mby5uYW1lKCkpOwotICBpZiAodGVzdF9pbmZvLmNvbW1l
bnQoKVswXSA9PSAnXDAnKSB7Ci0gICAgcHJpbnRmKCJcbiIpOwotICB9IGVsc2UgewotICAgIHBy
aW50ZigiLCB3aGVyZSAlc1xuIiwgdGVzdF9pbmZvLmNvbW1lbnQoKSk7Ci0gIH0KKyAgUHJpbnRU
ZXN0TmFtZSh0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7Cisg
IHByaW50ZigiXG4iKTsKICAgZmZsdXNoKHN0ZG91dCk7CiB9CiAKQEAgLTI3NzMsNyArMzEzMywx
MCBAQCB2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0RW5kKGNvbnN0IFRl
c3RJbmZvJiB0ZXN0X2luZm8pIHsKICAgfSBlbHNlIHsKICAgICBDb2xvcmVkUHJpbnRmKENPTE9S
X1JFRCwgIlsgIEZBSUxFRCAgXSAiKTsKICAgfQotICBQcmludFRlc3ROYW1lKHRlc3RfY2FzZV9u
YW1lXy5jX3N0cigpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgUHJpbnRUZXN0TmFtZSh0ZXN0X2lu
Zm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7CisgIGlmICh0ZXN0X2luZm8u
cmVzdWx0KCktPkZhaWxlZCgpKQorICAgIFByaW50RnVsbFRlc3RDb21tZW50SWZQcmVzZW50KHRl
c3RfaW5mbyk7CisKICAgaWYgKEdURVNUX0ZMQUcocHJpbnRfdGltZSkpIHsKICAgICBwcmludGYo
IiAoJXMgbXMpXG4iLCBpbnRlcm5hbDo6U3RyZWFtYWJsZVRvU3RyaW5nKAogICAgICAgICAgICB0
ZXN0X2luZm8ucmVzdWx0KCktPmVsYXBzZWRfdGltZSgpKS5jX3N0cigpKTsKQEAgLTI3ODYsMTIg
KzMxNDksMTEgQEAgdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdEVuZChj
b25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CiB2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJp
bnRlcjo6T25UZXN0Q2FzZUVuZChjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKSB7CiAgIGlmICgh
R1RFU1RfRkxBRyhwcmludF90aW1lKSkgcmV0dXJuOwogCi0gIHRlc3RfY2FzZV9uYW1lXyA9IHRl
c3RfY2FzZS5uYW1lKCk7Ci0gIGNvbnN0IGludGVybmFsOjpTdHJpbmcgY291bnRzID0KKyAgY29u
c3Qgc3RkOjpzdHJpbmcgY291bnRzID0KICAgICAgIEZvcm1hdENvdW50YWJsZU5vdW4odGVzdF9j
YXNlLnRlc3RfdG9fcnVuX2NvdW50KCksICJ0ZXN0IiwgInRlc3RzIik7CiAgIENvbG9yZWRQcmlu
dGYoQ09MT1JfR1JFRU4sICJbLS0tLS0tLS0tLV0gIik7CiAgIHByaW50ZigiJXMgZnJvbSAlcyAo
JXMgbXMgdG90YWwpXG5cbiIsCi0gICAgICAgICBjb3VudHMuY19zdHIoKSwgdGVzdF9jYXNlX25h
bWVfLmNfc3RyKCksCisgICAgICAgICBjb3VudHMuY19zdHIoKSwgdGVzdF9jYXNlLm5hbWUoKSwK
ICAgICAgICAgIGludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcodGVzdF9jYXNlLmVsYXBzZWRf
dGltZSgpKS5jX3N0cigpKTsKICAgZmZsdXNoKHN0ZG91dCk7CiB9CkBAIC0yODIyLDIxICszMTg0
LDE0IEBAIHZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludEZhaWxlZFRlc3Rz
KGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpIHsKICAgICAgIH0KICAgICAgIENvbG9yZWRQcmlu
dGYoQ09MT1JfUkVELCAiWyAgRkFJTEVEICBdICIpOwogICAgICAgcHJpbnRmKCIlcy4lcyIsIHRl
c3RfY2FzZS5uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOwotICAgICAgaWYgKHRlc3RfY2FzZS5j
b21tZW50KClbMF0gIT0gJ1wwJyB8fAotICAgICAgICAgIHRlc3RfaW5mby5jb21tZW50KClbMF0g
IT0gJ1wwJykgewotICAgICAgICBwcmludGYoIiwgd2hlcmUgJXMiLCB0ZXN0X2Nhc2UuY29tbWVu
dCgpKTsKLSAgICAgICAgaWYgKHRlc3RfY2FzZS5jb21tZW50KClbMF0gIT0gJ1wwJyAmJgotICAg
ICAgICAgICAgdGVzdF9pbmZvLmNvbW1lbnQoKVswXSAhPSAnXDAnKSB7Ci0gICAgICAgICAgcHJp
bnRmKCIgYW5kICIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBwcmludGYoIiVzXG4iLCB0
ZXN0X2luZm8uY29tbWVudCgpKTsKKyAgICAgIFByaW50RnVsbFRlc3RDb21tZW50SWZQcmVzZW50
KHRlc3RfaW5mbyk7CisgICAgICBwcmludGYoIlxuIik7CiAgICAgfQogICB9CiB9CiAKLSB2b2lk
IFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVu
aXRUZXN0JiB1bml0X3Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgLyppdGVyYXRpb24qLykgewordm9pZCBQcmV0dHlVbml0VGVz
dFJlc3VsdFByaW50ZXI6Ok9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgLyppdGVyYXRpb24qLykgewogICBDb2xvcmVkUHJpbnRmKENPTE9SX0dSRUVOLCAgIls9
PT09PT09PT09XSAiKTsKICAgcHJpbnRmKCIlcyBmcm9tICVzIHJhbi4iLAogICAgICAgICAgRm9y
bWF0VGVzdENvdW50KHVuaXRfdGVzdC50ZXN0X3RvX3J1bl9jb3VudCgpKS5jX3N0cigpLApAQCAt
Mjg1OSw3ICszMjE0LDcgQEAgdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6OlByaW50
RmFpbGVkVGVzdHMoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgbnVtX2ZhaWx1cmVzID09IDEgPyAiVEVTVCIgOiAiVEVTVFMiKTsKICAgfQogCi0g
IGludCBudW1fZGlzYWJsZWQgPSB1bml0X3Rlc3QuZGlzYWJsZWRfdGVzdF9jb3VudCgpOworICBp
bnQgbnVtX2Rpc2FibGVkID0gdW5pdF90ZXN0LnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3Vu
dCgpOwogICBpZiAobnVtX2Rpc2FibGVkICYmICFHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVk
X3Rlc3RzKSkgewogICAgIGlmICghbnVtX2ZhaWx1cmVzKSB7CiAgICAgICBwcmludGYoIlxuIik7
ICAvLyBBZGQgYSBzcGFjZXIgaWYgbm8gRkFJTFVSRSBiYW5uZXIgaXMgZGlzcGxheWVkLgpAQCAt
MzAxMywxOCArMzM2OCwyNyBAQCBjbGFzcyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIgOiBwdWJs
aWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CiAgIC8vIGlzX2F0dHJpYnV0ZSBpcyB0cnVlLCB0
aGUgdGV4dCBpcyBtZWFudCB0byBhcHBlYXIgYXMgYW4gYXR0cmlidXRlCiAgIC8vIHZhbHVlLCBh
bmQgbm9ybWFsaXphYmxlIHdoaXRlc3BhY2UgaXMgcHJlc2VydmVkIGJ5IHJlcGxhY2luZyBpdAog
ICAvLyB3aXRoIGNoYXJhY3RlciByZWZlcmVuY2VzLgotICBzdGF0aWMgU3RyaW5nIEVzY2FwZVht
bChjb25zdCBjaGFyKiBzdHIsIGJvb2wgaXNfYXR0cmlidXRlKTsKKyAgc3RhdGljIHN0ZDo6c3Ry
aW5nIEVzY2FwZVhtbChjb25zdCBzdGQ6OnN0cmluZyYgc3RyLCBib29sIGlzX2F0dHJpYnV0ZSk7
CiAKICAgLy8gUmV0dXJucyB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGggYWxsIGNoYXJhY3RlcnMgaW52
YWxpZCBpbiBYTUwgcmVtb3ZlZC4KLSAgc3RhdGljIFN0cmluZyBSZW1vdmVJbnZhbGlkWG1sQ2hh
cmFjdGVycyhjb25zdCBjaGFyKiBzdHIpOworICBzdGF0aWMgc3RkOjpzdHJpbmcgUmVtb3ZlSW52
YWxpZFhtbENoYXJhY3RlcnMoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cik7CiAKICAgLy8gQ29udmVu
aWVuY2Ugd3JhcHBlciBhcm91bmQgRXNjYXBlWG1sIHdoZW4gc3RyIGlzIGFuIGF0dHJpYnV0ZSB2
YWx1ZS4KLSAgc3RhdGljIFN0cmluZyBFc2NhcGVYbWxBdHRyaWJ1dGUoY29uc3QgY2hhciogc3Ry
KSB7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFc2NhcGVYbWxBdHRyaWJ1dGUoY29uc3Qgc3RkOjpz
dHJpbmcmIHN0cikgewogICAgIHJldHVybiBFc2NhcGVYbWwoc3RyLCB0cnVlKTsKICAgfQogCiAg
IC8vIENvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIEVzY2FwZVhtbCB3aGVuIHN0ciBpcyBub3Qg
YW4gYXR0cmlidXRlIHZhbHVlLgotICBzdGF0aWMgU3RyaW5nIEVzY2FwZVhtbFRleHQoY29uc3Qg
Y2hhciogc3RyKSB7IHJldHVybiBFc2NhcGVYbWwoc3RyLCBmYWxzZSk7IH0KKyAgc3RhdGljIHN0
ZDo6c3RyaW5nIEVzY2FwZVhtbFRleHQoY29uc3QgY2hhciogc3RyKSB7CisgICAgcmV0dXJuIEVz
Y2FwZVhtbChzdHIsIGZhbHNlKTsKKyAgfQorCisgIC8vIFZlcmlmaWVzIHRoYXQgdGhlIGdpdmVu
IGF0dHJpYnV0ZSBiZWxvbmdzIHRvIHRoZSBnaXZlbiBlbGVtZW50IGFuZAorICAvLyBzdHJlYW1z
IHRoZSBhdHRyaWJ1dGUgYXMgWE1MLgorICBzdGF0aWMgdm9pZCBPdXRwdXRYbWxBdHRyaWJ1dGUo
c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgZWxlbWVudF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpOwogCiAgIC8vIFN0cmVhbXMgYW4g
WE1MIENEQVRBIHNlY3Rpb24sIGVzY2FwaW5nIGludmFsaWQgQ0RBVEEgc2VxdWVuY2VzIGFzIG5l
ZWRlZC4KICAgc3RhdGljIHZvaWQgT3V0cHV0WG1sQ0RhdGFTZWN0aW9uKDo6c3RkOjpvc3RyZWFt
KiBzdHJlYW0sIGNvbnN0IGNoYXIqIGRhdGEpOwpAQCAtMzAzNSwxOSArMzM5OSwyMSBAQCBjbGFz
cyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5l
ciB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RJbmZvJiB0ZXN0
X2luZm8pOwogCiAgIC8vIFByaW50cyBhbiBYTUwgcmVwcmVzZW50YXRpb24gb2YgYSBUZXN0Q2Fz
ZSBvYmplY3QKLSAgc3RhdGljIHZvaWQgUHJpbnRYbWxUZXN0Q2FzZShGSUxFKiBvdXQsIGNvbnN0
IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpOworICBzdGF0aWMgdm9pZCBQcmludFhtbFRlc3RDYXNlKDo6
c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVGVzdENhc2UmIHRlc3RfY2FzZSk7CiAKICAgLy8gUHJpbnRzIGFuIFhNTCBzdW1tYXJ5IG9m
IHVuaXRfdGVzdCB0byBvdXRwdXQgc3RyZWFtIG91dC4KLSAgc3RhdGljIHZvaWQgUHJpbnRYbWxV
bml0VGVzdChGSUxFKiBvdXQsIGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpOworICBzdGF0aWMg
dm9pZCBQcmludFhtbFVuaXRUZXN0KDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCk7CiAKICAgLy8g
UHJvZHVjZXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0ZXN0IHByb3BlcnRpZXMgaW4gYSBy
ZXN1bHQgYXMgc3BhY2UKICAgLy8gZGVsaW1pdGVkIFhNTCBhdHRyaWJ1dGVzIGJhc2VkIG9uIHRo
ZSBwcm9wZXJ0eSBrZXk9InZhbHVlIiBwYWlycy4KLSAgLy8gV2hlbiB0aGUgU3RyaW5nIGlzIG5v
dCBlbXB0eSwgaXQgaW5jbHVkZXMgYSBzcGFjZSBhdCB0aGUgYmVnaW5uaW5nLAorICAvLyBXaGVu
IHRoZSBzdGQ6OnN0cmluZyBpcyBub3QgZW1wdHksIGl0IGluY2x1ZGVzIGEgc3BhY2UgYXQgdGhl
IGJlZ2lubmluZywKICAgLy8gdG8gZGVsaW1pdCB0aGlzIGF0dHJpYnV0ZSBmcm9tIHByaW9yIGF0
dHJpYnV0ZXMuCi0gIHN0YXRpYyBTdHJpbmcgVGVzdFByb3BlcnRpZXNBc1htbEF0dHJpYnV0ZXMo
Y29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0KTsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIFRlc3RQcm9w
ZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCk7CiAKICAgLy8g
VGhlIG91dHB1dCBmaWxlLgotICBjb25zdCBTdHJpbmcgb3V0cHV0X2ZpbGVfOworICBjb25zdCBz
dGQ6OnN0cmluZyBvdXRwdXRfZmlsZV87CiAKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOXyhYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIpOwogfTsKQEAgLTMwODksNyArMzQ1NSw5IEBA
IHZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RJdGVyYXRpb25FbmQoY29uc3Qg
VW5pdFRlc3QmIHVuaXRfdGVzdCwKICAgICBmZmx1c2goc3RkZXJyKTsKICAgICBleGl0KEVYSVRf
RkFJTFVSRSk7CiAgIH0KLSAgUHJpbnRYbWxVbml0VGVzdCh4bWxvdXQsIHVuaXRfdGVzdCk7Cisg
IHN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgUHJpbnRYbWxVbml0VGVzdCgmc3RyZWFtLCB1
bml0X3Rlc3QpOworICBmcHJpbnRmKHhtbG91dCwgIiVzIiwgU3RyaW5nU3RyZWFtVG9TdHJpbmco
JnN0cmVhbSkuY19zdHIoKSk7CiAgIGZjbG9zZSh4bWxvdXQpOwogfQogCkBAIC0zMTA1LDQyICsz
NDczLDQzIEBAIHZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RJdGVyYXRpb25F
bmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwKIC8vIG1vc3QgaW52YWxpZCBjaGFyYWN0ZXJz
IGNhbiBiZSByZXRhaW5lZCB1c2luZyBjaGFyYWN0ZXIgcmVmZXJlbmNlcy4KIC8vIFRPRE8od2Fu
KTogSXQgbWlnaHQgYmUgbmljZSB0byBoYXZlIGEgbWluaW1hbGx5IGludmFzaXZlLCBodW1hbi1y
ZWFkYWJsZQogLy8gZXNjYXBpbmcgc2NoZW1lIGZvciBpbnZhbGlkIGNoYXJhY3RlcnMsIHJhdGhl
ciB0aGFuIGRyb3BwaW5nIHRoZW0uCi1TdHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpF
c2NhcGVYbWwoY29uc3QgY2hhciogc3RyLCBib29sIGlzX2F0dHJpYnV0ZSkgeworc3RkOjpzdHJp
bmcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpFc2NhcGVYbWwoCisgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIHN0ciwgYm9vbCBpc19hdHRyaWJ1dGUpIHsKICAgTWVzc2FnZSBtOwogCi0gIGlmIChz
dHIgIT0gTlVMTCkgewotICAgIGZvciAoY29uc3QgY2hhciogc3JjID0gc3RyOyAqc3JjOyArK3Ny
YykgewotICAgICAgc3dpdGNoICgqc3JjKSB7Ci0gICAgICAgIGNhc2UgJzwnOgotICAgICAgICAg
IG0gPDwgIiZsdDsiOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICc+JzoKLSAgICAg
ICAgICBtIDw8ICImZ3Q7IjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnJic6Ci0g
ICAgICAgICAgbSA8PCAiJmFtcDsiOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdc
Jyc6Ci0gICAgICAgICAgaWYgKGlzX2F0dHJpYnV0ZSkKLSAgICAgICAgICAgIG0gPDwgIiZhcG9z
OyI7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgbSA8PCAnXCcnOwotICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlICciJzoKLSAgICAgICAgICBpZiAoaXNfYXR0cmlidXRlKQotICAg
ICAgICAgICAgbSA8PCAiJnF1b3Q7IjsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHIuc2l6
ZSgpOyArK2kpIHsKKyAgICBjb25zdCBjaGFyIGNoID0gc3RyW2ldOworICAgIHN3aXRjaCAoY2gp
IHsKKyAgICAgIGNhc2UgJzwnOgorICAgICAgICBtIDw8ICImbHQ7IjsKKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlICc+JzoKKyAgICAgICAgbSA8PCAiJmd0OyI7CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSAnJic6CisgICAgICAgIG0gPDwgIiZhbXA7IjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlICdcJyc6CisgICAgICAgIGlmIChpc19hdHRyaWJ1dGUpCisgICAgICAgICAgbSA8
PCAiJmFwb3M7IjsKKyAgICAgICAgZWxzZQorICAgICAgICAgIG0gPDwgJ1wnJzsKKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlICciJzoKKyAgICAgICAgaWYgKGlzX2F0dHJpYnV0ZSkKKyAgICAg
ICAgICBtIDw8ICImcXVvdDsiOworICAgICAgICBlbHNlCisgICAgICAgICAgbSA8PCAnIic7Cisg
ICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKElzVmFsaWRYbWxDaGFy
YWN0ZXIoY2gpKSB7CisgICAgICAgICAgaWYgKGlzX2F0dHJpYnV0ZSAmJiBJc05vcm1hbGl6YWJs
ZVdoaXRlc3BhY2UoY2gpKQorICAgICAgICAgICAgbSA8PCAiJiN4IiA8PCBTdHJpbmc6OkZvcm1h
dEJ5dGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKQorICAgICAgICAgICAgICA8PCAi
OyI7CiAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgbSA8PCAnIic7Ci0gICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgaWYgKElzVmFsaWRYbWxDaGFyYWN0ZXIo
KnNyYykpIHsKLSAgICAgICAgICAgIGlmIChpc19hdHRyaWJ1dGUgJiYgSXNOb3JtYWxpemFibGVX
aGl0ZXNwYWNlKCpzcmMpKQotICAgICAgICAgICAgICBtIDw8IFN0cmluZzo6Rm9ybWF0KCImI3gl
MDJYOyIsIHVuc2lnbmVkKCpzcmMpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
bSA8PCAqc3JjOwotICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLSAgICAgIH0KKyAgICAg
ICAgICAgIG0gPDwgY2g7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgfQogICB9CiAK
QEAgLTMxNTAsMTcgKzM1MTksMTUgQEAgU3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6
RXNjYXBlWG1sKGNvbnN0IGNoYXIqIHN0ciwgYm9vbCBpc19hdHRyaWJ1dGUpIHsKIC8vIFJldHVy
bnMgdGhlIGdpdmVuIHN0cmluZyB3aXRoIGFsbCBjaGFyYWN0ZXJzIGludmFsaWQgaW4gWE1MIHJl
bW92ZWQuCiAvLyBDdXJyZW50bHkgaW52YWxpZCBjaGFyYWN0ZXJzIGFyZSBkcm9wcGVkIGZyb20g
dGhlIHN0cmluZy4gQW4KIC8vIGFsdGVybmF0aXZlIGlzIHRvIHJlcGxhY2UgdGhlbSB3aXRoIGNl
cnRhaW4gY2hhcmFjdGVycyBzdWNoIGFzIC4gb3IgPy4KLVN0cmluZyBYbWxVbml0VGVzdFJlc3Vs
dFByaW50ZXI6OlJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIHN0cikgewot
ICBjaGFyKiBjb25zdCBvdXRwdXQgPSBuZXcgY2hhcltzdHJsZW4oc3RyKSArIDFdOwotICBjaGFy
KiBhcHBlbmRlciA9IG91dHB1dDsKLSAgZm9yIChjaGFyIGNoID0gKnN0cjsgY2ggIT0gJ1wwJzsg
Y2ggPSAqKytzdHIpCi0gICAgaWYgKElzVmFsaWRYbWxDaGFyYWN0ZXIoY2gpKQotICAgICAgKmFw
cGVuZGVyKysgPSBjaDsKLSAgKmFwcGVuZGVyID0gJ1wwJzsKK3N0ZDo6c3RyaW5nIFhtbFVuaXRU
ZXN0UmVzdWx0UHJpbnRlcjo6UmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoCisgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIHN0cikgeworICBzdGQ6OnN0cmluZyBvdXRwdXQ7CisgIG91dHB1dC5yZXNl
cnZlKHN0ci5zaXplKCkpOworICBmb3IgKHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvciBpdCA9
IHN0ci5iZWdpbigpOyBpdCAhPSBzdHIuZW5kKCk7ICsraXQpCisgICAgaWYgKElzVmFsaWRYbWxD
aGFyYWN0ZXIoKml0KSkKKyAgICAgIG91dHB1dC5wdXNoX2JhY2soKml0KTsKIAotICBTdHJpbmcg
cmV0X3ZhbHVlKG91dHB1dCk7Ci0gIGRlbGV0ZVtdIG91dHB1dDsKLSAgcmV0dXJuIHJldF92YWx1
ZTsKKyAgcmV0dXJuIG91dHB1dDsKIH0KIAogLy8gVGhlIGZvbGxvd2luZyByb3V0aW5lcyBnZW5l
cmF0ZSBhbiBYTUwgcmVwcmVzZW50YXRpb24gb2YgYSBVbml0VGVzdApAQCAtMzE4MiwxMCArMzU0
OSw0MSBAQCBTdHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpSZW1vdmVJbnZhbGlkWG1s
Q2hhcmFjdGVycyhjb25zdCBjaGFyKiBzdHIpIHsKIC8vIEZvcm1hdHMgdGhlIGdpdmVuIHRpbWUg
aW4gbWlsbGlzZWNvbmRzIGFzIHNlY29uZHMuCiBzdGQ6OnN0cmluZyBGb3JtYXRUaW1lSW5NaWxs
aXNBc1NlY29uZHMoVGltZUluTWlsbGlzIG1zKSB7CiAgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7
Ci0gIHNzIDw8IG1zLzEwMDAuMDsKKyAgc3MgPDwgKHN0YXRpY19jYXN0PGRvdWJsZT4obXMpICog
MWUtMyk7CiAgIHJldHVybiBzcy5zdHIoKTsKIH0KIAorc3RhdGljIGJvb2wgUG9ydGFibGVMb2Nh
bHRpbWUodGltZV90IHNlY29uZHMsIHN0cnVjdCB0bSogb3V0KSB7CisjaWYgZGVmaW5lZChfTVND
X1ZFUikKKyAgcmV0dXJuIGxvY2FsdGltZV9zKG91dCwgJnNlY29uZHMpID09IDA7CisjZWxpZiBk
ZWZpbmVkKF9fTUlOR1czMl9fKSB8fCBkZWZpbmVkKF9fTUlOR1c2NF9fKQorICAvLyBNSU5HVyA8
dGltZS5oPiBwcm92aWRlcyBuZWl0aGVyIGxvY2FsdGltZV9yIG5vciBsb2NhbHRpbWVfcywgYnV0
IHVzZXMKKyAgLy8gV2luZG93cycgbG9jYWx0aW1lKCksIHdoaWNoIGhhcyBhIHRocmVhZC1sb2Nh
bCB0bSBidWZmZXIuCisgIHN0cnVjdCB0bSogdG1fcHRyID0gbG9jYWx0aW1lKCZzZWNvbmRzKTsg
IC8vIE5PTElOVAorICBpZiAodG1fcHRyID09IE5VTEwpCisgICAgcmV0dXJuIGZhbHNlOworICAq
b3V0ID0gKnRtX3B0cjsKKyAgcmV0dXJuIHRydWU7CisjZWxzZQorICByZXR1cm4gbG9jYWx0aW1l
X3IoJnNlY29uZHMsIG91dCkgIT0gTlVMTDsKKyNlbmRpZgorfQorCisvLyBDb252ZXJ0cyB0aGUg
Z2l2ZW4gZXBvY2ggdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gYSBkYXRlIHN0cmluZyBpbiB0aGUg
SVNPCisvLyA4NjAxIGZvcm1hdCwgd2l0aG91dCB0aGUgdGltZXpvbmUgaW5mb3JtYXRpb24uCitz
dGQ6OnN0cmluZyBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMShUaW1lSW5NaWxsaXMg
bXMpIHsKKyAgc3RydWN0IHRtIHRpbWVfc3RydWN0OworICBpZiAoIVBvcnRhYmxlTG9jYWx0aW1l
KHN0YXRpY19jYXN0PHRpbWVfdD4obXMgLyAxMDAwKSwgJnRpbWVfc3RydWN0KSkKKyAgICByZXR1
cm4gIiI7CisgIC8vIFlZWVktTU0tRERUaGg6bW06c3MKKyAgcmV0dXJuIFN0cmVhbWFibGVUb1N0
cmluZyh0aW1lX3N0cnVjdC50bV95ZWFyICsgMTkwMCkgKyAiLSIgKworICAgICAgU3RyaW5nOjpG
b3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1fbW9uICsgMSkgKyAiLSIgKworICAgICAgU3Ry
aW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1fbWRheSkgKyAiVCIgKworICAgICAg
U3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1faG91cikgKyAiOiIgKworICAg
ICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1fbWluKSArICI6IiArCisg
ICAgICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9zZWMpOworfQorCiAv
LyBTdHJlYW1zIGFuIFhNTCBDREFUQSBzZWN0aW9uLCBlc2NhcGluZyBpbnZhbGlkIENEQVRBIHNl
cXVlbmNlcyBhcyBuZWVkZWQuCiB2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T3V0cHV0
WG1sQ0RhdGFTZWN0aW9uKDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEpIHsK
QEAgLTMyMDYsMzUgKzM2MDQsNjMgQEAgdm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91
dHB1dFhtbENEYXRhU2VjdGlvbig6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAogICAqc3RyZWFtIDw8
ICJdXT4iOwogfQogCit2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T3V0cHV0WG1sQXR0
cmlidXRlKAorICAgIHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBlbGVtZW50X25hbWUsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCisgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIHZhbHVlKSB7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYg
YWxsb3dlZF9uYW1lcyA9CisgICAgICBHZXRSZXNlcnZlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KGVs
ZW1lbnRfbmFtZSk7CisKKyAgR1RFU1RfQ0hFQ0tfKHN0ZDo6ZmluZChhbGxvd2VkX25hbWVzLmJl
Z2luKCksIGFsbG93ZWRfbmFtZXMuZW5kKCksIG5hbWUpICE9CisgICAgICAgICAgICAgICAgICAg
YWxsb3dlZF9uYW1lcy5lbmQoKSkKKyAgICAgIDw8ICJBdHRyaWJ1dGUgIiA8PCBuYW1lIDw8ICIg
aXMgbm90IGFsbG93ZWQgZm9yIGVsZW1lbnQgPCIgPDwgZWxlbWVudF9uYW1lCisgICAgICA8PCAi
Pi4iOworCisgICpzdHJlYW0gPDwgIiAiIDw8IG5hbWUgPDwgIj1cIiIgPDwgRXNjYXBlWG1sQXR0
cmlidXRlKHZhbHVlKSA8PCAiXCIiOworfQorCiAvLyBQcmludHMgYW4gWE1MIHJlcHJlc2VudGF0
aW9uIG9mIGEgVGVzdEluZm8gb2JqZWN0LgogLy8gVE9ETyh3YW4pOiBUaGVyZSBpcyBhbHNvIHZh
bHVlIGluIHByaW50aW5nIHByb3BlcnRpZXMgd2l0aCB0aGUgcGxhaW4gcHJpbnRlci4KIHZvaWQg
WG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPdXRwdXRYbWxUZXN0SW5mbyg6OnN0ZDo6b3N0cmVh
bSogc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKICAg
Y29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0ID0gKnRlc3RfaW5mby5yZXN1bHQoKTsKLSAgKnN0cmVh
bSA8PCAiICAgIDx0ZXN0Y2FzZSBuYW1lPVwiIgotICAgICAgICAgIDw8IEVzY2FwZVhtbEF0dHJp
YnV0ZSh0ZXN0X2luZm8ubmFtZSgpKS5jX3N0cigpCi0gICAgICAgICAgPDwgIlwiIHN0YXR1cz1c
IiIKLSAgICAgICAgICA8PCAodGVzdF9pbmZvLnNob3VsZF9ydW4oKSA/ICJydW4iIDogIm5vdHJ1
biIpCi0gICAgICAgICAgPDwgIlwiIHRpbWU9XCIiCi0gICAgICAgICAgPDwgRm9ybWF0VGltZUlu
TWlsbGlzQXNTZWNvbmRzKHJlc3VsdC5lbGFwc2VkX3RpbWUoKSkKLSAgICAgICAgICA8PCAiXCIg
Y2xhc3NuYW1lPVwiIiA8PCBFc2NhcGVYbWxBdHRyaWJ1dGUodGVzdF9jYXNlX25hbWUpLmNfc3Ry
KCkKLSAgICAgICAgICA8PCAiXCIiIDw8IFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKHJl
c3VsdCkuY19zdHIoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RjYXNlID0gInRlc3RjYXNl
IjsKKworICAqc3RyZWFtIDw8ICIgICAgPHRlc3RjYXNlIjsKKyAgT3V0cHV0WG1sQXR0cmlidXRl
KHN0cmVhbSwga1Rlc3RjYXNlLCAibmFtZSIsIHRlc3RfaW5mby5uYW1lKCkpOworCisgIGlmICh0
ZXN0X2luZm8udmFsdWVfcGFyYW0oKSAhPSBOVUxMKSB7CisgICAgT3V0cHV0WG1sQXR0cmlidXRl
KHN0cmVhbSwga1Rlc3RjYXNlLCAidmFsdWVfcGFyYW0iLAorICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0X2luZm8udmFsdWVfcGFyYW0oKSk7CisgIH0KKyAgaWYgKHRlc3RfaW5mby50eXBlX3Bh
cmFtKCkgIT0gTlVMTCkgeworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2Fz
ZSwgInR5cGVfcGFyYW0iLCB0ZXN0X2luZm8udHlwZV9wYXJhbSgpKTsKKyAgfQorCisgIE91dHB1
dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgInN0YXR1cyIsCisgICAgICAgICAgICAg
ICAgICAgICB0ZXN0X2luZm8uc2hvdWxkX3J1bigpID8gInJ1biIgOiAibm90cnVuIik7CisgIE91
dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgInRpbWUiLAorICAgICAgICAgICAg
ICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKHJlc3VsdC5lbGFwc2VkX3RpbWUo
KSkpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJjbGFzc25hbWUi
LCB0ZXN0X2Nhc2VfbmFtZSk7CisgICpzdHJlYW0gPDwgVGVzdFByb3BlcnRpZXNBc1htbEF0dHJp
YnV0ZXMocmVzdWx0KTsKIAogICBpbnQgZmFpbHVyZXMgPSAwOwogICBmb3IgKGludCBpID0gMDsg
aSA8IHJlc3VsdC50b3RhbF9wYXJ0X2NvdW50KCk7ICsraSkgewogICAgIGNvbnN0IFRlc3RQYXJ0
UmVzdWx0JiBwYXJ0ID0gcmVzdWx0LkdldFRlc3RQYXJ0UmVzdWx0KGkpOwogICAgIGlmIChwYXJ0
LmZhaWxlZCgpKSB7Ci0gICAgICBpZiAoKytmYWlsdXJlcyA9PSAxKQorICAgICAgaWYgKCsrZmFp
bHVyZXMgPT0gMSkgewogICAgICAgICAqc3RyZWFtIDw8ICI+XG4iOworICAgICAgfQorICAgICAg
Y29uc3Qgc3RyaW5nIGxvY2F0aW9uID0gaW50ZXJuYWw6OkZvcm1hdENvbXBpbGVySW5kZXBlbmRl
bnRGaWxlTG9jYXRpb24oCisgICAgICAgICAgcGFydC5maWxlX25hbWUoKSwgcGFydC5saW5lX251
bWJlcigpKTsKKyAgICAgIGNvbnN0IHN0cmluZyBzdW1tYXJ5ID0gbG9jYXRpb24gKyAiXG4iICsg
cGFydC5zdW1tYXJ5KCk7CiAgICAgICAqc3RyZWFtIDw8ICIgICAgICA8ZmFpbHVyZSBtZXNzYWdl
PVwiIgotICAgICAgICAgICAgICA8PCBFc2NhcGVYbWxBdHRyaWJ1dGUocGFydC5zdW1tYXJ5KCkp
LmNfc3RyKCkKKyAgICAgICAgICAgICAgPDwgRXNjYXBlWG1sQXR0cmlidXRlKHN1bW1hcnkuY19z
dHIoKSkKICAgICAgICAgICAgICAgPDwgIlwiIHR5cGU9XCJcIj4iOwotICAgICAgY29uc3QgU3Ry
aW5nIG1lc3NhZ2UgPSBSZW1vdmVJbnZhbGlkWG1sQ2hhcmFjdGVycyhTdHJpbmc6OkZvcm1hdCgK
LSAgICAgICAgICAiJXM6JWRcbiVzIiwKLSAgICAgICAgICBwYXJ0LmZpbGVfbmFtZSgpLCBwYXJ0
LmxpbmVfbnVtYmVyKCksCi0gICAgICAgICAgcGFydC5tZXNzYWdlKCkpLmNfc3RyKCkpOwotICAg
ICAgT3V0cHV0WG1sQ0RhdGFTZWN0aW9uKHN0cmVhbSwgbWVzc2FnZS5jX3N0cigpKTsKKyAgICAg
IGNvbnN0IHN0cmluZyBkZXRhaWwgPSBsb2NhdGlvbiArICJcbiIgKyBwYXJ0Lm1lc3NhZ2UoKTsK
KyAgICAgIE91dHB1dFhtbENEYXRhU2VjdGlvbihzdHJlYW0sIFJlbW92ZUludmFsaWRYbWxDaGFy
YWN0ZXJzKGRldGFpbCkuY19zdHIoKSk7CiAgICAgICAqc3RyZWFtIDw8ICI8L2ZhaWx1cmU+XG4i
OwogICAgIH0KICAgfQpAQCAtMzI0Niw0OSArMzY3Miw3MyBAQCB2b2lkIFhtbFVuaXRUZXN0UmVz
dWx0UHJpbnRlcjo6T3V0cHV0WG1sVGVzdEluZm8oOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKIH0K
IAogLy8gUHJpbnRzIGFuIFhNTCByZXByZXNlbnRhdGlvbiBvZiBhIFRlc3RDYXNlIG9iamVjdAot
dm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlByaW50WG1sVGVzdENhc2UoRklMRSogb3V0
LAordm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlByaW50WG1sVGVzdENhc2Uoc3RkOjpv
c3RyZWFtKiBzdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKSB7Ci0gIGZwcmludGYob3V0LAotICAg
ICAgICAgICIgIDx0ZXN0c3VpdGUgbmFtZT1cIiVzXCIgdGVzdHM9XCIlZFwiIGZhaWx1cmVzPVwi
JWRcIiAiCi0gICAgICAgICAgImRpc2FibGVkPVwiJWRcIiAiLAotICAgICAgICAgIEVzY2FwZVht
bEF0dHJpYnV0ZSh0ZXN0X2Nhc2UubmFtZSgpKS5jX3N0cigpLAotICAgICAgICAgIHRlc3RfY2Fz
ZS50b3RhbF90ZXN0X2NvdW50KCksCi0gICAgICAgICAgdGVzdF9jYXNlLmZhaWxlZF90ZXN0X2Nv
dW50KCksCi0gICAgICAgICAgdGVzdF9jYXNlLmRpc2FibGVkX3Rlc3RfY291bnQoKSk7Ci0gIGZw
cmludGYob3V0LAotICAgICAgICAgICJlcnJvcnM9XCIwXCIgdGltZT1cIiVzXCI+XG4iLAotICAg
ICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyh0ZXN0X2Nhc2UuZWxhcHNlZF90aW1l
KCkpLmNfc3RyKCkpOworICBjb25zdCBzdGQ6OnN0cmluZyBrVGVzdHN1aXRlID0gInRlc3RzdWl0
ZSI7CisgICpzdHJlYW0gPDwgIiAgPCIgPDwga1Rlc3RzdWl0ZTsKKyAgT3V0cHV0WG1sQXR0cmli
dXRlKHN0cmVhbSwga1Rlc3RzdWl0ZSwgIm5hbWUiLCB0ZXN0X2Nhc2UubmFtZSgpKTsKKyAgT3V0
cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZSwgInRlc3RzIiwKKyAgICAgICAgICAg
ICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh0ZXN0X2Nhc2UucmVwb3J0YWJsZV90ZXN0X2Nv
dW50KCkpKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZSwgImZhaWx1
cmVzIiwKKyAgICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh0ZXN0X2Nhc2Uu
ZmFpbGVkX3Rlc3RfY291bnQoKSkpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoCisgICAgICBzdHJl
YW0sIGtUZXN0c3VpdGUsICJkaXNhYmxlZCIsCisgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodGVz
dF9jYXNlLnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpKSk7CisgIE91dHB1dFhtbEF0
dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUsICJlcnJvcnMiLCAiMCIpOworICBPdXRwdXRYbWxB
dHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlLCAidGltZSIsCisgICAgICAgICAgICAgICAgICAg
ICBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHModGVzdF9jYXNlLmVsYXBzZWRfdGltZSgpKSk7
CisgICpzdHJlYW0gPDwgVGVzdFByb3BlcnRpZXNBc1htbEF0dHJpYnV0ZXModGVzdF9jYXNlLmFk
X2hvY190ZXN0X3Jlc3VsdCgpKQorICAgICAgICAgIDw8ICI+XG4iOworCiAgIGZvciAoaW50IGkg
PSAwOyBpIDwgdGVzdF9jYXNlLnRvdGFsX3Rlc3RfY291bnQoKTsgKytpKSB7Ci0gICAgU3RyU3Ry
ZWFtIHN0cmVhbTsKLSAgICBPdXRwdXRYbWxUZXN0SW5mbygmc3RyZWFtLCB0ZXN0X2Nhc2UubmFt
ZSgpLCAqdGVzdF9jYXNlLkdldFRlc3RJbmZvKGkpKTsKLSAgICBmcHJpbnRmKG91dCwgIiVzIiwg
U3RyU3RyZWFtVG9TdHJpbmcoJnN0cmVhbSkuY19zdHIoKSk7CisgICAgaWYgKHRlc3RfY2FzZS5H
ZXRUZXN0SW5mbyhpKS0+aXNfcmVwb3J0YWJsZSgpKQorICAgICAgT3V0cHV0WG1sVGVzdEluZm8o
c3RyZWFtLCB0ZXN0X2Nhc2UubmFtZSgpLCAqdGVzdF9jYXNlLkdldFRlc3RJbmZvKGkpKTsKICAg
fQotICBmcHJpbnRmKG91dCwgIiAgPC90ZXN0c3VpdGU+XG4iKTsKKyAgKnN0cmVhbSA8PCAiICA8
LyIgPDwga1Rlc3RzdWl0ZSA8PCAiPlxuIjsKIH0KIAogLy8gUHJpbnRzIGFuIFhNTCBzdW1tYXJ5
IG9mIHVuaXRfdGVzdCB0byBvdXRwdXQgc3RyZWFtIG91dC4KLXZvaWQgWG1sVW5pdFRlc3RSZXN1
bHRQcmludGVyOjpQcmludFhtbFVuaXRUZXN0KEZJTEUqIG91dCwKK3ZvaWQgWG1sVW5pdFRlc3RS
ZXN1bHRQcmludGVyOjpQcmludFhtbFVuaXRUZXN0KHN0ZDo6b3N0cmVhbSogc3RyZWFtLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pdFRl
c3QmIHVuaXRfdGVzdCkgewotICBmcHJpbnRmKG91dCwgIjw/eG1sIHZlcnNpb249XCIxLjBcIiBl
bmNvZGluZz1cIlVURi04XCI/PlxuIik7Ci0gIGZwcmludGYob3V0LAotICAgICAgICAgICI8dGVz
dHN1aXRlcyB0ZXN0cz1cIiVkXCIgZmFpbHVyZXM9XCIlZFwiIGRpc2FibGVkPVwiJWRcIiAiCi0g
ICAgICAgICAgImVycm9ycz1cIjBcIiB0aW1lPVwiJXNcIiAiLAotICAgICAgICAgIHVuaXRfdGVz
dC50b3RhbF90ZXN0X2NvdW50KCksCi0gICAgICAgICAgdW5pdF90ZXN0LmZhaWxlZF90ZXN0X2Nv
dW50KCksCi0gICAgICAgICAgdW5pdF90ZXN0LmRpc2FibGVkX3Rlc3RfY291bnQoKSwKLSAgICAg
ICAgICBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHModW5pdF90ZXN0LmVsYXBzZWRfdGltZSgp
KS5jX3N0cigpKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RzdWl0ZXMgPSAidGVzdHN1aXRl
cyI7CisKKyAgKnN0cmVhbSA8PCAiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRG
LThcIj8+XG4iOworICAqc3RyZWFtIDw8ICI8IiA8PCBrVGVzdHN1aXRlczsKKworICBPdXRwdXRY
bWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlcywgInRlc3RzIiwKKyAgICAgICAgICAgICAg
ICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh1bml0X3Rlc3QucmVwb3J0YWJsZV90ZXN0X2NvdW50
KCkpKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJmYWlsdXJl
cyIsCisgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodW5pdF90ZXN0LmZh
aWxlZF90ZXN0X2NvdW50KCkpKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKAorICAgICAgc3RyZWFt
LCBrVGVzdHN1aXRlcywgImRpc2FibGVkIiwKKyAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh1bml0
X3Rlc3QucmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkpKTsKKyAgT3V0cHV0WG1sQXR0
cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJlcnJvcnMiLCAiMCIpOworICBPdXRwdXRYbWxB
dHRyaWJ1dGUoCisgICAgICBzdHJlYW0sIGtUZXN0c3VpdGVzLCAidGltZXN0YW1wIiwKKyAgICAg
IEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKHVuaXRfdGVzdC5zdGFydF90aW1lc3Rh
bXAoKSkpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlcywgInRpbWUi
LAorICAgICAgICAgICAgICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKHVuaXRf
dGVzdC5lbGFwc2VkX3RpbWUoKSkpOworCiAgIGlmIChHVEVTVF9GTEFHKHNodWZmbGUpKSB7Ci0g
ICAgZnByaW50ZihvdXQsICJyYW5kb21fc2VlZD1cIiVkXCIgIiwgdW5pdF90ZXN0LnJhbmRvbV9z
ZWVkKCkpOworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGVzLCAicmFu
ZG9tX3NlZWQiLAorICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodW5p
dF90ZXN0LnJhbmRvbV9zZWVkKCkpKTsKKyAgfQorCisgICpzdHJlYW0gPDwgVGVzdFByb3BlcnRp
ZXNBc1htbEF0dHJpYnV0ZXModW5pdF90ZXN0LmFkX2hvY190ZXN0X3Jlc3VsdCgpKTsKKworICBP
dXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlcywgIm5hbWUiLCAiQWxsVGVzdHMi
KTsKKyAgKnN0cmVhbSA8PCAiPlxuIjsKKworICBmb3IgKGludCBpID0gMDsgaSA8IHVuaXRfdGVz
dC50b3RhbF90ZXN0X2Nhc2VfY291bnQoKTsgKytpKSB7CisgICAgaWYgKHVuaXRfdGVzdC5HZXRU
ZXN0Q2FzZShpKS0+cmVwb3J0YWJsZV90ZXN0X2NvdW50KCkgPiAwKQorICAgICAgUHJpbnRYbWxU
ZXN0Q2FzZShzdHJlYW0sICp1bml0X3Rlc3QuR2V0VGVzdENhc2UoaSkpOwogICB9Ci0gIGZwcmlu
dGYob3V0LCAibmFtZT1cIkFsbFRlc3RzXCI+XG4iKTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCB1
bml0X3Rlc3QudG90YWxfdGVzdF9jYXNlX2NvdW50KCk7ICsraSkKLSAgICBQcmludFhtbFRlc3RD
YXNlKG91dCwgKnVuaXRfdGVzdC5HZXRUZXN0Q2FzZShpKSk7Ci0gIGZwcmludGYob3V0LCAiPC90
ZXN0c3VpdGVzPlxuIik7CisgICpzdHJlYW0gPDwgIjwvIiA8PCBrVGVzdHN1aXRlcyA8PCAiPlxu
IjsKIH0KIAogLy8gUHJvZHVjZXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0ZXN0IHByb3Bl
cnRpZXMgaW4gYSByZXN1bHQgYXMgc3BhY2UKIC8vIGRlbGltaXRlZCBYTUwgYXR0cmlidXRlcyBi
YXNlZCBvbiB0aGUgcHJvcGVydHkga2V5PSJ2YWx1ZSIgcGFpcnMuCi1TdHJpbmcgWG1sVW5pdFRl
c3RSZXN1bHRQcmludGVyOjpUZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRlcygKK3N0ZDo6c3Ry
aW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6VGVzdFByb3BlcnRpZXNBc1htbEF0dHJpYnV0
ZXMoCiAgICAgY29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0KSB7CiAgIE1lc3NhZ2UgYXR0cmlidXRl
czsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpOyAr
K2kpIHsKQEAgLTMzMDEsMTIgKzM3NTEsODIgQEAgU3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJp
bnRlcjo6VGVzdFByb3BlcnRpZXNBc1htbEF0dHJpYnV0ZXMoCiAKIC8vIEVuZCBYbWxVbml0VGVz
dFJlc3VsdFByaW50ZXIKIAorI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKworLy8gQ2hl
Y2tzIGlmIHN0ciBjb250YWlucyAnPScsICcmJywgJyUnIG9yICdcbicgY2hhcmFjdGVycy4gSWYg
eWVzLAorLy8gcmVwbGFjZXMgdGhlbSBieSAiJXh4IiB3aGVyZSB4eCBpcyB0aGVpciBoZXhhZGVj
aW1hbCB2YWx1ZS4gRm9yCisvLyBleGFtcGxlLCByZXBsYWNlcyAiPSIgd2l0aCAiJTNEIi4gIFRo
aXMgYWxnb3JpdGhtIGlzIE8oc3RybGVuKHN0cikpCisvLyBpbiBib3RoIHRpbWUgYW5kIHNwYWNl
IC0tIGltcG9ydGFudCBhcyB0aGUgaW5wdXQgc3RyIG1heSBjb250YWluIGFuCisvLyBhcmJpdHJh
cmlseSBsb25nIHRlc3QgZmFpbHVyZSBtZXNzYWdlIGFuZCBzdGFjayB0cmFjZS4KK3N0cmluZyBT
dHJlYW1pbmdMaXN0ZW5lcjo6VXJsRW5jb2RlKGNvbnN0IGNoYXIqIHN0cikgeworICBzdHJpbmcg
cmVzdWx0OworICByZXN1bHQucmVzZXJ2ZShzdHJsZW4oc3RyKSArIDEpOworICBmb3IgKGNoYXIg
Y2ggPSAqc3RyOyBjaCAhPSAnXDAnOyBjaCA9ICorK3N0cikgeworICAgIHN3aXRjaCAoY2gpIHsK
KyAgICAgIGNhc2UgJyUnOgorICAgICAgY2FzZSAnPSc6CisgICAgICBjYXNlICcmJzoKKyAgICAg
IGNhc2UgJ1xuJzoKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiJSIgKyBTdHJpbmc6OkZvcm1hdEJ5
dGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSk7CisgICAgICAgIGJyZWFrOworICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmVzdWx0LnB1c2hfYmFjayhjaCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFN0cmVhbWluZ0xpc3Rl
bmVyOjpTb2NrZXRXcml0ZXI6Ok1ha2VDb25uZWN0aW9uKCkgeworICBHVEVTVF9DSEVDS18oc29j
a2ZkXyA9PSAtMSkKKyAgICAgIDw8ICJNYWtlQ29ubmVjdGlvbigpIGNhbid0IGJlIGNhbGxlZCB3
aGVuIHRoZXJlIGlzIGFscmVhZHkgYSBjb25uZWN0aW9uLiI7CisKKyAgYWRkcmluZm8gaGludHM7
CisgIG1lbXNldCgmaGludHMsIDAsIHNpemVvZihoaW50cykpOworICBoaW50cy5haV9mYW1pbHkg
PSBBRl9VTlNQRUM7ICAgIC8vIFRvIGFsbG93IGJvdGggSVB2NCBhbmQgSVB2NiBhZGRyZXNzZXMu
CisgIGhpbnRzLmFpX3NvY2t0eXBlID0gU09DS19TVFJFQU07CisgIGFkZHJpbmZvKiBzZXJ2aW5m
byA9IE5VTEw7CisKKyAgLy8gVXNlIHRoZSBnZXRhZGRyaW5mbygpIHRvIGdldCBhIGxpbmtlZCBs
aXN0IG9mIElQIGFkZHJlc3NlcyBmb3IKKyAgLy8gdGhlIGdpdmVuIGhvc3QgbmFtZS4KKyAgY29u
c3QgaW50IGVycm9yX251bSA9IGdldGFkZHJpbmZvKAorICAgICAgaG9zdF9uYW1lXy5jX3N0cigp
LCBwb3J0X251bV8uY19zdHIoKSwgJmhpbnRzLCAmc2VydmluZm8pOworICBpZiAoZXJyb3JfbnVt
ICE9IDApIHsKKyAgICBHVEVTVF9MT0dfKFdBUk5JTkcpIDw8ICJzdHJlYW1fcmVzdWx0X3RvOiBn
ZXRhZGRyaW5mbygpIGZhaWxlZDogIgorICAgICAgICAgICAgICAgICAgICAgICAgPDwgZ2FpX3N0
cmVycm9yKGVycm9yX251bSk7CisgIH0KKworICAvLyBMb29wIHRocm91Z2ggYWxsIHRoZSByZXN1
bHRzIGFuZCBjb25uZWN0IHRvIHRoZSBmaXJzdCB3ZSBjYW4uCisgIGZvciAoYWRkcmluZm8qIGN1
cl9hZGRyID0gc2VydmluZm87IHNvY2tmZF8gPT0gLTEgJiYgY3VyX2FkZHIgIT0gTlVMTDsKKyAg
ICAgICBjdXJfYWRkciA9IGN1cl9hZGRyLT5haV9uZXh0KSB7CisgICAgc29ja2ZkXyA9IHNvY2tl
dCgKKyAgICAgICAgY3VyX2FkZHItPmFpX2ZhbWlseSwgY3VyX2FkZHItPmFpX3NvY2t0eXBlLCBj
dXJfYWRkci0+YWlfcHJvdG9jb2wpOworICAgIGlmIChzb2NrZmRfICE9IC0xKSB7CisgICAgICAv
LyBDb25uZWN0IHRoZSBjbGllbnQgc29ja2V0IHRvIHRoZSBzZXJ2ZXIgc29ja2V0LgorICAgICAg
aWYgKGNvbm5lY3Qoc29ja2ZkXywgY3VyX2FkZHItPmFpX2FkZHIsIGN1cl9hZGRyLT5haV9hZGRy
bGVuKSA9PSAtMSkgeworICAgICAgICBjbG9zZShzb2NrZmRfKTsKKyAgICAgICAgc29ja2ZkXyA9
IC0xOworICAgICAgfQorICAgIH0KKyAgfQorCisgIGZyZWVhZGRyaW5mbyhzZXJ2aW5mbyk7ICAv
LyBhbGwgZG9uZSB3aXRoIHRoaXMgc3RydWN0dXJlCisKKyAgaWYgKHNvY2tmZF8gPT0gLTEpIHsK
KyAgICBHVEVTVF9MT0dfKFdBUk5JTkcpIDw8ICJzdHJlYW1fcmVzdWx0X3RvOiBmYWlsZWQgdG8g
Y29ubmVjdCB0byAiCisgICAgICAgICAgICAgICAgICAgICAgICA8PCBob3N0X25hbWVfIDw8ICI6
IiA8PCBwb3J0X251bV87CisgIH0KK30KKworLy8gRW5kIG9mIGNsYXNzIFN0cmVhbWluZyBMaXN0
ZW5lcgorI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfXworCiAvLyBDbGFzcyBT
Y29wZWRUcmFjZQogCiAvLyBQdXNoZXMgdGhlIGdpdmVuIHNvdXJjZSBmaWxlIGxvY2F0aW9uIGFu
ZCBtZXNzYWdlIG9udG8gYSBwZXItdGhyZWFkCiAvLyB0cmFjZSBzdGFjayBtYWludGFpbmVkIGJ5
IEdvb2dsZSBUZXN0LgotLy8gTCA8IFVuaXRUZXN0OjptdXRleF8KLVNjb3BlZFRyYWNlOjpTY29w
ZWRUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgTWVzc2FnZSYgbWVzc2Fn
ZSkgeworU2NvcGVkVHJhY2U6OlNjb3BlZFRyYWNlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5l
LCBjb25zdCBNZXNzYWdlJiBtZXNzYWdlKQorICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKCZVbml0
VGVzdDo6bXV0ZXhfKSB7CiAgIFRyYWNlSW5mbyB0cmFjZTsKICAgdHJhY2UuZmlsZSA9IGZpbGU7
CiAgIHRyYWNlLmxpbmUgPSBsaW5lOwpAQCAtMzMxNiwzNCArMzgzNiw1MiBAQCBTY29wZWRUcmFj
ZTo6U2NvcGVkVHJhY2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IE1lc3NhZ2Um
IG1lc3NhZ2UpIHsKIH0KIAogLy8gUG9wcyB0aGUgaW5mbyBwdXNoZWQgYnkgdGhlIGMndG9yLgot
Ly8gTCA8IFVuaXRUZXN0OjptdXRleF8KLVNjb3BlZFRyYWNlOjp+U2NvcGVkVHJhY2UoKSB7CitT
Y29wZWRUcmFjZTo6flNjb3BlZFRyYWNlKCkKKyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXygmVW5p
dFRlc3Q6Om11dGV4XykgewogICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+UG9wR1Rlc3RUcmFj
ZSgpOwogfQogCiAKIC8vIGNsYXNzIE9zU3RhY2tUcmFjZUdldHRlcgogCi0vLyBSZXR1cm5zIHRo
ZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFzIGEgU3RyaW5nLiAgUGFyYW1ldGVyczoKLS8vCi0v
LyAgIG1heF9kZXB0aCAgLSB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIHRvIGJl
IGluY2x1ZGVkCi0vLyAgICAgICAgICAgICAgICBpbiB0aGUgdHJhY2UuCi0vLyAgIHNraXBfY291
bnQgLSB0aGUgbnVtYmVyIG9mIHRvcCBmcmFtZXMgdG8gYmUgc2tpcHBlZDsgZG9lc24ndCBjb3Vu
dAotLy8gICAgICAgICAgICAgICAgYWdhaW5zdCBtYXhfZGVwdGguCi0vLwotLy8gTCA8IG11dGV4
XwotLy8gV2UgdXNlICJMIDwgbXV0ZXhfIiB0byBkZW5vdGUgdGhhdCB0aGUgZnVuY3Rpb24gbWF5
IGFjcXVpcmUgbXV0ZXhfLgotU3RyaW5nIE9zU3RhY2tUcmFjZUdldHRlcjo6Q3VycmVudFN0YWNr
VHJhY2UoaW50LCBpbnQpIHsKLSAgcmV0dXJuIFN0cmluZygiIik7Ci19Citjb25zdCBjaGFyKiBj
b25zdCBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2U6OmtFbGlkZWRGcmFtZXNNYXJrZXIgPQor
ICAgICIuLi4gIiBHVEVTVF9OQU1FXyAiIGludGVybmFsIGZyYW1lcyAuLi4iOwogCi0vLyBMIDwg
bXV0ZXhfCi12b2lkIE9zU3RhY2tUcmFjZUdldHRlcjo6VXBvbkxlYXZpbmdHVGVzdCgpIHsKK3N0
cmluZyBPc1N0YWNrVHJhY2VHZXR0ZXI6OkN1cnJlbnRTdGFja1RyYWNlKGludCAvKm1heF9kZXB0
aCovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IC8q
c2tpcF9jb3VudCovKSB7CisgIHJldHVybiAiIjsKIH0KIAotY29uc3QgY2hhciogY29uc3QKLU9z
U3RhY2tUcmFjZUdldHRlcjo6a0VsaWRlZEZyYW1lc01hcmtlciA9Ci0gICAgIi4uLiAiIEdURVNU
X05BTUVfICIgaW50ZXJuYWwgZnJhbWVzIC4uLiI7Cit2b2lkIE9zU3RhY2tUcmFjZUdldHRlcjo6
VXBvbkxlYXZpbmdHVGVzdCgpIHt9CisKKy8vIEEgaGVscGVyIGNsYXNzIHRoYXQgY3JlYXRlcyB0
aGUgcHJlbWF0dXJlLWV4aXQgZmlsZSBpbiBpdHMKKy8vIGNvbnN0cnVjdG9yIGFuZCBkZWxldGVz
IHRoZSBmaWxlIGluIGl0cyBkZXN0cnVjdG9yLgorY2xhc3MgU2NvcGVkUHJlbWF0dXJlRXhpdEZp
bGUgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgU2NvcGVkUHJlbWF0dXJlRXhpdEZpbGUoY29uc3Qg
Y2hhciogcHJlbWF0dXJlX2V4aXRfZmlsZXBhdGgpCisgICAgICA6IHByZW1hdHVyZV9leGl0X2Zp
bGVwYXRoXyhwcmVtYXR1cmVfZXhpdF9maWxlcGF0aCkgeworICAgIC8vIElmIGEgcGF0aCB0byB0
aGUgcHJlbWF0dXJlLWV4aXQgZmlsZSBpcyBzcGVjaWZpZWQuLi4KKyAgICBpZiAocHJlbWF0dXJl
X2V4aXRfZmlsZXBhdGggIT0gTlVMTCAmJiAqcHJlbWF0dXJlX2V4aXRfZmlsZXBhdGggIT0gJ1ww
JykgeworICAgICAgLy8gY3JlYXRlIHRoZSBmaWxlIHdpdGggYSBzaW5nbGUgIjAiIGNoYXJhY3Rl
ciBpbiBpdC4gIEkvTworICAgICAgLy8gZXJyb3JzIGFyZSBpZ25vcmVkIGFzIHRoZXJlJ3Mgbm90
aGluZyBiZXR0ZXIgd2UgY2FuIGRvIGFuZCB3ZQorICAgICAgLy8gZG9uJ3Qgd2FudCB0byBmYWls
IHRoZSB0ZXN0IGJlY2F1c2Ugb2YgdGhpcy4KKyAgICAgIEZJTEUqIHBmaWxlID0gcG9zaXg6OkZP
cGVuKHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoLCAidyIpOworICAgICAgZndyaXRlKCIwIiwgMSwg
MSwgcGZpbGUpOworICAgICAgZmNsb3NlKHBmaWxlKTsKKyAgICB9CisgIH0KKworICB+U2NvcGVk
UHJlbWF0dXJlRXhpdEZpbGUoKSB7CisgICAgaWYgKHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoXyAh
PSBOVUxMICYmICpwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8gIT0gJ1wwJykgeworICAgICAgcmVt
b3ZlKHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoXyk7CisgICAgfQorICB9CisKKyBwcml2YXRlOgor
ICBjb25zdCBjaGFyKiBjb25zdCBwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF87CisKKyAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTY29wZWRQcmVtYXR1cmVFeGl0RmlsZSk7Cit9Owog
CiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIApAQCAtMzQzMSw3ICszOTY5LDcgQEAgdm9pZCBU
ZXN0RXZlbnRMaXN0ZW5lcnM6OlN1cHByZXNzRXZlbnRGb3J3YXJkaW5nKCkgewogLy8gV2UgZG9u
J3QgcHJvdGVjdCB0aGlzIHVuZGVyIG11dGV4XyBhcyBhIHVzZXIgaXMgbm90IHN1cHBvc2VkIHRv
CiAvLyBjYWxsIHRoaXMgYmVmb3JlIG1haW4oKSBzdGFydHMsIGZyb20gd2hpY2ggcG9pbnQgb24g
dGhlIHJldHVybgogLy8gdmFsdWUgd2lsbCBuZXZlciBjaGFuZ2UuCi1Vbml0VGVzdCAqIFVuaXRU
ZXN0OjpHZXRJbnN0YW5jZSgpIHsKK1VuaXRUZXN0KiBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKSB7
CiAgIC8vIFdoZW4gY29tcGlsZWQgd2l0aCBNU1ZDIDcuMSBpbiBvcHRpbWl6ZWQgbW9kZSwgZGVz
dHJveWluZyB0aGUKICAgLy8gVW5pdFRlc3Qgb2JqZWN0IHVwb24gZXhpdGluZyB0aGUgcHJvZ3Jh
bSBtZXNzZXMgdXAgdGhlIGV4aXQgY29kZSwKICAgLy8gY2F1c2luZyBzdWNjZXNzZnVsIHRlc3Rz
IHRvIGFwcGVhciBmYWlsZWQuICBXZSBoYXZlIHRvIHVzZSBhCkBAIC0zNDgxLDE3ICs0MDE5LDMz
IEBAIGludCBVbml0VGVzdDo6c3VjY2Vzc2Z1bF90ZXN0X2NvdW50KCkgY29uc3QgewogLy8gR2V0
cyB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cy4KIGludCBVbml0VGVzdDo6ZmFpbGVkX3Rlc3Rf
Y291bnQoKSBjb25zdCB7IHJldHVybiBpbXBsKCktPmZhaWxlZF90ZXN0X2NvdW50KCk7IH0KIAor
Ly8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHRoYXQgd2lsbCBiZSByZXBvcnRl
ZCBpbiB0aGUgWE1MIHJlcG9ydC4KK2ludCBVbml0VGVzdDo6cmVwb3J0YWJsZV9kaXNhYmxlZF90
ZXN0X2NvdW50KCkgY29uc3QgeworICByZXR1cm4gaW1wbCgpLT5yZXBvcnRhYmxlX2Rpc2FibGVk
X3Rlc3RfY291bnQoKTsKK30KKwogLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3Rz
LgogaW50IFVuaXRUZXN0OjpkaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3QgewogICByZXR1cm4g
aW1wbCgpLT5kaXNhYmxlZF90ZXN0X2NvdW50KCk7CiB9CiAKKy8vIEdldHMgdGhlIG51bWJlciBv
ZiB0ZXN0cyB0byBiZSBwcmludGVkIGluIHRoZSBYTUwgcmVwb3J0LgoraW50IFVuaXRUZXN0Ojpy
ZXBvcnRhYmxlX3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBpbXBsKCktPnJlcG9ydGFi
bGVfdGVzdF9jb3VudCgpOworfQorCiAvLyBHZXRzIHRoZSBudW1iZXIgb2YgYWxsIHRlc3RzLgog
aW50IFVuaXRUZXN0Ojp0b3RhbF90ZXN0X2NvdW50KCkgY29uc3QgeyByZXR1cm4gaW1wbCgpLT50
b3RhbF90ZXN0X2NvdW50KCk7IH0KIAogLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRoYXQg
c2hvdWxkIHJ1bi4KIGludCBVbml0VGVzdDo6dGVzdF90b19ydW5fY291bnQoKSBjb25zdCB7IHJl
dHVybiBpbXBsKCktPnRlc3RfdG9fcnVuX2NvdW50KCk7IH0KIAorLy8gR2V0cyB0aGUgdGltZSBv
ZiB0aGUgdGVzdCBwcm9ncmFtIHN0YXJ0LCBpbiBtcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUKKy8v
IFVOSVggZXBvY2guCitpbnRlcm5hbDo6VGltZUluTWlsbGlzIFVuaXRUZXN0OjpzdGFydF90aW1l
c3RhbXAoKSBjb25zdCB7CisgICAgcmV0dXJuIGltcGwoKS0+c3RhcnRfdGltZXN0YW1wKCk7Cit9
CisKIC8vIEdldHMgdGhlIGVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgogaW50ZXJuYWw6
OlRpbWVJbk1pbGxpcyBVbml0VGVzdDo6ZWxhcHNlZF90aW1lKCkgY29uc3QgewogICByZXR1cm4g
aW1wbCgpLT5lbGFwc2VkX3RpbWUoKTsKQEAgLTM1MTAsNiArNDA2NCwxMiBAQCBjb25zdCBUZXN0
Q2FzZSogVW5pdFRlc3Q6OkdldFRlc3RDYXNlKGludCBpKSBjb25zdCB7CiAgIHJldHVybiBpbXBs
KCktPkdldFRlc3RDYXNlKGkpOwogfQogCisvLyBSZXR1cm5zIHRoZSBUZXN0UmVzdWx0IGNvbnRh
aW5pbmcgaW5mb3JtYXRpb24gb24gdGVzdCBmYWlsdXJlcyBhbmQKKy8vIHByb3BlcnRpZXMgbG9n
Z2VkIG91dHNpZGUgb2YgaW5kaXZpZHVhbCB0ZXN0IGNhc2VzLgorY29uc3QgVGVzdFJlc3VsdCYg
VW5pdFRlc3Q6OmFkX2hvY190ZXN0X3Jlc3VsdCgpIGNvbnN0IHsKKyAgcmV0dXJuICppbXBsKCkt
PmFkX2hvY190ZXN0X3Jlc3VsdCgpOworfQorCiAvLyBHZXRzIHRoZSBpLXRoIHRlc3QgY2FzZSBh
bW9uZyBhbGwgdGhlIHRlc3QgY2FzZXMuIGkgY2FuIHJhbmdlIGZyb20gMCB0bwogLy8gdG90YWxf
dGVzdF9jYXNlX2NvdW50KCkgLSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCByZXR1cm5z
IE5VTEwuCiBUZXN0Q2FzZSogVW5pdFRlc3Q6OkdldE11dGFibGVUZXN0Q2FzZShpbnQgaSkgewpA
QCAtMzU0MSwyOSArNDEwMSwxNiBAQCBFbnZpcm9ubWVudCogVW5pdFRlc3Q6OkFkZEVudmlyb25t
ZW50KEVudmlyb25tZW50KiBlbnYpIHsKICAgcmV0dXJuIGVudjsKIH0KIAotI2lmIEdURVNUX0hB
U19FWENFUFRJT05TCi0vLyBBIGZhaWxlZCBHb29nbGUgVGVzdCBhc3NlcnRpb24gd2lsbCB0aHJv
dyBhbiBleGNlcHRpb24gb2YgdGhpcyB0eXBlCi0vLyB3aGVuIGV4Y2VwdGlvbnMgYXJlIGVuYWJs
ZWQuICBXZSBkZXJpdmUgaXQgZnJvbSBzdGQ6OnJ1bnRpbWVfZXJyb3IsCi0vLyB3aGljaCBpcyBm
b3IgZXJyb3JzIHByZXN1bWFibHkgZGV0ZWN0YWJsZSBvbmx5IGF0IHJ1biB0aW1lLiAgU2luY2UK
LS8vIHN0ZDo6cnVudGltZV9lcnJvciBpbmhlcml0cyBmcm9tIHN0ZDo6ZXhjZXB0aW9uLCBtYW55
IHRlc3RpbmcKLS8vIGZyYW1ld29ya3Mga25vdyBob3cgdG8gZXh0cmFjdCBhbmQgcHJpbnQgdGhl
IG1lc3NhZ2UgaW5zaWRlIGl0LgotY2xhc3MgR29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24gOiBw
dWJsaWMgOjpzdGQ6OnJ1bnRpbWVfZXJyb3IgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgR29vZ2xl
VGVzdEZhaWx1cmVFeGNlcHRpb24oY29uc3QgVGVzdFBhcnRSZXN1bHQmIGZhaWx1cmUpCi0gICAg
ICA6IDo6c3RkOjpydW50aW1lX2Vycm9yKFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmluZyhmYWls
dXJlKS5jX3N0cigpKSB7fQotfTsKLSNlbmRpZgotCiAvLyBBZGRzIGEgVGVzdFBhcnRSZXN1bHQg
dG8gdGhlIGN1cnJlbnQgVGVzdFJlc3VsdCBvYmplY3QuICBBbGwgR29vZ2xlIFRlc3QKIC8vIGFz
c2VydGlvbiBtYWNyb3MgKGUuZy4gQVNTRVJUX1RSVUUsIEVYUEVDVF9FUSwgZXRjKSBldmVudHVh
bGx5IGNhbGwKIC8vIHRoaXMgdG8gcmVwb3J0IHRoZWlyIHJlc3VsdHMuICBUaGUgdXNlciBjb2Rl
IHNob3VsZCB1c2UgdGhlCiAvLyBhc3NlcnRpb24gbWFjcm9zIGluc3RlYWQgb2YgY2FsbGluZyB0
aGlzIGRpcmVjdGx5LgotLy8gTCA8IG11dGV4Xwotdm9pZCBVbml0VGVzdDo6QWRkVGVzdFBhcnRS
ZXN1bHQoVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlX25hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgbGluZV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBpbnRlcm5hbDo6U3RyaW5nJiBtZXNzYWdlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyYgb3Nfc3RhY2tfdHJh
Y2UpIHsKK3ZvaWQgVW5pdFRlc3Q6OkFkZFRlc3RQYXJ0UmVzdWx0KAorICAgIFRlc3RQYXJ0UmVz
dWx0OjpUeXBlIHJlc3VsdF90eXBlLAorICAgIGNvbnN0IGNoYXIqIGZpbGVfbmFtZSwKKyAgICBp
bnQgbGluZV9udW1iZXIsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UsCisgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIG9zX3N0YWNrX3RyYWNlKSBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRl
eF8pIHsKICAgTWVzc2FnZSBtc2c7CiAgIG1zZyA8PCBtZXNzYWdlOwogCkBAIC0zNTk2LDE3ICs0
MTQzLDIxIEBAIHZvaWQgVW5pdFRlc3Q6OkFkZFRlc3RQYXJ0UmVzdWx0KFRlc3RQYXJ0UmVzdWx0
OjpUeXBlIHJlc3VsdF90eXBlLAogICAgIC8vIHdpdGggYW5vdGhlciB0ZXN0aW5nIGZyYW1ld29y
aykgYW5kIHNwZWNpZnkgdGhlIGZvcm1lciBvbiB0aGUKICAgICAvLyBjb21tYW5kIGxpbmUgZm9y
IGRlYnVnZ2luZy4KICAgICBpZiAoR1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJlKSkgewotI2lm
IEdURVNUX09TX1dJTkRPV1MKKyNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5E
T1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUCiAgICAgICAvLyBVc2luZyBEZWJ1Z0Jy
ZWFrIG9uIFdpbmRvd3MgYWxsb3dzIGd0ZXN0IHRvIHN0aWxsIGJyZWFrIGludG8gYSBkZWJ1Z2dl
cgogICAgICAgLy8gd2hlbiBhIGZhaWx1cmUgaGFwcGVucyBhbmQgYm90aCB0aGUgLS1ndGVzdF9i
cmVha19vbl9mYWlsdXJlIGFuZAogICAgICAgLy8gdGhlIC0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9u
cyBmbGFncyBhcmUgc3BlY2lmaWVkLgogICAgICAgRGVidWdCcmVhaygpOwogI2Vsc2UKKyAgICAg
IC8vIERlcmVmZXJlbmNlIE5VTEwgdGhyb3VnaCBhIHZvbGF0aWxlIHBvaW50ZXIgdG8gcHJldmVu
dCB0aGUgY29tcGlsZXIKKyAgICAgIC8vIGZyb20gcmVtb3ZpbmcuIFdlIHVzZSB0aGlzIHJhdGhl
ciB0aGFuIGFib3J0KCkgb3IgX19idWlsdGluX3RyYXAoKSBmb3IKKyAgICAgIC8vIHBvcnRhYmls
aXR5OiBTeW1iaWFuIGRvZXNuJ3QgaW1wbGVtZW50IGFib3J0KCkgd2VsbCwgYW5kIHNvbWUgZGVi
dWdnZXJzCisgICAgICAvLyBkb24ndCBjb3JyZWN0bHkgdHJhcCBhYm9ydCgpLgogICAgICAgKnN0
YXRpY19jYXN0PHZvbGF0aWxlIGludCo+KE5VTEwpID0gMTsKICNlbmRpZiAgLy8gR1RFU1RfT1Nf
V0lORE9XUwogICAgIH0gZWxzZSBpZiAoR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSkgewog
I2lmIEdURVNUX0hBU19FWENFUFRJT05TCi0gICAgICB0aHJvdyBHb29nbGVUZXN0RmFpbHVyZUV4
Y2VwdGlvbihyZXN1bHQpOworICAgICAgdGhyb3cgaW50ZXJuYWw6Okdvb2dsZVRlc3RGYWlsdXJl
RXhjZXB0aW9uKHJlc3VsdCk7CiAjZWxzZQogICAgICAgLy8gV2UgY2Fubm90IGNhbGwgYWJvcnQo
KSBhcyBpdCBnZW5lcmF0ZXMgYSBwb3AtdXAgaW4gZGVidWcgbW9kZQogICAgICAgLy8gdGhhdCBj
YW5ub3QgYmUgc3VwcHJlc3NlZCBpbiBWQyA3LjEgb3IgYmVsb3cuCkBAIC0zNjE2LDEyICs0MTY3
LDE0IEBAIHZvaWQgVW5pdFRlc3Q6OkFkZFRlc3RQYXJ0UmVzdWx0KFRlc3RQYXJ0UmVzdWx0OjpU
eXBlIHJlc3VsdF90eXBlLAogICB9CiB9CiAKLS8vIENyZWF0ZXMgYW5kIGFkZHMgYSBwcm9wZXJ0
eSB0byB0aGUgY3VycmVudCBUZXN0UmVzdWx0LiBJZiBhIHByb3BlcnR5IG1hdGNoaW5nCi0vLyB0
aGUgc3VwcGxpZWQgdmFsdWUgYWxyZWFkeSBleGlzdHMsIHVwZGF0ZXMgaXRzIHZhbHVlIGluc3Rl
YWQuCi12b2lkIFVuaXRUZXN0OjpSZWNvcmRQcm9wZXJ0eUZvckN1cnJlbnRUZXN0KGNvbnN0IGNo
YXIqIGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogdmFsdWUpIHsKLSAgY29uc3QgVGVzdFByb3BlcnR5IHRlc3RfcHJvcGVydHkoa2V5
LCB2YWx1ZSk7Ci0gIGltcGxfLT5jdXJyZW50X3Rlc3RfcmVzdWx0KCktPlJlY29yZFByb3BlcnR5
KHRlc3RfcHJvcGVydHkpOworLy8gQWRkcyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUgY3VycmVudCBU
ZXN0UmVzdWx0IG9iamVjdCB3aGVuIGludm9rZWQgZnJvbQorLy8gaW5zaWRlIGEgdGVzdCwgdG8g
Y3VycmVudCBUZXN0Q2FzZSdzIGFkX2hvY190ZXN0X3Jlc3VsdF8gd2hlbiBpbnZva2VkCisvLyBm
cm9tIFNldFVwVGVzdENhc2Ugb3IgVGVhckRvd25UZXN0Q2FzZSwgb3IgdG8gdGhlIGdsb2JhbCBw
cm9wZXJ0eSBzZXQKKy8vIHdoZW4gaW52b2tlZCBlbHNld2hlcmUuICBJZiB0aGUgcmVzdWx0IGFs
cmVhZHkgY29udGFpbnMgYSBwcm9wZXJ0eSB3aXRoCisvLyB0aGUgc2FtZSBrZXksIHRoZSB2YWx1
ZSB3aWxsIGJlIHVwZGF0ZWQuCit2b2lkIFVuaXRUZXN0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBz
dGQ6OnN0cmluZyYga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHZhbHVlKSB7CisgIGltcGxfLT5SZWNvcmRQcm9wZXJ0eShUZXN0UHJvcGVydHko
a2V5LCB2YWx1ZSkpOwogfQogCiAvLyBSdW5zIGFsbCB0ZXN0cyBpbiB0aGlzIFVuaXRUZXN0IG9i
amVjdCBhbmQgcHJpbnRzIHRoZSByZXN1bHQuCkBAIC0zNjMwLDMxICs0MTgzLDU4IEBAIHZvaWQg
VW5pdFRlc3Q6OlJlY29yZFByb3BlcnR5Rm9yQ3VycmVudFRlc3QoY29uc3QgY2hhcioga2V5LAog
Ly8gV2UgZG9uJ3QgcHJvdGVjdCB0aGlzIHVuZGVyIG11dGV4XywgYXMgd2Ugb25seSBzdXBwb3J0
IGNhbGxpbmcgaXQKIC8vIGZyb20gdGhlIG1haW4gdGhyZWFkLgogaW50IFVuaXRUZXN0OjpSdW4o
KSB7Ci0jaWYgR1RFU1RfSEFTX1NFSAotICAvLyBDYXRjaCBTRUgtc3R5bGUgZXhjZXB0aW9ucy4K
LQogICBjb25zdCBib29sIGluX2RlYXRoX3Rlc3RfY2hpbGRfcHJvY2VzcyA9CiAgICAgICBpbnRl
cm5hbDo6R1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkubGVuZ3RoKCkgPiAwOwog
CisgIC8vIEdvb2dsZSBUZXN0IGltcGxlbWVudHMgdGhpcyBwcm90b2NvbCBmb3IgY2F0Y2hpbmcg
dGhhdCBhIHRlc3QKKyAgLy8gcHJvZ3JhbSBleGl0cyBiZWZvcmUgcmV0dXJuaW5nIGNvbnRyb2wg
dG8gR29vZ2xlIFRlc3Q6CisgIC8vCisgIC8vICAgMS4gVXBvbiBzdGFydCwgR29vZ2xlIFRlc3Qg
Y3JlYXRlcyBhIGZpbGUgd2hvc2UgYWJzb2x1dGUgcGF0aAorICAvLyAgICAgIGlzIHNwZWNpZmll
ZCBieSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgLy8gICAgICBURVNUX1BSRU1BVFVSRV9F
WElUX0ZJTEUuCisgIC8vICAgMi4gV2hlbiBHb29nbGUgVGVzdCBoYXMgZmluaXNoZWQgaXRzIHdv
cmssIGl0IGRlbGV0ZXMgdGhlIGZpbGUuCisgIC8vCisgIC8vIFRoaXMgYWxsb3dzIGEgdGVzdCBy
dW5uZXIgdG8gc2V0IFRFU1RfUFJFTUFUVVJFX0VYSVRfRklMRSBiZWZvcmUKKyAgLy8gcnVubmlu
ZyBhIEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QgcHJvZ3JhbSBhbmQgY2hlY2sgdGhlIGV4aXN0ZW5j
ZQorICAvLyBvZiB0aGUgZmlsZSBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0IGV4ZWN1dGlvbiB0byBz
ZWUgaWYgaXQgaGFzCisgIC8vIGV4aXRlZCBwcmVtYXR1cmVseS4KKworICAvLyBJZiB3ZSBhcmUg
aW4gdGhlIGNoaWxkIHByb2Nlc3Mgb2YgYSBkZWF0aCB0ZXN0LCBkb24ndAorICAvLyBjcmVhdGUv
ZGVsZXRlIHRoZSBwcmVtYXR1cmUgZXhpdCBmaWxlLCBhcyBkb2luZyBzbyBpcyB1bm5lY2Vzc2Fy
eQorICAvLyBhbmQgd2lsbCBjb25mdXNlIHRoZSBwYXJlbnQgcHJvY2Vzcy4gIE90aGVyd2lzZSwg
Y3JlYXRlL2RlbGV0ZQorICAvLyB0aGUgZmlsZSB1cG9uIGVudGVyaW5nL2xlYXZpbmcgdGhpcyBm
dW5jdGlvbi4gIElmIHRoZSBwcm9ncmFtCisgIC8vIHNvbWVob3cgZXhpdHMgYmVmb3JlIHRoaXMg
ZnVuY3Rpb24gaGFzIGEgY2hhbmNlIHRvIHJldHVybiwgdGhlCisgIC8vIHByZW1hdHVyZS1leGl0
IGZpbGUgd2lsbCBiZSBsZWZ0IHVuZGVsZXRlZCwgY2F1c2luZyBhIHRlc3QgcnVubmVyCisgIC8v
IHRoYXQgdW5kZXJzdGFuZHMgdGhlIHByZW1hdHVyZS1leGl0LWZpbGUgcHJvdG9jb2wgdG8gcmVw
b3J0IHRoZQorICAvLyB0ZXN0IGFzIGhhdmluZyBmYWlsZWQuCisgIGNvbnN0IGludGVybmFsOjpT
Y29wZWRQcmVtYXR1cmVFeGl0RmlsZSBwcmVtYXR1cmVfZXhpdF9maWxlKAorICAgICAgaW5fZGVh
dGhfdGVzdF9jaGlsZF9wcm9jZXNzID8KKyAgICAgIE5VTEwgOiBpbnRlcm5hbDo6cG9zaXg6Okdl
dEVudigiVEVTVF9QUkVNQVRVUkVfRVhJVF9GSUxFIikpOworCisgIC8vIENhcHR1cmVzIHRoZSB2
YWx1ZSBvZiBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpLiAgVGhpcyB2YWx1ZSB3aWxsIGJl
CisgIC8vIHVzZWQgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgcHJvZ3JhbS4KKyAgaW1wbCgpLT5z
ZXRfY2F0Y2hfZXhjZXB0aW9ucyhHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKTsKKworI2lm
IEdURVNUX0hBU19TRUgKICAgLy8gRWl0aGVyIHRoZSB1c2VyIHdhbnRzIEdvb2dsZSBUZXN0IHRv
IGNhdGNoIGV4Y2VwdGlvbnMgdGhyb3duIGJ5IHRoZQogICAvLyB0ZXN0cyBvciB0aGlzIGlzIGV4
ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiBkZWF0aCB0ZXN0IGNoaWxkCiAgIC8vIHByb2Nlc3Mu
IEluIGVpdGhlciBjYXNlIHRoZSB1c2VyIGRvZXMgbm90IHdhbnQgdG8gc2VlIHBvcC11cCBkaWFs
b2dzCi0gIC8vIGFib3V0IGNyYXNoZXMgLSB0aGV5IGFyZSBleHBlY3RlZC4uCi0gIGlmIChHVEVT
VF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpIHx8IGluX2RlYXRoX3Rlc3RfY2hpbGRfcHJvY2Vzcykg
ewotI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorICAvLyBhYm91dCBjcmFzaGVzIC0gdGhl
eSBhcmUgZXhwZWN0ZWQuCisgIGlmIChpbXBsKCktPmNhdGNoX2V4Y2VwdGlvbnMoKSB8fCBpbl9k
ZWF0aF90ZXN0X2NoaWxkX3Byb2Nlc3MpIHsKKyMgaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxF
ICYmICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUCiAgICAg
Ly8gU2V0RXJyb3JNb2RlIGRvZXNuJ3QgZXhpc3Qgb24gQ0UuCiAgICAgU2V0RXJyb3JNb2RlKFNF
TV9GQUlMQ1JJVElDQUxFUlJPUlMgfCBTRU1fTk9BTElHTk1FTlRGQVVMVEVYQ0VQVCB8CiAgICAg
ICAgICAgICAgICAgIFNFTV9OT0dQRkFVTFRFUlJPUkJPWCB8IFNFTV9OT09QRU5GSUxFRVJST1JC
T1gpOwotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgZW5kaWYgIC8vICFH
VEVTVF9PU19XSU5ET1dTX01PQklMRQogCi0jaWYgKGRlZmluZWQoX01TQ19WRVIpIHx8IEdURVNU
X09TX1dJTkRPV1NfTUlOR1cpICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBpZiAoZGVm
aW5lZChfTVNDX1ZFUikgfHwgR1RFU1RfT1NfV0lORE9XU19NSU5HVykgJiYgIUdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCiAgICAgLy8gRGVhdGggdGVzdCBjaGlsZHJlbiBjYW4gYmUgdGVybWluYXRl
ZCB3aXRoIF9hYm9ydCgpLiAgT24gV2luZG93cywKICAgICAvLyBfYWJvcnQoKSBjYW4gc2hvdyBh
IGRpYWxvZyB3aXRoIGEgd2FybmluZyBtZXNzYWdlLiAgVGhpcyBmb3JjZXMgdGhlCiAgICAgLy8g
YWJvcnQgbWVzc2FnZSB0byBnbyB0byBzdGRlcnIgaW5zdGVhZC4KICAgICBfc2V0X2Vycm9yX21v
ZGUoX09VVF9UT19TVERFUlIpOwotI2VuZGlmCisjIGVuZGlmCiAKLSNpZiBfTVNDX1ZFUiA+PSAx
NDAwICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBpZiBfTVNDX1ZFUiA+PSAxNDAwICYm
ICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQogICAgIC8vIEluIHRoZSBkZWJ1ZyB2ZXJzaW9uLCBW
aXN1YWwgU3R1ZGlvIHBvcHMgdXAgYSBzZXBhcmF0ZSBkaWFsb2cKICAgICAvLyBvZmZlcmluZyBh
IGNob2ljZSB0byBkZWJ1ZyB0aGUgYWJvcnRlZCBwcm9ncmFtLiBXZSBuZWVkIHRvIHN1cHByZXNz
CiAgICAgLy8gdGhpcyBkaWFsb2cgb3IgaXQgd2lsbCBwb3AgdXAgZm9yIGV2ZXJ5IEVYUEVDVC9B
U1NFUlRfREVBVEggc3RhdGVtZW50CkBAIC0zNjcwLDIyICs0MjUwLDE0IEBAIGludCBVbml0VGVz
dDo6UnVuKCkgewogICAgICAgX3NldF9hYm9ydF9iZWhhdmlvcigKICAgICAgICAgICAweDAsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIGZvbGxvd2luZyBm
bGFnczoKICAgICAgICAgICBfV1JJVEVfQUJPUlRfTVNHIHwgX0NBTExfUkVQT1JURkFVTFQpOyAg
Ly8gcG9wLXVwIHdpbmRvdywgY29yZSBkdW1wLgotI2VuZGlmCi0gIH0KLQotICBfX3RyeSB7Ci0g
ICAgcmV0dXJuIGltcGxfLT5SdW5BbGxUZXN0cygpOwotICB9IF9fZXhjZXB0KGludGVybmFsOjpV
bml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCgKLSAgICAgIEdldEV4Y2VwdGlv
bkNvZGUoKSkpIHsKLSAgICBwcmludGYoIkV4Y2VwdGlvbiB0aHJvd24gd2l0aCBjb2RlIDB4JXgu
XG5GQUlMXG4iLCBHZXRFeGNlcHRpb25Db2RlKCkpOwotICAgIGZmbHVzaChzdGRvdXQpOwotICAg
IHJldHVybiAxOworIyBlbmRpZgogICB9Ci0KLSNlbHNlICAvLyBXZSBhcmUgb24gYSBjb21waWxl
ciBvciBwbGF0Zm9ybSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBTRUguCi0KLSAgcmV0dXJuIGltcGxf
LT5SdW5BbGxUZXN0cygpOwogI2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICisKKyAgcmV0dXJuIGlu
dGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAgICAgIGltcGwo
KSwKKyAgICAgICZpbnRlcm5hbDo6VW5pdFRlc3RJbXBsOjpSdW5BbGxUZXN0cywKKyAgICAgICJh
dXhpbGlhcnkgdGVzdCBjb2RlIChlbnZpcm9ubWVudHMgb3IgZXZlbnQgbGlzdGVuZXJzKSIpID8g
MCA6IDE7CiB9CiAKIC8vIFJldHVybnMgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IHdoZW4gdGhlIGZp
cnN0IFRFU1QoKSBvciBURVNUX0YoKSB3YXMKQEAgLTM2OTYsMTYgKzQyNjgsMTYgQEAgY29uc3Qg
Y2hhciogVW5pdFRlc3Q6Om9yaWdpbmFsX3dvcmtpbmdfZGlyKCkgY29uc3QgewogCiAvLyBSZXR1
cm5zIHRoZSBUZXN0Q2FzZSBvYmplY3QgZm9yIHRoZSB0ZXN0IHRoYXQncyBjdXJyZW50bHkgcnVu
bmluZywKIC8vIG9yIE5VTEwgaWYgbm8gdGVzdCBpcyBydW5uaW5nLgotLy8gTCA8IG11dGV4Xwot
Y29uc3QgVGVzdENhc2UqIFVuaXRUZXN0OjpjdXJyZW50X3Rlc3RfY2FzZSgpIGNvbnN0IHsKK2Nv
bnN0IFRlc3RDYXNlKiBVbml0VGVzdDo6Y3VycmVudF90ZXN0X2Nhc2UoKSBjb25zdAorICAgIEdU
RVNUX0xPQ0tfRVhDTFVERURfKG11dGV4XykgewogICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGxvY2so
Jm11dGV4Xyk7CiAgIHJldHVybiBpbXBsXy0+Y3VycmVudF90ZXN0X2Nhc2UoKTsKIH0KIAogLy8g
UmV0dXJucyB0aGUgVGVzdEluZm8gb2JqZWN0IGZvciB0aGUgdGVzdCB0aGF0J3MgY3VycmVudGx5
IHJ1bm5pbmcsCiAvLyBvciBOVUxMIGlmIG5vIHRlc3QgaXMgcnVubmluZy4KLS8vIEwgPCBtdXRl
eF8KLWNvbnN0IFRlc3RJbmZvKiBVbml0VGVzdDo6Y3VycmVudF90ZXN0X2luZm8oKSBjb25zdCB7
Citjb25zdCBUZXN0SW5mbyogVW5pdFRlc3Q6OmN1cnJlbnRfdGVzdF9pbmZvKCkgY29uc3QKKyAg
ICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pIHsKICAgaW50ZXJuYWw6Ok11dGV4TG9jayBs
b2NrKCZtdXRleF8pOwogICByZXR1cm4gaW1wbF8tPmN1cnJlbnRfdGVzdF9pbmZvKCk7CiB9CkBA
IC0zNzE2LDkgKzQyODgsOSBAQCBpbnQgVW5pdFRlc3Q6OnJhbmRvbV9zZWVkKCkgY29uc3QgeyBy
ZXR1cm4gaW1wbF8tPnJhbmRvbV9zZWVkKCk7IH0KICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAog
Ly8gUmV0dXJucyBQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSBvYmplY3QgdXNlZCB0byBr
ZWVwIHRyYWNrIG9mCiAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFuZCBpbnN0YW50aWF0
ZSBhbmQgcmVnaXN0ZXIgdGhlbS4KLS8vIEwgPCBtdXRleF8KIGludGVybmFsOjpQYXJhbWV0ZXJp
emVkVGVzdENhc2VSZWdpc3RyeSYKLSAgICBVbml0VGVzdDo6cGFyYW1ldGVyaXplZF90ZXN0X3Jl
Z2lzdHJ5KCkgeworICAgIFVuaXRUZXN0OjpwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKQor
ICAgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pIHsKICAgcmV0dXJuIGltcGxfLT5w
YXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKTsKIH0KICNlbmRpZiAgLy8gR1RFU1RfSEFTX1BB
UkFNX1RFU1QKQEAgLTM3MzUsMTUgKzQzMDcsMTUgQEAgVW5pdFRlc3Q6On5Vbml0VGVzdCgpIHsK
IAogLy8gUHVzaGVzIGEgdHJhY2UgZGVmaW5lZCBieSBTQ09QRURfVFJBQ0UoKSBvbiB0byB0aGUg
cGVyLXRocmVhZAogLy8gR29vZ2xlIFRlc3QgdHJhY2Ugc3RhY2suCi0vLyBMIDwgbXV0ZXhfCi12
b2lkIFVuaXRUZXN0OjpQdXNoR1Rlc3RUcmFjZShjb25zdCBpbnRlcm5hbDo6VHJhY2VJbmZvJiB0
cmFjZSkgewordm9pZCBVbml0VGVzdDo6UHVzaEdUZXN0VHJhY2UoY29uc3QgaW50ZXJuYWw6OlRy
YWNlSW5mbyYgdHJhY2UpCisgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7CiAgIGlu
dGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKICAgaW1wbF8tPmd0ZXN0X3RyYWNlX3N0
YWNrKCkucHVzaF9iYWNrKHRyYWNlKTsKIH0KIAogLy8gUG9wcyBhIHRyYWNlIGZyb20gdGhlIHBl
ci10aHJlYWQgR29vZ2xlIFRlc3QgdHJhY2Ugc3RhY2suCi0vLyBMIDwgbXV0ZXhfCi12b2lkIFVu
aXRUZXN0OjpQb3BHVGVzdFRyYWNlKCkgewordm9pZCBVbml0VGVzdDo6UG9wR1Rlc3RUcmFjZSgp
CisgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7CiAgIGludGVybmFsOjpNdXRleExv
Y2sgbG9jaygmbXV0ZXhfKTsKICAgaW1wbF8tPmd0ZXN0X3RyYWNlX3N0YWNrKCkucG9wX2JhY2so
KTsKIH0KQEAgLTM3NTIsMTcgKzQzMjQsMTAgQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIAogVW5p
dFRlc3RJbXBsOjpVbml0VGVzdEltcGwoVW5pdFRlc3QqIHBhcmVudCkKICAgICA6IHBhcmVudF8o
cGFyZW50KSwKLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpICAgICAgICAg
ICAgICAgICAgICAvLyBTYXZlcyB0aGUgY3VycmVudCB3YXJuaW5nIHN0YXRlLgotI3ByYWdtYSB3
YXJuaW5nKGRpc2FibGU6NDM1NSkgICAgICAgICAgICAvLyBUZW1wb3JhcmlseSBkaXNhYmxlcyB3
YXJuaW5nIDQzNTUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
KHVzaW5nIHRoaXMgaW4gaW5pdGlhbGl6ZXIpLgorICAgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FS
TklOR1NfUFVTSF8oNDM1NSAvKiB1c2luZyB0aGlzIGluIGluaXRpYWxpemVyICovKQogICAgICAg
ZGVmYXVsdF9nbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8odGhpcyksCiAgICAgICBk
ZWZhdWx0X3Blcl90aHJlYWRfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8odGhpcyksCi0jcHJh
Z21hIHdhcm5pbmcocG9wKSAgICAgICAgICAgICAgICAgICAgIC8vIFJlc3RvcmVzIHRoZSB3YXJu
aW5nIHN0YXRlIGFnYWluLgotI2Vsc2UKLSAgICAgIGRlZmF1bHRfZ2xvYmFsX3Rlc3RfcGFydF9y
ZXN1bHRfcmVwb3J0ZXJfKHRoaXMpLAotICAgICAgZGVmYXVsdF9wZXJfdGhyZWFkX3Rlc3RfcGFy
dF9yZXN1bHRfcmVwb3J0ZXJfKHRoaXMpLAotI2VuZGlmICAvLyBfTVNDX1ZFUgorICAgICAgR1RF
U1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCiAgICAgICBnbG9iYWxfdGVzdF9wYXJ0X3Jl
c3VsdF9yZXBvdGVyXygKICAgICAgICAgICAmZGVmYXVsdF9nbG9iYWxfdGVzdF9wYXJ0X3Jlc3Vs
dF9yZXBvcnRlcl8pLAogICAgICAgcGVyX3RocmVhZF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVy
XygKQEAgLTM3NzksMTMgKzQzNDQsMTMgQEAgVW5pdFRlc3RJbXBsOjpVbml0VGVzdEltcGwoVW5p
dFRlc3QqIHBhcmVudCkKICAgICAgIHBvc3RfZmxhZ19wYXJzZV9pbml0X3BlcmZvcm1lZF8oZmFs
c2UpLAogICAgICAgcmFuZG9tX3NlZWRfKDApLCAgLy8gV2lsbCBiZSBvdmVycmlkZGVuIGJ5IHRo
ZSBmbGFnIGJlZm9yZSBmaXJzdCB1c2UuCiAgICAgICByYW5kb21fKDApLCAgLy8gV2lsbCBiZSBy
ZXNlZWRlZCBiZWZvcmUgZmlyc3QgdXNlLgotI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCisgICAg
ICBzdGFydF90aW1lc3RhbXBfKDApLAogICAgICAgZWxhcHNlZF90aW1lXygwKSwKLSAgICAgIGlu
dGVybmFsX3J1bl9kZWF0aF90ZXN0X2ZsYWdfKE5VTEwpLAotICAgICAgZGVhdGhfdGVzdF9mYWN0
b3J5XyhuZXcgRGVmYXVsdERlYXRoVGVzdEZhY3RvcnkpIHsKLSNlbHNlCi0gICAgICBlbGFwc2Vk
X3RpbWVfKDApIHsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKKyNpZiBHVEVTVF9I
QVNfREVBVEhfVEVTVAorICAgICAgZGVhdGhfdGVzdF9mYWN0b3J5XyhuZXcgRGVmYXVsdERlYXRo
VGVzdEZhY3RvcnkpLAorI2VuZGlmCisgICAgICAvLyBXaWxsIGJlIG92ZXJyaWRkZW4gYnkgdGhl
IGZsYWcgYmVmb3JlIGZpcnN0IHVzZS4KKyAgICAgIGNhdGNoX2V4Y2VwdGlvbnNfKGZhbHNlKSB7
CiAgIGxpc3RlbmVycygpLT5TZXREZWZhdWx0UmVzdWx0UHJpbnRlcihuZXcgUHJldHR5VW5pdFRl
c3RSZXN1bHRQcmludGVyKTsKIH0KIApAQCAtMzc5OSw2ICs0MzY0LDI4IEBAIFVuaXRUZXN0SW1w
bDo6flVuaXRUZXN0SW1wbCgpIHsKICAgZGVsZXRlIG9zX3N0YWNrX3RyYWNlX2dldHRlcl87CiB9
CiAKKy8vIEFkZHMgYSBUZXN0UHJvcGVydHkgdG8gdGhlIGN1cnJlbnQgVGVzdFJlc3VsdCBvYmpl
Y3Qgd2hlbiBpbnZva2VkIGluIGEKKy8vIGNvbnRleHQgb2YgYSB0ZXN0LCB0byBjdXJyZW50IHRl
c3QgY2FzZSdzIGFkX2hvY190ZXN0X3Jlc3VsdCB3aGVuIGludm9rZQorLy8gZnJvbSBTZXRVcFRl
c3RDYXNlL1RlYXJEb3duVGVzdENhc2UsIG9yIHRvIHRoZSBnbG9iYWwgcHJvcGVydHkgc2V0Cisv
LyBvdGhlcndpc2UuICBJZiB0aGUgcmVzdWx0IGFscmVhZHkgY29udGFpbnMgYSBwcm9wZXJ0eSB3
aXRoIHRoZSBzYW1lIGtleSwKKy8vIHRoZSB2YWx1ZSB3aWxsIGJlIHVwZGF0ZWQuCit2b2lkIFVu
aXRUZXN0SW1wbDo6UmVjb3JkUHJvcGVydHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3Bl
cnR5KSB7CisgIHN0ZDo6c3RyaW5nIHhtbF9lbGVtZW50OworICBUZXN0UmVzdWx0KiB0ZXN0X3Jl
c3VsdDsgIC8vIFRlc3RSZXN1bHQgYXBwcm9wcmlhdGUgZm9yIHByb3BlcnR5IHJlY29yZGluZy4K
KworICBpZiAoY3VycmVudF90ZXN0X2luZm9fICE9IE5VTEwpIHsKKyAgICB4bWxfZWxlbWVudCA9
ICJ0ZXN0Y2FzZSI7CisgICAgdGVzdF9yZXN1bHQgPSAmKGN1cnJlbnRfdGVzdF9pbmZvXy0+cmVz
dWx0Xyk7CisgIH0gZWxzZSBpZiAoY3VycmVudF90ZXN0X2Nhc2VfICE9IE5VTEwpIHsKKyAgICB4
bWxfZWxlbWVudCA9ICJ0ZXN0c3VpdGUiOworICAgIHRlc3RfcmVzdWx0ID0gJihjdXJyZW50X3Rl
c3RfY2FzZV8tPmFkX2hvY190ZXN0X3Jlc3VsdF8pOworICB9IGVsc2UgeworICAgIHhtbF9lbGVt
ZW50ID0gInRlc3RzdWl0ZXMiOworICAgIHRlc3RfcmVzdWx0ID0gJmFkX2hvY190ZXN0X3Jlc3Vs
dF87CisgIH0KKyAgdGVzdF9yZXN1bHQtPlJlY29yZFByb3BlcnR5KHhtbF9lbGVtZW50LCB0ZXN0
X3Byb3BlcnR5KTsKK30KKwogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCiAvLyBEaXNhYmxlcyBl
dmVudCBmb3J3YXJkaW5nIGlmIHRoZSBjb250cm9sIGlzIGN1cnJlbnRseSBpbiBhIGRlYXRoIHRl
c3QKIC8vIHN1YnByb2Nlc3MuIE11c3Qgbm90IGJlIGNhbGxlZCBiZWZvcmUgSW5pdEdvb2dsZVRl
c3QuCkBAIC0zODExLDcgKzQzOTgsNyBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6U3VwcHJlc3NUZXN0
RXZlbnRzSWZJblN1YnByb2Nlc3MoKSB7CiAvLyBJbml0aWFsaXplcyBldmVudCBsaXN0ZW5lcnMg
cGVyZm9ybWluZyBYTUwgb3V0cHV0IGFzIHNwZWNpZmllZCBieQogLy8gVW5pdFRlc3RPcHRpb25z
LiBNdXN0IG5vdCBiZSBjYWxsZWQgYmVmb3JlIEluaXRHb29nbGVUZXN0Lgogdm9pZCBVbml0VGVz
dEltcGw6OkNvbmZpZ3VyZVhtbE91dHB1dCgpIHsKLSAgY29uc3QgU3RyaW5nJiBvdXRwdXRfZm9y
bWF0ID0gVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQoKTsKKyAgY29uc3Qgc3RkOjpz
dHJpbmcmIG91dHB1dF9mb3JtYXQgPSBVbml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdCgp
OwogICBpZiAob3V0cHV0X2Zvcm1hdCA9PSAieG1sIikgewogICAgIGxpc3RlbmVycygpLT5TZXRE
ZWZhdWx0WG1sR2VuZXJhdG9yKG5ldyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIoCiAgICAgICAg
IFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSkp
OwpAQCAtMzgyMiw2ICs0NDA5LDI1IEBAIHZvaWQgVW5pdFRlc3RJbXBsOjpDb25maWd1cmVYbWxP
dXRwdXQoKSB7CiAgIH0KIH0KIAorI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKy8vIElu
aXRpYWxpemVzIGV2ZW50IGxpc3RlbmVycyBmb3Igc3RyZWFtaW5nIHRlc3QgcmVzdWx0cyBpbiBz
dHJpbmcgZm9ybS4KKy8vIE11c3Qgbm90IGJlIGNhbGxlZCBiZWZvcmUgSW5pdEdvb2dsZVRlc3Qu
Cit2b2lkIFVuaXRUZXN0SW1wbDo6Q29uZmlndXJlU3RyZWFtaW5nT3V0cHV0KCkgeworICBjb25z
dCBzdGQ6OnN0cmluZyYgdGFyZ2V0ID0gR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKTsKKyAg
aWYgKCF0YXJnZXQuZW1wdHkoKSkgeworICAgIGNvbnN0IHNpemVfdCBwb3MgPSB0YXJnZXQuZmlu
ZCgnOicpOworICAgIGlmIChwb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKKyAgICAgIGxpc3Rl
bmVycygpLT5BcHBlbmQobmV3IFN0cmVhbWluZ0xpc3RlbmVyKHRhcmdldC5zdWJzdHIoMCwgcG9z
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdl
dC5zdWJzdHIocG9zKzEpKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHByaW50ZigiV0FSTklORzog
dW5yZWNvZ25pemVkIHN0cmVhbWluZyB0YXJnZXQgXCIlc1wiIGlnbm9yZWQuXG4iLAorICAgICAg
ICAgICAgIHRhcmdldC5jX3N0cigpKTsKKyAgICAgIGZmbHVzaChzdGRvdXQpOworICAgIH0KKyAg
fQorfQorI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKIC8vIFBlcmZvcm1z
IGluaXRpYWxpemF0aW9uIGRlcGVuZGVudCB1cG9uIGZsYWcgdmFsdWVzIG9idGFpbmVkIGluCiAv
LyBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkuICBJcyBjYWxsZWQgZnJvbSBJbml0R29vZ2xlVGVz
dCBhZnRlciB0aGUgY2FsbCB0bwogLy8gUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5LiAgSW4gY2Fz
ZSBhIHVzZXIgbmVnbGVjdHMgdG8gY2FsbCBJbml0R29vZ2xlVGVzdApAQCAtMzgzMiw2ICs0NDM4
LDExIEBAIHZvaWQgVW5pdFRlc3RJbXBsOjpQb3N0RmxhZ1BhcnNpbmdJbml0KCkgewogICBpZiAo
IXBvc3RfZmxhZ19wYXJzZV9pbml0X3BlcmZvcm1lZF8pIHsKICAgICBwb3N0X2ZsYWdfcGFyc2Vf
aW5pdF9wZXJmb3JtZWRfID0gdHJ1ZTsKIAorI2lmIGRlZmluZWQoR1RFU1RfQ1VTVE9NX1RFU1Rf
RVZFTlRfTElTVEVORVJfKQorICAgIC8vIFJlZ2lzdGVyIHRvIHNlbmQgbm90aWZpY2F0aW9ucyBh
Ym91dCBrZXkgcHJvY2VzcyBzdGF0ZSBjaGFuZ2VzLgorICAgIGxpc3RlbmVycygpLT5BcHBlbmQo
bmV3IEdURVNUX0NVU1RPTV9URVNUX0VWRU5UX0xJU1RFTkVSXygpKTsKKyNlbmRpZiAgLy8gZGVm
aW5lZChHVEVTVF9DVVNUT01fVEVTVF9FVkVOVF9MSVNURU5FUl8pCisKICNpZiBHVEVTVF9IQVNf
REVBVEhfVEVTVAogICAgIEluaXREZWF0aFRlc3RTdWJwcm9jZXNzQ29udHJvbEluZm8oKTsKICAg
ICBTdXBwcmVzc1Rlc3RFdmVudHNJZkluU3VicHJvY2VzcygpOwpAQCAtMzg0NSw2ICs0NDU2LDEx
IEBAIHZvaWQgVW5pdFRlc3RJbXBsOjpQb3N0RmxhZ1BhcnNpbmdJbml0KCkgewogICAgIC8vIENv
bmZpZ3VyZXMgbGlzdGVuZXJzIGZvciBYTUwgb3V0cHV0LiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxl
IGZvciB1c2VycwogICAgIC8vIHRvIHNodXQgZG93biB0aGUgZGVmYXVsdCBYTUwgb3V0cHV0IGJl
Zm9yZSBpbnZva2luZyBSVU5fQUxMX1RFU1RTLgogICAgIENvbmZpZ3VyZVhtbE91dHB1dCgpOwor
CisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworICAgIC8vIENvbmZpZ3VyZXMgbGlzdGVu
ZXJzIGZvciBzdHJlYW1pbmcgdGVzdCByZXN1bHRzIHRvIHRoZSBzcGVjaWZpZWQgc2VydmVyLgor
ICAgIENvbmZpZ3VyZVN0cmVhbWluZ091dHB1dCgpOworI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RS
RUFNX1JFU1VMVFNfCiAgIH0KIH0KIApAQCAtMzg1OSw3ICs0NDc1LDcgQEAgdm9pZCBVbml0VGVz
dEltcGw6OlBvc3RGbGFnUGFyc2luZ0luaXQoKSB7CiBjbGFzcyBUZXN0Q2FzZU5hbWVJcyB7CiAg
cHVibGljOgogICAvLyBDb25zdHJ1Y3Rvci4KLSAgZXhwbGljaXQgVGVzdENhc2VOYW1lSXMoY29u
c3QgU3RyaW5nJiBuYW1lKQorICBleHBsaWNpdCBUZXN0Q2FzZU5hbWVJcyhjb25zdCBzdGQ6OnN0
cmluZyYgbmFtZSkKICAgICAgIDogbmFtZV8obmFtZSkge30KIAogICAvLyBSZXR1cm5zIHRydWUg
aWZmIHRoZSBuYW1lIG9mIHRlc3RfY2FzZSBtYXRjaGVzIG5hbWVfLgpAQCAtMzg2OCw3ICs0NDg0
LDcgQEAgY2xhc3MgVGVzdENhc2VOYW1lSXMgewogICB9CiAKICBwcml2YXRlOgotICBTdHJpbmcg
bmFtZV87CisgIHN0ZDo6c3RyaW5nIG5hbWVfOwogfTsKIAogLy8gRmluZHMgYW5kIHJldHVybnMg
YSBUZXN0Q2FzZSB3aXRoIHRoZSBnaXZlbiBuYW1lLiAgSWYgb25lIGRvZXNuJ3QKQEAgLTM4Nzks
MTAgKzQ0OTUsMTIgQEAgY2xhc3MgVGVzdENhc2VOYW1lSXMgewogLy8gQXJndW1lbnRzOgogLy8K
IC8vICAgdGVzdF9jYXNlX25hbWU6IG5hbWUgb2YgdGhlIHRlc3QgY2FzZQorLy8gICB0eXBlX3Bh
cmFtOiAgICAgdGhlIG5hbWUgb2YgdGhlIHRlc3QgY2FzZSdzIHR5cGUgcGFyYW1ldGVyLCBvciBO
VUxMIGlmCisvLyAgICAgICAgICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlw
ZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZS4KIC8vICAgc2V0X3VwX3RjOiAgICAgIHBvaW50ZXIg
dG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBjYXNlCiAvLyAgIHRlYXJfZG93
bl90YzogICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3Qg
Y2FzZQogVGVzdENhc2UqIFVuaXRUZXN0SW1wbDo6R2V0VGVzdENhc2UoY29uc3QgY2hhciogdGVz
dF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBjb21tZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogdHlwZV9wYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
c3Q6OlNldFVwVGVzdENhc2VGdW5jIHNldF91cF90YywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90Yykgewog
ICAvLyBDYW4gd2UgZmluZCBhIFRlc3RDYXNlIHdpdGggdGhlIGdpdmVuIG5hbWU/CkBAIC0zODk1
LDEwICs0NTEzLDEwIEBAIFRlc3RDYXNlKiBVbml0VGVzdEltcGw6OkdldFRlc3RDYXNlKGNvbnN0
IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAogCiAgIC8vIE5vLiAgTGV0J3MgY3JlYXRlIG9uZS4KICAg
VGVzdENhc2UqIGNvbnN0IG5ld190ZXN0X2Nhc2UgPQotICAgICAgbmV3IFRlc3RDYXNlKHRlc3Rf
Y2FzZV9uYW1lLCBjb21tZW50LCBzZXRfdXBfdGMsIHRlYXJfZG93bl90Yyk7CisgICAgICBuZXcg
VGVzdENhc2UodGVzdF9jYXNlX25hbWUsIHR5cGVfcGFyYW0sIHNldF91cF90YywgdGVhcl9kb3du
X3RjKTsKIAogICAvLyBJcyB0aGlzIGEgZGVhdGggdGVzdCBjYXNlPwotICBpZiAoaW50ZXJuYWw6
OlVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcihTdHJpbmcodGVzdF9jYXNlX25hbWUpLAor
ICBpZiAoaW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcih0ZXN0X2Nhc2Vf
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0Rl
YXRoVGVzdENhc2VGaWx0ZXIpKSB7CiAgICAgLy8gWWVzLiAgSW5zZXJ0cyB0aGUgdGVzdCBjYXNl
IGFmdGVyIHRoZSBsYXN0IGRlYXRoIHRlc3QgY2FzZQogICAgIC8vIGRlZmluZWQgc28gZmFyLiAg
VGhpcyBvbmx5IHdvcmtzIHdoZW4gdGhlIHRlc3QgY2FzZXMgaGF2ZW4ndApAQCAtMzkyMiwyNyAr
NDU0MCwyNiBAQCBzdGF0aWMgdm9pZCBTZXRVcEVudmlyb25tZW50KEVudmlyb25tZW50KiBlbnYp
IHsgZW52LT5TZXRVcCgpOyB9CiBzdGF0aWMgdm9pZCBUZWFyRG93bkVudmlyb25tZW50KEVudmly
b25tZW50KiBlbnYpIHsgZW52LT5UZWFyRG93bigpOyB9CiAKIC8vIFJ1bnMgYWxsIHRlc3RzIGlu
IHRoaXMgVW5pdFRlc3Qgb2JqZWN0LCBwcmludHMgdGhlIHJlc3VsdCwgYW5kCi0vLyByZXR1cm5z
IDAgaWYgYWxsIHRlc3RzIGFyZSBzdWNjZXNzZnVsLCBvciAxIG90aGVyd2lzZS4gIElmIGFueQot
Ly8gZXhjZXB0aW9uIGlzIHRocm93biBkdXJpbmcgYSB0ZXN0IG9uIFdpbmRvd3MsIHRoaXMgdGVz
dCBpcwotLy8gY29uc2lkZXJlZCB0byBiZSBmYWlsZWQsIGJ1dCB0aGUgcmVzdCBvZiB0aGUgdGVz
dHMgd2lsbCBzdGlsbCBiZQotLy8gcnVuLiAgKFdlIGRpc2FibGUgZXhjZXB0aW9ucyBvbiBMaW51
eCBhbmQgTWFjIE9TIFgsIHNvIHRoZSBpc3N1ZQotLy8gZG9lc24ndCBhcHBseSB0aGVyZS4pCisv
LyByZXR1cm5zIHRydWUgaWYgYWxsIHRlc3RzIGFyZSBzdWNjZXNzZnVsLiAgSWYgYW55IGV4Y2Vw
dGlvbiBpcworLy8gdGhyb3duIGR1cmluZyBhIHRlc3QsIHRoZSB0ZXN0IGlzIGNvbnNpZGVyZWQg
dG8gYmUgZmFpbGVkLCBidXQgdGhlCisvLyByZXN0IG9mIHRoZSB0ZXN0cyB3aWxsIHN0aWxsIGJl
IHJ1bi4KKy8vCiAvLyBXaGVuIHBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQsIGl0IGV4
cGFuZHMgYW5kIHJlZ2lzdGVycwogLy8gcGFyYW1ldGVyaXplZCB0ZXN0cyBmaXJzdCBpbiBSZWdp
c3RlclBhcmFtZXRlcml6ZWRUZXN0cygpLgogLy8gQWxsIG90aGVyIGZ1bmN0aW9ucyBjYWxsZWQg
ZnJvbSBSdW5BbGxUZXN0cygpIG1heSBzYWZlbHkgYXNzdW1lIHRoYXQKIC8vIHBhcmFtZXRlcml6
ZWQgdGVzdHMgYXJlIHJlYWR5IHRvIGJlIGNvdW50ZWQgYW5kIHJ1bi4KLWludCBVbml0VGVzdElt
cGw6OlJ1bkFsbFRlc3RzKCkgeworYm9vbCBVbml0VGVzdEltcGw6OlJ1bkFsbFRlc3RzKCkgewog
ICAvLyBNYWtlcyBzdXJlIEluaXRHb29nbGVUZXN0KCkgd2FzIGNhbGxlZC4KICAgaWYgKCFHVGVz
dElzSW5pdGlhbGl6ZWQoKSkgewogICAgIHByaW50ZigiJXMiLAogICAgICAgICAgICAiXG5UaGlz
IHRlc3QgcHJvZ3JhbSBkaWQgTk9UIGNhbGwgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCAiCiAg
ICAgICAgICAgICJiZWZvcmUgY2FsbGluZyBSVU5fQUxMX1RFU1RTKCkuICBQbGVhc2UgZml4IGl0
LlxuIik7Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGZhbHNlOwogICB9CiAKICAgLy8gRG8g
bm90IHJ1biBhbnkgdGVzdCBpZiB0aGUgLS1oZWxwIGZsYWcgd2FzIHNwZWNpZmllZC4KICAgaWYg
KGdfaGVscF9mbGFnKQotICAgIHJldHVybiAwOworICAgIHJldHVybiB0cnVlOwogCiAgIC8vIFJl
cGVhdHMgdGhlIGNhbGwgdG8gdGhlIHBvc3QtZmxhZyBwYXJzaW5nIGluaXRpYWxpemF0aW9uIGlu
IGNhc2UgdGhlCiAgIC8vIHVzZXIgZGlkbid0IGNhbGwgSW5pdEdvb2dsZVRlc3QuCkBAIC0zOTU5
LDYgKzQ1NzYsMTEgQEAgaW50IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7CiAKICNpZiBH
VEVTVF9IQVNfREVBVEhfVEVTVAogICBpbl9zdWJwcm9jZXNzX2Zvcl9kZWF0aF90ZXN0ID0gKGlu
dGVybmFsX3J1bl9kZWF0aF90ZXN0X2ZsYWdfLmdldCgpICE9IE5VTEwpOworIyBpZiBkZWZpbmVk
KEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ0hJTERfU0VUVVBfKQorICBpZiAoaW5fc3VicHJvY2Vz
c19mb3JfZGVhdGhfdGVzdCkgeworICAgIEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ0hJTERfU0VU
VVBfKCk7CisgIH0KKyMgZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfRVhUUkFfREVBVEhfVEVTVF9D
SElMRF9TRVRVUF8pCiAjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCiAKICAgY29uc3Qg
Ym9vbCBzaG91bGRfc2hhcmQgPSBTaG91bGRTaGFyZChrVGVzdFRvdGFsU2hhcmRzLCBrVGVzdFNo
YXJkSW5kZXgsCkBAIC0zOTc0LDcgKzQ1OTYsNyBAQCBpbnQgVW5pdFRlc3RJbXBsOjpSdW5BbGxU
ZXN0cygpIHsKICAgaWYgKEdURVNUX0ZMQUcobGlzdF90ZXN0cykpIHsKICAgICAvLyBUaGlzIG11
c3QgYmUgY2FsbGVkICphZnRlciogRmlsdGVyVGVzdHMoKSBoYXMgYmVlbiBjYWxsZWQuCiAgICAg
TGlzdFRlc3RzTWF0Y2hpbmdGaWx0ZXIoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdHJ1
ZTsKICAgfQogCiAgIHJhbmRvbV9zZWVkXyA9IEdURVNUX0ZMQUcoc2h1ZmZsZSkgPwpAQCAtMzk4
NSw2ICs0NjA3LDcgQEAgaW50IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7CiAKICAgVGVz
dEV2ZW50TGlzdGVuZXIqIHJlcGVhdGVyID0gbGlzdGVuZXJzKCktPnJlcGVhdGVyKCk7CiAKKyAg
c3RhcnRfdGltZXN0YW1wXyA9IEdldFRpbWVJbk1pbGxpcygpOwogICByZXBlYXRlci0+T25UZXN0
UHJvZ3JhbVN0YXJ0KCpwYXJlbnRfKTsKIAogICAvLyBIb3cgbWFueSB0aW1lcyB0byByZXBlYXQg
dGhlIHRlc3RzPyAgV2UgZG9uJ3Qgd2FudCB0byByZXBlYXQgdGhlbQpAQCAtMzk5Myw3ICs0NjE2
LDkgQEAgaW50IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7CiAgIC8vIFJlcGVhdHMgZm9y
ZXZlciBpZiB0aGUgcmVwZWF0IGNvdW50IGlzIG5lZ2F0aXZlLgogICBjb25zdCBib29sIGZvcmV2
ZXIgPSByZXBlYXQgPCAwOwogICBmb3IgKGludCBpID0gMDsgZm9yZXZlciB8fCBpICE9IHJlcGVh
dDsgaSsrKSB7Ci0gICAgQ2xlYXJSZXN1bHQoKTsKKyAgICAvLyBXZSB3YW50IHRvIHByZXNlcnZl
IGZhaWx1cmVzIGdlbmVyYXRlZCBieSBhZC1ob2MgdGVzdAorICAgIC8vIGFzc2VydGlvbnMgZXhl
Y3V0ZWQgYmVmb3JlIFJVTl9BTExfVEVTVFMoKS4KKyAgICBDbGVhck5vbkFkSG9jVGVzdFJlc3Vs
dCgpOwogCiAgICAgY29uc3QgVGltZUluTWlsbGlzIHN0YXJ0ID0gR2V0VGltZUluTWlsbGlzKCk7
CiAKQEAgLTQwNTgsOCArNDY4Myw3IEBAIGludCBVbml0VGVzdEltcGw6OlJ1bkFsbFRlc3RzKCkg
ewogCiAgIHJlcGVhdGVyLT5PblRlc3RQcm9ncmFtRW5kKCpwYXJlbnRfKTsKIAotICAvLyBSZXR1
cm5zIDAgaWYgYWxsIHRlc3RzIHBhc3NlZCwgb3IgMSBvdGhlciB3aXNlLgotICByZXR1cm4gZmFp
bGVkID8gMSA6IDA7CisgIHJldHVybiAhZmFpbGVkOwogfQogCiAvLyBSZWFkcyB0aGUgR1RFU1Rf
U0hBUkRfU1RBVFVTX0ZJTEUgZW52aXJvbm1lbnQgdmFyaWFibGUsIGFuZCBjcmVhdGVzIHRoZSBm
aWxlCkBAIC00MTMzLDcgKzQ3NTcsNyBAQCBib29sIFNob3VsZFNoYXJkKGNvbnN0IGNoYXIqIHRv
dGFsX3NoYXJkc19lbnYsCiAvLyBQYXJzZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHZhciBh
cyBhbiBJbnQzMi4gSWYgaXQgaXMgdW5zZXQsCiAvLyByZXR1cm5zIGRlZmF1bHRfdmFsLiBJZiBp
dCBpcyBub3QgYW4gSW50MzIsIHByaW50cyBhbiBlcnJvcgogLy8gYW5kIGFib3J0cy4KLUludDMy
IEludDMyRnJvbUVudk9yRGllKGNvbnN0IGNoYXIqIGNvbnN0IHZhciwgSW50MzIgZGVmYXVsdF92
YWwpIHsKK0ludDMyIEludDMyRnJvbUVudk9yRGllKGNvbnN0IGNoYXIqIHZhciwgSW50MzIgZGVm
YXVsdF92YWwpIHsKICAgY29uc3QgY2hhciogc3RyX3ZhbCA9IHBvc2l4OjpHZXRFbnYodmFyKTsK
ICAgaWYgKHN0cl92YWwgPT0gTlVMTCkgewogICAgIHJldHVybiBkZWZhdWx0X3ZhbDsKQEAgLTQx
NzYsMTIgKzQ4MDAsMTIgQEAgaW50IFVuaXRUZXN0SW1wbDo6RmlsdGVyVGVzdHMoUmVhY3Rpb25U
b1NoYXJkaW5nIHNoYXJkX3Rlc3RzKSB7CiAgIGludCBudW1fc2VsZWN0ZWRfdGVzdHMgPSAwOwog
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXNfLnNpemUoKTsgaSsrKSB7CiAgICAg
VGVzdENhc2UqIGNvbnN0IHRlc3RfY2FzZSA9IHRlc3RfY2FzZXNfW2ldOwotICAgIGNvbnN0IFN0
cmluZyAmdGVzdF9jYXNlX25hbWUgPSB0ZXN0X2Nhc2UtPm5hbWUoKTsKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyAmdGVzdF9jYXNlX25hbWUgPSB0ZXN0X2Nhc2UtPm5hbWUoKTsKICAgICB0ZXN0X2Nh
c2UtPnNldF9zaG91bGRfcnVuKGZhbHNlKTsKIAogICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwg
dGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpLnNpemUoKTsgaisrKSB7CiAgICAgICBUZXN0SW5m
byogY29uc3QgdGVzdF9pbmZvID0gdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpW2pdOwotICAg
ICAgY29uc3QgU3RyaW5nIHRlc3RfbmFtZSh0ZXN0X2luZm8tPm5hbWUoKSk7CisgICAgICBjb25z
dCBzdGQ6OnN0cmluZyB0ZXN0X25hbWUodGVzdF9pbmZvLT5uYW1lKCkpOwogICAgICAgLy8gQSB0
ZXN0IGlzIGRpc2FibGVkIGlmIHRlc3QgY2FzZSBuYW1lIG9yIHRlc3QgbmFtZSBtYXRjaGVzCiAg
ICAgICAvLyBrRGlzYWJsZVRlc3RGaWx0ZXIuCiAgICAgICBjb25zdCBib29sIGlzX2Rpc2FibGVk
ID0KQEAgLTQxODksMTIgKzQ4MTMsMTIgQEAgaW50IFVuaXRUZXN0SW1wbDo6RmlsdGVyVGVzdHMo
UmVhY3Rpb25Ub1NoYXJkaW5nIHNoYXJkX3Rlc3RzKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrRGlzYWJsZVRlc3RGaWx0ZXIpIHx8CiAgICAg
ICAgICAgaW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcih0ZXN0X25hbWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrRGlz
YWJsZVRlc3RGaWx0ZXIpOwotICAgICAgdGVzdF9pbmZvLT5pbXBsKCktPnNldF9pc19kaXNhYmxl
ZChpc19kaXNhYmxlZCk7CisgICAgICB0ZXN0X2luZm8tPmlzX2Rpc2FibGVkXyA9IGlzX2Rpc2Fi
bGVkOwogCiAgICAgICBjb25zdCBib29sIG1hdGNoZXNfZmlsdGVyID0KICAgICAgICAgICBpbnRl
cm5hbDo6VW5pdFRlc3RPcHRpb25zOjpGaWx0ZXJNYXRjaGVzVGVzdCh0ZXN0X2Nhc2VfbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0X25hbWUpOwotICAgICAgdGVzdF9pbmZvLT5pbXBsKCktPnNldF9tYXRjaGVzX2ZpbHRlciht
YXRjaGVzX2ZpbHRlcik7CisgICAgICB0ZXN0X2luZm8tPm1hdGNoZXNfZmlsdGVyXyA9IG1hdGNo
ZXNfZmlsdGVyOwogCiAgICAgICBjb25zdCBib29sIGlzX3J1bm5hYmxlID0KICAgICAgICAgICAo
R1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cykgfHwgIWlzX2Rpc2FibGVkKSAmJgpA
QCAtNDIwOCwxNSArNDgzMiw0MCBAQCBpbnQgVW5pdFRlc3RJbXBsOjpGaWx0ZXJUZXN0cyhSZWFj
dGlvblRvU2hhcmRpbmcgc2hhcmRfdGVzdHMpIHsKICAgICAgIG51bV9ydW5uYWJsZV90ZXN0cyAr
PSBpc19ydW5uYWJsZTsKICAgICAgIG51bV9zZWxlY3RlZF90ZXN0cyArPSBpc19zZWxlY3RlZDsK
IAotICAgICAgdGVzdF9pbmZvLT5pbXBsKCktPnNldF9zaG91bGRfcnVuKGlzX3NlbGVjdGVkKTsK
KyAgICAgIHRlc3RfaW5mby0+c2hvdWxkX3J1bl8gPSBpc19zZWxlY3RlZDsKICAgICAgIHRlc3Rf
Y2FzZS0+c2V0X3Nob3VsZF9ydW4odGVzdF9jYXNlLT5zaG91bGRfcnVuKCkgfHwgaXNfc2VsZWN0
ZWQpOwogICAgIH0KICAgfQogICByZXR1cm4gbnVtX3NlbGVjdGVkX3Rlc3RzOwogfQogCisvLyBQ
cmludHMgdGhlIGdpdmVuIEMtc3RyaW5nIG9uIGEgc2luZ2xlIGxpbmUgYnkgcmVwbGFjaW5nIGFs
bCAnXG4nCisvLyBjaGFyYWN0ZXJzIHdpdGggc3RyaW5nICJcXG4iLiAgSWYgdGhlIG91dHB1dCB0
YWtlcyBtb3JlIHRoYW4KKy8vIG1heF9sZW5ndGggY2hhcmFjdGVycywgb25seSBwcmludHMgdGhl
IGZpcnN0IG1heF9sZW5ndGggY2hhcmFjdGVycworLy8gYW5kICIuLi4iLgorc3RhdGljIHZvaWQg
UHJpbnRPbk9uZUxpbmUoY29uc3QgY2hhciogc3RyLCBpbnQgbWF4X2xlbmd0aCkgeworICBpZiAo
c3RyICE9IE5VTEwpIHsKKyAgICBmb3IgKGludCBpID0gMDsgKnN0ciAhPSAnXDAnOyArK3N0cikg
eworICAgICAgaWYgKGkgPj0gbWF4X2xlbmd0aCkgeworICAgICAgICBwcmludGYoIi4uLiIpOwor
ICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmICgqc3RyID09ICdcbicpIHsKKyAgICAg
ICAgcHJpbnRmKCJcXG4iKTsKKyAgICAgICAgaSArPSAyOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHJpbnRmKCIlYyIsICpzdHIpOworICAgICAgICArK2k7CisgICAgICB9CisgICAgfQorICB9
Cit9CisKIC8vIFByaW50cyB0aGUgbmFtZXMgb2YgdGhlIHRlc3RzIG1hdGNoaW5nIHRoZSB1c2Vy
LXNwZWNpZmllZCBmaWx0ZXIgZmxhZy4KIHZvaWQgVW5pdFRlc3RJbXBsOjpMaXN0VGVzdHNNYXRj
aGluZ0ZpbHRlcigpIHsKKyAgLy8gUHJpbnQgYXQgbW9zdCB0aGlzIG1hbnkgY2hhcmFjdGVycyBm
b3IgZWFjaCB0eXBlL3ZhbHVlIHBhcmFtZXRlci4KKyAgY29uc3QgaW50IGtNYXhQYXJhbUxlbmd0
aCA9IDI1MDsKKwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXNfLnNpemUoKTsg
aSsrKSB7CiAgICAgY29uc3QgVGVzdENhc2UqIGNvbnN0IHRlc3RfY2FzZSA9IHRlc3RfY2FzZXNf
W2ldOwogICAgIGJvb2wgcHJpbnRlZF90ZXN0X2Nhc2VfbmFtZSA9IGZhbHNlOwpAQCAtNDIyNCwx
MiArNDg3MywyNiBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6TGlzdFRlc3RzTWF0Y2hpbmdGaWx0ZXIo
KSB7CiAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCB0ZXN0X2Nhc2UtPnRlc3RfaW5mb19saXN0
KCkuc2l6ZSgpOyBqKyspIHsKICAgICAgIGNvbnN0IFRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8g
PQogICAgICAgICAgIHRlc3RfY2FzZS0+dGVzdF9pbmZvX2xpc3QoKVtqXTsKLSAgICAgIGlmICh0
ZXN0X2luZm8tPm1hdGNoZXNfZmlsdGVyKCkpIHsKKyAgICAgIGlmICh0ZXN0X2luZm8tPm1hdGNo
ZXNfZmlsdGVyXykgewogICAgICAgICBpZiAoIXByaW50ZWRfdGVzdF9jYXNlX25hbWUpIHsKICAg
ICAgICAgICBwcmludGVkX3Rlc3RfY2FzZV9uYW1lID0gdHJ1ZTsKLSAgICAgICAgICBwcmludGYo
IiVzLlxuIiwgdGVzdF9jYXNlLT5uYW1lKCkpOworICAgICAgICAgIHByaW50ZigiJXMuIiwgdGVz
dF9jYXNlLT5uYW1lKCkpOworICAgICAgICAgIGlmICh0ZXN0X2Nhc2UtPnR5cGVfcGFyYW0oKSAh
PSBOVUxMKSB7CisgICAgICAgICAgICBwcmludGYoIiAgIyAlcyA9ICIsIGtUeXBlUGFyYW1MYWJl
bCk7CisgICAgICAgICAgICAvLyBXZSBwcmludCB0aGUgdHlwZSBwYXJhbWV0ZXIgb24gYSBzaW5n
bGUgbGluZSB0byBtYWtlCisgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IGVhc3kgdG8gcGFyc2Ug
YnkgYSBwcm9ncmFtLgorICAgICAgICAgICAgUHJpbnRPbk9uZUxpbmUodGVzdF9jYXNlLT50eXBl
X3BhcmFtKCksIGtNYXhQYXJhbUxlbmd0aCk7CisgICAgICAgICAgfQorICAgICAgICAgIHByaW50
ZigiXG4iKTsKICAgICAgICAgfQotICAgICAgICBwcmludGYoIiAgJXNcbiIsIHRlc3RfaW5mby0+
bmFtZSgpKTsKKyAgICAgICAgcHJpbnRmKCIgICVzIiwgdGVzdF9pbmZvLT5uYW1lKCkpOworICAg
ICAgICBpZiAodGVzdF9pbmZvLT52YWx1ZV9wYXJhbSgpICE9IE5VTEwpIHsKKyAgICAgICAgICBw
cmludGYoIiAgIyAlcyA9ICIsIGtWYWx1ZVBhcmFtTGFiZWwpOworICAgICAgICAgIC8vIFdlIHBy
aW50IHRoZSB2YWx1ZSBwYXJhbWV0ZXIgb24gYSBzaW5nbGUgbGluZSB0byBtYWtlIHRoZQorICAg
ICAgICAgIC8vIG91dHB1dCBlYXN5IHRvIHBhcnNlIGJ5IGEgcHJvZ3JhbS4KKyAgICAgICAgICBQ
cmludE9uT25lTGluZSh0ZXN0X2luZm8tPnZhbHVlX3BhcmFtKCksIGtNYXhQYXJhbUxlbmd0aCk7
CisgICAgICAgIH0KKyAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgICAgfQogICAgIH0KICAgfQpA
QCAtNDI1NCw3ICs0OTE3LDExIEBAIHZvaWQgVW5pdFRlc3RJbXBsOjpzZXRfb3Nfc3RhY2tfdHJh
Y2VfZ2V0dGVyKAogLy8gZ2V0dGVyLCBhbmQgcmV0dXJucyBpdC4KIE9zU3RhY2tUcmFjZUdldHRl
ckludGVyZmFjZSogVW5pdFRlc3RJbXBsOjpvc19zdGFja190cmFjZV9nZXR0ZXIoKSB7CiAgIGlm
IChvc19zdGFja190cmFjZV9nZXR0ZXJfID09IE5VTEwpIHsKKyNpZmRlZiBHVEVTVF9PU19TVEFD
S19UUkFDRV9HRVRURVJfCisgICAgb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXyA9IG5ldyBHVEVTVF9P
U19TVEFDS19UUkFDRV9HRVRURVJfOworI2Vsc2UKICAgICBvc19zdGFja190cmFjZV9nZXR0ZXJf
ID0gbmV3IE9zU3RhY2tUcmFjZUdldHRlcjsKKyNlbmRpZiAgLy8gR1RFU1RfT1NfU1RBQ0tfVFJB
Q0VfR0VUVEVSXwogICB9CiAKICAgcmV0dXJuIG9zX3N0YWNrX3RyYWNlX2dldHRlcl87CkBAIC00
MjY0LDcgKzQ5MzEsNyBAQCBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UqIFVuaXRUZXN0SW1w
bDo6b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCkgewogLy8gdGhlIFRlc3RSZXN1bHQgZm9yIHRoZSBh
ZCBob2MgdGVzdCBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcuCiBUZXN0UmVzdWx0KiBVbml0VGVzdElt
cGw6OmN1cnJlbnRfdGVzdF9yZXN1bHQoKSB7CiAgIHJldHVybiBjdXJyZW50X3Rlc3RfaW5mb18g
PwotICAgIGN1cnJlbnRfdGVzdF9pbmZvXy0+aW1wbCgpLT5yZXN1bHQoKSA6ICZhZF9ob2NfdGVz
dF9yZXN1bHRfOworICAgICAgJihjdXJyZW50X3Rlc3RfaW5mb18tPnJlc3VsdF8pIDogJmFkX2hv
Y190ZXN0X3Jlc3VsdF87CiB9CiAKIC8vIFNodWZmbGVzIGFsbCB0ZXN0IGNhc2VzLCBhbmQgdGhl
IHRlc3RzIHdpdGhpbiBlYWNoIHRlc3QgY2FzZSwKQEAgLTQyOTMsMzMgKzQ5NjAsNyBAQCB2b2lk
IFVuaXRUZXN0SW1wbDo6VW5zaHVmZmxlVGVzdHMoKSB7CiAgIH0KIH0KIAotLy8gVGVzdEluZm9J
bXBsIGNvbnN0cnVjdG9yLiBUaGUgbmV3IGluc3RhbmNlIGFzc3VtZXMgb3duZXJzaGlwIG9mIHRo
ZSB0ZXN0Ci0vLyBmYWN0b3J5IG9iamVjdC4KLVRlc3RJbmZvSW1wbDo6VGVzdEluZm9JbXBsKFRl
c3RJbmZvKiBwYXJlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBh
X3Rlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
YV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV90ZXN0X2Nh
c2VfY29tbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfY29t
bWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVJZCBhX2ZpeHR1cmVfY2xhc3Nf
aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNl
KiBmYWN0b3J5KSA6Ci0gICAgcGFyZW50XyhwYXJlbnQpLAotICAgIHRlc3RfY2FzZV9uYW1lXyhT
dHJpbmcoYV90ZXN0X2Nhc2VfbmFtZSkpLAotICAgIG5hbWVfKFN0cmluZyhhX25hbWUpKSwKLSAg
ICB0ZXN0X2Nhc2VfY29tbWVudF8oU3RyaW5nKGFfdGVzdF9jYXNlX2NvbW1lbnQpKSwKLSAgICBj
b21tZW50XyhTdHJpbmcoYV9jb21tZW50KSksCi0gICAgZml4dHVyZV9jbGFzc19pZF8oYV9maXh0
dXJlX2NsYXNzX2lkKSwKLSAgICBzaG91bGRfcnVuXyhmYWxzZSksCi0gICAgaXNfZGlzYWJsZWRf
KGZhbHNlKSwKLSAgICBtYXRjaGVzX2ZpbHRlcl8oZmFsc2UpLAotICAgIGZhY3RvcnlfKGZhY3Rv
cnkpIHsKLX0KLQotLy8gVGVzdEluZm9JbXBsIGRlc3RydWN0b3IuCi1UZXN0SW5mb0ltcGw6On5U
ZXN0SW5mb0ltcGwoKSB7Ci0gIGRlbGV0ZSBmYWN0b3J5XzsKLX0KLQotLy8gUmV0dXJucyB0aGUg
Y3VycmVudCBPUyBzdGFjayB0cmFjZSBhcyBhIFN0cmluZy4KKy8vIFJldHVybnMgdGhlIGN1cnJl
bnQgT1Mgc3RhY2sgdHJhY2UgYXMgYW4gc3RkOjpzdHJpbmcuCiAvLwogLy8gVGhlIG1heGltdW0g
bnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZCBpcyBzcGVjaWZpZWQgYnkKIC8v
IHRoZSBndGVzdF9zdGFja190cmFjZV9kZXB0aCBmbGFnLiAgVGhlIHNraXBfY291bnQgcGFyYW1l
dGVyCkBAIC00MzI5LDE1ICs0OTcwLDE1IEBAIFRlc3RJbmZvSW1wbDo6flRlc3RJbmZvSW1wbCgp
IHsKIC8vIEZvciBleGFtcGxlLCBpZiBGb28oKSBjYWxscyBCYXIoKSwgd2hpY2ggaW4gdHVybiBj
YWxscwogLy8gR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCguLi4sIDEpLCBGb28oKSB3
aWxsIGJlIGluY2x1ZGVkIGluCiAvLyB0aGUgdHJhY2UgYnV0IEJhcigpIGFuZCBHZXRDdXJyZW50
T3NTdGFja1RyYWNlRXhjZXB0VG9wKCkgd29uJ3QuCi1TdHJpbmcgR2V0Q3VycmVudE9zU3RhY2tU
cmFjZUV4Y2VwdFRvcChVbml0VGVzdCogLyp1bml0X3Rlc3QqLywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBza2lwX2NvdW50KSB7CitzdGQ6OnN0cmluZyBHZXRD
dXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKFVuaXRUZXN0KiAvKnVuaXRfdGVzdCovLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2tpcF9jb3VudCkg
ewogICAvLyBXZSBwYXNzIHNraXBfY291bnQgKyAxIHRvIHNraXAgdGhpcyB3cmFwcGVyIGZ1bmN0
aW9uIGluIGFkZGl0aW9uCiAgIC8vIHRvIHdoYXQgdGhlIHVzZXIgcmVhbGx5IHdhbnRzIHRvIHNr
aXAuCiAgIHJldHVybiBHZXRVbml0VGVzdEltcGwoKS0+Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2Vw
dFRvcChza2lwX2NvdW50ICsgMSk7CiB9CiAKLS8vIFVzZWQgYnkgdGhlIEdURVNUX0hJREVfVU5S
RUFDSEFCTEVfQ09ERV8gbWFjcm8gdG8gc3VwcHJlc3MgdW5yZWFjaGFibGUKLS8vIGNvZGUgd2Fy
bmluZ3MuCisvLyBVc2VkIGJ5IHRoZSBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dB
Uk5JTkdfQkVMT1dfIG1hY3JvIHRvCisvLyBzdXBwcmVzcyB1bnJlYWNoYWJsZSBjb2RlIHdhcm5p
bmdzLgogbmFtZXNwYWNlIHsKIGNsYXNzIENsYXNzVW5pcXVlVG9BbHdheXNUcnVlIHt9OwogfQpA
QCAtNDM3OCw3ICs1MDE5LDcgQEAgY29uc3QgY2hhciogUGFyc2VGbGFnVmFsdWUoY29uc3QgY2hh
ciogc3RyLAogICBpZiAoc3RyID09IE5VTEwgfHwgZmxhZyA9PSBOVUxMKSByZXR1cm4gTlVMTDsK
IAogICAvLyBUaGUgZmxhZyBtdXN0IHN0YXJ0IHdpdGggIi0tIiBmb2xsb3dlZCBieSBHVEVTVF9G
TEFHX1BSRUZJWF8uCi0gIGNvbnN0IFN0cmluZyBmbGFnX3N0ciA9IFN0cmluZzo6Rm9ybWF0KCIt
LSVzJXMiLCBHVEVTVF9GTEFHX1BSRUZJWF8sIGZsYWcpOworICBjb25zdCBzdGQ6OnN0cmluZyBm
bGFnX3N0ciA9IHN0ZDo6c3RyaW5nKCItLSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsgZmxhZzsK
ICAgY29uc3Qgc2l6ZV90IGZsYWdfbGVuID0gZmxhZ19zdHIubGVuZ3RoKCk7CiAgIGlmIChzdHJu
Y21wKHN0ciwgZmxhZ19zdHIuY19zdHIoKSwgZmxhZ19sZW4pICE9IDApIHJldHVybiBOVUxMOwog
CkBAIC00NDQzLDcgKzUwODQsNyBAQCBib29sIFBhcnNlSW50MzJGbGFnKGNvbnN0IGNoYXIqIHN0
ciwgY29uc3QgY2hhciogZmxhZywgSW50MzIqIHZhbHVlKSB7CiAvLwogLy8gT24gc3VjY2Vzcywg
c3RvcmVzIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyBpbiAqdmFsdWUsIGFuZCByZXR1cm5zCiAvLyB0
cnVlLiAgT24gZmFpbHVyZSwgcmV0dXJucyBmYWxzZSB3aXRob3V0IGNoYW5naW5nICp2YWx1ZS4K
LWJvb2wgUGFyc2VTdHJpbmdGbGFnKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgY2hhciogZmxhZywg
U3RyaW5nKiB2YWx1ZSkgeworYm9vbCBQYXJzZVN0cmluZ0ZsYWcoY29uc3QgY2hhciogc3RyLCBj
b25zdCBjaGFyKiBmbGFnLCBzdGQ6OnN0cmluZyogdmFsdWUpIHsKICAgLy8gR2V0cyB0aGUgdmFs
dWUgb2YgdGhlIGZsYWcgYXMgYSBzdHJpbmcuCiAgIGNvbnN0IGNoYXIqIGNvbnN0IHZhbHVlX3N0
ciA9IFBhcnNlRmxhZ1ZhbHVlKHN0ciwgZmxhZywgZmFsc2UpOwogCkBAIC00NDk1LDcgKzUxMzYs
NyBAQCBzdGF0aWMgdm9pZCBQcmludENvbG9yRW5jb2RlZChjb25zdCBjaGFyKiBzdHIpIHsKICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDb2xvcmVkUHJpbnRmKGNvbG9yLCAiJXMiLCBTdHJp
bmcoc3RyLCBwIC0gc3RyKS5jX3N0cigpKTsKKyAgICBDb2xvcmVkUHJpbnRmKGNvbG9yLCAiJXMi
LCBzdGQ6OnN0cmluZyhzdHIsIHApLmNfc3RyKCkpOwogCiAgICAgY29uc3QgY2hhciBjaCA9IHBb
MV07CiAgICAgc3RyID0gcCArIDI7CkBAIC00NTQ5LDYgKzUxOTAsMTAgQEAgc3RhdGljIGNvbnN0
IGNoYXIga0NvbG9yRW5jb2RlZEhlbHBNZXNzYWdlW10gPQogICAgIEdURVNUX1BBVEhfU0VQXyAi
QFl8QEc6QFlGSUxFX1BBVEhdQERcbiIKICIgICAgICBHZW5lcmF0ZSBhbiBYTUwgcmVwb3J0IGlu
IHRoZSBnaXZlbiBkaXJlY3Rvcnkgb3Igd2l0aCB0aGUgZ2l2ZW4gZmlsZVxuIgogIiAgICAgIG5h
bWUuIEBZRklMRV9QQVRIQEQgZGVmYXVsdHMgdG8gQEd0ZXN0X2RldGFpbHMueG1sQEQuXG4iCisj
aWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhf
ICJzdHJlYW1fcmVzdWx0X3RvPUBZSE9TVEBHOkBZUE9SVEBEXG4iCisiICAgICAgU3RyZWFtIHRl
c3QgcmVzdWx0cyB0byB0aGUgZ2l2ZW4gc2VydmVyLlxuIgorI2VuZGlmICAvLyBHVEVTVF9DQU5f
U1RSRUFNX1JFU1VMVFNfCiAiXG4iCiAiQXNzZXJ0aW9uIEJlaGF2aW9yOlxuIgogI2lmIEdURVNU
X0hBU19ERUFUSF9URVNUICYmICFHVEVTVF9PU19XSU5ET1dTCkBAIC00NTU5LDEwICs1MjA0LDkg
QEAgc3RhdGljIGNvbnN0IGNoYXIga0NvbG9yRW5jb2RlZEhlbHBNZXNzYWdlW10gPQogIiAgICAg
IFR1cm4gYXNzZXJ0aW9uIGZhaWx1cmVzIGludG8gZGVidWdnZXIgYnJlYWstcG9pbnRzLlxuIgog
IiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJ0aHJvd19vbl9mYWlsdXJlQERcbiIKICIgICAg
ICBUdXJuIGFzc2VydGlvbiBmYWlsdXJlcyBpbnRvIEMrKyBleGNlcHRpb25zLlxuIgotI2lmIEdU
RVNUX09TX1dJTkRPV1MKLSIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiY2F0Y2hfZXhjZXB0
aW9uc0BEXG4iCi0iICAgICAgU3VwcHJlc3MgcG9wLXVwcyBjYXVzZWQgYnkgZXhjZXB0aW9ucy5c
biIKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIiAgQEctLSIgR1RFU1RfRkxBR19QUkVG
SVhfICJjYXRjaF9leGNlcHRpb25zPTBARFxuIgorIiAgICAgIERvIG5vdCByZXBvcnQgZXhjZXB0
aW9ucyBhcyB0ZXN0IGZhaWx1cmVzLiBJbnN0ZWFkLCBhbGxvdyB0aGVtXG4iCisiICAgICAgdG8g
Y3Jhc2ggdGhlIHByb2dyYW0gb3IgdGhyb3cgYSBwb3AtdXAgKG9uIFdpbmRvd3MpLlxuIgogIlxu
IgogIkV4Y2VwdCBmb3IgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJsaXN0X3Rlc3RzQEQsIHlv
dSBjYW4gYWx0ZXJuYXRpdmVseSBzZXQgIgogICAgICJ0aGUgY29ycmVzcG9uZGluZ1xuIgpAQCAt
NDU3Niw0NSArNTIyMCw4OSBAQCBzdGF0aWMgY29uc3QgY2hhciBrQ29sb3JFbmNvZGVkSGVscE1l
c3NhZ2VbXSA9CiAiKG5vdCBvbmUgaW4geW91ciBvd24gY29kZSBvciB0ZXN0cyksIHBsZWFzZSBy
ZXBvcnQgaXQgdG9cbiIKICJARzwiIEdURVNUX0RFVl9FTUFJTF8gIj5ARC5cbiI7CiAKK2Jvb2wg
UGFyc2VHb29nbGVUZXN0RmxhZyhjb25zdCBjaGFyKiBjb25zdCBhcmcpIHsKKyAgcmV0dXJuIFBh
cnNlQm9vbEZsYWcoYXJnLCBrQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnLAorICAgICAgICAgICAg
ICAgICAgICAgICAmR1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cykpIHx8CisgICAg
ICBQYXJzZUJvb2xGbGFnKGFyZywga0JyZWFrT25GYWlsdXJlRmxhZywKKyAgICAgICAgICAgICAg
ICAgICAgJkdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSkpIHx8CisgICAgICBQYXJzZUJvb2xG
bGFnKGFyZywga0NhdGNoRXhjZXB0aW9uc0ZsYWcsCisgICAgICAgICAgICAgICAgICAgICZHVEVT
VF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKSB8fAorICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywg
a0NvbG9yRmxhZywgJkdURVNUX0ZMQUcoY29sb3IpKSB8fAorICAgICAgUGFyc2VTdHJpbmdGbGFn
KGFyZywga0RlYXRoVGVzdFN0eWxlRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAmR1RFU1Rf
RkxBRyhkZWF0aF90ZXN0X3N0eWxlKSkgfHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrRGVh
dGhUZXN0VXNlRm9yaywKKyAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoZGVhdGhfdGVz
dF91c2VfZm9yaykpIHx8CisgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrRmlsdGVyRmxhZywg
JkdURVNUX0ZMQUcoZmlsdGVyKSkgfHwKKyAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtJbnRl
cm5hbFJ1bkRlYXRoVGVzdEZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUco
aW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpKSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtM
aXN0VGVzdHNGbGFnLCAmR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSkgfHwKKyAgICAgIFBhcnNlU3Ry
aW5nRmxhZyhhcmcsIGtPdXRwdXRGbGFnLCAmR1RFU1RfRkxBRyhvdXRwdXQpKSB8fAorICAgICAg
UGFyc2VCb29sRmxhZyhhcmcsIGtQcmludFRpbWVGbGFnLCAmR1RFU1RfRkxBRyhwcmludF90aW1l
KSkgfHwKKyAgICAgIFBhcnNlSW50MzJGbGFnKGFyZywga1JhbmRvbVNlZWRGbGFnLCAmR1RFU1Rf
RkxBRyhyYW5kb21fc2VlZCkpIHx8CisgICAgICBQYXJzZUludDMyRmxhZyhhcmcsIGtSZXBlYXRG
bGFnLCAmR1RFU1RfRkxBRyhyZXBlYXQpKSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtT
aHVmZmxlRmxhZywgJkdURVNUX0ZMQUcoc2h1ZmZsZSkpIHx8CisgICAgICBQYXJzZUludDMyRmxh
ZyhhcmcsIGtTdGFja1RyYWNlRGVwdGhGbGFnLAorICAgICAgICAgICAgICAgICAgICAgJkdURVNU
X0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpKSB8fAorICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywg
a1N0cmVhbVJlc3VsdFRvRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhz
dHJlYW1fcmVzdWx0X3RvKSkgfHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrVGhyb3dPbkZh
aWx1cmVGbGFnLAorICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyh0aHJvd19vbl9mYWls
dXJlKSk7Cit9CisKKyNpZiBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCit2b2lkIExvYWRG
bGFnc0Zyb21GaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoKSB7CisgIEZJTEUqIGZsYWdmaWxl
ID0gcG9zaXg6OkZPcGVuKHBhdGguY19zdHIoKSwgInIiKTsKKyAgaWYgKCFmbGFnZmlsZSkgewor
ICAgIGZwcmludGYoc3RkZXJyLAorICAgICAgICAgICAgIlVuYWJsZSB0byBvcGVuIGZpbGUgXCIl
c1wiXG4iLAorICAgICAgICAgICAgR1RFU1RfRkxBRyhmbGFnZmlsZSkuY19zdHIoKSk7CisgICAg
ZmZsdXNoKHN0ZGVycik7CisgICAgZXhpdChFWElUX0ZBSUxVUkUpOworICB9CisgIHN0ZDo6c3Ry
aW5nIGNvbnRlbnRzKFJlYWRFbnRpcmVGaWxlKGZsYWdmaWxlKSk7CisgIHBvc2l4OjpGQ2xvc2Uo
ZmxhZ2ZpbGUpOworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbGluZXM7CisgIFNwbGl0U3Ry
aW5nKGNvbnRlbnRzLCAnXG4nLCAmbGluZXMpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxp
bmVzLnNpemUoKTsgKytpKSB7CisgICAgaWYgKGxpbmVzW2ldLmVtcHR5KCkpCisgICAgICBjb250
aW51ZTsKKyAgICBpZiAoIVBhcnNlR29vZ2xlVGVzdEZsYWcobGluZXNbaV0uY19zdHIoKSkpCisg
ICAgICBnX2hlbHBfZmxhZyA9IHRydWU7CisgIH0KK30KKyNlbmRpZiAgLy8gR1RFU1RfVVNFX09X
Tl9GTEFHRklMRV9GTEFHXworCiAvLyBQYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IgR29vZ2xl
IFRlc3QgZmxhZ3MsIHdpdGhvdXQgaW5pdGlhbGl6aW5nCiAvLyBvdGhlciBwYXJ0cyBvZiBHb29n
bGUgVGVzdC4gIFRoZSB0eXBlIHBhcmFtZXRlciBDaGFyVHlwZSBjYW4gYmUKIC8vIGluc3RhbnRp
YXRlZCB0byBlaXRoZXIgY2hhciBvciB3Y2hhcl90LgogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJU
eXBlPgogdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHlJbXBsKGludCogYXJnYywgQ2hhclR5
cGUqKiBhcmd2KSB7CiAgIGZvciAoaW50IGkgPSAxOyBpIDwgKmFyZ2M7IGkrKykgewotICAgIGNv
bnN0IFN0cmluZyBhcmdfc3RyaW5nID0gU3RyZWFtYWJsZVRvU3RyaW5nKGFyZ3ZbaV0pOworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIGFyZ19zdHJpbmcgPSBTdHJlYW1hYmxlVG9TdHJpbmcoYXJndltp
XSk7CiAgICAgY29uc3QgY2hhciogY29uc3QgYXJnID0gYXJnX3N0cmluZy5jX3N0cigpOwogCiAg
ICAgdXNpbmcgaW50ZXJuYWw6OlBhcnNlQm9vbEZsYWc7CiAgICAgdXNpbmcgaW50ZXJuYWw6OlBh
cnNlSW50MzJGbGFnOwogICAgIHVzaW5nIGludGVybmFsOjpQYXJzZVN0cmluZ0ZsYWc7CiAKLSAg
ICAvLyBEbyB3ZSBzZWUgYSBHb29nbGUgVGVzdCBmbGFnPwotICAgIGlmIChQYXJzZUJvb2xGbGFn
KGFyZywga0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAm
R1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cykpIHx8Ci0gICAgICAgIFBhcnNlQm9v
bEZsYWcoYXJnLCBrQnJlYWtPbkZhaWx1cmVGbGFnLAotICAgICAgICAgICAgICAgICAgICAgICZH
VEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpKSB8fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFy
Zywga0NhdGNoRXhjZXB0aW9uc0ZsYWcsCi0gICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZM
QUcoY2F0Y2hfZXhjZXB0aW9ucykpIHx8Ci0gICAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtD
b2xvckZsYWcsICZHVEVTVF9GTEFHKGNvbG9yKSkgfHwKLSAgICAgICAgUGFyc2VTdHJpbmdGbGFn
KGFyZywga0RlYXRoVGVzdFN0eWxlRmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICZHVEVT
VF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpKSB8fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywg
a0RlYXRoVGVzdFVzZUZvcmssCi0gICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoZGVh
dGhfdGVzdF91c2VfZm9yaykpIHx8Ci0gICAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtGaWx0
ZXJGbGFnLCAmR1RFU1RfRkxBRyhmaWx0ZXIpKSB8fAotICAgICAgICBQYXJzZVN0cmluZ0ZsYWco
YXJnLCBrSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnLAotICAgICAgICAgICAgICAgICAgICAgICAg
JkdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpKSB8fAotICAgICAgICBQYXJzZUJv
b2xGbGFnKGFyZywga0xpc3RUZXN0c0ZsYWcsICZHVEVTVF9GTEFHKGxpc3RfdGVzdHMpKSB8fAot
ICAgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrT3V0cHV0RmxhZywgJkdURVNUX0ZMQUcob3V0
cHV0KSkgfHwKLSAgICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtQcmludFRpbWVGbGFnLCAmR1RF
U1RfRkxBRyhwcmludF90aW1lKSkgfHwKLSAgICAgICAgUGFyc2VJbnQzMkZsYWcoYXJnLCBrUmFu
ZG9tU2VlZEZsYWcsICZHVEVTVF9GTEFHKHJhbmRvbV9zZWVkKSkgfHwKLSAgICAgICAgUGFyc2VJ
bnQzMkZsYWcoYXJnLCBrUmVwZWF0RmxhZywgJkdURVNUX0ZMQUcocmVwZWF0KSkgfHwKLSAgICAg
ICAgUGFyc2VCb29sRmxhZyhhcmcsIGtTaHVmZmxlRmxhZywgJkdURVNUX0ZMQUcoc2h1ZmZsZSkp
IHx8Ci0gICAgICAgIFBhcnNlSW50MzJGbGFnKGFyZywga1N0YWNrVHJhY2VEZXB0aEZsYWcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSkgfHwK
LSAgICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtUaHJvd09uRmFpbHVyZUZsYWcsICZHVEVTVF9G
TEFHKHRocm93X29uX2ZhaWx1cmUpKQotICAgICAgICApIHsKLSAgICAgIC8vIFllcy4gIFNoaWZ0
IHRoZSByZW1haW5kZXIgb2YgdGhlIGFyZ3YgbGlzdCBsZWZ0IGJ5IG9uZS4gIE5vdGUKKyAgICBi
b29sIHJlbW92ZV9mbGFnID0gZmFsc2U7CisgICAgaWYgKFBhcnNlR29vZ2xlVGVzdEZsYWcoYXJn
KSkgeworICAgICAgcmVtb3ZlX2ZsYWcgPSB0cnVlOworI2lmIEdURVNUX1VTRV9PV05fRkxBR0ZJ
TEVfRkxBR18KKyAgICB9IGVsc2UgaWYgKFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtGbGFnZmlsZUZs
YWcsICZHVEVTVF9GTEFHKGZsYWdmaWxlKSkpIHsKKyAgICAgIExvYWRGbGFnc0Zyb21GaWxlKEdU
RVNUX0ZMQUcoZmxhZ2ZpbGUpKTsKKyAgICAgIHJlbW92ZV9mbGFnID0gdHJ1ZTsKKyNlbmRpZiAg
Ly8gR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXworICAgIH0gZWxzZSBpZiAoYXJnX3N0cmlu
ZyA9PSAiLS1oZWxwIiB8fCBhcmdfc3RyaW5nID09ICItaCIgfHwKKyAgICAgICAgICAgICAgIGFy
Z19zdHJpbmcgPT0gIi0/IiB8fCBhcmdfc3RyaW5nID09ICIvPyIgfHwKKyAgICAgICAgICAgICAg
IEhhc0dvb2dsZVRlc3RGbGFnUHJlZml4KGFyZykpIHsKKyAgICAgIC8vIEJvdGggaGVscCBmbGFn
IGFuZCB1bnJlY29nbml6ZWQgR29vZ2xlIFRlc3QgZmxhZ3MgKGV4Y2x1ZGluZworICAgICAgLy8g
aW50ZXJuYWwgb25lcykgdHJpZ2dlciBoZWxwIGRpc3BsYXkuCisgICAgICBnX2hlbHBfZmxhZyA9
IHRydWU7CisgICAgfQorCisgICAgaWYgKHJlbW92ZV9mbGFnKSB7CisgICAgICAvLyBTaGlmdCB0
aGUgcmVtYWluZGVyIG9mIHRoZSBhcmd2IGxpc3QgbGVmdCBieSBvbmUuICBOb3RlCiAgICAgICAv
LyB0aGF0IGFyZ3YgaGFzICgqYXJnYyArIDEpIGVsZW1lbnRzLCB0aGUgbGFzdCBvbmUgYWx3YXlz
IGJlaW5nCiAgICAgICAvLyBOVUxMLiAgVGhlIGZvbGxvd2luZyBsb29wIG1vdmVzIHRoZSB0cmFp
bGluZyBOVUxMIGVsZW1lbnQgYXMKICAgICAgIC8vIHdlbGwuCkBAIC00NjI4LDEyICs1MzE2LDYg
QEAgdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHlJbXBsKGludCogYXJnYywgQ2hhclR5cGUq
KiBhcmd2KSB7CiAgICAgICAvLyBXZSBhbHNvIG5lZWQgdG8gZGVjcmVtZW50IHRoZSBpdGVyYXRv
ciBhcyB3ZSBqdXN0IHJlbW92ZWQKICAgICAgIC8vIGFuIGVsZW1lbnQuCiAgICAgICBpLS07Ci0g
ICAgfSBlbHNlIGlmIChhcmdfc3RyaW5nID09ICItLWhlbHAiIHx8IGFyZ19zdHJpbmcgPT0gIi1o
IiB8fAotICAgICAgICAgICAgICAgYXJnX3N0cmluZyA9PSAiLT8iIHx8IGFyZ19zdHJpbmcgPT0g
Ii8/IiB8fAotICAgICAgICAgICAgICAgSGFzR29vZ2xlVGVzdEZsYWdQcmVmaXgoYXJnKSkgewot
ICAgICAgLy8gQm90aCBoZWxwIGZsYWcgYW5kIHVucmVjb2duaXplZCBHb29nbGUgVGVzdCBmbGFn
cyAoZXhjbHVkaW5nCi0gICAgICAvLyBpbnRlcm5hbCBvbmVzKSB0cmlnZ2VyIGhlbHAgZGlzcGxh
eS4KLSAgICAgIGdfaGVscF9mbGFnID0gdHJ1ZTsKICAgICB9CiAgIH0KIApAQCAtNDY2MCwyMSAr
NTM0MiwxNSBAQCB2b2lkIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seShpbnQqIGFyZ2MsIHdjaGFy
X3QqKiBhcmd2KSB7CiAvLyB3Y2hhcl90LgogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgog
dm9pZCBJbml0R29vZ2xlVGVzdEltcGwoaW50KiBhcmdjLCBDaGFyVHlwZSoqIGFyZ3YpIHsKLSAg
Z19pbml0X2d0ZXN0X2NvdW50Kys7Ci0KICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBydW4gdGhlIGlu
aXRpYWxpemF0aW9uIGNvZGUgdHdpY2UuCi0gIGlmIChnX2luaXRfZ3Rlc3RfY291bnQgIT0gMSkg
cmV0dXJuOworICBpZiAoR1Rlc3RJc0luaXRpYWxpemVkKCkpIHJldHVybjsKIAogICBpZiAoKmFy
Z2MgPD0gMCkgcmV0dXJuOwogCi0gIGludGVybmFsOjpnX2V4ZWN1dGFibGVfcGF0aCA9IGludGVy
bmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcoYXJndlswXSk7Ci0KLSNpZiBHVEVTVF9IQVNfREVBVEhf
VEVTVAogICBnX2FyZ3ZzLmNsZWFyKCk7CiAgIGZvciAoaW50IGkgPSAwOyBpICE9ICphcmdjOyBp
KyspIHsKICAgICBnX2FyZ3ZzLnB1c2hfYmFjayhTdHJlYW1hYmxlVG9TdHJpbmcoYXJndltpXSkp
OwogICB9Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCiAKICAgUGFyc2VHb29nbGVU
ZXN0RmxhZ3NPbmx5KGFyZ2MsIGFyZ3YpOwogICBHZXRVbml0VGVzdEltcGwoKS0+UG9zdEZsYWdQ
YXJzaW5nSW5pdCgpOwpAQCAtNDY5MiwxMyArNTM2OCwyMSBAQCB2b2lkIEluaXRHb29nbGVUZXN0
SW1wbChpbnQqIGFyZ2MsIENoYXJUeXBlKiogYXJndikgewogLy8KIC8vIENhbGxpbmcgdGhlIGZ1
bmN0aW9uIGZvciB0aGUgc2Vjb25kIHRpbWUgaGFzIG5vIHVzZXItdmlzaWJsZSBlZmZlY3QuCiB2
b2lkIEluaXRHb29nbGVUZXN0KGludCogYXJnYywgY2hhcioqIGFyZ3YpIHsKKyNpZiBkZWZpbmVk
KEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9OXykKKyAgR1RFU1RfQ1VTVE9N
X0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKGFyZ2MsIGFyZ3YpOworI2Vsc2UgIC8vIGRlZmlu
ZWQoR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQogICBpbnRlcm5hbDo6
SW5pdEdvb2dsZVRlc3RJbXBsKGFyZ2MsIGFyZ3YpOworI2VuZGlmICAvLyBkZWZpbmVkKEdURVNU
X0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9OXykKIH0KIAogLy8gVGhpcyBvdmVybG9h
ZGVkIHZlcnNpb24gY2FuIGJlIHVzZWQgaW4gV2luZG93cyBwcm9ncmFtcyBjb21waWxlZCBpbgog
Ly8gVU5JQ09ERSBtb2RlLgogdm9pZCBJbml0R29vZ2xlVGVzdChpbnQqIGFyZ2MsIHdjaGFyX3Qq
KiBhcmd2KSB7CisjaWYgZGVmaW5lZChHVEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5D
VElPTl8pCisgIEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9OXyhhcmdjLCBh
cmd2KTsKKyNlbHNlICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZV
TkNUSU9OXykKICAgaW50ZXJuYWw6OkluaXRHb29nbGVUZXN0SW1wbChhcmdjLCBhcmd2KTsKKyNl
bmRpZiAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8p
CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zcmMvZ3Rlc3RfbWFpbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Ny
Yy9ndGVzdF9tYWluLmNjCmluZGV4IGQyMGMwMmZkZmIwYTk0NjFkY2MyYTI3ODljNDkyMmI1YjMw
NTYzNTIuLmYzMDI4MjI1NTIzMzA2ZWI5NjQ4Zjk0YmNiZTllM2E3ODAxNmJiN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdF9tYWluLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdF9tYWluLmNjCkBAIC0yNywxMyArMjcsMTIgQEAK
IC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2luY2x1ZGUgPGlvc3RyZWFtPgor
I2luY2x1ZGUgPHN0ZGlvLmg+CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1pbnQgbWFp
bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgc3RkOjpjb3V0IDw8ICJSdW5uaW5nIG1haW4o
KSBmcm9tIGd0ZXN0X21haW4uY2NcbiI7CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAorR1RF
U1RfQVBJXyBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgcHJpbnRmKCJSdW5u
aW5nIG1haW4oKSBmcm9tIGd0ZXN0X21haW4uY2NcbiIpOwogICB0ZXN0aW5nOjpJbml0R29vZ2xl
VGVzdCgmYXJnYywgYXJndik7CiAgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfZXhfdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdF9leF90
ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI1MGExM2Q1ZTJlMTRmNDZjNTUyYWIyYjEwNzY0MDkxZjg1ZTI3
NWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
LWRlYXRoLXRlc3RfZXhfdGVzdC5jYwpAQCAtMCwwICsxLDkzIEBACisvLyBDb3B5cmlnaHQgMjAx
MCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUu
Y29tIChWbGFkIExvc2V2KQorLy8KKy8vIFRlc3RzIHRoYXQgdmVyaWZ5IGludGVyYWN0aW9uIG9m
IGV4Y2VwdGlvbnMgYW5kIGRlYXRoIHRlc3RzLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVh
dGgtdGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpZiBHVEVTVF9IQVNfREVB
VEhfVEVTVAorCisjIGlmIEdURVNUX0hBU19TRUgKKyMgIGluY2x1ZGUgPHdpbmRvd3MuaD4gICAg
ICAgICAgLy8gRm9yIFJhaXNlRXhjZXB0aW9uKCkuCisjIGVuZGlmCisKKyMgaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3Qtc3BpLmgiCisKKyMgaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworIyAgaW5jbHVk
ZSA8ZXhjZXB0aW9uPiAgLy8gRm9yIHN0ZDo6ZXhjZXB0aW9uLgorCisvLyBUZXN0cyB0aGF0IGRl
YXRoIHRlc3RzIHJlcG9ydCB0aHJvd24gZXhjZXB0aW9ucyBhcyBmYWlsdXJlcyBhbmQgdGhhdCB0
aGUKKy8vIGV4Y2VwdGlvbnMgZG8gbm90IGVzY2FwZSBkZWF0aCB0ZXN0IG1hY3Jvcy4KK1RFU1Qo
Q3h4RXhjZXB0aW9uRGVhdGhUZXN0LCBFeGNlcHRpb25Jc0ZhaWx1cmUpIHsKKyAgdHJ5IHsKKyAg
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgodGhyb3cgMSwgIiIpLCAidGhy
ZXcgYW4gZXhjZXB0aW9uIik7CisgIH0gY2F0Y2ggKC4uLikgeyAgLy8gTk9MSU5UCisgICAgRkFJ
TCgpIDw8ICJBbiBleGNlcHRpb24gZXNjYXBlZCBhIGRlYXRoIHRlc3QgbWFjcm8gaW52b2NhdGlv
biAiCisgICAgICAgICAgIDw8ICJ3aXRoIGNhdGNoX2V4Y2VwdGlvbnMgIgorICAgICAgICAgICA8
PCAodGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA/ICJlbmFibGVkIiA6ICJk
aXNhYmxlZCIpOworICB9Cit9CisKK2NsYXNzIFRlc3RFeGNlcHRpb24gOiBwdWJsaWMgc3RkOjpl
eGNlcHRpb24geworIHB1YmxpYzoKKyAgdmlydHVhbCBjb25zdCBjaGFyKiB3aGF0KCkgY29uc3Qg
dGhyb3coKSB7IHJldHVybiAiZXhjZXB0aW9uYWwgbWVzc2FnZSI7IH0KK307CisKK1RFU1QoQ3h4
RXhjZXB0aW9uRGVhdGhUZXN0LCBQcmludHNNZXNzYWdlRm9yU3RkRXhjZXB0aW9ucykgeworICAv
LyBWZXJpZmllcyB0aGF0IHRoZSBleGNlcHRpb24gbWVzc2FnZSBpcyBxdW90ZWQgaW4gdGhlIGZh
aWx1cmUgdGV4dC4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKHRocm93
IFRlc3RFeGNlcHRpb24oKSwgIiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0
aW9uYWwgbWVzc2FnZSIpOworICAvLyBWZXJpZmllcyB0aGF0IHRoZSBsb2NhdGlvbiBpcyBtZW50
aW9uZWQgaW4gdGhlIGZhaWx1cmUgdGV4dC4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX0RFQVRIKHRocm93IFRlc3RFeGNlcHRpb24oKSwgIiIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZ3Rlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNjIik7Cit9CisjIGVuZGlmICAvLyBH
VEVTVF9IQVNfRVhDRVBUSU9OUworCisjIGlmIEdURVNUX0hBU19TRUgKKy8vIFRlc3RzIHRoYXQg
ZW5hYmxpbmcgaW50ZXJjZXB0aW9uIG9mIFNFSCBleGNlcHRpb25zIHdpdGggdGhlCisvLyBjYXRj
aF9leGNlcHRpb25zIGZsYWcgZG9lcyBub3QgaW50ZXJmZXJlIHdpdGggU0VIIGV4Y2VwdGlvbnMg
YmVpbmcKKy8vIHRyZWF0ZWQgYXMgZGVhdGggYnkgZGVhdGggdGVzdHMuCitURVNUKFNlaEV4Y2Vw
dGlvbkRlYXNUZXN0LCBDYXRjaEV4Y2VwdGlvbnNEb2VzTm90SW50ZXJmZXJlKSB7CisgIEVYUEVD
VF9ERUFUSChSYWlzZUV4Y2VwdGlvbig0MiwgMHgwLCAwLCBOVUxMKSwgIiIpCisgICAgICA8PCAi
d2l0aCBjYXRjaF9leGNlcHRpb25zICIKKyAgICAgIDw8ICh0ZXN0aW5nOjpHVEVTVF9GTEFHKGNh
dGNoX2V4Y2VwdGlvbnMpID8gImVuYWJsZWQiIDogImRpc2FibGVkIik7Cit9CisjIGVuZGlmCisK
KyNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KSB7CisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAg
dGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA9IEdURVNUX0VOQUJMRV9DQVRD
SF9FWENFUFRJT05TXyAhPSAwOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfdGVzdC5j
YwppbmRleCBlZDViNTNiNzFhZjJmNzk1NjBkNzE3MmFhNjdjYzc0MGJhNzA0MDExLi5iYjRhM2Qx
YjM4ODIyZTZjYTY0YTFlZTMzZjY0YmNhNzZhZjE4YTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfdGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfdGVzdC5jYwpAQCAtMzEsMzcg
KzMxLDQwIEBACiAvLwogLy8gVGVzdHMgZm9yIGRlYXRoIHRlc3RzLgogCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QtZGVhdGgtdGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVk
ZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaD4KKyNpbmNsdWRlICJndGVzdC9ndGVz
dC1kZWF0aC10ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJndGVz
dC9pbnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oIgogCiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6
QWx3YXlzRmFsc2U7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZTsKIAogI2lm
IEdURVNUX0hBU19ERUFUSF9URVNUCiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0jaW5jbHVkZSA8
ZGlyZWN0Lmg+ICAgICAgICAgIC8vIEZvciBjaGRpcigpLgotI2Vsc2UKLSNpbmNsdWRlIDx1bmlz
dGQuaD4KLSNpbmNsdWRlIDxzeXMvd2FpdC5oPiAgICAgICAgLy8gRm9yIHdhaXRwaWQuCi0jaW5j
bHVkZSA8bGltaXRzPiAgICAgICAgICAgIC8vIEZvciBzdGQ6Om51bWVyaWNfbGltaXRzLgotI2Vu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKyMgIGluY2x1
ZGUgPGRpcmVjdC5oPiAgICAgICAgICAvLyBGb3IgY2hkaXIoKS4KKyMgZWxzZQorIyAgaW5jbHVk
ZSA8dW5pc3RkLmg+CisjICBpbmNsdWRlIDxzeXMvd2FpdC5oPiAgICAgICAgLy8gRm9yIHdhaXRw
aWQuCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKLSNpbmNsdWRlIDxsaW1pdHMuaD4K
LSNpbmNsdWRlIDxzaWduYWwuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgorIyBpbmNsdWRlIDxsaW1p
dHMuaD4KKyMgaW5jbHVkZSA8c2lnbmFsLmg+CisjIGluY2x1ZGUgPHN0ZGlvLmg+CiAKLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC1zcGkuaD4KKyMgaWYgR1RFU1RfT1NfTElOVVgKKyMgIGluY2x1ZGUg
PHN5cy90aW1lLmg+CisjIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCisjIGluY2x1ZGUgImd0
ZXN0L2d0ZXN0LXNwaS5oIgogCiAvLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVu
aXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCiAvLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3Qg
Y29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKIC8vIGluY2x1ZGVkLCBvciB0aGVy
ZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCiAvLyBwcmV2ZW50
IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmgg
aW4KIC8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQotI2luY2x1
ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElP
Tl8KKyMgZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCisjIGluY2x1ZGUgInNyYy9ndGVz
dC1pbnRlcm5hbC1pbmwuaCIKKyMgdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCiAKIG5hbWVz
cGFjZSBwb3NpeCA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OwogCkBAIC03MSw4ICs3NCw4
IEBAIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3RGYWN0b3J5OwogdXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OkZpbGVQYXRoOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldExh
c3RFcnJub0Rlc2NyaXB0aW9uOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldFVuaXRUZXN0
SW1wbDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJbkRlYXRoVGVzdENoaWxkOwogdXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OlBhcnNlTmF0dXJhbE51bWJlcjsKLXVzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpTdHJpbmc7CiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5h
bCB7CkBAIC0xMDMsOSArMTA2LDEwIEBAIGNsYXNzIFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5IHsK
IH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotdm9p
ZCBEaWVJbnNpZGUoY29uc3QgY2hhciogZnVuY3Rpb24pIHsKLSAgZnByaW50ZihzdGRlcnIsICJk
ZWF0aCBpbnNpZGUgJXMoKS4iLCBmdW5jdGlvbik7Ci0gIGZmbHVzaChzdGRlcnIpOwordm9pZCBE
aWVXaXRoTWVzc2FnZShjb25zdCA6OnN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7CisgIGZwcmludGYo
c3RkZXJyLCAiJXMiLCBtZXNzYWdlLmNfc3RyKCkpOworICBmZmx1c2goc3RkZXJyKTsgIC8vIE1h
a2Ugc3VyZSB0aGUgdGV4dCBpcyBwcmludGVkIGJlZm9yZSB0aGUgcHJvY2VzcyBleGl0cy4KKwog
ICAvLyBXZSBjYWxsIF9leGl0KCkgaW5zdGVhZCBvZiBleGl0KCksIGFzIHRoZSBmb3JtZXIgaXMg
YSBkaXJlY3QKICAgLy8gc3lzdGVtIGNhbGwgYW5kIHRodXMgc2FmZXIgaW4gdGhlIHByZXNlbmNl
IG9mIHRocmVhZHMuICBleGl0KCkKICAgLy8gd2lsbCBpbnZva2UgdXNlci1kZWZpbmVkIGV4aXQt
aG9va3MsIHdoaWNoIG1heSBkbyBkYW5nZXJvdXMKQEAgLTExOCw2ICsxMjIsMTAgQEAgdm9pZCBE
aWVJbnNpZGUoY29uc3QgY2hhciogZnVuY3Rpb24pIHsKICAgICBfZXhpdCgxKTsKIH0KIAordm9p
ZCBEaWVJbnNpZGUoY29uc3QgOjpzdGQ6OnN0cmluZyYgZnVuY3Rpb24pIHsKKyAgRGllV2l0aE1l
c3NhZ2UoImRlYXRoIGluc2lkZSAiICsgZnVuY3Rpb24gKyAiKCkuIik7Cit9CisKIC8vIFRlc3Rz
IHRoYXQgZGVhdGggdGVzdHMgd29yay4KIAogY2xhc3MgVGVzdEZvckRlYXRoVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKQEAgLTE5MCwxMyArMTk4LDE3IEBAIHZvaWQgRGVhdGhUZXN0U3Vi
cm91dGluZSgpIHsKIC8vIERlYXRoIGluIGRiZywgbm90IG9wdC4KIGludCBEaWVJbkRlYnVnRWxz
ZTEyKGludCogc2lkZWVmZmVjdCkgewogICBpZiAoc2lkZWVmZmVjdCkgKnNpZGVlZmZlY3QgPSAx
MjsKLSNpZm5kZWYgTkRFQlVHCisKKyMgaWZuZGVmIE5ERUJVRworCiAgIERpZUluc2lkZSgiRGll
SW5EZWJ1Z0Vsc2UxMiIpOwotI2VuZGlmICAvLyBOREVCVUcKKworIyBlbmRpZiAgLy8gTkRFQlVH
CisKICAgcmV0dXJuIDEyOwogfQogCi0jaWYgR1RFU1RfT1NfV0lORE9XUworIyBpZiBHVEVTVF9P
U19XSU5ET1dTCiAKIC8vIFRlc3RzIHRoZSBFeGl0ZWRXaXRoQ29kZSBwcmVkaWNhdGUuCiBURVNU
KEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0LCBFeGl0ZWRXaXRoQ29kZSkgewpAQCAtMjA5LDcgKzIy
MSw3IEBAIFRFU1QoRXhpdFN0YXR1c1ByZWRpY2F0ZVRlc3QsIEV4aXRlZFdpdGhDb2RlKSB7CiAg
IEVYUEVDVF9GQUxTRSh0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSgwKSk7CiB9CiAKLSNlbHNl
CisjIGVsc2UKIAogLy8gUmV0dXJucyB0aGUgZXhpdCBzdGF0dXMgb2YgYSBwcm9jZXNzIHRoYXQg
Y2FsbHMgX2V4aXQoMikgd2l0aCBhCiAvLyBnaXZlbiBleGl0IGNvZGUuICBUaGlzIGlzIGEgaGVs
cGVyIGZ1bmN0aW9uIGZvciB0aGUKQEAgLTI2OCw3ICsyODAsNyBAQCBURVNUKEV4aXRTdGF0dXNQ
cmVkaWNhdGVUZXN0LCBLaWxsZWRCeVNpZ25hbCkgewogICBFWFBFQ1RfRkFMU0UocHJlZF9raWxs
KHN0YXR1c19zZWd2KSk7CiB9CiAKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIyBlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCiAvLyBUZXN0cyB0aGF0IHRoZSBkZWF0aCB0ZXN0IG1h
Y3JvcyBleHBhbmQgdG8gY29kZSB3aGljaCBtYXkgb3IgbWF5IG5vdAogLy8gYmUgZm9sbG93ZWQg
Ynkgb3BlcmF0b3I8PCwgYW5kIHRoYXQgaW4gZWl0aGVyIGNhc2UgdGhlIGNvbXBsZXRlIHRleHQK
QEAgLTMwMCw3ICszMTIsNyBAQCB2b2lkIERpZVdpdGhFbWJlZGRlZE51bCgpIHsKICAgX2V4aXQo
MSk7CiB9CiAKLSNpZiBHVEVTVF9VU0VTX1BDUkUKKyMgaWYgR1RFU1RfVVNFU19QQ1JFCiAvLyBU
ZXN0cyB0aGF0IEVYUEVDVF9ERUFUSCBhbmQgQVNTRVJUX0RFQVRIIHdvcmsgd2hlbiB0aGUgZXJy
b3IKIC8vIG1lc3NhZ2UgaGFzIGEgTlVMIGNoYXJhY3RlciBpbiBpdC4KIFRFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBFbWJlZGRlZE51bEluTWVzc2FnZSkgewpAQCAtMzA5LDE3ICszMjEsMTQgQEAg
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEVtYmVkZGVkTnVsSW5NZXNzYWdlKSB7CiAgIEVYUEVD
VF9ERUFUSChEaWVXaXRoRW1iZWRkZWROdWwoKSwgIm15IG51bGwgd29ybGQiKTsKICAgQVNTRVJU
X0RFQVRIKERpZVdpdGhFbWJlZGRlZE51bCgpLCAibXkgbnVsbCB3b3JsZCIpOwogfQotI2VuZGlm
ICAvLyBHVEVTVF9VU0VTX1BDUkUKKyMgZW5kaWYgIC8vIEdURVNUX1VTRVNfUENSRQogCiAvLyBU
ZXN0cyB0aGF0IGRlYXRoIHRlc3QgbWFjcm9zIGV4cGFuZCB0byBjb2RlIHdoaWNoIGludGVyYWN0
cyB3ZWxsIHdpdGggc3dpdGNoCiAvLyBzdGF0ZW1lbnRzLgogVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIFN3aXRjaFN0YXRlbWVudCkgewotLy8gTWljcm9zb2Z0IGNvbXBpbGVyIHVzdWFsbHkgY29t
cGxhaW5zIGFib3V0IHN3aXRjaCBzdGF0ZW1lbnRzIHdpdGhvdXQKLS8vIGNhc2UgbGFiZWxzLiBX
ZSBzdXBwcmVzcyB0aGF0IHdhcm5pbmcgZm9yIHRoaXMgdGVzdC4KLSNpZmRlZiBfTVNDX1ZFUgot
I3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDA2NSkKLSNl
bmRpZiAgLy8gX01TQ19WRVIKKyAgLy8gTWljcm9zb2Z0IGNvbXBpbGVyIHVzdWFsbHkgY29tcGxh
aW5zIGFib3V0IHN3aXRjaCBzdGF0ZW1lbnRzIHdpdGhvdXQKKyAgLy8gY2FzZSBsYWJlbHMuIFdl
IHN1cHByZXNzIHRoYXQgd2FybmluZyBmb3IgdGhpcyB0ZXN0LgorICBHVEVTVF9ESVNBQkxFX01T
Q19XQVJOSU5HU19QVVNIXyg0MDY1KQogCiAgIHN3aXRjaCAoMCkKICAgICBkZWZhdWx0OgpAQCAt
MzI5LDkgKzMzOCw3IEBAIFRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTd2l0Y2hTdGF0ZW1lbnQp
IHsKICAgICBjYXNlIDA6CiAgICAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKSA8PCAiZXhp
dCBpbiBzd2l0Y2ggY2FzZSI7CiAKLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHBv
cCkKLSNlbmRpZiAgLy8gX01TQ19WRVIKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9Q
XygpCiB9CiAKIC8vIFRlc3RzIHRoYXQgYSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uIGNhbiBiZSB1
c2VkIGluIGEgImZhc3QiIHN0eWxlCkBAIC0zNjMsNiArMzcwLDU4IEBAIFRFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBGYXN0RGVhdGhUZXN0SW5DaGFuZ2VkRGlyKSB7CiAgIEFTU0VSVF9ERUFUSChf
ZXhpdCgxKSwgIiIpOwogfQogCisjIGlmIEdURVNUX09TX0xJTlVYCit2b2lkIFNpZ3Byb2ZBY3Rp
b24oaW50LCBzaWdpbmZvX3QqLCB2b2lkKikgeyAvKiBubyBvcCAqLyB9CisKKy8vIFNldHMgU0lH
UFJPRiBhY3Rpb24gYW5kIElUSU1FUl9QUk9GIHRpbWVyIChpbnRlcnZhbDogMW1zKS4KK3ZvaWQg
U2V0U2lncHJvZkFjdGlvbkFuZFRpbWVyKCkgeworICBzdHJ1Y3QgaXRpbWVydmFsIHRpbWVyOwor
ICB0aW1lci5pdF9pbnRlcnZhbC50dl9zZWMgPSAwOworICB0aW1lci5pdF9pbnRlcnZhbC50dl91
c2VjID0gMTsKKyAgdGltZXIuaXRfdmFsdWUgPSB0aW1lci5pdF9pbnRlcnZhbDsKKyAgQVNTRVJU
X0VRKDAsIHNldGl0aW1lcihJVElNRVJfUFJPRiwgJnRpbWVyLCBOVUxMKSk7CisgIHN0cnVjdCBz
aWdhY3Rpb24gc2lnbmFsX2FjdGlvbjsKKyAgbWVtc2V0KCZzaWduYWxfYWN0aW9uLCAwLCBzaXpl
b2Yoc2lnbmFsX2FjdGlvbikpOworICBzaWdlbXB0eXNldCgmc2lnbmFsX2FjdGlvbi5zYV9tYXNr
KTsKKyAgc2lnbmFsX2FjdGlvbi5zYV9zaWdhY3Rpb24gPSBTaWdwcm9mQWN0aW9uOworICBzaWdu
YWxfYWN0aW9uLnNhX2ZsYWdzID0gU0FfUkVTVEFSVCB8IFNBX1NJR0lORk87CisgIEFTU0VSVF9F
USgwLCBzaWdhY3Rpb24oU0lHUFJPRiwgJnNpZ25hbF9hY3Rpb24sIE5VTEwpKTsKK30KKworLy8g
RGlzYWJsZXMgSVRJTUVSX1BST0YgdGltZXIgYW5kIGlnbm9yZXMgU0lHUFJPRiBzaWduYWwuCit2
b2lkIERpc2FibGVTaWdwcm9mQWN0aW9uQW5kVGltZXIoc3RydWN0IHNpZ2FjdGlvbiogb2xkX3Np
Z25hbF9hY3Rpb24pIHsKKyAgc3RydWN0IGl0aW1lcnZhbCB0aW1lcjsKKyAgdGltZXIuaXRfaW50
ZXJ2YWwudHZfc2VjID0gMDsKKyAgdGltZXIuaXRfaW50ZXJ2YWwudHZfdXNlYyA9IDA7CisgIHRp
bWVyLml0X3ZhbHVlID0gdGltZXIuaXRfaW50ZXJ2YWw7CisgIEFTU0VSVF9FUSgwLCBzZXRpdGlt
ZXIoSVRJTUVSX1BST0YsICZ0aW1lciwgTlVMTCkpOworICBzdHJ1Y3Qgc2lnYWN0aW9uIHNpZ25h
bF9hY3Rpb247CisgIG1lbXNldCgmc2lnbmFsX2FjdGlvbiwgMCwgc2l6ZW9mKHNpZ25hbF9hY3Rp
b24pKTsKKyAgc2lnZW1wdHlzZXQoJnNpZ25hbF9hY3Rpb24uc2FfbWFzayk7CisgIHNpZ25hbF9h
Y3Rpb24uc2FfaGFuZGxlciA9IFNJR19JR047CisgIEFTU0VSVF9FUSgwLCBzaWdhY3Rpb24oU0lH
UFJPRiwgJnNpZ25hbF9hY3Rpb24sIG9sZF9zaWduYWxfYWN0aW9uKSk7Cit9CisKKy8vIFRlc3Rz
IHRoYXQgZGVhdGggdGVzdHMgd29yayB3aGVuIFNJR1BST0YgaGFuZGxlciBhbmQgdGltZXIgYXJl
IHNldC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBGYXN0U2lncHJvZkFjdGlvblNldCkgewor
ICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOworICBTZXRT
aWdwcm9mQWN0aW9uQW5kVGltZXIoKTsKKyAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIik7Cisg
IHN0cnVjdCBzaWdhY3Rpb24gb2xkX3NpZ25hbF9hY3Rpb247CisgIERpc2FibGVTaWdwcm9mQWN0
aW9uQW5kVGltZXIoJm9sZF9zaWduYWxfYWN0aW9uKTsKKyAgRVhQRUNUX1RSVUUob2xkX3NpZ25h
bF9hY3Rpb24uc2Ffc2lnYWN0aW9uID09IFNpZ3Byb2ZBY3Rpb24pOworfQorCitURVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgVGhyZWFkU2FmZVNpZ3Byb2ZBY3Rpb25TZXQpIHsKKyAgdGVzdGluZzo6
R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKKyAgU2V0U2lncHJv
ZkFjdGlvbkFuZFRpbWVyKCk7CisgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOworICBzdHJ1
Y3Qgc2lnYWN0aW9uIG9sZF9zaWduYWxfYWN0aW9uOworICBEaXNhYmxlU2lncHJvZkFjdGlvbkFu
ZFRpbWVyKCZvbGRfc2lnbmFsX2FjdGlvbik7CisgIEVYUEVDVF9UUlVFKG9sZF9zaWduYWxfYWN0
aW9uLnNhX3NpZ2FjdGlvbiA9PSBTaWdwcm9mQWN0aW9uKTsKK30KKyMgZW5kaWYgIC8vIEdURVNU
X09TX0xJTlVYCisKIC8vIFJlcGVhdHMgYSByZXByZXNlbnRhdGl2ZSBzYW1wbGUgb2YgZGVhdGgg
dGVzdHMgaW4gdGhlICJ0aHJlYWRzYWZlIiBzdHlsZToKIAogVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIFN0YXRpY01lbWJlckZ1bmN0aW9uVGhyZWFkc2FmZVN0eWxlKSB7CkBAIC00MDAsNiArNDU5
LDggQEAgVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE1peGVkU3R5bGVzKSB7CiAgIEVYUEVDVF9E
RUFUSChfZXhpdCgxKSwgIiIpOwogfQogCisjIGlmIEdURVNUX0hBU19DTE9ORSAmJiBHVEVTVF9I
QVNfUFRIUkVBRAorCiBuYW1lc3BhY2UgewogCiBib29sIHB0aHJlYWRfZmxhZzsKQEAgLTQxMCw4
ICs0NzEsNiBAQCB2b2lkIFNldFB0aHJlYWRGbGFnKCkgewogCiB9ICAvLyBuYW1lc3BhY2UKIAot
I2lmIEdURVNUX0hBU19DTE9ORSAmJiBHVEVTVF9IQVNfUFRIUkVBRAotCiBURVNUX0YoVGVzdEZv
ckRlYXRoVGVzdCwgRG9lc05vdEV4ZWN1dGVBdGZvcmtIb29rcykgewogICBpZiAoIXRlc3Rpbmc6
OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yaykpIHsKICAgICB0ZXN0aW5nOjpHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOwpAQCAtNDIyLDcgKzQ4MSw3IEBA
IFRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEb2VzTm90RXhlY3V0ZUF0Zm9ya0hvb2tzKSB7CiAg
IH0KIH0KIAotI2VuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUgJiYgR1RFU1RfSEFTX1BUSFJFQUQK
KyMgZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORSAmJiBHVEVTVF9IQVNfUFRIUkVBRAogCiAvLyBU
ZXN0cyB0aGF0IGEgbWV0aG9kIG9mIGFub3RoZXIgY2xhc3MgY2FuIGJlIHVzZWQgaW4gYSBkZWF0
aCB0ZXN0LgogVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE1ldGhvZE9mQW5vdGhlckNsYXNzKSB7
CkBAIC00NDQsMTMgKzUwMywxOSBAQCBURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQWNjZXB0c0Fu
eXRoaW5nQ29udmVydGlibGVUb1JFKSB7CiAgIGNvbnN0IHRlc3Rpbmc6OmludGVybmFsOjpSRSBy
ZWdleChyZWdleF9jX3N0cik7CiAgIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdl
eCk7CiAKLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworIyBpZiBHVEVTVF9IQVNfR0xPQkFM
X1NUUklORworCiAgIGNvbnN0IHN0cmluZyByZWdleF9zdHIocmVnZXhfY19zdHIpOwogICBFWFBF
Q1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXhfc3RyKTsKLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX0dMT0JBTF9TVFJJTkcKKworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcK
KworIyBpZiAhR1RFU1RfVVNFU19QQ1JFCiAKICAgY29uc3QgOjpzdGQ6OnN0cmluZyByZWdleF9z
dGRfc3RyKHJlZ2V4X2Nfc3RyKTsKICAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksIHJl
Z2V4X3N0ZF9zdHIpOworCisjIGVuZGlmICAvLyAhR1RFU1RfVVNFU19QQ1JFCiB9CiAKIC8vIFRl
c3RzIHRoYXQgYSBub24tdm9pZCBmdW5jdGlvbiBjYW4gYmUgdXNlZCBpbiBhIGRlYXRoIHRlc3Qu
CkBAIC01MzgsMTcgKzYwMywyMCBAQCBURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU2luZ2xlRXZh
bHVhdGlvbikgewogfQogCiAvLyBUZXN0cyB0aGF0IHJ1bi1hd2F5IGRlYXRoIHRlc3RzIGFyZSBy
ZXBvcnRlZCBhcyBmYWlsdXJlcy4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBSdW5hd2F5KSB7
CitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgUnVuYXdheUlzRmFpbHVyZSkgewogICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgoc3RhdGljX2Nhc3Q8dm9pZD4oMCksICJGb28i
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBkaWUuIik7Cit9CiAKKy8v
IFRlc3RzIHRoYXQgZGVhdGggdGVzdHMgcmVwb3J0IGV4ZWN1dGluZyAncmV0dXJuJyBpbiB0aGUg
c3RhdGVtZW50IGFzCisvLyBmYWlsdXJlLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFJldHVy
bklzRmFpbHVyZSkgewogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfREVBVEgocmV0dXJu
LCAiQmFyIiksCiAgICAgICAgICAgICAgICAgICAgICAgICJpbGxlZ2FsIHJldHVybiBpbiB0ZXN0
IHN0YXRlbWVudC4iKTsKIH0KIAotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUJVR19ERUFUSCB3
b3JrcyBhcyBleHBlY3RlZCwKLS8vIHRoYXQgaXMsIGluIGRlYnVnIG1vZGUsIGl0OgorLy8gVGVz
dHMgdGhhdCBFWFBFQ1RfREVCVUdfREVBVEggd29ya3MgYXMgZXhwZWN0ZWQsIHRoYXQgaXMsIHlv
dSBjYW4gc3RyZWFtIGEKKy8vIG1lc3NhZ2UgdG8gaXQsIGFuZCBpbiBkZWJ1ZyBtb2RlIGl0Ogog
Ly8gMS4gQXNzZXJ0cyBvbiBkZWF0aC4KIC8vIDIuIEhhcyBubyBzaWRlIGVmZmVjdC4KIC8vCkBA
IC01NTcsNDUgKzYyNSw0OSBAQCBURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgUnVuYXdheSkgewog
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRlc3RFeHBlY3REZWJ1Z0RlYXRoKSB7CiAgIGludCBz
aWRlZWZmZWN0ID0gMDsKIAotICBFWFBFQ1RfREVCVUdfREVBVEgoRGllSW5EZWJ1Z0Vsc2UxMigm
c2lkZWVmZmVjdCksCi0gICAgICAgICAgICAgICAgICAgICAiZGVhdGguKkRpZUluRGVidWdFbHNl
MTIiKTsKKyAgRVhQRUNUX0RFQlVHX0RFQVRIKERpZUluRGVidWdFbHNlMTIoJnNpZGVlZmZlY3Qp
LCAiZGVhdGguKkRpZUluRGVidWdFbHNlMTIiKQorICAgICAgPDwgIk11c3QgYWNjZXB0IGEgc3Ry
ZWFtZWQgbWVzc2FnZSI7CisKKyMgaWZkZWYgTkRFQlVHCiAKLSNpZmRlZiBOREVCVUcKICAgLy8g
Q2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgb2NjdXJzIGluIG9wdCBtb2RlIChzaWRlZWZmZWN0
KS4KICAgRVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0KTsKLSNlbHNlCisKKyMgZWxzZQorCiAgIC8v
IENoZWNrcyB0aGF0IHRoZSBhc3NpZ25tZW50IGRvZXMgbm90IG9jY3VyIGluIGRiZyBtb2RlIChu
byBzaWRlZWZmZWN0KS4KICAgRVhQRUNUX0VRKDAsIHNpZGVlZmZlY3QpOwotI2VuZGlmCisKKyMg
ZW5kaWYKIH0KIAotLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVCVUdfREVBVEggd29ya3MgYXMgZXhw
ZWN0ZWQKLS8vIEluIGRlYnVnIG1vZGU6Ci0vLyAxLiBBc3NlcnRzIG9uIGRlYnVnIGRlYXRoLgor
Ly8gVGVzdHMgdGhhdCBBU1NFUlRfREVCVUdfREVBVEggd29ya3MgYXMgZXhwZWN0ZWQsIHRoYXQg
aXMsIHlvdSBjYW4gc3RyZWFtIGEKKy8vIG1lc3NhZ2UgdG8gaXQsIGFuZCBpbiBkZWJ1ZyBtb2Rl
IGl0OgorLy8gMS4gQXNzZXJ0cyBvbiBkZWF0aC4KIC8vIDIuIEhhcyBubyBzaWRlIGVmZmVjdC4K
IC8vCi0vLyBJbiBvcHQgbW9kZToKLS8vIDEuIEhhcyBzaWRlIGVmZmVjdHMgYW5kIHJldHVybnMg
dGhlIGV4cGVjdGVkIHZhbHVlICgxMikuCisvLyBBbmQgaW4gb3B0IG1vZGUsIGl0OgorLy8gMS4g
IEhhcyBzaWRlIGVmZmVjdHMgYnV0IGRvZXMgbm90IGFzc2VydC4KIFRFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBUZXN0QXNzZXJ0RGVidWdEZWF0aCkgewogICBpbnQgc2lkZWVmZmVjdCA9IDA7CiAK
LSAgQVNTRVJUX0RFQlVHX0RFQVRIKHsgIC8vIE5PTElOVAotICAgIC8vIFRlc3RzIHRoYXQgdGhl
IHJldHVybiB2YWx1ZSBpcyAxMiBpbiBvcHQgbW9kZS4KLSAgICBFWFBFQ1RfRVEoMTIsIERpZUlu
RGVidWdFbHNlMTIoJnNpZGVlZmZlY3QpKTsKLSAgICAvLyBUZXN0cyB0aGF0IHRoZSBzaWRlIGVm
ZmVjdCBvY2N1cnJlZCBpbiBvcHQgbW9kZS4KLSAgICBFWFBFQ1RfRVEoMTIsIHNpZGVlZmZlY3Qp
OwotICB9LCAiZGVhdGguKkRpZUluRGVidWdFbHNlMTIiKTsKKyAgQVNTRVJUX0RFQlVHX0RFQVRI
KERpZUluRGVidWdFbHNlMTIoJnNpZGVlZmZlY3QpLCAiZGVhdGguKkRpZUluRGVidWdFbHNlMTIi
KQorICAgICAgPDwgIk11c3QgYWNjZXB0IGEgc3RyZWFtZWQgbWVzc2FnZSI7CisKKyMgaWZkZWYg
TkRFQlVHCiAKLSNpZmRlZiBOREVCVUcKICAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQg
b2NjdXJzIGluIG9wdCBtb2RlIChzaWRlZWZmZWN0KS4KICAgRVhQRUNUX0VRKDEyLCBzaWRlZWZm
ZWN0KTsKLSNlbHNlCisKKyMgZWxzZQorCiAgIC8vIENoZWNrcyB0aGF0IHRoZSBhc3NpZ25tZW50
IGRvZXMgbm90IG9jY3VyIGluIGRiZyBtb2RlIChubyBzaWRlZWZmZWN0KS4KICAgRVhQRUNUX0VR
KDAsIHNpZGVlZmZlY3QpOwotI2VuZGlmCisKKyMgZW5kaWYKIH0KIAotI2lmbmRlZiBOREVCVUcK
KyMgaWZuZGVmIE5ERUJVRwogCiB2b2lkIEV4cGVjdERlYnVnRGVhdGhIZWxwZXIoYm9vbCogYWJv
cnRlZCkgewogICAqYWJvcnRlZCA9IHRydWU7CkBAIC02MDMsNyArNjc1LDcgQEAgdm9pZCBFeHBl
Y3REZWJ1Z0RlYXRoSGVscGVyKGJvb2wqIGFib3J0ZWQpIHsKICAgKmFib3J0ZWQgPSBmYWxzZTsK
IH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgIGlmIEdURVNUX09TX1dJTkRPV1MKIFRFU1Qo
UG9wVXBEZWF0aFRlc3QsIERvZXNOb3RTaG93UG9wVXBPbkFib3J0KSB7CiAgIHByaW50ZigiVGhp
cyB0ZXN0IHNob3VsZCBiZSBjb25zaWRlcmVkIGZhaWxpbmcgaWYgaXQgc2hvd3MgIgogICAgICAg
ICAgImFueSBwb3AtdXAgZGlhbG9ncy5cbiIpOwpAQCAtNjE0LDE4ICs2ODYsNyBAQCBURVNUKFBv
cFVwRGVhdGhUZXN0LCBEb2VzTm90U2hvd1BvcFVwT25BYm9ydCkgewogICAgIGFib3J0KCk7CiAg
IH0sICIiKTsKIH0KLQotVEVTVChQb3BVcERlYXRoVGVzdCwgRG9lc05vdFNob3dQb3BVcE9uVGhy
b3cpIHsKLSAgcHJpbnRmKCJUaGlzIHRlc3Qgc2hvdWxkIGJlIGNvbnNpZGVyZWQgZmFpbGluZyBp
ZiBpdCBzaG93cyAiCi0gICAgICAgICAiYW55IHBvcC11cCBkaWFsb2dzLlxuIik7Ci0gIGZmbHVz
aChzdGRvdXQpOwotCi0gIEVYUEVDVF9ERUFUSCh7Ci0gICAgdGVzdGluZzo6R1RFU1RfRkxBRyhj
YXRjaF9leGNlcHRpb25zKSA9IGZhbHNlOwotICAgIHRocm93IDE7Ci0gIH0sICIiKTsKLX0KLSNl
bmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIyAgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MK
IAogLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVCVUdfREVBVEggaW4gZGVidWcgbW9kZSBkb2VzIG5v
dCBhYm9ydAogLy8gdGhlIGZ1bmN0aW9uLgpAQCAtNjM3LDcgKzY5OCwxMCBAQCBURVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgRXhwZWN0RGVidWdEZWF0aERvZXNOb3RBYm9ydCkgewogCiB2b2lkIEFz
c2VydERlYnVnRGVhdGhIZWxwZXIoYm9vbCogYWJvcnRlZCkgewogICAqYWJvcnRlZCA9IHRydWU7
Ci0gIEFTU0VSVF9ERUJVR19ERUFUSChyZXR1cm4sICIiKSA8PCAiVGhpcyBpcyBleHBlY3RlZCB0
byBmYWlsLiI7CisgIEdURVNUX0xPR18oSU5GTykgPDwgIkJlZm9yZSBBU1NFUlRfREVCVUdfREVB
VEgiOworICBBU1NFUlRfREVCVUdfREVBVEgoR1RFU1RfTE9HXyhJTkZPKSA8PCAiSW4gQVNTRVJU
X0RFQlVHX0RFQVRIIjsgcmV0dXJuLCAiIikKKyAgICAgIDw8ICJUaGlzIGlzIGV4cGVjdGVkIHRv
IGZhaWwuIjsKKyAgR1RFU1RfTE9HXyhJTkZPKSA8PCAiQWZ0ZXIgQVNTRVJUX0RFQlVHX0RFQVRI
IjsKICAgKmFib3J0ZWQgPSBmYWxzZTsKIH0KIApAQCAtNjUwLDMxICs3MTQsOTggQEAgVEVTVF9G
KFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHMpIHsKICAgRVhQRUNUX1RS
VUUoYWJvcnRlZCk7CiB9CiAKLSNlbmRpZiAgLy8gX05ERUJVRworVEVTVF9GKFRlc3RGb3JEZWF0
aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHMyKSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7
CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdE
ZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisK
K1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzMykgeworICBz
dGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9U
UlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdE
ZWF0aEFib3J0czQpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZhbHNl
OworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVk
KSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0
aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM1KSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7
CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdE
ZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisK
K1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzNikgeworICBz
dGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9U
UlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdE
ZWF0aEFib3J0czcpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZhbHNl
OworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVk
KSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0
aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM4KSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7
CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdE
ZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisK
K1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzOSkgeworICBz
dGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9U
UlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdE
ZWF0aEFib3J0czEwKSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7CisgIGFib3J0ZWQgPSBmYWxz
ZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRl
ZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKKyMgZW5kaWYgIC8vIF9OREVC
VUcKIAogLy8gVGVzdHMgdGhlICpfRVhJVCBmYW1pbHkgb2YgbWFjcm9zLCB1c2luZyBhIHZhcmll
dHkgb2YgcHJlZGljYXRlcy4KIHN0YXRpYyB2b2lkIFRlc3RFeGl0TWFjcm9zKCkgewogICBFWFBF
Q1RfRVhJVChfZXhpdCgxKSwgIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEpLCAgIiIpOwogICBB
U1NFUlRfRVhJVChfZXhpdCg0MiksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDQyKSwgIiIpOwog
Ci0jaWYgR1RFU1RfT1NfV0lORE9XUworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisKICAgLy8gT2Yg
YWxsIHNpZ25hbHMgZWZmZWN0cyBvbiB0aGUgcHJvY2VzcyBleGl0IGNvZGUsIG9ubHkgdGhvc2Ug
b2YgU0lHQUJSVAogICAvLyBhcmUgZG9jdW1lbnRlZCBvbiBXaW5kb3dzLgogICAvLyBTZWUgaHR0
cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2R3d3prdDRjKFZTLjcxKS5hc3B4
LgotICBFWFBFQ1RfRVhJVChyYWlzZShTSUdBQlJUKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUo
MyksICIiKTsKLSNlbHNlCisgIEVYUEVDVF9FWElUKHJhaXNlKFNJR0FCUlQpLCB0ZXN0aW5nOjpF
eGl0ZWRXaXRoQ29kZSgzKSwgIiIpIDw8ICJiX2FyIjsKKworIyBlbHNlCisKICAgRVhQRUNUX0VY
SVQocmFpc2UoU0lHS0lMTCksIHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKFNJR0tJTEwpLCAiIikg
PDwgImZvbyI7CiAgIEFTU0VSVF9FWElUKHJhaXNlKFNJR1VTUjIpLCB0ZXN0aW5nOjpLaWxsZWRC
eVNpZ25hbChTSUdVU1IyKSwgIiIpIDw8ICJiYXIiOwogCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJF
KHsgIC8vIE5PTElOVAogICAgIEFTU0VSVF9FWElUKF9leGl0KDApLCB0ZXN0aW5nOjpLaWxsZWRC
eVNpZ25hbChTSUdTRUdWKSwgIiIpCi0gICAgICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0
ZWQsIHRvby4iOworICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgdG9vLiI7CiAg
IH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIHRvby4iKTsKLSNlbmRpZiAgLy8gR1RFU1Rf
T1NfV0lORE9XUworCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKICAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCiAgICAgRVhQRUNUX0VYSVQocmFpc2UoU0lHU0VH
ViksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApLCAiIikKLSAgICAgICAgPDwgIlRoaXMgZmFp
bHVyZSBpcyBleHBlY3RlZC4iOworICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4i
OwogICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOwogfQogCkBAIC02OTQsNiArODI1
LDU3IEBAIFRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBJbnZhbGlkU3R5bGUpIHsKICAgfSwgIlRo
aXMgZmFpbHVyZSBpcyBleHBlY3RlZC4iKTsKIH0KIAorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3Qs
IERlYXRoVGVzdEZhaWxlZE91dHB1dCkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rl
c3Rfc3R5bGUpID0gImZhc3QiOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKKyAgICAgIEVY
UEVDVF9ERUFUSChEaWVXaXRoTWVzc2FnZSgiZGVhdGhcbiIpLAorICAgICAgICAgICAgICAgICAg
ICJleHBlY3RlZCBtZXNzYWdlIiksCisgICAgICAiQWN0dWFsIG1zZzpcbiIKKyAgICAgICJbICBE
RUFUSCAgIF0gZGVhdGhcbiIpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRGVhdGhU
ZXN0VW5leHBlY3RlZFJldHVybk91dHB1dCkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRo
X3Rlc3Rfc3R5bGUpID0gImZhc3QiOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKKyAgICAg
IEVYUEVDVF9ERUFUSCh7CisgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJyZXR1cm5pbmdcbiIp
OworICAgICAgICAgIGZmbHVzaChzdGRlcnIpOworICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fSwgIiIpLAorICAgICAgIiAgICBSZXN1bHQ6IGlsbGVnYWwgcmV0dXJuIGluIHRlc3Qgc3RhdGVt
ZW50LlxuIgorICAgICAgIiBFcnJvciBtc2c6XG4iCisgICAgICAiWyAgREVBVEggICBdIHJldHVy
bmluZ1xuIik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEZWF0aFRlc3RCYWRFeGl0
Q29kZU91dHB1dCkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0g
ImZhc3QiOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKKyAgICAgIEVYUEVDVF9FWElUKERp
ZVdpdGhNZXNzYWdlKCJleGl0aW5nIHdpdGggcmMgMVxuIiksCisgICAgICAgICAgICAgICAgICB0
ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgzKSwKKyAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBt
ZXNzYWdlIiksCisgICAgICAiICAgIFJlc3VsdDogZGllZCBidXQgbm90IHdpdGggZXhwZWN0ZWQg
ZXhpdCBjb2RlOlxuIgorICAgICAgIiAgICAgICAgICAgIEV4aXRlZCB3aXRoIGV4aXQgc3RhdHVz
IDFcbiIKKyAgICAgICJBY3R1YWwgbXNnOlxuIgorICAgICAgIlsgIERFQVRIICAgXSBleGl0aW5n
IHdpdGggcmMgMVxuIik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEZWF0aFRlc3RN
dWx0aUxpbmVNYXRjaEZhaWwpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0
eWxlKSA9ICJmYXN0IjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBFWFBFQ1Rf
REVBVEgoRGllV2l0aE1lc3NhZ2UoImxpbmUgMVxubGluZSAyXG5saW5lIDNcbiIpLAorICAgICAg
ICAgICAgICAgICAgICJsaW5lIDFcbnh5elxubGluZSAzXG4iKSwKKyAgICAgICJBY3R1YWwgbXNn
OlxuIgorICAgICAgIlsgIERFQVRIICAgXSBsaW5lIDFcbiIKKyAgICAgICJbICBERUFUSCAgIF0g
bGluZSAyXG4iCisgICAgICAiWyAgREVBVEggICBdIGxpbmUgM1xuIik7Cit9CisKK1RFU1RfRihU
ZXN0Rm9yRGVhdGhUZXN0LCBEZWF0aFRlc3RNdWx0aUxpbmVNYXRjaFBhc3MpIHsKKyAgdGVzdGlu
Zzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAgRVhQRUNUX0RFQVRI
KERpZVdpdGhNZXNzYWdlKCJsaW5lIDFcbmxpbmUgMlxubGluZSAzXG4iKSwKKyAgICAgICAgICAg
ICAgICJsaW5lIDFcbmxpbmUgMlxubGluZSAzXG4iKTsKK30KKwogLy8gQSBEZWF0aFRlc3RGYWN0
b3J5IHRoYXQgcmV0dXJucyBNb2NrRGVhdGhUZXN0cy4KIGNsYXNzIE1vY2tEZWF0aFRlc3RGYWN0
b3J5IDogcHVibGljIERlYXRoVGVzdEZhY3RvcnkgewogIHB1YmxpYzoKQEAgLTcwOSw5ICs4OTEs
OSBAQCBjbGFzcyBNb2NrRGVhdGhUZXN0RmFjdG9yeSA6IHB1YmxpYyBEZWF0aFRlc3RGYWN0b3J5
IHsKICAgLy8gQWNjZXNzb3JzLgogICBpbnQgQXNzdW1lUm9sZUNhbGxzKCkgY29uc3QgeyByZXR1
cm4gYXNzdW1lX3JvbGVfY2FsbHNfOyB9CiAgIGludCBXYWl0Q2FsbHMoKSBjb25zdCB7IHJldHVy
biB3YWl0X2NhbGxzXzsgfQotICBpbnQgUGFzc2VkQ2FsbHMoKSBjb25zdCB7IHJldHVybiBwYXNz
ZWRfYXJnc18uc2l6ZSgpOyB9CisgIHNpemVfdCBQYXNzZWRDYWxscygpIGNvbnN0IHsgcmV0dXJu
IHBhc3NlZF9hcmdzXy5zaXplKCk7IH0KICAgYm9vbCBQYXNzZWRBcmd1bWVudChpbnQgbikgY29u
c3QgeyByZXR1cm4gcGFzc2VkX2FyZ3NfW25dOyB9Ci0gIGludCBBYm9ydENhbGxzKCkgY29uc3Qg
eyByZXR1cm4gYWJvcnRfYXJnc18uc2l6ZSgpOyB9CisgIHNpemVfdCBBYm9ydENhbGxzKCkgY29u
c3QgeyByZXR1cm4gYWJvcnRfYXJnc18uc2l6ZSgpOyB9CiAgIERlYXRoVGVzdDo6QWJvcnRSZWFz
b24gQWJvcnRBcmd1bWVudChpbnQgbikgY29uc3QgewogICAgIHJldHVybiBhYm9ydF9hcmdzX1tu
XTsKICAgfQpAQCAtNzczLDYgKzk1NSw3IEBAIGNsYXNzIE1vY2tEZWF0aFRlc3QgOiBwdWJsaWMg
RGVhdGhUZXN0IHsKICAgdmlydHVhbCB2b2lkIEFib3J0KEFib3J0UmVhc29uIHJlYXNvbikgewog
ICAgIHBhcmVudF8tPmFib3J0X2FyZ3NfLnB1c2hfYmFjayhyZWFzb24pOwogICB9CisKICBwcml2
YXRlOgogICBNb2NrRGVhdGhUZXN0RmFjdG9yeSogY29uc3QgcGFyZW50XzsKICAgY29uc3QgVGVz
dFJvbGUgcm9sZV87CkBAIC04NzEsOCArMTA1NCw4IEBAIFRFU1RfRihNYWNyb0xvZ2ljRGVhdGhU
ZXN0LCBOb3RoaW5nSGFwcGVucykgewogICBFWFBFQ1RfRkFMU0UoZmxhZyk7CiAgIEVYUEVDVF9F
USgwLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOwogICBFWFBFQ1RfRVEoMCwgZmFjdG9y
eV8tPldhaXRDYWxscygpKTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygp
KTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOworICBFWFBFQ1RfRVEo
MFUsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKKyAgRVhQRUNUX0VRKDBVLCBmYWN0b3J5Xy0+
QWJvcnRDYWxscygpKTsKICAgRVhQRUNUX0ZBTFNFKGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsK
IH0KIApAQCAtODg2LDkgKzEwNjksOSBAQCBURVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwgQ2hp
bGRFeGl0c1N1Y2Nlc3NmdWxseSkgewogICBFWFBFQ1RfRkFMU0UoZmxhZyk7CiAgIEVYUEVDVF9F
USgxLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOwogICBFWFBFQ1RfRVEoMSwgZmFjdG9y
eV8tPldhaXRDYWxscygpKTsKLSAgQVNTRVJUX0VRKDEsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygp
KTsKKyAgQVNTRVJUX0VRKDFVLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7CiAgIEVYUEVDVF9G
QUxTRShmYWN0b3J5Xy0+UGFzc2VkQXJndW1lbnQoMCkpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9y
eV8tPkFib3J0Q2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMo
KSk7CiAgIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsKIH0KIApAQCAtOTAx
LDkgKzEwODQsOSBAQCBURVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwgQ2hpbGRFeGl0c1Vuc3Vj
Y2Vzc2Z1bGx5KSB7CiAgIEVYUEVDVF9GQUxTRShmbGFnKTsKICAgRVhQRUNUX0VRKDEsIGZhY3Rv
cnlfLT5Bc3N1bWVSb2xlQ2FsbHMoKSk7CiAgIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+V2FpdENh
bGxzKCkpOwotICBBU1NFUlRfRVEoMSwgZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOworICBBU1NF
UlRfRVEoMVUsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKICAgRVhQRUNUX1RSVUUoZmFjdG9y
eV8tPlBhc3NlZEFyZ3VtZW50KDApKTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5BYm9ydENh
bGxzKCkpOworICBFWFBFQ1RfRVEoMFUsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOwogICBFWFBF
Q1RfVFJVRShmYWN0b3J5Xy0+VGVzdERlbGV0ZWQoKSk7CiB9CiAKQEAgLTkxNyw4ICsxMTAwLDgg
QEAgVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxkUGVyZm9ybXNSZXR1cm4pIHsKICAg
RVhQRUNUX1RSVUUoZmxhZyk7CiAgIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNh
bGxzKCkpOwogICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPldhaXRDYWxscygpKTsKLSAgRVhQRUNU
X0VRKDAsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKLSAgRVhQRUNUX0VRKDEsIGZhY3Rvcnlf
LT5BYm9ydENhbGxzKCkpOworICBFWFBFQ1RfRVEoMFUsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygp
KTsKKyAgRVhQRUNUX0VRKDFVLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKICAgRVhQRUNUX0VR
KERlYXRoVGVzdDo6VEVTVF9FTkNPVU5URVJFRF9SRVRVUk5fU1RBVEVNRU5ULAogICAgICAgICAg
ICAgZmFjdG9yeV8tPkFib3J0QXJndW1lbnQoMCkpOwogICBFWFBFQ1RfVFJVRShmYWN0b3J5Xy0+
VGVzdERlbGV0ZWQoKSk7CkBAIC05MzMsMTMgKzExMTYsMTMgQEAgVEVTVF9GKE1hY3JvTG9naWNE
ZWF0aFRlc3QsIENoaWxkRG9lc05vdERpZSkgewogICBFWFBFQ1RfVFJVRShmbGFnKTsKICAgRVhQ
RUNUX0VRKDEsIGZhY3RvcnlfLT5Bc3N1bWVSb2xlQ2FsbHMoKSk7CiAgIEVYUEVDVF9FUSgwLCBm
YWN0b3J5Xy0+V2FpdENhbGxzKCkpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPlBhc3NlZENh
bGxzKCkpOworICBFWFBFQ1RfRVEoMFUsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKICAgLy8g
VGhpcyB0aW1lIHRoZXJlIGFyZSB0d28gY2FsbHMgdG8gQWJvcnQ6IG9uZSBzaW5jZSB0aGUgdGVz
dCBkaWRuJ3QKICAgLy8gZGllLCBhbmQgYW5vdGhlciBmcm9tIHRoZSBSZXR1cm5TZW50aW5lbCB3
aGVuIGl0J3MgZGVzdHJveWVkLiAgVGhlCiAgIC8vIHNlbnRpbmVsIG5vcm1hbGx5IGlzbid0IGRl
c3Ryb3llZCBpZiBhIHRlc3QgZG9lc24ndCBkaWUsIHNpbmNlCiAgIC8vIF9leGl0KDIpIGlzIGNh
bGxlZCBpbiB0aGF0IGNhc2UgYnkgRm9ya2luZ0RlYXRoVGVzdCwgYnV0IG5vdCBieQogICAvLyBv
dXIgTW9ja0RlYXRoVGVzdC4KLSAgQVNTRVJUX0VRKDIsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkp
OworICBBU1NFUlRfRVEoMlUsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOwogICBFWFBFQ1RfRVEo
RGVhdGhUZXN0OjpURVNUX0RJRF9OT1RfRElFLAogICAgICAgICAgICAgZmFjdG9yeV8tPkFib3J0
QXJndW1lbnQoMCkpOwogICBFWFBFQ1RfRVEoRGVhdGhUZXN0OjpURVNUX0VOQ09VTlRFUkVEX1JF
VFVSTl9TVEFURU1FTlQsCkBAIC05NzQsNyArMTE1Nyw3IEBAIFRFU1QoR2V0TGFzdEVycm5vRGVz
Y3JpcHRpb24sIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uV29ya3MpIHsKICAgRVhQRUNUX1NUUkVR
KCIiLCBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpLmNfc3RyKCkpOwogfQogCi0jaWYgR1RFU1Rf
T1NfV0lORE9XUworIyBpZiBHVEVTVF9PU19XSU5ET1dTCiBURVNUKEF1dG9IYW5kbGVUZXN0LCBB
dXRvSGFuZGxlV29ya3MpIHsKICAgSEFORExFIGhhbmRsZSA9IDo6Q3JlYXRlRXZlbnQoTlVMTCwg
RkFMU0UsIEZBTFNFLCBOVUxMKTsKICAgQVNTRVJUX05FKElOVkFMSURfSEFORExFX1ZBTFVFLCBo
YW5kbGUpOwpAQCAtOTk5LDQ2ICsxMTgyLDQ1IEBAIFRFU1QoQXV0b0hhbmRsZVRlc3QsIEF1dG9I
YW5kbGVXb3JrcykgewogICB0ZXN0aW5nOjppbnRlcm5hbDo6QXV0b0hhbmRsZSBhdXRvX2hhbmRs
ZTI7CiAgIEVYUEVDVF9FUShJTlZBTElEX0hBTkRMRV9WQUxVRSwgYXV0b19oYW5kbGUyLkdldCgp
KTsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gR1RFU1RfT1Nf
V0lORE9XUwogCi0jaWYgR1RFU1RfT1NfV0lORE9XUworIyBpZiBHVEVTVF9PU19XSU5ET1dTCiB0
eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgQmlnZ2VzdFBhcnNhYmxlOwogdHlwZWRlZiBzaWduZWQg
X19pbnQ2NCBCaWdnZXN0U2lnbmVkUGFyc2FibGU7Ci1jb25zdCBCaWdnZXN0UGFyc2FibGUga0Jp
Z2dlc3RQYXJzYWJsZU1heCA9IFVMTE9OR19NQVg7Ci1jb25zdCBCaWdnZXN0UGFyc2FibGUga0Jp
Z2dlc3RTaWduZWRQYXJzYWJsZU1heCA9IExMT05HX01BWDsKLSNlbHNlCisjIGVsc2UKIHR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBsb25nIEJpZ2dlc3RQYXJzYWJsZTsKIHR5cGVkZWYgc2lnbmVkIGxv
bmcgbG9uZyBCaWdnZXN0U2lnbmVkUGFyc2FibGU7Ci1jb25zdCBCaWdnZXN0UGFyc2FibGUga0Jp
Z2dlc3RQYXJzYWJsZU1heCA9Ci0gICAgOjpzdGQ6Om51bWVyaWNfbGltaXRzPEJpZ2dlc3RQYXJz
YWJsZT46Om1heCgpOwotY29uc3QgQmlnZ2VzdFNpZ25lZFBhcnNhYmxlIGtCaWdnZXN0U2lnbmVk
UGFyc2FibGVNYXggPQotICAgIDo6c3RkOjpudW1lcmljX2xpbWl0czxCaWdnZXN0U2lnbmVkUGFy
c2FibGU+OjptYXgoKTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUworCisvLyBXZSBjYW5ub3QgdXNlIHN0ZDo6bnVtZXJpY19saW1pdHM8
VD46Om1heCgpIGFzIGl0IGNsYXNoZXMgd2l0aCB0aGUKKy8vIG1heCgpIG1hY3JvIGRlZmluZWQg
YnkgPHdpbmRvd3MuaD4uCitjb25zdCBCaWdnZXN0UGFyc2FibGUga0JpZ2dlc3RQYXJzYWJsZU1h
eCA9IFVMTE9OR19NQVg7Citjb25zdCBCaWdnZXN0U2lnbmVkUGFyc2FibGUga0JpZ2dlc3RTaWdu
ZWRQYXJzYWJsZU1heCA9IExMT05HX01BWDsKIAogVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0
LCBSZWplY3RzSW52YWxpZEZvcm1hdCkgewogICBCaWdnZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsK
IAogICAvLyBSZWplY3RzIG5vbi1udW1iZXJzLgotICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFs
TnVtYmVyKFN0cmluZygibm9uLW51bWJlciBzdHJpbmciKSwgJnJlc3VsdCkpOworICBFWFBFQ1Rf
RkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCJub24tbnVtYmVyIHN0cmluZyIsICZyZXN1bHQpKTsK
IAogICAvLyBSZWplY3RzIG51bWJlcnMgd2l0aCB3aGl0ZXNwYWNlIHByZWZpeC4KLSAgRVhQRUNU
X0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIiAxMjMiKSwgJnJlc3VsdCkpOworICBF
WFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCIgMTIzIiwgJnJlc3VsdCkpOwogCiAgIC8v
IFJlamVjdHMgbmVnYXRpdmUgbnVtYmVycy4KLSAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51
bWJlcihTdHJpbmcoIi0xMjMiKSwgJnJlc3VsdCkpOworICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1
cmFsTnVtYmVyKCItMTIzIiwgJnJlc3VsdCkpOwogCiAgIC8vIFJlamVjdHMgbnVtYmVycyBzdGFy
dGluZyB3aXRoIGEgcGx1cyBzaWduLgotICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVy
KFN0cmluZygiKzEyMyIpLCAmcmVzdWx0KSk7CisgIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxO
dW1iZXIoIisxMjMiLCAmcmVzdWx0KSk7CiAgIGVycm5vID0gMDsKIH0KIAogVEVTVChQYXJzZU5h
dHVyYWxOdW1iZXJUZXN0LCBSZWplY3RzT3ZlcmZsb3duTnVtYmVycykgewogICBCaWdnZXN0UGFy
c2FibGUgcmVzdWx0ID0gMDsKIAotICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKFN0
cmluZygiOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkiKSwgJnJlc3VsdCkpOworICBFWFBFQ1RfRkFM
U0UoUGFyc2VOYXR1cmFsTnVtYmVyKCI5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSIsICZyZXN1bHQp
KTsKIAogICBzaWduZWQgY2hhciBjaGFyX3Jlc3VsdCA9IDA7Ci0gIEVYUEVDVF9GQUxTRShQYXJz
ZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCIyMDAiKSwgJmNoYXJfcmVzdWx0KSk7CisgIEVYUEVDVF9G
QUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoIjIwMCIsICZjaGFyX3Jlc3VsdCkpOwogICBlcnJubyA9
IDA7CiB9CiAKQEAgLTEwNDYsMTYgKzEyMjgsMTYgQEAgVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJU
ZXN0LCBBY2NlcHRzVmFsaWROdW1iZXJzKSB7CiAgIEJpZ2dlc3RQYXJzYWJsZSByZXN1bHQgPSAw
OwogCiAgIHJlc3VsdCA9IDA7Ci0gIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJp
bmcoIjEyMyIpLCAmcmVzdWx0KSk7CisgIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcigi
MTIzIiwgJnJlc3VsdCkpOwogICBFWFBFQ1RfRVEoMTIzVSwgcmVzdWx0KTsKIAogICAvLyBDaGVj
ayAwIGFzIGFuIGVkZ2UgY2FzZS4KICAgcmVzdWx0ID0gMTsKLSAgQVNTRVJUX1RSVUUoUGFyc2VO
YXR1cmFsTnVtYmVyKFN0cmluZygiMCIpLCAmcmVzdWx0KSk7CisgIEFTU0VSVF9UUlVFKFBhcnNl
TmF0dXJhbE51bWJlcigiMCIsICZyZXN1bHQpKTsKICAgRVhQRUNUX0VRKDBVLCByZXN1bHQpOwog
CiAgIHJlc3VsdCA9IDE7Ci0gIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmco
IjAwMDAwIiksICZyZXN1bHQpKTsKKyAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKCIw
MDAwMCIsICZyZXN1bHQpKTsKICAgRVhQRUNUX0VRKDBVLCByZXN1bHQpOwogfQogCkBAIC0xMDkx
LDIyICsxMjczLDIyIEBAIFRFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgQWNjZXB0c1R5cGVM
aW1pdHMpIHsKIAogVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBXb3Jrc0ZvclNob3J0ZXJJ
bnRlZ2VycykgewogICBzaG9ydCBzaG9ydF9yZXN1bHQgPSAwOwotICBBU1NFUlRfVFJVRShQYXJz
ZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCIxMjMiKSwgJnNob3J0X3Jlc3VsdCkpOworICBBU1NFUlRf
VFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjEyMyIsICZzaG9ydF9yZXN1bHQpKTsKICAgRVhQRUNU
X0VRKDEyMywgc2hvcnRfcmVzdWx0KTsKIAogICBzaWduZWQgY2hhciBjaGFyX3Jlc3VsdCA9IDA7
Ci0gIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIjEyMyIpLCAmY2hhcl9y
ZXN1bHQpKTsKKyAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKCIxMjMiLCAmY2hhcl9y
ZXN1bHQpKTsKICAgRVhQRUNUX0VRKDEyMywgY2hhcl9yZXN1bHQpOwogfQogCi0jaWYgR1RFU1Rf
T1NfV0lORE9XUworIyBpZiBHVEVTVF9PU19XSU5ET1dTCiBURVNUKEVudmlyb25tZW50VGVzdCwg
SGFuZGxlRml0c0ludG9TaXplVCkgewogICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBSZW1v
dmUgdGhpcyB0ZXN0IGFmdGVyIHRoaXMgY29uZGl0aW9uIGlzIHZlcmlmaWVkCiAgIC8vIGluIGEg
c3RhdGljIGFzc2VydGlvbiBpbiBndGVzdC1kZWF0aC10ZXN0LmNjIGluIHRoZSBmdW5jdGlvbgog
ICAvLyBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvci4KICAgQVNTRVJUX1RSVUUoc2l6ZW9mKEhBTkRM
RSkgPD0gc2l6ZW9mKHNpemVfdCkpOwogfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisj
IGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKIC8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRI
X0lGX1NVUFBPUlRFRC9BU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEIHRyaWdnZXIKIC8vIGZhaWx1
cmVzIHdoZW4gZGVhdGggdGVzdHMgYXJlIGF2YWlsYWJsZSBvbiB0aGUgc3lzdGVtLgpAQCAtMTEy
MSwxMSArMTMwMywzMCBAQCBURVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NEZWF0aFRlc3QsIEV4
cGVjdHNEZWF0aFdoZW5EZWF0aFRlc3RzQXZhaWxhYmxlKSB7CiAgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIpLCAiIik7CiB9CiAKLSNlbHNlCitU
RVNUKEluRGVhdGhUZXN0Q2hpbGREZWF0aFRlc3QsIFJlcG9ydHNEZWF0aFRlc3RDb3JyZWN0bHlJ
bkZhc3RTdHlsZSkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0g
ImZhc3QiOworICBFWFBFQ1RfRkFMU0UoSW5EZWF0aFRlc3RDaGlsZCgpKTsKKyAgRVhQRUNUX0RF
QVRIKHsKKyAgICBmcHJpbnRmKHN0ZGVyciwgSW5EZWF0aFRlc3RDaGlsZCgpID8gIkluc2lkZSIg
OiAiT3V0c2lkZSIpOworICAgIGZmbHVzaChzdGRlcnIpOworICAgIF9leGl0KDEpOworICB9LCAi
SW5zaWRlIik7Cit9CisKK1RFU1QoSW5EZWF0aFRlc3RDaGlsZERlYXRoVGVzdCwgUmVwb3J0c0Rl
YXRoVGVzdENvcnJlY3RseUluVGhyZWFkU2FmZVN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZM
QUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7CisgIEVYUEVDVF9GQUxTRShJbkRl
YXRoVGVzdENoaWxkKCkpOworICBFWFBFQ1RfREVBVEgoeworICAgIGZwcmludGYoc3RkZXJyLCBJ
bkRlYXRoVGVzdENoaWxkKCkgPyAiSW5zaWRlIiA6ICJPdXRzaWRlIik7CisgICAgZmZsdXNoKHN0
ZGVycik7CisgICAgX2V4aXQoMSk7CisgIH0sICJJbnNpZGUiKTsKK30KKworI2Vsc2UgIC8vICFH
VEVTVF9IQVNfREVBVEhfVEVTVCBmb2xsb3dzCiAKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpD
YXB0dXJlU3RkZXJyOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldENhcHR1cmVkU3RkZXJy
OwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZzsKIAogLy8gVGVzdHMgdGhhdCBFWFBF
Q1RfREVBVEhfSUZfU1VQUE9SVEVEL0FTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgYXJlIHN0aWxs
CiAvLyBkZWZpbmVkIGJ1dCBkbyBub3QgdHJpZ2dlciBmYWlsdXJlcyB3aGVuIGRlYXRoIHRlc3Rz
IGFyZSBub3QgYXZhaWxhYmxlIG9uCkBAIC0xMTM1LDcgKzEzMzYsNyBAQCBURVNUKENvbmRpdGlv
bmFsRGVhdGhNYWNyb3NUZXN0LCBXYXJuc1doZW5EZWF0aFRlc3RzTm90QXZhaWxhYmxlKSB7CiAg
IC8vIHdoZW4gZGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQuCiAgIENhcHR1cmVTdGRlcnIo
KTsKICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIik7Ci0gIFN0cmluZyBvdXRwdXQg
PSBHZXRDYXB0dXJlZFN0ZGVycigpOworICBzdGQ6OnN0cmluZyBvdXRwdXQgPSBHZXRDYXB0dXJl
ZFN0ZGVycigpOwogICBBU1NFUlRfVFJVRShOVUxMICE9IHN0cnN0cihvdXRwdXQuY19zdHIoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9y
dGVkIG9uIHRoaXMgcGxhdGZvcm0iKSk7CiAgIEFTU0VSVF9UUlVFKE5VTEwgIT0gc3Ryc3RyKG91
dHB1dC5jX3N0cigpLCAiOyIpKTsKQEAgLTExNzEsNyArMTM3Miw4IEBAIFRFU1QoQ29uZGl0aW9u
YWxEZWF0aE1hY3Jvc1Rlc3QsIEFzc2VydERlYXREb2VzTm90UmV0dXJuaElmVW5zdXBwb3J0ZWQp
IHsKICAgRnVuY1dpdGhBc3NlcnQoJm4pOwogICBFWFBFQ1RfRVEoMSwgbik7CiB9Ci0jZW5kaWYg
IC8vIEdURVNUX0hBU19ERUFUSF9URVNUCisKKyNlbmRpZiAgLy8gIUdURVNUX0hBU19ERUFUSF9U
RVNUCiAKIC8vIFRlc3RzIHRoYXQgdGhlIGRlYXRoIHRlc3QgbWFjcm9zIGV4cGFuZCB0byBjb2Rl
IHdoaWNoIG1heSBvciBtYXkgbm90CiAvLyBiZSBmb2xsb3dlZCBieSBvcGVyYXRvcjw8LCBhbmQg
dGhhdCBpbiBlaXRoZXIgY2FzZSB0aGUgY29tcGxldGUgdGV4dApAQCAtMTIwMiwxMiArMTQwNCw5
IEBAIFRFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc1N5bnRheERlYXRoVGVzdCwgU2luZ2xlU3Rh
dGVtZW50KSB7CiAvLyBUZXN0cyB0aGF0IGNvbmRpdGlvbmFsIGRlYXRoIHRlc3QgbWFjcm9zIGV4
cGFuZCB0byBjb2RlIHdoaWNoIGludGVyYWN0cwogLy8gd2VsbCB3aXRoIHN3aXRjaCBzdGF0ZW1l
bnRzLgogVEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zU3ludGF4RGVhdGhUZXN0LCBTd2l0Y2hT
dGF0ZW1lbnQpIHsKLS8vIE1pY3Jvc29mdCBjb21waWxlciB1c3VhbGx5IGNvbXBsYWlucyBhYm91
dCBzd2l0Y2ggc3RhdGVtZW50cyB3aXRob3V0Ci0vLyBjYXNlIGxhYmVscy4gV2Ugc3VwcHJlc3Mg
dGhhdCB3YXJuaW5nIGZvciB0aGlzIHRlc3QuCi0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgd2Fy
bmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQwNjUpCi0jZW5kaWYgIC8vIF9N
U0NfVkVSCisgIC8vIE1pY3Jvc29mdCBjb21waWxlciB1c3VhbGx5IGNvbXBsYWlucyBhYm91dCBz
d2l0Y2ggc3RhdGVtZW50cyB3aXRob3V0CisgIC8vIGNhc2UgbGFiZWxzLiBXZSBzdXBwcmVzcyB0
aGF0IHdhcm5pbmcgZm9yIHRoaXMgdGVzdC4KKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1Nf
UFVTSF8oNDA2NSkKIAogICBzd2l0Y2ggKDApCiAgICAgZGVmYXVsdDoKQEAgLTEyMTgsOSArMTQx
Nyw3IEBAIFRFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc1N5bnRheERlYXRoVGVzdCwgU3dpdGNo
U3RhdGVtZW50KSB7CiAgICAgY2FzZSAwOgogICAgICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRF
RChfZXhpdCgxKSwgIiIpIDw8ICJleGl0IGluIHN3aXRjaCBjYXNlIjsKIAotI2lmZGVmIF9NU0Nf
VkVSCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmICAvLyBfTVNDX1ZFUgorICBHVEVTVF9E
SVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKIH0KIAogLy8gVGVzdHMgdGhhdCBhIHRlc3QgY2Fz
ZSB3aG9zZSBuYW1lIGVuZHMgd2l0aCAiRGVhdGhUZXN0IiB3b3JrcyBmaW5lCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3QuY2MKaW5kZXgg
NjI1MDI4Mjc1OGRmYjNjOTNmNDdmMDkxYzUyYTJkYmY5MmNhY2VlYi4uZGE3Mjk4NjkyNmI2ODY2
YTMyNDc2NjUzMjBiYjFiNWIwMDI2ZDU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdC1maWxlcGF0aF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3QtZmlsZXBhdGhfdGVzdC5jYwpAQCAtMzgsOCArMzgsOCBAQAogLy8g
YnVpbGQgb3IgbWFrZS1maWxlcyBmb3Igc29tZSBleGlzdGluZyBHb29nbGUgVGVzdCBjbGllbnRz
LiBEbyBub3QKIC8vICNpbmNsdWRlIHRoaXMgZmlsZSBhbnl3aGVyZSBlbHNlIQogCi0jaW5jbHVk
ZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgiCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1
bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwogLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0
IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCkBAIC01MSw5ICs1MSw5IEBACiAj
dW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCiAKICNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklM
RQotI2luY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDx3aW5kb3dzLmg+
ICAvLyBOT0xJTlQKICNlbGlmIEdURVNUX09TX1dJTkRPV1MKLSNpbmNsdWRlIDxkaXJlY3QuaD4g
IC8vIE5PTElOVAorIyBpbmNsdWRlIDxkaXJlY3QuaD4gIC8vIE5PTElOVAogI2VuZGlmICAvLyBH
VEVTVF9PU19XSU5ET1dTX01PQklMRQogCiBuYW1lc3BhY2UgdGVzdGluZyB7CkBAIC05MSwyMSAr
OTEsMjQgQEAgVEVTVChHZXRDdXJyZW50RGlyVGVzdCwgUmV0dXJuc0N1cnJlbnREaXIpIHsKICAg
Y29uc3QgRmlsZVBhdGggY3dkID0gRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKTsKICAgcG9zaXg6
OkNoRGlyKG9yaWdpbmFsX2Rpci5jX3N0cigpKTsKIAotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMg
aWYgR1RFU1RfT1NfV0lORE9XUworCiAgIC8vIFNraXBzIHRoZSAiOiIuCiAgIGNvbnN0IGNoYXIq
IGNvbnN0IGN3ZF93aXRob3V0X2RyaXZlID0gc3RyY2hyKGN3ZC5jX3N0cigpLCAnOicpOwogICBB
U1NFUlRfVFJVRShjd2Rfd2l0aG91dF9kcml2ZSAhPSBOVUxMKTsKICAgRVhQRUNUX1NUUkVRKEdU
RVNUX1BBVEhfU0VQXywgY3dkX3dpdGhvdXRfZHJpdmUgKyAxKTsKLSNlbHNlCi0gIEVYUEVDVF9T
VFJFUShHVEVTVF9QQVRIX1NFUF8sIGN3ZC5jX3N0cigpKTsKLSNlbmRpZgorCisjIGVsc2UKKwor
ICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfLCBjd2Quc3RyaW5nKCkpOworCisjIGVuZGlmCiB9
CiAKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIAogVEVTVChJc0VtcHR5VGVz
dCwgUmV0dXJuc1RydWVGb3JFbXB0eVBhdGgpIHsKICAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIiIp
LklzRW1wdHkoKSk7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKE5VTEwpLklzRW1wdHkoKSk7CiB9
CiAKIFRFU1QoSXNFbXB0eVRlc3QsIFJldHVybnNGYWxzZUZvck5vbkVtcHR5UGF0aCkgewpAQCAt
MTE3LDM4ICsxMjAsMzggQEAgVEVTVChJc0VtcHR5VGVzdCwgUmV0dXJuc0ZhbHNlRm9yTm9uRW1w
dHlQYXRoKSB7CiAKIC8vIFJlbW92ZURpcmVjdG9yeU5hbWUgIiIgLT4gIiIKIFRFU1QoUmVtb3Zl
RGlyZWN0b3J5TmFtZVRlc3QsIFdoZW5FbXB0eU5hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCIiLCBG
aWxlUGF0aCgiIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEo
IiIsIEZpbGVQYXRoKCIiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOwogfQogCiAv
LyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZmlsZSIgLT4gImFmaWxlIgogVEVTVChSZW1vdmVEaXJl
Y3RvcnlOYW1lVGVzdCwgQnV0Tm9EaXJlY3RvcnkpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIs
Ci0gICAgICBGaWxlUGF0aCgiYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIoKSk7
CisgIEVYUEVDVF9FUSgiYWZpbGUiLAorICAgICAgRmlsZVBhdGgoImFmaWxlIikuUmVtb3ZlRGly
ZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKIH0KIAogLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiL2Fm
aWxlIiAtPiAiYWZpbGUiCiBURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBSb290RmlsZVNo
b3VsZEdpdmVGaWxlTmFtZSkgewotICBFWFBFQ1RfU1RSRVEoImFmaWxlIiwKLSAgICAgIEZpbGVQ
YXRoKEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIo
KSk7CisgIEVYUEVDVF9FUSgiYWZpbGUiLAorICAgICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBf
ICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7CiB9CiAKIC8vIFJlbW92
ZURpcmVjdG9yeU5hbWUgImFkaXIvIiAtPiAiIgogVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVz
dCwgV2hlcmVUaGVyZUlzTm9GaWxlTmFtZSkgewotICBFWFBFQ1RfU1RSRVEoIiIsCi0gICAgICBG
aWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19z
dHIoKSk7CisgIEVYUEVDVF9FUSgiIiwKKyAgICAgIEZpbGVQYXRoKCJhZGlyIiBHVEVTVF9QQVRI
X1NFUF8pLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7CiB9CiAKIC8vIFJlbW92ZURp
cmVjdG9yeU5hbWUgImFkaXIvYWZpbGUiIC0+ICJhZmlsZSIKIFRFU1QoUmVtb3ZlRGlyZWN0b3J5
TmFtZVRlc3QsIFNob3VsZEdpdmVGaWxlTmFtZSkgewotICBFWFBFQ1RfU1RSRVEoImFmaWxlIiwK
LSAgICAgIEZpbGVQYXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikuUmVtb3ZlRGly
ZWN0b3J5TmFtZSgpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImFmaWxlIiwKKyAgICAgIEZpbGVQ
YXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgp
LnN0cmluZygpKTsKIH0KIAogLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiYWRpci9zdWJkaXIvYWZp
bGUiIC0+ICJhZmlsZSIKIFRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEFsc29H
aXZlRmlsZU5hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIsCisgIEVYUEVDVF9FUSgiYWZp
bGUiLAogICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVT
VF9QQVRIX1NFUF8gImFmaWxlIikKLSAgICAgIC5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIo
KSk7CisgICAgICAuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKIH0KIAogI2lmIEdU
RVNUX0hBU19BTFRfUEFUSF9TRVBfCkBAIC0xNTgsMjYgKzE2MSwyMyBAQCBURVNUKFJlbW92ZURp
cmVjdG9yeU5hbWVUZXN0LCBTaG91bGRBbHNvR2l2ZUZpbGVOYW1lKSB7CiAKIC8vIFJlbW92ZURp
cmVjdG9yeU5hbWUoIi9hZmlsZSIpIC0+ICJhZmlsZSIKIFRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFt
ZVRlc3QsIFJvb3RGaWxlU2hvdWxkR2l2ZUZpbGVOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7
Ci0gIEVYUEVDVF9TVFJFUSgiYWZpbGUiLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoIi9hZmls
ZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKCJhZmlsZSIs
IEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOwogfQog
CiAvLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCJhZGlyLyIpIC0+ICIiCiBURVNUKFJlbW92ZURpcmVj
dG9yeU5hbWVUZXN0LCBXaGVyZVRoZXJlSXNOb0ZpbGVOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9y
KSB7Ci0gIEVYUEVDVF9TVFJFUSgiIiwKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyLyIp
LlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKCIiLCBGaWxlUGF0
aCgiYWRpci8iKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOwogfQogCiAvLyBSZW1v
dmVEaXJlY3RvcnlOYW1lKCJhZGlyL2FmaWxlIikgLT4gImFmaWxlIgogVEVTVChSZW1vdmVEaXJl
Y3RvcnlOYW1lVGVzdCwgU2hvdWxkR2l2ZUZpbGVOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7
Ci0gIEVYUEVDVF9TVFJFUSgiYWZpbGUiLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIv
YWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiYWZp
bGUiLCBGaWxlUGF0aCgiYWRpci9hZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmco
KSk7CiB9CiAKIC8vIFJlbW92ZURpcmVjdG9yeU5hbWUoImFkaXIvc3ViZGlyL2FmaWxlIikgLT4g
ImFmaWxlIgogVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgU2hvdWxkQWxzb0dpdmVGaWxl
TmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoImFmaWxlIiwKLSAg
ICAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL3N1YmRpci9hZmlsZSIpLlJlbW92ZURpcmVjdG9y
eU5hbWUoKS5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKCJhZmlsZSIsCisgICAgICAgICAgICBGaWxl
UGF0aCgiYWRpci9zdWJkaXIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkp
OwogfQogCiAjZW5kaWYKQEAgLTE4NiwzOCArMTg2LDM1IEBAIFRFU1QoUmVtb3ZlRGlyZWN0b3J5
TmFtZVRlc3QsIFNob3VsZEFsc29HaXZlRmlsZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsK
IFRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBFbXB0eU5hbWUpIHsKICNpZiBHVEVTVF9PU19XSU5E
T1dTX01PQklMRQogICAvLyBPbiBXaW5kb3dzIENFLCB3ZSB1c2UgdGhlIHJvb3QgYXMgdGhlIGN1
cnJlbnQgZGlyZWN0b3J5LgotICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLAotICAgICAg
RmlsZVBhdGgoIiIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7CisgIEVYUEVDVF9FUShHVEVT
VF9QQVRIX1NFUF8sIEZpbGVQYXRoKCIiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKICNl
bHNlCi0gIEVYUEVDVF9TVFJFUSgiLiIgR1RFU1RfUEFUSF9TRVBfLAotICAgICAgRmlsZVBhdGgo
IiIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiLiIgR1RFU1RfUEFU
SF9TRVBfLCBGaWxlUGF0aCgiIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7CiAjZW5kaWYK
IH0KIAogLy8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvIiAtPiAiYWRpci8iCiBURVNUKFJlbW92ZUZp
bGVOYW1lVGVzdCwgQnV0Tm9GaWxlKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWRpciIgR1RFU1RfUEFU
SF9TRVBfLAotICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXykuUmVtb3ZlRmls
ZU5hbWUoKS5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8sCisg
ICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfKS5SZW1vdmVGaWxlTmFtZSgpLnN0
cmluZygpKTsKIH0KIAogLy8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvYWZpbGUiIC0+ICJhZGlyLyIK
IFRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc0Rpck5hbWUpIHsKLSAgRVhQRUNUX1NUUkVR
KCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFU
SF9TRVBfICJhZmlsZSIpCi0gICAgICAuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKKyAgRVhQ
RUNUX0VRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8sCisgICAgICAgICAgICBGaWxlUGF0aCgiYWRp
ciIgR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOwog
fQogCiAvLyBSZW1vdmVGaWxlTmFtZSAiYWRpci9zdWJkaXIvYWZpbGUiIC0+ICJhZGlyL3N1YmRp
ci8iCiBURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNEaXJBbmRTdWJEaXJOYW1lKSB7Ci0g
IEVYUEVDVF9TVFJFUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhf
U0VQXywKKyAgRVhQRUNUX0VRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gInN1YmRpciIgR1RFU1Rf
UEFUSF9TRVBfLAogICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAic3ViZGly
IiBHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikKLSAgICAgIC5SZW1vdmVGaWxlTmFtZSgpLmNfc3Ry
KCkpOworICAgICAgLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOwogfQogCiAvLyBSZW1vdmVG
aWxlTmFtZSAiL2FmaWxlIiAtPiAiLyIKIFRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc1Jv
b3REaXIpIHsKLSAgRVhQRUNUX1NUUkVRKEdURVNUX1BBVEhfU0VQXywKLSAgICAgIEZpbGVQYXRo
KEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLmNfc3RyKCkpOworICBF
WFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfLAorICAgICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBf
ICJhZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOwogfQogCiAjaWYgR1RFU1RfSEFT
X0FMVF9QQVRIX1NFUF8KQEAgLTIyNywyNiArMjI0LDI1IEBAIFRFU1QoUmVtb3ZlRmlsZU5hbWVU
ZXN0LCBHaXZlc1Jvb3REaXIpIHsKIAogLy8gUmVtb3ZlRmlsZU5hbWUoImFkaXIvIikgLT4gImFk
aXIvIgogVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEJ1dE5vRmlsZUZvckFsdGVybmF0ZVNlcGFy
YXRvcikgewotICBFWFBFQ1RfU1RSRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAg
ICAgICAgIEZpbGVQYXRoKCJhZGlyLyIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7CisgIEVY
UEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgoImFk
aXIvIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7CiB9CiAKIC8vIFJlbW92ZUZpbGVOYW1l
KCJhZGlyL2FmaWxlIikgLT4gImFkaXIvIgogVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVz
RGlyTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoImFkaXIiIEdU
RVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL2FmaWxlIikuUmVt
b3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKCJhZGlyIiBHVEVTVF9QQVRIX1NF
UF8sCisgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci9hZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCku
c3RyaW5nKCkpOwogfQogCiAvLyBSZW1vdmVGaWxlTmFtZSgiYWRpci9zdWJkaXIvYWZpbGUiKSAt
PiAiYWRpci9zdWJkaXIvIgogVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzRGlyQW5kU3Vi
RGlyTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoImFkaXIiIEdU
RVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICAgICAgICAgICBG
aWxlUGF0aCgiYWRpci9zdWJkaXIvYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLmNfc3RyKCkpOwor
ICBFWFBFQ1RfRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NF
UF8sCisgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci9zdWJkaXIvYWZpbGUiKS5SZW1vdmVGaWxl
TmFtZSgpLnN0cmluZygpKTsKIH0KIAogLy8gUmVtb3ZlRmlsZU5hbWUoIi9hZmlsZSIpIC0+ICJc
IgogVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzUm9vdERpckZvckFsdGVybmF0ZVNlcGFy
YXRvcikgewotICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLAotICAgICAgICAgICAgICAg
RmlsZVBhdGgoIi9hZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7CisgIEVYUEVDVF9F
UShHVEVTVF9QQVRIX1NFUF8sIEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLnN0
cmluZygpKTsKIH0KIAogI2VuZGlmCkBAIC0yNTQsMTI1ICsyNTAsMTIwIEBAIFRFU1QoUmVtb3Zl
RmlsZU5hbWVUZXN0LCBHaXZlc1Jvb3REaXJGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKIFRFU1Qo
TWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVySXNaZXJvKSB7CiAgIEZpbGVQYXRo
IGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoImZvbyIpLCBGaWxlUGF0
aCgiYmFyIiksCiAgICAgICAwLCAieG1sIik7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBH
VEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOwogfQogCiBURVNUKE1h
a2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlRmlsZU5hbWVOdW1iZXJHdFplcm8pIHsKICAgRmlsZVBh
dGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiksIEZpbGVQ
YXRoKCJiYXIiKSwKICAgICAgIDEyLCAieG1sIik7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVT
VF9QQVRIX1NFUF8gImJhcl8xMi54bWwiLCBhY3R1YWwuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgi
Zm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhcl8xMi54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOwogfQog
CiBURVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlRmlsZU5hbWVXaXRoU2xhc2hOdW1iZXJJ
c1plcm8pIHsKICAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxl
UGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAogICAgICAgRmlsZVBhdGgoImJhciIpLCAwLCAi
eG1sIik7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBh
Y3R1YWwuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54
bWwiLCBhY3R1YWwuc3RyaW5nKCkpOwogfQogCiBURVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVy
YXRlRmlsZU5hbWVXaXRoU2xhc2hOdW1iZXJHdFplcm8pIHsKICAgRmlsZVBhdGggYWN0dWFsID0g
RmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAog
ICAgICAgRmlsZVBhdGgoImJhciIpLCAxMiwgInhtbCIpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIg
R1RFU1RfUEFUSF9TRVBfICJiYXJfMTIueG1sIiwgYWN0dWFsLmNfc3RyKCkpOworICBFWFBFQ1Rf
RVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXJfMTIueG1sIiwgYWN0dWFsLnN0cmluZygpKTsK
IH0KIAogVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZVdoZW5OdW1iZXJJc1plcm9BbmRE
aXJJc0VtcHR5KSB7CiAgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUo
RmlsZVBhdGgoIiIpLCBGaWxlUGF0aCgiYmFyIiksCiAgICAgICAwLCAieG1sIik7Ci0gIEVYUEVD
VF9TVFJFUSgiYmFyLnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKCJiYXIueG1s
IiwgYWN0dWFsLnN0cmluZygpKTsKIH0KIAogVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0
ZVdoZW5OdW1iZXJJc05vdFplcm9BbmREaXJJc0VtcHR5KSB7CiAgIEZpbGVQYXRoIGFjdHVhbCA9
IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoIiIpLCBGaWxlUGF0aCgiYmFyIiksCiAg
ICAgICAxNCwgInhtbCIpOwotICBFWFBFQ1RfU1RSRVEoImJhcl8xNC54bWwiLCBhY3R1YWwuY19z
dHIoKSk7CisgIEVYUEVDVF9FUSgiYmFyXzE0LnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7CiB9CiAK
IFRFU1QoQ29uY2F0UGF0aHNUZXN0LCBXb3Jrc1doZW5EaXJEb2VzTm90RW5kV2l0aFBhdGhTZXAp
IHsKICAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJm
b28iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRo
KCJiYXIueG1sIikpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIu
eG1sIiwgYWN0dWFsLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBf
ICJiYXIueG1sIiwgYWN0dWFsLnN0cmluZygpKTsKIH0KIAogVEVTVChDb25jYXRQYXRoc1Rlc3Qs
IFdvcmtzV2hlblBhdGgxRW5kc1dpdGhQYXRoU2VwKSB7CiAgIEZpbGVQYXRoIGFjdHVhbCA9IEZp
bGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJhci54bWwi
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1
YWwuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwi
LCBhY3R1YWwuc3RyaW5nKCkpOwogfQogCiBURVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDFCZWlu
Z0VtcHR5KSB7CiAgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxl
UGF0aCgiIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxl
UGF0aCgiYmFyLnhtbCIpKTsKLSAgRVhQRUNUX1NUUkVRKCJiYXIueG1sIiwgYWN0dWFsLmNfc3Ry
KCkpOworICBFWFBFQ1RfRVEoImJhci54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOwogfQogCiBURVNU
KENvbmNhdFBhdGhzVGVzdCwgUGF0aDJCZWluZ0VtcHR5KSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9
IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiIikpOwotICBFWFBFQ1RfU1RSRVEo
ImZvbyIgR1RFU1RfUEFUSF9TRVBfLCBhY3R1YWwuY19zdHIoKSk7CisgIEZpbGVQYXRoIGFjdHVh
bCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiksIEZpbGVQYXRoKCIiKSk7
CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sIGFjdHVhbC5zdHJpbmcoKSk7CiB9
CiAKIFRFU1QoQ29uY2F0UGF0aHNUZXN0LCBCb3RoUGF0aEJlaW5nRW1wdHkpIHsKICAgRmlsZVBh
dGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCIiKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCIiKSk7Ci0gIEVYUEVD
VF9TVFJFUSgiIiwgYWN0dWFsLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoIiIsIGFjdHVhbC5zdHJp
bmcoKSk7CiB9CiAKIFRFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMUNvbnRhaW5zUGF0aFNlcCkg
ewogICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZv
byIgR1RFU1RfUEFUSF9TRVBfICJiYXIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZpbGVQYXRoKCJmb29iYXIueG1sIikpOwotICBFWFBFQ1RfU1RSRVEoImZv
byIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXyAiZm9vYmFyLnhtbCIsCi0g
ICAgICAgICAgICAgICBhY3R1YWwuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBfICJmb29iYXIueG1sIiwKKyAgICAgICAgICAg
IGFjdHVhbC5zdHJpbmcoKSk7CiB9CiAKIFRFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMkNvbnRh
aW5zUGF0aFNlcCkgewogICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMo
CiAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAogICAgICAgRmlsZVBhdGgo
ImJhciIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIikpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIg
R1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsCi0gICAgICAg
ICAgICAgICBhY3R1YWwuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8gImJhciIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwKKyAgICAgICAgICAgIGFjdHVhbC5z
dHJpbmcoKSk7CiB9CiAKIFRFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMkVuZHNXaXRoUGF0aFNl
cCkgewogICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgo
ImZvbyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBh
dGgoImJhciIgR1RFU1RfUEFUSF9TRVBfKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBfLCBhY3R1YWwuY19zdHIoKSk7CisgIEVYUEVD
VF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBfLCBhY3R1YWwu
c3RyaW5nKCkpOwogfQogCiAvLyBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IgIiIgLT4gIiIK
IFRFU1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgRW1wdHlTdHJpbmcpIHsKLSAg
RVhQRUNUX1NUUkVRKCIiLAotICAgICAgRmlsZVBhdGgoIiIpLlJlbW92ZVRyYWlsaW5nUGF0aFNl
cGFyYXRvcigpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoIiIsIEZpbGVQYXRoKCIiKS5SZW1vdmVU
cmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5zdHJpbmcoKSk7CiB9CiAKIC8vIFJlbW92ZVRyYWlsaW5n
UGF0aFNlcGFyYXRvciAiZm9vIiAtPiAiZm9vIgogVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBh
cmF0b3JUZXN0LCBGaWxlTm9TbGFzaFN0cmluZykgewotICBFWFBFQ1RfU1RSRVEoImZvbyIsCi0g
ICAgICBGaWxlUGF0aCgiZm9vIikuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuY19zdHIo
KSk7CisgIEVYUEVDVF9FUSgiZm9vIiwgRmlsZVBhdGgoImZvbyIpLlJlbW92ZVRyYWlsaW5nUGF0
aFNlcGFyYXRvcigpLnN0cmluZygpKTsKIH0KIAogLy8gUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJh
dG9yICJmb28vIiAtPiAiZm9vIgogVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0
LCBTaG91bGRSZW1vdmVUcmFpbGluZ1NlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoCi0gICAg
ICAiZm9vIiwKLSAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXykuUmVtb3ZlVHJh
aWxpbmdQYXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiwKKyAgICAg
IEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXykuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJh
dG9yKCkuc3RyaW5nKCkpOwogI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCi0gIEVYUEVDVF9T
VFJFUSgiZm9vIiwKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28vIikuUmVtb3ZlVHJhaWxp
bmdQYXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiwgRmlsZVBhdGgo
ImZvby8iKS5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5zdHJpbmcoKSk7CiAjZW5kaWYK
IH0KIAogLy8gUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28vYmFyLyIgLT4gImZvby9i
YXIvIgogVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBTaG91bGRSZW1vdmVM
YXN0U2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJh
ciIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIg
R1RFU1RfUEFUSF9TRVBfKQotICAgICAgICAgICAgICAgLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFy
YXRvcigpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIi
LAorICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNU
X1BBVEhfU0VQXykKKyAgICAgICAgICAgICAgICAuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9y
KCkuc3RyaW5nKCkpOwogfQogCiAvLyBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IgImZvby9i
YXIiIC0+ICJmb28vYmFyIgogVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBT
aG91bGRSZXR1cm5Vbm1vZGlmaWVkKSB7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRI
X1NFUF8gImJhciIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8gImJhciIpCi0gICAgICAgICAgICAgICAuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCku
Y19zdHIoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCisgICAg
ICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIpCisgICAgICAgICAg
ICAgICAgLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKIH0KIAogVEVT
VChEaXJlY3RvcnlUZXN0LCBSb290RGlyZWN0b3J5RXhpc3RzKSB7CkBAIC00MTUsNTAgKzQwNiw0
NyBAQCBURVNUKERpcmVjdG9yeVRlc3QsIEVtcHR5UGF0aERpcmVjdG9yeURvZXNOb3RFeGlzdCkg
ewogCiBURVNUKERpcmVjdG9yeVRlc3QsIEN1cnJlbnREaXJlY3RvcnlFeGlzdHMpIHsKICNpZiBH
VEVTVF9PU19XSU5ET1dTICAvLyBXZSBhcmUgb24gV2luZG93cy4KLSNpZm5kZWYgX1dJTjMyX0NF
ICAvLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSBhIGN1cnJlbnQgZGlyZWN0b3J5LgorIyBpZm5k
ZWYgX1dJTjMyX0NFICAvLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSBhIGN1cnJlbnQgZGlyZWN0
b3J5LgorCiAgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIuIikuRGlyZWN0b3J5RXhpc3RzKCkpOwog
ICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiLlxcIikuRGlyZWN0b3J5RXhpc3RzKCkpOwotI2VuZGlm
ICAvLyBfV0lOMzJfQ0UKKworIyBlbmRpZiAgLy8gX1dJTjMyX0NFCiAjZWxzZQogICBFWFBFQ1Rf
VFJVRShGaWxlUGF0aCgiLiIpLkRpcmVjdG9yeUV4aXN0cygpKTsKICAgRVhQRUNUX1RSVUUoRmls
ZVBhdGgoIi4vIikuRGlyZWN0b3J5RXhpc3RzKCkpOwogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5E
T1dTCiB9CiAKLVRFU1QoTm9ybWFsaXplVGVzdCwgTnVsbFN0cmluZ3NFcXVhbEVtcHR5RGlyZWN0
b3J5KSB7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgRmlsZVBhdGgoTlVMTCkuY19zdHIoKSk7Ci0gIEVY
UEVDVF9TVFJFUSgiIiwgRmlsZVBhdGgoU3RyaW5nKE5VTEwpKS5jX3N0cigpKTsKLX0KLQogLy8g
ImZvby9iYXIiID09IGZvby8vYmFyIiA9PSAiZm9vLy8vYmFyIgogVEVTVChOb3JtYWxpemVUZXN0
LCBNdWx0aXBsZUNvbnNlY3V0aXZlU2VwYXBhcmF0b3JzSW5NaWRzdHJpbmcpIHsKLSAgRVhQRUNU
X1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICAgICAgICAgICAgIEZpbGVQ
YXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJF
USgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgi
Zm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5jX3N0cigpKTsKLSAg
RVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICAgICAgICAgICAg
IEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8KLSAgICAgICAg
ICAgICAgICAgICAgICAgIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuY19zdHIoKSk7CisgIEVYUEVD
VF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCisgICAgICAgICAgICBGaWxlUGF0aCgi
Zm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIpLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJmb28i
IEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKKyAgICAgICAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNU
X1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gImJhciIpLnN0cmluZygpKTsKKyAgRVhQRUNUX0VR
KCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKKyAgICAgICAgICAgIEZpbGVQYXRoKCJmb28i
IEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8KKyAgICAgICAgICAgICAgICAgICAgIEdU
RVNUX1BBVEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOwogfQogCiAvLyAiL2JhciIgPT0gLy9iYXIi
ID09ICIvLy9iYXIiCiBURVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRpcGxlQ29uc2VjdXRpdmVTZXBh
cGFyYXRvcnNBdFN0cmluZ1N0YXJ0KSB7Ci0gIEVYUEVDVF9TVFJFUShHVEVTVF9QQVRIX1NFUF8g
ImJhciIsCi0gICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5jX3N0cigpKTsKLSAg
RVhQRUNUX1NUUkVRKEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICBGaWxlUGF0aChHVEVTVF9Q
QVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVR
KEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gR1RF
U1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuY19zdHIoKSk7CisgIEVYUEVDVF9F
UShHVEVTVF9QQVRIX1NFUF8gImJhciIsCisgICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfICJi
YXIiKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUShHVEVTVF9QQVRIX1NFUF8gImJhciIsCisgICAg
RmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuc3RyaW5nKCkp
OworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgIEZpbGVQYXRoKEdURVNU
X1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5zdHJpbmco
KSk7CiB9CiAKIC8vICJmb28vIiA9PSBmb28vLyIgPT0gImZvby8vLyIKIFRFU1QoTm9ybWFsaXpl
VGVzdCwgTXVsdGlwbGVDb25zZWN1dGl2ZVNlcGFwYXJhdG9yc0F0U3RyaW5nRW5kKSB7Ci0gIEVY
UEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgRmlsZVBhdGgoImZvbyIgR1RF
U1RfUEFUSF9TRVBfKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhf
U0VQXywKLSAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBf
KS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKLSAgICBG
aWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhf
U0VQXykuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCisgICAg
RmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgi
Zm9vIiBHVEVTVF9QQVRIX1NFUF8sCisgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBf
IEdURVNUX1BBVEhfU0VQXykuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFU
SF9TRVBfLAorICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NF
UF8gR1RFU1RfUEFUSF9TRVBfKS5zdHJpbmcoKSk7CiB9CiAKICNpZiBHVEVTVF9IQVNfQUxUX1BB
VEhfU0VQXwpAQCAtNDY3LDEyICs0NTUsMTIgQEAgVEVTVChOb3JtYWxpemVUZXN0LCBNdWx0aXBs
ZUNvbnNlY3V0aXZlU2VwYXBhcmF0b3JzQXRTdHJpbmdFbmQpIHsKIC8vIHJlZ2FyZGxlc3Mgb2Yg
dGhlaXIgY29tYmluYXRpb24gKGUuZy4gImZvb1wiID09ImZvby9cIiA9PQogLy8gImZvb1xcLyIp
LgogVEVTVChOb3JtYWxpemVUZXN0LCBNaXhBbHRlcm5hdGVTZXBhcmF0b3JBdFN0cmluZ0VuZCkg
ewotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAotICAgICAgICAgICAgICAg
RmlsZVBhdGgoImZvby8iKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BB
VEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAi
LyIpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAotICAg
ICAgICAgICAgICAgRmlsZVBhdGgoImZvby8vIiBHVEVTVF9QQVRIX1NFUF8pLmNfc3RyKCkpOwor
ICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgo
ImZvby8iKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCisg
ICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gIi8iKS5zdHJpbmcoKSk7
CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCisgICAgICAgICAgICBGaWxlUGF0
aCgiZm9vLy8iIEdURVNUX1BBVEhfU0VQXykuc3RyaW5nKCkpOwogfQogCiAjZW5kaWYKQEAgLTQ4
MSwzMSArNDY5LDMxIEBAIFRFU1QoQXNzaWdubWVudE9wZXJhdG9yVGVzdCwgRGVmYXVsdEFzc2ln
bmVkVG9Ob25EZWZhdWx0KSB7CiAgIEZpbGVQYXRoIGRlZmF1bHRfcGF0aDsKICAgRmlsZVBhdGgg
bm9uX2RlZmF1bHRfcGF0aCgicGF0aCIpOwogICBub25fZGVmYXVsdF9wYXRoID0gZGVmYXVsdF9w
YXRoOwotICBFWFBFQ1RfU1RSRVEoIiIsIG5vbl9kZWZhdWx0X3BhdGguY19zdHIoKSk7Ci0gIEVY
UEVDVF9TVFJFUSgiIiwgZGVmYXVsdF9wYXRoLmNfc3RyKCkpOyAgLy8gUkhTIHZhciBpcyB1bmNo
YW5nZWQuCisgIEVYUEVDVF9FUSgiIiwgbm9uX2RlZmF1bHRfcGF0aC5zdHJpbmcoKSk7CisgIEVY
UEVDVF9FUSgiIiwgZGVmYXVsdF9wYXRoLnN0cmluZygpKTsgIC8vIFJIUyB2YXIgaXMgdW5jaGFu
Z2VkLgogfQogCiBURVNUKEFzc2lnbm1lbnRPcGVyYXRvclRlc3QsIE5vbkRlZmF1bHRBc3NpZ25l
ZFRvRGVmYXVsdCkgewogICBGaWxlUGF0aCBub25fZGVmYXVsdF9wYXRoKCJwYXRoIik7CiAgIEZp
bGVQYXRoIGRlZmF1bHRfcGF0aDsKICAgZGVmYXVsdF9wYXRoID0gbm9uX2RlZmF1bHRfcGF0aDsK
LSAgRVhQRUNUX1NUUkVRKCJwYXRoIiwgZGVmYXVsdF9wYXRoLmNfc3RyKCkpOwotICBFWFBFQ1Rf
U1RSRVEoInBhdGgiLCBub25fZGVmYXVsdF9wYXRoLmNfc3RyKCkpOyAgLy8gUkhTIHZhciBpcyB1
bmNoYW5nZWQuCisgIEVYUEVDVF9FUSgicGF0aCIsIGRlZmF1bHRfcGF0aC5zdHJpbmcoKSk7Cisg
IEVYUEVDVF9FUSgicGF0aCIsIG5vbl9kZWZhdWx0X3BhdGguc3RyaW5nKCkpOyAgLy8gUkhTIHZh
ciBpcyB1bmNoYW5nZWQuCiB9CiAKIFRFU1QoQXNzaWdubWVudE9wZXJhdG9yVGVzdCwgQ29uc3RB
c3NpZ25lZFRvTm9uQ29uc3QpIHsKICAgY29uc3QgRmlsZVBhdGggY29uc3RfZGVmYXVsdF9wYXRo
KCJjb25zdF9wYXRoIik7CiAgIEZpbGVQYXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgiKTsKICAg
bm9uX2RlZmF1bHRfcGF0aCA9IGNvbnN0X2RlZmF1bHRfcGF0aDsKLSAgRVhQRUNUX1NUUkVRKCJj
b25zdF9wYXRoIiwgbm9uX2RlZmF1bHRfcGF0aC5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKCJjb25z
dF9wYXRoIiwgbm9uX2RlZmF1bHRfcGF0aC5zdHJpbmcoKSk7CiB9CiAKIGNsYXNzIERpcmVjdG9y
eUNyZWF0aW9uVGVzdCA6IHB1YmxpYyBUZXN0IHsKICBwcm90ZWN0ZWQ6CiAgIHZpcnR1YWwgdm9p
ZCBTZXRVcCgpIHsKLSAgICB0ZXN0ZGF0YV9wYXRoXy5TZXQoRmlsZVBhdGgoU3RyaW5nOjpGb3Jt
YXQoIiVzJXMlcyIsCi0gICAgICAgIFRlbXBEaXIoKS5jX3N0cigpLCBHZXRDdXJyZW50RXhlY3V0
YWJsZU5hbWUoKS5jX3N0cigpLAotICAgICAgICAiX2RpcmVjdG9yeV9jcmVhdGlvbiIgR1RFU1Rf
UEFUSF9TRVBfICJ0ZXN0IiBHVEVTVF9QQVRIX1NFUF8pKSk7CisgICAgdGVzdGRhdGFfcGF0aF8u
U2V0KEZpbGVQYXRoKAorICAgICAgICBUZW1wRGlyKCkgKyBHZXRDdXJyZW50RXhlY3V0YWJsZU5h
bWUoKS5zdHJpbmcoKSArCisgICAgICAgICJfZGlyZWN0b3J5X2NyZWF0aW9uIiBHVEVTVF9QQVRI
X1NFUF8gInRlc3QiIEdURVNUX1BBVEhfU0VQXykpOwogICAgIHRlc3RkYXRhX2ZpbGVfLlNldCh0
ZXN0ZGF0YV9wYXRoXy5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKSk7CiAKICAgICB1bmlx
dWVfZmlsZTBfLlNldChGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKHRlc3RkYXRhX3BhdGhfLCBGaWxl
UGF0aCgidW5pcXVlIiksCkBAIC01MjYsMjIgKzUxNCw2IEBAIGNsYXNzIERpcmVjdG9yeUNyZWF0
aW9uVGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICBwb3NpeDo6Um1EaXIodGVzdGRhdGFfcGF0aF8u
Y19zdHIoKSk7CiAgIH0KIAotICBTdHJpbmcgVGVtcERpcigpIGNvbnN0IHsKLSNpZiBHVEVTVF9P
U19XSU5ET1dTX01PQklMRQotICAgIHJldHVybiBTdHJpbmcoIlxcdGVtcFxcIik7Ci0jZWxpZiBH
VEVTVF9PU19XSU5ET1dTCi0gICAgY29uc3QgY2hhciogdGVtcF9kaXIgPSBwb3NpeDo6R2V0RW52
KCJURU1QIik7Ci0gICAgaWYgKHRlbXBfZGlyID09IE5VTEwgfHwgdGVtcF9kaXJbMF0gPT0gJ1ww
JykKLSAgICAgIHJldHVybiBTdHJpbmcoIlxcdGVtcFxcIik7Ci0gICAgZWxzZSBpZiAoU3RyaW5n
KHRlbXBfZGlyKS5FbmRzV2l0aCgiXFwiKSkKLSAgICAgIHJldHVybiBTdHJpbmcodGVtcF9kaXIp
OwotICAgIGVsc2UKLSAgICAgIHJldHVybiBTdHJpbmc6OkZvcm1hdCgiJXNcXCIsIHRlbXBfZGly
KTsKLSNlbHNlCi0gICAgcmV0dXJuIFN0cmluZygiL3RtcC8iKTsKLSNlbmRpZiAgLy8gR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKLSAgfQotCiAgIHZvaWQgQ3JlYXRlVGV4dEZpbGUoY29uc3QgY2hh
ciogZmlsZW5hbWUpIHsKICAgICBGSUxFKiBmID0gcG9zaXg6OkZPcGVuKGZpbGVuYW1lLCAidyIp
OwogICAgIGZwcmludGYoZiwgInRleHRcbiIpOwpAQCAtNTU4LDEzICs1MzAsMTMgQEAgY2xhc3Mg
RGlyZWN0b3J5Q3JlYXRpb25UZXN0IDogcHVibGljIFRlc3QgewogfTsKIAogVEVTVF9GKERpcmVj
dG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSkgewotICBFWFBF
Q1RfRkFMU0UodGVzdGRhdGFfcGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkpIDw8IHRlc3RkYXRhX3Bh
dGhfLmNfc3RyKCk7CisgIEVYUEVDVF9GQUxTRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlz
dHMoKSkgPDwgdGVzdGRhdGFfcGF0aF8uc3RyaW5nKCk7CiAgIEVYUEVDVF9UUlVFKHRlc3RkYXRh
X3BhdGhfLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKSk7CiAgIEVYUEVDVF9UUlVFKHRl
c3RkYXRhX3BhdGhfLkRpcmVjdG9yeUV4aXN0cygpKTsKIH0KIAogVEVTVF9GKERpcmVjdG9yeUNy
ZWF0aW9uVGVzdCwgQ3JlYXRlRGlyZWN0b3JpZXNGb3JBbHJlYWR5RXhpc3RpbmdQYXRoKSB7Ci0g
IEVYUEVDVF9GQUxTRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlzdHMoKSkgPDwgdGVzdGRh
dGFfcGF0aF8uY19zdHIoKTsKKyAgRVhQRUNUX0ZBTFNFKHRlc3RkYXRhX3BhdGhfLkRpcmVjdG9y
eUV4aXN0cygpKSA8PCB0ZXN0ZGF0YV9wYXRoXy5zdHJpbmcoKTsKICAgRVhQRUNUX1RSVUUodGVz
dGRhdGFfcGF0aF8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKTsKICAgLy8gQ2FsbCAn
Y3JlYXRlJyBhZ2Fpbi4uLiBzaG91bGQgc3RpbGwgc3VjY2VlZC4KICAgRVhQRUNUX1RSVUUodGVz
dGRhdGFfcGF0aF8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKTsKQEAgLTU3Myw3ICs1
NDUsNyBAQCBURVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0Zv
ckFscmVhZHlFeGlzdGluZ1BhdGgpIHsKIFRFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENy
ZWF0ZURpcmVjdG9yaWVzQW5kVW5pcXVlRmlsZW5hbWUpIHsKICAgRmlsZVBhdGggZmlsZV9wYXRo
KEZpbGVQYXRoOjpHZW5lcmF0ZVVuaXF1ZUZpbGVOYW1lKHRlc3RkYXRhX3BhdGhfLAogICAgICAg
RmlsZVBhdGgoInVuaXF1ZSIpLCAidHh0IikpOwotICBFWFBFQ1RfU1RSRVEodW5pcXVlX2ZpbGUw
Xy5jX3N0cigpLCBmaWxlX3BhdGguY19zdHIoKSk7CisgIEVYUEVDVF9FUSh1bmlxdWVfZmlsZTBf
LnN0cmluZygpLCBmaWxlX3BhdGguc3RyaW5nKCkpOwogICBFWFBFQ1RfRkFMU0UoZmlsZV9wYXRo
LkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsgIC8vIGZpbGUgbm90IHRoZXJlCiAKICAgdGVzdGRh
dGFfcGF0aF8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpOwpAQCAtNTgzLDcgKzU1NSw3
IEBAIFRFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURpcmVjdG9yaWVzQW5kVW5p
cXVlRmlsZW5hbWUpIHsKIAogICBGaWxlUGF0aCBmaWxlX3BhdGgyKEZpbGVQYXRoOjpHZW5lcmF0
ZVVuaXF1ZUZpbGVOYW1lKHRlc3RkYXRhX3BhdGhfLAogICAgICAgRmlsZVBhdGgoInVuaXF1ZSIp
LCAidHh0IikpOwotICBFWFBFQ1RfU1RSRVEodW5pcXVlX2ZpbGUxXy5jX3N0cigpLCBmaWxlX3Bh
dGgyLmNfc3RyKCkpOworICBFWFBFQ1RfRVEodW5pcXVlX2ZpbGUxXy5zdHJpbmcoKSwgZmlsZV9w
YXRoMi5zdHJpbmcoKSk7CiAgIEVYUEVDVF9GQUxTRShmaWxlX3BhdGgyLkZpbGVPckRpcmVjdG9y
eUV4aXN0cygpKTsgIC8vIGZpbGUgbm90IHRoZXJlCiAgIENyZWF0ZVRleHRGaWxlKGZpbGVfcGF0
aDIuY19zdHIoKSk7CiAgIEVYUEVDVF9UUlVFKGZpbGVfcGF0aDIuRmlsZU9yRGlyZWN0b3J5RXhp
c3RzKCkpOwpAQCAtNjA0LDQzICs1NzYsNDMgQEAgVEVTVChOb0RpcmVjdG9yeUNyZWF0aW9uVGVz
dCwgQ3JlYXRlTm9EaXJlY3Rvcmllc0ZvckRlZmF1bHRYbWxGaWxlKSB7CiAKIFRFU1QoRmlsZVBh
dGhUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3IpIHsKICAgRmlsZVBhdGggZnA7Ci0gIEVYUEVDVF9T
VFJFUSgiIiwgZnAuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiIiwgZnAuc3RyaW5nKCkpOwogfQog
CiBURVNUKEZpbGVQYXRoVGVzdCwgQ2hhckFuZENvcHlDb25zdHJ1Y3RvcnMpIHsKICAgY29uc3Qg
RmlsZVBhdGggZnAoInNwaWN5Iik7Ci0gIEVYUEVDVF9TVFJFUSgic3BpY3kiLCBmcC5jX3N0cigp
KTsKKyAgRVhQRUNUX0VRKCJzcGljeSIsIGZwLnN0cmluZygpKTsKIAogICBjb25zdCBGaWxlUGF0
aCBmcF9jb3B5KGZwKTsKLSAgRVhQRUNUX1NUUkVRKCJzcGljeSIsIGZwX2NvcHkuY19zdHIoKSk7
CisgIEVYUEVDVF9FUSgic3BpY3kiLCBmcF9jb3B5LnN0cmluZygpKTsKIH0KIAogVEVTVChGaWxl
UGF0aFRlc3QsIFN0cmluZ0NvbnN0cnVjdG9yKSB7Ci0gIGNvbnN0IEZpbGVQYXRoIGZwKFN0cmlu
ZygiY2lkZXIiKSk7Ci0gIEVYUEVDVF9TVFJFUSgiY2lkZXIiLCBmcC5jX3N0cigpKTsKKyAgY29u
c3QgRmlsZVBhdGggZnAoc3RkOjpzdHJpbmcoImNpZGVyIikpOworICBFWFBFQ1RfRVEoImNpZGVy
IiwgZnAuc3RyaW5nKCkpOwogfQogCiBURVNUKEZpbGVQYXRoVGVzdCwgU2V0KSB7CiAgIGNvbnN0
IEZpbGVQYXRoIGFwcGxlKCJhcHBsZSIpOwogICBGaWxlUGF0aCBtYWMoIm1hYyIpOwogICBtYWMu
U2V0KGFwcGxlKTsgIC8vIEltcGxlbWVudCBTZXQoKSBzaW5jZSBvdmVybG9hZGluZyBvcGVyYXRv
cj0gaXMgZm9yYmlkZGVuLgotICBFWFBFQ1RfU1RSRVEoImFwcGxlIiwgbWFjLmNfc3RyKCkpOwot
ICBFWFBFQ1RfU1RSRVEoImFwcGxlIiwgYXBwbGUuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiYXBw
bGUiLCBtYWMuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoImFwcGxlIiwgYXBwbGUuc3RyaW5nKCkp
OwogfQogCiBURVNUKEZpbGVQYXRoVGVzdCwgVG9TdHJpbmcpIHsKICAgY29uc3QgRmlsZVBhdGgg
ZmlsZSgiZHJpbmsiKTsKLSAgU3RyaW5nIHN0cihmaWxlLlRvU3RyaW5nKCkpOwotICBFWFBFQ1Rf
U1RSRVEoImRyaW5rIiwgc3RyLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImRyaW5rIiwgZmlsZS5z
dHJpbmcoKSk7CiB9CiAKIFRFU1QoRmlsZVBhdGhUZXN0LCBSZW1vdmVFeHRlbnNpb24pIHsKLSAg
RVhQRUNUX1NUUkVRKCJhcHAiLCBGaWxlUGF0aCgiYXBwLmV4ZSIpLlJlbW92ZUV4dGVuc2lvbigi
ZXhlIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiQVBQIiwgRmlsZVBhdGgoIkFQUC5FWEUi
KS5SZW1vdmVFeHRlbnNpb24oImV4ZSIpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImFwcCIsIEZp
bGVQYXRoKCJhcHAuY2MiKS5SZW1vdmVFeHRlbnNpb24oImNjIikuc3RyaW5nKCkpOworICBFWFBF
Q1RfRVEoImFwcCIsIEZpbGVQYXRoKCJhcHAuZXhlIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5z
dHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiQVBQIiwgRmlsZVBhdGgoIkFQUC5FWEUiKS5SZW1vdmVF
eHRlbnNpb24oImV4ZSIpLnN0cmluZygpKTsKIH0KIAogVEVTVChGaWxlUGF0aFRlc3QsIFJlbW92
ZUV4dGVuc2lvbldoZW5UaGVyZUlzTm9FeHRlbnNpb24pIHsKLSAgRVhQRUNUX1NUUkVRKCJhcHAi
LCBGaWxlUGF0aCgiYXBwIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5jX3N0cigpKTsKKyAgRVhQ
RUNUX0VRKCJhcHAiLCBGaWxlUGF0aCgiYXBwIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5zdHJp
bmcoKSk7CiB9CiAKIFRFU1QoRmlsZVBhdGhUZXN0LCBJc0RpcmVjdG9yeSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saW5rZWRfcHRyX3Rlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYwpp
bmRleCBlYWU4MjI5NmM5MjFmMGFmZTQyZmMyMzM1NzQ5NzBlZTc3MDllNWJkLi42ZmNmNTEyNGE4
YzMxYWY4NDhmZDEwNzdhNDUxYTdjNDE4NDRjNDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYwpAQCAtMzAsMTAgKzMw
LDEwIEBACiAvLyBBdXRob3JzOiBEYW4gRWdub3IgKGVnbm9yQGdvb2dsZS5jb20pCiAvLyBQb3J0
ZWQgdG8gV2luZG93czogVmFkaW0gQmVybWFuICh2YWRpbWJAZ29vZ2xlLmNvbSkKIAotI2luY2x1
ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaD4KKyNpbmNsdWRlICJndGVzdC9p
bnRlcm5hbC9ndGVzdC1saW5rZWRfcHRyLmgiCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIG5hbWVzcGFj
ZSB7CiAKQEAgLTc3LDcgKzc3LDggQEAgY2xhc3MgTGlua2VkUHRyVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKIFRFU1RfRihMaW5rZWRQdHJUZXN0LCBHZW5lcmFsVGVzdCkgewogICB7CiAg
ICAgbGlua2VkX3B0cjxBPiBhMCwgYTEsIGEyOwotICAgIGEwID0gYTA7CisgICAgLy8gVXNlIGV4
cGxpY2l0IGZ1bmN0aW9uIGNhbGwgbm90YXRpb24gaGVyZSB0byBzdXBwcmVzcyBzZWxmLWFzc2ln
biB3YXJuaW5nLgorICAgIGEwLm9wZXJhdG9yPShhMCk7CiAgICAgYTEgPSBhMjsKICAgICBBU1NF
UlRfRVEoYTAuZ2V0KCksIHN0YXRpY19jYXN0PEEqPihOVUxMKSk7CiAgICAgQVNTRVJUX0VRKGEx
LmdldCgpLCBzdGF0aWNfY2FzdDxBKj4oTlVMTCkpOwpAQCAtMTQ3LDggKzE0OCw3IEBAIFRFU1Rf
RihMaW5rZWRQdHJUZXN0LCBHZW5lcmFsVGVzdCkgewogICAgICJBMCBkdG9yXG4iCiAgICAgIkEz
IGR0b3JcbiIKICAgICAiQTEgZHRvclxuIiwKLSAgICBoaXN0b3J5LT5HZXRTdHJpbmcoKS5jX3N0
cigpCi0gICk7CisgICAgaGlzdG9yeS0+R2V0U3RyaW5nKCkuY19zdHIoKSk7CiB9CiAKIH0gIC8v
IFVubmFtZWQgbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0LWxpc3RlbmVyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0LWxpc3RlbmVyX3Rlc3QuY2MKaW5kZXggYzliZTM5YTg3ZTg4ZDg5NjAxYjliYzkzNzJh
MTRlZGFhZjYxMjk0My4uOTA3NDc2ODVmMDcyYjIyMTA4ZmNkMWMzMWQ1Y2NjNWQ0NjIyOTYzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saXN0ZW5lcl90
ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbGlzdGVuZXJf
dGVzdC5jYwpAQCAtMzMsNyArMzMsNyBAQAogLy8gVGhpcyBmaWxlIHZlcmlmaWVzIEdvb2dsZSBU
ZXN0IGV2ZW50IGxpc3RlbmVycyByZWNlaXZlIGV2ZW50cyBhdCB0aGUKIC8vIHJpZ2h0IHRpbWVz
LgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgog
I2luY2x1ZGUgPHZlY3Rvcj4KIAogdXNpbmcgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJv
bm1lbnQ7CkBAIC00NSwxNyArNDUsMTYgQEAgdXNpbmcgOjp0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0
ZW5lcjsKIHVzaW5nIDo6dGVzdGluZzo6VGVzdEluZm87CiB1c2luZyA6OnRlc3Rpbmc6OlRlc3RQ
YXJ0UmVzdWx0OwogdXNpbmcgOjp0ZXN0aW5nOjpVbml0VGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6
aW50ZXJuYWw6OlN0cmluZzsKIAogLy8gVXNlZCBieSB0ZXN0cyB0byByZWdpc3RlciB0aGVpciBl
dmVudHMuCi1zdGQ6OnZlY3RvcjxTdHJpbmc+KiBnX2V2ZW50cyA9IE5VTEw7CitzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4qIGdfZXZlbnRzID0gTlVMTDsKIAogbmFtZXNwYWNlIHRlc3Rpbmcgewog
bmFtZXNwYWNlIGludGVybmFsIHsKIAogY2xhc3MgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lciA6IHB1
YmxpYyBUZXN0RXZlbnRMaXN0ZW5lciB7CiAgcHVibGljOgotICBFdmVudFJlY29yZGluZ0xpc3Rl
bmVyKGNvbnN0IGNoYXIqIG5hbWUpIDogbmFtZV8obmFtZSkge30KKyAgZXhwbGljaXQgRXZlbnRS
ZWNvcmRpbmdMaXN0ZW5lcihjb25zdCBjaGFyKiBuYW1lKSA6IG5hbWVfKG5hbWUpIHt9CiAKICBw
cm90ZWN0ZWQ6CiAgIHZpcnR1YWwgdm9pZCBPblRlc3RQcm9ncmFtU3RhcnQoY29uc3QgVW5pdFRl
c3QmIC8qdW5pdF90ZXN0Ki8pIHsKQEAgLTExOSw1NCArMTE4LDUyIEBAIGNsYXNzIEV2ZW50UmVj
b3JkaW5nTGlzdGVuZXIgOiBwdWJsaWMgVGVzdEV2ZW50TGlzdGVuZXIgewogICB9CiAKICBwcml2
YXRlOgotICBTdHJpbmcgR2V0RnVsbE1ldGhvZE5hbWUoY29uc3QgY2hhciogbmFtZSkgewotICAg
IE1lc3NhZ2UgbWVzc2FnZTsKLSAgICBtZXNzYWdlIDw8IG5hbWVfIDw8ICIuIiA8PCBuYW1lOwot
ICAgIHJldHVybiBtZXNzYWdlLkdldFN0cmluZygpOworICBzdGQ6OnN0cmluZyBHZXRGdWxsTWV0
aG9kTmFtZShjb25zdCBjaGFyKiBuYW1lKSB7CisgICAgcmV0dXJuIG5hbWVfICsgIi4iICsgbmFt
ZTsKICAgfQogCi0gIFN0cmluZyBuYW1lXzsKKyAgc3RkOjpzdHJpbmcgbmFtZV87CiB9OwogCiBj
bGFzcyBFbnZpcm9ubWVudEludm9jYXRpb25DYXRjaGVyIDogcHVibGljIEVudmlyb25tZW50IHsK
ICBwcm90ZWN0ZWQ6CiAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBnX2V2ZW50cy0+cHVz
aF9iYWNrKFN0cmluZygiRW52aXJvbm1lbnQ6OlNldFVwIikpOworICAgIGdfZXZlbnRzLT5wdXNo
X2JhY2soIkVudmlyb25tZW50OjpTZXRVcCIpOwogICB9CiAKICAgdmlydHVhbCB2b2lkIFRlYXJE
b3duKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJFbnZpcm9ubWVudDo6VGVh
ckRvd24iKSk7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjaygiRW52aXJvbm1lbnQ6OlRlYXJEb3du
Iik7CiAgIH0KIH07CiAKIGNsYXNzIExpc3RlbmVyVGVzdCA6IHB1YmxpYyBUZXN0IHsKICBwcm90
ZWN0ZWQ6CiAgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7Ci0gICAgZ19ldmVudHMtPnB1
c2hfYmFjayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6U2V0VXBUZXN0Q2FzZSIpKTsKKyAgICBnX2V2
ZW50cy0+cHVzaF9iYWNrKCJMaXN0ZW5lclRlc3Q6OlNldFVwVGVzdENhc2UiKTsKICAgfQogCiAg
IHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFj
ayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6VGVhckRvd25UZXN0Q2FzZSIpKTsKKyAgICBnX2V2ZW50
cy0+cHVzaF9iYWNrKCJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duVGVzdENhc2UiKTsKICAgfQogCiAg
IHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKFN0cmluZygi
TGlzdGVuZXJUZXN0OjpTZXRVcCIpKTsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKCJMaXN0ZW5l
clRlc3Q6OlNldFVwIik7CiAgIH0KIAogICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAg
Z19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6VGVhckRvd24iKSk7Cisg
ICAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0OjpUZWFyRG93biIpOwogICB9CiB9
OwogCiBURVNUX0YoTGlzdGVuZXJUZXN0LCBEb2VzRm9vKSB7CiAgIC8vIFRlc3QgZXhlY3V0aW9u
IG9yZGVyIHdpdGhpbiBhIHRlc3QgY2FzZSBpcyBub3QgZ3VhcmFudGVlZCBzbyB3ZSBhcmUgbm90
CiAgIC8vIHJlY29yZGluZyB0aGUgdGVzdCBuYW1lLgotICBnX2V2ZW50cy0+cHVzaF9iYWNrKFN0
cmluZygiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIpKTsKKyAgZ19ldmVudHMtPnB1c2hfYmFj
aygiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIpOwogICBTVUNDRUVEKCk7ICAvLyBUcmlnZ2Vy
cyBPblRlc3RQYXJ0UmVzdWx0LgogfQogCiBURVNUX0YoTGlzdGVuZXJUZXN0LCBEb2VzQmFyKSB7
Ci0gIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5
IikpOworICBnX2V2ZW50cy0+cHVzaF9iYWNrKCJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5Iik7
CiAgIFNVQ0NFRUQoKTsgIC8vIFRyaWdnZXJzIE9uVGVzdFBhcnRSZXN1bHQuCiB9CiAKQEAgLTE3
NywxOCArMTc0LDE4IEBAIFRFU1RfRihMaXN0ZW5lclRlc3QsIERvZXNCYXIpIHsKIHVzaW5nIDo6
dGVzdGluZzo6aW50ZXJuYWw6OkVudmlyb25tZW50SW52b2NhdGlvbkNhdGNoZXI7CiB1c2luZyA6
OnRlc3Rpbmc6OmludGVybmFsOjpFdmVudFJlY29yZGluZ0xpc3RlbmVyOwogCi12b2lkIFZlcmlm
eVJlc3VsdHMoY29uc3Qgc3RkOjp2ZWN0b3I8U3RyaW5nPiYgZGF0YSwKK3ZvaWQgVmVyaWZ5UmVz
dWx0cyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGRhdGEsCiAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogY29uc3QqIGV4cGVjdGVkX2RhdGEsCi0gICAgICAgICAgICAgICAg
ICAgaW50IGV4cGVjdGVkX2RhdGFfc2l6ZSkgewotICBjb25zdCBpbnQgYWN0dWFsX3NpemUgPSBk
YXRhLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICBzaXplX3QgZXhwZWN0ZWRfZGF0YV9zaXpl
KSB7CisgIGNvbnN0IHNpemVfdCBhY3R1YWxfc2l6ZSA9IGRhdGEuc2l6ZSgpOwogICAvLyBJZiB0
aGUgZm9sbG93aW5nIGFzc2VydGlvbiBmYWlscywgYSBuZXcgZW50cnkgd2lsbCBiZSBhcHBlbmRl
ZCB0bwogICAvLyBkYXRhLiAgSGVuY2Ugd2Ugc2F2ZSBkYXRhLnNpemUoKSBmaXJzdC4KICAgRVhQ
RUNUX0VRKGV4cGVjdGVkX2RhdGFfc2l6ZSwgYWN0dWFsX3NpemUpOwogCiAgIC8vIENvbXBhcmVz
IHRoZSBjb21tb24gcHJlZml4LgotICBjb25zdCBpbnQgc2hvcnRlcl9zaXplID0gZXhwZWN0ZWRf
ZGF0YV9zaXplIDw9IGFjdHVhbF9zaXplID8KKyAgY29uc3Qgc2l6ZV90IHNob3J0ZXJfc2l6ZSA9
IGV4cGVjdGVkX2RhdGFfc2l6ZSA8PSBhY3R1YWxfc2l6ZSA/CiAgICAgICBleHBlY3RlZF9kYXRh
X3NpemUgOiBhY3R1YWxfc2l6ZTsKLSAgaW50IGkgPSAwOworICBzaXplX3QgaSA9IDA7CiAgIGZv
ciAoOyBpIDwgc2hvcnRlcl9zaXplOyArK2kpIHsKICAgICBBU1NFUlRfU1RSRVEoZXhwZWN0ZWRf
ZGF0YVtpXSwgZGF0YVtpXS5jX3N0cigpKQogICAgICAgICA8PCAiYXQgcG9zaXRpb24gIiA8PCBp
OwpAQCAtMTk2LDEyICsxOTMsMTMgQEAgdm9pZCBWZXJpZnlSZXN1bHRzKGNvbnN0IHN0ZDo6dmVj
dG9yPFN0cmluZz4mIGRhdGEsCiAKICAgLy8gUHJpbnRzIGV4dHJhIGVsZW1lbnRzIGluIHRoZSBh
Y3R1YWwgZGF0YS4KICAgZm9yICg7IGkgPCBhY3R1YWxfc2l6ZTsgKytpKSB7Ci0gICAgcHJpbnRm
KCIgIEFjdHVhbCBldmVudCAjJWQ6ICVzXG4iLCBpLCBkYXRhW2ldLmNfc3RyKCkpOworICAgIHBy
aW50ZigiICBBY3R1YWwgZXZlbnQgIyVsdTogJXNcbiIsCisgICAgICAgIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGxvbmc+KGkpLCBkYXRhW2ldLmNfc3RyKCkpOwogICB9CiB9CiAKIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyICoqYXJndikgewotICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGV2ZW50czsKKyAg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGV2ZW50czsKICAgZ19ldmVudHMgPSAmZXZlbnRzOwog
ICBJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdC1tZXNzYWdlX3Rlc3QuY2MKaW5kZXggZTQyYjAzNDQ3ODcyZTNl
OGYwN2E5YTRhZGQyYmU1ZGQ0Njk4MGI1NS4uMTc1MjM4ZWY0ZTY0YWRiNGUxZjc4OGYxM2E0ZWQw
NGQ2MDY1N2UxOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dC1tZXNzYWdlX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dC1tZXNzYWdlX3Rlc3QuY2MKQEAgLTMxLDg4ICszMSw4MCBAQAogLy8KIC8vIFRlc3RzIGZvciB0
aGUgTWVzc2FnZSBjbGFzcy4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaD4KKyNp
bmNsdWRlICJndGVzdC9ndGVzdC1tZXNzYWdlLmgiCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5o
PgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIG5hbWVzcGFjZSB7CiAKIHVzaW5nIDo6dGVz
dGluZzo6TWVzc2FnZTsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0clN0cmVhbTsKLQot
Ly8gQSBoZWxwZXIgZnVuY3Rpb24gdGhhdCB0dXJucyBhIE1lc3NhZ2UgaW50byBhIEMgc3RyaW5n
LgotY29uc3QgY2hhciogVG9DU3RyaW5nKGNvbnN0IE1lc3NhZ2UmIG1zZykgewotICBzdGF0aWMg
dGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZyByZXN1bHQ7Ci0gIHJlc3VsdCA9IG1zZy5HZXRTdHJp
bmcoKTsKLSAgcmV0dXJuIHJlc3VsdC5jX3N0cigpOwotfQogCiAvLyBUZXN0cyB0aGUgdGVzdGlu
Zzo6TWVzc2FnZSBjbGFzcwogCiAvLyBUZXN0cyB0aGUgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KIFRF
U1QoTWVzc2FnZVRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvcikgewogICBjb25zdCBNZXNzYWdlIG1z
ZzsKLSAgRVhQRUNUX1NUUkVRKCIiLCBUb0NTdHJpbmcobXNnKSk7CisgIEVYUEVDVF9FUSgiIiwg
bXNnLkdldFN0cmluZygpKTsKIH0KIAogLy8gVGVzdHMgdGhlIGNvcHkgY29uc3RydWN0b3IuCiBU
RVNUKE1lc3NhZ2VUZXN0LCBDb3B5Q29uc3RydWN0b3IpIHsKICAgY29uc3QgTWVzc2FnZSBtc2cx
KCJIZWxsbyIpOwogICBjb25zdCBNZXNzYWdlIG1zZzIobXNnMSk7Ci0gIEVYUEVDVF9TVFJFUSgi
SGVsbG8iLCBUb0NTdHJpbmcobXNnMikpOworICBFWFBFQ1RfRVEoIkhlbGxvIiwgbXNnMi5HZXRT
dHJpbmcoKSk7CiB9CiAKIC8vIFRlc3RzIGNvbnN0cnVjdGluZyBhIE1lc3NhZ2UgZnJvbSBhIEMt
c3RyaW5nLgogVEVTVChNZXNzYWdlVGVzdCwgQ29uc3RydWN0c0Zyb21DU3RyaW5nKSB7CiAgIE1l
c3NhZ2UgbXNnKCJIZWxsbyIpOwotICBFWFBFQ1RfU1RSRVEoIkhlbGxvIiwgVG9DU3RyaW5nKG1z
ZykpOworICBFWFBFQ1RfRVEoIkhlbGxvIiwgbXNnLkdldFN0cmluZygpKTsKIH0KIAogLy8gVGVz
dHMgc3RyZWFtaW5nIGEgZmxvYXQuCiBURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zRmxvYXQpIHsK
LSAgY29uc3QgY2hhciogY29uc3QgcyA9IFRvQ1N0cmluZyhNZXNzYWdlKCkgPDwgMS4yMzQ1NkYg
PDwgIiAiIDw8IDIuMzQ1NjdGKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgcyA9IChNZXNzYWdlKCkg
PDwgMS4yMzQ1NkYgPDwgIiAiIDw8IDIuMzQ1NjdGKS5HZXRTdHJpbmcoKTsKICAgLy8gQm90aCBu
dW1iZXJzIHNob3VsZCBiZSBwcmludGVkIHdpdGggZW5vdWdoIHByZWNpc2lvbi4KLSAgRVhQRUNU
X1BSRURfRk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIjEuMjM0NTYwIiwgcyk7Ci0gIEVY
UEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIgMi4zNDU2NjkiLCBzKTsK
KyAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIjEuMjM0NTYwIiwg
cy5jX3N0cigpKTsKKyAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywg
IiAyLjM0NTY2OSIsIHMuY19zdHIoKSk7CiB9CiAKIC8vIFRlc3RzIHN0cmVhbWluZyBhIGRvdWJs
ZS4KIFRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNEb3VibGUpIHsKLSAgY29uc3QgY2hhciogY29u
c3QgcyA9IFRvQ1N0cmluZyhNZXNzYWdlKCkgPDwgMTI2MDU3MDg4MC40NTU1NDk3IDw8ICIgIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDEyNjA1NzIyNjUuMTk1NDUzNCk7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHMgPSAoTWVzc2FnZSgpIDw8IDEyNjA1NzA4ODAuNDU1NTQ5
NyA8PCAiICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAxMjYwNTcyMjY1
LjE5NTQ1MzQpLkdldFN0cmluZygpOwogICAvLyBCb3RoIG51bWJlcnMgc2hvdWxkIGJlIHByaW50
ZWQgd2l0aCBlbm91Z2ggcHJlY2lzaW9uLgotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6
OklzU3Vic3RyaW5nLCAiMTI2MDU3MDg4MC40NSIsIHMpOwotICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KHRlc3Rpbmc6OklzU3Vic3RyaW5nLCAiIDEyNjA1NzIyNjUuMTkiLCBzKTsKKyAgRVhQRUNUX1BS
RURfRk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIjEyNjA1NzA4ODAuNDUiLCBzLmNfc3Ry
KCkpOworICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6OklzU3Vic3RyaW5nLCAiIDEyNjA1
NzIyNjUuMTkiLCBzLmNfc3RyKCkpOwogfQogCiAvLyBUZXN0cyBzdHJlYW1pbmcgYSBub24tY2hh
ciBwb2ludGVyLgogVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc1BvaW50ZXIpIHsKICAgaW50IG4g
PSAwOwogICBpbnQqIHAgPSAmbjsKLSAgRVhQRUNUX1NUUk5FKCIobnVsbCkiLCBUb0NTdHJpbmco
TWVzc2FnZSgpIDw8IHApKTsKKyAgRVhQRUNUX05FKCIobnVsbCkiLCAoTWVzc2FnZSgpIDw8IHAp
LkdldFN0cmluZygpKTsKIH0KIAogLy8gVGVzdHMgc3RyZWFtaW5nIGEgTlVMTCBub24tY2hhciBw
b2ludGVyLgogVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc051bGxQb2ludGVyKSB7CiAgIGludCog
cCA9IE5VTEw7Ci0gIEVYUEVDVF9TVFJFUSgiKG51bGwpIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8
PCBwKSk7CisgIEVYUEVDVF9FUSgiKG51bGwpIiwgKE1lc3NhZ2UoKSA8PCBwKS5HZXRTdHJpbmco
KSk7CiB9CiAKIC8vIFRlc3RzIHN0cmVhbWluZyBhIEMgc3RyaW5nLgogVEVTVChNZXNzYWdlVGVz
dCwgU3RyZWFtc0NTdHJpbmcpIHsKLSAgRVhQRUNUX1NUUkVRKCJGb28iLCBUb0NTdHJpbmcoTWVz
c2FnZSgpIDw8ICJGb28iKSk7CisgIEVYUEVDVF9FUSgiRm9vIiwgKE1lc3NhZ2UoKSA8PCAiRm9v
IikuR2V0U3RyaW5nKCkpOwogfQogCiAvLyBUZXN0cyBzdHJlYW1pbmcgYSBOVUxMIEMgc3RyaW5n
LgogVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc051bGxDU3RyaW5nKSB7CiAgIGNoYXIqIHAgPSBO
VUxMOwotICBFWFBFQ1RfU1RSRVEoIihudWxsKSIsIFRvQ1N0cmluZyhNZXNzYWdlKCkgPDwgcCkp
OworICBFWFBFQ1RfRVEoIihudWxsKSIsIChNZXNzYWdlKCkgPDwgcCkuR2V0U3RyaW5nKCkpOwog
fQogCiAvLyBUZXN0cyBzdHJlYW1pbmcgc3RkOjpzdHJpbmcuCiBURVNUKE1lc3NhZ2VUZXN0LCBT
dHJlYW1zU3RyaW5nKSB7CiAgIGNvbnN0IDo6c3RkOjpzdHJpbmcgc3RyKCJIZWxsbyIpOwotICBF
WFBFQ1RfU1RSRVEoIkhlbGxvIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCBzdHIpKTsKKyAgRVhQ
RUNUX0VRKCJIZWxsbyIsIChNZXNzYWdlKCkgPDwgc3RyKS5HZXRTdHJpbmcoKSk7CiB9CiAKIC8v
IFRlc3RzIHRoYXQgd2UgY2FuIG91dHB1dCBzdHJpbmdzIGNvbnRhaW5pbmcgZW1iZWRkZWQgTlVM
cy4KQEAgLTEyMSw0MiArMTEzLDQyIEBAIFRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNTdHJpbmdX
aXRoRW1iZWRkZWROVUwpIHsKICAgICAgICJIZXJlJ3MgYSBOVUxcMCBhbmQgc29tZSBtb3JlIHN0
cmluZyI7CiAgIGNvbnN0IDo6c3RkOjpzdHJpbmcgc3RyaW5nX3dpdGhfbnVsKGNoYXJfYXJyYXlf
d2l0aF9udWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihj
aGFyX2FycmF5X3dpdGhfbnVsKSAtIDEpOwotICBFWFBFQ1RfU1RSRVEoIkhlcmUncyBhIE5VTFxc
MCBhbmQgc29tZSBtb3JlIHN0cmluZyIsCi0gICAgICAgICAgICAgICBUb0NTdHJpbmcoTWVzc2Fn
ZSgpIDw8IHN0cmluZ193aXRoX251bCkpOworICBFWFBFQ1RfRVEoIkhlcmUncyBhIE5VTFxcMCBh
bmQgc29tZSBtb3JlIHN0cmluZyIsCisgICAgICAgICAgICAoTWVzc2FnZSgpIDw8IHN0cmluZ193
aXRoX251bCkuR2V0U3RyaW5nKCkpOwogfQogCiAvLyBUZXN0cyBzdHJlYW1pbmcgYSBOVUwgY2hh
ci4KIFRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNOVUxDaGFyKSB7Ci0gIEVYUEVDVF9TVFJFUSgi
XFwwIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCAnXDAnKSk7CisgIEVYUEVDVF9FUSgiXFwwIiwg
KE1lc3NhZ2UoKSA8PCAnXDAnKS5HZXRTdHJpbmcoKSk7CiB9CiAKIC8vIFRlc3RzIHN0cmVhbWlu
ZyBpbnQuCiBURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zSW50KSB7Ci0gIEVYUEVDVF9TVFJFUSgi
MTIzIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCAxMjMpKTsKKyAgRVhQRUNUX0VRKCIxMjMiLCAo
TWVzc2FnZSgpIDw8IDEyMykuR2V0U3RyaW5nKCkpOwogfQogCiAvLyBUZXN0cyB0aGF0IGJhc2lj
IElPIG1hbmlwdWxhdG9ycyAoZW5kbCwgZW5kcywgYW5kIGZsdXNoKSBjYW4gYmUKIC8vIHN0cmVh
bWVkIHRvIE1lc3NhZ2UuCiBURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zQmFzaWNJb01hbmlwKSB7
Ci0gIEVYUEVDVF9TVFJFUSgiTGluZSAxLlxuQSBOVUwgY2hhciBcXDAgaW4gbGluZSAyLiIsCi0g
ICAgICAgICAgICAgICBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8ICJMaW5lIDEuIiA8PCBzdGQ6OmVu
ZGwKKyAgRVhQRUNUX0VRKCJMaW5lIDEuXG5BIE5VTCBjaGFyIFxcMCBpbiBsaW5lIDIuIiwKKyAg
ICAgICAgICAgICAgIChNZXNzYWdlKCkgPDwgIkxpbmUgMS4iIDw8IHN0ZDo6ZW5kbAogICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8ICJBIE5VTCBjaGFyICIgPDwgc3RkOjplbmRzIDw8IHN0ZDo6
Zmx1c2gKLSAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGluIGxpbmUgMi4iKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgIiBpbiBsaW5lIDIuIikuR2V0U3RyaW5nKCkpOwogfQog
CiAvLyBUZXN0cyBNZXNzYWdlOjpHZXRTdHJpbmcoKQogVEVTVChNZXNzYWdlVGVzdCwgR2V0U3Ry
aW5nKSB7CiAgIE1lc3NhZ2UgbXNnOwogICBtc2cgPDwgMSA8PCAiIGxhbWIiOwotICBFWFBFQ1Rf
U1RSRVEoIjEgbGFtYiIsIG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKCIx
IGxhbWIiLCBtc2cuR2V0U3RyaW5nKCkpOwogfQogCiAvLyBUZXN0cyBzdHJlYW1pbmcgYSBNZXNz
YWdlIG9iamVjdCB0byBhbiBvc3RyZWFtLgogVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc1RvT1N0
cmVhbSkgewogICBNZXNzYWdlIG1zZygiSGVsbG8iKTsKLSAgU3RyU3RyZWFtIHNzOworICA6OnN0
ZDo6c3RyaW5nc3RyZWFtIHNzOwogICBzcyA8PCBtc2c7Ci0gIEVYUEVDVF9TVFJFUSgiSGVsbG8i
LCB0ZXN0aW5nOjppbnRlcm5hbDo6U3RyU3RyZWFtVG9TdHJpbmcoJnNzKS5jX3N0cigpKTsKKyAg
RVhQRUNUX0VRKCJIZWxsbyIsIHRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmdTdHJlYW1Ub1N0cmlu
Zygmc3MpKTsKIH0KIAogLy8gVGVzdHMgdGhhdCBhIE1lc3NhZ2Ugb2JqZWN0IGRvZXNuJ3QgdGFr
ZSB1cCB0b28gbXVjaCBzdGFjayBzcGFjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3Qtb3B0aW9uc190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdC1vcHRpb25zX3Rlc3QuY2MKaW5kZXggMmUyY2JjOTJlNWUwMjhjNzRjODJm
MDc1MGZkZDhiZGZiNGU4ODMxZS4uNTU4NmRjM2IxYjI1YzliOGVkYWZmNTAxZDk2OTdhYmVhYmIy
NWYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1vcHRp
b25zX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1vcHRp
b25zX3Rlc3QuY2MKQEAgLTM4LDEyICszOCwxMiBAQAogLy8gbWFrZS1maWxlcyBvbiBXaW5kb3dz
IGFuZCBvdGhlciBwbGF0Zm9ybXMuIERvIG5vdCAjaW5jbHVkZSB0aGlzIGZpbGUKIC8vIGFueXdo
ZXJlIGVsc2UhCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCiAKICNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KKyMgaW5jbHVkZSA8d2luZG93cy5oPgogI2VsaWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1
ZGUgPGRpcmVjdC5oPgorIyBpbmNsdWRlIDxkaXJlY3QuaD4KICNlbmRpZiAgLy8gR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUKIAogLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0
IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwpAQCAtNzgsMTQgKzc4LDE0IEBAIFRFU1QoWG1sT3V0
cHV0VGVzdCwgR2V0T3V0cHV0Rm9ybWF0KSB7CiAKIFRFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0
cHV0RmlsZURlZmF1bHQpIHsKICAgR1RFU1RfRkxBRyhvdXRwdXQpID0gIiI7Ci0gIEVYUEVDVF9T
VFJFUShHZXRBYnNvbHV0ZVBhdGhPZihGaWxlUGF0aCgidGVzdF9kZXRhaWwueG1sIikpLmNfc3Ry
KCksCi0gICAgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0
cHV0RmlsZSgpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoR2V0QWJzb2x1dGVQYXRoT2YoRmlsZVBh
dGgoInRlc3RfZGV0YWlsLnhtbCIpKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0
aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOwogfQogCiBURVNUKFhtbE91dHB1
dFRlc3QsIEdldE91dHB1dEZpbGVTaW5nbGVGaWxlKSB7CiAgIEdURVNUX0ZMQUcob3V0cHV0KSA9
ICJ4bWw6ZmlsZW5hbWUuYWJjIjsKLSAgRVhQRUNUX1NUUkVRKEdldEFic29sdXRlUGF0aE9mKEZp
bGVQYXRoKCJmaWxlbmFtZS5hYmMiKSkuY19zdHIoKSwKLSAgICAgICAgICAgICAgIFVuaXRUZXN0
T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSk7CisgIEVYUEVD
VF9FUShHZXRBYnNvbHV0ZVBhdGhPZihGaWxlUGF0aCgiZmlsZW5hbWUuYWJjIikpLnN0cmluZygp
LAorICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZp
bGUoKSk7CiB9CiAKIFRFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0RmlsZUZyb21EaXJlY3Rv
cnlQYXRoKSB7CkBAIC05Myw4ICs5Myw5IEBAIFRFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0
RmlsZUZyb21EaXJlY3RvcnlQYXRoKSB7CiAgIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdGVkX291
dHB1dF9maWxlID0KICAgICAgIEdldEFic29sdXRlUGF0aE9mKAogICAgICAgICAgIEZpbGVQYXRo
KHN0ZDo6c3RyaW5nKCJwYXRoIikgKyBHVEVTVF9QQVRIX1NFUF8gKwotICAgICAgICAgICAgICAg
ICAgIEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLmNfc3RyKCkgKyAiLnhtbCIpKS5jX3N0cigp
OwotICBjb25zdCBTdHJpbmcmIG91dHB1dF9maWxlID0gVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNv
bHV0ZVBhdGhUb091dHB1dEZpbGUoKTsKKyAgICAgICAgICAgICAgICAgICBHZXRDdXJyZW50RXhl
Y3V0YWJsZU5hbWUoKS5zdHJpbmcoKSArICIueG1sIikpLnN0cmluZygpOworICBjb25zdCBzdGQ6
OnN0cmluZyYgb3V0cHV0X2ZpbGUgPQorICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0
ZVBhdGhUb091dHB1dEZpbGUoKTsKICNpZiBHVEVTVF9PU19XSU5ET1dTCiAgIEVYUEVDVF9TVFJD
QVNFRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUuY19zdHIoKSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7
CiAjZWxzZQpAQCAtMTAzLDcgKzEwNCw3IEBAIFRFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0
RmlsZUZyb21EaXJlY3RvcnlQYXRoKSB7CiB9CiAKIFRFU1QoT3V0cHV0RmlsZUhlbHBlcnNUZXN0
LCBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUpIHsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZXhlX3N0
ciA9IEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLmNfc3RyKCk7CisgIGNvbnN0IHN0ZDo6c3Ry
aW5nIGV4ZV9zdHIgPSBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmcoKTsKICNpZiBH
VEVTVF9PU19XSU5ET1dTCiAgIGNvbnN0IGJvb2wgc3VjY2VzcyA9CiAgICAgICBfc3RyY21waSgi
Z3Rlc3Qtb3B0aW9uc190ZXN0IiwgZXhlX3N0ci5jX3N0cigpKSA9PSAwIHx8CkBAIC0xMjksMTIg
KzEzMCwxMiBAQCBjbGFzcyBYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0IDogcHVibGljIFRlc3Qgewog
ICAgIG9yaWdpbmFsX3dvcmtpbmdfZGlyXyA9IEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCk7CiAg
ICAgcG9zaXg6OkNoRGlyKCIuLiIpOwogICAgIC8vIFRoaXMgd2lsbCBtYWtlIHRoZSB0ZXN0IGZh
aWwgaWYgcnVuIGZyb20gdGhlIHJvb3QgZGlyZWN0b3J5LgotICAgIEVYUEVDVF9TVFJORShvcmln
aW5hbF93b3JraW5nX2Rpcl8uY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgRmlsZVBhdGg6Okdl
dEN1cnJlbnREaXIoKS5jX3N0cigpKTsKKyAgICBFWFBFQ1RfTkUob3JpZ2luYWxfd29ya2luZ19k
aXJfLnN0cmluZygpLAorICAgICAgICAgICAgICBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpLnN0
cmluZygpKTsKICAgfQogCiAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBwb3NpeDo6
Q2hEaXIob3JpZ2luYWxfd29ya2luZ19kaXJfLmNfc3RyKCkpOworICAgIHBvc2l4OjpDaERpcihv
cmlnaW5hbF93b3JraW5nX2Rpcl8uc3RyaW5nKCkuY19zdHIoKSk7CiAgIH0KIAogICBGaWxlUGF0
aCBvcmlnaW5hbF93b3JraW5nX2Rpcl87CkBAIC0xNDIsMjMgKzE0MywyMyBAQCBjbGFzcyBYbWxP
dXRwdXRDaGFuZ2VEaXJUZXN0IDogcHVibGljIFRlc3QgewogCiBURVNUX0YoWG1sT3V0cHV0Q2hh
bmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoRGVmYXVsdCkgewogICBH
VEVTVF9GTEFHKG91dHB1dCkgPSAiIjsKLSAgRVhQRUNUX1NUUkVRKEZpbGVQYXRoOjpDb25jYXRQ
YXRocyhvcmlnaW5hbF93b3JraW5nX2Rpcl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRmlsZVBhdGgoInRlc3RfZGV0YWlsLnhtbCIpKS5jX3N0cigpLAotICAgICAgICAg
ICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0
cigpKTsKKyAgRVhQRUNUX0VRKEZpbGVQYXRoOjpDb25jYXRQYXRocyhvcmlnaW5hbF93b3JraW5n
X2Rpcl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoInRlc3Rf
ZGV0YWlsLnhtbCIpKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0
QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOwogfQogCiBURVNUX0YoWG1sT3V0cHV0Q2hhbmdl
RGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoRGVmYXVsdFhNTCkgewogICBH
VEVTVF9GTEFHKG91dHB1dCkgPSAieG1sIjsKLSAgRVhQRUNUX1NUUkVRKEZpbGVQYXRoOjpDb25j
YXRQYXRocyhvcmlnaW5hbF93b3JraW5nX2Rpcl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRmlsZVBhdGgoInRlc3RfZGV0YWlsLnhtbCIpKS5jX3N0cigpLAotICAgICAg
ICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5j
X3N0cigpKTsKKyAgRVhQRUNUX0VRKEZpbGVQYXRoOjpDb25jYXRQYXRocyhvcmlnaW5hbF93b3Jr
aW5nX2Rpcl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoInRl
c3RfZGV0YWlsLnhtbCIpKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6
R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOwogfQogCiBURVNUX0YoWG1sT3V0cHV0Q2hh
bmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoUmVsYXRpdmVGaWxlKSB7
CiAgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6ZmlsZW5hbWUuYWJjIjsKLSAgRVhQRUNUX1NU
UkVRKEZpbGVQYXRoOjpDb25jYXRQYXRocyhvcmlnaW5hbF93b3JraW5nX2Rpcl8sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImZpbGVuYW1lLmFiYyIpKS5j
X3N0cigpLAotICAgICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhU
b091dHB1dEZpbGUoKS5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKEZpbGVQYXRoOjpDb25jYXRQYXRo
cyhvcmlnaW5hbF93b3JraW5nX2Rpcl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRmlsZVBhdGgoImZpbGVuYW1lLmFiYyIpKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRU
ZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOwogfQogCiBURVNUX0Yo
WG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoUmVs
YXRpdmVQYXRoKSB7CkBAIC0xNjcsOCArMTY4LDkgQEAgVEVTVF9GKFhtbE91dHB1dENoYW5nZURp
clRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aFJlbGF0aXZlUGF0aCkgewogICAg
ICAgRmlsZVBhdGg6OkNvbmNhdFBhdGhzKAogICAgICAgICAgIG9yaWdpbmFsX3dvcmtpbmdfZGly
XywKICAgICAgICAgICBGaWxlUGF0aChzdGQ6OnN0cmluZygicGF0aCIpICsgR1RFU1RfUEFUSF9T
RVBfICsKLSAgICAgICAgICAgICAgICAgICBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5jX3N0
cigpICsgIi54bWwiKSkuY19zdHIoKTsKLSAgY29uc3QgU3RyaW5nJiBvdXRwdXRfZmlsZSA9IFVu
aXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7CisgICAgICAgICAg
ICAgICAgICAgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKyAiLnhtbCIpKS5z
dHJpbmcoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9maWxlID0KKyAgICAgIFVuaXRU
ZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7CiAjaWYgR1RFU1RfT1Nf
V0lORE9XUwogICBFWFBFQ1RfU1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxlLmNfc3RyKCks
IG91dHB1dF9maWxlLmNfc3RyKCkpOwogI2Vsc2UKQEAgLTE3OSwxMiArMTgxLDEyIEBAIFRFU1Rf
RihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhS
ZWxhdGl2ZVBhdGgpIHsKIFRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9y
aWdpbmFsV29ya2luZ0RpcldpdGhBYnNvbHV0ZUZpbGUpIHsKICNpZiBHVEVTVF9PU19XSU5ET1dT
CiAgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6YzpcXHRtcFxcZmlsZW5hbWUuYWJjIjsKLSAg
RVhQRUNUX1NUUkVRKEZpbGVQYXRoKCJjOlxcdG1wXFxmaWxlbmFtZS5hYmMiKS5jX3N0cigpLAot
ICAgICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZp
bGUoKS5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKEZpbGVQYXRoKCJjOlxcdG1wXFxmaWxlbmFtZS5h
YmMiKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQ
YXRoVG9PdXRwdXRGaWxlKCkpOwogI2Vsc2UKICAgR1RFU1RfRkxBRyhvdXRwdXQpID0ieG1sOi90
bXAvZmlsZW5hbWUuYWJjIjsKLSAgRVhQRUNUX1NUUkVRKEZpbGVQYXRoKCIvdG1wL2ZpbGVuYW1l
LmFiYyIpLmNfc3RyKCksCi0gICAgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29s
dXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoRmlsZVBhdGgoIi90
bXAvZmlsZW5hbWUuYWJjIikuc3RyaW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6
OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKICNlbmRpZgogfQogCkBAIC0xOTcsOCAr
MTk5LDkgQEAgVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxX
b3JraW5nRGlyV2l0aEFic29sdXRlUGF0aCkgewogCiAgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4
bWw6IiArIHBhdGg7CiAgIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdGVkX291dHB1dF9maWxlID0K
LSAgICAgIHBhdGggKyBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5jX3N0cigpICsgIi54bWwi
OwotICBjb25zdCBTdHJpbmcmIG91dHB1dF9maWxlID0gVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNv
bHV0ZVBhdGhUb091dHB1dEZpbGUoKTsKKyAgICAgIHBhdGggKyBHZXRDdXJyZW50RXhlY3V0YWJs
ZU5hbWUoKS5zdHJpbmcoKSArICIueG1sIjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9m
aWxlID0KKyAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxl
KCk7CiAKICNpZiBHVEVTVF9PU19XSU5ET1dTCiAgIEVYUEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWRf
b3V0cHV0X2ZpbGUuY19zdHIoKSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3QyX3Rlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3QyX3Rlc3QuY2MKaW5k
ZXggY2NiNmNmYWM5ZTc2YjgyN2YxN2FlMTE4MjllMjM2ZDZmOTdlZTY0Ni4uNGE3ODJmZTcwODM3
YWNhODRiNDc1YTM0NTVhMWU1NGFiODI4Mzg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdDJfdGVzdC5jYwpAQCAtMzIsNyArMzIs
NyBAQAogLy8gVGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZi4gIFRoaXMgdmVyaWZpZXMgdGhh
dCB0aGUgYmFzaWMgY29uc3RydWN0cyBvZgogLy8gR29vZ2xlIFRlc3Qgd29yay4KIAotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2luY2x1ZGUg
InRlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MKaW5kZXggZDBhMGU3MzVj
MGI5ODhlZjFhMjJiN2Q3YWU2OTAyNzAxOGJkYjhjYi4uOGIyNzhiYjk0Yjg1NmY3MWJhOGE5MmU3
NzhiYWI0ZDJmMzAyMmI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MKQEAgLTMzLDIzICszMywyMyBAQAogLy8gZ2Vu
ZXJhdG9ycyBvYmplY3RzIHByb2R1Y2UgY29ycmVjdCBwYXJhbWV0ZXIgc2VxdWVuY2VzIGFuZCB0
aGF0CiAvLyBHb29nbGUgVGVzdCBydW50aW1lIGluc3RhbnRpYXRlcyBjb3JyZWN0IHRlc3RzIGZy
b20gdGhvc2Ugc2VxdWVuY2VzLgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgogCiAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKIAotI2luY2x1ZGUg
PGFsZ29yaXRobT4KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxsaXN0PgotI2luY2x1
ZGUgPHNzdHJlYW0+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KKyMgaW5j
bHVkZSA8YWxnb3JpdGhtPgorIyBpbmNsdWRlIDxpb3N0cmVhbT4KKyMgaW5jbHVkZSA8bGlzdD4K
KyMgaW5jbHVkZSA8c3N0cmVhbT4KKyMgaW5jbHVkZSA8c3RyaW5nPgorIyBpbmNsdWRlIDx2ZWN0
b3I+CiAKIC8vIFRvIGluY2x1ZGUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmguCi0jZGVmaW5lIEdURVNU
X0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIiAg
Ly8gZm9yIFVuaXRUZXN0T3B0aW9ucwotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXworIyBk
ZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKKyMgaW5jbHVkZSAic3JjL2d0ZXN0LWludGVy
bmFsLWlubC5oIiAgLy8gZm9yIFVuaXRUZXN0T3B0aW9ucworIyB1bmRlZiBHVEVTVF9JTVBMRU1F
TlRBVElPTl8KIAotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmgiCisjIGlu
Y2x1ZGUgInRlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmgiCiAKIHVzaW5nIDo6c3RkOjp2ZWN0
b3I7CiB1c2luZyA6OnN0ZDo6c29ydDsKQEAgLTYyLDEyICs2MiwxMiBAQCB1c2luZyA6OnRlc3Rp
bmc6OlRlc3RXaXRoUGFyYW07CiB1c2luZyA6OnRlc3Rpbmc6OlZhbHVlczsKIHVzaW5nIDo6dGVz
dGluZzo6VmFsdWVzSW47CiAKLSNpZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNf
Q09NQklORQogdXNpbmcgOjp0ZXN0aW5nOjpDb21iaW5lOwotdXNpbmcgOjpzdGQ6OnRyMTo6Z2V0
OwotdXNpbmcgOjpzdGQ6OnRyMTo6bWFrZV90dXBsZTsKLXVzaW5nIDo6c3RkOjp0cjE6OnR1cGxl
OwotI2VuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQordXNpbmcgOjp0ZXN0aW5nOjpnZXQ7Cit1
c2luZyA6OnRlc3Rpbmc6Om1ha2VfdHVwbGU7Cit1c2luZyA6OnRlc3Rpbmc6OnR1cGxlOworIyBl
bmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKIAogdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
UGFyYW1HZW5lcmF0b3I7CiB1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml0VGVzdE9wdGlv
bnM7CkBAIC04NSw3ICs4NSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICByZXR1cm4gc3Ry
ZWFtLnN0cigpOwogfQogCi0jaWYgR1RFU1RfSEFTX0NPTUJJTkUKKyMgaWYgR1RFU1RfSEFTX0NP
TUJJTkUKIAogLy8gVGhlc2Ugb3ZlcmxvYWRzIGFsbG93IHByaW50aW5nIHR1cGxlcyBpbiBvdXIg
dGVzdHMuICBXZSBjYW5ub3QKIC8vIGRlZmluZSBhbiBvcGVyYXRvcjw8IGZvciB0dXBsZXMsIGFz
IHRoYXQgZGVmaW5pdGlvbiBuZWVkcyB0byBiZSBpbgpAQCAtMTIxLDcgKzEyMSw3IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwg
dHlwZW5hbWUgVDUsCiAgIHJldHVybiBzdHJlYW0uc3RyKCk7CiB9CiAKLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX0NPTUJJTkUKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCiAKIC8vIFZlcmlm
aWVzIHRoYXQgYSBzZXF1ZW5jZSBnZW5lcmF0ZWQgYnkgdGhlIGdlbmVyYXRvciBhbmQgYWNjZXNz
ZWQKIC8vIHZpYSB0aGUgaXRlcmF0b3Igb2JqZWN0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIG9uZSB1
c2luZyBHb29nbGUgVGVzdApAQCAtMjgwLDEwICsyODAsMTAgQEAgY2xhc3MgRG9nQWRkZXIgewog
ICBib29sIG9wZXJhdG9yPChjb25zdCBEb2dBZGRlciYgb3RoZXIpIGNvbnN0IHsKICAgICByZXR1
cm4gdmFsdWVfIDwgb3RoZXIudmFsdWVfOwogICB9Ci0gIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJu
YWw6OlN0cmluZyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KKyAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CiAKICBwcml2YXRlOgot
ICA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmcgdmFsdWVfOworICBzdGQ6OnN0cmluZyB2YWx1
ZV87CiB9OwogCiBURVNUKFJhbmdlVGVzdCwgV29ya3NXaXRoQUN1c3RvbVR5cGUpIHsKQEAgLTQ1
Nyw3ICs0NTcsNyBAQCBURVNUKEJvb2xUZXN0LCBCb29sV29ya3MpIHsKICAgVmVyaWZ5R2VuZXJh
dG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKIH0KIAotI2lmIEdURVNUX0hBU19DT01CSU5FCisj
IGlmIEdURVNUX0hBU19DT01CSU5FCiAKIC8vIFRlc3RzIHRoYXQgQ29tYmluZSgpIHdpdGggdHdv
IHBhcmFtZXRlcnMgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KIFRFU1QoQ29tYmlu
ZVRlc3QsIENvbWJpbmVXaXRoVHdvUGFyYW1ldGVycykgewpAQCAtNTQyLDcgKzU0Miw3IEBAIFRF
U1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoTWF4TnVtYmVyT2ZQYXJhbWV0ZXJzKSB7CiAgIFZl
cmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7CiB9CiAKLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX0NPTUJJTkUKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCiAKIC8vIFRlc3Rz
IHRoYXQgYW4gZ2VuZXJhdG9yIHByb2R1Y2VzIGNvcnJlY3Qgc2VxdWVuY2UgYWZ0ZXIgYmVpbmcK
IC8vIGFzc2lnbmVkIGZyb20gYW5vdGhlciBnZW5lcmF0b3IuCkBAIC02MDYsNiArNjA2LDcgQEAg
Y2xhc3MgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudCA6IHB1YmxpYyA6OnRlc3Rpbmc6OkVudmly
b25tZW50IHsKICAgICAgICAgICA8PCAiaGFzIG5vdCBiZWVuIHJ1biBhcyBleHBlY3RlZC4iOwog
ICAgIH0KICAgfQorCiAgcHJpdmF0ZToKICAgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudCgpIDog
Zml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3VudF8oMCksIHNldF91cF9jb3VudF8oMCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlYXJfZG93bl9jb3VudF8oMCksIHRlc3RfYm9keV9j
b3VudF8oMCkge30KQEAgLTY3NCw2ICs2NzUsNyBAQCBjbGFzcyBUZXN0R2VuZXJhdGlvblRlc3Qg
OiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsKIAogICAgIEVYUEVDVF9UUlVFKGNvbGxlY3Rl
ZF9wYXJhbWV0ZXJzXyA9PSBleHBlY3RlZF92YWx1ZXMpOwogICB9CisKICBwcm90ZWN0ZWQ6CiAg
IGludCBjdXJyZW50X3BhcmFtZXRlcl87CiAgIHN0YXRpYyB2ZWN0b3I8aW50PiBjb2xsZWN0ZWRf
cGFyYW1ldGVyc187CkBAIC03OTIsMTkgKzc5NCwyMzcgQEAgSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoRm91ckVsZW1TZXF1ZW5jZSwgU2VwYXJhdGVJbnN0YW5jZVRlc3QsIFJhbmdlKDEsIDQpKTsK
IC8vIHNlcXVlbmNlIGVsZW1lbnQgdXNlZCB0byBpbnN0YW50aWF0ZSB0aGUgdGVzdC4KIGNsYXNz
IE5hbWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHt9OwogCi1URVNUX1AoTmFt
aW5nVGVzdCwgVGVzdHNBcmVOYW1lZEFwcHJvcHJpYXRlbHkpIHsKK1RFU1RfUChOYW1pbmdUZXN0
LCBUZXN0c1JlcG9ydENvcnJlY3ROYW1lc0FuZFBhcmFtZXRlcnMpIHsKICAgY29uc3QgOjp0ZXN0
aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KICAgICAgOjp0ZXN0aW5nOjpVbml0VGVz
dDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKIAogICBFWFBFQ1RfU1RSRVEo
Ilplcm9Ub0ZpdmVTZXF1ZW5jZS9OYW1pbmdUZXN0IiwgdGVzdF9pbmZvLT50ZXN0X2Nhc2VfbmFt
ZSgpKTsKIAotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8ICJUZXN0c0FyZU5hbWVkQXBwcm9wcmlh
dGVseS8iIDw8IEdldFBhcmFtKCk7Ci0gIEVYUEVDVF9TVFJFUShtc2cuR2V0U3RyaW5nKCkuY19z
dHIoKSwgdGVzdF9pbmZvLT5uYW1lKCkpOworICBNZXNzYWdlIGluZGV4X3N0cmVhbTsKKyAgaW5k
ZXhfc3RyZWFtIDw8ICJUZXN0c1JlcG9ydENvcnJlY3ROYW1lc0FuZFBhcmFtZXRlcnMvIiA8PCBH
ZXRQYXJhbSgpOworICBFWFBFQ1RfU1RSRVEoaW5kZXhfc3RyZWFtLkdldFN0cmluZygpLmNfc3Ry
KCksIHRlc3RfaW5mby0+bmFtZSgpKTsKKworICBFWFBFQ1RfRVEoOjp0ZXN0aW5nOjpQcmludFRv
U3RyaW5nKEdldFBhcmFtKCkpLCB0ZXN0X2luZm8tPnZhbHVlX3BhcmFtKCkpOwogfQogCiBJTlNU
QU5USUFURV9URVNUX0NBU0VfUChaZXJvVG9GaXZlU2VxdWVuY2UsIE5hbWluZ1Rlc3QsIFJhbmdl
KDAsIDUpKTsKIAorLy8gVGVzdHMgdGhhdCB1c2VyIHN1cHBsaWVkIGN1c3RvbSBwYXJhbWV0ZXIg
bmFtZXMgYXJlIHdvcmtpbmcgY29ycmVjdGx5LgorLy8gUnVucyB0aGUgdGVzdCB3aXRoIGEgYnVp
bHRpbiBoZWxwZXIgbWV0aG9kIHdoaWNoIHVzZXMgUHJpbnRUb1N0cmluZywKKy8vIGFzIHdlbGwg
YXMgYSBjdXN0b20gZnVuY3Rpb24gYW5kIGN1c3RvbSBmdW5jdG9yIHRvIGVuc3VyZSBhbGwgcG9z
c2libGUKKy8vIHVzZXMgd29yayBjb3JyZWN0bHkuCitjbGFzcyBDdXN0b21GdW5jdG9yTmFtaW5n
VGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPHN0ZDo6c3RyaW5nPiB7fTsKK1RFU1RfUChDdXN0
b21GdW5jdG9yTmFtaW5nVGVzdCwgQ3VzdG9tVGVzdE5hbWVzKSB7fQorCitzdHJ1Y3QgQ3VzdG9t
UGFyYW1OYW1lRnVuY3RvciB7CisgIHN0ZDo6c3RyaW5nIG9wZXJhdG9yKCkoY29uc3QgOjp0ZXN0
aW5nOjpUZXN0UGFyYW1JbmZvPHN0ZDo6c3RyaW5nPiYgaW5mbykgeworICAgIHJldHVybiBpbmZv
LnBhcmFtOworICB9Cit9OworCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChDdXN0b21QYXJhbU5h
bWVGdW5jdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRnVuY3Rvck5hbWluZ1Rl
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoc3RkOjpzdHJpbmcoIkZ1bmN0b3JO
YW1lIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tUGFyYW1OYW1lRnVuY3Rvcigp
KTsKKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQWxsQWxsb3dlZENoYXJhY3RlcnMsCisgICAg
ICAgICAgICAgICAgICAgICAgICBDdXN0b21GdW5jdG9yTmFtaW5nVGVzdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbHVlcygiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjAxMjM0NTY3ODkwXyIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgQ3VzdG9tUGFyYW1OYW1lRnVuY3RvcigpKTsKKworaW5saW5lIHN0ZDo6
c3RyaW5nIEN1c3RvbVBhcmFtTmFtZUZ1bmN0aW9uKAorICAgIGNvbnN0IDo6dGVzdGluZzo6VGVz
dFBhcmFtSW5mbzxzdGQ6OnN0cmluZz4mIGluZm8pIHsKKyAgcmV0dXJuIGluZm8ucGFyYW07Cit9
CisKK2NsYXNzIEN1c3RvbUZ1bmN0aW9uTmFtaW5nVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFt
PHN0ZDo6c3RyaW5nPiB7fTsKK1RFU1RfUChDdXN0b21GdW5jdGlvbk5hbWluZ1Rlc3QsIEN1c3Rv
bVRlc3ROYW1lcykge30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQ3VzdG9tUGFyYW1OYW1l
RnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GdW5jdGlvbk5hbWluZ1Rl
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoc3RkOjpzdHJpbmcoIkZ1bmN0aW9u
TmFtZSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbVBhcmFtTmFtZUZ1bmN0aW9u
KTsKKworI2lmIEdURVNUX0xBTkdfQ1hYMTEKKworLy8gVGVzdCBjdXN0b20gbmFtaW5nIHdpdGgg
YSBsYW1iZGEKKworY2xhc3MgQ3VzdG9tTGFtYmRhTmFtaW5nVGVzdCA6IHB1YmxpYyBUZXN0V2l0
aFBhcmFtPHN0ZDo6c3RyaW5nPiB7fTsKK1RFU1RfUChDdXN0b21MYW1iZGFOYW1pbmdUZXN0LCBD
dXN0b21UZXN0TmFtZXMpIHt9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEN1c3RvbVBhcmFt
TmFtZUxhbWJkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUxhbWJkYU5hbWluZ1Rl
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoc3RkOjpzdHJpbmcoIkxhbWJkYU5h
bWUiKSksCisgICAgICAgICAgICAgICAgICAgICAgICBbXShjb25zdCA6OnRlc3Rpbmc6OlRlc3RQ
YXJhbUluZm88c3RkOjpzdHJpbmc+JiBpbmZvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBpbmZvLnBhcmFtOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisKKyNlbmRp
ZiAgLy8gR1RFU1RfTEFOR19DWFgxMQorCitURVNUKEN1c3RvbU5hbWluZ1Rlc3QsIENoZWNrTmFt
ZVJlZ2lzdHJ5KSB7CisgIDo6dGVzdGluZzo6VW5pdFRlc3QqIHVuaXRfdGVzdCA9IDo6dGVzdGlu
Zzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCk7CisgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiB0ZXN0
X25hbWVzOworICBmb3IgKGludCBjYXNlX251bSA9IDA7CisgICAgICAgY2FzZV9udW0gPCB1bml0
X3Rlc3QtPnRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpOworICAgICAgICsrY2FzZV9udW0pIHsKKyAg
ICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RDYXNlKiB0ZXN0X2Nhc2UgPSB1bml0X3Rlc3QtPkdldFRl
c3RDYXNlKGNhc2VfbnVtKTsKKyAgICBmb3IgKGludCB0ZXN0X251bSA9IDA7CisgICAgICAgICB0
ZXN0X251bSA8IHRlc3RfY2FzZS0+dG90YWxfdGVzdF9jb3VudCgpOworICAgICAgICAgKyt0ZXN0
X251bSkgeworICAgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogdGVzdF9pbmZvID0gdGVz
dF9jYXNlLT5HZXRUZXN0SW5mbyh0ZXN0X251bSk7CisgICAgICB0ZXN0X25hbWVzLmluc2VydChz
dGQ6OnN0cmluZyh0ZXN0X2luZm8tPm5hbWUoKSkpOworICAgIH0KKyAgfQorICBFWFBFQ1RfRVEo
MXUsIHRlc3RfbmFtZXMuY291bnQoIkN1c3RvbVRlc3ROYW1lcy9GdW5jdG9yTmFtZSIpKTsKKyAg
RVhQRUNUX0VRKDF1LCB0ZXN0X25hbWVzLmNvdW50KCJDdXN0b21UZXN0TmFtZXMvRnVuY3Rpb25O
YW1lIikpOworI2lmIEdURVNUX0xBTkdfQ1hYMTEKKyAgRVhQRUNUX0VRKDF1LCB0ZXN0X25hbWVz
LmNvdW50KCJDdXN0b21UZXN0TmFtZXMvTGFtYmRhTmFtZSIpKTsKKyNlbmRpZiAgLy8gR1RFU1Rf
TEFOR19DWFgxMQorfQorCisvLyBUZXN0IGEgbnVtZXJpYyBuYW1lIHRvIGVuc3VyZSBQcmludFRv
U3RyaW5nUGFyYW1OYW1lIHdvcmtzIGNvcnJlY3RseS4KKworY2xhc3MgQ3VzdG9tSW50ZWdlck5h
bWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHt9OworCitURVNUX1AoQ3VzdG9t
SW50ZWdlck5hbWluZ1Rlc3QsIFRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzKSB7CisgIGNvbnN0IDo6
dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGluZzo6VW5p
dFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisgIE1lc3NhZ2UgdGVz
dF9uYW1lX3N0cmVhbTsKKyAgdGVzdF9uYW1lX3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3JyZWN0
TmFtZXMvIiA8PCBHZXRQYXJhbSgpOworICBFWFBFQ1RfU1RSRVEodGVzdF9uYW1lX3N0cmVhbS5H
ZXRTdHJpbmcoKS5jX3N0cigpLCB0ZXN0X2luZm8tPm5hbWUoKSk7Cit9CisKK0lOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKFByaW50VG9TdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0
b21JbnRlZ2VyTmFtaW5nVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlKDAsIDUp
LAorICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1O
YW1lKCkpOworCisvLyBUZXN0IGEgY3VzdG9tIHN0cnVjdCB3aXRoIFByaW50VG9TdHJpbmcuCisK
K3N0cnVjdCBDdXN0b21TdHJ1Y3QgeworICBleHBsaWNpdCBDdXN0b21TdHJ1Y3QoaW50IHZhbHVl
KSA6IHgodmFsdWUpIHt9CisgIGludCB4OworfTsKKworc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8
KHN0ZDo6b3N0cmVhbSYgc3RyZWFtLCBjb25zdCBDdXN0b21TdHJ1Y3QmIHZhbCkgeworICBzdHJl
YW0gPDwgdmFsLng7CisgIHJldHVybiBzdHJlYW07Cit9CisKK2NsYXNzIEN1c3RvbVN0cnVjdE5h
bWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxDdXN0b21TdHJ1Y3Q+IHt9OworCitURVNU
X1AoQ3VzdG9tU3RydWN0TmFtaW5nVGVzdCwgVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMpIHsKKyAg
Y29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0
aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKyAgTWVz
c2FnZSB0ZXN0X25hbWVfc3RyZWFtOworICB0ZXN0X25hbWVfc3RyZWFtIDw8ICJUZXN0c1JlcG9y
dENvcnJlY3ROYW1lcy8iIDw8IEdldFBhcmFtKCk7CisgIEVYUEVDVF9TVFJFUSh0ZXN0X25hbWVf
c3RyZWFtLkdldFN0cmluZygpLmNfc3RyKCksIHRlc3RfaW5mby0+bmFtZSgpKTsKK30KKworSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoUHJpbnRUb1N0cmluZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEN1c3RvbVN0cnVjdE5hbWluZ1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1
ZXMoQ3VzdG9tU3RydWN0KDApLCBDdXN0b21TdHJ1Y3QoMSkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1OYW1lKCkpOworCisvLyBUZXN0IHRo
YXQgdXNpbmcgYSBzdGF0ZWZ1bCBwYXJhbWV0ZXIgbmFtaW5nIGZ1bmN0aW9uIHdvcmtzIGFzIGV4
cGVjdGVkLgorCitzdHJ1Y3QgU3RhdGVmdWxOYW1pbmdGdW5jdG9yIHsKKyAgU3RhdGVmdWxOYW1p
bmdGdW5jdG9yKCkgOiBzdW0oMCkge30KKyAgc3RkOjpzdHJpbmcgb3BlcmF0b3IoKShjb25zdCA6
OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88aW50PiYgaW5mbykgeworICAgIGludCB2YWx1ZSA9IGlu
Zm8ucGFyYW0gKyBzdW07CisgICAgc3VtICs9IGluZm8ucGFyYW07CisgICAgcmV0dXJuIDo6dGVz
dGluZzo6UHJpbnRUb1N0cmluZyh2YWx1ZSk7CisgIH0KKyAgaW50IHN1bTsKK307CisKK2NsYXNz
IFN0YXRlZnVsTmFtaW5nVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50
PiB7CisgcHJvdGVjdGVkOgorICBTdGF0ZWZ1bE5hbWluZ1Rlc3QoKSA6IHN1bV8oMCkge30KKyAg
aW50IHN1bV87Cit9OworCitURVNUX1AoU3RhdGVmdWxOYW1pbmdUZXN0LCBUZXN0c1JlcG9ydENv
cnJlY3ROYW1lcykgeworICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2lu
Zm8gPQorICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rl
c3RfaW5mbygpOworICBzdW1fICs9IEdldFBhcmFtKCk7CisgIE1lc3NhZ2UgdGVzdF9uYW1lX3N0
cmVhbTsKKyAgdGVzdF9uYW1lX3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMvIiA8
PCBzdW1fOworICBFWFBFQ1RfU1RSRVEodGVzdF9uYW1lX3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0
cigpLCB0ZXN0X2luZm8tPm5hbWUoKSk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFN0
YXRlZnVsTmFtaW5nRnVuY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlZnVsTmFt
aW5nVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlKDAsIDUpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgU3RhdGVmdWxOYW1pbmdGdW5jdG9yKCkpOworCisvLyBDbGFzcyB0aGF0
IGNhbm5vdCBiZSBzdHJlYW1lZCBpbnRvIGFuIG9zdHJlYW0uICBJdCBuZWVkcyB0byBiZSBjb3B5
YWJsZQorLy8gKGFuZCwgaW4gY2FzZSBvZiBNU1ZDLCBhbHNvIGFzc2lnbmFibGUpIGluIG9yZGVy
IHRvIGJlIGEgdGVzdCBwYXJhbWV0ZXIKKy8vIHR5cGUuICBJdHMgZGVmYXVsdCBjb3B5IGNvbnN0
cnVjdG9yIGFuZCBhc3NpZ25tZW50IG9wZXJhdG9yIGRvIGV4YWN0bHkKKy8vIHdoYXQgd2UgbmVl
ZC4KK2NsYXNzIFVuc3RyZWFtYWJsZSB7CisgcHVibGljOgorICBleHBsaWNpdCBVbnN0cmVhbWFi
bGUoaW50IHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KKworIHByaXZhdGU6CisgIGludCB2YWx1
ZV87Cit9OworCitjbGFzcyBDb21tZW50VGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPFVuc3Ry
ZWFtYWJsZT4ge307CisKK1RFU1RfUChDb21tZW50VGVzdCwgVGVzdHNDb3JyZWN0bHlSZXBvcnRV
bnN0cmVhbWFibGVQYXJhbXMpIHsKKyAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3Qg
dGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3Vy
cmVudF90ZXN0X2luZm8oKTsKKworICBFWFBFQ1RfRVEoOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5n
KEdldFBhcmFtKCkpLCB0ZXN0X2luZm8tPnZhbHVlX3BhcmFtKCkpOworfQorCitJTlNUQU5USUFU
RV9URVNUX0NBU0VfUChJbnN0YW50aWF0aW9uV2l0aENvbW1lbnRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgQ29tbWVudFRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoVW5z
dHJlYW1hYmxlKDEpKSk7CisKKy8vIFZlcmlmeSB0aGF0IHdlIGNhbiBjcmVhdGUgYSBoaWVyYXJj
aHkgb2YgdGVzdCBmaXh0dXJlcywgd2hlcmUgdGhlIGJhc2UKKy8vIGNsYXNzIGZpeHR1cmUgaXMg
bm90IHBhcmFtZXRlcml6ZWQgYW5kIHRoZSBkZXJpdmVkIGNsYXNzIGlzLiBJbiB0aGlzIGNhc2UK
Ky8vIFBhcmFtZXRlcml6ZWREZXJpdmVkVGVzdCBpbmhlcml0cyBmcm9tIE5vblBhcmFtZXRlcml6
ZWRCYXNlVGVzdC4gIFdlCisvLyBwZXJmb3JtIHNpbXBsZSB0ZXN0cyBvbiBib3RoLgorY2xhc3Mg
Tm9uUGFyYW1ldGVyaXplZEJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHVi
bGljOgorICBOb25QYXJhbWV0ZXJpemVkQmFzZVRlc3QoKSA6IG5fKDE3KSB7IH0KKyBwcm90ZWN0
ZWQ6CisgIGludCBuXzsKK307CisKK2NsYXNzIFBhcmFtZXRlcml6ZWREZXJpdmVkVGVzdCA6IHB1
YmxpYyBOb25QYXJhbWV0ZXJpemVkQmFzZVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8aW50PiB7CisgcHJv
dGVjdGVkOgorICBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3QoKSA6IGNvdW50XygwKSB7IH0KKyAg
aW50IGNvdW50XzsKKyAgc3RhdGljIGludCBnbG9iYWxfY291bnRfOworfTsKKworaW50IFBhcmFt
ZXRlcml6ZWREZXJpdmVkVGVzdDo6Z2xvYmFsX2NvdW50XyA9IDA7CisKK1RFU1RfRihOb25QYXJh
bWV0ZXJpemVkQmFzZVRlc3QsIEZpeHR1cmVJc0luaXRpYWxpemVkKSB7CisgIEVYUEVDVF9FUSgx
Nywgbl8pOworfQorCitURVNUX1AoUGFyYW1ldGVyaXplZERlcml2ZWRUZXN0LCBTZWVzU2VxdWVu
Y2UpIHsKKyAgRVhQRUNUX0VRKDE3LCBuXyk7CisgIEVYUEVDVF9FUSgwLCBjb3VudF8rKyk7Cisg
IEVYUEVDVF9FUShHZXRQYXJhbSgpLCBnbG9iYWxfY291bnRfKyspOworfQorCitjbGFzcyBQYXJh
bWV0ZXJpemVkRGVhdGhUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+
IHsgfTsKKworVEVTVF9GKFBhcmFtZXRlcml6ZWREZWF0aFRlc3QsIEdldFBhcmFtRGllc0Zyb21U
ZXN0RikgeworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKEdldFBhcmFtKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIi4qIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdCAuKiIpOwor
fQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChSYW5nZVplcm9Ub0ZpdmUsIFBhcmFtZXRlcml6
ZWREZXJpdmVkVGVzdCwgUmFuZ2UoMCwgNSkpOworCiAjZW5kaWYgIC8vIEdURVNUX0hBU19QQVJB
TV9URVNUCiAKIFRFU1QoQ29tcGlsZVRlc3QsIENvbWJpbmVJc0RlZmluZWRPbmx5V2hlbkd0ZXN0
SGFzUGFyYW1UZXN0SXNEZWZpbmVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaAppbmRleCBiN2Y5NDkzNjEzN2RmYzVmM2Yy
ZDU3ZmE0MGRjYWY3YTE1Y2I2YjVlLi4yNmVhMTIyYjEwYjlmOWNkNzI0OTZlMTg5ZWNhOTBiMmJj
ZGZjY2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBh
cmFtLXRlc3RfdGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Qt
cGFyYW0tdGVzdF90ZXN0LmgKQEAgLTM3LDE4ICszNywyMCBAQAogI2lmbmRlZiBHVEVTVF9URVNU
X0dURVNUX1BBUkFNX1RFU1RfVEVTVF9IXwogI2RlZmluZSBHVEVTVF9URVNUX0dURVNUX1BBUkFN
X1RFU1RfVEVTVF9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgogCiAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKIAogLy8gVGVzdCBmaXh0dXJl
IGZvciB0ZXN0aW5nIGRlZmluaXRpb24gYW5kIGluc3RhbnRpYXRpb24gb2YgYSB0ZXN0CiAvLyBp
biBzZXBhcmF0ZSB0cmFuc2xhdGlvbiB1bml0cy4KLWNsYXNzIEV4dGVybmFsSW5zdGFudGlhdGlv
blRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4ge307CitjbGFzcyBF
eHRlcm5hbEluc3RhbnRpYXRpb25UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJh
bTxpbnQ+IHsKK307CiAKIC8vIFRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyBpbnN0YW50aWF0aW9u
IG9mIGEgdGVzdCBpbiBtdWx0aXBsZQogLy8gdHJhbnNsYXRpb24gdW5pdHMuCiBjbGFzcyBJbnN0
YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QKLSAgICA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7fTsKKyAgICA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3RXaXRoUGFyYW08aW50PiB7Cit9OwogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNU
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcG9ydF90
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wb3J0X3Rlc3QuY2MK
aW5kZXggMzcyNTg2MDJmYTVjZjVhNzc5OTQ3Y2Q0MjdlMjBlOTA5ZmM5MjU4ZC4uNmVhNjA3YmM3
MGQzNTJkNjQ2NTNiZjI4MTI1YTkxYzMyZTBiNTZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wb3J0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdC1wb3J0X3Rlc3QuY2MKQEAgLTMxLDE4ICszMSwyMCBAQAogLy8K
IC8vIFRoaXMgZmlsZSB0ZXN0cyB0aGUgaW50ZXJuYWwgY3Jvc3MtcGxhdGZvcm0gc3VwcG9ydCB1
dGlsaXRpZXMuCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5j
bHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAjaW5jbHVkZSA8c3RkaW8uaD4K
IAogI2lmIEdURVNUX09TX01BQwotI2luY2x1ZGUgPHRpbWUuaD4KKyMgaW5jbHVkZSA8dGltZS5o
PgogI2VuZGlmICAvLyBHVEVTVF9PU19NQUMKIAorI2luY2x1ZGUgPGxpc3Q+CiAjaW5jbHVkZSA8
dXRpbGl0eT4gIC8vIEZvciBzdGQ6OnBhaXIgYW5kIHN0ZDo6bWFrZV9wYWlyLgorI2luY2x1ZGUg
PHZlY3Rvcj4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3Qtc3BpLmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVz
dC1zcGkuaCIKIAogLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBh
cnQgb2YgR29vZ2xlIFRlc3QncwogLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVm
b3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCkBAIC01OSw2ICs2MSwxNzQgQEAgdXNpbmcgc3Rk
OjpwYWlyOwogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsKIAorVEVT
VChJc1hEaWdpdFRlc3QsIFdvcmtzRm9yTmFycm93QXNjaWkpIHsKKyAgRVhQRUNUX1RSVUUoSXNY
RGlnaXQoJzAnKSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KCc5JykpOworICBFWFBFQ1RfVFJV
RShJc1hEaWdpdCgnQScpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoJ0YnKSk7CisgIEVYUEVD
VF9UUlVFKElzWERpZ2l0KCdhJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgnZicpKTsKKwor
ICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoJy0nKSk7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdCgn
ZycpKTsKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KCdHJykpOworfQorCitURVNUKElzWERpZ2l0
VGVzdCwgUmV0dXJuc0ZhbHNlRm9yTmFycm93Tm9uQXNjaWkpIHsKKyAgRVhQRUNUX0ZBTFNFKElz
WERpZ2l0KCdceDgwJykpOworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoc3RhdGljX2Nhc3Q8Y2hh
cj4oJzAnIHwgJ1x4ODAnKSkpOworfQorCitURVNUKElzWERpZ2l0VGVzdCwgV29ya3NGb3JXaWRl
QXNjaWkpIHsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoTCcwJykpOworICBFWFBFQ1RfVFJVRShJ
c1hEaWdpdChMJzknKSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnQScpKTsKKyAgRVhQRUNU
X1RSVUUoSXNYRGlnaXQoTCdGJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdChMJ2EnKSk7Cisg
IEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnZicpKTsKKworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQo
TCctJykpOworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoTCdnJykpOworICBFWFBFQ1RfRkFMU0Uo
SXNYRGlnaXQoTCdHJykpOworfQorCitURVNUKElzWERpZ2l0VGVzdCwgUmV0dXJuc0ZhbHNlRm9y
V2lkZU5vbkFzY2lpKSB7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdChzdGF0aWNfY2FzdDx3Y2hh
cl90PigweDgwKSkpOworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoc3RhdGljX2Nhc3Q8d2NoYXJf
dD4oTCcwJyB8IDB4ODApKSk7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdChzdGF0aWNfY2FzdDx3
Y2hhcl90PihMJzAnIHwgMHgxMDApKSk7Cit9CisKK2NsYXNzIEJhc2UgeworIHB1YmxpYzoKKyAg
Ly8gQ29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVyYXRvciBkbyBleGFjdGx5IHdo
YXQgd2UgbmVlZCwgc28gd2UKKyAgLy8gdXNlIHRoZW0uCisgIEJhc2UoKSA6IG1lbWJlcl8oMCkg
e30KKyAgZXhwbGljaXQgQmFzZShpbnQgbikgOiBtZW1iZXJfKG4pIHt9CisgIHZpcnR1YWwgfkJh
c2UoKSB7fQorICBpbnQgbWVtYmVyKCkgeyByZXR1cm4gbWVtYmVyXzsgfQorCisgcHJpdmF0ZToK
KyAgaW50IG1lbWJlcl87Cit9OworCitjbGFzcyBEZXJpdmVkIDogcHVibGljIEJhc2UgeworIHB1
YmxpYzoKKyAgZXhwbGljaXQgRGVyaXZlZChpbnQgbikgOiBCYXNlKG4pIHt9Cit9OworCitURVNU
KEltcGxpY2l0Q2FzdFRlc3QsIENvbnZlcnRzUG9pbnRlcnMpIHsKKyAgRGVyaXZlZCBkZXJpdmVk
KDApOworICBFWFBFQ1RfVFJVRSgmZGVyaXZlZCA9PSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBs
aWNpdENhc3RfPEJhc2UqPigmZGVyaXZlZCkpOworfQorCitURVNUKEltcGxpY2l0Q2FzdFRlc3Qs
IENhblVzZUluaGVyaXRhbmNlKSB7CisgIERlcml2ZWQgZGVyaXZlZCgxKTsKKyAgQmFzZSBiYXNl
ID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlPihkZXJpdmVkKTsKKyAg
RVhQRUNUX0VRKGRlcml2ZWQubWVtYmVyKCksIGJhc2UubWVtYmVyKCkpOworfQorCitjbGFzcyBD
YXN0YWJsZSB7CisgcHVibGljOgorICBleHBsaWNpdCBDYXN0YWJsZShib29sKiBjb252ZXJ0ZWQp
IDogY29udmVydGVkXyhjb252ZXJ0ZWQpIHt9CisgIG9wZXJhdG9yIEJhc2UoKSB7CisgICAgKmNv
bnZlcnRlZF8gPSB0cnVlOworICAgIHJldHVybiBCYXNlKCk7CisgIH0KKworIHByaXZhdGU6Cisg
IGJvb2wqIGNvbnZlcnRlZF87Cit9OworCitURVNUKEltcGxpY2l0Q2FzdFRlc3QsIENhblVzZU5v
bkNvbnN0Q2FzdE9wZXJhdG9yKSB7CisgIGJvb2wgY29udmVydGVkID0gZmFsc2U7CisgIENhc3Rh
YmxlIGNhc3RhYmxlKCZjb252ZXJ0ZWQpOworICBCYXNlIGJhc2UgPSA6OnRlc3Rpbmc6OmludGVy
bmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+KGNhc3RhYmxlKTsKKyAgRVhQRUNUX1RSVUUoY29udmVy
dGVkKTsKK30KKworY2xhc3MgQ29uc3RDYXN0YWJsZSB7CisgcHVibGljOgorICBleHBsaWNpdCBD
b25zdENhc3RhYmxlKGJvb2wqIGNvbnZlcnRlZCkgOiBjb252ZXJ0ZWRfKGNvbnZlcnRlZCkge30K
KyAgb3BlcmF0b3IgQmFzZSgpIGNvbnN0IHsKKyAgICAqY29udmVydGVkXyA9IHRydWU7CisgICAg
cmV0dXJuIEJhc2UoKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgYm9vbCogY29udmVydGVkXzsKK307
CisKK1RFU1QoSW1wbGljaXRDYXN0VGVzdCwgQ2FuVXNlQ29uc3RDYXN0T3BlcmF0b3JPbkNvbnN0
VmFsdWVzKSB7CisgIGJvb2wgY29udmVydGVkID0gZmFsc2U7CisgIGNvbnN0IENvbnN0Q2FzdGFi
bGUgY29uc3RfY2FzdGFibGUoJmNvbnZlcnRlZCk7CisgIEJhc2UgYmFzZSA9IDo6dGVzdGluZzo6
aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88QmFzZT4oY29uc3RfY2FzdGFibGUpOworICBFWFBFQ1Rf
VFJVRShjb252ZXJ0ZWQpOworfQorCitjbGFzcyBDb25zdEFuZE5vbkNvbnN0Q2FzdGFibGUgewor
IHB1YmxpYzoKKyAgQ29uc3RBbmROb25Db25zdENhc3RhYmxlKGJvb2wqIGNvbnZlcnRlZCwgYm9v
bCogY29uc3RfY29udmVydGVkKQorICAgICAgOiBjb252ZXJ0ZWRfKGNvbnZlcnRlZCksIGNvbnN0
X2NvbnZlcnRlZF8oY29uc3RfY29udmVydGVkKSB7fQorICBvcGVyYXRvciBCYXNlKCkgeworICAg
ICpjb252ZXJ0ZWRfID0gdHJ1ZTsKKyAgICByZXR1cm4gQmFzZSgpOworICB9CisgIG9wZXJhdG9y
IEJhc2UoKSBjb25zdCB7CisgICAgKmNvbnN0X2NvbnZlcnRlZF8gPSB0cnVlOworICAgIHJldHVy
biBCYXNlKCk7CisgIH0KKworIHByaXZhdGU6CisgIGJvb2wqIGNvbnZlcnRlZF87CisgIGJvb2wq
IGNvbnN0X2NvbnZlcnRlZF87Cit9OworCitURVNUKEltcGxpY2l0Q2FzdFRlc3QsIENhblNlbGVj
dEJldHdlZW5Db25zdEFuZE5vbkNvbnN0Q2FzckFwcHJvcHJpYXRlbHkpIHsKKyAgYm9vbCBjb252
ZXJ0ZWQgPSBmYWxzZTsKKyAgYm9vbCBjb25zdF9jb252ZXJ0ZWQgPSBmYWxzZTsKKyAgQ29uc3RB
bmROb25Db25zdENhc3RhYmxlIGNhc3RhYmxlKCZjb252ZXJ0ZWQsICZjb25zdF9jb252ZXJ0ZWQp
OworICBCYXNlIGJhc2UgPSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+
KGNhc3RhYmxlKTsKKyAgRVhQRUNUX1RSVUUoY29udmVydGVkKTsKKyAgRVhQRUNUX0ZBTFNFKGNv
bnN0X2NvbnZlcnRlZCk7CisKKyAgY29udmVydGVkID0gZmFsc2U7CisgIGNvbnN0X2NvbnZlcnRl
ZCA9IGZhbHNlOworICBjb25zdCBDb25zdEFuZE5vbkNvbnN0Q2FzdGFibGUgY29uc3RfY2FzdGFi
bGUoJmNvbnZlcnRlZCwgJmNvbnN0X2NvbnZlcnRlZCk7CisgIGJhc2UgPSA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+KGNvbnN0X2Nhc3RhYmxlKTsKKyAgRVhQRUNUX0ZB
TFNFKGNvbnZlcnRlZCk7CisgIEVYUEVDVF9UUlVFKGNvbnN0X2NvbnZlcnRlZCk7Cit9CisKK2Ns
YXNzIFRvIHsKKyBwdWJsaWM6CisgIFRvKGJvb2wqIGNvbnZlcnRlZCkgeyAqY29udmVydGVkID0g
dHJ1ZTsgfSAgLy8gTk9MSU5UCit9OworCitURVNUKEltcGxpY2l0Q2FzdFRlc3QsIENhblVzZUlt
cGxpY2l0Q29uc3RydWN0b3IpIHsKKyAgYm9vbCBjb252ZXJ0ZWQgPSBmYWxzZTsKKyAgVG8gdG8g
PSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPFRvPigmY29udmVydGVkKTsKKyAg
KHZvaWQpdG87CisgIEVYUEVDVF9UUlVFKGNvbnZlcnRlZCk7Cit9CisKK1RFU1QoSXRlcmF0b3JU
cmFpdHNUZXN0LCBXb3Jrc0ZvclNUTENvbnRhaW5lckl0ZXJhdG9ycykgeworICBTdGF0aWNBc3Nl
cnRUeXBlRXE8aW50LAorICAgICAgSXRlcmF0b3JUcmFpdHM8IDo6c3RkOjp2ZWN0b3I8aW50Pjo6
Y29uc3RfaXRlcmF0b3I+Ojp2YWx1ZV90eXBlPigpOworICBTdGF0aWNBc3NlcnRUeXBlRXE8Ym9v
bCwKKyAgICAgIEl0ZXJhdG9yVHJhaXRzPCA6OnN0ZDo6bGlzdDxib29sPjo6aXRlcmF0b3I+Ojp2
YWx1ZV90eXBlPigpOworfQorCitURVNUKEl0ZXJhdG9yVHJhaXRzVGVzdCwgV29ya3NGb3JQb2lu
dGVyVG9Ob25Db25zdCkgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y2hhciwgSXRlcmF0b3JUcmFp
dHM8Y2hhcio+Ojp2YWx1ZV90eXBlPigpOworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3Qgdm9p
ZCosIEl0ZXJhdG9yVHJhaXRzPGNvbnN0IHZvaWQqKj46OnZhbHVlX3R5cGU+KCk7Cit9CisKK1RF
U1QoSXRlcmF0b3JUcmFpdHNUZXN0LCBXb3Jrc0ZvclBvaW50ZXJUb0NvbnN0KSB7CisgIFN0YXRp
Y0Fzc2VydFR5cGVFcTxjaGFyLCBJdGVyYXRvclRyYWl0czxjb25zdCBjaGFyKj46OnZhbHVlX3R5
cGU+KCk7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCB2b2lkKiwKKyAgICAgIEl0ZXJhdG9y
VHJhaXRzPGNvbnN0IHZvaWQqIGNvbnN0Kj46OnZhbHVlX3R5cGU+KCk7Cit9CisKIC8vIFRlc3Rz
IHRoYXQgdGhlIGVsZW1lbnRfdHlwZSB0eXBlZGVmIGlzIGF2YWlsYWJsZSBpbiBzY29wZWRfcHRy
IGFuZCByZWZlcnMKIC8vIHRvIHRoZSBwYXJhbWV0ZXIgdHlwZS4KIFRFU1QoU2NvcGVkUHRyVGVz
dCwgRGVmaW5lc0VsZW1lbnRUeXBlKSB7CkBAIC05MSw2NiArMjYxLDEwNCBAQCBURVNUKEd0ZXN0
Q2hlY2tTeW50YXhUZXN0LCBXb3Jrc1dpdGhTd2l0Y2gpIHsKICAgICAgIEdURVNUX0NIRUNLXyh0
cnVlKTsKICAgfQogCi0gIHN3aXRjaCgwKQorICBzd2l0Y2ggKDApCiAgICAgY2FzZSAwOgogICAg
ICAgR1RFU1RfQ0hFQ0tfKHRydWUpIDw8ICJDaGVjayBmYWlsZWQgaW4gc3dpdGNoIGNhc2UiOwog
fQogCi0jaWYgR1RFU1RfT1NfTUFDCisvLyBWZXJpZmllcyBiZWhhdmlvciBvZiBGb3JtYXRGaWxl
TG9jYXRpb24uCitURVNUKEZvcm1hdEZpbGVMb2NhdGlvblRlc3QsIEZvcm1hdHNGaWxlTG9jYXRp
b24pIHsKKyAgRVhQRUNUX1BSRURfRk9STUFUMihJc1N1YnN0cmluZywgImZvby5jYyIsIEZvcm1h
dEZpbGVMb2NhdGlvbigiZm9vLmNjIiwgNDIpKTsKKyAgRVhQRUNUX1BSRURfRk9STUFUMihJc1N1
YnN0cmluZywgIjQyIiwgRm9ybWF0RmlsZUxvY2F0aW9uKCJmb28uY2MiLCA0MikpOworfQorCitU
RVNUKEZvcm1hdEZpbGVMb2NhdGlvblRlc3QsIEZvcm1hdHNVbmtub3duRmlsZSkgeworICBFWFBF
Q1RfUFJFRF9GT1JNQVQyKAorICAgICAgSXNTdWJzdHJpbmcsICJ1bmtub3duIGZpbGUiLCBGb3Jt
YXRGaWxlTG9jYXRpb24oTlVMTCwgNDIpKTsKKyAgRVhQRUNUX1BSRURfRk9STUFUMihJc1N1YnN0
cmluZywgIjQyIiwgRm9ybWF0RmlsZUxvY2F0aW9uKE5VTEwsIDQyKSk7Cit9CisKK1RFU1QoRm9y
bWF0RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c1Vrbm93bkxpbmUpIHsKKyAgRVhQRUNUX0VRKCJm
b28uY2M6IiwgRm9ybWF0RmlsZUxvY2F0aW9uKCJmb28uY2MiLCAtMSkpOworfQorCitURVNUKEZv
cm1hdEZpbGVMb2NhdGlvblRlc3QsIEZvcm1hdHNVa25vd25GaWxlQW5kTGluZSkgeworICBFWFBF
Q1RfRVEoInVua25vd24gZmlsZToiLCBGb3JtYXRGaWxlTG9jYXRpb24oTlVMTCwgLTEpKTsKK30K
KworLy8gVmVyaWZpZXMgYmVoYXZpb3Igb2YgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVM
b2NhdGlvbi4KK1RFU1QoRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvblRlc3Qs
IEZvcm1hdHNGaWxlTG9jYXRpb24pIHsKKyAgRVhQRUNUX0VRKCJmb28uY2M6NDIiLCBGb3JtYXRD
b21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uKCJmb28uY2MiLCA0MikpOworfQorCitURVNU
KEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzVWtub3du
RmlsZSkgeworICBFWFBFQ1RfRVEoInVua25vd24gZmlsZTo0MiIsCisgICAgICAgICAgICBGb3Jt
YXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uKE5VTEwsIDQyKSk7Cit9CisKK1RFU1Qo
Rm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvblRlc3QsIEZvcm1hdHNVa25vd25M
aW5lKSB7CisgIEVYUEVDVF9FUSgiZm9vLmNjIiwgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZp
bGVMb2NhdGlvbigiZm9vLmNjIiwgLTEpKTsKK30KKworVEVTVChGb3JtYXRDb21waWxlckluZGVw
ZW5kZW50RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c1Vrbm93bkZpbGVBbmRMaW5lKSB7CisgIEVY
UEVDVF9FUSgidW5rbm93biBmaWxlIiwgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2Nh
dGlvbihOVUxMLCAtMSkpOworfQorCisjaWYgR1RFU1RfT1NfTElOVVggfHwgR1RFU1RfT1NfTUFD
IHx8IEdURVNUX09TX1FOWAogdm9pZCogVGhyZWFkRnVuYyh2b2lkKiBkYXRhKSB7Ci0gIHB0aHJl
YWRfbXV0ZXhfdCogbXV0ZXggPSBzdGF0aWNfY2FzdDxwdGhyZWFkX211dGV4X3QqPihkYXRhKTsK
LSAgcHRocmVhZF9tdXRleF9sb2NrKG11dGV4KTsKLSAgcHRocmVhZF9tdXRleF91bmxvY2sobXV0
ZXgpOworICBpbnRlcm5hbDo6TXV0ZXgqIG11dGV4ID0gc3RhdGljX2Nhc3Q8aW50ZXJuYWw6Ok11
dGV4Kj4oZGF0YSk7CisgIG11dGV4LT5Mb2NrKCk7CisgIG11dGV4LT5VbmxvY2soKTsKICAgcmV0
dXJuIE5VTEw7CiB9CiAKIFRFU1QoR2V0VGhyZWFkQ291bnRUZXN0LCBSZXR1cm5zQ29ycmVjdFZh
bHVlKSB7Ci0gIEVYUEVDVF9FUSgxVSwgR2V0VGhyZWFkQ291bnQoKSk7Ci0gIHB0aHJlYWRfbXV0
ZXhfdCBtdXRleDsKLSAgcHRocmVhZF9hdHRyX3QgIGF0dHI7CisgIGNvbnN0IHNpemVfdCBzdGFy
dGluZ19jb3VudCA9IEdldFRocmVhZENvdW50KCk7CiAgIHB0aHJlYWRfdCAgICAgICB0aHJlYWRf
aWQ7CiAKLSAgLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogdHVybiBtdXRleCBpbnRvIGludGVy
bmFsOjpNdXRleCBmb3IgYXV0b21hdGljCi0gIC8vIGRlc3RydWN0aW9uLgotICBwdGhyZWFkX211
dGV4X2luaXQoJm11dGV4LCBOVUxMKTsKLSAgcHRocmVhZF9tdXRleF9sb2NrKCZtdXRleCk7Ci0g
IEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0dHJfaW5pdCgmYXR0cikpOwotICBBU1NFUlRfRVEoMCwg
cHRocmVhZF9hdHRyX3NldGRldGFjaHN0YXRlKCZhdHRyLCBQVEhSRUFEX0NSRUFURV9KT0lOQUJM
RSkpOwotCi0gIGNvbnN0IGludCBzdGF0dXMgPSBwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkX2lkLCAm
YXR0ciwgJlRocmVhZEZ1bmMsICZtdXRleCk7Ci0gIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0dHJf
ZGVzdHJveSgmYXR0cikpOwotICBBU1NFUlRfRVEoMCwgc3RhdHVzKTsKLSAgRVhQRUNUX0VRKDJV
LCBHZXRUaHJlYWRDb3VudCgpKTsKLSAgcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4KTsKKyAg
aW50ZXJuYWw6Ok11dGV4IG11dGV4OworICB7CisgICAgaW50ZXJuYWw6Ok11dGV4TG9jayBsb2Nr
KCZtdXRleCk7CisgICAgcHRocmVhZF9hdHRyX3QgIGF0dHI7CisgICAgQVNTRVJUX0VRKDAsIHB0
aHJlYWRfYXR0cl9pbml0KCZhdHRyKSk7CisgICAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXR0cl9z
ZXRkZXRhY2hzdGF0ZSgmYXR0ciwgUFRIUkVBRF9DUkVBVEVfSk9JTkFCTEUpKTsKKworICAgIGNv
bnN0IGludCBzdGF0dXMgPSBwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkX2lkLCAmYXR0ciwgJlRocmVh
ZEZ1bmMsICZtdXRleCk7CisgICAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXR0cl9kZXN0cm95KCZh
dHRyKSk7CisgICAgQVNTRVJUX0VRKDAsIHN0YXR1cyk7CisgICAgRVhQRUNUX0VRKHN0YXJ0aW5n
X2NvdW50ICsgMSwgR2V0VGhyZWFkQ291bnQoKSk7CisgIH0KIAogICB2b2lkKiBkdW1teTsKICAg
QVNTRVJUX0VRKDAsIHB0aHJlYWRfam9pbih0aHJlYWRfaWQsICZkdW1teSkpOwogCi0gIC8vIE1h
Y09TIFggbWF5IG5vdCBpbW1lZGlhdGVseSByZXBvcnQgdGhlIHVwZGF0ZWQgdGhyZWFkIGNvdW50
IGFmdGVyCisgIC8vIFRoZSBPUyBtYXkgbm90IGltbWVkaWF0ZWx5IHJlcG9ydCB0aGUgdXBkYXRl
ZCB0aHJlYWQgY291bnQgYWZ0ZXIKICAgLy8gam9pbmluZyBhIHRocmVhZCwgY2F1c2luZyBmbGFr
aW5lc3MgaW4gdGhpcyB0ZXN0LiBUbyBjb3VudGVyIHRoYXQsIHdlCiAgIC8vIHdhaXQgZm9yIHVw
IHRvIC41IHNlY29uZHMgZm9yIHRoZSBPUyB0byByZXBvcnQgdGhlIGNvcnJlY3QgdmFsdWUuCiAg
IGZvciAoaW50IGkgPSAwOyBpIDwgNTsgKytpKSB7Ci0gICAgaWYgKEdldFRocmVhZENvdW50KCkg
PT0gMSkKKyAgICBpZiAoR2V0VGhyZWFkQ291bnQoKSA9PSBzdGFydGluZ19jb3VudCkKICAgICAg
IGJyZWFrOwogCiAgICAgU2xlZXBNaWxsaXNlY29uZHMoMTAwKTsKICAgfQotICBFWFBFQ1RfRVEo
MVUsIEdldFRocmVhZENvdW50KCkpOwotICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm11dGV4KTsK
KworICBFWFBFQ1RfRVEoc3RhcnRpbmdfY291bnQsIEdldFRocmVhZENvdW50KCkpOwogfQogI2Vs
c2UKIFRFU1QoR2V0VGhyZWFkQ291bnRUZXN0LCBSZXR1cm5zWmVyb1doZW5VbmFibGVUb0NvdW50
VGhyZWFkcykgewogICBFWFBFQ1RfRVEoMFUsIEdldFRocmVhZENvdW50KCkpOwogfQotI2VuZGlm
ICAvLyBHVEVTVF9PU19NQUMKKyNlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVggfHwgR1RFU1RfT1Nf
TUFDIHx8IEdURVNUX09TX1FOWAogCiBURVNUKEd0ZXN0Q2hlY2tEZWF0aFRlc3QsIERpZXNXaXRo
Q29ycmVjdE91dHB1dE9uRmFpbHVyZSkgewogICBjb25zdCBib29sIGFfZmFsc2VfY29uZGl0aW9u
ID0gZmFsc2U7CiAgIGNvbnN0IGNoYXIgcmVnZXhbXSA9CiAjaWZkZWYgX01TQ19WRVIKICAgICAg
Imd0ZXN0LXBvcnRfdGVzdFxcLmNjXFwoXFxkK1xcKToiCi0jZWxzZQorI2VsaWYgR1RFU1RfVVNF
U19QT1NJWF9SRQogICAgICAiZ3Rlc3QtcG9ydF90ZXN0XFwuY2M6WzAtOV0rIgorI2Vsc2UKKyAg
ICAgImd0ZXN0LXBvcnRfdGVzdFxcLmNjOlxcZCsiCiAjZW5kaWYgIC8vIF9NU0NfVkVSCiAgICAg
ICIuKmFfZmFsc2VfY29uZGl0aW9uLipFeHRyYSBpbmZvLioiOwogCkBAIC0xNzAsOSArMzc4LDI2
IEBAIFRFU1QoR3Rlc3RDaGVja0RlYXRoVGVzdCwgTGl2ZXNTaWxlbnRseU9uU3VjY2Vzcykgewog
CiAjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCiAKKy8vIFZlcmlmaWVzIHRoYXQgR29v
Z2xlIFRlc3QgY2hvb3NlIHJlZ3VsYXIgZXhwcmVzc2lvbiBlbmdpbmUgYXBwcm9wcmlhdGUgdG8K
Ky8vIHRoZSBwbGF0Zm9ybS4gVGhlIHRlc3Qgd2lsbCBwcm9kdWNlIGNvbXBpbGVyIGVycm9ycyBp
biBjYXNlIG9mIGZhaWx1cmUuCisvLyBGb3Igc2ltcGxpY2l0eSwgd2Ugb25seSBjb3ZlciB0aGUg
bW9zdCBpbXBvcnRhbnQgcGxhdGZvcm1zIGhlcmUuCitURVNUKFJlZ2V4RW5naW5lU2VsZWN0aW9u
VGVzdCwgU2VsZWN0c0NvcnJlY3RSZWdleEVuZ2luZSkgeworI2lmICFHVEVTVF9VU0VTX1BDUkUK
KyMgaWYgR1RFU1RfSEFTX1BPU0lYX1JFCisKKyAgRVhQRUNUX1RSVUUoR1RFU1RfVVNFU19QT1NJ
WF9SRSk7CisKKyMgZWxzZQorCisgIEVYUEVDVF9UUlVFKEdURVNUX1VTRVNfU0lNUExFX1JFKTsK
KworIyBlbmRpZgorI2VuZGlmICAvLyAhR1RFU1RfVVNFU19QQ1JFCit9CisKICNpZiBHVEVTVF9V
U0VTX1BPU0lYX1JFCiAKLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAorIyBpZiBHVEVTVF9IQVNf
VFlQRURfVEVTVAogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyPgogY2xhc3MgUkVUZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7fTsKQEAgLTE4MSw5ICs0MDYsOSBAQCBjbGFzcyBSRVRlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OwogLy8gc3VwcG9ydHMuCiB0eXBlZGVmIHRlc3Rp
bmc6OlR5cGVzPAogICAgIDo6c3RkOjpzdHJpbmcsCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJ
TkcKKyMgIGlmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCiAgICAgOjpzdHJpbmcsCi0jZW5kaWYg
IC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisjICBlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JB
TF9TVFJJTkcKICAgICBjb25zdCBjaGFyKj4gU3RyaW5nVHlwZXM7CiAKIFRZUEVEX1RFU1RfQ0FT
RShSRVRlc3QsIFN0cmluZ1R5cGVzKTsKQEAgLTIzNCw3ICs0NTksNyBAQCBUWVBFRF9URVNUKFJF
VGVzdCwgUGFydGlhbE1hdGNoV29ya3MpIHsKICAgRVhQRUNUX0ZBTFNFKFJFOjpQYXJ0aWFsTWF0
Y2goVHlwZVBhcmFtKCJ6emEiKSwgcmUpKTsKIH0KIAotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQ
RURfVEVTVAorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QKIAogI2VsaWYgR1RFU1Rf
VVNFU19TSU1QTEVfUkUKIApAQCAtMjUyLDMzICs0NzcsMzMgQEAgVEVTVChJc0luU2V0VGVzdCwg
V29ya3NGb3JOb25OdWxDaGFycykgewogICBFWFBFQ1RfVFJVRShJc0luU2V0KCdiJywgImFiIikp
OwogfQogCi1URVNUKElzRGlnaXRUZXN0LCBJc0ZhbHNlRm9yTm9uRGlnaXQpIHsKLSAgRVhQRUNU
X0ZBTFNFKElzRGlnaXQoJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNEaWdpdCgnICcpKTsKLSAg
RVhQRUNUX0ZBTFNFKElzRGlnaXQoJysnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0RpZ2l0KCctJykp
OwotICBFWFBFQ1RfRkFMU0UoSXNEaWdpdCgnLicpKTsKLSAgRVhQRUNUX0ZBTFNFKElzRGlnaXQo
J2EnKSk7CitURVNUKElzQXNjaWlEaWdpdFRlc3QsIElzRmFsc2VGb3JOb25EaWdpdCkgeworICBF
WFBFQ1RfRkFMU0UoSXNBc2NpaURpZ2l0KCdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlE
aWdpdCgnICcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlEaWdpdCgnKycpKTsKKyAgRVhQRUNU
X0ZBTFNFKElzQXNjaWlEaWdpdCgnLScpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlEaWdpdCgn
LicpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlEaWdpdCgnYScpKTsKIH0KIAotVEVTVChJc0Rp
Z2l0VGVzdCwgSXNUcnVlRm9yRGlnaXQpIHsKLSAgRVhQRUNUX1RSVUUoSXNEaWdpdCgnMCcpKTsK
LSAgRVhQRUNUX1RSVUUoSXNEaWdpdCgnMScpKTsKLSAgRVhQRUNUX1RSVUUoSXNEaWdpdCgnNScp
KTsKLSAgRVhQRUNUX1RSVUUoSXNEaWdpdCgnOScpKTsKK1RFU1QoSXNBc2NpaURpZ2l0VGVzdCwg
SXNUcnVlRm9yRGlnaXQpIHsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaURpZ2l0KCcwJykpOworICBF
WFBFQ1RfVFJVRShJc0FzY2lpRGlnaXQoJzEnKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlEaWdp
dCgnNScpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaURpZ2l0KCc5JykpOwogfQogCi1URVNUKElz
UHVuY3RUZXN0LCBJc0ZhbHNlRm9yTm9uUHVuY3QpIHsKLSAgRVhQRUNUX0ZBTFNFKElzUHVuY3Qo
J1wwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNQdW5jdCgnICcpKTsKLSAgRVhQRUNUX0ZBTFNFKElz
UHVuY3QoJ1xuJykpOwotICBFWFBFQ1RfRkFMU0UoSXNQdW5jdCgnYScpKTsKLSAgRVhQRUNUX0ZB
TFNFKElzUHVuY3QoJzAnKSk7CitURVNUKElzQXNjaWlQdW5jdFRlc3QsIElzRmFsc2VGb3JOb25Q
dW5jdCkgeworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVB1bmN0KCdcMCcpKTsKKyAgRVhQRUNUX0ZB
TFNFKElzQXNjaWlQdW5jdCgnICcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlQdW5jdCgnXG4n
KSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3QoJ2EnKSk7CisgIEVYUEVDVF9GQUxTRShJ
c0FzY2lpUHVuY3QoJzAnKSk7CiB9CiAKLVRFU1QoSXNQdW5jdFRlc3QsIElzVHJ1ZUZvclB1bmN0
KSB7CitURVNUKElzQXNjaWlQdW5jdFRlc3QsIElzVHJ1ZUZvclB1bmN0KSB7CiAgIGZvciAoY29u
c3QgY2hhciogcCA9ICJeLSFcIiMkJSYnKCkqKywuLzo7PD0+P0BbXFxdX2B7fH1+IjsgKnA7IHAr
KykgewotICAgIEVYUEVDVF9QUkVEMShJc1B1bmN0LCAqcCk7CisgICAgRVhQRUNUX1BSRUQxKElz
QXNjaWlQdW5jdCwgKnApOwogICB9CiB9CiAKQEAgLTI5Niw0NyArNTIxLDQ3IEBAIFRFU1QoSXNS
ZXBlYXRUZXN0LCBJc1RydWVGb3JSZXBlYXRDaGFyKSB7CiAgIEVYUEVDVF9UUlVFKElzUmVwZWF0
KCcrJykpOwogfQogCi1URVNUKElzV2hpdGVTcGFjZVRlc3QsIElzRmFsc2VGb3JOb25XaGl0ZVNw
YWNlKSB7Ci0gIEVYUEVDVF9GQUxTRShJc1doaXRlU3BhY2UoJ1wwJykpOwotICBFWFBFQ1RfRkFM
U0UoSXNXaGl0ZVNwYWNlKCdhJykpOwotICBFWFBFQ1RfRkFMU0UoSXNXaGl0ZVNwYWNlKCcxJykp
OwotICBFWFBFQ1RfRkFMU0UoSXNXaGl0ZVNwYWNlKCcrJykpOwotICBFWFBFQ1RfRkFMU0UoSXNX
aGl0ZVNwYWNlKCdfJykpOworVEVTVChJc0FzY2lpV2hpdGVTcGFjZVRlc3QsIElzRmFsc2VGb3JO
b25XaGl0ZVNwYWNlKSB7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV2hpdGVTcGFjZSgnXDAnKSk7
CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV2hpdGVTcGFjZSgnYScpKTsKKyAgRVhQRUNUX0ZBTFNF
KElzQXNjaWlXaGl0ZVNwYWNlKCcxJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdoaXRlU3Bh
Y2UoJysnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV2hpdGVTcGFjZSgnXycpKTsKIH0KIAot
VEVTVChJc1doaXRlU3BhY2VUZXN0LCBJc1RydWVGb3JXaGl0ZVNwYWNlKSB7Ci0gIEVYUEVDVF9U
UlVFKElzV2hpdGVTcGFjZSgnICcpKTsKLSAgRVhQRUNUX1RSVUUoSXNXaGl0ZVNwYWNlKCdcbicp
KTsKLSAgRVhQRUNUX1RSVUUoSXNXaGl0ZVNwYWNlKCdccicpKTsKLSAgRVhQRUNUX1RSVUUoSXNX
aGl0ZVNwYWNlKCdcdCcpKTsKLSAgRVhQRUNUX1RSVUUoSXNXaGl0ZVNwYWNlKCdcdicpKTsKLSAg
RVhQRUNUX1RSVUUoSXNXaGl0ZVNwYWNlKCdcZicpKTsKK1RFU1QoSXNBc2NpaVdoaXRlU3BhY2VU
ZXN0LCBJc1RydWVGb3JXaGl0ZVNwYWNlKSB7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXaGl0ZVNw
YWNlKCcgJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnXG4nKSk7CisgIEVY
UEVDVF9UUlVFKElzQXNjaWlXaGl0ZVNwYWNlKCdccicpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2Np
aVdoaXRlU3BhY2UoJ1x0JykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnXHYn
KSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXaGl0ZVNwYWNlKCdcZicpKTsKIH0KIAotVEVTVChJ
c1dvcmRDaGFyVGVzdCwgSXNGYWxzZUZvck5vbldvcmRDaGFyKSB7Ci0gIEVYUEVDVF9GQUxTRShJ
c1dvcmRDaGFyKCdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV29yZENoYXIoJysnKSk7Ci0gIEVY
UEVDVF9GQUxTRShJc1dvcmRDaGFyKCcuJykpOwotICBFWFBFQ1RfRkFMU0UoSXNXb3JkQ2hhcign
ICcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV29yZENoYXIoJ1xuJykpOworVEVTVChJc0FzY2lpV29y
ZENoYXJUZXN0LCBJc0ZhbHNlRm9yTm9uV29yZENoYXIpIHsKKyAgRVhQRUNUX0ZBTFNFKElzQXNj
aWlXb3JkQ2hhcignXDAnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV29yZENoYXIoJysnKSk7
CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV29yZENoYXIoJy4nKSk7CisgIEVYUEVDVF9GQUxTRShJ
c0FzY2lpV29yZENoYXIoJyAnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV29yZENoYXIoJ1xu
JykpOwogfQogCi1URVNUKElzV29yZENoYXJUZXN0LCBJc1RydWVGb3JMZXR0ZXIpIHsKLSAgRVhQ
RUNUX1RSVUUoSXNXb3JkQ2hhcignYScpKTsKLSAgRVhQRUNUX1RSVUUoSXNXb3JkQ2hhcignYicp
KTsKLSAgRVhQRUNUX1RSVUUoSXNXb3JkQ2hhcignQScpKTsKLSAgRVhQRUNUX1RSVUUoSXNXb3Jk
Q2hhcignWicpKTsKK1RFU1QoSXNBc2NpaVdvcmRDaGFyVGVzdCwgSXNUcnVlRm9yTGV0dGVyKSB7
CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignYScpKTsKKyAgRVhQRUNUX1RSVUUoSXNB
c2NpaVdvcmRDaGFyKCdiJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJ0EnKSk7
CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignWicpKTsKIH0KIAotVEVTVChJc1dvcmRD
aGFyVGVzdCwgSXNUcnVlRm9yRGlnaXQpIHsKLSAgRVhQRUNUX1RSVUUoSXNXb3JkQ2hhcignMCcp
KTsKLSAgRVhQRUNUX1RSVUUoSXNXb3JkQ2hhcignMScpKTsKLSAgRVhQRUNUX1RSVUUoSXNXb3Jk
Q2hhcignNycpKTsKLSAgRVhQRUNUX1RSVUUoSXNXb3JkQ2hhcignOScpKTsKK1RFU1QoSXNBc2Np
aVdvcmRDaGFyVGVzdCwgSXNUcnVlRm9yRGlnaXQpIHsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdv
cmRDaGFyKCcwJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJzEnKSk7CisgIEVY
UEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignNycpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdv
cmRDaGFyKCc5JykpOwogfQogCi1URVNUKElzV29yZENoYXJUZXN0LCBJc1RydWVGb3JVbmRlcnNj
b3JlKSB7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJ18nKSk7CitURVNUKElzQXNjaWlXb3Jk
Q2hhclRlc3QsIElzVHJ1ZUZvclVuZGVyc2NvcmUpIHsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdv
cmRDaGFyKCdfJykpOwogfQogCiBURVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc0ZhbHNlRm9yTm9u
UHJpbnRhYmxlKSB7CkBAIC03MzYsNyArOTYxLDcgQEAgVEVTVChDYXB0dXJlVGVzdCwgQ2FwdHVy
ZXNTdGRvdXRBbmRTdGRlcnIpIHsKIAogVEVTVChDYXB0dXJlRGVhdGhUZXN0LCBDYW5ub3RSZWVu
dGVyU3Rkb3V0Q2FwdHVyZSkgewogICBDYXB0dXJlU3Rkb3V0KCk7Ci0gIEVYUEVDVF9ERUFUSF9J
Rl9TVVBQT1JURUQoQ2FwdHVyZVN0ZG91dCgpOywKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRF
RChDYXB0dXJlU3Rkb3V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9ubHkgb25l
IHN0ZG91dCBjYXB0dXJlciBjYW4gZXhpc3QgYXQgYSB0aW1lIik7CiAgIEdldENhcHR1cmVkU3Rk
b3V0KCk7CiAKQEAgLTc3NSwyMyArMTAwMCwyNCBAQCBURVNUKFRocmVhZExvY2FsVGVzdCwgVmFs
dWVEZWZhdWx0Q29udHJ1Y3RvcklzTm90UmVxdWlyZWRGb3JQYXJhbVZlcnNpb24pIHsKIH0KIAog
VEVTVChUaHJlYWRMb2NhbFRlc3QsIEdldEFuZFBvaW50ZXJSZXR1cm5TYW1lVmFsdWUpIHsKLSAg
VGhyZWFkTG9jYWw8U3RyaW5nPiB0aHJlYWRfbG9jYWw7CisgIFRocmVhZExvY2FsPHN0ZDo6c3Ry
aW5nPiB0aHJlYWRfbG9jYWxfc3RyaW5nOwogCi0gIEVYUEVDVF9FUSh0aHJlYWRfbG9jYWwucG9p
bnRlcigpLCAmKHRocmVhZF9sb2NhbC5nZXQoKSkpOworICBFWFBFQ1RfRVEodGhyZWFkX2xvY2Fs
X3N0cmluZy5wb2ludGVyKCksICYodGhyZWFkX2xvY2FsX3N0cmluZy5nZXQoKSkpOwogCiAgIC8v
IFZlcmlmaWVzIHRoZSBjb25kaXRpb24gc3RpbGwgaG9sZHMgYWZ0ZXIgY2FsbGluZyBzZXQuCi0g
IHRocmVhZF9sb2NhbC5zZXQoImZvbyIpOwotICBFWFBFQ1RfRVEodGhyZWFkX2xvY2FsLnBvaW50
ZXIoKSwgJih0aHJlYWRfbG9jYWwuZ2V0KCkpKTsKKyAgdGhyZWFkX2xvY2FsX3N0cmluZy5zZXQo
ImZvbyIpOworICBFWFBFQ1RfRVEodGhyZWFkX2xvY2FsX3N0cmluZy5wb2ludGVyKCksICYodGhy
ZWFkX2xvY2FsX3N0cmluZy5nZXQoKSkpOwogfQogCiBURVNUKFRocmVhZExvY2FsVGVzdCwgUG9p
bnRlckFuZENvbnN0UG9pbnRlclJldHVyblNhbWVWYWx1ZSkgewotICBUaHJlYWRMb2NhbDxTdHJp
bmc+IHRocmVhZF9sb2NhbDsKLSAgY29uc3QgVGhyZWFkTG9jYWw8U3RyaW5nPiYgY29uc3RfdGhy
ZWFkX2xvY2FsID0gdGhyZWFkX2xvY2FsOworICBUaHJlYWRMb2NhbDxzdGQ6OnN0cmluZz4gdGhy
ZWFkX2xvY2FsX3N0cmluZzsKKyAgY29uc3QgVGhyZWFkTG9jYWw8c3RkOjpzdHJpbmc+JiBjb25z
dF90aHJlYWRfbG9jYWxfc3RyaW5nID0KKyAgICAgIHRocmVhZF9sb2NhbF9zdHJpbmc7CiAKLSAg
RVhQRUNUX0VRKHRocmVhZF9sb2NhbC5wb2ludGVyKCksIGNvbnN0X3RocmVhZF9sb2NhbC5wb2lu
dGVyKCkpOworICBFWFBFQ1RfRVEodGhyZWFkX2xvY2FsX3N0cmluZy5wb2ludGVyKCksIGNvbnN0
X3RocmVhZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpKTsKIAotICB0aHJlYWRfbG9jYWwuc2V0KCJm
b28iKTsKLSAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbC5wb2ludGVyKCksIGNvbnN0X3RocmVhZF9s
b2NhbC5wb2ludGVyKCkpOworICB0aHJlYWRfbG9jYWxfc3RyaW5nLnNldCgiZm9vIik7CisgIEVY
UEVDVF9FUSh0aHJlYWRfbG9jYWxfc3RyaW5nLnBvaW50ZXIoKSwgY29uc3RfdGhyZWFkX2xvY2Fs
X3N0cmluZy5wb2ludGVyKCkpOwogfQogCiAjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQpAQCAtODMx
LDExICsxMDU3LDEzIEBAIGNsYXNzIEF0b21pY0NvdW50ZXJXaXRoTXV0ZXggewogICAgIE11dGV4
TG9jayBsb2NrKG11dGV4Xyk7CiAgICAgaW50IHRlbXAgPSB2YWx1ZV87CiAgICAgewotICAgICAg
Ly8gTG9ja2luZyBhIG11dGV4IHB1dHMgdXAgYSBtZW1vcnkgYmFycmllciwgcHJldmVudGluZyBy
ZWFkcyBhbmQKLSAgICAgIC8vIHdyaXRlcyB0byB2YWx1ZV8gcmVhcnJhbmdlZCB3aGVuIG9ic2Vy
dmVkIGZyb20gb3RoZXIgdGhyZWFkcy4KLSAgICAgIC8vCi0gICAgICAvLyBXZSBjYW5ub3QgdXNl
IE11dGV4IGFuZCBNdXRleExvY2sgaGVyZSBvciByZWx5IG9uIHRoZWlyIG1lbW9yeQotICAgICAg
Ly8gYmFycmllciBmdW5jdGlvbmFsaXR5IGFzIHdlIGFyZSB0ZXN0aW5nIHRoZW0gaGVyZS4KKyAg
ICAgIC8vIFdlIG5lZWQgdG8gcHV0IHVwIGEgbWVtb3J5IGJhcnJpZXIgdG8gcHJldmVudCByZWFk
cyBhbmQgd3JpdGVzIHRvCisgICAgICAvLyB2YWx1ZV8gcmVhcnJhbmdlZCB3aXRoIHRoZSBjYWxs
IHRvIFNsZWVwTWlsbGlzZWNvbmRzIHdoZW4gb2JzZXJ2ZWQKKyAgICAgIC8vIGZyb20gb3RoZXIg
dGhyZWFkcy4KKyNpZiBHVEVTVF9IQVNfUFRIUkVBRAorICAgICAgLy8gT24gUE9TSVgsIGxvY2tp
bmcgYSBtdXRleCBwdXRzIHVwIGEgbWVtb3J5IGJhcnJpZXIuICBXZSBjYW5ub3QgdXNlCisgICAg
ICAvLyBNdXRleCBhbmQgTXV0ZXhMb2NrIGhlcmUgb3IgcmVseSBvbiB0aGVpciBtZW1vcnkgYmFy
cmllcgorICAgICAgLy8gZnVuY3Rpb25hbGl0eSBhcyB3ZSBhcmUgdGVzdGluZyB0aGVtIGhlcmUu
CiAgICAgICBwdGhyZWFkX211dGV4X3QgbWVtb3J5X2JhcnJpZXJfbXV0ZXg7CiAgICAgICBHVEVT
VF9DSEVDS19QT1NJWF9TVUNDRVNTXygKICAgICAgICAgICBwdGhyZWFkX211dGV4X2luaXQoJm1l
bW9yeV9iYXJyaWVyX211dGV4LCBOVUxMKSk7CkBAIC04NDQsNiArMTA3MiwxNiBAQCBjbGFzcyBB
dG9taWNDb3VudGVyV2l0aE11dGV4IHsKICAgICAgIFNsZWVwTWlsbGlzZWNvbmRzKHJhbmRvbV8u
R2VuZXJhdGUoMzApKTsKIAogICAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVh
ZF9tdXRleF91bmxvY2soJm1lbW9yeV9iYXJyaWVyX211dGV4KSk7CisgICAgICBHVEVTVF9DSEVD
S19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm1lbW9yeV9iYXJyaWVyX211
dGV4KSk7CisjZWxpZiBHVEVTVF9PU19XSU5ET1dTCisgICAgICAvLyBPbiBXaW5kb3dzLCBwZXJm
b3JtaW5nIGFuIGludGVybG9ja2VkIGFjY2VzcyBwdXRzIHVwIGEgbWVtb3J5IGJhcnJpZXIuCisg
ICAgICB2b2xhdGlsZSBMT05HIGR1bW15ID0gMDsKKyAgICAgIDo6SW50ZXJsb2NrZWRJbmNyZW1l
bnQoJmR1bW15KTsKKyAgICAgIFNsZWVwTWlsbGlzZWNvbmRzKHJhbmRvbV8uR2VuZXJhdGUoMzAp
KTsKKyAgICAgIDo6SW50ZXJsb2NrZWRJbmNyZW1lbnQoJmR1bW15KTsKKyNlbHNlCisjIGVycm9y
ICJNZW1vcnkgYmFycmllciBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCisjZW5k
aWYgIC8vIEdURVNUX0hBU19QVEhSRUFECiAgICAgfQogICAgIHZhbHVlXyA9IHRlbXAgKyAxOwog
ICB9CkBAIC04OTUsMTI0ICsxMTMzLDE3MiBAQCB2b2lkIFJ1bkZyb21UaHJlYWQodm9pZCAoZnVu
YykoVCksIFQgcGFyYW0pIHsKICAgdGhyZWFkLkpvaW4oKTsKIH0KIAotdm9pZCBSZXRyaWV2ZVRo
cmVhZExvY2FsVmFsdWUocGFpcjxUaHJlYWRMb2NhbDxTdHJpbmc+KiwgU3RyaW5nKj4gcGFyYW0p
IHsKK3ZvaWQgUmV0cmlldmVUaHJlYWRMb2NhbFZhbHVlKAorICAgIHBhaXI8VGhyZWFkTG9jYWw8
c3RkOjpzdHJpbmc+Kiwgc3RkOjpzdHJpbmcqPiBwYXJhbSkgewogICAqcGFyYW0uc2Vjb25kID0g
cGFyYW0uZmlyc3QtPmdldCgpOwogfQogCiBURVNUKFRocmVhZExvY2FsVGVzdCwgUGFyYW1ldGVy
aXplZENvbnN0cnVjdG9yU2V0c0RlZmF1bHQpIHsKLSAgVGhyZWFkTG9jYWw8U3RyaW5nPiB0aHJl
YWRfbG9jYWwoImZvbyIpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIsIHRocmVhZF9sb2NhbC5nZXQo
KS5jX3N0cigpKTsKKyAgVGhyZWFkTG9jYWw8c3RkOjpzdHJpbmc+IHRocmVhZF9sb2NhbF9zdHJp
bmcoImZvbyIpOworICBFWFBFQ1RfU1RSRVEoImZvbyIsIHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0
KCkuY19zdHIoKSk7CiAKLSAgdGhyZWFkX2xvY2FsLnNldCgiYmFyIik7Ci0gIEVYUEVDVF9TVFJF
USgiYmFyIiwgdGhyZWFkX2xvY2FsLmdldCgpLmNfc3RyKCkpOworICB0aHJlYWRfbG9jYWxfc3Ry
aW5nLnNldCgiYmFyIik7CisgIEVYUEVDVF9TVFJFUSgiYmFyIiwgdGhyZWFkX2xvY2FsX3N0cmlu
Zy5nZXQoKS5jX3N0cigpKTsKIAotICBTdHJpbmcgcmVzdWx0OwotICBSdW5Gcm9tVGhyZWFkKCZS
ZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUsIG1ha2VfcGFpcigmdGhyZWFkX2xvY2FsLCAmcmVzdWx0
KSk7CisgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKKyAgUnVuRnJvbVRocmVhZCgmUmV0cmlldmVUaHJl
YWRMb2NhbFZhbHVlLAorICAgICAgICAgICAgICAgIG1ha2VfcGFpcigmdGhyZWFkX2xvY2FsX3N0
cmluZywgJnJlc3VsdCkpOwogICBFWFBFQ1RfU1RSRVEoImZvbyIsIHJlc3VsdC5jX3N0cigpKTsK
IH0KIAorLy8gS2VlcHMgdHJhY2sgb2Ygd2hldGhlciBvZiBkZXN0cnVjdG9ycyBiZWluZyBjYWxs
ZWQgb24gaW5zdGFuY2VzIG9mCisvLyBEZXN0cnVjdG9yVHJhY2tlci4gIE9uIFdpbmRvd3MsIHdh
aXRzIGZvciB0aGUgZGVzdHJ1Y3RvciBjYWxsIHJlcG9ydHMuCitjbGFzcyBEZXN0cnVjdG9yQ2Fs
bCB7CisgcHVibGljOgorICBEZXN0cnVjdG9yQ2FsbCgpIHsKKyAgICBpbnZva2VkXyA9IGZhbHNl
OworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgICB3YWl0X2V2ZW50Xy5SZXNldCg6OkNyZWF0ZUV2
ZW50KE5VTEwsIFRSVUUsIEZBTFNFLCBOVUxMKSk7CisgICAgR1RFU1RfQ0hFQ0tfKHdhaXRfZXZl
bnRfLkdldCgpICE9IE5VTEwpOworI2VuZGlmCisgIH0KKworICBib29sIENoZWNrRGVzdHJveWVk
KCkgY29uc3QgeworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgICBpZiAoOjpXYWl0Rm9yU2luZ2xl
T2JqZWN0KHdhaXRfZXZlbnRfLkdldCgpLCAxMDAwKSAhPSBXQUlUX09CSkVDVF8wKQorICAgICAg
cmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgcmV0dXJuIGludm9rZWRfOworICB9CisKKyAgdm9p
ZCBSZXBvcnREZXN0cm95ZWQoKSB7CisgICAgaW52b2tlZF8gPSB0cnVlOworI2lmIEdURVNUX09T
X1dJTkRPV1MKKyAgICA6OlNldEV2ZW50KHdhaXRfZXZlbnRfLkdldCgpKTsKKyNlbmRpZgorICB9
CisKKyAgc3RhdGljIHN0ZDo6dmVjdG9yPERlc3RydWN0b3JDYWxsKj4mIExpc3QoKSB7IHJldHVy
biAqbGlzdF87IH0KKworICBzdGF0aWMgdm9pZCBSZXNldExpc3QoKSB7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBsaXN0Xy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgIGRlbGV0ZSBsaXN0Xy0+
YXQoaSk7CisgICAgfQorICAgIGxpc3RfLT5jbGVhcigpOworICB9CisKKyBwcml2YXRlOgorICBi
b29sIGludm9rZWRfOworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgQXV0b0hhbmRsZSB3YWl0X2V2
ZW50XzsKKyNlbmRpZgorICBzdGF0aWMgc3RkOjp2ZWN0b3I8RGVzdHJ1Y3RvckNhbGwqPiogY29u
c3QgbGlzdF87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhEZXN0cnVjdG9y
Q2FsbCk7Cit9OworCitzdGQ6OnZlY3RvcjxEZXN0cnVjdG9yQ2FsbCo+KiBjb25zdCBEZXN0cnVj
dG9yQ2FsbDo6bGlzdF8gPQorICAgIG5ldyBzdGQ6OnZlY3RvcjxEZXN0cnVjdG9yQ2FsbCo+Owor
CiAvLyBEZXN0cnVjdG9yVHJhY2tlciBrZWVwcyB0cmFjayBvZiB3aGV0aGVyIGl0cyBpbnN0YW5j
ZXMgaGF2ZSBiZWVuCiAvLyBkZXN0cm95ZWQuCi1zdGF0aWMgc3RkOjp2ZWN0b3I8Ym9vbD4gZ19k
ZXN0cm95ZWQ7Ci0KIGNsYXNzIERlc3RydWN0b3JUcmFja2VyIHsKICBwdWJsaWM6CiAgIERlc3Ry
dWN0b3JUcmFja2VyKCkgOiBpbmRleF8oR2V0TmV3SW5kZXgoKSkge30KICAgRGVzdHJ1Y3RvclRy
YWNrZXIoY29uc3QgRGVzdHJ1Y3RvclRyYWNrZXImIC8qIHJocyAqLykKICAgICAgIDogaW5kZXhf
KEdldE5ld0luZGV4KCkpIHt9CiAgIH5EZXN0cnVjdG9yVHJhY2tlcigpIHsKLSAgICAvLyBXZSBu
ZXZlciBhY2Nlc3MgZ19kZXN0cm95ZWQgY29uY3VycmVudGx5LCBzbyB3ZSBkb24ndCBuZWVkIHRv
Ci0gICAgLy8gcHJvdGVjdCB0aGUgd3JpdGUgb3BlcmF0aW9uIHVuZGVyIGEgbXV0ZXguCi0gICAg
Z19kZXN0cm95ZWRbaW5kZXhfXSA9IHRydWU7CisgICAgLy8gV2UgbmV2ZXIgYWNjZXNzIERlc3Ry
dWN0b3JDYWxsOjpMaXN0KCkgY29uY3VycmVudGx5LCBzbyB3ZSBkb24ndCBuZWVkCisgICAgLy8g
dG8gcHJvdGVjdCB0aGlzIGFjY2Nlc3Mgd2l0aCBhIG11dGV4LgorICAgIERlc3RydWN0b3JDYWxs
OjpMaXN0KClbaW5kZXhfXS0+UmVwb3J0RGVzdHJveWVkKCk7CiAgIH0KIAogIHByaXZhdGU6Ci0g
IHN0YXRpYyBpbnQgR2V0TmV3SW5kZXgoKSB7Ci0gICAgZ19kZXN0cm95ZWQucHVzaF9iYWNrKGZh
bHNlKTsKLSAgICByZXR1cm4gZ19kZXN0cm95ZWQuc2l6ZSgpIC0gMTsKKyAgc3RhdGljIHNpemVf
dCBHZXROZXdJbmRleCgpIHsKKyAgICBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnB1c2hfYmFjayhu
ZXcgRGVzdHJ1Y3RvckNhbGwpOworICAgIHJldHVybiBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnNp
emUoKSAtIDE7CiAgIH0KLSAgY29uc3QgaW50IGluZGV4XzsKKyAgY29uc3Qgc2l6ZV90IGluZGV4
XzsKKworICBHVEVTVF9ESVNBTExPV19BU1NJR05fKERlc3RydWN0b3JUcmFja2VyKTsKIH07CiAK
IHR5cGVkZWYgVGhyZWFkTG9jYWw8RGVzdHJ1Y3RvclRyYWNrZXI+KiBUaHJlYWRQYXJhbTsKIAot
dm9pZCBDYWxsVGhyZWFkTG9jYWxHZXQoVGhyZWFkUGFyYW0gdGhyZWFkX2xvY2FsKSB7Ci0gIHRo
cmVhZF9sb2NhbC0+Z2V0KCk7Cit2b2lkIENhbGxUaHJlYWRMb2NhbEdldChUaHJlYWRQYXJhbSB0
aHJlYWRfbG9jYWxfcGFyYW0pIHsKKyAgdGhyZWFkX2xvY2FsX3BhcmFtLT5nZXQoKTsKIH0KIAog
Ly8gVGVzdHMgdGhhdCB3aGVuIGEgVGhyZWFkTG9jYWwgb2JqZWN0IGRpZXMgaW4gYSB0aHJlYWQs
IGl0IGRlc3Ryb3lzCiAvLyB0aGUgbWFuYWdlZCBvYmplY3QgZm9yIHRoYXQgdGhyZWFkLgogVEVT
VChUaHJlYWRMb2NhbFRlc3QsIERlc3Ryb3lzTWFuYWdlZE9iamVjdEZvck93blRocmVhZFdoZW5E
eWluZykgewotICBnX2Rlc3Ryb3llZC5jbGVhcigpOworICBEZXN0cnVjdG9yQ2FsbDo6UmVzZXRM
aXN0KCk7CiAKICAgewotICAgIC8vIFRoZSBuZXh0IGxpbmUgZGVmYXVsdCBjb25zdHJ1Y3RzIGEg
RGVzdHJ1Y3RvclRyYWNrZXIgb2JqZWN0IGFzCi0gICAgLy8gdGhlIGRlZmF1bHQgdmFsdWUgb2Yg
b2JqZWN0cyBtYW5hZ2VkIGJ5IHRocmVhZF9sb2NhbC4KLSAgICBUaHJlYWRMb2NhbDxEZXN0cnVj
dG9yVHJhY2tlcj4gdGhyZWFkX2xvY2FsOwotICAgIEFTU0VSVF9FUSgxVSwgZ19kZXN0cm95ZWQu
c2l6ZSgpKTsKLSAgICBBU1NFUlRfRkFMU0UoZ19kZXN0cm95ZWRbMF0pOworICAgIFRocmVhZExv
Y2FsPERlc3RydWN0b3JUcmFja2VyPiB0aHJlYWRfbG9jYWxfdHJhY2tlcjsKKyAgICBBU1NFUlRf
RVEoMFUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpKTsKIAogICAgIC8vIFRoaXMgY3Jl
YXRlcyBhbm90aGVyIERlc3RydWN0b3JUcmFja2VyIG9iamVjdCBmb3IgdGhlIG1haW4gdGhyZWFk
LgotICAgIHRocmVhZF9sb2NhbC5nZXQoKTsKLSAgICBBU1NFUlRfRVEoMlUsIGdfZGVzdHJveWVk
LnNpemUoKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdfZGVzdHJveWVkWzBdKTsKLSAgICBBU1NFUlRf
RkFMU0UoZ19kZXN0cm95ZWRbMV0pOworICAgIHRocmVhZF9sb2NhbF90cmFja2VyLmdldCgpOwor
ICAgIEFTU0VSVF9FUSgxVSwgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKS5zaXplKCkpOworICAgIEFT
U0VSVF9GQUxTRShEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpWzBdLT5DaGVja0Rlc3Ryb3llZCgpKTsK
ICAgfQogCi0gIC8vIE5vdyB0aHJlYWRfbG9jYWwgaGFzIGRpZWQuICBJdCBzaG91bGQgaGF2ZSBk
ZXN0cm95ZWQgYm90aCB0aGUKLSAgLy8gZGVmYXVsdCB2YWx1ZSBzaGFyZWQgYnkgYWxsIHRocmVh
ZHMgYW5kIHRoZSB2YWx1ZSBmb3IgdGhlIG1haW4KLSAgLy8gdGhyZWFkLgotICBBU1NFUlRfRVEo
MlUsIGdfZGVzdHJveWVkLnNpemUoKSk7Ci0gIEVYUEVDVF9UUlVFKGdfZGVzdHJveWVkWzBdKTsK
LSAgRVhQRUNUX1RSVUUoZ19kZXN0cm95ZWRbMV0pOworICAvLyBOb3cgdGhyZWFkX2xvY2FsX3Ry
YWNrZXIgaGFzIGRpZWQuCisgIEFTU0VSVF9FUSgxVSwgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKS5z
aXplKCkpOworICBFWFBFQ1RfVFJVRShEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpWzBdLT5DaGVja0Rl
c3Ryb3llZCgpKTsKIAotICBnX2Rlc3Ryb3llZC5jbGVhcigpOworICBEZXN0cnVjdG9yQ2FsbDo6
UmVzZXRMaXN0KCk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgd2hlbiBhIHRocmVhZCBleGl0cywgdGhl
IHRocmVhZC1sb2NhbCBvYmplY3QgZm9yIHRoYXQKIC8vIHRocmVhZCBpcyBkZXN0cm95ZWQuCiBU
RVNUKFRocmVhZExvY2FsVGVzdCwgRGVzdHJveXNNYW5hZ2VkT2JqZWN0QXRUaHJlYWRFeGl0KSB7
Ci0gIGdfZGVzdHJveWVkLmNsZWFyKCk7CisgIERlc3RydWN0b3JDYWxsOjpSZXNldExpc3QoKTsK
IAogICB7Ci0gICAgLy8gVGhlIG5leHQgbGluZSBkZWZhdWx0IGNvbnN0cnVjdHMgYSBEZXN0cnVj
dG9yVHJhY2tlciBvYmplY3QgYXMKLSAgICAvLyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBvYmplY3Rz
IG1hbmFnZWQgYnkgdGhyZWFkX2xvY2FsLgotICAgIFRocmVhZExvY2FsPERlc3RydWN0b3JUcmFj
a2VyPiB0aHJlYWRfbG9jYWw7Ci0gICAgQVNTRVJUX0VRKDFVLCBnX2Rlc3Ryb3llZC5zaXplKCkp
OwotICAgIEFTU0VSVF9GQUxTRShnX2Rlc3Ryb3llZFswXSk7CisgICAgVGhyZWFkTG9jYWw8RGVz
dHJ1Y3RvclRyYWNrZXI+IHRocmVhZF9sb2NhbF90cmFja2VyOworICAgIEFTU0VSVF9FUSgwVSwg
RGVzdHJ1Y3RvckNhbGw6Okxpc3QoKS5zaXplKCkpOwogCiAgICAgLy8gVGhpcyBjcmVhdGVzIGFu
b3RoZXIgRGVzdHJ1Y3RvclRyYWNrZXIgb2JqZWN0IGluIHRoZSBuZXcgdGhyZWFkLgogICAgIFRo
cmVhZFdpdGhQYXJhbTxUaHJlYWRQYXJhbT4gdGhyZWFkKAotICAgICAgICAmQ2FsbFRocmVhZExv
Y2FsR2V0LCAmdGhyZWFkX2xvY2FsLCBOVUxMKTsKKyAgICAgICAgJkNhbGxUaHJlYWRMb2NhbEdl
dCwgJnRocmVhZF9sb2NhbF90cmFja2VyLCBOVUxMKTsKICAgICB0aHJlYWQuSm9pbigpOwogCi0g
ICAgLy8gTm93IHRoZSBuZXcgdGhyZWFkIGhhcyBleGl0ZWQuICBUaGUgcGVyLXRocmVhZCBvYmpl
Y3QgZm9yIGl0Ci0gICAgLy8gc2hvdWxkIGhhdmUgYmVlbiBkZXN0cm95ZWQuCi0gICAgQVNTRVJU
X0VRKDJVLCBnX2Rlc3Ryb3llZC5zaXplKCkpOwotICAgIEFTU0VSVF9GQUxTRShnX2Rlc3Ryb3ll
ZFswXSk7Ci0gICAgQVNTRVJUX1RSVUUoZ19kZXN0cm95ZWRbMV0pOworICAgIC8vIFRoZSB0aHJl
YWQgaGFzIGV4aXRlZCwgYW5kIHdlIHNob3VsZCBoYXZlIGEgRGVzdHJveWVkVHJhY2tlcgorICAg
IC8vIGluc3RhbmNlIGNyZWF0ZWQgZm9yIGl0LiBCdXQgaXQgbWF5IG5vdCBoYXZlIGJlZW4gZGVz
dHJveWVkIHlldC4KKyAgICBBU1NFUlRfRVEoMVUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6
ZSgpKTsKICAgfQogCi0gIC8vIE5vdyB0aHJlYWRfbG9jYWwgaGFzIGRpZWQuICBUaGUgZGVmYXVs
dCB2YWx1ZSBzaG91bGQgaGF2ZSBiZWVuCi0gIC8vIGRlc3Ryb3llZCB0b28uCi0gIEFTU0VSVF9F
USgyVSwgZ19kZXN0cm95ZWQuc2l6ZSgpKTsKLSAgRVhQRUNUX1RSVUUoZ19kZXN0cm95ZWRbMF0p
OwotICBFWFBFQ1RfVFJVRShnX2Rlc3Ryb3llZFsxXSk7CisgIC8vIFRoZSB0aHJlYWQgaGFzIGV4
aXRlZCBhbmQgdGhyZWFkX2xvY2FsX3RyYWNrZXIgaGFzIGRpZWQuCisgIEFTU0VSVF9FUSgxVSwg
RGVzdHJ1Y3RvckNhbGw6Okxpc3QoKS5zaXplKCkpOworICBFWFBFQ1RfVFJVRShEZXN0cnVjdG9y
Q2FsbDo6TGlzdCgpWzBdLT5DaGVja0Rlc3Ryb3llZCgpKTsKIAotICBnX2Rlc3Ryb3llZC5jbGVh
cigpOworICBEZXN0cnVjdG9yQ2FsbDo6UmVzZXRMaXN0KCk7CiB9CiAKIFRFU1QoVGhyZWFkTG9j
YWxUZXN0LCBUaHJlYWRMb2NhbE11dGF0aW9uc0FmZmVjdE9ubHlDdXJyZW50VGhyZWFkKSB7Ci0g
IFRocmVhZExvY2FsPFN0cmluZz4gdGhyZWFkX2xvY2FsOwotICB0aHJlYWRfbG9jYWwuc2V0KCJG
b28iKTsKLSAgRVhQRUNUX1NUUkVRKCJGb28iLCB0aHJlYWRfbG9jYWwuZ2V0KCkuY19zdHIoKSk7
CisgIFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiB0aHJlYWRfbG9jYWxfc3RyaW5nOworICB0aHJl
YWRfbG9jYWxfc3RyaW5nLnNldCgiRm9vIik7CisgIEVYUEVDVF9TVFJFUSgiRm9vIiwgdGhyZWFk
X2xvY2FsX3N0cmluZy5nZXQoKS5jX3N0cigpKTsKIAotICBTdHJpbmcgcmVzdWx0OwotICBSdW5G
cm9tVGhyZWFkKCZSZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUsIG1ha2VfcGFpcigmdGhyZWFkX2xv
Y2FsLCAmcmVzdWx0KSk7Ci0gIEVYUEVDVF9UUlVFKHJlc3VsdC5jX3N0cigpID09IE5VTEwpOwor
ICBzdGQ6OnN0cmluZyByZXN1bHQ7CisgIFJ1bkZyb21UaHJlYWQoJlJldHJpZXZlVGhyZWFkTG9j
YWxWYWx1ZSwKKyAgICAgICAgICAgICAgICBtYWtlX3BhaXIoJnRocmVhZF9sb2NhbF9zdHJpbmcs
ICZyZXN1bHQpKTsKKyAgRVhQRUNUX1RSVUUocmVzdWx0LmVtcHR5KCkpOwogfQogCiAjZW5kaWYg
IC8vIEdURVNUX0lTX1RIUkVBRFNBRkUKIAorI2lmIEdURVNUX09TX1dJTkRPV1MKK1RFU1QoV2lu
ZG93c1R5cGVzVGVzdCwgSEFORExFSXNWb2lkU3RhcikgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8
SEFORExFLCB2b2lkKj4oKTsKK30KKworVEVTVChXaW5kb3dzVHlwZXNUZXN0LCBDUklUSUNBTF9T
RUNUSU9OSXNfUlRMX0NSSVRJQ0FMX1NFQ1RJT04pIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPENS
SVRJQ0FMX1NFQ1RJT04sIF9SVExfQ1JJVElDQUxfU0VDVElPTj4oKTsKK30KKyNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUworCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVz
cGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0LXByaW50ZXJzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
LXByaW50ZXJzX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2U5N2NjMjRhYjRjMTU2NWZlODNmMTNkMTY5
NmQyOGJjM2YyZTFmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3QtcHJpbnRlcnNfdGVzdC5jYwpAQCAtMCwwICsxLDE2MzUgQEAKKy8vIENvcHly
aWdodCAyMDA3LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0
aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
Ly8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IHdhbkBn
b29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKKy8vIEdvb2dsZSBUZXN0IC0gVGhlIEdvb2dsZSBD
KysgVGVzdGluZyBGcmFtZXdvcmsKKy8vCisvLyBUaGlzIGZpbGUgdGVzdHMgdGhlIHVuaXZlcnNh
bCB2YWx1ZSBwcmludGVyLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCIKKwor
I2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8c3RyaW5n
Lmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGRlcXVlPgorI2luY2x1ZGUgPGxp
c3Q+CisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHNldD4KKyNpbmNsdWRlIDxzc3RyZWFtPgor
I2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHZlY3Rvcj4K
KworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKy8vIGhhc2hfbWFwIGFuZCBoYXNoX3NldCBh
cmUgYXZhaWxhYmxlIHVuZGVyIFZpc3VhbCBDKyssIG9yIG9uIExpbnV4LgorI2lmIEdURVNUX0hB
U19IQVNIX01BUF8KKyMgaW5jbHVkZSA8aGFzaF9tYXA+ICAgICAgICAgICAgLy8gTk9MSU5UCisj
ZW5kaWYgIC8vIEdURVNUX0hBU19IQVNIX01BUF8KKyNpZiBHVEVTVF9IQVNfSEFTSF9TRVRfCisj
IGluY2x1ZGUgPGhhc2hfc2V0PiAgICAgICAgICAgIC8vIE5PTElOVAorI2VuZGlmICAvLyBHVEVT
VF9IQVNfSEFTSF9TRVRfCisKKyNpZiBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8KKyMgaW5j
bHVkZSA8Zm9yd2FyZF9saXN0PiAvLyBOT0xJTlQKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9G
T1JXQVJEX0xJU1RfCisKKy8vIFNvbWUgdXNlci1kZWZpbmVkIHR5cGVzIGZvciB0ZXN0aW5nIHRo
ZSB1bml2ZXJzYWwgdmFsdWUgcHJpbnRlci4KKworLy8gQW4gYW5vbnltb3VzIGVudW0gdHlwZS4K
K2VudW0gQW5vbnltb3VzRW51bSB7CisgIGtBRTEgPSAtMSwKKyAga0FFMiA9IDEKK307CisKKy8v
IEFuIGVudW0gd2l0aG91dCBhIHVzZXItZGVmaW5lZCBwcmludGVyLgorZW51bSBFbnVtV2l0aG91
dFByaW50ZXIgeworICBrRVdQMSA9IC0yLAorICBrRVdQMiA9IDQyCit9OworCisvLyBBbiBlbnVt
IHdpdGggYSA8PCBvcGVyYXRvci4KK2VudW0gRW51bVdpdGhTdHJlYW1pbmcgeworICBrRVdTMSA9
IDEwCit9OworCitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgRW51
bVdpdGhTdHJlYW1pbmcgZSkgeworICByZXR1cm4gb3MgPDwgKGUgPT0ga0VXUzEgPyAia0VXUzEi
IDogImludmFsaWQiKTsKK30KKworLy8gQW4gZW51bSB3aXRoIGEgUHJpbnRUbygpIGZ1bmN0aW9u
LgorZW51bSBFbnVtV2l0aFByaW50VG8geworICBrRVdQVDEgPSAxCit9OworCit2b2lkIFByaW50
VG8oRW51bVdpdGhQcmludFRvIGUsIHN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8IChlID09
IGtFV1BUMSA/ICJrRVdQVDEiIDogImludmFsaWQiKTsKK30KKworLy8gQSBjbGFzcyBpbXBsaWNp
dGx5IGNvbnZlcnRpYmxlIHRvIEJpZ2dlc3RJbnQuCitjbGFzcyBCaWdnZXN0SW50Q29udmVydGli
bGUgeworIHB1YmxpYzoKKyAgb3BlcmF0b3IgOjp0ZXN0aW5nOjppbnRlcm5hbDo6QmlnZ2VzdElu
dCgpIGNvbnN0IHsgcmV0dXJuIDQyOyB9Cit9OworCisvLyBBIHVzZXItZGVmaW5lZCB1bnByaW50
YWJsZSBjbGFzcyB0ZW1wbGF0ZSBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorY2xhc3MgVW5wcmludGFibGVUZW1wbGF0ZUluR2xvYmFsIHsKKyBwdWJsaWM6
CisgIFVucHJpbnRhYmxlVGVtcGxhdGVJbkdsb2JhbCgpIDogdmFsdWVfKCkge30KKyBwcml2YXRl
OgorICBUIHZhbHVlXzsKK307CisKKy8vIEEgdXNlci1kZWZpbmVkIHN0cmVhbWFibGUgdHlwZSBp
biB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KK2NsYXNzIFN0cmVhbWFibGVJbkdsb2JhbCB7CisgcHVi
bGljOgorICB2aXJ0dWFsIH5TdHJlYW1hYmxlSW5HbG9iYWwoKSB7fQorfTsKKworaW5saW5lIHZv
aWQgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFN0cmVhbWFibGVJbkdsb2Jh
bCYgLyogeCAqLykgeworICBvcyA8PCAiU3RyZWFtYWJsZUluR2xvYmFsIjsKK30KKwordm9pZCBv
cGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBvcywgY29uc3QgU3RyZWFtYWJsZUluR2xvYmFsKiAv
KiB4ICovKSB7CisgIG9zIDw8ICJTdHJlYW1hYmxlSW5HbG9iYWwqIjsKK30KKworbmFtZXNwYWNl
IGZvbyB7CisKKy8vIEEgdXNlci1kZWZpbmVkIHVucHJpbnRhYmxlIHR5cGUgaW4gYSB1c2VyIG5h
bWVzcGFjZS4KK2NsYXNzIFVucHJpbnRhYmxlSW5Gb28geworIHB1YmxpYzoKKyAgVW5wcmludGFi
bGVJbkZvbygpIDogel8oMCkgeyBtZW1jcHkoeHlfLCAiXHhFRlx4MTJceDBceDBceDM0XHhBQlx4
MFx4MCIsIDgpOyB9CisgIGRvdWJsZSB6KCkgY29uc3QgeyByZXR1cm4gel87IH0KKyBwcml2YXRl
OgorICBjaGFyIHh5X1s4XTsKKyAgZG91YmxlIHpfOworfTsKKworLy8gQSB1c2VyLWRlZmluZWQg
cHJpbnRhYmxlIHR5cGUgaW4gYSB1c2VyLWNob3NlbiBuYW1lc3BhY2UuCitzdHJ1Y3QgUHJpbnRh
YmxlVmlhUHJpbnRUbyB7CisgIFByaW50YWJsZVZpYVByaW50VG8oKSA6IHZhbHVlKCkge30KKyAg
aW50IHZhbHVlOworfTsKKwordm9pZCBQcmludFRvKGNvbnN0IFByaW50YWJsZVZpYVByaW50VG8m
IHgsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAqb3MgPDwgIlByaW50YWJsZVZpYVByaW50VG86
ICIgPDwgeC52YWx1ZTsKK30KKworLy8gQSB0eXBlIHdpdGggYSB1c2VyLWRlZmluZWQgPDwgZm9y
IHByaW50aW5nIGl0cyBwb2ludGVyLgorc3RydWN0IFBvaW50ZXJQcmludGFibGUgeworfTsKKwor
OjpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0mIG9zLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgUG9pbnRlclByaW50YWJsZSogLyogeCAqLykgeworICBy
ZXR1cm4gb3MgPDwgIlBvaW50ZXJQcmludGFibGUqIjsKK30KKworLy8gQSB1c2VyLWRlZmluZWQg
cHJpbnRhYmxlIGNsYXNzIHRlbXBsYXRlIGluIGEgdXNlci1jaG9zZW4gbmFtZXNwYWNlLgordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBQcmludGFibGVWaWFQcmludFRvVGVtcGxhdGUgewor
IHB1YmxpYzoKKyAgZXhwbGljaXQgUHJpbnRhYmxlVmlhUHJpbnRUb1RlbXBsYXRlKGNvbnN0IFQm
IGFfdmFsdWUpIDogdmFsdWVfKGFfdmFsdWUpIHt9CisKKyAgY29uc3QgVCYgdmFsdWUoKSBjb25z
dCB7IHJldHVybiB2YWx1ZV87IH0KKyBwcml2YXRlOgorICBUIHZhbHVlXzsKK307CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgordm9pZCBQcmludFRvKGNvbnN0IFByaW50YWJsZVZpYVByaW50VG9U
ZW1wbGF0ZTxUPiYgeCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCAiUHJpbnRhYmxl
VmlhUHJpbnRUb1RlbXBsYXRlOiAiIDw8IHgudmFsdWUoKTsKK30KKworLy8gQSB1c2VyLWRlZmlu
ZWQgc3RyZWFtYWJsZSBjbGFzcyB0ZW1wbGF0ZSBpbiBhIHVzZXIgbmFtZXNwYWNlLgordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBTdHJlYW1hYmxlVGVtcGxhdGVJbkZvbyB7CisgcHVibGlj
OgorICBTdHJlYW1hYmxlVGVtcGxhdGVJbkZvbygpIDogdmFsdWVfKCkge30KKworICBjb25zdCBU
JiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQorIHByaXZhdGU6CisgIFQgdmFsdWVf
OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgOjpzdGQ6Om9zdHJlYW0mIG9w
ZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0mIG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFN0cmVhbWFibGVUZW1wbGF0ZUluRm9vPFQ+JiB4KSB7CisgIHJldHVybiBv
cyA8PCAiU3RyZWFtYWJsZVRlbXBsYXRlSW5Gb286ICIgPDwgeC52YWx1ZSgpOworfQorCit9ICAv
LyBuYW1lc3BhY2UgZm9vCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFjZSBndGVzdF9w
cmludGVyc190ZXN0IHsKKwordXNpbmcgOjpzdGQ6OmRlcXVlOwordXNpbmcgOjpzdGQ6Omxpc3Q7
Cit1c2luZyA6OnN0ZDo6bWFrZV9wYWlyOwordXNpbmcgOjpzdGQ6Om1hcDsKK3VzaW5nIDo6c3Rk
OjptdWx0aW1hcDsKK3VzaW5nIDo6c3RkOjptdWx0aXNldDsKK3VzaW5nIDo6c3RkOjpwYWlyOwor
dXNpbmcgOjpzdGQ6OnNldDsKK3VzaW5nIDo6c3RkOjp2ZWN0b3I7Cit1c2luZyA6OnRlc3Rpbmc6
OlByaW50VG9TdHJpbmc7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRGb3JDb21w
YXJpc29uRmFpbHVyZU1lc3NhZ2U7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNp
dENhc3RfOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TmF0aXZlQXJyYXk7Cit1c2luZyA6
OnRlc3Rpbmc6OmludGVybmFsOjpSRTsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlJlbGF0
aW9uVG9Tb3VyY2VSZWZlcmVuY2U7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmdz
OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnQ7Cit1c2luZyA6OnRl
c3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxQcmludGVyOwordXNpbmcgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludDsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVu
aXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nczsKK3VzaW5nIDo6dGVzdGluZzo6
aW50ZXJuYWw6OnN0cmluZzsKKworLy8gVGhlIGhhc2hfKiBjbGFzc2VzIGFyZSBub3QgcGFydCBv
ZiB0aGUgQysrIHN0YW5kYXJkLiAgU1RMcG9ydAorLy8gZGVmaW5lcyB0aGVtIGluIG5hbWVzcGFj
ZSBzdGQuICBNU1ZDIGRlZmluZXMgdGhlbSBpbiA6OnN0ZGV4dC4gIEdDQworLy8gZGVmaW5lcyB0
aGVtIGluIDo6LgorI2lmZGVmIF9TVExQX0hBU0hfTUFQICAvLyBXZSBnb3QgPGhhc2hfbWFwPiBm
cm9tIFNUTHBvcnQuCit1c2luZyA6OnN0ZDo6aGFzaF9tYXA7Cit1c2luZyA6OnN0ZDo6aGFzaF9z
ZXQ7Cit1c2luZyA6OnN0ZDo6aGFzaF9tdWx0aW1hcDsKK3VzaW5nIDo6c3RkOjpoYXNoX211bHRp
c2V0OworI2VsaWYgX01TQ19WRVIKK3VzaW5nIDo6c3RkZXh0OjpoYXNoX21hcDsKK3VzaW5nIDo6
c3RkZXh0OjpoYXNoX3NldDsKK3VzaW5nIDo6c3RkZXh0OjpoYXNoX211bHRpbWFwOwordXNpbmcg
OjpzdGRleHQ6Omhhc2hfbXVsdGlzZXQ7CisjZW5kaWYKKworLy8gUHJpbnRzIGEgdmFsdWUgdG8g
YSBzdHJpbmcgdXNpbmcgdGhlIHVuaXZlcnNhbCB2YWx1ZSBwcmludGVyLiAgVGhpcworLy8gaXMg
YSBoZWxwZXIgZm9yIHRlc3RpbmcgVW5pdmVyc2FsUHJpbnRlcjxUPjo6UHJpbnQoKSBmb3IgdmFy
aW91cyB0eXBlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RyaW5nIFByaW50KGNvbnN0IFQm
IHZhbHVlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIFVuaXZlcnNhbFByaW50ZXI8
VD46OlByaW50KHZhbHVlLCAmc3MpOworICByZXR1cm4gc3Muc3RyKCk7Cit9CisKKy8vIFByaW50
cyBhIHZhbHVlIHBhc3NlZCBieSByZWZlcmVuY2UgdG8gYSBzdHJpbmcsIHVzaW5nIHRoZSB1bml2
ZXJzYWwKKy8vIHZhbHVlIHByaW50ZXIuICBUaGlzIGlzIGEgaGVscGVyIGZvciB0ZXN0aW5nCisv
LyBVbml2ZXJzYWxQcmludGVyPFQmPjo6UHJpbnQoKSBmb3IgdmFyaW91cyB0eXBlcy4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorc3RyaW5nIFByaW50QnlSZWYoY29uc3QgVCYgdmFsdWUpIHsKKyAg
OjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2FsUHJpbnRlcjxUJj46OlByaW50KHZh
bHVlLCAmc3MpOworICByZXR1cm4gc3Muc3RyKCk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIHZh
cmlvdXMgZW51bSB0eXBlcy4KKworVEVTVChQcmludEVudW1UZXN0LCBBbm9ueW1vdXNFbnVtKSB7
CisgIEVYUEVDVF9FUSgiLTEiLCBQcmludChrQUUxKSk7CisgIEVYUEVDVF9FUSgiMSIsIFByaW50
KGtBRTIpKTsKK30KKworVEVTVChQcmludEVudW1UZXN0LCBFbnVtV2l0aG91dFByaW50ZXIpIHsK
KyAgRVhQRUNUX0VRKCItMiIsIFByaW50KGtFV1AxKSk7CisgIEVYUEVDVF9FUSgiNDIiLCBQcmlu
dChrRVdQMikpOworfQorCitURVNUKFByaW50RW51bVRlc3QsIEVudW1XaXRoU3RyZWFtaW5nKSB7
CisgIEVYUEVDVF9FUSgia0VXUzEiLCBQcmludChrRVdTMSkpOworICBFWFBFQ1RfRVEoImludmFs
aWQiLCBQcmludChzdGF0aWNfY2FzdDxFbnVtV2l0aFN0cmVhbWluZz4oMCkpKTsKK30KKworVEVT
VChQcmludEVudW1UZXN0LCBFbnVtV2l0aFByaW50VG8pIHsKKyAgRVhQRUNUX0VRKCJrRVdQVDEi
LCBQcmludChrRVdQVDEpKTsKKyAgRVhQRUNUX0VRKCJpbnZhbGlkIiwgUHJpbnQoc3RhdGljX2Nh
c3Q8RW51bVdpdGhQcmludFRvPigwKSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyBhIGNsYXNz
IGltcGxpY2l0bHkgY29udmVydGlibGUgdG8gQmlnZ2VzdEludC4KKworVEVTVChQcmludENsYXNz
VGVzdCwgQmlnZ2VzdEludENvbnZlcnRpYmxlKSB7CisgIEVYUEVDVF9FUSgiNDIiLCBQcmludChC
aWdnZXN0SW50Q29udmVydGlibGUoKSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyB2YXJpb3Vz
IGNoYXIgdHlwZXMuCisKKy8vIGNoYXIuCitURVNUKFByaW50Q2hhclRlc3QsIFBsYWluQ2hhcikg
eworICBFWFBFQ1RfRVEoIidcXDAnIiwgUHJpbnQoJ1wwJykpOworICBFWFBFQ1RfRVEoIidcXCcn
ICgzOSwgMHgyNykiLCBQcmludCgnXCcnKSk7CisgIEVYUEVDVF9FUSgiJ1wiJyAoMzQsIDB4MjIp
IiwgUHJpbnQoJyInKSk7CisgIEVYUEVDVF9FUSgiJz8nICg2MywgMHgzRikiLCBQcmludCgnPycp
KTsKKyAgRVhQRUNUX0VRKCInXFxcXCcgKDkyLCAweDVDKSIsIFByaW50KCdcXCcpKTsKKyAgRVhQ
RUNUX0VRKCInXFxhJyAoNykiLCBQcmludCgnXGEnKSk7CisgIEVYUEVDVF9FUSgiJ1xcYicgKDgp
IiwgUHJpbnQoJ1xiJykpOworICBFWFBFQ1RfRVEoIidcXGYnICgxMiwgMHhDKSIsIFByaW50KCdc
ZicpKTsKKyAgRVhQRUNUX0VRKCInXFxuJyAoMTAsIDB4QSkiLCBQcmludCgnXG4nKSk7CisgIEVY
UEVDVF9FUSgiJ1xccicgKDEzLCAweEQpIiwgUHJpbnQoJ1xyJykpOworICBFWFBFQ1RfRVEoIidc
XHQnICg5KSIsIFByaW50KCdcdCcpKTsKKyAgRVhQRUNUX0VRKCInXFx2JyAoMTEsIDB4QikiLCBQ
cmludCgnXHYnKSk7CisgIEVYUEVDVF9FUSgiJ1xceDdGJyAoMTI3KSIsIFByaW50KCdceDdGJykp
OworICBFWFBFQ1RfRVEoIidcXHhGRicgKDI1NSkiLCBQcmludCgnXHhGRicpKTsKKyAgRVhQRUNU
X0VRKCInICcgKDMyLCAweDIwKSIsIFByaW50KCcgJykpOworICBFWFBFQ1RfRVEoIidhJyAoOTcs
IDB4NjEpIiwgUHJpbnQoJ2EnKSk7Cit9CisKKy8vIHNpZ25lZCBjaGFyLgorVEVTVChQcmludENo
YXJUZXN0LCBTaWduZWRDaGFyKSB7CisgIEVYUEVDVF9FUSgiJ1xcMCciLCBQcmludChzdGF0aWNf
Y2FzdDxzaWduZWQgY2hhcj4oJ1wwJykpKTsKKyAgRVhQRUNUX0VRKCInXFx4Q0UnICgtNTApIiwK
KyAgICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0PHNpZ25lZCBjaGFyPigtNTApKSk7Cit9CisK
Ky8vIHVuc2lnbmVkIGNoYXIuCitURVNUKFByaW50Q2hhclRlc3QsIFVuc2lnbmVkQ2hhcikgewor
ICBFWFBFQ1RfRVEoIidcXDAnIiwgUHJpbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oJ1ww
JykpKTsKKyAgRVhQRUNUX0VRKCInYicgKDk4LCAweDYyKSIsCisgICAgICAgICAgICBQcmludChz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPignYicpKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5n
IG90aGVyIHNpbXBsZSwgYnVpbHQtaW4gdHlwZXMuCisKKy8vIGJvb2wuCitURVNUKFByaW50QnVp
bHRJblR5cGVUZXN0LCBCb29sKSB7CisgIEVYUEVDVF9FUSgiZmFsc2UiLCBQcmludChmYWxzZSkp
OworICBFWFBFQ1RfRVEoInRydWUiLCBQcmludCh0cnVlKSk7Cit9CisKKy8vIHdjaGFyX3QuCitU
RVNUKFByaW50QnVpbHRJblR5cGVUZXN0LCBXY2hhcl90KSB7CisgIEVYUEVDVF9FUSgiTCdcXDAn
IiwgUHJpbnQoTCdcMCcpKTsKKyAgRVhQRUNUX0VRKCJMJ1xcJycgKDM5LCAweDI3KSIsIFByaW50
KEwnXCcnKSk7CisgIEVYUEVDVF9FUSgiTCdcIicgKDM0LCAweDIyKSIsIFByaW50KEwnIicpKTsK
KyAgRVhQRUNUX0VRKCJMJz8nICg2MywgMHgzRikiLCBQcmludChMJz8nKSk7CisgIEVYUEVDVF9F
USgiTCdcXFxcJyAoOTIsIDB4NUMpIiwgUHJpbnQoTCdcXCcpKTsKKyAgRVhQRUNUX0VRKCJMJ1xc
YScgKDcpIiwgUHJpbnQoTCdcYScpKTsKKyAgRVhQRUNUX0VRKCJMJ1xcYicgKDgpIiwgUHJpbnQo
TCdcYicpKTsKKyAgRVhQRUNUX0VRKCJMJ1xcZicgKDEyLCAweEMpIiwgUHJpbnQoTCdcZicpKTsK
KyAgRVhQRUNUX0VRKCJMJ1xcbicgKDEwLCAweEEpIiwgUHJpbnQoTCdcbicpKTsKKyAgRVhQRUNU
X0VRKCJMJ1xccicgKDEzLCAweEQpIiwgUHJpbnQoTCdccicpKTsKKyAgRVhQRUNUX0VRKCJMJ1xc
dCcgKDkpIiwgUHJpbnQoTCdcdCcpKTsKKyAgRVhQRUNUX0VRKCJMJ1xcdicgKDExLCAweEIpIiwg
UHJpbnQoTCdcdicpKTsKKyAgRVhQRUNUX0VRKCJMJ1xceDdGJyAoMTI3KSIsIFByaW50KEwnXHg3
RicpKTsKKyAgRVhQRUNUX0VRKCJMJ1xceEZGJyAoMjU1KSIsIFByaW50KEwnXHhGRicpKTsKKyAg
RVhQRUNUX0VRKCJMJyAnICgzMiwgMHgyMCkiLCBQcmludChMJyAnKSk7CisgIEVYUEVDVF9FUSgi
TCdhJyAoOTcsIDB4NjEpIiwgUHJpbnQoTCdhJykpOworICBFWFBFQ1RfRVEoIkwnXFx4NTc2JyAo
MTM5OCkiLCBQcmludChzdGF0aWNfY2FzdDx3Y2hhcl90PigweDU3NikpKTsKKyAgRVhQRUNUX0VR
KCJMJ1xceEM3NEQnICg1MTAyMSkiLCBQcmludChzdGF0aWNfY2FzdDx3Y2hhcl90PigweEM3NEQp
KSk7Cit9CisKKy8vIFRlc3QgdGhhdCBJbnQ2NCBwcm92aWRlcyBtb3JlIHN0b3JhZ2UgdGhhbiB3
Y2hhcl90LgorVEVTVChQcmludFR5cGVTaXplVGVzdCwgV2NoYXJfdCkgeworICBFWFBFQ1RfTFQo
c2l6ZW9mKHdjaGFyX3QpLCBzaXplb2YodGVzdGluZzo6aW50ZXJuYWw6OkludDY0KSk7Cit9CisK
Ky8vIFZhcmlvdXMgaW50ZWdlciB0eXBlcy4KK1RFU1QoUHJpbnRCdWlsdEluVHlwZVRlc3QsIElu
dGVnZXIpIHsKKyAgRVhQRUNUX0VRKCInXFx4RkYnICgyNTUpIiwgUHJpbnQoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oMjU1KSkpOyAgLy8gdWludDgKKyAgRVhQRUNUX0VRKCInXFx4ODAnICgt
MTI4KSIsIFByaW50KHN0YXRpY19jYXN0PHNpZ25lZCBjaGFyPigtMTI4KSkpOyAgLy8gaW50OAor
ICBFWFBFQ1RfRVEoIjY1NTM1IiwgUHJpbnQoVVNIUlRfTUFYKSk7ICAvLyB1aW50MTYKKyAgRVhQ
RUNUX0VRKCItMzI3NjgiLCBQcmludChTSFJUX01JTikpOyAgLy8gaW50MTYKKyAgRVhQRUNUX0VR
KCI0Mjk0OTY3Mjk1IiwgUHJpbnQoVUlOVF9NQVgpKTsgIC8vIHVpbnQzMgorICBFWFBFQ1RfRVEo
Ii0yMTQ3NDgzNjQ4IiwgUHJpbnQoSU5UX01JTikpOyAgLy8gaW50MzIKKyAgRVhQRUNUX0VRKCIx
ODQ0Njc0NDA3MzcwOTU1MTYxNSIsCisgICAgICAgICAgICBQcmludChzdGF0aWNfY2FzdDx0ZXN0
aW5nOjppbnRlcm5hbDo6VUludDY0PigtMSkpKTsgIC8vIHVpbnQ2NAorICBFWFBFQ1RfRVEoIi05
MjIzMzcyMDM2ODU0Nzc1ODA4IiwKKyAgICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0PHRlc3Rp
bmc6OmludGVybmFsOjpJbnQ2ND4oMSkgPDwgNjMpKTsgIC8vIGludDY0Cit9CisKKy8vIFNpemUg
dHlwZXMuCitURVNUKFByaW50QnVpbHRJblR5cGVUZXN0LCBTaXplX3QpIHsKKyAgRVhQRUNUX0VR
KCIxIiwgUHJpbnQoc2l6ZW9mKCdhJykpKTsgIC8vIHNpemVfdC4KKyNpZiAhR1RFU1RfT1NfV0lO
RE9XUworICAvLyBXaW5kb3dzIGhhcyBubyBzc2l6ZV90IHR5cGUuCisgIEVYUEVDVF9FUSgiLTIi
LCBQcmludChzdGF0aWNfY2FzdDxzc2l6ZV90PigtMikpKTsgIC8vIHNzaXplX3QuCisjZW5kaWYg
IC8vICFHVEVTVF9PU19XSU5ET1dTCit9CisKKy8vIEZsb2F0aW5nLXBvaW50cy4KK1RFU1QoUHJp
bnRCdWlsdEluVHlwZVRlc3QsIEZsb2F0aW5nUG9pbnRzKSB7CisgIEVYUEVDVF9FUSgiMS41Iiwg
UHJpbnQoMS41ZikpOyAgIC8vIGZsb2F0CisgIEVYUEVDVF9FUSgiLTIuNSIsIFByaW50KC0yLjUp
KTsgIC8vIGRvdWJsZQorfQorCisvLyBTaW5jZSA6OnN0ZDo6c3RyaW5nc3RyZWFtOjpvcGVyYXRv
cjw8KGNvbnN0IHZvaWQgKikgZm9ybWF0cyB0aGUgcG9pbnRlcgorLy8gb3V0cHV0IGRpZmZlcmVu
dGx5IHdpdGggZGlmZmVyZW50IGNvbXBpbGVycywgd2UgaGF2ZSB0byBjcmVhdGUgdGhlIGV4cGVj
dGVkCisvLyBvdXRwdXQgZmlyc3QgYW5kIHVzZSBpdCBhcyBvdXIgZXhwZWN0YXRpb24uCitzdGF0
aWMgc3RyaW5nIFByaW50UG9pbnRlcihjb25zdCB2b2lkICpwKSB7CisgIDo6c3RkOjpzdHJpbmdz
dHJlYW0gZXhwZWN0ZWRfcmVzdWx0X3N0cmVhbTsKKyAgZXhwZWN0ZWRfcmVzdWx0X3N0cmVhbSA8
PCBwOworICByZXR1cm4gZXhwZWN0ZWRfcmVzdWx0X3N0cmVhbS5zdHIoKTsKK30KKworLy8gVGVz
dHMgcHJpbnRpbmcgQyBzdHJpbmdzLgorCisvLyBjb25zdCBjaGFyKi4KK1RFU1QoUHJpbnRDU3Ry
aW5nVGVzdCwgQ29uc3QpIHsKKyAgY29uc3QgY2hhciogcCA9ICJXb3JsZCI7CisgIEVYUEVDVF9F
UShQcmludFBvaW50ZXIocCkgKyAiIHBvaW50aW5nIHRvIFwiV29ybGRcIiIsIFByaW50KHApKTsK
K30KKworLy8gY2hhciouCitURVNUKFByaW50Q1N0cmluZ1Rlc3QsIE5vbkNvbnN0KSB7CisgIGNo
YXIgcFtdID0gIkhpIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSArICIgcG9pbnRpbmcg
dG8gXCJIaVwiIiwKKyAgICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0PGNoYXIqPihwKSkpOwor
fQorCisvLyBOVUxMIEMgc3RyaW5nLgorVEVTVChQcmludENTdHJpbmdUZXN0LCBOdWxsKSB7Cisg
IGNvbnN0IGNoYXIqIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9
CisKKy8vIFRlc3RzIHRoYXQgQyBzdHJpbmdzIGFyZSBlc2NhcGVkIHByb3Blcmx5LgorVEVTVChQ
cmludENTdHJpbmdUZXN0LCBFc2NhcGVzUHJvcGVybHkpIHsKKyAgY29uc3QgY2hhciogcCA9ICIn
XCI/XFxcYVxiXGZcblxyXHRcdlx4N0ZceEZGIGEiOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVy
KHApICsgIiBwb2ludGluZyB0byBcIidcXFwiP1xcXFxcXGFcXGJcXGYiCisgICAgICAgICAgICAi
XFxuXFxyXFx0XFx2XFx4N0ZcXHhGRiBhXCIiLAorICAgICAgICAgICAgUHJpbnQocCkpOworfQor
CisvLyBNU1ZDIGNvbXBpbGVyIGNhbiBiZSBjb25maWd1cmVkIHRvIGRlZmluZSB3aGFyX3QgYXMg
YSB0eXBlZGVmCisvLyBvZiB1bnNpZ25lZCBzaG9ydC4gRGVmaW5pbmcgYW4gb3ZlcmxvYWQgZm9y
IGNvbnN0IHdjaGFyX3QqIGluIHRoYXQgY2FzZQorLy8gd291bGQgY2F1c2UgcG9pbnRlcnMgdG8g
dW5zaWduZWQgc2hvcnRzIGJlIHByaW50ZWQgYXMgd2lkZSBzdHJpbmdzLAorLy8gcG9zc2libHkg
YWNjZXNzaW5nIG1vcmUgbWVtb3J5IHRoYW4gaW50ZW5kZWQgYW5kIGNhdXNpbmcgaW52YWxpZAor
Ly8gbWVtb3J5IGFjY2Vzc2VzLiBNU1ZDIGRlZmluZXMgX05BVElWRV9XQ0hBUl9UX0RFRklORUQg
c3ltYm9sIHdoZW4KKy8vIHdjaGFyX3QgaXMgaW1wbGVtZW50ZWQgYXMgYSBuYXRpdmUgdHlwZS4K
KyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5F
RCkKKworLy8gY29uc3Qgd2NoYXJfdCouCitURVNUKFByaW50V2lkZUNTdHJpbmdUZXN0LCBDb25z
dCkgeworICBjb25zdCB3Y2hhcl90KiBwID0gTCJXb3JsZCI7CisgIEVYUEVDVF9FUShQcmludFBv
aW50ZXIocCkgKyAiIHBvaW50aW5nIHRvIExcIldvcmxkXCIiLCBQcmludChwKSk7Cit9CisKKy8v
IHdjaGFyX3QqLgorVEVTVChQcmludFdpZGVDU3RyaW5nVGVzdCwgTm9uQ29uc3QpIHsKKyAgd2No
YXJfdCBwW10gPSBMIkhpIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSArICIgcG9pbnRp
bmcgdG8gTFwiSGlcIiIsCisgICAgICAgICAgICBQcmludChzdGF0aWNfY2FzdDx3Y2hhcl90Kj4o
cCkpKTsKK30KKworLy8gTlVMTCB3aWRlIEMgc3RyaW5nLgorVEVTVChQcmludFdpZGVDU3RyaW5n
VGVzdCwgTnVsbCkgeworICBjb25zdCB3Y2hhcl90KiBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJO
VUxMIiwgUHJpbnQocCkpOworfQorCisvLyBUZXN0cyB0aGF0IHdpZGUgQyBzdHJpbmdzIGFyZSBl
c2NhcGVkIHByb3Blcmx5LgorVEVTVChQcmludFdpZGVDU3RyaW5nVGVzdCwgRXNjYXBlc1Byb3Bl
cmx5KSB7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0geydcJycsICciJywgJz8nLCAnXFwnLCAnXGEn
LCAnXGInLCAnXGYnLCAnXG4nLCAnXHInLAorICAgICAgICAgICAgICAgICAgICAgICAnXHQnLCAn
XHYnLCAweEQzLCAweDU3NiwgMHg4RDMsIDB4Qzc0RCwgJyAnLCAnYScsICdcMCd9OworICBFWFBF
Q1RfRVEoUHJpbnRQb2ludGVyKHMpICsgIiBwb2ludGluZyB0byBMXCInXFxcIj9cXFxcXFxhXFxi
XFxmIgorICAgICAgICAgICAgIlxcblxcclxcdFxcdlxceEQzXFx4NTc2XFx4OEQzXFx4Qzc0RCBh
XCIiLAorICAgICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8Y29uc3Qgd2NoYXJfdCo+KHMpKSk7
Cit9CisjZW5kaWYgIC8vIG5hdGl2ZSB3Y2hhcl90CisKKy8vIFRlc3RzIHByaW50aW5nIHBvaW50
ZXJzIHRvIG90aGVyIGNoYXIgdHlwZXMuCisKKy8vIHNpZ25lZCBjaGFyKi4KK1RFU1QoUHJpbnRD
aGFyUG9pbnRlclRlc3QsIFNpZ25lZENoYXIpIHsKKyAgc2lnbmVkIGNoYXIqIHAgPSByZWludGVy
cHJldF9jYXN0PHNpZ25lZCBjaGFyKj4oMHgxMjM0KTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRl
cihwKSwgUHJpbnQocCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQo
cCkpOworfQorCisvLyBjb25zdCBzaWduZWQgY2hhciouCitURVNUKFByaW50Q2hhclBvaW50ZXJU
ZXN0LCBDb25zdFNpZ25lZENoYXIpIHsKKyAgc2lnbmVkIGNoYXIqIHAgPSByZWludGVycHJldF9j
YXN0PHNpZ25lZCBjaGFyKj4oMHgxMjM0KTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwg
UHJpbnQocCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOwor
fQorCisvLyB1bnNpZ25lZCBjaGFyKi4KK1RFU1QoUHJpbnRDaGFyUG9pbnRlclRlc3QsIFVuc2ln
bmVkQ2hhcikgeworICB1bnNpZ25lZCBjaGFyKiBwID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25l
ZCBjaGFyKj4oMHgxMjM0KTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkp
OworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBj
b25zdCB1bnNpZ25lZCBjaGFyKi4KK1RFU1QoUHJpbnRDaGFyUG9pbnRlclRlc3QsIENvbnN0VW5z
aWduZWRDaGFyKSB7CisgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIqPigweDEyMzQpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVy
KHApLCBQcmludChwKSk7CisgIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChw
KSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIHBvaW50ZXJzIHRvIHNpbXBsZSwgYnVpbHQtaW4g
dHlwZXMuCisKKy8vIGJvb2wqLgorVEVTVChQcmludFBvaW50ZXJUb0J1aWx0SW5UeXBlVGVzdCwg
Qm9vbCkgeworICBib29sKiBwID0gcmVpbnRlcnByZXRfY2FzdDxib29sKj4oMHhBQkNEKTsKKyAg
RVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0gTlVMTDsKKyAgRVhQ
RUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyB2b2lkKi4KK1RFU1QoUHJpbnRQb2lu
dGVyVG9CdWlsdEluVHlwZVRlc3QsIFZvaWQpIHsKKyAgdm9pZCogcCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KDB4QUJDRCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHAp
KTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8g
Y29uc3Qgdm9pZCouCitURVNUKFByaW50UG9pbnRlclRvQnVpbHRJblR5cGVUZXN0LCBDb25zdFZv
aWQpIHsKKyAgY29uc3Qgdm9pZCogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KDB4
QUJDRCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5V
TEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gVGVzdHMgcHJpbnRp
bmcgcG9pbnRlcnMgdG8gcG9pbnRlcnMuCitURVNUKFByaW50UG9pbnRlclRvUG9pbnRlclRlc3Qs
IEludFBvaW50ZXJQb2ludGVyKSB7CisgIGludCoqIHAgPSByZWludGVycHJldF9jYXN0PGludCoq
PigweEFCQ0QpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7CisgIHAg
PSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9CisKKy8vIFRlc3RzIHBy
aW50aW5nIChub24tbWVtYmVyKSBmdW5jdGlvbiBwb2ludGVycy4KKwordm9pZCBNeUZ1bmN0aW9u
KGludCAvKiBuICovKSB7fQorCitURVNUKFByaW50UG9pbnRlclRlc3QsIE5vbk1lbWJlckZ1bmN0
aW9uUG9pbnRlcikgeworICAvLyBXZSBjYW5ub3QgZGlyZWN0bHkgY2FzdCAmTXlGdW5jdGlvbiB0
byBjb25zdCB2b2lkKiBiZWNhdXNlIHRoZQorICAvLyBzdGFuZGFyZCBkaXNhbGxvd3MgY2FzdGlu
ZyBiZXR3ZWVuIHBvaW50ZXJzIHRvIGZ1bmN0aW9ucyBhbmQKKyAgLy8gcG9pbnRlcnMgdG8gb2Jq
ZWN0cywgYW5kIHNvbWUgY29tcGlsZXJzIChlLmcuIEdDQyAzLjQpIGVuZm9yY2UKKyAgLy8gdGhp
cyBsaW1pdGF0aW9uLgorICBFWFBFQ1RfRVEoCisgICAgICBQcmludFBvaW50ZXIocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB2b2lkKj4oCisgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxpbnRlcm5h
bDo6QmlnZ2VzdEludD4oJk15RnVuY3Rpb24pKSksCisgICAgICBQcmludCgmTXlGdW5jdGlvbikp
OworICBpbnQgKCpwKShib29sKSA9IE5VTEw7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX0VRKCJOVUxM
IiwgUHJpbnQocCkpOworfQorCisvLyBBbiBhc3NlcnRpb24gcHJlZGljYXRlIGRldGVybWluaW5n
IHdoZXRoZXIgYSBvbmUgc3RyaW5nIGlzIGEgcHJlZml4IGZvcgorLy8gYW5vdGhlci4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBTdHJpbmdUeXBlPgorQXNzZXJ0aW9uUmVzdWx0IEhhc1ByZWZpeChjb25z
dCBTdHJpbmdUeXBlJiBzdHIsIGNvbnN0IFN0cmluZ1R5cGUmIHByZWZpeCkgeworICBpZiAoc3Ry
LmZpbmQocHJlZml4LCAwKSA9PSAwKQorICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CisK
KyAgY29uc3QgYm9vbCBpc193aWRlX3N0cmluZyA9IHNpemVvZihwcmVmaXhbMF0pID4gMTsKKyAg
Y29uc3QgY2hhciogY29uc3QgYmVnaW5fc3RyaW5nX3F1b3RlID0gaXNfd2lkZV9zdHJpbmcgPyAi
TFwiIiA6ICJcIiI7CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IGJlZ2lu
X3N0cmluZ19xdW90ZSA8PCBwcmVmaXggPDwgIlwiIGlzIG5vdCBhIHByZWZpeCBvZiAiCisgICAg
ICA8PCBiZWdpbl9zdHJpbmdfcXVvdGUgPDwgc3RyIDw8ICJcIlxuIjsKK30KKworLy8gVGVzdHMg
cHJpbnRpbmcgbWVtYmVyIHZhcmlhYmxlIHBvaW50ZXJzLiAgQWx0aG91Z2ggdGhleSBhcmUgY2Fs
bGVkCisvLyBwb2ludGVycywgdGhleSBkb24ndCBwb2ludCB0byBhIGxvY2F0aW9uIGluIHRoZSBh
ZGRyZXNzIHNwYWNlLgorLy8gVGhlaXIgcmVwcmVzZW50YXRpb24gaXMgaW1wbGVtZW50YXRpb24t
ZGVmaW5lZC4gIFRodXMgdGhleSB3aWxsIGJlCisvLyBwcmludGVkIGFzIHJhdyBieXRlcy4KKwor
c3RydWN0IEZvbyB7CisgcHVibGljOgorICB2aXJ0dWFsIH5Gb28oKSB7fQorICBpbnQgTXlNZXRo
b2QoY2hhciB4KSB7IHJldHVybiB4ICsgMTsgfQorICB2aXJ0dWFsIGNoYXIgTXlWaXJ0dWFsTWV0
aG9kKGludCAvKiBuICovKSB7IHJldHVybiAnYSc7IH0KKworICBpbnQgdmFsdWU7Cit9OworCitU
RVNUKFByaW50UG9pbnRlclRlc3QsIE1lbWJlclZhcmlhYmxlUG9pbnRlcikgeworICBFWFBFQ1Rf
VFJVRShIYXNQcmVmaXgoUHJpbnQoJkZvbzo6dmFsdWUpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgUHJpbnQoc2l6ZW9mKCZGb286OnZhbHVlKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKKyAgaW50
IChGb286OipwKSA9IE5VTEw7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KFBy
aW50KHApLAorICAgICAgICAgICAgICAgICAgICAgICAgUHJpbnQoc2l6ZW9mKHApKSArICItYnl0
ZSBvYmplY3QgIikpOworfQorCisvLyBUZXN0cyBwcmludGluZyBtZW1iZXIgZnVuY3Rpb24gcG9p
bnRlcnMuICBBbHRob3VnaCB0aGV5IGFyZSBjYWxsZWQKKy8vIHBvaW50ZXJzLCB0aGV5IGRvbid0
IHBvaW50IHRvIGEgbG9jYXRpb24gaW4gdGhlIGFkZHJlc3Mgc3BhY2UuCisvLyBUaGVpciByZXBy
ZXNlbnRhdGlvbiBpcyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLiAgVGh1cyB0aGV5IHdpbGwgYmUK
Ky8vIHByaW50ZWQgYXMgcmF3IGJ5dGVzLgorVEVTVChQcmludFBvaW50ZXJUZXN0LCBNZW1iZXJG
dW5jdGlvblBvaW50ZXIpIHsKKyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KFByaW50KCZGb286Ok15
TWV0aG9kKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFByaW50KHNpemVvZigmRm9vOjpNeU1l
dGhvZCkpICsgIi1ieXRlIG9iamVjdCAiKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgSGFzUHJl
Zml4KFByaW50KCZGb286Ok15VmlydHVhbE1ldGhvZCksCisgICAgICAgICAgICAgICAgUHJpbnQo
c2l6ZW9mKCgmRm9vOjpNeVZpcnR1YWxNZXRob2QpKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKKyAg
aW50IChGb286OipwKShjaGFyKSA9IE5VTEw7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX1RSVUUoSGFz
UHJlZml4KFByaW50KHApLAorICAgICAgICAgICAgICAgICAgICAgICAgUHJpbnQoc2l6ZW9mKHAp
KSArICItYnl0ZSBvYmplY3QgIikpOworfQorCisvLyBUZXN0cyBwcmludGluZyBDIGFycmF5cy4K
KworLy8gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIGFuZCBQcmludCgpIGlzIHRoYXQgaXQg
ZW5zdXJlcyB0aGF0IHRoZQorLy8gYXJndW1lbnQgaXMgYSByZWZlcmVuY2UgdG8gYW4gYXJyYXku
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitzdHJpbmcgUHJpbnRBcnJheUhlbHBl
cihUICgmYSlbTl0pIHsKKyAgcmV0dXJuIFByaW50KGEpOworfQorCisvLyBPbmUtZGltZW5zaW9u
YWwgYXJyYXkuCitURVNUKFByaW50QXJyYXlUZXN0LCBPbmVEaW1lbnNpb25hbEFycmF5KSB7Cisg
IGludCBhWzVdID0geyAxLCAyLCAzLCA0LCA1IH07CisgIEVYUEVDVF9FUSgieyAxLCAyLCAzLCA0
LCA1IH0iLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8gVHdvLWRpbWVuc2lvbmFsIGFy
cmF5LgorVEVTVChQcmludEFycmF5VGVzdCwgVHdvRGltZW5zaW9uYWxBcnJheSkgeworICBpbnQg
YVsyXVs1XSA9IHsKKyAgICB7IDEsIDIsIDMsIDQsIDUgfSwKKyAgICB7IDYsIDcsIDgsIDksIDAg
fQorICB9OworICBFWFBFQ1RfRVEoInsgeyAxLCAyLCAzLCA0LCA1IH0sIHsgNiwgNywgOCwgOSwg
MCB9IH0iLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8gQXJyYXkgb2YgY29uc3QgZWxl
bWVudHMuCitURVNUKFByaW50QXJyYXlUZXN0LCBDb25zdEFycmF5KSB7CisgIGNvbnN0IGJvb2wg
YVsxXSA9IHsgZmFsc2UgfTsKKyAgRVhQRUNUX0VRKCJ7IGZhbHNlIH0iLCBQcmludEFycmF5SGVs
cGVyKGEpKTsKK30KKworLy8gY2hhciBhcnJheSB3aXRob3V0IHRlcm1pbmF0aW5nIE5VTC4KK1RF
U1QoUHJpbnRBcnJheVRlc3QsIENoYXJBcnJheVdpdGhOb1Rlcm1pbmF0aW5nTnVsKSB7CisgIC8v
IEFycmF5IGEgY29udGFpbnMgJ1wwJyBpbiB0aGUgbWlkZGxlIGFuZCBkb2Vzbid0IGVuZCB3aXRo
ICdcMCcuCisgIGNoYXIgYVtdID0geyAnSCcsICdcMCcsICdpJyB9OworICBFWFBFQ1RfRVEoIlwi
SFxcMGlcIiAobm8gdGVybWluYXRpbmcgTlVMKSIsIFByaW50QXJyYXlIZWxwZXIoYSkpOworfQor
CisvLyBjb25zdCBjaGFyIGFycmF5IHdpdGggdGVybWluYXRpbmcgTlVMLgorVEVTVChQcmludEFy
cmF5VGVzdCwgQ29uc3RDaGFyQXJyYXlXaXRoVGVybWluYXRpbmdOdWwpIHsKKyAgY29uc3QgY2hh
ciBhW10gPSAiXDBIaSI7CisgIEVYUEVDVF9FUSgiXCJcXDBIaVwiIiwgUHJpbnRBcnJheUhlbHBl
cihhKSk7Cit9CisKKy8vIGNvbnN0IHdjaGFyX3QgYXJyYXkgd2l0aG91dCB0ZXJtaW5hdGluZyBO
VUwuCitURVNUKFByaW50QXJyYXlUZXN0LCBXQ2hhckFycmF5V2l0aE5vVGVybWluYXRpbmdOdWwp
IHsKKyAgLy8gQXJyYXkgYSBjb250YWlucyAnXDAnIGluIHRoZSBtaWRkbGUgYW5kIGRvZXNuJ3Qg
ZW5kIHdpdGggJ1wwJy4KKyAgY29uc3Qgd2NoYXJfdCBhW10gPSB7IEwnSCcsIEwnXDAnLCBMJ2kn
IH07CisgIEVYUEVDVF9FUSgiTFwiSFxcMGlcIiAobm8gdGVybWluYXRpbmcgTlVMKSIsIFByaW50
QXJyYXlIZWxwZXIoYSkpOworfQorCisvLyB3Y2hhcl90IGFycmF5IHdpdGggdGVybWluYXRpbmcg
TlVMLgorVEVTVChQcmludEFycmF5VGVzdCwgV0NvbnN0Q2hhckFycmF5V2l0aFRlcm1pbmF0aW5n
TnVsKSB7CisgIGNvbnN0IHdjaGFyX3QgYVtdID0gTCJcMEhpIjsKKyAgRVhQRUNUX0VRKCJMXCJc
XDBIaVwiIiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIEFycmF5IG9mIG9iamVjdHMu
CitURVNUKFByaW50QXJyYXlUZXN0LCBPYmplY3RBcnJheSkgeworICBzdHJpbmcgYVszXSA9IHsg
IkhpIiwgIkhlbGxvIiwgIk5pIGhhbyIgfTsKKyAgRVhQRUNUX0VRKCJ7IFwiSGlcIiwgXCJIZWxs
b1wiLCBcIk5pIGhhb1wiIH0iLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8gQXJyYXkg
d2l0aCBtYW55IGVsZW1lbnRzLgorVEVTVChQcmludEFycmF5VGVzdCwgQmlnQXJyYXkpIHsKKyAg
aW50IGFbMTAwXSA9IHsgMSwgMiwgMyB9OworICBFWFBFQ1RfRVEoInsgMSwgMiwgMywgMCwgMCwg
MCwgMCwgMCwgLi4uLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIH0iLAorICAgICAgICAgICAgUHJp
bnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIDo6c3RyaW5nIGFuZCA6
OnN0ZDo6c3RyaW5nLgorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKy8vIDo6c3RyaW5n
LgorVEVTVChQcmludFN0cmluZ1Rlc3QsIFN0cmluZ0luR2xvYmFsTmFtZXNwYWNlKSB7CisgIGNv
bnN0IGNoYXIgc1tdID0gIidcIj9cXFxhXGJcZlxuXDBcclx0XHZceDdGXHhGRiBhIjsKKyAgY29u
c3QgOjpzdHJpbmcgc3RyKHMsIHNpemVvZihzKSk7CisgIEVYUEVDVF9FUSgiXCInXFxcIj9cXFxc
XFxhXFxiXFxmXFxuXFwwXFxyXFx0XFx2XFx4N0ZcXHhGRiBhXFwwXCIiLAorICAgICAgICAgICAg
UHJpbnQoc3RyKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKKy8v
IDo6c3RkOjpzdHJpbmcuCitURVNUKFByaW50U3RyaW5nVGVzdCwgU3RyaW5nSW5TdGROYW1lc3Bh
Y2UpIHsKKyAgY29uc3QgY2hhciBzW10gPSAiJ1wiP1xcXGFcYlxmXG5cMFxyXHRcdlx4N0ZceEZG
IGEiOworICBjb25zdCA6OnN0ZDo6c3RyaW5nIHN0cihzLCBzaXplb2YocykpOworICBFWFBFQ1Rf
RVEoIlwiJ1xcXCI/XFxcXFxcYVxcYlxcZlxcblxcMFxcclxcdFxcdlxceDdGXFx4RkYgYVxcMFwi
IiwKKyAgICAgICAgICAgIFByaW50KHN0cikpOworfQorCitURVNUKFByaW50U3RyaW5nVGVzdCwg
U3RyaW5nQW1iaWd1b3VzSGV4KSB7CisgIC8vICJceDZCQU5BTkEiIGlzIGFtYmlndW91cywgaXQg
Y2FuIGJlIGludGVycHJldGVkIGFzIHN0YXJ0aW5nIHdpdGggZWl0aGVyIG9mOgorICAvLyAnXHg2
JywgJ1x4NkInLCBvciAnXHg2QkEnLgorCisgIC8vIGEgaGV4IGVzY2FwaW5nIHNlcXVlbmNlIGZv
bGxvd2luZyBieSBhIGRlY2ltYWwgZGlnaXQKKyAgRVhQRUNUX0VRKCJcIjBcXHgxMlwiIFwiM1wi
IiwgUHJpbnQoOjpzdGQ6OnN0cmluZygiMFx4MTIiICIzIikpKTsKKyAgLy8gYSBoZXggZXNjYXBp
bmcgc2VxdWVuY2UgZm9sbG93aW5nIGJ5IGEgaGV4IGRpZ2l0IChsb3dlci1jYXNlKQorICBFWFBF
Q1RfRVEoIlwibW1cXHg2XCIgXCJiYW5hbmFzXCIiLCBQcmludCg6OnN0ZDo6c3RyaW5nKCJtbVx4
NiIgImJhbmFuYXMiKSkpOworICAvLyBhIGhleCBlc2NhcGluZyBzZXF1ZW5jZSBmb2xsb3dpbmcg
YnkgYSBoZXggZGlnaXQgKHVwcGVyLWNhc2UpCisgIEVYUEVDVF9FUSgiXCJOT01cXHg2XCIgXCJC
QU5BTkFcIiIsIFByaW50KDo6c3RkOjpzdHJpbmcoIk5PTVx4NiIgIkJBTkFOQSIpKSk7CisgIC8v
IGEgaGV4IGVzY2FwaW5nIHNlcXVlbmNlIGZvbGxvd2luZyBieSBhIG5vbi14ZGlnaXQKKyAgRVhQ
RUNUX0VRKCJcIiFcXHg1LSFcIiIsIFByaW50KDo6c3RkOjpzdHJpbmcoIiFceDUtISIpKSk7Cit9
CisKKy8vIFRlc3RzIHByaW50aW5nIDo6d3N0cmluZyBhbmQgOjpzdGQ6OndzdHJpbmcuCisKKyNp
ZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKKy8vIDo6d3N0cmluZy4KK1RFU1QoUHJpbnRXaWRl
U3RyaW5nVGVzdCwgU3RyaW5nSW5HbG9iYWxOYW1lc3BhY2UpIHsKKyAgY29uc3Qgd2NoYXJfdCBz
W10gPSBMIidcIj9cXFxhXGJcZlxuXDBcclx0XHZceEQzXHg1NzZceDhEM1x4Qzc0RCBhIjsKKyAg
Y29uc3QgOjp3c3RyaW5nIHN0cihzLCBzaXplb2Yocykvc2l6ZW9mKHdjaGFyX3QpKTsKKyAgRVhQ
RUNUX0VRKCJMXCInXFxcIj9cXFxcXFxhXFxiXFxmXFxuXFwwXFxyXFx0XFx2IgorICAgICAgICAg
ICAgIlxceEQzXFx4NTc2XFx4OEQzXFx4Qzc0RCBhXFwwXCIiLAorICAgICAgICAgICAgUHJpbnQo
c3RyKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORworCisjaWYgR1RF
U1RfSEFTX1NURF9XU1RSSU5HCisvLyA6OnN0ZDo6d3N0cmluZy4KK1RFU1QoUHJpbnRXaWRlU3Ry
aW5nVGVzdCwgU3RyaW5nSW5TdGROYW1lc3BhY2UpIHsKKyAgY29uc3Qgd2NoYXJfdCBzW10gPSBM
IidcIj9cXFxhXGJcZlxuXDBcclx0XHZceEQzXHg1NzZceDhEM1x4Qzc0RCBhIjsKKyAgY29uc3Qg
OjpzdGQ6OndzdHJpbmcgc3RyKHMsIHNpemVvZihzKS9zaXplb2Yod2NoYXJfdCkpOworICBFWFBF
Q1RfRVEoIkxcIidcXFwiP1xcXFxcXGFcXGJcXGZcXG5cXDBcXHJcXHRcXHYiCisgICAgICAgICAg
ICAiXFx4RDNcXHg1NzZcXHg4RDNcXHhDNzREIGFcXDBcIiIsCisgICAgICAgICAgICBQcmludChz
dHIpKTsKK30KKworVEVTVChQcmludFdpZGVTdHJpbmdUZXN0LCBTdHJpbmdBbWJpZ3VvdXNIZXgp
IHsKKyAgLy8gc2FtZSBmb3Igd2lkZSBzdHJpbmdzLgorICBFWFBFQ1RfRVEoIkxcIjBcXHgxMlwi
IExcIjNcIiIsIFByaW50KDo6c3RkOjp3c3RyaW5nKEwiMFx4MTIiIEwiMyIpKSk7CisgIEVYUEVD
VF9FUSgiTFwibW1cXHg2XCIgTFwiYmFuYW5hc1wiIiwKKyAgICAgICAgICAgIFByaW50KDo6c3Rk
Ojp3c3RyaW5nKEwibW1ceDYiIEwiYmFuYW5hcyIpKSk7CisgIEVYUEVDVF9FUSgiTFwiTk9NXFx4
NlwiIExcIkJBTkFOQVwiIiwKKyAgICAgICAgICAgIFByaW50KDo6c3RkOjp3c3RyaW5nKEwiTk9N
XHg2IiBMIkJBTkFOQSIpKSk7CisgIEVYUEVDVF9FUSgiTFwiIVxceDUtIVwiIiwgUHJpbnQoOjpz
dGQ6OndzdHJpbmcoTCIhXHg1LSEiKSkpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dT
VFJJTkcKKworLy8gVGVzdHMgcHJpbnRpbmcgdHlwZXMgdGhhdCBzdXBwb3J0IGdlbmVyaWMgc3Ry
ZWFtaW5nIChpLmUuIHN0cmVhbWluZworLy8gdG8gc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENo
YXJUcmFpdHM+IGZvciBhbnkgdmFsaWQgQ2hhciBhbmQKKy8vIENoYXJUcmFpdHMgdHlwZXMpLgor
CisvLyBUZXN0cyBwcmludGluZyBhIG5vbi10ZW1wbGF0ZSB0eXBlIHRoYXQgc3VwcG9ydHMgZ2Vu
ZXJpYyBzdHJlYW1pbmcuCisKK2NsYXNzIEFsbG93c0dlbmVyaWNTdHJlYW1pbmcge307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyLCB0eXBlbmFtZSBDaGFyVHJhaXRzPgorc3RkOjpiYXNpY19v
c3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcGVyYXRvcjw8KAorICAgIHN0ZDo6YmFzaWNfb3N0
cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYgb3MsCisgICAgY29uc3QgQWxsb3dzR2VuZXJpY1N0cmVh
bWluZyYgLyogYSAqLykgeworICByZXR1cm4gb3MgPDwgIkFsbG93c0dlbmVyaWNTdHJlYW1pbmci
OworfQorCitURVNUKFByaW50VHlwZVdpdGhHZW5lcmljU3RyZWFtaW5nVGVzdCwgTm9uVGVtcGxh
dGVUeXBlKSB7CisgIEFsbG93c0dlbmVyaWNTdHJlYW1pbmcgYTsKKyAgRVhQRUNUX0VRKCJBbGxv
d3NHZW5lcmljU3RyZWFtaW5nIiwgUHJpbnQoYSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyBh
IHRlbXBsYXRlIHR5cGUgdGhhdCBzdXBwb3J0cyBnZW5lcmljIHN0cmVhbWluZy4KKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBBbGxvd3NHZW5lcmljU3RyZWFtaW5nVGVtcGxhdGUge307
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyLCB0eXBlbmFtZSBDaGFyVHJhaXRzLCB0eXBlbmFt
ZSBUPgorc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcGVyYXRvcjw8KAor
ICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYgb3MsCisgICAgY29uc3Qg
QWxsb3dzR2VuZXJpY1N0cmVhbWluZ1RlbXBsYXRlPFQ+JiAvKiBhICovKSB7CisgIHJldHVybiBv
cyA8PCAiQWxsb3dzR2VuZXJpY1N0cmVhbWluZ1RlbXBsYXRlIjsKK30KKworVEVTVChQcmludFR5
cGVXaXRoR2VuZXJpY1N0cmVhbWluZ1Rlc3QsIFRlbXBsYXRlVHlwZSkgeworICBBbGxvd3NHZW5l
cmljU3RyZWFtaW5nVGVtcGxhdGU8aW50PiBhOworICBFWFBFQ1RfRVEoIkFsbG93c0dlbmVyaWNT
dHJlYW1pbmdUZW1wbGF0ZSIsIFByaW50KGEpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgYSB0
eXBlIHRoYXQgc3VwcG9ydHMgZ2VuZXJpYyBzdHJlYW1pbmcgYW5kIGNhbiBiZQorLy8gaW1wbGlj
aXRseSBjb252ZXJ0ZWQgdG8gYW5vdGhlciBwcmludGFibGUgdHlwZS4KKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitjbGFzcyBBbGxvd3NHZW5lcmljU3RyZWFtaW5nQW5kSW1wbGljaXRDb252ZXJz
aW9uVGVtcGxhdGUgeworIHB1YmxpYzoKKyAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhciwgdHlwZW5hbWUgQ2hhclRy
YWl0cywgdHlwZW5hbWUgVD4KK3N0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYg
b3BlcmF0b3I8PCgKKyAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9z
LAorICAgIGNvbnN0IEFsbG93c0dlbmVyaWNTdHJlYW1pbmdBbmRJbXBsaWNpdENvbnZlcnNpb25U
ZW1wbGF0ZTxUPiYgLyogYSAqLykgeworICByZXR1cm4gb3MgPDwgIkFsbG93c0dlbmVyaWNTdHJl
YW1pbmdBbmRJbXBsaWNpdENvbnZlcnNpb25UZW1wbGF0ZSI7Cit9CisKK1RFU1QoUHJpbnRUeXBl
V2l0aEdlbmVyaWNTdHJlYW1pbmdUZXN0LCBUeXBlSW1wbGljaXRseUNvbnZlcnRpYmxlKSB7Cisg
IEFsbG93c0dlbmVyaWNTdHJlYW1pbmdBbmRJbXBsaWNpdENvbnZlcnNpb25UZW1wbGF0ZTxpbnQ+
IGE7CisgIEVYUEVDVF9FUSgiQWxsb3dzR2VuZXJpY1N0cmVhbWluZ0FuZEltcGxpY2l0Q29udmVy
c2lvblRlbXBsYXRlIiwgUHJpbnQoYSkpOworfQorCisjaWYgR1RFU1RfSEFTX1NUUklOR19QSUVD
RV8KKworLy8gVGVzdHMgcHJpbnRpbmcgU3RyaW5nUGllY2UuCisKK1RFU1QoUHJpbnRTdHJpbmdQ
aWVjZVRlc3QsIFNpbXBsZVN0cmluZ1BpZWNlKSB7CisgIGNvbnN0IFN0cmluZ1BpZWNlIHNwID0g
IkhlbGxvIjsKKyAgRVhQRUNUX0VRKCJcIkhlbGxvXCIiLCBQcmludChzcCkpOworfQorCitURVNU
KFByaW50U3RyaW5nUGllY2VUZXN0LCBVbnByaW50YWJsZUNoYXJhY3RlcnMpIHsKKyAgY29uc3Qg
Y2hhciBzdHJbXSA9ICJOVUwgKFwwKSBhbmQgXHJcdCI7CisgIGNvbnN0IFN0cmluZ1BpZWNlIHNw
KHN0ciwgc2l6ZW9mKHN0cikgLSAxKTsKKyAgRVhQRUNUX0VRKCJcIk5VTCAoXFwwKSBhbmQgXFxy
XFx0XCIiLCBQcmludChzcCkpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19TVFJJTkdfUElF
Q0VfCisKKy8vIFRlc3RzIHByaW50aW5nIFNUTCBjb250YWluZXJzLgorCitURVNUKFByaW50U3Rs
Q29udGFpbmVyVGVzdCwgRW1wdHlEZXF1ZSkgeworICBkZXF1ZTxjaGFyPiBlbXB0eTsKKyAgRVhQ
RUNUX0VRKCJ7fSIsIFByaW50KGVtcHR5KSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJU
ZXN0LCBOb25FbXB0eURlcXVlKSB7CisgIGRlcXVlPGludD4gbm9uX2VtcHR5OworICBub25fZW1w
dHkucHVzaF9iYWNrKDEpOworICBub25fZW1wdHkucHVzaF9iYWNrKDMpOworICBFWFBFQ1RfRVEo
InsgMSwgMyB9IiwgUHJpbnQobm9uX2VtcHR5KSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfSEFTSF9N
QVBfCisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBPbmVFbGVtZW50SGFzaE1hcCkgewor
ICBoYXNoX21hcDxpbnQsIGNoYXI+IG1hcDE7CisgIG1hcDFbMV0gPSAnYSc7CisgIEVYUEVDVF9F
USgieyAoMSwgJ2EnICg5NywgMHg2MSkpIH0iLCBQcmludChtYXAxKSk7Cit9CisKK1RFU1QoUHJp
bnRTdGxDb250YWluZXJUZXN0LCBIYXNoTXVsdGlNYXApIHsKKyAgaGFzaF9tdWx0aW1hcDxpbnQs
IGJvb2w+IG1hcDE7CisgIG1hcDEuaW5zZXJ0KG1ha2VfcGFpcig1LCB0cnVlKSk7CisgIG1hcDEu
aW5zZXJ0KG1ha2VfcGFpcig1LCBmYWxzZSkpOworCisgIC8vIEVsZW1lbnRzIG9mIGhhc2hfbXVs
dGltYXAgY2FuIGJlIHByaW50ZWQgaW4gYW55IG9yZGVyLgorICBjb25zdCBzdHJpbmcgcmVzdWx0
ID0gUHJpbnQobWFwMSk7CisgIEVYUEVDVF9UUlVFKHJlc3VsdCA9PSAieyAoNSwgdHJ1ZSksICg1
LCBmYWxzZSkgfSIgfHwKKyAgICAgICAgICAgICAgcmVzdWx0ID09ICJ7ICg1LCBmYWxzZSksICg1
LCB0cnVlKSB9IikKKyAgICAgICAgICAgICAgICAgIDw8ICIgd2hlcmUgUHJpbnQobWFwMSkgcmV0
dXJucyBcIiIgPDwgcmVzdWx0IDw8ICJcIi4iOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19I
QVNIX01BUF8KKworI2lmIEdURVNUX0hBU19IQVNIX1NFVF8KKworVEVTVChQcmludFN0bENvbnRh
aW5lclRlc3QsIEhhc2hTZXQpIHsKKyAgaGFzaF9zZXQ8c3RyaW5nPiBzZXQxOworICBzZXQxLmlu
c2VydCgiaGVsbG8iKTsKKyAgRVhQRUNUX0VRKCJ7IFwiaGVsbG9cIiB9IiwgUHJpbnQoc2V0MSkp
OworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgSGFzaE11bHRpU2V0KSB7CisgIGNv
bnN0IGludCBrU2l6ZSA9IDU7CisgIGludCBhW2tTaXplXSA9IHsgMSwgMSwgMiwgNSwgMSB9Owor
ICBoYXNoX211bHRpc2V0PGludD4gc2V0MShhLCBhICsga1NpemUpOworCisgIC8vIEVsZW1lbnRz
IG9mIGhhc2hfbXVsdGlzZXQgY2FuIGJlIHByaW50ZWQgaW4gYW55IG9yZGVyLgorICBjb25zdCBz
dHJpbmcgcmVzdWx0ID0gUHJpbnQoc2V0MSk7CisgIGNvbnN0IHN0cmluZyBleHBlY3RlZF9wYXR0
ZXJuID0gInsgZCwgZCwgZCwgZCwgZCB9IjsgIC8vIGQgbWVhbnMgYSBkaWdpdC4KKworICAvLyBW
ZXJpZmllcyB0aGUgcmVzdWx0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIHBhdHRlcm47IGFsc28gZXh0
cmFjdHMKKyAgLy8gdGhlIG51bWJlcnMgaW4gdGhlIHJlc3VsdC4KKyAgQVNTRVJUX0VRKGV4cGVj
dGVkX3BhdHRlcm4ubGVuZ3RoKCksIHJlc3VsdC5sZW5ndGgoKSk7CisgIHN0ZDo6dmVjdG9yPGlu
dD4gbnVtYmVyczsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gcmVzdWx0Lmxlbmd0aCgpOyBp
KyspIHsKKyAgICBpZiAoZXhwZWN0ZWRfcGF0dGVybltpXSA9PSAnZCcpIHsKKyAgICAgIEFTU0VS
VF9ORShpc2RpZ2l0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHJlc3VsdFtpXSkpLCAwKTsK
KyAgICAgIG51bWJlcnMucHVzaF9iYWNrKHJlc3VsdFtpXSAtICcwJyk7CisgICAgfSBlbHNlIHsK
KyAgICAgIEVYUEVDVF9FUShleHBlY3RlZF9wYXR0ZXJuW2ldLCByZXN1bHRbaV0pIDw8ICIgd2hl
cmUgcmVzdWx0IGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8IHJlc3VsdDsKKyAgICB9CisgIH0KKworICAvLyBNYWtlcyBzdXJlIHRoZSByZXN1
bHQgY29udGFpbnMgdGhlIHJpZ2h0IG51bWJlcnMuCisgIHN0ZDo6c29ydChudW1iZXJzLmJlZ2lu
KCksIG51bWJlcnMuZW5kKCkpOworICBzdGQ6OnNvcnQoYSwgYSArIGtTaXplKTsKKyAgRVhQRUNU
X1RSVUUoc3RkOjplcXVhbChhLCBhICsga1NpemUsIG51bWJlcnMuYmVnaW4oKSkpOworfQorCisj
ZW5kaWYgIC8vIEdURVNUX0hBU19IQVNIX1NFVF8KKworVEVTVChQcmludFN0bENvbnRhaW5lclRl
c3QsIExpc3QpIHsKKyAgY29uc3Qgc3RyaW5nIGFbXSA9IHsKKyAgICAiaGVsbG8iLAorICAgICJ3
b3JsZCIKKyAgfTsKKyAgY29uc3QgbGlzdDxzdHJpbmc+IHN0cmluZ3MoYSwgYSArIDIpOworICBF
WFBFQ1RfRVEoInsgXCJoZWxsb1wiLCBcIndvcmxkXCIgfSIsIFByaW50KHN0cmluZ3MpKTsKK30K
KworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIE1hcCkgeworICBtYXA8aW50LCBib29sPiBt
YXAxOworICBtYXAxWzFdID0gdHJ1ZTsKKyAgbWFwMVs1XSA9IGZhbHNlOworICBtYXAxWzNdID0g
dHJ1ZTsKKyAgRVhQRUNUX0VRKCJ7ICgxLCB0cnVlKSwgKDMsIHRydWUpLCAoNSwgZmFsc2UpIH0i
LCBQcmludChtYXAxKSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBNdWx0aU1h
cCkgeworICBtdWx0aW1hcDxib29sLCBpbnQ+IG1hcDE7CisgIC8vIFRoZSBtYWtlX3BhaXIgdGVt
cGxhdGUgZnVuY3Rpb24gd291bGQgZGVkdWNlIHRoZSB0eXBlIGFzCisgIC8vIHBhaXI8Ym9vbCwg
aW50PiBoZXJlLCBhbmQgc2luY2UgdGhlIGtleSBwYXJ0IGluIGEgbXVsdGltYXAgaGFzIHRvCisg
IC8vIGJlIGNvbnN0YW50LCB3aXRob3V0IGEgdGVtcGxhdGVkIGN0b3IgaW4gdGhlIHBhaXIgY2xh
c3MgKGFzIGluCisgIC8vIGxpYkNzdGQgb24gU29sYXJpcyksIG1ha2VfcGFpciBjYWxsIHdvdWxk
IGZhaWwgdG8gY29tcGlsZSBhcyBubworICAvLyBpbXBsaWNpdCBjb252ZXJzaW9uIGlzIGZvdW5k
LiAgVGh1cyBleHBsaWNpdCB0eXBlbmFtZSBpcyB1c2VkCisgIC8vIGhlcmUgaW5zdGVhZC4KKyAg
bWFwMS5pbnNlcnQocGFpcjxjb25zdCBib29sLCBpbnQ+KHRydWUsIDApKTsKKyAgbWFwMS5pbnNl
cnQocGFpcjxjb25zdCBib29sLCBpbnQ+KHRydWUsIDEpKTsKKyAgbWFwMS5pbnNlcnQocGFpcjxj
b25zdCBib29sLCBpbnQ+KGZhbHNlLCAyKSk7CisgIEVYUEVDVF9FUSgieyAoZmFsc2UsIDIpLCAo
dHJ1ZSwgMCksICh0cnVlLCAxKSB9IiwgUHJpbnQobWFwMSkpOworfQorCitURVNUKFByaW50U3Rs
Q29udGFpbmVyVGVzdCwgU2V0KSB7CisgIGNvbnN0IHVuc2lnbmVkIGludCBhW10gPSB7IDMsIDAs
IDUgfTsKKyAgc2V0PHVuc2lnbmVkIGludD4gc2V0MShhLCBhICsgMyk7CisgIEVYUEVDVF9FUSgi
eyAwLCAzLCA1IH0iLCBQcmludChzZXQxKSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJU
ZXN0LCBNdWx0aVNldCkgeworICBjb25zdCBpbnQgYVtdID0geyAxLCAxLCAyLCA1LCAxIH07Cisg
IG11bHRpc2V0PGludD4gc2V0MShhLCBhICsgNSk7CisgIEVYUEVDVF9FUSgieyAxLCAxLCAxLCAy
LCA1IH0iLCBQcmludChzZXQxKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElT
VF8KKy8vIDxzbGlzdD4gaXMgYXZhaWxhYmxlIG9uIExpbnV4IGluIHRoZSBnb29nbGUzIG1vZGUs
IGJ1dCBub3Qgb24KKy8vIFdpbmRvd3Mgb3IgTWFjIE9TIFguCisKK1RFU1QoUHJpbnRTdGxDb250
YWluZXJUZXN0LCBTaW5nbHlMaW5rZWRMaXN0KSB7CisgIGludCBhW10gPSB7IDksIDIsIDggfTsK
KyAgY29uc3Qgc3RkOjpmb3J3YXJkX2xpc3Q8aW50PiBpbnRzKGEsIGEgKyAzKTsKKyAgRVhQRUNU
X0VRKCJ7IDksIDIsIDggfSIsIFByaW50KGludHMpKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFT
X1NURF9GT1JXQVJEX0xJU1RfCisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBQYWlyKSB7
CisgIHBhaXI8Y29uc3QgYm9vbCwgaW50PiBwKHRydWUsIDUpOworICBFWFBFQ1RfRVEoIih0cnVl
LCA1KSIsIFByaW50KHApKTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIFZlY3Rv
cikgeworICB2ZWN0b3I8aW50PiB2OworICB2LnB1c2hfYmFjaygxKTsKKyAgdi5wdXNoX2JhY2so
Mik7CisgIEVYUEVDVF9FUSgieyAxLCAyIH0iLCBQcmludCh2KSk7Cit9CisKK1RFU1QoUHJpbnRT
dGxDb250YWluZXJUZXN0LCBMb25nU2VxdWVuY2UpIHsKKyAgY29uc3QgaW50IGFbMTAwXSA9IHsg
MSwgMiwgMyB9OworICBjb25zdCB2ZWN0b3I8aW50PiB2KGEsIGEgKyAxMDApOworICBFWFBFQ1Rf
RVEoInsgMSwgMiwgMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
IgorICAgICAgICAgICAgIjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIC4uLiB9IiwgUHJpbnQodikpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwg
TmVzdGVkQ29udGFpbmVyKSB7CisgIGNvbnN0IGludCBhMVtdID0geyAxLCAyIH07CisgIGNvbnN0
IGludCBhMltdID0geyAzLCA0LCA1IH07CisgIGNvbnN0IGxpc3Q8aW50PiBsMShhMSwgYTEgKyAy
KTsKKyAgY29uc3QgbGlzdDxpbnQ+IGwyKGEyLCBhMiArIDMpOworCisgIHZlY3RvcjxsaXN0PGlu
dD4gPiB2OworICB2LnB1c2hfYmFjayhsMSk7CisgIHYucHVzaF9iYWNrKGwyKTsKKyAgRVhQRUNU
X0VRKCJ7IHsgMSwgMiB9LCB7IDMsIDQsIDUgfSB9IiwgUHJpbnQodikpOworfQorCitURVNUKFBy
aW50U3RsQ29udGFpbmVyVGVzdCwgT25lRGltZW5zaW9uYWxOYXRpdmVBcnJheSkgeworICBjb25z
dCBpbnQgYVszXSA9IHsgMSwgMiwgMyB9OworICBOYXRpdmVBcnJheTxpbnQ+IGIoYSwgMywgUmVs
YXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgpKTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDIsIDMgfSIsIFBy
aW50KGIpKTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIFR3b0RpbWVuc2lvbmFs
TmF0aXZlQXJyYXkpIHsKKyAgY29uc3QgaW50IGFbMl1bM10gPSB7IHsgMSwgMiwgMyB9LCB7IDQs
IDUsIDYgfSB9OworICBOYXRpdmVBcnJheTxpbnRbM10+IGIoYSwgMiwgUmVsYXRpb25Ub1NvdXJj
ZVJlZmVyZW5jZSgpKTsKKyAgRVhQRUNUX0VRKCJ7IHsgMSwgMiwgMyB9LCB7IDQsIDUsIDYgfSB9
IiwgUHJpbnQoYikpOworfQorCisvLyBUZXN0cyB0aGF0IGEgY2xhc3MgbmFtZWQgaXRlcmF0b3Ig
aXNuJ3QgdHJlYXRlZCBhcyBhIGNvbnRhaW5lci4KKworc3RydWN0IGl0ZXJhdG9yIHsKKyAgY2hh
ciB4OworfTsKKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIEl0ZXJhdG9yKSB7CisgIGl0
ZXJhdG9yIGl0ID0ge307CisgIEVYUEVDVF9FUSgiMS1ieXRlIG9iamVjdCA8MDA+IiwgUHJpbnQo
aXQpKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIGNsYXNzIG5hbWVkIGNvbnN0X2l0ZXJhdG9yIGlz
bid0IHRyZWF0ZWQgYXMgYSBjb250YWluZXIuCisKK3N0cnVjdCBjb25zdF9pdGVyYXRvciB7Cisg
IGNoYXIgeDsKK307CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBDb25zdEl0ZXJhdG9y
KSB7CisgIGNvbnN0X2l0ZXJhdG9yIGl0ID0ge307CisgIEVYUEVDVF9FUSgiMS1ieXRlIG9iamVj
dCA8MDA+IiwgUHJpbnQoaXQpKTsKK30KKworI2lmIEdURVNUX0hBU19UUjFfVFVQTEUKKy8vIFRl
c3RzIHByaW50aW5nIDo6c3RkOjp0cjE6OnR1cGxlcy4KKworLy8gVHVwbGVzIG9mIHZhcmlvdXMg
YXJpdGllcy4KK1RFU1QoUHJpbnRUcjFUdXBsZVRlc3QsIFZhcmlvdXNTaXplcykgeworICA6OnN0
ZDo6dHIxOjp0dXBsZTw+IHQwOworICBFWFBFQ1RfRVEoIigpIiwgUHJpbnQodDApKTsKKworICA6
OnN0ZDo6dHIxOjp0dXBsZTxpbnQ+IHQxKDUpOworICBFWFBFQ1RfRVEoIig1KSIsIFByaW50KHQx
KSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Y2hhciwgYm9vbD4gdDIoJ2EnLCB0cnVlKTsKKyAg
RVhQRUNUX0VRKCIoJ2EnICg5NywgMHg2MSksIHRydWUpIiwgUHJpbnQodDIpKTsKKworICA6OnN0
ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQsIGludD4gdDMoZmFsc2UsIDIsIDMpOworICBFWFBFQ1Rf
RVEoIihmYWxzZSwgMiwgMykiLCBQcmludCh0MykpOworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGJv
b2wsIGludCwgaW50LCBpbnQ+IHQ0KGZhbHNlLCAyLCAzLCA0KTsKKyAgRVhQRUNUX0VRKCIoZmFs
c2UsIDIsIDMsIDQpIiwgUHJpbnQodDQpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBp
bnQsIGludCwgaW50LCBib29sPiB0NShmYWxzZSwgMiwgMywgNCwgdHJ1ZSk7CisgIEVYUEVDVF9F
USgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlKSIsIFByaW50KHQ1KSk7CisKKyAgOjpzdGQ6OnRyMTo6
dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50PiB0NihmYWxzZSwgMiwgMywgNCwg
dHJ1ZSwgNik7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2KSIsIFByaW50
KHQ2KSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwg
aW50LCBpbnQ+IHQ3KAorICAgICAgZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcpOworICBFWFBF
Q1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNykiLCBQcmludCh0NykpOworCisgIDo6
c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBib29s
PiB0OCgKKyAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlKTsKKyAgRVhQRUNU
X0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUpIiwgUHJpbnQodDgpKTsKKwor
ICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGludCwg
Ym9vbCwgaW50PiB0OSgKKyAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlLCA5
KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUsIDkpIiwg
UHJpbnQodDkpKTsKKworICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAiOCI7CisgIC8vIFZDKysg
MjAxMCdzIGltcGxlbWVudGF0aW9uIG9mIHR1cGxlIG9mIEMrKzB4IGlzIGRlZmljaWVudCwgcmVx
dWlyaW5nCisgIC8vIGFuIGV4cGxpY2l0IHR5cGUgY2FzdCBvZiBOVUxMIHRvIGJlIHVzZWQuCisg
IDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGNoYXIsIHNob3J0LCB0ZXN0aW5nOjppbnRlcm5hbDo6
SW50MzIsICAvLyBOT0xJTlQKKyAgICAgIHRlc3Rpbmc6OmludGVybmFsOjpJbnQ2NCwgZmxvYXQs
IGRvdWJsZSwgY29uc3QgY2hhciosIHZvaWQqLCBzdHJpbmc+CisgICAgICB0MTAoZmFsc2UsICdh
JywgMywgNCwgNSwgMS41RiwgLTIuNSwgc3RyLAorICAgICAgICAgIEltcGxpY2l0Q2FzdF88dm9p
ZCo+KE5VTEwpLCAiMTAiKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsICdhJyAoOTcsIDB4NjEpLCAz
LCA0LCA1LCAxLjUsIC0yLjUsICIgKyBQcmludFBvaW50ZXIoc3RyKSArCisgICAgICAgICAgICAi
IHBvaW50aW5nIHRvIFwiOFwiLCBOVUxMLCBcIjEwXCIpIiwKKyAgICAgICAgICAgIFByaW50KHQx
MCkpOworfQorCisvLyBOZXN0ZWQgdHVwbGVzLgorVEVTVChQcmludFRyMVR1cGxlVGVzdCwgTmVz
dGVkVHVwbGUpIHsKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8IDo6c3RkOjp0cjE6OnR1cGxlPGludCwg
Ym9vbD4sIGNoYXI+IG5lc3RlZCgKKyAgICAgIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGUoNSwgdHJ1
ZSksICdhJyk7CisgIEVYUEVDVF9FUSgiKCg1LCB0cnVlKSwgJ2EnICg5NywgMHg2MSkpIiwgUHJp
bnQobmVzdGVkKSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRQorCisjaWYg
R1RFU1RfSEFTX1NURF9UVVBMRV8KKy8vIFRlc3RzIHByaW50aW5nIDo6c3RkOjp0dXBsZXMuCisK
Ky8vIFR1cGxlcyBvZiB2YXJpb3VzIGFyaXRpZXMuCitURVNUKFByaW50U3RkVHVwbGVUZXN0LCBW
YXJpb3VzU2l6ZXMpIHsKKyAgOjpzdGQ6OnR1cGxlPD4gdDA7CisgIEVYUEVDVF9FUSgiKCkiLCBQ
cmludCh0MCkpOworCisgIDo6c3RkOjp0dXBsZTxpbnQ+IHQxKDUpOworICBFWFBFQ1RfRVEoIig1
KSIsIFByaW50KHQxKSk7CisKKyAgOjpzdGQ6OnR1cGxlPGNoYXIsIGJvb2w+IHQyKCdhJywgdHJ1
ZSk7CisgIEVYUEVDVF9FUSgiKCdhJyAoOTcsIDB4NjEpLCB0cnVlKSIsIFByaW50KHQyKSk7CisK
KyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwgaW50PiB0MyhmYWxzZSwgMiwgMyk7CisgIEVYUEVD
VF9FUSgiKGZhbHNlLCAyLCAzKSIsIFByaW50KHQzKSk7CisKKyAgOjpzdGQ6OnR1cGxlPGJvb2ws
IGludCwgaW50LCBpbnQ+IHQ0KGZhbHNlLCAyLCAzLCA0KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2Us
IDIsIDMsIDQpIiwgUHJpbnQodDQpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQs
IGludCwgYm9vbD4gdDUoZmFsc2UsIDIsIDMsIDQsIHRydWUpOworICBFWFBFQ1RfRVEoIihmYWxz
ZSwgMiwgMywgNCwgdHJ1ZSkiLCBQcmludCh0NSkpOworCisgIDo6c3RkOjp0dXBsZTxib29sLCBp
bnQsIGludCwgaW50LCBib29sLCBpbnQ+IHQ2KGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2KTsKKyAg
RVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYpIiwgUHJpbnQodDYpKTsKKworICA6
OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQ+IHQ3KAorICAg
ICAgZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwg
MywgNCwgdHJ1ZSwgNiwgNykiLCBQcmludCh0NykpOworCisgIDo6c3RkOjp0dXBsZTxib29sLCBp
bnQsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgYm9vbD4gdDgoCisgICAgICBmYWxzZSwgMiwg
MywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0
cnVlLCA2LCA3LCB0cnVlKSIsIFByaW50KHQ4KSk7CisKKyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGlu
dCwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBib29sLCBpbnQ+IHQ5KAorICAgICAgZmFsc2Us
IDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUsIDkpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwg
MywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSwgOSkiLCBQcmludCh0OSkpOworCisgIGNvbnN0IGNoYXIq
IGNvbnN0IHN0ciA9ICI4IjsKKyAgLy8gVkMrKyAyMDEwJ3MgaW1wbGVtZW50YXRpb24gb2YgdHVw
bGUgb2YgQysrMHggaXMgZGVmaWNpZW50LCByZXF1aXJpbmcKKyAgLy8gYW4gZXhwbGljaXQgdHlw
ZSBjYXN0IG9mIE5VTEwgdG8gYmUgdXNlZC4KKyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGNoYXIsIHNo
b3J0LCB0ZXN0aW5nOjppbnRlcm5hbDo6SW50MzIsICAvLyBOT0xJTlQKKyAgICAgIHRlc3Rpbmc6
OmludGVybmFsOjpJbnQ2NCwgZmxvYXQsIGRvdWJsZSwgY29uc3QgY2hhciosIHZvaWQqLCBzdHJp
bmc+CisgICAgICB0MTAoZmFsc2UsICdhJywgMywgNCwgNSwgMS41RiwgLTIuNSwgc3RyLAorICAg
ICAgICAgIEltcGxpY2l0Q2FzdF88dm9pZCo+KE5VTEwpLCAiMTAiKTsKKyAgRVhQRUNUX0VRKCIo
ZmFsc2UsICdhJyAoOTcsIDB4NjEpLCAzLCA0LCA1LCAxLjUsIC0yLjUsICIgKyBQcmludFBvaW50
ZXIoc3RyKSArCisgICAgICAgICAgICAiIHBvaW50aW5nIHRvIFwiOFwiLCBOVUxMLCBcIjEwXCIp
IiwKKyAgICAgICAgICAgIFByaW50KHQxMCkpOworfQorCisvLyBOZXN0ZWQgdHVwbGVzLgorVEVT
VChQcmludFN0ZFR1cGxlVGVzdCwgTmVzdGVkVHVwbGUpIHsKKyAgOjpzdGQ6OnR1cGxlPCA6OnN0
ZDo6dHVwbGU8aW50LCBib29sPiwgY2hhcj4gbmVzdGVkKAorICAgICAgOjpzdGQ6Om1ha2VfdHVw
bGUoNSwgdHJ1ZSksICdhJyk7CisgIEVYUEVDVF9FUSgiKCg1LCB0cnVlKSwgJ2EnICg5NywgMHg2
MSkpIiwgUHJpbnQobmVzdGVkKSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfTEFOR19DWFgxMQor
CisvLyBUZXN0cyBwcmludGluZyB1c2VyLWRlZmluZWQgdW5wcmludGFibGUgdHlwZXMuCisKKy8v
IFVucHJpbnRhYmxlIHR5cGVzIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgorVEVTVChQcmludFVu
cHJpbnRhYmxlVHlwZVRlc3QsIEluR2xvYmFsTmFtZXNwYWNlKSB7CisgIEVYUEVDVF9FUSgiMS1i
eXRlIG9iamVjdCA8MDA+IiwKKyAgICAgICAgICAgIFByaW50KFVucHJpbnRhYmxlVGVtcGxhdGVJ
bkdsb2JhbDxjaGFyPigpKSk7Cit9CisKKy8vIFVucHJpbnRhYmxlIHR5cGVzIGluIGEgdXNlciBu
YW1lc3BhY2UuCitURVNUKFByaW50VW5wcmludGFibGVUeXBlVGVzdCwgSW5Vc2VyTmFtZXNwYWNl
KSB7CisgIEVYUEVDVF9FUSgiMTYtYnl0ZSBvYmplY3QgPEVGLTEyIDAwLTAwIDM0LUFCIDAwLTAw
IDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwPiIsCisgICAgICAgICAgICBQcmludCg6OmZvbzo6VW5w
cmludGFibGVJbkZvbygpKSk7Cit9CisKKy8vIFVucHJpbnRhYmxlIHR5cGVzIGFyZSB0aGF0IHRv
byBiaWcgdG8gYmUgcHJpbnRlZCBjb21wbGV0ZWx5LgorCitzdHJ1Y3QgQmlnIHsKKyAgQmlnKCkg
eyBtZW1zZXQoYXJyYXksIDAsIHNpemVvZihhcnJheSkpOyB9CisgIGNoYXIgYXJyYXlbMjU3XTsK
K307CisKK1RFU1QoUHJpbnRVbnByaXRhYmxlVHlwZVRlc3QsIEJpZ09iamVjdCkgeworICBFWFBF
Q1RfRVEoIjI1Ny1ieXRlIG9iamVjdCA8MDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAt
MDAgIgorICAgICAgICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAw
LTAwIDAwLTAwIDAwLTAwIDAwLTAwICIKKyAgICAgICAgICAgICIwMC0wMCAwMC0wMCAwMC0wMCAw
MC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAiCisgICAgICAgICAgICAi
MDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgLi4uIDAwLTAwIDAwLTAwIDAwLTAw
ICIKKyAgICAgICAgICAgICIwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0w
MCAwMC0wMCAwMC0wMCAwMC0wMCAiCisgICAgICAgICAgICAiMDAtMDAgMDAtMDAgMDAtMDAgMDAt
MDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgIgorICAgICAgICAgICAgIjAw
LTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwPiIsCisgICAg
ICAgICAgICBQcmludChCaWcoKSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyB1c2VyLWRlZmlu
ZWQgc3RyZWFtYWJsZSB0eXBlcy4KKworLy8gU3RyZWFtYWJsZSB0eXBlcyBpbiB0aGUgZ2xvYmFs
IG5hbWVzcGFjZS4KK1RFU1QoUHJpbnRTdHJlYW1hYmxlVHlwZVRlc3QsIEluR2xvYmFsTmFtZXNw
YWNlKSB7CisgIFN0cmVhbWFibGVJbkdsb2JhbCB4OworICBFWFBFQ1RfRVEoIlN0cmVhbWFibGVJ
bkdsb2JhbCIsIFByaW50KHgpKTsKKyAgRVhQRUNUX0VRKCJTdHJlYW1hYmxlSW5HbG9iYWwqIiwg
UHJpbnQoJngpKTsKK30KKworLy8gUHJpbnRhYmxlIHRlbXBsYXRlIHR5cGVzIGluIGEgdXNlciBu
YW1lc3BhY2UuCitURVNUKFByaW50U3RyZWFtYWJsZVR5cGVUZXN0LCBUZW1wbGF0ZVR5cGVJblVz
ZXJOYW1lc3BhY2UpIHsKKyAgRVhQRUNUX0VRKCJTdHJlYW1hYmxlVGVtcGxhdGVJbkZvbzogMCIs
CisgICAgICAgICAgICBQcmludCg6OmZvbzo6U3RyZWFtYWJsZVRlbXBsYXRlSW5Gb288aW50Pigp
KSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIHVzZXItZGVmaW5lZCB0eXBlcyB0aGF0IGhhdmUg
YSBQcmludFRvKCkgZnVuY3Rpb24uCitURVNUKFByaW50UHJpbnRhYmxlVHlwZVRlc3QsIEluVXNl
ck5hbWVzcGFjZSkgeworICBFWFBFQ1RfRVEoIlByaW50YWJsZVZpYVByaW50VG86IDAiLAorICAg
ICAgICAgICAgUHJpbnQoOjpmb286OlByaW50YWJsZVZpYVByaW50VG8oKSkpOworfQorCisvLyBU
ZXN0cyBwcmludGluZyBhIHBvaW50ZXIgdG8gYSB1c2VyLWRlZmluZWQgdHlwZSB0aGF0IGhhcyBh
IDw8CisvLyBvcGVyYXRvciBmb3IgaXRzIHBvaW50ZXIuCitURVNUKFByaW50UHJpbnRhYmxlVHlw
ZVRlc3QsIFBvaW50ZXJJblVzZXJOYW1lc3BhY2UpIHsKKyAgOjpmb286OlBvaW50ZXJQcmludGFi
bGUgeDsKKyAgRVhQRUNUX0VRKCJQb2ludGVyUHJpbnRhYmxlKiIsIFByaW50KCZ4KSk7Cit9CisK
Ky8vIFRlc3RzIHByaW50aW5nIHVzZXItZGVmaW5lZCBjbGFzcyB0ZW1wbGF0ZSB0aGF0IGhhdmUg
YSBQcmludFRvKCkgZnVuY3Rpb24uCitURVNUKFByaW50UHJpbnRhYmxlVHlwZVRlc3QsIFRlbXBs
YXRlSW5Vc2VyTmFtZXNwYWNlKSB7CisgIEVYUEVDVF9FUSgiUHJpbnRhYmxlVmlhUHJpbnRUb1Rl
bXBsYXRlOiA1IiwKKyAgICAgICAgICAgIFByaW50KDo6Zm9vOjpQcmludGFibGVWaWFQcmludFRv
VGVtcGxhdGU8aW50Pig1KSkpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSB1bml2ZXJzYWwgcHJp
bnRlciBwcmludHMgYm90aCB0aGUgYWRkcmVzcyBhbmQgdGhlCisvLyB2YWx1ZSBvZiBhIHJlZmVy
ZW5jZS4KK1RFU1QoUHJpbnRSZWZlcmVuY2VUZXN0LCBQcmludHNBZGRyZXNzQW5kVmFsdWUpIHsK
KyAgaW50IG4gPSA1OworICBFWFBFQ1RfRVEoIkAiICsgUHJpbnRQb2ludGVyKCZuKSArICIgNSIs
IFByaW50QnlSZWYobikpOworCisgIGludCBhWzJdWzNdID0geworICAgIHsgMCwgMSwgMiB9LAor
ICAgIHsgMywgNCwgNSB9CisgIH07CisgIEVYUEVDVF9FUSgiQCIgKyBQcmludFBvaW50ZXIoYSkg
KyAiIHsgeyAwLCAxLCAyIH0sIHsgMywgNCwgNSB9IH0iLAorICAgICAgICAgICAgUHJpbnRCeVJl
ZihhKSk7CisKKyAgY29uc3QgOjpmb286OlVucHJpbnRhYmxlSW5Gb28geDsKKyAgRVhQRUNUX0VR
KCJAIiArIFByaW50UG9pbnRlcigmeCkgKyAiIDE2LWJ5dGUgb2JqZWN0ICIKKyAgICAgICAgICAg
ICI8RUYtMTIgMDAtMDAgMzQtQUIgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDA+IiwKKyAg
ICAgICAgICAgIFByaW50QnlSZWYoeCkpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSB1bml2ZXJz
YWwgcHJpbnRlciBwcmludHMgYSBmdW5jdGlvbiBwb2ludGVyIHBhc3NlZCBieQorLy8gcmVmZXJl
bmNlLgorVEVTVChQcmludFJlZmVyZW5jZVRlc3QsIEhhbmRsZXNGdW5jdGlvblBvaW50ZXIpIHsK
KyAgdm9pZCAoKmZwKShpbnQgbikgPSAmTXlGdW5jdGlvbjsKKyAgY29uc3Qgc3RyaW5nIGZwX3Bv
aW50ZXJfc3RyaW5nID0KKyAgICAgIFByaW50UG9pbnRlcihyZWludGVycHJldF9jYXN0PGNvbnN0
IHZvaWQqPigmZnApKTsKKyAgLy8gV2UgY2Fubm90IGRpcmVjdGx5IGNhc3QgJk15RnVuY3Rpb24g
dG8gY29uc3Qgdm9pZCogYmVjYXVzZSB0aGUKKyAgLy8gc3RhbmRhcmQgZGlzYWxsb3dzIGNhc3Rp
bmcgYmV0d2VlbiBwb2ludGVycyB0byBmdW5jdGlvbnMgYW5kCisgIC8vIHBvaW50ZXJzIHRvIG9i
amVjdHMsIGFuZCBzb21lIGNvbXBpbGVycyAoZS5nLiBHQ0MgMy40KSBlbmZvcmNlCisgIC8vIHRo
aXMgbGltaXRhdGlvbi4KKyAgY29uc3Qgc3RyaW5nIGZwX3N0cmluZyA9IFByaW50UG9pbnRlcihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigKKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8aW50
ZXJuYWw6OkJpZ2dlc3RJbnQ+KGZwKSkpOworICBFWFBFQ1RfRVEoIkAiICsgZnBfcG9pbnRlcl9z
dHJpbmcgKyAiICIgKyBmcF9zdHJpbmcsCisgICAgICAgICAgICBQcmludEJ5UmVmKGZwKSk7Cit9
CisKKy8vIFRlc3RzIHRoYXQgdGhlIHVuaXZlcnNhbCBwcmludGVyIHByaW50cyBhIG1lbWJlciBm
dW5jdGlvbiBwb2ludGVyCisvLyBwYXNzZWQgYnkgcmVmZXJlbmNlLgorVEVTVChQcmludFJlZmVy
ZW5jZVRlc3QsIEhhbmRsZXNNZW1iZXJGdW5jdGlvblBvaW50ZXIpIHsKKyAgaW50IChGb286Oipw
KShjaGFyIGNoKSA9ICZGb286Ok15TWV0aG9kOworICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoCisg
ICAgICBQcmludEJ5UmVmKHApLAorICAgICAgIkAiICsgUHJpbnRQb2ludGVyKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3Qgdm9pZCo+KCZwKSkgKyAiICIgKworICAgICAgICAgIFByaW50KHNpemVvZihw
KSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKKworICBjaGFyIChGb286OipwMikoaW50IG4pID0gJkZv
bzo6TXlWaXJ0dWFsTWV0aG9kOworICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoCisgICAgICBQcmlu
dEJ5UmVmKHAyKSwKKyAgICAgICJAIiArIFByaW50UG9pbnRlcihyZWludGVycHJldF9jYXN0PGNv
bnN0IHZvaWQqPigmcDIpKSArICIgIiArCisgICAgICAgICAgUHJpbnQoc2l6ZW9mKHAyKSkgKyAi
LWJ5dGUgb2JqZWN0ICIpKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgdW5pdmVyc2FsIHByaW50
ZXIgcHJpbnRzIGEgbWVtYmVyIHZhcmlhYmxlIHBvaW50ZXIKKy8vIHBhc3NlZCBieSByZWZlcmVu
Y2UuCitURVNUKFByaW50UmVmZXJlbmNlVGVzdCwgSGFuZGxlc01lbWJlclZhcmlhYmxlUG9pbnRl
cikgeworICBpbnQgKEZvbzo6KnApID0gJkZvbzo6dmFsdWU7ICAvLyBOT0xJTlQKKyAgRVhQRUNU
X1RSVUUoSGFzUHJlZml4KAorICAgICAgUHJpbnRCeVJlZihwKSwKKyAgICAgICJAIiArIFByaW50
UG9pbnRlcigmcCkgKyAiICIgKyBQcmludChzaXplb2YocCkpICsgIi1ieXRlIG9iamVjdCAiKSk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKCks
IHdoaWNoIGlzIHVzZWQgdG8gcHJpbnQKKy8vIGFuIG9wZXJhbmQgaW4gYSBjb21wYXJpc29uIGFz
c2VydGlvbiAoZS5nLiBBU1NFUlRfRVEpIHdoZW4gdGhlIGFzc2VydGlvbgorLy8gZmFpbHMsIGZv
cm1hdHMgdGhlIG9wZXJhbmQgaW4gdGhlIGRlc2lyZWQgd2F5LgorCisvLyBzY2FsYXIKK1RFU1Qo
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JTY2FsYXIpIHsK
KyAgRVhQRUNUX1NUUkVRKCIxMjMiLAorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNv
bkZhaWx1cmVNZXNzYWdlKDEyMywgMTI0KS5jX3N0cigpKTsKK30KKworLy8gbm9uLWNoYXIgcG9p
bnRlcgorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0Zv
ck5vbkNoYXJQb2ludGVyKSB7CisgIGludCBuID0gMDsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRl
cigmbiksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoJm4s
ICZuKS5jX3N0cigpKTsKK30KKworLy8gbm9uLWNoYXIgYXJyYXkKK1RFU1QoRm9ybWF0Rm9yQ29t
cGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgRm9ybWF0c05vbkNoYXJBcnJheUFzUG9pbnRlcikg
eworICAvLyBJbiBleHByZXNzaW9uICdhcnJheSA9PSB4JywgJ2FycmF5JyBpcyBjb21wYXJlZCBi
eSBwb2ludGVyLgorICAvLyBUaGVyZWZvcmUgd2Ugd2FudCB0byBwcmludCBhbiBhcnJheSBvcGVy
YW5kIGFzIGEgcG9pbnRlci4KKyAgaW50IG5bXSA9IHsgMSwgMiwgMyB9OworICBFWFBFQ1RfRVEo
UHJpbnRQb2ludGVyKG4pLAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVN
ZXNzYWdlKG4sIG4pLmNfc3RyKCkpOworfQorCisvLyBUZXN0cyBmb3JtYXR0aW5nIGEgY2hhciBw
b2ludGVyIHdoZW4gaXQncyBjb21wYXJlZCB3aXRoIGFub3RoZXIgcG9pbnRlci4KKy8vIEluIHRo
aXMgY2FzZSB3ZSB3YW50IHRvIHByaW50IGl0IGFzIGEgcmF3IHBvaW50ZXIsIGFzIHRoZSBjb21w
YXJpc2lvbiBpcyBieQorLy8gcG9pbnRlci4KKworLy8gY2hhciBwb2ludGVyIHZzIHBvaW50ZXIK
K1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JDaGFy
UG9pbnRlclZzUG9pbnRlcikgeworICAvLyBJbiBleHByZXNzaW9uICdwID09IHgnLCB3aGVyZSAn
cCcgYW5kICd4JyBhcmUgKGNvbnN0IG9yIG5vdCkgY2hhcgorICAvLyBwb2ludGVycywgdGhlIG9w
ZXJhbmRzIGFyZSBjb21wYXJlZCBieSBwb2ludGVyLiAgVGhlcmVmb3JlIHdlCisgIC8vIHdhbnQg
dG8gcHJpbnQgJ3AnIGFzIGEgcG9pbnRlciBpbnN0ZWFkIG9mIGEgQyBzdHJpbmcgKHdlIGRvbid0
CisgIC8vIGV2ZW4ga25vdyBpZiBpdCdzIHN1cHBvc2VkIHRvIHBvaW50IHRvIGEgdmFsaWQgQyBz
dHJpbmcpLgorCisgIC8vIGNvbnN0IGNoYXIqCisgIGNvbnN0IGNoYXIqIHMgPSAiaGVsbG8iOwor
ICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHMpLAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlKHMsIHMpLmNfc3RyKCkpOworCisgIC8vIGNoYXIqCisgIGNoYXIg
Y2ggPSAnYSc7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIoJmNoKSwKKyAgICAgICAgICAgIEZv
cm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSgmY2gsICZjaCkuY19zdHIoKSk7Cit9CisK
Ky8vIHdjaGFyX3QgcG9pbnRlciB2cyBwb2ludGVyCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJQb2ludGVyVnNQb2ludGVyKSB7CisgIC8v
IEluIGV4cHJlc3Npb24gJ3AgPT0geCcsIHdoZXJlICdwJyBhbmQgJ3gnIGFyZSAoY29uc3Qgb3Ig
bm90KSBjaGFyCisgIC8vIHBvaW50ZXJzLCB0aGUgb3BlcmFuZHMgYXJlIGNvbXBhcmVkIGJ5IHBv
aW50ZXIuICBUaGVyZWZvcmUgd2UKKyAgLy8gd2FudCB0byBwcmludCAncCcgYXMgYSBwb2ludGVy
IGluc3RlYWQgb2YgYSB3aWRlIEMgc3RyaW5nICh3ZSBkb24ndAorICAvLyBldmVuIGtub3cgaWYg
aXQncyBzdXBwb3NlZCB0byBwb2ludCB0byBhIHZhbGlkIHdpZGUgQyBzdHJpbmcpLgorCisgIC8v
IGNvbnN0IHdjaGFyX3QqCisgIGNvbnN0IHdjaGFyX3QqIHMgPSBMImhlbGxvIjsKKyAgRVhQRUNU
X0VRKFByaW50UG9pbnRlcihzKSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWls
dXJlTWVzc2FnZShzLCBzKS5jX3N0cigpKTsKKworICAvLyB3Y2hhcl90KgorICB3Y2hhcl90IGNo
ID0gTCdhJzsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcigmY2gpLAorICAgICAgICAgICAgRm9y
bWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKCZjaCwgJmNoKS5jX3N0cigpKTsKK30KKwor
Ly8gVGVzdHMgZm9ybWF0dGluZyBhIGNoYXIgcG9pbnRlciB3aGVuIGl0J3MgY29tcGFyZWQgdG8g
YSBzdHJpbmcgb2JqZWN0LgorLy8gSW4gdGhpcyBjYXNlIHdlIHdhbnQgdG8gcHJpbnQgdGhlIGNo
YXIgcG9pbnRlciBhcyBhIEMgc3RyaW5nLgorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcK
Ky8vIGNoYXIgcG9pbnRlciB2cyA6OnN0cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFp
bHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJQb2ludGVyVnNTdHJpbmcpIHsKKyAgY29uc3Qg
Y2hhciogcyA9ICJoZWxsbyBcIndvcmxkIjsKKyAgRVhQRUNUX1NUUkVRKCJcImhlbGxvIFxcXCJ3
b3JsZFwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAgICAg
ICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzLCA6OnN0cmluZygp
KS5jX3N0cigpKTsKKworICAvLyBjaGFyKgorICBjaGFyIHN0cltdID0gImhpXDEiOworICBjaGFy
KiBwID0gc3RyOworICBFWFBFQ1RfU1RSRVEoIlwiaGlcXHgxXCIiLCAgLy8gVGhlIHN0cmluZyBj
b250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlKHAsIDo6c3RyaW5nKCkpLmNfc3RyKCkpOworfQorI2VuZGlmCisK
Ky8vIGNoYXIgcG9pbnRlciB2cyBzdGQ6OnN0cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJpc29u
RmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJQb2ludGVyVnNTdGRTdHJpbmcpIHsKKyAg
Y29uc3QgY2hhciogcyA9ICJoZWxsbyBcIndvcmxkIjsKKyAgRVhQRUNUX1NUUkVRKCJcImhlbGxv
IFxcXCJ3b3JsZFwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4K
KyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzLCA6OnN0
ZDo6c3RyaW5nKCkpLmNfc3RyKCkpOworCisgIC8vIGNoYXIqCisgIGNoYXIgc3RyW10gPSAiaGlc
MSI7CisgIGNoYXIqIHAgPSBzdHI7CisgIEVYUEVDVF9TVFJFUSgiXCJoaVxceDFcIiIsICAvLyBU
aGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3Jt
YXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocCwgOjpzdGQ6OnN0cmluZygpKS5jX3N0cigp
KTsKK30KKworI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORworLy8gd2NoYXJfdCBwb2ludGVy
IHZzIDo6d3N0cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0
LCBXb3Jrc0ZvcldDaGFyUG9pbnRlclZzV1N0cmluZykgeworICBjb25zdCB3Y2hhcl90KiBzID0g
TCJoaSBcIndvcmxkIjsKKyAgRVhQRUNUX1NUUkVRKCJMXCJoaSBcXFwid29ybGRcIiIsICAvLyBU
aGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3Jt
YXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgOjp3c3RyaW5nKCkpLmNfc3RyKCkpOwor
CisgIC8vIHdjaGFyX3QqCisgIHdjaGFyX3Qgc3RyW10gPSBMImhpXDEiOworICB3Y2hhcl90KiBw
ID0gc3RyOworICBFWFBFQ1RfU1RSRVEoIkxcImhpXFx4MVwiIiwgIC8vIFRoZSBzdHJpbmcgY29u
dGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlz
b25GYWlsdXJlTWVzc2FnZShwLCA6OndzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisjZW5kaWYKKwor
I2lmIEdURVNUX0hBU19TVERfV1NUUklORworLy8gd2NoYXJfdCBwb2ludGVyIHZzIHN0ZDo6d3N0
cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0Zv
cldDaGFyUG9pbnRlclZzU3RkV1N0cmluZykgeworICBjb25zdCB3Y2hhcl90KiBzID0gTCJoaSBc
IndvcmxkIjsKKyAgRVhQRUNUX1NUUkVRKCJMXCJoaSBcXFwid29ybGRcIiIsICAvLyBUaGUgc3Ry
aW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JD
b21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgOjpzdGQ6OndzdHJpbmcoKSkuY19zdHIoKSk7CisK
KyAgLy8gd2NoYXJfdCoKKyAgd2NoYXJfdCBzdHJbXSA9IEwiaGlcMSI7CisgIHdjaGFyX3QqIHAg
PSBzdHI7CisgIEVYUEVDVF9TVFJFUSgiTFwiaGlcXHgxXCIiLCAgLy8gVGhlIHN0cmluZyBjb250
ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNv
bkZhaWx1cmVNZXNzYWdlKHAsIDo6c3RkOjp3c3RyaW5nKCkpLmNfc3RyKCkpOworfQorI2VuZGlm
CisKKy8vIFRlc3RzIGZvcm1hdHRpbmcgYSBjaGFyIGFycmF5IHdoZW4gaXQncyBjb21wYXJlZCB3
aXRoIGEgcG9pbnRlciBvciBhcnJheS4KKy8vIEluIHRoaXMgY2FzZSB3ZSB3YW50IHRvIHByaW50
IHRoZSBhcnJheSBhcyBhIHJvdyBwb2ludGVyLCBhcyB0aGUgY29tcGFyaXNvbgorLy8gaXMgYnkg
cG9pbnRlci4KKworLy8gY2hhciBhcnJheSB2cyBwb2ludGVyCitURVNUKEZvcm1hdEZvckNvbXBh
cmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhckFycmF5VnNQb2ludGVyKSB7Cisg
IGNoYXIgc3RyW10gPSAiaGkgXCJ3b3JsZFwiIjsKKyAgY2hhciogcCA9IE5VTEw7CisgIEVYUEVD
VF9FUShQcmludFBvaW50ZXIoc3RyKSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZShzdHIsIHApLmNfc3RyKCkpOworfQorCisvLyBjaGFyIGFycmF5IHZzIGNo
YXIgYXJyYXkKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29y
a3NGb3JDaGFyQXJyYXlWc0NoYXJBcnJheSkgeworICBjb25zdCBjaGFyIHN0cltdID0gImhpIFwi
d29ybGRcIiI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIoc3RyKSwKKyAgICAgICAgICAgIEZv
cm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzdHIsIHN0cikuY19zdHIoKSk7Cit9CisK
Ky8vIHdjaGFyX3QgYXJyYXkgdnMgcG9pbnRlcgorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFp
bHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvcldDaGFyQXJyYXlWc1BvaW50ZXIpIHsKKyAgd2NoYXJf
dCBzdHJbXSA9IEwiaGkgXCJ3b3JsZFwiIjsKKyAgd2NoYXJfdCogcCA9IE5VTEw7CisgIEVYUEVD
VF9FUShQcmludFBvaW50ZXIoc3RyKSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZShzdHIsIHApLmNfc3RyKCkpOworfQorCisvLyB3Y2hhcl90IGFycmF5IHZz
IHdjaGFyX3QgYXJyYXkKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVz
dCwgV29ya3NGb3JXQ2hhckFycmF5VnNXQ2hhckFycmF5KSB7CisgIGNvbnN0IHdjaGFyX3Qgc3Ry
W10gPSBMImhpIFwid29ybGRcIiI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIoc3RyKSwKKyAg
ICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzdHIsIHN0cikuY19z
dHIoKSk7Cit9CisKKy8vIFRlc3RzIGZvcm1hdHRpbmcgYSBjaGFyIGFycmF5IHdoZW4gaXQncyBj
b21wYXJlZCB3aXRoIGEgc3RyaW5nIG9iamVjdC4KKy8vIEluIHRoaXMgY2FzZSB3ZSB3YW50IHRv
IHByaW50IHRoZSBhcnJheSBhcyBhIEMgc3RyaW5nLgorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9T
VFJJTkcKKy8vIGNoYXIgYXJyYXkgdnMgc3RyaW5nCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhckFycmF5VnNTdHJpbmcpIHsKKyAgY29uc3Qg
Y2hhciBzdHJbXSA9ICJoaSBcIndcMHJsZFwiIjsKKyAgRVhQRUNUX1NUUkVRKCJcImhpIFxcXCJ3
XCIiLCAgLy8gVGhlIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEVtYmVkZGVkIE5VTCB0ZXJtaW5hdGVzIHRoZSBzdHJpbmcuCisg
ICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCA6OnN0
cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisvLyBjaGFyIGFycmF5IHZzIHN0ZDo6c3Ry
aW5nCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9y
Q2hhckFycmF5VnNTdGRTdHJpbmcpIHsKKyAgY29uc3QgY2hhciBzdHJbXSA9ICJoaSBcIndvcmxk
XCIiOworICBFWFBFQ1RfU1RSRVEoIlwiaGkgXFxcIndvcmxkXFxcIlwiIiwgIC8vIFRoZSBjb250
ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNv
bkZhaWx1cmVNZXNzYWdlKHN0ciwgOjpzdGQ6OnN0cmluZygpKS5jX3N0cigpKTsKK30KKworI2lm
IEdURVNUX0hBU19HTE9CQUxfV1NUUklORworLy8gd2NoYXJfdCBhcnJheSB2cyB3c3RyaW5nCitU
RVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJB
cnJheVZzV1N0cmluZykgeworICBjb25zdCB3Y2hhcl90IHN0cltdID0gTCJoaSBcIndvcmxkXCIi
OworICBFWFBFQ1RfU1RSRVEoIkxcImhpIFxcXCJ3b3JsZFxcXCJcIiIsICAvLyBUaGUgY29udGVu
dCBzaG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZShzdHIsIDo6d3N0cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisj
aWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCisvLyB3Y2hhcl90IGFycmF5IHZzIHN0ZDo6d3N0cmlu
ZworVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvcldD
aGFyQXJyYXlWc1N0ZFdTdHJpbmcpIHsKKyAgY29uc3Qgd2NoYXJfdCBzdHJbXSA9IEwiaGkgXCJ3
XDBybGRcIiI7CisgIEVYUEVDVF9TVFJFUSgKKyAgICAgICJMXCJoaSBcXFwid1wiIiwgIC8vIFRo
ZSBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgLy8g
RW1iZWRkZWQgTlVMIHRlcm1pbmF0ZXMgdGhlIHN0cmluZy4KKyAgICAgIEZvcm1hdEZvckNvbXBh
cmlzb25GYWlsdXJlTWVzc2FnZShzdHIsIDo6c3RkOjp3c3RyaW5nKCkpLmNfc3RyKCkpOworfQor
I2VuZGlmCisKKy8vIFVzZWZ1bCBmb3IgdGVzdGluZyBQcmludFRvU3RyaW5nKCkuICBXZSBjYW5u
b3QgdXNlIEVYUEVDVF9FUSgpCisvLyB0aGVyZSBhcyBpdHMgaW1wbGVtZW50YXRpb24gdXNlcyBQ
cmludFRvU3RyaW5nKCkuICBUaGUgY2FsbGVyIG11c3QKKy8vIGVuc3VyZSB0aGF0ICd2YWx1ZScg
aGFzIG5vIHNpZGUgZWZmZWN0LgorI2RlZmluZSBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyh2YWx1
ZSwgZXhwZWN0ZWRfc3RyaW5nKSAgICAgICAgIFwKKyAgRVhQRUNUX1RSVUUoUHJpbnRUb1N0cmlu
Zyh2YWx1ZSkgPT0gKGV4cGVjdGVkX3N0cmluZykpICAgICAgICBcCisgICAgICA8PCAiIHdoZXJl
ICIgI3ZhbHVlICIgcHJpbnRzIGFzICIgPDwgKFByaW50VG9TdHJpbmcodmFsdWUpKQorCitURVNU
KFByaW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvclNjYWxhcikgeworICBFWFBFQ1RfUFJJTlRfVE9f
U1RSSU5HXygxMjMsICIxMjMiKTsKK30KKworVEVTVChQcmludFRvU3RyaW5nVGVzdCwgV29ya3NG
b3JQb2ludGVyVG9Db25zdENoYXIpIHsKKyAgY29uc3QgY2hhciogcCA9ICJoZWxsbyI7CisgIEVY
UEVDVF9QUklOVF9UT19TVFJJTkdfKHAsICJcImhlbGxvXCIiKTsKK30KKworVEVTVChQcmludFRv
U3RyaW5nVGVzdCwgV29ya3NGb3JQb2ludGVyVG9Ob25Db25zdENoYXIpIHsKKyAgY2hhciBzW10g
PSAiaGVsbG8iOworICBjaGFyKiBwID0gczsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18ocCwg
IlwiaGVsbG9cIiIpOworfQorCitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBFc2NhcGVzRm9yUG9p
bnRlclRvQ29uc3RDaGFyKSB7CisgIGNvbnN0IGNoYXIqIHAgPSAiaGVsbG9cbiI7CisgIEVYUEVD
VF9QUklOVF9UT19TVFJJTkdfKHAsICJcImhlbGxvXFxuXCIiKTsKK30KKworVEVTVChQcmludFRv
U3RyaW5nVGVzdCwgRXNjYXBlc0ZvclBvaW50ZXJUb05vbkNvbnN0Q2hhcikgeworICBjaGFyIHNb
XSA9ICJoZWxsb1wxIjsKKyAgY2hhciogcCA9IHM7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdf
KHAsICJcImhlbGxvXFx4MVwiIik7Cit9CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIFdvcmtz
Rm9yQXJyYXkpIHsKKyAgaW50IG5bM10gPSB7IDEsIDIsIDMgfTsKKyAgRVhQRUNUX1BSSU5UX1RP
X1NUUklOR18obiwgInsgMSwgMiwgMyB9Iik7Cit9CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3Qs
IFdvcmtzRm9yQ2hhckFycmF5KSB7CisgIGNoYXIgc1tdID0gImhlbGxvIjsKKyAgRVhQRUNUX1BS
SU5UX1RPX1NUUklOR18ocywgIlwiaGVsbG9cIiIpOworfQorCitURVNUKFByaW50VG9TdHJpbmdU
ZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVdpdGhFbWJlZGRlZE51bCkgeworICBjb25zdCBjaGFyIHN0
cl93aXRoX251bFtdID0gImhlbGxvXDAgd29ybGQiOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5H
XyhzdHJfd2l0aF9udWwsICJcImhlbGxvXFwwIHdvcmxkXCIiKTsKKworICBjaGFyIG11dGFibGVf
c3RyX3dpdGhfbnVsW10gPSAiaGVsbG9cMCB3b3JsZCI7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJ
TkdfKG11dGFibGVfc3RyX3dpdGhfbnVsLCAiXCJoZWxsb1xcMCB3b3JsZFwiIik7Cit9CisKKyN1
bmRlZiBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXworCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRU
ZXN0LCBXb3Jrc0Zvck5vblJlZmVyZW5jZSkgeworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOwor
ICBVbml2ZXJzYWxUZXJzZVByaW50KDEyMywgJnNzKTsKKyAgRVhQRUNUX0VRKCIxMjMiLCBzcy5z
dHIoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFRlc3QsIFdvcmtzRm9yUmVmZXJl
bmNlKSB7CisgIGNvbnN0IGludCYgbiA9IDEyMzsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsK
KyAgVW5pdmVyc2FsVGVyc2VQcmludChuLCAmc3MpOworICBFWFBFQ1RfRVEoIjEyMyIsIHNzLnN0
cigpKTsKK30KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VGVzdCwgV29ya3NGb3JDU3RyaW5n
KSB7CisgIGNvbnN0IGNoYXIqIHMxID0gImFiYyI7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3Mx
OworICBVbml2ZXJzYWxUZXJzZVByaW50KHMxLCAmc3MxKTsKKyAgRVhQRUNUX0VRKCJcImFiY1wi
Iiwgc3MxLnN0cigpKTsKKworICBjaGFyKiBzMiA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHMxKTsKKyAg
OjpzdGQ6OnN0cmluZ3N0cmVhbSBzczI7CisgIFVuaXZlcnNhbFRlcnNlUHJpbnQoczIsICZzczIp
OworICBFWFBFQ1RfRVEoIlwiYWJjXCIiLCBzczIuc3RyKCkpOworCisgIGNvbnN0IGNoYXIqIHMz
ID0gTlVMTDsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczM7CisgIFVuaXZlcnNhbFRlcnNlUHJp
bnQoczMsICZzczMpOworICBFWFBFQ1RfRVEoIk5VTEwiLCBzczMuc3RyKCkpOworfQorCitURVNU
KFVuaXZlcnNhbFByaW50VGVzdCwgV29ya3NGb3JOb25SZWZlcmVuY2UpIHsKKyAgOjpzdGQ6OnN0
cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2FsUHJpbnQoMTIzLCAmc3MpOworICBFWFBFQ1RfRVEo
IjEyMyIsIHNzLnN0cigpKTsKK30KKworVEVTVChVbml2ZXJzYWxQcmludFRlc3QsIFdvcmtzRm9y
UmVmZXJlbmNlKSB7CisgIGNvbnN0IGludCYgbiA9IDEyMzsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVh
bSBzczsKKyAgVW5pdmVyc2FsUHJpbnQobiwgJnNzKTsKKyAgRVhQRUNUX0VRKCIxMjMiLCBzcy5z
dHIoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsUHJpbnRUZXN0LCBXb3Jrc0ZvckNTdHJpbmcpIHsK
KyAgY29uc3QgY2hhciogczEgPSAiYWJjIjsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczE7Cisg
IFVuaXZlcnNhbFByaW50KHMxLCAmc3MxKTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihzMSkg
KyAiIHBvaW50aW5nIHRvIFwiYWJjXCIiLCBzdHJpbmcoc3MxLnN0cigpKSk7CisKKyAgY2hhciog
czIgPSBjb25zdF9jYXN0PGNoYXIqPihzMSk7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3MyOwor
ICBVbml2ZXJzYWxQcmludChzMiwgJnNzMik7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIoczIp
ICsgIiBwb2ludGluZyB0byBcImFiY1wiIiwgc3RyaW5nKHNzMi5zdHIoKSkpOworCisgIGNvbnN0
IGNoYXIqIHMzID0gTlVMTDsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczM7CisgIFVuaXZlcnNh
bFByaW50KHMzLCAmc3MzKTsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgc3MzLnN0cigpKTsKK30KKwor
VEVTVChVbml2ZXJzYWxQcmludFRlc3QsIFdvcmtzRm9yQ2hhckFycmF5KSB7CisgIGNvbnN0IGNo
YXIgc3RyW10gPSAiXCJMaW5lXDAgMVwiXG5MaW5lIDIiOworICA6OnN0ZDo6c3RyaW5nc3RyZWFt
IHNzMTsKKyAgVW5pdmVyc2FsUHJpbnQoc3RyLCAmc3MxKTsKKyAgRVhQRUNUX0VRKCJcIlxcXCJM
aW5lXFwwIDFcXFwiXFxuTGluZSAyXCIiLCBzczEuc3RyKCkpOworCisgIGNvbnN0IGNoYXIgbXV0
YWJsZV9zdHJbXSA9ICJcIkxpbmVcMCAxXCJcbkxpbmUgMiI7CisgIDo6c3RkOjpzdHJpbmdzdHJl
YW0gc3MyOworICBVbml2ZXJzYWxQcmludChtdXRhYmxlX3N0ciwgJnNzMik7CisgIEVYUEVDVF9F
USgiXCJcXFwiTGluZVxcMCAxXFxcIlxcbkxpbmUgMlwiIiwgc3MyLnN0cigpKTsKK30KKworI2lm
IEdURVNUX0hBU19UUjFfVFVQTEUKKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVs
ZHNUb1N0cmluZ3NUZXN0V2l0aFRyMSwgUHJpbnRzRW1wdHlUdXBsZSkgeworICBTdHJpbmdzIHJl
c3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKKyAgICAgIDo6
c3RkOjp0cjE6Om1ha2VfdHVwbGUoKSk7CisgIEVYUEVDVF9FUSgwdSwgcmVzdWx0LnNpemUoKSk7
Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdp
dGhUcjEsIFByaW50c09uZVR1cGxlKSB7CisgIFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVy
c2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAorICAgICAgOjpzdGQ6OnRyMTo6bWFrZV90dXBs
ZSgxKSk7CisgIEFTU0VSVF9FUSgxdSwgcmVzdWx0LnNpemUoKSk7CisgIEVYUEVDVF9FUSgiMSIs
IHJlc3VsdFswXSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9T
dHJpbmdzVGVzdFdpdGhUcjEsIFByaW50c1R3b1R1cGxlKSB7CisgIFN0cmluZ3MgcmVzdWx0ID0g
VW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAorICAgICAgOjpzdGQ6OnRy
MTo6bWFrZV90dXBsZSgxLCAnYScpKTsKKyAgQVNTRVJUX0VRKDJ1LCByZXN1bHQuc2l6ZSgpKTsK
KyAgRVhQRUNUX0VRKCIxIiwgcmVzdWx0WzBdKTsKKyAgRVhQRUNUX0VRKCInYScgKDk3LCAweDYx
KSIsIHJlc3VsdFsxXSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRz
VG9TdHJpbmdzVGVzdFdpdGhUcjEsIFByaW50c1RlcnNlbHkpIHsKKyAgY29uc3QgaW50IG4gPSAx
OworICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3Ry
aW5ncygKKyAgICAgIDo6c3RkOjp0cjE6OnR1cGxlPGNvbnN0IGludCYsIGNvbnN0IGNoYXIqPihu
LCAiYSIpKTsKKyAgQVNTRVJUX0VRKDJ1LCByZXN1bHQuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKCIx
IiwgcmVzdWx0WzBdKTsKKyAgRVhQRUNUX0VRKCJcImFcIiIsIHJlc3VsdFsxXSk7Cit9CisKKyNl
bmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRQorCisjaWYgR1RFU1RfSEFTX1NURF9UVVBMRV8K
KworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0aFN0
ZCwgUHJpbnRzRW1wdHlUdXBsZSkgeworICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNl
UHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncyg6OnN0ZDo6bWFrZV90dXBsZSgpKTsKKyAgRVhQRUNU
X0VRKDB1LCByZXN1bHQuc2l6ZSgpKTsKK30KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVw
bGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0aFN0ZCwgUHJpbnRzT25lVHVwbGUpIHsKKyAgU3RyaW5n
cyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoCisgICAg
ICA6OnN0ZDo6bWFrZV90dXBsZSgxKSk7CisgIEFTU0VSVF9FUSgxdSwgcmVzdWx0LnNpemUoKSk7
CisgIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQ
cmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhTdGQsIFByaW50c1R3b1R1cGxlKSB7Cisg
IFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdz
KAorICAgICAgOjpzdGQ6Om1ha2VfdHVwbGUoMSwgJ2EnKSk7CisgIEFTU0VSVF9FUSgydSwgcmVz
dWx0LnNpemUoKSk7CisgIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7CisgIEVYUEVDVF9FUSgi
J2EnICg5NywgMHg2MSkiLCByZXN1bHRbMV0pOworfQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJp
bnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoU3RkLCBQcmludHNUZXJzZWx5KSB7CisgIGNv
bnN0IGludCBuID0gMTsKKyAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVw
bGVGaWVsZHNUb1N0cmluZ3MoCisgICAgICA6OnN0ZDo6dHVwbGU8Y29uc3QgaW50JiwgY29uc3Qg
Y2hhcio+KG4sICJhIikpOworICBBU1NFUlRfRVEoMnUsIHJlc3VsdC5zaXplKCkpOworICBFWFBF
Q1RfRVEoIjEiLCByZXN1bHRbMF0pOworICBFWFBFQ1RfRVEoIlwiYVwiIiwgcmVzdWx0WzFdKTsK
K30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1RVUExFXworCit9ICAvLyBuYW1lc3BhY2Ug
Z3Rlc3RfcHJpbnRlcnNfdGVzdAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2MKaW5k
ZXggNWEzZTkxOTZhYjk2ZTQxM2ZlZjMzMDc1MjRiMThjOTJmNWVkYWRiMC4uY2E4YmE5MzNhZWY5
MDE3NzBhY2E3OGUxZTQ0YjliZGU1MGU4NjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0LmNjCkBAIC0zMCw5ICszMCw5IEBA
CiAvLyBBdXRob3I6IG1oZXVsZUBnb29nbGUuY29tIChNYXJrdXMgSGV1bGUpCiAvLwogCi0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtdGVz
dC1wYXJ0LmgiCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCiAKIHVzaW5nIHRlc3Rpbmc6Ok1lc3NhZ2U7CiB1c2luZyB0ZXN0aW5nOjpUZXN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10dXBsZV90ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10dXBsZV90ZXN0LmNjCmlu
ZGV4IDUzMmY3MGIzZDRlOTA3MGY0NTk2ODYyNWIzZmY5N2MzOTg0NzU3ZDcuLmJmYWEzZTBhYzRi
MjI5MGQ5ZmEyYjY5NDdhZDgwOWYxMGI4ZDI0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHVwbGVfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0LXR1cGxlX3Rlc3QuY2MKQEAgLTI5LDkgKzI5LDkgQEAKIC8vCiAv
LyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAKLSNpbmNsdWRlIDxndGVz
dC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0
LXR1cGxlLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIG5hbWVzcGFjZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYwppbmRl
eCA3OWE4YTg3ZGNmZGJkZTUzYzFlMGQ4YzZkMTFhOTg2OTIyYjAyZmY4Li5jMjg0NzAwYjAyMGI1
MjQ5MTc1YmZjZmEzYTViYWU4NWU2ZjM4YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0Ml90ZXN0LmNjCkBAIC0zMiw3ICszMiw3
IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAidGVzdC9ndGVzdC10eXBlZC10ZXN0
X3Rlc3QuaCIKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCiAKICNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MKaW5kZXggZjJjMzk3
MjMxMDE3NzllNzcxODQ3ZDU5MmQ5ZmFiYjU2ZjNiNDVjNi4uOTM2MjhiYTA4MGNjZWVhM2Q2MzU1
NjY4MzQ3MzBkMDQ0ZDViNDUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MKQEAgLTI5LDExICsyOSwxMiBAQAogLy8K
IC8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAorI2luY2x1ZGUgInRl
c3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgiCisKICNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8
dmVjdG9yPgogCi0jaW5jbHVkZSAidGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuaCIKLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIHVzaW5nIHRl
c3Rpbmc6OlRlc3Q7CiAKQEAgLTM0Myw2ICszNDQsMjUgQEAgUkVHSVNURVJfVFlQRURfVEVTVF9D
QVNFX1AoTnVtZXJpY1Rlc3QsCiB0eXBlZGVmIFR5cGVzPGludCwgZG91YmxlPiBOdW1lcmljVHlw
ZXM7CiBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgTnVtZXJpY1Rlc3QsIE51bWVy
aWNUeXBlcyk7CiAKK3N0YXRpYyBjb25zdCBjaGFyKiBHZXRUZXN0TmFtZSgpIHsKKyAgcmV0dXJu
IHRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpLT5u
YW1lKCk7Cit9CisvLyBUZXN0IHRoZSBzdHJpcHBpbmcgb2Ygc3BhY2UgZnJvbSB0ZXN0IG5hbWVz
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgVHJpbW1lZFRlc3QgOiBwdWJsaWMgVGVzdCB7
IH07CitUWVBFRF9URVNUX0NBU0VfUChUcmltbWVkVGVzdCk7CitUWVBFRF9URVNUX1AoVHJpbW1l
ZFRlc3QsIFRlc3QxKSB7IEVYUEVDVF9TVFJFUSgiVGVzdDEiLCBHZXRUZXN0TmFtZSgpKTsgfQor
VFlQRURfVEVTVF9QKFRyaW1tZWRUZXN0LCBUZXN0MikgeyBFWFBFQ1RfU1RSRVEoIlRlc3QyIiwg
R2V0VGVzdE5hbWUoKSk7IH0KK1RZUEVEX1RFU1RfUChUcmltbWVkVGVzdCwgVGVzdDMpIHsgRVhQ
RUNUX1NUUkVRKCJUZXN0MyIsIEdldFRlc3ROYW1lKCkpOyB9CitUWVBFRF9URVNUX1AoVHJpbW1l
ZFRlc3QsIFRlc3Q0KSB7IEVYUEVDVF9TVFJFUSgiVGVzdDQiLCBHZXRUZXN0TmFtZSgpKTsgfQor
VFlQRURfVEVTVF9QKFRyaW1tZWRUZXN0LCBUZXN0NSkgeyBFWFBFQ1RfU1RSRVEoIlRlc3Q1Iiwg
R2V0VGVzdE5hbWUoKSk7IH0KK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKAorICAgIFRyaW1t
ZWRUZXN0LAorICAgIFRlc3QxLCBUZXN0MixUZXN0MyAsIFRlc3Q0ICxUZXN0NSApOyAgLy8gTk9M
SU5UCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPiBzdHJ1Y3QgTXlQYWlyIHt9
OworLy8gQmUgc3VyZSB0byB0cnkgYSB0eXBlIHdpdGggYSBjb21tYSBpbiBpdHMgbmFtZSBqdXN0
IGluIGNhc2UgaXQgbWF0dGVycy4KK3R5cGVkZWYgVHlwZXM8aW50LCBkb3VibGUsIE15UGFpcjxp
bnQsIGludD4gPiBUcmltVHlwZXM7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwg
VHJpbW1lZFRlc3QsIFRyaW1UeXBlcyk7CisKIH0gIC8vIG5hbWVzcGFjZSBsaWJyYXJ5MgogCiAj
ZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUX1AKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oCmluZGV4IDQwZGZlYWM2ZTAx
ZDk3ZWNmN2ZlYmI4NjVmY2U2Njg0OGJhOGU4ZGIuLjQxZDc1NzA0Y2Y4NGQ4YmQwNTQ5MGQ5OTM0
YjY1MjIxMzE2OWU4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuaApAQCAtMzIsNyArMzIsNyBAQAogI2lmbmRlZiBHVEVT
VF9URVNUX0dURVNUX1RZUEVEX1RFU1RfVEVTVF9IXwogI2RlZmluZSBHVEVTVF9URVNUX0dURVNU
X1RZUEVEX1RFU1RfVEVTVF9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgogCiAjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC11bml0dGVzdC1hcGlfdGVz
dC5jYwppbmRleCA3ZTBmOGY4MDQ1ZDcxYzAxNWQxMjk0ZmZlZjRjYTU0NWRkYzU1MWY5Li5iMWY1
MTY4OGFmNzUzM2I0MzE2NzE0OWNhMjRlOWRjZDZjNTVkNWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2MKQEAg
LTMzLDcgKzMzLDcgQEAKIC8vIFRoaXMgZmlsZSBjb250YWlucyB0ZXN0cyB2ZXJpZnlpbmcgY29y
cmVjdG5lc3Mgb2YgZGF0YSBwcm92aWRlZCB2aWEKIC8vIFVuaXRUZXN0J3MgcHVibGljIG1ldGhv
ZHMuCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CiAKICNpbmNsdWRlIDxzdHJpbmcuaD4gIC8vIEZvciBzdHJjbXAuCiAjaW5jbHVkZSA8YWxnb3Jp
dGhtPgpAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBVbml0VGVzdEhlbHBlciB7CiAgcHVibGljOgog
ICAvLyBSZXR1cm5zIHRoZSBhcnJheSBvZiBwb2ludGVycyB0byBhbGwgdGVzdCBjYXNlcyBzb3J0
ZWQgYnkgdGhlIHRlc3QgY2FzZQogICAvLyBuYW1lLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJs
ZSBmb3IgZGVsZXRpbmcgdGhlIGFycmF5LgotICBzdGF0aWMgVGVzdENhc2UgY29uc3QqKiBjb25z
dCBHZXRTb3J0ZWRUZXN0Q2FzZXMoKSB7CisgIHN0YXRpYyBUZXN0Q2FzZSBjb25zdCoqIEdldFNv
cnRlZFRlc3RDYXNlcygpIHsKICAgICBVbml0VGVzdCYgdW5pdF90ZXN0ID0gKlVuaXRUZXN0OjpH
ZXRJbnN0YW5jZSgpOwogICAgIFRlc3RDYXNlIGNvbnN0KiogY29uc3QgdGVzdF9jYXNlcyA9CiAg
ICAgICAgIG5ldyBjb25zdCBUZXN0Q2FzZSpbdW5pdF90ZXN0LnRvdGFsX3Rlc3RfY2FzZV9jb3Vu
dCgpXTsKQEAgLTgzLDcgKzgzLDcgQEAgY2xhc3MgVW5pdFRlc3RIZWxwZXIgewogICAvLyBSZXR1
cm5zIHRoZSBhcnJheSBvZiBwb2ludGVycyB0byBhbGwgdGVzdHMgaW4gYSBwYXJ0aWN1bGFyIHRl
c3QgY2FzZQogICAvLyBzb3J0ZWQgYnkgdGhlIHRlc3QgbmFtZS4gIFRoZSBjYWxsZXIgaXMgcmVz
cG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZQogICAvLyBhcnJheS4KLSAgc3RhdGljIFRlc3RJbmZv
IGNvbnN0KiogY29uc3QgR2V0U29ydGVkVGVzdHMoY29uc3QgVGVzdENhc2UqIHRlc3RfY2FzZSkg
eworICBzdGF0aWMgVGVzdEluZm8gY29uc3QqKiBHZXRTb3J0ZWRUZXN0cyhjb25zdCBUZXN0Q2Fz
ZSogdGVzdF9jYXNlKSB7CiAgICAgVGVzdEluZm8gY29uc3QqKiBjb25zdCB0ZXN0cyA9CiAgICAg
ICAgIG5ldyBjb25zdCBUZXN0SW5mbypbdGVzdF9jYXNlLT50b3RhbF90ZXN0X2NvdW50KCldOwog
CkBAIC0xMDMsMTIgKzEwMyw2IEBAIFRZUEVEX1RFU1QoVGVzdENhc2VXaXRoQ29tbWVudFRlc3Qs
IER1bW15KSB7fQogCiBjb25zdCBpbnQga1R5cGVkVGVzdENhc2VzID0gMTsKIGNvbnN0IGludCBr
VHlwZWRUZXN0cyA9IDE7Ci0KLVN0cmluZyBHZXRFeHBlY3RlZFRlc3RDYXNlQ29tbWVudCgpIHsK
LSAgTWVzc2FnZSBjb21tZW50OwotICBjb21tZW50IDw8ICJUeXBlUGFyYW0gPSAiIDw8IEdldFR5
cGVOYW1lPGludD4oKS5jX3N0cigpOwotICByZXR1cm4gY29tbWVudC5HZXRTdHJpbmcoKTsKLX0K
ICNlbHNlCiBjb25zdCBpbnQga1R5cGVkVGVzdENhc2VzID0gMDsKIGNvbnN0IGludCBrVHlwZWRU
ZXN0cyA9IDA7CkBAIC0xNDMsMTIgKzEzNywxOSBAQCBURVNUKEFwaVRlc3QsIFVuaXRUZXN0SW1t
dXRhYmxlQWNjZXNzb3JzV29yaykgewogICBSZWNvcmRQcm9wZXJ0eSgia2V5IiwgInZhbHVlIik7
CiB9CiAKK0Fzc2VydGlvblJlc3VsdCBJc051bGwoY29uc3QgY2hhciogc3RyKSB7CisgIGlmIChz
dHIgIT0gTlVMTCkgeworICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwg
ImFyZ3VtZW50IGlzICIgPDwgc3RyOworICB9CisgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7
Cit9CisKIFRFU1QoQXBpVGVzdCwgVGVzdENhc2VJbW11dGFibGVBY2Nlc3NvcnNXb3JrKSB7CiAg
IGNvbnN0IFRlc3RDYXNlKiB0ZXN0X2Nhc2UgPSBVbml0VGVzdEhlbHBlcjo6RmluZFRlc3RDYXNl
KCJBcGlUZXN0Iik7CiAgIEFTU0VSVF9UUlVFKHRlc3RfY2FzZSAhPSBOVUxMKTsKIAogICBFWFBF
Q1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0X2Nhc2UtPm5hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgi
IiwgdGVzdF9jYXNlLT5jb21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdF9jYXNl
LT50eXBlX3BhcmFtKCkpKTsKICAgRVhQRUNUX1RSVUUodGVzdF9jYXNlLT5zaG91bGRfcnVuKCkp
OwogICBFWFBFQ1RfRVEoMSwgdGVzdF9jYXNlLT5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOwogICBF
WFBFQ1RfRVEoMywgdGVzdF9jYXNlLT50ZXN0X3RvX3J1bl9jb3VudCgpKTsKQEAgLTE1OCwyNiAr
MTU5LDI2IEBAIFRFU1QoQXBpVGVzdCwgVGVzdENhc2VJbW11dGFibGVBY2Nlc3NvcnNXb3JrKSB7
CiAKICAgRVhQRUNUX1NUUkVRKCJESVNBQkxFRF9EdW1teTEiLCB0ZXN0c1swXS0+bmFtZSgpKTsK
ICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbMF0tPnRlc3RfY2FzZV9uYW1lKCkpOwot
ICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzBdLT5jb21tZW50KCkpOwotICBFWFBFQ1RfU1RSRVEo
IiIsIHRlc3RzWzBdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxs
KHRlc3RzWzBdLT52YWx1ZV9wYXJhbSgpKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1sw
XS0+dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVDVF9GQUxTRSh0ZXN0c1swXS0+c2hvdWxkX3J1bigp
KTsKIAogICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlRGlzYWJsZWRBY2Nlc3NvcnNXb3JrIiwgdGVz
dHNbMV0tPm5hbWUoKSk7CiAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzFdLT50ZXN0
X2Nhc2VfbmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1sxXS0+Y29tbWVudCgpKTsK
LSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1sxXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgIEVY
UEVDVF9UUlVFKElzTnVsbCh0ZXN0c1sxXS0+dmFsdWVfcGFyYW0oKSkpOworICBFWFBFQ1RfVFJV
RShJc051bGwodGVzdHNbMV0tPnR5cGVfcGFyYW0oKSkpOwogICBFWFBFQ1RfVFJVRSh0ZXN0c1sx
XS0+c2hvdWxkX3J1bigpKTsKIAogICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlSW1tdXRhYmxlQWNj
ZXNzb3JzV29yayIsIHRlc3RzWzJdLT5uYW1lKCkpOwogICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3Qi
LCB0ZXN0c1syXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNb
Ml0tPmNvbW1lbnQoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMl0tPnRlc3RfY2FzZV9j
b21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMl0tPnZhbHVlX3BhcmFtKCkp
KTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzJdLT50eXBlX3BhcmFtKCkpKTsKICAgRVhQ
RUNUX1RSVUUodGVzdHNbMl0tPnNob3VsZF9ydW4oKSk7CiAKICAgRVhQRUNUX1NUUkVRKCJVbml0
VGVzdEltbXV0YWJsZUFjY2Vzc29yc1dvcmsiLCB0ZXN0c1szXS0+bmFtZSgpKTsKICAgRVhQRUNU
X1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbM10tPnRlc3RfY2FzZV9uYW1lKCkpOwotICBFWFBFQ1Rf
U1RSRVEoIiIsIHRlc3RzWzNdLT5jb21tZW50KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3Rz
WzNdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzNd
LT52YWx1ZV9wYXJhbSgpKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1szXS0+dHlwZV9w
YXJhbSgpKSk7CiAgIEVYUEVDVF9UUlVFKHRlc3RzWzNdLT5zaG91bGRfcnVuKCkpOwogCiAgIGRl
bGV0ZVtdIHRlc3RzOwpAQCAtMTg4LDcgKzE4OSw3IEBAIFRFU1QoQXBpVGVzdCwgVGVzdENhc2VJ
bW11dGFibGVBY2Nlc3NvcnNXb3JrKSB7CiAgIEFTU0VSVF9UUlVFKHRlc3RfY2FzZSAhPSBOVUxM
KTsKIAogICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlV2l0aENvbW1lbnRUZXN0LzAiLCB0ZXN0X2Nh
c2UtPm5hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUShHZXRFeHBlY3RlZFRlc3RDYXNlQ29tbWVudCgp
LmNfc3RyKCksIHRlc3RfY2FzZS0+Y29tbWVudCgpKTsKKyAgRVhQRUNUX1NUUkVRKEdldFR5cGVO
YW1lPGludD4oKS5jX3N0cigpLCB0ZXN0X2Nhc2UtPnR5cGVfcGFyYW0oKSk7CiAgIEVYUEVDVF9U
UlVFKHRlc3RfY2FzZS0+c2hvdWxkX3J1bigpKTsKICAgRVhQRUNUX0VRKDAsIHRlc3RfY2FzZS0+
ZGlzYWJsZWRfdGVzdF9jb3VudCgpKTsKICAgRVhQRUNUX0VRKDEsIHRlc3RfY2FzZS0+dGVzdF90
b19ydW5fY291bnQoKSk7CkBAIC0xOTgsOSArMTk5LDggQEAgVEVTVChBcGlUZXN0LCBUZXN0Q2Fz
ZUltbXV0YWJsZUFjY2Vzc29yc1dvcmspIHsKIAogICBFWFBFQ1RfU1RSRVEoIkR1bW15IiwgdGVz
dHNbMF0tPm5hbWUoKSk7CiAgIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VXaXRoQ29tbWVudFRlc3Qv
MCIsIHRlc3RzWzBdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0
c1swXS0+Y29tbWVudCgpKTsKLSAgRVhQRUNUX1NUUkVRKEdldEV4cGVjdGVkVGVzdENhc2VDb21t
ZW50KCkuY19zdHIoKSwKLSAgICAgICAgICAgICAgIHRlc3RzWzBdLT50ZXN0X2Nhc2VfY29tbWVu
dCgpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzBdLT52YWx1ZV9wYXJhbSgpKSk7Cisg
IEVYUEVDVF9TVFJFUShHZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIoKSwgdGVzdHNbMF0tPnR5cGVf
cGFyYW0oKSk7CiAgIEVYUEVDVF9UUlVFKHRlc3RzWzBdLT5zaG91bGRfcnVuKCkpOwogCiAgIGRl
bGV0ZVtdIHRlc3RzOwpAQCAtMjEyLDcgKzIxMiw3IEBAIFRFU1QoQXBpVGVzdCwgVGVzdENhc2VE
aXNhYmxlZEFjY2Vzc29yc1dvcmspIHsKICAgQVNTRVJUX1RSVUUodGVzdF9jYXNlICE9IE5VTEwp
OwogCiAgIEVYUEVDVF9TVFJFUSgiRElTQUJMRURfVGVzdCIsIHRlc3RfY2FzZS0+bmFtZSgpKTsK
LSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0X2Nhc2UtPmNvbW1lbnQoKSk7CisgIEVYUEVDVF9UUlVF
KElzTnVsbCh0ZXN0X2Nhc2UtPnR5cGVfcGFyYW0oKSkpOwogICBFWFBFQ1RfRkFMU0UodGVzdF9j
YXNlLT5zaG91bGRfcnVuKCkpOwogICBFWFBFQ1RfRVEoMSwgdGVzdF9jYXNlLT5kaXNhYmxlZF90
ZXN0X2NvdW50KCkpOwogICBFWFBFQ1RfRVEoMCwgdGVzdF9jYXNlLT50ZXN0X3RvX3J1bl9jb3Vu
dCgpKTsKQEAgLTIyMSw4ICsyMjEsOCBAQCBURVNUKEFwaVRlc3QsIFRlc3RDYXNlRGlzYWJsZWRB
Y2Nlc3NvcnNXb3JrKSB7CiAgIGNvbnN0IFRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPSB0ZXN0
X2Nhc2UtPkdldFRlc3RJbmZvKDApOwogICBFWFBFQ1RfU1RSRVEoIkR1bW15MiIsIHRlc3RfaW5m
by0+bmFtZSgpKTsKICAgRVhQRUNUX1NUUkVRKCJESVNBQkxFRF9UZXN0IiwgdGVzdF9pbmZvLT50
ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0X2luZm8tPmNvbW1lbnQo
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdF9pbmZvLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsK
KyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfaW5mby0+dmFsdWVfcGFyYW0oKSkpOworICBFWFBF
Q1RfVFJVRShJc051bGwodGVzdF9pbmZvLT50eXBlX3BhcmFtKCkpKTsKICAgRVhQRUNUX0ZBTFNF
KHRlc3RfaW5mby0+c2hvdWxkX3J1bigpKTsKIH0KIApAQCAtMjQ3LDcgKzI0Nyw3IEBAIGNsYXNz
IEZpbmFsU3VjY2Vzc0NoZWNrZXIgOiBwdWJsaWMgRW52aXJvbm1lbnQgewogICAgIGNvbnN0IFRl
c3RDYXNlKiogY29uc3QgdGVzdF9jYXNlcyA9IFVuaXRUZXN0SGVscGVyOjpHZXRTb3J0ZWRUZXN0
Q2FzZXMoKTsKIAogICAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RfY2FzZXNbMF0tPm5h
bWUoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0X2Nhc2VzWzBdLT5jb21tZW50KCkpOwor
ICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0X2Nhc2VzWzBdLT50eXBlX3BhcmFtKCkpKTsKICAg
ICBFWFBFQ1RfVFJVRSh0ZXN0X2Nhc2VzWzBdLT5zaG91bGRfcnVuKCkpOwogICAgIEVYUEVDVF9F
USgxLCB0ZXN0X2Nhc2VzWzBdLT5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOwogICAgIEFTU0VSVF9F
USg0LCB0ZXN0X2Nhc2VzWzBdLT50b3RhbF90ZXN0X2NvdW50KCkpOwpAQCAtMjU3LDcgKzI1Nyw3
IEBAIGNsYXNzIEZpbmFsU3VjY2Vzc0NoZWNrZXIgOiBwdWJsaWMgRW52aXJvbm1lbnQgewogICAg
IEVYUEVDVF9GQUxTRSh0ZXN0X2Nhc2VzWzBdLT5GYWlsZWQoKSk7CiAKICAgICBFWFBFQ1RfU1RS
RVEoIkRJU0FCTEVEX1Rlc3QiLCB0ZXN0X2Nhc2VzWzFdLT5uYW1lKCkpOwotICAgIEVYUEVDVF9T
VFJFUSgiIiwgdGVzdF9jYXNlc1sxXS0+Y29tbWVudCgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051
bGwodGVzdF9jYXNlc1sxXS0+dHlwZV9wYXJhbSgpKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHRlc3Rf
Y2FzZXNbMV0tPnNob3VsZF9ydW4oKSk7CiAgICAgRVhQRUNUX0VRKDEsIHRlc3RfY2FzZXNbMV0t
PmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgICAgQVNTRVJUX0VRKDEsIHRlc3RfY2FzZXNbMV0t
PnRvdGFsX3Rlc3RfY291bnQoKSk7CkBAIC0yNjYsOCArMjY2LDcgQEAgY2xhc3MgRmluYWxTdWNj
ZXNzQ2hlY2tlciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7CiAKICNpZiBHVEVTVF9IQVNfVFlQRURf
VEVTVAogICAgIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VXaXRoQ29tbWVudFRlc3QvMCIsIHRlc3Rf
Y2FzZXNbMl0tPm5hbWUoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKEdldEV4cGVjdGVkVGVzdENhc2VD
b21tZW50KCkuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgdGVzdF9jYXNlc1syXS0+Y29tbWVu
dCgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoR2V0VHlwZU5hbWU8aW50PigpLmNfc3RyKCksIHRlc3Rf
Y2FzZXNbMl0tPnR5cGVfcGFyYW0oKSk7CiAgICAgRVhQRUNUX1RSVUUodGVzdF9jYXNlc1syXS0+
c2hvdWxkX3J1bigpKTsKICAgICBFWFBFQ1RfRVEoMCwgdGVzdF9jYXNlc1syXS0+ZGlzYWJsZWRf
dGVzdF9jb3VudCgpKTsKICAgICBBU1NFUlRfRVEoMSwgdGVzdF9jYXNlc1syXS0+dG90YWxfdGVz
dF9jb3VudCgpKTsKQEAgLTI4NSwyNCArMjg0LDI0IEBAIGNsYXNzIEZpbmFsU3VjY2Vzc0NoZWNr
ZXIgOiBwdWJsaWMgRW52aXJvbm1lbnQgewogCiAgICAgRVhQRUNUX1NUUkVRKCJUZXN0Q2FzZURp
c2FibGVkQWNjZXNzb3JzV29yayIsIHRlc3RzWzFdLT5uYW1lKCkpOwogICAgIEVYUEVDVF9TVFJF
USgiQXBpVGVzdCIsIHRlc3RzWzFdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RS
RVEoIiIsIHRlc3RzWzFdLT5jb21tZW50KCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNb
MV0tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1sx
XS0+dmFsdWVfcGFyYW0oKSkpOworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1sxXS0+dHlw
ZV9wYXJhbSgpKSk7CiAgICAgRVhQRUNUX1RSVUUodGVzdHNbMV0tPnNob3VsZF9ydW4oKSk7CiAg
ICAgRVhQRUNUX1RSVUUodGVzdHNbMV0tPnJlc3VsdCgpLT5QYXNzZWQoKSk7CiAgICAgRVhQRUNU
X0VRKDAsIHRlc3RzWzFdLT5yZXN1bHQoKS0+dGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKIAogICAg
IEVYUEVDVF9TVFJFUSgiVGVzdENhc2VJbW11dGFibGVBY2Nlc3NvcnNXb3JrIiwgdGVzdHNbMl0t
Pm5hbWUoKSk7CiAgICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbMl0tPnRlc3RfY2Fz
ZV9uYW1lKCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMl0tPmNvbW1lbnQoKSk7Ci0g
ICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1syXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgICAg
RVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzJdLT52YWx1ZV9wYXJhbSgpKSk7CisgICAgRVhQRUNU
X1RSVUUoSXNOdWxsKHRlc3RzWzJdLT50eXBlX3BhcmFtKCkpKTsKICAgICBFWFBFQ1RfVFJVRSh0
ZXN0c1syXS0+c2hvdWxkX3J1bigpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0c1syXS0+cmVzdWx0
KCktPlBhc3NlZCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgdGVzdHNbMl0tPnJlc3VsdCgpLT50ZXN0
X3Byb3BlcnR5X2NvdW50KCkpOwogCiAgICAgRVhQRUNUX1NUUkVRKCJVbml0VGVzdEltbXV0YWJs
ZUFjY2Vzc29yc1dvcmsiLCB0ZXN0c1szXS0+bmFtZSgpKTsKICAgICBFWFBFQ1RfU1RSRVEoIkFw
aVRlc3QiLCB0ZXN0c1szXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIi
LCB0ZXN0c1szXS0+Y29tbWVudCgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzNdLT50
ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbM10tPnZh
bHVlX3BhcmFtKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbM10tPnR5cGVfcGFy
YW0oKSkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzNdLT5zaG91bGRfcnVuKCkpOwogICAgIEVY
UEVDVF9UUlVFKHRlc3RzWzNdLT5yZXN1bHQoKS0+UGFzc2VkKCkpOwogICAgIEVYUEVDVF9FUSgx
LCB0ZXN0c1szXS0+cmVzdWx0KCktPnRlc3RfcHJvcGVydHlfY291bnQoKSk7CkBAIC0zMTgsOSAr
MzE3LDggQEAgY2xhc3MgRmluYWxTdWNjZXNzQ2hlY2tlciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7
CiAKICAgICBFWFBFQ1RfU1RSRVEoIkR1bW15IiwgdGVzdHNbMF0tPm5hbWUoKSk7CiAgICAgRVhQ
RUNUX1NUUkVRKCJUZXN0Q2FzZVdpdGhDb21tZW50VGVzdC8wIiwgdGVzdHNbMF0tPnRlc3RfY2Fz
ZV9uYW1lKCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMF0tPmNvbW1lbnQoKSk7Ci0g
ICAgRVhQRUNUX1NUUkVRKEdldEV4cGVjdGVkVGVzdENhc2VDb21tZW50KCkuY19zdHIoKSwKLSAg
ICAgICAgICAgICAgICAgdGVzdHNbMF0tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICAgIEVYUEVD
VF9UUlVFKElzTnVsbCh0ZXN0c1swXS0+dmFsdWVfcGFyYW0oKSkpOworICAgIEVYUEVDVF9TVFJF
UShHZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIoKSwgdGVzdHNbMF0tPnR5cGVfcGFyYW0oKSk7CiAg
ICAgRVhQRUNUX1RSVUUodGVzdHNbMF0tPnNob3VsZF9ydW4oKSk7CiAgICAgRVhQRUNUX1RSVUUo
dGVzdHNbMF0tPnJlc3VsdCgpLT5QYXNzZWQoKSk7CiAgICAgRVhQRUNUX0VRKDAsIHRlc3RzWzBd
LT5yZXN1bHQoKS0+dGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYWxsX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X2FsbF90ZXN0LmNjCmluZGV4IGUxZWRiMDhlMzNhMThjMjM5MTE1
ZGFkNWU0YTBkNmZiNjMyZGJiMTcuLjk1NWFhNjI4Mjg0ODMzZGI2YzRkZTg4YTIwYWVkNjNmNmYx
OGRjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYWxs
X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9hbGxfdGVz
dC5jYwpAQCAtNDUsNCArNDUsMyBAQAogI2luY2x1ZGUgInRlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJf
dGVzdC5jYyIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjIgogI2luY2x1ZGUgInRl
c3QvcHJvZHVjdGlvbi5jYyIKLSNpbmNsdWRlICJzcmMvZ3Rlc3RfbWFpbi5jYyIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91
bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYnJlYWtfb25f
ZmFpbHVyZV91bml0dGVzdC5weQppbmRleCBjODE5MTgzMzEyMjc1ZGVjYTA1Yzc2MzE4NjA0MDQ3
MWJmZjQ5ZjMzLi43OGYzZTBmNTNiNzkxY2UyMjhhN2FkZjAzMDg2NmJiMjg4M2I5ZmVhIDEwMDc1
NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1
cmVfdW5pdHRlc3QucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9i
cmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0LnB5CkBAIC02NiwyMSArNjYsMTUgQEAKICAgICAnZ3Rl
c3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8nKQogCiAKLSMgVXRpbGl0aWVzLgotCi0KLWVu
dmlyb24gPSBvcy5lbnZpcm9uLmNvcHkoKQotCi0KLWRlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFs
dWUpOgotICAiIiJTZXRzIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEgZ2l2ZW4gdmFsdWU7
IHVuc2V0cyBpdCB3aGVuIHRoZQotICBnaXZlbiB2YWx1ZSBpcyBOb25lLgotICAiIiIKLQotICBp
ZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICBlbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKLSAgZWxp
ZiBlbnZfdmFyIGluIGVudmlyb246Ci0gICAgZGVsIGVudmlyb25bZW52X3Zhcl0KK2Vudmlyb24g
PSBndGVzdF90ZXN0X3V0aWxzLmVudmlyb24KK1NldEVudlZhciA9IGd0ZXN0X3Rlc3RfdXRpbHMu
U2V0RW52VmFyCisKKyMgVGVzdHMgaW4gdGhpcyBmaWxlIHJ1biBhIEdvb2dsZS1UZXN0LWJhc2Vk
IHRlc3QgcHJvZ3JhbSBhbmQgZXhwZWN0IGl0CisjIHRvIHRlcm1pbmF0ZSBwcmVtYXR1cmVseS4g
IFRoZXJlZm9yZSB0aGV5IGFyZSBpbmNvbXBhdGlibGUgd2l0aAorIyB0aGUgcHJlbWF0dXJlLWV4
aXQtZmlsZSBwcm90b2NvbCBieSBkZXNpZ24uICBVbnNldCB0aGUKKyMgcHJlbWF0dXJlLWV4aXQg
ZmlsZXBhdGggdG8gcHJldmVudCBHb29nbGUgVGVzdCBmcm9tIGNyZWF0aW5nCisjIHRoZSBmaWxl
LgorU2V0RW52VmFyKGd0ZXN0X3Rlc3RfdXRpbHMuUFJFTUFUVVJFX0VYSVRfRklMRV9FTlZfVkFS
LCBOb25lKQogCiAKIGRlZiBSdW4oY29tbWFuZCk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0
Xy5jYwppbmRleCBkMjhkMWQzZGFkNDZiOGZkZjNjMzQwOTY3ZGJmY2E4NTJmNTllNGExLi5kZDA3
NDc4YzA3NTdjNzRjZDU0OGE4ZjNlOTI3NDM1YTZlNDI5Nzg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVy
ZV91bml0dGVzdF8uY2MKQEAgLTM5LDExICszOSwxMSBAQAogLy8gVGhpcyBwcm9ncmFtIHdpbGwg
YmUgaW52b2tlZCBmcm9tIGEgUHl0aG9uIHVuaXQgdGVzdC4gIEl0IGlzCiAvLyBleHBlY3RlZCB0
byBmYWlsLiAgRG9uJ3QgcnVuIGl0IGRpcmVjdGx5LgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAjaWYgR1RFU1RfT1NfV0lORE9XUwotI2lu
Y2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KKyMgaW5jbHVkZSA8d2luZG93
cy5oPgorIyBpbmNsdWRlIDxzdGRsaWIuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgewpAQCAtNjks
NyArNjksOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKICAgLy8gYSBnZW5l
cmFsIHByb3RlY3Rpb24gZmF1bHQgKHNlZ21lbnQgdmlvbGF0aW9uKS4KICAgU2V0RXJyb3JNb2Rl
KFNFTV9OT0dQRkFVTFRFUlJPUkJPWCB8IFNFTV9GQUlMQ1JJVElDQUxFUlJPUlMpOwogCi0jaWYg
IUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGlmIEdURVNUX0hBU19TRUggJiYgIUdURVNUX09T
X1dJTkRPV1NfTU9CSUxFCisKICAgLy8gVGhlIGRlZmF1bHQgdW5oYW5kbGVkIGV4Y2VwdGlvbiBm
aWx0ZXIgZG9lcyBub3QgYWx3YXlzIGV4aXQKICAgLy8gd2l0aCB0aGUgZXhjZXB0aW9uIGNvZGUg
YXMgZXhpdCBjb2RlIC0gZm9yIGV4YW1wbGUgaXQgZXhpdHMgd2l0aAogICAvLyAwIGZvciBFWENF
UFRJT05fQUNDRVNTX1ZJT0xBVElPTiBhbmQgMSBmb3IgRVhDRVBUSU9OX0JSRUFLUE9JTlQKQEAg
LTc3LDcgKzc4LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CiAgIC8vIGZp
bHRlciB3aGljaCBhbHdheXMgZXhpdHMgd2l0aCB0aGUgZXhjZXB0aW9uIGNvZGUgZm9yIHVuaGFu
ZGxlZAogICAvLyBleGNlcHRpb25zLgogICBTZXRVbmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIoRXhp
dFdpdGhFeGNlcHRpb25Db2RlKTsKLSNlbmRpZgorCisjIGVuZGlmCiAjZW5kaWYKIAogICB0ZXN0
aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfdGVzdC5weSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc190ZXN0LnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU2ZmMyMmZkMWZlNWMwYzRlYmRjOGRlN2I0MjIzNmExNjY5YjBkMDcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NhdGNoX2V4
Y2VwdGlvbnNfdGVzdC5weQpAQCAtMCwwICsxLDIzNyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
CisjCisjIENvcHlyaWdodCAyMDEwIEdvb2dsZSBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworIiIiVGVzdHMgR29vZ2xlIFRlc3QncyBleGNlcHRpb24gY2F0
Y2hpbmcgYmVoYXZpb3IuCisKK1RoaXMgc2NyaXB0IGludm9rZXMgZ3Rlc3RfY2F0Y2hfZXhjZXB0
aW9uc190ZXN0XyBhbmQKK2d0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfZXhfdGVzdF8gKHByb2dyYW1z
IHdyaXR0ZW4gd2l0aAorR29vZ2xlIFRlc3QpIGFuZCB2ZXJpZmllcyB0aGVpciBvdXRwdXQuCisi
IiIKKworX19hdXRob3JfXyA9ICd2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KScKKworaW1w
b3J0IG9zCisKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKKyMgQ29uc3RhbnRzLgorRkxBR19Q
UkVGSVggPSAnLS1ndGVzdF8nCitMSVNUX1RFU1RTX0ZMQUcgPSBGTEFHX1BSRUZJWCArICdsaXN0
X3Rlc3RzJworTk9fQ0FUQ0hfRVhDRVBUSU9OU19GTEFHID0gRkxBR19QUkVGSVggKyAnY2F0Y2hf
ZXhjZXB0aW9ucz0wJworRklMVEVSX0ZMQUcgPSBGTEFHX1BSRUZJWCArICdmaWx0ZXInCisKKyMg
UGF0aCB0byB0aGUgZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc19leF90ZXN0XyBiaW5hcnksIGNvbXBp
bGVkIHdpdGgKKyMgZXhjZXB0aW9ucyBlbmFibGVkLgorRVhfRVhFX1BBVEggPSBndGVzdF90ZXN0
X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKKyAgICAnZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9u
c19leF90ZXN0XycpCisKKyMgUGF0aCB0byB0aGUgZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc190ZXN0
XyBiaW5hcnksIGNvbXBpbGVkIHdpdGgKKyMgZXhjZXB0aW9ucyBkaXNhYmxlZC4KK0VYRV9QQVRI
ID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisgICAgJ2d0ZXN0X2Nh
dGNoX2V4Y2VwdGlvbnNfbm9fZXhfdGVzdF8nKQorCitlbnZpcm9uID0gZ3Rlc3RfdGVzdF91dGls
cy5lbnZpcm9uCitTZXRFbnZWYXIgPSBndGVzdF90ZXN0X3V0aWxzLlNldEVudlZhcgorCisjIFRl
c3RzIGluIHRoaXMgZmlsZSBydW4gYSBHb29nbGUtVGVzdC1iYXNlZCB0ZXN0IHByb2dyYW0gYW5k
IGV4cGVjdCBpdAorIyB0byB0ZXJtaW5hdGUgcHJlbWF0dXJlbHkuICBUaGVyZWZvcmUgdGhleSBh
cmUgaW5jb21wYXRpYmxlIHdpdGgKKyMgdGhlIHByZW1hdHVyZS1leGl0LWZpbGUgcHJvdG9jb2wg
YnkgZGVzaWduLiAgVW5zZXQgdGhlCisjIHByZW1hdHVyZS1leGl0IGZpbGVwYXRoIHRvIHByZXZl
bnQgR29vZ2xlIFRlc3QgZnJvbSBjcmVhdGluZworIyB0aGUgZmlsZS4KK1NldEVudlZhcihndGVz
dF90ZXN0X3V0aWxzLlBSRU1BVFVSRV9FWElUX0ZJTEVfRU5WX1ZBUiwgTm9uZSkKKworVEVTVF9M
SVNUID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAorICAgIFtFWEVfUEFUSCwgTElTVF9U
RVNUU19GTEFHXSwgZW52PWVudmlyb24pLm91dHB1dAorCitTVVBQT1JUU19TRUhfRVhDRVBUSU9O
UyA9ICdUaHJvd3NTZWhFeGNlcHRpb24nIGluIFRFU1RfTElTVAorCitpZiBTVVBQT1JUU19TRUhf
RVhDRVBUSU9OUzoKKyAgQklOQVJZX09VVFBVVCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vz
cyhbRVhFX1BBVEhdLCBlbnY9ZW52aXJvbikub3V0cHV0CisKK0VYX0JJTkFSWV9PVVRQVVQgPSBn
dGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgW0VYX0VYRV9QQVRIXSwgZW52PWVudmly
b24pLm91dHB1dAorCisKKyMgVGhlIHRlc3RzLgoraWYgU1VQUE9SVFNfU0VIX0VYQ0VQVElPTlM6
CisgICMgcHlsaW50OmRpc2FibGUtbXNnPUM2MzAyCisgIGNsYXNzIENhdGNoU2VoRXhjZXB0aW9u
c1Rlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgZXhjZXB0aW9u
LWNhdGNoaW5nIGJlaGF2aW9yLiIiIgorCisKKyAgICBkZWYgVGVzdFNlaEV4Y2VwdGlvbnMoc2Vs
ZiwgdGVzdF9vdXRwdXQpOgorICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGgg
Y29kZSAweDJhIHRocm93biAnCisgICAgICAgICAgICAgICAgICAgJ2luIHRoZSB0ZXN0IGZpeHR1
cmVcJ3MgY29uc3RydWN0b3InCisgICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCisg
ICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhyb3duICcK
KyAgICAgICAgICAgICAgICAgICAnaW4gdGhlIHRlc3QgZml4dHVyZVwncyBkZXN0cnVjdG9yJwor
ICAgICAgICAgICAgICAgICAgIGluIHRlc3Rfb3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKCdT
RUggZXhjZXB0aW9uIHdpdGggY29kZSAweDJhIHRocm93biBpbiBTZXRVcFRlc3RDYXNlKCknCisg
ICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCisgICAgICBzZWxmLmFzc2VydF8oJ1NF
SCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhyb3duIGluIFRlYXJEb3duVGVzdENhc2UoKScK
KyAgICAgICAgICAgICAgICAgICBpbiB0ZXN0X291dHB1dCkKKyAgICAgIHNlbGYuYXNzZXJ0Xygn
U0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24gaW4gU2V0VXAoKScKKyAgICAgICAg
ICAgICAgICAgICBpbiB0ZXN0X291dHB1dCkKKyAgICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2Vw
dGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24gaW4gVGVhckRvd24oKScKKyAgICAgICAgICAgICAg
ICAgICBpbiB0ZXN0X291dHB1dCkKKyAgICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3
aXRoIGNvZGUgMHgyYSB0aHJvd24gaW4gdGhlIHRlc3QgYm9keScKKyAgICAgICAgICAgICAgICAg
ICBpbiB0ZXN0X291dHB1dCkKKworICAgIGRlZiB0ZXN0Q2F0Y2hlc1NlaEV4Y2VwdGlvbnNXaXRo
Q3h4RXhjZXB0aW9uc0VuYWJsZWQoc2VsZik6CisgICAgICBzZWxmLlRlc3RTZWhFeGNlcHRpb25z
KEVYX0JJTkFSWV9PVVRQVVQpCisKKyAgICBkZWYgdGVzdENhdGNoZXNTZWhFeGNlcHRpb25zV2l0
aEN4eEV4Y2VwdGlvbnNEaXNhYmxlZChzZWxmKToKKyAgICAgIHNlbGYuVGVzdFNlaEV4Y2VwdGlv
bnMoQklOQVJZX09VVFBVVCkKKworCitjbGFzcyBDYXRjaEN4eEV4Y2VwdGlvbnNUZXN0KGd0ZXN0
X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJUZXN0cyBDKysgZXhjZXB0aW9uLWNhdGNoaW5n
IGJlaGF2aW9yLgorCisgICAgIFRlc3RzIGluIHRoaXMgdGVzdCBjYXNlIHZlcmlmeSB0aGF0Ogor
ICAgICAqIEMrKyBleGNlcHRpb25zIGFyZSBjYXVnaHQgYW5kIGxvZ2dlZCBhcyBDKysgKG5vdCBT
RUgpIGV4Y2VwdGlvbnMKKyAgICAgKiBFeGNlcHRpb24gdGhyb3duIGFmZmVjdCB0aGUgcmVtYWlu
ZGVyIG9mIHRoZSB0ZXN0IHdvcmsgZmxvdyBpbiB0aGUKKyAgICAgICBleHBlY3RlZCBtYW5uZXIu
CisgICIiIgorCisgIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJbkZpeHR1cmVDb25zdHJ1
Y3RvcihzZWxmKToKKyAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlw
dGlvbiAnCisgICAgICAgICAgICAgICAgICciU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIgdGhyb3du
ICcKKyAgICAgICAgICAgICAgICAgJ2luIHRoZSB0ZXN0IGZpeHR1cmVcJ3MgY29uc3RydWN0b3In
CisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRf
KCd1bmV4cGVjdGVkJyBub3QgaW4gRVhfQklOQVJZX09VVFBVVCwKKyAgICAgICAgICAgICAgICAg
J1RoaXMgZmFpbHVyZSBiZWxvbmdzIGluIHRoaXMgdGVzdCBvbmx5IGlmICcKKyAgICAgICAgICAg
ICAgICAgJyJDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCIgKG5vIHF1b3RlcykgJworICAg
ICAgICAgICAgICAgICAnYXBwZWFycyBvbiB0aGUgc2FtZSBsaW5lIGFzIHdvcmRzICJjYWxsZWQg
dW5leHBlY3RlZGx5IicpCisKKyAgaWYgKCdDeHhFeGNlcHRpb25JbkRlc3RydWN0b3JUZXN0LlRo
cm93c0V4Y2VwdGlvbkluRGVzdHJ1Y3RvcicgaW4KKyAgICAgIEVYX0JJTkFSWV9PVVRQVVQpOgor
CisgICAgZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luRml4dHVyZURlc3RydWN0b3Ioc2Vs
Zik6CisgICAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlvbiAn
CisgICAgICAgICAgICAgICAgICAgJyJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIiB0aHJvd24gJwor
ICAgICAgICAgICAgICAgICAgICdpbiB0aGUgdGVzdCBmaXh0dXJlXCdzIGRlc3RydWN0b3InCisg
ICAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICAgIHNlbGYuYXNzZXJ0
XygnQ3h4RXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICcKKyAg
ICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAg
ICBpbiBFWF9CSU5BUllfT1VUUFVUKQorCisgIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJ
blNldFVwVGVzdENhc2Uoc2VsZik6CisgICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0aW9uIHdp
dGggZGVzY3JpcHRpb24gIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iJworICAgICAgICAgICAgICAg
ICAnIHRocm93biBpbiBTZXRVcFRlc3RDYXNlKCknCisgICAgICAgICAgICAgICAgIGluIEVYX0JJ
TkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9y
VGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBl
eHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2Vs
Zi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0IGNvbnN0cnVjdG9yICcK
KyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAg
IGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNl
dFVwVGVzdENhc2VUZXN0IGRlc3RydWN0b3IgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFz
IGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBz
ZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3Q6OlNldFVwKCkgJwor
ICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAg
aW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0
VXBUZXN0Q2FzZVRlc3Q6OlRlYXJEb3duKCkgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFz
IGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBz
ZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgdGVzdCBib2R5ICcK
KyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAg
IGluIEVYX0JJTkFSWV9PVVRQVVQpCisKKyAgZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0lu
VGVhckRvd25UZXN0Q2FzZShzZWxmKToKKyAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24g
d2l0aCBkZXNjcmlwdGlvbiAiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiInCisgICAgICAgICAgICAg
ICAgICcgdGhyb3duIGluIFRlYXJEb3duVGVzdENhc2UoKScKKyAgICAgICAgICAgICAgICAgaW4g
RVhfQklOQVJZX09VVFBVVCkKKworICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5TZXRV
cChzZWxmKToKKyAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlv
biAiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiInCisgICAgICAgICAgICAgICAgICcgdGhyb3duIGlu
IFNldFVwKCknCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2Vs
Zi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICcK
KyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAg
IGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNl
dFVwVGVzdCBkZXN0cnVjdG9yICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3Rl
ZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3Nl
cnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVzdDo6VGVhckRvd24oKSAnCisgICAgICAgICAgICAg
ICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllf
T1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygndW5leHBlY3RlZCcgbm90IGluIEVYX0JJTkFSWV9P
VVRQVVQsCisgICAgICAgICAgICAgICAgICdUaGlzIGZhaWx1cmUgYmVsb25ncyBpbiB0aGlzIHRl
c3Qgb25seSBpZiAnCisgICAgICAgICAgICAgICAgICciQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Qi
IChubyBxdW90ZXMpICcKKyAgICAgICAgICAgICAgICAgJ2FwcGVhcnMgb24gdGhlIHNhbWUgbGlu
ZSBhcyB3b3JkcyAiY2FsbGVkIHVuZXhwZWN0ZWRseSInKQorCisgIGRlZiB0ZXN0Q2F0Y2hlc0N4
eEV4Y2VwdGlvbnNJblRlYXJEb3duKHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0XygnQysrIGV4Y2Vw
dGlvbiB3aXRoIGRlc2NyaXB0aW9uICJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIicKKyAgICAgICAg
ICAgICAgICAgJyB0aHJvd24gaW4gVGVhckRvd24oKScKKyAgICAgICAgICAgICAgICAgaW4gRVhf
QklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluVGVhckRvd25U
ZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4
cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxm
LmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0IGRlc3RydWN0b3IgJworICAgICAg
ICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhf
QklOQVJZX09VVFBVVCkKKworICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5UZXN0Qm9k
eShzZWxmKToKKyAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlv
biAiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiInCisgICAgICAgICAgICAgICAgICcgdGhyb3duIGlu
IHRoZSB0ZXN0IGJvZHknCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisg
ICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdDo6VGVhckRvd25UZXN0
Q2FzZSgpICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAg
ICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNl
cHRpb25JblRlc3RCb2R5VGVzdCBkZXN0cnVjdG9yICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxl
ZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisg
ICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdDo6VGVhckRvd24oKSAn
CisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAg
ICBpbiBFWF9CSU5BUllfT1VUUFVUKQorCisgIGRlZiB0ZXN0Q2F0Y2hlc05vblN0ZEN4eEV4Y2Vw
dGlvbnMoc2VsZik6CisgICAgc2VsZi5hc3NlcnRfKCdVbmtub3duIEMrKyBleGNlcHRpb24gdGhy
b3duIGluIHRoZSB0ZXN0IGJvZHknCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQ
VVQpCisKKyAgZGVmIHRlc3RVbmhhbmRsZWRDeHhFeGNlcHRpb25zQWJvcnRUaGVQcm9ncmFtKHNl
bGYpOgorICAgICMgRmlsdGVycyBvdXQgU0VIIGV4Y2VwdGlvbiB0ZXN0cyBvbiBXaW5kb3dzLiBV
bmhhbmRsZWQgU0VIIGV4Y2VwdGlvbnMKKyAgICAjIGNhdXNlIHRlc3RzIHRvIHNob3cgcG9wLXVw
IHdpbmRvd3MgdGhlcmUuCisgICAgRklUTEVSX09VVF9TRUhfVEVTVFNfRkxBRyA9IEZJTFRFUl9G
TEFHICsgJz0tKlNlaConCisgICAgIyBCeSBkZWZhdWx0LCBHb29nbGUgVGVzdCBkb2Vzbid0IGNh
dGNoIHRoZSBleGNlcHRpb25zLgorICAgIHVuY2F1Z2h0X2V4Y2VwdGlvbnNfZXhfYmluYXJ5X291
dHB1dCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKKyAgICAgICAgW0VYX0VYRV9QQVRI
LAorICAgICAgICAgTk9fQ0FUQ0hfRVhDRVBUSU9OU19GTEFHLAorICAgICAgICAgRklUTEVSX09V
VF9TRUhfVEVTVFNfRkxBR10sCisgICAgICAgIGVudj1lbnZpcm9uKS5vdXRwdXQKKworICAgIHNl
bGYuYXNzZXJ0XygnVW5oYW5kbGVkIEMrKyBleGNlcHRpb24gdGVybWluYXRpbmcgdGhlIHByb2dy
YW0nCisgICAgICAgICAgICAgICAgIGluIHVuY2F1Z2h0X2V4Y2VwdGlvbnNfZXhfYmluYXJ5X291
dHB1dCkKKyAgICBzZWxmLmFzc2VydF8oJ3VuZXhwZWN0ZWQnIG5vdCBpbiB1bmNhdWdodF9leGNl
cHRpb25zX2V4X2JpbmFyeV9vdXRwdXQpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
KyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc190ZXN0Xy5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc190ZXN0Xy5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kMGZjODJjOTk4ZDYyMWQzYTczMjRhZjZjZWNjMzQxYWVhODc2MDEyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9jYXRjaF9leGNlcHRp
b25zX3Rlc3RfLmNjCkBAIC0wLDAgKzEsMzExIEBACisvLyBDb3B5cmlnaHQgMjAxMCwgR29vZ2xl
IEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
Ky8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFk
IExvc2V2KQorLy8KKy8vIFRlc3RzIGZvciBHb29nbGUgVGVzdCBpdHNlbGYuIFRlc3RzIGluIHRo
aXMgZmlsZSB0aHJvdyBDKysgb3IgU0VICisvLyBleGNlcHRpb25zLCBhbmQgdGhlIG91dHB1dCBp
cyB2ZXJpZmllZCBieSBndGVzdF9jYXRjaF9leGNlcHRpb25zX3Rlc3QucHkuCisKKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgorCisjaW5jbHVkZSA8c3RkaW8uaD4gIC8vIE5PTElOVAorI2luY2x1
ZGUgPHN0ZGxpYi5oPiAgLy8gRm9yIGV4aXQoKS4KKworI2lmIEdURVNUX0hBU19TRUgKKyMgaW5j
bHVkZSA8d2luZG93cy5oPgorI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworIyBp
bmNsdWRlIDxleGNlcHRpb24+ICAvLyBGb3Igc2V0X3Rlcm1pbmF0ZSgpLgorIyBpbmNsdWRlIDxz
dGRleGNlcHQ+CisjZW5kaWYKKwordXNpbmcgdGVzdGluZzo6VGVzdDsKKworI2lmIEdURVNUX0hB
U19TRUgKKworY2xhc3MgU2VoRXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgVGVz
dCB7CisgcHVibGljOgorICBTZWhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCgpIHsgUmFpc2VF
eGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhjZXB0aW9uSW5D
b25zdHJ1Y3RvclRlc3QsIFRocm93c0V4Y2VwdGlvbkluQ29uc3RydWN0b3IpIHt9CisKK2NsYXNz
IFNlaEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgor
ICB+U2VoRXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAs
IDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCwg
VGhyb3dzRXhjZXB0aW9uSW5EZXN0cnVjdG9yKSB7fQorCitjbGFzcyBTZWhFeGNlcHRpb25JblNl
dFVwVGVzdENhc2VUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQg
U2V0VXBUZXN0Q2FzZSgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9Owor
CitURVNUX0YoU2VoRXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCwgVGhyb3dzRXhjZXB0aW9u
SW5TZXRVcFRlc3RDYXNlKSB7fQorCitjbGFzcyBTZWhFeGNlcHRpb25JblRlYXJEb3duVGVzdENh
c2VUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgVGVhckRvd25U
ZXN0Q2FzZSgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitURVNU
X0YoU2VoRXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNlVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5U
ZWFyRG93blRlc3RDYXNlKSB7fQorCitjbGFzcyBTZWhFeGNlcHRpb25JblNldFVwVGVzdCA6IHB1
YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsgUmFpc2VF
eGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhjZXB0aW9uSW5T
ZXRVcFRlc3QsIFRocm93c0V4Y2VwdGlvbkluU2V0VXApIHt9CisKK2NsYXNzIFNlaEV4Y2VwdGlv
bkluVGVhckRvd25UZXN0IDogcHVibGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB2
b2lkIFRlYXJEb3duKCkgeyBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7IH0KK307CisK
K1RFU1RfRihTZWhFeGNlcHRpb25JblRlYXJEb3duVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5UZWFy
RG93bikge30KKworVEVTVChTZWhFeGNlcHRpb25UZXN0LCBUaHJvd3NTZWhFeGNlcHRpb24pIHsK
KyAgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOworfQorCisjZW5kaWYgIC8vIEdURVNU
X0hBU19TRUgKKworI2lmIEdURVNUX0hBU19FWENFUFRJT05TCisKK2NsYXNzIEN4eEV4Y2VwdGlv
bkluQ29uc3RydWN0b3JUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgQ3h4RXhjZXB0
aW9uSW5Db25zdHJ1Y3RvclRlc3QoKSB7CisgICAgLy8gV2l0aG91dCB0aGlzIG1hY3JvIFZDKysg
Y29tcGxhaW5zIGFib3V0IHVucmVhY2hhYmxlIGNvZGUgYXQgdGhlIGVuZCBvZgorICAgIC8vIHRo
ZSBjb25zdHJ1Y3Rvci4KKyAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5J
TkdfQkVMT1dfKAorICAgICAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMr
KyBleGNlcHRpb24iKSk7CisgIH0KKworICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkg
eworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3Rv
clRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0
ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICB+Q3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3Rv
clRlc3QoKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3Rv
clRlc3QgZGVzdHJ1Y3RvciAiCisgICAgICAgICAgICAgICAgICA8PCAiY2FsbGVkIHVuZXhwZWN0
ZWRseS4iOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIEFERF9GQUlMVVJF
KCkgPDwgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0OjpTZXRVcCgpICIKKyAgICAgICAg
ICAgICAgICAgIDw8ICJjYWxsZWQgdW5leHBlY3RlZGx5LiI7CisgIH0KKworICB2aXJ0dWFsIHZv
aWQgVGVhckRvd24oKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiQ3h4RXhjZXB0aW9uSW5Db25z
dHJ1Y3RvclRlc3Q6OlRlYXJEb3duKCkgIgorICAgICAgICAgICAgICAgICAgPDwgImNhbGxlZCB1
bmV4cGVjdGVkbHkuIjsKKyAgfQorfTsKKworVEVTVF9GKEN4eEV4Y2VwdGlvbkluQ29uc3RydWN0
b3JUZXN0LCBUaHJvd3NFeGNlcHRpb25JbkNvbnN0cnVjdG9yKSB7CisgIEFERF9GQUlMVVJFKCkg
PDwgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0IHRlc3QgYm9keSAiCisgICAgICAgICAg
ICAgICAgPDwgImNhbGxlZCB1bmV4cGVjdGVkbHkuIjsKK30KKworLy8gRXhjZXB0aW9ucyBpbiBk
ZXN0cnVjdG9ycyBhcmUgbm90IHN1cHBvcnRlZCBpbiBDKysxMS4KKyNpZiAhZGVmaW5lZChfX0dY
WF9FWFBFUklNRU5UQUxfQ1hYMFhfXykgJiYgIF9fY3BsdXNwbHVzIDwgMjAxMTAzTAorY2xhc3Mg
Q3h4RXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6Cisg
IHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAg
ICAgICAgICJDeHhFeGNlcHRpb25JbkRlc3RydWN0b3JUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkg
IgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworIHByb3RlY3Rl
ZDoKKyAgfkN4eEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3QoKSB7CisgICAgR1RFU1RfU1VQUFJF
U1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXygKKyAgICAgICAgdGhyb3cgc3RkOjpy
dW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIikpOworICB9Cit9OworCitURVNU
X0YoQ3h4RXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5EZXN0cnVj
dG9yKSB7fQorI2VuZGlmICAvLyBDKysxMSBtb2RlCisKK2NsYXNzIEN4eEV4Y2VwdGlvbkluU2V0
VXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBDeHhFeGNlcHRpb25J
blNldFVwVGVzdENhc2VUZXN0KCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4
RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCBjb25zdHJ1Y3RvciAiCisgICAgICAgICAgICJj
YWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENh
c2UoKSB7CisgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0
aW9uIik7CisgIH0KKworICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHBy
aW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6
VGVhckRvd25UZXN0Q2FzZSgpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIp
OworICB9CisKKyBwcm90ZWN0ZWQ6CisgIH5DeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0
KCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRl
c3RDYXNlVGVzdCBkZXN0cnVjdG9yICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5c
biIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIHByaW50ZigiJXMiLAor
ICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6U2V0VXAoKSAiCisg
ICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlv
bkluU2V0VXBUZXN0Q2FzZVRlc3Q6OlRlYXJEb3duKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFz
IGV4cGVjdGVkLlxuIik7CisgIH0KK307CisKK1RFU1RfRihDeHhFeGNlcHRpb25JblNldFVwVGVz
dENhc2VUZXN0LCBUaHJvd3NFeGNlcHRpb25JblNldFVwVGVzdENhc2UpIHsKKyAgcHJpbnRmKCIl
cyIsCisgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCB0ZXN0IGJvZHkg
IgorICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworfQorCitjbGFzcyBDeHhFeGNl
cHRpb25JblRlYXJEb3duVGVzdENhc2VUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAg
c3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVf
ZXJyb3IoIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iKTsKKyAgfQorfTsKKworVEVTVF9GKEN4eEV4
Y2VwdGlvbkluVGVhckRvd25UZXN0Q2FzZVRlc3QsIFRocm93c0V4Y2VwdGlvbkluVGVhckRvd25U
ZXN0Q2FzZSkge30KKworY2xhc3MgQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QgOiBwdWJsaWMgVGVz
dCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHBy
aW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Q6OlRlYXJEb3du
VGVzdENhc2UoKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQor
CisgcHJvdGVjdGVkOgorICB+Q3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QoKSB7CisgICAgcHJpbnRm
KCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblNldFVwVGVzdCBkZXN0cnVjdG9yICIK
KyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyAgdmlydHVhbCB2
b2lkIFNldFVwKCkgeyB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBleGNl
cHRpb24iKTsgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBwcmludGYoIiVz
IiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0OjpUZWFyRG93bigpICIKKyAg
ICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9Cit9OworCitURVNUX0YoQ3h4
RXhjZXB0aW9uSW5TZXRVcFRlc3QsIFRocm93c0V4Y2VwdGlvbkluU2V0VXApIHsKKyAgQUREX0ZB
SUxVUkUoKSA8PCAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QgdGVzdCBib2R5ICIKKyAgICAgICAg
ICAgICAgICA8PCAiY2FsbGVkIHVuZXhwZWN0ZWRseS4iOworfQorCitjbGFzcyBDeHhFeGNlcHRp
b25JblRlYXJEb3duVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lk
IFRlYXJEb3duVGVzdENhc2UoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhF
eGNlcHRpb25JblRlYXJEb3duVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIKKyAgICAgICAgICAg
ImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIH5DeHhFeGNl
cHRpb25JblRlYXJEb3duVGVzdCgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4
eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0IGRlc3RydWN0b3IgIgorICAgICAgICAgICAiY2FsbGVk
IGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Cisg
ICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIik7Cisg
IH0KK307CisKK1RFU1RfRihDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCwgVGhyb3dzRXhjZXB0
aW9uSW5UZWFyRG93bikge30KKworY2xhc3MgQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QgOiBw
dWJsaWMgVGVzdCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkg
eworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRl
c3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQu
XG4iKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICB+Q3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3Qo
KSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblRlc3RCb2R5
VGVzdCBkZXN0cnVjdG9yICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOwor
ICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIHByaW50ZigiJXMiLAorICAg
ICAgICAgICAiQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duKCkgIgorICAgICAg
ICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KK307CisKK1RFU1RfRihDeHhFeGNl
cHRpb25JblRlc3RCb2R5VGVzdCwgVGhyb3dzU3RkQ3h4RXhjZXB0aW9uKSB7CisgIHRocm93IHN0
ZDo6cnVudGltZV9lcnJvcigiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIpOworfQorCitURVNUKEN4
eEV4Y2VwdGlvblRlc3QsIFRocm93c05vblN0ZEN4eEV4Y2VwdGlvbikgeworICB0aHJvdyAiQy1z
dHJpbmciOworfQorCisvLyBUaGlzIHRlcm1pbmF0ZSBoYW5kbGVyIGFib3J0cyB0aGUgcHJvZ3Jh
bSB1c2luZyBleGl0KCkgcmF0aGVyIHRoYW4gYWJvcnQoKS4KKy8vIFRoaXMgYXZvaWRzIHNob3dp
bmcgcG9wLXVwcyBvbiBXaW5kb3dzIHN5c3RlbXMgYW5kIGNvcmUgZHVtcHMgb24gVW5peC1saWtl
CisvLyBvbmVzLgordm9pZCBUZXJtaW5hdGVIYW5kbGVyKCkgeworICBmcHJpbnRmKHN0ZGVyciwg
IiVzXG4iLCAiVW5oYW5kbGVkIEMrKyBleGNlcHRpb24gdGVybWluYXRpbmcgdGhlIHByb2dyYW0u
Iik7CisgIGZmbHVzaChOVUxMKTsKKyAgZXhpdCgzKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9I
QVNfRVhDRVBUSU9OUworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyNpZiBH
VEVTVF9IQVNfRVhDRVBUSU9OUworICBzdGQ6OnNldF90ZXJtaW5hdGUoJlRlcm1pbmF0ZUhhbmRs
ZXIpOworI2VuZGlmCisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAg
cmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjCmluZGV4IDU4ZDM3N2M5YjJhZjBiZmU4MTk1Y2Ey
YzBhOTAyMTM5ZDkxMTA2NDIuLmY2MWViYjg5Yjg0ZThlMDNlNWVmZGQ0MTMyNDA2MTEzNzZhZmU2
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfY29sb3Jf
dGVzdF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9jb2xvcl90
ZXN0Xy5jYwpAQCAtMzUsNyArMzUsNyBAQAogCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogLy8gSW5kaWNh
dGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3Qncwog
Ly8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlu
bC5oIGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vu
dl92YXJfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zh
cl90ZXN0LnB5CmluZGV4IGJjYzBiZmQ1NTMyOTcyNjgwNzYxNTc3MzZjODNlNGE4NGNhZTA1NmMu
LjQyNDA3NWNmYTM3NDc2Y2NkOGM3ZDRmZjAyNzJiMjdkODg3ODcxM2UgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0LnB5CisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0LnB5CkBAIC00Nyw4
ICs0Nyw4IEBACiAKIGRlZiBBc3NlcnRFcShleHBlY3RlZCwgYWN0dWFsKToKICAgaWYgZXhwZWN0
ZWQgIT0gYWN0dWFsOgotICAgIHByaW50ICdFeHBlY3RlZDogJXMnICUgKGV4cGVjdGVkLCkKLSAg
ICBwcmludCAnICBBY3R1YWw6ICVzJyAlIChhY3R1YWwsKQorICAgIHByaW50KCdFeHBlY3RlZDog
JXMnICUgKGV4cGVjdGVkLCkpCisgICAgcHJpbnQoJyAgQWN0dWFsOiAlcycgJSAoYWN0dWFsLCkp
CiAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKIAogCkBAIC04NywxOSArODcsMzEgQEAgZGVmIHRl
c3RFbnZWYXJBZmZlY3RzRmxhZyhzZWxmKToKICAgICBUZXN0RmxhZygnYnJlYWtfb25fZmFpbHVy
ZScsICcxJywgJzAnKQogICAgIFRlc3RGbGFnKCdjb2xvcicsICd5ZXMnLCAnYXV0bycpCiAgICAg
VGVzdEZsYWcoJ2ZpbHRlcicsICdGb29UZXN0LkJhcicsICcqJykKKyAgICBTZXRFbnZWYXIoJ1hN
TF9PVVRQVVRfRklMRScsIE5vbmUpICMgRm9yICdvdXRwdXQnIHRlc3QKICAgICBUZXN0RmxhZygn
b3V0cHV0JywgJ3htbDp0bXAvZm9vLnhtbCcsICcnKQogICAgIFRlc3RGbGFnKCdwcmludF90aW1l
JywgJzAnLCAnMScpCiAgICAgVGVzdEZsYWcoJ3JlcGVhdCcsICc5OTknLCAnMScpCiAgICAgVGVz
dEZsYWcoJ3Rocm93X29uX2ZhaWx1cmUnLCAnMScsICcwJykKICAgICBUZXN0RmxhZygnZGVhdGhf
dGVzdF9zdHlsZScsICd0aHJlYWRzYWZlJywgJ2Zhc3QnKQotCi0gICAgaWYgSVNfV0lORE9XUzoK
LSAgICAgIFRlc3RGbGFnKCdjYXRjaF9leGNlcHRpb25zJywgJzEnLCAnMCcpCisgICAgVGVzdEZs
YWcoJ2NhdGNoX2V4Y2VwdGlvbnMnLCAnMCcsICcxJykKIAogICAgIGlmIElTX0xJTlVYOgogICAg
ICAgVGVzdEZsYWcoJ2RlYXRoX3Rlc3RfdXNlX2ZvcmsnLCAnMScsICcwJykKICAgICAgIFRlc3RG
bGFnKCdzdGFja190cmFjZV9kZXB0aCcsICcwJywgJzEwMCcpCiAKKyAgZGVmIHRlc3RYbWxPdXRw
dXRGaWxlKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgJFhNTF9PVVRQVVRfRklMRSBhZmZlY3Rz
IHRoZSBvdXRwdXQgZmxhZy4iIiIKKworICAgIFNldEVudlZhcignR1RFU1RfT1VUUFVUJywgTm9u
ZSkKKyAgICBTZXRFbnZWYXIoJ1hNTF9PVVRQVVRfRklMRScsICd0bXAvYmFyLnhtbCcpCisgICAg
QXNzZXJ0RXEoJ3htbDp0bXAvYmFyLnhtbCcsIEdldEZsYWcoJ291dHB1dCcpKQorCisgIGRlZiB0
ZXN0WG1sT3V0cHV0RmlsZU92ZXJyaWRlKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgJFhNTF9P
VVRQVVRfRklMRSBpcyBvdmVycmlkZGVuIGJ5ICRHVEVTVF9PVVRQVVQiIiIKKworICAgIFNldEVu
dlZhcignR1RFU1RfT1VUUFVUJywgJ3htbDp0bXAvZm9vLnhtbCcpCisgICAgU2V0RW52VmFyKCdY
TUxfT1VUUFVUX0ZJTEUnLCAndG1wL2Jhci54bWwnKQorICAgIEFzc2VydEVxKCd4bWw6dG1wL2Zv
by54bWwnLCBHZXRGbGFnKCdvdXRwdXQnKSkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
ICAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0Xy5jYwppbmRleCBmN2M3OGZjZjMwNTMxMmE2NmMy
NjViMTgxMGE2OTEwNzdkYjc3MWY3Li41MzlhZmM5NjgzN2UzZTczNmQwODFiYjIwYTQzNjRlNWRl
ODU2Zjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vu
dl92YXJfdGVzdF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9l
bnZfdmFyX3Rlc3RfLmNjCkBAIC0zMiw3ICszMiw3IEBACiAvLyBBIGhlbHBlciBwcm9ncmFtIGZv
ciB0ZXN0aW5nIHRoYXQgR29vZ2xlIFRlc3QgcGFyc2VzIHRoZSBlbnZpcm9ubWVudAogLy8gdmFy
aWFibGVzIGNvcnJlY3RseS4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKIAogI2luY2x1ZGUgPGlvc3RyZWFtPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudmlyb25tZW50X3Rlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudmlyb25tZW50X3Rlc3QuY2MKaW5kZXgg
YzkzOTI2MTRkNzRkN2ZjMjMyZTg2YjJjM2Q2Y2RiMWIxZTJiNjEzMS4uM2NmZjE5ZTcwZWRjY2Ew
ZDI2MjE0NWVkZTU4MTBhZTlhMDc0MzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVzdC5jYwpAQCAtMzMsNyArMzMsMTEg
QEAKIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisjZGVmaW5lIEdURVNU
X0lNUExFTUVOVEFUSU9OXyAxICAvLyBSZXF1aXJlZCBmb3IgdGhlIG5leHQgI2luY2x1ZGUuCisj
aW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgorI3VuZGVmIEdURVNUX0lNUExFTUVO
VEFUSU9OXwogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiBHVEVTVF9ERUNMQVJFX3N0cmluZ18oZmls
dGVyKTsKQEAgLTkyLDYgKzk2LDcgQEAgY2xhc3MgTXlFbnZpcm9ubWVudCA6IHB1YmxpYyB0ZXN0
aW5nOjpFbnZpcm9ubWVudCB7CiAKICAgLy8gV2FzIFRlYXJEb3duKCkgcnVuPwogICBib29sIHRl
YXJfZG93bl93YXNfcnVuKCkgY29uc3QgeyByZXR1cm4gdGVhcl9kb3duX3dhc19ydW5fOyB9CisK
ICBwcml2YXRlOgogICBGYWlsdXJlVHlwZSBmYWlsdXJlX2luX3NldF91cF87CiAgIGJvb2wgc2V0
X3VwX3dhc19ydW5fOwpAQCAtMTExLDcgKzExNiw3IEBAIFRFU1QoRm9vVGVzdCwgQmFyKSB7CiB2
b2lkIENoZWNrKGJvb2wgY29uZGl0aW9uLCBjb25zdCBjaGFyKiBtc2cpIHsKICAgaWYgKCFjb25k
aXRpb24pIHsKICAgICBwcmludGYoIkZBSUxFRDogJXNcbiIsIG1zZyk7Ci0gICAgYWJvcnQoKTsK
KyAgICB0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OkFib3J0KCk7CiAgIH0KIH0KIApAQCAtMTIz
LDYgKzEyOCw3IEBAIGludCBSdW5BbGxUZXN0cyhNeUVudmlyb25tZW50KiBlbnYsIEZhaWx1cmVU
eXBlIGZhaWx1cmUpIHsKICAgZW52LT5SZXNldCgpOwogICBlbnYtPnNldF9mYWlsdXJlX2luX3Nl
dF91cChmYWlsdXJlKTsKICAgdGVzdF93YXNfcnVuID0gZmFsc2U7CisgIHRlc3Rpbmc6OmludGVy
bmFsOjpHZXRVbml0VGVzdEltcGwoKS0+Q2xlYXJBZEhvY1Rlc3RSZXN1bHQoKTsKICAgcmV0dXJu
IFJVTl9BTExfVEVTVFMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X2ZpbHRlcl91bml0dGVzdC5weQppbmRleCAwZDFhNzcwMDU4Y2NiOTAxMTU0
NjgwOTI0Y2JkM2M2NGQ4YzhkMTc5Li5lYzBiMTUxYjExYmRiNWY3OTk5OTYyMjFiMTM4ZGU3NGI3
NjliMTMxIDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Zp
bHRlcl91bml0dGVzdC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X2ZpbHRlcl91bml0dGVzdC5weQpAQCAtNDQsNyArNDQsMTAgQEAKIAogaW1wb3J0IG9zCiBpbXBv
cnQgcmUKLWltcG9ydCBzZXRzCit0cnk6CisgIGZyb20gc2V0cyBpbXBvcnQgU2V0IGFzIHNldCAg
IyBGb3IgUHl0aG9uIDIuMyBjb21wYXRpYmlsaXR5CitleGNlcHQgSW1wb3J0RXJyb3I6CisgIHBh
c3MKIGltcG9ydCBzeXMKIAogaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKQEAgLTU4LDcgKzYxLDcg
QEAKICMgZXhjZXB0aW9uIGlzIHRocm93biBpZiB0aGUgaW5wdXQgaXMgYW55dGhpbmcgb3RoZXIg
dGhhbiAnVHJ1ZScgbm9yICdGYWxzZScuCiBvcy5lbnZpcm9uWydFTVBUWV9WQVInXSA9ICcnCiBj
aGlsZCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKLSAgICBbc3lzLmV4ZWN1dGFibGUs
ICctYycsICdpbXBvcnQgb3M7IHByaW50IFwnRU1QVFlfVkFSXCcgaW4gb3MuZW52aXJvbiddKQor
ICAgIFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgJ2ltcG9ydCBvczsgcHJpbnQoXCdFTVBUWV9WQVJc
JyBpbiBvcy5lbnZpcm9uKSddKQogQ0FOX1BBU1NfRU1QVFlfRU5WID0gZXZhbChjaGlsZC5vdXRw
dXQpCiAKIApAQCAtNzEsNyArNzQsNyBAQAogb3MuZW52aXJvblsnVU5TRVRfVkFSJ10gPSAnWCcK
IGRlbCBvcy5lbnZpcm9uWydVTlNFVF9WQVInXQogY2hpbGQgPSBndGVzdF90ZXN0X3V0aWxzLlN1
YnByb2Nlc3MoCi0gICAgW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAnaW1wb3J0IG9zOyBwcmludCBc
J1VOU0VUX1ZBUlwnIG5vdCBpbiBvcy5lbnZpcm9uJ10pCisgICAgW3N5cy5leGVjdXRhYmxlLCAn
LWMnLCAnaW1wb3J0IG9zOyBwcmludChcJ1VOU0VUX1ZBUlwnIG5vdCBpbiBvcy5lbnZpcm9uKSdd
KQogQ0FOX1VOU0VUX0VOViA9IGV2YWwoY2hpbGQub3V0cHV0KQogCiAKQEAgLTI0MywxNCArMjQ2
LDE0IEBAIGRlZiBBc3NlcnRQYXJ0aXRpb25Jc1ZhbGlkKHNlbGYsIHNldF92YXIsIGxpc3Rfb2Zf
c2V0cyk6CiAgICAgZm9yIHNsaWNlX3ZhciBpbiBsaXN0X29mX3NldHM6CiAgICAgICBmdWxsX3Bh
cnRpdGlvbi5leHRlbmQoc2xpY2VfdmFyKQogICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNldF92
YXIpLCBsZW4oZnVsbF9wYXJ0aXRpb24pKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0cy5TZXQo
c2V0X3ZhciksIHNldHMuU2V0KGZ1bGxfcGFydGl0aW9uKSkKKyAgICBzZWxmLmFzc2VydEVxdWFs
KHNldChzZXRfdmFyKSwgc2V0KGZ1bGxfcGFydGl0aW9uKSkKIAogICBkZWYgQWRqdXN0Rm9yUGFy
YW1ldGVyaXplZFRlc3RzKHNlbGYsIHRlc3RzX3RvX3J1bik6CiAgICAgIiIiQWRqdXN0IHRlc3Rz
X3RvX3J1biBpbiBjYXNlIHZhbHVlIHBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGRpc2FibGVkLiIi
IgogCiAgICAgZ2xvYmFsIHBhcmFtX3Rlc3RzX3ByZXNlbnQKICAgICBpZiBub3QgcGFyYW1fdGVz
dHNfcHJlc2VudDoKLSAgICAgIHJldHVybiBsaXN0KHNldHMuU2V0KHRlc3RzX3RvX3J1bikgLSBz
ZXRzLlNldChQQVJBTV9URVNUUykpCisgICAgICByZXR1cm4gbGlzdChzZXQodGVzdHNfdG9fcnVu
KSAtIHNldChQQVJBTV9URVNUUykpCiAgICAgZWxzZToKICAgICAgIHJldHVybiB0ZXN0c190b19y
dW4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9maWx0
ZXJfdW5pdHRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9maWx0
ZXJfdW5pdHRlc3RfLmNjCmluZGV4IDMyNTUwNGZlOTRhZmMxNzdjNDZjYmMxMzVmZWM2NzVjNTU0
ZDJlMGQuLjc3ZGVmZmMzOGY3ZGYxZGRiZTY1YTUxZWI5YWE1ZjhiNDBlNTJhNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0Xy5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2ZpbHRlcl91bml0dGVz
dF8uY2MKQEAgLTM4LDcgKzM4LDcgQEAKIC8vIFRoZSBwcm9ncmFtIHdpbGwgYmUgaW52b2tlZCBm
cm9tIGEgUHl0aG9uIHVuaXQgdGVzdC4gIERvbid0IHJ1biBpdAogLy8gZGlyZWN0bHkuCiAKLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIG5hbWVz
cGFjZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
aGVscF90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rl
c3QucHkKaW5kZXggM2NiNGM0OGUwYjQ2MjhkOWFhN2M2ZjMyMDdhYjdlZTEwY2QyMmJhMy4uMDkz
YzgzOGQ5ZTQ3MmZiZGUyZTEyNWYyMGQ3M2MxN2VhZWU5NTBmNSAxMDA3NTUKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3QucHkKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3QucHkKQEAgLTMyLDcgKzMyLDcgQEAK
ICIiIlRlc3RzIHRoZSAtLWhlbHAgZmxhZyBvZiBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3Jr
LgogCiBTWU5PUFNJUwotICAgICAgIGd0ZXN0X2hlbHBfdGVzdC5weSAtLWd0ZXN0X2J1aWxkX2Rp
cj1CVUlMRC9ESVIKKyAgICAgICBndGVzdF9oZWxwX3Rlc3QucHkgLS1idWlsZF9kaXI9QlVJTEQv
RElSCiAgICAgICAgICAjIHdoZXJlIEJVSUxEL0RJUiBjb250YWlucyB0aGUgYnVpbHQgZ3Rlc3Rf
aGVscF90ZXN0XyBmaWxlLgogICAgICAgIGd0ZXN0X2hlbHBfdGVzdC5weQogIiIiCkBAIC00NCwx
MiArNDQsMTMgQEAKIGltcG9ydCBndGVzdF90ZXN0X3V0aWxzCiAKIAorSVNfTElOVVggPSBvcy5u
YW1lID09ICdwb3NpeCcgYW5kIG9zLnVuYW1lKClbMF0gPT0gJ0xpbnV4JwogSVNfV0lORE9XUyA9
IG9zLm5hbWUgPT0gJ250JwogCiBQUk9HUkFNX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRl
c3RFeGVjdXRhYmxlUGF0aCgnZ3Rlc3RfaGVscF90ZXN0XycpCiBGTEFHX1BSRUZJWCA9ICctLWd0
ZXN0XycKLUNBVENIX0VYQ0VQVElPTlNfRkxBRyA9IEZMQUdfUFJFRklYICsgJ2NhdGNoX2V4Y2Vw
dGlvbnMnCiBERUFUSF9URVNUX1NUWUxFX0ZMQUcgPSBGTEFHX1BSRUZJWCArICdkZWF0aF90ZXN0
X3N0eWxlJworU1RSRUFNX1JFU1VMVF9UT19GTEFHID0gRkxBR19QUkVGSVggKyAnc3RyZWFtX3Jl
c3VsdF90bycKIFVOS05PV05fRkxBRyA9IEZMQUdfUFJFRklYICsgJ3Vua25vd25fZmxhZ19mb3Jf
dGVzdGluZycKIExJU1RfVEVTVFNfRkxBRyA9IEZMQUdfUFJFRklYICsgJ2xpc3RfdGVzdHMnCiBJ
TkNPUlJFQ1RfRkxBR19WQVJJQU5UUyA9IFtyZS5zdWIoJ14tLScsICctJywgTElTVF9URVNUU19G
TEFHKSwKQEAgLTcyLDcgKzczLDggQEAKICAgICBGTEFHX1BSRUZJWCArIHIncHJpbnRfdGltZS4q
JyArCiAgICAgRkxBR19QUkVGSVggKyByJ291dHB1dD0uKicgKwogICAgIEZMQUdfUFJFRklYICsg
cidicmVha19vbl9mYWlsdXJlLionICsKLSAgICBGTEFHX1BSRUZJWCArIHIndGhyb3dfb25fZmFp
bHVyZS4qJywKKyAgICBGTEFHX1BSRUZJWCArIHIndGhyb3dfb25fZmFpbHVyZS4qJyArCisgICAg
RkxBR19QUkVGSVggKyByJ2NhdGNoX2V4Y2VwdGlvbnM9MC4qJywKICAgICByZS5ET1RBTEwpCiAK
IApAQCAtMTA5LDEwICsxMTEsMTEgQEAgZGVmIFRlc3RIZWxwRmxhZyhzZWxmLCBmbGFnKToKICAg
ICBleGl0X2NvZGUsIG91dHB1dCA9IFJ1bldpdGhGbGFnKGZsYWcpCiAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoMCwgZXhpdF9jb2RlKQogICAgIHNlbGYuYXNzZXJ0XyhIRUxQX1JFR0VYLnNlYXJjaChv
dXRwdXQpLCBvdXRwdXQpCi0gICAgaWYgSVNfV0lORE9XUzoKLSAgICAgIHNlbGYuYXNzZXJ0XyhD
QVRDSF9FWENFUFRJT05TX0ZMQUcgaW4gb3V0cHV0LCBvdXRwdXQpCisKKyAgICBpZiBJU19MSU5V
WDoKKyAgICAgIHNlbGYuYXNzZXJ0XyhTVFJFQU1fUkVTVUxUX1RPX0ZMQUcgaW4gb3V0cHV0LCBv
dXRwdXQpCiAgICAgZWxzZToKLSAgICAgIHNlbGYuYXNzZXJ0XyhDQVRDSF9FWENFUFRJT05TX0ZM
QUcgbm90IGluIG91dHB1dCwgb3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKFNUUkVBTV9SRVNV
TFRfVE9fRkxBRyBub3QgaW4gb3V0cHV0LCBvdXRwdXQpCiAKICAgICBpZiBTVVBQT1JUU19ERUFU
SF9URVNUUyBhbmQgbm90IElTX1dJTkRPV1M6CiAgICAgICBzZWxmLmFzc2VydF8oREVBVEhfVEVT
VF9TVFlMRV9GTEFHIGluIG91dHB1dCwgb3V0cHV0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3RfLmNjCmluZGV4IGFhZDBkNzJkNzY3NTM1ZTFiN2E3
MjIyNDc3NTQzMDEwMzNlNzEwNmYuLjMxZjc4YzI0NDFiZTY2ODgxZjhlZGY1OWJmN2FjNDlkNDdi
MTU5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVs
cF90ZXN0Xy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2hlbHBf
dGVzdF8uY2MKQEAgLTMyLDcgKzMyLDcgQEAKIC8vIFRoaXMgcHJvZ3JhbSBpcyBtZWFudCB0byBi
ZSBydW4gYnkgZ3Rlc3RfaGVscF90ZXN0LnB5LiAgRG8gbm90IHJ1bgogLy8gaXQgZGlyZWN0bHku
CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAK
IC8vIFdoZW4gYSBoZWxwIGZsYWcgaXMgc3BlY2lmaWVkLCB0aGlzIHByb2dyYW0gc2hvdWxkIHNr
aXAgdGhlIHRlc3RzCiAvLyBhbmQgZXhpdCB3aXRoIDA7IG90aGVyd2lzZSB0aGUgZm9sbG93aW5n
IHRlc3Qgd2lsbCBiZSBleGVjdXRlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdC5weQppbmRleCBjZThjM2VmMDVm
NjYwMGU4NzIxNGE2ZDQwMTYyOGVkOTIzYTE1MmRhLi5mMmQyZmQxYjFjNWQ1ZTAxYzE3NDY3NDBm
ZTk2ODQ3MDM1YWI0ZGFiIDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3QucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0LnB5CkBAIC00MCw2ICs0MCw3IEBACiBf
X2F1dGhvcl9fID0gJ3BoYW5uYUBnb29nbGUuY29tIChQYXRyaWNrIEhhbm5hKScKIAogaW1wb3J0
IGd0ZXN0X3Rlc3RfdXRpbHMKK2ltcG9ydCByZQogCiAKICMgQ29uc3RhbnRzLgpAQCAtNTIsMzgg
KzUzLDYzIEBACiAKICMgVGhlIGV4cGVjdGVkIG91dHB1dCB3aGVuIHJ1bm5pbmcgZ3Rlc3RfbGlz
dF90ZXN0c191bml0dGVzdF8gd2l0aAogIyAtLWd0ZXN0X2xpc3RfdGVzdHMKLUVYUEVDVEVEX09V
VFBVVF9OT19GSUxURVIgPSAiIiJGb29EZWF0aFRlc3QuCitFWFBFQ1RFRF9PVVRQVVRfTk9fRklM
VEVSX1JFID0gcmUuY29tcGlsZShyIiIiRm9vRGVhdGhUZXN0XC4KICAgVGVzdDEKLUZvby4KK0Zv
b1wuCiAgIEJhcjEKICAgQmFyMgogICBESVNBQkxFRF9CYXIzCi1BYmMuCitBYmNcLgogICBYeXoK
ICAgRGVmCi1Gb29CYXIuCitGb29CYXJcLgogICBCYXoKLUZvb1Rlc3QuCitGb29UZXN0XC4KICAg
VGVzdDEKICAgRElTQUJMRURfVGVzdDIKICAgVGVzdDMKLSIiIgorVHlwZWRUZXN0LzBcLiAgIyBU
eXBlUGFyYW0gPSAoVmVyeUxvezI0NX18Y2xhc3MgVmVyeUxvezIzOX0pXC5cLlwuCisgIFRlc3RB
CisgIFRlc3RCCitUeXBlZFRlc3QvMVwuICAjIFR5cGVQYXJhbSA9IGludFxzKlwqKCBfX3B0cjY0
KT8KKyAgVGVzdEEKKyAgVGVzdEIKK1R5cGVkVGVzdC8yXC4gICMgVHlwZVBhcmFtID0gLipNeUFy
cmF5PGJvb2wsXHMqNDI+CisgIFRlc3RBCisgIFRlc3RCCitNeS9UeXBlUGFyYW1UZXN0LzBcLiAg
IyBUeXBlUGFyYW0gPSAoVmVyeUxvezI0NX18Y2xhc3MgVmVyeUxvezIzOX0pXC5cLlwuCisgIFRl
c3RBCisgIFRlc3RCCitNeS9UeXBlUGFyYW1UZXN0LzFcLiAgIyBUeXBlUGFyYW0gPSBpbnRccypc
KiggX19wdHI2NCk/CisgIFRlc3RBCisgIFRlc3RCCitNeS9UeXBlUGFyYW1UZXN0LzJcLiAgIyBU
eXBlUGFyYW0gPSAuKk15QXJyYXk8Ym9vbCxccyo0Mj4KKyAgVGVzdEEKKyAgVGVzdEIKK015SW5z
dGFudGlhdGlvbi9WYWx1ZVBhcmFtVGVzdFwuCisgIFRlc3RBLzAgICMgR2V0UGFyYW1cKFwpID0g
b25lIGxpbmUKKyAgVGVzdEEvMSAgIyBHZXRQYXJhbVwoXCkgPSB0d29cXG5saW5lcworICBUZXN0
QS8yICAjIEdldFBhcmFtXChcKSA9IGEgdmVyeVxcbmxvezI0MX1cLlwuXC4KKyAgVGVzdEIvMCAg
IyBHZXRQYXJhbVwoXCkgPSBvbmUgbGluZQorICBUZXN0Qi8xICAjIEdldFBhcmFtXChcKSA9IHR3
b1xcbmxpbmVzCisgIFRlc3RCLzIgICMgR2V0UGFyYW1cKFwpID0gYSB2ZXJ5XFxubG97MjQxfVwu
XC5cLgorIiIiKQogCiAjIFRoZSBleHBlY3RlZCBvdXRwdXQgd2hlbiBydW5uaW5nIGd0ZXN0X2xp
c3RfdGVzdHNfdW5pdHRlc3RfIHdpdGgKICMgLS1ndGVzdF9saXN0X3Rlc3RzIGFuZCAtLWd0ZXN0
X2ZpbHRlcj1Gb28qLgotRVhQRUNURURfT1VUUFVUX0ZJTFRFUl9GT08gPSAiIiJGb29EZWF0aFRl
c3QuCitFWFBFQ1RFRF9PVVRQVVRfRklMVEVSX0ZPT19SRSA9IHJlLmNvbXBpbGUociIiIkZvb0Rl
YXRoVGVzdFwuCiAgIFRlc3QxCi1Gb28uCitGb29cLgogICBCYXIxCiAgIEJhcjIKICAgRElTQUJM
RURfQmFyMwotRm9vQmFyLgorRm9vQmFyXC4KICAgQmF6Ci1Gb29UZXN0LgorRm9vVGVzdFwuCiAg
IFRlc3QxCiAgIERJU0FCTEVEX1Rlc3QyCiAgIFRlc3QzCi0iIiIKKyIiIikKIAogIyBVdGlsaXRp
ZXMuCiAKQEAgLTEwMCwxOSArMTI2LDE4IEBAIGRlZiBSdW4oYXJncyk6CiBjbGFzcyBHVGVzdExp
c3RUZXN0c1VuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgogICAiIiJUZXN0cyB1
c2luZyB0aGUgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcgdG8gbGlzdCBhbGwgdGVzdHMuIiIiCiAK
LSAgZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBmbGFnX3ZhbHVlLCBleHBlY3RlZF9vdXRwdXQsIG90
aGVyX2ZsYWcpOgorICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGZsYWdfdmFsdWUsIGV4cGVjdGVk
X291dHB1dF9yZSwgb3RoZXJfZmxhZyk6CiAgICAgIiIiUnVucyBndGVzdF9saXN0X3Rlc3RzX3Vu
aXR0ZXN0XyBhbmQgdmVyaWZpZXMgdGhhdCBpdCBwcmludHMKICAgICB0aGUgY29ycmVjdCB0ZXN0
cy4KIAogICAgIEFyZ3M6Ci0gICAgICBmbGFnX3ZhbHVlOiAgICAgICB2YWx1ZSBvZiB0aGUgLS1n
dGVzdF9saXN0X3Rlc3RzIGZsYWc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRo
ZSBmbGFnIHNob3VsZCBub3QgYmUgcHJlc2VudC4KLQotICAgICAgZXhwZWN0ZWRfb3V0cHV0OiAg
dGhlIGV4cGVjdGVkIG91dHB1dCBhZnRlciBydW5uaW5nIGNvbW1hbmQ7Ci0KLSAgICAgIG90aGVy
X2ZsYWc6ICAgICAgIGEgZGlmZmVyZW50IGZsYWcgdG8gYmUgcGFzc2VkIHRvIGNvbW1hbmQKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGFsb25nIHdpdGggZ3Rlc3RfbGlzdF90ZXN0czsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50
LgorICAgICAgZmxhZ192YWx1ZTogICAgICAgICB2YWx1ZSBvZiB0aGUgLS1ndGVzdF9saXN0X3Rl
c3RzIGZsYWc7CisgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUgaWYgdGhlIGZsYWcgc2hv
dWxkIG5vdCBiZSBwcmVzZW50LgorICAgICAgZXhwZWN0ZWRfb3V0cHV0X3JlOiByZWd1bGFyIGV4
cHJlc3Npb24gdGhhdCBtYXRjaGVzIHRoZSBleHBlY3RlZAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBvdXRwdXQgYWZ0ZXIgcnVubmluZyBjb21tYW5kOworICAgICAgb3RoZXJfZmxhZzogICAg
ICAgICBhIGRpZmZlcmVudCBmbGFnIHRvIGJlIHBhc3NlZCB0byBjb21tYW5kCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFsb25nIHdpdGggZ3Rlc3RfbGlzdF90ZXN0czsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgTm9uZSBpZiB0aGUgZmxhZyBzaG91bGQgbm90IGJlIHByZXNlbnQuCiAg
ICAgIiIiCiAKICAgICBpZiBmbGFnX3ZhbHVlIGlzIE5vbmU6CkBAIC0xMzIsMzYgKzE1Nyw0MSBA
QCBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGZsYWdfdmFsdWUsIGV4cGVjdGVkX291dHB1dCwgb3Ro
ZXJfZmxhZyk6CiAKICAgICBvdXRwdXQgPSBSdW4oYXJncykKIAotICAgIG1zZyA9ICgnd2hlbiAl
cyBpcyAlcywgdGhlIG91dHB1dCBvZiAiJXMiIGlzICIlcyIuJyAlCi0gICAgICAgICAgIChMSVNU
X1RFU1RTX0ZMQUcsIGZsYWdfZXhwcmVzc2lvbiwgJyAnLmpvaW4oYXJncyksIG91dHB1dCkpCi0K
LSAgICBpZiBleHBlY3RlZF9vdXRwdXQgaXMgbm90IE5vbmU6Ci0gICAgICBzZWxmLmFzc2VydF8o
b3V0cHV0ID09IGV4cGVjdGVkX291dHB1dCwgbXNnKQorICAgIGlmIGV4cGVjdGVkX291dHB1dF9y
ZToKKyAgICAgIHNlbGYuYXNzZXJ0XygKKyAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmUubWF0
Y2gob3V0cHV0KSwKKyAgICAgICAgICAoJ3doZW4gJXMgaXMgJXMsIHRoZSBvdXRwdXQgb2YgIiVz
IiBpcyAiJXMiLFxuJworICAgICAgICAgICAnd2hpY2ggZG9lcyBub3QgbWF0Y2ggcmVnZXggIiVz
IicgJQorICAgICAgICAgICAoTElTVF9URVNUU19GTEFHLCBmbGFnX2V4cHJlc3Npb24sICcgJy5q
b2luKGFyZ3MpLCBvdXRwdXQsCisgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmUucGF0dGVy
bikpKQogICAgIGVsc2U6Ci0gICAgICBzZWxmLmFzc2VydF8ob3V0cHV0ICE9IEVYUEVDVEVEX09V
VFBVVF9OT19GSUxURVIsIG1zZykKKyAgICAgIHNlbGYuYXNzZXJ0XygKKyAgICAgICAgICBub3Qg
RVhQRUNURURfT1VUUFVUX05PX0ZJTFRFUl9SRS5tYXRjaChvdXRwdXQpLAorICAgICAgICAgICgn
d2hlbiAlcyBpcyAlcywgdGhlIG91dHB1dCBvZiAiJXMiIGlzICIlcyInJQorICAgICAgICAgICAo
TElTVF9URVNUU19GTEFHLCBmbGFnX2V4cHJlc3Npb24sICcgJy5qb2luKGFyZ3MpLCBvdXRwdXQp
KSkKIAogICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcihzZWxmKToKICAgICAiIiJUZXN0cyB0aGUg
YmVoYXZpb3Igb2YgdGhlIGRlZmF1bHQgbW9kZS4iIiIKIAogICAgIHNlbGYuUnVuQW5kVmVyaWZ5
KGZsYWdfdmFsdWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXQ9
Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9Tm9uZSwKICAg
ICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPU5vbmUpCiAKICAgZGVmIHRlc3RGbGFnKHNl
bGYpOgogICAgICIiIlRlc3RzIHVzaW5nIHRoZSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4iIiIK
IAogICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdGVkX291dHB1dD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVj
dGVkX291dHB1dF9yZT1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2ZsYWc9Tm9u
ZSkKICAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAg
ICAgICAgICBleHBlY3RlZF9vdXRwdXQ9RVhQRUNURURfT1VUUFVUX05PX0ZJTFRFUiwKKyAgICAg
ICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9RVhQRUNURURfT1VUUFVUX05PX0ZJ
TFRFUl9SRSwKICAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPU5vbmUpCiAKICAgZGVm
IHRlc3RPdmVycmlkZU5vbkZpbHRlckZsYWdzKHNlbGYpOgogICAgICIiIlRlc3RzIHRoYXQgLS1n
dGVzdF9saXN0X3Rlc3RzIG92ZXJyaWRlcyB0aGUgbm9uLWZpbHRlciBmbGFncy4iIiIKIAogICAg
IHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdGVkX291dHB1dD1FWFBFQ1RFRF9PVVRQVVRfTk9fRklMVEVSLAorICAgICAgICAgICAg
ICAgICAgICAgIGV4cGVjdGVkX291dHB1dF9yZT1FWFBFQ1RFRF9PVVRQVVRfTk9fRklMVEVSX1JF
LAogICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2ZsYWc9Jy0tZ3Rlc3RfYnJlYWtfb25fZmFp
bHVyZScpCiAKICAgZGVmIHRlc3RXaXRoRmlsdGVyRmxhZ3Moc2VsZik6CkBAIC0xNjksNyArMTk5
LDcgQEAgZGVmIHRlc3RXaXRoRmlsdGVyRmxhZ3Moc2VsZik6CiAgICAgLS1ndGVzdF9maWx0ZXIg
ZmxhZy4iIiIKIAogICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFsdWU9JzEnLAotICAgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dD1FWFBFQ1RFRF9PVVRQVVRfRklMVEVSX0ZP
TywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9RVhQRUNURURfT1VU
UFVUX0ZJTFRFUl9GT09fUkUsCiAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz0nLS1n
dGVzdF9maWx0ZXI9Rm9vKicpCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8uY2MKaW5kZXggYTBlZDA4MjVi
NWQ4ODk2OTIzMDFjNWE0ZDRmMGViNzViYWJjNWJjOC4uOTA3YzE3NmJhOTU1NWQ2OGM3NGY0ZGZj
Y2I5NjdmZGM5MWU5ODJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfLmNjCkBAIC0zOCw5ICszOCw3IEBA
CiAvLyBUaGlzIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRob24gdW5pdCB0ZXN0
LgogLy8gRG9uJ3QgcnVuIGl0IGRpcmVjdGx5LgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
LQotbmFtZXNwYWNlIHsKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAvLyBTZXZlcmFsIGRp
ZmZlcmVudCB0ZXN0IGNhc2VzIGFuZCB0ZXN0cyB0aGF0IHdpbGwgYmUgbGlzdGVkLgogVEVTVChG
b28sIEJhcjEpIHsKQEAgLTc2LDcgKzc0LDgxIEBAIFRFU1RfRihGb29UZXN0LCBUZXN0Mykgewog
VEVTVChGb29EZWF0aFRlc3QsIFRlc3QxKSB7CiB9CiAKLX0gIC8vIG5hbWVzcGFjZQorLy8gQSBn
cm91cCBvZiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorCitjbGFzcyBNeVR5cGUgeworIHB1
YmxpYzoKKyAgZXhwbGljaXQgTXlUeXBlKGNvbnN0IHN0ZDo6c3RyaW5nJiBhX3ZhbHVlKSA6IHZh
bHVlXyhhX3ZhbHVlKSB7fQorCisgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIHZhbHVlXzsgfQorCisgcHJpdmF0ZToKKyAgc3RkOjpzdHJpbmcgdmFsdWVfOworfTsK
KworLy8gVGVhY2hlcyBHb29nbGUgVGVzdCBob3cgdG8gcHJpbnQgYSBNeVR5cGUuCit2b2lkIFBy
aW50VG8oY29uc3QgTXlUeXBlJiB4LCBzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCB4LnZh
bHVlKCk7Cit9CisKK2NsYXNzIFZhbHVlUGFyYW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3RX
aXRoUGFyYW08TXlUeXBlPiB7Cit9OworCitURVNUX1AoVmFsdWVQYXJhbVRlc3QsIFRlc3RBKSB7
Cit9CisKK1RFU1RfUChWYWx1ZVBhcmFtVGVzdCwgVGVzdEIpIHsKK30KKworSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoCisgICAgTXlJbnN0YW50aWF0aW9uLCBWYWx1ZVBhcmFtVGVzdCwKKyAgICB0
ZXN0aW5nOjpWYWx1ZXMoTXlUeXBlKCJvbmUgbGluZSIpLAorICAgICAgICAgICAgICAgICAgICBN
eVR5cGUoInR3b1xubGluZXMiKSwKKyAgICAgICAgICAgICAgICAgICAgTXlUeXBlKCJhIHZlcnlc
bmxvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vbmcgbGluZSIpKSk7ICAvLyBOT0xJTlQKKworLy8gQSBn
cm91cCBvZiB0eXBlZCB0ZXN0cy4KKworLy8gQSBkZWxpYmVyYXRlbHkgbG9uZyB0eXBlIG5hbWUg
Zm9yIHRlc3RpbmcgdGhlIGxpbmUtdHJ1bmNhdGluZworLy8gYmVoYXZpb3Igd2hlbiBwcmludGlu
ZyBhIHR5cGUgcGFyYW1ldGVyLgorY2xhc3MgVmVyeUxvb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vZ05h
bWUgeyAgLy8gTk9MSU5UCit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVk
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCBpbnQga1NpemU+CitjbGFzcyBNeUFycmF5IHsKK307CisKK3R5cGVkZWYgdGVzdGluZzo6VHlw
ZXM8VmVyeUxvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vZ05hbWUsICAvLyBOT0xJTlQKKyAgICAgICAg
ICAgICAgICAgICAgICAgaW50KiwgTXlBcnJheTxib29sLCA0Mj4gPiBNeVR5cGVzOworCitUWVBF
RF9URVNUX0NBU0UoVHlwZWRUZXN0LCBNeVR5cGVzKTsKKworVFlQRURfVEVTVChUeXBlZFRlc3Qs
IFRlc3RBKSB7Cit9CisKK1RZUEVEX1RFU1QoVHlwZWRUZXN0LCBUZXN0QikgeworfQorCisvLyBB
IGdyb3VwIG9mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitjbGFzcyBUeXBlUGFyYW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKwor
VFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtVGVzdCk7CisKK1RZUEVEX1RFU1RfUChUeXBlUGFy
YW1UZXN0LCBUZXN0QSkgeworfQorCitUWVBFRF9URVNUX1AoVHlwZVBhcmFtVGVzdCwgVGVzdEIp
IHsKK30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtVGVzdCwgVGVzdEEs
IFRlc3RCKTsKKworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIFR5cGVQYXJhbVRl
c3QsIE15VHlwZXMpOwogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKICAgOjp0
ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X21haW5fdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X21haW5fdW5pdHRlc3QuY2MKaW5kZXggN2EzZjBhZGZh
ZGY2ZDdlNWMxOTViMzE5NDQ3MTRkNWFjNDFiYjhlMy4uZWNkOWJiODc2ZmY3Y2U5ZThjZWEzZDMw
MjI0ZDI4OGE5YjE5ZTcwMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF9tYWluX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfbWFpbl91bml0dGVzdC5jYwpAQCAtMjksNyArMjksNyBAQAogLy8KIC8vIEF1dGhv
cjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogLy8gVGVzdHMgdGhhdCB3ZSBkb24ndCBo
YXZlIHRvIGRlZmluZSBtYWluKCkgd2hlbiB3ZSBsaW5rIHRvCiAvLyBndGVzdF9tYWluIGluc3Rl
YWQgb2YgZ3Rlc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X25jLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9uYy5jYwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNiNWRiNmQ0MTgzMDlhNDdhMjNkZmYxODAwNTNi
NzVkMzIwMTI0Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X25jLmNjCisrKyAvZGV2L251bGwK
QEAgLTEsMjM0ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8v
IG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0v
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8v
IFRoaXMgZmlsZSBpcyB0aGUgaW5wdXQgdG8gYSBuZWdhdGl2ZS1jb21waWxhdGlvbiB0ZXN0IGZv
ciBHb29nbGUKLS8vIFRlc3QuICBDb2RlIGhlcmUgaXMgTk9UIHN1cHBvc2VkIHRvIGNvbXBpbGUu
ICBJdHMgcHVycG9zZSBpcyB0bwotLy8gdmVyaWZ5IHRoYXQgY2VydGFpbiBpbmNvcnJlY3QgdXNh
Z2VzIG9mIHRoZSBHb29nbGUgVGVzdCBBUEkgYXJlCi0vLyBpbmRlZWQgcmVqZWN0ZWQgYnkgdGhl
IGNvbXBpbGVyLgotLy8KLS8vIFdlIHN0aWxsIG5lZWQgdG8gd3JpdGUgdGhlIG5lZ2F0aXZlLWNv
bXBpbGF0aW9uIHRlc3QgaXRzZWxmLCB3aGljaAotLy8gd2lsbCBiZSB0aWdodGx5IGNvdXBsZWQg
d2l0aCB0aGUgYnVpbGQgZW52aXJvbm1lbnQuCi0vLwotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6
IGZpbmlzaCB0aGUgbmVnYXRpdmUtY29tcGlsYXRpb24gdGVzdC4KLQotI2lmZGVmIFRFU1RfQ0FO
Tk9UX0lHTk9SRV9SVU5fQUxMX1RFU1RTX1JFU1VMVAotLy8gVGVzdHMgdGhhdCB0aGUgcmVzdWx0
IG9mIFJVTl9BTExfVEVTVFMoKSBjYW5ub3QgYmUgaWdub3JlZC4KLQotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewotICB0ZXN0aW5n
OjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0gIFJVTl9BTExfVEVTVFMoKTsgIC8vIFRo
aXMgbGluZSBzaG91bGRuJ3QgY29tcGlsZS4KLX0KLQotI2VsaWYgZGVmaW5lZChURVNUX1VTRVJf
Q0FOTk9UX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfSU5MX0gpCi0vLyBUZXN0cyB0aGF0IGEgdXNl
ciBjYW5ub3QgaW5jbHVkZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbiBoaXMgY29kZS4KLQotI2lu
Y2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLQotI2VsaWYgZGVmaW5lZChURVNUX0NB
VENIRVNfREVDTEFSSU5HX1NFVFVQX0lOX1RFU1RfRklYVFVSRV9XSVRIX1RZUE8pCi0vLyBUZXN0
cyB0aGF0IHRoZSBjb21waWxlciBjYXRjaGVzIHRoZSB0eXBvIHdoZW4gYSB1c2VyIGRlY2xhcmVz
IGEKLS8vIFNldHVwKCkgbWV0aG9kIGluIGEgdGVzdCBmaXh0dXJlLgotCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KLQotY2xhc3MgTXlUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHBy
b3RlY3RlZDoKLSAgdm9pZCBTZXR1cCgpIHt9Ci19OwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfQ0FU
Q0hFU19DQUxMSU5HX1NFVFVQX0lOX1RFU1RfV0lUSF9UWVBPKQotLy8gVGVzdHMgdGhhdCB0aGUg
Y29tcGlsZXIgY2F0Y2hlcyB0aGUgdHlwbyB3aGVuIGEgdXNlciBjYWxscyBTZXR1cCgpCi0vLyBm
cm9tIGEgdGVzdCBmaXh0dXJlLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotY2xhc3Mg
TXlUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2
b2lkIFNldFVwKCkgewotICAgIHRlc3Rpbmc6OlRlc3Q6OlNldHVwKCk7ICAvLyBUcmllcyB0byBj
YWxsIFNldFVwKCkgaW4gdGhlIHBhcmVudCBjbGFzcy4KLSAgfQotfTsKLQotI2VsaWYgZGVmaW5l
ZChURVNUX0NBVENIRVNfREVDTEFSSU5HX1NFVFVQX0lOX0VOVklST05NRU5UX1dJVEhfVFlQTykK
LS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgdGhlIHR5cG8gd2hlbiBhIHVzZXIg
ZGVjbGFyZXMgYQotLy8gU2V0dXAoKSBtZXRob2QgaW4gYSBzdWJjbGFzcyBvZiBFbnZpcm9ubWVu
dC4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLWNsYXNzIE15RW52aXJvbm1lbnQgOiBw
dWJsaWMgdGVzdGluZzo6RW52aXJvbm1lbnQgewotIHB1YmxpYzoKLSAgdm9pZCBTZXR1cCgpIHt9
Ci19OwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19DQUxMSU5HX1NFVFVQX0lOX0VOVklS
T05NRU5UX1dJVEhfVFlQTykKLS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgdGhl
IHR5cG8gd2hlbiBhIHVzZXIgY2FsbHMgU2V0dXAoKQotLy8gaW4gYW4gRW52aXJvbm1lbnQuCi0K
LSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1jbGFzcyBNeUVudmlyb25tZW50IDogcHVibGlj
IHRlc3Rpbmc6OkVudmlyb25tZW50IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBTZXRV
cCgpIHsKLSAgICAvLyBUcmllcyB0byBjYWxsIFNldFVwKCkgaW4gdGhlIHBhcmVudCBjbGFzcy4K
LSAgICB0ZXN0aW5nOjpFbnZpcm9ubWVudDo6U2V0dXAoKTsKLSAgfQotfTsKLQotI2VsaWYgZGVm
aW5lZChURVNUX0NBVENIRVNfV1JPTkdfQ0FTRV9JTl9UWVBFRF9URVNUX1ApCi0vLyBUZXN0cyB0
aGF0IHRoZSBjb21waWxlciBjYXRjaGVzIHVzaW5nIHRoZSB3cm9uZyB0ZXN0IGNhc2UgbmFtZSBp
bgotLy8gVFlQRURfVEVTVF9QLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewot
fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBCYXJUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgewotfTsKLQotVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7Ci1UWVBFRF9URVNU
X1AoQmFyVGVzdCwgQSkge30gIC8vIFdyb25nIHRlc3QgY2FzZSBuYW1lLgotUkVHSVNURVJfVFlQ
RURfVEVTVF9DQVNFX1AoRm9vVGVzdCwgQSk7Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0Vf
UChNeSwgRm9vVGVzdCwgdGVzdGluZzo6VHlwZXM8aW50Pik7Ci0KLSNlbGlmIGRlZmluZWQoVEVT
VF9DQVRDSEVTX1dST05HX0NBU0VfSU5fUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1ApCi0vLyBU
ZXN0cyB0aGF0IHRoZSBjb21waWxlciBjYXRjaGVzIHVzaW5nIHRoZSB3cm9uZyB0ZXN0IGNhc2Ug
bmFtZSBpbgotLy8gUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AuCi0KLSNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEZvb1Rlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEJh
clRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChG
b29UZXN0KTsKLVRZUEVEX1RFU1RfUChGb29UZXN0LCBBKSB7fQotUkVHSVNURVJfVFlQRURfVEVT
VF9DQVNFX1AoQmFyVGVzdCwgQSk7ICAvLyBXcm9uZyB0ZXN0IGNhc2UgbmFtZS4KLUlOU1RBTlRJ
QVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCB0ZXN0aW5nOjpUeXBlczxpbnQ+KTsK
LQotI2VsaWYgZGVmaW5lZChURVNUX0NBVENIRVNfV1JPTkdfQ0FTRV9JTl9JTlNUQU5USUFURV9U
WVBFRF9URVNUX0NBU0VfUCkKLS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgdXNp
bmcgdGhlIHdyb25nIHRlc3QgY2FzZSBuYW1lIGluCi0vLyBJTlNUQU5USUFURV9UWVBFRF9URVNU
X0NBU0VfUC4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgQmFyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
LX07Ci0KLVRZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QpOwotVFlQRURfVEVTVF9QKEZvb1Rlc3Qs
IEEpIHt9Ci1SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0LCBBKTsKLQotLy8gV3Jv
bmcgdGVzdCBjYXNlIG5hbWUuCi1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgQmFy
VGVzdCwgdGVzdGluZzo6VHlwZXM8aW50Pik7Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRDSEVT
X0lOU1RBTlRJQVRFX1RZUEVEX1RFU0VUX0NBU0VfUF9XSVRIX1NBTUVfTkFNRV9QUkVGSVgpCi0v
LyBUZXN0cyB0aGF0IHRoZSBjb21waWxlciBjYXRjaGVzIGluc3RhbnRpYXRpbmcgVFlQRURfVEVT
VF9DQVNFX1AKLS8vIHR3aWNlIHdpdGggdGhlIHNhbWUgbmFtZSBwcmVmaXguCi0KLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEZvb1Rlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0
KTsKLVRZUEVEX1RFU1RfUChGb29UZXN0LCBBKSB7fQotUkVHSVNURVJfVFlQRURfVEVTVF9DQVNF
X1AoRm9vVGVzdCwgQSk7Ci0KLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29U
ZXN0LCB0ZXN0aW5nOjpUeXBlczxpbnQ+KTsKLQotLy8gV3JvbmcgbmFtZSBwcmVmaXg6ICJNeSIg
aGFzIGJlZW4gdXNlZC4KLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0
LCB0ZXN0aW5nOjpUeXBlczxkb3VibGU+KTsKLQotI2VsaWYgZGVmaW5lZChURVNUX1NUQVRJQ19B
U1NFUlRfVFlQRV9FUV9JU19OT1RfQV9UWVBFKQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
LQotLy8gVGVzdHMgdGhhdCBTdGF0aWNBc3NlcnRUeXBlRXE8VDEsIFQyPiBjYW5ub3QgYmUgdXNl
ZCBhcyBhIHR5cGUuCi10ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8aW50LCBpbnQ+IGR1bW15
OwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfU1RBVElDX0FTU0VSVF9UWVBFX0VRX1dPUktTX0lOX05B
TUVTUEFDRSkKLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLS8vIFRlc3RzIHRoYXQgU3Rh
dGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4gd29ya3MgaW4gYSBuYW1lc3BhY2Ugc2NvcGUuCi1zdGF0
aWMgYm9vbCBkdW1teSA9IHRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIGNvbnN0IGlu
dD4oKTsKLQotI2VsaWYgZGVmaW5lZChURVNUX1NUQVRJQ19BU1NFUlRfVFlQRV9FUV9XT1JLU19J
Tl9DTEFTUykKLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotY2xhc3MgSGVscGVyIHsKLSBwdWJsaWM6Ci0gIC8vIFRlc3RzIHRoYXQgU3RhdGljQXNz
ZXJ0VHlwZUVxPFQxLCBUMj4gd29ya3MgaW4gYSBjbGFzcy4KLSAgSGVscGVyKCkgeyB0ZXN0aW5n
OjpTdGF0aWNBc3NlcnRUeXBlRXE8aW50LCBUPigpOyB9Ci0KLSAgdm9pZCBEb1NvbWV0aGluZygp
IHt9Ci19OwotCi12b2lkIFRlc3QoKSB7Ci0gIEhlbHBlcjxib29sPiBoOwotICBoLkRvU29tZXRo
aW5nKCk7ICAvLyBUbyBhdm9pZCB0aGUgInVudXNlZCB2YXJpYWJsZSIgd2FybmluZy4KLX0KLQot
I2VsaWYgZGVmaW5lZChURVNUX1NUQVRJQ19BU1NFUlRfVFlQRV9FUV9XT1JLU19JTl9GVU5DVElP
TikKLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXZvaWQgVGVzdCgpIHsKLSAgLy8gVGVz
dHMgdGhhdCBTdGF0aWNBc3NlcnRUeXBlRXE8VDEsIFQyPiB3b3JrcyBpbnNpZGUgYSBmdW5jdGlv
bi4KLSAgdGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGludCwgaW50PigpOwotfQot
Ci0jZWxzZQotLy8gQSBzYW5pdHkgdGVzdC4gIFRoaXMgc2hvdWxkIGNvbXBpbGUuCi0KLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgotCi1pbnQgbWFpbigpIHsKLSAgcmV0dXJuIFJVTl9BTExfVEVT
VFMoKTsKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X25jX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X25jX3Rlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDA2ZmZiM2Y4MDM4ZjBh
NTc5NmU0YjZkNjI5ZDAyZTgwNTY1YTI0MzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9uY190
ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5
dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3Ry
aWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIk5lZ2F0aXZlIGNvbXBpbGF0aW9uIHRlc3Qg
Zm9yIEdvb2dsZSBUZXN0LiIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFu
eW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotCi0K
LUlTX0xJTlVYID0gb3MubmFtZSA9PSAncG9zaXgnIGFuZCBvcy51bmFtZSgpWzBdID09ICdMaW51
eCcKLWlmIG5vdCBJU19MSU5VWDoKLSAgc3lzLmV4aXQoMCkgICMgTmVnYXRpdmUgY29tcGlsYXRp
b24gdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93cyAmIE1hYy4KLQotCi1jbGFzcyBH
VGVzdE5DVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICIiIk5lZ2F0aXZlIGNvbXBpbGF0aW9u
IHRlc3QgZm9yIEdvb2dsZSBUZXN0LiIiIgotCi0gIGRlZiB0ZXN0Q29tcGlsZXJFcnJvcihzZWxm
KToKLSAgICAiIiJWZXJpZmllcyB0aGF0IGVycm9uZW91cyBjb2RlIGxlYWRzIHRvIGV4cGVjdGVk
IGNvbXBpbGVyCi0gICAgbWVzc2FnZXMuIiIiCi0KLSAgICAjIERlZmluZXMgYSBsaXN0IG9mIHRl
c3Qgc3BlY3MsIHdoZXJlIGVhY2ggZWxlbWVudCBpcyBhIHR1cGxlCi0gICAgIyAodGVzdCBuYW1l
LCBsaXN0IG9mIHJlZ2V4ZXMgZm9yIG1hdGNoaW5nIHRoZSBjb21waWxlciBlcnJvcnMpLgotICAg
IHRlc3Rfc3BlY3MgPSBbCi0gICAgICAoJ0NBTk5PVF9JR05PUkVfUlVOX0FMTF9URVNUU19SRVNV
TFQnLAotICAgICAgIFtyJ2lnbm9yaW5nIHJldHVybiB2YWx1ZSddKSwKLQotICAgICAgKCdVU0VS
X0NBTk5PVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0lOTF9IJywKLSAgICAgICBbcidtdXN0IG5v
dCBiZSBpbmNsdWRlZCBleGNlcHQgYnkgR29vZ2xlIFRlc3QgaXRzZWxmJ10pLAotCi0gICAgICAo
J0NBVENIRVNfREVDTEFSSU5HX1NFVFVQX0lOX1RFU1RfRklYVFVSRV9XSVRIX1RZUE8nLAotICAg
ICAgIFtyJ1NldHVwX3Nob3VsZF9iZV9zcGVsbGVkX1NldFVwJ10pLAotCi0gICAgICAoJ0NBVENI
RVNfQ0FMTElOR19TRVRVUF9JTl9URVNUX1dJVEhfVFlQTycsCi0gICAgICAgW3InU2V0dXBfc2hv
dWxkX2JlX3NwZWxsZWRfU2V0VXAnXSksCi0KLSAgICAgICgnQ0FUQ0hFU19ERUNMQVJJTkdfU0VU
VVBfSU5fRU5WSVJPTk1FTlRfV0lUSF9UWVBPJywKLSAgICAgICBbcidTZXR1cF9zaG91bGRfYmVf
c3BlbGxlZF9TZXRVcCddKSwKLQotICAgICAgKCdDQVRDSEVTX0NBTExJTkdfU0VUVVBfSU5fRU5W
SVJPTk1FTlRfV0lUSF9UWVBPJywKLSAgICAgICBbcidTZXR1cF9zaG91bGRfYmVfc3BlbGxlZF9T
ZXRVcCddKSwKLQotICAgICAgKCdDQVRDSEVTX1dST05HX0NBU0VfSU5fVFlQRURfVEVTVF9QJywK
LSAgICAgICBbcidCYXJUZXN0Lip3YXMgbm90IGRlY2xhcmVkJ10pLAotCi0gICAgICAoJ0NBVENI
RVNfV1JPTkdfQ0FTRV9JTl9SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUCcsCi0gICAgICAgW3In
QmFyVGVzdC4qd2FzIG5vdCBkZWNsYXJlZCddKSwKLQotICAgICAgKCdDQVRDSEVTX1dST05HX0NB
U0VfSU5fSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AnLAotICAgICAgIFtyJ0JhclRlc3Qu
Km5vdCBkZWNsYXJlZCddKSwKLQotICAgICAgKCdDQVRDSEVTX0lOU1RBTlRJQVRFX1RZUEVEX1RF
U0VUX0NBU0VfUF9XSVRIX1NBTUVfTkFNRV9QUkVGSVgnLAotICAgICAgIFtyJ3JlZGVmaW5pdGlv
biBvZi4qTXkuKkZvb1Rlc3QnXSksCi0KLSAgICAgICgnU1RBVElDX0FTU0VSVF9UWVBFX0VRX0lT
X05PVF9BX1RZUEUnLAotICAgICAgIFtyJ1N0YXRpY0Fzc2VydFR5cGVFcS4qIGRvZXMgbm90IG5h
bWUgYSB0eXBlJ10pLAotCi0gICAgICAoJ1NUQVRJQ19BU1NFUlRfVFlQRV9FUV9XT1JLU19JTl9O
QU1FU1BBQ0UnLAotICAgICAgIFtyJ1N0YXRpY0Fzc2VydFR5cGVFcS4qaW50Lipjb25zdCBpbnQn
XSksCi0KLSAgICAgICgnU1RBVElDX0FTU0VSVF9UWVBFX0VRX1dPUktTX0lOX0NMQVNTJywKLSAg
ICAgICBbcidTdGF0aWNBc3NlcnRUeXBlRXEuKmludC4qYm9vbCddKSwKLQotICAgICAgKCdTVEFU
SUNfQVNTRVJUX1RZUEVfRVFfV09SS1NfSU5fRlVOQ1RJT04nLAotICAgICAgIFtyJ1N0YXRpY0Fz
c2VydFR5cGVFcS4qY29uc3QgaW50LippbnQnXSksCi0KLSAgICAgICgnU0FOSVRZJywKLSAgICAg
ICBOb25lKQotICAgICAgXQotCi0gICAgIyBUT0RPKHdhbkBnb29nbGUuY29tKTogdmVyaWZ5IHRo
YXQgdGhlIHRlc3Qgc3BlY3MgYXJlIHNhdGlzZmllZC4KLQotCi1pZiBfX25hbWVfXyA9PSAnX19t
YWluX18nOgotICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdC5jYwppbmRleCBhZmUyZGMwYzkyZmU0
M2FlOTM1YjIyY2VmMzE3N2U1MTg0YjdmZmExLi4yOTI1OTlhZjhkMDhkNjgzZDhhZjg2ZmVlOTdm
YTNjNWE2MTZhNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X25vX3Rlc3RfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF9ub190ZXN0X3VuaXR0ZXN0LmNjCkBAIC0zMiwyMyArMzIsMjUgQEAKIC8vCiAvLyBB
dXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAKLSNpbmNsdWRlIDxndGVzdC9n
dGVzdC5oPgotCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIgKiphcmd2KSB7CiAgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsK
IAogICAvLyBBbiBhZC1ob2MgYXNzZXJ0aW9uIG91dHNpZGUgb2YgYWxsIHRlc3RzLgogICAvLwot
ICAvLyBUaGlzIHNlcnZlcyB0d28gcHVycG9zZXM6CisgIC8vIFRoaXMgc2VydmVzIHRocmVlIHB1
cnBvc2VzOgogICAvLwogICAvLyAxLiBJdCB2ZXJpZmllcyB0aGF0IGFuIGFkLWhvYyBhc3NlcnRp
b24gY2FuIGJlIGV4ZWN1dGVkIGV2ZW4gaWYKICAgLy8gICAgbm8gdGVzdCBpcyBkZWZpbmVkLgot
ICAvLyAyLiBXZSBoYWQgYSBidWcgd2hlcmUgdGhlIFhNTCBvdXRwdXQgd29uJ3QgYmUgZ2VuZXJh
dGVkIGlmIGFuCisgIC8vIDIuIEl0IHZlcmlmaWVzIHRoYXQgYSBmYWlsZWQgYWQtaG9jIGFzc2Vy
dGlvbiBjYXVzZXMgdGhlIHRlc3QKKyAgLy8gICAgcHJvZ3JhbSB0byBmYWlsLgorICAvLyAzLiBX
ZSBoYWQgYSBidWcgd2hlcmUgdGhlIFhNTCBvdXRwdXQgd29uJ3QgYmUgZ2VuZXJhdGVkIGlmIGFu
CiAgIC8vICAgIGFzc2VydGlvbiBpcyBleGVjdXRlZCBiZWZvcmUgUlVOX0FMTF9URVNUUygpIGlz
IGNhbGxlZCwgZXZlbgogICAvLyAgICB0aG91Z2ggLS1ndGVzdF9vdXRwdXQ9eG1sIGlzIHNwZWNp
ZmllZC4gIFRoaXMgbWFrZXMgc3VyZSB0aGUKICAgLy8gICAgYnVnIGlzIGZpeGVkIGFuZCBkb2Vz
bid0IHJlZ3Jlc3MuCi0gIEVYUEVDVF9FUSgxLCAxKTsKKyAgRVhQRUNUX0VRKDEsIDIpOwogCi0g
IHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CisgIC8vIFRoZSBhYm92ZSBFWFBFQ1RfRVEoKSBzaG91
bGQgY2F1c2UgUlVOX0FMTF9URVNUUygpIHRvIHJldHVybiBub24temVyby4KKyAgcmV0dXJuIFJV
Tl9BTExfVEVTVFMoKSA/IDAgOiAxOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkKaW5kZXggMTkyMDMwYTIwMjBiZmQ0MWU5NGM0ZTQ5
MTRjYWJhMzhkYjc0ZjJmYi4uMDZkYmVlMDk4MDUwNjg1ZTVjMGM1YjVjNDVhMzQ3YWY3OTk5NzNl
NiAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRf
dGVzdC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90
ZXN0LnB5CkBAIC0zMiw3ICszMiw3IEBACiAiIiJUZXN0cyB0aGUgdGV4dCBvdXRwdXQgb2YgR29v
Z2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yay4KIAogU1lOT1BTSVMKLSAgICAgICBndGVzdF9vdXRw
dXRfdGVzdC5weSAtLWd0ZXN0X2J1aWxkX2Rpcj1CVUlMRC9ESVIgLS1nZW5nb2xkZW4KKyAgICAg
ICBndGVzdF9vdXRwdXRfdGVzdC5weSAtLWJ1aWxkX2Rpcj1CVUlMRC9ESVIgLS1nZW5nb2xkZW4K
ICAgICAgICAgICMgd2hlcmUgQlVJTEQvRElSIGNvbnRhaW5zIHRoZSBidWlsdCBndGVzdF9vdXRw
dXRfdGVzdF8gZmlsZS4KICAgICAgICBndGVzdF9vdXRwdXRfdGVzdC5weSAtLWdlbmdvbGRlbgog
ICAgICAgIGd0ZXN0X291dHB1dF90ZXN0LnB5CkBAIC00MCw2ICs0MCw3IEBACiAKIF9fYXV0aG9y
X18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCiAKK2ltcG9ydCBkaWZmbGliCiBp
bXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IHN5cwpAQCAtNTIsMzAgKzUzLDI4IEBACiAKIElT
X1dJTkRPV1MgPSBvcy5uYW1lID09ICdudCcKIAotaWYgSVNfV0lORE9XUzoKLSAgR09MREVOX05B
TUUgPSAnZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX3dpbi50eHQnCi1lbHNlOgotICBHT0xERU5f
TkFNRSA9ICdndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fbGluLnR4dCcKKyMgVE9ETyh2bGFkbEBn
b29nbGUuY29tKTogcmVtb3ZlIHRoZSBfbGluIHN1ZmZpeC4KK0dPTERFTl9OQU1FID0gJ2d0ZXN0
X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0JwogCiBQUk9HUkFNX1BBVEggPSBndGVzdF90ZXN0
X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ3Rlc3Rfb3V0cHV0X3Rlc3RfJykKIAogIyBB
dCBsZWFzdCBvbmUgY29tbWFuZCB3ZSBleGVyY2lzZSBtdXN0IG5vdCBoYXZlIHRoZQotIyAtLWd0
ZXN0X2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cyBmbGFnLgorIyAn
aW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzJyBhcmd1bWVudC4KIENP
TU1BTkRfTElTVF9URVNUUyA9ICh7fSwgW1BST0dSQU1fUEFUSCwgJy0tZ3Rlc3RfbGlzdF90ZXN0
cyddKQogQ09NTUFORF9XSVRIX0NPTE9SID0gKHt9LCBbUFJPR1JBTV9QQVRILCAnLS1ndGVzdF9j
b2xvcj15ZXMnXSkKIENPTU1BTkRfV0lUSF9USU1FID0gKHt9LCBbUFJPR1JBTV9QQVRILAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAnLS1ndGVzdF9wcmludF90aW1lJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgJy0tZ3Rlc3RfaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRf
aG9jX3Rlc3RzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVybmFsX3NraXBfZW52
aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICct
LWd0ZXN0X2ZpbHRlcj1GYXRhbEZhaWx1cmVUZXN0Lio6TG9nZ2luZ1Rlc3QuKiddKQogQ09NTUFO
RF9XSVRIX0RJU0FCTEVEID0gKAogICAgIHt9LCBbUFJPR1JBTV9QQVRILAogICAgICAgICAgJy0t
Z3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMnLAotICAgICAgICAgJy0tZ3Rlc3RfaW50ZXJu
YWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzJywKKyAgICAgICAgICdpbnRlcm5h
bF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMnLAogICAgICAgICAgJy0tZ3Rlc3Rf
ZmlsdGVyPSpESVNBQkxFRF8qJ10pCiBDT01NQU5EX1dJVEhfU0hBUkRJTkcgPSAoCiAgICAgeydH
VEVTVF9TSEFSRF9JTkRFWCc6ICcxJywgJ0dURVNUX1RPVEFMX1NIQVJEUyc6ICcyJ30sCiAgICAg
W1BST0dSQU1fUEFUSCwKLSAgICAgJy0tZ3Rlc3RfaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9h
bmRfYWRfaG9jX3Rlc3RzJywKKyAgICAgJ2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2Fk
X2hvY190ZXN0cycsCiAgICAgICctLWd0ZXN0X2ZpbHRlcj1QYXNzaW5nVGVzdC4qJ10pCiAKIEdP
TERFTl9QQVRIID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNlRGlyKCks
IEdPTERFTl9OQU1FKQpAQCAtMTM4LDYgKzEzNywyMCBAQCBkZWYgUmVtb3ZlVHlwZUluZm9EZXRh
aWxzKHRlc3Rfb3V0cHV0KToKICAgcmV0dXJuIHJlLnN1YihyJ3Vuc2lnbmVkIGludCcsICd1bnNp
Z25lZCcsIHRlc3Rfb3V0cHV0KQogCiAKK2RlZiBOb3JtYWxpemVUb0N1cnJlbnRQbGF0Zm9ybSh0
ZXN0X291dHB1dCk6CisgICIiIk5vcm1hbGl6ZXMgcGxhdGZvcm0gc3BlY2lmaWMgb3V0cHV0IGRl
dGFpbHMgZm9yIGVhc2llciBjb21wYXJpc29uLiIiIgorCisgIGlmIElTX1dJTkRPV1M6CisgICAg
IyBSZW1vdmVzIHRoZSBjb2xvciBpbmZvcm1hdGlvbiB0aGF0IGlzIG5vdCBwcmVzZW50IG9uIFdp
bmRvd3MuCisgICAgdGVzdF9vdXRwdXQgPSByZS5zdWIoJ1x4MWJcXFsoMDszXGQpP20nLCAnJywg
dGVzdF9vdXRwdXQpCisgICAgIyBDaGFuZ2VzIGZhaWx1cmUgbWVzc2FnZSBoZWFkZXJzIGludG8g
dGhlIFdpbmRvd3MgZm9ybWF0LgorICAgIHRlc3Rfb3V0cHV0ID0gcmUuc3ViKHInOiBGYWlsdXJl
XG4nLCByJzogZXJyb3I6ICcsIHRlc3Rfb3V0cHV0KQorICAgICMgQ2hhbmdlcyBmaWxlKGxpbmVf
bnVtYmVyKSB0byBmaWxlOmxpbmVfbnVtYmVyLgorICAgIHRlc3Rfb3V0cHV0ID0gcmUuc3ViKHIn
KChcd3xcLikrKVwoKFxkKylcKTonLCByJ1wxOlwzOicsIHRlc3Rfb3V0cHV0KQorCisgIHJldHVy
biB0ZXN0X291dHB1dAorCisKIGRlZiBSZW1vdmVUZXN0Q291bnRzKG91dHB1dCk6CiAgICIiIlJl
bW92ZXMgdGVzdCBjb3VudHMgZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIi
CiAKQEAgLTI0MCw4ICsyNTMsOCBAQCBkZWYgR2V0T3V0cHV0T2ZBbGxDb21tYW5kcygpOgogCiBD
QU5fR0VORVJBVEVfR09MREVOX0ZJTEUgPSAoU1VQUE9SVFNfREVBVEhfVEVTVFMgYW5kCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU1VQUE9SVFNfVFlQRURfVEVTVFMgYW5kCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU1VQUE9SVFNfVEhSRUFEUykKLQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNVUFBPUlRTX1RIUkVBRFMgYW5kCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbm90IElTX1dJTkRPV1MpCiAKIGNsYXNzIEdUZXN0T3V0cHV0VGVzdChndGVzdF90ZXN0
X3V0aWxzLlRlc3RDYXNlKToKICAgZGVmIFJlbW92ZVVuc3VwcG9ydGVkVGVzdHMoc2VsZiwgdGVz
dF9vdXRwdXQpOgpAQCAtMjY2LDcgKzI3OSw3IEBAIGRlZiBSZW1vdmVVbnN1cHBvcnRlZFRlc3Rz
KHNlbGYsIHRlc3Rfb3V0cHV0KToKICAgZGVmIHRlc3RPdXRwdXQoc2VsZik6CiAgICAgb3V0cHV0
ID0gR2V0T3V0cHV0T2ZBbGxDb21tYW5kcygpCiAKLSAgICBnb2xkZW5fZmlsZSA9IG9wZW4oR09M
REVOX1BBVEgsICdyYicpCisgICAgZ29sZGVuX2ZpbGUgPSBvcGVuKEdPTERFTl9QQVRILCAncicp
CiAgICAgIyBBIG1pcy1jb25maWd1cmVkIHNvdXJjZSBjb250cm9sIHN5c3RlbSBjYW4gY2F1c2Ug
XHIgYXBwZWFyIGluIEVPTAogICAgICMgc2VxdWVuY2VzIHdoZW4gd2UgcmVhZCB0aGUgZ29sZGVu
IGZpbGUgaXJyZXNwZWN0aXZlIG9mIGFuIG9wZXJhdGluZwogICAgICMgc3lzdGVtIHVzZWQuIFRo
ZXJlZm9yZSwgd2UgbmVlZCB0byBzdHJpcCB0aG9zZSBccidzIGZyb20gbmV3bGluZXMKQEAgLTI4
MiwxMSArMjk1LDE2IEBAIGRlZiB0ZXN0T3V0cHV0KHNlbGYpOgogICAgIG5vcm1hbGl6ZWRfZ29s
ZGVuID0gUmVtb3ZlVHlwZUluZm9EZXRhaWxzKGdvbGRlbikKIAogICAgIGlmIENBTl9HRU5FUkFU
RV9HT0xERU5fRklMRToKLSAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWFsaXplZF9nb2xkZW4s
IG5vcm1hbGl6ZWRfYWN0dWFsKQorICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtYWxpemVkX2dv
bGRlbiwgbm9ybWFsaXplZF9hY3R1YWwsCisgICAgICAgICAgICAgICAgICAgICAgICdcbicuam9p
bihkaWZmbGliLnVuaWZpZWRfZGlmZigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1h
bGl6ZWRfZ29sZGVuLnNwbGl0KCdcbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9y
bWFsaXplZF9hY3R1YWwuc3BsaXQoJ1xuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAn
Z29sZGVuJywgJ2FjdHVhbCcpKSkKICAgICBlbHNlOgotICAgICAgbm9ybWFsaXplZF9hY3R1YWwg
PSBSZW1vdmVUZXN0Q291bnRzKG5vcm1hbGl6ZWRfYWN0dWFsKQotICAgICAgbm9ybWFsaXplZF9n
b2xkZW4gPSBSZW1vdmVUZXN0Q291bnRzKHNlbGYuUmVtb3ZlVW5zdXBwb3J0ZWRUZXN0cygKLSAg
ICAgICAgICBub3JtYWxpemVkX2dvbGRlbikpCisgICAgICBub3JtYWxpemVkX2FjdHVhbCA9IE5v
cm1hbGl6ZVRvQ3VycmVudFBsYXRmb3JtKAorICAgICAgICAgIFJlbW92ZVRlc3RDb3VudHMobm9y
bWFsaXplZF9hY3R1YWwpKQorICAgICAgbm9ybWFsaXplZF9nb2xkZW4gPSBOb3JtYWxpemVUb0N1
cnJlbnRQbGF0Zm9ybSgKKyAgICAgICAgICBSZW1vdmVUZXN0Q291bnRzKHNlbGYuUmVtb3ZlVW5z
dXBwb3J0ZWRUZXN0cyhub3JtYWxpemVkX2dvbGRlbikpKQogCiAgICAgICAjIFRoaXMgY29kZSBp
cyB2ZXJ5IGhhbmR5IHdoZW4gZGVidWdnaW5nIGdvbGRlbiBmaWxlIGRpZmZlcmVuY2VzOgogICAg
ICAgaWYgb3MuZ2V0ZW52KCdERUJVR19HVEVTVF9PVVRQVVRfVEVTVCcpOgpAQCAtMzEyLDE0ICsz
MzAsOSBAQCBkZWYgdGVzdE91dHB1dChzZWxmKToKICAgICBlbHNlOgogICAgICAgbWVzc2FnZSA9
ICgKICAgICAgICAgICAiIiJVbmFibGUgdG8gd3JpdGUgYSBnb2xkZW4gZmlsZSB3aGVuIGNvbXBp
bGVkIGluIGFuIGVudmlyb25tZW50Ci10aGF0IGRvZXMgbm90IHN1cHBvcnQgYWxsIHRoZSByZXF1
aXJlZCBmZWF0dXJlcyAoZGVhdGggdGVzdHMiIiIpCi0gICAgICBpZiBJU19XSU5ET1dTOgotICAg
ICAgICBtZXNzYWdlICs9ICgKLSAgICAgICAgICAgICIiIlxuYW5kIHR5cGVkIHRlc3RzKS4gUGxl
YXNlIGNoZWNrIHRoYXQgeW91IGFyZSB1c2luZyBWQysrIDguMCBTUDEKLW9yIGhpZ2hlciBhcyB5
b3VyIGNvbXBpbGVyLiIiIikKLSAgICAgIGVsc2U6Ci0gICAgICAgIG1lc3NhZ2UgKz0gIiIiXG50
eXBlZCB0ZXN0cywgYW5kIHRocmVhZHMpLiAgUGxlYXNlIGdlbmVyYXRlIHRoZQotZ29sZGVuIGZp
bGUgdXNpbmcgYSBiaW5hcnkgYnVpbHQgd2l0aCB0aG9zZSBmZWF0dXJlcyBlbmFibGVkLiIiIgor
dGhhdCBkb2VzIG5vdCBzdXBwb3J0IGFsbCB0aGUgcmVxdWlyZWQgZmVhdHVyZXMgKGRlYXRoIHRl
c3RzLCB0eXBlZCB0ZXN0cywKK2FuZCBtdWx0aXBsZSB0aHJlYWRzKS4gIFBsZWFzZSBnZW5lcmF0
ZSB0aGUgZ29sZGVuIGZpbGUgdXNpbmcgYSBiaW5hcnkgYnVpbHQKK3dpdGggdGhvc2UgZmVhdHVy
ZXMgZW5hYmxlZC4iIiIpCiAKICAgICAgIHN5cy5zdGRlcnIud3JpdGUobWVzc2FnZSkKICAgICAg
IHN5cy5leGl0KDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X291dHB1dF90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjCmluZGV4IDI3M2U4ZTkzZWIwNTlmNWRiNjkzN2M4YzdkNzc3NjZmODc4
MDUyNzAuLjEwNzBhOWYyNmZlNTA5ODhmODBiM2M2N2Q5ZDA0NmEyYjViZjk5ZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjCkBA
IC0yNywxMyArMjcsMTYgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIC8vCi0v
LyBBIHVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QgaXRzZWxmLiAgVGhpcyB2ZXJpZmllcyB0aGF0
IHRoZSBiYXNpYwotLy8gY29uc3RydWN0cyBvZiBHb29nbGUgVGVzdCB3b3JrLgorLy8gVGhlIHB1
cnBvc2Ugb2YgdGhpcyBmaWxlIGlzIHRvIGdlbmVyYXRlIEdvb2dsZSBUZXN0IG91dHB1dCB1bmRl
cgorLy8gdmFyaW91cyBjb25kaXRpb25zLiAgVGhlIG91dHB1dCB3aWxsIHRoZW4gYmUgdmVyaWZp
ZWQgYnkKKy8vIGd0ZXN0X291dHB1dF90ZXN0LnB5IHRvIGVuc3VyZSB0aGF0IEdvb2dsZSBUZXN0
IGdlbmVyYXRlcyB0aGUKKy8vIGRlc2lyZWQgbWVzc2FnZXMuICBUaGVyZWZvcmUsIG1vc3QgdGVz
dHMgaW4gdGhpcyBmaWxlIGFyZSBNRUFOVCBUTworLy8gRkFJTC4KIC8vCiAvLyBBdXRob3I6IHdh
bkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGku
aD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5o
IgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIC8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJh
bnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKIC8vIGltcGxlbWVudGF0aW9u
LiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwpAQCAtNTUsOCAr
NTgsNiBAQCB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkV2l0aFBhcmFtOwogI2VuZGlm
CiAKIG5hbWVzcGFjZSBwb3NpeCA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OwotdXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZzsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpzY29w
ZWRfcHRyOwogCiAvLyBUZXN0cyBjYXRjaGluZyBmYXRhbCBmYWlsdXJlcy4KIApAQCAtODcsNiAr
ODgsMzUgQEAgVEVTVChQYXNzaW5nVGVzdCwgUGFzc2luZ1Rlc3QxKSB7CiBURVNUKFBhc3NpbmdU
ZXN0LCBQYXNzaW5nVGVzdDIpIHsKIH0KIAorLy8gVGVzdHMgdGhhdCBwYXJhbWV0ZXJzIG9mIGZh
aWxpbmcgcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgcHJpbnRlZCBpbiB0aGUKKy8vIGZhaWxpbmcg
dGVzdCBzdW1tYXJ5LgorY2xhc3MgRmFpbGluZ1BhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0V2l0aFBhcmFtPGludD4ge307CisKK1RFU1RfUChGYWlsaW5nUGFyYW1UZXN0LCBGYWlscykg
eworICBFWFBFQ1RfRVEoMSwgR2V0UGFyYW0oKSk7Cit9CisKKy8vIFRoaXMgZ2VuZXJhdGVzIGEg
dGVzdCB3aGljaCB3aWxsIGZhaWwuIEdvb2dsZSBUZXN0IGlzIGV4cGVjdGVkIHRvIHByaW50Cisv
LyBpdHMgcGFyYW1ldGVyIHdoZW4gaXQgb3V0cHV0cyB0aGUgbGlzdCBvZiBhbGwgZmFpbGVkIHRl
c3RzLgorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoUHJpbnRpbmdGYWlsaW5nUGFyYW1zLAorICAg
ICAgICAgICAgICAgICAgICAgICAgRmFpbGluZ1BhcmFtVGVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3Rpbmc6OlZhbHVlcygyKSk7CisKK3N0YXRpYyBjb25zdCBjaGFyIGtHb2xkZW5T
dHJpbmdbXSA9ICJcIkxpbmVcMCAxXCJcbkxpbmUgMiI7CisKK1RFU1QoTm9uZmF0YWxGYWlsdXJl
VGVzdCwgRXNjYXBlc1N0cmluZ09wZXJhbmRzKSB7CisgIHN0ZDo6c3RyaW5nIGFjdHVhbCA9ICJh
Y3R1YWwgXCJzdHJpbmdcIiI7CisgIEVYUEVDVF9FUShrR29sZGVuU3RyaW5nLCBhY3R1YWwpOwor
CisgIGNvbnN0IGNoYXIqIGdvbGRlbiA9IGtHb2xkZW5TdHJpbmc7CisgIEVYUEVDVF9FUShnb2xk
ZW4sIGFjdHVhbCk7Cit9CisKK1RFU1QoTm9uZmF0YWxGYWlsdXJlVGVzdCwgRGlmZkZvckxvbmdT
dHJpbmdzKSB7CisgIHN0ZDo6c3RyaW5nIGdvbGRlbl9zdHIoa0dvbGRlblN0cmluZywgc2l6ZW9m
KGtHb2xkZW5TdHJpbmcpIC0gMSk7CisgIEVYUEVDVF9FUShnb2xkZW5fc3RyLCAiTGluZSAyIik7
Cit9CisKIC8vIFRlc3RzIGNhdGNoaW5nIGEgZmF0YWwgZmFpbHVyZSBpbiBhIHN1YnJvdXRpbmUu
CiBURVNUKEZhdGFsRmFpbHVyZVRlc3QsIEZhdGFsRmFpbHVyZUluU3Vicm91dGluZSkgewogICBw
cmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSlcbiIpOwpAQCAt
MjA3LDEzICsyMzcsMTMgQEAgVEVTVChTQ09QRURfVFJBQ0VUZXN0LCBDYW5CZVJlcGVhdGVkKSB7
CiAKICAgewogICAgIFNDT1BFRF9UUkFDRSgiQyIpOwotICAgIEFERF9GQUlMVVJFKCkgPDwgIlRo
aXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluICIKLSAgICAgICAgICAg
ICAgICAgIDw8ICJ0cmFjZSBwb2ludCBBLCBCLCBhbmQgQy4iOworICAgIEFERF9GQUlMVVJFKCkg
PDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCAiCisgICAgICAgICAgICAg
ICAgICA8PCAiY29udGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQgQy4iOwogICB9CiAKICAgU0NP
UEVEX1RSQUNFKCJEIik7Ci0gIEFERF9GQUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBl
Y3RlZCwgYW5kIHNob3VsZCBjb250YWluICIKLSAgICAgICAgICAgICAgICA8PCAidHJhY2UgcG9p
bnQgQSwgQiwgYW5kIEQuIjsKKyAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4
cGVjdGVkLCBhbmQgc2hvdWxkICIKKyAgICAgICAgICAgICAgICA8PCAiY29udGFpbiB0cmFjZSBw
b2ludCBBLCBCLCBhbmQgRC4iOwogfQogCiAjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQpAQCAtMzY0
LDYgKzM5NCw3IEBAIGNsYXNzIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAgICAgICAgICAgIDw8ICJXZSBzaG91bGQg
bmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgIgogICAgICAgICAgICAg
ICAgICAgPDwgImhhZCBhIGZhdGFsIGZhaWx1cmUuIjsKICAgfQorCiAgcHJpdmF0ZToKICAgdm9p
ZCBJbml0KCkgewogICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRl
c3QgZml4dHVyZSBjJ3Rvci4iOwpAQCAtNDI3LDEzNyArNDU4LDEwIEBAIFRFU1RfRihGYXRhbEZh
aWx1cmVJblNldFVwVGVzdCwgRmFpbHVyZUluU2V0VXApIHsKICAgICAgICAgIDw8ICJXZSBzaG91
bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIFNldFVwKCkgZmFpbGVkLiI7CiB9CiAKLSNpZiBHVEVTVF9P
U19XSU5ET1dTCi0KLS8vIFRoaXMgZ3JvdXAgb2YgdGVzdHMgdmVyaWZpZXMgdGhhdCBHb29nbGUg
VGVzdCBoYW5kbGVzIFNFSCBhbmQgQysrCi0vLyBleGNlcHRpb25zIGNvcnJlY3RseS4KLQotLy8g
QSBmdW5jdGlvbiB0aGF0IHRocm93cyBhbiBTRUggZXhjZXB0aW9uLgotc3RhdGljIHZvaWQgVGhy
b3dTRUgoKSB7Ci0gIGludCogcCA9IE5VTEw7Ci0gICpwID0gMDsgIC8vIFJhaXNlcyBhbiBhY2Nl
c3MgdmlvbGF0aW9uLgotfQotCi0vLyBUZXN0cyBleGNlcHRpb25zIHRocm93biBpbiB0aGUgdGVz
dCBmaXh0dXJlIGNvbnN0cnVjdG9yLgotY2xhc3MgRXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICBFeGNlcHRpb25JbkZpeHR1
cmVDdG9yVGVzdCgpIHsKLSAgICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlIG9uIHRocm93
biBleGNlcHRpb24gIgotICAgICAgICAgICAiaW4gdGhlIHRlc3QgZml4dHVyZSdzIGNvbnN0cnVj
dG9yKVxuIik7Ci0KLSAgICBUaHJvd1NFSCgpOwotICB9Ci0KLSAgdmlydHVhbCB+RXhjZXB0aW9u
SW5GaXh0dXJlQ3RvclRlc3QoKSB7Ci0gICAgRGVpbml0KCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKSB7Ci0gICAgRkFJTCgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gU2V0VXAo
KS4gICIKLSAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgdGhlIHRl
c3QgZml4dHVyZSBjJ3RvciB0aHJldy4iOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3du
KCkgewotICAgIEZBSUwoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIFRlYXJEb3duKCkuICAi
Ci0gICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZp
eHR1cmUgYyd0b3IgdGhyZXcuIjsKLSAgfQotIHByaXZhdGU6Ci0gIHZvaWQgRGVpbml0KCkgewot
ICAgIEZBSUwoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIHRoZSBkJ3Rvci4gICIKLSAgICAg
ICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgdGhlIHRlc3QgZml4dHVyZSBj
J3RvciB0aHJldy4iOwotICB9Ci19OwotCi1URVNUX0YoRXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRl
c3QsIEV4Y2VwdGlvbkluRml4dHVyZUN0b3IpIHsKLSAgRkFJTCgpIDw8ICJVTkVYUEVDVEVEIGZh
aWx1cmUgaW4gdGhlIHRlc3QgZnVuY3Rpb24uICAiCi0gICAgICAgICA8PCAiV2Ugc2hvdWxkIG5l
dmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yIHRocmV3LiI7Ci19Ci0KLS8v
IFRlc3RzIGV4Y2VwdGlvbnMgdGhyb3duIGluIFNldFVwKCkuCi1jbGFzcyBFeGNlcHRpb25JblNl
dFVwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwg
fkV4Y2VwdGlvbkluU2V0VXBUZXN0KCkgewotICAgIERlaW5pdCgpOwotICB9Ci0KLSAgdmlydHVh
bCB2b2lkIFNldFVwKCkgewotICAgIHByaW50ZigiKGV4cGVjdGluZyAzIGZhaWx1cmVzKVxuIik7
Ci0KLSAgICBUaHJvd1NFSCgpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewot
ICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4iOwotICB9
Ci0gcHJpdmF0ZToKLSAgdm9pZCBEZWluaXQoKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBm
YWlsdXJlICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLiI7Ci0gIH0KLX07Ci0KLVRFU1Rf
RihFeGNlcHRpb25JblNldFVwVGVzdCwgRXhjZXB0aW9uSW5TZXRVcCkgewotICBGQUlMKCkgPDwg
IlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBmdW5jdGlvbi4gICIKLSAgICAgICAgIDw8
ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIFNldFVwKCkgdGhyZXcuIjsKLX0KLQotLy8g
VGVzdHMgdGhhdCBUZWFyRG93bigpIGFuZCB0aGUgdGVzdCBmaXh0dXJlIGQndG9yIGFyZSBhbHdh
eXMgY2FsbGVkLAotLy8gZXZlbiB3aGVuIHRoZSB0ZXN0IGZ1bmN0aW9uIHRocm93cyBhbiBleGNl
cHRpb24uCi1jbGFzcyBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIH5FeGNlcHRpb25JblRlc3RGdW5jdGlv
blRlc3QoKSB7Ci0gICAgRGVpbml0KCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24o
KSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLiI7
Ci0gIH0KLSBwcml2YXRlOgotICB2b2lkIERlaW5pdCgpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVj
dGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKLSAgfQotfTsKLQot
Ly8gVGVzdHMgdGhhdCB0aGUgdGVzdCBmaXh0dXJlIGQndG9yIGlzIGFsd2F5cyBjYWxsZWQsIGV2
ZW4gd2hlbiB0aGUKLS8vIHRlc3QgZnVuY3Rpb24gdGhyb3dzIGFuIFNFSCBleGNlcHRpb24uCi1U
RVNUX0YoRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0LCBTRUgpIHsKLSAgcHJpbnRmKCIoZXhw
ZWN0aW5nIDMgZmFpbHVyZXMpXG4iKTsKLQotICBUaHJvd1NFSCgpOwotfQotCi0jaWYgR1RFU1Rf
SEFTX0VYQ0VQVElPTlMKLQotLy8gVGVzdHMgdGhhdCB0aGUgdGVzdCBmaXh0dXJlIGQndG9yIGlz
IGFsd2F5cyBjYWxsZWQsIGV2ZW4gd2hlbiB0aGUKLS8vIHRlc3QgZnVuY3Rpb24gdGhyb3dzIGEg
QysrIGV4Y2VwdGlvbi4gIFdlIGRvIHRoaXMgb25seSB3aGVuCi0vLyBHVEVTVF9IQVNfRVhDRVBU
SU9OUyBpcyBub24temVybywgaS5lLiBDKysgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZC4KLVRFU1Rf
RihFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QsIENwcEV4Y2VwdGlvbikgewotICB0aHJvdyAx
OwotfQotCi0vLyBUZXN0cyBleGNlcHRpb25zIHRocm93biBpbiBUZWFyRG93bigpLgotY2xhc3Mg
RXhjZXB0aW9uSW5UZWFyRG93blRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVj
dGVkOgotICB2aXJ0dWFsIH5FeGNlcHRpb25JblRlYXJEb3duVGVzdCgpIHsKLSAgICBEZWluaXQo
KTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICB0aHJvdyAxOwotICB9
Ci0gcHJpdmF0ZToKLSAgdm9pZCBEZWluaXQoKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBm
YWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLiI7Ci0gIH0KLX07Ci0KLVRFU1Rf
RihFeGNlcHRpb25JblRlYXJEb3duVGVzdCwgRXhjZXB0aW9uSW5UZWFyRG93bikgewotICBwcmlu
dGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOworVEVTVChBZGRGYWlsdXJlQXRUZXN0LCBN
ZXNzYWdlQ29udGFpbnNTcGVjaWZpZWRGaWxlQW5kTGluZU51bWJlcikgeworICBBRERfRkFJTFVS
RV9BVCgiZm9vLmNjIiwgNDIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlIGluIGZvby5jYyI7CiB9CiAK
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotI2VuZGlmICAvLyBHVEVTVF9PU19X
SU5ET1dTCi0KICNpZiBHVEVTVF9JU19USFJFQURTQUZFCiAKIC8vIEEgdW5hcnkgZnVuY3Rpb24g
dGhhdCBtYXkgZGllLgpAQCAtNjEwLDcgKzUxNCw4IEBAIGNsYXNzIERlYXRoVGVzdEFuZE11bHRp
VGhyZWFkc1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAKICBwcml2YXRlOgogICBTcGF3
blRocmVhZE5vdGlmaWNhdGlvbnMgbm90aWZpY2F0aW9uc187Ci0gIHNjb3BlZF9wdHI8VGhyZWFk
V2l0aFBhcmFtPFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyo+ID4gdGhyZWFkXzsKKyAgdGVzdGlu
Zzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI8VGhyZWFkV2l0aFBhcmFtPFNwYXduVGhyZWFkTm90aWZp
Y2F0aW9ucyo+ID4KKyAgICAgIHRocmVhZF87CiB9OwogCiAjZW5kaWYgIC8vIEdURVNUX0lTX1RI
UkVBRFNBRkUKQEAgLTg1MCw2ICs3NTUsMzIgQEAgVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0
LCBGYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MpIHsKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhD
RVBUSU9OUwogCisvLyBUaGlzICNpZmRlZiBibG9jayB0ZXN0cyB0aGUgb3V0cHV0IG9mIHZhbHVl
LXBhcmFtZXRlcml6ZWQgdGVzdHMuCisKKyNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAorCitzdGQ6
OnN0cmluZyBQYXJhbU5hbWVGdW5jKGNvbnN0IHRlc3Rpbmc6OlRlc3RQYXJhbUluZm88c3RkOjpz
dHJpbmc+JiBpbmZvKSB7CisgIHJldHVybiBpbmZvLnBhcmFtOworfQorCitjbGFzcyBQYXJhbVRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxzdGQ6OnN0cmluZz4geworfTsKKwor
VEVTVF9QKFBhcmFtVGVzdCwgU3VjY2VzcykgeworICBFWFBFQ1RfRVEoImEiLCBHZXRQYXJhbSgp
KTsKK30KKworVEVTVF9QKFBhcmFtVGVzdCwgRmFpbHVyZSkgeworICBFWFBFQ1RfRVEoImIiLCBH
ZXRQYXJhbSgpKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QKFByaW50aW5nU3RyaW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtVGVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlcyhzdGQ6OnN0cmluZygi
YSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtTmFtZUZ1bmMpOworCisjZW5kaWYg
IC8vIEdURVNUX0hBU19QQVJBTV9URVNUCisKIC8vIFRoaXMgI2lmZGVmIGJsb2NrIHRlc3RzIHRo
ZSBvdXRwdXQgb2YgdHlwZWQgdGVzdHMuCiAjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKIApAQCAt
OTAxLDcgKzgzMiw3IEBAIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFVuc2lnbmVkLCBU
eXBlZFRlc3RQLCBVbnNpZ25lZFR5cGVzKTsKIFRFU1QoQURlYXRoVGVzdCwgU2hvdWxkUnVuRmly
c3QpIHsKIH0KIAotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUCisjIGlmIEdURVNUX0hBU19UWVBF
RF9URVNUCiAKIC8vIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIHZlcmlmeSB0aGF0IHR5
cGVkIHRlc3RzIHdob3NlIHRlc3QKIC8vIGNhc2UgbmFtZSBlbmRzIHdpdGggRGVhdGhUZXN0IGFy
ZSBydW4gZmlyc3QuCkBAIC05MTYsOSArODQ3LDkgQEAgVFlQRURfVEVTVF9DQVNFKEFUeXBlZERl
YXRoVGVzdCwgTnVtZXJpY1R5cGVzKTsKIFRZUEVEX1RFU1QoQVR5cGVkRGVhdGhUZXN0LCBTaG91
bGRSdW5GaXJzdCkgewogfQogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUCisjIGVu
ZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAogCi0jaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1Rf
UAorIyBpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCiAKIAogLy8gV2UgcmVseSBvbiB0aGUgZ29s
ZGVuIGZpbGUgdG8gdmVyaWZ5IHRoYXQgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzCkBAIC05Mzcs
NyArODY4LDcgQEAgUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoQVR5cGVQYXJhbURlYXRoVGVz
dCwgU2hvdWxkUnVuRmlyc3QpOwogCiBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwg
QVR5cGVQYXJhbURlYXRoVGVzdCwgTnVtZXJpY1R5cGVzKTsKIAotI2VuZGlmICAvLyBHVEVTVF9I
QVNfVFlQRURfVEVTVF9QCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCiAKICNl
bmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKIApAQCAtMTA4NSwxMCArMTAxNiw2IEBAIGNs
YXNzIEJhckVudmlyb25tZW50IDogcHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50IHsKICAgfQog
fTsKIAotR1RFU1RfREVGSU5FX2Jvb2xfKGludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2Fk
X2hvY190ZXN0cywgZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIlRoaXMgZmxhZyBjYXVzZXMg
dGhlIHByb2dyYW0gdG8gc2tpcCB0ZXN0IGVudmlyb25tZW50ICIKLSAgICAgICAgICAgICAgICAg
ICAidGVzdHMgYW5kIGFkIGhvYyB0ZXN0cy4iKTsKLQogLy8gVGhlIG1haW4gZnVuY3Rpb24uCiAv
LwogLy8gVGhlIGlkZWEgaXMgdG8gdXNlIEdvb2dsZSBUZXN0IHRvIHJ1biBhbGwgdGhlIHRlc3Rz
IHdlIGhhdmUgZGVmaW5lZCAoc29tZQpAQCAtMTEwNSwyNCArMTAzMiwyNCBAQCBpbnQgbWFpbihp
bnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKICAgLy8gZ2xvYmFsIHNpZGUgZWZmZWN0cy4gIFRoZSBm
b2xsb3dpbmcgbGluZSBzZXJ2ZXMgYXMgYSBzYW5pdHkgdGVzdAogICAvLyBmb3IgaXQuCiAgIHRl
c3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLSAgaWYgKGFyZ2MgPj0gMiAmJgot
ICAgICAgU3RyaW5nKGFyZ3ZbMV0pID09ICItLWd0ZXN0X2ludGVybmFsX3NraXBfZW52aXJvbm1l
bnRfYW5kX2FkX2hvY190ZXN0cyIpCi0gICAgR1RFU1RfRkxBRyhpbnRlcm5hbF9za2lwX2Vudmly
b25tZW50X2FuZF9hZF9ob2NfdGVzdHMpID0gdHJ1ZTsKKyAgYm9vbCBpbnRlcm5hbF9za2lwX2Vu
dmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMgPQorICAgICAgc3RkOjpjb3VudChhcmd2LCBhcmd2
ICsgYXJnYywKKyAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoImludGVybmFsX3NraXBfZW52
aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cyIpKSA+IDA7CiAKICNpZiBHVEVTVF9IQVNfREVBVEhf
VEVTVAogICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OkdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2Rl
YXRoX3Rlc3QpICE9ICIiKSB7CiAgICAgLy8gU2tpcCB0aGUgdXN1YWwgb3V0cHV0IGNhcHR1cmlu
ZyBpZiB3ZSdyZSBydW5uaW5nIGFzIHRoZSBjaGlsZAogICAgIC8vIHByb2Nlc3Mgb2YgYW4gdGhy
ZWFkc2FmZS1zdHlsZSBkZWF0aCB0ZXN0LgotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RF
U1RfT1NfV0lORE9XUwogICAgIHBvc2l4OjpGUmVvcGVuKCJudWw6IiwgInciLCBzdGRvdXQpOwot
I2Vsc2UKKyMgZWxzZQogICAgIHBvc2l4OjpGUmVvcGVuKCIvZGV2L251bGwiLCAidyIsIHN0ZG91
dCk7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1MKICAgICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwogICB9CiAjZW5kaWYgIC8vIEdURVNU
X0hBU19ERUFUSF9URVNUCiAKLSAgaWYgKEdURVNUX0ZMQUcoaW50ZXJuYWxfc2tpcF9lbnZpcm9u
bWVudF9hbmRfYWRfaG9jX3Rlc3RzKSkKKyAgaWYgKGludGVybmFsX3NraXBfZW52aXJvbm1lbnRf
YW5kX2FkX2hvY190ZXN0cykKICAgICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwogCiAgIC8vIFJl
Z2lzdGVycyB0d28gZ2xvYmFsIHRlc3QgZW52aXJvbm1lbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fbGluLnR4dCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xp
bi50eHQKaW5kZXggZWM2MDQzN2FjYWE3NjQwZGZiZjNkYjI4M2NmMWQxNTAzNGMwNjIyZS4uMjIy
M2Q1NjBlMmQ5YzJhZTQ3MGI2YTJjY2VjNGRjYmUxOGZhNTc2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fbGluLnR4dAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRl
bl9saW4udHh0CkBAIC01LDkgKzUsOSBAQCBWYWx1ZSBvZjogZmFsc2UKICAgQWN0dWFsOiBmYWxz
ZQogRXhwZWN0ZWQ6IHRydWUKIGd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1
ZSBvZjogMwotRXhwZWN0ZWQ6IDIKLRtbMDszMm1bPT09PT09PT09PV0gG1ttUnVubmluZyA2MCB0
ZXN0cyBmcm9tIDI1IHRlc3QgY2FzZXMuCisgICAgICBFeHBlY3RlZDogMgorVG8gYmUgZXF1YWwg
dG86IDMKKxtbMDszMm1bPT09PT09PT09PV0gG1ttUnVubmluZyA2NiB0ZXN0cyBmcm9tIDI5IHRl
c3QgY2FzZXMuCiAbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbUdsb2JhbCB0ZXN0IGVudmlyb25tZW50
IHNldC11cC4KIEZvb0Vudmlyb25tZW50OjpTZXRVcCgpIGNhbGxlZC4KIEJhckVudmlyb25tZW50
OjpTZXRVcCgpIGNhbGxlZC4KQEAgLTMxLDIwICszMSw0NCBAQCBCYXJFbnZpcm9ubWVudDo6U2V0
VXAoKSBjYWxsZWQuCiAbWzA7MzJtWyAgICAgICBPSyBdIBtbbVBhc3NpbmdUZXN0LlBhc3NpbmdU
ZXN0MQogG1swOzMybVsgUlVOICAgICAgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDIKIBtb
MDszMm1bICAgICAgIE9LIF0gG1ttUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCisbWzA7MzJtWy0t
LS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBOb25mYXRhbEZhaWx1cmVUZXN0CisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbU5vbmZhdGFsRmFpbHVyZVRlc3QuRXNjYXBlc1N0cmluZ09wZXJhbmRzCitn
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQorICAgICAgRXhwZWN0ZWQ6IGtHb2xkZW5T
dHJpbmcKKyAgICAgIFdoaWNoIGlzOiAiXCJMaW5lIgorVG8gYmUgZXF1YWwgdG86IGFjdHVhbAor
ICAgICAgV2hpY2ggaXM6ICJhY3R1YWwgXCJzdHJpbmdcIiIKK2d0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBGYWlsdXJlCisgICAgICBFeHBlY3RlZDogZ29sZGVuCisgICAgICBXaGljaCBpczogIlwi
TGluZSIKK1RvIGJlIGVxdWFsIHRvOiBhY3R1YWwKKyAgICAgIFdoaWNoIGlzOiAiYWN0dWFsIFwi
c3RyaW5nXCIiCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbmZhdGFsRmFpbHVyZVRlc3QuRXNj
YXBlc1N0cmluZ09wZXJhbmRzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbU5vbmZhdGFsRmFpbHVy
ZVRlc3QuRGlmZkZvckxvbmdTdHJpbmdzCitndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVy
ZQorICAgICAgRXhwZWN0ZWQ6IGdvbGRlbl9zdHIKKyAgICAgIFdoaWNoIGlzOiAiXCJMaW5lXDAg
MVwiXG5MaW5lIDIiCitUbyBiZSBlcXVhbCB0bzogIkxpbmUgMiIKK1dpdGggZGlmZjoKK0BAIC0x
LDIgQEAKKy1cIkxpbmVcMCAxXCIKKyBMaW5lIDIKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21O
b25mYXRhbEZhaWx1cmVUZXN0LkRpZmZGb3JMb25nU3RyaW5ncwogG1swOzMybVstLS0tLS0tLS0t
XSAbW20zIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdAogG1swOzMybVsgUlVOICAgICAgXSAb
W21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQogKGV4cGVjdGluZyBh
IGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQogZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZh
aWx1cmUKLVZhbHVlIG9mOiB4Ci0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKKyAgICAgIEV4cGVj
dGVkOiAxCitUbyBiZSBlcXVhbCB0bzogeAorICAgICAgV2hpY2ggaXM6IDIKIBtbMDszMW1bICBG
QUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKIBtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3Rl
ZFN1YnJvdXRpbmUKIChleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKIGd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogeAotICBBY3R1YWw6IDIK
LUV4cGVjdGVkOiAxCisgICAgICBFeHBlY3RlZDogMQorVG8gYmUgZXF1YWwgdG86IHgKKyAgICAg
IFdoaWNoIGlzOiAyCiAbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0
YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCiAbWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFs
RmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCiAoZXhwZWN0aW5nIGEgZmFp
bHVyZSBvbiBmYWxzZSkKQEAgLTgzLDM5ICsxMDcsMzkgQEAgVGhpcyBmYWlsdXJlIGlzIGV4cGVj
dGVkLCBhbmQgc2hvdWxkbid0IGhhdmUgYSB0cmFjZS4KIBtbMDszMm1bIFJVTiAgICAgIF0gG1tt
U0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAogKGV4cGVjdGVkIHRvIGZhaWwpCiBndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAxCi1FeHBl
Y3RlZDogMgorICAgICAgRXhwZWN0ZWQ6IDIKK1RvIGJlIGVxdWFsIHRvOiBuCisgICAgICBXaGlj
aCBpczogMQogR29vZ2xlIFRlc3QgdHJhY2U6CiBndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogaSA9
IDEKIGd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogbgotICBBY3R1
YWw6IDIKLUV4cGVjdGVkOiAxCisgICAgICBFeHBlY3RlZDogMQorVG8gYmUgZXF1YWwgdG86IG4K
KyAgICAgIFdoaWNoIGlzOiAyCiBHb29nbGUgVGVzdCB0cmFjZToKIGd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBpID0gMgogG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lldv
cmtzSW5Mb29wCiAbWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJ
blN1YnJvdXRpbmUKIChleHBlY3RlZCB0byBmYWlsKQogZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IEZhaWx1cmUKLVZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMQotRXhwZWN0ZWQ6IDIKKyAgICAgIEV4
cGVjdGVkOiAyCitUbyBiZSBlcXVhbCB0bzogbgorICAgICAgV2hpY2ggaXM6IDEKIEdvb2dsZSBU
ZXN0IHRyYWNlOgogZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4gPSAxCiBndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDog
MQorICAgICAgRXhwZWN0ZWQ6IDEKK1RvIGJlIGVxdWFsIHRvOiBuCisgICAgICBXaGljaCBpczog
MgogR29vZ2xlIFRlc3QgdHJhY2U6CiBndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogbiA9IDIKIBtb
MDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGluZQog
G1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlTmVzdGVkCiAoZXhw
ZWN0ZWQgdG8gZmFpbCkKIGd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBv
ZjogbgotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCisgICAgICBFeHBlY3RlZDogMQorVG8gYmUg
ZXF1YWwgdG86IG4KKyAgICAgIFdoaWNoIGlzOiAyCiBHb29nbGUgVGVzdCB0cmFjZToKIGd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBuID0gMgogZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IApAQCAt
MjM1LDYgKzI1OSwxMiBAQCBndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQogRmFpbGVk
CiBFeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgogG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAor
G1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBBZGRGYWlsdXJlQXRUZXN0CisbWzA7
MzJtWyBSVU4gICAgICBdIBtbbUFkZEZhaWx1cmVBdFRlc3QuTWVzc2FnZUNvbnRhaW5zU3BlY2lm
aWVkRmlsZUFuZExpbmVOdW1iZXIKK2Zvby5jYzo0MjogRmFpbHVyZQorRmFpbGVkCitFeHBlY3Rl
ZCBmYWlsdXJlIGluIGZvby5jYworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21BZGRGYWlsdXJlQXRU
ZXN0Lk1lc3NhZ2VDb250YWluc1NwZWNpZmllZEZpbGVBbmRMaW5lTnVtYmVyCiAbWzA7MzJtWy0t
LS0tLS0tLS1dIBtbbTQgdGVzdHMgZnJvbSBNaXhlZFVwVGVzdENhc2VUZXN0CiAbWzA7MzJtWyBS
VU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZv
bwogG1swOzMybVsgICAgICAgT0sgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LkZpcnN0VGVzdEZy
b21OYW1lc3BhY2VGb28KQEAgLTQwNywzMyArNDM3LDMzIEBAIEV4cGVjdGVkOiAxIGZhdGFsIGZh
aWx1cmUKIBtbMDszMm1bICAgICAgIE9LIF0gG1ttVHlwZWRUZXN0LzAuU3VjY2VzcwogG1swOzMy
bVsgUlVOICAgICAgXSAbW21UeXBlZFRlc3QvMC5GYWlsdXJlCiBndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogMAotRXhwZWN0
ZWQ6IDEKKyAgICAgIEV4cGVjdGVkOiAxCitUbyBiZSBlcXVhbCB0bzogVHlwZVBhcmFtKCkKKyAg
ICAgIFdoaWNoIGlzOiAwCiBFeHBlY3RlZCBmYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtb
bVR5cGVkVGVzdC8wLkZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVHlwZWRUZXN0LzAu
RmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gaW50CiAbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIg
dGVzdHMgZnJvbSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2ln
bmVkIGNoYXIKIBtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLlN1
Y2Nlc3MKIBtbMDszMm1bICAgICAgIE9LIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLlN1Y2Nl
c3MKIBtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUK
IGd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogVHlwZVBhcmFtKCkK
LSAgQWN0dWFsOiBcMAotRXhwZWN0ZWQ6IDFVCi1XaGljaCBpczogMQorICAgICAgRXhwZWN0ZWQ6
IDFVCisgICAgICBXaGljaCBpczogMQorVG8gYmUgZXF1YWwgdG86IFR5cGVQYXJhbSgpCisgICAg
ICBXaGljaCBpczogJ1wwJwogRXhwZWN0ZWQgZmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21V
bnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQg
Y2hhcgogG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVW5zaWduZWQvVHlwZWRU
ZXN0UC8xLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKIBtbMDszMm1bIFJVTiAgICAg
IF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1Y2Nlc3MKIBtbMDszMm1bICAgICAgIE9LIF0g
G1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1Y2Nlc3MKIBtbMDszMm1bIFJVTiAgICAgIF0gG1tt
VW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUKIGd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBG
YWlsdXJlCi1WYWx1ZSBvZjogVHlwZVBhcmFtKCkKLSAgQWN0dWFsOiAwCi1FeHBlY3RlZDogMVUK
LVdoaWNoIGlzOiAxCisgICAgICBFeHBlY3RlZDogMVUKKyAgICAgIFdoaWNoIGlzOiAxCitUbyBi
ZSBlcXVhbCB0bzogVHlwZVBhcmFtKCkKKyAgICAgIFdoaWNoIGlzOiAwCiBFeHBlY3RlZCBmYWls
dXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJl
CisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlLCB3
aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKIBtbMDszMm1bLS0tLS0tLS0tLV0gG1ttNCB0
ZXN0cyBmcm9tIEV4cGVjdEZhaWx1cmVUZXN0CiAbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVj
dEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQogKGV4cGVjdGluZyAxIGZhaWx1cmUpCkBA
IC01NjQsNiArNTk0LDIzIEBAIGd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCiBGYWls
ZWQKIEV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgogG1swOzMxbVsgIEZBSUxFRCAgXSAbW21T
Y29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3QuSW50ZXJjZXB0T25seUN1cnJlbnRU
aHJlYWQKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gUHJpbnRpbmdGYWlsaW5n
UGFyYW1zL0ZhaWxpbmdQYXJhbVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttUHJpbnRpbmdG
YWlsaW5nUGFyYW1zL0ZhaWxpbmdQYXJhbVRlc3QuRmFpbHMvMAorZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IEZhaWx1cmUKKyAgICAgIEV4cGVjdGVkOiAxCitUbyBiZSBlcXVhbCB0bzogR2V0UGFy
YW0oKQorICAgICAgV2hpY2ggaXM6IDIKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttUHJpbnRpbmdG
YWlsaW5nUGFyYW1zL0ZhaWxpbmdQYXJhbVRlc3QuRmFpbHMvMCwgd2hlcmUgR2V0UGFyYW0oKSA9
IDIKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFByaW50aW5nU3RyaW5ncy9Q
YXJhbVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttUHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVz
dC5TdWNjZXNzL2EKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttUHJpbnRpbmdTdHJpbmdzL1BhcmFt
VGVzdC5TdWNjZXNzL2EKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttUHJpbnRpbmdTdHJpbmdzL1Bh
cmFtVGVzdC5GYWlsdXJlL2EKK2d0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCisgICAg
ICBFeHBlY3RlZDogImIiCitUbyBiZSBlcXVhbCB0bzogR2V0UGFyYW0oKQorICAgICAgV2hpY2gg
aXM6ICJhIgorRXhwZWN0ZWQgZmFpbHVyZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21QcmludGlu
Z1N0cmluZ3MvUGFyYW1UZXN0LkZhaWx1cmUvYSwgd2hlcmUgR2V0UGFyYW0oKSA9ICJhIgogG1sw
OzMybVstLS0tLS0tLS0tXSAbW21HbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KIEJh
ckVudmlyb25tZW50OjpUZWFyRG93bigpIGNhbGxlZC4KIGd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBGYWlsdXJlCkBAIC01NzMsOSArNjIwLDExIEBAIEZvb0Vudmlyb25tZW50OjpUZWFyRG93bigp
IGNhbGxlZC4KIGd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCiBGYWlsZWQKIEV4cGVj
dGVkIGZhdGFsIGZhaWx1cmUuCi0bWzA7MzJtWz09PT09PT09PT1dIBtbbTYwIHRlc3RzIGZyb20g
MjUgdGVzdCBjYXNlcyByYW4uCi0bWzA7MzJtWyAgUEFTU0VEICBdIBtbbTIxIHRlc3RzLgotG1sw
OzMxbVsgIEZBSUxFRCAgXSAbW20zOSB0ZXN0cywgbGlzdGVkIGJlbG93OgorG1swOzMybVs9PT09
PT09PT09XSAbW202NiB0ZXN0cyBmcm9tIDI5IHRlc3QgY2FzZXMgcmFuLgorG1swOzMybVsgIFBB
U1NFRCAgXSAbW20yMiB0ZXN0cy4KKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttNDQgdGVzdHMsIGxp
c3RlZCBiZWxvdzoKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uZmF0YWxGYWlsdXJlVGVzdC5F
c2NhcGVzU3RyaW5nT3BlcmFuZHMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uZmF0YWxGYWls
dXJlVGVzdC5EaWZmRm9yTG9uZ1N0cmluZ3MKIBtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxG
YWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKIBtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKIBtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJv
dXRpbmUKQEAgLTU5MCw2ICs2MzksNyBAQCBFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgogG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFp
bHVyZUluQ29uc3RydWN0b3IKIBtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uRmF0YWxGYWlsdXJl
SW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKIBtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxG
YWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
QWRkRmFpbHVyZUF0VGVzdC5NZXNzYWdlQ29udGFpbnNTcGVjaWZpZWRGaWxlQW5kTGluZU51bWJl
cgogG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRG
YWlsCiAbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3Vs
ZEZhaWxUb28KIBtbMDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVU
ZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKQEAgLTYxNSw4
ICs2NjUsMTAgQEAgRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KIBtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKIBtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3ROb25G
YXRhbEZhaWx1cmUKIBtbMDszMW1bICBGQUlMRUQgIF0gG1ttU2NvcGVkRmFrZVRlc3RQYXJ0UmVz
dWx0UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCisbWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbVByaW50aW5nRmFpbGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1UZXN0LkZhaWxzLzAs
IHdoZXJlIEdldFBhcmFtKCkgPSAyCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVByaW50aW5nU3Ry
aW5ncy9QYXJhbVRlc3QuRmFpbHVyZS9hLCB3aGVyZSBHZXRQYXJhbSgpID0gImEiCiAKLTM5IEZB
SUxFRCBURVNUUworNDQgRkFJTEVEIFRFU1RTCiAbWzA7MzNtICBZT1UgSEFWRSAxIERJU0FCTEVE
IFRFU1QKIAogG1ttTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gRmF0YWxGYWlsdXJlVGVzdC4q
OkxvZ2dpbmdUZXN0LioKQEAgLTYyNiwxNiArNjc4LDE2IEBAIEV4cGVjdGVkIGZhdGFsIGZhaWx1
cmUuCiBbIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRp
bmUKIChleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKIGd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogeAotICBBY3R1YWw6IDIKLUV4cGVjdGVk
OiAxCisgICAgICBFeHBlY3RlZDogMQorVG8gYmUgZXF1YWwgdG86IHgKKyAgICAgIFdoaWNoIGlz
OiAyCiBbICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRp
bmUgKD8gbXMpCiBbIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5l
c3RlZFN1YnJvdXRpbmUKIChleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkK
IGd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogeAotICBBY3R1YWw6
IDIKLUV4cGVjdGVkOiAxCisgICAgICBFeHBlY3RlZDogMQorVG8gYmUgZXF1YWwgdG86IHgKKyAg
ICAgIFdoaWNoIGlzOiAyCiBbICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1
cmVJbk5lc3RlZFN1YnJvdXRpbmUgKD8gbXMpCiBbIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVz
dC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKIChleHBlY3RpbmcgYSBmYWlsdXJlIG9uIGZh
bHNlKQpAQCAtNjcwLDggKzcyMiw2IEBAIEV4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6
IDMgdnMgNgogWyAgRkFJTEVEICBdIExvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRB
c3NlcnRpb25zCiAKICA0IEZBSUxFRCBURVNUUwotICBZT1UgSEFWRSAxIERJU0FCTEVEIFRFU1QK
LQogTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gKkRJU0FCTEVEXyoKIFs9PT09PT09PT09XSBS
dW5uaW5nIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlLgogWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0
IGVudmlyb25tZW50IHNldC11cC4KQEAgLTY4Miw3ICs3MzIsNyBAQCBOb3RlOiBHb29nbGUgVGVz
dCBmaWx0ZXIgPSAqRElTQUJMRURfKgogWz09PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBj
YXNlIHJhbi4KIFsgIFBBU1NFRCAgXSAxIHRlc3QuCiBOb3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIg
PSBQYXNzaW5nVGVzdC4qCi1Ob3RlOiBUaGlzIGlzIHRlc3Qgc2hhcmQgMSBvZiAyLgorTm90ZTog
VGhpcyBpcyB0ZXN0IHNoYXJkIDIgb2YgMi4KIFs9PT09PT09PT09XSBSdW5uaW5nIDEgdGVzdCBm
cm9tIDEgdGVzdCBjYXNlLgogWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNl
dC11cC4KIFstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBQYXNzaW5nVGVzdApAQCAtNjkxLDYgKzc0
MSwzIEBAIE5vdGU6IFRoaXMgaXMgdGVzdCBzaGFyZCAxIG9mIDIuCiBbLS0tLS0tLS0tLV0gR2xv
YmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCiBbPT09PT09PT09PV0gMSB0ZXN0IGZyb20g
MSB0ZXN0IGNhc2UgcmFuLgogWyAgUEFTU0VEICBdIDEgdGVzdC4KLQotICBZT1UgSEFWRSAxIERJ
U0FCTEVEIFRFU1QKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fd2luLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX3dpbi50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDMxM2MzYWFmYzMxZjVmMTAwNWM3NzQyODNlMDBiZGIwOWRlODFmNjkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fd2luLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDYwNSArMCwwIEBACi1UaGUgbm9uLXRlc3QgcGFydCBvZiB0aGUgY29kZSBp
cyBleHBlY3RlZCB0byBoYXZlIDIgZmFpbHVyZXMuCi0KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogVmFsdWUgb2Y6IGZhbHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4cGVjdGVkOiB0cnVl
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiAzCi1FeHBlY3RlZDog
MgotWz09PT09PT09PT1dIFJ1bm5pbmcgNjEgdGVzdHMgZnJvbSAyNyB0ZXN0IGNhc2VzLgotWy0t
LS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KLUZvb0Vudmlyb25tZW50
OjpTZXRVcCgpIGNhbGxlZC4KLUJhckVudmlyb25tZW50OjpTZXRVcCgpIGNhbGxlZC4KLVstLS0t
LS0tLS0tXSAxIHRlc3QgZnJvbSBBRGVhdGhUZXN0Ci1bIFJVTiAgICAgIF0gQURlYXRoVGVzdC5T
aG91bGRSdW5GaXJzdAotWyAgICAgICBPSyBdIEFEZWF0aFRlc3QuU2hvdWxkUnVuRmlyc3QKLVst
LS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBBVHlwZWREZWF0aFRlc3QvMCwgd2hlcmUgVHlwZVBhcmFt
ID0gaW50Ci1bIFJVTiAgICAgIF0gQVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLVsg
ICAgICAgT0sgXSBBVHlwZWREZWF0aFRlc3QvMC5TaG91bGRSdW5GaXJzdAotWy0tLS0tLS0tLS1d
IDEgdGVzdCBmcm9tIEFUeXBlZERlYXRoVGVzdC8xLCB3aGVyZSBUeXBlUGFyYW0gPSBkb3VibGUK
LVsgUlVOICAgICAgXSBBVHlwZWREZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAotWyAgICAgICBP
SyBdIEFUeXBlZERlYXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0Ci1bLS0tLS0tLS0tLV0gMSB0ZXN0
IGZyb20gTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLVsg
UlVOICAgICAgXSBNeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLVsgICAg
ICAgT0sgXSBNeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLVstLS0tLS0t
LS0tXSAxIHRlc3QgZnJvbSBNeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEsIHdoZXJlIFR5cGVQYXJh
bSA9IGRvdWJsZQotWyBSVU4gICAgICBdIE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMS5TaG91bGRS
dW5GaXJzdAotWyAgICAgICBPSyBdIE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMS5TaG91bGRSdW5G
aXJzdAotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBQYXNzaW5nVGVzdAotWyBSVU4gICAgICBd
IFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MQotWyAgICAgICBPSyBdIFBhc3NpbmdUZXN0LlBhc3Np
bmdUZXN0MQotWyBSVU4gICAgICBdIFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgotWyAgICAgICBP
SyBdIFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgotWy0tLS0tLS0tLS1dIDMgdGVzdHMgZnJvbSBG
YXRhbEZhaWx1cmVUZXN0Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1
cmVJblN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAy
Ci1FeHBlY3RlZDogMQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJl
SW5TdWJyb3V0aW5lCi1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJ
bk5lc3RlZFN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUg
MSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IHgKLSAgQWN0dWFs
OiAyCi1FeHBlY3RlZDogMQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWls
dXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25m
YXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIG9uIGZhbHNlKQot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogZmFsc2UKLSAgQWN0dWFs
OiBmYWxzZQotRXhwZWN0ZWQ6IHRydWUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5v
bmZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExvZ2dp
bmdUZXN0Ci1bIFJVTiAgICAgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFz
c2VydGlvbnMKLShleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKQotaSA9PSAw
Ci1pID09IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6ICgzKSA+
PSAoYVtpXSksIGFjdHVhbDogMyB2cyA5Ci1pID09IDIKLWkgPT0gMwotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IGVycm9yOiBFeHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDYK
LVsgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9u
cwotWy0tLS0tLS0tLS1dIDUgdGVzdHMgZnJvbSBTQ09QRURfVFJBQ0VUZXN0Ci1bIFJVTiAgICAg
IF0gU0NPUEVEX1RSQUNFVGVzdC5PYmV5c1Njb3BlcwotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVj
dGVkLCBhbmQgc2hvdWxkbid0IGhhdmUgYSB0cmFjZS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgaGF2
ZSBhIHRyYWNlLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RXhwZWN0ZWQgdHJhY2UKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1U
aGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNlLgotWyAg
RkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMKLVsgUlVOICAgICAgXSBTQ09Q
RURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAxCi1FeHBlY3RlZDog
MgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogaSA9IDEKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAyCi1F
eHBlY3RlZDogMQotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
aSA9IDIKLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCi1bIFJVTiAg
ICAgIF0gU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGluZQotKGV4cGVjdGVkIHRvIGZh
aWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBuCi0gIEFjdHVh
bDogMQotRXhwZWN0ZWQ6IDIKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IG4gPSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBu
Ci0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IG4gPSAyCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5Xb3Jr
c0luU3Vicm91dGluZQotWyBSVU4gICAgICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQK
LShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1
ZSBvZjogbgotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBuID0gMgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IAot
WyAgRkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLVsgUlVOICAgICAgXSBT
Q09QRURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEuCi1Hb29nbGUgVGVzdCB0cmFjZToK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBBCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJy
b3I6IEZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4g
dHJhY2UgcG9pbnQgQSBhbmQgQi4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IEIKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBBCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogZXJyb3I6IEZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hv
dWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEMuCi1Hb29nbGUgVGVzdCB0cmFjZToK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBDCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJv
cjogRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0
cmFjZSBwb2ludCBBLCBCLCBhbmQgRC4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEQKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBCCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogQQotWyAgRkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVSZXBlYXRl
ZAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0
cnVjdG9yVGVzdAotWyBSVU4gICAgICBdIE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVj
dG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotKGV4cGVjdGluZyA1IGZhaWx1cmVzKQotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEs
IGluIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJy
b3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUg
dGVzdCBib2R5LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVj
dGVkIGZhaWx1cmUgIzQsIGluIFRlYXJEb3duLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVy
cm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzUsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0
b3IuCi1bICBGQUlMRUQgIF0gTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0
LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRmF0YWxGYWls
dXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlSW5G
aXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi0oZXhwZWN0aW5nIDIg
ZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0
ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4KLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVz
dCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0
cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9t
IE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0Ci1bIFJVTiAgICAgIF0gTm9uRmF0YWxGYWlsdXJl
SW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKLShleHBlY3RpbmcgNCBmYWlsdXJlcykKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBp
biBTZXRVcCgpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVj
dGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLgotZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIFRlYXJEb3duKCku
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVy
ZSAjNCwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAgXSBOb25GYXRhbEZh
aWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9t
IEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlSW5TZXRV
cFRlc3QuRmFpbHVyZUluU2V0VXAKLShleHBlY3RpbmcgMyBmYWlsdXJlcykKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRV
cCgpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZh
aWx1cmUgIzIsIGluIFRlYXJEb3duKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6
IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4K
LVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotWy0t
LS0tLS0tLS1dIDEgdGVzdCBmcm9tIEV4Y2VwdGlvbkluRml4dHVyZUN0b3JUZXN0Ci1bIFJVTiAg
ICAgIF0gRXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3QuRXhjZXB0aW9uSW5GaXh0dXJlQ3Rvcgot
KGV4cGVjdGluZyBhIGZhaWx1cmUgb24gdGhyb3duIGV4Y2VwdGlvbiBpbiB0aGUgdGVzdCBmaXh0
dXJlJ3MgY29uc3RydWN0b3IpCi11bmtub3duIGZpbGU6IGVycm9yOiBFeGNlcHRpb24gdGhyb3du
IHdpdGggY29kZSAweGMwMDAwMDA1IGluIHRoZSB0ZXN0IGZpeHR1cmUncyBjb25zdHJ1Y3Rvci4K
LVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBFeGNlcHRpb25JblNldFVwVGVzdAotWyBSVU4gICAg
ICBdIEV4Y2VwdGlvbkluU2V0VXBUZXN0LkV4Y2VwdGlvbkluU2V0VXAKLShleHBlY3RpbmcgMyBm
YWlsdXJlcykKLXVua25vd24gZmlsZTogZXJyb3I6IEV4Y2VwdGlvbiB0aHJvd24gd2l0aCBjb2Rl
IDB4YzAwMDAwMDUgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjog
RmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0
ZXN0IGZpeHR1cmUgZCd0b3IuCi1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5TZXRVcFRlc3QuRXhj
ZXB0aW9uSW5TZXRVcAotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBFeGNlcHRpb25JblRlc3RG
dW5jdGlvblRlc3QKLVsgUlVOICAgICAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QuU0VI
Ci0oZXhwZWN0aW5nIDMgZmFpbHVyZXMpCi11bmtub3duIGZpbGU6IGVycm9yOiBFeGNlcHRpb24g
dGhyb3duIHdpdGggY29kZSAweGMwMDAwMDA1IGluIHRoZSB0ZXN0IGJvZHkuCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVh
ckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3Rl
ZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIEV4
Y2VwdGlvbkluVGVzdEZ1bmN0aW9uVGVzdC5TRUgKLVsgUlVOICAgICAgXSBFeGNlcHRpb25JblRl
c3RGdW5jdGlvblRlc3QuQ3BwRXhjZXB0aW9uCi11bmtub3duIGZpbGU6IGVycm9yOiBFeGNlcHRp
b24gdGhyb3duIHdpdGggY29kZSAweGUwNmQ3MzYzIGluIHRoZSB0ZXN0IGJvZHkuCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4g
VGVhckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBl
Y3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBd
IEV4Y2VwdGlvbkluVGVzdEZ1bmN0aW9uVGVzdC5DcHBFeGNlcHRpb24KLVstLS0tLS0tLS0tXSAx
IHRlc3QgZnJvbSBFeGNlcHRpb25JblRlYXJEb3duVGVzdAotWyBSVU4gICAgICBdIEV4Y2VwdGlv
bkluVGVhckRvd25UZXN0LkV4Y2VwdGlvbkluVGVhckRvd24KLShleHBlY3RpbmcgMiBmYWlsdXJl
cykKLXVua25vd24gZmlsZTogZXJyb3I6IEV4Y2VwdGlvbiB0aHJvd24gd2l0aCBjb2RlIDB4ZTA2
ZDczNjMgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFp
bGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAg
RkFJTEVEICBdIEV4Y2VwdGlvbkluVGVhckRvd25UZXN0LkV4Y2VwdGlvbkluVGVhckRvd24KLVst
LS0tLS0tLS0tXSA0IHRlc3RzIGZyb20gTWl4ZWRVcFRlc3RDYXNlVGVzdAotWyBSVU4gICAgICBd
IE1peGVkVXBUZXN0Q2FzZVRlc3QuRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbwotWyAgICAgICBP
SyBdIE1peGVkVXBUZXN0Q2FzZVRlc3QuRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbwotWyBSVU4g
ICAgICBdIE1peGVkVXBUZXN0Q2FzZVRlc3QuU2Vjb25kVGVzdEZyb21OYW1lc3BhY2VGb28KLVsg
ICAgICAgT0sgXSBNaXhlZFVwVGVzdENhc2VUZXN0LlNlY29uZFRlc3RGcm9tTmFtZXNwYWNlRm9v
Ci1bIFJVTiAgICAgIF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbAotZ3Rlc3Qu
Y2M6IzogZXJyb3I6IEZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0
IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAgSG93ZXZlciwgaW4gdGVzdCBjYXNl
IE1peGVkVXBUZXN0Q2FzZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0IEZpcnN0VGVzdEZyb21OYW1l
c3BhY2VGb28gYW5kIHRlc3QgVGhpc1Nob3VsZEZhaWwKLXVzaW5nIHR3byBkaWZmZXJlbnQgdGVz
dCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKLXRoZSB0d28gY2xhc3NlcyBh
cmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlvbgotdW5pdHMgYW5kIGhh
dmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVuYW1lIG9uZQotb2YgdGhl
IGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0ZXN0IGNhc2VzLgotWyAg
RkFJTEVEICBdIE1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwKLVsgUlVOICAgICAg
XSBNaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCi1ndGVzdC5jYzojOiBlcnJv
cjogRmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBz
YW1lIHRlc3QgZml4dHVyZQotY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRl
c3RDYXNlVGVzdCwKLXlvdSBkZWZpbmVkIHRlc3QgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbyBh
bmQgdGVzdCBUaGlzU2hvdWxkRmFpbFRvbwotdXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1
cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBlbiBpZgotdGhlIHR3byBjbGFzc2VzIGFyZSBmcm9t
IGRpZmZlcmVudCBuYW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCi11bml0cyBhbmQgaGF2ZSB0aGUg
c2FtZSBuYW1lLiAgWW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25lCi1vZiB0aGUgY2xhc3Nl
cyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMuCi1bICBGQUlMRUQg
IF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbFRvbwotWy0tLS0tLS0tLS1dIDIg
dGVzdHMgZnJvbSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdAotWyBSVU4gICAg
ICBdIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRo
VGhpc05hbWVTaG91bGRGYWlsCi1bICAgICAgIE9LIF0gTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVU
ZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLVsgUlVOICAg
ICAgXSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0
aFRoaXNOYW1lU2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogZXJyb3I6IEZhaWxlZAotQWxsIHRlc3Rz
IGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNs
YXNzLiAgSG93ZXZlciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5h
bWVUZXN0LAoteW91IGRlZmluZWQgdGVzdCBUaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxk
RmFpbCBhbmQgdGVzdCBUaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotdXNpbmcg
dHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBlbiBpZgot
dGhlIHR3byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIG9yIHRyYW5zbGF0
aW9uCi11bml0cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAgWW91IHNob3VsZCBwcm9iYWJseSBy
ZW5hbWUgb25lCi1vZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50
IHRlc3QgY2FzZXMuCi1bICBGQUlMRUQgIF0gTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFt
ZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLVstLS0tLS0tLS0tXSAy
IHRlc3RzIGZyb20gVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlCi1bIFJVTiAg
ICAgIF0gVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RF
U1RfRgotWyAgICAgICBPSyBdIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5E
ZWZpbmVkVXNpbmdURVNUX0YKLVsgUlVOICAgICAgXSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2Ft
ZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwKLWd0ZXN0LmNjOiM6IGVy
cm9yOiBGYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhl
IHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcywgc28gbWl4aW5nIFRFU1RfRiBhbmQgVEVTVCBpbiB0
aGUgc2FtZSB0ZXN0IGNhc2UgaXMKLWlsbGVnYWwuICBJbiB0ZXN0IGNhc2UgVEVTVF9GX2JlZm9y
ZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLAotdGVzdCBEZWZpbmVkVXNpbmdURVNUX0YgaXMgZGVm
aW5lZCB1c2luZyBURVNUX0YgYnV0Ci10ZXN0IERlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWls
IGlzIGRlZmluZWQgdXNpbmcgVEVTVC4gIFlvdSBwcm9iYWJseQotd2FudCB0byBjaGFuZ2UgdGhl
IFRFU1QgdG8gVEVTVF9GIG9yIG1vdmUgaXQgdG8gYW5vdGhlciB0ZXN0Ci1jYXNlLgotWyAgRkFJ
TEVEICBdIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdU
RVNUQW5kU2hvdWxkRmFpbAotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBURVNUX2JlZm9yZV9U
RVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UKLVsgUlVOICAgICAgXSBURVNUX2JlZm9yZV9URVNUX0Zf
aW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVAotWyAgICAgICBPSyBdIFRFU1RfYmVm
b3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUCi1bIFJVTiAgICAg
IF0gVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1Rf
RkFuZFNob3VsZEZhaWwKLWd0ZXN0LmNjOiM6IGVycm9yOiBGYWlsZWQKLUFsbCB0ZXN0cyBpbiB0
aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcywg
c28gbWl4aW5nIFRFU1RfRiBhbmQgVEVTVCBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgaXMKLWlsbGVn
YWwuICBJbiB0ZXN0IGNhc2UgVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLAot
dGVzdCBEZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsIGlzIGRlZmluZWQgdXNpbmcgVEVT
VF9GIGJ1dAotdGVzdCBEZWZpbmVkVXNpbmdURVNUIGlzIGRlZmluZWQgdXNpbmcgVEVTVC4gIFlv
dSBwcm9iYWJseQotd2FudCB0byBjaGFuZ2UgdGhlIFRFU1QgdG8gVEVTVF9GIG9yIG1vdmUgaXQg
dG8gYW5vdGhlciB0ZXN0Ci1jYXNlLgotWyAgRkFJTEVEICBdIFRFU1RfYmVmb3JlX1RFU1RfRl9p
bl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsCi1bLS0tLS0t
LS0tLV0gOCB0ZXN0cyBmcm9tIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QKLVsgUlVOICAgICAg
XSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwot
WyAgICAgICBPSyBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFs
VmFyaWFibGVzCi1bIFJVTiAgICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZl
cmVuY2VMb2NhbFZhcmlhYmxlcwotWyAgICAgICBPSyBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRl
c3QuQ2FuUmVmZXJlbmNlTG9jYWxWYXJpYWJsZXMKLVsgUlVOICAgICAgXSBFeHBlY3ROb25mYXRh
bEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKLVsgICAg
ICAgT0sgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVO
b25mYXRhbEZhaWx1cmUKLVsgUlVOICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZh
aWxzV2hlblRoZXJlSXNOb05vbmZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1n
dGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFs
OiAwIGZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWls
c1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKLVsgUlVOICAgICAgXSBFeHBlY3ROb25mYXRh
bEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvTm9uZmF0YWxGYWlsdXJlcwotKGV4cGVj
dGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFs
IGZhaWx1cmUKLSAgQWN0dWFsOiAyIGZhaWx1cmVzCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
Tm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDEu
Ci0KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAot
RXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMi4KLQotWyAgRkFJTEVEICBdIEV4cGVjdE5vbmZh
dGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1cmVzCi1bIFJV
TiAgICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0
YWxGYWlsdXJlCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBl
Y3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQot
WyAgRkFJTEVEICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09u
ZUZhdGFsRmFpbHVyZQotWyBSVU4gICAgICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFp
bHNXaGVuU3RhdGVtZW50UmV0dXJucwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzoj
OiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1
cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0
ZW1lbnRSZXR1cm5zCi1bIFJVTiAgICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWls
c1doZW5TdGF0ZW1lbnRUaHJvd3MKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6Izog
ZXJyb3I6IEV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJl
cwotWyAgRkFJTEVEICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVt
ZW50VGhyb3dzCi1bLS0tLS0tLS0tLV0gOCB0ZXN0cyBmcm9tIEV4cGVjdEZhdGFsRmFpbHVyZVRl
c3QKLVsgUlVOICAgICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2Jh
bFZhcmlhYmxlcwotWyAgICAgICBPSyBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJl
bmNlR2xvYmFsVmFyaWFibGVzCi1bIFJVTiAgICAgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5D
YW5SZWZlcmVuY2VMb2NhbFN0YXRpY1ZhcmlhYmxlcwotWyAgICAgICBPSyBdIEV4cGVjdEZhdGFs
RmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxTdGF0aWNWYXJpYWJsZXMKLVsgUlVOICAgICAg
XSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1
cmUKLVsgICAgICAgT0sgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJl
SXNPbmVGYXRhbEZhaWx1cmUKLVsgUlVOICAgICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZh
aWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVz
dC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFp
bHVyZXMKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJl
SXNOb0ZhdGFsRmFpbHVyZQotWyBSVU4gICAgICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFp
bHNXaGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0
ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMiBm
YWlsdXJlcwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQK
LUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRh
bCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQg
IF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVy
ZXMKLVsgUlVOICAgICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNP
bmVOb25mYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJy
b3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwg
ZmFpbHVyZS4KLQotWyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVu
VGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotWyBSVU4gICAgICBdIEV4cGVjdEZhdGFsRmFpbHVy
ZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1n
dGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAg
ZmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0
YXRlbWVudFJldHVybnMKLVsgUlVOICAgICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxz
V2hlblN0YXRlbWVudFRocm93cwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBl
cnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsg
IEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93
cwotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBUeXBlZFRlc3QvMCwgd2hlcmUgVHlwZVBhcmFt
ID0gaW50Ci1bIFJVTiAgICAgIF0gVHlwZWRUZXN0LzAuU3VjY2VzcwotWyAgICAgICBPSyBdIFR5
cGVkVGVzdC8wLlN1Y2Nlc3MKLVsgUlVOICAgICAgXSBUeXBlZFRlc3QvMC5GYWlsdXJlCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBUeXBlUGFyYW0oKQotICBBY3R1
YWw6IDAKLUV4cGVjdGVkOiAxCi1FeHBlY3RlZCBmYWlsdXJlCi1bICBGQUlMRUQgIF0gVHlwZWRU
ZXN0LzAuRmFpbHVyZQotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBVbnNpZ25lZC9UeXBlZFRl
c3RQLzAsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKLVsgUlVOICAgICAgXSBVbnNp
Z25lZC9UeXBlZFRlc3RQLzAuU3VjY2VzcwotWyAgICAgICBPSyBdIFVuc2lnbmVkL1R5cGVkVGVz
dFAvMC5TdWNjZXNzCi1bIFJVTiAgICAgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0g
IEFjdHVhbDogXDAKLUV4cGVjdGVkOiAxVQotV2hpY2ggaXM6IDEKLUV4cGVjdGVkIGZhaWx1cmUK
LVsgIEZBSUxFRCAgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZQotWy0tLS0tLS0tLS1d
IDIgdGVzdHMgZnJvbSBVbnNpZ25lZC9UeXBlZFRlc3RQLzEsIHdoZXJlIFR5cGVQYXJhbSA9IHVu
c2lnbmVkIGludAotWyBSVU4gICAgICBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNzCi1b
ICAgICAgIE9LIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1Y2Nlc3MKLVsgUlVOICAgICAgXSBV
bnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVy
cm9yOiBWYWx1ZSBvZjogVHlwZVBhcmFtKCkKLSAgQWN0dWFsOiAwCi1FeHBlY3RlZDogMVUKLVdo
aWNoIGlzOiAxCi1FeHBlY3RlZCBmYWlsdXJlCi1bICBGQUlMRUQgIF0gVW5zaWduZWQvVHlwZWRU
ZXN0UC8xLkZhaWx1cmUKLVstLS0tLS0tLS0tXSA0IHRlc3RzIGZyb20gRXhwZWN0RmFpbHVyZVRl
c3QKLVsgUlVOICAgICAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLShl
eHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFs
IGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1T
dWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhw
ZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
LgotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDog
MSBmYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBl
Y3RlZC4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJl
OgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQgIF0gRXhwZWN0
RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCi1bIFJVTiAgICAgIF0gRXhwZWN0RmFpbHVy
ZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0
LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2NlZWRlZAotCi0oZXhwZWN0aW5n
IDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFp
bHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToK
LUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotKGV4cGVjdGluZyAxIGZhaWx1cmUp
Ci1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUgY29udGFp
bmluZyAiU29tZSBvdGhlciBub24tZmF0YWwgZmFpbHVyZS4iCi0gIEFjdHVhbDoKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9u
LWZhdGFsIGZhaWx1cmUuCi0KLVsgIEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RO
b25GYXRhbEZhaWx1cmUKLVsgUlVOICAgICAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRh
bEZhaWx1cmVPbkFsbFRocmVhZHMKLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6Izog
ZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1TdWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUp
Ci1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4
cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0
LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUg
b3RoZXIgZmF0YWwgZmFpbHVyZSBleHBlY3RlZC4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJl
LgotCi1bICBGQUlMRUQgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlT25B
bGxUaHJlYWRzCi1bIFJVTiAgICAgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxG
YWlsdXJlT25BbGxUaHJlYWRzCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVy
cm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2NlZWRlZAotCi0oZXhwZWN0aW5nIDEgZmFpbHVy
ZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBB
Y3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAot
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5j
YzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29t
ZSBvdGhlciBub24tZmF0YWwgZmFpbHVyZS4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZh
aWx1cmUuCi0KLVsgIEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZh
aWx1cmVPbkFsbFRocmVhZHMKLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0
ZWFyLWRvd24KLUJhckVudmlyb25tZW50OjpUZWFyRG93bigpIGNhbGxlZC4KLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4K
LUZvb0Vudmlyb25tZW50OjpUZWFyRG93bigpIGNhbGxlZC4KLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotWz09PT09PT09PT1d
IDYxIHRlc3RzIGZyb20gMjcgdGVzdCBjYXNlcyByYW4uCi1bICBQQVNTRUQgIF0gMjEgdGVzdHMu
Ci1bICBGQUlMRUQgIF0gNDAgdGVzdHMsIGxpc3RlZCBiZWxvdzoKLVsgIEZBSUxFRCAgXSBGYXRh
bEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotWyAgRkFJTEVEICBdIEZhdGFs
RmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0g
RmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLVsgIEZBSUxFRCAg
XSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotWyAgRkFJTEVE
ICBdIFNDT1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMKLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJB
Q0VUZXN0LldvcmtzSW5Mb29wCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0lu
U3Vicm91dGluZQotWyAgRkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLVsg
IEZBSUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKLVsgIEZBSUxFRCAgXSBO
b25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0
b3IKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFp
bHVyZUluQ29uc3RydWN0b3IKLVsgIEZBSUxFRCAgXSBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVz
dC5GYWlsdXJlSW5TZXRVcAotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZh
aWx1cmVJblNldFVwCi1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3QuRXhj
ZXB0aW9uSW5GaXh0dXJlQ3RvcgotWyAgRkFJTEVEICBdIEV4Y2VwdGlvbkluU2V0VXBUZXN0LkV4
Y2VwdGlvbkluU2V0VXAKLVsgIEZBSUxFRCAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3Qu
U0VICi1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0LkNwcEV4Y2VwdGlv
bgotWyAgRkFJTEVEICBdIEV4Y2VwdGlvbkluVGVhckRvd25UZXN0LkV4Y2VwdGlvbkluVGVhckRv
d24KLVsgIEZBSUxFRCAgXSBNaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsCi1bICBG
QUlMRUQgIF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbFRvbwotWyAgRkFJTEVE
ICBdIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRo
VGhpc05hbWVTaG91bGRGYWlsCi1bICBGQUlMRUQgIF0gVEVTVF9GX2JlZm9yZV9URVNUX2luX3Nh
bWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsCi1bICBGQUlMRUQgIF0g
VEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFu
ZFNob3VsZEZhaWwKLVsgIEZBSUxFRCAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxz
V2hlblRoZXJlSXNOb05vbmZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVjdE5vbmZhdGFs
RmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1cmVzCi1bICBGQUlM
RUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxG
YWlsdXJlCi1bICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5T
dGF0ZW1lbnRSZXR1cm5zCi1bICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5G
YWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LkZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVjdEZh
dGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzCi1bICBGQUlM
RUQgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxG
YWlsdXJlCi1bICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0
ZW1lbnRSZXR1cm5zCi1bICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1do
ZW5TdGF0ZW1lbnRUaHJvd3MKLVsgIEZBSUxFRCAgXSBUeXBlZFRlc3QvMC5GYWlsdXJlLCB3aGVy
ZSBUeXBlUGFyYW0gPSBpbnQKLVsgIEZBSUxFRCAgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFp
bHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgotWyAgRkFJTEVEICBdIFVuc2ln
bmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQK
LVsgIEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLVsgIEZB
SUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLVsgIEZBSUxF
RCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLVsg
IEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRo
cmVhZHMKLQotNDAgRkFJTEVEIFRFU1RTCi0gIFlPVSBIQVZFIDEgRElTQUJMRUQgVEVTVAotCi1O
b3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSBGYXRhbEZhaWx1cmVUZXN0Lio6TG9nZ2luZ1Rlc3Qu
KgotWz09PT09PT09PT1dIFJ1bm5pbmcgNCB0ZXN0cyBmcm9tIDIgdGVzdCBjYXNlcy4KLVstLS0t
LS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCi1bLS0tLS0tLS0tLV0gMyB0
ZXN0cyBmcm9tIEZhdGFsRmFpbHVyZVRlc3QKLVsgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0
LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNo
b3VsZCBiZSAxKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogeAot
ICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5G
YXRhbEZhaWx1cmVJblN1YnJvdXRpbmUgKD8gbXMpCi1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJl
VGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJl
IHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFs
dWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotWyAgRkFJTEVEICBdIEZhdGFsRmFp
bHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lICg/IG1zKQotWyBSVU4gICAg
ICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0
aW5nIGEgZmFpbHVyZSBvbiBmYWxzZSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjog
VmFsdWUgb2Y6IGZhbHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4cGVjdGVkOiB0cnVlCi1bICBGQUlM
RUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUgKD8gbXMp
Ci1bLS0tLS0tLS0tLV0gMyB0ZXN0cyBmcm9tIEZhdGFsRmFpbHVyZVRlc3QgKD8gbXMgdG90YWwp
Ci0KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBMb2dnaW5nVGVzdAotWyBSVU4gICAgICBdIExv
Z2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCi0oZXhwZWN0aW5nIDIg
ZmFpbHVyZXMgb24gKDMpID49IChhW2ldKSkKLWkgPT0gMAotaSA9PSAxCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMg
OQotaSA9PSAyCi1pID09IDMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRXhwZWN0
ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA2Ci1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rl
c3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMgKD8gbXMpCi1bLS0tLS0tLS0tLV0g
MSB0ZXN0IGZyb20gTG9nZ2luZ1Rlc3QgKD8gbXMgdG90YWwpCi0KLVstLS0tLS0tLS0tXSBHbG9i
YWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KLVs9PT09PT09PT09XSA0IHRlc3RzIGZyb20g
MiB0ZXN0IGNhc2VzIHJhbi4gKD8gbXMgdG90YWwpCi1bICBQQVNTRUQgIF0gMCB0ZXN0cy4KLVsg
IEZBSUxFRCAgXSA0IHRlc3RzLCBsaXN0ZWQgYmVsb3c6Ci1bICBGQUlMRUQgIF0gRmF0YWxGYWls
dXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1
cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQotWyAgRkFJTEVEICBdIEZhdGFs
RmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gTG9n
Z2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLQotIDQgRkFJTEVEIFRF
U1RTCi0gIFlPVSBIQVZFIDEgRElTQUJMRUQgVEVTVAotCi1Ob3RlOiBHb29nbGUgVGVzdCBmaWx0
ZXIgPSAqRElTQUJMRURfKgotWz09PT09PT09PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20gMSB0ZXN0
IGNhc2UuCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotWy0t
LS0tLS0tLS1dIDEgdGVzdCBmcm9tIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdAotWyBSVU4gICAg
ICBdIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJsZWRUZXN0
c0ZsYWdTdXBwcmVzc2VzV2FybmluZwotWyAgICAgICBPSyBdIERpc2FibGVkVGVzdHNXYXJuaW5n
VGVzdC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2FybmluZwot
Wy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgotWz09PT09PT09
PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlIHJhbi4KLVsgIFBBU1NFRCAgXSAxIHRlc3QuCi1O
b3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSBQYXNzaW5nVGVzdC4qCi1Ob3RlOiBUaGlzIGlzIHRl
c3Qgc2hhcmQgMSBvZiAyLgotWz09PT09PT09PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20gMSB0ZXN0
IGNhc2UuCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotWy0t
LS0tLS0tLS1dIDEgdGVzdCBmcm9tIFBhc3NpbmdUZXN0Ci1bIFJVTiAgICAgIF0gUGFzc2luZ1Rl
c3QuUGFzc2luZ1Rlc3QyCi1bICAgICAgIE9LIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi1b
LS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCi1bPT09PT09PT09
PV0gMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UgcmFuLgotWyAgUEFTU0VEICBdIDEgdGVzdC4KLQot
ICBZT1UgSEFWRSAxIERJU0FCTEVEIFRFU1QKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcmVkX2ltcGxfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZWRfaW1wbF91bml0dGVzdC5jYwppbmRleCBlN2VlNTRi
NTZkODZiOWVhNTRiNzE2MTI1ODY5YWEyODdkMTI2YmU3Li5hODRlZmY4NjBhNGQ3ZGM4Yjg1NjNm
OGUxZTdmNDc5ZTI5MmVhMzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X3ByZWRfaW1wbF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3ByZWRfaW1wbF91bml0dGVzdC5jYwpAQCAtMjcsNyArMjcsNyBAQAog
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0vLyBUaGlzIGZpbGUgaXMgQVVUT01B
VElDQUxMWSBHRU5FUkFURUQgb24gMTAvMDIvMjAwOCBieSBjb21tYW5kCisvLyBUaGlzIGZpbGUg
aXMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQgb24gMTAvMzEvMjAxMSBieSBjb21tYW5kCiAvLyAn
Z2VuX2d0ZXN0X3ByZWRfaW1wbC5weSA1Jy4gIERPIE5PVCBFRElUIEJZIEhBTkQhCiAKIC8vIFJl
Z3Jlc3Npb24gdGVzdCBmb3IgZ3Rlc3RfcHJlZF9pbXBsLmgKQEAgLTQ5LDggKzQ5LDggQEAKIAog
I2luY2x1ZGUgPGlvc3RyZWFtPgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC1zcGkuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LXNwaS5oIgogCiAvLyBBIHVzZXItZGVmaW5lZCBkYXRhIHR5cGUuCiBzdHJ1
Y3QgQm9vbCB7CkBAIC0xMDMsMTEgKzEwMywxMCBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQg
UHJlZEZvcm1hdEZ1bmN0aW9uMShjb25zdCBjaGFyKiBlMSwKICAgaWYgKFByZWRGdW5jdGlvbjEo
djEpKQogICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgdGVzdGlu
Zzo6TWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBlMQorICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9u
RmFpbHVyZSgpCisgICAgICA8PCBlMQogICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBiZSBwb3Np
dGl2ZSwgYnV0IGV2YWx1YXRlcyB0byAiCiAgICAgICA8PCB2MSA8PCAiLiI7Ci0gIHJldHVybiB0
ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIC8vIEEgdW5hcnkgcHJlZGljYXRl
LWZvcm1hdHRlciBmdW5jdG9yLgpAQCAtNDk0LDExICs0OTMsMTAgQEAgdGVzdGluZzo6QXNzZXJ0
aW9uUmVzdWx0IFByZWRGb3JtYXRGdW5jdGlvbjIoY29uc3QgY2hhciogZTEsCiAgIGlmIChQcmVk
RnVuY3Rpb24yKHYxLCB2MikpCiAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3Mo
KTsKIAotICB0ZXN0aW5nOjpNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGUxIDw8ICIgKyAiIDw8IGUy
CisgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IGUxIDw8ICIg
KyAiIDw8IGUyCiAgICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlLCBidXQgZXZh
bHVhdGVzIHRvICIKICAgICAgIDw8IHYxICsgdjIgPDwgIi4iOwotICByZXR1cm4gdGVzdGluZzo6
QXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogCiAvLyBBIGJpbmFyeSBwcmVkaWNhdGUtZm9ybWF0
dGVyIGZ1bmN0b3IuCkBAIC05MjcsMTEgKzkyNSwxMCBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1
bHQgUHJlZEZvcm1hdEZ1bmN0aW9uMyhjb25zdCBjaGFyKiBlMSwKICAgaWYgKFByZWRGdW5jdGlv
bjModjEsIHYyLCB2MykpCiAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsK
IAotICB0ZXN0aW5nOjpNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGUxIDw8ICIgKyAiIDw8IGUyIDw8
ICIgKyAiIDw8IGUzCisgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAg
IDw8IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUzCiAgICAgICA8PCAiIGlzIGV4cGVj
dGVkIHRvIGJlIHBvc2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKICAgICAgIDw8IHYxICsgdjIg
KyB2MyA8PCAiLiI7Ci0gIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9
CiAKIC8vIEEgdGVybmFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3IuCkBAIC0xNDAyLDEx
ICsxMzk5LDEwIEBAIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rpb240
KGNvbnN0IGNoYXIqIGUxLAogICBpZiAoUHJlZEZ1bmN0aW9uNCh2MSwgdjIsIHYzLCB2NCkpCiAg
ICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5nOjpNZXNz
YWdlIG1zZzsKLSAgbXNnIDw8IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUzIDw8ICIg
KyAiIDw8IGU0CisgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8
IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUzIDw8ICIgKyAiIDw8IGU0CiAgICAgICA8
PCAiIGlzIGV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKICAgICAg
IDw8IHYxICsgdjIgKyB2MyArIHY0IDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlv
bkZhaWx1cmUobXNnKTsKIH0KIAogLy8gQSA0LWFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0
b3IuCkBAIC0xOTE5LDExICsxOTE1LDEwIEBAIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVk
Rm9ybWF0RnVuY3Rpb241KGNvbnN0IGNoYXIqIGUxLAogICBpZiAoUHJlZEZ1bmN0aW9uNSh2MSwg
djIsIHYzLCB2NCwgdjUpKQogICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7
CiAKLSAgdGVzdGluZzo6TWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBlMSA8PCAiICsgIiA8PCBlMiA8
PCAiICsgIiA8PCBlMyA8PCAiICsgIiA8PCBlNCA8PCAiICsgIiA8PCBlNQorICByZXR1cm4gdGVz
dGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAi
ICsgIiA8PCBlMyA8PCAiICsgIiA8PCBlNCA8PCAiICsgIiA8PCBlNQogICAgICAgPDwgIiBpcyBl
eHBlY3RlZCB0byBiZSBwb3NpdGl2ZSwgYnV0IGV2YWx1YXRlcyB0byAiCiAgICAgICA8PCB2MSAr
IHYyICsgdjMgKyB2NCArIHY1IDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZh
aWx1cmUobXNnKTsKIH0KIAogLy8gQSA1LWFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3Iu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZW1hdHVy
ZV9leGl0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZW1h
dHVyZV9leGl0X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I0ZGM3ZDQzZmQ2ZjQ4YjlhZmEzMmZjZWFl
NjNkYTg1M2M2NDQxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfcHJlbWF0dXJlX2V4aXRfdGVzdC5jYwpAQCAtMCwwICsxLDEyNyBAQAorLy8g
Q29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0
cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisv
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKy8vCisvLyBUZXN0cyB0aGF0IEdvb2dsZSBU
ZXN0IG1hbmlwdWxhdGVzIHRoZSBwcmVtYXR1cmUtZXhpdC1kZXRlY3Rpb24KKy8vIGZpbGUgY29y
cmVjdGx5LgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CisKK3VzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6OlRl
c3Q7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6R2V0RW52OwordXNpbmcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OlN0YXQ7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFs
Ojpwb3NpeDo6U3RhdFN0cnVjdDsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgUHJlbWF0dXJlRXhp
dFRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICAvLyBSZXR1cm5zIHRydWUgaWZmIHRo
ZSBnaXZlbiBmaWxlIGV4aXN0cy4KKyAgc3RhdGljIGJvb2wgRmlsZUV4aXN0cyhjb25zdCBjaGFy
KiBmaWxlcGF0aCkgeworICAgIFN0YXRTdHJ1Y3Qgc3RhdDsKKyAgICByZXR1cm4gU3RhdChmaWxl
cGF0aCwgJnN0YXQpID09IDA7CisgIH0KKworIHByb3RlY3RlZDoKKyAgUHJlbWF0dXJlRXhpdFRl
c3QoKSB7CisgICAgcHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXyA9IEdldEVudigiVEVTVF9QUkVN
QVRVUkVfRVhJVF9GSUxFIik7CisKKyAgICAvLyBOb3JtYWxpemUgTlVMTCB0byAiIiBmb3IgZWFz
ZSBvZiBoYW5kbGluZy4KKyAgICBpZiAocHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXyA9PSBOVUxM
KSB7CisgICAgICBwcmVtYXR1cmVfZXhpdF9maWxlX3BhdGhfID0gIiI7CisgICAgfQorICB9CisK
KyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZSBleGlzdHMuCisg
IGJvb2wgUHJlbWF0dXJlRXhpdEZpbGVFeGlzdHMoKSBjb25zdCB7CisgICAgcmV0dXJuIEZpbGVF
eGlzdHMocHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXyk7CisgIH0KKworICBjb25zdCBjaGFyKiBw
cmVtYXR1cmVfZXhpdF9maWxlX3BhdGhfOworfTsKKwordHlwZWRlZiBQcmVtYXR1cmVFeGl0VGVz
dCBQcmVtYXR1cmVFeGl0RGVhdGhUZXN0OworCisvLyBUZXN0cyB0aGF0OgorLy8gICAtIHRoZSBw
cmVtYXR1cmUtZXhpdCBmaWxlIGV4aXN0cyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiBhCisvLyAg
ICAgZGVhdGggdGVzdCAoRVhQRUNUX0RFQVRIKiksIGFuZAorLy8gICAtIGEgZGVhdGggdGVzdCBk
b2Vzbid0IGludGVyZmVyZSB3aXRoIHRoZSBtYWluIHRlc3QgcHJvY2VzcydzCisvLyAgICAgaGFu
ZGxpbmcgb2YgdGhlIHByZW1hdHVyZS1leGl0IGZpbGUuCitURVNUX0YoUHJlbWF0dXJlRXhpdERl
YXRoVGVzdCwgRmlsZUV4aXN0c0R1cmluZ0V4ZWN1dGlvbk9mRGVhdGhUZXN0KSB7CisgIGlmICgq
cHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXyA9PSAnXDAnKSB7CisgICAgcmV0dXJuOworICB9CisK
KyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh7CisgICAgICAvLyBJZiB0aGUgZmlsZSBleGlz
dHMsIGNyYXNoIHRoZSBwcm9jZXNzIHN1Y2ggdGhhdCB0aGUgbWFpbiB0ZXN0CisgICAgICAvLyBw
cm9jZXNzIHdpbGwgY2F0Y2ggdGhlIChleHBlY3RlZCkgY3Jhc2ggYW5kIHJlcG9ydCBhIHN1Y2Nl
c3M7CisgICAgICAvLyBvdGhlcndpc2UgZG9uJ3QgY3Jhc2gsIHdoaWNoIHdpbGwgY2F1c2UgdGhl
IG1haW4gdGVzdCBwcm9jZXNzCisgICAgICAvLyB0byByZXBvcnQgdGhhdCB0aGUgZGVhdGggdGVz
dCBoYXMgZmFpbGVkLgorICAgICAgaWYgKFByZW1hdHVyZUV4aXRGaWxlRXhpc3RzKCkpIHsKKyAg
ICAgICAgZXhpdCgxKTsKKyAgICAgIH0KKyAgICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIHRoYXQg
dGhlIHByZW1hdHVyZS1leGl0IGZpbGUgZXhpc3RzIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIGEK
Ky8vIG5vcm1hbCAobm9uLWRlYXRoKSB0ZXN0LgorVEVTVF9GKFByZW1hdHVyZUV4aXRUZXN0LCBQ
cmVtYXR1cmVFeGl0RmlsZUV4aXN0c0R1cmluZ1Rlc3RFeGVjdXRpb24pIHsKKyAgaWYgKCpwcmVt
YXR1cmVfZXhpdF9maWxlX3BhdGhfID09ICdcMCcpIHsKKyAgICByZXR1cm47CisgIH0KKworICBF
WFBFQ1RfVFJVRShQcmVtYXR1cmVFeGl0RmlsZUV4aXN0cygpKQorICAgICAgPDwgIiBmaWxlICIg
PDwgcHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXworICAgICAgPDwgIiBzaG91bGQgZXhpc3QgZHVy
aW5nIHRlc3QgZXhlY3V0aW9uLCBidXQgZG9lc24ndC4iOworfQorCit9ICAvLyBuYW1lc3BhY2UK
KworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIEluaXRHb29nbGVUZXN0KCZh
cmdjLCBhcmd2KTsKKyAgY29uc3QgaW50IGV4aXRfY29kZSA9IFJVTl9BTExfVEVTVFMoKTsKKwor
ICAvLyBUZXN0IHRoYXQgdGhlIHByZW1hdHVyZS1leGl0IGZpbGUgaXMgZGVsZXRlZCB1cG9uIHJl
dHVybiBmcm9tCisgIC8vIFJVTl9BTExfVEVTVFMoKS4KKyAgY29uc3QgY2hhciogY29uc3QgZmls
ZXBhdGggPSBHZXRFbnYoIlRFU1RfUFJFTUFUVVJFX0VYSVRfRklMRSIpOworICBpZiAoZmlsZXBh
dGggIT0gTlVMTCAmJiAqZmlsZXBhdGggIT0gJ1wwJykgeworICAgIGlmIChQcmVtYXR1cmVFeGl0
VGVzdDo6RmlsZUV4aXN0cyhmaWxlcGF0aCkpIHsKKyAgICAgIHByaW50ZigKKyAgICAgICAgICAi
RmlsZSAlcyBzaG91bGRuJ3QgZXhpc3QgYWZ0ZXIgdGhlIHRlc3QgcHJvZ3JhbSBmaW5pc2hlcywg
YnV0IGRvZXMuIiwKKyAgICAgICAgICBmaWxlcGF0aCk7CisgICAgICByZXR1cm4gMTsKKyAgICB9
CisgIH0KKworICByZXR1cm4gZXhpdF9jb2RlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3Byb2RfdGVzdC5jYwppbmRleCBiYzMyMDFkMGYyNGFlOThlZDA2MmM3
YjhjOWY0NGQ3ZGZlNmQ3Yzk2Li4wNjBhYmNlMTg3MjQ0Y2ZjNDhiM2NkNWE2Y2I4MWIzZjllYjlh
ZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Byb2Rf
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Byb2RfdGVz
dC5jYwpAQCAtMzEsNyArMzEsNyBAQAogLy8KIC8vIFVuaXQgdGVzdCBmb3IgaW5jbHVkZS9ndGVz
dC9ndGVzdF9wcm9kLmguCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAidGVzdC9wcm9kdWN0aW9uLmgiCiAKIC8vIFRlc3RzIHRo
YXQgcHJpdmF0ZSBtZW1iZXJzIGNhbiBiZSBhY2Nlc3NlZCBmcm9tIGEgVEVTVCBkZWNsYXJlZCBh
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9yZXBlYXRf
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcmVwZWF0X3Rlc3Qu
Y2MKaW5kZXggZGY2ODY4YjgzMDI5NjEyNWEyN2M3ZjM3ZjkzMTZjZWQ0ZWQ4MmQ1NC4uNDgxMDEy
YWRjMjQwNTRmNGE4MWYzZTc0OWU4ZDI1NzRjMzY0ZDA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9yZXBlYXRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3JlcGVhdF90ZXN0LmNjCkBAIC0zMyw3ICszMyw3IEBA
CiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIC8vIEluZGljYXRlcyB0
aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKIC8vIGlt
cGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBp
cwpAQCAtNjksOSArNjksOSBAQCBuYW1lc3BhY2UgewogICAgICAgICAgICAgICAgICAgPDwgIiAg
QWN0dWFsOiAiIDw8IGFjdHVhbF92YWwgPDwgIlxuIlwKICAgICAgICAgICAgICAgICAgIDw8ICJF
eHBlY3RlZDogIiAjZXhwZWN0ZWQgIlxuIlwKICAgICAgICAgICAgICAgICAgIDw8ICJXaGljaCBp
czogIiA8PCBleHBlY3RlZF92YWwgPDwgIlxuIjtcCi0gICAgICBhYm9ydCgpO1wKKyAgICAgIDo6
dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpBYm9ydCgpO1wKICAgICB9XAotICB9IHdoaWxlKDo6
dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCisgIH0gd2hpbGUgKDo6dGVzdGluZzo6
aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCiAKIAogLy8gVXNlZCBmb3IgdmVyaWZ5aW5nIHRoYXQg
Z2xvYmFsIGVudmlyb25tZW50IHNldC11cCBhbmQgdGVhci1kb3duIGFyZQpAQCAtMTEzLDEwICsx
MTMsMTAgQEAgVEVTVChCYXJEZWF0aFRlc3QsIFRocmVhZFNhZmVBbmRGYXN0KSB7CiAgIGdfZGVh
dGhfdGVzdF9jb3VudCsrOwogCiAgIEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhy
ZWFkc2FmZSI7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoYWJvcnQoKSwgIiIpOworICBF
WFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpBYm9y
dCgpLCAiIik7CiAKICAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKLSAg
RVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChhYm9ydCgpLCAiIik7CisgIEVYUEVDVF9ERUFUSF9J
Rl9TVVBQT1JURUQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OkFib3J0KCksICIiKTsKIH0K
IAogI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdF8uY2MKaW5kZXggNTNlY2Y3NzcwYTE0MTE3NjY4
YjRhZGVhNmZiNmY1MDI2NjcxN2RlNy4uNmZiNDQxYmQ0ZDQ2NjIxZjY5ODdjYWQ0Yjc2YWU1OTQ5
OWQ3ZmZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9z
aHVmZmxlX3Rlc3RfLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
c2h1ZmZsZV90ZXN0Xy5jYwpAQCAtMzEsNyArMzEsNyBAQAogCiAvLyBWZXJpZmllcyB0aGF0IHRl
c3Qgc2h1ZmZsaW5nIHdvcmtzLgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2UgewogCkBAIC00Miw3ICs0Miw2IEBAIHVzaW5n
IDo6dGVzdGluZzo6VGVzdDsKIHVzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzOwog
dXNpbmcgOjp0ZXN0aW5nOjpUZXN0SW5mbzsKIHVzaW5nIDo6dGVzdGluZzo6VW5pdFRlc3Q7Ci11
c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmc7CiB1c2luZyA6OnRlc3Rpbmc6OmludGVy
bmFsOjpzY29wZWRfcHRyOwogCiAvLyBUaGUgdGVzdCBtZXRob2RzIGFyZSBlbXB0eSwgYXMgdGhl
IHNvbGUgcHVycG9zZSBvZiB0aGlzIHByb2dyYW0gaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYwppbmRleCBkZTkxZTgw
MGY1YTEzODI5OTlmYzIwMWY1Y2YzY2UwNDY0Y2FhMWNlLi5jY2QwOTFhMjgxZDNjMzAyZWM2ZTcz
NjAyMmZkNjE4ODE2YzExOWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X3NvbGVfaGVhZGVyX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF9zb2xlX2hlYWRlcl90ZXN0LmNjCkBAIC0zMiw3ICszMiw3IEBACiAvLyBU
aGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBpdCdzIHBvc3NpYmxlIHRvIHVzZSBHb29nbGUgVGVzdCBi
eSBpbmNsdWRpbmcKIC8vIHRoZSBndGVzdC5oIGhlYWRlciBmaWxlIGFsb25lLgogCi0jaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2Ug
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3N0cmVz
c190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zdHJlc3NfdGVz
dC5jYwppbmRleCBmNWFmNzhjYzZkM2YzOTVhMDBkNGQxY2U4NTk5ZmE1ZjFkZmE3NjI2Li5lN2Rh
YTQzMGRmYmU1MGYxMDRhM2E0M2I3ZjBiNGE2YmUyMTczMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3N0cmVzc190ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc3RyZXNzX3Rlc3QuY2MKQEAgLTMyLDcgKzMyLDcg
QEAKIC8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFKCkgYW5kIHZhcmlvdXMgR29vZ2xlIFRlc3Qg
YXNzZXJ0aW9ucyBjYW4gYmUKIC8vIHVzZWQgaW4gYSBsYXJnZSBudW1iZXIgb2YgdGhyZWFkcyBj
b25jdXJyZW50bHkuCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCiAKICNpbmNsdWRlIDxpb3N0cmVhbT4KICNpbmNsdWRlIDx2ZWN0b3I+CkBAIC01
MCw3ICs1MCw2IEBAIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSB7CiAKIHVzaW5nIGlu
dGVybmFsOjpOb3RpZmljYXRpb247Ci11c2luZyBpbnRlcm5hbDo6U3RyaW5nOwogdXNpbmcgaW50
ZXJuYWw6OlRlc3RQcm9wZXJ0eUtleUlzOwogdXNpbmcgaW50ZXJuYWw6OlRocmVhZFdpdGhQYXJh
bTsKIHVzaW5nIGludGVybmFsOjpzY29wZWRfcHRyOwpAQCAtNjIsMTMgKzYxLDEzIEBAIHVzaW5n
IGludGVybmFsOjpzY29wZWRfcHRyOwogLy8gSG93IG1hbnkgdGhyZWFkcyB0byBjcmVhdGU/CiBj
b25zdCBpbnQga1RocmVhZENvdW50ID0gNTA7CiAKLVN0cmluZyBJZFRvS2V5KGludCBpZCwgY29u
c3QgY2hhciogc3VmZml4KSB7CitzdGQ6OnN0cmluZyBJZFRvS2V5KGludCBpZCwgY29uc3QgY2hh
ciogc3VmZml4KSB7CiAgIE1lc3NhZ2Uga2V5OwogICBrZXkgPDwgImtleV8iIDw8IGlkIDw8ICJf
IiA8PCBzdWZmaXg7CiAgIHJldHVybiBrZXkuR2V0U3RyaW5nKCk7CiB9CiAKLVN0cmluZyBJZFRv
U3RyaW5nKGludCBpZCkgeworc3RkOjpzdHJpbmcgSWRUb1N0cmluZyhpbnQgaWQpIHsKICAgTWVz
c2FnZSBpZF9tZXNzYWdlOwogICBpZF9tZXNzYWdlIDw8IGlkOwogICByZXR1cm4gaWRfbWVzc2Fn
ZS5HZXRTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfdGVzdF91dGlscy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
dGVzdF91dGlscy5weQppbmRleCBlMGY1OTczZTdlYTZmODFlNjY2YzMxMjFjM2M4ZmE4NDNmNDM0
ZjYxLi40YWNkMzZjOTc1YzBhMWMyOGU1ZTUwY2Q3OTNhMTMxOTA3NzQ1MGM0IDEwMDc1NQotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RfdXRpbHMucHkKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5CkBAIC01Niw2
ICs1NiwyMSBAQAogSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250JwogSVNfQ1lHV0lOID0gb3Mu
bmFtZSA9PSAncG9zaXgnIGFuZCAnQ1lHV0lOJyBpbiBvcy51bmFtZSgpWzBdCiAKKyMgVGhlIGVu
dmlyb25tZW50IHZhcmlhYmxlIGZvciBzcGVjaWZ5aW5nIHRoZSBwYXRoIHRvIHRoZSBwcmVtYXR1
cmUtZXhpdCBmaWxlLgorUFJFTUFUVVJFX0VYSVRfRklMRV9FTlZfVkFSID0gJ1RFU1RfUFJFTUFU
VVJFX0VYSVRfRklMRScKKworZW52aXJvbiA9IG9zLmVudmlyb24uY29weSgpCisKKworZGVmIFNl
dEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6CisgICIiIlNldHMvdW5zZXRzIGFuIGVudmlyb25tZW50
IHZhcmlhYmxlIHRvIGEgZ2l2ZW4gdmFsdWUuIiIiCisKKyAgaWYgdmFsdWUgaXMgbm90IE5vbmU6
CisgICAgZW52aXJvbltlbnZfdmFyXSA9IHZhbHVlCisgIGVsaWYgZW52X3ZhciBpbiBlbnZpcm9u
OgorICAgIGRlbCBlbnZpcm9uW2Vudl92YXJdCisKKwogIyBIZXJlIHdlIGV4cG9zZSBhIGNsYXNz
IGZyb20gYSBwYXJ0aWN1bGFyIG1vZHVsZSwgZGVwZW5kaW5nIG9uIHRoZQogIyBlbnZpcm9ubWVu
dC4gVGhlIGNvbW1lbnQgc3VwcHJlc3NlcyB0aGUgJ0ludmFsaWQgdmFyaWFibGUgbmFtZScgbGlu
dAogIyBjb21wbGFpbnQuCkBAIC02Myw4ICs3OCw4IEBACiAKICMgSW5pdGlhbGx5IG1hcHMgYSBm
bGFnIHRvIGl0cyBkZWZhdWx0IHZhbHVlLiBBZnRlcgogIyBfUGFyc2VBbmRTdHJpcEdUZXN0Rmxh
Z3MoKSBpcyBjYWxsZWQsIG1hcHMgYSBmbGFnIHRvIGl0cyBhY3R1YWwgdmFsdWUuCi1fZmxhZ19t
YXAgPSB7J2d0ZXN0X3NvdXJjZV9kaXInOiBvcy5wYXRoLmRpcm5hbWUoc3lzLmFyZ3ZbMF0pLAot
ICAgICAgICAgICAgICdndGVzdF9idWlsZF9kaXInOiBvcy5wYXRoLmRpcm5hbWUoc3lzLmFyZ3Zb
MF0pfQorX2ZsYWdfbWFwID0geydzb3VyY2VfZGlyJzogb3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2
WzBdKSwKKyAgICAgICAgICAgICAnYnVpbGRfZGlyJzogb3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2
WzBdKX0KIF9ndGVzdF9mbGFnc19hcmVfcGFyc2VkID0gRmFsc2UKIAogCkBAIC0xMTEsMTMgKzEy
NiwxMyBAQCBkZWYgR2V0RmxhZyhmbGFnKToKIGRlZiBHZXRTb3VyY2VEaXIoKToKICAgIiIiUmV0
dXJucyB0aGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSAucHkgZmls
ZXMgYXJlLiIiIgogCi0gIHJldHVybiBvcy5wYXRoLmFic3BhdGgoR2V0RmxhZygnZ3Rlc3Rfc291
cmNlX2RpcicpKQorICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKEdldEZsYWcoJ3NvdXJjZV9kaXIn
KSkKIAogCiBkZWYgR2V0QnVpbGREaXIoKToKICAgIiIiUmV0dXJucyB0aGUgYWJzb2x1dGUgcGF0
aCBvZiB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSB0ZXN0IGJpbmFyaWVzIGFyZS4iIiIKIAotICBy
ZXR1cm4gb3MucGF0aC5hYnNwYXRoKEdldEZsYWcoJ2d0ZXN0X2J1aWxkX2RpcicpKQorICByZXR1
cm4gb3MucGF0aC5hYnNwYXRoKEdldEZsYWcoJ2J1aWxkX2RpcicpKQogCiAKIF90ZW1wX2RpciA9
IE5vbmUKQEAgLTE2MCwxNCArMTc1LDEwIEBAIGRlZiBHZXRUZXN0RXhlY3V0YWJsZVBhdGgoZXhl
Y3V0YWJsZV9uYW1lLCBidWlsZF9kaXI9Tm9uZSk6CiAKICAgaWYgbm90IG9zLnBhdGguZXhpc3Rz
KHBhdGgpOgogICAgIG1lc3NhZ2UgPSAoCi0gICAgICAgICdVbmFibGUgdG8gZmluZCB0aGUgdGVz
dCBiaW5hcnkuIFBsZWFzZSBtYWtlIHN1cmUgdG8gcHJvdmlkZSBwYXRoXG4nCi0gICAgICAgICd0
byB0aGUgYmluYXJ5IHZpYSB0aGUgLS1ndGVzdF9idWlsZF9kaXIgZmxhZyBvciB0aGUgR1RFU1Rf
QlVJTERfRElSXG4nCi0gICAgICAgICdlbnZpcm9ubWVudCB2YXJpYWJsZS4gRm9yIGNvbnZlbmll
bnQgdXNlLCBpbnZva2UgdGhpcyBzY3JpcHQgdmlhXG4nCi0gICAgICAgICdta190ZXN0LnB5Llxu
JwotICAgICAgICAjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IGNoYW5nZSBta190ZXN0LnB5IHRv
IHRlc3QucHkgYWZ0ZXIgcmVuYW1pbmcKLSAgICAgICAgIyB0aGUgZmlsZS4KLSAgICAgICAgJ1Bs
ZWFzZSBydW4gbWtfdGVzdC5weSAtaCBmb3IgaGVscC4nKQotICAgIHByaW50ID4+IHN5cy5zdGRl
cnIsIG1lc3NhZ2UKKyAgICAgICAgJ1VuYWJsZSB0byBmaW5kIHRoZSB0ZXN0IGJpbmFyeSAiJXMi
LiBQbGVhc2UgbWFrZSBzdXJlIHRvIHByb3ZpZGVcbicKKyAgICAgICAgJ2EgcGF0aCB0byB0aGUg
YmluYXJ5IHZpYSB0aGUgLS1idWlsZF9kaXIgZmxhZyBvciB0aGUgQlVJTERfRElSXG4nCisgICAg
ICAgICdlbnZpcm9ubWVudCB2YXJpYWJsZS4nICUgcGF0aCkKKyAgICBzeXMuc3Rkb3V0LndyaXRl
KG1lc3NhZ2UpCiAgICAgc3lzLmV4aXQoMSkKIAogICByZXR1cm4gcGF0aApAQCAtMjQ1LDcgKzI1
Niw3IEBAIGRlZiBfUmVwbGFjZUVudkRpY3QoZGVzdCwgc3JjKToKICAgICAgICAgIyBDaGFuZ2Vz
IG1hZGUgYnkgb3MuZW52aXJvbi5jbGVhciBhcmUgbm90IGluaGVyaXRhYmxlIGJ5IGNoaWxkCiAg
ICAgICAgICMgcHJvY2Vzc2VzIHVudGlsIFB5dGhvbiAyLjYuIFRvIHByb2R1Y2UgaW5oZXJpdGFi
bGUgY2hhbmdlcyB3ZSBoYXZlCiAgICAgICAgICMgdG8gZGVsZXRlIGVudmlyb25tZW50IGl0ZW1z
IHdpdGggdGhlIGRlbCBzdGF0ZW1lbnQuCi0gICAgICAgIGZvciBrZXkgaW4gZGVzdDoKKyAgICAg
ICAgZm9yIGtleSBpbiBkZXN0LmtleXMoKToKICAgICAgICAgICBkZWwgZGVzdFtrZXldCiAgICAg
ICAgIGRlc3QudXBkYXRlKHNyYykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfZXhfdGVzdC5jYwppbmRleCA4
YmY5ZGM5MDViNWZmODNhYzAyMTA0MTM0MzU4MGY5MDk3NTQ4M2NlLi44ZDQ2Yzc2ZjE2MTIxZmQx
ZjQ3Yzk3NDEwZjNlMDhlZjRhMTE2ZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfZXhfdGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfZXhfdGVzdC5jYwpA
QCAtMzEsNyArMzEsNyBAQAogCiAvLyBUZXN0cyBHb29nbGUgVGVzdCdzIHRocm93LW9uLWZhaWx1
cmUgbW9kZSB3aXRoIGV4Y2VwdGlvbnMgZW5hYmxlZC4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2lu
Y2x1ZGUgPHN0ZGlvLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0LnB5CmluZGV4IDU2NzhmZmVhZjZmYTYx
ZWY3ZGNiNDViOGYzNGEwMzQxMTkxYWJmNmUuLjNlNzc0MGNhYmI4YWNmZDIxMmMzN2ViODE2OTM3
MjIyNjE3NDNhNzEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0LnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0LnB5CkBAIC03MCw3ICs3MCw3IEBAIGRl
ZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgogZGVmIFJ1bihjb21tYW5kKToKICAgIiIiUnVu
cyBhIGNvbW1hbmQ7IHJldHVybnMgVHJ1ZS9GYWxzZSBpZiBpdHMgZXhpdCBjb2RlIGlzL2lzbid0
IDAuIiIiCiAKLSAgcHJpbnQgJ1J1bm5pbmcgIiVzIi4gLiAuJyAlICcgJy5qb2luKGNvbW1hbmQp
CisgIHByaW50KCdSdW5uaW5nICIlcyIuIC4gLicgJSAnICcuam9pbihjb21tYW5kKSkKICAgcCA9
IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kKQogICByZXR1cm4gcC5leGl0ZWQg
YW5kIHAuZXhpdF9jb2RlID09IDAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3RfLmNjCmluZGV4IDg4ZmJk
NWE3NmRjOTIwNmY0YTAyOTUxNGI4NzZkYzAxNDFlMzZiZmEuLjJiODhmZTNkOWIzYjhiNWYwZTM2
NGRiMGRkNjlmZjdkYjE4YWE2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0Xy5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2MKQEAgLTM1LDE0
ICszNSwzMCBAQAogLy8gaW52b2tlZCBieSBndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3QucHks
IGFuZCBpcyBleHBlY3RlZCB0byBleGl0CiAvLyB3aXRoIG5vbi16ZXJvIGluIHRoZSB0aHJvdy1v
bi1mYWlsdXJlIG1vZGUgb3IgMCBvdGhlcndpc2UuCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5o
PgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpbmNsdWRlIDxzdGRpby5oPiAgICAgICAg
ICAgICAgICAgICAgICAvLyBmb3IgZmZsdXNoLCBmcHJpbnRmLCBOVUxMLCBldGMuCisjaW5jbHVk
ZSA8c3RkbGliLmg+ICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGV4aXQKKyNpbmNsdWRlIDxl
eGNlcHRpb24+ICAgICAgICAgICAgICAgICAgICAvLyBmb3Igc2V0X3Rlcm1pbmF0ZQorCisvLyBU
aGlzIHRlcm1pbmF0ZSBoYW5kbGVyIGFib3J0cyB0aGUgcHJvZ3JhbSB1c2luZyBleGl0KCkgcmF0
aGVyIHRoYW4gYWJvcnQoKS4KKy8vIFRoaXMgYXZvaWRzIHNob3dpbmcgcG9wLXVwcyBvbiBXaW5k
b3dzIHN5c3RlbXMgYW5kIGNvcmUgZHVtcHMgb24gVW5peC1saWtlCisvLyBvbmVzLgordm9pZCBU
ZXJtaW5hdGVIYW5kbGVyKCkgeworICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCAiVW5oYW5kbGVk
IEMrKyBleGNlcHRpb24gdGVybWluYXRpbmcgdGhlIHByb2dyYW0uIik7CisgIGZmbHVzaChOVUxM
KTsKKyAgZXhpdCgxKTsKK30KIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Cisj
aWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKyAgc3RkOjpzZXRfdGVybWluYXRlKCZUZXJtaW5hdGVI
YW5kbGVyKTsKKyNlbmRpZgogICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7
CiAKICAgLy8gV2Ugd2FudCB0byBlbnN1cmUgdGhhdCBwZW9wbGUgY2FuIHVzZSBHb29nbGUgVGVz
dCBhc3NlcnRpb25zIGluCiAgIC8vIG90aGVyIHRlc3RpbmcgZnJhbWV3b3JrcywgYXMgbG9uZyBh
cyB0aGV5IGluaXRpYWxpemUgR29vZ2xlIFRlc3QKLSAgLy8gcHJvcGVybHkgYW5kIHNldCB0aGUg
dGhyb3duLW9uLWZhaWx1cmUgbW9kZS4gIFRoZXJlZm9yZSwgd2UgZG9uJ3QKKyAgLy8gcHJvcGVy
bHkgYW5kIHNldCB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLiAgVGhlcmVmb3JlLCB3ZSBkb24n
dAogICAvLyB1c2UgR29vZ2xlIFRlc3QncyBjb25zdHJ1Y3RzIGZvciBkZWZpbmluZyBhbmQgcnVu
bmluZyB0ZXN0cwogICAvLyAoZS5nLiBURVNUIGFuZCBSVU5fQUxMX1RFU1RTKSBoZXJlLgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6
ZWRfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFs
aXplZF90ZXN0LnB5CmluZGV4IDZhZTU3ZWVlZGFmY2YwNzUwNGRkOGQ1ZDdhOGI1YTdmODM4MTNm
MjcuLjQzNTgzNzAwOTdmYjg0YzUzYWFjZmYzMTM3MGE0NWEyNGY4N2YyNjkgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0LnB5
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90
ZXN0LnB5CkBAIC00Niw4ICs0Niw4IEBAIGRlZiBBc3NlcnQoY29uZGl0aW9uKToKIAogZGVmIEFz
c2VydEVxKGV4cGVjdGVkLCBhY3R1YWwpOgogICBpZiBleHBlY3RlZCAhPSBhY3R1YWw6Ci0gICAg
cHJpbnQgJ0V4cGVjdGVkOiAlcycgJSAoZXhwZWN0ZWQsKQotICAgIHByaW50ICcgIEFjdHVhbDog
JXMnICUgKGFjdHVhbCwpCisgICAgcHJpbnQoJ0V4cGVjdGVkOiAlcycgJSAoZXhwZWN0ZWQsKSkK
KyAgICBwcmludCgnICBBY3R1YWw6ICVzJyAlIChhY3R1YWwsKSkKICAgICByYWlzZSBBc3NlcnRp
b25FcnJvcgogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfdW5pbml0aWFsaXplZF90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0Xy5jYwppbmRleCBlOGIyYWE4MWRkNTRkOWM2NDNhNThk
ZTVlNDRkNmNjYjUyMGE3NzY1Li40NDMxNjk4N2ZiYjVkNmRjMDg5MDkyNTVhMzcyOGNlMzVhMmVj
N2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaW5p
dGlhbGl6ZWRfdGVzdF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF91bmluaXRpYWxpemVkX3Rlc3RfLmNjCkBAIC0yOSw3ICsyOSw3IEBACiAvLwogLy8gQXV0aG9y
OiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiBURVNUKER1bW15VGVzdCwgRHVtbXkpIHsK
ICAgLy8gVGhpcyB0ZXN0IGRvZXNuJ3QgdmVyaWZ5IGFueXRoaW5nLiAgV2UganVzdCBuZWVkIGl0
IHRvIGNyZWF0ZSBhCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91bml0
dGVzdC5jYwppbmRleCBhMTRmMDY1YTJjY2Q4NjM3OWEwMTQ5YTMzZmM1NjQ1YzBlYzhiMTgxLi44
OGU5NDEzNGI5NGNjOWE1MTFhMmZjNWQ5ZmYyNDY3MGVhOWE3OTAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MKQEAgLTMyLDggKzMyLDcgQEAK
IC8vIFRlc3RzIGZvciBHb29nbGUgVGVzdCBpdHNlbGYuICBUaGlzIHZlcmlmaWVzIHRoYXQgdGhl
IGJhc2ljIGNvbnN0cnVjdHMgb2YKIC8vIEdvb2dsZSBUZXN0IHdvcmsuCiAKLSNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgogCiAvLyBWZXJpZmllcyB0aGF0IHRoZSBjb21tYW5kIGxpbmUgZmxhZyB2YXJpYWJsZXMgY2Fu
IGJlIGFjY2Vzc2VkCiAvLyBpbiBjb2RlIG9uY2UgPGd0ZXN0L2d0ZXN0Lmg+IGhhcyBiZWVuICNp
bmNsdWRlZC4KQEAgLTUyLDExICs1MSwyMSBAQCBURVNUKENvbW1hbmRMaW5lRmxhZ3NUZXN0LCBD
YW5CZUFjY2Vzc2VkSW5Db2RlT25jZUdUZXN0SElzSW5jbHVkZWQpIHsKICAgICAgIHx8IHRlc3Rp
bmc6OkdURVNUX0ZMQUcoc2hvd19pbnRlcm5hbF9zdGFja19mcmFtZXMpCiAgICAgICB8fCB0ZXN0
aW5nOjpHVEVTVF9GTEFHKHNodWZmbGUpCiAgICAgICB8fCB0ZXN0aW5nOjpHVEVTVF9GTEFHKHN0
YWNrX3RyYWNlX2RlcHRoKSA+IDAKKyAgICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcoc3RyZWFt
X3Jlc3VsdF90bykgIT0gInVua25vd24iCiAgICAgICB8fCB0ZXN0aW5nOjpHVEVTVF9GTEFHKHRo
cm93X29uX2ZhaWx1cmUpOwogICBFWFBFQ1RfVFJVRShkdW1teSB8fCAhZHVtbXkpOyAgLy8gU3Vw
cHJlc3NlcyB3YXJuaW5nIHRoYXQgZHVtbXkgaXMgdW51c2VkLgogfQogCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3Qtc3BpLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+ICAvLyBGb3IgSU5UX01BWC4KKyNp
bmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx0aW1lLmg+
CisKKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgPG9zdHJlYW0+
CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKIAogLy8gSW5kaWNhdGVzIHRoYXQgdGhp
cyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwogLy8gaW1wbGVtZW50
YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCkBAIC02
NywxNSArNzYsODUgQEAgVEVTVChDb21tYW5kTGluZUZsYWdzVGVzdCwgQ2FuQmVBY2Nlc3NlZElu
Q29kZU9uY2VHVGVzdEhJc0luY2x1ZGVkKSB7CiAjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFs
LWlubC5oIgogI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwogCi0jaW5jbHVkZSA8bGltaXRz
Lmg+ICAvLyBGb3IgSU5UX01BWC4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDx0aW1l
Lmg+Ci0KLSNpbmNsdWRlIDxtYXA+Ci0KIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBp
bnRlcm5hbCB7CiAKKyNpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKK2NsYXNzIFN0cmVh
bWluZ0xpc3RlbmVyVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIGNsYXNzIEZha2VT
b2NrZXRXcml0ZXIgOiBwdWJsaWMgU3RyZWFtaW5nTGlzdGVuZXI6OkFic3RyYWN0U29ja2V0V3Jp
dGVyIHsKKyAgIHB1YmxpYzoKKyAgICAvLyBTZW5kcyBhIHN0cmluZyB0byB0aGUgc29ja2V0Lgor
ICAgIHZpcnR1YWwgdm9pZCBTZW5kKGNvbnN0IHN0cmluZyYgbWVzc2FnZSkgeyBvdXRwdXRfICs9
IG1lc3NhZ2U7IH0KKworICAgIHN0cmluZyBvdXRwdXRfOworICB9OworCisgIFN0cmVhbWluZ0xp
c3RlbmVyVGVzdCgpCisgICAgICA6IGZha2Vfc29ja193cml0ZXJfKG5ldyBGYWtlU29ja2V0V3Jp
dGVyKSwKKyAgICAgICAgc3RyZWFtZXJfKGZha2Vfc29ja193cml0ZXJfKSwKKyAgICAgICAgdGVz
dF9pbmZvX29ial8oIkZvb1Rlc3QiLCAiQmFyIiwgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgQ29kZUxvY2F0aW9uKF9fRklMRV9fLCBfX0xJTkVfXyksIDAsIE5VTEwpIHt9CisK
KyBwcm90ZWN0ZWQ6CisgIHN0cmluZyogb3V0cHV0KCkgeyByZXR1cm4gJihmYWtlX3NvY2tfd3Jp
dGVyXy0+b3V0cHV0Xyk7IH0KKworICBGYWtlU29ja2V0V3JpdGVyKiBjb25zdCBmYWtlX3NvY2tf
d3JpdGVyXzsKKyAgU3RyZWFtaW5nTGlzdGVuZXIgc3RyZWFtZXJfOworICBVbml0VGVzdCB1bml0
X3Rlc3RfOworICBUZXN0SW5mbyB0ZXN0X2luZm9fb2JqXzsgIC8vIFRoZSBuYW1lIHRlc3RfaW5m
b18gd2FzIHRha2VuIGJ5IHRlc3Rpbmc6OlRlc3QuCit9OworCitURVNUX0YoU3RyZWFtaW5nTGlz
dGVuZXJUZXN0LCBPblRlc3RQcm9ncmFtRW5kKSB7CisgICpvdXRwdXQoKSA9ICIiOworICBzdHJl
YW1lcl8uT25UZXN0UHJvZ3JhbUVuZCh1bml0X3Rlc3RfKTsKKyAgRVhQRUNUX0VRKCJldmVudD1U
ZXN0UHJvZ3JhbUVuZCZwYXNzZWQ9MVxuIiwgKm91dHB1dCgpKTsKK30KKworVEVTVF9GKFN0cmVh
bWluZ0xpc3RlbmVyVGVzdCwgT25UZXN0SXRlcmF0aW9uRW5kKSB7CisgICpvdXRwdXQoKSA9ICIi
OworICBzdHJlYW1lcl8uT25UZXN0SXRlcmF0aW9uRW5kKHVuaXRfdGVzdF8sIDQyKTsKKyAgRVhQ
RUNUX0VRKCJldmVudD1UZXN0SXRlcmF0aW9uRW5kJnBhc3NlZD0xJmVsYXBzZWRfdGltZT0wbXNc
biIsICpvdXRwdXQoKSk7Cit9CisKK1RFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRlc3QsIE9uVGVz
dENhc2VTdGFydCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdENhc2VT
dGFydChUZXN0Q2FzZSgiRm9vVGVzdCIsICJCYXIiLCBOVUxMLCBOVUxMKSk7CisgIEVYUEVDVF9F
USgiZXZlbnQ9VGVzdENhc2VTdGFydCZuYW1lPUZvb1Rlc3RcbiIsICpvdXRwdXQoKSk7Cit9CisK
K1RFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRlc3QsIE9uVGVzdENhc2VFbmQpIHsKKyAgKm91dHB1
dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RDYXNlRW5kKFRlc3RDYXNlKCJGb29UZXN0Iiwg
IkJhciIsIE5VTEwsIE5VTEwpKTsKKyAgRVhQRUNUX0VRKCJldmVudD1UZXN0Q2FzZUVuZCZwYXNz
ZWQ9MSZlbGFwc2VkX3RpbWU9MG1zXG4iLCAqb3V0cHV0KCkpOworfQorCitURVNUX0YoU3RyZWFt
aW5nTGlzdGVuZXJUZXN0LCBPblRlc3RTdGFydCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3Ry
ZWFtZXJfLk9uVGVzdFN0YXJ0KHRlc3RfaW5mb19vYmpfKTsKKyAgRVhQRUNUX0VRKCJldmVudD1U
ZXN0U3RhcnQmbmFtZT1CYXJcbiIsICpvdXRwdXQoKSk7Cit9CisKK1RFU1RfRihTdHJlYW1pbmdM
aXN0ZW5lclRlc3QsIE9uVGVzdEVuZCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJf
Lk9uVGVzdEVuZCh0ZXN0X2luZm9fb2JqXyk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdEVuZCZw
YXNzZWQ9MSZlbGFwc2VkX3RpbWU9MG1zXG4iLCAqb3V0cHV0KCkpOworfQorCitURVNUX0YoU3Ry
ZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RQYXJ0UmVzdWx0KSB7CisgICpvdXRwdXQoKSA9ICIi
OworICBzdHJlYW1lcl8uT25UZXN0UGFydFJlc3VsdChUZXN0UGFydFJlc3VsdCgKKyAgICAgIFRl
c3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLCAiZm9vLmNjIiwgNDIsICJmYWlsZWQ9XG4mJSIp
KTsKKworICAvLyBNZXRhIGNoYXJhY3RlcnMgaW4gdGhlIGZhaWx1cmUgbWVzc2FnZSBzaG91bGQg
YmUgcHJvcGVybHkgZXNjYXBlZC4KKyAgRVhQRUNUX0VRKAorICAgICAgImV2ZW50PVRlc3RQYXJ0
UmVzdWx0JmZpbGU9Zm9vLmNjJmxpbmU9NDImbWVzc2FnZT1mYWlsZWQlM0QlMEElMjYlMjVcbiIs
CisgICAgICAqb3V0cHV0KCkpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0NBTl9TVFJFQU1fUkVT
VUxUU18KKwogLy8gUHJvdmlkZXMgYWNjZXNzIHRvIG90aGVyd2lzZSBwcml2YXRlIHBhcnRzIG9m
IHRoZSBUZXN0RXZlbnRMaXN0ZW5lcnMgY2xhc3MKIC8vIHRoYXQgYXJlIG5lZWRlZCB0byB0ZXN0
IGl0LgogY2xhc3MgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3IgewpAQCAtMTAyLDYgKzE4MSwx
OCBAQCBjbGFzcyBUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3NvciB7CiAgIH0KIH07CiAKK2NsYXNz
IFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0SGVscGVyIDogcHVibGljIFRlc3QgeworIHByb3Rl
Y3RlZDoKKyAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3RIZWxwZXIoKSB7fQorCisgIC8vIEZv
cndhcmRzIHRvIFVuaXRUZXN0OjpSZWNvcmRQcm9wZXJ0eSgpIHRvIGJ5cGFzcyBhY2Nlc3MgY29u
dHJvbHMuCisgIHZvaWQgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eShjb25zdCBjaGFyKiBrZXksIGNv
bnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkgeworICAgIHVuaXRfdGVzdF8uUmVjb3JkUHJvcGVydHko
a2V5LCB2YWx1ZSk7CisgIH0KKworICBVbml0VGVzdCB1bml0X3Rlc3RfOworfTsKKwogfSAgLy8g
bmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCkBAIC0xMTAsNiAr
MjAxLDcgQEAgdXNpbmcgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0OwogdXNpbmcgdGVzdGluZzo6
QXNzZXJ0aW9uU3VjY2VzczsKIHVzaW5nIHRlc3Rpbmc6OkRvdWJsZUxFOwogdXNpbmcgdGVzdGlu
Zzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lcjsKK3VzaW5nIHRlc3Rpbmc6OkVudmlyb25tZW50Owog
dXNpbmcgdGVzdGluZzo6RmxvYXRMRTsKIHVzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcoYWxzb19y
dW5fZGlzYWJsZWRfdGVzdHMpOwogdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhicmVha19vbl9m
YWlsdXJlKTsKQEAgLTEyNSw2ICsyMTcsNyBAQCB1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHJl
cGVhdCk7CiB1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHNob3dfaW50ZXJuYWxfc3RhY2tfZnJh
bWVzKTsKIHVzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcoc2h1ZmZsZSk7CiB1c2luZyB0ZXN0aW5n
OjpHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKTsKK3VzaW5nIHRlc3Rpbmc6OkdURVNUX0ZM
QUcoc3RyZWFtX3Jlc3VsdF90byk7CiB1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHRocm93X29u
X2ZhaWx1cmUpOwogdXNpbmcgdGVzdGluZzo6SXNOb3RTdWJzdHJpbmc7CiB1c2luZyB0ZXN0aW5n
OjpJc1N1YnN0cmluZzsKQEAgLTEzMiw1MyArMjI1LDc1IEBAIHVzaW5nIHRlc3Rpbmc6Ok1lc3Nh
Z2U7CiB1c2luZyB0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjsKIHVz
aW5nIHRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTsKIHVzaW5nIHRlc3Rpbmc6OlRlc3Q7Ci11
c2luZyB0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7CiB1c2luZyB0ZXN0aW5nOjpUZXN0Q2Fz
ZTsKK3VzaW5nIHRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyczsKK3VzaW5nIHRlc3Rpbmc6OlRl
c3RJbmZvOwogdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ7CiB1c2luZyB0ZXN0aW5nOjpU
ZXN0UGFydFJlc3VsdEFycmF5OwogdXNpbmcgdGVzdGluZzo6VGVzdFByb3BlcnR5OwogdXNpbmcg
dGVzdGluZzo6VGVzdFJlc3VsdDsKK3VzaW5nIHRlc3Rpbmc6OlRpbWVJbk1pbGxpczsKIHVzaW5n
IHRlc3Rpbmc6OlVuaXRUZXN0OwotdXNpbmcgdGVzdGluZzo6a01heFN0YWNrVHJhY2VEZXB0aDsK
K3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBZGRSZWZlcmVuY2U7CiB1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6QWx3YXlzRmFsc2U7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1
ZTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBcHBlbmRVc2VyTWVzc2FnZTsKK3VzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpBcnJheUF3YXJlRmluZDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjpBcnJheUVxOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkNvZGVQb2ludFRvVXRmODsKK3Vz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDsKK3VzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpDb3B5QXJyYXk7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q291
bnRJZjsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpFcUZhaWx1cmU7CiB1c2luZyB0ZXN0aW5n
OjppbnRlcm5hbDo6RmxvYXRpbmdQb2ludDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpGb3Jt
YXRUaW1lSW5NaWxsaXNBc1NlY29uZHM7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Rm9yRWFj
aDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNv
ODYwMTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29u
ZHM7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R1Rlc3RGbGFnU2F2ZXI7CiB1c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6R2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcDsKIHVzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpHZXRFbGVtZW50T3I7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6
R2V0TmV4dFJhbmRvbVNlZWQ7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0UmFuZG9tU2Vl
ZEZyb21GbGFnOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldFRlc3RUeXBlSWQ7Cit1c2lu
ZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VGltZUluTWlsbGlzOwogdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OkdldFR5cGVJZDsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRVbml0VGVzdElt
cGw7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRseUNvbnZlcnRpYmxlOwogdXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OkludDMyOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6Oklu
dDMyRnJvbUVudk9yRGllOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OklzQVByb3RvY29sTWVz
c2FnZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJc0NvbnRhaW5lcjsKK3VzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpJc0NvbnRhaW5lclRlc3Q7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6
SXNOb3RDb250YWluZXI7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6TmF0aXZlQXJyYXk7CiB1
c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UGFyc2VJbnQzMkZsYWc7Cit1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6UmVsYXRpb25Ub1NvdXJjZUNvcHk7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6
UmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpSZW1v
dmVDb25zdDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpSZW1vdmVSZWZlcmVuY2U7CiB1c2lu
ZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxkUnVuVGVzdE9uU2hhcmQ7CiB1c2luZyB0ZXN0aW5n
OjppbnRlcm5hbDo6U2hvdWxkU2hhcmQ7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxk
VXNlQ29sb3I7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2h1ZmZsZTsKIHVzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpTaHVmZmxlUmFuZ2U7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2tp
cFByZWZpeDsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmc7CiB1
c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OlRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlRl
c3RSZXN1bHRBY2Nlc3NvcjsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpVSW50MzI7CiB1c2lu
ZyB0ZXN0aW5nOjppbnRlcm5hbDo6V2lkZVN0cmluZ1RvVXRmODsKK3VzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjplZGl0X2Rpc3RhbmNlOjpDYWxjdWxhdGVPcHRpbWFsRWRpdHM7Cit1c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6ZWRpdF9kaXN0YW5jZTo6Q3JlYXRlVW5pZmllZERpZmY7Cit1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6ZWRpdF9kaXN0YW5jZTo6RWRpdFR5cGU7CiB1c2luZyB0ZXN0aW5n
OjppbnRlcm5hbDo6a01heFJhbmRvbVNlZWQ7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6a1Rl
c3RUeXBlSWRJbkdvb2dsZVRlc3Q7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVkX3B0
cjsKK3VzaW5nIHRlc3Rpbmc6OmtNYXhTdGFja1RyYWNlRGVwdGg7CiAKLSNpZiBHVEVTVF9IQVNf
U1RSRUFNX1JFRElSRUNUSU9OXworI2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KIHVz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpDYXB0dXJlU3Rkb3V0OwogdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OkdldENhcHR1cmVkU3Rkb3V0OwotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JF
RElSRUNUSU9OXworI2VuZGlmCiAKICNpZiBHVEVTVF9JU19USFJFQURTQUZFCiB1c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6VGhyZWFkV2l0aFBhcmFtOwpAQCAtMjg5LDEyICs0MDQsOTkgQEAgVEVT
VChGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHNUZXN0LCBGb3JtYXRzTmVnYXRpdmVOdW1iZXIp
IHsKICAgRVhQRUNUX0VRKCItMyIsIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcygtMzAwMCkp
OwogfQogCisvLyBUZXN0cyBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSgpLiAgVGhl
IGNvcnJlY3RuZXNzIG9mIGNvbnZlcnNpb24KKy8vIGZvciBwYXJ0aWN1bGFyIGRhdGVzIGJlbG93
IHdhcyB2ZXJpZmllZCBpbiBQeXRob24gdXNpbmcKKy8vIGRhdGV0aW1lLmRhdGV0aW1lLmZyb211
dGN0aW1lc3RhbXAoPHRpbWV0YW1wPi8xMDAwKS4KKworLy8gRm9ybWF0RXBvY2hUaW1lSW5NaWxs
aXNBc0lzbzg2MDEgZGVwZW5kcyBvbiB0aGUgY3VycmVudCB0aW1lem9uZSwgc28gd2UKKy8vIGhh
dmUgdG8gc2V0IHVwIGEgcGFydGljdWxhciB0aW1lem9uZSB0byBvYnRhaW4gcHJlZGljdGFibGUg
cmVzdWx0cy4KK2NsYXNzIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxVGVzdCA6IHB1
YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIC8vIE9uIEN5Z3dpbiwgR0NDIGRvZXNuJ3QgYWxsb3cg
dW5xdWFsaWZpZWQgaW50ZWdlciBsaXRlcmFscyB0byBleGNlZWQKKyAgLy8gMzIgYml0cywgZXZl
biB3aGVuIDY0LWJpdCBpbnRlZ2VyIHR5cGVzIGFyZSBhdmFpbGFibGUuICBXZSBoYXZlIHRvCisg
IC8vIGZvcmNlIHRoZSBjb25zdGFudHMgdG8gaGF2ZSBhIDY0LWJpdCB0eXBlIGhlcmUuCisgIHN0
YXRpYyBjb25zdCBUaW1lSW5NaWxsaXMga01pbGxpc1BlclNlYyA9IDEwMDA7CisKKyBwcml2YXRl
OgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgc2F2ZWRfdHpfID0gTlVMTDsKKworICAg
IEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQ5OTYgLyogZ2V0ZW52LCBzdHJkdXA6
IGRlcHJlY2F0ZWQgKi8pCisgICAgaWYgKGdldGVudigiVFoiKSkKKyAgICAgIHNhdmVkX3R6XyA9
IHN0cmR1cChnZXRlbnYoIlRaIikpOworICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BP
UF8oKQorCisgICAgLy8gU2V0IHVwIHRoZSB0aW1lIHpvbmUgZm9yIEZvcm1hdEVwb2NoVGltZUlu
TWlsbGlzQXNJc284NjAxIHRvIHVzZS4gIFdlCisgICAgLy8gY2Fubm90IHVzZSB0aGUgbG9jYWwg
dGltZSB6b25lIGJlY2F1c2UgdGhlIGZ1bmN0aW9uJ3Mgb3V0cHV0IGRlcGVuZHMKKyAgICAvLyBv
biB0aGUgdGltZSB6b25lLgorICAgIFNldFRpbWVab25lKCJVVEMrMDAiKTsKKyAgfQorCisgIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBTZXRUaW1lWm9uZShzYXZlZF90el8pOworICAg
IGZyZWUoY29uc3RfY2FzdDxjaGFyKj4oc2F2ZWRfdHpfKSk7CisgICAgc2F2ZWRfdHpfID0gTlVM
TDsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFNldFRpbWVab25lKGNvbnN0IGNoYXIqIHRpbWVfem9u
ZSkgeworICAgIC8vIHR6c2V0KCkgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIHRoZSBUWiB2YXJpYWJs
ZSBiZWluZyBwcmVzZW50IGFuZCBlbXB0eQorICAgIC8vIGFuZCBub3QgYmVpbmcgcHJlc2VudCwg
c28gd2UgaGF2ZSB0byBjb25zaWRlciB0aGUgY2FzZSBvZiB0aW1lX3pvbmUKKyAgICAvLyBiZWlu
ZyBOVUxMLgorI2lmIF9NU0NfVkVSCisgICAgLy8gLi4uVW5sZXNzIGl0J3MgTVNWQywgd2hvc2Ug
c3RhbmRhcmQgbGlicmFyeSdzIF9wdXRlbnYgZG9lc24ndAorICAgIC8vIGRpc3Rpbmd1aXNoIGJl
dHdlZW4gYW4gZW1wdHkgYW5kIGEgbWlzc2luZyB2YXJpYWJsZS4KKyAgICBjb25zdCBzdGQ6OnN0
cmluZyBlbnZfdmFyID0KKyAgICAgICAgc3RkOjpzdHJpbmcoIlRaPSIpICsgKHRpbWVfem9uZSA/
IHRpbWVfem9uZSA6ICIiKTsKKyAgICBfcHV0ZW52KGVudl92YXIuY19zdHIoKSk7CisgICAgR1RF
U1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDk5NiAvKiBkZXByZWNhdGVkIGZ1bmN0aW9u
ICovKQorICAgIHR6c2V0KCk7CisgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygp
CisjZWxzZQorICAgIGlmICh0aW1lX3pvbmUpIHsKKyAgICAgIHNldGVudigoIlRaIiksIHRpbWVf
em9uZSwgMSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHVuc2V0ZW52KCJUWiIpOworICAgIH0KKyAg
ICB0enNldCgpOworI2VuZGlmCisgIH0KKworICBjb25zdCBjaGFyKiBzYXZlZF90el87Cit9Owor
Citjb25zdCBUaW1lSW5NaWxsaXMgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0
OjprTWlsbGlzUGVyU2VjOworCitURVNUX0YoRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2
MDFUZXN0LCBQcmludHNUd29EaWdpdFNlZ21lbnRzKSB7CisgIEVYUEVDVF9FUSgiMjAxMS0xMC0z
MVQxODo1Mjo0MiIsCisgICAgICAgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYw
MSgxMzIwMDg3MTYyICoga01pbGxpc1BlclNlYykpOworfQorCitURVNUX0YoRm9ybWF0RXBvY2hU
aW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBNaWxsaXNlY29uZHNEb05vdEFmZmVjdFJlc3VsdCkg
eworICBFWFBFQ1RfRVEoCisgICAgICAiMjAxMS0xMC0zMVQxODo1Mjo0MiIsCisgICAgICBGb3Jt
YXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSgxMzIwMDg3MTYyICoga01pbGxpc1BlclNlYyAr
IDIzNCkpOworfQorCitURVNUX0YoRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0
LCBQcmludHNMZWFkaW5nWmVyb2VzKSB7CisgIEVYUEVDVF9FUSgiMjAxMS0wOS0wM1QwNTowNzow
MiIsCisgICAgICAgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSgxMzE1MDI2
NDIyICoga01pbGxpc1BlclNlYykpOworfQorCitURVNUX0YoRm9ybWF0RXBvY2hUaW1lSW5NaWxs
aXNBc0lzbzg2MDFUZXN0LCBQcmludHMyNEhvdXJUaW1lKSB7CisgIEVYUEVDVF9FUSgiMjAxMS0w
OS0yOFQxNzowODoyMiIsCisgICAgICAgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNv
ODYwMSgxMzE3MjI5NzAyICoga01pbGxpc1BlclNlYykpOworfQorCitURVNUX0YoRm9ybWF0RXBv
Y2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBQcmludHNFcG9jaFN0YXJ0KSB7CisgIEVYUEVD
VF9FUSgiMTk3MC0wMS0wMVQwMDowMDowMCIsIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284
NjAxKDApKTsKK30KKwogI2lmIEdURVNUX0NBTl9DT01QQVJFX05VTEwKIAotI2lmZGVmIF9fQk9S
TEFORENfXworIyBpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFNpbGVuY2VzIHdhcm5pbmdzOiAiQ29u
ZGl0aW9uIGlzIGFsd2F5cyB0cnVlIiwgIlVucmVhY2hhYmxlIGNvZGUiCi0jcHJhZ21hIG9wdGlv
biBwdXNoIC13LWNjYyAtdy1yY2gKLSNlbmRpZgorIyAgcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNj
YyAtdy1yY2gKKyMgZW5kaWYKIAogLy8gVGVzdHMgdGhhdCBHVEVTVF9JU19OVUxMX0xJVEVSQUxf
KHgpIGlzIHRydWUgd2hlbiB4IGlzIGEgbnVsbAogLy8gcG9pbnRlciBsaXRlcmFsLgpAQCAtMzAz
LDE0ICs1MDUsNiBAQCBURVNUKE51bGxMaXRlcmFsVGVzdCwgSXNUcnVlRm9yTnVsbExpdGVyYWxz
KSB7CiAgIEVYUEVDVF9UUlVFKEdURVNUX0lTX05VTExfTElURVJBTF8oMCkpOwogICBFWFBFQ1Rf
VFJVRShHVEVTVF9JU19OVUxMX0xJVEVSQUxfKDBVKSk7CiAgIEVYUEVDVF9UUlVFKEdURVNUX0lT
X05VTExfTElURVJBTF8oMEwpKTsKLSAgRVhQRUNUX1RSVUUoR1RFU1RfSVNfTlVMTF9MSVRFUkFM
XyhmYWxzZSkpOwotI2lmbmRlZiBfX0JPUkxBTkRDX18KLSAgLy8gU29tZSBjb21waWxlcnMgbWF5
IGZhaWwgdG8gZGV0ZWN0IHNvbWUgbnVsbCBwb2ludGVyIGxpdGVyYWxzOwotICAvLyBhcyBsb25n
IGFzIHVzZXJzIG9mIHRoZSBmcmFtZXdvcmsgZG9uJ3QgdXNlIHN1Y2ggbGl0ZXJhbHMsIHRoaXMK
LSAgLy8gaXMgaGFybWxlc3MuCi0gIEVYUEVDVF9UUlVFKEdURVNUX0lTX05VTExfTElURVJBTF8o
MSAtIDEpKTsKLSAgRVhQRUNUX1RSVUUoR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh0cnVlICYmIGZh
bHNlKSk7Ci0jZW5kaWYKIH0KIAogLy8gVGVzdHMgdGhhdCBHVEVTVF9JU19OVUxMX0xJVEVSQUxf
KHgpIGlzIGZhbHNlIHdoZW4geCBpcyBub3QgYSBudWxsCkBAIC0zMjIsMTAgKzUxNiwxMCBAQCBU
RVNUKE51bGxMaXRlcmFsVGVzdCwgSXNGYWxzZUZvck5vbk51bGxMaXRlcmFscykgewogICBFWFBF
Q1RfRkFMU0UoR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyhzdGF0aWNfY2FzdDx2b2lkKj4oTlVMTCkp
KTsKIH0KIAotI2lmZGVmIF9fQk9STEFORENfXworIyBpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFJl
c3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXBw
cmVzc2VkIHRoZW0uCi0jcHJhZ21hIG9wdGlvbiBwb3AKLSNlbmRpZgorIyAgcHJhZ21hIG9wdGlv
biBwb3AKKyMgZW5kaWYKIAogI2VuZGlmICAvLyBHVEVTVF9DQU5fQ09NUEFSRV9OVUxMCiAvLwpA
QCAtMzMzLDM5ICs1MjcsNDEgQEAgVEVTVChOdWxsTGl0ZXJhbFRlc3QsIElzRmFsc2VGb3JOb25O
dWxsTGl0ZXJhbHMpIHsKIAogLy8gVGVzdHMgdGhhdCB0aGUgTlVMIGNoYXJhY3RlciBMJ1wwJyBp
cyBlbmNvZGVkIGNvcnJlY3RseS4KIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2Rl
TnVsKSB7Ci0gIGNoYXIgYnVmZmVyWzMyXTsKLSAgRVhQRUNUX1NUUkVRKCIiLCBDb2RlUG9pbnRU
b1V0ZjgoTCdcMCcsIGJ1ZmZlcikpOworICBFWFBFQ1RfRVEoIiIsIENvZGVQb2ludFRvVXRmOChM
J1wwJykpOwogfQogCiAvLyBUZXN0cyB0aGF0IEFTQ0lJIGNoYXJhY3RlcnMgYXJlIGVuY29kZWQg
Y29ycmVjdGx5LgogVEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBDYW5FbmNvZGVBc2NpaSkgewot
ICBjaGFyIGJ1ZmZlclszMl07Ci0gIEVYUEVDVF9TVFJFUSgiYSIsIENvZGVQb2ludFRvVXRmOChM
J2EnLCBidWZmZXIpKTsKLSAgRVhQRUNUX1NUUkVRKCJaIiwgQ29kZVBvaW50VG9VdGY4KEwnWics
IGJ1ZmZlcikpOwotICBFWFBFQ1RfU1RSRVEoIiYiLCBDb2RlUG9pbnRUb1V0ZjgoTCcmJywgYnVm
ZmVyKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHg3RiIsIENvZGVQb2ludFRvVXRmOChMJ1x4N0YnLCBi
dWZmZXIpKTsKKyAgRVhQRUNUX0VRKCJhIiwgQ29kZVBvaW50VG9VdGY4KEwnYScpKTsKKyAgRVhQ
RUNUX0VRKCJaIiwgQ29kZVBvaW50VG9VdGY4KEwnWicpKTsKKyAgRVhQRUNUX0VRKCImIiwgQ29k
ZVBvaW50VG9VdGY4KEwnJicpKTsKKyAgRVhQRUNUX0VRKCJceDdGIiwgQ29kZVBvaW50VG9VdGY4
KEwnXHg3RicpKTsKIH0KIAogLy8gVGVzdHMgdGhhdCBVbmljb2RlIGNvZGUtcG9pbnRzIHRoYXQg
aGF2ZSA4IHRvIDExIGJpdHMgYXJlIGVuY29kZWQKIC8vIGFzIDExMHh4eHh4IDEweHh4eHh4Lgog
VEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBDYW5FbmNvZGU4VG8xMUJpdHMpIHsKLSAgY2hhciBi
dWZmZXJbMzJdOwogICAvLyAwMDAgMTEwMSAwMDExID0+IDExMC0wMDAxMSAxMC0wMTAwMTEKLSAg
RVhQRUNUX1NUUkVRKCJceEMzXHg5MyIsIENvZGVQb2ludFRvVXRmOChMJ1x4RDMnLCBidWZmZXIp
KTsKKyAgRVhQRUNUX0VRKCJceEMzXHg5MyIsIENvZGVQb2ludFRvVXRmOChMJ1x4RDMnKSk7CiAK
ICAgLy8gMTAxIDAxMTEgMDExMCA9PiAxMTAtMTAxMDEgMTAtMTEwMTEwCi0gIEVYUEVDVF9TVFJF
USgiXHhENVx4QjYiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDU3NicsIGJ1ZmZlcikpOworICAvLyBT
b21lIGNvbXBpbGVycyAoZS5nLiwgR0NDIG9uIE1pbkdXKSBjYW5ub3QgaGFuZGxlIG5vbi1BU0NJ
SSBjb2RlcG9pbnRzCisgIC8vIGluIHdpZGUgc3RyaW5ncyBhbmQgd2lkZSBjaGFycy4gSW4gb3Jk
ZXIgdG8gYWNjb21vZGF0ZSB0aGVtLCB3ZSBoYXZlIHRvCisgIC8vIGludHJvZHVjZSBzdWNoIGNo
YXJhY3RlciBjb25zdGFudHMgYXMgaW50ZWdlcnMuCisgIEVYUEVDVF9FUSgiXHhENVx4QjYiLAor
ICAgICAgICAgICAgQ29kZVBvaW50VG9VdGY4KHN0YXRpY19jYXN0PHdjaGFyX3Q+KDB4NTc2KSkp
OwogfQogCiAvLyBUZXN0cyB0aGF0IFVuaWNvZGUgY29kZS1wb2ludHMgdGhhdCBoYXZlIDEyIHRv
IDE2IGJpdHMgYXJlIGVuY29kZWQKIC8vIGFzIDExMTB4eHh4IDEweHh4eHh4IDEweHh4eHh4Lgog
VEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBDYW5FbmNvZGUxMlRvMTZCaXRzKSB7Ci0gIGNoYXIg
YnVmZmVyWzMyXTsKICAgLy8gMDAwMCAxMDAwIDExMDEgMDAxMSA9PiAxMTEwLTAwMDAgMTAtMTAw
MDExIDEwLTAxMDAxMQotICBFWFBFQ1RfU1RSRVEoIlx4RTBceEEzXHg5MyIsIENvZGVQb2ludFRv
VXRmOChMJ1x4OEQzJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiXHhFMFx4QTNceDkzIiwKKyAg
ICAgICAgICAgIENvZGVQb2ludFRvVXRmOChzdGF0aWNfY2FzdDx3Y2hhcl90PigweDhEMykpKTsK
IAogICAvLyAxMTAwIDAxMTEgMDEwMCAxMTAxID0+IDExMTAtMTEwMCAxMC0wMTExMDEgMTAtMDAx
MTAxCi0gIEVYUEVDVF9TVFJFUSgiXHhFQ1x4OURceDhEIiwgQ29kZVBvaW50VG9VdGY4KEwnXHhD
NzREJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiXHhFQ1x4OURceDhEIiwKKyAgICAgICAgICAg
IENvZGVQb2ludFRvVXRmOChzdGF0aWNfY2FzdDx3Y2hhcl90PigweEM3NEQpKSk7CiB9CiAKICNp
ZiAhR1RFU1RfV0lERV9TVFJJTkdfVVNFU19VVEYxNl8KQEAgLTM3NiwyMiArNTcyLDE5IEBAIFRF
U1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2RlMTJUbzE2Qml0cykgewogLy8gVGVzdHMg
dGhhdCBVbmljb2RlIGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSAxNyB0byAyMSBiaXRzIGFyZSBlbmNv
ZGVkCiAvLyBhcyAxMTExMHh4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eC4KIFRFU1QoQ29k
ZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2RlMTdUbzIxQml0cykgewotICBjaGFyIGJ1ZmZlclsz
Ml07CiAgIC8vIDAgMDAwMSAwMDAwIDEwMDAgMTEwMSAwMDExID0+IDExMTEwLTAwMCAxMC0wMTAw
MDAgMTAtMTAwMDExIDEwLTAxMDAxMQotICBFWFBFQ1RfU1RSRVEoIlx4RjBceDkwXHhBM1x4OTMi
LCBDb2RlUG9pbnRUb1V0ZjgoTCdceDEwOEQzJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiXHhG
MFx4OTBceEEzXHg5MyIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA4RDMnKSk7CiAKICAgLy8gMCAw
MDAxIDAwMDAgMDEwMCAwMDAwIDAwMDAgPT4gMTExMTAtMDAwIDEwLTAxMDAwMCAxMC0wMTAwMDAg
MTAtMDAwMDAwCi0gIEVYUEVDVF9TVFJFUSgiXHhGMFx4OTBceDkwXHg4MCIsIENvZGVQb2ludFRv
VXRmOChMJ1x4MTA0MDAnLCBidWZmZXIpKTsKKyAgRVhQRUNUX0VRKCJceEYwXHg5MFx4OTBceDgw
IiwgQ29kZVBvaW50VG9VdGY4KEwnXHgxMDQwMCcpKTsKIAogICAvLyAxIDAwMDAgMTAwMCAwMTEw
IDAwMTEgMDEwMCA9PiAxMTExMC0xMDAgMTAtMDAxMDAwIDEwLTAxMTAwMCAxMC0xMTAxMDAKLSAg
RVhQRUNUX1NUUkVRKCJceEY0XHg4OFx4OThceEI0IiwgQ29kZVBvaW50VG9VdGY4KEwnXHgxMDg2
MzQnLCBidWZmZXIpKTsKKyAgRVhQRUNUX0VRKCJceEY0XHg4OFx4OThceEI0IiwgQ29kZVBvaW50
VG9VdGY4KEwnXHgxMDg2MzQnKSk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgZW5jb2RpbmcgYW4gaW52
YWxpZCBjb2RlLXBvaW50IGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgcmVzdWx0LgogVEVTVChDb2Rl
UG9pbnRUb1V0ZjhUZXN0LCBDYW5FbmNvZGVJbnZhbGlkQ29kZVBvaW50KSB7Ci0gIGNoYXIgYnVm
ZmVyWzMyXTsKLSAgRVhQRUNUX1NUUkVRKCIoSW52YWxpZCBVbmljb2RlIDB4MTIzNEFCQ0QpIiwK
LSAgICAgICAgICAgICAgIENvZGVQb2ludFRvVXRmOChMJ1x4MTIzNEFCQ0QnLCBidWZmZXIpKTsK
KyAgRVhQRUNUX0VRKCIoSW52YWxpZCBVbmljb2RlIDB4MTIzNEFCQ0QpIiwgQ29kZVBvaW50VG9V
dGY4KEwnXHgxMjM0QUJDRCcpKTsKIH0KIAogI2VuZGlmICAvLyAhR1RFU1RfV0lERV9TVFJJTkdf
VVNFU19VVEYxNl8KQEAgLTQyMCwyMCArNjEzLDIzIEBAIFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRl
c3QsIENhbkVuY29kZThUbzExQml0cykgewogICBFWFBFQ1RfU1RSRVEoIlx4QzNceDkzIiwgV2lk
ZVN0cmluZ1RvVXRmOChMIlx4RDMiLCAtMSkuY19zdHIoKSk7CiAKICAgLy8gMTAxIDAxMTEgMDEx
MCA9PiAxMTAtMTAxMDEgMTAtMTEwMTEwCi0gIEVYUEVDVF9TVFJFUSgiXHhENVx4QjYiLCBXaWRl
U3RyaW5nVG9VdGY4KEwiXHg1NzYiLCAxKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJceEQ1
XHhCNiIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceDU3NiIsIC0xKS5jX3N0cigpKTsKKyAgY29uc3Qg
d2NoYXJfdCBzW10gPSB7IDB4NTc2LCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhENVx4QjYi
LCBXaWRlU3RyaW5nVG9VdGY4KHMsIDEpLmNfc3RyKCkpOworICBFWFBFQ1RfU1RSRVEoIlx4RDVc
eEI2IiwgV2lkZVN0cmluZ1RvVXRmOChzLCAtMSkuY19zdHIoKSk7CiB9CiAKIC8vIFRlc3RzIHRo
YXQgVW5pY29kZSBjb2RlLXBvaW50cyB0aGF0IGhhdmUgMTIgdG8gMTYgYml0cyBhcmUgZW5jb2Rl
ZAogLy8gYXMgMTExMHh4eHggMTB4eHh4eHggMTB4eHh4eHguCiBURVNUKFdpZGVTdHJpbmdUb1V0
ZjhUZXN0LCBDYW5FbmNvZGUxMlRvMTZCaXRzKSB7CiAgIC8vIDAwMDAgMTAwMCAxMTAxIDAwMTEg
PT4gMTExMC0wMDAwIDEwLTEwMDAxMSAxMC0wMTAwMTEKLSAgRVhQRUNUX1NUUkVRKCJceEUwXHhB
M1x4OTMiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHg4RDMiLCAxKS5jX3N0cigpKTsKLSAgRVhQRUNU
X1NUUkVRKCJceEUwXHhBM1x4OTMiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHg4RDMiLCAtMSkuY19z
dHIoKSk7CisgIGNvbnN0IHdjaGFyX3QgczFbXSA9IHsgMHg4RDMsICdcMCcgfTsKKyAgRVhQRUNU
X1NUUkVRKCJceEUwXHhBM1x4OTMiLCBXaWRlU3RyaW5nVG9VdGY4KHMxLCAxKS5jX3N0cigpKTsK
KyAgRVhQRUNUX1NUUkVRKCJceEUwXHhBM1x4OTMiLCBXaWRlU3RyaW5nVG9VdGY4KHMxLCAtMSku
Y19zdHIoKSk7CiAKICAgLy8gMTEwMCAwMTExIDAxMDAgMTEwMSA9PiAxMTEwLTExMDAgMTAtMDEx
MTAxIDEwLTAwMTEwMQotICBFWFBFQ1RfU1RSRVEoIlx4RUNceDlEXHg4RCIsIFdpZGVTdHJpbmdU
b1V0ZjgoTCJceEM3NEQiLCAxKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJceEVDXHg5RFx4
OEQiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhDNzREIiwgLTEpLmNfc3RyKCkpOworICBjb25zdCB3
Y2hhcl90IHMyW10gPSB7IDB4Qzc0RCwgJ1wwJyB9OworICBFWFBFQ1RfU1RSRVEoIlx4RUNceDlE
XHg4RCIsIFdpZGVTdHJpbmdUb1V0ZjgoczIsIDEpLmNfc3RyKCkpOworICBFWFBFQ1RfU1RSRVEo
Ilx4RUNceDlEXHg4RCIsIFdpZGVTdHJpbmdUb1V0ZjgoczIsIC0xKS5jX3N0cigpKTsKIH0KIAog
Ly8gVGVzdHMgdGhhdCB0aGUgY29udmVyc2lvbiBzdG9wcyB3aGVuIHRoZSBmdW5jdGlvbiBlbmNv
dW50ZXJzIFwwIGNoYXJhY3Rlci4KQEAgLTQ0Nyw3ICs2NDMsNiBAQCBURVNUKFdpZGVTdHJpbmdU
b1V0ZjhUZXN0LCBTdG9wc1doZW5MZW5ndGhMaW1pdFJlYWNoZWQpIHsKICAgRVhQRUNUX1NUUkVR
KCJBQkMiLCBXaWRlU3RyaW5nVG9VdGY4KEwiQUJDREVGIiwgMykuY19zdHIoKSk7CiB9CiAKLQog
I2lmICFHVEVTVF9XSURFX1NUUklOR19VU0VTX1VURjE2XwogLy8gVGVzdHMgdGhhdCBVbmljb2Rl
IGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSAxNyB0byAyMSBiaXRzIGFyZSBlbmNvZGVkCiAvLyBhcyAx
MTExMHh4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eC4gVGhpcyBjb2RlIG1heSBub3QgY29t
cGlsZQpAQCAtNDcxLDI1ICs2NjYsMjkgQEAgVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgQ2Fu
RW5jb2RlSW52YWxpZENvZGVQb2ludCkgewogLy8gVGVzdHMgdGhhdCBzdXJyb2dhdGUgcGFpcnMg
YXJlIGVuY29kZWQgY29ycmVjdGx5IG9uIHRoZSBzeXN0ZW1zIHVzaW5nCiAvLyBVVEYtMTYgZW5j
b2RpbmcgaW4gdGhlIHdpZGUgc3RyaW5ncy4KIFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENh
bkVuY29kZVZhbGlkVXRmMTZTVXJyb2dhdGVQYWlycykgewotICBFWFBFQ1RfU1RSRVEoIlx4RjBc
eDkwXHg5MFx4ODAiLAotICAgICAgICAgICAgICAgV2lkZVN0cmluZ1RvVXRmOChMIlx4RDgwMVx4
REMwMCIsIC0xKS5jX3N0cigpKTsKKyAgY29uc3Qgd2NoYXJfdCBzW10gPSB7IDB4RDgwMSwgMHhE
QzAwLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhGMFx4OTBceDkwXHg4MCIsIFdpZGVTdHJp
bmdUb1V0ZjgocywgLTEpLmNfc3RyKCkpOwogfQogCiAvLyBUZXN0cyB0aGF0IGVuY29kaW5nIGFu
IGludmFsaWQgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyCiAvLyBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVk
IHJlc3VsdC4KIFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENhbkVuY29kZUludmFsaWRVdGYx
NlN1cnJvZ2F0ZVBhaXIpIHsKICAgLy8gTGVhZGluZyBzdXJyb2dhdGUgaXMgYXQgdGhlIGVuZCBv
ZiB0aGUgc3RyaW5nLgotICBFWFBFQ1RfU1RSRVEoIlx4RURceEEwXHg4MCIsIFdpZGVTdHJpbmdU
b1V0ZjgoTCJceEQ4MDAiLCAtMSkuY19zdHIoKSk7CisgIGNvbnN0IHdjaGFyX3QgczFbXSA9IHsg
MHhEODAwLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhFRFx4QTBceDgwIiwgV2lkZVN0cmlu
Z1RvVXRmOChzMSwgLTEpLmNfc3RyKCkpOwogICAvLyBMZWFkaW5nIHN1cnJvZ2F0ZSBpcyBub3Qg
Zm9sbG93ZWQgYnkgdGhlIHRyYWlsaW5nIHN1cnJvZ2F0ZS4KLSAgRVhQRUNUX1NUUkVRKCJceEVE
XHhBMFx4ODAkIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4RDgwMCQiLCAtMSkuY19zdHIoKSk7Cisg
IGNvbnN0IHdjaGFyX3QgczJbXSA9IHsgMHhEODAwLCAnTScsICdcMCcgfTsKKyAgRVhQRUNUX1NU
UkVRKCJceEVEXHhBMFx4ODBNIiwgV2lkZVN0cmluZ1RvVXRmOChzMiwgLTEpLmNfc3RyKCkpOwog
ICAvLyBUcmFpbGluZyBzdXJyb2dhdGUgYXBwZWFyYXMgd2l0aG91dCBhIGxlYWRpbmcgc3Vycm9n
YXRlLgotICBFWFBFQ1RfU1RSRVEoIlx4RURceEIwXHg4MFBRUiIsIFdpZGVTdHJpbmdUb1V0Zjgo
TCJceERDMDBQUVIiLCAtMSkuY19zdHIoKSk7CisgIGNvbnN0IHdjaGFyX3QgczNbXSA9IHsgMHhE
QzAwLCAnUCcsICdRJywgJ1InLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhFRFx4QjBceDgw
UFFSIiwgV2lkZVN0cmluZ1RvVXRmOChzMywgLTEpLmNfc3RyKCkpOwogfQogI2VuZGlmICAvLyAh
R1RFU1RfV0lERV9TVFJJTkdfVVNFU19VVEYxNl8KIAogLy8gVGVzdHMgdGhhdCBjb2RlcG9pbnQg
Y29uY2F0ZW5hdGlvbiB3b3JrcyBjb3JyZWN0bHkuCiAjaWYgIUdURVNUX1dJREVfU1RSSU5HX1VT
RVNfVVRGMTZfCiBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDb25jYXRlbmF0ZXNDb2RlcG9p
bnRzQ29ycmVjdGx5KSB7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0geyAweDEwODYzNCwgMHhDNzRE
LCAnXG4nLCAweDU3NiwgMHg4RDMsIDB4MTA4NjM0LCAnXDAnfTsKICAgRVhQRUNUX1NUUkVRKAog
ICAgICAgIlx4RjRceDg4XHg5OFx4QjQiCiAgICAgICAgICAgIlx4RUNceDlEXHg4RCIKQEAgLTQ5
NywxMyArNjk2LDE0IEBAIFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENvbmNhdGVuYXRlc0Nv
ZGVwb2ludHNDb3JyZWN0bHkpIHsKICAgICAgICAgICAiXHhENVx4QjYiCiAgICAgICAgICAgIlx4
RTBceEEzXHg5MyIKICAgICAgICAgICAiXHhGNFx4ODhceDk4XHhCNCIsCi0gICAgICBXaWRlU3Ry
aW5nVG9VdGY4KEwiXHgxMDg2MzRceEM3NERcblx4NTc2XHg4RDNceDEwODYzNCIsIC0xKS5jX3N0
cigpKTsKKyAgICAgIFdpZGVTdHJpbmdUb1V0ZjgocywgLTEpLmNfc3RyKCkpOwogfQogI2Vsc2UK
IFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENvbmNhdGVuYXRlc0NvZGVwb2ludHNDb3JyZWN0
bHkpIHsKKyAgY29uc3Qgd2NoYXJfdCBzW10gPSB7IDB4Qzc0RCwgJ1xuJywgMHg1NzYsIDB4OEQz
LCAnXDAnfTsKICAgRVhQRUNUX1NUUkVRKAogICAgICAgIlx4RUNceDlEXHg4RCIgIlxuIiAiXHhE
NVx4QjYiICJceEUwXHhBM1x4OTMiLAotICAgICAgV2lkZVN0cmluZ1RvVXRmOChMIlx4Qzc0RFxu
XHg1NzZceDhEMyIsIC0xKS5jX3N0cigpKTsKKyAgICAgIFdpZGVTdHJpbmdUb1V0ZjgocywgLTEp
LmNfc3RyKCkpOwogfQogI2VuZGlmICAvLyAhR1RFU1RfV0lERV9TVFJJTkdfVVNFU19VVEYxNl8K
IApAQCAtNzk3LDI2OSArOTk3LDE2IEBAIFRFU1QoQXNzZXJ0SGVscGVyVGVzdCwgQXNzZXJ0SGVs
cGVySXNTbWFsbCkgewogICBFWFBFQ1RfTEUoc2l6ZW9mKHRlc3Rpbmc6OmludGVybmFsOjpBc3Nl
cnRIZWxwZXIpLCBzaXplb2Yodm9pZCopKTsKIH0KIAotLy8gVGVzdHMgdGhlIFN0cmluZyBjbGFz
cy4KLQotLy8gVGVzdHMgU3RyaW5nJ3MgY29uc3RydWN0b3JzLgotVEVTVChTdHJpbmdUZXN0LCBD
b25zdHJ1Y3RvcnMpIHsKLSAgLy8gRGVmYXVsdCBjdG9yLgotICBTdHJpbmcgczE7Ci0gIC8vIFdl
IGFyZW4ndCB1c2luZyBFWFBFQ1RfRVEoTlVMTCwgczEuY19zdHIoKSkgYmVjYXVzZSBjb21wYXJp
bmcKLSAgLy8gcG9pbnRlcnMgd2l0aCBOVUxMIGlzbid0IHN1cHBvcnRlZCBvbiBhbGwgcGxhdGZv
cm1zLgotICBFWFBFQ1RfRVEoMFUsIHMxLmxlbmd0aCgpKTsKLSAgRVhQRUNUX1RSVUUoTlVMTCA9
PSBzMS5jX3N0cigpKTsKLQotICAvLyBJbXBsaWNpdGx5IGNvbnN0cnVjdHMgZnJvbSBhIEMtc3Ry
aW5nLgotICBTdHJpbmcgczIgPSAiSGkiOwotICBFWFBFQ1RfRVEoMlUsIHMyLmxlbmd0aCgpKTsK
LSAgRVhQRUNUX1NUUkVRKCJIaSIsIHMyLmNfc3RyKCkpOwotCi0gIC8vIENvbnN0cnVjdHMgZnJv
bSBhIEMtc3RyaW5nIGFuZCBhIGxlbmd0aC4KLSAgU3RyaW5nIHMzKCJoZWxsbyIsIDMpOwotICBF
WFBFQ1RfRVEoM1UsIHMzLmxlbmd0aCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJoZWwiLCBzMy5jX3N0
cigpKTsKLQotICAvLyBUaGUgZW1wdHkgU3RyaW5nIHNob3VsZCBiZSBjcmVhdGVkIHdoZW4gU3Ry
aW5nIGlzIGNvbnN0cnVjdGVkIHdpdGgKLSAgLy8gYSBOVUxMIHBvaW50ZXIgYW5kIGxlbmd0aCAw
LgotICBFWFBFQ1RfRVEoMFUsIFN0cmluZyhOVUxMLCAwKS5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9G
QUxTRShTdHJpbmcoTlVMTCwgMCkuY19zdHIoKSA9PSBOVUxMKTsKLQotICAvLyBDb25zdHJ1Y3Rz
IGEgU3RyaW5nIHRoYXQgY29udGFpbnMgJ1wwJy4KLSAgU3RyaW5nIHM0KCJhXDBiY2QiLCA0KTsK
LSAgRVhQRUNUX0VRKDRVLCBzNC5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgnYScsIHM0LmNfc3Ry
KClbMF0pOwotICBFWFBFQ1RfRVEoJ1wwJywgczQuY19zdHIoKVsxXSk7Ci0gIEVYUEVDVF9FUSgn
YicsIHM0LmNfc3RyKClbMl0pOwotICBFWFBFQ1RfRVEoJ2MnLCBzNC5jX3N0cigpWzNdKTsKLQot
ICAvLyBDb3B5IGN0b3Igd2hlcmUgdGhlIHNvdXJjZSBpcyBOVUxMLgotICBjb25zdCBTdHJpbmcg
bnVsbF9zdHI7Ci0gIFN0cmluZyBzNSA9IG51bGxfc3RyOwotICBFWFBFQ1RfVFJVRShzNS5jX3N0
cigpID09IE5VTEwpOwotCi0gIC8vIENvcHkgY3RvciB3aGVyZSB0aGUgc291cmNlIGlzbid0IE5V
TEwuCi0gIFN0cmluZyBzNiA9IHMzOwotICBFWFBFQ1RfRVEoM1UsIHM2Lmxlbmd0aCgpKTsKLSAg
RVhQRUNUX1NUUkVRKCJoZWwiLCBzNi5jX3N0cigpKTsKLQotICAvLyBDb3B5IGN0b3Igd2hlcmUg
dGhlIHNvdXJjZSBjb250YWlucyAnXDAnLgotICBTdHJpbmcgczcgPSBzNDsKLSAgRVhQRUNUX0VR
KDRVLCBzNy5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgnYScsIHM3LmNfc3RyKClbMF0pOwotICBF
WFBFQ1RfRVEoJ1wwJywgczcuY19zdHIoKVsxXSk7Ci0gIEVYUEVDVF9FUSgnYicsIHM3LmNfc3Ry
KClbMl0pOwotICBFWFBFQ1RfRVEoJ2MnLCBzNy5jX3N0cigpWzNdKTsKLX0KLQotVEVTVChTdHJp
bmdUZXN0LCBDb252ZXJ0c0Zyb21TdGRTdHJpbmcpIHsKLSAgLy8gQW4gZW1wdHkgc3RkOjpzdHJp
bmcuCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIHNyYzEoIiIpOwotICBjb25zdCBTdHJpbmcgZGVzdDEg
PSBzcmMxOwotICBFWFBFQ1RfRVEoMFUsIGRlc3QxLmxlbmd0aCgpKTsKLSAgRVhQRUNUX1NUUkVR
KCIiLCBkZXN0MS5jX3N0cigpKTsKLQotICAvLyBBIG5vcm1hbCBzdGQ6OnN0cmluZy4KLSAgY29u
c3Qgc3RkOjpzdHJpbmcgc3JjMigiSGkiKTsKLSAgY29uc3QgU3RyaW5nIGRlc3QyID0gc3JjMjsK
LSAgRVhQRUNUX0VRKDJVLCBkZXN0Mi5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiSGkiLCBk
ZXN0Mi5jX3N0cigpKTsKLQotICAvLyBBbiBzdGQ6OnN0cmluZyB3aXRoIGFuIGVtYmVkZGVkIE5V
TCBjaGFyYWN0ZXIuCi0gIGNvbnN0IGNoYXIgc3JjM1tdID0gImFcMGIiOwotICBjb25zdCBTdHJp
bmcgZGVzdDMgPSBzdGQ6OnN0cmluZyhzcmMzLCBzaXplb2Yoc3JjMykpOwotICBFWFBFQ1RfRVEo
c2l6ZW9mKHNyYzMpLCBkZXN0My5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgnYScsIGRlc3QzLmNf
c3RyKClbMF0pOwotICBFWFBFQ1RfRVEoJ1wwJywgZGVzdDMuY19zdHIoKVsxXSk7Ci0gIEVYUEVD
VF9FUSgnYicsIGRlc3QzLmNfc3RyKClbMl0pOwotfQotCi1URVNUKFN0cmluZ1Rlc3QsIENvbnZl
cnRzVG9TdGRTdHJpbmcpIHsKLSAgLy8gQW4gZW1wdHkgU3RyaW5nLgotICBjb25zdCBTdHJpbmcg
c3JjMSgiIik7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGRlc3QxID0gc3JjMTsKLSAgRVhQRUNUX0VR
KCIiLCBkZXN0MSk7Ci0KLSAgLy8gQSBub3JtYWwgU3RyaW5nLgotICBjb25zdCBTdHJpbmcgc3Jj
MigiSGkiKTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZGVzdDIgPSBzcmMyOwotICBFWFBFQ1RfRVEo
IkhpIiwgZGVzdDIpOwotCi0gIC8vIEEgU3RyaW5nIGNvbnRhaW5pbmcgYSAnXDAnLgotICBjb25z
dCBTdHJpbmcgc3JjMygieFwweSIsIDMpOwotICBjb25zdCBzdGQ6OnN0cmluZyBkZXN0MyA9IHNy
YzM7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0cmluZygieFwweSIsIDMpLCBkZXN0Myk7Ci19Ci0KLSNp
ZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotCi1URVNUKFN0cmluZ1Rlc3QsIENvbnZlcnRzRnJv
bUdsb2JhbFN0cmluZykgewotICAvLyBBbiBlbXB0eSA6OnN0cmluZy4KLSAgY29uc3QgOjpzdHJp
bmcgc3JjMSgiIik7Ci0gIGNvbnN0IFN0cmluZyBkZXN0MSA9IHNyYzE7Ci0gIEVYUEVDVF9FUSgw
VSwgZGVzdDEubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIGRlc3QxLmNfc3RyKCkpOwot
Ci0gIC8vIEEgbm9ybWFsIDo6c3RyaW5nLgotICBjb25zdCA6OnN0cmluZyBzcmMyKCJIaSIpOwot
ICBjb25zdCBTdHJpbmcgZGVzdDIgPSBzcmMyOwotICBFWFBFQ1RfRVEoMlUsIGRlc3QyLmxlbmd0
aCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJIaSIsIGRlc3QyLmNfc3RyKCkpOwotCi0gIC8vIEFuIDo6
c3RyaW5nIHdpdGggYW4gZW1iZWRkZWQgTlVMIGNoYXJhY3Rlci4KLSAgY29uc3QgY2hhciBzcmMz
W10gPSAieFwweSI7Ci0gIGNvbnN0IFN0cmluZyBkZXN0MyA9IDo6c3RyaW5nKHNyYzMsIHNpemVv
ZihzcmMzKSk7Ci0gIEVYUEVDVF9FUShzaXplb2Yoc3JjMyksIGRlc3QzLmxlbmd0aCgpKTsKLSAg
RVhQRUNUX0VRKCd4JywgZGVzdDMuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgnXDAnLCBkZXN0
My5jX3N0cigpWzFdKTsKLSAgRVhQRUNUX0VRKCd5JywgZGVzdDMuY19zdHIoKVsyXSk7Ci19Ci0K
LVRFU1QoU3RyaW5nVGVzdCwgQ29udmVydHNUb0dsb2JhbFN0cmluZykgewotICAvLyBBbiBlbXB0
eSBTdHJpbmcuCi0gIGNvbnN0IFN0cmluZyBzcmMxKCIiKTsKLSAgY29uc3QgOjpzdHJpbmcgZGVz
dDEgPSBzcmMxOwotICBFWFBFQ1RfRVEoIiIsIGRlc3QxKTsKLQotICAvLyBBIG5vcm1hbCBTdHJp
bmcuCi0gIGNvbnN0IFN0cmluZyBzcmMyKCJIaSIpOwotICBjb25zdCA6OnN0cmluZyBkZXN0MiA9
IHNyYzI7Ci0gIEVYUEVDVF9FUSgiSGkiLCBkZXN0Mik7Ci0KLSAgY29uc3QgU3RyaW5nIHNyYzMo
InhcMHkiLCAzKTsKLSAgY29uc3QgOjpzdHJpbmcgZGVzdDMgPSBzcmMzOwotICBFWFBFQ1RfRVEo
OjpzdHJpbmcoInhcMHkiLCAzKSwgZGVzdDMpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19H
TE9CQUxfU1RSSU5HCi0KLS8vIFRlc3RzIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQoKS4KLVRF
U1QoU3RyaW5nVGVzdCwgU2hvd0NTdHJpbmdRdW90ZWQpIHsKLSAgRVhQRUNUX1NUUkVRKCIobnVs
bCkiLAotICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93Q1N0cmluZ1F1b3RlZChOVUxMKS5jX3N0
cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJcIlwiIiwKLSAgICAgICAgICAgICAgIFN0cmluZzo6U2hv
d0NTdHJpbmdRdW90ZWQoIiIpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIlwiZm9vXCIiLAot
ICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93Q1N0cmluZ1F1b3RlZCgiZm9vIikuY19zdHIoKSk7
Ci19Ci0KLS8vIFRlc3RzIFN0cmluZzo6ZW1wdHkoKS4KLVRFU1QoU3RyaW5nVGVzdCwgRW1wdHkp
IHsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCIiKS5lbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0
cmluZygpLmVtcHR5KCkpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKE5VTEwpLmVtcHR5KCkpOwot
ICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCJhIikuZW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShTdHJp
bmcoIlwwIiwgMSkuZW1wdHkoKSk7Ci19Ci0KLS8vIFRlc3RzIFN0cmluZzo6Q29tcGFyZSgpLgot
VEVTVChTdHJpbmdUZXN0LCBDb21wYXJlKSB7Ci0gIC8vIE5VTEwgdnMgTlVMTC4KLSAgRVhQRUNU
X0VRKDAsIFN0cmluZygpLkNvbXBhcmUoU3RyaW5nKCkpKTsKLQotICAvLyBOVUxMIHZzIG5vbi1O
VUxMLgotICBFWFBFQ1RfRVEoLTEsIFN0cmluZygpLkNvbXBhcmUoU3RyaW5nKCIiKSkpOwotCi0g
IC8vIE5vbi1OVUxMIHZzIE5VTEwuCi0gIEVYUEVDVF9FUSgxLCBTdHJpbmcoIiIpLkNvbXBhcmUo
U3RyaW5nKCkpKTsKLQotICAvLyBUaGUgZm9sbG93aW5nIGNvdmVycyBub24tTlVMTCB2cyBub24t
TlVMTC4KLQotICAvLyAiIiB2cyAiIi4KLSAgRVhQRUNUX0VRKDAsIFN0cmluZygiIikuQ29tcGFy
ZShTdHJpbmcoIiIpKSk7Ci0KLSAgLy8gIiIgdnMgbm9uLSIiLgotICBFWFBFQ1RfRVEoLTEsIFN0
cmluZygiIikuQ29tcGFyZShTdHJpbmcoIlwwIiwgMSkpKTsKLSAgRVhQRUNUX0VRKC0xLCBTdHJp
bmcoIiIpLkNvbXBhcmUoIiAiKSk7Ci0KLSAgLy8gTm9uLSIiIHZzICIiLgotICBFWFBFQ1RfRVEo
MSwgU3RyaW5nKCJhIikuQ29tcGFyZShTdHJpbmcoIiIpKSk7Ci0KLSAgLy8gVGhlIGZvbGxvd2lu
ZyBjb3ZlcnMgbm9uLSIiIHZzIG5vbi0iIi4KLQotICAvLyBTYW1lIGxlbmd0aCBhbmQgZXF1YWwu
Ci0gIEVYUEVDVF9FUSgwLCBTdHJpbmcoImEiKS5Db21wYXJlKFN0cmluZygiYSIpKSk7Ci0KLSAg
Ly8gU2FtZSBsZW5ndGggYW5kIGRpZmZlcmVudC4KLSAgRVhQRUNUX0VRKC0xLCBTdHJpbmcoImFc
MGIiLCAzKS5Db21wYXJlKFN0cmluZygiYVwwYyIsIDMpKSk7Ci0gIEVYUEVDVF9FUSgxLCBTdHJp
bmcoImIiKS5Db21wYXJlKFN0cmluZygiYSIpKSk7Ci0KLSAgLy8gRGlmZmVyZW50IGxlbmd0aHMu
Ci0gIEVYUEVDVF9FUSgtMSwgU3RyaW5nKCJhIikuQ29tcGFyZShTdHJpbmcoImFiIikpKTsKLSAg
RVhQRUNUX0VRKC0xLCBTdHJpbmcoImEiKS5Db21wYXJlKFN0cmluZygiYVwwIiwgMikpKTsKLSAg
RVhQRUNUX0VRKDEsIFN0cmluZygiYWJjIikuQ29tcGFyZShTdHJpbmcoImFhY2QiKSkpOwotfQot
Ci0vLyBUZXN0cyBTdHJpbmc6Om9wZXJhdG9yPT0oKS4KLVRFU1QoU3RyaW5nVGVzdCwgRXF1YWxz
KSB7Ci0gIGNvbnN0IFN0cmluZyBudWxsKE5VTEwpOwotICBFWFBFQ1RfVFJVRShudWxsID09IE5V
TEwpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShudWxsID09ICIiKTsgIC8vIE5PTElOVAot
ICBFWFBFQ1RfRkFMU0UobnVsbCA9PSAiYmFyIik7ICAvLyBOT0xJTlQKLQotICBjb25zdCBTdHJp
bmcgZW1wdHkoIiIpOwotICBFWFBFQ1RfRkFMU0UoZW1wdHkgPT0gTlVMTCk7ICAvLyBOT0xJTlQK
LSAgRVhQRUNUX1RSVUUoZW1wdHkgPT0gIiIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShl
bXB0eSA9PSAiYmFyIik7ICAvLyBOT0xJTlQKLQotICBjb25zdCBTdHJpbmcgZm9vKCJmb28iKTsK
LSAgRVhQRUNUX0ZBTFNFKGZvbyA9PSBOVUxMKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRkFMU0Uo
Zm9vID09ICIiKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRkFMU0UoZm9vID09ICJiYXIiKTsgIC8v
IE5PTElOVAotICBFWFBFQ1RfVFJVRShmb28gPT0gImZvbyIpOyAgLy8gTk9MSU5UCi0KLSAgY29u
c3QgU3RyaW5nIGJhcigieFwweSIsIDMpOwotICBFWFBFQ1RfRkFMU0UoYmFyID09ICJ4Iik7Ci19
Ci0KLS8vIFRlc3RzIFN0cmluZzo6b3BlcmF0b3IhPSgpLgotVEVTVChTdHJpbmdUZXN0LCBOb3RF
cXVhbHMpIHsKLSAgY29uc3QgU3RyaW5nIG51bGwoTlVMTCk7Ci0gIEVYUEVDVF9GQUxTRShudWxs
ICE9IE5VTEwpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKG51bGwgIT0gIiIpOyAgLy8gTk9M
SU5UCi0gIEVYUEVDVF9UUlVFKG51bGwgIT0gImJhciIpOyAgLy8gTk9MSU5UCi0KLSAgY29uc3Qg
U3RyaW5nIGVtcHR5KCIiKTsKLSAgRVhQRUNUX1RSVUUoZW1wdHkgIT0gTlVMTCk7ICAvLyBOT0xJ
TlQKLSAgRVhQRUNUX0ZBTFNFKGVtcHR5ICE9ICIiKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJV
RShlbXB0eSAhPSAiYmFyIik7ICAvLyBOT0xJTlQKLQotICBjb25zdCBTdHJpbmcgZm9vKCJmb28i
KTsKLSAgRVhQRUNUX1RSVUUoZm9vICE9IE5VTEwpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVF
KGZvbyAhPSAiIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUoZm9vICE9ICJiYXIiKTsgIC8v
IE5PTElOVAotICBFWFBFQ1RfRkFMU0UoZm9vICE9ICJmb28iKTsgIC8vIE5PTElOVAotCi0gIGNv
bnN0IFN0cmluZyBiYXIoInhcMHkiLCAzKTsKLSAgRVhQRUNUX1RSVUUoYmFyICE9ICJ4Iik7Ci19
Ci0KLS8vIFRlc3RzIFN0cmluZzo6bGVuZ3RoKCkuCi1URVNUKFN0cmluZ1Rlc3QsIExlbmd0aCkg
ewotICBFWFBFQ1RfRVEoMFUsIFN0cmluZygpLmxlbmd0aCgpKTsKLSAgRVhQRUNUX0VRKDBVLCBT
dHJpbmcoIiIpLmxlbmd0aCgpKTsKLSAgRVhQRUNUX0VRKDJVLCBTdHJpbmcoImFiIikubGVuZ3Ro
KCkpOwotICBFWFBFQ1RfRVEoM1UsIFN0cmluZygiYVwwYiIsIDMpLmxlbmd0aCgpKTsKLX0KLQot
Ly8gVGVzdHMgU3RyaW5nOjpFbmRzV2l0aCgpLgotVEVTVChTdHJpbmdUZXN0LCBFbmRzV2l0aCkg
ewotICBFWFBFQ1RfVFJVRShTdHJpbmcoImZvb2JhciIpLkVuZHNXaXRoKCJiYXIiKSk7Ci0gIEVY
UEVDVF9UUlVFKFN0cmluZygiZm9vYmFyIikuRW5kc1dpdGgoIiIpKTsKLSAgRVhQRUNUX1RSVUUo
U3RyaW5nKCIiKS5FbmRzV2l0aCgiIikpOwotCi0gIEVYUEVDVF9GQUxTRShTdHJpbmcoImZvb2Jh
ciIpLkVuZHNXaXRoKCJmb28iKSk7Ci0gIEVYUEVDVF9GQUxTRShTdHJpbmcoIiIpLkVuZHNXaXRo
KCJmb28iKSk7Ci19Ci0KIC8vIFRlc3RzIFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUo
KS4KIFRFU1QoU3RyaW5nVGVzdCwgRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUpIHsKLSAgRVhQRUNU
X1RSVUUoU3RyaW5nKCJmb29iYXIiKS5FbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiQkFSIikpOwot
ICBFWFBFQ1RfVFJVRShTdHJpbmcoImZvb2JhUiIpLkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCJi
YXIiKSk7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiZm9vYmFyIikuRW5kc1dpdGhDYXNlSW5zZW5z
aXRpdmUoIiIpKTsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCIiKS5FbmRzV2l0aENhc2VJbnNlbnNp
dGl2ZSgiIikpOworICBFWFBFQ1RfVFJVRShTdHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZl
KCJmb29iYXIiLCAiQkFSIikpOworICBFWFBFQ1RfVFJVRShTdHJpbmc6OkVuZHNXaXRoQ2FzZUlu
c2Vuc2l0aXZlKCJmb29iYVIiLCAiYmFyIikpOworICBFWFBFQ1RfVFJVRShTdHJpbmc6OkVuZHNX
aXRoQ2FzZUluc2Vuc2l0aXZlKCJmb29iYXIiLCAiIikpOworICBFWFBFQ1RfVFJVRShTdHJpbmc6
OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCIiLCAiIikpOwogCi0gIEVYUEVDVF9GQUxTRShTdHJp
bmcoIkZvb2JhciIpLkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCJmb28iKSk7Ci0gIEVYUEVDVF9G
QUxTRShTdHJpbmcoImZvb2JhciIpLkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCJGb28iKSk7Ci0g
IEVYUEVDVF9GQUxTRShTdHJpbmcoIiIpLkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCJmb28iKSk7
CisgIEVYUEVDVF9GQUxTRShTdHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCJGb29iYXIi
LCAiZm9vIikpOworICBFWFBFQ1RfRkFMU0UoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2
ZSgiZm9vYmFyIiwgIkZvbyIpKTsKKyAgRVhQRUNUX0ZBTFNFKFN0cmluZzo6RW5kc1dpdGhDYXNl
SW5zZW5zaXRpdmUoIiIsICJmb28iKSk7CiB9CiAKIC8vIEMrK0J1aWxkZXIncyBwcmVwcm9jZXNz
b3IgaXMgYnVnZ3k7IGl0IGZhaWxzIHRvIGV4cGFuZCBtYWNyb3MgdGhhdApAQCAtMTA3OSw4NyAr
MTAyNiw2IEBAIFRFU1QoU3RyaW5nVGVzdCwgQ2FzZUluc2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVh
bHMpIHsKICAgRVhQRUNUX1RSVUUoU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0Vx
dWFscyhMIkZPT0JBUiIsIEwiZm9vYmFyIikpOwogfQogCi0vLyBUZXN0cyB0aGF0IE5VTEwgY2Fu
IGJlIGFzc2lnbmVkIHRvIGEgU3RyaW5nLgotVEVTVChTdHJpbmdUZXN0LCBDYW5CZUFzc2lnbmVk
TlVMTCkgewotICBjb25zdCBTdHJpbmcgc3JjKE5VTEwpOwotICBTdHJpbmcgZGVzdDsKLQotICBk
ZXN0ID0gc3JjOwotICBFWFBFQ1RfU1RSRVEoTlVMTCwgZGVzdC5jX3N0cigpKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCB0aGUgZW1wdHkgc3RyaW5nICIiIGNhbiBiZSBhc3NpZ25lZCB0byBhIFN0cmlu
Zy4KLVRFU1QoU3RyaW5nVGVzdCwgQ2FuQmVBc3NpZ25lZEVtcHR5KSB7Ci0gIGNvbnN0IFN0cmlu
ZyBzcmMoIiIpOwotICBTdHJpbmcgZGVzdDsKLQotICBkZXN0ID0gc3JjOwotICBFWFBFQ1RfU1RS
RVEoIiIsIGRlc3QuY19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBub24tZW1wdHkgc3Ry
aW5nIGNhbiBiZSBhc3NpZ25lZCB0byBhIFN0cmluZy4KLVRFU1QoU3RyaW5nVGVzdCwgQ2FuQmVB
c3NpZ25lZE5vbkVtcHR5KSB7Ci0gIGNvbnN0IFN0cmluZyBzcmMoImhlbGxvIik7Ci0gIFN0cmlu
ZyBkZXN0OwotICBkZXN0ID0gc3JjOwotICBFWFBFQ1RfRVEoNVUsIGRlc3QubGVuZ3RoKCkpOwot
ICBFWFBFQ1RfU1RSRVEoImhlbGxvIiwgZGVzdC5jX3N0cigpKTsKLQotICBjb25zdCBTdHJpbmcg
c3JjMigieFwweSIsIDMpOwotICBTdHJpbmcgZGVzdDI7Ci0gIGRlc3QyID0gc3JjMjsKLSAgRVhQ
RUNUX0VRKDNVLCBkZXN0Mi5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgneCcsIGRlc3QyLmNfc3Ry
KClbMF0pOwotICBFWFBFQ1RfRVEoJ1wwJywgZGVzdDIuY19zdHIoKVsxXSk7Ci0gIEVYUEVDVF9F
USgneScsIGRlc3QyLmNfc3RyKClbMl0pOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgU3RyaW5nIGNh
biBiZSBhc3NpZ25lZCB0byBpdHNlbGYuCi1URVNUKFN0cmluZ1Rlc3QsIENhbkJlQXNzaWduZWRT
ZWxmKSB7Ci0gIFN0cmluZyBkZXN0KCJoZWxsbyIpOwotCi0gIGRlc3QgPSBkZXN0OwotICBFWFBF
Q1RfU1RSRVEoImhlbGxvIiwgZGVzdC5jX3N0cigpKTsKLX0KLQotLy8gU3VuIFN0dWRpbyA8IDEy
IGluY29ycmVjdGx5IHJlamVjdHMgdGhpcyBjb2RlIGR1ZSB0byBhbiBvdmVybG9hZGluZwotLy8g
YW1iaWd1aXR5LgotI2lmICEoZGVmaW5lZChfX1NVTlBST19DQykgJiYgX19TVU5QUk9fQ0MgPCAw
eDU5MCkKLS8vIFRlc3RzIHN0cmVhbWluZyBhIFN0cmluZy4KLVRFU1QoU3RyaW5nVGVzdCwgU3Ry
ZWFtcykgewotICBFWFBFQ1RfRVEoU3RyZWFtYWJsZVRvU3RyaW5nKFN0cmluZygpKSwgIihudWxs
KSIpOwotICBFWFBFQ1RfRVEoU3RyZWFtYWJsZVRvU3RyaW5nKFN0cmluZygiIikpLCAiIik7Ci0g
IEVYUEVDVF9FUShTdHJlYW1hYmxlVG9TdHJpbmcoU3RyaW5nKCJhXDBiIiwgMykpLCAiYVxcMGIi
KTsKLX0KLSNlbmRpZgotCi0vLyBUZXN0cyB0aGF0IFN0cmluZzo6Rm9ybWF0KCkgd29ya3MuCi1U
RVNUKFN0cmluZ1Rlc3QsIEZvcm1hdFdvcmtzKSB7Ci0gIC8vIE5vcm1hbCBjYXNlOiB0aGUgZm9y
bWF0IHNwZWMgaXMgdmFsaWQsIHRoZSBhcmd1bWVudHMgbWF0Y2ggdGhlCi0gIC8vIHNwZWMsIGFu
ZCB0aGUgcmVzdWx0IGlzIDwgNDA5NSBjaGFyYWN0ZXJzLgotICBFWFBFQ1RfU1RSRVEoIkhlbGxv
LCA0MiIsIFN0cmluZzo6Rm9ybWF0KCIlcywgJWQiLCAiSGVsbG8iLCA0MikuY19zdHIoKSk7Ci0K
LSAgLy8gRWRnZSBjYXNlOiB0aGUgcmVzdWx0IGlzIDQwOTUgY2hhcmFjdGVycy4KLSAgY2hhciBi
dWZmZXJbNDA5Nl07Ci0gIGNvbnN0IHNpemVfdCBrU2l6ZSA9IHNpemVvZihidWZmZXIpOwotICBt
ZW1zZXQoYnVmZmVyLCAnYScsIGtTaXplIC0gMSk7Ci0gIGJ1ZmZlcltrU2l6ZSAtIDFdID0gJ1ww
JzsKLSAgRVhQRUNUX1NUUkVRKGJ1ZmZlciwgU3RyaW5nOjpGb3JtYXQoIiVzIiwgYnVmZmVyKS5j
X3N0cigpKTsKLQotICAvLyBUaGUgcmVzdWx0IG5lZWRzIHRvIGJlIDQwOTYgY2hhcmFjdGVycywg
ZXhjZWVkaW5nIEZvcm1hdCgpJ3MgbGltaXQuCi0gIEVYUEVDVF9TVFJFUSgiPGZvcm1hdHRpbmcg
ZXJyb3Igb3IgYnVmZmVyIGV4Y2VlZGVkPiIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OkZvcm1h
dCgieCVzIiwgYnVmZmVyKS5jX3N0cigpKTsKLQotI2lmIEdURVNUX09TX0xJTlVYCi0gIC8vIE9u
IExpbnV4LCBpbnZhbGlkIGZvcm1hdCBzcGVjIHNob3VsZCBsZWFkIHRvIGFuIGVycm9yIG1lc3Nh
Z2UuCi0gIC8vIEluIG90aGVyIGVudmlyb25tZW50IChlLmcuIE1TVkMgb24gV2luZG93cyksIFN0
cmluZzo6Rm9ybWF0KCkgbWF5Ci0gIC8vIHNpbXBseSBpZ25vcmUgYSBiYWQgZm9ybWF0IHNwZWMs
IHNvIHRoaXMgYXNzZXJ0aW9uIGlzIHJ1biBvbgotICAvLyBMaW51eCBvbmx5LgotICBFWFBFQ1Rf
U1RSRVEoIjxmb3JtYXR0aW5nIGVycm9yIG9yIGJ1ZmZlciBleGNlZWRlZD4iLAotICAgICAgICAg
ICAgICAgU3RyaW5nOjpGb3JtYXQoIiUiKS5jX3N0cigpKTsKLSNlbmRpZgotfQotCiAjaWYgR1RF
U1RfT1NfV0lORE9XUwogCiAvLyBUZXN0cyBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZygpLgpAQCAt
MTE3MCwxNyArMTAzNiw3IEBAIFRFU1QoU3RyaW5nVGVzdCwgU2hvd1dpZGVDU3RyaW5nKSB7CiAg
IEVYUEVDVF9TVFJFUSgiZm9vIiwgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmcoTCJmb28iKS5jX3N0
cigpKTsKIH0KIAotLy8gVGVzdHMgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoKS4KLVRF
U1QoU3RyaW5nVGVzdCwgU2hvd1dpZGVDU3RyaW5nUXVvdGVkKSB7Ci0gIEVYUEVDVF9TVFJFUSgi
KG51bGwpIiwKLSAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVvdGVkKE5V
TEwpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIkxcIlwiIiwKLSAgICAgICAgICAgICAgIFN0
cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVvdGVkKEwiIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJF
USgiTFwiZm9vXCIiLAotICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90
ZWQoTCJmb28iKS5jX3N0cigpKTsKLX0KLQotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisj
IGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiBURVNUKFN0cmluZ1Rlc3QsIEFuc2lBbmRVdGYx
Nk51bGwpIHsKICAgRVhQRUNUX0VRKE5VTEwsIFN0cmluZzo6QW5zaVRvVXRmMTYoTlVMTCkpOwog
ICBFWFBFQ1RfRVEoTlVMTCwgU3RyaW5nOjpVdGYxNlRvQW5zaShOVUxMKSk7CkBAIC0xMjAzLDcg
KzEwNTksNyBAQCBURVNUKFN0cmluZ1Rlc3QsIEFuc2lBbmRVdGYxNkNvbnZlcnRQYXRoQ2hhcnMp
IHsKICAgRVhQRUNUX0VRKDAsIHdjc25jbXAoTCIuOlxcIFwiKj8iLCB1dGYxNiwgMykpOwogICBk
ZWxldGUgW10gdXRmMTY7CiB9Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisj
IGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogCiAjZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKIApAQCAtMTMxNyw2ICsxMTczLDE3IEBAIFRFU1RfRihFeHBlY3RGYXRhbEZhaWx1
cmVUZXN0LCBDYXRjaGVzRmF0YWxGYWxpdXJlKSB7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFk
ZEZhdGFsRmFpbHVyZSgpLCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKIH0KIAorI2lmIEdU
RVNUX0hBU19HTE9CQUxfU1RSSU5HCitURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgQWNj
ZXB0c1N0cmluZ09iamVjdCkgeworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRGYXRhbEZhaWx1
cmUoKSwgOjpzdHJpbmcoIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIikpOworfQorI2VuZGlmCisK
K1RFU1RfRihFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBBY2NlcHRzU3RkU3RyaW5nT2JqZWN0KSB7
CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFkZEZhdGFsRmFpbHVyZSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICA6OnN0ZDo6c3RyaW5nKCJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpKTsKK30K
KwogVEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIENhdGNoZXNGYXRhbEZhaWx1cmVPbkFs
bFRocmVhZHMpIHsKICAgLy8gV2UgaGF2ZSBhbm90aGVyIHRlc3QgYmVsb3cgdG8gdmVyaWZ5IHRo
YXQgdGhlIG1hY3JvIGNhdGNoZXMgZmF0YWwKICAgLy8gZmFpbHVyZXMgZ2VuZXJhdGVkIG9uIGFu
b3RoZXIgdGhyZWFkLgpAQCAtMTMyNiw3ICsxMTkzLDcgQEAgVEVTVF9GKEV4cGVjdEZhdGFsRmFp
bHVyZVRlc3QsIENhdGNoZXNGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKIAogI2lmZGVmIF9f
Qk9STEFORENfXwogLy8gU2lsZW5jZXMgd2FybmluZ3M6ICJDb25kaXRpb24gaXMgYWx3YXlzIHRy
dWUiCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYworIyBwcmFnbWEgb3B0aW9uIHB1c2ggLXct
Y2NjCiAjZW5kaWYKIAogLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGNhbiBi
ZSB1c2VkIGluIGEgbm9uLXZvaWQKQEAgLTEzNTQsNyArMTIyMSw3IEBAIHZvaWQgRG9lc05vdEFi
b3J0SGVscGVyKGJvb2wqIGFib3J0ZWQpIHsKIAogI2lmZGVmIF9fQk9STEFORENfXwogLy8gUmVz
dG9yZXMgd2FybmluZ3MgYWZ0ZXIgcHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHBy
ZXNzZWQgdGhlbS4KLSNwcmFnbWEgb3B0aW9uIHBvcAorIyBwcmFnbWEgb3B0aW9uIHBvcAogI2Vu
ZGlmCiAKIFRFU1RfRihFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBEb2VzTm90QWJvcnQpIHsKQEAg
LTEzNzEsOCArMTIzOCw4IEBAIHN0YXRpYyBpbnQgZ2xvYmFsX3ZhciA9IDA7CiAjZGVmaW5lIEdU
RVNUX1VTRV9VTlBST1RFQ1RFRF9DT01NQV8gZ2xvYmFsX3ZhcisrLCBnbG9iYWxfdmFyKysKIAog
VEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEFjY2VwdHNNYWNyb1RoYXRFeHBhbmRzVG9V
bnByb3RlY3RlZENvbW1hKSB7Ci0jaWYgIWRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCBfX0JPUkxB
TkRDX18gPj0gMHg2MDAKLSAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlciAyMDA3LgorI2lmbmRlZiBf
X0JPUkxBTkRDX18KKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4KICAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoewogICAgIEdURVNUX1VTRV9VTlBST1RFQ1RFRF9DT01NQV87CiAgICAgQWRkRmF0YWxG
YWlsdXJlKCk7CkBAIC0xMzk0LDYgKzEyNjEsMTggQEAgVEVTVF9GKEV4cGVjdE5vbmZhdGFsRmFp
bHVyZVRlc3QsIENhdGNoZXNOb25mYXRhbEZhaWx1cmUpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwogfQogCisjaWYgR1RFU1RfSEFT
X0dMT0JBTF9TVFJJTkcKK1RFU1RfRihFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBBY2NlcHRz
U3RyaW5nT2JqZWN0KSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZE5vbmZhdGFsRmFp
bHVyZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0cmluZygiRXhwZWN0ZWQgbm9u
LWZhdGFsIGZhaWx1cmUuIikpOworfQorI2VuZGlmCisKK1RFU1RfRihFeHBlY3ROb25mYXRhbEZh
aWx1cmVUZXN0LCBBY2NlcHRzU3RkU3RyaW5nT2JqZWN0KSB7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEFkZE5vbmZhdGFsRmFpbHVyZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICA6
OnN0ZDo6c3RyaW5nKCJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKSk7Cit9CisKIFRFU1Rf
RihFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBDYXRjaGVzTm9uZmF0YWxGYWlsdXJlT25BbGxU
aHJlYWRzKSB7CiAgIC8vIFdlIGhhdmUgYW5vdGhlciB0ZXN0IGJlbG93IHRvIHZlcmlmeSB0aGF0
IHRoZSBtYWNybyBjYXRjaGVzCiAgIC8vIG5vbi1mYXRhbCBmYWlsdXJlcyBnZW5lcmF0ZWQgb24g
YW5vdGhlciB0aHJlYWQuCkBAIC0xNTY2LDcgKzE0NDUsNyBAQCBURVNUKFRlc3RSZXN1bHRQcm9w
ZXJ0eVRlc3QsIE5vUHJvcGVydGllc0ZvdW5kV2hlbk5vbmVBcmVBZGRlZCkgewogVEVTVChUZXN0
UmVzdWx0UHJvcGVydHlUZXN0LCBPbmVQcm9wZXJ0eUZvdW5kV2hlbkFkZGVkKSB7CiAgIFRlc3RS
ZXN1bHQgdGVzdF9yZXN1bHQ7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eSgia2V5XzEiLCAiMSIp
OwotICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJv
cGVydHkpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3Vs
dCwgInRlc3RjYXNlIiwgcHJvcGVydHkpOwogICBBU1NFUlRfRVEoMSwgdGVzdF9yZXN1bHQudGVz
dF9wcm9wZXJ0eV9jb3VudCgpKTsKICAgY29uc3QgVGVzdFByb3BlcnR5JiBhY3R1YWxfcHJvcGVy
dHkgPSB0ZXN0X3Jlc3VsdC5HZXRUZXN0UHJvcGVydHkoMCk7CiAgIEVYUEVDVF9TVFJFUSgia2V5
XzEiLCBhY3R1YWxfcHJvcGVydHkua2V5KCkpOwpAQCAtMTU3OCw4ICsxNDU3LDggQEAgVEVTVChU
ZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBNdWx0aXBsZVByb3BlcnRpZXNGb3VuZFdoZW5BZGRlZCkg
ewogICBUZXN0UmVzdWx0IHRlc3RfcmVzdWx0OwogICBUZXN0UHJvcGVydHkgcHJvcGVydHlfMSgi
a2V5XzEiLCAiMSIpOwogICBUZXN0UHJvcGVydHkgcHJvcGVydHlfMigia2V5XzIiLCAiMiIpOwot
ICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVy
dHlfMSk7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0
LCBwcm9wZXJ0eV8yKTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVz
dF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzEpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6
OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMik7CiAg
IEFTU0VSVF9FUSgyLCB0ZXN0X3Jlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwogICBjb25z
dCBUZXN0UHJvcGVydHkmIGFjdHVhbF9wcm9wZXJ0eV8xID0gdGVzdF9yZXN1bHQuR2V0VGVzdFBy
b3BlcnR5KDApOwogICBFWFBFQ1RfU1RSRVEoImtleV8xIiwgYWN0dWFsX3Byb3BlcnR5XzEua2V5
KCkpOwpAQCAtMTU5NywxMCArMTQ3NiwxMCBAQCBURVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3Qs
IE92ZXJyaWRlc1ZhbHVlc0ZvckR1cGxpY2F0ZUtleXMpIHsKICAgVGVzdFByb3BlcnR5IHByb3Bl
cnR5XzJfMSgia2V5XzIiLCAiMiIpOwogICBUZXN0UHJvcGVydHkgcHJvcGVydHlfMV8yKCJrZXlf
MSIsICIxMiIpOwogICBUZXN0UHJvcGVydHkgcHJvcGVydHlfMl8yKCJrZXlfMiIsICIyMiIpOwot
ICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVy
dHlfMV8xKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1
bHQsIHByb3BlcnR5XzJfMSk7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHko
JnRlc3RfcmVzdWx0LCBwcm9wZXJ0eV8xXzIpOwotICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29y
ZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMl8yKTsKKyAgVGVzdFJlc3VsdEFjY2Vz
c29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzFf
MSk7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAi
dGVzdGNhc2UiLCBwcm9wZXJ0eV8yXzEpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFBy
b3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMV8yKTsKKyAgVGVzdFJl
c3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHBy
b3BlcnR5XzJfMik7CiAKICAgQVNTRVJUX0VRKDIsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlf
Y291bnQoKSk7CiAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgYWN0dWFsX3Byb3BlcnR5XzEgPSB0ZXN0
X3Jlc3VsdC5HZXRUZXN0UHJvcGVydHkoMCk7CkBAIC0xNjEzLDE0ICsxNDkyLDE0IEBAIFRFU1Qo
VGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgT3ZlcnJpZGVzVmFsdWVzRm9yRHVwbGljYXRlS2V5cykg
ewogfQogCiAvLyBUZXN0cyBUZXN0UmVzdWx0OjpHZXRUZXN0UHJvcGVydHkoKS4KLVRFU1QoVGVz
dFJlc3VsdFByb3BlcnR5RGVhdGhUZXN0LCBHZXRUZXN0UHJvcGVydHkpIHsKK1RFU1QoVGVzdFJl
c3VsdFByb3BlcnR5VGVzdCwgR2V0VGVzdFByb3BlcnR5KSB7CiAgIFRlc3RSZXN1bHQgdGVzdF9y
ZXN1bHQ7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8xKCJrZXlfMSIsICIxIik7CiAgIFRlc3RQ
cm9wZXJ0eSBwcm9wZXJ0eV8yKCJrZXlfMiIsICIyIik7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0
eV8zKCJrZXlfMyIsICIzIik7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHko
JnRlc3RfcmVzdWx0LCBwcm9wZXJ0eV8xKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQ
cm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzIpOwotICBUZXN0UmVzdWx0QWNjZXNzb3I6
OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMyk7CisgIFRlc3RSZXN1bHRB
Y2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0
eV8xKTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQs
ICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzIpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFBy
b3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMyk7CiAKICAgY29uc3Qg
VGVzdFByb3BlcnR5JiBmZXRjaGVkX3Byb3BlcnR5XzEgPSB0ZXN0X3Jlc3VsdC5HZXRUZXN0UHJv
cGVydHkoMCk7CiAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgZmV0Y2hlZF9wcm9wZXJ0eV8yID0gdGVz
dF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KDEpOwpAQCAtMTYzOSw0MSArMTUxOCwxNSBAQCBURVNU
KFRlc3RSZXN1bHRQcm9wZXJ0eURlYXRoVGVzdCwgR2V0VGVzdFByb3BlcnR5KSB7CiAgIEVYUEVD
VF9ERUFUSF9JRl9TVVBQT1JURUQodGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KC0xKSwgIiIp
OwogfQogCi0vLyBXaGVuIGEgcHJvcGVydHkgdXNpbmcgYSByZXNlcnZlZCBrZXkgaXMgc3VwcGxp
ZWQgdG8gdGhpcyBmdW5jdGlvbiwgaXQgdGVzdHMKLS8vIHRoYXQgYSBub24tZmF0YWwgZmFpbHVy
ZSBpcyBhZGRlZCwgYSBmYXRhbCBmYWlsdXJlIGlzIG5vdCBhZGRlZCwgYW5kIHRoYXQgdGhlCi0v
LyBwcm9wZXJ0eSBpcyBub3QgcmVjb3JkZWQuCi12b2lkIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJl
Y29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5KGNvbnN0IGNoYXIqIGtleSkgewotICBUZXN0
UmVzdWx0IHRlc3RfcmVzdWx0OwotICBUZXN0UHJvcGVydHkgcHJvcGVydHkoa2V5LCAiMSIpOwot
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKLSAgICAgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVj
b3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9wZXJ0eSksCi0gICAgICAiUmVzZXJ2ZWQga2V5
Iik7Ci0gIEFTU0VSVF9FUSgwLCB0ZXN0X3Jlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCkpIDw8
ICJOb3QgcmVjb3JkZWQiOwotfQotCi0vLyBBdHRlbXB0aW5nIHRvIHJlY29yZGluZyBhIHByb3Bl
cnR5IHdpdGggdGhlIFJlc2VydmVkIGxpdGVyYWwgIm5hbWUiCi0vLyBzaG91bGQgYWRkIGEgbm9u
LWZhdGFsIGZhaWx1cmUgYW5kIHRoZSBwcm9wZXJ0eSBzaG91bGQgbm90IGJlIHJlY29yZGVkLgot
VEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBBZGRGYWlsdXJlV2hlblVzaW5nUmVzZXJ2ZWRL
ZXlDYWxsZWROYW1lKSB7Ci0gIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5
V2l0aFJlc2VydmVkS2V5KCJuYW1lIik7Ci19Ci0KLS8vIEF0dGVtcHRpbmcgdG8gcmVjb3JkaW5n
IGEgcHJvcGVydHkgd2l0aCB0aGUgUmVzZXJ2ZWQgbGl0ZXJhbCAic3RhdHVzIgotLy8gc2hvdWxk
IGFkZCBhIG5vbi1mYXRhbCBmYWlsdXJlIGFuZCB0aGUgcHJvcGVydHkgc2hvdWxkIG5vdCBiZSBy
ZWNvcmRlZC4KLVRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgQWRkRmFpbHVyZVdoZW5Vc2lu
Z1Jlc2VydmVkS2V5Q2FsbGVkU3RhdHVzKSB7Ci0gIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29y
ZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5KCJzdGF0dXMiKTsKLX0KLQotLy8gQXR0ZW1wdGlu
ZyB0byByZWNvcmRpbmcgYSBwcm9wZXJ0eSB3aXRoIHRoZSBSZXNlcnZlZCBsaXRlcmFsICJ0aW1l
IgotLy8gc2hvdWxkIGFkZCBhIG5vbi1mYXRhbCBmYWlsdXJlIGFuZCB0aGUgcHJvcGVydHkgc2hv
dWxkIG5vdCBiZSByZWNvcmRlZC4KLVRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgQWRkRmFp
bHVyZVdoZW5Vc2luZ1Jlc2VydmVkS2V5Q2FsbGVkVGltZSkgewotICBFeHBlY3ROb25GYXRhbEZh
aWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgidGltZSIpOwotfQotCi0vLyBB
dHRlbXB0aW5nIHRvIHJlY29yZGluZyBhIHByb3BlcnR5IHdpdGggdGhlIFJlc2VydmVkIGxpdGVy
YWwgImNsYXNzbmFtZSIKLS8vIHNob3VsZCBhZGQgYSBub24tZmF0YWwgZmFpbHVyZSBhbmQgdGhl
IHByb3BlcnR5IHNob3VsZCBub3QgYmUgcmVjb3JkZWQuCi1URVNUKFRlc3RSZXN1bHRQcm9wZXJ0
eVRlc3QsIEFkZEZhaWx1cmVXaGVuVXNpbmdSZXNlcnZlZEtleUNhbGxlZENsYXNzbmFtZSkgewot
ICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgi
Y2xhc3NuYW1lIik7Ci19CisvLyBUZXN0cyB0aGUgVGVzdCBjbGFzcy4KKy8vCisvLyBJdCdzIGRp
ZmZpY3VsdCB0byB0ZXN0IGV2ZXJ5IHB1YmxpYyBtZXRob2Qgb2YgdGhpcyBjbGFzcyAod2UgYXJl
CisvLyBhbHJlYWR5IHN0cmV0Y2hpbmcgdGhlIGxpbWl0IG9mIEdvb2dsZSBUZXN0IGJ5IHVzaW5n
IGl0IHRvIHRlc3QgaXRzZWxmISkuCisvLyBGb3J0dW5hdGVseSwgd2UgZG9uJ3QgaGF2ZSB0byBk
byB0aGF0LCBhcyB3ZSBhcmUgYWxyZWFkeSB0ZXN0aW5nCisvLyB0aGUgZnVuY3Rpb25hbGl0aWVz
IG9mIHRoZSBUZXN0IGNsYXNzIGV4dGVuc2l2ZWx5IGJ5IHVzaW5nIEdvb2dsZSBUZXN0CisvLyBh
bG9uZS4KKy8vCisvLyBUaGVyZWZvcmUsIHRoaXMgc2VjdGlvbiBvbmx5IGNvbnRhaW5zIG9uZSB0
ZXN0LgogCiAvLyBUZXN0cyB0aGF0IEdUZXN0RmxhZ1NhdmVyIHdvcmtzIG9uIFdpbmRvd3MgYW5k
IE1hYy4KIApAQCAtMTY5OCw2ICsxNTUxLDcgQEAgY2xhc3MgR1Rlc3RGbGFnU2F2ZXJUZXN0IDog
cHVibGljIFRlc3QgewogICAgIEdURVNUX0ZMQUcocmVwZWF0KSA9IDE7CiAgICAgR1RFU1RfRkxB
RyhzaHVmZmxlKSA9IGZhbHNlOwogICAgIEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpID0g
a01heFN0YWNrVHJhY2VEZXB0aDsKKyAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pID0g
IiI7CiAgICAgR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9IGZhbHNlOwogICB9CiAKQEAg
LTE3MjQsNiArMTU3OCw3IEBAIGNsYXNzIEdUZXN0RmxhZ1NhdmVyVGVzdCA6IHB1YmxpYyBUZXN0
IHsKICAgICBFWFBFQ1RfRVEoMSwgR1RFU1RfRkxBRyhyZXBlYXQpKTsKICAgICBFWFBFQ1RfRkFM
U0UoR1RFU1RfRkxBRyhzaHVmZmxlKSk7CiAgICAgRVhQRUNUX0VRKGtNYXhTdGFja1RyYWNlRGVw
dGgsIEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIiIs
IEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykuY19zdHIoKSk7CiAgICAgRVhQRUNUX0ZBTFNF
KEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkpOwogCiAgICAgR1RFU1RfRkxBRyhhbHNvX3J1
bl9kaXNhYmxlZF90ZXN0cykgPSB0cnVlOwpAQCAtMTczOSw4ICsxNTk0LDEwIEBAIGNsYXNzIEdU
ZXN0RmxhZ1NhdmVyVGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICBHVEVTVF9GTEFHKHJlcGVhdCkg
PSAxMDA7CiAgICAgR1RFU1RfRkxBRyhzaHVmZmxlKSA9IHRydWU7CiAgICAgR1RFU1RfRkxBRyhz
dGFja190cmFjZV9kZXB0aCkgPSAxOworICAgIEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykg
PSAibG9jYWxob3N0OjEyMzQiOwogICAgIEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSB0
cnVlOwogICB9CisKICBwcml2YXRlOgogICAvLyBGb3Igc2F2aW5nIEdvb2dsZSBUZXN0IGZsYWdz
IGR1cmluZyB0aGlzIHRlc3QgY2FzZS4KICAgc3RhdGljIEdUZXN0RmxhZ1NhdmVyKiBzYXZlcl87
CkBAIC0xNzczLDE1ICsxNjMwLDE2IEBAIHN0YXRpYyB2b2lkIFNldEVudihjb25zdCBjaGFyKiBu
YW1lLCBjb25zdCBjaGFyKiB2YWx1ZSkgewogICAvLyBDKytCdWlsZGVyJ3MgcHV0ZW52IG9ubHkg
c3RvcmVzIGEgcG9pbnRlciB0byBpdHMgcGFyYW1ldGVyOyB3ZSBoYXZlIHRvCiAgIC8vIGVuc3Vy
ZSB0aGF0IHRoZSBzdHJpbmcgcmVtYWlucyB2YWxpZCBhcyBsb25nIGFzIGl0IG1pZ2h0IGJlIG5l
ZWRlZC4KICAgLy8gV2UgdXNlIGFuIHN0ZDo6bWFwIHRvIGRvIHNvLgotICBzdGF0aWMgc3RkOjpt
YXA8U3RyaW5nLCBTdHJpbmcqPiBhZGRlZF9lbnY7CisgIHN0YXRpYyBzdGQ6Om1hcDxzdGQ6OnN0
cmluZywgc3RkOjpzdHJpbmcqPiBhZGRlZF9lbnY7CiAKICAgLy8gQmVjYXVzZSBwdXRlbnYgc3Rv
cmVzIGEgcG9pbnRlciB0byB0aGUgc3RyaW5nIGJ1ZmZlciwgd2UgY2FuJ3QgZGVsZXRlIHRoZQog
ICAvLyBwcmV2aW91cyBzdHJpbmcgKGlmIHByZXNlbnQpIHVudGlsIGFmdGVyIGl0J3MgcmVwbGFj
ZWQuCi0gIFN0cmluZyAqcHJldl9lbnYgPSBOVUxMOworICBzdGQ6OnN0cmluZyAqcHJldl9lbnYg
PSBOVUxMOwogICBpZiAoYWRkZWRfZW52LmZpbmQobmFtZSkgIT0gYWRkZWRfZW52LmVuZCgpKSB7
CiAgICAgcHJldl9lbnYgPSBhZGRlZF9lbnZbbmFtZV07CiAgIH0KLSAgYWRkZWRfZW52W25hbWVd
ID0gbmV3IFN0cmluZygoTWVzc2FnZSgpIDw8IG5hbWUgPDwgIj0iIDw8IHZhbHVlKS5HZXRTdHJp
bmcoKSk7CisgIGFkZGVkX2VudltuYW1lXSA9IG5ldyBzdGQ6OnN0cmluZygKKyAgICAgIChNZXNz
YWdlKCkgPDwgbmFtZSA8PCAiPSIgPDwgdmFsdWUpLkdldFN0cmluZygpKTsKIAogICAvLyBUaGUg
c3RhbmRhcmQgc2lnbmF0dXJlIG9mIHB1dGVudiBhY2NlcHRzIGEgJ2NoYXIqJyBhcmd1bWVudC4g
T3RoZXIKICAgLy8gaW1wbGVtZW50YXRpb25zLCBsaWtlIEMrK0J1aWxkZXIncywgYWNjZXB0IGEg
J2NvbnN0IGNoYXIqJy4KQEAgLTE4MTMsNiArMTY3MSw4IEBAIFRFU1QoSW50MzJGcm9tR1Rlc3RF
bnZUZXN0LCBSZXR1cm5zRGVmYXVsdFdoZW5WYXJpYWJsZUlzTm90U2V0KSB7CiAgIEVYUEVDVF9F
USgxMCwgSW50MzJGcm9tR1Rlc3RFbnYoInRlbXAiLCAxMCkpOwogfQogCisjIGlmICFkZWZpbmVk
KEdURVNUX0dFVF9JTlQzMl9GUk9NX0VOVl8pCisKIC8vIFRlc3RzIHRoYXQgSW50MzJGcm9tR1Rl
c3RFbnYoKSByZXR1cm5zIHRoZSBkZWZhdWx0IHZhbHVlIHdoZW4gdGhlCiAvLyBlbnZpcm9ubWVu
dCB2YXJpYWJsZSBvdmVyZmxvd3MgYXMgYW4gSW50MzIuCiBURVNUKEludDMyRnJvbUdUZXN0RW52
VGVzdCwgUmV0dXJuc0RlZmF1bHRXaGVuVmFsdWVPdmVyZmxvd3MpIHsKQEAgLTE4MzcsNiArMTY5
Nyw4IEBAIFRFU1QoSW50MzJGcm9tR1Rlc3RFbnZUZXN0LCBSZXR1cm5zRGVmYXVsdFdoZW5WYWx1
ZUlzSW52YWxpZCkgewogICBFWFBFQ1RfRVEoNTAsIEludDMyRnJvbUdUZXN0RW52KCJ0ZW1wIiwg
NTApKTsKIH0KIAorIyBlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfR0VUX0lOVDMyX0ZST01fRU5W
XykKKwogLy8gVGVzdHMgdGhhdCBJbnQzMkZyb21HVGVzdEVudigpIHBhcnNlcyBhbmQgcmV0dXJu
cyB0aGUgdmFsdWUgb2YgdGhlCiAvLyBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aGVuIGl0IHJlcHJl
c2VudHMgYSB2YWxpZCBkZWNpbWFsIGludGVnZXIgaW4KIC8vIHRoZSByYW5nZSBvZiBhbiBJbnQz
Mi4KQEAgLTIwNzAsNiArMTkzMiwxNzMgQEAgVEVTVChVbml0VGVzdFRlc3QsIENhbkdldE9yaWdp
bmFsV29ya2luZ0RpcikgewogICBFWFBFQ1RfU1RSTkUoVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkt
Pm9yaWdpbmFsX3dvcmtpbmdfZGlyKCksICIiKTsKIH0KIAorVEVTVChVbml0VGVzdFRlc3QsIFJl
dHVybnNQbGF1c2libGVUaW1lc3RhbXApIHsKKyAgRVhQRUNUX0xUKDAsIFVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5zdGFydF90aW1lc3RhbXAoKSk7CisgIEVYUEVDVF9MRShVbml0VGVzdDo6R2V0
SW5zdGFuY2UoKS0+c3RhcnRfdGltZXN0YW1wKCksIEdldFRpbWVJbk1pbGxpcygpKTsKK30KKwor
Ly8gV2hlbiBhIHByb3BlcnR5IHVzaW5nIGEgcmVzZXJ2ZWQga2V5IGlzIHN1cHBsaWVkIHRvIHRo
aXMgZnVuY3Rpb24sIGl0CisvLyB0ZXN0cyB0aGF0IGEgbm9uLWZhdGFsIGZhaWx1cmUgaXMgYWRk
ZWQsIGEgZmF0YWwgZmFpbHVyZSBpcyBub3QgYWRkZWQsCisvLyBhbmQgdGhhdCB0aGUgcHJvcGVy
dHkgaXMgbm90IHJlY29yZGVkLgordm9pZCBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQ
cm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgKKyAgICBjb25zdCBUZXN0UmVzdWx0JiB0ZXN0X3Jlc3Vs
dCwgY29uc3QgY2hhcioga2V5KSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKFRlc3Q6OlJl
Y29yZFByb3BlcnR5KGtleSwgIjEiKSwgIlJlc2VydmVkIGtleSIpOworICBBU1NFUlRfRVEoMCwg
dGVzdF9yZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpKSA8PCAiUHJvcGVydHkgZm9yIGtleSAn
IiA8PCBrZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIicgcmVjb3JkZWQgdW5leHBlY3RlZGx5LiI7Cit9CisKK3ZvaWQgRXhwZWN0Tm9uRmF0
YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdCgK
KyAgICBjb25zdCBjaGFyKiBrZXkpIHsKKyAgY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbyA9IFVu
aXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOworICBBU1NFUlRfVFJV
RSh0ZXN0X2luZm8gIT0gTlVMTCk7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1By
b3BlcnR5V2l0aFJlc2VydmVkS2V5KCp0ZXN0X2luZm8tPnJlc3VsdCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkpOworfQorCit2
b2lkIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5
Rm9yQ3VycmVudFRlc3RDYXNlKAorICAgIGNvbnN0IGNoYXIqIGtleSkgeworICBjb25zdCBUZXN0
Q2FzZSogdGVzdF9jYXNlID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9j
YXNlKCk7CisgIEFTU0VSVF9UUlVFKHRlc3RfY2FzZSAhPSBOVUxMKTsKKyAgRXhwZWN0Tm9uRmF0
YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoCisgICAgICB0ZXN0X2Nh
c2UtPmFkX2hvY190ZXN0X3Jlc3VsdCgpLCBrZXkpOworfQorCit2b2lkIEV4cGVjdE5vbkZhdGFs
RmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2Uo
CisgICAgY29uc3QgY2hhcioga2V5KSB7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGlu
Z1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5KAorICAgICAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkt
PmFkX2hvY190ZXN0X3Jlc3VsdCgpLCBrZXkpOworfQorCisvLyBUZXN0cyB0aGF0IHByb3BlcnR5
IHJlY29yZGluZyBmdW5jdGlvbnMgaW4gVW5pdFRlc3Qgb3V0c2lkZSBvZiB0ZXN0cworLy8gZnVu
Y3Rpb25zIGNvcnJlY2x5LiAgQ3JlYXRpbmcgYSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBVbml0VGVz
dCBlbnN1cmVzIGl0CisvLyBpcyBpbiBhIHN0YXRlIHNpbWlsYXIgdG8gdGhlIFVuaXRUZXN0J3Mg
c2luZ2xldG9uJ3MgYmV0d2VlbiB0ZXN0cy4KK2NsYXNzIFVuaXRUZXN0UmVjb3JkUHJvcGVydHlU
ZXN0IDoKKyAgICBwdWJsaWMgdGVzdGluZzo6aW50ZXJuYWw6OlVuaXRUZXN0UmVjb3JkUHJvcGVy
dHlUZXN0SGVscGVyIHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7
CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRL
ZXlGb3JDdXJyZW50VGVzdENhc2UoCisgICAgICAgICJkaXNhYmxlZCIpOworICAgIEV4cGVjdE5v
bkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRl
c3RDYXNlKAorICAgICAgICAiZXJyb3JzIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVj
b3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdENhc2UoCisgICAgICAg
ICJmYWlsdXJlcyIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5
V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAorICAgICAgICAibmFtZSIpOworICAg
IEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9y
Q3VycmVudFRlc3RDYXNlKAorICAgICAgICAidGVzdHMiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZh
aWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgK
KyAgICAgICAgInRpbWUiKTsKKworICAgIFRlc3Q6OlJlY29yZFByb3BlcnR5KCJ0ZXN0X2Nhc2Vf
a2V5XzEiLCAiMSIpOworICAgIGNvbnN0IFRlc3RDYXNlKiB0ZXN0X2Nhc2UgPSBVbml0VGVzdDo6
R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2Nhc2UoKTsKKyAgICBBU1NFUlRfVFJVRSh0ZXN0
X2Nhc2UgIT0gTlVMTCk7CisKKyAgICBBU1NFUlRfRVEoMSwgdGVzdF9jYXNlLT5hZF9ob2NfdGVz
dF9yZXN1bHQoKS50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOworICAgIEVYUEVDVF9TVFJFUSgidGVz
dF9jYXNlX2tleV8xIiwKKyAgICAgICAgICAgICAgICAgdGVzdF9jYXNlLT5hZF9ob2NfdGVzdF9y
ZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMCkua2V5KCkpOworICAgIEVYUEVDVF9TVFJFUSgiMSIs
CisgICAgICAgICAgICAgICAgIHRlc3RfY2FzZS0+YWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVz
dFByb3BlcnR5KDApLnZhbHVlKCkpOworICB9Cit9OworCisvLyBUZXN0cyBUZXN0UmVzdWx0IGhh
cyB0aGUgZXhwZWN0ZWQgcHJvcGVydHkgd2hlbiBhZGRlZC4KK1RFU1RfRihVbml0VGVzdFJlY29y
ZFByb3BlcnR5VGVzdCwgT25lUHJvcGVydHlGb3VuZFdoZW5BZGRlZCkgeworICBVbml0VGVzdFJl
Y29yZFByb3BlcnR5KCJrZXlfMSIsICIxIik7CisKKyAgQVNTRVJUX0VRKDEsIHVuaXRfdGVzdF8u
YWRfaG9jX3Rlc3RfcmVzdWx0KCkudGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKKworICBFWFBFQ1Rf
U1RSRVEoImtleV8xIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVz
dWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLmtleSgpKTsKKyAgRVhQRUNUX1NUUkVRKCIxIiwKKyAg
ICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3Bl
cnR5KDApLnZhbHVlKCkpOworfQorCisvLyBUZXN0cyBUZXN0UmVzdWx0IGhhcyBtdWx0aXBsZSBw
cm9wZXJ0aWVzIHdoZW4gYWRkZWQuCitURVNUX0YoVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3Qs
IE11bHRpcGxlUHJvcGVydGllc0ZvdW5kV2hlbkFkZGVkKSB7CisgIFVuaXRUZXN0UmVjb3JkUHJv
cGVydHkoImtleV8xIiwgIjEiKTsKKyAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzIiLCAi
MiIpOworCisgIEFTU0VSVF9FUSgyLCB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLnRl
c3RfcHJvcGVydHlfY291bnQoKSk7CisKKyAgRVhQRUNUX1NUUkVRKCJrZXlfMSIsCisgICAgICAg
ICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgw
KS5rZXkoKSk7CisgIEVYUEVDVF9TVFJFUSgiMSIsIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVz
dWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLnZhbHVlKCkpOworCisgIEVYUEVDVF9TVFJFUSgia2V5
XzIiLAorICAgICAgICAgICAgICAgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRU
ZXN0UHJvcGVydHkoMSkua2V5KCkpOworICBFWFBFQ1RfU1RSRVEoIjIiLCB1bml0X3Rlc3RfLmFk
X2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgxKS52YWx1ZSgpKTsKK30KKworLy8g
VGVzdHMgVGVzdFJlc3VsdDo6UmVjb3JkUHJvcGVydHkoKSBvdmVycmlkZXMgdmFsdWVzIGZvciBk
dXBsaWNhdGUga2V5cy4KK1RFU1RfRihVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdCwgT3ZlcnJp
ZGVzVmFsdWVzRm9yRHVwbGljYXRlS2V5cykgeworICBVbml0VGVzdFJlY29yZFByb3BlcnR5KCJr
ZXlfMSIsICIxIik7CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8yIiwgIjIiKTsKKyAg
VW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzEiLCAiMTIiKTsKKyAgVW5pdFRlc3RSZWNvcmRQ
cm9wZXJ0eSgia2V5XzIiLCAiMjIiKTsKKworICBBU1NFUlRfRVEoMiwgdW5pdF90ZXN0Xy5hZF9o
b2NfdGVzdF9yZXN1bHQoKS50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOworCisgIEVYUEVDVF9TVFJF
USgia2V5XzEiLAorICAgICAgICAgICAgICAgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQo
KS5HZXRUZXN0UHJvcGVydHkoMCkua2V5KCkpOworICBFWFBFQ1RfU1RSRVEoIjEyIiwKKyAgICAg
ICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5
KDApLnZhbHVlKCkpOworCisgIEVYUEVDVF9TVFJFUSgia2V5XzIiLAorICAgICAgICAgICAgICAg
dW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMSkua2V5KCkp
OworICBFWFBFQ1RfU1RSRVEoIjIyIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9j
X3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDEpLnZhbHVlKCkpOworfQorCitURVNUX0Yo
VW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3QsCisgICAgICAgQWRkRmFpbHVyZUluc2lkZVRlc3Rz
V2hlblVzaW5nVGVzdENhc2VSZXNlcnZlZEtleXMpIHsKKyAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJl
UmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdCgKKyAgICAgICJu
YW1lIik7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2Vy
dmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgICAidmFsdWVfcGFyYW0iKTsKKyAgRXhwZWN0Tm9u
RmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVz
dCgKKyAgICAgICJ0eXBlX3BhcmFtIik7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGlu
Z1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgICAic3RhdHVzIik7
CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5
Rm9yQ3VycmVudFRlc3QoCisgICAgICAidGltZSIpOworICBFeHBlY3ROb25GYXRhbEZhaWx1cmVS
ZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0KAorICAgICAgImNs
YXNzbmFtZSIpOworfQorCitURVNUX0YoVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3QsCisgICAg
ICAgQWRkUmVjb3JkV2l0aFJlc2VydmVkS2V5c0dlbmVyYXRlc0NvcnJlY3RQcm9wZXJ0eUxpc3Qp
IHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBUZXN0OjpSZWNvcmRQcm9wZXJ0
eSgibmFtZSIsICIxIiksCisgICAgICAiJ2NsYXNzbmFtZScsICduYW1lJywgJ3N0YXR1cycsICd0
aW1lJywgJ3R5cGVfcGFyYW0nLCBhbmQgJ3ZhbHVlX3BhcmFtJyIKKyAgICAgICIgYXJlIHJlc2Vy
dmVkIik7Cit9CisKK2NsYXNzIFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0RW52aXJvbm1lbnQg
OiBwdWJsaWMgRW52aXJvbm1lbnQgeworIHB1YmxpYzoKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3du
KCkgeworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2Vy
dmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCisgICAgICAgICJ0ZXN0cyIpOworICAgIEV4cGVjdE5v
bkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVz
dENhc2UoCisgICAgICAgICJmYWlsdXJlcyIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJl
Y29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCisgICAgICAg
ICJkaXNhYmxlZCIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5
V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCisgICAgICAgICJlcnJvcnMiKTsKKyAg
ICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91
dHNpZGVPZlRlc3RDYXNlKAorICAgICAgICAibmFtZSIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFp
bHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCisg
ICAgICAgICJ0aW1lc3RhbXAiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQ
cm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgICAgICAidGltZSIp
OworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVk
S2V5T3V0c2lkZU9mVGVzdENhc2UoCisgICAgICAgICJyYW5kb21fc2VlZCIpOworICB9Cit9Owor
CisvLyBUaGlzIHdpbGwgdGVzdCBwcm9wZXJ0eSByZWNvcmRpbmcgb3V0c2lkZSBvZiBhbnkgdGVz
dCBvciB0ZXN0IGNhc2UuCitzdGF0aWMgRW52aXJvbm1lbnQqIHJlY29yZF9wcm9wZXJ0eV9lbnYg
PQorICAgIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0
eVRlc3RFbnZpcm9ubWVudCk7CisKIC8vIFRoaXMgZ3JvdXAgb2YgdGVzdHMgaXMgZm9yIHByZWRp
Y2F0ZSBhc3NlcnRpb25zIChBU1NFUlRfUFJFRCosIGV0YykKIC8vIG9mIHZhcmlvdXMgYXJpdGll
cy4gIFRoZXkgZG8gbm90IGF0dGVtcHQgdG8gYmUgZXhoYXVzdGl2ZS4gIFJhdGhlciwKIC8vIHZp
ZXcgdGhlbSBhcyBzbW9rZSB0ZXN0cyB0aGF0IGNhbiBiZSBlYXNpbHkgcmV2aWV3ZWQgYW5kIHZl
cmlmaWVkLgpAQCAtMjQzNyw3ICsyNDY2LDcgQEAgVEVTVChTdHJpbmdBc3NlcnRpb25UZXN0LCBB
U1NFUlRfU1RSQ0FTRUVRKSB7CiAKICAgQVNTRVJUX1NUUkNBU0VFUSgiIiwgIiIpOwogICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfU1RSQ0FTRUVRKCJIaSIsICJoaTIiKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIihpZ25vcmluZyBjYXNlKSIpOworICAgICAgICAgICAgICAgICAgICAg
ICAiSWdub3JpbmcgY2FzZSIpOwogfQogCiAvLyBUZXN0cyBBU1NFUlRfU1RSQ0FTRU5FLgpAQCAt
MjQ3NSw2ICsyNTA0LDExIEBAIFRFU1QoU3RyaW5nQXNzZXJ0aW9uVGVzdCwgU1RSRVFfV2lkZSkg
ewogICAvLyBTdHJpbmdzIGNvbnRhaW5pbmcgd2lkZSBjaGFyYWN0ZXJzLgogICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSRVEoTCJhYmNceDgxMTkiLCBMImFiY1x4ODEyMCIpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjIik7CisKKyAgLy8gVGhlIHN0cmVhbWluZyB2
YXJpYXRpb24uCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVY
UEVDVF9TVFJFUShMImFiY1x4ODExOSIsIEwiYWJjXHg4MTIxIikgPDwgIkV4cGVjdGVkIGZhaWx1
cmUiOworICB9LCAiRXhwZWN0ZWQgZmFpbHVyZSIpOwogfQogCiAvLyBUZXN0cyAqX1NUUk5FIG9u
IHdpZGUgc3RyaW5ncy4KQEAgLTI1MDEsNiArMjUzNSw5IEBAIFRFU1QoU3RyaW5nQXNzZXJ0aW9u
VGVzdCwgU1RSTkVfV2lkZSkgewogICAvLyBTdHJpbmdzIGNvbnRhaW5pbmcgd2lkZSBjaGFyYWN0
ZXJzLgogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSTkUoTCJhYmNceDgxMTki
LCBMImFiY1x4ODExOSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjIik7CisKKyAg
Ly8gVGhlIHN0cmVhbWluZyB2YXJpYXRpb24uCisgIEFTU0VSVF9TVFJORShMImFiY1x4ODExOSIs
IEwiYWJjXHg4MTIwIikgPDwgIlRoaXMgc2hvdWxkbid0IGhhcHBlbiI7CiB9CiAKIC8vIFRlc3Rz
IGZvciA6OnRlc3Rpbmc6OklzU3Vic3RyaW5nKCkuCkBAIC0yNjMxLDcgKzI2NjgsNiBAQCBURVNU
KElzTm90U3Vic3RyaW5nVGVzdCwgUmV0dXJuc0NvcnJlY3RSZXN1bHRGb3JTdGRXc3RyaW5nKSB7
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmF3VHlwZT4KIGNsYXNzIEZsb2F0aW5nUG9pbnRUZXN0IDog
cHVibGljIFRlc3QgewogIHByb3RlY3RlZDoKLQogICAvLyBQcmUtY2FsY3VsYXRlZCBudW1iZXJz
IHRvIGJlIHVzZWQgYnkgdGhlIHRlc3RzLgogICBzdHJ1Y3QgVGVzdFZhbHVlcyB7CiAgICAgUmF3
VHlwZSBjbG9zZV90b19wb3NpdGl2ZV96ZXJvOwpAQCAtMzIyNCw3ICszMjYwLDcgQEAgVEVTVF9G
KFNpbmdsZUV2YWx1YXRpb25UZXN0LCBBU1NFUlRfU1RSKSB7CiAKICAgLy8gZmFpbGVkIEVYUEVD
VF9TVFJDQVNFRVEKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1NUUkNBU0VFUShw
MV8rKywgcDJfKyspLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiaWdub3JpbmcgY2FzZSIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAiSWdub3JpbmcgY2FzZSIpOwogICBFWFBFQ1Rf
RVEoczFfICsgMiwgcDFfKTsKICAgRVhQRUNUX0VRKHMyXyArIDIsIHAyXyk7CiB9CkBAIC0zNDEy
LDU5ICszNDQ4LDE1MSBAQCBURVNUX0YoTm9GYXRhbEZhaWx1cmVUZXN0LCBNZXNzYWdlSXNTdHJl
YW1hYmxlKSB7CiAKIC8vIFRlc3RzIG5vbi1zdHJpbmcgYXNzZXJ0aW9ucy4KIAorc3RkOjpzdHJp
bmcgRWRpdHNUb1N0cmluZyhjb25zdCBzdGQ6OnZlY3RvcjxFZGl0VHlwZT4mIGVkaXRzKSB7Cisg
IHN0ZDo6c3RyaW5nIG91dDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlZGl0cy5zaXplKCk7
ICsraSkgeworICAgIHN0YXRpYyBjb25zdCBjaGFyIGtFZGl0c1tdID0gIiArLS8iOworICAgIG91
dC5hcHBlbmQoMSwga0VkaXRzW2VkaXRzW2ldXSk7CisgIH0KKyAgcmV0dXJuIG91dDsKK30KKwor
c3RkOjp2ZWN0b3I8c2l6ZV90PiBDaGFyc1RvSW5kaWNlcyhjb25zdCBzdGQ6OnN0cmluZyYgc3Ry
KSB7CisgIHN0ZDo6dmVjdG9yPHNpemVfdD4gb3V0OworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHN0ci5zaXplKCk7ICsraSkgeworICAgIG91dC5wdXNoX2JhY2soc3RyW2ldKTsKKyAgfQorICBy
ZXR1cm4gb3V0OworfQorCitzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gQ2hhcnNUb0xpbmVzKGNv
bnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG91dDsK
KyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHIuc2l6ZSgpOyArK2kpIHsKKyAgICBvdXQucHVz
aF9iYWNrKHN0ci5zdWJzdHIoaSwgMSkpOworICB9CisgIHJldHVybiBvdXQ7Cit9CisKK1RFU1Qo
RWRpdERpc3RhbmNlLCBUZXN0Q2FzZXMpIHsKKyAgc3RydWN0IENhc2UgeworICAgIGludCBsaW5l
OworICAgIGNvbnN0IGNoYXIqIGxlZnQ7CisgICAgY29uc3QgY2hhciogcmlnaHQ7CisgICAgY29u
c3QgY2hhciogZXhwZWN0ZWRfZWRpdHM7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWRfZGlmZjsK
KyAgfTsKKyAgc3RhdGljIGNvbnN0IENhc2Uga0Nhc2VzW10gPSB7CisgICAgICAvLyBObyBjaGFu
Z2UuCisgICAgICB7X19MSU5FX18sICJBIiwgIkEiLCAiICIsICIifSwKKyAgICAgIHtfX0xJTkVf
XywgIkFCQ0RFIiwgIkFCQ0RFIiwgIiAgICAgIiwgIiJ9LAorICAgICAgLy8gU2ltcGxlIGFkZHMu
CisgICAgICB7X19MSU5FX18sICJYIiwgIlhBIiwgIiArIiwgIkBAICsxLDIgQEBcbiBYXG4rQVxu
In0sCisgICAgICB7X19MSU5FX18sICJYIiwgIlhBQkNEIiwgIiArKysrIiwgIkBAICsxLDUgQEBc
biBYXG4rQVxuK0JcbitDXG4rRFxuIn0sCisgICAgICAvLyBTaW1wbGUgcmVtb3Zlcy4KKyAgICAg
IHtfX0xJTkVfXywgIlhBIiwgIlgiLCAiIC0iLCAiQEAgLTEsMiBAQFxuIFhcbi1BXG4ifSwKKyAg
ICAgIHtfX0xJTkVfXywgIlhBQkNEIiwgIlgiLCAiIC0tLS0iLCAiQEAgLTEsNSBAQFxuIFhcbi1B
XG4tQlxuLUNcbi1EXG4ifSwKKyAgICAgIC8vIFNpbXBsZSByZXBsYWNlcy4KKyAgICAgIHtfX0xJ
TkVfXywgIkEiLCAiYSIsICIvIiwgIkBAIC0xLDEgKzEsMSBAQFxuLUFcbithXG4ifSwKKyAgICAg
IHtfX0xJTkVfXywgIkFCQ0QiLCAiYWJjZCIsICIvLy8vIiwKKyAgICAgICAiQEAgLTEsNCArMSw0
IEBAXG4tQVxuLUJcbi1DXG4tRFxuK2FcbitiXG4rY1xuK2RcbiJ9LAorICAgICAgLy8gUGF0aCBm
aW5kaW5nLgorICAgICAge19fTElORV9fLCAiQUJDREVGR0giLCAiQUJYRUdIMSIsICIgIC0vIC0g
ICsiLAorICAgICAgICJAQCAtMSw4ICsxLDcgQEBcbiBBXG4gQlxuLUNcbi1EXG4rWFxuIEVcbi1G
XG4gR1xuIEhcbisxXG4ifSwKKyAgICAgIHtfX0xJTkVfXywgIkFBQUFCQ0NDQyIsICJBQkFCQ0RD
REMiLCAiLSAvICAgKyAvICIsCisgICAgICAgIkBAIC0xLDkgKzEsOSBAQFxuLUFcbiBBXG4tQVxu
K0JcbiBBXG4gQlxuIENcbitEXG4gQ1xuLUNcbitEXG4gQ1xuIn0sCisgICAgICB7X19MSU5FX18s
ICJBQkNERSIsICJCQ0RDRCIsICItICAgKy8iLAorICAgICAgICJAQCAtMSw1ICsxLDUgQEBcbi1B
XG4gQlxuIENcbiBEXG4tRVxuK0NcbitEXG4ifSwKKyAgICAgIHtfX0xJTkVfXywgIkFCQ0RFRkdI
SUpLTCIsICJCQ0RDREVGR0pLTEpLIiwgIi0gKysgICAgIC0tICAgKysiLAorICAgICAgICJAQCAt
MSw0ICsxLDUgQEBcbi1BXG4gQlxuK0NcbitEXG4gQ1xuIERcbiIKKyAgICAgICAiQEAgLTYsNyAr
Nyw3IEBAXG4gRlxuIEdcbi1IXG4tSVxuIEpcbiBLXG4gTFxuK0pcbitLXG4ifSwKKyAgICAgIHt9
fTsKKyAgZm9yIChjb25zdCBDYXNlKiBjID0ga0Nhc2VzOyBjLT5sZWZ0OyArK2MpIHsKKyAgICBF
WFBFQ1RfVFJVRShjLT5leHBlY3RlZF9lZGl0cyA9PQorICAgICAgICAgICAgICAgIEVkaXRzVG9T
dHJpbmcoQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKENoYXJzVG9JbmRpY2VzKGMtPmxlZnQpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJzVG9J
bmRpY2VzKGMtPnJpZ2h0KSkpKQorICAgICAgICA8PCAiTGVmdCA8IiA8PCBjLT5sZWZ0IDw8ICI+
IFJpZ2h0IDwiIDw8IGMtPnJpZ2h0IDw8ICI+IEVkaXRzIDwiCisgICAgICAgIDw8IEVkaXRzVG9T
dHJpbmcoQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKAorICAgICAgICAgICAgICAgQ2hhcnNUb0luZGlj
ZXMoYy0+bGVmdCksIENoYXJzVG9JbmRpY2VzKGMtPnJpZ2h0KSkpIDw8ICI+IjsKKyAgICBFWFBF
Q1RfVFJVRShjLT5leHBlY3RlZF9kaWZmID09IENyZWF0ZVVuaWZpZWREaWZmKENoYXJzVG9MaW5l
cyhjLT5sZWZ0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENoYXJzVG9MaW5lcyhjLT5yaWdodCkpKQorICAgICAgICA8PCAiTGVmdCA8IiA8
PCBjLT5sZWZ0IDw8ICI+IFJpZ2h0IDwiIDw8IGMtPnJpZ2h0IDw8ICI+IERpZmYgPCIKKyAgICAg
ICAgPDwgQ3JlYXRlVW5pZmllZERpZmYoQ2hhcnNUb0xpbmVzKGMtPmxlZnQpLCBDaGFyc1RvTGlu
ZXMoYy0+cmlnaHQpKQorICAgICAgICA8PCAiPiI7CisgIH0KK30KKwogLy8gVGVzdHMgRXFGYWls
dXJlKCksIHVzZWQgZm9yIGltcGxlbWVudGluZyAqRVEqIGFzc2VydGlvbnMuCiBURVNUKEFzc2Vy
dGlvblRlc3QsIEVxRmFpbHVyZSkgewotICBjb25zdCBTdHJpbmcgZm9vX3ZhbCgiNSIpLCBiYXJf
dmFsKCI2Iik7Ci0gIGNvbnN0IFN0cmluZyBtc2cxKAorICBjb25zdCBzdGQ6OnN0cmluZyBmb29f
dmFsKCI1IiksIGJhcl92YWwoIjYiKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbXNnMSgKICAgICAg
IEVxRmFpbHVyZSgiZm9vIiwgImJhciIsIGZvb192YWwsIGJhcl92YWwsIGZhbHNlKQogICAgICAg
LmZhaWx1cmVfbWVzc2FnZSgpKTsKICAgRVhQRUNUX1NUUkVRKAotICAgICAgIlZhbHVlIG9mOiBi
YXJcbiIKLSAgICAgICIgIEFjdHVhbDogNlxuIgotICAgICAgIkV4cGVjdGVkOiBmb29cbiIKLSAg
ICAgICJXaGljaCBpczogNSIsCisgICAgICAiICAgICAgRXhwZWN0ZWQ6IGZvb1xuIgorICAgICAg
IiAgICAgIFdoaWNoIGlzOiA1XG4iCisgICAgICAiVG8gYmUgZXF1YWwgdG86IGJhclxuIgorICAg
ICAgIiAgICAgIFdoaWNoIGlzOiA2IiwKICAgICAgIG1zZzEuY19zdHIoKSk7CiAKLSAgY29uc3Qg
U3RyaW5nIG1zZzIoCisgIGNvbnN0IHN0ZDo6c3RyaW5nIG1zZzIoCiAgICAgICBFcUZhaWx1cmUo
ImZvbyIsICI2IiwgZm9vX3ZhbCwgYmFyX3ZhbCwgZmFsc2UpCiAgICAgICAuZmFpbHVyZV9tZXNz
YWdlKCkpOwogICBFWFBFQ1RfU1RSRVEoCi0gICAgICAiVmFsdWUgb2Y6IDZcbiIKLSAgICAgICJF
eHBlY3RlZDogZm9vXG4iCi0gICAgICAiV2hpY2ggaXM6IDUiLAorICAgICAgIiAgICAgIEV4cGVj
dGVkOiBmb29cbiIKKyAgICAgICIgICAgICBXaGljaCBpczogNVxuIgorICAgICAgIlRvIGJlIGVx
dWFsIHRvOiA2IiwKICAgICAgIG1zZzIuY19zdHIoKSk7CiAKLSAgY29uc3QgU3RyaW5nIG1zZzMo
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG1zZzMoCiAgICAgICBFcUZhaWx1cmUoIjUiLCAiYmFyIiwg
Zm9vX3ZhbCwgYmFyX3ZhbCwgZmFsc2UpCiAgICAgICAuZmFpbHVyZV9tZXNzYWdlKCkpOwogICBF
WFBFQ1RfU1RSRVEoCi0gICAgICAiVmFsdWUgb2Y6IGJhclxuIgotICAgICAgIiAgQWN0dWFsOiA2
XG4iCi0gICAgICAiRXhwZWN0ZWQ6IDUiLAorICAgICAgIiAgICAgIEV4cGVjdGVkOiA1XG4iCisg
ICAgICAiVG8gYmUgZXF1YWwgdG86IGJhclxuIgorICAgICAgIiAgICAgIFdoaWNoIGlzOiA2IiwK
ICAgICAgIG1zZzMuY19zdHIoKSk7CiAKLSAgY29uc3QgU3RyaW5nIG1zZzQoCisgIGNvbnN0IHN0
ZDo6c3RyaW5nIG1zZzQoCiAgICAgICBFcUZhaWx1cmUoIjUiLCAiNiIsIGZvb192YWwsIGJhcl92
YWwsIGZhbHNlKS5mYWlsdXJlX21lc3NhZ2UoKSk7CiAgIEVYUEVDVF9TVFJFUSgKLSAgICAgICJW
YWx1ZSBvZjogNlxuIgotICAgICAgIkV4cGVjdGVkOiA1IiwKKyAgICAgICIgICAgICBFeHBlY3Rl
ZDogNVxuIgorICAgICAgIlRvIGJlIGVxdWFsIHRvOiA2IiwKICAgICAgIG1zZzQuY19zdHIoKSk7
CiAKLSAgY29uc3QgU3RyaW5nIG1zZzUoCisgIGNvbnN0IHN0ZDo6c3RyaW5nIG1zZzUoCiAgICAg
ICBFcUZhaWx1cmUoImZvbyIsICJiYXIiLAotICAgICAgICAgICAgICAgIFN0cmluZygiXCJ4XCIi
KSwgU3RyaW5nKCJcInlcIiIpLAorICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKCJcInhcIiIp
LCBzdGQ6OnN0cmluZygiXCJ5XCIiKSwKICAgICAgICAgICAgICAgICB0cnVlKS5mYWlsdXJlX21l
c3NhZ2UoKSk7CiAgIEVYUEVDVF9TVFJFUSgKLSAgICAgICJWYWx1ZSBvZjogYmFyXG4iCi0gICAg
ICAiICBBY3R1YWw6IFwieVwiXG4iCi0gICAgICAiRXhwZWN0ZWQ6IGZvbyAoaWdub3JpbmcgY2Fz
ZSlcbiIKLSAgICAgICJXaGljaCBpczogXCJ4XCIiLAorICAgICAgIiAgICAgIEV4cGVjdGVkOiBm
b29cbiIKKyAgICAgICIgICAgICBXaGljaCBpczogXCJ4XCJcbiIKKyAgICAgICJUbyBiZSBlcXVh
bCB0bzogYmFyXG4iCisgICAgICAiICAgICAgV2hpY2ggaXM6IFwieVwiXG4iCisgICAgICAiSWdu
b3JpbmcgY2FzZSIsCiAgICAgICBtc2c1LmNfc3RyKCkpOwogfQogCitURVNUKEFzc2VydGlvblRl
c3QsIEVxRmFpbHVyZVdpdGhEaWZmKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGxlZnQoCisgICAg
ICAiMVxcbjJYWFhcXG4zXFxuNVxcbjZcXG43XFxuOFxcbjlcXG4xMFxcbjExXFxuMTJYWFhcXG4x
M1xcbjE0XFxuMTUiKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgcmlnaHQoCisgICAgICAiMVxcbjJc
XG4zXFxuNFxcbjVcXG42XFxuN1xcbjhcXG45XFxuMTFcXG4xMlxcbjEzXFxuMTQiKTsKKyAgY29u
c3Qgc3RkOjpzdHJpbmcgbXNnMSgKKyAgICAgIEVxRmFpbHVyZSgibGVmdCIsICJyaWdodCIsIGxl
ZnQsIHJpZ2h0LCBmYWxzZSkuZmFpbHVyZV9tZXNzYWdlKCkpOworICBFWFBFQ1RfU1RSRVEoCisg
ICAgICAiICAgICAgRXhwZWN0ZWQ6IGxlZnRcbiIKKyAgICAgICIgICAgICBXaGljaCBpczogIgor
ICAgICAgIjFcXG4yWFhYXFxuM1xcbjVcXG42XFxuN1xcbjhcXG45XFxuMTBcXG4xMVxcbjEyWFhY
XFxuMTNcXG4xNFxcbjE1XG4iCisgICAgICAiVG8gYmUgZXF1YWwgdG86IHJpZ2h0XG4iCisgICAg
ICAiICAgICAgV2hpY2ggaXM6IDFcXG4yXFxuM1xcbjRcXG41XFxuNlxcbjdcXG44XFxuOVxcbjEx
XFxuMTJcXG4xM1xcbjE0XG4iCisgICAgICAiV2l0aCBkaWZmOlxuQEAgLTEsNSArMSw2IEBAXG4g
MVxuLTJYWFhcbisyXG4gM1xuKzRcbiA1XG4gNlxuIgorICAgICAgIkBAIC03LDggKzgsNiBAQFxu
IDhcbiA5XG4tMTBcbiAxMVxuLTEyWFhYXG4rMTJcbiAxM1xuIDE0XG4tMTVcbiIsCisgICAgICBt
c2cxLmNfc3RyKCkpOworfQorCiAvLyBUZXN0cyBBcHBlbmRVc2VyTWVzc2FnZSgpLCB1c2VkIGZv
ciBpbXBsZW1lbnRpbmcgdGhlICpFUSogbWFjcm9zLgogVEVTVChBc3NlcnRpb25UZXN0LCBBcHBl
bmRVc2VyTWVzc2FnZSkgewotICBjb25zdCBTdHJpbmcgZm9vKCJmb28iKTsKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcgZm9vKCJmb28iKTsKIAogICBNZXNzYWdlIG1zZzsKICAgRVhQRUNUX1NUUkVRKCJm
b28iLApAQCAtMzQ3Nyw3ICszNjA1LDcgQEAgVEVTVChBc3NlcnRpb25UZXN0LCBBcHBlbmRVc2Vy
TWVzc2FnZSkgewogCiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBTaWxlbmNlcyB3YXJuaW5nczog
IkNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZSIsICJVbnJlYWNoYWJsZSBjb2RlIgotI3ByYWdtYSBv
cHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCisjIHByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXct
cmNoCiAjZW5kaWYKIAogLy8gVGVzdHMgQVNTRVJUX1RSVUUuCkBAIC0zNDkwLDggKzM2MTgsOCBA
QCBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9UUlVFKSB7CiAvLyBUZXN0cyBBU1NFUlRfVFJV
RShwcmVkaWNhdGUpIGZvciBwcmVkaWNhdGVzIHJldHVybmluZyBBc3NlcnRpb25SZXN1bHQuCiBU
RVNUKEFzc2VydGlvblRlc3QsIEFzc2VydFRydWVXaXRoQXNzZXJ0aW9uUmVzdWx0KSB7CiAgIEFT
U0VSVF9UUlVFKFJlc3VsdElzRXZlbigyKSk7Ci0jaWYgIWRlZmluZWQoX19CT1JMQU5EQ19fKSB8
fCBfX0JPUkxBTkRDX18gPj0gMHg2MDAKLSAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlciAyMDA3Lgor
I2lmbmRlZiBfX0JPUkxBTkRDX18KKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4KICAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1RSVUUoUmVzdWx0SXNFdmVuKDMpKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIlZhbHVlIG9mOiBSZXN1bHRJc0V2ZW4oMylcbiIKICAgICAgICAgICAgICAg
ICAgICAgICAgIiAgQWN0dWFsOiBmYWxzZSAoMyBpcyBvZGQpXG4iCkBAIC0zNTE2LDggKzM2NDQs
OCBAQCBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9GQUxTRSkgewogLy8gVGVzdHMgQVNTRVJU
X0ZBTFNFKHByZWRpY2F0ZSkgZm9yIHByZWRpY2F0ZXMgcmV0dXJuaW5nIEFzc2VydGlvblJlc3Vs
dC4KIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0RmFsc2VXaXRoQXNzZXJ0aW9uUmVzdWx0KSB7
CiAgIEFTU0VSVF9GQUxTRShSZXN1bHRJc0V2ZW4oMykpOwotI2lmICFkZWZpbmVkKF9fQk9STEFO
RENfXykgfHwgX19CT1JMQU5EQ19fID49IDB4NjAwCi0gIC8vIElDRSdzIGluIEMrK0J1aWxkZXIg
MjAwNy4KKyNpZm5kZWYgX19CT1JMQU5EQ19fCisgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIuCiAg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShSZXN1bHRJc0V2ZW4oMikpLAogICAg
ICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IFJlc3VsdElzRXZlbigyKVxuIgogICAgICAg
ICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IHRydWUgKDIgaXMgZXZlbilcbiIKQEAgLTM1MzIs
NyArMzY2MCw3IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0RmFsc2VXaXRoQXNzZXJ0aW9u
UmVzdWx0KSB7CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFJlc3RvcmVzIHdhcm5pbmdzIGFm
dGVyIHByZXZpb3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXByZXNzZWQgdGhlbQotI3ByYWdt
YSBvcHRpb24gcG9wCisjIHByYWdtYSBvcHRpb24gcG9wCiAjZW5kaWYKIAogLy8gVGVzdHMgdXNp
bmcgQVNTRVJUX0VRIG9uIGRvdWJsZSB2YWx1ZXMuICBUaGUgcHVycG9zZSBpcyB0byBtYWtlCkBA
IC0zNTUxLDkgKzM2NzksOSBAQCBURVNUKEV4cGVjdFRlc3QsIEFTU0VSVF9FUV9Eb3VibGUpIHsK
IFRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0VRKSB7CiAgIEFTU0VSVF9FUSg1LCAyICsgMyk7
CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUSg1LCAyKjMpLAotICAgICAgICAgICAg
ICAgICAgICAgICAiVmFsdWUgb2Y6IDIqM1xuIgotICAgICAgICAgICAgICAgICAgICAgICAiICBB
Y3R1YWw6IDZcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiA1Iik7CisgICAg
ICAgICAgICAgICAgICAgICAgICIgICAgICBFeHBlY3RlZDogNVxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAiVG8gYmUgZXF1YWwgdG86IDIqM1xuIgorICAgICAgICAgICAgICAgICAgICAgICAi
ICAgICAgV2hpY2ggaXM6IDYiKTsKIH0KIAogLy8gVGVzdHMgQVNTRVJUX0VRKE5VTEwsIHBvaW50
ZXIpLgpAQCAtMzU3MCw3ICszNjk4LDcgQEAgVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfRVFf
TlVMTCkgewogICAvLyBBIGZhaWx1cmUuCiAgIHN0YXRpYyBpbnQgbiA9IDA7CiAgIEVYUEVDVF9G
QVRBTF9GQUlMVVJFKEFTU0VSVF9FUShOVUxMLCAmbiksCi0gICAgICAgICAgICAgICAgICAgICAg
ICJWYWx1ZSBvZjogJm5cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAiVG8gYmUgZXF1YWwg
dG86ICZuXG4iKTsKIH0KICNlbmRpZiAgLy8gR1RFU1RfQ0FOX0NPTVBBUkVfTlVMTAogCkBAIC0z
NjM1LDEzICszNzYzLDE0IEBAIHZvaWQgVGhyb3dOb3RoaW5nKCkge30KIFRFU1QoQXNzZXJ0aW9u
VGVzdCwgQVNTRVJUX1RIUk9XKSB7CiAgIEFTU0VSVF9USFJPVyhUaHJvd0FuSW50ZWdlcigpLCBp
bnQpOwogCi0jaWZuZGVmIF9fQk9STEFORENfXworIyBpZm5kZWYgX19CT1JMQU5EQ19fCisKICAg
Ly8gSUNFJ3MgaW4gQysrQnVpbGRlciAyMDA3IGFuZCAyMDA5LgogICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRSgKICAgICAgIEFTU0VSVF9USFJPVyhUaHJvd0FuSW50ZWdlcigpLCBib29sKSwKICAgICAg
ICJFeHBlY3RlZDogVGhyb3dBbkludGVnZXIoKSB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5cGUg
Ym9vbC5cbiIKICAgICAgICIgIEFjdHVhbDogaXQgdGhyb3dzIGEgZGlmZmVyZW50IHR5cGUuIik7
Ci0jZW5kaWYKKyMgZW5kaWYKIAogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgKICAgICAgIEFTU0VS
VF9USFJPVyhUaHJvd05vdGhpbmcoKSwgYm9vbCksCkBAIC0zNjcyLDcgKzM4MDEsOCBAQCBURVNU
KEFzc2VydGlvblRlc3QsIEFTU0VSVF9BTllfVEhST1cpIHsKIC8vIGNvbXBpbGUuCiBURVNUKEFz
c2VydGlvblRlc3QsIEFzc2VydFByZWNlZGVuY2UpIHsKICAgQVNTRVJUX0VRKDEgPCAyLCB0cnVl
KTsKLSAgQVNTRVJUX0VRKHRydWUgJiYgZmFsc2UsIGZhbHNlKTsKKyAgYm9vbCBmYWxzZV92YWx1
ZSA9IGZhbHNlOworICBBU1NFUlRfRVEodHJ1ZSAmJiBmYWxzZV92YWx1ZSwgZmFsc2UpOwogfQog
CiAvLyBBIHN1YnJvdXRpbmUgdXNlZCBieSB0aGUgZm9sbG93aW5nIHRlc3QuCkBAIC0zNjgzLDcg
KzM4MTMsNyBAQCB2b2lkIFRlc3RFcTEoaW50IHgpIHsKIC8vIFRlc3RzIGNhbGxpbmcgYSB0ZXN0
IHN1YnJvdXRpbmUgdGhhdCdzIG5vdCBwYXJ0IG9mIGEgZml4dHVyZS4KIFRFU1QoQXNzZXJ0aW9u
VGVzdCwgTm9uRml4dHVyZVN1YnJvdXRpbmUpIHsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoVGVz
dEVxMSgyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiB4Iik7CisgICAgICAg
ICAgICAgICAgICAgICAgICJUbyBiZSBlcXVhbCB0bzogeCIpOwogfQogCiAvLyBBbiB1bmNvcHlh
YmxlIGNsYXNzLgpAQCAtMzczMiw3ICszODYyLDcgQEAgVEVTVChBc3NlcnRpb25UZXN0LCBBc3Nl
cnRXb3Jrc1dpdGhVbmNvcHlhYmxlT2JqZWN0KSB7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKFRl
c3RBc3NlcnROb25Qb3NpdGl2ZSgpLAogICAgICJJc1Bvc2l0aXZlVW5jb3B5YWJsZSh5KSBldmFs
dWF0ZXMgdG8gZmFsc2UsIHdoZXJlXG55IGV2YWx1YXRlcyB0byAtMSIpOwogICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShUZXN0QXNzZXJ0RXF1YWxzVW5jb3B5YWJsZSgpLAotICAgICJWYWx1ZSBvZjog
eVxuICBBY3R1YWw6IC0xXG5FeHBlY3RlZDogeFxuV2hpY2ggaXM6IDUiKTsKKyAgICAiRXhwZWN0
ZWQ6IHhcbiAgICAgIFdoaWNoIGlzOiA1XG5UbyBiZSBlcXVhbCB0bzogeVxuICAgICAgV2hpY2gg
aXM6IC0xIik7CiB9CiAKIC8vIFRlc3RzIHRoYXQgdW5jb3B5YWJsZSBvYmplY3RzIGNhbiBiZSB1
c2VkIGluIGV4cGVjdHMuCkBAIC0zNzQ0LDU3ICszODc0LDg5IEBAIFRFU1QoQXNzZXJ0aW9uVGVz
dCwgRXhwZWN0V29ya3NXaXRoVW5jb3B5YWJsZU9iamVjdCkgewogICAgICJJc1Bvc2l0aXZlVW5j
b3B5YWJsZSh5KSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlXG55IGV2YWx1YXRlcyB0byAtMSIp
OwogICBFWFBFQ1RfRVEoeCwgeCk7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9F
USh4LCB5KSwKLSAgICAiVmFsdWUgb2Y6IHlcbiAgQWN0dWFsOiAtMVxuRXhwZWN0ZWQ6IHhcbldo
aWNoIGlzOiA1Iik7CisgICAgIkV4cGVjdGVkOiB4XG4gICAgICBXaGljaCBpczogNVxuVG8gYmUg
ZXF1YWwgdG86IHlcbiAgICAgIFdoaWNoIGlzOiAtMSIpOwogfQogCitlbnVtIE5hbWVkRW51bSB7
CisgIGtFMSA9IDAsCisgIGtFMiA9IDEKK307CiAKLS8vIFRoZSB2ZXJzaW9uIG9mIGdjYyB1c2Vk
IGluIFhDb2RlIDIuMiBoYXMgYSBidWcgYW5kIGRvZXNuJ3QgYWxsb3cKK1RFU1QoQXNzZXJ0aW9u
VGVzdCwgTmFtZWRFbnVtKSB7CisgIEVYUEVDVF9FUShrRTEsIGtFMSk7CisgIEVYUEVDVF9MVChr
RTEsIGtFMik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShrRTEsIGtFMiks
ICJXaGljaCBpczogMCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoa0Ux
LCBrRTIpLCAiV2hpY2ggaXM6IDEiKTsKK30KKworLy8gVGhlIHZlcnNpb24gb2YgZ2NjIHVzZWQg
aW4gWENvZGUgMi4yIGhhcyBhIGJ1ZyBhbmQgZG9lc24ndCBhbGxvdwogLy8gYW5vbnltb3VzIGVu
dW1zIGluIGFzc2VydGlvbnMuICBUaGVyZWZvcmUgdGhlIGZvbGxvd2luZyB0ZXN0IGlzIG5vdAog
Ly8gZG9uZSBvbiBNYWMuCi0vLyBTdW4gU3R1ZGlvIGFsc28gcmVqZWN0cyB0aGlzIGNvZGUuCi0j
aWYgIUdURVNUX09TX01BQyAmJiAhZGVmaW5lZChfX1NVTlBST19DQykKKy8vIFN1biBTdHVkaW8g
YW5kIEhQIGFDQyBhbHNvIHJlamVjdCB0aGlzIGNvZGUuCisjaWYgIUdURVNUX09TX01BQyAmJiAh
ZGVmaW5lZChfX1NVTlBST19DQykgJiYgIWRlZmluZWQoX19IUF9hQ0MpCiAKIC8vIFRlc3RzIHVz
aW5nIGFzc2VydGlvbnMgd2l0aCBhbm9ueW1vdXMgZW51bXMuCiBlbnVtIHsKLSAgQ0FTRV9BID0g
LTEsCi0jaWYgR1RFU1RfT1NfTElOVVgKKyAga0Nhc2VBID0gLTEsCisKKyMgaWYgR1RFU1RfT1Nf
TElOVVgKKwogICAvLyBXZSB3YW50IHRvIHRlc3QgdGhlIGNhc2Ugd2hlcmUgdGhlIHNpemUgb2Yg
dGhlIGFub255bW91cyBlbnVtIGlzCiAgIC8vIGxhcmdlciB0aGFuIHNpemVvZihpbnQpLCB0byBt
YWtlIHN1cmUgb3VyIGltcGxlbWVudGF0aW9uIG9mIHRoZQogICAvLyBhc3NlcnRpb25zIGRvZXNu
J3QgdHJ1bmNhdGUgdGhlIGVudW1zLiAgSG93ZXZlciwgTVNWQwogICAvLyAoaW5jb3JyZWN0bHkp
IGRvZXNuJ3QgYWxsb3cgYW4gZW51bSB2YWx1ZSB0byBleGNlZWQgdGhlIHJhbmdlIG9mCiAgIC8v
IGFuIGludCwgc28gdGhpcyBoYXMgdG8gYmUgY29uZGl0aW9uYWxseSBjb21waWxlZC4KICAgLy8K
LSAgLy8gT24gTGludXgsIENBU0VfQiBhbmQgQ0FTRV9BIGhhdmUgdGhlIHNhbWUgdmFsdWUgd2hl
biB0cnVuY2F0ZWQgdG8KKyAgLy8gT24gTGludXgsIGtDYXNlQiBhbmQga0Nhc2VBIGhhdmUgdGhl
IHNhbWUgdmFsdWUgd2hlbiB0cnVuY2F0ZWQgdG8KICAgLy8gaW50IHNpemUuICBXZSB3YW50IHRv
IHRlc3Qgd2hldGhlciB0aGlzIHdpbGwgY29uZnVzZSB0aGUKICAgLy8gYXNzZXJ0aW9ucy4KLSAg
Q0FTRV9CID0gdGVzdGluZzo6aW50ZXJuYWw6OmtNYXhCaWdnZXN0SW50LAotI2Vsc2UKLSAgQ0FT
RV9CID0gSU5UX01BWCwKLSNlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKKyAga0Nhc2VCID0gdGVz
dGluZzo6aW50ZXJuYWw6OmtNYXhCaWdnZXN0SW50LAorCisjIGVsc2UKKworICBrQ2FzZUIgPSBJ
TlRfTUFYLAorCisjIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCisgIGtDYXNlQyA9IDQyCiB9
OwogCiBURVNUKEFzc2VydGlvblRlc3QsIEFub255bW91c0VudW0pIHsKLSNpZiBHVEVTVF9PU19M
SU5VWAotICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50PihDQVNFX0EpLCBzdGF0aWNfY2FzdDxp
bnQ+KENBU0VfQikpOwotI2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAotCi0gIEVYUEVDVF9FUShD
QVNFX0EsIENBU0VfQSk7Ci0gIEVYUEVDVF9ORShDQVNFX0EsIENBU0VfQik7Ci0gIEVYUEVDVF9M
VChDQVNFX0EsIENBU0VfQik7Ci0gIEVYUEVDVF9MRShDQVNFX0EsIENBU0VfQik7Ci0gIEVYUEVD
VF9HVChDQVNFX0IsIENBU0VfQSk7Ci0gIEVYUEVDVF9HRShDQVNFX0EsIENBU0VfQSk7Ci0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HRShDQVNFX0EsIENBU0VfQiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICIoQ0FTRV9BKSA+PSAoQ0FTRV9CKSIpOwotCi0gIEFTU0VSVF9F
UShDQVNFX0EsIENBU0VfQSk7Ci0gIEFTU0VSVF9ORShDQVNFX0EsIENBU0VfQik7Ci0gIEFTU0VS
VF9MVChDQVNFX0EsIENBU0VfQik7Ci0gIEFTU0VSVF9MRShDQVNFX0EsIENBU0VfQik7Ci0gIEFT
U0VSVF9HVChDQVNFX0IsIENBU0VfQSk7Ci0gIEFTU0VSVF9HRShDQVNFX0EsIENBU0VfQSk7Ci0g
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShDQVNFX0EsIENBU0VfQiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogQ0FTRV9CIik7CisjIGlmIEdURVNUX09TX0xJTlVY
CisKKyAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGludD4oa0Nhc2VBKSwgc3RhdGljX2Nhc3Q8aW50
PihrQ2FzZUIpKTsKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKKworICBFWFBFQ1RfRVEo
a0Nhc2VBLCBrQ2FzZUEpOworICBFWFBFQ1RfTkUoa0Nhc2VBLCBrQ2FzZUIpOworICBFWFBFQ1Rf
TFQoa0Nhc2VBLCBrQ2FzZUIpOworICBFWFBFQ1RfTEUoa0Nhc2VBLCBrQ2FzZUIpOworICBFWFBF
Q1RfR1Qoa0Nhc2VCLCBrQ2FzZUEpOworICBFWFBFQ1RfR0Uoa0Nhc2VBLCBrQ2FzZUEpOworICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR0Uoa0Nhc2VBLCBrQ2FzZUIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiKGtDYXNlQSkgPj0gKGtDYXNlQikiKTsKKyAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dFKGtDYXNlQSwga0Nhc2VDKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIi0xIHZzIDQyIik7CisKKyAgQVNTRVJUX0VRKGtDYXNlQSwga0Nhc2VBKTsK
KyAgQVNTRVJUX05FKGtDYXNlQSwga0Nhc2VCKTsKKyAgQVNTRVJUX0xUKGtDYXNlQSwga0Nhc2VC
KTsKKyAgQVNTRVJUX0xFKGtDYXNlQSwga0Nhc2VCKTsKKyAgQVNTRVJUX0dUKGtDYXNlQiwga0Nh
c2VBKTsKKyAgQVNTRVJUX0dFKGtDYXNlQSwga0Nhc2VBKTsKKworIyBpZm5kZWYgX19CT1JMQU5E
Q19fCisKKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4KKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
QVNTRVJUX0VRKGtDYXNlQSwga0Nhc2VCKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJl
IGVxdWFsIHRvOiBrQ2FzZUIiKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKGtD
YXNlQSwga0Nhc2VDKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIldoaWNoIGlzOiA0MiIpOwor
IyBlbmRpZgorCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShrQ2FzZUEsIGtDYXNl
QyksCisgICAgICAgICAgICAgICAgICAgICAgICJXaGljaCBpczogLTEiKTsKIH0KIAogI2VuZGlm
ICAvLyAhR1RFU1RfT1NfTUFDICYmICFkZWZpbmVkKF9fU1VOUFJPX0NDKQpAQCAtMzg0MCwyNCAr
NDAwMiwyNiBAQCBURVNUKEhSRVNVTFRBc3NlcnRpb25UZXN0LCBFWFBFQ1RfSFJFU1VMVF9GQUlM
RUQpIHsKIAogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfSFJFU1VMVF9GQUlMRUQo
T2tIUkVTVUxUU3VjY2VzcygpKSwKICAgICAiRXhwZWN0ZWQ6IChPa0hSRVNVTFRTdWNjZXNzKCkp
IGZhaWxzLlxuIgotICAgICIgIEFjdHVhbDogMHgwMDAwMDAwMCIpOworICAgICIgIEFjdHVhbDog
MHgwIik7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChG
YWxzZUhSRVNVTFRTdWNjZXNzKCkpLAogICAgICJFeHBlY3RlZDogKEZhbHNlSFJFU1VMVFN1Y2Nl
c3MoKSkgZmFpbHMuXG4iCi0gICAgIiAgQWN0dWFsOiAweDAwMDAwMDAxIik7CisgICAgIiAgQWN0
dWFsOiAweDEiKTsKIH0KIAogVEVTVChIUkVTVUxUQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0hSRVNV
TFRfRkFJTEVEKSB7CiAgIEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChFX1VORVhQRUNURUQpOwogCi0j
aWZuZGVmIF9fQk9STEFORENfXworIyBpZm5kZWYgX19CT1JMQU5EQ19fCisKICAgLy8gSUNFJ3Mg
aW4gQysrQnVpbGRlciAyMDA3IGFuZCAyMDA5LgogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NF
UlRfSFJFU1VMVF9GQUlMRUQoT2tIUkVTVUxUU3VjY2VzcygpKSwKICAgICAiRXhwZWN0ZWQ6IChP
a0hSRVNVTFRTdWNjZXNzKCkpIGZhaWxzLlxuIgotICAgICIgIEFjdHVhbDogMHgwMDAwMDAwMCIp
OwotI2VuZGlmCisgICAgIiAgQWN0dWFsOiAweDAiKTsKKyMgZW5kaWYKKwogICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShBU1NFUlRfSFJFU1VMVF9GQUlMRUQoRmFsc2VIUkVTVUxUU3VjY2VzcygpKSwK
ICAgICAiRXhwZWN0ZWQ6IChGYWxzZUhSRVNVTFRTdWNjZXNzKCkpIGZhaWxzLlxuIgotICAgICIg
IEFjdHVhbDogMHgwMDAwMDAwMSIpOworICAgICIgIEFjdHVhbDogMHgxIik7CiB9CiAKIC8vIFRl
c3RzIHRoYXQgc3RyZWFtaW5nIHRvIHRoZSBIUkVTVUxUIG1hY3JvcyB3b3Jrcy4KQEAgLTM4NzEs
MTIgKzQwMzUsMTMgQEAgVEVTVChIUkVTVUxUQXNzZXJ0aW9uVGVzdCwgU3RyZWFtaW5nKSB7CiAg
ICAgICBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQoRV9VTkVYUEVDVEVEKSA8PCAiZXhwZWN0ZWQg
ZmFpbHVyZSIsCiAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIpOwogCi0jaWZuZGVmIF9fQk9STEFO
RENfXworIyBpZm5kZWYgX19CT1JMQU5EQ19fCisKICAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlciAy
MDA3IGFuZCAyMDA5LgogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgKICAgICAgIEFTU0VSVF9IUkVT
VUxUX1NVQ0NFRURFRChFX1VORVhQRUNURUQpIDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKICAgICAg
ICJleHBlY3RlZCBmYWlsdXJlIik7Ci0jZW5kaWYKKyMgZW5kaWYKIAogICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSgKICAgICAgIEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChTX09LKSA8PCAiZXhwZWN0
ZWQgZmFpbHVyZSIsCkBAIC0zODkxLDcgKzQwNTYsNyBAQCBURVNUKEhSRVNVTFRBc3NlcnRpb25U
ZXN0LCBTdHJlYW1pbmcpIHsKIAogI2lmZGVmIF9fQk9STEFORENfXwogLy8gU2lsZW5jZXMgd2Fy
bmluZ3M6ICJDb25kaXRpb24gaXMgYWx3YXlzIHRydWUiLCAiVW5yZWFjaGFibGUgY29kZSIKLSNw
cmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAorIyBwcmFnbWEgb3B0aW9uIHB1c2ggLXct
Y2NjIC13LXJjaAogI2VuZGlmCiAKIC8vIFRlc3RzIHRoYXQgdGhlIGFzc2VydGlvbiBtYWNyb3Mg
YmVoYXZlIGxpa2Ugc2luZ2xlIHN0YXRlbWVudHMuCkBAIC00MDA4LDcgKzQxNzMsNyBAQCBURVNU
KEFzc2VydGlvblN5bnRheFRlc3QsIFdvcmtzV2l0aFN3aXRjaCkgewogI2lmIEdURVNUX0hBU19F
WENFUFRJT05TCiAKIHZvaWQgVGhyb3dBU3RyaW5nKCkgewotICAgIHRocm93ICJTdHJpbmciOwor
ICAgIHRocm93ICJzdGQ6OnN0cmluZyI7CiB9CiAKIC8vIFRlc3QgdGhhdCB0aGUgZXhjZXB0aW9u
IGFzc2VydGlvbiBtYWNyb3MgY29tcGlsZSBhbmQgd29yayB3aXRoIGNvbnN0CkBAIC00MDYwLDgg
KzQyMjUsMTA5IEBAIFRFU1QoU3VjY2Vzc2Z1bEFzc2VydGlvblRlc3QsIEFTU0VSVF9TVFIpIHsK
IAogbmFtZXNwYWNlIHsKIAorLy8gVGVzdHMgdGhlIG1lc3NhZ2Ugc3RyZWFtaW5nIHZhcmlhdGlv
biBvZiBhc3NlcnRpb25zLgorCitURVNUKEFzc2VydGlvbldpdGhNZXNzYWdlVGVzdCwgRVhQRUNU
KSB7CisgIEVYUEVDVF9FUSgxLCAxKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfTkUoMSwgMSkgPDwgIkV4cGVjdGVkIGZhaWx1cmUg
IzEuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1cmUgIzEiKTsK
KyAgRVhQRUNUX0xFKDEsIDIpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEVYUEVDVF9MVCgxLCAwKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMi4i
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZSAjMi4iKTsKKyAg
RVhQRUNUX0dFKDEsIDApIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9HVCgxLCAyKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMy4iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZSAjMy4iKTsKKworICBF
WFBFQ1RfU1RSRVEoIjEiLCAiMSIpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9TVFJORSgiMSIsICIxIikgPDwgIkV4cGVjdGVkIGZh
aWx1cmUgIzQuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1cmUg
IzQuIik7CisgIEVYUEVDVF9TVFJDQVNFRVEoImEiLCAiQSIpIDw8ICJUaGlzIHNob3VsZCBzdWNj
ZWVkLiI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9TVFJDQVNFTkUoImEiLCAi
QSIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM1LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJFeHBlY3RlZCBmYWlsdXJlICM1LiIpOworCisgIEVYUEVDVF9GTE9BVF9FUSgxLCAxKSA8PCAi
VGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1Rf
RE9VQkxFX0VRKDEsIDEuMikgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzYuIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1cmUgIzYuIik7CisgIEVYUEVDVF9ORUFSKDEs
IDEuMSwgMC4yKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworfQorCitURVNUKEFzc2VydGlv
bldpdGhNZXNzYWdlVGVzdCwgQVNTRVJUKSB7CisgIEFTU0VSVF9FUSgxLCAxKSA8PCAiVGhpcyBz
aG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfTkUoMSwgMikgPDwgIlRoaXMgc2hvdWxkIHN1Y2Nl
ZWQuIjsKKyAgQVNTRVJUX0xFKDEsIDIpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEFT
U0VSVF9MVCgxLCAyKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfR0UoMSwg
MCkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNT
RVJUX0dUKDEsIDIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICJFeHBlY3RlZCBmYWlsdXJlLiIpOworfQorCitURVNUKEFzc2VydGlvbldpdGhNZXNzYWdl
VGVzdCwgQVNTRVJUX1NUUikgeworICBBU1NFUlRfU1RSRVEoIjEiLCAiMSIpIDw8ICJUaGlzIHNo
b3VsZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9TVFJORSgiMSIsICIyIikgPDwgIlRoaXMgc2hvdWxk
IHN1Y2NlZWQuIjsKKyAgQVNTRVJUX1NUUkNBU0VFUSgiYSIsICJBIikgPDwgIlRoaXMgc2hvdWxk
IHN1Y2NlZWQuIjsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1NUUkNBU0VORSgiYSIs
ICJBIikgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkV4
cGVjdGVkIGZhaWx1cmUuIik7Cit9CisKK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBB
U1NFUlRfRkxPQVRJTkcpIHsKKyAgQVNTRVJUX0ZMT0FUX0VRKDEsIDEpIDw8ICJUaGlzIHNob3Vs
ZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9ET1VCTEVfRVEoMSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1
Y2NlZWQuIjsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX05FQVIoMSwxLjIsIDAuMSkg
PDwgIkV4cGVjdCBmYWlsdXJlLiIsICAvLyBOT0xJTlQKKyAgICAgICAgICAgICAgICAgICAgICAg
IkV4cGVjdCBmYWlsdXJlLiIpOworICAvLyBUbyB3b3JrIGFyb3VuZCBhIGJ1ZyBpbiBnY2MgMi45
NS4wLCB0aGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vCisgIC8vIHNwYWNlIGFmdGVyIHRoZSBmaXJz
dCBjb21tYSBpbiB0aGUgcHJldmlvdXMgc3RhdGVtZW50LgorfQorCisvLyBUZXN0cyB1c2luZyBB
U1NFUlRfRkFMU0Ugd2l0aCBhIHN0cmVhbWVkIG1lc3NhZ2UuCitURVNUKEFzc2VydGlvbldpdGhN
ZXNzYWdlVGVzdCwgQVNTRVJUX0ZBTFNFKSB7CisgIEFTU0VSVF9GQUxTRShmYWxzZSkgPDwgIlRo
aXMgc2hvdWxkbid0IGZhaWwuIjsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
CisgICAgQVNTRVJUX0ZBTFNFKHRydWUpIDw8ICJFeHBlY3RlZCBmYWlsdXJlOiAiIDw8IDIgPDwg
IiA+ICIgPDwgMQorICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGV2YWx1YXRlcyB0byAiIDw8
IHRydWU7CisgIH0sICJFeHBlY3RlZCBmYWlsdXJlIik7Cit9CisKKy8vIFRlc3RzIHVzaW5nIEZB
SUwgd2l0aCBhIHN0cmVhbWVkIG1lc3NhZ2UuCitURVNUKEFzc2VydGlvbldpdGhNZXNzYWdlVGVz
dCwgRkFJTCkgeworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShGQUlMKCkgPDwgMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIjAiKTsKK30KKworLy8gVGVzdHMgdXNpbmcgU1VDQ0VFRCB3aXRoIGEg
c3RyZWFtZWQgbWVzc2FnZS4KK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBTVUNDRUVE
KSB7CisgIFNVQ0NFRUQoKSA8PCAiU3VjY2VzcyA9PSAiIDw8IDE7Cit9CisKKy8vIFRlc3RzIHVz
aW5nIEFTU0VSVF9UUlVFIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgorVEVTVChBc3NlcnRpb25X
aXRoTWVzc2FnZVRlc3QsIEFTU0VSVF9UUlVFKSB7CisgIEFTU0VSVF9UUlVFKHRydWUpIDw8ICJU
aGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9UUlVFKHRydWUpIDw8IHRydWU7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9UUlVFKGZhbHNlKSA8
PCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAg
IDw8IHN0YXRpY19jYXN0PGNoYXIgKj4oTlVMTCk7CisgIH0sICIobnVsbCkobnVsbCkiKTsKK30K
KworI2lmIEdURVNUX09TX1dJTkRPV1MKKy8vIFRlc3RzIHVzaW5nIHdpZGUgc3RyaW5ncyBpbiBh
c3NlcnRpb24gbWVzc2FnZXMuCitURVNUKEFzc2VydGlvbldpdGhNZXNzYWdlVGVzdCwgV2lkZVN0
cmluZ01lc3NhZ2UpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisg
ICAgRVhQRUNUX1RSVUUoZmFsc2UpIDw8IEwiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLlx4ODEx
OSI7CisgIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIik7CisgIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9FUSgxLCAyKSA8PCAiVGhpcyBmYWlsdXJl
IGlzICIKKyAgICAgICAgICAgICAgICAgICAgPDwgTCJleHBlY3RlZCB0b28uXHg4MTIwIjsKKyAg
fSwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCB0b28uIik7Cit9CisjZW5kaWYgIC8vIEdURVNU
X09TX1dJTkRPV1MKKwogLy8gVGVzdHMgRVhQRUNUX1RSVUUuCiBURVNUKEV4cGVjdFRlc3QsIEVY
UEVDVF9UUlVFKSB7CisgIEVYUEVDVF9UUlVFKHRydWUpIDw8ICJJbnRlbnRpb25hbCBzdWNjZXNz
IjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1RSVUUoZmFsc2UpIDw8ICJJbnRl
bnRpb25hbCBmYWlsdXJlICMxLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlbnRp
b25hbCBmYWlsdXJlICMxLiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfVFJV
RShmYWxzZSkgPDwgIkludGVudGlvbmFsIGZhaWx1cmUgIzIuIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkludGVudGlvbmFsIGZhaWx1cmUgIzIuIik7CiAgIEVYUEVDVF9UUlVFKDIgPiAx
KTsgIC8vIE5PTElOVAogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfVFJVRSgyIDwg
MSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogMiA8IDFcbiIKQEAgLTQw
ODUsOSArNDM1MSwxNCBAQCBURVNUKEV4cGVjdFRlc3QsIEV4cGVjdFRydWVXaXRoQXNzZXJ0aW9u
UmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogdHJ1ZSIpOwog
fQogCi0vLyBUZXN0cyBFWFBFQ1RfRkFMU0UuCisvLyBUZXN0cyBFWFBFQ1RfRkFMU0Ugd2l0aCBh
IHN0cmVhbWVkIG1lc3NhZ2UuCiBURVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9GQUxTRSkgewogICBF
WFBFQ1RfRkFMU0UoMiA8IDEpOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9GQUxTRShmYWxzZSkgPDwg
IkludGVudGlvbmFsIHN1Y2Nlc3MiOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1Rf
RkFMU0UodHJ1ZSkgPDwgIkludGVudGlvbmFsIGZhaWx1cmUgIzEuIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkludGVudGlvbmFsIGZhaWx1cmUgIzEuIik7CisgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9GQUxTRSh0cnVlKSA8PCAiSW50ZW50aW9uYWwgZmFpbHVyZSAjMi4i
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9uYWwgZmFpbHVyZSAjMi4iKTsK
ICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0ZBTFNFKDIgPiAxKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiAyID4gMVxuIgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICBBY3R1YWw6IHRydWVcbiIKQEAgLTQxMTIsMTYgKzQzODMsMTYgQEAgVEVTVChF
eHBlY3RUZXN0LCBFeHBlY3RGYWxzZVdpdGhBc3NlcnRpb25SZXN1bHQpIHsKIAogI2lmZGVmIF9f
Qk9STEFORENfXwogLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0ZXIgcHJldmlvdXMgIiNwcmFnbWEg
b3B0aW9uIHB1c2giIHN1cHJlc3NlZCB0aGVtCi0jcHJhZ21hIG9wdGlvbiBwb3AKKyMgcHJhZ21h
IG9wdGlvbiBwb3AKICNlbmRpZgogCiAvLyBUZXN0cyBFWFBFQ1RfRVEuCiBURVNUKEV4cGVjdFRl
c3QsIEVYUEVDVF9FUSkgewogICBFWFBFQ1RfRVEoNSwgMiArIDMpOwogICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfRVEoNSwgMiozKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IlZhbHVlIG9mOiAyKjNcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiA2
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogNSIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICAgICAgRXhwZWN0ZWQ6IDVcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiAyKjNcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiAgICAgIFdoaWNoIGlzOiA2Iik7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVD
VF9FUSg1LCAyIC0gMyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIyIC0gMyIpOwogfQpA
QCAtNDE0Myw3ICs0NDE0LDcgQEAgVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVFfRG91YmxlKSB7
CiBURVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9FUV9OVUxMKSB7CiAgIC8vIEEgc3VjY2Vzcy4KICAg
Y29uc3QgY2hhciogcCA9IE5VTEw7Ci0gIC8vIFNvbWUgb2xkZXIgR0NDIHZlcnNpb25zIG1heSBp
c3N1ZSBhIHNwdXJpb3VzIHdhcmluZyBpbiB0aGlzIG9yIHRoZSBuZXh0CisgIC8vIFNvbWUgb2xk
ZXIgR0NDIHZlcnNpb25zIG1heSBpc3N1ZSBhIHNwdXJpb3VzIHdhcm5pbmcgaW4gdGhpcyBvciB0
aGUgbmV4dAogICAvLyBhc3NlcnRpb24gc3RhdGVtZW50LiBUaGlzIHdhcm5pbmcgc2hvdWxkIG5v
dCBiZSBzdXBwcmVzc2VkIHdpdGgKICAgLy8gc3RhdGljX2Nhc3Qgc2luY2UgdGhlIHRlc3QgdmVy
aWZpZXMgdGhlIGFiaWxpdHkgdG8gdXNlIGJhcmUgTlVMTCBhcyB0aGUKICAgLy8gZXhwZWN0ZWQg
cGFyYW1ldGVyIHRvIHRoZSBtYWNyby4KQEAgLTQxNTIsNyArNDQyMyw3IEBAIFRFU1QoRXhwZWN0
VGVzdCwgRVhQRUNUX0VRX05VTEwpIHsKICAgLy8gQSBmYWlsdXJlLgogICBpbnQgbiA9IDA7CiAg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShOVUxMLCAmbiksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogJm5cbiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAiVG8gYmUgZXF1YWwgdG86ICZuXG4iKTsKIH0KICNlbmRpZiAgLy8gR1RFU1RfQ0FOX0NP
TVBBUkVfTlVMTAogCkBAIC00MjY4LDcgKzQ1MzksNyBAQCBURVNUKEV4cGVjdFRlc3QsIEVYUEVD
VF9BTllfVEhST1cpIHsKIFRFU1QoRXhwZWN0VGVzdCwgRXhwZWN0UHJlY2VkZW5jZSkgewogICBF
WFBFQ1RfRVEoMSA8IDIsIHRydWUpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1Rf
RVEodHJ1ZSwgdHJ1ZSAmJiBmYWxzZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1
ZSBvZjogdHJ1ZSAmJiBmYWxzZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiVG8gYmUg
ZXF1YWwgdG86IHRydWUgJiYgZmFsc2UiKTsKIH0KIAogCkBAIC00MzYxLDcgKzQ2MzIsNyBAQCBU
RVNUKFN0cmVhbWFibGVUZXN0LCBCYXNpY0lvTWFuaXApIHsKIAogdm9pZCBBZGRGYWlsdXJlSGVs
cGVyKGJvb2wqIGFib3J0ZWQpIHsKICAgKmFib3J0ZWQgPSB0cnVlOwotICBBRERfRkFJTFVSRSgp
IDw8ICJGYWlsdXJlIjsKKyAgQUREX0ZBSUxVUkUoKSA8PCAiSW50ZW50aW9uYWwgZmFpbHVyZS4i
OwogICAqYWJvcnRlZCA9IGZhbHNlOwogfQogCkBAIC00MzY5LDEwICs0NjQwLDI1IEBAIHZvaWQg
QWRkRmFpbHVyZUhlbHBlcihib29sKiBhYm9ydGVkKSB7CiBURVNUKE1hY3JvVGVzdCwgQUREX0ZB
SUxVUkUpIHsKICAgYm9vbCBhYm9ydGVkID0gdHJ1ZTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoQWRkRmFpbHVyZUhlbHBlcigmYWJvcnRlZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICJGYWlsdXJlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlbnRpb25hbCBmYWls
dXJlLiIpOwogICBFWFBFQ1RfRkFMU0UoYWJvcnRlZCk7CiB9CiAKKy8vIFRlc3RzIEFERF9GQUlM
VVJFX0FULgorVEVTVChNYWNyb1Rlc3QsIEFERF9GQUlMVVJFX0FUKSB7CisgIC8vIFZlcmlmaWVz
IHRoYXQgQUREX0ZBSUxVUkVfQVQgZG9lcyBnZW5lcmF0ZSBhIG5vbmZhdGFsIGZhaWx1cmUgYW5k
CisgIC8vIHRoZSBmYWlsdXJlIG1lc3NhZ2UgY29udGFpbnMgdGhlIHVzZXItc3RyZWFtZWQgcGFy
dC4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQUREX0ZBSUxVUkVfQVQoImZvby5jYyIsIDQy
KSA8PCAiV3JvbmchIiwgIldyb25nISIpOworCisgIC8vIFZlcmlmaWVzIHRoYXQgdGhlIHVzZXIt
c3RyZWFtZWQgcGFydCBpcyBvcHRpb25hbC4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQURE
X0ZBSUxVUkVfQVQoImZvby5jYyIsIDQyKSwgIkZhaWxlZCIpOworCisgIC8vIFVuZm9ydHVuYXRl
bHksIHdlIGNhbm5vdCB2ZXJpZnkgdGhhdCB0aGUgZmFpbHVyZSBtZXNzYWdlIGNvbnRhaW5zCisg
IC8vIHRoZSByaWdodCBmaWxlIHBhdGggYW5kIGxpbmUgbnVtYmVyIHRoZSBzYW1lIHdheSwgYXMK
KyAgLy8gRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBkb2Vzbid0IGdldCB0byBzZWUgdGhlIGZp
bGUgcGF0aCBhbmQKKyAgLy8gbGluZSBudW1iZXIuICBJbnN0ZWFkLCB3ZSBkbyB0aGF0IGluIGd0
ZXN0X291dHB1dF90ZXN0Xy5jYy4KK30KKwogLy8gVGVzdHMgRkFJTC4KIFRFU1QoTWFjcm9UZXN0
LCBGQUlMKSB7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEZBSUwoKSwKQEAgLTQzODcsNyArNDY3
Myw2IEBAIFRFU1QoTWFjcm9UZXN0LCBTVUNDRUVEKSB7CiAgIFNVQ0NFRUQoKSA8PCAiRXhwbGlj
aXQgc3VjY2Vzcy4iOwogfQogCi0KIC8vIFRlc3RzIGZvciBFWFBFQ1RfRVEoKSBhbmQgQVNTRVJU
X0VRKCkuCiAvLwogLy8gVGhlc2UgdGVzdHMgZmFpbCAqaW50ZW50aW9uYWxseSosIHMudC4gdGhl
IGZhaWx1cmUgbWVzc2FnZXMgY2FuIGJlCkBAIC00Mzk4LDggKzQ2ODMsMTAgQEAgVEVTVChNYWNy
b1Rlc3QsIFNVQ0NFRUQpIHsKIC8vIFRlc3RzIHVzaW5nIGJvb2wgdmFsdWVzIGluIHtFWFBFQ1R8
QVNTRVJUfV9FUS4KIFRFU1QoRXFBc3NlcnRpb25UZXN0LCBCb29sKSB7CiAgIEVYUEVDVF9FUSh0
cnVlLCAgdHJ1ZSk7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShmYWxzZSwgdHJ1
ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogdHJ1ZSIpOworICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRSh7CisgICAgICBib29sIGZhbHNlX3ZhbHVlID0gZmFsc2U7CisgICAgICBB
U1NFUlRfRVEoZmFsc2VfdmFsdWUsIHRydWUpOworICAgIH0sICJUbyBiZSBlcXVhbCB0bzogdHJ1
ZSIpOwogfQogCiAvLyBUZXN0cyB1c2luZyBpbnQgdmFsdWVzIGluIHtFWFBFQ1R8QVNTRVJUfV9F
US4KQEAgLTQ0MzMsMTggKzQ3MjAsMTggQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIFdpZGVDaGFy
KSB7CiAgIEVYUEVDVF9FUShMJ2InLCBMJ2InKTsKIAogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShFWFBFQ1RfRVEoTCdcMCcsIEwneCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFs
dWUgb2Y6IEwneCdcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBMJ3gn
ICgxMjAsIDB4NzgpXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogTCdc
MCdcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIldoaWNoIGlzOiBMJ1wwJyAoMCwgMHgw
KSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgRXhwZWN0ZWQ6IEwnXDAnXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICBXaGljaCBpczogTCdcMCcgKDAsIDB4
MClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiBMJ3gnXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICBXaGljaCBpczogTCd4JyAoMTIwLCAw
eDc4KSIpOwogCiAgIHN0YXRpYyB3Y2hhcl90IHdjaGFyOwogICB3Y2hhciA9IEwnYic7CiAgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShMJ2EnLCB3Y2hhciksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ3Y2hhciIpOwotICB3Y2hhciA9IEwnXHg4MTE5JzsKLSAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKEwnXHg4MTIwJywgd2NoYXIpLAotICAgICAgICAgICAg
ICAgICAgICAgICAiVmFsdWUgb2Y6IHdjaGFyIik7CisgIHdjaGFyID0gMHg4MTE5OworICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHg4MTIwKSwg
d2NoYXIpLAorICAgICAgICAgICAgICAgICAgICAgICAiVG8gYmUgZXF1YWwgdG86IHdjaGFyIik7
CiB9CiAKIC8vIFRlc3RzIHVzaW5nIDo6c3RkOjpzdHJpbmcgdmFsdWVzIGluIHtFWFBFQ1R8QVNT
RVJUfV9FUS4KQEAgLTQ0NjEsNyArNDc0OCw3IEBAIFRFU1QoRXFBc3NlcnRpb25UZXN0LCBTdGRT
dHJpbmcpIHsKICAgLy8gQ29tcGFyZXMgYSBjb25zdCBjaGFyKiB0byBhbiBzdGQ6OnN0cmluZyB0
aGF0IGhhcyBkaWZmZXJlbnQKICAgLy8gY29udGVudAogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShFWFBFQ1RfRVEoIlRlc3QiLCA6OnN0ZDo6c3RyaW5nKCJ0ZXN0IikpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAiOjpzdGQ6OnN0cmluZyhcInRlc3RcIikiKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlwidGVzdFwiIik7CiAKICAgLy8gQ29tcGFyZXMgYW4gc3RkOjpzdHJpbmcg
dG8gYSBjaGFyKiB0aGF0IGhhcyBkaWZmZXJlbnQgY29udGVudC4KICAgY2hhciogY29uc3QgcDEg
PSBjb25zdF9jYXN0PGNoYXIqPigiZm9vIik7CkBAIC00NDczLDI4ICs0NzYwLDMwIEBAIFRFU1Qo
RXFBc3NlcnRpb25UZXN0LCBTdGRTdHJpbmcpIHsKICAgc3RhdGljIDo6c3RkOjpzdHJpbmcgc3Ry
MyhzdHIxKTsKICAgc3RyMy5hdCgyKSA9ICdcMCc7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFT
U0VSVF9FUShzdHIxLCBzdHIzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBz
dHIzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogXCJBIFxcMCBpbiB0aGUg
bWlkZGxlXCIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiBzdHIz
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgICBXaGljaCBpczogXCJBIFxcMCBpbiB0
aGUgbWlkZGxlXCIiKTsKIH0KIAogI2lmIEdURVNUX0hBU19TVERfV1NUUklORwogCiAvLyBUZXN0
cyB1c2luZyA6OnN0ZDo6d3N0cmluZyB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgogVEVT
VChFcUFzc2VydGlvblRlc3QsIFN0ZFdpZGVTdHJpbmcpIHsKLSAgLy8gQ29tcGFyZXMgYW4gc3Rk
Ojp3c3RyaW5nIHRvIGEgY29uc3Qgd2NoYXJfdCogdGhhdCBoYXMgaWRlbnRpY2FsCi0gIC8vIGNv
bnRlbnQuCi0gIEVYUEVDVF9FUSg6OnN0ZDo6d3N0cmluZyhMIlRlc3RceDgxMTkiKSwgTCJUZXN0
XHg4MTE5Iik7Ci0KICAgLy8gQ29tcGFyZXMgdHdvIGlkZW50aWNhbCBzdGQ6OndzdHJpbmdzLgog
ICBjb25zdCA6OnN0ZDo6d3N0cmluZyB3c3RyMShMIkEgKiBpbiB0aGUgbWlkZGxlIik7CiAgIGNv
bnN0IDo6c3RkOjp3c3RyaW5nIHdzdHIyKHdzdHIxKTsKICAgQVNTRVJUX0VRKHdzdHIxLCB3c3Ry
Mik7CiAKKyAgLy8gQ29tcGFyZXMgYW4gc3RkOjp3c3RyaW5nIHRvIGEgY29uc3Qgd2NoYXJfdCog
dGhhdCBoYXMgaWRlbnRpY2FsCisgIC8vIGNvbnRlbnQuCisgIGNvbnN0IHdjaGFyX3Qga1Rlc3RY
ODExOVtdID0geyAnVCcsICdlJywgJ3MnLCAndCcsIDB4ODExOSwgJ1wwJyB9OworICBFWFBFQ1Rf
RVEoOjpzdGQ6OndzdHJpbmcoa1Rlc3RYODExOSksIGtUZXN0WDgxMTkpOworCiAgIC8vIENvbXBh
cmVzIGFuIHN0ZDo6d3N0cmluZyB0byBhIGNvbnN0IHdjaGFyX3QqIHRoYXQgaGFzIGRpZmZlcmVu
dAogICAvLyBjb250ZW50LgorICBjb25zdCB3Y2hhcl90IGtUZXN0WDgxMjBbXSA9IHsgJ1QnLCAn
ZScsICdzJywgJ3QnLCAweDgxMjAsICdcMCcgfTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX0VRKDo6c3RkOjp3c3RyaW5nKEwiVGVzdFx4ODExOSIp
LCBMIlRlc3RceDgxMjAiKTsKLSAgfSwgIkxcIlRlc3RcXHg4MTIwXCIiKTsKKyAgICBFWFBFQ1Rf
RVEoOjpzdGQ6OndzdHJpbmcoa1Rlc3RYODExOSksIGtUZXN0WDgxMjApOworICB9LCAia1Rlc3RY
ODEyMCIpOwogCiAgIC8vIENvbXBhcmVzIHR3byBzdGQ6OndzdHJpbmdzIHRoYXQgaGF2ZSBkaWZm
ZXJlbnQgY29udGVudHMsIG9uZSBvZgogICAvLyB3aGljaCBoYXZpbmcgYSBOVUwgY2hhcmFjdGVy
IGluIHRoZSBtaWRkbGUuCkBAIC00NTQ2LDE4ICs0ODM1LDIwIEBAIFRFU1QoRXFBc3NlcnRpb25U
ZXN0LCBHbG9iYWxTdHJpbmcpIHsKIAogLy8gVGVzdHMgdXNpbmcgOjp3c3RyaW5nIHZhbHVlcyBp
biB7RVhQRUNUfEFTU0VSVH1fRVEuCiBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgR2xvYmFsV2lkZVN0
cmluZykgewotICAvLyBDb21wYXJlcyBhIGNvbnN0IHdjaGFyX3QqIHRvIGEgOjp3c3RyaW5nIHRo
YXQgaGFzIGlkZW50aWNhbCBjb250ZW50LgotICBBU1NFUlRfRVEoTCJUZXN0XHg4MTE5IiwgOjp3
c3RyaW5nKEwiVGVzdFx4ODExOSIpKTsKLQogICAvLyBDb21wYXJlcyB0d28gaWRlbnRpY2FsIDo6
d3N0cmluZ3MuCiAgIHN0YXRpYyBjb25zdCA6OndzdHJpbmcgd3N0cjEoTCJBICogaW4gdGhlIG1p
ZGRsZSIpOwogICBzdGF0aWMgY29uc3QgOjp3c3RyaW5nIHdzdHIyKHdzdHIxKTsKICAgRVhQRUNU
X0VRKHdzdHIxLCB3c3RyMik7CiAKKyAgLy8gQ29tcGFyZXMgYSBjb25zdCB3Y2hhcl90KiB0byBh
IDo6d3N0cmluZyB0aGF0IGhhcyBpZGVudGljYWwgY29udGVudC4KKyAgY29uc3Qgd2NoYXJfdCBr
VGVzdFg4MTE5W10gPSB7ICdUJywgJ2UnLCAncycsICd0JywgMHg4MTE5LCAnXDAnIH07CisgIEFT
U0VSVF9FUShrVGVzdFg4MTE5LCA6OndzdHJpbmcoa1Rlc3RYODExOSkpOworCiAgIC8vIENvbXBh
cmVzIGEgY29uc3Qgd2NoYXJfdCogdG8gYSA6OndzdHJpbmcgdGhhdCBoYXMgZGlmZmVyZW50CiAg
IC8vIGNvbnRlbnQuCisgIGNvbnN0IHdjaGFyX3Qga1Rlc3RYODEyMFtdID0geyAnVCcsICdlJywg
J3MnLCAndCcsIDB4ODEyMCwgJ1wwJyB9OwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAv
LyBOT0xJTlQKLSAgICBFWFBFQ1RfRVEoTCJUZXN0XHg4MTIwIiwgOjp3c3RyaW5nKEwiVGVzdFx4
ODExOSIpKTsKKyAgICBFWFBFQ1RfRVEoa1Rlc3RYODEyMCwgOjp3c3RyaW5nKGtUZXN0WDgxMTkp
KTsKICAgfSwgIlRlc3RcXHg4MTE5Iik7CiAKICAgLy8gQ29tcGFyZXMgYSB3Y2hhcl90KiB0byBh
IDo6d3N0cmluZyB0aGF0IGhhcyBkaWZmZXJlbnQgY29udGVudC4KQEAgLTQ1OTAsNyArNDg4MSw3
IEBAIFRFU1QoRXFBc3NlcnRpb25UZXN0LCBDaGFyUG9pbnRlcikgewogICBBU1NFUlRfRVEocDEs
IHAxKTsKIAogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEocDAsIHAyKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBwMiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAiVG8gYmUgZXF1YWwgdG86IHAyIik7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEVYUEVDVF9FUShwMSwgcDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAicDIiKTsK
ICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KDB4MTIzNCksCkBAIC00NjEyLDcgKzQ5MDMsNyBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgV2lk
ZUNoYXJQb2ludGVyKSB7CiAgIEVYUEVDVF9FUShwMCwgcDApOwogCiAgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9FUShwMCwgcDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAi
VmFsdWUgb2Y6IHAyIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICJUbyBiZSBlcXVhbCB0
bzogcDIiKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHAxLCBwMiksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJwMiIpOwogICB2b2lkKiBwdjMgPSAodm9pZCopMHgx
MjM0OyAgLy8gTk9MSU5UCkBAIC00NjMyLDYgKzQ5MjMsNjggQEAgVEVTVChFcUFzc2VydGlvblRl
c3QsIE90aGVyUG9pbnRlcikgewogICAgICAgICAgICAgICAgICAgICAgICAiMHgxMjM0Iik7CiB9
CiAKKy8vIEEgY2xhc3MgdGhhdCBzdXBwb3J0cyBiaW5hcnkgY29tcGFyaXNvbiBvcGVyYXRvcnMg
YnV0IG5vdCBzdHJlYW1pbmcuCitjbGFzcyBVbnByaW50YWJsZUNoYXIgeworIHB1YmxpYzoKKyAg
ZXhwbGljaXQgVW5wcmludGFibGVDaGFyKGNoYXIgY2gpIDogY2hhcl8oY2gpIHt9CisKKyAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBjb25zdCB7CisgICAgcmV0
dXJuIGNoYXJfID09IHJocy5jaGFyXzsKKyAgfQorICBib29sIG9wZXJhdG9yIT0oY29uc3QgVW5w
cmludGFibGVDaGFyJiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gY2hhcl8gIT0gcmhzLmNoYXJf
OworICB9CisgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBjb25z
dCB7CisgICAgcmV0dXJuIGNoYXJfIDwgcmhzLmNoYXJfOworICB9CisgIGJvb2wgb3BlcmF0b3I8
PShjb25zdCBVbnByaW50YWJsZUNoYXImIHJocykgY29uc3QgeworICAgIHJldHVybiBjaGFyXyA8
PSByaHMuY2hhcl87CisgIH0KKyAgYm9vbCBvcGVyYXRvcj4oY29uc3QgVW5wcmludGFibGVDaGFy
JiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gY2hhcl8gPiByaHMuY2hhcl87CisgIH0KKyAgYm9v
bCBvcGVyYXRvcj49KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBjb25zdCB7CisgICAgcmV0
dXJuIGNoYXJfID49IHJocy5jaGFyXzsKKyAgfQorCisgcHJpdmF0ZToKKyAgY2hhciBjaGFyXzsK
K307CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0VRKCkgYW5kIGZyaWVuZHMgZG9uJ3QgcmVxdWly
ZSB0aGUgYXJndW1lbnRzIHRvCisvLyBiZSBwcmludGFibGUuCitURVNUKENvbXBhcmlzb25Bc3Nl
cnRpb25UZXN0LCBBY2NlcHRzVW5wcmludGFibGVBcmdzKSB7CisgIGNvbnN0IFVucHJpbnRhYmxl
Q2hhciB4KCd4JyksIHkoJ3knKTsKKyAgQVNTRVJUX0VRKHgsIHgpOworICBFWFBFQ1RfTkUoeCwg
eSk7CisgIEFTU0VSVF9MVCh4LCB5KTsKKyAgRVhQRUNUX0xFKHgsIHkpOworICBBU1NFUlRfR1Qo
eSwgeCk7CisgIEVYUEVDVF9HRSh4LCB4KTsKKworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShF
WFBFQ1RfRVEoeCwgeSksICIxLWJ5dGUgb2JqZWN0IDw3OD4iKTsKKyAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRVhQRUNUX0VRKHgsIHkpLCAiMS1ieXRlIG9iamVjdCA8Nzk+Iik7CisgIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9MVCh5LCB5KSwgIjEtYnl0ZSBvYmplY3QgPDc5PiIp
OworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR1QoeCwgeSksICIxLWJ5dGUgb2Jq
ZWN0IDw3OD4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dUKHgsIHkpLCAi
MS1ieXRlIG9iamVjdCA8Nzk+Iik7CisKKyAgLy8gQ29kZSB0ZXN0ZWQgYnkgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUgY2Fubm90IHJlZmVyZW5jZSBsb2NhbAorICAvLyB2YXJpYWJsZXMsIHNvIHdlIGhh
dmUgdG8gd3JpdGUgVW5wcmludGFibGVDaGFyKCd4JykgaW5zdGVhZCBvZiB4LgorI2lmbmRlZiBf
X0JPUkxBTkRDX18KKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4KKyAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoQVNTRVJUX05FKFVucHJpbnRhYmxlQ2hhcigneCcpLCBVbnByaW50YWJsZUNoYXIoJ3gn
KSksCisgICAgICAgICAgICAgICAgICAgICAgICIxLWJ5dGUgb2JqZWN0IDw3OD4iKTsKKyAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0xFKFVucHJpbnRhYmxlQ2hhcigneScpLCBVbnByaW50
YWJsZUNoYXIoJ3gnKSksCisgICAgICAgICAgICAgICAgICAgICAgICIxLWJ5dGUgb2JqZWN0IDw3
OD4iKTsKKyNlbmRpZgorICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfTEUoVW5wcmludGFi
bGVDaGFyKCd5JyksIFVucHJpbnRhYmxlQ2hhcigneCcpKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIjEtYnl0ZSBvYmplY3QgPDc5PiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRf
R0UoVW5wcmludGFibGVDaGFyKCd4JyksIFVucHJpbnRhYmxlQ2hhcigneScpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3QgPDc4PiIpOworICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShBU1NFUlRfR0UoVW5wcmludGFibGVDaGFyKCd4JyksIFVucHJpbnRhYmxlQ2hhcigneScp
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3QgPDc5PiIpOworfQorCiAv
LyBUZXN0cyB0aGUgRlJJRU5EX1RFU1QgbWFjcm8uCiAKIC8vIFRoaXMgY2xhc3MgaGFzIGEgcHJp
dmF0ZSBtZW1iZXIgd2Ugd2FudCB0byB0ZXN0LiAgV2Ugd2lsbCB0ZXN0IGl0CkBAIC00NzQ5LDcg
KzUxMDIsNyBAQCBURVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIENvbnN0cnVjdGlvbldvcmtzKSB7
CiAgIEVYUEVDVF9TVFJFUSgiZ2hpIiwgcjUubWVzc2FnZSgpKTsKIH0KIAotLy8gVGVzdHMgdGhh
dCB0aGUgbmVnYXRpb24gZmlwcyB0aGUgcHJlZGljYXRlIHJlc3VsdCBidXQga2VlcHMgdGhlIG1l
c3NhZ2UuCisvLyBUZXN0cyB0aGF0IHRoZSBuZWdhdGlvbiBmbGlwcyB0aGUgcHJlZGljYXRlIHJl
c3VsdCBidXQga2VlcHMgdGhlIG1lc3NhZ2UuCiBURVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIE5l
Z2F0aW9uV29ya3MpIHsKICAgQXNzZXJ0aW9uUmVzdWx0IHIxID0gQXNzZXJ0aW9uU3VjY2Vzcygp
IDw8ICJhYmMiOwogICBFWFBFQ1RfRkFMU0UoIXIxKTsKQEAgLTQ3NjYsNiArNTExOSwzNyBAQCBU
RVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIFN0cmVhbWluZ1dvcmtzKSB7CiAgIEVYUEVDVF9TVFJF
USgiYWJjZDB0cnVlIiwgci5tZXNzYWdlKCkpOwogfQogCitURVNUKEFzc2VydGlvblJlc3VsdFRl
c3QsIENhblN0cmVhbU9zdHJlYW1NYW5pcHVsYXRvcnMpIHsKKyAgQXNzZXJ0aW9uUmVzdWx0IHIg
PSBBc3NlcnRpb25TdWNjZXNzKCk7CisgIHIgPDwgIkRhdGEiIDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6
OmZsdXNoIDw8IHN0ZDo6ZW5kcyA8PCAiV2lsbCBiZSB2aXNpYmxlIjsKKyAgRVhQRUNUX1NUUkVR
KCJEYXRhXG5cXDBXaWxsIGJlIHZpc2libGUiLCByLm1lc3NhZ2UoKSk7Cit9CisKKy8vIFRoZSBu
ZXh0IHRlc3QgdXNlcyBleHBsaWNpdCBjb252ZXJzaW9uIG9wZXJhdG9ycyAtLSBhIEMrKzExIGZl
YXR1cmUuCisjaWYgR1RFU1RfTEFOR19DWFgxMQorCitURVNUKEFzc2VydGlvblJlc3VsdFRlc3Qs
IENvbnN0cnVjdGlibGVGcm9tQ29udGV4dHVhbGx5Q29udmVydGlibGVUb0Jvb2wpIHsKKyAgc3Ry
dWN0IEV4cGxpY2l0bHlDb252ZXJ0aWJsZVRvQm9vbCB7CisgICAgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlOyB9CisgICAgYm9vbCB2YWx1ZTsKKyAgfTsKKyAg
RXhwbGljaXRseUNvbnZlcnRpYmxlVG9Cb29sIHYxID0ge2ZhbHNlfTsKKyAgRXhwbGljaXRseUNv
bnZlcnRpYmxlVG9Cb29sIHYyID0ge3RydWV9OworICBFWFBFQ1RfRkFMU0UodjEpOworICBFWFBF
Q1RfVFJVRSh2Mik7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfTEFOR19DWFgxMQorCitzdHJ1Y3Qg
Q29udmVydGlibGVUb0Fzc2VydGlvblJlc3VsdCB7CisgIG9wZXJhdG9yIEFzc2VydGlvblJlc3Vs
dCgpIGNvbnN0IHsgcmV0dXJuIEFzc2VydGlvblJlc3VsdCh0cnVlKTsgfQorfTsKKworVEVTVChB
c3NlcnRpb25SZXN1bHRUZXN0LCBDb25zdHJ1Y3RpYmxlRnJvbUltcGxpY2l0bHlDb252ZXJ0aWJs
ZSkgeworICBDb252ZXJ0aWJsZVRvQXNzZXJ0aW9uUmVzdWx0IG9iajsKKyAgRVhQRUNUX1RSVUUo
b2JqKTsKK30KKwogLy8gVGVzdHMgc3RyZWFtaW5nIGEgdXNlciB0eXBlIHdob3NlIGRlZmluaXRp
b24gYW5kIG9wZXJhdG9yIDw8IGFyZQogLy8gYm90aCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4K
IGNsYXNzIEJhc2UgewpAQCAtNDk1MCw2ICs1MzM0LDU5IEBAIFRFU1RfRihUZXN0SW5mb1Rlc3Qs
IHJlc3VsdCkgewogICBBU1NFUlRfRVEoMCwgR2V0VGVzdFJlc3VsdCh0ZXN0X2luZm8pLT50b3Rh
bF9wYXJ0X2NvdW50KCkpOwogfQogCisjZGVmaW5lIFZFUklGWV9DT0RFX0xPQ0FUSU9OIFwKKyAg
Y29uc3QgaW50IGV4cGVjdGVkX2xpbmUgPSBfX0xJTkVfXyAtIDE7IFwKKyAgY29uc3QgVGVzdElu
Zm8qIGNvbnN0IHRlc3RfaW5mbyA9IEdldFVuaXRUZXN0SW1wbCgpLT5jdXJyZW50X3Rlc3RfaW5m
bygpOyBcCisgIEFTU0VSVF9UUlVFKHRlc3RfaW5mbyk7IFwKKyAgRVhQRUNUX1NUUkVRKF9fRklM
RV9fLCB0ZXN0X2luZm8tPmZpbGUoKSk7IFwKKyAgRVhQRUNUX0VRKGV4cGVjdGVkX2xpbmUsIHRl
c3RfaW5mby0+bGluZSgpKQorCitURVNUKENvZGVMb2NhdGlvbkZvclRFU1QsIFZlcmlmeSkgewor
ICBWRVJJRllfQ09ERV9MT0NBVElPTjsKK30KKworY2xhc3MgQ29kZUxvY2F0aW9uRm9yVEVTVEYg
OiBwdWJsaWMgVGVzdCB7Cit9OworCitURVNUX0YoQ29kZUxvY2F0aW9uRm9yVEVTVEYsIFZlcmlm
eSkgeworICBWRVJJRllfQ09ERV9MT0NBVElPTjsKK30KKworY2xhc3MgQ29kZUxvY2F0aW9uRm9y
VEVTVFAgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsKK307CisKK1RFU1RfUChDb2RlTG9j
YXRpb25Gb3JURVNUUCwgVmVyaWZ5KSB7CisgIFZFUklGWV9DT0RFX0xPQ0FUSU9OOworfQorCitJ
TlNUQU5USUFURV9URVNUX0NBU0VfUCgsIENvZGVMb2NhdGlvbkZvclRFU1RQLCBWYWx1ZXMoMCkp
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIENvZGVMb2NhdGlvbkZvclRZUEVEVEVT
VCA6IHB1YmxpYyBUZXN0IHsKK307CisKK1RZUEVEX1RFU1RfQ0FTRShDb2RlTG9jYXRpb25Gb3JU
WVBFRFRFU1QsIGludCk7CisKK1RZUEVEX1RFU1QoQ29kZUxvY2F0aW9uRm9yVFlQRURURVNULCBW
ZXJpZnkpIHsKKyAgVkVSSUZZX0NPREVfTE9DQVRJT047Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCA6IHB1YmxpYyBUZXN0IHsKK307
CisKK1RZUEVEX1RFU1RfQ0FTRV9QKENvZGVMb2NhdGlvbkZvclRZUEVEVEVTVFApOworCitUWVBF
RF9URVNUX1AoQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCwgVmVyaWZ5KSB7CisgIFZFUklGWV9D
T0RFX0xPQ0FUSU9OOworfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChDb2RlTG9jYXRp
b25Gb3JUWVBFRFRFU1RQLCBWZXJpZnkpOworCitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0Vf
UChNeSwgQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCwgaW50KTsKKworI3VuZGVmIFZFUklGWV9D
T0RFX0xPQ0FUSU9OCisKIC8vIFRlc3RzIHNldHRpbmcgdXAgYW5kIHRlYXJpbmcgZG93biBhIHRl
c3QgY2FzZS4KIAogY2xhc3MgU2V0VXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgVGVzdCB7CkBAIC01
MDMwLDYgKzU0NjcsNyBAQCBzdHJ1Y3QgRmxhZ3MgewogICAgICAgICAgICAgcmVwZWF0KDEpLAog
ICAgICAgICAgICAgc2h1ZmZsZShmYWxzZSksCiAgICAgICAgICAgICBzdGFja190cmFjZV9kZXB0
aChrTWF4U3RhY2tUcmFjZURlcHRoKSwKKyAgICAgICAgICAgIHN0cmVhbV9yZXN1bHRfdG8oIiIp
LAogICAgICAgICAgICAgdGhyb3dfb25fZmFpbHVyZShmYWxzZSkge30KIAogICAvLyBGYWN0b3J5
IG1ldGhvZHMuCkBAIC01MTMwLDYgKzU1NjgsMTQgQEAgc3RydWN0IEZsYWdzIHsKICAgICByZXR1
cm4gZmxhZ3M7CiAgIH0KIAorICAvLyBDcmVhdGVzIGEgRmxhZ3Mgc3RydWN0IHdoZXJlIHRoZSBH
VEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pIGZsYWcgaGFzCisgIC8vIHRoZSBnaXZlbiB2YWx1
ZS4KKyAgc3RhdGljIEZsYWdzIFN0cmVhbVJlc3VsdFRvKGNvbnN0IGNoYXIqIHN0cmVhbV9yZXN1
bHRfdG8pIHsKKyAgICBGbGFncyBmbGFnczsKKyAgICBmbGFncy5zdHJlYW1fcmVzdWx0X3RvID0g
c3RyZWFtX3Jlc3VsdF90bzsKKyAgICByZXR1cm4gZmxhZ3M7CisgIH0KKwogICAvLyBDcmVhdGVz
IGEgRmxhZ3Mgc3RydWN0IHdoZXJlIHRoZSBndGVzdF90aHJvd19vbl9mYWlsdXJlIGZsYWcgaGFz
CiAgIC8vIHRoZSBnaXZlbiB2YWx1ZS4KICAgc3RhdGljIEZsYWdzIFRocm93T25GYWlsdXJlKGJv
b2wgdGhyb3dfb25fZmFpbHVyZSkgewpAQCAtNTE1MSw2ICs1NTk3LDcgQEAgc3RydWN0IEZsYWdz
IHsKICAgSW50MzIgcmVwZWF0OwogICBib29sIHNodWZmbGU7CiAgIEludDMyIHN0YWNrX3RyYWNl
X2RlcHRoOworICBjb25zdCBjaGFyKiBzdHJlYW1fcmVzdWx0X3RvOwogICBib29sIHRocm93X29u
X2ZhaWx1cmU7CiB9OwogCkBAIC01MTcxLDYgKzU2MTgsNyBAQCBjbGFzcyBJbml0R29vZ2xlVGVz
dFRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgR1RFU1RfRkxBRyhyZXBlYXQpID0gMTsKICAgICBH
VEVTVF9GTEFHKHNodWZmbGUpID0gZmFsc2U7CiAgICAgR1RFU1RfRkxBRyhzdGFja190cmFjZV9k
ZXB0aCkgPSBrTWF4U3RhY2tUcmFjZURlcHRoOworICAgIEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3Vs
dF90bykgPSAiIjsKICAgICBHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gZmFsc2U7CiAg
IH0KIApAQCAtNTE5OSw4ICs1NjQ3LDEwIEBAIGNsYXNzIEluaXRHb29nbGVUZXN0VGVzdCA6IHB1
YmxpYyBUZXN0IHsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQucmFuZG9tX3NlZWQsIEdURVNUX0ZM
QUcocmFuZG9tX3NlZWQpKTsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQucmVwZWF0LCBHVEVTVF9G
TEFHKHJlcGVhdCkpOwogICAgIEVYUEVDVF9FUShleHBlY3RlZC5zaHVmZmxlLCBHVEVTVF9GTEFH
KHNodWZmbGUpKTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQudGhyb3dfb25fZmFpbHVyZSwgR1RF
U1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSk7CiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkLnN0YWNr
X3RyYWNlX2RlcHRoLCBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSk7CisgICAgRVhQRUNU
X1NUUkVRKGV4cGVjdGVkLnN0cmVhbV9yZXN1bHRfdG8sCisgICAgICAgICAgICAgICAgIEdURVNU
X0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykuY19zdHIoKSk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVk
LnRocm93X29uX2ZhaWx1cmUsIEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkpOwogICB9CiAK
ICAgLy8gUGFyc2VzIGEgY29tbWFuZCBsaW5lIChzcGVjaWZpZWQgYnkgYXJnYzEgYW5kIGFyZ3Yx
KSwgdGhlbgpAQCAtNTIxMywxNiArNTY2MywxNiBAQCBjbGFzcyBJbml0R29vZ2xlVGVzdFRlc3Qg
OiBwdWJsaWMgVGVzdCB7CiAgICAgY29uc3QgYm9vbCBzYXZlZF9oZWxwX2ZsYWcgPSA6OnRlc3Rp
bmc6OmludGVybmFsOjpnX2hlbHBfZmxhZzsKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpnX2hl
bHBfZmxhZyA9IGZhbHNlOwogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNp
ZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCiAgICAgQ2FwdHVyZVN0ZG91dCgpOwotI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXworI2VuZGlmCiAKICAgICAvLyBQ
YXJzZXMgdGhlIGNvbW1hbmQgbGluZS4KICAgICBpbnRlcm5hbDo6UGFyc2VHb29nbGVUZXN0Rmxh
Z3NPbmx5KCZhcmdjMSwgY29uc3RfY2FzdDxDaGFyVHlwZSoqPihhcmd2MSkpOwogCi0jaWYgR1RF
U1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KLSAgICBjb25zdCBTdHJpbmcgY2FwdHVyZWRfc3Rk
b3V0ID0gR2V0Q2FwdHVyZWRTdGRvdXQoKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9S
RURJUkVDVElPTl8KKyNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgY2FwdHVyZWRfc3Rkb3V0ID0gR2V0Q2FwdHVyZWRTdGRvdXQoKTsKKyNlbmRp
ZgogCiAgICAgLy8gVmVyaWZpZXMgdGhlIGZsYWcgdmFsdWVzLgogICAgIENoZWNrRmxhZ3MoZXhw
ZWN0ZWQpOwpAQCAtNTIzNSw3ICs1Njg1LDcgQEAgY2xhc3MgSW5pdEdvb2dsZVRlc3RUZXN0IDog
cHVibGljIFRlc3QgewogICAgIC8vIGhlbHAgbWVzc2FnZSBmb3IgdGhlIGZsYWdzIGl0IHJlY29n
bml6ZXMuCiAgICAgRVhQRUNUX0VRKHNob3VsZF9wcmludF9oZWxwLCA6OnRlc3Rpbmc6OmludGVy
bmFsOjpnX2hlbHBfZmxhZyk7CiAKLSNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXwor
I2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KICAgICBjb25zdCBjaGFyKiBjb25zdCBl
eHBlY3RlZF9oZWxwX2ZyYWdtZW50ID0KICAgICAgICAgIlRoaXMgcHJvZ3JhbSBjb250YWlucyB0
ZXN0cyB3cml0dGVuIHVzaW5nIjsKICAgICBpZiAoc2hvdWxkX3ByaW50X2hlbHApIHsKQEAgLTUy
NDQsMTMgKzU2OTQsMTQgQEAgY2xhc3MgSW5pdEdvb2dsZVRlc3RUZXN0IDogcHVibGljIFRlc3Qg
ewogICAgICAgRVhQRUNUX1BSRURfRk9STUFUMihJc05vdFN1YnN0cmluZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhwZWN0ZWRfaGVscF9mcmFnbWVudCwgY2FwdHVyZWRfc3Rkb3V0KTsK
ICAgICB9Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCisjZW5kaWYg
IC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KIAogICAgIDo6dGVzdGluZzo6aW50ZXJu
YWw6OmdfaGVscF9mbGFnID0gc2F2ZWRfaGVscF9mbGFnOwogICB9CiAKICAgLy8gVGhpcyBtYWNy
byB3cmFwcyBUZXN0UGFyc2luZ0ZsYWdzIHMudC4gdGhlIHVzZXIgZG9lc24ndCBuZWVkCiAgIC8v
IHRvIHNwZWNpZnkgdGhlIGFycmF5IHNpemVzLgorCiAjZGVmaW5lIEdURVNUX1RFU1RfUEFSU0lO
R19GTEFHU18oYXJndjEsIGFyZ3YyLCBleHBlY3RlZCwgc2hvdWxkX3ByaW50X2hlbHApIFwKICAg
VGVzdFBhcnNpbmdGbGFncyhzaXplb2YoYXJndjEpL3NpemVvZigqYXJndjEpIC0gMSwgYXJndjEs
IFwKICAgICAgICAgICAgICAgICAgICBzaXplb2YoYXJndjIpL3NpemVvZigqYXJndjIpIC0gMSwg
YXJndjIsIFwKQEAgLTU4NjEsNiArNjMxMiwyMiBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0
LCBTdGFja1RyYWNlRGVwdGgpIHsKICAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBh
cmd2MiwgRmxhZ3M6OlN0YWNrVHJhY2VEZXB0aCg1KSwgZmFsc2UpOwogfQogCitURVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBTdHJlYW1SZXN1bHRUbykgeworICBjb25zdCBjaGFyKiBhcmd2W10g
PSB7CisgICAgImZvby5leGUiLAorICAgICItLWd0ZXN0X3N0cmVhbV9yZXN1bHRfdG89bG9jYWxo
b3N0OjEyMzQiLAorICAgIE5VTEwKKyAgfTsKKworICBjb25zdCBjaGFyKiBhcmd2MltdID0gewor
ICAgICJmb28uZXhlIiwKKyAgICBOVUxMCisgIH07CisKKyAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZM
QUdTXygKKyAgICAgIGFyZ3YsIGFyZ3YyLCBGbGFnczo6U3RyZWFtUmVzdWx0VG8oImxvY2FsaG9z
dDoxMjM0IiksIGZhbHNlKTsKK30KKwogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X3Rocm93X29u
X2ZhaWx1cmUuCiBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBUaHJvd09uRmFpbHVyZVdpdGhv
dXRWYWx1ZSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CkBAIC01OTM1LDcgKzY0MDIsMTA4
IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFdpZGVTdHJpbmdzKSB7CiAKICAgR1RFU1Rf
VEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgZXhwZWN0ZWRfZmxhZ3MsIGZhbHNlKTsK
IH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lO
RE9XUworCisjaWYgR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXworY2xhc3MgRmxhZ2ZpbGVU
ZXN0IDogcHVibGljIEluaXRHb29nbGVUZXN0VGVzdCB7CisgcHVibGljOgorICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKSB7CisgICAgSW5pdEdvb2dsZVRlc3RUZXN0OjpTZXRVcCgpOworCisgICAgdGVz
dGRhdGFfcGF0aF8uU2V0KGludGVybmFsOjpGaWxlUGF0aCgKKyAgICAgICAgaW50ZXJuYWw6OlRl
bXBEaXIoKSArIGludGVybmFsOjpHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmcoKSAr
CisgICAgICAgICJfZmxhZ2ZpbGVfdGVzdCIpKTsKKyAgICB0ZXN0aW5nOjppbnRlcm5hbDo6cG9z
aXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhfLmNfc3RyKCkpOworICAgIEVYUEVDVF9UUlVFKHRlc3Rk
YXRhX3BhdGhfLkNyZWF0ZUZvbGRlcigpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93
bigpIHsKKyAgICB0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhf
LmNfc3RyKCkpOworICAgIEluaXRHb29nbGVUZXN0VGVzdDo6VGVhckRvd24oKTsKKyAgfQorCisg
IGludGVybmFsOjpGaWxlUGF0aCBDcmVhdGVGbGFnZmlsZShjb25zdCBjaGFyKiBjb250ZW50cykg
eworICAgIGludGVybmFsOjpGaWxlUGF0aCBmaWxlX3BhdGgoaW50ZXJuYWw6OkZpbGVQYXRoOjpH
ZW5lcmF0ZVVuaXF1ZUZpbGVOYW1lKAorICAgICAgICB0ZXN0ZGF0YV9wYXRoXywgaW50ZXJuYWw6
OkZpbGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIpKTsKKyAgICBGSUxFKiBmID0gdGVzdGluZzo6aW50
ZXJuYWw6OnBvc2l4OjpGT3BlbihmaWxlX3BhdGguY19zdHIoKSwgInciKTsKKyAgICBmcHJpbnRm
KGYsICIlcyIsIGNvbnRlbnRzKTsKKyAgICBmY2xvc2UoZik7CisgICAgcmV0dXJuIGZpbGVfcGF0
aDsKKyAgfQorCisgcHJpdmF0ZToKKyAgaW50ZXJuYWw6OkZpbGVQYXRoIHRlc3RkYXRhX3BhdGhf
OworfTsKKworLy8gVGVzdHMgYW4gZW1wdHkgZmxhZ2ZpbGUuCitURVNUX0YoRmxhZ2ZpbGVUZXN0
LCBFbXB0eSkgeworICBpbnRlcm5hbDo6RmlsZVBhdGggZmxhZ2ZpbGVfcGF0aChDcmVhdGVGbGFn
ZmlsZSgiIikpOworICBzdGQ6OnN0cmluZyBmbGFnZmlsZV9mbGFnID0KKyAgICAgIHN0ZDo6c3Ry
aW5nKCItLSIgR1RFU1RfRkxBR19QUkVGSVhfICJmbGFnZmlsZT0iKSArIGZsYWdmaWxlX3BhdGgu
Y19zdHIoKTsKKworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgImZvby5leGUiLAorICAg
IGZsYWdmaWxlX2ZsYWcuY19zdHIoKSwKKyAgICBOVUxMCisgIH07CisKKyAgY29uc3QgY2hhciog
YXJndjJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAorICB9OworCisgIEdURVNUX1RF
U1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzKCksIGZhbHNlKTsKK30KKworLy8g
VGVzdHMgcGFzc2luZyBhIG5vbi1lbXB0eSAtLWd0ZXN0X2ZpbHRlciBmbGFnIHZpYSAtLWd0ZXN0
X2ZsYWdmaWxlLgorVEVTVF9GKEZsYWdmaWxlVGVzdCwgRmlsdGVyTm9uRW1wdHkpIHsKKyAgaW50
ZXJuYWw6OkZpbGVQYXRoIGZsYWdmaWxlX3BhdGgoQ3JlYXRlRmxhZ2ZpbGUoCisgICAgICAiLS0i
ICBHVEVTVF9GTEFHX1BSRUZJWF8gICJmaWx0ZXI9YWJjIikpOworICBzdGQ6OnN0cmluZyBmbGFn
ZmlsZV9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIgR1RFU1RfRkxBR19QUkVGSVhfICJm
bGFnZmlsZT0iKSArIGZsYWdmaWxlX3BhdGguY19zdHIoKTsKKworICBjb25zdCBjaGFyKiBhcmd2
W10gPSB7CisgICAgImZvby5leGUiLAorICAgIGZsYWdmaWxlX2ZsYWcuY19zdHIoKSwKKyAgICBO
VUxMCisgIH07CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisg
ICAgTlVMTAorICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIs
IEZsYWdzOjpGaWx0ZXIoImFiYyIpLCBmYWxzZSk7Cit9CisKKy8vIFRlc3RzIHBhc3Npbmcgc2V2
ZXJhbCBmbGFncyB2aWEgLS1ndGVzdF9mbGFnZmlsZS4KK1RFU1RfRihGbGFnZmlsZVRlc3QsIFNl
dmVyYWxGbGFncykgeworICBpbnRlcm5hbDo6RmlsZVBhdGggZmxhZ2ZpbGVfcGF0aChDcmVhdGVG
bGFnZmlsZSgKKyAgICAgICItLSIgIEdURVNUX0ZMQUdfUFJFRklYXyAgImZpbHRlcj1hYmNcbiIK
KyAgICAgICItLSIgIEdURVNUX0ZMQUdfUFJFRklYXyAgImJyZWFrX29uX2ZhaWx1cmVcbiIKKyAg
ICAgICItLSIgIEdURVNUX0ZMQUdfUFJFRklYXyAgImxpc3RfdGVzdHMiKSk7CisgIHN0ZDo6c3Ry
aW5nIGZsYWdmaWxlX2ZsYWcgPQorICAgICAgc3RkOjpzdHJpbmcoIi0tIiBHVEVTVF9GTEFHX1BS
RUZJWF8gImZsYWdmaWxlPSIpICsgZmxhZ2ZpbGVfcGF0aC5jX3N0cigpOworCisgIGNvbnN0IGNo
YXIqIGFyZ3ZbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgZmxhZ2ZpbGVfZmxhZy5jX3N0cigp
LAorICAgIE5VTEwKKyAgfTsKKworICBjb25zdCBjaGFyKiBhcmd2MltdID0geworICAgICJmb28u
ZXhlIiwKKyAgICBOVUxMCisgIH07CisKKyAgRmxhZ3MgZXhwZWN0ZWRfZmxhZ3M7CisgIGV4cGVj
dGVkX2ZsYWdzLmJyZWFrX29uX2ZhaWx1cmUgPSB0cnVlOworICBleHBlY3RlZF9mbGFncy5maWx0
ZXIgPSAiYWJjIjsKKyAgZXhwZWN0ZWRfZmxhZ3MubGlzdF90ZXN0cyA9IHRydWU7CisKKyAgR1RF
U1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgZXhwZWN0ZWRfZmxhZ3MsIGZhbHNl
KTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXwogCiAvLyBUZXN0
cyBjdXJyZW50X3Rlc3RfaW5mbygpIGluIFVuaXRUZXN0LgogY2xhc3MgQ3VycmVudFRlc3RJbmZv
VGVzdCA6IHB1YmxpYyBUZXN0IHsKQEAgLTYwNDgsNyArNjYxNiw3IEBAIFRFU1QoU3RyZWFtaW5n
QXNzZXJ0aW9uc1Rlc3QsIFVuY29uZGl0aW9uYWwpIHsKIAogI2lmZGVmIF9fQk9STEFORENfXwog
Ly8gU2lsZW5jZXMgd2FybmluZ3M6ICJDb25kaXRpb24gaXMgYWx3YXlzIHRydWUiLCAiVW5yZWFj
aGFibGUgY29kZSIKLSNwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAorIyBwcmFnbWEg
b3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAogI2VuZGlmCiAKIFRFU1QoU3RyZWFtaW5nQXNzZXJ0
aW9uc1Rlc3QsIFRydXRoKSB7CkBAIC02MDcxLDcgKzY2MzksNyBAQCBURVNUKFN0cmVhbWluZ0Fz
c2VydGlvbnNUZXN0LCBUcnV0aDIpIHsKIAogI2lmZGVmIF9fQk9STEFORENfXwogLy8gUmVzdG9y
ZXMgd2FybmluZ3MgYWZ0ZXIgcHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHJlc3Nl
ZCB0aGVtCi0jcHJhZ21hIG9wdGlvbiBwb3AKKyMgcHJhZ21hIG9wdGlvbiBwb3AKICNlbmRpZgog
CiBURVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBJbnRlZ2VyRXF1YWxzKSB7CkBAIC02MjY0
LDE1ICs2ODMyLDQwIEBAIFRFU1QoQ29sb3JlZE91dHB1dFRlc3QsIFVzZXNDb2xvcnNXaGVuVGVy
bVN1cHBvcnRzQ29sb3JzKSB7CiAgIFNldEVudigiVEVSTSIsICJ4dGVybS1jb2xvciIpOyAgLy8g
VEVSTSBzdXBwb3J0cyBjb2xvcnMuCiAgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUp
KTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KIAorICBTZXRFbnYoIlRFUk0iLCAieHRlcm0tMjU2Y29s
b3IiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VD
b2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInNj
cmVlbiIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVz
ZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAi
c2NyZWVuLTI1NmNvbG9yIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RS
VUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgorCisgIFNldEVu
digiVEVSTSIsICJ0bXV4Iik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RS
VUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgorCisgIFNldEVu
digiVEVSTSIsICJ0bXV4LTI1NmNvbG9yIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAg
RVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgor
CisgIFNldEVudigiVEVSTSIsICJyeHZ0LXVuaWNvZGUiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29s
b3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMg
YSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInJ4dnQtdW5pY29kZS0yNTZjb2xvciIpOyAgLy8g
VEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUp
KTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKwogICBTZXRFbnYoIlRFUk0iLCAibGludXgiKTsgIC8v
IFRFUk0gc3VwcG9ydHMgY29sb3JzLgogICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVl
KSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgImN5Z3dpbiIpOyAg
Ly8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRy
dWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwog
fQogCiAvLyBWZXJpZmllcyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcSB3b3JrcyBpbiBhIG5hbWVz
cGFjZSBzY29wZS4KIAotc3RhdGljIGJvb2wgZHVtbXkxID0gU3RhdGljQXNzZXJ0VHlwZUVxPGJv
b2wsIGJvb2w+KCk7Ci1zdGF0aWMgYm9vbCBkdW1teTIgPSBTdGF0aWNBc3NlcnRUeXBlRXE8Y29u
c3QgaW50LCBjb25zdCBpbnQ+KCk7CitzdGF0aWMgYm9vbCBkdW1teTEgR1RFU1RfQVRUUklCVVRF
X1VOVVNFRF8gPSBTdGF0aWNBc3NlcnRUeXBlRXE8Ym9vbCwgYm9vbD4oKTsKK3N0YXRpYyBib29s
IGR1bW15MiBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9CisgICAgU3RhdGljQXNzZXJ0VHlwZUVx
PGNvbnN0IGludCwgY29uc3QgaW50PigpOwogCiAvLyBWZXJpZmllcyB0aGF0IFN0YXRpY0Fzc2Vy
dFR5cGVFcSB3b3JrcyBpbiBhIGNsYXNzLgogCkBAIC02NDY2LDcgKzcwNTksNyBAQCBURVNUKFRl
c3RFdmVudExpc3RlbmVyc1Rlc3QsIEFwcGVuZCkgewogLy8gb3JkZXIuCiBjbGFzcyBTZXF1ZW5j
ZVRlc3RpbmdMaXN0ZW5lciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKICBwdWJs
aWM6Ci0gIFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyKHN0ZDo6dmVjdG9yPFN0cmluZz4qIHZlY3Rv
ciwgY29uc3QgY2hhciogaWQpCisgIFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyKHN0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPiogdmVjdG9yLCBjb25zdCBjaGFyKiBpZCkKICAgICAgIDogdmVjdG9yXyh2
ZWN0b3IpLCBpZF8oaWQpIHt9CiAKICBwcm90ZWN0ZWQ6CkBAIC02NDg5LDIwICs3MDgyLDIwIEBA
IGNsYXNzIFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlz
dGVuZXIgewogICB9CiAKICBwcml2YXRlOgotICBTdHJpbmcgR2V0RXZlbnREZXNjcmlwdGlvbihj
b25zdCBjaGFyKiBtZXRob2QpIHsKKyAgc3RkOjpzdHJpbmcgR2V0RXZlbnREZXNjcmlwdGlvbihj
b25zdCBjaGFyKiBtZXRob2QpIHsKICAgICBNZXNzYWdlIG1lc3NhZ2U7CiAgICAgbWVzc2FnZSA8
PCBpZF8gPDwgIi4iIDw8IG1ldGhvZDsKICAgICByZXR1cm4gbWVzc2FnZS5HZXRTdHJpbmcoKTsK
ICAgfQogCi0gIHN0ZDo6dmVjdG9yPFN0cmluZz4qIHZlY3Rvcl87CisgIHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiogdmVjdG9yXzsKICAgY29uc3QgY2hhciogY29uc3QgaWRfOwogCiAgIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oU2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIpOwogfTsK
IAogVEVTVChFdmVudExpc3RlbmVyVGVzdCwgQXBwZW5kS2VlcHNPcmRlcikgewotICBzdGQ6OnZl
Y3RvcjxTdHJpbmc+IHZlYzsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHZlYzsKICAgVGVz
dEV2ZW50TGlzdGVuZXJzIGxpc3RlbmVyczsKICAgbGlzdGVuZXJzLkFwcGVuZChuZXcgU2VxdWVu
Y2VUZXN0aW5nTGlzdGVuZXIoJnZlYywgIjFzdCIpKTsKICAgbGlzdGVuZXJzLkFwcGVuZChuZXcg
U2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIoJnZlYywgIjJuZCIpKTsKQEAgLTY3MTUsNCArNzMwOCwz
OTkgQEAgR1RFU1RfVEVTVChBbHRlcm5hdGl2ZU5hbWVUZXN0LCBXb3JrcykgeyAgLy8gR1RFU1Rf
VEVTVCBpcyB0aGUgc2FtZSBhcyBURVNULgogICAvLyBHVEVTVF9GQUlMIGlzIHRoZSBzYW1lIGFz
IEZBSUwuCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdURVNUX0ZBSUwoKSA8PCAiQW4gZXhwZWN0
ZWQgZmFpbHVyZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJl
Iik7CisKKyAgLy8gR1RFU1RfQVNTRVJUX1hZIGlzIHRoZSBzYW1lIGFzIEFTU0VSVF9YWS4KKwor
ICBHVEVTVF9BU1NFUlRfRVEoMCwgMCk7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdURVNUX0FT
U0VSVF9FUSgwLCAxKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdU
RVNUX0FTU0VSVF9FUSgxLCAwKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisKKyAgR1RFU1RfQVNTRVJUX05F
KDAsIDEpOworICBHVEVTVF9BU1NFUlRfTkUoMSwgMCk7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJF
KEdURVNUX0FTU0VSVF9ORSgwLCAwKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisKKyAgR1RFU1RfQVNTRVJU
X0xFKDAsIDApOworICBHVEVTVF9BU1NFUlRfTEUoMCwgMSk7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEdURVNUX0FTU0VSVF9MRSgxLCAwKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisKKyAgR1RFU1RfQVNT
RVJUX0xUKDAsIDEpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfTFQoMCwg
MCkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4g
ZXhwZWN0ZWQgZmFpbHVyZSIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRf
TFQoMSwgMCkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAg
ICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworCisgIEdURVNUX0FTU0VSVF9HRSgwLCAwKTsKKyAg
R1RFU1RfQVNTRVJUX0dFKDEsIDApOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NF
UlRfR0UoMCwgMSkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAg
ICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworCisgIEdURVNUX0FTU0VSVF9HVCgxLCAwKTsK
KyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0dUKDAsIDEpIDw8ICJBbiBleHBl
Y3RlZCBmYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1
cmUiKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0dUKDEsIDEpIDw8ICJB
biBleHBlY3RlZCBmYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVk
IGZhaWx1cmUiKTsKK30KKworLy8gVGVzdHMgZm9yIGludGVybmFsIHV0aWxpdGllcyBuZWNlc3Nh
cnkgZm9yIGltcGxlbWVudGF0aW9uIG9mIHRoZSB1bml2ZXJzYWwKKy8vIHByaW50aW5nLgorLy8g
VE9ETyh2bGFkbEBnb29nbGUuY29tKTogRmluZCBhIGJldHRlciBob21lIGZvciB0aGVtLgorCitj
bGFzcyBDb252ZXJzaW9uSGVscGVyQmFzZSB7fTsKK2NsYXNzIENvbnZlcnNpb25IZWxwZXJEZXJp
dmVkIDogcHVibGljIENvbnZlcnNpb25IZWxwZXJCYXNlIHt9OworCisvLyBUZXN0cyB0aGF0IElz
QVByb3RvY29sTWVzc2FnZTxUPjo6dmFsdWUgaXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuCitU
RVNUKElzQVByb3RvY29sTWVzc2FnZVRlc3QsIFZhbHVlSXNDb21waWxlVGltZUNvbnN0YW50KSB7
CisgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhJc0FQcm90b2NvbE1lc3NhZ2U8UHJvdG9jb2xNZXNz
YWdlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF90cnVlKTsKKyAgR1RF
U1RfQ09NUElMRV9BU1NFUlRfKCFJc0FQcm90b2NvbE1lc3NhZ2U8aW50Pjo6dmFsdWUsIGNvbnN0
X2ZhbHNlKTsKK30KKworLy8gVGVzdHMgdGhhdCBJc0FQcm90b2NvbE1lc3NhZ2U8VD46OnZhbHVl
IGlzIHRydWUgd2hlbiBUIGlzCisvLyBwcm90bzI6Ok1lc3NhZ2Ugb3IgYSBzdWItY2xhc3Mgb2Yg
aXQuCitURVNUKElzQVByb3RvY29sTWVzc2FnZVRlc3QsIFZhbHVlSXNUcnVlV2hlblR5cGVJc0FQ
cm90b2NvbE1lc3NhZ2UpIHsKKyAgRVhQRUNUX1RSVUUoSXNBUHJvdG9jb2xNZXNzYWdlPCA6OnBy
b3RvMjo6TWVzc2FnZT46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoSXNBUHJvdG9jb2xNZXNzYWdl
PFByb3RvY29sTWVzc2FnZT46OnZhbHVlKTsKK30KKworLy8gVGVzdHMgdGhhdCBJc0FQcm90b2Nv
bE1lc3NhZ2U8VD46OnZhbHVlIGlzIGZhbHNlIHdoZW4gVCBpcyBuZWl0aGVyCisvLyBQcm90b2Nv
bE1lc3NhZ2Ugbm9yIGEgc3ViLWNsYXNzIG9mIGl0LgorVEVTVChJc0FQcm90b2NvbE1lc3NhZ2VU
ZXN0LCBWYWx1ZUlzRmFsc2VXaGVuVHlwZUlzTm90QVByb3RvY29sTWVzc2FnZSkgeworICBFWFBF
Q1RfRkFMU0UoSXNBUHJvdG9jb2xNZXNzYWdlPGludD46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNF
KElzQVByb3RvY29sTWVzc2FnZTxjb25zdCBDb252ZXJzaW9uSGVscGVyQmFzZT46OnZhbHVlKTsK
K30KKworLy8gVGVzdHMgdGhhdCBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbCBjb21waWxlcyB3aGVu
IHRoZSB0eXBlIGFyZ3VtZW50cyBhcmUKKy8vIGVxdWFsLgorVEVTVChDb21waWxlQXNzZXJ0VHlw
ZXNFcXVhbCwgQ29tcGlsZXNXaGVuVHlwZXNBcmVFcXVhbCkgeworICBDb21waWxlQXNzZXJ0VHlw
ZXNFcXVhbDx2b2lkLCB2b2lkPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQqLCBp
bnQqPigpOworfQorCisvLyBUZXN0cyB0aGF0IFJlbW92ZVJlZmVyZW5jZSBkb2VzIG5vdCBhZmZl
Y3Qgbm9uLXJlZmVyZW5jZSB0eXBlcy4KK1RFU1QoUmVtb3ZlUmVmZXJlbmNlVGVzdCwgRG9lc05v
dEFmZmVjdE5vblJlZmVyZW5jZVR5cGUpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50
LCBSZW1vdmVSZWZlcmVuY2U8aW50Pjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1
YWw8Y29uc3QgY2hhciwgUmVtb3ZlUmVmZXJlbmNlPGNvbnN0IGNoYXI+Ojp0eXBlPigpOworfQor
CisvLyBUZXN0cyB0aGF0IFJlbW92ZVJlZmVyZW5jZSByZW1vdmVzIHJlZmVyZW5jZSBmcm9tIHJl
ZmVyZW5jZSB0eXBlcy4KK1RFU1QoUmVtb3ZlUmVmZXJlbmNlVGVzdCwgUmVtb3Zlc1JlZmVyZW5j
ZSkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQsIFJlbW92ZVJlZmVyZW5jZTxpbnQm
Pjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y29uc3QgY2hhciwgUmVtb3Zl
UmVmZXJlbmNlPGNvbnN0IGNoYXImPjo6dHlwZT4oKTsKK30KKworLy8gVGVzdHMgR1RFU1RfUkVN
T1ZFX1JFRkVSRU5DRV8uCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2
b2lkIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZSgpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1
YWw8VDEsIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfKFQyKT4oKTsKK30KKworVEVTVChSZW1vdmVS
ZWZlcmVuY2VUZXN0LCBNYWNyb1ZlcnNpb24pIHsKKyAgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNl
PGludCwgaW50PigpOworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2U8Y29uc3QgY2hhciwgY29u
c3QgY2hhciY+KCk7Cit9CisKKworLy8gVGVzdHMgdGhhdCBSZW1vdmVDb25zdCBkb2VzIG5vdCBh
ZmZlY3Qgbm9uLWNvbnN0IHR5cGVzLgorVEVTVChSZW1vdmVDb25zdFRlc3QsIERvZXNOb3RBZmZl
Y3ROb25Db25zdFR5cGUpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50LCBSZW1vdmVD
b25zdDxpbnQ+Ojp0eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjaGFyJiwgUmVt
b3ZlQ29uc3Q8Y2hhciY+Ojp0eXBlPigpOworfQorCisvLyBUZXN0cyB0aGF0IFJlbW92ZUNvbnN0
IHJlbW92ZXMgY29uc3QgZnJvbSBjb25zdCB0eXBlcy4KK1RFU1QoUmVtb3ZlQ29uc3RUZXN0LCBS
ZW1vdmVzQ29uc3QpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50LCBSZW1vdmVDb25z
dDxjb25zdCBpbnQ+Ojp0eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjaGFyWzJd
LCBSZW1vdmVDb25zdDxjb25zdCBjaGFyWzJdPjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5
cGVzRXF1YWw8Y2hhclsyXVszXSwgUmVtb3ZlQ29uc3Q8Y29uc3QgY2hhclsyXVszXT46OnR5cGU+
KCk7Cit9CisKKy8vIFRlc3RzIEdURVNUX1JFTU9WRV9DT05TVF8uCisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lkIFRlc3RHVGVzdFJlbW92ZUNvbnN0KCkgeworICBD
b21waWxlQXNzZXJ0VHlwZXNFcXVhbDxUMSwgR1RFU1RfUkVNT1ZFX0NPTlNUXyhUMik+KCk7Cit9
CisKK1RFU1QoUmVtb3ZlQ29uc3RUZXN0LCBNYWNyb1ZlcnNpb24pIHsKKyAgVGVzdEdUZXN0UmVt
b3ZlQ29uc3Q8aW50LCBpbnQ+KCk7CisgIFRlc3RHVGVzdFJlbW92ZUNvbnN0PGRvdWJsZSYsIGRv
dWJsZSY+KCk7CisgIFRlc3RHVGVzdFJlbW92ZUNvbnN0PGNoYXIsIGNvbnN0IGNoYXI+KCk7Cit9
CisKKy8vIFRlc3RzIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXy4KKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgVGVzdEdUZXN0UmVtb3ZlUmVmZXJl
bmNlQW5kQ29uc3QoKSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBHVEVTVF9SRU1P
VkVfUkVGRVJFTkNFX0FORF9DT05TVF8oVDIpPigpOworfQorCitURVNUKFJlbW92ZVJlZmVyZW5j
ZVRvQ29uc3RUZXN0LCBXb3JrcykgeworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25z
dDxpbnQsIGludD4oKTsKKyAgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8ZG91Ymxl
LCBkb3VibGUmPigpOworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxjaGFyLCBj
b25zdCBjaGFyPigpOworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxjaGFyLCBj
b25zdCBjaGFyJj4oKTsKKyAgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8Y29uc3Qg
Y2hhciosIGNvbnN0IGNoYXIqPigpOworfQorCisvLyBUZXN0cyB0aGF0IEFkZFJlZmVyZW5jZSBk
b2VzIG5vdCBhZmZlY3QgcmVmZXJlbmNlIHR5cGVzLgorVEVTVChBZGRSZWZlcmVuY2VUZXN0LCBE
b2VzTm90QWZmZWN0UmVmZXJlbmNlVHlwZSkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxp
bnQmLCBBZGRSZWZlcmVuY2U8aW50Jj46OnR5cGU+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0Vx
dWFsPGNvbnN0IGNoYXImLCBBZGRSZWZlcmVuY2U8Y29uc3QgY2hhciY+Ojp0eXBlPigpOworfQor
CisvLyBUZXN0cyB0aGF0IEFkZFJlZmVyZW5jZSBhZGRzIHJlZmVyZW5jZSB0byBub24tcmVmZXJl
bmNlIHR5cGVzLgorVEVTVChBZGRSZWZlcmVuY2VUZXN0LCBBZGRzUmVmZXJlbmNlKSB7CisgIENv
bXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCYsIEFkZFJlZmVyZW5jZTxpbnQ+Ojp0eXBlPigpOwor
ICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjb25zdCBjaGFyJiwgQWRkUmVmZXJlbmNlPGNvbnN0
IGNoYXI+Ojp0eXBlPigpOworfQorCisvLyBUZXN0cyBHVEVTVF9BRERfUkVGRVJFTkNFXy4KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgVGVzdEdUZXN0QWRkUmVm
ZXJlbmNlKCkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxUMSwgR1RFU1RfQUREX1JFRkVS
RU5DRV8oVDIpPigpOworfQorCitURVNUKEFkZFJlZmVyZW5jZVRlc3QsIE1hY3JvVmVyc2lvbikg
eworICBUZXN0R1Rlc3RBZGRSZWZlcmVuY2U8aW50JiwgaW50PigpOworICBUZXN0R1Rlc3RBZGRS
ZWZlcmVuY2U8Y29uc3QgY2hhciYsIGNvbnN0IGNoYXImPigpOworfQorCisvLyBUZXN0cyBHVEVT
VF9SRUZFUkVOQ0VfVE9fQ09OU1RfLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyPgordm9pZCBUZXN0R1Rlc3RSZWZlcmVuY2VUb0NvbnN0KCkgeworICBDb21waWxlQXNzZXJ0
VHlwZXNFcXVhbDxUMSwgR1RFU1RfUkVGRVJFTkNFX1RPX0NPTlNUXyhUMik+KCk7Cit9CisKK1RF
U1QoR1Rlc3RSZWZlcmVuY2VUb0NvbnN0VGVzdCwgV29ya3MpIHsKKyAgVGVzdEdUZXN0UmVmZXJl
bmNlVG9Db25zdDxjb25zdCBjaGFyJiwgY2hhcj4oKTsKKyAgVGVzdEdUZXN0UmVmZXJlbmNlVG9D
b25zdDxjb25zdCBpbnQmLCBjb25zdCBpbnQ+KCk7CisgIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29u
c3Q8Y29uc3QgZG91YmxlJiwgZG91YmxlPigpOworICBUZXN0R1Rlc3RSZWZlcmVuY2VUb0NvbnN0
PGNvbnN0IHN0ZDo6c3RyaW5nJiwgY29uc3Qgc3RkOjpzdHJpbmcmPigpOworfQorCisvLyBUZXN0
cyB0aGF0IEltcGxpY2l0bHlDb252ZXJ0aWJsZTxUMSwgVDI+Ojp2YWx1ZSBpcyBhIGNvbXBpbGUt
dGltZSBjb25zdGFudC4KK1RFU1QoSW1wbGljaXRseUNvbnZlcnRpYmxlVGVzdCwgVmFsdWVJc0Nv
bXBpbGVUaW1lQ29uc3RhbnQpIHsKKyAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKChJbXBsaWNpdGx5
Q29udmVydGlibGU8aW50LCBpbnQ+Ojp2YWx1ZSksIGNvbnN0X3RydWUpOworICBHVEVTVF9DT01Q
SUxFX0FTU0VSVF8oKCFJbXBsaWNpdGx5Q29udmVydGlibGU8dm9pZCosIGludCo+Ojp2YWx1ZSks
CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9mYWxzZSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgSW1wbGljaXRseUNvbnZlcnRpYmxlPFQxLCBUMj46OnZhbHVlIGlzIHRydWUgd2hlbiBUMSBj
YW4KKy8vIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIFQyLgorVEVTVChJbXBsaWNpdGx5Q29u
dmVydGlibGVUZXN0LCBWYWx1ZUlzVHJ1ZVdoZW5Db252ZXJ0aWJsZSkgeworICBFWFBFQ1RfVFJV
RSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPGludCwgZG91YmxlPjo6dmFsdWUpKTsKKyAgRVhQRUNU
X1RSVUUoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxkb3VibGUsIGludD46OnZhbHVlKSk7CisgIEVY
UEVDVF9UUlVFKChJbXBsaWNpdGx5Q29udmVydGlibGU8aW50Kiwgdm9pZCo+Ojp2YWx1ZSkpOwor
ICBFWFBFQ1RfVFJVRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPGludCosIGNvbnN0IGludCo+Ojp2
YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPENvbnZlcnNpb25I
ZWxwZXJEZXJpdmVkJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBDb252ZXJzaW9uSGVscGVyQmFzZSY+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoSW1wbGlj
aXRseUNvbnZlcnRpYmxlPGNvbnN0IENvbnZlcnNpb25IZWxwZXJCYXNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnNpb25IZWxwZXJCYXNlPjo6dmFsdWUpKTsK
K30KKworLy8gVGVzdHMgdGhhdCBJbXBsaWNpdGx5Q29udmVydGlibGU8VDEsIFQyPjo6dmFsdWUg
aXMgZmFsc2Ugd2hlbiBUMQorLy8gY2Fubm90IGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIFQy
LgorVEVTVChJbXBsaWNpdGx5Q29udmVydGlibGVUZXN0LCBWYWx1ZUlzRmFsc2VXaGVuTm90Q29u
dmVydGlibGUpIHsKKyAgRVhQRUNUX0ZBTFNFKChJbXBsaWNpdGx5Q29udmVydGlibGU8ZG91Ymxl
LCBpbnQqPjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKChJbXBsaWNpdGx5Q29udmVydGlibGU8
dm9pZCosIGludCo+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoKEltcGxpY2l0bHlDb252ZXJ0
aWJsZTxjb25zdCBpbnQqLCBpbnQqPjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKChJbXBsaWNp
dGx5Q29udmVydGlibGU8Q29udmVyc2lvbkhlbHBlckJhc2UmLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uSGVscGVyRGVyaXZlZCY+Ojp2YWx1ZSkpOwor
fQorCisvLyBUZXN0cyBJc0NvbnRhaW5lclRlc3QuCisKK2NsYXNzIE5vbkNvbnRhaW5lciB7fTsK
KworVEVTVChJc0NvbnRhaW5lclRlc3RUZXN0LCBXb3Jrc0Zvck5vbkNvbnRhaW5lcikgeworICBF
WFBFQ1RfRVEoc2l6ZW9mKElzTm90Q29udGFpbmVyKSwgc2l6ZW9mKElzQ29udGFpbmVyVGVzdDxp
bnQ+KDApKSk7CisgIEVYUEVDVF9FUShzaXplb2YoSXNOb3RDb250YWluZXIpLCBzaXplb2YoSXND
b250YWluZXJUZXN0PGNoYXJbNV0+KDApKSk7CisgIEVYUEVDVF9FUShzaXplb2YoSXNOb3RDb250
YWluZXIpLCBzaXplb2YoSXNDb250YWluZXJUZXN0PE5vbkNvbnRhaW5lcj4oMCkpKTsKK30KKwor
VEVTVChJc0NvbnRhaW5lclRlc3RUZXN0LCBXb3Jrc0ZvckNvbnRhaW5lcikgeworICBFWFBFQ1Rf
RVEoc2l6ZW9mKElzQ29udGFpbmVyKSwKKyAgICAgICAgICAgIHNpemVvZihJc0NvbnRhaW5lclRl
c3Q8c3RkOjp2ZWN0b3I8Ym9vbD4gPigwKSkpOworICBFWFBFQ1RfRVEoc2l6ZW9mKElzQ29udGFp
bmVyKSwKKyAgICAgICAgICAgIHNpemVvZihJc0NvbnRhaW5lclRlc3Q8c3RkOjptYXA8aW50LCBk
b3VibGU+ID4oMCkpKTsKK30KKworLy8gVGVzdHMgQXJyYXlFcSgpLgorCitURVNUKEFycmF5RXFU
ZXN0LCBXb3Jrc0ZvckRlZ2VuZXJhdGVkQXJyYXlzKSB7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEo
NSwgNUwpKTsKKyAgRVhQRUNUX0ZBTFNFKEFycmF5RXEoJ2EnLCAwKSk7Cit9CisKK1RFU1QoQXJy
YXlFcVRlc3QsIFdvcmtzRm9yT25lRGltZW5zaW9uYWxBcnJheXMpIHsKKyAgLy8gTm90ZSB0aGF0
IGEgYW5kIGIgYXJlIGRpc3RpbmN0IGJ1dCBjb21wYXRpYmxlIHR5cGVzLgorICBjb25zdCBpbnQg
YVtdID0geyAwLCAxIH07CisgIGxvbmcgYltdID0geyAwLCAxIH07CisgIEVYUEVDVF9UUlVFKEFy
cmF5RXEoYSwgYikpOworICBFWFBFQ1RfVFJVRShBcnJheUVxKGEsIDIsIGIpKTsKKworICBiWzBd
ID0gMjsKKyAgRVhQRUNUX0ZBTFNFKEFycmF5RXEoYSwgYikpOworICBFWFBFQ1RfRkFMU0UoQXJy
YXlFcShhLCAxLCBiKSk7Cit9CisKK1RFU1QoQXJyYXlFcVRlc3QsIFdvcmtzRm9yVHdvRGltZW5z
aW9uYWxBcnJheXMpIHsKKyAgY29uc3QgY2hhciBhW11bM10gPSB7ICJoaSIsICJsbyIgfTsKKyAg
Y29uc3QgY2hhciBiW11bM10gPSB7ICJoaSIsICJsbyIgfTsKKyAgY29uc3QgY2hhciBjW11bM10g
PSB7ICJoaSIsICJsaSIgfTsKKworICBFWFBFQ1RfVFJVRShBcnJheUVxKGEsIGIpKTsKKyAgRVhQ
RUNUX1RSVUUoQXJyYXlFcShhLCAyLCBiKSk7CisKKyAgRVhQRUNUX0ZBTFNFKEFycmF5RXEoYSwg
YykpOworICBFWFBFQ1RfRkFMU0UoQXJyYXlFcShhLCAyLCBjKSk7Cit9CisKKy8vIFRlc3RzIEFy
cmF5QXdhcmVGaW5kKCkuCisKK1RFU1QoQXJyYXlBd2FyZUZpbmRUZXN0LCBXb3Jrc0Zvck9uZURp
bWVuc2lvbmFsQXJyYXkpIHsKKyAgY29uc3QgY2hhciBhW10gPSAiaGVsbG8iOworICBFWFBFQ1Rf
RVEoYSArIDQsIEFycmF5QXdhcmVGaW5kKGEsIGEgKyA1LCAnbycpKTsKKyAgRVhQRUNUX0VRKGEg
KyA1LCBBcnJheUF3YXJlRmluZChhLCBhICsgNSwgJ3gnKSk7Cit9CisKK1RFU1QoQXJyYXlBd2Fy
ZUZpbmRUZXN0LCBXb3Jrc0ZvclR3b0RpbWVuc2lvbmFsQXJyYXkpIHsKKyAgaW50IGFbXVsyXSA9
IHsgeyAwLCAxIH0sIHsgMiwgMyB9LCB7IDQsIDUgfSB9OworICBjb25zdCBpbnQgYlsyXSA9IHsg
MiwgMyB9OworICBFWFBFQ1RfRVEoYSArIDEsIEFycmF5QXdhcmVGaW5kKGEsIGEgKyAzLCBiKSk7
CisKKyAgY29uc3QgaW50IGNbMl0gPSB7IDYsIDcgfTsKKyAgRVhQRUNUX0VRKGEgKyAzLCBBcnJh
eUF3YXJlRmluZChhLCBhICsgMywgYykpOworfQorCisvLyBUZXN0cyBDb3B5QXJyYXkoKS4KKwor
VEVTVChDb3B5QXJyYXlUZXN0LCBXb3Jrc0ZvckRlZ2VuZXJhdGVkQXJyYXlzKSB7CisgIGludCBu
ID0gMDsKKyAgQ29weUFycmF5KCdhJywgJm4pOworICBFWFBFQ1RfRVEoJ2EnLCBuKTsKK30KKwor
VEVTVChDb3B5QXJyYXlUZXN0LCBXb3Jrc0Zvck9uZURpbWVuc2lvbmFsQXJyYXlzKSB7CisgIGNv
bnN0IGNoYXIgYVszXSA9ICJoaSI7CisgIGludCBiWzNdOworI2lmbmRlZiBfX0JPUkxBTkRDX18g
IC8vIEMrK0J1aWxkZXIgY2Fubm90IGNvbXBpbGUgc29tZSBhcnJheSBzaXplIGRlZHVjdGlvbnMu
CisgIENvcHlBcnJheShhLCAmYik7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYikpOworI2Vu
ZGlmCisKKyAgaW50IGNbM107CisgIENvcHlBcnJheShhLCAzLCBjKTsKKyAgRVhQRUNUX1RSVUUo
QXJyYXlFcShhLCBjKSk7Cit9CisKK1RFU1QoQ29weUFycmF5VGVzdCwgV29ya3NGb3JUd29EaW1l
bnNpb25hbEFycmF5cykgeworICBjb25zdCBpbnQgYVsyXVszXSA9IHsgeyAwLCAxLCAyIH0sIHsg
MywgNCwgNSB9IH07CisgIGludCBiWzJdWzNdOworI2lmbmRlZiBfX0JPUkxBTkRDX18gIC8vIEMr
K0J1aWxkZXIgY2Fubm90IGNvbXBpbGUgc29tZSBhcnJheSBzaXplIGRlZHVjdGlvbnMuCisgIENv
cHlBcnJheShhLCAmYik7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYikpOworI2VuZGlmCisK
KyAgaW50IGNbMl1bM107CisgIENvcHlBcnJheShhLCAyLCBjKTsKKyAgRVhQRUNUX1RSVUUoQXJy
YXlFcShhLCBjKSk7Cit9CisKKy8vIFRlc3RzIE5hdGl2ZUFycmF5LgorCitURVNUKE5hdGl2ZUFy
cmF5VGVzdCwgQ29uc3RydWN0b3JGcm9tQXJyYXlXb3JrcykgeworICBjb25zdCBpbnQgYVszXSA9
IHsgMCwgMSwgMiB9OworICBOYXRpdmVBcnJheTxpbnQ+IG5hKGEsIDMsIFJlbGF0aW9uVG9Tb3Vy
Y2VSZWZlcmVuY2UoKSk7CisgIEVYUEVDVF9FUSgzVSwgbmEuc2l6ZSgpKTsKKyAgRVhQRUNUX0VR
KGEsIG5hLmJlZ2luKCkpOworfQorCitURVNUKE5hdGl2ZUFycmF5VGVzdCwgQ3JlYXRlc0FuZERl
bGV0ZXNDb3B5T2ZBcnJheVdoZW5Bc2tlZFRvKSB7CisgIHR5cGVkZWYgaW50IEFycmF5WzJdOwor
ICBBcnJheSogYSA9IG5ldyBBcnJheVsxXTsKKyAgKCphKVswXSA9IDA7CisgICgqYSlbMV0gPSAx
OworICBOYXRpdmVBcnJheTxpbnQ+IG5hKCphLCAyLCBSZWxhdGlvblRvU291cmNlQ29weSgpKTsK
KyAgRVhQRUNUX05FKCphLCBuYS5iZWdpbigpKTsKKyAgZGVsZXRlW10gYTsKKyAgRVhQRUNUX0VR
KDAsIG5hLmJlZ2luKClbMF0pOworICBFWFBFQ1RfRVEoMSwgbmEuYmVnaW4oKVsxXSk7CisKKyAg
Ly8gV2UgcmVseSBvbiB0aGUgaGVhcCBjaGVja2VyIHRvIHZlcmlmeSB0aGF0IG5hIGRlbGV0ZXMg
dGhlIGNvcHkgb2YKKyAgLy8gYXJyYXkuCit9CisKK1RFU1QoTmF0aXZlQXJyYXlUZXN0LCBUeXBl
TWVtYmVyc0FyZUNvcnJlY3QpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGNoYXIsIE5hdGl2ZUFy
cmF5PGNoYXI+Ojp2YWx1ZV90eXBlPigpOworICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50WzJdLCBO
YXRpdmVBcnJheTxpbnRbMl0+Ojp2YWx1ZV90eXBlPigpOworCisgIFN0YXRpY0Fzc2VydFR5cGVF
cTxjb25zdCBjaGFyKiwgTmF0aXZlQXJyYXk8Y2hhcj46OmNvbnN0X2l0ZXJhdG9yPigpOworICBT
dGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgYm9vbCgqKVsyXSwgTmF0aXZlQXJyYXk8Ym9vbFsyXT46
OmNvbnN0X2l0ZXJhdG9yPigpOworfQorCitURVNUKE5hdGl2ZUFycmF5VGVzdCwgTWV0aG9kc1dv
cmspIHsKKyAgY29uc3QgaW50IGFbM10gPSB7IDAsIDEsIDIgfTsKKyAgTmF0aXZlQXJyYXk8aW50
PiBuYShhLCAzLCBSZWxhdGlvblRvU291cmNlQ29weSgpKTsKKyAgQVNTRVJUX0VRKDNVLCBuYS5z
aXplKCkpOworICBFWFBFQ1RfRVEoMywgbmEuZW5kKCkgLSBuYS5iZWdpbigpKTsKKworICBOYXRp
dmVBcnJheTxpbnQ+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG5hLmJlZ2luKCk7CisgIEVYUEVDVF9F
USgwLCAqaXQpOworICArK2l0OworICBFWFBFQ1RfRVEoMSwgKml0KTsKKyAgaXQrKzsKKyAgRVhQ
RUNUX0VRKDIsICppdCk7CisgICsraXQ7CisgIEVYUEVDVF9FUShuYS5lbmQoKSwgaXQpOworCisg
IEVYUEVDVF9UUlVFKG5hID09IG5hKTsKKworICBOYXRpdmVBcnJheTxpbnQ+IG5hMihhLCAzLCBS
ZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOworICBFWFBFQ1RfVFJVRShuYSA9PSBuYTIpOwor
CisgIGNvbnN0IGludCBiMVszXSA9IHsgMCwgMSwgMSB9OworICBjb25zdCBpbnQgYjJbNF0gPSB7
IDAsIDEsIDIsIDMgfTsKKyAgRVhQRUNUX0ZBTFNFKG5hID09IE5hdGl2ZUFycmF5PGludD4oYjEs
IDMsIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSkpOworICBFWFBFQ1RfRkFMU0UobmEgPT0g
TmF0aXZlQXJyYXk8aW50PihiMiwgNCwgUmVsYXRpb25Ub1NvdXJjZUNvcHkoKSkpOworfQorCitU
RVNUKE5hdGl2ZUFycmF5VGVzdCwgV29ya3NGb3JUd29EaW1lbnNpb25hbEFycmF5KSB7CisgIGNv
bnN0IGNoYXIgYVsyXVszXSA9IHsgImhpIiwgImxvIiB9OworICBOYXRpdmVBcnJheTxjaGFyWzNd
PiBuYShhLCAyLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOworICBBU1NFUlRfRVEoMlUs
IG5hLnNpemUoKSk7CisgIEVYUEVDVF9FUShhLCBuYS5iZWdpbigpKTsKK30KKworLy8gVGVzdHMg
U2tpcFByZWZpeCgpLgorCitURVNUKFNraXBQcmVmaXhUZXN0LCBTa2lwc1doZW5QcmVmaXhNYXRj
aGVzKSB7CisgIGNvbnN0IGNoYXIqIGNvbnN0IHN0ciA9ICJoZWxsbyI7CisKKyAgY29uc3QgY2hh
ciogcCA9IHN0cjsKKyAgRVhQRUNUX1RSVUUoU2tpcFByZWZpeCgiIiwgJnApKTsKKyAgRVhQRUNU
X0VRKHN0ciwgcCk7CisKKyAgcCA9IHN0cjsKKyAgRVhQRUNUX1RSVUUoU2tpcFByZWZpeCgiaGVs
bCIsICZwKSk7CisgIEVYUEVDVF9FUShzdHIgKyA0LCBwKTsKIH0KKworVEVTVChTa2lwUHJlZml4
VGVzdCwgRG9lc05vdFNraXBXaGVuUHJlZml4RG9lc05vdE1hdGNoKSB7CisgIGNvbnN0IGNoYXIq
IGNvbnN0IHN0ciA9ICJ3b3JsZCI7CisKKyAgY29uc3QgY2hhciogcCA9IHN0cjsKKyAgRVhQRUNU
X0ZBTFNFKFNraXBQcmVmaXgoIlciLCAmcCkpOworICBFWFBFQ1RfRVEoc3RyLCBwKTsKKworICBw
ID0gc3RyOworICBFWFBFQ1RfRkFMU0UoU2tpcFByZWZpeCgid29ybGQhIiwgJnApKTsKKyAgRVhQ
RUNUX0VRKHN0ciwgcCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MKaW5kZXggNjY0YmFhZDJhYjg3M2Jh
Mzg4MTkzYTY1ZDJiNzlmZDgzZGIyZTc3NS4uNTMxY2VkNDlkNDEwODc2MjlkZTkyNTQ0ZjA1OWNi
ZGVhMjcwYjViMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MKQEAgLTMyLDcgKzMyLDcgQEAKIC8vIGd0ZXN0
X3htbF9vdXRmaWxlMV90ZXN0XyB3cml0ZXMgc29tZSB4bWwgdmlhIFRlc3RQcm9wZXJ0eSB1c2Vk
IGJ5CiAvLyBndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiBjbGFzcyBQcm9wZXJ0eU9uZSA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMl90ZXN0Xy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfLmNjCmluZGV4IDM0
MTFhM2QzOGI4NjEwNGM2YTYwYzYwZDExMzFjYjY2YWE1NGMxOTIuLjdiNDAwYjI3NjA1N2NmNjI0
YjRkZWU2NDVkZTMzYTNjNDlmMGVlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfLmNjCkBAIC0zMiw3ICszMiw3
IEBACiAvLyBndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8gd3JpdGVzIHNvbWUgeG1sIHZpYSBUZXN0
UHJvcGVydHkgdXNlZCBieQogLy8gZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkKIAotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogY2xhc3MgUHJv
cGVydHlUd28gOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgcHJvdGVjdGVkOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5w
eSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3Qu
cHkKaW5kZXggMGZlOTQ3ZjA4NGM4ZjU2ZjRhZGY1ZDBjOWZhMDI2Y2UyOTk3NWQyYy4uNTI0ZTQz
N2U2YzE3Njc4YmQyYjZkMjhhZDJhNDc5OTgxMDI1OTJjMiAxMDA3NTUKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weQorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5CkBAIC00
NSw3ICs0NSw3IEBACiBHVEVTVF9PVVRQVVRfMl9URVNUID0gImd0ZXN0X3htbF9vdXRmaWxlMl90
ZXN0XyIKIAogRVhQRUNURURfWE1MXzEgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0i
MCIgZXJyb3JzPSIwIiB0aW1lPSIqIiBuYW1lPSJBbGxUZXN0cyI+Cis8dGVzdHN1aXRlcyB0ZXN0
cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiIHRpbWVz
dGFtcD0iKiIgbmFtZT0iQWxsVGVzdHMiPgogICA8dGVzdHN1aXRlIG5hbWU9IlByb3BlcnR5T25l
IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9Iioi
PgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJUZXN0U29tZVByb3BlcnRpZXMiIHN0YXR1cz0icnVuIiB0
aW1lPSIqIiBjbGFzc25hbWU9IlByb3BlcnR5T25lIiBTZXRVcFByb3A9IjEiIFRlc3RTb21lUHJv
cGVydHk9IjEiIFRlYXJEb3duUHJvcD0iMSIgLz4KICAgPC90ZXN0c3VpdGU+CkBAIC01Myw3ICs1
Myw3IEBACiAiIiIKIAogRVhQRUNURURfWE1MXzIgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNh
YmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiBuYW1lPSJBbGxUZXN0cyI+Cis8dGVzdHN1aXRl
cyB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9Iioi
IHRpbWVzdGFtcD0iKiIgbmFtZT0iQWxsVGVzdHMiPgogICA8dGVzdHN1aXRlIG5hbWU9IlByb3Bl
cnR5VHdvIiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRp
bWU9IioiPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJUZXN0U29tZVByb3BlcnRpZXMiIHN0YXR1cz0i
cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlByb3BlcnR5VHdvIiBTZXRVcFByb3A9IjIiIFRlc3RT
b21lUHJvcGVydHk9IjIiIFRlYXJEb3duUHJvcD0iMiIgLz4KICAgPC90ZXN0c3VpdGU+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5p
dHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRf
dW5pdHRlc3QucHkKaW5kZXggNmQ0NDkyOWNhY2EwM2VjNmZhZTQ0NzFlZDFiYTFkNDE2YTVkZmNl
MC4uYmNkNTk3NTk5MWQ3NDM2NzI5Y2Q4NmU2YzgyZDIzYzhmMzU1YThlYiAxMDA3NTUKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0LnB5
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0
dGVzdC5weQpAQCAtMzMsOCArMzMsMTAgQEAKIAogX19hdXRob3JfXyA9ICdlZWZhY21AZ21haWwu
Y29tIChTZWFuIE1jYWZlZSknCiAKK2ltcG9ydCBkYXRldGltZQogaW1wb3J0IGVycm5vCiBpbXBv
cnQgb3MKK2ltcG9ydCByZQogaW1wb3J0IHN5cwogZnJvbSB4bWwuZG9tIGltcG9ydCBtaW5pZG9t
LCBOb2RlCiAKQEAgLTQyLDYgKzQ0LDggQEAKIGltcG9ydCBndGVzdF94bWxfdGVzdF91dGlscwog
CiAKK0dURVNUX0ZJTFRFUl9GTEFHID0gJy0tZ3Rlc3RfZmlsdGVyJworR1RFU1RfTElTVF9URVNU
U19GTEFHID0gJy0tZ3Rlc3RfbGlzdF90ZXN0cycKIEdURVNUX09VVFBVVF9GTEFHICAgICAgICAg
PSAiLS1ndGVzdF9vdXRwdXQiCiBHVEVTVF9ERUZBVUxUX09VVFBVVF9GSUxFID0gInRlc3RfZGV0
YWlsLnhtbCIKIEdURVNUX1BST0dSQU1fTkFNRSA9ICJndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0
XyIKQEAgLTQ5LDQ0ICs1Myw0NCBAQAogU1VQUE9SVFNfU1RBQ0tfVFJBQ0VTID0gRmFsc2UKIAog
aWYgU1VQUE9SVFNfU1RBQ0tfVFJBQ0VTOgotICBTVEFDS19UUkFDRV9URU1QTEFURSA9ICJcblN0
YWNrIHRyYWNlOlxuKiIKKyAgU1RBQ0tfVFJBQ0VfVEVNUExBVEUgPSAnXG5TdGFjayB0cmFjZTpc
bionCiBlbHNlOgotICBTVEFDS19UUkFDRV9URU1QTEFURSA9ICIiCisgIFNUQUNLX1RSQUNFX1RF
TVBMQVRFID0gJycKIAogRVhQRUNURURfTk9OX0VNUFRZX1hNTCA9ICIiIjw/eG1sIHZlcnNpb249
IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08dGVzdHN1aXRlcyB0ZXN0cz0iMTUiIGZhaWx1cmVz
PSI0IiBkaXNhYmxlZD0iMiIgZXJyb3JzPSIwIiB0aW1lPSIqIiBuYW1lPSJBbGxUZXN0cyI+Cis8
dGVzdHN1aXRlcyB0ZXN0cz0iMjMiIGZhaWx1cmVzPSI0IiBkaXNhYmxlZD0iMiIgZXJyb3JzPSIw
IiB0aW1lPSIqIiB0aW1lc3RhbXA9IioiIG5hbWU9IkFsbFRlc3RzIiBhZF9ob2NfcHJvcGVydHk9
IjQyIj4KICAgPHRlc3RzdWl0ZSBuYW1lPSJTdWNjZXNzZnVsVGVzdCIgdGVzdHM9IjEiIGZhaWx1
cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAgICA8dGVzdGNhc2Ug
bmFtZT0iU3VjY2VlZHMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlN1Y2Nlc3Nm
dWxUZXN0Ii8+CiAgIDwvdGVzdHN1aXRlPgogICA8dGVzdHN1aXRlIG5hbWU9IkZhaWxlZFRlc3Qi
IHRlc3RzPSIxIiBmYWlsdXJlcz0iMSIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+
CiAgICAgPHRlc3RjYXNlIG5hbWU9IkZhaWxzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3Nu
YW1lPSJGYWlsZWRUZXN0Ij4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IlZhbHVlIG9mOiAyJiN4
MEE7RXhwZWN0ZWQ6IDEiIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVz
dF8uY2M6KgotVmFsdWUgb2Y6IDIKLUV4cGVjdGVkOiAxJShzdGFjaylzXV0+PC9mYWlsdXJlPgor
ICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYj
eDBBOyAgICAgIEV4cGVjdGVkOiAxJiN4MEE7VG8gYmUgZXF1YWwgdG86IDIiIHR5cGU9IiI+PCFb
Q0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgorICAgICAgRXhwZWN0ZWQ6IDEK
K1RvIGJlIGVxdWFsIHRvOiAyJShzdGFjaylzXV0+PC9mYWlsdXJlPgogICAgIDwvdGVzdGNhc2U+
CiAgIDwvdGVzdHN1aXRlPgogICA8dGVzdHN1aXRlIG5hbWU9Ik1peGVkUmVzdWx0VGVzdCIgdGVz
dHM9IjMiIGZhaWx1cmVzPSIxIiBkaXNhYmxlZD0iMSIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAg
ICA8dGVzdGNhc2UgbmFtZT0iU3VjY2VlZHMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25h
bWU9Ik1peGVkUmVzdWx0VGVzdCIvPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJGYWlscyIgc3RhdHVz
PSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTWl4ZWRSZXN1bHRUZXN0Ij4KLSAgICAgIDxmYWls
dXJlIG1lc3NhZ2U9IlZhbHVlIG9mOiAyJiN4MEE7RXhwZWN0ZWQ6IDEiIHR5cGU9IiI+PCFbQ0RB
VEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgotVmFsdWUgb2Y6IDIKLUV4cGVjdGVk
OiAxJShzdGFjaylzXV0+PC9mYWlsdXJlPgotICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUg
b2Y6IDMmI3gwQTtFeHBlY3RlZDogMiIgdHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0
X3VuaXR0ZXN0Xy5jYzoqCi1WYWx1ZSBvZjogMwotRXhwZWN0ZWQ6IDIlKHN0YWNrKXNdXT48L2Zh
aWx1cmU+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0
Xy5jYzoqJiN4MEE7ICAgICAgRXhwZWN0ZWQ6IDEmI3gwQTtUbyBiZSBlcXVhbCB0bzogMiIgdHlw
ZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCisgICAgICBFeHBl
Y3RlZDogMQorVG8gYmUgZXF1YWwgdG86IDIlKHN0YWNrKXNdXT48L2ZhaWx1cmU+CisgICAgICA8
ZmFpbHVyZSBtZXNzYWdlPSJndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqJiN4MEE7ICAg
ICAgRXhwZWN0ZWQ6IDImI3gwQTtUbyBiZSBlcXVhbCB0bzogMyIgdHlwZT0iIj48IVtDREFUQVtn
dGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCisgICAgICBFeHBlY3RlZDogMgorVG8gYmUg
ZXF1YWwgdG86IDMlKHN0YWNrKXNdXT48L2ZhaWx1cmU+CiAgICAgPC90ZXN0Y2FzZT4KICAgICA8
dGVzdGNhc2UgbmFtZT0iRElTQUJMRURfdGVzdCIgc3RhdHVzPSJub3RydW4iIHRpbWU9IioiIGNs
YXNzbmFtZT0iTWl4ZWRSZXN1bHRUZXN0Ii8+CiAgIDwvdGVzdHN1aXRlPgogICA8dGVzdHN1aXRl
IG5hbWU9IlhtbFF1b3RpbmdUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjEiIGRpc2FibGVkPSIw
IiBlcnJvcnM9IjAiIHRpbWU9IioiPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJPdXRwdXRzQ0RhdGEi
IHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlhtbFF1b3RpbmdUZXN0Ij4KLSAgICAg
IDxmYWlsdXJlIG1lc3NhZ2U9IkZhaWxlZCYjeDBBO1hNTCBvdXRwdXQ6ICZsdDs/eG1sIGVuY29k
aW5nPSZxdW90O3V0Zi04JnF1b3Q7Jmd0OyZsdDt0b3AmZ3Q7Jmx0OyFbQ0RBVEFbY2RhdGEgdGV4
dF1dJmd0OyZsdDsvdG9wJmd0OyIgdHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3Vu
aXR0ZXN0Xy5jYzoqCisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJndGVzdF94bWxfb3V0cHV0X3Vu
aXR0ZXN0Xy5jYzoqJiN4MEE7RmFpbGVkJiN4MEE7WE1MIG91dHB1dDogJmx0Oz94bWwgZW5jb2Rp
bmc9JnF1b3Q7dXRmLTgmcXVvdDsmZ3Q7Jmx0O3RvcCZndDsmbHQ7IVtDREFUQVtjZGF0YSB0ZXh0
XV0mZ3Q7Jmx0Oy90b3AmZ3Q7IiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5p
dHRlc3RfLmNjOioKIEZhaWxlZAogWE1MIG91dHB1dDogPD94bWwgZW5jb2Rpbmc9InV0Zi04Ij48
dG9wPjwhW0NEQVRBW2NkYXRhIHRleHRdXT5dXSZndDs8IVtDREFUQVs8L3RvcD4lKHN0YWNrKXNd
XT48L2ZhaWx1cmU+CiAgICAgPC90ZXN0Y2FzZT4KICAgPC90ZXN0c3VpdGU+CiAgIDx0ZXN0c3Vp
dGUgbmFtZT0iSW52YWxpZENoYXJhY3RlcnNUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjEiIGRp
c2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJJbnZh
bGlkQ2hhcmFjdGVyc0luTWVzc2FnZSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0i
SW52YWxpZENoYXJhY3RlcnNUZXN0Ij4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IkZhaWxlZCYj
eDBBO0ludmFsaWQgY2hhcmFjdGVycyBpbiBicmFja2V0cyBbXSIgdHlwZT0iIj48IVtDREFUQVtn
dGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJn
dGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqJiN4MEE7RmFpbGVkJiN4MEE7SW52YWxpZCBj
aGFyYWN0ZXJzIGluIGJyYWNrZXRzIFtdIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3RfLmNjOioKIEZhaWxlZAogSW52YWxpZCBjaGFyYWN0ZXJzIGluIGJyYWNrZXRz
IFtdJShzdGFjaylzXV0+PC9mYWlsdXJlPgogICAgIDwvdGVzdGNhc2U+CkBAIC05NCw3ICs5OCw3
IEBACiAgIDx0ZXN0c3VpdGUgbmFtZT0iRGlzYWJsZWRUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9
IjAiIGRpc2FibGVkPSIxIiBlcnJvcnM9IjAiIHRpbWU9IioiPgogICAgIDx0ZXN0Y2FzZSBuYW1l
PSJESVNBQkxFRF90ZXN0X25vdF9ydW4iIHN0YXR1cz0ibm90cnVuIiB0aW1lPSIqIiBjbGFzc25h
bWU9IkRpc2FibGVkVGVzdCIvPgogICA8L3Rlc3RzdWl0ZT4KLSAgPHRlc3RzdWl0ZSBuYW1lPSJQ
cm9wZXJ0eVJlY29yZGluZ1Rlc3QiIHRlc3RzPSI0IiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAi
IGVycm9ycz0iMCIgdGltZT0iKiI+CisgIDx0ZXN0c3VpdGUgbmFtZT0iUHJvcGVydHlSZWNvcmRp
bmdUZXN0IiB0ZXN0cz0iNCIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRp
bWU9IioiIFNldFVwVGVzdENhc2U9InllcyIgVGVhckRvd25UZXN0Q2FzZT0iYXllIj4KICAgICA8
dGVzdGNhc2UgbmFtZT0iT25lUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25h
bWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCIga2V5XzE9IjEiLz4KICAgICA8dGVzdGNhc2UgbmFt
ZT0iSW50VmFsdWVkUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlBy
b3BlcnR5UmVjb3JkaW5nVGVzdCIga2V5X2ludD0iMSIvPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJU
aHJlZVByb3BlcnRpZXMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlByb3BlcnR5
UmVjb3JkaW5nVGVzdCIga2V5XzE9IjEiIGtleV8yPSIyIiBrZXlfMz0iMyIvPgpAQCAtMTA1LDM0
ICsxMDksOTQgQEAKICAgICAgPHRlc3RjYXNlIG5hbWU9IkV4dGVybmFsVXRpbGl0eVRoYXRDYWxs
c1JlY29yZEludFZhbHVlZFByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1l
PSJOb0ZpeHR1cmVUZXN0IiBrZXlfZm9yX3V0aWxpdHlfaW50PSIxIi8+CiAgICAgIDx0ZXN0Y2Fz
ZSBuYW1lPSJFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRTdHJpbmdWYWx1ZWRQcm9wZXJ0
eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTm9GaXh0dXJlVGVzdCIga2V5X2Zv
cl91dGlsaXR5X3N0cmluZz0iMSIvPgogICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1l
PSJTaW5nbGUvVmFsdWVQYXJhbVRlc3QiIHRlc3RzPSI0IiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9
IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNlIG5hbWU9Ikhhc1ZhbHVlUGFy
YW1BdHRyaWJ1dGUvMCIgdmFsdWVfcGFyYW09IjMzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xh
c3NuYW1lPSJTaW5nbGUvVmFsdWVQYXJhbVRlc3QiIC8+CisgICAgPHRlc3RjYXNlIG5hbWU9Ikhh
c1ZhbHVlUGFyYW1BdHRyaWJ1dGUvMSIgdmFsdWVfcGFyYW09IjQyIiBzdGF0dXM9InJ1biIgdGlt
ZT0iKiIgY2xhc3NuYW1lPSJTaW5nbGUvVmFsdWVQYXJhbVRlc3QiIC8+CisgICAgPHRlc3RjYXNl
IG5hbWU9IkFub3RoZXJUZXN0VGhhdEhhc1ZhbHVlUGFyYW1BdHRyaWJ1dGUvMCIgdmFsdWVfcGFy
YW09IjMzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJTaW5nbGUvVmFsdWVQYXJh
bVRlc3QiIC8+CisgICAgPHRlc3RjYXNlIG5hbWU9IkFub3RoZXJUZXN0VGhhdEhhc1ZhbHVlUGFy
YW1BdHRyaWJ1dGUvMSIgdmFsdWVfcGFyYW09IjQyIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xh
c3NuYW1lPSJTaW5nbGUvVmFsdWVQYXJhbVRlc3QiIC8+CisgIDwvdGVzdHN1aXRlPgorICA8dGVz
dHN1aXRlIG5hbWU9IlR5cGVkVGVzdC8wIiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVk
PSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNUeXBlUGFy
YW1BdHRyaWJ1dGUiIHR5cGVfcGFyYW09IioiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25h
bWU9IlR5cGVkVGVzdC8wIiAvPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJU
eXBlZFRlc3QvMSIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIw
IiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iSGFzVHlwZVBhcmFtQXR0cmlidXRlIiB0
eXBlX3BhcmFtPSIqIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJUeXBlZFRlc3Qv
MSIgLz4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iU2luZ2xlL1R5cGVQYXJh
bWV0ZXJpemVkVGVzdENhc2UvMCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIg
ZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iSGFzVHlwZVBhcmFtQXR0
cmlidXRlIiB0eXBlX3BhcmFtPSIqIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJT
aW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8wIiAvPgorICA8L3Rlc3RzdWl0ZT4KKyAg
PHRlc3RzdWl0ZSBuYW1lPSJTaW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8xIiB0ZXN0
cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgorICAg
IDx0ZXN0Y2FzZSBuYW1lPSJIYXNUeXBlUGFyYW1BdHRyaWJ1dGUiIHR5cGVfcGFyYW09IioiIHN0
YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlNpbmdsZS9UeXBlUGFyYW1ldGVyaXplZFRl
c3RDYXNlLzEiIC8+CisgIDwvdGVzdHN1aXRlPgogPC90ZXN0c3VpdGVzPiIiIiAlIHsnc3RhY2sn
OiBTVEFDS19UUkFDRV9URU1QTEFURX0KIAorRVhQRUNURURfRklMVEVSRURfVEVTVF9YTUwgPSAi
IiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHRlc3RzdWl0ZXMgdGVz
dHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIgorICAg
ICAgICAgICAgdGltZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0cyIgYWRfaG9jX3Byb3BlcnR5PSI0
MiI+CisgIDx0ZXN0c3VpdGUgbmFtZT0iU3VjY2Vzc2Z1bFRlc3QiIHRlc3RzPSIxIiBmYWlsdXJl
cz0iMCIgZGlzYWJsZWQ9IjAiCisgICAgICAgICAgICAgZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAg
ICA8dGVzdGNhc2UgbmFtZT0iU3VjY2VlZHMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25h
bWU9IlN1Y2Nlc3NmdWxUZXN0Ii8+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPiIiIgog
CiBFWFBFQ1RFRF9FTVBUWV9YTUwgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJV
VEYtOCI/PgotPHRlc3RzdWl0ZXMgdGVzdHM9IjAiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIg
ZXJyb3JzPSIwIiB0aW1lPSIqIiBuYW1lPSJBbGxUZXN0cyI+Cis8dGVzdHN1aXRlcyB0ZXN0cz0i
MCIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiCisgICAgICAg
ICAgICB0aW1lc3RhbXA9IioiIG5hbWU9IkFsbFRlc3RzIj4KIDwvdGVzdHN1aXRlcz4iIiIKIAor
R1RFU1RfUFJPR1JBTV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBh
dGgoR1RFU1RfUFJPR1JBTV9OQU1FKQorCitTVVBQT1JUU19UWVBFRF9URVNUUyA9ICdUeXBlZFRl
c3QnIGluIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKKyAgICBbR1RFU1RfUFJPR1JBTV9Q
QVRILCBHVEVTVF9MSVNUX1RFU1RTX0ZMQUddLCBjYXB0dXJlX3N0ZGVycj1GYWxzZSkub3V0cHV0
CisKIAogY2xhc3MgR1Rlc3RYTUxPdXRwdXRVbml0VGVzdChndGVzdF94bWxfdGVzdF91dGlscy5H
VGVzdFhNTFRlc3RDYXNlKToKICAgIiIiCiAgIFVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyBY
TUwgb3V0cHV0IGZ1bmN0aW9uYWxpdHkuCiAgICIiIgogCi0gIGRlZiB0ZXN0Tm9uRW1wdHlYbWxP
dXRwdXQoc2VsZik6Ci0gICAgIiIiCi0gICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVy
YXRlcyBhIG5vbi1lbXB0eSBYTUwgb3V0cHV0LCBhbmQKLSAgICB0ZXN0cyB0aGF0IHRoZSBYTUwg
b3V0cHV0IGlzIGV4cGVjdGVkLgotICAgICIiIgotICAgIHNlbGYuX1Rlc3RYbWxPdXRwdXQoR1RF
U1RfUFJPR1JBTV9OQU1FLCBFWFBFQ1RFRF9OT05fRU1QVFlfWE1MLCAxKQorICAjIFRoaXMgdGVz
dCBjdXJyZW50bHkgYnJlYWtzIG9uIHBsYXRmb3JtcyB0aGF0IGRvIG5vdCBzdXBwb3J0IHR5cGVk
IGFuZAorICAjIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cywgc28gd2UgZG9uJ3QgcnVuIGl0IHVu
ZGVyIHRoZW0uCisgIGlmIFNVUFBPUlRTX1RZUEVEX1RFU1RTOgorICAgIGRlZiB0ZXN0Tm9uRW1w
dHlYbWxPdXRwdXQoc2VsZik6CisgICAgICAiIiIKKyAgICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0g
dGhhdCBnZW5lcmF0ZXMgYSBub24tZW1wdHkgWE1MIG91dHB1dCwgYW5kCisgICAgICB0ZXN0cyB0
aGF0IHRoZSBYTUwgb3V0cHV0IGlzIGV4cGVjdGVkLgorICAgICAgIiIiCisgICAgICBzZWxmLl9U
ZXN0WG1sT3V0cHV0KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQRUNURURfTk9OX0VNUFRZX1hNTCwg
MSkKIAogICBkZWYgdGVzdEVtcHR5WG1sT3V0cHV0KHNlbGYpOgotICAgICIiIgorICAgICIiIlZl
cmlmaWVzIFhNTCBvdXRwdXQgZm9yIGEgR29vZ2xlIFRlc3QgYmluYXJ5IHdpdGhvdXQgYWN0dWFs
IHRlc3RzLgorCiAgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBhbiBlbXB0
eSBYTUwgb3V0cHV0LCBhbmQKICAgICB0ZXN0cyB0aGF0IHRoZSBYTUwgb3V0cHV0IGlzIGV4cGVj
dGVkLgogICAgICIiIgogCi0gICAgc2VsZi5fVGVzdFhtbE91dHB1dCgiZ3Rlc3Rfbm9fdGVzdF91
bml0dGVzdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1RFRF9FTVBUWV9YTUwsIDAp
CisgICAgc2VsZi5fVGVzdFhtbE91dHB1dCgnZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCcsIEVYUEVD
VEVEX0VNUFRZX1hNTCwgMCkKKworICBkZWYgdGVzdFRpbWVzdGFtcFZhbHVlKHNlbGYpOgorICAg
ICIiIkNoZWNrcyB3aGV0aGVyIHRoZSB0aW1lc3RhbXAgYXR0cmlidXRlIGluIHRoZSBYTUwgb3V0
cHV0IGlzIHZhbGlkLgorCisgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBh
biBlbXB0eSBYTUwgb3V0cHV0LCBhbmQgY2hlY2tzIGlmCisgICAgdGhlIHRpbWVzdGFtcCBhdHRy
aWJ1dGUgaW4gdGhlIHRlc3RzdWl0ZXMgdGFnIGlzIHZhbGlkLgorICAgICIiIgorICAgIGFjdHVh
bCA9IHNlbGYuX0dldFhtbE91dHB1dCgnZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCcsIFtdLCAwKQor
ICAgIGRhdGVfdGltZV9zdHIgPSBhY3R1YWwuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZU5v
ZGUoJ3RpbWVzdGFtcCcpLnZhbHVlCisgICAgIyBkYXRldGltZS5zdHJwdGltZSgpIGlzIG9ubHkg
YXZhaWxhYmxlIGluIFB5dGhvbiAyLjUrIHNvIHdlIGhhdmUgdG8KKyAgICAjIHBhcnNlIHRoZSBl
eHBlY3RlZCBkYXRldGltZSBtYW51YWxseS4KKyAgICBtYXRjaCA9IHJlLm1hdGNoKHInKFxkKykt
KFxkXGQpLShcZFxkKVQoXGRcZCk6KFxkXGQpOihcZFxkKScsIGRhdGVfdGltZV9zdHIpCisgICAg
c2VsZi5hc3NlcnRUcnVlKAorICAgICAgICByZS5tYXRjaCwKKyAgICAgICAgJ1hNTCBkYXRldHRp
bWUgc3RyaW5nICVzIGhhcyBpbmNvcnJlY3QgZm9ybWF0JyAlIGRhdGVfdGltZV9zdHIpCisgICAg
ZGF0ZV90aW1lX2Zyb21feG1sID0gZGF0ZXRpbWUuZGF0ZXRpbWUoCisgICAgICAgIHllYXI9aW50
KG1hdGNoLmdyb3VwKDEpKSwgbW9udGg9aW50KG1hdGNoLmdyb3VwKDIpKSwKKyAgICAgICAgZGF5
PWludChtYXRjaC5ncm91cCgzKSksIGhvdXI9aW50KG1hdGNoLmdyb3VwKDQpKSwKKyAgICAgICAg
bWludXRlPWludChtYXRjaC5ncm91cCg1KSksIHNlY29uZD1pbnQobWF0Y2guZ3JvdXAoNikpKQor
CisgICAgdGltZV9kZWx0YSA9IGFicyhkYXRldGltZS5kYXRldGltZS5ub3coKSAtIGRhdGVfdGlt
ZV9mcm9tX3htbCkKKyAgICAjIHRpbWVzdGFtcCB2YWx1ZSBzaG91bGQgYmUgbmVhciB0aGUgY3Vy
cmVudCBsb2NhbCB0aW1lCisgICAgc2VsZi5hc3NlcnRUcnVlKHRpbWVfZGVsdGEgPCBkYXRldGlt
ZS50aW1lZGVsdGEoc2Vjb25kcz02MDApLAorICAgICAgICAgICAgICAgICAgICAndGltZV9kZWx0
YSBpcyAlcycgJSB0aW1lX2RlbHRhKQorICAgIGFjdHVhbC51bmxpbmsoKQogCiAgIGRlZiB0ZXN0
RGVmYXVsdE91dHB1dEZpbGUoc2VsZik6CiAgICAgIiIiCkBAIC0xNDIsMTUgKzIwNiwxNiBAQCBk
ZWYgdGVzdERlZmF1bHRPdXRwdXRGaWxlKHNlbGYpOgogICAgIG91dHB1dF9maWxlID0gb3MucGF0
aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdURVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUpCiAgICAgZ3Rlc3RfcHJvZ19w
YXRoID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCi0gICAgICAgICJn
dGVzdF9ub190ZXN0X3VuaXR0ZXN0IikKKyAgICAgICAgJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3Qn
KQogICAgIHRyeToKICAgICAgIG9zLnJlbW92ZShvdXRwdXRfZmlsZSkKLSAgICBleGNlcHQgT1NF
cnJvciwgZToKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgIGUgPSBzeXMuZXhjX2luZm8oKVsx
XQogICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6CiAgICAgICAgIHJhaXNlCiAKICAg
ICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAotICAgICAgICBbZ3Rlc3RfcHJvZ19w
YXRoLCAiJXM9eG1sIiAlIEdURVNUX09VVFBVVF9GTEFHXSwKKyAgICAgICAgW2d0ZXN0X3Byb2df
cGF0aCwgJyVzPXhtbCcgJSBHVEVTVF9PVVRQVVRfRkxBR10sCiAgICAgICAgIHdvcmtpbmdfZGly
PWd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpKQogICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRl
ZCkKICAgICBzZWxmLmFzc2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkKQEAgLTE2Myw2MCArMjI4
LDc5IEBAIGRlZiB0ZXN0U3VwcHJlc3NlZFhtbE91dHB1dChzZWxmKToKICAgICAiIiIKIAogICAg
IHhtbF9wYXRoID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1BST0dSQU1fTkFNRSArICJvdXQueG1s
IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QUk9HUkFNX05BTUUgKyAnb3V0
LnhtbCcpCiAgICAgaWYgb3MucGF0aC5pc2ZpbGUoeG1sX3BhdGgpOgogICAgICAgb3MucmVtb3Zl
KHhtbF9wYXRoKQogCi0gICAgZ3Rlc3RfcHJvZ19wYXRoID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRU
ZXN0RXhlY3V0YWJsZVBhdGgoR1RFU1RfUFJPR1JBTV9OQU1FKQotCi0gICAgY29tbWFuZCA9IFtn
dGVzdF9wcm9nX3BhdGgsCi0gICAgICAgICAgICAgICAiJXM9eG1sOiVzIiAlIChHVEVTVF9PVVRQ
VVRfRkxBRywgeG1sX3BhdGgpLAotICAgICAgICAgICAgICAgIi0tc2h1dF9kb3duX3htbCJdCisg
ICAgY29tbWFuZCA9IFtHVEVTVF9QUk9HUkFNX1BBVEgsCisgICAgICAgICAgICAgICAnJXM9eG1s
OiVzJyAlIChHVEVTVF9PVVRQVVRfRkxBRywgeG1sX3BhdGgpLAorICAgICAgICAgICAgICAgJy0t
c2h1dF9kb3duX3htbCddCiAgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21t
YW5kKQogICAgIGlmIHAudGVybWluYXRlZF9ieV9zaWduYWw6Ci0gICAgICBzZWxmLmFzc2VydF8o
RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIiVzIHdhcyBraWxsZWQgYnkgc2lnbmFsICVkIiAl
IChndGVzdF9wcm9nX25hbWUsIHAuc2lnbmFsKSkKKyAgICAgICMgcC5zaWduYWwgaXMgYXZhbGFi
bGUgb25seSBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsIGlzIFRydWUuCisgICAgICBzZWxmLmFz
c2VydEZhbHNlKAorICAgICAgICAgIHAudGVybWluYXRlZF9ieV9zaWduYWwsCisgICAgICAgICAg
JyVzIHdhcyBraWxsZWQgYnkgc2lnbmFsICVkJyAlIChHVEVTVF9QUk9HUkFNX05BTUUsIHAuc2ln
bmFsKSkKICAgICBlbHNlOgogICAgICAgc2VsZi5hc3NlcnRfKHAuZXhpdGVkKQogICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoMSwgcC5leGl0X2NvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAi
JyVzJyBleGl0ZWQgd2l0aCBjb2RlICVzLCB3aGljaCBkb2Vzbid0IG1hdGNoICIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICJ0aGUgZXhwZWN0ZWQgZXhpdCBjb2RlICVzLiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICd0aGUgZXhwZWN0ZWQgZXhpdCBjb2RlICVzLicKICAgICAgICAgICAgICAg
ICAgICAgICAgICUgKGNvbW1hbmQsIHAuZXhpdF9jb2RlLCAxKSkKIAogICAgIHNlbGYuYXNzZXJ0
Xyhub3Qgb3MucGF0aC5pc2ZpbGUoeG1sX3BhdGgpKQogCisgIGRlZiB0ZXN0RmlsdGVyZWRUZXN0
WG1sT3V0cHV0KHNlbGYpOgorICAgICIiIlZlcmlmaWVzIFhNTCBvdXRwdXQgd2hlbiBhIGZpbHRl
ciBpcyBhcHBsaWVkLgogCi0gIGRlZiBfVGVzdFhtbE91dHB1dChzZWxmLCBndGVzdF9wcm9nX25h
bWUsIGV4cGVjdGVkX3htbCwgZXhwZWN0ZWRfZXhpdF9jb2RlKToKKyAgICBSdW5zIGEgdGVzdCBw
cm9ncmFtIHRoYXQgZXhlY3V0ZXMgb25seSBzb21lIHRlc3RzIGFuZCB2ZXJpZmllcyB0aGF0Cisg
ICAgbm9uLXNlbGVjdGVkIHRlc3RzIGRvIG5vdCBzaG93IHVwIGluIHRoZSBYTUwgb3V0cHV0Lgog
ICAgICIiIgotICAgIEFzc2VydHMgdGhhdCB0aGUgWE1MIGRvY3VtZW50IGdlbmVyYXRlZCBieSBy
dW5uaW5nIHRoZSBwcm9ncmFtCi0gICAgZ3Rlc3RfcHJvZ19uYW1lIG1hdGNoZXMgZXhwZWN0ZWRf
eG1sLCBhIHN0cmluZyBjb250YWluaW5nIGFub3RoZXIKLSAgICBYTUwgZG9jdW1lbnQuICBGdXJ0
aGVybW9yZSwgdGhlIHByb2dyYW0ncyBleGl0IGNvZGUgbXVzdCBiZQotICAgIGV4cGVjdGVkX2V4
aXRfY29kZS4KKworICAgIHNlbGYuX1Rlc3RYbWxPdXRwdXQoR1RFU1RfUFJPR1JBTV9OQU1FLCBF
WFBFQ1RFRF9GSUxURVJFRF9URVNUX1hNTCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4
dHJhX2FyZ3M9Wyclcz1TdWNjZXNzZnVsVGVzdC4qJyAlIEdURVNUX0ZJTFRFUl9GTEFHXSkKKwor
ICBkZWYgX0dldFhtbE91dHB1dChzZWxmLCBndGVzdF9wcm9nX25hbWUsIGV4dHJhX2FyZ3MsIGV4
cGVjdGVkX2V4aXRfY29kZSk6CisgICAgIiIiCisgICAgUmV0dXJucyB0aGUgeG1sIG91dHB1dCBn
ZW5lcmF0ZWQgYnkgcnVubmluZyB0aGUgcHJvZ3JhbSBndGVzdF9wcm9nX25hbWUuCisgICAgRnVy
dGhlcm1vcmUsIHRoZSBwcm9ncmFtJ3MgZXhpdCBjb2RlIG11c3QgYmUgZXhwZWN0ZWRfZXhpdF9j
b2RlLgogICAgICIiIgogICAgIHhtbF9wYXRoID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRp
bHMuR2V0VGVtcERpcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0ZXN0X3Byb2df
bmFtZSArICJvdXQueG1sIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGVzdF9wcm9n
X25hbWUgKyAnb3V0LnhtbCcpCiAgICAgZ3Rlc3RfcHJvZ19wYXRoID0gZ3Rlc3RfdGVzdF91dGls
cy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoZ3Rlc3RfcHJvZ19uYW1lKQogCi0gICAgY29tbWFuZCA9
IFtndGVzdF9wcm9nX3BhdGgsICIlcz14bWw6JXMiICUgKEdURVNUX09VVFBVVF9GTEFHLCB4bWxf
cGF0aCldCisgICAgY29tbWFuZCA9IChbZ3Rlc3RfcHJvZ19wYXRoLCAnJXM9eG1sOiVzJyAlIChH
VEVTVF9PVVRQVVRfRkxBRywgeG1sX3BhdGgpXSArCisgICAgICAgICAgICAgICBleHRyYV9hcmdz
KQogICAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKICAgICBpZiBw
LnRlcm1pbmF0ZWRfYnlfc2lnbmFsOgogICAgICAgc2VsZi5hc3NlcnRfKEZhbHNlLAotICAgICAg
ICAgICAgICAgICAgICIlcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAlZCIgJSAoZ3Rlc3RfcHJvZ19u
YW1lLCBwLnNpZ25hbCkpCisgICAgICAgICAgICAgICAgICAgJyVzIHdhcyBraWxsZWQgYnkgc2ln
bmFsICVkJyAlIChndGVzdF9wcm9nX25hbWUsIHAuc2lnbmFsKSkKICAgICBlbHNlOgogICAgICAg
c2VsZi5hc3NlcnRfKHAuZXhpdGVkKQogICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRf
ZXhpdF9jb2RlLCBwLmV4aXRfY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIGV4
aXRlZCB3aXRoIGNvZGUgJXMsIHdoaWNoIGRvZXNuJ3QgbWF0Y2ggIgotICAgICAgICAgICAgICAg
ICAgICAgICAgInRoZSBleHBlY3RlZCBleGl0IGNvZGUgJXMuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgJ3RoZSBleHBlY3RlZCBleGl0IGNvZGUgJXMuJwogICAgICAgICAgICAgICAgICAgICAg
ICAgJSAoY29tbWFuZCwgcC5leGl0X2NvZGUsIGV4cGVjdGVkX2V4aXRfY29kZSkpCisgICAgYWN0
dWFsID0gbWluaWRvbS5wYXJzZSh4bWxfcGF0aCkKKyAgICByZXR1cm4gYWN0dWFsCiAKKyAgZGVm
IF9UZXN0WG1sT3V0cHV0KHNlbGYsIGd0ZXN0X3Byb2dfbmFtZSwgZXhwZWN0ZWRfeG1sLAorICAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlLCBleHRyYV9hcmdzPU5vbmUpOgor
ICAgICIiIgorICAgIEFzc2VydHMgdGhhdCB0aGUgWE1MIGRvY3VtZW50IGdlbmVyYXRlZCBieSBy
dW5uaW5nIHRoZSBwcm9ncmFtCisgICAgZ3Rlc3RfcHJvZ19uYW1lIG1hdGNoZXMgZXhwZWN0ZWRf
eG1sLCBhIHN0cmluZyBjb250YWluaW5nIGFub3RoZXIKKyAgICBYTUwgZG9jdW1lbnQuICBGdXJ0
aGVybW9yZSwgdGhlIHByb2dyYW0ncyBleGl0IGNvZGUgbXVzdCBiZQorICAgIGV4cGVjdGVkX2V4
aXRfY29kZS4KKyAgICAiIiIKKworICAgIGFjdHVhbCA9IHNlbGYuX0dldFhtbE91dHB1dChndGVz
dF9wcm9nX25hbWUsIGV4dHJhX2FyZ3Mgb3IgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZSkKICAgICBleHBlY3RlZCA9IG1pbmlkb20ucGFyc2VT
dHJpbmcoZXhwZWN0ZWRfeG1sKQotICAgIGFjdHVhbCAgID0gbWluaWRvbS5wYXJzZSh4bWxfcGF0
aCkKICAgICBzZWxmLk5vcm1hbGl6ZVhtbChhY3R1YWwuZG9jdW1lbnRFbGVtZW50KQogICAgIHNl
bGYuQXNzZXJ0RXF1aXZhbGVudE5vZGVzKGV4cGVjdGVkLmRvY3VtZW50RWxlbWVudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWwuZG9jdW1lbnRFbGVtZW50KQogICAgIGV4
cGVjdGVkLnVubGluaygpCi0gICAgYWN0dWFsICAudW5saW5rKCkKLQorICAgIGFjdHVhbC51bmxp
bmsoKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYwpp
bmRleCBmYzA3ZWY0NmJkNjY3YWE5MmU1ZGFmN2YyMDJlZmNkNzYzNjZiZjhhLi40OGI4NzcxYjUy
NDZjMTQxZjRjZGJhMGQ5ZmU4YTJkYzlhNmU3NzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MKQEAg
LTM4LDEzICszOCwxNiBAQAogLy8gVGhpcyBwcm9ncmFtIHdpbGwgYmUgaW52b2tlZCBmcm9tIGEg
UHl0aG9uIHVuaXQgdGVzdC4gIERvbid0IHJ1biBpdAogLy8gZGlyZWN0bHkuCiAKLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIHVzaW5nIDo6dGVz
dGluZzo6SW5pdEdvb2dsZVRlc3Q7CiB1c2luZyA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVy
czsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTsKIHVzaW5nIDo6dGVzdGluZzo6VW5p
dFRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6OlZhbHVlczsK
IAotY2xhc3MgU3VjY2Vzc2Z1bFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitjbGFzcyBT
dWNjZXNzZnVsVGVzdCA6IHB1YmxpYyBUZXN0IHsKIH07CiAKIFRFU1RfRihTdWNjZXNzZnVsVGVz
dCwgU3VjY2VlZHMpIHsKQEAgLTUyLDE0ICs1NSwxNCBAQCBURVNUX0YoU3VjY2Vzc2Z1bFRlc3Qs
IFN1Y2NlZWRzKSB7CiAgIEFTU0VSVF9FUSgxLCAxKTsKIH0KIAotY2xhc3MgRmFpbGVkVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIEZhaWxlZFRlc3QgOiBwdWJsaWMgVGVzdCB7
CiB9OwogCiBURVNUX0YoRmFpbGVkVGVzdCwgRmFpbHMpIHsKICAgQVNTRVJUX0VRKDEsIDIpOwog
fQogCi1jbGFzcyBEaXNhYmxlZFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitjbGFzcyBE
aXNhYmxlZFRlc3QgOiBwdWJsaWMgVGVzdCB7CiB9OwogCiBURVNUX0YoRGlzYWJsZWRUZXN0LCBE
SVNBQkxFRF90ZXN0X25vdF9ydW4pIHsKQEAgLTkxLDcgKzk0LDEwIEBAIFRFU1QoSW52YWxpZENo
YXJhY3RlcnNUZXN0LCBJbnZhbGlkQ2hhcmFjdGVyc0luTWVzc2FnZSkgewogICBGQUlMKCkgPDwg
IkludmFsaWQgY2hhcmFjdGVycyBpbiBicmFja2V0cyBbXHgxXHgyXSI7CiB9CiAKLWNsYXNzIFBy
b3BlcnR5UmVjb3JkaW5nVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIFByb3Bl
cnR5UmVjb3JkaW5nVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lk
IFNldFVwVGVzdENhc2UoKSB7IFJlY29yZFByb3BlcnR5KCJTZXRVcFRlc3RDYXNlIiwgInllcyIp
OyB9CisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7IFJlY29yZFByb3BlcnR5KCJU
ZWFyRG93blRlc3RDYXNlIiwgImF5ZSIpOyB9CiB9OwogCiBURVNUX0YoUHJvcGVydHlSZWNvcmRp
bmdUZXN0LCBPbmVQcm9wZXJ0eSkgewpAQCAtMTE3LDEyICsxMjMsMTIgQEAgVEVTVChOb0ZpeHR1
cmVUZXN0LCBSZWNvcmRQcm9wZXJ0eSkgewogICBSZWNvcmRQcm9wZXJ0eSgia2V5IiwgIjEiKTsK
IH0KIAotdm9pZCBFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRQcm9wZXJ0eShjb25zdCBj
aGFyKiBrZXksIGludCB2YWx1ZSkgewordm9pZCBFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNv
cmRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYga2V5LCBpbnQgdmFsdWUpIHsKICAgdGVzdGlu
Zzo6VGVzdDo6UmVjb3JkUHJvcGVydHkoa2V5LCB2YWx1ZSk7CiB9CiAKLXZvaWQgRXh0ZXJuYWxV
dGlsaXR5VGhhdENhbGxzUmVjb3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB2YWx1ZSkgewor
dm9pZCBFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0
cmluZyYga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpIHsKICAgdGVzdGluZzo6VGVzdDo6UmVjb3JkUHJvcGVy
dHkoa2V5LCB2YWx1ZSk7CiB9CiAKQEAgLTEzNCw2ICsxNDAsMzUgQEAgVEVTVChOb0ZpeHR1cmVU
ZXN0LCBFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRTdHJpbmdWYWx1ZWRQcm9wZXJ0eSkg
ewogICBFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRQcm9wZXJ0eSgia2V5X2Zvcl91dGls
aXR5X3N0cmluZyIsICIxIik7CiB9CiAKKy8vIFZlcmlmaWVzIHRoYXQgdGhlIHRlc3QgcGFyYW1l
dGVyIHZhbHVlIGlzIG91dHB1dCBpbiB0aGUgJ3ZhbHVlX3BhcmFtJworLy8gWE1MIGF0dHJpYnV0
ZSBmb3IgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KK2NsYXNzIFZhbHVlUGFyYW1UZXN0IDog
cHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7fTsKK1RFU1RfUChWYWx1ZVBhcmFtVGVzdCwgSGFz
VmFsdWVQYXJhbUF0dHJpYnV0ZSkge30KK1RFU1RfUChWYWx1ZVBhcmFtVGVzdCwgQW5vdGhlclRl
c3RUaGF0SGFzVmFsdWVQYXJhbUF0dHJpYnV0ZSkge30KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KFNpbmdsZSwgVmFsdWVQYXJhbVRlc3QsIFZhbHVlcygzMywgNDIpKTsKKworI2lmIEdURVNUX0hB
U19UWVBFRF9URVNUCisvLyBWZXJpZmllcyB0aGF0IHRoZSB0eXBlIHBhcmFtZXRlciBuYW1lIGlz
IG91dHB1dCBpbiB0aGUgJ3R5cGVfcGFyYW0nCisvLyBYTUwgYXR0cmlidXRlIGZvciB0eXBlZCB0
ZXN0cy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBUeXBlZFRlc3QgOiBwdWJsaWMgVGVz
dCB7fTsKK3R5cGVkZWYgdGVzdGluZzo6VHlwZXM8aW50LCBsb25nPiBUeXBlZFRlc3RUeXBlczsK
K1RZUEVEX1RFU1RfQ0FTRShUeXBlZFRlc3QsIFR5cGVkVGVzdFR5cGVzKTsKK1RZUEVEX1RFU1Qo
VHlwZWRUZXN0LCBIYXNUeXBlUGFyYW1BdHRyaWJ1dGUpIHt9CisjZW5kaWYKKworI2lmIEdURVNU
X0hBU19UWVBFRF9URVNUX1AKKy8vIFZlcmlmaWVzIHRoYXQgdGhlIHR5cGUgcGFyYW1ldGVyIG5h
bWUgaXMgb3V0cHV0IGluIHRoZSAndHlwZV9wYXJhbScKKy8vIFhNTCBhdHRyaWJ1dGUgZm9yIHR5
cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBUeXBl
UGFyYW1ldGVyaXplZFRlc3RDYXNlIDogcHVibGljIFRlc3Qge307CitUWVBFRF9URVNUX0NBU0Vf
UChUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlKTsKK1RZUEVEX1RFU1RfUChUeXBlUGFyYW1ldGVy
aXplZFRlc3RDYXNlLCBIYXNUeXBlUGFyYW1BdHRyaWJ1dGUpIHt9CitSRUdJU1RFUl9UWVBFRF9U
RVNUX0NBU0VfUChUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLCBIYXNUeXBlUGFyYW1BdHRyaWJ1
dGUpOwordHlwZWRlZiB0ZXN0aW5nOjpUeXBlczxpbnQsIGxvbmc+IFR5cGVQYXJhbWV0ZXJpemVk
VGVzdENhc2VUeXBlczsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFNpbmdsZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlVHlw
ZXMpOworI2VuZGlmCisKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewogICBJbml0
R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CiAKQEAgLTE0MSw1ICsxNzYsNiBAQCBpbnQgbWFpbihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKICAgICBUZXN0RXZlbnRMaXN0ZW5lcnMmIGxpc3RlbmVy
cyA9IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKTsKICAgICBkZWxldGUgbGlz
dGVuZXJzLlJlbGVhc2UobGlzdGVuZXJzLmRlZmF1bHRfeG1sX2dlbmVyYXRvcigpKTsKICAgfQor
ICB0ZXN0aW5nOjpUZXN0OjpSZWNvcmRQcm9wZXJ0eSgiYWRfaG9jX3Byb3BlcnR5IiwgIjQyIik7
CiAgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF90ZXN0X3V0aWxzLnB5IGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfdGVzdF91dGlscy5weQppbmRleCBjODNjM2I3ZWE3OWIy
ZDc2MmVlZDY2NWUyZDYxZGY4YjllYTA4NDQzLi4zNDE5NTZiNTRkZGZmZmRjN2NmZThjYmNhM2Yw
ZDliMTQ5YzJkYjI2IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X3htbF90ZXN0X3V0aWxzLnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkKQEAgLTM5LDggKzM5LDggQEAKIGltcG9ydCBndGVzdF90
ZXN0X3V0aWxzCiAKIAotR1RFU1RfT1VUUFVUX0ZMQUcgICAgICAgICA9ICItLWd0ZXN0X291dHB1
dCIKLUdURVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUgPSAidGVzdF9kZXRhaWwueG1sIgorR1RFU1Rf
T1VUUFVUX0ZMQUcgICAgICAgICA9ICctLWd0ZXN0X291dHB1dCcKK0dURVNUX0RFRkFVTFRfT1VU
UFVUX0ZJTEUgPSAndGVzdF9kZXRhaWwueG1sJwogCiBjbGFzcyBHVGVzdFhNTFRlc3RDYXNlKGd0
ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgogICAiIiIKQEAgLTU4LDggKzU4LDkgQEAgZGVmIEFz
c2VydEVxdWl2YWxlbnROb2RlcyhzZWxmLCBleHBlY3RlZF9ub2RlLCBhY3R1YWxfbm9kZSk6CiAg
ICAgKiAgSXQgaGFzIHRoZSBzYW1lIHRhZyBuYW1lIGFzIGV4cGVjdGVkX25vZGUuCiAgICAgKiAg
SXQgaGFzIHRoZSBzYW1lIHNldCBvZiBhdHRyaWJ1dGVzIGFzIGV4cGVjdGVkX25vZGUsIGVhY2gg
d2l0aAogICAgICAgIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0
ZSBvZiBleHBlY3RlZF9ub2RlLgotICAgICAgIEFuIGV4Y2VwdGlvbiBpcyBhbnkgYXR0cmlidXRl
IG5hbWVkICJ0aW1lIiwgd2hpY2ggbmVlZHMgb25seSBiZQotICAgICAgIGNvbnZlcnRpYmxlIHRv
IGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyLgorICAgICAgIEV4Y2VwdGlvbnMgYXJlIGFueSBhdHRy
aWJ1dGUgbmFtZWQgInRpbWUiLCB3aGljaCBuZWVkcyBvbmx5IGJlCisgICAgICAgY29udmVydGli
bGUgdG8gYSBmbG9hdGluZy1wb2ludCBudW1iZXIgYW5kIGFueSBhdHRyaWJ1dGUgbmFtZWQKKyAg
ICAgICAidHlwZV9wYXJhbSIgd2hpY2ggb25seSBoYXMgdG8gYmUgbm9uLWVtcHR5LgogICAgICog
IEl0IGhhcyBhbiBlcXVpdmFsZW50IHNldCBvZiBjaGlsZCBub2RlcyAoaW5jbHVkaW5nIGVsZW1l
bnRzIGFuZAogICAgICAgIENEQVRBIHNlY3Rpb25zKSBhcyBleHBlY3RlZF9ub2RlLiAgTm90ZSB0
aGF0IHdlIGlnbm9yZSB0aGUKICAgICAgICBvcmRlciBvZiB0aGUgY2hpbGRyZW4gYXMgdGhleSBh
cmUgbm90IGd1YXJhbnRlZWQgdG8gYmUgaW4gYW55CkBAIC03OSwzNCArODAsMzggQEAgZGVmIEFz
c2VydEVxdWl2YWxlbnROb2RlcyhzZWxmLCBleHBlY3RlZF9ub2RlLCBhY3R1YWxfbm9kZSk6CiAg
ICAgYWN0dWFsX2F0dHJpYnV0ZXMgICA9IGFjdHVhbF9ub2RlICAuYXR0cmlidXRlcwogICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKAogICAgICAgICBleHBlY3RlZF9hdHRyaWJ1dGVzLmxlbmd0aCwgYWN0
dWFsX2F0dHJpYnV0ZXMubGVuZ3RoLAotICAgICAgICAiYXR0cmlidXRlIG51bWJlcnMgZGlmZmVy
IGluIGVsZW1lbnQgIiArIGFjdHVhbF9ub2RlLnRhZ05hbWUpCisgICAgICAgICdhdHRyaWJ1dGUg
bnVtYmVycyBkaWZmZXIgaW4gZWxlbWVudCAlczpcbkV4cGVjdGVkOiAlclxuQWN0dWFsOiAlcicg
JSAoCisgICAgICAgICAgICBhY3R1YWxfbm9kZS50YWdOYW1lLCBleHBlY3RlZF9hdHRyaWJ1dGVz
LmtleXMoKSwKKyAgICAgICAgICAgIGFjdHVhbF9hdHRyaWJ1dGVzLmtleXMoKSkpCiAgICAgZm9y
IGkgaW4gcmFuZ2UoZXhwZWN0ZWRfYXR0cmlidXRlcy5sZW5ndGgpOgogICAgICAgZXhwZWN0ZWRf
YXR0ciA9IGV4cGVjdGVkX2F0dHJpYnV0ZXMuaXRlbShpKQogICAgICAgYWN0dWFsX2F0dHIgICA9
IGFjdHVhbF9hdHRyaWJ1dGVzLmdldChleHBlY3RlZF9hdHRyLm5hbWUpCiAgICAgICBzZWxmLmFz
c2VydF8oCiAgICAgICAgICAgYWN0dWFsX2F0dHIgaXMgbm90IE5vbmUsCi0gICAgICAgICAgImV4
cGVjdGVkIGF0dHJpYnV0ZSAlcyBub3QgZm91bmQgaW4gZWxlbWVudCAlcyIgJQorICAgICAgICAg
ICdleHBlY3RlZCBhdHRyaWJ1dGUgJXMgbm90IGZvdW5kIGluIGVsZW1lbnQgJXMnICUKICAgICAg
ICAgICAoZXhwZWN0ZWRfYXR0ci5uYW1lLCBhY3R1YWxfbm9kZS50YWdOYW1lKSkKLSAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX2F0dHIudmFsdWUsIGFjdHVhbF9hdHRyLnZhbHVlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIiB2YWx1ZXMgb2YgYXR0cmlidXRlICVzIGluIGVsZW1l
bnQgJXMgZGlmZmVyIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAoZXhwZWN0ZWRfYXR0ci5u
YW1lLCBhY3R1YWxfbm9kZS50YWdOYW1lKSkKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorICAg
ICAgICAgIGV4cGVjdGVkX2F0dHIudmFsdWUsIGFjdHVhbF9hdHRyLnZhbHVlLAorICAgICAgICAg
ICcgdmFsdWVzIG9mIGF0dHJpYnV0ZSAlcyBpbiBlbGVtZW50ICVzIGRpZmZlcjogJXMgdnMgJXMn
ICUKKyAgICAgICAgICAoZXhwZWN0ZWRfYXR0ci5uYW1lLCBhY3R1YWxfbm9kZS50YWdOYW1lLAor
ICAgICAgICAgICBleHBlY3RlZF9hdHRyLnZhbHVlLCBhY3R1YWxfYXR0ci52YWx1ZSkpCiAKICAg
ICBleHBlY3RlZF9jaGlsZHJlbiA9IHNlbGYuX0dldENoaWxkcmVuKGV4cGVjdGVkX25vZGUpCiAg
ICAgYWN0dWFsX2NoaWxkcmVuID0gc2VsZi5fR2V0Q2hpbGRyZW4oYWN0dWFsX25vZGUpCiAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoCiAgICAgICAgIGxlbihleHBlY3RlZF9jaGlsZHJlbiksIGxlbihh
Y3R1YWxfY2hpbGRyZW4pLAotICAgICAgICAibnVtYmVyIG9mIGNoaWxkIGVsZW1lbnRzIGRpZmZl
ciBpbiBlbGVtZW50ICIgKyBhY3R1YWxfbm9kZS50YWdOYW1lKQotICAgIGZvciBjaGlsZF9pZCwg
Y2hpbGQgaW4gZXhwZWN0ZWRfY2hpbGRyZW4uaXRlcml0ZW1zKCk6CisgICAgICAgICdudW1iZXIg
b2YgY2hpbGQgZWxlbWVudHMgZGlmZmVyIGluIGVsZW1lbnQgJyArIGFjdHVhbF9ub2RlLnRhZ05h
bWUpCisgICAgZm9yIGNoaWxkX2lkLCBjaGlsZCBpbiBleHBlY3RlZF9jaGlsZHJlbi5pdGVtcygp
OgogICAgICAgc2VsZi5hc3NlcnRfKGNoaWxkX2lkIGluIGFjdHVhbF9jaGlsZHJlbiwKICAgICAg
ICAgICAgICAgICAgICAnPCVzPiBpcyBub3QgaW4gPCVzPiAoaW4gZWxlbWVudCAlcyknICUKICAg
ICAgICAgICAgICAgICAgICAoY2hpbGRfaWQsIGFjdHVhbF9jaGlsZHJlbiwgYWN0dWFsX25vZGUu
dGFnTmFtZSkpCiAgICAgICBzZWxmLkFzc2VydEVxdWl2YWxlbnROb2RlcyhjaGlsZCwgYWN0dWFs
X2NoaWxkcmVuW2NoaWxkX2lkXSkKIAogICBpZGVudGlmeWluZ19hdHRyaWJ1dGUgPSB7Ci0gICAg
InRlc3RzdWl0ZXMiOiAibmFtZSIsCi0gICAgInRlc3RzdWl0ZSI6ICJuYW1lIiwKLSAgICAidGVz
dGNhc2UiOiAgIm5hbWUiLAotICAgICJmYWlsdXJlIjogICAibWVzc2FnZSIsCisgICAgJ3Rlc3Rz
dWl0ZXMnOiAnbmFtZScsCisgICAgJ3Rlc3RzdWl0ZSc6ICduYW1lJywKKyAgICAndGVzdGNhc2Un
OiAgJ25hbWUnLAorICAgICdmYWlsdXJlJzogICAnbWVzc2FnZScsCiAgICAgfQogCiAgIGRlZiBf
R2V0Q2hpbGRyZW4oc2VsZiwgZWxlbWVudCk6CkBAIC0xMjYsMjAgKzEzMSwyMCBAQCBkZWYgX0dl
dENoaWxkcmVuKHNlbGYsIGVsZW1lbnQpOgogICAgIGZvciBjaGlsZCBpbiBlbGVtZW50LmNoaWxk
Tm9kZXM6CiAgICAgICBpZiBjaGlsZC5ub2RlVHlwZSA9PSBOb2RlLkVMRU1FTlRfTk9ERToKICAg
ICAgICAgc2VsZi5hc3NlcnRfKGNoaWxkLnRhZ05hbWUgaW4gc2VsZi5pZGVudGlmeWluZ19hdHRy
aWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAiRW5jb3VudGVyZWQgdW5rbm93biBlbGVtZW50
IDwlcz4iICUgY2hpbGQudGFnTmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICdFbmNvdW50ZXJl
ZCB1bmtub3duIGVsZW1lbnQgPCVzPicgJSBjaGlsZC50YWdOYW1lKQogICAgICAgICBjaGlsZElE
ID0gY2hpbGQuZ2V0QXR0cmlidXRlKHNlbGYuaWRlbnRpZnlpbmdfYXR0cmlidXRlW2NoaWxkLnRh
Z05hbWVdKQogICAgICAgICBzZWxmLmFzc2VydF8oY2hpbGRJRCBub3QgaW4gY2hpbGRyZW4pCiAg
ICAgICAgIGNoaWxkcmVuW2NoaWxkSURdID0gY2hpbGQKICAgICAgIGVsaWYgY2hpbGQubm9kZVR5
cGUgaW4gW05vZGUuVEVYVF9OT0RFLCBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERV06Ci0gICAgICAg
IGlmICJkZXRhaWwiIG5vdCBpbiBjaGlsZHJlbjoKKyAgICAgICAgaWYgJ2RldGFpbCcgbm90IGlu
IGNoaWxkcmVuOgogICAgICAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PSBOb2RlLkNEQVRBX1NF
Q1RJT05fTk9ERSBvcgogICAgICAgICAgICAgICBub3QgY2hpbGQubm9kZVZhbHVlLmlzc3BhY2Uo
KSk6Ci0gICAgICAgICAgICBjaGlsZHJlblsiZGV0YWlsIl0gPSBjaGlsZC5vd25lckRvY3VtZW50
LmNyZWF0ZUNEQVRBU2VjdGlvbigKKyAgICAgICAgICAgIGNoaWxkcmVuWydkZXRhaWwnXSA9IGNo
aWxkLm93bmVyRG9jdW1lbnQuY3JlYXRlQ0RBVEFTZWN0aW9uKAogICAgICAgICAgICAgICAgIGNo
aWxkLm5vZGVWYWx1ZSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICBjaGlsZHJlblsiZGV0YWls
Il0ubm9kZVZhbHVlICs9IGNoaWxkLm5vZGVWYWx1ZQorICAgICAgICAgIGNoaWxkcmVuWydkZXRh
aWwnXS5ub2RlVmFsdWUgKz0gY2hpbGQubm9kZVZhbHVlCiAgICAgICBlbHNlOgotICAgICAgICBz
ZWxmLmZhaWwoIkVuY291bnRlcmVkIHVuZXhwZWN0ZWQgbm9kZSB0eXBlICVkIiAlIGNoaWxkLm5v
ZGVUeXBlKQorICAgICAgICBzZWxmLmZhaWwoJ0VuY291bnRlcmVkIHVuZXhwZWN0ZWQgbm9kZSB0
eXBlICVkJyAlIGNoaWxkLm5vZGVUeXBlKQogICAgIHJldHVybiBjaGlsZHJlbgogCiAgIGRlZiBO
b3JtYWxpemVYbWwoc2VsZiwgZWxlbWVudCk6CkBAIC0xNTAsMjMgKzE1NSw0MCBAQCBkZWYgTm9y
bWFsaXplWG1sKHNlbGYsIGVsZW1lbnQpOgogICAgICogIFRoZSAidGltZSIgYXR0cmlidXRlIG9m
IDx0ZXN0c3VpdGVzPiwgPHRlc3RzdWl0ZT4gYW5kIDx0ZXN0Y2FzZT4KICAgICAgICBlbGVtZW50
cyBpcyByZXBsYWNlZCB3aXRoIGEgc2luZ2xlIGFzdGVyaXNrLCBpZiBpdCBjb250YWlucwogICAg
ICAgIG9ubHkgZGlnaXQgY2hhcmFjdGVycy4KLSAgICAqICBUaGUgbGluZSBudW1iZXIgcmVwb3J0
ZWQgaW4gdGhlIGZpcnN0IGxpbmUgb2YgdGhlICJtZXNzYWdlIgotICAgICAgIGF0dHJpYnV0ZSBv
ZiA8ZmFpbHVyZT4gZWxlbWVudHMgaXMgcmVwbGFjZWQgd2l0aCBhIHNpbmdsZSBhc3Rlcmlzay4K
KyAgICAqICBUaGUgInRpbWVzdGFtcCIgYXR0cmlidXRlIG9mIDx0ZXN0c3VpdGVzPiBlbGVtZW50
cyBpcyByZXBsYWNlZCB3aXRoIGEKKyAgICAgICBzaW5nbGUgYXN0ZXJpc2ssIGlmIGl0IGNvbnRh
aW5zIGEgdmFsaWQgSVNPODYwMSBkYXRldGltZSB2YWx1ZS4KKyAgICAqICBUaGUgInR5cGVfcGFy
YW0iIGF0dHJpYnV0ZSBvZiA8dGVzdGNhc2U+IGVsZW1lbnRzIGlzIHJlcGxhY2VkIHdpdGggYQor
ICAgICAgIHNpbmdsZSBhc3RlcmlzayAoaWYgaXQgc24gbm9uLWVtcHR5KSBhcyBpdCBpcyB0aGUg
dHlwZSBuYW1lIHJldHVybmVkCisgICAgICAgYnkgdGhlIGNvbXBpbGVyIGFuZCBpcyBwbGF0Zm9y
bSBkZXBlbmRlbnQuCisgICAgKiAgVGhlIGxpbmUgaW5mbyByZXBvcnRlZCBpbiB0aGUgZmlyc3Qg
bGluZSBvZiB0aGUgIm1lc3NhZ2UiCisgICAgICAgYXR0cmlidXRlIGFuZCBDREFUQSBzZWN0aW9u
IG9mIDxmYWlsdXJlPiBlbGVtZW50cyBpcyByZXBsYWNlZCB3aXRoIHRoZQorICAgICAgIGZpbGUn
cyBiYXNlbmFtZSBhbmQgYSBzaW5nbGUgYXN0ZXJpc2sgZm9yIHRoZSBsaW5lIG51bWJlci4KICAg
ICAqICBUaGUgZGlyZWN0b3J5IG5hbWVzIGluIGZpbGUgcGF0aHMgYXJlIHJlbW92ZWQuCiAgICAg
KiAgVGhlIHN0YWNrIHRyYWNlcyBhcmUgcmVtb3ZlZC4KICAgICAiIiIKIAotICAgIGlmIGVsZW1l
bnQudGFnTmFtZSBpbiAoInRlc3RzdWl0ZXMiLCAidGVzdHN1aXRlIiwgInRlc3RjYXNlIik6Ci0g
ICAgICB0aW1lID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKCJ0aW1lIikKLSAgICAgIHRpbWUu
dmFsdWUgPSByZS5zdWIociJeXGQrKFwuXGQrKT8kIiwgIioiLCB0aW1lLnZhbHVlKQotICAgIGVs
aWYgZWxlbWVudC50YWdOYW1lID09ICJmYWlsdXJlIjoKKyAgICBpZiBlbGVtZW50LnRhZ05hbWUg
PT0gJ3Rlc3RzdWl0ZXMnOgorICAgICAgdGltZXN0YW1wID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVO
b2RlKCd0aW1lc3RhbXAnKQorICAgICAgdGltZXN0YW1wLnZhbHVlID0gcmUuc3ViKHInXlxkezR9
LVxkXGQtXGRcZFRcZFxkOlxkXGQ6XGRcZCQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcqJywgdGltZXN0YW1wLnZhbHVlKQorICAgIGlmIGVsZW1lbnQudGFnTmFtZSBpbiAoJ3Rl
c3RzdWl0ZXMnLCAndGVzdHN1aXRlJywgJ3Rlc3RjYXNlJyk6CisgICAgICB0aW1lID0gZWxlbWVu
dC5nZXRBdHRyaWJ1dGVOb2RlKCd0aW1lJykKKyAgICAgIHRpbWUudmFsdWUgPSByZS5zdWIocide
XGQrKFwuXGQrKT8kJywgJyonLCB0aW1lLnZhbHVlKQorICAgICAgdHlwZV9wYXJhbSA9IGVsZW1l
bnQuZ2V0QXR0cmlidXRlTm9kZSgndHlwZV9wYXJhbScpCisgICAgICBpZiB0eXBlX3BhcmFtIGFu
ZCB0eXBlX3BhcmFtLnZhbHVlOgorICAgICAgICB0eXBlX3BhcmFtLnZhbHVlID0gJyonCisgICAg
ZWxpZiBlbGVtZW50LnRhZ05hbWUgPT0gJ2ZhaWx1cmUnOgorICAgICAgc291cmNlX2xpbmVfcGF0
ID0gcideLipbL1xcXSguKjopXGQrXG4nCisgICAgICAjIFJlcGxhY2VzIHRoZSBzb3VyY2UgbGlu
ZSBpbmZvcm1hdGlvbiB3aXRoIGEgbm9ybWFsaXplZCBmb3JtLgorICAgICAgbWVzc2FnZSA9IGVs
ZW1lbnQuZ2V0QXR0cmlidXRlTm9kZSgnbWVzc2FnZScpCisgICAgICBtZXNzYWdlLnZhbHVlID0g
cmUuc3ViKHNvdXJjZV9saW5lX3BhdCwgJ1xcMSpcbicsIG1lc3NhZ2UudmFsdWUpCiAgICAgICBm
b3IgY2hpbGQgaW4gZWxlbWVudC5jaGlsZE5vZGVzOgogICAgICAgICBpZiBjaGlsZC5ub2RlVHlw
ZSA9PSBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERToKLSAgICAgICAgICAjIFJlbW92ZXMgdGhlIHNv
dXJjZSBsaW5lIG51bWJlci4KLSAgICAgICAgICBjZGF0YSA9IHJlLnN1YihyIl4uKlsvXFxdKC4q
OilcZCtcbiIsICJcXDEqXG4iLCBjaGlsZC5ub2RlVmFsdWUpCisgICAgICAgICAgIyBSZXBsYWNl
cyB0aGUgc291cmNlIGxpbmUgaW5mb3JtYXRpb24gd2l0aCBhIG5vcm1hbGl6ZWQgZm9ybS4KKyAg
ICAgICAgICBjZGF0YSA9IHJlLnN1Yihzb3VyY2VfbGluZV9wYXQsICdcXDEqXG4nLCBjaGlsZC5u
b2RlVmFsdWUpCiAgICAgICAgICAgIyBSZW1vdmVzIHRoZSBhY3R1YWwgc3RhY2sgdHJhY2UuCi0g
ICAgICAgICAgY2hpbGQubm9kZVZhbHVlID0gcmUuc3ViKHIiXG5TdGFjayB0cmFjZTpcbigufFxu
KSoiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiwgY2RhdGEpCisgICAg
ICAgICAgY2hpbGQubm9kZVZhbHVlID0gcmUuc3ViKHInXG5TdGFjayB0cmFjZTpcbigufFxuKSon
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywgY2RhdGEpCiAgICAgZm9y
IGNoaWxkIGluIGVsZW1lbnQuY2hpbGROb2RlczoKICAgICAgIGlmIGNoaWxkLm5vZGVUeXBlID09
IE5vZGUuRUxFTUVOVF9OT0RFOgogICAgICAgICBzZWxmLk5vcm1hbGl6ZVhtbChjaGlsZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5oIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9kdWN0aW9uLmgKaW5kZXggOGYxNmZmZmEyNDE2
YzU3MTUzZmFiM2UwOTdkMTM0YWYxZmI0YTliYy4uOThmZDVlNDc2Yzg4NGZhMTZiNDc4NmFkOGE4
ODUwY2Y2ZTRhYTljMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9w
cm9kdWN0aW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9kdWN0aW9u
LmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpZm5kZWYgR1RFU1RfVEVTVF9QUk9EVUNUSU9OX0hfCiAj
ZGVmaW5lIEdURVNUX1RFU1RfUFJPRFVDVElPTl9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Rf
cHJvZC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0X3Byb2QuaCIKIAogY2xhc3MgUHJpdmF0ZUNv
ZGUgewogIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
cnVuX3Rlc3RzX3V0aWwucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0
c191dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5ZTU3OTMxZWJhMmM2MTFl
MGExZjYwZmZmNGYwOTUzOWUxMDc2N2FkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3RzX3V0
aWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0NjYgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOCBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0j
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIi
UHJvdmlkZXMgZmFjaWxpdGllcyBmb3IgcnVubmluZyBTQ29ucy1idWlsdCBHb29nbGUgVGVzdC9N
b2NrIHRlc3RzLiIiIgotCi0KLWltcG9ydCBvcHRwYXJzZQotaW1wb3J0IG9zCi1pbXBvcnQgcmUK
LWltcG9ydCBzZXRzCi1pbXBvcnQgc3lzCi0KLXRyeToKLSAgIyBzdWJyb2Nlc3MgbW9kdWxlIGlz
IGEgcHJlZmVyYWJsZSB3YXkgdG8gaW52b2tlIHN1YnByb2Nlc3NlcyBidXQgaXQgbWF5Ci0gICMg
bm90IGJlIGF2YWlsYWJsZSBvbiBNYWNPUyBYIDEwLjQuCi0gICMgU3VwcHJlc3NlcyB0aGUgJ0lt
cG9ydCBub3QgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZScgbGludCBjb21wbGFpbnQuCi0gICMgcHls
aW50OiBkaXNhYmxlLW1zZz1DNjIwNAotICBpbXBvcnQgc3VicHJvY2VzcwotZXhjZXB0IEltcG9y
dEVycm9yOgotICBzdWJwcm9jZXNzID0gTm9uZQotCi1IRUxQX01TRyA9ICIiIlJ1bnMgdGhlIHNw
ZWNpZmllZCB0ZXN0cyBmb3IgJShwcm9qKXMuCi0KLVNZTk9QU0lTCi0gICAgICAgcnVuX3Rlc3Rz
LnB5IFtPUFRJT05dLi4uIFtCVUlMRF9ESVJdLi4uIFtURVNUXS4uLgotCi1ERVNDUklQVElPTgot
ICAgICAgIFJ1bnMgdGhlIHNwZWNpZmllZCB0ZXN0cyAoZWl0aGVyIGJpbmFyeSBvciBQeXRob24p
LCBhbmQgcHJpbnRzIGEKLSAgICAgICBzdW1tYXJ5IG9mIHRoZSByZXN1bHRzLiBCVUlMRF9ESVJT
IHdpbGwgYmUgdXNlZCB0byBzZWFyY2ggZm9yIHRoZQotICAgICAgIGJpbmFyaWVzLiBJZiBubyBU
RVNUcyBhcmUgc3BlY2lmaWVkLCBhbGwgYmluYXJ5IHRlc3RzIGZvdW5kIGluCi0gICAgICAgQlVJ
TERfRElScyBhbmQgYWxsIFB5dGhvbiB0ZXN0cyBmb3VuZCBpbiB0aGUgZGlyZWN0b3J5IHRlc3Qv
IChpbiB0aGUKLSAgICAgICAlKHByb2opcyByb290KSBhcmUgcnVuLgotCi0gICAgICAgVEVTVCBp
cyBhIG5hbWUgb2YgZWl0aGVyIGEgYmluYXJ5IG9yIGEgUHl0aG9uIHRlc3QuIEEgYmluYXJ5IHRl
c3QgaXMKLSAgICAgICBhbiBleGVjdXRhYmxlIGZpbGUgbmFtZWQgKl90ZXN0IG9yICpfdW5pdHRl
c3QgKHdpdGggdGhlIC5leGUKLSAgICAgICBleHRlbnNpb24gb24gV2luZG93cykgQSBQeXRob24g
dGVzdCBpcyBhIHNjcmlwdCBuYW1lZCAqX3Rlc3QucHkgb3IKLSAgICAgICAqX3VuaXR0ZXN0LnB5
LgotCi1PUFRJT05TCi0gICAgICAgLWgsIC0taGVscAotICAgICAgICAgICAgICBQcmludCB0aGlz
IGhlbHAgbWVzc2FnZS4KLSAgICAgICAtYyBDT05GSUdVUkFUSU9OUwotICAgICAgICAgICAgICBT
cGVjaWZ5IGJ1aWxkIGRpcmVjdG9yaWVzIHZpYSBidWlsZCBjb25maWd1cmF0aW9ucy4KLSAgICAg
ICAgICAgICAgQ09ORklHVVJBVElPTlMgaXMgZWl0aGVyIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qg
b2YgYnVpbGQKLSAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgb3IgJ2FsbCcuIEVhY2ggY29u
ZmlndXJhdGlvbiBpcyBlcXVpdmFsZW50IHRvCi0gICAgICAgICAgICAgIGFkZGluZyAnc2NvbnMv
YnVpbGQvPGNvbmZpZ3VyYXRpb24+LyUocHJvailzL3Njb25zJyB0byBCVUlMRF9ESVJzLgotICAg
ICAgICAgICAgICBTcGVjaWZ5aW5nIC1jPWFsbCBpcyBlcXVpdmFsZW50IHRvIHByb3ZpZGluZyBh
bGwgZGlyZWN0b3JpZXMKLSAgICAgICAgICAgICAgbGlzdGVkIGluIEtOT1dOIEJVSUxEIERJUkVD
VE9SSUVTIHNlY3Rpb24gYmVsb3cuCi0gICAgICAgLWEKLSAgICAgICAgICAgICAgRXF1aXZhbGVu
dCB0byAtYz1hbGwKLSAgICAgICAtYgotICAgICAgICAgICAgICBFcXVpdmFsZW50IHRvIC1jPWFs
bCB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCB0aGUgc2NyaXB0IHdpbGwgbm90Ci0gICAgICAgICAg
ICAgIGZhaWwgaWYgc29tZSBvZiB0aGUgS05PV04gQlVJTEQgRElSRUNUT1JJRVMgZG8gbm90IGV4
aXN0czsgdGhlCi0gICAgICAgICAgICAgIHNjcmlwdCB3aWxsIHNpbXBseSBub3QgcnVuIHRoZSB0
ZXN0cyB0aGVyZS4gJ2InIHN0YW5kcyBmb3IKLSAgICAgICAgICAgICAgJ2J1aWx0IGRpcmVjdG9y
aWVzJy4KLQotUkVUVVJOIFZBTFVFCi0gICAgICAgUmV0dXJucyAwIGlmIGFsbCB0ZXN0cyBhcmUg
c3VjY2Vzc2Z1bDsgb3RoZXJ3aXNlIHJldHVybnMgMS4KLQotRVhBTVBMRVMKLSAgICAgICBydW5f
dGVzdHMucHkKLSAgICAgICAgICAgICAgUnVucyBhbGwgdGVzdHMgZm9yIHRoZSBkZWZhdWx0IGJ1
aWxkIGNvbmZpZ3VyYXRpb24uCi0gICAgICAgcnVuX3Rlc3RzLnB5IC1hCi0gICAgICAgICAgICAg
IFJ1bnMgYWxsIHRlc3RzIHdpdGggYmluYXJpZXMgaW4gS05PV04gQlVJTEQgRElSRUNUT1JJRVMu
Ci0gICAgICAgcnVuX3Rlc3RzLnB5IC1iCi0gICAgICAgICAgICAgIFJ1bnMgYWxsIHRlc3RzIGlu
IEtOT1dOIEJVSUxEIERJUkVDVE9SSUVTIHRoYXQgaGF2ZSBiZWVuCi0gICAgICAgICAgICAgIGJ1
aWx0LgotICAgICAgIHJ1bl90ZXN0cy5weSBmb28vCi0gICAgICAgICAgICAgIFJ1bnMgYWxsIHRl
c3RzIGluIHRoZSBmb28vIGRpcmVjdG9yeSBhbmQgYWxsIFB5dGhvbiB0ZXN0cyBpbgotICAgICAg
ICAgICAgICB0aGUgZGlyZWN0b3J5IHRlc3QuIFRoZSBQeXRob24gdGVzdHMgYXJlIGluc3RydWN0
ZWQgdG8gbG9vawotICAgICAgICAgICAgICBmb3IgYmluYXJpZXMgaW4gZm9vLy4KLSAgICAgICBy
dW5fdGVzdHMucHkgYmFyX3Rlc3QuZXhlIHRlc3QvYmF6X3Rlc3QuZXhlIGZvby8gYmFyLwotICAg
ICAgICAgICAgICBSdW5zIGZvby9iYXJfdGVzdC5leGUsIGJhci9iYXJfdGVzdC5leGUsIGZvby9i
YXpfdGVzdC5leGUsIGFuZAotICAgICAgICAgICAgICBiYXIvYmF6X3Rlc3QuZXhlLgotICAgICAg
IHJ1bl90ZXN0cy5weSBmb28gYmFyIHRlc3QvZm9vX3Rlc3QucHkKLSAgICAgICAgICAgICAgUnVu
cyB0ZXN0L2Zvb190ZXN0LnB5IHR3aWNlIGluc3RydWN0aW5nIGl0IHRvIGxvb2sgZm9yIGl0cwot
ICAgICAgICAgICAgICB0ZXN0IGJpbmFyaWVzIGluIHRoZSBkaXJlY3RvcmllcyBmb28gYW5kIGJh
ciwKLSAgICAgICAgICAgICAgY29ycmVzcG9uZGluZ2x5LgotCi1LTk9XTiBCVUlMRCBESVJFQ1RP
UklFUwotICAgICAgcnVuX3Rlc3RzLnB5IGtub3dzIGFib3V0IGRpcmVjdG9yaWVzIHdoZXJlIHRo
ZSBTQ29ucyBidWlsZCBzY3JpcHQKLSAgICAgIGRlcG9zaXRzIGl0cyBwcm9kdWN0cy4gVGhlc2Ug
YXJlIHRoZSBkaXJlY3RvcmllcyB3aGVyZSBydW5fdGVzdHMucHkKLSAgICAgIHdpbGwgYmUgbG9v
a2luZyBmb3IgaXRzIGJpbmFyaWVzLiBDdXJyZW50bHksICUocHJvailzJ3MgU0NvbnN0cnVjdCBm
aWxlCi0gICAgICBkZWZpbmVzIHRoZW0gYXMgZm9sbG93cyAodGhlIGRlZmF1bHQgYnVpbGQgZGly
ZWN0b3J5IGlzIHRoZSBmaXJzdCBvbmUKLSAgICAgIGxpc3RlZCBpbiBlYWNoIGdyb3VwKToKLSAg
ICAgIE9uIFdpbmRvd3M6Ci0gICAgICAgICAgICAgIDwlKHByb2opcyByb290Pi9zY29ucy9idWls
ZC93aW4tZGJnOC8lKHByb2opcy9zY29ucy8KLSAgICAgICAgICAgICAgPCUocHJvailzIHJvb3Q+
L3Njb25zL2J1aWxkL3dpbi1vcHQ4LyUocHJvailzL3Njb25zLwotICAgICAgT24gTWFjOgotICAg
ICAgICAgICAgICA8JShwcm9qKXMgcm9vdD4vc2NvbnMvYnVpbGQvbWFjLWRiZy8lKHByb2opcy9z
Y29ucy8KLSAgICAgICAgICAgICAgPCUocHJvailzIHJvb3Q+L3Njb25zL2J1aWxkL21hYy1vcHQv
JShwcm9qKXMvc2NvbnMvCi0gICAgICBPbiBvdGhlciBwbGF0Zm9ybXM6Ci0gICAgICAgICAgICAg
IDwlKHByb2opcyByb290Pi9zY29ucy9idWlsZC9kYmcvJShwcm9qKXMvc2NvbnMvCi0gICAgICAg
ICAgICAgIDwlKHByb2opcyByb290Pi9zY29ucy9idWlsZC9vcHQvJShwcm9qKXMvc2NvbnMvIiIi
Ci0KLUlTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdudCcKLUlTX01BQyA9IG9zLm5hbWUgPT0gJ3Bv
c2l4JyBhbmQgb3MudW5hbWUoKVswXSA9PSAnRGFyd2luJwotSVNfQ1lHV0lOID0gb3MubmFtZSA9
PSAncG9zaXgnIGFuZCAnQ1lHV0lOJyBpbiBvcy51bmFtZSgpWzBdCi0KLSMgRGVmaW5pdGlvbiBv
ZiBDT05GSUdTIG11c3QgbWF0Y2ggdGhhdCBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5IG5hbWVzIGlu
IHRoZQotIyBTQ29uc3RydWN0IHNjcmlwdC4gVGhlIGZpcnN0IGxpc3QgaXRlbSBpcyB0aGUgZGVm
YXVsdCBidWlsZCBjb25maWd1cmF0aW9uLgotaWYgSVNfV0lORE9XUzoKLSAgQ09ORklHUyA9ICgn
d2luLWRiZzgnLCAnd2luLW9wdDgnKQotZWxpZiBJU19NQUM6Ci0gIENPTkZJR1MgPSAoJ21hYy1k
YmcnLCAnbWFjLW9wdCcpCi1lbHNlOgotICBDT05GSUdTID0gKCdkYmcnLCAnb3B0JykKLQotaWYg
SVNfV0lORE9XUyBvciBJU19DWUdXSU46Ci0gIFBZVEhPTl9URVNUX1JFR0VYID0gcmUuY29tcGls
ZShyJ18odW5pdCk/dGVzdFwucHkkJywgcmUuSUdOT1JFQ0FTRSkKLSAgQklOQVJZX1RFU1RfUkVH
RVggPSByZS5jb21waWxlKHInXyh1bml0KT90ZXN0KFwuZXhlKT8kJywgcmUuSUdOT1JFQ0FTRSkK
LSAgQklOQVJZX1RFU1RfU0VBUkNIX1JFR0VYID0gcmUuY29tcGlsZShyJ18odW5pdCk/dGVzdFwu
ZXhlJCcsIHJlLklHTk9SRUNBU0UpCi1lbHNlOgotICBQWVRIT05fVEVTVF9SRUdFWCA9IHJlLmNv
bXBpbGUocidfKHVuaXQpP3Rlc3RcLnB5JCcpCi0gIEJJTkFSWV9URVNUX1JFR0VYID0gcmUuY29t
cGlsZShyJ18odW5pdCk/dGVzdCQnKQotICBCSU5BUllfVEVTVF9TRUFSQ0hfUkVHRVggPSBCSU5B
UllfVEVTVF9SRUdFWAotCi0KLWRlZiBfR2V0R3Rlc3RCdWlsZERpcihpbmplY3RlZF9vcywgc2Ny
aXB0X2RpciwgY29uZmlnKToKLSAgIiIiQ2FsY3VsYXRlcyBwYXRoIHRvIHRoZSBHb29nbGUgVGVz
dCBTQ29ucyBidWlsZCBkaXJlY3RvcnkuIiIiCi0KLSAgcmV0dXJuIGluamVjdGVkX29zLnBhdGgu
bm9ybXBhdGgoaW5qZWN0ZWRfb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NvbnMvYnVpbGQn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2d0ZXN0L3Njb25zJykpCi0KLQotZGVmIF9HZXRDb25maWdGcm9tQnVpbGRE
aXIoYnVpbGRfZGlyKToKLSAgIiIiRXh0cmFjdHMgdGhlIGNvbmZpZ3VyYXRpb24gbmFtZSBmcm9t
IHRoZSBidWlsZCBkaXJlY3RvcnkuIiIiCi0KLSAgIyBXZSBkb24ndCB3YW50IHRvIGRlcGVuZCBv
biBidWlsZF9kaXIgY29udGFpbmluZyB0aGUgY29ycmVjdCBwYXRoCi0gICMgc2VwYXJhdG9ycy4K
LSAgbSA9IHJlLm1hdGNoKHInLipbXFwvXShbXlxcL10rKVtcXC9dW15cXC9dK1tcXC9dc2NvbnNb
XFwvXT8kJywgYnVpbGRfZGlyKQotICBpZiBtOgotICAgIHJldHVybiBtLmdyb3VwKDEpCi0gIGVs
c2U6Ci0gICAgcHJpbnQgPj5zeXMuc3RkZXJyLCAoJyVzIGlzIGFuIGludmFsaWQgYnVpbGQgZGly
ZWN0b3J5IHRoYXQgZG9lcyBub3QgJwotICAgICAgICAgICAgICAgICAgICAgICAgICdjb3JyZXNw
b25kIHRvIGFueSBjb25maWd1cmF0aW9uLicgJSAoYnVpbGRfZGlyLCkpCi0gICAgcmV0dXJuICcn
Ci0KLQotIyBBbGwgcGF0aHMgaW4gdGhpcyBzY3JpcHQgYXJlIGVpdGhlciBhYnNvbHV0ZSBvciBy
ZWxhdGl2ZSB0byB0aGUgY3VycmVudAotIyB3b3JraW5nIGRpcmVjdG9yeSwgdW5sZXNzIG90aGVy
d2lzZSBzcGVjaWZpZWQuCi1jbGFzcyBUZXN0UnVubmVyKG9iamVjdCk6Ci0gICIiIlByb3ZpZGVz
IGZhY2lsaXRpZXMgZm9yIHJ1bm5pbmcgUHl0aG9uIGFuZCBiaW5hcnkgdGVzdHMgZm9yIEdvb2ds
ZSBUZXN0LiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLAotICAgICAgICAgICAgICAgc2NyaXB0
X2RpciwKLSAgICAgICAgICAgICAgIGJ1aWxkX2Rpcl92YXJfbmFtZT0nR1RFU1RfQlVJTERfRElS
JywKLSAgICAgICAgICAgICAgIGluamVjdGVkX29zPW9zLAotICAgICAgICAgICAgICAgaW5qZWN0
ZWRfc3VicHJvY2Vzcz1zdWJwcm9jZXNzLAotICAgICAgICAgICAgICAgaW5qZWN0ZWRfYnVpbGRf
ZGlyX2ZpbmRlcj1fR2V0R3Rlc3RCdWlsZERpcik6Ci0gICAgIiIiSW5pdGlhbGl6ZXMgYSBUZXN0
UnVubmVyIGluc3RhbmNlLgotCi0gICAgQXJnczoKLSAgICAgIHNjcmlwdF9kaXI6ICAgICAgICAg
ICAgICAgIEZpbGUgcGF0aCB0byB0aGUgY2FsbGluZyBzY3JpcHQuCi0gICAgICBidWlsZF9kaXJf
dmFyX25hbWU6ICAgICAgICBOYW1lIG9mIHRoZSBlbnYgdmFyaWFibGUgdXNlZCB0byBwYXNzIHRo
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIGRpcmVjdG9yeSBw
YXRoIHRvIHRoZSBpbnZva2VkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
cy4KLSAgICAgIGluamVjdGVkX29zOiAgICAgICAgICAgICAgIHN0YW5kYXJkIG9zIG1vZHVsZSBv
ciBhIG1vY2svc3R1YiBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rp
bmcuCi0gICAgICBpbmplY3RlZF9zdWJwcm9jZXNzOiAgICAgICBzdGFuZGFyZCBzdWJwcm9jZXNz
IG1vZHVsZSBvciBhIG1vY2svc3R1YgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yIHRlc3RpbmcKLSAgICAgIGluamVjdGVkX2J1aWxkX2Rpcl9maW5kZXI6IGZ1bmN0aW9uIHRo
YXQgZGV0ZXJtaW5lcyB0aGUgcGF0aCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KLSAgICAiIiIKLQotICAgIHNlbGYub3MgPSBpbmplY3Rl
ZF9vcwotICAgIHNlbGYuc3VicHJvY2VzcyA9IGluamVjdGVkX3N1YnByb2Nlc3MKLSAgICBzZWxm
LmJ1aWxkX2Rpcl9maW5kZXIgPSBpbmplY3RlZF9idWlsZF9kaXJfZmluZGVyCi0gICAgc2VsZi5i
dWlsZF9kaXJfdmFyX25hbWUgPSBidWlsZF9kaXJfdmFyX25hbWUKLSAgICBzZWxmLnNjcmlwdF9k
aXIgPSBzY3JpcHRfZGlyCi0KLSAgZGVmIF9HZXRCdWlsZERpckZvckNvbmZpZyhzZWxmLCBjb25m
aWcpOgotICAgICIiIlJldHVybnMgdGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgYSBnaXZlbiBjb25m
aWd1cmF0aW9uLiIiIgotCi0gICAgcmV0dXJuIHNlbGYuYnVpbGRfZGlyX2ZpbmRlcihzZWxmLm9z
LCBzZWxmLnNjcmlwdF9kaXIsIGNvbmZpZykKLQotICBkZWYgX1J1bihzZWxmLCBhcmdzKToKLSAg
ICAiIiJSdW5zIHRoZSBleGVjdXRhYmxlIHdpdGggZ2l2ZW4gYXJncyAoYXJnc1swXSBpcyB0aGUg
ZXhlY3V0YWJsZSBuYW1lKS4KLQotICAgIEFyZ3M6Ci0gICAgICBhcmdzOiBDb21tYW5kIGxpbmUg
YXJndW1lbnRzIGZvciB0aGUgcHJvY2Vzcy4KLQotICAgIFJldHVybnM6Ci0gICAgICBQcm9jZXNz
J3MgZXhpdCBjb2RlIGlmIGl0IGV4aXRzIG5vcm1hbGx5LCBvciAtc2lnbmFsIGlmIHRoZSBwcm9j
ZXNzIGlzCi0gICAgICBraWxsZWQgYnkgYSBzaWduYWwuCi0gICAgIiIiCi0KLSAgICBpZiBzZWxm
LnN1YnByb2Nlc3M6Ci0gICAgICByZXR1cm4gc2VsZi5zdWJwcm9jZXNzLlBvcGVuKGFyZ3MpLndh
aXQoKQotICAgIGVsc2U6Ci0gICAgICByZXR1cm4gc2VsZi5vcy5zcGF3bnYoc2VsZi5vcy5QX1dB
SVQsIGFyZ3NbMF0sIGFyZ3MpCi0KLSAgZGVmIF9SdW5CaW5hcnlUZXN0KHNlbGYsIHRlc3QpOgot
ICAgICIiIlJ1bnMgdGhlIGJpbmFyeSB0ZXN0IGdpdmVuIGl0cyBwYXRoLgotCi0gICAgQXJnczoK
LSAgICAgIHRlc3Q6IFBhdGggdG8gdGhlIHRlc3QgYmluYXJ5LgotCi0gICAgUmV0dXJuczoKLSAg
ICAgIFByb2Nlc3MncyBleGl0IGNvZGUgaWYgaXQgZXhpdHMgbm9ybWFsbHksIG9yIC1zaWduYWwg
aWYgdGhlIHByb2Nlc3MgaXMKLSAgICAgIGtpbGxlZCBieSBhIHNpZ25hbC4KLSAgICAiIiIKLQot
ICAgIHJldHVybiBzZWxmLl9SdW4oW3Rlc3RdKQotCi0gIGRlZiBfUnVuUHl0aG9uVGVzdChzZWxm
LCB0ZXN0LCBidWlsZF9kaXIpOgotICAgICIiIlJ1bnMgdGhlIFB5dGhvbiB0ZXN0IHNjcmlwdCB3
aXRoIHRoZSBzcGVjaWZpZWQgYnVpbGQgZGlyZWN0b3J5LgotCi0gICAgQXJnczoKLSAgICAgIHRl
c3Q6IFBhdGggdG8gdGhlIHRlc3QncyBQeXRob24gc2NyaXB0LgotICAgICAgYnVpbGRfZGlyOiBQ
YXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHRlc3QgYmluYXJ5IGlzIHRvIGJlIGZvdW5k
LgotCi0gICAgUmV0dXJuczoKLSAgICAgIFByb2Nlc3MncyBleGl0IGNvZGUgaWYgaXQgZXhpdHMg
bm9ybWFsbHksIG9yIC1zaWduYWwgaWYgdGhlIHByb2Nlc3MgaXMKLSAgICAgIGtpbGxlZCBieSBh
IHNpZ25hbC4KLSAgICAiIiIKLQotICAgIG9sZF9idWlsZF9kaXIgPSBzZWxmLm9zLmVudmlyb24u
Z2V0KHNlbGYuYnVpbGRfZGlyX3Zhcl9uYW1lKQotCi0gICAgdHJ5OgotICAgICAgc2VsZi5vcy5l
bnZpcm9uW3NlbGYuYnVpbGRfZGlyX3Zhcl9uYW1lXSA9IGJ1aWxkX2RpcgotCi0gICAgICAjIElm
IHRoaXMgc2NyaXB0IGlzIHJ1biBvbiBhIFdpbmRvd3MgbWFjaGluZSB0aGF0IGhhcyBubyBhc3Nv
Y2lhdGlvbgotICAgICAgIyBiZXR3ZWVuIHRoZSAucHkgZXh0ZW5zaW9uIGFuZCBhIHB5dGhvbiBp
bnRlcnByZXRlciwgc2ltcGx5IHBhc3NpbmcKLSAgICAgICMgdGhlIHNjcmlwdCBuYW1lIGludG8g
c3VicHJvY2Vzcy5Qb3Blbi9vcy5zcGF3biB3aWxsIG5vdCB3b3JrLgotICAgICAgcHJpbnQgJ1J1
bm5pbmcgJXMgLiAuIC4nICUgKHRlc3QsKQotICAgICAgcmV0dXJuIHNlbGYuX1J1bihbc3lzLmV4
ZWN1dGFibGUsIHRlc3RdKQotCi0gICAgZmluYWxseToKLSAgICAgIGlmIG9sZF9idWlsZF9kaXIg
aXMgTm9uZToKLSAgICAgICAgZGVsIHNlbGYub3MuZW52aXJvbltzZWxmLmJ1aWxkX2Rpcl92YXJf
bmFtZV0KLSAgICAgIGVsc2U6Ci0gICAgICAgIHNlbGYub3MuZW52aXJvbltzZWxmLmJ1aWxkX2Rp
cl92YXJfbmFtZV0gPSBvbGRfYnVpbGRfZGlyCi0KLSAgZGVmIF9GaW5kRmlsZXNCeVJlZ2V4KHNl
bGYsIGRpcmVjdG9yeSwgcmVnZXgpOgotICAgICIiIlJldHVybnMgZmlsZXMgaW4gYSBkaXJlY3Rv
cnkgd2hvc2UgbmFtZXMgbWF0Y2ggYSByZWd1bGFyIGV4cHJlc3Npb24uCi0KLSAgICBBcmdzOgot
ICAgICAgZGlyZWN0b3J5OiBQYXRoIHRvIHRoZSBkaXJlY3RvcnkgdG8gc2VhcmNoIGZvciBmaWxl
cy4KLSAgICAgIHJlZ2V4OiBSZWd1bGFyIGV4cHJlc3Npb24gdG8gZmlsdGVyIGZpbGUgbmFtZXMu
Ci0KLSAgICBSZXR1cm5zOgotICAgICAgVGhlIGxpc3Qgb2YgdGhlIHBhdGhzIHRvIHRoZSBmaWxl
cyBpbiB0aGUgZGlyZWN0b3J5LgotICAgICIiIgotCi0gICAgcmV0dXJuIFtzZWxmLm9zLnBhdGgu
am9pbihkaXJlY3RvcnksIGZpbGVfbmFtZSkKLSAgICAgICAgICAgIGZvciBmaWxlX25hbWUgaW4g
c2VsZi5vcy5saXN0ZGlyKGRpcmVjdG9yeSkKLSAgICAgICAgICAgIGlmIHJlLnNlYXJjaChyZWdl
eCwgZmlsZV9uYW1lKV0KLQotICAjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEltcGxlbWVudCBw
YXJzaW5nIG9mIHNjb25zL1NDb25zY3JpcHQgdG8gcnVuIGFsbAotICAjIHRlc3RzIGRlZmluZWQg
dGhlcmUgd2hlbiBubyB0ZXN0cyBhcmUgc3BlY2lmaWVkLgotICAjIFRPRE8odmxhZGxAZ29vZ2xl
LmNvbSk6IFVwZGF0ZSB0aGUgZG9jc3RyaW5nIGFmdGVyIHRoZSBjb2RlIGlzIGNoYW5nZWQgdG8K
LSAgIyB0cnkgdG8gdGVzdCBhbGwgYnVpbGRzIGRlZmluZWQgaW4gc2NvbnMvU0NvbnNjcmlwdC4K
LSAgZGVmIEdldFRlc3RzVG9SdW4oc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgYXJncywKLSAg
ICAgICAgICAgICAgICAgICAgbmFtZWRfY29uZmlndXJhdGlvbnMsCi0gICAgICAgICAgICAgICAg
ICAgIGJ1aWx0X2NvbmZpZ3VyYXRpb25zLAotICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVf
Y29uZmlndXJhdGlvbnM9Q09ORklHUywKLSAgICAgICAgICAgICAgICAgICAgcHl0aG9uX3Rlc3Rz
X3RvX3NraXA9Tm9uZSk6Ci0gICAgIiIiRGV0ZXJtaW5lcyB3aGF0IHRlc3RzIHNob3VsZCBiZSBy
dW4uCi0KLSAgICBBcmdzOgotICAgICAgYXJnczogVGhlIGxpc3Qgb2Ygbm9uLW9wdGlvbiBhcmd1
bWVudHMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgotICAgICAgbmFtZWRfY29uZmlndXJhdGlvbnM6
IFRoZSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIHNwZWNpZmllZCB2aWEgLWMgb3IgLWEuCi0gICAg
ICBidWlsdF9jb25maWd1cmF0aW9uczogVHJ1ZSBpZiAtYiBoYXMgYmVlbiBzcGVjaWZpZWQuCi0g
ICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM6IGEgbGlzdCBvZiBjb25maWd1cmF0aW9ucyBh
dmFpbGFibGUgb24gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCBwbGF0
Zm9ybSwgaW5qZWN0YWJsZSBmb3IgdGVzdGluZy4KLSAgICAgIHB5dGhvbl90ZXN0c190b19za2lw
OiBhIGNvbGxlY3Rpb24gb2YgKGNvbmZpZ3VyYXRpb24sIHB5dGhvbiB0ZXN0IG5hbWUpcwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgbmVlZCB0byBiZSBza2lwcGVkLgotCi0gICAg
UmV0dXJuczoKLSAgICAgIEEgdHVwbGUgd2l0aCAyIGVsZW1lbnRzOiB0aGUgbGlzdCBvZiBQeXRo
b24gdGVzdHMgdG8gcnVuIGFuZCB0aGUgbGlzdCBvZgotICAgICAgYmluYXJ5IHRlc3RzIHRvIHJ1
bi4KLSAgICAiIiIKLQotICAgIGlmIG5hbWVkX2NvbmZpZ3VyYXRpb25zID09ICdhbGwnOgotICAg
ICAgbmFtZWRfY29uZmlndXJhdGlvbnMgPSAnLCcuam9pbihhdmFpbGFibGVfY29uZmlndXJhdGlv
bnMpCi0KLSAgICBub3JtYWxpemVkX2FyZ3MgPSBbc2VsZi5vcy5wYXRoLm5vcm1wYXRoKGFyZykg
Zm9yIGFyZyBpbiBhcmdzXQotCi0gICAgIyBBIGZpbmFsIGxpc3Qgb2YgYnVpbGQgZGlyZWN0b3Jp
ZXMgd2hpY2ggd2lsbCBiZSBzZWFyY2hlZCBmb3IgdGhlIHRlc3QKLSAgICAjIGJpbmFyaWVzLiBG
aXJzdCwgYWRkIGRpcmVjdG9yaWVzIHNwZWNpZmllZCBkaXJlY3RseSBvbiB0aGUgY29tbWFuZAot
ICAgICMgbGluZS4KLSAgICBidWlsZF9kaXJzID0gZmlsdGVyKHNlbGYub3MucGF0aC5pc2Rpciwg
bm9ybWFsaXplZF9hcmdzKQotCi0gICAgIyBBZGRzIGJ1aWxkIGRpcmVjdG9yaWVzIHNwZWNpZmll
ZCB2aWEgdGhlaXIgYnVpbGQgY29uZmlndXJhdGlvbnMgdXNpbmcKLSAgICAjIHRoZSAtYyBvciAt
YSBvcHRpb25zLgotICAgIGlmIG5hbWVkX2NvbmZpZ3VyYXRpb25zOgotICAgICAgYnVpbGRfZGly
cyArPSBbc2VsZi5fR2V0QnVpbGREaXJGb3JDb25maWcoY29uZmlnKQotICAgICAgICAgICAgICAg
ICAgICAgZm9yIGNvbmZpZyBpbiBuYW1lZF9jb25maWd1cmF0aW9ucy5zcGxpdCgnLCcpXQotCi0g
ICAgIyBBZGRzIEtOT1dOIEJVSUxEIERJUkVDVE9SSUVTIGlmIC1iIGlzIHNwZWNpZmllZC4KLSAg
ICBpZiBidWlsdF9jb25maWd1cmF0aW9uczoKLSAgICAgIGJ1aWxkX2RpcnMgKz0gW3NlbGYuX0dl
dEJ1aWxkRGlyRm9yQ29uZmlnKGNvbmZpZykKLSAgICAgICAgICAgICAgICAgICAgIGZvciBjb25m
aWcgaW4gYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zCi0gICAgICAgICAgICAgICAgICAgICBpZiBz
ZWxmLm9zLnBhdGguaXNkaXIoc2VsZi5fR2V0QnVpbGREaXJGb3JDb25maWcoY29uZmlnKSldCi0K
LSAgICAjIElmIG5vIGRpcmVjdG9yaWVzIHdlcmUgc3BlY2lmaWVkIGVpdGhlciB2aWEgLWEsIC1i
LCAtYywgb3IgZGlyZWN0bHksIHVzZQotICAgICMgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbi4K
LSAgICBlbGlmIG5vdCBidWlsZF9kaXJzOgotICAgICAgYnVpbGRfZGlycyA9IFtzZWxmLl9HZXRC
dWlsZERpckZvckNvbmZpZyhhdmFpbGFibGVfY29uZmlndXJhdGlvbnNbMF0pXQotCi0gICAgIyBN
YWtlcyBzdXJlIHRoZXJlIGFyZSBubyBkdXBsaWNhdGlvbnMuCi0gICAgYnVpbGRfZGlycyA9IHNl
dHMuU2V0KGJ1aWxkX2RpcnMpCi0KLSAgICBlcnJvcnNfZm91bmQgPSBGYWxzZQotICAgIGxpc3Rl
ZF9weXRob25fdGVzdHMgPSBbXSAgIyBBbGwgUHl0aG9uIHRlc3RzIGxpc3RlZCBvbiB0aGUgY29t
bWFuZCBsaW5lLgotICAgIGxpc3RlZF9iaW5hcnlfdGVzdHMgPSBbXSAgIyBBbGwgYmluYXJ5IHRl
c3RzIGxpc3RlZCBvbiB0aGUgY29tbWFuZCBsaW5lLgotCi0gICAgdGVzdF9kaXIgPSBzZWxmLm9z
LnBhdGgubm9ybXBhdGgoc2VsZi5vcy5wYXRoLmpvaW4oc2VsZi5zY3JpcHRfZGlyLCAndGVzdCcp
KQotCi0gICAgIyBTaWZ0cyB0aHJvdWdoIG5vbi1kaXJlY3RvcnkgYXJndW1lbnRzIGZpc2hpbmcg
Zm9yIGFueSBQeXRob24gb3IgYmluYXJ5Ci0gICAgIyB0ZXN0cyBhbmQgZGV0ZWN0aW5nIGVycm9y
cy4KLSAgICBmb3IgYXJndW1lbnQgaW4gc2V0cy5TZXQobm9ybWFsaXplZF9hcmdzKSAtIGJ1aWxk
X2RpcnM6Ci0gICAgICBpZiByZS5zZWFyY2goUFlUSE9OX1RFU1RfUkVHRVgsIGFyZ3VtZW50KToK
LSAgICAgICAgcHl0aG9uX3BhdGggPSBzZWxmLm9zLnBhdGguam9pbih0ZXN0X2RpciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9zLnBhdGguYmFzZW5hbWUo
YXJndW1lbnQpKQotICAgICAgICBpZiBzZWxmLm9zLnBhdGguaXNmaWxlKHB5dGhvbl9wYXRoKToK
LSAgICAgICAgICBsaXN0ZWRfcHl0aG9uX3Rlc3RzLmFwcGVuZChweXRob25fcGF0aCkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdVbmFibGUgdG8gZmluZCBQeXRo
b24gdGVzdCAlcycgJSBhcmd1bWVudCkKLSAgICAgICAgICBlcnJvcnNfZm91bmQgPSBUcnVlCi0g
ICAgICBlbGlmIHJlLnNlYXJjaChCSU5BUllfVEVTVF9SRUdFWCwgYXJndW1lbnQpOgotICAgICAg
ICAjIFRoaXMgc2NyaXB0IGFsc28gYWNjZXB0cyBiaW5hcnkgdGVzdCBuYW1lcyBwcmVmaXhlZCB3
aXRoIHRlc3QvIGZvcgotICAgICAgICAjIHRoZSBjb252ZW5pZW5jZSBvZiB0eXBpbmcgdGhlbSAo
Y2FuIHVzZSBwYXRoIGNvbXBsZXRpb25zIGluIHRoZQotICAgICAgICAjIHNoZWxsKS4gIFN0cmlw
cyB0ZXN0LyBwcmVmaXggZnJvbSB0aGUgYmluYXJ5IHRlc3QgbmFtZXMuCi0gICAgICAgIGxpc3Rl
ZF9iaW5hcnlfdGVzdHMuYXBwZW5kKHNlbGYub3MucGF0aC5iYXNlbmFtZShhcmd1bWVudCkpCi0g
ICAgICBlbHNlOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCclcyBpcyBuZWl0aGVyIHRlc3Qg
bm9yIGJ1aWxkIGRpcmVjdG9yeScgJSBhcmd1bWVudCkKLSAgICAgICAgZXJyb3JzX2ZvdW5kID0g
VHJ1ZQotCi0gICAgaWYgZXJyb3JzX2ZvdW5kOgotICAgICAgcmV0dXJuIE5vbmUKLQotICAgIHVz
ZXJfaGFzX2xpc3RlZF90ZXN0cyA9IGxpc3RlZF9weXRob25fdGVzdHMgb3IgbGlzdGVkX2JpbmFy
eV90ZXN0cwotCi0gICAgaWYgdXNlcl9oYXNfbGlzdGVkX3Rlc3RzOgotICAgICAgc2VsZWN0ZWRf
cHl0aG9uX3Rlc3RzID0gbGlzdGVkX3B5dGhvbl90ZXN0cwotICAgIGVsc2U6Ci0gICAgICBzZWxl
Y3RlZF9weXRob25fdGVzdHMgPSBzZWxmLl9GaW5kRmlsZXNCeVJlZ2V4KHRlc3RfZGlyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWVRIT05f
VEVTVF9SRUdFWCkKLQotICAgICMgVE9ETyh2bGFkbEBnb29nbGUuY29tKTogc2tpcCB1bmJ1aWx0
IFB5dGhvbiB0ZXN0cyB3aGVuIC1iIGlzIHNwZWNpZmllZC4KLSAgICBweXRob25fdGVzdF9wYWly
cyA9IFtdCi0gICAgZm9yIGRpcmVjdG9yeSBpbiBidWlsZF9kaXJzOgotICAgICAgZm9yIHRlc3Qg
aW4gc2VsZWN0ZWRfcHl0aG9uX3Rlc3RzOgotICAgICAgICBjb25maWcgPSBfR2V0Q29uZmlnRnJv
bUJ1aWxkRGlyKGRpcmVjdG9yeSkKLSAgICAgICAgZmlsZV9uYW1lID0gb3MucGF0aC5iYXNlbmFt
ZSh0ZXN0KQotICAgICAgICBpZiBweXRob25fdGVzdHNfdG9fc2tpcCBhbmQgKGNvbmZpZywgZmls
ZV9uYW1lKSBpbiBweXRob25fdGVzdHNfdG9fc2tpcDoKLSAgICAgICAgICBwcmludCAoJ05PVEU6
ICVzIGlzIHNraXBwZWQgZm9yIGNvbmZpZ3VyYXRpb24gJXMsIGFzIGl0IGRvZXMgbm90ICcKLSAg
ICAgICAgICAgICAgICAgJ3dvcmsgdGhlcmUuJyAlIChmaWxlX25hbWUsIGNvbmZpZykpCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgcHl0aG9uX3Rlc3RfcGFpcnMuYXBwZW5kKChkaXJlY3Rvcnks
IHRlc3QpKQotCi0gICAgYmluYXJ5X3Rlc3RfcGFpcnMgPSBbXQotICAgIGZvciBkaXJlY3Rvcnkg
aW4gYnVpbGRfZGlyczoKLSAgICAgIGlmIHVzZXJfaGFzX2xpc3RlZF90ZXN0czoKLSAgICAgICAg
YmluYXJ5X3Rlc3RfcGFpcnMuZXh0ZW5kKAotICAgICAgICAgICAgWyhkaXJlY3RvcnksIHNlbGYu
b3MucGF0aC5qb2luKGRpcmVjdG9yeSwgdGVzdCkpCi0gICAgICAgICAgICAgZm9yIHRlc3QgaW4g
bGlzdGVkX2JpbmFyeV90ZXN0c10pCi0gICAgICBlbHNlOgotICAgICAgICB0ZXN0cyA9IHNlbGYu
X0ZpbmRGaWxlc0J5UmVnZXgoZGlyZWN0b3J5LCBCSU5BUllfVEVTVF9TRUFSQ0hfUkVHRVgpCi0g
ICAgICAgIGJpbmFyeV90ZXN0X3BhaXJzLmV4dGVuZChbKGRpcmVjdG9yeSwgdGVzdCkgZm9yIHRl
c3QgaW4gdGVzdHNdKQotCi0gICAgcmV0dXJuIChweXRob25fdGVzdF9wYWlycywgYmluYXJ5X3Rl
c3RfcGFpcnMpCi0KLSAgZGVmIFJ1blRlc3RzKHNlbGYsIHB5dGhvbl90ZXN0cywgYmluYXJ5X3Rl
c3RzKToKLSAgICAiIiJSdW5zIFB5dGhvbiBhbmQgYmluYXJ5IHRlc3RzIGFuZCByZXBvcnRzIHJl
c3VsdHMgdG8gdGhlIHN0YW5kYXJkIG91dHB1dC4KLQotICAgIEFyZ3M6Ci0gICAgICBweXRob25f
dGVzdHM6IExpc3Qgb2YgUHl0aG9uIHRlc3RzIHRvIHJ1biBpbiB0aGUgZm9ybSBvZiB0dXBsZXMK
LSAgICAgICAgICAgICAgICAgICAgKGJ1aWxkIGRpcmVjdG9yeSwgUHl0aG9uIHRlc3Qgc2NyaXB0
KS4KLSAgICAgIGJpbmFyeV90ZXN0czogTGlzdCBvZiBiaW5hcnkgdGVzdHMgdG8gcnVuIGluIHRo
ZSBmb3JtIG9mIHR1cGxlcwotICAgICAgICAgICAgICAgICAgICAoYnVpbGQgZGlyZWN0b3J5LCBi
aW5hcnkgZmlsZSkuCi0KLSAgICBSZXR1cm5zOgotICAgICAgVGhlIGV4aXQgY29kZSB0aGUgcHJv
Z3JhbSBzaG91bGQgcGFzcyBpbnRvIHN5cy5leGl0KCkuCi0gICAgIiIiCi0KLSAgICBpZiBweXRo
b25fdGVzdHMgb3IgYmluYXJ5X3Rlc3RzOgotICAgICAgcmVzdWx0cyA9IFtdCi0gICAgICBmb3Ig
ZGlyZWN0b3J5LCB0ZXN0IGluIHB5dGhvbl90ZXN0czoKLSAgICAgICAgcmVzdWx0cy5hcHBlbmQo
KGRpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9SdW5QeXRob25UZXN0KHRlc3QsIGRpcmVjdG9yeSkgPT0gMCkpCi0g
ICAgICBmb3IgZGlyZWN0b3J5LCB0ZXN0IGluIGJpbmFyeV90ZXN0czoKLSAgICAgICAgcmVzdWx0
cy5hcHBlbmQoKGRpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub3MucGF0
aC5iYXNlbmFtZSh0ZXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX1J1bkJpbmFy
eVRlc3QodGVzdCkgPT0gMCkpCi0KLSAgICAgIGZhaWxlZCA9IFsoZGlyZWN0b3J5LCB0ZXN0KQot
ICAgICAgICAgICAgICAgIGZvciAoZGlyZWN0b3J5LCB0ZXN0LCBzdWNjZXNzKSBpbiByZXN1bHRz
Ci0gICAgICAgICAgICAgICAgaWYgbm90IHN1Y2Nlc3NdCi0gICAgICBwcmludAotICAgICAgcHJp
bnQgJyVkIHRlc3RzIHJ1bi4nICUgbGVuKHJlc3VsdHMpCi0gICAgICBpZiBmYWlsZWQ6Ci0gICAg
ICAgIHByaW50ICdUaGUgZm9sbG93aW5nICVkIHRlc3RzIGZhaWxlZDonICUgbGVuKGZhaWxlZCkK
LSAgICAgICAgZm9yIChkaXJlY3RvcnksIHRlc3QpIGluIGZhaWxlZDoKLSAgICAgICAgICBwcmlu
dCAnJXMgaW4gJXMnICUgKHRlc3QsIGRpcmVjdG9yeSkKLSAgICAgICAgcmV0dXJuIDEKLSAgICAg
IGVsc2U6Ci0gICAgICAgIHByaW50ICdBbGwgdGVzdHMgcGFzc2VkIScKLSAgICBlbHNlOiAgIyBO
byB0ZXN0cyBkZWZpbmVkCi0gICAgICBwcmludCAnTm90aGluZyB0byB0ZXN0IC0gbm8gdGVzdHMg
c3BlY2lmaWVkIScKLQotICAgIHJldHVybiAwCi0KLQotZGVmIFBhcnNlQXJncyhwcm9qZWN0X25h
bWUsIGFyZ3Y9Tm9uZSwgaGVscF9jYWxsYmFjaz1Ob25lKToKLSAgIiIiUGFyc2VzIHRoZSBvcHRp
b25zIHJ1bl90ZXN0cy5weSB1c2VzLiIiIgotCi0gICMgU3VwcHJlc3NlcyBsaW50IHdhcm5pbmcg
b24gdW51c2VkIGFyZ3VtZW50cy4gIFRoZXNlIGFyZ3VtZW50cyBhcmUKLSAgIyByZXF1aXJlZCBi
eSBvcHRwYXJzZSwgZXZlbiB0aG91Z2ggdGhleSBhcmUgdW51c2VkLgotICAjIHB5bGludDogZGlz
YWJsZS1tc2c9VzA2MTMKLSAgZGVmIFByaW50SGVscChvcHRpb24sIG9wdCwgdmFsdWUsIHBhcnNl
cik6Ci0gICAgcHJpbnQgSEVMUF9NU0cgJSB7J3Byb2onOiBwcm9qZWN0X25hbWV9Ci0gICAgc3lz
LmV4aXQoMSkKLQotICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQotICBwYXJzZXIu
YWRkX29wdGlvbignLWMnLAotICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlJywKLSAg
ICAgICAgICAgICAgICAgICAgZGVzdD0nY29uZmlndXJhdGlvbnMnLAotICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PU5vbmUpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctYScsCi0gICAgICAgICAg
ICAgICAgICAgIGFjdGlvbj0nc3RvcmVfY29uc3QnLAotICAgICAgICAgICAgICAgICAgICBkZXN0
PSdjb25maWd1cmF0aW9ucycsCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAg
ICAgICAgICAgICAgICAgICAgY29uc3Q9J2FsbCcpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctYics
Ci0gICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfY29uc3QnLAotICAgICAgICAgICAg
ICAgICAgICBkZXN0PSdidWlsdF9jb25maWd1cmF0aW9ucycsCi0gICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0PVRydWUpCi0gICMgUmVw
bGFjZXMgdGhlIGJ1aWx0LWluIGhlbHAgd2l0aCBvdXJzLgotICBwYXJzZXIucmVtb3ZlX29wdGlv
bignLWgnKQotICBwYXJzZXIuYWRkX29wdGlvbignLWgnLCAnLS1oZWxwJywKLSAgICAgICAgICAg
ICAgICAgICAgYWN0aW9uPSdjYWxsYmFjaycsCi0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr
PWhlbHBfY2FsbGJhY2sgb3IgUHJpbnRIZWxwKQotICByZXR1cm4gcGFyc2VyLnBhcnNlX2FyZ3Mo
YXJndikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3Rz
X3V0aWxfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3RzX3V0
aWxfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOWM1NTcyNmZkNTBiMmEw
YzI1MDY4MTQxZDdlNjY5NDNmMGI2ZGU3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0c191
dGlsX3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2NzYgKzAsMCBAQAotIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0
cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJUZXN0cyBmb3IgcnVuX3Rlc3RzX3V0aWwu
cHkgdGVzdCBydW5uZXIgc2NyaXB0LiIiIgotCi1fX2F1dGhvcl9fID0gJ3ZsYWRsQGdvb2dsZS5j
b20gKFZsYWQgTG9zZXYpJwotCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNldHMKLWlt
cG9ydCB1bml0dGVzdAotCi1pbXBvcnQgcnVuX3Rlc3RzX3V0aWwKLQotCi1HVEVTVF9EQkdfRElS
ID0gJ3Njb25zL2J1aWxkL2RiZy9ndGVzdC9zY29ucycKLUdURVNUX09QVF9ESVIgPSAnc2NvbnMv
YnVpbGQvb3B0L2d0ZXN0L3Njb25zJwotR1RFU1RfT1RIRVJfRElSID0gJ3Njb25zL2J1aWxkL290
aGVyL2d0ZXN0L3Njb25zJwotCi0KLWRlZiBBZGRFeGVFeHRlbnNpb24ocGF0aCk6Ci0gICIiIkFw
cGVuZHMgLmV4ZSB0byB0aGUgcGF0aCBvbiBXaW5kb3dzIG9yIEN5Z3dpbi4iIiIKLQotICBpZiBy
dW5fdGVzdHNfdXRpbC5JU19XSU5ET1dTIG9yIHJ1bl90ZXN0c191dGlsLklTX0NZR1dJTjoKLSAg
ICByZXR1cm4gcGF0aCArICcuZXhlJwotICBlbHNlOgotICAgIHJldHVybiBwYXRoCi0KLQotY2xh
c3MgRmFrZVBhdGgob2JqZWN0KToKLSAgIiIiQSBmYWtlIG9zLnBhdGggbW9kdWxlIGZvciB0ZXN0
aW5nLiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBjdXJyZW50X2Rpcj1vcy5nZXRjd2QoKSwg
a25vd25fcGF0aHM9Tm9uZSk6Ci0gICAgc2VsZi5jdXJyZW50X2RpciA9IGN1cnJlbnRfZGlyCi0g
ICAgc2VsZi50cmVlID0ge30KLSAgICBzZWxmLnBhdGhfc2VwYXJhdG9yID0gb3Muc2VwCi0KLSAg
ICAjIGtub3duX3BhdGhzIGNvbnRhaW5zIGVpdGhlciBhYnNvbHV0ZSBvciByZWxhdGl2ZSBwYXRo
cy4gUmVsYXRpdmUgcGF0aHMKLSAgICAjIGFyZSBhYnNvbHV0aXplZCB3aXRoIHNlbGYuY3VycmVu
dF9kaXIuCi0gICAgaWYga25vd25fcGF0aHM6Ci0gICAgICBzZWxmLl9BZGRQYXRocyhrbm93bl9w
YXRocykKLQotICBkZWYgX0FkZFBhdGgoc2VsZiwgcGF0aCk6Ci0gICAgZW5kc193aXRoX3NsYXNo
ID0gcGF0aC5lbmRzd2l0aCgnLycpCi0gICAgcGF0aCA9IHNlbGYuYWJzcGF0aChwYXRoKQotICAg
IGlmIGVuZHNfd2l0aF9zbGFzaDoKLSAgICAgIHBhdGggKz0gc2VsZi5wYXRoX3NlcGFyYXRvcgot
ICAgIG5hbWVfbGlzdCA9IHBhdGguc3BsaXQoc2VsZi5wYXRoX3NlcGFyYXRvcikKLSAgICB0cmVl
ID0gc2VsZi50cmVlCi0gICAgZm9yIG5hbWUgaW4gbmFtZV9saXN0WzotMV06Ci0gICAgICBpZiBu
b3QgbmFtZToKLSAgICAgICAgY29udGludWUKLSAgICAgIGlmIG5hbWUgaW4gdHJlZToKLSAgICAg
ICAgdHJlZSA9IHRyZWVbbmFtZV0KLSAgICAgIGVsc2U6Ci0gICAgICAgIHRyZWVbbmFtZV0gPSB7
fQotICAgICAgICB0cmVlID0gdHJlZVtuYW1lXQotCi0gICAgbmFtZSA9IG5hbWVfbGlzdFstMV0K
LSAgICBpZiBuYW1lOgotICAgICAgaWYgbmFtZSBpbiB0cmVlOgotICAgICAgICBhc3NlcnQgdHJl
ZVtuYW1lXSA9PSAxCi0gICAgICBlbHNlOgotICAgICAgICB0cmVlW25hbWVdID0gMQotCi0gIGRl
ZiBfQWRkUGF0aHMoc2VsZiwgcGF0aHMpOgotICAgIGZvciBwYXRoIGluIHBhdGhzOgotICAgICAg
c2VsZi5fQWRkUGF0aChwYXRoKQotCi0gIGRlZiBQYXRoRWxlbWVudChzZWxmLCBwYXRoKToKLSAg
ICAiIiJSZXR1cm5zIGFuIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGRpcmVjdG9yeSB0cmVl
IGVudHJ5IGZvciBwYXRoLiIiIgotICAgIHRyZWUgPSBzZWxmLnRyZWUKLSAgICBuYW1lX2xpc3Qg
PSBzZWxmLmFic3BhdGgocGF0aCkuc3BsaXQoc2VsZi5wYXRoX3NlcGFyYXRvcikKLSAgICBmb3Ig
bmFtZSBpbiBuYW1lX2xpc3Q6Ci0gICAgICBpZiBub3QgbmFtZToKLSAgICAgICAgY29udGludWUK
LSAgICAgIHRyZWUgPSB0cmVlLmdldChuYW1lLCBOb25lKQotICAgICAgaWYgdHJlZSBpcyBOb25l
OgotICAgICAgICBicmVhawotCi0gICAgcmV0dXJuIHRyZWUKLQotICAjIFNpbGVuY2VzIHB5bGlu
dCB3YXJuaW5nIGFib3V0IHVzaW5nIHN0YW5kYXJkIG5hbWVzLgotICAjIHB5bGludDogZGlzYWJs
ZS1tc2c9QzY0MDkKLSAgZGVmIG5vcm1wYXRoKHNlbGYsIHBhdGgpOgotICAgIHJldHVybiBvcy5w
YXRoLm5vcm1wYXRoKHBhdGgpCi0KLSAgZGVmIGFic3BhdGgoc2VsZiwgcGF0aCk6Ci0gICAgcmV0
dXJuIHNlbGYubm9ybXBhdGgob3MucGF0aC5qb2luKHNlbGYuY3VycmVudF9kaXIsIHBhdGgpKQot
Ci0gIGRlZiBpc2ZpbGUoc2VsZiwgcGF0aCk6Ci0gICAgcmV0dXJuIHNlbGYuUGF0aEVsZW1lbnQo
c2VsZi5hYnNwYXRoKHBhdGgpKSA9PSAxCi0KLSAgZGVmIGlzZGlyKHNlbGYsIHBhdGgpOgotICAg
IHJldHVybiB0eXBlKHNlbGYuUGF0aEVsZW1lbnQoc2VsZi5hYnNwYXRoKHBhdGgpKSkgPT0gdHlw
ZShkaWN0KCkpCi0KLSAgZGVmIGJhc2VuYW1lKHNlbGYsIHBhdGgpOgotICAgIHJldHVybiBvcy5w
YXRoLmJhc2VuYW1lKHBhdGgpCi0KLSAgZGVmIGRpcm5hbWUoc2VsZiwgcGF0aCk6Ci0gICAgcmV0
dXJuIG9zLnBhdGguZGlybmFtZShwYXRoKQotCi0gIGRlZiBqb2luKHNlbGYsICprYXJncyk6Ci0g
ICAgcmV0dXJuIG9zLnBhdGguam9pbigqa2FyZ3MpCi0KLQotY2xhc3MgRmFrZU9zKG9iamVjdCk6
Ci0gICIiIkEgZmFrZSBvcyBtb2R1bGUgZm9yIHRlc3RpbmcuIiIiCi0gIFBfV0FJVCA9IG9zLlBf
V0FJVAotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBmYWtlX3BhdGhfbW9kdWxlKToKLSAgICBzZWxm
LnBhdGggPSBmYWtlX3BhdGhfbW9kdWxlCi0KLSAgICAjIFNvbWUgbWV0aG9kcy9hdHRyaWJ1dGVz
IGFyZSBkZWxlZ2F0ZWQgdG8gdGhlIHJlYWwgb3MgbW9kdWxlLgotICAgIHNlbGYuZW52aXJvbiA9
IG9zLmVudmlyb24KLQotICAjIHB5bGludDogZGlzYWJsZS1tc2c9QzY0MDkKLSAgZGVmIGxpc3Rk
aXIoc2VsZiwgcGF0aCk6Ci0gICAgYXNzZXJ0IHNlbGYucGF0aC5pc2RpcihwYXRoKQotICAgIHJl
dHVybiBzZWxmLnBhdGguUGF0aEVsZW1lbnQocGF0aCkuaXRlcmtleXMoKQotCi0gIGRlZiBzcGF3
bnYoc2VsZiwgd2FpdCwgZXhlY3V0YWJsZSwgKmthcmdzKToKLSAgICBhc3NlcnQgd2FpdCA9PSBG
YWtlT3MuUF9XQUlUCi0gICAgcmV0dXJuIHNlbGYuc3Bhd25faW1wbChleGVjdXRhYmxlLCBrYXJn
cykKLQotCi1jbGFzcyBHZXRUZXN0c1RvUnVuVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICIi
IkV4ZXJjaXNlcyBUZXN0UnVubmVyLkdldFRlc3RzVG9SdW4uIiIiCi0KLSAgZGVmIE5vcm1hbGl6
ZUdldFRlc3RzVG9SdW5SZXN1bHRzKHNlbGYsIHJlc3VsdHMpOgotICAgICIiIk5vcm1hbGl6ZXMg
cGF0aCBkYXRhIHJldHVybmVkIGZyb20gR2V0VGVzdHNUb1J1biBmb3IgY29tcGFyaXNvbi4iIiIK
LQotICAgIGRlZiBOb3JtYWxpemVQeXRob25UZXN0UGFpcihwYWlyKToKLSAgICAgICIiIk5vcm1h
bGl6ZXMgcGF0aCBkYXRhIGluIHRoZSAoZGlyZWN0b3J5LCBweXRob25fc2NyaXB0KSBwYWlyLiIi
IgotCi0gICAgICByZXR1cm4gKG9zLnBhdGgubm9ybXBhdGgocGFpclswXSksIG9zLnBhdGgubm9y
bXBhdGgocGFpclsxXSkpCi0KLSAgICBkZWYgTm9ybWFsaXplQmluYXJ5VGVzdFBhaXIocGFpcik6
Ci0gICAgICAiIiJOb3JtYWxpemVzIHBhdGggZGF0YSBpbiB0aGUgKGRpcmVjdG9yeSwgYmluYXJ5
X2V4ZWN1dGFibGUpIHBhaXIuIiIiCi0KLSAgICAgIGRpcmVjdG9yeSwgZXhlY3V0YWJsZSA9IG1h
cChvcy5wYXRoLm5vcm1wYXRoLCBwYWlyKQotCi0gICAgICAjIE9uIFdpbmRvd3MgYW5kIEN5Z3dp
biwgdGhlIHRlc3QgZmlsZSBuYW1lcyBoYXZlIHRoZSAuZXhlIGV4dGVuc2lvbiwgYnV0Ci0gICAg
ICAjIHRoZXkgY2FuIGJlIGludm9rZWQgZWl0aGVyIGJ5IG5hbWUgb3IgYnkgbmFtZStleHRlbnNp
b24uIE91ciB0ZXN0IG11c3QKLSAgICAgICMgYWNjb21tb2RhdGUgYm90aCBzaXR1YXRpb25zLgot
ICAgICAgaWYgcnVuX3Rlc3RzX3V0aWwuSVNfV0lORE9XUyBvciBydW5fdGVzdHNfdXRpbC5JU19D
WUdXSU46Ci0gICAgICAgIGV4ZWN1dGFibGUgPSByZS5zdWIocidcLmV4ZSQnLCAnJywgZXhlY3V0
YWJsZSkKLSAgICAgIHJldHVybiAoZGlyZWN0b3J5LCBleGVjdXRhYmxlKQotCi0gICAgcHl0aG9u
X3Rlc3RzID0gc2V0cy5TZXQobWFwKE5vcm1hbGl6ZVB5dGhvblRlc3RQYWlyLCByZXN1bHRzWzBd
KSkKLSAgICBiaW5hcnlfdGVzdHMgPSBzZXRzLlNldChtYXAoTm9ybWFsaXplQmluYXJ5VGVzdFBh
aXIsIHJlc3VsdHNbMV0pKQotICAgIHJldHVybiAocHl0aG9uX3Rlc3RzLCBiaW5hcnlfdGVzdHMp
Ci0KLSAgZGVmIEFzc2VydFJlc3VsdHNFcXVhbChzZWxmLCByZXN1bHRzLCBleHBlY3RlZCk6Ci0g
ICAgIiIiQXNzZXJ0cyByZXN1bHRzIHJldHVybmVkIGJ5IEdldFRlc3RzVG9SdW4gZXF1YWwgdG8g
ZXhwZWN0ZWQgcmVzdWx0cy4iIiIKLQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5Ob3JtYWxp
emVHZXRUZXN0c1RvUnVuUmVzdWx0cyhyZXN1bHRzKSwKLSAgICAgICAgICAgICAgICAgICAgIHNl
bGYuTm9ybWFsaXplR2V0VGVzdHNUb1J1blJlc3VsdHMoZXhwZWN0ZWQpLAotICAgICAgICAgICAg
ICAgICAgICAgJ0luY29ycmVjdCBzZXQgb2YgdGVzdHMgcmV0dXJuZWQ6XG4lc1xuZXhwZWN0ZWQ6
XG4lcycgJQotICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdHMsIGV4cGVjdGVkKSkKLQotICBk
ZWYgc2V0VXAoc2VsZik6Ci0gICAgc2VsZi5mYWtlX29zID0gRmFrZU9zKEZha2VQYXRoKAotICAg
ICAgICBjdXJyZW50X2Rpcj1vcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKHJ1bl90ZXN0
c191dGlsLl9fZmlsZV9fKSksCi0gICAgICAgIGtub3duX3BhdGhzPVtBZGRFeGVFeHRlbnNpb24o
R1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAgICAgICAgICAg
IEFkZEV4ZUV4dGVuc2lvbihHVEVTVF9PUFRfRElSICsgJy9ndGVzdF91bml0dGVzdCcpLAotICAg
ICAgICAgICAgICAgICAgICAgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weSddKSkKLSAgICBzZWxm
LmZha2VfY29uZmlndXJhdGlvbnMgPSBbJ2RiZycsICdvcHQnXQotICAgIHNlbGYudGVzdF9ydW5u
ZXIgPSBydW5fdGVzdHNfdXRpbC5UZXN0UnVubmVyKHNjcmlwdF9kaXI9Jy4nLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluamVjdGVkX29zPXNlbGYu
ZmFrZV9vcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmplY3RlZF9zdWJwcm9jZXNzPU5vbmUpCi0KLSAgZGVmIHRlc3RCaW5hcnlUZXN0c09ubHko
c2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3RzVG9SdW4gd2l0aCBwYXJhbWV0ZXJzIGRl
c2lnbmF0aW5nIGJpbmFyeSB0ZXN0cyBvbmx5LiIiIgotCi0gICAgIyBBIGRlZmF1bHQgYnVpbGQu
Ci0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIu
R2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAg
ICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmln
dXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFtdLAotICAgICAg
ICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkp
Ci0KLSAgICAjIEFuIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGRpcmVjdG9yeS4KLSAgICBzZWxmLkFz
c2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVu
KAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIsICdndGVzdF91bml0dGVzdCddLAotICAgICAg
ICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25m
aWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAg
ICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0Jyld
KSkKLQotICAgICMgQSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24uCi0gICAgc2VsZi5Bc3NlcnRS
ZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAg
ICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICdvdGhlcicsCi0gICAg
ICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxm
LmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX09U
SEVSX0RJUiwgR1RFU1RfT1RIRVJfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAj
IEFsbCBhdmFpbGFibGUgY29uZmlndXJhdGlvbnMKLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVh
bCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAg
WydndGVzdF91bml0dGVzdCddLAotICAgICAgICAgICAgJ2FsbCcsCi0gICAgICAgICAgICBGYWxz
ZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmln
dXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNU
X0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIs
IEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgQWxsIGJ1aWx0
IGNvbmZpZ3VyYXRpb25zICh1bmJ1aWx0IGRvbid0IGNhdXNlIGZhaWx1cmUpLgotICAgIHNlbGYu
QXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9S
dW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAnJywKLSAg
ICAgICAgICAgIFRydWUsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2Vs
Zi5mYWtlX2NvbmZpZ3VyYXRpb25zICsgWyd1bmJ1aWx0J10pLAotICAgICAgICAoW10sCi0gICAg
ICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0Jyks
Ci0gICAgICAgICAgKEdURVNUX09QVF9ESVIsIEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0
ZXN0JyldKSkKLQotICAgICMgQSBjb21iaW5hdGlvbiBvZiBhbiBleHBsaWNpdCBkaXJlY3Rvcnkg
YW5kIGEgY29uZmlndXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAg
ICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgW0dURVNUX0RC
R19ESVIsICdndGVzdF91bml0dGVzdCddLAotICAgICAgICAgICAgJ29wdCcsCi0gICAgICAgICAg
ICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2Vf
Y29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIs
IEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgKEdURVNUX09Q
VF9ESVIsIEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgU2Ft
ZSB0ZXN0IHNwZWNpZmllZCBpbiBhbiBleHBsaWNpdCBkaXJlY3RvcnkgYW5kIHZpYSBhIGNvbmZp
Z3VyYXRpb24uCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVz
dF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rl
c3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICdkYmcnLAotICAgICAgICAgICAgRmFsc2UsCi0g
ICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRp
b25zKSwKLSAgICAgICAgKFtdLAotICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdf
RElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIEFsbCBidWlsdCBjb25maWd1cmF0
aW9ucyArIGV4cGxpY2l0IGRpcmVjdG9yeSArIGV4cGxpY2l0IGNvbmZpZ3VyYXRpb24uCi0gICAg
c2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVz
dHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rlc3RfdW5pdHRlc3QnXSwK
LSAgICAgICAgICAgICdvcHQnLAotICAgICAgICAgICAgVHJ1ZSwKLSAgICAgICAgICAgIGF2YWls
YWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAo
W10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3Vu
aXR0ZXN0JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIsIEdURVNUX09QVF9ESVIgKyAnL2d0
ZXN0X3VuaXR0ZXN0JyldKSkKLQotICBkZWYgdGVzdFB5dGhvblRlc3RzT25seShzZWxmKToKLSAg
ICAiIiJFeGVyY2lzZXMgR2V0VGVzdHNUb1J1biB3aXRoIHBhcmFtZXRlcnMgZGVzaWduYXRpbmcg
UHl0aG9uIHRlc3RzIG9ubHkuIiIiCi0KLSAgICAjIEEgZGVmYXVsdCBidWlsZC4KLSAgICBzZWxm
LkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1Rv
UnVuKAotICAgICAgICAgICAgWydndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAn
JywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRp
b25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIs
ICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEFu
IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGRpcmVjdG9yeS4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNF
cXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAg
ICAgW0dURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAg
ICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmln
dXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJH
X0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAg
ICMgQSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24uCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1
YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAg
IFsnZ3Rlc3RfY29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJ290aGVyJywKLSAgICAgICAg
ICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFr
ZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbKEdURVNUX09USEVSX0RJUiwgJ3Rlc3QvZ3Rl
c3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAgICMgQWxsIGF2YWlsYWJs
ZSBjb25maWd1cmF0aW9ucwotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBz
ZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ3Rlc3QvZ3Rlc3Rf
Y29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJ2FsbCcsCi0gICAgICAgICAgICBGYWxzZSwK
LSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJh
dGlvbnMpLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0
LnB5JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Qu
cHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEFsbCBidWlsdCBjb25maWd1cmF0aW9ucyAo
dW5idWlsdCBkb24ndCBjYXVzZSBmYWlsdXJlKS4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVh
bCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAg
WydndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIFRy
dWUsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZp
Z3VyYXRpb25zICsgWyd1bmJ1aWx0J10pLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVz
dC9ndGVzdF9jb2xvcl90ZXN0LnB5JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIsICd0ZXN0
L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEEgY29tYmlu
YXRpb24gb2YgYW4gZXhwbGljaXQgZGlyZWN0b3J5IGFuZCBhIGNvbmZpZ3VyYXRpb24uCi0gICAg
c2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVz
dHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rlc3RfY29sb3JfdGVzdC5w
eSddLAotICAgICAgICAgICAgJ29wdCcsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAg
IGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAg
ICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyksCi0gICAg
ICAgICAgKEdURVNUX09QVF9ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAg
ICAgICBbXSkpCi0KLSAgICAjIFNhbWUgdGVzdCBzcGVjaWZpZWQgaW4gYW4gZXhwbGljaXQgZGly
ZWN0b3J5IGFuZCB2aWEgYSBjb25maWd1cmF0aW9uLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0Vx
dWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAg
ICBbR1RFU1RfREJHX0RJUiwgJ2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICdk
YmcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJh
dGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJ
UiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAgICMg
QWxsIGJ1aWx0IGNvbmZpZ3VyYXRpb25zICsgZXhwbGljaXQgZGlyZWN0b3J5ICsgZXhwbGljaXQg
Y29uZmlndXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2Vs
Zi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIs
ICdndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnb3B0JywKLSAgICAgICAgICAg
IFRydWUsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2Nv
bmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29s
b3JfdGVzdC5weScpLAotICAgICAgICAgIChHVEVTVF9PUFRfRElSLCAndGVzdC9ndGVzdF9jb2xv
cl90ZXN0LnB5JyldLAotICAgICAgICAgW10pKQotCi0gIGRlZiB0ZXN0Q29tYmluYXRpb25PZkJp
bmFyeUFuZFB5dGhvblRlc3RzKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBHZXRUZXN0c1RvUnVu
IHdpdGggbWl4ZWQgYmluYXJ5L1B5dGhvbiB0ZXN0cy4iIiIKLQotICAgICMgVXNlIG9ubHkgZGVm
YXVsdCBjb25maWd1cmF0aW9uIGZvciB0aGlzIHRlc3QuCi0KLSAgICAjIE5laXRoZXIgYmluYXJ5
IG5vciBQeXRob24gdGVzdHMgYXJlIHNwZWNpZmllZCBzbyBmaW5kIGFsbC4KLSAgICBzZWxmLkFz
c2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVu
KAotICAgICAgICAgICAgW10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAot
ICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0
aW9ucyksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Qu
cHknKV0sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0
X3VuaXR0ZXN0JyldKSkKLQotICAgICMgU3BlY2lmeWluZyBib3RoIGJpbmFyeSBhbmQgUHl0aG9u
IHRlc3RzLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3Rf
cnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X3VuaXR0ZXN0JywgJ2d0
ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFsc2Us
Ci0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3Vy
YXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVz
dC5weScpXSwKLSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rl
c3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBTcGVjaWZ5aW5nIGJpbmFyeSB0ZXN0cyBzdXBwcmVz
c2VzIFB5dGhvbiB0ZXN0cy4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAg
c2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF91bml0
dGVzdCddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAg
IGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAg
ICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0
ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgIyBTcGVjaWZ5aW5nIFB5dGhvbiB0ZXN0cyBzdXBwcmVz
c2VzIGJpbmFyeSB0ZXN0cy4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAg
c2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF9jb2xv
cl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAg
ICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyks
Ci0gICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0s
Ci0gICAgICAgICBbXSkpCi0KLSAgZGVmIHRlc3RJZ25vcmVzTm9uVGVzdEZpbGVzKHNlbGYpOgot
ICAgICIiIlZlcmlmaWVzIHRoYXQgR2V0VGVzdHNUb1J1biBpZ25vcmVzIG5vbi10ZXN0IGZpbGVz
IGluIHRoZSBmaWxlc3lzdGVtLiIiIgotCi0gICAgc2VsZi5mYWtlX29zID0gRmFrZU9zKEZha2VQ
YXRoKAotICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1l
KHJ1bl90ZXN0c191dGlsLl9fZmlsZV9fKSksCi0gICAgICAgIGtub3duX3BhdGhzPVtBZGRFeGVF
eHRlbnNpb24oR1RFU1RfREJHX0RJUiArICcvZ3Rlc3Rfbm9udGVzdCcpLAotICAgICAgICAgICAg
ICAgICAgICAgJ3Rlc3QvJ10pKQotICAgIHNlbGYudGVzdF9ydW5uZXIgPSBydW5fdGVzdHNfdXRp
bC5UZXN0UnVubmVyKHNjcmlwdF9kaXI9Jy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluamVjdGVkX29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3RlZF9zdWJwcm9j
ZXNzPU5vbmUpCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVz
dF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgJycs
Ci0gICAgICAgICAgICBUcnVlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25z
PXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbXSwgW10pKQotCi0gIGRlZiB0
ZXN0V29ya3NGcm9tRGlmZmVyZW50RGlyKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBHZXRUZXN0
c1RvUnVuIGZyb20gYSBkaXJlY3RvcnkgZGlmZmVyZW50IGZyb20gcnVuX3Rlc3QucHkncy4iIiIK
LQotICAgICMgSGVyZSB3ZSBzaW11bGF0ZSBhbiB0ZXN0IHNjcmlwdCBpbiBkaXJlY3RvcnkgL2Qv
IGNhbGxlZCBmcm9tIHRoZQotICAgICMgZGlyZWN0b3J5IC9hL2IvYy8uCi0gICAgc2VsZi5mYWtl
X29zID0gRmFrZU9zKEZha2VQYXRoKAotICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRoLmFic3Bh
dGgoJy9hL2IvYycpLAotICAgICAgICBrbm93bl9wYXRocz1bCi0gICAgICAgICAgICAnL2EvYi9j
LycsCi0gICAgICAgICAgICBBZGRFeGVFeHRlbnNpb24oJy9kLycgKyBHVEVTVF9EQkdfRElSICsg
Jy9ndGVzdF91bml0dGVzdCcpLAotICAgICAgICAgICAgQWRkRXhlRXh0ZW5zaW9uKCcvZC8nICsg
R1RFU1RfT1BUX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAgICcvZC90ZXN0
L2d0ZXN0X2NvbG9yX3Rlc3QucHknXSkpCi0gICAgc2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zID0g
WydkYmcnLCAnb3B0J10KLSAgICBzZWxmLnRlc3RfcnVubmVyID0gcnVuX3Rlc3RzX3V0aWwuVGVz
dFJ1bm5lcihzY3JpcHRfZGlyPScvZC8nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluamVjdGVkX29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3RlZF9zdWJwcm9jZXNz
PU5vbmUpCi0gICAgIyBBIGJpbmFyeSB0ZXN0LgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFs
KAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBb
J2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAot
ICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0
aW9ucyksCi0gICAgICAgIChbXSwKLSAgICAgICAgIFsoJy9kLycgKyBHVEVTVF9EQkdfRElSLCAn
L2QvJyArIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgQSBQ
eXRob24gdGVzdC4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50
ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF9jb2xvcl90ZXN0
LnB5J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAg
YXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAg
ICAgIChbKCcvZC8nICsgR1RFU1RfREJHX0RJUiwgJy9kL3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5w
eScpXSwgW10pKQotCi0gIGRlZiB0ZXN0Tm9uVGVzdEJpbmFyeShzZWxmKToKLSAgICAiIiJFeGVy
Y2lzZXMgR2V0VGVzdHNUb1J1biB3aXRoIGEgbm9uLXRlc3QgcGFyYW1ldGVyLiIiIgotCi0gICAg
c2VsZi5hc3NlcnRfKAotICAgICAgICBub3Qgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVu
KAotICAgICAgICAgICAgWydndGVzdF91bml0dGVzdF9ub3RfcmVhbGx5J10sCi0gICAgICAgICAg
ICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3Vy
YXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucykpCi0KLSAgZGVmIHRlc3ROb25FeGlzdGlu
Z1B5dGhvblRlc3Qoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3RzVG9SdW4gd2l0aCBh
IG5vbi1leGlzdGVudCBQeXRob24gdGVzdCBwYXJhbWV0ZXIuIiIiCi0KLSAgICBzZWxmLmFzc2Vy
dF8oCi0gICAgICAgIG5vdCBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAg
ICAgICBbJ25vbmV4aXN0ZW50X3Rlc3QucHknXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAg
ICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtl
X2NvbmZpZ3VyYXRpb25zKSkKLQotICBpZiBydW5fdGVzdHNfdXRpbC5JU19XSU5ET1dTIG9yIHJ1
bl90ZXN0c191dGlsLklTX0NZR1dJTjoKLQotICAgIGRlZiB0ZXN0RG9lc05vdFBpY2tOb25FeGVG
aWxlc09uV2luZG93cyhzZWxmKToKLSAgICAgICIiIlZlcmlmaWVzIHRoYXQgR2V0VGVzdHNUb1J1
biBkb2VzIG5vdCBmaW5kIF90ZXN0IGZpbGVzIG9uIFdpbmRvd3MuIiIiCi0KLSAgICAgIHNlbGYu
ZmFrZV9vcyA9IEZha2VPcyhGYWtlUGF0aCgKLSAgICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRo
LmFic3BhdGgob3MucGF0aC5kaXJuYW1lKHJ1bl90ZXN0c191dGlsLl9fZmlsZV9fKSksCi0gICAg
ICAgICAga25vd25fcGF0aHM9WycvZC8nICsgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdGVzdCcs
ICd0ZXN0LyddKSkKLSAgICAgIHNlbGYudGVzdF9ydW5uZXIgPSBydW5fdGVzdHNfdXRpbC5UZXN0
UnVubmVyKHNjcmlwdF9kaXI9Jy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5qZWN0ZWRfb3M9c2VsZi5mYWtlX29zLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5qZWN0ZWRfc3VicHJvY2Vz
cz1Ob25lKQotICAgICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgICAgc2VsZi50
ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgICBbXSwKLSAgICAgICAgICAg
ICAgJycsCi0gICAgICAgICAgICAgIFRydWUsCi0gICAgICAgICAgICAgIGF2YWlsYWJsZV9jb25m
aWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAgIChbXSwgW10p
KQotCi0KLWNsYXNzIFJ1blRlc3RzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICIiIkV4ZXJj
aXNlcyBUZXN0UnVubmVyLlJ1blRlc3RzLiIiIgotCi0gIGRlZiBTcGF3blN1Y2Nlc3Moc2VsZiwg
dW51c2VkX2V4ZWN1dGFibGUsIHVudXNlZF9hcmd2KToKLSAgICAiIiJGYWtlcyB0ZXN0IHN1Y2Nl
c3MgYnkgcmV0dXJuaW5nIDAgYXMgYW4gZXhpdCBjb2RlLiIiIgotCi0gICAgc2VsZi5udW1fc3Bh
d25fY2FsbHMgKz0gMQotICAgIHJldHVybiAwCi0KLSAgZGVmIFNwYXduRmFpbHVyZShzZWxmLCB1
bnVzZWRfZXhlY3V0YWJsZSwgdW51c2VkX2FyZ3YpOgotICAgICIiIkZha2VzIHRlc3Qgc3VjY2Vz
cyBieSByZXR1cm5pbmcgMSBhcyBhbiBleGl0IGNvZGUuIiIiCi0KLSAgICBzZWxmLm51bV9zcGF3
bl9jYWxscyArPSAxCi0gICAgcmV0dXJuIDEKLQotICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgc2Vs
Zi5mYWtlX29zID0gRmFrZU9zKEZha2VQYXRoKAotICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRo
LmFic3BhdGgob3MucGF0aC5kaXJuYW1lKHJ1bl90ZXN0c191dGlsLl9fZmlsZV9fKSksCi0gICAg
ICAgIGtub3duX3BhdGhzPVsKLSAgICAgICAgICAgIEFkZEV4ZUV4dGVuc2lvbihHVEVTVF9EQkdf
RElSICsgJy9ndGVzdF91bml0dGVzdCcpLAotICAgICAgICAgICAgQWRkRXhlRXh0ZW5zaW9uKEdU
RVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgICAndGVzdC9ndGVz
dF9jb2xvcl90ZXN0LnB5J10pKQotICAgIHNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyA9IFsnZGJn
JywgJ29wdCddCi0gICAgc2VsZi50ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5u
ZXIoCi0gICAgICAgIHNjcmlwdF9kaXI9b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSBvciAnLics
Ci0gICAgICAgIGluamVjdGVkX29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAgaW5qZWN0ZWRfc3Vi
cHJvY2Vzcz1Ob25lKQotICAgIHNlbGYubnVtX3NwYXduX2NhbGxzID0gMCAgIyBBIG51bWJlciBv
ZiBjYWxscyB0byBzcGF3bi4KLQotICBkZWYgdGVzdFJ1blB5dGhvblRlc3RTdWNjZXNzKHNlbGYp
OgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0cyB0byBoYW5kbGUgYSBQeXRob24gdGVzdCBzdWNj
ZXNzLiIiIgotCi0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxmLlNwYXduU3VjY2Vz
cwotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuUnVuVGVz
dHMoCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Qu
cHknKV0sCi0gICAgICAgICAgICBbXSksCi0gICAgICAgIDApCi0gICAgc2VsZi5hc3NlcnRFcXVh
bChzZWxmLm51bV9zcGF3bl9jYWxscywgMSkKLQotICBkZWYgdGVzdFJ1bkJpbmFyeVRlc3RTdWNj
ZXNzKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0cyB0byBoYW5kbGUgYSBiaW5hcnkg
dGVzdCBzdWNjZXNzLiIiIgotCi0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxmLlNw
YXduU3VjY2VzcwotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5u
ZXIuUnVuVGVzdHMoCi0gICAgICAgICAgICBbXSwKLSAgICAgICAgICAgIFsoR1RFU1RfREJHX0RJ
UiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pLAotICAgICAgICAwKQotICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5udW1fc3Bhd25fY2FsbHMsIDEpCi0KLSAgZGVmIHRlc3RS
dW5QeXRob25UZXN0RmF1aWx1cmUoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIFJ1blRlc3RzIHRv
IGhhbmRsZSBhIFB5dGhvbiB0ZXN0IGZhaWx1cmUuIiIiCi0KLSAgICBzZWxmLmZha2Vfb3Muc3Bh
d25faW1wbCA9IHNlbGYuU3Bhd25GYWlsdXJlCi0gICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAg
ICAgc2VsZi50ZXN0X3J1bm5lci5SdW5UZXN0cygKLSAgICAgICAgICAgIFsoR1RFU1RfREJHX0RJ
UiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgICAgIFtdKSwKLSAgICAg
ICAgMSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnVtX3NwYXduX2NhbGxzLCAxKQotCi0g
IGRlZiB0ZXN0UnVuQmluYXJ5VGVzdEZhaWx1cmUoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIFJ1
blRlc3RzIHRvIGhhbmRsZSBhIGJpbmFyeSB0ZXN0IGZhaWx1cmUuIiIiCi0KLSAgICBzZWxmLmZh
a2Vfb3Muc3Bhd25faW1wbCA9IHNlbGYuU3Bhd25GYWlsdXJlCi0gICAgc2VsZi5hc3NlcnRFcXVh
bCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5SdW5UZXN0cygKLSAgICAgICAgICAgIFtdLAot
ICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0
dGVzdCcpXSksCi0gICAgICAgIDEpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm51bV9zcGF3
bl9jYWxscywgMSkKLQotICBkZWYgdGVzdENvbWJpbmVkVGVzdFN1Y2Nlc3Moc2VsZik6Ci0gICAg
IiIiRXhlcmNpc2VzIFJ1blRlc3RzIHRvIGhhbmRsZSBhIHN1Y2Nlc3Mgb2YgYm90aCBQeXRob24g
YW5kIGJpbmFyeSB0ZXN0LiIiIgotCi0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxm
LlNwYXduU3VjY2VzcwotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9y
dW5uZXIuUnVuVGVzdHMoCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19E
SVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldLAotICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBH
VEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSksCi0gICAgICAgIDApCi0gICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZWxmLm51bV9zcGF3bl9jYWxscywgMikKLQotICBkZWYgdGVzdENvbWJp
bmVkVGVzdFN1Y2Nlc3NBbmRGYWlsdXJlKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0
cyB0byBoYW5kbGUgYSBzdWNjZXNzIG9mIGJvdGggUHl0aG9uIGFuZCBiaW5hcnkgdGVzdC4iIiIK
LQotICAgIGRlZiBTcGF3bkltcGwoZXhlY3V0YWJsZSwgYXJndik6Ci0gICAgICBzZWxmLm51bV9z
cGF3bl9jYWxscyArPSAxCi0gICAgICAjIFNpbXVsYXRlcyBmYWlsdXJlIG9mIGEgUHl0aG9uIHRl
c3QgYW5kIHN1Y2Nlc3Mgb2YgYSBiaW5hcnkgdGVzdC4KLSAgICAgIGlmICcucHknIGluIGV4ZWN1
dGFibGUgb3IgJy5weScgaW4gYXJndlswXToKLSAgICAgICAgcmV0dXJuIDEKLSAgICAgIGVsc2U6
Ci0gICAgICAgIHJldHVybiAwCi0KLSAgICBzZWxmLmZha2Vfb3Muc3Bhd25faW1wbCA9IFNwYXdu
SW1wbAotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuUnVu
VGVzdHMoCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0
ZXN0X3VuaXR0ZXN0JyldLAotICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdf
RElSICsgJy9ndGVzdF91bml0dGVzdCcpXSksCi0gICAgICAgIDApCi0gICAgc2VsZi5hc3NlcnRF
cXVhbChzZWxmLm51bV9zcGF3bl9jYWxscywgMikKLQotCi1jbGFzcyBQYXJzZUFyZ3NUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKLSAgIiIiRXhlcmNpc2VzIFBhcnNlQXJncy4iIiIKLQotICBkZWYg
dGVzdE5vT3B0aW9ucyhzZWxmKToKLSAgICBvcHRpb25zLCBhcmdzID0gcnVuX3Rlc3RzX3V0aWwu
UGFyc2VBcmdzKCdndGVzdCcsIGFyZ3Y9WydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydEVx
dWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRfKG9wdGlvbnMuY29uZmln
dXJhdGlvbnMgaXMgTm9uZSkKLSAgICBzZWxmLmFzc2VydEZhbHNlKG9wdGlvbnMuYnVpbHRfY29u
ZmlndXJhdGlvbnMpCi0KLSAgZGVmIHRlc3RPcHRpb25DKHNlbGYpOgotICAgIG9wdGlvbnMsIGFy
Z3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoCi0gICAgICAgICdndGVzdCcsIGFyZ3Y9Wydz
Y3JpcHQucHknLCAnLWMnLCAnZGJnJ10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBbJ3Nj
cmlwdC5weSddKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5jb25maWd1cmF0aW9ucywg
J2RiZycpCi0gICAgc2VsZi5hc3NlcnRGYWxzZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRpb25z
KQotCi0gIGRlZiB0ZXN0T3B0aW9uQShzZWxmKToKLSAgICBvcHRpb25zLCBhcmdzID0gcnVuX3Rl
c3RzX3V0aWwuUGFyc2VBcmdzKCdndGVzdCcsIGFyZ3Y9WydzY3JpcHQucHknLCAnLWEnXSkKLSAg
ICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRF
cXVhbChvcHRpb25zLmNvbmZpZ3VyYXRpb25zLCAnYWxsJykKLSAgICBzZWxmLmFzc2VydEZhbHNl
KG9wdGlvbnMuYnVpbHRfY29uZmlndXJhdGlvbnMpCi0KLSAgZGVmIHRlc3RPcHRpb25CKHNlbGYp
OgotICAgIG9wdGlvbnMsIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoJ2d0ZXN0Jywg
YXJndj1bJ3NjcmlwdC5weScsICctYiddKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgWydz
Y3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydF8ob3B0aW9ucy5jb25maWd1cmF0aW9ucyBpcyBO
b25lKQotICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRpb25zKQot
Ci0gIGRlZiB0ZXN0T3B0aW9uQ0FuZE9wdGlvbkIoc2VsZik6Ci0gICAgb3B0aW9ucywgYXJncyA9
IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygKLSAgICAgICAgJ2d0ZXN0JywgYXJndj1bJ3Njcmlw
dC5weScsICctYycsICdkYmcnLCAnLWInXSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsn
c2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLmNvbmZpZ3VyYXRpb25z
LCAnZGJnJykKLSAgICBzZWxmLmFzc2VydFRydWUob3B0aW9ucy5idWlsdF9jb25maWd1cmF0aW9u
cykKLQotICBkZWYgdGVzdE9wdGlvbkgoc2VsZik6Ci0gICAgaGVscF9jYWxsZWQgPSBbRmFsc2Vd
Ci0KLSAgICAjIFN1cHByZXNzZXMgbGludCB3YXJuaW5nIG9uIHVudXNlZCBhcmd1bWVudHMuICBU
aGVzZSBhcmd1bWVudHMgYXJlCi0gICAgIyByZXF1aXJlZCBieSBvcHRwYXJzZSwgZXZlbiB0aG91
Z2ggdGhleSBhcmUgdW51c2VkLgotICAgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1XMDYxMwotICAg
IGRlZiBWZXJpZnlIZWxwKG9wdGlvbiwgb3B0LCB2YWx1ZSwgcGFyc2VyKToKLSAgICAgIGhlbHBf
Y2FsbGVkWzBdID0gVHJ1ZQotCi0gICAgIyBWZXJpZmllcyB0aGF0IC1oIGNhdXNlcyB0aGUgaGVs
cCBjYWxsYmFjayB0byBiZSBjYWxsZWQuCi0gICAgaGVscF9jYWxsZWRbMF0gPSBGYWxzZQotICAg
IF8sIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoCi0gICAgICAgICdndGVzdCcsIGFy
Z3Y9WydzY3JpcHQucHknLCAnLWgnXSwgaGVscF9jYWxsYmFjaz1WZXJpZnlIZWxwKQotICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYXJncywgWydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydFRydWUo
aGVscF9jYWxsZWRbMF0pCi0KLSAgICAjIFZlcmlmaWVzIHRoYXQgLS1oZWxwIGNhdXNlcyB0aGUg
aGVscCBjYWxsYmFjayB0byBiZSBjYWxsZWQuCi0gICAgaGVscF9jYWxsZWRbMF0gPSBGYWxzZQot
ICAgIF8sIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoCi0gICAgICAgICdndGVzdCcs
IGFyZ3Y9WydzY3JpcHQucHknLCAnLS1oZWxwJ10sIGhlbHBfY2FsbGJhY2s9VmVyaWZ5SGVscCkK
LSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3Nl
cnRUcnVlKGhlbHBfY2FsbGVkWzBdKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0g
IHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNv
ZGUvQ29uZmlnL0RlYnVnUHJvamVjdC54Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3hjb2RlL0NvbmZpZy9EZWJ1Z1Byb2plY3QueGNjb25maWcKaW5kZXggNTc2ZjNkOWJmMGUyNGY2
ZWU5ODkxODEzZTRlMThlNGYxYzFiZTQ2Mi4uM2Q2ODE1N2Q1ZDUxMmE4ODBmMTg2ODU2YzNiYTEw
YjRhMmIxODAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29u
ZmlnL0RlYnVnUHJvamVjdC54Y2NvbmZpZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94
Y29kZS9Db25maWcvRGVidWdQcm9qZWN0LnhjY29uZmlnCkBAIC0yOCwxMiArMjgsMyBAQCBPVEhF
Ul9DRkxBR1MgPSAkKE9USEVSX0NGTEFHUykgLURERUJVRz0xCiAvLyBUaGVzZSBhcmUgdHVybmVk
IG9mZiB0byBhdm9pZCBTVEwgaW5jb21wYXRpYmlsaXRpZXMgd2l0aCBjbGllbnQgY29kZQogLy8g
Ly8gVHVybnMgb24gc3BlY2lhbCBDKysgU1RMIGNoZWNrcyB0byAiZW5jb3VyYWdlIiBnb29kIFNU
TCB1c2UKIC8vIEdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAkKEdDQ19QUkVQUk9DRVNT
T1JfREVGSU5JVElPTlMpIF9HTElCQ1hYX0RFQlVHX1BFREFOVElDIF9HTElCQ1hYX0RFQlVHIF9H
TElCQ1BQX0NPTkNFUFRfQ0hFQ0tTCi0KLS8vIFVzZWQgYnkgSEVBREVSX1NFQVJDSF9QQVRIUyBp
biBHZW5lcmFsLnhjY29uZmlnCi1XRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIgPSAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvV2ViQ29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnM7Ci0KLU9OTFlf
QUNUSVZFX0FSQ0ggPSBZRVMKLQotU0RLUk9PVCA9ICQoU0RLUk9PVF8kKFVTRV9JTlRFUk5BTF9T
REspKTsKLVNES1JPT1RfID0gbWFjb3N4OwotU0RLUk9PVF9ZRVMgPSBtYWNvc3guaW50ZXJuYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvRnJhbWV3
b3JrVGFyZ2V0LnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmln
L0ZyYW1ld29ya1RhcmdldC54Y2NvbmZpZwppbmRleCBmNGRhOWQyMzk5MTYzNWFiZGNkYTgyYjZh
MDZlYWMzZmM4NTg5MGFkLi4zNTdiMWM4ZmJmYTIzMWRhM2VjZjJkYzM3Y2NlMTcyODMwNDI5MTFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvRnJhbWV3
b3JrVGFyZ2V0LnhjY29uZmlnCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0Nv
bmZpZy9GcmFtZXdvcmtUYXJnZXQueGNjb25maWcKQEAgLTE1LDUgKzE1LDMgQEAgU1RSSVBfU1RZ
TEUgPSBub24tZ2xvYmFsCiAKIC8vIExldCB0aGUgdXNlciBpbnN0YWxsIGJ5IHNwZWNpZnlpbmcg
dGhlICREU1RST09UIHdpdGggeGNvZGVidWlsZAogU0tJUF9JTlNUQUxMID0gTk8KLQotSU5TVEFM
TF9QQVRIID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0dlbmVyYWwueGNjb25m
aWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvR2VuZXJhbC54Y2NvbmZp
ZwppbmRleCBkODc2M2Q2NDQxYjhiOTBiZmM5OTZlNmMwYzlmZmNlMDcxYTEyMTcyLi5mMjNlMzIy
MjcyNzU2MzQzYzA0ZjUwYzJmNzk5NzQ0MDA4YjQ1YjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvR2VuZXJhbC54Y2NvbmZpZworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvR2VuZXJhbC54Y2NvbmZpZwpAQCAtNSwyMCAr
NSwxMCBAQAogLy8gIGV4YW1wbGVzLgogLy8gIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiB0aGUgWGNv
ZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBpbjoKIC8vICBodHRwOi8vY29kZS5nb29nbGUuY29tL3Av
Z29vZ2xlLXRvb2xib3gtZm9yLW1hYy8KLS8vCi0KLSNpbmNsdWRlICIuLi8uLi8uLi8uLi8uLi8u
Li9JbnRlcm5hbC9Db25maWd1cmF0aW9ucy9IYXZlSW50ZXJuYWxTREsueGNjb25maWciCi0KLVVT
RV9JTlRFUk5BTF9TREsgPSAkKFVTRV9JTlRFUk5BTF9TREtfJChDT05GSUdVUkFUSU9OKSk7Ci1V
U0VfSU5URVJOQUxfU0RLX1Byb2R1Y3Rpb24gPSBZRVM7Ci1VU0VfSU5URVJOQUxfU0RLX0RlYnVn
ID0gJChIQVZFX0lOVEVSTkFMX1NESyk7Ci1VU0VfSU5URVJOQUxfU0RLX1JlbGVhc2UgPSAkKEhB
VkVfSU5URVJOQUxfU0RLKTsKLQotR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxs
dm0uY2xhbmcuMV8wOwotCi1BUkNIUyA9ICQoQVJDSFNfU1RBTkRBUkRfMzJfNjRfQklUKTsKKy8v
IAogCi1IRUFERVJfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2Nh
bC9pbmNsdWRlICIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRm9yd2FyZGluZ0hlYWRl
cnMiIC4uLyAuLi9pbmNsdWRlLworLy8gQnVpbGQgZm9yIFBQQyBhbmQgSW50ZWwsIDMyLSBhbmQg
NjQtYml0CitBUkNIUyA9IGkzODYgeDg2XzY0IHBwYyBwcGM2NAogCiAvLyBaZXJvbGluayBwcmV2
ZW50cyBsaW5rIHdhcm5pbmdzIHNvIHR1cm4gaXQgb2ZmCiBaRVJPX0xJTksgPSBOTwpAQCAtMjgs
MTkgKzE4LDYgQEAgUFJFQklORElORyA9IE5PCiAKIC8vIFN0cmljdGVzdCB3YXJuaW5nIHBvbGlj
eQogV0FSTklOR19DRkxBR1MgPSAtV2FsbCAtV2Vycm9yIC1XZW5kaWYtbGFiZWxzIC1XbmV3bGlu
ZS1lb2YgLVduby1zaWduLWNvbXBhcmUgLVdzaGFkb3cKLUNMQU5HX1dBUk5fQk9PTF9DT05WRVJT
SU9OID0gWUVTOwotQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05WRVJTSU9OID0gWUVTOwotQ0xBTkdf
V0FSTl9FTVBUWV9CT0RZID0gWUVTOwotQ0xBTkdfV0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZRVM7
Ci1DTEFOR19XQVJOX0lOVF9DT05WRVJTSU9OID0gWUVTOwotQ0xBTkdfV0FSTl9fRFVQTElDQVRF
X01FVEhPRF9NQVRDSCA9IFlFUzsKLUVOQUJMRV9TVFJJQ1RfT0JKQ19NU0dTRU5EID0gWUVTOwot
R0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBZRVM7Ci1HQ0NfV0FSTl9BQk9VVF9S
RVRVUk5fVFlQRSA9IFlFUzsKLUdDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNUT1IgPSBZRVM7Ci1H
Q0NfV0FSTl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTOwotR0NDX1dBUk5fVU5VU0VEX0ZVTkNU
SU9OID0gWUVTOwotR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOwogCiAvLyBXb3JrIGFy
b3VuZCBYY29kZSBidWdzIGJ5IHVzaW5nIGV4dGVybmFsIHN0cmlwLiBTZWU6CiAvLyBodHRwOi8v
bGlzdHMuYXBwbGUuY29tL2FyY2hpdmVzL1hjb2RlLXVzZXJzLzIwMDYvRmViL21zZzAwMDUwLmh0
bWwKQEAgLTQ5LDI3ICsyNiwxNiBAQCBTRVBBUkFURV9TVFJJUCA9IFlFUwogLy8gRm9yY2UgQzk5
IGRpYWxlY3QKIEdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gYzk5CiAKLS8vIEZvcmNlIEMrKzE0
Ci1DTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnUrKzE0OwotCiAvLyBub3Qgc3VyZSB3
aHkgYXBwbGUgZGVmYXVsdHMgdGhpcyBvbiwgYnV0IGl0J3MgcHJldHR5IHJpc2t5CiBBTFdBWVNf
U0VBUkNIX1VTRVJfUEFUSFMgPSBOTwogCiAvLyBUdXJuIG9uIHBvc2l0aW9uIGRlcGVuZGVudCBj
b2RlIGZvciBtb3N0IGNhc2VzIChvdmVycmlkZGVuIHdoZXJlIGFwcHJvcHJpYXRlKQogR0NDX0RZ
TkFNSUNfTk9fUElDID0gWUVTCiAKLUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAkKEdD
Q19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMpIEdURVNUX0hBU19UUjFfVFVQTEU9MCBHVEVTVF9I
QVNfUlRUST0wOwotCi1DTEFOR19DWFhfTElCUkFSWSA9IGxpYmMrKzsKLQotVEFSR0VUX01BQ19P
U19YX1ZFUlNJT05fTUFKT1IgPSAkKE1BQ19PU19YX1ZFUlNJT05fTUFKT1IpOwotCi1DT01CSU5F
X0hJRFBJX0lNQUdFUyA9IFlFUzsKKy8vIERlZmF1bHQgU0RLIGFuZCBtaW5pbXVtIE9TIHZlcnNp
b24gaXMgMTAuNAorU0RLUk9PVCA9ICQoREVWRUxPUEVSX1NES19ESVIpL01hY09TWDEwLjR1LnNk
aworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNAorR0NDX1ZFUlNJT04gPSA0LjAKIAog
Ly8gVkVSU0lPTklORyBCVUlMRCBTRVRUSU5HUyAodXNlZCBpbiBJbmZvLnBsaXN0KQogR1RFU1Rf
VkVSU0lPTklORk9fQUJPVVQgPSAgwqkgMjAwOCBHb29nbGUgSW5jLgotT1RIRVJfQ0ZMQUdTID0g
JChBU0FOX09USEVSX0NGTEFHUyk7Ci1PVEhFUl9DUExVU1BMVVNGTEFHUyA9ICQoQVNBTl9PVEhF
Ul9DUExVU1BMVVNGTEFHUyk7Ci1PVEhFUl9MREZMQUdTID0gJChBU0FOX09USEVSX0xERkxBR1Mp
OwotCi1TVVBQT1JURURfUExBVEZPUk1TID0gaXBob25lb3MgaXBob25lc2ltdWxhdG9yIG1hY29z
eCB0dm9zIHR2c2ltdWxhdG9yIHdhdGNob3Mgd2F0Y2hzaW11bGF0b3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvUHJvZHVjdGlvblByb2plY3QueGNj
b25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvUHJvZHVjdGlvblBy
b2plY3QueGNjb25maWcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxNmM2ODc4ZTk3
NjEwMTg4ZGFhODYyOWQzNTIxYWI5NDc3NmJhYzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmln
L1Byb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmlnCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBA
QAotLy8KLS8vICBQcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZpZwotLy8KLS8vICBUaGVzZSBhcmUg
UHJvZHVjdGlvbiBDb25maWd1cmF0aW9uIHByb2plY3Qgc2V0dGluZ3MgZm9yIHRoZSBndGVzdCBm
cmFtZXdvcmsKLS8vICBhbmQgZXhhbXBsZXMuIEl0IGlzIHNldCBpbiB0aGUgIkJhc2VkIE9uOiIg
ZHJvcGRvd24gaW4gdGhlICJQcm9qZWN0IiBpbmZvCi0vLyAgZGlhbG9nLgotLy8gIFRoaXMgZmls
ZSBpcyBiYXNlZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBpbjoKLS8vICBodHRw
Oi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8KLS8vIAotCi0jaW5j
bHVkZSAiUmVsZWFzZVByb2plY3QueGNjb25maWciCi0KLS8vIFVzZWQgYnkgSEVBREVSX1NFQVJD
SF9QQVRIUyBpbiBHZW5lcmFsLnhjY29uZmlnCi1XRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIg
PSAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUl8kKFdLX1VTRV9PVkVSUklERV9GUkFNRVdP
UktTX0RJUikpOwotV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSX05PID0gJChTWVNURU1fTElC
UkFSWV9ESVIpL0ZyYW1ld29ya3MvV2ViS2l0LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29y
a3MvV2ViQ29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnM7Ci1XRUJDT1JFX1BSSVZBVEVfSEVB
REVSU19ESVJfWUVTID0gJChXS19PVkVSUklERV9GUkFNRVdPUktTX0RJUikvV2ViQ29yZS5mcmFt
ZXdvcmsvUHJpdmF0ZUhlYWRlcnM7Ci0KLUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAkKFdLX1FV
T1RFRF9PVkVSUklERV9GUkFNRVdPUktTX0RJUikgJChpbmhlcml0ZWQpOwotCi1PTkxZX0FDVElW
RV9BUkNIID0gTk8KLQotU0RLUk9PVCA9IG1hY29zeC5pbnRlcm5hbDsKLQotV0tfRU1QVFlfID0g
WUVTOwotV0tfTk9UXyA9IFlFUzsKLVdLX05PVF9ZRVMgPSBOTzsKLQotV0tfVVNFX09WRVJSSURF
X0ZSQU1FV09SS1NfRElSW3Nkaz1tYWNvc3gqXSA9ICQoV0tfTk9UXyQoV0tfRU1QVFlfJChXS19P
VkVSUklERV9GUkFNRVdPUktTX0RJUikpKTsKLQotV0tfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVIg
PSAkKFdLX09WRVJSSURFX0ZSQU1FV09SS1NfRElSX1VTRV9TVEFHSU5HX0lOU1RBTExfUEFUSF8k
KFVTRV9TVEFHSU5HX0lOU1RBTExfUEFUSCkpOwotV0tfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVJf
VVNFX1NUQUdJTkdfSU5TVEFMTF9QQVRIX1lFUyA9ICQoU1lTVEVNX0xJQlJBUllfRElSKS9TdGFn
ZWRGcmFtZXdvcmtzL1NhZmFyaTsKLQotV0tfUVVPVEVEX09WRVJSSURFX0ZSQU1FV09SS1NfRElS
ID0gJChXS19RVU9URURfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVJfJChXS19VU0VfT1ZFUlJJREVf
RlJBTUVXT1JLU19ESVIpKTsKLVdLX1FVT1RFRF9PVkVSUklERV9GUkFNRVdPUktTX0RJUl9ZRVMg
PSAiJChXS19PVkVSUklERV9GUkFNRVdPUktTX0RJUikiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1JlbGVhc2VQcm9qZWN0LnhjY29uZmlnIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1JlbGVhc2VQcm9qZWN0LnhjY29uZmln
CmluZGV4IDEzZTkxN2ZiZmEyZGRmMmQzZWU1MzE1OThkYzBmYjBmMmI1YmY4NzYuLjUzNDlmMGEw
NGFmYzc4Mzc3ODc4MjhkM2Y0MjRhODg5ODc0ZWM5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9SZWxlYXNlUHJvamVjdC54Y2NvbmZpZworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvUmVsZWFzZVByb2plY3QueGNjb25m
aWcKQEAgLTMwLDEyICszMCwzIEBAIE9USEVSX0NGTEFHUyA9ICQoT1RIRVJfQ0ZMQUdTKSAtRE5E
RUJVRz0xIC1Xbm8tdW51c2VkLXZhcmlhYmxlCiAKIC8vIFdoZW4gd2Ugc3RyaXAgd2Ugd2FudCB0
byBzdHJpcCBhbGwgc3ltYm9scyBpbiByZWxlYXNlLCBidXQgc2F2ZSBleHRlcm5hbHMuCiBTVFJJ
UF9TVFlMRSA9IGFsbAotCi0vLyBVc2VkIGJ5IEhFQURFUl9TRUFSQ0hfUEFUSFMgaW4gR2VuZXJh
bC54Y2NvbmZpZwotV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSID0gJChCVUlMVF9QUk9EVUNU
U19ESVIpL1dlYkNvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwotCi1PTkxZX0FDVElWRV9B
UkNIID0gWUVTCi0KLVNES1JPT1QgPSAkKFNES1JPT1RfJChVU0VfSU5URVJOQUxfU0RLKSk7Ci1T
REtST09UXyA9IG1hY29zeDsKLVNES1JPT1RfWUVTID0gbWFjb3N4LmludGVybmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlU
YXJnZXQueGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvU3Rh
dGljTGlicmFyeVRhcmdldC54Y2NvbmZpZwppbmRleCBkZDMzMjU1YTk0NDc3MDIwY2YxMWY3MDU1
ZTQ0YWUyNTI4ZWI5Zjk3Li4zOTIyZmE1MWQ1MmQ1ZmYwZjMwNDZmZjUxYzBhZDZhOTZmYjQ4YmU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvU3RhdGlj
TGlicmFyeVRhcmdldC54Y2NvbmZpZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29k
ZS9Db25maWcvU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZwpAQCAtMTYsNSArMTYsMyBAQCBT
VFJJUF9TVFlMRSA9IGRlYnVnZ2luZwogCiAvLyBMZXQgdGhlIHVzZXIgaW5zdGFsbCBieSBzcGVj
aWZ5aW5nIHRoZSAkRFNUUk9PVCB3aXRoIHhjb2RlYnVpbGQKIFNLSVBfSU5TVEFMTCA9IE5PCi0K
LU9USEVSX0xERkxBR1MgPSA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94
Y29kZS9NYWtlZmlsZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL01ha2VmaWxlCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzhlODQ5M2RmMjk2OGFiZTc3MWM2ZDY3OGU4
ZDI5ZDM5YzliM2E0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL01ha2VmaWxlCisrKyAvZGV2L251bGwK
QEAgLTEsMiArMCwwIEBACi1TQ1JJUFRTX1BBVEggPz0gLi4vLi4vLi4vLi4vVG9vbHMvU2NyaXB0
cwotaW5jbHVkZSAuLi8uLi8uLi8uLi9NYWtlZmlsZS5zaGFyZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3J1bnRlc3Rz
LnNoIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1w
bGUvcnVudGVzdHMuc2gKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUv
d2lkZ2V0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9TYW1wbGVzL0Zy
YW1ld29ya1NhbXBsZS93aWRnZXRfdGVzdC5jYwppbmRleCA2MWMwZDJmZmQ3NmQxODA2YWEzNTk3
OWQ4YWUzNjQxMDY0OGFhYTE1Li44NzI1OTk0MjE4NTE0MDhlNzZhYWI2YzU2MGI4MTg5MjQ1OWJi
ZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9TYW1wbGVzL0Zy
YW1ld29ya1NhbXBsZS93aWRnZXRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS93aWRnZXRfdGVzdC5jYwpAQCAtMzYsNyAr
MzYsNyBAQAogLy8gVGhpcyBpcyBhIHNpbXBsZSB0ZXN0IGZpbGUgZm9yIHRoZSBXaWRnZXQgY2xh
c3MgaW4gdGhlIFdpZGdldC5mcmFtZXdvcmsKIAogI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKICNpbmNsdWRlIDxX
aWRnZXQvd2lkZ2V0Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hj
b2RlL1NjcmlwdHMvcnVudGVzdHMuc2ggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9T
Y3JpcHRzL3J1bnRlc3RzLnNoCm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL1NjcmlwdHMvdmVyc2lvbmdlbmVy
YXRlLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2NyaXB0cy92ZXJzaW9uZ2Vu
ZXJhdGUucHkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvZ3Rlc3QueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMWZmM2ZiYWZlZmJhYWMzYjgzODI0OGIxN2Q1Njg3NmIzZDVmNmJlOC4u
ODQ3M2MzYzkyMzM0NjBkYjExY2ViODJhYmFlMmEzNjc2OWYyY2M3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvZ3Rlc3QueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9ndGVzdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0zNyw3ICszNyw2IEBACiAvKiBFbmQgUEJYQWdncmVnYXRlVGFyZ2V0
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KLQkJMUEwQTRD
NDUxNEI3QTNCNTAwODk1MTM1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMEE0QzQ0MTRCN0EzQjUw
MDg5NTEzNSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CiAJCTIyNEExMkEzMEU5
RUFEQ0MwMEJEMTdGRCAvKiBndGVzdC10ZXN0LXBhcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyNEExMkEyMEU5RUFEQ0MwMEJEMTdGRCAvKiBndGVz
dC10ZXN0LXBhcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07CiAJCTNCRjZGMkEwMEU3OUI1QUQwMDBGMkVFRSAvKiBndGVzdC10eXBlLXV0aWwuaCBpbiBD
b3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
M0JGNkYyOUYwRTc5QjVBRDAwMEYyRUVFIC8qIGd0ZXN0LXR5cGUtdXRpbC5oICovOyB9OwogCQkz
QkY2RjJBNTBFNzlCNjE2MDAwRjJFRUUgLyogZ3Rlc3QtdHlwZWQtdGVzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0JGNkYyQTQwRTc5QjYxNjAwMEYy
RUVFIC8qIGd0ZXN0LXR5cGVkLXRlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
dWJsaWMsICk7IH07IH07CkBAIC00Nyw3ICs0Niw3IEBACiAJCTQwNDg4NDNCMEUyRjc5OUIwMENG
NzY1OCAvKiBndGVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDA0ODgzREUwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk0MDQ4ODQzQzBFMkY3OTlCMDBDRjc2
NTggLyogZ3Rlc3RfcHJlZF9pbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MDQ4ODNERjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3RfcHJlZF9pbXBs
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk0MDQ4
ODQzRDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3RfcHJvZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRTAwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0
ZXN0X3Byb2QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07
Ci0JCTQwNDg4NDUwMEUyRjc5OUIwMENGNzY1OCAvKiBSRUFETUUgaW4gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0Y2MEUyRjc5OUIwMENGNzY1OCAv
KiBSRUFETUUgKi87IH07CisJCTQwNDg4NDUwMEUyRjc5OUIwMENGNzY1OCAvKiBSRUFETUUubWQg
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0Y2
MEUyRjc5OUIwMENGNzY1OCAvKiBSRUFETUUubWQgKi87IH07CiAJCTQwNDg4NEEwMEUyRjdCRTYw
MENGNzY1OCAvKiBndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmggaW4gQ29weSBIZWFkZXJzIElu
dGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0UyMEUyRjc5
OUIwMENGNzY1OCAvKiBndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmggKi87IH07CiAJCTQwNDg4
NEExMEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1maWxlcGF0aC5oIGluIENvcHkgSGVhZGVycyBJ
bnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNFMzBFMkY3
OTlCMDBDRjc2NTggLyogZ3Rlc3QtZmlsZXBhdGguaCAqLzsgfTsKIAkJNDA0ODg0QTIwRTJGN0JF
NjAwQ0Y3NjU4IC8qIGd0ZXN0LWludGVybmFsLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0U0MEUyRjc5OUIwMENGNzY1
OCAvKiBndGVzdC1pbnRlcm5hbC5oICovOyB9OwpAQCAtNTUsNyArNTQsNyBAQAogCQk0MDQ4ODRB
NDBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3Qtc3RyaW5nLmggaW4gQ29weSBIZWFkZXJzIEludGVy
bmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0U2MEUyRjc5OUIw
MENGNzY1OCAvKiBndGVzdC1zdHJpbmcuaCAqLzsgfTsKIAkJNDA0ODg0QUMwRTJGN0NEOTAwQ0Y3
NjU4IC8qIENIQU5HRVMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQwNDg4NEE5MEUyRjdDRDkwMENGNzY1OCAvKiBDSEFOR0VTICovOyB9OwogCQk0MDQ4
ODRBRDBFMkY3Q0Q5MDBDRjc2NTggLyogQ09OVFJJQlVUT1JTIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODRBQTBFMkY3Q0Q5MDBDRjc2NTggLyog
Q09OVFJJQlVUT1JTICovOyB9OwotCQk0MDQ4ODRBRTBFMkY3Q0Q5MDBDRjc2NTggLyogQ09QWUlO
RyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODg0
QUIwRTJGN0NEOTAwQ0Y3NjU4IC8qIENPUFlJTkcgKi87IH07CisJCTQwNDg4NEFFMEUyRjdDRDkw
MENGNzY1OCAvKiBMSUNFTlNFIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogTElDRU5TRSAqLzsgfTsKIAkJ
NDA4OTlGM0EwRkZBNzBENDAwMEIyOUFFIC8qIGd0ZXN0LWFsbC5jYyBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyNEExMkExMEU5RUFEQTcwMEJEMTdGRCAv
KiBndGVzdC1hbGwuY2MgKi87IH07CiAJCTQwODk5RjUwMEZGQTcyODEwMDBCMjlBRSAvKiBndGVz
dC10dXBsZS5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MDg5OUY0RDBGRkE3MjcxMDAwQjI5QUUgLyogZ3Rlc3QtdHVwbGUuaCAq
LzsgfTsKIAkJNDA4OTlGNTMwRkZBNzJBMDAwMEIyOUFFIC8qIGd0ZXN0X3VuaXR0ZXN0LmNjIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0IyMzhDMTIwRTdG
RTEzQzAwODQ2RTExIC8qIGd0ZXN0X3VuaXR0ZXN0LmNjICovOyB9OwpAQCAtNzksNiArNzgsMTEg
QEAKIAkJNDUzOUM5MzgwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LWxpbmtlZF9wdHIuaCBpbiBD
b3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDUzOUM5MzUwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LWxpbmtlZF9wdHIuaCAqLzsgfTsKIAkJ
NDUzOUM5MzkwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgg
aW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ1MzlDOTM2MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRl
ZC5oICovOyB9OwogCQk0NTM5QzkzQTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdXRp
bC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NTM5QzkzNzBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC5oICov
OyB9OworCQk0NTY3QzgxODEyNjRGRjcxMDA3NzQwQkUgLyogZ3Rlc3QtcHJpbnRlcnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1NjdDODE3MTI2NEZG
NzEwMDc3NDBCRSAvKiBndGVzdC1wcmludGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJRTM1QjVFMjgxRjYxNDk0MDAwNTQ2RjFEIC8qIGd0ZXN0
LXBvcnQtYXJjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM1QjVFMjcxRjYxNDk0MDAwNTQ2RjFEIC8qIGd0ZXN0LXBvcnQtYXJjaC5oICovOyB9Owor
CQlFMzVCNUUyRjFGNjE0OTg0MDA1NDZGMUQgLyogZ3Rlc3QtcG9ydC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1QjVFMkMxRjYxNDk4NDAwNTQ2RjFE
IC8qIGd0ZXN0LXBvcnQuaCAqLzsgfTsKKwkJRTM1QjVFMzAxRjYxNDk4NDAwNTQ2RjFEIC8qIGd0
ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzVCNUUyRDFGNjE0OTg0MDA1NDZGMUQgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLzsgfTsK
KwkJRTM1QjVFMzExRjYxNDk4NDAwNTQ2RjFEIC8qIGd0ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVCNUUyRTFGNjE0OTg0MDA1NDZGMUQgLyog
Z3Rlc3QuaCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpAQCAtMTk5LDcgKzIwMyw2IEBACiAv
KiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZp
bGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCQkxQTBBNEM0NDE0QjdBM0I1MDA4OTUxMzUgLyogSmF2
YVNjcmlwdENvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTIyNEExMkEx
MEU5RUFEQTcwMEJEMTdGRCAvKiBndGVzdC1hbGwuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gImd0ZXN0LWFsbC5jYyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTIyNEExMkEyMEU5RUFEQ0MwMEJEMTdGRCAvKiBndGVzdC10ZXN0LXBhcnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC10ZXN0LXBhcnQuaCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNCMjM4QzEyMEU3RkUxM0MwMDg0NkUxMSAvKiBndGVzdF91
bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGd0ZXN0X3Vu
aXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE4LDExICsyMjEsMTEg
QEAKIAkJNDA0ODgzRTQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWludGVybmFsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1pbnRlcm5hbC5oIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDA0ODgzRTUwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXBv
cnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXBvcnQuaCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwNDg4M0U2MEUyRjc5OUIwMENGNzY1OCAvKiBn
dGVzdC1zdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXN0
cmluZy5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDA0ODgzRjYwRTJGNzk5QjAw
Q0Y3NjU4IC8qIFJFQURNRSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBSRUFETUU7IHBhdGggPSAu
Li9SRUFETUU7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNDA0ODgzRjYwRTJGNzk5
QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBSRUFETUUubWQ7
IHBhdGggPSAuLi9SRUFETUUubWQ7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNDA0
ODg0MEQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X21haW4uY2MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBndGVzdF9tYWluLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MDQ4ODRBOTBFMkY3Q0Q5MDBDRjc2NTggLyogQ0hBTkdFUyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IG5hbWUgPSBDSEFOR0VTOyBwYXRoID0gLi4vQ0hBTkdFUzsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OwogCQk0MDQ4ODRBQTBFMkY3Q0Q5MDBDRjc2NTggLyogQ09OVFJJQlVUT1JTICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgbmFtZSA9IENPTlRSSUJVVE9SUzsgcGF0aCA9IC4uL0NPTlRSSUJVVE9S
Uzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQk0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2
NTggLyogQ09QWUlORyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDT1BZSU5HOyBwYXRoID0gLi4v
Q09QWUlORzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk0MDQ4ODRBQjBFMkY3Q0Q5
MDBDRjc2NTggLyogTElDRU5TRSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBMSUNFTlNFOyBwYXRo
ID0gLi4vTElDRU5TRTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk0MDg5OUY0MzBG
RkE3MTg0MDAwQjI5QUUgLyogZ3Rlc3RfdW5pdHRlc3QtZnJhbWV3b3JrICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1
dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSAiZ3Rlc3RfdW5pdHRlc3QtZnJhbWV3
b3JrIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDA4OTlGNEQwRkZB
NzI3MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9ICJndGVzdC10dXBsZS5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDA4
OTlGQjMwRkZBNzU2NzAwMEIyOUFFIC8qIFN0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZp
Zzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzOSwxMiArMjQyLDE2IEBACiAJCTQw
RDRDREYzMEUzMEUwNzQwMDI5NDgwMSAvKiBHZW5lcmFsLnhjY29uZmlnICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC54Y2NvbmZpZzsgcGF0aCA9IEdlbmVyYWwueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQwRDRDREY0MEUzMEUwNzQwMDI5NDgwMSAvKiBSZWxlYXNlUHJvamVjdC54Y2Nv
bmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBSZWxlYXNlUHJvamVjdC54Y2Nv
bmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDBENENGNTEwRTMwRjVFMjAwMjk0
ODAxIC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9IEluZm8u
cGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ0QzQ4REZGMTRBNDA5OEYwMEEy
RDlDNyAvKiBQcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBQcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDUzOUM4RkYwRUMyN0Y2NDAwQTcwRjRDIC8qIGd0ZXN0LmZyYW1ld29yayAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5m
cmFtZXdvcms7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGd0ZXN0LmZyYW1ld29yazsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDUzOUM5MzMwRUMyODBBRTAwQTcw
RjRDIC8qIGd0ZXN0LXBhcmFtLXRlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gImd0ZXN0LXBhcmFtLXRlc3QuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1
MzlDOTM1MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1saW5rZWRfcHRyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1saW5rZWRfcHRyLmgiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NTM5QzkzNjBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0t
dXRpbC1nZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0
LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NTM5QzkzNzBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcGFyYW0tdXRpbC5oIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDU2N0M4MTcxMjY0RkY3MTAwNzc0MEJFIC8qIGd0ZXN0LXByaW50
ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1wcmludGVycy5o
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1QjVFMjcxRjYxNDk0MDAwNTQ2RjFE
IC8qIGd0ZXN0LXBvcnQtYXJjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAi
Z3Rlc3QtcG9ydC1hcmNoLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzVCNUUy
QzFGNjE0OTg0MDA1NDZGMUQgLyogZ3Rlc3QtcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSAiZ3Rlc3QtcG9ydC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM1QjVFMkQxRjYxNDk4NDAwNTQ2RjFEIC8qIGd0ZXN0LXByaW50ZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1wcmludGVycy5oIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTM1QjVFMkUxRjYxNDk4NDAwNTQ2RjFEIC8qIGd0ZXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGd0ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBC
WEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTI4NCwxNCArMjkxLDYgQEAKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKLQkJ
NDQ0RDExNzIxNEEyNjI4RjAwOUZFQzNGIC8qIEZyYW1ld29ya3MgKi8gPSB7Ci0JCQlpc2EgPSBQ
QlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
Ci0JCQlmaWxlcyA9ICgKLQkJCQkxQTBBNEM0NTE0QjdBM0I1MDA4OTUxMzUgLyogSmF2YVNjcmlw
dENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCi0JCQkpOwotCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07CiAvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCkBAIC0z
MTYsNyArMzE1LDYgQEAKIAkJCQkwOEZCNzdBQ0ZFODQxNzA3QzAyQUFDMDcgLyogU291cmNlICov
LAogCQkJCTQwRDRDRjRFMEUzMEY1RTIwMDI5NDgwMSAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJNDAz
RUUzN0IwRTM3NzgyMjAwNEJEMUUyIC8qIFNjcmlwdHMgKi8sCi0JCQkJMUEwQTRDNDYxNEI3QTNC
QzAwODk1MTM1IC8qIEZyYW1ld29ya3MgKi8sCiAJCQkJMDM0NzY4RERGRjM4QTQ1QTExREI5QzhC
IC8qIFByb2R1Y3RzICovLAogCQkJKTsKIAkJCW5hbWUgPSBndGVzdDsKQEAgLTMyNywyNCArMzI1
LDE2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MDQ4ODRBOTBFMkY3Q0Q5MDBDRjc2NTggLyog
Q0hBTkdFUyAqLywKIAkJCQk0MDQ4ODRBQTBFMkY3Q0Q5MDBDRjc2NTggLyogQ09OVFJJQlVUT1JT
ICovLAotCQkJCTQwNDg4NEFCMEUyRjdDRDkwMENGNzY1OCAvKiBDT1BZSU5HICovLAogCQkJCTQw
NDg4M0Q5MEUyRjc5OUIwMENGNzY1OCAvKiBpbmNsdWRlICovLAotCQkJCTQwNDg4M0Y2MEUyRjc5
OUIwMENGNzY1OCAvKiBSRUFETUUgKi8sCisJCQkJNDA0ODg0QUIwRTJGN0NEOTAwQ0Y3NjU4IC8q
IExJQ0VOU0UgKi8sCiAJCQkJNDA4OUEwMkYwRkZBQ0Y4NDAwMEIyOUFFIC8qIHNhbXBsZXMgKi8s
CiAJCQkJNDA0ODg0MDcwRTJGNzk5QjAwQ0Y3NjU4IC8qIHNyYyAqLywKIAkJCQkzQjIzOEJGMDBF
N0ZFMTNCMDA4NDZFMTEgLyogdGVzdCAqLywKKwkJCQk0MDQ4ODNGNjBFMkY3OTlCMDBDRjc2NTgg
LyogUkVBRE1FLm1kICovLAogCQkJKTsKIAkJCW5hbWUgPSBTb3VyY2U7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OwotCQkxQTBBNEM0NjE0QjdBM0JDMDA4OTUxMzUgLyogRnJhbWV3
b3JrcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUEw
QTRDNDQxNEI3QTNCNTAwODk1MTM1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKLQkJ
CSk7Ci0JCQluYW1lID0gRnJhbWV3b3JrczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0J
CX07CiAJCTNCMjM4QkYwMEU3RkUxM0IwMDg0NkUxMSAvKiB0ZXN0ICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTM3OSw2ICszNjksNyBAQAogCQkJCTQwNDg4
M0RCMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1kZWF0aC10ZXN0LmggKi8sCiAJCQkJNDA0ODgz
REMwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LW1lc3NhZ2UuaCAqLywKIAkJCQk0NTM5QzkzMzBF
QzI4MEFFMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdGVzdC5oICovLAorCQkJCTQ1NjdDODE3MTI2
NEZGNzEwMDc3NDBCRSAvKiBndGVzdC1wcmludGVycy5oICovLAogCQkJCTQwNDg4M0REMEUyRjc5
OUIwMENGNzY1OCAvKiBndGVzdC1zcGkuaCAqLywKIAkJCQkyMjRBMTJBMjBFOUVBRENDMDBCRDE3
RkQgLyogZ3Rlc3QtdGVzdC1wYXJ0LmggKi8sCiAJCQkJM0JGNkYyQTQwRTc5QjYxNjAwMEYyRUVF
IC8qIGd0ZXN0LXR5cGVkLXRlc3QuaCAqLywKQEAgLTM5MiwxMiArMzgzLDE0IEBACiAJCTQwNDg4
M0UxMEUyRjc5OUIwMENGNzY1OCAvKiBpbnRlcm5hbCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM1QjVFMkIxRjYxNDk4NDAwNTQ2RjFEIC8qIGN1c3Rv
bSAqLywKIAkJCQk0MDQ4ODNFMjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtZGVhdGgtdGVzdC1p
bnRlcm5hbC5oICovLAogCQkJCTQwNDg4M0UzMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1maWxl
cGF0aC5oICovLAogCQkJCTQwNDg4M0U0MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1pbnRlcm5h
bC5oICovLAogCQkJCTQ1MzlDOTM1MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1saW5rZWRfcHRy
LmggKi8sCiAJCQkJNDUzOUM5MzYwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwt
Z2VuZXJhdGVkLmggKi8sCiAJCQkJNDUzOUM5MzcwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LXBh
cmFtLXV0aWwuaCAqLywKKwkJCQlFMzVCNUUyNzFGNjE0OTQwMDA1NDZGMUQgLyogZ3Rlc3QtcG9y
dC1hcmNoLmggKi8sCiAJCQkJNDA0ODgzRTUwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXBvcnQu
aCAqLywKIAkJCQk0MDQ4ODNFNjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Qtc3RyaW5nLmggKi8s
CiAJCQkJNDA4OTlGNEQwRkZBNzI3MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggKi8sCkBAIC00
MzMsNyArNDI2LDYgQEAKIAkJCQk0MEQ0Q0RGMTBFMzBFMDc0MDAyOTQ4MDEgLyogRGVidWdQcm9q
ZWN0LnhjY29uZmlnICovLAogCQkJCTQwRDRDREYyMEUzMEUwNzQwMDI5NDgwMSAvKiBGcmFtZXdv
cmtUYXJnZXQueGNjb25maWcgKi8sCiAJCQkJNDBENENERjMwRTMwRTA3NDAwMjk0ODAxIC8qIEdl
bmVyYWwueGNjb25maWcgKi8sCi0JCQkJNDRDNDhERkYxNEE0MDk4RjAwQTJEOUM3IC8qIFByb2R1
Y3Rpb25Qcm9qZWN0LnhjY29uZmlnICovLAogCQkJCTQwRDRDREY0MEUzMEUwNzQwMDI5NDgwMSAv
KiBSZWxlYXNlUHJvamVjdC54Y2NvbmZpZyAqLywKIAkJCQk0MDg5OUZCMzBGRkE3NTY3MDAwQjI5
QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLywKIAkJCSk7CkBAIC00NDgsNiAr
NDQwLDE2IEBACiAJCQlwYXRoID0gUmVzb3VyY2VzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKIAkJfTsKKwkJRTM1QjVFMkIxRjYxNDk4NDAwNTQ2RjFEIC8qIGN1c3RvbSAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM1QjVFMkMxRjYxNDk4NDAw
NTQ2RjFEIC8qIGd0ZXN0LXBvcnQuaCAqLywKKwkJCQlFMzVCNUUyRDFGNjE0OTg0MDA1NDZGMUQg
LyogZ3Rlc3QtcHJpbnRlcnMuaCAqLywKKwkJCQlFMzVCNUUyRTFGNjE0OTg0MDA1NDZGMUQgLyog
Z3Rlc3QuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gY3VzdG9tOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBC
WEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ1OCw5ICs0NjAsMTQgQEAKIAkJCQk0
MDQ4ODQzODBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtZGVhdGgtdGVzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDA0ODg0MzkwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LW1lc3NhZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ1MzlDOTM0MEVDMjgwQUUwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS10
ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzVCNUUyODFGNjE0OTQwMDA1NDZGMUQgLyogZ3Rl
c3QtcG9ydC1hcmNoLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzVCNUUyRjFGNjE0OTg0MDA1NDZG
MUQgLyogZ3Rlc3QtcG9ydC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1QjVFMzAxRjYxNDk4NDAw
NTQ2RjFEIC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NTY3QzgxODEy
NjRGRjcxMDA3NzQwQkUgLyogZ3Rlc3QtcHJpbnRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQw
NDg4NDNBMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zcGkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTIyNEExMkEzMEU5RUFEQ0MwMEJEMTdGRCAvKiBndGVzdC10ZXN0LXBhcnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTNCRjZGMkE1MEU3OUI2MTYwMDBGMkVFRSAvKiBndGVzdC10eXBlZC10ZXN0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFMzVCNUUzMTFGNjE0OTg0MDA1NDZGMUQgLyogZ3Rlc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTQwNDg4NDNCMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0M0MwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X3ByZWRf
aW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0M0QwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0
ZXN0X3Byb2QuaCBpbiBIZWFkZXJzICovLApAQCAtNTc4LDcgKzU4NSw2IEBACiAJCQkJOEQwN0Yy
QkQwNDg2Q0M3QTAwN0NEMUQwIC8qIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0QTUwRTJGN0MwNDAw
Q0Y3NjU4IC8qIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKIAkJCQk4RDA3RjJCRjA0ODZDQzdB
MDA3Q0QxRDAgLyogUmVzb3VyY2VzICovLAotCQkJCTQ0NEQxMTcyMTRBMjYyOEYwMDlGRUMzRiAv
KiBGcmFtZXdvcmtzICovLAogCQkJKTsKIAkJCWJ1aWxkUnVsZXMgPSAoCiAJCQkpOwpAQCAtNTk5
LDggKzYwNSw3IEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVj
dCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlhdHRyaWJ1dGVzID0gewotCQkJCUxh
c3RTd2lmdFVwZGF0ZUNoZWNrID0gMDcwMDsKLQkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDYwMDsK
KwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDQ2MDsKIAkJCX07CiAJCQlidWlsZENvbmZpZ3VyYXRp
b25MaXN0ID0gNEZBREMyNDYwOEI0MTU2RDAwQUJFNTVFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24g
bGlzdCBmb3IgUEJYUHJvamVjdCAiZ3Rlc3QiICovOwogCQkJY29tcGF0aWJpbGl0eVZlcnNpb24g
PSAiWGNvZGUgMy4yIjsKQEAgLTYzOCw5ICs2NDMsOSBAQAogCQkJZmlsZXMgPSAoCiAJCQkJNDA0
ODg0QUMwRTJGN0NEOTAwQ0Y3NjU4IC8qIENIQU5HRVMgaW4gUmVzb3VyY2VzICovLAogCQkJCTQw
NDg4NEFEMEUyRjdDRDkwMENGNzY1OCAvKiBDT05UUklCVVRPUlMgaW4gUmVzb3VyY2VzICovLAot
CQkJCTQwNDg4NEFFMEUyRjdDRDkwMENGNzY1OCAvKiBDT1BZSU5HIGluIFJlc291cmNlcyAqLywK
IAkJCQk0MEM4NDk3ODEwMUEzNjU0MDA4MzY0MkEgLyogbGliZ3Rlc3RfbWFpbi5hIGluIFJlc291
cmNlcyAqLywKLQkJCQk0MDQ4ODQ1MDBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FIGluIFJlc291
cmNlcyAqLywKKwkJCQk0MDQ4ODRBRTBFMkY3Q0Q5MDBDRjc2NTggLyogTElDRU5TRSBpbiBSZXNv
dXJjZXMgKi8sCisJCQkJNDA0ODg0NTAwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC04MTIsMjAgKzgxNywyNSBAQAogCQkzQjIzOEY2MDBFODI4QjU0MDA4
NDZFMTEgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CiAJCQkJ
Q09QWV9QSEFTRV9TVFJJUCA9IE5POwogCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POwogCQkJ
CUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxl
LmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKIAkJCQlQUk9EVUNUX05BTUUgPSBDaGVjazsKKwkJ
CQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKIAkJM0Iy
MzhGNjEwRTgyOEI1NDAwODQ2RTExIC8qIFJlbGVhc2UgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9J
TUFHRVMgPSBZRVM7CiAJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKIAkJCQlERUJVR19JTkZP
Uk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKLQkJCQlHQ0NfRU5BQkxFX0ZJWF9B
TkRfQ09OVElOVUUgPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMu
bGx2bS5jbGFuZy4xXzA7CiAJCQkJUFJPRFVDVF9OQU1FID0gQ2hlY2s7CisJCQkJU0RLUk9PVCA9
IG1hY29zeDsKIAkJCQlaRVJPX0xJTksgPSBOTzsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsK
QEAgLTgzMywzNSArODQzLDQ5IEBACiAJCTQwODk5RjQ1MEZGQTcxODUwMDBCMjlBRSAvKiBEZWJ1
ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4x
XzA7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9IC4uLzsKIAkJCQlQUk9EVUNUX05BTUUgPSAi
Z3Rlc3RfdW5pdHRlc3QtZnJhbWV3b3JrIjsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsK
IAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKIAkJNDA4OTlGNDYwRkZBNzE4NTAwMEIyOUFFIC8qIFJl
bGVhc2UgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0
dGluZ3MgPSB7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xh
bmcuMV8wOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAuLi87CiAJCQkJUFJPRFVDVF9OQU1F
ID0gImd0ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJ
CX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKIAkJNDA4OUEwMTUwRkZBQ0VGRDAwMEIyOUFF
IC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWls
ZFNldHRpbmdzID0geworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZt
LmNsYW5nLjFfMDsKIAkJCQlQUk9EVUNUX05BTUUgPSAic2FtcGxlMV91bml0dGVzdC1mcmFtZXdv
cmsiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9
OwogCQk0MDg5QTAxNjBGRkFDRUZEMDAwQjI5QUUgLyogUmVsZWFzZSAqLyA9IHsKIAkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlHQ0NfVkVS
U0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CiAJCQkJUFJPRFVDVF9O
QU1FID0gInNhbXBsZTFfdW5pdHRlc3QtZnJhbWV3b3JrIjsKKwkJCQlTREtST09UID0gbWFjb3N4
OwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwogCQk0MEM0NEFERjBFMzc5OEY0MDA4
RkNDNTEgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CisJCQkJ
R0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCU1B
Q09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7
CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlUQVJHRVRfTkFNRSA9IGd0ZXN0OwogCQkJfTsK
IAkJCW5hbWUgPSBEZWJ1ZzsKQEAgLTg2OSw3ICs4OTMsMTEgQEAKIAkJNDBDNDRBRTAwRTM3OThG
NDAwOEZDQzUxIC8qIFJlbGVhc2UgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7
CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOwor
CQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CiAJCQkJUFJPRFVDVF9OQU1FID0g
Z3Rlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlUQVJHRVRfTkFNRSA9IGd0ZXN0Owog
CQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwpAQCAtODc4LDkgKzkwNiwxNiBAQAogCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDQw
ODk5RkIzMEZGQTc1NjcwMDBCMjlBRSAvKiBTdGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmlnICov
OwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDT01CSU5FX0hJRFBJX0lNQUdFUyA9IFlFUzsK
IAkJCQlHQ0NfSU5MSU5FU19BUkVfUFJJVkFURV9FWFRFUk4gPSBZRVM7CiAJCQkJR0NDX1NZTUJP
TFNfUFJJVkFURV9FWFRFUk4gPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29t
cGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJ
CS4uLywKKwkJCQkJLi4vaW5jbHVkZS8sCisJCQkJKTsKIAkJCQlQUk9EVUNUX05BTUUgPSBndGVz
dDsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsK
QEAgLTg4OCw5ICs5MjMsMTYgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJ
YmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyog
U3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CiAJCQkJR0NDX0lOTElORVNfQVJFX1BSSVZB
VEVfRVhURVJOID0gWUVTOwogCQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gWUVTOwor
CQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJ
CQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLi8sCisJCQkJCS4uL2luY2x1ZGUvLAor
CQkJCSk7CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsK
IAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKQEAgLTg5OCw3ICs5NDAsMTQgQEAKIAkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVu
Y2UgPSA0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2Nv
bmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMg
PSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcu
MV8wOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCS4uLywKKwkJCQkJLi4vaW5j
bHVkZS8sCisJCQkJKTsKIAkJCQlQUk9EVUNUX05BTUUgPSBndGVzdF9tYWluOworCQkJCVNES1JP
T1QgPSBtYWNvc3g7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwpAQCAtOTA2LDEzNCAr
OTU1LDcyIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1
cmF0aW9uUmVmZXJlbmNlID0gNDA4OTlGQjMwRkZBNzU2NzAwMEIyOUFFIC8qIFN0YXRpY0xpYnJh
cnlUYXJnZXQueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNPTUJJTkVf
SElEUElfSU1BR0VTID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVy
cy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLi8s
CisJCQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3RfbWFp
bjsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9
OwogCQk0MEM4NDk4NTEwMUEzNjg1MDA4MzY0MkEgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJR0NDX1ZFUlNJ
T04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUhFQURFUl9TRUFS
Q0hfUEFUSFMgPSAuLi87CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3RfdW5pdHRlc3Q7CisJCQkJ
U0RLUk9PVCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CiAJCTQwQzg0
OTg2MTAxQTM2ODUwMDgzNjQyQSAvKiBSZWxlYXNlICovID0gewogCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUdDQ19WRVJTSU9OID0gY29t
LmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhT
ID0gLi4vOwogCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0X3VuaXR0ZXN0OworCQkJCVNES1JPT1Qg
PSBtYWNvc3g7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CiAJCTQwQzg0OTk1MTAx
QTM2QTYwMDgzNjQyQSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5j
b21waWxlcnMubGx2bS5jbGFuZy4xXzA7CiAJCQkJUFJPRFVDVF9OQU1FID0gInNhbXBsZTFfdW5p
dHRlc3Qtc3RhdGljIjsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUgPSBE
ZWJ1ZzsKIAkJfTsKIAkJNDBDODQ5OTYxMDFBMzZBNjAwODM2NDJBIC8qIFJlbGVhc2UgKi8gPSB7
CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOwogCQkJ
CVBST0RVQ1RfTkFNRSA9ICJzYW1wbGUxX3VuaXR0ZXN0LXN0YXRpYyI7CisJCQkJU0RLUk9PVCA9
IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKLQkJNDRDNDhFMDQxNEE0
MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKLQkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDRDNDhERkYxNEE0MDk4
RjAwQTJEOUM3IC8qIFByb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmlnICovOwotCQkJYnVpbGRTZXR0
aW5ncyA9IHsKLQkJCX07Ci0JCQluYW1lID0gUHJvZHVjdGlvbjsKLQkJfTsKLQkJNDRDNDhFMDUx
NEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKLQkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDBENENERjIwRTMw
RTA3NDAwMjk0ODAxIC8qIEZyYW1ld29ya1RhcmdldC54Y2NvbmZpZyAqLzsKLQkJCWJ1aWxkU2V0
dGluZ3MgPSB7Ci0JCQkJRFlMSUJfQ09NUEFUSUJJTElUWV9WRVJTSU9OID0gMTsKLQkJCQlEWUxJ
Ql9DVVJSRU5UX1ZFUlNJT04gPSAxOwotCQkJCUlORk9QTElTVF9GSUxFID0gUmVzb3VyY2VzL0lu
Zm8ucGxpc3Q7Ci0JCQkJSU5GT1BMSVNUX1BSRUZJWF9IRUFERVIgPSAiJChQUk9KRUNUX1RFTVBf
RElSKS9WZXJzaW9uLmgiOwotCQkJCUlORk9QTElTVF9QUkVQUk9DRVNTID0gWUVTOwotCQkJCVBS
T0RVQ1RfTkFNRSA9IGd0ZXN0OwotCQkJCVZFUlNJT05JTkdfU1lTVEVNID0gImFwcGxlLWdlbmVy
aWMiOwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9OwotCQk0NEM0OEUwNjE0QTQw
OURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOwotCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0MDg5OUZCMzBGRkE3NTY3
MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLzsKLQkJCWJ1aWxkU2V0
dGluZ3MgPSB7Ci0JCQkJR0NDX0lOTElORVNfQVJFX1BSSVZBVEVfRVhURVJOID0gWUVTOwotCQkJ
CUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gWUVTOwotCQkJCVBST0RVQ1RfTkFNRSA9IGd0
ZXN0OwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9OwotCQk0NEM0OEUwNzE0QTQw
OURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOwotCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0MDg5OUZCMzBGRkE3NTY3
MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLzsKLQkJCWJ1aWxkU2V0
dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3RfbWFpbjsKLQkJCX07Ci0JCQluYW1l
ID0gUHJvZHVjdGlvbjsKLQkJfTsKLQkJNDRDNDhFMDgxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1
Y3Rpb24gKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0
dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gImd0ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayI7
Ci0JCQl9OwotCQkJbmFtZSA9IFByb2R1Y3Rpb247Ci0JCX07Ci0JCTQ0QzQ4RTA5MTRBNDA5REUw
MEEyRDlDNyAvKiBQcm9kdWN0aW9uICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0X3VuaXR0
ZXN0OwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9OwotCQk0NEM0OEUwQTE0QTQw
OURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlQUk9EVUNUX05BTUUgPSAic2FtcGxl
MV91bml0dGVzdC1mcmFtZXdvcmsiOwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9
OwotCQk0NEM0OEUwQjE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlQUk9E
VUNUX05BTUUgPSAic2FtcGxlMV91bml0dGVzdC1zdGF0aWMiOwotCQkJfTsKLQkJCW5hbWUgPSBQ
cm9kdWN0aW9uOwotCQl9OwotCQk0NEM0OEUwQzE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlv
biAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5n
cyA9IHsKLQkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOwotCQkJCURFQlVHX0lORk9STUFUSU9O
X0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOwotCQkJCUdDQ19FTkFCTEVfRklYX0FORF9DT05U
SU5VRSA9IE5POwotCQkJCVBST0RVQ1RfTkFNRSA9IENoZWNrOwotCQkJCVpFUk9fTElOSyA9IE5P
OwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9OwotCQk0NEM0OEUwRDE0QTQwOURF
MDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlQUk9EVUNUX05BTUUgPSBndGVzdDsKLQkJ
CQlUQVJHRVRfTkFNRSA9IGd0ZXN0OwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9
OwogCQk0RkFEQzI0MzA4QjQxNTZEMDBBQkU1NUUgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDBE
NENERjIwRTMwRTA3NDAwMjk0ODAxIC8qIEZyYW1ld29ya1RhcmdldC54Y2NvbmZpZyAqLzsKIAkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CiAJCQkJ
RFlMSUJfQ09NUEFUSUJJTElUWV9WRVJTSU9OID0gMTsKIAkJCQlEWUxJQl9DVVJSRU5UX1ZFUlNJ
T04gPSAxOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5n
LjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLi8sCisJCQkJCS4uL2lu
Y2x1ZGUvLAorCQkJCSk7CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSBSZXNvdXJjZXMvSW5mby5wbGlz
dDsKIAkJCQlJTkZPUExJU1RfUFJFRklYX0hFQURFUiA9ICIkKFBST0pFQ1RfVEVNUF9ESVIpL1Zl
cnNpb24uaCI7CiAJCQkJSU5GT1BMSVNUX1BSRVBST0NFU1MgPSBZRVM7CiAJCQkJUFJPRFVDVF9O
QU1FID0gZ3Rlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlWRVJTSU9OSU5HX1NZU1RF
TSA9ICJhcHBsZS1nZW5lcmljIjsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CkBAIC0xMDQyLDEy
ICsxMDI5LDE5IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25m
aWd1cmF0aW9uUmVmZXJlbmNlID0gNDBENENERjIwRTMwRTA3NDAwMjk0ODAxIC8qIEZyYW1ld29y
a1RhcmdldC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9I
SURQSV9JTUFHRVMgPSBZRVM7CiAJCQkJRFlMSUJfQ09NUEFUSUJJTElUWV9WRVJTSU9OID0gMTsK
IAkJCQlEWUxJQl9DVVJSRU5UX1ZFUlNJT04gPSAxOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFw
cGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0g
KAorCQkJCQkuLi8sCisJCQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7CiAJCQkJSU5GT1BMSVNUX0ZJ
TEUgPSBSZXNvdXJjZXMvSW5mby5wbGlzdDsKIAkJCQlJTkZPUExJU1RfUFJFRklYX0hFQURFUiA9
ICIkKFBST0pFQ1RfVEVNUF9ESVIpL1ZlcnNpb24uaCI7CiAJCQkJSU5GT1BMSVNUX1BSRVBST0NF
U1MgPSBZRVM7CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29z
eDsKIAkJCQlWRVJTSU9OSU5HX1NZU1RFTSA9ICJhcHBsZS1nZW5lcmljIjsKIAkJCX07CiAJCQlu
YW1lID0gUmVsZWFzZTsKQEAgLTEwNzQsMTAwICsxMDY4LDkwIEBACiAJCQlidWlsZENvbmZpZ3Vy
YXRpb25zID0gKAogCQkJCTNCMjM4RjYwMEU4MjhCNTQwMDg0NkUxMSAvKiBEZWJ1ZyAqLywKIAkJ
CQkzQjIzOEY2MTBFODI4QjU0MDA4NDZFMTEgLyogUmVsZWFzZSAqLywKLQkJCQk0NEM0OEUwQzE0
QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLywKIAkJCSk7CiAJCQlkZWZhdWx0Q29uZmln
dXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9k
dWN0aW9uOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKIAkJfTsKIAkJ
NDA4OTlGNEEwRkZBNzFCQzAwMEIyOUFFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYTmF0aXZlVGFyZ2V0ICJndGVzdF91bml0dGVzdC1mcmFtZXdvcmsiICovID0gewogCQkJaXNh
ID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCiAJCQkJ
NDA4OTlGNDUwRkZBNzE4NTAwMEIyOUFFIC8qIERlYnVnICovLAogCQkJCTQwODk5RjQ2MEZGQTcx
ODUwMDBCMjlBRSAvKiBSZWxlYXNlICovLAotCQkJCTQ0QzQ4RTA4MTRBNDA5REUwMEEyRDlDNyAv
KiBQcm9kdWN0aW9uICovLAogCQkJKTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxl
ID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCQlkZWZh
dWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwogCQl9OwogCQk0MDg5QTAyNDBGRkFDRjAx
MDAwQjI5QUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQg
InNhbXBsZTFfdW5pdHRlc3QtZnJhbWV3b3JrIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJh
dGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAogCQkJCTQwODlBMDE1MEZGQUNF
RkQwMDBCMjlBRSAvKiBEZWJ1ZyAqLywKIAkJCQk0MDg5QTAxNjBGRkFDRUZEMDAwQjI5QUUgLyog
UmVsZWFzZSAqLywKLQkJCQk0NEM0OEUwQTE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAq
LywKIAkJCSk7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZh
dWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25OYW1lID0gUmVsZWFzZTsKIAkJfTsKIAkJNDBDNDRBRTQwRTM3OTkwNTAwOEZDQzUxIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJWZXJzaW9uIElu
Zm8iICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmln
dXJhdGlvbnMgPSAoCiAJCQkJNDBDNDRBREYwRTM3OThGNDAwOEZDQzUxIC8qIERlYnVnICovLAog
CQkJCTQwQzQ0QUUwMEUzNzk4RjQwMDhGQ0M1MSAvKiBSZWxlYXNlICovLAotCQkJCTQ0QzQ4RTBE
MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICovLAogCQkJKTsKIAkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFBy
b2R1Y3Rpb247CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwogCQl9Owog
CQk0MEM4NDkwMjEwMUEyMTJFMDA4MzY0MkEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0LXN0YXRpYyIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZp
Z3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKIAkJCQk0MEM4NDhGQjEw
MUEyMDlEMDA4MzY0MkEgLyogRGVidWcgKi8sCiAJCQkJNDBDODQ4RkMxMDFBMjA5RDAwODM2NDJB
IC8qIFJlbGVhc2UgKi8sCi0JCQkJNDRDNDhFMDYxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rp
b24gKi8sCiAJCQkpOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJ
ZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJCWRlZmF1bHRDb25maWd1
cmF0aW9uTmFtZSA9IFJlbGVhc2U7CiAJCX07CiAJCTQwQzg0OTEyMTAxQTIxRDIwMDgzNjQyQSAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiZ3Rlc3RfbWFp
bi1zdGF0aWMiICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxk
Q29uZmlndXJhdGlvbnMgPSAoCiAJCQkJNDBDODQ5MEUxMDFBMjE3RjAwODM2NDJBIC8qIERlYnVn
ICovLAogCQkJCTQwQzg0OTBGMTAxQTIxN0YwMDgzNjQyQSAvKiBSZWxlYXNlICovLAotCQkJCTQ0
QzQ4RTA3MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICovLAogCQkJKTsKIAkJCWRlZmF1
bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFt
ZSA9IFByb2R1Y3Rpb247CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwog
CQl9OwogCQk0MEM4NDk4NDEwMUEzNjg1MDA4MzY0MkEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0X3VuaXR0ZXN0LXN0YXRpYyIgKi8gPSB7CiAJ
CQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgK
IAkJCQk0MEM4NDk4NTEwMUEzNjg1MDA4MzY0MkEgLyogRGVidWcgKi8sCiAJCQkJNDBDODQ5ODYx
MDFBMzY4NTAwODM2NDJBIC8qIFJlbGVhc2UgKi8sCi0JCQkJNDRDNDhFMDkxNEE0MDlERTAwQTJE
OUM3IC8qIFByb2R1Y3Rpb24gKi8sCiAJCQkpOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zp
c2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CiAJCX07CiAJCTQwQzg0OTk0MTAx
QTM2QTYwMDgzNjQyQSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRh
cmdldCAic2FtcGxlMV91bml0dGVzdC1zdGF0aWMiICovID0gewogCQkJaXNhID0gWENDb25maWd1
cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCiAJCQkJNDBDODQ5OTUxMDFB
MzZBNjAwODM2NDJBIC8qIERlYnVnICovLAogCQkJCTQwQzg0OTk2MTAxQTM2QTYwMDgzNjQyQSAv
KiBSZWxlYXNlICovLAotCQkJCTQ0QzQ4RTBCMTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9u
ICovLAogCQkJKTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRl
ZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCQlkZWZhdWx0Q29uZmlndXJh
dGlvbk5hbWUgPSBSZWxlYXNlOwogCQl9OwogCQk0RkFEQzI0MjA4QjQxNTZEMDBBQkU1NUUgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0LWZyYW1l
d29yayIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25m
aWd1cmF0aW9ucyA9ICgKIAkJCQk0RkFEQzI0MzA4QjQxNTZEMDBBQkU1NUUgLyogRGVidWcgKi8s
CiAJCQkJNEZBREMyNDQwOEI0MTU2RDAwQUJFNTVFIC8qIFJlbGVhc2UgKi8sCi0JCQkJNDRDNDhF
MDUxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8sCiAJCQkpOwogCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0g
UHJvZHVjdGlvbjsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CiAJCX07
CiAJCTRGQURDMjQ2MDhCNDE1NkQwMEFCRTU1RSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3Qg
Zm9yIFBCWFByb2plY3QgImd0ZXN0IiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxp
c3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAogCQkJCTRGQURDMjQ3MDhCNDE1NkQwMEFC
RTU1RSAvKiBEZWJ1ZyAqLywKIAkJCQk0RkFEQzI0ODA4QjQxNTZEMDBBQkU1NUUgLyogUmVsZWFz
ZSAqLywKLQkJCQk0NEM0OEUwNDE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLywKIAkJ
CSk7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1l
ID0gUmVsZWFzZTsKIAkJfTsKIC8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8K
IAl9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320249</attachid>
            <date>2017-09-08 01:04:50 -0700</date>
            <delta_ts>2017-09-08 11:25:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175722-20170908170447.patch</filename>
            <type>text/plain</type>
            <size>2178522</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9DaGFuZ2VMb2cKaW5kZXggZWQ1ZmE1ODcz
NGYxYTA3Y2EyY2U3M2FjZGM3NWNlMjY0YzI4YTdjYi4uNjMyMDEyMWE3NGFhYmRlOWJiYzhmZmRk
YmMxMzM5OTIxYTM1MGVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0NyBAQAorMjAx
Ny0wOS0wOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBVcGRhdGUgZ29vZ2xldGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc1NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIGd0ZXN0IHZlcnNpb24gZnJvbSAxLjUuMCB0byAxLjguMC4KKwor
ICAgICAgICAqIGd0ZXN0Ly5naXRpZ25vcmU6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L0NIQU5H
RVM6CisgICAgICAgICogZ3Rlc3QvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogZ3Rlc3QvQ09O
VFJJQlVUT1JTOgorICAgICAgICAqIGd0ZXN0L0xJQ0VOU0U6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9DT1BZSU5HLgorICAgICAgICAqIGd0ZXN0L01ha2VmaWxlLmFtOgor
ICAgICAgICAqIGd0ZXN0L1JFQURNRTogUmVtb3ZlZC4KKyAgICAgICAgKiBndGVzdC9SRUFETUUu
V2ViS2l0OiBSZW1vdmVkLgorICAgICAgICAqIGd0ZXN0L1JFQURNRS5tZDogQWRkZWQuCisgICAg
ICAgICogZ3Rlc3QvYnVpbGQtYXV4Ly5rZWVwOiBBZGRlZC4KKyAgICAgICAgKiBndGVzdC9jbWFr
ZS9pbnRlcm5hbF91dGlscy5jbWFrZTogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvY29kZWdlYXIv
Z3Rlc3RfYWxsLmNjOgorICAgICAgICAqIGd0ZXN0L2NvZGVnZWFyL2d0ZXN0X2xpbmsuY2M6Cisg
ICAgICAgICogZ3Rlc3QvY29uZmlndXJlLmFjOgorICAgICAgICAqIGd0ZXN0L2RvY3MvQWR2YW5j
ZWRHdWlkZS5tZDogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvZG9jcy9EZXZHdWlkZS5tZDogQWRk
ZWQuCisgICAgICAgICogZ3Rlc3QvZG9jcy9Eb2N1bWVudGF0aW9uLm1kOiBBZGRlZC4KKyAgICAg
ICAgKiBndGVzdC9kb2NzL0ZBUS5tZDogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvZG9jcy9Qcmlt
ZXIubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvUHVtcE1hbnVhbC5tZDogQWRkZWQu
CisgICAgICAgICogZ3Rlc3QvZG9jcy9TYW1wbGVzLm1kOiBBZGRlZC4KKyAgICAgICAgKiBndGVz
dC9kb2NzL1YxXzVfQWR2YW5jZWRHdWlkZS5tZDogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvZG9j
cy9WMV81X0RvY3VtZW50YXRpb24ubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvVjFf
NV9GQVEubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvVjFfNV9QcmltZXIubWQ6IEFk
ZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvVjFfNV9QdW1wTWFudWFsLm1kOiBBZGRlZC4KKyAg
ICAgICAgKiBndGVzdC9kb2NzL1YxXzVfWGNvZGVHdWlkZS5tZDogQWRkZWQuCisgICAgICAgICog
Z3Rlc3QvZG9jcy9WMV82X0FkdmFuY2VkR3VpZGUubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0
L2RvY3MvVjFfNl9Eb2N1bWVudGF0aW9uLm1kOiBBZGRlZC4KKyAgICAgICAgKiBndGVzdC9kb2Nz
L1YxXzZfRkFRLm1kOiBBZGRlZC4KKyAgICAgICAgKiBndGVzdC9kb2NzL1YxXzZfUHJpbWVyLm1k
OiBBZGRlZC4KKyAgICAgICAgKiBndGVzdC9kb2NzL1YxXzZfUHVtcE1hbnVhbC5tZDogQWRkZWQu
CisgICAgICAgICogZ3Rlc3QvZG9jcy9WMV82X1NhbXBsZXMubWQ6IEFkZGVkLgorICAgICAgICAq
IGd0ZXN0L2RvY3MvVjFfNl9YY29kZUd1aWRlLm1kOiBBZGRlZC4KKyAgICAgICAgKiBndGVzdC9k
b2NzL1YxXzdfQWR2YW5jZWRHdWlkZS5tZDogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvZG9jcy9W
MV83X0RvY3VtZW50YXRpb24ubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvVjFfN19G
QVEubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvVjFfN19QcmltZXIubWQ6IEFkZGVk
LgorICAgICAgICAqIGd0ZXN0L2RvY3MvVjFfN19QdW1wTWFudWFsLm1kOiBBZGRlZC4KKyAgICAg
ICAgKiBndGVzdC9kb2NzL1YxXzdfU2FtcGxlcy5tZDogQWRkZWQuCisgICAgICAgICogZ3Rlc3Qv
ZG9jcy9WMV83X1hjb2RlR3VpZGUubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvWGNv
ZGVHdWlkZS5tZDogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1k
ZWF0aC10ZXN0Lmg6CisgICAgICAgICogZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdl
Lmg6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6U3RyZWFtYWJsZVRvU3RyaW5nKToKKyAg
ICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaDoKKyAgICAgICAg
KFRFU1RfUCk6CisgICAgICAgICh0ZXN0aW5nOjpWYWx1ZXNJbik6CisgICAgICAgICogZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcDoKKyAgICAgICAgKiBndGVzdC9p
bmNsdWRlL2d0ZXN0L2d0ZXN0LXByaW50ZXJzLmg6IEFkZGVkLgorICAgICAgICAodGVzdGluZzo6
aW50ZXJuYWwyOjpUeXBlV2l0aG91dEZvcm1hdHRlcjo6UHJpbnRWYWx1ZSk6CisgICAgICAgICh0
ZXN0aW5nOjppbnRlcm5hbDI6Om9wZXJhdG9yPDwpOgorICAgICAgICAodGVzdGluZ19pbnRlcm5h
bDo6RGVmYXVsdFByaW50Tm9uQ29udGFpbmVyVG8pOgorICAgICAgICAodGVzdGluZzo6aW50ZXJu
YWw6OkZvcm1hdEZvckNvbXBhcmlzb246OkZvcm1hdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRl
cm5hbDo6Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKToKKyAgICAgICAgKHRlc3Rp
bmc6OmludGVybmFsOjpEZWZhdWx0UHJpbnRUbyk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5h
bDo6UHJpbnRUbyk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6UHJpbnRSYXdBcnJheVRv
KToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxQcmludGVyOjpQcmludCk6
CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnRBcnJheSk6CisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnRlcjxUOjpQcmludCk6CisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludGVyOjpQcmludCk6Cisg
ICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludGVyPFQ6OlByaW50
KToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50ZXI8Y2hh
cjo6UHJpbnQpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJp
bnRlcjx3Y2hhcl90OjpQcmludCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVy
c2FsVGVyc2VQcmludCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJp
bnQpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlR1cGxlUG9saWN5OjpnZXQpOgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlR1cGxlUHJlZml4UHJpbnRlcjo6UHJpbnRQcmVmaXhU
byk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VHVwbGVQcmVmaXhQcmludGVyOjpUZXJz
ZVByaW50UHJlZml4VG9TdHJpbmdzKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUdXBs
ZVByZWZpeFByaW50ZXI8MD46OlByaW50UHJlZml4VG8pOgorICAgICAgICAodGVzdGluZzo6aW50
ZXJuYWw6OlR1cGxlUHJlZml4UHJpbnRlcjwwPjo6VGVyc2VQcmludFByZWZpeFRvU3RyaW5ncyk6
CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6UHJpbnRUdXBsZVRvKToKKyAgICAgICAgKHRl
c3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3Mp
OgorICAgICAgICAodGVzdGluZzo6UHJpbnRUb1N0cmluZyk6CisgICAgICAgICogZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9ndGVzdC1zcGkuaDoKKyAgICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2d0
ZXN0LXRlc3QtcGFydC5oOgorICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlw
ZWQtdGVzdC5oOgorICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaDoKKyAgICAg
ICAgKHRlc3Rpbmc6OlRlc3RQcm9wZXJ0eTo6VGVzdFByb3BlcnR5KToKKyAgICAgICAgKHRlc3Rp
bmc6OlRlc3RQcm9wZXJ0eTo6U2V0VmFsdWUpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6
OkNtcEhlbHBlckVRRmFpbHVyZSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVs
cGVyRVEpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkVxSGVscGVyOjpDb21wYXJlKToK
KyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpFcUhlbHBlcjx0cnVlPjo6Q29tcGFyZSk6Cisg
ICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyT3BGYWlsdXJlKToKKyAgICAgICAg
KHRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJGbG9hdGluZ1BvaW50RVEpOgorICAgICAgICAo
dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlOjp+V2l0aFBhcmFtSW50ZXJmYWNlKToKKyAgICAg
ICAgKHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTo6R2V0UGFyYW0gY29uc3QpOgorICAgICAg
ICAodGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxKToKKyAgICAgICAgKFJVTl9BTExfVEVTVFMp
OgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlN0cmVhbWFibGVUb1N0cmluZyk6IERlbGV0
ZWQuCisgICAgICAgICh0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQ6Om9wZXJhdG9yPDwpOiBEZWxl
dGVkLgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkZvcm1hdEZvckZhaWx1cmVNZXNzYWdl
KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2UpOiBEZWxldGVkLgorICAgICAgICAodGVzdGluZzo6VGVzdFdpdGhQ
YXJhbTo6R2V0UGFyYW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAodGVzdGluZzo6VGVzdFdp
dGhQYXJhbTo6U2V0UGFyYW0pOiBEZWxldGVkLgorICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rl
c3QvZ3Rlc3RfcHJlZF9pbXBsLmg6CisgICAgICAgIChBc3NlcnRQcmVkMUhlbHBlcik6CisgICAg
ICAgIChBc3NlcnRQcmVkMkhlbHBlcik6CisgICAgICAgIChBc3NlcnRQcmVkM0hlbHBlcik6Cisg
ICAgICAgIChBc3NlcnRQcmVkNEhlbHBlcik6CisgICAgICAgIChBc3NlcnRQcmVkNUhlbHBlcik6
CisgICAgICAgICogZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9y
dC5oOiBBZGRlZC4KKyAgICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3Rv
bS9ndGVzdC1wcmludGVycy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMV90ZXN0Xy5jYy4KKyAgICAgICAgKiBndGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9saW5rLmNjLgorICAgICAgICAqIGd0ZXN0L2luY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5oOgorICAgICAgICAo
dGVzdGluZzo6aW50ZXJuYWw6OkludGVybmFsUnVuRGVhdGhUZXN0RmxhZzo6SW50ZXJuYWxSdW5E
ZWF0aFRlc3RGbGFnKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpJbnRlcm5hbFJ1bkRl
YXRoVGVzdEZsYWc6OmZpbGUgY29uc3QpOgorICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaDoKKyAgICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6
RmxvYXRpbmdQb2ludDxmbG9hdD46Ok1heCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6
RmxvYXRpbmdQb2ludDxkb3VibGU+OjpNYXgpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6
OkNvZGVMb2NhdGlvbjo6Q29kZUxvY2F0aW9uKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFs
OjpTa2lwQ29tbWEpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkdldFByZWZpeFVudGls
Q29tbWEpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlR5cGVQYXJhbWV0ZXJpemVkVGVz
dDo6UmVnaXN0ZXIpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlR5cGVQYXJhbWV0ZXJp
emVkVGVzdENhc2U6OlJlZ2lzdGVyKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpJc0Nv
bnRhaW5lclRlc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkFycmF5RXEpOgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkFycmF5QXdhcmVGaW5kKToKKyAgICAgICAgKHRlc3Rp
bmc6OmludGVybmFsOjpDb3B5QXJyYXkpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Ok5h
dGl2ZUFycmF5OjpOYXRpdmVBcnJheSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6TmF0
aXZlQXJyYXk6On5OYXRpdmVBcnJheSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6TmF0
aXZlQXJyYXk6OnNpemUgY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Ok5hdGl2
ZUFycmF5OjpiZWdpbiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6TmF0aXZl
QXJyYXk6OmVuZCBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6TmF0aXZlQXJy
YXk6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Ok5hdGl2
ZUFycmF5OjpJbml0Q29weSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6TmF0aXZlQXJy
YXk6OkluaXRSZWYpOgorICAgICAgICAoR1Rlc3RTdHJlYW1Ub0hlbHBlcik6IERlbGV0ZWQuCisg
ICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0VmFsdWVGb3JGYWlsdXJlTWVzc2FnZSk6
IERlbGV0ZWQuCisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0Rm9yRmFpbHVyZU1l
c3NhZ2UpOiBEZWxldGVkLgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkZvcm1hdEZpbGVM
b2NhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC1saW5rZWRfcHRyLmg6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2Vk
X3B0cl9pbnRlcm5hbDo6R1RFU1RfTE9DS19FWENMVURFRF8pOgorICAgICAgICAodGVzdGluZzo6
aW50ZXJuYWw6OmxpbmtlZF9wdHI6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5n
OjppbnRlcm5hbDo6bGlua2VkX3B0cl9pbnRlcm5hbDo6am9pbik6IERlbGV0ZWQuCisgICAgICAg
ICh0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cl9pbnRlcm5hbDo6ZGVwYXJ0KTogRGVsZXRl
ZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpsaW5rZWRfcHRyOjpyZWxlYXNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFt
LXV0aWwtZ2VuZXJhdGVkLmg6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJh
eTE6Om9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+IGNvbnN0KToKKyAgICAgICAgKHRlc3Rpbmc6
OmludGVybmFsOjpWYWx1ZUFycmF5Mjo6b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4gY29uc3Qp
OgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlZhbHVlQXJyYXkzOjpvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVB
cnJheTQ6Om9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+IGNvbnN0KToKKyAgICAgICAgKHRlc3Rp
bmc6OmludGVybmFsOjpWYWx1ZUFycmF5NTo6b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4gY29u
c3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlZhbHVlQXJyYXk2OjpvcGVyYXRvciBQ
YXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFs
dWVBcnJheTc6Om9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+IGNvbnN0KToKKyAgICAgICAgKHRl
c3Rpbmc6OmludGVybmFsOjpWYWx1ZUFycmF5ODo6b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4g
Y29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlZhbHVlQXJyYXk5OjpvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6
VmFsdWVBcnJheTEwOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAg
ICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTExOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTEyOjpv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRl
cm5hbDo6VmFsdWVBcnJheTEzOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6Cisg
ICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTE0OjpvcGVyYXRvciBQYXJhbUdl
bmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJh
eTE1OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5n
OjppbnRlcm5hbDo6VmFsdWVBcnJheTE2OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25z
dCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTE3OjpvcGVyYXRvciBQ
YXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFs
dWVBcnJheTE4OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0
ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTE5OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTIwOjpvcGVy
YXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5h
bDo6VmFsdWVBcnJheTIxOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTIyOjpvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTIz
OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjpp
bnRlcm5hbDo6VmFsdWVBcnJheTI0OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6
CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTI1OjpvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVB
cnJheTI2OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0
aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTI3OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBj
b25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTI4OjpvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6
VmFsdWVBcnJheTI5OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAg
ICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTMwOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTMxOjpv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRl
cm5hbDo6VmFsdWVBcnJheTMyOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6Cisg
ICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTMzOjpvcGVyYXRvciBQYXJhbUdl
bmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJh
eTM0OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5n
OjppbnRlcm5hbDo6VmFsdWVBcnJheTM1OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25z
dCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTM2OjpvcGVyYXRvciBQ
YXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFs
dWVBcnJheTM3OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0
ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTM4OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTM5OjpvcGVy
YXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5h
bDo6VmFsdWVBcnJheTQwOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTQxOjpvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTQy
OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjpp
bnRlcm5hbDo6VmFsdWVBcnJheTQzOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6
CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTQ0OjpvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVB
cnJheTQ1OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0
aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTQ2OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBj
b25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTQ3OjpvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6
VmFsdWVBcnJheTQ4OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAg
ICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTQ5OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTUwOjpv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRl
cm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjI6Om9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6
OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMj4gPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRl
cm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjM6Om9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6
OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDM+ID4gY29uc3QpOgorICAgICAgICAodGVzdGluZzo6
aW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXI0OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPiBjb25zdCk6CisgICAgICAgICh0
ZXN0aW5nOjppbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjU6Om9wZXJhdG9yIFBhcmFt
R2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gPiBjb25zdCk6
CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjY6Om9w
ZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDY+ID4gY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkNhcnRlc2lhblBy
b2R1Y3RIb2xkZXI3OjogY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkNhcnRl
c2lhblByb2R1Y3RIb2xkZXI4OjogY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6
OkNhcnRlc2lhblByb2R1Y3RIb2xkZXI5OjogY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50
ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIxMDo6IGNvbnN0KToKKyAgICAgICAgKHRlc3Rp
bmc6OmludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMjo6b3BlcmF0b3IgUGFyYW1HZW5l
cmF0b3I8IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMj4gPiBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjM6Om9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzPiA+IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9s
ZGVyNDo6b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwg
VDMsIFQ0PiA+IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpD
YXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNTo6b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0
cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gPiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICh0ZXN0aW5nOjppbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjY6Om9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiA+
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcDoKKyAgICAgICAgKiBndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaDoKKyAgICAgICAgKHRlc3Rpbmc6
OlRlc3RQYXJhbUluZm86OlRlc3RQYXJhbUluZm8pOgorICAgICAgICAodGVzdGluZzo6UHJpbnRU
b1N0cmluZ1BhcmFtTmFtZTo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjpp
bnRlcm5hbDo6UmFuZ2VHZW5lcmF0b3I6Okl0ZXJhdG9yOjpBZHZhbmNlKToKKyAgICAgICAgKHRl
c3Rpbmc6OmludGVybmFsOjpSYW5nZUdlbmVyYXRvcjo6Q2FsY3VsYXRlRW5kSW5kZXgpOgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvcjo6
SXRlcmF0b3I6Okl0ZXJhdG9yKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpEZWZhdWx0
UGFyYW1OYW1lKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpHZXRQYXJhbU5hbWVHZW4p
OgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm86
OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8pOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6
OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm86OkdldFRlc3RDYXNlTmFtZSBjb25zdCk6CisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbzo6QWRkVGVz
dENhc2VJbnN0YW50aWF0aW9uKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpQYXJhbWV0
ZXJpemVkVGVzdENhc2VJbmZvOjpSZWdpc3RlclRlc3RzKToKKyAgICAgICAgKHRlc3Rpbmc6Omlu
dGVybmFsOjpQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvOjpJbnN0YW50aWF0aW9uSW5mbzo6SW5z
dGFudGlhdGlvbkluZm8pOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtZXRlcml6
ZWRUZXN0Q2FzZUluZm86OklzVmFsaWRQYXJhbU5hbWUpOgorICAgICAgICAodGVzdGluZzo6aW50
ZXJuYWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5OjpHZXRUZXN0Q2FzZVBhdHRlcm5I
b2xkZXIpOgorICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9y
dC1hcmNoLmg6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtcG9ydC5oOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI6OnN3
YXApOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Om1vdmUpOgorICAgICAgICAodGVzdGlu
Zzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF8pOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6
OkRvd25DYXN0Xyk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Q2hlY2tlZERvd25jYXN0
VG9BY3R1YWxUeXBlKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpOb3RpZmljYXRpb246
Ok5vdGlmaWNhdGlvbik6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Tm90aWZpY2F0aW9u
Ojp+Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpOb3RpZmljYXRp
b246Ok5vdGlmeSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Tm90aWZpY2F0aW9uOjpX
YWl0Rm9yTm90aWZpY2F0aW9uKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJlYWRX
aXRoUGFyYW06OlRocmVhZFdpdGhQYXJhbSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6
R1Rlc3RNdXRleExvY2s6OkdUZXN0TXV0ZXhMb2NrKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVy
bmFsOjpHVGVzdE11dGV4TG9jazo6fkdUZXN0TXV0ZXhMb2NrKToKKyAgICAgICAgKHRlc3Rpbmc6
OmludGVybmFsOjpUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZTo6flRocmVhZExvY2FsVmFsdWVI
b2xkZXJCYXNlKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJlYWRMb2NhbEJhc2U6
OlRocmVhZExvY2FsQmFzZSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkTG9j
YWxCYXNlOjp+VGhyZWFkTG9jYWxCYXNlKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpU
aHJlYWRXaXRoUGFyYW06On5UaHJlYWRXaXRoUGFyYW0pOgorICAgICAgICAodGVzdGluZzo6aW50
ZXJuYWw6OlRocmVhZFdpdGhQYXJhbTo6UnVubmFibGVJbXBsOjpSdW5uYWJsZUltcGwpOgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRocmVhZFdpdGhQYXJhbTo6UnVubmFibGVJbXBsOjp+
UnVubmFibGVJbXBsKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJlYWRXaXRoUGFy
YW06OlJ1bm5hYmxlSW1wbDo6UnVuKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJl
YWRMb2NhbDo6VGhyZWFkTG9jYWwpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRocmVh
ZExvY2FsOjp+VGhyZWFkTG9jYWwpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRocmVh
ZExvY2FsOjpwb2ludGVyKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJlYWRMb2Nh
bDo6cG9pbnRlciBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkTG9j
YWw6OmdldCBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkTG9jYWw6
OnNldCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkTG9jYWw6OlZhbHVlSG9s
ZGVyOjpWYWx1ZUhvbGRlcik6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkTG9j
YWw6OlZhbHVlSG9sZGVyOjpwb2ludGVyKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpU
aHJlYWRMb2NhbDo6R2V0T3JDcmVhdGVWYWx1ZSBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjpp
bnRlcm5hbDo6VGhyZWFkTG9jYWw6Ok5ld1ZhbHVlRm9yQ3VycmVudFRocmVhZCBjb25zdCk6Cisg
ICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkTG9jYWw6OlZhbHVlSG9sZGVyRmFjdG9y
eTo6VmFsdWVIb2xkZXJGYWN0b3J5KToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJl
YWRMb2NhbDo6VmFsdWVIb2xkZXJGYWN0b3J5Ojp+VmFsdWVIb2xkZXJGYWN0b3J5KToKKyAgICAg
ICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJlYWRMb2NhbDo6RGVmYXVsdFZhbHVlSG9sZGVyRmFj
dG9yeTo6RGVmYXVsdFZhbHVlSG9sZGVyRmFjdG9yeSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRl
cm5hbDo6VGhyZWFkTG9jYWw6OkRlZmF1bHRWYWx1ZUhvbGRlckZhY3Rvcnk6Ok1ha2VOZXdIb2xk
ZXIgY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRocmVhZExvY2FsOjpJbnN0
YW5jZVZhbHVlSG9sZGVyRmFjdG9yeTo6SW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkpOgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRocmVhZExvY2FsOjpJbnN0YW5jZVZhbHVlSG9sZGVy
RmFjdG9yeTo6TWFrZU5ld0hvbGRlciBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5h
bDo6TXV0ZXhCYXNlOjpMb2NrKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpNdXRleEJh
c2U6OlVubG9jayk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXhCYXNlOjpBc3Nl
cnRIZWxkIGNvbnN0KToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpNdXRleDo6TXV0ZXgp
OgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4OjpMb2NrKToKKyAgICAgICAgKHRl
c3Rpbmc6OmludGVybmFsOjpNdXRleDo6VW5sb2NrKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVy
bmFsOjpJc0FscGhhKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpJc0FsTnVtKToKKyAg
ICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpJc0RpZ2l0KToKKyAgICAgICAgKHRlc3Rpbmc6Omlu
dGVybmFsOjpJc0xvd2VyKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpJc1NwYWNlKToK
KyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpJc1VwcGVyKToKKyAgICAgICAgKHRlc3Rpbmc6
OmludGVybmFsOjpJc1hEaWdpdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VG9Mb3dl
cik6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VG9VcHBlcik6CisgICAgICAgICh0ZXN0
aW5nOjppbnRlcm5hbDo6U3RyaXBUcmFpbGluZ1NwYWNlcyk6CisgICAgICAgICh0ZXN0aW5nOjpp
bnRlcm5hbDo6cG9zaXg6OkdldEVudik6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6U3Ry
U3RyZWFtOjpvcGVyYXRvciBuZXcpOiBEZWxldGVkLgorICAgICAgICAodGVzdGluZzo6aW50ZXJu
YWw6OlN0clN0cmVhbTo6b3BlcmF0b3IgbmV3W10pOiBEZWxldGVkLgorICAgICAgICAodGVzdGlu
Zzo6aW50ZXJuYWw6OlN0clN0cmVhbTo6b3BlcmF0b3IgZGVsZXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKHRlc3Rpbmc6OmludGVybmFsOjpTdHJTdHJlYW06Om9wZXJhdG9yIGRlbGV0ZVtdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmlu
Zy5oOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Om9wZXJhdG9yPDwpOiBEZWxldGVkLgor
ICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaDoKKyAg
ICAgICAgKHN0ZDo6dHIxOjpndGVzdF9pbnRlcm5hbDo6PEdURVNUXzEwX1RZUEVOQU1FU18pOgor
ICAgICAgICAoc3RkOjp0cjE6OjxHVEVTVF8wX1RZUEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0
cjE6OjxHVEVTVF8xX1RZUEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6OjxHVEVTVF8yX1RZ
UEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6OjxHVEVTVF8zX1RZUEVOQU1FU18pOgorICAg
ICAgICAoc3RkOjp0cjE6OjxHVEVTVF80X1RZUEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6
OjxHVEVTVF81X1RZUEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6OjxHVEVTVF82X1RZUEVO
QU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6OjxHVEVTVF83X1RZUEVOQU1FU18pOgorICAgICAg
ICAoc3RkOjp0cjE6OjxHVEVTVF84X1RZUEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6OjxH
VEVTVF85X1RZUEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6OjxHVEVTVF8xMF9UWVBFTkFN
RVNfKToKKyAgICAgICAgKHN0ZDo6dHIxOjpHVEVTVF8xMF9UWVBFTkFNRVNfKToKKyAgICAgICAg
KiBndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcDoKKyAgICAg
ICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oOgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkdldFR5cGVOYW1lKToKKyAgICAgICAgKiBndGVzdC9p
bmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oLnB1bXA6CisgICAgICAgICog
Z3Rlc3QvbWFrZS9NYWtlZmlsZToKKyAgICAgICAgKiBndGVzdC9tc3ZjL2d0ZXN0LW1kLnNsbjog
QWRkZWQuCisgICAgICAgICogZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3Byb2o6IEFkZGVkLgorICAg
ICAgICAqIGd0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4cHJvajogUmVtb3ZlZC4KKyAgICAgICAgKiBn
dGVzdC9tc3ZjL2d0ZXN0LW1kLnZjeHByb2ouZmlsdGVyczogUmVtb3ZlZC4KKyAgICAgICAgKiBn
dGVzdC9tc3ZjL2d0ZXN0LnNsbjogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvbXN2Yy9ndGVzdC52
Y3Byb2o6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L21zdmMvZ3Rlc3RfbWFpbi1tZC52Y3Byb2o6
IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L21zdmMvZ3Rlc3RfbWFpbi52Y3Byb2o6IEFkZGVkLgor
ICAgICAgICAqIGd0ZXN0L21zdmMvZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjcHJvajogQWRkZWQuCisg
ICAgICAgICogZ3Rlc3QvbXN2Yy9ndGVzdF9wcm9kX3Rlc3QudmNwcm9qOiBBZGRlZC4KKyAgICAg
ICAgKiBndGVzdC9tc3ZjL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjcHJvajogQWRkZWQuCisgICAgICAg
ICogZ3Rlc3QvbXN2Yy9ndGVzdF91bml0dGVzdC52Y3Byb2o6IEFkZGVkLgorICAgICAgICAqIGd0
ZXN0L3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2M6CisgICAgICAgICogZ3Rlc3Qvc2FtcGxl
cy9zYW1wbGUxX3VuaXR0ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3NhbXBsZXMvc2FtcGxlMi5o
OgorICAgICAgICAqIGd0ZXN0L3NhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYzoKKyAgICAgICAg
KiBndGVzdC9zYW1wbGVzL3NhbXBsZTMtaW5sLmg6CisgICAgICAgIChRdWV1ZU5vZGU6OlF1ZXVl
Tm9kZSk6CisgICAgICAgICogZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjOgorICAg
ICAgICAqIGd0ZXN0L3NhbXBsZXMvc2FtcGxlNF91bml0dGVzdC5jYzoKKyAgICAgICAgKiBndGVz
dC9zYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2M6CisgICAgICAgICogZ3Rlc3Qvc2FtcGxlcy9z
YW1wbGU2X3VuaXR0ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3NhbXBsZXMvc2FtcGxlN191bml0
dGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC9zYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2M6Cisg
ICAgICAgICogZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjOgorICAgICAgICAqIGd0
ZXN0L3NjcmlwdHMvY29tbW9uLnB5OiBSZW5hbWVkIGZyb20gU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvcnVuX3Rlc3RzLnB5LgorICAgICAgICAoR2V0Q29tbWFuZE91dHB1dCk6CisgICAgICAgIChH
ZXRTdm5JbmZvKToKKyAgICAgICAgKEdldFN2blRydW5rKToKKyAgICAgICAgKElzSW5HVGVzdFN2
bik6CisgICAgICAgIChJc0luR01vY2tTdm4pOgorICAgICAgICAqIGd0ZXN0L3NjcmlwdHMvZnVz
ZV9ndGVzdF9maWxlcy5weToKKyAgICAgICAgKFZlcmlmeUZpbGVFeGlzdHMpOgorICAgICAgICAo
VmVyaWZ5T3V0cHV0RmlsZSk6CisgICAgICAgIChGdXNlR1Rlc3RIKToKKyAgICAgICAgKEZ1c2VH
VGVzdEguUHJvY2Vzc0ZpbGUpOgorICAgICAgICAoRnVzZUdUZXN0QWxsQ2NUb0ZpbGUpOgorICAg
ICAgICAoRnVzZUdUZXN0QWxsQ2NUb0ZpbGUuUHJvY2Vzc0ZpbGUpOgorICAgICAgICAoRnVzZUdU
ZXN0QWxsQ2MpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogZ3Rlc3Qvc2NyaXB0cy9nZW5f
Z3Rlc3RfcHJlZF9pbXBsLnB5OgorICAgICAgICAqIGd0ZXN0L3NjcmlwdHMvZ3Rlc3QtY29uZmln
LmluOgorICAgICAgICAqIGd0ZXN0L3NjcmlwdHMvcHVtcC5weToKKyAgICAgICAgKFN0cmlwTWV0
YUNvbW1lbnRzKToKKyAgICAgICAgKFRva2VuaXplTGluZXMpOgorICAgICAgICAoVG9rZW5pemUp
OgorICAgICAgICAoUGFyc2VUb0FTVCk6CisgICAgICAgIChJc1NpbmdsZUxpbmVDb21tZW50KToK
KyAgICAgICAgKElzSW5QcmVwcm9jZXNzb3JEaXJlY3RpdmUpOgorICAgICAgICAoV3JhcFByZXBy
b2Nlc3NvckRpcmVjdGl2ZSk6CisgICAgICAgIChJc011bHRpTGluZUlXWVVQcmFnbWEpOgorICAg
ICAgICAoSXNIZWFkZXJHdWFyZEluY2x1ZGVPck9uZUxpbmVJV1lVUHJhZ21hKToKKyAgICAgICAg
KFdyYXBMb25nTGluZSk6CisgICAgICAgIChDb252ZXJ0RnJvbVB1bXBTb3VyY2UpOgorICAgICAg
ICAobWFpbik6CisgICAgICAgIChDb252ZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKElzQ29tbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChJc0luUHJlcHJvY2Vzc29yRGlyZXZhdGl2ZSk6IERlbGV0
ZWQuCisgICAgICAgIChXcmFwUHJlcHJvY2Vzc29yRGlyZXZhdGl2ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChJc0hlYWRlckd1YXJkT3JJbmNsdWRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBndGVzdC9z
Y3JpcHRzL3JlbGVhc2VfZG9jcy5weTogQWRkZWQuCisgICAgICAgIChEcm9wV2lraVN1ZmZpeCk6
CisgICAgICAgIChXaWtpQnJhbmNoZXIpOgorICAgICAgICAoV2lraUJyYW5jaGVyLl9faW5pdF9f
KToKKyAgICAgICAgKFdpa2lCcmFuY2hlci5HZXRGaWxlc1RvQnJhbmNoKToKKyAgICAgICAgKFdp
a2lCcmFuY2hlci5CcmFuY2hGaWxlcyk6CisgICAgICAgIChXaWtpQnJhbmNoZXIuVXBkYXRlTGlu
a3NJbkJyYW5jaGVkRmlsZXMpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogZ3Rlc3Qvc2Ny
aXB0cy90ZXN0L01ha2VmaWxlOgorICAgICAgICAqIGd0ZXN0L3NyYy9ndGVzdC1hbGwuY2M6Cisg
ICAgICAgICogZ3Rlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2M6CisgICAgICAgICogZ3Rlc3Qv
c3JjL2d0ZXN0LWZpbGVwYXRoLmNjOgorICAgICAgICAqIGd0ZXN0L3NyYy9ndGVzdC1pbnRlcm5h
bC1pbmwuaDoKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpHVGVzdEZsYWdTYXZlcjo6R1Rl
c3RGbGFnU2F2ZXIpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkdUZXN0RmxhZ1NhdmVy
Ojp+R1Rlc3RGbGFnU2F2ZXIpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkNvdW50SWYp
OgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRlc3RQcm9wZXJ0eUtleUlzOjpUZXN0UHJv
cGVydHlLZXlJcyk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdFByb3BlcnR5S2V5
SXM6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Ok9zU3Rh
Y2tUcmFjZUdldHRlcjo6T3NTdGFja1RyYWNlR2V0dGVyKToKKyAgICAgICAgKHRlc3Rpbmc6Omlu
dGVybmFsOjpQYXJzZU5hdHVyYWxOdW1iZXIpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6
OlRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkpOgorICAgICAgICAodGVzdGluZzo6
aW50ZXJuYWw6OlRlc3RJbmZvSW1wbDo6c2hvdWxkX3J1biBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdEluZm9JbXBsOjpzZXRfc2hvdWxkX3J1bik6IERl
bGV0ZWQuCisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdEluZm9JbXBsOjppc19kaXNh
YmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdElu
Zm9JbXBsOjpzZXRfaXNfZGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAodGVzdGluZzo6aW50
ZXJuYWw6OlRlc3RJbmZvSW1wbDo6bWF0Y2hlc19maWx0ZXIgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRlc3RJbmZvSW1wbDo6c2V0X21hdGNoZXNfZmlsdGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUZXN0SW5mb0ltcGw6OnRl
c3RfY2FzZV9uYW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFs
OjpUZXN0SW5mb0ltcGw6Om5hbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAodGVzdGluZzo6
aW50ZXJuYWw6OlRlc3RJbmZvSW1wbDo6dGVzdF9jYXNlX2NvbW1lbnQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRlc3RJbmZvSW1wbDo6Y29tbWVudCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdEluZm9JbXBsOjpm
aXh0dXJlX2NsYXNzX2lkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVy
bmFsOjpUZXN0SW5mb0ltcGw6OnJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0aW5nOjpp
bnRlcm5hbDo6VGVzdEluZm9JbXBsOjpyZXN1bHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
dGVzdGluZzo6aW50ZXJuYWw6OlRlc3RJbmZvSW1wbDo6Q2xlYXJSZXN1bHQpOiBEZWxldGVkLgor
ICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRlc3RJbmZvSW1wbDo6Q2xlYXJUZXN0UmVzdWx0
KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxlOjpBdXRv
SGFuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxl
Ojp+QXV0b0hhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6QXV0
b0hhbmRsZTo6R2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFs
OjpBdXRvSGFuZGxlOjpSZXNldCk6IERlbGV0ZWQuCisgICAgICAgICogZ3Rlc3Qvc3JjL2d0ZXN0
LXBvcnQuY2M6CisgICAgICAgICogZ3Rlc3Qvc3JjL2d0ZXN0LXByaW50ZXJzLmNjOiBBZGRlZC4K
KyAgICAgICAgKiBndGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjOgorICAgICAgICAqIGd0ZXN0
L3NyYy9ndGVzdC10eXBlZC10ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3NyYy9ndGVzdC5jYzoK
KyAgICAgICAgKiBndGVzdC9zcmMvZ3Rlc3RfbWFpbi5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0
L2d0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYzogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvdGVz
dC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdC1m
aWxlcGF0aF90ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3QtbGlua2VkX3B0cl90
ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYzoKKyAg
ICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0LW1lc3NhZ2VfdGVzdC5jYzoKKyAgICAgICAgKiBndGVz
dC90ZXN0L2d0ZXN0LW9wdGlvbnNfdGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0
LXBhcmFtLXRlc3QyX3Rlc3QuY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10
ZXN0X3Rlc3QuY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3Qu
aDoKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYzoKKyAgICAgICAgKiBn
dGVzdC90ZXN0L2d0ZXN0LXByaW50ZXJzX3Rlc3QuY2M6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0
L3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVz
dC10dXBsZV90ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJf
dGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYzoK
KyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oOgorICAgICAgICAq
IGd0ZXN0L3Rlc3QvZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2M6CisgICAgICAgICogZ3Rlc3Qv
dGVzdC9ndGVzdF9hbGxfdGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0X2JyZWFr
X29uX2ZhaWx1cmVfdW5pdHRlc3QucHk6CisgICAgICAgIChTZXRFbnZWYXIpOiBEZWxldGVkLgor
ICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8uY2M6
CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9jYXRjaF9leGNlcHRpb25zX3Rlc3QucHk6IEFk
ZGVkLgorICAgICAgICAoQ2F0Y2hTZWhFeGNlcHRpb25zVGVzdCk6CisgICAgICAgIChDYXRjaFNl
aEV4Y2VwdGlvbnNUZXN0LlRlc3RTZWhFeGNlcHRpb25zKToKKyAgICAgICAgKENhdGNoU2VoRXhj
ZXB0aW9uc1Rlc3QudGVzdENhdGNoZXNTZWhFeGNlcHRpb25zV2l0aEN4eEV4Y2VwdGlvbnNFbmFi
bGVkKToKKyAgICAgICAgKENhdGNoU2VoRXhjZXB0aW9uc1Rlc3QudGVzdENhdGNoZXNTZWhFeGNl
cHRpb25zV2l0aEN4eEV4Y2VwdGlvbnNEaXNhYmxlZCk6CisgICAgICAgIChDYXRjaEN4eEV4Y2Vw
dGlvbnNUZXN0KToKKyAgICAgICAgKENhdGNoQ3h4RXhjZXB0aW9uc1Rlc3QudGVzdENhdGNoZXND
eHhFeGNlcHRpb25zSW5GaXh0dXJlQ29uc3RydWN0b3IpOgorICAgICAgICAoQ2F0Y2hDeHhFeGNl
cHRpb25zVGVzdC50ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJbkZpeHR1cmVEZXN0cnVjdG9yKToK
KyAgICAgICAgKENhdGNoQ3h4RXhjZXB0aW9uc1Rlc3QudGVzdENhdGNoZXNDeHhFeGNlcHRpb25z
SW5TZXRVcFRlc3RDYXNlKToKKyAgICAgICAgKENhdGNoQ3h4RXhjZXB0aW9uc1Rlc3QudGVzdENh
dGNoZXNDeHhFeGNlcHRpb25zSW5UZWFyRG93blRlc3RDYXNlKToKKyAgICAgICAgKENhdGNoQ3h4
RXhjZXB0aW9uc1Rlc3QudGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5TZXRVcCk6CisgICAgICAg
IChDYXRjaEN4eEV4Y2VwdGlvbnNUZXN0LnRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luVGVhckRv
d24pOgorICAgICAgICAoQ2F0Y2hDeHhFeGNlcHRpb25zVGVzdC50ZXN0Q2F0Y2hlc0N4eEV4Y2Vw
dGlvbnNJblRlc3RCb2R5KToKKyAgICAgICAgKENhdGNoQ3h4RXhjZXB0aW9uc1Rlc3QudGVzdENh
dGNoZXNOb25TdGRDeHhFeGNlcHRpb25zKToKKyAgICAgICAgKENhdGNoQ3h4RXhjZXB0aW9uc1Rl
c3QudGVzdFVuaGFuZGxlZEN4eEV4Y2VwdGlvbnNBYm9ydFRoZVByb2dyYW0pOgorICAgICAgICAq
IGd0ZXN0L3Rlc3QvZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc190ZXN0Xy5jYzogQWRkZWQuCisgICAg
ICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0Xy5jYzoKKyAgICAgICAgKiBndGVzdC90
ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weToKKyAgICAgICAgKEFzc2VydEVxKToKKyAgICAgICAg
KEdUZXN0RW52VmFyVGVzdC50ZXN0RW52VmFyQWZmZWN0c0ZsYWcpOgorICAgICAgICAoR1Rlc3RF
bnZWYXJUZXN0LnRlc3RYbWxPdXRwdXRGaWxlKToKKyAgICAgICAgKEdUZXN0RW52VmFyVGVzdCk6
CisgICAgICAgIChHVGVzdEVudlZhclRlc3QudGVzdFhtbE91dHB1dEZpbGVPdmVycmlkZSk6Cisg
ICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3RfLmNjOgorICAgICAgICAqIGd0
ZXN0L3Rlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0
L2d0ZXN0X2ZpbHRlcl91bml0dGVzdC5weToKKyAgICAgICAgKEdUZXN0RmlsdGVyVW5pdFRlc3Qu
QXNzZXJ0UGFydGl0aW9uSXNWYWxpZCk6CisgICAgICAgIChHVGVzdEZpbHRlclVuaXRUZXN0LkFk
anVzdEZvclBhcmFtZXRlcml6ZWRUZXN0cyk6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9m
aWx0ZXJfdW5pdHRlc3RfLmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0
LnB5OgorICAgICAgICAoR1Rlc3RIZWxwVGVzdC5UZXN0SGVscEZsYWcpOgorICAgICAgICAqIGd0
ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0Xy5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0
X2xpc3RfdGVzdHNfdW5pdHRlc3QucHk6CisgICAgICAgIChWZXJ5TG8pOgorICAgICAgICAoR1Rl
c3RMaXN0VGVzdHNVbml0VGVzdC5SdW5BbmRWZXJpZnkpOgorICAgICAgICAoR1Rlc3RMaXN0VGVz
dHNVbml0VGVzdC50ZXN0RGVmYXVsdEJlaGF2aW9yKToKKyAgICAgICAgKEdUZXN0TGlzdFRlc3Rz
VW5pdFRlc3QudGVzdEZsYWcpOgorICAgICAgICAoR1Rlc3RMaXN0VGVzdHNVbml0VGVzdC50ZXN0
T3ZlcnJpZGVOb25GaWx0ZXJGbGFncyk6CisgICAgICAgIChHVGVzdExpc3RUZXN0c1VuaXRUZXN0
LnRlc3RXaXRoRmlsdGVyRmxhZ3MpOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90
ZXN0c191bml0dGVzdF8uY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9tYWluX3VuaXR0
ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfbmMuY2M6IFJlbW92ZWQuCisgICAg
ICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9uY190ZXN0LnB5OiBSZW1vdmVkLgorICAgICAgICAqIGd0
ZXN0L3Rlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0
L2d0ZXN0X291dHB1dF90ZXN0LnB5OgorICAgICAgICAoTm9ybWFsaXplVG9DdXJyZW50UGxhdGZv
cm0pOgorICAgICAgICAoR1Rlc3RPdXRwdXRUZXN0LnRlc3RPdXRwdXQpOgorICAgICAgICAqIGd0
ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rl
c3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQ6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVz
dF9vdXRwdXRfdGVzdF9nb2xkZW5fd2luLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBndGVzdC90
ZXN0L2d0ZXN0X3ByZWRfaW1wbF91bml0dGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0
ZXN0X3ByZW1hdHVyZV9leGl0X3Rlc3QuY2M6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L3Rlc3Qv
Z3Rlc3RfcHJvZF90ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfcmVwZWF0X3Rl
c3QuY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3RfLmNjOgorICAg
ICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYzoKKyAgICAgICAgKiBn
dGVzdC90ZXN0L2d0ZXN0X3N0cmVzc190ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rl
c3RfdGVzdF91dGlscy5weToKKyAgICAgICAgKFNldEVudlZhcik6CisgICAgICAgIChHZXRTb3Vy
Y2VEaXIpOgorICAgICAgICAoR2V0QnVpbGREaXIpOgorICAgICAgICAoR2V0VGVzdEV4ZWN1dGFi
bGVQYXRoKToKKyAgICAgICAgKFN1YnByb2Nlc3MuX19pbml0X18uX1JlcGxhY2VFbnZEaWN0KToK
KyAgICAgICAgKFN1YnByb2Nlc3MpOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3df
b25fZmFpbHVyZV9leF90ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3df
b25fZmFpbHVyZV90ZXN0LnB5OgorICAgICAgICAoUnVuKToKKyAgICAgICAgKiBndGVzdC90ZXN0
L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9n
dGVzdF91bmluaXRpYWxpemVkX3Rlc3QucHk6CisgICAgICAgIChBc3NlcnRFcSk6CisgICAgICAg
ICogZ3Rlc3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3RfLmNjOgorICAgICAgICAqIGd0
ZXN0L3Rlc3QvZ3Rlc3RfdW5pdHRlc3QuY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF94
bWxfb3V0ZmlsZTFfdGVzdF8uY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0
ZmlsZTJfdGVzdF8uY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZXNf
dGVzdC5weToKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3Qu
cHk6CisgICAgICAgIChHVGVzdFhNTE91dHB1dFVuaXRUZXN0KToKKyAgICAgICAgKEdUZXN0WE1M
T3V0cHV0VW5pdFRlc3QudGVzdE5vbkVtcHR5WG1sT3V0cHV0KToKKyAgICAgICAgKEdUZXN0WE1M
T3V0cHV0VW5pdFRlc3QudGVzdEVtcHR5WG1sT3V0cHV0KToKKyAgICAgICAgKEdUZXN0WE1MT3V0
cHV0VW5pdFRlc3QudGVzdFRpbWVzdGFtcFZhbHVlKToKKyAgICAgICAgKEdUZXN0WE1MT3V0cHV0
VW5pdFRlc3QudGVzdERlZmF1bHRPdXRwdXRGaWxlKToKKyAgICAgICAgKEdUZXN0WE1MT3V0cHV0
VW5pdFRlc3QudGVzdFN1cHByZXNzZWRYbWxPdXRwdXQpOgorICAgICAgICAoR1Rlc3RYTUxPdXRw
dXRVbml0VGVzdC50ZXN0RmlsdGVyZWRUZXN0WG1sT3V0cHV0KToKKyAgICAgICAgKEdUZXN0WE1M
T3V0cHV0VW5pdFRlc3QuX0dldFhtbE91dHB1dCk6CisgICAgICAgIChHVGVzdFhNTE91dHB1dFVu
aXRUZXN0Ll9UZXN0WG1sT3V0cHV0KToKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0X3htbF9v
dXRwdXRfdW5pdHRlc3RfLmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX3Rlc3Rf
dXRpbHMucHk6CisgICAgICAgIChHVGVzdFhNTFRlc3RDYXNlLkFzc2VydEVxdWl2YWxlbnROb2Rl
cyk6CisgICAgICAgIChHVGVzdFhNTFRlc3RDYXNlKToKKyAgICAgICAgKEdUZXN0WE1MVGVzdENh
c2UuX0dldENoaWxkcmVuKToKKyAgICAgICAgKEdUZXN0WE1MVGVzdENhc2UuTm9ybWFsaXplWG1s
KToKKyAgICAgICAgKiBndGVzdC90ZXN0L3Byb2R1Y3Rpb24uaDoKKyAgICAgICAgKiBndGVzdC90
ZXN0L3J1bl90ZXN0c191dGlsLnB5OiBSZW1vdmVkLgorICAgICAgICAqIGd0ZXN0L3Rlc3QvcnVu
X3Rlc3RzX3V0aWxfdGVzdC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBndGVzdC94Y29kZS9Db25m
aWcvRGVidWdQcm9qZWN0LnhjY29uZmlnOgorICAgICAgICAqIGd0ZXN0L3hjb2RlL0NvbmZpZy9G
cmFtZXdvcmtUYXJnZXQueGNjb25maWc6CisgICAgICAgICogZ3Rlc3QveGNvZGUvQ29uZmlnL0dl
bmVyYWwueGNjb25maWc6CisgICAgICAgICogZ3Rlc3QveGNvZGUvQ29uZmlnL1Byb2R1Y3Rpb25Q
cm9qZWN0LnhjY29uZmlnOiBSZW1vdmVkLgorICAgICAgICAqIGd0ZXN0L3hjb2RlL0NvbmZpZy9S
ZWxlYXNlUHJvamVjdC54Y2NvbmZpZzoKKyAgICAgICAgKiBndGVzdC94Y29kZS9Db25maWcvU3Rh
dGljTGlicmFyeVRhcmdldC54Y2NvbmZpZzoKKyAgICAgICAgKiBndGVzdC94Y29kZS9NYWtlZmls
ZTogUmVtb3ZlZC4KKyAgICAgICAgKiBndGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBs
ZS9ydW50ZXN0cy5zaDoKKyAgICAgICAgKiBndGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1Nh
bXBsZS93aWRnZXRfdGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC94Y29kZS9TY3JpcHRzL3J1bnRl
c3RzLnNoOgorICAgICAgICAqIGd0ZXN0L3hjb2RlL1NjcmlwdHMvdmVyc2lvbmdlbmVyYXRlLnB5
OgorICAgICAgICAqIGd0ZXN0L3hjb2RlL2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKIDIwMTctMDgtMDggIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtDTWFrZV0gUHJvcGVybHkgdGVzdCBpZiBjb21waWxlciBzdXBwb3J0cyBj
b21waWxlciBmbGFncwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvLmdpdGln
bm9yZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0Ly5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI3
YmU0YjkxYjcwMWRiOWYzZjg5ODkxZTBiZGIxMjc5ZmIxNTNiNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0Ly5naXRpZ25vcmUKQEAgLTAsMCArMSwyIEBACisjIHB5
dGhvbgorKi5weWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NIQU5HRVMg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DSEFOR0VTCmluZGV4IGU1NzQ0MTVlZTZlZDgxY2Y0
OTJiZTI5NTM0NmM0NDRlZWIxMGNlODguLjA1NTIxMzI0MjEyYzkxMjg3ZDkyNDRkNDRiYWIzMDZk
YjY2NGJhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NIQU5HRVMKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ0hBTkdFUwpAQCAtMSwzICsxLDYyIEBACitDaGFu
Z2VzIGZvciAxLjcuMDoKKworKiBOZXcgZmVhdHVyZTogZGVhdGggdGVzdHMgYXJlIHN1cHBvcnRl
ZCBvbiBPcGVuQlNEIGFuZCBpbiBpT1MKKyAgc2ltdWxhdG9yIG5vdy4KKyogTmV3IGZlYXR1cmU6
IEdvb2dsZSBUZXN0IG5vdyBpbXBsZW1lbnRzIGEgcHJvdG9jb2wgdG8gYWxsb3cKKyAgYSB0ZXN0
IHJ1bm5lciB0byBkZXRlY3QgdGhhdCBhIHRlc3QgcHJvZ3JhbSBoYXMgZXhpdGVkCisgIHByZW1h
dHVyZWx5IGFuZCByZXBvcnQgaXQgYXMgYSBmYWlsdXJlIChiZWZvcmUgaXQgd291bGQgYmUKKyAg
ZmFsc2VseSByZXBvcnRlZCBhcyBhIHN1Y2Nlc3MgaWYgdGhlIGV4aXQgY29kZSBpcyAwKS4KKyog
TmV3IGZlYXR1cmU6IFRlc3Q6OlJlY29yZFByb3BlcnR5KCkgY2FuIG5vdyBiZSB1c2VkIG91dHNp
ZGUgb2YgdGhlCisgIGxpZmVzcGFuIG9mIGEgdGVzdCBtZXRob2QsIGluIHdoaWNoIGNhc2UgaXQg
d2lsbCBiZSBhdHRyaWJ1dGVkIHRvCisgIHRoZSBjdXJyZW50IHRlc3QgY2FzZSBvciB0aGUgdGVz
dCBwcm9ncmFtIGluIHRoZSBYTUwgcmVwb3J0LgorKiBOZXcgZmVhdHVyZSAocG90ZW50aWFsbHkg
YnJlYWtpbmcpOiAtLWd0ZXN0X2xpc3RfdGVzdHMgbm93IHByaW50cworICB0aGUgdHlwZSBwYXJh
bWV0ZXJzIGFuZCB2YWx1ZSBwYXJhbWV0ZXJzIGZvciBlYWNoIHRlc3QuCisqIEltcHJvdmVtZW50
OiBjaGFyIHBvaW50ZXJzIGFuZCBjaGFyIGFycmF5cyBhcmUgbm93IGVzY2FwZWQgcHJvcGVybHkK
KyAgaW4gZmFpbHVyZSBtZXNzYWdlcy4KKyogSW1wcm92ZW1lbnQ6IGZhaWx1cmUgc3VtbWFyeSBp
biBYTUwgcmVwb3J0cyBub3cgaW5jbHVkZXMgZmlsZSBhbmQKKyAgbGluZSBpbmZvcm1hdGlvbi4K
KyogSW1wcm92ZW1lbnQ6IHRoZSA8dGVzdHN1aXRlcz4gWE1MIGVsZW1lbnQgbm93IGhhcyBhIHRp
bWVzdGFtcCBhdHRyaWJ1dGUuCisqIEltcHJvdmVtZW50OiBXaGVuIC0tZ3Rlc3RfZmlsdGVyIGlz
IHNwZWNpZmllZCwgWE1MIHJlcG9ydCBub3cgZG9lc24ndAorICBjb250YWluIGluZm9ybWF0aW9u
IGFib3V0IHRlc3RzIHRoYXQgYXJlIGZpbHRlcmVkIG91dC4KKyogRml4ZWQgdGhlIGJ1ZyB3aGVy
ZSBsb25nIC0tZ3Rlc3RfZmlsdGVyIGZsYWcgdmFsdWVzIGFyZSB0cnVuY2F0ZWQgaW4KKyAgZGVh
dGggdGVzdHMuCisqIFBvdGVudGlhbGx5IGJyZWFraW5nIGNoYW5nZTogUlVOX0FMTF9URVNUUygp
IGlzIG5vdyBpbXBsZW1lbnRlZCBhcyBhCisgIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBtYWNybyBp
biBvcmRlciB0byB3b3JrIGJldHRlciB3aXRoIENsYW5nLgorKiBDb21wYXRpYmlsaXR5IGZpeGVz
IHdpdGggQysrIDExIGFuZCB2YXJpb3VzIHBsYXRmb3Jtcy4KKyogQnVnL3dhcm5pbmcgZml4ZXMu
CisKK0NoYW5nZXMgZm9yIDEuNi4wOgorCisqIE5ldyBmZWF0dXJlOiBBRERfRkFJTFVSRV9BVCgp
IGZvciByZXBvcnRpbmcgYSB0ZXN0IGZhaWx1cmUgYXQgdGhlCisgIGdpdmVuIHNvdXJjZSBsb2Nh
dGlvbiAtLSB1c2VmdWwgZm9yIHdyaXRpbmcgdGVzdGluZyB1dGlsaXRpZXMuCisqIE5ldyBmZWF0
dXJlOiB0aGUgdW5pdmVyc2FsIHZhbHVlIHByaW50ZXIgaXMgbW92ZWQgZnJvbSBHb29nbGUgTW9j
aworICB0byBHb29nbGUgVGVzdC4KKyogTmV3IGZlYXR1cmU6IHR5cGUgcGFyYW1ldGVycyBhbmQg
dmFsdWUgcGFyYW1ldGVycyBhcmUgcmVwb3J0ZWQgaW4KKyAgdGhlIFhNTCByZXBvcnQgbm93Lgor
KiBBIGd0ZXN0X2Rpc2FibGVfcHRocmVhZHMgQ01ha2Ugb3B0aW9uLgorKiBDb2xvcmVkIG91dHB1
dCB3b3JrcyBpbiBHTlUgU2NyZWVuIHNlc3Npb25zIG5vdy4KKyogUGFyYW1ldGVycyBvZiB2YWx1
ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBub3cgcHJpbnRlZCBpbiB0aGUKKyAgdGV4dHVhbCBv
dXRwdXQuCisqIEZhaWx1cmVzIGZyb20gYWQgaG9jIHRlc3QgYXNzZXJ0aW9ucyBydW4gYmVmb3Jl
IFJVTl9BTExfVEVTVFMoKSBhcmUKKyAgbm93IGNvcnJlY3RseSByZXBvcnRlZC4KKyogQXJndW1l
bnRzIG9mIEFTU0VSVF9YWSBhbmQgRVhQRUNUX1hZIG5vIGxvbmdlciBuZWVkIHRvIHN1cHBvcnQg
PDwgdG8KKyAgb3N0cmVhbS4KKyogTW9yZSBjb21wbGV0ZSBoYW5kbGluZyBvZiBleGNlcHRpb25z
LgorKiBHVEVTVF9BU1NFUlRfWFkgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBBU1NFUlRfWFkgaW4g
Y2FzZSB0aGUgbGF0dGVyCisgIG5hbWUgaXMgYWxyZWFkeSB1c2VkIGJ5IGFub3RoZXIgbGlicmFy
eS4KKyogLS1ndGVzdF9jYXRjaF9leGNlcHRpb25zIGlzIG5vdyB0cnVlIGJ5IGRlZmF1bHQsIGFs
bG93aW5nIGEgdGVzdAorICBwcm9ncmFtIHRvIGNvbnRpbnVlIGFmdGVyIGFuIGV4Y2VwdGlvbiBp
cyB0aHJvd24uCisqIFZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdCBmaXh0dXJlcyBjYW4gbm93IGRl
cml2ZSBmcm9tIFRlc3QgYW5kCisgIFdpdGhQYXJhbUludGVyZmFjZTxUPiBzZXBhcmF0ZWx5LCBl
YXNpbmcgY29udmVyc2lvbiBvZiBsZWdhY3kgdGVzdHMuCisqIERlYXRoIHRlc3QgbWVzc2FnZXMg
YXJlIGNsZWFybHkgbWFya2VkIHRvIG1ha2UgdGhlbSBtb3JlCisgIGRpc3Rpbmd1aXNoYWJsZSBm
cm9tIG90aGVyIG1lc3NhZ2VzLgorKiBDb21wYXRpYmlsaXR5IGZpeGVzIGZvciBBbmRyb2lkLCBH
b29nbGUgTmF0aXZlIENsaWVudCwgTWluR1csIEhQIFVYLAorICBQb3dlclBDLCBMdWNpZCBhdXRv
dG9vbHMsIGxpYkNTdGQsIFN1biBDKyssIEJvcmxhbmQgQysrIEJ1aWxkZXIgKENvZGUgR2Vhciks
CisgIElCTSBYTCBDKysgKFZpc3VhbCBBZ2UgQysrKSwgYW5kIEMrKzB4LgorKiBCdWcgZml4ZXMg
YW5kIGltcGxlbWVudGF0aW9uIGNsZWFuLXVwcy4KKyogUG90ZW50aWFsbHkgaW5jb21wYXRpYmxl
IGNoYW5nZXM6IGRpc2FibGVzIHRoZSBoYXJtZnVsICdtYWtlIGluc3RhbGwnCisgIGNvbW1hbmQg
aW4gYXV0b3Rvb2xzLgorCiBDaGFuZ2VzIGZvciAxLjUuMDoKIAogICogTmV3IGZlYXR1cmU6IGFz
c2VydGlvbnMgY2FuIGJlIHNhZmVseSBjYWxsZWQgaW4gbXVsdGlwbGUgdGhyZWFkcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9DTWFrZUxpc3RzLnR4dApvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAw
NjQ0CmluZGV4IGU5MjFmOTUyM2NlZGQ4NGE5ZDNlYWFlY2IxMWE5ZmY3NDNlMGI5OGMuLmFmZGQw
ZGVmMGNiNDRlNTUzM2I3NWEwNjlkNTUzMmE0ZTU5OGM0MDEKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ01h
a2VMaXN0cy50eHQKQEAgLTE4LDYgKzE4LDcgQEAgc2V0KEdURVNUX1NPVVJDRVMKICAgICAke0dU
RVNUX0RJUn0vc3JjL2d0ZXN0LWZpbGVwYXRoLmNjCiAgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVz
dF9tYWluLmNjCiAgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1wb3J0LmNjCisgICAgJHtHVEVT
VF9ESVJ9L3NyYy9ndGVzdC1wcmludGVycy5jYwogICAgICR7R1RFU1RfRElSfS9zcmMvZ3Rlc3Qt
dGVzdC1wYXJ0LmNjCiAgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC10eXBlZC10ZXN0LmNjCiAp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DT05UUklCVVRPUlMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9DT05UUklCVVRPUlMKaW5kZXggMDkzNGFlMTMwNTlhZmNkYzA1
ZGY4MTI0N2U2MWI5YTg0YTIzMTJlMi4uZmVhZTJmYzA0NDEwZGMzMDhlNDY0YWEyNTZmZTFmMmQz
MWVkYzk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09OVFJJQlVUT1JT
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NPTlRSSUJVVE9SUwpAQCAtMjEsNiArMjEs
NyBAQCBNYW51ZWwgS2xpbWVrIDxrbGltZWtAZ29vZ2xlLmNvbT4KIE1hcmt1cyBIZXVsZSA8bWFy
a3VzLmhldWxlQGdtYWlsLmNvbT4KIE1pa2EgUmFlbnRvIDxtaWtpZUBpa2kuZmk+CiBNaWtsw7Nz
IEZhemVrYXMgPG1mYXpla2FzQHN6ZW1hZm9yLmNvbT4KK1Bhc2kgVmFsbWluZW4gPHBhc2kudmFs
bWluZW5AZ21haWwuY29tPgogUGF0cmljayBIYW5uYSA8cGhhbm5hQGdvb2dsZS5jb20+CiBQYXRy
aWNrIFJpbGV5IDxwZnJAZ29vZ2xlLmNvbT4KIFBldGVyIEthbWluc2tpIDxwaW90cmtAZ29vZ2xl
LmNvbT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NPUFlJTkcgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9DT1BZSU5HCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxOTQxYTExZjhjZTk0Mzg5MTYwYjQ1ODkyN2EyOWJhMjE3NTQyODE4Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L0NPUFlJTkcKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Db3B5cmlnaHQgMjAwOCwg
R29vZ2xlIEluYy4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotbWV0OgotCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotZGlzdHJpYnV0aW9uLgotICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLXRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLVNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0oSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLU9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9MSUNFTlNFIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTQxYTExZjhjZTk0Mzg5MTYw
YjQ1ODkyN2EyOWJhMjE3NTQyODE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvTElDRU5TRQpAQCAtMCwwICsxLDI4IEBACitDb3B5cmlnaHQgMjAwOCwgR29vZ2xl
IEluYy4KK0FsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
bWV0OgorCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlz
dHJpYnV0aW9uLgorICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKK0EgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCitPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCitUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9NYWtlZmlsZS5hbSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L01ha2VmaWxlLmFtCmluZGV4IDhkNzVlMzJjYzIwY2RlODNjMTc0ZjRl
MDc4ZTI5OTNhOTMyYTlkMTguLjI5Nzk3ZTRlOWRlNGUxZDVlNWY5M2JiYTE0Mjg4ZGU4N2Y2MjM5
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L01ha2VmaWxlLmFtCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L01ha2VmaWxlLmFtCkBAIC0xLDEzICsxLDE2IEBACiAj
IEF1dG9tYWtlIGZpbGUKIAorQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQKKwogIyBOb25zdGFuZGFy
ZCBwYWNrYWdlIGZpbGVzIGZvciBkaXN0cmlidXRpb24KIEVYVFJBX0RJU1QgPSBcCiAgIENIQU5H
RVMgXAogICBDT05UUklCVVRPUlMgXAorICBMSUNFTlNFIFwKICAgaW5jbHVkZS9ndGVzdC9ndGVz
dC1wYXJhbS10ZXN0LmgucHVtcCBcCisgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFy
YW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wIFwKICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC10dXBsZS5oLnB1bXAgXAogICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRp
bC5oLnB1bXAgXAotICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2Vu
ZXJhdGVkLmgucHVtcCBcCiAgIG1ha2UvTWFrZWZpbGUgXAogICBzY3JpcHRzL2Z1c2VfZ3Rlc3Rf
ZmlsZXMucHkgXAogICBzY3JpcHRzL2dlbl9ndGVzdF9wcmVkX2ltcGwucHkgXApAQCAtMTcsMTMg
KzIwLDE0IEBAIEVYVFJBX0RJU1QgPSBcCiAjIGd0ZXN0IHNvdXJjZSBmaWxlcyB0aGF0IHdlIGRv
bid0IGNvbXBpbGUgZGlyZWN0bHkuICBUaGV5IGFyZQogIyAjaW5jbHVkZWQgYnkgZ3Rlc3QtYWxs
LmNjLgogR1RFU1RfU1JDID0gXAotICBzcmMvZ3Rlc3QuY2MgXAogICBzcmMvZ3Rlc3QtZGVhdGgt
dGVzdC5jYyBcCiAgIHNyYy9ndGVzdC1maWxlcGF0aC5jYyBcCiAgIHNyYy9ndGVzdC1pbnRlcm5h
bC1pbmwuaCBcCiAgIHNyYy9ndGVzdC1wb3J0LmNjIFwKKyAgc3JjL2d0ZXN0LXByaW50ZXJzLmNj
IFwKICAgc3JjL2d0ZXN0LXRlc3QtcGFydC5jYyBcCi0gIHNyYy9ndGVzdC10eXBlZC10ZXN0LmNj
CisgIHNyYy9ndGVzdC10eXBlZC10ZXN0LmNjIFwKKyAgc3JjL2d0ZXN0LmNjCiAKIEVYVFJBX0RJ
U1QgKz0gJChHVEVTVF9TUkMpCiAKQEAgLTQxLDU2ICs0NSw1OSBAQCBFWFRSQV9ESVNUICs9IFwK
IAogIyBDKysgdGVzdCBmaWxlcyB0aGF0IHdlIGRvbid0IGNvbXBpbGUgZGlyZWN0bHkuCiBFWFRS
QV9ESVNUICs9IFwKKyAgdGVzdC9ndGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MgXAogICB0ZXN0
L2d0ZXN0LWRlYXRoLXRlc3RfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVz
dC5jYyBcCiAgIHRlc3QvZ3Rlc3QtZmlsZXBhdGhfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3QtbGlu
a2VkX3B0cl90ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC1saXN0ZW5lcl90ZXN0LmNjIFwKICAgdGVz
dC9ndGVzdC1tZXNzYWdlX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3Qu
Y2MgXAogICB0ZXN0L2d0ZXN0LW9wdGlvbnNfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtcGFyYW0t
dGVzdF90ZXN0LmNjIFwKICAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjIFwKKyAgdGVz
dC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rl
c3QuY2MgXAorICB0ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3Qt
cGFyYW0tdGVzdF90ZXN0LmggXAogICB0ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYyBcCi0gIHRlc3Qv
Z3Rlc3RfcHJlZF9pbXBsX3VuaXR0ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2Mg
XAotICB0ZXN0L3Byb2R1Y3Rpb24uY2MgXAotICB0ZXN0L3Byb2R1Y3Rpb24uaCBcCi0gIHRlc3Qv
Z3Rlc3RfcmVwZWF0X3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0X3NvbGVfaGVhZGVyX3Rlc3QuY2Mg
XAotICB0ZXN0L2d0ZXN0X3N0cmVzc190ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdF9wcmVtYXR1cmVf
ZXhpdF90ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC1wcmludGVyc190ZXN0LmNjIFwKICAgdGVzdC9n
dGVzdC10ZXN0LXBhcnRfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9l
eF90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MgXAorICB0ZXN0L2d0
ZXN0LXR1cGxlX3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MgXAor
ICB0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3QtdHlwZWQtdGVz
dF90ZXN0LmggXAotICB0ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjIFwKICAgdGVzdC9ndGVzdC11bml0
dGVzdC1hcGlfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYyBcCi0gIHRl
c3QvZ3Rlc3RfbWFpbl91bml0dGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MgXAot
ICB0ZXN0L2d0ZXN0LXR1cGxlX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVz
dC5jYyBcCi0gIHRlc3QvZ3Rlc3QtcGFyYW0tdGVzdDJfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3Rf
YnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8uY2MgXAorICB0ZXN0L2d0ZXN0X2NhdGNoX2V4Y2Vw
dGlvbnNfdGVzdF8uY2MgXAogICB0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjIFwKICAgdGVzdC9n
dGVzdF9lbnZfdmFyX3Rlc3RfLmNjIFwKKyAgdGVzdC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNj
IFwKICAgdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3RfLmNjIFwKICAgdGVzdC9ndGVzdF9oZWxw
X3Rlc3RfLmNjIFwKICAgdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYyBcCisgIHRl
c3QvZ3Rlc3RfbWFpbl91bml0dGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0dGVz
dC5jYyBcCiAgIHRlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjIFwKKyAgdGVzdC9ndGVzdF9wcmVk
X2ltcGxfdW5pdHRlc3QuY2MgXAorICB0ZXN0L2d0ZXN0X3Byb2RfdGVzdC5jYyBcCisgIHRlc3Qv
Z3Rlc3RfcmVwZWF0X3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdF8uY2MgXAor
ICB0ZXN0L2d0ZXN0X3NvbGVfaGVhZGVyX3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0X3N0cmVzc190
ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MgXAogICB0
ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2MgXAogICB0ZXN0L2d0ZXN0X3VuaW5p
dGlhbGl6ZWRfdGVzdF8uY2MgXAorICB0ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjIFwKKyAgdGVzdC9n
dGVzdF91bml0dGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfLmNjIFwK
ICAgdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X3htbF9v
dXRwdXRfdW5pdHRlc3RfLmNjCisgIHRlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2Mg
XAorICB0ZXN0L3Byb2R1Y3Rpb24uY2MgXAorICB0ZXN0L3Byb2R1Y3Rpb24uaAogCiAjIFB5dGhv
biB0ZXN0cyB0aGF0IHdlIGRvbid0IHJ1bi4KIEVYVFJBX0RJU1QgKz0gXAotICB0ZXN0L2d0ZXN0
X3Rlc3RfdXRpbHMucHkgXAotICB0ZXN0L2d0ZXN0X3htbF90ZXN0X3V0aWxzLnB5IFwKICAgdGVz
dC9ndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0LnB5IFwKKyAgdGVzdC9ndGVzdF9jYXRj
aF9leGNlcHRpb25zX3Rlc3QucHkgXAogICB0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkgXAogICB0
ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weSBcCiAgIHRlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0
LnB5IFwKQEAgLTk4LDI0ICsxMDUsMjQgQEAgRVhUUkFfRElTVCArPSBcCiAgIHRlc3QvZ3Rlc3Rf
bGlzdF90ZXN0c191bml0dGVzdC5weSBcCiAgIHRlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkgXAog
ICB0ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0IFwKLSAgdGVzdC9ndGVzdF9v
dXRwdXRfdGVzdF9nb2xkZW5fd2luLnR4dCBcCiAgIHRlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0LnB5
IFwKKyAgdGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5IFwKICAgdGVzdC9ndGVzdF90aHJvd19vbl9m
YWlsdXJlX3Rlc3QucHkgXAogICB0ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5weSBcCiAg
IHRlc3QvZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkgXAogICB0ZXN0L2d0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3QucHkgXAotICB0ZXN0L3J1bl90ZXN0c191dGlsLnB5IFwKLSAgdGVzdC9ydW5f
dGVzdHNfdXRpbF90ZXN0LnB5CisgIHRlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkKIAogIyBD
TWFrZSBzY3JpcHQKIEVYVFJBX0RJU1QgKz0gXAotICBDTWFrZUxpc3RzLnR4dAorICBDTWFrZUxp
c3RzLnR4dCBcCisgIGNtYWtlL2ludGVybmFsX3V0aWxzLmNtYWtlCiAKICMgTVNWQyBwcm9qZWN0
IGZpbGVzCiBFWFRSQV9ESVNUICs9IFwKICAgbXN2Yy9ndGVzdC1tZC5zbG4gXAotICBtc3ZjL2d0
ZXN0LnNsbiBcCiAgIG1zdmMvZ3Rlc3QtbWQudmNwcm9qIFwKKyAgbXN2Yy9ndGVzdC5zbG4gXAog
ICBtc3ZjL2d0ZXN0LnZjcHJvaiBcCiAgIG1zdmMvZ3Rlc3RfbWFpbi1tZC52Y3Byb2ogXAogICBt
c3ZjL2d0ZXN0X21haW4udmNwcm9qIFwKQEAgLTEzMywzMSArMTQwLDI3IEBAIEVYVFJBX0RJU1Qg
Kz0gXAogICB4Y29kZS9Db25maWcvU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyBcCiAgIHhj
b2RlL0NvbmZpZy9UZXN0VGFyZ2V0LnhjY29uZmlnIFwKICAgeGNvZGUvUmVzb3VyY2VzL0luZm8u
cGxpc3QgXAotICB4Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weSBcCiAgIHhjb2RlL1Nj
cmlwdHMvcnVudGVzdHMuc2ggXAorICB4Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weSBc
CiAgIHhjb2RlL2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKIAogIyB4Y29kZSBzYW1w
bGUgZmlsZXMKIEVYVFJBX0RJU1QgKz0gXAogICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBs
ZS9JbmZvLnBsaXN0IFwKKyAgeGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvV2lkZ2V0RnJh
bWV3b3JrLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogXAogICB4Y29kZS9TYW1wbGVzL0ZyYW1l
d29ya1NhbXBsZS9ydW50ZXN0cy5zaCBcCi0gIHhjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxl
L3dpZGdldF90ZXN0LmNjIFwKICAgeGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0
LmNjIFwKICAgeGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0LmggXAotICB4Y29k
ZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9XaWRnZXRGcmFtZXdvcmsueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS93aWRnZXRfdGVzdC5j
YwogCiAjIEMrK0J1aWxkZXIgcHJvamVjdCBmaWxlcwogRVhUUkFfRElTVCArPSBcCisgIGNvZGVn
ZWFyL2d0ZXN0LmNicHJvaiBcCisgIGNvZGVnZWFyL2d0ZXN0Lmdyb3VwcHJvaiBcCiAgIGNvZGVn
ZWFyL2d0ZXN0X2FsbC5jYyBcCiAgIGNvZGVnZWFyL2d0ZXN0X2xpbmsuY2MgXAotICBjb2RlZ2Vh
ci9ndGVzdC5jYnByb2ogXAogICBjb2RlZ2Vhci9ndGVzdF9tYWluLmNicHJvaiBcCi0gIGNvZGVn
ZWFyL2d0ZXN0X3VuaXR0ZXN0LmNicHJvaiBcCi0gIGNvZGVnZWFyL2d0ZXN0Lmdyb3VwcHJvagot
Ci0jIFNjcmlwdHMgYW5kIHV0aWxpdGllcwotYmluX1NDUklQVFMgPSBzY3JpcHRzL2d0ZXN0LWNv
bmZpZwotQ0xFQU5GSUxFUyA9ICQoYmluX1NDUklQVFMpCisgIGNvZGVnZWFyL2d0ZXN0X3VuaXR0
ZXN0LmNicHJvagogCiAjIERpc3RyaWJ1dGUgYW5kIGluc3RhbGwgTTQgbWFjcm8KIG00ZGF0YWRp
ciA9ICQoZGF0YWRpcikvYWNsb2NhbApAQCAtMTgxLDE1ICsxODQsMTcgQEAgbGliX0xUTElCUkFS
SUVTID0gbGliL2xpYmd0ZXN0LmxhIGxpYi9saWJndGVzdF9tYWluLmxhCiAKIGxpYl9saWJndGVz
dF9sYV9TT1VSQ0VTID0gc3JjL2d0ZXN0LWFsbC5jYwogCi1wa2dpbmNsdWRlX0hFQURFUlMgPSBp
bmNsdWRlL2d0ZXN0L2d0ZXN0LmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVz
dC9ndGVzdC1kZWF0aC10ZXN0LmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVz
dC9ndGVzdC1tZXNzYWdlLmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9n
dGVzdC1wYXJhbS10ZXN0LmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9n
dGVzdF9wcmVkX2ltcGwuaCBcCi0gICAgICAgICAgICAgICAgICAgICBpbmNsdWRlL2d0ZXN0L2d0
ZXN0X3Byb2QuaCBcCi0gICAgICAgICAgICAgICAgICAgICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXNw
aS5oIFwKLSAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0
LmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVzdC10eXBlZC10ZXN0
LmgKK3BrZ2luY2x1ZGVfSEVBREVSUyA9IFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10
ZXN0LmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCBcCisgIGluY2x1ZGUvZ3Rl
c3QvZ3Rlc3QtcGFyYW0tdGVzdC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC1wcmludGVycy5o
IFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC1zcGkuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3Qt
dGVzdC1wYXJ0LmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaCBcCisgIGlu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmgg
XAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaAogCiBwa2dpbmNsdWRlX2ludGVybmFsZGly
ID0gJChwa2dpbmNsdWRlZGlyKS9pbnRlcm5hbAogcGtnaW5jbHVkZV9pbnRlcm5hbF9IRUFERVJT
ID0gXApAQCAtMjAwLDkgKzIwNSwxMyBAQCBwa2dpbmNsdWRlX2ludGVybmFsX0hFQURFUlMgPSBc
CiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCBc
CiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oIFwKICAgaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmggXAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXBvcnQtYXJjaC5oIFwKICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJp
bmcuaCBcCiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaCBcCi0gIGluY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgKKyAgaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC10eXBlLXV0aWwuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9t
L2d0ZXN0LmggXAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0Lmgg
XAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wcmludGVycy5oCiAKIGxp
Yl9saWJndGVzdF9tYWluX2xhX1NPVVJDRVMgPSBzcmMvZ3Rlc3RfbWFpbi5jYwogbGliX2xpYmd0
ZXN0X21haW5fbGFfTElCQUREID0gbGliL2xpYmd0ZXN0LmxhCkBAIC0yMTYsMTMgKzIyNSwxNCBA
QCBsaWJfbGliZ3Rlc3RfbWFpbl9sYV9MSUJBREQgPSBsaWIvbGliZ3Rlc3QubGEKIAogbm9pbnN0
X0xUTElCUkFSSUVTID0gc2FtcGxlcy9saWJzYW1wbGVzLmxhCiAKLXNhbXBsZXNfbGlic2FtcGxl
c19sYV9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGUxLmNjIFwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2FtcGxlcy9zYW1wbGUxLmggXAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzYW1wbGVzL3NhbXBsZTIuY2MgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzYW1wbGVzL3NhbXBsZTIuaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNhbXBsZXMvc2FtcGxlMy1pbmwuaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNhbXBsZXMvc2FtcGxlNC5jYyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNh
bXBsZXMvc2FtcGxlNC5oCitzYW1wbGVzX2xpYnNhbXBsZXNfbGFfU09VUkNFUyA9IFwKKyAgc2Ft
cGxlcy9zYW1wbGUxLmNjIFwKKyAgc2FtcGxlcy9zYW1wbGUxLmggXAorICBzYW1wbGVzL3NhbXBs
ZTIuY2MgXAorICBzYW1wbGVzL3NhbXBsZTIuaCBcCisgIHNhbXBsZXMvc2FtcGxlMy1pbmwuaCBc
CisgIHNhbXBsZXMvc2FtcGxlNC5jYyBcCisgIHNhbXBsZXMvc2FtcGxlNC5oCiAKIFRFU1RTPQog
VEVTVFNfRU5WSVJPTk1FTlQgPSBHVEVTVF9TT1VSQ0VfRElSPSIkKHNyY2RpcikvdGVzdCIgXApA
QCAtMjM0LDYgKzI0NCw3IEBAIFRFU1RTICs9IHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdAogY2hl
Y2tfUFJPR1JBTVMgKz0gc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0CiBzYW1wbGVzX3NhbXBsZTFf
dW5pdHRlc3RfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYwogc2FtcGxlc19z
YW1wbGUxX3VuaXR0ZXN0X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGliL2xpYmd0ZXN0LmxhIFwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvbGlic2FtcGxlcy5sYQogCiAjIEFub3RoZXIgc2Ft
cGxlLiAgSXQgYWxzbyB2ZXJpZmllcyB0aGF0IGxpYmd0ZXN0IHdvcmtzLgpAQCAtMjQzLDE4ICsy
NTQsMjAgQEAgc2FtcGxlc19zYW1wbGUxMF91bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1w
bGUxMF91bml0dGVzdC5jYwogc2FtcGxlc19zYW1wbGUxMF91bml0dGVzdF9MREFERCA9IGxpYi9s
aWJndGVzdC5sYQogCiAjIFRoaXMgdGVzdHMgbW9zdCBjb25zdHJ1Y3RzIG9mIGd0ZXN0IGFuZCB2
ZXJpZmllcyB0aGF0IGxpYmd0ZXN0X21haW4KLSMgd29ya3MuCisjIGFuZCBsaWJndGVzdCB3b3Jr
LgogVEVTVFMgKz0gdGVzdC9ndGVzdF9hbGxfdGVzdAogY2hlY2tfUFJPR1JBTVMgKz0gdGVzdC9n
dGVzdF9hbGxfdGVzdAogdGVzdF9ndGVzdF9hbGxfdGVzdF9TT1VSQ0VTID0gdGVzdC9ndGVzdF9h
bGxfdGVzdC5jYwotdGVzdF9ndGVzdF9hbGxfdGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWlu
LmxhCit0ZXN0X2d0ZXN0X2FsbF90ZXN0X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQogCiAjIFRlc3RzIHRo
YXQgZnVzZWQgZ3Rlc3QgZmlsZXMgY29tcGlsZSBhbmQgd29yay4KIEZVU0VEX0dURVNUX1NSQyA9
IFwKICAgZnVzZWQtc3JjL2d0ZXN0L2d0ZXN0LWFsbC5jYyBcCi0gIGZ1c2VkLXNyYy9ndGVzdC9n
dGVzdF9tYWluLmNjIFwKLSAgZnVzZWQtc3JjL2d0ZXN0L2d0ZXN0LmgKKyAgZnVzZWQtc3JjL2d0
ZXN0L2d0ZXN0LmggXAorICBmdXNlZC1zcmMvZ3Rlc3QvZ3Rlc3RfbWFpbi5jYwogCitpZiBIQVZF
X1BZVEhPTgogVEVTVFMgKz0gdGVzdC9mdXNlZF9ndGVzdF90ZXN0CiBjaGVja19QUk9HUkFNUyAr
PSB0ZXN0L2Z1c2VkX2d0ZXN0X3Rlc3QKIHRlc3RfZnVzZWRfZ3Rlc3RfdGVzdF9TT1VSQ0VTID0g
JChGVVNFRF9HVEVTVF9TUkMpIFwKQEAgLTI3OCw3ICsyOTEsMjAgQEAgZnVzZWQtZ3Rlc3Q6ICQo
cGtnaW5jbHVkZV9IRUFERVJTKSAkKHBrZ2luY2x1ZGVfaW50ZXJuYWxfSEVBREVSUykgXAogCiBt
YWludGFpbmVyLWNsZWFuLWxvY2FsOgogCXJtIC1yZiAiJChzcmNkaXIpL2Z1c2VkLXNyYyIKK2Vu
ZGlmCiAKICMgRGVhdGggdGVzdHMgbWF5IHByb2R1Y2UgY29yZSBkdW1wcyBpbiB0aGUgYnVpbGQg
ZGlyZWN0b3J5LiBJbiBjYXNlCiAjIHRoaXMgaGFwcGVucywgY2xlYW4gdGhlbSB0byBrZWVwIGRp
c3RjbGVhbmNoZWNrIGhhcHB5LgotQ0xFQU5GSUxFUyArPSBjb3JlCitDTEVBTkZJTEVTID0gY29y
ZQorCisjIERpc2FibGVzICdtYWtlIGluc3RhbGwnIGFzIGluc3RhbGxpbmcgYSBjb21waWxlZCB2
ZXJzaW9uIG9mIEdvb2dsZQorIyBUZXN0IGNhbiBsZWFkIHRvIHVuZGVmaW5lZCBiZWhhdmlvciBk
dWUgdG8gdmlvbGF0aW9uIG9mIHRoZQorIyBPbmUtRGVmaW5pdGlvbiBSdWxlLgorCitpbnN0YWxs
LWV4ZWMtbG9jYWw6CisJZWNobyAiJ21ha2UgaW5zdGFsbCcgaXMgZGFuZ2Vyb3VzIGFuZCBub3Qg
c3VwcG9ydGVkLiBJbnN0ZWFkLCBzZWUgUkVBRE1FIGZvciBob3cgdG8gaW50ZWdyYXRlIEdvb2ds
ZSBUZXN0IGludG8geW91ciBidWlsZCBzeXN0ZW0uIgorCWZhbHNlCisKK2luc3RhbGwtZGF0YS1s
b2NhbDoKKwllY2hvICInbWFrZSBpbnN0YWxsJyBpcyBkYW5nZXJvdXMgYW5kIG5vdCBzdXBwb3J0
ZWQuIEluc3RlYWQsIHNlZSBSRUFETUUgZm9yIGhvdyB0byBpbnRlZ3JhdGUgR29vZ2xlIFRlc3Qg
aW50byB5b3VyIGJ1aWxkIHN5c3RlbS4iCisJZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L1JFQURNRSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM2MTE5MDAyMDk5MTUwZDcxNTc0OWExNmUwM2My
ZjU3MzY4NmJiNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9SRUFETUUKKysrIC9kZXYvbnVsbApAQCAtMSw0MTcg
KzAsMCBAQAotR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yawotPT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotCi1odHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC8KLQotT3Zl
cnZpZXcKLS0tLS0tLS0tCi0KLUdvb2dsZSdzIGZyYW1ld29yayBmb3Igd3JpdGluZyBDKysgdGVz
dHMgb24gYSB2YXJpZXR5IG9mIHBsYXRmb3JtcwotKExpbnV4LCBNYWMgT1MgWCwgV2luZG93cywg
V2luZG93cyBDRSwgU3ltYmlhbiwgZXRjKS4gIEJhc2VkIG9uIHRoZQoteFVuaXQgYXJjaGl0ZWN0
dXJlLiAgU3VwcG9ydHMgYXV0b21hdGljIHRlc3QgZGlzY292ZXJ5LCBhIHJpY2ggc2V0IG9mCi1h
c3NlcnRpb25zLCB1c2VyLWRlZmluZWQgYXNzZXJ0aW9ucywgZGVhdGggdGVzdHMsIGZhdGFsIGFu
ZCBub24tZmF0YWwKLWZhaWx1cmVzLCB2YXJpb3VzIG9wdGlvbnMgZm9yIHJ1bm5pbmcgdGhlIHRl
c3RzLCBhbmQgWE1MIHRlc3QgcmVwb3J0Ci1nZW5lcmF0aW9uLgotCi1QbGVhc2Ugc2VlIHRoZSBw
cm9qZWN0IHBhZ2UgYWJvdmUgZm9yIG1vcmUgaW5mb3JtYXRpb24gYXMgd2VsbCBhcyB0aGUKLW1h
aWxpbmcgbGlzdCBmb3IgcXVlc3Rpb25zLCBkaXNjdXNzaW9ucywgYW5kIGRldmVsb3BtZW50LiAg
VGhlcmUgaXMKLWFsc28gYW4gSVJDIGNoYW5uZWwgb24gT0ZUQyAoaXJjLm9mdGMubmV0KSAjZ3Rl
c3QgYXZhaWxhYmxlLiAgUGxlYXNlCi1qb2luIHVzIQotCi1SZXF1aXJlbWVudHMgZm9yIEVuZCBV
c2VycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotR29vZ2xlIFRlc3QgaXMgZGVzaWdu
ZWQgdG8gaGF2ZSBmYWlybHkgbWluaW1hbCByZXF1aXJlbWVudHMgdG8gYnVpbGQKLWFuZCB1c2Ug
d2l0aCB5b3VyIHByb2plY3RzLCBidXQgdGhlcmUgYXJlIHNvbWUuICBDdXJyZW50bHksIHdlIHN1
cHBvcnQKLUxpbnV4LCBXaW5kb3dzLCBNYWMgT1MgWCwgYW5kIEN5Z3dpbi4gIFdlIHdpbGwgYWxz
byBtYWtlIG91ciBiZXN0Ci1lZmZvcnQgdG8gc3VwcG9ydCBvdGhlciBwbGF0Zm9ybXMgKGUuZy4g
U29sYXJpcywgQUlYLCBhbmQgei9PUykuCi1Ib3dldmVyLCBzaW5jZSBjb3JlIG1lbWJlcnMgb2Yg
dGhlIEdvb2dsZSBUZXN0IHByb2plY3QgaGF2ZSBubyBhY2Nlc3MKLXRvIHRoZXNlIHBsYXRmb3Jt
cywgR29vZ2xlIFRlc3QgbWF5IGhhdmUgb3V0c3RhbmRpbmcgaXNzdWVzIHRoZXJlLiAgSWYKLXlv
dSBub3RpY2UgYW55IHByb2JsZW1zIG9uIHlvdXIgcGxhdGZvcm0sIHBsZWFzZSBub3RpZnkKLWdv
b2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbS4gIFBhdGNoZXMgZm9yIGZpeGluZyB0
aGVtIGFyZQotZXZlbiBtb3JlIHdlbGNvbWUhCi0KLSMjIyBMaW51eCBSZXF1aXJlbWVudHMgIyMj
Ci0KLVRoZXNlIGFyZSB0aGUgYmFzZSByZXF1aXJlbWVudHMgdG8gYnVpbGQgYW5kIHVzZSBHb29n
bGUgVGVzdCBmcm9tIGEgc291cmNlCi1wYWNrYWdlIChhcyBkZXNjcmliZWQgYmVsb3cpOgotICAq
IEdOVS1jb21wYXRpYmxlIE1ha2Ugb3IgZ21ha2UKLSAgKiBQT1NJWC1zdGFuZGFyZCBzaGVsbAot
ICAqIFBPU0lYKC0yKSBSZWd1bGFyIEV4cHJlc3Npb25zIChyZWdleC5oKQotICAqIEEgQysrOTgt
c3RhbmRhcmQtY29tcGxpYW50IGNvbXBpbGVyCi0KLSMjIyBXaW5kb3dzIFJlcXVpcmVtZW50cyAj
IyMKLQotICAqIE1pY3Jvc29mdCBWaXN1YWwgQysrIDcuMSBvciBuZXdlcgotCi0jIyMgQ3lnd2lu
IFJlcXVpcmVtZW50cyAjIyMKLQotICAqIEN5Z3dpbiAxLjUuMjUtMTQgb3IgbmV3ZXIKLQotIyMj
IE1hYyBPUyBYIFJlcXVpcmVtZW50cyAjIyMKLQotICAqIE1hYyBPUyBYIDEwLjQgVGlnZXIgb3Ig
bmV3ZXIKLSAgKiBEZXZlbG9wZXIgVG9vbHMgSW5zdGFsbGVkCi0KLUFsc28sIHlvdSdsbCBuZWVk
IENNYWtlIDIuNi40IG9yIGhpZ2hlciBpZiB5b3Ugd2FudCB0byBidWlsZCB0aGUKLXNhbXBsZXMg
dXNpbmcgdGhlIHByb3ZpZGVkIENNYWtlIHNjcmlwdCwgcmVnYXJkbGVzcyBvZiB0aGUgcGxhdGZv
cm0uCi0KLVJlcXVpcmVtZW50cyBmb3IgQ29udHJpYnV0b3JzCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotCi1XZSB3ZWxjb21lIHBhdGNoZXMuICBJZiB5b3UgcGxhbiB0byBjb250cmli
dXRlIGEgcGF0Y2gsIHlvdSBuZWVkIHRvCi1idWlsZCBHb29nbGUgVGVzdCBhbmQgaXRzIG93biB0
ZXN0cyBmcm9tIGFuIFNWTiBjaGVja291dCAoZGVzY3JpYmVkCi1iZWxvdyksIHdoaWNoIGhhcyBm
dXJ0aGVyIHJlcXVpcmVtZW50czoKLQotICAqIFB5dGhvbiB2ZXJzaW9uIDIuMyBvciBuZXdlciAo
Zm9yIHJ1bm5pbmcgc29tZSBvZiB0aGUgdGVzdHMgYW5kCi0gICAgcmUtZ2VuZXJhdGluZyBjZXJ0
YWluIHNvdXJjZSBmaWxlcyBmcm9tIHRlbXBsYXRlcykKLSAgKiBDTWFrZSAyLjYuNCBvciBuZXdl
cgotCi1HZXR0aW5nIHRoZSBTb3VyY2UKLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UaGVyZSBhcmUg
dHdvIHByaW1hcnkgd2F5cyBvZiBnZXR0aW5nIEdvb2dsZSBUZXN0J3Mgc291cmNlIGNvZGU6IHlv
dQotY2FuIGRvd25sb2FkIGEgc3RhYmxlIHNvdXJjZSByZWxlYXNlIGluIHlvdXIgcHJlZmVycmVk
IGFyY2hpdmUgZm9ybWF0LAotb3IgZGlyZWN0bHkgY2hlY2sgb3V0IHRoZSBzb3VyY2UgZnJvbSBv
dXIgU3VidmVyc2lvbiAoU1ZOKSByZXBvc2l0YXJ5LgotVGhlIFNWTiBjaGVja291dCByZXF1aXJl
cyBhIGZldyBleHRyYSBzdGVwcyBhbmQgc29tZSBleHRyYSBzb2Z0d2FyZQotcGFja2FnZXMgb24g
eW91ciBzeXN0ZW0sIGJ1dCBsZXRzIHlvdSB0cmFjayB0aGUgbGF0ZXN0IGRldmVsb3BtZW50IGFu
ZAotbWFrZSBwYXRjaGVzIG11Y2ggbW9yZSBlYXNpbHksIHNvIHdlIGhpZ2hseSBlbmNvdXJhZ2Ug
aXQuCi0KLSMjIyBTb3VyY2UgUGFja2FnZSAjIyMKLQotR29vZ2xlIFRlc3QgaXMgcmVsZWFzZWQg
aW4gdmVyc2lvbmVkIHNvdXJjZSBwYWNrYWdlcyB3aGljaCBjYW4gYmUKLWRvd25sb2FkZWQgZnJv
bSB0aGUgZG93bmxvYWQgcGFnZSBbMV0uICBTZXZlcmFsIGRpZmZlcmVudCBhcmNoaXZlCi1mb3Jt
YXRzIGFyZSBwcm92aWRlZCwgYnV0IHRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhlIHRvb2xzIHVz
ZWQgdG8KLW1hbmlwdWxhdGUgdGhlbSwgYW5kIHRoZSBzaXplIG9mIHRoZSByZXN1bHRpbmcgZmls
ZS4gIERvd25sb2FkCi13aGljaGV2ZXIgeW91IGFyZSBtb3N0IGNvbWZvcnRhYmxlIHdpdGguCi0K
LSAgWzFdIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L2Rvd25sb2Fkcy9saXN0
Ci0KLU9uY2UgdGhlIHBhY2thZ2UgaXMgZG93bmxvYWRlZCwgZXhwYW5kIGl0IHVzaW5nIHdoaWNo
ZXZlciB0b29scyB5b3UKLXByZWZlciBmb3IgdGhhdCB0eXBlLiAgVGhpcyB3aWxsIHJlc3VsdCBp
biBhIG5ldyBkaXJlY3Rvcnkgd2l0aCB0aGUKLW5hbWUgImd0ZXN0LVguWS5aIiB3aGljaCBjb250
YWlucyBhbGwgb2YgdGhlIHNvdXJjZSBjb2RlLiAgSGVyZSBhcmUKLXNvbWUgZXhhbXBsZXMgb24g
TGludXg6Ci0KLSAgdGFyIC14dnpmIGd0ZXN0LVguWS5aLnRhci5negotICB0YXIgLXh2amYgZ3Rl
c3QtWC5ZLloudGFyLmJ6MgotICB1bnppcCBndGVzdC1YLlkuWi56aXAKLQotIyMjIFNWTiBDaGVj
a291dCAjIyMKLQotVG8gY2hlY2sgb3V0IHRoZSBtYWluIGJyYW5jaCAoYWxzbyBrbm93biBhcyB0
aGUgInRydW5rIikgb2YgR29vZ2xlCi1UZXN0LCBydW4gdGhlIGZvbGxvd2luZyBTdWJ2ZXJzaW9u
IGNvbW1hbmQ6Ci0KLSAgc3ZuIGNoZWNrb3V0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUu
Y29tL3N2bi90cnVuay8gZ3Rlc3Qtc3ZuCi0KLVNldHRpbmcgdXAgdGhlIEJ1aWxkCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotCi1UbyBidWlsZCBHb29nbGUgVGVzdCBhbmQgeW91ciB0ZXN0cyB0aGF0
IHVzZSBpdCwgeW91IG5lZWQgdG8gdGVsbCB5b3VyCi1idWlsZCBzeXN0ZW0gd2hlcmUgdG8gZmlu
ZCBpdHMgaGVhZGVycyBhbmQgc291cmNlIGZpbGVzLiAgVGhlIGV4YWN0Ci13YXkgdG8gZG8gaXQg
ZGVwZW5kcyBvbiB3aGljaCBidWlsZCBzeXN0ZW0geW91IHVzZSwgYW5kIGlzIHVzdWFsbHkKLXN0
cmFpZ2h0Zm9yd2FyZC4KLQotIyMjIEdlbmVyaWMgQnVpbGQgSW5zdHJ1Y3Rpb25zICMjIwotCi1T
dXBwb3NlIHlvdSBwdXQgR29vZ2xlIFRlc3QgaW4gZGlyZWN0b3J5ICR7R1RFU1RfRElSfS4gIFRv
IGJ1aWxkIGl0LAotY3JlYXRlIGEgbGlicmFyeSBidWlsZCB0YXJnZXQgKG9yIGEgcHJvamVjdCBh
cyBjYWxsZWQgYnkgVmlzdWFsIFN0dWRpbwotYW5kIFhjb2RlKSB0byBjb21waWxlCi0KLSAgJHtH
VEVTVF9ESVJ9L3NyYy9ndGVzdC1hbGwuY2MKLQotd2l0aAotCi0gICR7R1RFU1RfRElSfS9pbmNs
dWRlIGFuZCAke0dURVNUX0RJUn0KLQotaW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0aC4gIEFzc3Vt
aW5nIGEgTGludXgtbGlrZSBzeXN0ZW0gYW5kIGdjYywKLXNvbWV0aGluZyBsaWtlIHRoZSBmb2xs
b3dpbmcgd2lsbCBkbzoKLQotICBnKysgLUkke0dURVNUX0RJUn0vaW5jbHVkZSAtSSR7R1RFU1Rf
RElSfSAtYyAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LWFsbC5jYwotICBhciAtcnYgbGliZ3Rlc3Qu
YSBndGVzdC1hbGwubwotCi1OZXh0LCB5b3Ugc2hvdWxkIGNvbXBpbGUgeW91ciB0ZXN0IHNvdXJj
ZSBmaWxlIHdpdGgKLSR7R1RFU1RfRElSfS9pbmNsdWRlIGluIHRoZSBoZWFkZXIgc2VhcmNoIHBh
dGgsIGFuZCBsaW5rIGl0IHdpdGggZ3Rlc3QKLWFuZCBhbnkgb3RoZXIgbmVjZXNzYXJ5IGxpYnJh
cmllczoKLQotICBnKysgLUkke0dURVNUX0RJUn0vaW5jbHVkZSBwYXRoL3RvL3lvdXJfdGVzdC5j
YyBsaWJndGVzdC5hIC1vIHlvdXJfdGVzdAotCi1BcyBhbiBleGFtcGxlLCB0aGUgbWFrZS8gZGly
ZWN0b3J5IGNvbnRhaW5zIGEgTWFrZWZpbGUgdGhhdCB5b3UgY2FuCi11c2UgdG8gYnVpbGQgR29v
Z2xlIFRlc3Qgb24gc3lzdGVtcyB3aGVyZSBHTlUgbWFrZSBpcyBhdmFpbGFibGUKLShlLmcuIExp
bnV4LCBNYWMgT1MgWCwgYW5kIEN5Z3dpbikuICBJdCBkb2Vzbid0IHRyeSB0byBidWlsZCBHb29n
bGUKLVRlc3QncyBvd24gdGVzdHMuICBJbnN0ZWFkLCBpdCBqdXN0IGJ1aWxkcyB0aGUgR29vZ2xl
IFRlc3QgbGlicmFyeSBhbmQKLWEgc2FtcGxlIHRlc3QuICBZb3UgY2FuIHVzZSBpdCBhcyBhIHN0
YXJ0aW5nIHBvaW50IGZvciB5b3VyIG93biBidWlsZAotc2NyaXB0LgotCi1JZiB0aGUgZGVmYXVs
dCBzZXR0aW5ncyBhcmUgY29ycmVjdCBmb3IgeW91ciBlbnZpcm9ubWVudCwgdGhlCi1mb2xsb3dp
bmcgY29tbWFuZHMgc2hvdWxkIHN1Y2NlZWQ6Ci0KLSAgY2QgJHtHVEVTVF9ESVJ9L21ha2UKLSAg
bWFrZQotICAuL3NhbXBsZTFfdW5pdHRlc3QKLQotSWYgeW91IHNlZSBlcnJvcnMsIHRyeSB0byB0
d2VhayB0aGUgY29udGVudHMgb2YgbWFrZS9NYWtlZmlsZSB0byBtYWtlCi10aGVtIGdvIGF3YXku
ICBUaGVyZSBhcmUgaW5zdHJ1Y3Rpb25zIGluIG1ha2UvTWFrZWZpbGUgb24gaG93IHRvIGRvCi1p
dC4KLQotIyMjIFVzaW5nIENNYWtlICMjIwotCi1Hb29nbGUgVGVzdCBjb21lcyB3aXRoIGEgQ01h
a2UgYnVpbGQgc2NyaXB0IChDTWFrZUxpc3RzLnR4dCkgdGhhdCBjYW4KLWJlIHVzZWQgb24gYSB3
aWRlIHJhbmdlIG9mIHBsYXRmb3JtcyAoIkMiIHN0YW5kcyBmb3IgY3Jvc3MtcGxhdG9mcm0uKS4K
LUlmIHlvdSBkb24ndCBoYXZlIENNYWtlIGluc3RhbGxlZCBhbHJlYWR5LCB5b3UgY2FuIGRvd25s
b2FkIGl0IGZvcgotZnJlZSBmcm9tIGh0dHA6Ly93d3cuY21ha2Uub3JnLy4KLQotQ01ha2Ugd29y
a3MgYnkgZ2VuZXJhdGluZyBuYXRpdmUgbWFrZWZpbGVzIG9yIGJ1aWxkIHByb2plY3RzIHRoYXQg
Y2FuCi1iZSB1c2VkIGluIHRoZSBjb21waWxlciBlbnZpcm9ubWVudCBvZiB5b3VyIGNob2ljZS4g
IFRoZSB0eXBpY2FsCi13b3JrZmxvdyBzdGFydHMgd2l0aDoKLQotICBta2RpciBteWJ1aWxkICAg
ICAgICMgQ3JlYXRlIGEgZGlyZWN0b3J5IHRvIGhvbGQgdGhlIGJ1aWxkIG91dHB1dC4KLSAgY2Qg
bXlidWlsZAotICBjbWFrZSAke0dURVNUX0RJUn0gICMgR2VuZXJhdGUgbmF0aXZlIGJ1aWxkIHNj
cmlwdHMuCi0KLUlmIHlvdSB3YW50IHRvIGJ1aWxkIEdvb2dsZSBUZXN0J3Mgc2FtcGxlcywgeW91
IHNob3VsZCByZXBsYWNlIHRoZQotbGFzdCBjb21tYW5kIHdpdGgKLQotICBjbWFrZSAtRGJ1aWxk
X2d0ZXN0X3NhbXBsZXM9T04gJHtHVEVTVF9ESVJ9Ci0KLUlmIHlvdSBhcmUgb24gYSAqbml4IHN5
c3RlbSwgeW91IHNob3VsZCBub3cgc2VlIGEgTWFrZWZpbGUgaW4gdGhlCi1jdXJyZW50IGRpcmVj
dG9yeS4gIEp1c3QgdHlwZSAnbWFrZScgdG8gYnVpbGQgZ3Rlc3QuCi0KLUlmIHlvdSB1c2UgV2lu
ZG93cyBhbmQgaGF2ZSBWaXN0dWFsIFN0dWRpbyBpbnN0YWxsZWQsIGEgZ3Rlc3Quc2xuIGZpbGUK
LWFuZCBzZXZlcmFsIC52Y3Byb2ogZmlsZXMgd2lsbCBiZSBjcmVhdGVkLiAgWW91IGNhbiB0aGVu
IGJ1aWxkIHRoZW0KLXVzaW5nIFZpc3VhbCBTdHVkaW8uCi0KLU9uIE1hYyBPUyBYIHdpdGggWGNv
ZGUgaW5zdGFsbGVkLCBhIC54Y29kZXByb2ogZmlsZSB3aWxsIGJlIGdlbmVyYXRlZC4KLQotIyMj
IExlZ2FjeSBCdWlsZCBTY3JpcHRzICMjIwotCi1CZWZvcmUgc2V0dGxpbmcgb24gQ01ha2UsIHdl
IGhhdmUgYmVlbiBwcm92aWRpbmcgaGFuZC1tYWludGFpbmVkIGJ1aWxkCi1wcm9qZWN0cy9zY3Jp
cHRzIGZvciBWaXN1YWwgU3R1ZGlvLCBYY29kZSwgYW5kIEF1dG90b29scy4gIFdoaWxlIHdlCi1j
b250aW51ZSB0byBwcm92aWRlIHRoZW0gZm9yIGNvbnZlbmllbmNlLCB0aGV5IGFyZSBub3QgYWN0
aXZlbHkKLW1haW50YWluZWQgYW55IG1vcmUuICBXZSBoaWdobHkgcmVjb21tZW5kIHRoYXQgeW91
IGZvbGxvdyB0aGUKLWluc3RydWN0aW9ucyBpbiB0aGUgcHJldmlvdXMgdHdvIHNlY3Rpb25zIHRv
IGludGVncmF0ZSBHb29nbGUgVGVzdAotd2l0aCB5b3VyIGV4aXN0aW5nIGJ1aWxkIHN5c3RlbS4K
LQotSWYgeW91IHN0aWxsIG5lZWQgdG8gdXNlIHRoZSBsZWdhY3kgYnVpbGQgc2NyaXB0cywgaGVy
ZSdzIGhvdzoKLQotVGhlIG1zdmNcIGZvbGRlciBjb250YWlucyB0d28gc29sdXRpb25zIHdpdGgg
VmlzdWFsIEMrKyBwcm9qZWN0cy4KLU9wZW4gdGhlIGd0ZXN0LnNsbiBvciBndGVzdC1tZC5zbG4g
ZmlsZSB1c2luZyBWaXN1YWwgU3R1ZGlvLCBhbmQgeW91Ci1hcmUgcmVhZHkgdG8gYnVpbGQgR29v
Z2xlIFRlc3QgdGhlIHNhbWUgd2F5IHlvdSBidWlsZCBhbnkgVmlzdWFsCi1TdHVkaW8gcHJvamVj
dC4gIEZpbGVzIHRoYXQgaGF2ZSBuYW1lcyBlbmRpbmcgd2l0aCAtbWQgdXNlIERMTAotdmVyc2lv
bnMgb2YgTWljcm9zb2Z0IHJ1bnRpbWUgbGlicmFyaWVzICh0aGUgL01EIG9yIHRoZSAvTURkIGNv
bXBpbGVyCi1vcHRpb24pLiAgRmlsZXMgd2l0aG91dCB0aGF0IHN1ZmZpeCB1c2Ugc3RhdGljIHZl
cnNpb25zIG9mIHRoZSBydW50aW1lCi1saWJyYXJpZXMgKHRoZSAvTVQgb3IgdGhlIC9NVGQgb3B0
aW9uKS4gIFBsZWFzZSBub3RlIHRoYXQgb25lIG11c3QgdXNlCi10aGUgc2FtZSBvcHRpb24gdG8g
Y29tcGlsZSBib3RoIGd0ZXN0IGFuZCB0aGUgdGVzdCBjb2RlLiAgSWYgeW91IHVzZQotVmlzdWFs
IFN0dWRpbyAyMDA1IG9yIGFib3ZlLCB3ZSByZWNvbW1lbmQgdGhlIC1tZCB2ZXJzaW9uIGFzIC9N
RCBpcwotdGhlIGRlZmF1bHQgZm9yIG5ldyBwcm9qZWN0cyBpbiB0aGVzZSB2ZXJzaW9ucyBvZiBW
aXN1YWwgU3R1ZGlvLgotCi1PbiBNYWMgT1MgWCwgb3BlbiB0aGUgZ3Rlc3QueGNvZGVwcm9qIGlu
IHRoZSB4Y29kZS8gZm9sZGVyIHVzaW5nCi1YY29kZS4gIEJ1aWxkIHRoZSAiZ3Rlc3QiIHRhcmdl
dC4gIFRoZSB1bml2ZXJzYWwgYmluYXJ5IGZyYW1ld29yayB3aWxsCi1lbmQgdXAgaW4geW91ciBz
ZWxlY3RlZCBidWlsZCBkaXJlY3RvcnkgKHNlbGVjdGVkIGluIHRoZSBYY29kZQotIlByZWZlcmVu
Y2VzLi4uIiAtPiAiQnVpbGRpbmciIHBhbmUgYW5kIGRlZmF1bHRzIHRvIHhjb2RlL2J1aWxkKS4K
LUFsdGVybmF0aXZlbHksIGF0IHRoZSBjb21tYW5kIGxpbmUsIGVudGVyOgotCi0gIHhjb2RlYnVp
bGQKLQotVGhpcyB3aWxsIGJ1aWxkIHRoZSAiUmVsZWFzZSIgY29uZmlndXJhdGlvbiBvZiBndGVz
dC5mcmFtZXdvcmsgaW4geW91cgotZGVmYXVsdCBidWlsZCBsb2NhdGlvbi4gIFNlZSB0aGUgInhj
b2RlYnVpbGQiIG1hbiBwYWdlIGZvciBtb3JlCi1pbmZvcm1hdGlvbiBhYm91dCBidWlsZGluZyBk
aWZmZXJlbnQgY29uZmlndXJhdGlvbnMgYW5kIGJ1aWxkaW5nIGluCi1kaWZmZXJlbnQgbG9jYXRp
b25zLgotCi1Ud2Vha2luZyBHb29nbGUgVGVzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotR29v
Z2xlIFRlc3QgY2FuIGJlIHVzZWQgaW4gZGl2ZXJzZSBlbnZpcm9ubWVudHMuICBUaGUgZGVmYXVs
dAotY29uZmlndXJhdGlvbiBtYXkgbm90IHdvcmsgKG9yIG1heSBub3Qgd29yayB3ZWxsKSBvdXQg
b2YgdGhlIGJveCBpbgotc29tZSBlbnZpcm9ubWVudHMuICBIb3dldmVyLCB5b3UgY2FuIGVhc2ls
eSB0d2VhayBHb29nbGUgVGVzdCBieQotZGVmaW5pbmcgY29udHJvbCBtYWNyb3Mgb24gdGhlIGNv
bXBpbGVyIGNvbW1hbmQgbGluZS4gIEdlbmVyYWxseSwKLXRoZXNlIG1hY3JvcyBhcmUgbmFtZWQg
bGlrZSBHVEVTVF9YWVogYW5kIHlvdSBkZWZpbmUgdGhlbSB0byBlaXRoZXIgMQotb3IgMCB0byBl
bmFibGUgb3IgZGlzYWJsZSBhIGNlcnRhaW4gZmVhdHVyZS4KLQotV2UgbGlzdCB0aGUgbW9zdCBm
cmVxdWVudGx5IHVzZWQgbWFjcm9zIGJlbG93LiAgRm9yIGEgY29tcGxldGUgbGlzdCwKLXNlZSBm
aWxlIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oLgotCi0jIyMgQ2hvb3Npbmcg
YSBUUjEgVHVwbGUgTGlicmFyeSAjIyMKLQotU29tZSBHb29nbGUgVGVzdCBmZWF0dXJlcyByZXF1
aXJlIHRoZSBDKysgVGVjaG5pY2FsIFJlcG9ydCAxIChUUjEpCi10dXBsZSBsaWJyYXJ5LCB3aGlj
aCBpcyBub3QgeWV0IGF2YWlsYWJsZSB3aXRoIGFsbCBjb21waWxlcnMuICBUaGUKLWdvb2QgbmV3
cyBpcyB0aGF0IEdvb2dsZSBUZXN0IGltcGxlbWVudHMgYSBzdWJzZXQgb2YgVFIxIHR1cGxlIHRo
YXQncwotZW5vdWdoIGZvciBpdHMgb3duIG5lZWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdXNl
IHRoaXMgd2hlbiB0aGUKLWNvbXBpbGVyIGRvZXNuJ3QgcHJvdmlkZSBUUjEgdHVwbGUuCi0KLVVz
dWFsbHkgeW91IGRvbid0IG5lZWQgdG8gY2FyZSBhYm91dCB3aGljaCB0dXBsZSBsaWJyYXJ5IEdv
b2dsZSBUZXN0Ci11c2VzLiAgSG93ZXZlciwgaWYgeW91ciBwcm9qZWN0IGFscmVhZHkgdXNlcyBU
UjEgdHVwbGUsIHlvdSBuZWVkIHRvCi10ZWxsIEdvb2dsZSBUZXN0IHRvIHVzZSB0aGUgc2FtZSBU
UjEgdHVwbGUgbGlicmFyeSB0aGUgcmVzdCBvZiB5b3VyCi1wcm9qZWN0IHVzZXMsIG9yIHRoZSB0
d28gdHVwbGUgaW1wbGVtZW50YXRpb25zIHdpbGwgY2xhc2guICBUbyBkbwotdGhhdCwgYWRkCi0K
LSAgLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0wCi0KLXRvIHRoZSBjb21waWxlciBmbGFncyB3
aGlsZSBjb21waWxpbmcgR29vZ2xlIFRlc3QgYW5kIHlvdXIgdGVzdHMuICBJZgoteW91IHdhbnQg
dG8gZm9yY2UgR29vZ2xlIFRlc3QgdG8gdXNlIGl0cyBvd24gdHVwbGUgbGlicmFyeSwganVzdCBh
ZGQKLQotICAtREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTEKLQotdG8gdGhlIGNvbXBpbGVyIGZs
YWdzIGluc3RlYWQuCi0KLUlmIHlvdSBkb24ndCB3YW50IEdvb2dsZSBUZXN0IHRvIHVzZSB0dXBs
ZSBhdCBhbGwsIGFkZAotCi0gIC1ER1RFU1RfSEFTX1RSMV9UVVBMRT0wCi0KLWFuZCBhbGwgZmVh
dHVyZXMgdXNpbmcgdHVwbGUgd2lsbCBiZSBkaXNhYmxlZC4KLQotIyMjIE11bHRpLXRocmVhZGVk
IFRlc3RzICMjIwotCi1Hb29nbGUgVGVzdCBpcyB0aHJlYWQtc2FmZSB3aGVyZSB0aGUgcHRocmVh
ZCBsaWJyYXJ5IGlzIGF2YWlsYWJsZS4KLUFmdGVyICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPiwg
eW91IGNhbiBjaGVjayB0aGUgR1RFU1RfSVNfVEhSRUFEU0FGRQotbWFjcm8gdG8gc2VlIHdoZXRo
ZXIgdGhpcyBpcyB0aGUgY2FzZSAoeWVzIGlmIHRoZSBtYWNybyBpcyAjZGVmaW5lZCB0bwotMSwg
bm8gaWYgaXQncyB1bmRlZmluZWQuKS4KLQotSWYgR29vZ2xlIFRlc3QgZG9lc24ndCBjb3JyZWN0
bHkgZGV0ZWN0IHdoZXRoZXIgcHRocmVhZCBpcyBhdmFpbGFibGUKLWluIHlvdXIgZW52aXJvbm1l
bnQsIHlvdSBjYW4gZm9yY2UgaXQgd2l0aAotCi0gIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MQotCi1v
cgotCi0gIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MAotCi1XaGVuIEdvb2dsZSBUZXN0IHVzZXMgcHRo
cmVhZCwgeW91IG1heSBuZWVkIHRvIGFkZCBmbGFncyB0byB5b3VyCi1jb21waWxlciBhbmQvb3Ig
bGlua2VyIHRvIHNlbGVjdCB0aGUgcHRocmVhZCBsaWJyYXJ5LCBvciB5b3UnbGwgZ2V0Ci1saW5r
IGVycm9ycy4gIElmIHlvdSB1c2UgdGhlIENNYWtlIHNjcmlwdCBvciB0aGUgZGVwcmVjYXRlZCBB
dXRvdG9vbHMKLXNjcmlwdCwgdGhpcyBpcyB0YWtlbiBjYXJlIG9mIGZvciB5b3UuICBJZiB5b3Ug
dXNlIHlvdXIgb3duIGJ1aWxkCi1zY3JpcHQsIHlvdSdsbCBuZWVkIHRvIHJlYWQgeW91ciBjb21w
aWxlciBhbmQgbGlua2VyJ3MgbWFudWFsIHRvCi1maWd1cmUgb3V0IHdoYXQgZmxhZ3MgdG8gYWRk
LgotCi0jIyMgQXMgYSBTaGFyZWQgTGlicmFyeSAoRExMKSAjIyMKLQotR29vZ2xlIFRlc3QgaXMg
Y29tcGFjdCwgc28gbW9zdCB1c2VycyBjYW4gYnVpbGQgYW5kIGxpbmsgaXQgYXMgYQotc3RhdGlj
IGxpYnJhcnkgZm9yIHRoZSBzaW1wbGljaXR5LiAgWW91IGNhbiBjaG9vc2UgdG8gdXNlIEdvb2ds
ZSBUZXN0Ci1hcyBhIHNoYXJlZCBsaWJyYXJ5IChrbm93biBhcyBhIERMTCBvbiBXaW5kb3dzKSBp
ZiB5b3UgcHJlZmVyLgotCi1UbyBjb21waWxlIGd0ZXN0IGFzIGEgc2hhcmVkIGxpYnJhcnksIGFk
ZAotCi0gIC1ER1RFU1RfQ1JFQVRFX1NIQVJFRF9MSUJSQVJZPTEKLQotdG8gdGhlIGNvbXBpbGVy
IGZsYWdzLiAgWW91J2xsIGFsc28gbmVlZCB0byB0ZWxsIHRoZSBsaW5rZXIgdG8gcHJvZHVjZQot
YSBzaGFyZWQgbGlicmFyeSBpbnN0ZWFkIC0gY29uc3VsdCB5b3VyIGxpbmtlcidzIG1hbnVhbCBm
b3IgaG93IHRvIGRvCi1pdC4KLQotVG8gY29tcGlsZSB5b3VyIHRlc3RzIHRoYXQgdXNlIHRoZSBn
dGVzdCBzaGFyZWQgbGlicmFyeSwgYWRkCi0KLSAgLURHVEVTVF9MSU5LRURfQVNfU0hBUkVEX0xJ
QlJBUlk9MQotCi10byB0aGUgY29tcGlsZXIgZmxhZ3MuCi0KLSMjIyBBdm9pZGluZyBNYWNybyBO
YW1lIENsYXNoZXMgIyMjCi0KLUluIEMrKywgbWFjcm9zIGRvbid0IG9iZXkgbmFtZXNwYWNlcy4g
IFRoZXJlZm9yZSB0d28gbGlicmFyaWVzIHRoYXQKLWJvdGggZGVmaW5lIGEgbWFjcm8gb2YgdGhl
IHNhbWUgbmFtZSB3aWxsIGNsYXNoIGlmIHlvdSAjaW5jbHVkZSBib3RoCi1kZWZpbml0aW9ucy4g
IEluIGNhc2UgYSBHb29nbGUgVGVzdCBtYWNybyBjbGFzaGVzIHdpdGggYW5vdGhlcgotbGlicmFy
eSwgeW91IGNhbiBmb3JjZSBHb29nbGUgVGVzdCB0byByZW5hbWUgaXRzIG1hY3JvIHRvIGF2b2lk
IHRoZQotY29uZmxpY3QuCi0KLVNwZWNpZmljYWxseSwgaWYgYm90aCBHb29nbGUgVGVzdCBhbmQg
c29tZSBvdGhlciBjb2RlIGRlZmluZSBtYWNybwotRk9PLCB5b3UgY2FuIGFkZAotCi0gIC1ER1RF
U1RfRE9OVF9ERUZJTkVfRk9PPTEKLQotdG8gdGhlIGNvbXBpbGVyIGZsYWdzIHRvIHRlbGwgR29v
Z2xlIFRlc3QgdG8gY2hhbmdlIHRoZSBtYWNybydzIG5hbWUKLWZyb20gRk9PIHRvIEdURVNUX0ZP
Ty4gIEN1cnJlbnRseSBGT08gY2FuIGJlIEZBSUwsIFNVQ0NFRUQsIG9yIFRFU1QuCi1Gb3IgZXhh
bXBsZSwgd2l0aCAtREdURVNUX0RPTlRfREVGSU5FX1RFU1Q9MSwgeW91J2xsIG5lZWQgdG8gd3Jp
dGUKLQotICBHVEVTVF9URVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAuLi4gfQotCi1pbnN0ZWFk
IG9mCi0KLSAgVEVTVChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KLQotaW4gb3JkZXIgdG8g
ZGVmaW5lIGEgdGVzdC4KLQotVXBncmF0aW5nIGZyb20gYW4gRWFybGllciBWZXJzaW9uCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotV2Ugc3RyaXZlIHRvIGtlZXAgR29vZ2xl
IFRlc3QgcmVsZWFzZXMgYmFja3dhcmQgY29tcGF0aWJsZS4KLVNvbWV0aW1lcywgdGhvdWdoLCB3
ZSBoYXZlIHRvIG1ha2Ugc29tZSBicmVha2luZyBjaGFuZ2VzIGZvciB0aGUKLXVzZXJzJyBsb25n
LXRlcm0gYmVuZWZpdHMuICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHdoYXQgeW91J2xsIG5lZWQg
dG8KLWRvIGlmIHlvdSBhcmUgdXBncmFkaW5nIGZyb20gYW4gZWFybGllciB2ZXJzaW9uIG9mIEdv
b2dsZSBUZXN0LgotCi0jIyMgVXBncmFkaW5nIGZyb20gMS4zLjAgb3IgRWFybGllciAjIyMKLQot
WW91IG1heSBuZWVkIHRvIGV4cGxpY2l0bHkgZW5hYmxlIG9yIGRpc2FibGUgR29vZ2xlIFRlc3Qn
cyBvd24gVFIxCi10dXBsZSBsaWJyYXJ5LiAgU2VlIHRoZSBpbnN0cnVjdGlvbnMgaW4gc2VjdGlv
biAiQ2hvb3NpbmcgYSBUUjEgVHVwbGUKLUxpYnJhcnkiLgotCi0jIyMgVXBncmFkaW5nIGZyb20g
MS40LjAgb3IgRWFybGllciAjIyMKLQotVGhlIEF1dG90b29scyBidWlsZCBzY3JpcHQgKGNvbmZp
Z3VyZSArIG1ha2UpIGlzIG5vIGxvbmdlciBvZmZpY2lhbGx5Ci1zdXBwb3J0dGVkLiAgWW91IGFy
ZSBlbmNvdXJhZ2VkIHRvIG1pZ3JhdGUgdG8geW91ciBvd24gYnVpbGQgc3lzdGVtIG9yCi11c2Ug
Q01ha2UuICBJZiB5b3Ugc3RpbGwgbmVlZCB0byB1c2UgQXV0b3Rvb2xzLCB5b3UgY2FuIGZpbmQK
LWluc3RydWN0aW9ucyBpbiB0aGUgUkVBRE1FIGZpbGUgZnJvbSBHb29nbGUgVGVzdCAxLjQuMC4K
LQotT24gcGxhdGZvcm1zIHdoZXJlIHRoZSBwdGhyZWFkIGxpYnJhcnkgaXMgYXZhaWxhYmxlLCBH
b29nbGUgVGVzdCB1c2VzCi1pdCBpbiBvcmRlciB0byBiZSB0aHJlYWQtc2FmZS4gIFNlZSB0aGUg
Ik11bHRpLXRocmVhZGVkIFRlc3RzIiBzZWN0aW9uCi1mb3Igd2hhdCB0aGlzIG1lYW5zIHRvIHlv
dXIgYnVpbGQgc2NyaXB0LgotCi1JZiB5b3UgdXNlIE1pY3Jvc29mdCBWaXN1YWwgQysrIDcuMSB3
aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQsIEdvb2dsZQotVGVzdCB3aWxsIG5vIGxvbmdlciBjb21w
aWxlLiAgVGhpcyBzaG91bGQgYWZmZWN0IHZlcnkgZmV3IHBlb3BsZSwgYXMgYQotbGFyZ2UgcG9y
dGlvbiBvZiBTVEwgKGluY2x1ZGluZyA8c3RyaW5nPikgZG9lc24ndCBjb21waWxlIGluIHRoaXMg
bW9kZQotYW55d2F5LiAgV2UgZGVjaWRlZCB0byBzdG9wIHN1cHBvcnRpbmcgaXQgaW4gb3JkZXIg
dG8gZ3JlYXRseSBzaW1wbGlmeQotR29vZ2xlIFRlc3QncyBpbXBsZW1lbnRhdGlvbi4KLQotRGV2
ZWxvcGluZyBHb29nbGUgVGVzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UaGlzIHNlY3Rp
b24gZGlzY3Vzc2VzIGhvdyB0byBtYWtlIHlvdXIgb3duIGNoYW5nZXMgdG8gR29vZ2xlIFRlc3Qu
Ci0KLSMjIyBUZXN0aW5nIEdvb2dsZSBUZXN0IEl0c2VsZiAjIyMKLQotVG8gbWFrZSBzdXJlIHlv
dXIgY2hhbmdlcyB3b3JrIGFzIGludGVuZGVkIGFuZCBkb24ndCBicmVhayBleGlzdGluZwotZnVu
Y3Rpb25hbGl0eSwgeW91J2xsIHdhbnQgdG8gY29tcGlsZSBhbmQgcnVuIEdvb2dsZSBUZXN0J3Mg
b3duIHRlc3RzLgotRm9yIHRoYXQgeW91IGNhbiB1c2UgQ01ha2U6Ci0KLSAgbWtkaXIgbXlidWls
ZAotICBjZCBteWJ1aWxkCi0gIGNtYWtlIC1EYnVpbGRfYWxsX2d0ZXN0X3Rlc3RzPU9OICR7R1RF
U1RfRElSfQotCi1NYWtlIHN1cmUgeW91IGhhdmUgUHl0aG9uIGluc3RhbGxlZCwgYXMgc29tZSBv
ZiBHb29nbGUgVGVzdCdzIHRlc3RzCi1hcmUgd3JpdHRlbiBpbiBQeXRob24uICBJZiB0aGUgY21h
a2UgY29tbWFuZCBjb21wbGFpbnMgYWJvdXQgbm90IGJlaW5nCi1hYmxlIHRvIGZpbmQgUHl0aG9u
ICgiQ291bGQgTk9UIGZpbmQgUHl0aG9uSW50ZXJwIChtaXNzaW5nOgotUFlUSE9OX0VYRUNVVEFC
TEUpIiksIHRyeSB0ZWxsaW5nIGl0IGV4cGxpY2l0bHkgd2hlcmUgeW91ciBQeXRob24KLWV4ZWN1
dGFibGUgY2FuIGJlIGZvdW5kOgotCi0gIGNtYWtlIC1EUFlUSE9OX0VYRUNVVEFCTEU9cGF0aC90
by9weXRob24gLURidWlsZF9hbGxfZ3Rlc3RfdGVzdHM9T04gXAotICAgICAgJHtHVEVTVF9ESVJ9
Ci0KLU5leHQsIHlvdSBjYW4gYnVpbGQgR29vZ2xlIFRlc3QgYW5kIGFsbCBvZiBpdHMgb3duIHRl
c3RzLiAgT24gKm5peCwKLXRoaXMgaXMgdXN1YWxseSBkb25lIGJ5ICdtYWtlJy4gIFRvIHJ1biB0
aGUgdGVzdHMsIGRvCi0KLSAgbWFrZSB0ZXN0Ci0KLUFsbCB0ZXN0cyBzaG91bGQgcGFzcy4KLQot
IyMjIFJlZ2VuZXJhdGluZyBTb3VyY2UgRmlsZXMgIyMjCi0KLVNvbWUgb2YgR29vZ2xlIFRlc3Qn
cyBzb3VyY2UgZmlsZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRlbXBsYXRlcyAobm90Ci1pbiB0aGUg
QysrIHNlbnNlKSB1c2luZyBhIHNjcmlwdC4gIEEgdGVtcGxhdGUgZmlsZSBpcyBuYW1lZCBGT08u
cHVtcCwKLXdoZXJlIEZPTyBpcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSBpdCB3aWxsIGdlbmVyYXRl
LiAgRm9yIGV4YW1wbGUsIHRoZQotZmlsZSBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5
cGUtdXRpbC5oLnB1bXAgaXMgdXNlZCB0byBnZW5lcmF0ZQotZ3Rlc3QtdHlwZS11dGlsLmggaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgotCi1Ob3JtYWxseSB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBh
Ym91dCByZWdlbmVyYXRpbmcgdGhlIHNvdXJjZSBmaWxlcywKLXVubGVzcyB5b3UgbmVlZCB0byBt
b2RpZnkgdGhlbS4gIEluIHRoYXQgY2FzZSwgeW91IHNob3VsZCBtb2RpZnkgdGhlCi1jb3JyZXNw
b25kaW5nIC5wdW1wIGZpbGVzIGluc3RlYWQgYW5kIHJ1biB0aGUgcHVtcC5weSBQeXRob24gc2Ny
aXB0IHRvCi1yZWdlbmVyYXRlIHRoZW0uICBZb3UgY2FuIGZpbmQgcHVtcC5weSBpbiB0aGUgc2Ny
aXB0cy8gZGlyZWN0b3J5LgotUmVhZCB0aGUgUHVtcCBtYW51YWwgWzJdIGZvciBob3cgdG8gdXNl
IGl0LgotCi0gIFsyXSBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL1B1
bXBNYW51YWwKLQotIyMjIENvbnRyaWJ1dGluZyBhIFBhdGNoICMjIwotCi1XZSB3ZWxjb21lIHBh
dGNoZXMuICBQbGVhc2UgcmVhZCB0aGUgR29vZ2xlIFRlc3QgZGV2ZWxvcGVyJ3MgZ3VpZGUgWzNd
Ci1mb3IgaG93IHlvdSBjYW4gY29udHJpYnV0ZS4gIEluIHBhcnRpY3VsYXIsIG1ha2Ugc3VyZSB5
b3UgaGF2ZSBzaWduZWQKLXRoZSBDb250cmlidXRvciBMaWNlbnNlIEFncmVlbWVudCwgb3Igd2Ug
d29uJ3QgYmUgYWJsZSB0byBhY2NlcHQgdGhlCi1wYXRjaC4KLQotICBbM10gaHR0cDovL2NvZGUu
Z29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvd2lraS9Hb29nbGVUZXN0RGV2R3VpZGUKLQotSGFwcHkg
dGVzdGluZyEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5XZWJL
aXQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9SRUFETUUuV2ViS2l0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2YTMxOGZmNjJlMzI0OWM4ZTY1MzIwOTNmNDBlM2NiNDFjMTVmOWFj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5XZWJLaXQKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCww
IEBACi1HVGVzdCB2LjEuNS4wCi0KLWh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2
bi90YWdzL3JlbGVhc2UtMS41LjAvIAotCi0yMDE2LTAxLTAyIFRpbmctV2VpIExhbiAobGFudHc0
NEBnbWFpbC5jb20pCi0gICAgICBSZW1vdmUgdXNhZ2Ugb2YgZW52aXJvbiBnbG9iYWwgdmFyaWFi
bGUgdG8gZml4IHRoZSBidWlsZCBvbiBGcmVlQlNELgotCi0yMDEyLTAxLTA0IERtaXRyeSBMb21v
diAoZHNsb21vdkBnb29nbGUuY29tKSAgRGF2aWQgS2lsemVyIChkZGtpbHplckBhcHBsZS5jb20p
Ci0gICAgICAtIFdlYktpdCBwb3J0IG9mIGd0ZXN0IHVzZXMgRmFzdE1hbGxvYyAibmV3IiBhbmQg
ImRlbGV0ZSIgb3BlcmF0b3JzIGZyb20gSmF2YVNjcmlwdENvcmUuCi0gICAgICAtIFRoZSBndGVz
dC5mcmFtZXdvcmsgdGFyZ2V0IG5vdyBsaW5rcyB0byBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsu
Ci0KLTIwMTEtMTItMjIgRGF2aWQgS2lsemVyIChkZGtpbHplckBhcHBsZS5jb20pCi0gICAgICBB
ZGRlZCBQcm9kdWN0aW9uIGNvbmZpZ3VyYXRpb24gdG8gZ3Rlc3QgWGNvZGUgcHJvamVjdC4KLQot
MjAxMS0wNS0wNiBEbWl0cnkgTG9tb3YgKGRzbG9tb3ZAZ29vZ2xlLmNvbSkKLSAgICAgIGd0ZXN0
LW1kLnZjcHJvaiB1cGdyYWRlZCB0byBWUyAyMDA1ICg4LjApIGZvcm1hdCB0byBtYXRjaCB0aGUg
cmVzdCBvZiBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURN
RS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGQ0
NDA4MDU0YjMyNDk2YWEwYjQzN2MwMjY0NTIzMjQ1NzU5MGU2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMjgwIEBACisKKyMj
IyBHZW5lcmljIEJ1aWxkIEluc3RydWN0aW9ucyAjIyMKKworIyMjIyBTZXR1cCAjIyMjCisKK1Rv
IGJ1aWxkIEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRlc3RzIHRoYXQgdXNlIGl0LCB5b3UgbmVlZCB0
byB0ZWxsIHlvdXIKK2J1aWxkIHN5c3RlbSB3aGVyZSB0byBmaW5kIGl0cyBoZWFkZXJzIGFuZCBz
b3VyY2UgZmlsZXMuICBUaGUgZXhhY3QKK3dheSB0byBkbyBpdCBkZXBlbmRzIG9uIHdoaWNoIGJ1
aWxkIHN5c3RlbSB5b3UgdXNlLCBhbmQgaXMgdXN1YWxseQorc3RyYWlnaHRmb3J3YXJkLgorCisj
IyMjIEJ1aWxkICMjIyMKKworU3VwcG9zZSB5b3UgcHV0IEdvb2dsZSBUZXN0IGluIGRpcmVjdG9y
eSBgJHtHVEVTVF9ESVJ9YC4gIFRvIGJ1aWxkIGl0LAorY3JlYXRlIGEgbGlicmFyeSBidWlsZCB0
YXJnZXQgKG9yIGEgcHJvamVjdCBhcyBjYWxsZWQgYnkgVmlzdWFsIFN0dWRpbworYW5kIFhjb2Rl
KSB0byBjb21waWxlCisKKyAgICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LWFsbC5jYworCit3aXRo
IGAke0dURVNUX0RJUn0vaW5jbHVkZWAgaW4gdGhlIHN5c3RlbSBoZWFkZXIgc2VhcmNoIHBhdGgg
YW5kIGAke0dURVNUX0RJUn1gCitpbiB0aGUgbm9ybWFsIGhlYWRlciBzZWFyY2ggcGF0aC4gIEFz
c3VtaW5nIGEgTGludXgtbGlrZSBzeXN0ZW0gYW5kIGdjYywKK3NvbWV0aGluZyBsaWtlIHRoZSBm
b2xsb3dpbmcgd2lsbCBkbzoKKworICAgIGcrKyAtaXN5c3RlbSAke0dURVNUX0RJUn0vaW5jbHVk
ZSAtSSR7R1RFU1RfRElSfSBcCisgICAgICAgIC1wdGhyZWFkIC1jICR7R1RFU1RfRElSfS9zcmMv
Z3Rlc3QtYWxsLmNjCisgICAgYXIgLXJ2IGxpYmd0ZXN0LmEgZ3Rlc3QtYWxsLm8KKworKFdlIG5l
ZWQgYC1wdGhyZWFkYCBhcyBHb29nbGUgVGVzdCB1c2VzIHRocmVhZHMuKQorCitOZXh0LCB5b3Ug
c2hvdWxkIGNvbXBpbGUgeW91ciB0ZXN0IHNvdXJjZSBmaWxlIHdpdGgKK2Ake0dURVNUX0RJUn0v
aW5jbHVkZWAgaW4gdGhlIHN5c3RlbSBoZWFkZXIgc2VhcmNoIHBhdGgsIGFuZCBsaW5rIGl0Cit3
aXRoIGd0ZXN0IGFuZCBhbnkgb3RoZXIgbmVjZXNzYXJ5IGxpYnJhcmllczoKKworICAgIGcrKyAt
aXN5c3RlbSAke0dURVNUX0RJUn0vaW5jbHVkZSAtcHRocmVhZCBwYXRoL3RvL3lvdXJfdGVzdC5j
YyBsaWJndGVzdC5hIFwKKyAgICAgICAgLW8geW91cl90ZXN0CisKK0FzIGFuIGV4YW1wbGUsIHRo
ZSBtYWtlLyBkaXJlY3RvcnkgY29udGFpbnMgYSBNYWtlZmlsZSB0aGF0IHlvdSBjYW4KK3VzZSB0
byBidWlsZCBHb29nbGUgVGVzdCBvbiBzeXN0ZW1zIHdoZXJlIEdOVSBtYWtlIGlzIGF2YWlsYWJs
ZQorKGUuZy4gTGludXgsIE1hYyBPUyBYLCBhbmQgQ3lnd2luKS4gIEl0IGRvZXNuJ3QgdHJ5IHRv
IGJ1aWxkIEdvb2dsZQorVGVzdCdzIG93biB0ZXN0cy4gIEluc3RlYWQsIGl0IGp1c3QgYnVpbGRz
IHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5IGFuZAorYSBzYW1wbGUgdGVzdC4gIFlvdSBjYW4gdXNl
IGl0IGFzIGEgc3RhcnRpbmcgcG9pbnQgZm9yIHlvdXIgb3duIGJ1aWxkCitzY3JpcHQuCisKK0lm
IHRoZSBkZWZhdWx0IHNldHRpbmdzIGFyZSBjb3JyZWN0IGZvciB5b3VyIGVudmlyb25tZW50LCB0
aGUKK2ZvbGxvd2luZyBjb21tYW5kcyBzaG91bGQgc3VjY2VlZDoKKworICAgIGNkICR7R1RFU1Rf
RElSfS9tYWtlCisgICAgbWFrZQorICAgIC4vc2FtcGxlMV91bml0dGVzdAorCitJZiB5b3Ugc2Vl
IGVycm9ycywgdHJ5IHRvIHR3ZWFrIHRoZSBjb250ZW50cyBvZiBgbWFrZS9NYWtlZmlsZWAgdG8g
bWFrZQordGhlbSBnbyBhd2F5LiAgVGhlcmUgYXJlIGluc3RydWN0aW9ucyBpbiBgbWFrZS9NYWtl
ZmlsZWAgb24gaG93IHRvIGRvCitpdC4KKworIyMjIFVzaW5nIENNYWtlICMjIworCitHb29nbGUg
VGVzdCBjb21lcyB3aXRoIGEgQ01ha2UgYnVpbGQgc2NyaXB0ICgKK1tDTWFrZUxpc3RzLnR4dF0o
Q01ha2VMaXN0cy50eHQpKSB0aGF0IGNhbiBiZSB1c2VkIG9uIGEgd2lkZSByYW5nZSBvZiBwbGF0
Zm9ybXMgKCJDIiBzdGFuZHMgZm9yCitjcm9zcy1wbGF0Zm9ybS4pLiBJZiB5b3UgZG9uJ3QgaGF2
ZSBDTWFrZSBpbnN0YWxsZWQgYWxyZWFkeSwgeW91IGNhbgorZG93bmxvYWQgaXQgZm9yIGZyZWUg
ZnJvbSA8aHR0cDovL3d3dy5jbWFrZS5vcmcvPi4KKworQ01ha2Ugd29ya3MgYnkgZ2VuZXJhdGlu
ZyBuYXRpdmUgbWFrZWZpbGVzIG9yIGJ1aWxkIHByb2plY3RzIHRoYXQgY2FuCitiZSB1c2VkIGlu
IHRoZSBjb21waWxlciBlbnZpcm9ubWVudCBvZiB5b3VyIGNob2ljZS4gIFRoZSB0eXBpY2FsCit3
b3JrZmxvdyBzdGFydHMgd2l0aDoKKworICAgIG1rZGlyIG15YnVpbGQgICAgICAgIyBDcmVhdGUg
YSBkaXJlY3RvcnkgdG8gaG9sZCB0aGUgYnVpbGQgb3V0cHV0LgorICAgIGNkIG15YnVpbGQKKyAg
ICBjbWFrZSAke0dURVNUX0RJUn0gICMgR2VuZXJhdGUgbmF0aXZlIGJ1aWxkIHNjcmlwdHMuCisK
K0lmIHlvdSB3YW50IHRvIGJ1aWxkIEdvb2dsZSBUZXN0J3Mgc2FtcGxlcywgeW91IHNob3VsZCBy
ZXBsYWNlIHRoZQorbGFzdCBjb21tYW5kIHdpdGgKKworICAgIGNtYWtlIC1EZ3Rlc3RfYnVpbGRf
c2FtcGxlcz1PTiAke0dURVNUX0RJUn0KKworSWYgeW91IGFyZSBvbiBhIFwqbml4IHN5c3RlbSwg
eW91IHNob3VsZCBub3cgc2VlIGEgTWFrZWZpbGUgaW4gdGhlCitjdXJyZW50IGRpcmVjdG9yeS4g
IEp1c3QgdHlwZSAnbWFrZScgdG8gYnVpbGQgZ3Rlc3QuCisKK0lmIHlvdSB1c2UgV2luZG93cyBh
bmQgaGF2ZSBWaXN1YWwgU3R1ZGlvIGluc3RhbGxlZCwgYSBgZ3Rlc3Quc2xuYCBmaWxlCithbmQg
c2V2ZXJhbCBgLnZjcHJvamAgZmlsZXMgd2lsbCBiZSBjcmVhdGVkLiAgWW91IGNhbiB0aGVuIGJ1
aWxkIHRoZW0KK3VzaW5nIFZpc3VhbCBTdHVkaW8uCisKK09uIE1hYyBPUyBYIHdpdGggWGNvZGUg
aW5zdGFsbGVkLCBhIGAueGNvZGVwcm9qYCBmaWxlIHdpbGwgYmUgZ2VuZXJhdGVkLgorCisjIyMg
TGVnYWN5IEJ1aWxkIFNjcmlwdHMgIyMjCisKK0JlZm9yZSBzZXR0bGluZyBvbiBDTWFrZSwgd2Ug
aGF2ZSBiZWVuIHByb3ZpZGluZyBoYW5kLW1haW50YWluZWQgYnVpbGQKK3Byb2plY3RzL3Njcmlw
dHMgZm9yIFZpc3VhbCBTdHVkaW8sIFhjb2RlLCBhbmQgQXV0b3Rvb2xzLiAgV2hpbGUgd2UKK2Nv
bnRpbnVlIHRvIHByb3ZpZGUgdGhlbSBmb3IgY29udmVuaWVuY2UsIHRoZXkgYXJlIG5vdCBhY3Rp
dmVseQorbWFpbnRhaW5lZCBhbnkgbW9yZS4gIFdlIGhpZ2hseSByZWNvbW1lbmQgdGhhdCB5b3Ug
Zm9sbG93IHRoZQoraW5zdHJ1Y3Rpb25zIGluIHRoZSBwcmV2aW91cyB0d28gc2VjdGlvbnMgdG8g
aW50ZWdyYXRlIEdvb2dsZSBUZXN0Cit3aXRoIHlvdXIgZXhpc3RpbmcgYnVpbGQgc3lzdGVtLgor
CitJZiB5b3Ugc3RpbGwgbmVlZCB0byB1c2UgdGhlIGxlZ2FjeSBidWlsZCBzY3JpcHRzLCBoZXJl
J3MgaG93OgorCitUaGUgbXN2Y1wgZm9sZGVyIGNvbnRhaW5zIHR3byBzb2x1dGlvbnMgd2l0aCBW
aXN1YWwgQysrIHByb2plY3RzLgorT3BlbiB0aGUgYGd0ZXN0LnNsbmAgb3IgYGd0ZXN0LW1kLnNs
bmAgZmlsZSB1c2luZyBWaXN1YWwgU3R1ZGlvLCBhbmQgeW91CithcmUgcmVhZHkgdG8gYnVpbGQg
R29vZ2xlIFRlc3QgdGhlIHNhbWUgd2F5IHlvdSBidWlsZCBhbnkgVmlzdWFsCitTdHVkaW8gcHJv
amVjdC4gIEZpbGVzIHRoYXQgaGF2ZSBuYW1lcyBlbmRpbmcgd2l0aCAtbWQgdXNlIERMTAordmVy
c2lvbnMgb2YgTWljcm9zb2Z0IHJ1bnRpbWUgbGlicmFyaWVzICh0aGUgL01EIG9yIHRoZSAvTURk
IGNvbXBpbGVyCitvcHRpb24pLiAgRmlsZXMgd2l0aG91dCB0aGF0IHN1ZmZpeCB1c2Ugc3RhdGlj
IHZlcnNpb25zIG9mIHRoZSBydW50aW1lCitsaWJyYXJpZXMgKHRoZSAvTVQgb3IgdGhlIC9NVGQg
b3B0aW9uKS4gIFBsZWFzZSBub3RlIHRoYXQgb25lIG11c3QgdXNlCit0aGUgc2FtZSBvcHRpb24g
dG8gY29tcGlsZSBib3RoIGd0ZXN0IGFuZCB0aGUgdGVzdCBjb2RlLiAgSWYgeW91IHVzZQorVmlz
dWFsIFN0dWRpbyAyMDA1IG9yIGFib3ZlLCB3ZSByZWNvbW1lbmQgdGhlIC1tZCB2ZXJzaW9uIGFz
IC9NRCBpcwordGhlIGRlZmF1bHQgZm9yIG5ldyBwcm9qZWN0cyBpbiB0aGVzZSB2ZXJzaW9ucyBv
ZiBWaXN1YWwgU3R1ZGlvLgorCitPbiBNYWMgT1MgWCwgb3BlbiB0aGUgYGd0ZXN0Lnhjb2RlcHJv
amAgaW4gdGhlIGB4Y29kZS9gIGZvbGRlciB1c2luZworWGNvZGUuICBCdWlsZCB0aGUgImd0ZXN0
IiB0YXJnZXQuICBUaGUgdW5pdmVyc2FsIGJpbmFyeSBmcmFtZXdvcmsgd2lsbAorZW5kIHVwIGlu
IHlvdXIgc2VsZWN0ZWQgYnVpbGQgZGlyZWN0b3J5IChzZWxlY3RlZCBpbiB0aGUgWGNvZGUKKyJQ
cmVmZXJlbmNlcy4uLiIgLT4gIkJ1aWxkaW5nIiBwYW5lIGFuZCBkZWZhdWx0cyB0byB4Y29kZS9i
dWlsZCkuCitBbHRlcm5hdGl2ZWx5LCBhdCB0aGUgY29tbWFuZCBsaW5lLCBlbnRlcjoKKworICAg
IHhjb2RlYnVpbGQKKworVGhpcyB3aWxsIGJ1aWxkIHRoZSAiUmVsZWFzZSIgY29uZmlndXJhdGlv
biBvZiBndGVzdC5mcmFtZXdvcmsgaW4geW91cgorZGVmYXVsdCBidWlsZCBsb2NhdGlvbi4gIFNl
ZSB0aGUgInhjb2RlYnVpbGQiIG1hbiBwYWdlIGZvciBtb3JlCitpbmZvcm1hdGlvbiBhYm91dCBi
dWlsZGluZyBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgYW5kIGJ1aWxkaW5nIGluCitkaWZmZXJl
bnQgbG9jYXRpb25zLgorCitJZiB5b3Ugd2lzaCB0byB1c2UgdGhlIEdvb2dsZSBUZXN0IFhjb2Rl
IHByb2plY3Qgd2l0aCBYY29kZSA0LnggYW5kCithYm92ZSwgeW91IG5lZWQgdG8gZWl0aGVyOgor
CisgKiB1cGRhdGUgdGhlIFNESyBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4geGNvZGUvQ29uZmln
L0dlbmVyYWwueGNvbmZpZy4KKyAgIENvbW1lbnQgb3B0aW9ucyBgU0RLUk9PVGAsIGBNQUNPU19E
RVBMT1lNRU5UX1RBUkdFVGAsIGFuZCBgR0NDX1ZFUlNJT05gLiBJZgorICAgeW91IGNob29zZSB0
aGlzIHJvdXRlIHlvdSBsb3NlIHRoZSBhYmlsaXR5IHRvIHRhcmdldCBlYXJsaWVyIHZlcnNpb25z
CisgICBvZiBNYWNPUyBYLgorICogSW5zdGFsbCBhbiBTREsgZm9yIGFuIGVhcmxpZXIgdmVyc2lv
bi4gVGhpcyBkb2Vzbid0IGFwcGVhciB0byBiZQorICAgc3VwcG9ydGVkIGJ5IEFwcGxlLCBidXQg
aGFzIGJlZW4gcmVwb3J0ZWQgdG8gd29yaworICAgKGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9x
dWVzdGlvbnMvNTM3ODUxOCkuCisKKyMjIyBUd2Vha2luZyBHb29nbGUgVGVzdCAjIyMKKworR29v
Z2xlIFRlc3QgY2FuIGJlIHVzZWQgaW4gZGl2ZXJzZSBlbnZpcm9ubWVudHMuICBUaGUgZGVmYXVs
dAorY29uZmlndXJhdGlvbiBtYXkgbm90IHdvcmsgKG9yIG1heSBub3Qgd29yayB3ZWxsKSBvdXQg
b2YgdGhlIGJveCBpbgorc29tZSBlbnZpcm9ubWVudHMuICBIb3dldmVyLCB5b3UgY2FuIGVhc2ls
eSB0d2VhayBHb29nbGUgVGVzdCBieQorZGVmaW5pbmcgY29udHJvbCBtYWNyb3Mgb24gdGhlIGNv
bXBpbGVyIGNvbW1hbmQgbGluZS4gIEdlbmVyYWxseSwKK3RoZXNlIG1hY3JvcyBhcmUgbmFtZWQg
bGlrZSBgR1RFU1RfWFlaYCBhbmQgeW91IGRlZmluZSB0aGVtIHRvIGVpdGhlciAxCitvciAwIHRv
IGVuYWJsZSBvciBkaXNhYmxlIGEgY2VydGFpbiBmZWF0dXJlLgorCitXZSBsaXN0IHRoZSBtb3N0
IGZyZXF1ZW50bHkgdXNlZCBtYWNyb3MgYmVsb3cuICBGb3IgYSBjb21wbGV0ZSBsaXN0LAorc2Vl
IGZpbGUgW2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oXShpbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LXBvcnQuaCkuCisKKyMjIyBDaG9vc2luZyBhIFRSMSBUdXBsZSBMaWJy
YXJ5ICMjIworCitTb21lIEdvb2dsZSBUZXN0IGZlYXR1cmVzIHJlcXVpcmUgdGhlIEMrKyBUZWNo
bmljYWwgUmVwb3J0IDEgKFRSMSkKK3R1cGxlIGxpYnJhcnksIHdoaWNoIGlzIG5vdCB5ZXQgYXZh
aWxhYmxlIHdpdGggYWxsIGNvbXBpbGVycy4gIFRoZQorZ29vZCBuZXdzIGlzIHRoYXQgR29vZ2xl
IFRlc3QgaW1wbGVtZW50cyBhIHN1YnNldCBvZiBUUjEgdHVwbGUgdGhhdCdzCitlbm91Z2ggZm9y
IGl0cyBvd24gbmVlZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB1c2UgdGhpcyB3aGVuIHRoZQor
Y29tcGlsZXIgZG9lc24ndCBwcm92aWRlIFRSMSB0dXBsZS4KKworVXN1YWxseSB5b3UgZG9uJ3Qg
bmVlZCB0byBjYXJlIGFib3V0IHdoaWNoIHR1cGxlIGxpYnJhcnkgR29vZ2xlIFRlc3QKK3VzZXMu
ICBIb3dldmVyLCBpZiB5b3VyIHByb2plY3QgYWxyZWFkeSB1c2VzIFRSMSB0dXBsZSwgeW91IG5l
ZWQgdG8KK3RlbGwgR29vZ2xlIFRlc3QgdG8gdXNlIHRoZSBzYW1lIFRSMSB0dXBsZSBsaWJyYXJ5
IHRoZSByZXN0IG9mIHlvdXIKK3Byb2plY3QgdXNlcywgb3IgdGhlIHR3byB0dXBsZSBpbXBsZW1l
bnRhdGlvbnMgd2lsbCBjbGFzaC4gIFRvIGRvCit0aGF0LCBhZGQKKworICAgIC1ER1RFU1RfVVNF
X09XTl9UUjFfVFVQTEU9MAorCit0byB0aGUgY29tcGlsZXIgZmxhZ3Mgd2hpbGUgY29tcGlsaW5n
IEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRlc3RzLiAgSWYKK3lvdSB3YW50IHRvIGZvcmNlIEdvb2ds
ZSBUZXN0IHRvIHVzZSBpdHMgb3duIHR1cGxlIGxpYnJhcnksIGp1c3QgYWRkCisKKyAgICAtREdU
RVNUX1VTRV9PV05fVFIxX1RVUExFPTEKKwordG8gdGhlIGNvbXBpbGVyIGZsYWdzIGluc3RlYWQu
CisKK0lmIHlvdSBkb24ndCB3YW50IEdvb2dsZSBUZXN0IHRvIHVzZSB0dXBsZSBhdCBhbGwsIGFk
ZAorCisgICAgLURHVEVTVF9IQVNfVFIxX1RVUExFPTAKKworYW5kIGFsbCBmZWF0dXJlcyB1c2lu
ZyB0dXBsZSB3aWxsIGJlIGRpc2FibGVkLgorCisjIyMgTXVsdGktdGhyZWFkZWQgVGVzdHMgIyMj
CisKK0dvb2dsZSBUZXN0IGlzIHRocmVhZC1zYWZlIHdoZXJlIHRoZSBwdGhyZWFkIGxpYnJhcnkg
aXMgYXZhaWxhYmxlLgorQWZ0ZXIgYCNpbmNsdWRlICJndGVzdC9ndGVzdC5oImAsIHlvdSBjYW4g
Y2hlY2sgdGhlIGBHVEVTVF9JU19USFJFQURTQUZFYAorbWFjcm8gdG8gc2VlIHdoZXRoZXIgdGhp
cyBpcyB0aGUgY2FzZSAoeWVzIGlmIHRoZSBtYWNybyBpcyBgI2RlZmluZWRgIHRvCisxLCBubyBp
ZiBpdCdzIHVuZGVmaW5lZC4pLgorCitJZiBHb29nbGUgVGVzdCBkb2Vzbid0IGNvcnJlY3RseSBk
ZXRlY3Qgd2hldGhlciBwdGhyZWFkIGlzIGF2YWlsYWJsZQoraW4geW91ciBlbnZpcm9ubWVudCwg
eW91IGNhbiBmb3JjZSBpdCB3aXRoCisKKyAgICAtREdURVNUX0hBU19QVEhSRUFEPTEKKworb3IK
KworICAgIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MAorCitXaGVuIEdvb2dsZSBUZXN0IHVzZXMgcHRo
cmVhZCwgeW91IG1heSBuZWVkIHRvIGFkZCBmbGFncyB0byB5b3VyCitjb21waWxlciBhbmQvb3Ig
bGlua2VyIHRvIHNlbGVjdCB0aGUgcHRocmVhZCBsaWJyYXJ5LCBvciB5b3UnbGwgZ2V0CitsaW5r
IGVycm9ycy4gIElmIHlvdSB1c2UgdGhlIENNYWtlIHNjcmlwdCBvciB0aGUgZGVwcmVjYXRlZCBB
dXRvdG9vbHMKK3NjcmlwdCwgdGhpcyBpcyB0YWtlbiBjYXJlIG9mIGZvciB5b3UuICBJZiB5b3Ug
dXNlIHlvdXIgb3duIGJ1aWxkCitzY3JpcHQsIHlvdSdsbCBuZWVkIHRvIHJlYWQgeW91ciBjb21w
aWxlciBhbmQgbGlua2VyJ3MgbWFudWFsIHRvCitmaWd1cmUgb3V0IHdoYXQgZmxhZ3MgdG8gYWRk
LgorCisjIyMgQXMgYSBTaGFyZWQgTGlicmFyeSAoRExMKSAjIyMKKworR29vZ2xlIFRlc3QgaXMg
Y29tcGFjdCwgc28gbW9zdCB1c2VycyBjYW4gYnVpbGQgYW5kIGxpbmsgaXQgYXMgYQorc3RhdGlj
IGxpYnJhcnkgZm9yIHRoZSBzaW1wbGljaXR5LiAgWW91IGNhbiBjaG9vc2UgdG8gdXNlIEdvb2ds
ZSBUZXN0CithcyBhIHNoYXJlZCBsaWJyYXJ5IChrbm93biBhcyBhIERMTCBvbiBXaW5kb3dzKSBp
ZiB5b3UgcHJlZmVyLgorCitUbyBjb21waWxlICpndGVzdCogYXMgYSBzaGFyZWQgbGlicmFyeSwg
YWRkCisKKyAgICAtREdURVNUX0NSRUFURV9TSEFSRURfTElCUkFSWT0xCisKK3RvIHRoZSBjb21w
aWxlciBmbGFncy4gIFlvdSdsbCBhbHNvIG5lZWQgdG8gdGVsbCB0aGUgbGlua2VyIHRvIHByb2R1
Y2UKK2Egc2hhcmVkIGxpYnJhcnkgaW5zdGVhZCAtIGNvbnN1bHQgeW91ciBsaW5rZXIncyBtYW51
YWwgZm9yIGhvdyB0byBkbworaXQuCisKK1RvIGNvbXBpbGUgeW91ciAqdGVzdHMqIHRoYXQgdXNl
IHRoZSBndGVzdCBzaGFyZWQgbGlicmFyeSwgYWRkCisKKyAgICAtREdURVNUX0xJTktFRF9BU19T
SEFSRURfTElCUkFSWT0xCisKK3RvIHRoZSBjb21waWxlciBmbGFncy4KKworTm90ZTogd2hpbGUg
dGhlIGFib3ZlIHN0ZXBzIGFyZW4ndCB0ZWNobmljYWxseSBuZWNlc3NhcnkgdG9kYXkgd2hlbgor
dXNpbmcgc29tZSBjb21waWxlcnMgKGUuZy4gR0NDKSwgdGhleSBtYXkgYmVjb21lIG5lY2Vzc2Fy
eSBpbiB0aGUKK2Z1dHVyZSwgaWYgd2UgZGVjaWRlIHRvIGltcHJvdmUgdGhlIHNwZWVkIG9mIGxv
YWRpbmcgdGhlIGxpYnJhcnkgKHNlZQorPGh0dHA6Ly9nY2MuZ251Lm9yZy93aWtpL1Zpc2liaWxp
dHk+IGZvciBkZXRhaWxzKS4gIFRoZXJlZm9yZSB5b3UgYXJlCityZWNvbW1lbmRlZCB0byBhbHdh
eXMgYWRkIHRoZSBhYm92ZSBmbGFncyB3aGVuIHVzaW5nIEdvb2dsZSBUZXN0IGFzIGEKK3NoYXJl
ZCBsaWJyYXJ5LiAgT3RoZXJ3aXNlIGEgZnV0dXJlIHJlbGVhc2Ugb2YgR29vZ2xlIFRlc3QgbWF5
IGJyZWFrCit5b3VyIGJ1aWxkIHNjcmlwdC4KKworIyMjIEF2b2lkaW5nIE1hY3JvIE5hbWUgQ2xh
c2hlcyAjIyMKKworSW4gQysrLCBtYWNyb3MgZG9uJ3Qgb2JleSBuYW1lc3BhY2VzLiAgVGhlcmVm
b3JlIHR3byBsaWJyYXJpZXMgdGhhdAorYm90aCBkZWZpbmUgYSBtYWNybyBvZiB0aGUgc2FtZSBu
YW1lIHdpbGwgY2xhc2ggaWYgeW91IGAjaW5jbHVkZWAgYm90aAorZGVmaW5pdGlvbnMuICBJbiBj
YXNlIGEgR29vZ2xlIFRlc3QgbWFjcm8gY2xhc2hlcyB3aXRoIGFub3RoZXIKK2xpYnJhcnksIHlv
dSBjYW4gZm9yY2UgR29vZ2xlIFRlc3QgdG8gcmVuYW1lIGl0cyBtYWNybyB0byBhdm9pZCB0aGUK
K2NvbmZsaWN0LgorCitTcGVjaWZpY2FsbHksIGlmIGJvdGggR29vZ2xlIFRlc3QgYW5kIHNvbWUg
b3RoZXIgY29kZSBkZWZpbmUgbWFjcm8KK0ZPTywgeW91IGNhbiBhZGQKKworICAgIC1ER1RFU1Rf
RE9OVF9ERUZJTkVfRk9PPTEKKwordG8gdGhlIGNvbXBpbGVyIGZsYWdzIHRvIHRlbGwgR29vZ2xl
IFRlc3QgdG8gY2hhbmdlIHRoZSBtYWNybydzIG5hbWUKK2Zyb20gYEZPT2AgdG8gYEdURVNUX0ZP
T2AuICBDdXJyZW50bHkgYEZPT2AgY2FuIGJlIGBGQUlMYCwgYFNVQ0NFRURgLAorb3IgYFRFU1Rg
LiAgRm9yIGV4YW1wbGUsIHdpdGggYC1ER1RFU1RfRE9OVF9ERUZJTkVfVEVTVD0xYCwgeW91J2xs
CituZWVkIHRvIHdyaXRlCisKKyAgICBHVEVTVF9URVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAu
Li4gfQorCitpbnN0ZWFkIG9mCisKKyAgICBURVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAuLi4g
fQorCitpbiBvcmRlciB0byBkZWZpbmUgYSB0ZXN0LgorCisjIyBEZXZlbG9waW5nIEdvb2dsZSBU
ZXN0ICMjCisKK1RoaXMgc2VjdGlvbiBkaXNjdXNzZXMgaG93IHRvIG1ha2UgeW91ciBvd24gY2hh
bmdlcyB0byBHb29nbGUgVGVzdC4KKworIyMjIFRlc3RpbmcgR29vZ2xlIFRlc3QgSXRzZWxmICMj
IworCitUbyBtYWtlIHN1cmUgeW91ciBjaGFuZ2VzIHdvcmsgYXMgaW50ZW5kZWQgYW5kIGRvbid0
IGJyZWFrIGV4aXN0aW5nCitmdW5jdGlvbmFsaXR5LCB5b3UnbGwgd2FudCB0byBjb21waWxlIGFu
ZCBydW4gR29vZ2xlIFRlc3QncyBvd24gdGVzdHMuCitGb3IgdGhhdCB5b3UgY2FuIHVzZSBDTWFr
ZToKKworICAgIG1rZGlyIG15YnVpbGQKKyAgICBjZCBteWJ1aWxkCisgICAgY21ha2UgLURndGVz
dF9idWlsZF90ZXN0cz1PTiAke0dURVNUX0RJUn0KKworTWFrZSBzdXJlIHlvdSBoYXZlIFB5dGhv
biBpbnN0YWxsZWQsIGFzIHNvbWUgb2YgR29vZ2xlIFRlc3QncyB0ZXN0cworYXJlIHdyaXR0ZW4g
aW4gUHl0aG9uLiAgSWYgdGhlIGNtYWtlIGNvbW1hbmQgY29tcGxhaW5zIGFib3V0IG5vdCBiZWlu
ZworYWJsZSB0byBmaW5kIFB5dGhvbiAoYENvdWxkIE5PVCBmaW5kIFB5dGhvbkludGVycCAobWlz
c2luZzoKK1BZVEhPTl9FWEVDVVRBQkxFKWApLCB0cnkgdGVsbGluZyBpdCBleHBsaWNpdGx5IHdo
ZXJlIHlvdXIgUHl0aG9uCitleGVjdXRhYmxlIGNhbiBiZSBmb3VuZDoKKworICAgIGNtYWtlIC1E
UFlUSE9OX0VYRUNVVEFCTEU9cGF0aC90by9weXRob24gLURndGVzdF9idWlsZF90ZXN0cz1PTiAk
e0dURVNUX0RJUn0KKworTmV4dCwgeW91IGNhbiBidWlsZCBHb29nbGUgVGVzdCBhbmQgYWxsIG9m
IGl0cyBvd24gdGVzdHMuICBPbiBcKm5peCwKK3RoaXMgaXMgdXN1YWxseSBkb25lIGJ5ICdtYWtl
Jy4gIFRvIHJ1biB0aGUgdGVzdHMsIGRvCisKKyAgICBtYWtlIHRlc3QKKworQWxsIHRlc3RzIHNo
b3VsZCBwYXNzLgorCitOb3JtYWxseSB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCByZWdl
bmVyYXRpbmcgdGhlIHNvdXJjZSBmaWxlcywKK3VubGVzcyB5b3UgbmVlZCB0byBtb2RpZnkgdGhl
bS4gIEluIHRoYXQgY2FzZSwgeW91IHNob3VsZCBtb2RpZnkgdGhlCitjb3JyZXNwb25kaW5nIC5w
dW1wIGZpbGVzIGluc3RlYWQgYW5kIHJ1biB0aGUgcHVtcC5weSBQeXRob24gc2NyaXB0IHRvCity
ZWdlbmVyYXRlIHRoZW0uICBZb3UgY2FuIGZpbmQgcHVtcC5weSBpbiB0aGUgW3NjcmlwdHMvXShz
Y3JpcHRzLykgZGlyZWN0b3J5LgorUmVhZCB0aGUgW1B1bXAgbWFudWFsXShkb2NzL1B1bXBNYW51
YWwubWQpIGZvciBob3cgdG8gdXNlIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvYnVpbGQtYXV4Ly5rZWVwIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvYnVpbGQtYXV4
Ly5rZWVwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUz
OTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2ludGVybmFsX3V0
aWxzLmNtYWtlIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvaW50ZXJuYWxfdXRpbHMu
Y21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzc3YjkxZWQ0YjhjYWEyMjZlYTU1Y2ZhNjFmZTdlYzQzM2ZmYjQ1
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2ludGVy
bmFsX3V0aWxzLmNtYWtlCkBAIC0wLDAgKzEsMjU0IEBACisjIERlZmluZXMgZnVuY3Rpb25zIGFu
ZCBtYWNyb3MgdXNlZnVsIGZvciBidWlsZGluZyBHb29nbGUgVGVzdCBhbmQKKyMgR29vZ2xlIE1v
Y2suCisjCisjIE5vdGU6CisjCisjIC0gVGhpcyBmaWxlIHdpbGwgYmUgcnVuIHR3aWNlIHdoZW4g
YnVpbGRpbmcgR29vZ2xlIE1vY2sgKG9uY2UgdmlhCisjICAgR29vZ2xlIFRlc3QncyBDTWFrZUxp
c3RzLnR4dCwgYW5kIG9uY2UgdmlhIEdvb2dsZSBNb2NrJ3MpLgorIyAgIFRoZXJlZm9yZSBpdCBz
aG91bGRuJ3QgaGF2ZSBhbnkgc2lkZSBlZmZlY3RzIG90aGVyIHRoYW4gZGVmaW5pbmcKKyMgICB0
aGUgZnVuY3Rpb25zIGFuZCBtYWNyb3MuCisjCisjIC0gVGhlIGZ1bmN0aW9ucy9tYWNyb3MgZGVm
aW5lZCBpbiB0aGlzIGZpbGUgbWF5IGRlcGVuZCBvbiBHb29nbGUKKyMgICBUZXN0IGFuZCBHb29n
bGUgTW9jaydzIG9wdGlvbigpIGRlZmluaXRpb25zLCBhbmQgdGh1cyBtdXN0IGJlCisjICAgY2Fs
bGVkICphZnRlciogdGhlIG9wdGlvbnMgaGF2ZSBiZWVuIGRlZmluZWQuCisKKyMgVHdlYWtzIENN
YWtlJ3MgZGVmYXVsdCBjb21waWxlci9saW5rZXIgc2V0dGluZ3MgdG8gc3VpdCBHb29nbGUgVGVz
dCdzIG5lZWRzLgorIworIyBUaGlzIG11c3QgYmUgYSBtYWNybygpLCBhcyBpbnNpZGUgYSBmdW5j
dGlvbiBzdHJpbmcoKSBjYW4gb25seQorIyB1cGRhdGUgdmFyaWFibGVzIGluIHRoZSBmdW5jdGlv
biBzY29wZS4KK21hY3JvKGZpeF9kZWZhdWx0X2NvbXBpbGVyX3NldHRpbmdzXykKKyAgaWYgKE1T
VkMpCisgICAgIyBGb3IgTVNWQywgQ01ha2Ugc2V0cyBjZXJ0YWluIGZsYWdzIHRvIGRlZmF1bHRz
IHdlIHdhbnQgdG8gb3ZlcnJpZGUuCisgICAgIyBUaGlzIHJlcGxhY2VtZW50IGNvZGUgaXMgdGFr
ZW4gZnJvbSBzYW1wbGUgaW4gdGhlIENNYWtlIFdpa2kgYXQKKyAgICAjIGh0dHA6Ly93d3cuY21h
a2Uub3JnL1dpa2kvQ01ha2VfRkFRI0R5bmFtaWNfUmVwbGFjZS4KKyAgICBmb3JlYWNoIChmbGFn
X3ZhcgorICAgICAgICAgICAgIENNQUtFX0NYWF9GTEFHUyBDTUFLRV9DWFhfRkxBR1NfREVCVUcg
Q01BS0VfQ1hYX0ZMQUdTX1JFTEVBU0UKKyAgICAgICAgICAgICBDTUFLRV9DWFhfRkxBR1NfTUlO
U0laRVJFTCBDTUFLRV9DWFhfRkxBR1NfUkVMV0lUSERFQklORk8pCisgICAgICBpZiAoTk9UIEJV
SUxEX1NIQVJFRF9MSUJTIEFORCBOT1QgZ3Rlc3RfZm9yY2Vfc2hhcmVkX2NydCkKKyAgICAgICAg
IyBXaGVuIEdvb2dsZSBUZXN0IGlzIGJ1aWx0IGFzIGEgc2hhcmVkIGxpYnJhcnksIGl0IHNob3Vs
ZCBhbHNvIHVzZQorICAgICAgICAjIHNoYXJlZCBydW50aW1lIGxpYnJhcmllcy4gIE90aGVyd2lz
ZSwgaXQgbWF5IGVuZCB1cCB3aXRoIG11bHRpcGxlCisgICAgICAgICMgY29waWVzIG9mIHJ1bnRp
bWUgbGlicmFyeSBkYXRhIGluIGRpZmZlcmVudCBtb2R1bGVzLCByZXN1bHRpbmcgaW4KKyAgICAg
ICAgIyBoYXJkLXRvLWZpbmQgY3Jhc2hlcy4gV2hlbiBpdCBpcyBidWlsdCBhcyBhIHN0YXRpYyBs
aWJyYXJ5LCBpdCBpcworICAgICAgICAjIHByZWZlcmFibGUgdG8gdXNlIENSVCBhcyBzdGF0aWMg
bGlicmFyaWVzLCBhcyB3ZSBkb24ndCBoYXZlIHRvIHJlbHkKKyAgICAgICAgIyBvbiBDUlQgRExM
cyBiZWluZyBhdmFpbGFibGUuIENNYWtlIGFsd2F5cyBkZWZhdWx0cyB0byB1c2luZyBzaGFyZWQK
KyAgICAgICAgIyBDUlQgbGlicmFyaWVzLCBzbyB3ZSBvdmVycmlkZSB0aGF0IGRlZmF1bHQgaGVy
ZS4KKyAgICAgICAgc3RyaW5nKFJFUExBQ0UgIi9NRCIgIi1NVCIgJHtmbGFnX3Zhcn0gIiR7JHtm
bGFnX3Zhcn19IikKKyAgICAgIGVuZGlmKCkKKworICAgICAgIyBXZSBwcmVmZXIgbW9yZSBzdHJp
Y3Qgd2FybmluZyBjaGVja2luZyBmb3IgYnVpbGRpbmcgR29vZ2xlIFRlc3QuCisgICAgICAjIFJl
cGxhY2VzIC9XMyB3aXRoIC9XNCBpbiBkZWZhdWx0cy4KKyAgICAgIHN0cmluZyhSRVBMQUNFICIv
VzMiICIvVzQiICR7ZmxhZ192YXJ9ICIkeyR7ZmxhZ192YXJ9fSIpCisgICAgZW5kZm9yZWFjaCgp
CisgIGVuZGlmKCkKK2VuZG1hY3JvKCkKKworIyBEZWZpbmVzIHRoZSBjb21waWxlci9saW5rZXIg
ZmxhZ3MgdXNlZCB0byBidWlsZCBHb29nbGUgVGVzdCBhbmQKKyMgR29vZ2xlIE1vY2suICBZb3Ug
Y2FuIHR3ZWFrIHRoZXNlIGRlZmluaXRpb25zIHRvIHN1aXQgeW91ciBuZWVkLiAgQQorIyB2YXJp
YWJsZSdzIHZhbHVlIGlzIGVtcHR5IGJlZm9yZSBpdCdzIGV4cGxpY2l0bHkgYXNzaWduZWQgdG8u
CittYWNybyhjb25maWdfY29tcGlsZXJfYW5kX2xpbmtlcikKKyAgaWYgKE5PVCBndGVzdF9kaXNh
YmxlX3B0aHJlYWRzKQorICAgICMgRGVmaW5lcyBDTUFLRV9VU0VfUFRIUkVBRFNfSU5JVCBhbmQg
Q01BS0VfVEhSRUFEX0xJQlNfSU5JVC4KKyAgICBmaW5kX3BhY2thZ2UoVGhyZWFkcykKKyAgZW5k
aWYoKQorCisgIGZpeF9kZWZhdWx0X2NvbXBpbGVyX3NldHRpbmdzXygpCisgIGlmIChNU1ZDKQor
ICAgICMgTmV3bGluZXMgaW5zaWRlIGZsYWdzIHZhcmlhYmxlcyBicmVhayBDTWFrZSdzIE5NYWtl
IGdlbmVyYXRvci4KKyAgICAjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEFkZCAtUlRDcyBhbmQg
LVJUQ3UgdG8gZGVidWcgYnVpbGRzLgorICAgIHNldChjeHhfYmFzZV9mbGFncyAiLUdTIC1XNCAt
V1ggLXdkNDI1MSAtd2Q0Mjc1IC1ub2xvZ28gLUogLVppIikKKyAgICBpZiAoTVNWQ19WRVJTSU9O
IExFU1MgMTQwMCkgICMgMTQwMCBpcyBWaXN1YWwgU3R1ZGlvIDIwMDUKKyAgICAgICMgU3VwcHJl
c3Mgc3B1cmlvdXMgd2FybmluZ3MgTVNWQyA3LjEgc29tZXRpbWVzIGlzc3Vlcy4KKyAgICAgICMg
Rm9yY2luZyB2YWx1ZSB0byBib29sLgorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9i
YXNlX2ZsYWdzfSAtd2Q0ODAwIikKKyAgICAgICMgQ29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdu
bWVudCBvcGVyYXRvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkLgorICAgICAgc2V0KGN4eF9iYXNl
X2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtd2Q0NTExIC13ZDQ1MTIiKQorICAgICAgIyBDb21w
YXRpYmlsaXR5IHdhcm5pbmdzIG5vdCBhcHBsaWNhYmxlIHRvIEdvb2dsZSBUZXN0LgorICAgICAg
IyBSZXNvbHZlZCBvdmVybG9hZCB3YXMgZm91bmQgYnkgYXJndW1lbnQtZGVwZW5kZW50IGxvb2t1
cC4KKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLXdkNDY3NSIp
CisgICAgZW5kaWYoKQorICAgIGlmIChNU1ZDX1ZFUlNJT04gTEVTUyAxNTAwKSAgIyAxNTAwIGlz
IFZpc3VhbCBTdHVkaW8gMjAwOAorICAgICAgIyBDb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNv
bnN0YW50LgorICAgICAgIyBXaGVuIGNvbXBpbGluZyB3aXRoIC9XNCwgd2UgZ2V0IHNldmVyYWwg
aW5zdGFuY2VzIG9mIEM0MTI3CisgICAgICAjIChDb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNv
bnN0YW50KS4gSW4gb3VyIGNvZGUsIHdlIGRpc2FibGUgdGhhdAorICAgICAgIyB3YXJuaW5nIG9u
IGEgY2FzZS1ieS1jYXNlIGJhc2lzLiBIb3dldmVyLCBvbiBWaXN1YWwgU3R1ZGlvIDIwMDUsCisg
ICAgICAjIHRoZSB3YXJuaW5nIGZpcmVzIG9uIHN0ZDo6bGlzdC4gVGhlcmVmb3JlIG9uIHRoYXQg
Y29tcGlsZXIgYW5kIGVhcmxpZXIsCisgICAgICAjIHdlIGRpc2FibGUgdGhlIHdhcm5pbmcgcHJv
amVjdC13aWRlLgorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAt
d2Q0MTI3IikKKyAgICBlbmRpZigpCisgICAgaWYgKE5PVCAoTVNWQ19WRVJTSU9OIExFU1MgMTcw
MCkpICAjIDE3MDAgaXMgVmlzdWFsIFN0dWRpbyAyMDEyLgorICAgICAgIyBTdXBwcmVzcyAidW5y
ZWFjaGFibGUgY29kZSIgd2FybmluZyBvbiBWUyAyMDEyIGFuZCBsYXRlci4KKyAgICAgICMgaHR0
cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMjMyNjY5IGV4cGxhaW5zIHRoZSBpc3N1
ZS4KKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLXdkNDcwMiIp
CisgICAgZW5kaWYoKQorICAgIGlmIChOT1QgKE1TVkNfVkVSU0lPTiBHUkVBVEVSIDE5MDApKSAg
IyAxOTAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxNQorICAgICAgIyBCaWdPYmogcmVxdWlyZWQgZm9y
IHRlc3RzLgorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtYmln
b2JqIikKKyAgICBlbmRpZigpCisKKyAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2Vf
ZmxhZ3N9IC1EX1VOSUNPREUgLURVTklDT0RFIC1EV0lOMzIgLURfV0lOMzIiKQorICAgIHNldChj
eHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLURTVFJJQ1QgLURXSU4zMl9MRUFOX0FO
RF9NRUFOIikKKyAgICBzZXQoY3h4X2V4Y2VwdGlvbl9mbGFncyAiLUVIc2MgLURfSEFTX0VYQ0VQ
VElPTlM9MSIpCisgICAgc2V0KGN4eF9ub19leGNlcHRpb25fZmxhZ3MgIi1EX0hBU19FWENFUFRJ
T05TPTAiKQorICAgIHNldChjeHhfbm9fcnR0aV9mbGFncyAiLUdSLSIpCisgIGVsc2VpZiAoQ01B
S0VfQ09NUElMRVJfSVNfR05VQ1hYKQorICAgIHNldChjeHhfYmFzZV9mbGFncyAiLVdhbGwgLVdz
aGFkb3ciKQorICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICItZmV4Y2VwdGlvbnMiKQorICAg
IHNldChjeHhfbm9fZXhjZXB0aW9uX2ZsYWdzICItZm5vLWV4Y2VwdGlvbnMiKQorICAgICMgVW50
aWwgdmVyc2lvbiA0LjMuMiwgR0NDIGRvZXNuJ3QgZGVmaW5lIGEgbWFjcm8gdG8gaW5kaWNhdGUK
KyAgICAjIHdoZXRoZXIgUlRUSSBpcyBlbmFibGVkLiAgVGhlcmVmb3JlIHdlIGRlZmluZSBHVEVT
VF9IQVNfUlRUSQorICAgICMgZXhwbGljaXRseS4KKyAgICBzZXQoY3h4X25vX3J0dGlfZmxhZ3Mg
Ii1mbm8tcnR0aSAtREdURVNUX0hBU19SVFRJPTAiKQorICAgIHNldChjeHhfc3RyaWN0X2ZsYWdz
CisgICAgICAiLVdleHRyYSAtV25vLXVudXNlZC1wYXJhbWV0ZXIgLVduby1taXNzaW5nLWZpZWxk
LWluaXRpYWxpemVycyIpCisgIGVsc2VpZiAoQ01BS0VfQ1hYX0NPTVBJTEVSX0lEIFNUUkVRVUFM
ICJTdW5Qcm8iKQorICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICItZmVhdHVyZXM9ZXhjZXB0
IikKKyAgICAjIFN1biBQcm8gZG9lc24ndCBwcm92aWRlIG1hY3JvcyB0byBpbmRpY2F0ZSB3aGV0
aGVyIGV4Y2VwdGlvbnMgYW5kCisgICAgIyBSVFRJIGFyZSBlbmFibGVkLCBzbyB3ZSBkZWZpbmUg
R1RFU1RfSEFTXyogZXhwbGljaXRseS4KKyAgICBzZXQoY3h4X25vX2V4Y2VwdGlvbl9mbGFncyAi
LWZlYXR1cmVzPW5vJWV4Y2VwdCAtREdURVNUX0hBU19FWENFUFRJT05TPTAiKQorICAgIHNldChj
eHhfbm9fcnR0aV9mbGFncyAiLWZlYXR1cmVzPW5vJXJ0dGkgLURHVEVTVF9IQVNfUlRUST0wIikK
KyAgZWxzZWlmIChDTUFLRV9DWFhfQ09NUElMRVJfSUQgU1RSRVFVQUwgIlZpc3VhbEFnZSIgT1IK
KyAgICAgIENNQUtFX0NYWF9DT01QSUxFUl9JRCBTVFJFUVVBTCAiWEwiKQorICAgICMgQ01ha2Ug
Mi44IGNoYW5nZXMgVmlzdWFsIEFnZSdzIGNvbXBpbGVyIElEIHRvICJYTCIuCisgICAgc2V0KGN4
eF9leGNlcHRpb25fZmxhZ3MgIi1xZWgiKQorICAgIHNldChjeHhfbm9fZXhjZXB0aW9uX2ZsYWdz
ICItcW5vZWgiKQorICAgICMgVW50aWwgdmVyc2lvbiA5LjAsIFZpc3VhbCBBZ2UgZG9lc24ndCBk
ZWZpbmUgYSBtYWNybyB0byBpbmRpY2F0ZQorICAgICMgd2hldGhlciBSVFRJIGlzIGVuYWJsZWQu
ICBUaGVyZWZvcmUgd2UgZGVmaW5lIEdURVNUX0hBU19SVFRJCisgICAgIyBleHBsaWNpdGx5Lgor
ICAgIHNldChjeHhfbm9fcnR0aV9mbGFncyAiLXFub3J0dGkgLURHVEVTVF9IQVNfUlRUST0wIikK
KyAgZWxzZWlmIChDTUFLRV9DWFhfQ09NUElMRVJfSUQgU1RSRVFVQUwgIkhQIikKKyAgICBzZXQo
Y3h4X2Jhc2VfZmxhZ3MgIi1BQSAtbXQiKQorICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICIt
REdURVNUX0hBU19FWENFUFRJT05TPTEiKQorICAgIHNldChjeHhfbm9fZXhjZXB0aW9uX2ZsYWdz
ICIrbm9laCAtREdURVNUX0hBU19FWENFUFRJT05TPTAiKQorICAgICMgUlRUSSBjYW4gbm90IGJl
IGRpc2FibGVkIGluIEhQIGFDQyBjb21waWxlci4KKyAgICBzZXQoY3h4X25vX3J0dGlfZmxhZ3Mg
IiIpCisgIGVuZGlmKCkKKworICBpZiAoQ01BS0VfVVNFX1BUSFJFQURTX0lOSVQpICAjIFRoZSBw
dGhyZWFkcyBsaWJyYXJ5IGlzIGF2YWlsYWJsZSBhbmQgYWxsb3dlZC4KKyAgICBzZXQoY3h4X2Jh
c2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC1ER1RFU1RfSEFTX1BUSFJFQUQ9MSIpCisgIGVs
c2UoKQorICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLURHVEVTVF9I
QVNfUFRIUkVBRD0wIikKKyAgZW5kaWYoKQorCisgICMgRm9yIGJ1aWxkaW5nIGd0ZXN0J3Mgb3du
IHRlc3RzIGFuZCBzYW1wbGVzLgorICBzZXQoY3h4X2V4Y2VwdGlvbiAiJHtDTUFLRV9DWFhfRkxB
R1N9ICR7Y3h4X2Jhc2VfZmxhZ3N9ICR7Y3h4X2V4Y2VwdGlvbl9mbGFnc30iKQorICBzZXQoY3h4
X25vX2V4Y2VwdGlvbgorICAgICIke0NNQUtFX0NYWF9GTEFHU30gJHtjeHhfYmFzZV9mbGFnc30g
JHtjeHhfbm9fZXhjZXB0aW9uX2ZsYWdzfSIpCisgIHNldChjeHhfZGVmYXVsdCAiJHtjeHhfZXhj
ZXB0aW9ufSIpCisgIHNldChjeHhfbm9fcnR0aSAiJHtjeHhfZGVmYXVsdH0gJHtjeHhfbm9fcnR0
aV9mbGFnc30iKQorICBzZXQoY3h4X3VzZV9vd25fdHVwbGUgIiR7Y3h4X2RlZmF1bHR9IC1ER1RF
U1RfVVNFX09XTl9UUjFfVFVQTEU9MSIpCisKKyAgIyBGb3IgYnVpbGRpbmcgdGhlIGd0ZXN0IGxp
YnJhcmllcy4KKyAgc2V0KGN4eF9zdHJpY3QgIiR7Y3h4X2RlZmF1bHR9ICR7Y3h4X3N0cmljdF9m
bGFnc30iKQorZW5kbWFjcm8oKQorCisjIERlZmluZXMgdGhlIGd0ZXN0ICYgZ3Rlc3RfbWFpbiBs
aWJyYXJpZXMuICBVc2VyIHRlc3RzIHNob3VsZCBsaW5rCisjIHdpdGggb25lIG9mIHRoZW0uCitm
dW5jdGlvbihjeHhfbGlicmFyeV93aXRoX3R5cGUgbmFtZSB0eXBlIGN4eF9mbGFncykKKyAgIyB0
eXBlIGNhbiBiZSBlaXRoZXIgU1RBVElDIG9yIFNIQVJFRCB0byBkZW5vdGUgYSBzdGF0aWMgb3Ig
c2hhcmVkIGxpYnJhcnkuCisgICMgQVJHTiByZWZlcnMgdG8gYWRkaXRpb25hbCBhcmd1bWVudHMg
YWZ0ZXIgJ2N4eF9mbGFncycuCisgIGFkZF9saWJyYXJ5KCR7bmFtZX0gJHt0eXBlfSAke0FSR059
KQorICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtuYW1lfQorICAgIFBST1BFUlRJRVMKKyAgICBD
T01QSUxFX0ZMQUdTICIke2N4eF9mbGFnc30iKQorICBpZiAoQlVJTERfU0hBUkVEX0xJQlMgT1Ig
dHlwZSBTVFJFUVVBTCAiU0hBUkVEIikKKyAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtuYW1l
fQorICAgICAgUFJPUEVSVElFUworICAgICAgQ09NUElMRV9ERUZJTklUSU9OUyAiR1RFU1RfQ1JF
QVRFX1NIQVJFRF9MSUJSQVJZPTEiKQorICBlbmRpZigpCisgIGlmIChDTUFLRV9VU0VfUFRIUkVB
RFNfSU5JVCkKKyAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtuYW1lfSAke0NNQUtFX1RIUkVB
RF9MSUJTX0lOSVR9KQorICBlbmRpZigpCitlbmRmdW5jdGlvbigpCisKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworIworIyBIZWxwZXIgZnVuY3Rpb25zIGZvciBjcmVhdGluZyBidWlsZCB0YXJnZXRzLgorCitm
dW5jdGlvbihjeHhfc2hhcmVkX2xpYnJhcnkgbmFtZSBjeHhfZmxhZ3MpCisgIGN4eF9saWJyYXJ5
X3dpdGhfdHlwZSgke25hbWV9IFNIQVJFRCAiJHtjeHhfZmxhZ3N9IiAke0FSR059KQorZW5kZnVu
Y3Rpb24oKQorCitmdW5jdGlvbihjeHhfbGlicmFyeSBuYW1lIGN4eF9mbGFncykKKyAgY3h4X2xp
YnJhcnlfd2l0aF90eXBlKCR7bmFtZX0gIiIgIiR7Y3h4X2ZsYWdzfSIgJHtBUkdOfSkKK2VuZGZ1
bmN0aW9uKCkKKworIyBjeHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzKG5hbWUgY3h4X2ZsYWdzIGxp
YnMgc3Jjcy4uLikKKyMKKyMgY3JlYXRlcyBhIG5hbWVkIEMrKyBleGVjdXRhYmxlIHRoYXQgZGVw
ZW5kcyBvbiB0aGUgZ2l2ZW4gbGlicmFyaWVzIGFuZAorIyBpcyBidWlsdCBmcm9tIHRoZSBnaXZl
biBzb3VyY2UgZmlsZXMgd2l0aCB0aGUgZ2l2ZW4gY29tcGlsZXIgZmxhZ3MuCitmdW5jdGlvbihj
eHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzIG5hbWUgY3h4X2ZsYWdzIGxpYnMpCisgIGFkZF9leGVj
dXRhYmxlKCR7bmFtZX0gJHtBUkdOfSkKKyAgaWYgKGN4eF9mbGFncykKKyAgICBzZXRfdGFyZ2V0
X3Byb3BlcnRpZXMoJHtuYW1lfQorICAgICAgUFJPUEVSVElFUworICAgICAgQ09NUElMRV9GTEFH
UyAiJHtjeHhfZmxhZ3N9IikKKyAgZW5kaWYoKQorICBpZiAoQlVJTERfU0hBUkVEX0xJQlMpCisg
ICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7bmFtZX0KKyAgICAgIFBST1BFUlRJRVMKKyAgICAg
IENPTVBJTEVfREVGSU5JVElPTlMgIkdURVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFSWT0xIikK
KyAgZW5kaWYoKQorICAjIFRvIHN1cHBvcnQgbWl4aW5nIGxpbmtpbmcgaW4gc3RhdGljIGFuZCBk
eW5hbWljIGxpYnJhcmllcywgbGluayBlYWNoCisgICMgbGlicmFyeSBpbiB3aXRoIGFuIGV4dHJh
IGNhbGwgdG8gdGFyZ2V0X2xpbmtfbGlicmFyaWVzLgorICBmb3JlYWNoIChsaWIgIiR7bGlic30i
KQorICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke25hbWV9ICR7bGlifSkKKyAgZW5kZm9yZWFj
aCgpCitlbmRmdW5jdGlvbigpCisKKyMgY3h4X2V4ZWN1dGFibGUobmFtZSBkaXIgbGliIHNyY3Mu
Li4pCisjCisjIGNyZWF0ZXMgYSBuYW1lZCB0YXJnZXQgdGhhdCBkZXBlbmRzIG9uIHRoZSBnaXZl
biBsaWJzIGFuZCBpcyBidWlsdAorIyBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmlsZXMuICBkaXIv
bmFtZS5jYyBpcyBpbXBsaWNpdGx5IGluY2x1ZGVkIGluCisjIHRoZSBzb3VyY2UgZmlsZSBsaXN0
LgorZnVuY3Rpb24oY3h4X2V4ZWN1dGFibGUgbmFtZSBkaXIgbGlicykKKyAgY3h4X2V4ZWN1dGFi
bGVfd2l0aF9mbGFncygKKyAgICAke25hbWV9ICIke2N4eF9kZWZhdWx0fSIgIiR7bGlic30iICIk
e2Rpcn0vJHtuYW1lfS5jYyIgJHtBUkdOfSkKK2VuZGZ1bmN0aW9uKCkKKworIyBTZXRzIFBZVEhP
TklOVEVSUF9GT1VORCBhbmQgUFlUSE9OX0VYRUNVVEFCTEUuCitmaW5kX3BhY2thZ2UoUHl0aG9u
SW50ZXJwKQorCisjIGN4eF90ZXN0X3dpdGhfZmxhZ3MobmFtZSBjeHhfZmxhZ3MgbGlicyBzcmNz
Li4uKQorIworIyBjcmVhdGVzIGEgbmFtZWQgQysrIHRlc3QgdGhhdCBkZXBlbmRzIG9uIHRoZSBn
aXZlbiBsaWJzIGFuZCBpcyBidWlsdAorIyBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmlsZXMgd2l0
aCB0aGUgZ2l2ZW4gY29tcGlsZXIgZmxhZ3MuCitmdW5jdGlvbihjeHhfdGVzdF93aXRoX2ZsYWdz
IG5hbWUgY3h4X2ZsYWdzIGxpYnMpCisgIGN4eF9leGVjdXRhYmxlX3dpdGhfZmxhZ3MoJHtuYW1l
fSAiJHtjeHhfZmxhZ3N9IiAiJHtsaWJzfSIgJHtBUkdOfSkKKyAgYWRkX3Rlc3QoJHtuYW1lfSAk
e25hbWV9KQorZW5kZnVuY3Rpb24oKQorCisjIGN4eF90ZXN0KG5hbWUgbGlicyBzcmNzLi4uKQor
IworIyBjcmVhdGVzIGEgbmFtZWQgdGVzdCB0YXJnZXQgdGhhdCBkZXBlbmRzIG9uIHRoZSBnaXZl
biBsaWJzIGFuZCBpcworIyBidWlsdCBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmlsZXMuICBVbmxp
a2UgY3h4X3Rlc3Rfd2l0aF9mbGFncywKKyMgdGVzdC9uYW1lLmNjIGlzIGFscmVhZHkgaW1wbGlj
aXRseSBpbmNsdWRlZCBpbiB0aGUgc291cmNlIGZpbGUgbGlzdC4KK2Z1bmN0aW9uKGN4eF90ZXN0
IG5hbWUgbGlicykKKyAgY3h4X3Rlc3Rfd2l0aF9mbGFncygiJHtuYW1lfSIgIiR7Y3h4X2RlZmF1
bHR9IiAiJHtsaWJzfSIKKyAgICAidGVzdC8ke25hbWV9LmNjIiAke0FSR059KQorZW5kZnVuY3Rp
b24oKQorCisjIHB5X3Rlc3QobmFtZSkKKyMKKyMgY3JlYXRlcyBhIFB5dGhvbiB0ZXN0IHdpdGgg
dGhlIGdpdmVuIG5hbWUgd2hvc2UgbWFpbiBtb2R1bGUgaXMgaW4KKyMgdGVzdC9uYW1lLnB5LiAg
SXQgZG9lcyBub3RoaW5nIGlmIFB5dGhvbiBpcyBub3QgaW5zdGFsbGVkLgorZnVuY3Rpb24ocHlf
dGVzdCBuYW1lKQorICAjIFdlIGFyZSBub3Qgc3VwcG9ydGluZyBQeXRob24gdGVzdHMgb24gTGlu
dXggeWV0IGFzIHRoZXkgY29uc2lkZXIKKyAgIyBhbGwgTGludXggZW52aXJvbm1lbnRzIHRvIGJl
IGdvb2dsZTMgYW5kIHRyeSB0byB1c2UgZ29vZ2xlMyBmZWF0dXJlcy4KKyAgaWYgKFBZVEhPTklO
VEVSUF9GT1VORCkKKyAgICAjICR7Q01BS0VfQklOQVJZX0RJUn0gaXMga25vd24gYXQgY29uZmln
dXJhdGlvbiB0aW1lLCBzbyB3ZSBjYW4KKyAgICAjIGRpcmVjdGx5IGJpbmQgaXQgZnJvbSBjbWFr
ZS4gJHtDVEVTVF9DT05GSUdVUkFUSU9OX1RZUEV9IGlzIGtub3duCisgICAgIyBvbmx5IGF0IGN0
ZXN0IHJ1bnRpbWUgKGJ5IGNhbGxpbmcgY3Rlc3QgLWMgPENvbmZpZ3VyYXRpb24+KSwgc28KKyAg
ICAjIHdlIGhhdmUgdG8gZXNjYXBlICQgdG8gZGVsYXkgdmFyaWFibGUgc3Vic3RpdHV0aW9uIGhl
cmUuCisgICAgaWYgKCR7Q01BS0VfTUFKT1JfVkVSU0lPTn0uJHtDTUFLRV9NSU5PUl9WRVJTSU9O
fSBHUkVBVEVSIDMuMSkKKyAgICAgIGFkZF90ZXN0KAorICAgICAgICBOQU1FICR7bmFtZX0KKyAg
ICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNF
X0RJUn0vdGVzdC8ke25hbWV9LnB5CisgICAgICAgICAgICAtLWJ1aWxkX2Rpcj0ke0NNQUtFX0NV
UlJFTlRfQklOQVJZX0RJUn0vJDxDT05GSUdVUkFUSU9OPikKKyAgICBlbHNlICgke0NNQUtFX01B
Sk9SX1ZFUlNJT059LiR7Q01BS0VfTUlOT1JfVkVSU0lPTn0gR1JFQVRFUiAzLjEpCisgICAgICBh
ZGRfdGVzdCgKKyAgICAgICAgJHtuYW1lfQorICAgICAgICAke1BZVEhPTl9FWEVDVVRBQkxFfSAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vdGVzdC8ke25hbWV9LnB5CisgICAgICAgICAgLS1i
dWlsZF9kaXI9JHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L1wke0NURVNUX0NPTkZJR1VSQVRJ
T05fVFlQRX0pCisgICAgZW5kaWYgKCR7Q01BS0VfTUFKT1JfVkVSU0lPTn0uJHtDTUFLRV9NSU5P
Ul9WRVJTSU9OfSBHUkVBVEVSIDMuMSkKKyAgZW5kaWYoKQorZW5kZnVuY3Rpb24oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29kZWdlYXIvZ3Rlc3RfYWxsLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29kZWdlYXIvZ3Rlc3RfYWxsLmNjCmluZGV4IGJhN2FkNjhh
ZDFjYWE1ZmIyMDgzOGM3MDA4OTZhNDE4MmJhNTlkOWYuLjEyMWIyZDgwZTgzZWM3Y2QwZmRmN2Rj
NjcxMjcyZGM1NGY2ZTlmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2Nv
ZGVnZWFyL2d0ZXN0X2FsbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vh
ci9ndGVzdF9hbGwuY2MKQEAgLTEsMzggKzEsMzggQEAKLS8vIENvcHlyaWdodCAyMDA5LCBHb29n
bGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IEpvc2ggS2VsbGV5IChqb3Noa2Vs
QGdtYWlsLmNvbSkKLS8vCi0vLyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUg
VGVzdCkKLS8vCi0vLyBDKytCdWlsZGVyJ3MgSURFIGNhbm5vdCBidWlsZCBhIHN0YXRpYyBsaWJy
YXJ5IGZyb20gZmlsZXMgd2l0aCBoeXBoZW5zCi0vLyBpbiB0aGVpciBuYW1lLiAgU2VlIGh0dHA6
Ly9xYy5jb2RlZ2Vhci5jb20vd2MvcWNtYWluLmFzcHg/ZD03MDk3NyAuCi0vLyBUaGlzIGZpbGUg
c2VydmVzIGFzIGEgd29ya2Fyb3VuZC4KLQotI2luY2x1ZGUgInNyYy9ndGVzdC1hbGwuY2MiCisv
LyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4NCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLg0K
Ky8vDQorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0DQorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQ0KKy8vIG1ldDoNCisvLw0KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0DQorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyDQorLy8g
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQ0KKy8vIGRpc3RyaWJ1dGlvbi4NCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzDQorLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKy8v
DQorLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUw0KKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQNCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQorLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
DQorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZDQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KKy8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuDQorLy8NCisvLyBBdXRob3I6IEpvc2ggS2VsbGV5IChqb3Noa2VsQGdtYWls
LmNvbSkNCisvLw0KKy8vIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0
KQ0KKy8vDQorLy8gQysrQnVpbGRlcidzIElERSBjYW5ub3QgYnVpbGQgYSBzdGF0aWMgbGlicmFy
eSBmcm9tIGZpbGVzIHdpdGggaHlwaGVucw0KKy8vIGluIHRoZWlyIG5hbWUuICBTZWUgaHR0cDov
L3FjLmNvZGVnZWFyLmNvbS93Yy9xY21haW4uYXNweD9kPTcwOTc3IC4NCisvLyBUaGlzIGZpbGUg
c2VydmVzIGFzIGEgd29ya2Fyb3VuZC4NCisNCisjaW5jbHVkZSAic3JjL2d0ZXN0LWFsbC5jYyIN
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9saW5r
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29kZWdlYXIvZ3Rlc3RfbGluay5jYwppbmRl
eCBiOTU1ZWJmMmY5MTEwZTYzNTNjNjg3Y2MzOTQyMzQ4ZGE3OTdjYjUwLi45MThlY2NkMTliN2Rh
ZmEzMmI1MjkzODBiNzA5MjM4YzllM2EzNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9saW5rLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2NvZGVnZWFyL2d0ZXN0X2xpbmsuY2MKQEAgLTEsNDAgKzEsNDAgQEAKLS8vIENvcHlyaWdo
dCAyMDA5LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9u
LgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IEpvc2ggS2Vs
bGV5IChqb3Noa2VsQGdtYWlsLmNvbSkKLS8vCi0vLyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3
b3JrIChHb29nbGUgVGVzdCkKLS8vCi0vLyBMaW5rcyBndGVzdC5saWIgYW5kIGd0ZXN0X21haW4u
bGliIGludG8gdGhlIGN1cnJlbnQgcHJvamVjdCBpbiBDKytCdWlsZGVyLgotLy8gVGhpcyBtZWFu
cyB0aGF0IHRoZXNlIGxpYnJhcmllcyBjYW4ndCBiZSByZW5hbWVkLCBidXQgaXQncyB0aGUgb25s
eSB3YXkgdG8KLS8vIGVuc3VyZSB0aGF0IERlYnVnIHZlcnN1cyBSZWxlYXNlIHRlc3QgYnVpbGRz
IGFyZSBsaW5rZWQgYWdhaW5zdCB0aGUKLS8vIGFwcHJvcHJpYXRlIERlYnVnIG9yIFJlbGVhc2Ug
YnVpbGQgb2YgdGhlIGxpYnJhcmllcy4KLQotI3ByYWdtYSBsaW5rICJndGVzdC5saWIiCi0jcHJh
Z21hIGxpbmsgImd0ZXN0X21haW4ubGliIgorLy8gQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMu
DQorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLw0KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKy8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUNCisvLyBtZXQ6DQorLy8NCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlDQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcg0KKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCisvLyBkaXN0cmlidXRpb24uDQorLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cw0KKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tDQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCisvLw0KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMNCisvLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VA0KKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUg0KKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUDQorLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQor
Ly8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVA0KKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0KKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQ0KKy8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQNCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKy8vDQorLy8gQXV0aG9y
OiBKb3NoIEtlbGxleSAoam9zaGtlbEBnbWFpbC5jb20pDQorLy8NCisvLyBHb29nbGUgQysrIFRl
c3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkNCisvLw0KKy8vIExpbmtzIGd0ZXN0LmxpYiBh
bmQgZ3Rlc3RfbWFpbi5saWIgaW50byB0aGUgY3VycmVudCBwcm9qZWN0IGluIEMrK0J1aWxkZXIu
DQorLy8gVGhpcyBtZWFucyB0aGF0IHRoZXNlIGxpYnJhcmllcyBjYW4ndCBiZSByZW5hbWVkLCBi
dXQgaXQncyB0aGUgb25seSB3YXkgdG8NCisvLyBlbnN1cmUgdGhhdCBEZWJ1ZyB2ZXJzdXMgUmVs
ZWFzZSB0ZXN0IGJ1aWxkcyBhcmUgbGlua2VkIGFnYWluc3QgdGhlDQorLy8gYXBwcm9wcmlhdGUg
RGVidWcgb3IgUmVsZWFzZSBidWlsZCBvZiB0aGUgbGlicmFyaWVzLg0KKw0KKyNwcmFnbWEgbGlu
ayAiZ3Rlc3QubGliIg0KKyNwcmFnbWEgbGluayAiZ3Rlc3RfbWFpbi5saWIiDQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29uZmlndXJlLmFjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvY29uZmlndXJlLmFjCmluZGV4IDFiOTEyMzc0NjFlMzlmZjYxYjYzMGYzZTAxOWFk
ZmVlZWI3ODNhZTYuLmNjNTkyZTE1ODMwMmVkNjkzMzNkYjUwZjc1NTE3ZWViZjg4NjQ3ZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NvbmZpZ3VyZS5hYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9jb25maWd1cmUuYWMKQEAgLTUsMTMgKzUsMTQgQEAgbTRfaW5j
bHVkZShtNC9hY3hfcHRocmVhZC5tNCkKICMgIlsxLjAuMV0iKS4gSXQgYWxzbyBhc3VtZXMgdGhh
dCB0aGVyZSB3b24ndCBiZSBhbnkgY2xvc2luZyBwYXJlbnRoZXNpcwogIyBiZXR3ZWVuICJBQ19J
TklUKCIgYW5kIHRoZSBjbG9zaW5nICIpIiBpbmNsdWRpbmcgY29tbWVudHMgYW5kIHN0cmluZ3Mu
CiBBQ19JTklUKFtHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrXSwKLSAgICAgICAgWzEuNS4w
XSwKKyAgICAgICAgWzEuNy4wXSwKICAgICAgICAgW2dvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xl
Z3JvdXBzLmNvbV0sCiAgICAgICAgIFtndGVzdF0pCiAKICMgUHJvdmlkZSB2YXJpb3VzIG9wdGlv
bnMgdG8gaW5pdGlhbGl6ZSB0aGUgQXV0b2NvbmYgYW5kIGNvbmZpZ3VyZSBwcm9jZXNzZXMuCiBB
Q19QUkVSRVEoWzIuNTldKQotQUNfQ09ORklHX1NSQ0RJUihbLi9DT1BZSU5HXSkKK0FDX0NPTkZJ
R19TUkNESVIoWy4vTElDRU5TRV0pCitBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCiBBQ19DT05G
SUdfQVVYX0RJUihbYnVpbGQtYXV4XSkKIEFDX0NPTkZJR19IRUFERVJTKFtidWlsZC1hdXgvY29u
ZmlnLmhdKQogQUNfQ09ORklHX0ZJTEVTKFtNYWtlZmlsZV0pCkBAIC01NCw3ICs1NSw3IEBAIEFT
X0lGKFt0ZXN0ICJ4JHdpdGhfcHRocmVhZHMiICE9ICJ4bm8iXSwKICAgICAgICAgICAgICAgIFtB
Q19NU0dfRkFJTFVSRSgKICAgICAgICAgICAgICAgICAgWy0td2l0aC1wdGhyZWFkcyB3YXMgc3Bl
Y2lmaWVkLCBidXQgdW5hYmxlIHRvIGJlIHVzZWRdKV0pXSkKICAgICAgICBoYXZlX3B0aHJlYWRz
PSIkYWN4X3B0aHJlYWRfb2siXSkKLUFNX0NPTkRJVElPTkFMKFtIQVZFX1BUSFJFQURTXSxbdGVz
dCAieCRoYXZlX3B0aHJlYWRzIiA9PSAieHllcyJdKQorQU1fQ09ORElUSU9OQUwoW0hBVkVfUFRI
UkVBRFNdLFt0ZXN0ICJ4JGhhdmVfcHRocmVhZHMiID0gInh5ZXMiXSkKIEFDX1NVQlNUKFBUSFJF
QURfQ0ZMQUdTKQogQUNfU1VCU1QoUFRIUkVBRF9MSUJTKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9kb2NzL0FkdmFuY2VkR3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9kb2NzL0FkdmFuY2VkR3VpZGUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTNhNjUyMDBkYWRiMGEz
YmQ4MWQ2Mjk5YjgwMGZhMzg5MDhmNmY5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2RvY3MvQWR2YW5jZWRHdWlkZS5tZApAQCAtMCwwICsxLDIxODIgQEAKKwor
CitOb3cgdGhhdCB5b3UgaGF2ZSByZWFkIFtQcmltZXJdKFByaW1lci5tZCkgYW5kIGxlYXJuZWQg
aG93IHRvIHdyaXRlIHRlc3RzCit1c2luZyBHb29nbGUgVGVzdCwgaXQncyB0aW1lIHRvIGxlYXJu
IHNvbWUgbmV3IHRyaWNrcy4gVGhpcyBkb2N1bWVudAord2lsbCBzaG93IHlvdSBtb3JlIGFzc2Vy
dGlvbnMgYXMgd2VsbCBhcyBob3cgdG8gY29uc3RydWN0IGNvbXBsZXgKK2ZhaWx1cmUgbWVzc2Fn
ZXMsIHByb3BhZ2F0ZSBmYXRhbCBmYWlsdXJlcywgcmV1c2UgYW5kIHNwZWVkIHVwIHlvdXIKK3Rl
c3QgZml4dHVyZXMsIGFuZCB1c2UgdmFyaW91cyBmbGFncyB3aXRoIHlvdXIgdGVzdHMuCisKKyMg
TW9yZSBBc3NlcnRpb25zICMKKworVGhpcyBzZWN0aW9uIGNvdmVycyBzb21lIGxlc3MgZnJlcXVl
bnRseSB1c2VkLCBidXQgc3RpbGwgc2lnbmlmaWNhbnQsCithc3NlcnRpb25zLgorCisjIyBFeHBs
aWNpdCBTdWNjZXNzIGFuZCBGYWlsdXJlICMjCisKK1RoZXNlIHRocmVlIGFzc2VydGlvbnMgZG8g
bm90IGFjdHVhbGx5IHRlc3QgYSB2YWx1ZSBvciBleHByZXNzaW9uLiBJbnN0ZWFkLAordGhleSBn
ZW5lcmF0ZSBhIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBkaXJlY3RseS4gTGlrZSB0aGUgbWFjcm9zIHRo
YXQgYWN0dWFsbHkKK3BlcmZvcm0gYSB0ZXN0LCB5b3UgbWF5IHN0cmVhbSBhIGN1c3RvbSBmYWls
dXJlIG1lc3NhZ2UgaW50byB0aGUgdGhlbS4KKworfCBgU1VDQ0VFRCgpO2AgfAorfDotLS0tLS0t
LS0tLS0tfAorCitHZW5lcmF0ZXMgYSBzdWNjZXNzLiBUaGlzIGRvZXMgTk9UIG1ha2UgdGhlIG92
ZXJhbGwgdGVzdCBzdWNjZWVkLiBBIHRlc3QgaXMKK2NvbnNpZGVyZWQgc3VjY2Vzc2Z1bCBvbmx5
IGlmIG5vbmUgb2YgaXRzIGFzc2VydGlvbnMgZmFpbCBkdXJpbmcgaXRzIGV4ZWN1dGlvbi4KKwor
Tm90ZTogYFNVQ0NFRUQoKWAgaXMgcHVyZWx5IGRvY3VtZW50YXJ5IGFuZCBjdXJyZW50bHkgZG9l
c24ndCBnZW5lcmF0ZSBhbnkKK3VzZXItdmlzaWJsZSBvdXRwdXQuIEhvd2V2ZXIsIHdlIG1heSBh
ZGQgYFNVQ0NFRUQoKWAgbWVzc2FnZXMgdG8gR29vZ2xlIFRlc3Qncworb3V0cHV0IGluIHRoZSBm
dXR1cmUuCisKK3wgYEZBSUwoKTtgICB8IGBBRERfRkFJTFVSRSgpO2AgfCBgQUREX0ZBSUxVUkVf
QVQoImBfZmlsZVxfcGF0aF9gIiwgYF9saW5lXF9udW1iZXJfYCk7YCB8Cit8Oi0tLS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfAorCitgRkFJTCgpYCBnZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJl
LCB3aGlsZSBgQUREX0ZBSUxVUkUoKWAgYW5kIGBBRERfRkFJTFVSRV9BVCgpYCBnZW5lcmF0ZSBh
IG5vbmZhdGFsCitmYWlsdXJlLiBUaGVzZSBhcmUgdXNlZnVsIHdoZW4gY29udHJvbCBmbG93LCBy
YXRoZXIgdGhhbiBhIEJvb2xlYW4gZXhwcmVzc2lvbiwKK2RldGVyZW1pbmVzIHRoZSB0ZXN0J3Mg
c3VjY2VzcyBvciBmYWlsdXJlLiBGb3IgZXhhbXBsZSwgeW91IG1pZ2h0IHdhbnQgdG8gd3JpdGUK
K3NvbWV0aGluZyBsaWtlOgorCitgYGAKK3N3aXRjaChleHByZXNzaW9uKSB7CisgIGNhc2UgMTog
Li4uIHNvbWUgY2hlY2tzIC4uLgorICBjYXNlIDI6IC4uLiBzb21lIG90aGVyIGNoZWNrcworICAu
Li4KKyAgZGVmYXVsdDogRkFJTCgpIDw8ICJXZSBzaG91bGRuJ3QgZ2V0IGhlcmUuIjsKK30KK2Bg
YAorCitOb3RlOiB5b3UgY2FuIG9ubHkgdXNlIGBGQUlMKClgIGluIGZ1bmN0aW9ucyB0aGF0IHJl
dHVybiBgdm9pZGAuIFNlZSB0aGUgW0Fzc2VydGlvbiBQbGFjZW1lbnQgc2VjdGlvbl0oI2Fzc2Vy
dGlvbi1wbGFjZW1lbnQpIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCitfQXZhaWxhYmlsaXR5Xzog
TGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgRXhjZXB0aW9uIEFzc2VydGlvbnMgIyMKKworVGhl
c2UgYXJlIGZvciB2ZXJpZnlpbmcgdGhhdCBhIHBpZWNlIG9mIGNvZGUgdGhyb3dzIChvciBkb2Vz
IG5vdAordGhyb3cpIGFuIGV4Y2VwdGlvbiBvZiB0aGUgZ2l2ZW4gdHlwZToKKworfCAqKkZhdGFs
IGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0t
LS0tLXwKK3wgYEFTU0VSVF9USFJPVyhgX3N0YXRlbWVudF8sIF9leGNlcHRpb25cX3R5cGVfYCk7
YCAgfCBgRVhQRUNUX1RIUk9XKGBfc3RhdGVtZW50XywgX2V4Y2VwdGlvblxfdHlwZV9gKTtgICB8
IF9zdGF0ZW1lbnRfIHRocm93cyBhbiBleGNlcHRpb24gb2YgdGhlIGdpdmVuIHR5cGUgIHwKK3wg
YEFTU0VSVF9BTllfVEhST1coYF9zdGF0ZW1lbnRfYCk7YCAgICAgICAgICAgICAgICB8IGBFWFBF
Q1RfQU5ZX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAgfCBfc3RhdGVtZW50
XyB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIGFueSB0eXBlICAgICAgICB8Cit8IGBBU1NFUlRfTk9f
VEhST1coYF9zdGF0ZW1lbnRfYCk7YCAgICAgICAgICAgICAgICAgfCBgRVhQRUNUX05PX1RIUk9X
KGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAgIHwgX3N0YXRlbWVudF8gZG9lc24ndCB0
aHJvdyBhbnkgZXhjZXB0aW9uICAgICAgICAgICAgfAorCitFeGFtcGxlczoKKworYGBgCitBU1NF
UlRfVEhST1coRm9vKDUpLCBiYXJfZXhjZXB0aW9uKTsKKworRVhQRUNUX05PX1RIUk9XKHsKKyAg
aW50IG4gPSA1OworICBCYXIoJm4pOworfSk7CitgYGAKKworX0F2YWlsYWJpbGl0eV86IExpbnV4
LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4xLjAuCisKKyMjIFByZWRpY2F0ZSBBc3Nl
cnRpb25zIGZvciBCZXR0ZXIgRXJyb3IgTWVzc2FnZXMgIyMKKworRXZlbiB0aG91Z2ggR29vZ2xl
IFRlc3QgaGFzIGEgcmljaCBzZXQgb2YgYXNzZXJ0aW9ucywgdGhleSBjYW4gbmV2ZXIgYmUKK2Nv
bXBsZXRlLCBhcyBpdCdzIGltcG9zc2libGUgKG5vciBhIGdvb2QgaWRlYSkgdG8gYW50aWNpcGF0
ZSBhbGwgdGhlIHNjZW5hcmlvcworYSB1c2VyIG1pZ2h0IHJ1biBpbnRvLiBUaGVyZWZvcmUsIHNv
bWV0aW1lcyBhIHVzZXIgaGFzIHRvIHVzZSBgRVhQRUNUX1RSVUUoKWAKK3RvIGNoZWNrIGEgY29t
cGxleCBleHByZXNzaW9uLCBmb3IgbGFjayBvZiBhIGJldHRlciBtYWNyby4gVGhpcyBoYXMgdGhl
IHByb2JsZW0KK29mIG5vdCBzaG93aW5nIHlvdSB0aGUgdmFsdWVzIG9mIHRoZSBwYXJ0cyBvZiB0
aGUgZXhwcmVzc2lvbiwgbWFraW5nIGl0IGhhcmQgdG8KK3VuZGVyc3RhbmQgd2hhdCB3ZW50IHdy
b25nLiBBcyBhIHdvcmthcm91bmQsIHNvbWUgdXNlcnMgY2hvb3NlIHRvIGNvbnN0cnVjdCB0aGUK
K2ZhaWx1cmUgbWVzc2FnZSBieSB0aGVtc2VsdmVzLCBzdHJlYW1pbmcgaXQgaW50byBgRVhQRUNU
X1RSVUUoKWAuIEhvd2V2ZXIsIHRoaXMKK2lzIGF3a3dhcmQgZXNwZWNpYWxseSB3aGVuIHRoZSBl
eHByZXNzaW9uIGhhcyBzaWRlLWVmZmVjdHMgb3IgaXMgZXhwZW5zaXZlIHRvCitldmFsdWF0ZS4K
KworR29vZ2xlIFRlc3QgZ2l2ZXMgeW91IHRocmVlIGRpZmZlcmVudCBvcHRpb25zIHRvIHNvbHZl
IHRoaXMgcHJvYmxlbToKKworIyMjIFVzaW5nIGFuIEV4aXN0aW5nIEJvb2xlYW4gRnVuY3Rpb24g
IyMjCisKK0lmIHlvdSBhbHJlYWR5IGhhdmUgYSBmdW5jdGlvbiBvciBhIGZ1bmN0b3IgdGhhdCBy
ZXR1cm5zIGBib29sYCAob3IgYSB0eXBlCit0aGF0IGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRl
ZCB0byBgYm9vbGApLCB5b3UgY2FuIHVzZSBpdCBpbiBhIF9wcmVkaWNhdGUKK2Fzc2VydGlvbl8g
dG8gZ2V0IHRoZSBmdW5jdGlvbiBhcmd1bWVudHMgcHJpbnRlZCBmb3IgZnJlZToKKworfCAqKkZh
dGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8
Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLXwKK3wgYEFTU0VSVF9QUkVEMShgX3ByZWQxLCB2YWwxX2ApO2AgICAgICAgfCBgRVhQ
RUNUX1BSRUQxKGBfcHJlZDEsIHZhbDFfYCk7YCB8IF9wcmVkMSh2YWwxKV8gcmV0dXJucyB0cnVl
IHwKK3wgYEFTU0VSVF9QUkVEMihgX3ByZWQyLCB2YWwxLCB2YWwyX2ApO2AgfCBgRVhQRUNUX1BS
RUQyKGBfcHJlZDIsIHZhbDEsIHZhbDJfYCk7YCB8ICBfcHJlZDIodmFsMSwgdmFsMilfIHJldHVy
bnMgdHJ1ZSB8Cit8ICAuLi4gICAgICAgICAgICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAg
IHwgLi4uICAgICAgICAgIHwKKworSW4gdGhlIGFib3ZlLCBfcHJlZG5fIGlzIGFuIF9uXy1hcnkg
cHJlZGljYXRlIGZ1bmN0aW9uIG9yIGZ1bmN0b3IsIHdoZXJlCitfdmFsMV8sIF92YWwyXywgLi4u
LCBhbmQgX3ZhbG5fIGFyZSBpdHMgYXJndW1lbnRzLiBUaGUgYXNzZXJ0aW9uIHN1Y2NlZWRzCitp
ZiB0aGUgcHJlZGljYXRlIHJldHVybnMgYHRydWVgIHdoZW4gYXBwbGllZCB0byB0aGUgZ2l2ZW4g
YXJndW1lbnRzLCBhbmQgZmFpbHMKK290aGVyd2lzZS4gV2hlbiB0aGUgYXNzZXJ0aW9uIGZhaWxz
LCBpdCBwcmludHMgdGhlIHZhbHVlIG9mIGVhY2ggYXJndW1lbnQuIEluCitlaXRoZXIgY2FzZSwg
dGhlIGFyZ3VtZW50cyBhcmUgZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4KKworSGVyZSdzIGFuIGV4
YW1wbGUuIEdpdmVuCisKK2BgYAorLy8gUmV0dXJucyB0cnVlIGlmZiBtIGFuZCBuIGhhdmUgbm8g
Y29tbW9uIGRpdmlzb3JzIGV4Y2VwdCAxLgorYm9vbCBNdXR1YWxseVByaW1lKGludCBtLCBpbnQg
bikgeyAuLi4gfQorY29uc3QgaW50IGEgPSAzOworY29uc3QgaW50IGIgPSA0OworY29uc3QgaW50
IGMgPSAxMDsKK2BgYAorCit0aGUgYXNzZXJ0aW9uIGBFWFBFQ1RfUFJFRDIoTXV0dWFsbHlQcmlt
ZSwgYSwgYik7YCB3aWxsIHN1Y2NlZWQsIHdoaWxlIHRoZQorYXNzZXJ0aW9uIGBFWFBFQ1RfUFJF
RDIoTXV0dWFsbHlQcmltZSwgYiwgYyk7YCB3aWxsIGZhaWwgd2l0aCB0aGUgbWVzc2FnZQorCis8
cHJlPgorIU11dHVhbGx5UHJpbWUoYiwgYykgaXMgZmFsc2UsIHdoZXJlPGJyPgorYiBpcyA0PGJy
PgorYyBpcyAxMDxicj4KKzwvcHJlPgorCisqKk5vdGVzOioqCisKKyAgMS4gSWYgeW91IHNlZSBh
IGNvbXBpbGVyIGVycm9yICJubyBtYXRjaGluZyBmdW5jdGlvbiB0byBjYWxsIiB3aGVuIHVzaW5n
IGBBU1NFUlRfUFJFRCpgIG9yIGBFWFBFQ1RfUFJFRCpgLCBwbGVhc2Ugc2VlIFt0aGlzIEZBUV0o
RkFRLm1kI3RoZS1jb21waWxlci1jb21wbGFpbnMtbm8tbWF0Y2hpbmctZnVuY3Rpb24tdG8tY2Fs
bC13aGVuLWktdXNlLWFzc2VydF9wcmVkbi1ob3ctZG8taS1maXgtaXQpIGZvciBob3cgdG8gcmVz
b2x2ZSBpdC4KKyAgMS4gQ3VycmVudGx5IHdlIG9ubHkgcHJvdmlkZSBwcmVkaWNhdGUgYXNzZXJ0
aW9ucyBvZiBhcml0eSA8PSA1LiBJZiB5b3UgbmVlZCBhIGhpZ2hlci1hcml0eSBhc3NlcnRpb24s
IGxldCB1cyBrbm93LgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYworCisj
IyMgVXNpbmcgYSBGdW5jdGlvbiBUaGF0IFJldHVybnMgYW4gQXNzZXJ0aW9uUmVzdWx0ICMjIwor
CitXaGlsZSBgRVhQRUNUX1BSRUQqKClgIGFuZCBmcmllbmRzIGFyZSBoYW5keSBmb3IgYSBxdWlj
ayBqb2IsIHRoZQorc3ludGF4IGlzIG5vdCBzYXRpc2ZhY3Rvcnk6IHlvdSBoYXZlIHRvIHVzZSBk
aWZmZXJlbnQgbWFjcm9zIGZvcgorZGlmZmVyZW50IGFyaXRpZXMsIGFuZCBpdCBmZWVscyBtb3Jl
IGxpa2UgTGlzcCB0aGFuIEMrKy4gIFRoZQorYDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0YCBj
bGFzcyBzb2x2ZXMgdGhpcyBwcm9ibGVtLgorCitBbiBgQXNzZXJ0aW9uUmVzdWx0YCBvYmplY3Qg
cmVwcmVzZW50cyB0aGUgcmVzdWx0IG9mIGFuIGFzc2VydGlvbgorKHdoZXRoZXIgaXQncyBhIHN1
Y2Nlc3Mgb3IgYSBmYWlsdXJlLCBhbmQgYW4gYXNzb2NpYXRlZCBtZXNzYWdlKS4gIFlvdQorY2Fu
IGNyZWF0ZSBhbiBgQXNzZXJ0aW9uUmVzdWx0YCB1c2luZyBvbmUgb2YgdGhlc2UgZmFjdG9yeQor
ZnVuY3Rpb25zOgorCitgYGAKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworLy8gUmV0dXJucyBhbiBB
c3NlcnRpb25SZXN1bHQgb2JqZWN0IHRvIGluZGljYXRlIHRoYXQgYW4gYXNzZXJ0aW9uIGhhcwor
Ly8gc3VjY2VlZGVkLgorQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvblN1Y2Nlc3MoKTsKKworLy8g
UmV0dXJucyBhbiBBc3NlcnRpb25SZXN1bHQgb2JqZWN0IHRvIGluZGljYXRlIHRoYXQgYW4gYXNz
ZXJ0aW9uIGhhcworLy8gZmFpbGVkLgorQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvbkZhaWx1cmUo
KTsKKworfQorYGBgCisKK1lvdSBjYW4gdGhlbiB1c2UgdGhlIGA8PGAgb3BlcmF0b3IgdG8gc3Ry
ZWFtIG1lc3NhZ2VzIHRvIHRoZQorYEFzc2VydGlvblJlc3VsdGAgb2JqZWN0LgorCitUbyBwcm92
aWRlIG1vcmUgcmVhZGFibGUgbWVzc2FnZXMgaW4gQm9vbGVhbiBhc3NlcnRpb25zCisoZS5nLiBg
RVhQRUNUX1RSVUUoKWApLCB3cml0ZSBhIHByZWRpY2F0ZSBmdW5jdGlvbiB0aGF0IHJldHVybnMK
K2BBc3NlcnRpb25SZXN1bHRgIGluc3RlYWQgb2YgYGJvb2xgLiBGb3IgZXhhbXBsZSwgaWYgeW91
IGRlZmluZQorYElzRXZlbigpYCBhczoKKworYGBgCis6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3Vs
dCBJc0V2ZW4oaW50IG4pIHsKKyAgaWYgKChuICUgMikgPT0gMCkKKyAgICByZXR1cm4gOjp0ZXN0
aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CisgIGVsc2UKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjpB
c3NlcnRpb25GYWlsdXJlKCkgPDwgbiA8PCAiIGlzIG9kZCI7Cit9CitgYGAKKworaW5zdGVhZCBv
ZjoKKworYGBgCitib29sIElzRXZlbihpbnQgbikgeworICByZXR1cm4gKG4gJSAyKSA9PSAwOwor
fQorYGBgCisKK3RoZSBmYWlsZWQgYXNzZXJ0aW9uIGBFWFBFQ1RfVFJVRShJc0V2ZW4oRmliKDQp
KSlgIHdpbGwgcHJpbnQ6CisKKzxwcmU+CitWYWx1ZSBvZjogSXNFdmVuKEZpYig0KSk8YnI+CitB
Y3R1YWw6IGZhbHNlICgqMyBpcyBvZGQqKTxicj4KK0V4cGVjdGVkOiB0cnVlPGJyPgorPC9wcmU+
CisKK2luc3RlYWQgb2YgYSBtb3JlIG9wYXF1ZQorCis8cHJlPgorVmFsdWUgb2Y6IElzRXZlbihG
aWIoNCkpPGJyPgorQWN0dWFsOiBmYWxzZTxicj4KK0V4cGVjdGVkOiB0cnVlPGJyPgorPC9wcmU+
CisKK0lmIHlvdSB3YW50IGluZm9ybWF0aXZlIG1lc3NhZ2VzIGluIGBFWFBFQ1RfRkFMU0VgIGFu
ZCBgQVNTRVJUX0ZBTFNFYAorYXMgd2VsbCwgYW5kIGFyZSBmaW5lIHdpdGggbWFraW5nIHRoZSBw
cmVkaWNhdGUgc2xvd2VyIGluIHRoZSBzdWNjZXNzCitjYXNlLCB5b3UgY2FuIHN1cHBseSBhIHN1
Y2Nlc3MgbWVzc2FnZToKKworYGBgCis6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBJc0V2ZW4o
aW50IG4pIHsKKyAgaWYgKChuICUgMikgPT0gMCkKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3Nl
cnRpb25TdWNjZXNzKCkgPDwgbiA8PCAiIGlzIGV2ZW4iOworICBlbHNlCisgICAgcmV0dXJuIDo6
dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG4gPDwgIiBpcyBvZGQiOworfQorYGBgCisK
K1RoZW4gdGhlIHN0YXRlbWVudCBgRVhQRUNUX0ZBTFNFKElzRXZlbihGaWIoNikpKWAgd2lsbCBw
cmludAorCis8cHJlPgorVmFsdWUgb2Y6IElzRXZlbihGaWIoNikpPGJyPgorQWN0dWFsOiB0cnVl
ICg4IGlzIGV2ZW4pPGJyPgorRXhwZWN0ZWQ6IGZhbHNlPGJyPgorPC9wcmU+CisKK19BdmFpbGFi
aWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuNC4xLgorCisjIyMg
VXNpbmcgYSBQcmVkaWNhdGUtRm9ybWF0dGVyICMjIworCitJZiB5b3UgZmluZCB0aGUgZGVmYXVs
dCBtZXNzYWdlIGdlbmVyYXRlZCBieSBgKEFTU0VSVHxFWFBFQ1QpX1BSRUQqYCBhbmQKK2AoQVNT
RVJUfEVYUEVDVClfKFRSVUV8RkFMU0UpYCB1bnNhdGlzZmFjdG9yeSwgb3Igc29tZSBhcmd1bWVu
dHMgdG8geW91cgorcHJlZGljYXRlIGRvIG5vdCBzdXBwb3J0IHN0cmVhbWluZyB0byBgb3N0cmVh
bWAsIHlvdSBjYW4gaW5zdGVhZCB1c2UgdGhlCitmb2xsb3dpbmcgX3ByZWRpY2F0ZS1mb3JtYXR0
ZXIgYXNzZXJ0aW9uc18gdG8gX2Z1bGx5XyBjdXN0b21pemUgaG93IHRoZQorbWVzc2FnZSBpcyBm
b3JtYXR0ZWQ6CisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9u
KiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfUFJFRF9GT1JNQVQxKGBfcHJl
ZFxfZm9ybWF0MSwgdmFsMV9gKTtgICAgICAgICB8IGBFWFBFQ1RfUFJFRF9GT1JNQVQxKGBfcHJl
ZFxfZm9ybWF0MSwgdmFsMV9gKTtgIHwgX3ByZWRcX2Zvcm1hdDEodmFsMSlfIGlzIHN1Y2Nlc3Nm
dWwgfAorfCBgQVNTRVJUX1BSRURfRk9STUFUMihgX3ByZWRcX2Zvcm1hdDIsIHZhbDEsIHZhbDJf
YCk7YCB8IGBFWFBFQ1RfUFJFRF9GT1JNQVQyKGBfcHJlZFxfZm9ybWF0MiwgdmFsMSwgdmFsMl9g
KTtgIHwgX3ByZWRcX2Zvcm1hdDIodmFsMSwgdmFsMilfIGlzIHN1Y2Nlc3NmdWwgfAorfCBgLi4u
YCAgICAgICAgICAgICAgIHwgYC4uLmAgICAgICAgICAgICAgICAgICB8IGAuLi5gICAgICAgICB8
CisKK1RoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBhbmQgdGhlIHByZXZpb3VzIHR3byBncm91
cHMgb2YgbWFjcm9zIGlzIHRoYXQgaW5zdGVhZCBvZgorYSBwcmVkaWNhdGUsIGAoQVNTRVJUfEVY
UEVDVClfUFJFRF9GT1JNQVQqYCB0YWtlIGEgX3ByZWRpY2F0ZS1mb3JtYXR0ZXJfCisoX3ByZWRc
X2Zvcm1hdG5fKSwgd2hpY2ggaXMgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHdpdGggdGhlIHNpZ25h
dHVyZToKKworYDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRpY2F0ZUZvcm1hdHRlcm4o
Y29uc3QgY2hhciogYF9leHByMV9gLCBjb25zdCBjaGFyKiBgX2V4cHIyX2AsIC4uLiBjb25zdCBj
aGFyKiBgX2V4cHJuX2AsIFQxIGBfdmFsMV9gLCBUMiBgX3ZhbDJfYCwgLi4uIFRuIGBfdmFsbl9g
KTtgCisKK3doZXJlIF92YWwxXywgX3ZhbDJfLCAuLi4sIGFuZCBfdmFsbl8gYXJlIHRoZSB2YWx1
ZXMgb2YgdGhlIHByZWRpY2F0ZQorYXJndW1lbnRzLCBhbmQgX2V4cHIxXywgX2V4cHIyXywgLi4u
LCBhbmQgX2V4cHJuXyBhcmUgdGhlIGNvcnJlc3BvbmRpbmcKK2V4cHJlc3Npb25zIGFzIHRoZXkg
YXBwZWFyIGluIHRoZSBzb3VyY2UgY29kZS4gVGhlIHR5cGVzIGBUMWAsIGBUMmAsIC4uLiwgYW5k
CitgVG5gIGNhbiBiZSBlaXRoZXIgdmFsdWUgdHlwZXMgb3IgcmVmZXJlbmNlIHR5cGVzLiBGb3Ig
ZXhhbXBsZSwgaWYgYW4KK2FyZ3VtZW50IGhhcyB0eXBlIGBGb29gLCB5b3UgY2FuIGRlY2xhcmUg
aXQgYXMgZWl0aGVyIGBGb29gIG9yIGBjb25zdCBGb28mYCwKK3doaWNoZXZlciBpcyBhcHByb3By
aWF0ZS4KKworQSBwcmVkaWNhdGUtZm9ybWF0dGVyIHJldHVybnMgYSBgOjp0ZXN0aW5nOjpBc3Nl
cnRpb25SZXN1bHRgIG9iamVjdCB0byBpbmRpY2F0ZQord2hldGhlciB0aGUgYXNzZXJ0aW9uIGhh
cyBzdWNjZWVkZWQgb3Igbm90LiBUaGUgb25seSB3YXkgdG8gY3JlYXRlIHN1Y2ggYW4KK29iamVj
dCBpcyB0byBjYWxsIG9uZSBvZiB0aGVzZSBmYWN0b3J5IGZ1bmN0aW9uczoKKworQXMgYW4gZXhh
bXBsZSwgbGV0J3MgaW1wcm92ZSB0aGUgZmFpbHVyZSBtZXNzYWdlIGluIHRoZSBwcmV2aW91cyBl
eGFtcGxlLCB3aGljaCB1c2VzIGBFWFBFQ1RfUFJFRDIoKWA6CisKK2BgYAorLy8gUmV0dXJucyB0
aGUgc21hbGxlc3QgcHJpbWUgY29tbW9uIGRpdmlzb3Igb2YgbSBhbmQgbiwKKy8vIG9yIDEgd2hl
biBtIGFuZCBuIGFyZSBtdXR1YWxseSBwcmltZS4KK2ludCBTbWFsbGVzdFByaW1lQ29tbW9uRGl2
aXNvcihpbnQgbSwgaW50IG4pIHsgLi4uIH0KKworLy8gQSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZv
ciBhc3NlcnRpbmcgdGhhdCB0d28gaW50ZWdlcnMgYXJlIG11dHVhbGx5IHByaW1lLgorOjp0ZXN0
aW5nOjpBc3NlcnRpb25SZXN1bHQgQXNzZXJ0TXV0dWFsbHlQcmltZShjb25zdCBjaGFyKiBtX2V4
cHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIG5fZXhwciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IG0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBuKSB7CisgIGlmIChNdXR1YWxseVByaW1lKG0sIG4pKQorICAgIHJldHVybiA6OnRl
c3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKKworICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRp
b25GYWlsdXJlKCkKKyAgICAgIDw8IG1fZXhwciA8PCAiIGFuZCAiIDw8IG5fZXhwciA8PCAiICgi
IDw8IG0gPDwgIiBhbmQgIiA8PCBuCisgICAgICA8PCAiKSBhcmUgbm90IG11dHVhbGx5IHByaW1l
LCAiIDw8ICJhcyB0aGV5IGhhdmUgYSBjb21tb24gZGl2aXNvciAiCisgICAgICA8PCBTbWFsbGVz
dFByaW1lQ29tbW9uRGl2aXNvcihtLCBuKTsKK30KK2BgYAorCitXaXRoIHRoaXMgcHJlZGljYXRl
LWZvcm1hdHRlciwgd2UgY2FuIHVzZQorCitgYGAKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoQXNzZXJ0
TXV0dWFsbHlQcmltZSwgYiwgYyk7CitgYGAKKwordG8gZ2VuZXJhdGUgdGhlIG1lc3NhZ2UKKwor
PHByZT4KK2IgYW5kIGMgKDQgYW5kIDEwKSBhcmUgbm90IG11dHVhbGx5IHByaW1lLCBhcyB0aGV5
IGhhdmUgYSBjb21tb24gZGl2aXNvciAyLjxicj4KKzwvcHJlPgorCitBcyB5b3UgbWF5IGhhdmUg
cmVhbGl6ZWQsIG1hbnkgb2YgdGhlIGFzc2VydGlvbnMgd2UgaW50cm9kdWNlZCBlYXJsaWVyIGFy
ZQorc3BlY2lhbCBjYXNlcyBvZiBgKEVYUEVDVHxBU1NFUlQpX1BSRURfRk9STUFUKmAuIEluIGZh
Y3QsIG1vc3Qgb2YgdGhlbSBhcmUKK2luZGVlZCBkZWZpbmVkIHVzaW5nIGAoRVhQRUNUfEFTU0VS
VClfUFJFRF9GT1JNQVQqYC4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKKworIyMgRmxvYXRpbmctUG9pbnQgQ29tcGFyaXNvbiAjIworCitDb21wYXJpbmcgZmxvYXRp
bmctcG9pbnQgbnVtYmVycyBpcyB0cmlja3kuIER1ZSB0byByb3VuZC1vZmYgZXJyb3JzLCBpdCBp
cwordmVyeSB1bmxpa2VseSB0aGF0IHR3byBmbG9hdGluZy1wb2ludHMgd2lsbCBtYXRjaCBleGFj
dGx5LiBUaGVyZWZvcmUsCitgQVNTRVJUX0VRYCAncyBuYWl2ZSBjb21wYXJpc29uIHVzdWFsbHkg
ZG9lc24ndCB3b3JrLiBBbmQgc2luY2UgZmxvYXRpbmctcG9pbnRzCitjYW4gaGF2ZSBhIHdpZGUg
dmFsdWUgcmFuZ2UsIG5vIHNpbmdsZSBmaXhlZCBlcnJvciBib3VuZCB3b3Jrcy4gSXQncyBiZXR0
ZXIgdG8KK2NvbXBhcmUgYnkgYSBmaXhlZCByZWxhdGl2ZSBlcnJvciBib3VuZCwgZXhjZXB0IGZv
ciB2YWx1ZXMgY2xvc2UgdG8gMCBkdWUgdG8KK3RoZSBsb3NzIG9mIHByZWNpc2lvbiB0aGVyZS4K
KworSW4gZ2VuZXJhbCwgZm9yIGZsb2F0aW5nLXBvaW50IGNvbXBhcmlzb24gdG8gbWFrZSBzZW5z
ZSwgdGhlIHVzZXIgbmVlZHMgdG8KK2NhcmVmdWxseSBjaG9vc2UgdGhlIGVycm9yIGJvdW5kLiBJ
ZiB0aGV5IGRvbid0IHdhbnQgb3IgY2FyZSB0bywgY29tcGFyaW5nIGluCit0ZXJtcyBvZiBVbml0
cyBpbiB0aGUgTGFzdCBQbGFjZSAoVUxQcykgaXMgYSBnb29kIGRlZmF1bHQsIGFuZCBHb29nbGUg
VGVzdAorcHJvdmlkZXMgYXNzZXJ0aW9ucyB0byBkbyB0aGlzLiBGdWxsIGRldGFpbHMgYWJvdXQg
VUxQcyBhcmUgcXVpdGUgbG9uZzsgaWYgeW91Cit3YW50IHRvIGxlYXJuIG1vcmUsIHNlZQorW3Ro
aXMgYXJ0aWNsZSBvbiBmbG9hdCBjb21wYXJpc29uXShodHRwOi8vd3d3LmN5Z251cy1zb2Z0d2Fy
ZS5jb20vcGFwZXJzL2NvbXBhcmluZ2Zsb2F0cy9jb21wYXJpbmdmbG9hdHMuaHRtKS4KKworIyMj
IEZsb2F0aW5nLVBvaW50IE1hY3JvcyAjIyMKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipO
b25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9G
TE9BVF9FUShgX3ZhbDEsIHZhbDJfYCk7YCAgfCBgRVhQRUNUX0ZMT0FUX0VRKGBfdmFsMSwgdmFs
Ml9gKTtgIHwgdGhlIHR3byBgZmxvYXRgIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsIHwKK3wgYEFT
U0VSVF9ET1VCTEVfRVEoYF92YWwxLCB2YWwyX2ApO2AgfCBgRVhQRUNUX0RPVUJMRV9FUShgX3Zh
bDEsIHZhbDJfYCk7YCB8IHRoZSB0d28gYGRvdWJsZWAgdmFsdWVzIGFyZSBhbG1vc3QgZXF1YWwg
fAorCitCeSAiYWxtb3N0IGVxdWFsIiwgd2UgbWVhbiB0aGUgdHdvIHZhbHVlcyBhcmUgd2l0aGlu
IDQgVUxQJ3MgZnJvbSBlYWNoCitvdGhlci4KKworVGhlIGZvbGxvd2luZyBhc3NlcnRpb25zIGFs
bG93IHlvdSB0byBjaG9vc2UgdGhlIGFjY2VwdGFibGUgZXJyb3IgYm91bmQ6CisKK3wgKipGYXRh
bCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAor
fDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS18Cit8IGBBU1NFUlRfTkVBUihgX3ZhbDEsIHZhbDIsIGFic1xfZXJyb3JfYCk7YCB8IGBF
WFBFQ1RfTkVBUmBfKHZhbDEsIHZhbDIsIGFic1xfZXJyb3JfYCk7YCB8IHRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gX3ZhbDFfIGFuZCBfdmFsMl8gZG9lc24ndCBleGNlZWQgdGhlIGdpdmVuIGFic29s
dXRlIGVycm9yIHwKKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMj
IyBGbG9hdGluZy1Qb2ludCBQcmVkaWNhdGUtRm9ybWF0IEZ1bmN0aW9ucyAjIyMKKworU29tZSBm
bG9hdGluZy1wb2ludCBvcGVyYXRpb25zIGFyZSB1c2VmdWwsIGJ1dCBub3QgdGhhdCBvZnRlbiB1
c2VkLiBJbiBvcmRlcgordG8gYXZvaWQgYW4gZXhwbG9zaW9uIG9mIG5ldyBtYWNyb3MsIHdlIHBy
b3ZpZGUgdGhlbSBhcyBwcmVkaWNhdGUtZm9ybWF0CitmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNl
ZCBpbiBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3JvcyAoZS5nLgorYEVYUEVDVF9QUkVEX0ZPUk1B
VDJgLCBldGMpLgorCitgYGAKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpGbG9hdExF
LCB2YWwxLCB2YWwyKTsKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpEb3VibGVMRSwg
dmFsMSwgdmFsMik7CitgYGAKKworVmVyaWZpZXMgdGhhdCBfdmFsMV8gaXMgbGVzcyB0aGFuLCBv
ciBhbG1vc3QgZXF1YWwgdG8sIF92YWwyXy4gWW91IGNhbgorcmVwbGFjZSBgRVhQRUNUX1BSRURf
Rk9STUFUMmAgaW4gdGhlIGFib3ZlIHRhYmxlIHdpdGggYEFTU0VSVF9QUkVEX0ZPUk1BVDJgLgor
CitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgV2luZG93cyBIUkVT
VUxUIGFzc2VydGlvbnMgIyMKKworVGhlc2UgYXNzZXJ0aW9ucyB0ZXN0IGZvciBgSFJFU1VMVGAg
c3VjY2VzcyBvciBmYWlsdXJlLgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFs
IGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX0hSRVNVTFRf
U1VDQ0VFREVEKGBfZXhwcmVzc2lvbl9gKTtgIHwgYEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChg
X2V4cHJlc3Npb25fYCk7YCB8IF9leHByZXNzaW9uXyBpcyBhIHN1Y2Nlc3MgYEhSRVNVTFRgIHwK
K3wgYEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChgX2V4cHJlc3Npb25fYCk7YCAgICB8IGBFWFBFQ1Rf
SFJFU1VMVF9GQUlMRUQoYF9leHByZXNzaW9uX2ApO2AgICAgfCBfZXhwcmVzc2lvbl8gaXMgYSBm
YWlsdXJlIGBIUkVTVUxUYCB8CisKK1RoZSBnZW5lcmF0ZWQgb3V0cHV0IGNvbnRhaW5zIHRoZSBo
dW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlCithc3NvY2lhdGVkIHdpdGggdGhlIGBIUkVTVUxU
YCBjb2RlIHJldHVybmVkIGJ5IF9leHByZXNzaW9uXy4KKworWW91IG1pZ2h0IHVzZSB0aGVtIGxp
a2UgdGhpczoKKworYGBgCitDQ29tUHRyIHNoZWxsOworQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVE
KHNoZWxsLkNvQ3JlYXRlSW5zdGFuY2UoTCJTaGVsbC5BcHBsaWNhdGlvbiIpKTsKK0NDb21WYXJp
YW50IGVtcHR5OworQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKHNoZWxsLT5TaGVsbEV4ZWN1dGUo
Q0NvbUJTVFIodXJsKSwgZW1wdHksIGVtcHR5LCBlbXB0eSwgZW1wdHkpKTsKK2BgYAorCitfQXZh
aWxhYmlsaXR5XzogV2luZG93cy4KKworIyMgVHlwZSBBc3NlcnRpb25zICMjCisKK1lvdSBjYW4g
Y2FsbCB0aGUgZnVuY3Rpb24KK2BgYAorOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8VDEs
IFQyPigpOworYGBgCit0byBhc3NlcnQgdGhhdCB0eXBlcyBgVDFgIGFuZCBgVDJgIGFyZSB0aGUg
c2FtZS4gIFRoZSBmdW5jdGlvbiBkb2VzCitub3RoaW5nIGlmIHRoZSBhc3NlcnRpb24gaXMgc2F0
aXNmaWVkLiAgSWYgdGhlIHR5cGVzIGFyZSBkaWZmZXJlbnQsCit0aGUgZnVuY3Rpb24gY2FsbCB3
aWxsIGZhaWwgdG8gY29tcGlsZSwgYW5kIHRoZSBjb21waWxlciBlcnJvciBtZXNzYWdlCit3aWxs
IGxpa2VseSAoZGVwZW5kaW5nIG9uIHRoZSBjb21waWxlcikgc2hvdyB5b3UgdGhlIGFjdHVhbCB2
YWx1ZXMgb2YKK2BUMWAgYW5kIGBUMmAuICBUaGlzIGlzIG1haW5seSB1c2VmdWwgaW5zaWRlIHRl
bXBsYXRlIGNvZGUuCisKK19DYXZlYXQ6XyBXaGVuIHVzZWQgaW5zaWRlIGEgbWVtYmVyIGZ1bmN0
aW9uIG9mIGEgY2xhc3MgdGVtcGxhdGUgb3IgYQorZnVuY3Rpb24gdGVtcGxhdGUsIGBTdGF0aWNB
c3NlcnRUeXBlRXE8VDEsIFQyPigpYCBpcyBlZmZlY3RpdmUgX29ubHkgaWZfCit0aGUgZnVuY3Rp
b24gaXMgaW5zdGFudGlhdGVkLiAgRm9yIGV4YW1wbGUsIGdpdmVuOgorYGBgCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MgRm9vIHsKKyBwdWJsaWM6CisgIHZvaWQgQmFyKCkgeyA6OnRlc3Rp
bmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIFQ+KCk7IH0KK307CitgYGAKK3RoZSBjb2RlOgor
YGBgCit2b2lkIFRlc3QxKCkgeyBGb288Ym9vbD4gZm9vOyB9CitgYGAKK3dpbGwgX25vdF8gZ2Vu
ZXJhdGUgYSBjb21waWxlciBlcnJvciwgYXMgYEZvbzxib29sPjo6QmFyKClgIGlzIG5ldmVyCith
Y3R1YWxseSBpbnN0YW50aWF0ZWQuICBJbnN0ZWFkLCB5b3UgbmVlZDoKK2BgYAordm9pZCBUZXN0
MigpIHsgRm9vPGJvb2w+IGZvbzsgZm9vLkJhcigpOyB9CitgYGAKK3RvIGNhdXNlIGEgY29tcGls
ZXIgZXJyb3IuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2
ZXJzaW9uIDEuMy4wLgorCisjIyBBc3NlcnRpb24gUGxhY2VtZW50ICMjCisKK1lvdSBjYW4gdXNl
IGFzc2VydGlvbnMgaW4gYW55IEMrKyBmdW5jdGlvbi4gSW4gcGFydGljdWxhciwgaXQgZG9lc24n
dAoraGF2ZSB0byBiZSBhIG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLiBUaGUgb25l
IGNvbnN0cmFpbnQgaXMKK3RoYXQgYXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIGEgZmF0YWwgZmFp
bHVyZSAoYEZBSUwqYCBhbmQgYEFTU0VSVF8qYCkKK2NhbiBvbmx5IGJlIHVzZWQgaW4gdm9pZC1y
ZXR1cm5pbmcgZnVuY3Rpb25zLiBUaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2YKK0dvb2dsZSBUZXN0
IG5vdCB1c2luZyBleGNlcHRpb25zLiBCeSBwbGFjaW5nIGl0IGluIGEgbm9uLXZvaWQgZnVuY3Rp
b24KK3lvdSdsbCBnZXQgYSBjb25mdXNpbmcgY29tcGlsZSBlcnJvciBsaWtlCitgImVycm9yOiB2
b2lkIHZhbHVlIG5vdCBpZ25vcmVkIGFzIGl0IG91Z2h0IHRvIGJlImAuCisKK0lmIHlvdSBuZWVk
IHRvIHVzZSBhc3NlcnRpb25zIGluIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIG5vbi12b2lkLCBv
bmUgb3B0aW9uCitpcyB0byBtYWtlIHRoZSBmdW5jdGlvbiByZXR1cm4gdGhlIHZhbHVlIGluIGFu
IG91dCBwYXJhbWV0ZXIgaW5zdGVhZC4gRm9yCitleGFtcGxlLCB5b3UgY2FuIHJld3JpdGUgYFQy
IEZvbyhUMSB4KWAgdG8gYHZvaWQgRm9vKFQxIHgsIFQyKiByZXN1bHQpYC4gWW91CituZWVkIHRv
IG1ha2Ugc3VyZSB0aGF0IGAqcmVzdWx0YCBjb250YWlucyBzb21lIHNlbnNpYmxlIHZhbHVlIGV2
ZW4gd2hlbiB0aGUKK2Z1bmN0aW9uIHJldHVybnMgcHJlbWF0dXJlbHkuIEFzIHRoZSBmdW5jdGlv
biBub3cgcmV0dXJucyBgdm9pZGAsIHlvdSBjYW4gdXNlCithbnkgYXNzZXJ0aW9uIGluc2lkZSBv
ZiBpdC4KKworSWYgY2hhbmdpbmcgdGhlIGZ1bmN0aW9uJ3MgdHlwZSBpcyBub3QgYW4gb3B0aW9u
LCB5b3Ugc2hvdWxkIGp1c3QgdXNlCithc3NlcnRpb25zIHRoYXQgZ2VuZXJhdGUgbm9uLWZhdGFs
IGZhaWx1cmVzLCBzdWNoIGFzIGBBRERfRkFJTFVSRSpgIGFuZAorYEVYUEVDVF8qYC4KKworX05v
dGVfOiBDb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzIGFyZSBub3QgY29uc2lkZXJlZCB2b2lk
LXJldHVybmluZworZnVuY3Rpb25zLCBhY2NvcmRpbmcgdG8gdGhlIEMrKyBsYW5ndWFnZSBzcGVj
aWZpY2F0aW9uLCBhbmQgc28geW91IG1heSBub3QgdXNlCitmYXRhbCBhc3NlcnRpb25zIGluIHRo
ZW0uIFlvdSdsbCBnZXQgYSBjb21waWxhdGlvbiBlcnJvciBpZiB5b3UgdHJ5LiBBIHNpbXBsZQor
d29ya2Fyb3VuZCBpcyB0byB0cmFuc2ZlciB0aGUgZW50aXJlIGJvZHkgb2YgdGhlIGNvbnN0cnVj
dG9yIG9yIGRlc3RydWN0b3IgdG8gYQorcHJpdmF0ZSB2b2lkLXJldHVybmluZyBtZXRob2QuIEhv
d2V2ZXIsIHlvdSBzaG91bGQgYmUgYXdhcmUgdGhhdCBhIGZhdGFsCithc3NlcnRpb24gZmFpbHVy
ZSBpbiBhIGNvbnN0cnVjdG9yIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUgY3VycmVudCB0ZXN0LCBh
cyB5b3VyCitpbnR1aXRpb24gbWlnaHQgc3VnZ2VzdDsgaXQgbWVyZWx5IHJldHVybnMgZnJvbSB0
aGUgY29uc3RydWN0b3IgZWFybHksIHBvc3NpYmx5CitsZWF2aW5nIHlvdXIgb2JqZWN0IGluIGEg
cGFydGlhbGx5LWNvbnN0cnVjdGVkIHN0YXRlLiBMaWtld2lzZSwgYSBmYXRhbAorYXNzZXJ0aW9u
IGZhaWx1cmUgaW4gYSBkZXN0cnVjdG9yIG1heSBsZWF2ZSB5b3VyIG9iamVjdCBpbiBhCitwYXJ0
aWFsbHktZGVzdHJ1Y3RlZCBzdGF0ZS4gVXNlIGFzc2VydGlvbnMgY2FyZWZ1bGx5IGluIHRoZXNl
IHNpdHVhdGlvbnMhCisKKyMgVGVhY2hpbmcgR29vZ2xlIFRlc3QgSG93IHRvIFByaW50IFlvdXIg
VmFsdWVzICMKKworV2hlbiBhIHRlc3QgYXNzZXJ0aW9uIHN1Y2ggYXMgYEVYUEVDVF9FUWAgZmFp
bHMsIEdvb2dsZSBUZXN0IHByaW50cyB0aGUKK2FyZ3VtZW50IHZhbHVlcyB0byBoZWxwIHlvdSBk
ZWJ1Zy4gIEl0IGRvZXMgdGhpcyB1c2luZyBhCit1c2VyLWV4dGVuc2libGUgdmFsdWUgcHJpbnRl
ci4KKworVGhpcyBwcmludGVyIGtub3dzIGhvdyB0byBwcmludCBidWlsdC1pbiBDKysgdHlwZXMs
IG5hdGl2ZSBhcnJheXMsIFNUTAorY29udGFpbmVycywgYW5kIGFueSB0eXBlIHRoYXQgc3VwcG9y
dHMgdGhlIGA8PGAgb3BlcmF0b3IuICBGb3Igb3RoZXIKK3R5cGVzLCBpdCBwcmludHMgdGhlIHJh
dyBieXRlcyBpbiB0aGUgdmFsdWUgYW5kIGhvcGVzIHRoYXQgeW91IHRoZQordXNlciBjYW4gZmln
dXJlIGl0IG91dC4KKworQXMgbWVudGlvbmVkIGVhcmxpZXIsIHRoZSBwcmludGVyIGlzIF9leHRl
bnNpYmxlXy4gIFRoYXQgbWVhbnMKK3lvdSBjYW4gdGVhY2ggaXQgdG8gZG8gYSBiZXR0ZXIgam9i
IGF0IHByaW50aW5nIHlvdXIgcGFydGljdWxhciB0eXBlCit0aGFuIHRvIGR1bXAgdGhlIGJ5dGVz
LiAgVG8gZG8gdGhhdCwgZGVmaW5lIGA8PGAgZm9yIHlvdXIgdHlwZToKKworYGBgCisjaW5jbHVk
ZSA8aW9zdHJlYW0+CisKK25hbWVzcGFjZSBmb28geworCitjbGFzcyBCYXIgeyAuLi4gfTsgIC8v
IFdlIHdhbnQgR29vZ2xlIFRlc3QgdG8gYmUgYWJsZSB0byBwcmludCBpbnN0YW5jZXMgb2YgdGhp
cy4KKworLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB0aGUgPDwgb3BlcmF0b3IgaXMgZGVmaW5lZCBp
biB0aGUgU0FNRQorLy8gbmFtZXNwYWNlIHRoYXQgZGVmaW5lcyBCYXIuICBDKysncyBsb29rLXVw
IHJ1bGVzIHJlbHkgb24gdGhhdC4KKzo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpv
c3RyZWFtJiBvcywgY29uc3QgQmFyJiBiYXIpIHsKKyAgcmV0dXJuIG9zIDw8IGJhci5EZWJ1Z1N0
cmluZygpOyAgLy8gd2hhdGV2ZXIgbmVlZGVkIHRvIHByaW50IGJhciB0byBvcworfQorCit9ICAv
LyBuYW1lc3BhY2UgZm9vCitgYGAKKworU29tZXRpbWVzLCB0aGlzIG1pZ2h0IG5vdCBiZSBhbiBv
cHRpb246IHlvdXIgdGVhbSBtYXkgY29uc2lkZXIgaXQgYmFkCitzdHlsZSB0byBoYXZlIGEgYDw8
YCBvcGVyYXRvciBmb3IgYEJhcmAsIG9yIGBCYXJgIG1heSBhbHJlYWR5IGhhdmUgYQorYDw8YCBv
cGVyYXRvciB0aGF0IGRvZXNuJ3QgZG8gd2hhdCB5b3Ugd2FudCAoYW5kIHlvdSBjYW5ub3QgY2hh
bmdlCitpdCkuICBJZiBzbywgeW91IGNhbiBpbnN0ZWFkIGRlZmluZSBhIGBQcmludFRvKClgIGZ1
bmN0aW9uIGxpa2UgdGhpczoKKworYGBgCisjaW5jbHVkZSA8aW9zdHJlYW0+CisKK25hbWVzcGFj
ZSBmb28geworCitjbGFzcyBCYXIgeyAuLi4gfTsKKworLy8gSXQncyBpbXBvcnRhbnQgdGhhdCBQ
cmludFRvKCkgaXMgZGVmaW5lZCBpbiB0aGUgU0FNRQorLy8gbmFtZXNwYWNlIHRoYXQgZGVmaW5l
cyBCYXIuICBDKysncyBsb29rLXVwIHJ1bGVzIHJlbHkgb24gdGhhdC4KK3ZvaWQgUHJpbnRUbyhj
b25zdCBCYXImIGJhciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCBiYXIuRGVidWdT
dHJpbmcoKTsgIC8vIHdoYXRldmVyIG5lZWRlZCB0byBwcmludCBiYXIgdG8gb3MKK30KKworfSAg
Ly8gbmFtZXNwYWNlIGZvbworYGBgCisKK0lmIHlvdSBoYXZlIGRlZmluZWQgYm90aCBgPDxgIGFu
ZCBgUHJpbnRUbygpYCwgdGhlIGxhdHRlciB3aWxsIGJlIHVzZWQKK3doZW4gR29vZ2xlIFRlc3Qg
aXMgY29uY2VybmVkLiAgVGhpcyBhbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSBob3cgdGhlIHZhbHVl
CithcHBlYXJzIGluIEdvb2dsZSBUZXN0J3Mgb3V0cHV0IHdpdGhvdXQgYWZmZWN0aW5nIGNvZGUg
dGhhdCByZWxpZXMgb24gdGhlCitiZWhhdmlvciBvZiBpdHMgYDw8YCBvcGVyYXRvci4KKworSWYg
eW91IHdhbnQgdG8gcHJpbnQgYSB2YWx1ZSBgeGAgdXNpbmcgR29vZ2xlIFRlc3QncyB2YWx1ZSBw
cmludGVyCit5b3Vyc2VsZiwganVzdCBjYWxsIGA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoYF94
X2ApYCwgd2hpY2gKK3JldHVybnMgYW4gYHN0ZDo6c3RyaW5nYDoKKworYGBgCit2ZWN0b3I8cGFp
cjxCYXIsIGludD4gPiBiYXJfaW50cyA9IEdldEJhckludFZlY3RvcigpOworCitFWFBFQ1RfVFJV
RShJc0NvcnJlY3RCYXJJbnRWZWN0b3IoYmFyX2ludHMpKQorICAgIDw8ICJiYXJfaW50cyA9ICIg
PDwgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGJhcl9pbnRzKTsKK2BgYAorCisjIERlYXRoIFRl
c3RzICMKKworSW4gbWFueSBhcHBsaWNhdGlvbnMsIHRoZXJlIGFyZSBhc3NlcnRpb25zIHRoYXQg
Y2FuIGNhdXNlIGFwcGxpY2F0aW9uIGZhaWx1cmUKK2lmIGEgY29uZGl0aW9uIGlzIG5vdCBtZXQu
IFRoZXNlIHNhbml0eSBjaGVja3MsIHdoaWNoIGVuc3VyZSB0aGF0IHRoZSBwcm9ncmFtCitpcyBp
biBhIGtub3duIGdvb2Qgc3RhdGUsIGFyZSB0aGVyZSB0byBmYWlsIGF0IHRoZSBlYXJsaWVzdCBw
b3NzaWJsZSB0aW1lIGFmdGVyCitzb21lIHByb2dyYW0gc3RhdGUgaXMgY29ycnVwdGVkLiBJZiB0
aGUgYXNzZXJ0aW9uIGNoZWNrcyB0aGUgd3JvbmcgY29uZGl0aW9uLAordGhlbiB0aGUgcHJvZ3Jh
bSBtYXkgcHJvY2VlZCBpbiBhbiBlcnJvbmVvdXMgc3RhdGUsIHdoaWNoIGNvdWxkIGxlYWQgdG8g
bWVtb3J5Citjb3JydXB0aW9uLCBzZWN1cml0eSBob2xlcywgb3Igd29yc2UuIEhlbmNlIGl0IGlz
IHZpdGFsbHkgaW1wb3J0YW50IHRvIHRlc3QKK3RoYXQgc3VjaCBhc3NlcnRpb24gc3RhdGVtZW50
cyB3b3JrIGFzIGV4cGVjdGVkLgorCitTaW5jZSB0aGVzZSBwcmVjb25kaXRpb24gY2hlY2tzIGNh
dXNlIHRoZSBwcm9jZXNzZXMgdG8gZGllLCB3ZSBjYWxsIHN1Y2ggdGVzdHMKK19kZWF0aCB0ZXN0
c18uIE1vcmUgZ2VuZXJhbGx5LCBhbnkgdGVzdCB0aGF0IGNoZWNrcyB0aGF0IGEgcHJvZ3JhbSB0
ZXJtaW5hdGVzCisoZXhjZXB0IGJ5IHRocm93aW5nIGFuIGV4Y2VwdGlvbikgaW4gYW4gZXhwZWN0
ZWQgZmFzaGlvbiBpcyBhbHNvIGEgZGVhdGggdGVzdC4KKworTm90ZSB0aGF0IGlmIGEgcGllY2Ug
b2YgY29kZSB0aHJvd3MgYW4gZXhjZXB0aW9uLCB3ZSBkb24ndCBjb25zaWRlciBpdCAiZGVhdGgi
Citmb3IgdGhlIHB1cnBvc2Ugb2YgZGVhdGggdGVzdHMsIGFzIHRoZSBjYWxsZXIgb2YgdGhlIGNv
ZGUgY291bGQgY2F0Y2ggdGhlIGV4Y2VwdGlvbgorYW5kIGF2b2lkIHRoZSBjcmFzaC4gSWYgeW91
IHdhbnQgdG8gdmVyaWZ5IGV4Y2VwdGlvbnMgdGhyb3duIGJ5IHlvdXIgY29kZSwKK3NlZSBbRXhj
ZXB0aW9uIEFzc2VydGlvbnNdKCNleGNlcHRpb24tYXNzZXJ0aW9ucykuCisKK0lmIHlvdSB3YW50
IHRvIHRlc3QgYEVYUEVDVF8qKCkvQVNTRVJUXyooKWAgZmFpbHVyZXMgaW4geW91ciB0ZXN0IGNv
ZGUsIHNlZSBbQ2F0Y2hpbmcgRmFpbHVyZXNdKCNjYXRjaGluZy1mYWlsdXJlcykuCisKKyMjIEhv
dyB0byBXcml0ZSBhIERlYXRoIFRlc3QgIyMKKworR29vZ2xlIFRlc3QgaGFzIHRoZSBmb2xsb3dp
bmcgbWFjcm9zIHRvIHN1cHBvcnQgZGVhdGggdGVzdHM6CisKK3wgKipGYXRhbCBhc3NlcnRpb24q
KiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0t
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBB
U1NFUlRfREVBVEgoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApO2AgfCBgRVhQRUNUX0RFQVRIKGBfc3Rh
dGVtZW50LCByZWdleF9gKTtgIHwgX3N0YXRlbWVudF8gY3Jhc2hlcyB3aXRoIHRoZSBnaXZlbiBl
cnJvciB8Cit8IGBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKGBfc3RhdGVtZW50LCByZWdleF9g
KTtgIHwgYEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApO2Ag
fCBpZiBkZWF0aCB0ZXN0cyBhcmUgc3VwcG9ydGVkLCB2ZXJpZmllcyB0aGF0IF9zdGF0ZW1lbnRf
IGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3I7IG90aGVyd2lzZSB2ZXJpZmllcyBub3RoaW5n
IHwKK3wgYEFTU0VSVF9FWElUKGBfc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4X2ApO2AgfCBg
RVhQRUNUX0VYSVQoYF9zdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXhfYCk7YCB8X3N0YXRlbWVu
dF8gZXhpdHMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3IgYW5kIGl0cyBleGl0IGNvZGUgbWF0Y2hlcyBf
cHJlZGljYXRlXyB8CisKK3doZXJlIF9zdGF0ZW1lbnRfIGlzIGEgc3RhdGVtZW50IHRoYXQgaXMg
ZXhwZWN0ZWQgdG8gY2F1c2UgdGhlIHByb2Nlc3MgdG8KK2RpZSwgX3ByZWRpY2F0ZV8gaXMgYSBm
dW5jdGlvbiBvciBmdW5jdGlvbiBvYmplY3QgdGhhdCBldmFsdWF0ZXMgYW4gaW50ZWdlcgorZXhp
dCBzdGF0dXMsIGFuZCBfcmVnZXhfIGlzIGEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgdGhlIHN0
ZGVyciBvdXRwdXQgb2YKK19zdGF0ZW1lbnRfIGlzIGV4cGVjdGVkIHRvIG1hdGNoLiBOb3RlIHRo
YXQgX3N0YXRlbWVudF8gY2FuIGJlIF9hbnkgdmFsaWQKK3N0YXRlbWVudF8gKGluY2x1ZGluZyBf
Y29tcG91bmQgc3RhdGVtZW50XykgYW5kIGRvZXNuJ3QgaGF2ZSB0byBiZSBhbgorZXhwcmVzc2lv
bi4KKworQXMgdXN1YWwsIHRoZSBgQVNTRVJUYCB2YXJpYW50cyBhYm9ydCB0aGUgY3VycmVudCB0
ZXN0IGZ1bmN0aW9uLCB3aGlsZSB0aGUKK2BFWFBFQ1RgIHZhcmlhbnRzIGRvIG5vdC4KKworKipO
b3RlOioqIFdlIHVzZSB0aGUgd29yZCAiY3Jhc2giIGhlcmUgdG8gbWVhbiB0aGF0IHRoZSBwcm9j
ZXNzCit0ZXJtaW5hdGVzIHdpdGggYSBfbm9uLXplcm9fIGV4aXQgc3RhdHVzIGNvZGUuICBUaGVy
ZSBhcmUgdHdvCitwb3NzaWJpbGl0aWVzOiBlaXRoZXIgdGhlIHByb2Nlc3MgaGFzIGNhbGxlZCBg
ZXhpdCgpYCBvciBgX2V4aXQoKWAKK3dpdGggYSBub24temVybyB2YWx1ZSwgb3IgaXQgbWF5IGJl
IGtpbGxlZCBieSBhIHNpZ25hbC4KKworVGhpcyBtZWFucyB0aGF0IGlmIF9zdGF0ZW1lbnRfIHRl
cm1pbmF0ZXMgdGhlIHByb2Nlc3Mgd2l0aCBhIDAgZXhpdAorY29kZSwgaXQgaXMgX25vdF8gY29u
c2lkZXJlZCBhIGNyYXNoIGJ5IGBFWFBFQ1RfREVBVEhgLiAgVXNlCitgRVhQRUNUX0VYSVRgIGlu
c3RlYWQgaWYgdGhpcyBpcyB0aGUgY2FzZSwgb3IgaWYgeW91IHdhbnQgdG8gcmVzdHJpY3QKK3Ro
ZSBleGl0IGNvZGUgbW9yZSBwcmVjaXNlbHkuCisKK0EgcHJlZGljYXRlIGhlcmUgbXVzdCBhY2Nl
cHQgYW4gYGludGAgYW5kIHJldHVybiBhIGBib29sYC4gVGhlIGRlYXRoIHRlc3QKK3N1Y2NlZWRz
IG9ubHkgaWYgdGhlIHByZWRpY2F0ZSByZXR1cm5zIGB0cnVlYC4gR29vZ2xlIFRlc3QgZGVmaW5l
cyBhIGZldworcHJlZGljYXRlcyB0aGF0IGhhbmRsZSB0aGUgbW9zdCBjb21tb24gY2FzZXM6CisK
K2BgYAorOjp0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZShleGl0X2NvZGUpCitgYGAKKworVGhpcyBl
eHByZXNzaW9uIGlzIGB0cnVlYCBpZiB0aGUgcHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHkgd2l0aCB0
aGUgZ2l2ZW4gZXhpdAorY29kZS4KKworYGBgCis6OnRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKHNp
Z25hbF9udW1iZXIpICAvLyBOb3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCitgYGAKKworVGhpcyBl
eHByZXNzaW9uIGlzIGB0cnVlYCBpZiB0aGUgcHJvZ3JhbSB3YXMga2lsbGVkIGJ5IHRoZSBnaXZl
biBzaWduYWwuCisKK1RoZSBgKl9ERUFUSGAgbWFjcm9zIGFyZSBjb252ZW5pZW50IHdyYXBwZXJz
IGZvciBgKl9FWElUYCB0aGF0IHVzZSBhIHByZWRpY2F0ZQordGhhdCB2ZXJpZmllcyB0aGUgcHJv
Y2VzcycgZXhpdCBjb2RlIGlzIG5vbi16ZXJvLgorCitOb3RlIHRoYXQgYSBkZWF0aCB0ZXN0IG9u
bHkgY2FyZXMgYWJvdXQgdGhyZWUgdGhpbmdzOgorCisgIDEuIGRvZXMgX3N0YXRlbWVudF8gYWJv
cnQgb3IgZXhpdCB0aGUgcHJvY2Vzcz8KKyAgMS4gKGluIHRoZSBjYXNlIG9mIGBBU1NFUlRfRVhJ
VGAgYW5kIGBFWFBFQ1RfRVhJVGApIGRvZXMgdGhlIGV4aXQgc3RhdHVzIHNhdGlzZnkgX3ByZWRp
Y2F0ZV8/ICBPciAoaW4gdGhlIGNhc2Ugb2YgYEFTU0VSVF9ERUFUSGAgYW5kIGBFWFBFQ1RfREVB
VEhgKSBpcyB0aGUgZXhpdCBzdGF0dXMgbm9uLXplcm8/ICBBbmQKKyAgMS4gZG9lcyB0aGUgc3Rk
ZXJyIG91dHB1dCBtYXRjaCBfcmVnZXhfPworCitJbiBwYXJ0aWN1bGFyLCBpZiBfc3RhdGVtZW50
XyBnZW5lcmF0ZXMgYW4gYEFTU0VSVF8qYCBvciBgRVhQRUNUXypgIGZhaWx1cmUsIGl0IHdpbGwg
Kipub3QqKiBjYXVzZSB0aGUgZGVhdGggdGVzdCB0byBmYWlsLCBhcyBHb29nbGUgVGVzdCBhc3Nl
cnRpb25zIGRvbid0IGFib3J0IHRoZSBwcm9jZXNzLgorCitUbyB3cml0ZSBhIGRlYXRoIHRlc3Qs
IHNpbXBseSB1c2Ugb25lIG9mIHRoZSBhYm92ZSBtYWNyb3MgaW5zaWRlIHlvdXIgdGVzdAorZnVu
Y3Rpb24uIEZvciBleGFtcGxlLAorCitgYGAKK1RFU1QoTXlEZWF0aFRlc3QsIEZvbykgeworICAv
LyBUaGlzIGRlYXRoIHRlc3QgdXNlcyBhIGNvbXBvdW5kIHN0YXRlbWVudC4KKyAgQVNTRVJUX0RF
QVRIKHsgaW50IG4gPSA1OyBGb28oJm4pOyB9LCAiRXJyb3Igb24gbGluZSAuKiBvZiBGb28oKSIp
OworfQorVEVTVChNeURlYXRoVGVzdCwgTm9ybWFsRXhpdCkgeworICBFWFBFQ1RfRVhJVChOb3Jt
YWxFeGl0KCksIDo6dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCksICJTdWNjZXNzIik7Cit9CitU
RVNUKE15RGVhdGhUZXN0LCBLaWxsTXlzZWxmKSB7CisgIEVYUEVDVF9FWElUKEtpbGxNeXNlbGYo
KSwgOjp0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChTSUdLSUxMKSwgIlNlbmRpbmcgbXlzZWxmIHVu
YmxvY2thYmxlIHNpZ25hbCIpOworfQorYGBgCisKK3ZlcmlmaWVzIHRoYXQ6CisKKyAgKiBjYWxs
aW5nIGBGb28oNSlgIGNhdXNlcyB0aGUgcHJvY2VzcyB0byBkaWUgd2l0aCB0aGUgZ2l2ZW4gZXJy
b3IgbWVzc2FnZSwKKyAgKiBjYWxsaW5nIGBOb3JtYWxFeGl0KClgIGNhdXNlcyB0aGUgcHJvY2Vz
cyB0byBwcmludCBgIlN1Y2Nlc3MiYCB0byBzdGRlcnIgYW5kIGV4aXQgd2l0aCBleGl0IGNvZGUg
MCwgYW5kCisgICogY2FsbGluZyBgS2lsbE15c2VsZigpYCBraWxscyB0aGUgcHJvY2VzcyB3aXRo
IHNpZ25hbCBgU0lHS0lMTGAuCisKK1RoZSB0ZXN0IGZ1bmN0aW9uIGJvZHkgbWF5IGNvbnRhaW4g
b3RoZXIgYXNzZXJ0aW9ucyBhbmQgc3RhdGVtZW50cyBhcyB3ZWxsLCBpZgorbmVjZXNzYXJ5Lgor
CitfSW1wb3J0YW50Ol8gV2Ugc3Ryb25nbHkgcmVjb21tZW5kIHlvdSB0byBmb2xsb3cgdGhlIGNv
bnZlbnRpb24gb2YgbmFtaW5nIHlvdXIKK3Rlc3QgY2FzZSAobm90IHRlc3QpIGAqRGVhdGhUZXN0
YCB3aGVuIGl0IGNvbnRhaW5zIGEgZGVhdGggdGVzdCwgYXMKK2RlbW9uc3RyYXRlZCBpbiB0aGUg
YWJvdmUgZXhhbXBsZS4gVGhlIGBEZWF0aCBUZXN0cyBBbmQgVGhyZWFkc2Agc2VjdGlvbiBiZWxv
dworZXhwbGFpbnMgd2h5LgorCitJZiBhIHRlc3QgZml4dHVyZSBjbGFzcyBpcyBzaGFyZWQgYnkg
bm9ybWFsIHRlc3RzIGFuZCBkZWF0aCB0ZXN0cywgeW91CitjYW4gdXNlIHR5cGVkZWYgdG8gaW50
cm9kdWNlIGFuIGFsaWFzIGZvciB0aGUgZml4dHVyZSBjbGFzcyBhbmQgYXZvaWQKK2R1cGxpY2F0
aW5nIGl0cyBjb2RlOgorYGBgCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVz
dCB7IC4uLiB9OworCit0eXBlZGVmIEZvb1Rlc3QgRm9vRGVhdGhUZXN0OworCitURVNUX0YoRm9v
VGVzdCwgRG9lc1RoaXMpIHsKKyAgLy8gbm9ybWFsIHRlc3QKK30KKworVEVTVF9GKEZvb0RlYXRo
VGVzdCwgRG9lc1RoYXQpIHsKKyAgLy8gZGVhdGggdGVzdAorfQorYGBgCisKK19BdmFpbGFiaWxp
dHk6XyBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBDeWd3aW4s
IGFuZCBNYWMgKHRoZSBsYXR0ZXIgdGhyZWUgYXJlIHN1cHBvcnRlZCBzaW5jZSB2MS4zLjApLiAg
YChBU1NFUlR8RVhQRUNUKV9ERUFUSF9JRl9TVVBQT1JURURgIGFyZSBuZXcgaW4gdjEuNC4wLgor
CisjIyBSZWd1bGFyIEV4cHJlc3Npb24gU3ludGF4ICMjCisKK09uIFBPU0lYIHN5c3RlbXMgKGUu
Zy4gTGludXgsIEN5Z3dpbiwgYW5kIE1hYyksIEdvb2dsZSBUZXN0IHVzZXMgdGhlCitbUE9TSVgg
ZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9uXShodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25s
aW5lcHVicy8wMDk2OTUzOTkvYmFzZWRlZnMveGJkX2NoYXAwOS5odG1sI3RhZ18wOV8wNCkKK3N5
bnRheCBpbiBkZWF0aCB0ZXN0cy4gVG8gbGVhcm4gYWJvdXQgdGhpcyBzeW50YXgsIHlvdSBtYXkg
d2FudCB0byByZWFkIHRoaXMgW1dpa2lwZWRpYSBlbnRyeV0oaHR0cDovL2VuLndpa2lwZWRpYS5v
cmcvd2lraS9SZWd1bGFyX2V4cHJlc3Npb24jUE9TSVhfRXh0ZW5kZWRfUmVndWxhcl9FeHByZXNz
aW9ucykuCisKK09uIFdpbmRvd3MsIEdvb2dsZSBUZXN0IHVzZXMgaXRzIG93biBzaW1wbGUgcmVn
dWxhciBleHByZXNzaW9uCitpbXBsZW1lbnRhdGlvbi4gSXQgbGFja3MgbWFueSBmZWF0dXJlcyB5
b3UgY2FuIGZpbmQgaW4gUE9TSVggZXh0ZW5kZWQKK3JlZ3VsYXIgZXhwcmVzc2lvbnMuICBGb3Ig
ZXhhbXBsZSwgd2UgZG9uJ3Qgc3VwcG9ydCB1bmlvbiAoYCJ4fHkiYCksCitncm91cGluZyAoYCIo
eHkpImApLCBicmFja2V0cyAoYCJbeHldImApLCBhbmQgcmVwZXRpdGlvbiBjb3VudAorKGAieHs1
LDd9ImApLCBhbW9uZyBvdGhlcnMuIEJlbG93IGlzIHdoYXQgd2UgZG8gc3VwcG9ydCAoTGV0dGVy
IGBBYCBkZW5vdGVzIGEKK2xpdGVyYWwgY2hhcmFjdGVyLCBwZXJpb2QgKGAuYCksIG9yIGEgc2lu
Z2xlIGBcXGAgZXNjYXBlIHNlcXVlbmNlOyBgeGAKK2FuZCBgeWAgZGVub3RlIHJlZ3VsYXIgZXhw
cmVzc2lvbnMuKToKKworfCBgY2AgfCBtYXRjaGVzIGFueSBsaXRlcmFsIGNoYXJhY3RlciBgY2Ag
fAorfDotLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBgXFxkYCB8
IG1hdGNoZXMgYW55IGRlY2ltYWwgZGlnaXQgICAgICAgICB8Cit8IGBcXERgIHwgbWF0Y2hlcyBh
bnkgY2hhcmFjdGVyIHRoYXQncyBub3QgYSBkZWNpbWFsIGRpZ2l0IHwKK3wgYFxcZmAgfCBtYXRj
aGVzIGBcZmAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFxuYCB8IG1hdGNoZXMgYFxuYCAg
ICAgICAgICAgICAgICAgICAgICB8Cit8IGBcXHJgIHwgbWF0Y2hlcyBgXHJgICAgICAgICAgICAg
ICAgICAgICAgIHwKK3wgYFxcc2AgfCBtYXRjaGVzIGFueSBBU0NJSSB3aGl0ZXNwYWNlLCBpbmNs
dWRpbmcgYFxuYCB8Cit8IGBcXFNgIHwgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIHRoYXQncyBub3Qg
YSB3aGl0ZXNwYWNlIHwKK3wgYFxcdGAgfCBtYXRjaGVzIGBcdGAgICAgICAgICAgICAgICAgICAg
ICAgfAorfCBgXFx2YCB8IG1hdGNoZXMgYFx2YCAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBc
XHdgIHwgbWF0Y2hlcyBhbnkgbGV0dGVyLCBgX2AsIG9yIGRlY2ltYWwgZGlnaXQgfAorfCBgXFxX
YCB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0IGBcXHdgIGRvZXNuJ3QgbWF0Y2ggfAorfCBg
XFxjYCB8IG1hdGNoZXMgYW55IGxpdGVyYWwgY2hhcmFjdGVyIGBjYCwgd2hpY2ggbXVzdCBiZSBh
IHB1bmN0dWF0aW9uIHwKK3wgYFxcLmAgfCBtYXRjaGVzIHRoZSBgLmAgY2hhcmFjdGVyICAgICAg
ICAgfAorfCBgLmAgfCBtYXRjaGVzIGFueSBzaW5nbGUgY2hhcmFjdGVyIGV4Y2VwdCBgXG5gIHwK
K3wgYEE/YCB8IG1hdGNoZXMgMCBvciAxIG9jY3VycmVuY2VzIG9mIGBBYCB8Cit8IGBBKmAgfCBt
YXRjaGVzIDAgb3IgbWFueSBvY2N1cnJlbmNlcyBvZiBgQWAgfAorfCBgQStgIHwgbWF0Y2hlcyAx
IG9yIG1hbnkgb2NjdXJyZW5jZXMgb2YgYEFgIHwKK3wgYF5gIHwgbWF0Y2hlcyB0aGUgYmVnaW5u
aW5nIG9mIGEgc3RyaW5nIChub3QgdGhhdCBvZiBlYWNoIGxpbmUpIHwKK3wgYCRgIHwgbWF0Y2hl
cyB0aGUgZW5kIG9mIGEgc3RyaW5nIChub3QgdGhhdCBvZiBlYWNoIGxpbmUpIHwKK3wgYHh5YCB8
IG1hdGNoZXMgYHhgIGZvbGxvd2VkIGJ5IGB5YCAgICAgICB8CisKK1RvIGhlbHAgeW91IGRldGVy
bWluZSB3aGljaCBjYXBhYmlsaXR5IGlzIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbSwKK0dvb2ds
ZSBUZXN0IGRlZmluZXMgbWFjcm8gYEdURVNUX1VTRVNfUE9TSVhfUkU9MWAgd2hlbiBpdCB1c2Vz
IFBPU0lYCitleHRlbmRlZCByZWd1bGFyIGV4cHJlc3Npb25zLCBvciBgR1RFU1RfVVNFU19TSU1Q
TEVfUkU9MWAgd2hlbiBpdCB1c2VzCit0aGUgc2ltcGxlIHZlcnNpb24uICBJZiB5b3Ugd2FudCB5
b3VyIGRlYXRoIHRlc3RzIHRvIHdvcmsgaW4gYm90aAorY2FzZXMsIHlvdSBjYW4gZWl0aGVyIGAj
aWZgIG9uIHRoZXNlIG1hY3JvcyBvciB1c2UgdGhlIG1vcmUgbGltaXRlZAorc3ludGF4IG9ubHku
CisKKyMjIEhvdyBJdCBXb3JrcyAjIworCitVbmRlciB0aGUgaG9vZCwgYEFTU0VSVF9FWElUKClg
IHNwYXducyBhIG5ldyBwcm9jZXNzIGFuZCBleGVjdXRlcyB0aGUKK2RlYXRoIHRlc3Qgc3RhdGVt
ZW50IGluIHRoYXQgcHJvY2Vzcy4gVGhlIGRldGFpbHMgb2Ygb2YgaG93IHByZWNpc2VseQordGhh
dCBoYXBwZW5zIGRlcGVuZCBvbiB0aGUgcGxhdGZvcm0gYW5kIHRoZSB2YXJpYWJsZQorYDo6dGVz
dGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKWAgKHdoaWNoIGlzIGluaXRpYWxpemVk
IGZyb20gdGhlCitjb21tYW5kLWxpbmUgZmxhZyBgLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlYCku
CisKKyAgKiBPbiBQT1NJWCBzeXN0ZW1zLCBgZm9yaygpYCAob3IgYGNsb25lKClgIG9uIExpbnV4
KSBpcyB1c2VkIHRvIHNwYXduIHRoZSBjaGlsZCwgYWZ0ZXIgd2hpY2g6CisgICAgKiBJZiB0aGUg
dmFyaWFibGUncyB2YWx1ZSBpcyBgImZhc3QiYCwgdGhlIGRlYXRoIHRlc3Qgc3RhdGVtZW50IGlz
IGltbWVkaWF0ZWx5IGV4ZWN1dGVkLgorICAgICogSWYgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgaXMg
YCJ0aHJlYWRzYWZlImAsIHRoZSBjaGlsZCBwcm9jZXNzIHJlLWV4ZWN1dGVzIHRoZSB1bml0IHRl
c3QgYmluYXJ5IGp1c3QgYXMgaXQgd2FzIG9yaWdpbmFsbHkgaW52b2tlZCwgYnV0IHdpdGggc29t
ZSBleHRyYSBmbGFncyB0byBjYXVzZSBqdXN0IHRoZSBzaW5nbGUgZGVhdGggdGVzdCB1bmRlciBj
b25zaWRlcmF0aW9uIHRvIGJlIHJ1bi4KKyAgKiBPbiBXaW5kb3dzLCB0aGUgY2hpbGQgaXMgc3Bh
d25lZCB1c2luZyB0aGUgYENyZWF0ZVByb2Nlc3MoKWAgQVBJLCBhbmQgcmUtZXhlY3V0ZXMgdGhl
IGJpbmFyeSB0byBjYXVzZSBqdXN0IHRoZSBzaW5nbGUgZGVhdGggdGVzdCB1bmRlciBjb25zaWRl
cmF0aW9uIHRvIGJlIHJ1biAtIG11Y2ggbGlrZSB0aGUgYHRocmVhZHNhZmVgIG1vZGUgb24gUE9T
SVguCisKK090aGVyIHZhbHVlcyBmb3IgdGhlIHZhcmlhYmxlIGFyZSBpbGxlZ2FsIGFuZCB3aWxs
IGNhdXNlIHRoZSBkZWF0aCB0ZXN0IHRvCitmYWlsLiBDdXJyZW50bHksIHRoZSBmbGFnJ3MgZGVm
YXVsdCB2YWx1ZSBpcyBgImZhc3QiYC4gSG93ZXZlciwgd2UgcmVzZXJ2ZSB0aGUKK3JpZ2h0IHRv
IGNoYW5nZSBpdCBpbiB0aGUgZnV0dXJlLiBUaGVyZWZvcmUsIHlvdXIgdGVzdHMgc2hvdWxkIG5v
dCBkZXBlbmQgb24KK3RoaXMuCisKK0luIGVpdGhlciBjYXNlLCB0aGUgcGFyZW50IHByb2Nlc3Mg
d2FpdHMgZm9yIHRoZSBjaGlsZCBwcm9jZXNzIHRvIGNvbXBsZXRlLCBhbmQgY2hlY2tzIHRoYXQK
KworICAxLiB0aGUgY2hpbGQncyBleGl0IHN0YXR1cyBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZSwg
YW5kCisgIDEuIHRoZSBjaGlsZCdzIHN0ZGVyciBtYXRjaGVzIHRoZSByZWd1bGFyIGV4cHJlc3Np
b24uCisKK0lmIHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudCBydW5zIHRvIGNvbXBsZXRpb24gd2l0
aG91dCBkeWluZywgdGhlIGNoaWxkCitwcm9jZXNzIHdpbGwgbm9uZXRoZWxlc3MgdGVybWluYXRl
LCBhbmQgdGhlIGFzc2VydGlvbiBmYWlscy4KKworIyMgRGVhdGggVGVzdHMgQW5kIFRocmVhZHMg
IyMKKworVGhlIHJlYXNvbiBmb3IgdGhlIHR3byBkZWF0aCB0ZXN0IHN0eWxlcyBoYXMgdG8gZG8g
d2l0aCB0aHJlYWQgc2FmZXR5LiBEdWUgdG8KK3dlbGwta25vd24gcHJvYmxlbXMgd2l0aCBmb3Jr
aW5nIGluIHRoZSBwcmVzZW5jZSBvZiB0aHJlYWRzLCBkZWF0aCB0ZXN0cyBzaG91bGQKK2JlIHJ1
biBpbiBhIHNpbmdsZS10aHJlYWRlZCBjb250ZXh0LiBTb21ldGltZXMsIGhvd2V2ZXIsIGl0IGlz
bid0IGZlYXNpYmxlIHRvCithcnJhbmdlIHRoYXQga2luZCBvZiBlbnZpcm9ubWVudC4gRm9yIGV4
YW1wbGUsIHN0YXRpY2FsbHktaW5pdGlhbGl6ZWQgbW9kdWxlcworbWF5IHN0YXJ0IHRocmVhZHMg
YmVmb3JlIG1haW4gaXMgZXZlciByZWFjaGVkLiBPbmNlIHRocmVhZHMgaGF2ZSBiZWVuIGNyZWF0
ZWQsCitpdCBtYXkgYmUgZGlmZmljdWx0IG9yIGltcG9zc2libGUgdG8gY2xlYW4gdGhlbSB1cC4K
KworR29vZ2xlIFRlc3QgaGFzIHRocmVlIGZlYXR1cmVzIGludGVuZGVkIHRvIHJhaXNlIGF3YXJl
bmVzcyBvZiB0aHJlYWRpbmcgaXNzdWVzLgorCisgIDEuIEEgd2FybmluZyBpcyBlbWl0dGVkIGlm
IG11bHRpcGxlIHRocmVhZHMgYXJlIHJ1bm5pbmcgd2hlbiBhIGRlYXRoIHRlc3QgaXMgZW5jb3Vu
dGVyZWQuCisgIDEuIFRlc3QgY2FzZXMgd2l0aCBhIG5hbWUgZW5kaW5nIGluICJEZWF0aFRlc3Qi
IGFyZSBydW4gYmVmb3JlIGFsbCBvdGhlciB0ZXN0cy4KKyAgMS4gSXQgdXNlcyBgY2xvbmUoKWAg
aW5zdGVhZCBvZiBgZm9yaygpYCB0byBzcGF3biB0aGUgY2hpbGQgcHJvY2VzcyBvbiBMaW51eCAo
YGNsb25lKClgIGlzIG5vdCBhdmFpbGFibGUgb24gQ3lnd2luIGFuZCBNYWMpLCBhcyBgZm9yaygp
YCBpcyBtb3JlIGxpa2VseSB0byBjYXVzZSB0aGUgY2hpbGQgdG8gaGFuZyB3aGVuIHRoZSBwYXJl
bnQgcHJvY2VzcyBoYXMgbXVsdGlwbGUgdGhyZWFkcy4KKworSXQncyBwZXJmZWN0bHkgZmluZSB0
byBjcmVhdGUgdGhyZWFkcyBpbnNpZGUgYSBkZWF0aCB0ZXN0IHN0YXRlbWVudDsgdGhleSBhcmUK
K2V4ZWN1dGVkIGluIGEgc2VwYXJhdGUgcHJvY2VzcyBhbmQgY2Fubm90IGFmZmVjdCB0aGUgcGFy
ZW50LgorCisjIyBEZWF0aCBUZXN0IFN0eWxlcyAjIworCitUaGUgInRocmVhZHNhZmUiIGRlYXRo
IHRlc3Qgc3R5bGUgd2FzIGludHJvZHVjZWQgaW4gb3JkZXIgdG8gaGVscCBtaXRpZ2F0ZSB0aGUK
K3Jpc2tzIG9mIHRlc3RpbmcgaW4gYSBwb3NzaWJseSBtdWx0aXRocmVhZGVkIGVudmlyb25tZW50
LiBJdCB0cmFkZXMgaW5jcmVhc2VkCit0ZXN0IGV4ZWN1dGlvbiB0aW1lIChwb3RlbnRpYWxseSBk
cmFtYXRpY2FsbHkgc28pIGZvciBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5LgorV2Ugc3VnZ2VzdCB1
c2luZyB0aGUgZmFzdGVyLCBkZWZhdWx0ICJmYXN0IiBzdHlsZSB1bmxlc3MgeW91ciB0ZXN0IGhh
cyBzcGVjaWZpYworcHJvYmxlbXMgd2l0aCBpdC4KKworWW91IGNhbiBjaG9vc2UgYSBwYXJ0aWN1
bGFyIHN0eWxlIG9mIGRlYXRoIHRlc3RzIGJ5IHNldHRpbmcgdGhlIGZsYWcKK3Byb2dyYW1tYXRp
Y2FsbHk6CisKK2BgYAorOjp0ZXN0aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0g
InRocmVhZHNhZmUiOworYGBgCisKK1lvdSBjYW4gZG8gdGhpcyBpbiBgbWFpbigpYCB0byBzZXQg
dGhlIHN0eWxlIGZvciBhbGwgZGVhdGggdGVzdHMgaW4gdGhlCitiaW5hcnksIG9yIGluIGluZGl2
aWR1YWwgdGVzdHMuIFJlY2FsbCB0aGF0IGZsYWdzIGFyZSBzYXZlZCBiZWZvcmUgcnVubmluZyBl
YWNoCit0ZXN0IGFuZCByZXN0b3JlZCBhZnRlcndhcmRzLCBzbyB5b3UgbmVlZCBub3QgZG8gdGhh
dCB5b3Vyc2VsZi4gRm9yIGV4YW1wbGU6CisKK2BgYAorVEVTVChNeURlYXRoVGVzdCwgVGVzdE9u
ZSkgeworICA6OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAidGhyZWFk
c2FmZSI7CisgIC8vIFRoaXMgdGVzdCBpcyBydW4gaW4gdGhlICJ0aHJlYWRzYWZlIiBzdHlsZToK
KyAgQVNTRVJUX0RFQVRIKFRoaXNTaG91bGREaWUoKSwgIiIpOworfQorCitURVNUKE15RGVhdGhU
ZXN0LCBUZXN0VHdvKSB7CisgIC8vIFRoaXMgdGVzdCBpcyBydW4gaW4gdGhlICJmYXN0IiBzdHls
ZToKKyAgQVNTRVJUX0RFQVRIKFRoaXNTaG91bGREaWUoKSwgIiIpOworfQorCitpbnQgbWFpbihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJn
YywgYXJndik7CisgIDo6dGVzdGluZzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJm
YXN0IjsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAorCisjIyBDYXZlYXRzICMj
CisKK1RoZSBfc3RhdGVtZW50XyBhcmd1bWVudCBvZiBgQVNTRVJUX0VYSVQoKWAgY2FuIGJlIGFu
eSB2YWxpZCBDKysgc3RhdGVtZW50LgorSWYgaXQgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9u
IHZpYSBhIGByZXR1cm5gIHN0YXRlbWVudCBvciBieSB0aHJvd2luZyBhbiBleGNlcHRpb24sCit0
aGUgZGVhdGggdGVzdCBpcyBjb25zaWRlcmVkIHRvIGhhdmUgZmFpbGVkLiAgU29tZSBHb29nbGUg
VGVzdCBtYWNyb3MgbWF5IHJldHVybgorZnJvbSB0aGUgY3VycmVudCBmdW5jdGlvbiAoZS5nLiBg
QVNTRVJUX1RSVUUoKWApLCBzbyBiZSBzdXJlIHRvIGF2b2lkIHRoZW0gaW4gX3N0YXRlbWVudF8u
CisKK1NpbmNlIF9zdGF0ZW1lbnRfIHJ1bnMgaW4gdGhlIGNoaWxkIHByb2Nlc3MsIGFueSBpbi1t
ZW1vcnkgc2lkZSBlZmZlY3QgKGUuZy4KK21vZGlmeWluZyBhIHZhcmlhYmxlLCByZWxlYXNpbmcg
bWVtb3J5LCBldGMpIGl0IGNhdXNlcyB3aWxsIF9ub3RfIGJlIG9ic2VydmFibGUKK2luIHRoZSBw
YXJlbnQgcHJvY2Vzcy4gSW4gcGFydGljdWxhciwgaWYgeW91IHJlbGVhc2UgbWVtb3J5IGluIGEg
ZGVhdGggdGVzdCwKK3lvdXIgcHJvZ3JhbSB3aWxsIGZhaWwgdGhlIGhlYXAgY2hlY2sgYXMgdGhl
IHBhcmVudCBwcm9jZXNzIHdpbGwgbmV2ZXIgc2VlIHRoZQorbWVtb3J5IHJlY2xhaW1lZC4gVG8g
c29sdmUgdGhpcyBwcm9ibGVtLCB5b3UgY2FuCisKKyAgMS4gdHJ5IG5vdCB0byBmcmVlIG1lbW9y
eSBpbiBhIGRlYXRoIHRlc3Q7CisgIDEuIGZyZWUgdGhlIG1lbW9yeSBhZ2FpbiBpbiB0aGUgcGFy
ZW50IHByb2Nlc3M7IG9yCisgIDEuIGRvIG5vdCB1c2UgdGhlIGhlYXAgY2hlY2tlciBpbiB5b3Vy
IHByb2dyYW0uCisKK0R1ZSB0byBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIHlvdSBjYW5ub3Qg
cGxhY2UgbXVsdGlwbGUgZGVhdGggdGVzdAorYXNzZXJ0aW9ucyBvbiB0aGUgc2FtZSBsaW5lOyBv
dGhlcndpc2UsIGNvbXBpbGF0aW9uIHdpbGwgZmFpbCB3aXRoIGFuIHVub2J2aW91cworZXJyb3Ig
bWVzc2FnZS4KKworRGVzcGl0ZSB0aGUgaW1wcm92ZWQgdGhyZWFkIHNhZmV0eSBhZmZvcmRlZCBi
eSB0aGUgInRocmVhZHNhZmUiIHN0eWxlIG9mIGRlYXRoCit0ZXN0LCB0aHJlYWQgcHJvYmxlbXMg
c3VjaCBhcyBkZWFkbG9jayBhcmUgc3RpbGwgcG9zc2libGUgaW4gdGhlIHByZXNlbmNlIG9mCito
YW5kbGVycyByZWdpc3RlcmVkIHdpdGggYHB0aHJlYWRfYXRmb3JrKDMpYC4KKworIyBVc2luZyBB
c3NlcnRpb25zIGluIFN1Yi1yb3V0aW5lcyAjCisKKyMjIEFkZGluZyBUcmFjZXMgdG8gQXNzZXJ0
aW9ucyAjIworCitJZiBhIHRlc3Qgc3ViLXJvdXRpbmUgaXMgY2FsbGVkIGZyb20gc2V2ZXJhbCBw
bGFjZXMsIHdoZW4gYW4gYXNzZXJ0aW9uCitpbnNpZGUgaXQgZmFpbHMsIGl0IGNhbiBiZSBoYXJk
IHRvIHRlbGwgd2hpY2ggaW52b2NhdGlvbiBvZiB0aGUKK3N1Yi1yb3V0aW5lIHRoZSBmYWlsdXJl
IGlzIGZyb20uICBZb3UgY2FuIGFsbGV2aWF0ZSB0aGlzIHByb2JsZW0gdXNpbmcKK2V4dHJhIGxv
Z2dpbmcgb3IgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZXMsIGJ1dCB0aGF0IHVzdWFsbHkgY2x1dHRl
cnMgdXAKK3lvdXIgdGVzdHMuIEEgYmV0dGVyIHNvbHV0aW9uIGlzIHRvIHVzZSB0aGUgYFNDT1BF
RF9UUkFDRWAgbWFjcm86CisKK3wgYFNDT1BFRF9UUkFDRShgX21lc3NhZ2VfYCk7YCB8Cit8Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorCit3aGVyZSBfbWVzc2FnZV8gY2FuIGJlIGFu
eXRoaW5nIHN0cmVhbWFibGUgdG8gYHN0ZDo6b3N0cmVhbWAuIFRoaXMKK21hY3JvIHdpbGwgY2F1
c2UgdGhlIGN1cnJlbnQgZmlsZSBuYW1lLCBsaW5lIG51bWJlciwgYW5kIHRoZSBnaXZlbgorbWVz
c2FnZSB0byBiZSBhZGRlZCBpbiBldmVyeSBmYWlsdXJlIG1lc3NhZ2UuIFRoZSBlZmZlY3Qgd2ls
bCBiZQordW5kb25lIHdoZW4gdGhlIGNvbnRyb2wgbGVhdmVzIHRoZSBjdXJyZW50IGxleGljYWwg
c2NvcGUuCisKK0ZvciBleGFtcGxlLAorCitgYGAKKzEwOiB2b2lkIFN1YjEoaW50IG4pIHsKKzEx
OiAgIEVYUEVDVF9FUSgxLCBCYXIobikpOworMTI6ICAgRVhQRUNUX0VRKDIsIEJhcihuICsgMSkp
OworMTM6IH0KKzE0OgorMTU6IFRFU1QoRm9vVGVzdCwgQmFyKSB7CisxNjogICB7CisxNzogICAg
IFNDT1BFRF9UUkFDRSgiQSIpOyAgLy8gVGhpcyB0cmFjZSBwb2ludCB3aWxsIGJlIGluY2x1ZGVk
IGluCisxODogICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXZlcnkgZmFpbHVyZSBpbiB0aGlz
IHNjb3BlLgorMTk6ICAgICBTdWIxKDEpOworMjA6ICAgfQorMjE6ICAgLy8gTm93IGl0IHdvbid0
LgorMjI6ICAgU3ViMSg5KTsKKzIzOiB9CitgYGAKKworY291bGQgcmVzdWx0IGluIG1lc3NhZ2Vz
IGxpa2UgdGhlc2U6CisKK2BgYAorcGF0aC90by9mb29fdGVzdC5jYzoxMTogRmFpbHVyZQorVmFs
dWUgb2Y6IEJhcihuKQorRXhwZWN0ZWQ6IDEKKyAgQWN0dWFsOiAyCisgICBUcmFjZToKK3BhdGgv
dG8vZm9vX3Rlc3QuY2M6MTc6IEEKKworcGF0aC90by9mb29fdGVzdC5jYzoxMjogRmFpbHVyZQor
VmFsdWUgb2Y6IEJhcihuICsgMSkKK0V4cGVjdGVkOiAyCisgIEFjdHVhbDogMworYGBgCisKK1dp
dGhvdXQgdGhlIHRyYWNlLCBpdCB3b3VsZCd2ZSBiZWVuIGRpZmZpY3VsdCB0byBrbm93IHdoaWNo
IGludm9jYXRpb24KK29mIGBTdWIxKClgIHRoZSB0d28gZmFpbHVyZXMgY29tZSBmcm9tIHJlc3Bl
Y3RpdmVseS4gKFlvdSBjb3VsZCBhZGQgYW4KK2V4dHJhIG1lc3NhZ2UgdG8gZWFjaCBhc3NlcnRp
b24gaW4gYFN1YjEoKWAgdG8gaW5kaWNhdGUgdGhlIHZhbHVlIG9mCitgbmAsIGJ1dCB0aGF0J3Mg
dGVkaW91cy4pCisKK1NvbWUgdGlwcyBvbiB1c2luZyBgU0NPUEVEX1RSQUNFYDoKKworICAxLiBX
aXRoIGEgc3VpdGFibGUgbWVzc2FnZSwgaXQncyBvZnRlbiBlbm91Z2ggdG8gdXNlIGBTQ09QRURf
VFJBQ0VgIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBzdWItcm91dGluZSwgaW5zdGVhZCBvZiBhdCBl
YWNoIGNhbGwgc2l0ZS4KKyAgMS4gV2hlbiBjYWxsaW5nIHN1Yi1yb3V0aW5lcyBpbnNpZGUgYSBs
b29wLCBtYWtlIHRoZSBsb29wIGl0ZXJhdG9yIHBhcnQgb2YgdGhlIG1lc3NhZ2UgaW4gYFNDT1BF
RF9UUkFDRWAgc3VjaCB0aGF0IHlvdSBjYW4ga25vdyB3aGljaCBpdGVyYXRpb24gdGhlIGZhaWx1
cmUgaXMgZnJvbS4KKyAgMS4gU29tZXRpbWVzIHRoZSBsaW5lIG51bWJlciBvZiB0aGUgdHJhY2Ug
cG9pbnQgaXMgZW5vdWdoIGZvciBpZGVudGlmeWluZyB0aGUgcGFydGljdWxhciBpbnZvY2F0aW9u
IG9mIGEgc3ViLXJvdXRpbmUuIEluIHRoaXMgY2FzZSwgeW91IGRvbid0IGhhdmUgdG8gY2hvb3Nl
IGEgdW5pcXVlIG1lc3NhZ2UgZm9yIGBTQ09QRURfVFJBQ0VgLiBZb3UgY2FuIHNpbXBseSB1c2Ug
YCIiYC4KKyAgMS4gWW91IGNhbiB1c2UgYFNDT1BFRF9UUkFDRWAgaW4gYW4gaW5uZXIgc2NvcGUg
d2hlbiB0aGVyZSBpcyBvbmUgaW4gdGhlIG91dGVyIHNjb3BlLiBJbiB0aGlzIGNhc2UsIGFsbCBh
Y3RpdmUgdHJhY2UgcG9pbnRzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGZhaWx1cmUgbWVzc2Fn
ZXMsIGluIHJldmVyc2Ugb3JkZXIgdGhleSBhcmUgZW5jb3VudGVyZWQuCisgIDEuIFRoZSB0cmFj
ZSBkdW1wIGlzIGNsaWNrYWJsZSBpbiBFbWFjcycgY29tcGlsYXRpb24gYnVmZmVyIC0gaGl0IHJl
dHVybiBvbiBhIGxpbmUgbnVtYmVyIGFuZCB5b3UnbGwgYmUgdGFrZW4gdG8gdGhhdCBsaW5lIGlu
IHRoZSBzb3VyY2UgZmlsZSEKKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKKyMjIFByb3BhZ2F0aW5nIEZhdGFsIEZhaWx1cmVzICMjCisKK0EgY29tbW9uIHBpdGZhbGwg
d2hlbiB1c2luZyBgQVNTRVJUXypgIGFuZCBgRkFJTCpgIGlzIG5vdCB1bmRlcnN0YW5kaW5nIHRo
YXQKK3doZW4gdGhleSBmYWlsIHRoZXkgb25seSBhYm9ydCB0aGUgX2N1cnJlbnQgZnVuY3Rpb25f
LCBub3QgdGhlIGVudGlyZSB0ZXN0LiBGb3IKK2V4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVzdCB3
aWxsIHNlZ2ZhdWx0OgorYGBgCit2b2lkIFN1YnJvdXRpbmUoKSB7CisgIC8vIEdlbmVyYXRlcyBh
IGZhdGFsIGZhaWx1cmUgYW5kIGFib3J0cyB0aGUgY3VycmVudCBmdW5jdGlvbi4KKyAgQVNTRVJU
X0VRKDEsIDIpOworICAvLyBUaGUgZm9sbG93aW5nIHdvbid0IGJlIGV4ZWN1dGVkLgorICAuLi4K
K30KKworVEVTVChGb29UZXN0LCBCYXIpIHsKKyAgU3Vicm91dGluZSgpOworICAvLyBUaGUgaW50
ZW5kZWQgYmVoYXZpb3IgaXMgZm9yIHRoZSBmYXRhbCBmYWlsdXJlCisgIC8vIGluIFN1YnJvdXRp
bmUoKSB0byBhYm9ydCB0aGUgZW50aXJlIHRlc3QuCisgIC8vIFRoZSBhY3R1YWwgYmVoYXZpb3I6
IHRoZSBmdW5jdGlvbiBnb2VzIG9uIGFmdGVyIFN1YnJvdXRpbmUoKSByZXR1cm5zLgorICBpbnQq
IHAgPSBOVUxMOworICAqcCA9IDM7IC8vIFNlZ2ZhdWx0IQorfQorYGBgCisKK1NpbmNlIHdlIGRv
bid0IHVzZSBleGNlcHRpb25zLCBpdCBpcyB0ZWNobmljYWxseSBpbXBvc3NpYmxlIHRvCitpbXBs
ZW1lbnQgdGhlIGludGVuZGVkIGJlaGF2aW9yIGhlcmUuICBUbyBhbGxldmlhdGUgdGhpcywgR29v
Z2xlIFRlc3QKK3Byb3ZpZGVzIHR3byBzb2x1dGlvbnMuICBZb3UgY291bGQgdXNlIGVpdGhlciB0
aGUKK2AoQVNTRVJUfEVYUEVDVClfTk9fRkFUQUxfRkFJTFVSRWAgYXNzZXJ0aW9ucyBvciB0aGUK
K2BIYXNGYXRhbEZhaWx1cmUoKWAgZnVuY3Rpb24uICBUaGV5IGFyZSBkZXNjcmliZWQgaW4gdGhl
IGZvbGxvd2luZyB0d28KK3N1YnNlY3Rpb25zLgorCisjIyMgQXNzZXJ0aW5nIG9uIFN1YnJvdXRp
bmVzICMjIworCitBcyBzaG93biBhYm92ZSwgaWYgeW91ciB0ZXN0IGNhbGxzIGEgc3Vicm91dGlu
ZSB0aGF0IGhhcyBhbiBgQVNTRVJUXypgCitmYWlsdXJlIGluIGl0LCB0aGUgdGVzdCB3aWxsIGNv
bnRpbnVlIGFmdGVyIHRoZSBzdWJyb3V0aW5lCityZXR1cm5zLiBUaGlzIG1heSBub3QgYmUgd2hh
dCB5b3Ugd2FudC4KKworT2Z0ZW4gcGVvcGxlIHdhbnQgZmF0YWwgZmFpbHVyZXMgdG8gcHJvcGFn
YXRlIGxpa2UgZXhjZXB0aW9ucy4gIEZvcgordGhhdCBHb29nbGUgVGVzdCBvZmZlcnMgdGhlIGZv
bGxvd2luZyBtYWNyb3M6CisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNz
ZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfTk9fRkFUQUxfRkFJ
TFVSRShgX3N0YXRlbWVudF9gKTtgIHwgYEVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKGBfc3RhdGVt
ZW50X2ApO2AgfCBfc3RhdGVtZW50XyBkb2Vzbid0IGdlbmVyYXRlIGFueSBuZXcgZmF0YWwgZmFp
bHVyZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkLiB8CisKK09ubHkgZmFpbHVyZXMgaW4gdGhlIHRo
cmVhZCB0aGF0IGV4ZWN1dGVzIHRoZSBhc3NlcnRpb24gYXJlIGNoZWNrZWQgdG8KK2RldGVybWlu
ZSB0aGUgcmVzdWx0IG9mIHRoaXMgdHlwZSBvZiBhc3NlcnRpb25zLiAgSWYgX3N0YXRlbWVudF8K
K2NyZWF0ZXMgbmV3IHRocmVhZHMsIGZhaWx1cmVzIGluIHRoZXNlIHRocmVhZHMgYXJlIGlnbm9y
ZWQuCisKK0V4YW1wbGVzOgorCitgYGAKK0FTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEZvbygpKTsK
KworaW50IGk7CitFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRSh7CisgIGkgPSBCYXIoKTsKK30pOwor
YGBgCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLiBBc3NlcnRpb25zIGZy
b20gbXVsdGlwbGUgdGhyZWFkcworYXJlIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgorCisjIyMg
Q2hlY2tpbmcgZm9yIEZhaWx1cmVzIGluIHRoZSBDdXJyZW50IFRlc3QgIyMjCisKK2BIYXNGYXRh
bEZhaWx1cmUoKWAgaW4gdGhlIGA6OnRlc3Rpbmc6OlRlc3RgIGNsYXNzIHJldHVybnMgYHRydWVg
IGlmIGFuCithc3NlcnRpb24gaW4gdGhlIGN1cnJlbnQgdGVzdCBoYXMgc3VmZmVyZWQgYSBmYXRh
bCBmYWlsdXJlLiBUaGlzCithbGxvd3MgZnVuY3Rpb25zIHRvIGNhdGNoIGZhdGFsIGZhaWx1cmVz
IGluIGEgc3ViLXJvdXRpbmUgYW5kIHJldHVybgorZWFybHkuCisKK2BgYAorY2xhc3MgVGVzdCB7
CisgcHVibGljOgorICAuLi4KKyAgc3RhdGljIGJvb2wgSGFzRmF0YWxGYWlsdXJlKCk7Cit9Owor
YGBgCisKK1RoZSB0eXBpY2FsIHVzYWdlLCB3aGljaCBiYXNpY2FsbHkgc2ltdWxhdGVzIHRoZSBi
ZWhhdmlvciBvZiBhIHRocm93bgorZXhjZXB0aW9uLCBpczoKKworYGBgCitURVNUKEZvb1Rlc3Qs
IEJhcikgeworICBTdWJyb3V0aW5lKCk7CisgIC8vIEFib3J0cyBpZiBTdWJyb3V0aW5lKCkgaGFk
IGEgZmF0YWwgZmFpbHVyZS4KKyAgaWYgKEhhc0ZhdGFsRmFpbHVyZSgpKQorICAgIHJldHVybjsK
KyAgLy8gVGhlIGZvbGxvd2luZyB3b24ndCBiZSBleGVjdXRlZC4KKyAgLi4uCit9CitgYGAKKwor
SWYgYEhhc0ZhdGFsRmFpbHVyZSgpYCBpcyB1c2VkIG91dHNpZGUgb2YgYFRFU1QoKWAgLCBgVEVT
VF9GKClgICwgb3IgYSB0ZXN0CitmaXh0dXJlLCB5b3UgbXVzdCBhZGQgdGhlIGA6OnRlc3Rpbmc6
OlRlc3Q6OmAgcHJlZml4LCBhcyBpbjoKKworYGBgCitpZiAoOjp0ZXN0aW5nOjpUZXN0OjpIYXNG
YXRhbEZhaWx1cmUoKSkKKyAgcmV0dXJuOworYGBgCisKK1NpbWlsYXJseSwgYEhhc05vbmZhdGFs
RmFpbHVyZSgpYCByZXR1cm5zIGB0cnVlYCBpZiB0aGUgY3VycmVudCB0ZXN0CitoYXMgYXQgbGVh
c3Qgb25lIG5vbi1mYXRhbCBmYWlsdXJlLCBhbmQgYEhhc0ZhaWx1cmUoKWAgcmV0dXJucyBgdHJ1
ZWAKK2lmIHRoZSBjdXJyZW50IHRlc3QgaGFzIGF0IGxlYXN0IG9uZSBmYWlsdXJlIG9mIGVpdGhl
ciBraW5kLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4gIGBIYXNOb25m
YXRhbEZhaWx1cmUoKWAgYW5kCitgSGFzRmFpbHVyZSgpYCBhcmUgYXZhaWxhYmxlIHNpbmNlIHZl
cnNpb24gMS40LjAuCisKKyMgTG9nZ2luZyBBZGRpdGlvbmFsIEluZm9ybWF0aW9uICMKKworSW4g
eW91ciB0ZXN0IGNvZGUsIHlvdSBjYW4gY2FsbCBgUmVjb3JkUHJvcGVydHkoImtleSIsIHZhbHVl
KWAgdG8gbG9nCithZGRpdGlvbmFsIGluZm9ybWF0aW9uLCB3aGVyZSBgdmFsdWVgIGNhbiBiZSBl
aXRoZXIgYSBzdHJpbmcgb3IgYW4gYGludGAuIFRoZSBfbGFzdF8gdmFsdWUgcmVjb3JkZWQgZm9y
IGEga2V5IHdpbGwgYmUgZW1pdHRlZCB0byB0aGUgWE1MIG91dHB1dAoraWYgeW91IHNwZWNpZnkg
b25lLiBGb3IgZXhhbXBsZSwgdGhlIHRlc3QKKworYGBgCitURVNUX0YoV2lkZ2V0VXNhZ2VUZXN0
LCBNaW5BbmRNYXhXaWRnZXRzKSB7CisgIFJlY29yZFByb3BlcnR5KCJNYXhpbXVtV2lkZ2V0cyIs
IENvbXB1dGVNYXhVc2FnZSgpKTsKKyAgUmVjb3JkUHJvcGVydHkoIk1pbmltdW1XaWRnZXRzIiwg
Q29tcHV0ZU1pblVzYWdlKCkpOworfQorYGBgCisKK3dpbGwgb3V0cHV0IFhNTCBsaWtlIHRoaXM6
CisKK2BgYAorLi4uCisgIDx0ZXN0Y2FzZSBuYW1lPSJNaW5BbmRNYXhXaWRnZXRzIiBzdGF0dXM9
InJ1biIgdGltZT0iNiIgY2xhc3NuYW1lPSJXaWRnZXRVc2FnZVRlc3QiCisgICAgICAgICAgICBN
YXhpbXVtV2lkZ2V0cz0iMTIiCisgICAgICAgICAgICBNaW5pbXVtV2lkZ2V0cz0iOSIgLz4KKy4u
LgorYGBgCisKK19Ob3RlXzoKKyAgKiBgUmVjb3JkUHJvcGVydHkoKWAgaXMgYSBzdGF0aWMgbWVt
YmVyIG9mIHRoZSBgVGVzdGAgY2xhc3MuIFRoZXJlZm9yZSBpdCBuZWVkcyB0byBiZSBwcmVmaXhl
ZCB3aXRoIGA6OnRlc3Rpbmc6OlRlc3Q6OmAgaWYgdXNlZCBvdXRzaWRlIG9mIHRoZSBgVEVTVGAg
Ym9keSBhbmQgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4KKyAgKiBga2V5YCBtdXN0IGJlIGEgdmFs
aWQgWE1MIGF0dHJpYnV0ZSBuYW1lLCBhbmQgY2Fubm90IGNvbmZsaWN0IHdpdGggdGhlIG9uZXMg
YWxyZWFkeSB1c2VkIGJ5IEdvb2dsZSBUZXN0IChgbmFtZWAsIGBzdGF0dXNgLCBgdGltZWAsIGBj
bGFzc25hbWVgLCBgdHlwZV9wYXJhbWAsIGFuZCBgdmFsdWVfcGFyYW1gKS4KKyAgKiBDYWxsaW5n
IGBSZWNvcmRQcm9wZXJ0eSgpYCBvdXRzaWRlIG9mIHRoZSBsaWZlc3BhbiBvZiBhIHRlc3QgaXMg
YWxsb3dlZC4gSWYgaXQncyBjYWxsZWQgb3V0c2lkZSBvZiBhIHRlc3QgYnV0IGJldHdlZW4gYSB0
ZXN0IGNhc2UncyBgU2V0VXBUZXN0Q2FzZSgpYCBhbmQgYFRlYXJEb3duVGVzdENhc2UoKWAgbWV0
aG9kcywgaXQgd2lsbCBiZSBhdHRyaWJ1dGVkIHRvIHRoZSBYTUwgZWxlbWVudCBmb3IgdGhlIHRl
c3QgY2FzZS4gSWYgaXQncyBjYWxsZWQgb3V0c2lkZSBvZiBhbGwgdGVzdCBjYXNlcyAoZS5nLiBp
biBhIHRlc3QgZW52aXJvbm1lbnQpLCBpdCB3aWxsIGJlIGF0dHJpYnV0ZWQgdG8gdGhlIHRvcC1s
ZXZlbCBYTUwgZWxlbWVudC4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKKyMgU2hhcmluZyBSZXNvdXJjZXMgQmV0d2VlbiBUZXN0cyBpbiB0aGUgU2FtZSBUZXN0IENh
c2UgIworCisKKworR29vZ2xlIFRlc3QgY3JlYXRlcyBhIG5ldyB0ZXN0IGZpeHR1cmUgb2JqZWN0
IGZvciBlYWNoIHRlc3QgaW4gb3JkZXIgdG8gbWFrZQordGVzdHMgaW5kZXBlbmRlbnQgYW5kIGVh
c2llciB0byBkZWJ1Zy4gSG93ZXZlciwgc29tZXRpbWVzIHRlc3RzIHVzZSByZXNvdXJjZXMKK3Ro
YXQgYXJlIGV4cGVuc2l2ZSB0byBzZXQgdXAsIG1ha2luZyB0aGUgb25lLWNvcHktcGVyLXRlc3Qg
bW9kZWwgcHJvaGliaXRpdmVseQorZXhwZW5zaXZlLgorCitJZiB0aGUgdGVzdHMgZG9uJ3QgY2hh
bmdlIHRoZSByZXNvdXJjZSwgdGhlcmUncyBubyBoYXJtIGluIHRoZW0gc2hhcmluZyBhCitzaW5n
bGUgcmVzb3VyY2UgY29weS4gU28sIGluIGFkZGl0aW9uIHRvIHBlci10ZXN0IHNldC11cC90ZWFy
LWRvd24sIEdvb2dsZSBUZXN0CithbHNvIHN1cHBvcnRzIHBlci10ZXN0LWNhc2Ugc2V0LXVwL3Rl
YXItZG93bi4gVG8gdXNlIGl0OgorCisgIDEuIEluIHlvdXIgdGVzdCBmaXh0dXJlIGNsYXNzIChz
YXkgYEZvb1Rlc3RgICksIGRlZmluZSBhcyBgc3RhdGljYCBzb21lIG1lbWJlciB2YXJpYWJsZXMg
dG8gaG9sZCB0aGUgc2hhcmVkIHJlc291cmNlcy4KKyAgMS4gSW4gdGhlIHNhbWUgdGVzdCBmaXh0
dXJlIGNsYXNzLCBkZWZpbmUgYSBgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpYCBmdW5jdGlv
biAocmVtZW1iZXIgbm90IHRvIHNwZWxsIGl0IGFzICoqYFNldHVwVGVzdENhc2VgKiogd2l0aCBh
IHNtYWxsIGB1YCEpIHRvIHNldCB1cCB0aGUgc2hhcmVkIHJlc291cmNlcyBhbmQgYSBgc3RhdGlj
IHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpYCBmdW5jdGlvbiB0byB0ZWFyIHRoZW0gZG93bi4KKwor
VGhhdCdzIGl0ISBHb29nbGUgVGVzdCBhdXRvbWF0aWNhbGx5IGNhbGxzIGBTZXRVcFRlc3RDYXNl
KClgIGJlZm9yZSBydW5uaW5nIHRoZQorX2ZpcnN0IHRlc3RfIGluIHRoZSBgRm9vVGVzdGAgdGVz
dCBjYXNlIChpLmUuIGJlZm9yZSBjcmVhdGluZyB0aGUgZmlyc3QKK2BGb29UZXN0YCBvYmplY3Qp
LCBhbmQgY2FsbHMgYFRlYXJEb3duVGVzdENhc2UoKWAgYWZ0ZXIgcnVubmluZyB0aGUgX2xhc3Qg
dGVzdF8KK2luIGl0IChpLmUuIGFmdGVyIGRlbGV0aW5nIHRoZSBsYXN0IGBGb29UZXN0YCBvYmpl
Y3QpLiBJbiBiZXR3ZWVuLCB0aGUgdGVzdHMKK2NhbiB1c2UgdGhlIHNoYXJlZCByZXNvdXJjZXMu
CisKK1JlbWVtYmVyIHRoYXQgdGhlIHRlc3Qgb3JkZXIgaXMgdW5kZWZpbmVkLCBzbyB5b3VyIGNv
ZGUgY2FuJ3QgZGVwZW5kIG9uIGEgdGVzdAorcHJlY2VkaW5nIG9yIGZvbGxvd2luZyBhbm90aGVy
LiBBbHNvLCB0aGUgdGVzdHMgbXVzdCBlaXRoZXIgbm90IG1vZGlmeSB0aGUKK3N0YXRlIG9mIGFu
eSBzaGFyZWQgcmVzb3VyY2UsIG9yLCBpZiB0aGV5IGRvIG1vZGlmeSB0aGUgc3RhdGUsIHRoZXkg
bXVzdAorcmVzdG9yZSB0aGUgc3RhdGUgdG8gaXRzIG9yaWdpbmFsIHZhbHVlIGJlZm9yZSBwYXNz
aW5nIGNvbnRyb2wgdG8gdGhlIG5leHQKK3Rlc3QuCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIHBl
ci10ZXN0LWNhc2Ugc2V0LXVwIGFuZCB0ZWFyLWRvd246CitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBw
dWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIC8vIFBlci10ZXN0LWNhc2Ug
c2V0LXVwLgorICAvLyBDYWxsZWQgYmVmb3JlIHRoZSBmaXJzdCB0ZXN0IGluIHRoaXMgdGVzdCBj
YXNlLgorICAvLyBDYW4gYmUgb21pdHRlZCBpZiBub3QgbmVlZGVkLgorICBzdGF0aWMgdm9pZCBT
ZXRVcFRlc3RDYXNlKCkgeworICAgIHNoYXJlZF9yZXNvdXJjZV8gPSBuZXcgLi4uOworICB9CisK
KyAgLy8gUGVyLXRlc3QtY2FzZSB0ZWFyLWRvd24uCisgIC8vIENhbGxlZCBhZnRlciB0aGUgbGFz
dCB0ZXN0IGluIHRoaXMgdGVzdCBjYXNlLgorICAvLyBDYW4gYmUgb21pdHRlZCBpZiBub3QgbmVl
ZGVkLgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIGRlbGV0ZSBzaGFy
ZWRfcmVzb3VyY2VfOworICAgIHNoYXJlZF9yZXNvdXJjZV8gPSBOVUxMOworICB9CisKKyAgLy8g
WW91IGNhbiBkZWZpbmUgcGVyLXRlc3Qgc2V0LXVwIGFuZCB0ZWFyLWRvd24gbG9naWMgYXMgdXN1
YWwuCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsgLi4uIH0KKyAgdmlydHVhbCB2b2lkIFRlYXJE
b3duKCkgeyAuLi4gfQorCisgIC8vIFNvbWUgZXhwZW5zaXZlIHJlc291cmNlIHNoYXJlZCBieSBh
bGwgdGVzdHMuCisgIHN0YXRpYyBUKiBzaGFyZWRfcmVzb3VyY2VfOworfTsKKworVCogRm9vVGVz
dDo6c2hhcmVkX3Jlc291cmNlXyA9IE5VTEw7CisKK1RFU1RfRihGb29UZXN0LCBUZXN0MSkgewor
ICAuLi4geW91IGNhbiByZWZlciB0byBzaGFyZWRfcmVzb3VyY2UgaGVyZSAuLi4KK30KK1RFU1Rf
RihGb29UZXN0LCBUZXN0MikgeworICAuLi4geW91IGNhbiByZWZlciB0byBzaGFyZWRfcmVzb3Vy
Y2UgaGVyZSAuLi4KK30KK2BgYAorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1h
Yy4KKworIyBHbG9iYWwgU2V0LVVwIGFuZCBUZWFyLURvd24gIworCitKdXN0IGFzIHlvdSBjYW4g
ZG8gc2V0LXVwIGFuZCB0ZWFyLWRvd24gYXQgdGhlIHRlc3QgbGV2ZWwgYW5kIHRoZSB0ZXN0IGNh
c2UKK2xldmVsLCB5b3UgY2FuIGFsc28gZG8gaXQgYXQgdGhlIHRlc3QgcHJvZ3JhbSBsZXZlbC4g
SGVyZSdzIGhvdy4KKworRmlyc3QsIHlvdSBzdWJjbGFzcyB0aGUgYDo6dGVzdGluZzo6RW52aXJv
bm1lbnRgIGNsYXNzIHRvIGRlZmluZSBhIHRlc3QKK2Vudmlyb25tZW50LCB3aGljaCBrbm93cyBo
b3cgdG8gc2V0LXVwIGFuZCB0ZWFyLWRvd246CisKK2BgYAorY2xhc3MgRW52aXJvbm1lbnQgewor
IHB1YmxpYzoKKyAgdmlydHVhbCB+RW52aXJvbm1lbnQoKSB7fQorICAvLyBPdmVycmlkZSB0aGlz
IHRvIGRlZmluZSBob3cgdG8gc2V0IHVwIHRoZSBlbnZpcm9ubWVudC4KKyAgdmlydHVhbCB2b2lk
IFNldFVwKCkge30KKyAgLy8gT3ZlcnJpZGUgdGhpcyB0byBkZWZpbmUgaG93IHRvIHRlYXIgZG93
biB0aGUgZW52aXJvbm1lbnQuCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHt9Cit9OworYGBg
CisKK1RoZW4sIHlvdSByZWdpc3RlciBhbiBpbnN0YW5jZSBvZiB5b3VyIGVudmlyb25tZW50IGNs
YXNzIHdpdGggR29vZ2xlIFRlc3QgYnkKK2NhbGxpbmcgdGhlIGA6OnRlc3Rpbmc6OkFkZEdsb2Jh
bFRlc3RFbnZpcm9ubWVudCgpYCBmdW5jdGlvbjoKKworYGBgCitFbnZpcm9ubWVudCogQWRkR2xv
YmFsVGVzdEVudmlyb25tZW50KEVudmlyb25tZW50KiBlbnYpOworYGBgCisKK05vdywgd2hlbiBg
UlVOX0FMTF9URVNUUygpYCBpcyBjYWxsZWQsIGl0IGZpcnN0IGNhbGxzIHRoZSBgU2V0VXAoKWAg
bWV0aG9kIG9mCit0aGUgZW52aXJvbm1lbnQgb2JqZWN0LCB0aGVuIHJ1bnMgdGhlIHRlc3RzIGlm
IHRoZXJlIHdhcyBubyBmYXRhbCBmYWlsdXJlcywgYW5kCitmaW5hbGx5IGNhbGxzIGBUZWFyRG93
bigpYCBvZiB0aGUgZW52aXJvbm1lbnQgb2JqZWN0LgorCitJdCdzIE9LIHRvIHJlZ2lzdGVyIG11
bHRpcGxlIGVudmlyb25tZW50IG9iamVjdHMuIEluIHRoaXMgY2FzZSwgdGhlaXIgYFNldFVwKClg
Cit3aWxsIGJlIGNhbGxlZCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgcmVnaXN0ZXJlZCwgYW5kIHRo
ZWlyIGBUZWFyRG93bigpYCB3aWxsIGJlCitjYWxsZWQgaW4gdGhlIHJldmVyc2Ugb3JkZXIuCisK
K05vdGUgdGhhdCBHb29nbGUgVGVzdCB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHJlZ2lzdGVyZWQg
ZW52aXJvbm1lbnQgb2JqZWN0cy4KK1RoZXJlZm9yZSAqKmRvIG5vdCBkZWxldGUgdGhlbSoqIGJ5
IHlvdXJzZWxmLgorCitZb3Ugc2hvdWxkIGNhbGwgYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgp
YCBiZWZvcmUgYFJVTl9BTExfVEVTVFMoKWAgaXMKK2NhbGxlZCwgcHJvYmFibHkgaW4gYG1haW4o
KWAuIElmIHlvdSB1c2UgYGd0ZXN0X21haW5gLCB5b3UgbmVlZCB0byAgICAgIGNhbGwKK3RoaXMg
YmVmb3JlIGBtYWluKClgIHN0YXJ0cyBmb3IgaXQgdG8gdGFrZSBlZmZlY3QuIE9uZSB3YXkgdG8g
ZG8gdGhpcyBpcyB0bworZGVmaW5lIGEgZ2xvYmFsIHZhcmlhYmxlIGxpa2UgdGhpczoKKworYGBg
Cis6OnRlc3Rpbmc6OkVudmlyb25tZW50KiBjb25zdCBmb29fZW52ID0gOjp0ZXN0aW5nOjpBZGRH
bG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEZvb0Vudmlyb25tZW50KTsKK2BgYAorCitIb3dldmVy
LCB3ZSBzdHJvbmdseSByZWNvbW1lbmQgeW91IHRvIHdyaXRlIHlvdXIgb3duIGBtYWluKClgIGFu
ZCBjYWxsCitgQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KClgIHRoZXJlLCBhcyByZWx5aW5nIG9u
IGluaXRpYWxpemF0aW9uIG9mIGdsb2JhbAordmFyaWFibGVzIG1ha2VzIHRoZSBjb2RlIGhhcmRl
ciB0byByZWFkIGFuZCBtYXkgY2F1c2UgcHJvYmxlbXMgd2hlbiB5b3UKK3JlZ2lzdGVyIG11bHRp
cGxlIGVudmlyb25tZW50cyBmcm9tIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cyBhbmQgdGhl
CitlbnZpcm9ubWVudHMgaGF2ZSBkZXBlbmRlbmNpZXMgYW1vbmcgdGhlbSAocmVtZW1iZXIgdGhh
dCB0aGUgY29tcGlsZXIgZG9lc24ndAorZ3VhcmFudGVlIHRoZSBvcmRlciBpbiB3aGljaCBnbG9i
YWwgdmFyaWFibGVzIGZyb20gZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXRzCithcmUgaW5pdGlh
bGl6ZWQpLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworCisjIFZh
bHVlIFBhcmFtZXRlcml6ZWQgVGVzdHMgIworCitfVmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0c18g
YWxsb3cgeW91IHRvIHRlc3QgeW91ciBjb2RlIHdpdGggZGlmZmVyZW50CitwYXJhbWV0ZXJzIHdp
dGhvdXQgd3JpdGluZyBtdWx0aXBsZSBjb3BpZXMgb2YgdGhlIHNhbWUgdGVzdC4KKworU3VwcG9z
ZSB5b3Ugd3JpdGUgYSB0ZXN0IGZvciB5b3VyIGNvZGUgYW5kIHRoZW4gcmVhbGl6ZSB0aGF0IHlv
dXIgY29kZSBpcyBhZmZlY3RlZCBieSBhIHByZXNlbmNlIG9mIGEgQm9vbGVhbiBjb21tYW5kIGxp
bmUgZmxhZy4KKworYGBgCitURVNUKE15Q29kZVRlc3QsIFRlc3RGb28pIHsKKyAgLy8gQSBjb2Rl
IHRvIHRlc3QgZm9vKCkuCit9CitgYGAKKworVXN1YWxseSBwZW9wbGUgZmFjdG9yIHRoZWlyIHRl
c3QgY29kZSBpbnRvIGEgZnVuY3Rpb24gd2l0aCBhIEJvb2xlYW4gcGFyYW1ldGVyIGluIHN1Y2gg
c2l0dWF0aW9ucy4gVGhlIGZ1bmN0aW9uIHNldHMgdGhlIGZsYWcsIHRoZW4gZXhlY3V0ZXMgdGhl
IHRlc3RpbmcgY29kZS4KKworYGBgCit2b2lkIFRlc3RGb29IZWxwZXIoYm9vbCBmbGFnX3ZhbHVl
KSB7CisgIGZsYWcgPSBmbGFnX3ZhbHVlOworICAvLyBBIGNvZGUgdG8gdGVzdCBmb28oKS4KK30K
KworVEVTVChNeUNvZGVUZXN0LCBUZXN0Rm9vKSB7CisgIFRlc3RGb29IZWxwZXIoZmFsc2UpOwor
ICBUZXN0Rm9vSGVscGVyKHRydWUpOworfQorYGBgCisKK0J1dCB0aGlzIHNldHVwIGhhcyBzZXJp
b3VzIGRyYXdiYWNrcy4gRmlyc3QsIHdoZW4gYSB0ZXN0IGFzc2VydGlvbiBmYWlscyBpbiB5b3Vy
IHRlc3RzLCBpdCBiZWNvbWVzIHVuY2xlYXIgd2hhdCB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyIGNh
dXNlZCBpdCB0byBmYWlsLiBZb3UgY2FuIHN0cmVhbSBhIGNsYXJpZnlpbmcgbWVzc2FnZSBpbnRv
IHlvdXIgYEVYUEVDVGAvYEFTU0VSVGAgc3RhdGVtZW50cywgYnV0IGl0IHlvdSdsbCBoYXZlIHRv
IGRvIGl0IHdpdGggYWxsIG9mIHRoZW0uIFNlY29uZCwgeW91IGhhdmUgdG8gYWRkIG9uZSBzdWNo
IGhlbHBlciBmdW5jdGlvbiBwZXIgdGVzdC4gV2hhdCBpZiB5b3UgaGF2ZSB0ZW4gdGVzdHM/IFR3
ZW50eT8gQSBodW5kcmVkPworCitWYWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIHdpbGwgbGV0IHlv
dSB3cml0ZSB5b3VyIHRlc3Qgb25seSBvbmNlIGFuZCB0aGVuIGVhc2lseSBpbnN0YW50aWF0ZSBh
bmQgcnVuIGl0IHdpdGggYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBwYXJhbWV0ZXIgdmFsdWVzLgor
CitIZXJlIGFyZSBzb21lIG90aGVyIHNpdHVhdGlvbnMgd2hlbiB2YWx1ZS1wYXJhbWV0ZXJpemVk
IHRlc3RzIGNvbWUgaGFuZHk6CisKKyAgKiBZb3Ugd2FudCB0byB0ZXN0IGRpZmZlcmVudCBpbXBs
ZW1lbnRhdGlvbnMgb2YgYW4gT08gaW50ZXJmYWNlLgorICAqIFlvdSB3YW50IHRvIHRlc3QgeW91
ciBjb2RlIG92ZXIgdmFyaW91cyBpbnB1dHMgKGEuay5hLiBkYXRhLWRyaXZlbiB0ZXN0aW5nKS4g
VGhpcyBmZWF0dXJlIGlzIGVhc3kgdG8gYWJ1c2UsIHNvIHBsZWFzZSBleGVyY2lzZSB5b3VyIGdv
b2Qgc2Vuc2Ugd2hlbiBkb2luZyBpdCEKKworIyMgSG93IHRvIFdyaXRlIFZhbHVlLVBhcmFtZXRl
cml6ZWQgVGVzdHMgIyMKKworVG8gd3JpdGUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cywgZmly
c3QgeW91IHNob3VsZCBkZWZpbmUgYSBmaXh0dXJlCitjbGFzcy4gIEl0IG11c3QgYmUgZGVyaXZl
ZCBmcm9tIGJvdGggYDo6dGVzdGluZzo6VGVzdGAgYW5kCitgOjp0ZXN0aW5nOjpXaXRoUGFyYW1J
bnRlcmZhY2U8VD5gICh0aGUgbGF0dGVyIGlzIGEgcHVyZSBpbnRlcmZhY2UpLAord2hlcmUgYFRg
IGlzIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVlcy4gIEZvciBjb252ZW5pZW5jZSwg
eW91CitjYW4ganVzdCBkZXJpdmUgdGhlIGZpeHR1cmUgY2xhc3MgZnJvbSBgOjp0ZXN0aW5nOjpU
ZXN0V2l0aFBhcmFtPFQ+YCwKK3doaWNoIGl0c2VsZiBpcyBkZXJpdmVkIGZyb20gYm90aCBgOjp0
ZXN0aW5nOjpUZXN0YCBhbmQKK2A6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxUPmAuIGBU
YCBjYW4gYmUgYW55IGNvcHlhYmxlIHR5cGUuIElmCitpdCdzIGEgcmF3IHBvaW50ZXIsIHlvdSBh
cmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBsaWZlc3BhbiBvZgordGhlIHBvaW50ZWQg
dmFsdWVzLgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0
aFBhcmFtPGNvbnN0IGNoYXIqPiB7CisgIC8vIFlvdSBjYW4gaW1wbGVtZW50IGFsbCB0aGUgdXN1
YWwgZml4dHVyZSBjbGFzcyBtZW1iZXJzIGhlcmUuCisgIC8vIFRvIGFjY2VzcyB0aGUgdGVzdCBw
YXJhbWV0ZXIsIGNhbGwgR2V0UGFyYW0oKSBmcm9tIGNsYXNzCisgIC8vIFRlc3RXaXRoUGFyYW08
VD4uCit9OworCisvLyBPciwgd2hlbiB5b3Ugd2FudCB0byBhZGQgcGFyYW1ldGVycyB0byBhIHBy
ZS1leGlzdGluZyBmaXh0dXJlIGNsYXNzOgorY2xhc3MgQmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpUZXN0IHsKKyAgLi4uCit9OworY2xhc3MgQmFyVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCwK
KyAgICAgICAgICAgICAgICBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8Y29u
c3QgY2hhcio+IHsKKyAgLi4uCit9OworYGBgCisKK1RoZW4sIHVzZSB0aGUgYFRFU1RfUGAgbWFj
cm8gdG8gZGVmaW5lIGFzIG1hbnkgdGVzdCBwYXR0ZXJucyB1c2luZwordGhpcyBmaXh0dXJlIGFz
IHlvdSB3YW50LiAgVGhlIGBfUGAgc3VmZml4IGlzIGZvciAicGFyYW1ldGVyaXplZCIgb3IKKyJw
YXR0ZXJuIiwgd2hpY2hldmVyIHlvdSBwcmVmZXIgdG8gdGhpbmsuCisKK2BgYAorVEVTVF9QKEZv
b1Rlc3QsIERvZXNCbGFoKSB7CisgIC8vIEluc2lkZSBhIHRlc3QsIGFjY2VzcyB0aGUgdGVzdCBw
YXJhbWV0ZXIgd2l0aCB0aGUgR2V0UGFyYW0oKSBtZXRob2QKKyAgLy8gb2YgdGhlIFRlc3RXaXRo
UGFyYW08VD4gY2xhc3M6CisgIEVYUEVDVF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsKKyAg
Li4uCit9CisKK1RFU1RfUChGb29UZXN0LCBIYXNCbGFoQmxhaCkgeworICAuLi4KK30KK2BgYAor
CitGaW5hbGx5LCB5b3UgY2FuIHVzZSBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIHRvIGluc3Rh
bnRpYXRlIHRoZSB0ZXN0CitjYXNlIHdpdGggYW55IHNldCBvZiBwYXJhbWV0ZXJzIHlvdSB3YW50
LiBHb29nbGUgVGVzdCBkZWZpbmVzIGEgbnVtYmVyIG9mCitmdW5jdGlvbnMgZm9yIGdlbmVyYXRp
bmcgdGVzdCBwYXJhbWV0ZXJzLiBUaGV5IHJldHVybiB3aGF0IHdlIGNhbGwKKyhzdXJwcmlzZSEp
IF9wYXJhbWV0ZXIgZ2VuZXJhdG9yc18uIEhlcmUgaXMgYSBzdW1tYXJ5IG9mIHRoZW0sCit3aGlj
aCBhcmUgYWxsIGluIHRoZSBgdGVzdGluZ2AgbmFtZXNwYWNlOgorCit8IGBSYW5nZShiZWdpbiwg
ZW5kWywgc3RlcF0pYCB8IFlpZWxkcyB2YWx1ZXMgYHtiZWdpbiwgYmVnaW4rc3RlcCwgYmVnaW4r
c3RlcCtzdGVwLCAuLi59YC4gVGhlIHZhbHVlcyBkbyBub3QgaW5jbHVkZSBgZW5kYC4gYHN0ZXBg
IGRlZmF1bHRzIHRvIDEuIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBg
VmFsdWVzKHYxLCB2MiwgLi4uLCB2TilgICAgfCBZaWVsZHMgdmFsdWVzIGB7djEsIHYyLCAuLi4s
IHZOfWAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBWYWx1ZXNJbihjb250YWluZXIpYCBh
bmQgYFZhbHVlc0luKGJlZ2luLCBlbmQpYCB8IFlpZWxkcyB2YWx1ZXMgZnJvbSBhIEMtc3R5bGUg
YXJyYXksIGFuIFNUTC1zdHlsZSBjb250YWluZXIsIG9yIGFuIGl0ZXJhdG9yIHJhbmdlIGBbYmVn
aW4sIGVuZClgLiBgY29udGFpbmVyYCwgYGJlZ2luYCwgYW5kIGBlbmRgIGNhbiBiZSBleHByZXNz
aW9ucyB3aG9zZSB2YWx1ZXMgYXJlIGRldGVybWluZWQgYXQgcnVuIHRpbWUuICB8Cit8IGBCb29s
KClgICAgICAgICAgICAgICAgICAgICB8IFlpZWxkcyBzZXF1ZW5jZSBge2ZhbHNlLCB0cnVlfWAu
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYENvbWJpbmUoZzEsIGcyLCAuLi4sIGdOKWAg
IHwgWWllbGRzIGFsbCBjb21iaW5hdGlvbnMgKHRoZSBDYXJ0ZXNpYW4gcHJvZHVjdCBmb3IgdGhl
IG1hdGggc2F2dnkpIG9mIHRoZSB2YWx1ZXMgZ2VuZXJhdGVkIGJ5IHRoZSBgTmAgZ2VuZXJhdG9y
cy4gVGhpcyBpcyBvbmx5IGF2YWlsYWJsZSBpZiB5b3VyIHN5c3RlbSBwcm92aWRlcyB0aGUgYDx0
cjEvdHVwbGU+YCBoZWFkZXIuIElmIHlvdSBhcmUgc3VyZSB5b3VyIHN5c3RlbSBkb2VzLCBhbmQg
R29vZ2xlIFRlc3QgZGlzYWdyZWVzLCB5b3UgY2FuIG92ZXJyaWRlIGl0IGJ5IGRlZmluaW5nIGBH
VEVTVF9IQVNfVFIxX1RVUExFPTFgLiBTZWUgY29tbWVudHMgaW4gW2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcG9ydC5oXSguLi9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQu
aCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uIHwKKworRm9yIG1vcmUgZGV0YWlscywgc2VlIHRoZSBj
b21tZW50cyBhdCB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlc2UgZnVuY3Rpb25zIGluIHRoZSBbc291
cmNlIGNvZGVdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oKS4KKworVGhlIGZv
bGxvd2luZyBzdGF0ZW1lbnQgd2lsbCBpbnN0YW50aWF0ZSB0ZXN0cyBmcm9tIHRoZSBgRm9vVGVz
dGAgdGVzdCBjYXNlCitlYWNoIHdpdGggcGFyYW1ldGVyIHZhbHVlcyBgIm1lZW55ImAsIGAibWlu
eSJgLCBhbmQgYCJtb2UiYC4KKworYGBgCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChJbnN0YW50
aWF0aW9uTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvb1Rlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygibWVlbnkiLCAibWlueSIsICJtb2UiKSk7
CitgYGAKKworVG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50IGluc3RhbmNlcyBvZiB0aGUgcGF0dGVy
biAoeWVzLCB5b3UgY2FuCitpbnN0YW50aWF0ZSBpdCBtb3JlIHRoYW4gb25jZSksIHRoZSBmaXJz
dCBhcmd1bWVudCB0bworYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCBpcyBhIHByZWZpeCB0aGF0
IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGFjdHVhbAordGVzdCBjYXNlIG5hbWUuIFJlbWVtYmVyIHRv
IHBpY2sgdW5pcXVlIHByZWZpeGVzIGZvciBkaWZmZXJlbnQKK2luc3RhbnRpYXRpb25zLiBUaGUg
dGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhhdmUgdGhlc2UKK25hbWVz
OgorCisgICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMGAgZm9yIGAibWVl
bnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzFgIGZvciBgIm1p
bnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzJgIGZvciBgIm1v
ZSJgCisgICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMGAgZm9yIGAi
bWVlbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzFgIGZv
ciBgIm1pbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzJg
IGZvciBgIm1vZSJgCisKK1lvdSBjYW4gdXNlIHRoZXNlIG5hbWVzIGluIFstLWd0ZXN0XF9maWx0
ZXJdKCNydW5uaW5nLWEtc3Vic2V0LW9mLXRoZS10ZXN0cykuCisKK1RoaXMgc3RhdGVtZW50IHdp
bGwgaW5zdGFudGlhdGUgYWxsIHRlc3RzIGZyb20gYEZvb1Rlc3RgIGFnYWluLCBlYWNoCit3aXRo
IHBhcmFtZXRlciB2YWx1ZXMgYCJjYXQiYCBhbmQgYCJkb2ciYDoKKworYGBgCitjb25zdCBjaGFy
KiBwZXRzW10gPSB7ImNhdCIsICJkb2cifTsKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFub3Ro
ZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6
dGVzdGluZzo6VmFsdWVzSW4ocGV0cykpOworYGBgCisKK1RoZSB0ZXN0cyBmcm9tIHRoZSBpbnN0
YW50aWF0aW9uIGFib3ZlIHdpbGwgaGF2ZSB0aGVzZSBuYW1lczoKKworICAqIGBBbm90aGVySW5z
dGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8wYCBmb3IgYCJjYXQiYAorICAqIGBBbm90
aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8xYCBmb3IgYCJkb2ciYAorICAq
IGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8wYCBmb3IgYCJj
YXQiYAorICAqIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8x
YCBmb3IgYCJkb2ciYAorCitQbGVhc2Ugbm90ZSB0aGF0IGBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UGAgd2lsbCBpbnN0YW50aWF0ZSBfYWxsXwordGVzdHMgaW4gdGhlIGdpdmVuIHRlc3QgY2FzZSwg
d2hldGhlciB0aGVpciBkZWZpbml0aW9ucyBjb21lIGJlZm9yZSBvcgorX2FmdGVyXyB0aGUgYElO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCBzdGF0ZW1lbnQuCisKK1lvdSBjYW4gc2VlCitbdGhlc2Vd
KC4uL3NhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYykKK1tmaWxlc10oLi4vc2FtcGxlcy9zYW1w
bGU4X3VuaXR0ZXN0LmNjKSBmb3IgbW9yZSBleGFtcGxlcy4KKworX0F2YWlsYWJpbGl0eV86IExp
bnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYzsgc2luY2UgdmVy
c2lvbiAxLjIuMC4KKworIyMgQ3JlYXRpbmcgVmFsdWUtUGFyYW1ldGVyaXplZCBBYnN0cmFjdCBU
ZXN0cyAjIworCitJbiB0aGUgYWJvdmUsIHdlIGRlZmluZSBhbmQgaW5zdGFudGlhdGUgYEZvb1Rl
c3RgIGluIHRoZSBzYW1lIHNvdXJjZQorZmlsZS4gU29tZXRpbWVzIHlvdSBtYXkgd2FudCB0byBk
ZWZpbmUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBpbiBhCitsaWJyYXJ5IGFuZCBsZXQgb3Ro
ZXIgcGVvcGxlIGluc3RhbnRpYXRlIHRoZW0gbGF0ZXIuIFRoaXMgcGF0dGVybiBpcwora25vd24g
YXMgPGk+YWJzdHJhY3QgdGVzdHM8L2k+LiBBcyBhbiBleGFtcGxlIG9mIGl0cyBhcHBsaWNhdGlv
biwgd2hlbiB5b3UKK2FyZSBkZXNpZ25pbmcgYW4gaW50ZXJmYWNlIHlvdSBjYW4gd3JpdGUgYSBz
dGFuZGFyZCBzdWl0ZSBvZiBhYnN0cmFjdAordGVzdHMgKHBlcmhhcHMgdXNpbmcgYSBmYWN0b3J5
IGZ1bmN0aW9uIGFzIHRoZSB0ZXN0IHBhcmFtZXRlcikgdGhhdAorYWxsIGltcGxlbWVudGF0aW9u
cyBvZiB0aGUgaW50ZXJmYWNlIGFyZSBleHBlY3RlZCB0byBwYXNzLiBXaGVuCitzb21lb25lIGlt
cGxlbWVudHMgdGhlIGludGVyZmFjZSwgaGUgY2FuIGluc3RhbnRpYXRlIHlvdXIgc3VpdGUgdG8g
Z2V0CithbGwgdGhlIGludGVyZmFjZS1jb25mb3JtYW5jZSB0ZXN0cyBmb3IgZnJlZS4KKworVG8g
ZGVmaW5lIGFic3RyYWN0IHRlc3RzLCB5b3Ugc2hvdWxkIG9yZ2FuaXplIHlvdXIgY29kZSBsaWtl
IHRoaXM6CisKKyAgMS4gUHV0IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBwYXJhbWV0ZXJpemVkIHRl
c3QgZml4dHVyZSBjbGFzcyAoZS5nLiBgRm9vVGVzdGApIGluIGEgaGVhZGVyIGZpbGUsIHNheSBg
Zm9vX3BhcmFtX3Rlc3QuaGAuIFRoaW5rIG9mIHRoaXMgYXMgX2RlY2xhcmluZ18geW91ciBhYnN0
cmFjdCB0ZXN0cy4KKyAgMS4gUHV0IHRoZSBgVEVTVF9QYCBkZWZpbml0aW9ucyBpbiBgZm9vX3Bh
cmFtX3Rlc3QuY2NgLCB3aGljaCBpbmNsdWRlcyBgZm9vX3BhcmFtX3Rlc3QuaGAuIFRoaW5rIG9m
IHRoaXMgYXMgX2ltcGxlbWVudGluZ18geW91ciBhYnN0cmFjdCB0ZXN0cy4KKworT25jZSB0aGV5
IGFyZSBkZWZpbmVkLCB5b3UgY2FuIGluc3RhbnRpYXRlIHRoZW0gYnkgaW5jbHVkaW5nCitgZm9v
X3BhcmFtX3Rlc3QuaGAsIGludm9raW5nIGBJTlNUQU5USUFURV9URVNUX0NBU0VfUCgpYCwgYW5k
IGxpbmtpbmcKK3dpdGggYGZvb19wYXJhbV90ZXN0LmNjYC4gWW91IGNhbiBpbnN0YW50aWF0ZSB0
aGUgc2FtZSBhYnN0cmFjdCB0ZXN0CitjYXNlIG11bHRpcGxlIHRpbWVzLCBwb3NzaWJseSBpbiBk
aWZmZXJlbnQgc291cmNlIGZpbGVzLgorCisjIFR5cGVkIFRlc3RzICMKKworU3VwcG9zZSB5b3Ug
aGF2ZSBtdWx0aXBsZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZAor
d2FudCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb2YgdGhlbSBzYXRpc2Z5IHNvbWUgY29tbW9uIHJl
cXVpcmVtZW50cy4KK09yLCB5b3UgbWF5IGhhdmUgZGVmaW5lZCBzZXZlcmFsIHR5cGVzIHRoYXQg
YXJlIHN1cHBvc2VkIHRvIGNvbmZvcm0gdG8KK3RoZSBzYW1lICJjb25jZXB0IiBhbmQgeW91IHdh
bnQgdG8gdmVyaWZ5IGl0LiAgSW4gYm90aCBjYXNlcywgeW91IHdhbnQKK3RoZSBzYW1lIHRlc3Qg
bG9naWMgcmVwZWF0ZWQgZm9yIGRpZmZlcmVudCB0eXBlcy4KKworV2hpbGUgeW91IGNhbiB3cml0
ZSBvbmUgYFRFU1RgIG9yIGBURVNUX0ZgIGZvciBlYWNoIHR5cGUgeW91IHdhbnQgdG8KK3Rlc3Qg
KGFuZCB5b3UgbWF5IGV2ZW4gZmFjdG9yIHRoZSB0ZXN0IGxvZ2ljIGludG8gYSBmdW5jdGlvbiB0
ZW1wbGF0ZQordGhhdCB5b3UgaW52b2tlIGZyb20gdGhlIGBURVNUYCksIGl0J3MgdGVkaW91cyBh
bmQgZG9lc24ndCBzY2FsZToKK2lmIHlvdSB3YW50IF9tXyB0ZXN0cyBvdmVyIF9uXyB0eXBlcywg
eW91J2xsIGVuZCB1cCB3cml0aW5nIF9tXCpuXworYFRFU1Rgcy4KKworX1R5cGVkIHRlc3RzXyBh
bGxvdyB5b3UgdG8gcmVwZWF0IHRoZSBzYW1lIHRlc3QgbG9naWMgb3ZlciBhIGxpc3Qgb2YKK3R5
cGVzLiAgWW91IG9ubHkgbmVlZCB0byB3cml0ZSB0aGUgdGVzdCBsb2dpYyBvbmNlLCBhbHRob3Vn
aCB5b3UgbXVzdAora25vdyB0aGUgdHlwZSBsaXN0IHdoZW4gd3JpdGluZyB0eXBlZCB0ZXN0cy4g
IEhlcmUncyBob3cgeW91IGRvIGl0OgorCitGaXJzdCwgZGVmaW5lIGEgZml4dHVyZSBjbGFzcyB0
ZW1wbGF0ZS4gIEl0IHNob3VsZCBiZSBwYXJhbWV0ZXJpemVkCitieSBhIHR5cGUuICBSZW1lbWJl
ciB0byBkZXJpdmUgaXQgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0YDoKKworYGBgCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBw
dWJsaWM6CisgIC4uLgorICB0eXBlZGVmIHN0ZDo6bGlzdDxUPiBMaXN0OworICBzdGF0aWMgVCBz
aGFyZWRfOworICBUIHZhbHVlXzsKK307CitgYGAKKworTmV4dCwgYXNzb2NpYXRlIGEgbGlzdCBv
ZiB0eXBlcyB3aXRoIHRoZSB0ZXN0IGNhc2UsIHdoaWNoIHdpbGwgYmUKK3JlcGVhdGVkIGZvciBl
YWNoIHR5cGUgaW4gdGhlIGxpc3Q6CisKK2BgYAordHlwZWRlZiA6OnRlc3Rpbmc6OlR5cGVzPGNo
YXIsIGludCwgdW5zaWduZWQgaW50PiBNeVR5cGVzOworVFlQRURfVEVTVF9DQVNFKEZvb1Rlc3Qs
IE15VHlwZXMpOworYGBgCisKK1RoZSBgdHlwZWRlZmAgaXMgbmVjZXNzYXJ5IGZvciB0aGUgYFRZ
UEVEX1RFU1RfQ0FTRWAgbWFjcm8gdG8gcGFyc2UKK2NvcnJlY3RseS4gIE90aGVyd2lzZSB0aGUg
Y29tcGlsZXIgd2lsbCB0aGluayB0aGF0IGVhY2ggY29tbWEgaW4gdGhlCit0eXBlIGxpc3QgaW50
cm9kdWNlcyBhIG5ldyBtYWNybyBhcmd1bWVudC4KKworVGhlbiwgdXNlIGBUWVBFRF9URVNUKClg
IGluc3RlYWQgb2YgYFRFU1RfRigpYCB0byBkZWZpbmUgYSB0eXBlZCB0ZXN0Citmb3IgdGhpcyB0
ZXN0IGNhc2UuICBZb3UgY2FuIHJlcGVhdCB0aGlzIGFzIG1hbnkgdGltZXMgYXMgeW91IHdhbnQ6
CisKK2BgYAorVFlQRURfVEVTVChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJbnNpZGUgYSB0
ZXN0LCByZWZlciB0byB0aGUgc3BlY2lhbCBuYW1lIFR5cGVQYXJhbSB0byBnZXQgdGhlIHR5cGUK
KyAgLy8gcGFyYW1ldGVyLiAgU2luY2Ugd2UgYXJlIGluc2lkZSBhIGRlcml2ZWQgY2xhc3MgdGVt
cGxhdGUsIEMrKyByZXF1aXJlcworICAvLyB1cyB0byB2aXNpdCB0aGUgbWVtYmVycyBvZiBGb29U
ZXN0IHZpYSAndGhpcycuCisgIFR5cGVQYXJhbSBuID0gdGhpcy0+dmFsdWVfOworCisgIC8vIFRv
IHZpc2l0IHN0YXRpYyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlLCBhZGQgdGhlICdUZXN0Rml4dHVy
ZTo6JworICAvLyBwcmVmaXguCisgIG4gKz0gVGVzdEZpeHR1cmU6OnNoYXJlZF87CisKKyAgLy8g
VG8gcmVmZXIgdG8gdHlwZWRlZnMgaW4gdGhlIGZpeHR1cmUsIGFkZCB0aGUgJ3R5cGVuYW1lIFRl
c3RGaXh0dXJlOjonCisgIC8vIHByZWZpeC4gIFRoZSAndHlwZW5hbWUnIGlzIHJlcXVpcmVkIHRv
IHNhdGlzZnkgdGhlIGNvbXBpbGVyLgorICB0eXBlbmFtZSBUZXN0Rml4dHVyZTo6TGlzdCB2YWx1
ZXM7CisgIHZhbHVlcy5wdXNoX2JhY2sobik7CisgIC4uLgorfQorCitUWVBFRF9URVNUKEZvb1Rl
c3QsIEhhc1Byb3BlcnR5QSkgeyAuLi4gfQorYGBgCisKK1lvdSBjYW4gc2VlIGBzYW1wbGVzL3Nh
bXBsZTZfdW5pdHRlc3QuY2NgIGZvciBhIGNvbXBsZXRlIGV4YW1wbGUuCisKK19BdmFpbGFiaWxp
dHk6XyBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBNYWM7Citz
aW5jZSB2ZXJzaW9uIDEuMS4wLgorCisjIFR5cGUtUGFyYW1ldGVyaXplZCBUZXN0cyAjCisKK19U
eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHNfIGFyZSBsaWtlIHR5cGVkIHRlc3RzLCBleGNlcHQgdGhh
dCB0aGV5Citkb24ndCByZXF1aXJlIHlvdSB0byBrbm93IHRoZSBsaXN0IG9mIHR5cGVzIGFoZWFk
IG9mIHRpbWUuICBJbnN0ZWFkLAoreW91IGNhbiBkZWZpbmUgdGhlIHRlc3QgbG9naWMgZmlyc3Qg
YW5kIGluc3RhbnRpYXRlIGl0IHdpdGggZGlmZmVyZW50Cit0eXBlIGxpc3RzIGxhdGVyLiAgWW91
IGNhbiBldmVuIGluc3RhbnRpYXRlIGl0IG1vcmUgdGhhbiBvbmNlIGluIHRoZQorc2FtZSBwcm9n
cmFtLgorCitJZiB5b3UgYXJlIGRlc2lnbmluZyBhbiBpbnRlcmZhY2Ugb3IgY29uY2VwdCwgeW91
IGNhbiBkZWZpbmUgYSBzdWl0ZQorb2YgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzIHRvIHZlcmlm
eSBwcm9wZXJ0aWVzIHRoYXQgYW55IHZhbGlkCitpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaW50ZXJm
YWNlL2NvbmNlcHQgc2hvdWxkIGhhdmUuICBUaGVuLCB0aGUgYXV0aG9yCitvZiBlYWNoIGltcGxl
bWVudGF0aW9uIGNhbiBqdXN0IGluc3RhbnRpYXRlIHRoZSB0ZXN0IHN1aXRlIHdpdGggaGlzCit0
eXBlIHRvIHZlcmlmeSB0aGF0IGl0IGNvbmZvcm1zIHRvIHRoZSByZXF1aXJlbWVudHMsIHdpdGhv
dXQgaGF2aW5nIHRvCit3cml0ZSBzaW1pbGFyIHRlc3RzIHJlcGVhdGVkbHkuICBIZXJlJ3MgYW4g
ZXhhbXBsZToKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUsIGFzIHdl
IGRpZCB3aXRoIHR5cGVkIHRlc3RzOgorCitgYGAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xh
c3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICAuLi4KK307CitgYGAKKwor
TmV4dCwgZGVjbGFyZSB0aGF0IHlvdSB3aWxsIGRlZmluZSBhIHR5cGUtcGFyYW1ldGVyaXplZCB0
ZXN0IGNhc2U6CisKK2BgYAorVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7CitgYGAKKworVGhl
IGBfUGAgc3VmZml4IGlzIGZvciAicGFyYW1ldGVyaXplZCIgb3IgInBhdHRlcm4iLCB3aGljaGV2
ZXIgeW91CitwcmVmZXIgdG8gdGhpbmsuCisKK1RoZW4sIHVzZSBgVFlQRURfVEVTVF9QKClgIHRv
IGRlZmluZSBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LiAgWW91CitjYW4gcmVwZWF0IHRoaXMg
YXMgbWFueSB0aW1lcyBhcyB5b3Ugd2FudDoKKworYGBgCitUWVBFRF9URVNUX1AoRm9vVGVzdCwg
RG9lc0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIgdG8gVHlwZVBhcmFtIHRvIGdl
dCB0aGUgdHlwZSBwYXJhbWV0ZXIuCisgIFR5cGVQYXJhbSBuID0gMDsKKyAgLi4uCit9CisKK1RZ
UEVEX1RFU1RfUChGb29UZXN0LCBIYXNQcm9wZXJ0eUEpIHsgLi4uIH0KK2BgYAorCitOb3cgdGhl
IHRyaWNreSBwYXJ0OiB5b3UgbmVlZCB0byByZWdpc3RlciBhbGwgdGVzdCBwYXR0ZXJucyB1c2lu
ZyB0aGUKK2BSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUGAgbWFjcm8gYmVmb3JlIHlvdSBjYW4g
aW5zdGFudGlhdGUgdGhlbS4KK1RoZSBmaXJzdCBhcmd1bWVudCBvZiB0aGUgbWFjcm8gaXMgdGhl
IHRlc3QgY2FzZSBuYW1lOyB0aGUgcmVzdCBhcmUKK3RoZSBuYW1lcyBvZiB0aGUgdGVzdHMgaW4g
dGhpcyB0ZXN0IGNhc2U6CisKK2BgYAorUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERvZXNCbGFoLCBIYXNQcm9wZXJ0eUEpOwor
YGBgCisKK0ZpbmFsbHksIHlvdSBhcmUgZnJlZSB0byBpbnN0YW50aWF0ZSB0aGUgcGF0dGVybiB3
aXRoIHRoZSB0eXBlcyB5b3UKK3dhbnQuICBJZiB5b3UgcHV0IHRoZSBhYm92ZSBjb2RlIGluIGEg
aGVhZGVyIGZpbGUsIHlvdSBjYW4gYCNpbmNsdWRlYAoraXQgaW4gbXVsdGlwbGUgQysrIHNvdXJj
ZSBmaWxlcyBhbmQgaW5zdGFudGlhdGUgaXQgbXVsdGlwbGUgdGltZXMuCisKK2BgYAordHlwZWRl
ZiA6OnRlc3Rpbmc6OlR5cGVzPGNoYXIsIGludCwgdW5zaWduZWQgaW50PiBNeVR5cGVzOworSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMpOworYGBgCisK
K1RvIGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4sIHRoZSBm
aXJzdCBhcmd1bWVudAordG8gdGhlIGBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUGAgbWFj
cm8gaXMgYSBwcmVmaXggdGhhdCB3aWxsIGJlCithZGRlZCB0byB0aGUgYWN0dWFsIHRlc3QgY2Fz
ZSBuYW1lLiAgUmVtZW1iZXIgdG8gcGljayB1bmlxdWUgcHJlZml4ZXMKK2ZvciBkaWZmZXJlbnQg
aW5zdGFuY2VzLgorCitJbiB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoZSB0eXBlIGxpc3QgY29u
dGFpbnMgb25seSBvbmUgdHlwZSwgeW91CitjYW4gd3JpdGUgdGhhdCB0eXBlIGRpcmVjdGx5IHdp
dGhvdXQgYDo6dGVzdGluZzo6VHlwZXM8Li4uPmAsIGxpa2UgdGhpczoKKworYGBgCitJTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgaW50KTsKK2BgYAorCitZb3UgY2Fu
IHNlZSBgc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjYCBmb3IgYSBjb21wbGV0ZSBleGFtcGxl
LgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9y
IGFib3ZlKSwgTWFjOworc2luY2UgdmVyc2lvbiAxLjEuMC4KKworIyBUZXN0aW5nIFByaXZhdGUg
Q29kZSAjCisKK0lmIHlvdSBjaGFuZ2UgeW91ciBzb2Z0d2FyZSdzIGludGVybmFsIGltcGxlbWVu
dGF0aW9uLCB5b3VyIHRlc3RzIHNob3VsZCBub3QKK2JyZWFrIGFzIGxvbmcgYXMgdGhlIGNoYW5n
ZSBpcyBub3Qgb2JzZXJ2YWJsZSBieSB1c2Vycy4gVGhlcmVmb3JlLCBwZXIgdGhlCitfYmxhY2st
Ym94IHRlc3RpbmcgcHJpbmNpcGxlXywgbW9zdCBvZiB0aGUgdGltZSB5b3Ugc2hvdWxkIHRlc3Qg
eW91ciBjb2RlCit0aHJvdWdoIGl0cyBwdWJsaWMgaW50ZXJmYWNlcy4KKworSWYgeW91IHN0aWxs
IGZpbmQgeW91cnNlbGYgbmVlZGluZyB0byB0ZXN0IGludGVybmFsIGltcGxlbWVudGF0aW9uIGNv
ZGUsCitjb25zaWRlciBpZiB0aGVyZSdzIGEgYmV0dGVyIGRlc2lnbiB0aGF0IHdvdWxkbid0IHJl
cXVpcmUgeW91IHRvIGRvIHNvLiBJZiB5b3UKK2Fic29sdXRlbHkgaGF2ZSB0byB0ZXN0IG5vbi1w
dWJsaWMgaW50ZXJmYWNlIGNvZGUgdGhvdWdoLCB5b3UgY2FuLiBUaGVyZSBhcmUKK3R3byBjYXNl
cyB0byBjb25zaWRlcjoKKworICAqIFN0YXRpYyBmdW5jdGlvbnMgKF9ub3RfIHRoZSBzYW1lIGFz
IHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zISkgb3IgdW5uYW1lZCBuYW1lc3BhY2VzLCBhbmQKKyAg
KiBQcml2YXRlIG9yIHByb3RlY3RlZCBjbGFzcyBtZW1iZXJzCisKKyMjIFN0YXRpYyBGdW5jdGlv
bnMgIyMKKworQm90aCBzdGF0aWMgZnVuY3Rpb25zIGFuZCBkZWZpbml0aW9ucy9kZWNsYXJhdGlv
bnMgaW4gYW4gdW5uYW1lZCBuYW1lc3BhY2UgYXJlCitvbmx5IHZpc2libGUgd2l0aGluIHRoZSBz
YW1lIHRyYW5zbGF0aW9uIHVuaXQuIFRvIHRlc3QgdGhlbSwgeW91IGNhbiBgI2luY2x1ZGVgCit0
aGUgZW50aXJlIGAuY2NgIGZpbGUgYmVpbmcgdGVzdGVkIGluIHlvdXIgYCpfdGVzdC5jY2AgZmls
ZS4gKGAjaW5jbHVkZWBpbmcgYC5jY2AKK2ZpbGVzIGlzIG5vdCBhIGdvb2Qgd2F5IHRvIHJldXNl
IGNvZGUgLSB5b3Ugc2hvdWxkIG5vdCBkbyB0aGlzIGluIHByb2R1Y3Rpb24KK2NvZGUhKQorCitI
b3dldmVyLCBhIGJldHRlciBhcHByb2FjaCBpcyB0byBtb3ZlIHRoZSBwcml2YXRlIGNvZGUgaW50
byB0aGUKK2Bmb286OmludGVybmFsYCBuYW1lc3BhY2UsIHdoZXJlIGBmb29gIGlzIHRoZSBuYW1l
c3BhY2UgeW91ciBwcm9qZWN0IG5vcm1hbGx5Cit1c2VzLCBhbmQgcHV0IHRoZSBwcml2YXRlIGRl
Y2xhcmF0aW9ucyBpbiBhIGAqLWludGVybmFsLmhgIGZpbGUuIFlvdXIKK3Byb2R1Y3Rpb24gYC5j
Y2AgZmlsZXMgYW5kIHlvdXIgdGVzdHMgYXJlIGFsbG93ZWQgdG8gaW5jbHVkZSB0aGlzIGludGVy
bmFsCitoZWFkZXIsIGJ1dCB5b3VyIGNsaWVudHMgYXJlIG5vdC4gVGhpcyB3YXksIHlvdSBjYW4g
ZnVsbHkgdGVzdCB5b3VyIGludGVybmFsCitpbXBsZW1lbnRhdGlvbiB3aXRob3V0IGxlYWtpbmcg
aXQgdG8geW91ciBjbGllbnRzLgorCisjIyBQcml2YXRlIENsYXNzIE1lbWJlcnMgIyMKKworUHJp
dmF0ZSBjbGFzcyBtZW1iZXJzIGFyZSBvbmx5IGFjY2Vzc2libGUgZnJvbSB3aXRoaW4gdGhlIGNs
YXNzIG9yIGJ5IGZyaWVuZHMuCitUbyBhY2Nlc3MgYSBjbGFzcycgcHJpdmF0ZSBtZW1iZXJzLCB5
b3UgY2FuIGRlY2xhcmUgeW91ciB0ZXN0IGZpeHR1cmUgYXMgYQorZnJpZW5kIHRvIHRoZSBjbGFz
cyBhbmQgZGVmaW5lIGFjY2Vzc29ycyBpbiB5b3VyIGZpeHR1cmUuIFRlc3RzIHVzaW5nIHRoZQor
Zml4dHVyZSBjYW4gdGhlbiBhY2Nlc3MgdGhlIHByaXZhdGUgbWVtYmVycyBvZiB5b3VyIHByb2R1
Y3Rpb24gY2xhc3MgdmlhIHRoZQorYWNjZXNzb3JzIGluIHRoZSBmaXh0dXJlLiBOb3RlIHRoYXQg
ZXZlbiB0aG91Z2ggeW91ciBmaXh0dXJlIGlzIGEgZnJpZW5kIHRvCit5b3VyIHByb2R1Y3Rpb24g
Y2xhc3MsIHlvdXIgdGVzdHMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IGZyaWVuZHMgdG8gaXQsIGFz
IHRoZXkKK2FyZSB0ZWNobmljYWxseSBkZWZpbmVkIGluIHN1Yi1jbGFzc2VzIG9mIHRoZSBmaXh0
dXJlLgorCitBbm90aGVyIHdheSB0byB0ZXN0IHByaXZhdGUgbWVtYmVycyBpcyB0byByZWZhY3Rv
ciB0aGVtIGludG8gYW4gaW1wbGVtZW50YXRpb24KK2NsYXNzLCB3aGljaCBpcyB0aGVuIGRlY2xh
cmVkIGluIGEgYCotaW50ZXJuYWwuaGAgZmlsZS4gWW91ciBjbGllbnRzIGFyZW4ndAorYWxsb3dl
ZCB0byBpbmNsdWRlIHRoaXMgaGVhZGVyIGJ1dCB5b3VyIHRlc3RzIGNhbi4gU3VjaCBpcyBjYWxs
ZWQgdGhlIFBpbXBsCisoUHJpdmF0ZSBJbXBsZW1lbnRhdGlvbikgaWRpb20uCisKK09yLCB5b3Ug
Y2FuIGRlY2xhcmUgYW4gaW5kaXZpZHVhbCB0ZXN0IGFzIGEgZnJpZW5kIG9mIHlvdXIgY2xhc3Mg
YnkgYWRkaW5nIHRoaXMKK2xpbmUgaW4gdGhlIGNsYXNzIGJvZHk6CisKK2BgYAorRlJJRU5EX1RF
U1QoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSk7CitgYGAKKworRm9yIGV4YW1wbGUsCitgYGAKKy8v
IGZvby5oCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3RfcHJvZC5oIgorCisvLyBEZWZpbmVzIEZSSUVO
RF9URVNULgorY2xhc3MgRm9vIHsKKyAgLi4uCisgcHJpdmF0ZToKKyAgRlJJRU5EX1RFU1QoRm9v
VGVzdCwgQmFyUmV0dXJuc1plcm9Pbk51bGwpOworICBpbnQgQmFyKHZvaWQqIHgpOworfTsKKwor
Ly8gZm9vX3Rlc3QuY2MKKy4uLgorVEVTVChGb29UZXN0LCBCYXJSZXR1cm5zWmVyb09uTnVsbCkg
eworICBGb28gZm9vOworICBFWFBFQ1RfRVEoMCwgZm9vLkJhcihOVUxMKSk7CisgIC8vIFVzZXMg
Rm9vJ3MgcHJpdmF0ZSBtZW1iZXIgQmFyKCkuCit9CitgYGAKKworUGF5IHNwZWNpYWwgYXR0ZW50
aW9uIHdoZW4geW91ciBjbGFzcyBpcyBkZWZpbmVkIGluIGEgbmFtZXNwYWNlLCBhcyB5b3Ugc2hv
dWxkCitkZWZpbmUgeW91ciB0ZXN0IGZpeHR1cmVzIGFuZCB0ZXN0cyBpbiB0aGUgc2FtZSBuYW1l
c3BhY2UgaWYgeW91IHdhbnQgdGhlbSB0bworYmUgZnJpZW5kcyBvZiB5b3VyIGNsYXNzLiBGb3Ig
ZXhhbXBsZSwgaWYgdGhlIGNvZGUgdG8gYmUgdGVzdGVkIGxvb2tzIGxpa2U6CisKK2BgYAorbmFt
ZXNwYWNlIG15X25hbWVzcGFjZSB7CisKK2NsYXNzIEZvbyB7CisgIGZyaWVuZCBjbGFzcyBGb29U
ZXN0OworICBGUklFTkRfVEVTVChGb29UZXN0LCBCYXIpOworICBGUklFTkRfVEVTVChGb29UZXN0
LCBCYXopOworICAuLi4KKyAgZGVmaW5pdGlvbiBvZiB0aGUgY2xhc3MgRm9vCisgIC4uLgorfTsK
KworfSAgLy8gbmFtZXNwYWNlIG15X25hbWVzcGFjZQorYGBgCisKK1lvdXIgdGVzdCBjb2RlIHNo
b3VsZCBiZSBzb21ldGhpbmcgbGlrZToKKworYGBgCituYW1lc3BhY2UgbXlfbmFtZXNwYWNlIHsK
K2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6Cisg
IC4uLgorfTsKKworVEVTVF9GKEZvb1Rlc3QsIEJhcikgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3Qs
IEJheikgeyAuLi4gfQorCit9ICAvLyBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlCitgYGAKKworIyBD
YXRjaGluZyBGYWlsdXJlcyAjCisKK0lmIHlvdSBhcmUgYnVpbGRpbmcgYSB0ZXN0aW5nIHV0aWxp
dHkgb24gdG9wIG9mIEdvb2dsZSBUZXN0LCB5b3UnbGwKK3dhbnQgdG8gdGVzdCB5b3VyIHV0aWxp
dHkuICBXaGF0IGZyYW1ld29yayB3b3VsZCB5b3UgdXNlIHRvIHRlc3QgaXQ/CitHb29nbGUgVGVz
dCwgb2YgY291cnNlLgorCitUaGUgY2hhbGxlbmdlIGlzIHRvIHZlcmlmeSB0aGF0IHlvdXIgdGVz
dGluZyB1dGlsaXR5IHJlcG9ydHMgZmFpbHVyZXMKK2NvcnJlY3RseS4gIEluIGZyYW1ld29ya3Mg
dGhhdCByZXBvcnQgYSBmYWlsdXJlIGJ5IHRocm93aW5nIGFuCitleGNlcHRpb24sIHlvdSBjb3Vs
ZCBjYXRjaCB0aGUgZXhjZXB0aW9uIGFuZCBhc3NlcnQgb24gaXQuICBCdXQgR29vZ2xlCitUZXN0
IGRvZXNuJ3QgdXNlIGV4Y2VwdGlvbnMsIHNvIGhvdyBkbyB3ZSB0ZXN0IHRoYXQgYSBwaWVjZSBv
ZiBjb2RlCitnZW5lcmF0ZXMgYW4gZXhwZWN0ZWQgZmFpbHVyZT8KKworYCJndGVzdC9ndGVzdC1z
cGkuaCJgIGNvbnRhaW5zIHNvbWUgY29uc3RydWN0cyB0byBkbyB0aGlzLiAgQWZ0ZXIgCitgI2lu
Y2x1ZGVgaW5nIHRoaXMgaGVhZGVyLCB5b3UgY2FuIHVzZQorCit8IGBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAorfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKwordG8gYXNzZXJ0IHRoYXQgX3N0YXRl
bWVudF8gZ2VuZXJhdGVzIGEgZmF0YWwgKGUuZy4gYEFTU0VSVF8qYCkgZmFpbHVyZQord2hvc2Ug
bWVzc2FnZSBjb250YWlucyB0aGUgZ2l2ZW4gX3N1YnN0cmluZ18sIG9yIHVzZQorCit8IGBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAorfDotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKworaWYg
eW91IGFyZSBleHBlY3RpbmcgYSBub24tZmF0YWwgKGUuZy4gYEVYUEVDVF8qYCkgZmFpbHVyZS4K
KworRm9yIHRlY2huaWNhbCByZWFzb25zLCB0aGVyZSBhcmUgc29tZSBjYXZlYXRzOgorCisgIDEu
IFlvdSBjYW5ub3Qgc3RyZWFtIGEgZmFpbHVyZSBtZXNzYWdlIHRvIGVpdGhlciBtYWNyby4KKyAg
MS4gX3N0YXRlbWVudF8gaW4gYEVYUEVDVF9GQVRBTF9GQUlMVVJFKClgIGNhbm5vdCByZWZlcmVu
Y2UgbG9jYWwgbm9uLXN0YXRpYyB2YXJpYWJsZXMgb3Igbm9uLXN0YXRpYyBtZW1iZXJzIG9mIGB0
aGlzYCBvYmplY3QuCisgIDEuIF9zdGF0ZW1lbnRfIGluIGBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgp
YCBjYW5ub3QgcmV0dXJuIGEgdmFsdWUuCisKK19Ob3RlOl8gR29vZ2xlIFRlc3QgaXMgZGVzaWdu
ZWQgd2l0aCB0aHJlYWRzIGluIG1pbmQuIE9uY2UgdGhlCitzeW5jaHJvbml6YXRpb24gcHJpbWl0
aXZlcyBpbiBgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCJgIGhhdmUKK2JlZW4gaW1wbGVt
ZW50ZWQsIEdvb2dsZSBUZXN0IHdpbGwgYmVjb21lIHRocmVhZC1zYWZlLCBtZWFuaW5nIHRoYXQK
K3lvdSBjYW4gdGhlbiB1c2UgYXNzZXJ0aW9ucyBpbiBtdWx0aXBsZSB0aHJlYWRzIGNvbmN1cnJl
bnRseS4gQmVmb3JlCit0aGF0LCBob3dldmVyLCBHb29nbGUgVGVzdCBvbmx5IHN1cHBvcnRzIHNp
bmdsZS10aHJlYWRlZCB1c2FnZS4gT25jZQordGhyZWFkLXNhZmUsIGBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRSgpYCBhbmQgYEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKClgCit3aWxsIGNhcHR1cmUgZmFp
bHVyZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkIG9ubHkuIElmIF9zdGF0ZW1lbnRfCitjcmVhdGVz
IG5ldyB0aHJlYWRzLCBmYWlsdXJlcyBpbiB0aGVzZSB0aHJlYWRzIHdpbGwgYmUgaWdub3JlZC4g
SWYKK3lvdSB3YW50IHRvIGNhcHR1cmUgZmFpbHVyZXMgZnJvbSBhbGwgdGhyZWFkcyBpbnN0ZWFk
LCB5b3Ugc2hvdWxkIHVzZQordGhlIGZvbGxvd2luZyBtYWNyb3M6CisKK3wgYEVYUEVDVF9GQVRB
TF9GQUlMVVJFX09OX0FMTF9USFJFQURTKGBfc3RhdGVtZW50LCBzdWJzdHJpbmdfYCk7YCB8Cit8
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tfAorfCBgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoYF9z
dGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtgIHwKKworIyBHZXR0aW5nIHRoZSBDdXJyZW50IFRlc3Qn
cyBOYW1lICMKKworU29tZXRpbWVzIGEgZnVuY3Rpb24gbWF5IG5lZWQgdG8ga25vdyB0aGUgbmFt
ZSBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdC4KK0ZvciBleGFtcGxlLCB5b3UgbWF5IGJl
IHVzaW5nIHRoZSBgU2V0VXAoKWAgbWV0aG9kIG9mIHlvdXIgdGVzdCBmaXh0dXJlIHRvIHNldAor
dGhlIGdvbGRlbiBmaWxlIG5hbWUgYmFzZWQgb24gd2hpY2ggdGVzdCBpcyBydW5uaW5nLiBUaGUg
YDo6dGVzdGluZzo6VGVzdEluZm9gCitjbGFzcyBoYXMgdGhpcyBpbmZvcm1hdGlvbjoKKworYGBg
CituYW1lc3BhY2UgdGVzdGluZyB7CisKK2NsYXNzIFRlc3RJbmZvIHsKKyBwdWJsaWM6CisgIC8v
IFJldHVybnMgdGhlIHRlc3QgY2FzZSBuYW1lIGFuZCB0aGUgdGVzdCBuYW1lLCByZXNwZWN0aXZl
bHkuCisgIC8vCisgIC8vIERvIE5PVCBkZWxldGUgb3IgZnJlZSB0aGUgcmV0dXJuIHZhbHVlIC0g
aXQncyBtYW5hZ2VkIGJ5IHRoZQorICAvLyBUZXN0SW5mbyBjbGFzcy4KKyAgY29uc3QgY2hhciog
dGVzdF9jYXNlX25hbWUoKSBjb25zdDsKKyAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0OworfTsK
KworfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKK2BgYAorCisKKz4gVG8gb2J0YWluIGEgYFRlc3RJ
bmZvYCBvYmplY3QgZm9yIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LCBjYWxsCitgY3VycmVu
dF90ZXN0X2luZm8oKWAgb24gdGhlIGBVbml0VGVzdGAgc2luZ2xldG9uIG9iamVjdDoKKworYGBg
CisvLyBHZXRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0Lgor
Ly8gRG8gTk9UIGRlbGV0ZSB0aGUgcmV0dXJuZWQgb2JqZWN0IC0gaXQncyBtYW5hZ2VkIGJ5IHRo
ZSBVbml0VGVzdCBjbGFzcy4KK2NvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3Rf
aW5mbyA9CisgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVz
dF9pbmZvKCk7CitwcmludGYoIldlIGFyZSBpbiB0ZXN0ICVzIG9mIHRlc3QgY2FzZSAlcy5cbiIs
CisgICAgICAgdGVzdF9pbmZvLT5uYW1lKCksIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7
CitgYGAKKworYGN1cnJlbnRfdGVzdF9pbmZvKClgIHJldHVybnMgYSBudWxsIHBvaW50ZXIgaWYg
bm8gdGVzdCBpcyBydW5uaW5nLiBJbgorcGFydGljdWxhciwgeW91IGNhbm5vdCBmaW5kIHRoZSB0
ZXN0IGNhc2UgbmFtZSBpbiBgVGVzdENhc2VTZXRVcCgpYCwKK2BUZXN0Q2FzZVRlYXJEb3duKClg
ICh3aGVyZSB5b3Uga25vdyB0aGUgdGVzdCBjYXNlIG5hbWUgaW1wbGljaXRseSksIG9yCitmdW5j
dGlvbnMgY2FsbGVkIGZyb20gdGhlbS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dz
LCBNYWMuCisKKyMgRXh0ZW5kaW5nIEdvb2dsZSBUZXN0IGJ5IEhhbmRsaW5nIFRlc3QgRXZlbnRz
ICMKKworR29vZ2xlIFRlc3QgcHJvdmlkZXMgYW4gPGI+ZXZlbnQgbGlzdGVuZXIgQVBJPC9iPiB0
byBsZXQgeW91IHJlY2VpdmUKK25vdGlmaWNhdGlvbnMgYWJvdXQgdGhlIHByb2dyZXNzIG9mIGEg
dGVzdCBwcm9ncmFtIGFuZCB0ZXN0CitmYWlsdXJlcy4gVGhlIGV2ZW50cyB5b3UgY2FuIGxpc3Rl
biB0byBpbmNsdWRlIHRoZSBzdGFydCBhbmQgZW5kIG9mCit0aGUgdGVzdCBwcm9ncmFtLCBhIHRl
c3QgY2FzZSwgb3IgYSB0ZXN0IG1ldGhvZCwgYW1vbmcgb3RoZXJzLiBZb3UgbWF5Cit1c2UgdGhp
cyBBUEkgdG8gYXVnbWVudCBvciByZXBsYWNlIHRoZSBzdGFuZGFyZCBjb25zb2xlIG91dHB1dCwK
K3JlcGxhY2UgdGhlIFhNTCBvdXRwdXQsIG9yIHByb3ZpZGUgYSBjb21wbGV0ZWx5IGRpZmZlcmVu
dCBmb3JtIG9mCitvdXRwdXQsIHN1Y2ggYXMgYSBHVUkgb3IgYSBkYXRhYmFzZS4gWW91IGNhbiBh
bHNvIHVzZSB0ZXN0IGV2ZW50cyBhcworY2hlY2twb2ludHMgdG8gaW1wbGVtZW50IGEgcmVzb3Vy
Y2UgbGVhayBjaGVja2VyLCBmb3IgZXhhbXBsZS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBX
aW5kb3dzLCBNYWM7IHNpbmNlIHYxLjQuMC4KKworIyMgRGVmaW5pbmcgRXZlbnQgTGlzdGVuZXJz
ICMjCisKK1RvIGRlZmluZSBhIGV2ZW50IGxpc3RlbmVyLCB5b3Ugc3ViY2xhc3MgZWl0aGVyCitb
dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMOTkx
KQorb3IgW3Rlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXJdKC4uL2luY2x1ZGUvZ3Rlc3Qv
Z3Rlc3QuaCNMMTA0NCkuCitUaGUgZm9ybWVyIGlzIGFuIChhYnN0cmFjdCkgaW50ZXJmYWNlLCB3
aGVyZSA8aT5lYWNoIHB1cmUgdmlydHVhbCBtZXRob2Q8YnI+CitjYW4gYmUgb3ZlcnJpZGRlbiB0
byBoYW5kbGUgYSB0ZXN0IGV2ZW50PC9pPiAoRm9yIGV4YW1wbGUsIHdoZW4gYSB0ZXN0CitzdGFy
dHMsIHRoZSBgT25UZXN0U3RhcnQoKWAgbWV0aG9kIHdpbGwgYmUgY2FsbGVkLikuIFRoZSBsYXR0
ZXIgcHJvdmlkZXMKK2FuIGVtcHR5IGltcGxlbWVudGF0aW9uIG9mIGFsbCBtZXRob2RzIGluIHRo
ZSBpbnRlcmZhY2UsIHN1Y2ggdGhhdCBhCitzdWJjbGFzcyBvbmx5IG5lZWRzIHRvIG92ZXJyaWRl
IHRoZSBtZXRob2RzIGl0IGNhcmVzIGFib3V0LgorCitXaGVuIGFuIGV2ZW50IGlzIGZpcmVkLCBp
dHMgY29udGV4dCBpcyBwYXNzZWQgdG8gdGhlIGhhbmRsZXIgZnVuY3Rpb24KK2FzIGFuIGFyZ3Vt
ZW50LiBUaGUgZm9sbG93aW5nIGFyZ3VtZW50IHR5cGVzIGFyZSB1c2VkOgorICAqIFtVbml0VGVz
dF0oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0wxMTUxKSByZWZsZWN0cyB0aGUgc3RhdGUgb2Yg
dGhlIGVudGlyZSB0ZXN0IHByb2dyYW0sCisgICogW1Rlc3RDYXNlXSguLi9pbmNsdWRlL2d0ZXN0
L2d0ZXN0LmgjTDc3OCkgaGFzIGluZm9ybWF0aW9uIGFib3V0IGEgdGVzdCBjYXNlLCB3aGljaCBj
YW4gY29udGFpbiBvbmUgb3IgbW9yZSB0ZXN0cywKKyAgKiBbVGVzdEluZm9dKC4uL2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QuaCNMNjQ0KSBjb250YWlucyB0aGUgc3RhdGUgb2YgYSB0ZXN0LCBhbmQKKyAg
KiBbVGVzdFBhcnRSZXN1bHRdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgjTDQ3
KSByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYSB0ZXN0IGFzc2VydGlvbi4KKworQW4gZXZlbnQg
aGFuZGxlciBmdW5jdGlvbiBjYW4gZXhhbWluZSB0aGUgYXJndW1lbnQgaXQgcmVjZWl2ZXMgdG8g
ZmluZAorb3V0IGludGVyZXN0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBldmVudCBhbmQgdGhl
IHRlc3QgcHJvZ3JhbSdzCitzdGF0ZS4gIEhlcmUncyBhbiBleGFtcGxlOgorCitgYGAKKyAgY2xh
c3MgTWluaW1hbGlzdFByaW50ZXIgOiBwdWJsaWMgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExp
c3RlbmVyIHsKKyAgICAvLyBDYWxsZWQgYmVmb3JlIGEgdGVzdCBzdGFydHMuCisgICAgdmlydHVh
bCB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8mIHRlc3RfaW5mbykg
eworICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBzdGFydGluZy5cbiIsCisgICAgICAgICAg
ICAgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOworICAgIH0K
KworICAgIC8vIENhbGxlZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRUVEKCkg
aW52b2NhdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJlc3VsdCgKKyAgICAgICAg
Y29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgeworICAg
ICAgcHJpbnRmKCIlcyBpbiAlczolZFxuJXNcbiIsCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jl
c3VsdC5mYWlsZWQoKSA/ICIqKiogRmFpbHVyZSIgOiAiU3VjY2VzcyIsCisgICAgICAgICAgICAg
dGVzdF9wYXJ0X3Jlc3VsdC5maWxlX25hbWUoKSwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVz
dWx0LmxpbmVfbnVtYmVyKCksCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5zdW1tYXJ5
KCkpOworICAgIH0KKworICAgIC8vIENhbGxlZCBhZnRlciBhIHRlc3QgZW5kcy4KKyAgICB2aXJ0
dWFsIHZvaWQgT25UZXN0RW5kKGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8mIHRlc3RfaW5mbykg
eworICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBlbmRpbmcuXG4iLAorICAgICAgICAgICAg
IHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgICB9Cisg
IH07CitgYGAKKworIyMgVXNpbmcgRXZlbnQgTGlzdGVuZXJzICMjCisKK1RvIHVzZSB0aGUgZXZl
bnQgbGlzdGVuZXIgeW91IGhhdmUgZGVmaW5lZCwgYWRkIGFuIGluc3RhbmNlIG9mIGl0IHRvCit0
aGUgR29vZ2xlIFRlc3QgZXZlbnQgbGlzdGVuZXIgbGlzdCAocmVwcmVzZW50ZWQgYnkgY2xhc3MK
K1tUZXN0RXZlbnRMaXN0ZW5lcnNdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMMTA2NCkKKy0g
bm90ZSB0aGUgInMiIGF0IHRoZSBlbmQgb2YgdGhlIG5hbWUpIGluIHlvdXIKK2BtYWluKClgIGZ1
bmN0aW9uLCBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9URVNUUygpYDoKK2BgYAoraW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOworICAvLyBHZXRzIGhvbGQgb2YgdGhlIGV2ZW50IGxpc3RlbmVyIGxpc3QuCisg
IDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMgPQorICAgICAgOjp0ZXN0
aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCk7CisgIC8vIEFkZHMgYSBs
aXN0ZW5lciB0byB0aGUgZW5kLiAgR29vZ2xlIFRlc3QgdGFrZXMgdGhlIG93bmVyc2hpcC4KKyAg
bGlzdGVuZXJzLkFwcGVuZChuZXcgTWluaW1hbGlzdFByaW50ZXIpOworICByZXR1cm4gUlVOX0FM
TF9URVNUUygpOworfQorYGBgCisKK1RoZXJlJ3Mgb25seSBvbmUgcHJvYmxlbTogdGhlIGRlZmF1
bHQgdGVzdCByZXN1bHQgcHJpbnRlciBpcyBzdGlsbCBpbgorZWZmZWN0LCBzbyBpdHMgb3V0cHV0
IHdpbGwgbWluZ2xlIHdpdGggdGhlIG91dHB1dCBmcm9tIHlvdXIgbWluaW1hbGlzdAorcHJpbnRl
ci4gVG8gc3VwcHJlc3MgdGhlIGRlZmF1bHQgcHJpbnRlciwganVzdCByZWxlYXNlIGl0IGZyb20g
dGhlCitldmVudCBsaXN0ZW5lciBsaXN0IGFuZCBkZWxldGUgaXQuIFlvdSBjYW4gZG8gc28gYnkg
YWRkaW5nIG9uZSBsaW5lOgorYGBgCisgIC4uLgorICBkZWxldGUgbGlzdGVuZXJzLlJlbGVhc2Uo
bGlzdGVuZXJzLmRlZmF1bHRfcmVzdWx0X3ByaW50ZXIoKSk7CisgIGxpc3RlbmVycy5BcHBlbmQo
bmV3IE1pbmltYWxpc3RQcmludGVyKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK2BgYAor
CitOb3csIHNpdCBiYWNrIGFuZCBlbmpveSBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IG91dHB1dCBm
cm9tIHlvdXIKK3Rlc3RzLiBGb3IgbW9yZSBkZXRhaWxzLCB5b3UgY2FuIHJlYWQgdGhpcworW3Nh
bXBsZV0oLi4vc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjKS4KKworWW91IG1heSBhcHBlbmQg
bW9yZSB0aGFuIG9uZSBsaXN0ZW5lciB0byB0aGUgbGlzdC4gV2hlbiBhbiBgT24qU3RhcnQoKWAK
K29yIGBPblRlc3RQYXJ0UmVzdWx0KClgIGV2ZW50IGlzIGZpcmVkLCB0aGUgbGlzdGVuZXJzIHdp
bGwgcmVjZWl2ZSBpdCBpbgordGhlIG9yZGVyIHRoZXkgYXBwZWFyIGluIHRoZSBsaXN0IChzaW5j
ZSBuZXcgbGlzdGVuZXJzIGFyZSBhZGRlZCB0bwordGhlIGVuZCBvZiB0aGUgbGlzdCwgdGhlIGRl
ZmF1bHQgdGV4dCBwcmludGVyIGFuZCB0aGUgZGVmYXVsdCBYTUwKK2dlbmVyYXRvciB3aWxsIHJl
Y2VpdmUgdGhlIGV2ZW50IGZpcnN0KS4gQW4gYE9uKkVuZCgpYCBldmVudCB3aWxsIGJlCityZWNl
aXZlZCBieSB0aGUgbGlzdGVuZXJzIGluIHRoZSBfcmV2ZXJzZV8gb3JkZXIuIFRoaXMgYWxsb3dz
IG91dHB1dCBieQorbGlzdGVuZXJzIGFkZGVkIGxhdGVyIHRvIGJlIGZyYW1lZCBieSBvdXRwdXQg
ZnJvbSBsaXN0ZW5lcnMgYWRkZWQKK2VhcmxpZXIuCisKKyMjIEdlbmVyYXRpbmcgRmFpbHVyZXMg
aW4gTGlzdGVuZXJzICMjCisKK1lvdSBtYXkgdXNlIGZhaWx1cmUtcmFpc2luZyBtYWNyb3MgKGBF
WFBFQ1RfKigpYCwgYEFTU0VSVF8qKClgLAorYEZBSUwoKWAsIGV0Yykgd2hlbiBwcm9jZXNzaW5n
IGFuIGV2ZW50LiBUaGVyZSBhcmUgc29tZSByZXN0cmljdGlvbnM6CisKKyAgMS4gWW91IGNhbm5v
dCBnZW5lcmF0ZSBhbnkgZmFpbHVyZSBpbiBgT25UZXN0UGFydFJlc3VsdCgpYCAob3RoZXJ3aXNl
IGl0IHdpbGwgY2F1c2UgYE9uVGVzdFBhcnRSZXN1bHQoKWAgdG8gYmUgY2FsbGVkIHJlY3Vyc2l2
ZWx5KS4KKyAgMS4gQSBsaXN0ZW5lciB0aGF0IGhhbmRsZXMgYE9uVGVzdFBhcnRSZXN1bHQoKWAg
aXMgbm90IGFsbG93ZWQgdG8gZ2VuZXJhdGUgYW55IGZhaWx1cmUuCisKK1doZW4geW91IGFkZCBs
aXN0ZW5lcnMgdG8gdGhlIGxpc3RlbmVyIGxpc3QsIHlvdSBzaG91bGQgcHV0IGxpc3RlbmVycwor
dGhhdCBoYW5kbGUgYE9uVGVzdFBhcnRSZXN1bHQoKWAgX2JlZm9yZV8gbGlzdGVuZXJzIHRoYXQg
Y2FuIGdlbmVyYXRlCitmYWlsdXJlcy4gVGhpcyBlbnN1cmVzIHRoYXQgZmFpbHVyZXMgZ2VuZXJh
dGVkIGJ5IHRoZSBsYXR0ZXIgYXJlCithdHRyaWJ1dGVkIHRvIHRoZSByaWdodCB0ZXN0IGJ5IHRo
ZSBmb3JtZXIuCisKK1dlIGhhdmUgYSBzYW1wbGUgb2YgZmFpbHVyZS1yYWlzaW5nIGxpc3RlbmVy
CitbaGVyZV0oLi4vc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYykuCisKKyMgUnVubmluZyBU
ZXN0IFByb2dyYW1zOiBBZHZhbmNlZCBPcHRpb25zICMKKworR29vZ2xlIFRlc3QgdGVzdCBwcm9n
cmFtcyBhcmUgb3JkaW5hcnkgZXhlY3V0YWJsZXMuIE9uY2UgYnVpbHQsIHlvdSBjYW4gcnVuCit0
aGVtIGRpcmVjdGx5IGFuZCBhZmZlY3QgdGhlaXIgYmVoYXZpb3IgdmlhIHRoZSBmb2xsb3dpbmcg
ZW52aXJvbm1lbnQgdmFyaWFibGVzCithbmQvb3IgY29tbWFuZCBsaW5lIGZsYWdzLiBGb3IgdGhl
IGZsYWdzIHRvIHdvcmssIHlvdXIgcHJvZ3JhbXMgbXVzdCBjYWxsCitgOjp0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdCgpYCBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9URVNUUygpYC4KKworVG8gc2Vl
IGEgbGlzdCBvZiBzdXBwb3J0ZWQgZmxhZ3MgYW5kIHRoZWlyIHVzYWdlLCBwbGVhc2UgcnVuIHlv
dXIgdGVzdAorcHJvZ3JhbSB3aXRoIHRoZSBgLS1oZWxwYCBmbGFnLiAgWW91IGNhbiBhbHNvIHVz
ZSBgLWhgLCBgLT9gLCBvciBgLz9gCitmb3Igc2hvcnQuICBUaGlzIGZlYXR1cmUgaXMgYWRkZWQg
aW4gdmVyc2lvbiAxLjMuMC4KKworSWYgYW4gb3B0aW9uIGlzIHNwZWNpZmllZCBib3RoIGJ5IGFu
IGVudmlyb25tZW50IHZhcmlhYmxlIGFuZCBieSBhCitmbGFnLCB0aGUgbGF0dGVyIHRha2VzIHBy
ZWNlZGVuY2UuICBNb3N0IG9mIHRoZSBvcHRpb25zIGNhbiBhbHNvIGJlCitzZXQvcmVhZCBpbiBj
b2RlOiB0byBhY2Nlc3MgdGhlIHZhbHVlIG9mIGNvbW1hbmQgbGluZSBmbGFnCitgLS1ndGVzdF9m
b29gLCB3cml0ZSBgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKGZvbylgLiAgQSBjb21tb24gcGF0dGVy
biBpcwordG8gc2V0IHRoZSB2YWx1ZSBvZiBhIGZsYWcgYmVmb3JlIGNhbGxpbmcgYDo6dGVzdGlu
Zzo6SW5pdEdvb2dsZVRlc3QoKWAKK3RvIGNoYW5nZSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUg
ZmxhZzoKK2BgYAoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIC8vIERpc2Fi
bGVzIGVsYXBzZWQgdGltZSBieSBkZWZhdWx0LgorICA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcocHJp
bnRfdGltZSkgPSBmYWxzZTsKKworICAvLyBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBvdmVycmlk
ZSB0aGUgZmxhZyBvbiB0aGUgY29tbWFuZCBsaW5lLgorICA6OnRlc3Rpbmc6OkluaXRHb29nbGVU
ZXN0KCZhcmdjLCBhcmd2KTsKKworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQorYGBgCisK
KyMjIFNlbGVjdGluZyBUZXN0cyAjIworCitUaGlzIHNlY3Rpb24gc2hvd3MgdmFyaW91cyBvcHRp
b25zIGZvciBjaG9vc2luZyB3aGljaCB0ZXN0cyB0byBydW4uCisKKyMjIyBMaXN0aW5nIFRlc3Qg
TmFtZXMgIyMjCisKK1NvbWV0aW1lcyBpdCBpcyBuZWNlc3NhcnkgdG8gbGlzdCB0aGUgYXZhaWxh
YmxlIHRlc3RzIGluIGEgcHJvZ3JhbSBiZWZvcmUKK3J1bm5pbmcgdGhlbSBzbyB0aGF0IGEgZmls
dGVyIG1heSBiZSBhcHBsaWVkIGlmIG5lZWRlZC4gSW5jbHVkaW5nIHRoZSBmbGFnCitgLS1ndGVz
dF9saXN0X3Rlc3RzYCBvdmVycmlkZXMgYWxsIG90aGVyIGZsYWdzIGFuZCBsaXN0cyB0ZXN0cyBp
biB0aGUgZm9sbG93aW5nCitmb3JtYXQ6CitgYGAKK1Rlc3RDYXNlMS4KKyAgVGVzdE5hbWUxCisg
IFRlc3ROYW1lMgorVGVzdENhc2UyLgorICBUZXN0TmFtZQorYGBgCisKK05vbmUgb2YgdGhlIHRl
c3RzIGxpc3RlZCBhcmUgYWN0dWFsbHkgcnVuIGlmIHRoZSBmbGFnIGlzIHByb3ZpZGVkLiBUaGVy
ZSBpcyBubworY29ycmVzcG9uZGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgdGhpcyBmbGFn
LgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIFJ1bm5pbmcg
YSBTdWJzZXQgb2YgdGhlIFRlc3RzICMjIworCitCeSBkZWZhdWx0LCBhIEdvb2dsZSBUZXN0IHBy
b2dyYW0gcnVucyBhbGwgdGVzdHMgdGhlIHVzZXIgaGFzIGRlZmluZWQuCitTb21ldGltZXMsIHlv
dSB3YW50IHRvIHJ1biBvbmx5IGEgc3Vic2V0IG9mIHRoZSB0ZXN0cyAoZS5nLiBmb3IgZGVidWdn
aW5nIG9yCitxdWlja2x5IHZlcmlmeWluZyBhIGNoYW5nZSkuIElmIHlvdSBzZXQgdGhlIGBHVEVT
VF9GSUxURVJgIGVudmlyb25tZW50IHZhcmlhYmxlCitvciB0aGUgYC0tZ3Rlc3RfZmlsdGVyYCBm
bGFnIHRvIGEgZmlsdGVyIHN0cmluZywgR29vZ2xlIFRlc3Qgd2lsbCBvbmx5IHJ1biB0aGUKK3Rl
c3RzIHdob3NlIGZ1bGwgbmFtZXMgKGluIHRoZSBmb3JtIG9mIGBUZXN0Q2FzZU5hbWUuVGVzdE5h
bWVgKSBtYXRjaCB0aGUKK2ZpbHRlci4KKworVGhlIGZvcm1hdCBvZiBhIGZpbHRlciBpcyBhICdg
OmAnLXNlcGFyYXRlZCBsaXN0IG9mIHdpbGRjYXJkIHBhdHRlcm5zIChjYWxsZWQKK3RoZSBwb3Np
dGl2ZSBwYXR0ZXJucykgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhICdgLWAnIGFuZCBhbm90aGVy
CisnYDpgJy1zZXBhcmF0ZWQgcGF0dGVybiBsaXN0IChjYWxsZWQgdGhlIG5lZ2F0aXZlIHBhdHRl
cm5zKS4gQSB0ZXN0IG1hdGNoZXMgdGhlCitmaWx0ZXIgaWYgYW5kIG9ubHkgaWYgaXQgbWF0Y2hl
cyBhbnkgb2YgdGhlIHBvc2l0aXZlIHBhdHRlcm5zIGJ1dCBkb2VzIG5vdAorbWF0Y2ggYW55IG9m
IHRoZSBuZWdhdGl2ZSBwYXR0ZXJucy4KKworQSBwYXR0ZXJuIG1heSBjb250YWluIGAnKidgICht
YXRjaGVzIGFueSBzdHJpbmcpIG9yIGAnPydgIChtYXRjaGVzIGFueSBzaW5nbGUKK2NoYXJhY3Rl
cikuIEZvciBjb252ZW5pZW5jZSwgdGhlIGZpbHRlciBgJyotTmVnYXRpdmVQYXR0ZXJucydgIGNh
biBiZSBhbHNvCit3cml0dGVuIGFzIGAnLU5lZ2F0aXZlUGF0dGVybnMnYC4KKworRm9yIGV4YW1w
bGU6CisKKyAgKiBgLi9mb29fdGVzdGAgSGFzIG5vIGZsYWcsIGFuZCB0aHVzIHJ1bnMgYWxsIGl0
cyB0ZXN0cy4KKyAgKiBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj0qYCBBbHNvIHJ1bnMgZXZl
cnl0aGluZywgZHVlIHRvIHRoZSBzaW5nbGUgbWF0Y2gtZXZlcnl0aGluZyBgKmAgdmFsdWUuCisg
ICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Rm9vVGVzdC4qYCBSdW5zIGV2ZXJ5dGhpbmcg
aW4gdGVzdCBjYXNlIGBGb29UZXN0YC4KKyAgKiBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj0q
TnVsbCo6KkNvbnN0cnVjdG9yKmAgUnVucyBhbnkgdGVzdCB3aG9zZSBmdWxsIG5hbWUgY29udGFp
bnMgZWl0aGVyIGAiTnVsbCJgIG9yIGAiQ29uc3RydWN0b3IiYC4KKyAgKiBgLi9mb29fdGVzdCAt
LWd0ZXN0X2ZpbHRlcj0tKkRlYXRoVGVzdC4qYCBSdW5zIGFsbCBub24tZGVhdGggdGVzdHMuCisg
ICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Rm9vVGVzdC4qLUZvb1Rlc3QuQmFyYCBSdW5z
IGV2ZXJ5dGhpbmcgaW4gdGVzdCBjYXNlIGBGb29UZXN0YCBleGNlcHQgYEZvb1Rlc3QuQmFyYC4K
KworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBUZW1wb3Jhcmls
eSBEaXNhYmxpbmcgVGVzdHMgIyMjCisKK0lmIHlvdSBoYXZlIGEgYnJva2VuIHRlc3QgdGhhdCB5
b3UgY2Fubm90IGZpeCByaWdodCBhd2F5LCB5b3UgY2FuIGFkZCB0aGUKK2BESVNBQkxFRF9gIHBy
ZWZpeCB0byBpdHMgbmFtZS4gVGhpcyB3aWxsIGV4Y2x1ZGUgaXQgZnJvbSBleGVjdXRpb24uIFRo
aXMgaXMKK2JldHRlciB0aGFuIGNvbW1lbnRpbmcgb3V0IHRoZSBjb2RlIG9yIHVzaW5nIGAjaWYg
MGAsIGFzIGRpc2FibGVkIHRlc3RzIGFyZQorc3RpbGwgY29tcGlsZWQgKGFuZCB0aHVzIHdvbid0
IHJvdCkuCisKK0lmIHlvdSBuZWVkIHRvIGRpc2FibGUgYWxsIHRlc3RzIGluIGEgdGVzdCBjYXNl
LCB5b3UgY2FuIGVpdGhlciBhZGQgYERJU0FCTEVEX2AKK3RvIHRoZSBmcm9udCBvZiB0aGUgbmFt
ZSBvZiBlYWNoIHRlc3QsIG9yIGFsdGVybmF0aXZlbHkgYWRkIGl0IHRvIHRoZSBmcm9udCBvZgor
dGhlIHRlc3QgY2FzZSBuYW1lLgorCitGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyB0ZXN0cyB3
b24ndCBiZSBydW4gYnkgR29vZ2xlIFRlc3QsIGV2ZW4gdGhvdWdoIHRoZXkKK3dpbGwgc3RpbGwg
YmUgY29tcGlsZWQ6CisKK2BgYAorLy8gVGVzdHMgdGhhdCBGb28gZG9lcyBBYmMuCitURVNUKEZv
b1Rlc3QsIERJU0FCTEVEX0RvZXNBYmMpIHsgLi4uIH0KKworY2xhc3MgRElTQUJMRURfQmFyVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKKworLy8gVGVzdHMgdGhhdCBCYXIg
ZG9lcyBYeXouCitURVNUX0YoRElTQUJMRURfQmFyVGVzdCwgRG9lc1h5eikgeyAuLi4gfQorYGBg
CisKK19Ob3RlOl8gVGhpcyBmZWF0dXJlIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHRlbXBvcmFy
eSBwYWluLXJlbGllZi4gWW91IHN0aWxsCitoYXZlIHRvIGZpeCB0aGUgZGlzYWJsZWQgdGVzdHMg
YXQgYSBsYXRlciBkYXRlLiBBcyBhIHJlbWluZGVyLCBHb29nbGUgVGVzdCB3aWxsCitwcmludCBh
IGJhbm5lciB3YXJuaW5nIHlvdSBpZiBhIHRlc3QgcHJvZ3JhbSBjb250YWlucyBhbnkgZGlzYWJs
ZWQgdGVzdHMuCisKK19UaXA6XyBZb3UgY2FuIGVhc2lseSBjb3VudCB0aGUgbnVtYmVyIG9mIGRp
c2FibGVkIHRlc3RzIHlvdSBoYXZlCit1c2luZyBgZ3JlcGAuIFRoaXMgbnVtYmVyIGNhbiBiZSB1
c2VkIGFzIGEgbWV0cmljIGZvciBpbXByb3ZpbmcgeW91cgordGVzdCBxdWFsaXR5LgorCitfQXZh
aWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIFRlbXBvcmFyaWx5IEVuYWJs
aW5nIERpc2FibGVkIFRlc3RzICMjIworCitUbyBpbmNsdWRlIFtkaXNhYmxlZCB0ZXN0c10oI3Rl
bXBvcmFyaWx5LWRpc2FibGluZy10ZXN0cykgaW4gdGVzdAorZXhlY3V0aW9uLCBqdXN0IGludm9r
ZSB0aGUgdGVzdCBwcm9ncmFtIHdpdGggdGhlCitgLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90
ZXN0c2AgZmxhZyBvciBzZXQgdGhlCitgR1RFU1RfQUxTT19SVU5fRElTQUJMRURfVEVTVFNgIGVu
dmlyb25tZW50IHZhcmlhYmxlIHRvIGEgdmFsdWUgb3RoZXIKK3RoYW4gYDBgLiAgWW91IGNhbiBj
b21iaW5lIHRoaXMgd2l0aCB0aGUKK1stLWd0ZXN0XF9maWx0ZXJdKCNydW5uaW5nLWEtc3Vic2V0
LW9mLXRoZS10ZXN0cykgZmxhZyB0byBmdXJ0aGVyIHNlbGVjdAord2hpY2ggZGlzYWJsZWQgdGVz
dHMgdG8gcnVuLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2Ug
dmVyc2lvbiAxLjMuMC4KKworIyMgUmVwZWF0aW5nIHRoZSBUZXN0cyAjIworCitPbmNlIGluIGEg
d2hpbGUgeW91J2xsIHJ1biBpbnRvIGEgdGVzdCB3aG9zZSByZXN1bHQgaXMgaGl0LW9yLW1pc3Mu
IFBlcmhhcHMgaXQKK3dpbGwgZmFpbCBvbmx5IDElIG9mIHRoZSB0aW1lLCBtYWtpbmcgaXQgcmF0
aGVyIGhhcmQgdG8gcmVwcm9kdWNlIHRoZSBidWcgdW5kZXIKK2EgZGVidWdnZXIuIFRoaXMgY2Fu
IGJlIGEgbWFqb3Igc291cmNlIG9mIGZydXN0cmF0aW9uLgorCitUaGUgYC0tZ3Rlc3RfcmVwZWF0
YCBmbGFnIGFsbG93cyB5b3UgdG8gcmVwZWF0IGFsbCAob3Igc2VsZWN0ZWQpIHRlc3QgbWV0aG9k
cworaW4gYSBwcm9ncmFtIG1hbnkgdGltZXMuIEhvcGVmdWxseSwgYSBmbGFreSB0ZXN0IHdpbGwg
ZXZlbnR1YWxseSBmYWlsIGFuZCBnaXZlCit5b3UgYSBjaGFuY2UgdG8gZGVidWcuIEhlcmUncyBo
b3cgdG8gdXNlIGl0OgorCit8IGAkIGZvb190ZXN0IC0tZ3Rlc3RfcmVwZWF0PTEwMDBgIHwgUmVw
ZWF0IGZvb1xfdGVzdCAxMDAwIHRpbWVzIGFuZCBkb24ndCBzdG9wIGF0IGZhaWx1cmVzLiB8Cit8
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGAkIGZvb190ZXN0IC0tZ3Rl
c3RfcmVwZWF0PS0xYCAgIHwgQSBuZWdhdGl2ZSBjb3VudCBtZWFucyByZXBlYXRpbmcgZm9yZXZl
ci4gICAgICAgICAgICAgICB8Cit8IGAkIGZvb190ZXN0IC0tZ3Rlc3RfcmVwZWF0PTEwMDAgLS1n
dGVzdF9icmVha19vbl9mYWlsdXJlYCB8IFJlcGVhdCBmb29cX3Rlc3QgMTAwMCB0aW1lcywgc3Rv
cHBpbmcgYXQgdGhlIGZpcnN0IGZhaWx1cmUuIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgd2hl
biBydW5uaW5nIHVuZGVyIGEgZGVidWdnZXI6IHdoZW4gdGhlIHRlc3RmYWlscywgaXQgd2lsbCBk
cm9wIGludG8gdGhlIGRlYnVnZ2VyIGFuZCB5b3UgY2FuIHRoZW4gaW5zcGVjdCB2YXJpYWJsZXMg
YW5kIHN0YWNrcy4gfAorfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwIC0tZ3Rlc3Rf
ZmlsdGVyPUZvb0JhcmAgfCBSZXBlYXQgdGhlIHRlc3RzIHdob3NlIG5hbWUgbWF0Y2hlcyB0aGUg
ZmlsdGVyIDEwMDAgdGltZXMuIHwKKworSWYgeW91ciB0ZXN0IHByb2dyYW0gY29udGFpbnMgZ2xv
YmFsIHNldC11cC90ZWFyLWRvd24gY29kZSByZWdpc3RlcmVkCit1c2luZyBgQWRkR2xvYmFsVGVz
dEVudmlyb25tZW50KClgLCBpdCB3aWxsIGJlIHJlcGVhdGVkIGluIGVhY2gKK2l0ZXJhdGlvbiBh
cyB3ZWxsLCBhcyB0aGUgZmxha2luZXNzIG1heSBiZSBpbiBpdC4gWW91IGNhbiBhbHNvIHNwZWNp
ZnkKK3RoZSByZXBlYXQgY291bnQgYnkgc2V0dGluZyB0aGUgYEdURVNUX1JFUEVBVGAgZW52aXJv
bm1lbnQgdmFyaWFibGUuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgor
CisjIyBTaHVmZmxpbmcgdGhlIFRlc3RzICMjCisKK1lvdSBjYW4gc3BlY2lmeSB0aGUgYC0tZ3Rl
c3Rfc2h1ZmZsZWAgZmxhZyAob3Igc2V0IHRoZSBgR1RFU1RfU0hVRkZMRWAKK2Vudmlyb25tZW50
IHZhcmlhYmxlIHRvIGAxYCkgdG8gcnVuIHRoZSB0ZXN0cyBpbiBhIHByb2dyYW0gaW4gYSByYW5k
b20KK29yZGVyLiBUaGlzIGhlbHBzIHRvIHJldmVhbCBiYWQgZGVwZW5kZW5jaWVzIGJldHdlZW4g
dGVzdHMuCisKK0J5IGRlZmF1bHQsIEdvb2dsZSBUZXN0IHVzZXMgYSByYW5kb20gc2VlZCBjYWxj
dWxhdGVkIGZyb20gdGhlIGN1cnJlbnQKK3RpbWUuIFRoZXJlZm9yZSB5b3UnbGwgZ2V0IGEgZGlm
ZmVyZW50IG9yZGVyIGV2ZXJ5IHRpbWUuIFRoZSBjb25zb2xlCitvdXRwdXQgaW5jbHVkZXMgdGhl
IHJhbmRvbSBzZWVkIHZhbHVlLCBzdWNoIHRoYXQgeW91IGNhbiByZXByb2R1Y2UgYW4KK29yZGVy
LXJlbGF0ZWQgdGVzdCBmYWlsdXJlIGxhdGVyLiBUbyBzcGVjaWZ5IHRoZSByYW5kb20gc2VlZAor
ZXhwbGljaXRseSwgdXNlIHRoZSBgLS1ndGVzdF9yYW5kb21fc2VlZD1TRUVEYCBmbGFnIChvciBz
ZXQgdGhlCitgR1RFU1RfUkFORE9NX1NFRURgIGVudmlyb25tZW50IHZhcmlhYmxlKSwgd2hlcmUg
YFNFRURgIGlzIGFuIGludGVnZXIKK2JldHdlZW4gMCBhbmQgOTk5OTkuIFRoZSBzZWVkIHZhbHVl
IDAgaXMgc3BlY2lhbDogaXQgdGVsbHMgR29vZ2xlIFRlc3QKK3RvIGRvIHRoZSBkZWZhdWx0IGJl
aGF2aW9yIG9mIGNhbGN1bGF0aW5nIHRoZSBzZWVkIGZyb20gdGhlIGN1cnJlbnQKK3RpbWUuCisK
K0lmIHlvdSBjb21iaW5lIHRoaXMgd2l0aCBgLS1ndGVzdF9yZXBlYXQ9TmAsIEdvb2dsZSBUZXN0
IHdpbGwgcGljayBhCitkaWZmZXJlbnQgcmFuZG9tIHNlZWQgYW5kIHJlLXNodWZmbGUgdGhlIHRl
c3RzIGluIGVhY2ggaXRlcmF0aW9uLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3Ms
IE1hYzsgc2luY2UgdjEuNC4wLgorCisjIyBDb250cm9sbGluZyBUZXN0IE91dHB1dCAjIworCitU
aGlzIHNlY3Rpb24gdGVhY2hlcyBob3cgdG8gdHdlYWsgdGhlIHdheSB0ZXN0IHJlc3VsdHMgYXJl
IHJlcG9ydGVkLgorCisjIyMgQ29sb3JlZCBUZXJtaW5hbCBPdXRwdXQgIyMjCisKK0dvb2dsZSBU
ZXN0IGNhbiB1c2UgY29sb3JzIGluIGl0cyB0ZXJtaW5hbCBvdXRwdXQgdG8gbWFrZSBpdCBlYXNp
ZXIgdG8gc3BvdAordGhlIHNlcGFyYXRpb24gYmV0d2VlbiB0ZXN0cywgYW5kIHdoZXRoZXIgdGVz
dHMgcGFzc2VkLgorCitZb3UgY2FuIHNldCB0aGUgR1RFU1RcX0NPTE9SIGVudmlyb25tZW50IHZh
cmlhYmxlIG9yIHNldCB0aGUgYC0tZ3Rlc3RfY29sb3JgCitjb21tYW5kIGxpbmUgZmxhZyB0byBg
eWVzYCwgYG5vYCwgb3IgYGF1dG9gICh0aGUgZGVmYXVsdCkgdG8gZW5hYmxlIGNvbG9ycywKK2Rp
c2FibGUgY29sb3JzLCBvciBsZXQgR29vZ2xlIFRlc3QgZGVjaWRlLiBXaGVuIHRoZSB2YWx1ZSBp
cyBgYXV0b2AsIEdvb2dsZQorVGVzdCB3aWxsIHVzZSBjb2xvcnMgaWYgYW5kIG9ubHkgaWYgdGhl
IG91dHB1dCBnb2VzIHRvIGEgdGVybWluYWwgYW5kIChvbgorbm9uLVdpbmRvd3MgcGxhdGZvcm1z
KSB0aGUgYFRFUk1gIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCB0byBgeHRlcm1gIG9yCitg
eHRlcm0tY29sb3JgLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKwor
IyMjIFN1cHByZXNzaW5nIHRoZSBFbGFwc2VkIFRpbWUgIyMjCisKK0J5IGRlZmF1bHQsIEdvb2ds
ZSBUZXN0IHByaW50cyB0aGUgdGltZSBpdCB0YWtlcyB0byBydW4gZWFjaCB0ZXN0LiAgVG8KK3N1
cHByZXNzIHRoYXQsIHJ1biB0aGUgdGVzdCBwcm9ncmFtIHdpdGggdGhlIGAtLWd0ZXN0X3ByaW50
X3RpbWU9MGAKK2NvbW1hbmQgbGluZSBmbGFnLiAgU2V0dGluZyB0aGUgYEdURVNUX1BSSU5UX1RJ
TUVgIGVudmlyb25tZW50Cit2YXJpYWJsZSB0byBgMGAgaGFzIHRoZSBzYW1lIGVmZmVjdC4KKwor
X0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuICAoSW4gR29vZ2xlIFRlc3QgMS4z
LjAgYW5kIGxvd2VyLAordGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdGhhdCB0aGUgZWxhcHNlZCB0
aW1lIGlzICoqbm90KiogcHJpbnRlZC4pCisKKyMjIyBHZW5lcmF0aW5nIGFuIFhNTCBSZXBvcnQg
IyMjCisKK0dvb2dsZSBUZXN0IGNhbiBlbWl0IGEgZGV0YWlsZWQgWE1MIHJlcG9ydCB0byBhIGZp
bGUgaW4gYWRkaXRpb24gdG8gaXRzIG5vcm1hbAordGV4dHVhbCBvdXRwdXQuIFRoZSByZXBvcnQg
Y29udGFpbnMgdGhlIGR1cmF0aW9uIG9mIGVhY2ggdGVzdCwgYW5kIHRodXMgY2FuCitoZWxwIHlv
dSBpZGVudGlmeSBzbG93IHRlc3RzLgorCitUbyBnZW5lcmF0ZSB0aGUgWE1MIHJlcG9ydCwgc2V0
IHRoZSBgR1RFU1RfT1VUUFVUYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUKK2AtLWd0ZXN0
X291dHB1dGAgZmxhZyB0byB0aGUgc3RyaW5nIGAieG1sOl9wYXRoX3RvX291dHB1dF9maWxlXyJg
LCB3aGljaCB3aWxsCitjcmVhdGUgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIGxvY2F0aW9uLiBZb3Ug
Y2FuIGFsc28ganVzdCB1c2UgdGhlIHN0cmluZworYCJ4bWwiYCwgaW4gd2hpY2ggY2FzZSB0aGUg
b3V0cHV0IGNhbiBiZSBmb3VuZCBpbiB0aGUgYHRlc3RfZGV0YWlsLnhtbGAgZmlsZSBpbgordGhl
IGN1cnJlbnQgZGlyZWN0b3J5LgorCitJZiB5b3Ugc3BlY2lmeSBhIGRpcmVjdG9yeSAoZm9yIGV4
YW1wbGUsIGAieG1sOm91dHB1dC9kaXJlY3RvcnkvImAgb24gTGludXggb3IKK2AieG1sOm91dHB1
dFxkaXJlY3RvcnlcImAgb24gV2luZG93cyksIEdvb2dsZSBUZXN0IHdpbGwgY3JlYXRlIHRoZSBY
TUwgZmlsZSBpbgordGhhdCBkaXJlY3RvcnksIG5hbWVkIGFmdGVyIHRoZSB0ZXN0IGV4ZWN1dGFi
bGUgKGUuZy4gYGZvb190ZXN0LnhtbGAgZm9yIHRlc3QKK3Byb2dyYW0gYGZvb190ZXN0YCBvciBg
Zm9vX3Rlc3QuZXhlYCkuIElmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzIChwZXJoYXBzIGxlZnQK
K292ZXIgZnJvbSBhIHByZXZpb3VzIHJ1biksIEdvb2dsZSBUZXN0IHdpbGwgcGljayBhIGRpZmZl
cmVudCBuYW1lIChlLmcuCitgZm9vX3Rlc3RfMS54bWxgKSB0byBhdm9pZCBvdmVyd3JpdGluZyBp
dC4KKworVGhlIHJlcG9ydCB1c2VzIHRoZSBmb3JtYXQgZGVzY3JpYmVkIGhlcmUuICBJdCBpcyBi
YXNlZCBvbiB0aGUKK2BqdW5pdHJlcG9ydGAgQW50IHRhc2sgYW5kIGNhbiBiZSBwYXJzZWQgYnkg
cG9wdWxhciBjb250aW51b3VzIGJ1aWxkCitzeXN0ZW1zIGxpa2UgW0h1ZHNvbl0oaHR0cHM6Ly9o
dWRzb24uZGV2LmphdmEubmV0LykuIFNpbmNlIHRoYXQgZm9ybWF0Cit3YXMgb3JpZ2luYWxseSBp
bnRlbmRlZCBmb3IgSmF2YSwgYSBsaXR0bGUgaW50ZXJwcmV0YXRpb24gaXMgcmVxdWlyZWQKK3Rv
IG1ha2UgaXQgYXBwbHkgdG8gR29vZ2xlIFRlc3QgdGVzdHMsIGFzIHNob3duIGhlcmU6CisKK2Bg
YAorPHRlc3RzdWl0ZXMgbmFtZT0iQWxsVGVzdHMiIC4uLj4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJ0
ZXN0X2Nhc2VfbmFtZSIgLi4uPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJ0ZXN0X25hbWUiIC4uLj4K
KyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiIvPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0i
Li4uIi8+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4KKyAgICA8L3Rlc3RjYXNlPgor
ICA8L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1aXRlcz4KK2BgYAorCisgICogVGhlIHJvb3QgYDx0ZXN0
c3VpdGVzPmAgZWxlbWVudCBjb3JyZXNwb25kcyB0byB0aGUgZW50aXJlIHRlc3QgcHJvZ3JhbS4K
KyAgKiBgPHRlc3RzdWl0ZT5gIGVsZW1lbnRzIGNvcnJlc3BvbmQgdG8gR29vZ2xlIFRlc3QgdGVz
dCBjYXNlcy4KKyAgKiBgPHRlc3RjYXNlPmAgZWxlbWVudHMgY29ycmVzcG9uZCB0byBHb29nbGUg
VGVzdCB0ZXN0IGZ1bmN0aW9ucy4KKworRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIHByb2dy
YW0KKworYGBgCitURVNUKE1hdGhUZXN0LCBBZGRpdGlvbikgeyAuLi4gfQorVEVTVChNYXRoVGVz
dCwgU3VidHJhY3Rpb24pIHsgLi4uIH0KK1RFU1QoTG9naWNUZXN0LCBOb25Db250cmFkaWN0aW9u
KSB7IC4uLiB9CitgYGAKKworY291bGQgZ2VuZXJhdGUgdGhpcyByZXBvcnQ6CisKK2BgYAorPD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIz
IiBmYWlsdXJlcz0iMSIgZXJyb3JzPSIwIiB0aW1lPSIzNSIgbmFtZT0iQWxsVGVzdHMiPgorICA8
dGVzdHN1aXRlIG5hbWU9Ik1hdGhUZXN0IiB0ZXN0cz0iMiIgZmFpbHVyZXM9IjEiIGVycm9ycz0i
MCIgdGltZT0iMTUiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJBZGRpdGlvbiIgc3RhdHVzPSJydW4i
IHRpbWU9IjciIGNsYXNzbmFtZT0iIj4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IlZhbHVlIG9m
OiBhZGQoMSwgMSkmI3gwQTsgQWN0dWFsOiAzJiN4MEE7RXhwZWN0ZWQ6IDIiIHR5cGU9IiIvPgor
ICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IGFkZCgxLCAtMSkmI3gwQTsgQWN0dWFs
OiAxJiN4MEE7RXhwZWN0ZWQ6IDAiIHR5cGU9IiIvPgorICAgIDwvdGVzdGNhc2U+CisgICAgPHRl
c3RjYXNlIG5hbWU9IlN1YnRyYWN0aW9uIiBzdGF0dXM9InJ1biIgdGltZT0iNSIgY2xhc3NuYW1l
PSIiPgorICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorICA8dGVzdHN1aXRlIG5hbWU9
IkxvZ2ljVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBlcnJvcnM9IjAiIHRpbWU9IjUiPgor
ICAgIDx0ZXN0Y2FzZSBuYW1lPSJOb25Db250cmFkaWN0aW9uIiBzdGF0dXM9InJ1biIgdGltZT0i
NSIgY2xhc3NuYW1lPSIiPgorICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0
c3VpdGVzPgorYGBgCisKK1RoaW5ncyB0byBub3RlOgorCisgICogVGhlIGB0ZXN0c2AgYXR0cmli
dXRlIG9mIGEgYDx0ZXN0c3VpdGVzPmAgb3IgYDx0ZXN0c3VpdGU+YCBlbGVtZW50IHRlbGxzIGhv
dyBtYW55IHRlc3QgZnVuY3Rpb25zIHRoZSBHb29nbGUgVGVzdCBwcm9ncmFtIG9yIHRlc3QgY2Fz
ZSBjb250YWlucywgd2hpbGUgdGhlIGBmYWlsdXJlc2AgYXR0cmlidXRlIHRlbGxzIGhvdyBtYW55
IG9mIHRoZW0gZmFpbGVkLgorICAqIFRoZSBgdGltZWAgYXR0cmlidXRlIGV4cHJlc3NlcyB0aGUg
ZHVyYXRpb24gb2YgdGhlIHRlc3QsIHRlc3QgY2FzZSwgb3IgZW50aXJlIHRlc3QgcHJvZ3JhbSBp
biBtaWxsaXNlY29uZHMuCisgICogRWFjaCBgPGZhaWx1cmU+YCBlbGVtZW50IGNvcnJlc3BvbmRz
IHRvIGEgc2luZ2xlIGZhaWxlZCBHb29nbGUgVGVzdCBhc3NlcnRpb24uCisgICogU29tZSBKVW5p
dCBjb25jZXB0cyBkb24ndCBhcHBseSB0byBHb29nbGUgVGVzdCwgeWV0IHdlIGhhdmUgdG8gY29u
Zm9ybSB0byB0aGUgRFRELiBUaGVyZWZvcmUgeW91J2xsIHNlZSBzb21lIGR1bW15IGVsZW1lbnRz
IGFuZCBhdHRyaWJ1dGVzIGluIHRoZSByZXBvcnQuIFlvdSBjYW4gc2FmZWx5IGlnbm9yZSB0aGVz
ZSBwYXJ0cy4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIENv
bnRyb2xsaW5nIEhvdyBGYWlsdXJlcyBBcmUgUmVwb3J0ZWQgIyMKKworIyMjIFR1cm5pbmcgQXNz
ZXJ0aW9uIEZhaWx1cmVzIGludG8gQnJlYWstUG9pbnRzICMjIworCitXaGVuIHJ1bm5pbmcgdGVz
dCBwcm9ncmFtcyB1bmRlciBhIGRlYnVnZ2VyLCBpdCdzIHZlcnkgY29udmVuaWVudCBpZiB0aGUK
K2RlYnVnZ2VyIGNhbiBjYXRjaCBhbiBhc3NlcnRpb24gZmFpbHVyZSBhbmQgYXV0b21hdGljYWxs
eSBkcm9wIGludG8gaW50ZXJhY3RpdmUKK21vZGUuIEdvb2dsZSBUZXN0J3MgX2JyZWFrLW9uLWZh
aWx1cmVfIG1vZGUgc3VwcG9ydHMgdGhpcyBiZWhhdmlvci4KKworVG8gZW5hYmxlIGl0LCBzZXQg
dGhlIGBHVEVTVF9CUkVBS19PTl9GQUlMVVJFYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIHZh
bHVlCitvdGhlciB0aGFuIGAwYCAuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHRoZSBgLS1n
dGVzdF9icmVha19vbl9mYWlsdXJlYAorY29tbWFuZCBsaW5lIGZsYWcuCisKK19BdmFpbGFiaWxp
dHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgRGlzYWJsaW5nIENhdGNoaW5nIFRlc3Qt
VGhyb3duIEV4Y2VwdGlvbnMgIyMjCisKK0dvb2dsZSBUZXN0IGNhbiBiZSB1c2VkIGVpdGhlciB3
aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucyBlbmFibGVkLiAgSWYKK2EgdGVzdCB0aHJvd3MgYSBD
KysgZXhjZXB0aW9uIG9yIChvbiBXaW5kb3dzKSBhIHN0cnVjdHVyZWQgZXhjZXB0aW9uCisoU0VI
KSwgYnkgZGVmYXVsdCBHb29nbGUgVGVzdCBjYXRjaGVzIGl0LCByZXBvcnRzIGl0IGFzIGEgdGVz
dAorZmFpbHVyZSwgYW5kIGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0IHRlc3QgbWV0aG9kLiAgVGhp
cyBtYXhpbWl6ZXMgdGhlCitjb3ZlcmFnZSBvZiBhIHRlc3QgcnVuLiAgQWxzbywgb24gV2luZG93
cyBhbiB1bmNhdWdodCBleGNlcHRpb24gd2lsbAorY2F1c2UgYSBwb3AtdXAgd2luZG93LCBzbyBj
YXRjaGluZyB0aGUgZXhjZXB0aW9ucyBhbGxvd3MgeW91IHRvIHJ1bgordGhlIHRlc3RzIGF1dG9t
YXRpY2FsbHkuCisKK1doZW4gZGVidWdnaW5nIHRoZSB0ZXN0IGZhaWx1cmVzLCBob3dldmVyLCB5
b3UgbWF5IGluc3RlYWQgd2FudCB0aGUKK2V4Y2VwdGlvbnMgdG8gYmUgaGFuZGxlZCBieSB0aGUg
ZGVidWdnZXIsIHN1Y2ggdGhhdCB5b3UgY2FuIGV4YW1pbmUKK3RoZSBjYWxsIHN0YWNrIHdoZW4g
YW4gZXhjZXB0aW9uIGlzIHRocm93bi4gIFRvIGFjaGlldmUgdGhhdCwgc2V0IHRoZQorYEdURVNU
X0NBVENIX0VYQ0VQVElPTlNgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGAwYCwgb3IgdXNlIHRo
ZQorYC0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucz0wYCBmbGFnIHdoZW4gcnVubmluZyB0aGUgdGVz
dHMuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBMZXR0
aW5nIEFub3RoZXIgVGVzdGluZyBGcmFtZXdvcmsgRHJpdmUgIyMjCisKK0lmIHlvdSB3b3JrIG9u
IGEgcHJvamVjdCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gdXNpbmcgYW5vdGhlciB0ZXN0aW5nCitm
cmFtZXdvcmsgYW5kIGlzIG5vdCByZWFkeSB0byBjb21wbGV0ZWx5IHN3aXRjaCB0byBHb29nbGUg
VGVzdCB5ZXQsCit5b3UgY2FuIGdldCBtdWNoIG9mIEdvb2dsZSBUZXN0J3MgYmVuZWZpdCBieSB1
c2luZyBpdHMgYXNzZXJ0aW9ucyBpbgoreW91ciBleGlzdGluZyB0ZXN0cy4gIEp1c3QgY2hhbmdl
IHlvdXIgYG1haW4oKWAgZnVuY3Rpb24gdG8gbG9vaworbGlrZToKKworYGBgCisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIDo6
dGVzdGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9IHRydWU7CisgIC8vIEltcG9y
dGFudDogR29vZ2xlIFRlc3QgbXVzdCBiZSBpbml0aWFsaXplZC4KKyAgOjp0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgLi4uIHdoYXRldmVyIHlvdXIgZXhpc3Rpbmcg
dGVzdGluZyBmcmFtZXdvcmsgcmVxdWlyZXMgLi4uCit9CitgYGAKKworV2l0aCB0aGF0LCB5b3Ug
Y2FuIHVzZSBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGluIGFkZGl0aW9uIHRvIHRoZQorbmF0aXZl
IGFzc2VydGlvbnMgeW91ciB0ZXN0aW5nIGZyYW1ld29yayBwcm92aWRlcywgZm9yIGV4YW1wbGU6
CisKK2BgYAordm9pZCBUZXN0Rm9vRG9lc0JhcigpIHsKKyAgRm9vIGZvbzsKKyAgRVhQRUNUX0xF
KGZvby5CYXIoMSksIDEwMCk7ICAgICAvLyBBIEdvb2dsZSBUZXN0IGFzc2VydGlvbi4KKyAgQ1BQ
VU5JVF9BU1NFUlQoZm9vLklzRW1wdHkoKSk7ICAvLyBBIG5hdGl2ZSBhc3NlcnRpb24uCit9Citg
YGAKKworSWYgYSBHb29nbGUgVGVzdCBhc3NlcnRpb24gZmFpbHMsIGl0IHdpbGwgcHJpbnQgYW4g
ZXJyb3IgbWVzc2FnZSBhbmQKK3Rocm93IGFuIGV4Y2VwdGlvbiwgd2hpY2ggd2lsbCBiZSB0cmVh
dGVkIGFzIGEgZmFpbHVyZSBieSB5b3VyIGhvc3QKK3Rlc3RpbmcgZnJhbWV3b3JrLiAgSWYgeW91
IGNvbXBpbGUgeW91ciBjb2RlIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZCwKK2EgZmFpbGVkIEdv
b2dsZSBUZXN0IGFzc2VydGlvbiB3aWxsIGluc3RlYWQgZXhpdCB5b3VyIHByb2dyYW0gd2l0aCBh
Citub24temVybyBjb2RlLCB3aGljaCB3aWxsIGFsc28gc2lnbmFsIGEgdGVzdCBmYWlsdXJlIHRv
IHlvdXIgdGVzdAorcnVubmVyLgorCitJZiB5b3UgZG9uJ3Qgd3JpdGUgYDo6dGVzdGluZzo6R1RF
U1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9IHRydWU7YCBpbgoreW91ciBgbWFpbigpYCwgeW91
IGNhbiBhbHRlcm5hdGl2ZWx5IGVuYWJsZSB0aGlzIGZlYXR1cmUgYnkgc3BlY2lmeWluZwordGhl
IGAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmVgIGZsYWcgb24gdGhlIGNvbW1hbmQtbGluZSBvciBz
ZXR0aW5nIHRoZQorYEdURVNUX1RIUk9XX09OX0ZBSUxVUkVgIGVudmlyb25tZW50IHZhcmlhYmxl
IHRvIGEgbm9uLXplcm8gdmFsdWUuCisKK0RlYXRoIHRlc3RzIGFyZSBfbm90XyBzdXBwb3J0ZWQg
d2hlbiBvdGhlciB0ZXN0IGZyYW1ld29yayBpcyB1c2VkIHRvIG9yZ2FuaXplIHRlc3RzLgorCitf
QXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdjEuMy4wLgorCisjIyBE
aXN0cmlidXRpbmcgVGVzdCBGdW5jdGlvbnMgdG8gTXVsdGlwbGUgTWFjaGluZXMgIyMKKworSWYg
eW91IGhhdmUgbW9yZSB0aGFuIG9uZSBtYWNoaW5lIHlvdSBjYW4gdXNlIHRvIHJ1biBhIHRlc3Qg
cHJvZ3JhbSwKK3lvdSBtaWdodCB3YW50IHRvIHJ1biB0aGUgdGVzdCBmdW5jdGlvbnMgaW4gcGFy
YWxsZWwgYW5kIGdldCB0aGUKK3Jlc3VsdCBmYXN0ZXIuICBXZSBjYWxsIHRoaXMgdGVjaG5pcXVl
IF9zaGFyZGluZ18sIHdoZXJlIGVhY2ggbWFjaGluZQoraXMgY2FsbGVkIGEgX3NoYXJkXy4KKwor
R29vZ2xlIFRlc3QgaXMgY29tcGF0aWJsZSB3aXRoIHRlc3Qgc2hhcmRpbmcuICBUbyB0YWtlIGFk
dmFudGFnZSBvZgordGhpcyBmZWF0dXJlLCB5b3VyIHRlc3QgcnVubmVyIChub3QgcGFydCBvZiBH
b29nbGUgVGVzdCkgbmVlZHMgdG8gZG8KK3RoZSBmb2xsb3dpbmc6CisKKyAgMS4gQWxsb2NhdGUg
YSBudW1iZXIgb2YgbWFjaGluZXMgKHNoYXJkcykgdG8gcnVuIHRoZSB0ZXN0cy4KKyAgMS4gT24g
ZWFjaCBzaGFyZCwgc2V0IHRoZSBgR1RFU1RfVE9UQUxfU0hBUkRTYCBlbnZpcm9ubWVudCB2YXJp
YWJsZSB0byB0aGUgdG90YWwgbnVtYmVyIG9mIHNoYXJkcy4gIEl0IG11c3QgYmUgdGhlIHNhbWUg
Zm9yIGFsbCBzaGFyZHMuCisgIDEuIE9uIGVhY2ggc2hhcmQsIHNldCB0aGUgYEdURVNUX1NIQVJE
X0lOREVYYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0aGUgaW5kZXggb2YgdGhlIHNoYXJkLiAg
RGlmZmVyZW50IHNoYXJkcyBtdXN0IGJlIGFzc2lnbmVkIGRpZmZlcmVudCBpbmRpY2VzLCB3aGlj
aCBtdXN0IGJlIGluIHRoZSByYW5nZSBgWzAsIEdURVNUX1RPVEFMX1NIQVJEUyAtIDFdYC4KKyAg
MS4gUnVuIHRoZSBzYW1lIHRlc3QgcHJvZ3JhbSBvbiBhbGwgc2hhcmRzLiAgV2hlbiBHb29nbGUg
VGVzdCBzZWVzIHRoZSBhYm92ZSB0d28gZW52aXJvbm1lbnQgdmFyaWFibGVzLCBpdCB3aWxsIHNl
bGVjdCBhIHN1YnNldCBvZiB0aGUgdGVzdCBmdW5jdGlvbnMgdG8gcnVuLiAgQWNyb3NzIGFsbCBz
aGFyZHMsIGVhY2ggdGVzdCBmdW5jdGlvbiBpbiB0aGUgcHJvZ3JhbSB3aWxsIGJlIHJ1biBleGFj
dGx5IG9uY2UuCisgIDEuIFdhaXQgZm9yIGFsbCBzaGFyZHMgdG8gZmluaXNoLCB0aGVuIGNvbGxl
Y3QgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cy4KKworWW91ciBwcm9qZWN0IG1heSBoYXZlIHRlc3Rz
IHRoYXQgd2VyZSB3cml0dGVuIHdpdGhvdXQgR29vZ2xlIFRlc3QgYW5kCit0aHVzIGRvbid0IHVu
ZGVyc3RhbmQgdGhpcyBwcm90b2NvbC4gIEluIG9yZGVyIGZvciB5b3VyIHRlc3QgcnVubmVyIHRv
CitmaWd1cmUgb3V0IHdoaWNoIHRlc3Qgc3VwcG9ydHMgc2hhcmRpbmcsIGl0IGNhbiBzZXQgdGhl
IGVudmlyb25tZW50Cit2YXJpYWJsZSBgR1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEVgIHRvIGEgbm9u
LWV4aXN0ZW50IGZpbGUgcGF0aC4gIElmIGEKK3Rlc3QgcHJvZ3JhbSBzdXBwb3J0cyBzaGFyZGlu
ZywgaXQgd2lsbCBjcmVhdGUgdGhpcyBmaWxlIHRvCithY2tub3dsZWRnZSB0aGUgZmFjdCAodGhl
IGFjdHVhbCBjb250ZW50cyBvZiB0aGUgZmlsZSBhcmUgbm90CitpbXBvcnRhbnQgYXQgdGhpcyB0
aW1lOyBhbHRob3VnaCB3ZSBtYXkgc3RpY2sgc29tZSB1c2VmdWwgaW5mb3JtYXRpb24KK2luIGl0
IGluIHRoZSBmdXR1cmUuKTsgb3RoZXJ3aXNlIGl0IHdpbGwgbm90IGNyZWF0ZSBpdC4KKworSGVy
ZSdzIGFuIGV4YW1wbGUgdG8gbWFrZSBpdCBjbGVhci4gIFN1cHBvc2UgeW91IGhhdmUgYSB0ZXN0
IHByb2dyYW0KK2Bmb29fdGVzdGAgdGhhdCBjb250YWlucyB0aGUgZm9sbG93aW5nIDUgdGVzdCBm
dW5jdGlvbnM6CitgYGAKK1RFU1QoQSwgVikKK1RFU1QoQSwgVykKK1RFU1QoQiwgWCkKK1RFU1Qo
QiwgWSkKK1RFU1QoQiwgWikKK2BgYAorYW5kIHlvdSBoYXZlIDMgbWFjaGluZXMgYXQgeW91ciBk
aXNwb3NhbC4gIFRvIHJ1biB0aGUgdGVzdCBmdW5jdGlvbnMgaW4KK3BhcmFsbGVsLCB5b3Ugd291
bGQgc2V0IGBHVEVTVF9UT1RBTF9TSEFSRFNgIHRvIDMgb24gYWxsIG1hY2hpbmVzLCBhbmQKK3Nl
dCBgR1RFU1RfU0hBUkRfSU5ERVhgIHRvIDAsIDEsIGFuZCAyIG9uIHRoZSBtYWNoaW5lcyByZXNw
ZWN0aXZlbHkuCitUaGVuIHlvdSB3b3VsZCBydW4gdGhlIHNhbWUgYGZvb190ZXN0YCBvbiBlYWNo
IG1hY2hpbmUuCisKK0dvb2dsZSBUZXN0IHJlc2VydmVzIHRoZSByaWdodCB0byBjaGFuZ2UgaG93
IHRoZSB3b3JrIGlzIGRpc3RyaWJ1dGVkCithY3Jvc3MgdGhlIHNoYXJkcywgYnV0IGhlcmUncyBv
bmUgcG9zc2libGUgc2NlbmFyaW86CisKKyAgKiBNYWNoaW5lICMwIHJ1bnMgYEEuVmAgYW5kIGBC
LlhgLgorICAqIE1hY2hpbmUgIzEgcnVucyBgQS5XYCBhbmQgYEIuWWAuCisgICogTWFjaGluZSAj
MiBydW5zIGBCLlpgLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2lu
Y2UgdmVyc2lvbiAxLjMuMC4KKworIyBGdXNpbmcgR29vZ2xlIFRlc3QgU291cmNlIEZpbGVzICMK
KworR29vZ2xlIFRlc3QncyBpbXBsZW1lbnRhdGlvbiBjb25zaXN0cyBvZiB+MzAgZmlsZXMgKGV4
Y2x1ZGluZyBpdHMgb3duCit0ZXN0cykuICBTb21ldGltZXMgeW91IG1heSB3YW50IHRoZW0gdG8g
YmUgcGFja2FnZWQgdXAgaW4gdHdvIGZpbGVzIChhCitgLmhgIGFuZCBhIGAuY2NgKSBpbnN0ZWFk
LCBzdWNoIHRoYXQgeW91IGNhbiBlYXNpbHkgY29weSB0aGVtIHRvIGEgbmV3CittYWNoaW5lIGFu
ZCBzdGFydCBoYWNraW5nIHRoZXJlLiAgRm9yIHRoaXMgd2UgcHJvdmlkZSBhbiBleHBlcmltZW50
YWwKK1B5dGhvbiBzY3JpcHQgYGZ1c2VfZ3Rlc3RfZmlsZXMucHlgIGluIHRoZSBgc2NyaXB0cy9g
IGRpcmVjdG9yeSAoc2luY2UgcmVsZWFzZSAxLjMuMCkuCitBc3N1bWluZyB5b3UgaGF2ZSBQeXRo
b24gMi40IG9yIGFib3ZlIGluc3RhbGxlZCBvbiB5b3VyIG1hY2hpbmUsIGp1c3QKK2dvIHRvIHRo
YXQgZGlyZWN0b3J5IGFuZCBydW4KK2BgYAorcHl0aG9uIGZ1c2VfZ3Rlc3RfZmlsZXMucHkgT1VU
UFVUX0RJUgorYGBgCisKK2FuZCB5b3Ugc2hvdWxkIHNlZSBhbiBgT1VUUFVUX0RJUmAgZGlyZWN0
b3J5IGJlaW5nIGNyZWF0ZWQgd2l0aCBmaWxlcworYGd0ZXN0L2d0ZXN0LmhgIGFuZCBgZ3Rlc3Qv
Z3Rlc3QtYWxsLmNjYCBpbiBpdC4gIFRoZXNlIGZpbGVzIGNvbnRhaW4KK2V2ZXJ5dGhpbmcgeW91
IG5lZWQgdG8gdXNlIEdvb2dsZSBUZXN0LiAgSnVzdCBjb3B5IHRoZW0gdG8gYW55d2hlcmUKK3lv
dSB3YW50IGFuZCB5b3UgYXJlIHJlYWR5IHRvIHdyaXRlIHRlc3RzLiAgWW91IGNhbiB1c2UgdGhl
Citbc2NyaXB0cy90ZXN0L01ha2VmaWxlXSguLi9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUpCitmaWxl
IGFzIGFuIGV4YW1wbGUgb24gaG93IHRvIGNvbXBpbGUgeW91ciB0ZXN0cyBhZ2FpbnN0IHRoZW0u
CisKKyMgV2hlcmUgdG8gR28gZnJvbSBIZXJlICMKKworQ29uZ3JhdHVsYXRpb25zISBZb3UndmUg
bm93IGxlYXJuZWQgbW9yZSBhZHZhbmNlZCBHb29nbGUgVGVzdCB0b29scyBhbmQgYXJlCityZWFk
eSB0byB0YWNrbGUgbW9yZSBjb21wbGV4IHRlc3RpbmcgdGFza3MuIElmIHlvdSB3YW50IHRvIGRp
dmUgZXZlbiBkZWVwZXIsIHlvdQorY2FuIHJlYWQgdGhlIFtGcmVxdWVudGx5LUFza2VkIFF1ZXN0
aW9uc10oRkFRLm1kKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3Mv
RGV2R3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL0Rldkd1aWRlLm1kCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA2NDY3YTMyNzcxZjUzYzRhOWI5NWE2YWExMzRlZGRlM2ZhZGY2MzcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL0Rldkd1aWRlLm1kCkBA
IC0wLDAgKzEsMTI2IEBACisKKworSWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIHVuZGVyc3RhbmRp
bmcgdGhlIGludGVybmFscyBvZiBHb29nbGUgVGVzdCwKK2J1aWxkaW5nIGZyb20gc291cmNlLCBv
ciBjb250cmlidXRpbmcgaWRlYXMgb3IgbW9kaWZpY2F0aW9ucyB0byB0aGUKK3Byb2plY3QsIHRo
ZW4gdGhpcyBkb2N1bWVudCBpcyBmb3IgeW91LgorCisjIEludHJvZHVjdGlvbiAjCisKK0ZpcnN0
LCBsZXQncyBnaXZlIHlvdSBzb21lIGJhY2tncm91bmQgb2YgdGhlIHByb2plY3QuCisKKyMjIExp
Y2Vuc2luZyAjIworCitBbGwgR29vZ2xlIFRlc3Qgc291cmNlIGFuZCBwcmUtYnVpbHQgcGFja2Fn
ZXMgYXJlIHByb3ZpZGVkIHVuZGVyIHRoZSBbTmV3IEJTRCBMaWNlbnNlXShodHRwOi8vd3d3Lm9w
ZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocCkuCisKKyMjIFRoZSBHb29nbGUg
VGVzdCBDb21tdW5pdHkgIyMKKworVGhlIEdvb2dsZSBUZXN0IGNvbW11bml0eSBleGlzdHMgcHJp
bWFyaWx5IHRocm91Z2ggdGhlIFtkaXNjdXNzaW9uIGdyb3VwXShodHRwOi8vZ3JvdXBzLmdvb2ds
ZS5jb20vZ3JvdXAvZ29vZ2xldGVzdGZyYW1ld29yaykgYW5kIHRoZSBHaXRIdWIgcmVwb3NpdG9y
eS4KK1lvdSBhcmUgZGVmaW5pdGVseSBlbmNvdXJhZ2VkIHRvIGNvbnRyaWJ1dGUgdG8gdGhlCitk
aXNjdXNzaW9uIGFuZCB5b3UgY2FuIGFsc28gaGVscCB1cyB0byBrZWVwIHRoZSBlZmZlY3RpdmVu
ZXNzIG9mIHRoZQorZ3JvdXAgaGlnaCBieSBmb2xsb3dpbmcgYW5kIHByb21vdGluZyB0aGUgZ3Vp
ZGVsaW5lcyBsaXN0ZWQgaGVyZS4KKworIyMjIFBsZWFzZSBCZSBGcmllbmRseSAjIyMKKworU2hv
d2luZyBjb3VydGVzeSBhbmQgcmVzcGVjdCB0byBvdGhlcnMgaXMgYSB2aXRhbCBwYXJ0IG9mIHRo
ZSBHb29nbGUKK2N1bHR1cmUsIGFuZCB3ZSBzdHJvbmdseSBlbmNvdXJhZ2UgZXZlcnlvbmUgcGFy
dGljaXBhdGluZyBpbiBHb29nbGUKK1Rlc3QgZGV2ZWxvcG1lbnQgdG8gam9pbiB1cyBpbiBhY2Nl
cHRpbmcgbm90aGluZyBsZXNzLiBPZiBjb3Vyc2UsCitiZWluZyBjb3VydGVvdXMgaXMgbm90IHRo
ZSBzYW1lIGFzIGZhaWxpbmcgdG8gY29uc3RydWN0aXZlbHkgZGlzYWdyZWUKK3dpdGggZWFjaCBv
dGhlciwgYnV0IGl0IGRvZXMgbWVhbiB0aGF0IHdlIHNob3VsZCBiZSByZXNwZWN0ZnVsIG9mIGVh
Y2gKK290aGVyIHdoZW4gZW51bWVyYXRpbmcgdGhlIDQyIHRlY2huaWNhbCByZWFzb25zIHRoYXQg
YSBwYXJ0aWN1bGFyCitwcm9wb3NhbCBtYXkgbm90IGJlIHRoZSBiZXN0IGNob2ljZS4gVGhlcmUn
cyBuZXZlciBhIHJlYXNvbiB0byBiZQorYW50YWdvbmlzdGljIG9yIGRpc21pc3NpdmUgdG93YXJk
IGFueW9uZSB3aG8gaXMgc2luY2VyZWx5IHRyeWluZyB0bworY29udHJpYnV0ZSB0byBhIGRpc2N1
c3Npb24uCisKK1N1cmUsIEMrKyB0ZXN0aW5nIGlzIHNlcmlvdXMgYnVzaW5lc3MgYW5kIGFsbCB0
aGF0LCBidXQgaXQncyBhbHNvCithIGxvdCBvZiBmdW4uIExldCdzIGtlZXAgaXQgdGhhdCB3YXku
IExldCdzIHN0cml2ZSB0byBiZSBvbmUgb2YgdGhlCitmcmllbmRsaWVzdCBjb21tdW5pdGllcyBp
biBhbGwgb2Ygb3BlbiBzb3VyY2UuCisKK0FzIGFsd2F5cywgZGlzY3VzcyBHb29nbGUgVGVzdCBp
biB0aGUgb2ZmaWNpYWwgR29vZ2xlVGVzdCBkaXNjdXNzaW9uIGdyb3VwLgorWW91IGRvbid0IGhh
dmUgdG8gYWN0dWFsbHkgc3VibWl0IGNvZGUgaW4gb3JkZXIgdG8gc2lnbiB1cC4gWW91ciBwYXJ0
aWNpcGF0aW9uCitpdHNlbGYgaXMgYSB2YWx1YWJsZSBjb250cmlidXRpb24uCisKKyMgV29ya2lu
ZyB3aXRoIHRoZSBDb2RlICMKKworSWYgeW91IHdhbnQgdG8gZ2V0IHlvdXIgaGFuZHMgZGlydHkg
d2l0aCB0aGUgY29kZSBpbnNpZGUgR29vZ2xlIFRlc3QsCit0aGlzIGlzIHRoZSBzZWN0aW9uIGZv
ciB5b3UuCisKKyMjIENvbXBpbGluZyBmcm9tIFNvdXJjZSAjIworCitPbmNlIHlvdSBjaGVjayBv
dXQgdGhlIGNvZGUsIHlvdSBjYW4gZmluZCBpbnN0cnVjdGlvbnMgb24gaG93IHRvCitjb21waWxl
IGl0IGluIHRoZSBbUkVBRE1FXSguLi9SRUFETUUubWQpIGZpbGUuCisKKyMjIFRlc3RpbmcgIyMK
KworQSB0ZXN0aW5nIGZyYW1ld29yayBpcyBvZiBubyBnb29kIGlmIGl0c2VsZiBpcyBub3QgdGhv
cm91Z2hseSB0ZXN0ZWQuCitUZXN0cyBzaG91bGQgYmUgd3JpdHRlbiBmb3IgYW55IG5ldyBjb2Rl
LCBhbmQgY2hhbmdlcyBzaG91bGQgYmUKK3ZlcmlmaWVkIHRvIG5vdCBicmVhayBleGlzdGluZyB0
ZXN0cyBiZWZvcmUgdGhleSBhcmUgc3VibWl0dGVkIGZvcgorcmV2aWV3LiBUbyBwZXJmb3JtIHRo
ZSB0ZXN0cywgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgaW4KK1tSRUFETUVdKC4uL1JFQURNRS5t
ZCkgYW5kIHZlcmlmeSB0aGF0IHRoZXJlIGFyZSBubyBmYWlsdXJlcy4KKworIyBDb250cmlidXRp
bmcgQ29kZSAjCisKK1dlIGFyZSBleGNpdGVkIHRoYXQgR29vZ2xlIFRlc3QgaXMgbm93IG9wZW4g
c291cmNlLCBhbmQgaG9wZSB0byBnZXQKK2dyZWF0IHBhdGNoZXMgZnJvbSB0aGUgY29tbXVuaXR5
LiBCZWZvcmUgeW91IGZpcmUgdXAgeW91ciBmYXZvcml0ZSBJREUKK2FuZCBiZWdpbiBoYW1tZXJp
bmcgYXdheSBhdCB0aGF0IG5ldyBmZWF0dXJlLCB0aG91Z2gsIHBsZWFzZSB0YWtlIHRoZQordGlt
ZSB0byByZWFkIHRoaXMgc2VjdGlvbiBhbmQgdW5kZXJzdGFuZCB0aGUgcHJvY2Vzcy4gV2hpbGUg
aXQgc2VlbXMKK3JpZ29yb3VzLCB3ZSB3YW50IHRvIGtlZXAgYSBoaWdoIHN0YW5kYXJkIG9mIHF1
YWxpdHkgaW4gdGhlIGNvZGUKK2Jhc2UuCisKKyMjIENvbnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVt
ZW50cyAjIworCitZb3UgbXVzdCBzaWduIGEgQ29udHJpYnV0b3IgTGljZW5zZSBBZ3JlZW1lbnQg
KENMQSkgYmVmb3JlIHdlIGNhbgorYWNjZXB0IGFueSBjb2RlLiAgVGhlIENMQSBwcm90ZWN0cyB5
b3UgYW5kIHVzLgorCisgICogSWYgeW91IGFyZSBhbiBpbmRpdmlkdWFsIHdyaXRpbmcgb3JpZ2lu
YWwgc291cmNlIGNvZGUgYW5kIHlvdSdyZSBzdXJlIHlvdSBvd24gdGhlIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSwgdGhlbiB5b3UnbGwgbmVlZCB0byBzaWduIGFuIFtpbmRpdmlkdWFsIENMQV0oaHR0
cDovL2NvZGUuZ29vZ2xlLmNvbS9sZWdhbC9pbmRpdmlkdWFsLWNsYS12MS4wLmh0bWwpLgorICAq
IElmIHlvdSB3b3JrIGZvciBhIGNvbXBhbnkgdGhhdCB3YW50cyB0byBhbGxvdyB5b3UgdG8gY29u
dHJpYnV0ZSB5b3VyIHdvcmsgdG8gR29vZ2xlIFRlc3QsIHRoZW4geW91J2xsIG5lZWQgdG8gc2ln
biBhIFtjb3Jwb3JhdGUgQ0xBXShodHRwOi8vY29kZS5nb29nbGUuY29tL2xlZ2FsL2NvcnBvcmF0
ZS1jbGEtdjEuMC5odG1sKS4KKworRm9sbG93IGVpdGhlciBvZiB0aGUgdHdvIGxpbmtzIGFib3Zl
IHRvIGFjY2VzcyB0aGUgYXBwcm9wcmlhdGUgQ0xBIGFuZAoraW5zdHJ1Y3Rpb25zIGZvciBob3cg
dG8gc2lnbiBhbmQgcmV0dXJuIGl0LgorCisjIyBDb2RpbmcgU3R5bGUgIyMKKworVG8ga2VlcCB0
aGUgc291cmNlIGNvbnNpc3RlbnQsIHJlYWRhYmxlLCBkaWZmYWJsZSBhbmQgZWFzeSB0byBtZXJn
ZSwKK3dlIHVzZSBhIGZhaXJseSByaWdpZCBjb2Rpbmcgc3R5bGUsIGFzIGRlZmluZWQgYnkgdGhl
IFtnb29nbGUtc3R5bGVndWlkZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS1zdHls
ZWd1aWRlLykgcHJvamVjdC4gIEFsbCBwYXRjaGVzIHdpbGwgYmUgZXhwZWN0ZWQKK3RvIGNvbmZv
cm0gdG8gdGhlIHN0eWxlIG91dGxpbmVkIFtoZXJlXShodHRwOi8vZ29vZ2xlLXN0eWxlZ3VpZGUu
Z29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2NwcGd1aWRlLnhtbCkuCisKKyMjIFVwZGF0aW5nIEdl
bmVyYXRlZCBDb2RlICMjCisKK1NvbWUgb2YgR29vZ2xlIFRlc3QncyBzb3VyY2UgZmlsZXMgYXJl
IGdlbmVyYXRlZCBieSB0aGUgUHVtcCB0b29sIChhCitQeXRob24gc2NyaXB0KS4gIElmIHlvdSBu
ZWVkIHRvIHVwZGF0ZSBzdWNoIGZpbGVzLCBwbGVhc2UgbW9kaWZ5IHRoZQorc291cmNlIChgZm9v
LmgucHVtcGApIGFuZCByZS1nZW5lcmF0ZSB0aGUgQysrIGZpbGUgdXNpbmcgUHVtcC4gIFlvdQor
Y2FuIHJlYWQgdGhlIFB1bXBNYW51YWwgZm9yIGRldGFpbHMuCisKKyMjIFN1Ym1pdHRpbmcgUGF0
Y2hlcyAjIworCitQbGVhc2UgZG8gc3VibWl0IGNvZGUuIEhlcmUncyB3aGF0IHlvdSBuZWVkIHRv
IGRvOgorCisgIDEuIEEgc3VibWlzc2lvbiBzaG91bGQgYmUgYSBzZXQgb2YgY2hhbmdlcyB0aGF0
IGFkZHJlc3NlcyBvbmUgaXNzdWUgaW4gdGhlIFtpc3N1ZSB0cmFja2VyXShodHRwczovL2dpdGh1
Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvaXNzdWVzKS4gUGxlYXNlIGRvbid0IG1peCBtb3JlIHRo
YW4gb25lIGxvZ2ljYWwgY2hhbmdlIHBlciBzdWJtaXR0YWwsIGJlY2F1c2UgaXQgbWFrZXMgdGhl
IGhpc3RvcnkgaGFyZCB0byBmb2xsb3cuIElmIHlvdSB3YW50IHRvIG1ha2UgYSBjaGFuZ2UgdGhh
dCBkb2Vzbid0IGhhdmUgYSBjb3JyZXNwb25kaW5nIGlzc3VlIGluIHRoZSBpc3N1ZSB0cmFja2Vy
LCBwbGVhc2UgY3JlYXRlIG9uZS4KKyAgMS4gQWxzbywgY29vcmRpbmF0ZSB3aXRoIHRlYW0gbWVt
YmVycyB0aGF0IGFyZSBsaXN0ZWQgb24gdGhlIGlzc3VlIGluIHF1ZXN0aW9uLiBUaGlzIGVuc3Vy
ZXMgdGhhdCB3b3JrIGlzbid0IGJlaW5nIGR1cGxpY2F0ZWQgYW5kIGNvbW11bmljYXRpbmcgeW91
ciBwbGFuIGVhcmx5IGFsc28gZ2VuZXJhbGx5IGxlYWRzIHRvIGJldHRlciBwYXRjaGVzLgorICAx
LiBFbnN1cmUgdGhhdCB5b3VyIGNvZGUgYWRoZXJlcyB0byB0aGUgW0dvb2dsZSBUZXN0IHNvdXJj
ZSBjb2RlIHN0eWxlXSgjQ29kaW5nX1N0eWxlLm1kKS4KKyAgMS4gRW5zdXJlIHRoYXQgdGhlcmUg
YXJlIHVuaXQgdGVzdHMgZm9yIHlvdXIgY29kZS4KKyAgMS4gU2lnbiBhIENvbnRyaWJ1dG9yIExp
Y2Vuc2UgQWdyZWVtZW50LgorICAxLiBDcmVhdGUgYSBQdWxsIFJlcXVlc3QgaW4gdGhlIHVzdWFs
IHdheS4KKworIyMgR29vZ2xlIFRlc3QgQ29tbWl0dGVycyAjIworCitUaGUgY3VycmVudCBtZW1i
ZXJzIG9mIHRoZSBHb29nbGUgVGVzdCBlbmdpbmVlcmluZyB0ZWFtIGFyZSB0aGUgb25seQorY29t
bWl0dGVycyBhdCBwcmVzZW50LiBJbiB0aGUgZ3JlYXQgdHJhZGl0aW9uIG9mIGVhdGluZyBvbmUn
cyBvd24KK2RvZ2Zvb2QsIHdlIHdpbGwgYmUgcmVxdWlyaW5nIGVhY2ggbmV3IEdvb2dsZSBUZXN0
IGVuZ2luZWVyaW5nIHRlYW0KK21lbWJlciB0byBlYXJuIHRoZSByaWdodCB0byBiZWNvbWUgYSBj
b21taXR0ZXIgYnkgZm9sbG93aW5nIHRoZQorcHJvY2VkdXJlcyBpbiB0aGlzIGRvY3VtZW50LCB3
cml0aW5nIGNvbnNpc3RlbnRseSBncmVhdCBjb2RlLCBhbmQKK2RlbW9uc3RyYXRpbmcgcmVwZWF0
ZWRseSB0aGF0IGhlIG9yIHNoZSB0cnVseSBnZXRzIHRoZSB6ZW4gb2YgR29vZ2xlCitUZXN0Lgor
CisjIFJlbGVhc2UgUHJvY2VzcyAjCisKK1dlIGZvbGxvdyBhIHR5cGljYWwgcmVsZWFzZSBwcm9j
ZXNzOgorCisgIDEuIEEgcmVsZWFzZSBicmFuY2ggbmFtZWQgYHJlbGVhc2UtWC5ZYCBpcyBjcmVh
dGVkLgorICAxLiBCdWdzIGFyZSBmaXhlZCBhbmQgZmVhdHVyZXMgYXJlIGFkZGVkIGluIHRydW5r
OyB0aG9zZSBpbmRpdmlkdWFsIHBhdGNoZXMgYXJlIG1lcmdlZCBpbnRvIHRoZSByZWxlYXNlIGJy
YW5jaCB1bnRpbCBpdCdzIHN0YWJsZS4KKyAgMS4gQW4gaW5kaXZpZHVhbCBwb2ludCByZWxlYXNl
ICh0aGUgYFpgIGluIGBYLlkuWmApIGlzIG1hZGUgYnkgY3JlYXRpbmcgYSB0YWcgZnJvbSB0aGUg
YnJhbmNoLgorICAxLiBSZXBlYXQgc3RlcHMgMiBhbmQgMyB0aHJvdWdob3V0IG9uZSByZWxlYXNl
IGN5Y2xlIChhcyBkZXRlcm1pbmVkIGJ5IGZlYXR1cmVzIG9yIHRpbWUpLgorICAxLiBHbyBiYWNr
IHRvIHN0ZXAgMSB0byBjcmVhdGUgYW5vdGhlciByZWxlYXNlIGJyYW5jaCBhbmQgc28gb24uCisK
Ky0tLQorCitUaGlzIHBhZ2UgaXMgYmFzZWQgb24gdGhlIFtNYWtpbmcgR1dUIEJldHRlcl0oaHR0
cDovL2NvZGUuZ29vZ2xlLmNvbS93ZWJ0b29sa2l0L21ha2luZ2d3dGJldHRlci5odG1sKSBndWlk
ZSBmcm9tIHRoZSBbR29vZ2xlIFdlYiBUb29sa2l0XShodHRwOi8vY29kZS5nb29nbGUuY29tL3dl
YnRvb2xraXQvKSBwcm9qZWN0LiAgRXhjZXB0IGFzIG90aGVyd2lzZSBbbm90ZWRdKGh0dHA6Ly9j
b2RlLmdvb2dsZS5jb20vcG9saWNpZXMuaHRtbCNyZXN0cmljdGlvbnMpLCB0aGUgY29udGVudCBv
ZiB0aGlzIHBhZ2UgaXMgbGljZW5zZWQgdW5kZXIgdGhlIFtDcmVhdGl2ZSBDb21tb25zIEF0dHJp
YnV0aW9uIDIuNSBMaWNlbnNlXShodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9i
eS8yLjUvKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvRG9jdW1l
bnRhdGlvbi5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvRG9jdW1lbnRhdGlvbi5t
ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44Y2ExYWFjNzU5OTM3MmUwZDk1MTlhMjEwYzMzNGFlYjM5MzA2MWMwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9Eb2N1bWVudGF0
aW9uLm1kCkBAIC0wLDAgKzEsMTQgQEAKK1RoaXMgcGFnZSBsaXN0cyBhbGwgZG9jdW1lbnRhdGlv
biB3aWtpIHBhZ2VzIGZvciBHb29nbGUgVGVzdCAqKih0aGUgU1ZOIHRydW5rIHZlcnNpb24pKioK
Ky0tICoqaWYgeW91IHVzZSBhIHJlbGVhc2VkIHZlcnNpb24gb2YgR29vZ2xlIFRlc3QsIHBsZWFz
ZSByZWFkIHRoZQorZG9jdW1lbnRhdGlvbiBmb3IgdGhhdCBzcGVjaWZpYyB2ZXJzaW9uIGluc3Rl
YWQuKioKKworICAqIFtQcmltZXJdKFByaW1lci5tZCkgLS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJl
IG5ldyB0byBHb29nbGUgVGVzdC4KKyAgKiBbU2FtcGxlc10oU2FtcGxlcy5tZCkgLS0gbGVhcm4g
ZnJvbSBleGFtcGxlcy4KKyAgKiBbQWR2YW5jZWRHdWlkZV0oQWR2YW5jZWRHdWlkZS5tZCkgLS0g
bGVhcm4gbW9yZSBhYm91dCBHb29nbGUgVGVzdC4KKyAgKiBbWGNvZGVHdWlkZV0oWGNvZGVHdWlk
ZS5tZCkgLS0gaG93IHRvIHVzZSBHb29nbGUgVGVzdCBpbiBYY29kZSBvbiBNYWMuCisgICogW0Zy
ZXF1ZW50bHktQXNrZWQgUXVlc3Rpb25zXShGQVEubWQpIC0tIGNoZWNrIGhlcmUgYmVmb3JlIGFz
a2luZyBhIHF1ZXN0aW9uIG9uIHRoZSBtYWlsaW5nIGxpc3QuCisKK1RvIGNvbnRyaWJ1dGUgY29k
ZSB0byBHb29nbGUgVGVzdCwgcmVhZDoKKworICAqIFtEZXZHdWlkZV0oRGV2R3VpZGUubWQpIC0t
IHJlYWQgdGhpcyBfYmVmb3JlXyB3cml0aW5nIHlvdXIgZmlyc3QgcGF0Y2guCisgICogW1B1bXBN
YW51YWxdKFB1bXBNYW51YWwubWQpIC0tIGhvdyB3ZSBnZW5lcmF0ZSBzb21lIG9mIEdvb2dsZSBU
ZXN0J3Mgc291cmNlIGZpbGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvRkFRLm1kIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvZG9jcy9GQVEubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZkNmNiNzIzOGExOWI3YTcxYTRhOTVh
NjNiZTkzZTE5MjE0NTJkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2RvY3MvRkFRLm1kCkBAIC0wLDAgKzEsMTA4NyBAQAorCisKK0lmIHlvdSBjYW5ub3QgZmlu
ZCB0aGUgYW5zd2VyIHRvIHlvdXIgcXVlc3Rpb24gaGVyZSwgYW5kIHlvdSBoYXZlIHJlYWQKK1tQ
cmltZXJdKFByaW1lci5tZCkgYW5kIFtBZHZhbmNlZEd1aWRlXShBZHZhbmNlZEd1aWRlLm1kKSwg
c2VuZCBpdCB0bworZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tLgorCisjIyBX
aHkgc2hvdWxkIEkgdXNlIEdvb2dsZSBUZXN0IGluc3RlYWQgb2YgbXkgZmF2b3JpdGUgQysrIHRl
c3RpbmcgZnJhbWV3b3JrPyAjIworCitGaXJzdCwgbGV0IHVzIHNheSBjbGVhcmx5IHRoYXQgd2Ug
ZG9uJ3Qgd2FudCB0byBnZXQgaW50byB0aGUgZGViYXRlIG9mCit3aGljaCBDKysgdGVzdGluZyBm
cmFtZXdvcmsgaXMgKip0aGUgYmVzdCoqLiAgVGhlcmUgZXhpc3QgbWFueSBmaW5lCitmcmFtZXdv
cmtzIGZvciB3cml0aW5nIEMrKyB0ZXN0cywgYW5kIHdlIGhhdmUgdHJlbWVuZG91cyByZXNwZWN0
IGZvcgordGhlIGRldmVsb3BlcnMgYW5kIHVzZXJzIG9mIHRoZW0uICBXZSBkb24ndCB0aGluayB0
aGVyZSBpcyAob3Igd2lsbAorYmUpIGEgc2luZ2xlIGJlc3QgZnJhbWV3b3JrIC0geW91IGhhdmUg
dG8gcGljayB0aGUgcmlnaHQgdG9vbCBmb3IgdGhlCitwYXJ0aWN1bGFyIHRhc2sgeW91IGFyZSB0
YWNrbGluZy4KKworV2UgY3JlYXRlZCBHb29nbGUgVGVzdCBiZWNhdXNlIHdlIGNvdWxkbid0IGZp
bmQgdGhlIHJpZ2h0IGNvbWJpbmF0aW9uCitvZiBmZWF0dXJlcyBhbmQgY29udmVuaWVuY2VzIGlu
IGFuIGV4aXN0aW5nIGZyYW1ld29yayB0byBzYXRpc2Z5IF9vdXJfCituZWVkcy4gIFRoZSBmb2xs
b3dpbmcgaXMgYSBsaXN0IG9mIHRoaW5ncyB0aGF0IF93ZV8gbGlrZSBhYm91dCBHb29nbGUKK1Rl
c3QuICBXZSBkb24ndCBjbGFpbSB0aGVtIHRvIGJlIHVuaXF1ZSB0byBHb29nbGUgVGVzdCAtIHJh
dGhlciwgdGhlCitjb21iaW5hdGlvbiBvZiB0aGVtIG1ha2VzIEdvb2dsZSBUZXN0IHRoZSBjaG9p
Y2UgZm9yIHVzLiAgV2UgaG9wZSB0aGlzCitsaXN0IGNhbiBoZWxwIHlvdSBkZWNpZGUgd2hldGhl
ciBpdCBpcyBmb3IgeW91IHRvby4KKworICAqIEdvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHRvIGJl
IHBvcnRhYmxlOiBpdCBkb2Vzbid0IHJlcXVpcmUgZXhjZXB0aW9ucyBvciBSVFRJOyBpdCB3b3Jr
cyBhcm91bmQgdmFyaW91cyBidWdzIGluIHZhcmlvdXMgY29tcGlsZXJzIGFuZCBlbnZpcm9ubWVu
dHM7IGV0Yy4gIEFzIGEgcmVzdWx0LCBpdCB3b3JrcyBvbiBMaW51eCwgTWFjIE9TIFgsIFdpbmRv
d3MgYW5kIHNldmVyYWwgZW1iZWRkZWQgb3BlcmF0aW5nIHN5c3RlbXMuCisgICogTm9uZmF0YWwg
YXNzZXJ0aW9ucyAoYEVYUEVDVF8qYCkgaGF2ZSBwcm92ZW4gdG8gYmUgZ3JlYXQgdGltZSBzYXZl
cnMsIGFzIHRoZXkgYWxsb3cgYSB0ZXN0IHRvIHJlcG9ydCBtdWx0aXBsZSBmYWlsdXJlcyBpbiBh
IHNpbmdsZSBlZGl0LWNvbXBpbGUtdGVzdCBjeWNsZS4KKyAgKiBJdCdzIGVhc3kgdG8gd3JpdGUg
YXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIGluZm9ybWF0aXZlIG1lc3NhZ2VzOiB5b3UganVzdCB1
c2UgdGhlIHN0cmVhbSBzeW50YXggdG8gYXBwZW5kIGFueSBhZGRpdGlvbmFsIGluZm9ybWF0aW9u
LCBlLmcuIGBBU1NFUlRfRVEoNSwgRm9vKGkpKSA8PCAiIHdoZXJlIGkgPSAiIDw8IGk7YC4gIEl0
IGRvZXNuJ3QgcmVxdWlyZSBhIG5ldyBzZXQgb2YgbWFjcm9zIG9yIHNwZWNpYWwgZnVuY3Rpb25z
LgorICAqIEdvb2dsZSBUZXN0IGF1dG9tYXRpY2FsbHkgZGV0ZWN0cyB5b3VyIHRlc3RzIGFuZCBk
b2Vzbid0IHJlcXVpcmUgeW91IHRvIGVudW1lcmF0ZSB0aGVtIGluIG9yZGVyIHRvIHJ1biB0aGVt
LgorICAqIERlYXRoIHRlc3RzIGFyZSBwcmV0dHkgaGFuZHkgZm9yIGVuc3VyaW5nIHRoYXQgeW91
ciBhc3NlcnRzIGluIHByb2R1Y3Rpb24gY29kZSBhcmUgdHJpZ2dlcmVkIGJ5IHRoZSByaWdodCBj
b25kaXRpb25zLgorICAqIGBTQ09QRURfVFJBQ0VgIGhlbHBzIHlvdSB1bmRlcnN0YW5kIHRoZSBj
b250ZXh0IG9mIGFuIGFzc2VydGlvbiBmYWlsdXJlIHdoZW4gaXQgY29tZXMgZnJvbSBpbnNpZGUg
YSBzdWItcm91dGluZSBvciBsb29wLgorICAqIFlvdSBjYW4gZGVjaWRlIHdoaWNoIHRlc3RzIHRv
IHJ1biB1c2luZyBuYW1lIHBhdHRlcm5zLiAgVGhpcyBzYXZlcyB0aW1lIHdoZW4geW91IHdhbnQg
dG8gcXVpY2tseSByZXByb2R1Y2UgYSB0ZXN0IGZhaWx1cmUuCisgICogR29vZ2xlIFRlc3QgY2Fu
IGdlbmVyYXRlIFhNTCB0ZXN0IHJlc3VsdCByZXBvcnRzIHRoYXQgY2FuIGJlIHBhcnNlZCBieSBw
b3B1bGFyIGNvbnRpbnVvdXMgYnVpbGQgc3lzdGVtIGxpa2UgSHVkc29uLgorICAqIFNpbXBsZSB0
aGluZ3MgYXJlIGVhc3kgaW4gR29vZ2xlIFRlc3QsIHdoaWxlIGhhcmQgdGhpbmdzIGFyZSBwb3Nz
aWJsZTogaW4gYWRkaXRpb24gdG8gYWR2YW5jZWQgZmVhdHVyZXMgbGlrZSBbZ2xvYmFsIHRlc3Qg
ZW52aXJvbm1lbnRzXShBZHZhbmNlZEd1aWRlLm1kI2dsb2JhbC1zZXQtdXAtYW5kLXRlYXItZG93
bikgYW5kIHRlc3RzIHBhcmFtZXRlcml6ZWQgYnkgW3ZhbHVlc10oQWR2YW5jZWRHdWlkZS5tZCN2
YWx1ZS1wYXJhbWV0ZXJpemVkLXRlc3RzKSBvciBbdHlwZXNdKGRvY3MvQWR2YW5jZWRHdWlkZS5t
ZCN0eXBlZC10ZXN0cyksIEdvb2dsZSBUZXN0IHN1cHBvcnRzIHZhcmlvdXMgd2F5cyBmb3IgdGhl
IHVzZXIgdG8gZXh0ZW5kIHRoZSBmcmFtZXdvcmsgLS0gaWYgR29vZ2xlIFRlc3QgZG9lc24ndCBk
byBzb21ldGhpbmcgb3V0IG9mIHRoZSBib3gsIGNoYW5jZXMgYXJlIHRoYXQgYSB1c2VyIGNhbiBp
bXBsZW1lbnQgdGhlIGZlYXR1cmUgdXNpbmcgR29vZ2xlIFRlc3QncyBwdWJsaWMgQVBJLCB3aXRo
b3V0IGNoYW5naW5nIEdvb2dsZSBUZXN0IGl0c2VsZi4gIEluIHBhcnRpY3VsYXIsIHlvdSBjYW46
CisgICAgKiBleHBhbmQgeW91ciB0ZXN0aW5nIHZvY2FidWxhcnkgYnkgZGVmaW5pbmcgW2N1c3Rv
bSBwcmVkaWNhdGVzXShBZHZhbmNlZEd1aWRlLm1kI3ByZWRpY2F0ZS1hc3NlcnRpb25zLWZvci1i
ZXR0ZXItZXJyb3ItbWVzc2FnZXMpLAorICAgICogdGVhY2ggR29vZ2xlIFRlc3QgaG93IHRvIFtw
cmludCB5b3VyIHR5cGVzXShBZHZhbmNlZEd1aWRlLm1kI3RlYWNoaW5nLWdvb2dsZS10ZXN0LWhv
dy10by1wcmludC15b3VyLXZhbHVlcyksCisgICAgKiBkZWZpbmUgeW91ciBvd24gdGVzdGluZyBt
YWNyb3Mgb3IgdXRpbGl0aWVzIGFuZCB2ZXJpZnkgdGhlbSB1c2luZyBHb29nbGUgVGVzdCdzIFtT
ZXJ2aWNlIFByb3ZpZGVyIEludGVyZmFjZV0oQWR2YW5jZWRHdWlkZS5tZCNjYXRjaGluZy1mYWls
dXJlcyksIGFuZAorICAgICogcmVmbGVjdCBvbiB0aGUgdGVzdCBjYXNlcyBvciBjaGFuZ2UgdGhl
IHRlc3Qgb3V0cHV0IGZvcm1hdCBieSBpbnRlcmNlcHRpbmcgdGhlIFt0ZXN0IGV2ZW50c10oQWR2
YW5jZWRHdWlkZS5tZCNleHRlbmRpbmctZ29vZ2xlLXRlc3QtYnktaGFuZGxpbmctdGVzdC1ldmVu
dHMpLgorCisjIyBJJ20gZ2V0dGluZyB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZyBHb29nbGUgVGVz
dC4gIFdvdWxkIHlvdSBmaXggdGhlbT8gIyMKKworV2Ugc3RyaXZlIHRvIG1pbmltaXplIGNvbXBp
bGVyIHdhcm5pbmdzIEdvb2dsZSBUZXN0IGdlbmVyYXRlcy4gIEJlZm9yZSByZWxlYXNpbmcgYSBu
ZXcgdmVyc2lvbiwgd2UgdGVzdCB0byBtYWtlIHN1cmUgdGhhdCBpdCBkb2Vzbid0IGdlbmVyYXRl
IHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgdXNpbmcgaXRzIENNYWtlIHNjcmlwdCBvbiBXaW5kb3dz
LCBMaW51eCwgYW5kIE1hYyBPUy4KKworVW5mb3J0dW5hdGVseSwgdGhpcyBkb2Vzbid0IG1lYW4g
eW91IGFyZSBndWFyYW50ZWVkIHRvIHNlZSBubyB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZyBHb29n
bGUgVGVzdCBpbiB5b3VyIGVudmlyb25tZW50OgorCisgICogWW91IG1heSBiZSB1c2luZyBhIGRp
ZmZlcmVudCBjb21waWxlciBhcyB3ZSB1c2UsIG9yIGEgZGlmZmVyZW50IHZlcnNpb24gb2YgdGhl
IHNhbWUgY29tcGlsZXIuICBXZSBjYW5ub3QgcG9zc2libHkgdGVzdCBmb3IgYWxsIGNvbXBpbGVy
cy4KKyAgKiBZb3UgbWF5IGJlIGNvbXBpbGluZyBvbiBhIGRpZmZlcmVudCBwbGF0Zm9ybSBhcyB3
ZSBkby4KKyAgKiBZb3VyIHByb2plY3QgbWF5IGJlIHVzaW5nIGRpZmZlcmVudCBjb21waWxlciBm
bGFncyBhcyB3ZSBkby4KKworSXQgaXMgbm90IGFsd2F5cyBwb3NzaWJsZSB0byBtYWtlIEdvb2ds
ZSBUZXN0IHdhcm5pbmctZnJlZSBmb3IgZXZlcnlvbmUuICBPciwgaXQgbWF5IG5vdCBiZSBkZXNp
cmFibGUgaWYgdGhlIHdhcm5pbmcgaXMgcmFyZWx5IGVuYWJsZWQgYW5kIGZpeGluZyB0aGUgdmlv
bGF0aW9ucyBtYWtlcyB0aGUgY29kZSBtb3JlIGNvbXBsZXguCisKK0lmIHlvdSBzZWUgd2Fybmlu
Z3Mgd2hlbiBjb21waWxpbmcgR29vZ2xlIFRlc3QsIHdlIHN1Z2dlc3QgdGhhdCB5b3UgdXNlIHRo
ZSBgLWlzeXN0ZW1gIGZsYWcgKGFzc3VtaW5nIHlvdXIgYXJlIHVzaW5nIEdDQykgdG8gbWFyayBH
b29nbGUgVGVzdCBoZWFkZXJzIGFzIHN5c3RlbSBoZWFkZXJzLiAgVGhhdCdsbCBzdXBwcmVzcyB3
YXJuaW5ncyBmcm9tIEdvb2dsZSBUZXN0IGhlYWRlcnMuCisKKyMjIFdoeSBzaG91bGQgbm90IHRl
c3QgY2FzZSBuYW1lcyBhbmQgdGVzdCBuYW1lcyBjb250YWluIHVuZGVyc2NvcmU/ICMjCisKK1Vu
ZGVyc2NvcmUgKGBfYCkgaXMgc3BlY2lhbCwgYXMgQysrIHJlc2VydmVzIHRoZSBmb2xsb3dpbmcg
dG8gYmUgdXNlZCBieQordGhlIGNvbXBpbGVyIGFuZCB0aGUgc3RhbmRhcmQgbGlicmFyeToKKwor
ICAxLiBhbnkgaWRlbnRpZmllciB0aGF0IHN0YXJ0cyB3aXRoIGFuIGBfYCBmb2xsb3dlZCBieSBh
biB1cHBlci1jYXNlIGxldHRlciwgYW5kCisgIDEuIGFueSBpZGVudGlmaWVyIHRoYXQgY29udGFp
bmVycyB0d28gY29uc2VjdXRpdmUgdW5kZXJzY29yZXMgKGkuZS4gYF9fYCkgX2FueXdoZXJlXyBp
biBpdHMgbmFtZS4KKworVXNlciBjb2RlIGlzIF9wcm9oaWJpdGVkXyBmcm9tIHVzaW5nIHN1Y2gg
aWRlbnRpZmllcnMuCisKK05vdyBsZXQncyBsb29rIGF0IHdoYXQgdGhpcyBtZWFucyBmb3IgYFRF
U1RgIGFuZCBgVEVTVF9GYC4KKworQ3VycmVudGx5IGBURVNUKFRlc3RDYXNlTmFtZSwgVGVzdE5h
bWUpYCBnZW5lcmF0ZXMgYSBjbGFzcyBuYW1lZAorYFRlc3RDYXNlTmFtZV9UZXN0TmFtZV9UZXN0
YC4gIFdoYXQgaGFwcGVucyBpZiBgVGVzdENhc2VOYW1lYCBvciBgVGVzdE5hbWVgCitjb250YWlu
cyBgX2A/CisKKyAgMS4gSWYgYFRlc3RDYXNlTmFtZWAgc3RhcnRzIHdpdGggYW4gYF9gIGZvbGxv
d2VkIGJ5IGFuIHVwcGVyLWNhc2UgbGV0dGVyIChzYXksIGBfRm9vYCksIHdlIGVuZCB1cCB3aXRo
IGBfRm9vX1Rlc3ROYW1lX1Rlc3RgLCB3aGljaCBpcyByZXNlcnZlZCBhbmQgdGh1cyBpbnZhbGlk
LgorICAxLiBJZiBgVGVzdENhc2VOYW1lYCBlbmRzIHdpdGggYW4gYF9gIChzYXksIGBGb29fYCks
IHdlIGdldCBgRm9vX19UZXN0TmFtZV9UZXN0YCwgd2hpY2ggaXMgaW52YWxpZC4KKyAgMS4gSWYg
YFRlc3ROYW1lYCBzdGFydHMgd2l0aCBhbiBgX2AgKHNheSwgYF9CYXJgKSwgd2UgZ2V0IGBUZXN0
Q2FzZU5hbWVfX0Jhcl9UZXN0YCwgd2hpY2ggaXMgaW52YWxpZC4KKyAgMS4gSWYgYFRlc3ROYW1l
YCBlbmRzIHdpdGggYW4gYF9gIChzYXksIGBCYXJfYCksIHdlIGdldCBgVGVzdENhc2VOYW1lX0Jh
cl9fVGVzdGAsIHdoaWNoIGlzIGludmFsaWQuCisKK1NvIGNsZWFybHkgYFRlc3RDYXNlTmFtZWAg
YW5kIGBUZXN0TmFtZWAgY2Fubm90IHN0YXJ0IG9yIGVuZCB3aXRoIGBfYAorKEFjdHVhbGx5LCBg
VGVzdENhc2VOYW1lYCBjYW4gc3RhcnQgd2l0aCBgX2AgLS0gYXMgbG9uZyBhcyB0aGUgYF9gIGlz
bid0Citmb2xsb3dlZCBieSBhbiB1cHBlci1jYXNlIGxldHRlci4gIEJ1dCB0aGF0J3MgZ2V0dGlu
ZyBjb21wbGljYXRlZC4gIFNvCitmb3Igc2ltcGxpY2l0eSB3ZSBqdXN0IHNheSB0aGF0IGl0IGNh
bm5vdCBzdGFydCB3aXRoIGBfYC4pLgorCitJdCBtYXkgc2VlbSBmaW5lIGZvciBgVGVzdENhc2VO
YW1lYCBhbmQgYFRlc3ROYW1lYCB0byBjb250YWluIGBfYCBpbiB0aGUKK21pZGRsZS4gIEhvd2V2
ZXIsIGNvbnNpZGVyIHRoaXM6CitgYGAgY3BwCitURVNUKFRpbWUsIEZsaWVzX0xpa2VfQW5fQXJy
b3cpIHsgLi4uIH0KK1RFU1QoVGltZV9GbGllcywgTGlrZV9Bbl9BcnJvdykgeyAuLi4gfQorYGBg
CisKK05vdywgdGhlIHR3byBgVEVTVGBzIHdpbGwgYm90aCBnZW5lcmF0ZSB0aGUgc2FtZSBjbGFz
cworKGBUaW1lX0ZpbGVzX0xpa2VfQW5fQXJyb3dfVGVzdGApLiAgVGhhdCdzIG5vdCBnb29kLgor
CitTbyBmb3Igc2ltcGxpY2l0eSwgd2UganVzdCBhc2sgdGhlIHVzZXJzIHRvIGF2b2lkIGBfYCBp
biBgVGVzdENhc2VOYW1lYAorYW5kIGBUZXN0TmFtZWAuICBUaGUgcnVsZSBpcyBtb3JlIGNvbnN0
cmFpbmluZyB0aGFuIG5lY2Vzc2FyeSwgYnV0IGl0J3MKK3NpbXBsZSBhbmQgZWFzeSB0byByZW1l
bWJlci4gIEl0IGFsc28gZ2l2ZXMgR29vZ2xlIFRlc3Qgc29tZSB3aWdnbGUKK3Jvb20gaW4gY2Fz
ZSBpdHMgaW1wbGVtZW50YXRpb24gbmVlZHMgdG8gY2hhbmdlIGluIHRoZSBmdXR1cmUuCisKK0lm
IHlvdSB2aW9sYXRlIHRoZSBydWxlLCB0aGVyZSBtYXkgbm90IGJlIGltbWVkaWF0ZWx5IGNvbnNl
cXVlbmNlcywKK2J1dCB5b3VyIHRlc3QgbWF5IChqdXN0IG1heSkgYnJlYWsgd2l0aCBhIG5ldyBj
b21waWxlciAob3IgYSBuZXcKK3ZlcnNpb24gb2YgdGhlIGNvbXBpbGVyIHlvdSBhcmUgdXNpbmcp
IG9yIHdpdGggYSBuZXcgdmVyc2lvbiBvZiBHb29nbGUKK1Rlc3QuICBUaGVyZWZvcmUgaXQncyBi
ZXN0IHRvIGZvbGxvdyB0aGUgcnVsZS4KKworIyMgV2h5IGlzIGl0IG5vdCByZWNvbW1lbmRlZCB0
byBpbnN0YWxsIGEgcHJlLWNvbXBpbGVkIGNvcHkgb2YgR29vZ2xlIFRlc3QgKGZvciBleGFtcGxl
LCBpbnRvIC91c3IvbG9jYWwpPyAjIworCitJbiB0aGUgZWFybHkgZGF5cywgd2Ugc2FpZCB0aGF0
IHlvdSBjb3VsZCBpbnN0YWxsCitjb21waWxlZCBHb29nbGUgVGVzdCBsaWJyYXJpZXMgb24gYCpg
bml4IHN5c3RlbXMgdXNpbmcgYG1ha2UgaW5zdGFsbGAuCitUaGVuIGV2ZXJ5IHVzZXIgb2YgeW91
ciBtYWNoaW5lIGNhbiB3cml0ZSB0ZXN0cyB3aXRob3V0CityZWNvbXBpbGluZyBHb29nbGUgVGVz
dC4KKworVGhpcyBzZWVtZWQgbGlrZSBhIGdvb2QgaWRlYSwgYnV0IGl0IGhhcyBhCitnb3QtY2hh
OiBldmVyeSB1c2VyIG5lZWRzIHRvIGNvbXBpbGUgaGlzIHRlc3RzIHVzaW5nIHRoZSBfc2FtZV8g
Y29tcGlsZXIKK2ZsYWdzIHVzZWQgdG8gY29tcGlsZSB0aGUgaW5zdGFsbGVkIEdvb2dsZSBUZXN0
IGxpYnJhcmllczsgb3RoZXJ3aXNlCitoZSBtYXkgcnVuIGludG8gdW5kZWZpbmVkIGJlaGF2aW9y
cyAoaS5lLiB0aGUgdGVzdHMgY2FuIGJlaGF2ZQorc3RyYW5nZWx5IGFuZCBtYXkgZXZlbiBjcmFz
aCBmb3Igbm8gb2J2aW91cyByZWFzb25zKS4KKworV2h5PyAgQmVjYXVzZSBDKysgaGFzIHRoaXMg
dGhpbmcgY2FsbGVkIHRoZSBPbmUtRGVmaW5pdGlvbiBSdWxlOiBpZgordHdvIEMrKyBzb3VyY2Ug
ZmlsZXMgY29udGFpbiBkaWZmZXJlbnQgZGVmaW5pdGlvbnMgb2YgdGhlIHNhbWUKK2NsYXNzL2Z1
bmN0aW9uL3ZhcmlhYmxlLCBhbmQgeW91IGxpbmsgdGhlbSB0b2dldGhlciwgeW91IHZpb2xhdGUg
dGhlCitydWxlLiAgVGhlIGxpbmtlciBtYXkgb3IgbWF5IG5vdCBjYXRjaCB0aGUgZXJyb3IgKGlu
IG1hbnkgY2FzZXMgaXQncworbm90IHJlcXVpcmVkIGJ5IHRoZSBDKysgc3RhbmRhcmQgdG8gY2F0
Y2ggdGhlIHZpb2xhdGlvbikuICBJZiBpdAorZG9lc24ndCwgeW91IGdldCBzdHJhbmdlIHJ1bi10
aW1lIGJlaGF2aW9ycyB0aGF0IGFyZSB1bmV4cGVjdGVkIGFuZAoraGFyZCB0byBkZWJ1Zy4KKwor
SWYgeW91IGNvbXBpbGUgR29vZ2xlIFRlc3QgYW5kIHlvdXIgdGVzdCBjb2RlIHVzaW5nIGRpZmZl
cmVudCBjb21waWxlcgorZmxhZ3MsIHRoZXkgbWF5IHNlZSBkaWZmZXJlbnQgZGVmaW5pdGlvbnMg
b2YgdGhlIHNhbWUKK2NsYXNzL2Z1bmN0aW9uL3ZhcmlhYmxlIChlLmcuIGR1ZSB0byB0aGUgdXNl
IG9mIGAjaWZgIGluIEdvb2dsZSBUZXN0KS4KK1RoZXJlZm9yZSwgZm9yIHlvdXIgc2FuaXR5LCB3
ZSByZWNvbW1lbmQgdG8gYXZvaWQgaW5zdGFsbGluZyBwcmUtY29tcGlsZWQKK0dvb2dsZSBUZXN0
IGxpYnJhcmllcy4gIEluc3RlYWQsIGVhY2ggcHJvamVjdCBzaG91bGQgY29tcGlsZQorR29vZ2xl
IFRlc3QgaXRzZWxmIHN1Y2ggdGhhdCBpdCBjYW4gYmUgc3VyZSB0aGF0IHRoZSBzYW1lIGZsYWdz
IGFyZQordXNlZCBmb3IgYm90aCBHb29nbGUgVGVzdCBhbmQgdGhlIHRlc3RzLgorCisjIyBIb3cg
ZG8gSSBnZW5lcmF0ZSA2NC1iaXQgYmluYXJpZXMgb24gV2luZG93cyAodXNpbmcgVmlzdWFsIFN0
dWRpbyAyMDA4KT8gIyMKKworKEFuc3dlcmVkIGJ5IFRyZXZvciBSb2JpbnNvbikKKworTG9hZCB0
aGUgc3VwcGxpZWQgVmlzdWFsIFN0dWRpbyBzb2x1dGlvbiBmaWxlLCBlaXRoZXIgYG1zdmNcZ3Rl
c3QtbWQuc2xuYCBvcgorYG1zdmNcZ3Rlc3Quc2xuYC4gR28gdGhyb3VnaCB0aGUgbWlncmF0aW9u
IHdpemFyZCB0byBtaWdyYXRlIHRoZQorc29sdXRpb24gYW5kIHByb2plY3QgZmlsZXMgdG8gVmlz
dWFsIFN0dWRpbyAyMDA4LiBTZWxlY3QKK2BDb25maWd1cmF0aW9uIE1hbmFnZXIuLi5gIGZyb20g
dGhlIGBCdWlsZGAgbWVudS4gU2VsZWN0IGA8TmV3Li4uPmAgZnJvbQordGhlIGBBY3RpdmUgc29s
dXRpb24gcGxhdGZvcm1gIGRyb3Bkb3duLiAgU2VsZWN0IGB4NjRgIGZyb20gdGhlIG5ldworcGxh
dGZvcm0gZHJvcGRvd24sIGxlYXZlIGBDb3B5IHNldHRpbmdzIGZyb21gIHNldCB0byBgV2luMzJg
IGFuZAorYENyZWF0ZSBuZXcgcHJvamVjdCBwbGF0Zm9ybXNgIGNoZWNrZWQsIHRoZW4gY2xpY2sg
YE9LYC4gWW91IG5vdyBoYXZlCitgV2luMzJgIGFuZCBgeDY0YCBwbGF0Zm9ybSBjb25maWd1cmF0
aW9ucywgc2VsZWN0YWJsZSBmcm9tIHRoZQorYFN0YW5kYXJkYCB0b29sYmFyLCB3aGljaCBhbGxv
dyB5b3UgdG8gdG9nZ2xlIGJldHdlZW4gYnVpbGRpbmcgMzItYml0IG9yCis2NC1iaXQgYmluYXJp
ZXMgKG9yIGJvdGggYXQgb25jZSB1c2luZyBCYXRjaCBCdWlsZCkuCisKK0luIG9yZGVyIHRvIHBy
ZXZlbnQgYnVpbGQgb3V0cHV0IGZpbGVzIGZyb20gb3ZlcndyaXRpbmcgb25lIGFub3RoZXIsCit5
b3UnbGwgbmVlZCB0byBjaGFuZ2UgdGhlIGBJbnRlcm1lZGlhdGUgRGlyZWN0b3J5YCBzZXR0aW5n
cyBmb3IgdGhlCituZXdseSBjcmVhdGVkIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gYWNyb3NzIGFs
bCB0aGUgcHJvamVjdHMuIFRvIGRvCit0aGlzLCBtdWx0aS1zZWxlY3QgKGUuZy4gdXNpbmcgc2hp
ZnQtY2xpY2spIGFsbCBwcm9qZWN0cyAoYnV0IG5vdCB0aGUKK3NvbHV0aW9uKSBpbiB0aGUgYFNv
bHV0aW9uIEV4cGxvcmVyYC4gUmlnaHQtY2xpY2sgb25lIG9mIHRoZW0gYW5kCitzZWxlY3QgYFBy
b3BlcnRpZXNgLiBJbiB0aGUgbGVmdCBwYW5lLCBzZWxlY3QgYENvbmZpZ3VyYXRpb24gUHJvcGVy
dGllc2AsCithbmQgZnJvbSB0aGUgYENvbmZpZ3VyYXRpb25gIGRyb3Bkb3duLCBzZWxlY3QgYEFs
bCBDb25maWd1cmF0aW9uc2AuCitNYWtlIHN1cmUgdGhlIHNlbGVjdGVkIHBsYXRmb3JtIGlzIGB4
NjRgLiBGb3IgdGhlCitgSW50ZXJtZWRpYXRlIERpcmVjdG9yeWAgc2V0dGluZywgY2hhbmdlIHRo
ZSB2YWx1ZSBmcm9tCitgJChQbGF0Zm9ybU5hbWUpXCQoQ29uZmlndXJhdGlvbk5hbWUpYCB0bwor
YCQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWAuIENsaWNrIGBPS2AgYW5kIHRoZW4gYnVpbGQgdGhl
Citzb2x1dGlvbi4gV2hlbiB0aGUgYnVpbGQgaXMgY29tcGxldGUsIHRoZSA2NC1iaXQgYmluYXJp
ZXMgd2lsbCBiZSBpbgordGhlIGBtc3ZjXHg2NFxEZWJ1Z2AgZGlyZWN0b3J5LgorCisjIyBDYW4g
SSB1c2UgR29vZ2xlIFRlc3Qgb24gTWluR1c/ICMjCisKK1dlIGhhdmVuJ3QgdGVzdGVkIHRoaXMg
b3Vyc2VsdmVzLCBidXQgUGVyIEFicmFoYW1zZW4gcmVwb3J0ZWQgdGhhdCBoZQord2FzIGFibGUg
dG8gY29tcGlsZSBhbmQgaW5zdGFsbCBHb29nbGUgVGVzdCBzdWNjZXNzZnVsbHkgd2hlbiB1c2lu
ZworTWluR1cgZnJvbSBDeWd3aW4uICBZb3UnbGwgbmVlZCB0byBjb25maWd1cmUgaXQgd2l0aDoK
KworYFBBVEgvVE8vY29uZmlndXJlIENDPSJnY2MgLW1uby1jeWd3aW4iIENYWD0iZysrIC1tbm8t
Y3lnd2luImAKKworWW91IHNob3VsZCBiZSBhYmxlIHRvIHJlcGxhY2UgdGhlIGAtbW5vLWN5Z3dp
bmAgb3B0aW9uIHdpdGggZGlyZWN0IGxpbmtzCit0byB0aGUgcmVhbCBNaW5HVyBiaW5hcmllcywg
YnV0IHdlIGhhdmVuJ3QgdHJpZWQgdGhhdC4KKworQ2F2ZWF0czoKKworICAqIFRoZXJlIGFyZSBt
YW55IHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nLgorICAqIGBtYWtlIGNoZWNrYCB3aWxsIHByb2R1
Y2Ugc29tZSBlcnJvcnMgYXMgbm90IGFsbCB0ZXN0cyBmb3IgR29vZ2xlIFRlc3QgaXRzZWxmIGFy
ZSBjb21wYXRpYmxlIHdpdGggTWluR1cuCisKK1dlIGFsc28gaGF2ZSByZXBvcnRzIG9uIHN1Y2Nl
c3NmdWwgY3Jvc3MgY29tcGlsYXRpb24gb2YgR29vZ2xlIFRlc3QKK01pbkdXIGJpbmFyaWVzIG9u
IExpbnV4IHVzaW5nCitbdGhlc2UgaW5zdHJ1Y3Rpb25zXShodHRwOi8vd2lraS53eHdpZGdldHMu
b3JnL0Nyb3NzLUNvbXBpbGluZ19VbmRlcl9MaW51eCNDcm9zcy1jb21waWxpbmdfdW5kZXJfTGlu
dXhfZm9yX01TX1dpbmRvd3MpCitvbiB0aGUgV3hXaWRnZXRzIHNpdGUuCisKK1BsZWFzZSBjb250
YWN0IGBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb21gIGlmIHlvdSBhcmUKK2lu
dGVyZXN0ZWQgaW4gaW1wcm92aW5nIHRoZSBzdXBwb3J0IGZvciBNaW5HVy4KKworIyMgV2h5IGRv
ZXMgR29vZ2xlIFRlc3Qgc3VwcG9ydCBFWFBFQ1RcX0VRKE5VTEwsIHB0cikgYW5kIEFTU0VSVFxf
RVEoTlVMTCwgcHRyKSBidXQgbm90IEVYUEVDVFxfTkUoTlVMTCwgcHRyKSBhbmQgQVNTRVJUXF9O
RShOVUxMLCBwdHIpPyAjIworCitEdWUgdG8gc29tZSBwZWN1bGlhcml0eSBvZiBDKyssIGl0IHJl
cXVpcmVzIHNvbWUgbm9uLXRyaXZpYWwgdGVtcGxhdGUKK21ldGEgcHJvZ3JhbW1pbmcgdHJpY2tz
IHRvIHN1cHBvcnQgdXNpbmcgYE5VTExgIGFzIGFuIGFyZ3VtZW50IG9mIHRoZQorYEVYUEVDVF9Y
WCgpYCBhbmQgYEFTU0VSVF9YWCgpYCBtYWNyb3MuIFRoZXJlZm9yZSB3ZSBvbmx5IGRvIGl0IHdo
ZXJlCitpdCdzIG1vc3QgbmVlZGVkIChvdGhlcndpc2Ugd2UgbWFrZSB0aGUgaW1wbGVtZW50YXRp
b24gb2YgR29vZ2xlIFRlc3QKK2hhcmRlciB0byBtYWludGFpbiBhbmQgbW9yZSBlcnJvci1wcm9u
ZSB0aGFuIG5lY2Vzc2FyeSkuCisKK1RoZSBgRVhQRUNUX0VRKClgIG1hY3JvIHRha2VzIHRoZSBf
ZXhwZWN0ZWRfIHZhbHVlIGFzIGl0cyBmaXJzdAorYXJndW1lbnQgYW5kIHRoZSBfYWN0dWFsXyB2
YWx1ZSBhcyB0aGUgc2Vjb25kLiBJdCdzIHJlYXNvbmFibGUgdGhhdAorc29tZW9uZSB3YW50cyB0
byB3cml0ZSBgRVhQRUNUX0VRKE5VTEwsIHNvbWVfZXhwcmVzc2lvbilgLCBhbmQgdGhpcworaW5k
ZWVkIHdhcyByZXF1ZXN0ZWQgc2V2ZXJhbCB0aW1lcy4gVGhlcmVmb3JlIHdlIGltcGxlbWVudGVk
IGl0LgorCitUaGUgbmVlZCBmb3IgYEVYUEVDVF9ORShOVUxMLCBwdHIpYCBpc24ndCBuZWFybHkg
YXMgc3Ryb25nLiBXaGVuIHRoZQorYXNzZXJ0aW9uIGZhaWxzLCB5b3UgYWxyZWFkeSBrbm93IHRo
YXQgYHB0cmAgbXVzdCBiZSBgTlVMTGAsIHNvIGl0Citkb2Vzbid0IGFkZCBhbnkgaW5mb3JtYXRp
b24gdG8gcHJpbnQgcHRyIGluIHRoaXMgY2FzZS4gVGhhdCBtZWFucworYEVYUEVDVF9UUlVFKHB0
ciAhPSBOVUxMKWAgd29ya3MganVzdCBhcyB3ZWxsLgorCitJZiB3ZSB3ZXJlIHRvIHN1cHBvcnQg
YEVYUEVDVF9ORShOVUxMLCBwdHIpYCwgZm9yIGNvbnNpc3RlbmN5IHdlJ2xsCitoYXZlIHRvIHN1
cHBvcnQgYEVYUEVDVF9ORShwdHIsIE5VTEwpYCBhcyB3ZWxsLCBhcyB1bmxpa2UgYEVYUEVDVF9F
UWAsCit3ZSBkb24ndCBoYXZlIGEgY29udmVudGlvbiBvbiB0aGUgb3JkZXIgb2YgdGhlIHR3byBh
cmd1bWVudHMgZm9yCitgRVhQRUNUX05FYC4gVGhpcyBtZWFucyB1c2luZyB0aGUgdGVtcGxhdGUg
bWV0YSBwcm9ncmFtbWluZyB0cmlja3MKK3R3aWNlIGluIHRoZSBpbXBsZW1lbnRhdGlvbiwgbWFr
aW5nIGl0IGV2ZW4gaGFyZGVyIHRvIHVuZGVyc3RhbmQgYW5kCittYWludGFpbi4gV2UgYmVsaWV2
ZSB0aGUgYmVuZWZpdCBkb2Vzbid0IGp1c3RpZnkgdGhlIGNvc3QuCisKK0ZpbmFsbHksIHdpdGgg
dGhlIGdyb3d0aCBvZiBHb29nbGUgTW9jaydzIFttYXRjaGVyXSguLi8uLi9nb29nbGVtb2NrL2Rv
Y3MvQ29va0Jvb2subWQjdXNpbmctbWF0Y2hlcnMtaW4tZ29vZ2xlLXRlc3QtYXNzZXJ0aW9ucykg
bGlicmFyeSwgd2UgYXJlCitlbmNvdXJhZ2luZyBwZW9wbGUgdG8gdXNlIHRoZSB1bmlmaWVkIGBF
WFBFQ1RfVEhBVCh2YWx1ZSwgbWF0Y2hlcilgCitzeW50YXggbW9yZSBvZnRlbiBpbiB0ZXN0cy4g
T25lIHNpZ25pZmljYW50IGFkdmFudGFnZSBvZiB0aGUgbWF0Y2hlcgorYXBwcm9hY2ggaXMgdGhh
dCBtYXRjaGVycyBjYW4gYmUgZWFzaWx5IGNvbWJpbmVkIHRvIGZvcm0gbmV3IG1hdGNoZXJzLAor
d2hpbGUgdGhlIGBFWFBFQ1RfTkVgLCBldGMsIG1hY3JvcyBjYW5ub3QgYmUgZWFzaWx5Citjb21i
aW5lZC4gVGhlcmVmb3JlIHdlIHdhbnQgdG8gaW52ZXN0IG1vcmUgaW4gdGhlIG1hdGNoZXJzIHRo
YW4gaW4gdGhlCitgRVhQRUNUX1hYKClgIG1hY3Jvcy4KKworIyMgRG9lcyBHb29nbGUgVGVzdCBz
dXBwb3J0IHJ1bm5pbmcgdGVzdHMgaW4gcGFyYWxsZWw/ICMjCisKK1Rlc3QgcnVubmVycyB0ZW5k
IHRvIGJlIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBidWlsZC90ZXN0CitlbnZpcm9ubWVudCwg
YW5kIEdvb2dsZSBUZXN0IGRvZXNuJ3QgdHJ5IHRvIHNvbHZlIHRoZSBwcm9ibGVtIG9mCitydW5u
aW5nIHRlc3RzIGluIHBhcmFsbGVsLiAgSW5zdGVhZCwgd2UgdHJpZWQgdG8gbWFrZSBHb29nbGUg
VGVzdCB3b3JrCituaWNlbHkgd2l0aCB0ZXN0IHJ1bm5lcnMuICBGb3IgZXhhbXBsZSwgR29vZ2xl
IFRlc3QncyBYTUwgcmVwb3J0Citjb250YWlucyB0aGUgdGltZSBzcGVudCBvbiBlYWNoIHRlc3Qs
IGFuZCBpdHMgYGd0ZXN0X2xpc3RfdGVzdHNgIGFuZAorYGd0ZXN0X2ZpbHRlcmAgZmxhZ3MgY2Fu
IGJlIHVzZWQgZm9yIHNwbGl0dGluZyB0aGUgZXhlY3V0aW9uIG9mIHRlc3QKK21ldGhvZHMgaW50
byBtdWx0aXBsZSBwcm9jZXNzZXMuICBUaGVzZSBmdW5jdGlvbmFsaXRpZXMgY2FuIGhlbHAgdGhl
Cit0ZXN0IHJ1bm5lciBydW4gdGhlIHRlc3RzIGluIHBhcmFsbGVsLgorCisjIyBXaHkgZG9uJ3Qg
R29vZ2xlIFRlc3QgcnVuIHRoZSB0ZXN0cyBpbiBkaWZmZXJlbnQgdGhyZWFkcyB0byBzcGVlZCB0
aGluZ3MgdXA/ICMjCisKK0l0J3MgZGlmZmljdWx0IHRvIHdyaXRlIHRocmVhZC1zYWZlIGNvZGUu
ICBNb3N0IHRlc3RzIGFyZSBub3Qgd3JpdHRlbgord2l0aCB0aHJlYWQtc2FmZXR5IGluIG1pbmQs
IGFuZCB0aHVzIG1heSBub3Qgd29yayBjb3JyZWN0bHkgaW4gYQorbXVsdGktdGhyZWFkZWQgc2V0
dGluZy4KKworSWYgeW91IHRoaW5rIGFib3V0IGl0LCBpdCdzIGFscmVhZHkgaGFyZCB0byBtYWtl
IHlvdXIgY29kZSB3b3JrIHdoZW4KK3lvdSBrbm93IHdoYXQgb3RoZXIgdGhyZWFkcyBhcmUgZG9p
bmcuICBJdCdzIG11Y2ggaGFyZGVyLCBhbmQKK3NvbWV0aW1lcyBldmVuIGltcG9zc2libGUsIHRv
IG1ha2UgeW91ciBjb2RlIHdvcmsgd2hlbiB5b3UgZG9uJ3Qga25vdword2hhdCBvdGhlciB0aHJl
YWRzIGFyZSBkb2luZyAocmVtZW1iZXIgdGhhdCB0ZXN0IG1ldGhvZHMgY2FuIGJlIGFkZGVkLAor
ZGVsZXRlZCwgb3IgbW9kaWZpZWQgYWZ0ZXIgeW91ciB0ZXN0IHdhcyB3cml0dGVuKS4gIElmIHlv
dSB3YW50IHRvIHJ1bgordGhlIHRlc3RzIGluIHBhcmFsbGVsLCB5b3UnZCBiZXR0ZXIgcnVuIHRo
ZW0gaW4gZGlmZmVyZW50IHByb2Nlc3Nlcy4KKworIyMgV2h5IGFyZW4ndCBHb29nbGUgVGVzdCBh
c3NlcnRpb25zIGltcGxlbWVudGVkIHVzaW5nIGV4Y2VwdGlvbnM/ICMjCisKK091ciBvcmlnaW5h
bCBtb3RpdmF0aW9uIHdhcyB0byBiZSBhYmxlIHRvIHVzZSBHb29nbGUgVGVzdCBpbiBwcm9qZWN0
cwordGhhdCBkaXNhYmxlIGV4Y2VwdGlvbnMuICBMYXRlciB3ZSByZWFsaXplZCBzb21lIGFkZGl0
aW9uYWwgYmVuZWZpdHMKK29mIHRoaXMgYXBwcm9hY2g6CisKKyAgMS4gVGhyb3dpbmcgaW4gYSBk
ZXN0cnVjdG9yIGlzIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBDKysuICBOb3QgdXNpbmcgZXhjZXB0
aW9ucyBtZWFucyBHb29nbGUgVGVzdCdzIGFzc2VydGlvbnMgYXJlIHNhZmUgdG8gdXNlIGluIGRl
c3RydWN0b3JzLgorICAxLiBUaGUgYEVYUEVDVF8qYCBmYW1pbHkgb2YgbWFjcm9zIHdpbGwgY29u
dGludWUgZXZlbiBhZnRlciBhIGZhaWx1cmUsIGFsbG93aW5nIG11bHRpcGxlIGZhaWx1cmVzIGlu
IGEgYFRFU1RgIHRvIGJlIHJlcG9ydGVkIGluIGEgc2luZ2xlIHJ1bi4gVGhpcyBpcyBhIHBvcHVs
YXIgZmVhdHVyZSwgYXMgaW4gQysrIHRoZSBlZGl0LWNvbXBpbGUtdGVzdCBjeWNsZSBpcyB1c3Vh
bGx5IHF1aXRlIGxvbmcgYW5kIGJlaW5nIGFibGUgdG8gZml4aW5nIG1vcmUgdGhhbiBvbmUgdGhp
bmcgYXQgYSB0aW1lIGlzIGEgYmxlc3NpbmcuCisgIDEuIElmIGFzc2VydGlvbnMgYXJlIGltcGxl
bWVudGVkIHVzaW5nIGV4Y2VwdGlvbnMsIGEgdGVzdCBtYXkgZmFsc2VseSBpZ25vcmUgYSBmYWls
dXJlIGlmIGl0J3MgY2F1Z2h0IGJ5IHVzZXIgY29kZToKK2BgYCBjcHAKK3RyeSB7IC4uLiBBU1NF
UlRfVFJVRSguLi4pIC4uLiB9CitjYXRjaCAoLi4uKSB7IC4uLiB9CitgYGAKK1RoZSBhYm92ZSBj
b2RlIHdpbGwgcGFzcyBldmVuIGlmIHRoZSBgQVNTRVJUX1RSVUVgIHRocm93cy4gIFdoaWxlIGl0
J3MgdW5saWtlbHkgZm9yIHNvbWVvbmUgdG8gd3JpdGUgdGhpcyBpbiBhIHRlc3QsIGl0J3MgcG9z
c2libGUgdG8gcnVuIGludG8gdGhpcyBwYXR0ZXJuIHdoZW4geW91IHdyaXRlIGFzc2VydGlvbnMg
aW4gY2FsbGJhY2tzIHRoYXQgYXJlIGNhbGxlZCBieSB0aGUgY29kZSB1bmRlciB0ZXN0LgorCitU
aGUgZG93bnNpZGUgb2Ygbm90IHVzaW5nIGV4Y2VwdGlvbnMgaXMgdGhhdCBgQVNTRVJUXypgIChp
bXBsZW1lbnRlZAordXNpbmcgYHJldHVybmApIHdpbGwgb25seSBhYm9ydCB0aGUgY3VycmVudCBm
dW5jdGlvbiwgbm90IHRoZSBjdXJyZW50CitgVEVTVGAuCisKKyMjIFdoeSBkbyB3ZSB1c2UgdHdv
IGRpZmZlcmVudCBtYWNyb3MgZm9yIHRlc3RzIHdpdGggYW5kIHdpdGhvdXQgZml4dHVyZXM/ICMj
CisKK1VuZm9ydHVuYXRlbHksIEMrKydzIG1hY3JvIHN5c3RlbSBkb2Vzbid0IGFsbG93IHVzIHRv
IHVzZSB0aGUgc2FtZQorbWFjcm8gZm9yIGJvdGggY2FzZXMuICBPbmUgcG9zc2liaWxpdHkgaXMg
dG8gcHJvdmlkZSBvbmx5IG9uZSBtYWNybworZm9yIHRlc3RzIHdpdGggZml4dHVyZXMsIGFuZCBy
ZXF1aXJlIHRoZSB1c2VyIHRvIGRlZmluZSBhbiBlbXB0eQorZml4dHVyZSBzb21ldGltZXM6CisK
K2BgYCBjcHAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCitU
RVNUX0YoRm9vVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KK2BgYAorb3IKK2BgYCBjcHAKK3R5cGVk
ZWYgOjp0ZXN0aW5nOjpUZXN0IEZvb1Rlc3Q7CisKK1RFU1RfRihGb29UZXN0LCBEb2VzVGhhdCkg
eyAuLi4gfQorYGBgCisKK1lldCwgbWFueSBwZW9wbGUgdGhpbmsgdGhpcyBpcyBvbmUgbGluZSB0
b28gbWFueS4gOi0pIE91ciBnb2FsIHdhcyB0bworbWFrZSBpdCByZWFsbHkgZWFzeSB0byB3cml0
ZSB0ZXN0cywgc28gd2UgdHJpZWQgdG8gbWFrZSBzaW1wbGUgdGVzdHMKK3RyaXZpYWwgdG8gY3Jl
YXRlLiAgVGhhdCBtZWFucyB1c2luZyBhIHNlcGFyYXRlIG1hY3JvIGZvciBzdWNoIHRlc3RzLgor
CitXZSB0aGluayBuZWl0aGVyIGFwcHJvYWNoIGlzIGlkZWFsLCB5ZXQgZWl0aGVyIG9mIHRoZW0g
aXMgcmVhc29uYWJsZS4KK0luIHRoZSBlbmQsIGl0IHByb2JhYmx5IGRvZXNuJ3QgbWF0dGVyIG11
Y2ggZWl0aGVyIHdheS4KKworIyMgV2h5IGRvbid0IHdlIHVzZSBzdHJ1Y3RzIGFzIHRlc3QgZml4
dHVyZXM/ICMjCisKK1dlIGxpa2UgdG8gdXNlIHN0cnVjdHMgb25seSB3aGVuIHJlcHJlc2VudGlu
ZyBwYXNzaXZlIGRhdGEuICBUaGlzCitkaXN0aW5jdGlvbiBiZXR3ZWVuIHN0cnVjdHMgYW5kIGNs
YXNzZXMgaXMgZ29vZCBmb3IgZG9jdW1lbnRpbmcgdGhlCitpbnRlbnQgb2YgdGhlIGNvZGUncyBh
dXRob3IuICBTaW5jZSB0ZXN0IGZpeHR1cmVzIGhhdmUgbG9naWMgbGlrZQorYFNldFVwKClgIGFu
ZCBgVGVhckRvd24oKWAsIHRoZXkgYXJlIGJldHRlciBkZWZpbmVkIGFzIGNsYXNzZXMuCisKKyMj
IFdoeSBhcmUgZGVhdGggdGVzdHMgaW1wbGVtZW50ZWQgYXMgYXNzZXJ0aW9ucyBpbnN0ZWFkIG9m
IHVzaW5nIGEgdGVzdCBydW5uZXI/ICMjCisKK091ciBnb2FsIHdhcyB0byBtYWtlIGRlYXRoIHRl
c3RzIGFzIGNvbnZlbmllbnQgZm9yIGEgdXNlciBhcyBDKysKK3Bvc3NpYmx5IGFsbG93cy4gIElu
IHBhcnRpY3VsYXI6CisKKyAgKiBUaGUgcnVubmVyLXN0eWxlIHJlcXVpcmVzIHRvIHNwbGl0IHRo
ZSBpbmZvcm1hdGlvbiBpbnRvIHR3byBwaWVjZXM6IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBkZWF0
aCB0ZXN0IGl0c2VsZiwgYW5kIHRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgcnVubmVyIG9uIGhv
dyB0byBydW4gdGhlIGRlYXRoIHRlc3QgYW5kIHdoYXQgdG8gZXhwZWN0LiAgVGhlIGRlYXRoIHRl
c3Qgd291bGQgYmUgd3JpdHRlbiBpbiBDKyssIHdoaWxlIHRoZSBydW5uZXIgc3BlYyBtYXkgb3Ig
bWF5IG5vdCBiZS4gIEEgdXNlciBuZWVkcyB0byBjYXJlZnVsbHkga2VlcCB0aGUgdHdvIGluIHN5
bmMuIGBBU1NFUlRfREVBVEgoc3RhdGVtZW50LCBleHBlY3RlZF9tZXNzYWdlKWAgc3BlY2lmaWVz
IGFsbCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gaW4gb25lIHBsYWNlLCBpbiBvbmUgbGFuZ3VhZ2Us
IHdpdGhvdXQgYm9pbGVycGxhdGUgY29kZS4gSXQgaXMgdmVyeSBkZWNsYXJhdGl2ZS4KKyAgKiBg
QVNTRVJUX0RFQVRIYCBoYXMgYSBzaW1pbGFyIHN5bnRheCBhbmQgZXJyb3ItcmVwb3J0aW5nIHNl
bWFudGljcyBhcyBvdGhlciBHb29nbGUgVGVzdCBhc3NlcnRpb25zLCBhbmQgdGh1cyBpcyBlYXN5
IHRvIGxlYXJuLgorICAqIGBBU1NFUlRfREVBVEhgIGNhbiBiZSBtaXhlZCB3aXRoIG90aGVyIGFz
c2VydGlvbnMgYW5kIG90aGVyIGxvZ2ljIGF0IHlvdXIgd2lsbC4gIFlvdSBhcmUgbm90IGxpbWl0
ZWQgdG8gb25lIGRlYXRoIHRlc3QgcGVyIHRlc3QgbWV0aG9kLiBGb3IgZXhhbXBsZSwgeW91IGNh
biB3cml0ZSBzb21ldGhpbmcgbGlrZToKK2BgYCBjcHAKKyAgICBpZiAoRm9vQ29uZGl0aW9uKCkp
IHsKKyAgICAgIEFTU0VSVF9ERUFUSChCYXIoKSwgImJsYWgiKTsKKyAgICB9IGVsc2UgeworICAg
ICAgQVNTRVJUX0VRKDUsIEJhcigpKTsKKyAgICB9CitgYGAKK0lmIHlvdSBwcmVmZXIgb25lIGRl
YXRoIHRlc3QgcGVyIHRlc3QgbWV0aG9kLCB5b3UgY2FuIHdyaXRlIHlvdXIgdGVzdHMgaW4gdGhh
dCBzdHlsZSB0b28sIGJ1dCB3ZSBkb24ndCB3YW50IHRvIGltcG9zZSB0aGF0IG9uIHRoZSB1c2Vy
cy4gIFRoZSBmZXdlciBhcnRpZmljaWFsIGxpbWl0YXRpb25zIHRoZSBiZXR0ZXIuCisgICogYEFT
U0VSVF9ERUFUSGAgY2FuIHJlZmVyZW5jZSBsb2NhbCB2YXJpYWJsZXMgaW4gdGhlIGN1cnJlbnQg
ZnVuY3Rpb24sIGFuZCB5b3UgY2FuIGRlY2lkZSBob3cgbWFueSBkZWF0aCB0ZXN0cyB5b3Ugd2Fu
dCBiYXNlZCBvbiBydW4tdGltZSBpbmZvcm1hdGlvbi4gIEZvciBleGFtcGxlLAorYGBgIGNwcAor
ICAgIGNvbnN0IGludCBjb3VudCA9IEdldENvdW50KCk7ICAvLyBPbmx5IGtub3duIGF0IHJ1biB0
aW1lLgorICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGNvdW50OyBpKyspIHsKKyAgICAgIEFTU0VS
VF9ERUFUSCh7CisgICAgICAgIGRvdWJsZSogYnVmZmVyID0gbmV3IGRvdWJsZVtpXTsKKyAgICAg
ICAgLi4uIGluaXRpYWxpemVzIGJ1ZmZlciAuLi4KKyAgICAgICAgRm9vKGJ1ZmZlciwgaSkKKyAg
ICAgIH0sICJibGFoIGJsYWgiKTsKKyAgICB9CitgYGAKK1RoZSBydW5uZXItYmFzZWQgYXBwcm9h
Y2ggdGVuZHMgdG8gYmUgbW9yZSBzdGF0aWMgYW5kIGxlc3MgZmxleGlibGUsIG9yIHJlcXVpcmVz
IG1vcmUgdXNlciBlZmZvcnQgdG8gZ2V0IHRoaXMga2luZCBvZiBmbGV4aWJpbGl0eS4KKworQW5v
dGhlciBpbnRlcmVzdGluZyB0aGluZyBhYm91dCBgQVNTRVJUX0RFQVRIYCBpcyB0aGF0IGl0IGNh
bGxzIGBmb3JrKClgCit0byBjcmVhdGUgYSBjaGlsZCBwcm9jZXNzIHRvIHJ1biB0aGUgZGVhdGgg
dGVzdC4gIFRoaXMgaXMgbGlnaHRlbmluZworZmFzdCwgYXMgYGZvcmsoKWAgdXNlcyBjb3B5LW9u
LXdyaXRlIHBhZ2VzIGFuZCBpbmN1cnMgYWxtb3N0IHplcm8KK292ZXJoZWFkLCBhbmQgdGhlIGNo
aWxkIHByb2Nlc3Mgc3RhcnRzIGZyb20gdGhlIHVzZXItc3VwcGxpZWQKK3N0YXRlbWVudCBkaXJl
Y3RseSwgc2tpcHBpbmcgYWxsIGdsb2JhbCBhbmQgbG9jYWwgaW5pdGlhbGl6YXRpb24gYW5kCith
bnkgY29kZSBsZWFkaW5nIHRvIHRoZSBnaXZlbiBzdGF0ZW1lbnQuICBJZiB5b3UgbGF1bmNoIHRo
ZSBjaGlsZAorcHJvY2VzcyBmcm9tIHNjcmF0Y2gsIGl0IGNhbiB0YWtlIHNlY29uZHMganVzdCB0
byBsb2FkIGV2ZXJ5dGhpbmcgYW5kCitzdGFydCBydW5uaW5nIGlmIHRoZSB0ZXN0IGxpbmtzIHRv
IG1hbnkgbGlicmFyaWVzIGR5bmFtaWNhbGx5LgorCisjIyBNeSBkZWF0aCB0ZXN0IG1vZGlmaWVz
IHNvbWUgc3RhdGUsIGJ1dCB0aGUgY2hhbmdlIHNlZW1zIGxvc3QgYWZ0ZXIgdGhlIGRlYXRoIHRl
c3QgZmluaXNoZXMuIFdoeT8gIyMKKworRGVhdGggdGVzdHMgKGBFWFBFQ1RfREVBVEhgLCBldGMp
IGFyZSBleGVjdXRlZCBpbiBhIHN1Yi1wcm9jZXNzIHMudC4gdGhlCitleHBlY3RlZCBjcmFzaCB3
b24ndCBraWxsIHRoZSB0ZXN0IHByb2dyYW0gKGkuZS4gdGhlIHBhcmVudCBwcm9jZXNzKS4gQXMg
YQorcmVzdWx0LCBhbnkgaW4tbWVtb3J5IHNpZGUgZWZmZWN0cyB0aGV5IGluY3VyIGFyZSBvYnNl
cnZhYmxlIGluIHRoZWlyCityZXNwZWN0aXZlIHN1Yi1wcm9jZXNzZXMsIGJ1dCBub3QgaW4gdGhl
IHBhcmVudCBwcm9jZXNzLiBZb3UgY2FuIHRoaW5rIG9mIHRoZW0KK2FzIHJ1bm5pbmcgaW4gYSBw
YXJhbGxlbCB1bml2ZXJzZSwgbW9yZSBvciBsZXNzLgorCisjIyBUaGUgY29tcGlsZXIgY29tcGxh
aW5zIGFib3V0ICJ1bmRlZmluZWQgcmVmZXJlbmNlcyIgdG8gc29tZSBzdGF0aWMgY29uc3QgbWVt
YmVyIHZhcmlhYmxlcywgYnV0IEkgZGlkIGRlZmluZSB0aGVtIGluIHRoZSBjbGFzcyBib2R5LiBX
aGF0J3Mgd3Jvbmc/ICMjCisKK0lmIHlvdXIgY2xhc3MgaGFzIGEgc3RhdGljIGRhdGEgbWVtYmVy
OgorCitgYGAgY3BwCisvLyBmb28uaAorY2xhc3MgRm9vIHsKKyAgLi4uCisgIHN0YXRpYyBjb25z
dCBpbnQga0JhciA9IDEwMDsKK307CitgYGAKKworWW91IGFsc28gbmVlZCB0byBkZWZpbmUgaXQg
X291dHNpZGVfIG9mIHRoZSBjbGFzcyBib2R5IGluIGBmb28uY2NgOgorCitgYGAgY3BwCitjb25z
dCBpbnQgRm9vOjprQmFyOyAgLy8gTm8gaW5pdGlhbGl6ZXIgaGVyZS4KK2BgYAorCitPdGhlcndp
c2UgeW91ciBjb2RlIGlzICoqaW52YWxpZCBDKysqKiwgYW5kIG1heSBicmVhayBpbiB1bmV4cGVj
dGVkIHdheXMuIEluCitwYXJ0aWN1bGFyLCB1c2luZyBpdCBpbiBHb29nbGUgVGVzdCBjb21wYXJp
c29uIGFzc2VydGlvbnMgKGBFWFBFQ1RfRVFgLCBldGMpCit3aWxsIGdlbmVyYXRlIGFuICJ1bmRl
ZmluZWQgcmVmZXJlbmNlIiBsaW5rZXIgZXJyb3IuCisKKyMjIEkgaGF2ZSBhbiBpbnRlcmZhY2Ug
dGhhdCBoYXMgc2V2ZXJhbCBpbXBsZW1lbnRhdGlvbnMuIENhbiBJIHdyaXRlIGEgc2V0IG9mIHRl
c3RzIG9uY2UgYW5kIHJlcGVhdCB0aGVtIG92ZXIgYWxsIHRoZSBpbXBsZW1lbnRhdGlvbnM/ICMj
CisKK0dvb2dsZSBUZXN0IGRvZXNuJ3QgeWV0IGhhdmUgZ29vZCBzdXBwb3J0IGZvciB0aGlzIGtp
bmQgb2YgdGVzdHMsIG9yCitkYXRhLWRyaXZlbiB0ZXN0cyBpbiBnZW5lcmFsLiBXZSBob3BlIHRv
IGJlIGFibGUgdG8gbWFrZSBpbXByb3ZlbWVudHMgaW4gdGhpcworYXJlYSBzb29uLgorCisjIyBD
YW4gSSBkZXJpdmUgYSB0ZXN0IGZpeHR1cmUgZnJvbSBhbm90aGVyPyAjIworCitZZXMuCisKK0Vh
Y2ggdGVzdCBmaXh0dXJlIGhhcyBhIGNvcnJlc3BvbmRpbmcgYW5kIHNhbWUgbmFtZWQgdGVzdCBj
YXNlLiBUaGlzIG1lYW5zIG9ubHkKK29uZSB0ZXN0IGNhc2UgY2FuIHVzZSBhIHBhcnRpY3VsYXIg
Zml4dHVyZS4gU29tZXRpbWVzLCBob3dldmVyLCBtdWx0aXBsZSB0ZXN0CitjYXNlcyBtYXkgd2Fu
dCB0byB1c2UgdGhlIHNhbWUgb3Igc2xpZ2h0bHkgZGlmZmVyZW50IGZpeHR1cmVzLiBGb3IgZXhh
bXBsZSwgeW91CittYXkgd2FudCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb2YgYSBHVUkgbGlicmFy
eSdzIHRlc3QgY2FzZXMgZG9uJ3QgbGVhaworaW1wb3J0YW50IHN5c3RlbSByZXNvdXJjZXMgbGlr
ZSBmb250cyBhbmQgYnJ1c2hlcy4KKworSW4gR29vZ2xlIFRlc3QsIHlvdSBzaGFyZSBhIGZpeHR1
cmUgYW1vbmcgdGVzdCBjYXNlcyBieSBwdXR0aW5nIHRoZSBzaGFyZWQKK2xvZ2ljIGluIGEgYmFz
ZSB0ZXN0IGZpeHR1cmUsIHRoZW4gZGVyaXZpbmcgZnJvbSB0aGF0IGJhc2UgYSBzZXBhcmF0ZSBm
aXh0dXJlCitmb3IgZWFjaCB0ZXN0IGNhc2UgdGhhdCB3YW50cyB0byB1c2UgdGhpcyBjb21tb24g
bG9naWMuIFlvdSB0aGVuIHVzZSBgVEVTVF9GKClgCit0byB3cml0ZSB0ZXN0cyB1c2luZyBlYWNo
IGRlcml2ZWQgZml4dHVyZS4KKworVHlwaWNhbGx5LCB5b3VyIGNvZGUgbG9va3MgbGlrZSB0aGlz
OgorCitgYGAgY3BwCisvLyBEZWZpbmVzIGEgYmFzZSB0ZXN0IGZpeHR1cmUuCitjbGFzcyBCYXNl
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICBwcm90ZWN0ZWQ6CisgICAuLi4KK307
CisKKy8vIERlcml2ZXMgYSBmaXh0dXJlIEZvb1Rlc3QgZnJvbSBCYXNlVGVzdC4KK2NsYXNzIEZv
b1Rlc3QgOiBwdWJsaWMgQmFzZVRlc3QgeworICBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lk
IFNldFVwKCkgeworICAgICAgQmFzZVRlc3Q6OlNldFVwKCk7ICAvLyBTZXRzIHVwIHRoZSBiYXNl
IGZpeHR1cmUgZmlyc3QuCisgICAgICAuLi4gYWRkaXRpb25hbCBzZXQtdXAgd29yayAuLi4KKyAg
ICB9CisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgICAgLi4uIGNsZWFuLXVwIHdv
cmsgZm9yIEZvb1Rlc3QgLi4uCisgICAgICBCYXNlVGVzdDo6VGVhckRvd24oKTsgIC8vIFJlbWVt
YmVyIHRvIHRlYXIgZG93biB0aGUgYmFzZSBmaXh0dXJlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGFmdGVyIGNsZWFuaW5nIHVwIEZvb1Rlc3QhCisgICAgfQorICAgIC4uLiBmdW5j
dGlvbnMgYW5kIHZhcmlhYmxlcyBmb3IgRm9vVGVzdCAuLi4KK307CisKKy8vIFRlc3RzIHRoYXQg
dXNlIHRoZSBmaXh0dXJlIEZvb1Rlc3QuCitURVNUX0YoRm9vVGVzdCwgQmFyKSB7IC4uLiB9CitU
RVNUX0YoRm9vVGVzdCwgQmF6KSB7IC4uLiB9CisKKy4uLiBhZGRpdGlvbmFsIGZpeHR1cmVzIGRl
cml2ZWQgZnJvbSBCYXNlVGVzdCAuLi4KK2BgYAorCitJZiBuZWNlc3NhcnksIHlvdSBjYW4gY29u
dGludWUgdG8gZGVyaXZlIHRlc3QgZml4dHVyZXMgZnJvbSBhIGRlcml2ZWQgZml4dHVyZS4KK0dv
b2dsZSBUZXN0IGhhcyBubyBsaW1pdCBvbiBob3cgZGVlcCB0aGUgaGllcmFyY2h5IGNhbiBiZS4K
KworRm9yIGEgY29tcGxldGUgZXhhbXBsZSB1c2luZyBkZXJpdmVkIHRlc3QgZml4dHVyZXMsIHNl
ZQorW3NhbXBsZTVdKC4uL3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYykuCisKKyMjIE15IGNv
bXBpbGVyIGNvbXBsYWlucyAidm9pZCB2YWx1ZSBub3QgaWdub3JlZCBhcyBpdCBvdWdodCB0byBi
ZS4iIFdoYXQgZG9lcyB0aGlzIG1lYW4/ICMjCisKK1lvdSdyZSBwcm9iYWJseSB1c2luZyBhbiBg
QVNTRVJUXyooKWAgaW4gYSBmdW5jdGlvbiB0aGF0IGRvZXNuJ3QgcmV0dXJuIGB2b2lkYC4KK2BB
U1NFUlRfKigpYCBjYW4gb25seSBiZSB1c2VkIGluIGB2b2lkYCBmdW5jdGlvbnMuCisKKyMjIE15
IGRlYXRoIHRlc3QgaGFuZ3MgKG9yIHNlZy1mYXVsdHMpLiBIb3cgZG8gSSBmaXggaXQ/ICMjCisK
K0luIEdvb2dsZSBUZXN0LCBkZWF0aCB0ZXN0cyBhcmUgcnVuIGluIGEgY2hpbGQgcHJvY2VzcyBh
bmQgdGhlIHdheSB0aGV5IHdvcmsgaXMKK2RlbGljYXRlLiBUbyB3cml0ZSBkZWF0aCB0ZXN0cyB5
b3UgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhleSB3b3JrLgorUGxlYXNlIG1ha2Ug
c3VyZSB5b3UgaGF2ZSByZWFkIHRoaXMuCisKK0luIHBhcnRpY3VsYXIsIGRlYXRoIHRlc3RzIGRv
bid0IGxpa2UgaGF2aW5nIG11bHRpcGxlIHRocmVhZHMgaW4gdGhlIHBhcmVudAorcHJvY2Vzcy4g
U28gdGhlIGZpcnN0IHRoaW5nIHlvdSBjYW4gdHJ5IGlzIHRvIGVsaW1pbmF0ZSBjcmVhdGluZyB0
aHJlYWRzCitvdXRzaWRlIG9mIGBFWFBFQ1RfREVBVEgoKWAuCisKK1NvbWV0aW1lcyB0aGlzIGlz
IGltcG9zc2libGUgYXMgc29tZSBsaWJyYXJ5IHlvdSBtdXN0IHVzZSBtYXkgYmUgY3JlYXRpbmcK
K3RocmVhZHMgYmVmb3JlIGBtYWluKClgIGlzIGV2ZW4gcmVhY2hlZC4gSW4gdGhpcyBjYXNlLCB5
b3UgY2FuIHRyeSB0byBtaW5pbWl6ZQordGhlIGNoYW5jZSBvZiBjb25mbGljdHMgYnkgZWl0aGVy
IG1vdmluZyBhcyBtYW55IGFjdGl2aXRpZXMgYXMgcG9zc2libGUgaW5zaWRlCitgRVhQRUNUX0RF
QVRIKClgIChpbiB0aGUgZXh0cmVtZSBjYXNlLCB5b3Ugd2FudCB0byBtb3ZlIGV2ZXJ5dGhpbmcg
aW5zaWRlKSwgb3IKK2xlYXZpbmcgYXMgZmV3IHRoaW5ncyBhcyBwb3NzaWJsZSBpbiBpdC4gQWxz
bywgeW91IGNhbiB0cnkgdG8gc2V0IHRoZSBkZWF0aAordGVzdCBzdHlsZSB0byBgInRocmVhZHNh
ZmUiYCwgd2hpY2ggaXMgc2FmZXIgYnV0IHNsb3dlciwgYW5kIHNlZSBpZiBpdCBoZWxwcy4KKwor
SWYgeW91IGdvIHdpdGggdGhyZWFkLXNhZmUgZGVhdGggdGVzdHMsIHJlbWVtYmVyIHRoYXQgdGhl
eSByZXJ1biB0aGUgdGVzdAorcHJvZ3JhbSBmcm9tIHRoZSBiZWdpbm5pbmcgaW4gdGhlIGNoaWxk
IHByb2Nlc3MuIFRoZXJlZm9yZSBtYWtlIHN1cmUgeW91cgorcHJvZ3JhbSBjYW4gcnVuIHNpZGUt
Ynktc2lkZSB3aXRoIGl0c2VsZiBhbmQgaXMgZGV0ZXJtaW5pc3RpYy4KKworSW4gdGhlIGVuZCwg
dGhpcyBib2lscyBkb3duIHRvIGdvb2QgY29uY3VycmVudCBwcm9ncmFtbWluZy4gWW91IGhhdmUg
dG8gbWFrZQorc3VyZSB0aGF0IHRoZXJlIGlzIG5vIHJhY2UgY29uZGl0aW9ucyBvciBkZWFkIGxv
Y2tzIGluIHlvdXIgcHJvZ3JhbS4gTm8gc2lsdmVyCitidWxsZXQgLSBzb3JyeSEKKworIyMgU2hv
dWxkIEkgdXNlIHRoZSBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIG9mIHRoZSB0ZXN0IGZpeHR1cmUg
b3IgdGhlIHNldC11cC90ZWFyLWRvd24gZnVuY3Rpb24/ICMjCisKK1RoZSBmaXJzdCB0aGluZyB0
byByZW1lbWJlciBpcyB0aGF0IEdvb2dsZSBUZXN0IGRvZXMgbm90IHJldXNlIHRoZQorc2FtZSB0
ZXN0IGZpeHR1cmUgb2JqZWN0IGFjcm9zcyBtdWx0aXBsZSB0ZXN0cy4gRm9yIGVhY2ggYFRFU1Rf
RmAsCitHb29nbGUgVGVzdCB3aWxsIGNyZWF0ZSBhIGZyZXNoIHRlc3QgZml4dHVyZSBvYmplY3Qs
IF9pbW1lZGlhdGVseV8KK2NhbGwgYFNldFVwKClgLCBydW4gdGhlIHRlc3QgYm9keSwgY2FsbCBg
VGVhckRvd24oKWAsIGFuZCB0aGVuCitfaW1tZWRpYXRlbHlfIGRlbGV0ZSB0aGUgdGVzdCBmaXh0
dXJlIG9iamVjdC4KKworV2hlbiB5b3UgbmVlZCB0byB3cml0ZSBwZXItdGVzdCBzZXQtdXAgYW5k
IHRlYXItZG93biBsb2dpYywgeW91IGhhdmUKK3RoZSBjaG9pY2UgYmV0d2VlbiB1c2luZyB0aGUg
dGVzdCBmaXh0dXJlIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3Igb3IKK2BTZXRVcCgpL1RlYXJEb3du
KClgLiBUaGUgZm9ybWVyIGlzIHVzdWFsbHkgcHJlZmVycmVkLCBhcyBpdCBoYXMgdGhlCitmb2xs
b3dpbmcgYmVuZWZpdHM6CisKKyAgKiBCeSBpbml0aWFsaXppbmcgYSBtZW1iZXIgdmFyaWFibGUg
aW4gdGhlIGNvbnN0cnVjdG9yLCB3ZSBoYXZlIHRoZSBvcHRpb24gdG8gbWFrZSBpdCBgY29uc3Rg
LCB3aGljaCBoZWxwcyBwcmV2ZW50IGFjY2lkZW50YWwgY2hhbmdlcyB0byBpdHMgdmFsdWUgYW5k
IG1ha2VzIHRoZSB0ZXN0cyBtb3JlIG9idmlvdXNseSBjb3JyZWN0LgorICAqIEluIGNhc2Ugd2Ug
bmVlZCB0byBzdWJjbGFzcyB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLCB0aGUgc3ViY2xhc3MnIGNv
bnN0cnVjdG9yIGlzIGd1YXJhbnRlZWQgdG8gY2FsbCB0aGUgYmFzZSBjbGFzcycgY29uc3RydWN0
b3IgZmlyc3QsIGFuZCB0aGUgc3ViY2xhc3MnIGRlc3RydWN0b3IgaXMgZ3VhcmFudGVlZCB0byBj
YWxsIHRoZSBiYXNlIGNsYXNzJyBkZXN0cnVjdG9yIGFmdGVyd2FyZC4gV2l0aCBgU2V0VXAoKS9U
ZWFyRG93bigpYCwgYSBzdWJjbGFzcyBtYXkgbWFrZSB0aGUgbWlzdGFrZSBvZiBmb3JnZXR0aW5n
IHRvIGNhbGwgdGhlIGJhc2UgY2xhc3MnIGBTZXRVcCgpL1RlYXJEb3duKClgIG9yIGNhbGwgdGhl
bSBhdCB0aGUgd3JvbmcgbW9tZW50LgorCitZb3UgbWF5IHN0aWxsIHdhbnQgdG8gdXNlIGBTZXRV
cCgpL1RlYXJEb3duKClgIGluIHRoZSBmb2xsb3dpbmcgcmFyZSBjYXNlczoKKyAgKiBJZiB0aGUg
dGVhci1kb3duIG9wZXJhdGlvbiBjb3VsZCB0aHJvdyBhbiBleGNlcHRpb24sIHlvdSBtdXN0IHVz
ZSBgVGVhckRvd24oKWAgYXMgb3Bwb3NlZCB0byB0aGUgZGVzdHJ1Y3RvciwgYXMgdGhyb3dpbmcg
aW4gYSBkZXN0cnVjdG9yIGxlYWRzIHRvIHVuZGVmaW5lZCBiZWhhdmlvciBhbmQgdXN1YWxseSB3
aWxsIGtpbGwgeW91ciBwcm9ncmFtIHJpZ2h0IGF3YXkuIE5vdGUgdGhhdCBtYW55IHN0YW5kYXJk
IGxpYnJhcmllcyAobGlrZSBTVEwpIG1heSB0aHJvdyB3aGVuIGV4Y2VwdGlvbnMgYXJlIGVuYWJs
ZWQgaW4gdGhlIGNvbXBpbGVyLiBUaGVyZWZvcmUgeW91IHNob3VsZCBwcmVmZXIgYFRlYXJEb3du
KClgIGlmIHlvdSB3YW50IHRvIHdyaXRlIHBvcnRhYmxlIHRlc3RzIHRoYXQgd29yayB3aXRoIG9y
IHdpdGhvdXQgZXhjZXB0aW9ucy4KKyAgKiBUaGUgYXNzZXJ0aW9uIG1hY3JvcyB0aHJvdyBhbiBl
eGNlcHRpb24gd2hlbiBmbGFnIGAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmVgIGlzIHNwZWNpZmll
ZC4gVGhlcmVmb3JlLCB5b3Ugc2hvdWxkbid0IHVzZSBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGlu
IGEgZGVzdHJ1Y3RvciBpZiB5b3UgcGxhbiB0byBydW4geW91ciB0ZXN0cyB3aXRoIHRoaXMgZmxh
Zy4KKyAgKiBJbiBhIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IsIHlvdSBjYW5ub3QgbWFrZSBh
IHZpcnR1YWwgZnVuY3Rpb24gY2FsbCBvbiB0aGlzIG9iamVjdC4gKFlvdSBjYW4gY2FsbCBhIG1l
dGhvZCBkZWNsYXJlZCBhcyB2aXJ0dWFsLCBidXQgaXQgd2lsbCBiZSBzdGF0aWNhbGx5IGJvdW5k
LikgVGhlcmVmb3JlLCBpZiB5b3UgbmVlZCB0byBjYWxsIGEgbWV0aG9kIHRoYXQgd2lsbCBiZSBv
dmVycmlkZW4gaW4gYSBkZXJpdmVkIGNsYXNzLCB5b3UgaGF2ZSB0byB1c2UgYFNldFVwKCkvVGVh
ckRvd24oKWAuCisKKyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgIm5vIG1hdGNoaW5nIGZ1bmN0
aW9uIHRvIGNhbGwiIHdoZW4gSSB1c2UgQVNTRVJUXF9QUkVEbi4gSG93IGRvIEkgZml4IGl0PyAj
IworCitJZiB0aGUgcHJlZGljYXRlIGZ1bmN0aW9uIHlvdSB1c2UgaW4gYEFTU0VSVF9QUkVEKmAg
b3IgYEVYUEVDVF9QUkVEKmAgaXMKK292ZXJsb2FkZWQgb3IgYSB0ZW1wbGF0ZSwgdGhlIGNvbXBp
bGVyIHdpbGwgaGF2ZSB0cm91YmxlIGZpZ3VyaW5nIG91dCB3aGljaAorb3ZlcmxvYWRlZCB2ZXJz
aW9uIGl0IHNob3VsZCB1c2UuIGBBU1NFUlRfUFJFRF9GT1JNQVQqYCBhbmQKK2BFWFBFQ1RfUFJF
RF9GT1JNQVQqYCBkb24ndCBoYXZlIHRoaXMgcHJvYmxlbS4KKworSWYgeW91IHNlZSB0aGlzIGVy
cm9yLCB5b3UgbWlnaHQgd2FudCB0byBzd2l0Y2ggdG8KK2AoQVNTRVJUfEVYUEVDVClfUFJFRF9G
T1JNQVQqYCwgd2hpY2ggd2lsbCBhbHNvIGdpdmUgeW91IGEgYmV0dGVyIGZhaWx1cmUKK21lc3Nh
Z2UuIElmLCBob3dldmVyLCB0aGF0IGlzIG5vdCBhbiBvcHRpb24sIHlvdSBjYW4gcmVzb2x2ZSB0
aGUgcHJvYmxlbSBieQorZXhwbGljaXRseSB0ZWxsaW5nIHRoZSBjb21waWxlciB3aGljaCB2ZXJz
aW9uIHRvIHBpY2suCisKK0ZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYXZlCisKK2BgYCBjcHAK
K2Jvb2wgSXNQb3NpdGl2ZShpbnQgbikgeworICByZXR1cm4gbiA+IDA7Cit9Citib29sIElzUG9z
aXRpdmUoZG91YmxlIHgpIHsKKyAgcmV0dXJuIHggPiAwOworfQorYGBgCisKK3lvdSB3aWxsIGdl
dCBhIGNvbXBpbGVyIGVycm9yIGlmIHlvdSB3cml0ZQorCitgYGAgY3BwCitFWFBFQ1RfUFJFRDEo
SXNQb3NpdGl2ZSwgNSk7CitgYGAKKworSG93ZXZlciwgdGhpcyB3aWxsIHdvcms6CisKK2BgYCBj
cHAKK0VYUEVDVF9QUkVEMSgqc3RhdGljX2Nhc3Q8Ym9vbCAoKikoaW50KT4qKElzUG9zaXRpdmUp
LCA1KTsKK2BgYAorCisoVGhlIHN0dWZmIGluc2lkZSB0aGUgYW5nbGVkIGJyYWNrZXRzIGZvciB0
aGUgYHN0YXRpY19jYXN0YCBvcGVyYXRvciBpcyB0aGUKK3R5cGUgb2YgdGhlIGZ1bmN0aW9uIHBv
aW50ZXIgZm9yIHRoZSBgaW50YC12ZXJzaW9uIG9mIGBJc1Bvc2l0aXZlKClgLikKKworQXMgYW5v
dGhlciBleGFtcGxlLCB3aGVuIHlvdSBoYXZlIGEgdGVtcGxhdGUgZnVuY3Rpb24KKworYGBgIGNw
cAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citib29sIElzTmVnYXRpdmUoVCB4KSB7CisgIHJldHVy
biB4IDwgMDsKK30KK2BgYAorCit5b3UgY2FuIHVzZSBpdCBpbiBhIHByZWRpY2F0ZSBhc3NlcnRp
b24gbGlrZSB0aGlzOgorCitgYGAgY3BwCitBU1NFUlRfUFJFRDEoSXNOZWdhdGl2ZSo8aW50Pios
IC01KTsKK2BgYAorCitUaGluZ3MgYXJlIG1vcmUgaW50ZXJlc3RpbmcgaWYgeW91ciB0ZW1wbGF0
ZSBoYXMgbW9yZSB0aGFuIG9uZSBwYXJhbWV0ZXJzLiBUaGUKK2ZvbGxvd2luZyB3b24ndCBjb21w
aWxlOgorCitgYGAgY3BwCitBU1NFUlRfUFJFRDIoKkdyZWF0ZXJUaGFuPGludCwgaW50PiosIDUs
IDApOworYGBgCisKKworYXMgdGhlIEMrKyBwcmUtcHJvY2Vzc29yIHRoaW5rcyB5b3UgYXJlIGdp
dmluZyBgQVNTRVJUX1BSRUQyYCA0IGFyZ3VtZW50cywKK3doaWNoIGlzIG9uZSBtb3JlIHRoYW4g
ZXhwZWN0ZWQuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIHdyYXAgdGhlIHByZWRpY2F0ZQorZnVuY3Rp
b24gaW4gcGFyZW50aGVzZXM6CisKK2BgYCBjcHAKK0FTU0VSVF9QUkVEMigqKEdyZWF0ZXJUaGFu
PGludCwgaW50PikqLCA1LCAwKTsKK2BgYAorCisKKyMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyBh
Ym91dCAiaWdub3JpbmcgcmV0dXJuIHZhbHVlIiB3aGVuIEkgY2FsbCBSVU5cX0FMTFxfVEVTVFMo
KS4gV2h5PyAjIworCitTb21lIHBlb3BsZSBoYWQgYmVlbiBpZ25vcmluZyB0aGUgcmV0dXJuIHZh
bHVlIG9mIGBSVU5fQUxMX1RFU1RTKClgLiBUaGF0IGlzLAoraW5zdGVhZCBvZgorCitgYGAgY3Bw
CityZXR1cm4gUlVOX0FMTF9URVNUUygpOworYGBgCisKK3RoZXkgd3JpdGUKKworYGBgIGNwcAor
UlVOX0FMTF9URVNUUygpOworYGBgCisKK1RoaXMgaXMgd3JvbmcgYW5kIGRhbmdlcm91cy4gQSB0
ZXN0IHJ1bm5lciBuZWVkcyB0byBzZWUgdGhlIHJldHVybiB2YWx1ZSBvZgorYFJVTl9BTExfVEVT
VFMoKWAgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGlmIGEgdGVzdCBoYXMgcGFzc2VkLiBJZiB5b3Vy
IGBtYWluKClgCitmdW5jdGlvbiBpZ25vcmVzIGl0LCB5b3VyIHRlc3Qgd2lsbCBiZSBjb25zaWRl
cmVkIHN1Y2Nlc3NmdWwgZXZlbiBpZiBpdCBoYXMgYQorR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIGZh
aWx1cmUuIFZlcnkgYmFkLgorCitUbyBoZWxwIHRoZSB1c2VycyBhdm9pZCB0aGlzIGRhbmdlcm91
cyBidWcsIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgorYFJVTl9BTExfVEVTVFMoKWAgY2F1c2VzIGdj
YyB0byByYWlzZSB0aGlzIHdhcm5pbmcsIHdoZW4gdGhlIHJldHVybiB2YWx1ZSBpcworaWdub3Jl
ZC4gSWYgeW91IHNlZSB0aGlzIHdhcm5pbmcsIHRoZSBmaXggaXMgc2ltcGxlOiBqdXN0IG1ha2Ug
c3VyZSBpdHMgdmFsdWUKK2lzIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZSBvZiBgbWFpbigpYC4K
KworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5zIHRoYXQgYSBjb25zdHJ1Y3RvciAob3IgZGVzdHJ1
Y3RvcikgY2Fubm90IHJldHVybiBhIHZhbHVlLiBXaGF0J3MgZ29pbmcgb24/ICMjCisKK0R1ZSB0
byBhIHBlY3VsaWFyaXR5IG9mIEMrKywgaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGUgc3ludGF4IGZv
ciBzdHJlYW1pbmcKK21lc3NhZ2VzIHRvIGFuIGBBU1NFUlRfKmAsIGUuZy4KKworYGBgIGNwcAor
QVNTRVJUX0VRKDEsIEZvbygpKSA8PCAiYmxhaCBibGFoIiA8PCBmb287CitgYGAKKword2UgaGFk
IHRvIGdpdmUgdXAgdXNpbmcgYEFTU0VSVCpgIGFuZCBgRkFJTCpgIChidXQgbm90IGBFWFBFQ1Qq
YCBhbmQKK2BBRERfRkFJTFVSRSpgKSBpbiBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzLiBU
aGUgd29ya2Fyb3VuZCBpcyB0byBtb3ZlIHRoZQorY29udGVudCBvZiB5b3VyIGNvbnN0cnVjdG9y
L2Rlc3RydWN0b3IgdG8gYSBwcml2YXRlIHZvaWQgbWVtYmVyIGZ1bmN0aW9uLCBvcgorc3dpdGNo
IHRvIGBFWFBFQ1RfKigpYCBpZiB0aGF0IHdvcmtzLiBUaGlzIHNlY3Rpb24gaW4gdGhlIHVzZXIn
cyBndWlkZSBleHBsYWlucworaXQuCisKKyMjIE15IHNldC11cCBmdW5jdGlvbiBpcyBub3QgY2Fs
bGVkLiBXaHk/ICMjCisKK0MrKyBpcyBjYXNlLXNlbnNpdGl2ZS4gSXQgc2hvdWxkIGJlIHNwZWxs
ZWQgYXMgYFNldFVwKClgLiAgRGlkIHlvdQorc3BlbGwgaXQgYXMgYFNldHVwKClgPworCitTaW1p
bGFybHksIHNvbWV0aW1lcyBwZW9wbGUgc3BlbGwgYFNldFVwVGVzdENhc2UoKWAgYXMgYFNldHVw
VGVzdENhc2UoKWAgYW5kCit3b25kZXIgd2h5IGl0J3MgbmV2ZXIgY2FsbGVkLgorCisjIyBIb3cg
ZG8gSSBqdW1wIHRvIHRoZSBsaW5lIG9mIGEgZmFpbHVyZSBpbiBFbWFjcyBkaXJlY3RseT8gIyMK
KworR29vZ2xlIFRlc3QncyBmYWlsdXJlIG1lc3NhZ2UgZm9ybWF0IGlzIHVuZGVyc3Rvb2QgYnkg
RW1hY3MgYW5kIG1hbnkgb3RoZXIKK0lERXMsIGxpa2UgYWNtZSBhbmQgWENvZGUuIElmIGEgR29v
Z2xlIFRlc3QgbWVzc2FnZSBpcyBpbiBhIGNvbXBpbGF0aW9uIGJ1ZmZlcgoraW4gRW1hY3MsIHRo
ZW4gaXQncyBjbGlja2FibGUuIFlvdSBjYW4gbm93IGhpdCBgZW50ZXJgIG9uIGEgbWVzc2FnZSB0
byBqdW1wIHRvCit0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgb3IgdXNlIGBDLXggYGAg
dG8ganVtcCB0byB0aGUgbmV4dCBmYWlsdXJlLgorCisjIyBJIGhhdmUgc2V2ZXJhbCB0ZXN0IGNh
c2VzIHdoaWNoIHNoYXJlIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBsb2dpYywgZG8gSSBoYXZlIHRv
IGRlZmluZSBhIG5ldyB0ZXN0IGZpeHR1cmUgY2xhc3MgZm9yIGVhY2ggb2YgdGhlbT8gVGhpcyBz
ZWVtcyBwcmV0dHkgdGVkaW91cy4gIyMKKworWW91IGRvbid0IGhhdmUgdG8uIEluc3RlYWQgb2YK
KworYGBgIGNwcAorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCB7fTsKKworVEVTVF9G
KEZvb1Rlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQorCitj
bGFzcyBCYXJUZXN0IDogcHVibGljIEJhc2VUZXN0IHt9OworCitURVNUX0YoQmFyVGVzdCwgQWJj
KSB7IC4uLiB9CitURVNUX0YoQmFyVGVzdCwgRGVmKSB7IC4uLiB9CitgYGAKKworeW91IGNhbiBz
aW1wbHkgYHR5cGVkZWZgIHRoZSB0ZXN0IGZpeHR1cmVzOgorYGBgIGNwcAordHlwZWRlZiBCYXNl
VGVzdCBGb29UZXN0OworCitURVNUX0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0YoRm9v
VGVzdCwgRGVmKSB7IC4uLiB9CisKK3R5cGVkZWYgQmFzZVRlc3QgQmFyVGVzdDsKKworVEVTVF9G
KEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIERlZikgeyAuLi4gfQorYGBg
CisKKyMjIFRoZSBHb29nbGUgVGVzdCBvdXRwdXQgaXMgYnVyaWVkIGluIGEgd2hvbGUgYnVuY2gg
b2YgbG9nIG1lc3NhZ2VzLiBXaGF0IGRvIEkgZG8/ICMjCisKK1RoZSBHb29nbGUgVGVzdCBvdXRw
dXQgaXMgbWVhbnQgdG8gYmUgYSBjb25jaXNlIGFuZCBodW1hbi1mcmllbmRseSByZXBvcnQuIElm
Cit5b3VyIHRlc3QgZ2VuZXJhdGVzIHRleHR1YWwgb3V0cHV0IGl0c2VsZiwgaXQgd2lsbCBtaXgg
d2l0aCB0aGUgR29vZ2xlIFRlc3QKK291dHB1dCwgbWFraW5nIGl0IGhhcmQgdG8gcmVhZC4gSG93
ZXZlciwgdGhlcmUgaXMgYW4gZWFzeSBzb2x1dGlvbiB0byB0aGlzCitwcm9ibGVtLgorCitTaW5j
ZSBtb3N0IGxvZyBtZXNzYWdlcyBnbyB0byBzdGRlcnIsIHdlIGRlY2lkZWQgdG8gbGV0IEdvb2ds
ZSBUZXN0IG91dHB1dCBnbwordG8gc3Rkb3V0LiBUaGlzIHdheSwgeW91IGNhbiBlYXNpbHkgc2Vw
YXJhdGUgdGhlIHR3byB1c2luZyByZWRpcmVjdGlvbi4gRm9yCitleGFtcGxlOgorYGBgCisuL215
X3Rlc3QgPiBnb29nbGV0ZXN0X291dHB1dC50eHQKK2BgYAorCisjIyBXaHkgc2hvdWxkIEkgcHJl
ZmVyIHRlc3QgZml4dHVyZXMgb3ZlciBnbG9iYWwgdmFyaWFibGVzPyAjIworCitUaGVyZSBhcmUg
c2V2ZXJhbCBnb29kIHJlYXNvbnM6CisgIDEuIEl0J3MgbGlrZWx5IHlvdXIgdGVzdCBuZWVkcyB0
byBjaGFuZ2UgdGhlIHN0YXRlcyBvZiBpdHMgZ2xvYmFsIHZhcmlhYmxlcy4gVGhpcyBtYWtlcyBp
dCBkaWZmaWN1bHQgdG8ga2VlcCBzaWRlIGVmZmVjdHMgZnJvbSBlc2NhcGluZyBvbmUgdGVzdCBh
bmQgY29udGFtaW5hdGluZyBvdGhlcnMsIG1ha2luZyBkZWJ1Z2dpbmcgZGlmZmljdWx0LiBCeSB1
c2luZyBmaXh0dXJlcywgZWFjaCB0ZXN0IGhhcyBhIGZyZXNoIHNldCBvZiB2YXJpYWJsZXMgdGhh
dCdzIGRpZmZlcmVudCAoYnV0IHdpdGggdGhlIHNhbWUgbmFtZXMpLiBUaHVzLCB0ZXN0cyBhcmUg
a2VwdCBpbmRlcGVuZGVudCBvZiBlYWNoIG90aGVyLgorICAxLiBHbG9iYWwgdmFyaWFibGVzIHBv
bGx1dGUgdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisgIDEuIFRlc3QgZml4dHVyZXMgY2FuIGJlIHJl
dXNlZCB2aWEgc3ViY2xhc3NpbmcsIHdoaWNoIGNhbm5vdCBiZSBkb25lIGVhc2lseSB3aXRoIGds
b2JhbCB2YXJpYWJsZXMuIFRoaXMgaXMgdXNlZnVsIGlmIG1hbnkgdGVzdCBjYXNlcyBoYXZlIHNv
bWV0aGluZyBpbiBjb21tb24uCisKKyMjIEhvdyBkbyBJIHRlc3QgcHJpdmF0ZSBjbGFzcyBtZW1i
ZXJzIHdpdGhvdXQgd3JpdGluZyBGUklFTkRcX1RFU1QoKXM/ICMjCisKK1lvdSBzaG91bGQgdHJ5
IHRvIHdyaXRlIHRlc3RhYmxlIGNvZGUsIHdoaWNoIG1lYW5zIGNsYXNzZXMgc2hvdWxkIGJlIGVh
c2lseQordGVzdGVkIGZyb20gdGhlaXIgcHVibGljIGludGVyZmFjZS4gT25lIHdheSB0byBhY2hp
ZXZlIHRoaXMgaXMgdGhlIFBpbXBsIGlkaW9tOgoreW91IG1vdmUgYWxsIHByaXZhdGUgbWVtYmVy
cyBvZiBhIGNsYXNzIGludG8gYSBoZWxwZXIgY2xhc3MsIGFuZCBtYWtlIGFsbAorbWVtYmVycyBv
ZiB0aGUgaGVscGVyIGNsYXNzIHB1YmxpYy4KKworWW91IGhhdmUgc2V2ZXJhbCBvdGhlciBvcHRp
b25zIHRoYXQgZG9uJ3QgcmVxdWlyZSB1c2luZyBgRlJJRU5EX1RFU1RgOgorICAqIFdyaXRlIHRo
ZSB0ZXN0cyBhcyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlIGNsYXNzOgorYGBgIGNwcAorY2xhc3Mg
Rm9vIHsKKyAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7CisgIC4uLgorfTsKKworY2xhc3MgRm9vVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLi4uCisgIHZvaWQg
VGVzdDEoKSB7Li4ufSAvLyBUaGlzIGFjY2Vzc2VzIHByaXZhdGUgbWVtYmVycyBvZiBjbGFzcyBG
b28uCisgIHZvaWQgVGVzdDIoKSB7Li4ufSAvLyBTbyBkb2VzIHRoaXMgb25lLgorfTsKKworVEVT
VF9GKEZvb1Rlc3QsIFRlc3QxKSB7CisgIFRlc3QxKCk7Cit9CisKK1RFU1RfRihGb29UZXN0LCBU
ZXN0MikgeworICBUZXN0MigpOworfQorYGBgCisgICogSW4gdGhlIGZpeHR1cmUgY2xhc3MsIHdy
aXRlIGFjY2Vzc29ycyBmb3IgdGhlIHRlc3RlZCBjbGFzcycgcHJpdmF0ZSBtZW1iZXJzLCB0aGVu
IHVzZSB0aGUgYWNjZXNzb3JzIGluIHlvdXIgdGVzdHM6CitgYGAgY3BwCitjbGFzcyBGb28gewor
ICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKKyAgLi4uCit9OworCitjbGFzcyBGb29UZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAuLi4KKyAgVDEgZ2V0X3ByaXZh
dGVfbWVtYmVyMShGb28qIG9iaikgeworICAgIHJldHVybiBvYmotPnByaXZhdGVfbWVtYmVyMV87
CisgIH0KK307CisKK1RFU1RfRihGb29UZXN0LCBUZXN0MSkgeworICAuLi4KKyAgZ2V0X3ByaXZh
dGVfbWVtYmVyMSh4KQorICAuLi4KK30KK2BgYAorICAqIElmIHRoZSBtZXRob2RzIGFyZSBkZWNs
YXJlZCAqKnByb3RlY3RlZCoqLCB5b3UgY2FuIGNoYW5nZSB0aGVpciBhY2Nlc3MgbGV2ZWwgaW4g
YSB0ZXN0LW9ubHkgc3ViY2xhc3M6CitgYGAgY3BwCitjbGFzcyBZb3VyQ2xhc3MgeworICAuLi4K
KyBwcm90ZWN0ZWQ6IC8vIHByb3RlY3RlZCBhY2Nlc3MgZm9yIHRlc3RhYmlsaXR5LgorICBpbnQg
RG9Tb21ldGhpbmdSZXR1cm5pbmdJbnQoKTsKKyAgLi4uCit9OworCisvLyBpbiB0aGUgeW91cl9j
bGFzc190ZXN0LmNjIGZpbGU6CitjbGFzcyBUZXN0YWJsZVlvdXJDbGFzcyA6IHB1YmxpYyBZb3Vy
Q2xhc3MgeworICAuLi4KKyBwdWJsaWM6IHVzaW5nIFlvdXJDbGFzczo6RG9Tb21ldGhpbmdSZXR1
cm5pbmdJbnQ7IC8vIGNoYW5nZXMgYWNjZXNzIHJpZ2h0cworICAuLi4KK307CisKK1RFU1RfRihZ
b3VyQ2xhc3NUZXN0LCBEb1NvbWV0aGluZ1Rlc3QpIHsKKyAgVGVzdGFibGVZb3VyQ2xhc3Mgb2Jq
OworICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWRfdmFsdWUsIG9iai5Eb1NvbWV0aGluZ1JldHVybmlu
Z0ludCgpKTsKK30KK2BgYAorCisjIyBIb3cgZG8gSSB0ZXN0IHByaXZhdGUgY2xhc3Mgc3RhdGlj
IG1lbWJlcnMgd2l0aG91dCB3cml0aW5nIEZSSUVORFxfVEVTVCgpcz8gIyMKKworV2UgZmluZCBw
cml2YXRlIHN0YXRpYyBtZXRob2RzIGNsdXR0ZXIgdGhlIGhlYWRlciBmaWxlLiAgVGhleSBhcmUK
K2ltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIGlkZWFsbHkgc2hvdWxkIGJlIGtlcHQgb3V0IG9m
IGEgLmguIFNvIG9mdGVuIEkgbWFrZQordGhlbSBmcmVlIGZ1bmN0aW9ucyBpbnN0ZWFkLgorCitJ
bnN0ZWFkIG9mOgorYGBgIGNwcAorLy8gZm9vLmgKK2NsYXNzIEZvbyB7CisgIC4uLgorIHByaXZh
dGU6CisgIHN0YXRpYyBib29sIEZ1bmMoaW50IG4pOworfTsKKworLy8gZm9vLmNjCitib29sIEZv
bzo6RnVuYyhpbnQgbikgeyAuLi4gfQorCisvLyBmb29fdGVzdC5jYworRVhQRUNUX1RSVUUoRm9v
OjpGdW5jKDEyMzQ1KSk7CitgYGAKKworWW91IHByb2JhYmx5IHNob3VsZCBiZXR0ZXIgd3JpdGU6
CitgYGAgY3BwCisvLyBmb28uaAorY2xhc3MgRm9vIHsKKyAgLi4uCit9OworCisvLyBmb28uY2MK
K25hbWVzcGFjZSBpbnRlcm5hbCB7CisgIGJvb2wgRnVuYyhpbnQgbikgeyAuLi4gfQorfQorCisv
LyBmb29fdGVzdC5jYworbmFtZXNwYWNlIGludGVybmFsIHsKKyAgYm9vbCBGdW5jKGludCBuKTsK
K30KKworRVhQRUNUX1RSVUUoaW50ZXJuYWw6OkZ1bmMoMTIzNDUpKTsKK2BgYAorCisjIyBJIHdv
dWxkIGxpa2UgdG8gcnVuIGEgdGVzdCBzZXZlcmFsIHRpbWVzIHdpdGggZGlmZmVyZW50IHBhcmFt
ZXRlcnMuIERvIEkgbmVlZCB0byB3cml0ZSBzZXZlcmFsIHNpbWlsYXIgY29waWVzIG9mIGl0PyAj
IworCitOby4gWW91IGNhbiB1c2UgYSBmZWF0dXJlIGNhbGxlZCBbdmFsdWUtcGFyYW1ldGVyaXpl
ZCB0ZXN0c10oQWR2YW5jZWRHdWlkZS5tZCNWYWx1ZV9QYXJhbWV0ZXJpemVkX1Rlc3RzKSB3aGlj
aAorbGV0cyB5b3UgcmVwZWF0IHlvdXIgdGVzdHMgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVycywg
d2l0aG91dCBkZWZpbmluZyBpdCBtb3JlIHRoYW4gb25jZS4KKworIyMgSG93IGRvIEkgdGVzdCBh
IGZpbGUgdGhhdCBkZWZpbmVzIG1haW4oKT8gIyMKKworVG8gdGVzdCBhIGBmb28uY2NgIGZpbGUs
IHlvdSBuZWVkIHRvIGNvbXBpbGUgYW5kIGxpbmsgaXQgaW50byB5b3VyIHVuaXQgdGVzdAorcHJv
Z3JhbS4gSG93ZXZlciwgd2hlbiB0aGUgZmlsZSBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIHRo
ZSBgbWFpbigpYAorZnVuY3Rpb24sIGl0IHdpbGwgY2xhc2ggd2l0aCB0aGUgYG1haW4oKWAgb2Yg
eW91ciB1bml0IHRlc3QsIGFuZCB3aWxsIHJlc3VsdCBpbgorYSBidWlsZCBlcnJvci4KKworVGhl
IHJpZ2h0IHNvbHV0aW9uIGlzIHRvIHNwbGl0IGl0IGludG8gdGhyZWUgZmlsZXM6CisgIDEuIGBm
b28uaGAgd2hpY2ggY29udGFpbnMgdGhlIGRlY2xhcmF0aW9ucywKKyAgMS4gYGZvby5jY2Agd2hp
Y2ggY29udGFpbnMgdGhlIGRlZmluaXRpb25zIGV4Y2VwdCBgbWFpbigpYCwgYW5kCisgIDEuIGBm
b29fbWFpbi5jY2Agd2hpY2ggY29udGFpbnMgbm90aGluZyBidXQgdGhlIGRlZmluaXRpb24gb2Yg
YG1haW4oKWAuCisKK1RoZW4gYGZvby5jY2AgY2FuIGJlIGVhc2lseSB0ZXN0ZWQuCisKK0lmIHlv
dSBhcmUgYWRkaW5nIHRlc3RzIHRvIGFuIGV4aXN0aW5nIGZpbGUgYW5kIGRvbid0IHdhbnQgYW4g
aW50cnVzaXZlIGNoYW5nZQorbGlrZSB0aGlzLCB0aGVyZSBpcyBhIGhhY2s6IGp1c3QgaW5jbHVk
ZSB0aGUgZW50aXJlIGBmb28uY2NgIGZpbGUgaW4geW91ciB1bml0Cit0ZXN0LiBGb3IgZXhhbXBs
ZToKK2BgYCBjcHAKKy8vIEZpbGUgZm9vX3VuaXR0ZXN0LmNjCisKKy8vIFRoZSBoZWFkZXJzIHNl
Y3Rpb24KKy4uLgorCisvLyBSZW5hbWVzIG1haW4oKSBpbiBmb28uY2MgdG8gbWFrZSByb29tIGZv
ciB0aGUgdW5pdCB0ZXN0IG1haW4oKQorI2RlZmluZSBtYWluIEZvb01haW4KKworI2luY2x1ZGUg
ImEvYi9mb28uY2MiCisKKy8vIFRoZSB0ZXN0cyBzdGFydCBoZXJlLgorLi4uCitgYGAKKworCitI
b3dldmVyLCBwbGVhc2UgcmVtZW1iZXIgdGhpcyBpcyBhIGhhY2sgYW5kIHNob3VsZCBvbmx5IGJl
IHVzZWQgYXMgdGhlIGxhc3QKK3Jlc29ydC4KKworIyMgV2hhdCBjYW4gdGhlIHN0YXRlbWVudCBh
cmd1bWVudCBpbiBBU1NFUlRcX0RFQVRIKCkgYmU/ICMjCisKK2BBU1NFUlRfREVBVEgoX3N0YXRl
bWVudF8sIF9yZWdleF8pYCAob3IgYW55IGRlYXRoIGFzc2VydGlvbiBtYWNybykgY2FuIGJlIHVz
ZWQKK3doZXJldmVyIGBfc3RhdGVtZW50X2AgaXMgdmFsaWQuIFNvIGJhc2ljYWxseSBgX3N0YXRl
bWVudF9gIGNhbiBiZSBhbnkgQysrCitzdGF0ZW1lbnQgdGhhdCBtYWtlcyBzZW5zZSBpbiB0aGUg
Y3VycmVudCBjb250ZXh0LiBJbiBwYXJ0aWN1bGFyLCBpdCBjYW4KK3JlZmVyZW5jZSBnbG9iYWwg
YW5kL29yIGxvY2FsIHZhcmlhYmxlcywgYW5kIGNhbiBiZToKKyAgKiBhIHNpbXBsZSBmdW5jdGlv
biBjYWxsIChvZnRlbiB0aGUgY2FzZSksCisgICogYSBjb21wbGV4IGV4cHJlc3Npb24sIG9yCisg
ICogYSBjb21wb3VuZCBzdGF0ZW1lbnQuCisKK1NvbWUgZXhhbXBsZXMgYXJlIHNob3duIGhlcmU6
CisKK2BgYCBjcHAKKy8vIEEgZGVhdGggdGVzdCBjYW4gYmUgYSBzaW1wbGUgZnVuY3Rpb24gY2Fs
bC4KK1RFU1QoTXlEZWF0aFRlc3QsIEZ1bmN0aW9uQ2FsbCkgeworICBBU1NFUlRfREVBVEgoWHl6
KDUpLCAiWHl6IGZhaWxlZCIpOworfQorCisvLyBPciBhIGNvbXBsZXggZXhwcmVzc2lvbiB0aGF0
IHJlZmVyZW5jZXMgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMuCitURVNUKE15RGVhdGhUZXN0LCBD
b21wbGV4RXhwcmVzc2lvbikgeworICBjb25zdCBib29sIGMgPSBDb25kaXRpb24oKTsKKyAgQVNT
RVJUX0RFQVRIKChjID8gRnVuYzEoMCkgOiBvYmplY3QyLk1ldGhvZCgidGVzdCIpKSwKKyAgICAg
ICAgICAgICAgICIoRnVuYzF8TWV0aG9kKSBmYWlsZWQiKTsKK30KKworLy8gRGVhdGggYXNzZXJ0
aW9ucyBjYW4gYmUgdXNlZCBhbnkgd2hlcmUgaW4gYSBmdW5jdGlvbi4gSW4KKy8vIHBhcnRpY3Vs
YXIsIHRoZXkgY2FuIGJlIGluc2lkZSBhIGxvb3AuCitURVNUKE15RGVhdGhUZXN0LCBJbnNpZGVM
b29wKSB7CisgIC8vIFZlcmlmaWVzIHRoYXQgRm9vKDApLCBGb28oMSksIC4uLiwgYW5kIEZvbyg0
KSBhbGwgZGllLgorICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgeworICAgIEVYUEVDVF9E
RUFUSF9NKEZvbyhpKSwgIkZvbyBoYXMgXFxkKyBlcnJvcnMiLAorICAgICAgICAgICAgICAgICAg
IDo6dGVzdGluZzo6TWVzc2FnZSgpIDw8ICJ3aGVyZSBpIGlzICIgPDwgaSk7CisgIH0KK30KKwor
Ly8gQSBkZWF0aCBhc3NlcnRpb24gY2FuIGNvbnRhaW4gYSBjb21wb3VuZCBzdGF0ZW1lbnQuCitU
RVNUKE15RGVhdGhUZXN0LCBDb21wb3VuZFN0YXRlbWVudCkgeworICAvLyBWZXJpZmllcyB0aGF0
IGF0IGxlYXNlIG9uZSBvZiBCYXIoMCksIEJhcigxKSwgLi4uLCBhbmQKKyAgLy8gQmFyKDQpIGRp
ZXMuCisgIEFTU0VSVF9ERUFUSCh7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsK
KyAgICAgIEJhcihpKTsKKyAgICB9CisgIH0sCisgICJCYXIgaGFzIFxcZCsgZXJyb3JzIik7fQor
YGBgCisKK2Bnb29nbGV0ZXN0X3VuaXR0ZXN0LmNjYCBjb250YWlucyBtb3JlIGV4YW1wbGVzIGlm
IHlvdSBhcmUgaW50ZXJlc3RlZC4KKworIyMgV2hhdCBzeW50YXggZG9lcyB0aGUgcmVndWxhciBl
eHByZXNzaW9uIGluIEFTU0VSVFxfREVBVEggdXNlPyAjIworCitPbiBQT1NJWCBzeXN0ZW1zLCBH
b29nbGUgVGVzdCB1c2VzIHRoZSBQT1NJWCBFeHRlbmRlZCByZWd1bGFyCitleHByZXNzaW9uIHN5
bnRheAorKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVndWxhcl9leHByZXNzaW9uI1BP
U0lYX0V4dGVuZGVkX1JlZ3VsYXJfRXhwcmVzc2lvbnMpLgorT24gV2luZG93cywgaXQgdXNlcyBh
IGxpbWl0ZWQgdmFyaWFudCBvZiByZWd1bGFyIGV4cHJlc3Npb24KK3N5bnRheC4gRm9yIG1vcmUg
ZGV0YWlscywgc2VlIHRoZQorW3JlZ3VsYXIgZXhwcmVzc2lvbiBzeW50YXhdKEFkdmFuY2VkR3Vp
ZGUubWQjUmVndWxhcl9FeHByZXNzaW9uX1N5bnRheCkuCisKKyMjIEkgaGF2ZSBhIGZpeHR1cmUg
Y2xhc3MgRm9vLCBidXQgVEVTVFxfRihGb28sIEJhcikgZ2l2ZXMgbWUgZXJyb3IgIm5vIG1hdGNo
aW5nIGZ1bmN0aW9uIGZvciBjYWxsIHRvIEZvbzo6Rm9vKCkiLiBXaHk/ICMjCisKK0dvb2dsZSBU
ZXN0IG5lZWRzIHRvIGJlIGFibGUgdG8gY3JlYXRlIG9iamVjdHMgb2YgeW91ciB0ZXN0IGZpeHR1
cmUgY2xhc3MsIHNvCitpdCBtdXN0IGhhdmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLiBOb3JtYWxs
eSB0aGUgY29tcGlsZXIgd2lsbCBkZWZpbmUgb25lIGZvcgoreW91LiBIb3dldmVyLCB0aGVyZSBh
cmUgY2FzZXMgd2hlcmUgeW91IGhhdmUgdG8gZGVmaW5lIHlvdXIgb3duOgorICAqIElmIHlvdSBl
eHBsaWNpdGx5IGRlY2xhcmUgYSBub24tZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgY2xhc3MgYEZv
b2AsIHRoZW4geW91IG5lZWQgdG8gZGVmaW5lIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciwgZXZlbiBp
ZiBpdCB3b3VsZCBiZSBlbXB0eS4KKyAgKiBJZiBgRm9vYCBoYXMgYSBjb25zdCBub24tc3RhdGlj
IGRhdGEgbWVtYmVyLCB0aGVuIHlvdSBoYXZlIHRvIGRlZmluZSB0aGUgZGVmYXVsdCBjb25zdHJ1
Y3RvciBfYW5kXyBpbml0aWFsaXplIHRoZSBjb25zdCBtZW1iZXIgaW4gdGhlIGluaXRpYWxpemVy
IGxpc3Qgb2YgdGhlIGNvbnN0cnVjdG9yLiAoRWFybHkgdmVyc2lvbnMgb2YgYGdjY2AgZG9lc24n
dCBmb3JjZSB5b3UgdG8gaW5pdGlhbGl6ZSB0aGUgY29uc3QgbWVtYmVyLiBJdCdzIGEgYnVnIHRo
YXQgaGFzIGJlZW4gZml4ZWQgaW4gYGdjYyA0YC4pCisKKyMjIFdoeSBkb2VzIEFTU0VSVFxfREVB
VEggY29tcGxhaW4gYWJvdXQgcHJldmlvdXMgdGhyZWFkcyB0aGF0IHdlcmUgYWxyZWFkeSBqb2lu
ZWQ/ICMjCisKK1dpdGggdGhlIExpbnV4IHB0aHJlYWQgbGlicmFyeSwgdGhlcmUgaXMgbm8gdHVy
bmluZyBiYWNrIG9uY2UgeW91IGNyb3NzIHRoZQorbGluZSBmcm9tIHNpbmdsZSB0aHJlYWQgdG8g
bXVsdGlwbGUgdGhyZWFkcy4gVGhlIGZpcnN0IHRpbWUgeW91IGNyZWF0ZSBhCit0aHJlYWQsIGEg
bWFuYWdlciB0aHJlYWQgaXMgY3JlYXRlZCBpbiBhZGRpdGlvbiwgc28geW91IGdldCAzLCBub3Qg
MiwgdGhyZWFkcy4KK0xhdGVyIHdoZW4gdGhlIHRocmVhZCB5b3UgY3JlYXRlIGpvaW5zIHRoZSBt
YWluIHRocmVhZCwgdGhlIHRocmVhZCBjb3VudAorZGVjcmVtZW50cyBieSAxLCBidXQgdGhlIG1h
bmFnZXIgdGhyZWFkIHdpbGwgbmV2ZXIgYmUga2lsbGVkLCBzbyB5b3Ugc3RpbGwgaGF2ZQorMiB0
aHJlYWRzLCB3aGljaCBtZWFucyB5b3UgY2Fubm90IHNhZmVseSBydW4gYSBkZWF0aCB0ZXN0Lgor
CitUaGUgbmV3IE5QVEwgdGhyZWFkIGxpYnJhcnkgZG9lc24ndCBzdWZmZXIgZnJvbSB0aGlzIHBy
b2JsZW0sIGFzIGl0IGRvZXNuJ3QKK2NyZWF0ZSBhIG1hbmFnZXIgdGhyZWFkLiBIb3dldmVyLCBp
ZiB5b3UgZG9uJ3QgY29udHJvbCB3aGljaCBtYWNoaW5lIHlvdXIgdGVzdAorcnVucyBvbiwgeW91
IHNob3VsZG4ndCBkZXBlbmQgb24gdGhpcy4KKworIyMgV2h5IGRvZXMgR29vZ2xlIFRlc3QgcmVx
dWlyZSB0aGUgZW50aXJlIHRlc3QgY2FzZSwgaW5zdGVhZCBvZiBpbmRpdmlkdWFsIHRlc3RzLCB0
byBiZSBuYW1lZCBGT09EZWF0aFRlc3Qgd2hlbiBpdCB1c2VzIEFTU0VSVFxfREVBVEg/ICMjCisK
K0dvb2dsZSBUZXN0IGRvZXMgbm90IGludGVybGVhdmUgdGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVz
dCBjYXNlcy4gVGhhdCBpcywgaXQKK3J1bnMgYWxsIHRlc3RzIGluIG9uZSB0ZXN0IGNhc2UgZmly
c3QsIGFuZCB0aGVuIHJ1bnMgYWxsIHRlc3RzIGluIHRoZSBuZXh0IHRlc3QKK2Nhc2UsIGFuZCBz
byBvbi4gR29vZ2xlIFRlc3QgZG9lcyB0aGlzIGJlY2F1c2UgaXQgbmVlZHMgdG8gc2V0IHVwIGEg
dGVzdCBjYXNlCitiZWZvcmUgdGhlIGZpcnN0IHRlc3QgaW4gaXQgaXMgcnVuLCBhbmQgdGVhciBp
dCBkb3duIGFmdGVyd29yZHMuIFNwbGl0dGluZyB1cAordGhlIHRlc3QgY2FzZSB3b3VsZCByZXF1
aXJlIG11bHRpcGxlIHNldC11cCBhbmQgdGVhci1kb3duIHByb2Nlc3Nlcywgd2hpY2ggaXMKK2lu
ZWZmaWNpZW50IGFuZCBtYWtlcyB0aGUgc2VtYW50aWNzIHVuY2xlYW4uCisKK0lmIHdlIHdlcmUg
dG8gZGV0ZXJtaW5lIHRoZSBvcmRlciBvZiB0ZXN0cyBiYXNlZCBvbiB0ZXN0IG5hbWUgaW5zdGVh
ZCBvZiB0ZXN0CitjYXNlIG5hbWUsIHRoZW4gd2Ugd291bGQgaGF2ZSBhIHByb2JsZW0gd2l0aCB0
aGUgZm9sbG93aW5nIHNpdHVhdGlvbjoKKworYGBgIGNwcAorVEVTVF9GKEZvb1Rlc3QsIEFiY0Rl
YXRoVGVzdCkgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIFV2dykgeyAuLi4gfQorCitURVNUX0Yo
QmFyVGVzdCwgRGVmRGVhdGhUZXN0KSB7IC4uLiB9CitURVNUX0YoQmFyVGVzdCwgWHl6KSB7IC4u
LiB9CitgYGAKKworU2luY2UgYEZvb1Rlc3QuQWJjRGVhdGhUZXN0YCBuZWVkcyB0byBydW4gYmVm
b3JlIGBCYXJUZXN0Llh5emAsIGFuZCB3ZSBkb24ndAoraW50ZXJsZWF2ZSB0ZXN0cyBmcm9tIGRp
ZmZlcmVudCB0ZXN0IGNhc2VzLCB3ZSBuZWVkIHRvIHJ1biBhbGwgdGVzdHMgaW4gdGhlCitgRm9v
VGVzdGAgY2FzZSBiZWZvcmUgcnVubmluZyBhbnkgdGVzdCBpbiB0aGUgYEJhclRlc3RgIGNhc2Uu
IFRoaXMgY29udHJhZGljdHMKK3dpdGggdGhlIHJlcXVpcmVtZW50IHRvIHJ1biBgQmFyVGVzdC5E
ZWZEZWF0aFRlc3RgIGJlZm9yZSBgRm9vVGVzdC5VdndgLgorCisjIyBCdXQgSSBkb24ndCBsaWtl
IGNhbGxpbmcgbXkgZW50aXJlIHRlc3QgY2FzZSBGT09EZWF0aFRlc3Qgd2hlbiBpdCBjb250YWlu
cyBib3RoIGRlYXRoIHRlc3RzIGFuZCBub24tZGVhdGggdGVzdHMuIFdoYXQgZG8gSSBkbz8gIyMK
KworWW91IGRvbid0IGhhdmUgdG8sIGJ1dCBpZiB5b3UgbGlrZSwgeW91IG1heSBzcGxpdCB1cCB0
aGUgdGVzdCBjYXNlIGludG8KK2BGb29UZXN0YCBhbmQgYEZvb0RlYXRoVGVzdGAsIHdoZXJlIHRo
ZSBuYW1lcyBtYWtlIGl0IGNsZWFyIHRoYXQgdGhleSBhcmUKK3JlbGF0ZWQ6CisKK2BgYCBjcHAK
K2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07CisKK1RFU1Rf
RihGb29UZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0KKwor
dHlwZWRlZiBGb29UZXN0IEZvb0RlYXRoVGVzdDsKKworVEVTVF9GKEZvb0RlYXRoVGVzdCwgVXZ3
KSB7IC4uLiBFWFBFQ1RfREVBVEgoLi4uKSAuLi4gfQorVEVTVF9GKEZvb0RlYXRoVGVzdCwgWHl6
KSB7IC4uLiBBU1NFUlRfREVBVEgoLi4uKSAuLi4gfQorYGBgCisKKyMjIFRoZSBjb21waWxlciBj
b21wbGFpbnMgYWJvdXQgIm5vIG1hdGNoIGZvciAnb3BlcmF0b3I8PCciIHdoZW4gSSB1c2UgYW4g
YXNzZXJ0aW9uLiBXaGF0IGdpdmVzPyAjIworCitJZiB5b3UgdXNlIGEgdXNlci1kZWZpbmVkIHR5
cGUgYEZvb1R5cGVgIGluIGFuIGFzc2VydGlvbiwgeW91IG11c3QgbWFrZSBzdXJlCit0aGVyZSBp
cyBhbiBgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYsIGNvbnN0IEZvb1R5
cGUmKWAgZnVuY3Rpb24KK2RlZmluZWQgc3VjaCB0aGF0IHdlIGNhbiBwcmludCBhIHZhbHVlIG9m
IGBGb29UeXBlYC4KKworSW4gYWRkaXRpb24sIGlmIGBGb29UeXBlYCBpcyBkZWNsYXJlZCBpbiBh
IG5hbWUgc3BhY2UsIHRoZSBgPDxgIG9wZXJhdG9yIGFsc28KK25lZWRzIHRvIGJlIGRlZmluZWQg
aW4gdGhlIF9zYW1lXyBuYW1lIHNwYWNlLgorCisjIyBIb3cgZG8gSSBzdXBwcmVzcyB0aGUgbWVt
b3J5IGxlYWsgbWVzc2FnZXMgb24gV2luZG93cz8gIyMKKworU2luY2UgdGhlIHN0YXRpY2FsbHkg
aW5pdGlhbGl6ZWQgR29vZ2xlIFRlc3Qgc2luZ2xldG9uIHJlcXVpcmVzIGFsbG9jYXRpb25zIG9u
Cit0aGUgaGVhcCwgdGhlIFZpc3VhbCBDKysgbWVtb3J5IGxlYWsgZGV0ZWN0b3Igd2lsbCByZXBv
cnQgbWVtb3J5IGxlYWtzIGF0IHRoZQorZW5kIG9mIHRoZSBwcm9ncmFtIHJ1bi4gVGhlIGVhc2ll
c3Qgd2F5IHRvIGF2b2lkIHRoaXMgaXMgdG8gdXNlIHRoZQorYF9DcnRNZW1DaGVja3BvaW50YCBh
bmQgYF9DcnRNZW1EdW1wQWxsT2JqZWN0c1NpbmNlYCBjYWxscyB0byBub3QgcmVwb3J0IGFueQor
c3RhdGljYWxseSBpbml0aWFsaXplZCBoZWFwIG9iamVjdHMuIFNlZSBNU0ROIGZvciBtb3JlIGRl
dGFpbHMgYW5kIGFkZGl0aW9uYWwKK2hlYXAgY2hlY2svZGVidWcgcm91dGluZXMuCisKKyMjIEkg
YW0gYnVpbGRpbmcgbXkgcHJvamVjdCB3aXRoIEdvb2dsZSBUZXN0IGluIFZpc3VhbCBTdHVkaW8g
YW5kIGFsbCBJJ20gZ2V0dGluZyBpcyBhIGJ1bmNoIG9mIGxpbmtlciBlcnJvcnMgKG9yIHdhcm5p
bmdzKS4gSGVscCEgIyMKKworWW91IG1heSBnZXQgYSBudW1iZXIgb2YgdGhlIGZvbGxvd2luZyBs
aW5rZXIgZXJyb3Igb3Igd2FybmluZ3MgaWYgeW91CithdHRlbXB0IHRvIGxpbmsgeW91ciB0ZXN0
IHByb2plY3Qgd2l0aCB0aGUgR29vZ2xlIFRlc3QgbGlicmFyeSB3aGVuCit5b3VyIHByb2plY3Qg
YW5kIHRoZSBhcmUgbm90IGJ1aWx0IHVzaW5nIHRoZSBzYW1lIGNvbXBpbGVyIHNldHRpbmdzLgor
CisgICogTE5LMjAwNTogc3ltYm9sIGFscmVhZHkgZGVmaW5lZCBpbiBvYmplY3QKKyAgKiBMTks0
MjE3OiBsb2NhbGx5IGRlZmluZWQgc3ltYm9sICdzeW1ib2wnIGltcG9ydGVkIGluIGZ1bmN0aW9u
ICdmdW5jdGlvbicKKyAgKiBMTks0MDQ5OiBsb2NhbGx5IGRlZmluZWQgc3ltYm9sICdzeW1ib2wn
IGltcG9ydGVkCisKK1RoZSBHb29nbGUgVGVzdCBwcm9qZWN0IChndGVzdC52Y3Byb2opIGhhcyB0
aGUgUnVudGltZSBMaWJyYXJ5IG9wdGlvbgorc2V0IHRvIC9NVCAodXNlIG11bHRpLXRocmVhZGVk
IHN0YXRpYyBsaWJyYXJpZXMsIC9NVGQgZm9yIGRlYnVnKS4gSWYKK3lvdXIgcHJvamVjdCB1c2Vz
IHNvbWV0aGluZyBlbHNlLCBmb3IgZXhhbXBsZSAvTUQgKHVzZSBtdWx0aS10aHJlYWRlZAorRExM
cywgL01EZCBmb3IgZGVidWcpLCB5b3UgbmVlZCB0byBjaGFuZ2UgdGhlIHNldHRpbmcgaW4gdGhl
IEdvb2dsZQorVGVzdCBwcm9qZWN0IHRvIG1hdGNoIHlvdXIgcHJvamVjdCdzLgorCitUbyB1cGRh
dGUgdGhpcyBzZXR0aW5nIG9wZW4gdGhlIHByb2plY3QgcHJvcGVydGllcyBpbiB0aGUgVmlzdWFs
CitTdHVkaW8gSURFIHRoZW4gc2VsZWN0IHRoZSBicmFuY2ggQ29uZmlndXJhdGlvbiBQcm9wZXJ0
aWVzIHwgQy9DKysgfAorQ29kZSBHZW5lcmF0aW9uIGFuZCBjaGFuZ2UgdGhlIG9wdGlvbiAiUnVu
dGltZSBMaWJyYXJ5Ii4gIFlvdSBtYXkgYWxzbyB0cnkKK3VzaW5nIGd0ZXN0LW1kLnZjcHJvaiBp
bnN0ZWFkIG9mIGd0ZXN0LnZjcHJvai4KKworIyMgSSBwdXQgbXkgdGVzdHMgaW4gYSBsaWJyYXJ5
IGFuZCBHb29nbGUgVGVzdCBkb2Vzbid0IHJ1biB0aGVtLiBXaGF0J3MgaGFwcGVuaW5nPyAjIwor
SGF2ZSB5b3UgcmVhZCBhCitbd2FybmluZ10oUHJpbWVyLm1kI2ltcG9ydGFudC1ub3RlLWZvci12
aXN1YWwtYy11c2Vycykgb24KK3RoZSBHb29nbGUgVGVzdCBQcmltZXIgcGFnZT8KKworIyMgSSB3
YW50IHRvIHVzZSBHb29nbGUgVGVzdCB3aXRoIFZpc3VhbCBTdHVkaW8gYnV0IGRvbid0IGtub3cg
d2hlcmUgdG8gc3RhcnQuICMjCitNYW55IHBlb3BsZSBhcmUgaW4geW91ciBwb3NpdGlvbiBhbmQg
b25lIG9mIHRoZSBwb3N0ZWQgaGlzIHNvbHV0aW9uIHRvCitvdXIgbWFpbGluZyBsaXN0LgorCisj
IyBJIGFtIHNlZWluZyBjb21waWxlIGVycm9ycyBtZW50aW9uaW5nIHN0ZDo6dHlwZVxfdHJhaXRz
IHdoZW4gSSB0cnkgdG8gdXNlIEdvb2dsZSBUZXN0IG9uIFNvbGFyaXMuICMjCitHb29nbGUgVGVz
dCB1c2VzIHBhcnRzIG9mIHRoZSBzdGFuZGFyZCBDKysgbGlicmFyeSB0aGF0IFN1blN0dWRpbyBk
b2VzIG5vdCBzdXBwb3J0LgorT3VyIHVzZXJzIHJlcG9ydGVkIHN1Y2Nlc3MgdXNpbmcgYWx0ZXJu
YXRpdmUgaW1wbGVtZW50YXRpb25zLiBUcnkgcnVubmluZyB0aGUgYnVpbGQgYWZ0ZXIgcnVuaW5n
IHRoaXMgY29tbWFkOgorCitgZXhwb3J0IENDPWNjIENYWD1DQyBDWFhGTEFHUz0nLWxpYnJhcnk9
c3RscG9ydDQnYAorCisjIyBIb3cgY2FuIG15IGNvZGUgZGV0ZWN0IGlmIGl0IGlzIHJ1bm5pbmcg
aW4gYSB0ZXN0PyAjIworCitJZiB5b3Ugd3JpdGUgY29kZSB0aGF0IHNuaWZmcyB3aGV0aGVyIGl0
J3MgcnVubmluZyBpbiBhIHRlc3QgYW5kIGRvZXMKK2RpZmZlcmVudCB0aGluZ3MgYWNjb3JkaW5n
bHksIHlvdSBhcmUgbGVha2luZyB0ZXN0LW9ubHkgbG9naWMgaW50bworcHJvZHVjdGlvbiBjb2Rl
IGFuZCB0aGVyZSBpcyBubyBlYXN5IHdheSB0byBlbnN1cmUgdGhhdCB0aGUgdGVzdC1vbmx5Citj
b2RlIHBhdGhzIGFyZW4ndCBydW4gYnkgbWlzdGFrZSBpbiBwcm9kdWN0aW9uLiAgU3VjaCBjbGV2
ZXJuZXNzIGFsc28KK2xlYWRzIHRvCitbSGVpc2VuYnVnc10oaHR0cDovL2VuLndpa2lwZWRpYS5v
cmcvd2lraS9VbnVzdWFsX3NvZnR3YXJlX2J1ZyNIZWlzZW5idWcpLgorVGhlcmVmb3JlIHdlIHN0
cm9uZ2x5IGFkdmlzZSBhZ2FpbnN0IHRoZSBwcmFjdGljZSwgYW5kIEdvb2dsZSBUZXN0IGRvZXNu
J3QKK3Byb3ZpZGUgYSB3YXkgdG8gZG8gaXQuCisKK0luIGdlbmVyYWwsIHRoZSByZWNvbW1lbmRl
ZCB3YXkgdG8gY2F1c2UgdGhlIGNvZGUgdG8gYmVoYXZlCitkaWZmZXJlbnRseSB1bmRlciB0ZXN0
IGlzIFtkZXBlbmRlbmN5IGluamVjdGlvbl0oaHR0cDovL2phbWVzc2hvcmUuY29tL0Jsb2cvRGVw
ZW5kZW5jeS1JbmplY3Rpb24tRGVteXN0aWZpZWQuaHRtbCkuCitZb3UgY2FuIGluamVjdCBkaWZm
ZXJlbnQgZnVuY3Rpb25hbGl0eSBmcm9tIHRoZSB0ZXN0IGFuZCBmcm9tIHRoZQorcHJvZHVjdGlv
biBjb2RlLiAgU2luY2UgeW91ciBwcm9kdWN0aW9uIGNvZGUgZG9lc24ndCBsaW5rIGluIHRoZQor
Zm9yLXRlc3QgbG9naWMgYXQgYWxsLCB0aGVyZSBpcyBubyBkYW5nZXIgaW4gYWNjaWRlbnRhbGx5
IHJ1bm5pbmcgaXQuCisKK0hvd2V2ZXIsIGlmIHlvdSBfcmVhbGx5XywgX3JlYWxseV8sIF9yZWFs
bHlfIGhhdmUgbm8gY2hvaWNlLCBhbmQgaWYKK3lvdSBmb2xsb3cgdGhlIHJ1bGUgb2YgZW5kaW5n
IHlvdXIgdGVzdCBwcm9ncmFtIG5hbWVzIHdpdGggYF90ZXN0YCwKK3lvdSBjYW4gdXNlIHRoZSBf
aG9ycmlibGVfIGhhY2sgb2Ygc25pZmZpbmcgeW91ciBleGVjdXRhYmxlIG5hbWUKKyhgYXJndlsw
XWAgaW4gYG1haW4oKWApIHRvIGtub3cgd2hldGhlciB0aGUgY29kZSBpcyB1bmRlciB0ZXN0Lgor
CisjIyBHb29nbGUgVGVzdCBkZWZpbmVzIGEgbWFjcm8gdGhhdCBjbGFzaGVzIHdpdGggb25lIGRl
ZmluZWQgYnkgYW5vdGhlciBsaWJyYXJ5LiBIb3cgZG8gSSBkZWFsIHdpdGggdGhhdD8gIyMKKwor
SW4gQysrLCBtYWNyb3MgZG9uJ3Qgb2JleSBuYW1lc3BhY2VzLiAgVGhlcmVmb3JlIHR3byBsaWJy
YXJpZXMgdGhhdAorYm90aCBkZWZpbmUgYSBtYWNybyBvZiB0aGUgc2FtZSBuYW1lIHdpbGwgY2xh
c2ggaWYgeW91IGAjaW5jbHVkZWAgYm90aAorZGVmaW5pdGlvbnMuICBJbiBjYXNlIGEgR29vZ2xl
IFRlc3QgbWFjcm8gY2xhc2hlcyB3aXRoIGFub3RoZXIKK2xpYnJhcnksIHlvdSBjYW4gZm9yY2Ug
R29vZ2xlIFRlc3QgdG8gcmVuYW1lIGl0cyBtYWNybyB0byBhdm9pZCB0aGUKK2NvbmZsaWN0Lgor
CitTcGVjaWZpY2FsbHksIGlmIGJvdGggR29vZ2xlIFRlc3QgYW5kIHNvbWUgb3RoZXIgY29kZSBk
ZWZpbmUgbWFjcm8KK2BGT09gLCB5b3UgY2FuIGFkZAorYGBgCisgIC1ER1RFU1RfRE9OVF9ERUZJ
TkVfRk9PPTEKK2BgYAordG8gdGhlIGNvbXBpbGVyIGZsYWdzIHRvIHRlbGwgR29vZ2xlIFRlc3Qg
dG8gY2hhbmdlIHRoZSBtYWNybydzIG5hbWUKK2Zyb20gYEZPT2AgdG8gYEdURVNUX0ZPT2AuIEZv
ciBleGFtcGxlLCB3aXRoIGAtREdURVNUX0RPTlRfREVGSU5FX1RFU1Q9MWAsIHlvdSdsbCBuZWVk
IHRvIHdyaXRlCitgYGAgY3BwCisgIEdURVNUX1RFU1QoU29tZVRlc3QsIERvZXNUaGlzKSB7IC4u
LiB9CitgYGAKK2luc3RlYWQgb2YKK2BgYCBjcHAKKyAgVEVTVChTb21lVGVzdCwgRG9lc1RoaXMp
IHsgLi4uIH0KK2BgYAoraW4gb3JkZXIgdG8gZGVmaW5lIGEgdGVzdC4KKworQ3VycmVudGx5LCB0
aGUgZm9sbG93aW5nIGBURVNUYCwgYEZBSUxgLCBgU1VDQ0VFRGAsIGFuZCB0aGUgYmFzaWMgY29t
cGFyaXNvbiBhc3NlcnRpb24gbWFjcm9zIGNhbiBoYXZlIGFsdGVybmF0aXZlIG5hbWVzLiBZb3Ug
Y2FuIHNlZSB0aGUgZnVsbCBsaXN0IG9mIGNvdmVyZWQgbWFjcm9zIFtoZXJlXShodHRwOi8vd3d3
Lmdvb2dsZS5jb20vY29kZXNlYXJjaD9xPWlmKyFHVEVTVF9ET05UX0RFRklORV9cdyUyQitwYWNr
YWdlOmh0dHA6Ly9nb29nbGV0ZXN0XC5nb29nbGVjb2RlXC5jb20rZmlsZTovaW5jbHVkZS9ndGVz
dC9ndGVzdC5oKS4gTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gdGhlICJBdm9pZGlu
ZyBNYWNybyBOYW1lIENsYXNoZXMiIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBmaWxlLgorCisKKyMj
IElzIGl0IE9LIGlmIEkgaGF2ZSB0d28gc2VwYXJhdGUgYFRFU1QoRm9vLCBCYXIpYCB0ZXN0IG1l
dGhvZHMgZGVmaW5lZCBpbiBkaWZmZXJlbnQgbmFtZXNwYWNlcz8gIyMKKworWWVzLgorCitUaGUg
cnVsZSBpcyAqKmFsbCB0ZXN0IG1ldGhvZHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNl
IHRoZSBzYW1lIGZpeHR1cmUgY2xhc3MqKi4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcg
aXMgKiphbGxvd2VkKiogYmVjYXVzZSBib3RoIHRlc3RzIHVzZSB0aGUgc2FtZSBmaXh0dXJlIGNs
YXNzIChgOjp0ZXN0aW5nOjpUZXN0YCkuCisKK2BgYCBjcHAKK25hbWVzcGFjZSBmb28geworVEVT
VChDb29sVGVzdCwgRG9Tb21ldGhpbmcpIHsKKyAgU1VDQ0VFRCgpOworfQorfSAgLy8gbmFtZXNw
YWNlIGZvbworCituYW1lc3BhY2UgYmFyIHsKK1RFU1QoQ29vbFRlc3QsIERvU29tZXRoaW5nKSB7
CisgIFNVQ0NFRUQoKTsKK30KK30gIC8vIG5hbWVzcGFjZSBmb28KK2BgYAorCitIb3dldmVyLCB0
aGUgZm9sbG93aW5nIGNvZGUgaXMgKipub3QgYWxsb3dlZCoqIGFuZCB3aWxsIHByb2R1Y2UgYSBy
dW50aW1lIGVycm9yIGZyb20gR29vZ2xlIFRlc3QgYmVjYXVzZSB0aGUgdGVzdCBtZXRob2RzIGFy
ZSB1c2luZyBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMgd2l0aCB0aGUgc2FtZSB0ZXN0
IGNhc2UgbmFtZS4KKworYGBgIGNwcAorbmFtZXNwYWNlIGZvbyB7CitjbGFzcyBDb29sVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307ICAvLyBGaXh0dXJlIGZvbzo6Q29vbFRlc3QKK1RF
U1RfRihDb29sVGVzdCwgRG9Tb21ldGhpbmcpIHsKKyAgU1VDQ0VFRCgpOworfQorfSAgLy8gbmFt
ZXNwYWNlIGZvbworCituYW1lc3BhY2UgYmFyIHsKK2NsYXNzIENvb2xUZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCB7fTsgIC8vIEZpeHR1cmU6IGJhcjo6Q29vbFRlc3QKK1RFU1RfRihDb29s
VGVzdCwgRG9Tb21ldGhpbmcpIHsKKyAgU1VDQ0VFRCgpOworfQorfSAgLy8gbmFtZXNwYWNlIGZv
bworYGBgCisKKyMjIEhvdyBkbyBJIGJ1aWxkIEdvb2dsZSBUZXN0aW5nIEZyYW1ld29yayB3aXRo
IFhjb2RlIDQ/ICMjCisKK0lmIHlvdSB0cnkgdG8gYnVpbGQgR29vZ2xlIFRlc3QncyBYY29kZSBw
cm9qZWN0IHdpdGggWGNvZGUgNC4wIG9yIGxhdGVyLCB5b3UgbWF5IGVuY291bnRlciBhbiBlcnJv
ciBtZXNzYWdlIHRoYXQgbG9va3MgbGlrZQorIk1pc3NpbmcgU0RLIGluIHRhcmdldCBndGVzdFxf
ZnJhbWV3b3JrOiAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrIi4gVGhhdCBtZWFucyB0
aGF0IFhjb2RlIGRvZXMgbm90IHN1cHBvcnQgdGhlIFNESyB0aGUgcHJvamVjdCBpcyB0YXJnZXRp
bmcuIFNlZSB0aGUgWGNvZGUgc2VjdGlvbiBpbiB0aGUgW1JFQURNRV0oLi4vUkVBRE1FLm1kKSBm
aWxlIG9uIGhvdyB0byByZXNvbHZlIHRoaXMuCisKKyMjIE15IHF1ZXN0aW9uIGlzIG5vdCBjb3Zl
cmVkIGluIHlvdXIgRkFRISAjIworCitJZiB5b3UgY2Fubm90IGZpbmQgdGhlIGFuc3dlciB0byB5
b3VyIHF1ZXN0aW9uIGluIHRoaXMgRkFRLCB0aGVyZSBhcmUKK3NvbWUgb3RoZXIgcmVzb3VyY2Vz
IHlvdSBjYW4gdXNlOgorCisgIDEuIHJlYWQgb3RoZXIgW3dpa2kgcGFnZXNdKC4uL2RvY3MpLAor
ICAxLiBzZWFyY2ggdGhlIG1haWxpbmcgbGlzdCBbYXJjaGl2ZV0oaHR0cHM6Ly9ncm91cHMuZ29v
Z2xlLmNvbS9mb3J1bS8jIWZvcnVtL2dvb2dsZXRlc3RmcmFtZXdvcmspLAorICAxLiBhc2sgaXQg
b24gW2dvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbV0obWFpbHRvOmdvb2dsZXRl
c3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbSkgYW5kIHNvbWVvbmUgd2lsbCBhbnN3ZXIgaXQg
KHRvIHByZXZlbnQgc3BhbSwgd2UgcmVxdWlyZSB5b3UgdG8gam9pbiB0aGUgW2Rpc2N1c3Npb24g
Z3JvdXBdKGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGV0ZXN0ZnJhbWV3b3Jr
KSBiZWZvcmUgeW91IGNhbiBwb3N0LikuCisKK1BsZWFzZSBub3RlIHRoYXQgY3JlYXRpbmcgYW4g
aXNzdWUgaW4gdGhlCitbaXNzdWUgdHJhY2tlcl0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9n
b29nbGV0ZXN0L2lzc3VlcykgaXMgX25vdF8KK2EgZ29vZCB3YXkgdG8gZ2V0IHlvdXIgYW5zd2Vy
LCBhcyBpdCBpcyBtb25pdG9yZWQgaW5mcmVxdWVudGx5IGJ5IGEKK3Zlcnkgc21hbGwgbnVtYmVy
IG9mIHBlb3BsZS4KKworV2hlbiBhc2tpbmcgYSBxdWVzdGlvbiwgaXQncyBoZWxwZnVsIHRvIHBy
b3ZpZGUgYXMgbXVjaCBvZiB0aGUKK2ZvbGxvd2luZyBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSAo
cGVvcGxlIGNhbm5vdCBoZWxwIHlvdSBpZiB0aGVyZSdzCitub3QgZW5vdWdoIGluZm9ybWF0aW9u
IGluIHlvdXIgcXVlc3Rpb24pOgorCisgICogdGhlIHZlcnNpb24gKG9yIHRoZSBjb21taXQgaGFz
aCBpZiB5b3UgY2hlY2sgb3V0IGZyb20gR2l0IGRpcmVjdGx5KSBvZiBHb29nbGUgVGVzdCB5b3Ug
dXNlIChHb29nbGUgVGVzdCBpcyB1bmRlciBhY3RpdmUgZGV2ZWxvcG1lbnQsIHNvIGl0J3MgcG9z
c2libGUgdGhhdCB5b3VyIHByb2JsZW0gaGFzIGJlZW4gc29sdmVkIGluIGEgbGF0ZXIgdmVyc2lv
biksCisgICogeW91ciBvcGVyYXRpbmcgc3lzdGVtLAorICAqIHRoZSBuYW1lIGFuZCB2ZXJzaW9u
IG9mIHlvdXIgY29tcGlsZXIsCisgICogdGhlIGNvbXBsZXRlIGNvbW1hbmQgbGluZSBmbGFncyB5
b3UgZ2l2ZSB0byB5b3VyIGNvbXBpbGVyLAorICAqIHRoZSBjb21wbGV0ZSBjb21waWxlciBlcnJv
ciBtZXNzYWdlcyAoaWYgdGhlIHF1ZXN0aW9uIGlzIGFib3V0IGNvbXBpbGF0aW9uKSwKKyAgKiB0
aGUgX2FjdHVhbF8gY29kZSAoaWRlYWxseSwgYSBtaW5pbWFsIGJ1dCBjb21wbGV0ZSBwcm9ncmFt
KSB0aGF0IGhhcyB0aGUgcHJvYmxlbSB5b3UgZW5jb3VudGVyLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9QcmltZXIubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9kb2NzL1ByaW1lci5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzRjMWQyYWI2MzIxOTMyMDJmNWJmYTc5OWVi
ZDY0MmQwYTMwOGE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
ZG9jcy9QcmltZXIubWQKQEAgLTAsMCArMSw1MDIgQEAKKworCisjIEludHJvZHVjdGlvbjogV2h5
IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcms/ICMKKworX0dvb2dsZSBDKysgVGVzdGluZyBG
cmFtZXdvcmtfIGhlbHBzIHlvdSB3cml0ZSBiZXR0ZXIgQysrIHRlc3RzLgorCitObyBtYXR0ZXIg
d2hldGhlciB5b3Ugd29yayBvbiBMaW51eCwgV2luZG93cywgb3IgYSBNYWMsIGlmIHlvdSB3cml0
ZSBDKysgY29kZSwKK0dvb2dsZSBUZXN0IGNhbiBoZWxwIHlvdS4KKworU28gd2hhdCBtYWtlcyBh
IGdvb2QgdGVzdCwgYW5kIGhvdyBkb2VzIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgZml0
IGluPyBXZSBiZWxpZXZlOgorICAxLiBUZXN0cyBzaG91bGQgYmUgX2luZGVwZW5kZW50XyBhbmQg
X3JlcGVhdGFibGVfLiBJdCdzIGEgcGFpbiB0byBkZWJ1ZyBhIHRlc3QgdGhhdCBzdWNjZWVkcyBv
ciBmYWlscyBhcyBhIHJlc3VsdCBvZiBvdGhlciB0ZXN0cy4gIEdvb2dsZSBDKysgVGVzdGluZyBG
cmFtZXdvcmsgaXNvbGF0ZXMgdGhlIHRlc3RzIGJ5IHJ1bm5pbmcgZWFjaCBvZiB0aGVtIG9uIGEg
ZGlmZmVyZW50IG9iamVjdC4gV2hlbiBhIHRlc3QgZmFpbHMsIEdvb2dsZSBDKysgVGVzdGluZyBG
cmFtZXdvcmsgYWxsb3dzIHlvdSB0byBydW4gaXQgaW4gaXNvbGF0aW9uIGZvciBxdWljayBkZWJ1
Z2dpbmcuCisgIDEuIFRlc3RzIHNob3VsZCBiZSB3ZWxsIF9vcmdhbml6ZWRfIGFuZCByZWZsZWN0
IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3RlZCBjb2RlLiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZy
YW1ld29yayBncm91cHMgcmVsYXRlZCB0ZXN0cyBpbnRvIHRlc3QgY2FzZXMgdGhhdCBjYW4gc2hh
cmUgZGF0YSBhbmQgc3Vicm91dGluZXMuIFRoaXMgY29tbW9uIHBhdHRlcm4gaXMgZWFzeSB0byBy
ZWNvZ25pemUgYW5kIG1ha2VzIHRlc3RzIGVhc3kgdG8gbWFpbnRhaW4uIFN1Y2ggY29uc2lzdGVu
Y3kgaXMgZXNwZWNpYWxseSBoZWxwZnVsIHdoZW4gcGVvcGxlIHN3aXRjaCBwcm9qZWN0cyBhbmQg
c3RhcnQgdG8gd29yayBvbiBhIG5ldyBjb2RlIGJhc2UuCisgIDEuIFRlc3RzIHNob3VsZCBiZSBf
cG9ydGFibGVfIGFuZCBfcmV1c2FibGVfLiBUaGUgb3Blbi1zb3VyY2UgY29tbXVuaXR5IGhhcyBh
IGxvdCBvZiBjb2RlIHRoYXQgaXMgcGxhdGZvcm0tbmV1dHJhbCwgaXRzIHRlc3RzIHNob3VsZCBh
bHNvIGJlIHBsYXRmb3JtLW5ldXRyYWwuICBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIHdv
cmtzIG9uIGRpZmZlcmVudCBPU2VzLCB3aXRoIGRpZmZlcmVudCBjb21waWxlcnMgKGdjYywgTVNW
QywgYW5kIG90aGVycyksIHdpdGggb3Igd2l0aG91dCBleGNlcHRpb25zLCBzbyBHb29nbGUgQysr
IFRlc3RpbmcgRnJhbWV3b3JrIHRlc3RzIGNhbiBlYXNpbHkgd29yayB3aXRoIGEgdmFyaWV0eSBv
ZiBjb25maWd1cmF0aW9ucy4gIChOb3RlIHRoYXQgdGhlIGN1cnJlbnQgcmVsZWFzZSBvbmx5IGNv
bnRhaW5zIGJ1aWxkIHNjcmlwdHMgZm9yIExpbnV4IC0gd2UgYXJlIGFjdGl2ZWx5IHdvcmtpbmcg
b24gc2NyaXB0cyBmb3Igb3RoZXIgcGxhdGZvcm1zLikKKyAgMS4gV2hlbiB0ZXN0cyBmYWlsLCB0
aGV5IHNob3VsZCBwcm92aWRlIGFzIG11Y2ggX2luZm9ybWF0aW9uXyBhYm91dCB0aGUgcHJvYmxl
bSBhcyBwb3NzaWJsZS4gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBkb2Vzbid0IHN0b3Ag
YXQgdGhlIGZpcnN0IHRlc3QgZmFpbHVyZS4gSW5zdGVhZCwgaXQgb25seSBzdG9wcyB0aGUgY3Vy
cmVudCB0ZXN0IGFuZCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dC4gWW91IGNhbiBhbHNvIHNldCB1
cCB0ZXN0cyB0aGF0IHJlcG9ydCBub24tZmF0YWwgZmFpbHVyZXMgYWZ0ZXIgd2hpY2ggdGhlIGN1
cnJlbnQgdGVzdCBjb250aW51ZXMuIFRodXMsIHlvdSBjYW4gZGV0ZWN0IGFuZCBmaXggbXVsdGlw
bGUgYnVncyBpbiBhIHNpbmdsZSBydW4tZWRpdC1jb21waWxlIGN5Y2xlLgorICAxLiBUaGUgdGVz
dGluZyBmcmFtZXdvcmsgc2hvdWxkIGxpYmVyYXRlIHRlc3Qgd3JpdGVycyBmcm9tIGhvdXNla2Vl
cGluZyBjaG9yZXMgYW5kIGxldCB0aGVtIGZvY3VzIG9uIHRoZSB0ZXN0IF9jb250ZW50Xy4gIEdv
b2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgYXV0b21hdGljYWxseSBrZWVwcyB0cmFjayBvZiBh
bGwgdGVzdHMgZGVmaW5lZCwgYW5kIGRvZXNuJ3QgcmVxdWlyZSB0aGUgdXNlciB0byBlbnVtZXJh
dGUgdGhlbSBpbiBvcmRlciB0byBydW4gdGhlbS4KKyAgMS4gVGVzdHMgc2hvdWxkIGJlIF9mYXN0
Xy4gV2l0aCBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrLCB5b3UgY2FuIHJldXNlIHNoYXJl
ZCByZXNvdXJjZXMgYWNyb3NzIHRlc3RzIGFuZCBwYXkgZm9yIHRoZSBzZXQtdXAvdGVhci1kb3du
IG9ubHkgb25jZSwgd2l0aG91dCBtYWtpbmcgdGVzdHMgZGVwZW5kIG9uIGVhY2ggb3RoZXIuCisK
K1NpbmNlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgaXMgYmFzZWQgb24gdGhlIHBvcHVs
YXIgeFVuaXQKK2FyY2hpdGVjdHVyZSwgeW91J2xsIGZlZWwgcmlnaHQgYXQgaG9tZSBpZiB5b3Un
dmUgdXNlZCBKVW5pdCBvciBQeVVuaXQgYmVmb3JlLgorSWYgbm90LCBpdCB3aWxsIHRha2UgeW91
IGFib3V0IDEwIG1pbnV0ZXMgdG8gbGVhcm4gdGhlIGJhc2ljcyBhbmQgZ2V0IHN0YXJ0ZWQuCitT
byBsZXQncyBnbyEKKworX05vdGU6XyBXZSBzb21ldGltZXMgcmVmZXIgdG8gR29vZ2xlIEMrKyBU
ZXN0aW5nIEZyYW1ld29yayBpbmZvcm1hbGx5CithcyBfR29vZ2xlIFRlc3RfLgorCisjIFNldHRp
bmcgdXAgYSBOZXcgVGVzdCBQcm9qZWN0ICMKKworVG8gd3JpdGUgYSB0ZXN0IHByb2dyYW0gdXNp
bmcgR29vZ2xlIFRlc3QsIHlvdSBuZWVkIHRvIGNvbXBpbGUgR29vZ2xlCitUZXN0IGludG8gYSBs
aWJyYXJ5IGFuZCBsaW5rIHlvdXIgdGVzdCB3aXRoIGl0LiAgV2UgcHJvdmlkZSBidWlsZAorZmls
ZXMgZm9yIHNvbWUgcG9wdWxhciBidWlsZCBzeXN0ZW1zOiBgbXN2Yy9gIGZvciBWaXN1YWwgU3R1
ZGlvLAorYHhjb2RlL2AgZm9yIE1hYyBYY29kZSwgYG1ha2UvYCBmb3IgR05VIG1ha2UsIGBjb2Rl
Z2Vhci9gIGZvciBCb3JsYW5kCitDKysgQnVpbGRlciwgYW5kIHRoZSBhdXRvdG9vbHMgc2NyaXB0
IChkZXByZWNhdGVkKSBhbmQKK2BDTWFrZUxpc3RzLnR4dGAgZm9yIENNYWtlIChyZWNvbW1lbmRl
ZCkgaW4gdGhlIEdvb2dsZSBUZXN0IHJvb3QKK2RpcmVjdG9yeS4gIElmIHlvdXIgYnVpbGQgc3lz
dGVtIGlzIG5vdCBvbiB0aGlzIGxpc3QsIHlvdSBjYW4gdGFrZSBhCitsb29rIGF0IGBtYWtlL01h
a2VmaWxlYCB0byBsZWFybiBob3cgR29vZ2xlIFRlc3Qgc2hvdWxkIGJlIGNvbXBpbGVkCisoYmFz
aWNhbGx5IHlvdSB3YW50IHRvIGNvbXBpbGUgYHNyYy9ndGVzdC1hbGwuY2NgIHdpdGggYEdURVNU
X1JPT1RgCithbmQgYEdURVNUX1JPT1QvaW5jbHVkZWAgaW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0
aCwgd2hlcmUgYEdURVNUX1JPT1RgCitpcyB0aGUgR29vZ2xlIFRlc3Qgcm9vdCBkaXJlY3Rvcnkp
LgorCitPbmNlIHlvdSBhcmUgYWJsZSB0byBjb21waWxlIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5
LCB5b3Ugc2hvdWxkCitjcmVhdGUgYSBwcm9qZWN0IG9yIGJ1aWxkIHRhcmdldCBmb3IgeW91ciB0
ZXN0IHByb2dyYW0uICBNYWtlIHN1cmUgeW91CitoYXZlIGBHVEVTVF9ST09UL2luY2x1ZGVgIGlu
IHRoZSBoZWFkZXIgc2VhcmNoIHBhdGggc28gdGhhdCB0aGUKK2NvbXBpbGVyIGNhbiBmaW5kIGAi
Z3Rlc3QvZ3Rlc3QuaCJgIHdoZW4gY29tcGlsaW5nIHlvdXIgdGVzdC4gIFNldCB1cAoreW91ciB0
ZXN0IHByb2plY3QgdG8gbGluayB3aXRoIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5IChmb3IgZXhh
bXBsZSwKK2luIFZpc3VhbCBTdHVkaW8sIHRoaXMgaXMgZG9uZSBieSBhZGRpbmcgYSBkZXBlbmRl
bmN5IG9uCitgZ3Rlc3QudmNwcm9qYCkuCisKK0lmIHlvdSBzdGlsbCBoYXZlIHF1ZXN0aW9ucywg
dGFrZSBhIGxvb2sgYXQgaG93IEdvb2dsZSBUZXN0J3Mgb3duCit0ZXN0cyBhcmUgYnVpbHQgYW5k
IHVzZSB0aGVtIGFzIGV4YW1wbGVzLgorCisjIEJhc2ljIENvbmNlcHRzICMKKworV2hlbiB1c2lu
ZyBHb29nbGUgVGVzdCwgeW91IHN0YXJ0IGJ5IHdyaXRpbmcgX2Fzc2VydGlvbnNfLCB3aGljaCBh
cmUgc3RhdGVtZW50cwordGhhdCBjaGVjayB3aGV0aGVyIGEgY29uZGl0aW9uIGlzIHRydWUuIEFu
IGFzc2VydGlvbidzIHJlc3VsdCBjYW4gYmUgX3N1Y2Nlc3NfLAorX25vbmZhdGFsIGZhaWx1cmVf
LCBvciBfZmF0YWwgZmFpbHVyZV8uIElmIGEgZmF0YWwgZmFpbHVyZSBvY2N1cnMsIGl0IGFib3J0
cwordGhlIGN1cnJlbnQgZnVuY3Rpb247IG90aGVyd2lzZSB0aGUgcHJvZ3JhbSBjb250aW51ZXMg
bm9ybWFsbHkuCisKK19UZXN0c18gdXNlIGFzc2VydGlvbnMgdG8gdmVyaWZ5IHRoZSB0ZXN0ZWQg
Y29kZSdzIGJlaGF2aW9yLiBJZiBhIHRlc3QgY3Jhc2hlcworb3IgaGFzIGEgZmFpbGVkIGFzc2Vy
dGlvbiwgdGhlbiBpdCBfZmFpbHNfOyBvdGhlcndpc2UgaXQgX3N1Y2NlZWRzXy4KKworQSBfdGVz
dCBjYXNlXyBjb250YWlucyBvbmUgb3IgbWFueSB0ZXN0cy4gWW91IHNob3VsZCBncm91cCB5b3Vy
IHRlc3RzIGludG8gdGVzdAorY2FzZXMgdGhhdCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhl
IHRlc3RlZCBjb2RlLiBXaGVuIG11bHRpcGxlIHRlc3RzIGluIGEKK3Rlc3QgY2FzZSBuZWVkIHRv
IHNoYXJlIGNvbW1vbiBvYmplY3RzIGFuZCBzdWJyb3V0aW5lcywgeW91IGNhbiBwdXQgdGhlbSBp
bnRvIGEKK190ZXN0IGZpeHR1cmVfIGNsYXNzLgorCitBIF90ZXN0IHByb2dyYW1fIGNhbiBjb250
YWluIG11bHRpcGxlIHRlc3QgY2FzZXMuCisKK1dlJ2xsIG5vdyBleHBsYWluIGhvdyB0byB3cml0
ZSBhIHRlc3QgcHJvZ3JhbSwgc3RhcnRpbmcgYXQgdGhlIGluZGl2aWR1YWwKK2Fzc2VydGlvbiBs
ZXZlbCBhbmQgYnVpbGRpbmcgdXAgdG8gdGVzdHMgYW5kIHRlc3QgY2FzZXMuCisKKyMgQXNzZXJ0
aW9ucyAjCisKK0dvb2dsZSBUZXN0IGFzc2VydGlvbnMgYXJlIG1hY3JvcyB0aGF0IHJlc2VtYmxl
IGZ1bmN0aW9uIGNhbGxzLiBZb3UgdGVzdCBhCitjbGFzcyBvciBmdW5jdGlvbiBieSBtYWtpbmcg
YXNzZXJ0aW9ucyBhYm91dCBpdHMgYmVoYXZpb3IuIFdoZW4gYW4gYXNzZXJ0aW9uCitmYWlscywg
R29vZ2xlIFRlc3QgcHJpbnRzIHRoZSBhc3NlcnRpb24ncyBzb3VyY2UgZmlsZSBhbmQgbGluZSBu
dW1iZXIgbG9jYXRpb24sCithbG9uZyB3aXRoIGEgZmFpbHVyZSBtZXNzYWdlLiBZb3UgbWF5IGFs
c28gc3VwcGx5IGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZQord2hpY2ggd2lsbCBiZSBhcHBlbmRl
ZCB0byBHb29nbGUgVGVzdCdzIG1lc3NhZ2UuCisKK1RoZSBhc3NlcnRpb25zIGNvbWUgaW4gcGFp
cnMgdGhhdCB0ZXN0IHRoZSBzYW1lIHRoaW5nIGJ1dCBoYXZlIGRpZmZlcmVudAorZWZmZWN0cyBv
biB0aGUgY3VycmVudCBmdW5jdGlvbi4gYEFTU0VSVF8qYCB2ZXJzaW9ucyBnZW5lcmF0ZSBmYXRh
bCBmYWlsdXJlcword2hlbiB0aGV5IGZhaWwsIGFuZCAqKmFib3J0IHRoZSBjdXJyZW50IGZ1bmN0
aW9uKiouIGBFWFBFQ1RfKmAgdmVyc2lvbnMgZ2VuZXJhdGUKK25vbmZhdGFsIGZhaWx1cmVzLCB3
aGljaCBkb24ndCBhYm9ydCB0aGUgY3VycmVudCBmdW5jdGlvbi4gVXN1YWxseSBgRVhQRUNUXypg
CithcmUgcHJlZmVycmVkLCBhcyB0aGV5IGFsbG93IG1vcmUgdGhhbiBvbmUgZmFpbHVyZXMgdG8g
YmUgcmVwb3J0ZWQgaW4gYSB0ZXN0LgorSG93ZXZlciwgeW91IHNob3VsZCB1c2UgYEFTU0VSVF8q
YCBpZiBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gY29udGludWUgd2hlbgordGhlIGFzc2VydGlv
biBpbiBxdWVzdGlvbiBmYWlscy4KKworU2luY2UgYSBmYWlsZWQgYEFTU0VSVF8qYCByZXR1cm5z
IGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gaW1tZWRpYXRlbHksCitwb3NzaWJseSBza2lwcGlu
ZyBjbGVhbi11cCBjb2RlIHRoYXQgY29tZXMgYWZ0ZXIgaXQsIGl0IG1heSBjYXVzZSBhIHNwYWNl
IGxlYWsuCitEZXBlbmRpbmcgb24gdGhlIG5hdHVyZSBvZiB0aGUgbGVhaywgaXQgbWF5IG9yIG1h
eSBub3QgYmUgd29ydGggZml4aW5nIC0gc28KK2tlZXAgdGhpcyBpbiBtaW5kIGlmIHlvdSBnZXQg
YSBoZWFwIGNoZWNrZXIgZXJyb3IgaW4gYWRkaXRpb24gdG8gYXNzZXJ0aW9uCitlcnJvcnMuCisK
K1RvIHByb3ZpZGUgYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlLCBzaW1wbHkgc3RyZWFtIGl0IGlu
dG8gdGhlIG1hY3JvIHVzaW5nIHRoZQorYDw8YCBvcGVyYXRvciwgb3IgYSBzZXF1ZW5jZSBvZiBz
dWNoIG9wZXJhdG9ycy4gQW4gZXhhbXBsZToKK2BgYAorQVNTRVJUX0VRKHguc2l6ZSgpLCB5LnNp
emUoKSkgPDwgIlZlY3RvcnMgeCBhbmQgeSBhcmUgb2YgdW5lcXVhbCBsZW5ndGgiOworCitmb3Ig
KGludCBpID0gMDsgaSA8IHguc2l6ZSgpOyArK2kpIHsKKyAgRVhQRUNUX0VRKHhbaV0sIHlbaV0p
IDw8ICJWZWN0b3JzIHggYW5kIHkgZGlmZmVyIGF0IGluZGV4ICIgPDwgaTsKK30KK2BgYAorCitB
bnl0aGluZyB0aGF0IGNhbiBiZSBzdHJlYW1lZCB0byBhbiBgb3N0cmVhbWAgY2FuIGJlIHN0cmVh
bWVkIHRvIGFuIGFzc2VydGlvbgorbWFjcm8tLWluIHBhcnRpY3VsYXIsIEMgc3RyaW5ncyBhbmQg
YHN0cmluZ2Agb2JqZWN0cy4gSWYgYSB3aWRlIHN0cmluZworKGB3Y2hhcl90KmAsIGBUQ0hBUipg
IGluIGBVTklDT0RFYCBtb2RlIG9uIFdpbmRvd3MsIG9yIGBzdGQ6OndzdHJpbmdgKSBpcworc3Ry
ZWFtZWQgdG8gYW4gYXNzZXJ0aW9uLCBpdCB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gVVRGLTggd2hl
biBwcmludGVkLgorCisjIyBCYXNpYyBBc3NlcnRpb25zICMjCisKK1RoZXNlIGFzc2VydGlvbnMg
ZG8gYmFzaWMgdHJ1ZS9mYWxzZSBjb25kaXRpb24gdGVzdGluZy4KKworfCAqKkZhdGFsIGFzc2Vy
dGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwK
K3wgYEFTU0VSVF9UUlVFKGBfY29uZGl0aW9uX2ApYDsgIHwgYEVYUEVDVF9UUlVFKGBfY29uZGl0
aW9uX2ApYDsgICB8IF9jb25kaXRpb25fIGlzIHRydWUgfAorfCBgQVNTRVJUX0ZBTFNFKGBfY29u
ZGl0aW9uX2ApYDsgfCBgRVhQRUNUX0ZBTFNFKGBfY29uZGl0aW9uX2ApYDsgIHwgX2NvbmRpdGlv
bl8gaXMgZmFsc2UgfAorCitSZW1lbWJlciwgd2hlbiB0aGV5IGZhaWwsIGBBU1NFUlRfKmAgeWll
bGRzIGEgZmF0YWwgZmFpbHVyZSBhbmQKK3JldHVybnMgZnJvbSB0aGUgY3VycmVudCBmdW5jdGlv
biwgd2hpbGUgYEVYUEVDVF8qYCB5aWVsZHMgYSBub25mYXRhbAorZmFpbHVyZSwgYWxsb3dpbmcg
dGhlIGZ1bmN0aW9uIHRvIGNvbnRpbnVlIHJ1bm5pbmcuIEluIGVpdGhlciBjYXNlLCBhbgorYXNz
ZXJ0aW9uIGZhaWx1cmUgbWVhbnMgaXRzIGNvbnRhaW5pbmcgdGVzdCBmYWlscy4KKworX0F2YWls
YWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIEJpbmFyeSBDb21wYXJpc29uICMj
CisKK1RoaXMgc2VjdGlvbiBkZXNjcmliZXMgYXNzZXJ0aW9ucyB0aGF0IGNvbXBhcmUgdHdvIHZh
bHVlcy4KKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8
ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3xgQVNTRVJUX0VRKGBfdmFsMV9gLCBgX3ZhbDJfYCk7
YHxgRVhQRUNUX0VRKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YHwgX3ZhbDFfIGA9PWAgX3ZhbDJfIHwK
K3xgQVNTRVJUX05FKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YHxgRVhQRUNUX05FKGBfdmFsMV9gLCBg
X3ZhbDJfYCk7YHwgX3ZhbDFfIGAhPWAgX3ZhbDJfIHwKK3xgQVNTRVJUX0xUKGBfdmFsMV9gLCBg
X3ZhbDJfYCk7YHxgRVhQRUNUX0xUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YHwgX3ZhbDFfIGA8YCBf
dmFsMl8gfAorfGBBU1NFUlRfTEUoYF92YWwxX2AsIGBfdmFsMl9gKTtgfGBFWFBFQ1RfTEUoYF92
YWwxX2AsIGBfdmFsMl9gKTtgfCBfdmFsMV8gYDw9YCBfdmFsMl8gfAorfGBBU1NFUlRfR1QoYF92
YWwxX2AsIGBfdmFsMl9gKTtgfGBFWFBFQ1RfR1QoYF92YWwxX2AsIGBfdmFsMl9gKTtgfCBfdmFs
MV8gYD5gIF92YWwyXyB8Cit8YEFTU0VSVF9HRShgX3ZhbDFfYCwgYF92YWwyX2ApO2B8YEVYUEVD
VF9HRShgX3ZhbDFfYCwgYF92YWwyX2ApO2B8IF92YWwxXyBgPj1gIF92YWwyXyB8CisKK0luIHRo
ZSBldmVudCBvZiBhIGZhaWx1cmUsIEdvb2dsZSBUZXN0IHByaW50cyBib3RoIF92YWwxXyBhbmQg
X3ZhbDJfLgorCitWYWx1ZSBhcmd1bWVudHMgbXVzdCBiZSBjb21wYXJhYmxlIGJ5IHRoZSBhc3Nl
cnRpb24ncyBjb21wYXJpc29uCitvcGVyYXRvciBvciB5b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJy
b3IuICBXZSB1c2VkIHRvIHJlcXVpcmUgdGhlCithcmd1bWVudHMgdG8gc3VwcG9ydCB0aGUgYDw8
YCBvcGVyYXRvciBmb3Igc3RyZWFtaW5nIHRvIGFuIGBvc3RyZWFtYCwKK2J1dCBpdCdzIG5vIGxv
bmdlciBuZWNlc3Nhcnkgc2luY2UgdjEuNi4wIChpZiBgPDxgIGlzIHN1cHBvcnRlZCwgaXQKK3dp
bGwgYmUgY2FsbGVkIHRvIHByaW50IHRoZSBhcmd1bWVudHMgd2hlbiB0aGUgYXNzZXJ0aW9uIGZh
aWxzOworb3RoZXJ3aXNlIEdvb2dsZSBUZXN0IHdpbGwgYXR0ZW1wdCB0byBwcmludCB0aGVtIGlu
IHRoZSBiZXN0IHdheSBpdAorY2FuLiBGb3IgbW9yZSBkZXRhaWxzIGFuZCBob3cgdG8gY3VzdG9t
aXplIHRoZSBwcmludGluZyBvZiB0aGUKK2FyZ3VtZW50cywgc2VlIHRoaXMgR29vZ2xlIE1vY2sg
W3JlY2lwZV0oLi4vLi4vZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3RlYWNoaW5nLWdvb2ds
ZS1tb2NrLWhvdy10by1wcmludC15b3VyLXZhbHVlcykuKS4KKworVGhlc2UgYXNzZXJ0aW9ucyBj
YW4gd29yayB3aXRoIGEgdXNlci1kZWZpbmVkIHR5cGUsIGJ1dCBvbmx5IGlmIHlvdSBkZWZpbmUg
dGhlCitjb3JyZXNwb25kaW5nIGNvbXBhcmlzb24gb3BlcmF0b3IgKGUuZy4gYD09YCwgYDxgLCBl
dGMpLiAgSWYgdGhlIGNvcnJlc3BvbmRpbmcKK29wZXJhdG9yIGlzIGRlZmluZWQsIHByZWZlciB1
c2luZyB0aGUgYEFTU0VSVF8qKClgIG1hY3JvcyBiZWNhdXNlIHRoZXkgd2lsbAorcHJpbnQgb3V0
IG5vdCBvbmx5IHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24sIGJ1dCB0aGUgdHdvIG9wZXJh
bmRzIGFzIHdlbGwuCisKK0FyZ3VtZW50cyBhcmUgYWx3YXlzIGV2YWx1YXRlZCBleGFjdGx5IG9u
Y2UuIFRoZXJlZm9yZSwgaXQncyBPSyBmb3IgdGhlCithcmd1bWVudHMgdG8gaGF2ZSBzaWRlIGVm
ZmVjdHMuIEhvd2V2ZXIsIGFzIHdpdGggYW55IG9yZGluYXJ5IEMvQysrIGZ1bmN0aW9uLAordGhl
IGFyZ3VtZW50cycgZXZhbHVhdGlvbiBvcmRlciBpcyB1bmRlZmluZWQgKGkuZS4gdGhlIGNvbXBp
bGVyIGlzIGZyZWUgdG8KK2Nob29zZSBhbnkgb3JkZXIpIGFuZCB5b3VyIGNvZGUgc2hvdWxkIG5v
dCBkZXBlbmQgb24gYW55IHBhcnRpY3VsYXIgYXJndW1lbnQKK2V2YWx1YXRpb24gb3JkZXIuCisK
K2BBU1NFUlRfRVEoKWAgZG9lcyBwb2ludGVyIGVxdWFsaXR5IG9uIHBvaW50ZXJzLiBJZiB1c2Vk
IG9uIHR3byBDIHN0cmluZ3MsIGl0Cit0ZXN0cyBpZiB0aGV5IGFyZSBpbiB0aGUgc2FtZSBtZW1v
cnkgbG9jYXRpb24sIG5vdCBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgdmFsdWUuCitUaGVyZWZvcmUs
IGlmIHlvdSB3YW50IHRvIGNvbXBhcmUgQyBzdHJpbmdzIChlLmcuIGBjb25zdCBjaGFyKmApIGJ5
IHZhbHVlLCB1c2UKK2BBU1NFUlRfU1RSRVEoKWAgLCB3aGljaCB3aWxsIGJlIGRlc2NyaWJlZCBs
YXRlciBvbi4gSW4gcGFydGljdWxhciwgdG8gYXNzZXJ0Cit0aGF0IGEgQyBzdHJpbmcgaXMgYE5V
TExgLCB1c2UgYEFTU0VSVF9TVFJFUShOVUxMLCBjX3N0cmluZylgIC4gSG93ZXZlciwgdG8KK2Nv
bXBhcmUgdHdvIGBzdHJpbmdgIG9iamVjdHMsIHlvdSBzaG91bGQgdXNlIGBBU1NFUlRfRVFgLgor
CitNYWNyb3MgaW4gdGhpcyBzZWN0aW9uIHdvcmsgd2l0aCBib3RoIG5hcnJvdyBhbmQgd2lkZSBz
dHJpbmcgb2JqZWN0cyAoYHN0cmluZ2AKK2FuZCBgd3N0cmluZ2ApLgorCitfQXZhaWxhYmlsaXR5
XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworX0hpc3RvcmljYWwgbm90ZV86IEJlZm9yZSBGZWJy
dWFyeSAyMDE2IGAqX0VRYCBoYWQgYSBjb252ZW50aW9uIG9mIGNhbGxpbmcgaXQgYXMKK2BBU1NF
UlRfRVEoZXhwZWN0ZWQsIGFjdHVhbClgLCBzbyBsb3RzIG9mIGV4aXN0aW5nIGNvZGUgdXNlcyB0
aGlzIG9yZGVyLgorTm93IGAqX0VRYCB0cmVhdHMgYm90aCBwYXJhbWV0ZXJzIGluIHRoZSBzYW1l
IHdheS4KKworIyMgU3RyaW5nIENvbXBhcmlzb24gIyMKKworVGhlIGFzc2VydGlvbnMgaW4gdGhp
cyBncm91cCBjb21wYXJlIHR3byAqKkMgc3RyaW5ncyoqLiBJZiB5b3Ugd2FudCB0byBjb21wYXJl
Cit0d28gYHN0cmluZ2Agb2JqZWN0cywgdXNlIGBFWFBFQ1RfRVFgLCBgRVhQRUNUX05FYCwgYW5k
IGV0YyBpbnN0ZWFkLgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2Vy
dGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX1NUUkVRKGBfc3RyMV9g
LCBgX3N0cjJfYCk7YCAgICB8IGBFWFBFQ1RfU1RSRVEoYF9zdHIxX2AsIGBfc3RyXzJgKTtgICAg
ICB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUgdGhlIHNhbWUgY29udGVudCB8Cit8IGBBU1NFUlRf
U1RSTkUoYF9zdHIxX2AsIGBfc3RyMl9gKTtgICAgIHwgYEVYUEVDVF9TVFJORShgX3N0cjFfYCwg
YF9zdHIyX2ApO2AgICAgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSBkaWZmZXJlbnQgY29udGVu
dCB8Cit8IGBBU1NFUlRfU1RSQ0FTRUVRKGBfc3RyMV9gLCBgX3N0cjJfYCk7YHwgYEVYUEVDVF9T
VFJDQVNFRVEoYF9zdHIxX2AsIGBfc3RyMl9gKTtgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSB0
aGUgc2FtZSBjb250ZW50LCBpZ25vcmluZyBjYXNlIHwKK3wgYEFTU0VSVF9TVFJDQVNFTkUoYF9z
dHIxX2AsIGBfc3RyMl9gKTtgfCBgRVhQRUNUX1NUUkNBU0VORShgX3N0cjFfYCwgYF9zdHIyX2Ap
O2AgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIGRpZmZlcmVudCBjb250ZW50LCBpZ25vcmluZyBj
YXNlIHwKKworTm90ZSB0aGF0ICJDQVNFIiBpbiBhbiBhc3NlcnRpb24gbmFtZSBtZWFucyB0aGF0
IGNhc2UgaXMgaWdub3JlZC4KKworYCpTVFJFUSpgIGFuZCBgKlNUUk5FKmAgYWxzbyBhY2NlcHQg
d2lkZSBDIHN0cmluZ3MgKGB3Y2hhcl90KmApLiBJZiBhCitjb21wYXJpc29uIG9mIHR3byB3aWRl
IHN0cmluZ3MgZmFpbHMsIHRoZWlyIHZhbHVlcyB3aWxsIGJlIHByaW50ZWQgYXMgVVRGLTgKK25h
cnJvdyBzdHJpbmdzLgorCitBIGBOVUxMYCBwb2ludGVyIGFuZCBhbiBlbXB0eSBzdHJpbmcgYXJl
IGNvbnNpZGVyZWQgX2RpZmZlcmVudF8uCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjLgorCitTZWUgYWxzbzogRm9yIG1vcmUgc3RyaW5nIGNvbXBhcmlzb24gdHJpY2tzIChz
dWJzdHJpbmcsIHByZWZpeCwgc3VmZml4LCBhbmQKK3JlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGlu
ZywgZm9yIGV4YW1wbGUpLCBzZWUgdGhlIFtBZHZhbmNlZCBHb29nbGUgVGVzdCBHdWlkZV0oQWR2
YW5jZWRHdWlkZS5tZCkuCisKKyMgU2ltcGxlIFRlc3RzICMKKworVG8gY3JlYXRlIGEgdGVzdDoK
KyAgMS4gVXNlIHRoZSBgVEVTVCgpYCBtYWNybyB0byBkZWZpbmUgYW5kIG5hbWUgYSB0ZXN0IGZ1
bmN0aW9uLCBUaGVzZSBhcmUgb3JkaW5hcnkgQysrIGZ1bmN0aW9ucyB0aGF0IGRvbid0IHJldHVy
biBhIHZhbHVlLgorICAxLiBJbiB0aGlzIGZ1bmN0aW9uLCBhbG9uZyB3aXRoIGFueSB2YWxpZCBD
Kysgc3RhdGVtZW50cyB5b3Ugd2FudCB0byBpbmNsdWRlLCB1c2UgdGhlIHZhcmlvdXMgR29vZ2xl
IFRlc3QgYXNzZXJ0aW9ucyB0byBjaGVjayB2YWx1ZXMuCisgIDEuIFRoZSB0ZXN0J3MgcmVzdWx0
IGlzIGRldGVybWluZWQgYnkgdGhlIGFzc2VydGlvbnM7IGlmIGFueSBhc3NlcnRpb24gaW4gdGhl
IHRlc3QgZmFpbHMgKGVpdGhlciBmYXRhbGx5IG9yIG5vbi1mYXRhbGx5KSwgb3IgaWYgdGhlIHRl
c3QgY3Jhc2hlcywgdGhlIGVudGlyZSB0ZXN0IGZhaWxzLiBPdGhlcndpc2UsIGl0IHN1Y2NlZWRz
LgorCitgYGAKK1RFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgeworIC4uLiB0ZXN0IGJv
ZHkgLi4uCit9CitgYGAKKworCitgVEVTVCgpYCBhcmd1bWVudHMgZ28gZnJvbSBnZW5lcmFsIHRv
IHNwZWNpZmljLiBUaGUgX2ZpcnN0XyBhcmd1bWVudCBpcyB0aGUKK25hbWUgb2YgdGhlIHRlc3Qg
Y2FzZSwgYW5kIHRoZSBfc2Vjb25kXyBhcmd1bWVudCBpcyB0aGUgdGVzdCdzIG5hbWUgd2l0aGlu
IHRoZQordGVzdCBjYXNlLiBCb3RoIG5hbWVzIG11c3QgYmUgdmFsaWQgQysrIGlkZW50aWZpZXJz
LCBhbmQgdGhleSBzaG91bGQgbm90IGNvbnRhaW4gdW5kZXJzY29yZSAoYF9gKS4gQSB0ZXN0J3Mg
X2Z1bGwgbmFtZV8gY29uc2lzdHMgb2YgaXRzIGNvbnRhaW5pbmcgdGVzdCBjYXNlIGFuZCBpdHMK
K2luZGl2aWR1YWwgbmFtZS4gVGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcyBjYW4gaGF2
ZSB0aGUgc2FtZSBpbmRpdmlkdWFsCituYW1lLgorCitGb3IgZXhhbXBsZSwgbGV0J3MgdGFrZSBh
IHNpbXBsZSBpbnRlZ2VyIGZ1bmN0aW9uOgorYGBgCitpbnQgRmFjdG9yaWFsKGludCBuKTsgLy8g
UmV0dXJucyB0aGUgZmFjdG9yaWFsIG9mIG4KK2BgYAorCitBIHRlc3QgY2FzZSBmb3IgdGhpcyBm
dW5jdGlvbiBtaWdodCBsb29rIGxpa2U6CitgYGAKKy8vIFRlc3RzIGZhY3RvcmlhbCBvZiAwLgor
VEVTVChGYWN0b3JpYWxUZXN0LCBIYW5kbGVzWmVyb0lucHV0KSB7CisgIEVYUEVDVF9FUSgxLCBG
YWN0b3JpYWwoMCkpOworfQorCisvLyBUZXN0cyBmYWN0b3JpYWwgb2YgcG9zaXRpdmUgbnVtYmVy
cy4KK1RFU1QoRmFjdG9yaWFsVGVzdCwgSGFuZGxlc1Bvc2l0aXZlSW5wdXQpIHsKKyAgRVhQRUNU
X0VRKDEsIEZhY3RvcmlhbCgxKSk7CisgIEVYUEVDVF9FUSgyLCBGYWN0b3JpYWwoMikpOworICBF
WFBFQ1RfRVEoNiwgRmFjdG9yaWFsKDMpKTsKKyAgRVhQRUNUX0VRKDQwMzIwLCBGYWN0b3JpYWwo
OCkpOworfQorYGBgCisKK0dvb2dsZSBUZXN0IGdyb3VwcyB0aGUgdGVzdCByZXN1bHRzIGJ5IHRl
c3QgY2FzZXMsIHNvIGxvZ2ljYWxseS1yZWxhdGVkIHRlc3RzCitzaG91bGQgYmUgaW4gdGhlIHNh
bWUgdGVzdCBjYXNlOyBpbiBvdGhlciB3b3JkcywgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZWly
CitgVEVTVCgpYCBzaG91bGQgYmUgdGhlIHNhbWUuIEluIHRoZSBhYm92ZSBleGFtcGxlLCB3ZSBo
YXZlIHR3byB0ZXN0cywKK2BIYW5kbGVzWmVyb0lucHV0YCBhbmQgYEhhbmRsZXNQb3NpdGl2ZUlu
cHV0YCwgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUgdGVzdAorY2FzZSBgRmFjdG9yaWFsVGVzdGAu
CisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIFRlc3QgRml4dHVy
ZXM6IFVzaW5nIHRoZSBTYW1lIERhdGEgQ29uZmlndXJhdGlvbiBmb3IgTXVsdGlwbGUgVGVzdHMg
IworCitJZiB5b3UgZmluZCB5b3Vyc2VsZiB3cml0aW5nIHR3byBvciBtb3JlIHRlc3RzIHRoYXQg
b3BlcmF0ZSBvbiBzaW1pbGFyIGRhdGEsCit5b3UgY2FuIHVzZSBhIF90ZXN0IGZpeHR1cmVfLiBJ
dCBhbGxvd3MgeW91IHRvIHJldXNlIHRoZSBzYW1lIGNvbmZpZ3VyYXRpb24gb2YKK29iamVjdHMg
Zm9yIHNldmVyYWwgZGlmZmVyZW50IHRlc3RzLgorCitUbyBjcmVhdGUgYSBmaXh0dXJlLCBqdXN0
OgorICAxLiBEZXJpdmUgYSBjbGFzcyBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RgIC4gU3RhcnQgaXRz
IGJvZHkgd2l0aCBgcHJvdGVjdGVkOmAgb3IgYHB1YmxpYzpgIGFzIHdlJ2xsIHdhbnQgdG8gYWNj
ZXNzIGZpeHR1cmUgbWVtYmVycyBmcm9tIHN1Yi1jbGFzc2VzLgorICAxLiBJbnNpZGUgdGhlIGNs
YXNzLCBkZWNsYXJlIGFueSBvYmplY3RzIHlvdSBwbGFuIHRvIHVzZS4KKyAgMS4gSWYgbmVjZXNz
YXJ5LCB3cml0ZSBhIGRlZmF1bHQgY29uc3RydWN0b3Igb3IgYFNldFVwKClgIGZ1bmN0aW9uIHRv
IHByZXBhcmUgdGhlIG9iamVjdHMgZm9yIGVhY2ggdGVzdC4gQSBjb21tb24gbWlzdGFrZSBpcyB0
byBzcGVsbCBgU2V0VXAoKWAgYXMgYFNldHVwKClgIHdpdGggYSBzbWFsbCBgdWAgLSBkb24ndCBs
ZXQgdGhhdCBoYXBwZW4gdG8geW91LgorICAxLiBJZiBuZWNlc3NhcnksIHdyaXRlIGEgZGVzdHJ1
Y3RvciBvciBgVGVhckRvd24oKWAgZnVuY3Rpb24gdG8gcmVsZWFzZSBhbnkgcmVzb3VyY2VzIHlv
dSBhbGxvY2F0ZWQgaW4gYFNldFVwKClgIC4gVG8gbGVhcm4gd2hlbiB5b3Ugc2hvdWxkIHVzZSB0
aGUgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBhbmQgd2hlbiB5b3Ugc2hvdWxkIHVzZSBgU2V0VXAo
KS9UZWFyRG93bigpYCwgcmVhZCB0aGlzIFtGQVEgZW50cnldKEZBUS5tZCNzaG91bGQtaS11c2Ut
dGhlLWNvbnN0cnVjdG9yZGVzdHJ1Y3Rvci1vZi10aGUtdGVzdC1maXh0dXJlLW9yLXRoZS1zZXQt
dXB0ZWFyLWRvd24tZnVuY3Rpb24pLgorICAxLiBJZiBuZWVkZWQsIGRlZmluZSBzdWJyb3V0aW5l
cyBmb3IgeW91ciB0ZXN0cyB0byBzaGFyZS4KKworV2hlbiB1c2luZyBhIGZpeHR1cmUsIHVzZSBg
VEVTVF9GKClgIGluc3RlYWQgb2YgYFRFU1QoKWAgYXMgaXQgYWxsb3dzIHlvdSB0bworYWNjZXNz
IG9iamVjdHMgYW5kIHN1YnJvdXRpbmVzIGluIHRoZSB0ZXN0IGZpeHR1cmU6CitgYGAKK1RFU1Rf
Rih0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSB7CisgLi4uIHRlc3QgYm9keSAuLi4KK30KK2Bg
YAorCitMaWtlIGBURVNUKClgLCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIHRlc3QgY2FzZSBu
YW1lLCBidXQgZm9yIGBURVNUX0YoKWAKK3RoaXMgbXVzdCBiZSB0aGUgbmFtZSBvZiB0aGUgdGVz
dCBmaXh0dXJlIGNsYXNzLiBZb3UndmUgcHJvYmFibHkgZ3Vlc3NlZDogYF9GYAoraXMgZm9yIGZp
eHR1cmUuCisKK1VuZm9ydHVuYXRlbHksIHRoZSBDKysgbWFjcm8gc3lzdGVtIGRvZXMgbm90IGFs
bG93IHVzIHRvIGNyZWF0ZSBhIHNpbmdsZSBtYWNybwordGhhdCBjYW4gaGFuZGxlIGJvdGggdHlw
ZXMgb2YgdGVzdHMuIFVzaW5nIHRoZSB3cm9uZyBtYWNybyBjYXVzZXMgYSBjb21waWxlcgorZXJy
b3IuCisKK0Fsc28sIHlvdSBtdXN0IGZpcnN0IGRlZmluZSBhIHRlc3QgZml4dHVyZSBjbGFzcyBi
ZWZvcmUgdXNpbmcgaXQgaW4gYQorYFRFU1RfRigpYCwgb3IgeW91J2xsIGdldCB0aGUgY29tcGls
ZXIgZXJyb3IgImB2aXJ0dWFsIG91dHNpZGUgY2xhc3MKK2RlY2xhcmF0aW9uYCIuCisKK0ZvciBl
YWNoIHRlc3QgZGVmaW5lZCB3aXRoIGBURVNUX0YoKWAsIEdvb2dsZSBUZXN0IHdpbGw6CisgIDEu
IENyZWF0ZSBhIF9mcmVzaF8gdGVzdCBmaXh0dXJlIGF0IHJ1bnRpbWUKKyAgMS4gSW1tZWRpYXRl
bHkgaW5pdGlhbGl6ZSBpdCB2aWEgYFNldFVwKClgICwKKyAgMS4gUnVuIHRoZSB0ZXN0CisgIDEu
IENsZWFuIHVwIGJ5IGNhbGxpbmcgYFRlYXJEb3duKClgCisgIDEuIERlbGV0ZSB0aGUgdGVzdCBm
aXh0dXJlLiAgTm90ZSB0aGF0IGRpZmZlcmVudCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2Ug
aGF2ZSBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIG9iamVjdHMsIGFuZCBHb29nbGUgVGVzdCBhbHdh
eXMgZGVsZXRlcyBhIHRlc3QgZml4dHVyZSBiZWZvcmUgaXQgY3JlYXRlcyB0aGUgbmV4dCBvbmUu
IEdvb2dsZSBUZXN0IGRvZXMgbm90IHJldXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBmb3IgbXVs
dGlwbGUgdGVzdHMuIEFueSBjaGFuZ2VzIG9uZSB0ZXN0IG1ha2VzIHRvIHRoZSBmaXh0dXJlIGRv
IG5vdCBhZmZlY3Qgb3RoZXIgdGVzdHMuCisKK0FzIGFuIGV4YW1wbGUsIGxldCdzIHdyaXRlIHRl
c3RzIGZvciBhIEZJRk8gcXVldWUgY2xhc3MgbmFtZWQgYFF1ZXVlYCwgd2hpY2gKK2hhcyB0aGUg
Zm9sbG93aW5nIGludGVyZmFjZToKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIEU+IC8vIEUgaXMg
dGhlIGVsZW1lbnQgdHlwZS4KK2NsYXNzIFF1ZXVlIHsKKyBwdWJsaWM6CisgIFF1ZXVlKCk7Cisg
IHZvaWQgRW5xdWV1ZShjb25zdCBFJiBlbGVtZW50KTsKKyAgRSogRGVxdWV1ZSgpOyAvLyBSZXR1
cm5zIE5VTEwgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LgorICBzaXplX3Qgc2l6ZSgpIGNvbnN0Owor
ICAuLi4KK307CitgYGAKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MuIEJ5IGNvbnZl
bnRpb24sIHlvdSBzaG91bGQgZ2l2ZSBpdCB0aGUgbmFtZQorYEZvb1Rlc3RgIHdoZXJlIGBGb29g
IGlzIHRoZSBjbGFzcyBiZWluZyB0ZXN0ZWQuCitgYGAKK2NsYXNzIFF1ZXVlVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkg
eworICAgIHExXy5FbnF1ZXVlKDEpOworICAgIHEyXy5FbnF1ZXVlKDIpOworICAgIHEyXy5FbnF1
ZXVlKDMpOworICB9CisKKyAgLy8gdmlydHVhbCB2b2lkIFRlYXJEb3duKCkge30KKworICBRdWV1
ZTxpbnQ+IHEwXzsKKyAgUXVldWU8aW50PiBxMV87CisgIFF1ZXVlPGludD4gcTJfOworfTsKK2Bg
YAorCitJbiB0aGlzIGNhc2UsIGBUZWFyRG93bigpYCBpcyBub3QgbmVlZGVkIHNpbmNlIHdlIGRv
bid0IGhhdmUgdG8gY2xlYW4gdXAgYWZ0ZXIKK2VhY2ggdGVzdCwgb3RoZXIgdGhhbiB3aGF0J3Mg
YWxyZWFkeSBkb25lIGJ5IHRoZSBkZXN0cnVjdG9yLgorCitOb3cgd2UnbGwgd3JpdGUgdGVzdHMg
dXNpbmcgYFRFU1RfRigpYCBhbmQgdGhpcyBmaXh0dXJlLgorYGBgCitURVNUX0YoUXVldWVUZXN0
LCBJc0VtcHR5SW5pdGlhbGx5KSB7CisgIEVYUEVDVF9FUSgwLCBxMF8uc2l6ZSgpKTsKK30KKwor
VEVTVF9GKFF1ZXVlVGVzdCwgRGVxdWV1ZVdvcmtzKSB7CisgIGludCogbiA9IHEwXy5EZXF1ZXVl
KCk7CisgIEVYUEVDVF9FUShOVUxMLCBuKTsKKworICBuID0gcTFfLkRlcXVldWUoKTsKKyAgQVNT
RVJUX1RSVUUobiAhPSBOVUxMKTsKKyAgRVhQRUNUX0VRKDEsICpuKTsKKyAgRVhQRUNUX0VRKDAs
IHExXy5zaXplKCkpOworICBkZWxldGUgbjsKKworICBuID0gcTJfLkRlcXVldWUoKTsKKyAgQVNT
RVJUX1RSVUUobiAhPSBOVUxMKTsKKyAgRVhQRUNUX0VRKDIsICpuKTsKKyAgRVhQRUNUX0VRKDEs
IHEyXy5zaXplKCkpOworICBkZWxldGUgbjsKK30KK2BgYAorCitUaGUgYWJvdmUgdXNlcyBib3Ro
IGBBU1NFUlRfKmAgYW5kIGBFWFBFQ1RfKmAgYXNzZXJ0aW9ucy4gVGhlIHJ1bGUgb2YgdGh1bWIg
aXMKK3RvIHVzZSBgRVhQRUNUXypgIHdoZW4geW91IHdhbnQgdGhlIHRlc3QgdG8gY29udGludWUg
dG8gcmV2ZWFsIG1vcmUgZXJyb3JzCithZnRlciB0aGUgYXNzZXJ0aW9uIGZhaWx1cmUsIGFuZCB1
c2UgYEFTU0VSVF8qYCB3aGVuIGNvbnRpbnVpbmcgYWZ0ZXIgZmFpbHVyZQorZG9lc24ndCBtYWtl
IHNlbnNlLiBGb3IgZXhhbXBsZSwgdGhlIHNlY29uZCBhc3NlcnRpb24gaW4gdGhlIGBEZXF1ZXVl
YCB0ZXN0IGlzCitgQVNTRVJUX1RSVUUobiAhPSBOVUxMKWAsIGFzIHdlIG5lZWQgdG8gZGVyZWZl
cmVuY2UgdGhlIHBvaW50ZXIgYG5gIGxhdGVyLAord2hpY2ggd291bGQgbGVhZCB0byBhIHNlZ2Zh
dWx0IHdoZW4gYG5gIGlzIGBOVUxMYC4KKworV2hlbiB0aGVzZSB0ZXN0cyBydW4sIHRoZSBmb2xs
b3dpbmcgaGFwcGVuczoKKyAgMS4gR29vZ2xlIFRlc3QgY29uc3RydWN0cyBhIGBRdWV1ZVRlc3Rg
IG9iamVjdCAobGV0J3MgY2FsbCBpdCBgdDFgICkuCisgIDEuIGB0MS5TZXRVcCgpYCBpbml0aWFs
aXplcyBgdDFgIC4KKyAgMS4gVGhlIGZpcnN0IHRlc3QgKCBgSXNFbXB0eUluaXRpYWxseWAgKSBy
dW5zIG9uIGB0MWAgLgorICAxLiBgdDEuVGVhckRvd24oKWAgY2xlYW5zIHVwIGFmdGVyIHRoZSB0
ZXN0IGZpbmlzaGVzLgorICAxLiBgdDFgIGlzIGRlc3RydWN0ZWQuCisgIDEuIFRoZSBhYm92ZSBz
dGVwcyBhcmUgcmVwZWF0ZWQgb24gYW5vdGhlciBgUXVldWVUZXN0YCBvYmplY3QsIHRoaXMgdGlt
ZSBydW5uaW5nIHRoZSBgRGVxdWV1ZVdvcmtzYCB0ZXN0LgorCitfQXZhaWxhYmlsaXR5XzogTGlu
dXgsIFdpbmRvd3MsIE1hYy4KKworX05vdGVfOiBHb29nbGUgVGVzdCBhdXRvbWF0aWNhbGx5IHNh
dmVzIGFsbCBfR29vZ2xlIFRlc3RfIGZsYWdzIHdoZW4gYSB0ZXN0CitvYmplY3QgaXMgY29uc3Ry
dWN0ZWQsIGFuZCByZXN0b3JlcyB0aGVtIHdoZW4gaXQgaXMgZGVzdHJ1Y3RlZC4KKworIyBJbnZv
a2luZyB0aGUgVGVzdHMgIworCitgVEVTVCgpYCBhbmQgYFRFU1RfRigpYCBpbXBsaWNpdGx5IHJl
Z2lzdGVyIHRoZWlyIHRlc3RzIHdpdGggR29vZ2xlIFRlc3QuIFNvLCB1bmxpa2Ugd2l0aCBtYW55
IG90aGVyIEMrKyB0ZXN0aW5nIGZyYW1ld29ya3MsIHlvdSBkb24ndCBoYXZlIHRvIHJlLWxpc3Qg
YWxsIHlvdXIgZGVmaW5lZCB0ZXN0cyBpbiBvcmRlciB0byBydW4gdGhlbS4KKworQWZ0ZXIgZGVm
aW5pbmcgeW91ciB0ZXN0cywgeW91IGNhbiBydW4gdGhlbSB3aXRoIGBSVU5fQUxMX1RFU1RTKClg
ICwgd2hpY2ggcmV0dXJucyBgMGAgaWYgYWxsIHRoZSB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3Ig
YDFgIG90aGVyd2lzZS4gTm90ZSB0aGF0IGBSVU5fQUxMX1RFU1RTKClgIHJ1bnMgX2FsbCB0ZXN0
c18gaW4geW91ciBsaW5rIHVuaXQgLS0gdGhleSBjYW4gYmUgZnJvbSBkaWZmZXJlbnQgdGVzdCBj
YXNlcywgb3IgZXZlbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgorCitXaGVuIGludm9rZWQsIHRo
ZSBgUlVOX0FMTF9URVNUUygpYCBtYWNybzoKKyAgMS4gU2F2ZXMgdGhlIHN0YXRlIG9mIGFsbCAg
R29vZ2xlIFRlc3QgZmxhZ3MuCisgIDEuIENyZWF0ZXMgYSB0ZXN0IGZpeHR1cmUgb2JqZWN0IGZv
ciB0aGUgZmlyc3QgdGVzdC4KKyAgMS4gSW5pdGlhbGl6ZXMgaXQgdmlhIGBTZXRVcCgpYC4KKyAg
MS4gUnVucyB0aGUgdGVzdCBvbiB0aGUgZml4dHVyZSBvYmplY3QuCisgIDEuIENsZWFucyB1cCB0
aGUgZml4dHVyZSB2aWEgYFRlYXJEb3duKClgLgorICAxLiBEZWxldGVzIHRoZSBmaXh0dXJlLgor
ICAxLiBSZXN0b3JlcyB0aGUgc3RhdGUgb2YgYWxsIEdvb2dsZSBUZXN0IGZsYWdzLgorICAxLiBS
ZXBlYXRzIHRoZSBhYm92ZSBzdGVwcyBmb3IgdGhlIG5leHQgdGVzdCwgdW50aWwgYWxsIHRlc3Rz
IGhhdmUgcnVuLgorCitJbiBhZGRpdGlvbiwgaWYgdGhlIHRleHQgZml4dHVyZSdzIGNvbnN0cnVj
dG9yIGdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUgaW4KK3N0ZXAgMiwgdGhlcmUgaXMgbm8gcG9p
bnQgZm9yIHN0ZXAgMyAtIDUgYW5kIHRoZXkgYXJlIHRodXMgc2tpcHBlZC4gU2ltaWxhcmx5LAor
aWYgc3RlcCAzIGdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUsIHN0ZXAgNCB3aWxsIGJlIHNraXBw
ZWQuCisKK19JbXBvcnRhbnRfOiBZb3UgbXVzdCBub3QgaWdub3JlIHRoZSByZXR1cm4gdmFsdWUg
b2YgYFJVTl9BTExfVEVTVFMoKWAsIG9yIGBnY2NgCit3aWxsIGdpdmUgeW91IGEgY29tcGlsZXIg
ZXJyb3IuIFRoZSByYXRpb25hbGUgZm9yIHRoaXMgZGVzaWduIGlzIHRoYXQgdGhlCithdXRvbWF0
ZWQgdGVzdGluZyBzZXJ2aWNlIGRldGVybWluZXMgd2hldGhlciBhIHRlc3QgaGFzIHBhc3NlZCBi
YXNlZCBvbiBpdHMKK2V4aXQgY29kZSwgbm90IG9uIGl0cyBzdGRvdXQvc3RkZXJyIG91dHB1dDsg
dGh1cyB5b3VyIGBtYWluKClgIGZ1bmN0aW9uIG11c3QKK3JldHVybiB0aGUgdmFsdWUgb2YgYFJV
Tl9BTExfVEVTVFMoKWAuCisKK0Fsc28sIHlvdSBzaG91bGQgY2FsbCBgUlVOX0FMTF9URVNUUygp
YCBvbmx5ICoqb25jZSoqLiBDYWxsaW5nIGl0IG1vcmUgdGhhbiBvbmNlCitjb25mbGljdHMgd2l0
aCBzb21lIGFkdmFuY2VkIEdvb2dsZSBUZXN0IGZlYXR1cmVzIChlLmcuIHRocmVhZC1zYWZlIGRl
YXRoCit0ZXN0cykgYW5kIHRodXMgaXMgbm90IHN1cHBvcnRlZC4KKworX0F2YWlsYWJpbGl0eV86
IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMgV3JpdGluZyB0aGUgbWFpbigpIEZ1bmN0aW9uICMK
KworWW91IGNhbiBzdGFydCBmcm9tIHRoaXMgYm9pbGVycGxhdGU6CitgYGAKKyNpbmNsdWRlICJ0
aGlzL3BhY2thZ2UvZm9vLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNl
IHsKKworLy8gVGhlIGZpeHR1cmUgZm9yIHRlc3RpbmcgY2xhc3MgRm9vLgorY2xhc3MgRm9vVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLy8gWW91IGNhbiBy
ZW1vdmUgYW55IG9yIGFsbCBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBpZiBpdHMgYm9keQor
ICAvLyBpcyBlbXB0eS4KKworICBGb29UZXN0KCkgeworICAgIC8vIFlvdSBjYW4gZG8gc2V0LXVw
IHdvcmsgZm9yIGVhY2ggdGVzdCBoZXJlLgorICB9CisKKyAgdmlydHVhbCB+Rm9vVGVzdCgpIHsK
KyAgICAvLyBZb3UgY2FuIGRvIGNsZWFuLXVwIHdvcmsgdGhhdCBkb2Vzbid0IHRocm93IGV4Y2Vw
dGlvbnMgaGVyZS4KKyAgfQorCisgIC8vIElmIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3Rv
ciBhcmUgbm90IGVub3VnaCBmb3Igc2V0dGluZyB1cAorICAvLyBhbmQgY2xlYW5pbmcgdXAgZWFj
aCB0ZXN0LCB5b3UgY2FuIGRlZmluZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CisKKyAgdmlydHVh
bCB2b2lkIFNldFVwKCkgeworICAgIC8vIENvZGUgaGVyZSB3aWxsIGJlIGNhbGxlZCBpbW1lZGlh
dGVseSBhZnRlciB0aGUgY29uc3RydWN0b3IgKHJpZ2h0CisgICAgLy8gYmVmb3JlIGVhY2ggdGVz
dCkuCisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgLy8gQ29kZSBoZXJl
IHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIGVhY2ggdGVzdCAocmlnaHQKKyAgICAv
LyBiZWZvcmUgdGhlIGRlc3RydWN0b3IpLgorICB9CisKKyAgLy8gT2JqZWN0cyBkZWNsYXJlZCBo
ZXJlIGNhbiBiZSB1c2VkIGJ5IGFsbCB0ZXN0cyBpbiB0aGUgdGVzdCBjYXNlIGZvciBGb28uCit9
OworCisvLyBUZXN0cyB0aGF0IHRoZSBGb286OkJhcigpIG1ldGhvZCBkb2VzIEFiYy4KK1RFU1Rf
RihGb29UZXN0LCBNZXRob2RCYXJEb2VzQWJjKSB7CisgIGNvbnN0IHN0cmluZyBpbnB1dF9maWxl
cGF0aCA9ICJ0aGlzL3BhY2thZ2UvdGVzdGRhdGEvbXlpbnB1dGZpbGUuZGF0IjsKKyAgY29uc3Qg
c3RyaW5nIG91dHB1dF9maWxlcGF0aCA9ICJ0aGlzL3BhY2thZ2UvdGVzdGRhdGEvbXlvdXRwdXRm
aWxlLmRhdCI7CisgIEZvbyBmOworICBFWFBFQ1RfRVEoMCwgZi5CYXIoaW5wdXRfZmlsZXBhdGgs
IG91dHB1dF9maWxlcGF0aCkpOworfQorCisvLyBUZXN0cyB0aGF0IEZvbyBkb2VzIFh5ei4KK1RF
U1RfRihGb29UZXN0LCBEb2VzWHl6KSB7CisgIC8vIEV4ZXJjaXNlcyB0aGUgWHl6IGZlYXR1cmUg
b2YgRm9vLgorfQorCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg
Kiphcmd2KSB7CisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICBy
ZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQorYGBgCisKK1RoZSBgOjp0ZXN0aW5nOjpJbml0R29v
Z2xlVGVzdCgpYCBmdW5jdGlvbiBwYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IgR29vZ2xlCitU
ZXN0IGZsYWdzLCBhbmQgcmVtb3ZlcyBhbGwgcmVjb2duaXplZCBmbGFncy4gVGhpcyBhbGxvd3Mg
dGhlIHVzZXIgdG8gY29udHJvbCBhCit0ZXN0IHByb2dyYW0ncyBiZWhhdmlvciB2aWEgdmFyaW91
cyBmbGFncywgd2hpY2ggd2UnbGwgY292ZXIgaW4gW0FkdmFuY2VkR3VpZGVdKEFkdmFuY2VkR3Vp
ZGUubWQpLgorWW91IG11c3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGJlZm9yZSBjYWxsaW5nIGBSVU5f
QUxMX1RFU1RTKClgLCBvciB0aGUgZmxhZ3MKK3dvbid0IGJlIHByb3Blcmx5IGluaXRpYWxpemVk
LgorCitPbiBXaW5kb3dzLCBgSW5pdEdvb2dsZVRlc3QoKWAgYWxzbyB3b3JrcyB3aXRoIHdpZGUg
c3RyaW5ncywgc28gaXQgY2FuIGJlIHVzZWQKK2luIHByb2dyYW1zIGNvbXBpbGVkIGluIGBVTklD
T0RFYCBtb2RlIGFzIHdlbGwuCisKK0J1dCBtYXliZSB5b3UgdGhpbmsgdGhhdCB3cml0aW5nIGFs
bCB0aG9zZSBtYWluKCkgZnVuY3Rpb25zIGlzIHRvbyBtdWNoIHdvcms/IFdlIGFncmVlIHdpdGgg
eW91IGNvbXBsZXRlbHkgYW5kIHRoYXQncyB3aHkgR29vZ2xlIFRlc3QgcHJvdmlkZXMgYSBiYXNp
YyBpbXBsZW1lbnRhdGlvbiBvZiBtYWluKCkuIElmIGl0IGZpdHMgeW91ciBuZWVkcywgdGhlbiBq
dXN0IGxpbmsgeW91ciB0ZXN0IHdpdGggZ3Rlc3RcX21haW4gbGlicmFyeSBhbmQgeW91IGFyZSBn
b29kIHRvIGdvLgorCisjIyBJbXBvcnRhbnQgbm90ZSBmb3IgVmlzdWFsIEMrKyB1c2VycyAjIwor
SWYgeW91IHB1dCB5b3VyIHRlc3RzIGludG8gYSBsaWJyYXJ5IGFuZCB5b3VyIGBtYWluKClgIGZ1
bmN0aW9uIGlzIGluIGEgZGlmZmVyZW50IGxpYnJhcnkgb3IgaW4geW91ciAuZXhlIGZpbGUsIHRo
b3NlIHRlc3RzIHdpbGwgbm90IHJ1bi4gVGhlIHJlYXNvbiBpcyBhIFtidWddKGh0dHBzOi8vY29u
bmVjdC5taWNyb3NvZnQuY29tL2ZlZWRiYWNrL3ZpZXdmZWVkYmFjay5hc3B4P0ZlZWRiYWNrSUQ9
MjQ0NDEwJnNpdGVpZD0yMTApIGluIFZpc3VhbCBDKysuIFdoZW4geW91IGRlZmluZSB5b3VyIHRl
c3RzLCBHb29nbGUgVGVzdCBjcmVhdGVzIGNlcnRhaW4gc3RhdGljIG9iamVjdHMgdG8gcmVnaXN0
ZXIgdGhlbS4gVGhlc2Ugb2JqZWN0cyBhcmUgbm90IHJlZmVyZW5jZWQgZnJvbSBlbHNld2hlcmUg
YnV0IHRoZWlyIGNvbnN0cnVjdG9ycyBhcmUgc3RpbGwgc3VwcG9zZWQgdG8gcnVuLiBXaGVuIFZp
c3VhbCBDKysgbGlua2VyIHNlZXMgdGhhdCBub3RoaW5nIGluIHRoZSBsaWJyYXJ5IGlzIHJlZmVy
ZW5jZWQgZnJvbSBvdGhlciBwbGFjZXMgaXQgdGhyb3dzIHRoZSBsaWJyYXJ5IG91dC4gWW91IGhh
dmUgdG8gcmVmZXJlbmNlIHlvdXIgbGlicmFyeSB3aXRoIHRlc3RzIGZyb20geW91ciBtYWluIHBy
b2dyYW0gdG8ga2VlcCB0aGUgbGlua2VyIGZyb20gZGlzY2FyZGluZyBpdC4gSGVyZSBpcyBob3cg
dG8gZG8gaXQuIFNvbWV3aGVyZSBpbiB5b3VyIGxpYnJhcnkgY29kZSBkZWNsYXJlIGEgZnVuY3Rp
b246CitgYGAKK19fZGVjbHNwZWMoZGxsZXhwb3J0KSBpbnQgUHVsbEluTXlMaWJyYXJ5KCkgeyBy
ZXR1cm4gMDsgfQorYGBgCitJZiB5b3UgcHV0IHlvdXIgdGVzdHMgaW4gYSBzdGF0aWMgbGlicmFy
eSAobm90IERMTCkgdGhlbiBgX19kZWNsc3BlYyhkbGxleHBvcnQpYCBpcyBub3QgcmVxdWlyZWQu
IE5vdywgaW4geW91ciBtYWluIHByb2dyYW0sIHdyaXRlIGEgY29kZSB0aGF0IGludm9rZXMgdGhh
dCBmdW5jdGlvbjoKK2BgYAoraW50IFB1bGxJbk15TGlicmFyeSgpOworc3RhdGljIGludCBkdW1t
eSA9IFB1bGxJbk15TGlicmFyeSgpOworYGBgCitUaGlzIHdpbGwga2VlcCB5b3VyIHRlc3RzIHJl
ZmVyZW5jZWQgYW5kIHdpbGwgbWFrZSB0aGVtIHJlZ2lzdGVyIHRoZW1zZWx2ZXMgYXQgc3RhcnR1
cC4KKworSW4gYWRkaXRpb24sIGlmIHlvdSBkZWZpbmUgeW91ciB0ZXN0cyBpbiBhIHN0YXRpYyBs
aWJyYXJ5LCBhZGQgYC9PUFQ6Tk9SRUZgIHRvIHlvdXIgbWFpbiBwcm9ncmFtIGxpbmtlciBvcHRp
b25zLiBJZiB5b3UgdXNlIE1TVkMrKyBJREUsIGdvIHRvIHlvdXIgLmV4ZSBwcm9qZWN0IHByb3Bl
cnRpZXMvQ29uZmlndXJhdGlvbiBQcm9wZXJ0aWVzL0xpbmtlci9PcHRpbWl6YXRpb24gYW5kIHNl
dCBSZWZlcmVuY2VzIHNldHRpbmcgdG8gYEtlZXAgVW5yZWZlcmVuY2VkIERhdGEgKC9PUFQ6Tk9S
RUYpYC4gVGhpcyB3aWxsIGtlZXAgVmlzdWFsIEMrKyBsaW5rZXIgZnJvbSBkaXNjYXJkaW5nIGlu
ZGl2aWR1YWwgc3ltYm9scyBnZW5lcmF0ZWQgYnkgeW91ciB0ZXN0cyBmcm9tIHRoZSBmaW5hbCBl
eGVjdXRhYmxlLgorCitUaGVyZSBpcyBvbmUgbW9yZSBwaXRmYWxsLCB0aG91Z2guIElmIHlvdSB1
c2UgR29vZ2xlIFRlc3QgYXMgYSBzdGF0aWMgbGlicmFyeSAodGhhdCdzIGhvdyBpdCBpcyBkZWZp
bmVkIGluIGd0ZXN0LnZjcHJvaikgeW91ciB0ZXN0cyBtdXN0IGFsc28gcmVzaWRlIGluIGEgc3Rh
dGljIGxpYnJhcnkuIElmIHlvdSBoYXZlIHRvIGhhdmUgdGhlbSBpbiBhIERMTCwgeW91IF9tdXN0
XyBjaGFuZ2UgR29vZ2xlIFRlc3QgdG8gYnVpbGQgaW50byBhIERMTCBhcyB3ZWxsLiBPdGhlcndp
c2UgeW91ciB0ZXN0cyB3aWxsIG5vdCBydW4gY29ycmVjdGx5IG9yIHdpbGwgbm90IHJ1biBhdCBh
bGwuIFRoZSBnZW5lcmFsIGNvbmNsdXNpb24gaGVyZSBpczogbWFrZSB5b3VyIGxpZmUgZWFzaWVy
IC0gZG8gbm90IHdyaXRlIHlvdXIgdGVzdHMgaW4gbGlicmFyaWVzIQorCisjIFdoZXJlIHRvIEdv
IGZyb20gSGVyZSAjCisKK0NvbmdyYXR1bGF0aW9ucyEgWW91J3ZlIGxlYXJuZWQgdGhlIEdvb2ds
ZSBUZXN0IGJhc2ljcy4gWW91IGNhbiBzdGFydCB3cml0aW5nCithbmQgcnVubmluZyBHb29nbGUg
VGVzdCB0ZXN0cywgcmVhZCBzb21lIFtzYW1wbGVzXShTYW1wbGVzLm1kKSwgb3IgY29udGludWUg
d2l0aAorW0FkdmFuY2VkR3VpZGVdKEFkdmFuY2VkR3VpZGUubWQpLCB3aGljaCBkZXNjcmliZXMg
bWFueSBtb3JlIHVzZWZ1bCBHb29nbGUgVGVzdCBmZWF0dXJlcy4KKworIyBLbm93biBMaW1pdGF0
aW9ucyAjCisKK0dvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHRvIGJlIHRocmVhZC1zYWZlLiAgVGhl
IGltcGxlbWVudGF0aW9uIGlzCit0aHJlYWQtc2FmZSBvbiBzeXN0ZW1zIHdoZXJlIHRoZSBgcHRo
cmVhZHNgIGxpYnJhcnkgaXMgYXZhaWxhYmxlLiAgSXQKK2lzIGN1cnJlbnRseSBfdW5zYWZlXyB0
byB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBmcm9tIHR3byB0aHJlYWRzCitjb25jdXJyZW50
bHkgb24gb3RoZXIgc3lzdGVtcyAoZS5nLiBXaW5kb3dzKS4gIEluIG1vc3QgdGVzdHMgdGhpcyBp
cworbm90IGFuIGlzc3VlIGFzIHVzdWFsbHkgdGhlIGFzc2VydGlvbnMgYXJlIGRvbmUgaW4gdGhl
IG1haW4gdGhyZWFkLiBJZgoreW91IHdhbnQgdG8gaGVscCwgeW91IGNhbiB2b2x1bnRlZXIgdG8g
aW1wbGVtZW50IHRoZSBuZWNlc3NhcnkKK3N5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGluIGBn
dGVzdC1wb3J0LmhgIGZvciB5b3VyIHBsYXRmb3JtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvZG9jcy9QdW1wTWFudWFsLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
ZG9jcy9QdW1wTWFudWFsLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxODRmMTUzY2EyZWNhZDdjNjVjYjU4YzI3
ZmIzMWJkNzIzNzVmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9kb2NzL1B1bXBNYW51YWwubWQKQEAgLTAsMCArMSwxNzcgQEAKKworCis8Yj5QPC9iPnVtcCBp
cyA8Yj5VPC9iPnNlZnVsIGZvciA8Yj5NPC9iPmV0YSA8Yj5QPC9iPnJvZ3JhbW1pbmcuCisKKyMg
VGhlIFByb2JsZW0gIworCitUZW1wbGF0ZSBhbmQgbWFjcm8gbGlicmFyaWVzIG9mdGVuIG5lZWQg
dG8gZGVmaW5lIG1hbnkgY2xhc3NlcywKK2Z1bmN0aW9ucywgb3IgbWFjcm9zIHRoYXQgdmFyeSBv
bmx5IChvciBhbG1vc3Qgb25seSkgaW4gdGhlIG51bWJlciBvZgorYXJndW1lbnRzIHRoZXkgdGFr
ZS4gSXQncyBhIGxvdCBvZiByZXBldGl0aXZlLCBtZWNoYW5pY2FsLCBhbmQKK2Vycm9yLXByb25l
IHdvcmsuCisKK1ZhcmlhZGljIHRlbXBsYXRlcyBhbmQgdmFyaWFkaWMgbWFjcm9zIGNhbiBhbGxl
dmlhdGUgdGhlIHByb2JsZW0uCitIb3dldmVyLCB3aGlsZSBib3RoIGFyZSBiZWluZyBjb25zaWRl
cmVkIGJ5IHRoZSBDKysgY29tbWl0dGVlLCBuZWl0aGVyCitpcyBpbiB0aGUgc3RhbmRhcmQgeWV0
IG9yIHdpZGVseSBzdXBwb3J0ZWQgYnkgY29tcGlsZXJzLiAgVGh1cyB0aGV5CithcmUgb2Z0ZW4g
bm90IGEgZ29vZCBjaG9pY2UsIGVzcGVjaWFsbHkgd2hlbiB5b3VyIGNvZGUgbmVlZHMgdG8gYmUK
K3BvcnRhYmxlLiBBbmQgdGhlaXIgY2FwYWJpbGl0aWVzIGFyZSBzdGlsbCBsaW1pdGVkLgorCitB
cyBhIHJlc3VsdCwgYXV0aG9ycyBvZiBzdWNoIGxpYnJhcmllcyBvZnRlbiBoYXZlIHRvIHdyaXRl
IHNjcmlwdHMgdG8KK2dlbmVyYXRlIHRoZWlyIGltcGxlbWVudGF0aW9uLiBIb3dldmVyLCBvdXIg
ZXhwZXJpZW5jZSBpcyB0aGF0IGl0J3MKK3RlZGlvdXMgdG8gd3JpdGUgc3VjaCBzY3JpcHRzLCB3
aGljaCB0ZW5kIHRvIHJlZmxlY3QgdGhlIHN0cnVjdHVyZSBvZgordGhlIGdlbmVyYXRlZCBjb2Rl
IHBvb3JseSBhbmQgYXJlIG9mdGVuIGhhcmQgdG8gcmVhZCBhbmQgZWRpdC4gRm9yCitleGFtcGxl
LCBhIHNtYWxsIGNoYW5nZSBuZWVkZWQgaW4gdGhlIGdlbmVyYXRlZCBjb2RlIG1heSByZXF1aXJl
IHNvbWUKK25vbi1pbnR1aXRpdmUsIG5vbi10cml2aWFsIGNoYW5nZXMgaW4gdGhlIHNjcmlwdC4g
VGhpcyBpcyBlc3BlY2lhbGx5CitwYWluZnVsIHdoZW4gZXhwZXJpbWVudGluZyB3aXRoIHRoZSBj
b2RlLgorCisjIE91ciBTb2x1dGlvbiAjCisKK1B1bXAgKGZvciBQdW1wIGlzIFVzZWZ1bCBmb3Ig
TWV0YSBQcm9ncmFtbWluZywgUHJldHR5IFVzZWZ1bCBmb3IgTWV0YQorUHJvZ3JhbW1pbmcsIG9y
IFByYWN0aWNhbCBVdGlsaXR5IGZvciBNZXRhIFByb2dyYW1taW5nLCB3aGljaGV2ZXIgeW91Citw
cmVmZXIpIGlzIGEgc2ltcGxlIG1ldGEtcHJvZ3JhbW1pbmcgdG9vbCBmb3IgQysrLiBUaGUgaWRl
YSBpcyB0aGF0IGEKK3Byb2dyYW1tZXIgd3JpdGVzIGEgYGZvby5wdW1wYCBmaWxlIHdoaWNoIGNv
bnRhaW5zIEMrKyBjb2RlIHBsdXMgbWV0YQorY29kZSB0aGF0IG1hbmlwdWxhdGVzIHRoZSBDKysg
Y29kZS4gVGhlIG1ldGEgY29kZSBjYW4gaGFuZGxlCitpdGVyYXRpb25zIG92ZXIgYSByYW5nZSwg
bmVzdGVkIGl0ZXJhdGlvbnMsIGxvY2FsIG1ldGEgdmFyaWFibGUKK2RlZmluaXRpb25zLCBzaW1w
bGUgYXJpdGhtZXRpYywgYW5kIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zLiBZb3UgY2FuCit2aWV3
IGl0IGFzIGEgc21hbGwgRG9tYWluLVNwZWNpZmljIExhbmd1YWdlLiBUaGUgbWV0YSBsYW5ndWFn
ZSBpcworZGVzaWduZWQgdG8gYmUgbm9uLWludHJ1c2l2ZSAocy50LiBpdCB3b24ndCBjb25mdXNl
IEVtYWNzJyBDKysgbW9kZSwKK2ZvciBleGFtcGxlKSBhbmQgY29uY2lzZSwgbWFraW5nIFB1bXAg
Y29kZSBpbnR1aXRpdmUgYW5kIGVhc3kgdG8KK21haW50YWluLgorCisjIyBIaWdobGlnaHRzICMj
CisKKyAgKiBUaGUgaW1wbGVtZW50YXRpb24gaXMgaW4gYSBzaW5nbGUgUHl0aG9uIHNjcmlwdCBh
bmQgdGh1cyB1bHRyYSBwb3J0YWJsZTogbm8gYnVpbGQgb3IgaW5zdGFsbGF0aW9uIGlzIG5lZWRl
ZCBhbmQgaXQgd29ya3MgY3Jvc3MgcGxhdGZvcm1zLgorICAqIFB1bXAgdHJpZXMgdG8gYmUgc21h
cnQgd2l0aCByZXNwZWN0IHRvIFtHb29nbGUncyBzdHlsZSBndWlkZV0oaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wL2dvb2dsZS1zdHlsZWd1aWRlLyk6IGl0IGJyZWFrcyBsb25nIGxpbmVzIChlYXN5
IHRvIGhhdmUgd2hlbiB0aGV5IGFyZSBnZW5lcmF0ZWQpIGF0IGFjY2VwdGFibGUgcGxhY2VzIHRv
IGZpdCB3aXRoaW4gODAgY29sdW1ucyBhbmQgaW5kZW50IHRoZSBjb250aW51YXRpb24gbGluZXMg
Y29ycmVjdGx5LgorICAqIFRoZSBmb3JtYXQgaXMgaHVtYW4tcmVhZGFibGUgYW5kIG1vcmUgY29u
Y2lzZSB0aGFuIFhNTC4KKyAgKiBUaGUgZm9ybWF0IHdvcmtzIHJlbGF0aXZlbHkgd2VsbCB3aXRo
IEVtYWNzJyBDKysgbW9kZS4KKworIyMgRXhhbXBsZXMgIyMKKworVGhlIGZvbGxvd2luZyBQdW1w
IGNvZGUgKHdoZXJlIG1ldGEga2V5d29yZHMgc3RhcnQgd2l0aCBgJGAsIGBbW2AgYW5kIGBdXWAg
YXJlIG1ldGEgYnJhY2tldHMsIGFuZCBgJCRgIHN0YXJ0cyBhIG1ldGEgY29tbWVudCB0aGF0IGVu
ZHMgd2l0aCB0aGUgbGluZSk6CisKK2BgYAorJHZhciBuID0gMyAgICAgJCQgRGVmaW5lcyBhIG1l
dGEgdmFyaWFibGUgbi4KKyRyYW5nZSBpIDAuLm4gICQkIERlY2xhcmVzIHRoZSByYW5nZSBvZiBt
ZXRhIGl0ZXJhdG9yIGkgKGluY2x1c2l2ZSkuCiskZm9yIGkgW1sKKyAgICAgICAgICAgICAgICQk
IE1ldGEgbG9vcC4KKy8vIEZvbyRpIGRvZXMgYmxhaCBmb3IgJGktYXJ5IHByZWRpY2F0ZXMuCisk
cmFuZ2UgaiAxLi5pCit0ZW1wbGF0ZSA8c2l6ZV90IE4gJGZvciBqIFtbLCB0eXBlbmFtZSBBJGpd
XT4KK2NsYXNzIEZvbyRpIHsKKyRpZiBpID09IDAgW1sKKyAgYmxhaCBhOworXV0gJGVsaWYgaSA8
PSAyIFtbCisgIGJsYWggYjsKK11dICRlbHNlIFtbCisgIGJsYWggYzsKK11dCit9OworCitdXQor
YGBgCisKK3dpbGwgYmUgdHJhbnNsYXRlZCBieSB0aGUgUHVtcCBjb21waWxlciB0bzoKKworYGBg
CisvLyBGb28wIGRvZXMgYmxhaCBmb3IgMC1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXpl
X3QgTj4KK2NsYXNzIEZvbzAgeworICBibGFoIGE7Cit9OworCisvLyBGb28xIGRvZXMgYmxhaCBm
b3IgMS1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTE+Citj
bGFzcyBGb28xIHsKKyAgYmxhaCBiOworfTsKKworLy8gRm9vMiBkb2VzIGJsYWggZm9yIDItYXJ5
IHByZWRpY2F0ZXMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBB
Mj4KK2NsYXNzIEZvbzIgeworICBibGFoIGI7Cit9OworCisvLyBGb28zIGRvZXMgYmxhaCBmb3Ig
My1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5cGVu
YW1lIEEyLCB0eXBlbmFtZSBBMz4KK2NsYXNzIEZvbzMgeworICBibGFoIGM7Cit9OworYGBgCisK
K0luIGFub3RoZXIgZXhhbXBsZSwKKworYGBgCiskcmFuZ2UgaSAxLi5uCitGdW5jKCRmb3IgaSAr
IFtbYSRpXV0pOworJCQgVGhlIHRleHQgYmV0d2VlbiBpIGFuZCBbWyBpcyB0aGUgc2VwYXJhdG9y
IGJldHdlZW4gaXRlcmF0aW9ucy4KK2BgYAorCit3aWxsIGdlbmVyYXRlIG9uZSBvZiB0aGUgZm9s
bG93aW5nIGxpbmVzICh3aXRob3V0IHRoZSBjb21tZW50cyksIGRlcGVuZGluZyBvbiB0aGUgdmFs
dWUgb2YgYG5gOgorCitgYGAKK0Z1bmMoKTsgICAgICAgICAgICAgIC8vIElmIG4gaXMgMC4KK0Z1
bmMoYTEpOyAgICAgICAgICAgIC8vIElmIG4gaXMgMS4KK0Z1bmMoYTEgKyBhMik7ICAgICAgIC8v
IElmIG4gaXMgMi4KK0Z1bmMoYTEgKyBhMiArIGEzKTsgIC8vIElmIG4gaXMgMy4KKy8vIEFuZCBz
byBvbi4uLgorYGBgCisKKyMjIENvbnN0cnVjdHMgIyMKKworV2Ugc3VwcG9ydCB0aGUgZm9sbG93
aW5nIG1ldGEgcHJvZ3JhbW1pbmcgY29uc3RydWN0czoKKworfCBgJHZhciBpZCA9IGV4cGAgfCBE
ZWZpbmVzIGEgbmFtZWQgY29uc3RhbnQgdmFsdWUuIGAkaWRgIGlzIHZhbGlkIHV0aWwgdGhlIGVu
ZCBvZiB0aGUgY3VycmVudCBtZXRhIGxleGljYWwgYmxvY2suIHwKK3w6LS0tLS0tLS0tLS0tLS0t
LXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGAkcmFuZ2UgaWQg
ZXhwLi5leHBgIHwgU2V0cyB0aGUgcmFuZ2Ugb2YgYW4gaXRlcmF0aW9uIHZhcmlhYmxlLCB3aGlj
aCBjYW4gYmUgcmV1c2VkIGluIG11bHRpcGxlIGxvb3BzIGxhdGVyLiAgICAgICAgICB8Cit8IGAk
Zm9yIGlkIHNlcCBbWyBjb2RlIF1dYCB8IEl0ZXJhdGlvbi4gVGhlIHJhbmdlIG9mIGBpZGAgbXVz
dCBoYXZlIGJlZW4gZGVmaW5lZCBlYXJsaWVyLiBgJGlkYCBpcyB2YWxpZCBpbiBgY29kZWAuICAg
ICAgICAgfAorfCBgJCgkKWAgICAgICAgICAgfCBHZW5lcmF0ZXMgYSBzaW5nbGUgYCRgIGNoYXJh
Y3Rlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKK3wgYCRpZGAgICAgICAgICAgIHwgVmFsdWUgb2YgdGhlIG5hbWVkIGNvbnN0
YW50IG9yIGl0ZXJhdGlvbiB2YXJpYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8Cit8IGAkKGV4cClgICAgICAgICB8IFZhbHVlIG9mIHRoZSBleHByZXNz
aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorfCBgJGlmIGV4cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNoYCB8
IENvbmRpdGlvbmFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgW1sgY29kZSBdXWAg
ICAgfCBNZXRhIGxleGljYWwgYmxvY2suICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYGNwcF9jb2Rl
YCAgICAgIHwgUmF3IEMrKyBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGAkJCBj
b21tZW50YCAgICB8IE1ldGEgY29tbWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCisq
Kk5vdGU6KiogVG8gZ2l2ZSB0aGUgdXNlciBzb21lIGZyZWVkb20gaW4gZm9ybWF0dGluZyB0aGUg
UHVtcCBzb3VyY2UKK2NvZGUsIFB1bXAgaWdub3JlcyBhIG5ldy1saW5lIGNoYXJhY3RlciBpZiBp
dCdzIHJpZ2h0IGFmdGVyIGAkZm9yIGZvb2AKK29yIG5leHQgdG8gYFtbYCBvciBgXV1gLiBXaXRo
b3V0IHRoaXMgcnVsZSB5b3UnbGwgb2Z0ZW4gYmUgZm9yY2VkIHRvIHdyaXRlCit2ZXJ5IGxvbmcg
bGluZXMgdG8gZ2V0IHRoZSBkZXNpcmVkIG91dHB1dC4gVGhlcmVmb3JlIHNvbWV0aW1lcyB5b3Ug
bWF5CituZWVkIHRvIGluc2VydCBhbiBleHRyYSBuZXctbGluZSBpbiBzdWNoIHBsYWNlcyBmb3Ig
YSBuZXctbGluZSB0byBzaG93Cit1cCBpbiB5b3VyIG91dHB1dC4KKworIyMgR3JhbW1hciAjIwor
CitgYGAKK2NvZGUgOjo9IGF0b21pY19jb2RlKgorYXRvbWljX2NvZGUgOjo9ICR2YXIgaWQgPSBl
eHAKKyAgICB8ICR2YXIgaWQgPSBbWyBjb2RlIF1dCisgICAgfCAkcmFuZ2UgaWQgZXhwLi5leHAK
KyAgICB8ICRmb3IgaWQgc2VwIFtbIGNvZGUgXV0KKyAgICB8ICQoJCkKKyAgICB8ICRpZAorICAg
IHwgJChleHApCisgICAgfCAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2gKKyAgICB8IFtb
IGNvZGUgXV0KKyAgICB8IGNwcF9jb2RlCitzZXAgOjo9IGNwcF9jb2RlIHwgZW1wdHlfc3RyaW5n
CitlbHNlX2JyYW5jaCA6Oj0gJGVsc2UgW1sgY29kZSBdXQorICAgIHwgJGVsaWYgZXhwIFtbIGNv
ZGUgXV0gZWxzZV9icmFuY2gKKyAgICB8IGVtcHR5X3N0cmluZworZXhwIDo6PSBzaW1wbGVfZXhw
cmVzc2lvbl9pbl9QeXRob25fc3ludGF4CitgYGAKKworIyMgQ29kZSAjIworCitZb3UgY2FuIGZp
bmQgdGhlIHNvdXJjZSBjb2RlIG9mIFB1bXAgaW4gW3NjcmlwdHMvcHVtcC5weV0oLi4vc2NyaXB0
cy9wdW1wLnB5KS4gSXQgaXMgc3RpbGwKK3ZlcnkgdW5wb2xpc2hlZCBhbmQgbGFja3MgYXV0b21h
dGVkIHRlc3RzLCBhbHRob3VnaCBpdCBoYXMgYmVlbgorc3VjY2Vzc2Z1bGx5IHVzZWQgbWFueSB0
aW1lcy4gSWYgeW91IGZpbmQgYSBjaGFuY2UgdG8gdXNlIGl0IGluIHlvdXIKK3Byb2plY3QsIHBs
ZWFzZSBsZXQgdXMga25vdyB3aGF0IHlvdSB0aGluayEgIFdlIGFsc28gd2VsY29tZSBoZWxwIG9u
CitpbXByb3ZpbmcgUHVtcC4KKworIyMgUmVhbCBFeGFtcGxlcyAjIworCitZb3UgY2FuIGZpbmQg
cmVhbC13b3JsZCBhcHBsaWNhdGlvbnMgb2YgUHVtcCBpbiBbR29vZ2xlIFRlc3RdKGh0dHA6Ly93
d3cuZ29vZ2xlLmNvbS9jb2Rlc2VhcmNoP3E9ZmlsZSUzQVwucHVtcCUyNCtwYWNrYWdlJTNBaHR0
cCUzQSUyRiUyRmdvb2dsZXRlc3RcLmdvb2dsZWNvZGVcLmNvbSkgYW5kIFtHb29nbGUgTW9ja10o
aHR0cDovL3d3dy5nb29nbGUuY29tL2NvZGVzZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3BhY2th
Z2UlM0FodHRwJTNBJTJGJTJGZ29vZ2xlbW9ja1wuZ29vZ2xlY29kZVwuY29tKS4gIFRoZSBzb3Vy
Y2UgZmlsZSBgZm9vLmgucHVtcGAgZ2VuZXJhdGVzIGBmb28uaGAuCisKKyMjIFRpcHMgIyMKKwor
ICAqIElmIGEgbWV0YSB2YXJpYWJsZSBpcyBmb2xsb3dlZCBieSBhIGxldHRlciBvciBkaWdpdCwg
eW91IGNhbiBzZXBhcmF0ZSB0aGVtIHVzaW5nIGBbW11dYCwgd2hpY2ggaW5zZXJ0cyBhbiBlbXB0
eSBzdHJpbmcuIEZvciBleGFtcGxlIGBGb28kaltbXV1IZWxwZXJgIGdlbmVyYXRlIGBGb28xSGVs
cGVyYCB3aGVuIGBqYCBpcyAxLgorICAqIFRvIGF2b2lkIGV4dHJhLWxvbmcgUHVtcCBzb3VyY2Ug
bGluZXMsIHlvdSBjYW4gYnJlYWsgYSBsaW5lIGFueXdoZXJlIHlvdSB3YW50IGJ5IGluc2VydGlu
ZyBgW1tdXWAgZm9sbG93ZWQgYnkgYSBuZXcgbGluZS4gU2luY2UgYW55IG5ldy1saW5lIGNoYXJh
Y3RlciBuZXh0IHRvIGBbW2Agb3IgYF1dYCBpcyBpZ25vcmVkLCB0aGUgZ2VuZXJhdGVkIGNvZGUg
d29uJ3QgY29udGFpbiB0aGlzIG5ldyBsaW5lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvZG9jcy9TYW1wbGVzLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9T
YW1wbGVzLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyMWQyMDA1NjczNTQ1N2Y2ZjQ5YWVjYzYxMjE5ZGFkMjI2
MTJiZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1Nh
bXBsZXMubWQKQEAgLTAsMCArMSwxNCBAQAorSWYgeW91J3JlIGxpa2UgdXMsIHlvdSdkIGxpa2Ug
dG8gbG9vayBhdCBzb21lIEdvb2dsZSBUZXN0IHNhbXBsZSBjb2RlLiAgVGhlCitbc2FtcGxlcyBm
b2xkZXJdKC4uL3NhbXBsZXMpIGhhcyBhIG51bWJlciBvZiB3ZWxsLWNvbW1lbnRlZCBzYW1wbGVz
IHNob3dpbmcgaG93IHRvIHVzZSBhCit2YXJpZXR5IG9mIEdvb2dsZSBUZXN0IGZlYXR1cmVzLgor
CisgICogW1NhbXBsZSAjMV0oLi4vc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjKSBzaG93cyB0
aGUgYmFzaWMgc3RlcHMgb2YgdXNpbmcgR29vZ2xlIFRlc3QgdG8gdGVzdCBDKysgZnVuY3Rpb25z
LgorICAqIFtTYW1wbGUgIzJdKC4uL3NhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYykgc2hvd3Mg
YSBtb3JlIGNvbXBsZXggdW5pdCB0ZXN0IGZvciBhIGNsYXNzIHdpdGggbXVsdGlwbGUgbWVtYmVy
IGZ1bmN0aW9ucy4KKyAgKiBbU2FtcGxlICMzXSguLi9zYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3Qu
Y2MpIHVzZXMgYSB0ZXN0IGZpeHR1cmUuCisgICogW1NhbXBsZSAjNF0oLi4vc2FtcGxlcy9zYW1w
bGU0X3VuaXR0ZXN0LmNjKSBpcyBhbm90aGVyIGJhc2ljIGV4YW1wbGUgb2YgdXNpbmcgR29vZ2xl
IFRlc3QuCisgICogW1NhbXBsZSAjNV0oLi4vc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjKSB0
ZWFjaGVzIGhvdyB0byByZXVzZSBhIHRlc3QgZml4dHVyZSBpbiBtdWx0aXBsZSB0ZXN0IGNhc2Vz
IGJ5IGRlcml2aW5nIHN1Yi1maXh0dXJlcyBmcm9tIGl0LgorICAqIFtTYW1wbGUgIzZdKC4uL3Nh
bXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYykgZGVtb25zdHJhdGVzIHR5cGUtcGFyYW1ldGVyaXpl
ZCB0ZXN0cy4KKyAgKiBbU2FtcGxlICM3XSguLi9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2Mp
IHRlYWNoZXMgdGhlIGJhc2ljcyBvZiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorICAqIFtT
YW1wbGUgIzhdKC4uL3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYykgc2hvd3MgdXNpbmcgYENv
bWJpbmUoKWAgaW4gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKyAgKiBbU2FtcGxlICM5XSgu
Li9zYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MpIHNob3dzIHVzZSBvZiB0aGUgbGlzdGVuZXIg
QVBJIHRvIG1vZGlmeSBHb29nbGUgVGVzdCdzIGNvbnNvbGUgb3V0cHV0IGFuZCB0aGUgdXNlIG9m
IGl0cyByZWZsZWN0aW9uIEFQSSB0byBpbnNwZWN0IHRlc3QgcmVzdWx0cy4KKyAgKiBbU2FtcGxl
ICMxMF0oLi4vc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYykgc2hvd3MgdXNlIG9mIHRoZSBs
aXN0ZW5lciBBUEkgdG8gaW1wbGVtZW50IGEgcHJpbWl0aXZlIG1lbW9yeSBsZWFrIGNoZWNrZXIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzVfQWR2YW5jZWRH
dWlkZS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfNV9BZHZhbmNlZEd1aWRl
Lm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM0ZTE5YzI2ZmRmZjIxOWE1ZDgzOTU5Zjc1ZDMxNjE4OTUxMGIwNDUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzVfQWR2
YW5jZWRHdWlkZS5tZApAQCAtMCwwICsxLDIwOTYgQEAKKworCitOb3cgdGhhdCB5b3UgaGF2ZSBy
ZWFkIFtQcmltZXJdKFYxXzVfUHJpbWVyLm1kKSBhbmQgbGVhcm5lZCBob3cgdG8gd3JpdGUgdGVz
dHMKK3VzaW5nIEdvb2dsZSBUZXN0LCBpdCdzIHRpbWUgdG8gbGVhcm4gc29tZSBuZXcgdHJpY2tz
LiBUaGlzIGRvY3VtZW50Cit3aWxsIHNob3cgeW91IG1vcmUgYXNzZXJ0aW9ucyBhcyB3ZWxsIGFz
IGhvdyB0byBjb25zdHJ1Y3QgY29tcGxleAorZmFpbHVyZSBtZXNzYWdlcywgcHJvcGFnYXRlIGZh
dGFsIGZhaWx1cmVzLCByZXVzZSBhbmQgc3BlZWQgdXAgeW91cgordGVzdCBmaXh0dXJlcywgYW5k
IHVzZSB2YXJpb3VzIGZsYWdzIHdpdGggeW91ciB0ZXN0cy4KKworIyBNb3JlIEFzc2VydGlvbnMg
IworCitUaGlzIHNlY3Rpb24gY292ZXJzIHNvbWUgbGVzcyBmcmVxdWVudGx5IHVzZWQsIGJ1dCBz
dGlsbCBzaWduaWZpY2FudCwKK2Fzc2VydGlvbnMuCisKKyMjIEV4cGxpY2l0IFN1Y2Nlc3MgYW5k
IEZhaWx1cmUgIyMKKworVGhlc2UgdGhyZWUgYXNzZXJ0aW9ucyBkbyBub3QgYWN0dWFsbHkgdGVz
dCBhIHZhbHVlIG9yIGV4cHJlc3Npb24uIEluc3RlYWQsCit0aGV5IGdlbmVyYXRlIGEgc3VjY2Vz
cyBvciBmYWlsdXJlIGRpcmVjdGx5LiBMaWtlIHRoZSBtYWNyb3MgdGhhdCBhY3R1YWxseQorcGVy
Zm9ybSBhIHRlc3QsIHlvdSBtYXkgc3RyZWFtIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSBpbnRv
IHRoZSB0aGVtLgorCit8IGBTVUNDRUVEKCk7YCB8Cit8Oi0tLS0tLS0tLS0tLS18CisKK0dlbmVy
YXRlcyBhIHN1Y2Nlc3MuIFRoaXMgZG9lcyBOT1QgbWFrZSB0aGUgb3ZlcmFsbCB0ZXN0IHN1Y2Nl
ZWQuIEEgdGVzdCBpcworY29uc2lkZXJlZCBzdWNjZXNzZnVsIG9ubHkgaWYgbm9uZSBvZiBpdHMg
YXNzZXJ0aW9ucyBmYWlsIGR1cmluZyBpdHMgZXhlY3V0aW9uLgorCitOb3RlOiBgU1VDQ0VFRCgp
YCBpcyBwdXJlbHkgZG9jdW1lbnRhcnkgYW5kIGN1cnJlbnRseSBkb2Vzbid0IGdlbmVyYXRlIGFu
eQordXNlci12aXNpYmxlIG91dHB1dC4gSG93ZXZlciwgd2UgbWF5IGFkZCBgU1VDQ0VFRCgpYCBt
ZXNzYWdlcyB0byBHb29nbGUgVGVzdCdzCitvdXRwdXQgaW4gdGhlIGZ1dHVyZS4KKworfCBgRkFJ
TCgpO2AgIHwgYEFERF9GQUlMVVJFKCk7YCB8Cit8Oi0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0t
LS0tLXwKKworYEZBSUwqYCBnZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlIHdoaWxlIGBBRERfRkFJ
TFVSRSpgIGdlbmVyYXRlcyBhIG5vbmZhdGFsCitmYWlsdXJlLiBUaGVzZSBhcmUgdXNlZnVsIHdo
ZW4gY29udHJvbCBmbG93LCByYXRoZXIgdGhhbiBhIEJvb2xlYW4gZXhwcmVzc2lvbiwKK2RldGVy
ZW1pbmVzIHRoZSB0ZXN0J3Mgc3VjY2VzcyBvciBmYWlsdXJlLiBGb3IgZXhhbXBsZSwgeW91IG1p
Z2h0IHdhbnQgdG8gd3JpdGUKK3NvbWV0aGluZyBsaWtlOgorCitgYGAKK3N3aXRjaChleHByZXNz
aW9uKSB7CisgIGNhc2UgMTogLi4uIHNvbWUgY2hlY2tzIC4uLgorICBjYXNlIDI6IC4uLiBzb21l
IG90aGVyIGNoZWNrcworICAuLi4KKyAgZGVmYXVsdDogRkFJTCgpIDw8ICJXZSBzaG91bGRuJ3Qg
Z2V0IGhlcmUuIjsKK30KK2BgYAorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1h
Yy4KKworIyMgRXhjZXB0aW9uIEFzc2VydGlvbnMgIyMKKworVGhlc2UgYXJlIGZvciB2ZXJpZnlp
bmcgdGhhdCBhIHBpZWNlIG9mIGNvZGUgdGhyb3dzIChvciBkb2VzIG5vdAordGhyb3cpIGFuIGV4
Y2VwdGlvbiBvZiB0aGUgZ2l2ZW4gdHlwZToKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipO
b25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9U
SFJPVyhgX3N0YXRlbWVudF8sIF9leGNlcHRpb25cX3R5cGVfYCk7YCAgfCBgRVhQRUNUX1RIUk9X
KGBfc3RhdGVtZW50XywgX2V4Y2VwdGlvblxfdHlwZV9gKTtgICB8IF9zdGF0ZW1lbnRfIHRocm93
cyBhbiBleGNlcHRpb24gb2YgdGhlIGdpdmVuIHR5cGUgIHwKK3wgYEFTU0VSVF9BTllfVEhST1co
YF9zdGF0ZW1lbnRfYCk7YCAgICAgICAgICAgICAgICB8IGBFWFBFQ1RfQU5ZX1RIUk9XKGBfc3Rh
dGVtZW50X2ApO2AgICAgICAgICAgICAgICAgfCBfc3RhdGVtZW50XyB0aHJvd3MgYW4gZXhjZXB0
aW9uIG9mIGFueSB0eXBlICAgICAgICB8Cit8IGBBU1NFUlRfTk9fVEhST1coYF9zdGF0ZW1lbnRf
YCk7YCAgICAgICAgICAgICAgICAgfCBgRVhQRUNUX05PX1RIUk9XKGBfc3RhdGVtZW50X2ApO2Ag
ICAgICAgICAgICAgICAgIHwgX3N0YXRlbWVudF8gZG9lc24ndCB0aHJvdyBhbnkgZXhjZXB0aW9u
ICAgICAgICAgICAgfAorCitFeGFtcGxlczoKKworYGBgCitBU1NFUlRfVEhST1coRm9vKDUpLCBi
YXJfZXhjZXB0aW9uKTsKKworRVhQRUNUX05PX1RIUk9XKHsKKyAgaW50IG4gPSA1OworICBCYXIo
Jm4pOworfSk7CitgYGAKKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWM7IHNp
bmNlIHZlcnNpb24gMS4xLjAuCisKKyMjIFByZWRpY2F0ZSBBc3NlcnRpb25zIGZvciBCZXR0ZXIg
RXJyb3IgTWVzc2FnZXMgIyMKKworRXZlbiB0aG91Z2ggR29vZ2xlIFRlc3QgaGFzIGEgcmljaCBz
ZXQgb2YgYXNzZXJ0aW9ucywgdGhleSBjYW4gbmV2ZXIgYmUKK2NvbXBsZXRlLCBhcyBpdCdzIGlt
cG9zc2libGUgKG5vciBhIGdvb2QgaWRlYSkgdG8gYW50aWNpcGF0ZSBhbGwgdGhlIHNjZW5hcmlv
cworYSB1c2VyIG1pZ2h0IHJ1biBpbnRvLiBUaGVyZWZvcmUsIHNvbWV0aW1lcyBhIHVzZXIgaGFz
IHRvIHVzZSBgRVhQRUNUX1RSVUUoKWAKK3RvIGNoZWNrIGEgY29tcGxleCBleHByZXNzaW9uLCBm
b3IgbGFjayBvZiBhIGJldHRlciBtYWNyby4gVGhpcyBoYXMgdGhlIHByb2JsZW0KK29mIG5vdCBz
aG93aW5nIHlvdSB0aGUgdmFsdWVzIG9mIHRoZSBwYXJ0cyBvZiB0aGUgZXhwcmVzc2lvbiwgbWFr
aW5nIGl0IGhhcmQgdG8KK3VuZGVyc3RhbmQgd2hhdCB3ZW50IHdyb25nLiBBcyBhIHdvcmthcm91
bmQsIHNvbWUgdXNlcnMgY2hvb3NlIHRvIGNvbnN0cnVjdCB0aGUKK2ZhaWx1cmUgbWVzc2FnZSBi
eSB0aGVtc2VsdmVzLCBzdHJlYW1pbmcgaXQgaW50byBgRVhQRUNUX1RSVUUoKWAuIEhvd2V2ZXIs
IHRoaXMKK2lzIGF3a3dhcmQgZXNwZWNpYWxseSB3aGVuIHRoZSBleHByZXNzaW9uIGhhcyBzaWRl
LWVmZmVjdHMgb3IgaXMgZXhwZW5zaXZlIHRvCitldmFsdWF0ZS4KKworR29vZ2xlIFRlc3QgZ2l2
ZXMgeW91IHRocmVlIGRpZmZlcmVudCBvcHRpb25zIHRvIHNvbHZlIHRoaXMgcHJvYmxlbToKKwor
IyMjIFVzaW5nIGFuIEV4aXN0aW5nIEJvb2xlYW4gRnVuY3Rpb24gIyMjCisKK0lmIHlvdSBhbHJl
YWR5IGhhdmUgYSBmdW5jdGlvbiBvciBhIGZ1bmN0b3IgdGhhdCByZXR1cm5zIGBib29sYCAob3Ig
YSB0eXBlCit0aGF0IGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBgYm9vbGApLCB5b3Ug
Y2FuIHVzZSBpdCBpbiBhIF9wcmVkaWNhdGUKK2Fzc2VydGlvbl8gdG8gZ2V0IHRoZSBmdW5jdGlv
biBhcmd1bWVudHMgcHJpbnRlZCBmb3IgZnJlZToKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwg
KipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0t
LS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VS
VF9QUkVEMShgX3ByZWQxLCB2YWwxX2ApO2AgICAgICAgfCBgRVhQRUNUX1BSRUQxKGBfcHJlZDEs
IHZhbDFfYCk7YCB8IF9wcmVkMSh2YWwxKV8gcmV0dXJucyB0cnVlIHwKK3wgYEFTU0VSVF9QUkVE
MihgX3ByZWQyLCB2YWwxLCB2YWwyX2ApO2AgfCBgRVhQRUNUX1BSRUQyKGBfcHJlZDIsIHZhbDEs
IHZhbDJfYCk7YCB8ICBfcHJlZDIodmFsMSwgdmFsMilfIHJldHVybnMgdHJ1ZSB8Cit8ICAuLi4g
ICAgICAgICAgICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgIHwgLi4uICAgICAgICAgIHwK
KworSW4gdGhlIGFib3ZlLCBfcHJlZG5fIGlzIGFuIF9uXy1hcnkgcHJlZGljYXRlIGZ1bmN0aW9u
IG9yIGZ1bmN0b3IsIHdoZXJlCitfdmFsMV8sIF92YWwyXywgLi4uLCBhbmQgX3ZhbG5fIGFyZSBp
dHMgYXJndW1lbnRzLiBUaGUgYXNzZXJ0aW9uIHN1Y2NlZWRzCitpZiB0aGUgcHJlZGljYXRlIHJl
dHVybnMgYHRydWVgIHdoZW4gYXBwbGllZCB0byB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBhbmQgZmFp
bHMKK290aGVyd2lzZS4gV2hlbiB0aGUgYXNzZXJ0aW9uIGZhaWxzLCBpdCBwcmludHMgdGhlIHZh
bHVlIG9mIGVhY2ggYXJndW1lbnQuIEluCitlaXRoZXIgY2FzZSwgdGhlIGFyZ3VtZW50cyBhcmUg
ZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4KKworSGVyZSdzIGFuIGV4YW1wbGUuIEdpdmVuCisKK2Bg
YAorLy8gUmV0dXJucyB0cnVlIGlmZiBtIGFuZCBuIGhhdmUgbm8gY29tbW9uIGRpdmlzb3JzIGV4
Y2VwdCAxLgorYm9vbCBNdXR1YWxseVByaW1lKGludCBtLCBpbnQgbikgeyAuLi4gfQorY29uc3Qg
aW50IGEgPSAzOworY29uc3QgaW50IGIgPSA0OworY29uc3QgaW50IGMgPSAxMDsKK2BgYAorCit0
aGUgYXNzZXJ0aW9uIGBFWFBFQ1RfUFJFRDIoTXV0dWFsbHlQcmltZSwgYSwgYik7YCB3aWxsIHN1
Y2NlZWQsIHdoaWxlIHRoZQorYXNzZXJ0aW9uIGBFWFBFQ1RfUFJFRDIoTXV0dWFsbHlQcmltZSwg
YiwgYyk7YCB3aWxsIGZhaWwgd2l0aCB0aGUgbWVzc2FnZQorCis8cHJlPgorIU11dHVhbGx5UHJp
bWUoYiwgYykgaXMgZmFsc2UsIHdoZXJlPGJyPgorYiBpcyA0PGJyPgorYyBpcyAxMDxicj4KKzwv
cHJlPgorCisqKk5vdGVzOioqCisKKyAgMS4gSWYgeW91IHNlZSBhIGNvbXBpbGVyIGVycm9yICJu
byBtYXRjaGluZyBmdW5jdGlvbiB0byBjYWxsIiB3aGVuIHVzaW5nIGBBU1NFUlRfUFJFRCpgIG9y
IGBFWFBFQ1RfUFJFRCpgLCBwbGVhc2Ugc2VlIFt0aGlzXShWMV81X0ZBUS5tZCN0aGUtY29tcGls
ZXItY29tcGxhaW5zLWFib3V0LXVuZGVmaW5lZC1yZWZlcmVuY2VzLXRvLXNvbWUtc3RhdGljLWNv
bnN0LW1lbWJlci12YXJpYWJsZXMtYnV0LWktZGlkLWRlZmluZS10aGVtLWluLXRoZS1jbGFzcy1i
b2R5LXdoYXRzLXdyb25nKSBmb3IgaG93IHRvIHJlc29sdmUgaXQuCisgIDEuIEN1cnJlbnRseSB3
ZSBvbmx5IHByb3ZpZGUgcHJlZGljYXRlIGFzc2VydGlvbnMgb2YgYXJpdHkgPD0gNS4gSWYgeW91
IG5lZWQgYSBoaWdoZXItYXJpdHkgYXNzZXJ0aW9uLCBsZXQgdXMga25vdy4KKworX0F2YWlsYWJp
bGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMKKworIyMjIFVzaW5nIGEgRnVuY3Rpb24gVGhhdCBS
ZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCAjIyMKKworV2hpbGUgYEVYUEVDVF9QUkVEKigpYCBh
bmQgZnJpZW5kcyBhcmUgaGFuZHkgZm9yIGEgcXVpY2sgam9iLCB0aGUKK3N5bnRheCBpcyBub3Qg
c2F0aXNmYWN0b3J5OiB5b3UgaGF2ZSB0byB1c2UgZGlmZmVyZW50IG1hY3JvcyBmb3IKK2RpZmZl
cmVudCBhcml0aWVzLCBhbmQgaXQgZmVlbHMgbW9yZSBsaWtlIExpc3AgdGhhbiBDKysuICBUaGUK
K2A6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdGAgY2xhc3Mgc29sdmVzIHRoaXMgcHJvYmxlbS4K
KworQW4gYEFzc2VydGlvblJlc3VsdGAgb2JqZWN0IHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBh
biBhc3NlcnRpb24KKyh3aGV0aGVyIGl0J3MgYSBzdWNjZXNzIG9yIGEgZmFpbHVyZSwgYW5kIGFu
IGFzc29jaWF0ZWQgbWVzc2FnZSkuICBZb3UKK2NhbiBjcmVhdGUgYW4gYEFzc2VydGlvblJlc3Vs
dGAgdXNpbmcgb25lIG9mIHRoZXNlIGZhY3RvcnkKK2Z1bmN0aW9uczoKKworYGBgCituYW1lc3Bh
Y2UgdGVzdGluZyB7CisKKy8vIFJldHVybnMgYW4gQXNzZXJ0aW9uUmVzdWx0IG9iamVjdCB0byBp
bmRpY2F0ZSB0aGF0IGFuIGFzc2VydGlvbiBoYXMKKy8vIHN1Y2NlZWRlZC4KK0Fzc2VydGlvblJl
c3VsdCBBc3NlcnRpb25TdWNjZXNzKCk7CisKKy8vIFJldHVybnMgYW4gQXNzZXJ0aW9uUmVzdWx0
IG9iamVjdCB0byBpbmRpY2F0ZSB0aGF0IGFuIGFzc2VydGlvbiBoYXMKKy8vIGZhaWxlZC4KK0Fz
c2VydGlvblJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKCk7CisKK30KK2BgYAorCitZb3UgY2FuIHRo
ZW4gdXNlIHRoZSBgPDxgIG9wZXJhdG9yIHRvIHN0cmVhbSBtZXNzYWdlcyB0byB0aGUKK2BBc3Nl
cnRpb25SZXN1bHRgIG9iamVjdC4KKworVG8gcHJvdmlkZSBtb3JlIHJlYWRhYmxlIG1lc3NhZ2Vz
IGluIEJvb2xlYW4gYXNzZXJ0aW9ucworKGUuZy4gYEVYUEVDVF9UUlVFKClgKSwgd3JpdGUgYSBw
cmVkaWNhdGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zCitgQXNzZXJ0aW9uUmVzdWx0YCBpbnN0ZWFk
IG9mIGBib29sYC4gRm9yIGV4YW1wbGUsIGlmIHlvdSBkZWZpbmUKK2BJc0V2ZW4oKWAgYXM6CisK
K2BgYAorOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgSXNFdmVuKGludCBuKSB7CisgIGlmICgo
biAlIDIpID09IDApCisgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwor
ICBlbHNlCisgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG4gPDwg
IiBpcyBvZGQiOworfQorYGBgCisKK2luc3RlYWQgb2Y6CisKK2BgYAorYm9vbCBJc0V2ZW4oaW50
IG4pIHsKKyAgcmV0dXJuIChuICUgMikgPT0gMDsKK30KK2BgYAorCit0aGUgZmFpbGVkIGFzc2Vy
dGlvbiBgRVhQRUNUX1RSVUUoSXNFdmVuKEZpYig0KSkpYCB3aWxsIHByaW50OgorCis8cHJlPgor
VmFsdWUgb2Y6ICFJc0V2ZW4oRmliKDQpKTxicj4KK0FjdHVhbDogZmFsc2UgKCozIGlzIG9kZCop
PGJyPgorRXhwZWN0ZWQ6IHRydWU8YnI+Cis8L3ByZT4KKworaW5zdGVhZCBvZiBhIG1vcmUgb3Bh
cXVlCisKKzxwcmU+CitWYWx1ZSBvZjogIUlzRXZlbihGaWIoNCkpPGJyPgorQWN0dWFsOiBmYWxz
ZTxicj4KK0V4cGVjdGVkOiB0cnVlPGJyPgorPC9wcmU+CisKK0lmIHlvdSB3YW50IGluZm9ybWF0
aXZlIG1lc3NhZ2VzIGluIGBFWFBFQ1RfRkFMU0VgIGFuZCBgQVNTRVJUX0ZBTFNFYAorYXMgd2Vs
bCwgYW5kIGFyZSBmaW5lIHdpdGggbWFraW5nIHRoZSBwcmVkaWNhdGUgc2xvd2VyIGluIHRoZSBz
dWNjZXNzCitjYXNlLCB5b3UgY2FuIHN1cHBseSBhIHN1Y2Nlc3MgbWVzc2FnZToKKworYGBgCis6
OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBJc0V2ZW4oaW50IG4pIHsKKyAgaWYgKChuICUgMikg
PT0gMCkKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCkgPDwgbiA8PCAi
IGlzIGV2ZW4iOworICBlbHNlCisgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVy
ZSgpIDw8IG4gPDwgIiBpcyBvZGQiOworfQorYGBgCisKK1RoZW4gdGhlIHN0YXRlbWVudCBgRVhQ
RUNUX0ZBTFNFKElzRXZlbihGaWIoNikpKWAgd2lsbCBwcmludAorCis8cHJlPgorVmFsdWUgb2Y6
ICFJc0V2ZW4oRmliKDYpKTxicj4KK0FjdHVhbDogdHJ1ZSAoOCBpcyBldmVuKTxicj4KK0V4cGVj
dGVkOiBmYWxzZTxicj4KKzwvcHJlPgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3Ms
IE1hYzsgc2luY2UgdmVyc2lvbiAxLjQuMS4KKworIyMjIFVzaW5nIGEgUHJlZGljYXRlLUZvcm1h
dHRlciAjIyMKKworSWYgeW91IGZpbmQgdGhlIGRlZmF1bHQgbWVzc2FnZSBnZW5lcmF0ZWQgYnkg
YChBU1NFUlR8RVhQRUNUKV9QUkVEKmAgYW5kCitgKEFTU0VSVHxFWFBFQ1QpXyhUUlVFfEZBTFNF
KWAgdW5zYXRpc2ZhY3RvcnksIG9yIHNvbWUgYXJndW1lbnRzIHRvIHlvdXIKK3ByZWRpY2F0ZSBk
byBub3Qgc3VwcG9ydCBzdHJlYW1pbmcgdG8gYG9zdHJlYW1gLCB5b3UgY2FuIGluc3RlYWQgdXNl
IHRoZQorZm9sbG93aW5nIF9wcmVkaWNhdGUtZm9ybWF0dGVyIGFzc2VydGlvbnNfIHRvIF9mdWxs
eV8gY3VzdG9taXplIGhvdyB0aGUKK21lc3NhZ2UgaXMgZm9ybWF0dGVkOgorCit8ICoqRmF0YWwg
YXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6
LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tfAorfCBgQVNTRVJUX1BSRURfRk9STUFUMShgX3ByZWRcX2Zvcm1hdDEsIHZhbDFfYCk7YCAg
ICAgICAgfCBgRVhQRUNUX1BSRURfRk9STUFUMShgX3ByZWRcX2Zvcm1hdDEsIHZhbDFfYCk7IHwg
X3ByZWRcX2Zvcm1hdDEodmFsMSlfIGlzIHN1Y2Nlc3NmdWwgfAorfCBgQVNTRVJUX1BSRURfRk9S
TUFUMihgX3ByZWRcX2Zvcm1hdDIsIHZhbDEsIHZhbDJfYCk7YCB8IGBFWFBFQ1RfUFJFRF9GT1JN
QVQyKGBfcHJlZFxfZm9ybWF0MiwgdmFsMSwgdmFsMl9gKTtgIHwgX3ByZWRcX2Zvcm1hdDIodmFs
MSwgdmFsMilfIGlzIHN1Y2Nlc3NmdWwgfAorfCBgLi4uYCAgICAgICAgICAgICAgIHwgYC4uLmAg
ICAgICAgICAgICAgICAgICB8IGAuLi5gICAgICAgICB8CisKK1RoZSBkaWZmZXJlbmNlIGJldHdl
ZW4gdGhpcyBhbmQgdGhlIHByZXZpb3VzIHR3byBncm91cHMgb2YgbWFjcm9zIGlzIHRoYXQgaW5z
dGVhZCBvZgorYSBwcmVkaWNhdGUsIGAoQVNTRVJUfEVYUEVDVClfUFJFRF9GT1JNQVQqYCB0YWtl
IGEgX3ByZWRpY2F0ZS1mb3JtYXR0ZXJfCisoX3ByZWRcX2Zvcm1hdG5fKSwgd2hpY2ggaXMgYSBm
dW5jdGlvbiBvciBmdW5jdG9yIHdpdGggdGhlIHNpZ25hdHVyZToKKworYDo6dGVzdGluZzo6QXNz
ZXJ0aW9uUmVzdWx0IFByZWRpY2F0ZUZvcm1hdHRlcm4oY29uc3QgY2hhciogYF9leHByMV9gLCBj
b25zdCBjaGFyKiBgX2V4cHIyX2AsIC4uLiBjb25zdCBjaGFyKiBgX2V4cHJuX2AsIFQxIGBfdmFs
MV9gLCBUMiBgX3ZhbDJfYCwgLi4uIFRuIGBfdmFsbl9gKTtgCisKK3doZXJlIF92YWwxXywgX3Zh
bDJfLCAuLi4sIGFuZCBfdmFsbl8gYXJlIHRoZSB2YWx1ZXMgb2YgdGhlIHByZWRpY2F0ZQorYXJn
dW1lbnRzLCBhbmQgX2V4cHIxXywgX2V4cHIyXywgLi4uLCBhbmQgX2V4cHJuXyBhcmUgdGhlIGNv
cnJlc3BvbmRpbmcKK2V4cHJlc3Npb25zIGFzIHRoZXkgYXBwZWFyIGluIHRoZSBzb3VyY2UgY29k
ZS4gVGhlIHR5cGVzIGBUMWAsIGBUMmAsIC4uLiwgYW5kCitgVG5gIGNhbiBiZSBlaXRoZXIgdmFs
dWUgdHlwZXMgb3IgcmVmZXJlbmNlIHR5cGVzLiBGb3IgZXhhbXBsZSwgaWYgYW4KK2FyZ3VtZW50
IGhhcyB0eXBlIGBGb29gLCB5b3UgY2FuIGRlY2xhcmUgaXQgYXMgZWl0aGVyIGBGb29gIG9yIGBj
b25zdCBGb28mYCwKK3doaWNoZXZlciBpcyBhcHByb3ByaWF0ZS4KKworQSBwcmVkaWNhdGUtZm9y
bWF0dGVyIHJldHVybnMgYSBgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHRgIG9iamVjdCB0byBp
bmRpY2F0ZQord2hldGhlciB0aGUgYXNzZXJ0aW9uIGhhcyBzdWNjZWVkZWQgb3Igbm90LiBUaGUg
b25seSB3YXkgdG8gY3JlYXRlIHN1Y2ggYW4KK29iamVjdCBpcyB0byBjYWxsIG9uZSBvZiB0aGVz
ZSBmYWN0b3J5IGZ1bmN0aW9uczoKKworQXMgYW4gZXhhbXBsZSwgbGV0J3MgaW1wcm92ZSB0aGUg
ZmFpbHVyZSBtZXNzYWdlIGluIHRoZSBwcmV2aW91cyBleGFtcGxlLCB3aGljaCB1c2VzIGBFWFBF
Q1RfUFJFRDIoKWA6CisKK2BgYAorLy8gUmV0dXJucyB0aGUgc21hbGxlc3QgcHJpbWUgY29tbW9u
IGRpdmlzb3Igb2YgbSBhbmQgbiwKKy8vIG9yIDEgd2hlbiBtIGFuZCBuIGFyZSBtdXR1YWxseSBw
cmltZS4KK2ludCBTbWFsbGVzdFByaW1lQ29tbW9uRGl2aXNvcihpbnQgbSwgaW50IG4pIHsgLi4u
IH0KKworLy8gQSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZvciBhc3NlcnRpbmcgdGhhdCB0d28gaW50
ZWdlcnMgYXJlIG11dHVhbGx5IHByaW1lLgorOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgQXNz
ZXJ0TXV0dWFsbHlQcmltZShjb25zdCBjaGFyKiBtX2V4cHIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5fZXhwciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuKSB7CisgIGlmIChNdXR1
YWxseVByaW1lKG0sIG4pKQorICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3Mo
KTsKKworICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IG1f
ZXhwciA8PCAiIGFuZCAiIDw8IG5fZXhwciA8PCAiICgiIDw8IG0gPDwgIiBhbmQgIiA8PCBuCisg
ICAgICA8PCAiKSBhcmUgbm90IG11dHVhbGx5IHByaW1lLCAiIDw8ICJhcyB0aGV5IGhhdmUgYSBj
b21tb24gZGl2aXNvciAiCisgICAgICA8PCBTbWFsbGVzdFByaW1lQ29tbW9uRGl2aXNvcihtLCBu
KTsKK30KK2BgYAorCitXaXRoIHRoaXMgcHJlZGljYXRlLWZvcm1hdHRlciwgd2UgY2FuIHVzZQor
CitgYGAKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoQXNzZXJ0TXV0dWFsbHlQcmltZSwgYiwgYyk7Citg
YGAKKwordG8gZ2VuZXJhdGUgdGhlIG1lc3NhZ2UKKworPHByZT4KK2IgYW5kIGMgKDQgYW5kIDEw
KSBhcmUgbm90IG11dHVhbGx5IHByaW1lLCBhcyB0aGV5IGhhdmUgYSBjb21tb24gZGl2aXNvciAy
Ljxicj4KKzwvcHJlPgorCitBcyB5b3UgbWF5IGhhdmUgcmVhbGl6ZWQsIG1hbnkgb2YgdGhlIGFz
c2VydGlvbnMgd2UgaW50cm9kdWNlZCBlYXJsaWVyIGFyZQorc3BlY2lhbCBjYXNlcyBvZiBgKEVY
UEVDVHxBU1NFUlQpX1BSRURfRk9STUFUKmAuIEluIGZhY3QsIG1vc3Qgb2YgdGhlbSBhcmUKK2lu
ZGVlZCBkZWZpbmVkIHVzaW5nIGAoRVhQRUNUfEFTU0VSVClfUFJFRF9GT1JNQVQqYC4KKworX0F2
YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKworIyMgRmxvYXRpbmctUG9pbnQg
Q29tcGFyaXNvbiAjIworCitDb21wYXJpbmcgZmxvYXRpbmctcG9pbnQgbnVtYmVycyBpcyB0cmlj
a3kuIER1ZSB0byByb3VuZC1vZmYgZXJyb3JzLCBpdCBpcwordmVyeSB1bmxpa2VseSB0aGF0IHR3
byBmbG9hdGluZy1wb2ludHMgd2lsbCBtYXRjaCBleGFjdGx5LiBUaGVyZWZvcmUsCitgQVNTRVJU
X0VRYCAncyBuYWl2ZSBjb21wYXJpc29uIHVzdWFsbHkgZG9lc24ndCB3b3JrLiBBbmQgc2luY2Ug
ZmxvYXRpbmctcG9pbnRzCitjYW4gaGF2ZSBhIHdpZGUgdmFsdWUgcmFuZ2UsIG5vIHNpbmdsZSBm
aXhlZCBlcnJvciBib3VuZCB3b3Jrcy4gSXQncyBiZXR0ZXIgdG8KK2NvbXBhcmUgYnkgYSBmaXhl
ZCByZWxhdGl2ZSBlcnJvciBib3VuZCwgZXhjZXB0IGZvciB2YWx1ZXMgY2xvc2UgdG8gMCBkdWUg
dG8KK3RoZSBsb3NzIG9mIHByZWNpc2lvbiB0aGVyZS4KKworSW4gZ2VuZXJhbCwgZm9yIGZsb2F0
aW5nLXBvaW50IGNvbXBhcmlzb24gdG8gbWFrZSBzZW5zZSwgdGhlIHVzZXIgbmVlZHMgdG8KK2Nh
cmVmdWxseSBjaG9vc2UgdGhlIGVycm9yIGJvdW5kLiBJZiB0aGV5IGRvbid0IHdhbnQgb3IgY2Fy
ZSB0bywgY29tcGFyaW5nIGluCit0ZXJtcyBvZiBVbml0cyBpbiB0aGUgTGFzdCBQbGFjZSAoVUxQ
cykgaXMgYSBnb29kIGRlZmF1bHQsIGFuZCBHb29nbGUgVGVzdAorcHJvdmlkZXMgYXNzZXJ0aW9u
cyB0byBkbyB0aGlzLiBGdWxsIGRldGFpbHMgYWJvdXQgVUxQcyBhcmUgcXVpdGUgbG9uZzsgaWYg
eW91Cit3YW50IHRvIGxlYXJuIG1vcmUsIHNlZQorW3RoaXMgYXJ0aWNsZSBvbiBmbG9hdCBjb21w
YXJpc29uXShodHRwOi8vd3d3LmN5Z251cy1zb2Z0d2FyZS5jb20vcGFwZXJzL2NvbXBhcmluZ2Zs
b2F0cy9jb21wYXJpbmdmbG9hdHMuaHRtKS4KKworIyMjIEZsb2F0aW5nLVBvaW50IE1hY3JvcyAj
IyMKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoq
VmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9GTE9BVF9FUShgX2V4cGVjdGVkLCBhY3R1
YWxfYCk7YCAgfCBgRVhQRUNUX0ZMT0FUX0VRKGBfZXhwZWN0ZWQsIGFjdHVhbF9gKTtgIHwgdGhl
IHR3byBgZmxvYXRgIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsIHwKK3wgYEFTU0VSVF9ET1VCTEVf
RVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgfCBgRVhQRUNUX0RPVUJMRV9FUShgX2V4cGVjdGVk
LCBhY3R1YWxfYCk7YCB8IHRoZSB0d28gYGRvdWJsZWAgdmFsdWVzIGFyZSBhbG1vc3QgZXF1YWwg
fAorCitCeSAiYWxtb3N0IGVxdWFsIiwgd2UgbWVhbiB0aGUgdHdvIHZhbHVlcyBhcmUgd2l0aGlu
IDQgVUxQJ3MgZnJvbSBlYWNoCitvdGhlci4KKworVGhlIGZvbGxvd2luZyBhc3NlcnRpb25zIGFs
bG93IHlvdSB0byBjaG9vc2UgdGhlIGFjY2VwdGFibGUgZXJyb3IgYm91bmQ6CisKK3wgKipGYXRh
bCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAor
fDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS18Cit8IGBBU1NFUlRfTkVBUihgX3ZhbDEsIHZhbDIsIGFic1xfZXJyb3JfYCk7YCB8IGBF
WFBFQ1RfTkVBUmBfKHZhbDEsIHZhbDIsIGFic1xfZXJyb3JfYCk7YCB8IHRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gX3ZhbDFfIGFuZCBfdmFsMl8gZG9lc24ndCBleGNlZWQgdGhlIGdpdmVuIGFic29s
dXRlIGVycm9yIHwKKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMj
IyBGbG9hdGluZy1Qb2ludCBQcmVkaWNhdGUtRm9ybWF0IEZ1bmN0aW9ucyAjIyMKKworU29tZSBm
bG9hdGluZy1wb2ludCBvcGVyYXRpb25zIGFyZSB1c2VmdWwsIGJ1dCBub3QgdGhhdCBvZnRlbiB1
c2VkLiBJbiBvcmRlcgordG8gYXZvaWQgYW4gZXhwbG9zaW9uIG9mIG5ldyBtYWNyb3MsIHdlIHBy
b3ZpZGUgdGhlbSBhcyBwcmVkaWNhdGUtZm9ybWF0CitmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNl
ZCBpbiBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3JvcyAoZS5nLgorYEVYUEVDVF9QUkVEX0ZPUk1B
VDJgLCBldGMpLgorCitgYGAKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpGbG9hdExF
LCB2YWwxLCB2YWwyKTsKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpEb3VibGVMRSwg
dmFsMSwgdmFsMik7CitgYGAKKworVmVyaWZpZXMgdGhhdCBfdmFsMV8gaXMgbGVzcyB0aGFuLCBv
ciBhbG1vc3QgZXF1YWwgdG8sIF92YWwyXy4gWW91IGNhbgorcmVwbGFjZSBgRVhQRUNUX1BSRURf
Rk9STUFUMmAgaW4gdGhlIGFib3ZlIHRhYmxlIHdpdGggYEFTU0VSVF9QUkVEX0ZPUk1BVDJgLgor
CitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgV2luZG93cyBIUkVT
VUxUIGFzc2VydGlvbnMgIyMKKworVGhlc2UgYXNzZXJ0aW9ucyB0ZXN0IGZvciBgSFJFU1VMVGAg
c3VjY2VzcyBvciBmYWlsdXJlLgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFs
IGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX0hSRVNVTFRf
U1VDQ0VFREVEKGBfZXhwcmVzc2lvbl9gKTtgIHwgYEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChg
X2V4cHJlc3Npb25fYCk7YCB8IF9leHByZXNzaW9uXyBpcyBhIHN1Y2Nlc3MgYEhSRVNVTFRgIHwK
K3wgYEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChgX2V4cHJlc3Npb25fYCk7YCAgICB8IGBFWFBFQ1Rf
SFJFU1VMVF9GQUlMRUQoYF9leHByZXNzaW9uX2ApO2AgICAgfCBfZXhwcmVzc2lvbl8gaXMgYSBm
YWlsdXJlIGBIUkVTVUxUYCB8CisKK1RoZSBnZW5lcmF0ZWQgb3V0cHV0IGNvbnRhaW5zIHRoZSBo
dW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlCithc3NvY2lhdGVkIHdpdGggdGhlIGBIUkVTVUxU
YCBjb2RlIHJldHVybmVkIGJ5IF9leHByZXNzaW9uXy4KKworWW91IG1pZ2h0IHVzZSB0aGVtIGxp
a2UgdGhpczoKKworYGBgCitDQ29tUHRyIHNoZWxsOworQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVE
KHNoZWxsLkNvQ3JlYXRlSW5zdGFuY2UoTCJTaGVsbC5BcHBsaWNhdGlvbiIpKTsKK0NDb21WYXJp
YW50IGVtcHR5OworQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKHNoZWxsLT5TaGVsbEV4ZWN1dGUo
Q0NvbUJTVFIodXJsKSwgZW1wdHksIGVtcHR5LCBlbXB0eSwgZW1wdHkpKTsKK2BgYAorCitfQXZh
aWxhYmlsaXR5XzogV2luZG93cy4KKworIyMgVHlwZSBBc3NlcnRpb25zICMjCisKK1lvdSBjYW4g
Y2FsbCB0aGUgZnVuY3Rpb24KK2BgYAorOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8VDEs
IFQyPigpOworYGBgCit0byBhc3NlcnQgdGhhdCB0eXBlcyBgVDFgIGFuZCBgVDJgIGFyZSB0aGUg
c2FtZS4gIFRoZSBmdW5jdGlvbiBkb2VzCitub3RoaW5nIGlmIHRoZSBhc3NlcnRpb24gaXMgc2F0
aXNmaWVkLiAgSWYgdGhlIHR5cGVzIGFyZSBkaWZmZXJlbnQsCit0aGUgZnVuY3Rpb24gY2FsbCB3
aWxsIGZhaWwgdG8gY29tcGlsZSwgYW5kIHRoZSBjb21waWxlciBlcnJvciBtZXNzYWdlCit3aWxs
IGxpa2VseSAoZGVwZW5kaW5nIG9uIHRoZSBjb21waWxlcikgc2hvdyB5b3UgdGhlIGFjdHVhbCB2
YWx1ZXMgb2YKK2BUMWAgYW5kIGBUMmAuICBUaGlzIGlzIG1haW5seSB1c2VmdWwgaW5zaWRlIHRl
bXBsYXRlIGNvZGUuCisKK19DYXZlYXQ6XyBXaGVuIHVzZWQgaW5zaWRlIGEgbWVtYmVyIGZ1bmN0
aW9uIG9mIGEgY2xhc3MgdGVtcGxhdGUgb3IgYQorZnVuY3Rpb24gdGVtcGxhdGUsIGBTdGF0aWNB
c3NlcnRUeXBlRXE8VDEsIFQyPigpYCBpcyBlZmZlY3RpdmUgX29ubHkgaWZfCit0aGUgZnVuY3Rp
b24gaXMgaW5zdGFudGlhdGVkLiAgRm9yIGV4YW1wbGUsIGdpdmVuOgorYGBgCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MgRm9vIHsKKyBwdWJsaWM6CisgIHZvaWQgQmFyKCkgeyA6OnRlc3Rp
bmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIFQ+KCk7IH0KK307CitgYGAKK3RoZSBjb2RlOgor
YGBgCit2b2lkIFRlc3QxKCkgeyBGb288Ym9vbD4gZm9vOyB9CitgYGAKK3dpbGwgX25vdF8gZ2Vu
ZXJhdGUgYSBjb21waWxlciBlcnJvciwgYXMgYEZvbzxib29sPjo6QmFyKClgIGlzIG5ldmVyCith
Y3R1YWxseSBpbnN0YW50aWF0ZWQuICBJbnN0ZWFkLCB5b3UgbmVlZDoKK2BgYAordm9pZCBUZXN0
MigpIHsgRm9vPGJvb2w+IGZvbzsgZm9vLkJhcigpOyB9CitgYGAKK3RvIGNhdXNlIGEgY29tcGls
ZXIgZXJyb3IuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2
ZXJzaW9uIDEuMy4wLgorCisjIyBBc3NlcnRpb24gUGxhY2VtZW50ICMjCisKK1lvdSBjYW4gdXNl
IGFzc2VydGlvbnMgaW4gYW55IEMrKyBmdW5jdGlvbi4gSW4gcGFydGljdWxhciwgaXQgZG9lc24n
dAoraGF2ZSB0byBiZSBhIG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLiBUaGUgb25l
IGNvbnN0cmFpbnQgaXMKK3RoYXQgYXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIGEgZmF0YWwgZmFp
bHVyZSAoYEZBSUwqYCBhbmQgYEFTU0VSVF8qYCkKK2NhbiBvbmx5IGJlIHVzZWQgaW4gdm9pZC1y
ZXR1cm5pbmcgZnVuY3Rpb25zLiBUaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2YKK0dvb2dsZSBUZXN0
IG5vdCB1c2luZyBleGNlcHRpb25zLiBCeSBwbGFjaW5nIGl0IGluIGEgbm9uLXZvaWQgZnVuY3Rp
b24KK3lvdSdsbCBnZXQgYSBjb25mdXNpbmcgY29tcGlsZSBlcnJvciBsaWtlCitgImVycm9yOiB2
b2lkIHZhbHVlIG5vdCBpZ25vcmVkIGFzIGl0IG91Z2h0IHRvIGJlImAuCisKK0lmIHlvdSBuZWVk
IHRvIHVzZSBhc3NlcnRpb25zIGluIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIG5vbi12b2lkLCBv
bmUgb3B0aW9uCitpcyB0byBtYWtlIHRoZSBmdW5jdGlvbiByZXR1cm4gdGhlIHZhbHVlIGluIGFu
IG91dCBwYXJhbWV0ZXIgaW5zdGVhZC4gRm9yCitleGFtcGxlLCB5b3UgY2FuIHJld3JpdGUgYFQy
IEZvbyhUMSB4KWAgdG8gYHZvaWQgRm9vKFQxIHgsIFQyKiByZXN1bHQpYC4gWW91CituZWVkIHRv
IG1ha2Ugc3VyZSB0aGF0IGAqcmVzdWx0YCBjb250YWlucyBzb21lIHNlbnNpYmxlIHZhbHVlIGV2
ZW4gd2hlbiB0aGUKK2Z1bmN0aW9uIHJldHVybnMgcHJlbWF0dXJlbHkuIEFzIHRoZSBmdW5jdGlv
biBub3cgcmV0dXJucyBgdm9pZGAsIHlvdSBjYW4gdXNlCithbnkgYXNzZXJ0aW9uIGluc2lkZSBv
ZiBpdC4KKworSWYgY2hhbmdpbmcgdGhlIGZ1bmN0aW9uJ3MgdHlwZSBpcyBub3QgYW4gb3B0aW9u
LCB5b3Ugc2hvdWxkIGp1c3QgdXNlCithc3NlcnRpb25zIHRoYXQgZ2VuZXJhdGUgbm9uLWZhdGFs
IGZhaWx1cmVzLCBzdWNoIGFzIGBBRERfRkFJTFVSRSpgIGFuZAorYEVYUEVDVF8qYC4KKworX05v
dGVfOiBDb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzIGFyZSBub3QgY29uc2lkZXJlZCB2b2lk
LXJldHVybmluZworZnVuY3Rpb25zLCBhY2NvcmRpbmcgdG8gdGhlIEMrKyBsYW5ndWFnZSBzcGVj
aWZpY2F0aW9uLCBhbmQgc28geW91IG1heSBub3QgdXNlCitmYXRhbCBhc3NlcnRpb25zIGluIHRo
ZW0uIFlvdSdsbCBnZXQgYSBjb21waWxhdGlvbiBlcnJvciBpZiB5b3UgdHJ5LiBBIHNpbXBsZQor
d29ya2Fyb3VuZCBpcyB0byB0cmFuc2ZlciB0aGUgZW50aXJlIGJvZHkgb2YgdGhlIGNvbnN0cnVj
dG9yIG9yIGRlc3RydWN0b3IgdG8gYQorcHJpdmF0ZSB2b2lkLXJldHVybmluZyBtZXRob2QuIEhv
d2V2ZXIsIHlvdSBzaG91bGQgYmUgYXdhcmUgdGhhdCBhIGZhdGFsCithc3NlcnRpb24gZmFpbHVy
ZSBpbiBhIGNvbnN0cnVjdG9yIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUgY3VycmVudCB0ZXN0LCBh
cyB5b3VyCitpbnR1aXRpb24gbWlnaHQgc3VnZ2VzdDsgaXQgbWVyZWx5IHJldHVybnMgZnJvbSB0
aGUgY29uc3RydWN0b3IgZWFybHksIHBvc3NpYmx5CitsZWF2aW5nIHlvdXIgb2JqZWN0IGluIGEg
cGFydGlhbGx5LWNvbnN0cnVjdGVkIHN0YXRlLiBMaWtld2lzZSwgYSBmYXRhbAorYXNzZXJ0aW9u
IGZhaWx1cmUgaW4gYSBkZXN0cnVjdG9yIG1heSBsZWF2ZSB5b3VyIG9iamVjdCBpbiBhCitwYXJ0
aWFsbHktZGVzdHJ1Y3RlZCBzdGF0ZS4gVXNlIGFzc2VydGlvbnMgY2FyZWZ1bGx5IGluIHRoZXNl
IHNpdHVhdGlvbnMhCisKKyMgRGVhdGggVGVzdHMgIworCitJbiBtYW55IGFwcGxpY2F0aW9ucywg
dGhlcmUgYXJlIGFzc2VydGlvbnMgdGhhdCBjYW4gY2F1c2UgYXBwbGljYXRpb24gZmFpbHVyZQor
aWYgYSBjb25kaXRpb24gaXMgbm90IG1ldC4gVGhlc2Ugc2FuaXR5IGNoZWNrcywgd2hpY2ggZW5z
dXJlIHRoYXQgdGhlIHByb2dyYW0KK2lzIGluIGEga25vd24gZ29vZCBzdGF0ZSwgYXJlIHRoZXJl
IHRvIGZhaWwgYXQgdGhlIGVhcmxpZXN0IHBvc3NpYmxlIHRpbWUgYWZ0ZXIKK3NvbWUgcHJvZ3Jh
bSBzdGF0ZSBpcyBjb3JydXB0ZWQuIElmIHRoZSBhc3NlcnRpb24gY2hlY2tzIHRoZSB3cm9uZyBj
b25kaXRpb24sCit0aGVuIHRoZSBwcm9ncmFtIG1heSBwcm9jZWVkIGluIGFuIGVycm9uZW91cyBz
dGF0ZSwgd2hpY2ggY291bGQgbGVhZCB0byBtZW1vcnkKK2NvcnJ1cHRpb24sIHNlY3VyaXR5IGhv
bGVzLCBvciB3b3JzZS4gSGVuY2UgaXQgaXMgdml0YWxseSBpbXBvcnRhbnQgdG8gdGVzdAordGhh
dCBzdWNoIGFzc2VydGlvbiBzdGF0ZW1lbnRzIHdvcmsgYXMgZXhwZWN0ZWQuCisKK1NpbmNlIHRo
ZXNlIHByZWNvbmRpdGlvbiBjaGVja3MgY2F1c2UgdGhlIHByb2Nlc3NlcyB0byBkaWUsIHdlIGNh
bGwgc3VjaCB0ZXN0cworX2RlYXRoIHRlc3RzXy4gTW9yZSBnZW5lcmFsbHksIGFueSB0ZXN0IHRo
YXQgY2hlY2tzIHRoYXQgYSBwcm9ncmFtIHRlcm1pbmF0ZXMKK2luIGFuIGV4cGVjdGVkIGZhc2hp
b24gaXMgYWxzbyBhIGRlYXRoIHRlc3QuCisKK0lmIHlvdSB3YW50IHRvIHRlc3QgYEVYUEVDVF8q
KCkvQVNTRVJUXyooKWAgZmFpbHVyZXMgaW4geW91ciB0ZXN0IGNvZGUsIHNlZSBbQ2F0Y2hpbmcg
RmFpbHVyZXNdKCNjYXRjaGluZy1mYWlsdXJlcykuCisKKyMjIEhvdyB0byBXcml0ZSBhIERlYXRo
IFRlc3QgIyMKKworR29vZ2xlIFRlc3QgaGFzIHRoZSBmb2xsb3dpbmcgbWFjcm9zIHRvIHN1cHBv
cnQgZGVhdGggdGVzdHM6CisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNz
ZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfREVBVEgoYF9zdGF0
ZW1lbnQsIHJlZ2V4X2ApOyB8IGBFWFBFQ1RfREVBVEgoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApOyB8
IF9zdGF0ZW1lbnRfIGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3IgfAorfCBgQVNTRVJUX0RF
QVRIX0lGX1NVUFBPUlRFRChgX3N0YXRlbWVudCwgcmVnZXhfYCk7IHwgYEVYUEVDVF9ERUFUSF9J
Rl9TVVBQT1JURUQoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApOyB8IGlmIGRlYXRoIHRlc3RzIGFyZSBz
dXBwb3J0ZWQsIHZlcmlmaWVzIHRoYXQgX3N0YXRlbWVudF8gY3Jhc2hlcyB3aXRoIHRoZSBnaXZl
biBlcnJvcjsgb3RoZXJ3aXNlIHZlcmlmaWVzIG5vdGhpbmcgfAorfCBgQVNTRVJUX0VYSVQoYF9z
dGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXhfYCk7IHwgYEVYUEVDVF9FWElUKGBfc3RhdGVtZW50
LCBwcmVkaWNhdGUsIHJlZ2V4X2ApOyB8X3N0YXRlbWVudF8gZXhpdHMgd2l0aCB0aGUgZ2l2ZW4g
ZXJyb3IgYW5kIGl0cyBleGl0IGNvZGUgbWF0Y2hlcyBfcHJlZGljYXRlXyB8CisKK3doZXJlIF9z
dGF0ZW1lbnRfIGlzIGEgc3RhdGVtZW50IHRoYXQgaXMgZXhwZWN0ZWQgdG8gY2F1c2UgdGhlIHBy
b2Nlc3MgdG8KK2RpZSwgX3ByZWRpY2F0ZV8gaXMgYSBmdW5jdGlvbiBvciBmdW5jdGlvbiBvYmpl
Y3QgdGhhdCBldmFsdWF0ZXMgYW4gaW50ZWdlcgorZXhpdCBzdGF0dXMsIGFuZCBfcmVnZXhfIGlz
IGEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgdGhlIHN0ZGVyciBvdXRwdXQgb2YKK19zdGF0ZW1l
bnRfIGlzIGV4cGVjdGVkIHRvIG1hdGNoLiBOb3RlIHRoYXQgX3N0YXRlbWVudF8gY2FuIGJlIF9h
bnkgdmFsaWQKK3N0YXRlbWVudF8gKGluY2x1ZGluZyBfY29tcG91bmQgc3RhdGVtZW50XykgYW5k
IGRvZXNuJ3QgaGF2ZSB0byBiZSBhbgorZXhwcmVzc2lvbi4KKworQXMgdXN1YWwsIHRoZSBgQVNT
RVJUYCB2YXJpYW50cyBhYm9ydCB0aGUgY3VycmVudCB0ZXN0IGZ1bmN0aW9uLCB3aGlsZSB0aGUK
K2BFWFBFQ1RgIHZhcmlhbnRzIGRvIG5vdC4KKworKipOb3RlOioqIFdlIHVzZSB0aGUgd29yZCAi
Y3Jhc2giIGhlcmUgdG8gbWVhbiB0aGF0IHRoZSBwcm9jZXNzCit0ZXJtaW5hdGVzIHdpdGggYSBf
bm9uLXplcm9fIGV4aXQgc3RhdHVzIGNvZGUuICBUaGVyZSBhcmUgdHdvCitwb3NzaWJpbGl0aWVz
OiBlaXRoZXIgdGhlIHByb2Nlc3MgaGFzIGNhbGxlZCBgZXhpdCgpYCBvciBgX2V4aXQoKWAKK3dp
dGggYSBub24temVybyB2YWx1ZSwgb3IgaXQgbWF5IGJlIGtpbGxlZCBieSBhIHNpZ25hbC4KKwor
VGhpcyBtZWFucyB0aGF0IGlmIF9zdGF0ZW1lbnRfIHRlcm1pbmF0ZXMgdGhlIHByb2Nlc3Mgd2l0
aCBhIDAgZXhpdAorY29kZSwgaXQgaXMgX25vdF8gY29uc2lkZXJlZCBhIGNyYXNoIGJ5IGBFWFBF
Q1RfREVBVEhgLiAgVXNlCitgRVhQRUNUX0VYSVRgIGluc3RlYWQgaWYgdGhpcyBpcyB0aGUgY2Fz
ZSwgb3IgaWYgeW91IHdhbnQgdG8gcmVzdHJpY3QKK3RoZSBleGl0IGNvZGUgbW9yZSBwcmVjaXNl
bHkuCisKK0EgcHJlZGljYXRlIGhlcmUgbXVzdCBhY2NlcHQgYW4gYGludGAgYW5kIHJldHVybiBh
IGBib29sYC4gVGhlIGRlYXRoIHRlc3QKK3N1Y2NlZWRzIG9ubHkgaWYgdGhlIHByZWRpY2F0ZSBy
ZXR1cm5zIGB0cnVlYC4gR29vZ2xlIFRlc3QgZGVmaW5lcyBhIGZldworcHJlZGljYXRlcyB0aGF0
IGhhbmRsZSB0aGUgbW9zdCBjb21tb24gY2FzZXM6CisKK2BgYAorOjp0ZXN0aW5nOjpFeGl0ZWRX
aXRoQ29kZShleGl0X2NvZGUpCitgYGAKKworVGhpcyBleHByZXNzaW9uIGlzIGB0cnVlYCBpZiB0
aGUgcHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHkgd2l0aCB0aGUgZ2l2ZW4gZXhpdAorY29kZS4KKwor
YGBgCis6OnRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKHNpZ25hbF9udW1iZXIpICAvLyBOb3QgYXZh
aWxhYmxlIG9uIFdpbmRvd3MuCitgYGAKKworVGhpcyBleHByZXNzaW9uIGlzIGB0cnVlYCBpZiB0
aGUgcHJvZ3JhbSB3YXMga2lsbGVkIGJ5IHRoZSBnaXZlbiBzaWduYWwuCisKK1RoZSBgKl9ERUFU
SGAgbWFjcm9zIGFyZSBjb252ZW5pZW50IHdyYXBwZXJzIGZvciBgKl9FWElUYCB0aGF0IHVzZSBh
IHByZWRpY2F0ZQordGhhdCB2ZXJpZmllcyB0aGUgcHJvY2VzcycgZXhpdCBjb2RlIGlzIG5vbi16
ZXJvLgorCitOb3RlIHRoYXQgYSBkZWF0aCB0ZXN0IG9ubHkgY2FyZXMgYWJvdXQgdGhyZWUgdGhp
bmdzOgorCisgIDEuIGRvZXMgX3N0YXRlbWVudF8gYWJvcnQgb3IgZXhpdCB0aGUgcHJvY2Vzcz8K
KyAgMS4gKGluIHRoZSBjYXNlIG9mIGBBU1NFUlRfRVhJVGAgYW5kIGBFWFBFQ1RfRVhJVGApIGRv
ZXMgdGhlIGV4aXQgc3RhdHVzIHNhdGlzZnkgX3ByZWRpY2F0ZV8/ICBPciAoaW4gdGhlIGNhc2Ug
b2YgYEFTU0VSVF9ERUFUSGAgYW5kIGBFWFBFQ1RfREVBVEhgKSBpcyB0aGUgZXhpdCBzdGF0dXMg
bm9uLXplcm8/ICBBbmQKKyAgMS4gZG9lcyB0aGUgc3RkZXJyIG91dHB1dCBtYXRjaCBfcmVnZXhf
PworCitJbiBwYXJ0aWN1bGFyLCBpZiBfc3RhdGVtZW50XyBnZW5lcmF0ZXMgYW4gYEFTU0VSVF8q
YCBvciBgRVhQRUNUXypgIGZhaWx1cmUsIGl0IHdpbGwgKipub3QqKiBjYXVzZSB0aGUgZGVhdGgg
dGVzdCB0byBmYWlsLCBhcyBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGRvbid0IGFib3J0IHRoZSBw
cm9jZXNzLgorCitUbyB3cml0ZSBhIGRlYXRoIHRlc3QsIHNpbXBseSB1c2Ugb25lIG9mIHRoZSBh
Ym92ZSBtYWNyb3MgaW5zaWRlIHlvdXIgdGVzdAorZnVuY3Rpb24uIEZvciBleGFtcGxlLAorCitg
YGAKK1RFU1QoTXkqRGVhdGhUZXN0KiwgRm9vKSB7CisgIC8vIFRoaXMgZGVhdGggdGVzdCB1c2Vz
IGEgY29tcG91bmQgc3RhdGVtZW50LgorICBBU1NFUlRfREVBVEgoeyBpbnQgbiA9IDU7IEZvbygm
bik7IH0sICJFcnJvciBvbiBsaW5lIC4qIG9mIEZvbygpIik7Cit9CitURVNUKE15RGVhdGhUZXN0
LCBOb3JtYWxFeGl0KSB7CisgIEVYUEVDVF9FWElUKE5vcm1hbEV4aXQoKSwgOjp0ZXN0aW5nOjpF
eGl0ZWRXaXRoQ29kZSgwKSwgIlN1Y2Nlc3MiKTsKK30KK1RFU1QoTXlEZWF0aFRlc3QsIEtpbGxN
eXNlbGYpIHsKKyAgRVhQRUNUX0VYSVQoS2lsbE15c2VsZigpLCA6OnRlc3Rpbmc6OktpbGxlZEJ5
U2lnbmFsKFNJR0tJTEwpLCAiU2VuZGluZyBteXNlbGYgdW5ibG9ja2FibGUgc2lnbmFsIik7Cit9
CitgYGAKKwordmVyaWZpZXMgdGhhdDoKKworICAqIGNhbGxpbmcgYEZvbyg1KWAgY2F1c2VzIHRo
ZSBwcm9jZXNzIHRvIGRpZSB3aXRoIHRoZSBnaXZlbiBlcnJvciBtZXNzYWdlLAorICAqIGNhbGxp
bmcgYE5vcm1hbEV4aXQoKWAgY2F1c2VzIHRoZSBwcm9jZXNzIHRvIHByaW50IGAiU3VjY2VzcyJg
IHRvIHN0ZGVyciBhbmQgZXhpdCB3aXRoIGV4aXQgY29kZSAwLCBhbmQKKyAgKiBjYWxsaW5nIGBL
aWxsTXlzZWxmKClgIGtpbGxzIHRoZSBwcm9jZXNzIHdpdGggc2lnbmFsIGBTSUdLSUxMYC4KKwor
VGhlIHRlc3QgZnVuY3Rpb24gYm9keSBtYXkgY29udGFpbiBvdGhlciBhc3NlcnRpb25zIGFuZCBz
dGF0ZW1lbnRzIGFzIHdlbGwsIGlmCituZWNlc3NhcnkuCisKK19JbXBvcnRhbnQ6XyBXZSBzdHJv
bmdseSByZWNvbW1lbmQgeW91IHRvIGZvbGxvdyB0aGUgY29udmVudGlvbiBvZiBuYW1pbmcgeW91
cgordGVzdCBjYXNlIChub3QgdGVzdCkgYCpEZWF0aFRlc3RgIHdoZW4gaXQgY29udGFpbnMgYSBk
ZWF0aCB0ZXN0LCBhcworZGVtb25zdHJhdGVkIGluIHRoZSBhYm92ZSBleGFtcGxlLiBUaGUgYERl
YXRoIFRlc3RzIEFuZCBUaHJlYWRzYCBzZWN0aW9uIGJlbG93CitleHBsYWlucyB3aHkuCisKK0lm
IGEgdGVzdCBmaXh0dXJlIGNsYXNzIGlzIHNoYXJlZCBieSBub3JtYWwgdGVzdHMgYW5kIGRlYXRo
IHRlc3RzLCB5b3UKK2NhbiB1c2UgdHlwZWRlZiB0byBpbnRyb2R1Y2UgYW4gYWxpYXMgZm9yIHRo
ZSBmaXh0dXJlIGNsYXNzIGFuZCBhdm9pZAorZHVwbGljYXRpbmcgaXRzIGNvZGU6CitgYGAKK2Ns
YXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07CisKK3R5cGVkZWYg
Rm9vVGVzdCBGb29EZWF0aFRlc3Q7CisKK1RFU1RfRihGb29UZXN0LCBEb2VzVGhpcykgeworICAv
LyBub3JtYWwgdGVzdAorfQorCitURVNUX0YoRm9vRGVhdGhUZXN0LCBEb2VzVGhhdCkgeworICAv
LyBkZWF0aCB0ZXN0Cit9CitgYGAKKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzIChy
ZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIEN5Z3dpbiwgYW5kIE1hYyAodGhlIGxhdHRlciB0
aHJlZSBhcmUgc3VwcG9ydGVkIHNpbmNlIHYxLjMuMCkuICBgKEFTU0VSVHxFWFBFQ1QpX0RFQVRI
X0lGX1NVUFBPUlRFRGAgYXJlIG5ldyBpbiB2MS40LjAuCisKKyMjIFJlZ3VsYXIgRXhwcmVzc2lv
biBTeW50YXggIyMKKworT24gUE9TSVggc3lzdGVtcyAoZS5nLiBMaW51eCwgQ3lnd2luLCBhbmQg
TWFjKSwgR29vZ2xlIFRlc3QgdXNlcyB0aGUKK1tQT1NJWCBleHRlbmRlZCByZWd1bGFyIGV4cHJl
c3Npb25dKGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9iYXNl
ZGVmcy94YmRfY2hhcDA5Lmh0bWwjdGFnXzA5XzA0KQorc3ludGF4IGluIGRlYXRoIHRlc3RzLiBU
byBsZWFybiBhYm91dCB0aGlzIHN5bnRheCwgeW91IG1heSB3YW50IHRvIHJlYWQgdGhpcyBbV2lr
aXBlZGlhIGVudHJ5XShodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlZ3VsYXJfZXhwcmVz
c2lvbiNQT1NJWF9FeHRlbmRlZF9SZWd1bGFyX0V4cHJlc3Npb25zKS4KKworT24gV2luZG93cywg
R29vZ2xlIFRlc3QgdXNlcyBpdHMgb3duIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24KK2ltcGxl
bWVudGF0aW9uLiBJdCBsYWNrcyBtYW55IGZlYXR1cmVzIHlvdSBjYW4gZmluZCBpbiBQT1NJWCBl
eHRlbmRlZAorcmVndWxhciBleHByZXNzaW9ucy4gIEZvciBleGFtcGxlLCB3ZSBkb24ndCBzdXBw
b3J0IHVuaW9uIChgInh8eSJgKSwKK2dyb3VwaW5nIChgIih4eSkiYCksIGJyYWNrZXRzIChgIlt4
eV0iYCksIGFuZCByZXBldGl0aW9uIGNvdW50CisoYCJ4ezUsN30iYCksIGFtb25nIG90aGVycy4g
QmVsb3cgaXMgd2hhdCB3ZSBkbyBzdXBwb3J0IChgQWAgZGVub3RlcyBhCitsaXRlcmFsIGNoYXJh
Y3RlciwgcGVyaW9kIChgLmApLCBvciBhIHNpbmdsZSBgXFxgIGVzY2FwZSBzZXF1ZW5jZTsgYHhg
CithbmQgYHlgIGRlbm90ZSByZWd1bGFyIGV4cHJlc3Npb25zLik6CisKK3wgYGNgIHwgbWF0Y2hl
cyBhbnkgbGl0ZXJhbCBjaGFyYWN0ZXIgYGNgIHwKK3w6LS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXwKK3wgYFxcZGAgfCBtYXRjaGVzIGFueSBkZWNpbWFsIGRpZ2l0ICAg
ICAgICAgfAorfCBgXFxEYCB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgZGVj
aW1hbCBkaWdpdCB8Cit8IGBcXGZgIHwgbWF0Y2hlcyBgXGZgICAgICAgICAgICAgICAgICAgICAg
IHwKK3wgYFxcbmAgfCBtYXRjaGVzIGBcbmAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFxy
YCB8IG1hdGNoZXMgYFxyYCAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBcXHNgIHwgbWF0Y2hl
cyBhbnkgQVNDSUkgd2hpdGVzcGFjZSwgaW5jbHVkaW5nIGBcbmAgfAorfCBgXFxTYCB8IG1hdGNo
ZXMgYW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgd2hpdGVzcGFjZSB8Cit8IGBcXHRgIHwgbWF0
Y2hlcyBgXHRgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYFxcdmAgfCBtYXRjaGVzIGBcdmAg
ICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFx3YCB8IG1hdGNoZXMgYW55IGxldHRlciwgYF9g
LCBvciBkZWNpbWFsIGRpZ2l0IHwKK3wgYFxcV2AgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhh
dCBgXFx3YCBkb2Vzbid0IG1hdGNoIHwKK3wgYFxcY2AgfCBtYXRjaGVzIGFueSBsaXRlcmFsIGNo
YXJhY3RlciBgY2AsIHdoaWNoIG11c3QgYmUgYSBwdW5jdHVhdGlvbiB8Cit8IGAuYCB8IG1hdGNo
ZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIgZXhjZXB0IGBcbmAgfAorfCBgQT9gIHwgbWF0Y2hlcyAw
IG9yIDEgb2NjdXJyZW5jZXMgb2YgYEFgIHwKK3wgYEEqYCB8IG1hdGNoZXMgMCBvciBtYW55IG9j
Y3VycmVuY2VzIG9mIGBBYCB8Cit8IGBBK2AgfCBtYXRjaGVzIDEgb3IgbWFueSBvY2N1cnJlbmNl
cyBvZiBgQWAgfAorfCBgXmAgfCBtYXRjaGVzIHRoZSBiZWdpbm5pbmcgb2YgYSBzdHJpbmcgKG5v
dCB0aGF0IG9mIGVhY2ggbGluZSkgfAorfCBgJGAgfCBtYXRjaGVzIHRoZSBlbmQgb2YgYSBzdHJp
bmcgKG5vdCB0aGF0IG9mIGVhY2ggbGluZSkgfAorfCBgeHlgIHwgbWF0Y2hlcyBgeGAgZm9sbG93
ZWQgYnkgYHlgICAgICAgIHwKKworVG8gaGVscCB5b3UgZGV0ZXJtaW5lIHdoaWNoIGNhcGFiaWxp
dHkgaXMgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtLAorR29vZ2xlIFRlc3QgZGVmaW5lcyBtYWNy
byBgR1RFU1RfVVNFU19QT1NJWF9SRT0xYCB3aGVuIGl0IHVzZXMgUE9TSVgKK2V4dGVuZGVkIHJl
Z3VsYXIgZXhwcmVzc2lvbnMsIG9yIGBHVEVTVF9VU0VTX1NJTVBMRV9SRT0xYCB3aGVuIGl0IHVz
ZXMKK3RoZSBzaW1wbGUgdmVyc2lvbi4gIElmIHlvdSB3YW50IHlvdXIgZGVhdGggdGVzdHMgdG8g
d29yayBpbiBib3RoCitjYXNlcywgeW91IGNhbiBlaXRoZXIgYCNpZmAgb24gdGhlc2UgbWFjcm9z
IG9yIHVzZSB0aGUgbW9yZSBsaW1pdGVkCitzeW50YXggb25seS4KKworIyMgSG93IEl0IFdvcmtz
ICMjCisKK1VuZGVyIHRoZSBob29kLCBgQVNTRVJUX0VYSVQoKWAgc3Bhd25zIGEgbmV3IHByb2Nl
c3MgYW5kIGV4ZWN1dGVzIHRoZQorZGVhdGggdGVzdCBzdGF0ZW1lbnQgaW4gdGhhdCBwcm9jZXNz
LiBUaGUgZGV0YWlscyBvZiBvZiBob3cgcHJlY2lzZWx5Cit0aGF0IGhhcHBlbnMgZGVwZW5kIG9u
IHRoZSBwbGF0Zm9ybSBhbmQgdGhlIHZhcmlhYmxlCitgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKGRl
YXRoX3Rlc3Rfc3R5bGUpYCAod2hpY2ggaXMgaW5pdGlhbGl6ZWQgZnJvbSB0aGUKK2NvbW1hbmQt
bGluZSBmbGFnIGAtLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGVgKS4KKworICAqIE9uIFBPU0lYIHN5
c3RlbXMsIGBmb3JrKClgIChvciBgY2xvbmUoKWAgb24gTGludXgpIGlzIHVzZWQgdG8gc3Bhd24g
dGhlIGNoaWxkLCBhZnRlciB3aGljaDoKKyAgICAqIElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlz
IGAiZmFzdCJgLCB0aGUgZGVhdGggdGVzdCBzdGF0ZW1lbnQgaXMgaW1tZWRpYXRlbHkgZXhlY3V0
ZWQuCisgICAgKiBJZiB0aGUgdmFyaWFibGUncyB2YWx1ZSBpcyBgInRocmVhZHNhZmUiYCwgdGhl
IGNoaWxkIHByb2Nlc3MgcmUtZXhlY3V0ZXMgdGhlIHVuaXQgdGVzdCBiaW5hcnkganVzdCBhcyBp
dCB3YXMgb3JpZ2luYWxseSBpbnZva2VkLCBidXQgd2l0aCBzb21lIGV4dHJhIGZsYWdzIHRvIGNh
dXNlIGp1c3QgdGhlIHNpbmdsZSBkZWF0aCB0ZXN0IHVuZGVyIGNvbnNpZGVyYXRpb24gdG8gYmUg
cnVuLgorICAqIE9uIFdpbmRvd3MsIHRoZSBjaGlsZCBpcyBzcGF3bmVkIHVzaW5nIHRoZSBgQ3Jl
YXRlUHJvY2VzcygpYCBBUEksIGFuZCByZS1leGVjdXRlcyB0aGUgYmluYXJ5IHRvIGNhdXNlIGp1
c3QgdGhlIHNpbmdsZSBkZWF0aCB0ZXN0IHVuZGVyIGNvbnNpZGVyYXRpb24gdG8gYmUgcnVuIC0g
bXVjaCBsaWtlIHRoZSBgdGhyZWFkc2FmZWAgbW9kZSBvbiBQT1NJWC4KKworT3RoZXIgdmFsdWVz
IGZvciB0aGUgdmFyaWFibGUgYXJlIGlsbGVnYWwgYW5kIHdpbGwgY2F1c2UgdGhlIGRlYXRoIHRl
c3QgdG8KK2ZhaWwuIEN1cnJlbnRseSwgdGhlIGZsYWcncyBkZWZhdWx0IHZhbHVlIGlzIGAiZmFz
dCJgLiBIb3dldmVyLCB3ZSByZXNlcnZlIHRoZQorcmlnaHQgdG8gY2hhbmdlIGl0IGluIHRoZSBm
dXR1cmUuIFRoZXJlZm9yZSwgeW91ciB0ZXN0cyBzaG91bGQgbm90IGRlcGVuZCBvbgordGhpcy4K
KworSW4gZWl0aGVyIGNhc2UsIHRoZSBwYXJlbnQgcHJvY2VzcyB3YWl0cyBmb3IgdGhlIGNoaWxk
IHByb2Nlc3MgdG8gY29tcGxldGUsIGFuZCBjaGVja3MgdGhhdAorCisgIDEuIHRoZSBjaGlsZCdz
IGV4aXQgc3RhdHVzIHNhdGlzZmllcyB0aGUgcHJlZGljYXRlLCBhbmQKKyAgMS4gdGhlIGNoaWxk
J3Mgc3RkZXJyIG1hdGNoZXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4KKworSWYgdGhlIGRlYXRo
IHRlc3Qgc3RhdGVtZW50IHJ1bnMgdG8gY29tcGxldGlvbiB3aXRob3V0IGR5aW5nLCB0aGUgY2hp
bGQKK3Byb2Nlc3Mgd2lsbCBub25ldGhlbGVzcyB0ZXJtaW5hdGUsIGFuZCB0aGUgYXNzZXJ0aW9u
IGZhaWxzLgorCisjIyBEZWF0aCBUZXN0cyBBbmQgVGhyZWFkcyAjIworCitUaGUgcmVhc29uIGZv
ciB0aGUgdHdvIGRlYXRoIHRlc3Qgc3R5bGVzIGhhcyB0byBkbyB3aXRoIHRocmVhZCBzYWZldHku
IER1ZSB0bword2VsbC1rbm93biBwcm9ibGVtcyB3aXRoIGZvcmtpbmcgaW4gdGhlIHByZXNlbmNl
IG9mIHRocmVhZHMsIGRlYXRoIHRlc3RzIHNob3VsZAorYmUgcnVuIGluIGEgc2luZ2xlLXRocmVh
ZGVkIGNvbnRleHQuIFNvbWV0aW1lcywgaG93ZXZlciwgaXQgaXNuJ3QgZmVhc2libGUgdG8KK2Fy
cmFuZ2UgdGhhdCBraW5kIG9mIGVudmlyb25tZW50LiBGb3IgZXhhbXBsZSwgc3RhdGljYWxseS1p
bml0aWFsaXplZCBtb2R1bGVzCittYXkgc3RhcnQgdGhyZWFkcyBiZWZvcmUgbWFpbiBpcyBldmVy
IHJlYWNoZWQuIE9uY2UgdGhyZWFkcyBoYXZlIGJlZW4gY3JlYXRlZCwKK2l0IG1heSBiZSBkaWZm
aWN1bHQgb3IgaW1wb3NzaWJsZSB0byBjbGVhbiB0aGVtIHVwLgorCitHb29nbGUgVGVzdCBoYXMg
dGhyZWUgZmVhdHVyZXMgaW50ZW5kZWQgdG8gcmFpc2UgYXdhcmVuZXNzIG9mIHRocmVhZGluZyBp
c3N1ZXMuCisKKyAgMS4gQSB3YXJuaW5nIGlzIGVtaXR0ZWQgaWYgbXVsdGlwbGUgdGhyZWFkcyBh
cmUgcnVubmluZyB3aGVuIGEgZGVhdGggdGVzdCBpcyBlbmNvdW50ZXJlZC4KKyAgMS4gVGVzdCBj
YXNlcyB3aXRoIGEgbmFtZSBlbmRpbmcgaW4gIkRlYXRoVGVzdCIgYXJlIHJ1biBiZWZvcmUgYWxs
IG90aGVyIHRlc3RzLgorICAxLiBJdCB1c2VzIGBjbG9uZSgpYCBpbnN0ZWFkIG9mIGBmb3JrKClg
IHRvIHNwYXduIHRoZSBjaGlsZCBwcm9jZXNzIG9uIExpbnV4IChgY2xvbmUoKWAgaXMgbm90IGF2
YWlsYWJsZSBvbiBDeWd3aW4gYW5kIE1hYyksIGFzIGBmb3JrKClgIGlzIG1vcmUgbGlrZWx5IHRv
IGNhdXNlIHRoZSBjaGlsZCB0byBoYW5nIHdoZW4gdGhlIHBhcmVudCBwcm9jZXNzIGhhcyBtdWx0
aXBsZSB0aHJlYWRzLgorCitJdCdzIHBlcmZlY3RseSBmaW5lIHRvIGNyZWF0ZSB0aHJlYWRzIGlu
c2lkZSBhIGRlYXRoIHRlc3Qgc3RhdGVtZW50OyB0aGV5IGFyZQorZXhlY3V0ZWQgaW4gYSBzZXBh
cmF0ZSBwcm9jZXNzIGFuZCBjYW5ub3QgYWZmZWN0IHRoZSBwYXJlbnQuCisKKyMjIERlYXRoIFRl
c3QgU3R5bGVzICMjCisKK1RoZSAidGhyZWFkc2FmZSIgZGVhdGggdGVzdCBzdHlsZSB3YXMgaW50
cm9kdWNlZCBpbiBvcmRlciB0byBoZWxwIG1pdGlnYXRlIHRoZQorcmlza3Mgb2YgdGVzdGluZyBp
biBhIHBvc3NpYmx5IG11bHRpdGhyZWFkZWQgZW52aXJvbm1lbnQuIEl0IHRyYWRlcyBpbmNyZWFz
ZWQKK3Rlc3QgZXhlY3V0aW9uIHRpbWUgKHBvdGVudGlhbGx5IGRyYW1hdGljYWxseSBzbykgZm9y
IGltcHJvdmVkIHRocmVhZCBzYWZldHkuCitXZSBzdWdnZXN0IHVzaW5nIHRoZSBmYXN0ZXIsIGRl
ZmF1bHQgImZhc3QiIHN0eWxlIHVubGVzcyB5b3VyIHRlc3QgaGFzIHNwZWNpZmljCitwcm9ibGVt
cyB3aXRoIGl0LgorCitZb3UgY2FuIGNob29zZSBhIHBhcnRpY3VsYXIgc3R5bGUgb2YgZGVhdGgg
dGVzdHMgYnkgc2V0dGluZyB0aGUgZmxhZworcHJvZ3JhbW1hdGljYWxseToKKworYGBgCis6OnRl
c3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAidGhyZWFkc2FmZSI7CitgYGAK
KworWW91IGNhbiBkbyB0aGlzIGluIGBtYWluKClgIHRvIHNldCB0aGUgc3R5bGUgZm9yIGFsbCBk
ZWF0aCB0ZXN0cyBpbiB0aGUKK2JpbmFyeSwgb3IgaW4gaW5kaXZpZHVhbCB0ZXN0cy4gUmVjYWxs
IHRoYXQgZmxhZ3MgYXJlIHNhdmVkIGJlZm9yZSBydW5uaW5nIGVhY2gKK3Rlc3QgYW5kIHJlc3Rv
cmVkIGFmdGVyd2FyZHMsIHNvIHlvdSBuZWVkIG5vdCBkbyB0aGF0IHlvdXJzZWxmLiBGb3IgZXhh
bXBsZToKKworYGBgCitURVNUKE15RGVhdGhUZXN0LCBUZXN0T25lKSB7CisgIDo6dGVzdGluZzo6
RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJ0aHJlYWRzYWZlIjsKKyAgLy8gVGhpcyB0
ZXN0IGlzIHJ1biBpbiB0aGUgInRocmVhZHNhZmUiIHN0eWxlOgorICBBU1NFUlRfREVBVEgoVGhp
c1Nob3VsZERpZSgpLCAiIik7Cit9CisKK1RFU1QoTXlEZWF0aFRlc3QsIFRlc3RUd28pIHsKKyAg
Ly8gVGhpcyB0ZXN0IGlzIHJ1biBpbiB0aGUgImZhc3QiIHN0eWxlOgorICBBU1NFUlRfREVBVEgo
VGhpc1Nob3VsZERpZSgpLCAiIik7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJn
dikgeworICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgOjp0ZXN0
aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0gImZhc3QiOworICByZXR1cm4gUlVO
X0FMTF9URVNUUygpOworfQorYGBgCisKKyMjIENhdmVhdHMgIyMKKworVGhlIF9zdGF0ZW1lbnRf
IGFyZ3VtZW50IG9mIGBBU1NFUlRfRVhJVCgpYCBjYW4gYmUgYW55IHZhbGlkIEMrKyBzdGF0ZW1l
bnQKK2V4Y2VwdCB0aGF0IGl0IGNhbiBub3QgcmV0dXJuIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rp
b24uIFRoaXMgbWVhbnMKK19zdGF0ZW1lbnRfIHNob3VsZCBub3QgY29udGFpbiBgcmV0dXJuYCBv
ciBhIG1hY3JvIHRoYXQgbWlnaHQgcmV0dXJuIChlLmcuCitgQVNTRVJUX1RSVUUoKWAgKS4gSWYg
X3N0YXRlbWVudF8gcmV0dXJucyBiZWZvcmUgaXQgY3Jhc2hlcywgR29vZ2xlIFRlc3Qgd2lsbAor
cHJpbnQgYW4gZXJyb3IgbWVzc2FnZSwgYW5kIHRoZSB0ZXN0IHdpbGwgZmFpbC4KKworU2luY2Ug
X3N0YXRlbWVudF8gcnVucyBpbiB0aGUgY2hpbGQgcHJvY2VzcywgYW55IGluLW1lbW9yeSBzaWRl
IGVmZmVjdCAoZS5nLgorbW9kaWZ5aW5nIGEgdmFyaWFibGUsIHJlbGVhc2luZyBtZW1vcnksIGV0
YykgaXQgY2F1c2VzIHdpbGwgX25vdF8gYmUgb2JzZXJ2YWJsZQoraW4gdGhlIHBhcmVudCBwcm9j
ZXNzLiBJbiBwYXJ0aWN1bGFyLCBpZiB5b3UgcmVsZWFzZSBtZW1vcnkgaW4gYSBkZWF0aCB0ZXN0
LAoreW91ciBwcm9ncmFtIHdpbGwgZmFpbCB0aGUgaGVhcCBjaGVjayBhcyB0aGUgcGFyZW50IHBy
b2Nlc3Mgd2lsbCBuZXZlciBzZWUgdGhlCittZW1vcnkgcmVjbGFpbWVkLiBUbyBzb2x2ZSB0aGlz
IHByb2JsZW0sIHlvdSBjYW4KKworICAxLiB0cnkgbm90IHRvIGZyZWUgbWVtb3J5IGluIGEgZGVh
dGggdGVzdDsKKyAgMS4gZnJlZSB0aGUgbWVtb3J5IGFnYWluIGluIHRoZSBwYXJlbnQgcHJvY2Vz
czsgb3IKKyAgMS4gZG8gbm90IHVzZSB0aGUgaGVhcCBjaGVja2VyIGluIHlvdXIgcHJvZ3JhbS4K
KworRHVlIHRvIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCwgeW91IGNhbm5vdCBwbGFjZSBtdWx0
aXBsZSBkZWF0aCB0ZXN0Cithc3NlcnRpb25zIG9uIHRoZSBzYW1lIGxpbmU7IG90aGVyd2lzZSwg
Y29tcGlsYXRpb24gd2lsbCBmYWlsIHdpdGggYW4gdW5vYnZpb3VzCitlcnJvciBtZXNzYWdlLgor
CitEZXNwaXRlIHRoZSBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5IGFmZm9yZGVkIGJ5IHRoZSAidGhy
ZWFkc2FmZSIgc3R5bGUgb2YgZGVhdGgKK3Rlc3QsIHRocmVhZCBwcm9ibGVtcyBzdWNoIGFzIGRl
YWRsb2NrIGFyZSBzdGlsbCBwb3NzaWJsZSBpbiB0aGUgcHJlc2VuY2Ugb2YKK2hhbmRsZXJzIHJl
Z2lzdGVyZWQgd2l0aCBgcHRocmVhZF9hdGZvcmsoMylgLgorCisjIFVzaW5nIEFzc2VydGlvbnMg
aW4gU3ViLXJvdXRpbmVzICMKKworIyMgQWRkaW5nIFRyYWNlcyB0byBBc3NlcnRpb25zICMjCisK
K0lmIGEgdGVzdCBzdWItcm91dGluZSBpcyBjYWxsZWQgZnJvbSBzZXZlcmFsIHBsYWNlcywgd2hl
biBhbiBhc3NlcnRpb24KK2luc2lkZSBpdCBmYWlscywgaXQgY2FuIGJlIGhhcmQgdG8gdGVsbCB3
aGljaCBpbnZvY2F0aW9uIG9mIHRoZQorc3ViLXJvdXRpbmUgdGhlIGZhaWx1cmUgaXMgZnJvbS4g
IFlvdSBjYW4gYWxsZXZpYXRlIHRoaXMgcHJvYmxlbSB1c2luZworZXh0cmEgbG9nZ2luZyBvciBj
dXN0b20gZmFpbHVyZSBtZXNzYWdlcywgYnV0IHRoYXQgdXN1YWxseSBjbHV0dGVycyB1cAoreW91
ciB0ZXN0cy4gQSBiZXR0ZXIgc29sdXRpb24gaXMgdG8gdXNlIHRoZSBgU0NPUEVEX1RSQUNFYCBt
YWNybzoKKworfCBgU0NPUEVEX1RSQUNFKGBfbWVzc2FnZV9gKTtgIHwKK3w6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS18CisKK3doZXJlIF9tZXNzYWdlXyBjYW4gYmUgYW55dGhpbmcgc3Ry
ZWFtYWJsZSB0byBgc3RkOjpvc3RyZWFtYC4gVGhpcworbWFjcm8gd2lsbCBjYXVzZSB0aGUgY3Vy
cmVudCBmaWxlIG5hbWUsIGxpbmUgbnVtYmVyLCBhbmQgdGhlIGdpdmVuCittZXNzYWdlIHRvIGJl
IGFkZGVkIGluIGV2ZXJ5IGZhaWx1cmUgbWVzc2FnZS4gVGhlIGVmZmVjdCB3aWxsIGJlCit1bmRv
bmUgd2hlbiB0aGUgY29udHJvbCBsZWF2ZXMgdGhlIGN1cnJlbnQgbGV4aWNhbCBzY29wZS4KKwor
Rm9yIGV4YW1wbGUsCisKK2BgYAorMTA6IHZvaWQgU3ViMShpbnQgbikgeworMTE6ICAgRVhQRUNU
X0VRKDEsIEJhcihuKSk7CisxMjogICBFWFBFQ1RfRVEoMiwgQmFyKG4gKyAxKSk7CisxMzogfQor
MTQ6CisxNTogVEVTVChGb29UZXN0LCBCYXIpIHsKKzE2OiAgIHsKKzE3OiAgICAgU0NPUEVEX1RS
QUNFKCJBIik7ICAvLyBUaGlzIHRyYWNlIHBvaW50IHdpbGwgYmUgaW5jbHVkZWQgaW4KKzE4OiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVyeSBmYWlsdXJlIGluIHRoaXMgc2NvcGUuCisx
OTogICAgIFN1YjEoMSk7CisyMDogICB9CisyMTogICAvLyBOb3cgaXQgd29uJ3QuCisyMjogICBT
dWIxKDkpOworMjM6IH0KK2BgYAorCitjb3VsZCByZXN1bHQgaW4gbWVzc2FnZXMgbGlrZSB0aGVz
ZToKKworYGBgCitwYXRoL3RvL2Zvb190ZXN0LmNjOjExOiBGYWlsdXJlCitWYWx1ZSBvZjogQmFy
KG4pCitFeHBlY3RlZDogMQorICBBY3R1YWw6IDIKKyAgIFRyYWNlOgorcGF0aC90by9mb29fdGVz
dC5jYzoxNzogQQorCitwYXRoL3RvL2Zvb190ZXN0LmNjOjEyOiBGYWlsdXJlCitWYWx1ZSBvZjog
QmFyKG4gKyAxKQorRXhwZWN0ZWQ6IDIKKyAgQWN0dWFsOiAzCitgYGAKKworV2l0aG91dCB0aGUg
dHJhY2UsIGl0IHdvdWxkJ3ZlIGJlZW4gZGlmZmljdWx0IHRvIGtub3cgd2hpY2ggaW52b2NhdGlv
bgorb2YgYFN1YjEoKWAgdGhlIHR3byBmYWlsdXJlcyBjb21lIGZyb20gcmVzcGVjdGl2ZWx5LiAo
WW91IGNvdWxkIGFkZCBhbgorZXh0cmEgbWVzc2FnZSB0byBlYWNoIGFzc2VydGlvbiBpbiBgU3Vi
MSgpYCB0byBpbmRpY2F0ZSB0aGUgdmFsdWUgb2YKK2BuYCwgYnV0IHRoYXQncyB0ZWRpb3VzLikK
KworU29tZSB0aXBzIG9uIHVzaW5nIGBTQ09QRURfVFJBQ0VgOgorCisgIDEuIFdpdGggYSBzdWl0
YWJsZSBtZXNzYWdlLCBpdCdzIG9mdGVuIGVub3VnaCB0byB1c2UgYFNDT1BFRF9UUkFDRWAgYXQg
dGhlIGJlZ2lubmluZyBvZiBhIHN1Yi1yb3V0aW5lLCBpbnN0ZWFkIG9mIGF0IGVhY2ggY2FsbCBz
aXRlLgorICAxLiBXaGVuIGNhbGxpbmcgc3ViLXJvdXRpbmVzIGluc2lkZSBhIGxvb3AsIG1ha2Ug
dGhlIGxvb3AgaXRlcmF0b3IgcGFydCBvZiB0aGUgbWVzc2FnZSBpbiBgU0NPUEVEX1RSQUNFYCBz
dWNoIHRoYXQgeW91IGNhbiBrbm93IHdoaWNoIGl0ZXJhdGlvbiB0aGUgZmFpbHVyZSBpcyBmcm9t
LgorICAxLiBTb21ldGltZXMgdGhlIGxpbmUgbnVtYmVyIG9mIHRoZSB0cmFjZSBwb2ludCBpcyBl
bm91Z2ggZm9yIGlkZW50aWZ5aW5nIHRoZSBwYXJ0aWN1bGFyIGludm9jYXRpb24gb2YgYSBzdWIt
cm91dGluZS4gSW4gdGhpcyBjYXNlLCB5b3UgZG9uJ3QgaGF2ZSB0byBjaG9vc2UgYSB1bmlxdWUg
bWVzc2FnZSBmb3IgYFNDT1BFRF9UUkFDRWAuIFlvdSBjYW4gc2ltcGx5IHVzZSBgIiJgLgorICAx
LiBZb3UgY2FuIHVzZSBgU0NPUEVEX1RSQUNFYCBpbiBhbiBpbm5lciBzY29wZSB3aGVuIHRoZXJl
IGlzIG9uZSBpbiB0aGUgb3V0ZXIgc2NvcGUuIEluIHRoaXMgY2FzZSwgYWxsIGFjdGl2ZSB0cmFj
ZSBwb2ludHMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZmFpbHVyZSBtZXNzYWdlcywgaW4gcmV2
ZXJzZSBvcmRlciB0aGV5IGFyZSBlbmNvdW50ZXJlZC4KKyAgMS4gVGhlIHRyYWNlIGR1bXAgaXMg
Y2xpY2thYmxlIGluIEVtYWNzJyBjb21waWxhdGlvbiBidWZmZXIgLSBoaXQgcmV0dXJuIG9uIGEg
bGluZSBudW1iZXIgYW5kIHlvdSdsbCBiZSB0YWtlbiB0byB0aGF0IGxpbmUgaW4gdGhlIHNvdXJj
ZSBmaWxlIQorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgUHJv
cGFnYXRpbmcgRmF0YWwgRmFpbHVyZXMgIyMKKworQSBjb21tb24gcGl0ZmFsbCB3aGVuIHVzaW5n
IGBBU1NFUlRfKmAgYW5kIGBGQUlMKmAgaXMgbm90IHVuZGVyc3RhbmRpbmcgdGhhdAord2hlbiB0
aGV5IGZhaWwgdGhleSBvbmx5IGFib3J0IHRoZSBfY3VycmVudCBmdW5jdGlvbl8sIG5vdCB0aGUg
ZW50aXJlIHRlc3QuIEZvcgorZXhhbXBsZSwgdGhlIGZvbGxvd2luZyB0ZXN0IHdpbGwgc2VnZmF1
bHQ6CitgYGAKK3ZvaWQgU3Vicm91dGluZSgpIHsKKyAgLy8gR2VuZXJhdGVzIGEgZmF0YWwgZmFp
bHVyZSBhbmQgYWJvcnRzIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgorICBBU1NFUlRfRVEoMSwgMik7
CisgIC8vIFRoZSBmb2xsb3dpbmcgd29uJ3QgYmUgZXhlY3V0ZWQuCisgIC4uLgorfQorCitURVNU
KEZvb1Rlc3QsIEJhcikgeworICBTdWJyb3V0aW5lKCk7CisgIC8vIFRoZSBpbnRlbmRlZCBiZWhh
dmlvciBpcyBmb3IgdGhlIGZhdGFsIGZhaWx1cmUKKyAgLy8gaW4gU3Vicm91dGluZSgpIHRvIGFi
b3J0IHRoZSBlbnRpcmUgdGVzdC4KKyAgLy8gVGhlIGFjdHVhbCBiZWhhdmlvcjogdGhlIGZ1bmN0
aW9uIGdvZXMgb24gYWZ0ZXIgU3Vicm91dGluZSgpIHJldHVybnMuCisgIGludCogcCA9IE5VTEw7
CisgICpwID0gMzsgLy8gU2VnZmF1bHQhCit9CitgYGAKKworU2luY2Ugd2UgZG9uJ3QgdXNlIGV4
Y2VwdGlvbnMsIGl0IGlzIHRlY2huaWNhbGx5IGltcG9zc2libGUgdG8KK2ltcGxlbWVudCB0aGUg
aW50ZW5kZWQgYmVoYXZpb3IgaGVyZS4gIFRvIGFsbGV2aWF0ZSB0aGlzLCBHb29nbGUgVGVzdAor
cHJvdmlkZXMgdHdvIHNvbHV0aW9ucy4gIFlvdSBjb3VsZCB1c2UgZWl0aGVyIHRoZQorYChBU1NF
UlR8RVhQRUNUKV9OT19GQVRBTF9GQUlMVVJFYCBhc3NlcnRpb25zIG9yIHRoZQorYEhhc0ZhdGFs
RmFpbHVyZSgpYCBmdW5jdGlvbi4gIFRoZXkgYXJlIGRlc2NyaWJlZCBpbiB0aGUgZm9sbG93aW5n
IHR3bworc3Vic2VjdGlvbnMuCisKKworCisjIyMgQXNzZXJ0aW5nIG9uIFN1YnJvdXRpbmVzICMj
IworCitBcyBzaG93biBhYm92ZSwgaWYgeW91ciB0ZXN0IGNhbGxzIGEgc3Vicm91dGluZSB0aGF0
IGhhcyBhbiBgQVNTRVJUXypgCitmYWlsdXJlIGluIGl0LCB0aGUgdGVzdCB3aWxsIGNvbnRpbnVl
IGFmdGVyIHRoZSBzdWJyb3V0aW5lCityZXR1cm5zLiBUaGlzIG1heSBub3QgYmUgd2hhdCB5b3Ug
d2FudC4KKworT2Z0ZW4gcGVvcGxlIHdhbnQgZmF0YWwgZmFpbHVyZXMgdG8gcHJvcGFnYXRlIGxp
a2UgZXhjZXB0aW9ucy4gIEZvcgordGhhdCBHb29nbGUgVGVzdCBvZmZlcnMgdGhlIGZvbGxvd2lu
ZyBtYWNyb3M6CisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9u
KiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShg
X3N0YXRlbWVudF9gKTtgIHwgYEVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50X2Ap
O2AgfCBfc3RhdGVtZW50XyBkb2Vzbid0IGdlbmVyYXRlIGFueSBuZXcgZmF0YWwgZmFpbHVyZXMg
aW4gdGhlIGN1cnJlbnQgdGhyZWFkLiB8CisKK09ubHkgZmFpbHVyZXMgaW4gdGhlIHRocmVhZCB0
aGF0IGV4ZWN1dGVzIHRoZSBhc3NlcnRpb24gYXJlIGNoZWNrZWQgdG8KK2RldGVybWluZSB0aGUg
cmVzdWx0IG9mIHRoaXMgdHlwZSBvZiBhc3NlcnRpb25zLiAgSWYgX3N0YXRlbWVudF8KK2NyZWF0
ZXMgbmV3IHRocmVhZHMsIGZhaWx1cmVzIGluIHRoZXNlIHRocmVhZHMgYXJlIGlnbm9yZWQuCisK
K0V4YW1wbGVzOgorCitgYGAKK0FTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEZvbygpKTsKKworaW50
IGk7CitFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRSh7CisgIGkgPSBCYXIoKTsKK30pOworYGBgCisK
K19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLiBBc3NlcnRpb25zIGZyb20gbXVs
dGlwbGUgdGhyZWFkcworYXJlIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgorCisjIyMgQ2hlY2tp
bmcgZm9yIEZhaWx1cmVzIGluIHRoZSBDdXJyZW50IFRlc3QgIyMjCisKK2BIYXNGYXRhbEZhaWx1
cmUoKWAgaW4gdGhlIGA6OnRlc3Rpbmc6OlRlc3RgIGNsYXNzIHJldHVybnMgYHRydWVgIGlmIGFu
Cithc3NlcnRpb24gaW4gdGhlIGN1cnJlbnQgdGVzdCBoYXMgc3VmZmVyZWQgYSBmYXRhbCBmYWls
dXJlLiBUaGlzCithbGxvd3MgZnVuY3Rpb25zIHRvIGNhdGNoIGZhdGFsIGZhaWx1cmVzIGluIGEg
c3ViLXJvdXRpbmUgYW5kIHJldHVybgorZWFybHkuCisKK2BgYAorY2xhc3MgVGVzdCB7CisgcHVi
bGljOgorICAuLi4KKyAgc3RhdGljIGJvb2wgSGFzRmF0YWxGYWlsdXJlKCk7Cit9OworYGBgCisK
K1RoZSB0eXBpY2FsIHVzYWdlLCB3aGljaCBiYXNpY2FsbHkgc2ltdWxhdGVzIHRoZSBiZWhhdmlv
ciBvZiBhIHRocm93bgorZXhjZXB0aW9uLCBpczoKKworYGBgCitURVNUKEZvb1Rlc3QsIEJhcikg
eworICBTdWJyb3V0aW5lKCk7CisgIC8vIEFib3J0cyBpZiBTdWJyb3V0aW5lKCkgaGFkIGEgZmF0
YWwgZmFpbHVyZS4KKyAgaWYgKEhhc0ZhdGFsRmFpbHVyZSgpKQorICAgIHJldHVybjsKKyAgLy8g
VGhlIGZvbGxvd2luZyB3b24ndCBiZSBleGVjdXRlZC4KKyAgLi4uCit9CitgYGAKKworSWYgYEhh
c0ZhdGFsRmFpbHVyZSgpYCBpcyB1c2VkIG91dHNpZGUgb2YgYFRFU1QoKWAgLCBgVEVTVF9GKClg
ICwgb3IgYSB0ZXN0CitmaXh0dXJlLCB5b3UgbXVzdCBhZGQgdGhlIGA6OnRlc3Rpbmc6OlRlc3Q6
OmAgcHJlZml4LCBhcyBpbjoKKworYGBgCitpZiAoOjp0ZXN0aW5nOjpUZXN0OjpIYXNGYXRhbEZh
aWx1cmUoKSkKKyAgcmV0dXJuOworYGBgCisKK1NpbWlsYXJseSwgYEhhc05vbmZhdGFsRmFpbHVy
ZSgpYCByZXR1cm5zIGB0cnVlYCBpZiB0aGUgY3VycmVudCB0ZXN0CitoYXMgYXQgbGVhc3Qgb25l
IG5vbi1mYXRhbCBmYWlsdXJlLCBhbmQgYEhhc0ZhaWx1cmUoKWAgcmV0dXJucyBgdHJ1ZWAKK2lm
IHRoZSBjdXJyZW50IHRlc3QgaGFzIGF0IGxlYXN0IG9uZSBmYWlsdXJlIG9mIGVpdGhlciBraW5k
LgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4gIGBIYXNOb25mYXRhbEZh
aWx1cmUoKWAgYW5kCitgSGFzRmFpbHVyZSgpYCBhcmUgYXZhaWxhYmxlIHNpbmNlIHZlcnNpb24g
MS40LjAuCisKKyMgTG9nZ2luZyBBZGRpdGlvbmFsIEluZm9ybWF0aW9uICMKKworSW4geW91ciB0
ZXN0IGNvZGUsIHlvdSBjYW4gY2FsbCBgUmVjb3JkUHJvcGVydHkoImtleSIsIHZhbHVlKWAgdG8g
bG9nCithZGRpdGlvbmFsIGluZm9ybWF0aW9uLCB3aGVyZSBgdmFsdWVgIGNhbiBiZSBlaXRoZXIg
YSBDIHN0cmluZyBvciBhIDMyLWJpdAoraW50ZWdlci4gVGhlIF9sYXN0XyB2YWx1ZSByZWNvcmRl
ZCBmb3IgYSBrZXkgd2lsbCBiZSBlbWl0dGVkIHRvIHRoZSBYTUwgb3V0cHV0CitpZiB5b3Ugc3Bl
Y2lmeSBvbmUuIEZvciBleGFtcGxlLCB0aGUgdGVzdAorCitgYGAKK1RFU1RfRihXaWRnZXRVc2Fn
ZVRlc3QsIE1pbkFuZE1heFdpZGdldHMpIHsKKyAgUmVjb3JkUHJvcGVydHkoIk1heGltdW1XaWRn
ZXRzIiwgQ29tcHV0ZU1heFVzYWdlKCkpOworICBSZWNvcmRQcm9wZXJ0eSgiTWluaW11bVdpZGdl
dHMiLCBDb21wdXRlTWluVXNhZ2UoKSk7Cit9CitgYGAKKword2lsbCBvdXRwdXQgWE1MIGxpa2Ug
dGhpczoKKworYGBgCisuLi4KKyAgPHRlc3RjYXNlIG5hbWU9Ik1pbkFuZE1heFdpZGdldHMiIHN0
YXR1cz0icnVuIiB0aW1lPSI2IiBjbGFzc25hbWU9IldpZGdldFVzYWdlVGVzdCIKKyAgICAgICAg
ICAgIE1heGltdW1XaWRnZXRzPSIxMiIKKyAgICAgICAgICAgIE1pbmltdW1XaWRnZXRzPSI5IiAv
PgorLi4uCitgYGAKKworX05vdGVfOgorICAqIGBSZWNvcmRQcm9wZXJ0eSgpYCBpcyBhIHN0YXRp
YyBtZW1iZXIgb2YgdGhlIGBUZXN0YCBjbGFzcy4gVGhlcmVmb3JlIGl0IG5lZWRzIHRvIGJlIHBy
ZWZpeGVkIHdpdGggYDo6dGVzdGluZzo6VGVzdDo6YCBpZiB1c2VkIG91dHNpZGUgb2YgdGhlIGBU
RVNUYCBib2R5IGFuZCB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLgorICAqIGBrZXlgIG11c3QgYmUg
YSB2YWxpZCBYTUwgYXR0cmlidXRlIG5hbWUsIGFuZCBjYW5ub3QgY29uZmxpY3Qgd2l0aCB0aGUg
b25lcyBhbHJlYWR5IHVzZWQgYnkgR29vZ2xlIFRlc3QgKGBuYW1lYCwgYHN0YXR1c2AsICAgICBg
dGltZWAsIGFuZCBgY2xhc3NuYW1lYCkuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjLgorCisjIFNoYXJpbmcgUmVzb3VyY2VzIEJldHdlZW4gVGVzdHMgaW4gdGhlIFNhbWUg
VGVzdCBDYXNlICMKKworCisKK0dvb2dsZSBUZXN0IGNyZWF0ZXMgYSBuZXcgdGVzdCBmaXh0dXJl
IG9iamVjdCBmb3IgZWFjaCB0ZXN0IGluIG9yZGVyIHRvIG1ha2UKK3Rlc3RzIGluZGVwZW5kZW50
IGFuZCBlYXNpZXIgdG8gZGVidWcuIEhvd2V2ZXIsIHNvbWV0aW1lcyB0ZXN0cyB1c2UgcmVzb3Vy
Y2VzCit0aGF0IGFyZSBleHBlbnNpdmUgdG8gc2V0IHVwLCBtYWtpbmcgdGhlIG9uZS1jb3B5LXBl
ci10ZXN0IG1vZGVsIHByb2hpYml0aXZlbHkKK2V4cGVuc2l2ZS4KKworSWYgdGhlIHRlc3RzIGRv
bid0IGNoYW5nZSB0aGUgcmVzb3VyY2UsIHRoZXJlJ3Mgbm8gaGFybSBpbiB0aGVtIHNoYXJpbmcg
YQorc2luZ2xlIHJlc291cmNlIGNvcHkuIFNvLCBpbiBhZGRpdGlvbiB0byBwZXItdGVzdCBzZXQt
dXAvdGVhci1kb3duLCBHb29nbGUgVGVzdAorYWxzbyBzdXBwb3J0cyBwZXItdGVzdC1jYXNlIHNl
dC11cC90ZWFyLWRvd24uIFRvIHVzZSBpdDoKKworICAxLiBJbiB5b3VyIHRlc3QgZml4dHVyZSBj
bGFzcyAoc2F5IGBGb29UZXN0YCApLCBkZWZpbmUgYXMgYHN0YXRpY2Agc29tZSBtZW1iZXIgdmFy
aWFibGVzIHRvIGhvbGQgdGhlIHNoYXJlZCByZXNvdXJjZXMuCisgIDEuIEluIHRoZSBzYW1lIHRl
c3QgZml4dHVyZSBjbGFzcywgZGVmaW5lIGEgYHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKWAg
ZnVuY3Rpb24gKHJlbWVtYmVyIG5vdCB0byBzcGVsbCBpdCBhcyAqKmBTZXR1cFRlc3RDYXNlYCoq
IHdpdGggYSBzbWFsbCBgdWAhKSB0byBzZXQgdXAgdGhlIHNoYXJlZCByZXNvdXJjZXMgYW5kIGEg
YHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKWAgZnVuY3Rpb24gdG8gdGVhciB0aGVtIGRv
d24uCisKK1RoYXQncyBpdCEgR29vZ2xlIFRlc3QgYXV0b21hdGljYWxseSBjYWxscyBgU2V0VXBU
ZXN0Q2FzZSgpYCBiZWZvcmUgcnVubmluZyB0aGUKK19maXJzdCB0ZXN0XyBpbiB0aGUgYEZvb1Rl
c3RgIHRlc3QgY2FzZSAoaS5lLiBiZWZvcmUgY3JlYXRpbmcgdGhlIGZpcnN0CitgRm9vVGVzdGAg
b2JqZWN0KSwgYW5kIGNhbGxzIGBUZWFyRG93blRlc3RDYXNlKClgIGFmdGVyIHJ1bm5pbmcgdGhl
IF9sYXN0IHRlc3RfCitpbiBpdCAoaS5lLiBhZnRlciBkZWxldGluZyB0aGUgbGFzdCBgRm9vVGVz
dGAgb2JqZWN0KS4gSW4gYmV0d2VlbiwgdGhlIHRlc3RzCitjYW4gdXNlIHRoZSBzaGFyZWQgcmVz
b3VyY2VzLgorCitSZW1lbWJlciB0aGF0IHRoZSB0ZXN0IG9yZGVyIGlzIHVuZGVmaW5lZCwgc28g
eW91ciBjb2RlIGNhbid0IGRlcGVuZCBvbiBhIHRlc3QKK3ByZWNlZGluZyBvciBmb2xsb3dpbmcg
YW5vdGhlci4gQWxzbywgdGhlIHRlc3RzIG11c3QgZWl0aGVyIG5vdCBtb2RpZnkgdGhlCitzdGF0
ZSBvZiBhbnkgc2hhcmVkIHJlc291cmNlLCBvciwgaWYgdGhleSBkbyBtb2RpZnkgdGhlIHN0YXRl
LCB0aGV5IG11c3QKK3Jlc3RvcmUgdGhlIHN0YXRlIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZSBiZWZv
cmUgcGFzc2luZyBjb250cm9sIHRvIHRoZSBuZXh0Cit0ZXN0LgorCitIZXJlJ3MgYW4gZXhhbXBs
ZSBvZiBwZXItdGVzdC1jYXNlIHNldC11cCBhbmQgdGVhci1kb3duOgorYGBgCitjbGFzcyBGb29U
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAvLyBQZXItdGVz
dC1jYXNlIHNldC11cC4KKyAgLy8gQ2FsbGVkIGJlZm9yZSB0aGUgZmlyc3QgdGVzdCBpbiB0aGlz
IHRlc3QgY2FzZS4KKyAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90IG5lZWRlZC4KKyAgc3RhdGlj
IHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKKyAgICBzaGFyZWRfcmVzb3VyY2VfID0gbmV3IC4uLjsK
KyAgfQorCisgIC8vIFBlci10ZXN0LWNhc2UgdGVhci1kb3duLgorICAvLyBDYWxsZWQgYWZ0ZXIg
dGhlIGxhc3QgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZS4KKyAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYg
bm90IG5lZWRlZC4KKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBkZWxl
dGUgc2hhcmVkX3Jlc291cmNlXzsKKyAgICBzaGFyZWRfcmVzb3VyY2VfID0gTlVMTDsKKyAgfQor
CisgIC8vIFlvdSBjYW4gZGVmaW5lIHBlci10ZXN0IHNldC11cCBhbmQgdGVhci1kb3duIGxvZ2lj
IGFzIHVzdWFsLgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IC4uLiB9CisgIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsgLi4uIH0KKworICAvLyBTb21lIGV4cGVuc2l2ZSByZXNvdXJjZSBzaGFy
ZWQgYnkgYWxsIHRlc3RzLgorICBzdGF0aWMgVCogc2hhcmVkX3Jlc291cmNlXzsKK307CisKK1Qq
IEZvb1Rlc3Q6OnNoYXJlZF9yZXNvdXJjZV8gPSBOVUxMOworCitURVNUX0YoRm9vVGVzdCwgVGVz
dDEpIHsKKyAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlIGhlcmUgLi4uCit9
CitURVNUX0YoRm9vVGVzdCwgVGVzdDIpIHsKKyAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVk
X3Jlc291cmNlIGhlcmUgLi4uCit9CitgYGAKKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5k
b3dzLCBNYWMuCisKKyMgR2xvYmFsIFNldC1VcCBhbmQgVGVhci1Eb3duICMKKworSnVzdCBhcyB5
b3UgY2FuIGRvIHNldC11cCBhbmQgdGVhci1kb3duIGF0IHRoZSB0ZXN0IGxldmVsIGFuZCB0aGUg
dGVzdCBjYXNlCitsZXZlbCwgeW91IGNhbiBhbHNvIGRvIGl0IGF0IHRoZSB0ZXN0IHByb2dyYW0g
bGV2ZWwuIEhlcmUncyBob3cuCisKK0ZpcnN0LCB5b3Ugc3ViY2xhc3MgdGhlIGA6OnRlc3Rpbmc6
OkVudmlyb25tZW50YCBjbGFzcyB0byBkZWZpbmUgYSB0ZXN0CitlbnZpcm9ubWVudCwgd2hpY2gg
a25vd3MgaG93IHRvIHNldC11cCBhbmQgdGVhci1kb3duOgorCitgYGAKK2NsYXNzIEVudmlyb25t
ZW50IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfkVudmlyb25tZW50KCkge30KKyAgLy8gT3ZlcnJp
ZGUgdGhpcyB0byBkZWZpbmUgaG93IHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQuCisgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHt9CisgIC8vIE92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGhvdyB0byB0
ZWFyIGRvd24gdGhlIGVudmlyb25tZW50LgorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7fQor
fTsKK2BgYAorCitUaGVuLCB5b3UgcmVnaXN0ZXIgYW4gaW5zdGFuY2Ugb2YgeW91ciBlbnZpcm9u
bWVudCBjbGFzcyB3aXRoIEdvb2dsZSBUZXN0IGJ5CitjYWxsaW5nIHRoZSBgOjp0ZXN0aW5nOjpB
ZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgZnVuY3Rpb246CisKK2BgYAorRW52aXJvbm1lbnQq
IEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KTsKK2BgYAorCitOb3cs
IHdoZW4gYFJVTl9BTExfVEVTVFMoKWAgaXMgY2FsbGVkLCBpdCBmaXJzdCBjYWxscyB0aGUgYFNl
dFVwKClgIG1ldGhvZCBvZgordGhlIGVudmlyb25tZW50IG9iamVjdCwgdGhlbiBydW5zIHRoZSB0
ZXN0cyBpZiB0aGVyZSB3YXMgbm8gZmF0YWwgZmFpbHVyZXMsIGFuZAorZmluYWxseSBjYWxscyBg
VGVhckRvd24oKWAgb2YgdGhlIGVudmlyb25tZW50IG9iamVjdC4KKworSXQncyBPSyB0byByZWdp
c3RlciBtdWx0aXBsZSBlbnZpcm9ubWVudCBvYmplY3RzLiBJbiB0aGlzIGNhc2UsIHRoZWlyIGBT
ZXRVcCgpYAord2lsbCBiZSBjYWxsZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIHJlZ2lzdGVyZWQs
IGFuZCB0aGVpciBgVGVhckRvd24oKWAgd2lsbCBiZQorY2FsbGVkIGluIHRoZSByZXZlcnNlIG9y
ZGVyLgorCitOb3RlIHRoYXQgR29vZ2xlIFRlc3QgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSByZWdp
c3RlcmVkIGVudmlyb25tZW50IG9iamVjdHMuCitUaGVyZWZvcmUgKipkbyBub3QgZGVsZXRlIHRo
ZW0qKiBieSB5b3Vyc2VsZi4KKworWW91IHNob3VsZCBjYWxsIGBBZGRHbG9iYWxUZXN0RW52aXJv
bm1lbnQoKWAgYmVmb3JlIGBSVU5fQUxMX1RFU1RTKClgIGlzCitjYWxsZWQsIHByb2JhYmx5IGlu
IGBtYWluKClgLiBJZiB5b3UgdXNlIGBndGVzdF9tYWluYCwgeW91IG5lZWQgdG8gICAgICBjYWxs
Cit0aGlzIGJlZm9yZSBgbWFpbigpYCBzdGFydHMgZm9yIGl0IHRvIHRha2UgZWZmZWN0LiBPbmUg
d2F5IHRvIGRvIHRoaXMgaXMgdG8KK2RlZmluZSBhIGdsb2JhbCB2YXJpYWJsZSBsaWtlIHRoaXM6
CisKK2BgYAorOjp0ZXN0aW5nOjpFbnZpcm9ubWVudCogY29uc3QgZm9vX2VudiA9IDo6dGVzdGlu
Zzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBGb29FbnZpcm9ubWVudCk7CitgYGAKKwor
SG93ZXZlciwgd2Ugc3Ryb25nbHkgcmVjb21tZW5kIHlvdSB0byB3cml0ZSB5b3VyIG93biBgbWFp
bigpYCBhbmQgY2FsbAorYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCB0aGVyZSwgYXMgcmVs
eWluZyBvbiBpbml0aWFsaXphdGlvbiBvZiBnbG9iYWwKK3ZhcmlhYmxlcyBtYWtlcyB0aGUgY29k
ZSBoYXJkZXIgdG8gcmVhZCBhbmQgbWF5IGNhdXNlIHByb2JsZW1zIHdoZW4geW91CityZWdpc3Rl
ciBtdWx0aXBsZSBlbnZpcm9ubWVudHMgZnJvbSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMg
YW5kIHRoZQorZW52aXJvbm1lbnRzIGhhdmUgZGVwZW5kZW5jaWVzIGFtb25nIHRoZW0gKHJlbWVt
YmVyIHRoYXQgdGhlIGNvbXBpbGVyIGRvZXNuJ3QKK2d1YXJhbnRlZSB0aGUgb3JkZXIgaW4gd2hp
Y2ggZ2xvYmFsIHZhcmlhYmxlcyBmcm9tIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cworYXJl
IGluaXRpYWxpemVkKS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisK
KworIyBWYWx1ZSBQYXJhbWV0ZXJpemVkIFRlc3RzICMKKworX1ZhbHVlLXBhcmFtZXRlcml6ZWQg
dGVzdHNfIGFsbG93IHlvdSB0byB0ZXN0IHlvdXIgY29kZSB3aXRoIGRpZmZlcmVudAorcGFyYW1l
dGVycyB3aXRob3V0IHdyaXRpbmcgbXVsdGlwbGUgY29waWVzIG9mIHRoZSBzYW1lIHRlc3QuCisK
K1N1cHBvc2UgeW91IHdyaXRlIGEgdGVzdCBmb3IgeW91ciBjb2RlIGFuZCB0aGVuIHJlYWxpemUg
dGhhdCB5b3VyIGNvZGUgaXMgYWZmZWN0ZWQgYnkgYSBwcmVzZW5jZSBvZiBhIEJvb2xlYW4gY29t
bWFuZCBsaW5lIGZsYWcuCisKK2BgYAorVEVTVChNeUNvZGVUZXN0LCBUZXN0Rm9vKSB7CisgIC8v
IEEgY29kZSB0byB0ZXN0IGZvbygpLgorfQorYGBgCisKK1VzdWFsbHkgcGVvcGxlIGZhY3RvciB0
aGVpciB0ZXN0IGNvZGUgaW50byBhIGZ1bmN0aW9uIHdpdGggYSBCb29sZWFuIHBhcmFtZXRlciBp
biBzdWNoIHNpdHVhdGlvbnMuIFRoZSBmdW5jdGlvbiBzZXRzIHRoZSBmbGFnLCB0aGVuIGV4ZWN1
dGVzIHRoZSB0ZXN0aW5nIGNvZGUuCisKK2BgYAordm9pZCBUZXN0Rm9vSGVscGVyKGJvb2wgZmxh
Z192YWx1ZSkgeworICBmbGFnID0gZmxhZ192YWx1ZTsKKyAgLy8gQSBjb2RlIHRvIHRlc3QgZm9v
KCkuCit9CisKK1RFU1QoTXlDb2RlVGVzdCwgVGVzdEZvb28pIHsKKyAgVGVzdEZvb0hlbHBlcihm
YWxzZSk7CisgIFRlc3RGb29IZWxwZXIodHJ1ZSk7Cit9CitgYGAKKworQnV0IHRoaXMgc2V0dXAg
aGFzIHNlcmlvdXMgZHJhd2JhY2tzLiBGaXJzdCwgd2hlbiBhIHRlc3QgYXNzZXJ0aW9uIGZhaWxz
IGluIHlvdXIgdGVzdHMsIGl0IGJlY29tZXMgdW5jbGVhciB3aGF0IHZhbHVlIG9mIHRoZSBwYXJh
bWV0ZXIgY2F1c2VkIGl0IHRvIGZhaWwuIFlvdSBjYW4gc3RyZWFtIGEgY2xhcmlmeWluZyBtZXNz
YWdlIGludG8geW91ciBgRVhQRUNUYC9gQVNTRVJUYCBzdGF0ZW1lbnRzLCBidXQgaXQgeW91J2xs
IGhhdmUgdG8gZG8gaXQgd2l0aCBhbGwgb2YgdGhlbS4gU2Vjb25kLCB5b3UgaGF2ZSB0byBhZGQg
b25lIHN1Y2ggaGVscGVyIGZ1bmN0aW9uIHBlciB0ZXN0LiBXaGF0IGlmIHlvdSBoYXZlIHRlbiB0
ZXN0cz8gVHdlbnR5PyBBIGh1bmRyZWQ/CisKK1ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgd2ls
bCBsZXQgeW91IHdyaXRlIHlvdXIgdGVzdCBvbmx5IG9uY2UgYW5kIHRoZW4gZWFzaWx5IGluc3Rh
bnRpYXRlIGFuZCBydW4gaXQgd2l0aCBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHBhcmFtZXRlciB2
YWx1ZXMuCisKK0hlcmUgYXJlIHNvbWUgb3RoZXIgc2l0dWF0aW9ucyB3aGVuIHZhbHVlLXBhcmFt
ZXRlcml6ZWQgdGVzdHMgY29tZSBoYW5keToKKworICAqIFlvdSB3YW4gdG8gdGVzdCBkaWZmZXJl
bnQgaW1wbGVtZW50YXRpb25zIG9mIGFuIE9PIGludGVyZmFjZS4KKyAgKiBZb3Ugd2FudCB0byB0
ZXN0IHlvdXIgY29kZSBvdmVyIHZhcmlvdXMgaW5wdXRzIChhLmsuYS4gZGF0YS1kcml2ZW4gdGVz
dGluZykuIFRoaXMgZmVhdHVyZSBpcyBlYXN5IHRvIGFidXNlLCBzbyBwbGVhc2UgZXhlcmNpc2Ug
eW91ciBnb29kIHNlbnNlIHdoZW4gZG9pbmcgaXQhCisKKyMjIEhvdyB0byBXcml0ZSBWYWx1ZS1Q
YXJhbWV0ZXJpemVkIFRlc3RzICMjCisKK1RvIHdyaXRlIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dHMsIGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4dHVyZQorY2xhc3MuIEl0IG11c3QgYmUg
ZGVyaXZlZCBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08VD5gLCB3aGVyZSBgVGAKK2lz
IHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVlcy4gYFRlc3RXaXRoUGFyYW08VD5gIGlz
IGl0c2VsZgorZGVyaXZlZCBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RgLiBgVGAgY2FuIGJlIGFueSBj
b3B5YWJsZSB0eXBlLiBJZiBpdCdzCithIHJhdyBwb2ludGVyLCB5b3UgYXJlIHJlc3BvbnNpYmxl
IGZvciBtYW5hZ2luZyB0aGUgbGlmZXNwYW4gb2YgdGhlCitwb2ludGVkIHZhbHVlcy4KKworYGBg
CitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBj
aGFyKj4geworICAvLyBZb3UgY2FuIGltcGxlbWVudCBhbGwgdGhlIHVzdWFsIGZpeHR1cmUgY2xh
c3MgbWVtYmVycyBoZXJlLgorICAvLyBUbyBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyLCBjYWxs
IEdldFBhcmFtKCkgZnJvbSBjbGFzcworICAvLyBUZXN0V2l0aFBhcmFtPFQ+LgorfTsKK2BgYAor
CitUaGVuLCB1c2UgdGhlIGBURVNUX1BgIG1hY3JvIHRvIGRlZmluZSBhcyBtYW55IHRlc3QgcGF0
dGVybnMgdXNpbmcKK3RoaXMgZml4dHVyZSBhcyB5b3Ugd2FudC4gIFRoZSBgX1BgIHN1ZmZpeCBp
cyBmb3IgInBhcmFtZXRlcml6ZWQiIG9yCisicGF0dGVybiIsIHdoaWNoZXZlciB5b3UgcHJlZmVy
IHRvIHRoaW5rLgorCitgYGAKK1RFU1RfUChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJbnNp
ZGUgYSB0ZXN0LCBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyIHdpdGggdGhlIEdldFBhcmFtKCkg
bWV0aG9kCisgIC8vIG9mIHRoZSBUZXN0V2l0aFBhcmFtPFQ+IGNsYXNzOgorICBFWFBFQ1RfVFJV
RShmb28uQmxhaChHZXRQYXJhbSgpKSk7CisgIC4uLgorfQorCitURVNUX1AoRm9vVGVzdCwgSGFz
QmxhaEJsYWgpIHsKKyAgLi4uCit9CitgYGAKKworRmluYWxseSwgeW91IGNhbiB1c2UgYElOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QYCB0byBpbnN0YW50aWF0ZSB0aGUgdGVzdAorY2FzZSB3aXRoIGFu
eSBzZXQgb2YgcGFyYW1ldGVycyB5b3Ugd2FudC4gR29vZ2xlIFRlc3QgZGVmaW5lcyBhIG51bWJl
ciBvZgorZnVuY3Rpb25zIGZvciBnZW5lcmF0aW5nIHRlc3QgcGFyYW1ldGVycy4gVGhleSByZXR1
cm4gd2hhdCB3ZSBjYWxsCisoc3VycHJpc2UhKSBfcGFyYW1ldGVyIGdlbmVyYXRvcnNfLiBIZXJl
IGlzIGEgc3VtbWFyeSBvZiB0aGVtLAord2hpY2ggYXJlIGFsbCBpbiB0aGUgYHRlc3RpbmdgIG5h
bWVzcGFjZToKKworfCBgUmFuZ2UoYmVnaW4sIGVuZFssIHN0ZXBdKWAgfCBZaWVsZHMgdmFsdWVz
IGB7YmVnaW4sIGJlZ2luK3N0ZXAsIGJlZ2luK3N0ZXArc3RlcCwgLi4ufWAuIFRoZSB2YWx1ZXMg
ZG8gbm90IGluY2x1ZGUgYGVuZGAuIGBzdGVwYCBkZWZhdWx0cyB0byAxLiB8Cit8Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYFZhbHVlcyh2MSwgdjIsIC4uLiwgdk4pYCAgIHwg
WWllbGRzIHZhbHVlcyBge3YxLCB2MiwgLi4uLCB2Tn1gLiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorfCBgVmFsdWVzSW4oY29udGFpbmVyKWAgYW5kIGBWYWx1ZXNJbihiZWdpbiwgZW5kKWAgfCBZ
aWVsZHMgdmFsdWVzIGZyb20gYSBDLXN0eWxlIGFycmF5LCBhbiBTVEwtc3R5bGUgY29udGFpbmVy
LCBvciBhbiBpdGVyYXRvciByYW5nZSBgW2JlZ2luLCBlbmQpYC4gICAgICAgICAgICAgICAgICB8
Cit8IGBCb29sKClgICAgICAgICAgICAgICAgICAgICB8IFlpZWxkcyBzZXF1ZW5jZSBge2ZhbHNl
LCB0cnVlfWAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYENvbWJpbmUoZzEsIGcyLCAu
Li4sIGdOKWAgIHwgWWllbGRzIGFsbCBjb21iaW5hdGlvbnMgKHRoZSBDYXJ0ZXNpYW4gcHJvZHVj
dCBmb3IgdGhlIG1hdGggc2F2dnkpIG9mIHRoZSB2YWx1ZXMgZ2VuZXJhdGVkIGJ5IHRoZSBgTmAg
Z2VuZXJhdG9ycy4gVGhpcyBpcyBvbmx5IGF2YWlsYWJsZSBpZiB5b3VyIHN5c3RlbSBwcm92aWRl
cyB0aGUgYDx0cjEvdHVwbGU+YCBoZWFkZXIuIElmIHlvdSBhcmUgc3VyZSB5b3VyIHN5c3RlbSBk
b2VzLCBhbmQgR29vZ2xlIFRlc3QgZGlzYWdyZWVzLCB5b3UgY2FuIG92ZXJyaWRlIGl0IGJ5IGRl
ZmluaW5nIGBHVEVTVF9IQVNfVFIxX1RVUExFPTFgLiBTZWUgY29tbWVudHMgaW4gW2luY2x1ZGUv
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oXSguLi9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uIHwKKworRm9yIG1vcmUgZGV0YWlscywg
c2VlIHRoZSBjb21tZW50cyBhdCB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlc2UgZnVuY3Rpb25zIGlu
IHRoZSBbc291cmNlIGNvZGVdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oKS4K
KworVGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgd2lsbCBpbnN0YW50aWF0ZSB0ZXN0cyBmcm9tIHRo
ZSBgRm9vVGVzdGAgdGVzdCBjYXNlCitlYWNoIHdpdGggcGFyYW1ldGVyIHZhbHVlcyBgIm1lZW55
ImAsIGAibWlueSJgLCBhbmQgYCJtb2UiYC4KKworYGBgCitJTlNUQU5USUFURV9URVNUX0NBU0Vf
UChJbnN0YW50aWF0aW9uTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvb1Rlc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygibWVlbnkiLCAibWlueSIs
ICJtb2UiKSk7CitgYGAKKworVG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50IGluc3RhbmNlcyBvZiB0
aGUgcGF0dGVybiAoeWVzLCB5b3UgY2FuCitpbnN0YW50aWF0ZSBpdCBtb3JlIHRoYW4gb25jZSks
IHRoZSBmaXJzdCBhcmd1bWVudCB0bworYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCBpcyBhIHBy
ZWZpeCB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGFjdHVhbAordGVzdCBjYXNlIG5hbWUuIFJl
bWVtYmVyIHRvIHBpY2sgdW5pcXVlIHByZWZpeGVzIGZvciBkaWZmZXJlbnQKK2luc3RhbnRpYXRp
b25zLiBUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhhdmUgdGhl
c2UKK25hbWVzOgorCisgICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMGAg
Zm9yIGAibWVlbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzFg
IGZvciBgIm1pbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzJg
IGZvciBgIm1vZSJgCisgICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgv
MGAgZm9yIGAibWVlbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhC
bGFoLzFgIGZvciBgIm1pbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0Js
YWhCbGFoLzJgIGZvciBgIm1vZSJgCisKK1lvdSBjYW4gdXNlIHRoZXNlIG5hbWVzIGluIFstLWd0
ZXN0XC1maWx0ZXJdKCNydW5uaW5nLWEtc3Vic2V0LW9mLXRoZS10ZXN0cykuCisKK1RoaXMgc3Rh
dGVtZW50IHdpbGwgaW5zdGFudGlhdGUgYWxsIHRlc3RzIGZyb20gYEZvb1Rlc3RgIGFnYWluLCBl
YWNoCit3aXRoIHBhcmFtZXRlciB2YWx1ZXMgYCJjYXQiYCBhbmQgYCJkb2ciYDoKKworYGBgCitj
b25zdCBjaGFyKiBwZXRzW10gPSB7ImNhdCIsICJkb2cifTsKK0lOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QKEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIDo6dGVzdGluZzo6VmFsdWVzSW4ocGV0cykpOworYGBgCisKK1RoZSB0ZXN0cyBmcm9t
IHRoZSBpbnN0YW50aWF0aW9uIGFib3ZlIHdpbGwgaGF2ZSB0aGVzZSBuYW1lczoKKworICAqIGBB
bm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8wYCBmb3IgYCJjYXQiYAor
ICAqIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8xYCBmb3IgYCJk
b2ciYAorICAqIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8w
YCBmb3IgYCJjYXQiYAorICAqIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNC
bGFoQmxhaC8xYCBmb3IgYCJkb2ciYAorCitQbGVhc2Ugbm90ZSB0aGF0IGBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUGAgd2lsbCBpbnN0YW50aWF0ZSBfYWxsXwordGVzdHMgaW4gdGhlIGdpdmVuIHRl
c3QgY2FzZSwgd2hldGhlciB0aGVpciBkZWZpbml0aW9ucyBjb21lIGJlZm9yZSBvcgorX2FmdGVy
XyB0aGUgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCBzdGF0ZW1lbnQuCisKK1lvdSBjYW4gc2Vl
CitbdGhlc2VdKC4uL3NhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYykKK1tmaWxlc10oLi4vc2Ft
cGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjKSBmb3IgbW9yZSBleGFtcGxlcy4KKworX0F2YWlsYWJp
bGl0eV86IExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYzsg
c2luY2UgdmVyc2lvbiAxLjIuMC4KKworIyMgQ3JlYXRpbmcgVmFsdWUtUGFyYW1ldGVyaXplZCBB
YnN0cmFjdCBUZXN0cyAjIworCitJbiB0aGUgYWJvdmUsIHdlIGRlZmluZSBhbmQgaW5zdGFudGlh
dGUgYEZvb1Rlc3RgIGluIHRoZSBzYW1lIHNvdXJjZQorZmlsZS4gU29tZXRpbWVzIHlvdSBtYXkg
d2FudCB0byBkZWZpbmUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBpbiBhCitsaWJyYXJ5IGFu
ZCBsZXQgb3RoZXIgcGVvcGxlIGluc3RhbnRpYXRlIHRoZW0gbGF0ZXIuIFRoaXMgcGF0dGVybiBp
cwora25vd24gYXMgPGk+YWJzdHJhY3QgdGVzdHM8L2k+LiBBcyBhbiBleGFtcGxlIG9mIGl0cyBh
cHBsaWNhdGlvbiwgd2hlbiB5b3UKK2FyZSBkZXNpZ25pbmcgYW4gaW50ZXJmYWNlIHlvdSBjYW4g
d3JpdGUgYSBzdGFuZGFyZCBzdWl0ZSBvZiBhYnN0cmFjdAordGVzdHMgKHBlcmhhcHMgdXNpbmcg
YSBmYWN0b3J5IGZ1bmN0aW9uIGFzIHRoZSB0ZXN0IHBhcmFtZXRlcikgdGhhdAorYWxsIGltcGxl
bWVudGF0aW9ucyBvZiB0aGUgaW50ZXJmYWNlIGFyZSBleHBlY3RlZCB0byBwYXNzLiBXaGVuCitz
b21lb25lIGltcGxlbWVudHMgdGhlIGludGVyZmFjZSwgaGUgY2FuIGluc3RhbnRpYXRlIHlvdXIg
c3VpdGUgdG8gZ2V0CithbGwgdGhlIGludGVyZmFjZS1jb25mb3JtYW5jZSB0ZXN0cyBmb3IgZnJl
ZS4KKworVG8gZGVmaW5lIGFic3RyYWN0IHRlc3RzLCB5b3Ugc2hvdWxkIG9yZ2FuaXplIHlvdXIg
Y29kZSBsaWtlIHRoaXM6CisKKyAgMS4gUHV0IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBwYXJhbWV0
ZXJpemVkIHRlc3QgZml4dHVyZSBjbGFzcyAoZS5nLiBgRm9vVGVzdGApIGluIGEgaGVhZGVyIGZp
bGUsIHNheSBgZm9vX3BhcmFtX3Rlc3QuaGAuIFRoaW5rIG9mIHRoaXMgYXMgX2RlY2xhcmluZ18g
eW91ciBhYnN0cmFjdCB0ZXN0cy4KKyAgMS4gUHV0IHRoZSBgVEVTVF9QYCBkZWZpbml0aW9ucyBp
biBgZm9vX3BhcmFtX3Rlc3QuY2NgLCB3aGljaCBpbmNsdWRlcyBgZm9vX3BhcmFtX3Rlc3QuaGAu
IFRoaW5rIG9mIHRoaXMgYXMgX2ltcGxlbWVudGluZ18geW91ciBhYnN0cmFjdCB0ZXN0cy4KKwor
T25jZSB0aGV5IGFyZSBkZWZpbmVkLCB5b3UgY2FuIGluc3RhbnRpYXRlIHRoZW0gYnkgaW5jbHVk
aW5nCitgZm9vX3BhcmFtX3Rlc3QuaGAsIGludm9raW5nIGBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UCgpYCwgYW5kIGxpbmtpbmcKK3dpdGggYGZvb19wYXJhbV90ZXN0LmNjYC4gWW91IGNhbiBpbnN0
YW50aWF0ZSB0aGUgc2FtZSBhYnN0cmFjdCB0ZXN0CitjYXNlIG11bHRpcGxlIHRpbWVzLCBwb3Nz
aWJseSBpbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgorCisjIFR5cGVkIFRlc3RzICMKKworU3Vw
cG9zZSB5b3UgaGF2ZSBtdWx0aXBsZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHNhbWUgaW50ZXJm
YWNlIGFuZAord2FudCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb2YgdGhlbSBzYXRpc2Z5IHNvbWUg
Y29tbW9uIHJlcXVpcmVtZW50cy4KK09yLCB5b3UgbWF5IGhhdmUgZGVmaW5lZCBzZXZlcmFsIHR5
cGVzIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGNvbmZvcm0gdG8KK3RoZSBzYW1lICJjb25jZXB0IiBh
bmQgeW91IHdhbnQgdG8gdmVyaWZ5IGl0LiAgSW4gYm90aCBjYXNlcywgeW91IHdhbnQKK3RoZSBz
YW1lIHRlc3QgbG9naWMgcmVwZWF0ZWQgZm9yIGRpZmZlcmVudCB0eXBlcy4KKworV2hpbGUgeW91
IGNhbiB3cml0ZSBvbmUgYFRFU1RgIG9yIGBURVNUX0ZgIGZvciBlYWNoIHR5cGUgeW91IHdhbnQg
dG8KK3Rlc3QgKGFuZCB5b3UgbWF5IGV2ZW4gZmFjdG9yIHRoZSB0ZXN0IGxvZ2ljIGludG8gYSBm
dW5jdGlvbiB0ZW1wbGF0ZQordGhhdCB5b3UgaW52b2tlIGZyb20gdGhlIGBURVNUYCksIGl0J3Mg
dGVkaW91cyBhbmQgZG9lc24ndCBzY2FsZToKK2lmIHlvdSB3YW50IF9tXyB0ZXN0cyBvdmVyIF9u
XyB0eXBlcywgeW91J2xsIGVuZCB1cCB3cml0aW5nIF9tXCpuXworYFRFU1Rgcy4KKworX1R5cGVk
IHRlc3RzXyBhbGxvdyB5b3UgdG8gcmVwZWF0IHRoZSBzYW1lIHRlc3QgbG9naWMgb3ZlciBhIGxp
c3Qgb2YKK3R5cGVzLiAgWW91IG9ubHkgbmVlZCB0byB3cml0ZSB0aGUgdGVzdCBsb2dpYyBvbmNl
LCBhbHRob3VnaCB5b3UgbXVzdAora25vdyB0aGUgdHlwZSBsaXN0IHdoZW4gd3JpdGluZyB0eXBl
ZCB0ZXN0cy4gIEhlcmUncyBob3cgeW91IGRvIGl0OgorCitGaXJzdCwgZGVmaW5lIGEgZml4dHVy
ZSBjbGFzcyB0ZW1wbGF0ZS4gIEl0IHNob3VsZCBiZSBwYXJhbWV0ZXJpemVkCitieSBhIHR5cGUu
ICBSZW1lbWJlciB0byBkZXJpdmUgaXQgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0YDoKKworYGBgCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHsKKyBwdWJsaWM6CisgIC4uLgorICB0eXBlZGVmIHN0ZDo6bGlzdDxUPiBMaXN0OworICBz
dGF0aWMgVCBzaGFyZWRfOworICBUIHZhbHVlXzsKK307CitgYGAKKworTmV4dCwgYXNzb2NpYXRl
IGEgbGlzdCBvZiB0eXBlcyB3aXRoIHRoZSB0ZXN0IGNhc2UsIHdoaWNoIHdpbGwgYmUKK3JlcGVh
dGVkIGZvciBlYWNoIHR5cGUgaW4gdGhlIGxpc3Q6CisKK2BgYAordHlwZWRlZiA6OnRlc3Rpbmc6
OlR5cGVzPGNoYXIsIGludCwgdW5zaWduZWQgaW50PiBNeVR5cGVzOworVFlQRURfVEVTVF9DQVNF
KEZvb1Rlc3QsIE15VHlwZXMpOworYGBgCisKK1RoZSBgdHlwZWRlZmAgaXMgbmVjZXNzYXJ5IGZv
ciB0aGUgYFRZUEVEX1RFU1RfQ0FTRWAgbWFjcm8gdG8gcGFyc2UKK2NvcnJlY3RseS4gIE90aGVy
d2lzZSB0aGUgY29tcGlsZXIgd2lsbCB0aGluayB0aGF0IGVhY2ggY29tbWEgaW4gdGhlCit0eXBl
IGxpc3QgaW50cm9kdWNlcyBhIG5ldyBtYWNybyBhcmd1bWVudC4KKworVGhlbiwgdXNlIGBUWVBF
RF9URVNUKClgIGluc3RlYWQgb2YgYFRFU1RfRigpYCB0byBkZWZpbmUgYSB0eXBlZCB0ZXN0Citm
b3IgdGhpcyB0ZXN0IGNhc2UuICBZb3UgY2FuIHJlcGVhdCB0aGlzIGFzIG1hbnkgdGltZXMgYXMg
eW91IHdhbnQ6CisKK2BgYAorVFlQRURfVEVTVChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJ
bnNpZGUgYSB0ZXN0LCByZWZlciB0byB0aGUgc3BlY2lhbCBuYW1lIFR5cGVQYXJhbSB0byBnZXQg
dGhlIHR5cGUKKyAgLy8gcGFyYW1ldGVyLiAgU2luY2Ugd2UgYXJlIGluc2lkZSBhIGRlcml2ZWQg
Y2xhc3MgdGVtcGxhdGUsIEMrKyByZXF1aXJlcworICAvLyB1cyB0byB2aXNpdCB0aGUgbWVtYmVy
cyBvZiBGb29UZXN0IHZpYSAndGhpcycuCisgIFR5cGVQYXJhbSBuID0gdGhpcy0+dmFsdWVfOwor
CisgIC8vIFRvIHZpc2l0IHN0YXRpYyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlLCBhZGQgdGhlICdU
ZXN0Rml4dHVyZTo6JworICAvLyBwcmVmaXguCisgIG4gKz0gVGVzdEZpeHR1cmU6OnNoYXJlZF87
CisKKyAgLy8gVG8gcmVmZXIgdG8gdHlwZWRlZnMgaW4gdGhlIGZpeHR1cmUsIGFkZCB0aGUgJ3R5
cGVuYW1lIFRlc3RGaXh0dXJlOjonCisgIC8vIHByZWZpeC4gIFRoZSAndHlwZW5hbWUnIGlzIHJl
cXVpcmVkIHRvIHNhdGlzZnkgdGhlIGNvbXBpbGVyLgorICB0eXBlbmFtZSBUZXN0Rml4dHVyZTo6
TGlzdCB2YWx1ZXM7CisgIHZhbHVlcy5wdXNoX2JhY2sobik7CisgIC4uLgorfQorCitUWVBFRF9U
RVNUKEZvb1Rlc3QsIEhhc1Byb3BlcnR5QSkgeyAuLi4gfQorYGBgCisKK1lvdSBjYW4gc2VlIGBz
YW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2NgIGZvciBhIGNvbXBsZXRlIGV4YW1wbGUuCisKK19B
dmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUp
LCBNYWM7CitzaW5jZSB2ZXJzaW9uIDEuMS4wLgorCisjIFR5cGUtUGFyYW1ldGVyaXplZCBUZXN0
cyAjCisKK19UeXBlLXBhcmFtZXRlcml6ZWQgdGVzdHNfIGFyZSBsaWtlIHR5cGVkIHRlc3RzLCBl
eGNlcHQgdGhhdCB0aGV5Citkb24ndCByZXF1aXJlIHlvdSB0byBrbm93IHRoZSBsaXN0IG9mIHR5
cGVzIGFoZWFkIG9mIHRpbWUuICBJbnN0ZWFkLAoreW91IGNhbiBkZWZpbmUgdGhlIHRlc3QgbG9n
aWMgZmlyc3QgYW5kIGluc3RhbnRpYXRlIGl0IHdpdGggZGlmZmVyZW50Cit0eXBlIGxpc3RzIGxh
dGVyLiAgWW91IGNhbiBldmVuIGluc3RhbnRpYXRlIGl0IG1vcmUgdGhhbiBvbmNlIGluIHRoZQor
c2FtZSBwcm9ncmFtLgorCitJZiB5b3UgYXJlIGRlc2lnbmluZyBhbiBpbnRlcmZhY2Ugb3IgY29u
Y2VwdCwgeW91IGNhbiBkZWZpbmUgYSBzdWl0ZQorb2YgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3Rz
IHRvIHZlcmlmeSBwcm9wZXJ0aWVzIHRoYXQgYW55IHZhbGlkCitpbXBsZW1lbnRhdGlvbiBvZiB0
aGUgaW50ZXJmYWNlL2NvbmNlcHQgc2hvdWxkIGhhdmUuICBUaGVuLCB0aGUgYXV0aG9yCitvZiBl
YWNoIGltcGxlbWVudGF0aW9uIGNhbiBqdXN0IGluc3RhbnRpYXRlIHRoZSB0ZXN0IHN1aXRlIHdp
dGggaGlzCit0eXBlIHRvIHZlcmlmeSB0aGF0IGl0IGNvbmZvcm1zIHRvIHRoZSByZXF1aXJlbWVu
dHMsIHdpdGhvdXQgaGF2aW5nIHRvCit3cml0ZSBzaW1pbGFyIHRlc3RzIHJlcGVhdGVkbHkuICBI
ZXJlJ3MgYW4gZXhhbXBsZToKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxh
dGUsIGFzIHdlIGRpZCB3aXRoIHR5cGVkIHRlc3RzOgorCitgYGAKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICAuLi4KK307
CitgYGAKKworTmV4dCwgZGVjbGFyZSB0aGF0IHlvdSB3aWxsIGRlZmluZSBhIHR5cGUtcGFyYW1l
dGVyaXplZCB0ZXN0IGNhc2U6CisKK2BgYAorVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7Citg
YGAKKworVGhlIGBfUGAgc3VmZml4IGlzIGZvciAicGFyYW1ldGVyaXplZCIgb3IgInBhdHRlcm4i
LCB3aGljaGV2ZXIgeW91CitwcmVmZXIgdG8gdGhpbmsuCisKK1RoZW4sIHVzZSBgVFlQRURfVEVT
VF9QKClgIHRvIGRlZmluZSBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LiAgWW91CitjYW4gcmVw
ZWF0IHRoaXMgYXMgbWFueSB0aW1lcyBhcyB5b3Ugd2FudDoKKworYGBgCitUWVBFRF9URVNUX1Ao
Rm9vVGVzdCwgRG9lc0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIgdG8gVHlwZVBh
cmFtIHRvIGdldCB0aGUgdHlwZSBwYXJhbWV0ZXIuCisgIFR5cGVQYXJhbSBuID0gMDsKKyAgLi4u
Cit9CisKK1RZUEVEX1RFU1RfUChGb29UZXN0LCBIYXNQcm9wZXJ0eUEpIHsgLi4uIH0KK2BgYAor
CitOb3cgdGhlIHRyaWNreSBwYXJ0OiB5b3UgbmVlZCB0byByZWdpc3RlciBhbGwgdGVzdCBwYXR0
ZXJucyB1c2luZyB0aGUKK2BSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUGAgbWFjcm8gYmVmb3Jl
IHlvdSBjYW4gaW5zdGFudGlhdGUgdGhlbS4KK1RoZSBmaXJzdCBhcmd1bWVudCBvZiB0aGUgbWFj
cm8gaXMgdGhlIHRlc3QgY2FzZSBuYW1lOyB0aGUgcmVzdCBhcmUKK3RoZSBuYW1lcyBvZiB0aGUg
dGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2U6CisKK2BgYAorUkVHSVNURVJfVFlQRURfVEVTVF9DQVNF
X1AoRm9vVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERvZXNCbGFoLCBIYXNQcm9w
ZXJ0eUEpOworYGBgCisKK0ZpbmFsbHksIHlvdSBhcmUgZnJlZSB0byBpbnN0YW50aWF0ZSB0aGUg
cGF0dGVybiB3aXRoIHRoZSB0eXBlcyB5b3UKK3dhbnQuICBJZiB5b3UgcHV0IHRoZSBhYm92ZSBj
b2RlIGluIGEgaGVhZGVyIGZpbGUsIHlvdSBjYW4gYCNpbmNsdWRlYAoraXQgaW4gbXVsdGlwbGUg
QysrIHNvdXJjZSBmaWxlcyBhbmQgaW5zdGFudGlhdGUgaXQgbXVsdGlwbGUgdGltZXMuCisKK2Bg
YAordHlwZWRlZiA6OnRlc3Rpbmc6OlR5cGVzPGNoYXIsIGludCwgdW5zaWduZWQgaW50PiBNeVR5
cGVzOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMp
OworYGBgCisKK1RvIGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRl
cm4sIHRoZSBmaXJzdCBhcmd1bWVudAordG8gdGhlIGBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NB
U0VfUGAgbWFjcm8gaXMgYSBwcmVmaXggdGhhdCB3aWxsIGJlCithZGRlZCB0byB0aGUgYWN0dWFs
IHRlc3QgY2FzZSBuYW1lLiAgUmVtZW1iZXIgdG8gcGljayB1bmlxdWUgcHJlZml4ZXMKK2ZvciBk
aWZmZXJlbnQgaW5zdGFuY2VzLgorCitJbiB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoZSB0eXBl
IGxpc3QgY29udGFpbnMgb25seSBvbmUgdHlwZSwgeW91CitjYW4gd3JpdGUgdGhhdCB0eXBlIGRp
cmVjdGx5IHdpdGhvdXQgYDo6dGVzdGluZzo6VHlwZXM8Li4uPmAsIGxpa2UgdGhpczoKKworYGBg
CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgaW50KTsKK2BgYAor
CitZb3UgY2FuIHNlZSBgc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjYCBmb3IgYSBjb21wbGV0
ZSBleGFtcGxlLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1T
VkMgOC4wIG9yIGFib3ZlKSwgTWFjOworc2luY2UgdmVyc2lvbiAxLjEuMC4KKworIyBUZXN0aW5n
IFByaXZhdGUgQ29kZSAjCisKK0lmIHlvdSBjaGFuZ2UgeW91ciBzb2Z0d2FyZSdzIGludGVybmFs
IGltcGxlbWVudGF0aW9uLCB5b3VyIHRlc3RzIHNob3VsZCBub3QKK2JyZWFrIGFzIGxvbmcgYXMg
dGhlIGNoYW5nZSBpcyBub3Qgb2JzZXJ2YWJsZSBieSB1c2Vycy4gVGhlcmVmb3JlLCBwZXIgdGhl
CitfYmxhY2stYm94IHRlc3RpbmcgcHJpbmNpcGxlXywgbW9zdCBvZiB0aGUgdGltZSB5b3Ugc2hv
dWxkIHRlc3QgeW91ciBjb2RlCit0aHJvdWdoIGl0cyBwdWJsaWMgaW50ZXJmYWNlcy4KKworSWYg
eW91IHN0aWxsIGZpbmQgeW91cnNlbGYgbmVlZGluZyB0byB0ZXN0IGludGVybmFsIGltcGxlbWVu
dGF0aW9uIGNvZGUsCitjb25zaWRlciBpZiB0aGVyZSdzIGEgYmV0dGVyIGRlc2lnbiB0aGF0IHdv
dWxkbid0IHJlcXVpcmUgeW91IHRvIGRvIHNvLiBJZiB5b3UKK2Fic29sdXRlbHkgaGF2ZSB0byB0
ZXN0IG5vbi1wdWJsaWMgaW50ZXJmYWNlIGNvZGUgdGhvdWdoLCB5b3UgY2FuLiBUaGVyZSBhcmUK
K3R3byBjYXNlcyB0byBjb25zaWRlcjoKKworICAqIFN0YXRpYyBmdW5jdGlvbnMgKF9ub3RfIHRo
ZSBzYW1lIGFzIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zISkgb3IgdW5uYW1lZCBuYW1lc3BhY2Vz
LCBhbmQKKyAgKiBQcml2YXRlIG9yIHByb3RlY3RlZCBjbGFzcyBtZW1iZXJzCisKKyMjIFN0YXRp
YyBGdW5jdGlvbnMgIyMKKworQm90aCBzdGF0aWMgZnVuY3Rpb25zIGFuZCBkZWZpbml0aW9ucy9k
ZWNsYXJhdGlvbnMgaW4gYW4gdW5uYW1lZCBuYW1lc3BhY2UgYXJlCitvbmx5IHZpc2libGUgd2l0
aGluIHRoZSBzYW1lIHRyYW5zbGF0aW9uIHVuaXQuIFRvIHRlc3QgdGhlbSwgeW91IGNhbiBgI2lu
Y2x1ZGVgCit0aGUgZW50aXJlIGAuY2NgIGZpbGUgYmVpbmcgdGVzdGVkIGluIHlvdXIgYCpfdGVz
dC5jY2AgZmlsZS4gKGAjaW5jbHVkZWBpbmcgYC5jY2AKK2ZpbGVzIGlzIG5vdCBhIGdvb2Qgd2F5
IHRvIHJldXNlIGNvZGUgLSB5b3Ugc2hvdWxkIG5vdCBkbyB0aGlzIGluIHByb2R1Y3Rpb24KK2Nv
ZGUhKQorCitIb3dldmVyLCBhIGJldHRlciBhcHByb2FjaCBpcyB0byBtb3ZlIHRoZSBwcml2YXRl
IGNvZGUgaW50byB0aGUKK2Bmb286OmludGVybmFsYCBuYW1lc3BhY2UsIHdoZXJlIGBmb29gIGlz
IHRoZSBuYW1lc3BhY2UgeW91ciBwcm9qZWN0IG5vcm1hbGx5Cit1c2VzLCBhbmQgcHV0IHRoZSBw
cml2YXRlIGRlY2xhcmF0aW9ucyBpbiBhIGAqLWludGVybmFsLmhgIGZpbGUuIFlvdXIKK3Byb2R1
Y3Rpb24gYC5jY2AgZmlsZXMgYW5kIHlvdXIgdGVzdHMgYXJlIGFsbG93ZWQgdG8gaW5jbHVkZSB0
aGlzIGludGVybmFsCitoZWFkZXIsIGJ1dCB5b3VyIGNsaWVudHMgYXJlIG5vdC4gVGhpcyB3YXks
IHlvdSBjYW4gZnVsbHkgdGVzdCB5b3VyIGludGVybmFsCitpbXBsZW1lbnRhdGlvbiB3aXRob3V0
IGxlYWtpbmcgaXQgdG8geW91ciBjbGllbnRzLgorCisjIyBQcml2YXRlIENsYXNzIE1lbWJlcnMg
IyMKKworUHJpdmF0ZSBjbGFzcyBtZW1iZXJzIGFyZSBvbmx5IGFjY2Vzc2libGUgZnJvbSB3aXRo
aW4gdGhlIGNsYXNzIG9yIGJ5IGZyaWVuZHMuCitUbyBhY2Nlc3MgYSBjbGFzcycgcHJpdmF0ZSBt
ZW1iZXJzLCB5b3UgY2FuIGRlY2xhcmUgeW91ciB0ZXN0IGZpeHR1cmUgYXMgYQorZnJpZW5kIHRv
IHRoZSBjbGFzcyBhbmQgZGVmaW5lIGFjY2Vzc29ycyBpbiB5b3VyIGZpeHR1cmUuIFRlc3RzIHVz
aW5nIHRoZQorZml4dHVyZSBjYW4gdGhlbiBhY2Nlc3MgdGhlIHByaXZhdGUgbWVtYmVycyBvZiB5
b3VyIHByb2R1Y3Rpb24gY2xhc3MgdmlhIHRoZQorYWNjZXNzb3JzIGluIHRoZSBmaXh0dXJlLiBO
b3RlIHRoYXQgZXZlbiB0aG91Z2ggeW91ciBmaXh0dXJlIGlzIGEgZnJpZW5kIHRvCit5b3VyIHBy
b2R1Y3Rpb24gY2xhc3MsIHlvdXIgdGVzdHMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IGZyaWVuZHMg
dG8gaXQsIGFzIHRoZXkKK2FyZSB0ZWNobmljYWxseSBkZWZpbmVkIGluIHN1Yi1jbGFzc2VzIG9m
IHRoZSBmaXh0dXJlLgorCitBbm90aGVyIHdheSB0byB0ZXN0IHByaXZhdGUgbWVtYmVycyBpcyB0
byByZWZhY3RvciB0aGVtIGludG8gYW4gaW1wbGVtZW50YXRpb24KK2NsYXNzLCB3aGljaCBpcyB0
aGVuIGRlY2xhcmVkIGluIGEgYCotaW50ZXJuYWwuaGAgZmlsZS4gWW91ciBjbGllbnRzIGFyZW4n
dAorYWxsb3dlZCB0byBpbmNsdWRlIHRoaXMgaGVhZGVyIGJ1dCB5b3VyIHRlc3RzIGNhbi4gU3Vj
aCBpcyBjYWxsZWQgdGhlIFBpbXBsCisoUHJpdmF0ZSBJbXBsZW1lbnRhdGlvbikgaWRpb20uCisK
K09yLCB5b3UgY2FuIGRlY2xhcmUgYW4gaW5kaXZpZHVhbCB0ZXN0IGFzIGEgZnJpZW5kIG9mIHlv
dXIgY2xhc3MgYnkgYWRkaW5nIHRoaXMKK2xpbmUgaW4gdGhlIGNsYXNzIGJvZHk6CisKK2BgYAor
RlJJRU5EX1RFU1QoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSk7CitgYGAKKworRm9yIGV4YW1wbGUs
CitgYGAKKy8vIGZvby5oCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3RfcHJvZC5oPgorCisvLyBEZWZp
bmVzIEZSSUVORF9URVNULgorY2xhc3MgRm9vIHsKKyAgLi4uCisgcHJpdmF0ZToKKyAgRlJJRU5E
X1RFU1QoRm9vVGVzdCwgQmFyUmV0dXJuc1plcm9Pbk51bGwpOworICBpbnQgQmFyKHZvaWQqIHgp
OworfTsKKworLy8gZm9vX3Rlc3QuY2MKKy4uLgorVEVTVChGb29UZXN0LCBCYXJSZXR1cm5zWmVy
b09uTnVsbCkgeworICBGb28gZm9vOworICBFWFBFQ1RfRVEoMCwgZm9vLkJhcihOVUxMKSk7Cisg
IC8vIFVzZXMgRm9vJ3MgcHJpdmF0ZSBtZW1iZXIgQmFyKCkuCit9CitgYGAKKworUGF5IHNwZWNp
YWwgYXR0ZW50aW9uIHdoZW4geW91ciBjbGFzcyBpcyBkZWZpbmVkIGluIGEgbmFtZXNwYWNlLCBh
cyB5b3Ugc2hvdWxkCitkZWZpbmUgeW91ciB0ZXN0IGZpeHR1cmVzIGFuZCB0ZXN0cyBpbiB0aGUg
c2FtZSBuYW1lc3BhY2UgaWYgeW91IHdhbnQgdGhlbSB0bworYmUgZnJpZW5kcyBvZiB5b3VyIGNs
YXNzLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGNvZGUgdG8gYmUgdGVzdGVkIGxvb2tzIGxpa2U6CisK
K2BgYAorbmFtZXNwYWNlIG15X25hbWVzcGFjZSB7CisKK2NsYXNzIEZvbyB7CisgIGZyaWVuZCBj
bGFzcyBGb29UZXN0OworICBGUklFTkRfVEVTVChGb29UZXN0LCBCYXIpOworICBGUklFTkRfVEVT
VChGb29UZXN0LCBCYXopOworICAuLi4KKyAgZGVmaW5pdGlvbiBvZiB0aGUgY2xhc3MgRm9vCisg
IC4uLgorfTsKKworfSAgLy8gbmFtZXNwYWNlIG15X25hbWVzcGFjZQorYGBgCisKK1lvdXIgdGVz
dCBjb2RlIHNob3VsZCBiZSBzb21ldGhpbmcgbGlrZToKKworYGBgCituYW1lc3BhY2UgbXlfbmFt
ZXNwYWNlIHsKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90
ZWN0ZWQ6CisgIC4uLgorfTsKKworVEVTVF9GKEZvb1Rlc3QsIEJhcikgeyAuLi4gfQorVEVTVF9G
KEZvb1Rlc3QsIEJheikgeyAuLi4gfQorCit9ICAvLyBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlCitg
YGAKKworIyBDYXRjaGluZyBGYWlsdXJlcyAjCisKK0lmIHlvdSBhcmUgYnVpbGRpbmcgYSB0ZXN0
aW5nIHV0aWxpdHkgb24gdG9wIG9mIEdvb2dsZSBUZXN0LCB5b3UnbGwKK3dhbnQgdG8gdGVzdCB5
b3VyIHV0aWxpdHkuICBXaGF0IGZyYW1ld29yayB3b3VsZCB5b3UgdXNlIHRvIHRlc3QgaXQ/CitH
b29nbGUgVGVzdCwgb2YgY291cnNlLgorCitUaGUgY2hhbGxlbmdlIGlzIHRvIHZlcmlmeSB0aGF0
IHlvdXIgdGVzdGluZyB1dGlsaXR5IHJlcG9ydHMgZmFpbHVyZXMKK2NvcnJlY3RseS4gIEluIGZy
YW1ld29ya3MgdGhhdCByZXBvcnQgYSBmYWlsdXJlIGJ5IHRocm93aW5nIGFuCitleGNlcHRpb24s
IHlvdSBjb3VsZCBjYXRjaCB0aGUgZXhjZXB0aW9uIGFuZCBhc3NlcnQgb24gaXQuICBCdXQgR29v
Z2xlCitUZXN0IGRvZXNuJ3QgdXNlIGV4Y2VwdGlvbnMsIHNvIGhvdyBkbyB3ZSB0ZXN0IHRoYXQg
YSBwaWVjZSBvZiBjb2RlCitnZW5lcmF0ZXMgYW4gZXhwZWN0ZWQgZmFpbHVyZT8KKworYDxndGVz
dC9ndGVzdC1zcGkuaD5gIGNvbnRhaW5zIHNvbWUgY29uc3RydWN0cyB0byBkbyB0aGlzLiAgQWZ0
ZXIKK2AjaW5jbHVkZWBpbmcgdGhpcyBoZWFkZXIsIHlvdSBjYW4gdXNlCisKK3wgYEVYUEVDVF9G
QVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50LCBzdWJzdHJpbmdfYCk7YCB8Cit8Oi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorCit0byBhc3NlcnQgdGhh
dCBfc3RhdGVtZW50XyBnZW5lcmF0ZXMgYSBmYXRhbCAoZS5nLiBgQVNTRVJUXypgKSBmYWlsdXJl
Cit3aG9zZSBtZXNzYWdlIGNvbnRhaW5zIHRoZSBnaXZlbiBfc3Vic3RyaW5nXywgb3IgdXNlCisK
K3wgYEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50LCBzdWJzdHJpbmdfYCk7YCB8
Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fAorCitpZiB5b3UgYXJlIGV4cGVjdGluZyBhIG5vbi1mYXRhbCAoZS5nLiBgRVhQRUNUXypgKSBm
YWlsdXJlLgorCitGb3IgdGVjaG5pY2FsIHJlYXNvbnMsIHRoZXJlIGFyZSBzb21lIGNhdmVhdHM6
CisKKyAgMS4gWW91IGNhbm5vdCBzdHJlYW0gYSBmYWlsdXJlIG1lc3NhZ2UgdG8gZWl0aGVyIG1h
Y3JvLgorICAxLiBfc3RhdGVtZW50XyBpbiBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKWAgY2Fubm90
IHJlZmVyZW5jZSBsb2NhbCBub24tc3RhdGljIHZhcmlhYmxlcyBvciBub24tc3RhdGljIG1lbWJl
cnMgb2YgYHRoaXNgIG9iamVjdC4KKyAgMS4gX3N0YXRlbWVudF8gaW4gYEVYUEVDVF9GQVRBTF9G
QUlMVVJFKClgIGNhbm5vdCByZXR1cm4gYSB2YWx1ZS4KKworX05vdGU6XyBHb29nbGUgVGVzdCBp
cyBkZXNpZ25lZCB3aXRoIHRocmVhZHMgaW4gbWluZC4gIE9uY2UgdGhlCitzeW5jaHJvbml6YXRp
b24gcHJpbWl0aXZlcyBpbiBgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD5gIGhhdmUKK2Jl
ZW4gaW1wbGVtZW50ZWQsIEdvb2dsZSBUZXN0IHdpbGwgYmVjb21lIHRocmVhZC1zYWZlLCBtZWFu
aW5nIHRoYXQKK3lvdSBjYW4gdGhlbiB1c2UgYXNzZXJ0aW9ucyBpbiBtdWx0aXBsZSB0aHJlYWRz
IGNvbmN1cnJlbnRseS4gIEJlZm9yZQorCit0aGF0LCBob3dldmVyLCBHb29nbGUgVGVzdCBvbmx5
IHN1cHBvcnRzIHNpbmdsZS10aHJlYWRlZCB1c2FnZS4gIE9uY2UKK3RocmVhZC1zYWZlLCBgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoKWAgYW5kIGBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpYAord2ls
bCBjYXB0dXJlIGZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZCBvbmx5LiBJZiBfc3RhdGVt
ZW50XworY3JlYXRlcyBuZXcgdGhyZWFkcywgZmFpbHVyZXMgaW4gdGhlc2UgdGhyZWFkcyB3aWxs
IGJlIGlnbm9yZWQuICBJZgoreW91IHdhbnQgdG8gY2FwdHVyZSBmYWlsdXJlcyBmcm9tIGFsbCB0
aHJlYWRzIGluc3RlYWQsIHlvdSBzaG91bGQgdXNlCit0aGUgZm9sbG93aW5nIG1hY3JvczoKKwor
fCBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoYF9zdGF0ZW1lbnQsIHN1YnN0
cmluZ19gKTtgIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9B
TExfVEhSRUFEUyhgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAorCisjIEdldHRpbmcgdGhl
IEN1cnJlbnQgVGVzdCdzIE5hbWUgIworCitTb21ldGltZXMgYSBmdW5jdGlvbiBtYXkgbmVlZCB0
byBrbm93IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LgorRm9yIGV4YW1w
bGUsIHlvdSBtYXkgYmUgdXNpbmcgdGhlIGBTZXRVcCgpYCBtZXRob2Qgb2YgeW91ciB0ZXN0IGZp
eHR1cmUgdG8gc2V0Cit0aGUgZ29sZGVuIGZpbGUgbmFtZSBiYXNlZCBvbiB3aGljaCB0ZXN0IGlz
IHJ1bm5pbmcuIFRoZSBgOjp0ZXN0aW5nOjpUZXN0SW5mb2AKK2NsYXNzIGhhcyB0aGlzIGluZm9y
bWF0aW9uOgorCitgYGAKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworY2xhc3MgVGVzdEluZm8gewor
IHB1YmxpYzoKKyAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIG5hbWUgYW5kIHRoZSB0ZXN0IG5h
bWUsIHJlc3BlY3RpdmVseS4KKyAgLy8KKyAgLy8gRG8gTk9UIGRlbGV0ZSBvciBmcmVlIHRoZSBy
ZXR1cm4gdmFsdWUgLSBpdCdzIG1hbmFnZWQgYnkgdGhlCisgIC8vIFRlc3RJbmZvIGNsYXNzLgor
ICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0OworICBjb25zdCBjaGFyKiBuYW1l
KCkgY29uc3Q7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworYGBgCisKKworPiBUbyBv
YnRhaW4gYSBgVGVzdEluZm9gIG9iamVjdCBmb3IgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRlc3Qs
IGNhbGwKK2BjdXJyZW50X3Rlc3RfaW5mbygpYCBvbiB0aGUgYFVuaXRUZXN0YCBzaW5nbGV0b24g
b2JqZWN0OgorCitgYGAKKy8vIEdldHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnRseSBy
dW5uaW5nIHRlc3QuCisvLyBEbyBOT1QgZGVsZXRlIHRoZSByZXR1cm5lZCBvYmplY3QgLSBpdCdz
IG1hbmFnZWQgYnkgdGhlIFVuaXRUZXN0IGNsYXNzLgorY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5m
byogY29uc3QgdGVzdF9pbmZvID0KKyAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2Uo
KS0+Y3VycmVudF90ZXN0X2luZm8oKTsKK3ByaW50ZigiV2UgYXJlIGluIHRlc3QgJXMgb2YgdGVz
dCBjYXNlICVzLlxuIiwKKyAgICAgICB0ZXN0X2luZm8tPm5hbWUoKSwgdGVzdF9pbmZvLT50ZXN0
X2Nhc2VfbmFtZSgpKTsKK2BgYAorCitgY3VycmVudF90ZXN0X2luZm8oKWAgcmV0dXJucyBhIG51
bGwgcG9pbnRlciBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcuIEluCitwYXJ0aWN1bGFyLCB5b3UgY2Fu
bm90IGZpbmQgdGhlIHRlc3QgY2FzZSBuYW1lIGluIGBUZXN0Q2FzZVNldFVwKClgLAorYFRlc3RD
YXNlVGVhckRvd24oKWAgKHdoZXJlIHlvdSBrbm93IHRoZSB0ZXN0IGNhc2UgbmFtZSBpbXBsaWNp
dGx5KSwgb3IKK2Z1bmN0aW9ucyBjYWxsZWQgZnJvbSB0aGVtLgorCitfQXZhaWxhYmlsaXR5Ol8g
TGludXgsIFdpbmRvd3MsIE1hYy4KKworIyBFeHRlbmRpbmcgR29vZ2xlIFRlc3QgYnkgSGFuZGxp
bmcgVGVzdCBFdmVudHMgIworCitHb29nbGUgVGVzdCBwcm92aWRlcyBhbiA8Yj5ldmVudCBsaXN0
ZW5lciBBUEk8L2I+IHRvIGxldCB5b3UgcmVjZWl2ZQorbm90aWZpY2F0aW9ucyBhYm91dCB0aGUg
cHJvZ3Jlc3Mgb2YgYSB0ZXN0IHByb2dyYW0gYW5kIHRlc3QKK2ZhaWx1cmVzLiBUaGUgZXZlbnRz
IHlvdSBjYW4gbGlzdGVuIHRvIGluY2x1ZGUgdGhlIHN0YXJ0IGFuZCBlbmQgb2YKK3RoZSB0ZXN0
IHByb2dyYW0sIGEgdGVzdCBjYXNlLCBvciBhIHRlc3QgbWV0aG9kLCBhbW9uZyBvdGhlcnMuIFlv
dSBtYXkKK3VzZSB0aGlzIEFQSSB0byBhdWdtZW50IG9yIHJlcGxhY2UgdGhlIHN0YW5kYXJkIGNv
bnNvbGUgb3V0cHV0LAorcmVwbGFjZSB0aGUgWE1MIG91dHB1dCwgb3IgcHJvdmlkZSBhIGNvbXBs
ZXRlbHkgZGlmZmVyZW50IGZvcm0gb2YKK291dHB1dCwgc3VjaCBhcyBhIEdVSSBvciBhIGRhdGFi
YXNlLiBZb3UgY2FuIGFsc28gdXNlIHRlc3QgZXZlbnRzIGFzCitjaGVja3BvaW50cyB0byBpbXBs
ZW1lbnQgYSByZXNvdXJjZSBsZWFrIGNoZWNrZXIsIGZvciBleGFtcGxlLgorCitfQXZhaWxhYmls
aXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdjEuNC4wLgorCisjIyBEZWZpbmluZyBF
dmVudCBMaXN0ZW5lcnMgIyMKKworVG8gZGVmaW5lIGEgZXZlbnQgbGlzdGVuZXIsIHlvdSBzdWJj
bGFzcyBlaXRoZXIKK1t0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcl0oLi4vaW5jbHVkZS9ndGVz
dC9ndGVzdC5oI0w4NTUpCitvciBbdGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lcl0oLi4v
aW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w5MDUpLgorVGhlIGZvcm1lciBpcyBhbiAoYWJzdHJhY3Qp
IGludGVyZmFjZSwgd2hlcmUgPGk+ZWFjaCBwdXJlIHZpcnR1YWwgbWV0aG9kPGJyPgorY2FuIGJl
IG92ZXJyaWRkZW4gdG8gaGFuZGxlIGEgdGVzdCBldmVudDwvaT4gKEZvciBleGFtcGxlLCB3aGVu
IGEgdGVzdAorc3RhcnRzLCB0aGUgYE9uVGVzdFN0YXJ0KClgIG1ldGhvZCB3aWxsIGJlIGNhbGxl
ZC4pLiBUaGUgbGF0dGVyIHByb3ZpZGVzCithbiBlbXB0eSBpbXBsZW1lbnRhdGlvbiBvZiBhbGwg
bWV0aG9kcyBpbiB0aGUgaW50ZXJmYWNlLCBzdWNoIHRoYXQgYQorc3ViY2xhc3Mgb25seSBuZWVk
cyB0byBvdmVycmlkZSB0aGUgbWV0aG9kcyBpdCBjYXJlcyBhYm91dC4KKworV2hlbiBhbiBldmVu
dCBpcyBmaXJlZCwgaXRzIGNvbnRleHQgaXMgcGFzc2VkIHRvIHRoZSBoYW5kbGVyIGZ1bmN0aW9u
CithcyBhbiBhcmd1bWVudC4gVGhlIGZvbGxvd2luZyBhcmd1bWVudCB0eXBlcyBhcmUgdXNlZDoK
KyAgKiBbVW5pdFRlc3RdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMMTAwNykgcmVmbGVjdHMg
dGhlIHN0YXRlIG9mIHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFtLAorICAqIFtUZXN0Q2FzZV0oLi4v
aW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w2ODkpIGhhcyBpbmZvcm1hdGlvbiBhYm91dCBhIHRlc3Qg
Y2FzZSwgd2hpY2ggY2FuIGNvbnRhaW4gb25lIG9yIG1vcmUgdGVzdHMsCisgICogW1Rlc3RJbmZv
XSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDU5OSkgY29udGFpbnMgdGhlIHN0YXRlIG9mIGEg
dGVzdCwgYW5kCisgICogW1Rlc3RQYXJ0UmVzdWx0XSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXRl
c3QtcGFydC5oI0w0MikgcmVwcmVzZW50cyB0aGUgcmVzdWx0IG9mIGEgdGVzdCBhc3NlcnRpb24u
CisKK0FuIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb24gY2FuIGV4YW1pbmUgdGhlIGFyZ3VtZW50IGl0
IHJlY2VpdmVzIHRvIGZpbmQKK291dCBpbnRlcmVzdGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUg
ZXZlbnQgYW5kIHRoZSB0ZXN0IHByb2dyYW0ncworc3RhdGUuICBIZXJlJ3MgYW4gZXhhbXBsZToK
KworYGBgCisgIGNsYXNzIE1pbmltYWxpc3RQcmludGVyIDogcHVibGljIDo6dGVzdGluZzo6RW1w
dHlUZXN0RXZlbnRMaXN0ZW5lciB7CisgICAgLy8gQ2FsbGVkIGJlZm9yZSBhIHRlc3Qgc3RhcnRz
LgorICAgIHZpcnR1YWwgdm9pZCBPblRlc3RTdGFydChjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZv
JiB0ZXN0X2luZm8pIHsKKyAgICAgIHByaW50ZigiKioqIFRlc3QgJXMuJXMgc3RhcnRpbmcuXG4i
LAorICAgICAgICAgICAgIHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFt
ZSgpKTsKKyAgICB9CisKKyAgICAvLyBDYWxsZWQgYWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0aW9uIG9y
IGEgU1VDQ0VTUygpLgorICAgIHZpcnR1YWwgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KAorICAgICAg
ICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7Cisg
ICAgICBwcmludGYoIiVzIGluICVzOiVkXG4lc1xuIiwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRf
cmVzdWx0LmZhaWxlZCgpID8gIioqKiBGYWlsdXJlIiA6ICJTdWNjZXNzIiwKKyAgICAgICAgICAg
ICB0ZXN0X3BhcnRfcmVzdWx0LmZpbGVfbmFtZSgpLAorICAgICAgICAgICAgIHRlc3RfcGFydF9y
ZXN1bHQubGluZV9udW1iZXIoKSwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LnN1bW1h
cnkoKSk7CisgICAgfQorCisgICAgLy8gQ2FsbGVkIGFmdGVyIGEgdGVzdCBlbmRzLgorICAgIHZp
cnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyYgdGVzdF9pbmZv
KSB7CisgICAgICBwcmludGYoIioqKiBUZXN0ICVzLiVzIGVuZGluZy5cbiIsCisgICAgICAgICAg
ICAgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOworICAgIH0K
KyAgfTsKK2BgYAorCisjIyBVc2luZyBFdmVudCBMaXN0ZW5lcnMgIyMKKworVG8gdXNlIHRoZSBl
dmVudCBsaXN0ZW5lciB5b3UgaGF2ZSBkZWZpbmVkLCBhZGQgYW4gaW5zdGFuY2Ugb2YgaXQgdG8K
K3RoZSBHb29nbGUgVGVzdCBldmVudCBsaXN0ZW5lciBsaXN0IChyZXByZXNlbnRlZCBieSBjbGFz
cworW1Rlc3RFdmVudExpc3RlbmVyc10oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w5MjkpCist
IG5vdGUgdGhlICJzIiBhdCB0aGUgZW5kIG9mIHRoZSBuYW1lKSBpbiB5b3VyCitgbWFpbigpYCBm
dW5jdGlvbiwgYmVmb3JlIGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWA6CitgYGAKK2ludCBtYWlu
KGludCBhcmdjLCBjaGFyKiogYXJndikgeworICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZh
cmdjLCBhcmd2KTsKKyAgLy8gR2V0cyBob2xkIG9mIHRoZSBldmVudCBsaXN0ZW5lciBsaXN0Lgor
ICA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0KKyAgICAgIDo6dGVz
dGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpOworICAvLyBBZGRzIGEg
bGlzdGVuZXIgdG8gdGhlIGVuZC4gIEdvb2dsZSBUZXN0IHRha2VzIHRoZSBvd25lcnNoaXAuCisg
IGxpc3RlbmVycy5BcHBlbmQobmV3IE1pbmltYWxpc3RQcmludGVyKTsKKyAgcmV0dXJuIFJVTl9B
TExfVEVTVFMoKTsKK30KK2BgYAorCitUaGVyZSdzIG9ubHkgb25lIHByb2JsZW06IHRoZSBkZWZh
dWx0IHRlc3QgcmVzdWx0IHByaW50ZXIgaXMgc3RpbGwgaW4KK2VmZmVjdCwgc28gaXRzIG91dHB1
dCB3aWxsIG1pbmdsZSB3aXRoIHRoZSBvdXRwdXQgZnJvbSB5b3VyIG1pbmltYWxpc3QKK3ByaW50
ZXIuIFRvIHN1cHByZXNzIHRoZSBkZWZhdWx0IHByaW50ZXIsIGp1c3QgcmVsZWFzZSBpdCBmcm9t
IHRoZQorZXZlbnQgbGlzdGVuZXIgbGlzdCBhbmQgZGVsZXRlIGl0LiBZb3UgY2FuIGRvIHNvIGJ5
IGFkZGluZyBvbmUgbGluZToKK2BgYAorICAuLi4KKyAgZGVsZXRlIGxpc3RlbmVycy5SZWxlYXNl
KGxpc3RlbmVycy5kZWZhdWx0X3Jlc3VsdF9wcmludGVyKCkpOworICBsaXN0ZW5lcnMuQXBwZW5k
KG5ldyBNaW5pbWFsaXN0UHJpbnRlcik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CitgYGAK
KworTm93LCBzaXQgYmFjayBhbmQgZW5qb3kgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBvdXRwdXQg
ZnJvbSB5b3VyCit0ZXN0cy4gRm9yIG1vcmUgZGV0YWlscywgeW91IGNhbiByZWFkIHRoaXMKK1tz
YW1wbGVdKC4uL3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYykuCisKK1lvdSBtYXkgYXBwZW5k
IG1vcmUgdGhhbiBvbmUgbGlzdGVuZXIgdG8gdGhlIGxpc3QuIFdoZW4gYW4gYE9uKlN0YXJ0KClg
CitvciBgT25UZXN0UGFydFJlc3VsdCgpYCBldmVudCBpcyBmaXJlZCwgdGhlIGxpc3RlbmVycyB3
aWxsIHJlY2VpdmUgaXQgaW4KK3RoZSBvcmRlciB0aGV5IGFwcGVhciBpbiB0aGUgbGlzdCAoc2lu
Y2UgbmV3IGxpc3RlbmVycyBhcmUgYWRkZWQgdG8KK3RoZSBlbmQgb2YgdGhlIGxpc3QsIHRoZSBk
ZWZhdWx0IHRleHQgcHJpbnRlciBhbmQgdGhlIGRlZmF1bHQgWE1MCitnZW5lcmF0b3Igd2lsbCBy
ZWNlaXZlIHRoZSBldmVudCBmaXJzdCkuIEFuIGBPbipFbmQoKWAgZXZlbnQgd2lsbCBiZQorcmVj
ZWl2ZWQgYnkgdGhlIGxpc3RlbmVycyBpbiB0aGUgX3JldmVyc2VfIG9yZGVyLiBUaGlzIGFsbG93
cyBvdXRwdXQgYnkKK2xpc3RlbmVycyBhZGRlZCBsYXRlciB0byBiZSBmcmFtZWQgYnkgb3V0cHV0
IGZyb20gbGlzdGVuZXJzIGFkZGVkCitlYXJsaWVyLgorCisjIyBHZW5lcmF0aW5nIEZhaWx1cmVz
IGluIExpc3RlbmVycyAjIworCitZb3UgbWF5IHVzZSBmYWlsdXJlLXJhaXNpbmcgbWFjcm9zIChg
RVhQRUNUXyooKWAsIGBBU1NFUlRfKigpYCwKK2BGQUlMKClgLCBldGMpIHdoZW4gcHJvY2Vzc2lu
ZyBhbiBldmVudC4gVGhlcmUgYXJlIHNvbWUgcmVzdHJpY3Rpb25zOgorCisgIDEuIFlvdSBjYW5u
b3QgZ2VuZXJhdGUgYW55IGZhaWx1cmUgaW4gYE9uVGVzdFBhcnRSZXN1bHQoKWAgKG90aGVyd2lz
ZSBpdCB3aWxsIGNhdXNlIGBPblRlc3RQYXJ0UmVzdWx0KClgIHRvIGJlIGNhbGxlZCByZWN1cnNp
dmVseSkuCisgIDEuIEEgbGlzdGVuZXIgdGhhdCBoYW5kbGVzIGBPblRlc3RQYXJ0UmVzdWx0KClg
IGlzIG5vdCBhbGxvd2VkIHRvIGdlbmVyYXRlIGFueSBmYWlsdXJlLgorCitXaGVuIHlvdSBhZGQg
bGlzdGVuZXJzIHRvIHRoZSBsaXN0ZW5lciBsaXN0LCB5b3Ugc2hvdWxkIHB1dCBsaXN0ZW5lcnMK
K3RoYXQgaGFuZGxlIGBPblRlc3RQYXJ0UmVzdWx0KClgIF9iZWZvcmVfIGxpc3RlbmVycyB0aGF0
IGNhbiBnZW5lcmF0ZQorZmFpbHVyZXMuIFRoaXMgZW5zdXJlcyB0aGF0IGZhaWx1cmVzIGdlbmVy
YXRlZCBieSB0aGUgbGF0dGVyIGFyZQorYXR0cmlidXRlZCB0byB0aGUgcmlnaHQgdGVzdCBieSB0
aGUgZm9ybWVyLgorCitXZSBoYXZlIGEgc2FtcGxlIG9mIGZhaWx1cmUtcmFpc2luZyBsaXN0ZW5l
cgorW2hlcmVdKC4uL3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MpLgorCisjIFJ1bm5pbmcg
VGVzdCBQcm9ncmFtczogQWR2YW5jZWQgT3B0aW9ucyAjCisKK0dvb2dsZSBUZXN0IHRlc3QgcHJv
Z3JhbXMgYXJlIG9yZGluYXJ5IGV4ZWN1dGFibGVzLiBPbmNlIGJ1aWx0LCB5b3UgY2FuIHJ1bgor
dGhlbSBkaXJlY3RseSBhbmQgYWZmZWN0IHRoZWlyIGJlaGF2aW9yIHZpYSB0aGUgZm9sbG93aW5n
IGVudmlyb25tZW50IHZhcmlhYmxlcworYW5kL29yIGNvbW1hbmQgbGluZSBmbGFncy4gRm9yIHRo
ZSBmbGFncyB0byB3b3JrLCB5b3VyIHByb2dyYW1zIG11c3QgY2FsbAorYDo6dGVzdGluZzo6SW5p
dEdvb2dsZVRlc3QoKWAgYmVmb3JlIGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWAuCisKK1RvIHNl
ZSBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGZsYWdzIGFuZCB0aGVpciB1c2FnZSwgcGxlYXNlIHJ1biB5
b3VyIHRlc3QKK3Byb2dyYW0gd2l0aCB0aGUgYC0taGVscGAgZmxhZy4gIFlvdSBjYW4gYWxzbyB1
c2UgYC1oYCwgYC0/YCwgb3IgYC8/YAorZm9yIHNob3J0LiAgVGhpcyBmZWF0dXJlIGlzIGFkZGVk
IGluIHZlcnNpb24gMS4zLjAuCisKK0lmIGFuIG9wdGlvbiBpcyBzcGVjaWZpZWQgYm90aCBieSBh
biBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbmQgYnkgYQorZmxhZywgdGhlIGxhdHRlciB0YWtlcyBw
cmVjZWRlbmNlLiAgTW9zdCBvZiB0aGUgb3B0aW9ucyBjYW4gYWxzbyBiZQorc2V0L3JlYWQgaW4g
Y29kZTogdG8gYWNjZXNzIHRoZSB2YWx1ZSBvZiBjb21tYW5kIGxpbmUgZmxhZworYC0tZ3Rlc3Rf
Zm9vYCwgd3JpdGUgYDo6dGVzdGluZzo6R1RFU1RfRkxBRyhmb28pYC4gIEEgY29tbW9uIHBhdHRl
cm4gaXMKK3RvIHNldCB0aGUgdmFsdWUgb2YgYSBmbGFnIGJlZm9yZSBjYWxsaW5nIGA6OnRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0KClgCit0byBjaGFuZ2UgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhl
IGZsYWc6CitgYGAKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICAvLyBEaXNh
YmxlcyBlbGFwc2VkIHRpbWUgYnkgZGVmYXVsdC4KKyAgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHBy
aW50X3RpbWUpID0gZmFsc2U7CisKKyAgLy8gVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gb3ZlcnJp
ZGUgdGhlIGZsYWcgb24gdGhlIGNvbW1hbmQgbGluZS4KKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xl
VGVzdCgmYXJnYywgYXJndik7CisKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAor
CisjIyBTZWxlY3RpbmcgVGVzdHMgIyMKKworVGhpcyBzZWN0aW9uIHNob3dzIHZhcmlvdXMgb3B0
aW9ucyBmb3IgY2hvb3Npbmcgd2hpY2ggdGVzdHMgdG8gcnVuLgorCisjIyMgTGlzdGluZyBUZXN0
IE5hbWVzICMjIworCitTb21ldGltZXMgaXQgaXMgbmVjZXNzYXJ5IHRvIGxpc3QgdGhlIGF2YWls
YWJsZSB0ZXN0cyBpbiBhIHByb2dyYW0gYmVmb3JlCitydW5uaW5nIHRoZW0gc28gdGhhdCBhIGZp
bHRlciBtYXkgYmUgYXBwbGllZCBpZiBuZWVkZWQuIEluY2x1ZGluZyB0aGUgZmxhZworYC0tZ3Rl
c3RfbGlzdF90ZXN0c2Agb3ZlcnJpZGVzIGFsbCBvdGhlciBmbGFncyBhbmQgbGlzdHMgdGVzdHMg
aW4gdGhlIGZvbGxvd2luZworZm9ybWF0OgorYGBgCitUZXN0Q2FzZTEuCisgIFRlc3ROYW1lMQor
ICBUZXN0TmFtZTIKK1Rlc3RDYXNlMi4KKyAgVGVzdE5hbWUKK2BgYAorCitOb25lIG9mIHRoZSB0
ZXN0cyBsaXN0ZWQgYXJlIGFjdHVhbGx5IHJ1biBpZiB0aGUgZmxhZyBpcyBwcm92aWRlZC4gVGhl
cmUgaXMgbm8KK2NvcnJlc3BvbmRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIHRoaXMgZmxh
Zy4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBSdW5uaW5n
IGEgU3Vic2V0IG9mIHRoZSBUZXN0cyAjIyMKKworQnkgZGVmYXVsdCwgYSBHb29nbGUgVGVzdCBw
cm9ncmFtIHJ1bnMgYWxsIHRlc3RzIHRoZSB1c2VyIGhhcyBkZWZpbmVkLgorU29tZXRpbWVzLCB5
b3Ugd2FudCB0byBydW4gb25seSBhIHN1YnNldCBvZiB0aGUgdGVzdHMgKGUuZy4gZm9yIGRlYnVn
Z2luZyBvcgorcXVpY2tseSB2ZXJpZnlpbmcgYSBjaGFuZ2UpLiBJZiB5b3Ugc2V0IHRoZSBgR1RF
U1RfRklMVEVSYCBlbnZpcm9ubWVudCB2YXJpYWJsZQorb3IgdGhlIGAtLWd0ZXN0X2ZpbHRlcmAg
ZmxhZyB0byBhIGZpbHRlciBzdHJpbmcsIEdvb2dsZSBUZXN0IHdpbGwgb25seSBydW4gdGhlCit0
ZXN0cyB3aG9zZSBmdWxsIG5hbWVzIChpbiB0aGUgZm9ybSBvZiBgVGVzdENhc2VOYW1lLlRlc3RO
YW1lYCkgbWF0Y2ggdGhlCitmaWx0ZXIuCisKK1RoZSBmb3JtYXQgb2YgYSBmaWx0ZXIgaXMgYSAn
YDpgJy1zZXBhcmF0ZWQgbGlzdCBvZiB3aWxkY2FyZCBwYXR0ZXJucyAoY2FsbGVkCit0aGUgcG9z
aXRpdmUgcGF0dGVybnMpIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAnYC1gJyBhbmQgYW5vdGhl
cgorJ2A6YCctc2VwYXJhdGVkIHBhdHRlcm4gbGlzdCAoY2FsbGVkIHRoZSBuZWdhdGl2ZSBwYXR0
ZXJucykuIEEgdGVzdCBtYXRjaGVzIHRoZQorZmlsdGVyIGlmIGFuZCBvbmx5IGlmIGl0IG1hdGNo
ZXMgYW55IG9mIHRoZSBwb3NpdGl2ZSBwYXR0ZXJucyBidXQgZG9lcyBub3QKK21hdGNoIGFueSBv
ZiB0aGUgbmVnYXRpdmUgcGF0dGVybnMuCisKK0EgcGF0dGVybiBtYXkgY29udGFpbiBgJyonYCAo
bWF0Y2hlcyBhbnkgc3RyaW5nKSBvciBgJz8nYCAobWF0Y2hlcyBhbnkgc2luZ2xlCitjaGFyYWN0
ZXIpLiBGb3IgY29udmVuaWVuY2UsIHRoZSBmaWx0ZXIgYCcqLU5lZ2F0aXZlUGF0dGVybnMnYCBj
YW4gYmUgYWxzbword3JpdHRlbiBhcyBgJy1OZWdhdGl2ZVBhdHRlcm5zJ2AuCisKK0ZvciBleGFt
cGxlOgorCisgICogYC4vZm9vX3Rlc3RgIEhhcyBubyBmbGFnLCBhbmQgdGh1cyBydW5zIGFsbCBp
dHMgdGVzdHMuCisgICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9KmAgQWxzbyBydW5zIGV2
ZXJ5dGhpbmcsIGR1ZSB0byB0aGUgc2luZ2xlIG1hdGNoLWV2ZXJ5dGhpbmcgYCpgIHZhbHVlLgor
ICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rlc3QuKmAgUnVucyBldmVyeXRoaW5n
IGluIHRlc3QgY2FzZSBgRm9vVGVzdGAuCisgICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9
Kk51bGwqOipDb25zdHJ1Y3RvcipgIFJ1bnMgYW55IHRlc3Qgd2hvc2UgZnVsbCBuYW1lIGNvbnRh
aW5zIGVpdGhlciBgIk51bGwiYCBvciBgIkNvbnN0cnVjdG9yImAuCisgICogYC4vZm9vX3Rlc3Qg
LS1ndGVzdF9maWx0ZXI9LSpEZWF0aFRlc3QuKmAgUnVucyBhbGwgbm9uLWRlYXRoIHRlc3RzLgor
ICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rlc3QuKi1Gb29UZXN0LkJhcmAgUnVu
cyBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBgRm9vVGVzdGAgZXhjZXB0IGBGb29UZXN0LkJhcmAu
CisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgVGVtcG9yYXJp
bHkgRGlzYWJsaW5nIFRlc3RzICMjIworCitJZiB5b3UgaGF2ZSBhIGJyb2tlbiB0ZXN0IHRoYXQg
eW91IGNhbm5vdCBmaXggcmlnaHQgYXdheSwgeW91IGNhbiBhZGQgdGhlCitgRElTQUJMRURfYCBw
cmVmaXggdG8gaXRzIG5hbWUuIFRoaXMgd2lsbCBleGNsdWRlIGl0IGZyb20gZXhlY3V0aW9uLiBU
aGlzIGlzCitiZXR0ZXIgdGhhbiBjb21tZW50aW5nIG91dCB0aGUgY29kZSBvciB1c2luZyBgI2lm
IDBgLCBhcyBkaXNhYmxlZCB0ZXN0cyBhcmUKK3N0aWxsIGNvbXBpbGVkIChhbmQgdGh1cyB3b24n
dCByb3QpLgorCitJZiB5b3UgbmVlZCB0byBkaXNhYmxlIGFsbCB0ZXN0cyBpbiBhIHRlc3QgY2Fz
ZSwgeW91IGNhbiBlaXRoZXIgYWRkIGBESVNBQkxFRF9gCit0byB0aGUgZnJvbnQgb2YgdGhlIG5h
bWUgb2YgZWFjaCB0ZXN0LCBvciBhbHRlcm5hdGl2ZWx5IGFkZCBpdCB0byB0aGUgZnJvbnQgb2YK
K3RoZSB0ZXN0IGNhc2UgbmFtZS4KKworRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVzdHMg
d29uJ3QgYmUgcnVuIGJ5IEdvb2dsZSBUZXN0LCBldmVuIHRob3VnaCB0aGV5Cit3aWxsIHN0aWxs
IGJlIGNvbXBpbGVkOgorCitgYGAKKy8vIFRlc3RzIHRoYXQgRm9vIGRvZXMgQWJjLgorVEVTVChG
b29UZXN0LCBESVNBQkxFRF9Eb2VzQWJjKSB7IC4uLiB9CisKK2NsYXNzIERJU0FCTEVEX0JhclRl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07CisKKy8vIFRlc3RzIHRoYXQgQmFy
IGRvZXMgWHl6LgorVEVTVF9GKERJU0FCTEVEX0JhclRlc3QsIERvZXNYeXopIHsgLi4uIH0KK2Bg
YAorCitfTm90ZTpfIFRoaXMgZmVhdHVyZSBzaG91bGQgb25seSBiZSB1c2VkIGZvciB0ZW1wb3Jh
cnkgcGFpbi1yZWxpZWYuIFlvdSBzdGlsbAoraGF2ZSB0byBmaXggdGhlIGRpc2FibGVkIHRlc3Rz
IGF0IGEgbGF0ZXIgZGF0ZS4gQXMgYSByZW1pbmRlciwgR29vZ2xlIFRlc3Qgd2lsbAorcHJpbnQg
YSBiYW5uZXIgd2FybmluZyB5b3UgaWYgYSB0ZXN0IHByb2dyYW0gY29udGFpbnMgYW55IGRpc2Fi
bGVkIHRlc3RzLgorCitfVGlwOl8gWW91IGNhbiBlYXNpbHkgY291bnQgdGhlIG51bWJlciBvZiBk
aXNhYmxlZCB0ZXN0cyB5b3UgaGF2ZQordXNpbmcgYGdyZXBgLiBUaGlzIG51bWJlciBjYW4gYmUg
dXNlZCBhcyBhIG1ldHJpYyBmb3IgaW1wcm92aW5nIHlvdXIKK3Rlc3QgcXVhbGl0eS4KKworX0F2
YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBUZW1wb3JhcmlseSBFbmFi
bGluZyBEaXNhYmxlZCBUZXN0cyAjIyMKKworVG8gaW5jbHVkZSBbZGlzYWJsZWQgdGVzdHNdKCN0
ZW1wb3JhcmlseS1kaXNhYmxpbmctdGVzdHMpIGluIHRlc3QKK2V4ZWN1dGlvbiwganVzdCBpbnZv
a2UgdGhlIHRlc3QgcHJvZ3JhbSB3aXRoIHRoZQorYC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRf
dGVzdHNgIGZsYWcgb3Igc2V0IHRoZQorYEdURVNUX0FMU09fUlVOX0RJU0FCTEVEX1RFU1RTYCBl
bnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIHZhbHVlIG90aGVyCit0aGFuIGAwYC4gIFlvdSBjYW4g
Y29tYmluZSB0aGlzIHdpdGggdGhlCitbLS1ndGVzdFxfZmlsdGVyXSgjcnVubmluZy1hLXN1YnNl
dC1vZi10aGUtdGVzdHMpIGZsYWcgdG8gZnVydGhlciBzZWxlY3QKK3doaWNoIGRpc2FibGVkIHRl
c3RzIHRvIHJ1bi4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNl
IHZlcnNpb24gMS4zLjAuCisKKyMjIFJlcGVhdGluZyB0aGUgVGVzdHMgIyMKKworT25jZSBpbiBh
IHdoaWxlIHlvdSdsbCBydW4gaW50byBhIHRlc3Qgd2hvc2UgcmVzdWx0IGlzIGhpdC1vci1taXNz
LiBQZXJoYXBzIGl0Cit3aWxsIGZhaWwgb25seSAxJSBvZiB0aGUgdGltZSwgbWFraW5nIGl0IHJh
dGhlciBoYXJkIHRvIHJlcHJvZHVjZSB0aGUgYnVnIHVuZGVyCithIGRlYnVnZ2VyLiBUaGlzIGNh
biBiZSBhIG1ham9yIHNvdXJjZSBvZiBmcnVzdHJhdGlvbi4KKworVGhlIGAtLWd0ZXN0X3JlcGVh
dGAgZmxhZyBhbGxvd3MgeW91IHRvIHJlcGVhdCBhbGwgKG9yIHNlbGVjdGVkKSB0ZXN0IG1ldGhv
ZHMKK2luIGEgcHJvZ3JhbSBtYW55IHRpbWVzLiBIb3BlZnVsbHksIGEgZmxha3kgdGVzdCB3aWxs
IGV2ZW50dWFsbHkgZmFpbCBhbmQgZ2l2ZQoreW91IGEgY2hhbmNlIHRvIGRlYnVnLiBIZXJlJ3Mg
aG93IHRvIHVzZSBpdDoKKworfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwYCB8IFJl
cGVhdCBmb29cX3Rlc3QgMTAwMCB0aW1lcyBhbmQgZG9uJ3Qgc3RvcCBhdCBmYWlsdXJlcy4gfAor
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBgJCBmb29fdGVzdCAtLWd0
ZXN0X3JlcGVhdD0tMWAgICB8IEEgbmVnYXRpdmUgY291bnQgbWVhbnMgcmVwZWF0aW5nIGZvcmV2
ZXIuICAgICAgICAgICAgICAgfAorfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwIC0t
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZWAgfCBSZXBlYXQgZm9vXF90ZXN0IDEwMDAgdGltZXMsIHN0
b3BwaW5nIGF0IHRoZSBmaXJzdCBmYWlsdXJlLiBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIHdo
ZW4gcnVubmluZyB1bmRlciBhIGRlYnVnZ2VyOiB3aGVuIHRoZSB0ZXN0ZmFpbHMsIGl0IHdpbGwg
ZHJvcCBpbnRvIHRoZSBkZWJ1Z2dlciBhbmQgeW91IGNhbiB0aGVuIGluc3BlY3QgdmFyaWFibGVz
IGFuZCBzdGFja3MuIHwKK3wgYCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMCAtLWd0ZXN0
X2ZpbHRlcj1Gb29CYXJgIHwgUmVwZWF0IHRoZSB0ZXN0cyB3aG9zZSBuYW1lIG1hdGNoZXMgdGhl
IGZpbHRlciAxMDAwIHRpbWVzLiB8CisKK0lmIHlvdXIgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIGds
b2JhbCBzZXQtdXAvdGVhci1kb3duIGNvZGUgcmVnaXN0ZXJlZAordXNpbmcgYEFkZEdsb2JhbFRl
c3RFbnZpcm9ubWVudCgpYCwgaXQgd2lsbCBiZSByZXBlYXRlZCBpbiBlYWNoCitpdGVyYXRpb24g
YXMgd2VsbCwgYXMgdGhlIGZsYWtpbmVzcyBtYXkgYmUgaW4gaXQuIFlvdSBjYW4gYWxzbyBzcGVj
aWZ5Cit0aGUgcmVwZWF0IGNvdW50IGJ5IHNldHRpbmcgdGhlIGBHVEVTVF9SRVBFQVRgIGVudmly
b25tZW50IHZhcmlhYmxlLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4K
KworIyMgU2h1ZmZsaW5nIHRoZSBUZXN0cyAjIworCitZb3UgY2FuIHNwZWNpZnkgdGhlIGAtLWd0
ZXN0X3NodWZmbGVgIGZsYWcgKG9yIHNldCB0aGUgYEdURVNUX1NIVUZGTEVgCitlbnZpcm9ubWVu
dCB2YXJpYWJsZSB0byBgMWApIHRvIHJ1biB0aGUgdGVzdHMgaW4gYSBwcm9ncmFtIGluIGEgcmFu
ZG9tCitvcmRlci4gVGhpcyBoZWxwcyB0byByZXZlYWwgYmFkIGRlcGVuZGVuY2llcyBiZXR3ZWVu
IHRlc3RzLgorCitCeSBkZWZhdWx0LCBHb29nbGUgVGVzdCB1c2VzIGEgcmFuZG9tIHNlZWQgY2Fs
Y3VsYXRlZCBmcm9tIHRoZSBjdXJyZW50Cit0aW1lLiBUaGVyZWZvcmUgeW91J2xsIGdldCBhIGRp
ZmZlcmVudCBvcmRlciBldmVyeSB0aW1lLiBUaGUgY29uc29sZQorb3V0cHV0IGluY2x1ZGVzIHRo
ZSByYW5kb20gc2VlZCB2YWx1ZSwgc3VjaCB0aGF0IHlvdSBjYW4gcmVwcm9kdWNlIGFuCitvcmRl
ci1yZWxhdGVkIHRlc3QgZmFpbHVyZSBsYXRlci4gVG8gc3BlY2lmeSB0aGUgcmFuZG9tIHNlZWQK
K2V4cGxpY2l0bHksIHVzZSB0aGUgYC0tZ3Rlc3RfcmFuZG9tX3NlZWQ9U0VFRGAgZmxhZyAob3Ig
c2V0IHRoZQorYEdURVNUX1JBTkRPTV9TRUVEYCBlbnZpcm9ubWVudCB2YXJpYWJsZSksIHdoZXJl
IGBTRUVEYCBpcyBhbiBpbnRlZ2VyCitiZXR3ZWVuIDAgYW5kIDk5OTk5LiBUaGUgc2VlZCB2YWx1
ZSAwIGlzIHNwZWNpYWw6IGl0IHRlbGxzIEdvb2dsZSBUZXN0Cit0byBkbyB0aGUgZGVmYXVsdCBi
ZWhhdmlvciBvZiBjYWxjdWxhdGluZyB0aGUgc2VlZCBmcm9tIHRoZSBjdXJyZW50Cit0aW1lLgor
CitJZiB5b3UgY29tYmluZSB0aGlzIHdpdGggYC0tZ3Rlc3RfcmVwZWF0PU5gLCBHb29nbGUgVGVz
dCB3aWxsIHBpY2sgYQorZGlmZmVyZW50IHJhbmRvbSBzZWVkIGFuZCByZS1zaHVmZmxlIHRoZSB0
ZXN0cyBpbiBlYWNoIGl0ZXJhdGlvbi4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dz
LCBNYWM7IHNpbmNlIHYxLjQuMC4KKworIyMgQ29udHJvbGxpbmcgVGVzdCBPdXRwdXQgIyMKKwor
VGhpcyBzZWN0aW9uIHRlYWNoZXMgaG93IHRvIHR3ZWFrIHRoZSB3YXkgdGVzdCByZXN1bHRzIGFy
ZSByZXBvcnRlZC4KKworIyMjIENvbG9yZWQgVGVybWluYWwgT3V0cHV0ICMjIworCitHb29nbGUg
VGVzdCBjYW4gdXNlIGNvbG9ycyBpbiBpdHMgdGVybWluYWwgb3V0cHV0IHRvIG1ha2UgaXQgZWFz
aWVyIHRvIHNwb3QKK3RoZSBzZXBhcmF0aW9uIGJldHdlZW4gdGVzdHMsIGFuZCB3aGV0aGVyIHRl
c3RzIHBhc3NlZC4KKworWW91IGNhbiBzZXQgdGhlIEdURVNUXF9DT0xPUiBlbnZpcm9ubWVudCB2
YXJpYWJsZSBvciBzZXQgdGhlIGAtLWd0ZXN0X2NvbG9yYAorY29tbWFuZCBsaW5lIGZsYWcgdG8g
YHllc2AsIGBub2AsIG9yIGBhdXRvYCAodGhlIGRlZmF1bHQpIHRvIGVuYWJsZSBjb2xvcnMsCitk
aXNhYmxlIGNvbG9ycywgb3IgbGV0IEdvb2dsZSBUZXN0IGRlY2lkZS4gV2hlbiB0aGUgdmFsdWUg
aXMgYGF1dG9gLCBHb29nbGUKK1Rlc3Qgd2lsbCB1c2UgY29sb3JzIGlmIGFuZCBvbmx5IGlmIHRo
ZSBvdXRwdXQgZ29lcyB0byBhIHRlcm1pbmFsIGFuZCAob24KK25vbi1XaW5kb3dzIHBsYXRmb3Jt
cykgdGhlIGBURVJNYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQgdG8gYHh0ZXJtYCBvcgor
YHh0ZXJtLWNvbG9yYC4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisK
KyMjIyBTdXBwcmVzc2luZyB0aGUgRWxhcHNlZCBUaW1lICMjIworCitCeSBkZWZhdWx0LCBHb29n
bGUgVGVzdCBwcmludHMgdGhlIHRpbWUgaXQgdGFrZXMgdG8gcnVuIGVhY2ggdGVzdC4gIFRvCitz
dXBwcmVzcyB0aGF0LCBydW4gdGhlIHRlc3QgcHJvZ3JhbSB3aXRoIHRoZSBgLS1ndGVzdF9wcmlu
dF90aW1lPTBgCitjb21tYW5kIGxpbmUgZmxhZy4gIFNldHRpbmcgdGhlIGBHVEVTVF9QUklOVF9U
SU1FYCBlbnZpcm9ubWVudAordmFyaWFibGUgdG8gYDBgIGhhcyB0aGUgc2FtZSBlZmZlY3QuCisK
K19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLiAgKEluIEdvb2dsZSBUZXN0IDEu
My4wIGFuZCBsb3dlciwKK3RoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRoYXQgdGhlIGVsYXBzZWQg
dGltZSBpcyAqKm5vdCoqIHByaW50ZWQuKQorCisjIyMgR2VuZXJhdGluZyBhbiBYTUwgUmVwb3J0
ICMjIworCitHb29nbGUgVGVzdCBjYW4gZW1pdCBhIGRldGFpbGVkIFhNTCByZXBvcnQgdG8gYSBm
aWxlIGluIGFkZGl0aW9uIHRvIGl0cyBub3JtYWwKK3RleHR1YWwgb3V0cHV0LiBUaGUgcmVwb3J0
IGNvbnRhaW5zIHRoZSBkdXJhdGlvbiBvZiBlYWNoIHRlc3QsIGFuZCB0aHVzIGNhbgoraGVscCB5
b3UgaWRlbnRpZnkgc2xvdyB0ZXN0cy4KKworVG8gZ2VuZXJhdGUgdGhlIFhNTCByZXBvcnQsIHNl
dCB0aGUgYEdURVNUX09VVFBVVGAgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCitgLS1ndGVz
dF9vdXRwdXRgIGZsYWcgdG8gdGhlIHN0cmluZyBgInhtbDpfcGF0aF90b19vdXRwdXRfZmlsZV8i
YCwgd2hpY2ggd2lsbAorY3JlYXRlIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBsb2NhdGlvbi4gWW91
IGNhbiBhbHNvIGp1c3QgdXNlIHRoZSBzdHJpbmcKK2AieG1sImAsIGluIHdoaWNoIGNhc2UgdGhl
IG91dHB1dCBjYW4gYmUgZm91bmQgaW4gdGhlIGB0ZXN0X2RldGFpbC54bWxgIGZpbGUgaW4KK3Ro
ZSBjdXJyZW50IGRpcmVjdG9yeS4KKworSWYgeW91IHNwZWNpZnkgYSBkaXJlY3RvcnkgKGZvciBl
eGFtcGxlLCBgInhtbDpvdXRwdXQvZGlyZWN0b3J5LyJgIG9uIExpbnV4IG9yCitgInhtbDpvdXRw
dXRcZGlyZWN0b3J5XCJgIG9uIFdpbmRvd3MpLCBHb29nbGUgVGVzdCB3aWxsIGNyZWF0ZSB0aGUg
WE1MIGZpbGUgaW4KK3RoYXQgZGlyZWN0b3J5LCBuYW1lZCBhZnRlciB0aGUgdGVzdCBleGVjdXRh
YmxlIChlLmcuIGBmb29fdGVzdC54bWxgIGZvciB0ZXN0Citwcm9ncmFtIGBmb29fdGVzdGAgb3Ig
YGZvb190ZXN0LmV4ZWApLiBJZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cyAocGVyaGFwcyBsZWZ0
CitvdmVyIGZyb20gYSBwcmV2aW91cyBydW4pLCBHb29nbGUgVGVzdCB3aWxsIHBpY2sgYSBkaWZm
ZXJlbnQgbmFtZSAoZS5nLgorYGZvb190ZXN0XzEueG1sYCkgdG8gYXZvaWQgb3ZlcndyaXRpbmcg
aXQuCisKK1RoZSByZXBvcnQgdXNlcyB0aGUgZm9ybWF0IGRlc2NyaWJlZCBoZXJlLiAgSXQgaXMg
YmFzZWQgb24gdGhlCitganVuaXRyZXBvcnRgIEFudCB0YXNrIGFuZCBjYW4gYmUgcGFyc2VkIGJ5
IHBvcHVsYXIgY29udGludW91cyBidWlsZAorc3lzdGVtcyBsaWtlIFtIdWRzb25dKGh0dHBzOi8v
aHVkc29uLmRldi5qYXZhLm5ldC8pLiBTaW5jZSB0aGF0IGZvcm1hdAord2FzIG9yaWdpbmFsbHkg
aW50ZW5kZWQgZm9yIEphdmEsIGEgbGl0dGxlIGludGVycHJldGF0aW9uIGlzIHJlcXVpcmVkCit0
byBtYWtlIGl0IGFwcGx5IHRvIEdvb2dsZSBUZXN0IHRlc3RzLCBhcyBzaG93biBoZXJlOgorCitg
YGAKKzx0ZXN0c3VpdGVzIG5hbWU9IkFsbFRlc3RzIiAuLi4+CisgIDx0ZXN0c3VpdGUgbmFtZT0i
dGVzdF9jYXNlX25hbWUiIC4uLj4KKyAgICA8dGVzdGNhc2UgbmFtZT0idGVzdF9uYW1lIiAuLi4+
CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9
Ii4uLiIvPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+CisgICAgPC90ZXN0Y2FzZT4K
KyAgPC90ZXN0c3VpdGU+Cis8L3Rlc3RzdWl0ZXM+CitgYGAKKworICAqIFRoZSByb290IGA8dGVz
dHN1aXRlcz5gIGVsZW1lbnQgY29ycmVzcG9uZHMgdG8gdGhlIGVudGlyZSB0ZXN0IHByb2dyYW0u
CisgICogYDx0ZXN0c3VpdGU+YCBlbGVtZW50cyBjb3JyZXNwb25kIHRvIEdvb2dsZSBUZXN0IHRl
c3QgY2FzZXMuCisgICogYDx0ZXN0Y2FzZT5gIGVsZW1lbnRzIGNvcnJlc3BvbmQgdG8gR29vZ2xl
IFRlc3QgdGVzdCBmdW5jdGlvbnMuCisKK0ZvciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBwcm9n
cmFtCisKK2BgYAorVEVTVChNYXRoVGVzdCwgQWRkaXRpb24pIHsgLi4uIH0KK1RFU1QoTWF0aFRl
c3QsIFN1YnRyYWN0aW9uKSB7IC4uLiB9CitURVNUKExvZ2ljVGVzdCwgTm9uQ29udHJhZGljdGlv
bikgeyAuLi4gfQorYGBgCisKK2NvdWxkIGdlbmVyYXRlIHRoaXMgcmVwb3J0OgorCitgYGAKKzw/
eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8dGVzdHN1aXRlcyB0ZXN0cz0i
MyIgZmFpbHVyZXM9IjEiIGVycm9ycz0iMCIgdGltZT0iMzUiIG5hbWU9IkFsbFRlc3RzIj4KKyAg
PHRlc3RzdWl0ZSBuYW1lPSJNYXRoVGVzdCIgdGVzdHM9IjIiIGZhaWx1cmVzPSIxIiogZXJyb3Jz
PSIwIiB0aW1lPSIxNSI+CisgICAgPHRlc3RjYXNlIG5hbWU9IkFkZGl0aW9uIiBzdGF0dXM9InJ1
biIgdGltZT0iNyIgY2xhc3NuYW1lPSIiPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUg
b2Y6IGFkZCgxLCAxKSYjeDBBOyBBY3R1YWw6IDMmI3gwQTtFeHBlY3RlZDogMiIgdHlwZT0iIi8+
CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogYWRkKDEsIC0xKSYjeDBBOyBBY3R1
YWw6IDEmI3gwQTtFeHBlY3RlZDogMCIgdHlwZT0iIi8+CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8
dGVzdGNhc2UgbmFtZT0iU3VidHJhY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSI1IiBjbGFzc25h
bWU9IiI+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFt
ZT0iTG9naWNUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGVycm9ycz0iMCIgdGltZT0iNSI+
CisgICAgPHRlc3RjYXNlIG5hbWU9Ik5vbkNvbnRyYWRpY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1l
PSI1IiBjbGFzc25hbWU9IiI+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rl
c3RzdWl0ZXM+CitgYGAKKworVGhpbmdzIHRvIG5vdGU6CisKKyAgKiBUaGUgYHRlc3RzYCBhdHRy
aWJ1dGUgb2YgYSBgPHRlc3RzdWl0ZXM+YCBvciBgPHRlc3RzdWl0ZT5gIGVsZW1lbnQgdGVsbHMg
aG93IG1hbnkgdGVzdCBmdW5jdGlvbnMgdGhlIEdvb2dsZSBUZXN0IHByb2dyYW0gb3IgdGVzdCBj
YXNlIGNvbnRhaW5zLCB3aGlsZSB0aGUgYGZhaWx1cmVzYCBhdHRyaWJ1dGUgdGVsbHMgaG93IG1h
bnkgb2YgdGhlbSBmYWlsZWQuCisgICogVGhlIGB0aW1lYCBhdHRyaWJ1dGUgZXhwcmVzc2VzIHRo
ZSBkdXJhdGlvbiBvZiB0aGUgdGVzdCwgdGVzdCBjYXNlLCBvciBlbnRpcmUgdGVzdCBwcm9ncmFt
IGluIG1pbGxpc2Vjb25kcy4KKyAgKiBFYWNoIGA8ZmFpbHVyZT5gIGVsZW1lbnQgY29ycmVzcG9u
ZHMgdG8gYSBzaW5nbGUgZmFpbGVkIEdvb2dsZSBUZXN0IGFzc2VydGlvbi4KKyAgKiBTb21lIEpV
bml0IGNvbmNlcHRzIGRvbid0IGFwcGx5IHRvIEdvb2dsZSBUZXN0LCB5ZXQgd2UgaGF2ZSB0byBj
b25mb3JtIHRvIHRoZSBEVEQuIFRoZXJlZm9yZSB5b3UnbGwgc2VlIHNvbWUgZHVtbXkgZWxlbWVu
dHMgYW5kIGF0dHJpYnV0ZXMgaW4gdGhlIHJlcG9ydC4gWW91IGNhbiBzYWZlbHkgaWdub3JlIHRo
ZXNlIHBhcnRzLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMg
Q29udHJvbGxpbmcgSG93IEZhaWx1cmVzIEFyZSBSZXBvcnRlZCAjIworCisjIyMgVHVybmluZyBB
c3NlcnRpb24gRmFpbHVyZXMgaW50byBCcmVhay1Qb2ludHMgIyMjCisKK1doZW4gcnVubmluZyB0
ZXN0IHByb2dyYW1zIHVuZGVyIGEgZGVidWdnZXIsIGl0J3MgdmVyeSBjb252ZW5pZW50IGlmIHRo
ZQorZGVidWdnZXIgY2FuIGNhdGNoIGFuIGFzc2VydGlvbiBmYWlsdXJlIGFuZCBhdXRvbWF0aWNh
bGx5IGRyb3AgaW50byBpbnRlcmFjdGl2ZQorbW9kZS4gR29vZ2xlIFRlc3QncyBfYnJlYWstb24t
ZmFpbHVyZV8gbW9kZSBzdXBwb3J0cyB0aGlzIGJlaGF2aW9yLgorCitUbyBlbmFibGUgaXQsIHNl
dCB0aGUgYEdURVNUX0JSRUFLX09OX0ZBSUxVUkVgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEg
dmFsdWUKK290aGVyIHRoYW4gYDBgIC4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhlIGAt
LWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVgCitjb21tYW5kIGxpbmUgZmxhZy4KKworX0F2YWlsYWJp
bGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBTdXBwcmVzc2luZyBQb3AtdXBzIENh
dXNlZCBieSBFeGNlcHRpb25zICMjIworCitPbiBXaW5kb3dzLCBHb29nbGUgVGVzdCBtYXkgYmUg
dXNlZCB3aXRoIGV4Y2VwdGlvbnMgZW5hYmxlZC4gRXZlbiB3aGVuCitleGNlcHRpb25zIGFyZSBk
aXNhYmxlZCwgYW4gYXBwbGljYXRpb24gY2FuIHN0aWxsIHRocm93IHN0cnVjdHVyZWQgZXhjZXB0
aW9ucworKFNFSCdzKS4gSWYgYSB0ZXN0IHRocm93cyBhbiBleGNlcHRpb24sIGJ5IGRlZmF1bHQg
R29vZ2xlIFRlc3QgZG9lc24ndCB0cnkgdG8KK2NhdGNoIGl0LiBJbnN0ZWFkLCB5b3UnbGwgc2Vl
IGEgcG9wLXVwIGRpYWxvZywgYXQgd2hpY2ggcG9pbnQgeW91IGNhbiBhdHRhY2gKK3RoZSBwcm9j
ZXNzIHRvIGEgZGVidWdnZXIgYW5kIGVhc2lseSBmaW5kIG91dCB3aGF0IHdlbnQgd3JvbmcuCisK
K0hvd2V2ZXIsIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlZSB0aGUgcG9wLXVwcyAoZm9yIGV4YW1w
bGUsIGlmIHlvdSBydW4gdGhlCit0ZXN0cyBpbiBhIGJhdGNoIGpvYiksIHNldCB0aGUgYEdURVNU
X0NBVENIX0VYQ0VQVElPTlNgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvCithIG5vbi0gYDBgIHZh
bHVlLCBvciB1c2UgdGhlIGAtLWd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNgIGZsYWcuIEdvb2dsZSBU
ZXN0IG5vdworY2F0Y2hlcyBhbGwgdGVzdC10aHJvd24gZXhjZXB0aW9ucyBhbmQgbG9ncyB0aGVt
IGFzIGZhaWx1cmVzLgorCitfQXZhaWxhYmlsaXR5Ol8gV2luZG93cy4gYEdURVNUX0NBVENIX0VY
Q0VQVElPTlNgIGFuZAorYC0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc2AgaGF2ZSBubyBlZmZlY3Qg
b24gR29vZ2xlIFRlc3QncyBiZWhhdmlvciBvbiBMaW51eCBvcgorTWFjLCBldmVuIGlmIGV4Y2Vw
dGlvbnMgYXJlIGVuYWJsZWQuIEl0IGlzIHBvc3NpYmxlIHRvIGFkZCBzdXBwb3J0IGZvciBjYXRj
aGluZworZXhjZXB0aW9ucyBvbiB0aGVzZSBwbGF0Zm9ybXMsIGJ1dCBpdCBpcyBub3QgaW1wbGVt
ZW50ZWQgeWV0LgorCisjIyMgTGV0dGluZyBBbm90aGVyIFRlc3RpbmcgRnJhbWV3b3JrIERyaXZl
ICMjIworCitJZiB5b3Ugd29yayBvbiBhIHByb2plY3QgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHVz
aW5nIGFub3RoZXIgdGVzdGluZworZnJhbWV3b3JrIGFuZCBpcyBub3QgcmVhZHkgdG8gY29tcGxl
dGVseSBzd2l0Y2ggdG8gR29vZ2xlIFRlc3QgeWV0LAoreW91IGNhbiBnZXQgbXVjaCBvZiBHb29n
bGUgVGVzdCdzIGJlbmVmaXQgYnkgdXNpbmcgaXRzIGFzc2VydGlvbnMgaW4KK3lvdXIgZXhpc3Rp
bmcgdGVzdHMuICBKdXN0IGNoYW5nZSB5b3VyIGBtYWluKClgIGZ1bmN0aW9uIHRvIGxvb2sKK2xp
a2U6CisKK2BgYAorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK2ludCBtYWluKGludCBhcmdj
LCBjaGFyKiogYXJndikgeworICA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVy
ZSkgPSB0cnVlOworICAvLyBJbXBvcnRhbnQ6IEdvb2dsZSBUZXN0IG11c3QgYmUgaW5pdGlhbGl6
ZWQuCisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIC4uLiB3
aGF0ZXZlciB5b3VyIGV4aXN0aW5nIHRlc3RpbmcgZnJhbWV3b3JrIHJlcXVpcmVzIC4uLgorfQor
YGBgCisKK1dpdGggdGhhdCwgeW91IGNhbiB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBpbiBh
ZGRpdGlvbiB0byB0aGUKK25hdGl2ZSBhc3NlcnRpb25zIHlvdXIgdGVzdGluZyBmcmFtZXdvcmsg
cHJvdmlkZXMsIGZvciBleGFtcGxlOgorCitgYGAKK3ZvaWQgVGVzdEZvb0RvZXNCYXIoKSB7Cisg
IEZvbyBmb287CisgIEVYUEVDVF9MRShmb28uQmFyKDEpLCAxMDApOyAgICAgLy8gQSBHb29nbGUg
VGVzdCBhc3NlcnRpb24uCisgIENQUFVOSVRfQVNTRVJUKGZvby5Jc0VtcHR5KCkpOyAgLy8gQSBu
YXRpdmUgYXNzZXJ0aW9uLgorfQorYGBgCisKK0lmIGEgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIGZh
aWxzLCBpdCB3aWxsIHByaW50IGFuIGVycm9yIG1lc3NhZ2UgYW5kCit0aHJvdyBhbiBleGNlcHRp
b24sIHdoaWNoIHdpbGwgYmUgdHJlYXRlZCBhcyBhIGZhaWx1cmUgYnkgeW91ciBob3N0Cit0ZXN0
aW5nIGZyYW1ld29yay4gIElmIHlvdSBjb21waWxlIHlvdXIgY29kZSB3aXRoIGV4Y2VwdGlvbnMg
ZGlzYWJsZWQsCithIGZhaWxlZCBHb29nbGUgVGVzdCBhc3NlcnRpb24gd2lsbCBpbnN0ZWFkIGV4
aXQgeW91ciBwcm9ncmFtIHdpdGggYQorbm9uLXplcm8gY29kZSwgd2hpY2ggd2lsbCBhbHNvIHNp
Z25hbCBhIHRlc3QgZmFpbHVyZSB0byB5b3VyIHRlc3QKK3J1bm5lci4KKworSWYgeW91IGRvbid0
IHdyaXRlIGA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSB0cnVlO2Ag
aW4KK3lvdXIgYG1haW4oKWAsIHlvdSBjYW4gYWx0ZXJuYXRpdmVseSBlbmFibGUgdGhpcyBmZWF0
dXJlIGJ5IHNwZWNpZnlpbmcKK3RoZSBgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlYCBmbGFnIG9u
IHRoZSBjb21tYW5kLWxpbmUgb3Igc2V0dGluZyB0aGUKK2BHVEVTVF9USFJPV19PTl9GQUlMVVJF
YCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIG5vbi16ZXJvIHZhbHVlLgorCitfQXZhaWxhYmls
aXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdjEuMy4wLgorCisjIyBEaXN0cmlidXRp
bmcgVGVzdCBGdW5jdGlvbnMgdG8gTXVsdGlwbGUgTWFjaGluZXMgIyMKKworSWYgeW91IGhhdmUg
bW9yZSB0aGFuIG9uZSBtYWNoaW5lIHlvdSBjYW4gdXNlIHRvIHJ1biBhIHRlc3QgcHJvZ3JhbSwK
K3lvdSBtaWdodCB3YW50IHRvIHJ1biB0aGUgdGVzdCBmdW5jdGlvbnMgaW4gcGFyYWxsZWwgYW5k
IGdldCB0aGUKK3Jlc3VsdCBmYXN0ZXIuICBXZSBjYWxsIHRoaXMgdGVjaG5pcXVlIF9zaGFyZGlu
Z18sIHdoZXJlIGVhY2ggbWFjaGluZQoraXMgY2FsbGVkIGEgX3NoYXJkXy4KKworR29vZ2xlIFRl
c3QgaXMgY29tcGF0aWJsZSB3aXRoIHRlc3Qgc2hhcmRpbmcuICBUbyB0YWtlIGFkdmFudGFnZSBv
ZgordGhpcyBmZWF0dXJlLCB5b3VyIHRlc3QgcnVubmVyIChub3QgcGFydCBvZiBHb29nbGUgVGVz
dCkgbmVlZHMgdG8gZG8KK3RoZSBmb2xsb3dpbmc6CisKKyAgMS4gQWxsb2NhdGUgYSBudW1iZXIg
b2YgbWFjaGluZXMgKHNoYXJkcykgdG8gcnVuIHRoZSB0ZXN0cy4KKyAgMS4gT24gZWFjaCBzaGFy
ZCwgc2V0IHRoZSBgR1RFU1RfVE9UQUxfU0hBUkRTYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0
aGUgdG90YWwgbnVtYmVyIG9mIHNoYXJkcy4gIEl0IG11c3QgYmUgdGhlIHNhbWUgZm9yIGFsbCBz
aGFyZHMuCisgIDEuIE9uIGVhY2ggc2hhcmQsIHNldCB0aGUgYEdURVNUX1NIQVJEX0lOREVYYCBl
bnZpcm9ubWVudCB2YXJpYWJsZSB0byB0aGUgaW5kZXggb2YgdGhlIHNoYXJkLiAgRGlmZmVyZW50
IHNoYXJkcyBtdXN0IGJlIGFzc2lnbmVkIGRpZmZlcmVudCBpbmRpY2VzLCB3aGljaCBtdXN0IGJl
IGluIHRoZSByYW5nZSBgWzAsIEdURVNUX1RPVEFMX1NIQVJEUyAtIDFdYC4KKyAgMS4gUnVuIHRo
ZSBzYW1lIHRlc3QgcHJvZ3JhbSBvbiBhbGwgc2hhcmRzLiAgV2hlbiBHb29nbGUgVGVzdCBzZWVz
IHRoZSBhYm92ZSB0d28gZW52aXJvbm1lbnQgdmFyaWFibGVzLCBpdCB3aWxsIHNlbGVjdCBhIHN1
YnNldCBvZiB0aGUgdGVzdCBmdW5jdGlvbnMgdG8gcnVuLiAgQWNyb3NzIGFsbCBzaGFyZHMsIGVh
Y2ggdGVzdCBmdW5jdGlvbiBpbiB0aGUgcHJvZ3JhbSB3aWxsIGJlIHJ1biBleGFjdGx5IG9uY2Uu
CisgIDEuIFdhaXQgZm9yIGFsbCBzaGFyZHMgdG8gZmluaXNoLCB0aGVuIGNvbGxlY3QgYW5kIHJl
cG9ydCB0aGUgcmVzdWx0cy4KKworWW91ciBwcm9qZWN0IG1heSBoYXZlIHRlc3RzIHRoYXQgd2Vy
ZSB3cml0dGVuIHdpdGhvdXQgR29vZ2xlIFRlc3QgYW5kCit0aHVzIGRvbid0IHVuZGVyc3RhbmQg
dGhpcyBwcm90b2NvbC4gIEluIG9yZGVyIGZvciB5b3VyIHRlc3QgcnVubmVyIHRvCitmaWd1cmUg
b3V0IHdoaWNoIHRlc3Qgc3VwcG9ydHMgc2hhcmRpbmcsIGl0IGNhbiBzZXQgdGhlIGVudmlyb25t
ZW50Cit2YXJpYWJsZSBgR1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEVgIHRvIGEgbm9uLWV4aXN0ZW50
IGZpbGUgcGF0aC4gIElmIGEKK3Rlc3QgcHJvZ3JhbSBzdXBwb3J0cyBzaGFyZGluZywgaXQgd2ls
bCBjcmVhdGUgdGhpcyBmaWxlIHRvCithY2tub3dsZWRnZSB0aGUgZmFjdCAodGhlIGFjdHVhbCBj
b250ZW50cyBvZiB0aGUgZmlsZSBhcmUgbm90CitpbXBvcnRhbnQgYXQgdGhpcyB0aW1lOyBhbHRo
b3VnaCB3ZSBtYXkgc3RpY2sgc29tZSB1c2VmdWwgaW5mb3JtYXRpb24KK2luIGl0IGluIHRoZSBm
dXR1cmUuKTsgb3RoZXJ3aXNlIGl0IHdpbGwgbm90IGNyZWF0ZSBpdC4KKworSGVyZSdzIGFuIGV4
YW1wbGUgdG8gbWFrZSBpdCBjbGVhci4gIFN1cHBvc2UgeW91IGhhdmUgYSB0ZXN0IHByb2dyYW0K
K2Bmb29fdGVzdGAgdGhhdCBjb250YWlucyB0aGUgZm9sbG93aW5nIDUgdGVzdCBmdW5jdGlvbnM6
CitgYGAKK1RFU1QoQSwgVikKK1RFU1QoQSwgVykKK1RFU1QoQiwgWCkKK1RFU1QoQiwgWSkKK1RF
U1QoQiwgWikKK2BgYAorYW5kIHlvdSBoYXZlIDMgbWFjaGluZXMgYXQgeW91ciBkaXNwb3NhbC4g
IFRvIHJ1biB0aGUgdGVzdCBmdW5jdGlvbnMgaW4KK3BhcmFsbGVsLCB5b3Ugd291bGQgc2V0IGBH
VEVTVF9UT1RBTF9TSEFSRFNgIHRvIDMgb24gYWxsIG1hY2hpbmVzLCBhbmQKK3NldCBgR1RFU1Rf
U0hBUkRfSU5ERVhgIHRvIDAsIDEsIGFuZCAyIG9uIHRoZSBtYWNoaW5lcyByZXNwZWN0aXZlbHku
CitUaGVuIHlvdSB3b3VsZCBydW4gdGhlIHNhbWUgYGZvb190ZXN0YCBvbiBlYWNoIG1hY2hpbmUu
CisKK0dvb2dsZSBUZXN0IHJlc2VydmVzIHRoZSByaWdodCB0byBjaGFuZ2UgaG93IHRoZSB3b3Jr
IGlzIGRpc3RyaWJ1dGVkCithY3Jvc3MgdGhlIHNoYXJkcywgYnV0IGhlcmUncyBvbmUgcG9zc2li
bGUgc2NlbmFyaW86CisKKyAgKiBNYWNoaW5lICMwIHJ1bnMgYEEuVmAgYW5kIGBCLlhgLgorICAq
IE1hY2hpbmUgIzEgcnVucyBgQS5XYCBhbmQgYEIuWWAuCisgICogTWFjaGluZSAjMiBydW5zIGBC
LlpgLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lv
biAxLjMuMC4KKworIyBGdXNpbmcgR29vZ2xlIFRlc3QgU291cmNlIEZpbGVzICMKKworR29vZ2xl
IFRlc3QncyBpbXBsZW1lbnRhdGlvbiBjb25zaXN0cyBvZiB+MzAgZmlsZXMgKGV4Y2x1ZGluZyBp
dHMgb3duCit0ZXN0cykuICBTb21ldGltZXMgeW91IG1heSB3YW50IHRoZW0gdG8gYmUgcGFja2Fn
ZWQgdXAgaW4gdHdvIGZpbGVzIChhCitgLmhgIGFuZCBhIGAuY2NgKSBpbnN0ZWFkLCBzdWNoIHRo
YXQgeW91IGNhbiBlYXNpbHkgY29weSB0aGVtIHRvIGEgbmV3CittYWNoaW5lIGFuZCBzdGFydCBo
YWNraW5nIHRoZXJlLiAgRm9yIHRoaXMgd2UgcHJvdmlkZSBhbiBleHBlcmltZW50YWwKK1B5dGhv
biBzY3JpcHQgYGZ1c2VfZ3Rlc3RfZmlsZXMucHlgIGluIHRoZSBgc2NyaXB0cy9gIGRpcmVjdG9y
eSAoc2luY2UgcmVsZWFzZSAxLjMuMCkuCitBc3N1bWluZyB5b3UgaGF2ZSBQeXRob24gMi40IG9y
IGFib3ZlIGluc3RhbGxlZCBvbiB5b3VyIG1hY2hpbmUsIGp1c3QKK2dvIHRvIHRoYXQgZGlyZWN0
b3J5IGFuZCBydW4KK2BgYAorcHl0aG9uIGZ1c2VfZ3Rlc3RfZmlsZXMucHkgT1VUUFVUX0RJUgor
YGBgCisKK2FuZCB5b3Ugc2hvdWxkIHNlZSBhbiBgT1VUUFVUX0RJUmAgZGlyZWN0b3J5IGJlaW5n
IGNyZWF0ZWQgd2l0aCBmaWxlcworYGd0ZXN0L2d0ZXN0LmhgIGFuZCBgZ3Rlc3QvZ3Rlc3QtYWxs
LmNjYCBpbiBpdC4gIFRoZXNlIGZpbGVzIGNvbnRhaW4KK2V2ZXJ5dGhpbmcgeW91IG5lZWQgdG8g
dXNlIEdvb2dsZSBUZXN0LiAgSnVzdCBjb3B5IHRoZW0gdG8gYW55d2hlcmUKK3lvdSB3YW50IGFu
ZCB5b3UgYXJlIHJlYWR5IHRvIHdyaXRlIHRlc3RzLiAgWW91IGNhbiB1c2UgdGhlCitbc2NycHRz
L3Rlc3QvTWFrZWZpbGVdKC4uL3NjcmlwdHMvdGVzdC9NYWtlZmlsZSkKK2ZpbGUgYXMgYW4gZXhh
bXBsZSBvbiBob3cgdG8gY29tcGlsZSB5b3VyIHRlc3RzIGFnYWluc3QgdGhlbS4KKworIyBXaGVy
ZSB0byBHbyBmcm9tIEhlcmUgIworCitDb25ncmF0dWxhdGlvbnMhIFlvdSd2ZSBub3cgbGVhcm5l
ZCBtb3JlIGFkdmFuY2VkIEdvb2dsZSBUZXN0IHRvb2xzIGFuZCBhcmUKK3JlYWR5IHRvIHRhY2ts
ZSBtb3JlIGNvbXBsZXggdGVzdGluZyB0YXNrcy4gSWYgeW91IHdhbnQgdG8gZGl2ZSBldmVuIGRl
ZXBlciwgeW91CitjYW4gcmVhZCB0aGUgW0ZBUV0oVjFfNV9GQVEubWQpLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV81X0RvY3VtZW50YXRpb24ubWQgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzVfRG9jdW1lbnRhdGlvbi5tZApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NmJiYTJlYzg2ZTZjNmE0ODFiZGJlYWE1YWYxY2ZkYmVlM2FmYTIwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV81X0RvY3VtZW50YXRpb24ubWQK
QEAgLTAsMCArMSwxMiBAQAorVGhpcyBwYWdlIGxpc3RzIGFsbCBvZmZpY2lhbCBkb2N1bWVudGF0
aW9uIHdpa2kgcGFnZXMgZm9yIEdvb2dsZSBUZXN0ICoqMS41LjAqKiAtLSAqKmlmIHlvdSB1c2Ug
YSBkaWZmZXJlbnQgdmVyc2lvbiBvZiBHb29nbGUgVGVzdCwgbWFrZSBzdXJlIHRvIHJlYWQgdGhl
IGRvY3VtZW50YXRpb24gZm9yIHRoYXQgdmVyc2lvbiBpbnN0ZWFkLioqCisKKyAgKiBbUHJpbWVy
XShWMV81X1ByaW1lci5tZCkgLS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJlIG5ldyB0byBHb29nbGUg
VGVzdC4KKyAgKiBbU2FtcGxlc10oU2FtcGxlcy5tZCkgLS0gbGVhcm4gZnJvbSBleGFtcGxlcy4K
KyAgKiBbQWR2YW5jZWRHdWlkZV0oVjFfNV9BZHZhbmNlZEd1aWRlLm1kKSAtLSBsZWFybiBtb3Jl
IGFib3V0IEdvb2dsZSBUZXN0LgorICAqIFtYY29kZUd1aWRlXShWMV81X1hjb2RlR3VpZGUubWQp
IC0tIGhvdyB0byB1c2UgR29vZ2xlIFRlc3QgaW4gWGNvZGUgb24gTWFjLgorICAqIFtGcmVxdWVu
dGx5LUFza2VkIFF1ZXN0aW9uc10oVjFfNV9GQVEubWQpIC0tIGNoZWNrIGhlcmUgYmVmb3JlIGFz
a2luZyBhIHF1ZXN0aW9uIG9uIHRoZSBtYWlsaW5nIGxpc3QuCisKK1RvIGNvbnRyaWJ1dGUgY29k
ZSB0byBHb29nbGUgVGVzdCwgcmVhZDoKKworICAqIERldkd1aWRlIC0tIHJlYWQgdGhpcyBfYmVm
b3JlXyB3cml0aW5nIHlvdXIgZmlyc3QgcGF0Y2guCisgICogW1B1bXBNYW51YWxdKFYxXzVfUHVt
cE1hbnVhbC5tZCkgLS0gaG93IHdlIGdlbmVyYXRlIHNvbWUgb2YgR29vZ2xlIFRlc3QncyBzb3Vy
Y2UgZmlsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV81X0ZBUS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2RvY3MvVjFfNV9GQVEubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg3MGFmZjAwMDdmMmM2YTJjNTNmZmFj
MjFiZTBhZTA1MWQyNDNlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2RvY3MvVjFfNV9GQVEubWQKQEAgLTAsMCArMSw4ODYgQEAKKworCitJZiB5b3UgY2Fubm90
IGZpbmQgdGhlIGFuc3dlciB0byB5b3VyIHF1ZXN0aW9uIGhlcmUsIGFuZCB5b3UgaGF2ZSByZWFk
CitbUHJpbWVyXShWMV81X1ByaW1lci5tZCkgYW5kIFtBZHZhbmNlZEd1aWRlXShWMV81X0FkdmFu
Y2VkR3VpZGUubWQpLCBzZW5kIGl0IHRvCitnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vw
cy5jb20uCisKKyMjIFdoeSBzaG91bGQgSSB1c2UgR29vZ2xlIFRlc3QgaW5zdGVhZCBvZiBteSBm
YXZvcml0ZSBDKysgdGVzdGluZyBmcmFtZXdvcms/ICMjCisKK0ZpcnN0LCBsZXQncyBzYXkgY2xl
YXJseSB0aGF0IHdlIGRvbid0IHdhbnQgdG8gZ2V0IGludG8gdGhlIGRlYmF0ZSBvZgord2hpY2gg
QysrIHRlc3RpbmcgZnJhbWV3b3JrIGlzICoqdGhlIGJlc3QqKi4gIFRoZXJlIGV4aXN0IG1hbnkg
ZmluZQorZnJhbWV3b3JrcyBmb3Igd3JpdGluZyBDKysgdGVzdHMsIGFuZCB3ZSBoYXZlIHRyZW1l
bmRvdXMgcmVzcGVjdCBmb3IKK3RoZSBkZXZlbG9wZXJzIGFuZCB1c2VycyBvZiB0aGVtLiAgV2Ug
ZG9uJ3QgdGhpbmsgdGhlcmUgaXMgKG9yIHdpbGwKK2JlKSBhIHNpbmdsZSBiZXN0IGZyYW1ld29y
ayAtIHlvdSBoYXZlIHRvIHBpY2sgdGhlIHJpZ2h0IHRvb2wgZm9yIHRoZQorcGFydGljdWxhciB0
YXNrIHlvdSBhcmUgdGFja2xpbmcuCisKK1dlIGNyZWF0ZWQgR29vZ2xlIFRlc3QgYmVjYXVzZSB3
ZSBjb3VsZG4ndCBmaW5kIHRoZSByaWdodCBjb21iaW5hdGlvbgorb2YgZmVhdHVyZXMgYW5kIGNv
bnZlbmllbmNlcyBpbiBhbiBleGlzdGluZyBmcmFtZXdvcmsgdG8gc2F0aXNmeSBfb3VyXworbmVl
ZHMuICBUaGUgZm9sbG93aW5nIGlzIGEgbGlzdCBvZiB0aGluZ3MgdGhhdCBfd2VfIGxpa2UgYWJv
dXQgR29vZ2xlCitUZXN0LiAgV2UgZG9uJ3QgY2xhaW0gdGhlbSB0byBiZSB1bmlxdWUgdG8gR29v
Z2xlIFRlc3QgLSByYXRoZXIsIHRoZQorY29tYmluYXRpb24gb2YgdGhlbSBtYWtlcyBHb29nbGUg
VGVzdCB0aGUgY2hvaWNlIGZvciB1cy4gIFdlIGhvcGUgdGhpcworbGlzdCBjYW4gaGVscCB5b3Ug
ZGVjaWRlIHdoZXRoZXIgaXQgaXMgZm9yIHlvdSB0b28uCisKKyAgKiBHb29nbGUgVGVzdCBpcyBk
ZXNpZ25lZCB0byBiZSBwb3J0YWJsZS4gIEl0IHdvcmtzIHdoZXJlIG1hbnkgU1RMIHR5cGVzIChl
LmcuIGBzdGQ6OnN0cmluZ2AgYW5kIGBzdGQ6OnZlY3RvcmApIGRvbid0IGNvbXBpbGUuICBJdCBk
b2Vzbid0IHJlcXVpcmUgZXhjZXB0aW9ucyBvciBSVFRJLiAgQXMgYSByZXN1bHQsIGl0IHJ1bnMg
b24gTGludXgsIE1hYyBPUyBYLCBXaW5kb3dzIGFuZCBzZXZlcmFsIGVtYmVkZGVkIG9wZXJhdGlu
ZyBzeXN0ZW1zLgorICAqIE5vbmZhdGFsIGFzc2VydGlvbnMgKGBFWFBFQ1RfKmApIGhhdmUgcHJv
dmVuIHRvIGJlIGdyZWF0IHRpbWUgc2F2ZXJzLCBhcyB0aGV5IGFsbG93IGEgdGVzdCB0byByZXBv
cnQgbXVsdGlwbGUgZmFpbHVyZXMgaW4gYSBzaW5nbGUgZWRpdC1jb21waWxlLXRlc3QgY3ljbGUu
CisgICogSXQncyBlYXN5IHRvIHdyaXRlIGFzc2VydGlvbnMgdGhhdCBnZW5lcmF0ZSBpbmZvcm1h
dGl2ZSBtZXNzYWdlczogeW91IGp1c3QgdXNlIHRoZSBzdHJlYW0gc3ludGF4IHRvIGFwcGVuZCBh
bnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgZS5nLiBgQVNTRVJUX0VRKDUsIEZvbyhpKSkgPDwg
IiB3aGVyZSBpID0gIiA8PCBpO2AuICBJdCBkb2Vzbid0IHJlcXVpcmUgYSBuZXcgc2V0IG9mIG1h
Y3JvcyBvciBzcGVjaWFsIGZ1bmN0aW9ucy4KKyAgKiBHb29nbGUgVGVzdCBhdXRvbWF0aWNhbGx5
IGRldGVjdHMgeW91ciB0ZXN0cyBhbmQgZG9lc24ndCByZXF1aXJlIHlvdSB0byBlbnVtZXJhdGUg
dGhlbSBpbiBvcmRlciB0byBydW4gdGhlbS4KKyAgKiBObyBmcmFtZXdvcmsgY2FuIGFudGljaXBh
dGUgYWxsIHlvdXIgbmVlZHMsIHNvIEdvb2dsZSBUZXN0IHByb3ZpZGVzIGBFWFBFQ1RfUFJFRCpg
IHRvIG1ha2UgaXQgZWFzeSB0byBleHRlbmQgeW91ciBhc3NlcnRpb24gdm9jYWJ1bGFyeS4gIEZv
ciBhIG5pY2VyIHN5bnRheCwgeW91IGNhbiBkZWZpbmUgeW91ciBvd24gYXNzZXJ0aW9uIG1hY3Jv
cyB0cml2aWFsbHkgaW4gdGVybXMgb2YgYEVYUEVDVF9QUkVEKmAuCisgICogRGVhdGggdGVzdHMg
YXJlIHByZXR0eSBoYW5keSBmb3IgZW5zdXJpbmcgdGhhdCB5b3VyIGFzc2VydHMgaW4gcHJvZHVj
dGlvbiBjb2RlIGFyZSB0cmlnZ2VyZWQgYnkgdGhlIHJpZ2h0IGNvbmRpdGlvbnMuCisgICogYFND
T1BFRF9UUkFDRWAgaGVscHMgeW91IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYW4gYXNzZXJ0
aW9uIGZhaWx1cmUgd2hlbiBpdCBjb21lcyBmcm9tIGluc2lkZSBhIHN1Yi1yb3V0aW5lIG9yIGxv
b3AuCisgICogWW91IGNhbiBkZWNpZGUgd2hpY2ggdGVzdHMgdG8gcnVuIHVzaW5nIG5hbWUgcGF0
dGVybnMuICBUaGlzIHNhdmVzIHRpbWUgd2hlbiB5b3Ugd2FudCB0byBxdWlja2x5IHJlcHJvZHVj
ZSBhIHRlc3QgZmFpbHVyZS4KKworIyMgSG93IGRvIEkgZ2VuZXJhdGUgNjQtYml0IGJpbmFyaWVz
IG9uIFdpbmRvd3MgKHVzaW5nIFZpc3VhbCBTdHVkaW8gMjAwOCk/ICMjCisKKyhBbnN3ZXJlZCBi
eSBUcmV2b3IgUm9iaW5zb24pCisKK0xvYWQgdGhlIHN1cHBsaWVkIFZpc3VhbCBTdHVkaW8gc29s
dXRpb24gZmlsZSwgZWl0aGVyIGBtc3ZjXGd0ZXN0LW1kLnNsbmAgb3IKK2Btc3ZjXGd0ZXN0LnNs
bmAuIEdvIHRocm91Z2ggdGhlIG1pZ3JhdGlvbiB3aXphcmQgdG8gbWlncmF0ZSB0aGUKK3NvbHV0
aW9uIGFuZCBwcm9qZWN0IGZpbGVzIHRvIFZpc3VhbCBTdHVkaW8gMjAwOC4gU2VsZWN0CitgQ29u
ZmlndXJhdGlvbiBNYW5hZ2VyLi4uYCBmcm9tIHRoZSBgQnVpbGRgIG1lbnUuIFNlbGVjdCBgPE5l
dy4uLj5gIGZyb20KK3RoZSBgQWN0aXZlIHNvbHV0aW9uIHBsYXRmb3JtYCBkcm9wZG93bi4gIFNl
bGVjdCBgeDY0YCBmcm9tIHRoZSBuZXcKK3BsYXRmb3JtIGRyb3Bkb3duLCBsZWF2ZSBgQ29weSBz
ZXR0aW5ncyBmcm9tYCBzZXQgdG8gYFdpbjMyYCBhbmQKK2BDcmVhdGUgbmV3IHByb2plY3QgcGxh
dGZvcm1zYCBjaGVja2VkLCB0aGVuIGNsaWNrIGBPS2AuIFlvdSBub3cgaGF2ZQorYFdpbjMyYCBh
bmQgYHg2NGAgcGxhdGZvcm0gY29uZmlndXJhdGlvbnMsIHNlbGVjdGFibGUgZnJvbSB0aGUKK2BT
dGFuZGFyZGAgdG9vbGJhciwgd2hpY2ggYWxsb3cgeW91IHRvIHRvZ2dsZSBiZXR3ZWVuIGJ1aWxk
aW5nIDMyLWJpdCBvcgorNjQtYml0IGJpbmFyaWVzIChvciBib3RoIGF0IG9uY2UgdXNpbmcgQmF0
Y2ggQnVpbGQpLgorCitJbiBvcmRlciB0byBwcmV2ZW50IGJ1aWxkIG91dHB1dCBmaWxlcyBmcm9t
IG92ZXJ3cml0aW5nIG9uZSBhbm90aGVyLAoreW91J2xsIG5lZWQgdG8gY2hhbmdlIHRoZSBgSW50
ZXJtZWRpYXRlIERpcmVjdG9yeWAgc2V0dGluZ3MgZm9yIHRoZQorbmV3bHkgY3JlYXRlZCBwbGF0
Zm9ybSBjb25maWd1cmF0aW9uIGFjcm9zcyBhbGwgdGhlIHByb2plY3RzLiBUbyBkbwordGhpcywg
bXVsdGktc2VsZWN0IChlLmcuIHVzaW5nIHNoaWZ0LWNsaWNrKSBhbGwgcHJvamVjdHMgKGJ1dCBu
b3QgdGhlCitzb2x1dGlvbikgaW4gdGhlIGBTb2x1dGlvbiBFeHBsb3JlcmAuIFJpZ2h0LWNsaWNr
IG9uZSBvZiB0aGVtIGFuZAorc2VsZWN0IGBQcm9wZXJ0aWVzYC4gSW4gdGhlIGxlZnQgcGFuZSwg
c2VsZWN0IGBDb25maWd1cmF0aW9uIFByb3BlcnRpZXNgLAorYW5kIGZyb20gdGhlIGBDb25maWd1
cmF0aW9uYCBkcm9wZG93biwgc2VsZWN0IGBBbGwgQ29uZmlndXJhdGlvbnNgLgorTWFrZSBzdXJl
IHRoZSBzZWxlY3RlZCBwbGF0Zm9ybSBpcyBgeDY0YC4gRm9yIHRoZQorYEludGVybWVkaWF0ZSBE
aXJlY3RvcnlgIHNldHRpbmcsIGNoYW5nZSB0aGUgdmFsdWUgZnJvbQorYCQoUGxhdGZvcm1OYW1l
KVwkKENvbmZpZ3VyYXRpb25OYW1lKWAgdG8KK2AkKE91dERpcilcJChQcm9qZWN0TmFtZSlgLiBD
bGljayBgT0tgIGFuZCB0aGVuIGJ1aWxkIHRoZQorc29sdXRpb24uIFdoZW4gdGhlIGJ1aWxkIGlz
IGNvbXBsZXRlLCB0aGUgNjQtYml0IGJpbmFyaWVzIHdpbGwgYmUgaW4KK3RoZSBgbXN2Y1x4NjRc
RGVidWdgIGRpcmVjdG9yeS4KKworIyMgQ2FuIEkgdXNlIEdvb2dsZSBUZXN0IG9uIE1pbkdXPyAj
IworCitXZSBoYXZlbid0IHRlc3RlZCB0aGlzIG91cnNlbHZlcywgYnV0IFBlciBBYnJhaGFtc2Vu
IHJlcG9ydGVkIHRoYXQgaGUKK3dhcyBhYmxlIHRvIGNvbXBpbGUgYW5kIGluc3RhbGwgR29vZ2xl
IFRlc3Qgc3VjY2Vzc2Z1bGx5IHdoZW4gdXNpbmcKK01pbkdXIGZyb20gQ3lnd2luLiAgWW91J2xs
IG5lZWQgdG8gY29uZmlndXJlIGl0IHdpdGg6CisKK2BQQVRIL1RPL2NvbmZpZ3VyZSBDQz0iZ2Nj
IC1tbm8tY3lnd2luIiBDWFg9ImcrKyAtbW5vLWN5Z3dpbiJgCisKK1lvdSBzaG91bGQgYmUgYWJs
ZSB0byByZXBsYWNlIHRoZSBgLW1uby1jeWd3aW5gIG9wdGlvbiB3aXRoIGRpcmVjdCBsaW5rcwor
dG8gdGhlIHJlYWwgTWluR1cgYmluYXJpZXMsIGJ1dCB3ZSBoYXZlbid0IHRyaWVkIHRoYXQuCisK
K0NhdmVhdHM6CisKKyAgKiBUaGVyZSBhcmUgbWFueSB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZy4K
KyAgKiBgbWFrZSBjaGVja2Agd2lsbCBwcm9kdWNlIHNvbWUgZXJyb3JzIGFzIG5vdCBhbGwgdGVz
dHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZiBhcmUgY29tcGF0aWJsZSB3aXRoIE1pbkdXLgorCitX
ZSBhbHNvIGhhdmUgcmVwb3J0cyBvbiBzdWNjZXNzZnVsIGNyb3NzIGNvbXBpbGF0aW9uIG9mIEdv
b2dsZSBUZXN0IE1pbkdXIGJpbmFyaWVzIG9uIExpbnV4IHVzaW5nIFt0aGVzZSBpbnN0cnVjdGlv
bnNdKGh0dHA6Ly93aWtpLnd4d2lkZ2V0cy5vcmcvQ3Jvc3MtQ29tcGlsaW5nX1VuZGVyX0xpbnV4
I0Nyb3NzLWNvbXBpbGluZ191bmRlcl9MaW51eF9mb3JfTVNfV2luZG93cykgb24gdGhlIFd4V2lk
Z2V0cyBzaXRlLgorCitQbGVhc2UgY29udGFjdCBgZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVn
cm91cHMuY29tYCBpZiB5b3UgYXJlCitpbnRlcmVzdGVkIGluIGltcHJvdmluZyB0aGUgc3VwcG9y
dCBmb3IgTWluR1cuCisKKyMjIFdoeSBkb2VzIEdvb2dsZSBUZXN0IHN1cHBvcnQgRVhQRUNUXF9F
UShOVUxMLCBwdHIpIGFuZCBBU1NFUlRcX0VRKE5VTEwsIHB0cikgYnV0IG5vdCBFWFBFQ1RcX05F
KE5VTEwsIHB0cikgYW5kIEFTU0VSVFxfTkUoTlVMTCwgcHRyKT8gIyMKKworRHVlIHRvIHNvbWUg
cGVjdWxpYXJpdHkgb2YgQysrLCBpdCByZXF1aXJlcyBzb21lIG5vbi10cml2aWFsIHRlbXBsYXRl
CittZXRhIHByb2dyYW1taW5nIHRyaWNrcyB0byBzdXBwb3J0IHVzaW5nIGBOVUxMYCBhcyBhbiBh
cmd1bWVudCBvZiB0aGUKK2BFWFBFQ1RfWFgoKWAgYW5kIGBBU1NFUlRfWFgoKWAgbWFjcm9zLiBU
aGVyZWZvcmUgd2Ugb25seSBkbyBpdCB3aGVyZQoraXQncyBtb3N0IG5lZWRlZCAob3RoZXJ3aXNl
IHdlIG1ha2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIEdvb2dsZSBUZXN0CitoYXJkZXIgdG8gbWFp
bnRhaW4gYW5kIG1vcmUgZXJyb3ItcHJvbmUgdGhhbiBuZWNlc3NhcnkpLgorCitUaGUgYEVYUEVD
VF9FUSgpYCBtYWNybyB0YWtlcyB0aGUgX2V4cGVjdGVkXyB2YWx1ZSBhcyBpdHMgZmlyc3QKK2Fy
Z3VtZW50IGFuZCB0aGUgX2FjdHVhbF8gdmFsdWUgYXMgdGhlIHNlY29uZC4gSXQncyByZWFzb25h
YmxlIHRoYXQKK3NvbWVvbmUgd2FudHMgdG8gd3JpdGUgYEVYUEVDVF9FUShOVUxMLCBzb21lX2V4
cHJlc3Npb24pYCwgYW5kIHRoaXMKK2luZGVlZCB3YXMgcmVxdWVzdGVkIHNldmVyYWwgdGltZXMu
IFRoZXJlZm9yZSB3ZSBpbXBsZW1lbnRlZCBpdC4KKworVGhlIG5lZWQgZm9yIGBFWFBFQ1RfTkUo
TlVMTCwgcHRyKWAgaXNuJ3QgbmVhcmx5IGFzIHN0cm9uZy4gV2hlbiB0aGUKK2Fzc2VydGlvbiBm
YWlscywgeW91IGFscmVhZHkga25vdyB0aGF0IGBwdHJgIG11c3QgYmUgYE5VTExgLCBzbyBpdAor
ZG9lc24ndCBhZGQgYW55IGluZm9ybWF0aW9uIHRvIHByaW50IHB0ciBpbiB0aGlzIGNhc2UuIFRo
YXQgbWVhbnMKK2BFWFBFQ1RfVFJVRShwdHIgISBOVUxMKWAgd29ya3MganVzdCBhcyB3ZWxsLgor
CitJZiB3ZSB3ZXJlIHRvIHN1cHBvcnQgYEVYUEVDVF9ORShOVUxMLCBwdHIpYCwgZm9yIGNvbnNp
c3RlbmN5IHdlJ2xsCitoYXZlIHRvIHN1cHBvcnQgYEVYUEVDVF9ORShwdHIsIE5VTEwpYCBhcyB3
ZWxsLCBhcyB1bmxpa2UgYEVYUEVDVF9FUWAsCit3ZSBkb24ndCBoYXZlIGEgY29udmVudGlvbiBv
biB0aGUgb3JkZXIgb2YgdGhlIHR3byBhcmd1bWVudHMgZm9yCitgRVhQRUNUX05FYC4gVGhpcyBt
ZWFucyB1c2luZyB0aGUgdGVtcGxhdGUgbWV0YSBwcm9ncmFtbWluZyB0cmlja3MKK3R3aWNlIGlu
IHRoZSBpbXBsZW1lbnRhdGlvbiwgbWFraW5nIGl0IGV2ZW4gaGFyZGVyIHRvIHVuZGVyc3RhbmQg
YW5kCittYWludGFpbi4gV2UgYmVsaWV2ZSB0aGUgYmVuZWZpdCBkb2Vzbid0IGp1c3RpZnkgdGhl
IGNvc3QuCisKK0ZpbmFsbHksIHdpdGggdGhlIGdyb3d0aCBvZiBHb29nbGUgTW9jaydzIFttYXRj
aGVyXSguLi8uLi9Db29rQm9vay5tZCN1c2luZy1tYXRjaGVycy1pbi1nb29nbGUtdGVzdC1hc3Nl
cnRpb25zKSBsaWJyYXJ5LCB3ZSBhcmUKK2VuY291cmFnaW5nIHBlb3BsZSB0byB1c2UgdGhlIHVu
aWZpZWQgYEVYUEVDVF9USEFUKHZhbHVlLCBtYXRjaGVyKWAKK3N5bnRheCBtb3JlIG9mdGVuIGlu
IHRlc3RzLiBPbmUgc2lnbmlmaWNhbnQgYWR2YW50YWdlIG9mIHRoZSBtYXRjaGVyCithcHByb2Fj
aCBpcyB0aGF0IG1hdGNoZXJzIGNhbiBiZSBlYXNpbHkgY29tYmluZWQgdG8gZm9ybSBuZXcgbWF0
Y2hlcnMsCit3aGlsZSB0aGUgYEVYUEVDVF9ORWAsIGV0YywgbWFjcm9zIGNhbm5vdCBiZSBlYXNp
bHkKK2NvbWJpbmVkLiBUaGVyZWZvcmUgd2Ugd2FudCB0byBpbnZlc3QgbW9yZSBpbiB0aGUgbWF0
Y2hlcnMgdGhhbiBpbiB0aGUKK2BFWFBFQ1RfWFgoKWAgbWFjcm9zLgorCisjIyBEb2VzIEdvb2ds
ZSBUZXN0IHN1cHBvcnQgcnVubmluZyB0ZXN0cyBpbiBwYXJhbGxlbD8gIyMKKworVGVzdCBydW5u
ZXJzIHRlbmQgdG8gYmUgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIGJ1aWxkL3Rlc3QKK2Vudmly
b25tZW50LCBhbmQgR29vZ2xlIFRlc3QgZG9lc24ndCB0cnkgdG8gc29sdmUgdGhlIHByb2JsZW0g
b2YKK3J1bm5pbmcgdGVzdHMgaW4gcGFyYWxsZWwuICBJbnN0ZWFkLCB3ZSB0cmllZCB0byBtYWtl
IEdvb2dsZSBUZXN0IHdvcmsKK25pY2VseSB3aXRoIHRlc3QgcnVubmVycy4gIEZvciBleGFtcGxl
LCBHb29nbGUgVGVzdCdzIFhNTCByZXBvcnQKK2NvbnRhaW5zIHRoZSB0aW1lIHNwZW50IG9uIGVh
Y2ggdGVzdCwgYW5kIGl0cyBgZ3Rlc3RfbGlzdF90ZXN0c2AgYW5kCitgZ3Rlc3RfZmlsdGVyYCBm
bGFncyBjYW4gYmUgdXNlZCBmb3Igc3BsaXR0aW5nIHRoZSBleGVjdXRpb24gb2YgdGVzdAorbWV0
aG9kcyBpbnRvIG11bHRpcGxlIHByb2Nlc3Nlcy4gIFRoZXNlIGZ1bmN0aW9uYWxpdGllcyBjYW4g
aGVscCB0aGUKK3Rlc3QgcnVubmVyIHJ1biB0aGUgdGVzdHMgaW4gcGFyYWxsZWwuCisKKyMjIFdo
eSBkb24ndCBHb29nbGUgVGVzdCBydW4gdGhlIHRlc3RzIGluIGRpZmZlcmVudCB0aHJlYWRzIHRv
IHNwZWVkIHRoaW5ncyB1cD8gIyMKKworSXQncyBkaWZmaWN1bHQgdG8gd3JpdGUgdGhyZWFkLXNh
ZmUgY29kZS4gIE1vc3QgdGVzdHMgYXJlIG5vdCB3cml0dGVuCit3aXRoIHRocmVhZC1zYWZldHkg
aW4gbWluZCwgYW5kIHRodXMgbWF5IG5vdCB3b3JrIGNvcnJlY3RseSBpbiBhCittdWx0aS10aHJl
YWRlZCBzZXR0aW5nLgorCitJZiB5b3UgdGhpbmsgYWJvdXQgaXQsIGl0J3MgYWxyZWFkeSBoYXJk
IHRvIG1ha2UgeW91ciBjb2RlIHdvcmsgd2hlbgoreW91IGtub3cgd2hhdCBvdGhlciB0aHJlYWRz
IGFyZSBkb2luZy4gIEl0J3MgbXVjaCBoYXJkZXIsIGFuZAorc29tZXRpbWVzIGV2ZW4gaW1wb3Nz
aWJsZSwgdG8gbWFrZSB5b3VyIGNvZGUgd29yayB3aGVuIHlvdSBkb24ndCBrbm93Cit3aGF0IG90
aGVyIHRocmVhZHMgYXJlIGRvaW5nIChyZW1lbWJlciB0aGF0IHRlc3QgbWV0aG9kcyBjYW4gYmUg
YWRkZWQsCitkZWxldGVkLCBvciBtb2RpZmllZCBhZnRlciB5b3VyIHRlc3Qgd2FzIHdyaXR0ZW4p
LiAgSWYgeW91IHdhbnQgdG8gcnVuCit0aGUgdGVzdHMgaW4gcGFyYWxsZWwsIHlvdSdkIGJldHRl
ciBydW4gdGhlbSBpbiBkaWZmZXJlbnQgcHJvY2Vzc2VzLgorCisjIyBXaHkgYXJlbid0IEdvb2ds
ZSBUZXN0IGFzc2VydGlvbnMgaW1wbGVtZW50ZWQgdXNpbmcgZXhjZXB0aW9ucz8gIyMKKworT3Vy
IG9yaWdpbmFsIG1vdGl2YXRpb24gd2FzIHRvIGJlIGFibGUgdG8gdXNlIEdvb2dsZSBUZXN0IGlu
IHByb2plY3RzCit0aGF0IGRpc2FibGUgZXhjZXB0aW9ucy4gIExhdGVyIHdlIHJlYWxpemVkIHNv
bWUgYWRkaXRpb25hbCBiZW5lZml0cworb2YgdGhpcyBhcHByb2FjaDoKKworICAxLiBUaHJvd2lu
ZyBpbiBhIGRlc3RydWN0b3IgaXMgdW5kZWZpbmVkIGJlaGF2aW9yIGluIEMrKy4gIE5vdCB1c2lu
ZyBleGNlcHRpb25zIG1lYW5zIEdvb2dsZSBUZXN0J3MgYXNzZXJ0aW9ucyBhcmUgc2FmZSB0byB1
c2UgaW4gZGVzdHJ1Y3RvcnMuCisgIDEuIFRoZSBgRVhQRUNUXypgIGZhbWlseSBvZiBtYWNyb3Mg
d2lsbCBjb250aW51ZSBldmVuIGFmdGVyIGEgZmFpbHVyZSwgYWxsb3dpbmcgbXVsdGlwbGUgZmFp
bHVyZXMgaW4gYSBgVEVTVGAgdG8gYmUgcmVwb3J0ZWQgaW4gYSBzaW5nbGUgcnVuLiBUaGlzIGlz
IGEgcG9wdWxhciBmZWF0dXJlLCBhcyBpbiBDKysgdGhlIGVkaXQtY29tcGlsZS10ZXN0IGN5Y2xl
IGlzIHVzdWFsbHkgcXVpdGUgbG9uZyBhbmQgYmVpbmcgYWJsZSB0byBmaXhpbmcgbW9yZSB0aGFu
IG9uZSB0aGluZyBhdCBhIHRpbWUgaXMgYSBibGVzc2luZy4KKyAgMS4gSWYgYXNzZXJ0aW9ucyBh
cmUgaW1wbGVtZW50ZWQgdXNpbmcgZXhjZXB0aW9ucywgYSB0ZXN0IG1heSBmYWxzZWx5IGlnbm9y
ZSBhIGZhaWx1cmUgaWYgaXQncyBjYXVnaHQgYnkgdXNlciBjb2RlOgorYGBgCit0cnkgeyAuLi4g
QVNTRVJUX1RSVUUoLi4uKSAuLi4gfQorY2F0Y2ggKC4uLikgeyAuLi4gfQorYGBgCitUaGUgYWJv
dmUgY29kZSB3aWxsIHBhc3MgZXZlbiBpZiB0aGUgYEFTU0VSVF9UUlVFYCB0aHJvd3MuICBXaGls
ZSBpdCdzIHVubGlrZWx5IGZvciBzb21lb25lIHRvIHdyaXRlIHRoaXMgaW4gYSB0ZXN0LCBpdCdz
IHBvc3NpYmxlIHRvIHJ1biBpbnRvIHRoaXMgcGF0dGVybiB3aGVuIHlvdSB3cml0ZSBhc3NlcnRp
b25zIGluIGNhbGxiYWNrcyB0aGF0IGFyZSBjYWxsZWQgYnkgdGhlIGNvZGUgdW5kZXIgdGVzdC4K
KworVGhlIGRvd25zaWRlIG9mIG5vdCB1c2luZyBleGNlcHRpb25zIGlzIHRoYXQgYEFTU0VSVF8q
YCAoaW1wbGVtZW50ZWQKK3VzaW5nIGByZXR1cm5gKSB3aWxsIG9ubHkgYWJvcnQgdGhlIGN1cnJl
bnQgZnVuY3Rpb24sIG5vdCB0aGUgY3VycmVudAorYFRFU1RgLgorCisjIyBXaHkgZG8gd2UgdXNl
IHR3byBkaWZmZXJlbnQgbWFjcm9zIGZvciB0ZXN0cyB3aXRoIGFuZCB3aXRob3V0IGZpeHR1cmVz
PyAjIworCitVbmZvcnR1bmF0ZWx5LCBDKysncyBtYWNybyBzeXN0ZW0gZG9lc24ndCBhbGxvdyB1
cyB0byB1c2UgdGhlIHNhbWUKK21hY3JvIGZvciBib3RoIGNhc2VzLiAgT25lIHBvc3NpYmlsaXR5
IGlzIHRvIHByb3ZpZGUgb25seSBvbmUgbWFjcm8KK2ZvciB0ZXN0cyB3aXRoIGZpeHR1cmVzLCBh
bmQgcmVxdWlyZSB0aGUgdXNlciB0byBkZWZpbmUgYW4gZW1wdHkKK2ZpeHR1cmUgc29tZXRpbWVz
OgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCitU
RVNUX0YoRm9vVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KK2BgYAorb3IKK2BgYAordHlwZWRlZiA6
OnRlc3Rpbmc6OlRlc3QgRm9vVGVzdDsKKworVEVTVF9GKEZvb1Rlc3QsIERvZXNUaGF0KSB7IC4u
LiB9CitgYGAKKworWWV0LCBtYW55IHBlb3BsZSB0aGluayB0aGlzIGlzIG9uZSBsaW5lIHRvbyBt
YW55LiA6LSkgT3VyIGdvYWwgd2FzIHRvCittYWtlIGl0IHJlYWxseSBlYXN5IHRvIHdyaXRlIHRl
c3RzLCBzbyB3ZSB0cmllZCB0byBtYWtlIHNpbXBsZSB0ZXN0cwordHJpdmlhbCB0byBjcmVhdGUu
ICBUaGF0IG1lYW5zIHVzaW5nIGEgc2VwYXJhdGUgbWFjcm8gZm9yIHN1Y2ggdGVzdHMuCisKK1dl
IHRoaW5rIG5laXRoZXIgYXBwcm9hY2ggaXMgaWRlYWwsIHlldCBlaXRoZXIgb2YgdGhlbSBpcyBy
ZWFzb25hYmxlLgorSW4gdGhlIGVuZCwgaXQgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIgbXVjaCBl
aXRoZXIgd2F5LgorCisjIyBXaHkgZG9uJ3Qgd2UgdXNlIHN0cnVjdHMgYXMgdGVzdCBmaXh0dXJl
cz8gIyMKKworV2UgbGlrZSB0byB1c2Ugc3RydWN0cyBvbmx5IHdoZW4gcmVwcmVzZW50aW5nIHBh
c3NpdmUgZGF0YS4gIFRoaXMKK2Rpc3RpbmN0aW9uIGJldHdlZW4gc3RydWN0cyBhbmQgY2xhc3Nl
cyBpcyBnb29kIGZvciBkb2N1bWVudGluZyB0aGUKK2ludGVudCBvZiB0aGUgY29kZSdzIGF1dGhv
ci4gIFNpbmNlIHRlc3QgZml4dHVyZXMgaGF2ZSBsb2dpYyBsaWtlCitgU2V0VXAoKWAgYW5kIGBU
ZWFyRG93bigpYCwgdGhleSBhcmUgYmV0dGVyIGRlZmluZWQgYXMgY2xhc3Nlcy4KKworIyMgV2h5
IGFyZSBkZWF0aCB0ZXN0cyBpbXBsZW1lbnRlZCBhcyBhc3NlcnRpb25zIGluc3RlYWQgb2YgdXNp
bmcgYSB0ZXN0IHJ1bm5lcj8gIyMKKworT3VyIGdvYWwgd2FzIHRvIG1ha2UgZGVhdGggdGVzdHMg
YXMgY29udmVuaWVudCBmb3IgYSB1c2VyIGFzIEMrKworcG9zc2libHkgYWxsb3dzLiAgSW4gcGFy
dGljdWxhcjoKKworICAqIFRoZSBydW5uZXItc3R5bGUgcmVxdWlyZXMgdG8gc3BsaXQgdGhlIGlu
Zm9ybWF0aW9uIGludG8gdHdvIHBpZWNlczogdGhlIGRlZmluaXRpb24gb2YgdGhlIGRlYXRoIHRl
c3QgaXRzZWxmLCBhbmQgdGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBydW5uZXIgb24gaG93IHRv
IHJ1biB0aGUgZGVhdGggdGVzdCBhbmQgd2hhdCB0byBleHBlY3QuICBUaGUgZGVhdGggdGVzdCB3
b3VsZCBiZSB3cml0dGVuIGluIEMrKywgd2hpbGUgdGhlIHJ1bm5lciBzcGVjIG1heSBvciBtYXkg
bm90IGJlLiAgQSB1c2VyIG5lZWRzIHRvIGNhcmVmdWxseSBrZWVwIHRoZSB0d28gaW4gc3luYy4g
YEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIGV4cGVjdGVkX21lc3NhZ2UpYCBzcGVjaWZpZXMgYWxs
IG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBpbiBvbmUgcGxhY2UsIGluIG9uZSBsYW5ndWFnZSwgd2l0
aG91dCBib2lsZXJwbGF0ZSBjb2RlLiBJdCBpcyB2ZXJ5IGRlY2xhcmF0aXZlLgorICAqIGBBU1NF
UlRfREVBVEhgIGhhcyBhIHNpbWlsYXIgc3ludGF4IGFuZCBlcnJvci1yZXBvcnRpbmcgc2VtYW50
aWNzIGFzIG90aGVyIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMsIGFuZCB0aHVzIGlzIGVhc3kgdG8g
bGVhcm4uCisgICogYEFTU0VSVF9ERUFUSGAgY2FuIGJlIG1peGVkIHdpdGggb3RoZXIgYXNzZXJ0
aW9ucyBhbmQgb3RoZXIgbG9naWMgYXQgeW91ciB3aWxsLiAgWW91IGFyZSBub3QgbGltaXRlZCB0
byBvbmUgZGVhdGggdGVzdCBwZXIgdGVzdCBtZXRob2QuIEZvciBleGFtcGxlLCB5b3UgY2FuIHdy
aXRlIHNvbWV0aGluZyBsaWtlOgorYGBgCisgICAgaWYgKEZvb0NvbmRpdGlvbigpKSB7CisgICAg
ICBBU1NFUlRfREVBVEgoQmFyKCksICJibGFoIik7CisgICAgfSBlbHNlIHsKKyAgICAgIEFTU0VS
VF9FUSg1LCBCYXIoKSk7CisgICAgfQorYGBgCitJZiB5b3UgcHJlZmVyIG9uZSBkZWF0aCB0ZXN0
IHBlciB0ZXN0IG1ldGhvZCwgeW91IGNhbiB3cml0ZSB5b3VyIHRlc3RzIGluIHRoYXQgc3R5bGUg
dG9vLCBidXQgd2UgZG9uJ3Qgd2FudCB0byBpbXBvc2UgdGhhdCBvbiB0aGUgdXNlcnMuICBUaGUg
ZmV3ZXIgYXJ0aWZpY2lhbCBsaW1pdGF0aW9ucyB0aGUgYmV0dGVyLgorICAqIGBBU1NFUlRfREVB
VEhgIGNhbiByZWZlcmVuY2UgbG9jYWwgdmFyaWFibGVzIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9u
LCBhbmQgeW91IGNhbiBkZWNpZGUgaG93IG1hbnkgZGVhdGggdGVzdHMgeW91IHdhbnQgYmFzZWQg
b24gcnVuLXRpbWUgaW5mb3JtYXRpb24uICBGb3IgZXhhbXBsZSwKK2BgYAorICAgIGNvbnN0IGlu
dCBjb3VudCA9IEdldENvdW50KCk7ICAvLyBPbmx5IGtub3duIGF0IHJ1biB0aW1lLgorICAgIGZv
ciAoaW50IGkgPSAxOyBpIDw9IGNvdW50OyBpKyspIHsKKyAgICAgIEFTU0VSVF9ERUFUSCh7Cisg
ICAgICAgIGRvdWJsZSogYnVmZmVyID0gbmV3IGRvdWJsZVtpXTsKKyAgICAgICAgLi4uIGluaXRp
YWxpemVzIGJ1ZmZlciAuLi4KKyAgICAgICAgRm9vKGJ1ZmZlciwgaSkKKyAgICAgIH0sICJibGFo
IGJsYWgiKTsKKyAgICB9CitgYGAKK1RoZSBydW5uZXItYmFzZWQgYXBwcm9hY2ggdGVuZHMgdG8g
YmUgbW9yZSBzdGF0aWMgYW5kIGxlc3MgZmxleGlibGUsIG9yIHJlcXVpcmVzIG1vcmUgdXNlciBl
ZmZvcnQgdG8gZ2V0IHRoaXMga2luZCBvZiBmbGV4aWJpbGl0eS4KKworQW5vdGhlciBpbnRlcmVz
dGluZyB0aGluZyBhYm91dCBgQVNTRVJUX0RFQVRIYCBpcyB0aGF0IGl0IGNhbGxzIGBmb3JrKClg
Cit0byBjcmVhdGUgYSBjaGlsZCBwcm9jZXNzIHRvIHJ1biB0aGUgZGVhdGggdGVzdC4gIFRoaXMg
aXMgbGlnaHRlbmluZworZmFzdCwgYXMgYGZvcmsoKWAgdXNlcyBjb3B5LW9uLXdyaXRlIHBhZ2Vz
IGFuZCBpbmN1cnMgYWxtb3N0IHplcm8KK292ZXJoZWFkLCBhbmQgdGhlIGNoaWxkIHByb2Nlc3Mg
c3RhcnRzIGZyb20gdGhlIHVzZXItc3VwcGxpZWQKK3N0YXRlbWVudCBkaXJlY3RseSwgc2tpcHBp
bmcgYWxsIGdsb2JhbCBhbmQgbG9jYWwgaW5pdGlhbGl6YXRpb24gYW5kCithbnkgY29kZSBsZWFk
aW5nIHRvIHRoZSBnaXZlbiBzdGF0ZW1lbnQuICBJZiB5b3UgbGF1bmNoIHRoZSBjaGlsZAorcHJv
Y2VzcyBmcm9tIHNjcmF0Y2gsIGl0IGNhbiB0YWtlIHNlY29uZHMganVzdCB0byBsb2FkIGV2ZXJ5
dGhpbmcgYW5kCitzdGFydCBydW5uaW5nIGlmIHRoZSB0ZXN0IGxpbmtzIHRvIG1hbnkgbGlicmFy
aWVzIGR5bmFtaWNhbGx5LgorCisjIyBNeSBkZWF0aCB0ZXN0IG1vZGlmaWVzIHNvbWUgc3RhdGUs
IGJ1dCB0aGUgY2hhbmdlIHNlZW1zIGxvc3QgYWZ0ZXIgdGhlIGRlYXRoIHRlc3QgZmluaXNoZXMu
IFdoeT8gIyMKKworRGVhdGggdGVzdHMgKGBFWFBFQ1RfREVBVEhgLCBldGMpIGFyZSBleGVjdXRl
ZCBpbiBhIHN1Yi1wcm9jZXNzIHMudC4gdGhlCitleHBlY3RlZCBjcmFzaCB3b24ndCBraWxsIHRo
ZSB0ZXN0IHByb2dyYW0gKGkuZS4gdGhlIHBhcmVudCBwcm9jZXNzKS4gQXMgYQorcmVzdWx0LCBh
bnkgaW4tbWVtb3J5IHNpZGUgZWZmZWN0cyB0aGV5IGluY3VyIGFyZSBvYnNlcnZhYmxlIGluIHRo
ZWlyCityZXNwZWN0aXZlIHN1Yi1wcm9jZXNzZXMsIGJ1dCBub3QgaW4gdGhlIHBhcmVudCBwcm9j
ZXNzLiBZb3UgY2FuIHRoaW5rIG9mIHRoZW0KK2FzIHJ1bm5pbmcgaW4gYSBwYXJhbGxlbCB1bml2
ZXJzZSwgbW9yZSBvciBsZXNzLgorCisjIyBUaGUgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJ1
bmRlZmluZWQgcmVmZXJlbmNlcyIgdG8gc29tZSBzdGF0aWMgY29uc3QgbWVtYmVyIHZhcmlhYmxl
cywgYnV0IEkgZGlkIGRlZmluZSB0aGVtIGluIHRoZSBjbGFzcyBib2R5LiBXaGF0J3Mgd3Jvbmc/
ICMjCisKK0lmIHlvdXIgY2xhc3MgaGFzIGEgc3RhdGljIGRhdGEgbWVtYmVyOgorCitgYGAKKy8v
IGZvby5oCitjbGFzcyBGb28geworICAuLi4KKyAgc3RhdGljIGNvbnN0IGludCBrQmFyID0gMTAw
OworfTsKK2BgYAorCitZb3UgYWxzbyBuZWVkIHRvIGRlZmluZSBpdCBfb3V0c2lkZV8gb2YgdGhl
IGNsYXNzIGJvZHkgaW4gYGZvby5jY2A6CisKK2BgYAorY29uc3QgaW50IEZvbzo6a0JhcjsgIC8v
IE5vIGluaXRpYWxpemVyIGhlcmUuCitgYGAKKworT3RoZXJ3aXNlIHlvdXIgY29kZSBpcyAqKmlu
dmFsaWQgQysrKiosIGFuZCBtYXkgYnJlYWsgaW4gdW5leHBlY3RlZCB3YXlzLiBJbgorcGFydGlj
dWxhciwgdXNpbmcgaXQgaW4gR29vZ2xlIFRlc3QgY29tcGFyaXNvbiBhc3NlcnRpb25zIChgRVhQ
RUNUX0VRYCwgZXRjKQord2lsbCBnZW5lcmF0ZSBhbiAidW5kZWZpbmVkIHJlZmVyZW5jZSIgbGlu
a2VyIGVycm9yLgorCisjIyBJIGhhdmUgYW4gaW50ZXJmYWNlIHRoYXQgaGFzIHNldmVyYWwgaW1w
bGVtZW50YXRpb25zLiBDYW4gSSB3cml0ZSBhIHNldCBvZiB0ZXN0cyBvbmNlIGFuZCByZXBlYXQg
dGhlbSBvdmVyIGFsbCB0aGUgaW1wbGVtZW50YXRpb25zPyAjIworCitHb29nbGUgVGVzdCBkb2Vz
bid0IHlldCBoYXZlIGdvb2Qgc3VwcG9ydCBmb3IgdGhpcyBraW5kIG9mIHRlc3RzLCBvcgorZGF0
YS1kcml2ZW4gdGVzdHMgaW4gZ2VuZXJhbC4gV2UgaG9wZSB0byBiZSBhYmxlIHRvIG1ha2UgaW1w
cm92ZW1lbnRzIGluIHRoaXMKK2FyZWEgc29vbi4KKworIyMgQ2FuIEkgZGVyaXZlIGEgdGVzdCBm
aXh0dXJlIGZyb20gYW5vdGhlcj8gIyMKKworWWVzLgorCitFYWNoIHRlc3QgZml4dHVyZSBoYXMg
YSBjb3JyZXNwb25kaW5nIGFuZCBzYW1lIG5hbWVkIHRlc3QgY2FzZS4gVGhpcyBtZWFucyBvbmx5
CitvbmUgdGVzdCBjYXNlIGNhbiB1c2UgYSBwYXJ0aWN1bGFyIGZpeHR1cmUuIFNvbWV0aW1lcywg
aG93ZXZlciwgbXVsdGlwbGUgdGVzdAorY2FzZXMgbWF5IHdhbnQgdG8gdXNlIHRoZSBzYW1lIG9y
IHNsaWdodGx5IGRpZmZlcmVudCBmaXh0dXJlcy4gRm9yIGV4YW1wbGUsIHlvdQorbWF5IHdhbnQg
dG8gbWFrZSBzdXJlIHRoYXQgYWxsIG9mIGEgR1VJIGxpYnJhcnkncyB0ZXN0IGNhc2VzIGRvbid0
IGxlYWsKK2ltcG9ydGFudCBzeXN0ZW0gcmVzb3VyY2VzIGxpa2UgZm9udHMgYW5kIGJydXNoZXMu
CisKK0luIEdvb2dsZSBUZXN0LCB5b3Ugc2hhcmUgYSBmaXh0dXJlIGFtb25nIHRlc3QgY2FzZXMg
YnkgcHV0dGluZyB0aGUgc2hhcmVkCitsb2dpYyBpbiBhIGJhc2UgdGVzdCBmaXh0dXJlLCB0aGVu
IGRlcml2aW5nIGZyb20gdGhhdCBiYXNlIGEgc2VwYXJhdGUgZml4dHVyZQorZm9yIGVhY2ggdGVz
dCBjYXNlIHRoYXQgd2FudHMgdG8gdXNlIHRoaXMgY29tbW9uIGxvZ2ljLiBZb3UgdGhlbiB1c2Ug
YFRFU1RfRigpYAordG8gd3JpdGUgdGVzdHMgdXNpbmcgZWFjaCBkZXJpdmVkIGZpeHR1cmUuCisK
K1R5cGljYWxseSwgeW91ciBjb2RlIGxvb2tzIGxpa2UgdGhpczoKKworYGBgCisvLyBEZWZpbmVz
IGEgYmFzZSB0ZXN0IGZpeHR1cmUuCitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgeworICBwcm90ZWN0ZWQ6CisgICAuLi4KK307CisKKy8vIERlcml2ZXMgYSBmaXh0dXJl
IEZvb1Rlc3QgZnJvbSBCYXNlVGVzdC4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgQmFzZVRlc3Qg
eworICBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgICAgQmFzZVRl
c3Q6OlNldFVwKCk7ICAvLyBTZXRzIHVwIHRoZSBiYXNlIGZpeHR1cmUgZmlyc3QuCisgICAgICAu
Li4gYWRkaXRpb25hbCBzZXQtdXAgd29yayAuLi4KKyAgICB9CisgICAgdmlydHVhbCB2b2lkIFRl
YXJEb3duKCkgeworICAgICAgLi4uIGNsZWFuLXVwIHdvcmsgZm9yIEZvb1Rlc3QgLi4uCisgICAg
ICBCYXNlVGVzdDo6VGVhckRvd24oKTsgIC8vIFJlbWVtYmVyIHRvIHRlYXIgZG93biB0aGUgYmFz
ZSBmaXh0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFmdGVyIGNsZWFuaW5n
IHVwIEZvb1Rlc3QhCisgICAgfQorICAgIC4uLiBmdW5jdGlvbnMgYW5kIHZhcmlhYmxlcyBmb3Ig
Rm9vVGVzdCAuLi4KK307CisKKy8vIFRlc3RzIHRoYXQgdXNlIHRoZSBmaXh0dXJlIEZvb1Rlc3Qu
CitURVNUX0YoRm9vVGVzdCwgQmFyKSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgQmF6KSB7IC4u
LiB9CisKKy4uLiBhZGRpdGlvbmFsIGZpeHR1cmVzIGRlcml2ZWQgZnJvbSBCYXNlVGVzdCAuLi4K
K2BgYAorCitJZiBuZWNlc3NhcnksIHlvdSBjYW4gY29udGludWUgdG8gZGVyaXZlIHRlc3QgZml4
dHVyZXMgZnJvbSBhIGRlcml2ZWQgZml4dHVyZS4KK0dvb2dsZSBUZXN0IGhhcyBubyBsaW1pdCBv
biBob3cgZGVlcCB0aGUgaGllcmFyY2h5IGNhbiBiZS4KKworRm9yIGEgY29tcGxldGUgZXhhbXBs
ZSB1c2luZyBkZXJpdmVkIHRlc3QgZml4dHVyZXMsIHNlZQorYHNhbXBsZXMvc2FtcGxlNV91bml0
dGVzdC5jY2AuCisKKyMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyAidm9pZCB2YWx1ZSBub3QgaWdu
b3JlZCBhcyBpdCBvdWdodCB0byBiZS4iIFdoYXQgZG9lcyB0aGlzIG1lYW4/ICMjCisKK1lvdSdy
ZSBwcm9iYWJseSB1c2luZyBhbiBgQVNTRVJUXyooKWAgaW4gYSBmdW5jdGlvbiB0aGF0IGRvZXNu
J3QgcmV0dXJuIGB2b2lkYC4KK2BBU1NFUlRfKigpYCBjYW4gb25seSBiZSB1c2VkIGluIGB2b2lk
YCBmdW5jdGlvbnMuCisKKyMjIE15IGRlYXRoIHRlc3QgaGFuZ3MgKG9yIHNlZy1mYXVsdHMpLiBI
b3cgZG8gSSBmaXggaXQ/ICMjCisKK0luIEdvb2dsZSBUZXN0LCBkZWF0aCB0ZXN0cyBhcmUgcnVu
IGluIGEgY2hpbGQgcHJvY2VzcyBhbmQgdGhlIHdheSB0aGV5IHdvcmsgaXMKK2RlbGljYXRlLiBU
byB3cml0ZSBkZWF0aCB0ZXN0cyB5b3UgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhl
eSB3b3JrLgorUGxlYXNlIG1ha2Ugc3VyZSB5b3UgaGF2ZSByZWFkIHRoaXMuCisKK0luIHBhcnRp
Y3VsYXIsIGRlYXRoIHRlc3RzIGRvbid0IGxpa2UgaGF2aW5nIG11bHRpcGxlIHRocmVhZHMgaW4g
dGhlIHBhcmVudAorcHJvY2Vzcy4gU28gdGhlIGZpcnN0IHRoaW5nIHlvdSBjYW4gdHJ5IGlzIHRv
IGVsaW1pbmF0ZSBjcmVhdGluZyB0aHJlYWRzCitvdXRzaWRlIG9mIGBFWFBFQ1RfREVBVEgoKWAu
CisKK1NvbWV0aW1lcyB0aGlzIGlzIGltcG9zc2libGUgYXMgc29tZSBsaWJyYXJ5IHlvdSBtdXN0
IHVzZSBtYXkgYmUgY3JlYXRpbmcKK3RocmVhZHMgYmVmb3JlIGBtYWluKClgIGlzIGV2ZW4gcmVh
Y2hlZC4gSW4gdGhpcyBjYXNlLCB5b3UgY2FuIHRyeSB0byBtaW5pbWl6ZQordGhlIGNoYW5jZSBv
ZiBjb25mbGljdHMgYnkgZWl0aGVyIG1vdmluZyBhcyBtYW55IGFjdGl2aXRpZXMgYXMgcG9zc2li
bGUgaW5zaWRlCitgRVhQRUNUX0RFQVRIKClgIChpbiB0aGUgZXh0cmVtZSBjYXNlLCB5b3Ugd2Fu
dCB0byBtb3ZlIGV2ZXJ5dGhpbmcgaW5zaWRlKSwgb3IKK2xlYXZpbmcgYXMgZmV3IHRoaW5ncyBh
cyBwb3NzaWJsZSBpbiBpdC4gQWxzbywgeW91IGNhbiB0cnkgdG8gc2V0IHRoZSBkZWF0aAordGVz
dCBzdHlsZSB0byBgInRocmVhZHNhZmUiYCwgd2hpY2ggaXMgc2FmZXIgYnV0IHNsb3dlciwgYW5k
IHNlZSBpZiBpdCBoZWxwcy4KKworSWYgeW91IGdvIHdpdGggdGhyZWFkLXNhZmUgZGVhdGggdGVz
dHMsIHJlbWVtYmVyIHRoYXQgdGhleSByZXJ1biB0aGUgdGVzdAorcHJvZ3JhbSBmcm9tIHRoZSBi
ZWdpbm5pbmcgaW4gdGhlIGNoaWxkIHByb2Nlc3MuIFRoZXJlZm9yZSBtYWtlIHN1cmUgeW91cgor
cHJvZ3JhbSBjYW4gcnVuIHNpZGUtYnktc2lkZSB3aXRoIGl0c2VsZiBhbmQgaXMgZGV0ZXJtaW5p
c3RpYy4KKworSW4gdGhlIGVuZCwgdGhpcyBib2lscyBkb3duIHRvIGdvb2QgY29uY3VycmVudCBw
cm9ncmFtbWluZy4gWW91IGhhdmUgdG8gbWFrZQorc3VyZSB0aGF0IHRoZXJlIGlzIG5vIHJhY2Ug
Y29uZGl0aW9ucyBvciBkZWFkIGxvY2tzIGluIHlvdXIgcHJvZ3JhbS4gTm8gc2lsdmVyCitidWxs
ZXQgLSBzb3JyeSEKKworIyMgU2hvdWxkIEkgdXNlIHRoZSBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9y
IG9mIHRoZSB0ZXN0IGZpeHR1cmUgb3IgdGhlIHNldC11cC90ZWFyLWRvd24gZnVuY3Rpb24/ICMj
CisKK1RoZSBmaXJzdCB0aGluZyB0byByZW1lbWJlciBpcyB0aGF0IEdvb2dsZSBUZXN0IGRvZXMg
bm90IHJldXNlIHRoZQorc2FtZSB0ZXN0IGZpeHR1cmUgb2JqZWN0IGFjcm9zcyBtdWx0aXBsZSB0
ZXN0cy4gRm9yIGVhY2ggYFRFU1RfRmAsCitHb29nbGUgVGVzdCB3aWxsIGNyZWF0ZSBhIGZyZXNo
IHRlc3QgZml4dHVyZSBvYmplY3QsIF9pbW1lZGlhdGVseV8KK2NhbGwgYFNldFVwKClgLCBydW4g
dGhlIHRlc3QsIGNhbGwgYFRlYXJEb3duKClgLCBhbmQgdGhlbgorX2ltbWVkaWF0ZWx5XyBkZWxl
dGUgdGhlIHRlc3QgZml4dHVyZSBvYmplY3QuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8KK25lZWQg
dG8gd3JpdGUgYSBgU2V0VXAoKWAgb3IgYFRlYXJEb3duKClgIGZ1bmN0aW9uIGlmIHRoZSBjb25z
dHJ1Y3Rvcgorb3IgZGVzdHJ1Y3RvciBhbHJlYWR5IGRvZXMgdGhlIGpvYi4KKworWW91IG1heSBz
dGlsbCB3YW50IHRvIHVzZSBgU2V0VXAoKS9UZWFyRG93bigpYCBpbiB0aGUgZm9sbG93aW5nIGNh
c2VzOgorICAqIElmIHRoZSB0ZWFyLWRvd24gb3BlcmF0aW9uIGNvdWxkIHRocm93IGFuIGV4Y2Vw
dGlvbiwgeW91IG11c3QgdXNlIGBUZWFyRG93bigpYCBhcyBvcHBvc2VkIHRvIHRoZSBkZXN0cnVj
dG9yLCBhcyB0aHJvd2luZyBpbiBhIGRlc3RydWN0b3IgbGVhZHMgdG8gdW5kZWZpbmVkIGJlaGF2
aW9yIGFuZCB1c3VhbGx5IHdpbGwga2lsbCB5b3VyIHByb2dyYW0gcmlnaHQgYXdheS4gTm90ZSB0
aGF0IG1hbnkgc3RhbmRhcmQgbGlicmFyaWVzIChsaWtlIFNUTCkgbWF5IHRocm93IHdoZW4gZXhj
ZXB0aW9ucyBhcmUgZW5hYmxlZCBpbiB0aGUgY29tcGlsZXIuIFRoZXJlZm9yZSB5b3Ugc2hvdWxk
IHByZWZlciBgVGVhckRvd24oKWAgaWYgeW91IHdhbnQgdG8gd3JpdGUgcG9ydGFibGUgdGVzdHMg
dGhhdCB3b3JrIHdpdGggb3Igd2l0aG91dCBleGNlcHRpb25zLgorICAqIFRoZSBHb29nbGUgVGVz
dCB0ZWFtIGlzIGNvbnNpZGVyaW5nIG1ha2luZyB0aGUgYXNzZXJ0aW9uIG1hY3JvcyB0aHJvdyBv
biBwbGF0Zm9ybXMgd2hlcmUgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCAoZS5nLiBXaW5kb3dzLCBN
YWMgT1MsIGFuZCBMaW51eCBjbGllbnQtc2lkZSksIHdoaWNoIHdpbGwgZWxpbWluYXRlIHRoZSBu
ZWVkIGZvciB0aGUgdXNlciB0byBwcm9wYWdhdGUgZmFpbHVyZXMgZnJvbSBhIHN1YnJvdXRpbmUg
dG8gaXRzIGNhbGxlci4gVGhlcmVmb3JlLCB5b3Ugc2hvdWxkbid0IHVzZSBHb29nbGUgVGVzdCBh
c3NlcnRpb25zIGluIGEgZGVzdHJ1Y3RvciBpZiB5b3VyIGNvZGUgY291bGQgcnVuIG9uIHN1Y2gg
YSBwbGF0Zm9ybS4KKyAgKiBJbiBhIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IsIHlvdSBjYW5u
b3QgbWFrZSBhIHZpcnR1YWwgZnVuY3Rpb24gY2FsbCBvbiB0aGlzIG9iamVjdC4gKFlvdSBjYW4g
Y2FsbCBhIG1ldGhvZCBkZWNsYXJlZCBhcyB2aXJ0dWFsLCBidXQgaXQgd2lsbCBiZSBzdGF0aWNh
bGx5IGJvdW5kLikgVGhlcmVmb3JlLCBpZiB5b3UgbmVlZCB0byBjYWxsIGEgbWV0aG9kIHRoYXQg
d2lsbCBiZSBvdmVycmlkZW4gaW4gYSBkZXJpdmVkIGNsYXNzLCB5b3UgaGF2ZSB0byB1c2UgYFNl
dFVwKCkvVGVhckRvd24oKWAuCisKKyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgIm5vIG1hdGNo
aW5nIGZ1bmN0aW9uIHRvIGNhbGwiIHdoZW4gSSB1c2UgQVNTRVJUXF9QUkVEbi4gSG93IGRvIEkg
Zml4IGl0PyAjIworCitJZiB0aGUgcHJlZGljYXRlIGZ1bmN0aW9uIHlvdSB1c2UgaW4gYEFTU0VS
VF9QUkVEKmAgb3IgYEVYUEVDVF9QUkVEKmAgaXMKK292ZXJsb2FkZWQgb3IgYSB0ZW1wbGF0ZSwg
dGhlIGNvbXBpbGVyIHdpbGwgaGF2ZSB0cm91YmxlIGZpZ3VyaW5nIG91dCB3aGljaAorb3Zlcmxv
YWRlZCB2ZXJzaW9uIGl0IHNob3VsZCB1c2UuIGBBU1NFUlRfUFJFRF9GT1JNQVQqYCBhbmQKK2BF
WFBFQ1RfUFJFRF9GT1JNQVQqYCBkb24ndCBoYXZlIHRoaXMgcHJvYmxlbS4KKworSWYgeW91IHNl
ZSB0aGlzIGVycm9yLCB5b3UgbWlnaHQgd2FudCB0byBzd2l0Y2ggdG8KK2AoQVNTRVJUfEVYUEVD
VClfUFJFRF9GT1JNQVQqYCwgd2hpY2ggd2lsbCBhbHNvIGdpdmUgeW91IGEgYmV0dGVyIGZhaWx1
cmUKK21lc3NhZ2UuIElmLCBob3dldmVyLCB0aGF0IGlzIG5vdCBhbiBvcHRpb24sIHlvdSBjYW4g
cmVzb2x2ZSB0aGUgcHJvYmxlbSBieQorZXhwbGljaXRseSB0ZWxsaW5nIHRoZSBjb21waWxlciB3
aGljaCB2ZXJzaW9uIHRvIHBpY2suCisKK0ZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYXZlCisK
K2BgYAorYm9vbCBJc1Bvc2l0aXZlKGludCBuKSB7CisgIHJldHVybiBuID4gMDsKK30KK2Jvb2wg
SXNQb3NpdGl2ZShkb3VibGUgeCkgeworICByZXR1cm4geCA+IDA7Cit9CitgYGAKKworeW91IHdp
bGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IgaWYgeW91IHdyaXRlCisKK2BgYAorRVhQRUNUX1BSRUQx
KElzUG9zaXRpdmUsIDUpOworYGBgCisKK0hvd2V2ZXIsIHRoaXMgd2lsbCB3b3JrOgorCitgYGAK
K0VYUEVDVF9QUkVEMSgqc3RhdGljX2Nhc3Q8Ym9vbCAoKikoaW50KT4qKElzUG9zaXRpdmUpLCA1
KTsKK2BgYAorCisoVGhlIHN0dWZmIGluc2lkZSB0aGUgYW5nbGVkIGJyYWNrZXRzIGZvciB0aGUg
YHN0YXRpY19jYXN0YCBvcGVyYXRvciBpcyB0aGUKK3R5cGUgb2YgdGhlIGZ1bmN0aW9uIHBvaW50
ZXIgZm9yIHRoZSBgaW50YC12ZXJzaW9uIG9mIGBJc1Bvc2l0aXZlKClgLikKKworQXMgYW5vdGhl
ciBleGFtcGxlLCB3aGVuIHlvdSBoYXZlIGEgdGVtcGxhdGUgZnVuY3Rpb24KKworYGBgCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK2Jvb2wgSXNOZWdhdGl2ZShUIHgpIHsKKyAgcmV0dXJuIHggPCAw
OworfQorYGBgCisKK3lvdSBjYW4gdXNlIGl0IGluIGEgcHJlZGljYXRlIGFzc2VydGlvbiBsaWtl
IHRoaXM6CisKK2BgYAorQVNTRVJUX1BSRUQxKElzTmVnYXRpdmUqPGludD4qLCAtNSk7CitgYGAK
KworVGhpbmdzIGFyZSBtb3JlIGludGVyZXN0aW5nIGlmIHlvdXIgdGVtcGxhdGUgaGFzIG1vcmUg
dGhhbiBvbmUgcGFyYW1ldGVycy4gVGhlCitmb2xsb3dpbmcgd29uJ3QgY29tcGlsZToKKworYGBg
CitBU1NFUlRfUFJFRDIoKkdyZWF0ZXJUaGFuPGludCwgaW50PiosIDUsIDApOworYGBgCisKKwor
YXMgdGhlIEMrKyBwcmUtcHJvY2Vzc29yIHRoaW5rcyB5b3UgYXJlIGdpdmluZyBgQVNTRVJUX1BS
RUQyYCA0IGFyZ3VtZW50cywKK3doaWNoIGlzIG9uZSBtb3JlIHRoYW4gZXhwZWN0ZWQuIFRoZSB3
b3JrYXJvdW5kIGlzIHRvIHdyYXAgdGhlIHByZWRpY2F0ZQorZnVuY3Rpb24gaW4gcGFyZW50aGVz
ZXM6CisKK2BgYAorQVNTRVJUX1BSRUQyKCooR3JlYXRlclRoYW48aW50LCBpbnQ+KSosIDUsIDAp
OworYGBgCisKKworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJpZ25vcmluZyByZXR1
cm4gdmFsdWUiIHdoZW4gSSBjYWxsIFJVTlxfQUxMXF9URVNUUygpLiBXaHk/ICMjCisKK1NvbWUg
cGVvcGxlIGhhZCBiZWVuIGlnbm9yaW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgYFJVTl9BTExfVEVT
VFMoKWAuIFRoYXQgaXMsCitpbnN0ZWFkIG9mCisKK2BgYAorcmV0dXJuIFJVTl9BTExfVEVTVFMo
KTsKK2BgYAorCit0aGV5IHdyaXRlCisKK2BgYAorUlVOX0FMTF9URVNUUygpOworYGBgCisKK1Ro
aXMgaXMgd3JvbmcgYW5kIGRhbmdlcm91cy4gQSB0ZXN0IHJ1bm5lciBuZWVkcyB0byBzZWUgdGhl
IHJldHVybiB2YWx1ZSBvZgorYFJVTl9BTExfVEVTVFMoKWAgaW4gb3JkZXIgdG8gZGV0ZXJtaW5l
IGlmIGEgdGVzdCBoYXMgcGFzc2VkLiBJZiB5b3VyIGBtYWluKClgCitmdW5jdGlvbiBpZ25vcmVz
IGl0LCB5b3VyIHRlc3Qgd2lsbCBiZSBjb25zaWRlcmVkIHN1Y2Nlc3NmdWwgZXZlbiBpZiBpdCBo
YXMgYQorR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIGZhaWx1cmUuIFZlcnkgYmFkLgorCitUbyBoZWxw
IHRoZSB1c2VycyBhdm9pZCB0aGlzIGRhbmdlcm91cyBidWcsIHRoZSBpbXBsZW1lbnRhdGlvbiBv
ZgorYFJVTl9BTExfVEVTVFMoKWAgY2F1c2VzIGdjYyB0byByYWlzZSB0aGlzIHdhcm5pbmcsIHdo
ZW4gdGhlIHJldHVybiB2YWx1ZSBpcworaWdub3JlZC4gSWYgeW91IHNlZSB0aGlzIHdhcm5pbmcs
IHRoZSBmaXggaXMgc2ltcGxlOiBqdXN0IG1ha2Ugc3VyZSBpdHMgdmFsdWUKK2lzIHVzZWQgYXMg
dGhlIHJldHVybiB2YWx1ZSBvZiBgbWFpbigpYC4KKworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5z
IHRoYXQgYSBjb25zdHJ1Y3RvciAob3IgZGVzdHJ1Y3RvcikgY2Fubm90IHJldHVybiBhIHZhbHVl
LiBXaGF0J3MgZ29pbmcgb24/ICMjCisKK0R1ZSB0byBhIHBlY3VsaWFyaXR5IG9mIEMrKywgaW4g
b3JkZXIgdG8gc3VwcG9ydCB0aGUgc3ludGF4IGZvciBzdHJlYW1pbmcKK21lc3NhZ2VzIHRvIGFu
IGBBU1NFUlRfKmAsIGUuZy4KKworYGBgCitBU1NFUlRfRVEoMSwgRm9vKCkpIDw8ICJibGFoIGJs
YWgiIDw8IGZvbzsKK2BgYAorCit3ZSBoYWQgdG8gZ2l2ZSB1cCB1c2luZyBgQVNTRVJUKmAgYW5k
IGBGQUlMKmAgKGJ1dCBub3QgYEVYUEVDVCpgIGFuZAorYEFERF9GQUlMVVJFKmApIGluIGNvbnN0
cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIG1vdmUgdGhlCitj
b250ZW50IG9mIHlvdXIgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciB0byBhIHByaXZhdGUgdm9pZCBt
ZW1iZXIgZnVuY3Rpb24sIG9yCitzd2l0Y2ggdG8gYEVYUEVDVF8qKClgIGlmIHRoYXQgd29ya3Mu
IFRoaXMgc2VjdGlvbiBpbiB0aGUgdXNlcidzIGd1aWRlIGV4cGxhaW5zCitpdC4KKworIyMgTXkg
c2V0LXVwIGZ1bmN0aW9uIGlzIG5vdCBjYWxsZWQuIFdoeT8gIyMKKworQysrIGlzIGNhc2Utc2Vu
c2l0aXZlLiBJdCBzaG91bGQgYmUgc3BlbGxlZCBhcyBgU2V0VXAoKWAuICBEaWQgeW91CitzcGVs
bCBpdCBhcyBgU2V0dXAoKWA/CisKK1NpbWlsYXJseSwgc29tZXRpbWVzIHBlb3BsZSBzcGVsbCBg
U2V0VXBUZXN0Q2FzZSgpYCBhcyBgU2V0dXBUZXN0Q2FzZSgpYCBhbmQKK3dvbmRlciB3aHkgaXQn
cyBuZXZlciBjYWxsZWQuCisKKyMjIEhvdyBkbyBJIGp1bXAgdG8gdGhlIGxpbmUgb2YgYSBmYWls
dXJlIGluIEVtYWNzIGRpcmVjdGx5PyAjIworCitHb29nbGUgVGVzdCdzIGZhaWx1cmUgbWVzc2Fn
ZSBmb3JtYXQgaXMgdW5kZXJzdG9vZCBieSBFbWFjcyBhbmQgbWFueSBvdGhlcgorSURFcywgbGlr
ZSBhY21lIGFuZCBYQ29kZS4gSWYgYSBHb29nbGUgVGVzdCBtZXNzYWdlIGlzIGluIGEgY29tcGls
YXRpb24gYnVmZmVyCitpbiBFbWFjcywgdGhlbiBpdCdzIGNsaWNrYWJsZS4gWW91IGNhbiBub3cg
aGl0IGBlbnRlcmAgb24gYSBtZXNzYWdlIHRvIGp1bXAgdG8KK3RoZSBjb3JyZXNwb25kaW5nIHNv
dXJjZSBjb2RlLCBvciB1c2UgYEMteCBgYCB0byBqdW1wIHRvIHRoZSBuZXh0IGZhaWx1cmUuCisK
KyMjIEkgaGF2ZSBzZXZlcmFsIHRlc3QgY2FzZXMgd2hpY2ggc2hhcmUgdGhlIHNhbWUgdGVzdCBm
aXh0dXJlIGxvZ2ljLCBkbyBJIGhhdmUgdG8gZGVmaW5lIGEgbmV3IHRlc3QgZml4dHVyZSBjbGFz
cyBmb3IgZWFjaCBvZiB0aGVtPyBUaGlzIHNlZW1zIHByZXR0eSB0ZWRpb3VzLiAjIworCitZb3Ug
ZG9uJ3QgaGF2ZSB0by4gSW5zdGVhZCBvZgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMg
QmFzZVRlc3Qge307CisKK1RFU1RfRihGb29UZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihGb29U
ZXN0LCBEZWYpIHsgLi4uIH0KKworY2xhc3MgQmFyVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCB7fTsK
KworVEVTVF9GKEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIERlZikgeyAu
Li4gfQorYGBgCisKK3lvdSBjYW4gc2ltcGx5IGB0eXBlZGVmYCB0aGUgdGVzdCBmaXh0dXJlczoK
K2BgYAordHlwZWRlZiBCYXNlVGVzdCBGb29UZXN0OworCitURVNUX0YoRm9vVGVzdCwgQWJjKSB7
IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9CisKK3R5cGVkZWYgQmFzZVRlc3Qg
QmFyVGVzdDsKKworVEVTVF9GKEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRlc3Qs
IERlZikgeyAuLi4gfQorYGBgCisKKyMjIFRoZSBHb29nbGUgVGVzdCBvdXRwdXQgaXMgYnVyaWVk
IGluIGEgd2hvbGUgYnVuY2ggb2YgbG9nIG1lc3NhZ2VzLiBXaGF0IGRvIEkgZG8/ICMjCisKK1Ro
ZSBHb29nbGUgVGVzdCBvdXRwdXQgaXMgbWVhbnQgdG8gYmUgYSBjb25jaXNlIGFuZCBodW1hbi1m
cmllbmRseSByZXBvcnQuIElmCit5b3VyIHRlc3QgZ2VuZXJhdGVzIHRleHR1YWwgb3V0cHV0IGl0
c2VsZiwgaXQgd2lsbCBtaXggd2l0aCB0aGUgR29vZ2xlIFRlc3QKK291dHB1dCwgbWFraW5nIGl0
IGhhcmQgdG8gcmVhZC4gSG93ZXZlciwgdGhlcmUgaXMgYW4gZWFzeSBzb2x1dGlvbiB0byB0aGlz
Citwcm9ibGVtLgorCitTaW5jZSBtb3N0IGxvZyBtZXNzYWdlcyBnbyB0byBzdGRlcnIsIHdlIGRl
Y2lkZWQgdG8gbGV0IEdvb2dsZSBUZXN0IG91dHB1dCBnbwordG8gc3Rkb3V0LiBUaGlzIHdheSwg
eW91IGNhbiBlYXNpbHkgc2VwYXJhdGUgdGhlIHR3byB1c2luZyByZWRpcmVjdGlvbi4gRm9yCitl
eGFtcGxlOgorYGBgCisuL215X3Rlc3QgPiBnb29nbGV0ZXN0X291dHB1dC50eHQKK2BgYAorCisj
IyBXaHkgc2hvdWxkIEkgcHJlZmVyIHRlc3QgZml4dHVyZXMgb3ZlciBnbG9iYWwgdmFyaWFibGVz
PyAjIworCitUaGVyZSBhcmUgc2V2ZXJhbCBnb29kIHJlYXNvbnM6CisgIDEuIEl0J3MgbGlrZWx5
IHlvdXIgdGVzdCBuZWVkcyB0byBjaGFuZ2UgdGhlIHN0YXRlcyBvZiBpdHMgZ2xvYmFsIHZhcmlh
Ymxlcy4gVGhpcyBtYWtlcyBpdCBkaWZmaWN1bHQgdG8ga2VlcCBzaWRlIGVmZmVjdHMgZnJvbSBl
c2NhcGluZyBvbmUgdGVzdCBhbmQgY29udGFtaW5hdGluZyBvdGhlcnMsIG1ha2luZyBkZWJ1Z2dp
bmcgZGlmZmljdWx0LiBCeSB1c2luZyBmaXh0dXJlcywgZWFjaCB0ZXN0IGhhcyBhIGZyZXNoIHNl
dCBvZiB2YXJpYWJsZXMgdGhhdCdzIGRpZmZlcmVudCAoYnV0IHdpdGggdGhlIHNhbWUgbmFtZXMp
LiBUaHVzLCB0ZXN0cyBhcmUga2VwdCBpbmRlcGVuZGVudCBvZiBlYWNoIG90aGVyLgorICAxLiBH
bG9iYWwgdmFyaWFibGVzIHBvbGx1dGUgdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisgIDEuIFRlc3Qg
Zml4dHVyZXMgY2FuIGJlIHJldXNlZCB2aWEgc3ViY2xhc3NpbmcsIHdoaWNoIGNhbm5vdCBiZSBk
b25lIGVhc2lseSB3aXRoIGdsb2JhbCB2YXJpYWJsZXMuIFRoaXMgaXMgdXNlZnVsIGlmIG1hbnkg
dGVzdCBjYXNlcyBoYXZlIHNvbWV0aGluZyBpbiBjb21tb24uCisKKyMjIEhvdyBkbyBJIHRlc3Qg
cHJpdmF0ZSBjbGFzcyBtZW1iZXJzIHdpdGhvdXQgd3JpdGluZyBGUklFTkRcX1RFU1QoKXM/ICMj
CisKK1lvdSBzaG91bGQgdHJ5IHRvIHdyaXRlIHRlc3RhYmxlIGNvZGUsIHdoaWNoIG1lYW5zIGNs
YXNzZXMgc2hvdWxkIGJlIGVhc2lseQordGVzdGVkIGZyb20gdGhlaXIgcHVibGljIGludGVyZmFj
ZS4gT25lIHdheSB0byBhY2hpZXZlIHRoaXMgaXMgdGhlIFBpbXBsIGlkaW9tOgoreW91IG1vdmUg
YWxsIHByaXZhdGUgbWVtYmVycyBvZiBhIGNsYXNzIGludG8gYSBoZWxwZXIgY2xhc3MsIGFuZCBt
YWtlIGFsbAorbWVtYmVycyBvZiB0aGUgaGVscGVyIGNsYXNzIHB1YmxpYy4KKworWW91IGhhdmUg
c2V2ZXJhbCBvdGhlciBvcHRpb25zIHRoYXQgZG9uJ3QgcmVxdWlyZSB1c2luZyBgRlJJRU5EX1RF
U1RgOgorICAqIFdyaXRlIHRoZSB0ZXN0cyBhcyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlIGNsYXNz
OgorYGBgCitjbGFzcyBGb28geworICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKKyAgLi4uCit9Owor
CitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgor
ICAuLi4KKyAgdm9pZCBUZXN0MSgpIHsuLi59IC8vIFRoaXMgYWNjZXNzZXMgcHJpdmF0ZSBtZW1i
ZXJzIG9mIGNsYXNzIEZvby4KKyAgdm9pZCBUZXN0MigpIHsuLi59IC8vIFNvIGRvZXMgdGhpcyBv
bmUuCit9OworCitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgVGVzdDEoKTsKK30KKworVEVT
VF9GKEZvb1Rlc3QsIFRlc3QyKSB7CisgIFRlc3QyKCk7Cit9CitgYGAKKyAgKiBJbiB0aGUgZml4
dHVyZSBjbGFzcywgd3JpdGUgYWNjZXNzb3JzIGZvciB0aGUgdGVzdGVkIGNsYXNzJyBwcml2YXRl
IG1lbWJlcnMsIHRoZW4gdXNlIHRoZSBhY2Nlc3NvcnMgaW4geW91ciB0ZXN0czoKK2BgYAorY2xh
c3MgRm9vIHsKKyAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7CisgIC4uLgorfTsKKworY2xhc3MgRm9v
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLi4uCisgIFQx
IGdldF9wcml2YXRlX21lbWJlcjEoRm9vKiBvYmopIHsKKyAgICByZXR1cm4gb2JqLT5wcml2YXRl
X21lbWJlcjFfOworICB9Cit9OworCitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgLi4uCisg
IGdldF9wcml2YXRlX21lbWJlcjEoeCkKKyAgLi4uCit9CitgYGAKKyAgKiBJZiB0aGUgbWV0aG9k
cyBhcmUgZGVjbGFyZWQgKipwcm90ZWN0ZWQqKiwgeW91IGNhbiBjaGFuZ2UgdGhlaXIgYWNjZXNz
IGxldmVsIGluIGEgdGVzdC1vbmx5IHN1YmNsYXNzOgorYGBgCitjbGFzcyBZb3VyQ2xhc3Mgewor
ICAuLi4KKyBwcm90ZWN0ZWQ6IC8vIHByb3RlY3RlZCBhY2Nlc3MgZm9yIHRlc3RhYmlsaXR5Lgor
ICBpbnQgRG9Tb21ldGhpbmdSZXR1cm5pbmdJbnQoKTsKKyAgLi4uCit9OworCisvLyBpbiB0aGUg
eW91cl9jbGFzc190ZXN0LmNjIGZpbGU6CitjbGFzcyBUZXN0YWJsZVlvdXJDbGFzcyA6IHB1Ymxp
YyBZb3VyQ2xhc3MgeworICAuLi4KKyBwdWJsaWM6IHVzaW5nIFlvdXJDbGFzczo6RG9Tb21ldGhp
bmdSZXR1cm5pbmdJbnQ7IC8vIGNoYW5nZXMgYWNjZXNzIHJpZ2h0cworICAuLi4KK307CisKK1RF
U1RfRihZb3VyQ2xhc3NUZXN0LCBEb1NvbWV0aGluZ1Rlc3QpIHsKKyAgVGVzdGFibGVZb3VyQ2xh
c3Mgb2JqOworICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWRfdmFsdWUsIG9iai5Eb1NvbWV0aGluZ1Jl
dHVybmluZ0ludCgpKTsKK30KK2BgYAorCisjIyBIb3cgZG8gSSB0ZXN0IHByaXZhdGUgY2xhc3Mg
c3RhdGljIG1lbWJlcnMgd2l0aG91dCB3cml0aW5nIEZSSUVORFxfVEVTVCgpcz8gIyMKKworV2Ug
ZmluZCBwcml2YXRlIHN0YXRpYyBtZXRob2RzIGNsdXR0ZXIgdGhlIGhlYWRlciBmaWxlLiAgVGhl
eSBhcmUKK2ltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIGlkZWFsbHkgc2hvdWxkIGJlIGtlcHQg
b3V0IG9mIGEgLmguIFNvIG9mdGVuIEkgbWFrZQordGhlbSBmcmVlIGZ1bmN0aW9ucyBpbnN0ZWFk
LgorCitJbnN0ZWFkIG9mOgorYGBgCisvLyBmb28uaAorY2xhc3MgRm9vIHsKKyAgLi4uCisgcHJp
dmF0ZToKKyAgc3RhdGljIGJvb2wgRnVuYyhpbnQgbik7Cit9OworCisvLyBmb28uY2MKK2Jvb2wg
Rm9vOjpGdW5jKGludCBuKSB7IC4uLiB9CisKKy8vIGZvb190ZXN0LmNjCitFWFBFQ1RfVFJVRShG
b286OkZ1bmMoMTIzNDUpKTsKK2BgYAorCitZb3UgcHJvYmFibHkgc2hvdWxkIGJldHRlciB3cml0
ZToKK2BgYAorLy8gZm9vLmgKK2NsYXNzIEZvbyB7CisgIC4uLgorfTsKKworLy8gZm9vLmNjCitu
YW1lc3BhY2UgaW50ZXJuYWwgeworICBib29sIEZ1bmMoaW50IG4pIHsgLi4uIH0KK30KKworLy8g
Zm9vX3Rlc3QuY2MKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisgIGJvb2wgRnVuYyhpbnQgbik7Cit9
CisKK0VYUEVDVF9UUlVFKGludGVybmFsOjpGdW5jKDEyMzQ1KSk7CitgYGAKKworIyMgSSB3b3Vs
ZCBsaWtlIHRvIHJ1biBhIHRlc3Qgc2V2ZXJhbCB0aW1lcyB3aXRoIGRpZmZlcmVudCBwYXJhbWV0
ZXJzLiBEbyBJIG5lZWQgdG8gd3JpdGUgc2V2ZXJhbCBzaW1pbGFyIGNvcGllcyBvZiBpdD8gIyMK
KworTm8uIFlvdSBjYW4gdXNlIGEgZmVhdHVyZSBjYWxsZWQgW3ZhbHVlLXBhcmFtZXRlcml6ZWQg
dGVzdHNdKFYxXzVfQWR2YW5jZWRHdWlkZS5tZCNWYWx1ZV9QYXJhbWV0ZXJpemVkX1Rlc3RzKSB3
aGljaAorbGV0cyB5b3UgcmVwZWF0IHlvdXIgdGVzdHMgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVy
cywgd2l0aG91dCBkZWZpbmluZyBpdCBtb3JlIHRoYW4gb25jZS4KKworIyMgSG93IGRvIEkgdGVz
dCBhIGZpbGUgdGhhdCBkZWZpbmVzIG1haW4oKT8gIyMKKworVG8gdGVzdCBhIGBmb28uY2NgIGZp
bGUsIHlvdSBuZWVkIHRvIGNvbXBpbGUgYW5kIGxpbmsgaXQgaW50byB5b3VyIHVuaXQgdGVzdAor
cHJvZ3JhbS4gSG93ZXZlciwgd2hlbiB0aGUgZmlsZSBjb250YWlucyBhIGRlZmluaXRpb24gZm9y
IHRoZSBgbWFpbigpYAorZnVuY3Rpb24sIGl0IHdpbGwgY2xhc2ggd2l0aCB0aGUgYG1haW4oKWAg
b2YgeW91ciB1bml0IHRlc3QsIGFuZCB3aWxsIHJlc3VsdCBpbgorYSBidWlsZCBlcnJvci4KKwor
VGhlIHJpZ2h0IHNvbHV0aW9uIGlzIHRvIHNwbGl0IGl0IGludG8gdGhyZWUgZmlsZXM6CisgIDEu
IGBmb28uaGAgd2hpY2ggY29udGFpbnMgdGhlIGRlY2xhcmF0aW9ucywKKyAgMS4gYGZvby5jY2Ag
d2hpY2ggY29udGFpbnMgdGhlIGRlZmluaXRpb25zIGV4Y2VwdCBgbWFpbigpYCwgYW5kCisgIDEu
IGBmb29fbWFpbi5jY2Agd2hpY2ggY29udGFpbnMgbm90aGluZyBidXQgdGhlIGRlZmluaXRpb24g
b2YgYG1haW4oKWAuCisKK1RoZW4gYGZvby5jY2AgY2FuIGJlIGVhc2lseSB0ZXN0ZWQuCisKK0lm
IHlvdSBhcmUgYWRkaW5nIHRlc3RzIHRvIGFuIGV4aXN0aW5nIGZpbGUgYW5kIGRvbid0IHdhbnQg
YW4gaW50cnVzaXZlIGNoYW5nZQorbGlrZSB0aGlzLCB0aGVyZSBpcyBhIGhhY2s6IGp1c3QgaW5j
bHVkZSB0aGUgZW50aXJlIGBmb28uY2NgIGZpbGUgaW4geW91ciB1bml0Cit0ZXN0LiBGb3IgZXhh
bXBsZToKK2BgYAorLy8gRmlsZSBmb29fdW5pdHRlc3QuY2MKKworLy8gVGhlIGhlYWRlcnMgc2Vj
dGlvbgorLi4uCisKKy8vIFJlbmFtZXMgbWFpbigpIGluIGZvby5jYyB0byBtYWtlIHJvb20gZm9y
IHRoZSB1bml0IHRlc3QgbWFpbigpCisjZGVmaW5lIG1haW4gRm9vTWFpbgorCisjaW5jbHVkZSAi
YS9iL2Zvby5jYyIKKworLy8gVGhlIHRlc3RzIHN0YXJ0IGhlcmUuCisuLi4KK2BgYAorCisKK0hv
d2V2ZXIsIHBsZWFzZSByZW1lbWJlciB0aGlzIGlzIGEgaGFjayBhbmQgc2hvdWxkIG9ubHkgYmUg
dXNlZCBhcyB0aGUgbGFzdAorcmVzb3J0LgorCisjIyBXaGF0IGNhbiB0aGUgc3RhdGVtZW50IGFy
Z3VtZW50IGluIEFTU0VSVFxfREVBVEgoKSBiZT8gIyMKKworYEFTU0VSVF9ERUFUSChfc3RhdGVt
ZW50XywgX3JlZ2V4XylgIChvciBhbnkgZGVhdGggYXNzZXJ0aW9uIG1hY3JvKSBjYW4gYmUgdXNl
ZAord2hlcmV2ZXIgYF9zdGF0ZW1lbnRfYCBpcyB2YWxpZC4gU28gYmFzaWNhbGx5IGBfc3RhdGVt
ZW50X2AgY2FuIGJlIGFueSBDKysKK3N0YXRlbWVudCB0aGF0IG1ha2VzIHNlbnNlIGluIHRoZSBj
dXJyZW50IGNvbnRleHQuIEluIHBhcnRpY3VsYXIsIGl0IGNhbgorcmVmZXJlbmNlIGdsb2JhbCBh
bmQvb3IgbG9jYWwgdmFyaWFibGVzLCBhbmQgY2FuIGJlOgorICAqIGEgc2ltcGxlIGZ1bmN0aW9u
IGNhbGwgKG9mdGVuIHRoZSBjYXNlKSwKKyAgKiBhIGNvbXBsZXggZXhwcmVzc2lvbiwgb3IKKyAg
KiBhIGNvbXBvdW5kIHN0YXRlbWVudC4KKworPiBTb21lIGV4YW1wbGVzIGFyZSBzaG93biBoZXJl
OgorCitgYGAKKy8vIEEgZGVhdGggdGVzdCBjYW4gYmUgYSBzaW1wbGUgZnVuY3Rpb24gY2FsbC4K
K1RFU1QoTXlEZWF0aFRlc3QsIEZ1bmN0aW9uQ2FsbCkgeworICBBU1NFUlRfREVBVEgoWHl6KDUp
LCAiWHl6IGZhaWxlZCIpOworfQorCisvLyBPciBhIGNvbXBsZXggZXhwcmVzc2lvbiB0aGF0IHJl
ZmVyZW5jZXMgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMuCitURVNUKE15RGVhdGhUZXN0LCBDb21w
bGV4RXhwcmVzc2lvbikgeworICBjb25zdCBib29sIGMgPSBDb25kaXRpb24oKTsKKyAgQVNTRVJU
X0RFQVRIKChjID8gRnVuYzEoMCkgOiBvYmplY3QyLk1ldGhvZCgidGVzdCIpKSwKKyAgICAgICAg
ICAgICAgICIoRnVuYzF8TWV0aG9kKSBmYWlsZWQiKTsKK30KKworLy8gRGVhdGggYXNzZXJ0aW9u
cyBjYW4gYmUgdXNlZCBhbnkgd2hlcmUgaW4gYSBmdW5jdGlvbi4gSW4KKy8vIHBhcnRpY3VsYXIs
IHRoZXkgY2FuIGJlIGluc2lkZSBhIGxvb3AuCitURVNUKE15RGVhdGhUZXN0LCBJbnNpZGVMb29w
KSB7CisgIC8vIFZlcmlmaWVzIHRoYXQgRm9vKDApLCBGb28oMSksIC4uLiwgYW5kIEZvbyg0KSBh
bGwgZGllLgorICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgeworICAgIEVYUEVDVF9ERUFU
SF9NKEZvbyhpKSwgIkZvbyBoYXMgXFxkKyBlcnJvcnMiLAorICAgICAgICAgICAgICAgICAgIDo6
dGVzdGluZzo6TWVzc2FnZSgpIDw8ICJ3aGVyZSBpIGlzICIgPDwgaSk7CisgIH0KK30KKworLy8g
QSBkZWF0aCBhc3NlcnRpb24gY2FuIGNvbnRhaW4gYSBjb21wb3VuZCBzdGF0ZW1lbnQuCitURVNU
KE15RGVhdGhUZXN0LCBDb21wb3VuZFN0YXRlbWVudCkgeworICAvLyBWZXJpZmllcyB0aGF0IGF0
IGxlYXNlIG9uZSBvZiBCYXIoMCksIEJhcigxKSwgLi4uLCBhbmQKKyAgLy8gQmFyKDQpIGRpZXMu
CisgIEFTU0VSVF9ERUFUSCh7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAg
ICAgIEJhcihpKTsKKyAgICB9CisgIH0sCisgICJCYXIgaGFzIFxcZCsgZXJyb3JzIik7fQorYGBg
CisKK2Bnb29nbGV0ZXN0X3VuaXR0ZXN0LmNjYCBjb250YWlucyBtb3JlIGV4YW1wbGVzIGlmIHlv
dSBhcmUgaW50ZXJlc3RlZC4KKworIyMgV2hhdCBzeW50YXggZG9lcyB0aGUgcmVndWxhciBleHBy
ZXNzaW9uIGluIEFTU0VSVFxfREVBVEggdXNlPyAjIworCitPbiBQT1NJWCBzeXN0ZW1zLCBHb29n
bGUgVGVzdCB1c2VzIHRoZSBQT1NJWCBFeHRlbmRlZCByZWd1bGFyCitleHByZXNzaW9uIHN5bnRh
eAorKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVndWxhcl9leHByZXNzaW9uI1BPU0lY
X0V4dGVuZGVkX1JlZ3VsYXJfRXhwcmVzc2lvbnMpLiBPbgorV2luZG93cywgaXQgdXNlcyBhIGxp
bWl0ZWQgdmFyaWFudCBvZiByZWd1bGFyIGV4cHJlc3Npb24gc3ludGF4LiBGb3IKK21vcmUgZGV0
YWlscywgc2VlIHRoZSBbcmVndWxhciBleHByZXNzaW9uIHN5bnRheF0oVjFfNV9BZHZhbmNlZEd1
aWRlLm1kI1JlZ3VsYXJfRXhwcmVzc2lvbl9TeW50YXgpLgorCisjIyBJIGhhdmUgYSBmaXh0dXJl
IGNsYXNzIEZvbywgYnV0IFRFU1RcX0YoRm9vLCBCYXIpIGdpdmVzIG1lIGVycm9yICJubyBtYXRj
aGluZyBmdW5jdGlvbiBmb3IgY2FsbCB0byBGb286OkZvbygpIi4gV2h5PyAjIworCitHb29nbGUg
VGVzdCBuZWVkcyB0byBiZSBhYmxlIHRvIGNyZWF0ZSBvYmplY3RzIG9mIHlvdXIgdGVzdCBmaXh0
dXJlIGNsYXNzLCBzbworaXQgbXVzdCBoYXZlIGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4gTm9ybWFs
bHkgdGhlIGNvbXBpbGVyIHdpbGwgZGVmaW5lIG9uZSBmb3IKK3lvdS4gSG93ZXZlciwgdGhlcmUg
YXJlIGNhc2VzIHdoZXJlIHlvdSBoYXZlIHRvIGRlZmluZSB5b3VyIG93bjoKKyAgKiBJZiB5b3Ug
ZXhwbGljaXRseSBkZWNsYXJlIGEgbm9uLWRlZmF1bHQgY29uc3RydWN0b3IgZm9yIGNsYXNzIGBG
b29gLCB0aGVuIHlvdSBuZWVkIHRvIGRlZmluZSBhIGRlZmF1bHQgY29uc3RydWN0b3IsIGV2ZW4g
aWYgaXQgd291bGQgYmUgZW1wdHkuCisgICogSWYgYEZvb2AgaGFzIGEgY29uc3Qgbm9uLXN0YXRp
YyBkYXRhIG1lbWJlciwgdGhlbiB5b3UgaGF2ZSB0byBkZWZpbmUgdGhlIGRlZmF1bHQgY29uc3Ry
dWN0b3IgX2FuZF8gaW5pdGlhbGl6ZSB0aGUgY29uc3QgbWVtYmVyIGluIHRoZSBpbml0aWFsaXpl
ciBsaXN0IG9mIHRoZSBjb25zdHJ1Y3Rvci4gKEVhcmx5IHZlcnNpb25zIG9mIGBnY2NgIGRvZXNu
J3QgZm9yY2UgeW91IHRvIGluaXRpYWxpemUgdGhlIGNvbnN0IG1lbWJlci4gSXQncyBhIGJ1ZyB0
aGF0IGhhcyBiZWVuIGZpeGVkIGluIGBnY2MgNGAuKQorCisjIyBXaHkgZG9lcyBBU1NFUlRcX0RF
QVRIIGNvbXBsYWluIGFib3V0IHByZXZpb3VzIHRocmVhZHMgdGhhdCB3ZXJlIGFscmVhZHkgam9p
bmVkPyAjIworCitXaXRoIHRoZSBMaW51eCBwdGhyZWFkIGxpYnJhcnksIHRoZXJlIGlzIG5vIHR1
cm5pbmcgYmFjayBvbmNlIHlvdSBjcm9zcyB0aGUKK2xpbmUgZnJvbSBzaW5nbGUgdGhyZWFkIHRv
IG11bHRpcGxlIHRocmVhZHMuIFRoZSBmaXJzdCB0aW1lIHlvdSBjcmVhdGUgYQordGhyZWFkLCBh
IG1hbmFnZXIgdGhyZWFkIGlzIGNyZWF0ZWQgaW4gYWRkaXRpb24sIHNvIHlvdSBnZXQgMywgbm90
IDIsIHRocmVhZHMuCitMYXRlciB3aGVuIHRoZSB0aHJlYWQgeW91IGNyZWF0ZSBqb2lucyB0aGUg
bWFpbiB0aHJlYWQsIHRoZSB0aHJlYWQgY291bnQKK2RlY3JlbWVudHMgYnkgMSwgYnV0IHRoZSBt
YW5hZ2VyIHRocmVhZCB3aWxsIG5ldmVyIGJlIGtpbGxlZCwgc28geW91IHN0aWxsIGhhdmUKKzIg
dGhyZWFkcywgd2hpY2ggbWVhbnMgeW91IGNhbm5vdCBzYWZlbHkgcnVuIGEgZGVhdGggdGVzdC4K
KworVGhlIG5ldyBOUFRMIHRocmVhZCBsaWJyYXJ5IGRvZXNuJ3Qgc3VmZmVyIGZyb20gdGhpcyBw
cm9ibGVtLCBhcyBpdCBkb2Vzbid0CitjcmVhdGUgYSBtYW5hZ2VyIHRocmVhZC4gSG93ZXZlciwg
aWYgeW91IGRvbid0IGNvbnRyb2wgd2hpY2ggbWFjaGluZSB5b3VyIHRlc3QKK3J1bnMgb24sIHlv
dSBzaG91bGRuJ3QgZGVwZW5kIG9uIHRoaXMuCisKKyMjIFdoeSBkb2VzIEdvb2dsZSBUZXN0IHJl
cXVpcmUgdGhlIGVudGlyZSB0ZXN0IGNhc2UsIGluc3RlYWQgb2YgaW5kaXZpZHVhbCB0ZXN0cywg
dG8gYmUgbmFtZWQgRk9PRGVhdGhUZXN0IHdoZW4gaXQgdXNlcyBBU1NFUlRcX0RFQVRIPyAjIwor
CitHb29nbGUgVGVzdCBkb2VzIG5vdCBpbnRlcmxlYXZlIHRlc3RzIGZyb20gZGlmZmVyZW50IHRl
c3QgY2FzZXMuIFRoYXQgaXMsIGl0CitydW5zIGFsbCB0ZXN0cyBpbiBvbmUgdGVzdCBjYXNlIGZp
cnN0LCBhbmQgdGhlbiBydW5zIGFsbCB0ZXN0cyBpbiB0aGUgbmV4dCB0ZXN0CitjYXNlLCBhbmQg
c28gb24uIEdvb2dsZSBUZXN0IGRvZXMgdGhpcyBiZWNhdXNlIGl0IG5lZWRzIHRvIHNldCB1cCBh
IHRlc3QgY2FzZQorYmVmb3JlIHRoZSBmaXJzdCB0ZXN0IGluIGl0IGlzIHJ1biwgYW5kIHRlYXIg
aXQgZG93biBhZnRlcndvcmRzLiBTcGxpdHRpbmcgdXAKK3RoZSB0ZXN0IGNhc2Ugd291bGQgcmVx
dWlyZSBtdWx0aXBsZSBzZXQtdXAgYW5kIHRlYXItZG93biBwcm9jZXNzZXMsIHdoaWNoIGlzCitp
bmVmZmljaWVudCBhbmQgbWFrZXMgdGhlIHNlbWFudGljcyB1bmNsZWFuLgorCitJZiB3ZSB3ZXJl
IHRvIGRldGVybWluZSB0aGUgb3JkZXIgb2YgdGVzdHMgYmFzZWQgb24gdGVzdCBuYW1lIGluc3Rl
YWQgb2YgdGVzdAorY2FzZSBuYW1lLCB0aGVuIHdlIHdvdWxkIGhhdmUgYSBwcm9ibGVtIHdpdGgg
dGhlIGZvbGxvd2luZyBzaXR1YXRpb246CisKK2BgYAorVEVTVF9GKEZvb1Rlc3QsIEFiY0RlYXRo
VGVzdCkgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIFV2dykgeyAuLi4gfQorCitURVNUX0YoQmFy
VGVzdCwgRGVmRGVhdGhUZXN0KSB7IC4uLiB9CitURVNUX0YoQmFyVGVzdCwgWHl6KSB7IC4uLiB9
CitgYGAKKworU2luY2UgYEZvb1Rlc3QuQWJjRGVhdGhUZXN0YCBuZWVkcyB0byBydW4gYmVmb3Jl
IGBCYXJUZXN0Llh5emAsIGFuZCB3ZSBkb24ndAoraW50ZXJsZWF2ZSB0ZXN0cyBmcm9tIGRpZmZl
cmVudCB0ZXN0IGNhc2VzLCB3ZSBuZWVkIHRvIHJ1biBhbGwgdGVzdHMgaW4gdGhlCitgRm9vVGVz
dGAgY2FzZSBiZWZvcmUgcnVubmluZyBhbnkgdGVzdCBpbiB0aGUgYEJhclRlc3RgIGNhc2UuIFRo
aXMgY29udHJhZGljdHMKK3dpdGggdGhlIHJlcXVpcmVtZW50IHRvIHJ1biBgQmFyVGVzdC5EZWZE
ZWF0aFRlc3RgIGJlZm9yZSBgRm9vVGVzdC5VdndgLgorCisjIyBCdXQgSSBkb24ndCBsaWtlIGNh
bGxpbmcgbXkgZW50aXJlIHRlc3QgY2FzZSBGT09EZWF0aFRlc3Qgd2hlbiBpdCBjb250YWlucyBi
b3RoIGRlYXRoIHRlc3RzIGFuZCBub24tZGVhdGggdGVzdHMuIFdoYXQgZG8gSSBkbz8gIyMKKwor
WW91IGRvbid0IGhhdmUgdG8sIGJ1dCBpZiB5b3UgbGlrZSwgeW91IG1heSBzcGxpdCB1cCB0aGUg
dGVzdCBjYXNlIGludG8KK2BGb29UZXN0YCBhbmQgYEZvb0RlYXRoVGVzdGAsIHdoZXJlIHRoZSBu
YW1lcyBtYWtlIGl0IGNsZWFyIHRoYXQgdGhleSBhcmUKK3JlbGF0ZWQ6CisKK2BgYAorY2xhc3Mg
Rm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKKworVEVTVF9GKEZvb1Rl
c3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQorCit0eXBlZGVm
IEZvb1Rlc3QgRm9vRGVhdGhUZXN0OworCitURVNUX0YoRm9vRGVhdGhUZXN0LCBVdncpIHsgLi4u
IEVYUEVDVF9ERUFUSCguLi4pIC4uLiB9CitURVNUX0YoRm9vRGVhdGhUZXN0LCBYeXopIHsgLi4u
IEFTU0VSVF9ERUFUSCguLi4pIC4uLiB9CitgYGAKKworIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlu
cyBhYm91dCAibm8gbWF0Y2ggZm9yICdvcGVyYXRvcjw8JyIgd2hlbiBJIHVzZSBhbiBhc3NlcnRp
b24uIFdoYXQgZ2l2ZXM/ICMjCisKK0lmIHlvdSB1c2UgYSB1c2VyLWRlZmluZWQgdHlwZSBgRm9v
VHlwZWAgaW4gYW4gYXNzZXJ0aW9uLCB5b3UgbXVzdCBtYWtlIHN1cmUKK3RoZXJlIGlzIGFuIGBz
dGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiwgY29uc3QgRm9vVHlwZSYpYCBm
dW5jdGlvbgorZGVmaW5lZCBzdWNoIHRoYXQgd2UgY2FuIHByaW50IGEgdmFsdWUgb2YgYEZvb1R5
cGVgLgorCitJbiBhZGRpdGlvbiwgaWYgYEZvb1R5cGVgIGlzIGRlY2xhcmVkIGluIGEgbmFtZSBz
cGFjZSwgdGhlIGA8PGAgb3BlcmF0b3IgYWxzbworbmVlZHMgdG8gYmUgZGVmaW5lZCBpbiB0aGUg
X3NhbWVfIG5hbWUgc3BhY2UuCisKKyMjIEhvdyBkbyBJIHN1cHByZXNzIHRoZSBtZW1vcnkgbGVh
ayBtZXNzYWdlcyBvbiBXaW5kb3dzPyAjIworCitTaW5jZSB0aGUgc3RhdGljYWxseSBpbml0aWFs
aXplZCBHb29nbGUgVGVzdCBzaW5nbGV0b24gcmVxdWlyZXMgYWxsb2NhdGlvbnMgb24KK3RoZSBo
ZWFwLCB0aGUgVmlzdWFsIEMrKyBtZW1vcnkgbGVhayBkZXRlY3RvciB3aWxsIHJlcG9ydCBtZW1v
cnkgbGVha3MgYXQgdGhlCitlbmQgb2YgdGhlIHByb2dyYW0gcnVuLiBUaGUgZWFzaWVzdCB3YXkg
dG8gYXZvaWQgdGhpcyBpcyB0byB1c2UgdGhlCitgX0NydE1lbUNoZWNrcG9pbnRgIGFuZCBgX0Ny
dE1lbUR1bXBBbGxPYmplY3RzU2luY2VgIGNhbGxzIHRvIG5vdCByZXBvcnQgYW55CitzdGF0aWNh
bGx5IGluaXRpYWxpemVkIGhlYXAgb2JqZWN0cy4gU2VlIE1TRE4gZm9yIG1vcmUgZGV0YWlscyBh
bmQgYWRkaXRpb25hbAoraGVhcCBjaGVjay9kZWJ1ZyByb3V0aW5lcy4KKworIyMgSSBhbSBidWls
ZGluZyBteSBwcm9qZWN0IHdpdGggR29vZ2xlIFRlc3QgaW4gVmlzdWFsIFN0dWRpbyBhbmQgYWxs
IEknbSBnZXR0aW5nIGlzIGEgYnVuY2ggb2YgbGlua2VyIGVycm9ycyAob3Igd2FybmluZ3MpLiBI
ZWxwISAjIworCitZb3UgbWF5IGdldCBhIG51bWJlciBvZiB0aGUgZm9sbG93aW5nIGxpbmtlciBl
cnJvciBvciB3YXJuaW5ncyBpZiB5b3UKK2F0dGVtcHQgdG8gbGluayB5b3VyIHRlc3QgcHJvamVj
dCB3aXRoIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5IHdoZW4KK3lvdXIgcHJvamVjdCBhbmQgdGhl
IGFyZSBub3QgYnVpbHQgdXNpbmcgdGhlIHNhbWUgY29tcGlsZXIgc2V0dGluZ3MuCisKKyAgKiBM
TksyMDA1OiBzeW1ib2wgYWxyZWFkeSBkZWZpbmVkIGluIG9iamVjdAorICAqIExOSzQyMTc6IGxv
Y2FsbHkgZGVmaW5lZCBzeW1ib2wgJ3N5bWJvbCcgaW1wb3J0ZWQgaW4gZnVuY3Rpb24gJ2Z1bmN0
aW9uJworICAqIExOSzQwNDk6IGxvY2FsbHkgZGVmaW5lZCBzeW1ib2wgJ3N5bWJvbCcgaW1wb3J0
ZWQKKworVGhlIEdvb2dsZSBUZXN0IHByb2plY3QgKGd0ZXN0LnZjcHJvaikgaGFzIHRoZSBSdW50
aW1lIExpYnJhcnkgb3B0aW9uCitzZXQgdG8gL01UICh1c2UgbXVsdGktdGhyZWFkZWQgc3RhdGlj
IGxpYnJhcmllcywgL01UZCBmb3IgZGVidWcpLiBJZgoreW91ciBwcm9qZWN0IHVzZXMgc29tZXRo
aW5nIGVsc2UsIGZvciBleGFtcGxlIC9NRCAodXNlIG11bHRpLXRocmVhZGVkCitETExzLCAvTURk
IGZvciBkZWJ1ZyksIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgc2V0dGluZyBpbiB0aGUgR29vZ2xl
CitUZXN0IHByb2plY3QgdG8gbWF0Y2ggeW91ciBwcm9qZWN0J3MuCisKK1RvIHVwZGF0ZSB0aGlz
IHNldHRpbmcgb3BlbiB0aGUgcHJvamVjdCBwcm9wZXJ0aWVzIGluIHRoZSBWaXN1YWwKK1N0dWRp
byBJREUgdGhlbiBzZWxlY3QgdGhlIGJyYW5jaCBDb25maWd1cmF0aW9uIFByb3BlcnRpZXMgfCBD
L0MrKyB8CitDb2RlIEdlbmVyYXRpb24gYW5kIGNoYW5nZSB0aGUgb3B0aW9uICJSdW50aW1lIExp
YnJhcnkiLiAgWW91IG1heSBhbHNvIHRyeQordXNpbmcgZ3Rlc3QtbWQudmNwcm9qIGluc3RlYWQg
b2YgZ3Rlc3QudmNwcm9qLgorCisjIyBJIHB1dCBteSB0ZXN0cyBpbiBhIGxpYnJhcnkgYW5kIEdv
b2dsZSBUZXN0IGRvZXNuJ3QgcnVuIHRoZW0uIFdoYXQncyBoYXBwZW5pbmc/ICMjCitIYXZlIHlv
dSByZWFkIGEKK1t3YXJuaW5nXShWMV81X1ByaW1lci5tZCNpbXBvcnRhbnQtbm90ZS1mb3Itdmlz
dWFsLWMtdXNlcnMpIG9uCit0aGUgR29vZ2xlIFRlc3QgUHJpbWVyIHBhZ2U/CisKKyMjIEkgd2Fu
dCB0byB1c2UgR29vZ2xlIFRlc3Qgd2l0aCBWaXN1YWwgU3R1ZGlvIGJ1dCBkb24ndCBrbm93IHdo
ZXJlIHRvIHN0YXJ0LiAjIworTWFueSBwZW9wbGUgYXJlIGluIHlvdXIgcG9zaXRpb24gYW5kIG9u
ZSBvZiB0aGUgcG9zdGVkIGhpcyBzb2x1dGlvbiB0bworb3VyIG1haWxpbmcgbGlzdC4gSGVyZSBp
cyBoaXMgbGluazoKK2h0dHA6Ly9oYXNzYW5qYW1pbGFobWFkLmJsb2dzcG90LmNvbS8yMDA5LzA3
L2d0ZXN0LXN0YXJ0ZXJzLWhlbHAuaHRtbC4KKworIyMgTXkgcXVlc3Rpb24gaXMgbm90IGNvdmVy
ZWQgaW4geW91ciBGQVEhICMjCisKK0lmIHlvdSBjYW5ub3QgZmluZCB0aGUgYW5zd2VyIHRvIHlv
dXIgcXVlc3Rpb24gaW4gdGhpcyBGQVEsIHRoZXJlIGFyZQorc29tZSBvdGhlciByZXNvdXJjZXMg
eW91IGNhbiB1c2U6CisKKyAgMS4gcmVhZCBvdGhlciBbd2lraSBwYWdlc10oaHR0cDovL2NvZGUu
Z29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvdy9saXN0KSwKKyAgMS4gc2VhcmNoIHRoZSBtYWlsaW5n
IGxpc3QgW2FyY2hpdmVdKGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGV0ZXN0
ZnJhbWV3b3JrL3RvcGljcyksCisgIDEuIGFzayBpdCBvbiBbZ29vZ2xldGVzdGZyYW1ld29ya0Bn
b29nbGVncm91cHMuY29tXShtYWlsdG86Z29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMu
Y29tKSBhbmQgc29tZW9uZSB3aWxsIGFuc3dlciBpdCAodG8gcHJldmVudCBzcGFtLCB3ZSByZXF1
aXJlIHlvdSB0byBqb2luIHRoZSBbZGlzY3Vzc2lvbiBncm91cF0oaHR0cDovL2dyb3Vwcy5nb29n
bGUuY29tL2dyb3VwL2dvb2dsZXRlc3RmcmFtZXdvcmspIGJlZm9yZSB5b3UgY2FuIHBvc3QuKS4K
KworUGxlYXNlIG5vdGUgdGhhdCBjcmVhdGluZyBhbiBpc3N1ZSBpbiB0aGUKK1tpc3N1ZSB0cmFj
a2VyXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC9pc3N1ZXMvbGlzdCkgaXMg
X25vdF8KK2EgZ29vZCB3YXkgdG8gZ2V0IHlvdXIgYW5zd2VyLCBhcyBpdCBpcyBtb25pdG9yZWQg
aW5mcmVxdWVudGx5IGJ5IGEKK3Zlcnkgc21hbGwgbnVtYmVyIG9mIHBlb3BsZS4KKworV2hlbiBh
c2tpbmcgYSBxdWVzdGlvbiwgaXQncyBoZWxwZnVsIHRvIHByb3ZpZGUgYXMgbXVjaCBvZiB0aGUK
K2ZvbGxvd2luZyBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSAocGVvcGxlIGNhbm5vdCBoZWxwIHlv
dSBpZiB0aGVyZSdzCitub3QgZW5vdWdoIGluZm9ybWF0aW9uIGluIHlvdXIgcXVlc3Rpb24pOgor
CisgICogdGhlIHZlcnNpb24gKG9yIHRoZSByZXZpc2lvbiBudW1iZXIgaWYgeW91IGNoZWNrIG91
dCBmcm9tIFNWTiBkaXJlY3RseSkgb2YgR29vZ2xlIFRlc3QgeW91IHVzZSAoR29vZ2xlIFRlc3Qg
aXMgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRoYXQgeW91ciBw
cm9ibGVtIGhhcyBiZWVuIHNvbHZlZCBpbiBhIGxhdGVyIHZlcnNpb24pLAorICAqIHlvdXIgb3Bl
cmF0aW5nIHN5c3RlbSwKKyAgKiB0aGUgbmFtZSBhbmQgdmVyc2lvbiBvZiB5b3VyIGNvbXBpbGVy
LAorICAqIHRoZSBjb21wbGV0ZSBjb21tYW5kIGxpbmUgZmxhZ3MgeW91IGdpdmUgdG8geW91ciBj
b21waWxlciwKKyAgKiB0aGUgY29tcGxldGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZXMgKGlmIHRo
ZSBxdWVzdGlvbiBpcyBhYm91dCBjb21waWxhdGlvbiksCisgICogdGhlIF9hY3R1YWxfIGNvZGUg
KGlkZWFsbHksIGEgbWluaW1hbCBidXQgY29tcGxldGUgcHJvZ3JhbSkgdGhhdCBoYXMgdGhlIHBy
b2JsZW0geW91IGVuY291bnRlci7vnIEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2RvY3MvVjFfNV9QcmltZXIubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1Yx
XzVfUHJpbWVyLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5NjBkMmNlNGMzNDRmZDM5MjMxN2JkYjAzOWZkNGIz
YjE4Y2M0MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2Nz
L1YxXzVfUHJpbWVyLm1kCkBAIC0wLDAgKzEsNDk3IEBACisKKworIyBJbnRyb2R1Y3Rpb246IFdo
eSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrPyAjCisKK19Hb29nbGUgQysrIFRlc3Rpbmcg
RnJhbWV3b3JrXyBoZWxwcyB5b3Ugd3JpdGUgYmV0dGVyIEMrKyB0ZXN0cy4KKworTm8gbWF0dGVy
IHdoZXRoZXIgeW91IHdvcmsgb24gTGludXgsIFdpbmRvd3MsIG9yIGEgTWFjLCBpZiB5b3Ugd3Jp
dGUgQysrIGNvZGUsCitHb29nbGUgVGVzdCBjYW4gaGVscCB5b3UuCisKK1NvIHdoYXQgbWFrZXMg
YSBnb29kIHRlc3QsIGFuZCBob3cgZG9lcyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGZp
dCBpbj8gV2UgYmVsaWV2ZToKKyAgMS4gVGVzdHMgc2hvdWxkIGJlIF9pbmRlcGVuZGVudF8gYW5k
IF9yZXBlYXRhYmxlXy4gSXQncyBhIHBhaW4gdG8gZGVidWcgYSB0ZXN0IHRoYXQgc3VjY2VlZHMg
b3IgZmFpbHMgYXMgYSByZXN1bHQgb2Ygb3RoZXIgdGVzdHMuICBHb29nbGUgQysrIFRlc3Rpbmcg
RnJhbWV3b3JrIGlzb2xhdGVzIHRoZSB0ZXN0cyBieSBydW5uaW5nIGVhY2ggb2YgdGhlbSBvbiBh
IGRpZmZlcmVudCBvYmplY3QuIFdoZW4gYSB0ZXN0IGZhaWxzLCBHb29nbGUgQysrIFRlc3Rpbmcg
RnJhbWV3b3JrIGFsbG93cyB5b3UgdG8gcnVuIGl0IGluIGlzb2xhdGlvbiBmb3IgcXVpY2sgZGVi
dWdnaW5nLgorICAxLiBUZXN0cyBzaG91bGQgYmUgd2VsbCBfb3JnYW5pemVkXyBhbmQgcmVmbGVj
dCB0aGUgc3RydWN0dXJlIG9mIHRoZSB0ZXN0ZWQgY29kZS4gIEdvb2dsZSBDKysgVGVzdGluZyBG
cmFtZXdvcmsgZ3JvdXBzIHJlbGF0ZWQgdGVzdHMgaW50byB0ZXN0IGNhc2VzIHRoYXQgY2FuIHNo
YXJlIGRhdGEgYW5kIHN1YnJvdXRpbmVzLiBUaGlzIGNvbW1vbiBwYXR0ZXJuIGlzIGVhc3kgdG8g
cmVjb2duaXplIGFuZCBtYWtlcyB0ZXN0cyBlYXN5IHRvIG1haW50YWluLiBTdWNoIGNvbnNpc3Rl
bmN5IGlzIGVzcGVjaWFsbHkgaGVscGZ1bCB3aGVuIHBlb3BsZSBzd2l0Y2ggcHJvamVjdHMgYW5k
IHN0YXJ0IHRvIHdvcmsgb24gYSBuZXcgY29kZSBiYXNlLgorICAxLiBUZXN0cyBzaG91bGQgYmUg
X3BvcnRhYmxlXyBhbmQgX3JldXNhYmxlXy4gVGhlIG9wZW4tc291cmNlIGNvbW11bml0eSBoYXMg
YSBsb3Qgb2YgY29kZSB0aGF0IGlzIHBsYXRmb3JtLW5ldXRyYWwsIGl0cyB0ZXN0cyBzaG91bGQg
YWxzbyBiZSBwbGF0Zm9ybS1uZXV0cmFsLiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayB3
b3JrcyBvbiBkaWZmZXJlbnQgT1Nlcywgd2l0aCBkaWZmZXJlbnQgY29tcGlsZXJzIChnY2MsIE1T
VkMsIGFuZCBvdGhlcnMpLCB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucywgc28gR29vZ2xlIEMr
KyBUZXN0aW5nIEZyYW1ld29yayB0ZXN0cyBjYW4gZWFzaWx5IHdvcmsgd2l0aCBhIHZhcmlldHkg
b2YgY29uZmlndXJhdGlvbnMuICAoTm90ZSB0aGF0IHRoZSBjdXJyZW50IHJlbGVhc2Ugb25seSBj
b250YWlucyBidWlsZCBzY3JpcHRzIGZvciBMaW51eCAtIHdlIGFyZSBhY3RpdmVseSB3b3JraW5n
IG9uIHNjcmlwdHMgZm9yIG90aGVyIHBsYXRmb3Jtcy4pCisgIDEuIFdoZW4gdGVzdHMgZmFpbCwg
dGhleSBzaG91bGQgcHJvdmlkZSBhcyBtdWNoIF9pbmZvcm1hdGlvbl8gYWJvdXQgdGhlIHByb2Js
ZW0gYXMgcG9zc2libGUuIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgZG9lc24ndCBzdG9w
IGF0IHRoZSBmaXJzdCB0ZXN0IGZhaWx1cmUuIEluc3RlYWQsIGl0IG9ubHkgc3RvcHMgdGhlIGN1
cnJlbnQgdGVzdCBhbmQgY29udGludWVzIHdpdGggdGhlIG5leHQuIFlvdSBjYW4gYWxzbyBzZXQg
dXAgdGVzdHMgdGhhdCByZXBvcnQgbm9uLWZhdGFsIGZhaWx1cmVzIGFmdGVyIHdoaWNoIHRoZSBj
dXJyZW50IHRlc3QgY29udGludWVzLiBUaHVzLCB5b3UgY2FuIGRldGVjdCBhbmQgZml4IG11bHRp
cGxlIGJ1Z3MgaW4gYSBzaW5nbGUgcnVuLWVkaXQtY29tcGlsZSBjeWNsZS4KKyAgMS4gVGhlIHRl
c3RpbmcgZnJhbWV3b3JrIHNob3VsZCBsaWJlcmF0ZSB0ZXN0IHdyaXRlcnMgZnJvbSBob3VzZWtl
ZXBpbmcgY2hvcmVzIGFuZCBsZXQgdGhlbSBmb2N1cyBvbiB0aGUgdGVzdCBfY29udGVudF8uICBH
b29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGF1dG9tYXRpY2FsbHkga2VlcHMgdHJhY2sgb2Yg
YWxsIHRlc3RzIGRlZmluZWQsIGFuZCBkb2Vzbid0IHJlcXVpcmUgdGhlIHVzZXIgdG8gZW51bWVy
YXRlIHRoZW0gaW4gb3JkZXIgdG8gcnVuIHRoZW0uCisgIDEuIFRlc3RzIHNob3VsZCBiZSBfZmFz
dF8uIFdpdGggR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yaywgeW91IGNhbiByZXVzZSBzaGFy
ZWQgcmVzb3VyY2VzIGFjcm9zcyB0ZXN0cyBhbmQgcGF5IGZvciB0aGUgc2V0LXVwL3RlYXItZG93
biBvbmx5IG9uY2UsIHdpdGhvdXQgbWFraW5nIHRlc3RzIGRlcGVuZCBvbiBlYWNoIG90aGVyLgor
CitTaW5jZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGlzIGJhc2VkIG9uIHRoZSBwb3B1
bGFyIHhVbml0CithcmNoaXRlY3R1cmUsIHlvdSdsbCBmZWVsIHJpZ2h0IGF0IGhvbWUgaWYgeW91
J3ZlIHVzZWQgSlVuaXQgb3IgUHlVbml0IGJlZm9yZS4KK0lmIG5vdCwgaXQgd2lsbCB0YWtlIHlv
dSBhYm91dCAxMCBtaW51dGVzIHRvIGxlYXJuIHRoZSBiYXNpY3MgYW5kIGdldCBzdGFydGVkLgor
U28gbGV0J3MgZ28hCisKK19Ob3RlOl8gV2Ugc29tZXRpbWVzIHJlZmVyIHRvIEdvb2dsZSBDKysg
VGVzdGluZyBGcmFtZXdvcmsgaW5mb3JtYWxseQorYXMgX0dvb2dsZSBUZXN0Xy4KKworIyBTZXR0
aW5nIHVwIGEgTmV3IFRlc3QgUHJvamVjdCAjCisKK1RvIHdyaXRlIGEgdGVzdCBwcm9ncmFtIHVz
aW5nIEdvb2dsZSBUZXN0LCB5b3UgbmVlZCB0byBjb21waWxlIEdvb2dsZQorVGVzdCBpbnRvIGEg
bGlicmFyeSBhbmQgbGluayB5b3VyIHRlc3Qgd2l0aCBpdC4gIFdlIHByb3ZpZGUgYnVpbGQKK2Zp
bGVzIGZvciBzb21lIHBvcHVsYXIgYnVpbGQgc3lzdGVtcyAoYG1zdmMvYCBmb3IgVmlzdWFsIFN0
dWRpbywKK2B4Y29kZS9gIGZvciBNYWMgWGNvZGUsIGBtYWtlL2AgZm9yIEdOVSBtYWtlLCBgY29k
ZWdlYXIvYCBmb3IgQm9ybGFuZAorQysrIEJ1aWxkZXIsIGFuZCB0aGUgYXV0b3Rvb2xzIHNjcmlw
dCBpbiB0aGUKK0dvb2dsZSBUZXN0IHJvb3QgZGlyZWN0b3J5KS4gIElmIHlvdXIgYnVpbGQgc3lz
dGVtIGlzIG5vdCBvbiB0aGlzCitsaXN0LCB5b3UgY2FuIHRha2UgYSBsb29rIGF0IGBtYWtlL01h
a2VmaWxlYCB0byBsZWFybiBob3cgR29vZ2xlIFRlc3QKK3Nob3VsZCBiZSBjb21waWxlZCAoYmFz
aWNhbGx5IHlvdSB3YW50IHRvIGNvbXBpbGUgYHNyYy9ndGVzdC1hbGwuY2NgCit3aXRoIGBHVEVT
VF9ST09UYCBhbmQgYEdURVNUX1JPT1QvaW5jbHVkZWAgaW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0
aCwKK3doZXJlIGBHVEVTVF9ST09UYCBpcyB0aGUgR29vZ2xlIFRlc3Qgcm9vdCBkaXJlY3Rvcnkp
LgorCitPbmNlIHlvdSBhcmUgYWJsZSB0byBjb21waWxlIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5
LCB5b3Ugc2hvdWxkCitjcmVhdGUgYSBwcm9qZWN0IG9yIGJ1aWxkIHRhcmdldCBmb3IgeW91ciB0
ZXN0IHByb2dyYW0uICBNYWtlIHN1cmUgeW91CitoYXZlIGBHVEVTVF9ST09UL2luY2x1ZGVgIGlu
IHRoZSBoZWFkZXIgc2VhcmNoIHBhdGggc28gdGhhdCB0aGUKK2NvbXBpbGVyIGNhbiBmaW5kIGA8
Z3Rlc3QvZ3Rlc3QuaD5gIHdoZW4gY29tcGlsaW5nIHlvdXIgdGVzdC4gIFNldCB1cAoreW91ciB0
ZXN0IHByb2plY3QgdG8gbGluayB3aXRoIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5IChmb3IgZXhh
bXBsZSwKK2luIFZpc3VhbCBTdHVkaW8sIHRoaXMgaXMgZG9uZSBieSBhZGRpbmcgYSBkZXBlbmRl
bmN5IG9uCitgZ3Rlc3QudmNwcm9qYCkuCisKK0lmIHlvdSBzdGlsbCBoYXZlIHF1ZXN0aW9ucywg
dGFrZSBhIGxvb2sgYXQgaG93IEdvb2dsZSBUZXN0J3Mgb3duCit0ZXN0cyBhcmUgYnVpbHQgYW5k
IHVzZSB0aGVtIGFzIGV4YW1wbGVzLgorCisjIEJhc2ljIENvbmNlcHRzICMKKworV2hlbiB1c2lu
ZyBHb29nbGUgVGVzdCwgeW91IHN0YXJ0IGJ5IHdyaXRpbmcgX2Fzc2VydGlvbnNfLCB3aGljaCBh
cmUgc3RhdGVtZW50cwordGhhdCBjaGVjayB3aGV0aGVyIGEgY29uZGl0aW9uIGlzIHRydWUuIEFu
IGFzc2VydGlvbidzIHJlc3VsdCBjYW4gYmUgX3N1Y2Nlc3NfLAorX25vbmZhdGFsIGZhaWx1cmVf
LCBvciBfZmF0YWwgZmFpbHVyZV8uIElmIGEgZmF0YWwgZmFpbHVyZSBvY2N1cnMsIGl0IGFib3J0
cwordGhlIGN1cnJlbnQgZnVuY3Rpb247IG90aGVyd2lzZSB0aGUgcHJvZ3JhbSBjb250aW51ZXMg
bm9ybWFsbHkuCisKK19UZXN0c18gdXNlIGFzc2VydGlvbnMgdG8gdmVyaWZ5IHRoZSB0ZXN0ZWQg
Y29kZSdzIGJlaGF2aW9yLiBJZiBhIHRlc3QgY3Jhc2hlcworb3IgaGFzIGEgZmFpbGVkIGFzc2Vy
dGlvbiwgdGhlbiBpdCBfZmFpbHNfOyBvdGhlcndpc2UgaXQgX3N1Y2NlZWRzXy4KKworQSBfdGVz
dCBjYXNlXyBjb250YWlucyBvbmUgb3IgbWFueSB0ZXN0cy4gWW91IHNob3VsZCBncm91cCB5b3Vy
IHRlc3RzIGludG8gdGVzdAorY2FzZXMgdGhhdCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhl
IHRlc3RlZCBjb2RlLiBXaGVuIG11bHRpcGxlIHRlc3RzIGluIGEKK3Rlc3QgY2FzZSBuZWVkIHRv
IHNoYXJlIGNvbW1vbiBvYmplY3RzIGFuZCBzdWJyb3V0aW5lcywgeW91IGNhbiBwdXQgdGhlbSBp
bnRvIGEKK190ZXN0IGZpeHR1cmVfIGNsYXNzLgorCitBIF90ZXN0IHByb2dyYW1fIGNhbiBjb250
YWluIG11bHRpcGxlIHRlc3QgY2FzZXMuCisKK1dlJ2xsIG5vdyBleHBsYWluIGhvdyB0byB3cml0
ZSBhIHRlc3QgcHJvZ3JhbSwgc3RhcnRpbmcgYXQgdGhlIGluZGl2aWR1YWwKK2Fzc2VydGlvbiBs
ZXZlbCBhbmQgYnVpbGRpbmcgdXAgdG8gdGVzdHMgYW5kIHRlc3QgY2FzZXMuCisKKyMgQXNzZXJ0
aW9ucyAjCisKK0dvb2dsZSBUZXN0IGFzc2VydGlvbnMgYXJlIG1hY3JvcyB0aGF0IHJlc2VtYmxl
IGZ1bmN0aW9uIGNhbGxzLiBZb3UgdGVzdCBhCitjbGFzcyBvciBmdW5jdGlvbiBieSBtYWtpbmcg
YXNzZXJ0aW9ucyBhYm91dCBpdHMgYmVoYXZpb3IuIFdoZW4gYW4gYXNzZXJ0aW9uCitmYWlscywg
R29vZ2xlIFRlc3QgcHJpbnRzIHRoZSBhc3NlcnRpb24ncyBzb3VyY2UgZmlsZSBhbmQgbGluZSBu
dW1iZXIgbG9jYXRpb24sCithbG9uZyB3aXRoIGEgZmFpbHVyZSBtZXNzYWdlLiBZb3UgbWF5IGFs
c28gc3VwcGx5IGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZQord2hpY2ggd2lsbCBiZSBhcHBlbmRl
ZCB0byBHb29nbGUgVGVzdCdzIG1lc3NhZ2UuCisKK1RoZSBhc3NlcnRpb25zIGNvbWUgaW4gcGFp
cnMgdGhhdCB0ZXN0IHRoZSBzYW1lIHRoaW5nIGJ1dCBoYXZlIGRpZmZlcmVudAorZWZmZWN0cyBv
biB0aGUgY3VycmVudCBmdW5jdGlvbi4gYEFTU0VSVF8qYCB2ZXJzaW9ucyBnZW5lcmF0ZSBmYXRh
bCBmYWlsdXJlcword2hlbiB0aGV5IGZhaWwsIGFuZCAqKmFib3J0IHRoZSBjdXJyZW50IGZ1bmN0
aW9uKiouIGBFWFBFQ1RfKmAgdmVyc2lvbnMgZ2VuZXJhdGUKK25vbmZhdGFsIGZhaWx1cmVzLCB3
aGljaCBkb24ndCBhYm9ydCB0aGUgY3VycmVudCBmdW5jdGlvbi4gVXN1YWxseSBgRVhQRUNUXypg
CithcmUgcHJlZmVycmVkLCBhcyB0aGV5IGFsbG93IG1vcmUgdGhhbiBvbmUgZmFpbHVyZXMgdG8g
YmUgcmVwb3J0ZWQgaW4gYSB0ZXN0LgorSG93ZXZlciwgeW91IHNob3VsZCB1c2UgYEFTU0VSVF8q
YCBpZiBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gY29udGludWUgd2hlbgordGhlIGFzc2VydGlv
biBpbiBxdWVzdGlvbiBmYWlscy4KKworU2luY2UgYSBmYWlsZWQgYEFTU0VSVF8qYCByZXR1cm5z
IGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gaW1tZWRpYXRlbHksCitwb3NzaWJseSBza2lwcGlu
ZyBjbGVhbi11cCBjb2RlIHRoYXQgY29tZXMgYWZ0ZXIgaXQsIGl0IG1heSBjYXVzZSBhIHNwYWNl
IGxlYWsuCitEZXBlbmRpbmcgb24gdGhlIG5hdHVyZSBvZiB0aGUgbGVhaywgaXQgbWF5IG9yIG1h
eSBub3QgYmUgd29ydGggZml4aW5nIC0gc28KK2tlZXAgdGhpcyBpbiBtaW5kIGlmIHlvdSBnZXQg
YSBoZWFwIGNoZWNrZXIgZXJyb3IgaW4gYWRkaXRpb24gdG8gYXNzZXJ0aW9uCitlcnJvcnMuCisK
K1RvIHByb3ZpZGUgYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlLCBzaW1wbHkgc3RyZWFtIGl0IGlu
dG8gdGhlIG1hY3JvIHVzaW5nIHRoZQorYDw8YCBvcGVyYXRvciwgb3IgYSBzZXF1ZW5jZSBvZiBz
dWNoIG9wZXJhdG9ycy4gQW4gZXhhbXBsZToKK2BgYAorQVNTRVJUX0VRKHguc2l6ZSgpLCB5LnNp
emUoKSkgPDwgIlZlY3RvcnMgeCBhbmQgeSBhcmUgb2YgdW5lcXVhbCBsZW5ndGgiOworCitmb3Ig
KGludCBpID0gMDsgaSA8IHguc2l6ZSgpOyArK2kpIHsKKyAgRVhQRUNUX0VRKHhbaV0sIHlbaV0p
IDw8ICJWZWN0b3JzIHggYW5kIHkgZGlmZmVyIGF0IGluZGV4ICIgPDwgaTsKK30KK2BgYAorCitB
bnl0aGluZyB0aGF0IGNhbiBiZSBzdHJlYW1lZCB0byBhbiBgb3N0cmVhbWAgY2FuIGJlIHN0cmVh
bWVkIHRvIGFuIGFzc2VydGlvbgorbWFjcm8tLWluIHBhcnRpY3VsYXIsIEMgc3RyaW5ncyBhbmQg
YHN0cmluZ2Agb2JqZWN0cy4gSWYgYSB3aWRlIHN0cmluZworKGB3Y2hhcl90KmAsIGBUQ0hBUipg
IGluIGBVTklDT0RFYCBtb2RlIG9uIFdpbmRvd3MsIG9yIGBzdGQ6OndzdHJpbmdgKSBpcworc3Ry
ZWFtZWQgdG8gYW4gYXNzZXJ0aW9uLCBpdCB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gVVRGLTggd2hl
biBwcmludGVkLgorCisjIyBCYXNpYyBBc3NlcnRpb25zICMjCisKK1RoZXNlIGFzc2VydGlvbnMg
ZG8gYmFzaWMgdHJ1ZS9mYWxzZSBjb25kaXRpb24gdGVzdGluZy4KK3wgKipGYXRhbCBhc3NlcnRp
b24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8
IGBBU1NFUlRfVFJVRShgX2NvbmRpdGlvbl9gKWA7ICB8IGBFWFBFQ1RfVFJVRShgX2NvbmRpdGlv
bl9gKWA7ICAgfCBfY29uZGl0aW9uXyBpcyB0cnVlIHwKK3wgYEFTU0VSVF9GQUxTRShgX2NvbmRp
dGlvbl9gKWA7IHwgYEVYUEVDVF9GQUxTRShgX2NvbmRpdGlvbl9gKWA7ICB8IF9jb25kaXRpb25f
IGlzIGZhbHNlIHwKKworUmVtZW1iZXIsIHdoZW4gdGhleSBmYWlsLCBgQVNTRVJUXypgIHlpZWxk
cyBhIGZhdGFsIGZhaWx1cmUgYW5kCityZXR1cm5zIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24s
IHdoaWxlIGBFWFBFQ1RfKmAgeWllbGRzIGEgbm9uZmF0YWwKK2ZhaWx1cmUsIGFsbG93aW5nIHRo
ZSBmdW5jdGlvbiB0byBjb250aW51ZSBydW5uaW5nLiBJbiBlaXRoZXIgY2FzZSwgYW4KK2Fzc2Vy
dGlvbiBmYWlsdXJlIG1lYW5zIGl0cyBjb250YWluaW5nIHRlc3QgZmFpbHMuCisKK19BdmFpbGFi
aWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBCaW5hcnkgQ29tcGFyaXNvbiAjIwor
CitUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGFzc2VydGlvbnMgdGhhdCBjb21wYXJlIHR3byB2YWx1
ZXMuCisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAq
KlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8YEFTU0VSVF9FUShgX2V4cGVjdGVkX2AsIGBfYWN0dWFs
X2ApO2B8YEVYUEVDVF9FUShgX2V4cGVjdGVkX2AsIGBfYWN0dWFsX2ApO2B8IF9leHBlY3RlZF8g
YD09YCBfYWN0dWFsXyB8Cit8YEFTU0VSVF9ORShgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8
YEVYUEVDVF9ORShgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8IF92YWwxXyBgIT1gIF92YWwy
XyB8Cit8YEFTU0VSVF9MVChgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9MVChg
X3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8IF92YWwxXyBgPGAgX3ZhbDJfIHwKK3xgQVNTRVJU
X0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHxgRVhQRUNUX0xFKGBfdmFsMV9gLCBgX3Zh
bDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA8PWAgX3ZhbDJfIHwKK3xgQVNTRVJUX0dUKGBfdmFsMV9g
LCBgX3ZhbDJfYCk7YCAgICAgIHxgRVhQRUNUX0dUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAg
IHwgX3ZhbDFfIGA+YCBfdmFsMl8gfAorfGBBU1NFUlRfR0UoYF92YWwxX2AsIGBfdmFsMl9gKTtg
ICAgICAgfGBFWFBFQ1RfR0UoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfCBfdmFsMV8gYD49
YCBfdmFsMl8gfAorCitJbiB0aGUgZXZlbnQgb2YgYSBmYWlsdXJlLCBHb29nbGUgVGVzdCBwcmlu
dHMgYm90aCBfdmFsMV8gYW5kIF92YWwyXworLiBJbiBgQVNTRVJUX0VRKmAgYW5kIGBFWFBFQ1Rf
RVEqYCAoYW5kIGFsbCBvdGhlciBlcXVhbGl0eSBhc3NlcnRpb25zCit3ZSdsbCBpbnRyb2R1Y2Ug
bGF0ZXIpLCB5b3Ugc2hvdWxkIHB1dCB0aGUgZXhwcmVzc2lvbiB5b3Ugd2FudCB0byB0ZXN0Citp
biB0aGUgcG9zaXRpb24gb2YgX2FjdHVhbF8sIGFuZCBwdXQgaXRzIGV4cGVjdGVkIHZhbHVlIGlu
IF9leHBlY3RlZF8sCithcyBHb29nbGUgVGVzdCdzIGZhaWx1cmUgbWVzc2FnZXMgYXJlIG9wdGlt
aXplZCBmb3IgdGhpcyBjb252ZW50aW9uLgorCitWYWx1ZSBhcmd1bWVudHMgbXVzdCBiZSBjb21w
YXJhYmxlIGJ5IHRoZSBhc3NlcnRpb24ncyBjb21wYXJpc29uIG9wZXJhdG9yIG9yCit5b3UnbGwg
Z2V0IGEgY29tcGlsZXIgZXJyb3IuIFZhbHVlcyBtdXN0IGFsc28gc3VwcG9ydCB0aGUgYDw8YCBv
cGVyYXRvciBmb3IKK3N0cmVhbWluZyB0byBhbiBgb3N0cmVhbWAuIEFsbCBidWlsdC1pbiB0eXBl
cyBzdXBwb3J0IHRoaXMuCisKK1RoZXNlIGFzc2VydGlvbnMgY2FuIHdvcmsgd2l0aCBhIHVzZXIt
ZGVmaW5lZCB0eXBlLCBidXQgb25seSBpZiB5b3UgZGVmaW5lIHRoZQorY29ycmVzcG9uZGluZyBj
b21wYXJpc29uIG9wZXJhdG9yIChlLmcuIGA9PWAsIGA8YCwgZXRjKS4gIElmIHRoZSBjb3JyZXNw
b25kaW5nCitvcGVyYXRvciBpcyBkZWZpbmVkLCBwcmVmZXIgdXNpbmcgdGhlIGBBU1NFUlRfKigp
YCBtYWNyb3MgYmVjYXVzZSB0aGV5IHdpbGwKK3ByaW50IG91dCBub3Qgb25seSB0aGUgcmVzdWx0
IG9mIHRoZSBjb21wYXJpc29uLCBidXQgdGhlIHR3byBvcGVyYW5kcyBhcyB3ZWxsLgorCitBcmd1
bWVudHMgYXJlIGFsd2F5cyBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLiBUaGVyZWZvcmUsIGl0J3Mg
T0sgZm9yIHRoZQorYXJndW1lbnRzIHRvIGhhdmUgc2lkZSBlZmZlY3RzLiBIb3dldmVyLCBhcyB3
aXRoIGFueSBvcmRpbmFyeSBDL0MrKyBmdW5jdGlvbiwKK3RoZSBhcmd1bWVudHMnIGV2YWx1YXRp
b24gb3JkZXIgaXMgdW5kZWZpbmVkIChpLmUuIHRoZSBjb21waWxlciBpcyBmcmVlIHRvCitjaG9v
c2UgYW55IG9yZGVyKSBhbmQgeW91ciBjb2RlIHNob3VsZCBub3QgZGVwZW5kIG9uIGFueSBwYXJ0
aWN1bGFyIGFyZ3VtZW50CitldmFsdWF0aW9uIG9yZGVyLgorCitgQVNTRVJUX0VRKClgIGRvZXMg
cG9pbnRlciBlcXVhbGl0eSBvbiBwb2ludGVycy4gSWYgdXNlZCBvbiB0d28gQyBzdHJpbmdzLCBp
dAordGVzdHMgaWYgdGhleSBhcmUgaW4gdGhlIHNhbWUgbWVtb3J5IGxvY2F0aW9uLCBub3QgaWYg
dGhleSBoYXZlIHRoZSBzYW1lIHZhbHVlLgorVGhlcmVmb3JlLCBpZiB5b3Ugd2FudCB0byBjb21w
YXJlIEMgc3RyaW5ncyAoZS5nLiBgY29uc3QgY2hhcipgKSBieSB2YWx1ZSwgdXNlCitgQVNTRVJU
X1NUUkVRKClgICwgd2hpY2ggd2lsbCBiZSBkZXNjcmliZWQgbGF0ZXIgb24uIEluIHBhcnRpY3Vs
YXIsIHRvIGFzc2VydAordGhhdCBhIEMgc3RyaW5nIGlzIGBOVUxMYCwgdXNlIGBBU1NFUlRfU1RS
RVEoTlVMTCwgY19zdHJpbmcpYCAuIEhvd2V2ZXIsIHRvCitjb21wYXJlIHR3byBgc3RyaW5nYCBv
YmplY3RzLCB5b3Ugc2hvdWxkIHVzZSBgQVNTRVJUX0VRYC4KKworTWFjcm9zIGluIHRoaXMgc2Vj
dGlvbiB3b3JrIHdpdGggYm90aCBuYXJyb3cgYW5kIHdpZGUgc3RyaW5nIG9iamVjdHMgKGBzdHJp
bmdgCithbmQgYHdzdHJpbmdgKS4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBN
YWMuCisKKyMjIFN0cmluZyBDb21wYXJpc29uICMjCisKK1RoZSBhc3NlcnRpb25zIGluIHRoaXMg
Z3JvdXAgY29tcGFyZSB0d28gKipDIHN0cmluZ3MqKi4gSWYgeW91IHdhbnQgdG8gY29tcGFyZQor
dHdvIGBzdHJpbmdgIG9iamVjdHMsIHVzZSBgRVhQRUNUX0VRYCwgYEVYUEVDVF9ORWAsIGFuZCBl
dGMgaW5zdGVhZC4KKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRp
b24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9TVFJFUShgX2V4cGVjdGVk
XF9zdHJfYCwgYF9hY3R1YWxcX3N0cl9gKTtgICAgIHwgYEVYUEVDVF9TVFJFUShgX2V4cGVjdGVk
XF9zdHJfYCwgYF9hY3R1YWxcX3N0cl9gKTtgICAgICB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUg
dGhlIHNhbWUgY29udGVudCB8Cit8IGBBU1NFUlRfU1RSTkUoYF9zdHIxX2AsIGBfc3RyMl9gKTtg
ICAgIHwgYEVYUEVDVF9TVFJORShgX3N0cjFfYCwgYF9zdHIyX2ApO2AgICAgIHwgdGhlIHR3byBD
IHN0cmluZ3MgaGF2ZSBkaWZmZXJlbnQgY29udGVudCB8Cit8IGBBU1NFUlRfU1RSQ0FTRUVRKGBf
ZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2B8IGBFWFBFQ1RfU1RSQ0FTRUVRKGBf
ZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgfCB0aGUgdHdvIEMgc3RyaW5ncyBo
YXZlIHRoZSBzYW1lIGNvbnRlbnQsIGlnbm9yaW5nIGNhc2UgfAorfCBgQVNTRVJUX1NUUkNBU0VO
RShgX3N0cjFfYCwgYF9zdHIyX2ApO2B8IGBFWFBFQ1RfU1RSQ0FTRU5FKGBfc3RyMV9gLCBgX3N0
cjJfYCk7YCB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUgZGlmZmVyZW50IGNvbnRlbnQsIGlnbm9y
aW5nIGNhc2UgfAorCitOb3RlIHRoYXQgIkNBU0UiIGluIGFuIGFzc2VydGlvbiBuYW1lIG1lYW5z
IHRoYXQgY2FzZSBpcyBpZ25vcmVkLgorCitgKlNUUkVRKmAgYW5kIGAqU1RSTkUqYCBhbHNvIGFj
Y2VwdCB3aWRlIEMgc3RyaW5ncyAoYHdjaGFyX3QqYCkuIElmIGEKK2NvbXBhcmlzb24gb2YgdHdv
IHdpZGUgc3RyaW5ncyBmYWlscywgdGhlaXIgdmFsdWVzIHdpbGwgYmUgcHJpbnRlZCBhcyBVVEYt
OAorbmFycm93IHN0cmluZ3MuCisKK0EgYE5VTExgIHBvaW50ZXIgYW5kIGFuIGVtcHR5IHN0cmlu
ZyBhcmUgY29uc2lkZXJlZCBfZGlmZmVyZW50Xy4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBX
aW5kb3dzLCBNYWMuCisKK1NlZSBhbHNvOiBGb3IgbW9yZSBzdHJpbmcgY29tcGFyaXNvbiB0cmlj
a3MgKHN1YnN0cmluZywgcHJlZml4LCBzdWZmaXgsIGFuZAorcmVndWxhciBleHByZXNzaW9uIG1h
dGNoaW5nLCBmb3IgZXhhbXBsZSksIHNlZSB0aGUgW0FkdmFuY2VkR3VpZGUgQWR2YW5jZWQKK0dv
b2dsZSBUZXN0IEd1aWRlXS4KKworIyBTaW1wbGUgVGVzdHMgIworCitUbyBjcmVhdGUgYSB0ZXN0
OgorICAxLiBVc2UgdGhlIGBURVNUKClgIG1hY3JvIHRvIGRlZmluZSBhbmQgbmFtZSBhIHRlc3Qg
ZnVuY3Rpb24sIFRoZXNlIGFyZSBvcmRpbmFyeSBDKysgZnVuY3Rpb25zIHRoYXQgZG9uJ3QgcmV0
dXJuIGEgdmFsdWUuCisgIDEuIEluIHRoaXMgZnVuY3Rpb24sIGFsb25nIHdpdGggYW55IHZhbGlk
IEMrKyBzdGF0ZW1lbnRzIHlvdSB3YW50IHRvIGluY2x1ZGUsIHVzZSB0aGUgdmFyaW91cyBHb29n
bGUgVGVzdCBhc3NlcnRpb25zIHRvIGNoZWNrIHZhbHVlcy4KKyAgMS4gVGhlIHRlc3QncyByZXN1
bHQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgYXNzZXJ0aW9uczsgaWYgYW55IGFzc2VydGlvbiBpbiB0
aGUgdGVzdCBmYWlscyAoZWl0aGVyIGZhdGFsbHkgb3Igbm9uLWZhdGFsbHkpLCBvciBpZiB0aGUg
dGVzdCBjcmFzaGVzLCB0aGUgZW50aXJlIHRlc3QgZmFpbHMuIE90aGVyd2lzZSwgaXQgc3VjY2Vl
ZHMuCisKK2BgYAorVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSB7CisgLi4uIHRlc3Qg
Ym9keSAuLi4KK30KK2BgYAorCisKK2BURVNUKClgIGFyZ3VtZW50cyBnbyBmcm9tIGdlbmVyYWwg
dG8gc3BlY2lmaWMuIFRoZSBfZmlyc3RfIGFyZ3VtZW50IGlzIHRoZQorbmFtZSBvZiB0aGUgdGVz
dCBjYXNlLCBhbmQgdGhlIF9zZWNvbmRfIGFyZ3VtZW50IGlzIHRoZSB0ZXN0J3MgbmFtZSB3aXRo
aW4gdGhlCit0ZXN0IGNhc2UuIFJlbWVtYmVyIHRoYXQgYSB0ZXN0IGNhc2UgY2FuIGNvbnRhaW4g
YW55IG51bWJlciBvZiBpbmRpdmlkdWFsCit0ZXN0cy4gQSB0ZXN0J3MgX2Z1bGwgbmFtZV8gY29u
c2lzdHMgb2YgaXRzIGNvbnRhaW5pbmcgdGVzdCBjYXNlIGFuZCBpdHMKK2luZGl2aWR1YWwgbmFt
ZS4gVGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcyBjYW4gaGF2ZSB0aGUgc2FtZSBpbmRp
dmlkdWFsCituYW1lLgorCitGb3IgZXhhbXBsZSwgbGV0J3MgdGFrZSBhIHNpbXBsZSBpbnRlZ2Vy
IGZ1bmN0aW9uOgorYGBgCitpbnQgRmFjdG9yaWFsKGludCBuKTsgLy8gUmV0dXJucyB0aGUgZmFj
dG9yaWFsIG9mIG4KK2BgYAorCitBIHRlc3QgY2FzZSBmb3IgdGhpcyBmdW5jdGlvbiBtaWdodCBs
b29rIGxpa2U6CitgYGAKKy8vIFRlc3RzIGZhY3RvcmlhbCBvZiAwLgorVEVTVChGYWN0b3JpYWxU
ZXN0LCBIYW5kbGVzWmVyb0lucHV0KSB7CisgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoMCkpOwor
fQorCisvLyBUZXN0cyBmYWN0b3JpYWwgb2YgcG9zaXRpdmUgbnVtYmVycy4KK1RFU1QoRmFjdG9y
aWFsVGVzdCwgSGFuZGxlc1Bvc2l0aXZlSW5wdXQpIHsKKyAgRVhQRUNUX0VRKDEsIEZhY3Rvcmlh
bCgxKSk7CisgIEVYUEVDVF9FUSgyLCBGYWN0b3JpYWwoMikpOworICBFWFBFQ1RfRVEoNiwgRmFj
dG9yaWFsKDMpKTsKKyAgRVhQRUNUX0VRKDQwMzIwLCBGYWN0b3JpYWwoOCkpOworfQorYGBgCisK
K0dvb2dsZSBUZXN0IGdyb3VwcyB0aGUgdGVzdCByZXN1bHRzIGJ5IHRlc3QgY2FzZXMsIHNvIGxv
Z2ljYWxseS1yZWxhdGVkIHRlc3RzCitzaG91bGQgYmUgaW4gdGhlIHNhbWUgdGVzdCBjYXNlOyBp
biBvdGhlciB3b3JkcywgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZWlyCitgVEVTVCgpYCBzaG91
bGQgYmUgdGhlIHNhbWUuIEluIHRoZSBhYm92ZSBleGFtcGxlLCB3ZSBoYXZlIHR3byB0ZXN0cywK
K2BIYW5kbGVzWmVyb0lucHV0YCBhbmQgYEhhbmRsZXNQb3NpdGl2ZUlucHV0YCwgdGhhdCBiZWxv
bmcgdG8gdGhlIHNhbWUgdGVzdAorY2FzZSBgRmFjdG9yaWFsVGVzdGAuCisKK19BdmFpbGFiaWxp
dHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIFRlc3QgRml4dHVyZXM6IFVzaW5nIHRoZSBT
YW1lIERhdGEgQ29uZmlndXJhdGlvbiBmb3IgTXVsdGlwbGUgVGVzdHMgIworCitJZiB5b3UgZmlu
ZCB5b3Vyc2VsZiB3cml0aW5nIHR3byBvciBtb3JlIHRlc3RzIHRoYXQgb3BlcmF0ZSBvbiBzaW1p
bGFyIGRhdGEsCit5b3UgY2FuIHVzZSBhIF90ZXN0IGZpeHR1cmVfLiBJdCBhbGxvd3MgeW91IHRv
IHJldXNlIHRoZSBzYW1lIGNvbmZpZ3VyYXRpb24gb2YKK29iamVjdHMgZm9yIHNldmVyYWwgZGlm
ZmVyZW50IHRlc3RzLgorCitUbyBjcmVhdGUgYSBmaXh0dXJlLCBqdXN0OgorICAxLiBEZXJpdmUg
YSBjbGFzcyBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RgIC4gU3RhcnQgaXRzIGJvZHkgd2l0aCBgcHJv
dGVjdGVkOmAgb3IgYHB1YmxpYzpgIGFzIHdlJ2xsIHdhbnQgdG8gYWNjZXNzIGZpeHR1cmUgbWVt
YmVycyBmcm9tIHN1Yi1jbGFzc2VzLgorICAxLiBJbnNpZGUgdGhlIGNsYXNzLCBkZWNsYXJlIGFu
eSBvYmplY3RzIHlvdSBwbGFuIHRvIHVzZS4KKyAgMS4gSWYgbmVjZXNzYXJ5LCB3cml0ZSBhIGRl
ZmF1bHQgY29uc3RydWN0b3Igb3IgYFNldFVwKClgIGZ1bmN0aW9uIHRvIHByZXBhcmUgdGhlIG9i
amVjdHMgZm9yIGVhY2ggdGVzdC4gQSBjb21tb24gbWlzdGFrZSBpcyB0byBzcGVsbCBgU2V0VXAo
KWAgYXMgYFNldHVwKClgIHdpdGggYSBzbWFsbCBgdWAgLSBkb24ndCBsZXQgdGhhdCBoYXBwZW4g
dG8geW91LgorICAxLiBJZiBuZWNlc3NhcnksIHdyaXRlIGEgZGVzdHJ1Y3RvciBvciBgVGVhckRv
d24oKWAgZnVuY3Rpb24gdG8gcmVsZWFzZSBhbnkgcmVzb3VyY2VzIHlvdSBhbGxvY2F0ZWQgaW4g
YFNldFVwKClgIC4gVG8gbGVhcm4gd2hlbiB5b3Ugc2hvdWxkIHVzZSB0aGUgY29uc3RydWN0b3Iv
ZGVzdHJ1Y3RvciBhbmQgd2hlbiB5b3Ugc2hvdWxkIHVzZSBgU2V0VXAoKS9UZWFyRG93bigpYCwg
cmVhZCB0aGlzIFtGQVEgZW50cnldKFYxXzVfRkFRLm1kI3Nob3VsZC1pLXVzZS10aGUtY29uc3Ry
dWN0b3JkZXN0cnVjdG9yLW9mLXRoZS10ZXN0LWZpeHR1cmUtb3ItdGhlLXNldC11cHRlYXItZG93
bi1mdW5jdGlvbikuCisgIDEuIElmIG5lZWRlZCwgZGVmaW5lIHN1YnJvdXRpbmVzIGZvciB5b3Vy
IHRlc3RzIHRvIHNoYXJlLgorCitXaGVuIHVzaW5nIGEgZml4dHVyZSwgdXNlIGBURVNUX0YoKWAg
aW5zdGVhZCBvZiBgVEVTVCgpYCBhcyBpdCBhbGxvd3MgeW91IHRvCithY2Nlc3Mgb2JqZWN0cyBh
bmQgc3Vicm91dGluZXMgaW4gdGhlIHRlc3QgZml4dHVyZToKK2BgYAorVEVTVF9GKHRlc3RfY2Fz
ZV9uYW1lLCB0ZXN0X25hbWUpIHsKKyAuLi4gdGVzdCBib2R5IC4uLgorfQorYGBgCisKK0xpa2Ug
YFRFU1QoKWAsIHRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgdGVzdCBjYXNlIG5hbWUsIGJ1dCBm
b3IgYFRFU1RfRigpYAordGhpcyBtdXN0IGJlIHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGZpeHR1cmUg
Y2xhc3MuIFlvdSd2ZSBwcm9iYWJseSBndWVzc2VkOiBgX0ZgCitpcyBmb3IgZml4dHVyZS4KKwor
VW5mb3J0dW5hdGVseSwgdGhlIEMrKyBtYWNybyBzeXN0ZW0gZG9lcyBub3QgYWxsb3cgdXMgdG8g
Y3JlYXRlIGEgc2luZ2xlIG1hY3JvCit0aGF0IGNhbiBoYW5kbGUgYm90aCB0eXBlcyBvZiB0ZXN0
cy4gVXNpbmcgdGhlIHdyb25nIG1hY3JvIGNhdXNlcyBhIGNvbXBpbGVyCitlcnJvci4KKworQWxz
bywgeW91IG11c3QgZmlyc3QgZGVmaW5lIGEgdGVzdCBmaXh0dXJlIGNsYXNzIGJlZm9yZSB1c2lu
ZyBpdCBpbiBhCitgVEVTVF9GKClgLCBvciB5b3UnbGwgZ2V0IHRoZSBjb21waWxlciBlcnJvciAi
YHZpcnR1YWwgb3V0c2lkZSBjbGFzcworZGVjbGFyYXRpb25gIi4KKworRm9yIGVhY2ggdGVzdCBk
ZWZpbmVkIHdpdGggYFRFU1RfRigpYCwgR29vZ2xlIFRlc3Qgd2lsbDoKKyAgMS4gQ3JlYXRlIGEg
X2ZyZXNoXyB0ZXN0IGZpeHR1cmUgYXQgcnVudGltZQorICAxLiBJbW1lZGlhdGVseSBpbml0aWFs
aXplIGl0IHZpYSBgU2V0VXAoKWAgLAorICAxLiBSdW4gdGhlIHRlc3QKKyAgMS4gQ2xlYW4gdXAg
YnkgY2FsbGluZyBgVGVhckRvd24oKWAKKyAgMS4gRGVsZXRlIHRoZSB0ZXN0IGZpeHR1cmUuICBO
b3RlIHRoYXQgZGlmZmVyZW50IHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBoYXZlIGRpZmZl
cmVudCB0ZXN0IGZpeHR1cmUgb2JqZWN0cywgYW5kIEdvb2dsZSBUZXN0IGFsd2F5cyBkZWxldGVz
IGEgdGVzdCBmaXh0dXJlIGJlZm9yZSBpdCBjcmVhdGVzIHRoZSBuZXh0IG9uZS4gR29vZ2xlIFRl
c3QgZG9lcyBub3QgcmV1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlIGZvciBtdWx0aXBsZSB0ZXN0
cy4gQW55IGNoYW5nZXMgb25lIHRlc3QgbWFrZXMgdG8gdGhlIGZpeHR1cmUgZG8gbm90IGFmZmVj
dCBvdGhlciB0ZXN0cy4KKworQXMgYW4gZXhhbXBsZSwgbGV0J3Mgd3JpdGUgdGVzdHMgZm9yIGEg
RklGTyBxdWV1ZSBjbGFzcyBuYW1lZCBgUXVldWVgLCB3aGljaAoraGFzIHRoZSBmb2xsb3dpbmcg
aW50ZXJmYWNlOgorYGBgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRT4gLy8gRSBpcyB0aGUgZWxlbWVu
dCB0eXBlLgorY2xhc3MgUXVldWUgeworIHB1YmxpYzoKKyAgUXVldWUoKTsKKyAgdm9pZCBFbnF1
ZXVlKGNvbnN0IEUmIGVsZW1lbnQpOworICBFKiBEZXF1ZXVlKCk7IC8vIFJldHVybnMgTlVMTCBp
ZiB0aGUgcXVldWUgaXMgZW1wdHkuCisgIHNpemVfdCBzaXplKCkgY29uc3Q7CisgIC4uLgorfTsK
K2BgYAorCitGaXJzdCwgZGVmaW5lIGEgZml4dHVyZSBjbGFzcy4gQnkgY29udmVudGlvbiwgeW91
IHNob3VsZCBnaXZlIGl0IHRoZSBuYW1lCitgRm9vVGVzdGAgd2hlcmUgYEZvb2AgaXMgdGhlIGNs
YXNzIGJlaW5nIHRlc3RlZC4KK2BgYAorY2xhc3MgUXVldWVUZXN0IDogcHVibGljIDo6dGVzdGlu
Zzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgcTFf
LkVucXVldWUoMSk7CisgICAgcTJfLkVucXVldWUoMik7CisgICAgcTJfLkVucXVldWUoMyk7Cisg
IH0KKworICAvLyB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7fQorCisgIFF1ZXVlPGludD4gcTBf
OworICBRdWV1ZTxpbnQ+IHExXzsKKyAgUXVldWU8aW50PiBxMl87Cit9OworYGBgCisKK0luIHRo
aXMgY2FzZSwgYFRlYXJEb3duKClgIGlzIG5vdCBuZWVkZWQgc2luY2Ugd2UgZG9uJ3QgaGF2ZSB0
byBjbGVhbiB1cCBhZnRlcgorZWFjaCB0ZXN0LCBvdGhlciB0aGFuIHdoYXQncyBhbHJlYWR5IGRv
bmUgYnkgdGhlIGRlc3RydWN0b3IuCisKK05vdyB3ZSdsbCB3cml0ZSB0ZXN0cyB1c2luZyBgVEVT
VF9GKClgIGFuZCB0aGlzIGZpeHR1cmUuCitgYGAKK1RFU1RfRihRdWV1ZVRlc3QsIElzRW1wdHlJ
bml0aWFsbHkpIHsKKyAgRVhQRUNUX0VRKDAsIHEwXy5zaXplKCkpOworfQorCitURVNUX0YoUXVl
dWVUZXN0LCBEZXF1ZXVlV29ya3MpIHsKKyAgaW50KiBuID0gcTBfLkRlcXVldWUoKTsKKyAgRVhQ
RUNUX0VRKE5VTEwsIG4pOworCisgIG4gPSBxMV8uRGVxdWV1ZSgpOworICBBU1NFUlRfVFJVRShu
ICE9IE5VTEwpOworICBFWFBFQ1RfRVEoMSwgKm4pOworICBFWFBFQ1RfRVEoMCwgcTFfLnNpemUo
KSk7CisgIGRlbGV0ZSBuOworCisgIG4gPSBxMl8uRGVxdWV1ZSgpOworICBBU1NFUlRfVFJVRShu
ICE9IE5VTEwpOworICBFWFBFQ1RfRVEoMiwgKm4pOworICBFWFBFQ1RfRVEoMSwgcTJfLnNpemUo
KSk7CisgIGRlbGV0ZSBuOworfQorYGBgCisKK1RoZSBhYm92ZSB1c2VzIGJvdGggYEFTU0VSVF8q
YCBhbmQgYEVYUEVDVF8qYCBhc3NlcnRpb25zLiBUaGUgcnVsZSBvZiB0aHVtYiBpcwordG8gdXNl
IGBFWFBFQ1RfKmAgd2hlbiB5b3Ugd2FudCB0aGUgdGVzdCB0byBjb250aW51ZSB0byByZXZlYWwg
bW9yZSBlcnJvcnMKK2FmdGVyIHRoZSBhc3NlcnRpb24gZmFpbHVyZSwgYW5kIHVzZSBgQVNTRVJU
XypgIHdoZW4gY29udGludWluZyBhZnRlciBmYWlsdXJlCitkb2Vzbid0IG1ha2Ugc2Vuc2UuIEZv
ciBleGFtcGxlLCB0aGUgc2Vjb25kIGFzc2VydGlvbiBpbiB0aGUgYERlcXVldWVgIHRlc3QgaXMK
K2BBU1NFUlRfVFJVRShuICE9IE5VTEwpYCwgYXMgd2UgbmVlZCB0byBkZXJlZmVyZW5jZSB0aGUg
cG9pbnRlciBgbmAgbGF0ZXIsCit3aGljaCB3b3VsZCBsZWFkIHRvIGEgc2VnZmF1bHQgd2hlbiBg
bmAgaXMgYE5VTExgLgorCitXaGVuIHRoZXNlIHRlc3RzIHJ1biwgdGhlIGZvbGxvd2luZyBoYXBw
ZW5zOgorICAxLiBHb29nbGUgVGVzdCBjb25zdHJ1Y3RzIGEgYFF1ZXVlVGVzdGAgb2JqZWN0IChs
ZXQncyBjYWxsIGl0IGB0MWAgKS4KKyAgMS4gYHQxLlNldFVwKClgIGluaXRpYWxpemVzIGB0MWAg
LgorICAxLiBUaGUgZmlyc3QgdGVzdCAoIGBJc0VtcHR5SW5pdGlhbGx5YCApIHJ1bnMgb24gYHQx
YCAuCisgIDEuIGB0MS5UZWFyRG93bigpYCBjbGVhbnMgdXAgYWZ0ZXIgdGhlIHRlc3QgZmluaXNo
ZXMuCisgIDEuIGB0MWAgaXMgZGVzdHJ1Y3RlZC4KKyAgMS4gVGhlIGFib3ZlIHN0ZXBzIGFyZSBy
ZXBlYXRlZCBvbiBhbm90aGVyIGBRdWV1ZVRlc3RgIG9iamVjdCwgdGhpcyB0aW1lIHJ1bm5pbmcg
dGhlIGBEZXF1ZXVlV29ya3NgIHRlc3QuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjLgorCitfTm90ZV86IEdvb2dsZSBUZXN0IGF1dG9tYXRpY2FsbHkgc2F2ZXMgYWxsIF9H
b29nbGUgVGVzdF8gZmxhZ3Mgd2hlbiBhIHRlc3QKK29iamVjdCBpcyBjb25zdHJ1Y3RlZCwgYW5k
IHJlc3RvcmVzIHRoZW0gd2hlbiBpdCBpcyBkZXN0cnVjdGVkLgorCisjIEludm9raW5nIHRoZSBU
ZXN0cyAjCisKK2BURVNUKClgIGFuZCBgVEVTVF9GKClgIGltcGxpY2l0bHkgcmVnaXN0ZXIgdGhl
aXIgdGVzdHMgd2l0aCBHb29nbGUgVGVzdC4gU28sIHVubGlrZSB3aXRoIG1hbnkgb3RoZXIgQysr
IHRlc3RpbmcgZnJhbWV3b3JrcywgeW91IGRvbid0IGhhdmUgdG8gcmUtbGlzdCBhbGwgeW91ciBk
ZWZpbmVkIHRlc3RzIGluIG9yZGVyIHRvIHJ1biB0aGVtLgorCitBZnRlciBkZWZpbmluZyB5b3Vy
IHRlc3RzLCB5b3UgY2FuIHJ1biB0aGVtIHdpdGggYFJVTl9BTExfVEVTVFMoKWAgLCB3aGljaCBy
ZXR1cm5zIGAwYCBpZiBhbGwgdGhlIHRlc3RzIGFyZSBzdWNjZXNzZnVsLCBvciBgMWAgb3RoZXJ3
aXNlLiBOb3RlIHRoYXQgYFJVTl9BTExfVEVTVFMoKWAgcnVucyBfYWxsIHRlc3RzXyBpbiB5b3Vy
IGxpbmsgdW5pdCAtLSB0aGV5IGNhbiBiZSBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLCBvciBl
dmVuIGRpZmZlcmVudCBzb3VyY2UgZmlsZXMuCisKK1doZW4gaW52b2tlZCwgdGhlIGBSVU5fQUxM
X1RFU1RTKClgIG1hY3JvOgorICAxLiBTYXZlcyB0aGUgc3RhdGUgb2YgYWxsICBHb29nbGUgVGVz
dCBmbGFncy4KKyAgMS4gQ3JlYXRlcyBhIHRlc3QgZml4dHVyZSBvYmplY3QgZm9yIHRoZSBmaXJz
dCB0ZXN0LgorICAxLiBJbml0aWFsaXplcyBpdCB2aWEgYFNldFVwKClgLgorICAxLiBSdW5zIHRo
ZSB0ZXN0IG9uIHRoZSBmaXh0dXJlIG9iamVjdC4KKyAgMS4gQ2xlYW5zIHVwIHRoZSBmaXh0dXJl
IHZpYSBgVGVhckRvd24oKWAuCisgIDEuIERlbGV0ZXMgdGhlIGZpeHR1cmUuCisgIDEuIFJlc3Rv
cmVzIHRoZSBzdGF0ZSBvZiBhbGwgR29vZ2xlIFRlc3QgZmxhZ3MuCisgIDEuIFJlcGVhdHMgdGhl
IGFib3ZlIHN0ZXBzIGZvciB0aGUgbmV4dCB0ZXN0LCB1bnRpbCBhbGwgdGVzdHMgaGF2ZSBydW4u
CisKK0luIGFkZGl0aW9uLCBpZiB0aGUgdGV4dCBmaXh0dXJlJ3MgY29uc3RydWN0b3IgZ2VuZXJh
dGVzIGEgZmF0YWwgZmFpbHVyZSBpbgorc3RlcCAyLCB0aGVyZSBpcyBubyBwb2ludCBmb3Igc3Rl
cCAzIC0gNSBhbmQgdGhleSBhcmUgdGh1cyBza2lwcGVkLiBTaW1pbGFybHksCitpZiBzdGVwIDMg
Z2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSwgc3RlcCA0IHdpbGwgYmUgc2tpcHBlZC4KKworX0lt
cG9ydGFudF86IFlvdSBtdXN0IG5vdCBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBvZiBgUlVOX0FM
TF9URVNUUygpYCwgb3IgYGdjY2AKK3dpbGwgZ2l2ZSB5b3UgYSBjb21waWxlciBlcnJvci4gVGhl
IHJhdGlvbmFsZSBmb3IgdGhpcyBkZXNpZ24gaXMgdGhhdCB0aGUKK2F1dG9tYXRlZCB0ZXN0aW5n
IHNlcnZpY2UgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgdGVzdCBoYXMgcGFzc2VkIGJhc2VkIG9uIGl0
cworZXhpdCBjb2RlLCBub3Qgb24gaXRzIHN0ZG91dC9zdGRlcnIgb3V0cHV0OyB0aHVzIHlvdXIg
YG1haW4oKWAgZnVuY3Rpb24gbXVzdAorcmV0dXJuIHRoZSB2YWx1ZSBvZiBgUlVOX0FMTF9URVNU
UygpYC4KKworQWxzbywgeW91IHNob3VsZCBjYWxsIGBSVU5fQUxMX1RFU1RTKClgIG9ubHkgKipv
bmNlKiouIENhbGxpbmcgaXQgbW9yZSB0aGFuIG9uY2UKK2NvbmZsaWN0cyB3aXRoIHNvbWUgYWR2
YW5jZWQgR29vZ2xlIFRlc3QgZmVhdHVyZXMgKGUuZy4gdGhyZWFkLXNhZmUgZGVhdGgKK3Rlc3Rz
KSBhbmQgdGh1cyBpcyBub3Qgc3VwcG9ydGVkLgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdp
bmRvd3MsIE1hYy4KKworIyBXcml0aW5nIHRoZSBtYWluKCkgRnVuY3Rpb24gIworCitZb3UgY2Fu
IHN0YXJ0IGZyb20gdGhpcyBib2lsZXJwbGF0ZToKK2BgYAorI2luY2x1ZGUgInRoaXMvcGFja2Fn
ZS9mb28uaCIKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCituYW1lc3BhY2UgeworCisvLyBU
aGUgZml4dHVyZSBmb3IgdGVzdGluZyBjbGFzcyBGb28uCitjbGFzcyBGb29UZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAvLyBZb3UgY2FuIHJlbW92ZSBhbnkg
b3IgYWxsIG9mIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGlmIGl0cyBib2R5CisgIC8vIGlzIGVt
cHR5LgorCisgIEZvb1Rlc3QoKSB7CisgICAgLy8gWW91IGNhbiBkbyBzZXQtdXAgd29yayBmb3Ig
ZWFjaCB0ZXN0IGhlcmUuCisgIH0KKworICB2aXJ0dWFsIH5Gb29UZXN0KCkgeworICAgIC8vIFlv
dSBjYW4gZG8gY2xlYW4tdXAgd29yayB0aGF0IGRvZXNuJ3QgdGhyb3cgZXhjZXB0aW9ucyBoZXJl
LgorICB9CisKKyAgLy8gSWYgdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIGFyZSBub3Qg
ZW5vdWdoIGZvciBzZXR0aW5nIHVwCisgIC8vIGFuZCBjbGVhbmluZyB1cCBlYWNoIHRlc3QsIHlv
dSBjYW4gZGVmaW5lIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKKworICB2aXJ0dWFsIHZvaWQgU2V0
VXAoKSB7CisgICAgLy8gQ29kZSBoZXJlIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVy
IHRoZSBjb25zdHJ1Y3RvciAocmlnaHQKKyAgICAvLyBiZWZvcmUgZWFjaCB0ZXN0KS4KKyAgfQor
CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBj
YWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgZWFjaCB0ZXN0IChyaWdodAorICAgIC8vIGJlZm9yZSB0
aGUgZGVzdHJ1Y3RvcikuCisgIH0KKworICAvLyBPYmplY3RzIGRlY2xhcmVkIGhlcmUgY2FuIGJl
IHVzZWQgYnkgYWxsIHRlc3RzIGluIHRoZSB0ZXN0IGNhc2UgZm9yIEZvby4KK307CisKKy8vIFRl
c3RzIHRoYXQgdGhlIEZvbzo6QmFyKCkgbWV0aG9kIGRvZXMgQWJjLgorVEVTVF9GKEZvb1Rlc3Qs
IE1ldGhvZEJhckRvZXNBYmMpIHsKKyAgY29uc3Qgc3RyaW5nIGlucHV0X2ZpbGVwYXRoID0gInRo
aXMvcGFja2FnZS90ZXN0ZGF0YS9teWlucHV0ZmlsZS5kYXQiOworICBjb25zdCBzdHJpbmcgb3V0
cHV0X2ZpbGVwYXRoID0gInRoaXMvcGFja2FnZS90ZXN0ZGF0YS9teW91dHB1dGZpbGUuZGF0IjsK
KyAgRm9vIGY7CisgIEVYUEVDVF9FUSgwLCBmLkJhcihpbnB1dF9maWxlcGF0aCwgb3V0cHV0X2Zp
bGVwYXRoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgRm9vIGRvZXMgWHl6LgorVEVTVF9GKEZvb1Rl
c3QsIERvZXNYeXopIHsKKyAgLy8gRXhlcmNpc2VzIHRoZSBYeXogZmVhdHVyZSBvZiBGb28uCit9
CisKK30gIC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsK
KyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIHJldHVybiBSVU5f
QUxMX1RFU1RTKCk7Cit9CitgYGAKKworVGhlIGA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClg
IGZ1bmN0aW9uIHBhcnNlcyB0aGUgY29tbWFuZCBsaW5lIGZvciBHb29nbGUKK1Rlc3QgZmxhZ3Ms
IGFuZCByZW1vdmVzIGFsbCByZWNvZ25pemVkIGZsYWdzLiBUaGlzIGFsbG93cyB0aGUgdXNlciB0
byBjb250cm9sIGEKK3Rlc3QgcHJvZ3JhbSdzIGJlaGF2aW9yIHZpYSB2YXJpb3VzIGZsYWdzLCB3
aGljaCB3ZSdsbCBjb3ZlciBpbiBbQWR2YW5jZWRHdWlkZV0oVjFfNV9BZHZhbmNlZEd1aWRlLm1k
KS4KK1lvdSBtdXN0IGNhbGwgdGhpcyBmdW5jdGlvbiBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9U
RVNUUygpYCwgb3IgdGhlIGZsYWdzCit3b24ndCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4KKwor
T24gV2luZG93cywgYEluaXRHb29nbGVUZXN0KClgIGFsc28gd29ya3Mgd2l0aCB3aWRlIHN0cmlu
Z3MsIHNvIGl0IGNhbiBiZSB1c2VkCitpbiBwcm9ncmFtcyBjb21waWxlZCBpbiBgVU5JQ09ERWAg
bW9kZSBhcyB3ZWxsLgorCitCdXQgbWF5YmUgeW91IHRoaW5rIHRoYXQgd3JpdGluZyBhbGwgdGhv
c2UgbWFpbigpIGZ1bmN0aW9ucyBpcyB0b28gbXVjaCB3b3JrPyBXZSBhZ3JlZSB3aXRoIHlvdSBj
b21wbGV0ZWx5IGFuZCB0aGF0J3Mgd2h5IEdvb2dsZSBUZXN0IHByb3ZpZGVzIGEgYmFzaWMgaW1w
bGVtZW50YXRpb24gb2YgbWFpbigpLiBJZiBpdCBmaXRzIHlvdXIgbmVlZHMsIHRoZW4ganVzdCBs
aW5rIHlvdXIgdGVzdCB3aXRoIGd0ZXN0XF9tYWluIGxpYnJhcnkgYW5kIHlvdSBhcmUgZ29vZCB0
byBnby4KKworIyMgSW1wb3J0YW50IG5vdGUgZm9yIFZpc3VhbCBDKysgdXNlcnMgIyMKK0lmIHlv
dSBwdXQgeW91ciB0ZXN0cyBpbnRvIGEgbGlicmFyeSBhbmQgeW91ciBgbWFpbigpYCBmdW5jdGlv
biBpcyBpbiBhIGRpZmZlcmVudCBsaWJyYXJ5IG9yIGluIHlvdXIgLmV4ZSBmaWxlLCB0aG9zZSB0
ZXN0cyB3aWxsIG5vdCBydW4uIFRoZSByZWFzb24gaXMgYSBbYnVnXShodHRwczovL2Nvbm5lY3Qu
bWljcm9zb2Z0LmNvbS9mZWVkYmFjay92aWV3ZmVlZGJhY2suYXNweD9GZWVkYmFja0lEPTI0NDQx
MCZzaXRlaWQ9MjEwKSBpbiBWaXN1YWwgQysrLiBXaGVuIHlvdSBkZWZpbmUgeW91ciB0ZXN0cywg
R29vZ2xlIFRlc3QgY3JlYXRlcyBjZXJ0YWluIHN0YXRpYyBvYmplY3RzIHRvIHJlZ2lzdGVyIHRo
ZW0uIFRoZXNlIG9iamVjdHMgYXJlIG5vdCByZWZlcmVuY2VkIGZyb20gZWxzZXdoZXJlIGJ1dCB0
aGVpciBjb25zdHJ1Y3RvcnMgYXJlIHN0aWxsIHN1cHBvc2VkIHRvIHJ1bi4gV2hlbiBWaXN1YWwg
QysrIGxpbmtlciBzZWVzIHRoYXQgbm90aGluZyBpbiB0aGUgbGlicmFyeSBpcyByZWZlcmVuY2Vk
IGZyb20gb3RoZXIgcGxhY2VzIGl0IHRocm93cyB0aGUgbGlicmFyeSBvdXQuIFlvdSBoYXZlIHRv
IHJlZmVyZW5jZSB5b3VyIGxpYnJhcnkgd2l0aCB0ZXN0cyBmcm9tIHlvdXIgbWFpbiBwcm9ncmFt
IHRvIGtlZXAgdGhlIGxpbmtlciBmcm9tIGRpc2NhcmRpbmcgaXQuIEhlcmUgaXMgaG93IHRvIGRv
IGl0LiBTb21ld2hlcmUgaW4geW91ciBsaWJyYXJ5IGNvZGUgZGVjbGFyZSBhIGZ1bmN0aW9uOgor
YGBgCitfX2RlY2xzcGVjKGRsbGV4cG9ydCkgaW50IFB1bGxJbk15TGlicmFyeSgpIHsgcmV0dXJu
IDA7IH0KK2BgYAorSWYgeW91IHB1dCB5b3VyIHRlc3RzIGluIGEgc3RhdGljIGxpYnJhcnkgKG5v
dCBETEwpIHRoZW4gYF9fZGVjbHNwZWMoZGxsZXhwb3J0KWAgaXMgbm90IHJlcXVpcmVkLiBOb3cs
IGluIHlvdXIgbWFpbiBwcm9ncmFtLCB3cml0ZSBhIGNvZGUgdGhhdCBpbnZva2VzIHRoYXQgZnVu
Y3Rpb246CitgYGAKK2ludCBQdWxsSW5NeUxpYnJhcnkoKTsKK3N0YXRpYyBpbnQgZHVtbXkgPSBQ
dWxsSW5NeUxpYnJhcnkoKTsKK2BgYAorVGhpcyB3aWxsIGtlZXAgeW91ciB0ZXN0cyByZWZlcmVu
Y2VkIGFuZCB3aWxsIG1ha2UgdGhlbSByZWdpc3RlciB0aGVtc2VsdmVzIGF0IHN0YXJ0dXAuCisK
K0luIGFkZGl0aW9uLCBpZiB5b3UgZGVmaW5lIHlvdXIgdGVzdHMgaW4gYSBzdGF0aWMgbGlicmFy
eSwgYWRkIGAvT1BUOk5PUkVGYCB0byB5b3VyIG1haW4gcHJvZ3JhbSBsaW5rZXIgb3B0aW9ucy4g
SWYgeW91IHVzZSBNU1ZDKysgSURFLCBnbyB0byB5b3VyIC5leGUgcHJvamVjdCBwcm9wZXJ0aWVz
L0NvbmZpZ3VyYXRpb24gUHJvcGVydGllcy9MaW5rZXIvT3B0aW1pemF0aW9uIGFuZCBzZXQgUmVm
ZXJlbmNlcyBzZXR0aW5nIHRvIGBLZWVwIFVucmVmZXJlbmNlZCBEYXRhICgvT1BUOk5PUkVGKWAu
IFRoaXMgd2lsbCBrZWVwIFZpc3VhbCBDKysgbGlua2VyIGZyb20gZGlzY2FyZGluZyBpbmRpdmlk
dWFsIHN5bWJvbHMgZ2VuZXJhdGVkIGJ5IHlvdXIgdGVzdHMgZnJvbSB0aGUgZmluYWwgZXhlY3V0
YWJsZS4KKworVGhlcmUgaXMgb25lIG1vcmUgcGl0ZmFsbCwgdGhvdWdoLiBJZiB5b3UgdXNlIEdv
b2dsZSBUZXN0IGFzIGEgc3RhdGljIGxpYnJhcnkgKHRoYXQncyBob3cgaXQgaXMgZGVmaW5lZCBp
biBndGVzdC52Y3Byb2opIHlvdXIgdGVzdHMgbXVzdCBhbHNvIHJlc2lkZSBpbiBhIHN0YXRpYyBs
aWJyYXJ5LiBJZiB5b3UgaGF2ZSB0byBoYXZlIHRoZW0gaW4gYSBETEwsIHlvdSBfbXVzdF8gY2hh
bmdlIEdvb2dsZSBUZXN0IHRvIGJ1aWxkIGludG8gYSBETEwgYXMgd2VsbC4gT3RoZXJ3aXNlIHlv
dXIgdGVzdHMgd2lsbCBub3QgcnVuIGNvcnJlY3RseSBvciB3aWxsIG5vdCBydW4gYXQgYWxsLiBU
aGUgZ2VuZXJhbCBjb25jbHVzaW9uIGhlcmUgaXM6IG1ha2UgeW91ciBsaWZlIGVhc2llciAtIGRv
IG5vdCB3cml0ZSB5b3VyIHRlc3RzIGluIGxpYnJhcmllcyEKKworIyBXaGVyZSB0byBHbyBmcm9t
IEhlcmUgIworCitDb25ncmF0dWxhdGlvbnMhIFlvdSd2ZSBsZWFybmVkIHRoZSBHb29nbGUgVGVz
dCBiYXNpY3MuIFlvdSBjYW4gc3RhcnQgd3JpdGluZworYW5kIHJ1bm5pbmcgR29vZ2xlIFRlc3Qg
dGVzdHMsIHJlYWQgc29tZSBbc2FtcGxlc10oU2FtcGxlcy5tZCksIG9yIGNvbnRpbnVlIHdpdGgK
K1tBZHZhbmNlZEd1aWRlXShWMV81X0FkdmFuY2VkR3VpZGUubWQpLCB3aGljaCBkZXNjcmliZXMg
bWFueSBtb3JlIHVzZWZ1bCBHb29nbGUgVGVzdCBmZWF0dXJlcy4KKworIyBLbm93biBMaW1pdGF0
aW9ucyAjCisKK0dvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHRvIGJlIHRocmVhZC1zYWZlLiAgVGhl
IGltcGxlbWVudGF0aW9uIGlzCit0aHJlYWQtc2FmZSBvbiBzeXN0ZW1zIHdoZXJlIHRoZSBgcHRo
cmVhZHNgIGxpYnJhcnkgaXMgYXZhaWxhYmxlLiAgSXQKK2lzIGN1cnJlbnRseSBfdW5zYWZlXyB0
byB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBmcm9tIHR3byB0aHJlYWRzCitjb25jdXJyZW50
bHkgb24gb3RoZXIgc3lzdGVtcyAoZS5nLiBXaW5kb3dzKS4gIEluIG1vc3QgdGVzdHMgdGhpcyBp
cworbm90IGFuIGlzc3VlIGFzIHVzdWFsbHkgdGhlIGFzc2VydGlvbnMgYXJlIGRvbmUgaW4gdGhl
IG1haW4gdGhyZWFkLiBJZgoreW91IHdhbnQgdG8gaGVscCwgeW91IGNhbiB2b2x1bnRlZXIgdG8g
aW1wbGVtZW50IHRoZSBuZWNlc3NhcnkKK3N5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGluIGBn
dGVzdC1wb3J0LmhgIGZvciB5b3VyIHBsYXRmb3JtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvZG9jcy9WMV81X1B1bXBNYW51YWwubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9kb2NzL1YxXzVfUHVtcE1hbnVhbC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTcxMDc4OWRkZDFlZWE1
ZWY1ZTc5M2NhMzUwZTUyZTA0NTU2YTU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvZG9jcy9WMV81X1B1bXBNYW51YWwubWQKQEAgLTAsMCArMSwxNzcgQEAKKwor
Cis8Yj5QPC9iPnVtcCBpcyA8Yj5VPC9iPnNlZnVsIGZvciA8Yj5NPC9iPmV0YSA8Yj5QPC9iPnJv
Z3JhbW1pbmcuCisKKyMgVGhlIFByb2JsZW0gIworCitUZW1wbGF0ZSBhbmQgbWFjcm8gbGlicmFy
aWVzIG9mdGVuIG5lZWQgdG8gZGVmaW5lIG1hbnkgY2xhc3NlcywKK2Z1bmN0aW9ucywgb3IgbWFj
cm9zIHRoYXQgdmFyeSBvbmx5IChvciBhbG1vc3Qgb25seSkgaW4gdGhlIG51bWJlciBvZgorYXJn
dW1lbnRzIHRoZXkgdGFrZS4gSXQncyBhIGxvdCBvZiByZXBldGl0aXZlLCBtZWNoYW5pY2FsLCBh
bmQKK2Vycm9yLXByb25lIHdvcmsuCisKK1ZhcmlhZGljIHRlbXBsYXRlcyBhbmQgdmFyaWFkaWMg
bWFjcm9zIGNhbiBhbGxldmlhdGUgdGhlIHByb2JsZW0uCitIb3dldmVyLCB3aGlsZSBib3RoIGFy
ZSBiZWluZyBjb25zaWRlcmVkIGJ5IHRoZSBDKysgY29tbWl0dGVlLCBuZWl0aGVyCitpcyBpbiB0
aGUgc3RhbmRhcmQgeWV0IG9yIHdpZGVseSBzdXBwb3J0ZWQgYnkgY29tcGlsZXJzLiAgVGh1cyB0
aGV5CithcmUgb2Z0ZW4gbm90IGEgZ29vZCBjaG9pY2UsIGVzcGVjaWFsbHkgd2hlbiB5b3VyIGNv
ZGUgbmVlZHMgdG8gYmUKK3BvcnRhYmxlLiBBbmQgdGhlaXIgY2FwYWJpbGl0aWVzIGFyZSBzdGls
bCBsaW1pdGVkLgorCitBcyBhIHJlc3VsdCwgYXV0aG9ycyBvZiBzdWNoIGxpYnJhcmllcyBvZnRl
biBoYXZlIHRvIHdyaXRlIHNjcmlwdHMgdG8KK2dlbmVyYXRlIHRoZWlyIGltcGxlbWVudGF0aW9u
LiBIb3dldmVyLCBvdXIgZXhwZXJpZW5jZSBpcyB0aGF0IGl0J3MKK3RlZGlvdXMgdG8gd3JpdGUg
c3VjaCBzY3JpcHRzLCB3aGljaCB0ZW5kIHRvIHJlZmxlY3QgdGhlIHN0cnVjdHVyZSBvZgordGhl
IGdlbmVyYXRlZCBjb2RlIHBvb3JseSBhbmQgYXJlIG9mdGVuIGhhcmQgdG8gcmVhZCBhbmQgZWRp
dC4gRm9yCitleGFtcGxlLCBhIHNtYWxsIGNoYW5nZSBuZWVkZWQgaW4gdGhlIGdlbmVyYXRlZCBj
b2RlIG1heSByZXF1aXJlIHNvbWUKK25vbi1pbnR1aXRpdmUsIG5vbi10cml2aWFsIGNoYW5nZXMg
aW4gdGhlIHNjcmlwdC4gVGhpcyBpcyBlc3BlY2lhbGx5CitwYWluZnVsIHdoZW4gZXhwZXJpbWVu
dGluZyB3aXRoIHRoZSBjb2RlLgorCisjIE91ciBTb2x1dGlvbiAjCisKK1B1bXAgKGZvciBQdW1w
IGlzIFVzZWZ1bCBmb3IgTWV0YSBQcm9ncmFtbWluZywgUHJldHR5IFVzZWZ1bCBmb3IgTWV0YQor
UHJvZ3JhbW1pbmcsIG9yIFByYWN0aWNhbCBVdGlsaXR5IGZvciBNZXRhIFByb2dyYW1taW5nLCB3
aGljaGV2ZXIgeW91CitwcmVmZXIpIGlzIGEgc2ltcGxlIG1ldGEtcHJvZ3JhbW1pbmcgdG9vbCBm
b3IgQysrLiBUaGUgaWRlYSBpcyB0aGF0IGEKK3Byb2dyYW1tZXIgd3JpdGVzIGEgYGZvby5wdW1w
YCBmaWxlIHdoaWNoIGNvbnRhaW5zIEMrKyBjb2RlIHBsdXMgbWV0YQorY29kZSB0aGF0IG1hbmlw
dWxhdGVzIHRoZSBDKysgY29kZS4gVGhlIG1ldGEgY29kZSBjYW4gaGFuZGxlCitpdGVyYXRpb25z
IG92ZXIgYSByYW5nZSwgbmVzdGVkIGl0ZXJhdGlvbnMsIGxvY2FsIG1ldGEgdmFyaWFibGUKK2Rl
ZmluaXRpb25zLCBzaW1wbGUgYXJpdGhtZXRpYywgYW5kIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25z
LiBZb3UgY2FuCit2aWV3IGl0IGFzIGEgc21hbGwgRG9tYWluLVNwZWNpZmljIExhbmd1YWdlLiBU
aGUgbWV0YSBsYW5ndWFnZSBpcworZGVzaWduZWQgdG8gYmUgbm9uLWludHJ1c2l2ZSAocy50LiBp
dCB3b24ndCBjb25mdXNlIEVtYWNzJyBDKysgbW9kZSwKK2ZvciBleGFtcGxlKSBhbmQgY29uY2lz
ZSwgbWFraW5nIFB1bXAgY29kZSBpbnR1aXRpdmUgYW5kIGVhc3kgdG8KK21haW50YWluLgorCisj
IyBIaWdobGlnaHRzICMjCisKKyAgKiBUaGUgaW1wbGVtZW50YXRpb24gaXMgaW4gYSBzaW5nbGUg
UHl0aG9uIHNjcmlwdCBhbmQgdGh1cyB1bHRyYSBwb3J0YWJsZTogbm8gYnVpbGQgb3IgaW5zdGFs
bGF0aW9uIGlzIG5lZWRlZCBhbmQgaXQgd29ya3MgY3Jvc3MgcGxhdGZvcm1zLgorICAqIFB1bXAg
dHJpZXMgdG8gYmUgc21hcnQgd2l0aCByZXNwZWN0IHRvIFtHb29nbGUncyBzdHlsZSBndWlkZV0o
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS1zdHlsZWd1aWRlLyk6IGl0IGJyZWFrcyBs
b25nIGxpbmVzIChlYXN5IHRvIGhhdmUgd2hlbiB0aGV5IGFyZSBnZW5lcmF0ZWQpIGF0IGFjY2Vw
dGFibGUgcGxhY2VzIHRvIGZpdCB3aXRoaW4gODAgY29sdW1ucyBhbmQgaW5kZW50IHRoZSBjb250
aW51YXRpb24gbGluZXMgY29ycmVjdGx5LgorICAqIFRoZSBmb3JtYXQgaXMgaHVtYW4tcmVhZGFi
bGUgYW5kIG1vcmUgY29uY2lzZSB0aGFuIFhNTC4KKyAgKiBUaGUgZm9ybWF0IHdvcmtzIHJlbGF0
aXZlbHkgd2VsbCB3aXRoIEVtYWNzJyBDKysgbW9kZS4KKworIyMgRXhhbXBsZXMgIyMKKworVGhl
IGZvbGxvd2luZyBQdW1wIGNvZGUgKHdoZXJlIG1ldGEga2V5d29yZHMgc3RhcnQgd2l0aCBgJGAs
IGBbW2AgYW5kIGBdXWAgYXJlIG1ldGEgYnJhY2tldHMsIGFuZCBgJCRgIHN0YXJ0cyBhIG1ldGEg
Y29tbWVudCB0aGF0IGVuZHMgd2l0aCB0aGUgbGluZSk6CisKK2BgYAorJHZhciBuID0gMyAgICAg
JCQgRGVmaW5lcyBhIG1ldGEgdmFyaWFibGUgbi4KKyRyYW5nZSBpIDAuLm4gICQkIERlY2xhcmVz
IHRoZSByYW5nZSBvZiBtZXRhIGl0ZXJhdG9yIGkgKGluY2x1c2l2ZSkuCiskZm9yIGkgW1sKKyAg
ICAgICAgICAgICAgICQkIE1ldGEgbG9vcC4KKy8vIEZvbyRpIGRvZXMgYmxhaCBmb3IgJGktYXJ5
IHByZWRpY2F0ZXMuCiskcmFuZ2UgaiAxLi5pCit0ZW1wbGF0ZSA8c2l6ZV90IE4gJGZvciBqIFtb
LCB0eXBlbmFtZSBBJGpdXT4KK2NsYXNzIEZvbyRpIHsKKyRpZiBpID09IDAgW1sKKyAgYmxhaCBh
OworXV0gJGVsaWYgaSA8PSAyIFtbCisgIGJsYWggYjsKK11dICRlbHNlIFtbCisgIGJsYWggYzsK
K11dCit9OworCitdXQorYGBgCisKK3dpbGwgYmUgdHJhbnNsYXRlZCBieSB0aGUgUHVtcCBjb21w
aWxlciB0bzoKKworYGBgCisvLyBGb28wIGRvZXMgYmxhaCBmb3IgMC1hcnkgcHJlZGljYXRlcy4K
K3RlbXBsYXRlIDxzaXplX3QgTj4KK2NsYXNzIEZvbzAgeworICBibGFoIGE7Cit9OworCisvLyBG
b28xIGRvZXMgYmxhaCBmb3IgMS1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwg
dHlwZW5hbWUgQTE+CitjbGFzcyBGb28xIHsKKyAgYmxhaCBiOworfTsKKworLy8gRm9vMiBkb2Vz
IGJsYWggZm9yIDItYXJ5IHByZWRpY2F0ZXMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1l
IEExLCB0eXBlbmFtZSBBMj4KK2NsYXNzIEZvbzIgeworICBibGFoIGI7Cit9OworCisvLyBGb28z
IGRvZXMgYmxhaCBmb3IgMy1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlw
ZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMz4KK2NsYXNzIEZvbzMgeworICBibGFo
IGM7Cit9OworYGBgCisKK0luIGFub3RoZXIgZXhhbXBsZSwKKworYGBgCiskcmFuZ2UgaSAxLi5u
CitGdW5jKCRmb3IgaSArIFtbYSRpXV0pOworJCQgVGhlIHRleHQgYmV0d2VlbiBpIGFuZCBbWyBp
cyB0aGUgc2VwYXJhdG9yIGJldHdlZW4gaXRlcmF0aW9ucy4KK2BgYAorCit3aWxsIGdlbmVyYXRl
IG9uZSBvZiB0aGUgZm9sbG93aW5nIGxpbmVzICh3aXRob3V0IHRoZSBjb21tZW50cyksIGRlcGVu
ZGluZyBvbiB0aGUgdmFsdWUgb2YgYG5gOgorCitgYGAKK0Z1bmMoKTsgICAgICAgICAgICAgIC8v
IElmIG4gaXMgMC4KK0Z1bmMoYTEpOyAgICAgICAgICAgIC8vIElmIG4gaXMgMS4KK0Z1bmMoYTEg
KyBhMik7ICAgICAgIC8vIElmIG4gaXMgMi4KK0Z1bmMoYTEgKyBhMiArIGEzKTsgIC8vIElmIG4g
aXMgMy4KKy8vIEFuZCBzbyBvbi4uLgorYGBgCisKKyMjIENvbnN0cnVjdHMgIyMKKworV2Ugc3Vw
cG9ydCB0aGUgZm9sbG93aW5nIG1ldGEgcHJvZ3JhbW1pbmcgY29uc3RydWN0czoKKworfCBgJHZh
ciBpZCA9IGV4cGAgfCBEZWZpbmVzIGEgbmFtZWQgY29uc3RhbnQgdmFsdWUuIGAkaWRgIGlzIHZh
bGlkIHV0aWwgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBtZXRhIGxleGljYWwgYmxvY2suIHwKK3w6
LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18
Cit8ICRyYW5nZSBpZCBleHAuLmV4cCB8IFNldHMgdGhlIHJhbmdlIG9mIGFuIGl0ZXJhdGlvbiB2
YXJpYWJsZSwgd2hpY2ggY2FuIGJlIHJldXNlZCBpbiBtdWx0aXBsZSBsb29wcyBsYXRlci4gICAg
ICAgICAgfAorfCAkZm9yIGlkIHNlcCBbW2NvZGUgXSgubWQpXSB8IEl0ZXJhdGlvbi4gVGhlIHJh
bmdlIG9mIGBpZGAgbXVzdCBoYXZlIGJlZW4gZGVmaW5lZCBlYXJsaWVyLiBgJGlkYCBpcyB2YWxp
ZCBpbiBgY29kZWAuICAgICAgICAgfAorfCBgJCgkKWAgICAgICAgICAgfCBHZW5lcmF0ZXMgYSBz
aW5nbGUgYCRgIGNoYXJhY3Rlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYCRpZGAgICAgICAgICAgIHwgVmFsdWUgb2Yg
dGhlIG5hbWVkIGNvbnN0YW50IG9yIGl0ZXJhdGlvbiB2YXJpYWJsZS4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGAkKGV4cClgICAgICAgICB8IFZhbHVl
IG9mIHRoZSBleHByZXNzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgJGlmIGV4cCBbWyBjb2RlIF1d
IGVsc2VfYnJhbmNoYCB8IENvbmRpdGlvbmFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
fCBgW1sgY29kZSBdXWAgICAgfCBNZXRhIGxleGljYWwgYmxvY2suICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKK3wgYGNwcF9jb2RlYCAgICAgIHwgUmF3IEMrKyBjb2RlLiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8Cit8IGAkJCBjb21tZW50YCAgICB8IE1ldGEgY29tbWVudC4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorCisqKk5vdGU6KiogVG8gZ2l2ZSB0aGUgdXNlciBzb21lIGZyZWVkb20gaW4g
Zm9ybWF0dGluZyB0aGUgUHVtcCBzb3VyY2UKK2NvZGUsIFB1bXAgaWdub3JlcyBhIG5ldy1saW5l
IGNoYXJhY3RlciBpZiBpdCdzIHJpZ2h0IGFmdGVyIGAkZm9yIGZvb2AKK29yIG5leHQgdG8gYFtb
YCBvciBgXV1gLiBXaXRob3V0IHRoaXMgcnVsZSB5b3UnbGwgb2Z0ZW4gYmUgZm9yY2VkIHRvIHdy
aXRlCit2ZXJ5IGxvbmcgbGluZXMgdG8gZ2V0IHRoZSBkZXNpcmVkIG91dHB1dC4gVGhlcmVmb3Jl
IHNvbWV0aW1lcyB5b3UgbWF5CituZWVkIHRvIGluc2VydCBhbiBleHRyYSBuZXctbGluZSBpbiBz
dWNoIHBsYWNlcyBmb3IgYSBuZXctbGluZSB0byBzaG93Cit1cCBpbiB5b3VyIG91dHB1dC4KKwor
IyMgR3JhbW1hciAjIworCitgYGAKK2NvZGUgOjo9IGF0b21pY19jb2RlKgorYXRvbWljX2NvZGUg
Ojo9ICR2YXIgaWQgPSBleHAKKyAgICB8ICR2YXIgaWQgPSBbWyBjb2RlIF1dCisgICAgfCAkcmFu
Z2UgaWQgZXhwLi5leHAKKyAgICB8ICRmb3IgaWQgc2VwIFtbIGNvZGUgXV0KKyAgICB8ICQoJCkK
KyAgICB8ICRpZAorICAgIHwgJChleHApCisgICAgfCAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9i
cmFuY2gKKyAgICB8IFtbIGNvZGUgXV0KKyAgICB8IGNwcF9jb2RlCitzZXAgOjo9IGNwcF9jb2Rl
IHwgZW1wdHlfc3RyaW5nCitlbHNlX2JyYW5jaCA6Oj0gJGVsc2UgW1sgY29kZSBdXQorICAgIHwg
JGVsaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2gKKyAgICB8IGVtcHR5X3N0cmluZworZXhw
IDo6PSBzaW1wbGVfZXhwcmVzc2lvbl9pbl9QeXRob25fc3ludGF4CitgYGAKKworIyMgQ29kZSAj
IworCitZb3UgY2FuIGZpbmQgdGhlIHNvdXJjZSBjb2RlIG9mIFB1bXAgaW4gW3NjcmlwdHMvcHVt
cC5weV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvc291cmNlL2Jyb3dzZS90
cnVuay9zY3JpcHRzL3B1bXAucHkpLiBJdCBpcyBzdGlsbAordmVyeSB1bnBvbGlzaGVkIGFuZCBs
YWNrcyBhdXRvbWF0ZWQgdGVzdHMsIGFsdGhvdWdoIGl0IGhhcyBiZWVuCitzdWNjZXNzZnVsbHkg
dXNlZCBtYW55IHRpbWVzLiBJZiB5b3UgZmluZCBhIGNoYW5jZSB0byB1c2UgaXQgaW4geW91cgor
cHJvamVjdCwgcGxlYXNlIGxldCB1cyBrbm93IHdoYXQgeW91IHRoaW5rISAgV2UgYWxzbyB3ZWxj
b21lIGhlbHAgb24KK2ltcHJvdmluZyBQdW1wLgorCisjIyBSZWFsIEV4YW1wbGVzICMjCisKK1lv
dSBjYW4gZmluZCByZWFsLXdvcmxkIGFwcGxpY2F0aW9ucyBvZiBQdW1wIGluIFtHb29nbGUgVGVz
dF0oaHR0cDovL3d3dy5nb29nbGUuY29tL2NvZGVzZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3Bh
Y2thZ2UlM0FodHRwJTNBJTJGJTJGZ29vZ2xldGVzdFwuZ29vZ2xlY29kZVwuY29tKSBhbmQgW0dv
b2dsZSBNb2NrXShodHRwOi8vd3d3Lmdvb2dsZS5jb20vY29kZXNlYXJjaD9xPWZpbGUlM0FcLnB1
bXAlMjQrcGFja2FnZSUzQWh0dHAlM0ElMkYlMkZnb29nbGVtb2NrXC5nb29nbGVjb2RlXC5jb20p
LiAgVGhlIHNvdXJjZSBmaWxlIGBmb28uaC5wdW1wYCBnZW5lcmF0ZXMgYGZvby5oYC4KKworIyMg
VGlwcyAjIworCisgICogSWYgYSBtZXRhIHZhcmlhYmxlIGlzIGZvbGxvd2VkIGJ5IGEgbGV0dGVy
IG9yIGRpZ2l0LCB5b3UgY2FuIHNlcGFyYXRlIHRoZW0gdXNpbmcgYFtbXV1gLCB3aGljaCBpbnNl
cnRzIGFuIGVtcHR5IHN0cmluZy4gRm9yIGV4YW1wbGUgYEZvbyRqW1tdXUhlbHBlcmAgZ2VuZXJh
dGUgYEZvbzFIZWxwZXJgIHdoZW4gYGpgIGlzIDEuCisgICogVG8gYXZvaWQgZXh0cmEtbG9uZyBQ
dW1wIHNvdXJjZSBsaW5lcywgeW91IGNhbiBicmVhayBhIGxpbmUgYW55d2hlcmUgeW91IHdhbnQg
YnkgaW5zZXJ0aW5nIGBbW11dYCBmb2xsb3dlZCBieSBhIG5ldyBsaW5lLiBTaW5jZSBhbnkgbmV3
LWxpbmUgY2hhcmFjdGVyIG5leHQgdG8gYFtbYCBvciBgXV1gIGlzIGlnbm9yZWQsIHRoZSBnZW5l
cmF0ZWQgY29kZSB3b24ndCBjb250YWluIHRoaXMgbmV3IGxpbmUuClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV81
X1hjb2RlR3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzVfWGNvZGVH
dWlkZS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iZjI0YmY1MWJmYzQ1NDEyZjY1OGJkZGQ1M2EzMzJlMTQ5ZDc3
MzA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV81
X1hjb2RlR3VpZGUubWQKQEAgLTAsMCArMSw5MyBAQAorCisKK1RoaXMgZ3VpZGUgd2lsbCBleHBs
YWluIGhvdyB0byB1c2UgdGhlIEdvb2dsZSBUZXN0aW5nIEZyYW1ld29yayBpbiB5b3VyIFhjb2Rl
IHByb2plY3RzIG9uIE1hYyBPUyBYLiBUaGlzIHR1dG9yaWFsIGJlZ2lucyBieSBxdWlja2x5IGV4
cGxhaW5pbmcgd2hhdCB0byBkbyBmb3IgZXhwZXJpZW5jZWQgdXNlcnMuIEFmdGVyIHRoZSBxdWlj
ayBzdGFydCwgdGhlIGd1aWRlIGdvZXMgcHJvdmlkZXMgYWRkaXRpb25hbCBleHBsYW5hdGlvbiBh
Ym91dCBlYWNoIHN0ZXAuCisKKyMgUXVpY2sgU3RhcnQgIworCitIZXJlIGlzIHRoZSBxdWljayBn
dWlkZSBmb3IgdXNpbmcgR29vZ2xlIFRlc3QgaW4geW91ciBYY29kZSBwcm9qZWN0LgorCisgIDEu
IERvd25sb2FkIHRoZSBzb3VyY2UgZnJvbSB0aGUgW3dlYnNpdGVdKGh0dHA6Ly9jb2RlLmdvb2ds
ZS5jb20vcC9nb29nbGV0ZXN0KSB1c2luZyB0aGlzIGNvbW1hbmQ6IGBzdm4gY2hlY2tvdXQgaHR0
cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rLyBnb29nbGV0ZXN0LXJlYWQt
b25seWAKKyAgMS4gT3BlbiB1cCB0aGUgYGd0ZXN0Lnhjb2RlcHJvamAgaW4gdGhlIGBnb29nbGV0
ZXN0LXJlYWQtb25seS94Y29kZS9gIGRpcmVjdG9yeSBhbmQgYnVpbGQgdGhlIGd0ZXN0LmZyYW1l
d29yay4KKyAgMS4gQ3JlYXRlIGEgbmV3ICJTaGVsbCBUb29sIiB0YXJnZXQgaW4geW91ciBYY29k
ZSBwcm9qZWN0IGNhbGxlZCBzb21ldGhpbmcgbGlrZSAiVW5pdFRlc3RzIgorICAxLiBBZGQgdGhl
IGd0ZXN0LmZyYW1ld29yayB0byB5b3VyIHByb2plY3QgYW5kIGFkZCBpdCB0byB0aGUgIkxpbmsg
QmluYXJ5IHdpdGggTGlicmFyaWVzIiBidWlsZCBwaGFzZSBvZiAiVW5pdFRlc3RzIgorICAxLiBB
ZGQgeW91ciB1bml0IHRlc3Qgc291cmNlIGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJjZXMiIGJ1
aWxkIHBoYXNlIG9mICJVbml0VGVzdHMiCisgIDEuIEVkaXQgdGhlICJVbml0VGVzdHMiIGV4ZWN1
dGFibGUgYW5kIGFkZCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lZCAiRFlMRFxfRlJBTUVX
T1JLXF9QQVRIIiB3aXRoIGEgdmFsdWUgZXF1YWwgdG8gdGhlIHBhdGggdG8gdGhlIGZyYW1ld29y
ayBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsgcmVsYXRpdmUgdG8gdGhlIGNvbXBpbGVk
IGV4ZWN1dGFibGUuCisgIDEuIEJ1aWxkIGFuZCBHbworCitUaGUgZm9sbG93aW5nIHNlY3Rpb25z
IGZ1cnRoZXIgZXhwbGFpbiBlYWNoIG9mIHRoZSBzdGVwcyBsaXN0ZWQgYWJvdmUgaW4gZGVwdGgs
IGRlc2NyaWJpbmcgaW4gbW9yZSBkZXRhaWwgaG93IHRvIGNvbXBsZXRlIGl0IGluY2x1ZGluZyBz
b21lIHZhcmlhdGlvbnMuCisKKyMgR2V0IHRoZSBTb3VyY2UgIworCitDdXJyZW50bHksIHRoZSBn
dGVzdC5mcmFtZXdvcmsgZGlzY3Vzc2VkIGhlcmUgaXNuJ3QgYXZhaWxhYmxlIGluIGEgdGFnZ2Vk
IHJlbGVhc2Ugb2YgR29vZ2xlIFRlc3QsIGl0IGlzIG9ubHkgYXZhaWxhYmxlIGluIHRoZSB0cnVu
ay4gQXMgZXhwbGFpbmVkIGF0IHRoZSBHb29nbGUgVGVzdCBbc2l0ZV0oaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wL2dvb2dsZXRlc3Qvc291cmNlL2NoZWNrb3V0Ij5zdm4pLCB5b3UgY2FuIGdldCB0
aGUgY29kZSBmcm9tIGFub255bW91cyBTVk4gd2l0aCB0aGlzIGNvbW1hbmQ6CisKK2BgYAorc3Zu
IGNoZWNrb3V0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay8gZ29v
Z2xldGVzdC1yZWFkLW9ubHkKK2BgYAorCitBbHRlcm5hdGl2ZWx5LCBpZiB5b3UgYXJlIHdvcmtp
bmcgd2l0aCBTdWJ2ZXJzaW9uIGluIHlvdXIgb3duIGNvZGUgYmFzZSwgeW91IGNhbiBhZGQgR29v
Z2xlIFRlc3QgYXMgYW4gZXh0ZXJuYWwgZGVwZW5kZW5jeSB0byB5b3VyIG93biBTdWJ2ZXJzaW9u
IHJlcG9zaXRvcnkuIEJ5IGZvbGxvd2luZyB0aGlzIGFwcHJvYWNoLCBldmVyeW9uZSB0aGF0IGNo
ZWNrcyBvdXQgeW91ciBzdm4gcmVwb3NpdG9yeSB3aWxsIGFsc28gcmVjZWl2ZSBhIGNvcHkgb2Yg
R29vZ2xlIFRlc3QgKGEgc3BlY2lmaWMgdmVyc2lvbiwgaWYgeW91IHdpc2gpIHdpdGhvdXQgaGF2
aW5nIHRvIGNoZWNrIGl0IG91dCBleHBsaWNpdGx5LiBUaGlzIG1ha2VzIHRoZSBzZXQgdXAgb2Yg
eW91ciBwcm9qZWN0IHNpbXBsZXIgYW5kIHJlZHVjZXMgdGhlIGNvcGllZCBjb2RlIGluIHRoZSBy
ZXBvc2l0b3J5LgorCitUbyB1c2UgYHN2bjpleHRlcm5hbHNgLCBkZWNpZGUgd2hlcmUgeW91IHdv
dWxkIGxpa2UgdG8gaGF2ZSB0aGUgZXh0ZXJuYWwgc291cmNlIHJlc2lkZS4gWW91IG1pZ2h0IGNo
b29zZSB0byBwdXQgdGhlIGV4dGVybmFsIHNvdXJjZSBpbnNpZGUgdGhlIHRydW5rLCBiZWNhdXNl
IHlvdSB3YW50IGl0IHRvIGJlIHBhcnQgb2YgdGhlIGJyYW5jaCB3aGVuIHlvdSBtYWtlIGEgcmVs
ZWFzZS4gSG93ZXZlciwga2VlcGluZyBpdCBvdXRzaWRlIHRoZSB0cnVuayBpbiBhIHZlcnNpb24t
dGFnZ2VkIGRpcmVjdG9yeSBjYWxsZWQgc29tZXRoaW5nIGxpa2UgYHRoaXJkLXBhcnR5L2dvb2ds
ZXRlc3QvMS4wLjFgLCBpcyBhbm90aGVyIG9wdGlvbi4gT25jZSB0aGUgbG9jYXRpb24gaXMgZXN0
YWJsaXNoZWQsIHVzZSBgc3ZuIHByb3BlZGl0IHN2bjpleHRlcm5hbHMgX2RpcmVjdG9yeV9gIHRv
IHNldCB0aGUgc3ZuOmV4dGVybmFscyBwcm9wZXJ0eSBvbiBhIGRpcmVjdG9yeSBpbiB5b3VyIHJl
cG9zaXRvcnkuIFRoaXMgZGlyZWN0b3J5IHdvbid0IGNvbnRhaW4gdGhlIGNvZGUsIGJ1dCBiZSBp
dHMgdmVyc2lvbmVkIHBhcmVudCBkaXJlY3RvcnkuCisKK1RoZSBjb21tYW5kIGBzdm4gcHJvcGVk
aXRgIHdpbGwgYnJpbmcgdXAgeW91ciBTdWJ2ZXJzaW9uIGVkaXRvciwgbWFraW5nIGVkaXRpbmcg
dGhlIGxvbmcsIChwb3RlbnRpYWxseSBtdWx0aS1saW5lKSBwcm9wZXJ0eSBzaW1wbGVyLiBUaGlz
IHNhbWUgbWV0aG9kIGNhbiBiZSB1c2VkIHRvIGNoZWNrIG91dCBhIHRhZ2dlZCBicmFuY2gsIGJ5
IHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBVUkwgKGUuZy4gYGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2ds
ZWNvZGUuY29tL3N2bi90YWdzL3JlbGVhc2UtMS4wLjFgKS4gQWRkaXRpb25hbGx5LCB0aGUgc3Zu
OmV4dGVybmFscyBwcm9wZXJ0eSBhbGxvd3MgdGhlIHNwZWNpZmljYXRpb24gb2YgYSBwYXJ0aWN1
bGFyIHJldmlzaW9uIG9mIHRoZSB0cnVuayB3aXRoIHRoZSBgLXJfIyNfYCBvcHRpb24gKGUuZy4g
YGV4dGVybmFscy9zcmMvZ29vZ2xldGVzdCAtcjYwIGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNv
ZGUuY29tL3N2bi90cnVua2ApLgorCitIZXJlIGlzIGFuIGV4YW1wbGUgb2YgdXNpbmcgdGhlIHN2
bjpleHRlcm5hbHMgcHJvcGVydGllcyBvbiBhIHRydW5rIChyZWFkIHZpYSBgc3ZuIHByb3BnZXRg
KSBvZiBhIHByb2plY3QuIFRoaXMgdmFsdWUgY2hlY2tzIG91dCBhIGNvcHkgb2YgR29vZ2xlIFRl
c3QgaW50byB0aGUgYHRydW5rL2V4dGVybmFscy9zcmMvZ29vZ2xldGVzdC9gIGRpcmVjdG9yeS4K
KworYGBgCitbQ29tcHV0ZXI6c3ZuXSB1c2VyJCBzdm4gcHJvcGdldCBzdm46ZXh0ZXJuYWxzIHRy
dW5rCitleHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QgaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29k
ZS5jb20vc3ZuL3RydW5rCitgYGAKKworIyBBZGQgdGhlIEZyYW1ld29yayB0byBZb3VyIFByb2pl
Y3QgIworCitUaGUgbmV4dCBzdGVwIGlzIHRvIGJ1aWxkIGFuZCBhZGQgdGhlIGd0ZXN0LmZyYW1l
d29yayB0byB5b3VyIG93biBwcm9qZWN0LiBUaGlzIGd1aWRlIGRlc2NyaWJlcyB0d28gY29tbW9u
IHdheXMgYmVsb3cuCisKKyAgKiAqKk9wdGlvbiAxKiogLS0tIFRoZSBzaW1wbGVzdCB3YXkgdG8g
YWRkIEdvb2dsZSBUZXN0IHRvIHlvdXIgb3duIHByb2plY3QsIGlzIHRvIG9wZW4gZ3Rlc3QueGNv
ZGVwcm9qIChmb3VuZCBpbiB0aGUgeGNvZGUvIGRpcmVjdG9yeSBvZiB0aGUgR29vZ2xlIFRlc3Qg
dHJ1bmspIGFuZCBidWlsZCB0aGUgZnJhbWV3b3JrIG1hbnVhbGx5LiBUaGVuLCBhZGQgdGhlIGJ1
aWx0IGZyYW1ld29yayBpbnRvIHlvdXIgcHJvamVjdCB1c2luZyB0aGUgIkFkZC0+RXhpc3Rpbmcg
RnJhbWV3b3JrLi4uIiBmcm9tIHRoZSBjb250ZXh0IG1lbnUgb3IgIlByb2plY3QtPkFkZC4uLiIg
ZnJvbSB0aGUgbWFpbiBtZW51LiBUaGUgZ3Rlc3QuZnJhbWV3b3JrIGlzIHJlbG9jYXRhYmxlIGFu
ZCBjb250YWlucyB0aGUgaGVhZGVycyBhbmQgb2JqZWN0IGNvZGUgdGhhdCB5b3UnbGwgbmVlZCB0
byBtYWtlIHRlc3RzLiBUaGlzIG1ldGhvZCByZXF1aXJlcyByZWJ1aWxkaW5nIGV2ZXJ5IHRpbWUg
eW91IHVwZ3JhZGUgR29vZ2xlIFRlc3QgaW4geW91ciBwcm9qZWN0LgorICAqICoqT3B0aW9uIDIq
KiAtLS0gSWYgeW91IGFyZSBnb2luZyB0byBiZSBsaXZpbmcgb2ZmIHRoZSB0cnVuayBvZiBHb29n
bGUgVGVzdCwgaW5jb3Jwb3JhdGluZyBpdHMgbGF0ZXN0IGZlYXR1cmVzIGludG8geW91ciB1bml0
IHRlc3RzIChvciBhcmUgYSBHb29nbGUgVGVzdCBkZXZlbG9wZXIgeW91cnNlbGYpLiBZb3UnbGwg
d2FudCB0byByZWJ1aWxkIHRoZSBmcmFtZXdvcmsgZXZlcnkgdGltZSB0aGUgc291cmNlIHVwZGF0
ZXMuIHRvIGRvIHRoaXMsIHlvdSdsbCBuZWVkIHRvIGFkZCB0aGUgZ3Rlc3QueGNvZGVwcm9qIGZp
bGUsIG5vdCB0aGUgZnJhbWV3b3JrIGl0c2VsZiwgdG8geW91ciBvd24gWGNvZGUgcHJvamVjdC4g
VGhlbiwgZnJvbSB0aGUgYnVpbGQgcHJvZHVjdHMgdGhhdCBhcmUgcmV2ZWFsZWQgYnkgdGhlIHBy
b2plY3QncyBkaXNjbG9zdXJlIHRyaWFuZ2xlLCB5b3UgY2FuIGZpbmQgdGhlIGd0ZXN0LmZyYW1l
d29yaywgd2hpY2ggY2FuIGJlIGFkZGVkIHRvIHlvdXIgdGFyZ2V0cyAoZGlzY3Vzc2VkIGJlbG93
KS4KKworIyBNYWtlIGEgVGVzdCBUYXJnZXQgIworCitUbyBzdGFydCB3cml0aW5nIHRlc3RzLCBt
YWtlIGEgbmV3ICJTaGVsbCBUb29sIiB0YXJnZXQuIFRoaXMgdGFyZ2V0IHRlbXBsYXRlIGlzIGF2
YWlsYWJsZSB1bmRlciBCU0QsIENvY29hLCBvciBDYXJib24uIEFkZCB5b3VyIHVuaXQgdGVzdCBz
b3VyY2UgY29kZSB0byB0aGUgIkNvbXBpbGUgU291cmNlcyIgYnVpbGQgcGhhc2Ugb2YgdGhlIHRh
cmdldC4KKworTmV4dCwgeW91J2xsIHdhbnQgdG8gYWRkIGd0ZXN0LmZyYW1ld29yayBpbiB0d28g
ZGlmZmVyZW50IHdheXMsIGRlcGVuZGluZyB1cG9uIHdoaWNoIG9wdGlvbiB5b3UgY2hvc2UgYWJv
dmUuCisKKyAgKiAqKk9wdGlvbiAxKiogLS0tIER1cmluZyBjb21waWxhdGlvbiwgWGNvZGUgd2ls
bCBuZWVkIHRvIGtub3cgdGhhdCB5b3UgYXJlIGxpbmtpbmcgYWdhaW5zdCB0aGUgZ3Rlc3QuZnJh
bWV3b3JrLiBBZGQgdGhlIGd0ZXN0LmZyYW1ld29yayB0byB0aGUgIkxpbmsgQmluYXJ5IHdpdGgg
TGlicmFyaWVzIiBidWlsZCBwaGFzZSBvZiB5b3VyIHRlc3QgdGFyZ2V0LiBUaGlzIHdpbGwgaW5j
bHVkZSB0aGUgR29vZ2xlIFRlc3QgaGVhZGVycyBpbiB5b3VyIGhlYWRlciBzZWFyY2ggcGF0aCwg
YW5kIHdpbGwgdGVsbCB0aGUgbGlua2VyIHdoZXJlIHRvIGZpbmQgdGhlIGxpYnJhcnkuCisgICog
KipPcHRpb24gMioqIC0tLSBJZiB5b3VyIHdvcmtpbmcgb3V0IG9mIHRoZSB0cnVuaywgeW91J2xs
IGFsc28gd2FudCB0byBhZGQgZ3Rlc3QuZnJhbWV3b3JrIHRvIHlvdXIgIkxpbmsgQmluYXJ5IHdp
dGggTGlicmFyaWVzIiBidWlsZCBwaGFzZSBvZiB5b3VyIHRlc3QgdGFyZ2V0LiBJbiBhZGRpdGlv
biwgeW91J2xsICB3YW50IHRvIGFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIGFzIGEgZGVwZW5kZW5j
eSB0byB5b3VyIHVuaXQgdGVzdCB0YXJnZXQuIFRoaXMgd2F5LCBYY29kZSB3aWxsIG1ha2Ugc3Vy
ZSB0aGF0IGd0ZXN0LmZyYW1ld29yayBpcyB1cCB0byBkYXRlLCBldmVyeSB0aW1lIHlvdXIgYnVp
bGQgeW91ciB0YXJnZXQuIEZpbmFsbHksIGlmIHlvdSBkb24ndCBzaGFyZSBidWlsZCBkaXJlY3Rv
cmllcyB3aXRoIEdvb2dsZSBUZXN0LCB5b3UnbGwgaGF2ZSB0byBjb3B5IHRoZSBndGVzdC5mcmFt
ZXdvcmsgaW50byB5b3VyIG93biBidWlsZCBwcm9kdWN0cyBkaXJlY3RvcnkgdXNpbmcgYSAiUnVu
IFNjcmlwdCIgYnVpbGQgcGhhc2UuCisKKyMgU2V0IFVwIHRoZSBFeGVjdXRhYmxlIFJ1biBFbnZp
cm9ubWVudCAjCisKK1NpbmNlIHRoZSB1bml0IHRlc3QgZXhlY3V0YWJsZSBpcyBhIHNoZWxsIHRv
b2wsIGl0IGRvZXNuJ3QgaGF2ZSBhIGJ1bmRsZSB3aXRoIGEgYENvbnRlbnRzL0ZyYW1ld29ya3Ng
IGRpcmVjdG9yeSwgaW4gd2hpY2ggdG8gcGxhY2UgZ3Rlc3QuZnJhbWV3b3JrLiBJbnN0ZWFkLCB0
aGUgZHluYW1pYyBsaW5rZXIgbXVzdCBiZSB0b2xkIGF0IHJ1bnRpbWUgdG8gc2VhcmNoIGZvciB0
aGUgZnJhbWV3b3JrIGluIGFub3RoZXIgbG9jYXRpb24uIFRoaXMgY2FuIGJlIGFjY29tcGxpc2hl
ZCBieSBzZXR0aW5nIHRoZSAiRFlMRFxfRlJBTUVXT1JLXF9QQVRIIiBlbnZpcm9ubWVudCB2YXJp
YWJsZSBpbiB0aGUgIkVkaXQgQWN0aXZlIEV4ZWN1dGFibGUgLi4uIiBBcmd1bWVudHMgdGFiLCB1
bmRlciAiVmFyaWFibGVzIHRvIGJlIHNldCBpbiB0aGUgZW52aXJvbm1lbnQ6Ii4gVGhlIHBhdGgg
Zm9yIHRoaXMgdmFsdWUgaXMgdGhlIHBhdGggKHJlbGF0aXZlIG9yIGFic29sdXRlKSBvZiB0aGUg
ZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGd0ZXN0LmZyYW1ld29yay4KKworSWYgeW91IGhhdmVu
J3Qgc2V0IHVwIHRoZSBEWUxEXF9GUkFNRVdPUktcX1BBVEgsIGNvcnJlY3RseSwgeW91IG1pZ2h0
IGdldCBhIG1lc3NhZ2UgbGlrZSB0aGlzOgorCitgYGAKK1tTZXNzaW9uIHN0YXJ0ZWQgYXQgMjAw
OC0wOC0xNSAwNjoyMzo1NyAtMDYwMC5dCisgIGR5bGQ6IExpYnJhcnkgbm90IGxvYWRlZDogQGxv
YWRlcl9wYXRoLy4uL0ZyYW1ld29ya3MvZ3Rlc3QuZnJhbWV3b3JrL1ZlcnNpb25zL0EvZ3Rlc3QK
KyAgICBSZWZlcmVuY2VkIGZyb206IC9Vc2Vycy91c2VybmFtZS9Eb2N1bWVudHMvU2FuZGJveC9n
dGVzdFNhbXBsZS9idWlsZC9EZWJ1Zy9XaWRnZXRGcmFtZXdvcmtUZXN0CisgICAgUmVhc29uOiBp
bWFnZSBub3QgZm91bmQKK2BgYAorCitUbyBjb3JyZWN0IHRoaXMgcHJvYmxlbSwgZ290IHRvIHRo
ZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZXhlY3V0YWJsZSBuYW1lZCBpbiAiUmVmZXJlbmNl
ZCBmcm9tOiIgdmFsdWUgaW4gdGhlIGVycm9yIG1lc3NhZ2UgYWJvdmUuIFRoZW4sIHdpdGggdGhl
IHRlcm1pbmFsIGluIHRoaXMgbG9jYXRpb24sIGZpbmQgdGhlIHJlbGF0aXZlIHBhdGggdG8gdGhl
IGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsuIFRoYXQgaXMgdGhlIHZh
bHVlIHlvdSdsbCBuZWVkIHRvIHNldCBhcyB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRILgorCisj
IEJ1aWxkIGFuZCBHbyAjCisKK05vdywgd2hlbiB5b3UgY2xpY2sgIkJ1aWxkIGFuZCBHbyIsIHRo
ZSB0ZXN0IHdpbGwgYmUgZXhlY3V0ZWQuIER1bXBpbmcgb3V0IHNvbWV0aGluZyBsaWtlIHRoaXM6
CisKK2BgYAorW1Nlc3Npb24gc3RhcnRlZCBhdCAyMDA4LTA4LTA2IDA2OjM2OjEzIC0wNjAwLl0K
K1s9PT09PT09PT09XSBSdW5uaW5nIDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZS4KK1stLS0tLS0t
LS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCitbLS0tLS0tLS0tLV0gMiB0ZXN0
cyBmcm9tIFdpZGdldEluaXRpYWxpemVyVGVzdAorWyBSVU4gICAgICBdIFdpZGdldEluaXRpYWxp
emVyVGVzdC5UZXN0Q29uc3RydWN0b3IKK1sgICAgICAgT0sgXSBXaWRnZXRJbml0aWFsaXplclRl
c3QuVGVzdENvbnN0cnVjdG9yCitbIFJVTiAgICAgIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRl
c3RDb252ZXJzaW9uCitbICAgICAgIE9LIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb252
ZXJzaW9uCitbLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCitb
PT09PT09PT09PV0gMiB0ZXN0cyBmcm9tIDEgdGVzdCBjYXNlIHJhbi4KK1sgIFBBU1NFRCAgXSAy
IHRlc3RzLgorCitUaGUgRGVidWdnZXIgaGFzIGV4aXRlZCB3aXRoIHN0YXR1cyAwLiAgCitgYGAK
KworIyBTdW1tYXJ5ICMKKworVW5pdCB0ZXN0aW5nIGlzIGEgdmFsdWFibGUgd2F5IHRvIGVuc3Vy
ZSB5b3VyIGRhdGEgbW9kZWwgc3RheXMgdmFsaWQgZXZlbiBkdXJpbmcgcmFwaWQgZGV2ZWxvcG1l
bnQgb3IgcmVmYWN0b3JpbmcuIFRoZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaXMgYSBncmVh
dCB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIGZvciBDIGFuZCBDKysgd2hpY2ggaW50ZWdyYXRlcyB3
ZWxsIHdpdGggYW4gWGNvZGUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9W
MV82X0FkdmFuY2VkR3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzZf
QWR2YW5jZWRHdWlkZS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODg2NGIxNjY3YzFjNDA3MzMwMDlkMWExNzBj
YzFhYmIxMDA4Nzg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
ZG9jcy9WMV82X0FkdmFuY2VkR3VpZGUubWQKQEAgLTAsMCArMSwyMTc4IEBACisKKworTm93IHRo
YXQgeW91IGhhdmUgcmVhZCBbUHJpbWVyXShWMV82X1ByaW1lci5tZCkgYW5kIGxlYXJuZWQgaG93
IHRvIHdyaXRlIHRlc3RzCit1c2luZyBHb29nbGUgVGVzdCwgaXQncyB0aW1lIHRvIGxlYXJuIHNv
bWUgbmV3IHRyaWNrcy4gVGhpcyBkb2N1bWVudAord2lsbCBzaG93IHlvdSBtb3JlIGFzc2VydGlv
bnMgYXMgd2VsbCBhcyBob3cgdG8gY29uc3RydWN0IGNvbXBsZXgKK2ZhaWx1cmUgbWVzc2FnZXMs
IHByb3BhZ2F0ZSBmYXRhbCBmYWlsdXJlcywgcmV1c2UgYW5kIHNwZWVkIHVwIHlvdXIKK3Rlc3Qg
Zml4dHVyZXMsIGFuZCB1c2UgdmFyaW91cyBmbGFncyB3aXRoIHlvdXIgdGVzdHMuCisKKyMgTW9y
ZSBBc3NlcnRpb25zICMKKworVGhpcyBzZWN0aW9uIGNvdmVycyBzb21lIGxlc3MgZnJlcXVlbnRs
eSB1c2VkLCBidXQgc3RpbGwgc2lnbmlmaWNhbnQsCithc3NlcnRpb25zLgorCisjIyBFeHBsaWNp
dCBTdWNjZXNzIGFuZCBGYWlsdXJlICMjCisKK1RoZXNlIHRocmVlIGFzc2VydGlvbnMgZG8gbm90
IGFjdHVhbGx5IHRlc3QgYSB2YWx1ZSBvciBleHByZXNzaW9uLiBJbnN0ZWFkLAordGhleSBnZW5l
cmF0ZSBhIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBkaXJlY3RseS4gTGlrZSB0aGUgbWFjcm9zIHRoYXQg
YWN0dWFsbHkKK3BlcmZvcm0gYSB0ZXN0LCB5b3UgbWF5IHN0cmVhbSBhIGN1c3RvbSBmYWlsdXJl
IG1lc3NhZ2UgaW50byB0aGUgdGhlbS4KKworfCBgU1VDQ0VFRCgpO2AgfAorfDotLS0tLS0tLS0t
LS0tfAorCitHZW5lcmF0ZXMgYSBzdWNjZXNzLiBUaGlzIGRvZXMgTk9UIG1ha2UgdGhlIG92ZXJh
bGwgdGVzdCBzdWNjZWVkLiBBIHRlc3QgaXMKK2NvbnNpZGVyZWQgc3VjY2Vzc2Z1bCBvbmx5IGlm
IG5vbmUgb2YgaXRzIGFzc2VydGlvbnMgZmFpbCBkdXJpbmcgaXRzIGV4ZWN1dGlvbi4KKworTm90
ZTogYFNVQ0NFRUQoKWAgaXMgcHVyZWx5IGRvY3VtZW50YXJ5IGFuZCBjdXJyZW50bHkgZG9lc24n
dCBnZW5lcmF0ZSBhbnkKK3VzZXItdmlzaWJsZSBvdXRwdXQuIEhvd2V2ZXIsIHdlIG1heSBhZGQg
YFNVQ0NFRUQoKWAgbWVzc2FnZXMgdG8gR29vZ2xlIFRlc3Qncworb3V0cHV0IGluIHRoZSBmdXR1
cmUuCisKK3wgYEZBSUwoKTtgICB8IGBBRERfRkFJTFVSRSgpO2AgfCBgQUREX0ZBSUxVUkVfQVQo
ImBfZmlsZVxfcGF0aF9gIiwgYF9saW5lXF9udW1iZXJfYCk7YCB8Cit8Oi0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfAorCitgRkFJTCgpYCBnZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlLCB3
aGlsZSBgQUREX0ZBSUxVUkUoKWAgYW5kIGBBRERfRkFJTFVSRV9BVCgpYCBnZW5lcmF0ZSBhIG5v
bmZhdGFsCitmYWlsdXJlLiBUaGVzZSBhcmUgdXNlZnVsIHdoZW4gY29udHJvbCBmbG93LCByYXRo
ZXIgdGhhbiBhIEJvb2xlYW4gZXhwcmVzc2lvbiwKK2RldGVyZW1pbmVzIHRoZSB0ZXN0J3Mgc3Vj
Y2VzcyBvciBmYWlsdXJlLiBGb3IgZXhhbXBsZSwgeW91IG1pZ2h0IHdhbnQgdG8gd3JpdGUKK3Nv
bWV0aGluZyBsaWtlOgorCitgYGAKK3N3aXRjaChleHByZXNzaW9uKSB7CisgIGNhc2UgMTogLi4u
IHNvbWUgY2hlY2tzIC4uLgorICBjYXNlIDI6IC4uLiBzb21lIG90aGVyIGNoZWNrcworICAuLi4K
KyAgZGVmYXVsdDogRkFJTCgpIDw8ICJXZSBzaG91bGRuJ3QgZ2V0IGhlcmUuIjsKK30KK2BgYAor
CitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgRXhjZXB0aW9uIEFz
c2VydGlvbnMgIyMKKworVGhlc2UgYXJlIGZvciB2ZXJpZnlpbmcgdGhhdCBhIHBpZWNlIG9mIGNv
ZGUgdGhyb3dzIChvciBkb2VzIG5vdAordGhyb3cpIGFuIGV4Y2VwdGlvbiBvZiB0aGUgZ2l2ZW4g
dHlwZToKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8
ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9USFJPVyhgX3N0YXRlbWVudF8sIF9l
eGNlcHRpb25cX3R5cGVfYCk7YCAgfCBgRVhQRUNUX1RIUk9XKGBfc3RhdGVtZW50XywgX2V4Y2Vw
dGlvblxfdHlwZV9gKTtgICB8IF9zdGF0ZW1lbnRfIHRocm93cyBhbiBleGNlcHRpb24gb2YgdGhl
IGdpdmVuIHR5cGUgIHwKK3wgYEFTU0VSVF9BTllfVEhST1coYF9zdGF0ZW1lbnRfYCk7YCAgICAg
ICAgICAgICAgICB8IGBFWFBFQ1RfQU5ZX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAg
ICAgICAgfCBfc3RhdGVtZW50XyB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIGFueSB0eXBlICAgICAg
ICB8Cit8IGBBU1NFUlRfTk9fVEhST1coYF9zdGF0ZW1lbnRfYCk7YCAgICAgICAgICAgICAgICAg
fCBgRVhQRUNUX05PX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAgIHwgX3N0
YXRlbWVudF8gZG9lc24ndCB0aHJvdyBhbnkgZXhjZXB0aW9uICAgICAgICAgICAgfAorCitFeGFt
cGxlczoKKworYGBgCitBU1NFUlRfVEhST1coRm9vKDUpLCBiYXJfZXhjZXB0aW9uKTsKKworRVhQ
RUNUX05PX1RIUk9XKHsKKyAgaW50IG4gPSA1OworICBCYXIoJm4pOworfSk7CitgYGAKKworX0F2
YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4xLjAuCisK
KyMjIFByZWRpY2F0ZSBBc3NlcnRpb25zIGZvciBCZXR0ZXIgRXJyb3IgTWVzc2FnZXMgIyMKKwor
RXZlbiB0aG91Z2ggR29vZ2xlIFRlc3QgaGFzIGEgcmljaCBzZXQgb2YgYXNzZXJ0aW9ucywgdGhl
eSBjYW4gbmV2ZXIgYmUKK2NvbXBsZXRlLCBhcyBpdCdzIGltcG9zc2libGUgKG5vciBhIGdvb2Qg
aWRlYSkgdG8gYW50aWNpcGF0ZSBhbGwgdGhlIHNjZW5hcmlvcworYSB1c2VyIG1pZ2h0IHJ1biBp
bnRvLiBUaGVyZWZvcmUsIHNvbWV0aW1lcyBhIHVzZXIgaGFzIHRvIHVzZSBgRVhQRUNUX1RSVUUo
KWAKK3RvIGNoZWNrIGEgY29tcGxleCBleHByZXNzaW9uLCBmb3IgbGFjayBvZiBhIGJldHRlciBt
YWNyby4gVGhpcyBoYXMgdGhlIHByb2JsZW0KK29mIG5vdCBzaG93aW5nIHlvdSB0aGUgdmFsdWVz
IG9mIHRoZSBwYXJ0cyBvZiB0aGUgZXhwcmVzc2lvbiwgbWFraW5nIGl0IGhhcmQgdG8KK3VuZGVy
c3RhbmQgd2hhdCB3ZW50IHdyb25nLiBBcyBhIHdvcmthcm91bmQsIHNvbWUgdXNlcnMgY2hvb3Nl
IHRvIGNvbnN0cnVjdCB0aGUKK2ZhaWx1cmUgbWVzc2FnZSBieSB0aGVtc2VsdmVzLCBzdHJlYW1p
bmcgaXQgaW50byBgRVhQRUNUX1RSVUUoKWAuIEhvd2V2ZXIsIHRoaXMKK2lzIGF3a3dhcmQgZXNw
ZWNpYWxseSB3aGVuIHRoZSBleHByZXNzaW9uIGhhcyBzaWRlLWVmZmVjdHMgb3IgaXMgZXhwZW5z
aXZlIHRvCitldmFsdWF0ZS4KKworR29vZ2xlIFRlc3QgZ2l2ZXMgeW91IHRocmVlIGRpZmZlcmVu
dCBvcHRpb25zIHRvIHNvbHZlIHRoaXMgcHJvYmxlbToKKworIyMjIFVzaW5nIGFuIEV4aXN0aW5n
IEJvb2xlYW4gRnVuY3Rpb24gIyMjCisKK0lmIHlvdSBhbHJlYWR5IGhhdmUgYSBmdW5jdGlvbiBv
ciBhIGZ1bmN0b3IgdGhhdCByZXR1cm5zIGBib29sYCAob3IgYSB0eXBlCit0aGF0IGNhbiBiZSBp
bXBsaWNpdGx5IGNvbnZlcnRlZCB0byBgYm9vbGApLCB5b3UgY2FuIHVzZSBpdCBpbiBhIF9wcmVk
aWNhdGUKK2Fzc2VydGlvbl8gdG8gZ2V0IHRoZSBmdW5jdGlvbiBhcmd1bWVudHMgcHJpbnRlZCBm
b3IgZnJlZToKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24q
KiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9QUkVEMShgX3ByZWQxLCB2YWwx
X2ApO2AgICAgICAgfCBgRVhQRUNUX1BSRUQxKGBfcHJlZDEsIHZhbDFfYCk7YCB8IF9wcmVkMSh2
YWwxKV8gcmV0dXJucyB0cnVlIHwKK3wgYEFTU0VSVF9QUkVEMihgX3ByZWQyLCB2YWwxLCB2YWwy
X2ApO2AgfCBgRVhQRUNUX1BSRUQyKGBfcHJlZDIsIHZhbDEsIHZhbDJfYCk7YCB8ICBfcHJlZDIo
dmFsMSwgdmFsMilfIHJldHVybnMgdHJ1ZSB8Cit8ICAuLi4gICAgICAgICAgICAgICAgfCAuLi4g
ICAgICAgICAgICAgICAgICAgIHwgLi4uICAgICAgICAgIHwKKworSW4gdGhlIGFib3ZlLCBfcHJl
ZG5fIGlzIGFuIF9uXy1hcnkgcHJlZGljYXRlIGZ1bmN0aW9uIG9yIGZ1bmN0b3IsIHdoZXJlCitf
dmFsMV8sIF92YWwyXywgLi4uLCBhbmQgX3ZhbG5fIGFyZSBpdHMgYXJndW1lbnRzLiBUaGUgYXNz
ZXJ0aW9uIHN1Y2NlZWRzCitpZiB0aGUgcHJlZGljYXRlIHJldHVybnMgYHRydWVgIHdoZW4gYXBw
bGllZCB0byB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBhbmQgZmFpbHMKK290aGVyd2lzZS4gV2hlbiB0
aGUgYXNzZXJ0aW9uIGZhaWxzLCBpdCBwcmludHMgdGhlIHZhbHVlIG9mIGVhY2ggYXJndW1lbnQu
IEluCitlaXRoZXIgY2FzZSwgdGhlIGFyZ3VtZW50cyBhcmUgZXZhbHVhdGVkIGV4YWN0bHkgb25j
ZS4KKworSGVyZSdzIGFuIGV4YW1wbGUuIEdpdmVuCisKK2BgYAorLy8gUmV0dXJucyB0cnVlIGlm
ZiBtIGFuZCBuIGhhdmUgbm8gY29tbW9uIGRpdmlzb3JzIGV4Y2VwdCAxLgorYm9vbCBNdXR1YWxs
eVByaW1lKGludCBtLCBpbnQgbikgeyAuLi4gfQorY29uc3QgaW50IGEgPSAzOworY29uc3QgaW50
IGIgPSA0OworY29uc3QgaW50IGMgPSAxMDsKK2BgYAorCit0aGUgYXNzZXJ0aW9uIGBFWFBFQ1Rf
UFJFRDIoTXV0dWFsbHlQcmltZSwgYSwgYik7YCB3aWxsIHN1Y2NlZWQsIHdoaWxlIHRoZQorYXNz
ZXJ0aW9uIGBFWFBFQ1RfUFJFRDIoTXV0dWFsbHlQcmltZSwgYiwgYyk7YCB3aWxsIGZhaWwgd2l0
aCB0aGUgbWVzc2FnZQorCis8cHJlPgorIU11dHVhbGx5UHJpbWUoYiwgYykgaXMgZmFsc2UsIHdo
ZXJlPGJyPgorYiBpcyA0PGJyPgorYyBpcyAxMDxicj4KKzwvcHJlPgorCisqKk5vdGVzOioqCisK
KyAgMS4gSWYgeW91IHNlZSBhIGNvbXBpbGVyIGVycm9yICJubyBtYXRjaGluZyBmdW5jdGlvbiB0
byBjYWxsIiB3aGVuIHVzaW5nIGBBU1NFUlRfUFJFRCpgIG9yIGBFWFBFQ1RfUFJFRCpgLCBwbGVh
c2Ugc2VlIFt0aGlzXSh2MV82X0ZBUS5tZCNpdGhlLWNvbXBpbGVyLWNvbXBsYWlucy1hYm91dC11
bmRlZmluZWQtcmVmZXJlbmNlcy10by1zb21lLXN0YXRpYy1jb25zdC1tZW1iZXItdmFyaWFibGVz
LWJ1dC1pLWRpZC1kZWZpbmUtdGhlbS1pbi10aGUtY2xhc3MtYm9keS13aGF0cy13cm9uZykgZm9y
IGhvdyB0byByZXNvbHZlIGl0LgorICAxLiBDdXJyZW50bHkgd2Ugb25seSBwcm92aWRlIHByZWRp
Y2F0ZSBhc3NlcnRpb25zIG9mIGFyaXR5IDw9IDUuIElmIHlvdSBuZWVkIGEgaGlnaGVyLWFyaXR5
IGFzc2VydGlvbiwgbGV0IHVzIGtub3cuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjCisKKyMjIyBVc2luZyBhIEZ1bmN0aW9uIFRoYXQgUmV0dXJucyBhbiBBc3NlcnRpb25S
ZXN1bHQgIyMjCisKK1doaWxlIGBFWFBFQ1RfUFJFRCooKWAgYW5kIGZyaWVuZHMgYXJlIGhhbmR5
IGZvciBhIHF1aWNrIGpvYiwgdGhlCitzeW50YXggaXMgbm90IHNhdGlzZmFjdG9yeTogeW91IGhh
dmUgdG8gdXNlIGRpZmZlcmVudCBtYWNyb3MgZm9yCitkaWZmZXJlbnQgYXJpdGllcywgYW5kIGl0
IGZlZWxzIG1vcmUgbGlrZSBMaXNwIHRoYW4gQysrLiAgVGhlCitgOjp0ZXN0aW5nOjpBc3NlcnRp
b25SZXN1bHRgIGNsYXNzIHNvbHZlcyB0aGlzIHByb2JsZW0uCisKK0FuIGBBc3NlcnRpb25SZXN1
bHRgIG9iamVjdCByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYW4gYXNzZXJ0aW9uCisod2hldGhl
ciBpdCdzIGEgc3VjY2VzcyBvciBhIGZhaWx1cmUsIGFuZCBhbiBhc3NvY2lhdGVkIG1lc3NhZ2Up
LiAgWW91CitjYW4gY3JlYXRlIGFuIGBBc3NlcnRpb25SZXN1bHRgIHVzaW5nIG9uZSBvZiB0aGVz
ZSBmYWN0b3J5CitmdW5jdGlvbnM6CisKK2BgYAorbmFtZXNwYWNlIHRlc3RpbmcgeworCisvLyBS
ZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBhbiBhc3Nl
cnRpb24gaGFzCisvLyBzdWNjZWVkZWQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uU3VjY2Vz
cygpOworCisvLyBSZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUg
dGhhdCBhbiBhc3NlcnRpb24gaGFzCisvLyBmYWlsZWQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0
aW9uRmFpbHVyZSgpOworCit9CitgYGAKKworWW91IGNhbiB0aGVuIHVzZSB0aGUgYDw8YCBvcGVy
YXRvciB0byBzdHJlYW0gbWVzc2FnZXMgdG8gdGhlCitgQXNzZXJ0aW9uUmVzdWx0YCBvYmplY3Qu
CisKK1RvIHByb3ZpZGUgbW9yZSByZWFkYWJsZSBtZXNzYWdlcyBpbiBCb29sZWFuIGFzc2VydGlv
bnMKKyhlLmcuIGBFWFBFQ1RfVFJVRSgpYCksIHdyaXRlIGEgcHJlZGljYXRlIGZ1bmN0aW9uIHRo
YXQgcmV0dXJucworYEFzc2VydGlvblJlc3VsdGAgaW5zdGVhZCBvZiBgYm9vbGAuIEZvciBleGFt
cGxlLCBpZiB5b3UgZGVmaW5lCitgSXNFdmVuKClgIGFzOgorCitgYGAKKzo6dGVzdGluZzo6QXNz
ZXJ0aW9uUmVzdWx0IElzRXZlbihpbnQgbikgeworICBpZiAoKG4gJSAyKSA9PSAwKQorICAgIHJl
dHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKKyAgZWxzZQorICAgIHJldHVybiA6
OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2RkIjsKK30KK2BgYAor
CitpbnN0ZWFkIG9mOgorCitgYGAKK2Jvb2wgSXNFdmVuKGludCBuKSB7CisgIHJldHVybiAobiAl
IDIpID09IDA7Cit9CitgYGAKKwordGhlIGZhaWxlZCBhc3NlcnRpb24gYEVYUEVDVF9UUlVFKElz
RXZlbihGaWIoNCkpKWAgd2lsbCBwcmludDoKKworPHByZT4KK1ZhbHVlIG9mOiAhSXNFdmVuKEZp
Yig0KSk8YnI+CitBY3R1YWw6IGZhbHNlICgqMyBpcyBvZGQqKTxicj4KK0V4cGVjdGVkOiB0cnVl
PGJyPgorPC9wcmU+CisKK2luc3RlYWQgb2YgYSBtb3JlIG9wYXF1ZQorCis8cHJlPgorVmFsdWUg
b2Y6ICFJc0V2ZW4oRmliKDQpKTxicj4KK0FjdHVhbDogZmFsc2U8YnI+CitFeHBlY3RlZDogdHJ1
ZTxicj4KKzwvcHJlPgorCitJZiB5b3Ugd2FudCBpbmZvcm1hdGl2ZSBtZXNzYWdlcyBpbiBgRVhQ
RUNUX0ZBTFNFYCBhbmQgYEFTU0VSVF9GQUxTRWAKK2FzIHdlbGwsIGFuZCBhcmUgZmluZSB3aXRo
IG1ha2luZyB0aGUgcHJlZGljYXRlIHNsb3dlciBpbiB0aGUgc3VjY2VzcworY2FzZSwgeW91IGNh
biBzdXBwbHkgYSBzdWNjZXNzIG1lc3NhZ2U6CisKK2BgYAorOjp0ZXN0aW5nOjpBc3NlcnRpb25S
ZXN1bHQgSXNFdmVuKGludCBuKSB7CisgIGlmICgobiAlIDIpID09IDApCisgICAgcmV0dXJuIDo6
dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpIDw8IG4gPDwgIiBpcyBldmVuIjsKKyAgZWxzZQor
ICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2Rk
IjsKK30KK2BgYAorCitUaGVuIHRoZSBzdGF0ZW1lbnQgYEVYUEVDVF9GQUxTRShJc0V2ZW4oRmli
KDYpKSlgIHdpbGwgcHJpbnQKKworPHByZT4KK1ZhbHVlIG9mOiAhSXNFdmVuKEZpYig2KSk8YnI+
CitBY3R1YWw6IHRydWUgKDggaXMgZXZlbik8YnI+CitFeHBlY3RlZDogZmFsc2U8YnI+Cis8L3By
ZT4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24g
MS40LjEuCisKKyMjIyBVc2luZyBhIFByZWRpY2F0ZS1Gb3JtYXR0ZXIgIyMjCisKK0lmIHlvdSBm
aW5kIHRoZSBkZWZhdWx0IG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IGAoQVNTRVJUfEVYUEVDVClfUFJF
RCpgIGFuZAorYChBU1NFUlR8RVhQRUNUKV8oVFJVRXxGQUxTRSlgIHVuc2F0aXNmYWN0b3J5LCBv
ciBzb21lIGFyZ3VtZW50cyB0byB5b3VyCitwcmVkaWNhdGUgZG8gbm90IHN1cHBvcnQgc3RyZWFt
aW5nIHRvIGBvc3RyZWFtYCwgeW91IGNhbiBpbnN0ZWFkIHVzZSB0aGUKK2ZvbGxvd2luZyBfcHJl
ZGljYXRlLWZvcm1hdHRlciBhc3NlcnRpb25zXyB0byBfZnVsbHlfIGN1c3RvbWl6ZSBob3cgdGhl
CittZXNzYWdlIGlzIGZvcm1hdHRlZDoKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25m
YXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9QUkVE
X0ZPUk1BVDEoYF9wcmVkXF9mb3JtYXQxLCB2YWwxX2ApO2AgICAgICAgIHwgYEVYUEVDVF9QUkVE
X0ZPUk1BVDEoYF9wcmVkXF9mb3JtYXQxLCB2YWwxX2ApOyB8IF9wcmVkXF9mb3JtYXQxKHZhbDEp
XyBpcyBzdWNjZXNzZnVsIHwKK3wgYEFTU0VSVF9QUkVEX0ZPUk1BVDIoYF9wcmVkXF9mb3JtYXQy
LCB2YWwxLCB2YWwyX2ApO2AgfCBgRVhQRUNUX1BSRURfRk9STUFUMihgX3ByZWRcX2Zvcm1hdDIs
IHZhbDEsIHZhbDJfYCk7YCB8IF9wcmVkXF9mb3JtYXQyKHZhbDEsIHZhbDIpXyBpcyBzdWNjZXNz
ZnVsIHwKK3wgYC4uLmAgICAgICAgICAgICAgICB8IGAuLi5gICAgICAgICAgICAgICAgICAgfCBg
Li4uYCAgICAgICAgfAorCitUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIHRoZSBwcmV2
aW91cyB0d28gZ3JvdXBzIG9mIG1hY3JvcyBpcyB0aGF0IGluc3RlYWQgb2YKK2EgcHJlZGljYXRl
LCBgKEFTU0VSVHxFWFBFQ1QpX1BSRURfRk9STUFUKmAgdGFrZSBhIF9wcmVkaWNhdGUtZm9ybWF0
dGVyXworKF9wcmVkXF9mb3JtYXRuXyksIHdoaWNoIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3RvciB3
aXRoIHRoZSBzaWduYXR1cmU6CisKK2A6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkaWNh
dGVGb3JtYXR0ZXJuKGNvbnN0IGNoYXIqIGBfZXhwcjFfYCwgY29uc3QgY2hhciogYF9leHByMl9g
LCAuLi4gY29uc3QgY2hhciogYF9leHBybl9gLCBUMSBgX3ZhbDFfYCwgVDIgYF92YWwyX2AsIC4u
LiBUbiBgX3ZhbG5fYCk7YAorCit3aGVyZSBfdmFsMV8sIF92YWwyXywgLi4uLCBhbmQgX3ZhbG5f
IGFyZSB0aGUgdmFsdWVzIG9mIHRoZSBwcmVkaWNhdGUKK2FyZ3VtZW50cywgYW5kIF9leHByMV8s
IF9leHByMl8sIC4uLiwgYW5kIF9leHBybl8gYXJlIHRoZSBjb3JyZXNwb25kaW5nCitleHByZXNz
aW9ucyBhcyB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGNvZGUuIFRoZSB0eXBlcyBgVDFgLCBg
VDJgLCAuLi4sIGFuZAorYFRuYCBjYW4gYmUgZWl0aGVyIHZhbHVlIHR5cGVzIG9yIHJlZmVyZW5j
ZSB0eXBlcy4gRm9yIGV4YW1wbGUsIGlmIGFuCithcmd1bWVudCBoYXMgdHlwZSBgRm9vYCwgeW91
IGNhbiBkZWNsYXJlIGl0IGFzIGVpdGhlciBgRm9vYCBvciBgY29uc3QgRm9vJmAsCit3aGljaGV2
ZXIgaXMgYXBwcm9wcmlhdGUuCisKK0EgcHJlZGljYXRlLWZvcm1hdHRlciByZXR1cm5zIGEgYDo6
dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0YCBvYmplY3QgdG8gaW5kaWNhdGUKK3doZXRoZXIgdGhl
IGFzc2VydGlvbiBoYXMgc3VjY2VlZGVkIG9yIG5vdC4gVGhlIG9ubHkgd2F5IHRvIGNyZWF0ZSBz
dWNoIGFuCitvYmplY3QgaXMgdG8gY2FsbCBvbmUgb2YgdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnM6
CisKK0FzIGFuIGV4YW1wbGUsIGxldCdzIGltcHJvdmUgdGhlIGZhaWx1cmUgbWVzc2FnZSBpbiB0
aGUgcHJldmlvdXMgZXhhbXBsZSwgd2hpY2ggdXNlcyBgRVhQRUNUX1BSRUQyKClgOgorCitgYGAK
Ky8vIFJldHVybnMgdGhlIHNtYWxsZXN0IHByaW1lIGNvbW1vbiBkaXZpc29yIG9mIG0gYW5kIG4s
CisvLyBvciAxIHdoZW4gbSBhbmQgbiBhcmUgbXV0dWFsbHkgcHJpbWUuCitpbnQgU21hbGxlc3RQ
cmltZUNvbW1vbkRpdmlzb3IoaW50IG0sIGludCBuKSB7IC4uLiB9CisKKy8vIEEgcHJlZGljYXRl
LWZvcm1hdHRlciBmb3IgYXNzZXJ0aW5nIHRoYXQgdHdvIGludGVnZXJzIGFyZSBtdXR1YWxseSBw
cmltZS4KKzo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IEFzc2VydE11dHVhbGx5UHJpbWUoY29u
c3QgY2hhciogbV9leHByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBuX2V4cHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgbikgeworICBpZiAoTXV0dWFsbHlQcmltZShtLCBuKSkKKyAg
ICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CisKKyAgcmV0dXJuIDo6dGVz
dGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBtX2V4cHIgPDwgIiBhbmQgIiA8PCBu
X2V4cHIgPDwgIiAoIiA8PCBtIDw8ICIgYW5kICIgPDwgbgorICAgICAgPDwgIikgYXJlIG5vdCBt
dXR1YWxseSBwcmltZSwgIiA8PCAiYXMgdGhleSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgIgorICAg
ICAgPDwgU21hbGxlc3RQcmltZUNvbW1vbkRpdmlzb3IobSwgbik7Cit9CitgYGAKKworV2l0aCB0
aGlzIHByZWRpY2F0ZS1mb3JtYXR0ZXIsIHdlIGNhbiB1c2UKKworYGBgCitFWFBFQ1RfUFJFRF9G
T1JNQVQyKEFzc2VydE11dHVhbGx5UHJpbWUsIGIsIGMpOworYGBgCisKK3RvIGdlbmVyYXRlIHRo
ZSBtZXNzYWdlCisKKzxwcmU+CitiIGFuZCBjICg0IGFuZCAxMCkgYXJlIG5vdCBtdXR1YWxseSBw
cmltZSwgYXMgdGhleSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgMi48YnI+Cis8L3ByZT4KKworQXMg
eW91IG1heSBoYXZlIHJlYWxpemVkLCBtYW55IG9mIHRoZSBhc3NlcnRpb25zIHdlIGludHJvZHVj
ZWQgZWFybGllciBhcmUKK3NwZWNpYWwgY2FzZXMgb2YgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZP
Uk1BVCpgLiBJbiBmYWN0LCBtb3N0IG9mIHRoZW0gYXJlCitpbmRlZWQgZGVmaW5lZCB1c2luZyBg
KEVYUEVDVHxBU1NFUlQpX1BSRURfRk9STUFUKmAuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwg
V2luZG93cywgTWFjLgorCisKKyMjIEZsb2F0aW5nLVBvaW50IENvbXBhcmlzb24gIyMKKworQ29t
cGFyaW5nIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgaXMgdHJpY2t5LiBEdWUgdG8gcm91bmQtb2Zm
IGVycm9ycywgaXQgaXMKK3ZlcnkgdW5saWtlbHkgdGhhdCB0d28gZmxvYXRpbmctcG9pbnRzIHdp
bGwgbWF0Y2ggZXhhY3RseS4gVGhlcmVmb3JlLAorYEFTU0VSVF9FUWAgJ3MgbmFpdmUgY29tcGFy
aXNvbiB1c3VhbGx5IGRvZXNuJ3Qgd29yay4gQW5kIHNpbmNlIGZsb2F0aW5nLXBvaW50cworY2Fu
IGhhdmUgYSB3aWRlIHZhbHVlIHJhbmdlLCBubyBzaW5nbGUgZml4ZWQgZXJyb3IgYm91bmQgd29y
a3MuIEl0J3MgYmV0dGVyIHRvCitjb21wYXJlIGJ5IGEgZml4ZWQgcmVsYXRpdmUgZXJyb3IgYm91
bmQsIGV4Y2VwdCBmb3IgdmFsdWVzIGNsb3NlIHRvIDAgZHVlIHRvCit0aGUgbG9zcyBvZiBwcmVj
aXNpb24gdGhlcmUuCisKK0luIGdlbmVyYWwsIGZvciBmbG9hdGluZy1wb2ludCBjb21wYXJpc29u
IHRvIG1ha2Ugc2Vuc2UsIHRoZSB1c2VyIG5lZWRzIHRvCitjYXJlZnVsbHkgY2hvb3NlIHRoZSBl
cnJvciBib3VuZC4gSWYgdGhleSBkb24ndCB3YW50IG9yIGNhcmUgdG8sIGNvbXBhcmluZyBpbgor
dGVybXMgb2YgVW5pdHMgaW4gdGhlIExhc3QgUGxhY2UgKFVMUHMpIGlzIGEgZ29vZCBkZWZhdWx0
LCBhbmQgR29vZ2xlIFRlc3QKK3Byb3ZpZGVzIGFzc2VydGlvbnMgdG8gZG8gdGhpcy4gRnVsbCBk
ZXRhaWxzIGFib3V0IFVMUHMgYXJlIHF1aXRlIGxvbmc7IGlmIHlvdQord2FudCB0byBsZWFybiBt
b3JlLCBzZWUKK1t0aGlzIGFydGljbGUgb24gZmxvYXQgY29tcGFyaXNvbl0oaHR0cDovL3d3dy5j
eWdudXMtc29mdHdhcmUuY29tL3BhcGVycy9jb21wYXJpbmdmbG9hdHMvY29tcGFyaW5nZmxvYXRz
Lmh0bSkuCisKKyMjIyBGbG9hdGluZy1Qb2ludCBNYWNyb3MgIyMjCisKK3wgKipGYXRhbCBhc3Nl
cnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0t
LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18
Cit8IGBBU1NFUlRfRkxPQVRfRVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgIHwgYEVYUEVDVF9G
TE9BVF9FUShgX2V4cGVjdGVkLCBhY3R1YWxfYCk7YCB8IHRoZSB0d28gYGZsb2F0YCB2YWx1ZXMg
YXJlIGFsbW9zdCBlcXVhbCB8Cit8IGBBU1NFUlRfRE9VQkxFX0VRKGBfZXhwZWN0ZWQsIGFjdHVh
bF9gKTtgIHwgYEVYUEVDVF9ET1VCTEVfRVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgfCB0aGUg
dHdvIGBkb3VibGVgIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsIHwKKworQnkgImFsbW9zdCBlcXVh
bCIsIHdlIG1lYW4gdGhlIHR3byB2YWx1ZXMgYXJlIHdpdGhpbiA0IFVMUCdzIGZyb20gZWFjaAor
b3RoZXIuCisKK1RoZSBmb2xsb3dpbmcgYXNzZXJ0aW9ucyBhbGxvdyB5b3UgdG8gY2hvb3NlIHRo
ZSBhY2NlcHRhYmxlIGVycm9yIGJvdW5kOgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5v
bmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0t
LS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX05F
QVIoYF92YWwxLCB2YWwyLCBhYnNcX2Vycm9yX2ApO2AgfCBgRVhQRUNUX05FQVJgXyh2YWwxLCB2
YWwyLCBhYnNcX2Vycm9yX2ApO2AgfCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIF92YWwxXyBhbmQg
X3ZhbDJfIGRvZXNuJ3QgZXhjZWVkIHRoZSBnaXZlbiBhYnNvbHV0ZSBlcnJvciB8CisKK19BdmFp
bGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgRmxvYXRpbmctUG9pbnQgUHJl
ZGljYXRlLUZvcm1hdCBGdW5jdGlvbnMgIyMjCisKK1NvbWUgZmxvYXRpbmctcG9pbnQgb3BlcmF0
aW9ucyBhcmUgdXNlZnVsLCBidXQgbm90IHRoYXQgb2Z0ZW4gdXNlZC4gSW4gb3JkZXIKK3RvIGF2
b2lkIGFuIGV4cGxvc2lvbiBvZiBuZXcgbWFjcm9zLCB3ZSBwcm92aWRlIHRoZW0gYXMgcHJlZGlj
YXRlLWZvcm1hdAorZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgaW4gcHJlZGljYXRlIGFzc2Vy
dGlvbiBtYWNyb3MgKGUuZy4KK2BFWFBFQ1RfUFJFRF9GT1JNQVQyYCwgZXRjKS4KKworYGBgCitF
WFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RmxvYXRMRSwgdmFsMSwgdmFsMik7CitFWFBF
Q1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RG91YmxlTEUsIHZhbDEsIHZhbDIpOworYGBgCisK
K1ZlcmlmaWVzIHRoYXQgX3ZhbDFfIGlzIGxlc3MgdGhhbiwgb3IgYWxtb3N0IGVxdWFsIHRvLCBf
dmFsMl8uIFlvdSBjYW4KK3JlcGxhY2UgYEVYUEVDVF9QUkVEX0ZPUk1BVDJgIGluIHRoZSBhYm92
ZSB0YWJsZSB3aXRoIGBBU1NFUlRfUFJFRF9GT1JNQVQyYC4KKworX0F2YWlsYWJpbGl0eV86IExp
bnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIFdpbmRvd3MgSFJFU1VMVCBhc3NlcnRpb25zICMjCisK
K1RoZXNlIGFzc2VydGlvbnMgdGVzdCBmb3IgYEhSRVNVTFRgIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4K
KworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVy
aWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChgX2V4cHJlc3Np
b25fYCk7YCB8IGBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQoYF9leHByZXNzaW9uX2ApO2AgfCBf
ZXhwcmVzc2lvbl8gaXMgYSBzdWNjZXNzIGBIUkVTVUxUYCB8Cit8IGBBU1NFUlRfSFJFU1VMVF9G
QUlMRUQoYF9leHByZXNzaW9uX2ApO2AgICAgfCBgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKGBfZXhw
cmVzc2lvbl9gKTtgICAgIHwgX2V4cHJlc3Npb25fIGlzIGEgZmFpbHVyZSBgSFJFU1VMVGAgfAor
CitUaGUgZ2VuZXJhdGVkIG91dHB1dCBjb250YWlucyB0aGUgaHVtYW4tcmVhZGFibGUgZXJyb3Ig
bWVzc2FnZQorYXNzb2NpYXRlZCB3aXRoIHRoZSBgSFJFU1VMVGAgY29kZSByZXR1cm5lZCBieSBf
ZXhwcmVzc2lvbl8uCisKK1lvdSBtaWdodCB1c2UgdGhlbSBsaWtlIHRoaXM6CisKK2BgYAorQ0Nv
bVB0ciBzaGVsbDsKK0FTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChzaGVsbC5Db0NyZWF0ZUluc3Rh
bmNlKEwiU2hlbGwuQXBwbGljYXRpb24iKSk7CitDQ29tVmFyaWFudCBlbXB0eTsKK0FTU0VSVF9I
UkVTVUxUX1NVQ0NFRURFRChzaGVsbC0+U2hlbGxFeGVjdXRlKENDb21CU1RSKHVybCksIGVtcHR5
LCBlbXB0eSwgZW1wdHksIGVtcHR5KSk7CitgYGAKKworX0F2YWlsYWJpbGl0eV86IFdpbmRvd3Mu
CisKKyMjIFR5cGUgQXNzZXJ0aW9ucyAjIworCitZb3UgY2FuIGNhbGwgdGhlIGZ1bmN0aW9uCitg
YGAKKzo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4oKTsKK2BgYAordG8gYXNz
ZXJ0IHRoYXQgdHlwZXMgYFQxYCBhbmQgYFQyYCBhcmUgdGhlIHNhbWUuICBUaGUgZnVuY3Rpb24g
ZG9lcworbm90aGluZyBpZiB0aGUgYXNzZXJ0aW9uIGlzIHNhdGlzZmllZC4gIElmIHRoZSB0eXBl
cyBhcmUgZGlmZmVyZW50LAordGhlIGZ1bmN0aW9uIGNhbGwgd2lsbCBmYWlsIHRvIGNvbXBpbGUs
IGFuZCB0aGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZQord2lsbCBsaWtlbHkgKGRlcGVuZGluZyBv
biB0aGUgY29tcGlsZXIpIHNob3cgeW91IHRoZSBhY3R1YWwgdmFsdWVzIG9mCitgVDFgIGFuZCBg
VDJgLiAgVGhpcyBpcyBtYWlubHkgdXNlZnVsIGluc2lkZSB0ZW1wbGF0ZSBjb2RlLgorCitfQ2F2
ZWF0Ol8gV2hlbiB1c2VkIGluc2lkZSBhIG1lbWJlciBmdW5jdGlvbiBvZiBhIGNsYXNzIHRlbXBs
YXRlIG9yIGEKK2Z1bmN0aW9uIHRlbXBsYXRlLCBgU3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4o
KWAgaXMgZWZmZWN0aXZlIF9vbmx5IGlmXwordGhlIGZ1bmN0aW9uIGlzIGluc3RhbnRpYXRlZC4g
IEZvciBleGFtcGxlLCBnaXZlbjoKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZv
byB7CisgcHVibGljOgorICB2b2lkIEJhcigpIHsgOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBl
RXE8aW50LCBUPigpOyB9Cit9OworYGBgCit0aGUgY29kZToKK2BgYAordm9pZCBUZXN0MSgpIHsg
Rm9vPGJvb2w+IGZvbzsgfQorYGBgCit3aWxsIF9ub3RfIGdlbmVyYXRlIGEgY29tcGlsZXIgZXJy
b3IsIGFzIGBGb288Ym9vbD46OkJhcigpYCBpcyBuZXZlcgorYWN0dWFsbHkgaW5zdGFudGlhdGVk
LiAgSW5zdGVhZCwgeW91IG5lZWQ6CitgYGAKK3ZvaWQgVGVzdDIoKSB7IEZvbzxib29sPiBmb287
IGZvby5CYXIoKTsgfQorYGBgCit0byBjYXVzZSBhIGNvbXBpbGVyIGVycm9yLgorCitfQXZhaWxh
YmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lvbiAxLjMuMC4KKworIyMg
QXNzZXJ0aW9uIFBsYWNlbWVudCAjIworCitZb3UgY2FuIHVzZSBhc3NlcnRpb25zIGluIGFueSBD
KysgZnVuY3Rpb24uIEluIHBhcnRpY3VsYXIsIGl0IGRvZXNuJ3QKK2hhdmUgdG8gYmUgYSBtZXRo
b2Qgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4gVGhlIG9uZSBjb25zdHJhaW50IGlzCit0aGF0
IGFzc2VydGlvbnMgdGhhdCBnZW5lcmF0ZSBhIGZhdGFsIGZhaWx1cmUgKGBGQUlMKmAgYW5kIGBB
U1NFUlRfKmApCitjYW4gb25seSBiZSB1c2VkIGluIHZvaWQtcmV0dXJuaW5nIGZ1bmN0aW9ucy4g
VGhpcyBpcyBhIGNvbnNlcXVlbmNlIG9mCitHb29nbGUgVGVzdCBub3QgdXNpbmcgZXhjZXB0aW9u
cy4gQnkgcGxhY2luZyBpdCBpbiBhIG5vbi12b2lkIGZ1bmN0aW9uCit5b3UnbGwgZ2V0IGEgY29u
ZnVzaW5nIGNvbXBpbGUgZXJyb3IgbGlrZQorYCJlcnJvcjogdm9pZCB2YWx1ZSBub3QgaWdub3Jl
ZCBhcyBpdCBvdWdodCB0byBiZSJgLgorCitJZiB5b3UgbmVlZCB0byB1c2UgYXNzZXJ0aW9ucyBp
biBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBub24tdm9pZCwgb25lIG9wdGlvbgoraXMgdG8gbWFr
ZSB0aGUgZnVuY3Rpb24gcmV0dXJuIHRoZSB2YWx1ZSBpbiBhbiBvdXQgcGFyYW1ldGVyIGluc3Rl
YWQuIEZvcgorZXhhbXBsZSwgeW91IGNhbiByZXdyaXRlIGBUMiBGb28oVDEgeClgIHRvIGB2b2lk
IEZvbyhUMSB4LCBUMiogcmVzdWx0KWAuIFlvdQorbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgKnJl
c3VsdGAgY29udGFpbnMgc29tZSBzZW5zaWJsZSB2YWx1ZSBldmVuIHdoZW4gdGhlCitmdW5jdGlv
biByZXR1cm5zIHByZW1hdHVyZWx5LiBBcyB0aGUgZnVuY3Rpb24gbm93IHJldHVybnMgYHZvaWRg
LCB5b3UgY2FuIHVzZQorYW55IGFzc2VydGlvbiBpbnNpZGUgb2YgaXQuCisKK0lmIGNoYW5naW5n
IHRoZSBmdW5jdGlvbidzIHR5cGUgaXMgbm90IGFuIG9wdGlvbiwgeW91IHNob3VsZCBqdXN0IHVz
ZQorYXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIG5vbi1mYXRhbCBmYWlsdXJlcywgc3VjaCBhcyBg
QUREX0ZBSUxVUkUqYCBhbmQKK2BFWFBFQ1RfKmAuCisKK19Ob3RlXzogQ29uc3RydWN0b3JzIGFu
ZCBkZXN0cnVjdG9ycyBhcmUgbm90IGNvbnNpZGVyZWQgdm9pZC1yZXR1cm5pbmcKK2Z1bmN0aW9u
cywgYWNjb3JkaW5nIHRvIHRoZSBDKysgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbiwgYW5kIHNvIHlv
dSBtYXkgbm90IHVzZQorZmF0YWwgYXNzZXJ0aW9ucyBpbiB0aGVtLiBZb3UnbGwgZ2V0IGEgY29t
cGlsYXRpb24gZXJyb3IgaWYgeW91IHRyeS4gQSBzaW1wbGUKK3dvcmthcm91bmQgaXMgdG8gdHJh
bnNmZXIgdGhlIGVudGlyZSBib2R5IG9mIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yIHRv
IGEKK3ByaXZhdGUgdm9pZC1yZXR1cm5pbmcgbWV0aG9kLiBIb3dldmVyLCB5b3Ugc2hvdWxkIGJl
IGF3YXJlIHRoYXQgYSBmYXRhbAorYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYSBjb25zdHJ1Y3RvciBk
b2VzIG5vdCB0ZXJtaW5hdGUgdGhlIGN1cnJlbnQgdGVzdCwgYXMgeW91cgoraW50dWl0aW9uIG1p
Z2h0IHN1Z2dlc3Q7IGl0IG1lcmVseSByZXR1cm5zIGZyb20gdGhlIGNvbnN0cnVjdG9yIGVhcmx5
LCBwb3NzaWJseQorbGVhdmluZyB5b3VyIG9iamVjdCBpbiBhIHBhcnRpYWxseS1jb25zdHJ1Y3Rl
ZCBzdGF0ZS4gTGlrZXdpc2UsIGEgZmF0YWwKK2Fzc2VydGlvbiBmYWlsdXJlIGluIGEgZGVzdHJ1
Y3RvciBtYXkgbGVhdmUgeW91ciBvYmplY3QgaW4gYQorcGFydGlhbGx5LWRlc3RydWN0ZWQgc3Rh
dGUuIFVzZSBhc3NlcnRpb25zIGNhcmVmdWxseSBpbiB0aGVzZSBzaXR1YXRpb25zIQorCisjIFRl
YWNoaW5nIEdvb2dsZSBUZXN0IEhvdyB0byBQcmludCBZb3VyIFZhbHVlcyAjCisKK1doZW4gYSB0
ZXN0IGFzc2VydGlvbiBzdWNoIGFzIGBFWFBFQ1RfRVFgIGZhaWxzLCBHb29nbGUgVGVzdCBwcmlu
dHMgdGhlCithcmd1bWVudCB2YWx1ZXMgdG8gaGVscCB5b3UgZGVidWcuICBJdCBkb2VzIHRoaXMg
dXNpbmcgYQordXNlci1leHRlbnNpYmxlIHZhbHVlIHByaW50ZXIuCisKK1RoaXMgcHJpbnRlciBr
bm93cyBob3cgdG8gcHJpbnQgYnVpbHQtaW4gQysrIHR5cGVzLCBuYXRpdmUgYXJyYXlzLCBTVEwK
K2NvbnRhaW5lcnMsIGFuZCBhbnkgdHlwZSB0aGF0IHN1cHBvcnRzIHRoZSBgPDxgIG9wZXJhdG9y
LiAgRm9yIG90aGVyCit0eXBlcywgaXQgcHJpbnRzIHRoZSByYXcgYnl0ZXMgaW4gdGhlIHZhbHVl
IGFuZCBob3BlcyB0aGF0IHlvdSB0aGUKK3VzZXIgY2FuIGZpZ3VyZSBpdCBvdXQuCisKK0FzIG1l
bnRpb25lZCBlYXJsaWVyLCB0aGUgcHJpbnRlciBpcyBfZXh0ZW5zaWJsZV8uICBUaGF0IG1lYW5z
Cit5b3UgY2FuIHRlYWNoIGl0IHRvIGRvIGEgYmV0dGVyIGpvYiBhdCBwcmludGluZyB5b3VyIHBh
cnRpY3VsYXIgdHlwZQordGhhbiB0byBkdW1wIHRoZSBieXRlcy4gIFRvIGRvIHRoYXQsIGRlZmlu
ZSBgPDxgIGZvciB5b3VyIHR5cGU6CisKK2BgYAorI2luY2x1ZGUgPGlvc3RyZWFtPgorCituYW1l
c3BhY2UgZm9vIHsKKworY2xhc3MgQmFyIHsgLi4uIH07ICAvLyBXZSB3YW50IEdvb2dsZSBUZXN0
IHRvIGJlIGFibGUgdG8gcHJpbnQgaW5zdGFuY2VzIG9mIHRoaXMuCisKKy8vIEl0J3MgaW1wb3J0
YW50IHRoYXQgdGhlIDw8IG9wZXJhdG9yIGlzIGRlZmluZWQgaW4gdGhlIFNBTUUKKy8vIG5hbWVz
cGFjZSB0aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11cCBydWxlcyByZWx5IG9uIHRoYXQu
Cis6OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IEJh
ciYgYmFyKSB7CisgIHJldHVybiBvcyA8PCBiYXIuRGVidWdTdHJpbmcoKTsgIC8vIHdoYXRldmVy
IG5lZWRlZCB0byBwcmludCBiYXIgdG8gb3MKK30KKworfSAgLy8gbmFtZXNwYWNlIGZvbworYGBg
CisKK1NvbWV0aW1lcywgdGhpcyBtaWdodCBub3QgYmUgYW4gb3B0aW9uOiB5b3VyIHRlYW0gbWF5
IGNvbnNpZGVyIGl0IGJhZAorc3R5bGUgdG8gaGF2ZSBhIGA8PGAgb3BlcmF0b3IgZm9yIGBCYXJg
LCBvciBgQmFyYCBtYXkgYWxyZWFkeSBoYXZlIGEKK2A8PGAgb3BlcmF0b3IgdGhhdCBkb2Vzbid0
IGRvIHdoYXQgeW91IHdhbnQgKGFuZCB5b3UgY2Fubm90IGNoYW5nZQoraXQpLiAgSWYgc28sIHlv
dSBjYW4gaW5zdGVhZCBkZWZpbmUgYSBgUHJpbnRUbygpYCBmdW5jdGlvbiBsaWtlIHRoaXM6CisK
K2BgYAorI2luY2x1ZGUgPGlvc3RyZWFtPgorCituYW1lc3BhY2UgZm9vIHsKKworY2xhc3MgQmFy
IHsgLi4uIH07CisKKy8vIEl0J3MgaW1wb3J0YW50IHRoYXQgUHJpbnRUbygpIGlzIGRlZmluZWQg
aW4gdGhlIFNBTUUKKy8vIG5hbWVzcGFjZSB0aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11
cCBydWxlcyByZWx5IG9uIHRoYXQuCit2b2lkIFByaW50VG8oY29uc3QgQmFyJiBiYXIsIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgeworICAqb3MgPDwgYmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3aGF0ZXZl
ciBuZWVkZWQgdG8gcHJpbnQgYmFyIHRvIG9zCit9CisKK30gIC8vIG5hbWVzcGFjZSBmb28KK2Bg
YAorCitJZiB5b3UgaGF2ZSBkZWZpbmVkIGJvdGggYDw8YCBhbmQgYFByaW50VG8oKWAsIHRoZSBs
YXR0ZXIgd2lsbCBiZSB1c2VkCit3aGVuIEdvb2dsZSBUZXN0IGlzIGNvbmNlcm5lZC4gIFRoaXMg
YWxsb3dzIHlvdSB0byBjdXN0b21pemUgaG93IHRoZSB2YWx1ZQorYXBwZWFycyBpbiBHb29nbGUg
VGVzdCdzIG91dHB1dCB3aXRob3V0IGFmZmVjdGluZyBjb2RlIHRoYXQgcmVsaWVzIG9uIHRoZQor
YmVoYXZpb3Igb2YgaXRzIGA8PGAgb3BlcmF0b3IuCisKK0lmIHlvdSB3YW50IHRvIHByaW50IGEg
dmFsdWUgYHhgIHVzaW5nIEdvb2dsZSBUZXN0J3MgdmFsdWUgcHJpbnRlcgoreW91cnNlbGYsIGp1
c3QgY2FsbCBgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGBfeF9gKWAsIHdoaWNoCityZXR1cm5z
IGFuIGBzdGQ6OnN0cmluZ2A6CisKK2BgYAordmVjdG9yPHBhaXI8QmFyLCBpbnQ+ID4gYmFyX2lu
dHMgPSBHZXRCYXJJbnRWZWN0b3IoKTsKKworRVhQRUNUX1RSVUUoSXNDb3JyZWN0QmFySW50VmVj
dG9yKGJhcl9pbnRzKSkKKyAgICA8PCAiYmFyX2ludHMgPSAiIDw8IDo6dGVzdGluZzo6UHJpbnRU
b1N0cmluZyhiYXJfaW50cyk7CitgYGAKKworIyBEZWF0aCBUZXN0cyAjCisKK0luIG1hbnkgYXBw
bGljYXRpb25zLCB0aGVyZSBhcmUgYXNzZXJ0aW9ucyB0aGF0IGNhbiBjYXVzZSBhcHBsaWNhdGlv
biBmYWlsdXJlCitpZiBhIGNvbmRpdGlvbiBpcyBub3QgbWV0LiBUaGVzZSBzYW5pdHkgY2hlY2tz
LCB3aGljaCBlbnN1cmUgdGhhdCB0aGUgcHJvZ3JhbQoraXMgaW4gYSBrbm93biBnb29kIHN0YXRl
LCBhcmUgdGhlcmUgdG8gZmFpbCBhdCB0aGUgZWFybGllc3QgcG9zc2libGUgdGltZSBhZnRlcgor
c29tZSBwcm9ncmFtIHN0YXRlIGlzIGNvcnJ1cHRlZC4gSWYgdGhlIGFzc2VydGlvbiBjaGVja3Mg
dGhlIHdyb25nIGNvbmRpdGlvbiwKK3RoZW4gdGhlIHByb2dyYW0gbWF5IHByb2NlZWQgaW4gYW4g
ZXJyb25lb3VzIHN0YXRlLCB3aGljaCBjb3VsZCBsZWFkIHRvIG1lbW9yeQorY29ycnVwdGlvbiwg
c2VjdXJpdHkgaG9sZXMsIG9yIHdvcnNlLiBIZW5jZSBpdCBpcyB2aXRhbGx5IGltcG9ydGFudCB0
byB0ZXN0Cit0aGF0IHN1Y2ggYXNzZXJ0aW9uIHN0YXRlbWVudHMgd29yayBhcyBleHBlY3RlZC4K
KworU2luY2UgdGhlc2UgcHJlY29uZGl0aW9uIGNoZWNrcyBjYXVzZSB0aGUgcHJvY2Vzc2VzIHRv
IGRpZSwgd2UgY2FsbCBzdWNoIHRlc3RzCitfZGVhdGggdGVzdHNfLiBNb3JlIGdlbmVyYWxseSwg
YW55IHRlc3QgdGhhdCBjaGVja3MgdGhhdCBhIHByb2dyYW0gdGVybWluYXRlcworKGV4Y2VwdCBi
eSB0aHJvd2luZyBhbiBleGNlcHRpb24pIGluIGFuIGV4cGVjdGVkIGZhc2hpb24gaXMgYWxzbyBh
IGRlYXRoIHRlc3QuCisKK05vdGUgdGhhdCBpZiBhIHBpZWNlIG9mIGNvZGUgdGhyb3dzIGFuIGV4
Y2VwdGlvbiwgd2UgZG9uJ3QgY29uc2lkZXIgaXQgImRlYXRoIgorZm9yIHRoZSBwdXJwb3NlIG9m
IGRlYXRoIHRlc3RzLCBhcyB0aGUgY2FsbGVyIG9mIHRoZSBjb2RlIGNvdWxkIGNhdGNoIHRoZSBl
eGNlcHRpb24KK2FuZCBhdm9pZCB0aGUgY3Jhc2guIElmIHlvdSB3YW50IHRvIHZlcmlmeSBleGNl
cHRpb25zIHRocm93biBieSB5b3VyIGNvZGUsCitzZWUgW0V4Y2VwdGlvbiBBc3NlcnRpb25zXSgj
ZXhjZXB0aW9uLWFzc2VydGlvbnMpLgorCitJZiB5b3Ugd2FudCB0byB0ZXN0IGBFWFBFQ1RfKigp
L0FTU0VSVF8qKClgIGZhaWx1cmVzIGluIHlvdXIgdGVzdCBjb2RlLCBzZWUgW0NhdGNoaW5nIEZh
aWx1cmVzXSgjY2F0Y2hpbmctZmFpbHVyZXMpLgorCisjIyBIb3cgdG8gV3JpdGUgYSBEZWF0aCBU
ZXN0ICMjCisKK0dvb2dsZSBUZXN0IGhhcyB0aGUgZm9sbG93aW5nIG1hY3JvcyB0byBzdXBwb3J0
IGRlYXRoIHRlc3RzOgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2Vy
dGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX0RFQVRIKGBfc3RhdGVt
ZW50LCByZWdleF9gKTsgfCBgRVhQRUNUX0RFQVRIKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBf
c3RhdGVtZW50XyBjcmFzaGVzIHdpdGggdGhlIGdpdmVuIGVycm9yIHwKK3wgYEFTU0VSVF9ERUFU
SF9JRl9TVVBQT1JURUQoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApOyB8IGBFWFBFQ1RfREVBVEhfSUZf
U1VQUE9SVEVEKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBpZiBkZWF0aCB0ZXN0cyBhcmUgc3Vw
cG9ydGVkLCB2ZXJpZmllcyB0aGF0IF9zdGF0ZW1lbnRfIGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4g
ZXJyb3I7IG90aGVyd2lzZSB2ZXJpZmllcyBub3RoaW5nIHwKK3wgYEFTU0VSVF9FWElUKGBfc3Rh
dGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4X2ApOyB8IGBFWFBFQ1RfRVhJVChgX3N0YXRlbWVudCwg
cHJlZGljYXRlLCByZWdleF9gKTsgfF9zdGF0ZW1lbnRfIGV4aXRzIHdpdGggdGhlIGdpdmVuIGVy
cm9yIGFuZCBpdHMgZXhpdCBjb2RlIG1hdGNoZXMgX3ByZWRpY2F0ZV8gfAorCit3aGVyZSBfc3Rh
dGVtZW50XyBpcyBhIHN0YXRlbWVudCB0aGF0IGlzIGV4cGVjdGVkIHRvIGNhdXNlIHRoZSBwcm9j
ZXNzIHRvCitkaWUsIF9wcmVkaWNhdGVfIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3Rpb24gb2JqZWN0
IHRoYXQgZXZhbHVhdGVzIGFuIGludGVnZXIKK2V4aXQgc3RhdHVzLCBhbmQgX3JlZ2V4XyBpcyBh
IHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IHRoZSBzdGRlcnIgb3V0cHV0IG9mCitfc3RhdGVtZW50
XyBpcyBleHBlY3RlZCB0byBtYXRjaC4gTm90ZSB0aGF0IF9zdGF0ZW1lbnRfIGNhbiBiZSBfYW55
IHZhbGlkCitzdGF0ZW1lbnRfIChpbmNsdWRpbmcgX2NvbXBvdW5kIHN0YXRlbWVudF8pIGFuZCBk
b2Vzbid0IGhhdmUgdG8gYmUgYW4KK2V4cHJlc3Npb24uCisKK0FzIHVzdWFsLCB0aGUgYEFTU0VS
VGAgdmFyaWFudHMgYWJvcnQgdGhlIGN1cnJlbnQgdGVzdCBmdW5jdGlvbiwgd2hpbGUgdGhlCitg
RVhQRUNUYCB2YXJpYW50cyBkbyBub3QuCisKKyoqTm90ZToqKiBXZSB1c2UgdGhlIHdvcmQgImNy
YXNoIiBoZXJlIHRvIG1lYW4gdGhhdCB0aGUgcHJvY2VzcwordGVybWluYXRlcyB3aXRoIGEgX25v
bi16ZXJvXyBleGl0IHN0YXR1cyBjb2RlLiAgVGhlcmUgYXJlIHR3bworcG9zc2liaWxpdGllczog
ZWl0aGVyIHRoZSBwcm9jZXNzIGhhcyBjYWxsZWQgYGV4aXQoKWAgb3IgYF9leGl0KClgCit3aXRo
IGEgbm9uLXplcm8gdmFsdWUsIG9yIGl0IG1heSBiZSBraWxsZWQgYnkgYSBzaWduYWwuCisKK1Ro
aXMgbWVhbnMgdGhhdCBpZiBfc3RhdGVtZW50XyB0ZXJtaW5hdGVzIHRoZSBwcm9jZXNzIHdpdGgg
YSAwIGV4aXQKK2NvZGUsIGl0IGlzIF9ub3RfIGNvbnNpZGVyZWQgYSBjcmFzaCBieSBgRVhQRUNU
X0RFQVRIYC4gIFVzZQorYEVYUEVDVF9FWElUYCBpbnN0ZWFkIGlmIHRoaXMgaXMgdGhlIGNhc2Us
IG9yIGlmIHlvdSB3YW50IHRvIHJlc3RyaWN0Cit0aGUgZXhpdCBjb2RlIG1vcmUgcHJlY2lzZWx5
LgorCitBIHByZWRpY2F0ZSBoZXJlIG11c3QgYWNjZXB0IGFuIGBpbnRgIGFuZCByZXR1cm4gYSBg
Ym9vbGAuIFRoZSBkZWF0aCB0ZXN0CitzdWNjZWVkcyBvbmx5IGlmIHRoZSBwcmVkaWNhdGUgcmV0
dXJucyBgdHJ1ZWAuIEdvb2dsZSBUZXN0IGRlZmluZXMgYSBmZXcKK3ByZWRpY2F0ZXMgdGhhdCBo
YW5kbGUgdGhlIG1vc3QgY29tbW9uIGNhc2VzOgorCitgYGAKKzo6dGVzdGluZzo6RXhpdGVkV2l0
aENvZGUoZXhpdF9jb2RlKQorYGBgCisKK1RoaXMgZXhwcmVzc2lvbiBpcyBgdHJ1ZWAgaWYgdGhl
IHByb2dyYW0gZXhpdGVkIG5vcm1hbGx5IHdpdGggdGhlIGdpdmVuIGV4aXQKK2NvZGUuCisKK2Bg
YAorOjp0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChzaWduYWxfbnVtYmVyKSAgLy8gTm90IGF2YWls
YWJsZSBvbiBXaW5kb3dzLgorYGBgCisKK1RoaXMgZXhwcmVzc2lvbiBpcyBgdHJ1ZWAgaWYgdGhl
IHByb2dyYW0gd2FzIGtpbGxlZCBieSB0aGUgZ2l2ZW4gc2lnbmFsLgorCitUaGUgYCpfREVBVEhg
IG1hY3JvcyBhcmUgY29udmVuaWVudCB3cmFwcGVycyBmb3IgYCpfRVhJVGAgdGhhdCB1c2UgYSBw
cmVkaWNhdGUKK3RoYXQgdmVyaWZpZXMgdGhlIHByb2Nlc3MnIGV4aXQgY29kZSBpcyBub24temVy
by4KKworTm90ZSB0aGF0IGEgZGVhdGggdGVzdCBvbmx5IGNhcmVzIGFib3V0IHRocmVlIHRoaW5n
czoKKworICAxLiBkb2VzIF9zdGF0ZW1lbnRfIGFib3J0IG9yIGV4aXQgdGhlIHByb2Nlc3M/Cisg
IDEuIChpbiB0aGUgY2FzZSBvZiBgQVNTRVJUX0VYSVRgIGFuZCBgRVhQRUNUX0VYSVRgKSBkb2Vz
IHRoZSBleGl0IHN0YXR1cyBzYXRpc2Z5IF9wcmVkaWNhdGVfPyAgT3IgKGluIHRoZSBjYXNlIG9m
IGBBU1NFUlRfREVBVEhgIGFuZCBgRVhQRUNUX0RFQVRIYCkgaXMgdGhlIGV4aXQgc3RhdHVzIG5v
bi16ZXJvPyAgQW5kCisgIDEuIGRvZXMgdGhlIHN0ZGVyciBvdXRwdXQgbWF0Y2ggX3JlZ2V4Xz8K
KworSW4gcGFydGljdWxhciwgaWYgX3N0YXRlbWVudF8gZ2VuZXJhdGVzIGFuIGBBU1NFUlRfKmAg
b3IgYEVYUEVDVF8qYCBmYWlsdXJlLCBpdCB3aWxsICoqbm90KiogY2F1c2UgdGhlIGRlYXRoIHRl
c3QgdG8gZmFpbCwgYXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBkb24ndCBhYm9ydCB0aGUgcHJv
Y2Vzcy4KKworVG8gd3JpdGUgYSBkZWF0aCB0ZXN0LCBzaW1wbHkgdXNlIG9uZSBvZiB0aGUgYWJv
dmUgbWFjcm9zIGluc2lkZSB5b3VyIHRlc3QKK2Z1bmN0aW9uLiBGb3IgZXhhbXBsZSwKKworYGBg
CitURVNUKE15KkRlYXRoVGVzdCosIEZvbykgeworICAvLyBUaGlzIGRlYXRoIHRlc3QgdXNlcyBh
IGNvbXBvdW5kIHN0YXRlbWVudC4KKyAgQVNTRVJUX0RFQVRIKHsgaW50IG4gPSA1OyBGb28oJm4p
OyB9LCAiRXJyb3Igb24gbGluZSAuKiBvZiBGb28oKSIpOworfQorVEVTVChNeURlYXRoVGVzdCwg
Tm9ybWFsRXhpdCkgeworICBFWFBFQ1RfRVhJVChOb3JtYWxFeGl0KCksIDo6dGVzdGluZzo6RXhp
dGVkV2l0aENvZGUoMCksICJTdWNjZXNzIik7Cit9CitURVNUKE15RGVhdGhUZXN0LCBLaWxsTXlz
ZWxmKSB7CisgIEVYUEVDVF9FWElUKEtpbGxNeXNlbGYoKSwgOjp0ZXN0aW5nOjpLaWxsZWRCeVNp
Z25hbChTSUdLSUxMKSwgIlNlbmRpbmcgbXlzZWxmIHVuYmxvY2thYmxlIHNpZ25hbCIpOworfQor
YGBgCisKK3ZlcmlmaWVzIHRoYXQ6CisKKyAgKiBjYWxsaW5nIGBGb28oNSlgIGNhdXNlcyB0aGUg
cHJvY2VzcyB0byBkaWUgd2l0aCB0aGUgZ2l2ZW4gZXJyb3IgbWVzc2FnZSwKKyAgKiBjYWxsaW5n
IGBOb3JtYWxFeGl0KClgIGNhdXNlcyB0aGUgcHJvY2VzcyB0byBwcmludCBgIlN1Y2Nlc3MiYCB0
byBzdGRlcnIgYW5kIGV4aXQgd2l0aCBleGl0IGNvZGUgMCwgYW5kCisgICogY2FsbGluZyBgS2ls
bE15c2VsZigpYCBraWxscyB0aGUgcHJvY2VzcyB3aXRoIHNpZ25hbCBgU0lHS0lMTGAuCisKK1Ro
ZSB0ZXN0IGZ1bmN0aW9uIGJvZHkgbWF5IGNvbnRhaW4gb3RoZXIgYXNzZXJ0aW9ucyBhbmQgc3Rh
dGVtZW50cyBhcyB3ZWxsLCBpZgorbmVjZXNzYXJ5LgorCitfSW1wb3J0YW50Ol8gV2Ugc3Ryb25n
bHkgcmVjb21tZW5kIHlvdSB0byBmb2xsb3cgdGhlIGNvbnZlbnRpb24gb2YgbmFtaW5nIHlvdXIK
K3Rlc3QgY2FzZSAobm90IHRlc3QpIGAqRGVhdGhUZXN0YCB3aGVuIGl0IGNvbnRhaW5zIGEgZGVh
dGggdGVzdCwgYXMKK2RlbW9uc3RyYXRlZCBpbiB0aGUgYWJvdmUgZXhhbXBsZS4gVGhlIGBEZWF0
aCBUZXN0cyBBbmQgVGhyZWFkc2Agc2VjdGlvbiBiZWxvdworZXhwbGFpbnMgd2h5LgorCitJZiBh
IHRlc3QgZml4dHVyZSBjbGFzcyBpcyBzaGFyZWQgYnkgbm9ybWFsIHRlc3RzIGFuZCBkZWF0aCB0
ZXN0cywgeW91CitjYW4gdXNlIHR5cGVkZWYgdG8gaW50cm9kdWNlIGFuIGFsaWFzIGZvciB0aGUg
Zml4dHVyZSBjbGFzcyBhbmQgYXZvaWQKK2R1cGxpY2F0aW5nIGl0cyBjb2RlOgorYGBgCitjbGFz
cyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OworCit0eXBlZGVmIEZv
b1Rlc3QgRm9vRGVhdGhUZXN0OworCitURVNUX0YoRm9vVGVzdCwgRG9lc1RoaXMpIHsKKyAgLy8g
bm9ybWFsIHRlc3QKK30KKworVEVTVF9GKEZvb0RlYXRoVGVzdCwgRG9lc1RoYXQpIHsKKyAgLy8g
ZGVhdGggdGVzdAorfQorYGBgCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cyAocmVx
dWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBDeWd3aW4sIGFuZCBNYWMgKHRoZSBsYXR0ZXIgdGhy
ZWUgYXJlIHN1cHBvcnRlZCBzaW5jZSB2MS4zLjApLiAgYChBU1NFUlR8RVhQRUNUKV9ERUFUSF9J
Rl9TVVBQT1JURURgIGFyZSBuZXcgaW4gdjEuNC4wLgorCisjIyBSZWd1bGFyIEV4cHJlc3Npb24g
U3ludGF4ICMjCisKK09uIFBPU0lYIHN5c3RlbXMgKGUuZy4gTGludXgsIEN5Z3dpbiwgYW5kIE1h
YyksIEdvb2dsZSBUZXN0IHVzZXMgdGhlCitbUE9TSVggZXh0ZW5kZWQgcmVndWxhciBleHByZXNz
aW9uXShodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvYmFzZWRl
ZnMveGJkX2NoYXAwOS5odG1sI3RhZ18wOV8wNCkKK3N5bnRheCBpbiBkZWF0aCB0ZXN0cy4gVG8g
bGVhcm4gYWJvdXQgdGhpcyBzeW50YXgsIHlvdSBtYXkgd2FudCB0byByZWFkIHRoaXMgW1dpa2lw
ZWRpYSBlbnRyeV0oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWd1bGFyX2V4cHJlc3Np
b24jUE9TSVhfRXh0ZW5kZWRfUmVndWxhcl9FeHByZXNzaW9ucykuCisKK09uIFdpbmRvd3MsIEdv
b2dsZSBUZXN0IHVzZXMgaXRzIG93biBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uCitpbXBsZW1l
bnRhdGlvbi4gSXQgbGFja3MgbWFueSBmZWF0dXJlcyB5b3UgY2FuIGZpbmQgaW4gUE9TSVggZXh0
ZW5kZWQKK3JlZ3VsYXIgZXhwcmVzc2lvbnMuICBGb3IgZXhhbXBsZSwgd2UgZG9uJ3Qgc3VwcG9y
dCB1bmlvbiAoYCJ4fHkiYCksCitncm91cGluZyAoYCIoeHkpImApLCBicmFja2V0cyAoYCJbeHld
ImApLCBhbmQgcmVwZXRpdGlvbiBjb3VudAorKGAieHs1LDd9ImApLCBhbW9uZyBvdGhlcnMuIEJl
bG93IGlzIHdoYXQgd2UgZG8gc3VwcG9ydCAoYEFgIGRlbm90ZXMgYQorbGl0ZXJhbCBjaGFyYWN0
ZXIsIHBlcmlvZCAoYC5gKSwgb3IgYSBzaW5nbGUgYFxcYCBlc2NhcGUgc2VxdWVuY2U7IGB4YAor
YW5kIGB5YCBkZW5vdGUgcmVndWxhciBleHByZXNzaW9ucy4pOgorCit8IGBjYCB8IG1hdGNoZXMg
YW55IGxpdGVyYWwgY2hhcmFjdGVyIGBjYCB8Cit8Oi0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS18Cit8IGBcXGRgIHwgbWF0Y2hlcyBhbnkgZGVjaW1hbCBkaWdpdCAgICAg
ICAgIHwKK3wgYFxcRGAgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBhIGRlY2lt
YWwgZGlnaXQgfAorfCBgXFxmYCB8IG1hdGNoZXMgYFxmYCAgICAgICAgICAgICAgICAgICAgICB8
Cit8IGBcXG5gIHwgbWF0Y2hlcyBgXG5gICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYFxccmAg
fCBtYXRjaGVzIGBccmAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFxzYCB8IG1hdGNoZXMg
YW55IEFTQ0lJIHdoaXRlc3BhY2UsIGluY2x1ZGluZyBgXG5gIHwKK3wgYFxcU2AgfCBtYXRjaGVz
IGFueSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBhIHdoaXRlc3BhY2UgfAorfCBgXFx0YCB8IG1hdGNo
ZXMgYFx0YCAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBcXHZgIHwgbWF0Y2hlcyBgXHZgICAg
ICAgICAgICAgICAgICAgICAgIHwKK3wgYFxcd2AgfCBtYXRjaGVzIGFueSBsZXR0ZXIsIGBfYCwg
b3IgZGVjaW1hbCBkaWdpdCB8Cit8IGBcXFdgIHwgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIHRoYXQg
YFxcd2AgZG9lc24ndCBtYXRjaCB8Cit8IGBcXGNgIHwgbWF0Y2hlcyBhbnkgbGl0ZXJhbCBjaGFy
YWN0ZXIgYGNgLCB3aGljaCBtdXN0IGJlIGEgcHVuY3R1YXRpb24gfAorfCBgLmAgfCBtYXRjaGVz
IGFueSBzaW5nbGUgY2hhcmFjdGVyIGV4Y2VwdCBgXG5gIHwKK3wgYEE/YCB8IG1hdGNoZXMgMCBv
ciAxIG9jY3VycmVuY2VzIG9mIGBBYCB8Cit8IGBBKmAgfCBtYXRjaGVzIDAgb3IgbWFueSBvY2N1
cnJlbmNlcyBvZiBgQWAgfAorfCBgQStgIHwgbWF0Y2hlcyAxIG9yIG1hbnkgb2NjdXJyZW5jZXMg
b2YgYEFgIHwKK3wgYF5gIHwgbWF0Y2hlcyB0aGUgYmVnaW5uaW5nIG9mIGEgc3RyaW5nIChub3Qg
dGhhdCBvZiBlYWNoIGxpbmUpIHwKK3wgYCRgIHwgbWF0Y2hlcyB0aGUgZW5kIG9mIGEgc3RyaW5n
IChub3QgdGhhdCBvZiBlYWNoIGxpbmUpIHwKK3wgYHh5YCB8IG1hdGNoZXMgYHhgIGZvbGxvd2Vk
IGJ5IGB5YCAgICAgICB8CisKK1RvIGhlbHAgeW91IGRldGVybWluZSB3aGljaCBjYXBhYmlsaXR5
IGlzIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbSwKK0dvb2dsZSBUZXN0IGRlZmluZXMgbWFjcm8g
YEdURVNUX1VTRVNfUE9TSVhfUkU9MWAgd2hlbiBpdCB1c2VzIFBPU0lYCitleHRlbmRlZCByZWd1
bGFyIGV4cHJlc3Npb25zLCBvciBgR1RFU1RfVVNFU19TSU1QTEVfUkU9MWAgd2hlbiBpdCB1c2Vz
Cit0aGUgc2ltcGxlIHZlcnNpb24uICBJZiB5b3Ugd2FudCB5b3VyIGRlYXRoIHRlc3RzIHRvIHdv
cmsgaW4gYm90aAorY2FzZXMsIHlvdSBjYW4gZWl0aGVyIGAjaWZgIG9uIHRoZXNlIG1hY3JvcyBv
ciB1c2UgdGhlIG1vcmUgbGltaXRlZAorc3ludGF4IG9ubHkuCisKKyMjIEhvdyBJdCBXb3JrcyAj
IworCitVbmRlciB0aGUgaG9vZCwgYEFTU0VSVF9FWElUKClgIHNwYXducyBhIG5ldyBwcm9jZXNz
IGFuZCBleGVjdXRlcyB0aGUKK2RlYXRoIHRlc3Qgc3RhdGVtZW50IGluIHRoYXQgcHJvY2Vzcy4g
VGhlIGRldGFpbHMgb2Ygb2YgaG93IHByZWNpc2VseQordGhhdCBoYXBwZW5zIGRlcGVuZCBvbiB0
aGUgcGxhdGZvcm0gYW5kIHRoZSB2YXJpYWJsZQorYDo6dGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0
aF90ZXN0X3N0eWxlKWAgKHdoaWNoIGlzIGluaXRpYWxpemVkIGZyb20gdGhlCitjb21tYW5kLWxp
bmUgZmxhZyBgLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlYCkuCisKKyAgKiBPbiBQT1NJWCBzeXN0
ZW1zLCBgZm9yaygpYCAob3IgYGNsb25lKClgIG9uIExpbnV4KSBpcyB1c2VkIHRvIHNwYXduIHRo
ZSBjaGlsZCwgYWZ0ZXIgd2hpY2g6CisgICAgKiBJZiB0aGUgdmFyaWFibGUncyB2YWx1ZSBpcyBg
ImZhc3QiYCwgdGhlIGRlYXRoIHRlc3Qgc3RhdGVtZW50IGlzIGltbWVkaWF0ZWx5IGV4ZWN1dGVk
LgorICAgICogSWYgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgaXMgYCJ0aHJlYWRzYWZlImAsIHRoZSBj
aGlsZCBwcm9jZXNzIHJlLWV4ZWN1dGVzIHRoZSB1bml0IHRlc3QgYmluYXJ5IGp1c3QgYXMgaXQg
d2FzIG9yaWdpbmFsbHkgaW52b2tlZCwgYnV0IHdpdGggc29tZSBleHRyYSBmbGFncyB0byBjYXVz
ZSBqdXN0IHRoZSBzaW5nbGUgZGVhdGggdGVzdCB1bmRlciBjb25zaWRlcmF0aW9uIHRvIGJlIHJ1
bi4KKyAgKiBPbiBXaW5kb3dzLCB0aGUgY2hpbGQgaXMgc3Bhd25lZCB1c2luZyB0aGUgYENyZWF0
ZVByb2Nlc3MoKWAgQVBJLCBhbmQgcmUtZXhlY3V0ZXMgdGhlIGJpbmFyeSB0byBjYXVzZSBqdXN0
IHRoZSBzaW5nbGUgZGVhdGggdGVzdCB1bmRlciBjb25zaWRlcmF0aW9uIHRvIGJlIHJ1biAtIG11
Y2ggbGlrZSB0aGUgYHRocmVhZHNhZmVgIG1vZGUgb24gUE9TSVguCisKK090aGVyIHZhbHVlcyBm
b3IgdGhlIHZhcmlhYmxlIGFyZSBpbGxlZ2FsIGFuZCB3aWxsIGNhdXNlIHRoZSBkZWF0aCB0ZXN0
IHRvCitmYWlsLiBDdXJyZW50bHksIHRoZSBmbGFnJ3MgZGVmYXVsdCB2YWx1ZSBpcyBgImZhc3Qi
YC4gSG93ZXZlciwgd2UgcmVzZXJ2ZSB0aGUKK3JpZ2h0IHRvIGNoYW5nZSBpdCBpbiB0aGUgZnV0
dXJlLiBUaGVyZWZvcmUsIHlvdXIgdGVzdHMgc2hvdWxkIG5vdCBkZXBlbmQgb24KK3RoaXMuCisK
K0luIGVpdGhlciBjYXNlLCB0aGUgcGFyZW50IHByb2Nlc3Mgd2FpdHMgZm9yIHRoZSBjaGlsZCBw
cm9jZXNzIHRvIGNvbXBsZXRlLCBhbmQgY2hlY2tzIHRoYXQKKworICAxLiB0aGUgY2hpbGQncyBl
eGl0IHN0YXR1cyBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZSwgYW5kCisgIDEuIHRoZSBjaGlsZCdz
IHN0ZGVyciBtYXRjaGVzIHRoZSByZWd1bGFyIGV4cHJlc3Npb24uCisKK0lmIHRoZSBkZWF0aCB0
ZXN0IHN0YXRlbWVudCBydW5zIHRvIGNvbXBsZXRpb24gd2l0aG91dCBkeWluZywgdGhlIGNoaWxk
Citwcm9jZXNzIHdpbGwgbm9uZXRoZWxlc3MgdGVybWluYXRlLCBhbmQgdGhlIGFzc2VydGlvbiBm
YWlscy4KKworIyMgRGVhdGggVGVzdHMgQW5kIFRocmVhZHMgIyMKKworVGhlIHJlYXNvbiBmb3Ig
dGhlIHR3byBkZWF0aCB0ZXN0IHN0eWxlcyBoYXMgdG8gZG8gd2l0aCB0aHJlYWQgc2FmZXR5LiBE
dWUgdG8KK3dlbGwta25vd24gcHJvYmxlbXMgd2l0aCBmb3JraW5nIGluIHRoZSBwcmVzZW5jZSBv
ZiB0aHJlYWRzLCBkZWF0aCB0ZXN0cyBzaG91bGQKK2JlIHJ1biBpbiBhIHNpbmdsZS10aHJlYWRl
ZCBjb250ZXh0LiBTb21ldGltZXMsIGhvd2V2ZXIsIGl0IGlzbid0IGZlYXNpYmxlIHRvCithcnJh
bmdlIHRoYXQga2luZCBvZiBlbnZpcm9ubWVudC4gRm9yIGV4YW1wbGUsIHN0YXRpY2FsbHktaW5p
dGlhbGl6ZWQgbW9kdWxlcworbWF5IHN0YXJ0IHRocmVhZHMgYmVmb3JlIG1haW4gaXMgZXZlciBy
ZWFjaGVkLiBPbmNlIHRocmVhZHMgaGF2ZSBiZWVuIGNyZWF0ZWQsCitpdCBtYXkgYmUgZGlmZmlj
dWx0IG9yIGltcG9zc2libGUgdG8gY2xlYW4gdGhlbSB1cC4KKworR29vZ2xlIFRlc3QgaGFzIHRo
cmVlIGZlYXR1cmVzIGludGVuZGVkIHRvIHJhaXNlIGF3YXJlbmVzcyBvZiB0aHJlYWRpbmcgaXNz
dWVzLgorCisgIDEuIEEgd2FybmluZyBpcyBlbWl0dGVkIGlmIG11bHRpcGxlIHRocmVhZHMgYXJl
IHJ1bm5pbmcgd2hlbiBhIGRlYXRoIHRlc3QgaXMgZW5jb3VudGVyZWQuCisgIDEuIFRlc3QgY2Fz
ZXMgd2l0aCBhIG5hbWUgZW5kaW5nIGluICJEZWF0aFRlc3QiIGFyZSBydW4gYmVmb3JlIGFsbCBv
dGhlciB0ZXN0cy4KKyAgMS4gSXQgdXNlcyBgY2xvbmUoKWAgaW5zdGVhZCBvZiBgZm9yaygpYCB0
byBzcGF3biB0aGUgY2hpbGQgcHJvY2VzcyBvbiBMaW51eCAoYGNsb25lKClgIGlzIG5vdCBhdmFp
bGFibGUgb24gQ3lnd2luIGFuZCBNYWMpLCBhcyBgZm9yaygpYCBpcyBtb3JlIGxpa2VseSB0byBj
YXVzZSB0aGUgY2hpbGQgdG8gaGFuZyB3aGVuIHRoZSBwYXJlbnQgcHJvY2VzcyBoYXMgbXVsdGlw
bGUgdGhyZWFkcy4KKworSXQncyBwZXJmZWN0bHkgZmluZSB0byBjcmVhdGUgdGhyZWFkcyBpbnNp
ZGUgYSBkZWF0aCB0ZXN0IHN0YXRlbWVudDsgdGhleSBhcmUKK2V4ZWN1dGVkIGluIGEgc2VwYXJh
dGUgcHJvY2VzcyBhbmQgY2Fubm90IGFmZmVjdCB0aGUgcGFyZW50LgorCisjIyBEZWF0aCBUZXN0
IFN0eWxlcyAjIworCitUaGUgInRocmVhZHNhZmUiIGRlYXRoIHRlc3Qgc3R5bGUgd2FzIGludHJv
ZHVjZWQgaW4gb3JkZXIgdG8gaGVscCBtaXRpZ2F0ZSB0aGUKK3Jpc2tzIG9mIHRlc3RpbmcgaW4g
YSBwb3NzaWJseSBtdWx0aXRocmVhZGVkIGVudmlyb25tZW50LiBJdCB0cmFkZXMgaW5jcmVhc2Vk
Cit0ZXN0IGV4ZWN1dGlvbiB0aW1lIChwb3RlbnRpYWxseSBkcmFtYXRpY2FsbHkgc28pIGZvciBp
bXByb3ZlZCB0aHJlYWQgc2FmZXR5LgorV2Ugc3VnZ2VzdCB1c2luZyB0aGUgZmFzdGVyLCBkZWZh
dWx0ICJmYXN0IiBzdHlsZSB1bmxlc3MgeW91ciB0ZXN0IGhhcyBzcGVjaWZpYworcHJvYmxlbXMg
d2l0aCBpdC4KKworWW91IGNhbiBjaG9vc2UgYSBwYXJ0aWN1bGFyIHN0eWxlIG9mIGRlYXRoIHRl
c3RzIGJ5IHNldHRpbmcgdGhlIGZsYWcKK3Byb2dyYW1tYXRpY2FsbHk6CisKK2BgYAorOjp0ZXN0
aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0gInRocmVhZHNhZmUiOworYGBgCisK
K1lvdSBjYW4gZG8gdGhpcyBpbiBgbWFpbigpYCB0byBzZXQgdGhlIHN0eWxlIGZvciBhbGwgZGVh
dGggdGVzdHMgaW4gdGhlCitiaW5hcnksIG9yIGluIGluZGl2aWR1YWwgdGVzdHMuIFJlY2FsbCB0
aGF0IGZsYWdzIGFyZSBzYXZlZCBiZWZvcmUgcnVubmluZyBlYWNoCit0ZXN0IGFuZCByZXN0b3Jl
ZCBhZnRlcndhcmRzLCBzbyB5b3UgbmVlZCBub3QgZG8gdGhhdCB5b3Vyc2VsZi4gRm9yIGV4YW1w
bGU6CisKK2BgYAorVEVTVChNeURlYXRoVGVzdCwgVGVzdE9uZSkgeworICA6OnRlc3Rpbmc6OkZM
QUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAidGhyZWFkc2FmZSI7CisgIC8vIFRoaXMgdGVz
dCBpcyBydW4gaW4gdGhlICJ0aHJlYWRzYWZlIiBzdHlsZToKKyAgQVNTRVJUX0RFQVRIKFRoaXNT
aG91bGREaWUoKSwgIiIpOworfQorCitURVNUKE15RGVhdGhUZXN0LCBUZXN0VHdvKSB7CisgIC8v
IFRoaXMgdGVzdCBpcyBydW4gaW4gdGhlICJmYXN0IiBzdHlsZToKKyAgQVNTRVJUX0RFQVRIKFRo
aXNTaG91bGREaWUoKSwgIiIpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3Yp
IHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIDo6dGVzdGlu
Zzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJmYXN0IjsKKyAgcmV0dXJuIFJVTl9B
TExfVEVTVFMoKTsKK30KK2BgYAorCisjIyBDYXZlYXRzICMjCisKK1RoZSBfc3RhdGVtZW50XyBh
cmd1bWVudCBvZiBgQVNTRVJUX0VYSVQoKWAgY2FuIGJlIGFueSB2YWxpZCBDKysgc3RhdGVtZW50
LgorSWYgaXQgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9uIHZpYSBhIGByZXR1cm5gIHN0YXRl
bWVudCBvciBieSB0aHJvd2luZyBhbiBleGNlcHRpb24sCit0aGUgZGVhdGggdGVzdCBpcyBjb25z
aWRlcmVkIHRvIGhhdmUgZmFpbGVkLiAgU29tZSBHb29nbGUgVGVzdCBtYWNyb3MgbWF5IHJldHVy
bgorZnJvbSB0aGUgY3VycmVudCBmdW5jdGlvbiAoZS5nLiBgQVNTRVJUX1RSVUUoKWApLCBzbyBi
ZSBzdXJlIHRvIGF2b2lkIHRoZW0gaW4gX3N0YXRlbWVudF8uCisKK1NpbmNlIF9zdGF0ZW1lbnRf
IHJ1bnMgaW4gdGhlIGNoaWxkIHByb2Nlc3MsIGFueSBpbi1tZW1vcnkgc2lkZSBlZmZlY3QgKGUu
Zy4KK21vZGlmeWluZyBhIHZhcmlhYmxlLCByZWxlYXNpbmcgbWVtb3J5LCBldGMpIGl0IGNhdXNl
cyB3aWxsIF9ub3RfIGJlIG9ic2VydmFibGUKK2luIHRoZSBwYXJlbnQgcHJvY2Vzcy4gSW4gcGFy
dGljdWxhciwgaWYgeW91IHJlbGVhc2UgbWVtb3J5IGluIGEgZGVhdGggdGVzdCwKK3lvdXIgcHJv
Z3JhbSB3aWxsIGZhaWwgdGhlIGhlYXAgY2hlY2sgYXMgdGhlIHBhcmVudCBwcm9jZXNzIHdpbGwg
bmV2ZXIgc2VlIHRoZQorbWVtb3J5IHJlY2xhaW1lZC4gVG8gc29sdmUgdGhpcyBwcm9ibGVtLCB5
b3UgY2FuCisKKyAgMS4gdHJ5IG5vdCB0byBmcmVlIG1lbW9yeSBpbiBhIGRlYXRoIHRlc3Q7Cisg
IDEuIGZyZWUgdGhlIG1lbW9yeSBhZ2FpbiBpbiB0aGUgcGFyZW50IHByb2Nlc3M7IG9yCisgIDEu
IGRvIG5vdCB1c2UgdGhlIGhlYXAgY2hlY2tlciBpbiB5b3VyIHByb2dyYW0uCisKK0R1ZSB0byBh
biBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIHlvdSBjYW5ub3QgcGxhY2UgbXVsdGlwbGUgZGVhdGgg
dGVzdAorYXNzZXJ0aW9ucyBvbiB0aGUgc2FtZSBsaW5lOyBvdGhlcndpc2UsIGNvbXBpbGF0aW9u
IHdpbGwgZmFpbCB3aXRoIGFuIHVub2J2aW91cworZXJyb3IgbWVzc2FnZS4KKworRGVzcGl0ZSB0
aGUgaW1wcm92ZWQgdGhyZWFkIHNhZmV0eSBhZmZvcmRlZCBieSB0aGUgInRocmVhZHNhZmUiIHN0
eWxlIG9mIGRlYXRoCit0ZXN0LCB0aHJlYWQgcHJvYmxlbXMgc3VjaCBhcyBkZWFkbG9jayBhcmUg
c3RpbGwgcG9zc2libGUgaW4gdGhlIHByZXNlbmNlIG9mCitoYW5kbGVycyByZWdpc3RlcmVkIHdp
dGggYHB0aHJlYWRfYXRmb3JrKDMpYC4KKworIyBVc2luZyBBc3NlcnRpb25zIGluIFN1Yi1yb3V0
aW5lcyAjCisKKyMjIEFkZGluZyBUcmFjZXMgdG8gQXNzZXJ0aW9ucyAjIworCitJZiBhIHRlc3Qg
c3ViLXJvdXRpbmUgaXMgY2FsbGVkIGZyb20gc2V2ZXJhbCBwbGFjZXMsIHdoZW4gYW4gYXNzZXJ0
aW9uCitpbnNpZGUgaXQgZmFpbHMsIGl0IGNhbiBiZSBoYXJkIHRvIHRlbGwgd2hpY2ggaW52b2Nh
dGlvbiBvZiB0aGUKK3N1Yi1yb3V0aW5lIHRoZSBmYWlsdXJlIGlzIGZyb20uICBZb3UgY2FuIGFs
bGV2aWF0ZSB0aGlzIHByb2JsZW0gdXNpbmcKK2V4dHJhIGxvZ2dpbmcgb3IgY3VzdG9tIGZhaWx1
cmUgbWVzc2FnZXMsIGJ1dCB0aGF0IHVzdWFsbHkgY2x1dHRlcnMgdXAKK3lvdXIgdGVzdHMuIEEg
YmV0dGVyIHNvbHV0aW9uIGlzIHRvIHVzZSB0aGUgYFNDT1BFRF9UUkFDRWAgbWFjcm86CisKK3wg
YFNDT1BFRF9UUkFDRShgX21lc3NhZ2VfYCk7YCB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfAorCit3aGVyZSBfbWVzc2FnZV8gY2FuIGJlIGFueXRoaW5nIHN0cmVhbWFibGUgdG8g
YHN0ZDo6b3N0cmVhbWAuIFRoaXMKK21hY3JvIHdpbGwgY2F1c2UgdGhlIGN1cnJlbnQgZmlsZSBu
YW1lLCBsaW5lIG51bWJlciwgYW5kIHRoZSBnaXZlbgorbWVzc2FnZSB0byBiZSBhZGRlZCBpbiBl
dmVyeSBmYWlsdXJlIG1lc3NhZ2UuIFRoZSBlZmZlY3Qgd2lsbCBiZQordW5kb25lIHdoZW4gdGhl
IGNvbnRyb2wgbGVhdmVzIHRoZSBjdXJyZW50IGxleGljYWwgc2NvcGUuCisKK0ZvciBleGFtcGxl
LAorCitgYGAKKzEwOiB2b2lkIFN1YjEoaW50IG4pIHsKKzExOiAgIEVYUEVDVF9FUSgxLCBCYXIo
bikpOworMTI6ICAgRVhQRUNUX0VRKDIsIEJhcihuICsgMSkpOworMTM6IH0KKzE0OgorMTU6IFRF
U1QoRm9vVGVzdCwgQmFyKSB7CisxNjogICB7CisxNzogICAgIFNDT1BFRF9UUkFDRSgiQSIpOyAg
Ly8gVGhpcyB0cmFjZSBwb2ludCB3aWxsIGJlIGluY2x1ZGVkIGluCisxODogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZXZlcnkgZmFpbHVyZSBpbiB0aGlzIHNjb3BlLgorMTk6ICAgICBTdWIx
KDEpOworMjA6ICAgfQorMjE6ICAgLy8gTm93IGl0IHdvbid0LgorMjI6ICAgU3ViMSg5KTsKKzIz
OiB9CitgYGAKKworY291bGQgcmVzdWx0IGluIG1lc3NhZ2VzIGxpa2UgdGhlc2U6CisKK2BgYAor
cGF0aC90by9mb29fdGVzdC5jYzoxMTogRmFpbHVyZQorVmFsdWUgb2Y6IEJhcihuKQorRXhwZWN0
ZWQ6IDEKKyAgQWN0dWFsOiAyCisgICBUcmFjZToKK3BhdGgvdG8vZm9vX3Rlc3QuY2M6MTc6IEEK
KworcGF0aC90by9mb29fdGVzdC5jYzoxMjogRmFpbHVyZQorVmFsdWUgb2Y6IEJhcihuICsgMSkK
K0V4cGVjdGVkOiAyCisgIEFjdHVhbDogMworYGBgCisKK1dpdGhvdXQgdGhlIHRyYWNlLCBpdCB3
b3VsZCd2ZSBiZWVuIGRpZmZpY3VsdCB0byBrbm93IHdoaWNoIGludm9jYXRpb24KK29mIGBTdWIx
KClgIHRoZSB0d28gZmFpbHVyZXMgY29tZSBmcm9tIHJlc3BlY3RpdmVseS4gKFlvdSBjb3VsZCBh
ZGQgYW4KK2V4dHJhIG1lc3NhZ2UgdG8gZWFjaCBhc3NlcnRpb24gaW4gYFN1YjEoKWAgdG8gaW5k
aWNhdGUgdGhlIHZhbHVlIG9mCitgbmAsIGJ1dCB0aGF0J3MgdGVkaW91cy4pCisKK1NvbWUgdGlw
cyBvbiB1c2luZyBgU0NPUEVEX1RSQUNFYDoKKworICAxLiBXaXRoIGEgc3VpdGFibGUgbWVzc2Fn
ZSwgaXQncyBvZnRlbiBlbm91Z2ggdG8gdXNlIGBTQ09QRURfVFJBQ0VgIGF0IHRoZSBiZWdpbm5p
bmcgb2YgYSBzdWItcm91dGluZSwgaW5zdGVhZCBvZiBhdCBlYWNoIGNhbGwgc2l0ZS4KKyAgMS4g
V2hlbiBjYWxsaW5nIHN1Yi1yb3V0aW5lcyBpbnNpZGUgYSBsb29wLCBtYWtlIHRoZSBsb29wIGl0
ZXJhdG9yIHBhcnQgb2YgdGhlIG1lc3NhZ2UgaW4gYFNDT1BFRF9UUkFDRWAgc3VjaCB0aGF0IHlv
dSBjYW4ga25vdyB3aGljaCBpdGVyYXRpb24gdGhlIGZhaWx1cmUgaXMgZnJvbS4KKyAgMS4gU29t
ZXRpbWVzIHRoZSBsaW5lIG51bWJlciBvZiB0aGUgdHJhY2UgcG9pbnQgaXMgZW5vdWdoIGZvciBp
ZGVudGlmeWluZyB0aGUgcGFydGljdWxhciBpbnZvY2F0aW9uIG9mIGEgc3ViLXJvdXRpbmUuIElu
IHRoaXMgY2FzZSwgeW91IGRvbid0IGhhdmUgdG8gY2hvb3NlIGEgdW5pcXVlIG1lc3NhZ2UgZm9y
IGBTQ09QRURfVFJBQ0VgLiBZb3UgY2FuIHNpbXBseSB1c2UgYCIiYC4KKyAgMS4gWW91IGNhbiB1
c2UgYFNDT1BFRF9UUkFDRWAgaW4gYW4gaW5uZXIgc2NvcGUgd2hlbiB0aGVyZSBpcyBvbmUgaW4g
dGhlIG91dGVyIHNjb3BlLiBJbiB0aGlzIGNhc2UsIGFsbCBhY3RpdmUgdHJhY2UgcG9pbnRzIHdp
bGwgYmUgaW5jbHVkZWQgaW4gdGhlIGZhaWx1cmUgbWVzc2FnZXMsIGluIHJldmVyc2Ugb3JkZXIg
dGhleSBhcmUgZW5jb3VudGVyZWQuCisgIDEuIFRoZSB0cmFjZSBkdW1wIGlzIGNsaWNrYWJsZSBp
biBFbWFjcycgY29tcGlsYXRpb24gYnVmZmVyIC0gaGl0IHJldHVybiBvbiBhIGxpbmUgbnVtYmVy
IGFuZCB5b3UnbGwgYmUgdGFrZW4gdG8gdGhhdCBsaW5lIGluIHRoZSBzb3VyY2UgZmlsZSEKKwor
X0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIFByb3BhZ2F0aW5nIEZh
dGFsIEZhaWx1cmVzICMjCisKK0EgY29tbW9uIHBpdGZhbGwgd2hlbiB1c2luZyBgQVNTRVJUXypg
IGFuZCBgRkFJTCpgIGlzIG5vdCB1bmRlcnN0YW5kaW5nIHRoYXQKK3doZW4gdGhleSBmYWlsIHRo
ZXkgb25seSBhYm9ydCB0aGUgX2N1cnJlbnQgZnVuY3Rpb25fLCBub3QgdGhlIGVudGlyZSB0ZXN0
LiBGb3IKK2V4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVzdCB3aWxsIHNlZ2ZhdWx0OgorYGBgCit2
b2lkIFN1YnJvdXRpbmUoKSB7CisgIC8vIEdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUgYW5kIGFi
b3J0cyB0aGUgY3VycmVudCBmdW5jdGlvbi4KKyAgQVNTRVJUX0VRKDEsIDIpOworICAvLyBUaGUg
Zm9sbG93aW5nIHdvbid0IGJlIGV4ZWN1dGVkLgorICAuLi4KK30KKworVEVTVChGb29UZXN0LCBC
YXIpIHsKKyAgU3Vicm91dGluZSgpOworICAvLyBUaGUgaW50ZW5kZWQgYmVoYXZpb3IgaXMgZm9y
IHRoZSBmYXRhbCBmYWlsdXJlCisgIC8vIGluIFN1YnJvdXRpbmUoKSB0byBhYm9ydCB0aGUgZW50
aXJlIHRlc3QuCisgIC8vIFRoZSBhY3R1YWwgYmVoYXZpb3I6IHRoZSBmdW5jdGlvbiBnb2VzIG9u
IGFmdGVyIFN1YnJvdXRpbmUoKSByZXR1cm5zLgorICBpbnQqIHAgPSBOVUxMOworICAqcCA9IDM7
IC8vIFNlZ2ZhdWx0IQorfQorYGBgCisKK1NpbmNlIHdlIGRvbid0IHVzZSBleGNlcHRpb25zLCBp
dCBpcyB0ZWNobmljYWxseSBpbXBvc3NpYmxlIHRvCitpbXBsZW1lbnQgdGhlIGludGVuZGVkIGJl
aGF2aW9yIGhlcmUuICBUbyBhbGxldmlhdGUgdGhpcywgR29vZ2xlIFRlc3QKK3Byb3ZpZGVzIHR3
byBzb2x1dGlvbnMuICBZb3UgY291bGQgdXNlIGVpdGhlciB0aGUKK2AoQVNTRVJUfEVYUEVDVClf
Tk9fRkFUQUxfRkFJTFVSRWAgYXNzZXJ0aW9ucyBvciB0aGUKK2BIYXNGYXRhbEZhaWx1cmUoKWAg
ZnVuY3Rpb24uICBUaGV5IGFyZSBkZXNjcmliZWQgaW4gdGhlIGZvbGxvd2luZyB0d28KK3N1YnNl
Y3Rpb25zLgorCisjIyMgQXNzZXJ0aW5nIG9uIFN1YnJvdXRpbmVzICMjIworCitBcyBzaG93biBh
Ym92ZSwgaWYgeW91ciB0ZXN0IGNhbGxzIGEgc3Vicm91dGluZSB0aGF0IGhhcyBhbiBgQVNTRVJU
XypgCitmYWlsdXJlIGluIGl0LCB0aGUgdGVzdCB3aWxsIGNvbnRpbnVlIGFmdGVyIHRoZSBzdWJy
b3V0aW5lCityZXR1cm5zLiBUaGlzIG1heSBub3QgYmUgd2hhdCB5b3Ugd2FudC4KKworT2Z0ZW4g
cGVvcGxlIHdhbnQgZmF0YWwgZmFpbHVyZXMgdG8gcHJvcGFnYXRlIGxpa2UgZXhjZXB0aW9ucy4g
IEZvcgordGhhdCBHb29nbGUgVGVzdCBvZmZlcnMgdGhlIGZvbGxvd2luZyBtYWNyb3M6CisKK3wg
KipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVz
KiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShgX3N0YXRlbWVudF9gKTtg
IHwgYEVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50X2ApO2AgfCBfc3RhdGVtZW50
XyBkb2Vzbid0IGdlbmVyYXRlIGFueSBuZXcgZmF0YWwgZmFpbHVyZXMgaW4gdGhlIGN1cnJlbnQg
dGhyZWFkLiB8CisKK09ubHkgZmFpbHVyZXMgaW4gdGhlIHRocmVhZCB0aGF0IGV4ZWN1dGVzIHRo
ZSBhc3NlcnRpb24gYXJlIGNoZWNrZWQgdG8KK2RldGVybWluZSB0aGUgcmVzdWx0IG9mIHRoaXMg
dHlwZSBvZiBhc3NlcnRpb25zLiAgSWYgX3N0YXRlbWVudF8KK2NyZWF0ZXMgbmV3IHRocmVhZHMs
IGZhaWx1cmVzIGluIHRoZXNlIHRocmVhZHMgYXJlIGlnbm9yZWQuCisKK0V4YW1wbGVzOgorCitg
YGAKK0FTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEZvbygpKTsKKworaW50IGk7CitFWFBFQ1RfTk9f
RkFUQUxfRkFJTFVSRSh7CisgIGkgPSBCYXIoKTsKK30pOworYGBgCisKK19BdmFpbGFiaWxpdHk6
XyBMaW51eCwgV2luZG93cywgTWFjLiBBc3NlcnRpb25zIGZyb20gbXVsdGlwbGUgdGhyZWFkcwor
YXJlIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgorCisjIyMgQ2hlY2tpbmcgZm9yIEZhaWx1cmVz
IGluIHRoZSBDdXJyZW50IFRlc3QgIyMjCisKK2BIYXNGYXRhbEZhaWx1cmUoKWAgaW4gdGhlIGA6
OnRlc3Rpbmc6OlRlc3RgIGNsYXNzIHJldHVybnMgYHRydWVgIGlmIGFuCithc3NlcnRpb24gaW4g
dGhlIGN1cnJlbnQgdGVzdCBoYXMgc3VmZmVyZWQgYSBmYXRhbCBmYWlsdXJlLiBUaGlzCithbGxv
d3MgZnVuY3Rpb25zIHRvIGNhdGNoIGZhdGFsIGZhaWx1cmVzIGluIGEgc3ViLXJvdXRpbmUgYW5k
IHJldHVybgorZWFybHkuCisKK2BgYAorY2xhc3MgVGVzdCB7CisgcHVibGljOgorICAuLi4KKyAg
c3RhdGljIGJvb2wgSGFzRmF0YWxGYWlsdXJlKCk7Cit9OworYGBgCisKK1RoZSB0eXBpY2FsIHVz
YWdlLCB3aGljaCBiYXNpY2FsbHkgc2ltdWxhdGVzIHRoZSBiZWhhdmlvciBvZiBhIHRocm93bgor
ZXhjZXB0aW9uLCBpczoKKworYGBgCitURVNUKEZvb1Rlc3QsIEJhcikgeworICBTdWJyb3V0aW5l
KCk7CisgIC8vIEFib3J0cyBpZiBTdWJyb3V0aW5lKCkgaGFkIGEgZmF0YWwgZmFpbHVyZS4KKyAg
aWYgKEhhc0ZhdGFsRmFpbHVyZSgpKQorICAgIHJldHVybjsKKyAgLy8gVGhlIGZvbGxvd2luZyB3
b24ndCBiZSBleGVjdXRlZC4KKyAgLi4uCit9CitgYGAKKworSWYgYEhhc0ZhdGFsRmFpbHVyZSgp
YCBpcyB1c2VkIG91dHNpZGUgb2YgYFRFU1QoKWAgLCBgVEVTVF9GKClgICwgb3IgYSB0ZXN0Citm
aXh0dXJlLCB5b3UgbXVzdCBhZGQgdGhlIGA6OnRlc3Rpbmc6OlRlc3Q6OmAgcHJlZml4LCBhcyBp
bjoKKworYGBgCitpZiAoOjp0ZXN0aW5nOjpUZXN0OjpIYXNGYXRhbEZhaWx1cmUoKSkKKyAgcmV0
dXJuOworYGBgCisKK1NpbWlsYXJseSwgYEhhc05vbmZhdGFsRmFpbHVyZSgpYCByZXR1cm5zIGB0
cnVlYCBpZiB0aGUgY3VycmVudCB0ZXN0CitoYXMgYXQgbGVhc3Qgb25lIG5vbi1mYXRhbCBmYWls
dXJlLCBhbmQgYEhhc0ZhaWx1cmUoKWAgcmV0dXJucyBgdHJ1ZWAKK2lmIHRoZSBjdXJyZW50IHRl
c3QgaGFzIGF0IGxlYXN0IG9uZSBmYWlsdXJlIG9mIGVpdGhlciBraW5kLgorCitfQXZhaWxhYmls
aXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4gIGBIYXNOb25mYXRhbEZhaWx1cmUoKWAgYW5kCitg
SGFzRmFpbHVyZSgpYCBhcmUgYXZhaWxhYmxlIHNpbmNlIHZlcnNpb24gMS40LjAuCisKKyMgTG9n
Z2luZyBBZGRpdGlvbmFsIEluZm9ybWF0aW9uICMKKworSW4geW91ciB0ZXN0IGNvZGUsIHlvdSBj
YW4gY2FsbCBgUmVjb3JkUHJvcGVydHkoImtleSIsIHZhbHVlKWAgdG8gbG9nCithZGRpdGlvbmFs
IGluZm9ybWF0aW9uLCB3aGVyZSBgdmFsdWVgIGNhbiBiZSBlaXRoZXIgYSBDIHN0cmluZyBvciBh
IDMyLWJpdAoraW50ZWdlci4gVGhlIF9sYXN0XyB2YWx1ZSByZWNvcmRlZCBmb3IgYSBrZXkgd2ls
bCBiZSBlbWl0dGVkIHRvIHRoZSBYTUwgb3V0cHV0CitpZiB5b3Ugc3BlY2lmeSBvbmUuIEZvciBl
eGFtcGxlLCB0aGUgdGVzdAorCitgYGAKK1RFU1RfRihXaWRnZXRVc2FnZVRlc3QsIE1pbkFuZE1h
eFdpZGdldHMpIHsKKyAgUmVjb3JkUHJvcGVydHkoIk1heGltdW1XaWRnZXRzIiwgQ29tcHV0ZU1h
eFVzYWdlKCkpOworICBSZWNvcmRQcm9wZXJ0eSgiTWluaW11bVdpZGdldHMiLCBDb21wdXRlTWlu
VXNhZ2UoKSk7Cit9CitgYGAKKword2lsbCBvdXRwdXQgWE1MIGxpa2UgdGhpczoKKworYGBgCisu
Li4KKyAgPHRlc3RjYXNlIG5hbWU9Ik1pbkFuZE1heFdpZGdldHMiIHN0YXR1cz0icnVuIiB0aW1l
PSI2IiBjbGFzc25hbWU9IldpZGdldFVzYWdlVGVzdCIKKyAgICAgICAgICAgIE1heGltdW1XaWRn
ZXRzPSIxMiIKKyAgICAgICAgICAgIE1pbmltdW1XaWRnZXRzPSI5IiAvPgorLi4uCitgYGAKKwor
X05vdGVfOgorICAqIGBSZWNvcmRQcm9wZXJ0eSgpYCBpcyBhIHN0YXRpYyBtZW1iZXIgb2YgdGhl
IGBUZXN0YCBjbGFzcy4gVGhlcmVmb3JlIGl0IG5lZWRzIHRvIGJlIHByZWZpeGVkIHdpdGggYDo6
dGVzdGluZzo6VGVzdDo6YCBpZiB1c2VkIG91dHNpZGUgb2YgdGhlIGBURVNUYCBib2R5IGFuZCB0
aGUgdGVzdCBmaXh0dXJlIGNsYXNzLgorICAqIGBrZXlgIG11c3QgYmUgYSB2YWxpZCBYTUwgYXR0
cmlidXRlIG5hbWUsIGFuZCBjYW5ub3QgY29uZmxpY3Qgd2l0aCB0aGUgb25lcyBhbHJlYWR5IHVz
ZWQgYnkgR29vZ2xlIFRlc3QgKGBuYW1lYCwgYHN0YXR1c2AsICAgICBgdGltZWAsIGFuZCBgY2xh
c3NuYW1lYCkuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIFNo
YXJpbmcgUmVzb3VyY2VzIEJldHdlZW4gVGVzdHMgaW4gdGhlIFNhbWUgVGVzdCBDYXNlICMKKwor
CisKK0dvb2dsZSBUZXN0IGNyZWF0ZXMgYSBuZXcgdGVzdCBmaXh0dXJlIG9iamVjdCBmb3IgZWFj
aCB0ZXN0IGluIG9yZGVyIHRvIG1ha2UKK3Rlc3RzIGluZGVwZW5kZW50IGFuZCBlYXNpZXIgdG8g
ZGVidWcuIEhvd2V2ZXIsIHNvbWV0aW1lcyB0ZXN0cyB1c2UgcmVzb3VyY2VzCit0aGF0IGFyZSBl
eHBlbnNpdmUgdG8gc2V0IHVwLCBtYWtpbmcgdGhlIG9uZS1jb3B5LXBlci10ZXN0IG1vZGVsIHBy
b2hpYml0aXZlbHkKK2V4cGVuc2l2ZS4KKworSWYgdGhlIHRlc3RzIGRvbid0IGNoYW5nZSB0aGUg
cmVzb3VyY2UsIHRoZXJlJ3Mgbm8gaGFybSBpbiB0aGVtIHNoYXJpbmcgYQorc2luZ2xlIHJlc291
cmNlIGNvcHkuIFNvLCBpbiBhZGRpdGlvbiB0byBwZXItdGVzdCBzZXQtdXAvdGVhci1kb3duLCBH
b29nbGUgVGVzdAorYWxzbyBzdXBwb3J0cyBwZXItdGVzdC1jYXNlIHNldC11cC90ZWFyLWRvd24u
IFRvIHVzZSBpdDoKKworICAxLiBJbiB5b3VyIHRlc3QgZml4dHVyZSBjbGFzcyAoc2F5IGBGb29U
ZXN0YCApLCBkZWZpbmUgYXMgYHN0YXRpY2Agc29tZSBtZW1iZXIgdmFyaWFibGVzIHRvIGhvbGQg
dGhlIHNoYXJlZCByZXNvdXJjZXMuCisgIDEuIEluIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBjbGFz
cywgZGVmaW5lIGEgYHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKWAgZnVuY3Rpb24gKHJlbWVt
YmVyIG5vdCB0byBzcGVsbCBpdCBhcyAqKmBTZXR1cFRlc3RDYXNlYCoqIHdpdGggYSBzbWFsbCBg
dWAhKSB0byBzZXQgdXAgdGhlIHNoYXJlZCByZXNvdXJjZXMgYW5kIGEgYHN0YXRpYyB2b2lkIFRl
YXJEb3duVGVzdENhc2UoKWAgZnVuY3Rpb24gdG8gdGVhciB0aGVtIGRvd24uCisKK1RoYXQncyBp
dCEgR29vZ2xlIFRlc3QgYXV0b21hdGljYWxseSBjYWxscyBgU2V0VXBUZXN0Q2FzZSgpYCBiZWZv
cmUgcnVubmluZyB0aGUKK19maXJzdCB0ZXN0XyBpbiB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZSAo
aS5lLiBiZWZvcmUgY3JlYXRpbmcgdGhlIGZpcnN0CitgRm9vVGVzdGAgb2JqZWN0KSwgYW5kIGNh
bGxzIGBUZWFyRG93blRlc3RDYXNlKClgIGFmdGVyIHJ1bm5pbmcgdGhlIF9sYXN0IHRlc3RfCitp
biBpdCAoaS5lLiBhZnRlciBkZWxldGluZyB0aGUgbGFzdCBgRm9vVGVzdGAgb2JqZWN0KS4gSW4g
YmV0d2VlbiwgdGhlIHRlc3RzCitjYW4gdXNlIHRoZSBzaGFyZWQgcmVzb3VyY2VzLgorCitSZW1l
bWJlciB0aGF0IHRoZSB0ZXN0IG9yZGVyIGlzIHVuZGVmaW5lZCwgc28geW91ciBjb2RlIGNhbid0
IGRlcGVuZCBvbiBhIHRlc3QKK3ByZWNlZGluZyBvciBmb2xsb3dpbmcgYW5vdGhlci4gQWxzbywg
dGhlIHRlc3RzIG11c3QgZWl0aGVyIG5vdCBtb2RpZnkgdGhlCitzdGF0ZSBvZiBhbnkgc2hhcmVk
IHJlc291cmNlLCBvciwgaWYgdGhleSBkbyBtb2RpZnkgdGhlIHN0YXRlLCB0aGV5IG11c3QKK3Jl
c3RvcmUgdGhlIHN0YXRlIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZSBiZWZvcmUgcGFzc2luZyBjb250
cm9sIHRvIHRoZSBuZXh0Cit0ZXN0LgorCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBwZXItdGVzdC1j
YXNlIHNldC11cCBhbmQgdGVhci1kb3duOgorYGBgCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAvLyBQZXItdGVzdC1jYXNlIHNldC11cC4K
KyAgLy8gQ2FsbGVkIGJlZm9yZSB0aGUgZmlyc3QgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZS4KKyAg
Ly8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90IG5lZWRlZC4KKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0
Q2FzZSgpIHsKKyAgICBzaGFyZWRfcmVzb3VyY2VfID0gbmV3IC4uLjsKKyAgfQorCisgIC8vIFBl
ci10ZXN0LWNhc2UgdGVhci1kb3duLgorICAvLyBDYWxsZWQgYWZ0ZXIgdGhlIGxhc3QgdGVzdCBp
biB0aGlzIHRlc3QgY2FzZS4KKyAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90IG5lZWRlZC4KKyAg
c3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBkZWxldGUgc2hhcmVkX3Jlc291
cmNlXzsKKyAgICBzaGFyZWRfcmVzb3VyY2VfID0gTlVMTDsKKyAgfQorCisgIC8vIFlvdSBjYW4g
ZGVmaW5lIHBlci10ZXN0IHNldC11cCBhbmQgdGVhci1kb3duIGxvZ2ljIGFzIHVzdWFsLgorICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IC4uLiB9CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsg
Li4uIH0KKworICAvLyBTb21lIGV4cGVuc2l2ZSByZXNvdXJjZSBzaGFyZWQgYnkgYWxsIHRlc3Rz
LgorICBzdGF0aWMgVCogc2hhcmVkX3Jlc291cmNlXzsKK307CisKK1QqIEZvb1Rlc3Q6OnNoYXJl
ZF9yZXNvdXJjZV8gPSBOVUxMOworCitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgLi4uIHlv
dSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlIGhlcmUgLi4uCit9CitURVNUX0YoRm9vVGVz
dCwgVGVzdDIpIHsKKyAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlIGhlcmUg
Li4uCit9CitgYGAKKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMg
R2xvYmFsIFNldC1VcCBhbmQgVGVhci1Eb3duICMKKworSnVzdCBhcyB5b3UgY2FuIGRvIHNldC11
cCBhbmQgdGVhci1kb3duIGF0IHRoZSB0ZXN0IGxldmVsIGFuZCB0aGUgdGVzdCBjYXNlCitsZXZl
bCwgeW91IGNhbiBhbHNvIGRvIGl0IGF0IHRoZSB0ZXN0IHByb2dyYW0gbGV2ZWwuIEhlcmUncyBo
b3cuCisKK0ZpcnN0LCB5b3Ugc3ViY2xhc3MgdGhlIGA6OnRlc3Rpbmc6OkVudmlyb25tZW50YCBj
bGFzcyB0byBkZWZpbmUgYSB0ZXN0CitlbnZpcm9ubWVudCwgd2hpY2gga25vd3MgaG93IHRvIHNl
dC11cCBhbmQgdGVhci1kb3duOgorCitgYGAKK2NsYXNzIEVudmlyb25tZW50IHsKKyBwdWJsaWM6
CisgIHZpcnR1YWwgfkVudmlyb25tZW50KCkge30KKyAgLy8gT3ZlcnJpZGUgdGhpcyB0byBkZWZp
bmUgaG93IHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQuCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgp
IHt9CisgIC8vIE92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGhvdyB0byB0ZWFyIGRvd24gdGhlIGVu
dmlyb25tZW50LgorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7fQorfTsKK2BgYAorCitUaGVu
LCB5b3UgcmVnaXN0ZXIgYW4gaW5zdGFuY2Ugb2YgeW91ciBlbnZpcm9ubWVudCBjbGFzcyB3aXRo
IEdvb2dsZSBUZXN0IGJ5CitjYWxsaW5nIHRoZSBgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52
aXJvbm1lbnQoKWAgZnVuY3Rpb246CisKK2BgYAorRW52aXJvbm1lbnQqIEFkZEdsb2JhbFRlc3RF
bnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KTsKK2BgYAorCitOb3csIHdoZW4gYFJVTl9BTExf
VEVTVFMoKWAgaXMgY2FsbGVkLCBpdCBmaXJzdCBjYWxscyB0aGUgYFNldFVwKClgIG1ldGhvZCBv
ZgordGhlIGVudmlyb25tZW50IG9iamVjdCwgdGhlbiBydW5zIHRoZSB0ZXN0cyBpZiB0aGVyZSB3
YXMgbm8gZmF0YWwgZmFpbHVyZXMsIGFuZAorZmluYWxseSBjYWxscyBgVGVhckRvd24oKWAgb2Yg
dGhlIGVudmlyb25tZW50IG9iamVjdC4KKworSXQncyBPSyB0byByZWdpc3RlciBtdWx0aXBsZSBl
bnZpcm9ubWVudCBvYmplY3RzLiBJbiB0aGlzIGNhc2UsIHRoZWlyIGBTZXRVcCgpYAord2lsbCBi
ZSBjYWxsZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIHJlZ2lzdGVyZWQsIGFuZCB0aGVpciBgVGVh
ckRvd24oKWAgd2lsbCBiZQorY2FsbGVkIGluIHRoZSByZXZlcnNlIG9yZGVyLgorCitOb3RlIHRo
YXQgR29vZ2xlIFRlc3QgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSByZWdpc3RlcmVkIGVudmlyb25t
ZW50IG9iamVjdHMuCitUaGVyZWZvcmUgKipkbyBub3QgZGVsZXRlIHRoZW0qKiBieSB5b3Vyc2Vs
Zi4KKworWW91IHNob3VsZCBjYWxsIGBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgYmVmb3Jl
IGBSVU5fQUxMX1RFU1RTKClgIGlzCitjYWxsZWQsIHByb2JhYmx5IGluIGBtYWluKClgLiBJZiB5
b3UgdXNlIGBndGVzdF9tYWluYCwgeW91IG5lZWQgdG8gICAgICBjYWxsCit0aGlzIGJlZm9yZSBg
bWFpbigpYCBzdGFydHMgZm9yIGl0IHRvIHRha2UgZWZmZWN0LiBPbmUgd2F5IHRvIGRvIHRoaXMg
aXMgdG8KK2RlZmluZSBhIGdsb2JhbCB2YXJpYWJsZSBsaWtlIHRoaXM6CisKK2BgYAorOjp0ZXN0
aW5nOjpFbnZpcm9ubWVudCogY29uc3QgZm9vX2VudiA9IDo6dGVzdGluZzo6QWRkR2xvYmFsVGVz
dEVudmlyb25tZW50KG5ldyBGb29FbnZpcm9ubWVudCk7CitgYGAKKworSG93ZXZlciwgd2Ugc3Ry
b25nbHkgcmVjb21tZW5kIHlvdSB0byB3cml0ZSB5b3VyIG93biBgbWFpbigpYCBhbmQgY2FsbAor
YEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCB0aGVyZSwgYXMgcmVseWluZyBvbiBpbml0aWFs
aXphdGlvbiBvZiBnbG9iYWwKK3ZhcmlhYmxlcyBtYWtlcyB0aGUgY29kZSBoYXJkZXIgdG8gcmVh
ZCBhbmQgbWF5IGNhdXNlIHByb2JsZW1zIHdoZW4geW91CityZWdpc3RlciBtdWx0aXBsZSBlbnZp
cm9ubWVudHMgZnJvbSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMgYW5kIHRoZQorZW52aXJv
bm1lbnRzIGhhdmUgZGVwZW5kZW5jaWVzIGFtb25nIHRoZW0gKHJlbWVtYmVyIHRoYXQgdGhlIGNv
bXBpbGVyIGRvZXNuJ3QKK2d1YXJhbnRlZSB0aGUgb3JkZXIgaW4gd2hpY2ggZ2xvYmFsIHZhcmlh
YmxlcyBmcm9tIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cworYXJlIGluaXRpYWxpemVkKS4K
KworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKworIyBWYWx1ZSBQYXJh
bWV0ZXJpemVkIFRlc3RzICMKKworX1ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHNfIGFsbG93IHlv
dSB0byB0ZXN0IHlvdXIgY29kZSB3aXRoIGRpZmZlcmVudAorcGFyYW1ldGVycyB3aXRob3V0IHdy
aXRpbmcgbXVsdGlwbGUgY29waWVzIG9mIHRoZSBzYW1lIHRlc3QuCisKK1N1cHBvc2UgeW91IHdy
aXRlIGEgdGVzdCBmb3IgeW91ciBjb2RlIGFuZCB0aGVuIHJlYWxpemUgdGhhdCB5b3VyIGNvZGUg
aXMgYWZmZWN0ZWQgYnkgYSBwcmVzZW5jZSBvZiBhIEJvb2xlYW4gY29tbWFuZCBsaW5lIGZsYWcu
CisKK2BgYAorVEVTVChNeUNvZGVUZXN0LCBUZXN0Rm9vKSB7CisgIC8vIEEgY29kZSB0byB0ZXN0
IGZvbygpLgorfQorYGBgCisKK1VzdWFsbHkgcGVvcGxlIGZhY3RvciB0aGVpciB0ZXN0IGNvZGUg
aW50byBhIGZ1bmN0aW9uIHdpdGggYSBCb29sZWFuIHBhcmFtZXRlciBpbiBzdWNoIHNpdHVhdGlv
bnMuIFRoZSBmdW5jdGlvbiBzZXRzIHRoZSBmbGFnLCB0aGVuIGV4ZWN1dGVzIHRoZSB0ZXN0aW5n
IGNvZGUuCisKK2BgYAordm9pZCBUZXN0Rm9vSGVscGVyKGJvb2wgZmxhZ192YWx1ZSkgeworICBm
bGFnID0gZmxhZ192YWx1ZTsKKyAgLy8gQSBjb2RlIHRvIHRlc3QgZm9vKCkuCit9CisKK1RFU1Qo
TXlDb2RlVGVzdCwgVGVzdEZvb28pIHsKKyAgVGVzdEZvb0hlbHBlcihmYWxzZSk7CisgIFRlc3RG
b29IZWxwZXIodHJ1ZSk7Cit9CitgYGAKKworQnV0IHRoaXMgc2V0dXAgaGFzIHNlcmlvdXMgZHJh
d2JhY2tzLiBGaXJzdCwgd2hlbiBhIHRlc3QgYXNzZXJ0aW9uIGZhaWxzIGluIHlvdXIgdGVzdHMs
IGl0IGJlY29tZXMgdW5jbGVhciB3aGF0IHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgY2F1c2VkIGl0
IHRvIGZhaWwuIFlvdSBjYW4gc3RyZWFtIGEgY2xhcmlmeWluZyBtZXNzYWdlIGludG8geW91ciBg
RVhQRUNUYC9gQVNTRVJUYCBzdGF0ZW1lbnRzLCBidXQgaXQgeW91J2xsIGhhdmUgdG8gZG8gaXQg
d2l0aCBhbGwgb2YgdGhlbS4gU2Vjb25kLCB5b3UgaGF2ZSB0byBhZGQgb25lIHN1Y2ggaGVscGVy
IGZ1bmN0aW9uIHBlciB0ZXN0LiBXaGF0IGlmIHlvdSBoYXZlIHRlbiB0ZXN0cz8gVHdlbnR5PyBB
IGh1bmRyZWQ/CisKK1ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgd2lsbCBsZXQgeW91IHdyaXRl
IHlvdXIgdGVzdCBvbmx5IG9uY2UgYW5kIHRoZW4gZWFzaWx5IGluc3RhbnRpYXRlIGFuZCBydW4g
aXQgd2l0aCBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHBhcmFtZXRlciB2YWx1ZXMuCisKK0hlcmUg
YXJlIHNvbWUgb3RoZXIgc2l0dWF0aW9ucyB3aGVuIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMg
Y29tZSBoYW5keToKKworICAqIFlvdSB3YW50IHRvIHRlc3QgZGlmZmVyZW50IGltcGxlbWVudGF0
aW9ucyBvZiBhbiBPTyBpbnRlcmZhY2UuCisgICogWW91IHdhbnQgdG8gdGVzdCB5b3VyIGNvZGUg
b3ZlciB2YXJpb3VzIGlucHV0cyAoYS5rLmEuIGRhdGEtZHJpdmVuIHRlc3RpbmcpLiBUaGlzIGZl
YXR1cmUgaXMgZWFzeSB0byBhYnVzZSwgc28gcGxlYXNlIGV4ZXJjaXNlIHlvdXIgZ29vZCBzZW5z
ZSB3aGVuIGRvaW5nIGl0IQorCisjIyBIb3cgdG8gV3JpdGUgVmFsdWUtUGFyYW1ldGVyaXplZCBU
ZXN0cyAjIworCitUbyB3cml0ZSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLCBmaXJzdCB5b3Ug
c2hvdWxkIGRlZmluZSBhIGZpeHR1cmUKK2NsYXNzLiAgSXQgbXVzdCBiZSBkZXJpdmVkIGZyb20g
Ym90aCBgOjp0ZXN0aW5nOjpUZXN0YCBhbmQKK2A6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFj
ZTxUPmAgKHRoZSBsYXR0ZXIgaXMgYSBwdXJlIGludGVyZmFjZSksCit3aGVyZSBgVGAgaXMgdGhl
IHR5cGUgb2YgeW91ciBwYXJhbWV0ZXIgdmFsdWVzLiAgRm9yIGNvbnZlbmllbmNlLCB5b3UKK2Nh
biBqdXN0IGRlcml2ZSB0aGUgZml4dHVyZSBjbGFzcyBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RXaXRo
UGFyYW08VD5gLAord2hpY2ggaXRzZWxmIGlzIGRlcml2ZWQgZnJvbSBib3RoIGA6OnRlc3Rpbmc6
OlRlc3RgIGFuZAorYDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPFQ+YC4gYFRgIGNhbiBi
ZSBhbnkgY29weWFibGUgdHlwZS4gSWYKK2l0J3MgYSByYXcgcG9pbnRlciwgeW91IGFyZSByZXNw
b25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIGxpZmVzcGFuIG9mCit0aGUgcG9pbnRlZCB2YWx1ZXMu
CisKK2BgYAorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08
Y29uc3QgY2hhcio+IHsKKyAgLy8gWW91IGNhbiBpbXBsZW1lbnQgYWxsIHRoZSB1c3VhbCBmaXh0
dXJlIGNsYXNzIG1lbWJlcnMgaGVyZS4KKyAgLy8gVG8gYWNjZXNzIHRoZSB0ZXN0IHBhcmFtZXRl
ciwgY2FsbCBHZXRQYXJhbSgpIGZyb20gY2xhc3MKKyAgLy8gVGVzdFdpdGhQYXJhbTxUPi4KK307
CisKKy8vIE9yLCB3aGVuIHlvdSB3YW50IHRvIGFkZCBwYXJhbWV0ZXJzIHRvIGEgcHJlLWV4aXN0
aW5nIGZpeHR1cmUgY2xhc3M6CitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3QgeworICAuLi4KK307CitjbGFzcyBCYXJUZXN0IDogcHVibGljIEJhc2VUZXN0LAorICAgICAg
ICAgICAgICAgIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxjb25zdCBjaGFy
Kj4geworICAuLi4KK307CitgYGAKKworVGhlbiwgdXNlIHRoZSBgVEVTVF9QYCBtYWNybyB0byBk
ZWZpbmUgYXMgbWFueSB0ZXN0IHBhdHRlcm5zIHVzaW5nCit0aGlzIGZpeHR1cmUgYXMgeW91IHdh
bnQuICBUaGUgYF9QYCBzdWZmaXggaXMgZm9yICJwYXJhbWV0ZXJpemVkIiBvcgorInBhdHRlcm4i
LCB3aGljaGV2ZXIgeW91IHByZWZlciB0byB0aGluay4KKworYGBgCitURVNUX1AoRm9vVGVzdCwg
RG9lc0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgYWNjZXNzIHRoZSB0ZXN0IHBhcmFtZXRl
ciB3aXRoIHRoZSBHZXRQYXJhbSgpIG1ldGhvZAorICAvLyBvZiB0aGUgVGVzdFdpdGhQYXJhbTxU
PiBjbGFzczoKKyAgRVhQRUNUX1RSVUUoZm9vLkJsYWgoR2V0UGFyYW0oKSkpOworICAuLi4KK30K
KworVEVTVF9QKEZvb1Rlc3QsIEhhc0JsYWhCbGFoKSB7CisgIC4uLgorfQorYGBgCisKK0ZpbmFs
bHksIHlvdSBjYW4gdXNlIGBJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgdG8gaW5zdGFudGlhdGUg
dGhlIHRlc3QKK2Nhc2Ugd2l0aCBhbnkgc2V0IG9mIHBhcmFtZXRlcnMgeW91IHdhbnQuIEdvb2ds
ZSBUZXN0IGRlZmluZXMgYSBudW1iZXIgb2YKK2Z1bmN0aW9ucyBmb3IgZ2VuZXJhdGluZyB0ZXN0
IHBhcmFtZXRlcnMuIFRoZXkgcmV0dXJuIHdoYXQgd2UgY2FsbAorKHN1cnByaXNlISkgX3BhcmFt
ZXRlciBnZW5lcmF0b3JzXy4gSGVyZSBpcyBhIHN1bW1hcnkgb2YgdGhlbSwKK3doaWNoIGFyZSBh
bGwgaW4gdGhlIGB0ZXN0aW5nYCBuYW1lc3BhY2U6CisKK3wgYFJhbmdlKGJlZ2luLCBlbmRbLCBz
dGVwXSlgIHwgWWllbGRzIHZhbHVlcyBge2JlZ2luLCBiZWdpbitzdGVwLCBiZWdpbitzdGVwK3N0
ZXAsIC4uLn1gLiBUaGUgdmFsdWVzIGRvIG5vdCBpbmNsdWRlIGBlbmRgLiBgc3RlcGAgZGVmYXVs
dHMgdG8gMS4gfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGBWYWx1ZXMo
djEsIHYyLCAuLi4sIHZOKWAgICB8IFlpZWxkcyB2YWx1ZXMgYHt2MSwgdjIsIC4uLiwgdk59YC4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYFZhbHVlc0luKGNvbnRhaW5lcilgIGFuZCBgVmFs
dWVzSW4oYmVnaW4sIGVuZClgIHwgWWllbGRzIHZhbHVlcyBmcm9tIGEgQy1zdHlsZSBhcnJheSwg
YW4gU1RMLXN0eWxlIGNvbnRhaW5lciwgb3IgYW4gaXRlcmF0b3IgcmFuZ2UgYFtiZWdpbiwgZW5k
KWAuIGBjb250YWluZXJgLCBgYmVnaW5gLCBhbmQgYGVuZGAgY2FuIGJlIGV4cHJlc3Npb25zIHdo
b3NlIHZhbHVlcyBhcmUgZGV0ZXJtaW5lZCBhdCBydW4gdGltZS4gIHwKK3wgYEJvb2woKWAgICAg
ICAgICAgICAgICAgICAgIHwgWWllbGRzIHNlcXVlbmNlIGB7ZmFsc2UsIHRydWV9YC4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorfCBgQ29tYmluZShnMSwgZzIsIC4uLiwgZ04pYCAgfCBZaWVs
ZHMgYWxsIGNvbWJpbmF0aW9ucyAodGhlIENhcnRlc2lhbiBwcm9kdWN0IGZvciB0aGUgbWF0aCBz
YXZ2eSkgb2YgdGhlIHZhbHVlcyBnZW5lcmF0ZWQgYnkgdGhlIGBOYCBnZW5lcmF0b3JzLiBUaGlz
IGlzIG9ubHkgYXZhaWxhYmxlIGlmIHlvdXIgc3lzdGVtIHByb3ZpZGVzIHRoZSBgPHRyMS90dXBs
ZT5gIGhlYWRlci4gSWYgeW91IGFyZSBzdXJlIHlvdXIgc3lzdGVtIGRvZXMsIGFuZCBHb29nbGUg
VGVzdCBkaXNhZ3JlZXMsIHlvdSBjYW4gb3ZlcnJpZGUgaXQgYnkgZGVmaW5pbmcgYEdURVNUX0hB
U19UUjFfVFVQTEU9MWAuIFNlZSBjb21tZW50cyBpbiBbaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9n
dGVzdC1wb3J0LmhdKC4uL2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oKSBmb3Ig
bW9yZSBpbmZvcm1hdGlvbi4gfAorCitGb3IgbW9yZSBkZXRhaWxzLCBzZWUgdGhlIGNvbW1lbnRz
IGF0IHRoZSBkZWZpbml0aW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMgaW4gdGhlIFtzb3VyY2UgY29k
ZV0oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgpLgorCitUaGUgZm9sbG93aW5n
IHN0YXRlbWVudCB3aWxsIGluc3RhbnRpYXRlIHRlc3RzIGZyb20gdGhlIGBGb29UZXN0YCB0ZXN0
IGNhc2UKK2VhY2ggd2l0aCBwYXJhbWV0ZXIgdmFsdWVzIGAibWVlbnkiYCwgYCJtaW55ImAsIGFu
ZCBgIm1vZSJgLgorCitgYGAKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEluc3RhbnRpYXRpb25O
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgRm9vVGVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKCJtZWVueSIsICJtaW55IiwgIm1vZSIpKTsKK2BgYAor
CitUbyBkaXN0aW5ndWlzaCBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIHRoZSBwYXR0ZXJuICh5ZXMs
IHlvdSBjYW4KK2luc3RhbnRpYXRlIGl0IG1vcmUgdGhhbiBvbmNlKSwgdGhlIGZpcnN0IGFyZ3Vt
ZW50IHRvCitgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIGlzIGEgcHJlZml4IHRoYXQgd2lsbCBi
ZSBhZGRlZCB0byB0aGUgYWN0dWFsCit0ZXN0IGNhc2UgbmFtZS4gUmVtZW1iZXIgdG8gcGljayB1
bmlxdWUgcHJlZml4ZXMgZm9yIGRpZmZlcmVudAoraW5zdGFudGlhdGlvbnMuIFRoZSB0ZXN0cyBm
cm9tIHRoZSBpbnN0YW50aWF0aW9uIGFib3ZlIHdpbGwgaGF2ZSB0aGVzZQorbmFtZXM6CisKKyAg
KiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8wYCBmb3IgYCJtZWVueSJgCisg
ICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMWAgZm9yIGAibWlueSJgCisg
ICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMmAgZm9yIGAibW9lImAKKyAg
KiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8wYCBmb3IgYCJtZWVueSJg
CisgICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMWAgZm9yIGAibWlu
eSJgCisgICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMmAgZm9yIGAi
bW9lImAKKworWW91IGNhbiB1c2UgdGhlc2UgbmFtZXMgaW4gWy0tZ3Rlc3RcLWZpbHRlcl0oI3J1
bm5pbmctYS1zdWJzZXQtb2YtdGhlLXRlc3RzKS4KKworVGhpcyBzdGF0ZW1lbnQgd2lsbCBpbnN0
YW50aWF0ZSBhbGwgdGVzdHMgZnJvbSBgRm9vVGVzdGAgYWdhaW4sIGVhY2gKK3dpdGggcGFyYW1l
dGVyIHZhbHVlcyBgImNhdCJgIGFuZCBgImRvZyJgOgorCitgYGAKK2NvbnN0IGNoYXIqIHBldHNb
XSA9IHsiY2F0IiwgImRvZyJ9OworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQW5vdGhlckluc3Rh
bnRpYXRpb25OYW1lLCBGb29UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5n
OjpWYWx1ZXNJbihwZXRzKSk7CitgYGAKKworVGhlIHRlc3RzIGZyb20gdGhlIGluc3RhbnRpYXRp
b24gYWJvdmUgd2lsbCBoYXZlIHRoZXNlIG5hbWVzOgorCisgICogYEFub3RoZXJJbnN0YW50aWF0
aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzBgIGZvciBgImNhdCJgCisgICogYEFub3RoZXJJbnN0
YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzFgIGZvciBgImRvZyJgCisgICogYEFub3Ro
ZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzBgIGZvciBgImNhdCJgCisg
ICogYEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzFgIGZvciBg
ImRvZyJgCisKK1BsZWFzZSBub3RlIHRoYXQgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCB3aWxs
IGluc3RhbnRpYXRlIF9hbGxfCit0ZXN0cyBpbiB0aGUgZ2l2ZW4gdGVzdCBjYXNlLCB3aGV0aGVy
IHRoZWlyIGRlZmluaXRpb25zIGNvbWUgYmVmb3JlIG9yCitfYWZ0ZXJfIHRoZSBgSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1BgIHN0YXRlbWVudC4KKworWW91IGNhbiBzZWUKK1t0aGVzZV0oLi4vc2Ft
cGxlcy9zYW1wbGU3X3VuaXR0ZXN0LmNjKQorW2ZpbGVzXSguLi9zYW1wbGVzL3NhbXBsZThfdW5p
dHRlc3QuY2MpIGZvciBtb3JlIGV4YW1wbGVzLgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdp
bmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFjOyBzaW5jZSB2ZXJzaW9uIDEu
Mi4wLgorCisjIyBDcmVhdGluZyBWYWx1ZS1QYXJhbWV0ZXJpemVkIEFic3RyYWN0IFRlc3RzICMj
CisKK0luIHRoZSBhYm92ZSwgd2UgZGVmaW5lIGFuZCBpbnN0YW50aWF0ZSBgRm9vVGVzdGAgaW4g
dGhlIHNhbWUgc291cmNlCitmaWxlLiBTb21ldGltZXMgeW91IG1heSB3YW50IHRvIGRlZmluZSB2
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGluIGEKK2xpYnJhcnkgYW5kIGxldCBvdGhlciBwZW9w
bGUgaW5zdGFudGlhdGUgdGhlbSBsYXRlci4gVGhpcyBwYXR0ZXJuIGlzCitrbm93biBhcyA8aT5h
YnN0cmFjdCB0ZXN0czwvaT4uIEFzIGFuIGV4YW1wbGUgb2YgaXRzIGFwcGxpY2F0aW9uLCB3aGVu
IHlvdQorYXJlIGRlc2lnbmluZyBhbiBpbnRlcmZhY2UgeW91IGNhbiB3cml0ZSBhIHN0YW5kYXJk
IHN1aXRlIG9mIGFic3RyYWN0Cit0ZXN0cyAocGVyaGFwcyB1c2luZyBhIGZhY3RvcnkgZnVuY3Rp
b24gYXMgdGhlIHRlc3QgcGFyYW1ldGVyKSB0aGF0CithbGwgaW1wbGVtZW50YXRpb25zIG9mIHRo
ZSBpbnRlcmZhY2UgYXJlIGV4cGVjdGVkIHRvIHBhc3MuIFdoZW4KK3NvbWVvbmUgaW1wbGVtZW50
cyB0aGUgaW50ZXJmYWNlLCBoZSBjYW4gaW5zdGFudGlhdGUgeW91ciBzdWl0ZSB0byBnZXQKK2Fs
bCB0aGUgaW50ZXJmYWNlLWNvbmZvcm1hbmNlIHRlc3RzIGZvciBmcmVlLgorCitUbyBkZWZpbmUg
YWJzdHJhY3QgdGVzdHMsIHlvdSBzaG91bGQgb3JnYW5pemUgeW91ciBjb2RlIGxpa2UgdGhpczoK
KworICAxLiBQdXQgdGhlIGRlZmluaXRpb24gb2YgdGhlIHBhcmFtZXRlcml6ZWQgdGVzdCBmaXh0
dXJlIGNsYXNzIChlLmcuIGBGb29UZXN0YCkgaW4gYSBoZWFkZXIgZmlsZSwgc2F5IGBmb29fcGFy
YW1fdGVzdC5oYC4gVGhpbmsgb2YgdGhpcyBhcyBfZGVjbGFyaW5nXyB5b3VyIGFic3RyYWN0IHRl
c3RzLgorICAxLiBQdXQgdGhlIGBURVNUX1BgIGRlZmluaXRpb25zIGluIGBmb29fcGFyYW1fdGVz
dC5jY2AsIHdoaWNoIGluY2x1ZGVzIGBmb29fcGFyYW1fdGVzdC5oYC4gVGhpbmsgb2YgdGhpcyBh
cyBfaW1wbGVtZW50aW5nXyB5b3VyIGFic3RyYWN0IHRlc3RzLgorCitPbmNlIHRoZXkgYXJlIGRl
ZmluZWQsIHlvdSBjYW4gaW5zdGFudGlhdGUgdGhlbSBieSBpbmNsdWRpbmcKK2Bmb29fcGFyYW1f
dGVzdC5oYCwgaW52b2tpbmcgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKClgLCBhbmQgbGlua2lu
Zword2l0aCBgZm9vX3BhcmFtX3Rlc3QuY2NgLiBZb3UgY2FuIGluc3RhbnRpYXRlIHRoZSBzYW1l
IGFic3RyYWN0IHRlc3QKK2Nhc2UgbXVsdGlwbGUgdGltZXMsIHBvc3NpYmx5IGluIGRpZmZlcmVu
dCBzb3VyY2UgZmlsZXMuCisKKyMgVHlwZWQgVGVzdHMgIworCitTdXBwb3NlIHlvdSBoYXZlIG11
bHRpcGxlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kCit3YW50IHRv
IG1ha2Ugc3VyZSB0aGF0IGFsbCBvZiB0aGVtIHNhdGlzZnkgc29tZSBjb21tb24gcmVxdWlyZW1l
bnRzLgorT3IsIHlvdSBtYXkgaGF2ZSBkZWZpbmVkIHNldmVyYWwgdHlwZXMgdGhhdCBhcmUgc3Vw
cG9zZWQgdG8gY29uZm9ybSB0bwordGhlIHNhbWUgImNvbmNlcHQiIGFuZCB5b3Ugd2FudCB0byB2
ZXJpZnkgaXQuICBJbiBib3RoIGNhc2VzLCB5b3Ugd2FudAordGhlIHNhbWUgdGVzdCBsb2dpYyBy
ZXBlYXRlZCBmb3IgZGlmZmVyZW50IHR5cGVzLgorCitXaGlsZSB5b3UgY2FuIHdyaXRlIG9uZSBg
VEVTVGAgb3IgYFRFU1RfRmAgZm9yIGVhY2ggdHlwZSB5b3Ugd2FudCB0bwordGVzdCAoYW5kIHlv
dSBtYXkgZXZlbiBmYWN0b3IgdGhlIHRlc3QgbG9naWMgaW50byBhIGZ1bmN0aW9uIHRlbXBsYXRl
Cit0aGF0IHlvdSBpbnZva2UgZnJvbSB0aGUgYFRFU1RgKSwgaXQncyB0ZWRpb3VzIGFuZCBkb2Vz
bid0IHNjYWxlOgoraWYgeW91IHdhbnQgX21fIHRlc3RzIG92ZXIgX25fIHR5cGVzLCB5b3UnbGwg
ZW5kIHVwIHdyaXRpbmcgX21cKm5fCitgVEVTVGBzLgorCitfVHlwZWQgdGVzdHNfIGFsbG93IHlv
dSB0byByZXBlYXQgdGhlIHNhbWUgdGVzdCBsb2dpYyBvdmVyIGEgbGlzdCBvZgordHlwZXMuICBZ
b3Ugb25seSBuZWVkIHRvIHdyaXRlIHRoZSB0ZXN0IGxvZ2ljIG9uY2UsIGFsdGhvdWdoIHlvdSBt
dXN0Citrbm93IHRoZSB0eXBlIGxpc3Qgd2hlbiB3cml0aW5nIHR5cGVkIHRlc3RzLiAgSGVyZSdz
IGhvdyB5b3UgZG8gaXQ6CisKK0ZpcnN0LCBkZWZpbmUgYSBmaXh0dXJlIGNsYXNzIHRlbXBsYXRl
LiAgSXQgc2hvdWxkIGJlIHBhcmFtZXRlcml6ZWQKK2J5IGEgdHlwZS4gIFJlbWVtYmVyIHRvIGRl
cml2ZSBpdCBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RgOgorCitgYGAKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHB1YmxpYzoK
KyAgLi4uCisgIHR5cGVkZWYgc3RkOjpsaXN0PFQ+IExpc3Q7CisgIHN0YXRpYyBUIHNoYXJlZF87
CisgIFQgdmFsdWVfOworfTsKK2BgYAorCitOZXh0LCBhc3NvY2lhdGUgYSBsaXN0IG9mIHR5cGVz
IHdpdGggdGhlIHRlc3QgY2FzZSwgd2hpY2ggd2lsbCBiZQorcmVwZWF0ZWQgZm9yIGVhY2ggdHlw
ZSBpbiB0aGUgbGlzdDoKKworYGBgCit0eXBlZGVmIDo6dGVzdGluZzo6VHlwZXM8Y2hhciwgaW50
LCB1bnNpZ25lZCBpbnQ+IE15VHlwZXM7CitUWVBFRF9URVNUX0NBU0UoRm9vVGVzdCwgTXlUeXBl
cyk7CitgYGAKKworVGhlIGB0eXBlZGVmYCBpcyBuZWNlc3NhcnkgZm9yIHRoZSBgVFlQRURfVEVT
VF9DQVNFYCBtYWNybyB0byBwYXJzZQorY29ycmVjdGx5LiAgT3RoZXJ3aXNlIHRoZSBjb21waWxl
ciB3aWxsIHRoaW5rIHRoYXQgZWFjaCBjb21tYSBpbiB0aGUKK3R5cGUgbGlzdCBpbnRyb2R1Y2Vz
IGEgbmV3IG1hY3JvIGFyZ3VtZW50LgorCitUaGVuLCB1c2UgYFRZUEVEX1RFU1QoKWAgaW5zdGVh
ZCBvZiBgVEVTVF9GKClgIHRvIGRlZmluZSBhIHR5cGVkIHRlc3QKK2ZvciB0aGlzIHRlc3QgY2Fz
ZS4gIFlvdSBjYW4gcmVwZWF0IHRoaXMgYXMgbWFueSB0aW1lcyBhcyB5b3Ugd2FudDoKKworYGBg
CitUWVBFRF9URVNUKEZvb1Rlc3QsIERvZXNCbGFoKSB7CisgIC8vIEluc2lkZSBhIHRlc3QsIHJl
ZmVyIHRvIHRoZSBzcGVjaWFsIG5hbWUgVHlwZVBhcmFtIHRvIGdldCB0aGUgdHlwZQorICAvLyBw
YXJhbWV0ZXIuICBTaW5jZSB3ZSBhcmUgaW5zaWRlIGEgZGVyaXZlZCBjbGFzcyB0ZW1wbGF0ZSwg
QysrIHJlcXVpcmVzCisgIC8vIHVzIHRvIHZpc2l0IHRoZSBtZW1iZXJzIG9mIEZvb1Rlc3Qgdmlh
ICd0aGlzJy4KKyAgVHlwZVBhcmFtIG4gPSB0aGlzLT52YWx1ZV87CisKKyAgLy8gVG8gdmlzaXQg
c3RhdGljIG1lbWJlcnMgb2YgdGhlIGZpeHR1cmUsIGFkZCB0aGUgJ1Rlc3RGaXh0dXJlOjonCisg
IC8vIHByZWZpeC4KKyAgbiArPSBUZXN0Rml4dHVyZTo6c2hhcmVkXzsKKworICAvLyBUbyByZWZl
ciB0byB0eXBlZGVmcyBpbiB0aGUgZml4dHVyZSwgYWRkIHRoZSAndHlwZW5hbWUgVGVzdEZpeHR1
cmU6OicKKyAgLy8gcHJlZml4LiAgVGhlICd0eXBlbmFtZScgaXMgcmVxdWlyZWQgdG8gc2F0aXNm
eSB0aGUgY29tcGlsZXIuCisgIHR5cGVuYW1lIFRlc3RGaXh0dXJlOjpMaXN0IHZhbHVlczsKKyAg
dmFsdWVzLnB1c2hfYmFjayhuKTsKKyAgLi4uCit9CisKK1RZUEVEX1RFU1QoRm9vVGVzdCwgSGFz
UHJvcGVydHlBKSB7IC4uLiB9CitgYGAKKworWW91IGNhbiBzZWUgYHNhbXBsZXMvc2FtcGxlNl91
bml0dGVzdC5jY2AgZm9yIGEgY29tcGxldGUgZXhhbXBsZS4KKworX0F2YWlsYWJpbGl0eTpfIExp
bnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYzsKK3NpbmNlIHZl
cnNpb24gMS4xLjAuCisKKyMgVHlwZS1QYXJhbWV0ZXJpemVkIFRlc3RzICMKKworX1R5cGUtcGFy
YW1ldGVyaXplZCB0ZXN0c18gYXJlIGxpa2UgdHlwZWQgdGVzdHMsIGV4Y2VwdCB0aGF0IHRoZXkK
K2Rvbid0IHJlcXVpcmUgeW91IHRvIGtub3cgdGhlIGxpc3Qgb2YgdHlwZXMgYWhlYWQgb2YgdGlt
ZS4gIEluc3RlYWQsCit5b3UgY2FuIGRlZmluZSB0aGUgdGVzdCBsb2dpYyBmaXJzdCBhbmQgaW5z
dGFudGlhdGUgaXQgd2l0aCBkaWZmZXJlbnQKK3R5cGUgbGlzdHMgbGF0ZXIuICBZb3UgY2FuIGV2
ZW4gaW5zdGFudGlhdGUgaXQgbW9yZSB0aGFuIG9uY2UgaW4gdGhlCitzYW1lIHByb2dyYW0uCisK
K0lmIHlvdSBhcmUgZGVzaWduaW5nIGFuIGludGVyZmFjZSBvciBjb25jZXB0LCB5b3UgY2FuIGRl
ZmluZSBhIHN1aXRlCitvZiB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMgdG8gdmVyaWZ5IHByb3Bl
cnRpZXMgdGhhdCBhbnkgdmFsaWQKK2ltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnRlcmZhY2UvY29u
Y2VwdCBzaG91bGQgaGF2ZS4gIFRoZW4sIHRoZSBhdXRob3IKK29mIGVhY2ggaW1wbGVtZW50YXRp
b24gY2FuIGp1c3QgaW5zdGFudGlhdGUgdGhlIHRlc3Qgc3VpdGUgd2l0aCBoaXMKK3R5cGUgdG8g
dmVyaWZ5IHRoYXQgaXQgY29uZm9ybXMgdG8gdGhlIHJlcXVpcmVtZW50cywgd2l0aG91dCBoYXZp
bmcgdG8KK3dyaXRlIHNpbWlsYXIgdGVzdHMgcmVwZWF0ZWRseS4gIEhlcmUncyBhbiBleGFtcGxl
OgorCitGaXJzdCwgZGVmaW5lIGEgZml4dHVyZSBjbGFzcyB0ZW1wbGF0ZSwgYXMgd2UgZGlkIHdp
dGggdHlwZWQgdGVzdHM6CisKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBGb29U
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgIC4uLgorfTsKK2BgYAorCitOZXh0LCBk
ZWNsYXJlIHRoYXQgeW91IHdpbGwgZGVmaW5lIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2Fz
ZToKKworYGBgCitUWVBFRF9URVNUX0NBU0VfUChGb29UZXN0KTsKK2BgYAorCitUaGUgYF9QYCBz
dWZmaXggaXMgZm9yICJwYXJhbWV0ZXJpemVkIiBvciAicGF0dGVybiIsIHdoaWNoZXZlciB5b3UK
K3ByZWZlciB0byB0aGluay4KKworVGhlbiwgdXNlIGBUWVBFRF9URVNUX1AoKWAgdG8gZGVmaW5l
IGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuICBZb3UKK2NhbiByZXBlYXQgdGhpcyBhcyBtYW55
IHRpbWVzIGFzIHlvdSB3YW50OgorCitgYGAKK1RZUEVEX1RFU1RfUChGb29UZXN0LCBEb2VzQmxh
aCkgeworICAvLyBJbnNpZGUgYSB0ZXN0LCByZWZlciB0byBUeXBlUGFyYW0gdG8gZ2V0IHRoZSB0
eXBlIHBhcmFtZXRlci4KKyAgVHlwZVBhcmFtIG4gPSAwOworICAuLi4KK30KKworVFlQRURfVEVT
VF9QKEZvb1Rlc3QsIEhhc1Byb3BlcnR5QSkgeyAuLi4gfQorYGBgCisKK05vdyB0aGUgdHJpY2t5
IHBhcnQ6IHlvdSBuZWVkIHRvIHJlZ2lzdGVyIGFsbCB0ZXN0IHBhdHRlcm5zIHVzaW5nIHRoZQor
YFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QYCBtYWNybyBiZWZvcmUgeW91IGNhbiBpbnN0YW50
aWF0ZSB0aGVtLgorVGhlIGZpcnN0IGFyZ3VtZW50IG9mIHRoZSBtYWNybyBpcyB0aGUgdGVzdCBj
YXNlIG5hbWU7IHRoZSByZXN0IGFyZQordGhlIG5hbWVzIG9mIHRoZSB0ZXN0cyBpbiB0aGlzIHRl
c3QgY2FzZToKKworYGBgCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRG9lc0JsYWgsIEhhc1Byb3BlcnR5QSk7CitgYGAKKwor
RmluYWxseSwgeW91IGFyZSBmcmVlIHRvIGluc3RhbnRpYXRlIHRoZSBwYXR0ZXJuIHdpdGggdGhl
IHR5cGVzIHlvdQord2FudC4gIElmIHlvdSBwdXQgdGhlIGFib3ZlIGNvZGUgaW4gYSBoZWFkZXIg
ZmlsZSwgeW91IGNhbiBgI2luY2x1ZGVgCitpdCBpbiBtdWx0aXBsZSBDKysgc291cmNlIGZpbGVz
IGFuZCBpbnN0YW50aWF0ZSBpdCBtdWx0aXBsZSB0aW1lcy4KKworYGBgCit0eXBlZGVmIDo6dGVz
dGluZzo6VHlwZXM8Y2hhciwgaW50LCB1bnNpZ25lZCBpbnQ+IE15VHlwZXM7CitJTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcyk7CitgYGAKKworVG8gZGlz
dGluZ3Vpc2ggZGlmZmVyZW50IGluc3RhbmNlcyBvZiB0aGUgcGF0dGVybiwgdGhlIGZpcnN0IGFy
Z3VtZW50Cit0byB0aGUgYElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QYCBtYWNybyBpcyBh
IHByZWZpeCB0aGF0IHdpbGwgYmUKK2FkZGVkIHRvIHRoZSBhY3R1YWwgdGVzdCBjYXNlIG5hbWUu
ICBSZW1lbWJlciB0byBwaWNrIHVuaXF1ZSBwcmVmaXhlcworZm9yIGRpZmZlcmVudCBpbnN0YW5j
ZXMuCisKK0luIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhlIHR5cGUgbGlzdCBjb250YWlucyBv
bmx5IG9uZSB0eXBlLCB5b3UKK2NhbiB3cml0ZSB0aGF0IHR5cGUgZGlyZWN0bHkgd2l0aG91dCBg
Ojp0ZXN0aW5nOjpUeXBlczwuLi4+YCwgbGlrZSB0aGlzOgorCitgYGAKK0lOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBpbnQpOworYGBgCisKK1lvdSBjYW4gc2VlIGBz
YW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2NgIGZvciBhIGNvbXBsZXRlIGV4YW1wbGUuCisKK19B
dmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUp
LCBNYWM7CitzaW5jZSB2ZXJzaW9uIDEuMS4wLgorCisjIFRlc3RpbmcgUHJpdmF0ZSBDb2RlICMK
KworSWYgeW91IGNoYW5nZSB5b3VyIHNvZnR3YXJlJ3MgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24s
IHlvdXIgdGVzdHMgc2hvdWxkIG5vdAorYnJlYWsgYXMgbG9uZyBhcyB0aGUgY2hhbmdlIGlzIG5v
dCBvYnNlcnZhYmxlIGJ5IHVzZXJzLiBUaGVyZWZvcmUsIHBlciB0aGUKK19ibGFjay1ib3ggdGVz
dGluZyBwcmluY2lwbGVfLCBtb3N0IG9mIHRoZSB0aW1lIHlvdSBzaG91bGQgdGVzdCB5b3VyIGNv
ZGUKK3Rocm91Z2ggaXRzIHB1YmxpYyBpbnRlcmZhY2VzLgorCitJZiB5b3Ugc3RpbGwgZmluZCB5
b3Vyc2VsZiBuZWVkaW5nIHRvIHRlc3QgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gY29kZSwKK2Nv
bnNpZGVyIGlmIHRoZXJlJ3MgYSBiZXR0ZXIgZGVzaWduIHRoYXQgd291bGRuJ3QgcmVxdWlyZSB5
b3UgdG8gZG8gc28uIElmIHlvdQorYWJzb2x1dGVseSBoYXZlIHRvIHRlc3Qgbm9uLXB1YmxpYyBp
bnRlcmZhY2UgY29kZSB0aG91Z2gsIHlvdSBjYW4uIFRoZXJlIGFyZQordHdvIGNhc2VzIHRvIGNv
bnNpZGVyOgorCisgICogU3RhdGljIGZ1bmN0aW9ucyAoX25vdF8gdGhlIHNhbWUgYXMgc3RhdGlj
IG1lbWJlciBmdW5jdGlvbnMhKSBvciB1bm5hbWVkIG5hbWVzcGFjZXMsIGFuZAorICAqIFByaXZh
dGUgb3IgcHJvdGVjdGVkIGNsYXNzIG1lbWJlcnMKKworIyMgU3RhdGljIEZ1bmN0aW9ucyAjIwor
CitCb3RoIHN0YXRpYyBmdW5jdGlvbnMgYW5kIGRlZmluaXRpb25zL2RlY2xhcmF0aW9ucyBpbiBh
biB1bm5hbWVkIG5hbWVzcGFjZSBhcmUKK29ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIHNhbWUgdHJh
bnNsYXRpb24gdW5pdC4gVG8gdGVzdCB0aGVtLCB5b3UgY2FuIGAjaW5jbHVkZWAKK3RoZSBlbnRp
cmUgYC5jY2AgZmlsZSBiZWluZyB0ZXN0ZWQgaW4geW91ciBgKl90ZXN0LmNjYCBmaWxlLiAoYCNp
bmNsdWRlYGluZyBgLmNjYAorZmlsZXMgaXMgbm90IGEgZ29vZCB3YXkgdG8gcmV1c2UgY29kZSAt
IHlvdSBzaG91bGQgbm90IGRvIHRoaXMgaW4gcHJvZHVjdGlvbgorY29kZSEpCisKK0hvd2V2ZXIs
IGEgYmV0dGVyIGFwcHJvYWNoIGlzIHRvIG1vdmUgdGhlIHByaXZhdGUgY29kZSBpbnRvIHRoZQor
YGZvbzo6aW50ZXJuYWxgIG5hbWVzcGFjZSwgd2hlcmUgYGZvb2AgaXMgdGhlIG5hbWVzcGFjZSB5
b3VyIHByb2plY3Qgbm9ybWFsbHkKK3VzZXMsIGFuZCBwdXQgdGhlIHByaXZhdGUgZGVjbGFyYXRp
b25zIGluIGEgYCotaW50ZXJuYWwuaGAgZmlsZS4gWW91cgorcHJvZHVjdGlvbiBgLmNjYCBmaWxl
cyBhbmQgeW91ciB0ZXN0cyBhcmUgYWxsb3dlZCB0byBpbmNsdWRlIHRoaXMgaW50ZXJuYWwKK2hl
YWRlciwgYnV0IHlvdXIgY2xpZW50cyBhcmUgbm90LiBUaGlzIHdheSwgeW91IGNhbiBmdWxseSB0
ZXN0IHlvdXIgaW50ZXJuYWwKK2ltcGxlbWVudGF0aW9uIHdpdGhvdXQgbGVha2luZyBpdCB0byB5
b3VyIGNsaWVudHMuCisKKyMjIFByaXZhdGUgQ2xhc3MgTWVtYmVycyAjIworCitQcml2YXRlIGNs
YXNzIG1lbWJlcnMgYXJlIG9ubHkgYWNjZXNzaWJsZSBmcm9tIHdpdGhpbiB0aGUgY2xhc3Mgb3Ig
YnkgZnJpZW5kcy4KK1RvIGFjY2VzcyBhIGNsYXNzJyBwcml2YXRlIG1lbWJlcnMsIHlvdSBjYW4g
ZGVjbGFyZSB5b3VyIHRlc3QgZml4dHVyZSBhcyBhCitmcmllbmQgdG8gdGhlIGNsYXNzIGFuZCBk
ZWZpbmUgYWNjZXNzb3JzIGluIHlvdXIgZml4dHVyZS4gVGVzdHMgdXNpbmcgdGhlCitmaXh0dXJl
IGNhbiB0aGVuIGFjY2VzcyB0aGUgcHJpdmF0ZSBtZW1iZXJzIG9mIHlvdXIgcHJvZHVjdGlvbiBj
bGFzcyB2aWEgdGhlCithY2Nlc3NvcnMgaW4gdGhlIGZpeHR1cmUuIE5vdGUgdGhhdCBldmVuIHRo
b3VnaCB5b3VyIGZpeHR1cmUgaXMgYSBmcmllbmQgdG8KK3lvdXIgcHJvZHVjdGlvbiBjbGFzcywg
eW91ciB0ZXN0cyBhcmUgbm90IGF1dG9tYXRpY2FsbHkgZnJpZW5kcyB0byBpdCwgYXMgdGhleQor
YXJlIHRlY2huaWNhbGx5IGRlZmluZWQgaW4gc3ViLWNsYXNzZXMgb2YgdGhlIGZpeHR1cmUuCisK
K0Fub3RoZXIgd2F5IHRvIHRlc3QgcHJpdmF0ZSBtZW1iZXJzIGlzIHRvIHJlZmFjdG9yIHRoZW0g
aW50byBhbiBpbXBsZW1lbnRhdGlvbgorY2xhc3MsIHdoaWNoIGlzIHRoZW4gZGVjbGFyZWQgaW4g
YSBgKi1pbnRlcm5hbC5oYCBmaWxlLiBZb3VyIGNsaWVudHMgYXJlbid0CithbGxvd2VkIHRvIGlu
Y2x1ZGUgdGhpcyBoZWFkZXIgYnV0IHlvdXIgdGVzdHMgY2FuLiBTdWNoIGlzIGNhbGxlZCB0aGUg
UGltcGwKKyhQcml2YXRlIEltcGxlbWVudGF0aW9uKSBpZGlvbS4KKworT3IsIHlvdSBjYW4gZGVj
bGFyZSBhbiBpbmRpdmlkdWFsIHRlc3QgYXMgYSBmcmllbmQgb2YgeW91ciBjbGFzcyBieSBhZGRp
bmcgdGhpcworbGluZSBpbiB0aGUgY2xhc3MgYm9keToKKworYGBgCitGUklFTkRfVEVTVChUZXN0
Q2FzZU5hbWUsIFRlc3ROYW1lKTsKK2BgYAorCitGb3IgZXhhbXBsZSwKK2BgYAorLy8gZm9vLmgK
KyNpbmNsdWRlICJndGVzdC9ndGVzdF9wcm9kLmgiCisKKy8vIERlZmluZXMgRlJJRU5EX1RFU1Qu
CitjbGFzcyBGb28geworICAuLi4KKyBwcml2YXRlOgorICBGUklFTkRfVEVTVChGb29UZXN0LCBC
YXJSZXR1cm5zWmVyb09uTnVsbCk7CisgIGludCBCYXIodm9pZCogeCk7Cit9OworCisvLyBmb29f
dGVzdC5jYworLi4uCitURVNUKEZvb1Rlc3QsIEJhclJldHVybnNaZXJvT25OdWxsKSB7CisgIEZv
byBmb287CisgIEVYUEVDVF9FUSgwLCBmb28uQmFyKE5VTEwpKTsKKyAgLy8gVXNlcyBGb28ncyBw
cml2YXRlIG1lbWJlciBCYXIoKS4KK30KK2BgYAorCitQYXkgc3BlY2lhbCBhdHRlbnRpb24gd2hl
biB5b3VyIGNsYXNzIGlzIGRlZmluZWQgaW4gYSBuYW1lc3BhY2UsIGFzIHlvdSBzaG91bGQKK2Rl
ZmluZSB5b3VyIHRlc3QgZml4dHVyZXMgYW5kIHRlc3RzIGluIHRoZSBzYW1lIG5hbWVzcGFjZSBp
ZiB5b3Ugd2FudCB0aGVtIHRvCitiZSBmcmllbmRzIG9mIHlvdXIgY2xhc3MuIEZvciBleGFtcGxl
LCBpZiB0aGUgY29kZSB0byBiZSB0ZXN0ZWQgbG9va3MgbGlrZToKKworYGBgCituYW1lc3BhY2Ug
bXlfbmFtZXNwYWNlIHsKKworY2xhc3MgRm9vIHsKKyAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7Cisg
IEZSSUVORF9URVNUKEZvb1Rlc3QsIEJhcik7CisgIEZSSUVORF9URVNUKEZvb1Rlc3QsIEJheik7
CisgIC4uLgorICBkZWZpbml0aW9uIG9mIHRoZSBjbGFzcyBGb28KKyAgLi4uCit9OworCit9ICAv
LyBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlCitgYGAKKworWW91ciB0ZXN0IGNvZGUgc2hvdWxkIGJl
IHNvbWV0aGluZyBsaWtlOgorCitgYGAKK25hbWVzcGFjZSBteV9uYW1lc3BhY2UgeworY2xhc3Mg
Rm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLi4uCit9
OworCitURVNUX0YoRm9vVGVzdCwgQmFyKSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgQmF6KSB7
IC4uLiB9CisKK30gIC8vIG5hbWVzcGFjZSBteV9uYW1lc3BhY2UKK2BgYAorCisjIENhdGNoaW5n
IEZhaWx1cmVzICMKKworSWYgeW91IGFyZSBidWlsZGluZyBhIHRlc3RpbmcgdXRpbGl0eSBvbiB0
b3Agb2YgR29vZ2xlIFRlc3QsIHlvdSdsbAord2FudCB0byB0ZXN0IHlvdXIgdXRpbGl0eS4gIFdo
YXQgZnJhbWV3b3JrIHdvdWxkIHlvdSB1c2UgdG8gdGVzdCBpdD8KK0dvb2dsZSBUZXN0LCBvZiBj
b3Vyc2UuCisKK1RoZSBjaGFsbGVuZ2UgaXMgdG8gdmVyaWZ5IHRoYXQgeW91ciB0ZXN0aW5nIHV0
aWxpdHkgcmVwb3J0cyBmYWlsdXJlcworY29ycmVjdGx5LiAgSW4gZnJhbWV3b3JrcyB0aGF0IHJl
cG9ydCBhIGZhaWx1cmUgYnkgdGhyb3dpbmcgYW4KK2V4Y2VwdGlvbiwgeW91IGNvdWxkIGNhdGNo
IHRoZSBleGNlcHRpb24gYW5kIGFzc2VydCBvbiBpdC4gIEJ1dCBHb29nbGUKK1Rlc3QgZG9lc24n
dCB1c2UgZXhjZXB0aW9ucywgc28gaG93IGRvIHdlIHRlc3QgdGhhdCBhIHBpZWNlIG9mIGNvZGUK
K2dlbmVyYXRlcyBhbiBleHBlY3RlZCBmYWlsdXJlPworCitgImd0ZXN0L2d0ZXN0LXNwaS5oImAg
Y29udGFpbnMgc29tZSBjb25zdHJ1Y3RzIHRvIGRvIHRoaXMuICBBZnRlcgorYCNpbmNsdWRlYGlu
ZyB0aGlzIGhlYWRlciwgeW91IGNhbiB1c2UKKworfCBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoYF9z
dGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtgIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisKK3RvIGFzc2VydCB0aGF0IF9zdGF0ZW1lbnRfIGdl
bmVyYXRlcyBhIGZhdGFsIChlLmcuIGBBU1NFUlRfKmApIGZhaWx1cmUKK3dob3NlIG1lc3NhZ2Ug
Y29udGFpbnMgdGhlIGdpdmVuIF9zdWJzdHJpbmdfLCBvciB1c2UKKworfCBgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoYF9zdGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtgIHwKK3w6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisKK2lmIHlvdSBhcmUg
ZXhwZWN0aW5nIGEgbm9uLWZhdGFsIChlLmcuIGBFWFBFQ1RfKmApIGZhaWx1cmUuCisKK0ZvciB0
ZWNobmljYWwgcmVhc29ucywgdGhlcmUgYXJlIHNvbWUgY2F2ZWF0czoKKworICAxLiBZb3UgY2Fu
bm90IHN0cmVhbSBhIGZhaWx1cmUgbWVzc2FnZSB0byBlaXRoZXIgbWFjcm8uCisgIDEuIF9zdGF0
ZW1lbnRfIGluIGBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpYCBjYW5ub3QgcmVmZXJlbmNlIGxvY2Fs
IG5vbi1zdGF0aWMgdmFyaWFibGVzIG9yIG5vbi1zdGF0aWMgbWVtYmVycyBvZiBgdGhpc2Agb2Jq
ZWN0LgorICAxLiBfc3RhdGVtZW50XyBpbiBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKWAgY2Fubm90
IHJldHVybiBhIHZhbHVlLgorCitfTm90ZTpfIEdvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHdpdGgg
dGhyZWFkcyBpbiBtaW5kLiAgT25jZSB0aGUKK3N5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGlu
IGAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oImAgaGF2ZQorYmVlbiBpbXBsZW1lbnRlZCwg
R29vZ2xlIFRlc3Qgd2lsbCBiZWNvbWUgdGhyZWFkLXNhZmUsIG1lYW5pbmcgdGhhdAoreW91IGNh
biB0aGVuIHVzZSBhc3NlcnRpb25zIGluIG11bHRpcGxlIHRocmVhZHMgY29uY3VycmVudGx5LiAg
QmVmb3JlCisKK3RoYXQsIGhvd2V2ZXIsIEdvb2dsZSBUZXN0IG9ubHkgc3VwcG9ydHMgc2luZ2xl
LXRocmVhZGVkIHVzYWdlLiAgT25jZQordGhyZWFkLXNhZmUsIGBFWFBFQ1RfRkFUQUxfRkFJTFVS
RSgpYCBhbmQgYEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKClgCit3aWxsIGNhcHR1cmUgZmFpbHVy
ZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkIG9ubHkuIElmIF9zdGF0ZW1lbnRfCitjcmVhdGVzIG5l
dyB0aHJlYWRzLCBmYWlsdXJlcyBpbiB0aGVzZSB0aHJlYWRzIHdpbGwgYmUgaWdub3JlZC4gIElm
Cit5b3Ugd2FudCB0byBjYXB0dXJlIGZhaWx1cmVzIGZyb20gYWxsIHRocmVhZHMgaW5zdGVhZCwg
eW91IHNob3VsZCB1c2UKK3RoZSBmb2xsb3dpbmcgbWFjcm9zOgorCit8IGBFWFBFQ1RfRkFUQUxf
RkFJTFVSRV9PTl9BTExfVEhSRUFEUyhgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAorfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXwKK3wgYEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKGBfc3Rh
dGVtZW50LCBzdWJzdHJpbmdfYCk7YCB8CisKKyMgR2V0dGluZyB0aGUgQ3VycmVudCBUZXN0J3Mg
TmFtZSAjCisKK1NvbWV0aW1lcyBhIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGtub3cgdGhlIG5hbWUg
b2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRlc3QuCitGb3IgZXhhbXBsZSwgeW91IG1heSBiZSB1
c2luZyB0aGUgYFNldFVwKClgIG1ldGhvZCBvZiB5b3VyIHRlc3QgZml4dHVyZSB0byBzZXQKK3Ro
ZSBnb2xkZW4gZmlsZSBuYW1lIGJhc2VkIG9uIHdoaWNoIHRlc3QgaXMgcnVubmluZy4gVGhlIGA6
OnRlc3Rpbmc6OlRlc3RJbmZvYAorY2xhc3MgaGFzIHRoaXMgaW5mb3JtYXRpb246CisKK2BgYAor
bmFtZXNwYWNlIHRlc3RpbmcgeworCitjbGFzcyBUZXN0SW5mbyB7CisgcHVibGljOgorICAvLyBS
ZXR1cm5zIHRoZSB0ZXN0IGNhc2UgbmFtZSBhbmQgdGhlIHRlc3QgbmFtZSwgcmVzcGVjdGl2ZWx5
LgorICAvLworICAvLyBEbyBOT1QgZGVsZXRlIG9yIGZyZWUgdGhlIHJldHVybiB2YWx1ZSAtIGl0
J3MgbWFuYWdlZCBieSB0aGUKKyAgLy8gVGVzdEluZm8gY2xhc3MuCisgIGNvbnN0IGNoYXIqIHRl
c3RfY2FzZV9uYW1lKCkgY29uc3Q7CisgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKK307CisK
K30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCitgYGAKKworCis+IFRvIG9idGFpbiBhIGBUZXN0SW5m
b2Agb2JqZWN0IGZvciB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdCwgY2FsbAorYGN1cnJlbnRf
dGVzdF9pbmZvKClgIG9uIHRoZSBgVW5pdFRlc3RgIHNpbmdsZXRvbiBvYmplY3Q6CisKK2BgYAor
Ly8gR2V0cyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdC4KKy8v
IERvIE5PVCBkZWxldGUgdGhlIHJldHVybmVkIG9iamVjdCAtIGl0J3MgbWFuYWdlZCBieSB0aGUg
VW5pdFRlc3QgY2xhc3MuCitjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2lu
Zm8gPQorICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3Rf
aW5mbygpOworcHJpbnRmKCJXZSBhcmUgaW4gdGVzdCAlcyBvZiB0ZXN0IGNhc2UgJXMuXG4iLAor
ICAgICAgIHRlc3RfaW5mby0+bmFtZSgpLCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOwor
YGBgCisKK2BjdXJyZW50X3Rlc3RfaW5mbygpYCByZXR1cm5zIGEgbnVsbCBwb2ludGVyIGlmIG5v
IHRlc3QgaXMgcnVubmluZy4gSW4KK3BhcnRpY3VsYXIsIHlvdSBjYW5ub3QgZmluZCB0aGUgdGVz
dCBjYXNlIG5hbWUgaW4gYFRlc3RDYXNlU2V0VXAoKWAsCitgVGVzdENhc2VUZWFyRG93bigpYCAo
d2hlcmUgeW91IGtub3cgdGhlIHRlc3QgY2FzZSBuYW1lIGltcGxpY2l0bHkpLCBvcgorZnVuY3Rp
b25zIGNhbGxlZCBmcm9tIHRoZW0uCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywg
TWFjLgorCisjIEV4dGVuZGluZyBHb29nbGUgVGVzdCBieSBIYW5kbGluZyBUZXN0IEV2ZW50cyAj
CisKK0dvb2dsZSBUZXN0IHByb3ZpZGVzIGFuIDxiPmV2ZW50IGxpc3RlbmVyIEFQSTwvYj4gdG8g
bGV0IHlvdSByZWNlaXZlCitub3RpZmljYXRpb25zIGFib3V0IHRoZSBwcm9ncmVzcyBvZiBhIHRl
c3QgcHJvZ3JhbSBhbmQgdGVzdAorZmFpbHVyZXMuIFRoZSBldmVudHMgeW91IGNhbiBsaXN0ZW4g
dG8gaW5jbHVkZSB0aGUgc3RhcnQgYW5kIGVuZCBvZgordGhlIHRlc3QgcHJvZ3JhbSwgYSB0ZXN0
IGNhc2UsIG9yIGEgdGVzdCBtZXRob2QsIGFtb25nIG90aGVycy4gWW91IG1heQordXNlIHRoaXMg
QVBJIHRvIGF1Z21lbnQgb3IgcmVwbGFjZSB0aGUgc3RhbmRhcmQgY29uc29sZSBvdXRwdXQsCity
ZXBsYWNlIHRoZSBYTUwgb3V0cHV0LCBvciBwcm92aWRlIGEgY29tcGxldGVseSBkaWZmZXJlbnQg
Zm9ybSBvZgorb3V0cHV0LCBzdWNoIGFzIGEgR1VJIG9yIGEgZGF0YWJhc2UuIFlvdSBjYW4gYWxz
byB1c2UgdGVzdCBldmVudHMgYXMKK2NoZWNrcG9pbnRzIHRvIGltcGxlbWVudCBhIHJlc291cmNl
IGxlYWsgY2hlY2tlciwgZm9yIGV4YW1wbGUuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2lu
ZG93cywgTWFjOyBzaW5jZSB2MS40LjAuCisKKyMjIERlZmluaW5nIEV2ZW50IExpc3RlbmVycyAj
IworCitUbyBkZWZpbmUgYSBldmVudCBsaXN0ZW5lciwgeW91IHN1YmNsYXNzIGVpdGhlcgorW3Rl
c3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDg1NSkK
K29yIFt0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyXSguLi9pbmNsdWRlL2d0ZXN0L2d0
ZXN0LmgjTDkwNSkuCitUaGUgZm9ybWVyIGlzIGFuIChhYnN0cmFjdCkgaW50ZXJmYWNlLCB3aGVy
ZSA8aT5lYWNoIHB1cmUgdmlydHVhbCBtZXRob2Q8YnI+CitjYW4gYmUgb3ZlcnJpZGRlbiB0byBo
YW5kbGUgYSB0ZXN0IGV2ZW50PC9pPiAoRm9yIGV4YW1wbGUsIHdoZW4gYSB0ZXN0CitzdGFydHMs
IHRoZSBgT25UZXN0U3RhcnQoKWAgbWV0aG9kIHdpbGwgYmUgY2FsbGVkLikuIFRoZSBsYXR0ZXIg
cHJvdmlkZXMKK2FuIGVtcHR5IGltcGxlbWVudGF0aW9uIG9mIGFsbCBtZXRob2RzIGluIHRoZSBp
bnRlcmZhY2UsIHN1Y2ggdGhhdCBhCitzdWJjbGFzcyBvbmx5IG5lZWRzIHRvIG92ZXJyaWRlIHRo
ZSBtZXRob2RzIGl0IGNhcmVzIGFib3V0LgorCitXaGVuIGFuIGV2ZW50IGlzIGZpcmVkLCBpdHMg
Y29udGV4dCBpcyBwYXNzZWQgdG8gdGhlIGhhbmRsZXIgZnVuY3Rpb24KK2FzIGFuIGFyZ3VtZW50
LiBUaGUgZm9sbG93aW5nIGFyZ3VtZW50IHR5cGVzIGFyZSB1c2VkOgorICAqIFtVbml0VGVzdF0o
Li4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0wxMDA3KSByZWZsZWN0cyB0aGUgc3RhdGUgb2YgdGhl
IGVudGlyZSB0ZXN0IHByb2dyYW0sCisgICogW1Rlc3RDYXNlXSguLi9pbmNsdWRlL2d0ZXN0L2d0
ZXN0LmgjTDY4OSkgaGFzIGluZm9ybWF0aW9uIGFib3V0IGEgdGVzdCBjYXNlLCB3aGljaCBjYW4g
Y29udGFpbiBvbmUgb3IgbW9yZSB0ZXN0cywKKyAgKiBbVGVzdEluZm9dKC4uL2luY2x1ZGUvZ3Rl
c3QvZ3Rlc3QuaCNMNTk5KSBjb250YWlucyB0aGUgc3RhdGUgb2YgYSB0ZXN0LCBhbmQKKyAgKiBb
VGVzdFBhcnRSZXN1bHRdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgjTDQyKSBy
ZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYSB0ZXN0IGFzc2VydGlvbi4KKworQW4gZXZlbnQgaGFu
ZGxlciBmdW5jdGlvbiBjYW4gZXhhbWluZSB0aGUgYXJndW1lbnQgaXQgcmVjZWl2ZXMgdG8gZmlu
ZAorb3V0IGludGVyZXN0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBldmVudCBhbmQgdGhlIHRl
c3QgcHJvZ3JhbSdzCitzdGF0ZS4gIEhlcmUncyBhbiBleGFtcGxlOgorCitgYGAKKyAgY2xhc3Mg
TWluaW1hbGlzdFByaW50ZXIgOiBwdWJsaWMgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3Rl
bmVyIHsKKyAgICAvLyBDYWxsZWQgYmVmb3JlIGEgdGVzdCBzdGFydHMuCisgICAgdmlydHVhbCB2
b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8mIHRlc3RfaW5mbykgewor
ICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBzdGFydGluZy5cbiIsCisgICAgICAgICAgICAg
dGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOworICAgIH0KKwor
ICAgIC8vIENhbGxlZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRUVEKCkgaW52
b2NhdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJlc3VsdCgKKyAgICAgICAgY29u
c3QgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgeworICAgICAg
cHJpbnRmKCIlcyBpbiAlczolZFxuJXNcbiIsCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3Vs
dC5mYWlsZWQoKSA/ICIqKiogRmFpbHVyZSIgOiAiU3VjY2VzcyIsCisgICAgICAgICAgICAgdGVz
dF9wYXJ0X3Jlc3VsdC5maWxlX25hbWUoKSwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0
LmxpbmVfbnVtYmVyKCksCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5zdW1tYXJ5KCkp
OworICAgIH0KKworICAgIC8vIENhbGxlZCBhZnRlciBhIHRlc3QgZW5kcy4KKyAgICB2aXJ0dWFs
IHZvaWQgT25UZXN0RW5kKGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8mIHRlc3RfaW5mbykgewor
ICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBlbmRpbmcuXG4iLAorICAgICAgICAgICAgIHRl
c3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgICB9CisgIH07
CitgYGAKKworIyMgVXNpbmcgRXZlbnQgTGlzdGVuZXJzICMjCisKK1RvIHVzZSB0aGUgZXZlbnQg
bGlzdGVuZXIgeW91IGhhdmUgZGVmaW5lZCwgYWRkIGFuIGluc3RhbmNlIG9mIGl0IHRvCit0aGUg
R29vZ2xlIFRlc3QgZXZlbnQgbGlzdGVuZXIgbGlzdCAocmVwcmVzZW50ZWQgYnkgY2xhc3MKK1tU
ZXN0RXZlbnRMaXN0ZW5lcnNdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMOTI5KQorLSBub3Rl
IHRoZSAicyIgYXQgdGhlIGVuZCBvZiB0aGUgbmFtZSkgaW4geW91cgorYG1haW4oKWAgZnVuY3Rp
b24sIGJlZm9yZSBjYWxsaW5nIGBSVU5fQUxMX1RFU1RTKClgOgorYGBgCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywg
YXJndik7CisgIC8vIEdldHMgaG9sZCBvZiB0aGUgZXZlbnQgbGlzdGVuZXIgbGlzdC4KKyAgOjp0
ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnMmIGxpc3RlbmVycyA9CisgICAgICA6OnRlc3Rpbmc6
OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKTsKKyAgLy8gQWRkcyBhIGxpc3Rl
bmVyIHRvIHRoZSBlbmQuICBHb29nbGUgVGVzdCB0YWtlcyB0aGUgb3duZXJzaGlwLgorICBsaXN0
ZW5lcnMuQXBwZW5kKG5ldyBNaW5pbWFsaXN0UHJpbnRlcik7CisgIHJldHVybiBSVU5fQUxMX1RF
U1RTKCk7Cit9CitgYGAKKworVGhlcmUncyBvbmx5IG9uZSBwcm9ibGVtOiB0aGUgZGVmYXVsdCB0
ZXN0IHJlc3VsdCBwcmludGVyIGlzIHN0aWxsIGluCitlZmZlY3QsIHNvIGl0cyBvdXRwdXQgd2ls
bCBtaW5nbGUgd2l0aCB0aGUgb3V0cHV0IGZyb20geW91ciBtaW5pbWFsaXN0CitwcmludGVyLiBU
byBzdXBwcmVzcyB0aGUgZGVmYXVsdCBwcmludGVyLCBqdXN0IHJlbGVhc2UgaXQgZnJvbSB0aGUK
K2V2ZW50IGxpc3RlbmVyIGxpc3QgYW5kIGRlbGV0ZSBpdC4gWW91IGNhbiBkbyBzbyBieSBhZGRp
bmcgb25lIGxpbmU6CitgYGAKKyAgLi4uCisgIGRlbGV0ZSBsaXN0ZW5lcnMuUmVsZWFzZShsaXN0
ZW5lcnMuZGVmYXVsdF9yZXN1bHRfcHJpbnRlcigpKTsKKyAgbGlzdGVuZXJzLkFwcGVuZChuZXcg
TWluaW1hbGlzdFByaW50ZXIpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworYGBgCisKK05v
dywgc2l0IGJhY2sgYW5kIGVuam95IGEgY29tcGxldGVseSBkaWZmZXJlbnQgb3V0cHV0IGZyb20g
eW91cgordGVzdHMuIEZvciBtb3JlIGRldGFpbHMsIHlvdSBjYW4gcmVhZCB0aGlzCitbc2FtcGxl
XSguLi9zYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MpLgorCitZb3UgbWF5IGFwcGVuZCBtb3Jl
IHRoYW4gb25lIGxpc3RlbmVyIHRvIHRoZSBsaXN0LiBXaGVuIGFuIGBPbipTdGFydCgpYAorb3Ig
YE9uVGVzdFBhcnRSZXN1bHQoKWAgZXZlbnQgaXMgZmlyZWQsIHRoZSBsaXN0ZW5lcnMgd2lsbCBy
ZWNlaXZlIGl0IGluCit0aGUgb3JkZXIgdGhleSBhcHBlYXIgaW4gdGhlIGxpc3QgKHNpbmNlIG5l
dyBsaXN0ZW5lcnMgYXJlIGFkZGVkIHRvCit0aGUgZW5kIG9mIHRoZSBsaXN0LCB0aGUgZGVmYXVs
dCB0ZXh0IHByaW50ZXIgYW5kIHRoZSBkZWZhdWx0IFhNTAorZ2VuZXJhdG9yIHdpbGwgcmVjZWl2
ZSB0aGUgZXZlbnQgZmlyc3QpLiBBbiBgT24qRW5kKClgIGV2ZW50IHdpbGwgYmUKK3JlY2VpdmVk
IGJ5IHRoZSBsaXN0ZW5lcnMgaW4gdGhlIF9yZXZlcnNlXyBvcmRlci4gVGhpcyBhbGxvd3Mgb3V0
cHV0IGJ5CitsaXN0ZW5lcnMgYWRkZWQgbGF0ZXIgdG8gYmUgZnJhbWVkIGJ5IG91dHB1dCBmcm9t
IGxpc3RlbmVycyBhZGRlZAorZWFybGllci4KKworIyMgR2VuZXJhdGluZyBGYWlsdXJlcyBpbiBM
aXN0ZW5lcnMgIyMKKworWW91IG1heSB1c2UgZmFpbHVyZS1yYWlzaW5nIG1hY3JvcyAoYEVYUEVD
VF8qKClgLCBgQVNTRVJUXyooKWAsCitgRkFJTCgpYCwgZXRjKSB3aGVuIHByb2Nlc3NpbmcgYW4g
ZXZlbnQuIFRoZXJlIGFyZSBzb21lIHJlc3RyaWN0aW9uczoKKworICAxLiBZb3UgY2Fubm90IGdl
bmVyYXRlIGFueSBmYWlsdXJlIGluIGBPblRlc3RQYXJ0UmVzdWx0KClgIChvdGhlcndpc2UgaXQg
d2lsbCBjYXVzZSBgT25UZXN0UGFydFJlc3VsdCgpYCB0byBiZSBjYWxsZWQgcmVjdXJzaXZlbHkp
LgorICAxLiBBIGxpc3RlbmVyIHRoYXQgaGFuZGxlcyBgT25UZXN0UGFydFJlc3VsdCgpYCBpcyBu
b3QgYWxsb3dlZCB0byBnZW5lcmF0ZSBhbnkgZmFpbHVyZS4KKworV2hlbiB5b3UgYWRkIGxpc3Rl
bmVycyB0byB0aGUgbGlzdGVuZXIgbGlzdCwgeW91IHNob3VsZCBwdXQgbGlzdGVuZXJzCit0aGF0
IGhhbmRsZSBgT25UZXN0UGFydFJlc3VsdCgpYCBfYmVmb3JlXyBsaXN0ZW5lcnMgdGhhdCBjYW4g
Z2VuZXJhdGUKK2ZhaWx1cmVzLiBUaGlzIGVuc3VyZXMgdGhhdCBmYWlsdXJlcyBnZW5lcmF0ZWQg
YnkgdGhlIGxhdHRlciBhcmUKK2F0dHJpYnV0ZWQgdG8gdGhlIHJpZ2h0IHRlc3QgYnkgdGhlIGZv
cm1lci4KKworV2UgaGF2ZSBhIHNhbXBsZSBvZiBmYWlsdXJlLXJhaXNpbmcgbGlzdGVuZXIKK1to
ZXJlXSguLi9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjKS4KKworIyBSdW5uaW5nIFRlc3Qg
UHJvZ3JhbXM6IEFkdmFuY2VkIE9wdGlvbnMgIworCitHb29nbGUgVGVzdCB0ZXN0IHByb2dyYW1z
IGFyZSBvcmRpbmFyeSBleGVjdXRhYmxlcy4gT25jZSBidWlsdCwgeW91IGNhbiBydW4KK3RoZW0g
ZGlyZWN0bHkgYW5kIGFmZmVjdCB0aGVpciBiZWhhdmlvciB2aWEgdGhlIGZvbGxvd2luZyBlbnZp
cm9ubWVudCB2YXJpYWJsZXMKK2FuZC9vciBjb21tYW5kIGxpbmUgZmxhZ3MuIEZvciB0aGUgZmxh
Z3MgdG8gd29yaywgeW91ciBwcm9ncmFtcyBtdXN0IGNhbGwKK2A6OnRlc3Rpbmc6OkluaXRHb29n
bGVUZXN0KClgIGJlZm9yZSBjYWxsaW5nIGBSVU5fQUxMX1RFU1RTKClgLgorCitUbyBzZWUgYSBs
aXN0IG9mIHN1cHBvcnRlZCBmbGFncyBhbmQgdGhlaXIgdXNhZ2UsIHBsZWFzZSBydW4geW91ciB0
ZXN0Citwcm9ncmFtIHdpdGggdGhlIGAtLWhlbHBgIGZsYWcuICBZb3UgY2FuIGFsc28gdXNlIGAt
aGAsIGAtP2AsIG9yIGAvP2AKK2ZvciBzaG9ydC4gIFRoaXMgZmVhdHVyZSBpcyBhZGRlZCBpbiB2
ZXJzaW9uIDEuMy4wLgorCitJZiBhbiBvcHRpb24gaXMgc3BlY2lmaWVkIGJvdGggYnkgYW4gZW52
aXJvbm1lbnQgdmFyaWFibGUgYW5kIGJ5IGEKK2ZsYWcsIHRoZSBsYXR0ZXIgdGFrZXMgcHJlY2Vk
ZW5jZS4gIE1vc3Qgb2YgdGhlIG9wdGlvbnMgY2FuIGFsc28gYmUKK3NldC9yZWFkIGluIGNvZGU6
IHRvIGFjY2VzcyB0aGUgdmFsdWUgb2YgY29tbWFuZCBsaW5lIGZsYWcKK2AtLWd0ZXN0X2Zvb2As
IHdyaXRlIGA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcoZm9vKWAuICBBIGNvbW1vbiBwYXR0ZXJuIGlz
Cit0byBzZXQgdGhlIHZhbHVlIG9mIGEgZmxhZyBiZWZvcmUgY2FsbGluZyBgOjp0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdCgpYAordG8gY2hhbmdlIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBmbGFn
OgorYGBgCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgLy8gRGlzYWJsZXMg
ZWxhcHNlZCB0aW1lIGJ5IGRlZmF1bHQuCisgIDo6dGVzdGluZzo6R1RFU1RfRkxBRyhwcmludF90
aW1lKSA9IGZhbHNlOworCisgIC8vIFRoaXMgYWxsb3dzIHRoZSB1c2VyIHRvIG92ZXJyaWRlIHRo
ZSBmbGFnIG9uIHRoZSBjb21tYW5kIGxpbmUuCisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Qo
JmFyZ2MsIGFyZ3YpOworCisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CitgYGAKKworIyMg
U2VsZWN0aW5nIFRlc3RzICMjCisKK1RoaXMgc2VjdGlvbiBzaG93cyB2YXJpb3VzIG9wdGlvbnMg
Zm9yIGNob29zaW5nIHdoaWNoIHRlc3RzIHRvIHJ1bi4KKworIyMjIExpc3RpbmcgVGVzdCBOYW1l
cyAjIyMKKworU29tZXRpbWVzIGl0IGlzIG5lY2Vzc2FyeSB0byBsaXN0IHRoZSBhdmFpbGFibGUg
dGVzdHMgaW4gYSBwcm9ncmFtIGJlZm9yZQorcnVubmluZyB0aGVtIHNvIHRoYXQgYSBmaWx0ZXIg
bWF5IGJlIGFwcGxpZWQgaWYgbmVlZGVkLiBJbmNsdWRpbmcgdGhlIGZsYWcKK2AtLWd0ZXN0X2xp
c3RfdGVzdHNgIG92ZXJyaWRlcyBhbGwgb3RoZXIgZmxhZ3MgYW5kIGxpc3RzIHRlc3RzIGluIHRo
ZSBmb2xsb3dpbmcKK2Zvcm1hdDoKK2BgYAorVGVzdENhc2UxLgorICBUZXN0TmFtZTEKKyAgVGVz
dE5hbWUyCitUZXN0Q2FzZTIuCisgIFRlc3ROYW1lCitgYGAKKworTm9uZSBvZiB0aGUgdGVzdHMg
bGlzdGVkIGFyZSBhY3R1YWxseSBydW4gaWYgdGhlIGZsYWcgaXMgcHJvdmlkZWQuIFRoZXJlIGlz
IG5vCitjb3JyZXNwb25kaW5nIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciB0aGlzIGZsYWcuCisK
K19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgUnVubmluZyBhIFN1
YnNldCBvZiB0aGUgVGVzdHMgIyMjCisKK0J5IGRlZmF1bHQsIGEgR29vZ2xlIFRlc3QgcHJvZ3Jh
bSBydW5zIGFsbCB0ZXN0cyB0aGUgdXNlciBoYXMgZGVmaW5lZC4KK1NvbWV0aW1lcywgeW91IHdh
bnQgdG8gcnVuIG9ubHkgYSBzdWJzZXQgb2YgdGhlIHRlc3RzIChlLmcuIGZvciBkZWJ1Z2dpbmcg
b3IKK3F1aWNrbHkgdmVyaWZ5aW5nIGEgY2hhbmdlKS4gSWYgeW91IHNldCB0aGUgYEdURVNUX0ZJ
TFRFUmAgZW52aXJvbm1lbnQgdmFyaWFibGUKK29yIHRoZSBgLS1ndGVzdF9maWx0ZXJgIGZsYWcg
dG8gYSBmaWx0ZXIgc3RyaW5nLCBHb29nbGUgVGVzdCB3aWxsIG9ubHkgcnVuIHRoZQordGVzdHMg
d2hvc2UgZnVsbCBuYW1lcyAoaW4gdGhlIGZvcm0gb2YgYFRlc3RDYXNlTmFtZS5UZXN0TmFtZWAp
IG1hdGNoIHRoZQorZmlsdGVyLgorCitUaGUgZm9ybWF0IG9mIGEgZmlsdGVyIGlzIGEgJ2A6YCct
c2VwYXJhdGVkIGxpc3Qgb2Ygd2lsZGNhcmQgcGF0dGVybnMgKGNhbGxlZAordGhlIHBvc2l0aXZl
IHBhdHRlcm5zKSBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgJ2AtYCcgYW5kIGFub3RoZXIKKydg
OmAnLXNlcGFyYXRlZCBwYXR0ZXJuIGxpc3QgKGNhbGxlZCB0aGUgbmVnYXRpdmUgcGF0dGVybnMp
LiBBIHRlc3QgbWF0Y2hlcyB0aGUKK2ZpbHRlciBpZiBhbmQgb25seSBpZiBpdCBtYXRjaGVzIGFu
eSBvZiB0aGUgcG9zaXRpdmUgcGF0dGVybnMgYnV0IGRvZXMgbm90CittYXRjaCBhbnkgb2YgdGhl
IG5lZ2F0aXZlIHBhdHRlcm5zLgorCitBIHBhdHRlcm4gbWF5IGNvbnRhaW4gYCcqJ2AgKG1hdGNo
ZXMgYW55IHN0cmluZykgb3IgYCc/J2AgKG1hdGNoZXMgYW55IHNpbmdsZQorY2hhcmFjdGVyKS4g
Rm9yIGNvbnZlbmllbmNlLCB0aGUgZmlsdGVyIGAnKi1OZWdhdGl2ZVBhdHRlcm5zJ2AgY2FuIGJl
IGFsc28KK3dyaXR0ZW4gYXMgYCctTmVnYXRpdmVQYXR0ZXJucydgLgorCitGb3IgZXhhbXBsZToK
KworICAqIGAuL2Zvb190ZXN0YCBIYXMgbm8gZmxhZywgYW5kIHRodXMgcnVucyBhbGwgaXRzIHRl
c3RzLgorICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPSpgIEFsc28gcnVucyBldmVyeXRo
aW5nLCBkdWUgdG8gdGhlIHNpbmdsZSBtYXRjaC1ldmVyeXRoaW5nIGAqYCB2YWx1ZS4KKyAgKiBg
Li9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj1Gb29UZXN0LipgIFJ1bnMgZXZlcnl0aGluZyBpbiB0
ZXN0IGNhc2UgYEZvb1Rlc3RgLgorICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPSpOdWxs
KjoqQ29uc3RydWN0b3IqYCBSdW5zIGFueSB0ZXN0IHdob3NlIGZ1bGwgbmFtZSBjb250YWlucyBl
aXRoZXIgYCJOdWxsImAgb3IgYCJDb25zdHJ1Y3RvciJgLgorICAqIGAuL2Zvb190ZXN0IC0tZ3Rl
c3RfZmlsdGVyPS0qRGVhdGhUZXN0LipgIFJ1bnMgYWxsIG5vbi1kZWF0aCB0ZXN0cy4KKyAgKiBg
Li9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj1Gb29UZXN0LiotRm9vVGVzdC5CYXJgIFJ1bnMgZXZl
cnl0aGluZyBpbiB0ZXN0IGNhc2UgYEZvb1Rlc3RgIGV4Y2VwdCBgRm9vVGVzdC5CYXJgLgorCitf
QXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIFRlbXBvcmFyaWx5IERp
c2FibGluZyBUZXN0cyAjIyMKKworSWYgeW91IGhhdmUgYSBicm9rZW4gdGVzdCB0aGF0IHlvdSBj
YW5ub3QgZml4IHJpZ2h0IGF3YXksIHlvdSBjYW4gYWRkIHRoZQorYERJU0FCTEVEX2AgcHJlZml4
IHRvIGl0cyBuYW1lLiBUaGlzIHdpbGwgZXhjbHVkZSBpdCBmcm9tIGV4ZWN1dGlvbi4gVGhpcyBp
cworYmV0dGVyIHRoYW4gY29tbWVudGluZyBvdXQgdGhlIGNvZGUgb3IgdXNpbmcgYCNpZiAwYCwg
YXMgZGlzYWJsZWQgdGVzdHMgYXJlCitzdGlsbCBjb21waWxlZCAoYW5kIHRodXMgd29uJ3Qgcm90
KS4KKworSWYgeW91IG5lZWQgdG8gZGlzYWJsZSBhbGwgdGVzdHMgaW4gYSB0ZXN0IGNhc2UsIHlv
dSBjYW4gZWl0aGVyIGFkZCBgRElTQUJMRURfYAordG8gdGhlIGZyb250IG9mIHRoZSBuYW1lIG9m
IGVhY2ggdGVzdCwgb3IgYWx0ZXJuYXRpdmVseSBhZGQgaXQgdG8gdGhlIGZyb250IG9mCit0aGUg
dGVzdCBjYXNlIG5hbWUuCisKK0ZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHRlc3RzIHdvbid0
IGJlIHJ1biBieSBHb29nbGUgVGVzdCwgZXZlbiB0aG91Z2ggdGhleQord2lsbCBzdGlsbCBiZSBj
b21waWxlZDoKKworYGBgCisvLyBUZXN0cyB0aGF0IEZvbyBkb2VzIEFiYy4KK1RFU1QoRm9vVGVz
dCwgRElTQUJMRURfRG9lc0FiYykgeyAuLi4gfQorCitjbGFzcyBESVNBQkxFRF9CYXJUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OworCisvLyBUZXN0cyB0aGF0IEJhciBkb2Vz
IFh5ei4KK1RFU1RfRihESVNBQkxFRF9CYXJUZXN0LCBEb2VzWHl6KSB7IC4uLiB9CitgYGAKKwor
X05vdGU6XyBUaGlzIGZlYXR1cmUgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgdGVtcG9yYXJ5IHBh
aW4tcmVsaWVmLiBZb3Ugc3RpbGwKK2hhdmUgdG8gZml4IHRoZSBkaXNhYmxlZCB0ZXN0cyBhdCBh
IGxhdGVyIGRhdGUuIEFzIGEgcmVtaW5kZXIsIEdvb2dsZSBUZXN0IHdpbGwKK3ByaW50IGEgYmFu
bmVyIHdhcm5pbmcgeW91IGlmIGEgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIGFueSBkaXNhYmxlZCB0
ZXN0cy4KKworX1RpcDpfIFlvdSBjYW4gZWFzaWx5IGNvdW50IHRoZSBudW1iZXIgb2YgZGlzYWJs
ZWQgdGVzdHMgeW91IGhhdmUKK3VzaW5nIGBncmVwYC4gVGhpcyBudW1iZXIgY2FuIGJlIHVzZWQg
YXMgYSBtZXRyaWMgZm9yIGltcHJvdmluZyB5b3VyCit0ZXN0IHF1YWxpdHkuCisKK19BdmFpbGFi
aWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgVGVtcG9yYXJpbHkgRW5hYmxpbmcg
RGlzYWJsZWQgVGVzdHMgIyMjCisKK1RvIGluY2x1ZGUgW2Rpc2FibGVkIHRlc3RzXSgjdGVtcG9y
YXJpbHktZGlzYWJsaW5nLXRlc3RzKSBpbiB0ZXN0CitleGVjdXRpb24sIGp1c3QgaW52b2tlIHRo
ZSB0ZXN0IHByb2dyYW0gd2l0aCB0aGUKK2AtLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3Rz
YCBmbGFnIG9yIHNldCB0aGUKK2BHVEVTVF9BTFNPX1JVTl9ESVNBQkxFRF9URVNUU2AgZW52aXJv
bm1lbnQgdmFyaWFibGUgdG8gYSB2YWx1ZSBvdGhlcgordGhhbiBgMGAuICBZb3UgY2FuIGNvbWJp
bmUgdGhpcyB3aXRoIHRoZQorWy0tZ3Rlc3RcLWZpbHRlcl0oI3J1bm5pbmctYS1zdWJzZXQtb2Yt
dGhlX3Rlc3RzKSBmbGFnIHRvIGZ1cnRoZXIgc2VsZWN0Cit3aGljaCBkaXNhYmxlZCB0ZXN0cyB0
byBydW4uCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJz
aW9uIDEuMy4wLgorCisjIyBSZXBlYXRpbmcgdGhlIFRlc3RzICMjCisKK09uY2UgaW4gYSB3aGls
ZSB5b3UnbGwgcnVuIGludG8gYSB0ZXN0IHdob3NlIHJlc3VsdCBpcyBoaXQtb3ItbWlzcy4gUGVy
aGFwcyBpdAord2lsbCBmYWlsIG9ubHkgMSUgb2YgdGhlIHRpbWUsIG1ha2luZyBpdCByYXRoZXIg
aGFyZCB0byByZXByb2R1Y2UgdGhlIGJ1ZyB1bmRlcgorYSBkZWJ1Z2dlci4gVGhpcyBjYW4gYmUg
YSBtYWpvciBzb3VyY2Ugb2YgZnJ1c3RyYXRpb24uCisKK1RoZSBgLS1ndGVzdF9yZXBlYXRgIGZs
YWcgYWxsb3dzIHlvdSB0byByZXBlYXQgYWxsIChvciBzZWxlY3RlZCkgdGVzdCBtZXRob2RzCitp
biBhIHByb2dyYW0gbWFueSB0aW1lcy4gSG9wZWZ1bGx5LCBhIGZsYWt5IHRlc3Qgd2lsbCBldmVu
dHVhbGx5IGZhaWwgYW5kIGdpdmUKK3lvdSBhIGNoYW5jZSB0byBkZWJ1Zy4gSGVyZSdzIGhvdyB0
byB1c2UgaXQ6CisKK3wgYCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMGAgfCBSZXBlYXQg
Zm9vXF90ZXN0IDEwMDAgdGltZXMgYW5kIGRvbid0IHN0b3AgYXQgZmFpbHVyZXMuIHwKK3w6LS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYCQgZm9vX3Rlc3QgLS1ndGVzdF9y
ZXBlYXQ9LTFgICAgfCBBIG5lZ2F0aXZlIGNvdW50IG1lYW5zIHJlcGVhdGluZyBmb3JldmVyLiAg
ICAgICAgICAgICAgIHwKK3wgYCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMCAtLWd0ZXN0
X2JyZWFrX29uX2ZhaWx1cmVgIHwgUmVwZWF0IGZvb1xfdGVzdCAxMDAwIHRpbWVzLCBzdG9wcGlu
ZyBhdCB0aGUgZmlyc3QgZmFpbHVyZS4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB3aGVuIHJ1
bm5pbmcgdW5kZXIgYSBkZWJ1Z2dlcjogd2hlbiB0aGUgdGVzdGZhaWxzLCBpdCB3aWxsIGRyb3Ag
aW50byB0aGUgZGVidWdnZXIgYW5kIHlvdSBjYW4gdGhlbiBpbnNwZWN0IHZhcmlhYmxlcyBhbmQg
c3RhY2tzLiB8Cit8IGAkIGZvb190ZXN0IC0tZ3Rlc3RfcmVwZWF0PTEwMDAgLS1ndGVzdF9maWx0
ZXI9Rm9vQmFyYCB8IFJlcGVhdCB0aGUgdGVzdHMgd2hvc2UgbmFtZSBtYXRjaGVzIHRoZSBmaWx0
ZXIgMTAwMCB0aW1lcy4gfAorCitJZiB5b3VyIHRlc3QgcHJvZ3JhbSBjb250YWlucyBnbG9iYWwg
c2V0LXVwL3RlYXItZG93biBjb2RlIHJlZ2lzdGVyZWQKK3VzaW5nIGBBZGRHbG9iYWxUZXN0RW52
aXJvbm1lbnQoKWAsIGl0IHdpbGwgYmUgcmVwZWF0ZWQgaW4gZWFjaAoraXRlcmF0aW9uIGFzIHdl
bGwsIGFzIHRoZSBmbGFraW5lc3MgbWF5IGJlIGluIGl0LiBZb3UgY2FuIGFsc28gc3BlY2lmeQor
dGhlIHJlcGVhdCBjb3VudCBieSBzZXR0aW5nIHRoZSBgR1RFU1RfUkVQRUFUYCBlbnZpcm9ubWVu
dCB2YXJpYWJsZS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMj
IFNodWZmbGluZyB0aGUgVGVzdHMgIyMKKworWW91IGNhbiBzcGVjaWZ5IHRoZSBgLS1ndGVzdF9z
aHVmZmxlYCBmbGFnIChvciBzZXQgdGhlIGBHVEVTVF9TSFVGRkxFYAorZW52aXJvbm1lbnQgdmFy
aWFibGUgdG8gYDFgKSB0byBydW4gdGhlIHRlc3RzIGluIGEgcHJvZ3JhbSBpbiBhIHJhbmRvbQor
b3JkZXIuIFRoaXMgaGVscHMgdG8gcmV2ZWFsIGJhZCBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0ZXN0
cy4KKworQnkgZGVmYXVsdCwgR29vZ2xlIFRlc3QgdXNlcyBhIHJhbmRvbSBzZWVkIGNhbGN1bGF0
ZWQgZnJvbSB0aGUgY3VycmVudAordGltZS4gVGhlcmVmb3JlIHlvdSdsbCBnZXQgYSBkaWZmZXJl
bnQgb3JkZXIgZXZlcnkgdGltZS4gVGhlIGNvbnNvbGUKK291dHB1dCBpbmNsdWRlcyB0aGUgcmFu
ZG9tIHNlZWQgdmFsdWUsIHN1Y2ggdGhhdCB5b3UgY2FuIHJlcHJvZHVjZSBhbgorb3JkZXItcmVs
YXRlZCB0ZXN0IGZhaWx1cmUgbGF0ZXIuIFRvIHNwZWNpZnkgdGhlIHJhbmRvbSBzZWVkCitleHBs
aWNpdGx5LCB1c2UgdGhlIGAtLWd0ZXN0X3JhbmRvbV9zZWVkPVNFRURgIGZsYWcgKG9yIHNldCB0
aGUKK2BHVEVTVF9SQU5ET01fU0VFRGAgZW52aXJvbm1lbnQgdmFyaWFibGUpLCB3aGVyZSBgU0VF
RGAgaXMgYW4gaW50ZWdlcgorYmV0d2VlbiAwIGFuZCA5OTk5OS4gVGhlIHNlZWQgdmFsdWUgMCBp
cyBzcGVjaWFsOiBpdCB0ZWxscyBHb29nbGUgVGVzdAordG8gZG8gdGhlIGRlZmF1bHQgYmVoYXZp
b3Igb2YgY2FsY3VsYXRpbmcgdGhlIHNlZWQgZnJvbSB0aGUgY3VycmVudAordGltZS4KKworSWYg
eW91IGNvbWJpbmUgdGhpcyB3aXRoIGAtLWd0ZXN0X3JlcGVhdD1OYCwgR29vZ2xlIFRlc3Qgd2ls
bCBwaWNrIGEKK2RpZmZlcmVudCByYW5kb20gc2VlZCBhbmQgcmUtc2h1ZmZsZSB0aGUgdGVzdHMg
aW4gZWFjaCBpdGVyYXRpb24uCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFj
OyBzaW5jZSB2MS40LjAuCisKKyMjIENvbnRyb2xsaW5nIFRlc3QgT3V0cHV0ICMjCisKK1RoaXMg
c2VjdGlvbiB0ZWFjaGVzIGhvdyB0byB0d2VhayB0aGUgd2F5IHRlc3QgcmVzdWx0cyBhcmUgcmVw
b3J0ZWQuCisKKyMjIyBDb2xvcmVkIFRlcm1pbmFsIE91dHB1dCAjIyMKKworR29vZ2xlIFRlc3Qg
Y2FuIHVzZSBjb2xvcnMgaW4gaXRzIHRlcm1pbmFsIG91dHB1dCB0byBtYWtlIGl0IGVhc2llciB0
byBzcG90Cit0aGUgc2VwYXJhdGlvbiBiZXR3ZWVuIHRlc3RzLCBhbmQgd2hldGhlciB0ZXN0cyBw
YXNzZWQuCisKK1lvdSBjYW4gc2V0IHRoZSBHVEVTVFxfQ09MT1IgZW52aXJvbm1lbnQgdmFyaWFi
bGUgb3Igc2V0IHRoZSBgLS1ndGVzdF9jb2xvcmAKK2NvbW1hbmQgbGluZSBmbGFnIHRvIGB5ZXNg
LCBgbm9gLCBvciBgYXV0b2AgKHRoZSBkZWZhdWx0KSB0byBlbmFibGUgY29sb3JzLAorZGlzYWJs
ZSBjb2xvcnMsIG9yIGxldCBHb29nbGUgVGVzdCBkZWNpZGUuIFdoZW4gdGhlIHZhbHVlIGlzIGBh
dXRvYCwgR29vZ2xlCitUZXN0IHdpbGwgdXNlIGNvbG9ycyBpZiBhbmQgb25seSBpZiB0aGUgb3V0
cHV0IGdvZXMgdG8gYSB0ZXJtaW5hbCBhbmQgKG9uCitub24tV2luZG93cyBwbGF0Zm9ybXMpIHRo
ZSBgVEVSTWAgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0IHRvIGB4dGVybWAgb3IKK2B4dGVy
bS1jb2xvcmAuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMg
U3VwcHJlc3NpbmcgdGhlIEVsYXBzZWQgVGltZSAjIyMKKworQnkgZGVmYXVsdCwgR29vZ2xlIFRl
c3QgcHJpbnRzIHRoZSB0aW1lIGl0IHRha2VzIHRvIHJ1biBlYWNoIHRlc3QuICBUbworc3VwcHJl
c3MgdGhhdCwgcnVuIHRoZSB0ZXN0IHByb2dyYW0gd2l0aCB0aGUgYC0tZ3Rlc3RfcHJpbnRfdGlt
ZT0wYAorY29tbWFuZCBsaW5lIGZsYWcuICBTZXR0aW5nIHRoZSBgR1RFU1RfUFJJTlRfVElNRWAg
ZW52aXJvbm1lbnQKK3ZhcmlhYmxlIHRvIGAwYCBoYXMgdGhlIHNhbWUgZWZmZWN0LgorCitfQXZh
aWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4gIChJbiBHb29nbGUgVGVzdCAxLjMuMCBh
bmQgbG93ZXIsCit0aGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0aGF0IHRoZSBlbGFwc2VkIHRpbWUg
aXMgKipub3QqKiBwcmludGVkLikKKworIyMjIEdlbmVyYXRpbmcgYW4gWE1MIFJlcG9ydCAjIyMK
KworR29vZ2xlIFRlc3QgY2FuIGVtaXQgYSBkZXRhaWxlZCBYTUwgcmVwb3J0IHRvIGEgZmlsZSBp
biBhZGRpdGlvbiB0byBpdHMgbm9ybWFsCit0ZXh0dWFsIG91dHB1dC4gVGhlIHJlcG9ydCBjb250
YWlucyB0aGUgZHVyYXRpb24gb2YgZWFjaCB0ZXN0LCBhbmQgdGh1cyBjYW4KK2hlbHAgeW91IGlk
ZW50aWZ5IHNsb3cgdGVzdHMuCisKK1RvIGdlbmVyYXRlIHRoZSBYTUwgcmVwb3J0LCBzZXQgdGhl
IGBHVEVTVF9PVVRQVVRgIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQorYC0tZ3Rlc3Rfb3V0
cHV0YCBmbGFnIHRvIHRoZSBzdHJpbmcgYCJ4bWw6X3BhdGhfdG9fb3V0cHV0X2ZpbGVfImAsIHdo
aWNoIHdpbGwKK2NyZWF0ZSB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24uIFlvdSBjYW4g
YWxzbyBqdXN0IHVzZSB0aGUgc3RyaW5nCitgInhtbCJgLCBpbiB3aGljaCBjYXNlIHRoZSBvdXRw
dXQgY2FuIGJlIGZvdW5kIGluIHRoZSBgdGVzdF9kZXRhaWwueG1sYCBmaWxlIGluCit0aGUgY3Vy
cmVudCBkaXJlY3RvcnkuCisKK0lmIHlvdSBzcGVjaWZ5IGEgZGlyZWN0b3J5IChmb3IgZXhhbXBs
ZSwgYCJ4bWw6b3V0cHV0L2RpcmVjdG9yeS8iYCBvbiBMaW51eCBvcgorYCJ4bWw6b3V0cHV0XGRp
cmVjdG9yeVwiYCBvbiBXaW5kb3dzKSwgR29vZ2xlIFRlc3Qgd2lsbCBjcmVhdGUgdGhlIFhNTCBm
aWxlIGluCit0aGF0IGRpcmVjdG9yeSwgbmFtZWQgYWZ0ZXIgdGhlIHRlc3QgZXhlY3V0YWJsZSAo
ZS5nLiBgZm9vX3Rlc3QueG1sYCBmb3IgdGVzdAorcHJvZ3JhbSBgZm9vX3Rlc3RgIG9yIGBmb29f
dGVzdC5leGVgKS4gSWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMgKHBlcmhhcHMgbGVmdAorb3Zl
ciBmcm9tIGEgcHJldmlvdXMgcnVuKSwgR29vZ2xlIFRlc3Qgd2lsbCBwaWNrIGEgZGlmZmVyZW50
IG5hbWUgKGUuZy4KK2Bmb29fdGVzdF8xLnhtbGApIHRvIGF2b2lkIG92ZXJ3cml0aW5nIGl0Lgor
CitUaGUgcmVwb3J0IHVzZXMgdGhlIGZvcm1hdCBkZXNjcmliZWQgaGVyZS4gIEl0IGlzIGJhc2Vk
IG9uIHRoZQorYGp1bml0cmVwb3J0YCBBbnQgdGFzayBhbmQgY2FuIGJlIHBhcnNlZCBieSBwb3B1
bGFyIGNvbnRpbnVvdXMgYnVpbGQKK3N5c3RlbXMgbGlrZSBbSHVkc29uXShodHRwczovL2h1ZHNv
bi5kZXYuamF2YS5uZXQvKS4gU2luY2UgdGhhdCBmb3JtYXQKK3dhcyBvcmlnaW5hbGx5IGludGVu
ZGVkIGZvciBKYXZhLCBhIGxpdHRsZSBpbnRlcnByZXRhdGlvbiBpcyByZXF1aXJlZAordG8gbWFr
ZSBpdCBhcHBseSB0byBHb29nbGUgVGVzdCB0ZXN0cywgYXMgc2hvd24gaGVyZToKKworYGBgCis8
dGVzdHN1aXRlcyBuYW1lPSJBbGxUZXN0cyIgLi4uPgorICA8dGVzdHN1aXRlIG5hbWU9InRlc3Rf
Y2FzZV9uYW1lIiAuLi4+CisgICAgPHRlc3RjYXNlIG5hbWU9InRlc3RfbmFtZSIgLi4uPgorICAg
ICAgPGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4i
Lz4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiIvPgorICAgIDwvdGVzdGNhc2U+CisgIDwv
dGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPgorYGBgCisKKyAgKiBUaGUgcm9vdCBgPHRlc3RzdWl0
ZXM+YCBlbGVtZW50IGNvcnJlc3BvbmRzIHRvIHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFtLgorICAq
IGA8dGVzdHN1aXRlPmAgZWxlbWVudHMgY29ycmVzcG9uZCB0byBHb29nbGUgVGVzdCB0ZXN0IGNh
c2VzLgorICAqIGA8dGVzdGNhc2U+YCBlbGVtZW50cyBjb3JyZXNwb25kIHRvIEdvb2dsZSBUZXN0
IHRlc3QgZnVuY3Rpb25zLgorCitGb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgcHJvZ3JhbQor
CitgYGAKK1RFU1QoTWF0aFRlc3QsIEFkZGl0aW9uKSB7IC4uLiB9CitURVNUKE1hdGhUZXN0LCBT
dWJ0cmFjdGlvbikgeyAuLi4gfQorVEVTVChMb2dpY1Rlc3QsIE5vbkNvbnRyYWRpY3Rpb24pIHsg
Li4uIH0KK2BgYAorCitjb3VsZCBnZW5lcmF0ZSB0aGlzIHJlcG9ydDoKKworYGBgCis8P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHRlc3RzdWl0ZXMgdGVzdHM9IjMiIGZh
aWx1cmVzPSIxIiBlcnJvcnM9IjAiIHRpbWU9IjM1IiBuYW1lPSJBbGxUZXN0cyI+CisgIDx0ZXN0
c3VpdGUgbmFtZT0iTWF0aFRlc3QiIHRlc3RzPSIyIiBmYWlsdXJlcz0iMSIgZXJyb3JzPSIwIiB0
aW1lPSIxNSI+CisgICAgPHRlc3RjYXNlIG5hbWU9IkFkZGl0aW9uIiBzdGF0dXM9InJ1biIgdGlt
ZT0iNyIgY2xhc3NuYW1lPSIiPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IGFk
ZCgxLCAxKSYjeDBBOyBBY3R1YWw6IDMmI3gwQTtFeHBlY3RlZDogMiIgdHlwZT0iIi8+CisgICAg
ICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogYWRkKDEsIC0xKSYjeDBBOyBBY3R1YWw6IDEm
I3gwQTtFeHBlY3RlZDogMCIgdHlwZT0iIi8+CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8dGVzdGNh
c2UgbmFtZT0iU3VidHJhY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSI1IiBjbGFzc25hbWU9IiI+
CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iTG9n
aWNUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGVycm9ycz0iMCIgdGltZT0iNSI+CisgICAg
PHRlc3RjYXNlIG5hbWU9Ik5vbkNvbnRyYWRpY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSI1IiBj
bGFzc25hbWU9IiI+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rlc3RzdWl0
ZXM+CitgYGAKKworVGhpbmdzIHRvIG5vdGU6CisKKyAgKiBUaGUgYHRlc3RzYCBhdHRyaWJ1dGUg
b2YgYSBgPHRlc3RzdWl0ZXM+YCBvciBgPHRlc3RzdWl0ZT5gIGVsZW1lbnQgdGVsbHMgaG93IG1h
bnkgdGVzdCBmdW5jdGlvbnMgdGhlIEdvb2dsZSBUZXN0IHByb2dyYW0gb3IgdGVzdCBjYXNlIGNv
bnRhaW5zLCB3aGlsZSB0aGUgYGZhaWx1cmVzYCBhdHRyaWJ1dGUgdGVsbHMgaG93IG1hbnkgb2Yg
dGhlbSBmYWlsZWQuCisgICogVGhlIGB0aW1lYCBhdHRyaWJ1dGUgZXhwcmVzc2VzIHRoZSBkdXJh
dGlvbiBvZiB0aGUgdGVzdCwgdGVzdCBjYXNlLCBvciBlbnRpcmUgdGVzdCBwcm9ncmFtIGluIG1p
bGxpc2Vjb25kcy4KKyAgKiBFYWNoIGA8ZmFpbHVyZT5gIGVsZW1lbnQgY29ycmVzcG9uZHMgdG8g
YSBzaW5nbGUgZmFpbGVkIEdvb2dsZSBUZXN0IGFzc2VydGlvbi4KKyAgKiBTb21lIEpVbml0IGNv
bmNlcHRzIGRvbid0IGFwcGx5IHRvIEdvb2dsZSBUZXN0LCB5ZXQgd2UgaGF2ZSB0byBjb25mb3Jt
IHRvIHRoZSBEVEQuIFRoZXJlZm9yZSB5b3UnbGwgc2VlIHNvbWUgZHVtbXkgZWxlbWVudHMgYW5k
IGF0dHJpYnV0ZXMgaW4gdGhlIHJlcG9ydC4gWW91IGNhbiBzYWZlbHkgaWdub3JlIHRoZXNlIHBh
cnRzLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgQ29udHJv
bGxpbmcgSG93IEZhaWx1cmVzIEFyZSBSZXBvcnRlZCAjIworCisjIyMgVHVybmluZyBBc3NlcnRp
b24gRmFpbHVyZXMgaW50byBCcmVhay1Qb2ludHMgIyMjCisKK1doZW4gcnVubmluZyB0ZXN0IHBy
b2dyYW1zIHVuZGVyIGEgZGVidWdnZXIsIGl0J3MgdmVyeSBjb252ZW5pZW50IGlmIHRoZQorZGVi
dWdnZXIgY2FuIGNhdGNoIGFuIGFzc2VydGlvbiBmYWlsdXJlIGFuZCBhdXRvbWF0aWNhbGx5IGRy
b3AgaW50byBpbnRlcmFjdGl2ZQorbW9kZS4gR29vZ2xlIFRlc3QncyBfYnJlYWstb24tZmFpbHVy
ZV8gbW9kZSBzdXBwb3J0cyB0aGlzIGJlaGF2aW9yLgorCitUbyBlbmFibGUgaXQsIHNldCB0aGUg
YEdURVNUX0JSRUFLX09OX0ZBSUxVUkVgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEgdmFsdWUK
K290aGVyIHRoYW4gYDBgIC4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhlIGAtLWd0ZXN0
X2JyZWFrX29uX2ZhaWx1cmVgCitjb21tYW5kIGxpbmUgZmxhZy4KKworX0F2YWlsYWJpbGl0eTpf
IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBEaXNhYmxpbmcgQ2F0Y2hpbmcgVGVzdC1UaHJv
d24gRXhjZXB0aW9ucyAjIyMKKworR29vZ2xlIFRlc3QgY2FuIGJlIHVzZWQgZWl0aGVyIHdpdGgg
b3Igd2l0aG91dCBleGNlcHRpb25zIGVuYWJsZWQuICBJZgorYSB0ZXN0IHRocm93cyBhIEMrKyBl
eGNlcHRpb24gb3IgKG9uIFdpbmRvd3MpIGEgc3RydWN0dXJlZCBleGNlcHRpb24KKyhTRUgpLCBi
eSBkZWZhdWx0IEdvb2dsZSBUZXN0IGNhdGNoZXMgaXQsIHJlcG9ydHMgaXQgYXMgYSB0ZXN0Citm
YWlsdXJlLCBhbmQgY29udGludWVzIHdpdGggdGhlIG5leHQgdGVzdCBtZXRob2QuICBUaGlzIG1h
eGltaXplcyB0aGUKK2NvdmVyYWdlIG9mIGEgdGVzdCBydW4uICBBbHNvLCBvbiBXaW5kb3dzIGFu
IHVuY2F1Z2h0IGV4Y2VwdGlvbiB3aWxsCitjYXVzZSBhIHBvcC11cCB3aW5kb3csIHNvIGNhdGNo
aW5nIHRoZSBleGNlcHRpb25zIGFsbG93cyB5b3UgdG8gcnVuCit0aGUgdGVzdHMgYXV0b21hdGlj
YWxseS4KKworV2hlbiBkZWJ1Z2dpbmcgdGhlIHRlc3QgZmFpbHVyZXMsIGhvd2V2ZXIsIHlvdSBt
YXkgaW5zdGVhZCB3YW50IHRoZQorZXhjZXB0aW9ucyB0byBiZSBoYW5kbGVkIGJ5IHRoZSBkZWJ1
Z2dlciwgc3VjaCB0aGF0IHlvdSBjYW4gZXhhbWluZQordGhlIGNhbGwgc3RhY2sgd2hlbiBhbiBl
eGNlcHRpb24gaXMgdGhyb3duLiAgVG8gYWNoaWV2ZSB0aGF0LCBzZXQgdGhlCitgR1RFU1RfQ0FU
Q0hfRVhDRVBUSU9OU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYDBgLCBvciB1c2UgdGhlCitg
LS1ndGVzdF9jYXRjaF9leGNlcHRpb25zPTBgIGZsYWcgd2hlbiBydW5uaW5nIHRoZSB0ZXN0cy4K
KworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIExldHRpbmcg
QW5vdGhlciBUZXN0aW5nIEZyYW1ld29yayBEcml2ZSAjIyMKKworSWYgeW91IHdvcmsgb24gYSBw
cm9qZWN0IHRoYXQgaGFzIGFscmVhZHkgYmVlbiB1c2luZyBhbm90aGVyIHRlc3RpbmcKK2ZyYW1l
d29yayBhbmQgaXMgbm90IHJlYWR5IHRvIGNvbXBsZXRlbHkgc3dpdGNoIHRvIEdvb2dsZSBUZXN0
IHlldCwKK3lvdSBjYW4gZ2V0IG11Y2ggb2YgR29vZ2xlIFRlc3QncyBiZW5lZml0IGJ5IHVzaW5n
IGl0cyBhc3NlcnRpb25zIGluCit5b3VyIGV4aXN0aW5nIHRlc3RzLiAgSnVzdCBjaGFuZ2UgeW91
ciBgbWFpbigpYCBmdW5jdGlvbiB0byBsb29rCitsaWtlOgorCitgYGAKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgOjp0ZXN0
aW5nOjpHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1ZTsKKyAgLy8gSW1wb3J0YW50
OiBHb29nbGUgVGVzdCBtdXN0IGJlIGluaXRpYWxpemVkLgorICA6OnRlc3Rpbmc6OkluaXRHb29n
bGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICAuLi4gd2hhdGV2ZXIgeW91ciBleGlzdGluZyB0ZXN0
aW5nIGZyYW1ld29yayByZXF1aXJlcyAuLi4KK30KK2BgYAorCitXaXRoIHRoYXQsIHlvdSBjYW4g
dXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW4gYWRkaXRpb24gdG8gdGhlCituYXRpdmUgYXNz
ZXJ0aW9ucyB5b3VyIHRlc3RpbmcgZnJhbWV3b3JrIHByb3ZpZGVzLCBmb3IgZXhhbXBsZToKKwor
YGBgCit2b2lkIFRlc3RGb29Eb2VzQmFyKCkgeworICBGb28gZm9vOworICBFWFBFQ1RfTEUoZm9v
LkJhcigxKSwgMTAwKTsgICAgIC8vIEEgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uLgorICBDUFBVTklU
X0FTU0VSVChmb28uSXNFbXB0eSgpKTsgIC8vIEEgbmF0aXZlIGFzc2VydGlvbi4KK30KK2BgYAor
CitJZiBhIEdvb2dsZSBUZXN0IGFzc2VydGlvbiBmYWlscywgaXQgd2lsbCBwcmludCBhbiBlcnJv
ciBtZXNzYWdlIGFuZAordGhyb3cgYW4gZXhjZXB0aW9uLCB3aGljaCB3aWxsIGJlIHRyZWF0ZWQg
YXMgYSBmYWlsdXJlIGJ5IHlvdXIgaG9zdAordGVzdGluZyBmcmFtZXdvcmsuICBJZiB5b3UgY29t
cGlsZSB5b3VyIGNvZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLAorYSBmYWlsZWQgR29vZ2xl
IFRlc3QgYXNzZXJ0aW9uIHdpbGwgaW5zdGVhZCBleGl0IHlvdXIgcHJvZ3JhbSB3aXRoIGEKK25v
bi16ZXJvIGNvZGUsIHdoaWNoIHdpbGwgYWxzbyBzaWduYWwgYSB0ZXN0IGZhaWx1cmUgdG8geW91
ciB0ZXN0CitydW5uZXIuCisKK0lmIHlvdSBkb24ndCB3cml0ZSBgOjp0ZXN0aW5nOjpHVEVTVF9G
TEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1ZTtgIGluCit5b3VyIGBtYWluKClgLCB5b3UgY2Fu
IGFsdGVybmF0aXZlbHkgZW5hYmxlIHRoaXMgZmVhdHVyZSBieSBzcGVjaWZ5aW5nCit0aGUgYC0t
Z3Rlc3RfdGhyb3dfb25fZmFpbHVyZWAgZmxhZyBvbiB0aGUgY29tbWFuZC1saW5lIG9yIHNldHRp
bmcgdGhlCitgR1RFU1RfVEhST1dfT05fRkFJTFVSRWAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8g
YSBub24temVybyB2YWx1ZS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7
IHNpbmNlIHYxLjMuMC4KKworIyMgRGlzdHJpYnV0aW5nIFRlc3QgRnVuY3Rpb25zIHRvIE11bHRp
cGxlIE1hY2hpbmVzICMjCisKK0lmIHlvdSBoYXZlIG1vcmUgdGhhbiBvbmUgbWFjaGluZSB5b3Ug
Y2FuIHVzZSB0byBydW4gYSB0ZXN0IHByb2dyYW0sCit5b3UgbWlnaHQgd2FudCB0byBydW4gdGhl
IHRlc3QgZnVuY3Rpb25zIGluIHBhcmFsbGVsIGFuZCBnZXQgdGhlCityZXN1bHQgZmFzdGVyLiAg
V2UgY2FsbCB0aGlzIHRlY2huaXF1ZSBfc2hhcmRpbmdfLCB3aGVyZSBlYWNoIG1hY2hpbmUKK2lz
IGNhbGxlZCBhIF9zaGFyZF8uCisKK0dvb2dsZSBUZXN0IGlzIGNvbXBhdGlibGUgd2l0aCB0ZXN0
IHNoYXJkaW5nLiAgVG8gdGFrZSBhZHZhbnRhZ2Ugb2YKK3RoaXMgZmVhdHVyZSwgeW91ciB0ZXN0
IHJ1bm5lciAobm90IHBhcnQgb2YgR29vZ2xlIFRlc3QpIG5lZWRzIHRvIGRvCit0aGUgZm9sbG93
aW5nOgorCisgIDEuIEFsbG9jYXRlIGEgbnVtYmVyIG9mIG1hY2hpbmVzIChzaGFyZHMpIHRvIHJ1
biB0aGUgdGVzdHMuCisgIDEuIE9uIGVhY2ggc2hhcmQsIHNldCB0aGUgYEdURVNUX1RPVEFMX1NI
QVJEU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhlIHRvdGFsIG51bWJlciBvZiBzaGFyZHMu
ICBJdCBtdXN0IGJlIHRoZSBzYW1lIGZvciBhbGwgc2hhcmRzLgorICAxLiBPbiBlYWNoIHNoYXJk
LCBzZXQgdGhlIGBHVEVTVF9TSEFSRF9JTkRFWGAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhl
IGluZGV4IG9mIHRoZSBzaGFyZC4gIERpZmZlcmVudCBzaGFyZHMgbXVzdCBiZSBhc3NpZ25lZCBk
aWZmZXJlbnQgaW5kaWNlcywgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcmFuZ2UgYFswLCBHVEVTVF9U
T1RBTF9TSEFSRFMgLSAxXWAuCisgIDEuIFJ1biB0aGUgc2FtZSB0ZXN0IHByb2dyYW0gb24gYWxs
IHNoYXJkcy4gIFdoZW4gR29vZ2xlIFRlc3Qgc2VlcyB0aGUgYWJvdmUgdHdvIGVudmlyb25tZW50
IHZhcmlhYmxlcywgaXQgd2lsbCBzZWxlY3QgYSBzdWJzZXQgb2YgdGhlIHRlc3QgZnVuY3Rpb25z
IHRvIHJ1bi4gIEFjcm9zcyBhbGwgc2hhcmRzLCBlYWNoIHRlc3QgZnVuY3Rpb24gaW4gdGhlIHBy
b2dyYW0gd2lsbCBiZSBydW4gZXhhY3RseSBvbmNlLgorICAxLiBXYWl0IGZvciBhbGwgc2hhcmRz
IHRvIGZpbmlzaCwgdGhlbiBjb2xsZWN0IGFuZCByZXBvcnQgdGhlIHJlc3VsdHMuCisKK1lvdXIg
cHJvamVjdCBtYXkgaGF2ZSB0ZXN0cyB0aGF0IHdlcmUgd3JpdHRlbiB3aXRob3V0IEdvb2dsZSBU
ZXN0IGFuZAordGh1cyBkb24ndCB1bmRlcnN0YW5kIHRoaXMgcHJvdG9jb2wuICBJbiBvcmRlciBm
b3IgeW91ciB0ZXN0IHJ1bm5lciB0bworZmlndXJlIG91dCB3aGljaCB0ZXN0IHN1cHBvcnRzIHNo
YXJkaW5nLCBpdCBjYW4gc2V0IHRoZSBlbnZpcm9ubWVudAordmFyaWFibGUgYEdURVNUX1NIQVJE
X1NUQVRVU19GSUxFYCB0byBhIG5vbi1leGlzdGVudCBmaWxlIHBhdGguICBJZiBhCit0ZXN0IHBy
b2dyYW0gc3VwcG9ydHMgc2hhcmRpbmcsIGl0IHdpbGwgY3JlYXRlIHRoaXMgZmlsZSB0bworYWNr
bm93bGVkZ2UgdGhlIGZhY3QgKHRoZSBhY3R1YWwgY29udGVudHMgb2YgdGhlIGZpbGUgYXJlIG5v
dAoraW1wb3J0YW50IGF0IHRoaXMgdGltZTsgYWx0aG91Z2ggd2UgbWF5IHN0aWNrIHNvbWUgdXNl
ZnVsIGluZm9ybWF0aW9uCitpbiBpdCBpbiB0aGUgZnV0dXJlLik7IG90aGVyd2lzZSBpdCB3aWxs
IG5vdCBjcmVhdGUgaXQuCisKK0hlcmUncyBhbiBleGFtcGxlIHRvIG1ha2UgaXQgY2xlYXIuICBT
dXBwb3NlIHlvdSBoYXZlIGEgdGVzdCBwcm9ncmFtCitgZm9vX3Rlc3RgIHRoYXQgY29udGFpbnMg
dGhlIGZvbGxvd2luZyA1IHRlc3QgZnVuY3Rpb25zOgorYGBgCitURVNUKEEsIFYpCitURVNUKEEs
IFcpCitURVNUKEIsIFgpCitURVNUKEIsIFkpCitURVNUKEIsIFopCitgYGAKK2FuZCB5b3UgaGF2
ZSAzIG1hY2hpbmVzIGF0IHlvdXIgZGlzcG9zYWwuICBUbyBydW4gdGhlIHRlc3QgZnVuY3Rpb25z
IGluCitwYXJhbGxlbCwgeW91IHdvdWxkIHNldCBgR1RFU1RfVE9UQUxfU0hBUkRTYCB0byAzIG9u
IGFsbCBtYWNoaW5lcywgYW5kCitzZXQgYEdURVNUX1NIQVJEX0lOREVYYCB0byAwLCAxLCBhbmQg
MiBvbiB0aGUgbWFjaGluZXMgcmVzcGVjdGl2ZWx5LgorVGhlbiB5b3Ugd291bGQgcnVuIHRoZSBz
YW1lIGBmb29fdGVzdGAgb24gZWFjaCBtYWNoaW5lLgorCitHb29nbGUgVGVzdCByZXNlcnZlcyB0
aGUgcmlnaHQgdG8gY2hhbmdlIGhvdyB0aGUgd29yayBpcyBkaXN0cmlidXRlZAorYWNyb3NzIHRo
ZSBzaGFyZHMsIGJ1dCBoZXJlJ3Mgb25lIHBvc3NpYmxlIHNjZW5hcmlvOgorCisgICogTWFjaGlu
ZSAjMCBydW5zIGBBLlZgIGFuZCBgQi5YYC4KKyAgKiBNYWNoaW5lICMxIHJ1bnMgYEEuV2AgYW5k
IGBCLllgLgorICAqIE1hY2hpbmUgIzIgcnVucyBgQi5aYC4KKworX0F2YWlsYWJpbGl0eTpfIExp
bnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4zLjAuCisKKyMgRnVzaW5nIEdvb2ds
ZSBUZXN0IFNvdXJjZSBGaWxlcyAjCisKK0dvb2dsZSBUZXN0J3MgaW1wbGVtZW50YXRpb24gY29u
c2lzdHMgb2YgfjMwIGZpbGVzIChleGNsdWRpbmcgaXRzIG93bgordGVzdHMpLiAgU29tZXRpbWVz
IHlvdSBtYXkgd2FudCB0aGVtIHRvIGJlIHBhY2thZ2VkIHVwIGluIHR3byBmaWxlcyAoYQorYC5o
YCBhbmQgYSBgLmNjYCkgaW5zdGVhZCwgc3VjaCB0aGF0IHlvdSBjYW4gZWFzaWx5IGNvcHkgdGhl
bSB0byBhIG5ldworbWFjaGluZSBhbmQgc3RhcnQgaGFja2luZyB0aGVyZS4gIEZvciB0aGlzIHdl
IHByb3ZpZGUgYW4gZXhwZXJpbWVudGFsCitQeXRob24gc2NyaXB0IGBmdXNlX2d0ZXN0X2ZpbGVz
LnB5YCBpbiB0aGUgYHNjcmlwdHMvYCBkaXJlY3RvcnkgKHNpbmNlIHJlbGVhc2UgMS4zLjApLgor
QXNzdW1pbmcgeW91IGhhdmUgUHl0aG9uIDIuNCBvciBhYm92ZSBpbnN0YWxsZWQgb24geW91ciBt
YWNoaW5lLCBqdXN0CitnbyB0byB0aGF0IGRpcmVjdG9yeSBhbmQgcnVuCitgYGAKK3B5dGhvbiBm
dXNlX2d0ZXN0X2ZpbGVzLnB5IE9VVFBVVF9ESVIKK2BgYAorCithbmQgeW91IHNob3VsZCBzZWUg
YW4gYE9VVFBVVF9ESVJgIGRpcmVjdG9yeSBiZWluZyBjcmVhdGVkIHdpdGggZmlsZXMKK2BndGVz
dC9ndGVzdC5oYCBhbmQgYGd0ZXN0L2d0ZXN0LWFsbC5jY2AgaW4gaXQuICBUaGVzZSBmaWxlcyBj
b250YWluCitldmVyeXRoaW5nIHlvdSBuZWVkIHRvIHVzZSBHb29nbGUgVGVzdC4gIEp1c3QgY29w
eSB0aGVtIHRvIGFueXdoZXJlCit5b3Ugd2FudCBhbmQgeW91IGFyZSByZWFkeSB0byB3cml0ZSB0
ZXN0cy4gIFlvdSBjYW4gdXNlIHRoZQorW3NjcmlwdHMvdGVzdC9NYWtlZmlsZV0oLi4vc2NyaXB0
cy90ZXN0L01ha2VmaWxlKQorZmlsZSBhcyBhbiBleGFtcGxlIG9uIGhvdyB0byBjb21waWxlIHlv
dXIgdGVzdHMgYWdhaW5zdCB0aGVtLgorCisjIFdoZXJlIHRvIEdvIGZyb20gSGVyZSAjCisKK0Nv
bmdyYXR1bGF0aW9ucyEgWW91J3ZlIG5vdyBsZWFybmVkIG1vcmUgYWR2YW5jZWQgR29vZ2xlIFRl
c3QgdG9vbHMgYW5kIGFyZQorcmVhZHkgdG8gdGFja2xlIG1vcmUgY29tcGxleCB0ZXN0aW5nIHRh
c2tzLiBJZiB5b3Ugd2FudCB0byBkaXZlIGV2ZW4gZGVlcGVyLCB5b3UKK2NhbiByZWFkIHRoZSBb
RnJlcXVlbnRseS1Bc2tlZCBRdWVzdGlvbnNdKFYxXzZfRkFRLm1kKS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfNl9Eb2N1bWVudGF0aW9uLm1kIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV82X0RvY3VtZW50YXRpb24ubWQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2E5MjQ2NjBhM2RjMDYwM2Y4MTM3NDM4OThjY2Q2YzNjOTIwNzk3NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfNl9Eb2N1bWVudGF0aW9uLm1kCkBA
IC0wLDAgKzEsMTQgQEAKK1RoaXMgcGFnZSBsaXN0cyBhbGwgZG9jdW1lbnRhdGlvbiB3aWtpIHBh
Z2VzIGZvciBHb29nbGUgVGVzdCAqKjEuNioqCistLSAqKmlmIHlvdSB1c2UgYSByZWxlYXNlZCB2
ZXJzaW9uIG9mIEdvb2dsZSBUZXN0LCBwbGVhc2UgcmVhZCB0aGUKK2RvY3VtZW50YXRpb24gZm9y
IHRoYXQgc3BlY2lmaWMgdmVyc2lvbiBpbnN0ZWFkLioqCisKKyAgKiBbUHJpbWVyXShWMV82X1By
aW1lci5tZCkgLS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJlIG5ldyB0byBHb29nbGUgVGVzdC4KKyAg
KiBbU2FtcGxlc10oVjFfNl9TYW1wbGVzLm1kKSAtLSBsZWFybiBmcm9tIGV4YW1wbGVzLgorICAq
IFtBZHZhbmNlZEd1aWRlXShWMV82X0FkdmFuY2VkR3VpZGUubWQpIC0tIGxlYXJuIG1vcmUgYWJv
dXQgR29vZ2xlIFRlc3QuCisgICogW1hjb2RlR3VpZGVdKFYxXzZfWGNvZGVHdWlkZS5tZCkgLS0g
aG93IHRvIHVzZSBHb29nbGUgVGVzdCBpbiBYY29kZSBvbiBNYWMuCisgICogW0ZyZXF1ZW50bHkt
QXNrZWQgUXVlc3Rpb25zXShWMV82X0ZBUS5tZCkgLS0gY2hlY2sgaGVyZSBiZWZvcmUgYXNraW5n
IGEgcXVlc3Rpb24gb24gdGhlIG1haWxpbmcgbGlzdC4KKworVG8gY29udHJpYnV0ZSBjb2RlIHRv
IEdvb2dsZSBUZXN0LCByZWFkOgorCisgICogW0Rldkd1aWRlXShEZXZHdWlkZS5tZCkgLS0gcmVh
ZCB0aGlzIF9iZWZvcmVfIHdyaXRpbmcgeW91ciBmaXJzdCBwYXRjaC4KKyAgKiBbUHVtcE1hbnVh
bF0oVjFfNl9QdW1wTWFudWFsLm1kKSAtLSBob3cgd2UgZ2VuZXJhdGUgc29tZSBvZiBHb29nbGUg
VGVzdCdzIHNvdXJjZSBmaWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzZfRkFRLm1kIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV82X0ZBUS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjdmNzg0MDc3MjJl
MWU1ZTdhODZjNjcxMzU5OGU1Nzk2MDdiNzgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV82X0ZBUS5tZApAQCAtMCwwICsxLDEwMzggQEAKKworCitJ
ZiB5b3UgY2Fubm90IGZpbmQgdGhlIGFuc3dlciB0byB5b3VyIHF1ZXN0aW9uIGhlcmUsIGFuZCB5
b3UgaGF2ZSByZWFkCitbUHJpbWVyXShWMV82X1ByaW1lci5tZCkgYW5kIFtBZHZhbmNlZEd1aWRl
XShWMV82X0FkdmFuY2VkR3VpZGUubWQpLCBzZW5kIGl0IHRvCitnb29nbGV0ZXN0ZnJhbWV3b3Jr
QGdvb2dsZWdyb3Vwcy5jb20uCisKKyMjIFdoeSBzaG91bGQgSSB1c2UgR29vZ2xlIFRlc3QgaW5z
dGVhZCBvZiBteSBmYXZvcml0ZSBDKysgdGVzdGluZyBmcmFtZXdvcms/ICMjCisKK0ZpcnN0LCBs
ZXQgdXMgc2F5IGNsZWFybHkgdGhhdCB3ZSBkb24ndCB3YW50IHRvIGdldCBpbnRvIHRoZSBkZWJh
dGUgb2YKK3doaWNoIEMrKyB0ZXN0aW5nIGZyYW1ld29yayBpcyAqKnRoZSBiZXN0KiouICBUaGVy
ZSBleGlzdCBtYW55IGZpbmUKK2ZyYW1ld29ya3MgZm9yIHdyaXRpbmcgQysrIHRlc3RzLCBhbmQg
d2UgaGF2ZSB0cmVtZW5kb3VzIHJlc3BlY3QgZm9yCit0aGUgZGV2ZWxvcGVycyBhbmQgdXNlcnMg
b2YgdGhlbS4gIFdlIGRvbid0IHRoaW5rIHRoZXJlIGlzIChvciB3aWxsCitiZSkgYSBzaW5nbGUg
YmVzdCBmcmFtZXdvcmsgLSB5b3UgaGF2ZSB0byBwaWNrIHRoZSByaWdodCB0b29sIGZvciB0aGUK
K3BhcnRpY3VsYXIgdGFzayB5b3UgYXJlIHRhY2tsaW5nLgorCitXZSBjcmVhdGVkIEdvb2dsZSBU
ZXN0IGJlY2F1c2Ugd2UgY291bGRuJ3QgZmluZCB0aGUgcmlnaHQgY29tYmluYXRpb24KK29mIGZl
YXR1cmVzIGFuZCBjb252ZW5pZW5jZXMgaW4gYW4gZXhpc3RpbmcgZnJhbWV3b3JrIHRvIHNhdGlz
ZnkgX291cl8KK25lZWRzLiAgVGhlIGZvbGxvd2luZyBpcyBhIGxpc3Qgb2YgdGhpbmdzIHRoYXQg
X3dlXyBsaWtlIGFib3V0IEdvb2dsZQorVGVzdC4gIFdlIGRvbid0IGNsYWltIHRoZW0gdG8gYmUg
dW5pcXVlIHRvIEdvb2dsZSBUZXN0IC0gcmF0aGVyLCB0aGUKK2NvbWJpbmF0aW9uIG9mIHRoZW0g
bWFrZXMgR29vZ2xlIFRlc3QgdGhlIGNob2ljZSBmb3IgdXMuICBXZSBob3BlIHRoaXMKK2xpc3Qg
Y2FuIGhlbHAgeW91IGRlY2lkZSB3aGV0aGVyIGl0IGlzIGZvciB5b3UgdG9vLgorCisgICogR29v
Z2xlIFRlc3QgaXMgZGVzaWduZWQgdG8gYmUgcG9ydGFibGU6IGl0IGRvZXNuJ3QgcmVxdWlyZSBl
eGNlcHRpb25zIG9yIFJUVEk7IGl0IHdvcmtzIGFyb3VuZCB2YXJpb3VzIGJ1Z3MgaW4gdmFyaW91
cyBjb21waWxlcnMgYW5kIGVudmlyb25tZW50czsgZXRjLiAgQXMgYSByZXN1bHQsIGl0IHdvcmtz
IG9uIExpbnV4LCBNYWMgT1MgWCwgV2luZG93cyBhbmQgc2V2ZXJhbCBlbWJlZGRlZCBvcGVyYXRp
bmcgc3lzdGVtcy4KKyAgKiBOb25mYXRhbCBhc3NlcnRpb25zIChgRVhQRUNUXypgKSBoYXZlIHBy
b3ZlbiB0byBiZSBncmVhdCB0aW1lIHNhdmVycywgYXMgdGhleSBhbGxvdyBhIHRlc3QgdG8gcmVw
b3J0IG11bHRpcGxlIGZhaWx1cmVzIGluIGEgc2luZ2xlIGVkaXQtY29tcGlsZS10ZXN0IGN5Y2xl
LgorICAqIEl0J3MgZWFzeSB0byB3cml0ZSBhc3NlcnRpb25zIHRoYXQgZ2VuZXJhdGUgaW5mb3Jt
YXRpdmUgbWVzc2FnZXM6IHlvdSBqdXN0IHVzZSB0aGUgc3RyZWFtIHN5bnRheCB0byBhcHBlbmQg
YW55IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24sIGUuZy4gYEFTU0VSVF9FUSg1LCBGb28oaSkpIDw8
ICIgd2hlcmUgaSA9ICIgPDwgaTtgLiAgSXQgZG9lc24ndCByZXF1aXJlIGEgbmV3IHNldCBvZiBt
YWNyb3Mgb3Igc3BlY2lhbCBmdW5jdGlvbnMuCisgICogR29vZ2xlIFRlc3QgYXV0b21hdGljYWxs
eSBkZXRlY3RzIHlvdXIgdGVzdHMgYW5kIGRvZXNuJ3QgcmVxdWlyZSB5b3UgdG8gZW51bWVyYXRl
IHRoZW0gaW4gb3JkZXIgdG8gcnVuIHRoZW0uCisgICogRGVhdGggdGVzdHMgYXJlIHByZXR0eSBo
YW5keSBmb3IgZW5zdXJpbmcgdGhhdCB5b3VyIGFzc2VydHMgaW4gcHJvZHVjdGlvbiBjb2RlIGFy
ZSB0cmlnZ2VyZWQgYnkgdGhlIHJpZ2h0IGNvbmRpdGlvbnMuCisgICogYFNDT1BFRF9UUkFDRWAg
aGVscHMgeW91IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYW4gYXNzZXJ0aW9uIGZhaWx1cmUg
d2hlbiBpdCBjb21lcyBmcm9tIGluc2lkZSBhIHN1Yi1yb3V0aW5lIG9yIGxvb3AuCisgICogWW91
IGNhbiBkZWNpZGUgd2hpY2ggdGVzdHMgdG8gcnVuIHVzaW5nIG5hbWUgcGF0dGVybnMuICBUaGlz
IHNhdmVzIHRpbWUgd2hlbiB5b3Ugd2FudCB0byBxdWlja2x5IHJlcHJvZHVjZSBhIHRlc3QgZmFp
bHVyZS4KKyAgKiBHb29nbGUgVGVzdCBjYW4gZ2VuZXJhdGUgWE1MIHRlc3QgcmVzdWx0IHJlcG9y
dHMgdGhhdCBjYW4gYmUgcGFyc2VkIGJ5IHBvcHVsYXIgY29udGludW91cyBidWlsZCBzeXN0ZW0g
bGlrZSBIdWRzb24uCisgICogU2ltcGxlIHRoaW5ncyBhcmUgZWFzeSBpbiBHb29nbGUgVGVzdCwg
d2hpbGUgaGFyZCB0aGluZ3MgYXJlIHBvc3NpYmxlOiBpbiBhZGRpdGlvbiB0byBhZHZhbmNlZCBm
ZWF0dXJlcyBsaWtlIFtnbG9iYWwgdGVzdCBlbnZpcm9ubWVudHNdKFYxXzZfQWR2YW5jZWRHdWlk
ZS5tZCNHbG9iYWxfU2V0LVVwX2FuZF9UZWFyLURvd24pIGFuZCB0ZXN0cyBwYXJhbWV0ZXJpemVk
IGJ5IFt2YWx1ZXNdKFYxXzZfQWR2YW5jZWRHdWlkZS5tZCN2YWx1ZS1wYXJhbWV0ZXJpemVkLXRl
c3RzKSBvciBbdHlwZXNdKFYxXzZfQWR2YW5jZWRHdWlkZS5tZCN0eXBlZC10ZXN0cyksIEdvb2ds
ZSBUZXN0IHN1cHBvcnRzIHZhcmlvdXMgd2F5cyBmb3IgdGhlIHVzZXIgdG8gZXh0ZW5kIHRoZSBm
cmFtZXdvcmsgLS0gaWYgR29vZ2xlIFRlc3QgZG9lc24ndCBkbyBzb21ldGhpbmcgb3V0IG9mIHRo
ZSBib3gsIGNoYW5jZXMgYXJlIHRoYXQgYSB1c2VyIGNhbiBpbXBsZW1lbnQgdGhlIGZlYXR1cmUg
dXNpbmcgR29vZ2xlIFRlc3QncyBwdWJsaWMgQVBJLCB3aXRob3V0IGNoYW5naW5nIEdvb2dsZSBU
ZXN0IGl0c2VsZi4gIEluIHBhcnRpY3VsYXIsIHlvdSBjYW46CisgICAgKiBleHBhbmQgeW91ciB0
ZXN0aW5nIHZvY2FidWxhcnkgYnkgZGVmaW5pbmcgW2N1c3RvbSBwcmVkaWNhdGVzXShWMV82X0Fk
dmFuY2VkR3VpZGUubWQjcHJlZGljYXRlLWFzc2VydGlvbnMtZm9yLWJldHRlci1lcnJvci1tZXNz
YWdlcyksCisgICAgKiB0ZWFjaCBHb29nbGUgVGVzdCBob3cgdG8gW3ByaW50IHlvdXIgdHlwZXNd
KFYxXzZfQWR2YW5jZWRHdWlkZS5tZCN0ZWFjaGluZy1nb29nbGUtdGVzdC1ob3ctdG8tcHJpbnQt
eW91ci12YWx1ZXMpLAorICAgICogZGVmaW5lIHlvdXIgb3duIHRlc3RpbmcgbWFjcm9zIG9yIHV0
aWxpdGllcyBhbmQgdmVyaWZ5IHRoZW0gdXNpbmcgR29vZ2xlIFRlc3QncyBbU2VydmljZSBQcm92
aWRlciBJbnRlcmZhY2VdKFYxXzZfQWR2YW5jZWRHdWlkZS5tZCNjYXRjaGluZy1mYWlsdXJlcyks
IGFuZAorICAgICogcmVmbGVjdCBvbiB0aGUgdGVzdCBjYXNlcyBvciBjaGFuZ2UgdGhlIHRlc3Qg
b3V0cHV0IGZvcm1hdCBieSBpbnRlcmNlcHRpbmcgdGhlIFt0ZXN0IGV2ZW50c10oVjFfNl9BZHZh
bmNlZEd1aWRlLm1kI2V4dGVuZGluZy1nb29nbGUtdGVzdC1ieS1oYW5kbGluZy10ZXN0LWV2ZW50
cykuCisKKyMjIEknbSBnZXR0aW5nIHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nIEdvb2dsZSBUZXN0
LiAgV291bGQgeW91IGZpeCB0aGVtPyAjIworCitXZSBzdHJpdmUgdG8gbWluaW1pemUgY29tcGls
ZXIgd2FybmluZ3MgR29vZ2xlIFRlc3QgZ2VuZXJhdGVzLiAgQmVmb3JlIHJlbGVhc2luZyBhIG5l
dyB2ZXJzaW9uLCB3ZSB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IGl0IGRvZXNuJ3QgZ2VuZXJhdGUg
d2FybmluZ3Mgd2hlbiBjb21waWxlZCB1c2luZyBpdHMgQ01ha2Ugc2NyaXB0IG9uIFdpbmRvd3Ms
IExpbnV4LCBhbmQgTWFjIE9TLgorCitVbmZvcnR1bmF0ZWx5LCB0aGlzIGRvZXNuJ3QgbWVhbiB5
b3UgYXJlIGd1YXJhbnRlZWQgdG8gc2VlIG5vIHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nIEdvb2ds
ZSBUZXN0IGluIHlvdXIgZW52aXJvbm1lbnQ6CisKKyAgKiBZb3UgbWF5IGJlIHVzaW5nIGEgZGlm
ZmVyZW50IGNvbXBpbGVyIGFzIHdlIHVzZSwgb3IgYSBkaWZmZXJlbnQgdmVyc2lvbiBvZiB0aGUg
c2FtZSBjb21waWxlci4gIFdlIGNhbm5vdCBwb3NzaWJseSB0ZXN0IGZvciBhbGwgY29tcGlsZXJz
LgorICAqIFlvdSBtYXkgYmUgY29tcGlsaW5nIG9uIGEgZGlmZmVyZW50IHBsYXRmb3JtIGFzIHdl
IGRvLgorICAqIFlvdXIgcHJvamVjdCBtYXkgYmUgdXNpbmcgZGlmZmVyZW50IGNvbXBpbGVyIGZs
YWdzIGFzIHdlIGRvLgorCitJdCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIG1ha2UgR29vZ2xl
IFRlc3Qgd2FybmluZy1mcmVlIGZvciBldmVyeW9uZS4gIE9yLCBpdCBtYXkgbm90IGJlIGRlc2ly
YWJsZSBpZiB0aGUgd2FybmluZyBpcyByYXJlbHkgZW5hYmxlZCBhbmQgZml4aW5nIHRoZSB2aW9s
YXRpb25zIG1ha2VzIHRoZSBjb2RlIG1vcmUgY29tcGxleC4KKworSWYgeW91IHNlZSB3YXJuaW5n
cyB3aGVuIGNvbXBpbGluZyBHb29nbGUgVGVzdCwgd2Ugc3VnZ2VzdCB0aGF0IHlvdSB1c2UgdGhl
IGAtaXN5c3RlbWAgZmxhZyAoYXNzdW1pbmcgeW91ciBhcmUgdXNpbmcgR0NDKSB0byBtYXJrIEdv
b2dsZSBUZXN0IGhlYWRlcnMgYXMgc3lzdGVtIGhlYWRlcnMuICBUaGF0J2xsIHN1cHByZXNzIHdh
cm5pbmdzIGZyb20gR29vZ2xlIFRlc3QgaGVhZGVycy4KKworIyMgV2h5IHNob3VsZCBub3QgdGVz
dCBjYXNlIG5hbWVzIGFuZCB0ZXN0IG5hbWVzIGNvbnRhaW4gdW5kZXJzY29yZT8gIyMKKworVW5k
ZXJzY29yZSAoYF9gKSBpcyBzcGVjaWFsLCBhcyBDKysgcmVzZXJ2ZXMgdGhlIGZvbGxvd2luZyB0
byBiZSB1c2VkIGJ5Cit0aGUgY29tcGlsZXIgYW5kIHRoZSBzdGFuZGFyZCBsaWJyYXJ5OgorCisg
IDEuIGFueSBpZGVudGlmaWVyIHRoYXQgc3RhcnRzIHdpdGggYW4gYF9gIGZvbGxvd2VkIGJ5IGFu
IHVwcGVyLWNhc2UgbGV0dGVyLCBhbmQKKyAgMS4gYW55IGlkZW50aWZpZXIgdGhhdCBjb250YWlu
ZXJzIHR3byBjb25zZWN1dGl2ZSB1bmRlcnNjb3JlcyAoaS5lLiBgX19gKSBfYW55d2hlcmVfIGlu
IGl0cyBuYW1lLgorCitVc2VyIGNvZGUgaXMgX3Byb2hpYml0ZWRfIGZyb20gdXNpbmcgc3VjaCBp
ZGVudGlmaWVycy4KKworTm93IGxldCdzIGxvb2sgYXQgd2hhdCB0aGlzIG1lYW5zIGZvciBgVEVT
VGAgYW5kIGBURVNUX0ZgLgorCitDdXJyZW50bHkgYFRFU1QoVGVzdENhc2VOYW1lLCBUZXN0TmFt
ZSlgIGdlbmVyYXRlcyBhIGNsYXNzIG5hbWVkCitgVGVzdENhc2VOYW1lX1Rlc3ROYW1lX1Rlc3Rg
LiAgV2hhdCBoYXBwZW5zIGlmIGBUZXN0Q2FzZU5hbWVgIG9yIGBUZXN0TmFtZWAKK2NvbnRhaW5z
IGBfYD8KKworICAxLiBJZiBgVGVzdENhc2VOYW1lYCBzdGFydHMgd2l0aCBhbiBgX2AgZm9sbG93
ZWQgYnkgYW4gdXBwZXItY2FzZSBsZXR0ZXIgKHNheSwgYF9Gb29gKSwgd2UgZW5kIHVwIHdpdGgg
YF9Gb29fVGVzdE5hbWVfVGVzdGAsIHdoaWNoIGlzIHJlc2VydmVkIGFuZCB0aHVzIGludmFsaWQu
CisgIDEuIElmIGBUZXN0Q2FzZU5hbWVgIGVuZHMgd2l0aCBhbiBgX2AgKHNheSwgYEZvb19gKSwg
d2UgZ2V0IGBGb29fX1Rlc3ROYW1lX1Rlc3RgLCB3aGljaCBpcyBpbnZhbGlkLgorICAxLiBJZiBg
VGVzdE5hbWVgIHN0YXJ0cyB3aXRoIGFuIGBfYCAoc2F5LCBgX0JhcmApLCB3ZSBnZXQgYFRlc3RD
YXNlTmFtZV9fQmFyX1Rlc3RgLCB3aGljaCBpcyBpbnZhbGlkLgorICAxLiBJZiBgVGVzdE5hbWVg
IGVuZHMgd2l0aCBhbiBgX2AgKHNheSwgYEJhcl9gKSwgd2UgZ2V0IGBUZXN0Q2FzZU5hbWVfQmFy
X19UZXN0YCwgd2hpY2ggaXMgaW52YWxpZC4KKworU28gY2xlYXJseSBgVGVzdENhc2VOYW1lYCBh
bmQgYFRlc3ROYW1lYCBjYW5ub3Qgc3RhcnQgb3IgZW5kIHdpdGggYF9gCisoQWN0dWFsbHksIGBU
ZXN0Q2FzZU5hbWVgIGNhbiBzdGFydCB3aXRoIGBfYCAtLSBhcyBsb25nIGFzIHRoZSBgX2AgaXNu
J3QKK2ZvbGxvd2VkIGJ5IGFuIHVwcGVyLWNhc2UgbGV0dGVyLiAgQnV0IHRoYXQncyBnZXR0aW5n
IGNvbXBsaWNhdGVkLiAgU28KK2ZvciBzaW1wbGljaXR5IHdlIGp1c3Qgc2F5IHRoYXQgaXQgY2Fu
bm90IHN0YXJ0IHdpdGggYF9gLikuCisKK0l0IG1heSBzZWVtIGZpbmUgZm9yIGBUZXN0Q2FzZU5h
bWVgIGFuZCBgVGVzdE5hbWVgIHRvIGNvbnRhaW4gYF9gIGluIHRoZQorbWlkZGxlLiAgSG93ZXZl
ciwgY29uc2lkZXIgdGhpczoKK2BgYAorVEVTVChUaW1lLCBGbGllc19MaWtlX0FuX0Fycm93KSB7
IC4uLiB9CitURVNUKFRpbWVfRmxpZXMsIExpa2VfQW5fQXJyb3cpIHsgLi4uIH0KK2BgYAorCitO
b3csIHRoZSB0d28gYFRFU1RgcyB3aWxsIGJvdGggZ2VuZXJhdGUgdGhlIHNhbWUgY2xhc3MKKyhg
VGltZV9GaWxlc19MaWtlX0FuX0Fycm93X1Rlc3RgKS4gIFRoYXQncyBub3QgZ29vZC4KKworU28g
Zm9yIHNpbXBsaWNpdHksIHdlIGp1c3QgYXNrIHRoZSB1c2VycyB0byBhdm9pZCBgX2AgaW4gYFRl
c3RDYXNlTmFtZWAKK2FuZCBgVGVzdE5hbWVgLiAgVGhlIHJ1bGUgaXMgbW9yZSBjb25zdHJhaW5p
bmcgdGhhbiBuZWNlc3NhcnksIGJ1dCBpdCdzCitzaW1wbGUgYW5kIGVhc3kgdG8gcmVtZW1iZXIu
ICBJdCBhbHNvIGdpdmVzIEdvb2dsZSBUZXN0IHNvbWUgd2lnZ2xlCityb29tIGluIGNhc2UgaXRz
IGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIGNoYW5nZSBpbiB0aGUgZnV0dXJlLgorCitJZiB5b3Ug
dmlvbGF0ZSB0aGUgcnVsZSwgdGhlcmUgbWF5IG5vdCBiZSBpbW1lZGlhdGVseSBjb25zZXF1ZW5j
ZXMsCitidXQgeW91ciB0ZXN0IG1heSAoanVzdCBtYXkpIGJyZWFrIHdpdGggYSBuZXcgY29tcGls
ZXIgKG9yIGEgbmV3Cit2ZXJzaW9uIG9mIHRoZSBjb21waWxlciB5b3UgYXJlIHVzaW5nKSBvciB3
aXRoIGEgbmV3IHZlcnNpb24gb2YgR29vZ2xlCitUZXN0LiAgVGhlcmVmb3JlIGl0J3MgYmVzdCB0
byBmb2xsb3cgdGhlIHJ1bGUuCisKKyMjIFdoeSBpcyBpdCBub3QgcmVjb21tZW5kZWQgdG8gaW5z
dGFsbCBhIHByZS1jb21waWxlZCBjb3B5IG9mIEdvb2dsZSBUZXN0IChmb3IgZXhhbXBsZSwgaW50
byAvdXNyL2xvY2FsKT8gIyMKKworSW4gdGhlIGVhcmx5IGRheXMsIHdlIHNhaWQgdGhhdCB5b3Ug
Y291bGQgaW5zdGFsbAorY29tcGlsZWQgR29vZ2xlIFRlc3QgbGlicmFyaWVzIG9uIGAqYG5peCBz
eXN0ZW1zIHVzaW5nIGBtYWtlIGluc3RhbGxgLgorVGhlbiBldmVyeSB1c2VyIG9mIHlvdXIgbWFj
aGluZSBjYW4gd3JpdGUgdGVzdHMgd2l0aG91dAorcmVjb21waWxpbmcgR29vZ2xlIFRlc3QuCisK
K1RoaXMgc2VlbWVkIGxpa2UgYSBnb29kIGlkZWEsIGJ1dCBpdCBoYXMgYQorZ290LWNoYTogZXZl
cnkgdXNlciBuZWVkcyB0byBjb21waWxlIGhpcyB0ZXN0cyB1c2luZyB0aGUgX3NhbWVfIGNvbXBp
bGVyCitmbGFncyB1c2VkIHRvIGNvbXBpbGUgdGhlIGluc3RhbGxlZCBHb29nbGUgVGVzdCBsaWJy
YXJpZXM7IG90aGVyd2lzZQoraGUgbWF5IHJ1biBpbnRvIHVuZGVmaW5lZCBiZWhhdmlvcnMgKGku
ZS4gdGhlIHRlc3RzIGNhbiBiZWhhdmUKK3N0cmFuZ2VseSBhbmQgbWF5IGV2ZW4gY3Jhc2ggZm9y
IG5vIG9idmlvdXMgcmVhc29ucykuCisKK1doeT8gIEJlY2F1c2UgQysrIGhhcyB0aGlzIHRoaW5n
IGNhbGxlZCB0aGUgT25lLURlZmluaXRpb24gUnVsZTogaWYKK3R3byBDKysgc291cmNlIGZpbGVz
IGNvbnRhaW4gZGlmZmVyZW50IGRlZmluaXRpb25zIG9mIHRoZSBzYW1lCitjbGFzcy9mdW5jdGlv
bi92YXJpYWJsZSwgYW5kIHlvdSBsaW5rIHRoZW0gdG9nZXRoZXIsIHlvdSB2aW9sYXRlIHRoZQor
cnVsZS4gIFRoZSBsaW5rZXIgbWF5IG9yIG1heSBub3QgY2F0Y2ggdGhlIGVycm9yIChpbiBtYW55
IGNhc2VzIGl0J3MKK25vdCByZXF1aXJlZCBieSB0aGUgQysrIHN0YW5kYXJkIHRvIGNhdGNoIHRo
ZSB2aW9sYXRpb24pLiAgSWYgaXQKK2RvZXNuJ3QsIHlvdSBnZXQgc3RyYW5nZSBydW4tdGltZSBi
ZWhhdmlvcnMgdGhhdCBhcmUgdW5leHBlY3RlZCBhbmQKK2hhcmQgdG8gZGVidWcuCisKK0lmIHlv
dSBjb21waWxlIEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRlc3QgY29kZSB1c2luZyBkaWZmZXJlbnQg
Y29tcGlsZXIKK2ZsYWdzLCB0aGV5IG1heSBzZWUgZGlmZmVyZW50IGRlZmluaXRpb25zIG9mIHRo
ZSBzYW1lCitjbGFzcy9mdW5jdGlvbi92YXJpYWJsZSAoZS5nLiBkdWUgdG8gdGhlIHVzZSBvZiBg
I2lmYCBpbiBHb29nbGUgVGVzdCkuCitUaGVyZWZvcmUsIGZvciB5b3VyIHNhbml0eSwgd2UgcmVj
b21tZW5kIHRvIGF2b2lkIGluc3RhbGxpbmcgcHJlLWNvbXBpbGVkCitHb29nbGUgVGVzdCBsaWJy
YXJpZXMuICBJbnN0ZWFkLCBlYWNoIHByb2plY3Qgc2hvdWxkIGNvbXBpbGUKK0dvb2dsZSBUZXN0
IGl0c2VsZiBzdWNoIHRoYXQgaXQgY2FuIGJlIHN1cmUgdGhhdCB0aGUgc2FtZSBmbGFncyBhcmUK
K3VzZWQgZm9yIGJvdGggR29vZ2xlIFRlc3QgYW5kIHRoZSB0ZXN0cy4KKworIyMgSG93IGRvIEkg
Z2VuZXJhdGUgNjQtYml0IGJpbmFyaWVzIG9uIFdpbmRvd3MgKHVzaW5nIFZpc3VhbCBTdHVkaW8g
MjAwOCk/ICMjCisKKyhBbnN3ZXJlZCBieSBUcmV2b3IgUm9iaW5zb24pCisKK0xvYWQgdGhlIHN1
cHBsaWVkIFZpc3VhbCBTdHVkaW8gc29sdXRpb24gZmlsZSwgZWl0aGVyIGBtc3ZjXGd0ZXN0LW1k
LnNsbmAgb3IKK2Btc3ZjXGd0ZXN0LnNsbmAuIEdvIHRocm91Z2ggdGhlIG1pZ3JhdGlvbiB3aXph
cmQgdG8gbWlncmF0ZSB0aGUKK3NvbHV0aW9uIGFuZCBwcm9qZWN0IGZpbGVzIHRvIFZpc3VhbCBT
dHVkaW8gMjAwOC4gU2VsZWN0CitgQ29uZmlndXJhdGlvbiBNYW5hZ2VyLi4uYCBmcm9tIHRoZSBg
QnVpbGRgIG1lbnUuIFNlbGVjdCBgPE5ldy4uLj5gIGZyb20KK3RoZSBgQWN0aXZlIHNvbHV0aW9u
IHBsYXRmb3JtYCBkcm9wZG93bi4gIFNlbGVjdCBgeDY0YCBmcm9tIHRoZSBuZXcKK3BsYXRmb3Jt
IGRyb3Bkb3duLCBsZWF2ZSBgQ29weSBzZXR0aW5ncyBmcm9tYCBzZXQgdG8gYFdpbjMyYCBhbmQK
K2BDcmVhdGUgbmV3IHByb2plY3QgcGxhdGZvcm1zYCBjaGVja2VkLCB0aGVuIGNsaWNrIGBPS2Au
IFlvdSBub3cgaGF2ZQorYFdpbjMyYCBhbmQgYHg2NGAgcGxhdGZvcm0gY29uZmlndXJhdGlvbnMs
IHNlbGVjdGFibGUgZnJvbSB0aGUKK2BTdGFuZGFyZGAgdG9vbGJhciwgd2hpY2ggYWxsb3cgeW91
IHRvIHRvZ2dsZSBiZXR3ZWVuIGJ1aWxkaW5nIDMyLWJpdCBvcgorNjQtYml0IGJpbmFyaWVzIChv
ciBib3RoIGF0IG9uY2UgdXNpbmcgQmF0Y2ggQnVpbGQpLgorCitJbiBvcmRlciB0byBwcmV2ZW50
IGJ1aWxkIG91dHB1dCBmaWxlcyBmcm9tIG92ZXJ3cml0aW5nIG9uZSBhbm90aGVyLAoreW91J2xs
IG5lZWQgdG8gY2hhbmdlIHRoZSBgSW50ZXJtZWRpYXRlIERpcmVjdG9yeWAgc2V0dGluZ3MgZm9y
IHRoZQorbmV3bHkgY3JlYXRlZCBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIGFjcm9zcyBhbGwgdGhl
IHByb2plY3RzLiBUbyBkbwordGhpcywgbXVsdGktc2VsZWN0IChlLmcuIHVzaW5nIHNoaWZ0LWNs
aWNrKSBhbGwgcHJvamVjdHMgKGJ1dCBub3QgdGhlCitzb2x1dGlvbikgaW4gdGhlIGBTb2x1dGlv
biBFeHBsb3JlcmAuIFJpZ2h0LWNsaWNrIG9uZSBvZiB0aGVtIGFuZAorc2VsZWN0IGBQcm9wZXJ0
aWVzYC4gSW4gdGhlIGxlZnQgcGFuZSwgc2VsZWN0IGBDb25maWd1cmF0aW9uIFByb3BlcnRpZXNg
LAorYW5kIGZyb20gdGhlIGBDb25maWd1cmF0aW9uYCBkcm9wZG93biwgc2VsZWN0IGBBbGwgQ29u
ZmlndXJhdGlvbnNgLgorTWFrZSBzdXJlIHRoZSBzZWxlY3RlZCBwbGF0Zm9ybSBpcyBgeDY0YC4g
Rm9yIHRoZQorYEludGVybWVkaWF0ZSBEaXJlY3RvcnlgIHNldHRpbmcsIGNoYW5nZSB0aGUgdmFs
dWUgZnJvbQorYCQoUGxhdGZvcm1OYW1lKVwkKENvbmZpZ3VyYXRpb25OYW1lKWAgdG8KK2AkKE91
dERpcilcJChQcm9qZWN0TmFtZSlgLiBDbGljayBgT0tgIGFuZCB0aGVuIGJ1aWxkIHRoZQorc29s
dXRpb24uIFdoZW4gdGhlIGJ1aWxkIGlzIGNvbXBsZXRlLCB0aGUgNjQtYml0IGJpbmFyaWVzIHdp
bGwgYmUgaW4KK3RoZSBgbXN2Y1x4NjRcRGVidWdgIGRpcmVjdG9yeS4KKworIyMgQ2FuIEkgdXNl
IEdvb2dsZSBUZXN0IG9uIE1pbkdXPyAjIworCitXZSBoYXZlbid0IHRlc3RlZCB0aGlzIG91cnNl
bHZlcywgYnV0IFBlciBBYnJhaGFtc2VuIHJlcG9ydGVkIHRoYXQgaGUKK3dhcyBhYmxlIHRvIGNv
bXBpbGUgYW5kIGluc3RhbGwgR29vZ2xlIFRlc3Qgc3VjY2Vzc2Z1bGx5IHdoZW4gdXNpbmcKK01p
bkdXIGZyb20gQ3lnd2luLiAgWW91J2xsIG5lZWQgdG8gY29uZmlndXJlIGl0IHdpdGg6CisKK2BQ
QVRIL1RPL2NvbmZpZ3VyZSBDQz0iZ2NjIC1tbm8tY3lnd2luIiBDWFg9ImcrKyAtbW5vLWN5Z3dp
biJgCisKK1lvdSBzaG91bGQgYmUgYWJsZSB0byByZXBsYWNlIHRoZSBgLW1uby1jeWd3aW5gIG9w
dGlvbiB3aXRoIGRpcmVjdCBsaW5rcwordG8gdGhlIHJlYWwgTWluR1cgYmluYXJpZXMsIGJ1dCB3
ZSBoYXZlbid0IHRyaWVkIHRoYXQuCisKK0NhdmVhdHM6CisKKyAgKiBUaGVyZSBhcmUgbWFueSB3
YXJuaW5ncyB3aGVuIGNvbXBpbGluZy4KKyAgKiBgbWFrZSBjaGVja2Agd2lsbCBwcm9kdWNlIHNv
bWUgZXJyb3JzIGFzIG5vdCBhbGwgdGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZiBhcmUgY29t
cGF0aWJsZSB3aXRoIE1pbkdXLgorCitXZSBhbHNvIGhhdmUgcmVwb3J0cyBvbiBzdWNjZXNzZnVs
IGNyb3NzIGNvbXBpbGF0aW9uIG9mIEdvb2dsZSBUZXN0CitNaW5HVyBiaW5hcmllcyBvbiBMaW51
eCB1c2luZworW3RoZXNlIGluc3RydWN0aW9uc10oaHR0cDovL3dpa2kud3h3aWRnZXRzLm9yZy9D
cm9zcy1Db21waWxpbmdfVW5kZXJfTGludXgjQ3Jvc3MtY29tcGlsaW5nX3VuZGVyX0xpbnV4X2Zv
cl9NU19XaW5kb3dzKQorb24gdGhlIFd4V2lkZ2V0cyBzaXRlLgorCitQbGVhc2UgY29udGFjdCBg
Z29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tYCBpZiB5b3UgYXJlCitpbnRlcmVz
dGVkIGluIGltcHJvdmluZyB0aGUgc3VwcG9ydCBmb3IgTWluR1cuCisKKyMjIFdoeSBkb2VzIEdv
b2dsZSBUZXN0IHN1cHBvcnQgRVhQRUNUXF9FUShOVUxMLCBwdHIpIGFuZCBBU1NFUlRcX0VRKE5V
TEwsIHB0cikgYnV0IG5vdCBFWFBFQ1RcX05FKE5VTEwsIHB0cikgYW5kIEFTU0VSVFxfTkUoTlVM
TCwgcHRyKT8gIyMKKworRHVlIHRvIHNvbWUgcGVjdWxpYXJpdHkgb2YgQysrLCBpdCByZXF1aXJl
cyBzb21lIG5vbi10cml2aWFsIHRlbXBsYXRlCittZXRhIHByb2dyYW1taW5nIHRyaWNrcyB0byBz
dXBwb3J0IHVzaW5nIGBOVUxMYCBhcyBhbiBhcmd1bWVudCBvZiB0aGUKK2BFWFBFQ1RfWFgoKWAg
YW5kIGBBU1NFUlRfWFgoKWAgbWFjcm9zLiBUaGVyZWZvcmUgd2Ugb25seSBkbyBpdCB3aGVyZQor
aXQncyBtb3N0IG5lZWRlZCAob3RoZXJ3aXNlIHdlIG1ha2UgdGhlIGltcGxlbWVudGF0aW9uIG9m
IEdvb2dsZSBUZXN0CitoYXJkZXIgdG8gbWFpbnRhaW4gYW5kIG1vcmUgZXJyb3ItcHJvbmUgdGhh
biBuZWNlc3NhcnkpLgorCitUaGUgYEVYUEVDVF9FUSgpYCBtYWNybyB0YWtlcyB0aGUgX2V4cGVj
dGVkXyB2YWx1ZSBhcyBpdHMgZmlyc3QKK2FyZ3VtZW50IGFuZCB0aGUgX2FjdHVhbF8gdmFsdWUg
YXMgdGhlIHNlY29uZC4gSXQncyByZWFzb25hYmxlIHRoYXQKK3NvbWVvbmUgd2FudHMgdG8gd3Jp
dGUgYEVYUEVDVF9FUShOVUxMLCBzb21lX2V4cHJlc3Npb24pYCwgYW5kIHRoaXMKK2luZGVlZCB3
YXMgcmVxdWVzdGVkIHNldmVyYWwgdGltZXMuIFRoZXJlZm9yZSB3ZSBpbXBsZW1lbnRlZCBpdC4K
KworVGhlIG5lZWQgZm9yIGBFWFBFQ1RfTkUoTlVMTCwgcHRyKWAgaXNuJ3QgbmVhcmx5IGFzIHN0
cm9uZy4gV2hlbiB0aGUKK2Fzc2VydGlvbiBmYWlscywgeW91IGFscmVhZHkga25vdyB0aGF0IGBw
dHJgIG11c3QgYmUgYE5VTExgLCBzbyBpdAorZG9lc24ndCBhZGQgYW55IGluZm9ybWF0aW9uIHRv
IHByaW50IHB0ciBpbiB0aGlzIGNhc2UuIFRoYXQgbWVhbnMKK2BFWFBFQ1RfVFJVRShwdHIgISBO
VUxMKWAgd29ya3MganVzdCBhcyB3ZWxsLgorCitJZiB3ZSB3ZXJlIHRvIHN1cHBvcnQgYEVYUEVD
VF9ORShOVUxMLCBwdHIpYCwgZm9yIGNvbnNpc3RlbmN5IHdlJ2xsCitoYXZlIHRvIHN1cHBvcnQg
YEVYUEVDVF9ORShwdHIsIE5VTEwpYCBhcyB3ZWxsLCBhcyB1bmxpa2UgYEVYUEVDVF9FUWAsCit3
ZSBkb24ndCBoYXZlIGEgY29udmVudGlvbiBvbiB0aGUgb3JkZXIgb2YgdGhlIHR3byBhcmd1bWVu
dHMgZm9yCitgRVhQRUNUX05FYC4gVGhpcyBtZWFucyB1c2luZyB0aGUgdGVtcGxhdGUgbWV0YSBw
cm9ncmFtbWluZyB0cmlja3MKK3R3aWNlIGluIHRoZSBpbXBsZW1lbnRhdGlvbiwgbWFraW5nIGl0
IGV2ZW4gaGFyZGVyIHRvIHVuZGVyc3RhbmQgYW5kCittYWludGFpbi4gV2UgYmVsaWV2ZSB0aGUg
YmVuZWZpdCBkb2Vzbid0IGp1c3RpZnkgdGhlIGNvc3QuCisKK0ZpbmFsbHksIHdpdGggdGhlIGdy
b3d0aCBvZiBHb29nbGUgTW9jaydzIFttYXRjaGVyXSguLi8uLi9Db29rQm9vay5tZCN1c2luZy1t
YXRjaGVycy1pbi1nb29nbGUtdGVzdC1hc3NlcnRpb25zKSBsaWJyYXJ5LCB3ZSBhcmUKK2VuY291
cmFnaW5nIHBlb3BsZSB0byB1c2UgdGhlIHVuaWZpZWQgYEVYUEVDVF9USEFUKHZhbHVlLCBtYXRj
aGVyKWAKK3N5bnRheCBtb3JlIG9mdGVuIGluIHRlc3RzLiBPbmUgc2lnbmlmaWNhbnQgYWR2YW50
YWdlIG9mIHRoZSBtYXRjaGVyCithcHByb2FjaCBpcyB0aGF0IG1hdGNoZXJzIGNhbiBiZSBlYXNp
bHkgY29tYmluZWQgdG8gZm9ybSBuZXcgbWF0Y2hlcnMsCit3aGlsZSB0aGUgYEVYUEVDVF9ORWAs
IGV0YywgbWFjcm9zIGNhbm5vdCBiZSBlYXNpbHkKK2NvbWJpbmVkLiBUaGVyZWZvcmUgd2Ugd2Fu
dCB0byBpbnZlc3QgbW9yZSBpbiB0aGUgbWF0Y2hlcnMgdGhhbiBpbiB0aGUKK2BFWFBFQ1RfWFgo
KWAgbWFjcm9zLgorCisjIyBEb2VzIEdvb2dsZSBUZXN0IHN1cHBvcnQgcnVubmluZyB0ZXN0cyBp
biBwYXJhbGxlbD8gIyMKKworVGVzdCBydW5uZXJzIHRlbmQgdG8gYmUgdGlnaHRseSBjb3VwbGVk
IHdpdGggdGhlIGJ1aWxkL3Rlc3QKK2Vudmlyb25tZW50LCBhbmQgR29vZ2xlIFRlc3QgZG9lc24n
dCB0cnkgdG8gc29sdmUgdGhlIHByb2JsZW0gb2YKK3J1bm5pbmcgdGVzdHMgaW4gcGFyYWxsZWwu
ICBJbnN0ZWFkLCB3ZSB0cmllZCB0byBtYWtlIEdvb2dsZSBUZXN0IHdvcmsKK25pY2VseSB3aXRo
IHRlc3QgcnVubmVycy4gIEZvciBleGFtcGxlLCBHb29nbGUgVGVzdCdzIFhNTCByZXBvcnQKK2Nv
bnRhaW5zIHRoZSB0aW1lIHNwZW50IG9uIGVhY2ggdGVzdCwgYW5kIGl0cyBgZ3Rlc3RfbGlzdF90
ZXN0c2AgYW5kCitgZ3Rlc3RfZmlsdGVyYCBmbGFncyBjYW4gYmUgdXNlZCBmb3Igc3BsaXR0aW5n
IHRoZSBleGVjdXRpb24gb2YgdGVzdAorbWV0aG9kcyBpbnRvIG11bHRpcGxlIHByb2Nlc3Nlcy4g
IFRoZXNlIGZ1bmN0aW9uYWxpdGllcyBjYW4gaGVscCB0aGUKK3Rlc3QgcnVubmVyIHJ1biB0aGUg
dGVzdHMgaW4gcGFyYWxsZWwuCisKKyMjIFdoeSBkb24ndCBHb29nbGUgVGVzdCBydW4gdGhlIHRl
c3RzIGluIGRpZmZlcmVudCB0aHJlYWRzIHRvIHNwZWVkIHRoaW5ncyB1cD8gIyMKKworSXQncyBk
aWZmaWN1bHQgdG8gd3JpdGUgdGhyZWFkLXNhZmUgY29kZS4gIE1vc3QgdGVzdHMgYXJlIG5vdCB3
cml0dGVuCit3aXRoIHRocmVhZC1zYWZldHkgaW4gbWluZCwgYW5kIHRodXMgbWF5IG5vdCB3b3Jr
IGNvcnJlY3RseSBpbiBhCittdWx0aS10aHJlYWRlZCBzZXR0aW5nLgorCitJZiB5b3UgdGhpbmsg
YWJvdXQgaXQsIGl0J3MgYWxyZWFkeSBoYXJkIHRvIG1ha2UgeW91ciBjb2RlIHdvcmsgd2hlbgor
eW91IGtub3cgd2hhdCBvdGhlciB0aHJlYWRzIGFyZSBkb2luZy4gIEl0J3MgbXVjaCBoYXJkZXIs
IGFuZAorc29tZXRpbWVzIGV2ZW4gaW1wb3NzaWJsZSwgdG8gbWFrZSB5b3VyIGNvZGUgd29yayB3
aGVuIHlvdSBkb24ndCBrbm93Cit3aGF0IG90aGVyIHRocmVhZHMgYXJlIGRvaW5nIChyZW1lbWJl
ciB0aGF0IHRlc3QgbWV0aG9kcyBjYW4gYmUgYWRkZWQsCitkZWxldGVkLCBvciBtb2RpZmllZCBh
ZnRlciB5b3VyIHRlc3Qgd2FzIHdyaXR0ZW4pLiAgSWYgeW91IHdhbnQgdG8gcnVuCit0aGUgdGVz
dHMgaW4gcGFyYWxsZWwsIHlvdSdkIGJldHRlciBydW4gdGhlbSBpbiBkaWZmZXJlbnQgcHJvY2Vz
c2VzLgorCisjIyBXaHkgYXJlbid0IEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW1wbGVtZW50ZWQg
dXNpbmcgZXhjZXB0aW9ucz8gIyMKKworT3VyIG9yaWdpbmFsIG1vdGl2YXRpb24gd2FzIHRvIGJl
IGFibGUgdG8gdXNlIEdvb2dsZSBUZXN0IGluIHByb2plY3RzCit0aGF0IGRpc2FibGUgZXhjZXB0
aW9ucy4gIExhdGVyIHdlIHJlYWxpemVkIHNvbWUgYWRkaXRpb25hbCBiZW5lZml0cworb2YgdGhp
cyBhcHByb2FjaDoKKworICAxLiBUaHJvd2luZyBpbiBhIGRlc3RydWN0b3IgaXMgdW5kZWZpbmVk
IGJlaGF2aW9yIGluIEMrKy4gIE5vdCB1c2luZyBleGNlcHRpb25zIG1lYW5zIEdvb2dsZSBUZXN0
J3MgYXNzZXJ0aW9ucyBhcmUgc2FmZSB0byB1c2UgaW4gZGVzdHJ1Y3RvcnMuCisgIDEuIFRoZSBg
RVhQRUNUXypgIGZhbWlseSBvZiBtYWNyb3Mgd2lsbCBjb250aW51ZSBldmVuIGFmdGVyIGEgZmFp
bHVyZSwgYWxsb3dpbmcgbXVsdGlwbGUgZmFpbHVyZXMgaW4gYSBgVEVTVGAgdG8gYmUgcmVwb3J0
ZWQgaW4gYSBzaW5nbGUgcnVuLiBUaGlzIGlzIGEgcG9wdWxhciBmZWF0dXJlLCBhcyBpbiBDKysg
dGhlIGVkaXQtY29tcGlsZS10ZXN0IGN5Y2xlIGlzIHVzdWFsbHkgcXVpdGUgbG9uZyBhbmQgYmVp
bmcgYWJsZSB0byBmaXhpbmcgbW9yZSB0aGFuIG9uZSB0aGluZyBhdCBhIHRpbWUgaXMgYSBibGVz
c2luZy4KKyAgMS4gSWYgYXNzZXJ0aW9ucyBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgZXhjZXB0aW9u
cywgYSB0ZXN0IG1heSBmYWxzZWx5IGlnbm9yZSBhIGZhaWx1cmUgaWYgaXQncyBjYXVnaHQgYnkg
dXNlciBjb2RlOgorYGBgCit0cnkgeyAuLi4gQVNTRVJUX1RSVUUoLi4uKSAuLi4gfQorY2F0Y2gg
KC4uLikgeyAuLi4gfQorYGBgCitUaGUgYWJvdmUgY29kZSB3aWxsIHBhc3MgZXZlbiBpZiB0aGUg
YEFTU0VSVF9UUlVFYCB0aHJvd3MuICBXaGlsZSBpdCdzIHVubGlrZWx5IGZvciBzb21lb25lIHRv
IHdyaXRlIHRoaXMgaW4gYSB0ZXN0LCBpdCdzIHBvc3NpYmxlIHRvIHJ1biBpbnRvIHRoaXMgcGF0
dGVybiB3aGVuIHlvdSB3cml0ZSBhc3NlcnRpb25zIGluIGNhbGxiYWNrcyB0aGF0IGFyZSBjYWxs
ZWQgYnkgdGhlIGNvZGUgdW5kZXIgdGVzdC4KKworVGhlIGRvd25zaWRlIG9mIG5vdCB1c2luZyBl
eGNlcHRpb25zIGlzIHRoYXQgYEFTU0VSVF8qYCAoaW1wbGVtZW50ZWQKK3VzaW5nIGByZXR1cm5g
KSB3aWxsIG9ubHkgYWJvcnQgdGhlIGN1cnJlbnQgZnVuY3Rpb24sIG5vdCB0aGUgY3VycmVudAor
YFRFU1RgLgorCisjIyBXaHkgZG8gd2UgdXNlIHR3byBkaWZmZXJlbnQgbWFjcm9zIGZvciB0ZXN0
cyB3aXRoIGFuZCB3aXRob3V0IGZpeHR1cmVzPyAjIworCitVbmZvcnR1bmF0ZWx5LCBDKysncyBt
YWNybyBzeXN0ZW0gZG9lc24ndCBhbGxvdyB1cyB0byB1c2UgdGhlIHNhbWUKK21hY3JvIGZvciBi
b3RoIGNhc2VzLiAgT25lIHBvc3NpYmlsaXR5IGlzIHRvIHByb3ZpZGUgb25seSBvbmUgbWFjcm8K
K2ZvciB0ZXN0cyB3aXRoIGZpeHR1cmVzLCBhbmQgcmVxdWlyZSB0aGUgdXNlciB0byBkZWZpbmUg
YW4gZW1wdHkKK2ZpeHR1cmUgc29tZXRpbWVzOgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCitURVNUX0YoRm9vVGVzdCwgRG9lc1RoaXMpIHsgLi4u
IH0KK2BgYAorb3IKK2BgYAordHlwZWRlZiA6OnRlc3Rpbmc6OlRlc3QgRm9vVGVzdDsKKworVEVT
VF9GKEZvb1Rlc3QsIERvZXNUaGF0KSB7IC4uLiB9CitgYGAKKworWWV0LCBtYW55IHBlb3BsZSB0
aGluayB0aGlzIGlzIG9uZSBsaW5lIHRvbyBtYW55LiA6LSkgT3VyIGdvYWwgd2FzIHRvCittYWtl
IGl0IHJlYWxseSBlYXN5IHRvIHdyaXRlIHRlc3RzLCBzbyB3ZSB0cmllZCB0byBtYWtlIHNpbXBs
ZSB0ZXN0cwordHJpdmlhbCB0byBjcmVhdGUuICBUaGF0IG1lYW5zIHVzaW5nIGEgc2VwYXJhdGUg
bWFjcm8gZm9yIHN1Y2ggdGVzdHMuCisKK1dlIHRoaW5rIG5laXRoZXIgYXBwcm9hY2ggaXMgaWRl
YWwsIHlldCBlaXRoZXIgb2YgdGhlbSBpcyByZWFzb25hYmxlLgorSW4gdGhlIGVuZCwgaXQgcHJv
YmFibHkgZG9lc24ndCBtYXR0ZXIgbXVjaCBlaXRoZXIgd2F5LgorCisjIyBXaHkgZG9uJ3Qgd2Ug
dXNlIHN0cnVjdHMgYXMgdGVzdCBmaXh0dXJlcz8gIyMKKworV2UgbGlrZSB0byB1c2Ugc3RydWN0
cyBvbmx5IHdoZW4gcmVwcmVzZW50aW5nIHBhc3NpdmUgZGF0YS4gIFRoaXMKK2Rpc3RpbmN0aW9u
IGJldHdlZW4gc3RydWN0cyBhbmQgY2xhc3NlcyBpcyBnb29kIGZvciBkb2N1bWVudGluZyB0aGUK
K2ludGVudCBvZiB0aGUgY29kZSdzIGF1dGhvci4gIFNpbmNlIHRlc3QgZml4dHVyZXMgaGF2ZSBs
b2dpYyBsaWtlCitgU2V0VXAoKWAgYW5kIGBUZWFyRG93bigpYCwgdGhleSBhcmUgYmV0dGVyIGRl
ZmluZWQgYXMgY2xhc3Nlcy4KKworIyMgV2h5IGFyZSBkZWF0aCB0ZXN0cyBpbXBsZW1lbnRlZCBh
cyBhc3NlcnRpb25zIGluc3RlYWQgb2YgdXNpbmcgYSB0ZXN0IHJ1bm5lcj8gIyMKKworT3VyIGdv
YWwgd2FzIHRvIG1ha2UgZGVhdGggdGVzdHMgYXMgY29udmVuaWVudCBmb3IgYSB1c2VyIGFzIEMr
KworcG9zc2libHkgYWxsb3dzLiAgSW4gcGFydGljdWxhcjoKKworICAqIFRoZSBydW5uZXItc3R5
bGUgcmVxdWlyZXMgdG8gc3BsaXQgdGhlIGluZm9ybWF0aW9uIGludG8gdHdvIHBpZWNlczogdGhl
IGRlZmluaXRpb24gb2YgdGhlIGRlYXRoIHRlc3QgaXRzZWxmLCBhbmQgdGhlIHNwZWNpZmljYXRp
b24gZm9yIHRoZSBydW5uZXIgb24gaG93IHRvIHJ1biB0aGUgZGVhdGggdGVzdCBhbmQgd2hhdCB0
byBleHBlY3QuICBUaGUgZGVhdGggdGVzdCB3b3VsZCBiZSB3cml0dGVuIGluIEMrKywgd2hpbGUg
dGhlIHJ1bm5lciBzcGVjIG1heSBvciBtYXkgbm90IGJlLiAgQSB1c2VyIG5lZWRzIHRvIGNhcmVm
dWxseSBrZWVwIHRoZSB0d28gaW4gc3luYy4gYEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIGV4cGVj
dGVkX21lc3NhZ2UpYCBzcGVjaWZpZXMgYWxsIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBpbiBvbmUg
cGxhY2UsIGluIG9uZSBsYW5ndWFnZSwgd2l0aG91dCBib2lsZXJwbGF0ZSBjb2RlLiBJdCBpcyB2
ZXJ5IGRlY2xhcmF0aXZlLgorICAqIGBBU1NFUlRfREVBVEhgIGhhcyBhIHNpbWlsYXIgc3ludGF4
IGFuZCBlcnJvci1yZXBvcnRpbmcgc2VtYW50aWNzIGFzIG90aGVyIEdvb2dsZSBUZXN0IGFzc2Vy
dGlvbnMsIGFuZCB0aHVzIGlzIGVhc3kgdG8gbGVhcm4uCisgICogYEFTU0VSVF9ERUFUSGAgY2Fu
IGJlIG1peGVkIHdpdGggb3RoZXIgYXNzZXJ0aW9ucyBhbmQgb3RoZXIgbG9naWMgYXQgeW91ciB3
aWxsLiAgWW91IGFyZSBub3QgbGltaXRlZCB0byBvbmUgZGVhdGggdGVzdCBwZXIgdGVzdCBtZXRo
b2QuIEZvciBleGFtcGxlLCB5b3UgY2FuIHdyaXRlIHNvbWV0aGluZyBsaWtlOgorYGBgCisgICAg
aWYgKEZvb0NvbmRpdGlvbigpKSB7CisgICAgICBBU1NFUlRfREVBVEgoQmFyKCksICJibGFoIik7
CisgICAgfSBlbHNlIHsKKyAgICAgIEFTU0VSVF9FUSg1LCBCYXIoKSk7CisgICAgfQorYGBgCitJ
ZiB5b3UgcHJlZmVyIG9uZSBkZWF0aCB0ZXN0IHBlciB0ZXN0IG1ldGhvZCwgeW91IGNhbiB3cml0
ZSB5b3VyIHRlc3RzIGluIHRoYXQgc3R5bGUgdG9vLCBidXQgd2UgZG9uJ3Qgd2FudCB0byBpbXBv
c2UgdGhhdCBvbiB0aGUgdXNlcnMuICBUaGUgZmV3ZXIgYXJ0aWZpY2lhbCBsaW1pdGF0aW9ucyB0
aGUgYmV0dGVyLgorICAqIGBBU1NFUlRfREVBVEhgIGNhbiByZWZlcmVuY2UgbG9jYWwgdmFyaWFi
bGVzIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uLCBhbmQgeW91IGNhbiBkZWNpZGUgaG93IG1hbnkg
ZGVhdGggdGVzdHMgeW91IHdhbnQgYmFzZWQgb24gcnVuLXRpbWUgaW5mb3JtYXRpb24uICBGb3Ig
ZXhhbXBsZSwKK2BgYAorICAgIGNvbnN0IGludCBjb3VudCA9IEdldENvdW50KCk7ICAvLyBPbmx5
IGtub3duIGF0IHJ1biB0aW1lLgorICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGNvdW50OyBpKysp
IHsKKyAgICAgIEFTU0VSVF9ERUFUSCh7CisgICAgICAgIGRvdWJsZSogYnVmZmVyID0gbmV3IGRv
dWJsZVtpXTsKKyAgICAgICAgLi4uIGluaXRpYWxpemVzIGJ1ZmZlciAuLi4KKyAgICAgICAgRm9v
KGJ1ZmZlciwgaSkKKyAgICAgIH0sICJibGFoIGJsYWgiKTsKKyAgICB9CitgYGAKK1RoZSBydW5u
ZXItYmFzZWQgYXBwcm9hY2ggdGVuZHMgdG8gYmUgbW9yZSBzdGF0aWMgYW5kIGxlc3MgZmxleGli
bGUsIG9yIHJlcXVpcmVzIG1vcmUgdXNlciBlZmZvcnQgdG8gZ2V0IHRoaXMga2luZCBvZiBmbGV4
aWJpbGl0eS4KKworQW5vdGhlciBpbnRlcmVzdGluZyB0aGluZyBhYm91dCBgQVNTRVJUX0RFQVRI
YCBpcyB0aGF0IGl0IGNhbGxzIGBmb3JrKClgCit0byBjcmVhdGUgYSBjaGlsZCBwcm9jZXNzIHRv
IHJ1biB0aGUgZGVhdGggdGVzdC4gIFRoaXMgaXMgbGlnaHRlbmluZworZmFzdCwgYXMgYGZvcmso
KWAgdXNlcyBjb3B5LW9uLXdyaXRlIHBhZ2VzIGFuZCBpbmN1cnMgYWxtb3N0IHplcm8KK292ZXJo
ZWFkLCBhbmQgdGhlIGNoaWxkIHByb2Nlc3Mgc3RhcnRzIGZyb20gdGhlIHVzZXItc3VwcGxpZWQK
K3N0YXRlbWVudCBkaXJlY3RseSwgc2tpcHBpbmcgYWxsIGdsb2JhbCBhbmQgbG9jYWwgaW5pdGlh
bGl6YXRpb24gYW5kCithbnkgY29kZSBsZWFkaW5nIHRvIHRoZSBnaXZlbiBzdGF0ZW1lbnQuICBJ
ZiB5b3UgbGF1bmNoIHRoZSBjaGlsZAorcHJvY2VzcyBmcm9tIHNjcmF0Y2gsIGl0IGNhbiB0YWtl
IHNlY29uZHMganVzdCB0byBsb2FkIGV2ZXJ5dGhpbmcgYW5kCitzdGFydCBydW5uaW5nIGlmIHRo
ZSB0ZXN0IGxpbmtzIHRvIG1hbnkgbGlicmFyaWVzIGR5bmFtaWNhbGx5LgorCisjIyBNeSBkZWF0
aCB0ZXN0IG1vZGlmaWVzIHNvbWUgc3RhdGUsIGJ1dCB0aGUgY2hhbmdlIHNlZW1zIGxvc3QgYWZ0
ZXIgdGhlIGRlYXRoIHRlc3QgZmluaXNoZXMuIFdoeT8gIyMKKworRGVhdGggdGVzdHMgKGBFWFBF
Q1RfREVBVEhgLCBldGMpIGFyZSBleGVjdXRlZCBpbiBhIHN1Yi1wcm9jZXNzIHMudC4gdGhlCitl
eHBlY3RlZCBjcmFzaCB3b24ndCBraWxsIHRoZSB0ZXN0IHByb2dyYW0gKGkuZS4gdGhlIHBhcmVu
dCBwcm9jZXNzKS4gQXMgYQorcmVzdWx0LCBhbnkgaW4tbWVtb3J5IHNpZGUgZWZmZWN0cyB0aGV5
IGluY3VyIGFyZSBvYnNlcnZhYmxlIGluIHRoZWlyCityZXNwZWN0aXZlIHN1Yi1wcm9jZXNzZXMs
IGJ1dCBub3QgaW4gdGhlIHBhcmVudCBwcm9jZXNzLiBZb3UgY2FuIHRoaW5rIG9mIHRoZW0KK2Fz
IHJ1bm5pbmcgaW4gYSBwYXJhbGxlbCB1bml2ZXJzZSwgbW9yZSBvciBsZXNzLgorCisjIyBUaGUg
Y29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJ1bmRlZmluZWQgcmVmZXJlbmNlcyIgdG8gc29tZSBz
dGF0aWMgY29uc3QgbWVtYmVyIHZhcmlhYmxlcywgYnV0IEkgZGlkIGRlZmluZSB0aGVtIGluIHRo
ZSBjbGFzcyBib2R5LiBXaGF0J3Mgd3Jvbmc/ICMjCisKK0lmIHlvdXIgY2xhc3MgaGFzIGEgc3Rh
dGljIGRhdGEgbWVtYmVyOgorCitgYGAKKy8vIGZvby5oCitjbGFzcyBGb28geworICAuLi4KKyAg
c3RhdGljIGNvbnN0IGludCBrQmFyID0gMTAwOworfTsKK2BgYAorCitZb3UgYWxzbyBuZWVkIHRv
IGRlZmluZSBpdCBfb3V0c2lkZV8gb2YgdGhlIGNsYXNzIGJvZHkgaW4gYGZvby5jY2A6CisKK2Bg
YAorY29uc3QgaW50IEZvbzo6a0JhcjsgIC8vIE5vIGluaXRpYWxpemVyIGhlcmUuCitgYGAKKwor
T3RoZXJ3aXNlIHlvdXIgY29kZSBpcyAqKmludmFsaWQgQysrKiosIGFuZCBtYXkgYnJlYWsgaW4g
dW5leHBlY3RlZCB3YXlzLiBJbgorcGFydGljdWxhciwgdXNpbmcgaXQgaW4gR29vZ2xlIFRlc3Qg
Y29tcGFyaXNvbiBhc3NlcnRpb25zIChgRVhQRUNUX0VRYCwgZXRjKQord2lsbCBnZW5lcmF0ZSBh
biAidW5kZWZpbmVkIHJlZmVyZW5jZSIgbGlua2VyIGVycm9yLgorCisjIyBJIGhhdmUgYW4gaW50
ZXJmYWNlIHRoYXQgaGFzIHNldmVyYWwgaW1wbGVtZW50YXRpb25zLiBDYW4gSSB3cml0ZSBhIHNl
dCBvZiB0ZXN0cyBvbmNlIGFuZCByZXBlYXQgdGhlbSBvdmVyIGFsbCB0aGUgaW1wbGVtZW50YXRp
b25zPyAjIworCitHb29nbGUgVGVzdCBkb2Vzbid0IHlldCBoYXZlIGdvb2Qgc3VwcG9ydCBmb3Ig
dGhpcyBraW5kIG9mIHRlc3RzLCBvcgorZGF0YS1kcml2ZW4gdGVzdHMgaW4gZ2VuZXJhbC4gV2Ug
aG9wZSB0byBiZSBhYmxlIHRvIG1ha2UgaW1wcm92ZW1lbnRzIGluIHRoaXMKK2FyZWEgc29vbi4K
KworIyMgQ2FuIEkgZGVyaXZlIGEgdGVzdCBmaXh0dXJlIGZyb20gYW5vdGhlcj8gIyMKKworWWVz
LgorCitFYWNoIHRlc3QgZml4dHVyZSBoYXMgYSBjb3JyZXNwb25kaW5nIGFuZCBzYW1lIG5hbWVk
IHRlc3QgY2FzZS4gVGhpcyBtZWFucyBvbmx5CitvbmUgdGVzdCBjYXNlIGNhbiB1c2UgYSBwYXJ0
aWN1bGFyIGZpeHR1cmUuIFNvbWV0aW1lcywgaG93ZXZlciwgbXVsdGlwbGUgdGVzdAorY2FzZXMg
bWF5IHdhbnQgdG8gdXNlIHRoZSBzYW1lIG9yIHNsaWdodGx5IGRpZmZlcmVudCBmaXh0dXJlcy4g
Rm9yIGV4YW1wbGUsIHlvdQorbWF5IHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIG9mIGEgR1VJ
IGxpYnJhcnkncyB0ZXN0IGNhc2VzIGRvbid0IGxlYWsKK2ltcG9ydGFudCBzeXN0ZW0gcmVzb3Vy
Y2VzIGxpa2UgZm9udHMgYW5kIGJydXNoZXMuCisKK0luIEdvb2dsZSBUZXN0LCB5b3Ugc2hhcmUg
YSBmaXh0dXJlIGFtb25nIHRlc3QgY2FzZXMgYnkgcHV0dGluZyB0aGUgc2hhcmVkCitsb2dpYyBp
biBhIGJhc2UgdGVzdCBmaXh0dXJlLCB0aGVuIGRlcml2aW5nIGZyb20gdGhhdCBiYXNlIGEgc2Vw
YXJhdGUgZml4dHVyZQorZm9yIGVhY2ggdGVzdCBjYXNlIHRoYXQgd2FudHMgdG8gdXNlIHRoaXMg
Y29tbW9uIGxvZ2ljLiBZb3UgdGhlbiB1c2UgYFRFU1RfRigpYAordG8gd3JpdGUgdGVzdHMgdXNp
bmcgZWFjaCBkZXJpdmVkIGZpeHR1cmUuCisKK1R5cGljYWxseSwgeW91ciBjb2RlIGxvb2tzIGxp
a2UgdGhpczoKKworYGBgCisvLyBEZWZpbmVzIGEgYmFzZSB0ZXN0IGZpeHR1cmUuCitjbGFzcyBC
YXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICBwcm90ZWN0ZWQ6CisgICAuLi4K
K307CisKKy8vIERlcml2ZXMgYSBmaXh0dXJlIEZvb1Rlc3QgZnJvbSBCYXNlVGVzdC4KK2NsYXNz
IEZvb1Rlc3QgOiBwdWJsaWMgQmFzZVRlc3QgeworICBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2
b2lkIFNldFVwKCkgeworICAgICAgQmFzZVRlc3Q6OlNldFVwKCk7ICAvLyBTZXRzIHVwIHRoZSBi
YXNlIGZpeHR1cmUgZmlyc3QuCisgICAgICAuLi4gYWRkaXRpb25hbCBzZXQtdXAgd29yayAuLi4K
KyAgICB9CisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgICAgLi4uIGNsZWFuLXVw
IHdvcmsgZm9yIEZvb1Rlc3QgLi4uCisgICAgICBCYXNlVGVzdDo6VGVhckRvd24oKTsgIC8vIFJl
bWVtYmVyIHRvIHRlYXIgZG93biB0aGUgYmFzZSBmaXh0dXJlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGFmdGVyIGNsZWFuaW5nIHVwIEZvb1Rlc3QhCisgICAgfQorICAgIC4uLiBm
dW5jdGlvbnMgYW5kIHZhcmlhYmxlcyBmb3IgRm9vVGVzdCAuLi4KK307CisKKy8vIFRlc3RzIHRo
YXQgdXNlIHRoZSBmaXh0dXJlIEZvb1Rlc3QuCitURVNUX0YoRm9vVGVzdCwgQmFyKSB7IC4uLiB9
CitURVNUX0YoRm9vVGVzdCwgQmF6KSB7IC4uLiB9CisKKy4uLiBhZGRpdGlvbmFsIGZpeHR1cmVz
IGRlcml2ZWQgZnJvbSBCYXNlVGVzdCAuLi4KK2BgYAorCitJZiBuZWNlc3NhcnksIHlvdSBjYW4g
Y29udGludWUgdG8gZGVyaXZlIHRlc3QgZml4dHVyZXMgZnJvbSBhIGRlcml2ZWQgZml4dHVyZS4K
K0dvb2dsZSBUZXN0IGhhcyBubyBsaW1pdCBvbiBob3cgZGVlcCB0aGUgaGllcmFyY2h5IGNhbiBi
ZS4KKworRm9yIGEgY29tcGxldGUgZXhhbXBsZSB1c2luZyBkZXJpdmVkIHRlc3QgZml4dHVyZXMs
IHNlZQorW3NhbXBsZTVdKC4uL3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYykuCisKKyMjIE15
IGNvbXBpbGVyIGNvbXBsYWlucyAidm9pZCB2YWx1ZSBub3QgaWdub3JlZCBhcyBpdCBvdWdodCB0
byBiZS4iIFdoYXQgZG9lcyB0aGlzIG1lYW4/ICMjCisKK1lvdSdyZSBwcm9iYWJseSB1c2luZyBh
biBgQVNTRVJUXyooKWAgaW4gYSBmdW5jdGlvbiB0aGF0IGRvZXNuJ3QgcmV0dXJuIGB2b2lkYC4K
K2BBU1NFUlRfKigpYCBjYW4gb25seSBiZSB1c2VkIGluIGB2b2lkYCBmdW5jdGlvbnMuCisKKyMj
IE15IGRlYXRoIHRlc3QgaGFuZ3MgKG9yIHNlZy1mYXVsdHMpLiBIb3cgZG8gSSBmaXggaXQ/ICMj
CisKK0luIEdvb2dsZSBUZXN0LCBkZWF0aCB0ZXN0cyBhcmUgcnVuIGluIGEgY2hpbGQgcHJvY2Vz
cyBhbmQgdGhlIHdheSB0aGV5IHdvcmsgaXMKK2RlbGljYXRlLiBUbyB3cml0ZSBkZWF0aCB0ZXN0
cyB5b3UgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhleSB3b3JrLgorUGxlYXNlIG1h
a2Ugc3VyZSB5b3UgaGF2ZSByZWFkIHRoaXMuCisKK0luIHBhcnRpY3VsYXIsIGRlYXRoIHRlc3Rz
IGRvbid0IGxpa2UgaGF2aW5nIG11bHRpcGxlIHRocmVhZHMgaW4gdGhlIHBhcmVudAorcHJvY2Vz
cy4gU28gdGhlIGZpcnN0IHRoaW5nIHlvdSBjYW4gdHJ5IGlzIHRvIGVsaW1pbmF0ZSBjcmVhdGlu
ZyB0aHJlYWRzCitvdXRzaWRlIG9mIGBFWFBFQ1RfREVBVEgoKWAuCisKK1NvbWV0aW1lcyB0aGlz
IGlzIGltcG9zc2libGUgYXMgc29tZSBsaWJyYXJ5IHlvdSBtdXN0IHVzZSBtYXkgYmUgY3JlYXRp
bmcKK3RocmVhZHMgYmVmb3JlIGBtYWluKClgIGlzIGV2ZW4gcmVhY2hlZC4gSW4gdGhpcyBjYXNl
LCB5b3UgY2FuIHRyeSB0byBtaW5pbWl6ZQordGhlIGNoYW5jZSBvZiBjb25mbGljdHMgYnkgZWl0
aGVyIG1vdmluZyBhcyBtYW55IGFjdGl2aXRpZXMgYXMgcG9zc2libGUgaW5zaWRlCitgRVhQRUNU
X0RFQVRIKClgIChpbiB0aGUgZXh0cmVtZSBjYXNlLCB5b3Ugd2FudCB0byBtb3ZlIGV2ZXJ5dGhp
bmcgaW5zaWRlKSwgb3IKK2xlYXZpbmcgYXMgZmV3IHRoaW5ncyBhcyBwb3NzaWJsZSBpbiBpdC4g
QWxzbywgeW91IGNhbiB0cnkgdG8gc2V0IHRoZSBkZWF0aAordGVzdCBzdHlsZSB0byBgInRocmVh
ZHNhZmUiYCwgd2hpY2ggaXMgc2FmZXIgYnV0IHNsb3dlciwgYW5kIHNlZSBpZiBpdCBoZWxwcy4K
KworSWYgeW91IGdvIHdpdGggdGhyZWFkLXNhZmUgZGVhdGggdGVzdHMsIHJlbWVtYmVyIHRoYXQg
dGhleSByZXJ1biB0aGUgdGVzdAorcHJvZ3JhbSBmcm9tIHRoZSBiZWdpbm5pbmcgaW4gdGhlIGNo
aWxkIHByb2Nlc3MuIFRoZXJlZm9yZSBtYWtlIHN1cmUgeW91cgorcHJvZ3JhbSBjYW4gcnVuIHNp
ZGUtYnktc2lkZSB3aXRoIGl0c2VsZiBhbmQgaXMgZGV0ZXJtaW5pc3RpYy4KKworSW4gdGhlIGVu
ZCwgdGhpcyBib2lscyBkb3duIHRvIGdvb2QgY29uY3VycmVudCBwcm9ncmFtbWluZy4gWW91IGhh
dmUgdG8gbWFrZQorc3VyZSB0aGF0IHRoZXJlIGlzIG5vIHJhY2UgY29uZGl0aW9ucyBvciBkZWFk
IGxvY2tzIGluIHlvdXIgcHJvZ3JhbS4gTm8gc2lsdmVyCitidWxsZXQgLSBzb3JyeSEKKworIyMg
U2hvdWxkIEkgdXNlIHRoZSBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIG9mIHRoZSB0ZXN0IGZpeHR1
cmUgb3IgdGhlIHNldC11cC90ZWFyLWRvd24gZnVuY3Rpb24/ICMjCisKK1RoZSBmaXJzdCB0aGlu
ZyB0byByZW1lbWJlciBpcyB0aGF0IEdvb2dsZSBUZXN0IGRvZXMgbm90IHJldXNlIHRoZQorc2Ft
ZSB0ZXN0IGZpeHR1cmUgb2JqZWN0IGFjcm9zcyBtdWx0aXBsZSB0ZXN0cy4gRm9yIGVhY2ggYFRF
U1RfRmAsCitHb29nbGUgVGVzdCB3aWxsIGNyZWF0ZSBhIGZyZXNoIHRlc3QgZml4dHVyZSBvYmpl
Y3QsIF9pbW1lZGlhdGVseV8KK2NhbGwgYFNldFVwKClgLCBydW4gdGhlIHRlc3QsIGNhbGwgYFRl
YXJEb3duKClgLCBhbmQgdGhlbgorX2ltbWVkaWF0ZWx5XyBkZWxldGUgdGhlIHRlc3QgZml4dHVy
ZSBvYmplY3QuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8KK25lZWQgdG8gd3JpdGUgYSBgU2V0VXAo
KWAgb3IgYFRlYXJEb3duKClgIGZ1bmN0aW9uIGlmIHRoZSBjb25zdHJ1Y3Rvcgorb3IgZGVzdHJ1
Y3RvciBhbHJlYWR5IGRvZXMgdGhlIGpvYi4KKworWW91IG1heSBzdGlsbCB3YW50IHRvIHVzZSBg
U2V0VXAoKS9UZWFyRG93bigpYCBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOgorICAqIElmIHRoZSB0
ZWFyLWRvd24gb3BlcmF0aW9uIGNvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiwgeW91IG11c3QgdXNl
IGBUZWFyRG93bigpYCBhcyBvcHBvc2VkIHRvIHRoZSBkZXN0cnVjdG9yLCBhcyB0aHJvd2luZyBp
biBhIGRlc3RydWN0b3IgbGVhZHMgdG8gdW5kZWZpbmVkIGJlaGF2aW9yIGFuZCB1c3VhbGx5IHdp
bGwga2lsbCB5b3VyIHByb2dyYW0gcmlnaHQgYXdheS4gTm90ZSB0aGF0IG1hbnkgc3RhbmRhcmQg
bGlicmFyaWVzIChsaWtlIFNUTCkgbWF5IHRocm93IHdoZW4gZXhjZXB0aW9ucyBhcmUgZW5hYmxl
ZCBpbiB0aGUgY29tcGlsZXIuIFRoZXJlZm9yZSB5b3Ugc2hvdWxkIHByZWZlciBgVGVhckRvd24o
KWAgaWYgeW91IHdhbnQgdG8gd3JpdGUgcG9ydGFibGUgdGVzdHMgdGhhdCB3b3JrIHdpdGggb3Ig
d2l0aG91dCBleGNlcHRpb25zLgorICAqIFRoZSBHb29nbGUgVGVzdCB0ZWFtIGlzIGNvbnNpZGVy
aW5nIG1ha2luZyB0aGUgYXNzZXJ0aW9uIG1hY3JvcyB0aHJvdyBvbiBwbGF0Zm9ybXMgd2hlcmUg
ZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCAoZS5nLiBXaW5kb3dzLCBNYWMgT1MsIGFuZCBMaW51eCBj
bGllbnQtc2lkZSksIHdoaWNoIHdpbGwgZWxpbWluYXRlIHRoZSBuZWVkIGZvciB0aGUgdXNlciB0
byBwcm9wYWdhdGUgZmFpbHVyZXMgZnJvbSBhIHN1YnJvdXRpbmUgdG8gaXRzIGNhbGxlci4gVGhl
cmVmb3JlLCB5b3Ugc2hvdWxkbid0IHVzZSBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGluIGEgZGVz
dHJ1Y3RvciBpZiB5b3VyIGNvZGUgY291bGQgcnVuIG9uIHN1Y2ggYSBwbGF0Zm9ybS4KKyAgKiBJ
biBhIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IsIHlvdSBjYW5ub3QgbWFrZSBhIHZpcnR1YWwg
ZnVuY3Rpb24gY2FsbCBvbiB0aGlzIG9iamVjdC4gKFlvdSBjYW4gY2FsbCBhIG1ldGhvZCBkZWNs
YXJlZCBhcyB2aXJ0dWFsLCBidXQgaXQgd2lsbCBiZSBzdGF0aWNhbGx5IGJvdW5kLikgVGhlcmVm
b3JlLCBpZiB5b3UgbmVlZCB0byBjYWxsIGEgbWV0aG9kIHRoYXQgd2lsbCBiZSBvdmVycmlkZW4g
aW4gYSBkZXJpdmVkIGNsYXNzLCB5b3UgaGF2ZSB0byB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAu
CisKKyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgIm5vIG1hdGNoaW5nIGZ1bmN0aW9uIHRvIGNh
bGwiIHdoZW4gSSB1c2UgQVNTRVJUXF9QUkVEbi4gSG93IGRvIEkgZml4IGl0PyAjIworCitJZiB0
aGUgcHJlZGljYXRlIGZ1bmN0aW9uIHlvdSB1c2UgaW4gYEFTU0VSVF9QUkVEKmAgb3IgYEVYUEVD
VF9QUkVEKmAgaXMKK292ZXJsb2FkZWQgb3IgYSB0ZW1wbGF0ZSwgdGhlIGNvbXBpbGVyIHdpbGwg
aGF2ZSB0cm91YmxlIGZpZ3VyaW5nIG91dCB3aGljaAorb3ZlcmxvYWRlZCB2ZXJzaW9uIGl0IHNo
b3VsZCB1c2UuIGBBU1NFUlRfUFJFRF9GT1JNQVQqYCBhbmQKK2BFWFBFQ1RfUFJFRF9GT1JNQVQq
YCBkb24ndCBoYXZlIHRoaXMgcHJvYmxlbS4KKworSWYgeW91IHNlZSB0aGlzIGVycm9yLCB5b3Ug
bWlnaHQgd2FudCB0byBzd2l0Y2ggdG8KK2AoQVNTRVJUfEVYUEVDVClfUFJFRF9GT1JNQVQqYCwg
d2hpY2ggd2lsbCBhbHNvIGdpdmUgeW91IGEgYmV0dGVyIGZhaWx1cmUKK21lc3NhZ2UuIElmLCBo
b3dldmVyLCB0aGF0IGlzIG5vdCBhbiBvcHRpb24sIHlvdSBjYW4gcmVzb2x2ZSB0aGUgcHJvYmxl
bSBieQorZXhwbGljaXRseSB0ZWxsaW5nIHRoZSBjb21waWxlciB3aGljaCB2ZXJzaW9uIHRvIHBp
Y2suCisKK0ZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYXZlCisKK2BgYAorYm9vbCBJc1Bvc2l0
aXZlKGludCBuKSB7CisgIHJldHVybiBuID4gMDsKK30KK2Jvb2wgSXNQb3NpdGl2ZShkb3VibGUg
eCkgeworICByZXR1cm4geCA+IDA7Cit9CitgYGAKKworeW91IHdpbGwgZ2V0IGEgY29tcGlsZXIg
ZXJyb3IgaWYgeW91IHdyaXRlCisKK2BgYAorRVhQRUNUX1BSRUQxKElzUG9zaXRpdmUsIDUpOwor
YGBgCisKK0hvd2V2ZXIsIHRoaXMgd2lsbCB3b3JrOgorCitgYGAKK0VYUEVDVF9QUkVEMSgqc3Rh
dGljX2Nhc3Q8Ym9vbCAoKikoaW50KT4qKElzUG9zaXRpdmUpLCA1KTsKK2BgYAorCisoVGhlIHN0
dWZmIGluc2lkZSB0aGUgYW5nbGVkIGJyYWNrZXRzIGZvciB0aGUgYHN0YXRpY19jYXN0YCBvcGVy
YXRvciBpcyB0aGUKK3R5cGUgb2YgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgZm9yIHRoZSBgaW50YC12
ZXJzaW9uIG9mIGBJc1Bvc2l0aXZlKClgLikKKworQXMgYW5vdGhlciBleGFtcGxlLCB3aGVuIHlv
dSBoYXZlIGEgdGVtcGxhdGUgZnVuY3Rpb24KKworYGBgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2Jvb2wgSXNOZWdhdGl2ZShUIHgpIHsKKyAgcmV0dXJuIHggPCAwOworfQorYGBgCisKK3lvdSBj
YW4gdXNlIGl0IGluIGEgcHJlZGljYXRlIGFzc2VydGlvbiBsaWtlIHRoaXM6CisKK2BgYAorQVNT
RVJUX1BSRUQxKElzTmVnYXRpdmUqPGludD4qLCAtNSk7CitgYGAKKworVGhpbmdzIGFyZSBtb3Jl
IGludGVyZXN0aW5nIGlmIHlvdXIgdGVtcGxhdGUgaGFzIG1vcmUgdGhhbiBvbmUgcGFyYW1ldGVy
cy4gVGhlCitmb2xsb3dpbmcgd29uJ3QgY29tcGlsZToKKworYGBgCitBU1NFUlRfUFJFRDIoKkdy
ZWF0ZXJUaGFuPGludCwgaW50PiosIDUsIDApOworYGBgCisKKworYXMgdGhlIEMrKyBwcmUtcHJv
Y2Vzc29yIHRoaW5rcyB5b3UgYXJlIGdpdmluZyBgQVNTRVJUX1BSRUQyYCA0IGFyZ3VtZW50cywK
K3doaWNoIGlzIG9uZSBtb3JlIHRoYW4gZXhwZWN0ZWQuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIHdy
YXAgdGhlIHByZWRpY2F0ZQorZnVuY3Rpb24gaW4gcGFyZW50aGVzZXM6CisKK2BgYAorQVNTRVJU
X1BSRUQyKCooR3JlYXRlclRoYW48aW50LCBpbnQ+KSosIDUsIDApOworYGBgCisKKworIyMgTXkg
Y29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJpZ25vcmluZyByZXR1cm4gdmFsdWUiIHdoZW4gSSBj
YWxsIFJVTlxfQUxMXF9URVNUUygpLiBXaHk/ICMjCisKK1NvbWUgcGVvcGxlIGhhZCBiZWVuIGln
bm9yaW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAuIFRoYXQgaXMsCitp
bnN0ZWFkIG9mCisKK2BgYAorcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK2BgYAorCit0aGV5IHdy
aXRlCisKK2BgYAorUlVOX0FMTF9URVNUUygpOworYGBgCisKK1RoaXMgaXMgd3JvbmcgYW5kIGRh
bmdlcm91cy4gQSB0ZXN0IHJ1bm5lciBuZWVkcyB0byBzZWUgdGhlIHJldHVybiB2YWx1ZSBvZgor
YFJVTl9BTExfVEVTVFMoKWAgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGlmIGEgdGVzdCBoYXMgcGFz
c2VkLiBJZiB5b3VyIGBtYWluKClgCitmdW5jdGlvbiBpZ25vcmVzIGl0LCB5b3VyIHRlc3Qgd2ls
bCBiZSBjb25zaWRlcmVkIHN1Y2Nlc3NmdWwgZXZlbiBpZiBpdCBoYXMgYQorR29vZ2xlIFRlc3Qg
YXNzZXJ0aW9uIGZhaWx1cmUuIFZlcnkgYmFkLgorCitUbyBoZWxwIHRoZSB1c2VycyBhdm9pZCB0
aGlzIGRhbmdlcm91cyBidWcsIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgorYFJVTl9BTExfVEVTVFMo
KWAgY2F1c2VzIGdjYyB0byByYWlzZSB0aGlzIHdhcm5pbmcsIHdoZW4gdGhlIHJldHVybiB2YWx1
ZSBpcworaWdub3JlZC4gSWYgeW91IHNlZSB0aGlzIHdhcm5pbmcsIHRoZSBmaXggaXMgc2ltcGxl
OiBqdXN0IG1ha2Ugc3VyZSBpdHMgdmFsdWUKK2lzIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZSBv
ZiBgbWFpbigpYC4KKworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5zIHRoYXQgYSBjb25zdHJ1Y3Rv
ciAob3IgZGVzdHJ1Y3RvcikgY2Fubm90IHJldHVybiBhIHZhbHVlLiBXaGF0J3MgZ29pbmcgb24/
ICMjCisKK0R1ZSB0byBhIHBlY3VsaWFyaXR5IG9mIEMrKywgaW4gb3JkZXIgdG8gc3VwcG9ydCB0
aGUgc3ludGF4IGZvciBzdHJlYW1pbmcKK21lc3NhZ2VzIHRvIGFuIGBBU1NFUlRfKmAsIGUuZy4K
KworYGBgCitBU1NFUlRfRVEoMSwgRm9vKCkpIDw8ICJibGFoIGJsYWgiIDw8IGZvbzsKK2BgYAor
Cit3ZSBoYWQgdG8gZ2l2ZSB1cCB1c2luZyBgQVNTRVJUKmAgYW5kIGBGQUlMKmAgKGJ1dCBub3Qg
YEVYUEVDVCpgIGFuZAorYEFERF9GQUlMVVJFKmApIGluIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1
Y3RvcnMuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIG1vdmUgdGhlCitjb250ZW50IG9mIHlvdXIgY29u
c3RydWN0b3IvZGVzdHJ1Y3RvciB0byBhIHByaXZhdGUgdm9pZCBtZW1iZXIgZnVuY3Rpb24sIG9y
Citzd2l0Y2ggdG8gYEVYUEVDVF8qKClgIGlmIHRoYXQgd29ya3MuIFRoaXMgc2VjdGlvbiBpbiB0
aGUgdXNlcidzIGd1aWRlIGV4cGxhaW5zCitpdC4KKworIyMgTXkgc2V0LXVwIGZ1bmN0aW9uIGlz
IG5vdCBjYWxsZWQuIFdoeT8gIyMKKworQysrIGlzIGNhc2Utc2Vuc2l0aXZlLiBJdCBzaG91bGQg
YmUgc3BlbGxlZCBhcyBgU2V0VXAoKWAuICBEaWQgeW91CitzcGVsbCBpdCBhcyBgU2V0dXAoKWA/
CisKK1NpbWlsYXJseSwgc29tZXRpbWVzIHBlb3BsZSBzcGVsbCBgU2V0VXBUZXN0Q2FzZSgpYCBh
cyBgU2V0dXBUZXN0Q2FzZSgpYCBhbmQKK3dvbmRlciB3aHkgaXQncyBuZXZlciBjYWxsZWQuCisK
KyMjIEhvdyBkbyBJIGp1bXAgdG8gdGhlIGxpbmUgb2YgYSBmYWlsdXJlIGluIEVtYWNzIGRpcmVj
dGx5PyAjIworCitHb29nbGUgVGVzdCdzIGZhaWx1cmUgbWVzc2FnZSBmb3JtYXQgaXMgdW5kZXJz
dG9vZCBieSBFbWFjcyBhbmQgbWFueSBvdGhlcgorSURFcywgbGlrZSBhY21lIGFuZCBYQ29kZS4g
SWYgYSBHb29nbGUgVGVzdCBtZXNzYWdlIGlzIGluIGEgY29tcGlsYXRpb24gYnVmZmVyCitpbiBF
bWFjcywgdGhlbiBpdCdzIGNsaWNrYWJsZS4gWW91IGNhbiBub3cgaGl0IGBlbnRlcmAgb24gYSBt
ZXNzYWdlIHRvIGp1bXAgdG8KK3RoZSBjb3JyZXNwb25kaW5nIHNvdXJjZSBjb2RlLCBvciB1c2Ug
YEMteCBgYCB0byBqdW1wIHRvIHRoZSBuZXh0IGZhaWx1cmUuCisKKyMjIEkgaGF2ZSBzZXZlcmFs
IHRlc3QgY2FzZXMgd2hpY2ggc2hhcmUgdGhlIHNhbWUgdGVzdCBmaXh0dXJlIGxvZ2ljLCBkbyBJ
IGhhdmUgdG8gZGVmaW5lIGEgbmV3IHRlc3QgZml4dHVyZSBjbGFzcyBmb3IgZWFjaCBvZiB0aGVt
PyBUaGlzIHNlZW1zIHByZXR0eSB0ZWRpb3VzLiAjIworCitZb3UgZG9uJ3QgaGF2ZSB0by4gSW5z
dGVhZCBvZgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgQmFzZVRlc3Qge307CisKK1RF
U1RfRihGb29UZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0K
KworY2xhc3MgQmFyVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCB7fTsKKworVEVTVF9GKEJhclRlc3Qs
IEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIERlZikgeyAuLi4gfQorYGBgCisKK3lvdSBj
YW4gc2ltcGx5IGB0eXBlZGVmYCB0aGUgdGVzdCBmaXh0dXJlczoKK2BgYAordHlwZWRlZiBCYXNl
VGVzdCBGb29UZXN0OworCitURVNUX0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0YoRm9v
VGVzdCwgRGVmKSB7IC4uLiB9CisKK3R5cGVkZWYgQmFzZVRlc3QgQmFyVGVzdDsKKworVEVTVF9G
KEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIERlZikgeyAuLi4gfQorYGBg
CisKKyMjIFRoZSBHb29nbGUgVGVzdCBvdXRwdXQgaXMgYnVyaWVkIGluIGEgd2hvbGUgYnVuY2gg
b2YgbG9nIG1lc3NhZ2VzLiBXaGF0IGRvIEkgZG8/ICMjCisKK1RoZSBHb29nbGUgVGVzdCBvdXRw
dXQgaXMgbWVhbnQgdG8gYmUgYSBjb25jaXNlIGFuZCBodW1hbi1mcmllbmRseSByZXBvcnQuIElm
Cit5b3VyIHRlc3QgZ2VuZXJhdGVzIHRleHR1YWwgb3V0cHV0IGl0c2VsZiwgaXQgd2lsbCBtaXgg
d2l0aCB0aGUgR29vZ2xlIFRlc3QKK291dHB1dCwgbWFraW5nIGl0IGhhcmQgdG8gcmVhZC4gSG93
ZXZlciwgdGhlcmUgaXMgYW4gZWFzeSBzb2x1dGlvbiB0byB0aGlzCitwcm9ibGVtLgorCitTaW5j
ZSBtb3N0IGxvZyBtZXNzYWdlcyBnbyB0byBzdGRlcnIsIHdlIGRlY2lkZWQgdG8gbGV0IEdvb2ds
ZSBUZXN0IG91dHB1dCBnbwordG8gc3Rkb3V0LiBUaGlzIHdheSwgeW91IGNhbiBlYXNpbHkgc2Vw
YXJhdGUgdGhlIHR3byB1c2luZyByZWRpcmVjdGlvbi4gRm9yCitleGFtcGxlOgorYGBgCisuL215
X3Rlc3QgPiBnb29nbGV0ZXN0X291dHB1dC50eHQKK2BgYAorCisjIyBXaHkgc2hvdWxkIEkgcHJl
ZmVyIHRlc3QgZml4dHVyZXMgb3ZlciBnbG9iYWwgdmFyaWFibGVzPyAjIworCitUaGVyZSBhcmUg
c2V2ZXJhbCBnb29kIHJlYXNvbnM6CisgIDEuIEl0J3MgbGlrZWx5IHlvdXIgdGVzdCBuZWVkcyB0
byBjaGFuZ2UgdGhlIHN0YXRlcyBvZiBpdHMgZ2xvYmFsIHZhcmlhYmxlcy4gVGhpcyBtYWtlcyBp
dCBkaWZmaWN1bHQgdG8ga2VlcCBzaWRlIGVmZmVjdHMgZnJvbSBlc2NhcGluZyBvbmUgdGVzdCBh
bmQgY29udGFtaW5hdGluZyBvdGhlcnMsIG1ha2luZyBkZWJ1Z2dpbmcgZGlmZmljdWx0LiBCeSB1
c2luZyBmaXh0dXJlcywgZWFjaCB0ZXN0IGhhcyBhIGZyZXNoIHNldCBvZiB2YXJpYWJsZXMgdGhh
dCdzIGRpZmZlcmVudCAoYnV0IHdpdGggdGhlIHNhbWUgbmFtZXMpLiBUaHVzLCB0ZXN0cyBhcmUg
a2VwdCBpbmRlcGVuZGVudCBvZiBlYWNoIG90aGVyLgorICAxLiBHbG9iYWwgdmFyaWFibGVzIHBv
bGx1dGUgdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisgIDEuIFRlc3QgZml4dHVyZXMgY2FuIGJlIHJl
dXNlZCB2aWEgc3ViY2xhc3NpbmcsIHdoaWNoIGNhbm5vdCBiZSBkb25lIGVhc2lseSB3aXRoIGds
b2JhbCB2YXJpYWJsZXMuIFRoaXMgaXMgdXNlZnVsIGlmIG1hbnkgdGVzdCBjYXNlcyBoYXZlIHNv
bWV0aGluZyBpbiBjb21tb24uCisKKyMjIEhvdyBkbyBJIHRlc3QgcHJpdmF0ZSBjbGFzcyBtZW1i
ZXJzIHdpdGhvdXQgd3JpdGluZyBGUklFTkRcX1RFU1QoKXM/ICMjCisKK1lvdSBzaG91bGQgdHJ5
IHRvIHdyaXRlIHRlc3RhYmxlIGNvZGUsIHdoaWNoIG1lYW5zIGNsYXNzZXMgc2hvdWxkIGJlIGVh
c2lseQordGVzdGVkIGZyb20gdGhlaXIgcHVibGljIGludGVyZmFjZS4gT25lIHdheSB0byBhY2hp
ZXZlIHRoaXMgaXMgdGhlIFBpbXBsIGlkaW9tOgoreW91IG1vdmUgYWxsIHByaXZhdGUgbWVtYmVy
cyBvZiBhIGNsYXNzIGludG8gYSBoZWxwZXIgY2xhc3MsIGFuZCBtYWtlIGFsbAorbWVtYmVycyBv
ZiB0aGUgaGVscGVyIGNsYXNzIHB1YmxpYy4KKworWW91IGhhdmUgc2V2ZXJhbCBvdGhlciBvcHRp
b25zIHRoYXQgZG9uJ3QgcmVxdWlyZSB1c2luZyBgRlJJRU5EX1RFU1RgOgorICAqIFdyaXRlIHRo
ZSB0ZXN0cyBhcyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlIGNsYXNzOgorYGBgCitjbGFzcyBGb28g
eworICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKKyAgLi4uCit9OworCitjbGFzcyBGb29UZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAuLi4KKyAgdm9pZCBUZXN0
MSgpIHsuLi59IC8vIFRoaXMgYWNjZXNzZXMgcHJpdmF0ZSBtZW1iZXJzIG9mIGNsYXNzIEZvby4K
KyAgdm9pZCBUZXN0MigpIHsuLi59IC8vIFNvIGRvZXMgdGhpcyBvbmUuCit9OworCitURVNUX0Yo
Rm9vVGVzdCwgVGVzdDEpIHsKKyAgVGVzdDEoKTsKK30KKworVEVTVF9GKEZvb1Rlc3QsIFRlc3Qy
KSB7CisgIFRlc3QyKCk7Cit9CitgYGAKKyAgKiBJbiB0aGUgZml4dHVyZSBjbGFzcywgd3JpdGUg
YWNjZXNzb3JzIGZvciB0aGUgdGVzdGVkIGNsYXNzJyBwcml2YXRlIG1lbWJlcnMsIHRoZW4gdXNl
IHRoZSBhY2Nlc3NvcnMgaW4geW91ciB0ZXN0czoKK2BgYAorY2xhc3MgRm9vIHsKKyAgZnJpZW5k
IGNsYXNzIEZvb1Rlc3Q7CisgIC4uLgorfTsKKworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLi4uCisgIFQxIGdldF9wcml2YXRlX21lbWJl
cjEoRm9vKiBvYmopIHsKKyAgICByZXR1cm4gb2JqLT5wcml2YXRlX21lbWJlcjFfOworICB9Cit9
OworCitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgLi4uCisgIGdldF9wcml2YXRlX21lbWJl
cjEoeCkKKyAgLi4uCit9CitgYGAKKyAgKiBJZiB0aGUgbWV0aG9kcyBhcmUgZGVjbGFyZWQgKipw
cm90ZWN0ZWQqKiwgeW91IGNhbiBjaGFuZ2UgdGhlaXIgYWNjZXNzIGxldmVsIGluIGEgdGVzdC1v
bmx5IHN1YmNsYXNzOgorYGBgCitjbGFzcyBZb3VyQ2xhc3MgeworICAuLi4KKyBwcm90ZWN0ZWQ6
IC8vIHByb3RlY3RlZCBhY2Nlc3MgZm9yIHRlc3RhYmlsaXR5LgorICBpbnQgRG9Tb21ldGhpbmdS
ZXR1cm5pbmdJbnQoKTsKKyAgLi4uCit9OworCisvLyBpbiB0aGUgeW91cl9jbGFzc190ZXN0LmNj
IGZpbGU6CitjbGFzcyBUZXN0YWJsZVlvdXJDbGFzcyA6IHB1YmxpYyBZb3VyQ2xhc3MgeworICAu
Li4KKyBwdWJsaWM6IHVzaW5nIFlvdXJDbGFzczo6RG9Tb21ldGhpbmdSZXR1cm5pbmdJbnQ7IC8v
IGNoYW5nZXMgYWNjZXNzIHJpZ2h0cworICAuLi4KK307CisKK1RFU1RfRihZb3VyQ2xhc3NUZXN0
LCBEb1NvbWV0aGluZ1Rlc3QpIHsKKyAgVGVzdGFibGVZb3VyQ2xhc3Mgb2JqOworICBhc3NlcnRF
cXVhbHMoZXhwZWN0ZWRfdmFsdWUsIG9iai5Eb1NvbWV0aGluZ1JldHVybmluZ0ludCgpKTsKK30K
K2BgYAorCisjIyBIb3cgZG8gSSB0ZXN0IHByaXZhdGUgY2xhc3Mgc3RhdGljIG1lbWJlcnMgd2l0
aG91dCB3cml0aW5nIEZSSUVORFxfVEVTVCgpcz8gIyMKKworV2UgZmluZCBwcml2YXRlIHN0YXRp
YyBtZXRob2RzIGNsdXR0ZXIgdGhlIGhlYWRlciBmaWxlLiAgVGhleSBhcmUKK2ltcGxlbWVudGF0
aW9uIGRldGFpbHMgYW5kIGlkZWFsbHkgc2hvdWxkIGJlIGtlcHQgb3V0IG9mIGEgLmguIFNvIG9m
dGVuIEkgbWFrZQordGhlbSBmcmVlIGZ1bmN0aW9ucyBpbnN0ZWFkLgorCitJbnN0ZWFkIG9mOgor
YGBgCisvLyBmb28uaAorY2xhc3MgRm9vIHsKKyAgLi4uCisgcHJpdmF0ZToKKyAgc3RhdGljIGJv
b2wgRnVuYyhpbnQgbik7Cit9OworCisvLyBmb28uY2MKK2Jvb2wgRm9vOjpGdW5jKGludCBuKSB7
IC4uLiB9CisKKy8vIGZvb190ZXN0LmNjCitFWFBFQ1RfVFJVRShGb286OkZ1bmMoMTIzNDUpKTsK
K2BgYAorCitZb3UgcHJvYmFibHkgc2hvdWxkIGJldHRlciB3cml0ZToKK2BgYAorLy8gZm9vLmgK
K2NsYXNzIEZvbyB7CisgIC4uLgorfTsKKworLy8gZm9vLmNjCituYW1lc3BhY2UgaW50ZXJuYWwg
eworICBib29sIEZ1bmMoaW50IG4pIHsgLi4uIH0KK30KKworLy8gZm9vX3Rlc3QuY2MKK25hbWVz
cGFjZSBpbnRlcm5hbCB7CisgIGJvb2wgRnVuYyhpbnQgbik7Cit9CisKK0VYUEVDVF9UUlVFKGlu
dGVybmFsOjpGdW5jKDEyMzQ1KSk7CitgYGAKKworIyMgSSB3b3VsZCBsaWtlIHRvIHJ1biBhIHRl
c3Qgc2V2ZXJhbCB0aW1lcyB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzLiBEbyBJIG5lZWQgdG8g
d3JpdGUgc2V2ZXJhbCBzaW1pbGFyIGNvcGllcyBvZiBpdD8gIyMKKworTm8uIFlvdSBjYW4gdXNl
IGEgZmVhdHVyZSBjYWxsZWQgW3ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHNdKFYxXzZfQWR2YW5j
ZWRHdWlkZS5tZCNWYWx1ZV9QYXJhbWV0ZXJpemVkX1Rlc3RzKSB3aGljaAorbGV0cyB5b3UgcmVw
ZWF0IHlvdXIgdGVzdHMgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVycywgd2l0aG91dCBkZWZpbmlu
ZyBpdCBtb3JlIHRoYW4gb25jZS4KKworIyMgSG93IGRvIEkgdGVzdCBhIGZpbGUgdGhhdCBkZWZp
bmVzIG1haW4oKT8gIyMKKworVG8gdGVzdCBhIGBmb28uY2NgIGZpbGUsIHlvdSBuZWVkIHRvIGNv
bXBpbGUgYW5kIGxpbmsgaXQgaW50byB5b3VyIHVuaXQgdGVzdAorcHJvZ3JhbS4gSG93ZXZlciwg
d2hlbiB0aGUgZmlsZSBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIHRoZSBgbWFpbigpYAorZnVu
Y3Rpb24sIGl0IHdpbGwgY2xhc2ggd2l0aCB0aGUgYG1haW4oKWAgb2YgeW91ciB1bml0IHRlc3Qs
IGFuZCB3aWxsIHJlc3VsdCBpbgorYSBidWlsZCBlcnJvci4KKworVGhlIHJpZ2h0IHNvbHV0aW9u
IGlzIHRvIHNwbGl0IGl0IGludG8gdGhyZWUgZmlsZXM6CisgIDEuIGBmb28uaGAgd2hpY2ggY29u
dGFpbnMgdGhlIGRlY2xhcmF0aW9ucywKKyAgMS4gYGZvby5jY2Agd2hpY2ggY29udGFpbnMgdGhl
IGRlZmluaXRpb25zIGV4Y2VwdCBgbWFpbigpYCwgYW5kCisgIDEuIGBmb29fbWFpbi5jY2Agd2hp
Y2ggY29udGFpbnMgbm90aGluZyBidXQgdGhlIGRlZmluaXRpb24gb2YgYG1haW4oKWAuCisKK1Ro
ZW4gYGZvby5jY2AgY2FuIGJlIGVhc2lseSB0ZXN0ZWQuCisKK0lmIHlvdSBhcmUgYWRkaW5nIHRl
c3RzIHRvIGFuIGV4aXN0aW5nIGZpbGUgYW5kIGRvbid0IHdhbnQgYW4gaW50cnVzaXZlIGNoYW5n
ZQorbGlrZSB0aGlzLCB0aGVyZSBpcyBhIGhhY2s6IGp1c3QgaW5jbHVkZSB0aGUgZW50aXJlIGBm
b28uY2NgIGZpbGUgaW4geW91ciB1bml0Cit0ZXN0LiBGb3IgZXhhbXBsZToKK2BgYAorLy8gRmls
ZSBmb29fdW5pdHRlc3QuY2MKKworLy8gVGhlIGhlYWRlcnMgc2VjdGlvbgorLi4uCisKKy8vIFJl
bmFtZXMgbWFpbigpIGluIGZvby5jYyB0byBtYWtlIHJvb20gZm9yIHRoZSB1bml0IHRlc3QgbWFp
bigpCisjZGVmaW5lIG1haW4gRm9vTWFpbgorCisjaW5jbHVkZSAiYS9iL2Zvby5jYyIKKworLy8g
VGhlIHRlc3RzIHN0YXJ0IGhlcmUuCisuLi4KK2BgYAorCisKK0hvd2V2ZXIsIHBsZWFzZSByZW1l
bWJlciB0aGlzIGlzIGEgaGFjayBhbmQgc2hvdWxkIG9ubHkgYmUgdXNlZCBhcyB0aGUgbGFzdAor
cmVzb3J0LgorCisjIyBXaGF0IGNhbiB0aGUgc3RhdGVtZW50IGFyZ3VtZW50IGluIEFTU0VSVFxf
REVBVEgoKSBiZT8gIyMKKworYEFTU0VSVF9ERUFUSChfc3RhdGVtZW50XywgX3JlZ2V4XylgIChv
ciBhbnkgZGVhdGggYXNzZXJ0aW9uIG1hY3JvKSBjYW4gYmUgdXNlZAord2hlcmV2ZXIgYF9zdGF0
ZW1lbnRfYCBpcyB2YWxpZC4gU28gYmFzaWNhbGx5IGBfc3RhdGVtZW50X2AgY2FuIGJlIGFueSBD
KysKK3N0YXRlbWVudCB0aGF0IG1ha2VzIHNlbnNlIGluIHRoZSBjdXJyZW50IGNvbnRleHQuIElu
IHBhcnRpY3VsYXIsIGl0IGNhbgorcmVmZXJlbmNlIGdsb2JhbCBhbmQvb3IgbG9jYWwgdmFyaWFi
bGVzLCBhbmQgY2FuIGJlOgorICAqIGEgc2ltcGxlIGZ1bmN0aW9uIGNhbGwgKG9mdGVuIHRoZSBj
YXNlKSwKKyAgKiBhIGNvbXBsZXggZXhwcmVzc2lvbiwgb3IKKyAgKiBhIGNvbXBvdW5kIHN0YXRl
bWVudC4KKworPiBTb21lIGV4YW1wbGVzIGFyZSBzaG93biBoZXJlOgorCitgYGAKKy8vIEEgZGVh
dGggdGVzdCBjYW4gYmUgYSBzaW1wbGUgZnVuY3Rpb24gY2FsbC4KK1RFU1QoTXlEZWF0aFRlc3Qs
IEZ1bmN0aW9uQ2FsbCkgeworICBBU1NFUlRfREVBVEgoWHl6KDUpLCAiWHl6IGZhaWxlZCIpOwor
fQorCisvLyBPciBhIGNvbXBsZXggZXhwcmVzc2lvbiB0aGF0IHJlZmVyZW5jZXMgdmFyaWFibGVz
IGFuZCBmdW5jdGlvbnMuCitURVNUKE15RGVhdGhUZXN0LCBDb21wbGV4RXhwcmVzc2lvbikgewor
ICBjb25zdCBib29sIGMgPSBDb25kaXRpb24oKTsKKyAgQVNTRVJUX0RFQVRIKChjID8gRnVuYzEo
MCkgOiBvYmplY3QyLk1ldGhvZCgidGVzdCIpKSwKKyAgICAgICAgICAgICAgICIoRnVuYzF8TWV0
aG9kKSBmYWlsZWQiKTsKK30KKworLy8gRGVhdGggYXNzZXJ0aW9ucyBjYW4gYmUgdXNlZCBhbnkg
d2hlcmUgaW4gYSBmdW5jdGlvbi4gSW4KKy8vIHBhcnRpY3VsYXIsIHRoZXkgY2FuIGJlIGluc2lk
ZSBhIGxvb3AuCitURVNUKE15RGVhdGhUZXN0LCBJbnNpZGVMb29wKSB7CisgIC8vIFZlcmlmaWVz
IHRoYXQgRm9vKDApLCBGb28oMSksIC4uLiwgYW5kIEZvbyg0KSBhbGwgZGllLgorICBmb3IgKGlu
dCBpID0gMDsgaSA8IDU7IGkrKykgeworICAgIEVYUEVDVF9ERUFUSF9NKEZvbyhpKSwgIkZvbyBo
YXMgXFxkKyBlcnJvcnMiLAorICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6TWVzc2FnZSgp
IDw8ICJ3aGVyZSBpIGlzICIgPDwgaSk7CisgIH0KK30KKworLy8gQSBkZWF0aCBhc3NlcnRpb24g
Y2FuIGNvbnRhaW4gYSBjb21wb3VuZCBzdGF0ZW1lbnQuCitURVNUKE15RGVhdGhUZXN0LCBDb21w
b3VuZFN0YXRlbWVudCkgeworICAvLyBWZXJpZmllcyB0aGF0IGF0IGxlYXNlIG9uZSBvZiBCYXIo
MCksIEJhcigxKSwgLi4uLCBhbmQKKyAgLy8gQmFyKDQpIGRpZXMuCisgIEFTU0VSVF9ERUFUSCh7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICAgIEJhcihpKTsKKyAgICB9
CisgIH0sCisgICJCYXIgaGFzIFxcZCsgZXJyb3JzIik7fQorYGBgCisKK2Bnb29nbGV0ZXN0X3Vu
aXR0ZXN0LmNjYCBjb250YWlucyBtb3JlIGV4YW1wbGVzIGlmIHlvdSBhcmUgaW50ZXJlc3RlZC4K
KworIyMgV2hhdCBzeW50YXggZG9lcyB0aGUgcmVndWxhciBleHByZXNzaW9uIGluIEFTU0VSVFxf
REVBVEggdXNlPyAjIworCitPbiBQT1NJWCBzeXN0ZW1zLCBHb29nbGUgVGVzdCB1c2VzIHRoZSBQ
T1NJWCBFeHRlbmRlZCByZWd1bGFyCitleHByZXNzaW9uIHN5bnRheAorKGh0dHA6Ly9lbi53aWtp
cGVkaWEub3JnL3dpa2kvUmVndWxhcl9leHByZXNzaW9uI1BPU0lYX0V4dGVuZGVkX1JlZ3VsYXJf
RXhwcmVzc2lvbnMpLgorT24gV2luZG93cywgaXQgdXNlcyBhIGxpbWl0ZWQgdmFyaWFudCBvZiBy
ZWd1bGFyIGV4cHJlc3Npb24KK3N5bnRheC4gRm9yIG1vcmUgZGV0YWlscywgc2VlIHRoZQorW3Jl
Z3VsYXIgZXhwcmVzc2lvbiBzeW50YXhdKFYxXzZfQWR2YW5jZWRHdWlkZS5tZCNSZWd1bGFyX0V4
cHJlc3Npb25fU3ludGF4KS4KKworIyMgSSBoYXZlIGEgZml4dHVyZSBjbGFzcyBGb28sIGJ1dCBU
RVNUXF9GKEZvbywgQmFyKSBnaXZlcyBtZSBlcnJvciAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gZm9y
IGNhbGwgdG8gRm9vOjpGb28oKSIuIFdoeT8gIyMKKworR29vZ2xlIFRlc3QgbmVlZHMgdG8gYmUg
YWJsZSB0byBjcmVhdGUgb2JqZWN0cyBvZiB5b3VyIHRlc3QgZml4dHVyZSBjbGFzcywgc28KK2l0
IG11c3QgaGF2ZSBhIGRlZmF1bHQgY29uc3RydWN0b3IuIE5vcm1hbGx5IHRoZSBjb21waWxlciB3
aWxsIGRlZmluZSBvbmUgZm9yCit5b3UuIEhvd2V2ZXIsIHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB5
b3UgaGF2ZSB0byBkZWZpbmUgeW91ciBvd246CisgICogSWYgeW91IGV4cGxpY2l0bHkgZGVjbGFy
ZSBhIG5vbi1kZWZhdWx0IGNvbnN0cnVjdG9yIGZvciBjbGFzcyBgRm9vYCwgdGhlbiB5b3UgbmVl
ZCB0byBkZWZpbmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLCBldmVuIGlmIGl0IHdvdWxkIGJlIGVt
cHR5LgorICAqIElmIGBGb29gIGhhcyBhIGNvbnN0IG5vbi1zdGF0aWMgZGF0YSBtZW1iZXIsIHRo
ZW4geW91IGhhdmUgdG8gZGVmaW5lIHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIF9hbmRfIGluaXRp
YWxpemUgdGhlIGNvbnN0IG1lbWJlciBpbiB0aGUgaW5pdGlhbGl6ZXIgbGlzdCBvZiB0aGUgY29u
c3RydWN0b3IuIChFYXJseSB2ZXJzaW9ucyBvZiBgZ2NjYCBkb2Vzbid0IGZvcmNlIHlvdSB0byBp
bml0aWFsaXplIHRoZSBjb25zdCBtZW1iZXIuIEl0J3MgYSBidWcgdGhhdCBoYXMgYmVlbiBmaXhl
ZCBpbiBgZ2NjIDRgLikKKworIyMgV2h5IGRvZXMgQVNTRVJUXF9ERUFUSCBjb21wbGFpbiBhYm91
dCBwcmV2aW91cyB0aHJlYWRzIHRoYXQgd2VyZSBhbHJlYWR5IGpvaW5lZD8gIyMKKworV2l0aCB0
aGUgTGludXggcHRocmVhZCBsaWJyYXJ5LCB0aGVyZSBpcyBubyB0dXJuaW5nIGJhY2sgb25jZSB5
b3UgY3Jvc3MgdGhlCitsaW5lIGZyb20gc2luZ2xlIHRocmVhZCB0byBtdWx0aXBsZSB0aHJlYWRz
LiBUaGUgZmlyc3QgdGltZSB5b3UgY3JlYXRlIGEKK3RocmVhZCwgYSBtYW5hZ2VyIHRocmVhZCBp
cyBjcmVhdGVkIGluIGFkZGl0aW9uLCBzbyB5b3UgZ2V0IDMsIG5vdCAyLCB0aHJlYWRzLgorTGF0
ZXIgd2hlbiB0aGUgdGhyZWFkIHlvdSBjcmVhdGUgam9pbnMgdGhlIG1haW4gdGhyZWFkLCB0aGUg
dGhyZWFkIGNvdW50CitkZWNyZW1lbnRzIGJ5IDEsIGJ1dCB0aGUgbWFuYWdlciB0aHJlYWQgd2ls
bCBuZXZlciBiZSBraWxsZWQsIHNvIHlvdSBzdGlsbCBoYXZlCisyIHRocmVhZHMsIHdoaWNoIG1l
YW5zIHlvdSBjYW5ub3Qgc2FmZWx5IHJ1biBhIGRlYXRoIHRlc3QuCisKK1RoZSBuZXcgTlBUTCB0
aHJlYWQgbGlicmFyeSBkb2Vzbid0IHN1ZmZlciBmcm9tIHRoaXMgcHJvYmxlbSwgYXMgaXQgZG9l
c24ndAorY3JlYXRlIGEgbWFuYWdlciB0aHJlYWQuIEhvd2V2ZXIsIGlmIHlvdSBkb24ndCBjb250
cm9sIHdoaWNoIG1hY2hpbmUgeW91ciB0ZXN0CitydW5zIG9uLCB5b3Ugc2hvdWxkbid0IGRlcGVu
ZCBvbiB0aGlzLgorCisjIyBXaHkgZG9lcyBHb29nbGUgVGVzdCByZXF1aXJlIHRoZSBlbnRpcmUg
dGVzdCBjYXNlLCBpbnN0ZWFkIG9mIGluZGl2aWR1YWwgdGVzdHMsIHRvIGJlIG5hbWVkIEZPT0Rl
YXRoVGVzdCB3aGVuIGl0IHVzZXMgQVNTRVJUXF9ERUFUSD8gIyMKKworR29vZ2xlIFRlc3QgZG9l
cyBub3QgaW50ZXJsZWF2ZSB0ZXN0cyBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLiBUaGF0IGlz
LCBpdAorcnVucyBhbGwgdGVzdHMgaW4gb25lIHRlc3QgY2FzZSBmaXJzdCwgYW5kIHRoZW4gcnVu
cyBhbGwgdGVzdHMgaW4gdGhlIG5leHQgdGVzdAorY2FzZSwgYW5kIHNvIG9uLiBHb29nbGUgVGVz
dCBkb2VzIHRoaXMgYmVjYXVzZSBpdCBuZWVkcyB0byBzZXQgdXAgYSB0ZXN0IGNhc2UKK2JlZm9y
ZSB0aGUgZmlyc3QgdGVzdCBpbiBpdCBpcyBydW4sIGFuZCB0ZWFyIGl0IGRvd24gYWZ0ZXJ3b3Jk
cy4gU3BsaXR0aW5nIHVwCit0aGUgdGVzdCBjYXNlIHdvdWxkIHJlcXVpcmUgbXVsdGlwbGUgc2V0
LXVwIGFuZCB0ZWFyLWRvd24gcHJvY2Vzc2VzLCB3aGljaCBpcworaW5lZmZpY2llbnQgYW5kIG1h
a2VzIHRoZSBzZW1hbnRpY3MgdW5jbGVhbi4KKworSWYgd2Ugd2VyZSB0byBkZXRlcm1pbmUgdGhl
IG9yZGVyIG9mIHRlc3RzIGJhc2VkIG9uIHRlc3QgbmFtZSBpbnN0ZWFkIG9mIHRlc3QKK2Nhc2Ug
bmFtZSwgdGhlbiB3ZSB3b3VsZCBoYXZlIGEgcHJvYmxlbSB3aXRoIHRoZSBmb2xsb3dpbmcgc2l0
dWF0aW9uOgorCitgYGAKK1RFU1RfRihGb29UZXN0LCBBYmNEZWF0aFRlc3QpIHsgLi4uIH0KK1RF
U1RfRihGb29UZXN0LCBVdncpIHsgLi4uIH0KKworVEVTVF9GKEJhclRlc3QsIERlZkRlYXRoVGVz
dCkgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIFh5eikgeyAuLi4gfQorYGBgCisKK1NpbmNlIGBG
b29UZXN0LkFiY0RlYXRoVGVzdGAgbmVlZHMgdG8gcnVuIGJlZm9yZSBgQmFyVGVzdC5YeXpgLCBh
bmQgd2UgZG9uJ3QKK2ludGVybGVhdmUgdGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcywg
d2UgbmVlZCB0byBydW4gYWxsIHRlc3RzIGluIHRoZQorYEZvb1Rlc3RgIGNhc2UgYmVmb3JlIHJ1
bm5pbmcgYW55IHRlc3QgaW4gdGhlIGBCYXJUZXN0YCBjYXNlLiBUaGlzIGNvbnRyYWRpY3RzCit3
aXRoIHRoZSByZXF1aXJlbWVudCB0byBydW4gYEJhclRlc3QuRGVmRGVhdGhUZXN0YCBiZWZvcmUg
YEZvb1Rlc3QuVXZ3YC4KKworIyMgQnV0IEkgZG9uJ3QgbGlrZSBjYWxsaW5nIG15IGVudGlyZSB0
ZXN0IGNhc2UgRk9PRGVhdGhUZXN0IHdoZW4gaXQgY29udGFpbnMgYm90aCBkZWF0aCB0ZXN0cyBh
bmQgbm9uLWRlYXRoIHRlc3RzLiBXaGF0IGRvIEkgZG8/ICMjCisKK1lvdSBkb24ndCBoYXZlIHRv
LCBidXQgaWYgeW91IGxpa2UsIHlvdSBtYXkgc3BsaXQgdXAgdGhlIHRlc3QgY2FzZSBpbnRvCitg
Rm9vVGVzdGAgYW5kIGBGb29EZWF0aFRlc3RgLCB3aGVyZSB0aGUgbmFtZXMgbWFrZSBpdCBjbGVh
ciB0aGF0IHRoZXkgYXJlCityZWxhdGVkOgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07CisKK1RFU1RfRihGb29UZXN0LCBBYmMpIHsgLi4uIH0K
K1RFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0KKwordHlwZWRlZiBGb29UZXN0IEZvb0RlYXRo
VGVzdDsKKworVEVTVF9GKEZvb0RlYXRoVGVzdCwgVXZ3KSB7IC4uLiBFWFBFQ1RfREVBVEgoLi4u
KSAuLi4gfQorVEVTVF9GKEZvb0RlYXRoVGVzdCwgWHl6KSB7IC4uLiBBU1NFUlRfREVBVEgoLi4u
KSAuLi4gfQorYGBgCisKKyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgIm5vIG1hdGNo
IGZvciAnb3BlcmF0b3I8PCciIHdoZW4gSSB1c2UgYW4gYXNzZXJ0aW9uLiBXaGF0IGdpdmVzPyAj
IworCitJZiB5b3UgdXNlIGEgdXNlci1kZWZpbmVkIHR5cGUgYEZvb1R5cGVgIGluIGFuIGFzc2Vy
dGlvbiwgeW91IG11c3QgbWFrZSBzdXJlCit0aGVyZSBpcyBhbiBgc3RkOjpvc3RyZWFtJiBvcGVy
YXRvcjw8KHN0ZDo6b3N0cmVhbSYsIGNvbnN0IEZvb1R5cGUmKWAgZnVuY3Rpb24KK2RlZmluZWQg
c3VjaCB0aGF0IHdlIGNhbiBwcmludCBhIHZhbHVlIG9mIGBGb29UeXBlYC4KKworSW4gYWRkaXRp
b24sIGlmIGBGb29UeXBlYCBpcyBkZWNsYXJlZCBpbiBhIG5hbWUgc3BhY2UsIHRoZSBgPDxgIG9w
ZXJhdG9yIGFsc28KK25lZWRzIHRvIGJlIGRlZmluZWQgaW4gdGhlIF9zYW1lXyBuYW1lIHNwYWNl
LgorCisjIyBIb3cgZG8gSSBzdXBwcmVzcyB0aGUgbWVtb3J5IGxlYWsgbWVzc2FnZXMgb24gV2lu
ZG93cz8gIyMKKworU2luY2UgdGhlIHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQgR29vZ2xlIFRlc3Qg
c2luZ2xldG9uIHJlcXVpcmVzIGFsbG9jYXRpb25zIG9uCit0aGUgaGVhcCwgdGhlIFZpc3VhbCBD
KysgbWVtb3J5IGxlYWsgZGV0ZWN0b3Igd2lsbCByZXBvcnQgbWVtb3J5IGxlYWtzIGF0IHRoZQor
ZW5kIG9mIHRoZSBwcm9ncmFtIHJ1bi4gVGhlIGVhc2llc3Qgd2F5IHRvIGF2b2lkIHRoaXMgaXMg
dG8gdXNlIHRoZQorYF9DcnRNZW1DaGVja3BvaW50YCBhbmQgYF9DcnRNZW1EdW1wQWxsT2JqZWN0
c1NpbmNlYCBjYWxscyB0byBub3QgcmVwb3J0IGFueQorc3RhdGljYWxseSBpbml0aWFsaXplZCBo
ZWFwIG9iamVjdHMuIFNlZSBNU0ROIGZvciBtb3JlIGRldGFpbHMgYW5kIGFkZGl0aW9uYWwKK2hl
YXAgY2hlY2svZGVidWcgcm91dGluZXMuCisKKyMjIEkgYW0gYnVpbGRpbmcgbXkgcHJvamVjdCB3
aXRoIEdvb2dsZSBUZXN0IGluIFZpc3VhbCBTdHVkaW8gYW5kIGFsbCBJJ20gZ2V0dGluZyBpcyBh
IGJ1bmNoIG9mIGxpbmtlciBlcnJvcnMgKG9yIHdhcm5pbmdzKS4gSGVscCEgIyMKKworWW91IG1h
eSBnZXQgYSBudW1iZXIgb2YgdGhlIGZvbGxvd2luZyBsaW5rZXIgZXJyb3Igb3Igd2FybmluZ3Mg
aWYgeW91CithdHRlbXB0IHRvIGxpbmsgeW91ciB0ZXN0IHByb2plY3Qgd2l0aCB0aGUgR29vZ2xl
IFRlc3QgbGlicmFyeSB3aGVuCit5b3VyIHByb2plY3QgYW5kIHRoZSBhcmUgbm90IGJ1aWx0IHVz
aW5nIHRoZSBzYW1lIGNvbXBpbGVyIHNldHRpbmdzLgorCisgICogTE5LMjAwNTogc3ltYm9sIGFs
cmVhZHkgZGVmaW5lZCBpbiBvYmplY3QKKyAgKiBMTks0MjE3OiBsb2NhbGx5IGRlZmluZWQgc3lt
Ym9sICdzeW1ib2wnIGltcG9ydGVkIGluIGZ1bmN0aW9uICdmdW5jdGlvbicKKyAgKiBMTks0MDQ5
OiBsb2NhbGx5IGRlZmluZWQgc3ltYm9sICdzeW1ib2wnIGltcG9ydGVkCisKK1RoZSBHb29nbGUg
VGVzdCBwcm9qZWN0IChndGVzdC52Y3Byb2opIGhhcyB0aGUgUnVudGltZSBMaWJyYXJ5IG9wdGlv
bgorc2V0IHRvIC9NVCAodXNlIG11bHRpLXRocmVhZGVkIHN0YXRpYyBsaWJyYXJpZXMsIC9NVGQg
Zm9yIGRlYnVnKS4gSWYKK3lvdXIgcHJvamVjdCB1c2VzIHNvbWV0aGluZyBlbHNlLCBmb3IgZXhh
bXBsZSAvTUQgKHVzZSBtdWx0aS10aHJlYWRlZAorRExMcywgL01EZCBmb3IgZGVidWcpLCB5b3Ug
bmVlZCB0byBjaGFuZ2UgdGhlIHNldHRpbmcgaW4gdGhlIEdvb2dsZQorVGVzdCBwcm9qZWN0IHRv
IG1hdGNoIHlvdXIgcHJvamVjdCdzLgorCitUbyB1cGRhdGUgdGhpcyBzZXR0aW5nIG9wZW4gdGhl
IHByb2plY3QgcHJvcGVydGllcyBpbiB0aGUgVmlzdWFsCitTdHVkaW8gSURFIHRoZW4gc2VsZWN0
IHRoZSBicmFuY2ggQ29uZmlndXJhdGlvbiBQcm9wZXJ0aWVzIHwgQy9DKysgfAorQ29kZSBHZW5l
cmF0aW9uIGFuZCBjaGFuZ2UgdGhlIG9wdGlvbiAiUnVudGltZSBMaWJyYXJ5Ii4gIFlvdSBtYXkg
YWxzbyB0cnkKK3VzaW5nIGd0ZXN0LW1kLnZjcHJvaiBpbnN0ZWFkIG9mIGd0ZXN0LnZjcHJvai4K
KworIyMgSSBwdXQgbXkgdGVzdHMgaW4gYSBsaWJyYXJ5IGFuZCBHb29nbGUgVGVzdCBkb2Vzbid0
IHJ1biB0aGVtLiBXaGF0J3MgaGFwcGVuaW5nPyAjIworSGF2ZSB5b3UgcmVhZCBhCitbd2Fybmlu
Z10oVjFfNl9QcmltZXIubWQjaW1wb3J0YW50LW5vdGUtZm9yLXZpc3VhbC1jLXVzZXJzKSBvbgor
dGhlIEdvb2dsZSBUZXN0IFByaW1lciBwYWdlPworCisjIyBJIHdhbnQgdG8gdXNlIEdvb2dsZSBU
ZXN0IHdpdGggVmlzdWFsIFN0dWRpbyBidXQgZG9uJ3Qga25vdyB3aGVyZSB0byBzdGFydC4gIyMK
K01hbnkgcGVvcGxlIGFyZSBpbiB5b3VyIHBvc2l0aW9uIGFuZCBvbmUgb2YgdGhlIHBvc3RlZCBo
aXMgc29sdXRpb24gdG8KK291ciBtYWlsaW5nIGxpc3QuIEhlcmUgaXMgaGlzIGxpbms6CitodHRw
Oi8vaGFzc2FuamFtaWxhaG1hZC5ibG9nc3BvdC5jb20vMjAwOS8wNy9ndGVzdC1zdGFydGVycy1o
ZWxwLmh0bWwuCisKKyMjIEkgYW0gc2VlaW5nIGNvbXBpbGUgZXJyb3JzIG1lbnRpb25pbmcgc3Rk
Ojp0eXBlXF90cmFpdHMgd2hlbiBJIHRyeSB0byB1c2UgR29vZ2xlIFRlc3Qgb24gU29sYXJpcy4g
IyMKK0dvb2dsZSBUZXN0IHVzZXMgcGFydHMgb2YgdGhlIHN0YW5kYXJkIEMrKyBsaWJyYXJ5IHRo
YXQgU3VuU3R1ZGlvIGRvZXMgbm90IHN1cHBvcnQuCitPdXIgdXNlcnMgcmVwb3J0ZWQgc3VjY2Vz
cyB1c2luZyBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbnMuIFRyeSBydW5uaW5nIHRoZSBidWls
ZCBhZnRlciBydW5pbmcgdGhpcyBjb21tYWQ6CisKK2BleHBvcnQgQ0M9Y2MgQ1hYPUNDIENYWEZM
QUdTPSctbGlicmFyeT1zdGxwb3J0NCdgCisKKyMjIEhvdyBjYW4gbXkgY29kZSBkZXRlY3QgaWYg
aXQgaXMgcnVubmluZyBpbiBhIHRlc3Q/ICMjCisKK0lmIHlvdSB3cml0ZSBjb2RlIHRoYXQgc25p
ZmZzIHdoZXRoZXIgaXQncyBydW5uaW5nIGluIGEgdGVzdCBhbmQgZG9lcworZGlmZmVyZW50IHRo
aW5ncyBhY2NvcmRpbmdseSwgeW91IGFyZSBsZWFraW5nIHRlc3Qtb25seSBsb2dpYyBpbnRvCitw
cm9kdWN0aW9uIGNvZGUgYW5kIHRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIGVuc3VyZSB0aGF0IHRo
ZSB0ZXN0LW9ubHkKK2NvZGUgcGF0aHMgYXJlbid0IHJ1biBieSBtaXN0YWtlIGluIHByb2R1Y3Rp
b24uICBTdWNoIGNsZXZlcm5lc3MgYWxzbworbGVhZHMgdG8KK1tIZWlzZW5idWdzXShodHRwOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL1VudXN1YWxfc29mdHdhcmVfYnVnI0hlaXNlbmJ1ZykuCitU
aGVyZWZvcmUgd2Ugc3Ryb25nbHkgYWR2aXNlIGFnYWluc3QgdGhlIHByYWN0aWNlLCBhbmQgR29v
Z2xlIFRlc3QgZG9lc24ndAorcHJvdmlkZSBhIHdheSB0byBkbyBpdC4KKworSW4gZ2VuZXJhbCwg
dGhlIHJlY29tbWVuZGVkIHdheSB0byBjYXVzZSB0aGUgY29kZSB0byBiZWhhdmUKK2RpZmZlcmVu
dGx5IHVuZGVyIHRlc3QgaXMgW2RlcGVuZGVuY3kgaW5qZWN0aW9uXShodHRwOi8vamFtZXNzaG9y
ZS5jb20vQmxvZy9EZXBlbmRlbmN5LUluamVjdGlvbi1EZW15c3RpZmllZC5odG1sKS4KK1lvdSBj
YW4gaW5qZWN0IGRpZmZlcmVudCBmdW5jdGlvbmFsaXR5IGZyb20gdGhlIHRlc3QgYW5kIGZyb20g
dGhlCitwcm9kdWN0aW9uIGNvZGUuICBTaW5jZSB5b3VyIHByb2R1Y3Rpb24gY29kZSBkb2Vzbid0
IGxpbmsgaW4gdGhlCitmb3ItdGVzdCBsb2dpYyBhdCBhbGwsIHRoZXJlIGlzIG5vIGRhbmdlciBp
biBhY2NpZGVudGFsbHkgcnVubmluZyBpdC4KKworSG93ZXZlciwgaWYgeW91IF9yZWFsbHlfLCBf
cmVhbGx5XywgX3JlYWxseV8gaGF2ZSBubyBjaG9pY2UsIGFuZCBpZgoreW91IGZvbGxvdyB0aGUg
cnVsZSBvZiBlbmRpbmcgeW91ciB0ZXN0IHByb2dyYW0gbmFtZXMgd2l0aCBgX3Rlc3RgLAoreW91
IGNhbiB1c2UgdGhlIF9ob3JyaWJsZV8gaGFjayBvZiBzbmlmZmluZyB5b3VyIGV4ZWN1dGFibGUg
bmFtZQorKGBhcmd2WzBdYCBpbiBgbWFpbigpYCkgdG8ga25vdyB3aGV0aGVyIHRoZSBjb2RlIGlz
IHVuZGVyIHRlc3QuCisKKyMjIEdvb2dsZSBUZXN0IGRlZmluZXMgYSBtYWNybyB0aGF0IGNsYXNo
ZXMgd2l0aCBvbmUgZGVmaW5lZCBieSBhbm90aGVyIGxpYnJhcnkuIEhvdyBkbyBJIGRlYWwgd2l0
aCB0aGF0PyAjIworCitJbiBDKyssIG1hY3JvcyBkb24ndCBvYmV5IG5hbWVzcGFjZXMuICBUaGVy
ZWZvcmUgdHdvIGxpYnJhcmllcyB0aGF0Citib3RoIGRlZmluZSBhIG1hY3JvIG9mIHRoZSBzYW1l
IG5hbWUgd2lsbCBjbGFzaCBpZiB5b3UgYCNpbmNsdWRlYCBib3RoCitkZWZpbml0aW9ucy4gIElu
IGNhc2UgYSBHb29nbGUgVGVzdCBtYWNybyBjbGFzaGVzIHdpdGggYW5vdGhlcgorbGlicmFyeSwg
eW91IGNhbiBmb3JjZSBHb29nbGUgVGVzdCB0byByZW5hbWUgaXRzIG1hY3JvIHRvIGF2b2lkIHRo
ZQorY29uZmxpY3QuCisKK1NwZWNpZmljYWxseSwgaWYgYm90aCBHb29nbGUgVGVzdCBhbmQgc29t
ZSBvdGhlciBjb2RlIGRlZmluZSBtYWNybworYEZPT2AsIHlvdSBjYW4gYWRkCitgYGAKKyAgLURH
VEVTVF9ET05UX0RFRklORV9GT089MQorYGBgCit0byB0aGUgY29tcGlsZXIgZmxhZ3MgdG8gdGVs
bCBHb29nbGUgVGVzdCB0byBjaGFuZ2UgdGhlIG1hY3JvJ3MgbmFtZQorZnJvbSBgRk9PYCB0byBg
R1RFU1RfRk9PYC4gRm9yIGV4YW1wbGUsIHdpdGggYC1ER1RFU1RfRE9OVF9ERUZJTkVfVEVTVD0x
YCwgeW91J2xsIG5lZWQgdG8gd3JpdGUKK2BgYAorICBHVEVTVF9URVNUKFNvbWVUZXN0LCBEb2Vz
VGhpcykgeyAuLi4gfQorYGBgCitpbnN0ZWFkIG9mCitgYGAKKyAgVEVTVChTb21lVGVzdCwgRG9l
c1RoaXMpIHsgLi4uIH0KK2BgYAoraW4gb3JkZXIgdG8gZGVmaW5lIGEgdGVzdC4KKworQ3VycmVu
dGx5LCB0aGUgZm9sbG93aW5nIGBURVNUYCwgYEZBSUxgLCBgU1VDQ0VFRGAsIGFuZCB0aGUgYmFz
aWMgY29tcGFyaXNvbiBhc3NlcnRpb24gbWFjcm9zIGNhbiBoYXZlIGFsdGVybmF0aXZlIG5hbWVz
LiBZb3UgY2FuIHNlZSB0aGUgZnVsbCBsaXN0IG9mIGNvdmVyZWQgbWFjcm9zIFtoZXJlXShodHRw
Oi8vd3d3Lmdvb2dsZS5jb20vY29kZXNlYXJjaD9xPWlmKyFHVEVTVF9ET05UX0RFRklORV9cdyUy
QitwYWNrYWdlOmh0dHA6Ly9nb29nbGV0ZXN0XC5nb29nbGVjb2RlXC5jb20rZmlsZTovaW5jbHVk
ZS9ndGVzdC9ndGVzdC5oKS4gTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gdGhlICJB
dm9pZGluZyBNYWNybyBOYW1lIENsYXNoZXMiIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBmaWxlLgor
CisjIyBNeSBxdWVzdGlvbiBpcyBub3QgY292ZXJlZCBpbiB5b3VyIEZBUSEgIyMKKworSWYgeW91
IGNhbm5vdCBmaW5kIHRoZSBhbnN3ZXIgdG8geW91ciBxdWVzdGlvbiBpbiB0aGlzIEZBUSwgdGhl
cmUgYXJlCitzb21lIG90aGVyIHJlc291cmNlcyB5b3UgY2FuIHVzZToKKworICAxLiByZWFkIG90
aGVyIFt3aWtpIHBhZ2VzXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC93L2xp
c3QpLAorICAxLiBzZWFyY2ggdGhlIG1haWxpbmcgbGlzdCBbYXJjaGl2ZV0oaHR0cDovL2dyb3Vw
cy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZXRlc3RmcmFtZXdvcmsvdG9waWNzKSwKKyAgMS4gYXNr
IGl0IG9uIFtnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb21dKG1haWx0bzpnb29n
bGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20pIGFuZCBzb21lb25lIHdpbGwgYW5zd2Vy
IGl0ICh0byBwcmV2ZW50IHNwYW0sIHdlIHJlcXVpcmUgeW91IHRvIGpvaW4gdGhlIFtkaXNjdXNz
aW9uIGdyb3VwXShodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xldGVzdGZyYW1l
d29yaykgYmVmb3JlIHlvdSBjYW4gcG9zdC4pLgorCitQbGVhc2Ugbm90ZSB0aGF0IGNyZWF0aW5n
IGFuIGlzc3VlIGluIHRoZQorW2lzc3VlIHRyYWNrZXJdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20v
cC9nb29nbGV0ZXN0L2lzc3Vlcy9saXN0KSBpcyBfbm90XworYSBnb29kIHdheSB0byBnZXQgeW91
ciBhbnN3ZXIsIGFzIGl0IGlzIG1vbml0b3JlZCBpbmZyZXF1ZW50bHkgYnkgYQordmVyeSBzbWFs
bCBudW1iZXIgb2YgcGVvcGxlLgorCitXaGVuIGFza2luZyBhIHF1ZXN0aW9uLCBpdCdzIGhlbHBm
dWwgdG8gcHJvdmlkZSBhcyBtdWNoIG9mIHRoZQorZm9sbG93aW5nIGluZm9ybWF0aW9uIGFzIHBv
c3NpYmxlIChwZW9wbGUgY2Fubm90IGhlbHAgeW91IGlmIHRoZXJlJ3MKK25vdCBlbm91Z2ggaW5m
b3JtYXRpb24gaW4geW91ciBxdWVzdGlvbik6CisKKyAgKiB0aGUgdmVyc2lvbiAob3IgdGhlIHJl
dmlzaW9uIG51bWJlciBpZiB5b3UgY2hlY2sgb3V0IGZyb20gU1ZOIGRpcmVjdGx5KSBvZiBHb29n
bGUgVGVzdCB5b3UgdXNlIChHb29nbGUgVGVzdCBpcyB1bmRlciBhY3RpdmUgZGV2ZWxvcG1lbnQs
IHNvIGl0J3MgcG9zc2libGUgdGhhdCB5b3VyIHByb2JsZW0gaGFzIGJlZW4gc29sdmVkIGluIGEg
bGF0ZXIgdmVyc2lvbiksCisgICogeW91ciBvcGVyYXRpbmcgc3lzdGVtLAorICAqIHRoZSBuYW1l
IGFuZCB2ZXJzaW9uIG9mIHlvdXIgY29tcGlsZXIsCisgICogdGhlIGNvbXBsZXRlIGNvbW1hbmQg
bGluZSBmbGFncyB5b3UgZ2l2ZSB0byB5b3VyIGNvbXBpbGVyLAorICAqIHRoZSBjb21wbGV0ZSBj
b21waWxlciBlcnJvciBtZXNzYWdlcyAoaWYgdGhlIHF1ZXN0aW9uIGlzIGFib3V0IGNvbXBpbGF0
aW9uKSwKKyAgKiB0aGUgX2FjdHVhbF8gY29kZSAoaWRlYWxseSwgYSBtaW5pbWFsIGJ1dCBjb21w
bGV0ZSBwcm9ncmFtKSB0aGF0IGhhcyB0aGUgcHJvYmxlbSB5b3UgZW5jb3VudGVyLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV82X1ByaW1lci5tZCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfNl9QcmltZXIubWQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQ4NDBl
ZjQ1YjljYTU3ZjE1YjA5NzQ0ZjNiODBhYTE3ZjA5NjQ2YQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfNl9QcmltZXIubWQKQEAgLTAsMCArMSw1MDEg
QEAKKworCisjIEludHJvZHVjdGlvbjogV2h5IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcms/
ICMKKworX0dvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmtfIGhlbHBzIHlvdSB3cml0ZSBiZXR0
ZXIgQysrIHRlc3RzLgorCitObyBtYXR0ZXIgd2hldGhlciB5b3Ugd29yayBvbiBMaW51eCwgV2lu
ZG93cywgb3IgYSBNYWMsIGlmIHlvdSB3cml0ZSBDKysgY29kZSwKK0dvb2dsZSBUZXN0IGNhbiBo
ZWxwIHlvdS4KKworU28gd2hhdCBtYWtlcyBhIGdvb2QgdGVzdCwgYW5kIGhvdyBkb2VzIEdvb2ds
ZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgZml0IGluPyBXZSBiZWxpZXZlOgorICAxLiBUZXN0cyBz
aG91bGQgYmUgX2luZGVwZW5kZW50XyBhbmQgX3JlcGVhdGFibGVfLiBJdCdzIGEgcGFpbiB0byBk
ZWJ1ZyBhIHRlc3QgdGhhdCBzdWNjZWVkcyBvciBmYWlscyBhcyBhIHJlc3VsdCBvZiBvdGhlciB0
ZXN0cy4gIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgaXNvbGF0ZXMgdGhlIHRlc3RzIGJ5
IHJ1bm5pbmcgZWFjaCBvZiB0aGVtIG9uIGEgZGlmZmVyZW50IG9iamVjdC4gV2hlbiBhIHRlc3Qg
ZmFpbHMsIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgYWxsb3dzIHlvdSB0byBydW4gaXQg
aW4gaXNvbGF0aW9uIGZvciBxdWljayBkZWJ1Z2dpbmcuCisgIDEuIFRlc3RzIHNob3VsZCBiZSB3
ZWxsIF9vcmdhbml6ZWRfIGFuZCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3RlZCBj
b2RlLiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBncm91cHMgcmVsYXRlZCB0ZXN0cyBp
bnRvIHRlc3QgY2FzZXMgdGhhdCBjYW4gc2hhcmUgZGF0YSBhbmQgc3Vicm91dGluZXMuIFRoaXMg
Y29tbW9uIHBhdHRlcm4gaXMgZWFzeSB0byByZWNvZ25pemUgYW5kIG1ha2VzIHRlc3RzIGVhc3kg
dG8gbWFpbnRhaW4uIFN1Y2ggY29uc2lzdGVuY3kgaXMgZXNwZWNpYWxseSBoZWxwZnVsIHdoZW4g
cGVvcGxlIHN3aXRjaCBwcm9qZWN0cyBhbmQgc3RhcnQgdG8gd29yayBvbiBhIG5ldyBjb2RlIGJh
c2UuCisgIDEuIFRlc3RzIHNob3VsZCBiZSBfcG9ydGFibGVfIGFuZCBfcmV1c2FibGVfLiBUaGUg
b3Blbi1zb3VyY2UgY29tbXVuaXR5IGhhcyBhIGxvdCBvZiBjb2RlIHRoYXQgaXMgcGxhdGZvcm0t
bmV1dHJhbCwgaXRzIHRlc3RzIHNob3VsZCBhbHNvIGJlIHBsYXRmb3JtLW5ldXRyYWwuICBHb29n
bGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIHdvcmtzIG9uIGRpZmZlcmVudCBPU2VzLCB3aXRoIGRp
ZmZlcmVudCBjb21waWxlcnMgKGdjYywgTVNWQywgYW5kIG90aGVycyksIHdpdGggb3Igd2l0aG91
dCBleGNlcHRpb25zLCBzbyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIHRlc3RzIGNhbiBl
YXNpbHkgd29yayB3aXRoIGEgdmFyaWV0eSBvZiBjb25maWd1cmF0aW9ucy4gIChOb3RlIHRoYXQg
dGhlIGN1cnJlbnQgcmVsZWFzZSBvbmx5IGNvbnRhaW5zIGJ1aWxkIHNjcmlwdHMgZm9yIExpbnV4
IC0gd2UgYXJlIGFjdGl2ZWx5IHdvcmtpbmcgb24gc2NyaXB0cyBmb3Igb3RoZXIgcGxhdGZvcm1z
LikKKyAgMS4gV2hlbiB0ZXN0cyBmYWlsLCB0aGV5IHNob3VsZCBwcm92aWRlIGFzIG11Y2ggX2lu
Zm9ybWF0aW9uXyBhYm91dCB0aGUgcHJvYmxlbSBhcyBwb3NzaWJsZS4gR29vZ2xlIEMrKyBUZXN0
aW5nIEZyYW1ld29yayBkb2Vzbid0IHN0b3AgYXQgdGhlIGZpcnN0IHRlc3QgZmFpbHVyZS4gSW5z
dGVhZCwgaXQgb25seSBzdG9wcyB0aGUgY3VycmVudCB0ZXN0IGFuZCBjb250aW51ZXMgd2l0aCB0
aGUgbmV4dC4gWW91IGNhbiBhbHNvIHNldCB1cCB0ZXN0cyB0aGF0IHJlcG9ydCBub24tZmF0YWwg
ZmFpbHVyZXMgYWZ0ZXIgd2hpY2ggdGhlIGN1cnJlbnQgdGVzdCBjb250aW51ZXMuIFRodXMsIHlv
dSBjYW4gZGV0ZWN0IGFuZCBmaXggbXVsdGlwbGUgYnVncyBpbiBhIHNpbmdsZSBydW4tZWRpdC1j
b21waWxlIGN5Y2xlLgorICAxLiBUaGUgdGVzdGluZyBmcmFtZXdvcmsgc2hvdWxkIGxpYmVyYXRl
IHRlc3Qgd3JpdGVycyBmcm9tIGhvdXNla2VlcGluZyBjaG9yZXMgYW5kIGxldCB0aGVtIGZvY3Vz
IG9uIHRoZSB0ZXN0IF9jb250ZW50Xy4gIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgYXV0
b21hdGljYWxseSBrZWVwcyB0cmFjayBvZiBhbGwgdGVzdHMgZGVmaW5lZCwgYW5kIGRvZXNuJ3Qg
cmVxdWlyZSB0aGUgdXNlciB0byBlbnVtZXJhdGUgdGhlbSBpbiBvcmRlciB0byBydW4gdGhlbS4K
KyAgMS4gVGVzdHMgc2hvdWxkIGJlIF9mYXN0Xy4gV2l0aCBHb29nbGUgQysrIFRlc3RpbmcgRnJh
bWV3b3JrLCB5b3UgY2FuIHJldXNlIHNoYXJlZCByZXNvdXJjZXMgYWNyb3NzIHRlc3RzIGFuZCBw
YXkgZm9yIHRoZSBzZXQtdXAvdGVhci1kb3duIG9ubHkgb25jZSwgd2l0aG91dCBtYWtpbmcgdGVz
dHMgZGVwZW5kIG9uIGVhY2ggb3RoZXIuCisKK1NpbmNlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFt
ZXdvcmsgaXMgYmFzZWQgb24gdGhlIHBvcHVsYXIgeFVuaXQKK2FyY2hpdGVjdHVyZSwgeW91J2xs
IGZlZWwgcmlnaHQgYXQgaG9tZSBpZiB5b3UndmUgdXNlZCBKVW5pdCBvciBQeVVuaXQgYmVmb3Jl
LgorSWYgbm90LCBpdCB3aWxsIHRha2UgeW91IGFib3V0IDEwIG1pbnV0ZXMgdG8gbGVhcm4gdGhl
IGJhc2ljcyBhbmQgZ2V0IHN0YXJ0ZWQuCitTbyBsZXQncyBnbyEKKworX05vdGU6XyBXZSBzb21l
dGltZXMgcmVmZXIgdG8gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBpbmZvcm1hbGx5Cith
cyBfR29vZ2xlIFRlc3RfLgorCisjIFNldHRpbmcgdXAgYSBOZXcgVGVzdCBQcm9qZWN0ICMKKwor
VG8gd3JpdGUgYSB0ZXN0IHByb2dyYW0gdXNpbmcgR29vZ2xlIFRlc3QsIHlvdSBuZWVkIHRvIGNv
bXBpbGUgR29vZ2xlCitUZXN0IGludG8gYSBsaWJyYXJ5IGFuZCBsaW5rIHlvdXIgdGVzdCB3aXRo
IGl0LiAgV2UgcHJvdmlkZSBidWlsZAorZmlsZXMgZm9yIHNvbWUgcG9wdWxhciBidWlsZCBzeXN0
ZW1zOiBgbXN2Yy9gIGZvciBWaXN1YWwgU3R1ZGlvLAorYHhjb2RlL2AgZm9yIE1hYyBYY29kZSwg
YG1ha2UvYCBmb3IgR05VIG1ha2UsIGBjb2RlZ2Vhci9gIGZvciBCb3JsYW5kCitDKysgQnVpbGRl
ciwgYW5kIHRoZSBhdXRvdG9vbHMgc2NyaXB0IChkZXByZWNhdGVkKSBhbmQKK2BDTWFrZUxpc3Rz
LnR4dGAgZm9yIENNYWtlIChyZWNvbW1lbmRlZCkgaW4gdGhlIEdvb2dsZSBUZXN0IHJvb3QKK2Rp
cmVjdG9yeS4gIElmIHlvdXIgYnVpbGQgc3lzdGVtIGlzIG5vdCBvbiB0aGlzIGxpc3QsIHlvdSBj
YW4gdGFrZSBhCitsb29rIGF0IGBtYWtlL01ha2VmaWxlYCB0byBsZWFybiBob3cgR29vZ2xlIFRl
c3Qgc2hvdWxkIGJlIGNvbXBpbGVkCisoYmFzaWNhbGx5IHlvdSB3YW50IHRvIGNvbXBpbGUgYHNy
Yy9ndGVzdC1hbGwuY2NgIHdpdGggYEdURVNUX1JPT1RgCithbmQgYEdURVNUX1JPT1QvaW5jbHVk
ZWAgaW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0aCwgd2hlcmUgYEdURVNUX1JPT1RgCitpcyB0aGUg
R29vZ2xlIFRlc3Qgcm9vdCBkaXJlY3RvcnkpLgorCitPbmNlIHlvdSBhcmUgYWJsZSB0byBjb21w
aWxlIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5LCB5b3Ugc2hvdWxkCitjcmVhdGUgYSBwcm9qZWN0
IG9yIGJ1aWxkIHRhcmdldCBmb3IgeW91ciB0ZXN0IHByb2dyYW0uICBNYWtlIHN1cmUgeW91Cito
YXZlIGBHVEVTVF9ST09UL2luY2x1ZGVgIGluIHRoZSBoZWFkZXIgc2VhcmNoIHBhdGggc28gdGhh
dCB0aGUKK2NvbXBpbGVyIGNhbiBmaW5kIGAiZ3Rlc3QvZ3Rlc3QuaCJgIHdoZW4gY29tcGlsaW5n
IHlvdXIgdGVzdC4gIFNldCB1cAoreW91ciB0ZXN0IHByb2plY3QgdG8gbGluayB3aXRoIHRoZSBH
b29nbGUgVGVzdCBsaWJyYXJ5IChmb3IgZXhhbXBsZSwKK2luIFZpc3VhbCBTdHVkaW8sIHRoaXMg
aXMgZG9uZSBieSBhZGRpbmcgYSBkZXBlbmRlbmN5IG9uCitgZ3Rlc3QudmNwcm9qYCkuCisKK0lm
IHlvdSBzdGlsbCBoYXZlIHF1ZXN0aW9ucywgdGFrZSBhIGxvb2sgYXQgaG93IEdvb2dsZSBUZXN0
J3Mgb3duCit0ZXN0cyBhcmUgYnVpbHQgYW5kIHVzZSB0aGVtIGFzIGV4YW1wbGVzLgorCisjIEJh
c2ljIENvbmNlcHRzICMKKworV2hlbiB1c2luZyBHb29nbGUgVGVzdCwgeW91IHN0YXJ0IGJ5IHdy
aXRpbmcgX2Fzc2VydGlvbnNfLCB3aGljaCBhcmUgc3RhdGVtZW50cwordGhhdCBjaGVjayB3aGV0
aGVyIGEgY29uZGl0aW9uIGlzIHRydWUuIEFuIGFzc2VydGlvbidzIHJlc3VsdCBjYW4gYmUgX3N1
Y2Nlc3NfLAorX25vbmZhdGFsIGZhaWx1cmVfLCBvciBfZmF0YWwgZmFpbHVyZV8uIElmIGEgZmF0
YWwgZmFpbHVyZSBvY2N1cnMsIGl0IGFib3J0cwordGhlIGN1cnJlbnQgZnVuY3Rpb247IG90aGVy
d2lzZSB0aGUgcHJvZ3JhbSBjb250aW51ZXMgbm9ybWFsbHkuCisKK19UZXN0c18gdXNlIGFzc2Vy
dGlvbnMgdG8gdmVyaWZ5IHRoZSB0ZXN0ZWQgY29kZSdzIGJlaGF2aW9yLiBJZiBhIHRlc3QgY3Jh
c2hlcworb3IgaGFzIGEgZmFpbGVkIGFzc2VydGlvbiwgdGhlbiBpdCBfZmFpbHNfOyBvdGhlcndp
c2UgaXQgX3N1Y2NlZWRzXy4KKworQSBfdGVzdCBjYXNlXyBjb250YWlucyBvbmUgb3IgbWFueSB0
ZXN0cy4gWW91IHNob3VsZCBncm91cCB5b3VyIHRlc3RzIGludG8gdGVzdAorY2FzZXMgdGhhdCBy
ZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3RlZCBjb2RlLiBXaGVuIG11bHRpcGxlIHRl
c3RzIGluIGEKK3Rlc3QgY2FzZSBuZWVkIHRvIHNoYXJlIGNvbW1vbiBvYmplY3RzIGFuZCBzdWJy
b3V0aW5lcywgeW91IGNhbiBwdXQgdGhlbSBpbnRvIGEKK190ZXN0IGZpeHR1cmVfIGNsYXNzLgor
CitBIF90ZXN0IHByb2dyYW1fIGNhbiBjb250YWluIG11bHRpcGxlIHRlc3QgY2FzZXMuCisKK1dl
J2xsIG5vdyBleHBsYWluIGhvdyB0byB3cml0ZSBhIHRlc3QgcHJvZ3JhbSwgc3RhcnRpbmcgYXQg
dGhlIGluZGl2aWR1YWwKK2Fzc2VydGlvbiBsZXZlbCBhbmQgYnVpbGRpbmcgdXAgdG8gdGVzdHMg
YW5kIHRlc3QgY2FzZXMuCisKKyMgQXNzZXJ0aW9ucyAjCisKK0dvb2dsZSBUZXN0IGFzc2VydGlv
bnMgYXJlIG1hY3JvcyB0aGF0IHJlc2VtYmxlIGZ1bmN0aW9uIGNhbGxzLiBZb3UgdGVzdCBhCitj
bGFzcyBvciBmdW5jdGlvbiBieSBtYWtpbmcgYXNzZXJ0aW9ucyBhYm91dCBpdHMgYmVoYXZpb3Iu
IFdoZW4gYW4gYXNzZXJ0aW9uCitmYWlscywgR29vZ2xlIFRlc3QgcHJpbnRzIHRoZSBhc3NlcnRp
b24ncyBzb3VyY2UgZmlsZSBhbmQgbGluZSBudW1iZXIgbG9jYXRpb24sCithbG9uZyB3aXRoIGEg
ZmFpbHVyZSBtZXNzYWdlLiBZb3UgbWF5IGFsc28gc3VwcGx5IGEgY3VzdG9tIGZhaWx1cmUgbWVz
c2FnZQord2hpY2ggd2lsbCBiZSBhcHBlbmRlZCB0byBHb29nbGUgVGVzdCdzIG1lc3NhZ2UuCisK
K1RoZSBhc3NlcnRpb25zIGNvbWUgaW4gcGFpcnMgdGhhdCB0ZXN0IHRoZSBzYW1lIHRoaW5nIGJ1
dCBoYXZlIGRpZmZlcmVudAorZWZmZWN0cyBvbiB0aGUgY3VycmVudCBmdW5jdGlvbi4gYEFTU0VS
VF8qYCB2ZXJzaW9ucyBnZW5lcmF0ZSBmYXRhbCBmYWlsdXJlcword2hlbiB0aGV5IGZhaWwsIGFu
ZCAqKmFib3J0IHRoZSBjdXJyZW50IGZ1bmN0aW9uKiouIGBFWFBFQ1RfKmAgdmVyc2lvbnMgZ2Vu
ZXJhdGUKK25vbmZhdGFsIGZhaWx1cmVzLCB3aGljaCBkb24ndCBhYm9ydCB0aGUgY3VycmVudCBm
dW5jdGlvbi4gVXN1YWxseSBgRVhQRUNUXypgCithcmUgcHJlZmVycmVkLCBhcyB0aGV5IGFsbG93
IG1vcmUgdGhhbiBvbmUgZmFpbHVyZXMgdG8gYmUgcmVwb3J0ZWQgaW4gYSB0ZXN0LgorSG93ZXZl
ciwgeW91IHNob3VsZCB1c2UgYEFTU0VSVF8qYCBpZiBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8g
Y29udGludWUgd2hlbgordGhlIGFzc2VydGlvbiBpbiBxdWVzdGlvbiBmYWlscy4KKworU2luY2Ug
YSBmYWlsZWQgYEFTU0VSVF8qYCByZXR1cm5zIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gaW1t
ZWRpYXRlbHksCitwb3NzaWJseSBza2lwcGluZyBjbGVhbi11cCBjb2RlIHRoYXQgY29tZXMgYWZ0
ZXIgaXQsIGl0IG1heSBjYXVzZSBhIHNwYWNlIGxlYWsuCitEZXBlbmRpbmcgb24gdGhlIG5hdHVy
ZSBvZiB0aGUgbGVhaywgaXQgbWF5IG9yIG1heSBub3QgYmUgd29ydGggZml4aW5nIC0gc28KK2tl
ZXAgdGhpcyBpbiBtaW5kIGlmIHlvdSBnZXQgYSBoZWFwIGNoZWNrZXIgZXJyb3IgaW4gYWRkaXRp
b24gdG8gYXNzZXJ0aW9uCitlcnJvcnMuCisKK1RvIHByb3ZpZGUgYSBjdXN0b20gZmFpbHVyZSBt
ZXNzYWdlLCBzaW1wbHkgc3RyZWFtIGl0IGludG8gdGhlIG1hY3JvIHVzaW5nIHRoZQorYDw8YCBv
cGVyYXRvciwgb3IgYSBzZXF1ZW5jZSBvZiBzdWNoIG9wZXJhdG9ycy4gQW4gZXhhbXBsZToKK2Bg
YAorQVNTRVJUX0VRKHguc2l6ZSgpLCB5LnNpemUoKSkgPDwgIlZlY3RvcnMgeCBhbmQgeSBhcmUg
b2YgdW5lcXVhbCBsZW5ndGgiOworCitmb3IgKGludCBpID0gMDsgaSA8IHguc2l6ZSgpOyArK2kp
IHsKKyAgRVhQRUNUX0VRKHhbaV0sIHlbaV0pIDw8ICJWZWN0b3JzIHggYW5kIHkgZGlmZmVyIGF0
IGluZGV4ICIgPDwgaTsKK30KK2BgYAorCitBbnl0aGluZyB0aGF0IGNhbiBiZSBzdHJlYW1lZCB0
byBhbiBgb3N0cmVhbWAgY2FuIGJlIHN0cmVhbWVkIHRvIGFuIGFzc2VydGlvbgorbWFjcm8tLWlu
IHBhcnRpY3VsYXIsIEMgc3RyaW5ncyBhbmQgYHN0cmluZ2Agb2JqZWN0cy4gSWYgYSB3aWRlIHN0
cmluZworKGB3Y2hhcl90KmAsIGBUQ0hBUipgIGluIGBVTklDT0RFYCBtb2RlIG9uIFdpbmRvd3Ms
IG9yIGBzdGQ6OndzdHJpbmdgKSBpcworc3RyZWFtZWQgdG8gYW4gYXNzZXJ0aW9uLCBpdCB3aWxs
IGJlIHRyYW5zbGF0ZWQgdG8gVVRGLTggd2hlbiBwcmludGVkLgorCisjIyBCYXNpYyBBc3NlcnRp
b25zICMjCisKK1RoZXNlIGFzc2VydGlvbnMgZG8gYmFzaWMgdHJ1ZS9mYWxzZSBjb25kaXRpb24g
dGVzdGluZy4KK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiog
fCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfVFJVRShgX2NvbmRpdGlvbl9gKWA7
ICB8IGBFWFBFQ1RfVFJVRShgX2NvbmRpdGlvbl9gKWA7ICAgfCBfY29uZGl0aW9uXyBpcyB0cnVl
IHwKK3wgYEFTU0VSVF9GQUxTRShgX2NvbmRpdGlvbl9gKWA7IHwgYEVYUEVDVF9GQUxTRShgX2Nv
bmRpdGlvbl9gKWA7ICB8IF9jb25kaXRpb25fIGlzIGZhbHNlIHwKKworUmVtZW1iZXIsIHdoZW4g
dGhleSBmYWlsLCBgQVNTRVJUXypgIHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUgYW5kCityZXR1cm5z
IGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24sIHdoaWxlIGBFWFBFQ1RfKmAgeWllbGRzIGEgbm9u
ZmF0YWwKK2ZhaWx1cmUsIGFsbG93aW5nIHRoZSBmdW5jdGlvbiB0byBjb250aW51ZSBydW5uaW5n
LiBJbiBlaXRoZXIgY2FzZSwgYW4KK2Fzc2VydGlvbiBmYWlsdXJlIG1lYW5zIGl0cyBjb250YWlu
aW5nIHRlc3QgZmFpbHMuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgor
CisjIyBCaW5hcnkgQ29tcGFyaXNvbiAjIworCitUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGFzc2Vy
dGlvbnMgdGhhdCBjb21wYXJlIHR3byB2YWx1ZXMuCisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8
ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8YEFTU0VS
VF9FUShgX2V4cGVjdGVkX2AsIGBfYWN0dWFsX2ApO2B8YEVYUEVDVF9FUShgX2V4cGVjdGVkX2As
IGBfYWN0dWFsX2ApO2B8IF9leHBlY3RlZF8gYD09YCBfYWN0dWFsXyB8Cit8YEFTU0VSVF9ORShg
X3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9ORShgX3ZhbDFfYCwgYF92YWwyX2Ap
O2AgICAgICB8IF92YWwxXyBgIT1gIF92YWwyXyB8Cit8YEFTU0VSVF9MVChgX3ZhbDFfYCwgYF92
YWwyX2ApO2AgICAgICB8YEVYUEVDVF9MVChgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8IF92
YWwxXyBgPGAgX3ZhbDJfIHwKK3xgQVNTRVJUX0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAg
IHxgRVhQRUNUX0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA8PWAgX3Zh
bDJfIHwKK3xgQVNTRVJUX0dUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHxgRVhQRUNUX0dU
KGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA+YCBfdmFsMl8gfAorfGBBU1NF
UlRfR0UoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfGBFWFBFQ1RfR0UoYF92YWwxX2AsIGBf
dmFsMl9gKTtgICAgICAgfCBfdmFsMV8gYD49YCBfdmFsMl8gfAorCitJbiB0aGUgZXZlbnQgb2Yg
YSBmYWlsdXJlLCBHb29nbGUgVGVzdCBwcmludHMgYm90aCBfdmFsMV8gYW5kIF92YWwyXworLiBJ
biBgQVNTRVJUX0VRKmAgYW5kIGBFWFBFQ1RfRVEqYCAoYW5kIGFsbCBvdGhlciBlcXVhbGl0eSBh
c3NlcnRpb25zCit3ZSdsbCBpbnRyb2R1Y2UgbGF0ZXIpLCB5b3Ugc2hvdWxkIHB1dCB0aGUgZXhw
cmVzc2lvbiB5b3Ugd2FudCB0byB0ZXN0CitpbiB0aGUgcG9zaXRpb24gb2YgX2FjdHVhbF8sIGFu
ZCBwdXQgaXRzIGV4cGVjdGVkIHZhbHVlIGluIF9leHBlY3RlZF8sCithcyBHb29nbGUgVGVzdCdz
IGZhaWx1cmUgbWVzc2FnZXMgYXJlIG9wdGltaXplZCBmb3IgdGhpcyBjb252ZW50aW9uLgorCitW
YWx1ZSBhcmd1bWVudHMgbXVzdCBiZSBjb21wYXJhYmxlIGJ5IHRoZSBhc3NlcnRpb24ncyBjb21w
YXJpc29uCitvcGVyYXRvciBvciB5b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IuICBXZSB1c2Vk
IHRvIHJlcXVpcmUgdGhlCithcmd1bWVudHMgdG8gc3VwcG9ydCB0aGUgYDw8YCBvcGVyYXRvciBm
b3Igc3RyZWFtaW5nIHRvIGFuIGBvc3RyZWFtYCwKK2J1dCBpdCdzIG5vIGxvbmdlciBuZWNlc3Nh
cnkgc2luY2UgdjEuNi4wIChpZiBgPDxgIGlzIHN1cHBvcnRlZCwgaXQKK3dpbGwgYmUgY2FsbGVk
IHRvIHByaW50IHRoZSBhcmd1bWVudHMgd2hlbiB0aGUgYXNzZXJ0aW9uIGZhaWxzOworb3RoZXJ3
aXNlIEdvb2dsZSBUZXN0IHdpbGwgYXR0ZW1wdCB0byBwcmludCB0aGVtIGluIHRoZSBiZXN0IHdh
eSBpdAorY2FuLiBGb3IgbW9yZSBkZXRhaWxzIGFuZCBob3cgdG8gY3VzdG9taXplIHRoZSBwcmlu
dGluZyBvZiB0aGUKK2FyZ3VtZW50cywgc2VlIHRoaXMgR29vZ2xlIE1vY2sgW3JlY2lwZV0oLi4v
Li4vZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3RlYWNoaW5nLWdvb2dsZS1tb2NrLWhvdy10
by1wcmludC15b3VyLXZhbHVlcykuKS4KKworVGhlc2UgYXNzZXJ0aW9ucyBjYW4gd29yayB3aXRo
IGEgdXNlci1kZWZpbmVkIHR5cGUsIGJ1dCBvbmx5IGlmIHlvdSBkZWZpbmUgdGhlCitjb3JyZXNw
b25kaW5nIGNvbXBhcmlzb24gb3BlcmF0b3IgKGUuZy4gYD09YCwgYDxgLCBldGMpLiAgSWYgdGhl
IGNvcnJlc3BvbmRpbmcKK29wZXJhdG9yIGlzIGRlZmluZWQsIHByZWZlciB1c2luZyB0aGUgYEFT
U0VSVF8qKClgIG1hY3JvcyBiZWNhdXNlIHRoZXkgd2lsbAorcHJpbnQgb3V0IG5vdCBvbmx5IHRo
ZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24sIGJ1dCB0aGUgdHdvIG9wZXJhbmRzIGFzIHdlbGwu
CisKK0FyZ3VtZW50cyBhcmUgYWx3YXlzIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuIFRoZXJlZm9y
ZSwgaXQncyBPSyBmb3IgdGhlCithcmd1bWVudHMgdG8gaGF2ZSBzaWRlIGVmZmVjdHMuIEhvd2V2
ZXIsIGFzIHdpdGggYW55IG9yZGluYXJ5IEMvQysrIGZ1bmN0aW9uLAordGhlIGFyZ3VtZW50cycg
ZXZhbHVhdGlvbiBvcmRlciBpcyB1bmRlZmluZWQgKGkuZS4gdGhlIGNvbXBpbGVyIGlzIGZyZWUg
dG8KK2Nob29zZSBhbnkgb3JkZXIpIGFuZCB5b3VyIGNvZGUgc2hvdWxkIG5vdCBkZXBlbmQgb24g
YW55IHBhcnRpY3VsYXIgYXJndW1lbnQKK2V2YWx1YXRpb24gb3JkZXIuCisKK2BBU1NFUlRfRVEo
KWAgZG9lcyBwb2ludGVyIGVxdWFsaXR5IG9uIHBvaW50ZXJzLiBJZiB1c2VkIG9uIHR3byBDIHN0
cmluZ3MsIGl0Cit0ZXN0cyBpZiB0aGV5IGFyZSBpbiB0aGUgc2FtZSBtZW1vcnkgbG9jYXRpb24s
IG5vdCBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgdmFsdWUuCitUaGVyZWZvcmUsIGlmIHlvdSB3YW50
IHRvIGNvbXBhcmUgQyBzdHJpbmdzIChlLmcuIGBjb25zdCBjaGFyKmApIGJ5IHZhbHVlLCB1c2UK
K2BBU1NFUlRfU1RSRVEoKWAgLCB3aGljaCB3aWxsIGJlIGRlc2NyaWJlZCBsYXRlciBvbi4gSW4g
cGFydGljdWxhciwgdG8gYXNzZXJ0Cit0aGF0IGEgQyBzdHJpbmcgaXMgYE5VTExgLCB1c2UgYEFT
U0VSVF9TVFJFUShOVUxMLCBjX3N0cmluZylgIC4gSG93ZXZlciwgdG8KK2NvbXBhcmUgdHdvIGBz
dHJpbmdgIG9iamVjdHMsIHlvdSBzaG91bGQgdXNlIGBBU1NFUlRfRVFgLgorCitNYWNyb3MgaW4g
dGhpcyBzZWN0aW9uIHdvcmsgd2l0aCBib3RoIG5hcnJvdyBhbmQgd2lkZSBzdHJpbmcgb2JqZWN0
cyAoYHN0cmluZ2AKK2FuZCBgd3N0cmluZ2ApLgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdp
bmRvd3MsIE1hYy4KKworIyMgU3RyaW5nIENvbXBhcmlzb24gIyMKKworVGhlIGFzc2VydGlvbnMg
aW4gdGhpcyBncm91cCBjb21wYXJlIHR3byAqKkMgc3RyaW5ncyoqLiBJZiB5b3Ugd2FudCB0byBj
b21wYXJlCit0d28gYHN0cmluZ2Agb2JqZWN0cywgdXNlIGBFWFBFQ1RfRVFgLCBgRVhQRUNUX05F
YCwgYW5kIGV0YyBpbnN0ZWFkLgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFs
IGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX1NUUkVRKGBf
ZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgICAgfCBgRVhQRUNUX1NUUkVRKGBf
ZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgICAgIHwgdGhlIHR3byBDIHN0cmlu
Z3MgaGF2ZSB0aGUgc2FtZSBjb250ZW50IHwKK3wgYEFTU0VSVF9TVFJORShgX3N0cjFfYCwgYF9z
dHIyX2ApO2AgICAgfCBgRVhQRUNUX1NUUk5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YCAgICAgfCB0
aGUgdHdvIEMgc3RyaW5ncyBoYXZlIGRpZmZlcmVudCBjb250ZW50IHwKK3wgYEFTU0VSVF9TVFJD
QVNFRVEoYF9leHBlY3RlZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YHwgYEVYUEVDVF9TVFJD
QVNFRVEoYF9leHBlY3RlZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YCB8IHRoZSB0d28gQyBz
dHJpbmdzIGhhdmUgdGhlIHNhbWUgY29udGVudCwgaWdub3JpbmcgY2FzZSB8Cit8IGBBU1NFUlRf
U1RSQ0FTRU5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YHwgYEVYUEVDVF9TVFJDQVNFTkUoYF9zdHIx
X2AsIGBfc3RyMl9gKTtgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSBkaWZmZXJlbnQgY29udGVu
dCwgaWdub3JpbmcgY2FzZSB8CisKK05vdGUgdGhhdCAiQ0FTRSIgaW4gYW4gYXNzZXJ0aW9uIG5h
bWUgbWVhbnMgdGhhdCBjYXNlIGlzIGlnbm9yZWQuCisKK2AqU1RSRVEqYCBhbmQgYCpTVFJORSpg
IGFsc28gYWNjZXB0IHdpZGUgQyBzdHJpbmdzIChgd2NoYXJfdCpgKS4gSWYgYQorY29tcGFyaXNv
biBvZiB0d28gd2lkZSBzdHJpbmdzIGZhaWxzLCB0aGVpciB2YWx1ZXMgd2lsbCBiZSBwcmludGVk
IGFzIFVURi04CituYXJyb3cgc3RyaW5ncy4KKworQSBgTlVMTGAgcG9pbnRlciBhbmQgYW4gZW1w
dHkgc3RyaW5nIGFyZSBjb25zaWRlcmVkIF9kaWZmZXJlbnRfLgorCitfQXZhaWxhYmlsaXR5Xzog
TGludXgsIFdpbmRvd3MsIE1hYy4KKworU2VlIGFsc286IEZvciBtb3JlIHN0cmluZyBjb21wYXJp
c29uIHRyaWNrcyAoc3Vic3RyaW5nLCBwcmVmaXgsIHN1ZmZpeCwgYW5kCityZWd1bGFyIGV4cHJl
c3Npb24gbWF0Y2hpbmcsIGZvciBleGFtcGxlKSwgc2VlIHRoZSBbQWR2YW5jZWQgR29vZ2xlIFRl
c3QgR3VpZGVdKFYxXzZfQWR2YW5jZWRHdWlkZS5tZCkuCisKKyMgU2ltcGxlIFRlc3RzICMKKwor
VG8gY3JlYXRlIGEgdGVzdDoKKyAgMS4gVXNlIHRoZSBgVEVTVCgpYCBtYWNybyB0byBkZWZpbmUg
YW5kIG5hbWUgYSB0ZXN0IGZ1bmN0aW9uLCBUaGVzZSBhcmUgb3JkaW5hcnkgQysrIGZ1bmN0aW9u
cyB0aGF0IGRvbid0IHJldHVybiBhIHZhbHVlLgorICAxLiBJbiB0aGlzIGZ1bmN0aW9uLCBhbG9u
ZyB3aXRoIGFueSB2YWxpZCBDKysgc3RhdGVtZW50cyB5b3Ugd2FudCB0byBpbmNsdWRlLCB1c2Ug
dGhlIHZhcmlvdXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyB0byBjaGVjayB2YWx1ZXMuCisgIDEu
IFRoZSB0ZXN0J3MgcmVzdWx0IGlzIGRldGVybWluZWQgYnkgdGhlIGFzc2VydGlvbnM7IGlmIGFu
eSBhc3NlcnRpb24gaW4gdGhlIHRlc3QgZmFpbHMgKGVpdGhlciBmYXRhbGx5IG9yIG5vbi1mYXRh
bGx5KSwgb3IgaWYgdGhlIHRlc3QgY3Jhc2hlcywgdGhlIGVudGlyZSB0ZXN0IGZhaWxzLiBPdGhl
cndpc2UsIGl0IHN1Y2NlZWRzLgorCitgYGAKK1RFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFt
ZSkgeworIC4uLiB0ZXN0IGJvZHkgLi4uCit9CitgYGAKKworCitgVEVTVCgpYCBhcmd1bWVudHMg
Z28gZnJvbSBnZW5lcmFsIHRvIHNwZWNpZmljLiBUaGUgX2ZpcnN0XyBhcmd1bWVudCBpcyB0aGUK
K25hbWUgb2YgdGhlIHRlc3QgY2FzZSwgYW5kIHRoZSBfc2Vjb25kXyBhcmd1bWVudCBpcyB0aGUg
dGVzdCdzIG5hbWUgd2l0aGluIHRoZQordGVzdCBjYXNlLiBCb3RoIG5hbWVzIG11c3QgYmUgdmFs
aWQgQysrIGlkZW50aWZpZXJzLCBhbmQgdGhleSBzaG91bGQgbm90IGNvbnRhaW4gdW5kZXJzY29y
ZSAoYF9gKS4gQSB0ZXN0J3MgX2Z1bGwgbmFtZV8gY29uc2lzdHMgb2YgaXRzIGNvbnRhaW5pbmcg
dGVzdCBjYXNlIGFuZCBpdHMKK2luZGl2aWR1YWwgbmFtZS4gVGVzdHMgZnJvbSBkaWZmZXJlbnQg
dGVzdCBjYXNlcyBjYW4gaGF2ZSB0aGUgc2FtZSBpbmRpdmlkdWFsCituYW1lLgorCitGb3IgZXhh
bXBsZSwgbGV0J3MgdGFrZSBhIHNpbXBsZSBpbnRlZ2VyIGZ1bmN0aW9uOgorYGBgCitpbnQgRmFj
dG9yaWFsKGludCBuKTsgLy8gUmV0dXJucyB0aGUgZmFjdG9yaWFsIG9mIG4KK2BgYAorCitBIHRl
c3QgY2FzZSBmb3IgdGhpcyBmdW5jdGlvbiBtaWdodCBsb29rIGxpa2U6CitgYGAKKy8vIFRlc3Rz
IGZhY3RvcmlhbCBvZiAwLgorVEVTVChGYWN0b3JpYWxUZXN0LCBIYW5kbGVzWmVyb0lucHV0KSB7
CisgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoMCkpOworfQorCisvLyBUZXN0cyBmYWN0b3JpYWwg
b2YgcG9zaXRpdmUgbnVtYmVycy4KK1RFU1QoRmFjdG9yaWFsVGVzdCwgSGFuZGxlc1Bvc2l0aXZl
SW5wdXQpIHsKKyAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgxKSk7CisgIEVYUEVDVF9FUSgyLCBG
YWN0b3JpYWwoMikpOworICBFWFBFQ1RfRVEoNiwgRmFjdG9yaWFsKDMpKTsKKyAgRVhQRUNUX0VR
KDQwMzIwLCBGYWN0b3JpYWwoOCkpOworfQorYGBgCisKK0dvb2dsZSBUZXN0IGdyb3VwcyB0aGUg
dGVzdCByZXN1bHRzIGJ5IHRlc3QgY2FzZXMsIHNvIGxvZ2ljYWxseS1yZWxhdGVkIHRlc3RzCitz
aG91bGQgYmUgaW4gdGhlIHNhbWUgdGVzdCBjYXNlOyBpbiBvdGhlciB3b3JkcywgdGhlIGZpcnN0
IGFyZ3VtZW50IHRvIHRoZWlyCitgVEVTVCgpYCBzaG91bGQgYmUgdGhlIHNhbWUuIEluIHRoZSBh
Ym92ZSBleGFtcGxlLCB3ZSBoYXZlIHR3byB0ZXN0cywKK2BIYW5kbGVzWmVyb0lucHV0YCBhbmQg
YEhhbmRsZXNQb3NpdGl2ZUlucHV0YCwgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUgdGVzdAorY2Fz
ZSBgRmFjdG9yaWFsVGVzdGAuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFj
LgorCisjIFRlc3QgRml4dHVyZXM6IFVzaW5nIHRoZSBTYW1lIERhdGEgQ29uZmlndXJhdGlvbiBm
b3IgTXVsdGlwbGUgVGVzdHMgIworCitJZiB5b3UgZmluZCB5b3Vyc2VsZiB3cml0aW5nIHR3byBv
ciBtb3JlIHRlc3RzIHRoYXQgb3BlcmF0ZSBvbiBzaW1pbGFyIGRhdGEsCit5b3UgY2FuIHVzZSBh
IF90ZXN0IGZpeHR1cmVfLiBJdCBhbGxvd3MgeW91IHRvIHJldXNlIHRoZSBzYW1lIGNvbmZpZ3Vy
YXRpb24gb2YKK29iamVjdHMgZm9yIHNldmVyYWwgZGlmZmVyZW50IHRlc3RzLgorCitUbyBjcmVh
dGUgYSBmaXh0dXJlLCBqdXN0OgorICAxLiBEZXJpdmUgYSBjbGFzcyBmcm9tIGA6OnRlc3Rpbmc6
OlRlc3RgIC4gU3RhcnQgaXRzIGJvZHkgd2l0aCBgcHJvdGVjdGVkOmAgb3IgYHB1YmxpYzpgIGFz
IHdlJ2xsIHdhbnQgdG8gYWNjZXNzIGZpeHR1cmUgbWVtYmVycyBmcm9tIHN1Yi1jbGFzc2VzLgor
ICAxLiBJbnNpZGUgdGhlIGNsYXNzLCBkZWNsYXJlIGFueSBvYmplY3RzIHlvdSBwbGFuIHRvIHVz
ZS4KKyAgMS4gSWYgbmVjZXNzYXJ5LCB3cml0ZSBhIGRlZmF1bHQgY29uc3RydWN0b3Igb3IgYFNl
dFVwKClgIGZ1bmN0aW9uIHRvIHByZXBhcmUgdGhlIG9iamVjdHMgZm9yIGVhY2ggdGVzdC4gQSBj
b21tb24gbWlzdGFrZSBpcyB0byBzcGVsbCBgU2V0VXAoKWAgYXMgYFNldHVwKClgIHdpdGggYSBz
bWFsbCBgdWAgLSBkb24ndCBsZXQgdGhhdCBoYXBwZW4gdG8geW91LgorICAxLiBJZiBuZWNlc3Nh
cnksIHdyaXRlIGEgZGVzdHJ1Y3RvciBvciBgVGVhckRvd24oKWAgZnVuY3Rpb24gdG8gcmVsZWFz
ZSBhbnkgcmVzb3VyY2VzIHlvdSBhbGxvY2F0ZWQgaW4gYFNldFVwKClgIC4gVG8gbGVhcm4gd2hl
biB5b3Ugc2hvdWxkIHVzZSB0aGUgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBhbmQgd2hlbiB5b3Ug
c2hvdWxkIHVzZSBgU2V0VXAoKS9UZWFyRG93bigpYCwgcmVhZCB0aGlzIFtGQVEgZW50cnldKFYx
XzZfRkFRLm1kI3Nob3VsZC1pLXVzZS10aGUtY29uc3RydWN0b3JkZXN0cnVjdG9yLW9mLXRoZS10
ZXN0LWZpeHR1cmUtb3ItdGhlLXNldC11cHRlYXItZG93bi1mdW5jdGlvbikuCisgIDEuIElmIG5l
ZWRlZCwgZGVmaW5lIHN1YnJvdXRpbmVzIGZvciB5b3VyIHRlc3RzIHRvIHNoYXJlLgorCitXaGVu
IHVzaW5nIGEgZml4dHVyZSwgdXNlIGBURVNUX0YoKWAgaW5zdGVhZCBvZiBgVEVTVCgpYCBhcyBp
dCBhbGxvd3MgeW91IHRvCithY2Nlc3Mgb2JqZWN0cyBhbmQgc3Vicm91dGluZXMgaW4gdGhlIHRl
c3QgZml4dHVyZToKK2BgYAorVEVTVF9GKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIHsKKyAu
Li4gdGVzdCBib2R5IC4uLgorfQorYGBgCisKK0xpa2UgYFRFU1QoKWAsIHRoZSBmaXJzdCBhcmd1
bWVudCBpcyB0aGUgdGVzdCBjYXNlIG5hbWUsIGJ1dCBmb3IgYFRFU1RfRigpYAordGhpcyBtdXN0
IGJlIHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuIFlvdSd2ZSBwcm9iYWJseSBn
dWVzc2VkOiBgX0ZgCitpcyBmb3IgZml4dHVyZS4KKworVW5mb3J0dW5hdGVseSwgdGhlIEMrKyBt
YWNybyBzeXN0ZW0gZG9lcyBub3QgYWxsb3cgdXMgdG8gY3JlYXRlIGEgc2luZ2xlIG1hY3JvCit0
aGF0IGNhbiBoYW5kbGUgYm90aCB0eXBlcyBvZiB0ZXN0cy4gVXNpbmcgdGhlIHdyb25nIG1hY3Jv
IGNhdXNlcyBhIGNvbXBpbGVyCitlcnJvci4KKworQWxzbywgeW91IG11c3QgZmlyc3QgZGVmaW5l
IGEgdGVzdCBmaXh0dXJlIGNsYXNzIGJlZm9yZSB1c2luZyBpdCBpbiBhCitgVEVTVF9GKClgLCBv
ciB5b3UnbGwgZ2V0IHRoZSBjb21waWxlciBlcnJvciAiYHZpcnR1YWwgb3V0c2lkZSBjbGFzcwor
ZGVjbGFyYXRpb25gIi4KKworRm9yIGVhY2ggdGVzdCBkZWZpbmVkIHdpdGggYFRFU1RfRigpYCwg
R29vZ2xlIFRlc3Qgd2lsbDoKKyAgMS4gQ3JlYXRlIGEgX2ZyZXNoXyB0ZXN0IGZpeHR1cmUgYXQg
cnVudGltZQorICAxLiBJbW1lZGlhdGVseSBpbml0aWFsaXplIGl0IHZpYSBgU2V0VXAoKWAgLAor
ICAxLiBSdW4gdGhlIHRlc3QKKyAgMS4gQ2xlYW4gdXAgYnkgY2FsbGluZyBgVGVhckRvd24oKWAK
KyAgMS4gRGVsZXRlIHRoZSB0ZXN0IGZpeHR1cmUuICBOb3RlIHRoYXQgZGlmZmVyZW50IHRlc3Rz
IGluIHRoZSBzYW1lIHRlc3QgY2FzZSBoYXZlIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgb2JqZWN0
cywgYW5kIEdvb2dsZSBUZXN0IGFsd2F5cyBkZWxldGVzIGEgdGVzdCBmaXh0dXJlIGJlZm9yZSBp
dCBjcmVhdGVzIHRoZSBuZXh0IG9uZS4gR29vZ2xlIFRlc3QgZG9lcyBub3QgcmV1c2UgdGhlIHNh
bWUgdGVzdCBmaXh0dXJlIGZvciBtdWx0aXBsZSB0ZXN0cy4gQW55IGNoYW5nZXMgb25lIHRlc3Qg
bWFrZXMgdG8gdGhlIGZpeHR1cmUgZG8gbm90IGFmZmVjdCBvdGhlciB0ZXN0cy4KKworQXMgYW4g
ZXhhbXBsZSwgbGV0J3Mgd3JpdGUgdGVzdHMgZm9yIGEgRklGTyBxdWV1ZSBjbGFzcyBuYW1lZCBg
UXVldWVgLCB3aGljaAoraGFzIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlOgorYGBgCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgRT4gLy8gRSBpcyB0aGUgZWxlbWVudCB0eXBlLgorY2xhc3MgUXVldWUgewor
IHB1YmxpYzoKKyAgUXVldWUoKTsKKyAgdm9pZCBFbnF1ZXVlKGNvbnN0IEUmIGVsZW1lbnQpOwor
ICBFKiBEZXF1ZXVlKCk7IC8vIFJldHVybnMgTlVMTCBpZiB0aGUgcXVldWUgaXMgZW1wdHkuCisg
IHNpemVfdCBzaXplKCkgY29uc3Q7CisgIC4uLgorfTsKK2BgYAorCitGaXJzdCwgZGVmaW5lIGEg
Zml4dHVyZSBjbGFzcy4gQnkgY29udmVudGlvbiwgeW91IHNob3VsZCBnaXZlIGl0IHRoZSBuYW1l
CitgRm9vVGVzdGAgd2hlcmUgYEZvb2AgaXMgdGhlIGNsYXNzIGJlaW5nIHRlc3RlZC4KK2BgYAor
Y2xhc3MgUXVldWVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgor
ICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgcTFfLkVucXVldWUoMSk7CisgICAgcTJfLkVu
cXVldWUoMik7CisgICAgcTJfLkVucXVldWUoMyk7CisgIH0KKworICAvLyB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKSB7fQorCisgIFF1ZXVlPGludD4gcTBfOworICBRdWV1ZTxpbnQ+IHExXzsKKyAg
UXVldWU8aW50PiBxMl87Cit9OworYGBgCisKK0luIHRoaXMgY2FzZSwgYFRlYXJEb3duKClgIGlz
IG5vdCBuZWVkZWQgc2luY2Ugd2UgZG9uJ3QgaGF2ZSB0byBjbGVhbiB1cCBhZnRlcgorZWFjaCB0
ZXN0LCBvdGhlciB0aGFuIHdoYXQncyBhbHJlYWR5IGRvbmUgYnkgdGhlIGRlc3RydWN0b3IuCisK
K05vdyB3ZSdsbCB3cml0ZSB0ZXN0cyB1c2luZyBgVEVTVF9GKClgIGFuZCB0aGlzIGZpeHR1cmUu
CitgYGAKK1RFU1RfRihRdWV1ZVRlc3QsIElzRW1wdHlJbml0aWFsbHkpIHsKKyAgRVhQRUNUX0VR
KDAsIHEwXy5zaXplKCkpOworfQorCitURVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVlV29ya3MpIHsK
KyAgaW50KiBuID0gcTBfLkRlcXVldWUoKTsKKyAgRVhQRUNUX0VRKE5VTEwsIG4pOworCisgIG4g
PSBxMV8uRGVxdWV1ZSgpOworICBBU1NFUlRfVFJVRShuICE9IE5VTEwpOworICBFWFBFQ1RfRVEo
MSwgKm4pOworICBFWFBFQ1RfRVEoMCwgcTFfLnNpemUoKSk7CisgIGRlbGV0ZSBuOworCisgIG4g
PSBxMl8uRGVxdWV1ZSgpOworICBBU1NFUlRfVFJVRShuICE9IE5VTEwpOworICBFWFBFQ1RfRVEo
MiwgKm4pOworICBFWFBFQ1RfRVEoMSwgcTJfLnNpemUoKSk7CisgIGRlbGV0ZSBuOworfQorYGBg
CisKK1RoZSBhYm92ZSB1c2VzIGJvdGggYEFTU0VSVF8qYCBhbmQgYEVYUEVDVF8qYCBhc3NlcnRp
b25zLiBUaGUgcnVsZSBvZiB0aHVtYiBpcwordG8gdXNlIGBFWFBFQ1RfKmAgd2hlbiB5b3Ugd2Fu
dCB0aGUgdGVzdCB0byBjb250aW51ZSB0byByZXZlYWwgbW9yZSBlcnJvcnMKK2FmdGVyIHRoZSBh
c3NlcnRpb24gZmFpbHVyZSwgYW5kIHVzZSBgQVNTRVJUXypgIHdoZW4gY29udGludWluZyBhZnRl
ciBmYWlsdXJlCitkb2Vzbid0IG1ha2Ugc2Vuc2UuIEZvciBleGFtcGxlLCB0aGUgc2Vjb25kIGFz
c2VydGlvbiBpbiB0aGUgYERlcXVldWVgIHRlc3QgaXMKK2BBU1NFUlRfVFJVRShuICE9IE5VTEwp
YCwgYXMgd2UgbmVlZCB0byBkZXJlZmVyZW5jZSB0aGUgcG9pbnRlciBgbmAgbGF0ZXIsCit3aGlj
aCB3b3VsZCBsZWFkIHRvIGEgc2VnZmF1bHQgd2hlbiBgbmAgaXMgYE5VTExgLgorCitXaGVuIHRo
ZXNlIHRlc3RzIHJ1biwgdGhlIGZvbGxvd2luZyBoYXBwZW5zOgorICAxLiBHb29nbGUgVGVzdCBj
b25zdHJ1Y3RzIGEgYFF1ZXVlVGVzdGAgb2JqZWN0IChsZXQncyBjYWxsIGl0IGB0MWAgKS4KKyAg
MS4gYHQxLlNldFVwKClgIGluaXRpYWxpemVzIGB0MWAgLgorICAxLiBUaGUgZmlyc3QgdGVzdCAo
IGBJc0VtcHR5SW5pdGlhbGx5YCApIHJ1bnMgb24gYHQxYCAuCisgIDEuIGB0MS5UZWFyRG93bigp
YCBjbGVhbnMgdXAgYWZ0ZXIgdGhlIHRlc3QgZmluaXNoZXMuCisgIDEuIGB0MWAgaXMgZGVzdHJ1
Y3RlZC4KKyAgMS4gVGhlIGFib3ZlIHN0ZXBzIGFyZSByZXBlYXRlZCBvbiBhbm90aGVyIGBRdWV1
ZVRlc3RgIG9iamVjdCwgdGhpcyB0aW1lIHJ1bm5pbmcgdGhlIGBEZXF1ZXVlV29ya3NgIHRlc3Qu
CisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCitfTm90ZV86IEdvb2ds
ZSBUZXN0IGF1dG9tYXRpY2FsbHkgc2F2ZXMgYWxsIF9Hb29nbGUgVGVzdF8gZmxhZ3Mgd2hlbiBh
IHRlc3QKK29iamVjdCBpcyBjb25zdHJ1Y3RlZCwgYW5kIHJlc3RvcmVzIHRoZW0gd2hlbiBpdCBp
cyBkZXN0cnVjdGVkLgorCisjIEludm9raW5nIHRoZSBUZXN0cyAjCisKK2BURVNUKClgIGFuZCBg
VEVTVF9GKClgIGltcGxpY2l0bHkgcmVnaXN0ZXIgdGhlaXIgdGVzdHMgd2l0aCBHb29nbGUgVGVz
dC4gU28sIHVubGlrZSB3aXRoIG1hbnkgb3RoZXIgQysrIHRlc3RpbmcgZnJhbWV3b3JrcywgeW91
IGRvbid0IGhhdmUgdG8gcmUtbGlzdCBhbGwgeW91ciBkZWZpbmVkIHRlc3RzIGluIG9yZGVyIHRv
IHJ1biB0aGVtLgorCitBZnRlciBkZWZpbmluZyB5b3VyIHRlc3RzLCB5b3UgY2FuIHJ1biB0aGVt
IHdpdGggYFJVTl9BTExfVEVTVFMoKWAgLCB3aGljaCByZXR1cm5zIGAwYCBpZiBhbGwgdGhlIHRl
c3RzIGFyZSBzdWNjZXNzZnVsLCBvciBgMWAgb3RoZXJ3aXNlLiBOb3RlIHRoYXQgYFJVTl9BTExf
VEVTVFMoKWAgcnVucyBfYWxsIHRlc3RzXyBpbiB5b3VyIGxpbmsgdW5pdCAtLSB0aGV5IGNhbiBi
ZSBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLCBvciBldmVuIGRpZmZlcmVudCBzb3VyY2UgZmls
ZXMuCisKK1doZW4gaW52b2tlZCwgdGhlIGBSVU5fQUxMX1RFU1RTKClgIG1hY3JvOgorICAxLiBT
YXZlcyB0aGUgc3RhdGUgb2YgYWxsICBHb29nbGUgVGVzdCBmbGFncy4KKyAgMS4gQ3JlYXRlcyBh
IHRlc3QgZml4dHVyZSBvYmplY3QgZm9yIHRoZSBmaXJzdCB0ZXN0LgorICAxLiBJbml0aWFsaXpl
cyBpdCB2aWEgYFNldFVwKClgLgorICAxLiBSdW5zIHRoZSB0ZXN0IG9uIHRoZSBmaXh0dXJlIG9i
amVjdC4KKyAgMS4gQ2xlYW5zIHVwIHRoZSBmaXh0dXJlIHZpYSBgVGVhckRvd24oKWAuCisgIDEu
IERlbGV0ZXMgdGhlIGZpeHR1cmUuCisgIDEuIFJlc3RvcmVzIHRoZSBzdGF0ZSBvZiBhbGwgR29v
Z2xlIFRlc3QgZmxhZ3MuCisgIDEuIFJlcGVhdHMgdGhlIGFib3ZlIHN0ZXBzIGZvciB0aGUgbmV4
dCB0ZXN0LCB1bnRpbCBhbGwgdGVzdHMgaGF2ZSBydW4uCisKK0luIGFkZGl0aW9uLCBpZiB0aGUg
dGV4dCBmaXh0dXJlJ3MgY29uc3RydWN0b3IgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSBpbgor
c3RlcCAyLCB0aGVyZSBpcyBubyBwb2ludCBmb3Igc3RlcCAzIC0gNSBhbmQgdGhleSBhcmUgdGh1
cyBza2lwcGVkLiBTaW1pbGFybHksCitpZiBzdGVwIDMgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVy
ZSwgc3RlcCA0IHdpbGwgYmUgc2tpcHBlZC4KKworX0ltcG9ydGFudF86IFlvdSBtdXN0IG5vdCBp
Z25vcmUgdGhlIHJldHVybiB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYCwgb3IgYGdjY2AKK3dp
bGwgZ2l2ZSB5b3UgYSBjb21waWxlciBlcnJvci4gVGhlIHJhdGlvbmFsZSBmb3IgdGhpcyBkZXNp
Z24gaXMgdGhhdCB0aGUKK2F1dG9tYXRlZCB0ZXN0aW5nIHNlcnZpY2UgZGV0ZXJtaW5lcyB3aGV0
aGVyIGEgdGVzdCBoYXMgcGFzc2VkIGJhc2VkIG9uIGl0cworZXhpdCBjb2RlLCBub3Qgb24gaXRz
IHN0ZG91dC9zdGRlcnIgb3V0cHV0OyB0aHVzIHlvdXIgYG1haW4oKWAgZnVuY3Rpb24gbXVzdAor
cmV0dXJuIHRoZSB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYC4KKworQWxzbywgeW91IHNob3Vs
ZCBjYWxsIGBSVU5fQUxMX1RFU1RTKClgIG9ubHkgKipvbmNlKiouIENhbGxpbmcgaXQgbW9yZSB0
aGFuIG9uY2UKK2NvbmZsaWN0cyB3aXRoIHNvbWUgYWR2YW5jZWQgR29vZ2xlIFRlc3QgZmVhdHVy
ZXMgKGUuZy4gdGhyZWFkLXNhZmUgZGVhdGgKK3Rlc3RzKSBhbmQgdGh1cyBpcyBub3Qgc3VwcG9y
dGVkLgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyBXcml0aW5n
IHRoZSBtYWluKCkgRnVuY3Rpb24gIworCitZb3UgY2FuIHN0YXJ0IGZyb20gdGhpcyBib2lsZXJw
bGF0ZToKK2BgYAorI2luY2x1ZGUgInRoaXMvcGFja2FnZS9mb28uaCIKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCisvLyBUaGUgZml4dHVyZSBmb3IgdGVzdGluZyBj
bGFzcyBGb28uCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJv
dGVjdGVkOgorICAvLyBZb3UgY2FuIHJlbW92ZSBhbnkgb3IgYWxsIG9mIHRoZSBmb2xsb3dpbmcg
ZnVuY3Rpb25zIGlmIGl0cyBib2R5CisgIC8vIGlzIGVtcHR5LgorCisgIEZvb1Rlc3QoKSB7Cisg
ICAgLy8gWW91IGNhbiBkbyBzZXQtdXAgd29yayBmb3IgZWFjaCB0ZXN0IGhlcmUuCisgIH0KKwor
ICB2aXJ0dWFsIH5Gb29UZXN0KCkgeworICAgIC8vIFlvdSBjYW4gZG8gY2xlYW4tdXAgd29yayB0
aGF0IGRvZXNuJ3QgdGhyb3cgZXhjZXB0aW9ucyBoZXJlLgorICB9CisKKyAgLy8gSWYgdGhlIGNv
bnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIGFyZSBub3QgZW5vdWdoIGZvciBzZXR0aW5nIHVwCisg
IC8vIGFuZCBjbGVhbmluZyB1cCBlYWNoIHRlc3QsIHlvdSBjYW4gZGVmaW5lIHRoZSBmb2xsb3dp
bmcgbWV0aG9kczoKKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgLy8gQ29kZSBoZXJl
IHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjb25zdHJ1Y3RvciAocmlnaHQK
KyAgICAvLyBiZWZvcmUgZWFjaCB0ZXN0KS4KKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93
bigpIHsKKyAgICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIg
ZWFjaCB0ZXN0IChyaWdodAorICAgIC8vIGJlZm9yZSB0aGUgZGVzdHJ1Y3RvcikuCisgIH0KKwor
ICAvLyBPYmplY3RzIGRlY2xhcmVkIGhlcmUgY2FuIGJlIHVzZWQgYnkgYWxsIHRlc3RzIGluIHRo
ZSB0ZXN0IGNhc2UgZm9yIEZvby4KK307CisKKy8vIFRlc3RzIHRoYXQgdGhlIEZvbzo6QmFyKCkg
bWV0aG9kIGRvZXMgQWJjLgorVEVTVF9GKEZvb1Rlc3QsIE1ldGhvZEJhckRvZXNBYmMpIHsKKyAg
Y29uc3Qgc3RyaW5nIGlucHV0X2ZpbGVwYXRoID0gInRoaXMvcGFja2FnZS90ZXN0ZGF0YS9teWlu
cHV0ZmlsZS5kYXQiOworICBjb25zdCBzdHJpbmcgb3V0cHV0X2ZpbGVwYXRoID0gInRoaXMvcGFj
a2FnZS90ZXN0ZGF0YS9teW91dHB1dGZpbGUuZGF0IjsKKyAgRm9vIGY7CisgIEVYUEVDVF9FUSgw
LCBmLkJhcihpbnB1dF9maWxlcGF0aCwgb3V0cHV0X2ZpbGVwYXRoKSk7Cit9CisKKy8vIFRlc3Rz
IHRoYXQgRm9vIGRvZXMgWHl6LgorVEVTVF9GKEZvb1Rlc3QsIERvZXNYeXopIHsKKyAgLy8gRXhl
cmNpc2VzIHRoZSBYeXogZmVhdHVyZSBvZiBGb28uCit9CisKK30gIC8vIG5hbWVzcGFjZQorCitp
bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xl
VGVzdCgmYXJnYywgYXJndik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CitgYGAKKwor
VGhlIGA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClgIGZ1bmN0aW9uIHBhcnNlcyB0aGUgY29t
bWFuZCBsaW5lIGZvciBHb29nbGUKK1Rlc3QgZmxhZ3MsIGFuZCByZW1vdmVzIGFsbCByZWNvZ25p
emVkIGZsYWdzLiBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBjb250cm9sIGEKK3Rlc3QgcHJvZ3Jh
bSdzIGJlaGF2aW9yIHZpYSB2YXJpb3VzIGZsYWdzLCB3aGljaCB3ZSdsbCBjb3ZlciBpbiBbQWR2
YW5jZWRHdWlkZV0oVjFfNl9BZHZhbmNlZEd1aWRlLm1kKS4KK1lvdSBtdXN0IGNhbGwgdGhpcyBm
dW5jdGlvbiBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9URVNUUygpYCwgb3IgdGhlIGZsYWdzCit3
b24ndCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4KKworT24gV2luZG93cywgYEluaXRHb29nbGVU
ZXN0KClgIGFsc28gd29ya3Mgd2l0aCB3aWRlIHN0cmluZ3MsIHNvIGl0IGNhbiBiZSB1c2VkCitp
biBwcm9ncmFtcyBjb21waWxlZCBpbiBgVU5JQ09ERWAgbW9kZSBhcyB3ZWxsLgorCitCdXQgbWF5
YmUgeW91IHRoaW5rIHRoYXQgd3JpdGluZyBhbGwgdGhvc2UgbWFpbigpIGZ1bmN0aW9ucyBpcyB0
b28gbXVjaCB3b3JrPyBXZSBhZ3JlZSB3aXRoIHlvdSBjb21wbGV0ZWx5IGFuZCB0aGF0J3Mgd2h5
IEdvb2dsZSBUZXN0IHByb3ZpZGVzIGEgYmFzaWMgaW1wbGVtZW50YXRpb24gb2YgbWFpbigpLiBJ
ZiBpdCBmaXRzIHlvdXIgbmVlZHMsIHRoZW4ganVzdCBsaW5rIHlvdXIgdGVzdCB3aXRoIGd0ZXN0
XF9tYWluIGxpYnJhcnkgYW5kIHlvdSBhcmUgZ29vZCB0byBnby4KKworIyMgSW1wb3J0YW50IG5v
dGUgZm9yIFZpc3VhbCBDKysgdXNlcnMgIyMKK0lmIHlvdSBwdXQgeW91ciB0ZXN0cyBpbnRvIGEg
bGlicmFyeSBhbmQgeW91ciBgbWFpbigpYCBmdW5jdGlvbiBpcyBpbiBhIGRpZmZlcmVudCBsaWJy
YXJ5IG9yIGluIHlvdXIgLmV4ZSBmaWxlLCB0aG9zZSB0ZXN0cyB3aWxsIG5vdCBydW4uIFRoZSBy
ZWFzb24gaXMgYSBbYnVnXShodHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNvbS9mZWVkYmFjay92
aWV3ZmVlZGJhY2suYXNweD9GZWVkYmFja0lEPTI0NDQxMCZzaXRlaWQ9MjEwKSBpbiBWaXN1YWwg
QysrLiBXaGVuIHlvdSBkZWZpbmUgeW91ciB0ZXN0cywgR29vZ2xlIFRlc3QgY3JlYXRlcyBjZXJ0
YWluIHN0YXRpYyBvYmplY3RzIHRvIHJlZ2lzdGVyIHRoZW0uIFRoZXNlIG9iamVjdHMgYXJlIG5v
dCByZWZlcmVuY2VkIGZyb20gZWxzZXdoZXJlIGJ1dCB0aGVpciBjb25zdHJ1Y3RvcnMgYXJlIHN0
aWxsIHN1cHBvc2VkIHRvIHJ1bi4gV2hlbiBWaXN1YWwgQysrIGxpbmtlciBzZWVzIHRoYXQgbm90
aGluZyBpbiB0aGUgbGlicmFyeSBpcyByZWZlcmVuY2VkIGZyb20gb3RoZXIgcGxhY2VzIGl0IHRo
cm93cyB0aGUgbGlicmFyeSBvdXQuIFlvdSBoYXZlIHRvIHJlZmVyZW5jZSB5b3VyIGxpYnJhcnkg
d2l0aCB0ZXN0cyBmcm9tIHlvdXIgbWFpbiBwcm9ncmFtIHRvIGtlZXAgdGhlIGxpbmtlciBmcm9t
IGRpc2NhcmRpbmcgaXQuIEhlcmUgaXMgaG93IHRvIGRvIGl0LiBTb21ld2hlcmUgaW4geW91ciBs
aWJyYXJ5IGNvZGUgZGVjbGFyZSBhIGZ1bmN0aW9uOgorYGBgCitfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgaW50IFB1bGxJbk15TGlicmFyeSgpIHsgcmV0dXJuIDA7IH0KK2BgYAorSWYgeW91IHB1dCB5
b3VyIHRlc3RzIGluIGEgc3RhdGljIGxpYnJhcnkgKG5vdCBETEwpIHRoZW4gYF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KWAgaXMgbm90IHJlcXVpcmVkLiBOb3csIGluIHlvdXIgbWFpbiBwcm9ncmFtLCB3
cml0ZSBhIGNvZGUgdGhhdCBpbnZva2VzIHRoYXQgZnVuY3Rpb246CitgYGAKK2ludCBQdWxsSW5N
eUxpYnJhcnkoKTsKK3N0YXRpYyBpbnQgZHVtbXkgPSBQdWxsSW5NeUxpYnJhcnkoKTsKK2BgYAor
VGhpcyB3aWxsIGtlZXAgeW91ciB0ZXN0cyByZWZlcmVuY2VkIGFuZCB3aWxsIG1ha2UgdGhlbSBy
ZWdpc3RlciB0aGVtc2VsdmVzIGF0IHN0YXJ0dXAuCisKK0luIGFkZGl0aW9uLCBpZiB5b3UgZGVm
aW5lIHlvdXIgdGVzdHMgaW4gYSBzdGF0aWMgbGlicmFyeSwgYWRkIGAvT1BUOk5PUkVGYCB0byB5
b3VyIG1haW4gcHJvZ3JhbSBsaW5rZXIgb3B0aW9ucy4gSWYgeW91IHVzZSBNU1ZDKysgSURFLCBn
byB0byB5b3VyIC5leGUgcHJvamVjdCBwcm9wZXJ0aWVzL0NvbmZpZ3VyYXRpb24gUHJvcGVydGll
cy9MaW5rZXIvT3B0aW1pemF0aW9uIGFuZCBzZXQgUmVmZXJlbmNlcyBzZXR0aW5nIHRvIGBLZWVw
IFVucmVmZXJlbmNlZCBEYXRhICgvT1BUOk5PUkVGKWAuIFRoaXMgd2lsbCBrZWVwIFZpc3VhbCBD
KysgbGlua2VyIGZyb20gZGlzY2FyZGluZyBpbmRpdmlkdWFsIHN5bWJvbHMgZ2VuZXJhdGVkIGJ5
IHlvdXIgdGVzdHMgZnJvbSB0aGUgZmluYWwgZXhlY3V0YWJsZS4KKworVGhlcmUgaXMgb25lIG1v
cmUgcGl0ZmFsbCwgdGhvdWdoLiBJZiB5b3UgdXNlIEdvb2dsZSBUZXN0IGFzIGEgc3RhdGljIGxp
YnJhcnkgKHRoYXQncyBob3cgaXQgaXMgZGVmaW5lZCBpbiBndGVzdC52Y3Byb2opIHlvdXIgdGVz
dHMgbXVzdCBhbHNvIHJlc2lkZSBpbiBhIHN0YXRpYyBsaWJyYXJ5LiBJZiB5b3UgaGF2ZSB0byBo
YXZlIHRoZW0gaW4gYSBETEwsIHlvdSBfbXVzdF8gY2hhbmdlIEdvb2dsZSBUZXN0IHRvIGJ1aWxk
IGludG8gYSBETEwgYXMgd2VsbC4gT3RoZXJ3aXNlIHlvdXIgdGVzdHMgd2lsbCBub3QgcnVuIGNv
cnJlY3RseSBvciB3aWxsIG5vdCBydW4gYXQgYWxsLiBUaGUgZ2VuZXJhbCBjb25jbHVzaW9uIGhl
cmUgaXM6IG1ha2UgeW91ciBsaWZlIGVhc2llciAtIGRvIG5vdCB3cml0ZSB5b3VyIHRlc3RzIGlu
IGxpYnJhcmllcyEKKworIyBXaGVyZSB0byBHbyBmcm9tIEhlcmUgIworCitDb25ncmF0dWxhdGlv
bnMhIFlvdSd2ZSBsZWFybmVkIHRoZSBHb29nbGUgVGVzdCBiYXNpY3MuIFlvdSBjYW4gc3RhcnQg
d3JpdGluZworYW5kIHJ1bm5pbmcgR29vZ2xlIFRlc3QgdGVzdHMsIHJlYWQgc29tZSBbc2FtcGxl
c10oVjFfNl9TYW1wbGVzLm1kKSwgb3IgY29udGludWUgd2l0aAorW0FkdmFuY2VkR3VpZGVdKFYx
XzZfQWR2YW5jZWRHdWlkZS5tZCksIHdoaWNoIGRlc2NyaWJlcyBtYW55IG1vcmUgdXNlZnVsIEdv
b2dsZSBUZXN0IGZlYXR1cmVzLgorCisjIEtub3duIExpbWl0YXRpb25zICMKKworR29vZ2xlIFRl
c3QgaXMgZGVzaWduZWQgdG8gYmUgdGhyZWFkLXNhZmUuICBUaGUgaW1wbGVtZW50YXRpb24gaXMK
K3RocmVhZC1zYWZlIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGBwdGhyZWFkc2AgbGlicmFyeSBpcyBh
dmFpbGFibGUuICBJdAoraXMgY3VycmVudGx5IF91bnNhZmVfIHRvIHVzZSBHb29nbGUgVGVzdCBh
c3NlcnRpb25zIGZyb20gdHdvIHRocmVhZHMKK2NvbmN1cnJlbnRseSBvbiBvdGhlciBzeXN0ZW1z
IChlLmcuIFdpbmRvd3MpLiAgSW4gbW9zdCB0ZXN0cyB0aGlzIGlzCitub3QgYW4gaXNzdWUgYXMg
dXN1YWxseSB0aGUgYXNzZXJ0aW9ucyBhcmUgZG9uZSBpbiB0aGUgbWFpbiB0aHJlYWQuIElmCit5
b3Ugd2FudCB0byBoZWxwLCB5b3UgY2FuIHZvbHVudGVlciB0byBpbXBsZW1lbnQgdGhlIG5lY2Vz
c2FyeQorc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYGd0ZXN0LXBvcnQuaGAgZm9yIHlv
dXIgcGxhdGZvcm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1Yx
XzZfUHVtcE1hbnVhbC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfNl9QdW1w
TWFudWFsLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxODRmMTUzY2EyZWNhZDdjNjVjYjU4YzI3ZmIzMWJkNzIz
NzVmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1Yx
XzZfUHVtcE1hbnVhbC5tZApAQCAtMCwwICsxLDE3NyBAQAorCisKKzxiPlA8L2I+dW1wIGlzIDxi
PlU8L2I+c2VmdWwgZm9yIDxiPk08L2I+ZXRhIDxiPlA8L2I+cm9ncmFtbWluZy4KKworIyBUaGUg
UHJvYmxlbSAjCisKK1RlbXBsYXRlIGFuZCBtYWNybyBsaWJyYXJpZXMgb2Z0ZW4gbmVlZCB0byBk
ZWZpbmUgbWFueSBjbGFzc2VzLAorZnVuY3Rpb25zLCBvciBtYWNyb3MgdGhhdCB2YXJ5IG9ubHkg
KG9yIGFsbW9zdCBvbmx5KSBpbiB0aGUgbnVtYmVyIG9mCithcmd1bWVudHMgdGhleSB0YWtlLiBJ
dCdzIGEgbG90IG9mIHJlcGV0aXRpdmUsIG1lY2hhbmljYWwsIGFuZAorZXJyb3ItcHJvbmUgd29y
ay4KKworVmFyaWFkaWMgdGVtcGxhdGVzIGFuZCB2YXJpYWRpYyBtYWNyb3MgY2FuIGFsbGV2aWF0
ZSB0aGUgcHJvYmxlbS4KK0hvd2V2ZXIsIHdoaWxlIGJvdGggYXJlIGJlaW5nIGNvbnNpZGVyZWQg
YnkgdGhlIEMrKyBjb21taXR0ZWUsIG5laXRoZXIKK2lzIGluIHRoZSBzdGFuZGFyZCB5ZXQgb3Ig
d2lkZWx5IHN1cHBvcnRlZCBieSBjb21waWxlcnMuICBUaHVzIHRoZXkKK2FyZSBvZnRlbiBub3Qg
YSBnb29kIGNob2ljZSwgZXNwZWNpYWxseSB3aGVuIHlvdXIgY29kZSBuZWVkcyB0byBiZQorcG9y
dGFibGUuIEFuZCB0aGVpciBjYXBhYmlsaXRpZXMgYXJlIHN0aWxsIGxpbWl0ZWQuCisKK0FzIGEg
cmVzdWx0LCBhdXRob3JzIG9mIHN1Y2ggbGlicmFyaWVzIG9mdGVuIGhhdmUgdG8gd3JpdGUgc2Ny
aXB0cyB0bworZ2VuZXJhdGUgdGhlaXIgaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIsIG91ciBleHBl
cmllbmNlIGlzIHRoYXQgaXQncwordGVkaW91cyB0byB3cml0ZSBzdWNoIHNjcmlwdHMsIHdoaWNo
IHRlbmQgdG8gcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mCit0aGUgZ2VuZXJhdGVkIGNvZGUgcG9v
cmx5IGFuZCBhcmUgb2Z0ZW4gaGFyZCB0byByZWFkIGFuZCBlZGl0LiBGb3IKK2V4YW1wbGUsIGEg
c21hbGwgY2hhbmdlIG5lZWRlZCBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUgbWF5IHJlcXVpcmUgc29t
ZQorbm9uLWludHVpdGl2ZSwgbm9uLXRyaXZpYWwgY2hhbmdlcyBpbiB0aGUgc2NyaXB0LiBUaGlz
IGlzIGVzcGVjaWFsbHkKK3BhaW5mdWwgd2hlbiBleHBlcmltZW50aW5nIHdpdGggdGhlIGNvZGUu
CisKKyMgT3VyIFNvbHV0aW9uICMKKworUHVtcCAoZm9yIFB1bXAgaXMgVXNlZnVsIGZvciBNZXRh
IFByb2dyYW1taW5nLCBQcmV0dHkgVXNlZnVsIGZvciBNZXRhCitQcm9ncmFtbWluZywgb3IgUHJh
Y3RpY2FsIFV0aWxpdHkgZm9yIE1ldGEgUHJvZ3JhbW1pbmcsIHdoaWNoZXZlciB5b3UKK3ByZWZl
cikgaXMgYSBzaW1wbGUgbWV0YS1wcm9ncmFtbWluZyB0b29sIGZvciBDKysuIFRoZSBpZGVhIGlz
IHRoYXQgYQorcHJvZ3JhbW1lciB3cml0ZXMgYSBgZm9vLnB1bXBgIGZpbGUgd2hpY2ggY29udGFp
bnMgQysrIGNvZGUgcGx1cyBtZXRhCitjb2RlIHRoYXQgbWFuaXB1bGF0ZXMgdGhlIEMrKyBjb2Rl
LiBUaGUgbWV0YSBjb2RlIGNhbiBoYW5kbGUKK2l0ZXJhdGlvbnMgb3ZlciBhIHJhbmdlLCBuZXN0
ZWQgaXRlcmF0aW9ucywgbG9jYWwgbWV0YSB2YXJpYWJsZQorZGVmaW5pdGlvbnMsIHNpbXBsZSBh
cml0aG1ldGljLCBhbmQgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMuIFlvdSBjYW4KK3ZpZXcgaXQg
YXMgYSBzbWFsbCBEb21haW4tU3BlY2lmaWMgTGFuZ3VhZ2UuIFRoZSBtZXRhIGxhbmd1YWdlIGlz
CitkZXNpZ25lZCB0byBiZSBub24taW50cnVzaXZlIChzLnQuIGl0IHdvbid0IGNvbmZ1c2UgRW1h
Y3MnIEMrKyBtb2RlLAorZm9yIGV4YW1wbGUpIGFuZCBjb25jaXNlLCBtYWtpbmcgUHVtcCBjb2Rl
IGludHVpdGl2ZSBhbmQgZWFzeSB0bworbWFpbnRhaW4uCisKKyMjIEhpZ2hsaWdodHMgIyMKKwor
ICAqIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBpbiBhIHNpbmdsZSBQeXRob24gc2NyaXB0IGFuZCB0
aHVzIHVsdHJhIHBvcnRhYmxlOiBubyBidWlsZCBvciBpbnN0YWxsYXRpb24gaXMgbmVlZGVkIGFu
ZCBpdCB3b3JrcyBjcm9zcyBwbGF0Zm9ybXMuCisgICogUHVtcCB0cmllcyB0byBiZSBzbWFydCB3
aXRoIHJlc3BlY3QgdG8gW0dvb2dsZSdzIHN0eWxlIGd1aWRlXShodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvZ29vZ2xlLXN0eWxlZ3VpZGUvKTogaXQgYnJlYWtzIGxvbmcgbGluZXMgKGVhc3kgdG8g
aGF2ZSB3aGVuIHRoZXkgYXJlIGdlbmVyYXRlZCkgYXQgYWNjZXB0YWJsZSBwbGFjZXMgdG8gZml0
IHdpdGhpbiA4MCBjb2x1bW5zIGFuZCBpbmRlbnQgdGhlIGNvbnRpbnVhdGlvbiBsaW5lcyBjb3Jy
ZWN0bHkuCisgICogVGhlIGZvcm1hdCBpcyBodW1hbi1yZWFkYWJsZSBhbmQgbW9yZSBjb25jaXNl
IHRoYW4gWE1MLgorICAqIFRoZSBmb3JtYXQgd29ya3MgcmVsYXRpdmVseSB3ZWxsIHdpdGggRW1h
Y3MnIEMrKyBtb2RlLgorCisjIyBFeGFtcGxlcyAjIworCitUaGUgZm9sbG93aW5nIFB1bXAgY29k
ZSAod2hlcmUgbWV0YSBrZXl3b3JkcyBzdGFydCB3aXRoIGAkYCwgYFtbYCBhbmQgYF1dYCBhcmUg
bWV0YSBicmFja2V0cywgYW5kIGAkJGAgc3RhcnRzIGEgbWV0YSBjb21tZW50IHRoYXQgZW5kcyB3
aXRoIHRoZSBsaW5lKToKKworYGBgCiskdmFyIG4gPSAzICAgICAkJCBEZWZpbmVzIGEgbWV0YSB2
YXJpYWJsZSBuLgorJHJhbmdlIGkgMC4ubiAgJCQgRGVjbGFyZXMgdGhlIHJhbmdlIG9mIG1ldGEg
aXRlcmF0b3IgaSAoaW5jbHVzaXZlKS4KKyRmb3IgaSBbWworICAgICAgICAgICAgICAgJCQgTWV0
YSBsb29wLgorLy8gRm9vJGkgZG9lcyBibGFoIGZvciAkaS1hcnkgcHJlZGljYXRlcy4KKyRyYW5n
ZSBqIDEuLmkKK3RlbXBsYXRlIDxzaXplX3QgTiAkZm9yIGogW1ssIHR5cGVuYW1lIEEkal1dPgor
Y2xhc3MgRm9vJGkgeworJGlmIGkgPT0gMCBbWworICBibGFoIGE7CitdXSAkZWxpZiBpIDw9IDIg
W1sKKyAgYmxhaCBiOworXV0gJGVsc2UgW1sKKyAgYmxhaCBjOworXV0KK307CisKK11dCitgYGAK
Kword2lsbCBiZSB0cmFuc2xhdGVkIGJ5IHRoZSBQdW1wIGNvbXBpbGVyIHRvOgorCitgYGAKKy8v
IEZvbzAgZG9lcyBibGFoIGZvciAwLWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBO
PgorY2xhc3MgRm9vMCB7CisgIGJsYWggYTsKK307CisKKy8vIEZvbzEgZG9lcyBibGFoIGZvciAx
LWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBBMT4KK2NsYXNz
IEZvbzEgeworICBibGFoIGI7Cit9OworCisvLyBGb28yIGRvZXMgYmxhaCBmb3IgMi1hcnkgcHJl
ZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgor
Y2xhc3MgRm9vMiB7CisgIGJsYWggYjsKK307CisKKy8vIEZvbzMgZG9lcyBibGFoIGZvciAzLWFy
eSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUg
QTIsIHR5cGVuYW1lIEEzPgorY2xhc3MgRm9vMyB7CisgIGJsYWggYzsKK307CitgYGAKKworSW4g
YW5vdGhlciBleGFtcGxlLAorCitgYGAKKyRyYW5nZSBpIDEuLm4KK0Z1bmMoJGZvciBpICsgW1th
JGldXSk7CiskJCBUaGUgdGV4dCBiZXR3ZWVuIGkgYW5kIFtbIGlzIHRoZSBzZXBhcmF0b3IgYmV0
d2VlbiBpdGVyYXRpb25zLgorYGBgCisKK3dpbGwgZ2VuZXJhdGUgb25lIG9mIHRoZSBmb2xsb3dp
bmcgbGluZXMgKHdpdGhvdXQgdGhlIGNvbW1lbnRzKSwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBv
ZiBgbmA6CisKK2BgYAorRnVuYygpOyAgICAgICAgICAgICAgLy8gSWYgbiBpcyAwLgorRnVuYyhh
MSk7ICAgICAgICAgICAgLy8gSWYgbiBpcyAxLgorRnVuYyhhMSArIGEyKTsgICAgICAgLy8gSWYg
biBpcyAyLgorRnVuYyhhMSArIGEyICsgYTMpOyAgLy8gSWYgbiBpcyAzLgorLy8gQW5kIHNvIG9u
Li4uCitgYGAKKworIyMgQ29uc3RydWN0cyAjIworCitXZSBzdXBwb3J0IHRoZSBmb2xsb3dpbmcg
bWV0YSBwcm9ncmFtbWluZyBjb25zdHJ1Y3RzOgorCit8IGAkdmFyIGlkID0gZXhwYCB8IERlZmlu
ZXMgYSBuYW1lZCBjb25zdGFudCB2YWx1ZS4gYCRpZGAgaXMgdmFsaWQgdXRpbCB0aGUgZW5kIG9m
IHRoZSBjdXJyZW50IG1ldGEgbGV4aWNhbCBibG9jay4gfAorfDotLS0tLS0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYCRyYW5nZSBpZCBleHAu
LmV4cGAgfCBTZXRzIHRoZSByYW5nZSBvZiBhbiBpdGVyYXRpb24gdmFyaWFibGUsIHdoaWNoIGNh
biBiZSByZXVzZWQgaW4gbXVsdGlwbGUgbG9vcHMgbGF0ZXIuICAgICAgICAgIHwKK3wgYCRmb3Ig
aWQgc2VwIFtbIGNvZGUgXV1gIHwgSXRlcmF0aW9uLiBUaGUgcmFuZ2Ugb2YgYGlkYCBtdXN0IGhh
dmUgYmVlbiBkZWZpbmVkIGVhcmxpZXIuIGAkaWRgIGlzIHZhbGlkIGluIGBjb2RlYC4gICAgICAg
ICB8Cit8IGAkKCQpYCAgICAgICAgICB8IEdlbmVyYXRlcyBhIHNpbmdsZSBgJGAgY2hhcmFjdGVy
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorfCBgJGlkYCAgICAgICAgICAgfCBWYWx1ZSBvZiB0aGUgbmFtZWQgY29uc3RhbnQg
b3IgaXRlcmF0aW9uIHZhcmlhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKK3wgYCQoZXhwKWAgICAgICAgIHwgVmFsdWUgb2YgdGhlIGV4cHJlc3Npb24u
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8Cit8IGAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2hgIHwgQ29u
ZGl0aW9uYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBbWyBjb2RlIF1dYCAgICB8
IE1ldGEgbGV4aWNhbCBibG9jay4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgY3BwX2NvZGVgICAg
ICAgfCBSYXcgQysrIGNvZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYCQkIGNvbW1l
bnRgICAgIHwgTWV0YSBjb21tZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisKKyoqTm90
ZToqKiBUbyBnaXZlIHRoZSB1c2VyIHNvbWUgZnJlZWRvbSBpbiBmb3JtYXR0aW5nIHRoZSBQdW1w
IHNvdXJjZQorY29kZSwgUHVtcCBpZ25vcmVzIGEgbmV3LWxpbmUgY2hhcmFjdGVyIGlmIGl0J3Mg
cmlnaHQgYWZ0ZXIgYCRmb3IgZm9vYAorb3IgbmV4dCB0byBgW1tgIG9yIGBdXWAuIFdpdGhvdXQg
dGhpcyBydWxlIHlvdSdsbCBvZnRlbiBiZSBmb3JjZWQgdG8gd3JpdGUKK3ZlcnkgbG9uZyBsaW5l
cyB0byBnZXQgdGhlIGRlc2lyZWQgb3V0cHV0LiBUaGVyZWZvcmUgc29tZXRpbWVzIHlvdSBtYXkK
K25lZWQgdG8gaW5zZXJ0IGFuIGV4dHJhIG5ldy1saW5lIGluIHN1Y2ggcGxhY2VzIGZvciBhIG5l
dy1saW5lIHRvIHNob3cKK3VwIGluIHlvdXIgb3V0cHV0LgorCisjIyBHcmFtbWFyICMjCisKK2Bg
YAorY29kZSA6Oj0gYXRvbWljX2NvZGUqCithdG9taWNfY29kZSA6Oj0gJHZhciBpZCA9IGV4cAor
ICAgIHwgJHZhciBpZCA9IFtbIGNvZGUgXV0KKyAgICB8ICRyYW5nZSBpZCBleHAuLmV4cAorICAg
IHwgJGZvciBpZCBzZXAgW1sgY29kZSBdXQorICAgIHwgJCgkKQorICAgIHwgJGlkCisgICAgfCAk
KGV4cCkKKyAgICB8ICRpZiBleHAgW1sgY29kZSBdXSBlbHNlX2JyYW5jaAorICAgIHwgW1sgY29k
ZSBdXQorICAgIHwgY3BwX2NvZGUKK3NlcCA6Oj0gY3BwX2NvZGUgfCBlbXB0eV9zdHJpbmcKK2Vs
c2VfYnJhbmNoIDo6PSAkZWxzZSBbWyBjb2RlIF1dCisgICAgfCAkZWxpZiBleHAgW1sgY29kZSBd
XSBlbHNlX2JyYW5jaAorICAgIHwgZW1wdHlfc3RyaW5nCitleHAgOjo9IHNpbXBsZV9leHByZXNz
aW9uX2luX1B5dGhvbl9zeW50YXgKK2BgYAorCisjIyBDb2RlICMjCisKK1lvdSBjYW4gZmluZCB0
aGUgc291cmNlIGNvZGUgb2YgUHVtcCBpbiBbc2NyaXB0cy9wdW1wLnB5XSguLi9zY3JpcHRzL3B1
bXAucHkpLiBJdCBpcyBzdGlsbAordmVyeSB1bnBvbGlzaGVkIGFuZCBsYWNrcyBhdXRvbWF0ZWQg
dGVzdHMsIGFsdGhvdWdoIGl0IGhhcyBiZWVuCitzdWNjZXNzZnVsbHkgdXNlZCBtYW55IHRpbWVz
LiBJZiB5b3UgZmluZCBhIGNoYW5jZSB0byB1c2UgaXQgaW4geW91cgorcHJvamVjdCwgcGxlYXNl
IGxldCB1cyBrbm93IHdoYXQgeW91IHRoaW5rISAgV2UgYWxzbyB3ZWxjb21lIGhlbHAgb24KK2lt
cHJvdmluZyBQdW1wLgorCisjIyBSZWFsIEV4YW1wbGVzICMjCisKK1lvdSBjYW4gZmluZCByZWFs
LXdvcmxkIGFwcGxpY2F0aW9ucyBvZiBQdW1wIGluIFtHb29nbGUgVGVzdF0oaHR0cDovL3d3dy5n
b29nbGUuY29tL2NvZGVzZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3BhY2thZ2UlM0FodHRwJTNB
JTJGJTJGZ29vZ2xldGVzdFwuZ29vZ2xlY29kZVwuY29tKSBhbmQgW0dvb2dsZSBNb2NrXShodHRw
Oi8vd3d3Lmdvb2dsZS5jb20vY29kZXNlYXJjaD9xPWZpbGUlM0FcLnB1bXAlMjQrcGFja2FnZSUz
QWh0dHAlM0ElMkYlMkZnb29nbGVtb2NrXC5nb29nbGVjb2RlXC5jb20pLiAgVGhlIHNvdXJjZSBm
aWxlIGBmb28uaC5wdW1wYCBnZW5lcmF0ZXMgYGZvby5oYC4KKworIyMgVGlwcyAjIworCisgICog
SWYgYSBtZXRhIHZhcmlhYmxlIGlzIGZvbGxvd2VkIGJ5IGEgbGV0dGVyIG9yIGRpZ2l0LCB5b3Ug
Y2FuIHNlcGFyYXRlIHRoZW0gdXNpbmcgYFtbXV1gLCB3aGljaCBpbnNlcnRzIGFuIGVtcHR5IHN0
cmluZy4gRm9yIGV4YW1wbGUgYEZvbyRqW1tdXUhlbHBlcmAgZ2VuZXJhdGUgYEZvbzFIZWxwZXJg
IHdoZW4gYGpgIGlzIDEuCisgICogVG8gYXZvaWQgZXh0cmEtbG9uZyBQdW1wIHNvdXJjZSBsaW5l
cywgeW91IGNhbiBicmVhayBhIGxpbmUgYW55d2hlcmUgeW91IHdhbnQgYnkgaW5zZXJ0aW5nIGBb
W11dYCBmb2xsb3dlZCBieSBhIG5ldyBsaW5lLiBTaW5jZSBhbnkgbmV3LWxpbmUgY2hhcmFjdGVy
IG5leHQgdG8gYFtbYCBvciBgXV1gIGlzIGlnbm9yZWQsIHRoZSBnZW5lcmF0ZWQgY29kZSB3b24n
dCBjb250YWluIHRoaXMgbmV3IGxpbmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9kb2NzL1YxXzZfU2FtcGxlcy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3Mv
VjFfNl9TYW1wbGVzLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyMWQyMDA1NjczNTQ1N2Y2ZjQ5YWVjYzYxMjE5
ZGFkMjI2MTJiZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9k
b2NzL1YxXzZfU2FtcGxlcy5tZApAQCAtMCwwICsxLDE0IEBACitJZiB5b3UncmUgbGlrZSB1cywg
eW91J2QgbGlrZSB0byBsb29rIGF0IHNvbWUgR29vZ2xlIFRlc3Qgc2FtcGxlIGNvZGUuICBUaGUK
K1tzYW1wbGVzIGZvbGRlcl0oLi4vc2FtcGxlcykgaGFzIGEgbnVtYmVyIG9mIHdlbGwtY29tbWVu
dGVkIHNhbXBsZXMgc2hvd2luZyBob3cgdG8gdXNlIGEKK3ZhcmlldHkgb2YgR29vZ2xlIFRlc3Qg
ZmVhdHVyZXMuCisKKyAgKiBbU2FtcGxlICMxXSguLi9zYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3Qu
Y2MpIHNob3dzIHRoZSBiYXNpYyBzdGVwcyBvZiB1c2luZyBHb29nbGUgVGVzdCB0byB0ZXN0IEMr
KyBmdW5jdGlvbnMuCisgICogW1NhbXBsZSAjMl0oLi4vc2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0
LmNjKSBzaG93cyBhIG1vcmUgY29tcGxleCB1bml0IHRlc3QgZm9yIGEgY2xhc3Mgd2l0aCBtdWx0
aXBsZSBtZW1iZXIgZnVuY3Rpb25zLgorICAqIFtTYW1wbGUgIzNdKC4uL3NhbXBsZXMvc2FtcGxl
M191bml0dGVzdC5jYykgdXNlcyBhIHRlc3QgZml4dHVyZS4KKyAgKiBbU2FtcGxlICM0XSguLi9z
YW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QuY2MpIGlzIGFub3RoZXIgYmFzaWMgZXhhbXBsZSBvZiB1
c2luZyBHb29nbGUgVGVzdC4KKyAgKiBbU2FtcGxlICM1XSguLi9zYW1wbGVzL3NhbXBsZTVfdW5p
dHRlc3QuY2MpIHRlYWNoZXMgaG93IHRvIHJldXNlIGEgdGVzdCBmaXh0dXJlIGluIG11bHRpcGxl
IHRlc3QgY2FzZXMgYnkgZGVyaXZpbmcgc3ViLWZpeHR1cmVzIGZyb20gaXQuCisgICogW1NhbXBs
ZSAjNl0oLi4vc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjKSBkZW1vbnN0cmF0ZXMgdHlwZS1w
YXJhbWV0ZXJpemVkIHRlc3RzLgorICAqIFtTYW1wbGUgIzddKC4uL3NhbXBsZXMvc2FtcGxlN191
bml0dGVzdC5jYykgdGVhY2hlcyB0aGUgYmFzaWNzIG9mIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dHMuCisgICogW1NhbXBsZSAjOF0oLi4vc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjKSBzaG93
cyB1c2luZyBgQ29tYmluZSgpYCBpbiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorICAqIFtT
YW1wbGUgIzldKC4uL3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYykgc2hvd3MgdXNlIG9mIHRo
ZSBsaXN0ZW5lciBBUEkgdG8gbW9kaWZ5IEdvb2dsZSBUZXN0J3MgY29uc29sZSBvdXRwdXQgYW5k
IHRoZSB1c2Ugb2YgaXRzIHJlZmxlY3Rpb24gQVBJIHRvIGluc3BlY3QgdGVzdCByZXN1bHRzLgor
ICAqIFtTYW1wbGUgIzEwXSguLi9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjKSBzaG93cyB1
c2Ugb2YgdGhlIGxpc3RlbmVyIEFQSSB0byBpbXBsZW1lbnQgYSBwcmltaXRpdmUgbWVtb3J5IGxl
YWsgY2hlY2tlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFf
Nl9YY29kZUd1aWRlLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV82X1hjb2Rl
R3VpZGUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmYyNGJmNTFiZmM0NTQxMmY2NThiZGRkNTNhMzMyZTE0OWQ3
NzMwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFf
Nl9YY29kZUd1aWRlLm1kCkBAIC0wLDAgKzEsOTMgQEAKKworCitUaGlzIGd1aWRlIHdpbGwgZXhw
bGFpbiBob3cgdG8gdXNlIHRoZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaW4geW91ciBYY29k
ZSBwcm9qZWN0cyBvbiBNYWMgT1MgWC4gVGhpcyB0dXRvcmlhbCBiZWdpbnMgYnkgcXVpY2tseSBl
eHBsYWluaW5nIHdoYXQgdG8gZG8gZm9yIGV4cGVyaWVuY2VkIHVzZXJzLiBBZnRlciB0aGUgcXVp
Y2sgc3RhcnQsIHRoZSBndWlkZSBnb2VzIHByb3ZpZGVzIGFkZGl0aW9uYWwgZXhwbGFuYXRpb24g
YWJvdXQgZWFjaCBzdGVwLgorCisjIFF1aWNrIFN0YXJ0ICMKKworSGVyZSBpcyB0aGUgcXVpY2sg
Z3VpZGUgZm9yIHVzaW5nIEdvb2dsZSBUZXN0IGluIHlvdXIgWGNvZGUgcHJvamVjdC4KKworICAx
LiBEb3dubG9hZCB0aGUgc291cmNlIGZyb20gdGhlIFt3ZWJzaXRlXShodHRwOi8vY29kZS5nb29n
bGUuY29tL3AvZ29vZ2xldGVzdCkgdXNpbmcgdGhpcyBjb21tYW5kOiBgc3ZuIGNoZWNrb3V0IGh0
dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay8gZ29vZ2xldGVzdC1yZWFk
LW9ubHlgCisgIDEuIE9wZW4gdXAgdGhlIGBndGVzdC54Y29kZXByb2pgIGluIHRoZSBgZ29vZ2xl
dGVzdC1yZWFkLW9ubHkveGNvZGUvYCBkaXJlY3RvcnkgYW5kIGJ1aWxkIHRoZSBndGVzdC5mcmFt
ZXdvcmsuCisgIDEuIENyZWF0ZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0IGluIHlvdXIgWGNv
ZGUgcHJvamVjdCBjYWxsZWQgc29tZXRoaW5nIGxpa2UgIlVuaXRUZXN0cyIKKyAgMS4gQWRkIHRo
ZSBndGVzdC5mcmFtZXdvcmsgdG8geW91ciBwcm9qZWN0IGFuZCBhZGQgaXQgdG8gdGhlICJMaW5r
IEJpbmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgIlVuaXRUZXN0cyIKKyAgMS4g
QWRkIHlvdXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRvIHRoZSAiQ29tcGlsZSBTb3VyY2VzIiBi
dWlsZCBwaGFzZSBvZiAiVW5pdFRlc3RzIgorICAxLiBFZGl0IHRoZSAiVW5pdFRlc3RzIiBleGVj
dXRhYmxlIGFuZCBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZWQgIkRZTERcX0ZSQU1F
V09SS1xfUEFUSCIgd2l0aCBhIHZhbHVlIGVxdWFsIHRvIHRoZSBwYXRoIHRvIHRoZSBmcmFtZXdv
cmsgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHJlbGF0aXZlIHRvIHRoZSBjb21waWxl
ZCBleGVjdXRhYmxlLgorICAxLiBCdWlsZCBhbmQgR28KKworVGhlIGZvbGxvd2luZyBzZWN0aW9u
cyBmdXJ0aGVyIGV4cGxhaW4gZWFjaCBvZiB0aGUgc3RlcHMgbGlzdGVkIGFib3ZlIGluIGRlcHRo
LCBkZXNjcmliaW5nIGluIG1vcmUgZGV0YWlsIGhvdyB0byBjb21wbGV0ZSBpdCBpbmNsdWRpbmcg
c29tZSB2YXJpYXRpb25zLgorCisjIEdldCB0aGUgU291cmNlICMKKworQ3VycmVudGx5LCB0aGUg
Z3Rlc3QuZnJhbWV3b3JrIGRpc2N1c3NlZCBoZXJlIGlzbid0IGF2YWlsYWJsZSBpbiBhIHRhZ2dl
ZCByZWxlYXNlIG9mIEdvb2dsZSBUZXN0LCBpdCBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgdHJ1
bmsuIEFzIGV4cGxhaW5lZCBhdCB0aGUgR29vZ2xlIFRlc3QgW3NpdGVdKGh0dHA6Ly9jb2RlLmdv
b2dsZS5jb20vcC9nb29nbGV0ZXN0L3NvdXJjZS9jaGVja291dCI+c3ZuKSwgeW91IGNhbiBnZXQg
dGhlIGNvZGUgZnJvbSBhbm9ueW1vdXMgU1ZOIHdpdGggdGhpcyBjb21tYW5kOgorCitgYGAKK3N2
biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvIGdv
b2dsZXRlc3QtcmVhZC1vbmx5CitgYGAKKworQWx0ZXJuYXRpdmVseSwgaWYgeW91IGFyZSB3b3Jr
aW5nIHdpdGggU3VidmVyc2lvbiBpbiB5b3VyIG93biBjb2RlIGJhc2UsIHlvdSBjYW4gYWRkIEdv
b2dsZSBUZXN0IGFzIGFuIGV4dGVybmFsIGRlcGVuZGVuY3kgdG8geW91ciBvd24gU3VidmVyc2lv
biByZXBvc2l0b3J5LiBCeSBmb2xsb3dpbmcgdGhpcyBhcHByb2FjaCwgZXZlcnlvbmUgdGhhdCBj
aGVja3Mgb3V0IHlvdXIgc3ZuIHJlcG9zaXRvcnkgd2lsbCBhbHNvIHJlY2VpdmUgYSBjb3B5IG9m
IEdvb2dsZSBUZXN0IChhIHNwZWNpZmljIHZlcnNpb24sIGlmIHlvdSB3aXNoKSB3aXRob3V0IGhh
dmluZyB0byBjaGVjayBpdCBvdXQgZXhwbGljaXRseS4gVGhpcyBtYWtlcyB0aGUgc2V0IHVwIG9m
IHlvdXIgcHJvamVjdCBzaW1wbGVyIGFuZCByZWR1Y2VzIHRoZSBjb3BpZWQgY29kZSBpbiB0aGUg
cmVwb3NpdG9yeS4KKworVG8gdXNlIGBzdm46ZXh0ZXJuYWxzYCwgZGVjaWRlIHdoZXJlIHlvdSB3
b3VsZCBsaWtlIHRvIGhhdmUgdGhlIGV4dGVybmFsIHNvdXJjZSByZXNpZGUuIFlvdSBtaWdodCBj
aG9vc2UgdG8gcHV0IHRoZSBleHRlcm5hbCBzb3VyY2UgaW5zaWRlIHRoZSB0cnVuaywgYmVjYXVz
ZSB5b3Ugd2FudCBpdCB0byBiZSBwYXJ0IG9mIHRoZSBicmFuY2ggd2hlbiB5b3UgbWFrZSBhIHJl
bGVhc2UuIEhvd2V2ZXIsIGtlZXBpbmcgaXQgb3V0c2lkZSB0aGUgdHJ1bmsgaW4gYSB2ZXJzaW9u
LXRhZ2dlZCBkaXJlY3RvcnkgY2FsbGVkIHNvbWV0aGluZyBsaWtlIGB0aGlyZC1wYXJ0eS9nb29n
bGV0ZXN0LzEuMC4xYCwgaXMgYW5vdGhlciBvcHRpb24uIE9uY2UgdGhlIGxvY2F0aW9uIGlzIGVz
dGFibGlzaGVkLCB1c2UgYHN2biBwcm9wZWRpdCBzdm46ZXh0ZXJuYWxzIF9kaXJlY3RvcnlfYCB0
byBzZXQgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgb24gYSBkaXJlY3RvcnkgaW4geW91ciBy
ZXBvc2l0b3J5LiBUaGlzIGRpcmVjdG9yeSB3b24ndCBjb250YWluIHRoZSBjb2RlLCBidXQgYmUg
aXRzIHZlcnNpb25lZCBwYXJlbnQgZGlyZWN0b3J5LgorCitUaGUgY29tbWFuZCBgc3ZuIHByb3Bl
ZGl0YCB3aWxsIGJyaW5nIHVwIHlvdXIgU3VidmVyc2lvbiBlZGl0b3IsIG1ha2luZyBlZGl0aW5n
IHRoZSBsb25nLCAocG90ZW50aWFsbHkgbXVsdGktbGluZSkgcHJvcGVydHkgc2ltcGxlci4gVGhp
cyBzYW1lIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjaGVjayBvdXQgYSB0YWdnZWQgYnJhbmNoLCBi
eSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgVVJMIChlLmcuIGBodHRwOi8vZ29vZ2xldGVzdC5nb29n
bGVjb2RlLmNvbS9zdm4vdGFncy9yZWxlYXNlLTEuMC4xYCkuIEFkZGl0aW9uYWxseSwgdGhlIHN2
bjpleHRlcm5hbHMgcHJvcGVydHkgYWxsb3dzIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgcGFydGlj
dWxhciByZXZpc2lvbiBvZiB0aGUgdHJ1bmsgd2l0aCB0aGUgYC1yXyMjX2Agb3B0aW9uIChlLmcu
IGBleHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QgLXI2MCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVj
b2RlLmNvbS9zdm4vdHJ1bmtgKS4KKworSGVyZSBpcyBhbiBleGFtcGxlIG9mIHVzaW5nIHRoZSBz
dm46ZXh0ZXJuYWxzIHByb3BlcnRpZXMgb24gYSB0cnVuayAocmVhZCB2aWEgYHN2biBwcm9wZ2V0
YCkgb2YgYSBwcm9qZWN0LiBUaGlzIHZhbHVlIGNoZWNrcyBvdXQgYSBjb3B5IG9mIEdvb2dsZSBU
ZXN0IGludG8gdGhlIGB0cnVuay9leHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QvYCBkaXJlY3Rvcnku
CisKK2BgYAorW0NvbXB1dGVyOnN2bl0gdXNlciQgc3ZuIHByb3BnZXQgc3ZuOmV4dGVybmFscyB0
cnVuaworZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNv
ZGUuY29tL3N2bi90cnVuaworYGBgCisKKyMgQWRkIHRoZSBGcmFtZXdvcmsgdG8gWW91ciBQcm9q
ZWN0ICMKKworVGhlIG5leHQgc3RlcCBpcyB0byBidWlsZCBhbmQgYWRkIHRoZSBndGVzdC5mcmFt
ZXdvcmsgdG8geW91ciBvd24gcHJvamVjdC4gVGhpcyBndWlkZSBkZXNjcmliZXMgdHdvIGNvbW1v
biB3YXlzIGJlbG93LgorCisgICogKipPcHRpb24gMSoqIC0tLSBUaGUgc2ltcGxlc3Qgd2F5IHRv
IGFkZCBHb29nbGUgVGVzdCB0byB5b3VyIG93biBwcm9qZWN0LCBpcyB0byBvcGVuIGd0ZXN0Lnhj
b2RlcHJvaiAoZm91bmQgaW4gdGhlIHhjb2RlLyBkaXJlY3Rvcnkgb2YgdGhlIEdvb2dsZSBUZXN0
IHRydW5rKSBhbmQgYnVpbGQgdGhlIGZyYW1ld29yayBtYW51YWxseS4gVGhlbiwgYWRkIHRoZSBi
dWlsdCBmcmFtZXdvcmsgaW50byB5b3VyIHByb2plY3QgdXNpbmcgdGhlICJBZGQtPkV4aXN0aW5n
IEZyYW1ld29yay4uLiIgZnJvbSB0aGUgY29udGV4dCBtZW51IG9yICJQcm9qZWN0LT5BZGQuLi4i
IGZyb20gdGhlIG1haW4gbWVudS4gVGhlIGd0ZXN0LmZyYW1ld29yayBpcyByZWxvY2F0YWJsZSBh
bmQgY29udGFpbnMgdGhlIGhlYWRlcnMgYW5kIG9iamVjdCBjb2RlIHRoYXQgeW91J2xsIG5lZWQg
dG8gbWFrZSB0ZXN0cy4gVGhpcyBtZXRob2QgcmVxdWlyZXMgcmVidWlsZGluZyBldmVyeSB0aW1l
IHlvdSB1cGdyYWRlIEdvb2dsZSBUZXN0IGluIHlvdXIgcHJvamVjdC4KKyAgKiAqKk9wdGlvbiAy
KiogLS0tIElmIHlvdSBhcmUgZ29pbmcgdG8gYmUgbGl2aW5nIG9mZiB0aGUgdHJ1bmsgb2YgR29v
Z2xlIFRlc3QsIGluY29ycG9yYXRpbmcgaXRzIGxhdGVzdCBmZWF0dXJlcyBpbnRvIHlvdXIgdW5p
dCB0ZXN0cyAob3IgYXJlIGEgR29vZ2xlIFRlc3QgZGV2ZWxvcGVyIHlvdXJzZWxmKS4gWW91J2xs
IHdhbnQgdG8gcmVidWlsZCB0aGUgZnJhbWV3b3JrIGV2ZXJ5IHRpbWUgdGhlIHNvdXJjZSB1cGRh
dGVzLiB0byBkbyB0aGlzLCB5b3UnbGwgbmVlZCB0byBhZGQgdGhlIGd0ZXN0Lnhjb2RlcHJvaiBm
aWxlLCBub3QgdGhlIGZyYW1ld29yayBpdHNlbGYsIHRvIHlvdXIgb3duIFhjb2RlIHByb2plY3Qu
IFRoZW4sIGZyb20gdGhlIGJ1aWxkIHByb2R1Y3RzIHRoYXQgYXJlIHJldmVhbGVkIGJ5IHRoZSBw
cm9qZWN0J3MgZGlzY2xvc3VyZSB0cmlhbmdsZSwgeW91IGNhbiBmaW5kIHRoZSBndGVzdC5mcmFt
ZXdvcmssIHdoaWNoIGNhbiBiZSBhZGRlZCB0byB5b3VyIHRhcmdldHMgKGRpc2N1c3NlZCBiZWxv
dykuCisKKyMgTWFrZSBhIFRlc3QgVGFyZ2V0ICMKKworVG8gc3RhcnQgd3JpdGluZyB0ZXN0cywg
bWFrZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0LiBUaGlzIHRhcmdldCB0ZW1wbGF0ZSBpcyBh
dmFpbGFibGUgdW5kZXIgQlNELCBDb2NvYSwgb3IgQ2FyYm9uLiBBZGQgeW91ciB1bml0IHRlc3Qg
c291cmNlIGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJjZXMiIGJ1aWxkIHBoYXNlIG9mIHRoZSB0
YXJnZXQuCisKK05leHQsIHlvdSdsbCB3YW50IHRvIGFkZCBndGVzdC5mcmFtZXdvcmsgaW4gdHdv
IGRpZmZlcmVudCB3YXlzLCBkZXBlbmRpbmcgdXBvbiB3aGljaCBvcHRpb24geW91IGNob3NlIGFi
b3ZlLgorCisgICogKipPcHRpb24gMSoqIC0tLSBEdXJpbmcgY29tcGlsYXRpb24sIFhjb2RlIHdp
bGwgbmVlZCB0byBrbm93IHRoYXQgeW91IGFyZSBsaW5raW5nIGFnYWluc3QgdGhlIGd0ZXN0LmZy
YW1ld29yay4gQWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8gdGhlICJMaW5rIEJpbmFyeSB3aXRo
IExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gVGhpcyB3aWxsIGlu
Y2x1ZGUgdGhlIEdvb2dsZSBUZXN0IGhlYWRlcnMgaW4geW91ciBoZWFkZXIgc2VhcmNoIHBhdGgs
IGFuZCB3aWxsIHRlbGwgdGhlIGxpbmtlciB3aGVyZSB0byBmaW5kIHRoZSBsaWJyYXJ5LgorICAq
ICoqT3B0aW9uIDIqKiAtLS0gSWYgeW91ciB3b3JraW5nIG91dCBvZiB0aGUgdHJ1bmssIHlvdSds
bCBhbHNvIHdhbnQgdG8gYWRkIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyICJMaW5rIEJpbmFyeSB3
aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gSW4gYWRkaXRp
b24sIHlvdSdsbCAgd2FudCB0byBhZGQgdGhlIGd0ZXN0LmZyYW1ld29yayBhcyBhIGRlcGVuZGVu
Y3kgdG8geW91ciB1bml0IHRlc3QgdGFyZ2V0LiBUaGlzIHdheSwgWGNvZGUgd2lsbCBtYWtlIHN1
cmUgdGhhdCBndGVzdC5mcmFtZXdvcmsgaXMgdXAgdG8gZGF0ZSwgZXZlcnkgdGltZSB5b3VyIGJ1
aWxkIHlvdXIgdGFyZ2V0LiBGaW5hbGx5LCBpZiB5b3UgZG9uJ3Qgc2hhcmUgYnVpbGQgZGlyZWN0
b3JpZXMgd2l0aCBHb29nbGUgVGVzdCwgeW91J2xsIGhhdmUgdG8gY29weSB0aGUgZ3Rlc3QuZnJh
bWV3b3JrIGludG8geW91ciBvd24gYnVpbGQgcHJvZHVjdHMgZGlyZWN0b3J5IHVzaW5nIGEgIlJ1
biBTY3JpcHQiIGJ1aWxkIHBoYXNlLgorCisjIFNldCBVcCB0aGUgRXhlY3V0YWJsZSBSdW4gRW52
aXJvbm1lbnQgIworCitTaW5jZSB0aGUgdW5pdCB0ZXN0IGV4ZWN1dGFibGUgaXMgYSBzaGVsbCB0
b29sLCBpdCBkb2Vzbid0IGhhdmUgYSBidW5kbGUgd2l0aCBhIGBDb250ZW50cy9GcmFtZXdvcmtz
YCBkaXJlY3RvcnksIGluIHdoaWNoIHRvIHBsYWNlIGd0ZXN0LmZyYW1ld29yay4gSW5zdGVhZCwg
dGhlIGR5bmFtaWMgbGlua2VyIG11c3QgYmUgdG9sZCBhdCBydW50aW1lIHRvIHNlYXJjaCBmb3Ig
dGhlIGZyYW1ld29yayBpbiBhbm90aGVyIGxvY2F0aW9uLiBUaGlzIGNhbiBiZSBhY2NvbXBsaXNo
ZWQgYnkgc2V0dGluZyB0aGUgIkRZTERcX0ZSQU1FV09SS1xfUEFUSCIgZW52aXJvbm1lbnQgdmFy
aWFibGUgaW4gdGhlICJFZGl0IEFjdGl2ZSBFeGVjdXRhYmxlIC4uLiIgQXJndW1lbnRzIHRhYiwg
dW5kZXIgIlZhcmlhYmxlcyB0byBiZSBzZXQgaW4gdGhlIGVudmlyb25tZW50OiIuIFRoZSBwYXRo
IGZvciB0aGlzIHZhbHVlIGlzIHRoZSBwYXRoIChyZWxhdGl2ZSBvciBhYnNvbHV0ZSkgb2YgdGhl
IGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsuCisKK0lmIHlvdSBoYXZl
bid0IHNldCB1cCB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRILCBjb3JyZWN0bHksIHlvdSBtaWdo
dCBnZXQgYSBtZXNzYWdlIGxpa2UgdGhpczoKKworYGBgCitbU2Vzc2lvbiBzdGFydGVkIGF0IDIw
MDgtMDgtMTUgMDY6MjM6NTcgLTA2MDAuXQorICBkeWxkOiBMaWJyYXJ5IG5vdCBsb2FkZWQ6IEBs
b2FkZXJfcGF0aC8uLi9GcmFtZXdvcmtzL2d0ZXN0LmZyYW1ld29yay9WZXJzaW9ucy9BL2d0ZXN0
CisgICAgUmVmZXJlbmNlZCBmcm9tOiAvVXNlcnMvdXNlcm5hbWUvRG9jdW1lbnRzL1NhbmRib3gv
Z3Rlc3RTYW1wbGUvYnVpbGQvRGVidWcvV2lkZ2V0RnJhbWV3b3JrVGVzdAorICAgIFJlYXNvbjog
aW1hZ2Ugbm90IGZvdW5kCitgYGAKKworVG8gY29ycmVjdCB0aGlzIHByb2JsZW0sIGdvdCB0byB0
aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGV4ZWN1dGFibGUgbmFtZWQgaW4gIlJlZmVyZW5j
ZWQgZnJvbToiIHZhbHVlIGluIHRoZSBlcnJvciBtZXNzYWdlIGFib3ZlLiBUaGVuLCB3aXRoIHRo
ZSB0ZXJtaW5hbCBpbiB0aGlzIGxvY2F0aW9uLCBmaW5kIHRoZSByZWxhdGl2ZSBwYXRoIHRvIHRo
ZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrLiBUaGF0IGlzIHRoZSB2
YWx1ZSB5b3UnbGwgbmVlZCB0byBzZXQgYXMgdGhlIERZTERcX0ZSQU1FV09SS1xfUEFUSC4KKwor
IyBCdWlsZCBhbmQgR28gIworCitOb3csIHdoZW4geW91IGNsaWNrICJCdWlsZCBhbmQgR28iLCB0
aGUgdGVzdCB3aWxsIGJlIGV4ZWN1dGVkLiBEdW1waW5nIG91dCBzb21ldGhpbmcgbGlrZSB0aGlz
OgorCitgYGAKK1tTZXNzaW9uIHN0YXJ0ZWQgYXQgMjAwOC0wOC0wNiAwNjozNjoxMyAtMDYwMC5d
CitbPT09PT09PT09PV0gUnVubmluZyAyIHRlc3RzIGZyb20gMSB0ZXN0IGNhc2UuCitbLS0tLS0t
LS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgorWy0tLS0tLS0tLS1dIDIgdGVz
dHMgZnJvbSBXaWRnZXRJbml0aWFsaXplclRlc3QKK1sgUlVOICAgICAgXSBXaWRnZXRJbml0aWFs
aXplclRlc3QuVGVzdENvbnN0cnVjdG9yCitbICAgICAgIE9LIF0gV2lkZ2V0SW5pdGlhbGl6ZXJU
ZXN0LlRlc3RDb25zdHJ1Y3RvcgorWyBSVU4gICAgICBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5U
ZXN0Q29udmVyc2lvbgorWyAgICAgICBPSyBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29u
dmVyc2lvbgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgor
Wz09PT09PT09PT1dIDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZSByYW4uCitbICBQQVNTRUQgIF0g
MiB0ZXN0cy4KKworVGhlIERlYnVnZ2VyIGhhcyBleGl0ZWQgd2l0aCBzdGF0dXMgMC4gIAorYGBg
CisKKyMgU3VtbWFyeSAjCisKK1VuaXQgdGVzdGluZyBpcyBhIHZhbHVhYmxlIHdheSB0byBlbnN1
cmUgeW91ciBkYXRhIG1vZGVsIHN0YXlzIHZhbGlkIGV2ZW4gZHVyaW5nIHJhcGlkIGRldmVsb3Bt
ZW50IG9yIHJlZmFjdG9yaW5nLiBUaGUgR29vZ2xlIFRlc3RpbmcgRnJhbWV3b3JrIGlzIGEgZ3Jl
YXQgdW5pdCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBhbmQgQysrIHdoaWNoIGludGVncmF0ZXMg
d2VsbCB3aXRoIGFuIFhjb2RlIGRldmVsb3BtZW50IGVudmlyb25tZW50LgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3Mv
VjFfN19BZHZhbmNlZEd1aWRlLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV83
X0FkdmFuY2VkR3VpZGUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ0YWY4ZjM2NmFhNmFjYTgxNDQwZGJkNjY1
OWI1NGJlYWUzMTk5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2RvY3MvVjFfN19BZHZhbmNlZEd1aWRlLm1kCkBAIC0wLDAgKzEsMjE4MSBAQAorCisKK05vdyB0
aGF0IHlvdSBoYXZlIHJlYWQgW1ByaW1lcl0oVjFfN19QcmltZXIubWQpIGFuZCBsZWFybmVkIGhv
dyB0byB3cml0ZSB0ZXN0cwordXNpbmcgR29vZ2xlIFRlc3QsIGl0J3MgdGltZSB0byBsZWFybiBz
b21lIG5ldyB0cmlja3MuIFRoaXMgZG9jdW1lbnQKK3dpbGwgc2hvdyB5b3UgbW9yZSBhc3NlcnRp
b25zIGFzIHdlbGwgYXMgaG93IHRvIGNvbnN0cnVjdCBjb21wbGV4CitmYWlsdXJlIG1lc3NhZ2Vz
LCBwcm9wYWdhdGUgZmF0YWwgZmFpbHVyZXMsIHJldXNlIGFuZCBzcGVlZCB1cCB5b3VyCit0ZXN0
IGZpeHR1cmVzLCBhbmQgdXNlIHZhcmlvdXMgZmxhZ3Mgd2l0aCB5b3VyIHRlc3RzLgorCisjIE1v
cmUgQXNzZXJ0aW9ucyAjCisKK1RoaXMgc2VjdGlvbiBjb3ZlcnMgc29tZSBsZXNzIGZyZXF1ZW50
bHkgdXNlZCwgYnV0IHN0aWxsIHNpZ25pZmljYW50LAorYXNzZXJ0aW9ucy4KKworIyMgRXhwbGlj
aXQgU3VjY2VzcyBhbmQgRmFpbHVyZSAjIworCitUaGVzZSB0aHJlZSBhc3NlcnRpb25zIGRvIG5v
dCBhY3R1YWxseSB0ZXN0IGEgdmFsdWUgb3IgZXhwcmVzc2lvbi4gSW5zdGVhZCwKK3RoZXkgZ2Vu
ZXJhdGUgYSBzdWNjZXNzIG9yIGZhaWx1cmUgZGlyZWN0bHkuIExpa2UgdGhlIG1hY3JvcyB0aGF0
IGFjdHVhbGx5CitwZXJmb3JtIGEgdGVzdCwgeW91IG1heSBzdHJlYW0gYSBjdXN0b20gZmFpbHVy
ZSBtZXNzYWdlIGludG8gdGhlIHRoZW0uCisKK3wgYFNVQ0NFRUQoKTtgIHwKK3w6LS0tLS0tLS0t
LS0tLXwKKworR2VuZXJhdGVzIGEgc3VjY2Vzcy4gVGhpcyBkb2VzIE5PVCBtYWtlIHRoZSBvdmVy
YWxsIHRlc3Qgc3VjY2VlZC4gQSB0ZXN0IGlzCitjb25zaWRlcmVkIHN1Y2Nlc3NmdWwgb25seSBp
ZiBub25lIG9mIGl0cyBhc3NlcnRpb25zIGZhaWwgZHVyaW5nIGl0cyBleGVjdXRpb24uCisKK05v
dGU6IGBTVUNDRUVEKClgIGlzIHB1cmVseSBkb2N1bWVudGFyeSBhbmQgY3VycmVudGx5IGRvZXNu
J3QgZ2VuZXJhdGUgYW55Cit1c2VyLXZpc2libGUgb3V0cHV0LiBIb3dldmVyLCB3ZSBtYXkgYWRk
IGBTVUNDRUVEKClgIG1lc3NhZ2VzIHRvIEdvb2dsZSBUZXN0J3MKK291dHB1dCBpbiB0aGUgZnV0
dXJlLgorCit8IGBGQUlMKCk7YCAgfCBgQUREX0ZBSUxVUkUoKTtgIHwgYEFERF9GQUlMVVJFX0FU
KCJgX2ZpbGVcX3BhdGhfYCIsIGBfbGluZVxfbnVtYmVyX2ApO2AgfAorfDotLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXwKKworYEZBSUwoKWAgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSwg
d2hpbGUgYEFERF9GQUlMVVJFKClgIGFuZCBgQUREX0ZBSUxVUkVfQVQoKWAgZ2VuZXJhdGUgYSBu
b25mYXRhbAorZmFpbHVyZS4gVGhlc2UgYXJlIHVzZWZ1bCB3aGVuIGNvbnRyb2wgZmxvdywgcmF0
aGVyIHRoYW4gYSBCb29sZWFuIGV4cHJlc3Npb24sCitkZXRlcmVtaW5lcyB0aGUgdGVzdCdzIHN1
Y2Nlc3Mgb3IgZmFpbHVyZS4gRm9yIGV4YW1wbGUsIHlvdSBtaWdodCB3YW50IHRvIHdyaXRlCitz
b21ldGhpbmcgbGlrZToKKworYGBgCitzd2l0Y2goZXhwcmVzc2lvbikgeworICBjYXNlIDE6IC4u
LiBzb21lIGNoZWNrcyAuLi4KKyAgY2FzZSAyOiAuLi4gc29tZSBvdGhlciBjaGVja3MKKyAgLi4u
CisgIGRlZmF1bHQ6IEZBSUwoKSA8PCAiV2Ugc2hvdWxkbid0IGdldCBoZXJlLiI7Cit9CitgYGAK
KworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIEV4Y2VwdGlvbiBB
c3NlcnRpb25zICMjCisKK1RoZXNlIGFyZSBmb3IgdmVyaWZ5aW5nIHRoYXQgYSBwaWVjZSBvZiBj
b2RlIHRocm93cyAob3IgZG9lcyBub3QKK3Rocm93KSBhbiBleGNlcHRpb24gb2YgdGhlIGdpdmVu
IHR5cGU6CisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiog
fCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfVEhST1coYF9zdGF0ZW1lbnRfLCBf
ZXhjZXB0aW9uXF90eXBlX2ApO2AgIHwgYEVYUEVDVF9USFJPVyhgX3N0YXRlbWVudF8sIF9leGNl
cHRpb25cX3R5cGVfYCk7YCAgfCBfc3RhdGVtZW50XyB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHRo
ZSBnaXZlbiB0eXBlICB8Cit8IGBBU1NFUlRfQU5ZX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAg
ICAgICAgICAgICAgfCBgRVhQRUNUX0FOWV9USFJPVyhgX3N0YXRlbWVudF9gKTtgICAgICAgICAg
ICAgICAgIHwgX3N0YXRlbWVudF8gdGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiBhbnkgdHlwZSAgICAg
ICAgfAorfCBgQVNTRVJUX05PX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAg
IHwgYEVYUEVDVF9OT19USFJPVyhgX3N0YXRlbWVudF9gKTtgICAgICAgICAgICAgICAgICB8IF9z
dGF0ZW1lbnRfIGRvZXNuJ3QgdGhyb3cgYW55IGV4Y2VwdGlvbiAgICAgICAgICAgIHwKKworRXhh
bXBsZXM6CisKK2BgYAorQVNTRVJUX1RIUk9XKEZvbyg1KSwgYmFyX2V4Y2VwdGlvbik7CisKK0VY
UEVDVF9OT19USFJPVyh7CisgIGludCBuID0gNTsKKyAgQmFyKCZuKTsKK30pOworYGBgCisKK19B
dmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuMS4wLgor
CisjIyBQcmVkaWNhdGUgQXNzZXJ0aW9ucyBmb3IgQmV0dGVyIEVycm9yIE1lc3NhZ2VzICMjCisK
K0V2ZW4gdGhvdWdoIEdvb2dsZSBUZXN0IGhhcyBhIHJpY2ggc2V0IG9mIGFzc2VydGlvbnMsIHRo
ZXkgY2FuIG5ldmVyIGJlCitjb21wbGV0ZSwgYXMgaXQncyBpbXBvc3NpYmxlIChub3IgYSBnb29k
IGlkZWEpIHRvIGFudGljaXBhdGUgYWxsIHRoZSBzY2VuYXJpb3MKK2EgdXNlciBtaWdodCBydW4g
aW50by4gVGhlcmVmb3JlLCBzb21ldGltZXMgYSB1c2VyIGhhcyB0byB1c2UgYEVYUEVDVF9UUlVF
KClgCit0byBjaGVjayBhIGNvbXBsZXggZXhwcmVzc2lvbiwgZm9yIGxhY2sgb2YgYSBiZXR0ZXIg
bWFjcm8uIFRoaXMgaGFzIHRoZSBwcm9ibGVtCitvZiBub3Qgc2hvd2luZyB5b3UgdGhlIHZhbHVl
cyBvZiB0aGUgcGFydHMgb2YgdGhlIGV4cHJlc3Npb24sIG1ha2luZyBpdCBoYXJkIHRvCit1bmRl
cnN0YW5kIHdoYXQgd2VudCB3cm9uZy4gQXMgYSB3b3JrYXJvdW5kLCBzb21lIHVzZXJzIGNob29z
ZSB0byBjb25zdHJ1Y3QgdGhlCitmYWlsdXJlIG1lc3NhZ2UgYnkgdGhlbXNlbHZlcywgc3RyZWFt
aW5nIGl0IGludG8gYEVYUEVDVF9UUlVFKClgLiBIb3dldmVyLCB0aGlzCitpcyBhd2t3YXJkIGVz
cGVjaWFsbHkgd2hlbiB0aGUgZXhwcmVzc2lvbiBoYXMgc2lkZS1lZmZlY3RzIG9yIGlzIGV4cGVu
c2l2ZSB0bworZXZhbHVhdGUuCisKK0dvb2dsZSBUZXN0IGdpdmVzIHlvdSB0aHJlZSBkaWZmZXJl
bnQgb3B0aW9ucyB0byBzb2x2ZSB0aGlzIHByb2JsZW06CisKKyMjIyBVc2luZyBhbiBFeGlzdGlu
ZyBCb29sZWFuIEZ1bmN0aW9uICMjIworCitJZiB5b3UgYWxyZWFkeSBoYXZlIGEgZnVuY3Rpb24g
b3IgYSBmdW5jdG9yIHRoYXQgcmV0dXJucyBgYm9vbGAgKG9yIGEgdHlwZQordGhhdCBjYW4gYmUg
aW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYGJvb2xgKSwgeW91IGNhbiB1c2UgaXQgaW4gYSBfcHJl
ZGljYXRlCithc3NlcnRpb25fIHRvIGdldCB0aGUgZnVuY3Rpb24gYXJndW1lbnRzIHByaW50ZWQg
Zm9yIGZyZWU6CisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9u
KiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfUFJFRDEoYF9wcmVkMSwgdmFs
MV9gKTtgICAgICAgIHwgYEVYUEVDVF9QUkVEMShgX3ByZWQxLCB2YWwxX2ApO2AgfCBfcHJlZDEo
dmFsMSlfIHJldHVybnMgdHJ1ZSB8Cit8IGBBU1NFUlRfUFJFRDIoYF9wcmVkMiwgdmFsMSwgdmFs
Ml9gKTtgIHwgYEVYUEVDVF9QUkVEMihgX3ByZWQyLCB2YWwxLCB2YWwyX2ApO2AgfCAgX3ByZWQy
KHZhbDEsIHZhbDIpXyByZXR1cm5zIHRydWUgfAorfCAgLi4uICAgICAgICAgICAgICAgIHwgLi4u
ICAgICAgICAgICAgICAgICAgICB8IC4uLiAgICAgICAgICB8CisKK0luIHRoZSBhYm92ZSwgX3By
ZWRuXyBpcyBhbiBfbl8tYXJ5IHByZWRpY2F0ZSBmdW5jdGlvbiBvciBmdW5jdG9yLCB3aGVyZQor
X3ZhbDFfLCBfdmFsMl8sIC4uLiwgYW5kIF92YWxuXyBhcmUgaXRzIGFyZ3VtZW50cy4gVGhlIGFz
c2VydGlvbiBzdWNjZWVkcworaWYgdGhlIHByZWRpY2F0ZSByZXR1cm5zIGB0cnVlYCB3aGVuIGFw
cGxpZWQgdG8gdGhlIGdpdmVuIGFyZ3VtZW50cywgYW5kIGZhaWxzCitvdGhlcndpc2UuIFdoZW4g
dGhlIGFzc2VydGlvbiBmYWlscywgaXQgcHJpbnRzIHRoZSB2YWx1ZSBvZiBlYWNoIGFyZ3VtZW50
LiBJbgorZWl0aGVyIGNhc2UsIHRoZSBhcmd1bWVudHMgYXJlIGV2YWx1YXRlZCBleGFjdGx5IG9u
Y2UuCisKK0hlcmUncyBhbiBleGFtcGxlLiBHaXZlbgorCitgYGAKKy8vIFJldHVybnMgdHJ1ZSBp
ZmYgbSBhbmQgbiBoYXZlIG5vIGNvbW1vbiBkaXZpc29ycyBleGNlcHQgMS4KK2Jvb2wgTXV0dWFs
bHlQcmltZShpbnQgbSwgaW50IG4pIHsgLi4uIH0KK2NvbnN0IGludCBhID0gMzsKK2NvbnN0IGlu
dCBiID0gNDsKK2NvbnN0IGludCBjID0gMTA7CitgYGAKKwordGhlIGFzc2VydGlvbiBgRVhQRUNU
X1BSRUQyKE11dHVhbGx5UHJpbWUsIGEsIGIpO2Agd2lsbCBzdWNjZWVkLCB3aGlsZSB0aGUKK2Fz
c2VydGlvbiBgRVhQRUNUX1BSRUQyKE11dHVhbGx5UHJpbWUsIGIsIGMpO2Agd2lsbCBmYWlsIHdp
dGggdGhlIG1lc3NhZ2UKKworPHByZT4KKyFNdXR1YWxseVByaW1lKGIsIGMpIGlzIGZhbHNlLCB3
aGVyZTxicj4KK2IgaXMgNDxicj4KK2MgaXMgMTA8YnI+Cis8L3ByZT4KKworKipOb3RlczoqKgor
CisgIDEuIElmIHlvdSBzZWUgYSBjb21waWxlciBlcnJvciAibm8gbWF0Y2hpbmcgZnVuY3Rpb24g
dG8gY2FsbCIgd2hlbiB1c2luZyBgQVNTRVJUX1BSRUQqYCBvciBgRVhQRUNUX1BSRUQqYCwgcGxl
YXNlIHNlZSBbdGhpc10oVjFfN19GQVEubWQjdGhlLWNvbXBpbGVyLWNvbXBsYWlucy1hYm91dC11
bmRlZmluZWQtcmVmZXJlbmNlcy10by1zb21lLXN0YXRpYy1jb25zdC1tZW1iZXItdmFyaWFibGVz
LWJ1dC1pLWRpZC1kZWZpbmUtdGhlbS1pbi10aGUtY2xhc3MtYm9keS13aGF0cy13cm9uZykgZm9y
IGhvdyB0byByZXNvbHZlIGl0LgorICAxLiBDdXJyZW50bHkgd2Ugb25seSBwcm92aWRlIHByZWRp
Y2F0ZSBhc3NlcnRpb25zIG9mIGFyaXR5IDw9IDUuIElmIHlvdSBuZWVkIGEgaGlnaGVyLWFyaXR5
IGFzc2VydGlvbiwgbGV0IHVzIGtub3cuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjCisKKyMjIyBVc2luZyBhIEZ1bmN0aW9uIFRoYXQgUmV0dXJucyBhbiBBc3NlcnRpb25S
ZXN1bHQgIyMjCisKK1doaWxlIGBFWFBFQ1RfUFJFRCooKWAgYW5kIGZyaWVuZHMgYXJlIGhhbmR5
IGZvciBhIHF1aWNrIGpvYiwgdGhlCitzeW50YXggaXMgbm90IHNhdGlzZmFjdG9yeTogeW91IGhh
dmUgdG8gdXNlIGRpZmZlcmVudCBtYWNyb3MgZm9yCitkaWZmZXJlbnQgYXJpdGllcywgYW5kIGl0
IGZlZWxzIG1vcmUgbGlrZSBMaXNwIHRoYW4gQysrLiAgVGhlCitgOjp0ZXN0aW5nOjpBc3NlcnRp
b25SZXN1bHRgIGNsYXNzIHNvbHZlcyB0aGlzIHByb2JsZW0uCisKK0FuIGBBc3NlcnRpb25SZXN1
bHRgIG9iamVjdCByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYW4gYXNzZXJ0aW9uCisod2hldGhl
ciBpdCdzIGEgc3VjY2VzcyBvciBhIGZhaWx1cmUsIGFuZCBhbiBhc3NvY2lhdGVkIG1lc3NhZ2Up
LiAgWW91CitjYW4gY3JlYXRlIGFuIGBBc3NlcnRpb25SZXN1bHRgIHVzaW5nIG9uZSBvZiB0aGVz
ZSBmYWN0b3J5CitmdW5jdGlvbnM6CisKK2BgYAorbmFtZXNwYWNlIHRlc3RpbmcgeworCisvLyBS
ZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBhbiBhc3Nl
cnRpb24gaGFzCisvLyBzdWNjZWVkZWQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uU3VjY2Vz
cygpOworCisvLyBSZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUg
dGhhdCBhbiBhc3NlcnRpb24gaGFzCisvLyBmYWlsZWQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0
aW9uRmFpbHVyZSgpOworCit9CitgYGAKKworWW91IGNhbiB0aGVuIHVzZSB0aGUgYDw8YCBvcGVy
YXRvciB0byBzdHJlYW0gbWVzc2FnZXMgdG8gdGhlCitgQXNzZXJ0aW9uUmVzdWx0YCBvYmplY3Qu
CisKK1RvIHByb3ZpZGUgbW9yZSByZWFkYWJsZSBtZXNzYWdlcyBpbiBCb29sZWFuIGFzc2VydGlv
bnMKKyhlLmcuIGBFWFBFQ1RfVFJVRSgpYCksIHdyaXRlIGEgcHJlZGljYXRlIGZ1bmN0aW9uIHRo
YXQgcmV0dXJucworYEFzc2VydGlvblJlc3VsdGAgaW5zdGVhZCBvZiBgYm9vbGAuIEZvciBleGFt
cGxlLCBpZiB5b3UgZGVmaW5lCitgSXNFdmVuKClgIGFzOgorCitgYGAKKzo6dGVzdGluZzo6QXNz
ZXJ0aW9uUmVzdWx0IElzRXZlbihpbnQgbikgeworICBpZiAoKG4gJSAyKSA9PSAwKQorICAgIHJl
dHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKKyAgZWxzZQorICAgIHJldHVybiA6
OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2RkIjsKK30KK2BgYAor
CitpbnN0ZWFkIG9mOgorCitgYGAKK2Jvb2wgSXNFdmVuKGludCBuKSB7CisgIHJldHVybiAobiAl
IDIpID09IDA7Cit9CitgYGAKKwordGhlIGZhaWxlZCBhc3NlcnRpb24gYEVYUEVDVF9UUlVFKElz
RXZlbihGaWIoNCkpKWAgd2lsbCBwcmludDoKKworPHByZT4KK1ZhbHVlIG9mOiBJc0V2ZW4oRmli
KDQpKTxicj4KK0FjdHVhbDogZmFsc2UgKCozIGlzIG9kZCopPGJyPgorRXhwZWN0ZWQ6IHRydWU8
YnI+Cis8L3ByZT4KKworaW5zdGVhZCBvZiBhIG1vcmUgb3BhcXVlCisKKzxwcmU+CitWYWx1ZSBv
ZjogSXNFdmVuKEZpYig0KSk8YnI+CitBY3R1YWw6IGZhbHNlPGJyPgorRXhwZWN0ZWQ6IHRydWU8
YnI+Cis8L3ByZT4KKworSWYgeW91IHdhbnQgaW5mb3JtYXRpdmUgbWVzc2FnZXMgaW4gYEVYUEVD
VF9GQUxTRWAgYW5kIGBBU1NFUlRfRkFMU0VgCithcyB3ZWxsLCBhbmQgYXJlIGZpbmUgd2l0aCBt
YWtpbmcgdGhlIHByZWRpY2F0ZSBzbG93ZXIgaW4gdGhlIHN1Y2Nlc3MKK2Nhc2UsIHlvdSBjYW4g
c3VwcGx5IGEgc3VjY2VzcyBtZXNzYWdlOgorCitgYGAKKzo6dGVzdGluZzo6QXNzZXJ0aW9uUmVz
dWx0IElzRXZlbihpbnQgbikgeworICBpZiAoKG4gJSAyKSA9PSAwKQorICAgIHJldHVybiA6OnRl
c3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKSA8PCBuIDw8ICIgaXMgZXZlbiI7CisgIGVsc2UKKyAg
ICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgbiA8PCAiIGlzIG9kZCI7
Cit9CitgYGAKKworVGhlbiB0aGUgc3RhdGVtZW50IGBFWFBFQ1RfRkFMU0UoSXNFdmVuKEZpYig2
KSkpYCB3aWxsIHByaW50CisKKzxwcmU+CitWYWx1ZSBvZjogSXNFdmVuKEZpYig2KSk8YnI+CitB
Y3R1YWw6IHRydWUgKDggaXMgZXZlbik8YnI+CitFeHBlY3RlZDogZmFsc2U8YnI+Cis8L3ByZT4K
KworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS40
LjEuCisKKyMjIyBVc2luZyBhIFByZWRpY2F0ZS1Gb3JtYXR0ZXIgIyMjCisKK0lmIHlvdSBmaW5k
IHRoZSBkZWZhdWx0IG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IGAoQVNTRVJUfEVYUEVDVClfUFJFRCpg
IGFuZAorYChBU1NFUlR8RVhQRUNUKV8oVFJVRXxGQUxTRSlgIHVuc2F0aXNmYWN0b3J5LCBvciBz
b21lIGFyZ3VtZW50cyB0byB5b3VyCitwcmVkaWNhdGUgZG8gbm90IHN1cHBvcnQgc3RyZWFtaW5n
IHRvIGBvc3RyZWFtYCwgeW91IGNhbiBpbnN0ZWFkIHVzZSB0aGUKK2ZvbGxvd2luZyBfcHJlZGlj
YXRlLWZvcm1hdHRlciBhc3NlcnRpb25zXyB0byBfZnVsbHlfIGN1c3RvbWl6ZSBob3cgdGhlCitt
ZXNzYWdlIGlzIGZvcm1hdHRlZDoKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRh
bCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9QUkVEX0ZP
Uk1BVDEoYF9wcmVkXF9mb3JtYXQxLCB2YWwxX2ApO2AgICAgICAgIHwgYEVYUEVDVF9QUkVEX0ZP
Uk1BVDEoYF9wcmVkXF9mb3JtYXQxLCB2YWwxX2ApOyB8IF9wcmVkXF9mb3JtYXQxKHZhbDEpXyBp
cyBzdWNjZXNzZnVsIHwKK3wgYEFTU0VSVF9QUkVEX0ZPUk1BVDIoYF9wcmVkXF9mb3JtYXQyLCB2
YWwxLCB2YWwyX2ApO2AgfCBgRVhQRUNUX1BSRURfRk9STUFUMihgX3ByZWRcX2Zvcm1hdDIsIHZh
bDEsIHZhbDJfYCk7YCB8IF9wcmVkXF9mb3JtYXQyKHZhbDEsIHZhbDIpXyBpcyBzdWNjZXNzZnVs
IHwKK3wgYC4uLmAgICAgICAgICAgICAgICB8IGAuLi5gICAgICAgICAgICAgICAgICAgfCBgLi4u
YCAgICAgICAgfAorCitUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIHRoZSBwcmV2aW91
cyB0d28gZ3JvdXBzIG9mIG1hY3JvcyBpcyB0aGF0IGluc3RlYWQgb2YKK2EgcHJlZGljYXRlLCBg
KEFTU0VSVHxFWFBFQ1QpX1BSRURfRk9STUFUKmAgdGFrZSBhIF9wcmVkaWNhdGUtZm9ybWF0dGVy
XworKF9wcmVkXF9mb3JtYXRuXyksIHdoaWNoIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3RvciB3aXRo
IHRoZSBzaWduYXR1cmU6CisKK2A6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkaWNhdGVG
b3JtYXR0ZXJuKGNvbnN0IGNoYXIqIGBfZXhwcjFfYCwgY29uc3QgY2hhciogYF9leHByMl9gLCAu
Li4gY29uc3QgY2hhciogYF9leHBybl9gLCBUMSBgX3ZhbDFfYCwgVDIgYF92YWwyX2AsIC4uLiBU
biBgX3ZhbG5fYCk7YAorCit3aGVyZSBfdmFsMV8sIF92YWwyXywgLi4uLCBhbmQgX3ZhbG5fIGFy
ZSB0aGUgdmFsdWVzIG9mIHRoZSBwcmVkaWNhdGUKK2FyZ3VtZW50cywgYW5kIF9leHByMV8sIF9l
eHByMl8sIC4uLiwgYW5kIF9leHBybl8gYXJlIHRoZSBjb3JyZXNwb25kaW5nCitleHByZXNzaW9u
cyBhcyB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGNvZGUuIFRoZSB0eXBlcyBgVDFgLCBgVDJg
LCAuLi4sIGFuZAorYFRuYCBjYW4gYmUgZWl0aGVyIHZhbHVlIHR5cGVzIG9yIHJlZmVyZW5jZSB0
eXBlcy4gRm9yIGV4YW1wbGUsIGlmIGFuCithcmd1bWVudCBoYXMgdHlwZSBgRm9vYCwgeW91IGNh
biBkZWNsYXJlIGl0IGFzIGVpdGhlciBgRm9vYCBvciBgY29uc3QgRm9vJmAsCit3aGljaGV2ZXIg
aXMgYXBwcm9wcmlhdGUuCisKK0EgcHJlZGljYXRlLWZvcm1hdHRlciByZXR1cm5zIGEgYDo6dGVz
dGluZzo6QXNzZXJ0aW9uUmVzdWx0YCBvYmplY3QgdG8gaW5kaWNhdGUKK3doZXRoZXIgdGhlIGFz
c2VydGlvbiBoYXMgc3VjY2VlZGVkIG9yIG5vdC4gVGhlIG9ubHkgd2F5IHRvIGNyZWF0ZSBzdWNo
IGFuCitvYmplY3QgaXMgdG8gY2FsbCBvbmUgb2YgdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnM6CisK
K0FzIGFuIGV4YW1wbGUsIGxldCdzIGltcHJvdmUgdGhlIGZhaWx1cmUgbWVzc2FnZSBpbiB0aGUg
cHJldmlvdXMgZXhhbXBsZSwgd2hpY2ggdXNlcyBgRVhQRUNUX1BSRUQyKClgOgorCitgYGAKKy8v
IFJldHVybnMgdGhlIHNtYWxsZXN0IHByaW1lIGNvbW1vbiBkaXZpc29yIG9mIG0gYW5kIG4sCisv
LyBvciAxIHdoZW4gbSBhbmQgbiBhcmUgbXV0dWFsbHkgcHJpbWUuCitpbnQgU21hbGxlc3RQcmlt
ZUNvbW1vbkRpdmlzb3IoaW50IG0sIGludCBuKSB7IC4uLiB9CisKKy8vIEEgcHJlZGljYXRlLWZv
cm1hdHRlciBmb3IgYXNzZXJ0aW5nIHRoYXQgdHdvIGludGVnZXJzIGFyZSBtdXR1YWxseSBwcmlt
ZS4KKzo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IEFzc2VydE11dHVhbGx5UHJpbWUoY29uc3Qg
Y2hhciogbV9leHByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBuX2V4cHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgbikgeworICBpZiAoTXV0dWFsbHlQcmltZShtLCBuKSkKKyAgICBy
ZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CisKKyAgcmV0dXJuIDo6dGVzdGlu
Zzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBtX2V4cHIgPDwgIiBhbmQgIiA8PCBuX2V4
cHIgPDwgIiAoIiA8PCBtIDw8ICIgYW5kICIgPDwgbgorICAgICAgPDwgIikgYXJlIG5vdCBtdXR1
YWxseSBwcmltZSwgIiA8PCAiYXMgdGhleSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgIgorICAgICAg
PDwgU21hbGxlc3RQcmltZUNvbW1vbkRpdmlzb3IobSwgbik7Cit9CitgYGAKKworV2l0aCB0aGlz
IHByZWRpY2F0ZS1mb3JtYXR0ZXIsIHdlIGNhbiB1c2UKKworYGBgCitFWFBFQ1RfUFJFRF9GT1JN
QVQyKEFzc2VydE11dHVhbGx5UHJpbWUsIGIsIGMpOworYGBgCisKK3RvIGdlbmVyYXRlIHRoZSBt
ZXNzYWdlCisKKzxwcmU+CitiIGFuZCBjICg0IGFuZCAxMCkgYXJlIG5vdCBtdXR1YWxseSBwcmlt
ZSwgYXMgdGhleSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgMi48YnI+Cis8L3ByZT4KKworQXMgeW91
IG1heSBoYXZlIHJlYWxpemVkLCBtYW55IG9mIHRoZSBhc3NlcnRpb25zIHdlIGludHJvZHVjZWQg
ZWFybGllciBhcmUKK3NwZWNpYWwgY2FzZXMgb2YgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZPUk1B
VCpgLiBJbiBmYWN0LCBtb3N0IG9mIHRoZW0gYXJlCitpbmRlZWQgZGVmaW5lZCB1c2luZyBgKEVY
UEVDVHxBU1NFUlQpX1BSRURfRk9STUFUKmAuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2lu
ZG93cywgTWFjLgorCisKKyMjIEZsb2F0aW5nLVBvaW50IENvbXBhcmlzb24gIyMKKworQ29tcGFy
aW5nIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgaXMgdHJpY2t5LiBEdWUgdG8gcm91bmQtb2ZmIGVy
cm9ycywgaXQgaXMKK3ZlcnkgdW5saWtlbHkgdGhhdCB0d28gZmxvYXRpbmctcG9pbnRzIHdpbGwg
bWF0Y2ggZXhhY3RseS4gVGhlcmVmb3JlLAorYEFTU0VSVF9FUWAgJ3MgbmFpdmUgY29tcGFyaXNv
biB1c3VhbGx5IGRvZXNuJ3Qgd29yay4gQW5kIHNpbmNlIGZsb2F0aW5nLXBvaW50cworY2FuIGhh
dmUgYSB3aWRlIHZhbHVlIHJhbmdlLCBubyBzaW5nbGUgZml4ZWQgZXJyb3IgYm91bmQgd29ya3Mu
IEl0J3MgYmV0dGVyIHRvCitjb21wYXJlIGJ5IGEgZml4ZWQgcmVsYXRpdmUgZXJyb3IgYm91bmQs
IGV4Y2VwdCBmb3IgdmFsdWVzIGNsb3NlIHRvIDAgZHVlIHRvCit0aGUgbG9zcyBvZiBwcmVjaXNp
b24gdGhlcmUuCisKK0luIGdlbmVyYWwsIGZvciBmbG9hdGluZy1wb2ludCBjb21wYXJpc29uIHRv
IG1ha2Ugc2Vuc2UsIHRoZSB1c2VyIG5lZWRzIHRvCitjYXJlZnVsbHkgY2hvb3NlIHRoZSBlcnJv
ciBib3VuZC4gSWYgdGhleSBkb24ndCB3YW50IG9yIGNhcmUgdG8sIGNvbXBhcmluZyBpbgordGVy
bXMgb2YgVW5pdHMgaW4gdGhlIExhc3QgUGxhY2UgKFVMUHMpIGlzIGEgZ29vZCBkZWZhdWx0LCBh
bmQgR29vZ2xlIFRlc3QKK3Byb3ZpZGVzIGFzc2VydGlvbnMgdG8gZG8gdGhpcy4gRnVsbCBkZXRh
aWxzIGFib3V0IFVMUHMgYXJlIHF1aXRlIGxvbmc7IGlmIHlvdQord2FudCB0byBsZWFybiBtb3Jl
LCBzZWUKK1t0aGlzIGFydGljbGUgb24gZmxvYXQgY29tcGFyaXNvbl0oaHR0cDovL3d3dy5jeWdu
dXMtc29mdHdhcmUuY29tL3BhcGVycy9jb21wYXJpbmdmbG9hdHMvY29tcGFyaW5nZmxvYXRzLmh0
bSkuCisKKyMjIyBGbG9hdGluZy1Qb2ludCBNYWNyb3MgIyMjCisKK3wgKipGYXRhbCBhc3NlcnRp
b24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8
IGBBU1NFUlRfRkxPQVRfRVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgIHwgYEVYUEVDVF9GTE9B
VF9FUShgX2V4cGVjdGVkLCBhY3R1YWxfYCk7YCB8IHRoZSB0d28gYGZsb2F0YCB2YWx1ZXMgYXJl
IGFsbW9zdCBlcXVhbCB8Cit8IGBBU1NFUlRfRE9VQkxFX0VRKGBfZXhwZWN0ZWQsIGFjdHVhbF9g
KTtgIHwgYEVYUEVDVF9ET1VCTEVfRVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgfCB0aGUgdHdv
IGBkb3VibGVgIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsIHwKKworQnkgImFsbW9zdCBlcXVhbCIs
IHdlIG1lYW4gdGhlIHR3byB2YWx1ZXMgYXJlIHdpdGhpbiA0IFVMUCdzIGZyb20gZWFjaAorb3Ro
ZXIuCisKK1RoZSBmb2xsb3dpbmcgYXNzZXJ0aW9ucyBhbGxvdyB5b3UgdG8gY2hvb3NlIHRoZSBh
Y2NlcHRhYmxlIGVycm9yIGJvdW5kOgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZh
dGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX05FQVIo
YF92YWwxLCB2YWwyLCBhYnNcX2Vycm9yX2ApO2AgfCBgRVhQRUNUX05FQVJgXyh2YWwxLCB2YWwy
LCBhYnNcX2Vycm9yX2ApO2AgfCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIF92YWwxXyBhbmQgX3Zh
bDJfIGRvZXNuJ3QgZXhjZWVkIHRoZSBnaXZlbiBhYnNvbHV0ZSBlcnJvciB8CisKK19BdmFpbGFi
aWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgRmxvYXRpbmctUG9pbnQgUHJlZGlj
YXRlLUZvcm1hdCBGdW5jdGlvbnMgIyMjCisKK1NvbWUgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9u
cyBhcmUgdXNlZnVsLCBidXQgbm90IHRoYXQgb2Z0ZW4gdXNlZC4gSW4gb3JkZXIKK3RvIGF2b2lk
IGFuIGV4cGxvc2lvbiBvZiBuZXcgbWFjcm9zLCB3ZSBwcm92aWRlIHRoZW0gYXMgcHJlZGljYXRl
LWZvcm1hdAorZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgaW4gcHJlZGljYXRlIGFzc2VydGlv
biBtYWNyb3MgKGUuZy4KK2BFWFBFQ1RfUFJFRF9GT1JNQVQyYCwgZXRjKS4KKworYGBgCitFWFBF
Q1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RmxvYXRMRSwgdmFsMSwgdmFsMik7CitFWFBFQ1Rf
UFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RG91YmxlTEUsIHZhbDEsIHZhbDIpOworYGBgCisKK1Zl
cmlmaWVzIHRoYXQgX3ZhbDFfIGlzIGxlc3MgdGhhbiwgb3IgYWxtb3N0IGVxdWFsIHRvLCBfdmFs
Ml8uIFlvdSBjYW4KK3JlcGxhY2UgYEVYUEVDVF9QUkVEX0ZPUk1BVDJgIGluIHRoZSBhYm92ZSB0
YWJsZSB3aXRoIGBBU1NFUlRfUFJFRF9GT1JNQVQyYC4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4
LCBXaW5kb3dzLCBNYWMuCisKKyMjIFdpbmRvd3MgSFJFU1VMVCBhc3NlcnRpb25zICMjCisKK1Ro
ZXNlIGFzc2VydGlvbnMgdGVzdCBmb3IgYEhSRVNVTFRgIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4KKwor
fCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZp
ZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChgX2V4cHJlc3Npb25f
YCk7YCB8IGBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQoYF9leHByZXNzaW9uX2ApO2AgfCBfZXhw
cmVzc2lvbl8gaXMgYSBzdWNjZXNzIGBIUkVTVUxUYCB8Cit8IGBBU1NFUlRfSFJFU1VMVF9GQUlM
RUQoYF9leHByZXNzaW9uX2ApO2AgICAgfCBgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKGBfZXhwcmVz
c2lvbl9gKTtgICAgIHwgX2V4cHJlc3Npb25fIGlzIGEgZmFpbHVyZSBgSFJFU1VMVGAgfAorCitU
aGUgZ2VuZXJhdGVkIG91dHB1dCBjb250YWlucyB0aGUgaHVtYW4tcmVhZGFibGUgZXJyb3IgbWVz
c2FnZQorYXNzb2NpYXRlZCB3aXRoIHRoZSBgSFJFU1VMVGAgY29kZSByZXR1cm5lZCBieSBfZXhw
cmVzc2lvbl8uCisKK1lvdSBtaWdodCB1c2UgdGhlbSBsaWtlIHRoaXM6CisKK2BgYAorQ0NvbVB0
ciBzaGVsbDsKK0FTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChzaGVsbC5Db0NyZWF0ZUluc3RhbmNl
KEwiU2hlbGwuQXBwbGljYXRpb24iKSk7CitDQ29tVmFyaWFudCBlbXB0eTsKK0FTU0VSVF9IUkVT
VUxUX1NVQ0NFRURFRChzaGVsbC0+U2hlbGxFeGVjdXRlKENDb21CU1RSKHVybCksIGVtcHR5LCBl
bXB0eSwgZW1wdHksIGVtcHR5KSk7CitgYGAKKworX0F2YWlsYWJpbGl0eV86IFdpbmRvd3MuCisK
KyMjIFR5cGUgQXNzZXJ0aW9ucyAjIworCitZb3UgY2FuIGNhbGwgdGhlIGZ1bmN0aW9uCitgYGAK
Kzo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4oKTsKK2BgYAordG8gYXNzZXJ0
IHRoYXQgdHlwZXMgYFQxYCBhbmQgYFQyYCBhcmUgdGhlIHNhbWUuICBUaGUgZnVuY3Rpb24gZG9l
cworbm90aGluZyBpZiB0aGUgYXNzZXJ0aW9uIGlzIHNhdGlzZmllZC4gIElmIHRoZSB0eXBlcyBh
cmUgZGlmZmVyZW50LAordGhlIGZ1bmN0aW9uIGNhbGwgd2lsbCBmYWlsIHRvIGNvbXBpbGUsIGFu
ZCB0aGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZQord2lsbCBsaWtlbHkgKGRlcGVuZGluZyBvbiB0
aGUgY29tcGlsZXIpIHNob3cgeW91IHRoZSBhY3R1YWwgdmFsdWVzIG9mCitgVDFgIGFuZCBgVDJg
LiAgVGhpcyBpcyBtYWlubHkgdXNlZnVsIGluc2lkZSB0ZW1wbGF0ZSBjb2RlLgorCitfQ2F2ZWF0
Ol8gV2hlbiB1c2VkIGluc2lkZSBhIG1lbWJlciBmdW5jdGlvbiBvZiBhIGNsYXNzIHRlbXBsYXRl
IG9yIGEKK2Z1bmN0aW9uIHRlbXBsYXRlLCBgU3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4oKWAg
aXMgZWZmZWN0aXZlIF9vbmx5IGlmXwordGhlIGZ1bmN0aW9uIGlzIGluc3RhbnRpYXRlZC4gIEZv
ciBleGFtcGxlLCBnaXZlbjoKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbyB7
CisgcHVibGljOgorICB2b2lkIEJhcigpIHsgOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8
aW50LCBUPigpOyB9Cit9OworYGBgCit0aGUgY29kZToKK2BgYAordm9pZCBUZXN0MSgpIHsgRm9v
PGJvb2w+IGZvbzsgfQorYGBgCit3aWxsIF9ub3RfIGdlbmVyYXRlIGEgY29tcGlsZXIgZXJyb3Is
IGFzIGBGb288Ym9vbD46OkJhcigpYCBpcyBuZXZlcgorYWN0dWFsbHkgaW5zdGFudGlhdGVkLiAg
SW5zdGVhZCwgeW91IG5lZWQ6CitgYGAKK3ZvaWQgVGVzdDIoKSB7IEZvbzxib29sPiBmb287IGZv
by5CYXIoKTsgfQorYGBgCit0byBjYXVzZSBhIGNvbXBpbGVyIGVycm9yLgorCitfQXZhaWxhYmls
aXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lvbiAxLjMuMC4KKworIyMgQXNz
ZXJ0aW9uIFBsYWNlbWVudCAjIworCitZb3UgY2FuIHVzZSBhc3NlcnRpb25zIGluIGFueSBDKysg
ZnVuY3Rpb24uIEluIHBhcnRpY3VsYXIsIGl0IGRvZXNuJ3QKK2hhdmUgdG8gYmUgYSBtZXRob2Qg
b2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4gVGhlIG9uZSBjb25zdHJhaW50IGlzCit0aGF0IGFz
c2VydGlvbnMgdGhhdCBnZW5lcmF0ZSBhIGZhdGFsIGZhaWx1cmUgKGBGQUlMKmAgYW5kIGBBU1NF
UlRfKmApCitjYW4gb25seSBiZSB1c2VkIGluIHZvaWQtcmV0dXJuaW5nIGZ1bmN0aW9ucy4gVGhp
cyBpcyBhIGNvbnNlcXVlbmNlIG9mCitHb29nbGUgVGVzdCBub3QgdXNpbmcgZXhjZXB0aW9ucy4g
QnkgcGxhY2luZyBpdCBpbiBhIG5vbi12b2lkIGZ1bmN0aW9uCit5b3UnbGwgZ2V0IGEgY29uZnVz
aW5nIGNvbXBpbGUgZXJyb3IgbGlrZQorYCJlcnJvcjogdm9pZCB2YWx1ZSBub3QgaWdub3JlZCBh
cyBpdCBvdWdodCB0byBiZSJgLgorCitJZiB5b3UgbmVlZCB0byB1c2UgYXNzZXJ0aW9ucyBpbiBh
IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBub24tdm9pZCwgb25lIG9wdGlvbgoraXMgdG8gbWFrZSB0
aGUgZnVuY3Rpb24gcmV0dXJuIHRoZSB2YWx1ZSBpbiBhbiBvdXQgcGFyYW1ldGVyIGluc3RlYWQu
IEZvcgorZXhhbXBsZSwgeW91IGNhbiByZXdyaXRlIGBUMiBGb28oVDEgeClgIHRvIGB2b2lkIEZv
byhUMSB4LCBUMiogcmVzdWx0KWAuIFlvdQorbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgKnJlc3Vs
dGAgY29udGFpbnMgc29tZSBzZW5zaWJsZSB2YWx1ZSBldmVuIHdoZW4gdGhlCitmdW5jdGlvbiBy
ZXR1cm5zIHByZW1hdHVyZWx5LiBBcyB0aGUgZnVuY3Rpb24gbm93IHJldHVybnMgYHZvaWRgLCB5
b3UgY2FuIHVzZQorYW55IGFzc2VydGlvbiBpbnNpZGUgb2YgaXQuCisKK0lmIGNoYW5naW5nIHRo
ZSBmdW5jdGlvbidzIHR5cGUgaXMgbm90IGFuIG9wdGlvbiwgeW91IHNob3VsZCBqdXN0IHVzZQor
YXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIG5vbi1mYXRhbCBmYWlsdXJlcywgc3VjaCBhcyBgQURE
X0ZBSUxVUkUqYCBhbmQKK2BFWFBFQ1RfKmAuCisKK19Ob3RlXzogQ29uc3RydWN0b3JzIGFuZCBk
ZXN0cnVjdG9ycyBhcmUgbm90IGNvbnNpZGVyZWQgdm9pZC1yZXR1cm5pbmcKK2Z1bmN0aW9ucywg
YWNjb3JkaW5nIHRvIHRoZSBDKysgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbiwgYW5kIHNvIHlvdSBt
YXkgbm90IHVzZQorZmF0YWwgYXNzZXJ0aW9ucyBpbiB0aGVtLiBZb3UnbGwgZ2V0IGEgY29tcGls
YXRpb24gZXJyb3IgaWYgeW91IHRyeS4gQSBzaW1wbGUKK3dvcmthcm91bmQgaXMgdG8gdHJhbnNm
ZXIgdGhlIGVudGlyZSBib2R5IG9mIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yIHRvIGEK
K3ByaXZhdGUgdm9pZC1yZXR1cm5pbmcgbWV0aG9kLiBIb3dldmVyLCB5b3Ugc2hvdWxkIGJlIGF3
YXJlIHRoYXQgYSBmYXRhbAorYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYSBjb25zdHJ1Y3RvciBkb2Vz
IG5vdCB0ZXJtaW5hdGUgdGhlIGN1cnJlbnQgdGVzdCwgYXMgeW91cgoraW50dWl0aW9uIG1pZ2h0
IHN1Z2dlc3Q7IGl0IG1lcmVseSByZXR1cm5zIGZyb20gdGhlIGNvbnN0cnVjdG9yIGVhcmx5LCBw
b3NzaWJseQorbGVhdmluZyB5b3VyIG9iamVjdCBpbiBhIHBhcnRpYWxseS1jb25zdHJ1Y3RlZCBz
dGF0ZS4gTGlrZXdpc2UsIGEgZmF0YWwKK2Fzc2VydGlvbiBmYWlsdXJlIGluIGEgZGVzdHJ1Y3Rv
ciBtYXkgbGVhdmUgeW91ciBvYmplY3QgaW4gYQorcGFydGlhbGx5LWRlc3RydWN0ZWQgc3RhdGUu
IFVzZSBhc3NlcnRpb25zIGNhcmVmdWxseSBpbiB0aGVzZSBzaXR1YXRpb25zIQorCisjIFRlYWNo
aW5nIEdvb2dsZSBUZXN0IEhvdyB0byBQcmludCBZb3VyIFZhbHVlcyAjCisKK1doZW4gYSB0ZXN0
IGFzc2VydGlvbiBzdWNoIGFzIGBFWFBFQ1RfRVFgIGZhaWxzLCBHb29nbGUgVGVzdCBwcmludHMg
dGhlCithcmd1bWVudCB2YWx1ZXMgdG8gaGVscCB5b3UgZGVidWcuICBJdCBkb2VzIHRoaXMgdXNp
bmcgYQordXNlci1leHRlbnNpYmxlIHZhbHVlIHByaW50ZXIuCisKK1RoaXMgcHJpbnRlciBrbm93
cyBob3cgdG8gcHJpbnQgYnVpbHQtaW4gQysrIHR5cGVzLCBuYXRpdmUgYXJyYXlzLCBTVEwKK2Nv
bnRhaW5lcnMsIGFuZCBhbnkgdHlwZSB0aGF0IHN1cHBvcnRzIHRoZSBgPDxgIG9wZXJhdG9yLiAg
Rm9yIG90aGVyCit0eXBlcywgaXQgcHJpbnRzIHRoZSByYXcgYnl0ZXMgaW4gdGhlIHZhbHVlIGFu
ZCBob3BlcyB0aGF0IHlvdSB0aGUKK3VzZXIgY2FuIGZpZ3VyZSBpdCBvdXQuCisKK0FzIG1lbnRp
b25lZCBlYXJsaWVyLCB0aGUgcHJpbnRlciBpcyBfZXh0ZW5zaWJsZV8uICBUaGF0IG1lYW5zCit5
b3UgY2FuIHRlYWNoIGl0IHRvIGRvIGEgYmV0dGVyIGpvYiBhdCBwcmludGluZyB5b3VyIHBhcnRp
Y3VsYXIgdHlwZQordGhhbiB0byBkdW1wIHRoZSBieXRlcy4gIFRvIGRvIHRoYXQsIGRlZmluZSBg
PDxgIGZvciB5b3VyIHR5cGU6CisKK2BgYAorI2luY2x1ZGUgPGlvc3RyZWFtPgorCituYW1lc3Bh
Y2UgZm9vIHsKKworY2xhc3MgQmFyIHsgLi4uIH07ICAvLyBXZSB3YW50IEdvb2dsZSBUZXN0IHRv
IGJlIGFibGUgdG8gcHJpbnQgaW5zdGFuY2VzIG9mIHRoaXMuCisKKy8vIEl0J3MgaW1wb3J0YW50
IHRoYXQgdGhlIDw8IG9wZXJhdG9yIGlzIGRlZmluZWQgaW4gdGhlIFNBTUUKKy8vIG5hbWVzcGFj
ZSB0aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11cCBydWxlcyByZWx5IG9uIHRoYXQuCis6
OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IEJhciYg
YmFyKSB7CisgIHJldHVybiBvcyA8PCBiYXIuRGVidWdTdHJpbmcoKTsgIC8vIHdoYXRldmVyIG5l
ZWRlZCB0byBwcmludCBiYXIgdG8gb3MKK30KKworfSAgLy8gbmFtZXNwYWNlIGZvbworYGBgCisK
K1NvbWV0aW1lcywgdGhpcyBtaWdodCBub3QgYmUgYW4gb3B0aW9uOiB5b3VyIHRlYW0gbWF5IGNv
bnNpZGVyIGl0IGJhZAorc3R5bGUgdG8gaGF2ZSBhIGA8PGAgb3BlcmF0b3IgZm9yIGBCYXJgLCBv
ciBgQmFyYCBtYXkgYWxyZWFkeSBoYXZlIGEKK2A8PGAgb3BlcmF0b3IgdGhhdCBkb2Vzbid0IGRv
IHdoYXQgeW91IHdhbnQgKGFuZCB5b3UgY2Fubm90IGNoYW5nZQoraXQpLiAgSWYgc28sIHlvdSBj
YW4gaW5zdGVhZCBkZWZpbmUgYSBgUHJpbnRUbygpYCBmdW5jdGlvbiBsaWtlIHRoaXM6CisKK2Bg
YAorI2luY2x1ZGUgPGlvc3RyZWFtPgorCituYW1lc3BhY2UgZm9vIHsKKworY2xhc3MgQmFyIHsg
Li4uIH07CisKKy8vIEl0J3MgaW1wb3J0YW50IHRoYXQgUHJpbnRUbygpIGlzIGRlZmluZWQgaW4g
dGhlIFNBTUUKKy8vIG5hbWVzcGFjZSB0aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11cCBy
dWxlcyByZWx5IG9uIHRoYXQuCit2b2lkIFByaW50VG8oY29uc3QgQmFyJiBiYXIsIDo6c3RkOjpv
c3RyZWFtKiBvcykgeworICAqb3MgPDwgYmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3aGF0ZXZlciBu
ZWVkZWQgdG8gcHJpbnQgYmFyIHRvIG9zCit9CisKK30gIC8vIG5hbWVzcGFjZSBmb28KK2BgYAor
CitJZiB5b3UgaGF2ZSBkZWZpbmVkIGJvdGggYDw8YCBhbmQgYFByaW50VG8oKWAsIHRoZSBsYXR0
ZXIgd2lsbCBiZSB1c2VkCit3aGVuIEdvb2dsZSBUZXN0IGlzIGNvbmNlcm5lZC4gIFRoaXMgYWxs
b3dzIHlvdSB0byBjdXN0b21pemUgaG93IHRoZSB2YWx1ZQorYXBwZWFycyBpbiBHb29nbGUgVGVz
dCdzIG91dHB1dCB3aXRob3V0IGFmZmVjdGluZyBjb2RlIHRoYXQgcmVsaWVzIG9uIHRoZQorYmVo
YXZpb3Igb2YgaXRzIGA8PGAgb3BlcmF0b3IuCisKK0lmIHlvdSB3YW50IHRvIHByaW50IGEgdmFs
dWUgYHhgIHVzaW5nIEdvb2dsZSBUZXN0J3MgdmFsdWUgcHJpbnRlcgoreW91cnNlbGYsIGp1c3Qg
Y2FsbCBgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGBfeF9gKWAsIHdoaWNoCityZXR1cm5zIGFu
IGBzdGQ6OnN0cmluZ2A6CisKK2BgYAordmVjdG9yPHBhaXI8QmFyLCBpbnQ+ID4gYmFyX2ludHMg
PSBHZXRCYXJJbnRWZWN0b3IoKTsKKworRVhQRUNUX1RSVUUoSXNDb3JyZWN0QmFySW50VmVjdG9y
KGJhcl9pbnRzKSkKKyAgICA8PCAiYmFyX2ludHMgPSAiIDw8IDo6dGVzdGluZzo6UHJpbnRUb1N0
cmluZyhiYXJfaW50cyk7CitgYGAKKworIyBEZWF0aCBUZXN0cyAjCisKK0luIG1hbnkgYXBwbGlj
YXRpb25zLCB0aGVyZSBhcmUgYXNzZXJ0aW9ucyB0aGF0IGNhbiBjYXVzZSBhcHBsaWNhdGlvbiBm
YWlsdXJlCitpZiBhIGNvbmRpdGlvbiBpcyBub3QgbWV0LiBUaGVzZSBzYW5pdHkgY2hlY2tzLCB3
aGljaCBlbnN1cmUgdGhhdCB0aGUgcHJvZ3JhbQoraXMgaW4gYSBrbm93biBnb29kIHN0YXRlLCBh
cmUgdGhlcmUgdG8gZmFpbCBhdCB0aGUgZWFybGllc3QgcG9zc2libGUgdGltZSBhZnRlcgorc29t
ZSBwcm9ncmFtIHN0YXRlIGlzIGNvcnJ1cHRlZC4gSWYgdGhlIGFzc2VydGlvbiBjaGVja3MgdGhl
IHdyb25nIGNvbmRpdGlvbiwKK3RoZW4gdGhlIHByb2dyYW0gbWF5IHByb2NlZWQgaW4gYW4gZXJy
b25lb3VzIHN0YXRlLCB3aGljaCBjb3VsZCBsZWFkIHRvIG1lbW9yeQorY29ycnVwdGlvbiwgc2Vj
dXJpdHkgaG9sZXMsIG9yIHdvcnNlLiBIZW5jZSBpdCBpcyB2aXRhbGx5IGltcG9ydGFudCB0byB0
ZXN0Cit0aGF0IHN1Y2ggYXNzZXJ0aW9uIHN0YXRlbWVudHMgd29yayBhcyBleHBlY3RlZC4KKwor
U2luY2UgdGhlc2UgcHJlY29uZGl0aW9uIGNoZWNrcyBjYXVzZSB0aGUgcHJvY2Vzc2VzIHRvIGRp
ZSwgd2UgY2FsbCBzdWNoIHRlc3RzCitfZGVhdGggdGVzdHNfLiBNb3JlIGdlbmVyYWxseSwgYW55
IHRlc3QgdGhhdCBjaGVja3MgdGhhdCBhIHByb2dyYW0gdGVybWluYXRlcworKGV4Y2VwdCBieSB0
aHJvd2luZyBhbiBleGNlcHRpb24pIGluIGFuIGV4cGVjdGVkIGZhc2hpb24gaXMgYWxzbyBhIGRl
YXRoIHRlc3QuCisKK05vdGUgdGhhdCBpZiBhIHBpZWNlIG9mIGNvZGUgdGhyb3dzIGFuIGV4Y2Vw
dGlvbiwgd2UgZG9uJ3QgY29uc2lkZXIgaXQgImRlYXRoIgorZm9yIHRoZSBwdXJwb3NlIG9mIGRl
YXRoIHRlc3RzLCBhcyB0aGUgY2FsbGVyIG9mIHRoZSBjb2RlIGNvdWxkIGNhdGNoIHRoZSBleGNl
cHRpb24KK2FuZCBhdm9pZCB0aGUgY3Jhc2guIElmIHlvdSB3YW50IHRvIHZlcmlmeSBleGNlcHRp
b25zIHRocm93biBieSB5b3VyIGNvZGUsCitzZWUgW0V4Y2VwdGlvbiBBc3NlcnRpb25zXSgjZXhj
ZXB0aW9uLWFzc2VydGlvbnMpLgorCitJZiB5b3Ugd2FudCB0byB0ZXN0IGBFWFBFQ1RfKigpL0FT
U0VSVF8qKClgIGZhaWx1cmVzIGluIHlvdXIgdGVzdCBjb2RlLCBzZWUgW0NhdGNoaW5nIEZhaWx1
cmVzXSgjY2F0Y2hpbmctZmFpbHVyZXMpLgorCisjIyBIb3cgdG8gV3JpdGUgYSBEZWF0aCBUZXN0
ICMjCisKK0dvb2dsZSBUZXN0IGhhcyB0aGUgZm9sbG93aW5nIG1hY3JvcyB0byBzdXBwb3J0IGRl
YXRoIHRlc3RzOgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlv
bioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX0RFQVRIKGBfc3RhdGVtZW50
LCByZWdleF9gKTsgfCBgRVhQRUNUX0RFQVRIKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBfc3Rh
dGVtZW50XyBjcmFzaGVzIHdpdGggdGhlIGdpdmVuIGVycm9yIHwKK3wgYEFTU0VSVF9ERUFUSF9J
Rl9TVVBQT1JURUQoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApOyB8IGBFWFBFQ1RfREVBVEhfSUZfU1VQ
UE9SVEVEKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBpZiBkZWF0aCB0ZXN0cyBhcmUgc3VwcG9y
dGVkLCB2ZXJpZmllcyB0aGF0IF9zdGF0ZW1lbnRfIGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4gZXJy
b3I7IG90aGVyd2lzZSB2ZXJpZmllcyBub3RoaW5nIHwKK3wgYEFTU0VSVF9FWElUKGBfc3RhdGVt
ZW50LCBwcmVkaWNhdGUsIHJlZ2V4X2ApOyB8IGBFWFBFQ1RfRVhJVChgX3N0YXRlbWVudCwgcHJl
ZGljYXRlLCByZWdleF9gKTsgfF9zdGF0ZW1lbnRfIGV4aXRzIHdpdGggdGhlIGdpdmVuIGVycm9y
IGFuZCBpdHMgZXhpdCBjb2RlIG1hdGNoZXMgX3ByZWRpY2F0ZV8gfAorCit3aGVyZSBfc3RhdGVt
ZW50XyBpcyBhIHN0YXRlbWVudCB0aGF0IGlzIGV4cGVjdGVkIHRvIGNhdXNlIHRoZSBwcm9jZXNz
IHRvCitkaWUsIF9wcmVkaWNhdGVfIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3Rpb24gb2JqZWN0IHRo
YXQgZXZhbHVhdGVzIGFuIGludGVnZXIKK2V4aXQgc3RhdHVzLCBhbmQgX3JlZ2V4XyBpcyBhIHJl
Z3VsYXIgZXhwcmVzc2lvbiB0aGF0IHRoZSBzdGRlcnIgb3V0cHV0IG9mCitfc3RhdGVtZW50XyBp
cyBleHBlY3RlZCB0byBtYXRjaC4gTm90ZSB0aGF0IF9zdGF0ZW1lbnRfIGNhbiBiZSBfYW55IHZh
bGlkCitzdGF0ZW1lbnRfIChpbmNsdWRpbmcgX2NvbXBvdW5kIHN0YXRlbWVudF8pIGFuZCBkb2Vz
bid0IGhhdmUgdG8gYmUgYW4KK2V4cHJlc3Npb24uCisKK0FzIHVzdWFsLCB0aGUgYEFTU0VSVGAg
dmFyaWFudHMgYWJvcnQgdGhlIGN1cnJlbnQgdGVzdCBmdW5jdGlvbiwgd2hpbGUgdGhlCitgRVhQ
RUNUYCB2YXJpYW50cyBkbyBub3QuCisKKyoqTm90ZToqKiBXZSB1c2UgdGhlIHdvcmQgImNyYXNo
IiBoZXJlIHRvIG1lYW4gdGhhdCB0aGUgcHJvY2VzcwordGVybWluYXRlcyB3aXRoIGEgX25vbi16
ZXJvXyBleGl0IHN0YXR1cyBjb2RlLiAgVGhlcmUgYXJlIHR3bworcG9zc2liaWxpdGllczogZWl0
aGVyIHRoZSBwcm9jZXNzIGhhcyBjYWxsZWQgYGV4aXQoKWAgb3IgYF9leGl0KClgCit3aXRoIGEg
bm9uLXplcm8gdmFsdWUsIG9yIGl0IG1heSBiZSBraWxsZWQgYnkgYSBzaWduYWwuCisKK1RoaXMg
bWVhbnMgdGhhdCBpZiBfc3RhdGVtZW50XyB0ZXJtaW5hdGVzIHRoZSBwcm9jZXNzIHdpdGggYSAw
IGV4aXQKK2NvZGUsIGl0IGlzIF9ub3RfIGNvbnNpZGVyZWQgYSBjcmFzaCBieSBgRVhQRUNUX0RF
QVRIYC4gIFVzZQorYEVYUEVDVF9FWElUYCBpbnN0ZWFkIGlmIHRoaXMgaXMgdGhlIGNhc2UsIG9y
IGlmIHlvdSB3YW50IHRvIHJlc3RyaWN0Cit0aGUgZXhpdCBjb2RlIG1vcmUgcHJlY2lzZWx5Lgor
CitBIHByZWRpY2F0ZSBoZXJlIG11c3QgYWNjZXB0IGFuIGBpbnRgIGFuZCByZXR1cm4gYSBgYm9v
bGAuIFRoZSBkZWF0aCB0ZXN0CitzdWNjZWVkcyBvbmx5IGlmIHRoZSBwcmVkaWNhdGUgcmV0dXJu
cyBgdHJ1ZWAuIEdvb2dsZSBUZXN0IGRlZmluZXMgYSBmZXcKK3ByZWRpY2F0ZXMgdGhhdCBoYW5k
bGUgdGhlIG1vc3QgY29tbW9uIGNhc2VzOgorCitgYGAKKzo6dGVzdGluZzo6RXhpdGVkV2l0aENv
ZGUoZXhpdF9jb2RlKQorYGBgCisKK1RoaXMgZXhwcmVzc2lvbiBpcyBgdHJ1ZWAgaWYgdGhlIHBy
b2dyYW0gZXhpdGVkIG5vcm1hbGx5IHdpdGggdGhlIGdpdmVuIGV4aXQKK2NvZGUuCisKK2BgYAor
Ojp0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChzaWduYWxfbnVtYmVyKSAgLy8gTm90IGF2YWlsYWJs
ZSBvbiBXaW5kb3dzLgorYGBgCisKK1RoaXMgZXhwcmVzc2lvbiBpcyBgdHJ1ZWAgaWYgdGhlIHBy
b2dyYW0gd2FzIGtpbGxlZCBieSB0aGUgZ2l2ZW4gc2lnbmFsLgorCitUaGUgYCpfREVBVEhgIG1h
Y3JvcyBhcmUgY29udmVuaWVudCB3cmFwcGVycyBmb3IgYCpfRVhJVGAgdGhhdCB1c2UgYSBwcmVk
aWNhdGUKK3RoYXQgdmVyaWZpZXMgdGhlIHByb2Nlc3MnIGV4aXQgY29kZSBpcyBub24temVyby4K
KworTm90ZSB0aGF0IGEgZGVhdGggdGVzdCBvbmx5IGNhcmVzIGFib3V0IHRocmVlIHRoaW5nczoK
KworICAxLiBkb2VzIF9zdGF0ZW1lbnRfIGFib3J0IG9yIGV4aXQgdGhlIHByb2Nlc3M/CisgIDEu
IChpbiB0aGUgY2FzZSBvZiBgQVNTRVJUX0VYSVRgIGFuZCBgRVhQRUNUX0VYSVRgKSBkb2VzIHRo
ZSBleGl0IHN0YXR1cyBzYXRpc2Z5IF9wcmVkaWNhdGVfPyAgT3IgKGluIHRoZSBjYXNlIG9mIGBB
U1NFUlRfREVBVEhgIGFuZCBgRVhQRUNUX0RFQVRIYCkgaXMgdGhlIGV4aXQgc3RhdHVzIG5vbi16
ZXJvPyAgQW5kCisgIDEuIGRvZXMgdGhlIHN0ZGVyciBvdXRwdXQgbWF0Y2ggX3JlZ2V4Xz8KKwor
SW4gcGFydGljdWxhciwgaWYgX3N0YXRlbWVudF8gZ2VuZXJhdGVzIGFuIGBBU1NFUlRfKmAgb3Ig
YEVYUEVDVF8qYCBmYWlsdXJlLCBpdCB3aWxsICoqbm90KiogY2F1c2UgdGhlIGRlYXRoIHRlc3Qg
dG8gZmFpbCwgYXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBkb24ndCBhYm9ydCB0aGUgcHJvY2Vz
cy4KKworVG8gd3JpdGUgYSBkZWF0aCB0ZXN0LCBzaW1wbHkgdXNlIG9uZSBvZiB0aGUgYWJvdmUg
bWFjcm9zIGluc2lkZSB5b3VyIHRlc3QKK2Z1bmN0aW9uLiBGb3IgZXhhbXBsZSwKKworYGBgCitU
RVNUKE15RGVhdGhUZXN0LCBGb28pIHsKKyAgLy8gVGhpcyBkZWF0aCB0ZXN0IHVzZXMgYSBjb21w
b3VuZCBzdGF0ZW1lbnQuCisgIEFTU0VSVF9ERUFUSCh7IGludCBuID0gNTsgRm9vKCZuKTsgfSwg
IkVycm9yIG9uIGxpbmUgLiogb2YgRm9vKCkiKTsKK30KK1RFU1QoTXlEZWF0aFRlc3QsIE5vcm1h
bEV4aXQpIHsKKyAgRVhQRUNUX0VYSVQoTm9ybWFsRXhpdCgpLCA6OnRlc3Rpbmc6OkV4aXRlZFdp
dGhDb2RlKDApLCAiU3VjY2VzcyIpOworfQorVEVTVChNeURlYXRoVGVzdCwgS2lsbE15c2VsZikg
eworICBFWFBFQ1RfRVhJVChLaWxsTXlzZWxmKCksIDo6dGVzdGluZzo6S2lsbGVkQnlTaWduYWwo
U0lHS0lMTCksICJTZW5kaW5nIG15c2VsZiB1bmJsb2NrYWJsZSBzaWduYWwiKTsKK30KK2BgYAor
Cit2ZXJpZmllcyB0aGF0OgorCisgICogY2FsbGluZyBgRm9vKDUpYCBjYXVzZXMgdGhlIHByb2Nl
c3MgdG8gZGllIHdpdGggdGhlIGdpdmVuIGVycm9yIG1lc3NhZ2UsCisgICogY2FsbGluZyBgTm9y
bWFsRXhpdCgpYCBjYXVzZXMgdGhlIHByb2Nlc3MgdG8gcHJpbnQgYCJTdWNjZXNzImAgdG8gc3Rk
ZXJyIGFuZCBleGl0IHdpdGggZXhpdCBjb2RlIDAsIGFuZAorICAqIGNhbGxpbmcgYEtpbGxNeXNl
bGYoKWAga2lsbHMgdGhlIHByb2Nlc3Mgd2l0aCBzaWduYWwgYFNJR0tJTExgLgorCitUaGUgdGVz
dCBmdW5jdGlvbiBib2R5IG1heSBjb250YWluIG90aGVyIGFzc2VydGlvbnMgYW5kIHN0YXRlbWVu
dHMgYXMgd2VsbCwgaWYKK25lY2Vzc2FyeS4KKworX0ltcG9ydGFudDpfIFdlIHN0cm9uZ2x5IHJl
Y29tbWVuZCB5b3UgdG8gZm9sbG93IHRoZSBjb252ZW50aW9uIG9mIG5hbWluZyB5b3VyCit0ZXN0
IGNhc2UgKG5vdCB0ZXN0KSBgKkRlYXRoVGVzdGAgd2hlbiBpdCBjb250YWlucyBhIGRlYXRoIHRl
c3QsIGFzCitkZW1vbnN0cmF0ZWQgaW4gdGhlIGFib3ZlIGV4YW1wbGUuIFRoZSBgRGVhdGggVGVz
dHMgQW5kIFRocmVhZHNgIHNlY3Rpb24gYmVsb3cKK2V4cGxhaW5zIHdoeS4KKworSWYgYSB0ZXN0
IGZpeHR1cmUgY2xhc3MgaXMgc2hhcmVkIGJ5IG5vcm1hbCB0ZXN0cyBhbmQgZGVhdGggdGVzdHMs
IHlvdQorY2FuIHVzZSB0eXBlZGVmIHRvIGludHJvZHVjZSBhbiBhbGlhcyBmb3IgdGhlIGZpeHR1
cmUgY2xhc3MgYW5kIGF2b2lkCitkdXBsaWNhdGluZyBpdHMgY29kZToKK2BgYAorY2xhc3MgRm9v
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKKwordHlwZWRlZiBGb29UZXN0
IEZvb0RlYXRoVGVzdDsKKworVEVTVF9GKEZvb1Rlc3QsIERvZXNUaGlzKSB7CisgIC8vIG5vcm1h
bCB0ZXN0Cit9CisKK1RFU1RfRihGb29EZWF0aFRlc3QsIERvZXNUaGF0KSB7CisgIC8vIGRlYXRo
IHRlc3QKK30KK2BgYAorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVz
IE1TVkMgOC4wIG9yIGFib3ZlKSwgQ3lnd2luLCBhbmQgTWFjICh0aGUgbGF0dGVyIHRocmVlIGFy
ZSBzdXBwb3J0ZWQgc2luY2UgdjEuMy4wKS4gIGAoQVNTRVJUfEVYUEVDVClfREVBVEhfSUZfU1VQ
UE9SVEVEYCBhcmUgbmV3IGluIHYxLjQuMC4KKworIyMgUmVndWxhciBFeHByZXNzaW9uIFN5bnRh
eCAjIworCitPbiBQT1NJWCBzeXN0ZW1zIChlLmcuIExpbnV4LCBDeWd3aW4sIGFuZCBNYWMpLCBH
b29nbGUgVGVzdCB1c2VzIHRoZQorW1BPU0lYIGV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbl0o
aHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Jhc2VkZWZzL3hi
ZF9jaGFwMDkuaHRtbCN0YWdfMDlfMDQpCitzeW50YXggaW4gZGVhdGggdGVzdHMuIFRvIGxlYXJu
IGFib3V0IHRoaXMgc3ludGF4LCB5b3UgbWF5IHdhbnQgdG8gcmVhZCB0aGlzIFtXaWtpcGVkaWEg
ZW50cnldKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVndWxhcl9leHByZXNzaW9uI1BP
U0lYX0V4dGVuZGVkX1JlZ3VsYXJfRXhwcmVzc2lvbnMpLgorCitPbiBXaW5kb3dzLCBHb29nbGUg
VGVzdCB1c2VzIGl0cyBvd24gc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbgoraW1wbGVtZW50YXRp
b24uIEl0IGxhY2tzIG1hbnkgZmVhdHVyZXMgeW91IGNhbiBmaW5kIGluIFBPU0lYIGV4dGVuZGVk
CityZWd1bGFyIGV4cHJlc3Npb25zLiAgRm9yIGV4YW1wbGUsIHdlIGRvbid0IHN1cHBvcnQgdW5p
b24gKGAieHx5ImApLAorZ3JvdXBpbmcgKGAiKHh5KSJgKSwgYnJhY2tldHMgKGAiW3h5XSJgKSwg
YW5kIHJlcGV0aXRpb24gY291bnQKKyhgInh7NSw3fSJgKSwgYW1vbmcgb3RoZXJzLiBCZWxvdyBp
cyB3aGF0IHdlIGRvIHN1cHBvcnQgKExldHRlciBgQWAgZGVub3RlcyBhCitsaXRlcmFsIGNoYXJh
Y3RlciwgcGVyaW9kIChgLmApLCBvciBhIHNpbmdsZSBgXFxgIGVzY2FwZSBzZXF1ZW5jZTsgYHhg
CithbmQgYHlgIGRlbm90ZSByZWd1bGFyIGV4cHJlc3Npb25zLik6CisKK3wgYGNgIHwgbWF0Y2hl
cyBhbnkgbGl0ZXJhbCBjaGFyYWN0ZXIgYGNgIHwKK3w6LS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXwKK3wgYFxcZGAgfCBtYXRjaGVzIGFueSBkZWNpbWFsIGRpZ2l0ICAg
ICAgICAgfAorfCBgXFxEYCB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgZGVj
aW1hbCBkaWdpdCB8Cit8IGBcXGZgIHwgbWF0Y2hlcyBgXGZgICAgICAgICAgICAgICAgICAgICAg
IHwKK3wgYFxcbmAgfCBtYXRjaGVzIGBcbmAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFxy
YCB8IG1hdGNoZXMgYFxyYCAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBcXHNgIHwgbWF0Y2hl
cyBhbnkgQVNDSUkgd2hpdGVzcGFjZSwgaW5jbHVkaW5nIGBcbmAgfAorfCBgXFxTYCB8IG1hdGNo
ZXMgYW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgd2hpdGVzcGFjZSB8Cit8IGBcXHRgIHwgbWF0
Y2hlcyBgXHRgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYFxcdmAgfCBtYXRjaGVzIGBcdmAg
ICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFx3YCB8IG1hdGNoZXMgYW55IGxldHRlciwgYF9g
LCBvciBkZWNpbWFsIGRpZ2l0IHwKK3wgYFxcV2AgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhh
dCBgXFx3YCBkb2Vzbid0IG1hdGNoIHwKK3wgYFxcY2AgfCBtYXRjaGVzIGFueSBsaXRlcmFsIGNo
YXJhY3RlciBgY2AsIHdoaWNoIG11c3QgYmUgYSBwdW5jdHVhdGlvbiB8Cit8IGBcXC5gIHwgbWF0
Y2hlcyB0aGUgYC5gIGNoYXJhY3RlciAgICAgICAgIHwKK3wgYC5gIHwgbWF0Y2hlcyBhbnkgc2lu
Z2xlIGNoYXJhY3RlciBleGNlcHQgYFxuYCB8Cit8IGBBP2AgfCBtYXRjaGVzIDAgb3IgMSBvY2N1
cnJlbmNlcyBvZiBgQWAgfAorfCBgQSpgIHwgbWF0Y2hlcyAwIG9yIG1hbnkgb2NjdXJyZW5jZXMg
b2YgYEFgIHwKK3wgYEErYCB8IG1hdGNoZXMgMSBvciBtYW55IG9jY3VycmVuY2VzIG9mIGBBYCB8
Cit8IGBeYCB8IG1hdGNoZXMgdGhlIGJlZ2lubmluZyBvZiBhIHN0cmluZyAobm90IHRoYXQgb2Yg
ZWFjaCBsaW5lKSB8Cit8IGAkYCB8IG1hdGNoZXMgdGhlIGVuZCBvZiBhIHN0cmluZyAobm90IHRo
YXQgb2YgZWFjaCBsaW5lKSB8Cit8IGB4eWAgfCBtYXRjaGVzIGB4YCBmb2xsb3dlZCBieSBgeWAg
ICAgICAgfAorCitUbyBoZWxwIHlvdSBkZXRlcm1pbmUgd2hpY2ggY2FwYWJpbGl0eSBpcyBhdmFp
bGFibGUgb24geW91ciBzeXN0ZW0sCitHb29nbGUgVGVzdCBkZWZpbmVzIG1hY3JvIGBHVEVTVF9V
U0VTX1BPU0lYX1JFPTFgIHdoZW4gaXQgdXNlcyBQT1NJWAorZXh0ZW5kZWQgcmVndWxhciBleHBy
ZXNzaW9ucywgb3IgYEdURVNUX1VTRVNfU0lNUExFX1JFPTFgIHdoZW4gaXQgdXNlcwordGhlIHNp
bXBsZSB2ZXJzaW9uLiAgSWYgeW91IHdhbnQgeW91ciBkZWF0aCB0ZXN0cyB0byB3b3JrIGluIGJv
dGgKK2Nhc2VzLCB5b3UgY2FuIGVpdGhlciBgI2lmYCBvbiB0aGVzZSBtYWNyb3Mgb3IgdXNlIHRo
ZSBtb3JlIGxpbWl0ZWQKK3N5bnRheCBvbmx5LgorCisjIyBIb3cgSXQgV29ya3MgIyMKKworVW5k
ZXIgdGhlIGhvb2QsIGBBU1NFUlRfRVhJVCgpYCBzcGF3bnMgYSBuZXcgcHJvY2VzcyBhbmQgZXhl
Y3V0ZXMgdGhlCitkZWF0aCB0ZXN0IHN0YXRlbWVudCBpbiB0aGF0IHByb2Nlc3MuIFRoZSBkZXRh
aWxzIG9mIG9mIGhvdyBwcmVjaXNlbHkKK3RoYXQgaGFwcGVucyBkZXBlbmQgb24gdGhlIHBsYXRm
b3JtIGFuZCB0aGUgdmFyaWFibGUKK2A6OnRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9z
dHlsZSlgICh3aGljaCBpcyBpbml0aWFsaXplZCBmcm9tIHRoZQorY29tbWFuZC1saW5lIGZsYWcg
YC0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZWApLgorCisgICogT24gUE9TSVggc3lzdGVtcywgYGZv
cmsoKWAgKG9yIGBjbG9uZSgpYCBvbiBMaW51eCkgaXMgdXNlZCB0byBzcGF3biB0aGUgY2hpbGQs
IGFmdGVyIHdoaWNoOgorICAgICogSWYgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgaXMgYCJmYXN0ImAs
IHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudCBpcyBpbW1lZGlhdGVseSBleGVjdXRlZC4KKyAgICAq
IElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlzIGAidGhyZWFkc2FmZSJgLCB0aGUgY2hpbGQgcHJv
Y2VzcyByZS1leGVjdXRlcyB0aGUgdW5pdCB0ZXN0IGJpbmFyeSBqdXN0IGFzIGl0IHdhcyBvcmln
aW5hbGx5IGludm9rZWQsIGJ1dCB3aXRoIHNvbWUgZXh0cmEgZmxhZ3MgdG8gY2F1c2UganVzdCB0
aGUgc2luZ2xlIGRlYXRoIHRlc3QgdW5kZXIgY29uc2lkZXJhdGlvbiB0byBiZSBydW4uCisgICog
T24gV2luZG93cywgdGhlIGNoaWxkIGlzIHNwYXduZWQgdXNpbmcgdGhlIGBDcmVhdGVQcm9jZXNz
KClgIEFQSSwgYW5kIHJlLWV4ZWN1dGVzIHRoZSBiaW5hcnkgdG8gY2F1c2UganVzdCB0aGUgc2lu
Z2xlIGRlYXRoIHRlc3QgdW5kZXIgY29uc2lkZXJhdGlvbiB0byBiZSBydW4gLSBtdWNoIGxpa2Ug
dGhlIGB0aHJlYWRzYWZlYCBtb2RlIG9uIFBPU0lYLgorCitPdGhlciB2YWx1ZXMgZm9yIHRoZSB2
YXJpYWJsZSBhcmUgaWxsZWdhbCBhbmQgd2lsbCBjYXVzZSB0aGUgZGVhdGggdGVzdCB0bworZmFp
bC4gQ3VycmVudGx5LCB0aGUgZmxhZydzIGRlZmF1bHQgdmFsdWUgaXMgYCJmYXN0ImAuIEhvd2V2
ZXIsIHdlIHJlc2VydmUgdGhlCityaWdodCB0byBjaGFuZ2UgaXQgaW4gdGhlIGZ1dHVyZS4gVGhl
cmVmb3JlLCB5b3VyIHRlc3RzIHNob3VsZCBub3QgZGVwZW5kIG9uCit0aGlzLgorCitJbiBlaXRo
ZXIgY2FzZSwgdGhlIHBhcmVudCBwcm9jZXNzIHdhaXRzIGZvciB0aGUgY2hpbGQgcHJvY2VzcyB0
byBjb21wbGV0ZSwgYW5kIGNoZWNrcyB0aGF0CisKKyAgMS4gdGhlIGNoaWxkJ3MgZXhpdCBzdGF0
dXMgc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUsIGFuZAorICAxLiB0aGUgY2hpbGQncyBzdGRlcnIg
bWF0Y2hlcyB0aGUgcmVndWxhciBleHByZXNzaW9uLgorCitJZiB0aGUgZGVhdGggdGVzdCBzdGF0
ZW1lbnQgcnVucyB0byBjb21wbGV0aW9uIHdpdGhvdXQgZHlpbmcsIHRoZSBjaGlsZAorcHJvY2Vz
cyB3aWxsIG5vbmV0aGVsZXNzIHRlcm1pbmF0ZSwgYW5kIHRoZSBhc3NlcnRpb24gZmFpbHMuCisK
KyMjIERlYXRoIFRlc3RzIEFuZCBUaHJlYWRzICMjCisKK1RoZSByZWFzb24gZm9yIHRoZSB0d28g
ZGVhdGggdGVzdCBzdHlsZXMgaGFzIHRvIGRvIHdpdGggdGhyZWFkIHNhZmV0eS4gRHVlIHRvCit3
ZWxsLWtub3duIHByb2JsZW1zIHdpdGggZm9ya2luZyBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhyZWFk
cywgZGVhdGggdGVzdHMgc2hvdWxkCitiZSBydW4gaW4gYSBzaW5nbGUtdGhyZWFkZWQgY29udGV4
dC4gU29tZXRpbWVzLCBob3dldmVyLCBpdCBpc24ndCBmZWFzaWJsZSB0bworYXJyYW5nZSB0aGF0
IGtpbmQgb2YgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBzdGF0aWNhbGx5LWluaXRpYWxpemVk
IG1vZHVsZXMKK21heSBzdGFydCB0aHJlYWRzIGJlZm9yZSBtYWluIGlzIGV2ZXIgcmVhY2hlZC4g
T25jZSB0aHJlYWRzIGhhdmUgYmVlbiBjcmVhdGVkLAoraXQgbWF5IGJlIGRpZmZpY3VsdCBvciBp
bXBvc3NpYmxlIHRvIGNsZWFuIHRoZW0gdXAuCisKK0dvb2dsZSBUZXN0IGhhcyB0aHJlZSBmZWF0
dXJlcyBpbnRlbmRlZCB0byByYWlzZSBhd2FyZW5lc3Mgb2YgdGhyZWFkaW5nIGlzc3Vlcy4KKwor
ICAxLiBBIHdhcm5pbmcgaXMgZW1pdHRlZCBpZiBtdWx0aXBsZSB0aHJlYWRzIGFyZSBydW5uaW5n
IHdoZW4gYSBkZWF0aCB0ZXN0IGlzIGVuY291bnRlcmVkLgorICAxLiBUZXN0IGNhc2VzIHdpdGgg
YSBuYW1lIGVuZGluZyBpbiAiRGVhdGhUZXN0IiBhcmUgcnVuIGJlZm9yZSBhbGwgb3RoZXIgdGVz
dHMuCisgIDEuIEl0IHVzZXMgYGNsb25lKClgIGluc3RlYWQgb2YgYGZvcmsoKWAgdG8gc3Bhd24g
dGhlIGNoaWxkIHByb2Nlc3Mgb24gTGludXggKGBjbG9uZSgpYCBpcyBub3QgYXZhaWxhYmxlIG9u
IEN5Z3dpbiBhbmQgTWFjKSwgYXMgYGZvcmsoKWAgaXMgbW9yZSBsaWtlbHkgdG8gY2F1c2UgdGhl
IGNoaWxkIHRvIGhhbmcgd2hlbiB0aGUgcGFyZW50IHByb2Nlc3MgaGFzIG11bHRpcGxlIHRocmVh
ZHMuCisKK0l0J3MgcGVyZmVjdGx5IGZpbmUgdG8gY3JlYXRlIHRocmVhZHMgaW5zaWRlIGEgZGVh
dGggdGVzdCBzdGF0ZW1lbnQ7IHRoZXkgYXJlCitleGVjdXRlZCBpbiBhIHNlcGFyYXRlIHByb2Nl
c3MgYW5kIGNhbm5vdCBhZmZlY3QgdGhlIHBhcmVudC4KKworIyMgRGVhdGggVGVzdCBTdHlsZXMg
IyMKKworVGhlICJ0aHJlYWRzYWZlIiBkZWF0aCB0ZXN0IHN0eWxlIHdhcyBpbnRyb2R1Y2VkIGlu
IG9yZGVyIHRvIGhlbHAgbWl0aWdhdGUgdGhlCityaXNrcyBvZiB0ZXN0aW5nIGluIGEgcG9zc2li
bHkgbXVsdGl0aHJlYWRlZCBlbnZpcm9ubWVudC4gSXQgdHJhZGVzIGluY3JlYXNlZAordGVzdCBl
eGVjdXRpb24gdGltZSAocG90ZW50aWFsbHkgZHJhbWF0aWNhbGx5IHNvKSBmb3IgaW1wcm92ZWQg
dGhyZWFkIHNhZmV0eS4KK1dlIHN1Z2dlc3QgdXNpbmcgdGhlIGZhc3RlciwgZGVmYXVsdCAiZmFz
dCIgc3R5bGUgdW5sZXNzIHlvdXIgdGVzdCBoYXMgc3BlY2lmaWMKK3Byb2JsZW1zIHdpdGggaXQu
CisKK1lvdSBjYW4gY2hvb3NlIGEgcGFydGljdWxhciBzdHlsZSBvZiBkZWF0aCB0ZXN0cyBieSBz
ZXR0aW5nIHRoZSBmbGFnCitwcm9ncmFtbWF0aWNhbGx5OgorCitgYGAKKzo6dGVzdGluZzo6RkxB
R1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJ0aHJlYWRzYWZlIjsKK2BgYAorCitZb3UgY2Fu
IGRvIHRoaXMgaW4gYG1haW4oKWAgdG8gc2V0IHRoZSBzdHlsZSBmb3IgYWxsIGRlYXRoIHRlc3Rz
IGluIHRoZQorYmluYXJ5LCBvciBpbiBpbmRpdmlkdWFsIHRlc3RzLiBSZWNhbGwgdGhhdCBmbGFn
cyBhcmUgc2F2ZWQgYmVmb3JlIHJ1bm5pbmcgZWFjaAordGVzdCBhbmQgcmVzdG9yZWQgYWZ0ZXJ3
YXJkcywgc28geW91IG5lZWQgbm90IGRvIHRoYXQgeW91cnNlbGYuIEZvciBleGFtcGxlOgorCitg
YGAKK1RFU1QoTXlEZWF0aFRlc3QsIFRlc3RPbmUpIHsKKyAgOjp0ZXN0aW5nOjpGTEFHU19ndGVz
dF9kZWF0aF90ZXN0X3N0eWxlID0gInRocmVhZHNhZmUiOworICAvLyBUaGlzIHRlc3QgaXMgcnVu
IGluIHRoZSAidGhyZWFkc2FmZSIgc3R5bGU6CisgIEFTU0VSVF9ERUFUSChUaGlzU2hvdWxkRGll
KCksICIiKTsKK30KKworVEVTVChNeURlYXRoVGVzdCwgVGVzdFR3bykgeworICAvLyBUaGlzIHRl
c3QgaXMgcnVuIGluIHRoZSAiZmFzdCIgc3R5bGU6CisgIEFTU0VSVF9ERUFUSChUaGlzU2hvdWxk
RGllKCksICIiKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIDo6
dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICA6OnRlc3Rpbmc6OkZMQUdT
X2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAiZmFzdCI7CisgIHJldHVybiBSVU5fQUxMX1RFU1RT
KCk7Cit9CitgYGAKKworIyMgQ2F2ZWF0cyAjIworCitUaGUgX3N0YXRlbWVudF8gYXJndW1lbnQg
b2YgYEFTU0VSVF9FWElUKClgIGNhbiBiZSBhbnkgdmFsaWQgQysrIHN0YXRlbWVudC4KK0lmIGl0
IGxlYXZlcyB0aGUgY3VycmVudCBmdW5jdGlvbiB2aWEgYSBgcmV0dXJuYCBzdGF0ZW1lbnQgb3Ig
YnkgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLAordGhlIGRlYXRoIHRlc3QgaXMgY29uc2lkZXJlZCB0
byBoYXZlIGZhaWxlZC4gIFNvbWUgR29vZ2xlIFRlc3QgbWFjcm9zIG1heSByZXR1cm4KK2Zyb20g
dGhlIGN1cnJlbnQgZnVuY3Rpb24gKGUuZy4gYEFTU0VSVF9UUlVFKClgKSwgc28gYmUgc3VyZSB0
byBhdm9pZCB0aGVtIGluIF9zdGF0ZW1lbnRfLgorCitTaW5jZSBfc3RhdGVtZW50XyBydW5zIGlu
IHRoZSBjaGlsZCBwcm9jZXNzLCBhbnkgaW4tbWVtb3J5IHNpZGUgZWZmZWN0IChlLmcuCittb2Rp
ZnlpbmcgYSB2YXJpYWJsZSwgcmVsZWFzaW5nIG1lbW9yeSwgZXRjKSBpdCBjYXVzZXMgd2lsbCBf
bm90XyBiZSBvYnNlcnZhYmxlCitpbiB0aGUgcGFyZW50IHByb2Nlc3MuIEluIHBhcnRpY3VsYXIs
IGlmIHlvdSByZWxlYXNlIG1lbW9yeSBpbiBhIGRlYXRoIHRlc3QsCit5b3VyIHByb2dyYW0gd2ls
bCBmYWlsIHRoZSBoZWFwIGNoZWNrIGFzIHRoZSBwYXJlbnQgcHJvY2VzcyB3aWxsIG5ldmVyIHNl
ZSB0aGUKK21lbW9yeSByZWNsYWltZWQuIFRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgeW91IGNhbgor
CisgIDEuIHRyeSBub3QgdG8gZnJlZSBtZW1vcnkgaW4gYSBkZWF0aCB0ZXN0OworICAxLiBmcmVl
IHRoZSBtZW1vcnkgYWdhaW4gaW4gdGhlIHBhcmVudCBwcm9jZXNzOyBvcgorICAxLiBkbyBub3Qg
dXNlIHRoZSBoZWFwIGNoZWNrZXIgaW4geW91ciBwcm9ncmFtLgorCitEdWUgdG8gYW4gaW1wbGVt
ZW50YXRpb24gZGV0YWlsLCB5b3UgY2Fubm90IHBsYWNlIG11bHRpcGxlIGRlYXRoIHRlc3QKK2Fz
c2VydGlvbnMgb24gdGhlIHNhbWUgbGluZTsgb3RoZXJ3aXNlLCBjb21waWxhdGlvbiB3aWxsIGZh
aWwgd2l0aCBhbiB1bm9idmlvdXMKK2Vycm9yIG1lc3NhZ2UuCisKK0Rlc3BpdGUgdGhlIGltcHJv
dmVkIHRocmVhZCBzYWZldHkgYWZmb3JkZWQgYnkgdGhlICJ0aHJlYWRzYWZlIiBzdHlsZSBvZiBk
ZWF0aAordGVzdCwgdGhyZWFkIHByb2JsZW1zIHN1Y2ggYXMgZGVhZGxvY2sgYXJlIHN0aWxsIHBv
c3NpYmxlIGluIHRoZSBwcmVzZW5jZSBvZgoraGFuZGxlcnMgcmVnaXN0ZXJlZCB3aXRoIGBwdGhy
ZWFkX2F0Zm9yaygzKWAuCisKKyMgVXNpbmcgQXNzZXJ0aW9ucyBpbiBTdWItcm91dGluZXMgIwor
CisjIyBBZGRpbmcgVHJhY2VzIHRvIEFzc2VydGlvbnMgIyMKKworSWYgYSB0ZXN0IHN1Yi1yb3V0
aW5lIGlzIGNhbGxlZCBmcm9tIHNldmVyYWwgcGxhY2VzLCB3aGVuIGFuIGFzc2VydGlvbgoraW5z
aWRlIGl0IGZhaWxzLCBpdCBjYW4gYmUgaGFyZCB0byB0ZWxsIHdoaWNoIGludm9jYXRpb24gb2Yg
dGhlCitzdWItcm91dGluZSB0aGUgZmFpbHVyZSBpcyBmcm9tLiAgWW91IGNhbiBhbGxldmlhdGUg
dGhpcyBwcm9ibGVtIHVzaW5nCitleHRyYSBsb2dnaW5nIG9yIGN1c3RvbSBmYWlsdXJlIG1lc3Nh
Z2VzLCBidXQgdGhhdCB1c3VhbGx5IGNsdXR0ZXJzIHVwCit5b3VyIHRlc3RzLiBBIGJldHRlciBz
b2x1dGlvbiBpcyB0byB1c2UgdGhlIGBTQ09QRURfVFJBQ0VgIG1hY3JvOgorCit8IGBTQ09QRURf
VFJBQ0UoYF9tZXNzYWdlX2ApO2AgfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwK
Kword2hlcmUgX21lc3NhZ2VfIGNhbiBiZSBhbnl0aGluZyBzdHJlYW1hYmxlIHRvIGBzdGQ6Om9z
dHJlYW1gLiBUaGlzCittYWNybyB3aWxsIGNhdXNlIHRoZSBjdXJyZW50IGZpbGUgbmFtZSwgbGlu
ZSBudW1iZXIsIGFuZCB0aGUgZ2l2ZW4KK21lc3NhZ2UgdG8gYmUgYWRkZWQgaW4gZXZlcnkgZmFp
bHVyZSBtZXNzYWdlLiBUaGUgZWZmZWN0IHdpbGwgYmUKK3VuZG9uZSB3aGVuIHRoZSBjb250cm9s
IGxlYXZlcyB0aGUgY3VycmVudCBsZXhpY2FsIHNjb3BlLgorCitGb3IgZXhhbXBsZSwKKworYGBg
CisxMDogdm9pZCBTdWIxKGludCBuKSB7CisxMTogICBFWFBFQ1RfRVEoMSwgQmFyKG4pKTsKKzEy
OiAgIEVYUEVDVF9FUSgyLCBCYXIobiArIDEpKTsKKzEzOiB9CisxNDoKKzE1OiBURVNUKEZvb1Rl
c3QsIEJhcikgeworMTY6ICAgeworMTc6ICAgICBTQ09QRURfVFJBQ0UoIkEiKTsgIC8vIFRoaXMg
dHJhY2UgcG9pbnQgd2lsbCBiZSBpbmNsdWRlZCBpbgorMTg6ICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGV2ZXJ5IGZhaWx1cmUgaW4gdGhpcyBzY29wZS4KKzE5OiAgICAgU3ViMSgxKTsKKzIw
OiAgIH0KKzIxOiAgIC8vIE5vdyBpdCB3b24ndC4KKzIyOiAgIFN1YjEoOSk7CisyMzogfQorYGBg
CisKK2NvdWxkIHJlc3VsdCBpbiBtZXNzYWdlcyBsaWtlIHRoZXNlOgorCitgYGAKK3BhdGgvdG8v
Zm9vX3Rlc3QuY2M6MTE6IEZhaWx1cmUKK1ZhbHVlIG9mOiBCYXIobikKK0V4cGVjdGVkOiAxCisg
IEFjdHVhbDogMgorICAgVHJhY2U6CitwYXRoL3RvL2Zvb190ZXN0LmNjOjE3OiBBCisKK3BhdGgv
dG8vZm9vX3Rlc3QuY2M6MTI6IEZhaWx1cmUKK1ZhbHVlIG9mOiBCYXIobiArIDEpCitFeHBlY3Rl
ZDogMgorICBBY3R1YWw6IDMKK2BgYAorCitXaXRob3V0IHRoZSB0cmFjZSwgaXQgd291bGQndmUg
YmVlbiBkaWZmaWN1bHQgdG8ga25vdyB3aGljaCBpbnZvY2F0aW9uCitvZiBgU3ViMSgpYCB0aGUg
dHdvIGZhaWx1cmVzIGNvbWUgZnJvbSByZXNwZWN0aXZlbHkuIChZb3UgY291bGQgYWRkIGFuCitl
eHRyYSBtZXNzYWdlIHRvIGVhY2ggYXNzZXJ0aW9uIGluIGBTdWIxKClgIHRvIGluZGljYXRlIHRo
ZSB2YWx1ZSBvZgorYG5gLCBidXQgdGhhdCdzIHRlZGlvdXMuKQorCitTb21lIHRpcHMgb24gdXNp
bmcgYFNDT1BFRF9UUkFDRWA6CisKKyAgMS4gV2l0aCBhIHN1aXRhYmxlIG1lc3NhZ2UsIGl0J3Mg
b2Z0ZW4gZW5vdWdoIHRvIHVzZSBgU0NPUEVEX1RSQUNFYCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEg
c3ViLXJvdXRpbmUsIGluc3RlYWQgb2YgYXQgZWFjaCBjYWxsIHNpdGUuCisgIDEuIFdoZW4gY2Fs
bGluZyBzdWItcm91dGluZXMgaW5zaWRlIGEgbG9vcCwgbWFrZSB0aGUgbG9vcCBpdGVyYXRvciBw
YXJ0IG9mIHRoZSBtZXNzYWdlIGluIGBTQ09QRURfVFJBQ0VgIHN1Y2ggdGhhdCB5b3UgY2FuIGtu
b3cgd2hpY2ggaXRlcmF0aW9uIHRoZSBmYWlsdXJlIGlzIGZyb20uCisgIDEuIFNvbWV0aW1lcyB0
aGUgbGluZSBudW1iZXIgb2YgdGhlIHRyYWNlIHBvaW50IGlzIGVub3VnaCBmb3IgaWRlbnRpZnlp
bmcgdGhlIHBhcnRpY3VsYXIgaW52b2NhdGlvbiBvZiBhIHN1Yi1yb3V0aW5lLiBJbiB0aGlzIGNh
c2UsIHlvdSBkb24ndCBoYXZlIHRvIGNob29zZSBhIHVuaXF1ZSBtZXNzYWdlIGZvciBgU0NPUEVE
X1RSQUNFYC4gWW91IGNhbiBzaW1wbHkgdXNlIGAiImAuCisgIDEuIFlvdSBjYW4gdXNlIGBTQ09Q
RURfVFJBQ0VgIGluIGFuIGlubmVyIHNjb3BlIHdoZW4gdGhlcmUgaXMgb25lIGluIHRoZSBvdXRl
ciBzY29wZS4gSW4gdGhpcyBjYXNlLCBhbGwgYWN0aXZlIHRyYWNlIHBvaW50cyB3aWxsIGJlIGlu
Y2x1ZGVkIGluIHRoZSBmYWlsdXJlIG1lc3NhZ2VzLCBpbiByZXZlcnNlIG9yZGVyIHRoZXkgYXJl
IGVuY291bnRlcmVkLgorICAxLiBUaGUgdHJhY2UgZHVtcCBpcyBjbGlja2FibGUgaW4gRW1hY3Mn
IGNvbXBpbGF0aW9uIGJ1ZmZlciAtIGhpdCByZXR1cm4gb24gYSBsaW5lIG51bWJlciBhbmQgeW91
J2xsIGJlIHRha2VuIHRvIHRoYXQgbGluZSBpbiB0aGUgc291cmNlIGZpbGUhCisKK19BdmFpbGFi
aWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBQcm9wYWdhdGluZyBGYXRhbCBGYWls
dXJlcyAjIworCitBIGNvbW1vbiBwaXRmYWxsIHdoZW4gdXNpbmcgYEFTU0VSVF8qYCBhbmQgYEZB
SUwqYCBpcyBub3QgdW5kZXJzdGFuZGluZyB0aGF0Cit3aGVuIHRoZXkgZmFpbCB0aGV5IG9ubHkg
YWJvcnQgdGhlIF9jdXJyZW50IGZ1bmN0aW9uXywgbm90IHRoZSBlbnRpcmUgdGVzdC4gRm9yCitl
eGFtcGxlLCB0aGUgZm9sbG93aW5nIHRlc3Qgd2lsbCBzZWdmYXVsdDoKK2BgYAordm9pZCBTdWJy
b3V0aW5lKCkgeworICAvLyBHZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlIGFuZCBhYm9ydHMgdGhl
IGN1cnJlbnQgZnVuY3Rpb24uCisgIEFTU0VSVF9FUSgxLCAyKTsKKyAgLy8gVGhlIGZvbGxvd2lu
ZyB3b24ndCBiZSBleGVjdXRlZC4KKyAgLi4uCit9CisKK1RFU1QoRm9vVGVzdCwgQmFyKSB7Cisg
IFN1YnJvdXRpbmUoKTsKKyAgLy8gVGhlIGludGVuZGVkIGJlaGF2aW9yIGlzIGZvciB0aGUgZmF0
YWwgZmFpbHVyZQorICAvLyBpbiBTdWJyb3V0aW5lKCkgdG8gYWJvcnQgdGhlIGVudGlyZSB0ZXN0
LgorICAvLyBUaGUgYWN0dWFsIGJlaGF2aW9yOiB0aGUgZnVuY3Rpb24gZ29lcyBvbiBhZnRlciBT
dWJyb3V0aW5lKCkgcmV0dXJucy4KKyAgaW50KiBwID0gTlVMTDsKKyAgKnAgPSAzOyAvLyBTZWdm
YXVsdCEKK30KK2BgYAorCitTaW5jZSB3ZSBkb24ndCB1c2UgZXhjZXB0aW9ucywgaXQgaXMgdGVj
aG5pY2FsbHkgaW1wb3NzaWJsZSB0bworaW1wbGVtZW50IHRoZSBpbnRlbmRlZCBiZWhhdmlvciBo
ZXJlLiAgVG8gYWxsZXZpYXRlIHRoaXMsIEdvb2dsZSBUZXN0Citwcm92aWRlcyB0d28gc29sdXRp
b25zLiAgWW91IGNvdWxkIHVzZSBlaXRoZXIgdGhlCitgKEFTU0VSVHxFWFBFQ1QpX05PX0ZBVEFM
X0ZBSUxVUkVgIGFzc2VydGlvbnMgb3IgdGhlCitgSGFzRmF0YWxGYWlsdXJlKClgIGZ1bmN0aW9u
LiAgVGhleSBhcmUgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgdHdvCitzdWJzZWN0aW9ucy4K
KworIyMjIEFzc2VydGluZyBvbiBTdWJyb3V0aW5lcyAjIyMKKworQXMgc2hvd24gYWJvdmUsIGlm
IHlvdXIgdGVzdCBjYWxscyBhIHN1YnJvdXRpbmUgdGhhdCBoYXMgYW4gYEFTU0VSVF8qYAorZmFp
bHVyZSBpbiBpdCwgdGhlIHRlc3Qgd2lsbCBjb250aW51ZSBhZnRlciB0aGUgc3Vicm91dGluZQor
cmV0dXJucy4gVGhpcyBtYXkgbm90IGJlIHdoYXQgeW91IHdhbnQuCisKK09mdGVuIHBlb3BsZSB3
YW50IGZhdGFsIGZhaWx1cmVzIHRvIHByb3BhZ2F0ZSBsaWtlIGV4Y2VwdGlvbnMuICBGb3IKK3Ro
YXQgR29vZ2xlIFRlc3Qgb2ZmZXJzIHRoZSBmb2xsb3dpbmcgbWFjcm9zOgorCit8ICoqRmF0YWwg
YXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6
LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tfAorfCBgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoYF9zdGF0ZW1lbnRfYCk7YCB8IGBFWFBF
Q1RfTk9fRkFUQUxfRkFJTFVSRShgX3N0YXRlbWVudF9gKTtgIHwgX3N0YXRlbWVudF8gZG9lc24n
dCBnZW5lcmF0ZSBhbnkgbmV3IGZhdGFsIGZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZC4g
fAorCitPbmx5IGZhaWx1cmVzIGluIHRoZSB0aHJlYWQgdGhhdCBleGVjdXRlcyB0aGUgYXNzZXJ0
aW9uIGFyZSBjaGVja2VkIHRvCitkZXRlcm1pbmUgdGhlIHJlc3VsdCBvZiB0aGlzIHR5cGUgb2Yg
YXNzZXJ0aW9ucy4gIElmIF9zdGF0ZW1lbnRfCitjcmVhdGVzIG5ldyB0aHJlYWRzLCBmYWlsdXJl
cyBpbiB0aGVzZSB0aHJlYWRzIGFyZSBpZ25vcmVkLgorCitFeGFtcGxlczoKKworYGBgCitBU1NF
UlRfTk9fRkFUQUxfRkFJTFVSRShGb28oKSk7CisKK2ludCBpOworRVhQRUNUX05PX0ZBVEFMX0ZB
SUxVUkUoeworICBpID0gQmFyKCk7Cit9KTsKK2BgYAorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgs
IFdpbmRvd3MsIE1hYy4gQXNzZXJ0aW9ucyBmcm9tIG11bHRpcGxlIHRocmVhZHMKK2FyZSBjdXJy
ZW50bHkgbm90IHN1cHBvcnRlZC4KKworIyMjIENoZWNraW5nIGZvciBGYWlsdXJlcyBpbiB0aGUg
Q3VycmVudCBUZXN0ICMjIworCitgSGFzRmF0YWxGYWlsdXJlKClgIGluIHRoZSBgOjp0ZXN0aW5n
OjpUZXN0YCBjbGFzcyByZXR1cm5zIGB0cnVlYCBpZiBhbgorYXNzZXJ0aW9uIGluIHRoZSBjdXJy
ZW50IHRlc3QgaGFzIHN1ZmZlcmVkIGEgZmF0YWwgZmFpbHVyZS4gVGhpcworYWxsb3dzIGZ1bmN0
aW9ucyB0byBjYXRjaCBmYXRhbCBmYWlsdXJlcyBpbiBhIHN1Yi1yb3V0aW5lIGFuZCByZXR1cm4K
K2Vhcmx5LgorCitgYGAKK2NsYXNzIFRlc3QgeworIHB1YmxpYzoKKyAgLi4uCisgIHN0YXRpYyBi
b29sIEhhc0ZhdGFsRmFpbHVyZSgpOworfTsKK2BgYAorCitUaGUgdHlwaWNhbCB1c2FnZSwgd2hp
Y2ggYmFzaWNhbGx5IHNpbXVsYXRlcyB0aGUgYmVoYXZpb3Igb2YgYSB0aHJvd24KK2V4Y2VwdGlv
biwgaXM6CisKK2BgYAorVEVTVChGb29UZXN0LCBCYXIpIHsKKyAgU3Vicm91dGluZSgpOworICAv
LyBBYm9ydHMgaWYgU3Vicm91dGluZSgpIGhhZCBhIGZhdGFsIGZhaWx1cmUuCisgIGlmIChIYXNG
YXRhbEZhaWx1cmUoKSkKKyAgICByZXR1cm47CisgIC8vIFRoZSBmb2xsb3dpbmcgd29uJ3QgYmUg
ZXhlY3V0ZWQuCisgIC4uLgorfQorYGBgCisKK0lmIGBIYXNGYXRhbEZhaWx1cmUoKWAgaXMgdXNl
ZCBvdXRzaWRlIG9mIGBURVNUKClgICwgYFRFU1RfRigpYCAsIG9yIGEgdGVzdAorZml4dHVyZSwg
eW91IG11c3QgYWRkIHRoZSBgOjp0ZXN0aW5nOjpUZXN0OjpgIHByZWZpeCwgYXMgaW46CisKK2Bg
YAoraWYgKDo6dGVzdGluZzo6VGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkpCisgIHJldHVybjsKK2Bg
YAorCitTaW1pbGFybHksIGBIYXNOb25mYXRhbEZhaWx1cmUoKWAgcmV0dXJucyBgdHJ1ZWAgaWYg
dGhlIGN1cnJlbnQgdGVzdAoraGFzIGF0IGxlYXN0IG9uZSBub24tZmF0YWwgZmFpbHVyZSwgYW5k
IGBIYXNGYWlsdXJlKClgIHJldHVybnMgYHRydWVgCitpZiB0aGUgY3VycmVudCB0ZXN0IGhhcyBh
dCBsZWFzdCBvbmUgZmFpbHVyZSBvZiBlaXRoZXIga2luZC4KKworX0F2YWlsYWJpbGl0eTpfIExp
bnV4LCBXaW5kb3dzLCBNYWMuICBgSGFzTm9uZmF0YWxGYWlsdXJlKClgIGFuZAorYEhhc0ZhaWx1
cmUoKWAgYXJlIGF2YWlsYWJsZSBzaW5jZSB2ZXJzaW9uIDEuNC4wLgorCisjIExvZ2dpbmcgQWRk
aXRpb25hbCBJbmZvcm1hdGlvbiAjCisKK0luIHlvdXIgdGVzdCBjb2RlLCB5b3UgY2FuIGNhbGwg
YFJlY29yZFByb3BlcnR5KCJrZXkiLCB2YWx1ZSlgIHRvIGxvZworYWRkaXRpb25hbCBpbmZvcm1h
dGlvbiwgd2hlcmUgYHZhbHVlYCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIGBpbnRgLiBU
aGUgX2xhc3RfIHZhbHVlIHJlY29yZGVkIGZvciBhIGtleSB3aWxsIGJlIGVtaXR0ZWQgdG8gdGhl
IFhNTCBvdXRwdXQKK2lmIHlvdSBzcGVjaWZ5IG9uZS4gRm9yIGV4YW1wbGUsIHRoZSB0ZXN0CisK
K2BgYAorVEVTVF9GKFdpZGdldFVzYWdlVGVzdCwgTWluQW5kTWF4V2lkZ2V0cykgeworICBSZWNv
cmRQcm9wZXJ0eSgiTWF4aW11bVdpZGdldHMiLCBDb21wdXRlTWF4VXNhZ2UoKSk7CisgIFJlY29y
ZFByb3BlcnR5KCJNaW5pbXVtV2lkZ2V0cyIsIENvbXB1dGVNaW5Vc2FnZSgpKTsKK30KK2BgYAor
Cit3aWxsIG91dHB1dCBYTUwgbGlrZSB0aGlzOgorCitgYGAKKy4uLgorICA8dGVzdGNhc2UgbmFt
ZT0iTWluQW5kTWF4V2lkZ2V0cyIgc3RhdHVzPSJydW4iIHRpbWU9IjYiIGNsYXNzbmFtZT0iV2lk
Z2V0VXNhZ2VUZXN0IgorICAgICAgICAgICAgTWF4aW11bVdpZGdldHM9IjEyIgorICAgICAgICAg
ICAgTWluaW11bVdpZGdldHM9IjkiIC8+CisuLi4KK2BgYAorCitfTm90ZV86CisgICogYFJlY29y
ZFByb3BlcnR5KClgIGlzIGEgc3RhdGljIG1lbWJlciBvZiB0aGUgYFRlc3RgIGNsYXNzLiBUaGVy
ZWZvcmUgaXQgbmVlZHMgdG8gYmUgcHJlZml4ZWQgd2l0aCBgOjp0ZXN0aW5nOjpUZXN0OjpgIGlm
IHVzZWQgb3V0c2lkZSBvZiB0aGUgYFRFU1RgIGJvZHkgYW5kIHRoZSB0ZXN0IGZpeHR1cmUgY2xh
c3MuCisgICogYGtleWAgbXVzdCBiZSBhIHZhbGlkIFhNTCBhdHRyaWJ1dGUgbmFtZSwgYW5kIGNh
bm5vdCBjb25mbGljdCB3aXRoIHRoZSBvbmVzIGFscmVhZHkgdXNlZCBieSBHb29nbGUgVGVzdCAo
YG5hbWVgLCBgc3RhdHVzYCwgYHRpbWVgLCBgY2xhc3NuYW1lYCwgYHR5cGVfcGFyYW1gLCBhbmQg
YHZhbHVlX3BhcmFtYCkuCisgICogQ2FsbGluZyBgUmVjb3JkUHJvcGVydHkoKWAgb3V0c2lkZSBv
ZiB0aGUgbGlmZXNwYW4gb2YgYSB0ZXN0IGlzIGFsbG93ZWQuIElmIGl0J3MgY2FsbGVkIG91dHNp
ZGUgb2YgYSB0ZXN0IGJ1dCBiZXR3ZWVuIGEgdGVzdCBjYXNlJ3MgYFNldFVwVGVzdENhc2UoKWAg
YW5kIGBUZWFyRG93blRlc3RDYXNlKClgIG1ldGhvZHMsIGl0IHdpbGwgYmUgYXR0cmlidXRlZCB0
byB0aGUgWE1MIGVsZW1lbnQgZm9yIHRoZSB0ZXN0IGNhc2UuIElmIGl0J3MgY2FsbGVkIG91dHNp
ZGUgb2YgYWxsIHRlc3QgY2FzZXMgKGUuZy4gaW4gYSB0ZXN0IGVudmlyb25tZW50KSwgaXQgd2ls
bCBiZSBhdHRyaWJ1dGVkIHRvIHRoZSB0b3AtbGV2ZWwgWE1MIGVsZW1lbnQuCisKK19BdmFpbGFi
aWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIFNoYXJpbmcgUmVzb3VyY2VzIEJldHdl
ZW4gVGVzdHMgaW4gdGhlIFNhbWUgVGVzdCBDYXNlICMKKworCisKK0dvb2dsZSBUZXN0IGNyZWF0
ZXMgYSBuZXcgdGVzdCBmaXh0dXJlIG9iamVjdCBmb3IgZWFjaCB0ZXN0IGluIG9yZGVyIHRvIG1h
a2UKK3Rlc3RzIGluZGVwZW5kZW50IGFuZCBlYXNpZXIgdG8gZGVidWcuIEhvd2V2ZXIsIHNvbWV0
aW1lcyB0ZXN0cyB1c2UgcmVzb3VyY2VzCit0aGF0IGFyZSBleHBlbnNpdmUgdG8gc2V0IHVwLCBt
YWtpbmcgdGhlIG9uZS1jb3B5LXBlci10ZXN0IG1vZGVsIHByb2hpYml0aXZlbHkKK2V4cGVuc2l2
ZS4KKworSWYgdGhlIHRlc3RzIGRvbid0IGNoYW5nZSB0aGUgcmVzb3VyY2UsIHRoZXJlJ3Mgbm8g
aGFybSBpbiB0aGVtIHNoYXJpbmcgYQorc2luZ2xlIHJlc291cmNlIGNvcHkuIFNvLCBpbiBhZGRp
dGlvbiB0byBwZXItdGVzdCBzZXQtdXAvdGVhci1kb3duLCBHb29nbGUgVGVzdAorYWxzbyBzdXBw
b3J0cyBwZXItdGVzdC1jYXNlIHNldC11cC90ZWFyLWRvd24uIFRvIHVzZSBpdDoKKworICAxLiBJ
biB5b3VyIHRlc3QgZml4dHVyZSBjbGFzcyAoc2F5IGBGb29UZXN0YCApLCBkZWZpbmUgYXMgYHN0
YXRpY2Agc29tZSBtZW1iZXIgdmFyaWFibGVzIHRvIGhvbGQgdGhlIHNoYXJlZCByZXNvdXJjZXMu
CisgIDEuIEluIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBjbGFzcywgZGVmaW5lIGEgYHN0YXRpYyB2
b2lkIFNldFVwVGVzdENhc2UoKWAgZnVuY3Rpb24gKHJlbWVtYmVyIG5vdCB0byBzcGVsbCBpdCBh
cyAqKmBTZXR1cFRlc3RDYXNlYCoqIHdpdGggYSBzbWFsbCBgdWAhKSB0byBzZXQgdXAgdGhlIHNo
YXJlZCByZXNvdXJjZXMgYW5kIGEgYHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKWAgZnVu
Y3Rpb24gdG8gdGVhciB0aGVtIGRvd24uCisKK1RoYXQncyBpdCEgR29vZ2xlIFRlc3QgYXV0b21h
dGljYWxseSBjYWxscyBgU2V0VXBUZXN0Q2FzZSgpYCBiZWZvcmUgcnVubmluZyB0aGUKK19maXJz
dCB0ZXN0XyBpbiB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZSAoaS5lLiBiZWZvcmUgY3JlYXRpbmcg
dGhlIGZpcnN0CitgRm9vVGVzdGAgb2JqZWN0KSwgYW5kIGNhbGxzIGBUZWFyRG93blRlc3RDYXNl
KClgIGFmdGVyIHJ1bm5pbmcgdGhlIF9sYXN0IHRlc3RfCitpbiBpdCAoaS5lLiBhZnRlciBkZWxl
dGluZyB0aGUgbGFzdCBgRm9vVGVzdGAgb2JqZWN0KS4gSW4gYmV0d2VlbiwgdGhlIHRlc3RzCitj
YW4gdXNlIHRoZSBzaGFyZWQgcmVzb3VyY2VzLgorCitSZW1lbWJlciB0aGF0IHRoZSB0ZXN0IG9y
ZGVyIGlzIHVuZGVmaW5lZCwgc28geW91ciBjb2RlIGNhbid0IGRlcGVuZCBvbiBhIHRlc3QKK3By
ZWNlZGluZyBvciBmb2xsb3dpbmcgYW5vdGhlci4gQWxzbywgdGhlIHRlc3RzIG11c3QgZWl0aGVy
IG5vdCBtb2RpZnkgdGhlCitzdGF0ZSBvZiBhbnkgc2hhcmVkIHJlc291cmNlLCBvciwgaWYgdGhl
eSBkbyBtb2RpZnkgdGhlIHN0YXRlLCB0aGV5IG11c3QKK3Jlc3RvcmUgdGhlIHN0YXRlIHRvIGl0
cyBvcmlnaW5hbCB2YWx1ZSBiZWZvcmUgcGFzc2luZyBjb250cm9sIHRvIHRoZSBuZXh0Cit0ZXN0
LgorCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBwZXItdGVzdC1jYXNlIHNldC11cCBhbmQgdGVhci1k
b3duOgorYGBgCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJv
dGVjdGVkOgorICAvLyBQZXItdGVzdC1jYXNlIHNldC11cC4KKyAgLy8gQ2FsbGVkIGJlZm9yZSB0
aGUgZmlyc3QgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZS4KKyAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYg
bm90IG5lZWRlZC4KKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKKyAgICBzaGFyZWRf
cmVzb3VyY2VfID0gbmV3IC4uLjsKKyAgfQorCisgIC8vIFBlci10ZXN0LWNhc2UgdGVhci1kb3du
LgorICAvLyBDYWxsZWQgYWZ0ZXIgdGhlIGxhc3QgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZS4KKyAg
Ly8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90IG5lZWRlZC4KKyAgc3RhdGljIHZvaWQgVGVhckRvd25U
ZXN0Q2FzZSgpIHsKKyAgICBkZWxldGUgc2hhcmVkX3Jlc291cmNlXzsKKyAgICBzaGFyZWRfcmVz
b3VyY2VfID0gTlVMTDsKKyAgfQorCisgIC8vIFlvdSBjYW4gZGVmaW5lIHBlci10ZXN0IHNldC11
cCBhbmQgdGVhci1kb3duIGxvZ2ljIGFzIHVzdWFsLgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7
IC4uLiB9CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsgLi4uIH0KKworICAvLyBTb21lIGV4
cGVuc2l2ZSByZXNvdXJjZSBzaGFyZWQgYnkgYWxsIHRlc3RzLgorICBzdGF0aWMgVCogc2hhcmVk
X3Jlc291cmNlXzsKK307CisKK1QqIEZvb1Rlc3Q6OnNoYXJlZF9yZXNvdXJjZV8gPSBOVUxMOwor
CitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVk
X3Jlc291cmNlIGhlcmUgLi4uCit9CitURVNUX0YoRm9vVGVzdCwgVGVzdDIpIHsKKyAgLi4uIHlv
dSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlIGhlcmUgLi4uCit9CitgYGAKKworX0F2YWls
YWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMgR2xvYmFsIFNldC1VcCBhbmQgVGVh
ci1Eb3duICMKKworSnVzdCBhcyB5b3UgY2FuIGRvIHNldC11cCBhbmQgdGVhci1kb3duIGF0IHRo
ZSB0ZXN0IGxldmVsIGFuZCB0aGUgdGVzdCBjYXNlCitsZXZlbCwgeW91IGNhbiBhbHNvIGRvIGl0
IGF0IHRoZSB0ZXN0IHByb2dyYW0gbGV2ZWwuIEhlcmUncyBob3cuCisKK0ZpcnN0LCB5b3Ugc3Vi
Y2xhc3MgdGhlIGA6OnRlc3Rpbmc6OkVudmlyb25tZW50YCBjbGFzcyB0byBkZWZpbmUgYSB0ZXN0
CitlbnZpcm9ubWVudCwgd2hpY2gga25vd3MgaG93IHRvIHNldC11cCBhbmQgdGVhci1kb3duOgor
CitgYGAKK2NsYXNzIEVudmlyb25tZW50IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfkVudmlyb25t
ZW50KCkge30KKyAgLy8gT3ZlcnJpZGUgdGhpcyB0byBkZWZpbmUgaG93IHRvIHNldCB1cCB0aGUg
ZW52aXJvbm1lbnQuCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHt9CisgIC8vIE92ZXJyaWRlIHRo
aXMgdG8gZGVmaW5lIGhvdyB0byB0ZWFyIGRvd24gdGhlIGVudmlyb25tZW50LgorICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7fQorfTsKK2BgYAorCitUaGVuLCB5b3UgcmVnaXN0ZXIgYW4gaW5z
dGFuY2Ugb2YgeW91ciBlbnZpcm9ubWVudCBjbGFzcyB3aXRoIEdvb2dsZSBUZXN0IGJ5CitjYWxs
aW5nIHRoZSBgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgZnVuY3Rpb246
CisKK2BgYAorRW52aXJvbm1lbnQqIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChFbnZpcm9ubWVu
dCogZW52KTsKK2BgYAorCitOb3csIHdoZW4gYFJVTl9BTExfVEVTVFMoKWAgaXMgY2FsbGVkLCBp
dCBmaXJzdCBjYWxscyB0aGUgYFNldFVwKClgIG1ldGhvZCBvZgordGhlIGVudmlyb25tZW50IG9i
amVjdCwgdGhlbiBydW5zIHRoZSB0ZXN0cyBpZiB0aGVyZSB3YXMgbm8gZmF0YWwgZmFpbHVyZXMs
IGFuZAorZmluYWxseSBjYWxscyBgVGVhckRvd24oKWAgb2YgdGhlIGVudmlyb25tZW50IG9iamVj
dC4KKworSXQncyBPSyB0byByZWdpc3RlciBtdWx0aXBsZSBlbnZpcm9ubWVudCBvYmplY3RzLiBJ
biB0aGlzIGNhc2UsIHRoZWlyIGBTZXRVcCgpYAord2lsbCBiZSBjYWxsZWQgaW4gdGhlIG9yZGVy
IHRoZXkgYXJlIHJlZ2lzdGVyZWQsIGFuZCB0aGVpciBgVGVhckRvd24oKWAgd2lsbCBiZQorY2Fs
bGVkIGluIHRoZSByZXZlcnNlIG9yZGVyLgorCitOb3RlIHRoYXQgR29vZ2xlIFRlc3QgdGFrZXMg
b3duZXJzaGlwIG9mIHRoZSByZWdpc3RlcmVkIGVudmlyb25tZW50IG9iamVjdHMuCitUaGVyZWZv
cmUgKipkbyBub3QgZGVsZXRlIHRoZW0qKiBieSB5b3Vyc2VsZi4KKworWW91IHNob3VsZCBjYWxs
IGBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgYmVmb3JlIGBSVU5fQUxMX1RFU1RTKClgIGlz
CitjYWxsZWQsIHByb2JhYmx5IGluIGBtYWluKClgLiBJZiB5b3UgdXNlIGBndGVzdF9tYWluYCwg
eW91IG5lZWQgdG8gICAgICBjYWxsCit0aGlzIGJlZm9yZSBgbWFpbigpYCBzdGFydHMgZm9yIGl0
IHRvIHRha2UgZWZmZWN0LiBPbmUgd2F5IHRvIGRvIHRoaXMgaXMgdG8KK2RlZmluZSBhIGdsb2Jh
bCB2YXJpYWJsZSBsaWtlIHRoaXM6CisKK2BgYAorOjp0ZXN0aW5nOjpFbnZpcm9ubWVudCogY29u
c3QgZm9vX2VudiA9IDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBGb29F
bnZpcm9ubWVudCk7CitgYGAKKworSG93ZXZlciwgd2Ugc3Ryb25nbHkgcmVjb21tZW5kIHlvdSB0
byB3cml0ZSB5b3VyIG93biBgbWFpbigpYCBhbmQgY2FsbAorYEFkZEdsb2JhbFRlc3RFbnZpcm9u
bWVudCgpYCB0aGVyZSwgYXMgcmVseWluZyBvbiBpbml0aWFsaXphdGlvbiBvZiBnbG9iYWwKK3Zh
cmlhYmxlcyBtYWtlcyB0aGUgY29kZSBoYXJkZXIgdG8gcmVhZCBhbmQgbWF5IGNhdXNlIHByb2Js
ZW1zIHdoZW4geW91CityZWdpc3RlciBtdWx0aXBsZSBlbnZpcm9ubWVudHMgZnJvbSBkaWZmZXJl
bnQgdHJhbnNsYXRpb24gdW5pdHMgYW5kIHRoZQorZW52aXJvbm1lbnRzIGhhdmUgZGVwZW5kZW5j
aWVzIGFtb25nIHRoZW0gKHJlbWVtYmVyIHRoYXQgdGhlIGNvbXBpbGVyIGRvZXNuJ3QKK2d1YXJh
bnRlZSB0aGUgb3JkZXIgaW4gd2hpY2ggZ2xvYmFsIHZhcmlhYmxlcyBmcm9tIGRpZmZlcmVudCB0
cmFuc2xhdGlvbiB1bml0cworYXJlIGluaXRpYWxpemVkKS4KKworX0F2YWlsYWJpbGl0eTpfIExp
bnV4LCBXaW5kb3dzLCBNYWMuCisKKworIyBWYWx1ZSBQYXJhbWV0ZXJpemVkIFRlc3RzICMKKwor
X1ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHNfIGFsbG93IHlvdSB0byB0ZXN0IHlvdXIgY29kZSB3
aXRoIGRpZmZlcmVudAorcGFyYW1ldGVycyB3aXRob3V0IHdyaXRpbmcgbXVsdGlwbGUgY29waWVz
IG9mIHRoZSBzYW1lIHRlc3QuCisKK1N1cHBvc2UgeW91IHdyaXRlIGEgdGVzdCBmb3IgeW91ciBj
b2RlIGFuZCB0aGVuIHJlYWxpemUgdGhhdCB5b3VyIGNvZGUgaXMgYWZmZWN0ZWQgYnkgYSBwcmVz
ZW5jZSBvZiBhIEJvb2xlYW4gY29tbWFuZCBsaW5lIGZsYWcuCisKK2BgYAorVEVTVChNeUNvZGVU
ZXN0LCBUZXN0Rm9vKSB7CisgIC8vIEEgY29kZSB0byB0ZXN0IGZvbygpLgorfQorYGBgCisKK1Vz
dWFsbHkgcGVvcGxlIGZhY3RvciB0aGVpciB0ZXN0IGNvZGUgaW50byBhIGZ1bmN0aW9uIHdpdGgg
YSBCb29sZWFuIHBhcmFtZXRlciBpbiBzdWNoIHNpdHVhdGlvbnMuIFRoZSBmdW5jdGlvbiBzZXRz
IHRoZSBmbGFnLCB0aGVuIGV4ZWN1dGVzIHRoZSB0ZXN0aW5nIGNvZGUuCisKK2BgYAordm9pZCBU
ZXN0Rm9vSGVscGVyKGJvb2wgZmxhZ192YWx1ZSkgeworICBmbGFnID0gZmxhZ192YWx1ZTsKKyAg
Ly8gQSBjb2RlIHRvIHRlc3QgZm9vKCkuCit9CisKK1RFU1QoTXlDb2RlVGVzdCwgVGVzdEZvbykg
eworICBUZXN0Rm9vSGVscGVyKGZhbHNlKTsKKyAgVGVzdEZvb0hlbHBlcih0cnVlKTsKK30KK2Bg
YAorCitCdXQgdGhpcyBzZXR1cCBoYXMgc2VyaW91cyBkcmF3YmFja3MuIEZpcnN0LCB3aGVuIGEg
dGVzdCBhc3NlcnRpb24gZmFpbHMgaW4geW91ciB0ZXN0cywgaXQgYmVjb21lcyB1bmNsZWFyIHdo
YXQgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciBjYXVzZWQgaXQgdG8gZmFpbC4gWW91IGNhbiBzdHJl
YW0gYSBjbGFyaWZ5aW5nIG1lc3NhZ2UgaW50byB5b3VyIGBFWFBFQ1RgL2BBU1NFUlRgIHN0YXRl
bWVudHMsIGJ1dCBpdCB5b3UnbGwgaGF2ZSB0byBkbyBpdCB3aXRoIGFsbCBvZiB0aGVtLiBTZWNv
bmQsIHlvdSBoYXZlIHRvIGFkZCBvbmUgc3VjaCBoZWxwZXIgZnVuY3Rpb24gcGVyIHRlc3QuIFdo
YXQgaWYgeW91IGhhdmUgdGVuIHRlc3RzPyBUd2VudHk/IEEgaHVuZHJlZD8KKworVmFsdWUtcGFy
YW1ldGVyaXplZCB0ZXN0cyB3aWxsIGxldCB5b3Ugd3JpdGUgeW91ciB0ZXN0IG9ubHkgb25jZSBh
bmQgdGhlbiBlYXNpbHkgaW5zdGFudGlhdGUgYW5kIHJ1biBpdCB3aXRoIGFuIGFyYml0cmFyeSBu
dW1iZXIgb2YgcGFyYW1ldGVyIHZhbHVlcy4KKworSGVyZSBhcmUgc29tZSBvdGhlciBzaXR1YXRp
b25zIHdoZW4gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBjb21lIGhhbmR5OgorCisgICogWW91
IHdhbnQgdG8gdGVzdCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIG9mIGFuIE9PIGludGVyZmFj
ZS4KKyAgKiBZb3Ugd2FudCB0byB0ZXN0IHlvdXIgY29kZSBvdmVyIHZhcmlvdXMgaW5wdXRzIChh
LmsuYS4gZGF0YS1kcml2ZW4gdGVzdGluZykuIFRoaXMgZmVhdHVyZSBpcyBlYXN5IHRvIGFidXNl
LCBzbyBwbGVhc2UgZXhlcmNpc2UgeW91ciBnb29kIHNlbnNlIHdoZW4gZG9pbmcgaXQhCisKKyMj
IEhvdyB0byBXcml0ZSBWYWx1ZS1QYXJhbWV0ZXJpemVkIFRlc3RzICMjCisKK1RvIHdyaXRlIHZh
bHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4dHVy
ZQorY2xhc3MuICBJdCBtdXN0IGJlIGRlcml2ZWQgZnJvbSBib3RoIGA6OnRlc3Rpbmc6OlRlc3Rg
IGFuZAorYDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPFQ+YCAodGhlIGxhdHRlciBpcyBh
IHB1cmUgaW50ZXJmYWNlKSwKK3doZXJlIGBUYCBpcyB0aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRl
ciB2YWx1ZXMuICBGb3IgY29udmVuaWVuY2UsIHlvdQorY2FuIGp1c3QgZGVyaXZlIHRoZSBmaXh0
dXJlIGNsYXNzIGZyb20gYDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxUPmAsCit3aGljaCBpdHNl
bGYgaXMgZGVyaXZlZCBmcm9tIGJvdGggYDo6dGVzdGluZzo6VGVzdGAgYW5kCitgOjp0ZXN0aW5n
OjpXaXRoUGFyYW1JbnRlcmZhY2U8VD5gLiBgVGAgY2FuIGJlIGFueSBjb3B5YWJsZSB0eXBlLiBJ
ZgoraXQncyBhIHJhdyBwb2ludGVyLCB5b3UgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0
aGUgbGlmZXNwYW4gb2YKK3RoZSBwb2ludGVkIHZhbHVlcy4KKworYGBgCitjbGFzcyBGb29UZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBjaGFyKj4geworICAvLyBZ
b3UgY2FuIGltcGxlbWVudCBhbGwgdGhlIHVzdWFsIGZpeHR1cmUgY2xhc3MgbWVtYmVycyBoZXJl
LgorICAvLyBUbyBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyLCBjYWxsIEdldFBhcmFtKCkgZnJv
bSBjbGFzcworICAvLyBUZXN0V2l0aFBhcmFtPFQ+LgorfTsKKworLy8gT3IsIHdoZW4geW91IHdh
bnQgdG8gYWRkIHBhcmFtZXRlcnMgdG8gYSBwcmUtZXhpc3RpbmcgZml4dHVyZSBjbGFzczoKK2Ns
YXNzIEJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgIC4uLgorfTsKK2NsYXNz
IEJhclRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsCisgICAgICAgICAgICAgICAgcHVibGljIDo6dGVz
dGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPGNvbnN0IGNoYXIqPiB7CisgIC4uLgorfTsKK2BgYAor
CitUaGVuLCB1c2UgdGhlIGBURVNUX1BgIG1hY3JvIHRvIGRlZmluZSBhcyBtYW55IHRlc3QgcGF0
dGVybnMgdXNpbmcKK3RoaXMgZml4dHVyZSBhcyB5b3Ugd2FudC4gIFRoZSBgX1BgIHN1ZmZpeCBp
cyBmb3IgInBhcmFtZXRlcml6ZWQiIG9yCisicGF0dGVybiIsIHdoaWNoZXZlciB5b3UgcHJlZmVy
IHRvIHRoaW5rLgorCitgYGAKK1RFU1RfUChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJbnNp
ZGUgYSB0ZXN0LCBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyIHdpdGggdGhlIEdldFBhcmFtKCkg
bWV0aG9kCisgIC8vIG9mIHRoZSBUZXN0V2l0aFBhcmFtPFQ+IGNsYXNzOgorICBFWFBFQ1RfVFJV
RShmb28uQmxhaChHZXRQYXJhbSgpKSk7CisgIC4uLgorfQorCitURVNUX1AoRm9vVGVzdCwgSGFz
QmxhaEJsYWgpIHsKKyAgLi4uCit9CitgYGAKKworRmluYWxseSwgeW91IGNhbiB1c2UgYElOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QYCB0byBpbnN0YW50aWF0ZSB0aGUgdGVzdAorY2FzZSB3aXRoIGFu
eSBzZXQgb2YgcGFyYW1ldGVycyB5b3Ugd2FudC4gR29vZ2xlIFRlc3QgZGVmaW5lcyBhIG51bWJl
ciBvZgorZnVuY3Rpb25zIGZvciBnZW5lcmF0aW5nIHRlc3QgcGFyYW1ldGVycy4gVGhleSByZXR1
cm4gd2hhdCB3ZSBjYWxsCisoc3VycHJpc2UhKSBfcGFyYW1ldGVyIGdlbmVyYXRvcnNfLiBIZXJl
IGlzIGEgc3VtbWFyeSBvZiB0aGVtLAord2hpY2ggYXJlIGFsbCBpbiB0aGUgYHRlc3RpbmdgIG5h
bWVzcGFjZToKKworfCBgUmFuZ2UoYmVnaW4sIGVuZFssIHN0ZXBdKWAgfCBZaWVsZHMgdmFsdWVz
IGB7YmVnaW4sIGJlZ2luK3N0ZXAsIGJlZ2luK3N0ZXArc3RlcCwgLi4ufWAuIFRoZSB2YWx1ZXMg
ZG8gbm90IGluY2x1ZGUgYGVuZGAuIGBzdGVwYCBkZWZhdWx0cyB0byAxLiB8Cit8Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYFZhbHVlcyh2MSwgdjIsIC4uLiwgdk4pYCAgIHwg
WWllbGRzIHZhbHVlcyBge3YxLCB2MiwgLi4uLCB2Tn1gLiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorfCBgVmFsdWVzSW4oY29udGFpbmVyKWAgYW5kIGBWYWx1ZXNJbihiZWdpbiwgZW5kKWAgfCBZ
aWVsZHMgdmFsdWVzIGZyb20gYSBDLXN0eWxlIGFycmF5LCBhbiBTVEwtc3R5bGUgY29udGFpbmVy
LCBvciBhbiBpdGVyYXRvciByYW5nZSBgW2JlZ2luLCBlbmQpYC4gYGNvbnRhaW5lcmAsIGBiZWdp
bmAsIGFuZCBgZW5kYCBjYW4gYmUgZXhwcmVzc2lvbnMgd2hvc2UgdmFsdWVzIGFyZSBkZXRlcm1p
bmVkIGF0IHJ1biB0aW1lLiAgfAorfCBgQm9vbCgpYCAgICAgICAgICAgICAgICAgICAgfCBZaWVs
ZHMgc2VxdWVuY2UgYHtmYWxzZSwgdHJ1ZX1gLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8
IGBDb21iaW5lKGcxLCBnMiwgLi4uLCBnTilgICB8IFlpZWxkcyBhbGwgY29tYmluYXRpb25zICh0
aGUgQ2FydGVzaWFuIHByb2R1Y3QgZm9yIHRoZSBtYXRoIHNhdnZ5KSBvZiB0aGUgdmFsdWVzIGdl
bmVyYXRlZCBieSB0aGUgYE5gIGdlbmVyYXRvcnMuIFRoaXMgaXMgb25seSBhdmFpbGFibGUgaWYg
eW91ciBzeXN0ZW0gcHJvdmlkZXMgdGhlIGA8dHIxL3R1cGxlPmAgaGVhZGVyLiBJZiB5b3UgYXJl
IHN1cmUgeW91ciBzeXN0ZW0gZG9lcywgYW5kIEdvb2dsZSBUZXN0IGRpc2FncmVlcywgeW91IGNh
biBvdmVycmlkZSBpdCBieSBkZWZpbmluZyBgR1RFU1RfSEFTX1RSMV9UVVBMRT0xYC4gU2VlIGNv
bW1lbnRzIGluIFtpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaF0oLi4vaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgpIGZvciBtb3JlIGluZm9ybWF0aW9uLiB8CisK
K0ZvciBtb3JlIGRldGFpbHMsIHNlZSB0aGUgY29tbWVudHMgYXQgdGhlIGRlZmluaXRpb25zIG9m
IHRoZXNlIGZ1bmN0aW9ucyBpbiB0aGUgW3NvdXJjZSBjb2RlXSguLi9pbmNsdWRlL2d0ZXN0L2d0
ZXN0LXBhcmFtLXRlc3QuaCkuCisKK1RoZSBmb2xsb3dpbmcgc3RhdGVtZW50IHdpbGwgaW5zdGFu
dGlhdGUgdGVzdHMgZnJvbSB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZQorZWFjaCB3aXRoIHBhcmFt
ZXRlciB2YWx1ZXMgYCJtZWVueSJgLCBgIm1pbnkiYCwgYW5kIGAibW9lImAuCisKK2BgYAorSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoSW5zdGFudGlhdGlvbk5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICBGb29UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1
ZXMoIm1lZW55IiwgIm1pbnkiLCAibW9lIikpOworYGBgCisKK1RvIGRpc3Rpbmd1aXNoIGRpZmZl
cmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4gKHllcywgeW91IGNhbgoraW5zdGFudGlhdGUg
aXQgbW9yZSB0aGFuIG9uY2UpLCB0aGUgZmlyc3QgYXJndW1lbnQgdG8KK2BJTlNUQU5USUFURV9U
RVNUX0NBU0VfUGAgaXMgYSBwcmVmaXggdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBhY3R1YWwK
K3Rlc3QgY2FzZSBuYW1lLiBSZW1lbWJlciB0byBwaWNrIHVuaXF1ZSBwcmVmaXhlcyBmb3IgZGlm
ZmVyZW50CitpbnN0YW50aWF0aW9ucy4gVGhlIHRlc3RzIGZyb20gdGhlIGluc3RhbnRpYXRpb24g
YWJvdmUgd2lsbCBoYXZlIHRoZXNlCituYW1lczoKKworICAqIGBJbnN0YW50aWF0aW9uTmFtZS9G
b29UZXN0LkRvZXNCbGFoLzBgIGZvciBgIm1lZW55ImAKKyAgKiBgSW5zdGFudGlhdGlvbk5hbWUv
Rm9vVGVzdC5Eb2VzQmxhaC8xYCBmb3IgYCJtaW55ImAKKyAgKiBgSW5zdGFudGlhdGlvbk5hbWUv
Rm9vVGVzdC5Eb2VzQmxhaC8yYCBmb3IgYCJtb2UiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9G
b29UZXN0Lkhhc0JsYWhCbGFoLzBgIGZvciBgIm1lZW55ImAKKyAgKiBgSW5zdGFudGlhdGlvbk5h
bWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8xYCBmb3IgYCJtaW55ImAKKyAgKiBgSW5zdGFudGlhdGlv
bk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8yYCBmb3IgYCJtb2UiYAorCitZb3UgY2FuIHVzZSB0
aGVzZSBuYW1lcyBpbiBbLS1ndGVzdFxfZmlsdGVyXSgjcnVubmluZy1hLXN1YnNldC1vZi10aGUt
dGVzdHMpLgorCitUaGlzIHN0YXRlbWVudCB3aWxsIGluc3RhbnRpYXRlIGFsbCB0ZXN0cyBmcm9t
IGBGb29UZXN0YCBhZ2FpbiwgZWFjaAord2l0aCBwYXJhbWV0ZXIgdmFsdWVzIGAiY2F0ImAgYW5k
IGAiZG9nImA6CisKK2BgYAorY29uc3QgY2hhciogcGV0c1tdID0geyJjYXQiLCAiZG9nIn07CitJ
TlNUQU5USUFURV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFudGlhdGlvbk5hbWUsIEZvb1Rlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlc0luKHBldHMpKTsKK2Bg
YAorCitUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhhdmUgdGhl
c2UgbmFtZXM6CisKKyAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0Js
YWgvMGAgZm9yIGAiY2F0ImAKKyAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3Qu
RG9lc0JsYWgvMWAgZm9yIGAiZG9nImAKKyAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zv
b1Rlc3QuSGFzQmxhaEJsYWgvMGAgZm9yIGAiY2F0ImAKKyAgKiBgQW5vdGhlckluc3RhbnRpYXRp
b25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMWAgZm9yIGAiZG9nImAKKworUGxlYXNlIG5vdGUg
dGhhdCBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIHdpbGwgaW5zdGFudGlhdGUgX2FsbF8KK3Rl
c3RzIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UsIHdoZXRoZXIgdGhlaXIgZGVmaW5pdGlvbnMgY29t
ZSBiZWZvcmUgb3IKK19hZnRlcl8gdGhlIGBJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgc3RhdGVt
ZW50LgorCitZb3UgY2FuIHNlZQorW3RoZXNlXSguLi9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3Qu
Y2MpCitbZmlsZXNdKC4uL3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYykgZm9yIG1vcmUgZXhh
bXBsZXMuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4
LjAgb3IgYWJvdmUpLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4yLjAuCisKKyMjIENyZWF0aW5nIFZh
bHVlLVBhcmFtZXRlcml6ZWQgQWJzdHJhY3QgVGVzdHMgIyMKKworSW4gdGhlIGFib3ZlLCB3ZSBk
ZWZpbmUgYW5kIGluc3RhbnRpYXRlIGBGb29UZXN0YCBpbiB0aGUgc2FtZSBzb3VyY2UKK2ZpbGUu
IFNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gZGVmaW5lIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dHMgaW4gYQorbGlicmFyeSBhbmQgbGV0IG90aGVyIHBlb3BsZSBpbnN0YW50aWF0ZSB0aGVtIGxh
dGVyLiBUaGlzIHBhdHRlcm4gaXMKK2tub3duIGFzIDxpPmFic3RyYWN0IHRlc3RzPC9pPi4gQXMg
YW4gZXhhbXBsZSBvZiBpdHMgYXBwbGljYXRpb24sIHdoZW4geW91CithcmUgZGVzaWduaW5nIGFu
IGludGVyZmFjZSB5b3UgY2FuIHdyaXRlIGEgc3RhbmRhcmQgc3VpdGUgb2YgYWJzdHJhY3QKK3Rl
c3RzIChwZXJoYXBzIHVzaW5nIGEgZmFjdG9yeSBmdW5jdGlvbiBhcyB0aGUgdGVzdCBwYXJhbWV0
ZXIpIHRoYXQKK2FsbCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGludGVyZmFjZSBhcmUgZXhwZWN0
ZWQgdG8gcGFzcy4gV2hlbgorc29tZW9uZSBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UsIGhlIGNh
biBpbnN0YW50aWF0ZSB5b3VyIHN1aXRlIHRvIGdldAorYWxsIHRoZSBpbnRlcmZhY2UtY29uZm9y
bWFuY2UgdGVzdHMgZm9yIGZyZWUuCisKK1RvIGRlZmluZSBhYnN0cmFjdCB0ZXN0cywgeW91IHNo
b3VsZCBvcmdhbml6ZSB5b3VyIGNvZGUgbGlrZSB0aGlzOgorCisgIDEuIFB1dCB0aGUgZGVmaW5p
dGlvbiBvZiB0aGUgcGFyYW1ldGVyaXplZCB0ZXN0IGZpeHR1cmUgY2xhc3MgKGUuZy4gYEZvb1Rl
c3RgKSBpbiBhIGhlYWRlciBmaWxlLCBzYXkgYGZvb19wYXJhbV90ZXN0LmhgLiBUaGluayBvZiB0
aGlzIGFzIF9kZWNsYXJpbmdfIHlvdXIgYWJzdHJhY3QgdGVzdHMuCisgIDEuIFB1dCB0aGUgYFRF
U1RfUGAgZGVmaW5pdGlvbnMgaW4gYGZvb19wYXJhbV90ZXN0LmNjYCwgd2hpY2ggaW5jbHVkZXMg
YGZvb19wYXJhbV90ZXN0LmhgLiBUaGluayBvZiB0aGlzIGFzIF9pbXBsZW1lbnRpbmdfIHlvdXIg
YWJzdHJhY3QgdGVzdHMuCisKK09uY2UgdGhleSBhcmUgZGVmaW5lZCwgeW91IGNhbiBpbnN0YW50
aWF0ZSB0aGVtIGJ5IGluY2x1ZGluZworYGZvb19wYXJhbV90ZXN0LmhgLCBpbnZva2luZyBgSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoKWAsIGFuZCBsaW5raW5nCit3aXRoIGBmb29fcGFyYW1fdGVz
dC5jY2AuIFlvdSBjYW4gaW5zdGFudGlhdGUgdGhlIHNhbWUgYWJzdHJhY3QgdGVzdAorY2FzZSBt
dWx0aXBsZSB0aW1lcywgcG9zc2libHkgaW4gZGlmZmVyZW50IHNvdXJjZSBmaWxlcy4KKworIyBU
eXBlZCBUZXN0cyAjCisKK1N1cHBvc2UgeW91IGhhdmUgbXVsdGlwbGUgaW1wbGVtZW50YXRpb25z
IG9mIHRoZSBzYW1lIGludGVyZmFjZSBhbmQKK3dhbnQgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIG9m
IHRoZW0gc2F0aXNmeSBzb21lIGNvbW1vbiByZXF1aXJlbWVudHMuCitPciwgeW91IG1heSBoYXZl
IGRlZmluZWQgc2V2ZXJhbCB0eXBlcyB0aGF0IGFyZSBzdXBwb3NlZCB0byBjb25mb3JtIHRvCit0
aGUgc2FtZSAiY29uY2VwdCIgYW5kIHlvdSB3YW50IHRvIHZlcmlmeSBpdC4gIEluIGJvdGggY2Fz
ZXMsIHlvdSB3YW50Cit0aGUgc2FtZSB0ZXN0IGxvZ2ljIHJlcGVhdGVkIGZvciBkaWZmZXJlbnQg
dHlwZXMuCisKK1doaWxlIHlvdSBjYW4gd3JpdGUgb25lIGBURVNUYCBvciBgVEVTVF9GYCBmb3Ig
ZWFjaCB0eXBlIHlvdSB3YW50IHRvCit0ZXN0IChhbmQgeW91IG1heSBldmVuIGZhY3RvciB0aGUg
dGVzdCBsb2dpYyBpbnRvIGEgZnVuY3Rpb24gdGVtcGxhdGUKK3RoYXQgeW91IGludm9rZSBmcm9t
IHRoZSBgVEVTVGApLCBpdCdzIHRlZGlvdXMgYW5kIGRvZXNuJ3Qgc2NhbGU6CitpZiB5b3Ugd2Fu
dCBfbV8gdGVzdHMgb3ZlciBfbl8gdHlwZXMsIHlvdSdsbCBlbmQgdXAgd3JpdGluZyBfbVwqbl8K
K2BURVNUYHMuCisKK19UeXBlZCB0ZXN0c18gYWxsb3cgeW91IHRvIHJlcGVhdCB0aGUgc2FtZSB0
ZXN0IGxvZ2ljIG92ZXIgYSBsaXN0IG9mCit0eXBlcy4gIFlvdSBvbmx5IG5lZWQgdG8gd3JpdGUg
dGhlIHRlc3QgbG9naWMgb25jZSwgYWx0aG91Z2ggeW91IG11c3QKK2tub3cgdGhlIHR5cGUgbGlz
dCB3aGVuIHdyaXRpbmcgdHlwZWQgdGVzdHMuICBIZXJlJ3MgaG93IHlvdSBkbyBpdDoKKworRmly
c3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUuICBJdCBzaG91bGQgYmUgcGFyYW1l
dGVyaXplZAorYnkgYSB0eXBlLiAgUmVtZW1iZXIgdG8gZGVyaXZlIGl0IGZyb20gYDo6dGVzdGlu
Zzo6VGVzdGA6CisKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBGb29UZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHVibGljOgorICAuLi4KKyAgdHlwZWRlZiBzdGQ6
Omxpc3Q8VD4gTGlzdDsKKyAgc3RhdGljIFQgc2hhcmVkXzsKKyAgVCB2YWx1ZV87Cit9OworYGBg
CisKK05leHQsIGFzc29jaWF0ZSBhIGxpc3Qgb2YgdHlwZXMgd2l0aCB0aGUgdGVzdCBjYXNlLCB3
aGljaCB3aWxsIGJlCityZXBlYXRlZCBmb3IgZWFjaCB0eXBlIGluIHRoZSBsaXN0OgorCitgYGAK
K3R5cGVkZWYgOjp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQsIHVuc2lnbmVkIGludD4gTXlUeXBl
czsKK1RZUEVEX1RFU1RfQ0FTRShGb29UZXN0LCBNeVR5cGVzKTsKK2BgYAorCitUaGUgYHR5cGVk
ZWZgIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIGBUWVBFRF9URVNUX0NBU0VgIG1hY3JvIHRvIHBhcnNl
Citjb3JyZWN0bHkuICBPdGhlcndpc2UgdGhlIGNvbXBpbGVyIHdpbGwgdGhpbmsgdGhhdCBlYWNo
IGNvbW1hIGluIHRoZQordHlwZSBsaXN0IGludHJvZHVjZXMgYSBuZXcgbWFjcm8gYXJndW1lbnQu
CisKK1RoZW4sIHVzZSBgVFlQRURfVEVTVCgpYCBpbnN0ZWFkIG9mIGBURVNUX0YoKWAgdG8gZGVm
aW5lIGEgdHlwZWQgdGVzdAorZm9yIHRoaXMgdGVzdCBjYXNlLiAgWW91IGNhbiByZXBlYXQgdGhp
cyBhcyBtYW55IHRpbWVzIGFzIHlvdSB3YW50OgorCitgYGAKK1RZUEVEX1RFU1QoRm9vVGVzdCwg
RG9lc0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIgdG8gdGhlIHNwZWNpYWwgbmFt
ZSBUeXBlUGFyYW0gdG8gZ2V0IHRoZSB0eXBlCisgIC8vIHBhcmFtZXRlci4gIFNpbmNlIHdlIGFy
ZSBpbnNpZGUgYSBkZXJpdmVkIGNsYXNzIHRlbXBsYXRlLCBDKysgcmVxdWlyZXMKKyAgLy8gdXMg
dG8gdmlzaXQgdGhlIG1lbWJlcnMgb2YgRm9vVGVzdCB2aWEgJ3RoaXMnLgorICBUeXBlUGFyYW0g
biA9IHRoaXMtPnZhbHVlXzsKKworICAvLyBUbyB2aXNpdCBzdGF0aWMgbWVtYmVycyBvZiB0aGUg
Zml4dHVyZSwgYWRkIHRoZSAnVGVzdEZpeHR1cmU6OicKKyAgLy8gcHJlZml4LgorICBuICs9IFRl
c3RGaXh0dXJlOjpzaGFyZWRfOworCisgIC8vIFRvIHJlZmVyIHRvIHR5cGVkZWZzIGluIHRoZSBm
aXh0dXJlLCBhZGQgdGhlICd0eXBlbmFtZSBUZXN0Rml4dHVyZTo6JworICAvLyBwcmVmaXguICBU
aGUgJ3R5cGVuYW1lJyBpcyByZXF1aXJlZCB0byBzYXRpc2Z5IHRoZSBjb21waWxlci4KKyAgdHlw
ZW5hbWUgVGVzdEZpeHR1cmU6Okxpc3QgdmFsdWVzOworICB2YWx1ZXMucHVzaF9iYWNrKG4pOwor
ICAuLi4KK30KKworVFlQRURfVEVTVChGb29UZXN0LCBIYXNQcm9wZXJ0eUEpIHsgLi4uIH0KK2Bg
YAorCitZb3UgY2FuIHNlZSBgc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjYCBmb3IgYSBjb21w
bGV0ZSBleGFtcGxlLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVz
IE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFjOworc2luY2UgdmVyc2lvbiAxLjEuMC4KKworIyBUeXBl
LVBhcmFtZXRlcml6ZWQgVGVzdHMgIworCitfVHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzXyBhcmUg
bGlrZSB0eXBlZCB0ZXN0cywgZXhjZXB0IHRoYXQgdGhleQorZG9uJ3QgcmVxdWlyZSB5b3UgdG8g
a25vdyB0aGUgbGlzdCBvZiB0eXBlcyBhaGVhZCBvZiB0aW1lLiAgSW5zdGVhZCwKK3lvdSBjYW4g
ZGVmaW5lIHRoZSB0ZXN0IGxvZ2ljIGZpcnN0IGFuZCBpbnN0YW50aWF0ZSBpdCB3aXRoIGRpZmZl
cmVudAordHlwZSBsaXN0cyBsYXRlci4gIFlvdSBjYW4gZXZlbiBpbnN0YW50aWF0ZSBpdCBtb3Jl
IHRoYW4gb25jZSBpbiB0aGUKK3NhbWUgcHJvZ3JhbS4KKworSWYgeW91IGFyZSBkZXNpZ25pbmcg
YW4gaW50ZXJmYWNlIG9yIGNvbmNlcHQsIHlvdSBjYW4gZGVmaW5lIGEgc3VpdGUKK29mIHR5cGUt
cGFyYW1ldGVyaXplZCB0ZXN0cyB0byB2ZXJpZnkgcHJvcGVydGllcyB0aGF0IGFueSB2YWxpZAor
aW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVyZmFjZS9jb25jZXB0IHNob3VsZCBoYXZlLiAgVGhl
biwgdGhlIGF1dGhvcgorb2YgZWFjaCBpbXBsZW1lbnRhdGlvbiBjYW4ganVzdCBpbnN0YW50aWF0
ZSB0aGUgdGVzdCBzdWl0ZSB3aXRoIGhpcwordHlwZSB0byB2ZXJpZnkgdGhhdCBpdCBjb25mb3Jt
cyB0byB0aGUgcmVxdWlyZW1lbnRzLCB3aXRob3V0IGhhdmluZyB0bword3JpdGUgc2ltaWxhciB0
ZXN0cyByZXBlYXRlZGx5LiAgSGVyZSdzIGFuIGV4YW1wbGU6CisKK0ZpcnN0LCBkZWZpbmUgYSBm
aXh0dXJlIGNsYXNzIHRlbXBsYXRlLCBhcyB3ZSBkaWQgd2l0aCB0eXBlZCB0ZXN0czoKKworYGBg
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0IHsKKyAgLi4uCit9OworYGBgCisKK05leHQsIGRlY2xhcmUgdGhhdCB5b3Ugd2lsbCBk
ZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlOgorCitgYGAKK1RZUEVEX1RFU1Rf
Q0FTRV9QKEZvb1Rlc3QpOworYGBgCisKK1RoZSBgX1BgIHN1ZmZpeCBpcyBmb3IgInBhcmFtZXRl
cml6ZWQiIG9yICJwYXR0ZXJuIiwgd2hpY2hldmVyIHlvdQorcHJlZmVyIHRvIHRoaW5rLgorCitU
aGVuLCB1c2UgYFRZUEVEX1RFU1RfUCgpYCB0byBkZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQg
dGVzdC4gIFlvdQorY2FuIHJlcGVhdCB0aGlzIGFzIG1hbnkgdGltZXMgYXMgeW91IHdhbnQ6CisK
K2BgYAorVFlQRURfVEVTVF9QKEZvb1Rlc3QsIERvZXNCbGFoKSB7CisgIC8vIEluc2lkZSBhIHRl
c3QsIHJlZmVyIHRvIFR5cGVQYXJhbSB0byBnZXQgdGhlIHR5cGUgcGFyYW1ldGVyLgorICBUeXBl
UGFyYW0gbiA9IDA7CisgIC4uLgorfQorCitUWVBFRF9URVNUX1AoRm9vVGVzdCwgSGFzUHJvcGVy
dHlBKSB7IC4uLiB9CitgYGAKKworTm93IHRoZSB0cmlja3kgcGFydDogeW91IG5lZWQgdG8gcmVn
aXN0ZXIgYWxsIHRlc3QgcGF0dGVybnMgdXNpbmcgdGhlCitgUkVHSVNURVJfVFlQRURfVEVTVF9D
QVNFX1BgIG1hY3JvIGJlZm9yZSB5b3UgY2FuIGluc3RhbnRpYXRlIHRoZW0uCitUaGUgZmlyc3Qg
YXJndW1lbnQgb2YgdGhlIG1hY3JvIGlzIHRoZSB0ZXN0IGNhc2UgbmFtZTsgdGhlIHJlc3QgYXJl
Cit0aGUgbmFtZXMgb2YgdGhlIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlOgorCitgYGAKK1JFR0lT
VEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEb2VzQmxhaCwgSGFzUHJvcGVydHlBKTsKK2BgYAorCitGaW5hbGx5LCB5b3UgYXJlIGZyZWUg
dG8gaW5zdGFudGlhdGUgdGhlIHBhdHRlcm4gd2l0aCB0aGUgdHlwZXMgeW91Cit3YW50LiAgSWYg
eW91IHB1dCB0aGUgYWJvdmUgY29kZSBpbiBhIGhlYWRlciBmaWxlLCB5b3UgY2FuIGAjaW5jbHVk
ZWAKK2l0IGluIG11bHRpcGxlIEMrKyBzb3VyY2UgZmlsZXMgYW5kIGluc3RhbnRpYXRlIGl0IG11
bHRpcGxlIHRpbWVzLgorCitgYGAKK3R5cGVkZWYgOjp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQs
IHVuc2lnbmVkIGludD4gTXlUeXBlczsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15
LCBGb29UZXN0LCBNeVR5cGVzKTsKK2BgYAorCitUbyBkaXN0aW5ndWlzaCBkaWZmZXJlbnQgaW5z
dGFuY2VzIG9mIHRoZSBwYXR0ZXJuLCB0aGUgZmlyc3QgYXJndW1lbnQKK3RvIHRoZSBgSU5TVEFO
VElBVEVfVFlQRURfVEVTVF9DQVNFX1BgIG1hY3JvIGlzIGEgcHJlZml4IHRoYXQgd2lsbCBiZQor
YWRkZWQgdG8gdGhlIGFjdHVhbCB0ZXN0IGNhc2UgbmFtZS4gIFJlbWVtYmVyIHRvIHBpY2sgdW5p
cXVlIHByZWZpeGVzCitmb3IgZGlmZmVyZW50IGluc3RhbmNlcy4KKworSW4gdGhlIHNwZWNpYWwg
Y2FzZSB3aGVyZSB0aGUgdHlwZSBsaXN0IGNvbnRhaW5zIG9ubHkgb25lIHR5cGUsIHlvdQorY2Fu
IHdyaXRlIHRoYXQgdHlwZSBkaXJlY3RseSB3aXRob3V0IGA6OnRlc3Rpbmc6OlR5cGVzPC4uLj5g
LCBsaWtlIHRoaXM6CisKK2BgYAorSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZv
b1Rlc3QsIGludCk7CitgYGAKKworWW91IGNhbiBzZWUgYHNhbXBsZXMvc2FtcGxlNl91bml0dGVz
dC5jY2AgZm9yIGEgY29tcGxldGUgZXhhbXBsZS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBX
aW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYzsKK3NpbmNlIHZlcnNpb24g
MS4xLjAuCisKKyMgVGVzdGluZyBQcml2YXRlIENvZGUgIworCitJZiB5b3UgY2hhbmdlIHlvdXIg
c29mdHdhcmUncyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiwgeW91ciB0ZXN0cyBzaG91bGQgbm90
CiticmVhayBhcyBsb25nIGFzIHRoZSBjaGFuZ2UgaXMgbm90IG9ic2VydmFibGUgYnkgdXNlcnMu
IFRoZXJlZm9yZSwgcGVyIHRoZQorX2JsYWNrLWJveCB0ZXN0aW5nIHByaW5jaXBsZV8sIG1vc3Qg
b2YgdGhlIHRpbWUgeW91IHNob3VsZCB0ZXN0IHlvdXIgY29kZQordGhyb3VnaCBpdHMgcHVibGlj
IGludGVyZmFjZXMuCisKK0lmIHlvdSBzdGlsbCBmaW5kIHlvdXJzZWxmIG5lZWRpbmcgdG8gdGVz
dCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBjb2RlLAorY29uc2lkZXIgaWYgdGhlcmUncyBhIGJl
dHRlciBkZXNpZ24gdGhhdCB3b3VsZG4ndCByZXF1aXJlIHlvdSB0byBkbyBzby4gSWYgeW91Cith
YnNvbHV0ZWx5IGhhdmUgdG8gdGVzdCBub24tcHVibGljIGludGVyZmFjZSBjb2RlIHRob3VnaCwg
eW91IGNhbi4gVGhlcmUgYXJlCit0d28gY2FzZXMgdG8gY29uc2lkZXI6CisKKyAgKiBTdGF0aWMg
ZnVuY3Rpb25zIChfbm90XyB0aGUgc2FtZSBhcyBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucyEpIG9y
IHVubmFtZWQgbmFtZXNwYWNlcywgYW5kCisgICogUHJpdmF0ZSBvciBwcm90ZWN0ZWQgY2xhc3Mg
bWVtYmVycworCisjIyBTdGF0aWMgRnVuY3Rpb25zICMjCisKK0JvdGggc3RhdGljIGZ1bmN0aW9u
cyBhbmQgZGVmaW5pdGlvbnMvZGVjbGFyYXRpb25zIGluIGFuIHVubmFtZWQgbmFtZXNwYWNlIGFy
ZQorb25seSB2aXNpYmxlIHdpdGhpbiB0aGUgc2FtZSB0cmFuc2xhdGlvbiB1bml0LiBUbyB0ZXN0
IHRoZW0sIHlvdSBjYW4gYCNpbmNsdWRlYAordGhlIGVudGlyZSBgLmNjYCBmaWxlIGJlaW5nIHRl
c3RlZCBpbiB5b3VyIGAqX3Rlc3QuY2NgIGZpbGUuIChgI2luY2x1ZGVgaW5nIGAuY2NgCitmaWxl
cyBpcyBub3QgYSBnb29kIHdheSB0byByZXVzZSBjb2RlIC0geW91IHNob3VsZCBub3QgZG8gdGhp
cyBpbiBwcm9kdWN0aW9uCitjb2RlISkKKworSG93ZXZlciwgYSBiZXR0ZXIgYXBwcm9hY2ggaXMg
dG8gbW92ZSB0aGUgcHJpdmF0ZSBjb2RlIGludG8gdGhlCitgZm9vOjppbnRlcm5hbGAgbmFtZXNw
YWNlLCB3aGVyZSBgZm9vYCBpcyB0aGUgbmFtZXNwYWNlIHlvdXIgcHJvamVjdCBub3JtYWxseQor
dXNlcywgYW5kIHB1dCB0aGUgcHJpdmF0ZSBkZWNsYXJhdGlvbnMgaW4gYSBgKi1pbnRlcm5hbC5o
YCBmaWxlLiBZb3VyCitwcm9kdWN0aW9uIGAuY2NgIGZpbGVzIGFuZCB5b3VyIHRlc3RzIGFyZSBh
bGxvd2VkIHRvIGluY2x1ZGUgdGhpcyBpbnRlcm5hbAoraGVhZGVyLCBidXQgeW91ciBjbGllbnRz
IGFyZSBub3QuIFRoaXMgd2F5LCB5b3UgY2FuIGZ1bGx5IHRlc3QgeW91ciBpbnRlcm5hbAoraW1w
bGVtZW50YXRpb24gd2l0aG91dCBsZWFraW5nIGl0IHRvIHlvdXIgY2xpZW50cy4KKworIyMgUHJp
dmF0ZSBDbGFzcyBNZW1iZXJzICMjCisKK1ByaXZhdGUgY2xhc3MgbWVtYmVycyBhcmUgb25seSBh
Y2Nlc3NpYmxlIGZyb20gd2l0aGluIHRoZSBjbGFzcyBvciBieSBmcmllbmRzLgorVG8gYWNjZXNz
IGEgY2xhc3MnIHByaXZhdGUgbWVtYmVycywgeW91IGNhbiBkZWNsYXJlIHlvdXIgdGVzdCBmaXh0
dXJlIGFzIGEKK2ZyaWVuZCB0byB0aGUgY2xhc3MgYW5kIGRlZmluZSBhY2Nlc3NvcnMgaW4geW91
ciBmaXh0dXJlLiBUZXN0cyB1c2luZyB0aGUKK2ZpeHR1cmUgY2FuIHRoZW4gYWNjZXNzIHRoZSBw
cml2YXRlIG1lbWJlcnMgb2YgeW91ciBwcm9kdWN0aW9uIGNsYXNzIHZpYSB0aGUKK2FjY2Vzc29y
cyBpbiB0aGUgZml4dHVyZS4gTm90ZSB0aGF0IGV2ZW4gdGhvdWdoIHlvdXIgZml4dHVyZSBpcyBh
IGZyaWVuZCB0bworeW91ciBwcm9kdWN0aW9uIGNsYXNzLCB5b3VyIHRlc3RzIGFyZSBub3QgYXV0
b21hdGljYWxseSBmcmllbmRzIHRvIGl0LCBhcyB0aGV5CithcmUgdGVjaG5pY2FsbHkgZGVmaW5l
ZCBpbiBzdWItY2xhc3NlcyBvZiB0aGUgZml4dHVyZS4KKworQW5vdGhlciB3YXkgdG8gdGVzdCBw
cml2YXRlIG1lbWJlcnMgaXMgdG8gcmVmYWN0b3IgdGhlbSBpbnRvIGFuIGltcGxlbWVudGF0aW9u
CitjbGFzcywgd2hpY2ggaXMgdGhlbiBkZWNsYXJlZCBpbiBhIGAqLWludGVybmFsLmhgIGZpbGUu
IFlvdXIgY2xpZW50cyBhcmVuJ3QKK2FsbG93ZWQgdG8gaW5jbHVkZSB0aGlzIGhlYWRlciBidXQg
eW91ciB0ZXN0cyBjYW4uIFN1Y2ggaXMgY2FsbGVkIHRoZSBQaW1wbAorKFByaXZhdGUgSW1wbGVt
ZW50YXRpb24pIGlkaW9tLgorCitPciwgeW91IGNhbiBkZWNsYXJlIGFuIGluZGl2aWR1YWwgdGVz
dCBhcyBhIGZyaWVuZCBvZiB5b3VyIGNsYXNzIGJ5IGFkZGluZyB0aGlzCitsaW5lIGluIHRoZSBj
bGFzcyBib2R5OgorCitgYGAKK0ZSSUVORF9URVNUKFRlc3RDYXNlTmFtZSwgVGVzdE5hbWUpOwor
YGBgCisKK0ZvciBleGFtcGxlLAorYGBgCisvLyBmb28uaAorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
X3Byb2QuaCIKKworLy8gRGVmaW5lcyBGUklFTkRfVEVTVC4KK2NsYXNzIEZvbyB7CisgIC4uLgor
IHByaXZhdGU6CisgIEZSSUVORF9URVNUKEZvb1Rlc3QsIEJhclJldHVybnNaZXJvT25OdWxsKTsK
KyAgaW50IEJhcih2b2lkKiB4KTsKK307CisKKy8vIGZvb190ZXN0LmNjCisuLi4KK1RFU1QoRm9v
VGVzdCwgQmFyUmV0dXJuc1plcm9Pbk51bGwpIHsKKyAgRm9vIGZvbzsKKyAgRVhQRUNUX0VRKDAs
IGZvby5CYXIoTlVMTCkpOworICAvLyBVc2VzIEZvbydzIHByaXZhdGUgbWVtYmVyIEJhcigpLgor
fQorYGBgCisKK1BheSBzcGVjaWFsIGF0dGVudGlvbiB3aGVuIHlvdXIgY2xhc3MgaXMgZGVmaW5l
ZCBpbiBhIG5hbWVzcGFjZSwgYXMgeW91IHNob3VsZAorZGVmaW5lIHlvdXIgdGVzdCBmaXh0dXJl
cyBhbmQgdGVzdHMgaW4gdGhlIHNhbWUgbmFtZXNwYWNlIGlmIHlvdSB3YW50IHRoZW0gdG8KK2Jl
IGZyaWVuZHMgb2YgeW91ciBjbGFzcy4gRm9yIGV4YW1wbGUsIGlmIHRoZSBjb2RlIHRvIGJlIHRl
c3RlZCBsb29rcyBsaWtlOgorCitgYGAKK25hbWVzcGFjZSBteV9uYW1lc3BhY2UgeworCitjbGFz
cyBGb28geworICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKKyAgRlJJRU5EX1RFU1QoRm9vVGVzdCwg
QmFyKTsKKyAgRlJJRU5EX1RFU1QoRm9vVGVzdCwgQmF6KTsKKyAgLi4uCisgIGRlZmluaXRpb24g
b2YgdGhlIGNsYXNzIEZvbworICAuLi4KK307CisKK30gIC8vIG5hbWVzcGFjZSBteV9uYW1lc3Bh
Y2UKK2BgYAorCitZb3VyIHRlc3QgY29kZSBzaG91bGQgYmUgc29tZXRoaW5nIGxpa2U6CisKK2Bg
YAorbmFtZXNwYWNlIG15X25hbWVzcGFjZSB7CitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVz
dGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAuLi4KK307CisKK1RFU1RfRihGb29UZXN0LCBC
YXIpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBCYXopIHsgLi4uIH0KKworfSAgLy8gbmFtZXNw
YWNlIG15X25hbWVzcGFjZQorYGBgCisKKyMgQ2F0Y2hpbmcgRmFpbHVyZXMgIworCitJZiB5b3Ug
YXJlIGJ1aWxkaW5nIGEgdGVzdGluZyB1dGlsaXR5IG9uIHRvcCBvZiBHb29nbGUgVGVzdCwgeW91
J2xsCit3YW50IHRvIHRlc3QgeW91ciB1dGlsaXR5LiAgV2hhdCBmcmFtZXdvcmsgd291bGQgeW91
IHVzZSB0byB0ZXN0IGl0PworR29vZ2xlIFRlc3QsIG9mIGNvdXJzZS4KKworVGhlIGNoYWxsZW5n
ZSBpcyB0byB2ZXJpZnkgdGhhdCB5b3VyIHRlc3RpbmcgdXRpbGl0eSByZXBvcnRzIGZhaWx1cmVz
Citjb3JyZWN0bHkuICBJbiBmcmFtZXdvcmtzIHRoYXQgcmVwb3J0IGEgZmFpbHVyZSBieSB0aHJv
d2luZyBhbgorZXhjZXB0aW9uLCB5b3UgY291bGQgY2F0Y2ggdGhlIGV4Y2VwdGlvbiBhbmQgYXNz
ZXJ0IG9uIGl0LiAgQnV0IEdvb2dsZQorVGVzdCBkb2Vzbid0IHVzZSBleGNlcHRpb25zLCBzbyBo
b3cgZG8gd2UgdGVzdCB0aGF0IGEgcGllY2Ugb2YgY29kZQorZ2VuZXJhdGVzIGFuIGV4cGVjdGVk
IGZhaWx1cmU/CisKK2AiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiYCBjb250YWlucyBzb21lIGNvbnN0cnVj
dHMgdG8gZG8gdGhpcy4gIEFmdGVyCitgI2luY2x1ZGVgaW5nIHRoaXMgaGVhZGVyLCB5b3UgY2Fu
IHVzZQorCit8IGBFWFBFQ1RfRkFUQUxfRkFJTFVSRShgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2Ap
O2AgfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LXwKKwordG8gYXNzZXJ0IHRoYXQgX3N0YXRlbWVudF8gZ2VuZXJhdGVzIGEgZmF0YWwgKGUuZy4g
YEFTU0VSVF8qYCkgZmFpbHVyZQord2hvc2UgbWVzc2FnZSBjb250YWlucyB0aGUgZ2l2ZW4gX3N1
YnN0cmluZ18sIG9yIHVzZQorCit8IGBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShgX3N0YXRlbWVu
dCwgc3Vic3RyaW5nX2ApO2AgfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLXwKKworaWYgeW91IGFyZSBleHBlY3RpbmcgYSBub24tZmF0YWwg
KGUuZy4gYEVYUEVDVF8qYCkgZmFpbHVyZS4KKworRm9yIHRlY2huaWNhbCByZWFzb25zLCB0aGVy
ZSBhcmUgc29tZSBjYXZlYXRzOgorCisgIDEuIFlvdSBjYW5ub3Qgc3RyZWFtIGEgZmFpbHVyZSBt
ZXNzYWdlIHRvIGVpdGhlciBtYWNyby4KKyAgMS4gX3N0YXRlbWVudF8gaW4gYEVYUEVDVF9GQVRB
TF9GQUlMVVJFKClgIGNhbm5vdCByZWZlcmVuY2UgbG9jYWwgbm9uLXN0YXRpYyB2YXJpYWJsZXMg
b3Igbm9uLXN0YXRpYyBtZW1iZXJzIG9mIGB0aGlzYCBvYmplY3QuCisgIDEuIF9zdGF0ZW1lbnRf
IGluIGBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpYCBjYW5ub3QgcmV0dXJuIGEgdmFsdWUuCisKK19O
b3RlOl8gR29vZ2xlIFRlc3QgaXMgZGVzaWduZWQgd2l0aCB0aHJlYWRzIGluIG1pbmQuICBPbmNl
IHRoZQorc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYCJndGVzdC9pbnRlcm5hbC9ndGVz
dC1wb3J0LmgiYCBoYXZlCitiZWVuIGltcGxlbWVudGVkLCBHb29nbGUgVGVzdCB3aWxsIGJlY29t
ZSB0aHJlYWQtc2FmZSwgbWVhbmluZyB0aGF0Cit5b3UgY2FuIHRoZW4gdXNlIGFzc2VydGlvbnMg
aW4gbXVsdGlwbGUgdGhyZWFkcyBjb25jdXJyZW50bHkuICBCZWZvcmUKKwordGhhdCwgaG93ZXZl
ciwgR29vZ2xlIFRlc3Qgb25seSBzdXBwb3J0cyBzaW5nbGUtdGhyZWFkZWQgdXNhZ2UuICBPbmNl
Cit0aHJlYWQtc2FmZSwgYEVYUEVDVF9GQVRBTF9GQUlMVVJFKClgIGFuZCBgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoKWAKK3dpbGwgY2FwdHVyZSBmYWlsdXJlcyBpbiB0aGUgY3VycmVudCB0aHJl
YWQgb25seS4gSWYgX3N0YXRlbWVudF8KK2NyZWF0ZXMgbmV3IHRocmVhZHMsIGZhaWx1cmVzIGlu
IHRoZXNlIHRocmVhZHMgd2lsbCBiZSBpZ25vcmVkLiAgSWYKK3lvdSB3YW50IHRvIGNhcHR1cmUg
ZmFpbHVyZXMgZnJvbSBhbGwgdGhyZWFkcyBpbnN0ZWFkLCB5b3Ugc2hvdWxkIHVzZQordGhlIGZv
bGxvd2luZyBtYWNyb3M6CisKK3wgYEVYUEVDVF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURT
KGBfc3RhdGVtZW50LCBzdWJzdHJpbmdfYCk7YCB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoYF9zdGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtg
IHwKKworIyBHZXR0aW5nIHRoZSBDdXJyZW50IFRlc3QncyBOYW1lICMKKworU29tZXRpbWVzIGEg
ZnVuY3Rpb24gbWF5IG5lZWQgdG8ga25vdyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IHJ1bm5p
bmcgdGVzdC4KK0ZvciBleGFtcGxlLCB5b3UgbWF5IGJlIHVzaW5nIHRoZSBgU2V0VXAoKWAgbWV0
aG9kIG9mIHlvdXIgdGVzdCBmaXh0dXJlIHRvIHNldAordGhlIGdvbGRlbiBmaWxlIG5hbWUgYmFz
ZWQgb24gd2hpY2ggdGVzdCBpcyBydW5uaW5nLiBUaGUgYDo6dGVzdGluZzo6VGVzdEluZm9gCitj
bGFzcyBoYXMgdGhpcyBpbmZvcm1hdGlvbjoKKworYGBgCituYW1lc3BhY2UgdGVzdGluZyB7CisK
K2NsYXNzIFRlc3RJbmZvIHsKKyBwdWJsaWM6CisgIC8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBu
YW1lIGFuZCB0aGUgdGVzdCBuYW1lLCByZXNwZWN0aXZlbHkuCisgIC8vCisgIC8vIERvIE5PVCBk
ZWxldGUgb3IgZnJlZSB0aGUgcmV0dXJuIHZhbHVlIC0gaXQncyBtYW5hZ2VkIGJ5IHRoZQorICAv
LyBUZXN0SW5mbyBjbGFzcy4KKyAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUoKSBjb25zdDsK
KyAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0OworfTsKKworfSAgLy8gbmFtZXNwYWNlIHRlc3Rp
bmcKK2BgYAorCisKKz4gVG8gb2J0YWluIGEgYFRlc3RJbmZvYCBvYmplY3QgZm9yIHRoZSBjdXJy
ZW50bHkgcnVubmluZyB0ZXN0LCBjYWxsCitgY3VycmVudF90ZXN0X2luZm8oKWAgb24gdGhlIGBV
bml0VGVzdGAgc2luZ2xldG9uIG9iamVjdDoKKworYGBgCisvLyBHZXRzIGluZm9ybWF0aW9uIGFi
b3V0IHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LgorLy8gRG8gTk9UIGRlbGV0ZSB0aGUgcmV0
dXJuZWQgb2JqZWN0IC0gaXQncyBtYW5hZ2VkIGJ5IHRoZSBVbml0VGVzdCBjbGFzcy4KK2NvbnN0
IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgIDo6dGVzdGluZzo6VW5p
dFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CitwcmludGYoIldlIGFy
ZSBpbiB0ZXN0ICVzIG9mIHRlc3QgY2FzZSAlcy5cbiIsCisgICAgICAgdGVzdF9pbmZvLT5uYW1l
KCksIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7CitgYGAKKworYGN1cnJlbnRfdGVzdF9p
bmZvKClgIHJldHVybnMgYSBudWxsIHBvaW50ZXIgaWYgbm8gdGVzdCBpcyBydW5uaW5nLiBJbgor
cGFydGljdWxhciwgeW91IGNhbm5vdCBmaW5kIHRoZSB0ZXN0IGNhc2UgbmFtZSBpbiBgVGVzdENh
c2VTZXRVcCgpYCwKK2BUZXN0Q2FzZVRlYXJEb3duKClgICh3aGVyZSB5b3Uga25vdyB0aGUgdGVz
dCBjYXNlIG5hbWUgaW1wbGljaXRseSksIG9yCitmdW5jdGlvbnMgY2FsbGVkIGZyb20gdGhlbS4K
KworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMgRXh0ZW5kaW5nIEdv
b2dsZSBUZXN0IGJ5IEhhbmRsaW5nIFRlc3QgRXZlbnRzICMKKworR29vZ2xlIFRlc3QgcHJvdmlk
ZXMgYW4gPGI+ZXZlbnQgbGlzdGVuZXIgQVBJPC9iPiB0byBsZXQgeW91IHJlY2VpdmUKK25vdGlm
aWNhdGlvbnMgYWJvdXQgdGhlIHByb2dyZXNzIG9mIGEgdGVzdCBwcm9ncmFtIGFuZCB0ZXN0Citm
YWlsdXJlcy4gVGhlIGV2ZW50cyB5b3UgY2FuIGxpc3RlbiB0byBpbmNsdWRlIHRoZSBzdGFydCBh
bmQgZW5kIG9mCit0aGUgdGVzdCBwcm9ncmFtLCBhIHRlc3QgY2FzZSwgb3IgYSB0ZXN0IG1ldGhv
ZCwgYW1vbmcgb3RoZXJzLiBZb3UgbWF5Cit1c2UgdGhpcyBBUEkgdG8gYXVnbWVudCBvciByZXBs
YWNlIHRoZSBzdGFuZGFyZCBjb25zb2xlIG91dHB1dCwKK3JlcGxhY2UgdGhlIFhNTCBvdXRwdXQs
IG9yIHByb3ZpZGUgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBmb3JtIG9mCitvdXRwdXQsIHN1Y2gg
YXMgYSBHVUkgb3IgYSBkYXRhYmFzZS4gWW91IGNhbiBhbHNvIHVzZSB0ZXN0IGV2ZW50cyBhcwor
Y2hlY2twb2ludHMgdG8gaW1wbGVtZW50IGEgcmVzb3VyY2UgbGVhayBjaGVja2VyLCBmb3IgZXhh
bXBsZS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHYxLjQu
MC4KKworIyMgRGVmaW5pbmcgRXZlbnQgTGlzdGVuZXJzICMjCisKK1RvIGRlZmluZSBhIGV2ZW50
IGxpc3RlbmVyLCB5b3Ugc3ViY2xhc3MgZWl0aGVyCitbdGVzdGluZzo6VGVzdEV2ZW50TGlzdGVu
ZXJdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMODU1KQorb3IgW3Rlc3Rpbmc6OkVtcHR5VGVz
dEV2ZW50TGlzdGVuZXJdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMOTA1KS4KK1RoZSBmb3Jt
ZXIgaXMgYW4gKGFic3RyYWN0KSBpbnRlcmZhY2UsIHdoZXJlIDxpPmVhY2ggcHVyZSB2aXJ0dWFs
IG1ldGhvZDxicj4KK2NhbiBiZSBvdmVycmlkZGVuIHRvIGhhbmRsZSBhIHRlc3QgZXZlbnQ8L2k+
IChGb3IgZXhhbXBsZSwgd2hlbiBhIHRlc3QKK3N0YXJ0cywgdGhlIGBPblRlc3RTdGFydCgpYCBt
ZXRob2Qgd2lsbCBiZSBjYWxsZWQuKS4gVGhlIGxhdHRlciBwcm92aWRlcworYW4gZW1wdHkgaW1w
bGVtZW50YXRpb24gb2YgYWxsIG1ldGhvZHMgaW4gdGhlIGludGVyZmFjZSwgc3VjaCB0aGF0IGEK
K3N1YmNsYXNzIG9ubHkgbmVlZHMgdG8gb3ZlcnJpZGUgdGhlIG1ldGhvZHMgaXQgY2FyZXMgYWJv
dXQuCisKK1doZW4gYW4gZXZlbnQgaXMgZmlyZWQsIGl0cyBjb250ZXh0IGlzIHBhc3NlZCB0byB0
aGUgaGFuZGxlciBmdW5jdGlvbgorYXMgYW4gYXJndW1lbnQuIFRoZSBmb2xsb3dpbmcgYXJndW1l
bnQgdHlwZXMgYXJlIHVzZWQ6CisgICogW1VuaXRUZXN0XSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0
LmgjTDEwMDcpIHJlZmxlY3RzIHRoZSBzdGF0ZSBvZiB0aGUgZW50aXJlIHRlc3QgcHJvZ3JhbSwK
KyAgKiBbVGVzdENhc2VdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMNjg5KSBoYXMgaW5mb3Jt
YXRpb24gYWJvdXQgYSB0ZXN0IGNhc2UsIHdoaWNoIGNhbiBjb250YWluIG9uZSBvciBtb3JlIHRl
c3RzLAorICAqIFtUZXN0SW5mb10oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w1OTkpIGNvbnRh
aW5zIHRoZSBzdGF0ZSBvZiBhIHRlc3QsIGFuZAorICAqIFtUZXN0UGFydFJlc3VsdF0oLi4vaW5j
bHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBhcnQuaCNMNDIpIHJlcHJlc2VudHMgdGhlIHJlc3VsdCBv
ZiBhIHRlc3QgYXNzZXJ0aW9uLgorCitBbiBldmVudCBoYW5kbGVyIGZ1bmN0aW9uIGNhbiBleGFt
aW5lIHRoZSBhcmd1bWVudCBpdCByZWNlaXZlcyB0byBmaW5kCitvdXQgaW50ZXJlc3RpbmcgaW5m
b3JtYXRpb24gYWJvdXQgdGhlIGV2ZW50IGFuZCB0aGUgdGVzdCBwcm9ncmFtJ3MKK3N0YXRlLiAg
SGVyZSdzIGFuIGV4YW1wbGU6CisKK2BgYAorICBjbGFzcyBNaW5pbWFsaXN0UHJpbnRlciA6IHB1
YmxpYyA6OnRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgeworICAgIC8vIENhbGxlZCBi
ZWZvcmUgYSB0ZXN0IHN0YXJ0cy4KKyAgICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3Qg
Ojp0ZXN0aW5nOjpUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CisgICAgICBwcmludGYoIioqKiBUZXN0
ICVzLiVzIHN0YXJ0aW5nLlxuIiwKKyAgICAgICAgICAgICB0ZXN0X2luZm8udGVzdF9jYXNlX25h
bWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7CisgICAgfQorCisgICAgLy8gQ2FsbGVkIGFmdGVyIGEg
ZmFpbGVkIGFzc2VydGlvbiBvciBhIFNVQ0NFRUQoKSBpbnZvY2F0aW9uLgorICAgIHZpcnR1YWwg
dm9pZCBPblRlc3RQYXJ0UmVzdWx0KAorICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJ0
UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7CisgICAgICBwcmludGYoIiVzIGluICVzOiVkXG4l
c1xuIiwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LmZhaWxlZCgpID8gIioqKiBGYWls
dXJlIiA6ICJTdWNjZXNzIiwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LmZpbGVfbmFt
ZSgpLAorICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQubGluZV9udW1iZXIoKSwKKyAgICAg
ICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LnN1bW1hcnkoKSk7CisgICAgfQorCisgICAgLy8gQ2Fs
bGVkIGFmdGVyIGEgdGVzdCBlbmRzLgorICAgIHZpcnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3Qg
Ojp0ZXN0aW5nOjpUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CisgICAgICBwcmludGYoIioqKiBUZXN0
ICVzLiVzIGVuZGluZy5cbiIsCisgICAgICAgICAgICAgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1l
KCksIHRlc3RfaW5mby5uYW1lKCkpOworICAgIH0KKyAgfTsKK2BgYAorCisjIyBVc2luZyBFdmVu
dCBMaXN0ZW5lcnMgIyMKKworVG8gdXNlIHRoZSBldmVudCBsaXN0ZW5lciB5b3UgaGF2ZSBkZWZp
bmVkLCBhZGQgYW4gaW5zdGFuY2Ugb2YgaXQgdG8KK3RoZSBHb29nbGUgVGVzdCBldmVudCBsaXN0
ZW5lciBsaXN0IChyZXByZXNlbnRlZCBieSBjbGFzcworW1Rlc3RFdmVudExpc3RlbmVyc10oLi4v
aW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w5MjkpCistIG5vdGUgdGhlICJzIiBhdCB0aGUgZW5kIG9m
IHRoZSBuYW1lKSBpbiB5b3VyCitgbWFpbigpYCBmdW5jdGlvbiwgYmVmb3JlIGNhbGxpbmcgYFJV
Tl9BTExfVEVTVFMoKWA6CitgYGAKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewor
ICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgLy8gR2V0cyBob2xk
IG9mIHRoZSBldmVudCBsaXN0ZW5lciBsaXN0LgorICA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3Rl
bmVycyYgbGlzdGVuZXJzID0KKyAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPmxpc3RlbmVycygpOworICAvLyBBZGRzIGEgbGlzdGVuZXIgdG8gdGhlIGVuZC4gIEdvb2ds
ZSBUZXN0IHRha2VzIHRoZSBvd25lcnNoaXAuCisgIGxpc3RlbmVycy5BcHBlbmQobmV3IE1pbmlt
YWxpc3RQcmludGVyKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAorCitUaGVy
ZSdzIG9ubHkgb25lIHByb2JsZW06IHRoZSBkZWZhdWx0IHRlc3QgcmVzdWx0IHByaW50ZXIgaXMg
c3RpbGwgaW4KK2VmZmVjdCwgc28gaXRzIG91dHB1dCB3aWxsIG1pbmdsZSB3aXRoIHRoZSBvdXRw
dXQgZnJvbSB5b3VyIG1pbmltYWxpc3QKK3ByaW50ZXIuIFRvIHN1cHByZXNzIHRoZSBkZWZhdWx0
IHByaW50ZXIsIGp1c3QgcmVsZWFzZSBpdCBmcm9tIHRoZQorZXZlbnQgbGlzdGVuZXIgbGlzdCBh
bmQgZGVsZXRlIGl0LiBZb3UgY2FuIGRvIHNvIGJ5IGFkZGluZyBvbmUgbGluZToKK2BgYAorICAu
Li4KKyAgZGVsZXRlIGxpc3RlbmVycy5SZWxlYXNlKGxpc3RlbmVycy5kZWZhdWx0X3Jlc3VsdF9w
cmludGVyKCkpOworICBsaXN0ZW5lcnMuQXBwZW5kKG5ldyBNaW5pbWFsaXN0UHJpbnRlcik7Cisg
IHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CitgYGAKKworTm93LCBzaXQgYmFjayBhbmQgZW5qb3kg
YSBjb21wbGV0ZWx5IGRpZmZlcmVudCBvdXRwdXQgZnJvbSB5b3VyCit0ZXN0cy4gRm9yIG1vcmUg
ZGV0YWlscywgeW91IGNhbiByZWFkIHRoaXMKK1tzYW1wbGVdKC4uL3NhbXBsZXMvc2FtcGxlOV91
bml0dGVzdC5jYykuCisKK1lvdSBtYXkgYXBwZW5kIG1vcmUgdGhhbiBvbmUgbGlzdGVuZXIgdG8g
dGhlIGxpc3QuIFdoZW4gYW4gYE9uKlN0YXJ0KClgCitvciBgT25UZXN0UGFydFJlc3VsdCgpYCBl
dmVudCBpcyBmaXJlZCwgdGhlIGxpc3RlbmVycyB3aWxsIHJlY2VpdmUgaXQgaW4KK3RoZSBvcmRl
ciB0aGV5IGFwcGVhciBpbiB0aGUgbGlzdCAoc2luY2UgbmV3IGxpc3RlbmVycyBhcmUgYWRkZWQg
dG8KK3RoZSBlbmQgb2YgdGhlIGxpc3QsIHRoZSBkZWZhdWx0IHRleHQgcHJpbnRlciBhbmQgdGhl
IGRlZmF1bHQgWE1MCitnZW5lcmF0b3Igd2lsbCByZWNlaXZlIHRoZSBldmVudCBmaXJzdCkuIEFu
IGBPbipFbmQoKWAgZXZlbnQgd2lsbCBiZQorcmVjZWl2ZWQgYnkgdGhlIGxpc3RlbmVycyBpbiB0
aGUgX3JldmVyc2VfIG9yZGVyLiBUaGlzIGFsbG93cyBvdXRwdXQgYnkKK2xpc3RlbmVycyBhZGRl
ZCBsYXRlciB0byBiZSBmcmFtZWQgYnkgb3V0cHV0IGZyb20gbGlzdGVuZXJzIGFkZGVkCitlYXJs
aWVyLgorCisjIyBHZW5lcmF0aW5nIEZhaWx1cmVzIGluIExpc3RlbmVycyAjIworCitZb3UgbWF5
IHVzZSBmYWlsdXJlLXJhaXNpbmcgbWFjcm9zIChgRVhQRUNUXyooKWAsIGBBU1NFUlRfKigpYCwK
K2BGQUlMKClgLCBldGMpIHdoZW4gcHJvY2Vzc2luZyBhbiBldmVudC4gVGhlcmUgYXJlIHNvbWUg
cmVzdHJpY3Rpb25zOgorCisgIDEuIFlvdSBjYW5ub3QgZ2VuZXJhdGUgYW55IGZhaWx1cmUgaW4g
YE9uVGVzdFBhcnRSZXN1bHQoKWAgKG90aGVyd2lzZSBpdCB3aWxsIGNhdXNlIGBPblRlc3RQYXJ0
UmVzdWx0KClgIHRvIGJlIGNhbGxlZCByZWN1cnNpdmVseSkuCisgIDEuIEEgbGlzdGVuZXIgdGhh
dCBoYW5kbGVzIGBPblRlc3RQYXJ0UmVzdWx0KClgIGlzIG5vdCBhbGxvd2VkIHRvIGdlbmVyYXRl
IGFueSBmYWlsdXJlLgorCitXaGVuIHlvdSBhZGQgbGlzdGVuZXJzIHRvIHRoZSBsaXN0ZW5lciBs
aXN0LCB5b3Ugc2hvdWxkIHB1dCBsaXN0ZW5lcnMKK3RoYXQgaGFuZGxlIGBPblRlc3RQYXJ0UmVz
dWx0KClgIF9iZWZvcmVfIGxpc3RlbmVycyB0aGF0IGNhbiBnZW5lcmF0ZQorZmFpbHVyZXMuIFRo
aXMgZW5zdXJlcyB0aGF0IGZhaWx1cmVzIGdlbmVyYXRlZCBieSB0aGUgbGF0dGVyIGFyZQorYXR0
cmlidXRlZCB0byB0aGUgcmlnaHQgdGVzdCBieSB0aGUgZm9ybWVyLgorCitXZSBoYXZlIGEgc2Ft
cGxlIG9mIGZhaWx1cmUtcmFpc2luZyBsaXN0ZW5lcgorW2hlcmVdKC4uL3NhbXBsZXMvc2FtcGxl
MTBfdW5pdHRlc3QuY2MpLgorCisjIFJ1bm5pbmcgVGVzdCBQcm9ncmFtczogQWR2YW5jZWQgT3B0
aW9ucyAjCisKK0dvb2dsZSBUZXN0IHRlc3QgcHJvZ3JhbXMgYXJlIG9yZGluYXJ5IGV4ZWN1dGFi
bGVzLiBPbmNlIGJ1aWx0LCB5b3UgY2FuIHJ1bgordGhlbSBkaXJlY3RseSBhbmQgYWZmZWN0IHRo
ZWlyIGJlaGF2aW9yIHZpYSB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcworYW5k
L29yIGNvbW1hbmQgbGluZSBmbGFncy4gRm9yIHRoZSBmbGFncyB0byB3b3JrLCB5b3VyIHByb2dy
YW1zIG11c3QgY2FsbAorYDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKWAgYmVmb3JlIGNhbGxp
bmcgYFJVTl9BTExfVEVTVFMoKWAuCisKK1RvIHNlZSBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGZsYWdz
IGFuZCB0aGVpciB1c2FnZSwgcGxlYXNlIHJ1biB5b3VyIHRlc3QKK3Byb2dyYW0gd2l0aCB0aGUg
YC0taGVscGAgZmxhZy4gIFlvdSBjYW4gYWxzbyB1c2UgYC1oYCwgYC0/YCwgb3IgYC8/YAorZm9y
IHNob3J0LiAgVGhpcyBmZWF0dXJlIGlzIGFkZGVkIGluIHZlcnNpb24gMS4zLjAuCisKK0lmIGFu
IG9wdGlvbiBpcyBzcGVjaWZpZWQgYm90aCBieSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbmQg
YnkgYQorZmxhZywgdGhlIGxhdHRlciB0YWtlcyBwcmVjZWRlbmNlLiAgTW9zdCBvZiB0aGUgb3B0
aW9ucyBjYW4gYWxzbyBiZQorc2V0L3JlYWQgaW4gY29kZTogdG8gYWNjZXNzIHRoZSB2YWx1ZSBv
ZiBjb21tYW5kIGxpbmUgZmxhZworYC0tZ3Rlc3RfZm9vYCwgd3JpdGUgYDo6dGVzdGluZzo6R1RF
U1RfRkxBRyhmb28pYC4gIEEgY29tbW9uIHBhdHRlcm4gaXMKK3RvIHNldCB0aGUgdmFsdWUgb2Yg
YSBmbGFnIGJlZm9yZSBjYWxsaW5nIGA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClgCit0byBj
aGFuZ2UgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGZsYWc6CitgYGAKK2ludCBtYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikgeworICAvLyBEaXNhYmxlcyBlbGFwc2VkIHRpbWUgYnkgZGVmYXVs
dC4KKyAgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHByaW50X3RpbWUpID0gZmFsc2U7CisKKyAgLy8g
VGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gb3ZlcnJpZGUgdGhlIGZsYWcgb24gdGhlIGNvbW1hbmQg
bGluZS4KKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgcmV0
dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAorCisjIyBTZWxlY3RpbmcgVGVzdHMgIyMKKwor
VGhpcyBzZWN0aW9uIHNob3dzIHZhcmlvdXMgb3B0aW9ucyBmb3IgY2hvb3Npbmcgd2hpY2ggdGVz
dHMgdG8gcnVuLgorCisjIyMgTGlzdGluZyBUZXN0IE5hbWVzICMjIworCitTb21ldGltZXMgaXQg
aXMgbmVjZXNzYXJ5IHRvIGxpc3QgdGhlIGF2YWlsYWJsZSB0ZXN0cyBpbiBhIHByb2dyYW0gYmVm
b3JlCitydW5uaW5nIHRoZW0gc28gdGhhdCBhIGZpbHRlciBtYXkgYmUgYXBwbGllZCBpZiBuZWVk
ZWQuIEluY2x1ZGluZyB0aGUgZmxhZworYC0tZ3Rlc3RfbGlzdF90ZXN0c2Agb3ZlcnJpZGVzIGFs
bCBvdGhlciBmbGFncyBhbmQgbGlzdHMgdGVzdHMgaW4gdGhlIGZvbGxvd2luZworZm9ybWF0Ogor
YGBgCitUZXN0Q2FzZTEuCisgIFRlc3ROYW1lMQorICBUZXN0TmFtZTIKK1Rlc3RDYXNlMi4KKyAg
VGVzdE5hbWUKK2BgYAorCitOb25lIG9mIHRoZSB0ZXN0cyBsaXN0ZWQgYXJlIGFjdHVhbGx5IHJ1
biBpZiB0aGUgZmxhZyBpcyBwcm92aWRlZC4gVGhlcmUgaXMgbm8KK2NvcnJlc3BvbmRpbmcgZW52
aXJvbm1lbnQgdmFyaWFibGUgZm9yIHRoaXMgZmxhZy4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4
LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBSdW5uaW5nIGEgU3Vic2V0IG9mIHRoZSBUZXN0cyAjIyMK
KworQnkgZGVmYXVsdCwgYSBHb29nbGUgVGVzdCBwcm9ncmFtIHJ1bnMgYWxsIHRlc3RzIHRoZSB1
c2VyIGhhcyBkZWZpbmVkLgorU29tZXRpbWVzLCB5b3Ugd2FudCB0byBydW4gb25seSBhIHN1YnNl
dCBvZiB0aGUgdGVzdHMgKGUuZy4gZm9yIGRlYnVnZ2luZyBvcgorcXVpY2tseSB2ZXJpZnlpbmcg
YSBjaGFuZ2UpLiBJZiB5b3Ugc2V0IHRoZSBgR1RFU1RfRklMVEVSYCBlbnZpcm9ubWVudCB2YXJp
YWJsZQorb3IgdGhlIGAtLWd0ZXN0X2ZpbHRlcmAgZmxhZyB0byBhIGZpbHRlciBzdHJpbmcsIEdv
b2dsZSBUZXN0IHdpbGwgb25seSBydW4gdGhlCit0ZXN0cyB3aG9zZSBmdWxsIG5hbWVzIChpbiB0
aGUgZm9ybSBvZiBgVGVzdENhc2VOYW1lLlRlc3ROYW1lYCkgbWF0Y2ggdGhlCitmaWx0ZXIuCisK
K1RoZSBmb3JtYXQgb2YgYSBmaWx0ZXIgaXMgYSAnYDpgJy1zZXBhcmF0ZWQgbGlzdCBvZiB3aWxk
Y2FyZCBwYXR0ZXJucyAoY2FsbGVkCit0aGUgcG9zaXRpdmUgcGF0dGVybnMpIG9wdGlvbmFsbHkg
Zm9sbG93ZWQgYnkgYSAnYC1gJyBhbmQgYW5vdGhlcgorJ2A6YCctc2VwYXJhdGVkIHBhdHRlcm4g
bGlzdCAoY2FsbGVkIHRoZSBuZWdhdGl2ZSBwYXR0ZXJucykuIEEgdGVzdCBtYXRjaGVzIHRoZQor
ZmlsdGVyIGlmIGFuZCBvbmx5IGlmIGl0IG1hdGNoZXMgYW55IG9mIHRoZSBwb3NpdGl2ZSBwYXR0
ZXJucyBidXQgZG9lcyBub3QKK21hdGNoIGFueSBvZiB0aGUgbmVnYXRpdmUgcGF0dGVybnMuCisK
K0EgcGF0dGVybiBtYXkgY29udGFpbiBgJyonYCAobWF0Y2hlcyBhbnkgc3RyaW5nKSBvciBgJz8n
YCAobWF0Y2hlcyBhbnkgc2luZ2xlCitjaGFyYWN0ZXIpLiBGb3IgY29udmVuaWVuY2UsIHRoZSBm
aWx0ZXIgYCcqLU5lZ2F0aXZlUGF0dGVybnMnYCBjYW4gYmUgYWxzbword3JpdHRlbiBhcyBgJy1O
ZWdhdGl2ZVBhdHRlcm5zJ2AuCisKK0ZvciBleGFtcGxlOgorCisgICogYC4vZm9vX3Rlc3RgIEhh
cyBubyBmbGFnLCBhbmQgdGh1cyBydW5zIGFsbCBpdHMgdGVzdHMuCisgICogYC4vZm9vX3Rlc3Qg
LS1ndGVzdF9maWx0ZXI9KmAgQWxzbyBydW5zIGV2ZXJ5dGhpbmcsIGR1ZSB0byB0aGUgc2luZ2xl
IG1hdGNoLWV2ZXJ5dGhpbmcgYCpgIHZhbHVlLgorICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmls
dGVyPUZvb1Rlc3QuKmAgUnVucyBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBgRm9vVGVzdGAuCisg
ICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Kk51bGwqOipDb25zdHJ1Y3RvcipgIFJ1bnMg
YW55IHRlc3Qgd2hvc2UgZnVsbCBuYW1lIGNvbnRhaW5zIGVpdGhlciBgIk51bGwiYCBvciBgIkNv
bnN0cnVjdG9yImAuCisgICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9LSpEZWF0aFRlc3Qu
KmAgUnVucyBhbGwgbm9uLWRlYXRoIHRlc3RzLgorICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmls
dGVyPUZvb1Rlc3QuKi1Gb29UZXN0LkJhcmAgUnVucyBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBg
Rm9vVGVzdGAgZXhjZXB0IGBGb29UZXN0LkJhcmAuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwg
V2luZG93cywgTWFjLgorCisjIyMgVGVtcG9yYXJpbHkgRGlzYWJsaW5nIFRlc3RzICMjIworCitJ
ZiB5b3UgaGF2ZSBhIGJyb2tlbiB0ZXN0IHRoYXQgeW91IGNhbm5vdCBmaXggcmlnaHQgYXdheSwg
eW91IGNhbiBhZGQgdGhlCitgRElTQUJMRURfYCBwcmVmaXggdG8gaXRzIG5hbWUuIFRoaXMgd2ls
bCBleGNsdWRlIGl0IGZyb20gZXhlY3V0aW9uLiBUaGlzIGlzCitiZXR0ZXIgdGhhbiBjb21tZW50
aW5nIG91dCB0aGUgY29kZSBvciB1c2luZyBgI2lmIDBgLCBhcyBkaXNhYmxlZCB0ZXN0cyBhcmUK
K3N0aWxsIGNvbXBpbGVkIChhbmQgdGh1cyB3b24ndCByb3QpLgorCitJZiB5b3UgbmVlZCB0byBk
aXNhYmxlIGFsbCB0ZXN0cyBpbiBhIHRlc3QgY2FzZSwgeW91IGNhbiBlaXRoZXIgYWRkIGBESVNB
QkxFRF9gCit0byB0aGUgZnJvbnQgb2YgdGhlIG5hbWUgb2YgZWFjaCB0ZXN0LCBvciBhbHRlcm5h
dGl2ZWx5IGFkZCBpdCB0byB0aGUgZnJvbnQgb2YKK3RoZSB0ZXN0IGNhc2UgbmFtZS4KKworRm9y
IGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVzdHMgd29uJ3QgYmUgcnVuIGJ5IEdvb2dsZSBUZXN0
LCBldmVuIHRob3VnaCB0aGV5Cit3aWxsIHN0aWxsIGJlIGNvbXBpbGVkOgorCitgYGAKKy8vIFRl
c3RzIHRoYXQgRm9vIGRvZXMgQWJjLgorVEVTVChGb29UZXN0LCBESVNBQkxFRF9Eb2VzQWJjKSB7
IC4uLiB9CisKK2NsYXNzIERJU0FCTEVEX0JhclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHsgLi4uIH07CisKKy8vIFRlc3RzIHRoYXQgQmFyIGRvZXMgWHl6LgorVEVTVF9GKERJU0FCTEVE
X0JhclRlc3QsIERvZXNYeXopIHsgLi4uIH0KK2BgYAorCitfTm90ZTpfIFRoaXMgZmVhdHVyZSBz
aG91bGQgb25seSBiZSB1c2VkIGZvciB0ZW1wb3JhcnkgcGFpbi1yZWxpZWYuIFlvdSBzdGlsbAor
aGF2ZSB0byBmaXggdGhlIGRpc2FibGVkIHRlc3RzIGF0IGEgbGF0ZXIgZGF0ZS4gQXMgYSByZW1p
bmRlciwgR29vZ2xlIFRlc3Qgd2lsbAorcHJpbnQgYSBiYW5uZXIgd2FybmluZyB5b3UgaWYgYSB0
ZXN0IHByb2dyYW0gY29udGFpbnMgYW55IGRpc2FibGVkIHRlc3RzLgorCitfVGlwOl8gWW91IGNh
biBlYXNpbHkgY291bnQgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB5b3UgaGF2ZQordXNp
bmcgYGdyZXBgLiBUaGlzIG51bWJlciBjYW4gYmUgdXNlZCBhcyBhIG1ldHJpYyBmb3IgaW1wcm92
aW5nIHlvdXIKK3Rlc3QgcXVhbGl0eS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dz
LCBNYWMuCisKKyMjIyBUZW1wb3JhcmlseSBFbmFibGluZyBEaXNhYmxlZCBUZXN0cyAjIyMKKwor
VG8gaW5jbHVkZSBbZGlzYWJsZWQgdGVzdHNdKCN0ZW1wb3JhcmlseS1kaXNhYmxpbmctdGVzdHMp
IGluIHRlc3QKK2V4ZWN1dGlvbiwganVzdCBpbnZva2UgdGhlIHRlc3QgcHJvZ3JhbSB3aXRoIHRo
ZQorYC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHNgIGZsYWcgb3Igc2V0IHRoZQorYEdU
RVNUX0FMU09fUlVOX0RJU0FCTEVEX1RFU1RTYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIHZh
bHVlIG90aGVyCit0aGFuIGAwYC4gIFlvdSBjYW4gY29tYmluZSB0aGlzIHdpdGggdGhlCitbLS1n
dGVzdFxfZmlsdGVyXSgjcnVubmluZy1hLXN1YnNldC1vZi10aGUtdGVzdHMpIGZsYWcgdG8gZnVy
dGhlciBzZWxlY3QKK3doaWNoIGRpc2FibGVkIHRlc3RzIHRvIHJ1bi4KKworX0F2YWlsYWJpbGl0
eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4zLjAuCisKKyMjIFJlcGVh
dGluZyB0aGUgVGVzdHMgIyMKKworT25jZSBpbiBhIHdoaWxlIHlvdSdsbCBydW4gaW50byBhIHRl
c3Qgd2hvc2UgcmVzdWx0IGlzIGhpdC1vci1taXNzLiBQZXJoYXBzIGl0Cit3aWxsIGZhaWwgb25s
eSAxJSBvZiB0aGUgdGltZSwgbWFraW5nIGl0IHJhdGhlciBoYXJkIHRvIHJlcHJvZHVjZSB0aGUg
YnVnIHVuZGVyCithIGRlYnVnZ2VyLiBUaGlzIGNhbiBiZSBhIG1ham9yIHNvdXJjZSBvZiBmcnVz
dHJhdGlvbi4KKworVGhlIGAtLWd0ZXN0X3JlcGVhdGAgZmxhZyBhbGxvd3MgeW91IHRvIHJlcGVh
dCBhbGwgKG9yIHNlbGVjdGVkKSB0ZXN0IG1ldGhvZHMKK2luIGEgcHJvZ3JhbSBtYW55IHRpbWVz
LiBIb3BlZnVsbHksIGEgZmxha3kgdGVzdCB3aWxsIGV2ZW50dWFsbHkgZmFpbCBhbmQgZ2l2ZQor
eW91IGEgY2hhbmNlIHRvIGRlYnVnLiBIZXJlJ3MgaG93IHRvIHVzZSBpdDoKKworfCBgJCBmb29f
dGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwYCB8IFJlcGVhdCBmb29cX3Rlc3QgMTAwMCB0aW1lcyBh
bmQgZG9uJ3Qgc3RvcCBhdCBmYWlsdXJlcy4gfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tfAorfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0tMWAgICB8IEEgbmVnYXRp
dmUgY291bnQgbWVhbnMgcmVwZWF0aW5nIGZvcmV2ZXIuICAgICAgICAgICAgICAgfAorfCBgJCBm
b29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZWAgfCBS
ZXBlYXQgZm9vXF90ZXN0IDEwMDAgdGltZXMsIHN0b3BwaW5nIGF0IHRoZSBmaXJzdCBmYWlsdXJl
LiBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIHdoZW4gcnVubmluZyB1bmRlciBhIGRlYnVnZ2Vy
OiB3aGVuIHRoZSB0ZXN0ZmFpbHMsIGl0IHdpbGwgZHJvcCBpbnRvIHRoZSBkZWJ1Z2dlciBhbmQg
eW91IGNhbiB0aGVuIGluc3BlY3QgdmFyaWFibGVzIGFuZCBzdGFja3MuIHwKK3wgYCQgZm9vX3Rl
c3QgLS1ndGVzdF9yZXBlYXQ9MTAwMCAtLWd0ZXN0X2ZpbHRlcj1Gb29CYXJgIHwgUmVwZWF0IHRo
ZSB0ZXN0cyB3aG9zZSBuYW1lIG1hdGNoZXMgdGhlIGZpbHRlciAxMDAwIHRpbWVzLiB8CisKK0lm
IHlvdXIgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIGdsb2JhbCBzZXQtdXAvdGVhci1kb3duIGNvZGUg
cmVnaXN0ZXJlZAordXNpbmcgYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCwgaXQgd2lsbCBi
ZSByZXBlYXRlZCBpbiBlYWNoCitpdGVyYXRpb24gYXMgd2VsbCwgYXMgdGhlIGZsYWtpbmVzcyBt
YXkgYmUgaW4gaXQuIFlvdSBjYW4gYWxzbyBzcGVjaWZ5Cit0aGUgcmVwZWF0IGNvdW50IGJ5IHNl
dHRpbmcgdGhlIGBHVEVTVF9SRVBFQVRgIGVudmlyb25tZW50IHZhcmlhYmxlLgorCitfQXZhaWxh
YmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgU2h1ZmZsaW5nIHRoZSBUZXN0cyAj
IworCitZb3UgY2FuIHNwZWNpZnkgdGhlIGAtLWd0ZXN0X3NodWZmbGVgIGZsYWcgKG9yIHNldCB0
aGUgYEdURVNUX1NIVUZGTEVgCitlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBgMWApIHRvIHJ1biB0
aGUgdGVzdHMgaW4gYSBwcm9ncmFtIGluIGEgcmFuZG9tCitvcmRlci4gVGhpcyBoZWxwcyB0byBy
ZXZlYWwgYmFkIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRlc3RzLgorCitCeSBkZWZhdWx0LCBHb29n
bGUgVGVzdCB1c2VzIGEgcmFuZG9tIHNlZWQgY2FsY3VsYXRlZCBmcm9tIHRoZSBjdXJyZW50Cit0
aW1lLiBUaGVyZWZvcmUgeW91J2xsIGdldCBhIGRpZmZlcmVudCBvcmRlciBldmVyeSB0aW1lLiBU
aGUgY29uc29sZQorb3V0cHV0IGluY2x1ZGVzIHRoZSByYW5kb20gc2VlZCB2YWx1ZSwgc3VjaCB0
aGF0IHlvdSBjYW4gcmVwcm9kdWNlIGFuCitvcmRlci1yZWxhdGVkIHRlc3QgZmFpbHVyZSBsYXRl
ci4gVG8gc3BlY2lmeSB0aGUgcmFuZG9tIHNlZWQKK2V4cGxpY2l0bHksIHVzZSB0aGUgYC0tZ3Rl
c3RfcmFuZG9tX3NlZWQ9U0VFRGAgZmxhZyAob3Igc2V0IHRoZQorYEdURVNUX1JBTkRPTV9TRUVE
YCBlbnZpcm9ubWVudCB2YXJpYWJsZSksIHdoZXJlIGBTRUVEYCBpcyBhbiBpbnRlZ2VyCitiZXR3
ZWVuIDAgYW5kIDk5OTk5LiBUaGUgc2VlZCB2YWx1ZSAwIGlzIHNwZWNpYWw6IGl0IHRlbGxzIEdv
b2dsZSBUZXN0Cit0byBkbyB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBjYWxjdWxhdGluZyB0aGUg
c2VlZCBmcm9tIHRoZSBjdXJyZW50Cit0aW1lLgorCitJZiB5b3UgY29tYmluZSB0aGlzIHdpdGgg
YC0tZ3Rlc3RfcmVwZWF0PU5gLCBHb29nbGUgVGVzdCB3aWxsIHBpY2sgYQorZGlmZmVyZW50IHJh
bmRvbSBzZWVkIGFuZCByZS1zaHVmZmxlIHRoZSB0ZXN0cyBpbiBlYWNoIGl0ZXJhdGlvbi4KKwor
X0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHYxLjQuMC4KKworIyMg
Q29udHJvbGxpbmcgVGVzdCBPdXRwdXQgIyMKKworVGhpcyBzZWN0aW9uIHRlYWNoZXMgaG93IHRv
IHR3ZWFrIHRoZSB3YXkgdGVzdCByZXN1bHRzIGFyZSByZXBvcnRlZC4KKworIyMjIENvbG9yZWQg
VGVybWluYWwgT3V0cHV0ICMjIworCitHb29nbGUgVGVzdCBjYW4gdXNlIGNvbG9ycyBpbiBpdHMg
dGVybWluYWwgb3V0cHV0IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNwb3QKK3RoZSBzZXBhcmF0aW9u
IGJldHdlZW4gdGVzdHMsIGFuZCB3aGV0aGVyIHRlc3RzIHBhc3NlZC4KKworWW91IGNhbiBzZXQg
dGhlIEdURVNUXF9DT0xPUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciBzZXQgdGhlIGAtLWd0ZXN0
X2NvbG9yYAorY29tbWFuZCBsaW5lIGZsYWcgdG8gYHllc2AsIGBub2AsIG9yIGBhdXRvYCAodGhl
IGRlZmF1bHQpIHRvIGVuYWJsZSBjb2xvcnMsCitkaXNhYmxlIGNvbG9ycywgb3IgbGV0IEdvb2ds
ZSBUZXN0IGRlY2lkZS4gV2hlbiB0aGUgdmFsdWUgaXMgYGF1dG9gLCBHb29nbGUKK1Rlc3Qgd2ls
bCB1c2UgY29sb3JzIGlmIGFuZCBvbmx5IGlmIHRoZSBvdXRwdXQgZ29lcyB0byBhIHRlcm1pbmFs
IGFuZCAob24KK25vbi1XaW5kb3dzIHBsYXRmb3JtcykgdGhlIGBURVJNYCBlbnZpcm9ubWVudCB2
YXJpYWJsZSBpcyBzZXQgdG8gYHh0ZXJtYCBvcgorYHh0ZXJtLWNvbG9yYC4KKworX0F2YWlsYWJp
bGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBTdXBwcmVzc2luZyB0aGUgRWxhcHNl
ZCBUaW1lICMjIworCitCeSBkZWZhdWx0LCBHb29nbGUgVGVzdCBwcmludHMgdGhlIHRpbWUgaXQg
dGFrZXMgdG8gcnVuIGVhY2ggdGVzdC4gIFRvCitzdXBwcmVzcyB0aGF0LCBydW4gdGhlIHRlc3Qg
cHJvZ3JhbSB3aXRoIHRoZSBgLS1ndGVzdF9wcmludF90aW1lPTBgCitjb21tYW5kIGxpbmUgZmxh
Zy4gIFNldHRpbmcgdGhlIGBHVEVTVF9QUklOVF9USU1FYCBlbnZpcm9ubWVudAordmFyaWFibGUg
dG8gYDBgIGhhcyB0aGUgc2FtZSBlZmZlY3QuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2lu
ZG93cywgTWFjLiAgKEluIEdvb2dsZSBUZXN0IDEuMy4wIGFuZCBsb3dlciwKK3RoZSBkZWZhdWx0
IGJlaGF2aW9yIGlzIHRoYXQgdGhlIGVsYXBzZWQgdGltZSBpcyAqKm5vdCoqIHByaW50ZWQuKQor
CisjIyMgR2VuZXJhdGluZyBhbiBYTUwgUmVwb3J0ICMjIworCitHb29nbGUgVGVzdCBjYW4gZW1p
dCBhIGRldGFpbGVkIFhNTCByZXBvcnQgdG8gYSBmaWxlIGluIGFkZGl0aW9uIHRvIGl0cyBub3Jt
YWwKK3RleHR1YWwgb3V0cHV0LiBUaGUgcmVwb3J0IGNvbnRhaW5zIHRoZSBkdXJhdGlvbiBvZiBl
YWNoIHRlc3QsIGFuZCB0aHVzIGNhbgoraGVscCB5b3UgaWRlbnRpZnkgc2xvdyB0ZXN0cy4KKwor
VG8gZ2VuZXJhdGUgdGhlIFhNTCByZXBvcnQsIHNldCB0aGUgYEdURVNUX09VVFBVVGAgZW52aXJv
bm1lbnQgdmFyaWFibGUgb3IgdGhlCitgLS1ndGVzdF9vdXRwdXRgIGZsYWcgdG8gdGhlIHN0cmlu
ZyBgInhtbDpfcGF0aF90b19vdXRwdXRfZmlsZV8iYCwgd2hpY2ggd2lsbAorY3JlYXRlIHRoZSBm
aWxlIGF0IHRoZSBnaXZlbiBsb2NhdGlvbi4gWW91IGNhbiBhbHNvIGp1c3QgdXNlIHRoZSBzdHJp
bmcKK2AieG1sImAsIGluIHdoaWNoIGNhc2UgdGhlIG91dHB1dCBjYW4gYmUgZm91bmQgaW4gdGhl
IGB0ZXN0X2RldGFpbC54bWxgIGZpbGUgaW4KK3RoZSBjdXJyZW50IGRpcmVjdG9yeS4KKworSWYg
eW91IHNwZWNpZnkgYSBkaXJlY3RvcnkgKGZvciBleGFtcGxlLCBgInhtbDpvdXRwdXQvZGlyZWN0
b3J5LyJgIG9uIExpbnV4IG9yCitgInhtbDpvdXRwdXRcZGlyZWN0b3J5XCJgIG9uIFdpbmRvd3Mp
LCBHb29nbGUgVGVzdCB3aWxsIGNyZWF0ZSB0aGUgWE1MIGZpbGUgaW4KK3RoYXQgZGlyZWN0b3J5
LCBuYW1lZCBhZnRlciB0aGUgdGVzdCBleGVjdXRhYmxlIChlLmcuIGBmb29fdGVzdC54bWxgIGZv
ciB0ZXN0Citwcm9ncmFtIGBmb29fdGVzdGAgb3IgYGZvb190ZXN0LmV4ZWApLiBJZiB0aGUgZmls
ZSBhbHJlYWR5IGV4aXN0cyAocGVyaGFwcyBsZWZ0CitvdmVyIGZyb20gYSBwcmV2aW91cyBydW4p
LCBHb29nbGUgVGVzdCB3aWxsIHBpY2sgYSBkaWZmZXJlbnQgbmFtZSAoZS5nLgorYGZvb190ZXN0
XzEueG1sYCkgdG8gYXZvaWQgb3ZlcndyaXRpbmcgaXQuCisKK1RoZSByZXBvcnQgdXNlcyB0aGUg
Zm9ybWF0IGRlc2NyaWJlZCBoZXJlLiAgSXQgaXMgYmFzZWQgb24gdGhlCitganVuaXRyZXBvcnRg
IEFudCB0YXNrIGFuZCBjYW4gYmUgcGFyc2VkIGJ5IHBvcHVsYXIgY29udGludW91cyBidWlsZAor
c3lzdGVtcyBsaWtlIFtKZW5raW5zXShodHRwOi8vamVua2lucy1jaS5vcmcvKS4gU2luY2UgdGhh
dCBmb3JtYXQKK3dhcyBvcmlnaW5hbGx5IGludGVuZGVkIGZvciBKYXZhLCBhIGxpdHRsZSBpbnRl
cnByZXRhdGlvbiBpcyByZXF1aXJlZAordG8gbWFrZSBpdCBhcHBseSB0byBHb29nbGUgVGVzdCB0
ZXN0cywgYXMgc2hvd24gaGVyZToKKworYGBgCis8dGVzdHN1aXRlcyBuYW1lPSJBbGxUZXN0cyIg
Li4uPgorICA8dGVzdHN1aXRlIG5hbWU9InRlc3RfY2FzZV9uYW1lIiAuLi4+CisgICAgPHRlc3Rj
YXNlIG5hbWU9InRlc3RfbmFtZSIgLi4uPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+
CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9
Ii4uLiIvPgorICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPgor
YGBgCisKKyAgKiBUaGUgcm9vdCBgPHRlc3RzdWl0ZXM+YCBlbGVtZW50IGNvcnJlc3BvbmRzIHRv
IHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFtLgorICAqIGA8dGVzdHN1aXRlPmAgZWxlbWVudHMgY29y
cmVzcG9uZCB0byBHb29nbGUgVGVzdCB0ZXN0IGNhc2VzLgorICAqIGA8dGVzdGNhc2U+YCBlbGVt
ZW50cyBjb3JyZXNwb25kIHRvIEdvb2dsZSBUZXN0IHRlc3QgZnVuY3Rpb25zLgorCitGb3IgaW5z
dGFuY2UsIHRoZSBmb2xsb3dpbmcgcHJvZ3JhbQorCitgYGAKK1RFU1QoTWF0aFRlc3QsIEFkZGl0
aW9uKSB7IC4uLiB9CitURVNUKE1hdGhUZXN0LCBTdWJ0cmFjdGlvbikgeyAuLi4gfQorVEVTVChM
b2dpY1Rlc3QsIE5vbkNvbnRyYWRpY3Rpb24pIHsgLi4uIH0KK2BgYAorCitjb3VsZCBnZW5lcmF0
ZSB0aGlzIHJlcG9ydDoKKworYGBgCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYt
OCI/PgorPHRlc3RzdWl0ZXMgdGVzdHM9IjMiIGZhaWx1cmVzPSIxIiBlcnJvcnM9IjAiIHRpbWU9
IjM1IiBuYW1lPSJBbGxUZXN0cyI+CisgIDx0ZXN0c3VpdGUgbmFtZT0iTWF0aFRlc3QiIHRlc3Rz
PSIyIiBmYWlsdXJlcz0iMSIgZXJyb3JzPSIwIiB0aW1lPSIxNSI+CisgICAgPHRlc3RjYXNlIG5h
bWU9IkFkZGl0aW9uIiBzdGF0dXM9InJ1biIgdGltZT0iNyIgY2xhc3NuYW1lPSIiPgorICAgICAg
PGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IGFkZCgxLCAxKSYjeDBBOyBBY3R1YWw6IDMmI3gw
QTtFeHBlY3RlZDogMiIgdHlwZT0iIi8+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBv
ZjogYWRkKDEsIC0xKSYjeDBBOyBBY3R1YWw6IDEmI3gwQTtFeHBlY3RlZDogMCIgdHlwZT0iIi8+
CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8dGVzdGNhc2UgbmFtZT0iU3VidHJhY3Rpb24iIHN0YXR1
cz0icnVuIiB0aW1lPSI1IiBjbGFzc25hbWU9IiI+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0
c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iTG9naWNUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9
IjAiIGVycm9ycz0iMCIgdGltZT0iNSI+CisgICAgPHRlc3RjYXNlIG5hbWU9Ik5vbkNvbnRyYWRp
Y3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSI1IiBjbGFzc25hbWU9IiI+CisgICAgPC90ZXN0Y2Fz
ZT4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rlc3RzdWl0ZXM+CitgYGAKKworVGhpbmdzIHRvIG5vdGU6
CisKKyAgKiBUaGUgYHRlc3RzYCBhdHRyaWJ1dGUgb2YgYSBgPHRlc3RzdWl0ZXM+YCBvciBgPHRl
c3RzdWl0ZT5gIGVsZW1lbnQgdGVsbHMgaG93IG1hbnkgdGVzdCBmdW5jdGlvbnMgdGhlIEdvb2ds
ZSBUZXN0IHByb2dyYW0gb3IgdGVzdCBjYXNlIGNvbnRhaW5zLCB3aGlsZSB0aGUgYGZhaWx1cmVz
YCBhdHRyaWJ1dGUgdGVsbHMgaG93IG1hbnkgb2YgdGhlbSBmYWlsZWQuCisgICogVGhlIGB0aW1l
YCBhdHRyaWJ1dGUgZXhwcmVzc2VzIHRoZSBkdXJhdGlvbiBvZiB0aGUgdGVzdCwgdGVzdCBjYXNl
LCBvciBlbnRpcmUgdGVzdCBwcm9ncmFtIGluIG1pbGxpc2Vjb25kcy4KKyAgKiBFYWNoIGA8ZmFp
bHVyZT5gIGVsZW1lbnQgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgZmFpbGVkIEdvb2dsZSBUZXN0
IGFzc2VydGlvbi4KKyAgKiBTb21lIEpVbml0IGNvbmNlcHRzIGRvbid0IGFwcGx5IHRvIEdvb2ds
ZSBUZXN0LCB5ZXQgd2UgaGF2ZSB0byBjb25mb3JtIHRvIHRoZSBEVEQuIFRoZXJlZm9yZSB5b3Un
bGwgc2VlIHNvbWUgZHVtbXkgZWxlbWVudHMgYW5kIGF0dHJpYnV0ZXMgaW4gdGhlIHJlcG9ydC4g
WW91IGNhbiBzYWZlbHkgaWdub3JlIHRoZXNlIHBhcnRzLgorCitfQXZhaWxhYmlsaXR5Ol8gTGlu
dXgsIFdpbmRvd3MsIE1hYy4KKworIyMgQ29udHJvbGxpbmcgSG93IEZhaWx1cmVzIEFyZSBSZXBv
cnRlZCAjIworCisjIyMgVHVybmluZyBBc3NlcnRpb24gRmFpbHVyZXMgaW50byBCcmVhay1Qb2lu
dHMgIyMjCisKK1doZW4gcnVubmluZyB0ZXN0IHByb2dyYW1zIHVuZGVyIGEgZGVidWdnZXIsIGl0
J3MgdmVyeSBjb252ZW5pZW50IGlmIHRoZQorZGVidWdnZXIgY2FuIGNhdGNoIGFuIGFzc2VydGlv
biBmYWlsdXJlIGFuZCBhdXRvbWF0aWNhbGx5IGRyb3AgaW50byBpbnRlcmFjdGl2ZQorbW9kZS4g
R29vZ2xlIFRlc3QncyBfYnJlYWstb24tZmFpbHVyZV8gbW9kZSBzdXBwb3J0cyB0aGlzIGJlaGF2
aW9yLgorCitUbyBlbmFibGUgaXQsIHNldCB0aGUgYEdURVNUX0JSRUFLX09OX0ZBSUxVUkVgIGVu
dmlyb25tZW50IHZhcmlhYmxlIHRvIGEgdmFsdWUKK290aGVyIHRoYW4gYDBgIC4gQWx0ZXJuYXRp
dmVseSwgeW91IGNhbiB1c2UgdGhlIGAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVgCitjb21tYW5k
IGxpbmUgZmxhZy4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMj
IyBEaXNhYmxpbmcgQ2F0Y2hpbmcgVGVzdC1UaHJvd24gRXhjZXB0aW9ucyAjIyMKKworR29vZ2xl
IFRlc3QgY2FuIGJlIHVzZWQgZWl0aGVyIHdpdGggb3Igd2l0aG91dCBleGNlcHRpb25zIGVuYWJs
ZWQuICBJZgorYSB0ZXN0IHRocm93cyBhIEMrKyBleGNlcHRpb24gb3IgKG9uIFdpbmRvd3MpIGEg
c3RydWN0dXJlZCBleGNlcHRpb24KKyhTRUgpLCBieSBkZWZhdWx0IEdvb2dsZSBUZXN0IGNhdGNo
ZXMgaXQsIHJlcG9ydHMgaXQgYXMgYSB0ZXN0CitmYWlsdXJlLCBhbmQgY29udGludWVzIHdpdGgg
dGhlIG5leHQgdGVzdCBtZXRob2QuICBUaGlzIG1heGltaXplcyB0aGUKK2NvdmVyYWdlIG9mIGEg
dGVzdCBydW4uICBBbHNvLCBvbiBXaW5kb3dzIGFuIHVuY2F1Z2h0IGV4Y2VwdGlvbiB3aWxsCitj
YXVzZSBhIHBvcC11cCB3aW5kb3csIHNvIGNhdGNoaW5nIHRoZSBleGNlcHRpb25zIGFsbG93cyB5
b3UgdG8gcnVuCit0aGUgdGVzdHMgYXV0b21hdGljYWxseS4KKworV2hlbiBkZWJ1Z2dpbmcgdGhl
IHRlc3QgZmFpbHVyZXMsIGhvd2V2ZXIsIHlvdSBtYXkgaW5zdGVhZCB3YW50IHRoZQorZXhjZXB0
aW9ucyB0byBiZSBoYW5kbGVkIGJ5IHRoZSBkZWJ1Z2dlciwgc3VjaCB0aGF0IHlvdSBjYW4gZXhh
bWluZQordGhlIGNhbGwgc3RhY2sgd2hlbiBhbiBleGNlcHRpb24gaXMgdGhyb3duLiAgVG8gYWNo
aWV2ZSB0aGF0LCBzZXQgdGhlCitgR1RFU1RfQ0FUQ0hfRVhDRVBUSU9OU2AgZW52aXJvbm1lbnQg
dmFyaWFibGUgdG8gYDBgLCBvciB1c2UgdGhlCitgLS1ndGVzdF9jYXRjaF9leGNlcHRpb25zPTBg
IGZsYWcgd2hlbiBydW5uaW5nIHRoZSB0ZXN0cy4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgs
IFdpbmRvd3MsIE1hYy4KKworIyMjIExldHRpbmcgQW5vdGhlciBUZXN0aW5nIEZyYW1ld29yayBE
cml2ZSAjIyMKKworSWYgeW91IHdvcmsgb24gYSBwcm9qZWN0IHRoYXQgaGFzIGFscmVhZHkgYmVl
biB1c2luZyBhbm90aGVyIHRlc3RpbmcKK2ZyYW1ld29yayBhbmQgaXMgbm90IHJlYWR5IHRvIGNv
bXBsZXRlbHkgc3dpdGNoIHRvIEdvb2dsZSBUZXN0IHlldCwKK3lvdSBjYW4gZ2V0IG11Y2ggb2Yg
R29vZ2xlIFRlc3QncyBiZW5lZml0IGJ5IHVzaW5nIGl0cyBhc3NlcnRpb25zIGluCit5b3VyIGV4
aXN0aW5nIHRlc3RzLiAgSnVzdCBjaGFuZ2UgeW91ciBgbWFpbigpYCBmdW5jdGlvbiB0byBsb29r
CitsaWtlOgorCitgYGAKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHRocm93X29uX2Zh
aWx1cmUpID0gdHJ1ZTsKKyAgLy8gSW1wb3J0YW50OiBHb29nbGUgVGVzdCBtdXN0IGJlIGluaXRp
YWxpemVkLgorICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICAu
Li4gd2hhdGV2ZXIgeW91ciBleGlzdGluZyB0ZXN0aW5nIGZyYW1ld29yayByZXF1aXJlcyAuLi4K
K30KK2BgYAorCitXaXRoIHRoYXQsIHlvdSBjYW4gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMg
aW4gYWRkaXRpb24gdG8gdGhlCituYXRpdmUgYXNzZXJ0aW9ucyB5b3VyIHRlc3RpbmcgZnJhbWV3
b3JrIHByb3ZpZGVzLCBmb3IgZXhhbXBsZToKKworYGBgCit2b2lkIFRlc3RGb29Eb2VzQmFyKCkg
eworICBGb28gZm9vOworICBFWFBFQ1RfTEUoZm9vLkJhcigxKSwgMTAwKTsgICAgIC8vIEEgR29v
Z2xlIFRlc3QgYXNzZXJ0aW9uLgorICBDUFBVTklUX0FTU0VSVChmb28uSXNFbXB0eSgpKTsgIC8v
IEEgbmF0aXZlIGFzc2VydGlvbi4KK30KK2BgYAorCitJZiBhIEdvb2dsZSBUZXN0IGFzc2VydGlv
biBmYWlscywgaXQgd2lsbCBwcmludCBhbiBlcnJvciBtZXNzYWdlIGFuZAordGhyb3cgYW4gZXhj
ZXB0aW9uLCB3aGljaCB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBmYWlsdXJlIGJ5IHlvdXIgaG9zdAor
dGVzdGluZyBmcmFtZXdvcmsuICBJZiB5b3UgY29tcGlsZSB5b3VyIGNvZGUgd2l0aCBleGNlcHRp
b25zIGRpc2FibGVkLAorYSBmYWlsZWQgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIHdpbGwgaW5zdGVh
ZCBleGl0IHlvdXIgcHJvZ3JhbSB3aXRoIGEKK25vbi16ZXJvIGNvZGUsIHdoaWNoIHdpbGwgYWxz
byBzaWduYWwgYSB0ZXN0IGZhaWx1cmUgdG8geW91ciB0ZXN0CitydW5uZXIuCisKK0lmIHlvdSBk
b24ndCB3cml0ZSBgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1
ZTtgIGluCit5b3VyIGBtYWluKClgLCB5b3UgY2FuIGFsdGVybmF0aXZlbHkgZW5hYmxlIHRoaXMg
ZmVhdHVyZSBieSBzcGVjaWZ5aW5nCit0aGUgYC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZWAgZmxh
ZyBvbiB0aGUgY29tbWFuZC1saW5lIG9yIHNldHRpbmcgdGhlCitgR1RFU1RfVEhST1dfT05fRkFJ
TFVSRWAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSBub24temVybyB2YWx1ZS4KKworRGVhdGgg
dGVzdHMgYXJlIF9ub3RfIHN1cHBvcnRlZCB3aGVuIG90aGVyIHRlc3QgZnJhbWV3b3JrIGlzIHVz
ZWQgdG8gb3JnYW5pemUgdGVzdHMuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywg
TWFjOyBzaW5jZSB2MS4zLjAuCisKKyMjIERpc3RyaWJ1dGluZyBUZXN0IEZ1bmN0aW9ucyB0byBN
dWx0aXBsZSBNYWNoaW5lcyAjIworCitJZiB5b3UgaGF2ZSBtb3JlIHRoYW4gb25lIG1hY2hpbmUg
eW91IGNhbiB1c2UgdG8gcnVuIGEgdGVzdCBwcm9ncmFtLAoreW91IG1pZ2h0IHdhbnQgdG8gcnVu
IHRoZSB0ZXN0IGZ1bmN0aW9ucyBpbiBwYXJhbGxlbCBhbmQgZ2V0IHRoZQorcmVzdWx0IGZhc3Rl
ci4gIFdlIGNhbGwgdGhpcyB0ZWNobmlxdWUgX3NoYXJkaW5nXywgd2hlcmUgZWFjaCBtYWNoaW5l
CitpcyBjYWxsZWQgYSBfc2hhcmRfLgorCitHb29nbGUgVGVzdCBpcyBjb21wYXRpYmxlIHdpdGgg
dGVzdCBzaGFyZGluZy4gIFRvIHRha2UgYWR2YW50YWdlIG9mCit0aGlzIGZlYXR1cmUsIHlvdXIg
dGVzdCBydW5uZXIgKG5vdCBwYXJ0IG9mIEdvb2dsZSBUZXN0KSBuZWVkcyB0byBkbwordGhlIGZv
bGxvd2luZzoKKworICAxLiBBbGxvY2F0ZSBhIG51bWJlciBvZiBtYWNoaW5lcyAoc2hhcmRzKSB0
byBydW4gdGhlIHRlc3RzLgorICAxLiBPbiBlYWNoIHNoYXJkLCBzZXQgdGhlIGBHVEVTVF9UT1RB
TF9TSEFSRFNgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2hh
cmRzLiAgSXQgbXVzdCBiZSB0aGUgc2FtZSBmb3IgYWxsIHNoYXJkcy4KKyAgMS4gT24gZWFjaCBz
aGFyZCwgc2V0IHRoZSBgR1RFU1RfU0hBUkRfSU5ERVhgIGVudmlyb25tZW50IHZhcmlhYmxlIHRv
IHRoZSBpbmRleCBvZiB0aGUgc2hhcmQuICBEaWZmZXJlbnQgc2hhcmRzIG11c3QgYmUgYXNzaWdu
ZWQgZGlmZmVyZW50IGluZGljZXMsIHdoaWNoIG11c3QgYmUgaW4gdGhlIHJhbmdlIGBbMCwgR1RF
U1RfVE9UQUxfU0hBUkRTIC0gMV1gLgorICAxLiBSdW4gdGhlIHNhbWUgdGVzdCBwcm9ncmFtIG9u
IGFsbCBzaGFyZHMuICBXaGVuIEdvb2dsZSBUZXN0IHNlZXMgdGhlIGFib3ZlIHR3byBlbnZpcm9u
bWVudCB2YXJpYWJsZXMsIGl0IHdpbGwgc2VsZWN0IGEgc3Vic2V0IG9mIHRoZSB0ZXN0IGZ1bmN0
aW9ucyB0byBydW4uICBBY3Jvc3MgYWxsIHNoYXJkcywgZWFjaCB0ZXN0IGZ1bmN0aW9uIGluIHRo
ZSBwcm9ncmFtIHdpbGwgYmUgcnVuIGV4YWN0bHkgb25jZS4KKyAgMS4gV2FpdCBmb3IgYWxsIHNo
YXJkcyB0byBmaW5pc2gsIHRoZW4gY29sbGVjdCBhbmQgcmVwb3J0IHRoZSByZXN1bHRzLgorCitZ
b3VyIHByb2plY3QgbWF5IGhhdmUgdGVzdHMgdGhhdCB3ZXJlIHdyaXR0ZW4gd2l0aG91dCBHb29n
bGUgVGVzdCBhbmQKK3RodXMgZG9uJ3QgdW5kZXJzdGFuZCB0aGlzIHByb3RvY29sLiAgSW4gb3Jk
ZXIgZm9yIHlvdXIgdGVzdCBydW5uZXIgdG8KK2ZpZ3VyZSBvdXQgd2hpY2ggdGVzdCBzdXBwb3J0
cyBzaGFyZGluZywgaXQgY2FuIHNldCB0aGUgZW52aXJvbm1lbnQKK3ZhcmlhYmxlIGBHVEVTVF9T
SEFSRF9TVEFUVVNfRklMRWAgdG8gYSBub24tZXhpc3RlbnQgZmlsZSBwYXRoLiAgSWYgYQordGVz
dCBwcm9ncmFtIHN1cHBvcnRzIHNoYXJkaW5nLCBpdCB3aWxsIGNyZWF0ZSB0aGlzIGZpbGUgdG8K
K2Fja25vd2xlZGdlIHRoZSBmYWN0ICh0aGUgYWN0dWFsIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGFy
ZSBub3QKK2ltcG9ydGFudCBhdCB0aGlzIHRpbWU7IGFsdGhvdWdoIHdlIG1heSBzdGljayBzb21l
IHVzZWZ1bCBpbmZvcm1hdGlvbgoraW4gaXQgaW4gdGhlIGZ1dHVyZS4pOyBvdGhlcndpc2UgaXQg
d2lsbCBub3QgY3JlYXRlIGl0LgorCitIZXJlJ3MgYW4gZXhhbXBsZSB0byBtYWtlIGl0IGNsZWFy
LiAgU3VwcG9zZSB5b3UgaGF2ZSBhIHRlc3QgcHJvZ3JhbQorYGZvb190ZXN0YCB0aGF0IGNvbnRh
aW5zIHRoZSBmb2xsb3dpbmcgNSB0ZXN0IGZ1bmN0aW9uczoKK2BgYAorVEVTVChBLCBWKQorVEVT
VChBLCBXKQorVEVTVChCLCBYKQorVEVTVChCLCBZKQorVEVTVChCLCBaKQorYGBgCithbmQgeW91
IGhhdmUgMyBtYWNoaW5lcyBhdCB5b3VyIGRpc3Bvc2FsLiAgVG8gcnVuIHRoZSB0ZXN0IGZ1bmN0
aW9ucyBpbgorcGFyYWxsZWwsIHlvdSB3b3VsZCBzZXQgYEdURVNUX1RPVEFMX1NIQVJEU2AgdG8g
MyBvbiBhbGwgbWFjaGluZXMsIGFuZAorc2V0IGBHVEVTVF9TSEFSRF9JTkRFWGAgdG8gMCwgMSwg
YW5kIDIgb24gdGhlIG1hY2hpbmVzIHJlc3BlY3RpdmVseS4KK1RoZW4geW91IHdvdWxkIHJ1biB0
aGUgc2FtZSBgZm9vX3Rlc3RgIG9uIGVhY2ggbWFjaGluZS4KKworR29vZ2xlIFRlc3QgcmVzZXJ2
ZXMgdGhlIHJpZ2h0IHRvIGNoYW5nZSBob3cgdGhlIHdvcmsgaXMgZGlzdHJpYnV0ZWQKK2Fjcm9z
cyB0aGUgc2hhcmRzLCBidXQgaGVyZSdzIG9uZSBwb3NzaWJsZSBzY2VuYXJpbzoKKworICAqIE1h
Y2hpbmUgIzAgcnVucyBgQS5WYCBhbmQgYEIuWGAuCisgICogTWFjaGluZSAjMSBydW5zIGBBLldg
IGFuZCBgQi5ZYC4KKyAgKiBNYWNoaW5lICMyIHJ1bnMgYEIuWmAuCisKK19BdmFpbGFiaWxpdHk6
XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuMy4wLgorCisjIEZ1c2luZyBH
b29nbGUgVGVzdCBTb3VyY2UgRmlsZXMgIworCitHb29nbGUgVGVzdCdzIGltcGxlbWVudGF0aW9u
IGNvbnNpc3RzIG9mIH4zMCBmaWxlcyAoZXhjbHVkaW5nIGl0cyBvd24KK3Rlc3RzKS4gIFNvbWV0
aW1lcyB5b3UgbWF5IHdhbnQgdGhlbSB0byBiZSBwYWNrYWdlZCB1cCBpbiB0d28gZmlsZXMgKGEK
K2AuaGAgYW5kIGEgYC5jY2ApIGluc3RlYWQsIHN1Y2ggdGhhdCB5b3UgY2FuIGVhc2lseSBjb3B5
IHRoZW0gdG8gYSBuZXcKK21hY2hpbmUgYW5kIHN0YXJ0IGhhY2tpbmcgdGhlcmUuICBGb3IgdGhp
cyB3ZSBwcm92aWRlIGFuIGV4cGVyaW1lbnRhbAorUHl0aG9uIHNjcmlwdCBgZnVzZV9ndGVzdF9m
aWxlcy5weWAgaW4gdGhlIGBzY3JpcHRzL2AgZGlyZWN0b3J5IChzaW5jZSByZWxlYXNlIDEuMy4w
KS4KK0Fzc3VtaW5nIHlvdSBoYXZlIFB5dGhvbiAyLjQgb3IgYWJvdmUgaW5zdGFsbGVkIG9uIHlv
dXIgbWFjaGluZSwganVzdAorZ28gdG8gdGhhdCBkaXJlY3RvcnkgYW5kIHJ1bgorYGBgCitweXRo
b24gZnVzZV9ndGVzdF9maWxlcy5weSBPVVRQVVRfRElSCitgYGAKKworYW5kIHlvdSBzaG91bGQg
c2VlIGFuIGBPVVRQVVRfRElSYCBkaXJlY3RvcnkgYmVpbmcgY3JlYXRlZCB3aXRoIGZpbGVzCitg
Z3Rlc3QvZ3Rlc3QuaGAgYW5kIGBndGVzdC9ndGVzdC1hbGwuY2NgIGluIGl0LiAgVGhlc2UgZmls
ZXMgY29udGFpbgorZXZlcnl0aGluZyB5b3UgbmVlZCB0byB1c2UgR29vZ2xlIFRlc3QuICBKdXN0
IGNvcHkgdGhlbSB0byBhbnl3aGVyZQoreW91IHdhbnQgYW5kIHlvdSBhcmUgcmVhZHkgdG8gd3Jp
dGUgdGVzdHMuICBZb3UgY2FuIHVzZSB0aGUKK1tzY3JpcHRzL3Rlc3QvTWFrZWZpbGVdKC4uL3Nj
cmlwdHMvdGVzdC9NYWtlZmlsZSkKK2ZpbGUgYXMgYW4gZXhhbXBsZSBvbiBob3cgdG8gY29tcGls
ZSB5b3VyIHRlc3RzIGFnYWluc3QgdGhlbS4KKworIyBXaGVyZSB0byBHbyBmcm9tIEhlcmUgIwor
CitDb25ncmF0dWxhdGlvbnMhIFlvdSd2ZSBub3cgbGVhcm5lZCBtb3JlIGFkdmFuY2VkIEdvb2ds
ZSBUZXN0IHRvb2xzIGFuZCBhcmUKK3JlYWR5IHRvIHRhY2tsZSBtb3JlIGNvbXBsZXggdGVzdGlu
ZyB0YXNrcy4gSWYgeW91IHdhbnQgdG8gZGl2ZSBldmVuIGRlZXBlciwgeW91CitjYW4gcmVhZCB0
aGUgW0ZyZXF1ZW50bHktQXNrZWQgUXVlc3Rpb25zXShWMV83X0ZBUS5tZCkuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzdfRG9jdW1lbnRhdGlvbi5tZCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfN19Eb2N1bWVudGF0aW9uLm1kCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI4MjY5N2E1MGI5YWFhZDFkMDRmYjRhZTNmZjkwY2E3MTA0MmJhYTMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzdfRG9jdW1lbnRhdGlvbi5t
ZApAQCAtMCwwICsxLDE0IEBACitUaGlzIHBhZ2UgbGlzdHMgYWxsIGRvY3VtZW50YXRpb24gd2lr
aSBwYWdlcyBmb3IgR29vZ2xlIFRlc3QgKioodGhlIFNWTiB0cnVuayB2ZXJzaW9uKSoqCistLSAq
KmlmIHlvdSB1c2UgYSByZWxlYXNlZCB2ZXJzaW9uIG9mIEdvb2dsZSBUZXN0LCBwbGVhc2UgcmVh
ZCB0aGUKK2RvY3VtZW50YXRpb24gZm9yIHRoYXQgc3BlY2lmaWMgdmVyc2lvbiBpbnN0ZWFkLioq
CisKKyAgKiBbUHJpbWVyXShWMV83X1ByaW1lci5tZCkgLS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJl
IG5ldyB0byBHb29nbGUgVGVzdC4KKyAgKiBbU2FtcGxlc10oVjFfN19TYW1wbGVzLm1kKSAtLSBs
ZWFybiBmcm9tIGV4YW1wbGVzLgorICAqIFtBZHZhbmNlZEd1aWRlXShWMV83X0FkdmFuY2VkR3Vp
ZGUubWQpIC0tIGxlYXJuIG1vcmUgYWJvdXQgR29vZ2xlIFRlc3QuCisgICogW1hjb2RlR3VpZGVd
KFYxXzdfWGNvZGVHdWlkZS5tZCkgLS0gaG93IHRvIHVzZSBHb29nbGUgVGVzdCBpbiBYY29kZSBv
biBNYWMuCisgICogW0ZyZXF1ZW50bHktQXNrZWQgUXVlc3Rpb25zXShWMV83X0ZBUS5tZCkgLS0g
Y2hlY2sgaGVyZSBiZWZvcmUgYXNraW5nIGEgcXVlc3Rpb24gb24gdGhlIG1haWxpbmcgbGlzdC4K
KworVG8gY29udHJpYnV0ZSBjb2RlIHRvIEdvb2dsZSBUZXN0LCByZWFkOgorCisgICogW0Rldkd1
aWRlXShEZXZHdWlkZS5tZCkgLS0gcmVhZCB0aGlzIF9iZWZvcmVfIHdyaXRpbmcgeW91ciBmaXJz
dCBwYXRjaC4KKyAgKiBbUHVtcE1hbnVhbF0oVjFfN19QdW1wTWFudWFsLm1kKSAtLSBob3cgd2Ug
Z2VuZXJhdGUgc29tZSBvZiBHb29nbGUgVGVzdCdzIHNvdXJjZSBmaWxlcy4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2Nz
L1YxXzdfRkFRLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV83X0ZBUS5tZApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zZGQ5MTRkY2YxNmFlMzQyMDhlMDkwOGQxNmNiOTMzMjQxMzIwNmYwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV83X0ZBUS5tZApA
QCAtMCwwICsxLDEwODIgQEAKKworCitJZiB5b3UgY2Fubm90IGZpbmQgdGhlIGFuc3dlciB0byB5
b3VyIHF1ZXN0aW9uIGhlcmUsIGFuZCB5b3UgaGF2ZSByZWFkCitbUHJpbWVyXShWMV83X1ByaW1l
ci5tZCkgYW5kIFtBZHZhbmNlZEd1aWRlXShWMV83X0FkdmFuY2VkR3VpZGUubWQpLCBzZW5kIGl0
IHRvCitnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20uCisKKyMjIFdoeSBzaG91
bGQgSSB1c2UgR29vZ2xlIFRlc3QgaW5zdGVhZCBvZiBteSBmYXZvcml0ZSBDKysgdGVzdGluZyBm
cmFtZXdvcms/ICMjCisKK0ZpcnN0LCBsZXQgdXMgc2F5IGNsZWFybHkgdGhhdCB3ZSBkb24ndCB3
YW50IHRvIGdldCBpbnRvIHRoZSBkZWJhdGUgb2YKK3doaWNoIEMrKyB0ZXN0aW5nIGZyYW1ld29y
ayBpcyAqKnRoZSBiZXN0KiouICBUaGVyZSBleGlzdCBtYW55IGZpbmUKK2ZyYW1ld29ya3MgZm9y
IHdyaXRpbmcgQysrIHRlc3RzLCBhbmQgd2UgaGF2ZSB0cmVtZW5kb3VzIHJlc3BlY3QgZm9yCit0
aGUgZGV2ZWxvcGVycyBhbmQgdXNlcnMgb2YgdGhlbS4gIFdlIGRvbid0IHRoaW5rIHRoZXJlIGlz
IChvciB3aWxsCitiZSkgYSBzaW5nbGUgYmVzdCBmcmFtZXdvcmsgLSB5b3UgaGF2ZSB0byBwaWNr
IHRoZSByaWdodCB0b29sIGZvciB0aGUKK3BhcnRpY3VsYXIgdGFzayB5b3UgYXJlIHRhY2tsaW5n
LgorCitXZSBjcmVhdGVkIEdvb2dsZSBUZXN0IGJlY2F1c2Ugd2UgY291bGRuJ3QgZmluZCB0aGUg
cmlnaHQgY29tYmluYXRpb24KK29mIGZlYXR1cmVzIGFuZCBjb252ZW5pZW5jZXMgaW4gYW4gZXhp
c3RpbmcgZnJhbWV3b3JrIHRvIHNhdGlzZnkgX291cl8KK25lZWRzLiAgVGhlIGZvbGxvd2luZyBp
cyBhIGxpc3Qgb2YgdGhpbmdzIHRoYXQgX3dlXyBsaWtlIGFib3V0IEdvb2dsZQorVGVzdC4gIFdl
IGRvbid0IGNsYWltIHRoZW0gdG8gYmUgdW5pcXVlIHRvIEdvb2dsZSBUZXN0IC0gcmF0aGVyLCB0
aGUKK2NvbWJpbmF0aW9uIG9mIHRoZW0gbWFrZXMgR29vZ2xlIFRlc3QgdGhlIGNob2ljZSBmb3Ig
dXMuICBXZSBob3BlIHRoaXMKK2xpc3QgY2FuIGhlbHAgeW91IGRlY2lkZSB3aGV0aGVyIGl0IGlz
IGZvciB5b3UgdG9vLgorCisgICogR29vZ2xlIFRlc3QgaXMgZGVzaWduZWQgdG8gYmUgcG9ydGFi
bGU6IGl0IGRvZXNuJ3QgcmVxdWlyZSBleGNlcHRpb25zIG9yIFJUVEk7IGl0IHdvcmtzIGFyb3Vu
ZCB2YXJpb3VzIGJ1Z3MgaW4gdmFyaW91cyBjb21waWxlcnMgYW5kIGVudmlyb25tZW50czsgZXRj
LiAgQXMgYSByZXN1bHQsIGl0IHdvcmtzIG9uIExpbnV4LCBNYWMgT1MgWCwgV2luZG93cyBhbmQg
c2V2ZXJhbCBlbWJlZGRlZCBvcGVyYXRpbmcgc3lzdGVtcy4KKyAgKiBOb25mYXRhbCBhc3NlcnRp
b25zIChgRVhQRUNUXypgKSBoYXZlIHByb3ZlbiB0byBiZSBncmVhdCB0aW1lIHNhdmVycywgYXMg
dGhleSBhbGxvdyBhIHRlc3QgdG8gcmVwb3J0IG11bHRpcGxlIGZhaWx1cmVzIGluIGEgc2luZ2xl
IGVkaXQtY29tcGlsZS10ZXN0IGN5Y2xlLgorICAqIEl0J3MgZWFzeSB0byB3cml0ZSBhc3NlcnRp
b25zIHRoYXQgZ2VuZXJhdGUgaW5mb3JtYXRpdmUgbWVzc2FnZXM6IHlvdSBqdXN0IHVzZSB0aGUg
c3RyZWFtIHN5bnRheCB0byBhcHBlbmQgYW55IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24sIGUuZy4g
YEFTU0VSVF9FUSg1LCBGb28oaSkpIDw8ICIgd2hlcmUgaSA9ICIgPDwgaTtgLiAgSXQgZG9lc24n
dCByZXF1aXJlIGEgbmV3IHNldCBvZiBtYWNyb3Mgb3Igc3BlY2lhbCBmdW5jdGlvbnMuCisgICog
R29vZ2xlIFRlc3QgYXV0b21hdGljYWxseSBkZXRlY3RzIHlvdXIgdGVzdHMgYW5kIGRvZXNuJ3Qg
cmVxdWlyZSB5b3UgdG8gZW51bWVyYXRlIHRoZW0gaW4gb3JkZXIgdG8gcnVuIHRoZW0uCisgICog
RGVhdGggdGVzdHMgYXJlIHByZXR0eSBoYW5keSBmb3IgZW5zdXJpbmcgdGhhdCB5b3VyIGFzc2Vy
dHMgaW4gcHJvZHVjdGlvbiBjb2RlIGFyZSB0cmlnZ2VyZWQgYnkgdGhlIHJpZ2h0IGNvbmRpdGlv
bnMuCisgICogYFNDT1BFRF9UUkFDRWAgaGVscHMgeW91IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQg
b2YgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgd2hlbiBpdCBjb21lcyBmcm9tIGluc2lkZSBhIHN1Yi1y
b3V0aW5lIG9yIGxvb3AuCisgICogWW91IGNhbiBkZWNpZGUgd2hpY2ggdGVzdHMgdG8gcnVuIHVz
aW5nIG5hbWUgcGF0dGVybnMuICBUaGlzIHNhdmVzIHRpbWUgd2hlbiB5b3Ugd2FudCB0byBxdWlj
a2x5IHJlcHJvZHVjZSBhIHRlc3QgZmFpbHVyZS4KKyAgKiBHb29nbGUgVGVzdCBjYW4gZ2VuZXJh
dGUgWE1MIHRlc3QgcmVzdWx0IHJlcG9ydHMgdGhhdCBjYW4gYmUgcGFyc2VkIGJ5IHBvcHVsYXIg
Y29udGludW91cyBidWlsZCBzeXN0ZW0gbGlrZSBIdWRzb24uCisgICogU2ltcGxlIHRoaW5ncyBh
cmUgZWFzeSBpbiBHb29nbGUgVGVzdCwgd2hpbGUgaGFyZCB0aGluZ3MgYXJlIHBvc3NpYmxlOiBp
biBhZGRpdGlvbiB0byBhZHZhbmNlZCBmZWF0dXJlcyBsaWtlIFtnbG9iYWwgdGVzdCBlbnZpcm9u
bWVudHNdKFYxXzdfQWR2YW5jZWRHdWlkZS5tZCNnbG9iYWwtc2V0LXVwLWFuZC10ZWFyLWRvd24p
IGFuZCB0ZXN0cyBwYXJhbWV0ZXJpemVkIGJ5IFt2YWx1ZXNdKFYxXzdfQWR2YW5jZWRHdWlkZS5t
ZCN2YWx1ZS1wYXJhbWV0ZXJpemVkLXRlc3RzKSBvciBbdHlwZXNdKFYxXzdfQWR2YW5jZWRHdWlk
ZS5tZCN0eXBlZC10ZXN0cyksIEdvb2dsZSBUZXN0IHN1cHBvcnRzIHZhcmlvdXMgd2F5cyBmb3Ig
dGhlIHVzZXIgdG8gZXh0ZW5kIHRoZSBmcmFtZXdvcmsgLS0gaWYgR29vZ2xlIFRlc3QgZG9lc24n
dCBkbyBzb21ldGhpbmcgb3V0IG9mIHRoZSBib3gsIGNoYW5jZXMgYXJlIHRoYXQgYSB1c2VyIGNh
biBpbXBsZW1lbnQgdGhlIGZlYXR1cmUgdXNpbmcgR29vZ2xlIFRlc3QncyBwdWJsaWMgQVBJLCB3
aXRob3V0IGNoYW5naW5nIEdvb2dsZSBUZXN0IGl0c2VsZi4gIEluIHBhcnRpY3VsYXIsIHlvdSBj
YW46CisgICAgKiBleHBhbmQgeW91ciB0ZXN0aW5nIHZvY2FidWxhcnkgYnkgZGVmaW5pbmcgW2N1
c3RvbSBwcmVkaWNhdGVzXShWMV83X0FkdmFuY2VkR3VpZGUubWQjcHJlZGljYXRlLWFzc2VydGlv
bnMtZm9yLWJldHRlci1lcnJvci1tZXNzYWdlcyksCisgICAgKiB0ZWFjaCBHb29nbGUgVGVzdCBo
b3cgdG8gW3ByaW50IHlvdXIgdHlwZXNdKFYxXzdfQWR2YW5jZWRHdWlkZS5tZCN0ZWFjaGluZy1n
b29nbGUtdGVzdC1ob3ctdG8tcHJpbnQteW91ci12YWx1ZXMpLAorICAgICogZGVmaW5lIHlvdXIg
b3duIHRlc3RpbmcgbWFjcm9zIG9yIHV0aWxpdGllcyBhbmQgdmVyaWZ5IHRoZW0gdXNpbmcgR29v
Z2xlIFRlc3QncyBbU2VydmljZSBQcm92aWRlciBJbnRlcmZhY2VdKFYxXzdfQWR2YW5jZWRHdWlk
ZS5tZCNjYXRjaGluZy1mYWlsdXJlcyksIGFuZAorICAgICogcmVmbGVjdCBvbiB0aGUgdGVzdCBj
YXNlcyBvciBjaGFuZ2UgdGhlIHRlc3Qgb3V0cHV0IGZvcm1hdCBieSBpbnRlcmNlcHRpbmcgdGhl
IFt0ZXN0IGV2ZW50c10oVjFfN19BZHZhbmNlZEd1aWRlLm1kI2V4dGVuZGluZy1nb29nbGUtdGVz
dC1ieS1oYW5kbGluZy10ZXN0LWV2ZW50cykuCisKKyMjIEknbSBnZXR0aW5nIHdhcm5pbmdzIHdo
ZW4gY29tcGlsaW5nIEdvb2dsZSBUZXN0LiAgV291bGQgeW91IGZpeCB0aGVtPyAjIworCitXZSBz
dHJpdmUgdG8gbWluaW1pemUgY29tcGlsZXIgd2FybmluZ3MgR29vZ2xlIFRlc3QgZ2VuZXJhdGVz
LiAgQmVmb3JlIHJlbGVhc2luZyBhIG5ldyB2ZXJzaW9uLCB3ZSB0ZXN0IHRvIG1ha2Ugc3VyZSB0
aGF0IGl0IGRvZXNuJ3QgZ2VuZXJhdGUgd2FybmluZ3Mgd2hlbiBjb21waWxlZCB1c2luZyBpdHMg
Q01ha2Ugc2NyaXB0IG9uIFdpbmRvd3MsIExpbnV4LCBhbmQgTWFjIE9TLgorCitVbmZvcnR1bmF0
ZWx5LCB0aGlzIGRvZXNuJ3QgbWVhbiB5b3UgYXJlIGd1YXJhbnRlZWQgdG8gc2VlIG5vIHdhcm5p
bmdzIHdoZW4gY29tcGlsaW5nIEdvb2dsZSBUZXN0IGluIHlvdXIgZW52aXJvbm1lbnQ6CisKKyAg
KiBZb3UgbWF5IGJlIHVzaW5nIGEgZGlmZmVyZW50IGNvbXBpbGVyIGFzIHdlIHVzZSwgb3IgYSBk
aWZmZXJlbnQgdmVyc2lvbiBvZiB0aGUgc2FtZSBjb21waWxlci4gIFdlIGNhbm5vdCBwb3NzaWJs
eSB0ZXN0IGZvciBhbGwgY29tcGlsZXJzLgorICAqIFlvdSBtYXkgYmUgY29tcGlsaW5nIG9uIGEg
ZGlmZmVyZW50IHBsYXRmb3JtIGFzIHdlIGRvLgorICAqIFlvdXIgcHJvamVjdCBtYXkgYmUgdXNp
bmcgZGlmZmVyZW50IGNvbXBpbGVyIGZsYWdzIGFzIHdlIGRvLgorCitJdCBpcyBub3QgYWx3YXlz
IHBvc3NpYmxlIHRvIG1ha2UgR29vZ2xlIFRlc3Qgd2FybmluZy1mcmVlIGZvciBldmVyeW9uZS4g
IE9yLCBpdCBtYXkgbm90IGJlIGRlc2lyYWJsZSBpZiB0aGUgd2FybmluZyBpcyByYXJlbHkgZW5h
YmxlZCBhbmQgZml4aW5nIHRoZSB2aW9sYXRpb25zIG1ha2VzIHRoZSBjb2RlIG1vcmUgY29tcGxl
eC4KKworSWYgeW91IHNlZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZyBHb29nbGUgVGVzdCwgd2Ug
c3VnZ2VzdCB0aGF0IHlvdSB1c2UgdGhlIGAtaXN5c3RlbWAgZmxhZyAoYXNzdW1pbmcgeW91ciBh
cmUgdXNpbmcgR0NDKSB0byBtYXJrIEdvb2dsZSBUZXN0IGhlYWRlcnMgYXMgc3lzdGVtIGhlYWRl
cnMuICBUaGF0J2xsIHN1cHByZXNzIHdhcm5pbmdzIGZyb20gR29vZ2xlIFRlc3QgaGVhZGVycy4K
KworIyMgV2h5IHNob3VsZCBub3QgdGVzdCBjYXNlIG5hbWVzIGFuZCB0ZXN0IG5hbWVzIGNvbnRh
aW4gdW5kZXJzY29yZT8gIyMKKworVW5kZXJzY29yZSAoYF9gKSBpcyBzcGVjaWFsLCBhcyBDKysg
cmVzZXJ2ZXMgdGhlIGZvbGxvd2luZyB0byBiZSB1c2VkIGJ5Cit0aGUgY29tcGlsZXIgYW5kIHRo
ZSBzdGFuZGFyZCBsaWJyYXJ5OgorCisgIDEuIGFueSBpZGVudGlmaWVyIHRoYXQgc3RhcnRzIHdp
dGggYW4gYF9gIGZvbGxvd2VkIGJ5IGFuIHVwcGVyLWNhc2UgbGV0dGVyLCBhbmQKKyAgMS4gYW55
IGlkZW50aWZpZXIgdGhhdCBjb250YWluZXJzIHR3byBjb25zZWN1dGl2ZSB1bmRlcnNjb3JlcyAo
aS5lLiBgX19gKSBfYW55d2hlcmVfIGluIGl0cyBuYW1lLgorCitVc2VyIGNvZGUgaXMgX3Byb2hp
Yml0ZWRfIGZyb20gdXNpbmcgc3VjaCBpZGVudGlmaWVycy4KKworTm93IGxldCdzIGxvb2sgYXQg
d2hhdCB0aGlzIG1lYW5zIGZvciBgVEVTVGAgYW5kIGBURVNUX0ZgLgorCitDdXJyZW50bHkgYFRF
U1QoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSlgIGdlbmVyYXRlcyBhIGNsYXNzIG5hbWVkCitgVGVz
dENhc2VOYW1lX1Rlc3ROYW1lX1Rlc3RgLiAgV2hhdCBoYXBwZW5zIGlmIGBUZXN0Q2FzZU5hbWVg
IG9yIGBUZXN0TmFtZWAKK2NvbnRhaW5zIGBfYD8KKworICAxLiBJZiBgVGVzdENhc2VOYW1lYCBz
dGFydHMgd2l0aCBhbiBgX2AgZm9sbG93ZWQgYnkgYW4gdXBwZXItY2FzZSBsZXR0ZXIgKHNheSwg
YF9Gb29gKSwgd2UgZW5kIHVwIHdpdGggYF9Gb29fVGVzdE5hbWVfVGVzdGAsIHdoaWNoIGlzIHJl
c2VydmVkIGFuZCB0aHVzIGludmFsaWQuCisgIDEuIElmIGBUZXN0Q2FzZU5hbWVgIGVuZHMgd2l0
aCBhbiBgX2AgKHNheSwgYEZvb19gKSwgd2UgZ2V0IGBGb29fX1Rlc3ROYW1lX1Rlc3RgLCB3aGlj
aCBpcyBpbnZhbGlkLgorICAxLiBJZiBgVGVzdE5hbWVgIHN0YXJ0cyB3aXRoIGFuIGBfYCAoc2F5
LCBgX0JhcmApLCB3ZSBnZXQgYFRlc3RDYXNlTmFtZV9fQmFyX1Rlc3RgLCB3aGljaCBpcyBpbnZh
bGlkLgorICAxLiBJZiBgVGVzdE5hbWVgIGVuZHMgd2l0aCBhbiBgX2AgKHNheSwgYEJhcl9gKSwg
d2UgZ2V0IGBUZXN0Q2FzZU5hbWVfQmFyX19UZXN0YCwgd2hpY2ggaXMgaW52YWxpZC4KKworU28g
Y2xlYXJseSBgVGVzdENhc2VOYW1lYCBhbmQgYFRlc3ROYW1lYCBjYW5ub3Qgc3RhcnQgb3IgZW5k
IHdpdGggYF9gCisoQWN0dWFsbHksIGBUZXN0Q2FzZU5hbWVgIGNhbiBzdGFydCB3aXRoIGBfYCAt
LSBhcyBsb25nIGFzIHRoZSBgX2AgaXNuJ3QKK2ZvbGxvd2VkIGJ5IGFuIHVwcGVyLWNhc2UgbGV0
dGVyLiAgQnV0IHRoYXQncyBnZXR0aW5nIGNvbXBsaWNhdGVkLiAgU28KK2ZvciBzaW1wbGljaXR5
IHdlIGp1c3Qgc2F5IHRoYXQgaXQgY2Fubm90IHN0YXJ0IHdpdGggYF9gLikuCisKK0l0IG1heSBz
ZWVtIGZpbmUgZm9yIGBUZXN0Q2FzZU5hbWVgIGFuZCBgVGVzdE5hbWVgIHRvIGNvbnRhaW4gYF9g
IGluIHRoZQorbWlkZGxlLiAgSG93ZXZlciwgY29uc2lkZXIgdGhpczoKK2BgYAorVEVTVChUaW1l
LCBGbGllc19MaWtlX0FuX0Fycm93KSB7IC4uLiB9CitURVNUKFRpbWVfRmxpZXMsIExpa2VfQW5f
QXJyb3cpIHsgLi4uIH0KK2BgYAorCitOb3csIHRoZSB0d28gYFRFU1RgcyB3aWxsIGJvdGggZ2Vu
ZXJhdGUgdGhlIHNhbWUgY2xhc3MKKyhgVGltZV9GaWxlc19MaWtlX0FuX0Fycm93X1Rlc3RgKS4g
IFRoYXQncyBub3QgZ29vZC4KKworU28gZm9yIHNpbXBsaWNpdHksIHdlIGp1c3QgYXNrIHRoZSB1
c2VycyB0byBhdm9pZCBgX2AgaW4gYFRlc3RDYXNlTmFtZWAKK2FuZCBgVGVzdE5hbWVgLiAgVGhl
IHJ1bGUgaXMgbW9yZSBjb25zdHJhaW5pbmcgdGhhbiBuZWNlc3NhcnksIGJ1dCBpdCdzCitzaW1w
bGUgYW5kIGVhc3kgdG8gcmVtZW1iZXIuICBJdCBhbHNvIGdpdmVzIEdvb2dsZSBUZXN0IHNvbWUg
d2lnZ2xlCityb29tIGluIGNhc2UgaXRzIGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIGNoYW5nZSBp
biB0aGUgZnV0dXJlLgorCitJZiB5b3UgdmlvbGF0ZSB0aGUgcnVsZSwgdGhlcmUgbWF5IG5vdCBi
ZSBpbW1lZGlhdGVseSBjb25zZXF1ZW5jZXMsCitidXQgeW91ciB0ZXN0IG1heSAoanVzdCBtYXkp
IGJyZWFrIHdpdGggYSBuZXcgY29tcGlsZXIgKG9yIGEgbmV3Cit2ZXJzaW9uIG9mIHRoZSBjb21w
aWxlciB5b3UgYXJlIHVzaW5nKSBvciB3aXRoIGEgbmV3IHZlcnNpb24gb2YgR29vZ2xlCitUZXN0
LiAgVGhlcmVmb3JlIGl0J3MgYmVzdCB0byBmb2xsb3cgdGhlIHJ1bGUuCisKKyMjIFdoeSBpcyBp
dCBub3QgcmVjb21tZW5kZWQgdG8gaW5zdGFsbCBhIHByZS1jb21waWxlZCBjb3B5IG9mIEdvb2ds
ZSBUZXN0IChmb3IgZXhhbXBsZSwgaW50byAvdXNyL2xvY2FsKT8gIyMKKworSW4gdGhlIGVhcmx5
IGRheXMsIHdlIHNhaWQgdGhhdCB5b3UgY291bGQgaW5zdGFsbAorY29tcGlsZWQgR29vZ2xlIFRl
c3QgbGlicmFyaWVzIG9uIGAqYG5peCBzeXN0ZW1zIHVzaW5nIGBtYWtlIGluc3RhbGxgLgorVGhl
biBldmVyeSB1c2VyIG9mIHlvdXIgbWFjaGluZSBjYW4gd3JpdGUgdGVzdHMgd2l0aG91dAorcmVj
b21waWxpbmcgR29vZ2xlIFRlc3QuCisKK1RoaXMgc2VlbWVkIGxpa2UgYSBnb29kIGlkZWEsIGJ1
dCBpdCBoYXMgYQorZ290LWNoYTogZXZlcnkgdXNlciBuZWVkcyB0byBjb21waWxlIGhpcyB0ZXN0
cyB1c2luZyB0aGUgX3NhbWVfIGNvbXBpbGVyCitmbGFncyB1c2VkIHRvIGNvbXBpbGUgdGhlIGlu
c3RhbGxlZCBHb29nbGUgVGVzdCBsaWJyYXJpZXM7IG90aGVyd2lzZQoraGUgbWF5IHJ1biBpbnRv
IHVuZGVmaW5lZCBiZWhhdmlvcnMgKGkuZS4gdGhlIHRlc3RzIGNhbiBiZWhhdmUKK3N0cmFuZ2Vs
eSBhbmQgbWF5IGV2ZW4gY3Jhc2ggZm9yIG5vIG9idmlvdXMgcmVhc29ucykuCisKK1doeT8gIEJl
Y2F1c2UgQysrIGhhcyB0aGlzIHRoaW5nIGNhbGxlZCB0aGUgT25lLURlZmluaXRpb24gUnVsZTog
aWYKK3R3byBDKysgc291cmNlIGZpbGVzIGNvbnRhaW4gZGlmZmVyZW50IGRlZmluaXRpb25zIG9m
IHRoZSBzYW1lCitjbGFzcy9mdW5jdGlvbi92YXJpYWJsZSwgYW5kIHlvdSBsaW5rIHRoZW0gdG9n
ZXRoZXIsIHlvdSB2aW9sYXRlIHRoZQorcnVsZS4gIFRoZSBsaW5rZXIgbWF5IG9yIG1heSBub3Qg
Y2F0Y2ggdGhlIGVycm9yIChpbiBtYW55IGNhc2VzIGl0J3MKK25vdCByZXF1aXJlZCBieSB0aGUg
QysrIHN0YW5kYXJkIHRvIGNhdGNoIHRoZSB2aW9sYXRpb24pLiAgSWYgaXQKK2RvZXNuJ3QsIHlv
dSBnZXQgc3RyYW5nZSBydW4tdGltZSBiZWhhdmlvcnMgdGhhdCBhcmUgdW5leHBlY3RlZCBhbmQK
K2hhcmQgdG8gZGVidWcuCisKK0lmIHlvdSBjb21waWxlIEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRl
c3QgY29kZSB1c2luZyBkaWZmZXJlbnQgY29tcGlsZXIKK2ZsYWdzLCB0aGV5IG1heSBzZWUgZGlm
ZmVyZW50IGRlZmluaXRpb25zIG9mIHRoZSBzYW1lCitjbGFzcy9mdW5jdGlvbi92YXJpYWJsZSAo
ZS5nLiBkdWUgdG8gdGhlIHVzZSBvZiBgI2lmYCBpbiBHb29nbGUgVGVzdCkuCitUaGVyZWZvcmUs
IGZvciB5b3VyIHNhbml0eSwgd2UgcmVjb21tZW5kIHRvIGF2b2lkIGluc3RhbGxpbmcgcHJlLWNv
bXBpbGVkCitHb29nbGUgVGVzdCBsaWJyYXJpZXMuICBJbnN0ZWFkLCBlYWNoIHByb2plY3Qgc2hv
dWxkIGNvbXBpbGUKK0dvb2dsZSBUZXN0IGl0c2VsZiBzdWNoIHRoYXQgaXQgY2FuIGJlIHN1cmUg
dGhhdCB0aGUgc2FtZSBmbGFncyBhcmUKK3VzZWQgZm9yIGJvdGggR29vZ2xlIFRlc3QgYW5kIHRo
ZSB0ZXN0cy4KKworIyMgSG93IGRvIEkgZ2VuZXJhdGUgNjQtYml0IGJpbmFyaWVzIG9uIFdpbmRv
d3MgKHVzaW5nIFZpc3VhbCBTdHVkaW8gMjAwOCk/ICMjCisKKyhBbnN3ZXJlZCBieSBUcmV2b3Ig
Um9iaW5zb24pCisKK0xvYWQgdGhlIHN1cHBsaWVkIFZpc3VhbCBTdHVkaW8gc29sdXRpb24gZmls
ZSwgZWl0aGVyIGBtc3ZjXGd0ZXN0LW1kLnNsbmAgb3IKK2Btc3ZjXGd0ZXN0LnNsbmAuIEdvIHRo
cm91Z2ggdGhlIG1pZ3JhdGlvbiB3aXphcmQgdG8gbWlncmF0ZSB0aGUKK3NvbHV0aW9uIGFuZCBw
cm9qZWN0IGZpbGVzIHRvIFZpc3VhbCBTdHVkaW8gMjAwOC4gU2VsZWN0CitgQ29uZmlndXJhdGlv
biBNYW5hZ2VyLi4uYCBmcm9tIHRoZSBgQnVpbGRgIG1lbnUuIFNlbGVjdCBgPE5ldy4uLj5gIGZy
b20KK3RoZSBgQWN0aXZlIHNvbHV0aW9uIHBsYXRmb3JtYCBkcm9wZG93bi4gIFNlbGVjdCBgeDY0
YCBmcm9tIHRoZSBuZXcKK3BsYXRmb3JtIGRyb3Bkb3duLCBsZWF2ZSBgQ29weSBzZXR0aW5ncyBm
cm9tYCBzZXQgdG8gYFdpbjMyYCBhbmQKK2BDcmVhdGUgbmV3IHByb2plY3QgcGxhdGZvcm1zYCBj
aGVja2VkLCB0aGVuIGNsaWNrIGBPS2AuIFlvdSBub3cgaGF2ZQorYFdpbjMyYCBhbmQgYHg2NGAg
cGxhdGZvcm0gY29uZmlndXJhdGlvbnMsIHNlbGVjdGFibGUgZnJvbSB0aGUKK2BTdGFuZGFyZGAg
dG9vbGJhciwgd2hpY2ggYWxsb3cgeW91IHRvIHRvZ2dsZSBiZXR3ZWVuIGJ1aWxkaW5nIDMyLWJp
dCBvcgorNjQtYml0IGJpbmFyaWVzIChvciBib3RoIGF0IG9uY2UgdXNpbmcgQmF0Y2ggQnVpbGQp
LgorCitJbiBvcmRlciB0byBwcmV2ZW50IGJ1aWxkIG91dHB1dCBmaWxlcyBmcm9tIG92ZXJ3cml0
aW5nIG9uZSBhbm90aGVyLAoreW91J2xsIG5lZWQgdG8gY2hhbmdlIHRoZSBgSW50ZXJtZWRpYXRl
IERpcmVjdG9yeWAgc2V0dGluZ3MgZm9yIHRoZQorbmV3bHkgY3JlYXRlZCBwbGF0Zm9ybSBjb25m
aWd1cmF0aW9uIGFjcm9zcyBhbGwgdGhlIHByb2plY3RzLiBUbyBkbwordGhpcywgbXVsdGktc2Vs
ZWN0IChlLmcuIHVzaW5nIHNoaWZ0LWNsaWNrKSBhbGwgcHJvamVjdHMgKGJ1dCBub3QgdGhlCitz
b2x1dGlvbikgaW4gdGhlIGBTb2x1dGlvbiBFeHBsb3JlcmAuIFJpZ2h0LWNsaWNrIG9uZSBvZiB0
aGVtIGFuZAorc2VsZWN0IGBQcm9wZXJ0aWVzYC4gSW4gdGhlIGxlZnQgcGFuZSwgc2VsZWN0IGBD
b25maWd1cmF0aW9uIFByb3BlcnRpZXNgLAorYW5kIGZyb20gdGhlIGBDb25maWd1cmF0aW9uYCBk
cm9wZG93biwgc2VsZWN0IGBBbGwgQ29uZmlndXJhdGlvbnNgLgorTWFrZSBzdXJlIHRoZSBzZWxl
Y3RlZCBwbGF0Zm9ybSBpcyBgeDY0YC4gRm9yIHRoZQorYEludGVybWVkaWF0ZSBEaXJlY3Rvcnlg
IHNldHRpbmcsIGNoYW5nZSB0aGUgdmFsdWUgZnJvbQorYCQoUGxhdGZvcm1OYW1lKVwkKENvbmZp
Z3VyYXRpb25OYW1lKWAgdG8KK2AkKE91dERpcilcJChQcm9qZWN0TmFtZSlgLiBDbGljayBgT0tg
IGFuZCB0aGVuIGJ1aWxkIHRoZQorc29sdXRpb24uIFdoZW4gdGhlIGJ1aWxkIGlzIGNvbXBsZXRl
LCB0aGUgNjQtYml0IGJpbmFyaWVzIHdpbGwgYmUgaW4KK3RoZSBgbXN2Y1x4NjRcRGVidWdgIGRp
cmVjdG9yeS4KKworIyMgQ2FuIEkgdXNlIEdvb2dsZSBUZXN0IG9uIE1pbkdXPyAjIworCitXZSBo
YXZlbid0IHRlc3RlZCB0aGlzIG91cnNlbHZlcywgYnV0IFBlciBBYnJhaGFtc2VuIHJlcG9ydGVk
IHRoYXQgaGUKK3dhcyBhYmxlIHRvIGNvbXBpbGUgYW5kIGluc3RhbGwgR29vZ2xlIFRlc3Qgc3Vj
Y2Vzc2Z1bGx5IHdoZW4gdXNpbmcKK01pbkdXIGZyb20gQ3lnd2luLiAgWW91J2xsIG5lZWQgdG8g
Y29uZmlndXJlIGl0IHdpdGg6CisKK2BQQVRIL1RPL2NvbmZpZ3VyZSBDQz0iZ2NjIC1tbm8tY3ln
d2luIiBDWFg9ImcrKyAtbW5vLWN5Z3dpbiJgCisKK1lvdSBzaG91bGQgYmUgYWJsZSB0byByZXBs
YWNlIHRoZSBgLW1uby1jeWd3aW5gIG9wdGlvbiB3aXRoIGRpcmVjdCBsaW5rcwordG8gdGhlIHJl
YWwgTWluR1cgYmluYXJpZXMsIGJ1dCB3ZSBoYXZlbid0IHRyaWVkIHRoYXQuCisKK0NhdmVhdHM6
CisKKyAgKiBUaGVyZSBhcmUgbWFueSB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZy4KKyAgKiBgbWFr
ZSBjaGVja2Agd2lsbCBwcm9kdWNlIHNvbWUgZXJyb3JzIGFzIG5vdCBhbGwgdGVzdHMgZm9yIEdv
b2dsZSBUZXN0IGl0c2VsZiBhcmUgY29tcGF0aWJsZSB3aXRoIE1pbkdXLgorCitXZSBhbHNvIGhh
dmUgcmVwb3J0cyBvbiBzdWNjZXNzZnVsIGNyb3NzIGNvbXBpbGF0aW9uIG9mIEdvb2dsZSBUZXN0
CitNaW5HVyBiaW5hcmllcyBvbiBMaW51eCB1c2luZworW3RoZXNlIGluc3RydWN0aW9uc10oaHR0
cDovL3dpa2kud3h3aWRnZXRzLm9yZy9Dcm9zcy1Db21waWxpbmdfVW5kZXJfTGludXgjQ3Jvc3Mt
Y29tcGlsaW5nX3VuZGVyX0xpbnV4X2Zvcl9NU19XaW5kb3dzKQorb24gdGhlIFd4V2lkZ2V0cyBz
aXRlLgorCitQbGVhc2UgY29udGFjdCBgZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMu
Y29tYCBpZiB5b3UgYXJlCitpbnRlcmVzdGVkIGluIGltcHJvdmluZyB0aGUgc3VwcG9ydCBmb3Ig
TWluR1cuCisKKyMjIFdoeSBkb2VzIEdvb2dsZSBUZXN0IHN1cHBvcnQgRVhQRUNUXF9FUShOVUxM
LCBwdHIpIGFuZCBBU1NFUlRcX0VRKE5VTEwsIHB0cikgYnV0IG5vdCBFWFBFQ1RcX05FKE5VTEws
IHB0cikgYW5kIEFTU0VSVFxfTkUoTlVMTCwgcHRyKT8gIyMKKworRHVlIHRvIHNvbWUgcGVjdWxp
YXJpdHkgb2YgQysrLCBpdCByZXF1aXJlcyBzb21lIG5vbi10cml2aWFsIHRlbXBsYXRlCittZXRh
IHByb2dyYW1taW5nIHRyaWNrcyB0byBzdXBwb3J0IHVzaW5nIGBOVUxMYCBhcyBhbiBhcmd1bWVu
dCBvZiB0aGUKK2BFWFBFQ1RfWFgoKWAgYW5kIGBBU1NFUlRfWFgoKWAgbWFjcm9zLiBUaGVyZWZv
cmUgd2Ugb25seSBkbyBpdCB3aGVyZQoraXQncyBtb3N0IG5lZWRlZCAob3RoZXJ3aXNlIHdlIG1h
a2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIEdvb2dsZSBUZXN0CitoYXJkZXIgdG8gbWFpbnRhaW4g
YW5kIG1vcmUgZXJyb3ItcHJvbmUgdGhhbiBuZWNlc3NhcnkpLgorCitUaGUgYEVYUEVDVF9FUSgp
YCBtYWNybyB0YWtlcyB0aGUgX2V4cGVjdGVkXyB2YWx1ZSBhcyBpdHMgZmlyc3QKK2FyZ3VtZW50
IGFuZCB0aGUgX2FjdHVhbF8gdmFsdWUgYXMgdGhlIHNlY29uZC4gSXQncyByZWFzb25hYmxlIHRo
YXQKK3NvbWVvbmUgd2FudHMgdG8gd3JpdGUgYEVYUEVDVF9FUShOVUxMLCBzb21lX2V4cHJlc3Np
b24pYCwgYW5kIHRoaXMKK2luZGVlZCB3YXMgcmVxdWVzdGVkIHNldmVyYWwgdGltZXMuIFRoZXJl
Zm9yZSB3ZSBpbXBsZW1lbnRlZCBpdC4KKworVGhlIG5lZWQgZm9yIGBFWFBFQ1RfTkUoTlVMTCwg
cHRyKWAgaXNuJ3QgbmVhcmx5IGFzIHN0cm9uZy4gV2hlbiB0aGUKK2Fzc2VydGlvbiBmYWlscywg
eW91IGFscmVhZHkga25vdyB0aGF0IGBwdHJgIG11c3QgYmUgYE5VTExgLCBzbyBpdAorZG9lc24n
dCBhZGQgYW55IGluZm9ybWF0aW9uIHRvIHByaW50IHB0ciBpbiB0aGlzIGNhc2UuIFRoYXQgbWVh
bnMKK2BFWFBFQ1RfVFJVRShwdHIgIT0gTlVMTClgIHdvcmtzIGp1c3QgYXMgd2VsbC4KKworSWYg
d2Ugd2VyZSB0byBzdXBwb3J0IGBFWFBFQ1RfTkUoTlVMTCwgcHRyKWAsIGZvciBjb25zaXN0ZW5j
eSB3ZSdsbAoraGF2ZSB0byBzdXBwb3J0IGBFWFBFQ1RfTkUocHRyLCBOVUxMKWAgYXMgd2VsbCwg
YXMgdW5saWtlIGBFWFBFQ1RfRVFgLAord2UgZG9uJ3QgaGF2ZSBhIGNvbnZlbnRpb24gb24gdGhl
IG9yZGVyIG9mIHRoZSB0d28gYXJndW1lbnRzIGZvcgorYEVYUEVDVF9ORWAuIFRoaXMgbWVhbnMg
dXNpbmcgdGhlIHRlbXBsYXRlIG1ldGEgcHJvZ3JhbW1pbmcgdHJpY2tzCit0d2ljZSBpbiB0aGUg
aW1wbGVtZW50YXRpb24sIG1ha2luZyBpdCBldmVuIGhhcmRlciB0byB1bmRlcnN0YW5kIGFuZAor
bWFpbnRhaW4uIFdlIGJlbGlldmUgdGhlIGJlbmVmaXQgZG9lc24ndCBqdXN0aWZ5IHRoZSBjb3N0
LgorCitGaW5hbGx5LCB3aXRoIHRoZSBncm93dGggb2YgR29vZ2xlIE1vY2sncyBbbWF0Y2hlcl0o
Li4vLi4vQ29va0Jvb2subWQjdXNpbmctbWF0Y2hlcnMtaW4tZ29vZ2xlLXRlc3QtYXNzZXJ0aW9u
cykgbGlicmFyeSwgd2UgYXJlCitlbmNvdXJhZ2luZyBwZW9wbGUgdG8gdXNlIHRoZSB1bmlmaWVk
IGBFWFBFQ1RfVEhBVCh2YWx1ZSwgbWF0Y2hlcilgCitzeW50YXggbW9yZSBvZnRlbiBpbiB0ZXN0
cy4gT25lIHNpZ25pZmljYW50IGFkdmFudGFnZSBvZiB0aGUgbWF0Y2hlcgorYXBwcm9hY2ggaXMg
dGhhdCBtYXRjaGVycyBjYW4gYmUgZWFzaWx5IGNvbWJpbmVkIHRvIGZvcm0gbmV3IG1hdGNoZXJz
LAord2hpbGUgdGhlIGBFWFBFQ1RfTkVgLCBldGMsIG1hY3JvcyBjYW5ub3QgYmUgZWFzaWx5Citj
b21iaW5lZC4gVGhlcmVmb3JlIHdlIHdhbnQgdG8gaW52ZXN0IG1vcmUgaW4gdGhlIG1hdGNoZXJz
IHRoYW4gaW4gdGhlCitgRVhQRUNUX1hYKClgIG1hY3Jvcy4KKworIyMgRG9lcyBHb29nbGUgVGVz
dCBzdXBwb3J0IHJ1bm5pbmcgdGVzdHMgaW4gcGFyYWxsZWw/ICMjCisKK1Rlc3QgcnVubmVycyB0
ZW5kIHRvIGJlIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBidWlsZC90ZXN0CitlbnZpcm9ubWVu
dCwgYW5kIEdvb2dsZSBUZXN0IGRvZXNuJ3QgdHJ5IHRvIHNvbHZlIHRoZSBwcm9ibGVtIG9mCity
dW5uaW5nIHRlc3RzIGluIHBhcmFsbGVsLiAgSW5zdGVhZCwgd2UgdHJpZWQgdG8gbWFrZSBHb29n
bGUgVGVzdCB3b3JrCituaWNlbHkgd2l0aCB0ZXN0IHJ1bm5lcnMuICBGb3IgZXhhbXBsZSwgR29v
Z2xlIFRlc3QncyBYTUwgcmVwb3J0Citjb250YWlucyB0aGUgdGltZSBzcGVudCBvbiBlYWNoIHRl
c3QsIGFuZCBpdHMgYGd0ZXN0X2xpc3RfdGVzdHNgIGFuZAorYGd0ZXN0X2ZpbHRlcmAgZmxhZ3Mg
Y2FuIGJlIHVzZWQgZm9yIHNwbGl0dGluZyB0aGUgZXhlY3V0aW9uIG9mIHRlc3QKK21ldGhvZHMg
aW50byBtdWx0aXBsZSBwcm9jZXNzZXMuICBUaGVzZSBmdW5jdGlvbmFsaXRpZXMgY2FuIGhlbHAg
dGhlCit0ZXN0IHJ1bm5lciBydW4gdGhlIHRlc3RzIGluIHBhcmFsbGVsLgorCisjIyBXaHkgZG9u
J3QgR29vZ2xlIFRlc3QgcnVuIHRoZSB0ZXN0cyBpbiBkaWZmZXJlbnQgdGhyZWFkcyB0byBzcGVl
ZCB0aGluZ3MgdXA/ICMjCisKK0l0J3MgZGlmZmljdWx0IHRvIHdyaXRlIHRocmVhZC1zYWZlIGNv
ZGUuICBNb3N0IHRlc3RzIGFyZSBub3Qgd3JpdHRlbgord2l0aCB0aHJlYWQtc2FmZXR5IGluIG1p
bmQsIGFuZCB0aHVzIG1heSBub3Qgd29yayBjb3JyZWN0bHkgaW4gYQorbXVsdGktdGhyZWFkZWQg
c2V0dGluZy4KKworSWYgeW91IHRoaW5rIGFib3V0IGl0LCBpdCdzIGFscmVhZHkgaGFyZCB0byBt
YWtlIHlvdXIgY29kZSB3b3JrIHdoZW4KK3lvdSBrbm93IHdoYXQgb3RoZXIgdGhyZWFkcyBhcmUg
ZG9pbmcuICBJdCdzIG11Y2ggaGFyZGVyLCBhbmQKK3NvbWV0aW1lcyBldmVuIGltcG9zc2libGUs
IHRvIG1ha2UgeW91ciBjb2RlIHdvcmsgd2hlbiB5b3UgZG9uJ3Qga25vdword2hhdCBvdGhlciB0
aHJlYWRzIGFyZSBkb2luZyAocmVtZW1iZXIgdGhhdCB0ZXN0IG1ldGhvZHMgY2FuIGJlIGFkZGVk
LAorZGVsZXRlZCwgb3IgbW9kaWZpZWQgYWZ0ZXIgeW91ciB0ZXN0IHdhcyB3cml0dGVuKS4gIElm
IHlvdSB3YW50IHRvIHJ1bgordGhlIHRlc3RzIGluIHBhcmFsbGVsLCB5b3UnZCBiZXR0ZXIgcnVu
IHRoZW0gaW4gZGlmZmVyZW50IHByb2Nlc3Nlcy4KKworIyMgV2h5IGFyZW4ndCBHb29nbGUgVGVz
dCBhc3NlcnRpb25zIGltcGxlbWVudGVkIHVzaW5nIGV4Y2VwdGlvbnM/ICMjCisKK091ciBvcmln
aW5hbCBtb3RpdmF0aW9uIHdhcyB0byBiZSBhYmxlIHRvIHVzZSBHb29nbGUgVGVzdCBpbiBwcm9q
ZWN0cwordGhhdCBkaXNhYmxlIGV4Y2VwdGlvbnMuICBMYXRlciB3ZSByZWFsaXplZCBzb21lIGFk
ZGl0aW9uYWwgYmVuZWZpdHMKK29mIHRoaXMgYXBwcm9hY2g6CisKKyAgMS4gVGhyb3dpbmcgaW4g
YSBkZXN0cnVjdG9yIGlzIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBDKysuICBOb3QgdXNpbmcgZXhj
ZXB0aW9ucyBtZWFucyBHb29nbGUgVGVzdCdzIGFzc2VydGlvbnMgYXJlIHNhZmUgdG8gdXNlIGlu
IGRlc3RydWN0b3JzLgorICAxLiBUaGUgYEVYUEVDVF8qYCBmYW1pbHkgb2YgbWFjcm9zIHdpbGwg
Y29udGludWUgZXZlbiBhZnRlciBhIGZhaWx1cmUsIGFsbG93aW5nIG11bHRpcGxlIGZhaWx1cmVz
IGluIGEgYFRFU1RgIHRvIGJlIHJlcG9ydGVkIGluIGEgc2luZ2xlIHJ1bi4gVGhpcyBpcyBhIHBv
cHVsYXIgZmVhdHVyZSwgYXMgaW4gQysrIHRoZSBlZGl0LWNvbXBpbGUtdGVzdCBjeWNsZSBpcyB1
c3VhbGx5IHF1aXRlIGxvbmcgYW5kIGJlaW5nIGFibGUgdG8gZml4aW5nIG1vcmUgdGhhbiBvbmUg
dGhpbmcgYXQgYSB0aW1lIGlzIGEgYmxlc3NpbmcuCisgIDEuIElmIGFzc2VydGlvbnMgYXJlIGlt
cGxlbWVudGVkIHVzaW5nIGV4Y2VwdGlvbnMsIGEgdGVzdCBtYXkgZmFsc2VseSBpZ25vcmUgYSBm
YWlsdXJlIGlmIGl0J3MgY2F1Z2h0IGJ5IHVzZXIgY29kZToKK2BgYAordHJ5IHsgLi4uIEFTU0VS
VF9UUlVFKC4uLikgLi4uIH0KK2NhdGNoICguLi4pIHsgLi4uIH0KK2BgYAorVGhlIGFib3ZlIGNv
ZGUgd2lsbCBwYXNzIGV2ZW4gaWYgdGhlIGBBU1NFUlRfVFJVRWAgdGhyb3dzLiAgV2hpbGUgaXQn
cyB1bmxpa2VseSBmb3Igc29tZW9uZSB0byB3cml0ZSB0aGlzIGluIGEgdGVzdCwgaXQncyBwb3Nz
aWJsZSB0byBydW4gaW50byB0aGlzIHBhdHRlcm4gd2hlbiB5b3Ugd3JpdGUgYXNzZXJ0aW9ucyBp
biBjYWxsYmFja3MgdGhhdCBhcmUgY2FsbGVkIGJ5IHRoZSBjb2RlIHVuZGVyIHRlc3QuCisKK1Ro
ZSBkb3duc2lkZSBvZiBub3QgdXNpbmcgZXhjZXB0aW9ucyBpcyB0aGF0IGBBU1NFUlRfKmAgKGlt
cGxlbWVudGVkCit1c2luZyBgcmV0dXJuYCkgd2lsbCBvbmx5IGFib3J0IHRoZSBjdXJyZW50IGZ1
bmN0aW9uLCBub3QgdGhlIGN1cnJlbnQKK2BURVNUYC4KKworIyMgV2h5IGRvIHdlIHVzZSB0d28g
ZGlmZmVyZW50IG1hY3JvcyBmb3IgdGVzdHMgd2l0aCBhbmQgd2l0aG91dCBmaXh0dXJlcz8gIyMK
KworVW5mb3J0dW5hdGVseSwgQysrJ3MgbWFjcm8gc3lzdGVtIGRvZXNuJ3QgYWxsb3cgdXMgdG8g
dXNlIHRoZSBzYW1lCittYWNybyBmb3IgYm90aCBjYXNlcy4gIE9uZSBwb3NzaWJpbGl0eSBpcyB0
byBwcm92aWRlIG9ubHkgb25lIG1hY3JvCitmb3IgdGVzdHMgd2l0aCBmaXh0dXJlcywgYW5kIHJl
cXVpcmUgdGhlIHVzZXIgdG8gZGVmaW5lIGFuIGVtcHR5CitmaXh0dXJlIHNvbWV0aW1lczoKKwor
YGBgCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKworVEVTVF9G
KEZvb1Rlc3QsIERvZXNUaGlzKSB7IC4uLiB9CitgYGAKK29yCitgYGAKK3R5cGVkZWYgOjp0ZXN0
aW5nOjpUZXN0IEZvb1Rlc3Q7CisKK1RFU1RfRihGb29UZXN0LCBEb2VzVGhhdCkgeyAuLi4gfQor
YGBgCisKK1lldCwgbWFueSBwZW9wbGUgdGhpbmsgdGhpcyBpcyBvbmUgbGluZSB0b28gbWFueS4g
Oi0pIE91ciBnb2FsIHdhcyB0bworbWFrZSBpdCByZWFsbHkgZWFzeSB0byB3cml0ZSB0ZXN0cywg
c28gd2UgdHJpZWQgdG8gbWFrZSBzaW1wbGUgdGVzdHMKK3RyaXZpYWwgdG8gY3JlYXRlLiAgVGhh
dCBtZWFucyB1c2luZyBhIHNlcGFyYXRlIG1hY3JvIGZvciBzdWNoIHRlc3RzLgorCitXZSB0aGlu
ayBuZWl0aGVyIGFwcHJvYWNoIGlzIGlkZWFsLCB5ZXQgZWl0aGVyIG9mIHRoZW0gaXMgcmVhc29u
YWJsZS4KK0luIHRoZSBlbmQsIGl0IHByb2JhYmx5IGRvZXNuJ3QgbWF0dGVyIG11Y2ggZWl0aGVy
IHdheS4KKworIyMgV2h5IGRvbid0IHdlIHVzZSBzdHJ1Y3RzIGFzIHRlc3QgZml4dHVyZXM/ICMj
CisKK1dlIGxpa2UgdG8gdXNlIHN0cnVjdHMgb25seSB3aGVuIHJlcHJlc2VudGluZyBwYXNzaXZl
IGRhdGEuICBUaGlzCitkaXN0aW5jdGlvbiBiZXR3ZWVuIHN0cnVjdHMgYW5kIGNsYXNzZXMgaXMg
Z29vZCBmb3IgZG9jdW1lbnRpbmcgdGhlCitpbnRlbnQgb2YgdGhlIGNvZGUncyBhdXRob3IuICBT
aW5jZSB0ZXN0IGZpeHR1cmVzIGhhdmUgbG9naWMgbGlrZQorYFNldFVwKClgIGFuZCBgVGVhckRv
d24oKWAsIHRoZXkgYXJlIGJldHRlciBkZWZpbmVkIGFzIGNsYXNzZXMuCisKKyMjIFdoeSBhcmUg
ZGVhdGggdGVzdHMgaW1wbGVtZW50ZWQgYXMgYXNzZXJ0aW9ucyBpbnN0ZWFkIG9mIHVzaW5nIGEg
dGVzdCBydW5uZXI/ICMjCisKK091ciBnb2FsIHdhcyB0byBtYWtlIGRlYXRoIHRlc3RzIGFzIGNv
bnZlbmllbnQgZm9yIGEgdXNlciBhcyBDKysKK3Bvc3NpYmx5IGFsbG93cy4gIEluIHBhcnRpY3Vs
YXI6CisKKyAgKiBUaGUgcnVubmVyLXN0eWxlIHJlcXVpcmVzIHRvIHNwbGl0IHRoZSBpbmZvcm1h
dGlvbiBpbnRvIHR3byBwaWVjZXM6IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBkZWF0aCB0ZXN0IGl0
c2VsZiwgYW5kIHRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgcnVubmVyIG9uIGhvdyB0byBydW4g
dGhlIGRlYXRoIHRlc3QgYW5kIHdoYXQgdG8gZXhwZWN0LiAgVGhlIGRlYXRoIHRlc3Qgd291bGQg
YmUgd3JpdHRlbiBpbiBDKyssIHdoaWxlIHRoZSBydW5uZXIgc3BlYyBtYXkgb3IgbWF5IG5vdCBi
ZS4gIEEgdXNlciBuZWVkcyB0byBjYXJlZnVsbHkga2VlcCB0aGUgdHdvIGluIHN5bmMuIGBBU1NF
UlRfREVBVEgoc3RhdGVtZW50LCBleHBlY3RlZF9tZXNzYWdlKWAgc3BlY2lmaWVzIGFsbCBuZWNl
c3NhcnkgaW5mb3JtYXRpb24gaW4gb25lIHBsYWNlLCBpbiBvbmUgbGFuZ3VhZ2UsIHdpdGhvdXQg
Ym9pbGVycGxhdGUgY29kZS4gSXQgaXMgdmVyeSBkZWNsYXJhdGl2ZS4KKyAgKiBgQVNTRVJUX0RF
QVRIYCBoYXMgYSBzaW1pbGFyIHN5bnRheCBhbmQgZXJyb3ItcmVwb3J0aW5nIHNlbWFudGljcyBh
cyBvdGhlciBHb29nbGUgVGVzdCBhc3NlcnRpb25zLCBhbmQgdGh1cyBpcyBlYXN5IHRvIGxlYXJu
LgorICAqIGBBU1NFUlRfREVBVEhgIGNhbiBiZSBtaXhlZCB3aXRoIG90aGVyIGFzc2VydGlvbnMg
YW5kIG90aGVyIGxvZ2ljIGF0IHlvdXIgd2lsbC4gIFlvdSBhcmUgbm90IGxpbWl0ZWQgdG8gb25l
IGRlYXRoIHRlc3QgcGVyIHRlc3QgbWV0aG9kLiBGb3IgZXhhbXBsZSwgeW91IGNhbiB3cml0ZSBz
b21ldGhpbmcgbGlrZToKK2BgYAorICAgIGlmIChGb29Db25kaXRpb24oKSkgeworICAgICAgQVNT
RVJUX0RFQVRIKEJhcigpLCAiYmxhaCIpOworICAgIH0gZWxzZSB7CisgICAgICBBU1NFUlRfRVEo
NSwgQmFyKCkpOworICAgIH0KK2BgYAorSWYgeW91IHByZWZlciBvbmUgZGVhdGggdGVzdCBwZXIg
dGVzdCBtZXRob2QsIHlvdSBjYW4gd3JpdGUgeW91ciB0ZXN0cyBpbiB0aGF0IHN0eWxlIHRvbywg
YnV0IHdlIGRvbid0IHdhbnQgdG8gaW1wb3NlIHRoYXQgb24gdGhlIHVzZXJzLiAgVGhlIGZld2Vy
IGFydGlmaWNpYWwgbGltaXRhdGlvbnMgdGhlIGJldHRlci4KKyAgKiBgQVNTRVJUX0RFQVRIYCBj
YW4gcmVmZXJlbmNlIGxvY2FsIHZhcmlhYmxlcyBpbiB0aGUgY3VycmVudCBmdW5jdGlvbiwgYW5k
IHlvdSBjYW4gZGVjaWRlIGhvdyBtYW55IGRlYXRoIHRlc3RzIHlvdSB3YW50IGJhc2VkIG9uIHJ1
bi10aW1lIGluZm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsCitgYGAKKyAgICBjb25zdCBpbnQgY291
bnQgPSBHZXRDb3VudCgpOyAgLy8gT25seSBrbm93biBhdCBydW4gdGltZS4KKyAgICBmb3IgKGlu
dCBpID0gMTsgaSA8PSBjb3VudDsgaSsrKSB7CisgICAgICBBU1NFUlRfREVBVEgoeworICAgICAg
ICBkb3VibGUqIGJ1ZmZlciA9IG5ldyBkb3VibGVbaV07CisgICAgICAgIC4uLiBpbml0aWFsaXpl
cyBidWZmZXIgLi4uCisgICAgICAgIEZvbyhidWZmZXIsIGkpCisgICAgICB9LCAiYmxhaCBibGFo
Iik7CisgICAgfQorYGBgCitUaGUgcnVubmVyLWJhc2VkIGFwcHJvYWNoIHRlbmRzIHRvIGJlIG1v
cmUgc3RhdGljIGFuZCBsZXNzIGZsZXhpYmxlLCBvciByZXF1aXJlcyBtb3JlIHVzZXIgZWZmb3J0
IHRvIGdldCB0aGlzIGtpbmQgb2YgZmxleGliaWxpdHkuCisKK0Fub3RoZXIgaW50ZXJlc3Rpbmcg
dGhpbmcgYWJvdXQgYEFTU0VSVF9ERUFUSGAgaXMgdGhhdCBpdCBjYWxscyBgZm9yaygpYAordG8g
Y3JlYXRlIGEgY2hpbGQgcHJvY2VzcyB0byBydW4gdGhlIGRlYXRoIHRlc3QuICBUaGlzIGlzIGxp
Z2h0ZW5pbmcKK2Zhc3QsIGFzIGBmb3JrKClgIHVzZXMgY29weS1vbi13cml0ZSBwYWdlcyBhbmQg
aW5jdXJzIGFsbW9zdCB6ZXJvCitvdmVyaGVhZCwgYW5kIHRoZSBjaGlsZCBwcm9jZXNzIHN0YXJ0
cyBmcm9tIHRoZSB1c2VyLXN1cHBsaWVkCitzdGF0ZW1lbnQgZGlyZWN0bHksIHNraXBwaW5nIGFs
bCBnbG9iYWwgYW5kIGxvY2FsIGluaXRpYWxpemF0aW9uIGFuZAorYW55IGNvZGUgbGVhZGluZyB0
byB0aGUgZ2l2ZW4gc3RhdGVtZW50LiAgSWYgeW91IGxhdW5jaCB0aGUgY2hpbGQKK3Byb2Nlc3Mg
ZnJvbSBzY3JhdGNoLCBpdCBjYW4gdGFrZSBzZWNvbmRzIGp1c3QgdG8gbG9hZCBldmVyeXRoaW5n
IGFuZAorc3RhcnQgcnVubmluZyBpZiB0aGUgdGVzdCBsaW5rcyB0byBtYW55IGxpYnJhcmllcyBk
eW5hbWljYWxseS4KKworIyMgTXkgZGVhdGggdGVzdCBtb2RpZmllcyBzb21lIHN0YXRlLCBidXQg
dGhlIGNoYW5nZSBzZWVtcyBsb3N0IGFmdGVyIHRoZSBkZWF0aCB0ZXN0IGZpbmlzaGVzLiBXaHk/
ICMjCisKK0RlYXRoIHRlc3RzIChgRVhQRUNUX0RFQVRIYCwgZXRjKSBhcmUgZXhlY3V0ZWQgaW4g
YSBzdWItcHJvY2VzcyBzLnQuIHRoZQorZXhwZWN0ZWQgY3Jhc2ggd29uJ3Qga2lsbCB0aGUgdGVz
dCBwcm9ncmFtIChpLmUuIHRoZSBwYXJlbnQgcHJvY2VzcykuIEFzIGEKK3Jlc3VsdCwgYW55IGlu
LW1lbW9yeSBzaWRlIGVmZmVjdHMgdGhleSBpbmN1ciBhcmUgb2JzZXJ2YWJsZSBpbiB0aGVpcgor
cmVzcGVjdGl2ZSBzdWItcHJvY2Vzc2VzLCBidXQgbm90IGluIHRoZSBwYXJlbnQgcHJvY2Vzcy4g
WW91IGNhbiB0aGluayBvZiB0aGVtCithcyBydW5uaW5nIGluIGEgcGFyYWxsZWwgdW5pdmVyc2Us
IG1vcmUgb3IgbGVzcy4KKworIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCAidW5kZWZp
bmVkIHJlZmVyZW5jZXMiIHRvIHNvbWUgc3RhdGljIGNvbnN0IG1lbWJlciB2YXJpYWJsZXMsIGJ1
dCBJIGRpZCBkZWZpbmUgdGhlbSBpbiB0aGUgY2xhc3MgYm9keS4gV2hhdCdzIHdyb25nPyAjIwor
CitJZiB5b3VyIGNsYXNzIGhhcyBhIHN0YXRpYyBkYXRhIG1lbWJlcjoKKworYGBgCisvLyBmb28u
aAorY2xhc3MgRm9vIHsKKyAgLi4uCisgIHN0YXRpYyBjb25zdCBpbnQga0JhciA9IDEwMDsKK307
CitgYGAKKworWW91IGFsc28gbmVlZCB0byBkZWZpbmUgaXQgX291dHNpZGVfIG9mIHRoZSBjbGFz
cyBib2R5IGluIGBmb28uY2NgOgorCitgYGAKK2NvbnN0IGludCBGb286OmtCYXI7ICAvLyBObyBp
bml0aWFsaXplciBoZXJlLgorYGBgCisKK090aGVyd2lzZSB5b3VyIGNvZGUgaXMgKippbnZhbGlk
IEMrKyoqLCBhbmQgbWF5IGJyZWFrIGluIHVuZXhwZWN0ZWQgd2F5cy4gSW4KK3BhcnRpY3VsYXIs
IHVzaW5nIGl0IGluIEdvb2dsZSBUZXN0IGNvbXBhcmlzb24gYXNzZXJ0aW9ucyAoYEVYUEVDVF9F
UWAsIGV0YykKK3dpbGwgZ2VuZXJhdGUgYW4gInVuZGVmaW5lZCByZWZlcmVuY2UiIGxpbmtlciBl
cnJvci4KKworIyMgSSBoYXZlIGFuIGludGVyZmFjZSB0aGF0IGhhcyBzZXZlcmFsIGltcGxlbWVu
dGF0aW9ucy4gQ2FuIEkgd3JpdGUgYSBzZXQgb2YgdGVzdHMgb25jZSBhbmQgcmVwZWF0IHRoZW0g
b3ZlciBhbGwgdGhlIGltcGxlbWVudGF0aW9ucz8gIyMKKworR29vZ2xlIFRlc3QgZG9lc24ndCB5
ZXQgaGF2ZSBnb29kIHN1cHBvcnQgZm9yIHRoaXMga2luZCBvZiB0ZXN0cywgb3IKK2RhdGEtZHJp
dmVuIHRlc3RzIGluIGdlbmVyYWwuIFdlIGhvcGUgdG8gYmUgYWJsZSB0byBtYWtlIGltcHJvdmVt
ZW50cyBpbiB0aGlzCithcmVhIHNvb24uCisKKyMjIENhbiBJIGRlcml2ZSBhIHRlc3QgZml4dHVy
ZSBmcm9tIGFub3RoZXI/ICMjCisKK1llcy4KKworRWFjaCB0ZXN0IGZpeHR1cmUgaGFzIGEgY29y
cmVzcG9uZGluZyBhbmQgc2FtZSBuYW1lZCB0ZXN0IGNhc2UuIFRoaXMgbWVhbnMgb25seQorb25l
IHRlc3QgY2FzZSBjYW4gdXNlIGEgcGFydGljdWxhciBmaXh0dXJlLiBTb21ldGltZXMsIGhvd2V2
ZXIsIG11bHRpcGxlIHRlc3QKK2Nhc2VzIG1heSB3YW50IHRvIHVzZSB0aGUgc2FtZSBvciBzbGln
aHRseSBkaWZmZXJlbnQgZml4dHVyZXMuIEZvciBleGFtcGxlLCB5b3UKK21heSB3YW50IHRvIG1h
a2Ugc3VyZSB0aGF0IGFsbCBvZiBhIEdVSSBsaWJyYXJ5J3MgdGVzdCBjYXNlcyBkb24ndCBsZWFr
CitpbXBvcnRhbnQgc3lzdGVtIHJlc291cmNlcyBsaWtlIGZvbnRzIGFuZCBicnVzaGVzLgorCitJ
biBHb29nbGUgVGVzdCwgeW91IHNoYXJlIGEgZml4dHVyZSBhbW9uZyB0ZXN0IGNhc2VzIGJ5IHB1
dHRpbmcgdGhlIHNoYXJlZAorbG9naWMgaW4gYSBiYXNlIHRlc3QgZml4dHVyZSwgdGhlbiBkZXJp
dmluZyBmcm9tIHRoYXQgYmFzZSBhIHNlcGFyYXRlIGZpeHR1cmUKK2ZvciBlYWNoIHRlc3QgY2Fz
ZSB0aGF0IHdhbnRzIHRvIHVzZSB0aGlzIGNvbW1vbiBsb2dpYy4gWW91IHRoZW4gdXNlIGBURVNU
X0YoKWAKK3RvIHdyaXRlIHRlc3RzIHVzaW5nIGVhY2ggZGVyaXZlZCBmaXh0dXJlLgorCitUeXBp
Y2FsbHksIHlvdXIgY29kZSBsb29rcyBsaWtlIHRoaXM6CisKK2BgYAorLy8gRGVmaW5lcyBhIGJh
c2UgdGVzdCBmaXh0dXJlLgorY2xhc3MgQmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHsKKyAgcHJvdGVjdGVkOgorICAgLi4uCit9OworCisvLyBEZXJpdmVzIGEgZml4dHVyZSBGb29U
ZXN0IGZyb20gQmFzZVRlc3QuCitjbGFzcyBGb29UZXN0IDogcHVibGljIEJhc2VUZXN0IHsKKyAg
cHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICAgIEJhc2VUZXN0OjpT
ZXRVcCgpOyAgLy8gU2V0cyB1cCB0aGUgYmFzZSBmaXh0dXJlIGZpcnN0LgorICAgICAgLi4uIGFk
ZGl0aW9uYWwgc2V0LXVwIHdvcmsgLi4uCisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93
bigpIHsKKyAgICAgIC4uLiBjbGVhbi11cCB3b3JrIGZvciBGb29UZXN0IC4uLgorICAgICAgQmFz
ZVRlc3Q6OlRlYXJEb3duKCk7ICAvLyBSZW1lbWJlciB0byB0ZWFyIGRvd24gdGhlIGJhc2UgZml4
dHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciBjbGVhbmluZyB1cCBG
b29UZXN0IQorICAgIH0KKyAgICAuLi4gZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMgZm9yIEZvb1Rl
c3QgLi4uCit9OworCisvLyBUZXN0cyB0aGF0IHVzZSB0aGUgZml4dHVyZSBGb29UZXN0LgorVEVT
VF9GKEZvb1Rlc3QsIEJhcikgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIEJheikgeyAuLi4gfQor
CisuLi4gYWRkaXRpb25hbCBmaXh0dXJlcyBkZXJpdmVkIGZyb20gQmFzZVRlc3QgLi4uCitgYGAK
KworSWYgbmVjZXNzYXJ5LCB5b3UgY2FuIGNvbnRpbnVlIHRvIGRlcml2ZSB0ZXN0IGZpeHR1cmVz
IGZyb20gYSBkZXJpdmVkIGZpeHR1cmUuCitHb29nbGUgVGVzdCBoYXMgbm8gbGltaXQgb24gaG93
IGRlZXAgdGhlIGhpZXJhcmNoeSBjYW4gYmUuCisKK0ZvciBhIGNvbXBsZXRlIGV4YW1wbGUgdXNp
bmcgZGVyaXZlZCB0ZXN0IGZpeHR1cmVzLCBzZWUKK1tzYW1wbGU1XSguLi9zYW1wbGVzL3NhbXBs
ZTVfdW5pdHRlc3QuY2MpLgorCisjIyBNeSBjb21waWxlciBjb21wbGFpbnMgInZvaWQgdmFsdWUg
bm90IGlnbm9yZWQgYXMgaXQgb3VnaHQgdG8gYmUuIiBXaGF0IGRvZXMgdGhpcyBtZWFuPyAjIwor
CitZb3UncmUgcHJvYmFibHkgdXNpbmcgYW4gYEFTU0VSVF8qKClgIGluIGEgZnVuY3Rpb24gdGhh
dCBkb2Vzbid0IHJldHVybiBgdm9pZGAuCitgQVNTRVJUXyooKWAgY2FuIG9ubHkgYmUgdXNlZCBp
biBgdm9pZGAgZnVuY3Rpb25zLgorCisjIyBNeSBkZWF0aCB0ZXN0IGhhbmdzIChvciBzZWctZmF1
bHRzKS4gSG93IGRvIEkgZml4IGl0PyAjIworCitJbiBHb29nbGUgVGVzdCwgZGVhdGggdGVzdHMg
YXJlIHJ1biBpbiBhIGNoaWxkIHByb2Nlc3MgYW5kIHRoZSB3YXkgdGhleSB3b3JrIGlzCitkZWxp
Y2F0ZS4gVG8gd3JpdGUgZGVhdGggdGVzdHMgeW91IHJlYWxseSBuZWVkIHRvIHVuZGVyc3RhbmQg
aG93IHRoZXkgd29yay4KK1BsZWFzZSBtYWtlIHN1cmUgeW91IGhhdmUgcmVhZCB0aGlzLgorCitJ
biBwYXJ0aWN1bGFyLCBkZWF0aCB0ZXN0cyBkb24ndCBsaWtlIGhhdmluZyBtdWx0aXBsZSB0aHJl
YWRzIGluIHRoZSBwYXJlbnQKK3Byb2Nlc3MuIFNvIHRoZSBmaXJzdCB0aGluZyB5b3UgY2FuIHRy
eSBpcyB0byBlbGltaW5hdGUgY3JlYXRpbmcgdGhyZWFkcworb3V0c2lkZSBvZiBgRVhQRUNUX0RF
QVRIKClgLgorCitTb21ldGltZXMgdGhpcyBpcyBpbXBvc3NpYmxlIGFzIHNvbWUgbGlicmFyeSB5
b3UgbXVzdCB1c2UgbWF5IGJlIGNyZWF0aW5nCit0aHJlYWRzIGJlZm9yZSBgbWFpbigpYCBpcyBl
dmVuIHJlYWNoZWQuIEluIHRoaXMgY2FzZSwgeW91IGNhbiB0cnkgdG8gbWluaW1pemUKK3RoZSBj
aGFuY2Ugb2YgY29uZmxpY3RzIGJ5IGVpdGhlciBtb3ZpbmcgYXMgbWFueSBhY3Rpdml0aWVzIGFz
IHBvc3NpYmxlIGluc2lkZQorYEVYUEVDVF9ERUFUSCgpYCAoaW4gdGhlIGV4dHJlbWUgY2FzZSwg
eW91IHdhbnQgdG8gbW92ZSBldmVyeXRoaW5nIGluc2lkZSksIG9yCitsZWF2aW5nIGFzIGZldyB0
aGluZ3MgYXMgcG9zc2libGUgaW4gaXQuIEFsc28sIHlvdSBjYW4gdHJ5IHRvIHNldCB0aGUgZGVh
dGgKK3Rlc3Qgc3R5bGUgdG8gYCJ0aHJlYWRzYWZlImAsIHdoaWNoIGlzIHNhZmVyIGJ1dCBzbG93
ZXIsIGFuZCBzZWUgaWYgaXQgaGVscHMuCisKK0lmIHlvdSBnbyB3aXRoIHRocmVhZC1zYWZlIGRl
YXRoIHRlc3RzLCByZW1lbWJlciB0aGF0IHRoZXkgcmVydW4gdGhlIHRlc3QKK3Byb2dyYW0gZnJv
bSB0aGUgYmVnaW5uaW5nIGluIHRoZSBjaGlsZCBwcm9jZXNzLiBUaGVyZWZvcmUgbWFrZSBzdXJl
IHlvdXIKK3Byb2dyYW0gY2FuIHJ1biBzaWRlLWJ5LXNpZGUgd2l0aCBpdHNlbGYgYW5kIGlzIGRl
dGVybWluaXN0aWMuCisKK0luIHRoZSBlbmQsIHRoaXMgYm9pbHMgZG93biB0byBnb29kIGNvbmN1
cnJlbnQgcHJvZ3JhbW1pbmcuIFlvdSBoYXZlIHRvIG1ha2UKK3N1cmUgdGhhdCB0aGVyZSBpcyBu
byByYWNlIGNvbmRpdGlvbnMgb3IgZGVhZCBsb2NrcyBpbiB5b3VyIHByb2dyYW0uIE5vIHNpbHZl
cgorYnVsbGV0IC0gc29ycnkhCisKKyMjIFNob3VsZCBJIHVzZSB0aGUgY29uc3RydWN0b3IvZGVz
dHJ1Y3RvciBvZiB0aGUgdGVzdCBmaXh0dXJlIG9yIHRoZSBzZXQtdXAvdGVhci1kb3duIGZ1bmN0
aW9uPyAjIworCitUaGUgZmlyc3QgdGhpbmcgdG8gcmVtZW1iZXIgaXMgdGhhdCBHb29nbGUgVGVz
dCBkb2VzIG5vdCByZXVzZSB0aGUKK3NhbWUgdGVzdCBmaXh0dXJlIG9iamVjdCBhY3Jvc3MgbXVs
dGlwbGUgdGVzdHMuIEZvciBlYWNoIGBURVNUX0ZgLAorR29vZ2xlIFRlc3Qgd2lsbCBjcmVhdGUg
YSBmcmVzaCB0ZXN0IGZpeHR1cmUgb2JqZWN0LCBfaW1tZWRpYXRlbHlfCitjYWxsIGBTZXRVcCgp
YCwgcnVuIHRoZSB0ZXN0LCBjYWxsIGBUZWFyRG93bigpYCwgYW5kIHRoZW4KK19pbW1lZGlhdGVs
eV8gZGVsZXRlIHRoZSB0ZXN0IGZpeHR1cmUgb2JqZWN0LiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5v
CituZWVkIHRvIHdyaXRlIGEgYFNldFVwKClgIG9yIGBUZWFyRG93bigpYCBmdW5jdGlvbiBpZiB0
aGUgY29uc3RydWN0b3IKK29yIGRlc3RydWN0b3IgYWxyZWFkeSBkb2VzIHRoZSBqb2IuCisKK1lv
dSBtYXkgc3RpbGwgd2FudCB0byB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAgaW4gdGhlIGZvbGxv
d2luZyBjYXNlczoKKyAgKiBJZiB0aGUgdGVhci1kb3duIG9wZXJhdGlvbiBjb3VsZCB0aHJvdyBh
biBleGNlcHRpb24sIHlvdSBtdXN0IHVzZSBgVGVhckRvd24oKWAgYXMgb3Bwb3NlZCB0byB0aGUg
ZGVzdHJ1Y3RvciwgYXMgdGhyb3dpbmcgaW4gYSBkZXN0cnVjdG9yIGxlYWRzIHRvIHVuZGVmaW5l
ZCBiZWhhdmlvciBhbmQgdXN1YWxseSB3aWxsIGtpbGwgeW91ciBwcm9ncmFtIHJpZ2h0IGF3YXku
IE5vdGUgdGhhdCBtYW55IHN0YW5kYXJkIGxpYnJhcmllcyAobGlrZSBTVEwpIG1heSB0aHJvdyB3
aGVuIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQgaW4gdGhlIGNvbXBpbGVyLiBUaGVyZWZvcmUgeW91
IHNob3VsZCBwcmVmZXIgYFRlYXJEb3duKClgIGlmIHlvdSB3YW50IHRvIHdyaXRlIHBvcnRhYmxl
IHRlc3RzIHRoYXQgd29yayB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucy4KKyAgKiBUaGUgYXNz
ZXJ0aW9uIG1hY3JvcyB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBmbGFnIGAtLWd0ZXN0X3Rocm93
X29uX2ZhaWx1cmVgIGlzIHNwZWNpZmllZC4gVGhlcmVmb3JlLCB5b3Ugc2hvdWxkbid0IHVzZSBH
b29nbGUgVGVzdCBhc3NlcnRpb25zIGluIGEgZGVzdHJ1Y3RvciBpZiB5b3UgcGxhbiB0byBydW4g
eW91ciB0ZXN0cyB3aXRoIHRoaXMgZmxhZy4KKyAgKiBJbiBhIGNvbnN0cnVjdG9yIG9yIGRlc3Ry
dWN0b3IsIHlvdSBjYW5ub3QgbWFrZSBhIHZpcnR1YWwgZnVuY3Rpb24gY2FsbCBvbiB0aGlzIG9i
amVjdC4gKFlvdSBjYW4gY2FsbCBhIG1ldGhvZCBkZWNsYXJlZCBhcyB2aXJ0dWFsLCBidXQgaXQg
d2lsbCBiZSBzdGF0aWNhbGx5IGJvdW5kLikgVGhlcmVmb3JlLCBpZiB5b3UgbmVlZCB0byBjYWxs
IGEgbWV0aG9kIHRoYXQgd2lsbCBiZSBvdmVycmlkZW4gaW4gYSBkZXJpdmVkIGNsYXNzLCB5b3Ug
aGF2ZSB0byB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAuCisKKyMjIFRoZSBjb21waWxlciBjb21w
bGFpbnMgIm5vIG1hdGNoaW5nIGZ1bmN0aW9uIHRvIGNhbGwiIHdoZW4gSSB1c2UgQVNTRVJUXF9Q
UkVEbi4gSG93IGRvIEkgZml4IGl0PyAjIworCitJZiB0aGUgcHJlZGljYXRlIGZ1bmN0aW9uIHlv
dSB1c2UgaW4gYEFTU0VSVF9QUkVEKmAgb3IgYEVYUEVDVF9QUkVEKmAgaXMKK292ZXJsb2FkZWQg
b3IgYSB0ZW1wbGF0ZSwgdGhlIGNvbXBpbGVyIHdpbGwgaGF2ZSB0cm91YmxlIGZpZ3VyaW5nIG91
dCB3aGljaAorb3ZlcmxvYWRlZCB2ZXJzaW9uIGl0IHNob3VsZCB1c2UuIGBBU1NFUlRfUFJFRF9G
T1JNQVQqYCBhbmQKK2BFWFBFQ1RfUFJFRF9GT1JNQVQqYCBkb24ndCBoYXZlIHRoaXMgcHJvYmxl
bS4KKworSWYgeW91IHNlZSB0aGlzIGVycm9yLCB5b3UgbWlnaHQgd2FudCB0byBzd2l0Y2ggdG8K
K2AoQVNTRVJUfEVYUEVDVClfUFJFRF9GT1JNQVQqYCwgd2hpY2ggd2lsbCBhbHNvIGdpdmUgeW91
IGEgYmV0dGVyIGZhaWx1cmUKK21lc3NhZ2UuIElmLCBob3dldmVyLCB0aGF0IGlzIG5vdCBhbiBv
cHRpb24sIHlvdSBjYW4gcmVzb2x2ZSB0aGUgcHJvYmxlbSBieQorZXhwbGljaXRseSB0ZWxsaW5n
IHRoZSBjb21waWxlciB3aGljaCB2ZXJzaW9uIHRvIHBpY2suCisKK0ZvciBleGFtcGxlLCBzdXBw
b3NlIHlvdSBoYXZlCisKK2BgYAorYm9vbCBJc1Bvc2l0aXZlKGludCBuKSB7CisgIHJldHVybiBu
ID4gMDsKK30KK2Jvb2wgSXNQb3NpdGl2ZShkb3VibGUgeCkgeworICByZXR1cm4geCA+IDA7Cit9
CitgYGAKKworeW91IHdpbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IgaWYgeW91IHdyaXRlCisKK2Bg
YAorRVhQRUNUX1BSRUQxKElzUG9zaXRpdmUsIDUpOworYGBgCisKK0hvd2V2ZXIsIHRoaXMgd2ls
bCB3b3JrOgorCitgYGAKK0VYUEVDVF9QUkVEMSgqc3RhdGljX2Nhc3Q8Ym9vbCAoKikoaW50KT4q
KElzUG9zaXRpdmUpLCA1KTsKK2BgYAorCisoVGhlIHN0dWZmIGluc2lkZSB0aGUgYW5nbGVkIGJy
YWNrZXRzIGZvciB0aGUgYHN0YXRpY19jYXN0YCBvcGVyYXRvciBpcyB0aGUKK3R5cGUgb2YgdGhl
IGZ1bmN0aW9uIHBvaW50ZXIgZm9yIHRoZSBgaW50YC12ZXJzaW9uIG9mIGBJc1Bvc2l0aXZlKClg
LikKKworQXMgYW5vdGhlciBleGFtcGxlLCB3aGVuIHlvdSBoYXZlIGEgdGVtcGxhdGUgZnVuY3Rp
b24KKworYGBgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Jvb2wgSXNOZWdhdGl2ZShUIHgpIHsK
KyAgcmV0dXJuIHggPCAwOworfQorYGBgCisKK3lvdSBjYW4gdXNlIGl0IGluIGEgcHJlZGljYXRl
IGFzc2VydGlvbiBsaWtlIHRoaXM6CisKK2BgYAorQVNTRVJUX1BSRUQxKElzTmVnYXRpdmUqPGlu
dD4qLCAtNSk7CitgYGAKKworVGhpbmdzIGFyZSBtb3JlIGludGVyZXN0aW5nIGlmIHlvdXIgdGVt
cGxhdGUgaGFzIG1vcmUgdGhhbiBvbmUgcGFyYW1ldGVycy4gVGhlCitmb2xsb3dpbmcgd29uJ3Qg
Y29tcGlsZToKKworYGBgCitBU1NFUlRfUFJFRDIoKkdyZWF0ZXJUaGFuPGludCwgaW50PiosIDUs
IDApOworYGBgCisKKworYXMgdGhlIEMrKyBwcmUtcHJvY2Vzc29yIHRoaW5rcyB5b3UgYXJlIGdp
dmluZyBgQVNTRVJUX1BSRUQyYCA0IGFyZ3VtZW50cywKK3doaWNoIGlzIG9uZSBtb3JlIHRoYW4g
ZXhwZWN0ZWQuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIHdyYXAgdGhlIHByZWRpY2F0ZQorZnVuY3Rp
b24gaW4gcGFyZW50aGVzZXM6CisKK2BgYAorQVNTRVJUX1BSRUQyKCooR3JlYXRlclRoYW48aW50
LCBpbnQ+KSosIDUsIDApOworYGBgCisKKworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0
ICJpZ25vcmluZyByZXR1cm4gdmFsdWUiIHdoZW4gSSBjYWxsIFJVTlxfQUxMXF9URVNUUygpLiBX
aHk/ICMjCisKK1NvbWUgcGVvcGxlIGhhZCBiZWVuIGlnbm9yaW5nIHRoZSByZXR1cm4gdmFsdWUg
b2YgYFJVTl9BTExfVEVTVFMoKWAuIFRoYXQgaXMsCitpbnN0ZWFkIG9mCisKK2BgYAorcmV0dXJu
IFJVTl9BTExfVEVTVFMoKTsKK2BgYAorCit0aGV5IHdyaXRlCisKK2BgYAorUlVOX0FMTF9URVNU
UygpOworYGBgCisKK1RoaXMgaXMgd3JvbmcgYW5kIGRhbmdlcm91cy4gQSB0ZXN0IHJ1bm5lciBu
ZWVkcyB0byBzZWUgdGhlIHJldHVybiB2YWx1ZSBvZgorYFJVTl9BTExfVEVTVFMoKWAgaW4gb3Jk
ZXIgdG8gZGV0ZXJtaW5lIGlmIGEgdGVzdCBoYXMgcGFzc2VkLiBJZiB5b3VyIGBtYWluKClgCitm
dW5jdGlvbiBpZ25vcmVzIGl0LCB5b3VyIHRlc3Qgd2lsbCBiZSBjb25zaWRlcmVkIHN1Y2Nlc3Nm
dWwgZXZlbiBpZiBpdCBoYXMgYQorR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIGZhaWx1cmUuIFZlcnkg
YmFkLgorCitUbyBoZWxwIHRoZSB1c2VycyBhdm9pZCB0aGlzIGRhbmdlcm91cyBidWcsIHRoZSBp
bXBsZW1lbnRhdGlvbiBvZgorYFJVTl9BTExfVEVTVFMoKWAgY2F1c2VzIGdjYyB0byByYWlzZSB0
aGlzIHdhcm5pbmcsIHdoZW4gdGhlIHJldHVybiB2YWx1ZSBpcworaWdub3JlZC4gSWYgeW91IHNl
ZSB0aGlzIHdhcm5pbmcsIHRoZSBmaXggaXMgc2ltcGxlOiBqdXN0IG1ha2Ugc3VyZSBpdHMgdmFs
dWUKK2lzIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZSBvZiBgbWFpbigpYC4KKworIyMgTXkgY29t
cGlsZXIgY29tcGxhaW5zIHRoYXQgYSBjb25zdHJ1Y3RvciAob3IgZGVzdHJ1Y3RvcikgY2Fubm90
IHJldHVybiBhIHZhbHVlLiBXaGF0J3MgZ29pbmcgb24/ICMjCisKK0R1ZSB0byBhIHBlY3VsaWFy
aXR5IG9mIEMrKywgaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGUgc3ludGF4IGZvciBzdHJlYW1pbmcK
K21lc3NhZ2VzIHRvIGFuIGBBU1NFUlRfKmAsIGUuZy4KKworYGBgCitBU1NFUlRfRVEoMSwgRm9v
KCkpIDw8ICJibGFoIGJsYWgiIDw8IGZvbzsKK2BgYAorCit3ZSBoYWQgdG8gZ2l2ZSB1cCB1c2lu
ZyBgQVNTRVJUKmAgYW5kIGBGQUlMKmAgKGJ1dCBub3QgYEVYUEVDVCpgIGFuZAorYEFERF9GQUlM
VVJFKmApIGluIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMuIFRoZSB3b3JrYXJvdW5kIGlz
IHRvIG1vdmUgdGhlCitjb250ZW50IG9mIHlvdXIgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciB0byBh
IHByaXZhdGUgdm9pZCBtZW1iZXIgZnVuY3Rpb24sIG9yCitzd2l0Y2ggdG8gYEVYUEVDVF8qKClg
IGlmIHRoYXQgd29ya3MuIFRoaXMgc2VjdGlvbiBpbiB0aGUgdXNlcidzIGd1aWRlIGV4cGxhaW5z
CitpdC4KKworIyMgTXkgc2V0LXVwIGZ1bmN0aW9uIGlzIG5vdCBjYWxsZWQuIFdoeT8gIyMKKwor
QysrIGlzIGNhc2Utc2Vuc2l0aXZlLiBJdCBzaG91bGQgYmUgc3BlbGxlZCBhcyBgU2V0VXAoKWAu
ICBEaWQgeW91CitzcGVsbCBpdCBhcyBgU2V0dXAoKWA/CisKK1NpbWlsYXJseSwgc29tZXRpbWVz
IHBlb3BsZSBzcGVsbCBgU2V0VXBUZXN0Q2FzZSgpYCBhcyBgU2V0dXBUZXN0Q2FzZSgpYCBhbmQK
K3dvbmRlciB3aHkgaXQncyBuZXZlciBjYWxsZWQuCisKKyMjIEhvdyBkbyBJIGp1bXAgdG8gdGhl
IGxpbmUgb2YgYSBmYWlsdXJlIGluIEVtYWNzIGRpcmVjdGx5PyAjIworCitHb29nbGUgVGVzdCdz
IGZhaWx1cmUgbWVzc2FnZSBmb3JtYXQgaXMgdW5kZXJzdG9vZCBieSBFbWFjcyBhbmQgbWFueSBv
dGhlcgorSURFcywgbGlrZSBhY21lIGFuZCBYQ29kZS4gSWYgYSBHb29nbGUgVGVzdCBtZXNzYWdl
IGlzIGluIGEgY29tcGlsYXRpb24gYnVmZmVyCitpbiBFbWFjcywgdGhlbiBpdCdzIGNsaWNrYWJs
ZS4gWW91IGNhbiBub3cgaGl0IGBlbnRlcmAgb24gYSBtZXNzYWdlIHRvIGp1bXAgdG8KK3RoZSBj
b3JyZXNwb25kaW5nIHNvdXJjZSBjb2RlLCBvciB1c2UgYEMteCBgYCB0byBqdW1wIHRvIHRoZSBu
ZXh0IGZhaWx1cmUuCisKKyMjIEkgaGF2ZSBzZXZlcmFsIHRlc3QgY2FzZXMgd2hpY2ggc2hhcmUg
dGhlIHNhbWUgdGVzdCBmaXh0dXJlIGxvZ2ljLCBkbyBJIGhhdmUgdG8gZGVmaW5lIGEgbmV3IHRl
c3QgZml4dHVyZSBjbGFzcyBmb3IgZWFjaCBvZiB0aGVtPyBUaGlzIHNlZW1zIHByZXR0eSB0ZWRp
b3VzLiAjIworCitZb3UgZG9uJ3QgaGF2ZSB0by4gSW5zdGVhZCBvZgorCitgYGAKK2NsYXNzIEZv
b1Rlc3QgOiBwdWJsaWMgQmFzZVRlc3Qge307CisKK1RFU1RfRihGb29UZXN0LCBBYmMpIHsgLi4u
IH0KK1RFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0KKworY2xhc3MgQmFyVGVzdCA6IHB1Ymxp
YyBCYXNlVGVzdCB7fTsKKworVEVTVF9GKEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJh
clRlc3QsIERlZikgeyAuLi4gfQorYGBgCisKK3lvdSBjYW4gc2ltcGx5IGB0eXBlZGVmYCB0aGUg
dGVzdCBmaXh0dXJlczoKK2BgYAordHlwZWRlZiBCYXNlVGVzdCBGb29UZXN0OworCitURVNUX0Yo
Rm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9CisKK3R5
cGVkZWYgQmFzZVRlc3QgQmFyVGVzdDsKKworVEVTVF9GKEJhclRlc3QsIEFiYykgeyAuLi4gfQor
VEVTVF9GKEJhclRlc3QsIERlZikgeyAuLi4gfQorYGBgCisKKyMjIFRoZSBHb29nbGUgVGVzdCBv
dXRwdXQgaXMgYnVyaWVkIGluIGEgd2hvbGUgYnVuY2ggb2YgbG9nIG1lc3NhZ2VzLiBXaGF0IGRv
IEkgZG8/ICMjCisKK1RoZSBHb29nbGUgVGVzdCBvdXRwdXQgaXMgbWVhbnQgdG8gYmUgYSBjb25j
aXNlIGFuZCBodW1hbi1mcmllbmRseSByZXBvcnQuIElmCit5b3VyIHRlc3QgZ2VuZXJhdGVzIHRl
eHR1YWwgb3V0cHV0IGl0c2VsZiwgaXQgd2lsbCBtaXggd2l0aCB0aGUgR29vZ2xlIFRlc3QKK291
dHB1dCwgbWFraW5nIGl0IGhhcmQgdG8gcmVhZC4gSG93ZXZlciwgdGhlcmUgaXMgYW4gZWFzeSBz
b2x1dGlvbiB0byB0aGlzCitwcm9ibGVtLgorCitTaW5jZSBtb3N0IGxvZyBtZXNzYWdlcyBnbyB0
byBzdGRlcnIsIHdlIGRlY2lkZWQgdG8gbGV0IEdvb2dsZSBUZXN0IG91dHB1dCBnbwordG8gc3Rk
b3V0LiBUaGlzIHdheSwgeW91IGNhbiBlYXNpbHkgc2VwYXJhdGUgdGhlIHR3byB1c2luZyByZWRp
cmVjdGlvbi4gRm9yCitleGFtcGxlOgorYGBgCisuL215X3Rlc3QgPiBnb29nbGV0ZXN0X291dHB1
dC50eHQKK2BgYAorCisjIyBXaHkgc2hvdWxkIEkgcHJlZmVyIHRlc3QgZml4dHVyZXMgb3ZlciBn
bG9iYWwgdmFyaWFibGVzPyAjIworCitUaGVyZSBhcmUgc2V2ZXJhbCBnb29kIHJlYXNvbnM6Cisg
IDEuIEl0J3MgbGlrZWx5IHlvdXIgdGVzdCBuZWVkcyB0byBjaGFuZ2UgdGhlIHN0YXRlcyBvZiBp
dHMgZ2xvYmFsIHZhcmlhYmxlcy4gVGhpcyBtYWtlcyBpdCBkaWZmaWN1bHQgdG8ga2VlcCBzaWRl
IGVmZmVjdHMgZnJvbSBlc2NhcGluZyBvbmUgdGVzdCBhbmQgY29udGFtaW5hdGluZyBvdGhlcnMs
IG1ha2luZyBkZWJ1Z2dpbmcgZGlmZmljdWx0LiBCeSB1c2luZyBmaXh0dXJlcywgZWFjaCB0ZXN0
IGhhcyBhIGZyZXNoIHNldCBvZiB2YXJpYWJsZXMgdGhhdCdzIGRpZmZlcmVudCAoYnV0IHdpdGgg
dGhlIHNhbWUgbmFtZXMpLiBUaHVzLCB0ZXN0cyBhcmUga2VwdCBpbmRlcGVuZGVudCBvZiBlYWNo
IG90aGVyLgorICAxLiBHbG9iYWwgdmFyaWFibGVzIHBvbGx1dGUgdGhlIGdsb2JhbCBuYW1lc3Bh
Y2UuCisgIDEuIFRlc3QgZml4dHVyZXMgY2FuIGJlIHJldXNlZCB2aWEgc3ViY2xhc3NpbmcsIHdo
aWNoIGNhbm5vdCBiZSBkb25lIGVhc2lseSB3aXRoIGdsb2JhbCB2YXJpYWJsZXMuIFRoaXMgaXMg
dXNlZnVsIGlmIG1hbnkgdGVzdCBjYXNlcyBoYXZlIHNvbWV0aGluZyBpbiBjb21tb24uCisKKyMj
IEhvdyBkbyBJIHRlc3QgcHJpdmF0ZSBjbGFzcyBtZW1iZXJzIHdpdGhvdXQgd3JpdGluZyBGUklF
TkRcX1RFU1QoKXM/ICMjCisKK1lvdSBzaG91bGQgdHJ5IHRvIHdyaXRlIHRlc3RhYmxlIGNvZGUs
IHdoaWNoIG1lYW5zIGNsYXNzZXMgc2hvdWxkIGJlIGVhc2lseQordGVzdGVkIGZyb20gdGhlaXIg
cHVibGljIGludGVyZmFjZS4gT25lIHdheSB0byBhY2hpZXZlIHRoaXMgaXMgdGhlIFBpbXBsIGlk
aW9tOgoreW91IG1vdmUgYWxsIHByaXZhdGUgbWVtYmVycyBvZiBhIGNsYXNzIGludG8gYSBoZWxw
ZXIgY2xhc3MsIGFuZCBtYWtlIGFsbAorbWVtYmVycyBvZiB0aGUgaGVscGVyIGNsYXNzIHB1Ymxp
Yy4KKworWW91IGhhdmUgc2V2ZXJhbCBvdGhlciBvcHRpb25zIHRoYXQgZG9uJ3QgcmVxdWlyZSB1
c2luZyBgRlJJRU5EX1RFU1RgOgorICAqIFdyaXRlIHRoZSB0ZXN0cyBhcyBtZW1iZXJzIG9mIHRo
ZSBmaXh0dXJlIGNsYXNzOgorYGBgCitjbGFzcyBGb28geworICBmcmllbmQgY2xhc3MgRm9vVGVz
dDsKKyAgLi4uCit9OworCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
CisgcHJvdGVjdGVkOgorICAuLi4KKyAgdm9pZCBUZXN0MSgpIHsuLi59IC8vIFRoaXMgYWNjZXNz
ZXMgcHJpdmF0ZSBtZW1iZXJzIG9mIGNsYXNzIEZvby4KKyAgdm9pZCBUZXN0MigpIHsuLi59IC8v
IFNvIGRvZXMgdGhpcyBvbmUuCit9OworCitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgVGVz
dDEoKTsKK30KKworVEVTVF9GKEZvb1Rlc3QsIFRlc3QyKSB7CisgIFRlc3QyKCk7Cit9CitgYGAK
KyAgKiBJbiB0aGUgZml4dHVyZSBjbGFzcywgd3JpdGUgYWNjZXNzb3JzIGZvciB0aGUgdGVzdGVk
IGNsYXNzJyBwcml2YXRlIG1lbWJlcnMsIHRoZW4gdXNlIHRoZSBhY2Nlc3NvcnMgaW4geW91ciB0
ZXN0czoKK2BgYAorY2xhc3MgRm9vIHsKKyAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7CisgIC4uLgor
fTsKKworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3Rl
ZDoKKyAgLi4uCisgIFQxIGdldF9wcml2YXRlX21lbWJlcjEoRm9vKiBvYmopIHsKKyAgICByZXR1
cm4gb2JqLT5wcml2YXRlX21lbWJlcjFfOworICB9Cit9OworCitURVNUX0YoRm9vVGVzdCwgVGVz
dDEpIHsKKyAgLi4uCisgIGdldF9wcml2YXRlX21lbWJlcjEoeCkKKyAgLi4uCit9CitgYGAKKyAg
KiBJZiB0aGUgbWV0aG9kcyBhcmUgZGVjbGFyZWQgKipwcm90ZWN0ZWQqKiwgeW91IGNhbiBjaGFu
Z2UgdGhlaXIgYWNjZXNzIGxldmVsIGluIGEgdGVzdC1vbmx5IHN1YmNsYXNzOgorYGBgCitjbGFz
cyBZb3VyQ2xhc3MgeworICAuLi4KKyBwcm90ZWN0ZWQ6IC8vIHByb3RlY3RlZCBhY2Nlc3MgZm9y
IHRlc3RhYmlsaXR5LgorICBpbnQgRG9Tb21ldGhpbmdSZXR1cm5pbmdJbnQoKTsKKyAgLi4uCit9
OworCisvLyBpbiB0aGUgeW91cl9jbGFzc190ZXN0LmNjIGZpbGU6CitjbGFzcyBUZXN0YWJsZVlv
dXJDbGFzcyA6IHB1YmxpYyBZb3VyQ2xhc3MgeworICAuLi4KKyBwdWJsaWM6IHVzaW5nIFlvdXJD
bGFzczo6RG9Tb21ldGhpbmdSZXR1cm5pbmdJbnQ7IC8vIGNoYW5nZXMgYWNjZXNzIHJpZ2h0cwor
ICAuLi4KK307CisKK1RFU1RfRihZb3VyQ2xhc3NUZXN0LCBEb1NvbWV0aGluZ1Rlc3QpIHsKKyAg
VGVzdGFibGVZb3VyQ2xhc3Mgb2JqOworICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWRfdmFsdWUsIG9i
ai5Eb1NvbWV0aGluZ1JldHVybmluZ0ludCgpKTsKK30KK2BgYAorCisjIyBIb3cgZG8gSSB0ZXN0
IHByaXZhdGUgY2xhc3Mgc3RhdGljIG1lbWJlcnMgd2l0aG91dCB3cml0aW5nIEZSSUVORFxfVEVT
VCgpcz8gIyMKKworV2UgZmluZCBwcml2YXRlIHN0YXRpYyBtZXRob2RzIGNsdXR0ZXIgdGhlIGhl
YWRlciBmaWxlLiAgVGhleSBhcmUKK2ltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIGlkZWFsbHkg
c2hvdWxkIGJlIGtlcHQgb3V0IG9mIGEgLmguIFNvIG9mdGVuIEkgbWFrZQordGhlbSBmcmVlIGZ1
bmN0aW9ucyBpbnN0ZWFkLgorCitJbnN0ZWFkIG9mOgorYGBgCisvLyBmb28uaAorY2xhc3MgRm9v
IHsKKyAgLi4uCisgcHJpdmF0ZToKKyAgc3RhdGljIGJvb2wgRnVuYyhpbnQgbik7Cit9OworCisv
LyBmb28uY2MKK2Jvb2wgRm9vOjpGdW5jKGludCBuKSB7IC4uLiB9CisKKy8vIGZvb190ZXN0LmNj
CitFWFBFQ1RfVFJVRShGb286OkZ1bmMoMTIzNDUpKTsKK2BgYAorCitZb3UgcHJvYmFibHkgc2hv
dWxkIGJldHRlciB3cml0ZToKK2BgYAorLy8gZm9vLmgKK2NsYXNzIEZvbyB7CisgIC4uLgorfTsK
KworLy8gZm9vLmNjCituYW1lc3BhY2UgaW50ZXJuYWwgeworICBib29sIEZ1bmMoaW50IG4pIHsg
Li4uIH0KK30KKworLy8gZm9vX3Rlc3QuY2MKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisgIGJvb2wg
RnVuYyhpbnQgbik7Cit9CisKK0VYUEVDVF9UUlVFKGludGVybmFsOjpGdW5jKDEyMzQ1KSk7Citg
YGAKKworIyMgSSB3b3VsZCBsaWtlIHRvIHJ1biBhIHRlc3Qgc2V2ZXJhbCB0aW1lcyB3aXRoIGRp
ZmZlcmVudCBwYXJhbWV0ZXJzLiBEbyBJIG5lZWQgdG8gd3JpdGUgc2V2ZXJhbCBzaW1pbGFyIGNv
cGllcyBvZiBpdD8gIyMKKworTm8uIFlvdSBjYW4gdXNlIGEgZmVhdHVyZSBjYWxsZWQgW3ZhbHVl
LXBhcmFtZXRlcml6ZWQgdGVzdHNdKFYxXzdfQWR2YW5jZWRHdWlkZS5tZCNWYWx1ZV9QYXJhbWV0
ZXJpemVkX1Rlc3RzKSB3aGljaAorbGV0cyB5b3UgcmVwZWF0IHlvdXIgdGVzdHMgd2l0aCBkaWZm
ZXJlbnQgcGFyYW1ldGVycywgd2l0aG91dCBkZWZpbmluZyBpdCBtb3JlIHRoYW4gb25jZS4KKwor
IyMgSG93IGRvIEkgdGVzdCBhIGZpbGUgdGhhdCBkZWZpbmVzIG1haW4oKT8gIyMKKworVG8gdGVz
dCBhIGBmb28uY2NgIGZpbGUsIHlvdSBuZWVkIHRvIGNvbXBpbGUgYW5kIGxpbmsgaXQgaW50byB5
b3VyIHVuaXQgdGVzdAorcHJvZ3JhbS4gSG93ZXZlciwgd2hlbiB0aGUgZmlsZSBjb250YWlucyBh
IGRlZmluaXRpb24gZm9yIHRoZSBgbWFpbigpYAorZnVuY3Rpb24sIGl0IHdpbGwgY2xhc2ggd2l0
aCB0aGUgYG1haW4oKWAgb2YgeW91ciB1bml0IHRlc3QsIGFuZCB3aWxsIHJlc3VsdCBpbgorYSBi
dWlsZCBlcnJvci4KKworVGhlIHJpZ2h0IHNvbHV0aW9uIGlzIHRvIHNwbGl0IGl0IGludG8gdGhy
ZWUgZmlsZXM6CisgIDEuIGBmb28uaGAgd2hpY2ggY29udGFpbnMgdGhlIGRlY2xhcmF0aW9ucywK
KyAgMS4gYGZvby5jY2Agd2hpY2ggY29udGFpbnMgdGhlIGRlZmluaXRpb25zIGV4Y2VwdCBgbWFp
bigpYCwgYW5kCisgIDEuIGBmb29fbWFpbi5jY2Agd2hpY2ggY29udGFpbnMgbm90aGluZyBidXQg
dGhlIGRlZmluaXRpb24gb2YgYG1haW4oKWAuCisKK1RoZW4gYGZvby5jY2AgY2FuIGJlIGVhc2ls
eSB0ZXN0ZWQuCisKK0lmIHlvdSBhcmUgYWRkaW5nIHRlc3RzIHRvIGFuIGV4aXN0aW5nIGZpbGUg
YW5kIGRvbid0IHdhbnQgYW4gaW50cnVzaXZlIGNoYW5nZQorbGlrZSB0aGlzLCB0aGVyZSBpcyBh
IGhhY2s6IGp1c3QgaW5jbHVkZSB0aGUgZW50aXJlIGBmb28uY2NgIGZpbGUgaW4geW91ciB1bml0
Cit0ZXN0LiBGb3IgZXhhbXBsZToKK2BgYAorLy8gRmlsZSBmb29fdW5pdHRlc3QuY2MKKworLy8g
VGhlIGhlYWRlcnMgc2VjdGlvbgorLi4uCisKKy8vIFJlbmFtZXMgbWFpbigpIGluIGZvby5jYyB0
byBtYWtlIHJvb20gZm9yIHRoZSB1bml0IHRlc3QgbWFpbigpCisjZGVmaW5lIG1haW4gRm9vTWFp
bgorCisjaW5jbHVkZSAiYS9iL2Zvby5jYyIKKworLy8gVGhlIHRlc3RzIHN0YXJ0IGhlcmUuCisu
Li4KK2BgYAorCisKK0hvd2V2ZXIsIHBsZWFzZSByZW1lbWJlciB0aGlzIGlzIGEgaGFjayBhbmQg
c2hvdWxkIG9ubHkgYmUgdXNlZCBhcyB0aGUgbGFzdAorcmVzb3J0LgorCisjIyBXaGF0IGNhbiB0
aGUgc3RhdGVtZW50IGFyZ3VtZW50IGluIEFTU0VSVFxfREVBVEgoKSBiZT8gIyMKKworYEFTU0VS
VF9ERUFUSChfc3RhdGVtZW50XywgX3JlZ2V4XylgIChvciBhbnkgZGVhdGggYXNzZXJ0aW9uIG1h
Y3JvKSBjYW4gYmUgdXNlZAord2hlcmV2ZXIgYF9zdGF0ZW1lbnRfYCBpcyB2YWxpZC4gU28gYmFz
aWNhbGx5IGBfc3RhdGVtZW50X2AgY2FuIGJlIGFueSBDKysKK3N0YXRlbWVudCB0aGF0IG1ha2Vz
IHNlbnNlIGluIHRoZSBjdXJyZW50IGNvbnRleHQuIEluIHBhcnRpY3VsYXIsIGl0IGNhbgorcmVm
ZXJlbmNlIGdsb2JhbCBhbmQvb3IgbG9jYWwgdmFyaWFibGVzLCBhbmQgY2FuIGJlOgorICAqIGEg
c2ltcGxlIGZ1bmN0aW9uIGNhbGwgKG9mdGVuIHRoZSBjYXNlKSwKKyAgKiBhIGNvbXBsZXggZXhw
cmVzc2lvbiwgb3IKKyAgKiBhIGNvbXBvdW5kIHN0YXRlbWVudC4KKworPiBTb21lIGV4YW1wbGVz
IGFyZSBzaG93biBoZXJlOgorCitgYGAKKy8vIEEgZGVhdGggdGVzdCBjYW4gYmUgYSBzaW1wbGUg
ZnVuY3Rpb24gY2FsbC4KK1RFU1QoTXlEZWF0aFRlc3QsIEZ1bmN0aW9uQ2FsbCkgeworICBBU1NF
UlRfREVBVEgoWHl6KDUpLCAiWHl6IGZhaWxlZCIpOworfQorCisvLyBPciBhIGNvbXBsZXggZXhw
cmVzc2lvbiB0aGF0IHJlZmVyZW5jZXMgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMuCitURVNUKE15
RGVhdGhUZXN0LCBDb21wbGV4RXhwcmVzc2lvbikgeworICBjb25zdCBib29sIGMgPSBDb25kaXRp
b24oKTsKKyAgQVNTRVJUX0RFQVRIKChjID8gRnVuYzEoMCkgOiBvYmplY3QyLk1ldGhvZCgidGVz
dCIpKSwKKyAgICAgICAgICAgICAgICIoRnVuYzF8TWV0aG9kKSBmYWlsZWQiKTsKK30KKworLy8g
RGVhdGggYXNzZXJ0aW9ucyBjYW4gYmUgdXNlZCBhbnkgd2hlcmUgaW4gYSBmdW5jdGlvbi4gSW4K
Ky8vIHBhcnRpY3VsYXIsIHRoZXkgY2FuIGJlIGluc2lkZSBhIGxvb3AuCitURVNUKE15RGVhdGhU
ZXN0LCBJbnNpZGVMb29wKSB7CisgIC8vIFZlcmlmaWVzIHRoYXQgRm9vKDApLCBGb28oMSksIC4u
LiwgYW5kIEZvbyg0KSBhbGwgZGllLgorICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgewor
ICAgIEVYUEVDVF9ERUFUSF9NKEZvbyhpKSwgIkZvbyBoYXMgXFxkKyBlcnJvcnMiLAorICAgICAg
ICAgICAgICAgICAgIDo6dGVzdGluZzo6TWVzc2FnZSgpIDw8ICJ3aGVyZSBpIGlzICIgPDwgaSk7
CisgIH0KK30KKworLy8gQSBkZWF0aCBhc3NlcnRpb24gY2FuIGNvbnRhaW4gYSBjb21wb3VuZCBz
dGF0ZW1lbnQuCitURVNUKE15RGVhdGhUZXN0LCBDb21wb3VuZFN0YXRlbWVudCkgeworICAvLyBW
ZXJpZmllcyB0aGF0IGF0IGxlYXNlIG9uZSBvZiBCYXIoMCksIEJhcigxKSwgLi4uLCBhbmQKKyAg
Ly8gQmFyKDQpIGRpZXMuCisgIEFTU0VSVF9ERUFUSCh7CisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCA1OyBpKyspIHsKKyAgICAgIEJhcihpKTsKKyAgICB9CisgIH0sCisgICJCYXIgaGFzIFxcZCsg
ZXJyb3JzIik7fQorYGBgCisKK2Bnb29nbGV0ZXN0X3VuaXR0ZXN0LmNjYCBjb250YWlucyBtb3Jl
IGV4YW1wbGVzIGlmIHlvdSBhcmUgaW50ZXJlc3RlZC4KKworIyMgV2hhdCBzeW50YXggZG9lcyB0
aGUgcmVndWxhciBleHByZXNzaW9uIGluIEFTU0VSVFxfREVBVEggdXNlPyAjIworCitPbiBQT1NJ
WCBzeXN0ZW1zLCBHb29nbGUgVGVzdCB1c2VzIHRoZSBQT1NJWCBFeHRlbmRlZCByZWd1bGFyCitl
eHByZXNzaW9uIHN5bnRheAorKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVndWxhcl9l
eHByZXNzaW9uI1BPU0lYX0V4dGVuZGVkX1JlZ3VsYXJfRXhwcmVzc2lvbnMpLgorT24gV2luZG93
cywgaXQgdXNlcyBhIGxpbWl0ZWQgdmFyaWFudCBvZiByZWd1bGFyIGV4cHJlc3Npb24KK3N5bnRh
eC4gRm9yIG1vcmUgZGV0YWlscywgc2VlIHRoZQorW3JlZ3VsYXIgZXhwcmVzc2lvbiBzeW50YXhd
KFYxXzdfQWR2YW5jZWRHdWlkZS5tZCNSZWd1bGFyX0V4cHJlc3Npb25fU3ludGF4KS4KKworIyMg
SSBoYXZlIGEgZml4dHVyZSBjbGFzcyBGb28sIGJ1dCBURVNUXF9GKEZvbywgQmFyKSBnaXZlcyBt
ZSBlcnJvciAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gZm9yIGNhbGwgdG8gRm9vOjpGb28oKSIuIFdo
eT8gIyMKKworR29vZ2xlIFRlc3QgbmVlZHMgdG8gYmUgYWJsZSB0byBjcmVhdGUgb2JqZWN0cyBv
ZiB5b3VyIHRlc3QgZml4dHVyZSBjbGFzcywgc28KK2l0IG11c3QgaGF2ZSBhIGRlZmF1bHQgY29u
c3RydWN0b3IuIE5vcm1hbGx5IHRoZSBjb21waWxlciB3aWxsIGRlZmluZSBvbmUgZm9yCit5b3Uu
IEhvd2V2ZXIsIHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB5b3UgaGF2ZSB0byBkZWZpbmUgeW91ciBv
d246CisgICogSWYgeW91IGV4cGxpY2l0bHkgZGVjbGFyZSBhIG5vbi1kZWZhdWx0IGNvbnN0cnVj
dG9yIGZvciBjbGFzcyBgRm9vYCwgdGhlbiB5b3UgbmVlZCB0byBkZWZpbmUgYSBkZWZhdWx0IGNv
bnN0cnVjdG9yLCBldmVuIGlmIGl0IHdvdWxkIGJlIGVtcHR5LgorICAqIElmIGBGb29gIGhhcyBh
IGNvbnN0IG5vbi1zdGF0aWMgZGF0YSBtZW1iZXIsIHRoZW4geW91IGhhdmUgdG8gZGVmaW5lIHRo
ZSBkZWZhdWx0IGNvbnN0cnVjdG9yIF9hbmRfIGluaXRpYWxpemUgdGhlIGNvbnN0IG1lbWJlciBp
biB0aGUgaW5pdGlhbGl6ZXIgbGlzdCBvZiB0aGUgY29uc3RydWN0b3IuIChFYXJseSB2ZXJzaW9u
cyBvZiBgZ2NjYCBkb2Vzbid0IGZvcmNlIHlvdSB0byBpbml0aWFsaXplIHRoZSBjb25zdCBtZW1i
ZXIuIEl0J3MgYSBidWcgdGhhdCBoYXMgYmVlbiBmaXhlZCBpbiBgZ2NjIDRgLikKKworIyMgV2h5
IGRvZXMgQVNTRVJUXF9ERUFUSCBjb21wbGFpbiBhYm91dCBwcmV2aW91cyB0aHJlYWRzIHRoYXQg
d2VyZSBhbHJlYWR5IGpvaW5lZD8gIyMKKworV2l0aCB0aGUgTGludXggcHRocmVhZCBsaWJyYXJ5
LCB0aGVyZSBpcyBubyB0dXJuaW5nIGJhY2sgb25jZSB5b3UgY3Jvc3MgdGhlCitsaW5lIGZyb20g
c2luZ2xlIHRocmVhZCB0byBtdWx0aXBsZSB0aHJlYWRzLiBUaGUgZmlyc3QgdGltZSB5b3UgY3Jl
YXRlIGEKK3RocmVhZCwgYSBtYW5hZ2VyIHRocmVhZCBpcyBjcmVhdGVkIGluIGFkZGl0aW9uLCBz
byB5b3UgZ2V0IDMsIG5vdCAyLCB0aHJlYWRzLgorTGF0ZXIgd2hlbiB0aGUgdGhyZWFkIHlvdSBj
cmVhdGUgam9pbnMgdGhlIG1haW4gdGhyZWFkLCB0aGUgdGhyZWFkIGNvdW50CitkZWNyZW1lbnRz
IGJ5IDEsIGJ1dCB0aGUgbWFuYWdlciB0aHJlYWQgd2lsbCBuZXZlciBiZSBraWxsZWQsIHNvIHlv
dSBzdGlsbCBoYXZlCisyIHRocmVhZHMsIHdoaWNoIG1lYW5zIHlvdSBjYW5ub3Qgc2FmZWx5IHJ1
biBhIGRlYXRoIHRlc3QuCisKK1RoZSBuZXcgTlBUTCB0aHJlYWQgbGlicmFyeSBkb2Vzbid0IHN1
ZmZlciBmcm9tIHRoaXMgcHJvYmxlbSwgYXMgaXQgZG9lc24ndAorY3JlYXRlIGEgbWFuYWdlciB0
aHJlYWQuIEhvd2V2ZXIsIGlmIHlvdSBkb24ndCBjb250cm9sIHdoaWNoIG1hY2hpbmUgeW91ciB0
ZXN0CitydW5zIG9uLCB5b3Ugc2hvdWxkbid0IGRlcGVuZCBvbiB0aGlzLgorCisjIyBXaHkgZG9l
cyBHb29nbGUgVGVzdCByZXF1aXJlIHRoZSBlbnRpcmUgdGVzdCBjYXNlLCBpbnN0ZWFkIG9mIGlu
ZGl2aWR1YWwgdGVzdHMsIHRvIGJlIG5hbWVkIEZPT0RlYXRoVGVzdCB3aGVuIGl0IHVzZXMgQVNT
RVJUXF9ERUFUSD8gIyMKKworR29vZ2xlIFRlc3QgZG9lcyBub3QgaW50ZXJsZWF2ZSB0ZXN0cyBm
cm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLiBUaGF0IGlzLCBpdAorcnVucyBhbGwgdGVzdHMgaW4g
b25lIHRlc3QgY2FzZSBmaXJzdCwgYW5kIHRoZW4gcnVucyBhbGwgdGVzdHMgaW4gdGhlIG5leHQg
dGVzdAorY2FzZSwgYW5kIHNvIG9uLiBHb29nbGUgVGVzdCBkb2VzIHRoaXMgYmVjYXVzZSBpdCBu
ZWVkcyB0byBzZXQgdXAgYSB0ZXN0IGNhc2UKK2JlZm9yZSB0aGUgZmlyc3QgdGVzdCBpbiBpdCBp
cyBydW4sIGFuZCB0ZWFyIGl0IGRvd24gYWZ0ZXJ3b3Jkcy4gU3BsaXR0aW5nIHVwCit0aGUgdGVz
dCBjYXNlIHdvdWxkIHJlcXVpcmUgbXVsdGlwbGUgc2V0LXVwIGFuZCB0ZWFyLWRvd24gcHJvY2Vz
c2VzLCB3aGljaCBpcworaW5lZmZpY2llbnQgYW5kIG1ha2VzIHRoZSBzZW1hbnRpY3MgdW5jbGVh
bi4KKworSWYgd2Ugd2VyZSB0byBkZXRlcm1pbmUgdGhlIG9yZGVyIG9mIHRlc3RzIGJhc2VkIG9u
IHRlc3QgbmFtZSBpbnN0ZWFkIG9mIHRlc3QKK2Nhc2UgbmFtZSwgdGhlbiB3ZSB3b3VsZCBoYXZl
IGEgcHJvYmxlbSB3aXRoIHRoZSBmb2xsb3dpbmcgc2l0dWF0aW9uOgorCitgYGAKK1RFU1RfRihG
b29UZXN0LCBBYmNEZWF0aFRlc3QpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBVdncpIHsgLi4u
IH0KKworVEVTVF9GKEJhclRlc3QsIERlZkRlYXRoVGVzdCkgeyAuLi4gfQorVEVTVF9GKEJhclRl
c3QsIFh5eikgeyAuLi4gfQorYGBgCisKK1NpbmNlIGBGb29UZXN0LkFiY0RlYXRoVGVzdGAgbmVl
ZHMgdG8gcnVuIGJlZm9yZSBgQmFyVGVzdC5YeXpgLCBhbmQgd2UgZG9uJ3QKK2ludGVybGVhdmUg
dGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcywgd2UgbmVlZCB0byBydW4gYWxsIHRlc3Rz
IGluIHRoZQorYEZvb1Rlc3RgIGNhc2UgYmVmb3JlIHJ1bm5pbmcgYW55IHRlc3QgaW4gdGhlIGBC
YXJUZXN0YCBjYXNlLiBUaGlzIGNvbnRyYWRpY3RzCit3aXRoIHRoZSByZXF1aXJlbWVudCB0byBy
dW4gYEJhclRlc3QuRGVmRGVhdGhUZXN0YCBiZWZvcmUgYEZvb1Rlc3QuVXZ3YC4KKworIyMgQnV0
IEkgZG9uJ3QgbGlrZSBjYWxsaW5nIG15IGVudGlyZSB0ZXN0IGNhc2UgRk9PRGVhdGhUZXN0IHdo
ZW4gaXQgY29udGFpbnMgYm90aCBkZWF0aCB0ZXN0cyBhbmQgbm9uLWRlYXRoIHRlc3RzLiBXaGF0
IGRvIEkgZG8/ICMjCisKK1lvdSBkb24ndCBoYXZlIHRvLCBidXQgaWYgeW91IGxpa2UsIHlvdSBt
YXkgc3BsaXQgdXAgdGhlIHRlc3QgY2FzZSBpbnRvCitgRm9vVGVzdGAgYW5kIGBGb29EZWF0aFRl
c3RgLCB3aGVyZSB0aGUgbmFtZXMgbWFrZSBpdCBjbGVhciB0aGF0IHRoZXkgYXJlCityZWxhdGVk
OgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07
CisKK1RFU1RfRihGb29UZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBEZWYpIHsg
Li4uIH0KKwordHlwZWRlZiBGb29UZXN0IEZvb0RlYXRoVGVzdDsKKworVEVTVF9GKEZvb0RlYXRo
VGVzdCwgVXZ3KSB7IC4uLiBFWFBFQ1RfREVBVEgoLi4uKSAuLi4gfQorVEVTVF9GKEZvb0RlYXRo
VGVzdCwgWHl6KSB7IC4uLiBBU1NFUlRfREVBVEgoLi4uKSAuLi4gfQorYGBgCisKKyMjIFRoZSBj
b21waWxlciBjb21wbGFpbnMgYWJvdXQgIm5vIG1hdGNoIGZvciAnb3BlcmF0b3I8PCciIHdoZW4g
SSB1c2UgYW4gYXNzZXJ0aW9uLiBXaGF0IGdpdmVzPyAjIworCitJZiB5b3UgdXNlIGEgdXNlci1k
ZWZpbmVkIHR5cGUgYEZvb1R5cGVgIGluIGFuIGFzc2VydGlvbiwgeW91IG11c3QgbWFrZSBzdXJl
Cit0aGVyZSBpcyBhbiBgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYsIGNv
bnN0IEZvb1R5cGUmKWAgZnVuY3Rpb24KK2RlZmluZWQgc3VjaCB0aGF0IHdlIGNhbiBwcmludCBh
IHZhbHVlIG9mIGBGb29UeXBlYC4KKworSW4gYWRkaXRpb24sIGlmIGBGb29UeXBlYCBpcyBkZWNs
YXJlZCBpbiBhIG5hbWUgc3BhY2UsIHRoZSBgPDxgIG9wZXJhdG9yIGFsc28KK25lZWRzIHRvIGJl
IGRlZmluZWQgaW4gdGhlIF9zYW1lXyBuYW1lIHNwYWNlLgorCisjIyBIb3cgZG8gSSBzdXBwcmVz
cyB0aGUgbWVtb3J5IGxlYWsgbWVzc2FnZXMgb24gV2luZG93cz8gIyMKKworU2luY2UgdGhlIHN0
YXRpY2FsbHkgaW5pdGlhbGl6ZWQgR29vZ2xlIFRlc3Qgc2luZ2xldG9uIHJlcXVpcmVzIGFsbG9j
YXRpb25zIG9uCit0aGUgaGVhcCwgdGhlIFZpc3VhbCBDKysgbWVtb3J5IGxlYWsgZGV0ZWN0b3Ig
d2lsbCByZXBvcnQgbWVtb3J5IGxlYWtzIGF0IHRoZQorZW5kIG9mIHRoZSBwcm9ncmFtIHJ1bi4g
VGhlIGVhc2llc3Qgd2F5IHRvIGF2b2lkIHRoaXMgaXMgdG8gdXNlIHRoZQorYF9DcnRNZW1DaGVj
a3BvaW50YCBhbmQgYF9DcnRNZW1EdW1wQWxsT2JqZWN0c1NpbmNlYCBjYWxscyB0byBub3QgcmVw
b3J0IGFueQorc3RhdGljYWxseSBpbml0aWFsaXplZCBoZWFwIG9iamVjdHMuIFNlZSBNU0ROIGZv
ciBtb3JlIGRldGFpbHMgYW5kIGFkZGl0aW9uYWwKK2hlYXAgY2hlY2svZGVidWcgcm91dGluZXMu
CisKKyMjIEkgYW0gYnVpbGRpbmcgbXkgcHJvamVjdCB3aXRoIEdvb2dsZSBUZXN0IGluIFZpc3Vh
bCBTdHVkaW8gYW5kIGFsbCBJJ20gZ2V0dGluZyBpcyBhIGJ1bmNoIG9mIGxpbmtlciBlcnJvcnMg
KG9yIHdhcm5pbmdzKS4gSGVscCEgIyMKKworWW91IG1heSBnZXQgYSBudW1iZXIgb2YgdGhlIGZv
bGxvd2luZyBsaW5rZXIgZXJyb3Igb3Igd2FybmluZ3MgaWYgeW91CithdHRlbXB0IHRvIGxpbmsg
eW91ciB0ZXN0IHByb2plY3Qgd2l0aCB0aGUgR29vZ2xlIFRlc3QgbGlicmFyeSB3aGVuCit5b3Vy
IHByb2plY3QgYW5kIHRoZSBhcmUgbm90IGJ1aWx0IHVzaW5nIHRoZSBzYW1lIGNvbXBpbGVyIHNl
dHRpbmdzLgorCisgICogTE5LMjAwNTogc3ltYm9sIGFscmVhZHkgZGVmaW5lZCBpbiBvYmplY3QK
KyAgKiBMTks0MjE3OiBsb2NhbGx5IGRlZmluZWQgc3ltYm9sICdzeW1ib2wnIGltcG9ydGVkIGlu
IGZ1bmN0aW9uICdmdW5jdGlvbicKKyAgKiBMTks0MDQ5OiBsb2NhbGx5IGRlZmluZWQgc3ltYm9s
ICdzeW1ib2wnIGltcG9ydGVkCisKK1RoZSBHb29nbGUgVGVzdCBwcm9qZWN0IChndGVzdC52Y3By
b2opIGhhcyB0aGUgUnVudGltZSBMaWJyYXJ5IG9wdGlvbgorc2V0IHRvIC9NVCAodXNlIG11bHRp
LXRocmVhZGVkIHN0YXRpYyBsaWJyYXJpZXMsIC9NVGQgZm9yIGRlYnVnKS4gSWYKK3lvdXIgcHJv
amVjdCB1c2VzIHNvbWV0aGluZyBlbHNlLCBmb3IgZXhhbXBsZSAvTUQgKHVzZSBtdWx0aS10aHJl
YWRlZAorRExMcywgL01EZCBmb3IgZGVidWcpLCB5b3UgbmVlZCB0byBjaGFuZ2UgdGhlIHNldHRp
bmcgaW4gdGhlIEdvb2dsZQorVGVzdCBwcm9qZWN0IHRvIG1hdGNoIHlvdXIgcHJvamVjdCdzLgor
CitUbyB1cGRhdGUgdGhpcyBzZXR0aW5nIG9wZW4gdGhlIHByb2plY3QgcHJvcGVydGllcyBpbiB0
aGUgVmlzdWFsCitTdHVkaW8gSURFIHRoZW4gc2VsZWN0IHRoZSBicmFuY2ggQ29uZmlndXJhdGlv
biBQcm9wZXJ0aWVzIHwgQy9DKysgfAorQ29kZSBHZW5lcmF0aW9uIGFuZCBjaGFuZ2UgdGhlIG9w
dGlvbiAiUnVudGltZSBMaWJyYXJ5Ii4gIFlvdSBtYXkgYWxzbyB0cnkKK3VzaW5nIGd0ZXN0LW1k
LnZjcHJvaiBpbnN0ZWFkIG9mIGd0ZXN0LnZjcHJvai4KKworIyMgSSBwdXQgbXkgdGVzdHMgaW4g
YSBsaWJyYXJ5IGFuZCBHb29nbGUgVGVzdCBkb2Vzbid0IHJ1biB0aGVtLiBXaGF0J3MgaGFwcGVu
aW5nPyAjIworSGF2ZSB5b3UgcmVhZCBhCitbd2FybmluZ10oVjFfN19QcmltZXIubWQjaW1wb3J0
YW50LW5vdGUtZm9yLXZpc3VhbC1jLXVzZXJzKSBvbgordGhlIEdvb2dsZSBUZXN0IFByaW1lciBw
YWdlPworCisjIyBJIHdhbnQgdG8gdXNlIEdvb2dsZSBUZXN0IHdpdGggVmlzdWFsIFN0dWRpbyBi
dXQgZG9uJ3Qga25vdyB3aGVyZSB0byBzdGFydC4gIyMKK01hbnkgcGVvcGxlIGFyZSBpbiB5b3Vy
IHBvc2l0aW9uIGFuZCBvbmUgb2YgdGhlIHBvc3RlZCBoaXMgc29sdXRpb24gdG8KK291ciBtYWls
aW5nIGxpc3QuIEhlcmUgaXMgaGlzIGxpbms6CitodHRwOi8vaGFzc2FuamFtaWxhaG1hZC5ibG9n
c3BvdC5jb20vMjAwOS8wNy9ndGVzdC1zdGFydGVycy1oZWxwLmh0bWwuCisKKyMjIEkgYW0gc2Vl
aW5nIGNvbXBpbGUgZXJyb3JzIG1lbnRpb25pbmcgc3RkOjp0eXBlXF90cmFpdHMgd2hlbiBJIHRy
eSB0byB1c2UgR29vZ2xlIFRlc3Qgb24gU29sYXJpcy4gIyMKK0dvb2dsZSBUZXN0IHVzZXMgcGFy
dHMgb2YgdGhlIHN0YW5kYXJkIEMrKyBsaWJyYXJ5IHRoYXQgU3VuU3R1ZGlvIGRvZXMgbm90IHN1
cHBvcnQuCitPdXIgdXNlcnMgcmVwb3J0ZWQgc3VjY2VzcyB1c2luZyBhbHRlcm5hdGl2ZSBpbXBs
ZW1lbnRhdGlvbnMuIFRyeSBydW5uaW5nIHRoZSBidWlsZCBhZnRlciBydW5pbmcgdGhpcyBjb21t
YWQ6CisKK2BleHBvcnQgQ0M9Y2MgQ1hYPUNDIENYWEZMQUdTPSctbGlicmFyeT1zdGxwb3J0NCdg
CisKKyMjIEhvdyBjYW4gbXkgY29kZSBkZXRlY3QgaWYgaXQgaXMgcnVubmluZyBpbiBhIHRlc3Q/
ICMjCisKK0lmIHlvdSB3cml0ZSBjb2RlIHRoYXQgc25pZmZzIHdoZXRoZXIgaXQncyBydW5uaW5n
IGluIGEgdGVzdCBhbmQgZG9lcworZGlmZmVyZW50IHRoaW5ncyBhY2NvcmRpbmdseSwgeW91IGFy
ZSBsZWFraW5nIHRlc3Qtb25seSBsb2dpYyBpbnRvCitwcm9kdWN0aW9uIGNvZGUgYW5kIHRoZXJl
IGlzIG5vIGVhc3kgd2F5IHRvIGVuc3VyZSB0aGF0IHRoZSB0ZXN0LW9ubHkKK2NvZGUgcGF0aHMg
YXJlbid0IHJ1biBieSBtaXN0YWtlIGluIHByb2R1Y3Rpb24uICBTdWNoIGNsZXZlcm5lc3MgYWxz
bworbGVhZHMgdG8KK1tIZWlzZW5idWdzXShodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Vu
dXN1YWxfc29mdHdhcmVfYnVnI0hlaXNlbmJ1ZykuCitUaGVyZWZvcmUgd2Ugc3Ryb25nbHkgYWR2
aXNlIGFnYWluc3QgdGhlIHByYWN0aWNlLCBhbmQgR29vZ2xlIFRlc3QgZG9lc24ndAorcHJvdmlk
ZSBhIHdheSB0byBkbyBpdC4KKworSW4gZ2VuZXJhbCwgdGhlIHJlY29tbWVuZGVkIHdheSB0byBj
YXVzZSB0aGUgY29kZSB0byBiZWhhdmUKK2RpZmZlcmVudGx5IHVuZGVyIHRlc3QgaXMgW2RlcGVu
ZGVuY3kgaW5qZWN0aW9uXShodHRwOi8vamFtZXNzaG9yZS5jb20vQmxvZy9EZXBlbmRlbmN5LUlu
amVjdGlvbi1EZW15c3RpZmllZC5odG1sKS4KK1lvdSBjYW4gaW5qZWN0IGRpZmZlcmVudCBmdW5j
dGlvbmFsaXR5IGZyb20gdGhlIHRlc3QgYW5kIGZyb20gdGhlCitwcm9kdWN0aW9uIGNvZGUuICBT
aW5jZSB5b3VyIHByb2R1Y3Rpb24gY29kZSBkb2Vzbid0IGxpbmsgaW4gdGhlCitmb3ItdGVzdCBs
b2dpYyBhdCBhbGwsIHRoZXJlIGlzIG5vIGRhbmdlciBpbiBhY2NpZGVudGFsbHkgcnVubmluZyBp
dC4KKworSG93ZXZlciwgaWYgeW91IF9yZWFsbHlfLCBfcmVhbGx5XywgX3JlYWxseV8gaGF2ZSBu
byBjaG9pY2UsIGFuZCBpZgoreW91IGZvbGxvdyB0aGUgcnVsZSBvZiBlbmRpbmcgeW91ciB0ZXN0
IHByb2dyYW0gbmFtZXMgd2l0aCBgX3Rlc3RgLAoreW91IGNhbiB1c2UgdGhlIF9ob3JyaWJsZV8g
aGFjayBvZiBzbmlmZmluZyB5b3VyIGV4ZWN1dGFibGUgbmFtZQorKGBhcmd2WzBdYCBpbiBgbWFp
bigpYCkgdG8ga25vdyB3aGV0aGVyIHRoZSBjb2RlIGlzIHVuZGVyIHRlc3QuCisKKyMjIEdvb2ds
ZSBUZXN0IGRlZmluZXMgYSBtYWNybyB0aGF0IGNsYXNoZXMgd2l0aCBvbmUgZGVmaW5lZCBieSBh
bm90aGVyIGxpYnJhcnkuIEhvdyBkbyBJIGRlYWwgd2l0aCB0aGF0PyAjIworCitJbiBDKyssIG1h
Y3JvcyBkb24ndCBvYmV5IG5hbWVzcGFjZXMuICBUaGVyZWZvcmUgdHdvIGxpYnJhcmllcyB0aGF0
Citib3RoIGRlZmluZSBhIG1hY3JvIG9mIHRoZSBzYW1lIG5hbWUgd2lsbCBjbGFzaCBpZiB5b3Ug
YCNpbmNsdWRlYCBib3RoCitkZWZpbml0aW9ucy4gIEluIGNhc2UgYSBHb29nbGUgVGVzdCBtYWNy
byBjbGFzaGVzIHdpdGggYW5vdGhlcgorbGlicmFyeSwgeW91IGNhbiBmb3JjZSBHb29nbGUgVGVz
dCB0byByZW5hbWUgaXRzIG1hY3JvIHRvIGF2b2lkIHRoZQorY29uZmxpY3QuCisKK1NwZWNpZmlj
YWxseSwgaWYgYm90aCBHb29nbGUgVGVzdCBhbmQgc29tZSBvdGhlciBjb2RlIGRlZmluZSBtYWNy
bworYEZPT2AsIHlvdSBjYW4gYWRkCitgYGAKKyAgLURHVEVTVF9ET05UX0RFRklORV9GT089MQor
YGBgCit0byB0aGUgY29tcGlsZXIgZmxhZ3MgdG8gdGVsbCBHb29nbGUgVGVzdCB0byBjaGFuZ2Ug
dGhlIG1hY3JvJ3MgbmFtZQorZnJvbSBgRk9PYCB0byBgR1RFU1RfRk9PYC4gRm9yIGV4YW1wbGUs
IHdpdGggYC1ER1RFU1RfRE9OVF9ERUZJTkVfVEVTVD0xYCwgeW91J2xsIG5lZWQgdG8gd3JpdGUK
K2BgYAorICBHVEVTVF9URVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAuLi4gfQorYGBgCitpbnN0
ZWFkIG9mCitgYGAKKyAgVEVTVChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KK2BgYAoraW4g
b3JkZXIgdG8gZGVmaW5lIGEgdGVzdC4KKworQ3VycmVudGx5LCB0aGUgZm9sbG93aW5nIGBURVNU
YCwgYEZBSUxgLCBgU1VDQ0VFRGAsIGFuZCB0aGUgYmFzaWMgY29tcGFyaXNvbiBhc3NlcnRpb24g
bWFjcm9zIGNhbiBoYXZlIGFsdGVybmF0aXZlIG5hbWVzLiBZb3UgY2FuIHNlZSB0aGUgZnVsbCBs
aXN0IG9mIGNvdmVyZWQgbWFjcm9zIFtoZXJlXShodHRwOi8vd3d3Lmdvb2dsZS5jb20vY29kZXNl
YXJjaD9xPWlmKyFHVEVTVF9ET05UX0RFRklORV9cdyUyQitwYWNrYWdlOmh0dHA6Ly9nb29nbGV0
ZXN0XC5nb29nbGVjb2RlXC5jb20rZmlsZTovaW5jbHVkZS9ndGVzdC9ndGVzdC5oKS4gTW9yZSBp
bmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gdGhlICJBdm9pZGluZyBNYWNybyBOYW1lIENsYXNo
ZXMiIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBmaWxlLgorCisKKyMjIElzIGl0IE9LIGlmIEkgaGF2
ZSB0d28gc2VwYXJhdGUgYFRFU1QoRm9vLCBCYXIpYCB0ZXN0IG1ldGhvZHMgZGVmaW5lZCBpbiBk
aWZmZXJlbnQgbmFtZXNwYWNlcz8gIyMKKworWWVzLgorCitUaGUgcnVsZSBpcyAqKmFsbCB0ZXN0
IG1ldGhvZHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIGZpeHR1cmUg
Y2xhc3MqKi4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgaXMgKiphbGxvd2VkKiogYmVj
YXVzZSBib3RoIHRlc3RzIHVzZSB0aGUgc2FtZSBmaXh0dXJlIGNsYXNzIChgOjp0ZXN0aW5nOjpU
ZXN0YCkuCisKK2BgYAorbmFtZXNwYWNlIGZvbyB7CitURVNUKENvb2xUZXN0LCBEb1NvbWV0aGlu
ZykgeworICBTVUNDRUVEKCk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgZm9vCisKK25hbWVzcGFjZSBi
YXIgeworVEVTVChDb29sVGVzdCwgRG9Tb21ldGhpbmcpIHsKKyAgU1VDQ0VFRCgpOworfQorfSAg
Ly8gbmFtZXNwYWNlIGZvbworYGBgCisKK0hvd2V2ZXIsIHRoZSBmb2xsb3dpbmcgY29kZSBpcyAq
Km5vdCBhbGxvd2VkKiogYW5kIHdpbGwgcHJvZHVjZSBhIHJ1bnRpbWUgZXJyb3IgZnJvbSBHb29n
bGUgVGVzdCBiZWNhdXNlIHRoZSB0ZXN0IG1ldGhvZHMgYXJlIHVzaW5nIGRpZmZlcmVudCB0ZXN0
IGZpeHR1cmUgY2xhc3NlcyB3aXRoIHRoZSBzYW1lIHRlc3QgY2FzZSBuYW1lLgorCitgYGAKK25h
bWVzcGFjZSBmb28geworY2xhc3MgQ29vbFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9
OyAgLy8gRml4dHVyZSBmb286OkNvb2xUZXN0CitURVNUX0YoQ29vbFRlc3QsIERvU29tZXRoaW5n
KSB7CisgIFNVQ0NFRUQoKTsKK30KK30gIC8vIG5hbWVzcGFjZSBmb28KKworbmFtZXNwYWNlIGJh
ciB7CitjbGFzcyBDb29sVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307ICAvLyBGaXh0
dXJlOiBiYXI6OkNvb2xUZXN0CitURVNUX0YoQ29vbFRlc3QsIERvU29tZXRoaW5nKSB7CisgIFNV
Q0NFRUQoKTsKK30KK30gIC8vIG5hbWVzcGFjZSBmb28KK2BgYAorCisjIyBIb3cgZG8gSSBidWls
ZCBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgd2l0aCBYY29kZSA0PyAjIworCitJZiB5b3UgdHJ5
IHRvIGJ1aWxkIEdvb2dsZSBUZXN0J3MgWGNvZGUgcHJvamVjdCB3aXRoIFhjb2RlIDQuMCBvciBs
YXRlciwgeW91IG1heSBlbmNvdW50ZXIgYW4gZXJyb3IgbWVzc2FnZSB0aGF0IGxvb2tzIGxpa2UK
KyJNaXNzaW5nIFNESyBpbiB0YXJnZXQgZ3Rlc3RcX2ZyYW1ld29yazogL0RldmVsb3Blci9TREtz
L01hY09TWDEwLjR1LnNkayIuIFRoYXQgbWVhbnMgdGhhdCBYY29kZSBkb2VzIG5vdCBzdXBwb3J0
IHRoZSBTREsgdGhlIHByb2plY3QgaXMgdGFyZ2V0aW5nLiBTZWUgdGhlIFhjb2RlIHNlY3Rpb24g
aW4gdGhlIFtSRUFETUVdKC4uLy4uL1JFQURNRS5NRCkgZmlsZSBvbiBob3cgdG8gcmVzb2x2ZSB0
aGlzLgorCisjIyBNeSBxdWVzdGlvbiBpcyBub3QgY292ZXJlZCBpbiB5b3VyIEZBUSEgIyMKKwor
SWYgeW91IGNhbm5vdCBmaW5kIHRoZSBhbnN3ZXIgdG8geW91ciBxdWVzdGlvbiBpbiB0aGlzIEZB
USwgdGhlcmUgYXJlCitzb21lIG90aGVyIHJlc291cmNlcyB5b3UgY2FuIHVzZToKKworICAxLiBy
ZWFkIG90aGVyIFt3aWtpIHBhZ2VzXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVz
dC93L2xpc3QpLAorICAxLiBzZWFyY2ggdGhlIG1haWxpbmcgbGlzdCBbYXJjaGl2ZV0oaHR0cDov
L2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZXRlc3RmcmFtZXdvcmsvdG9waWNzKSwKKyAg
MS4gYXNrIGl0IG9uIFtnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb21dKG1haWx0
bzpnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20pIGFuZCBzb21lb25lIHdpbGwg
YW5zd2VyIGl0ICh0byBwcmV2ZW50IHNwYW0sIHdlIHJlcXVpcmUgeW91IHRvIGpvaW4gdGhlIFtk
aXNjdXNzaW9uIGdyb3VwXShodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xldGVz
dGZyYW1ld29yaykgYmVmb3JlIHlvdSBjYW4gcG9zdC4pLgorCitQbGVhc2Ugbm90ZSB0aGF0IGNy
ZWF0aW5nIGFuIGlzc3VlIGluIHRoZQorW2lzc3VlIHRyYWNrZXJdKGh0dHA6Ly9jb2RlLmdvb2ds
ZS5jb20vcC9nb29nbGV0ZXN0L2lzc3Vlcy9saXN0KSBpcyBfbm90XworYSBnb29kIHdheSB0byBn
ZXQgeW91ciBhbnN3ZXIsIGFzIGl0IGlzIG1vbml0b3JlZCBpbmZyZXF1ZW50bHkgYnkgYQordmVy
eSBzbWFsbCBudW1iZXIgb2YgcGVvcGxlLgorCitXaGVuIGFza2luZyBhIHF1ZXN0aW9uLCBpdCdz
IGhlbHBmdWwgdG8gcHJvdmlkZSBhcyBtdWNoIG9mIHRoZQorZm9sbG93aW5nIGluZm9ybWF0aW9u
IGFzIHBvc3NpYmxlIChwZW9wbGUgY2Fubm90IGhlbHAgeW91IGlmIHRoZXJlJ3MKK25vdCBlbm91
Z2ggaW5mb3JtYXRpb24gaW4geW91ciBxdWVzdGlvbik6CisKKyAgKiB0aGUgdmVyc2lvbiAob3Ig
dGhlIHJldmlzaW9uIG51bWJlciBpZiB5b3UgY2hlY2sgb3V0IGZyb20gU1ZOIGRpcmVjdGx5KSBv
ZiBHb29nbGUgVGVzdCB5b3UgdXNlIChHb29nbGUgVGVzdCBpcyB1bmRlciBhY3RpdmUgZGV2ZWxv
cG1lbnQsIHNvIGl0J3MgcG9zc2libGUgdGhhdCB5b3VyIHByb2JsZW0gaGFzIGJlZW4gc29sdmVk
IGluIGEgbGF0ZXIgdmVyc2lvbiksCisgICogeW91ciBvcGVyYXRpbmcgc3lzdGVtLAorICAqIHRo
ZSBuYW1lIGFuZCB2ZXJzaW9uIG9mIHlvdXIgY29tcGlsZXIsCisgICogdGhlIGNvbXBsZXRlIGNv
bW1hbmQgbGluZSBmbGFncyB5b3UgZ2l2ZSB0byB5b3VyIGNvbXBpbGVyLAorICAqIHRoZSBjb21w
bGV0ZSBjb21waWxlciBlcnJvciBtZXNzYWdlcyAoaWYgdGhlIHF1ZXN0aW9uIGlzIGFib3V0IGNv
bXBpbGF0aW9uKSwKKyAgKiB0aGUgX2FjdHVhbF8gY29kZSAoaWRlYWxseSwgYSBtaW5pbWFsIGJ1
dCBjb21wbGV0ZSBwcm9ncmFtKSB0aGF0IGhhcyB0aGUgcHJvYmxlbSB5b3UgZW5jb3VudGVyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV83X1ByaW1lci5tZCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfN19QcmltZXIubWQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjE4MjdjNzM1NTgxM2FkOTQxODAzNDkxM2JjYzM5ZGY0MThkYWY2NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfN19QcmltZXIubWQKQEAgLTAsMCAr
MSw1MDEgQEAKKworCisjIEludHJvZHVjdGlvbjogV2h5IEdvb2dsZSBDKysgVGVzdGluZyBGcmFt
ZXdvcms/ICMKKworX0dvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmtfIGhlbHBzIHlvdSB3cml0
ZSBiZXR0ZXIgQysrIHRlc3RzLgorCitObyBtYXR0ZXIgd2hldGhlciB5b3Ugd29yayBvbiBMaW51
eCwgV2luZG93cywgb3IgYSBNYWMsIGlmIHlvdSB3cml0ZSBDKysgY29kZSwKK0dvb2dsZSBUZXN0
IGNhbiBoZWxwIHlvdS4KKworU28gd2hhdCBtYWtlcyBhIGdvb2QgdGVzdCwgYW5kIGhvdyBkb2Vz
IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgZml0IGluPyBXZSBiZWxpZXZlOgorICAxLiBU
ZXN0cyBzaG91bGQgYmUgX2luZGVwZW5kZW50XyBhbmQgX3JlcGVhdGFibGVfLiBJdCdzIGEgcGFp
biB0byBkZWJ1ZyBhIHRlc3QgdGhhdCBzdWNjZWVkcyBvciBmYWlscyBhcyBhIHJlc3VsdCBvZiBv
dGhlciB0ZXN0cy4gIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgaXNvbGF0ZXMgdGhlIHRl
c3RzIGJ5IHJ1bm5pbmcgZWFjaCBvZiB0aGVtIG9uIGEgZGlmZmVyZW50IG9iamVjdC4gV2hlbiBh
IHRlc3QgZmFpbHMsIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgYWxsb3dzIHlvdSB0byBy
dW4gaXQgaW4gaXNvbGF0aW9uIGZvciBxdWljayBkZWJ1Z2dpbmcuCisgIDEuIFRlc3RzIHNob3Vs
ZCBiZSB3ZWxsIF9vcmdhbml6ZWRfIGFuZCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRl
c3RlZCBjb2RlLiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBncm91cHMgcmVsYXRlZCB0
ZXN0cyBpbnRvIHRlc3QgY2FzZXMgdGhhdCBjYW4gc2hhcmUgZGF0YSBhbmQgc3Vicm91dGluZXMu
IFRoaXMgY29tbW9uIHBhdHRlcm4gaXMgZWFzeSB0byByZWNvZ25pemUgYW5kIG1ha2VzIHRlc3Rz
IGVhc3kgdG8gbWFpbnRhaW4uIFN1Y2ggY29uc2lzdGVuY3kgaXMgZXNwZWNpYWxseSBoZWxwZnVs
IHdoZW4gcGVvcGxlIHN3aXRjaCBwcm9qZWN0cyBhbmQgc3RhcnQgdG8gd29yayBvbiBhIG5ldyBj
b2RlIGJhc2UuCisgIDEuIFRlc3RzIHNob3VsZCBiZSBfcG9ydGFibGVfIGFuZCBfcmV1c2FibGVf
LiBUaGUgb3Blbi1zb3VyY2UgY29tbXVuaXR5IGhhcyBhIGxvdCBvZiBjb2RlIHRoYXQgaXMgcGxh
dGZvcm0tbmV1dHJhbCwgaXRzIHRlc3RzIHNob3VsZCBhbHNvIGJlIHBsYXRmb3JtLW5ldXRyYWwu
ICBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIHdvcmtzIG9uIGRpZmZlcmVudCBPU2VzLCB3
aXRoIGRpZmZlcmVudCBjb21waWxlcnMgKGdjYywgTVNWQywgYW5kIG90aGVycyksIHdpdGggb3Ig
d2l0aG91dCBleGNlcHRpb25zLCBzbyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIHRlc3Rz
IGNhbiBlYXNpbHkgd29yayB3aXRoIGEgdmFyaWV0eSBvZiBjb25maWd1cmF0aW9ucy4gIChOb3Rl
IHRoYXQgdGhlIGN1cnJlbnQgcmVsZWFzZSBvbmx5IGNvbnRhaW5zIGJ1aWxkIHNjcmlwdHMgZm9y
IExpbnV4IC0gd2UgYXJlIGFjdGl2ZWx5IHdvcmtpbmcgb24gc2NyaXB0cyBmb3Igb3RoZXIgcGxh
dGZvcm1zLikKKyAgMS4gV2hlbiB0ZXN0cyBmYWlsLCB0aGV5IHNob3VsZCBwcm92aWRlIGFzIG11
Y2ggX2luZm9ybWF0aW9uXyBhYm91dCB0aGUgcHJvYmxlbSBhcyBwb3NzaWJsZS4gR29vZ2xlIEMr
KyBUZXN0aW5nIEZyYW1ld29yayBkb2Vzbid0IHN0b3AgYXQgdGhlIGZpcnN0IHRlc3QgZmFpbHVy
ZS4gSW5zdGVhZCwgaXQgb25seSBzdG9wcyB0aGUgY3VycmVudCB0ZXN0IGFuZCBjb250aW51ZXMg
d2l0aCB0aGUgbmV4dC4gWW91IGNhbiBhbHNvIHNldCB1cCB0ZXN0cyB0aGF0IHJlcG9ydCBub24t
ZmF0YWwgZmFpbHVyZXMgYWZ0ZXIgd2hpY2ggdGhlIGN1cnJlbnQgdGVzdCBjb250aW51ZXMuIFRo
dXMsIHlvdSBjYW4gZGV0ZWN0IGFuZCBmaXggbXVsdGlwbGUgYnVncyBpbiBhIHNpbmdsZSBydW4t
ZWRpdC1jb21waWxlIGN5Y2xlLgorICAxLiBUaGUgdGVzdGluZyBmcmFtZXdvcmsgc2hvdWxkIGxp
YmVyYXRlIHRlc3Qgd3JpdGVycyBmcm9tIGhvdXNla2VlcGluZyBjaG9yZXMgYW5kIGxldCB0aGVt
IGZvY3VzIG9uIHRoZSB0ZXN0IF9jb250ZW50Xy4gIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdv
cmsgYXV0b21hdGljYWxseSBrZWVwcyB0cmFjayBvZiBhbGwgdGVzdHMgZGVmaW5lZCwgYW5kIGRv
ZXNuJ3QgcmVxdWlyZSB0aGUgdXNlciB0byBlbnVtZXJhdGUgdGhlbSBpbiBvcmRlciB0byBydW4g
dGhlbS4KKyAgMS4gVGVzdHMgc2hvdWxkIGJlIF9mYXN0Xy4gV2l0aCBHb29nbGUgQysrIFRlc3Rp
bmcgRnJhbWV3b3JrLCB5b3UgY2FuIHJldXNlIHNoYXJlZCByZXNvdXJjZXMgYWNyb3NzIHRlc3Rz
IGFuZCBwYXkgZm9yIHRoZSBzZXQtdXAvdGVhci1kb3duIG9ubHkgb25jZSwgd2l0aG91dCBtYWtp
bmcgdGVzdHMgZGVwZW5kIG9uIGVhY2ggb3RoZXIuCisKK1NpbmNlIEdvb2dsZSBDKysgVGVzdGlu
ZyBGcmFtZXdvcmsgaXMgYmFzZWQgb24gdGhlIHBvcHVsYXIgeFVuaXQKK2FyY2hpdGVjdHVyZSwg
eW91J2xsIGZlZWwgcmlnaHQgYXQgaG9tZSBpZiB5b3UndmUgdXNlZCBKVW5pdCBvciBQeVVuaXQg
YmVmb3JlLgorSWYgbm90LCBpdCB3aWxsIHRha2UgeW91IGFib3V0IDEwIG1pbnV0ZXMgdG8gbGVh
cm4gdGhlIGJhc2ljcyBhbmQgZ2V0IHN0YXJ0ZWQuCitTbyBsZXQncyBnbyEKKworX05vdGU6XyBX
ZSBzb21ldGltZXMgcmVmZXIgdG8gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBpbmZvcm1h
bGx5CithcyBfR29vZ2xlIFRlc3RfLgorCisjIFNldHRpbmcgdXAgYSBOZXcgVGVzdCBQcm9qZWN0
ICMKKworVG8gd3JpdGUgYSB0ZXN0IHByb2dyYW0gdXNpbmcgR29vZ2xlIFRlc3QsIHlvdSBuZWVk
IHRvIGNvbXBpbGUgR29vZ2xlCitUZXN0IGludG8gYSBsaWJyYXJ5IGFuZCBsaW5rIHlvdXIgdGVz
dCB3aXRoIGl0LiAgV2UgcHJvdmlkZSBidWlsZAorZmlsZXMgZm9yIHNvbWUgcG9wdWxhciBidWls
ZCBzeXN0ZW1zOiBgbXN2Yy9gIGZvciBWaXN1YWwgU3R1ZGlvLAorYHhjb2RlL2AgZm9yIE1hYyBY
Y29kZSwgYG1ha2UvYCBmb3IgR05VIG1ha2UsIGBjb2RlZ2Vhci9gIGZvciBCb3JsYW5kCitDKysg
QnVpbGRlciwgYW5kIHRoZSBhdXRvdG9vbHMgc2NyaXB0IChkZXByZWNhdGVkKSBhbmQKK2BDTWFr
ZUxpc3RzLnR4dGAgZm9yIENNYWtlIChyZWNvbW1lbmRlZCkgaW4gdGhlIEdvb2dsZSBUZXN0IHJv
b3QKK2RpcmVjdG9yeS4gIElmIHlvdXIgYnVpbGQgc3lzdGVtIGlzIG5vdCBvbiB0aGlzIGxpc3Qs
IHlvdSBjYW4gdGFrZSBhCitsb29rIGF0IGBtYWtlL01ha2VmaWxlYCB0byBsZWFybiBob3cgR29v
Z2xlIFRlc3Qgc2hvdWxkIGJlIGNvbXBpbGVkCisoYmFzaWNhbGx5IHlvdSB3YW50IHRvIGNvbXBp
bGUgYHNyYy9ndGVzdC1hbGwuY2NgIHdpdGggYEdURVNUX1JPT1RgCithbmQgYEdURVNUX1JPT1Qv
aW5jbHVkZWAgaW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0aCwgd2hlcmUgYEdURVNUX1JPT1RgCitp
cyB0aGUgR29vZ2xlIFRlc3Qgcm9vdCBkaXJlY3RvcnkpLgorCitPbmNlIHlvdSBhcmUgYWJsZSB0
byBjb21waWxlIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5LCB5b3Ugc2hvdWxkCitjcmVhdGUgYSBw
cm9qZWN0IG9yIGJ1aWxkIHRhcmdldCBmb3IgeW91ciB0ZXN0IHByb2dyYW0uICBNYWtlIHN1cmUg
eW91CitoYXZlIGBHVEVTVF9ST09UL2luY2x1ZGVgIGluIHRoZSBoZWFkZXIgc2VhcmNoIHBhdGgg
c28gdGhhdCB0aGUKK2NvbXBpbGVyIGNhbiBmaW5kIGAiZ3Rlc3QvZ3Rlc3QuaCJgIHdoZW4gY29t
cGlsaW5nIHlvdXIgdGVzdC4gIFNldCB1cAoreW91ciB0ZXN0IHByb2plY3QgdG8gbGluayB3aXRo
IHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5IChmb3IgZXhhbXBsZSwKK2luIFZpc3VhbCBTdHVkaW8s
IHRoaXMgaXMgZG9uZSBieSBhZGRpbmcgYSBkZXBlbmRlbmN5IG9uCitgZ3Rlc3QudmNwcm9qYCku
CisKK0lmIHlvdSBzdGlsbCBoYXZlIHF1ZXN0aW9ucywgdGFrZSBhIGxvb2sgYXQgaG93IEdvb2ds
ZSBUZXN0J3Mgb3duCit0ZXN0cyBhcmUgYnVpbHQgYW5kIHVzZSB0aGVtIGFzIGV4YW1wbGVzLgor
CisjIEJhc2ljIENvbmNlcHRzICMKKworV2hlbiB1c2luZyBHb29nbGUgVGVzdCwgeW91IHN0YXJ0
IGJ5IHdyaXRpbmcgX2Fzc2VydGlvbnNfLCB3aGljaCBhcmUgc3RhdGVtZW50cwordGhhdCBjaGVj
ayB3aGV0aGVyIGEgY29uZGl0aW9uIGlzIHRydWUuIEFuIGFzc2VydGlvbidzIHJlc3VsdCBjYW4g
YmUgX3N1Y2Nlc3NfLAorX25vbmZhdGFsIGZhaWx1cmVfLCBvciBfZmF0YWwgZmFpbHVyZV8uIElm
IGEgZmF0YWwgZmFpbHVyZSBvY2N1cnMsIGl0IGFib3J0cwordGhlIGN1cnJlbnQgZnVuY3Rpb247
IG90aGVyd2lzZSB0aGUgcHJvZ3JhbSBjb250aW51ZXMgbm9ybWFsbHkuCisKK19UZXN0c18gdXNl
IGFzc2VydGlvbnMgdG8gdmVyaWZ5IHRoZSB0ZXN0ZWQgY29kZSdzIGJlaGF2aW9yLiBJZiBhIHRl
c3QgY3Jhc2hlcworb3IgaGFzIGEgZmFpbGVkIGFzc2VydGlvbiwgdGhlbiBpdCBfZmFpbHNfOyBv
dGhlcndpc2UgaXQgX3N1Y2NlZWRzXy4KKworQSBfdGVzdCBjYXNlXyBjb250YWlucyBvbmUgb3Ig
bWFueSB0ZXN0cy4gWW91IHNob3VsZCBncm91cCB5b3VyIHRlc3RzIGludG8gdGVzdAorY2FzZXMg
dGhhdCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3RlZCBjb2RlLiBXaGVuIG11bHRp
cGxlIHRlc3RzIGluIGEKK3Rlc3QgY2FzZSBuZWVkIHRvIHNoYXJlIGNvbW1vbiBvYmplY3RzIGFu
ZCBzdWJyb3V0aW5lcywgeW91IGNhbiBwdXQgdGhlbSBpbnRvIGEKK190ZXN0IGZpeHR1cmVfIGNs
YXNzLgorCitBIF90ZXN0IHByb2dyYW1fIGNhbiBjb250YWluIG11bHRpcGxlIHRlc3QgY2FzZXMu
CisKK1dlJ2xsIG5vdyBleHBsYWluIGhvdyB0byB3cml0ZSBhIHRlc3QgcHJvZ3JhbSwgc3RhcnRp
bmcgYXQgdGhlIGluZGl2aWR1YWwKK2Fzc2VydGlvbiBsZXZlbCBhbmQgYnVpbGRpbmcgdXAgdG8g
dGVzdHMgYW5kIHRlc3QgY2FzZXMuCisKKyMgQXNzZXJ0aW9ucyAjCisKK0dvb2dsZSBUZXN0IGFz
c2VydGlvbnMgYXJlIG1hY3JvcyB0aGF0IHJlc2VtYmxlIGZ1bmN0aW9uIGNhbGxzLiBZb3UgdGVz
dCBhCitjbGFzcyBvciBmdW5jdGlvbiBieSBtYWtpbmcgYXNzZXJ0aW9ucyBhYm91dCBpdHMgYmVo
YXZpb3IuIFdoZW4gYW4gYXNzZXJ0aW9uCitmYWlscywgR29vZ2xlIFRlc3QgcHJpbnRzIHRoZSBh
c3NlcnRpb24ncyBzb3VyY2UgZmlsZSBhbmQgbGluZSBudW1iZXIgbG9jYXRpb24sCithbG9uZyB3
aXRoIGEgZmFpbHVyZSBtZXNzYWdlLiBZb3UgbWF5IGFsc28gc3VwcGx5IGEgY3VzdG9tIGZhaWx1
cmUgbWVzc2FnZQord2hpY2ggd2lsbCBiZSBhcHBlbmRlZCB0byBHb29nbGUgVGVzdCdzIG1lc3Nh
Z2UuCisKK1RoZSBhc3NlcnRpb25zIGNvbWUgaW4gcGFpcnMgdGhhdCB0ZXN0IHRoZSBzYW1lIHRo
aW5nIGJ1dCBoYXZlIGRpZmZlcmVudAorZWZmZWN0cyBvbiB0aGUgY3VycmVudCBmdW5jdGlvbi4g
YEFTU0VSVF8qYCB2ZXJzaW9ucyBnZW5lcmF0ZSBmYXRhbCBmYWlsdXJlcword2hlbiB0aGV5IGZh
aWwsIGFuZCAqKmFib3J0IHRoZSBjdXJyZW50IGZ1bmN0aW9uKiouIGBFWFBFQ1RfKmAgdmVyc2lv
bnMgZ2VuZXJhdGUKK25vbmZhdGFsIGZhaWx1cmVzLCB3aGljaCBkb24ndCBhYm9ydCB0aGUgY3Vy
cmVudCBmdW5jdGlvbi4gVXN1YWxseSBgRVhQRUNUXypgCithcmUgcHJlZmVycmVkLCBhcyB0aGV5
IGFsbG93IG1vcmUgdGhhbiBvbmUgZmFpbHVyZXMgdG8gYmUgcmVwb3J0ZWQgaW4gYSB0ZXN0Lgor
SG93ZXZlciwgeW91IHNob3VsZCB1c2UgYEFTU0VSVF8qYCBpZiBpdCBkb2Vzbid0IG1ha2Ugc2Vu
c2UgdG8gY29udGludWUgd2hlbgordGhlIGFzc2VydGlvbiBpbiBxdWVzdGlvbiBmYWlscy4KKwor
U2luY2UgYSBmYWlsZWQgYEFTU0VSVF8qYCByZXR1cm5zIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rp
b24gaW1tZWRpYXRlbHksCitwb3NzaWJseSBza2lwcGluZyBjbGVhbi11cCBjb2RlIHRoYXQgY29t
ZXMgYWZ0ZXIgaXQsIGl0IG1heSBjYXVzZSBhIHNwYWNlIGxlYWsuCitEZXBlbmRpbmcgb24gdGhl
IG5hdHVyZSBvZiB0aGUgbGVhaywgaXQgbWF5IG9yIG1heSBub3QgYmUgd29ydGggZml4aW5nIC0g
c28KK2tlZXAgdGhpcyBpbiBtaW5kIGlmIHlvdSBnZXQgYSBoZWFwIGNoZWNrZXIgZXJyb3IgaW4g
YWRkaXRpb24gdG8gYXNzZXJ0aW9uCitlcnJvcnMuCisKK1RvIHByb3ZpZGUgYSBjdXN0b20gZmFp
bHVyZSBtZXNzYWdlLCBzaW1wbHkgc3RyZWFtIGl0IGludG8gdGhlIG1hY3JvIHVzaW5nIHRoZQor
YDw8YCBvcGVyYXRvciwgb3IgYSBzZXF1ZW5jZSBvZiBzdWNoIG9wZXJhdG9ycy4gQW4gZXhhbXBs
ZToKK2BgYAorQVNTRVJUX0VRKHguc2l6ZSgpLCB5LnNpemUoKSkgPDwgIlZlY3RvcnMgeCBhbmQg
eSBhcmUgb2YgdW5lcXVhbCBsZW5ndGgiOworCitmb3IgKGludCBpID0gMDsgaSA8IHguc2l6ZSgp
OyArK2kpIHsKKyAgRVhQRUNUX0VRKHhbaV0sIHlbaV0pIDw8ICJWZWN0b3JzIHggYW5kIHkgZGlm
ZmVyIGF0IGluZGV4ICIgPDwgaTsKK30KK2BgYAorCitBbnl0aGluZyB0aGF0IGNhbiBiZSBzdHJl
YW1lZCB0byBhbiBgb3N0cmVhbWAgY2FuIGJlIHN0cmVhbWVkIHRvIGFuIGFzc2VydGlvbgorbWFj
cm8tLWluIHBhcnRpY3VsYXIsIEMgc3RyaW5ncyBhbmQgYHN0cmluZ2Agb2JqZWN0cy4gSWYgYSB3
aWRlIHN0cmluZworKGB3Y2hhcl90KmAsIGBUQ0hBUipgIGluIGBVTklDT0RFYCBtb2RlIG9uIFdp
bmRvd3MsIG9yIGBzdGQ6OndzdHJpbmdgKSBpcworc3RyZWFtZWQgdG8gYW4gYXNzZXJ0aW9uLCBp
dCB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gVVRGLTggd2hlbiBwcmludGVkLgorCisjIyBCYXNpYyBB
c3NlcnRpb25zICMjCisKK1RoZXNlIGFzc2VydGlvbnMgZG8gYmFzaWMgdHJ1ZS9mYWxzZSBjb25k
aXRpb24gdGVzdGluZy4KK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0
aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfVFJVRShgX2NvbmRpdGlv
bl9gKWA7ICB8IGBFWFBFQ1RfVFJVRShgX2NvbmRpdGlvbl9gKWA7ICAgfCBfY29uZGl0aW9uXyBp
cyB0cnVlIHwKK3wgYEFTU0VSVF9GQUxTRShgX2NvbmRpdGlvbl9gKWA7IHwgYEVYUEVDVF9GQUxT
RShgX2NvbmRpdGlvbl9gKWA7ICB8IF9jb25kaXRpb25fIGlzIGZhbHNlIHwKKworUmVtZW1iZXIs
IHdoZW4gdGhleSBmYWlsLCBgQVNTRVJUXypgIHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUgYW5kCity
ZXR1cm5zIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24sIHdoaWxlIGBFWFBFQ1RfKmAgeWllbGRz
IGEgbm9uZmF0YWwKK2ZhaWx1cmUsIGFsbG93aW5nIHRoZSBmdW5jdGlvbiB0byBjb250aW51ZSBy
dW5uaW5nLiBJbiBlaXRoZXIgY2FzZSwgYW4KK2Fzc2VydGlvbiBmYWlsdXJlIG1lYW5zIGl0cyBj
b250YWluaW5nIHRlc3QgZmFpbHMuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywg
TWFjLgorCisjIyBCaW5hcnkgQ29tcGFyaXNvbiAjIworCitUaGlzIHNlY3Rpb24gZGVzY3JpYmVz
IGFzc2VydGlvbnMgdGhhdCBjb21wYXJlIHR3byB2YWx1ZXMuCisKK3wgKipGYXRhbCBhc3NlcnRp
b24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8
YEFTU0VSVF9FUShgX2V4cGVjdGVkX2AsIGBfYWN0dWFsX2ApO2B8YEVYUEVDVF9FUShgX2V4cGVj
dGVkX2AsIGBfYWN0dWFsX2ApO2B8IF9leHBlY3RlZF8gYD09YCBfYWN0dWFsXyB8Cit8YEFTU0VS
VF9ORShgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9ORShgX3ZhbDFfYCwgYF92
YWwyX2ApO2AgICAgICB8IF92YWwxXyBgIT1gIF92YWwyXyB8Cit8YEFTU0VSVF9MVChgX3ZhbDFf
YCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9MVChgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAg
ICB8IF92YWwxXyBgPGAgX3ZhbDJfIHwKK3xgQVNTRVJUX0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7
YCAgICAgIHxgRVhQRUNUX0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA8
PWAgX3ZhbDJfIHwKK3xgQVNTRVJUX0dUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHxgRVhQ
RUNUX0dUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA+YCBfdmFsMl8gfAor
fGBBU1NFUlRfR0UoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfGBFWFBFQ1RfR0UoYF92YWwx
X2AsIGBfdmFsMl9gKTtgICAgICAgfCBfdmFsMV8gYD49YCBfdmFsMl8gfAorCitJbiB0aGUgZXZl
bnQgb2YgYSBmYWlsdXJlLCBHb29nbGUgVGVzdCBwcmludHMgYm90aCBfdmFsMV8gYW5kIF92YWwy
XworLiBJbiBgQVNTRVJUX0VRKmAgYW5kIGBFWFBFQ1RfRVEqYCAoYW5kIGFsbCBvdGhlciBlcXVh
bGl0eSBhc3NlcnRpb25zCit3ZSdsbCBpbnRyb2R1Y2UgbGF0ZXIpLCB5b3Ugc2hvdWxkIHB1dCB0
aGUgZXhwcmVzc2lvbiB5b3Ugd2FudCB0byB0ZXN0CitpbiB0aGUgcG9zaXRpb24gb2YgX2FjdHVh
bF8sIGFuZCBwdXQgaXRzIGV4cGVjdGVkIHZhbHVlIGluIF9leHBlY3RlZF8sCithcyBHb29nbGUg
VGVzdCdzIGZhaWx1cmUgbWVzc2FnZXMgYXJlIG9wdGltaXplZCBmb3IgdGhpcyBjb252ZW50aW9u
LgorCitWYWx1ZSBhcmd1bWVudHMgbXVzdCBiZSBjb21wYXJhYmxlIGJ5IHRoZSBhc3NlcnRpb24n
cyBjb21wYXJpc29uCitvcGVyYXRvciBvciB5b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IuICBX
ZSB1c2VkIHRvIHJlcXVpcmUgdGhlCithcmd1bWVudHMgdG8gc3VwcG9ydCB0aGUgYDw8YCBvcGVy
YXRvciBmb3Igc3RyZWFtaW5nIHRvIGFuIGBvc3RyZWFtYCwKK2J1dCBpdCdzIG5vIGxvbmdlciBu
ZWNlc3Nhcnkgc2luY2UgdjEuNi4wIChpZiBgPDxgIGlzIHN1cHBvcnRlZCwgaXQKK3dpbGwgYmUg
Y2FsbGVkIHRvIHByaW50IHRoZSBhcmd1bWVudHMgd2hlbiB0aGUgYXNzZXJ0aW9uIGZhaWxzOwor
b3RoZXJ3aXNlIEdvb2dsZSBUZXN0IHdpbGwgYXR0ZW1wdCB0byBwcmludCB0aGVtIGluIHRoZSBi
ZXN0IHdheSBpdAorY2FuLiBGb3IgbW9yZSBkZXRhaWxzIGFuZCBob3cgdG8gY3VzdG9taXplIHRo
ZSBwcmludGluZyBvZiB0aGUKK2FyZ3VtZW50cywgc2VlIHRoaXMgR29vZ2xlIE1vY2sgW3JlY2lw
ZV0oLi4vLi4vZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3RlYWNoaW5nLWdvb2dsZS1tb2Nr
LWhvdy10by1wcmludC15b3VyLXZhbHVlcykuKS4KKworVGhlc2UgYXNzZXJ0aW9ucyBjYW4gd29y
ayB3aXRoIGEgdXNlci1kZWZpbmVkIHR5cGUsIGJ1dCBvbmx5IGlmIHlvdSBkZWZpbmUgdGhlCitj
b3JyZXNwb25kaW5nIGNvbXBhcmlzb24gb3BlcmF0b3IgKGUuZy4gYD09YCwgYDxgLCBldGMpLiAg
SWYgdGhlIGNvcnJlc3BvbmRpbmcKK29wZXJhdG9yIGlzIGRlZmluZWQsIHByZWZlciB1c2luZyB0
aGUgYEFTU0VSVF8qKClgIG1hY3JvcyBiZWNhdXNlIHRoZXkgd2lsbAorcHJpbnQgb3V0IG5vdCBv
bmx5IHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24sIGJ1dCB0aGUgdHdvIG9wZXJhbmRzIGFz
IHdlbGwuCisKK0FyZ3VtZW50cyBhcmUgYWx3YXlzIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuIFRo
ZXJlZm9yZSwgaXQncyBPSyBmb3IgdGhlCithcmd1bWVudHMgdG8gaGF2ZSBzaWRlIGVmZmVjdHMu
IEhvd2V2ZXIsIGFzIHdpdGggYW55IG9yZGluYXJ5IEMvQysrIGZ1bmN0aW9uLAordGhlIGFyZ3Vt
ZW50cycgZXZhbHVhdGlvbiBvcmRlciBpcyB1bmRlZmluZWQgKGkuZS4gdGhlIGNvbXBpbGVyIGlz
IGZyZWUgdG8KK2Nob29zZSBhbnkgb3JkZXIpIGFuZCB5b3VyIGNvZGUgc2hvdWxkIG5vdCBkZXBl
bmQgb24gYW55IHBhcnRpY3VsYXIgYXJndW1lbnQKK2V2YWx1YXRpb24gb3JkZXIuCisKK2BBU1NF
UlRfRVEoKWAgZG9lcyBwb2ludGVyIGVxdWFsaXR5IG9uIHBvaW50ZXJzLiBJZiB1c2VkIG9uIHR3
byBDIHN0cmluZ3MsIGl0Cit0ZXN0cyBpZiB0aGV5IGFyZSBpbiB0aGUgc2FtZSBtZW1vcnkgbG9j
YXRpb24sIG5vdCBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgdmFsdWUuCitUaGVyZWZvcmUsIGlmIHlv
dSB3YW50IHRvIGNvbXBhcmUgQyBzdHJpbmdzIChlLmcuIGBjb25zdCBjaGFyKmApIGJ5IHZhbHVl
LCB1c2UKK2BBU1NFUlRfU1RSRVEoKWAgLCB3aGljaCB3aWxsIGJlIGRlc2NyaWJlZCBsYXRlciBv
bi4gSW4gcGFydGljdWxhciwgdG8gYXNzZXJ0Cit0aGF0IGEgQyBzdHJpbmcgaXMgYE5VTExgLCB1
c2UgYEFTU0VSVF9TVFJFUShOVUxMLCBjX3N0cmluZylgIC4gSG93ZXZlciwgdG8KK2NvbXBhcmUg
dHdvIGBzdHJpbmdgIG9iamVjdHMsIHlvdSBzaG91bGQgdXNlIGBBU1NFUlRfRVFgLgorCitNYWNy
b3MgaW4gdGhpcyBzZWN0aW9uIHdvcmsgd2l0aCBib3RoIG5hcnJvdyBhbmQgd2lkZSBzdHJpbmcg
b2JqZWN0cyAoYHN0cmluZ2AKK2FuZCBgd3N0cmluZ2ApLgorCitfQXZhaWxhYmlsaXR5XzogTGlu
dXgsIFdpbmRvd3MsIE1hYy4KKworIyMgU3RyaW5nIENvbXBhcmlzb24gIyMKKworVGhlIGFzc2Vy
dGlvbnMgaW4gdGhpcyBncm91cCBjb21wYXJlIHR3byAqKkMgc3RyaW5ncyoqLiBJZiB5b3Ugd2Fu
dCB0byBjb21wYXJlCit0d28gYHN0cmluZ2Agb2JqZWN0cywgdXNlIGBFWFBFQ1RfRVFgLCBgRVhQ
RUNUX05FYCwgYW5kIGV0YyBpbnN0ZWFkLgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5v
bmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0t
LS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX1NU
UkVRKGBfZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgICAgfCBgRVhQRUNUX1NU
UkVRKGBfZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgICAgIHwgdGhlIHR3byBD
IHN0cmluZ3MgaGF2ZSB0aGUgc2FtZSBjb250ZW50IHwKK3wgYEFTU0VSVF9TVFJORShgX3N0cjFf
YCwgYF9zdHIyX2ApO2AgICAgfCBgRVhQRUNUX1NUUk5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YCAg
ICAgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIGRpZmZlcmVudCBjb250ZW50IHwKK3wgYEFTU0VS
VF9TVFJDQVNFRVEoYF9leHBlY3RlZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YHwgYEVYUEVD
VF9TVFJDQVNFRVEoYF9leHBlY3RlZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YCB8IHRoZSB0
d28gQyBzdHJpbmdzIGhhdmUgdGhlIHNhbWUgY29udGVudCwgaWdub3JpbmcgY2FzZSB8Cit8IGBB
U1NFUlRfU1RSQ0FTRU5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YHwgYEVYUEVDVF9TVFJDQVNFTkUo
YF9zdHIxX2AsIGBfc3RyMl9gKTtgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSBkaWZmZXJlbnQg
Y29udGVudCwgaWdub3JpbmcgY2FzZSB8CisKK05vdGUgdGhhdCAiQ0FTRSIgaW4gYW4gYXNzZXJ0
aW9uIG5hbWUgbWVhbnMgdGhhdCBjYXNlIGlzIGlnbm9yZWQuCisKK2AqU1RSRVEqYCBhbmQgYCpT
VFJORSpgIGFsc28gYWNjZXB0IHdpZGUgQyBzdHJpbmdzIChgd2NoYXJfdCpgKS4gSWYgYQorY29t
cGFyaXNvbiBvZiB0d28gd2lkZSBzdHJpbmdzIGZhaWxzLCB0aGVpciB2YWx1ZXMgd2lsbCBiZSBw
cmludGVkIGFzIFVURi04CituYXJyb3cgc3RyaW5ncy4KKworQSBgTlVMTGAgcG9pbnRlciBhbmQg
YW4gZW1wdHkgc3RyaW5nIGFyZSBjb25zaWRlcmVkIF9kaWZmZXJlbnRfLgorCitfQXZhaWxhYmls
aXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworU2VlIGFsc286IEZvciBtb3JlIHN0cmluZyBj
b21wYXJpc29uIHRyaWNrcyAoc3Vic3RyaW5nLCBwcmVmaXgsIHN1ZmZpeCwgYW5kCityZWd1bGFy
IGV4cHJlc3Npb24gbWF0Y2hpbmcsIGZvciBleGFtcGxlKSwgc2VlIHRoZSBbQWR2YW5jZWQgR29v
Z2xlIFRlc3QgR3VpZGVdKFYxXzdfQWR2YW5jZWRHdWlkZS5tZCkuCisKKyMgU2ltcGxlIFRlc3Rz
ICMKKworVG8gY3JlYXRlIGEgdGVzdDoKKyAgMS4gVXNlIHRoZSBgVEVTVCgpYCBtYWNybyB0byBk
ZWZpbmUgYW5kIG5hbWUgYSB0ZXN0IGZ1bmN0aW9uLCBUaGVzZSBhcmUgb3JkaW5hcnkgQysrIGZ1
bmN0aW9ucyB0aGF0IGRvbid0IHJldHVybiBhIHZhbHVlLgorICAxLiBJbiB0aGlzIGZ1bmN0aW9u
LCBhbG9uZyB3aXRoIGFueSB2YWxpZCBDKysgc3RhdGVtZW50cyB5b3Ugd2FudCB0byBpbmNsdWRl
LCB1c2UgdGhlIHZhcmlvdXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyB0byBjaGVjayB2YWx1ZXMu
CisgIDEuIFRoZSB0ZXN0J3MgcmVzdWx0IGlzIGRldGVybWluZWQgYnkgdGhlIGFzc2VydGlvbnM7
IGlmIGFueSBhc3NlcnRpb24gaW4gdGhlIHRlc3QgZmFpbHMgKGVpdGhlciBmYXRhbGx5IG9yIG5v
bi1mYXRhbGx5KSwgb3IgaWYgdGhlIHRlc3QgY3Jhc2hlcywgdGhlIGVudGlyZSB0ZXN0IGZhaWxz
LiBPdGhlcndpc2UsIGl0IHN1Y2NlZWRzLgorCitgYGAKK1RFU1QodGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSkgeworIC4uLiB0ZXN0IGJvZHkgLi4uCit9CitgYGAKKworCitgVEVTVCgpYCBhcmd1
bWVudHMgZ28gZnJvbSBnZW5lcmFsIHRvIHNwZWNpZmljLiBUaGUgX2ZpcnN0XyBhcmd1bWVudCBp
cyB0aGUKK25hbWUgb2YgdGhlIHRlc3QgY2FzZSwgYW5kIHRoZSBfc2Vjb25kXyBhcmd1bWVudCBp
cyB0aGUgdGVzdCdzIG5hbWUgd2l0aGluIHRoZQordGVzdCBjYXNlLiBCb3RoIG5hbWVzIG11c3Qg
YmUgdmFsaWQgQysrIGlkZW50aWZpZXJzLCBhbmQgdGhleSBzaG91bGQgbm90IGNvbnRhaW4gdW5k
ZXJzY29yZSAoYF9gKS4gQSB0ZXN0J3MgX2Z1bGwgbmFtZV8gY29uc2lzdHMgb2YgaXRzIGNvbnRh
aW5pbmcgdGVzdCBjYXNlIGFuZCBpdHMKK2luZGl2aWR1YWwgbmFtZS4gVGVzdHMgZnJvbSBkaWZm
ZXJlbnQgdGVzdCBjYXNlcyBjYW4gaGF2ZSB0aGUgc2FtZSBpbmRpdmlkdWFsCituYW1lLgorCitG
b3IgZXhhbXBsZSwgbGV0J3MgdGFrZSBhIHNpbXBsZSBpbnRlZ2VyIGZ1bmN0aW9uOgorYGBgCitp
bnQgRmFjdG9yaWFsKGludCBuKTsgLy8gUmV0dXJucyB0aGUgZmFjdG9yaWFsIG9mIG4KK2BgYAor
CitBIHRlc3QgY2FzZSBmb3IgdGhpcyBmdW5jdGlvbiBtaWdodCBsb29rIGxpa2U6CitgYGAKKy8v
IFRlc3RzIGZhY3RvcmlhbCBvZiAwLgorVEVTVChGYWN0b3JpYWxUZXN0LCBIYW5kbGVzWmVyb0lu
cHV0KSB7CisgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoMCkpOworfQorCisvLyBUZXN0cyBmYWN0
b3JpYWwgb2YgcG9zaXRpdmUgbnVtYmVycy4KK1RFU1QoRmFjdG9yaWFsVGVzdCwgSGFuZGxlc1Bv
c2l0aXZlSW5wdXQpIHsKKyAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgxKSk7CisgIEVYUEVDVF9F
USgyLCBGYWN0b3JpYWwoMikpOworICBFWFBFQ1RfRVEoNiwgRmFjdG9yaWFsKDMpKTsKKyAgRVhQ
RUNUX0VRKDQwMzIwLCBGYWN0b3JpYWwoOCkpOworfQorYGBgCisKK0dvb2dsZSBUZXN0IGdyb3Vw
cyB0aGUgdGVzdCByZXN1bHRzIGJ5IHRlc3QgY2FzZXMsIHNvIGxvZ2ljYWxseS1yZWxhdGVkIHRl
c3RzCitzaG91bGQgYmUgaW4gdGhlIHNhbWUgdGVzdCBjYXNlOyBpbiBvdGhlciB3b3JkcywgdGhl
IGZpcnN0IGFyZ3VtZW50IHRvIHRoZWlyCitgVEVTVCgpYCBzaG91bGQgYmUgdGhlIHNhbWUuIElu
IHRoZSBhYm92ZSBleGFtcGxlLCB3ZSBoYXZlIHR3byB0ZXN0cywKK2BIYW5kbGVzWmVyb0lucHV0
YCBhbmQgYEhhbmRsZXNQb3NpdGl2ZUlucHV0YCwgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUgdGVz
dAorY2FzZSBgRmFjdG9yaWFsVGVzdGAuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjLgorCisjIFRlc3QgRml4dHVyZXM6IFVzaW5nIHRoZSBTYW1lIERhdGEgQ29uZmlndXJh
dGlvbiBmb3IgTXVsdGlwbGUgVGVzdHMgIworCitJZiB5b3UgZmluZCB5b3Vyc2VsZiB3cml0aW5n
IHR3byBvciBtb3JlIHRlc3RzIHRoYXQgb3BlcmF0ZSBvbiBzaW1pbGFyIGRhdGEsCit5b3UgY2Fu
IHVzZSBhIF90ZXN0IGZpeHR1cmVfLiBJdCBhbGxvd3MgeW91IHRvIHJldXNlIHRoZSBzYW1lIGNv
bmZpZ3VyYXRpb24gb2YKK29iamVjdHMgZm9yIHNldmVyYWwgZGlmZmVyZW50IHRlc3RzLgorCitU
byBjcmVhdGUgYSBmaXh0dXJlLCBqdXN0OgorICAxLiBEZXJpdmUgYSBjbGFzcyBmcm9tIGA6OnRl
c3Rpbmc6OlRlc3RgIC4gU3RhcnQgaXRzIGJvZHkgd2l0aCBgcHJvdGVjdGVkOmAgb3IgYHB1Ymxp
YzpgIGFzIHdlJ2xsIHdhbnQgdG8gYWNjZXNzIGZpeHR1cmUgbWVtYmVycyBmcm9tIHN1Yi1jbGFz
c2VzLgorICAxLiBJbnNpZGUgdGhlIGNsYXNzLCBkZWNsYXJlIGFueSBvYmplY3RzIHlvdSBwbGFu
IHRvIHVzZS4KKyAgMS4gSWYgbmVjZXNzYXJ5LCB3cml0ZSBhIGRlZmF1bHQgY29uc3RydWN0b3Ig
b3IgYFNldFVwKClgIGZ1bmN0aW9uIHRvIHByZXBhcmUgdGhlIG9iamVjdHMgZm9yIGVhY2ggdGVz
dC4gQSBjb21tb24gbWlzdGFrZSBpcyB0byBzcGVsbCBgU2V0VXAoKWAgYXMgYFNldHVwKClgIHdp
dGggYSBzbWFsbCBgdWAgLSBkb24ndCBsZXQgdGhhdCBoYXBwZW4gdG8geW91LgorICAxLiBJZiBu
ZWNlc3NhcnksIHdyaXRlIGEgZGVzdHJ1Y3RvciBvciBgVGVhckRvd24oKWAgZnVuY3Rpb24gdG8g
cmVsZWFzZSBhbnkgcmVzb3VyY2VzIHlvdSBhbGxvY2F0ZWQgaW4gYFNldFVwKClgIC4gVG8gbGVh
cm4gd2hlbiB5b3Ugc2hvdWxkIHVzZSB0aGUgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBhbmQgd2hl
biB5b3Ugc2hvdWxkIHVzZSBgU2V0VXAoKS9UZWFyRG93bigpYCwgcmVhZCB0aGlzIFtGQVEgZW50
cnldKFYxXzdfRkFRLm1kI3Nob3VsZC1pLXVzZS10aGUtY29uc3RydWN0b3JkZXN0cnVjdG9yLW9m
LXRoZS10ZXN0LWZpeHR1cmUtb3ItdGhlLXNldC11cHRlYXItZG93bi1mdW5jdGlvbikuCisgIDEu
IElmIG5lZWRlZCwgZGVmaW5lIHN1YnJvdXRpbmVzIGZvciB5b3VyIHRlc3RzIHRvIHNoYXJlLgor
CitXaGVuIHVzaW5nIGEgZml4dHVyZSwgdXNlIGBURVNUX0YoKWAgaW5zdGVhZCBvZiBgVEVTVCgp
YCBhcyBpdCBhbGxvd3MgeW91IHRvCithY2Nlc3Mgb2JqZWN0cyBhbmQgc3Vicm91dGluZXMgaW4g
dGhlIHRlc3QgZml4dHVyZToKK2BgYAorVEVTVF9GKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUp
IHsKKyAuLi4gdGVzdCBib2R5IC4uLgorfQorYGBgCisKK0xpa2UgYFRFU1QoKWAsIHRoZSBmaXJz
dCBhcmd1bWVudCBpcyB0aGUgdGVzdCBjYXNlIG5hbWUsIGJ1dCBmb3IgYFRFU1RfRigpYAordGhp
cyBtdXN0IGJlIHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuIFlvdSd2ZSBwcm9i
YWJseSBndWVzc2VkOiBgX0ZgCitpcyBmb3IgZml4dHVyZS4KKworVW5mb3J0dW5hdGVseSwgdGhl
IEMrKyBtYWNybyBzeXN0ZW0gZG9lcyBub3QgYWxsb3cgdXMgdG8gY3JlYXRlIGEgc2luZ2xlIG1h
Y3JvCit0aGF0IGNhbiBoYW5kbGUgYm90aCB0eXBlcyBvZiB0ZXN0cy4gVXNpbmcgdGhlIHdyb25n
IG1hY3JvIGNhdXNlcyBhIGNvbXBpbGVyCitlcnJvci4KKworQWxzbywgeW91IG11c3QgZmlyc3Qg
ZGVmaW5lIGEgdGVzdCBmaXh0dXJlIGNsYXNzIGJlZm9yZSB1c2luZyBpdCBpbiBhCitgVEVTVF9G
KClgLCBvciB5b3UnbGwgZ2V0IHRoZSBjb21waWxlciBlcnJvciAiYHZpcnR1YWwgb3V0c2lkZSBj
bGFzcworZGVjbGFyYXRpb25gIi4KKworRm9yIGVhY2ggdGVzdCBkZWZpbmVkIHdpdGggYFRFU1Rf
RigpYCwgR29vZ2xlIFRlc3Qgd2lsbDoKKyAgMS4gQ3JlYXRlIGEgX2ZyZXNoXyB0ZXN0IGZpeHR1
cmUgYXQgcnVudGltZQorICAxLiBJbW1lZGlhdGVseSBpbml0aWFsaXplIGl0IHZpYSBgU2V0VXAo
KWAgLAorICAxLiBSdW4gdGhlIHRlc3QKKyAgMS4gQ2xlYW4gdXAgYnkgY2FsbGluZyBgVGVhckRv
d24oKWAKKyAgMS4gRGVsZXRlIHRoZSB0ZXN0IGZpeHR1cmUuICBOb3RlIHRoYXQgZGlmZmVyZW50
IHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBoYXZlIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUg
b2JqZWN0cywgYW5kIEdvb2dsZSBUZXN0IGFsd2F5cyBkZWxldGVzIGEgdGVzdCBmaXh0dXJlIGJl
Zm9yZSBpdCBjcmVhdGVzIHRoZSBuZXh0IG9uZS4gR29vZ2xlIFRlc3QgZG9lcyBub3QgcmV1c2Ug
dGhlIHNhbWUgdGVzdCBmaXh0dXJlIGZvciBtdWx0aXBsZSB0ZXN0cy4gQW55IGNoYW5nZXMgb25l
IHRlc3QgbWFrZXMgdG8gdGhlIGZpeHR1cmUgZG8gbm90IGFmZmVjdCBvdGhlciB0ZXN0cy4KKwor
QXMgYW4gZXhhbXBsZSwgbGV0J3Mgd3JpdGUgdGVzdHMgZm9yIGEgRklGTyBxdWV1ZSBjbGFzcyBu
YW1lZCBgUXVldWVgLCB3aGljaAoraGFzIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlOgorYGBgCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRT4gLy8gRSBpcyB0aGUgZWxlbWVudCB0eXBlLgorY2xhc3MgUXVl
dWUgeworIHB1YmxpYzoKKyAgUXVldWUoKTsKKyAgdm9pZCBFbnF1ZXVlKGNvbnN0IEUmIGVsZW1l
bnQpOworICBFKiBEZXF1ZXVlKCk7IC8vIFJldHVybnMgTlVMTCBpZiB0aGUgcXVldWUgaXMgZW1w
dHkuCisgIHNpemVfdCBzaXplKCkgY29uc3Q7CisgIC4uLgorfTsKK2BgYAorCitGaXJzdCwgZGVm
aW5lIGEgZml4dHVyZSBjbGFzcy4gQnkgY29udmVudGlvbiwgeW91IHNob3VsZCBnaXZlIGl0IHRo
ZSBuYW1lCitgRm9vVGVzdGAgd2hlcmUgYEZvb2AgaXMgdGhlIGNsYXNzIGJlaW5nIHRlc3RlZC4K
K2BgYAorY2xhc3MgUXVldWVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVj
dGVkOgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgcTFfLkVucXVldWUoMSk7CisgICAg
cTJfLkVucXVldWUoMik7CisgICAgcTJfLkVucXVldWUoMyk7CisgIH0KKworICAvLyB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7fQorCisgIFF1ZXVlPGludD4gcTBfOworICBRdWV1ZTxpbnQ+IHEx
XzsKKyAgUXVldWU8aW50PiBxMl87Cit9OworYGBgCisKK0luIHRoaXMgY2FzZSwgYFRlYXJEb3du
KClgIGlzIG5vdCBuZWVkZWQgc2luY2Ugd2UgZG9uJ3QgaGF2ZSB0byBjbGVhbiB1cCBhZnRlcgor
ZWFjaCB0ZXN0LCBvdGhlciB0aGFuIHdoYXQncyBhbHJlYWR5IGRvbmUgYnkgdGhlIGRlc3RydWN0
b3IuCisKK05vdyB3ZSdsbCB3cml0ZSB0ZXN0cyB1c2luZyBgVEVTVF9GKClgIGFuZCB0aGlzIGZp
eHR1cmUuCitgYGAKK1RFU1RfRihRdWV1ZVRlc3QsIElzRW1wdHlJbml0aWFsbHkpIHsKKyAgRVhQ
RUNUX0VRKDAsIHEwXy5zaXplKCkpOworfQorCitURVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVlV29y
a3MpIHsKKyAgaW50KiBuID0gcTBfLkRlcXVldWUoKTsKKyAgRVhQRUNUX0VRKE5VTEwsIG4pOwor
CisgIG4gPSBxMV8uRGVxdWV1ZSgpOworICBBU1NFUlRfVFJVRShuICE9IE5VTEwpOworICBFWFBF
Q1RfRVEoMSwgKm4pOworICBFWFBFQ1RfRVEoMCwgcTFfLnNpemUoKSk7CisgIGRlbGV0ZSBuOwor
CisgIG4gPSBxMl8uRGVxdWV1ZSgpOworICBBU1NFUlRfVFJVRShuICE9IE5VTEwpOworICBFWFBF
Q1RfRVEoMiwgKm4pOworICBFWFBFQ1RfRVEoMSwgcTJfLnNpemUoKSk7CisgIGRlbGV0ZSBuOwor
fQorYGBgCisKK1RoZSBhYm92ZSB1c2VzIGJvdGggYEFTU0VSVF8qYCBhbmQgYEVYUEVDVF8qYCBh
c3NlcnRpb25zLiBUaGUgcnVsZSBvZiB0aHVtYiBpcwordG8gdXNlIGBFWFBFQ1RfKmAgd2hlbiB5
b3Ugd2FudCB0aGUgdGVzdCB0byBjb250aW51ZSB0byByZXZlYWwgbW9yZSBlcnJvcnMKK2FmdGVy
IHRoZSBhc3NlcnRpb24gZmFpbHVyZSwgYW5kIHVzZSBgQVNTRVJUXypgIHdoZW4gY29udGludWlu
ZyBhZnRlciBmYWlsdXJlCitkb2Vzbid0IG1ha2Ugc2Vuc2UuIEZvciBleGFtcGxlLCB0aGUgc2Vj
b25kIGFzc2VydGlvbiBpbiB0aGUgYERlcXVldWVgIHRlc3QgaXMKK2BBU1NFUlRfVFJVRShuICE9
IE5VTEwpYCwgYXMgd2UgbmVlZCB0byBkZXJlZmVyZW5jZSB0aGUgcG9pbnRlciBgbmAgbGF0ZXIs
Cit3aGljaCB3b3VsZCBsZWFkIHRvIGEgc2VnZmF1bHQgd2hlbiBgbmAgaXMgYE5VTExgLgorCitX
aGVuIHRoZXNlIHRlc3RzIHJ1biwgdGhlIGZvbGxvd2luZyBoYXBwZW5zOgorICAxLiBHb29nbGUg
VGVzdCBjb25zdHJ1Y3RzIGEgYFF1ZXVlVGVzdGAgb2JqZWN0IChsZXQncyBjYWxsIGl0IGB0MWAg
KS4KKyAgMS4gYHQxLlNldFVwKClgIGluaXRpYWxpemVzIGB0MWAgLgorICAxLiBUaGUgZmlyc3Qg
dGVzdCAoIGBJc0VtcHR5SW5pdGlhbGx5YCApIHJ1bnMgb24gYHQxYCAuCisgIDEuIGB0MS5UZWFy
RG93bigpYCBjbGVhbnMgdXAgYWZ0ZXIgdGhlIHRlc3QgZmluaXNoZXMuCisgIDEuIGB0MWAgaXMg
ZGVzdHJ1Y3RlZC4KKyAgMS4gVGhlIGFib3ZlIHN0ZXBzIGFyZSByZXBlYXRlZCBvbiBhbm90aGVy
IGBRdWV1ZVRlc3RgIG9iamVjdCwgdGhpcyB0aW1lIHJ1bm5pbmcgdGhlIGBEZXF1ZXVlV29ya3Ng
IHRlc3QuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCitfTm90ZV86
IEdvb2dsZSBUZXN0IGF1dG9tYXRpY2FsbHkgc2F2ZXMgYWxsIF9Hb29nbGUgVGVzdF8gZmxhZ3Mg
d2hlbiBhIHRlc3QKK29iamVjdCBpcyBjb25zdHJ1Y3RlZCwgYW5kIHJlc3RvcmVzIHRoZW0gd2hl
biBpdCBpcyBkZXN0cnVjdGVkLgorCisjIEludm9raW5nIHRoZSBUZXN0cyAjCisKK2BURVNUKClg
IGFuZCBgVEVTVF9GKClgIGltcGxpY2l0bHkgcmVnaXN0ZXIgdGhlaXIgdGVzdHMgd2l0aCBHb29n
bGUgVGVzdC4gU28sIHVubGlrZSB3aXRoIG1hbnkgb3RoZXIgQysrIHRlc3RpbmcgZnJhbWV3b3Jr
cywgeW91IGRvbid0IGhhdmUgdG8gcmUtbGlzdCBhbGwgeW91ciBkZWZpbmVkIHRlc3RzIGluIG9y
ZGVyIHRvIHJ1biB0aGVtLgorCitBZnRlciBkZWZpbmluZyB5b3VyIHRlc3RzLCB5b3UgY2FuIHJ1
biB0aGVtIHdpdGggYFJVTl9BTExfVEVTVFMoKWAgLCB3aGljaCByZXR1cm5zIGAwYCBpZiBhbGwg
dGhlIHRlc3RzIGFyZSBzdWNjZXNzZnVsLCBvciBgMWAgb3RoZXJ3aXNlLiBOb3RlIHRoYXQgYFJV
Tl9BTExfVEVTVFMoKWAgcnVucyBfYWxsIHRlc3RzXyBpbiB5b3VyIGxpbmsgdW5pdCAtLSB0aGV5
IGNhbiBiZSBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLCBvciBldmVuIGRpZmZlcmVudCBzb3Vy
Y2UgZmlsZXMuCisKK1doZW4gaW52b2tlZCwgdGhlIGBSVU5fQUxMX1RFU1RTKClgIG1hY3JvOgor
ICAxLiBTYXZlcyB0aGUgc3RhdGUgb2YgYWxsICBHb29nbGUgVGVzdCBmbGFncy4KKyAgMS4gQ3Jl
YXRlcyBhIHRlc3QgZml4dHVyZSBvYmplY3QgZm9yIHRoZSBmaXJzdCB0ZXN0LgorICAxLiBJbml0
aWFsaXplcyBpdCB2aWEgYFNldFVwKClgLgorICAxLiBSdW5zIHRoZSB0ZXN0IG9uIHRoZSBmaXh0
dXJlIG9iamVjdC4KKyAgMS4gQ2xlYW5zIHVwIHRoZSBmaXh0dXJlIHZpYSBgVGVhckRvd24oKWAu
CisgIDEuIERlbGV0ZXMgdGhlIGZpeHR1cmUuCisgIDEuIFJlc3RvcmVzIHRoZSBzdGF0ZSBvZiBh
bGwgR29vZ2xlIFRlc3QgZmxhZ3MuCisgIDEuIFJlcGVhdHMgdGhlIGFib3ZlIHN0ZXBzIGZvciB0
aGUgbmV4dCB0ZXN0LCB1bnRpbCBhbGwgdGVzdHMgaGF2ZSBydW4uCisKK0luIGFkZGl0aW9uLCBp
ZiB0aGUgdGV4dCBmaXh0dXJlJ3MgY29uc3RydWN0b3IgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVy
ZSBpbgorc3RlcCAyLCB0aGVyZSBpcyBubyBwb2ludCBmb3Igc3RlcCAzIC0gNSBhbmQgdGhleSBh
cmUgdGh1cyBza2lwcGVkLiBTaW1pbGFybHksCitpZiBzdGVwIDMgZ2VuZXJhdGVzIGEgZmF0YWwg
ZmFpbHVyZSwgc3RlcCA0IHdpbGwgYmUgc2tpcHBlZC4KKworX0ltcG9ydGFudF86IFlvdSBtdXN0
IG5vdCBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYCwgb3IgYGdj
Y2AKK3dpbGwgZ2l2ZSB5b3UgYSBjb21waWxlciBlcnJvci4gVGhlIHJhdGlvbmFsZSBmb3IgdGhp
cyBkZXNpZ24gaXMgdGhhdCB0aGUKK2F1dG9tYXRlZCB0ZXN0aW5nIHNlcnZpY2UgZGV0ZXJtaW5l
cyB3aGV0aGVyIGEgdGVzdCBoYXMgcGFzc2VkIGJhc2VkIG9uIGl0cworZXhpdCBjb2RlLCBub3Qg
b24gaXRzIHN0ZG91dC9zdGRlcnIgb3V0cHV0OyB0aHVzIHlvdXIgYG1haW4oKWAgZnVuY3Rpb24g
bXVzdAorcmV0dXJuIHRoZSB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYC4KKworQWxzbywgeW91
IHNob3VsZCBjYWxsIGBSVU5fQUxMX1RFU1RTKClgIG9ubHkgKipvbmNlKiouIENhbGxpbmcgaXQg
bW9yZSB0aGFuIG9uY2UKK2NvbmZsaWN0cyB3aXRoIHNvbWUgYWR2YW5jZWQgR29vZ2xlIFRlc3Qg
ZmVhdHVyZXMgKGUuZy4gdGhyZWFkLXNhZmUgZGVhdGgKK3Rlc3RzKSBhbmQgdGh1cyBpcyBub3Qg
c3VwcG9ydGVkLgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyBX
cml0aW5nIHRoZSBtYWluKCkgRnVuY3Rpb24gIworCitZb3UgY2FuIHN0YXJ0IGZyb20gdGhpcyBi
b2lsZXJwbGF0ZToKK2BgYAorI2luY2x1ZGUgInRoaXMvcGFja2FnZS9mb28uaCIKKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCisvLyBUaGUgZml4dHVyZSBmb3IgdGVz
dGluZyBjbGFzcyBGb28uCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
CisgcHJvdGVjdGVkOgorICAvLyBZb3UgY2FuIHJlbW92ZSBhbnkgb3IgYWxsIG9mIHRoZSBmb2xs
b3dpbmcgZnVuY3Rpb25zIGlmIGl0cyBib2R5CisgIC8vIGlzIGVtcHR5LgorCisgIEZvb1Rlc3Qo
KSB7CisgICAgLy8gWW91IGNhbiBkbyBzZXQtdXAgd29yayBmb3IgZWFjaCB0ZXN0IGhlcmUuCisg
IH0KKworICB2aXJ0dWFsIH5Gb29UZXN0KCkgeworICAgIC8vIFlvdSBjYW4gZG8gY2xlYW4tdXAg
d29yayB0aGF0IGRvZXNuJ3QgdGhyb3cgZXhjZXB0aW9ucyBoZXJlLgorICB9CisKKyAgLy8gSWYg
dGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIGFyZSBub3QgZW5vdWdoIGZvciBzZXR0aW5n
IHVwCisgIC8vIGFuZCBjbGVhbmluZyB1cCBlYWNoIHRlc3QsIHlvdSBjYW4gZGVmaW5lIHRoZSBm
b2xsb3dpbmcgbWV0aG9kczoKKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgLy8gQ29k
ZSBoZXJlIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjb25zdHJ1Y3RvciAo
cmlnaHQKKyAgICAvLyBiZWZvcmUgZWFjaCB0ZXN0KS4KKyAgfQorCisgIHZpcnR1YWwgdm9pZCBU
ZWFyRG93bigpIHsKKyAgICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkg
YWZ0ZXIgZWFjaCB0ZXN0IChyaWdodAorICAgIC8vIGJlZm9yZSB0aGUgZGVzdHJ1Y3RvcikuCisg
IH0KKworICAvLyBPYmplY3RzIGRlY2xhcmVkIGhlcmUgY2FuIGJlIHVzZWQgYnkgYWxsIHRlc3Rz
IGluIHRoZSB0ZXN0IGNhc2UgZm9yIEZvby4KK307CisKKy8vIFRlc3RzIHRoYXQgdGhlIEZvbzo6
QmFyKCkgbWV0aG9kIGRvZXMgQWJjLgorVEVTVF9GKEZvb1Rlc3QsIE1ldGhvZEJhckRvZXNBYmMp
IHsKKyAgY29uc3Qgc3RyaW5nIGlucHV0X2ZpbGVwYXRoID0gInRoaXMvcGFja2FnZS90ZXN0ZGF0
YS9teWlucHV0ZmlsZS5kYXQiOworICBjb25zdCBzdHJpbmcgb3V0cHV0X2ZpbGVwYXRoID0gInRo
aXMvcGFja2FnZS90ZXN0ZGF0YS9teW91dHB1dGZpbGUuZGF0IjsKKyAgRm9vIGY7CisgIEVYUEVD
VF9FUSgwLCBmLkJhcihpbnB1dF9maWxlcGF0aCwgb3V0cHV0X2ZpbGVwYXRoKSk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgRm9vIGRvZXMgWHl6LgorVEVTVF9GKEZvb1Rlc3QsIERvZXNYeXopIHsKKyAg
Ly8gRXhlcmNpc2VzIHRoZSBYeXogZmVhdHVyZSBvZiBGb28uCit9CisKK30gIC8vIG5hbWVzcGFj
ZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9Citg
YGAKKworVGhlIGA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClgIGZ1bmN0aW9uIHBhcnNlcyB0
aGUgY29tbWFuZCBsaW5lIGZvciBHb29nbGUKK1Rlc3QgZmxhZ3MsIGFuZCByZW1vdmVzIGFsbCBy
ZWNvZ25pemVkIGZsYWdzLiBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBjb250cm9sIGEKK3Rlc3Qg
cHJvZ3JhbSdzIGJlaGF2aW9yIHZpYSB2YXJpb3VzIGZsYWdzLCB3aGljaCB3ZSdsbCBjb3ZlciBp
biBbQWR2YW5jZWRHdWlkZV0oVjFfN19BZHZhbmNlZEd1aWRlLm1kKS4KK1lvdSBtdXN0IGNhbGwg
dGhpcyBmdW5jdGlvbiBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9URVNUUygpYCwgb3IgdGhlIGZs
YWdzCit3b24ndCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4KKworT24gV2luZG93cywgYEluaXRH
b29nbGVUZXN0KClgIGFsc28gd29ya3Mgd2l0aCB3aWRlIHN0cmluZ3MsIHNvIGl0IGNhbiBiZSB1
c2VkCitpbiBwcm9ncmFtcyBjb21waWxlZCBpbiBgVU5JQ09ERWAgbW9kZSBhcyB3ZWxsLgorCitC
dXQgbWF5YmUgeW91IHRoaW5rIHRoYXQgd3JpdGluZyBhbGwgdGhvc2UgbWFpbigpIGZ1bmN0aW9u
cyBpcyB0b28gbXVjaCB3b3JrPyBXZSBhZ3JlZSB3aXRoIHlvdSBjb21wbGV0ZWx5IGFuZCB0aGF0
J3Mgd2h5IEdvb2dsZSBUZXN0IHByb3ZpZGVzIGEgYmFzaWMgaW1wbGVtZW50YXRpb24gb2YgbWFp
bigpLiBJZiBpdCBmaXRzIHlvdXIgbmVlZHMsIHRoZW4ganVzdCBsaW5rIHlvdXIgdGVzdCB3aXRo
IGd0ZXN0XF9tYWluIGxpYnJhcnkgYW5kIHlvdSBhcmUgZ29vZCB0byBnby4KKworIyMgSW1wb3J0
YW50IG5vdGUgZm9yIFZpc3VhbCBDKysgdXNlcnMgIyMKK0lmIHlvdSBwdXQgeW91ciB0ZXN0cyBp
bnRvIGEgbGlicmFyeSBhbmQgeW91ciBgbWFpbigpYCBmdW5jdGlvbiBpcyBpbiBhIGRpZmZlcmVu
dCBsaWJyYXJ5IG9yIGluIHlvdXIgLmV4ZSBmaWxlLCB0aG9zZSB0ZXN0cyB3aWxsIG5vdCBydW4u
IFRoZSByZWFzb24gaXMgYSBbYnVnXShodHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNvbS9mZWVk
YmFjay92aWV3ZmVlZGJhY2suYXNweD9GZWVkYmFja0lEPTI0NDQxMCZzaXRlaWQ9MjEwKSBpbiBW
aXN1YWwgQysrLiBXaGVuIHlvdSBkZWZpbmUgeW91ciB0ZXN0cywgR29vZ2xlIFRlc3QgY3JlYXRl
cyBjZXJ0YWluIHN0YXRpYyBvYmplY3RzIHRvIHJlZ2lzdGVyIHRoZW0uIFRoZXNlIG9iamVjdHMg
YXJlIG5vdCByZWZlcmVuY2VkIGZyb20gZWxzZXdoZXJlIGJ1dCB0aGVpciBjb25zdHJ1Y3RvcnMg
YXJlIHN0aWxsIHN1cHBvc2VkIHRvIHJ1bi4gV2hlbiBWaXN1YWwgQysrIGxpbmtlciBzZWVzIHRo
YXQgbm90aGluZyBpbiB0aGUgbGlicmFyeSBpcyByZWZlcmVuY2VkIGZyb20gb3RoZXIgcGxhY2Vz
IGl0IHRocm93cyB0aGUgbGlicmFyeSBvdXQuIFlvdSBoYXZlIHRvIHJlZmVyZW5jZSB5b3VyIGxp
YnJhcnkgd2l0aCB0ZXN0cyBmcm9tIHlvdXIgbWFpbiBwcm9ncmFtIHRvIGtlZXAgdGhlIGxpbmtl
ciBmcm9tIGRpc2NhcmRpbmcgaXQuIEhlcmUgaXMgaG93IHRvIGRvIGl0LiBTb21ld2hlcmUgaW4g
eW91ciBsaWJyYXJ5IGNvZGUgZGVjbGFyZSBhIGZ1bmN0aW9uOgorYGBgCitfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgaW50IFB1bGxJbk15TGlicmFyeSgpIHsgcmV0dXJuIDA7IH0KK2BgYAorSWYgeW91
IHB1dCB5b3VyIHRlc3RzIGluIGEgc3RhdGljIGxpYnJhcnkgKG5vdCBETEwpIHRoZW4gYF9fZGVj
bHNwZWMoZGxsZXhwb3J0KWAgaXMgbm90IHJlcXVpcmVkLiBOb3csIGluIHlvdXIgbWFpbiBwcm9n
cmFtLCB3cml0ZSBhIGNvZGUgdGhhdCBpbnZva2VzIHRoYXQgZnVuY3Rpb246CitgYGAKK2ludCBQ
dWxsSW5NeUxpYnJhcnkoKTsKK3N0YXRpYyBpbnQgZHVtbXkgPSBQdWxsSW5NeUxpYnJhcnkoKTsK
K2BgYAorVGhpcyB3aWxsIGtlZXAgeW91ciB0ZXN0cyByZWZlcmVuY2VkIGFuZCB3aWxsIG1ha2Ug
dGhlbSByZWdpc3RlciB0aGVtc2VsdmVzIGF0IHN0YXJ0dXAuCisKK0luIGFkZGl0aW9uLCBpZiB5
b3UgZGVmaW5lIHlvdXIgdGVzdHMgaW4gYSBzdGF0aWMgbGlicmFyeSwgYWRkIGAvT1BUOk5PUkVG
YCB0byB5b3VyIG1haW4gcHJvZ3JhbSBsaW5rZXIgb3B0aW9ucy4gSWYgeW91IHVzZSBNU1ZDKysg
SURFLCBnbyB0byB5b3VyIC5leGUgcHJvamVjdCBwcm9wZXJ0aWVzL0NvbmZpZ3VyYXRpb24gUHJv
cGVydGllcy9MaW5rZXIvT3B0aW1pemF0aW9uIGFuZCBzZXQgUmVmZXJlbmNlcyBzZXR0aW5nIHRv
IGBLZWVwIFVucmVmZXJlbmNlZCBEYXRhICgvT1BUOk5PUkVGKWAuIFRoaXMgd2lsbCBrZWVwIFZp
c3VhbCBDKysgbGlua2VyIGZyb20gZGlzY2FyZGluZyBpbmRpdmlkdWFsIHN5bWJvbHMgZ2VuZXJh
dGVkIGJ5IHlvdXIgdGVzdHMgZnJvbSB0aGUgZmluYWwgZXhlY3V0YWJsZS4KKworVGhlcmUgaXMg
b25lIG1vcmUgcGl0ZmFsbCwgdGhvdWdoLiBJZiB5b3UgdXNlIEdvb2dsZSBUZXN0IGFzIGEgc3Rh
dGljIGxpYnJhcnkgKHRoYXQncyBob3cgaXQgaXMgZGVmaW5lZCBpbiBndGVzdC52Y3Byb2opIHlv
dXIgdGVzdHMgbXVzdCBhbHNvIHJlc2lkZSBpbiBhIHN0YXRpYyBsaWJyYXJ5LiBJZiB5b3UgaGF2
ZSB0byBoYXZlIHRoZW0gaW4gYSBETEwsIHlvdSBfbXVzdF8gY2hhbmdlIEdvb2dsZSBUZXN0IHRv
IGJ1aWxkIGludG8gYSBETEwgYXMgd2VsbC4gT3RoZXJ3aXNlIHlvdXIgdGVzdHMgd2lsbCBub3Qg
cnVuIGNvcnJlY3RseSBvciB3aWxsIG5vdCBydW4gYXQgYWxsLiBUaGUgZ2VuZXJhbCBjb25jbHVz
aW9uIGhlcmUgaXM6IG1ha2UgeW91ciBsaWZlIGVhc2llciAtIGRvIG5vdCB3cml0ZSB5b3VyIHRl
c3RzIGluIGxpYnJhcmllcyEKKworIyBXaGVyZSB0byBHbyBmcm9tIEhlcmUgIworCitDb25ncmF0
dWxhdGlvbnMhIFlvdSd2ZSBsZWFybmVkIHRoZSBHb29nbGUgVGVzdCBiYXNpY3MuIFlvdSBjYW4g
c3RhcnQgd3JpdGluZworYW5kIHJ1bm5pbmcgR29vZ2xlIFRlc3QgdGVzdHMsIHJlYWQgc29tZSBb
c2FtcGxlc10oVjFfN19TYW1wbGVzLm1kKSwgb3IgY29udGludWUgd2l0aAorW0FkdmFuY2VkR3Vp
ZGVdKFYxXzdfQWR2YW5jZWRHdWlkZS5tZCksIHdoaWNoIGRlc2NyaWJlcyBtYW55IG1vcmUgdXNl
ZnVsIEdvb2dsZSBUZXN0IGZlYXR1cmVzLgorCisjIEtub3duIExpbWl0YXRpb25zICMKKworR29v
Z2xlIFRlc3QgaXMgZGVzaWduZWQgdG8gYmUgdGhyZWFkLXNhZmUuICBUaGUgaW1wbGVtZW50YXRp
b24gaXMKK3RocmVhZC1zYWZlIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGBwdGhyZWFkc2AgbGlicmFy
eSBpcyBhdmFpbGFibGUuICBJdAoraXMgY3VycmVudGx5IF91bnNhZmVfIHRvIHVzZSBHb29nbGUg
VGVzdCBhc3NlcnRpb25zIGZyb20gdHdvIHRocmVhZHMKK2NvbmN1cnJlbnRseSBvbiBvdGhlciBz
eXN0ZW1zIChlLmcuIFdpbmRvd3MpLiAgSW4gbW9zdCB0ZXN0cyB0aGlzIGlzCitub3QgYW4gaXNz
dWUgYXMgdXN1YWxseSB0aGUgYXNzZXJ0aW9ucyBhcmUgZG9uZSBpbiB0aGUgbWFpbiB0aHJlYWQu
IElmCit5b3Ugd2FudCB0byBoZWxwLCB5b3UgY2FuIHZvbHVudGVlciB0byBpbXBsZW1lbnQgdGhl
IG5lY2Vzc2FyeQorc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYGd0ZXN0LXBvcnQuaGAg
Zm9yIHlvdXIgcGxhdGZvcm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9k
b2NzL1YxXzdfUHVtcE1hbnVhbC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFf
N19QdW1wTWFudWFsLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxODRmMTUzY2EyZWNhZDdjNjVjYjU4YzI3ZmIz
MWJkNzIzNzVmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9k
b2NzL1YxXzdfUHVtcE1hbnVhbC5tZApAQCAtMCwwICsxLDE3NyBAQAorCisKKzxiPlA8L2I+dW1w
IGlzIDxiPlU8L2I+c2VmdWwgZm9yIDxiPk08L2I+ZXRhIDxiPlA8L2I+cm9ncmFtbWluZy4KKwor
IyBUaGUgUHJvYmxlbSAjCisKK1RlbXBsYXRlIGFuZCBtYWNybyBsaWJyYXJpZXMgb2Z0ZW4gbmVl
ZCB0byBkZWZpbmUgbWFueSBjbGFzc2VzLAorZnVuY3Rpb25zLCBvciBtYWNyb3MgdGhhdCB2YXJ5
IG9ubHkgKG9yIGFsbW9zdCBvbmx5KSBpbiB0aGUgbnVtYmVyIG9mCithcmd1bWVudHMgdGhleSB0
YWtlLiBJdCdzIGEgbG90IG9mIHJlcGV0aXRpdmUsIG1lY2hhbmljYWwsIGFuZAorZXJyb3ItcHJv
bmUgd29yay4KKworVmFyaWFkaWMgdGVtcGxhdGVzIGFuZCB2YXJpYWRpYyBtYWNyb3MgY2FuIGFs
bGV2aWF0ZSB0aGUgcHJvYmxlbS4KK0hvd2V2ZXIsIHdoaWxlIGJvdGggYXJlIGJlaW5nIGNvbnNp
ZGVyZWQgYnkgdGhlIEMrKyBjb21taXR0ZWUsIG5laXRoZXIKK2lzIGluIHRoZSBzdGFuZGFyZCB5
ZXQgb3Igd2lkZWx5IHN1cHBvcnRlZCBieSBjb21waWxlcnMuICBUaHVzIHRoZXkKK2FyZSBvZnRl
biBub3QgYSBnb29kIGNob2ljZSwgZXNwZWNpYWxseSB3aGVuIHlvdXIgY29kZSBuZWVkcyB0byBi
ZQorcG9ydGFibGUuIEFuZCB0aGVpciBjYXBhYmlsaXRpZXMgYXJlIHN0aWxsIGxpbWl0ZWQuCisK
K0FzIGEgcmVzdWx0LCBhdXRob3JzIG9mIHN1Y2ggbGlicmFyaWVzIG9mdGVuIGhhdmUgdG8gd3Jp
dGUgc2NyaXB0cyB0bworZ2VuZXJhdGUgdGhlaXIgaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIsIG91
ciBleHBlcmllbmNlIGlzIHRoYXQgaXQncwordGVkaW91cyB0byB3cml0ZSBzdWNoIHNjcmlwdHMs
IHdoaWNoIHRlbmQgdG8gcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mCit0aGUgZ2VuZXJhdGVkIGNv
ZGUgcG9vcmx5IGFuZCBhcmUgb2Z0ZW4gaGFyZCB0byByZWFkIGFuZCBlZGl0LiBGb3IKK2V4YW1w
bGUsIGEgc21hbGwgY2hhbmdlIG5lZWRlZCBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUgbWF5IHJlcXVp
cmUgc29tZQorbm9uLWludHVpdGl2ZSwgbm9uLXRyaXZpYWwgY2hhbmdlcyBpbiB0aGUgc2NyaXB0
LiBUaGlzIGlzIGVzcGVjaWFsbHkKK3BhaW5mdWwgd2hlbiBleHBlcmltZW50aW5nIHdpdGggdGhl
IGNvZGUuCisKKyMgT3VyIFNvbHV0aW9uICMKKworUHVtcCAoZm9yIFB1bXAgaXMgVXNlZnVsIGZv
ciBNZXRhIFByb2dyYW1taW5nLCBQcmV0dHkgVXNlZnVsIGZvciBNZXRhCitQcm9ncmFtbWluZywg
b3IgUHJhY3RpY2FsIFV0aWxpdHkgZm9yIE1ldGEgUHJvZ3JhbW1pbmcsIHdoaWNoZXZlciB5b3UK
K3ByZWZlcikgaXMgYSBzaW1wbGUgbWV0YS1wcm9ncmFtbWluZyB0b29sIGZvciBDKysuIFRoZSBp
ZGVhIGlzIHRoYXQgYQorcHJvZ3JhbW1lciB3cml0ZXMgYSBgZm9vLnB1bXBgIGZpbGUgd2hpY2gg
Y29udGFpbnMgQysrIGNvZGUgcGx1cyBtZXRhCitjb2RlIHRoYXQgbWFuaXB1bGF0ZXMgdGhlIEMr
KyBjb2RlLiBUaGUgbWV0YSBjb2RlIGNhbiBoYW5kbGUKK2l0ZXJhdGlvbnMgb3ZlciBhIHJhbmdl
LCBuZXN0ZWQgaXRlcmF0aW9ucywgbG9jYWwgbWV0YSB2YXJpYWJsZQorZGVmaW5pdGlvbnMsIHNp
bXBsZSBhcml0aG1ldGljLCBhbmQgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMuIFlvdSBjYW4KK3Zp
ZXcgaXQgYXMgYSBzbWFsbCBEb21haW4tU3BlY2lmaWMgTGFuZ3VhZ2UuIFRoZSBtZXRhIGxhbmd1
YWdlIGlzCitkZXNpZ25lZCB0byBiZSBub24taW50cnVzaXZlIChzLnQuIGl0IHdvbid0IGNvbmZ1
c2UgRW1hY3MnIEMrKyBtb2RlLAorZm9yIGV4YW1wbGUpIGFuZCBjb25jaXNlLCBtYWtpbmcgUHVt
cCBjb2RlIGludHVpdGl2ZSBhbmQgZWFzeSB0bworbWFpbnRhaW4uCisKKyMjIEhpZ2hsaWdodHMg
IyMKKworICAqIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBpbiBhIHNpbmdsZSBQeXRob24gc2NyaXB0
IGFuZCB0aHVzIHVsdHJhIHBvcnRhYmxlOiBubyBidWlsZCBvciBpbnN0YWxsYXRpb24gaXMgbmVl
ZGVkIGFuZCBpdCB3b3JrcyBjcm9zcyBwbGF0Zm9ybXMuCisgICogUHVtcCB0cmllcyB0byBiZSBz
bWFydCB3aXRoIHJlc3BlY3QgdG8gW0dvb2dsZSdzIHN0eWxlIGd1aWRlXShodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xlLXN0eWxlZ3VpZGUvKTogaXQgYnJlYWtzIGxvbmcgbGluZXMgKGVh
c3kgdG8gaGF2ZSB3aGVuIHRoZXkgYXJlIGdlbmVyYXRlZCkgYXQgYWNjZXB0YWJsZSBwbGFjZXMg
dG8gZml0IHdpdGhpbiA4MCBjb2x1bW5zIGFuZCBpbmRlbnQgdGhlIGNvbnRpbnVhdGlvbiBsaW5l
cyBjb3JyZWN0bHkuCisgICogVGhlIGZvcm1hdCBpcyBodW1hbi1yZWFkYWJsZSBhbmQgbW9yZSBj
b25jaXNlIHRoYW4gWE1MLgorICAqIFRoZSBmb3JtYXQgd29ya3MgcmVsYXRpdmVseSB3ZWxsIHdp
dGggRW1hY3MnIEMrKyBtb2RlLgorCisjIyBFeGFtcGxlcyAjIworCitUaGUgZm9sbG93aW5nIFB1
bXAgY29kZSAod2hlcmUgbWV0YSBrZXl3b3JkcyBzdGFydCB3aXRoIGAkYCwgYFtbYCBhbmQgYF1d
YCBhcmUgbWV0YSBicmFja2V0cywgYW5kIGAkJGAgc3RhcnRzIGEgbWV0YSBjb21tZW50IHRoYXQg
ZW5kcyB3aXRoIHRoZSBsaW5lKToKKworYGBgCiskdmFyIG4gPSAzICAgICAkJCBEZWZpbmVzIGEg
bWV0YSB2YXJpYWJsZSBuLgorJHJhbmdlIGkgMC4ubiAgJCQgRGVjbGFyZXMgdGhlIHJhbmdlIG9m
IG1ldGEgaXRlcmF0b3IgaSAoaW5jbHVzaXZlKS4KKyRmb3IgaSBbWworICAgICAgICAgICAgICAg
JCQgTWV0YSBsb29wLgorLy8gRm9vJGkgZG9lcyBibGFoIGZvciAkaS1hcnkgcHJlZGljYXRlcy4K
KyRyYW5nZSBqIDEuLmkKK3RlbXBsYXRlIDxzaXplX3QgTiAkZm9yIGogW1ssIHR5cGVuYW1lIEEk
al1dPgorY2xhc3MgRm9vJGkgeworJGlmIGkgPT0gMCBbWworICBibGFoIGE7CitdXSAkZWxpZiBp
IDw9IDIgW1sKKyAgYmxhaCBiOworXV0gJGVsc2UgW1sKKyAgYmxhaCBjOworXV0KK307CisKK11d
CitgYGAKKword2lsbCBiZSB0cmFuc2xhdGVkIGJ5IHRoZSBQdW1wIGNvbXBpbGVyIHRvOgorCitg
YGAKKy8vIEZvbzAgZG9lcyBibGFoIGZvciAwLWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNp
emVfdCBOPgorY2xhc3MgRm9vMCB7CisgIGJsYWggYTsKK307CisKKy8vIEZvbzEgZG9lcyBibGFo
IGZvciAxLWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBBMT4K
K2NsYXNzIEZvbzEgeworICBibGFoIGI7Cit9OworCisvLyBGb28yIGRvZXMgYmxhaCBmb3IgMi1h
cnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1l
IEEyPgorY2xhc3MgRm9vMiB7CisgIGJsYWggYjsKK307CisKKy8vIEZvbzMgZG9lcyBibGFoIGZv
ciAzLWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBBMSwgdHlw
ZW5hbWUgQTIsIHR5cGVuYW1lIEEzPgorY2xhc3MgRm9vMyB7CisgIGJsYWggYzsKK307CitgYGAK
KworSW4gYW5vdGhlciBleGFtcGxlLAorCitgYGAKKyRyYW5nZSBpIDEuLm4KK0Z1bmMoJGZvciBp
ICsgW1thJGldXSk7CiskJCBUaGUgdGV4dCBiZXR3ZWVuIGkgYW5kIFtbIGlzIHRoZSBzZXBhcmF0
b3IgYmV0d2VlbiBpdGVyYXRpb25zLgorYGBgCisKK3dpbGwgZ2VuZXJhdGUgb25lIG9mIHRoZSBm
b2xsb3dpbmcgbGluZXMgKHdpdGhvdXQgdGhlIGNvbW1lbnRzKSwgZGVwZW5kaW5nIG9uIHRoZSB2
YWx1ZSBvZiBgbmA6CisKK2BgYAorRnVuYygpOyAgICAgICAgICAgICAgLy8gSWYgbiBpcyAwLgor
RnVuYyhhMSk7ICAgICAgICAgICAgLy8gSWYgbiBpcyAxLgorRnVuYyhhMSArIGEyKTsgICAgICAg
Ly8gSWYgbiBpcyAyLgorRnVuYyhhMSArIGEyICsgYTMpOyAgLy8gSWYgbiBpcyAzLgorLy8gQW5k
IHNvIG9uLi4uCitgYGAKKworIyMgQ29uc3RydWN0cyAjIworCitXZSBzdXBwb3J0IHRoZSBmb2xs
b3dpbmcgbWV0YSBwcm9ncmFtbWluZyBjb25zdHJ1Y3RzOgorCit8IGAkdmFyIGlkID0gZXhwYCB8
IERlZmluZXMgYSBuYW1lZCBjb25zdGFudCB2YWx1ZS4gYCRpZGAgaXMgdmFsaWQgdXRpbCB0aGUg
ZW5kIG9mIHRoZSBjdXJyZW50IG1ldGEgbGV4aWNhbCBibG9jay4gfAorfDotLS0tLS0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYCRyYW5nZSBp
ZCBleHAuLmV4cGAgfCBTZXRzIHRoZSByYW5nZSBvZiBhbiBpdGVyYXRpb24gdmFyaWFibGUsIHdo
aWNoIGNhbiBiZSByZXVzZWQgaW4gbXVsdGlwbGUgbG9vcHMgbGF0ZXIuICAgICAgICAgIHwKK3wg
YCRmb3IgaWQgc2VwIFtbIGNvZGUgXV1gIHwgSXRlcmF0aW9uLiBUaGUgcmFuZ2Ugb2YgYGlkYCBt
dXN0IGhhdmUgYmVlbiBkZWZpbmVkIGVhcmxpZXIuIGAkaWRgIGlzIHZhbGlkIGluIGBjb2RlYC4g
ICAgICAgICB8Cit8IGAkKCQpYCAgICAgICAgICB8IEdlbmVyYXRlcyBhIHNpbmdsZSBgJGAgY2hh
cmFjdGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorfCBgJGlkYCAgICAgICAgICAgfCBWYWx1ZSBvZiB0aGUgbmFtZWQgY29u
c3RhbnQgb3IgaXRlcmF0aW9uIHZhcmlhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKK3wgYCQoZXhwKWAgICAgICAgIHwgVmFsdWUgb2YgdGhlIGV4cHJl
c3Npb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8Cit8IGAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2hg
IHwgQ29uZGl0aW9uYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBbWyBjb2RlIF1d
YCAgICB8IE1ldGEgbGV4aWNhbCBibG9jay4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgY3BwX2Nv
ZGVgICAgICAgfCBSYXcgQysrIGNvZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYCQk
IGNvbW1lbnRgICAgIHwgTWV0YSBjb21tZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisK
KyoqTm90ZToqKiBUbyBnaXZlIHRoZSB1c2VyIHNvbWUgZnJlZWRvbSBpbiBmb3JtYXR0aW5nIHRo
ZSBQdW1wIHNvdXJjZQorY29kZSwgUHVtcCBpZ25vcmVzIGEgbmV3LWxpbmUgY2hhcmFjdGVyIGlm
IGl0J3MgcmlnaHQgYWZ0ZXIgYCRmb3IgZm9vYAorb3IgbmV4dCB0byBgW1tgIG9yIGBdXWAuIFdp
dGhvdXQgdGhpcyBydWxlIHlvdSdsbCBvZnRlbiBiZSBmb3JjZWQgdG8gd3JpdGUKK3ZlcnkgbG9u
ZyBsaW5lcyB0byBnZXQgdGhlIGRlc2lyZWQgb3V0cHV0LiBUaGVyZWZvcmUgc29tZXRpbWVzIHlv
dSBtYXkKK25lZWQgdG8gaW5zZXJ0IGFuIGV4dHJhIG5ldy1saW5lIGluIHN1Y2ggcGxhY2VzIGZv
ciBhIG5ldy1saW5lIHRvIHNob3cKK3VwIGluIHlvdXIgb3V0cHV0LgorCisjIyBHcmFtbWFyICMj
CisKK2BgYAorY29kZSA6Oj0gYXRvbWljX2NvZGUqCithdG9taWNfY29kZSA6Oj0gJHZhciBpZCA9
IGV4cAorICAgIHwgJHZhciBpZCA9IFtbIGNvZGUgXV0KKyAgICB8ICRyYW5nZSBpZCBleHAuLmV4
cAorICAgIHwgJGZvciBpZCBzZXAgW1sgY29kZSBdXQorICAgIHwgJCgkKQorICAgIHwgJGlkCisg
ICAgfCAkKGV4cCkKKyAgICB8ICRpZiBleHAgW1sgY29kZSBdXSBlbHNlX2JyYW5jaAorICAgIHwg
W1sgY29kZSBdXQorICAgIHwgY3BwX2NvZGUKK3NlcCA6Oj0gY3BwX2NvZGUgfCBlbXB0eV9zdHJp
bmcKK2Vsc2VfYnJhbmNoIDo6PSAkZWxzZSBbWyBjb2RlIF1dCisgICAgfCAkZWxpZiBleHAgW1sg
Y29kZSBdXSBlbHNlX2JyYW5jaAorICAgIHwgZW1wdHlfc3RyaW5nCitleHAgOjo9IHNpbXBsZV9l
eHByZXNzaW9uX2luX1B5dGhvbl9zeW50YXgKK2BgYAorCisjIyBDb2RlICMjCisKK1lvdSBjYW4g
ZmluZCB0aGUgc291cmNlIGNvZGUgb2YgUHVtcCBpbiBbc2NyaXB0cy9wdW1wLnB5XSguLi9zY3Jp
cHRzL3B1bXAucHkpLiBJdCBpcyBzdGlsbAordmVyeSB1bnBvbGlzaGVkIGFuZCBsYWNrcyBhdXRv
bWF0ZWQgdGVzdHMsIGFsdGhvdWdoIGl0IGhhcyBiZWVuCitzdWNjZXNzZnVsbHkgdXNlZCBtYW55
IHRpbWVzLiBJZiB5b3UgZmluZCBhIGNoYW5jZSB0byB1c2UgaXQgaW4geW91cgorcHJvamVjdCwg
cGxlYXNlIGxldCB1cyBrbm93IHdoYXQgeW91IHRoaW5rISAgV2UgYWxzbyB3ZWxjb21lIGhlbHAg
b24KK2ltcHJvdmluZyBQdW1wLgorCisjIyBSZWFsIEV4YW1wbGVzICMjCisKK1lvdSBjYW4gZmlu
ZCByZWFsLXdvcmxkIGFwcGxpY2F0aW9ucyBvZiBQdW1wIGluIFtHb29nbGUgVGVzdF0oaHR0cDov
L3d3dy5nb29nbGUuY29tL2NvZGVzZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3BhY2thZ2UlM0Fo
dHRwJTNBJTJGJTJGZ29vZ2xldGVzdFwuZ29vZ2xlY29kZVwuY29tKSBhbmQgW0dvb2dsZSBNb2Nr
XShodHRwOi8vd3d3Lmdvb2dsZS5jb20vY29kZXNlYXJjaD9xPWZpbGUlM0FcLnB1bXAlMjQrcGFj
a2FnZSUzQWh0dHAlM0ElMkYlMkZnb29nbGVtb2NrXC5nb29nbGVjb2RlXC5jb20pLiAgVGhlIHNv
dXJjZSBmaWxlIGBmb28uaC5wdW1wYCBnZW5lcmF0ZXMgYGZvby5oYC4KKworIyMgVGlwcyAjIwor
CisgICogSWYgYSBtZXRhIHZhcmlhYmxlIGlzIGZvbGxvd2VkIGJ5IGEgbGV0dGVyIG9yIGRpZ2l0
LCB5b3UgY2FuIHNlcGFyYXRlIHRoZW0gdXNpbmcgYFtbXV1gLCB3aGljaCBpbnNlcnRzIGFuIGVt
cHR5IHN0cmluZy4gRm9yIGV4YW1wbGUgYEZvbyRqW1tdXUhlbHBlcmAgZ2VuZXJhdGUgYEZvbzFI
ZWxwZXJgIHdoZW4gYGpgIGlzIDEuCisgICogVG8gYXZvaWQgZXh0cmEtbG9uZyBQdW1wIHNvdXJj
ZSBsaW5lcywgeW91IGNhbiBicmVhayBhIGxpbmUgYW55d2hlcmUgeW91IHdhbnQgYnkgaW5zZXJ0
aW5nIGBbW11dYCBmb2xsb3dlZCBieSBhIG5ldyBsaW5lLiBTaW5jZSBhbnkgbmV3LWxpbmUgY2hh
cmFjdGVyIG5leHQgdG8gYFtbYCBvciBgXV1gIGlzIGlnbm9yZWQsIHRoZSBnZW5lcmF0ZWQgY29k
ZSB3b24ndCBjb250YWluIHRoaXMgbmV3IGxpbmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9kb2NzL1YxXzdfU2FtcGxlcy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2RvY3MvVjFfN19TYW1wbGVzLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyMWQyMDA1NjczNTQ1N2Y2ZjQ5YWVj
YzYxMjE5ZGFkMjI2MTJiZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9kb2NzL1YxXzdfU2FtcGxlcy5tZApAQCAtMCwwICsxLDE0IEBACitJZiB5b3UncmUgbGlr
ZSB1cywgeW91J2QgbGlrZSB0byBsb29rIGF0IHNvbWUgR29vZ2xlIFRlc3Qgc2FtcGxlIGNvZGUu
ICBUaGUKK1tzYW1wbGVzIGZvbGRlcl0oLi4vc2FtcGxlcykgaGFzIGEgbnVtYmVyIG9mIHdlbGwt
Y29tbWVudGVkIHNhbXBsZXMgc2hvd2luZyBob3cgdG8gdXNlIGEKK3ZhcmlldHkgb2YgR29vZ2xl
IFRlc3QgZmVhdHVyZXMuCisKKyAgKiBbU2FtcGxlICMxXSguLi9zYW1wbGVzL3NhbXBsZTFfdW5p
dHRlc3QuY2MpIHNob3dzIHRoZSBiYXNpYyBzdGVwcyBvZiB1c2luZyBHb29nbGUgVGVzdCB0byB0
ZXN0IEMrKyBmdW5jdGlvbnMuCisgICogW1NhbXBsZSAjMl0oLi4vc2FtcGxlcy9zYW1wbGUyX3Vu
aXR0ZXN0LmNjKSBzaG93cyBhIG1vcmUgY29tcGxleCB1bml0IHRlc3QgZm9yIGEgY2xhc3Mgd2l0
aCBtdWx0aXBsZSBtZW1iZXIgZnVuY3Rpb25zLgorICAqIFtTYW1wbGUgIzNdKC4uL3NhbXBsZXMv
c2FtcGxlM191bml0dGVzdC5jYykgdXNlcyBhIHRlc3QgZml4dHVyZS4KKyAgKiBbU2FtcGxlICM0
XSguLi9zYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QuY2MpIGlzIGFub3RoZXIgYmFzaWMgZXhhbXBs
ZSBvZiB1c2luZyBHb29nbGUgVGVzdC4KKyAgKiBbU2FtcGxlICM1XSguLi9zYW1wbGVzL3NhbXBs
ZTVfdW5pdHRlc3QuY2MpIHRlYWNoZXMgaG93IHRvIHJldXNlIGEgdGVzdCBmaXh0dXJlIGluIG11
bHRpcGxlIHRlc3QgY2FzZXMgYnkgZGVyaXZpbmcgc3ViLWZpeHR1cmVzIGZyb20gaXQuCisgICog
W1NhbXBsZSAjNl0oLi4vc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjKSBkZW1vbnN0cmF0ZXMg
dHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorICAqIFtTYW1wbGUgIzddKC4uL3NhbXBsZXMvc2Ft
cGxlN191bml0dGVzdC5jYykgdGVhY2hlcyB0aGUgYmFzaWNzIG9mIHZhbHVlLXBhcmFtZXRlcml6
ZWQgdGVzdHMuCisgICogW1NhbXBsZSAjOF0oLi4vc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNj
KSBzaG93cyB1c2luZyBgQ29tYmluZSgpYCBpbiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgor
ICAqIFtTYW1wbGUgIzldKC4uL3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYykgc2hvd3MgdXNl
IG9mIHRoZSBsaXN0ZW5lciBBUEkgdG8gbW9kaWZ5IEdvb2dsZSBUZXN0J3MgY29uc29sZSBvdXRw
dXQgYW5kIHRoZSB1c2Ugb2YgaXRzIHJlZmxlY3Rpb24gQVBJIHRvIGluc3BlY3QgdGVzdCByZXN1
bHRzLgorICAqIFtTYW1wbGUgIzEwXSguLi9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjKSBz
aG93cyB1c2Ugb2YgdGhlIGxpc3RlbmVyIEFQSSB0byBpbXBsZW1lbnQgYSBwcmltaXRpdmUgbWVt
b3J5IGxlYWsgY2hlY2tlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2Rv
Y3MvVjFfN19YY29kZUd1aWRlLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV83
X1hjb2RlR3VpZGUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmYyNGJmNTFiZmM0NTQxMmY2NThiZGRkNTNhMzMy
ZTE0OWQ3NzMwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2Rv
Y3MvVjFfN19YY29kZUd1aWRlLm1kCkBAIC0wLDAgKzEsOTMgQEAKKworCitUaGlzIGd1aWRlIHdp
bGwgZXhwbGFpbiBob3cgdG8gdXNlIHRoZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaW4geW91
ciBYY29kZSBwcm9qZWN0cyBvbiBNYWMgT1MgWC4gVGhpcyB0dXRvcmlhbCBiZWdpbnMgYnkgcXVp
Y2tseSBleHBsYWluaW5nIHdoYXQgdG8gZG8gZm9yIGV4cGVyaWVuY2VkIHVzZXJzLiBBZnRlciB0
aGUgcXVpY2sgc3RhcnQsIHRoZSBndWlkZSBnb2VzIHByb3ZpZGVzIGFkZGl0aW9uYWwgZXhwbGFu
YXRpb24gYWJvdXQgZWFjaCBzdGVwLgorCisjIFF1aWNrIFN0YXJ0ICMKKworSGVyZSBpcyB0aGUg
cXVpY2sgZ3VpZGUgZm9yIHVzaW5nIEdvb2dsZSBUZXN0IGluIHlvdXIgWGNvZGUgcHJvamVjdC4K
KworICAxLiBEb3dubG9hZCB0aGUgc291cmNlIGZyb20gdGhlIFt3ZWJzaXRlXShodHRwOi8vY29k
ZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdCkgdXNpbmcgdGhpcyBjb21tYW5kOiBgc3ZuIGNoZWNr
b3V0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay8gZ29vZ2xldGVz
dC1yZWFkLW9ubHlgCisgIDEuIE9wZW4gdXAgdGhlIGBndGVzdC54Y29kZXByb2pgIGluIHRoZSBg
Z29vZ2xldGVzdC1yZWFkLW9ubHkveGNvZGUvYCBkaXJlY3RvcnkgYW5kIGJ1aWxkIHRoZSBndGVz
dC5mcmFtZXdvcmsuCisgIDEuIENyZWF0ZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0IGluIHlv
dXIgWGNvZGUgcHJvamVjdCBjYWxsZWQgc29tZXRoaW5nIGxpa2UgIlVuaXRUZXN0cyIKKyAgMS4g
QWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8geW91ciBwcm9qZWN0IGFuZCBhZGQgaXQgdG8gdGhl
ICJMaW5rIEJpbmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgIlVuaXRUZXN0cyIK
KyAgMS4gQWRkIHlvdXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRvIHRoZSAiQ29tcGlsZSBTb3Vy
Y2VzIiBidWlsZCBwaGFzZSBvZiAiVW5pdFRlc3RzIgorICAxLiBFZGl0IHRoZSAiVW5pdFRlc3Rz
IiBleGVjdXRhYmxlIGFuZCBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZWQgIkRZTERc
X0ZSQU1FV09SS1xfUEFUSCIgd2l0aCBhIHZhbHVlIGVxdWFsIHRvIHRoZSBwYXRoIHRvIHRoZSBm
cmFtZXdvcmsgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHJlbGF0aXZlIHRvIHRoZSBj
b21waWxlZCBleGVjdXRhYmxlLgorICAxLiBCdWlsZCBhbmQgR28KKworVGhlIGZvbGxvd2luZyBz
ZWN0aW9ucyBmdXJ0aGVyIGV4cGxhaW4gZWFjaCBvZiB0aGUgc3RlcHMgbGlzdGVkIGFib3ZlIGlu
IGRlcHRoLCBkZXNjcmliaW5nIGluIG1vcmUgZGV0YWlsIGhvdyB0byBjb21wbGV0ZSBpdCBpbmNs
dWRpbmcgc29tZSB2YXJpYXRpb25zLgorCisjIEdldCB0aGUgU291cmNlICMKKworQ3VycmVudGx5
LCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIGRpc2N1c3NlZCBoZXJlIGlzbid0IGF2YWlsYWJsZSBpbiBh
IHRhZ2dlZCByZWxlYXNlIG9mIEdvb2dsZSBUZXN0LCBpdCBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0
aGUgdHJ1bmsuIEFzIGV4cGxhaW5lZCBhdCB0aGUgR29vZ2xlIFRlc3QgW3NpdGVdKGh0dHA6Ly9j
b2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L3NvdXJjZS9jaGVja291dCI+c3ZuKSwgeW91IGNh
biBnZXQgdGhlIGNvZGUgZnJvbSBhbm9ueW1vdXMgU1ZOIHdpdGggdGhpcyBjb21tYW5kOgorCitg
YGAKK3N2biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1
bmsvIGdvb2dsZXRlc3QtcmVhZC1vbmx5CitgYGAKKworQWx0ZXJuYXRpdmVseSwgaWYgeW91IGFy
ZSB3b3JraW5nIHdpdGggU3VidmVyc2lvbiBpbiB5b3VyIG93biBjb2RlIGJhc2UsIHlvdSBjYW4g
YWRkIEdvb2dsZSBUZXN0IGFzIGFuIGV4dGVybmFsIGRlcGVuZGVuY3kgdG8geW91ciBvd24gU3Vi
dmVyc2lvbiByZXBvc2l0b3J5LiBCeSBmb2xsb3dpbmcgdGhpcyBhcHByb2FjaCwgZXZlcnlvbmUg
dGhhdCBjaGVja3Mgb3V0IHlvdXIgc3ZuIHJlcG9zaXRvcnkgd2lsbCBhbHNvIHJlY2VpdmUgYSBj
b3B5IG9mIEdvb2dsZSBUZXN0IChhIHNwZWNpZmljIHZlcnNpb24sIGlmIHlvdSB3aXNoKSB3aXRo
b3V0IGhhdmluZyB0byBjaGVjayBpdCBvdXQgZXhwbGljaXRseS4gVGhpcyBtYWtlcyB0aGUgc2V0
IHVwIG9mIHlvdXIgcHJvamVjdCBzaW1wbGVyIGFuZCByZWR1Y2VzIHRoZSBjb3BpZWQgY29kZSBp
biB0aGUgcmVwb3NpdG9yeS4KKworVG8gdXNlIGBzdm46ZXh0ZXJuYWxzYCwgZGVjaWRlIHdoZXJl
IHlvdSB3b3VsZCBsaWtlIHRvIGhhdmUgdGhlIGV4dGVybmFsIHNvdXJjZSByZXNpZGUuIFlvdSBt
aWdodCBjaG9vc2UgdG8gcHV0IHRoZSBleHRlcm5hbCBzb3VyY2UgaW5zaWRlIHRoZSB0cnVuaywg
YmVjYXVzZSB5b3Ugd2FudCBpdCB0byBiZSBwYXJ0IG9mIHRoZSBicmFuY2ggd2hlbiB5b3UgbWFr
ZSBhIHJlbGVhc2UuIEhvd2V2ZXIsIGtlZXBpbmcgaXQgb3V0c2lkZSB0aGUgdHJ1bmsgaW4gYSB2
ZXJzaW9uLXRhZ2dlZCBkaXJlY3RvcnkgY2FsbGVkIHNvbWV0aGluZyBsaWtlIGB0aGlyZC1wYXJ0
eS9nb29nbGV0ZXN0LzEuMC4xYCwgaXMgYW5vdGhlciBvcHRpb24uIE9uY2UgdGhlIGxvY2F0aW9u
IGlzIGVzdGFibGlzaGVkLCB1c2UgYHN2biBwcm9wZWRpdCBzdm46ZXh0ZXJuYWxzIF9kaXJlY3Rv
cnlfYCB0byBzZXQgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgb24gYSBkaXJlY3RvcnkgaW4g
eW91ciByZXBvc2l0b3J5LiBUaGlzIGRpcmVjdG9yeSB3b24ndCBjb250YWluIHRoZSBjb2RlLCBi
dXQgYmUgaXRzIHZlcnNpb25lZCBwYXJlbnQgZGlyZWN0b3J5LgorCitUaGUgY29tbWFuZCBgc3Zu
IHByb3BlZGl0YCB3aWxsIGJyaW5nIHVwIHlvdXIgU3VidmVyc2lvbiBlZGl0b3IsIG1ha2luZyBl
ZGl0aW5nIHRoZSBsb25nLCAocG90ZW50aWFsbHkgbXVsdGktbGluZSkgcHJvcGVydHkgc2ltcGxl
ci4gVGhpcyBzYW1lIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjaGVjayBvdXQgYSB0YWdnZWQgYnJh
bmNoLCBieSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgVVJMIChlLmcuIGBodHRwOi8vZ29vZ2xldGVz
dC5nb29nbGVjb2RlLmNvbS9zdm4vdGFncy9yZWxlYXNlLTEuMC4xYCkuIEFkZGl0aW9uYWxseSwg
dGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgYWxsb3dzIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEg
cGFydGljdWxhciByZXZpc2lvbiBvZiB0aGUgdHJ1bmsgd2l0aCB0aGUgYC1yXyMjX2Agb3B0aW9u
IChlLmcuIGBleHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QgLXI2MCBodHRwOi8vZ29vZ2xldGVzdC5n
b29nbGVjb2RlLmNvbS9zdm4vdHJ1bmtgKS4KKworSGVyZSBpcyBhbiBleGFtcGxlIG9mIHVzaW5n
IHRoZSBzdm46ZXh0ZXJuYWxzIHByb3BlcnRpZXMgb24gYSB0cnVuayAocmVhZCB2aWEgYHN2biBw
cm9wZ2V0YCkgb2YgYSBwcm9qZWN0LiBUaGlzIHZhbHVlIGNoZWNrcyBvdXQgYSBjb3B5IG9mIEdv
b2dsZSBUZXN0IGludG8gdGhlIGB0cnVuay9leHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QvYCBkaXJl
Y3RvcnkuCisKK2BgYAorW0NvbXB1dGVyOnN2bl0gdXNlciQgc3ZuIHByb3BnZXQgc3ZuOmV4dGVy
bmFscyB0cnVuaworZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdv
b2dsZWNvZGUuY29tL3N2bi90cnVuaworYGBgCisKKyMgQWRkIHRoZSBGcmFtZXdvcmsgdG8gWW91
ciBQcm9qZWN0ICMKKworVGhlIG5leHQgc3RlcCBpcyB0byBidWlsZCBhbmQgYWRkIHRoZSBndGVz
dC5mcmFtZXdvcmsgdG8geW91ciBvd24gcHJvamVjdC4gVGhpcyBndWlkZSBkZXNjcmliZXMgdHdv
IGNvbW1vbiB3YXlzIGJlbG93LgorCisgICogKipPcHRpb24gMSoqIC0tLSBUaGUgc2ltcGxlc3Qg
d2F5IHRvIGFkZCBHb29nbGUgVGVzdCB0byB5b3VyIG93biBwcm9qZWN0LCBpcyB0byBvcGVuIGd0
ZXN0Lnhjb2RlcHJvaiAoZm91bmQgaW4gdGhlIHhjb2RlLyBkaXJlY3Rvcnkgb2YgdGhlIEdvb2ds
ZSBUZXN0IHRydW5rKSBhbmQgYnVpbGQgdGhlIGZyYW1ld29yayBtYW51YWxseS4gVGhlbiwgYWRk
IHRoZSBidWlsdCBmcmFtZXdvcmsgaW50byB5b3VyIHByb2plY3QgdXNpbmcgdGhlICJBZGQtPkV4
aXN0aW5nIEZyYW1ld29yay4uLiIgZnJvbSB0aGUgY29udGV4dCBtZW51IG9yICJQcm9qZWN0LT5B
ZGQuLi4iIGZyb20gdGhlIG1haW4gbWVudS4gVGhlIGd0ZXN0LmZyYW1ld29yayBpcyByZWxvY2F0
YWJsZSBhbmQgY29udGFpbnMgdGhlIGhlYWRlcnMgYW5kIG9iamVjdCBjb2RlIHRoYXQgeW91J2xs
IG5lZWQgdG8gbWFrZSB0ZXN0cy4gVGhpcyBtZXRob2QgcmVxdWlyZXMgcmVidWlsZGluZyBldmVy
eSB0aW1lIHlvdSB1cGdyYWRlIEdvb2dsZSBUZXN0IGluIHlvdXIgcHJvamVjdC4KKyAgKiAqKk9w
dGlvbiAyKiogLS0tIElmIHlvdSBhcmUgZ29pbmcgdG8gYmUgbGl2aW5nIG9mZiB0aGUgdHJ1bmsg
b2YgR29vZ2xlIFRlc3QsIGluY29ycG9yYXRpbmcgaXRzIGxhdGVzdCBmZWF0dXJlcyBpbnRvIHlv
dXIgdW5pdCB0ZXN0cyAob3IgYXJlIGEgR29vZ2xlIFRlc3QgZGV2ZWxvcGVyIHlvdXJzZWxmKS4g
WW91J2xsIHdhbnQgdG8gcmVidWlsZCB0aGUgZnJhbWV3b3JrIGV2ZXJ5IHRpbWUgdGhlIHNvdXJj
ZSB1cGRhdGVzLiB0byBkbyB0aGlzLCB5b3UnbGwgbmVlZCB0byBhZGQgdGhlIGd0ZXN0Lnhjb2Rl
cHJvaiBmaWxlLCBub3QgdGhlIGZyYW1ld29yayBpdHNlbGYsIHRvIHlvdXIgb3duIFhjb2RlIHBy
b2plY3QuIFRoZW4sIGZyb20gdGhlIGJ1aWxkIHByb2R1Y3RzIHRoYXQgYXJlIHJldmVhbGVkIGJ5
IHRoZSBwcm9qZWN0J3MgZGlzY2xvc3VyZSB0cmlhbmdsZSwgeW91IGNhbiBmaW5kIHRoZSBndGVz
dC5mcmFtZXdvcmssIHdoaWNoIGNhbiBiZSBhZGRlZCB0byB5b3VyIHRhcmdldHMgKGRpc2N1c3Nl
ZCBiZWxvdykuCisKKyMgTWFrZSBhIFRlc3QgVGFyZ2V0ICMKKworVG8gc3RhcnQgd3JpdGluZyB0
ZXN0cywgbWFrZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0LiBUaGlzIHRhcmdldCB0ZW1wbGF0
ZSBpcyBhdmFpbGFibGUgdW5kZXIgQlNELCBDb2NvYSwgb3IgQ2FyYm9uLiBBZGQgeW91ciB1bml0
IHRlc3Qgc291cmNlIGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJjZXMiIGJ1aWxkIHBoYXNlIG9m
IHRoZSB0YXJnZXQuCisKK05leHQsIHlvdSdsbCB3YW50IHRvIGFkZCBndGVzdC5mcmFtZXdvcmsg
aW4gdHdvIGRpZmZlcmVudCB3YXlzLCBkZXBlbmRpbmcgdXBvbiB3aGljaCBvcHRpb24geW91IGNo
b3NlIGFib3ZlLgorCisgICogKipPcHRpb24gMSoqIC0tLSBEdXJpbmcgY29tcGlsYXRpb24sIFhj
b2RlIHdpbGwgbmVlZCB0byBrbm93IHRoYXQgeW91IGFyZSBsaW5raW5nIGFnYWluc3QgdGhlIGd0
ZXN0LmZyYW1ld29yay4gQWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8gdGhlICJMaW5rIEJpbmFy
eSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gVGhpcyB3
aWxsIGluY2x1ZGUgdGhlIEdvb2dsZSBUZXN0IGhlYWRlcnMgaW4geW91ciBoZWFkZXIgc2VhcmNo
IHBhdGgsIGFuZCB3aWxsIHRlbGwgdGhlIGxpbmtlciB3aGVyZSB0byBmaW5kIHRoZSBsaWJyYXJ5
LgorICAqICoqT3B0aW9uIDIqKiAtLS0gSWYgeW91ciB3b3JraW5nIG91dCBvZiB0aGUgdHJ1bmss
IHlvdSdsbCBhbHNvIHdhbnQgdG8gYWRkIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyICJMaW5rIEJp
bmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gSW4g
YWRkaXRpb24sIHlvdSdsbCAgd2FudCB0byBhZGQgdGhlIGd0ZXN0LmZyYW1ld29yayBhcyBhIGRl
cGVuZGVuY3kgdG8geW91ciB1bml0IHRlc3QgdGFyZ2V0LiBUaGlzIHdheSwgWGNvZGUgd2lsbCBt
YWtlIHN1cmUgdGhhdCBndGVzdC5mcmFtZXdvcmsgaXMgdXAgdG8gZGF0ZSwgZXZlcnkgdGltZSB5
b3VyIGJ1aWxkIHlvdXIgdGFyZ2V0LiBGaW5hbGx5LCBpZiB5b3UgZG9uJ3Qgc2hhcmUgYnVpbGQg
ZGlyZWN0b3JpZXMgd2l0aCBHb29nbGUgVGVzdCwgeW91J2xsIGhhdmUgdG8gY29weSB0aGUgZ3Rl
c3QuZnJhbWV3b3JrIGludG8geW91ciBvd24gYnVpbGQgcHJvZHVjdHMgZGlyZWN0b3J5IHVzaW5n
IGEgIlJ1biBTY3JpcHQiIGJ1aWxkIHBoYXNlLgorCisjIFNldCBVcCB0aGUgRXhlY3V0YWJsZSBS
dW4gRW52aXJvbm1lbnQgIworCitTaW5jZSB0aGUgdW5pdCB0ZXN0IGV4ZWN1dGFibGUgaXMgYSBz
aGVsbCB0b29sLCBpdCBkb2Vzbid0IGhhdmUgYSBidW5kbGUgd2l0aCBhIGBDb250ZW50cy9GcmFt
ZXdvcmtzYCBkaXJlY3RvcnksIGluIHdoaWNoIHRvIHBsYWNlIGd0ZXN0LmZyYW1ld29yay4gSW5z
dGVhZCwgdGhlIGR5bmFtaWMgbGlua2VyIG11c3QgYmUgdG9sZCBhdCBydW50aW1lIHRvIHNlYXJj
aCBmb3IgdGhlIGZyYW1ld29yayBpbiBhbm90aGVyIGxvY2F0aW9uLiBUaGlzIGNhbiBiZSBhY2Nv
bXBsaXNoZWQgYnkgc2V0dGluZyB0aGUgIkRZTERcX0ZSQU1FV09SS1xfUEFUSCIgZW52aXJvbm1l
bnQgdmFyaWFibGUgaW4gdGhlICJFZGl0IEFjdGl2ZSBFeGVjdXRhYmxlIC4uLiIgQXJndW1lbnRz
IHRhYiwgdW5kZXIgIlZhcmlhYmxlcyB0byBiZSBzZXQgaW4gdGhlIGVudmlyb25tZW50OiIuIFRo
ZSBwYXRoIGZvciB0aGlzIHZhbHVlIGlzIHRoZSBwYXRoIChyZWxhdGl2ZSBvciBhYnNvbHV0ZSkg
b2YgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsuCisKK0lmIHlv
dSBoYXZlbid0IHNldCB1cCB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRILCBjb3JyZWN0bHksIHlv
dSBtaWdodCBnZXQgYSBtZXNzYWdlIGxpa2UgdGhpczoKKworYGBgCitbU2Vzc2lvbiBzdGFydGVk
IGF0IDIwMDgtMDgtMTUgMDY6MjM6NTcgLTA2MDAuXQorICBkeWxkOiBMaWJyYXJ5IG5vdCBsb2Fk
ZWQ6IEBsb2FkZXJfcGF0aC8uLi9GcmFtZXdvcmtzL2d0ZXN0LmZyYW1ld29yay9WZXJzaW9ucy9B
L2d0ZXN0CisgICAgUmVmZXJlbmNlZCBmcm9tOiAvVXNlcnMvdXNlcm5hbWUvRG9jdW1lbnRzL1Nh
bmRib3gvZ3Rlc3RTYW1wbGUvYnVpbGQvRGVidWcvV2lkZ2V0RnJhbWV3b3JrVGVzdAorICAgIFJl
YXNvbjogaW1hZ2Ugbm90IGZvdW5kCitgYGAKKworVG8gY29ycmVjdCB0aGlzIHByb2JsZW0sIGdv
dCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGV4ZWN1dGFibGUgbmFtZWQgaW4gIlJl
ZmVyZW5jZWQgZnJvbToiIHZhbHVlIGluIHRoZSBlcnJvciBtZXNzYWdlIGFib3ZlLiBUaGVuLCB3
aXRoIHRoZSB0ZXJtaW5hbCBpbiB0aGlzIGxvY2F0aW9uLCBmaW5kIHRoZSByZWxhdGl2ZSBwYXRo
IHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrLiBUaGF0IGlz
IHRoZSB2YWx1ZSB5b3UnbGwgbmVlZCB0byBzZXQgYXMgdGhlIERZTERcX0ZSQU1FV09SS1xfUEFU
SC4KKworIyBCdWlsZCBhbmQgR28gIworCitOb3csIHdoZW4geW91IGNsaWNrICJCdWlsZCBhbmQg
R28iLCB0aGUgdGVzdCB3aWxsIGJlIGV4ZWN1dGVkLiBEdW1waW5nIG91dCBzb21ldGhpbmcgbGlr
ZSB0aGlzOgorCitgYGAKK1tTZXNzaW9uIHN0YXJ0ZWQgYXQgMjAwOC0wOC0wNiAwNjozNjoxMyAt
MDYwMC5dCitbPT09PT09PT09PV0gUnVubmluZyAyIHRlc3RzIGZyb20gMSB0ZXN0IGNhc2UuCitb
LS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgorWy0tLS0tLS0tLS1d
IDIgdGVzdHMgZnJvbSBXaWRnZXRJbml0aWFsaXplclRlc3QKK1sgUlVOICAgICAgXSBXaWRnZXRJ
bml0aWFsaXplclRlc3QuVGVzdENvbnN0cnVjdG9yCitbICAgICAgIE9LIF0gV2lkZ2V0SW5pdGlh
bGl6ZXJUZXN0LlRlc3RDb25zdHJ1Y3RvcgorWyBSVU4gICAgICBdIFdpZGdldEluaXRpYWxpemVy
VGVzdC5UZXN0Q29udmVyc2lvbgorWyAgICAgICBPSyBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5U
ZXN0Q29udmVyc2lvbgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXIt
ZG93bgorWz09PT09PT09PT1dIDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZSByYW4uCitbICBQQVNT
RUQgIF0gMiB0ZXN0cy4KKworVGhlIERlYnVnZ2VyIGhhcyBleGl0ZWQgd2l0aCBzdGF0dXMgMC4g
IAorYGBgCisKKyMgU3VtbWFyeSAjCisKK1VuaXQgdGVzdGluZyBpcyBhIHZhbHVhYmxlIHdheSB0
byBlbnN1cmUgeW91ciBkYXRhIG1vZGVsIHN0YXlzIHZhbGlkIGV2ZW4gZHVyaW5nIHJhcGlkIGRl
dmVsb3BtZW50IG9yIHJlZmFjdG9yaW5nLiBUaGUgR29vZ2xlIFRlc3RpbmcgRnJhbWV3b3JrIGlz
IGEgZ3JlYXQgdW5pdCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBhbmQgQysrIHdoaWNoIGludGVn
cmF0ZXMgd2VsbCB3aXRoIGFuIFhjb2RlIGRldmVsb3BtZW50IGVudmlyb25tZW50LgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2RvY3MvWGNvZGVHdWlkZS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvWGNvZGVH
dWlkZS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iZjI0YmY1MWJmYzQ1NDEyZjY1OGJkZGQ1M2EzMzJlMTQ5ZDc3
MzA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9YY29k
ZUd1aWRlLm1kCkBAIC0wLDAgKzEsOTMgQEAKKworCitUaGlzIGd1aWRlIHdpbGwgZXhwbGFpbiBo
b3cgdG8gdXNlIHRoZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaW4geW91ciBYY29kZSBwcm9q
ZWN0cyBvbiBNYWMgT1MgWC4gVGhpcyB0dXRvcmlhbCBiZWdpbnMgYnkgcXVpY2tseSBleHBsYWlu
aW5nIHdoYXQgdG8gZG8gZm9yIGV4cGVyaWVuY2VkIHVzZXJzLiBBZnRlciB0aGUgcXVpY2sgc3Rh
cnQsIHRoZSBndWlkZSBnb2VzIHByb3ZpZGVzIGFkZGl0aW9uYWwgZXhwbGFuYXRpb24gYWJvdXQg
ZWFjaCBzdGVwLgorCisjIFF1aWNrIFN0YXJ0ICMKKworSGVyZSBpcyB0aGUgcXVpY2sgZ3VpZGUg
Zm9yIHVzaW5nIEdvb2dsZSBUZXN0IGluIHlvdXIgWGNvZGUgcHJvamVjdC4KKworICAxLiBEb3du
bG9hZCB0aGUgc291cmNlIGZyb20gdGhlIFt3ZWJzaXRlXShodHRwOi8vY29kZS5nb29nbGUuY29t
L3AvZ29vZ2xldGVzdCkgdXNpbmcgdGhpcyBjb21tYW5kOiBgc3ZuIGNoZWNrb3V0IGh0dHA6Ly9n
b29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay8gZ29vZ2xldGVzdC1yZWFkLW9ubHlg
CisgIDEuIE9wZW4gdXAgdGhlIGBndGVzdC54Y29kZXByb2pgIGluIHRoZSBgZ29vZ2xldGVzdC1y
ZWFkLW9ubHkveGNvZGUvYCBkaXJlY3RvcnkgYW5kIGJ1aWxkIHRoZSBndGVzdC5mcmFtZXdvcmsu
CisgIDEuIENyZWF0ZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0IGluIHlvdXIgWGNvZGUgcHJv
amVjdCBjYWxsZWQgc29tZXRoaW5nIGxpa2UgIlVuaXRUZXN0cyIKKyAgMS4gQWRkIHRoZSBndGVz
dC5mcmFtZXdvcmsgdG8geW91ciBwcm9qZWN0IGFuZCBhZGQgaXQgdG8gdGhlICJMaW5rIEJpbmFy
eSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgIlVuaXRUZXN0cyIKKyAgMS4gQWRkIHlv
dXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRvIHRoZSAiQ29tcGlsZSBTb3VyY2VzIiBidWlsZCBw
aGFzZSBvZiAiVW5pdFRlc3RzIgorICAxLiBFZGl0IHRoZSAiVW5pdFRlc3RzIiBleGVjdXRhYmxl
IGFuZCBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZWQgIkRZTERcX0ZSQU1FV09SS1xf
UEFUSCIgd2l0aCBhIHZhbHVlIGVxdWFsIHRvIHRoZSBwYXRoIHRvIHRoZSBmcmFtZXdvcmsgY29u
dGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHJlbGF0aXZlIHRvIHRoZSBjb21waWxlZCBleGVj
dXRhYmxlLgorICAxLiBCdWlsZCBhbmQgR28KKworVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBmdXJ0
aGVyIGV4cGxhaW4gZWFjaCBvZiB0aGUgc3RlcHMgbGlzdGVkIGFib3ZlIGluIGRlcHRoLCBkZXNj
cmliaW5nIGluIG1vcmUgZGV0YWlsIGhvdyB0byBjb21wbGV0ZSBpdCBpbmNsdWRpbmcgc29tZSB2
YXJpYXRpb25zLgorCisjIEdldCB0aGUgU291cmNlICMKKworQ3VycmVudGx5LCB0aGUgZ3Rlc3Qu
ZnJhbWV3b3JrIGRpc2N1c3NlZCBoZXJlIGlzbid0IGF2YWlsYWJsZSBpbiBhIHRhZ2dlZCByZWxl
YXNlIG9mIEdvb2dsZSBUZXN0LCBpdCBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgdHJ1bmsuIEFz
IGV4cGxhaW5lZCBhdCB0aGUgR29vZ2xlIFRlc3QgW3NpdGVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9nb29nbGV0ZXN0L3NvdXJjZS9jaGVja291dCI+c3ZuKSwgeW91IGNhbiBnZXQgdGhlIGNv
ZGUgZnJvbSBhbm9ueW1vdXMgU1ZOIHdpdGggdGhpcyBjb21tYW5kOgorCitgYGAKK3N2biBjaGVj
a291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvIGdvb2dsZXRl
c3QtcmVhZC1vbmx5CitgYGAKKworQWx0ZXJuYXRpdmVseSwgaWYgeW91IGFyZSB3b3JraW5nIHdp
dGggU3VidmVyc2lvbiBpbiB5b3VyIG93biBjb2RlIGJhc2UsIHlvdSBjYW4gYWRkIEdvb2dsZSBU
ZXN0IGFzIGFuIGV4dGVybmFsIGRlcGVuZGVuY3kgdG8geW91ciBvd24gU3VidmVyc2lvbiByZXBv
c2l0b3J5LiBCeSBmb2xsb3dpbmcgdGhpcyBhcHByb2FjaCwgZXZlcnlvbmUgdGhhdCBjaGVja3Mg
b3V0IHlvdXIgc3ZuIHJlcG9zaXRvcnkgd2lsbCBhbHNvIHJlY2VpdmUgYSBjb3B5IG9mIEdvb2ds
ZSBUZXN0IChhIHNwZWNpZmljIHZlcnNpb24sIGlmIHlvdSB3aXNoKSB3aXRob3V0IGhhdmluZyB0
byBjaGVjayBpdCBvdXQgZXhwbGljaXRseS4gVGhpcyBtYWtlcyB0aGUgc2V0IHVwIG9mIHlvdXIg
cHJvamVjdCBzaW1wbGVyIGFuZCByZWR1Y2VzIHRoZSBjb3BpZWQgY29kZSBpbiB0aGUgcmVwb3Np
dG9yeS4KKworVG8gdXNlIGBzdm46ZXh0ZXJuYWxzYCwgZGVjaWRlIHdoZXJlIHlvdSB3b3VsZCBs
aWtlIHRvIGhhdmUgdGhlIGV4dGVybmFsIHNvdXJjZSByZXNpZGUuIFlvdSBtaWdodCBjaG9vc2Ug
dG8gcHV0IHRoZSBleHRlcm5hbCBzb3VyY2UgaW5zaWRlIHRoZSB0cnVuaywgYmVjYXVzZSB5b3Ug
d2FudCBpdCB0byBiZSBwYXJ0IG9mIHRoZSBicmFuY2ggd2hlbiB5b3UgbWFrZSBhIHJlbGVhc2Uu
IEhvd2V2ZXIsIGtlZXBpbmcgaXQgb3V0c2lkZSB0aGUgdHJ1bmsgaW4gYSB2ZXJzaW9uLXRhZ2dl
ZCBkaXJlY3RvcnkgY2FsbGVkIHNvbWV0aGluZyBsaWtlIGB0aGlyZC1wYXJ0eS9nb29nbGV0ZXN0
LzEuMC4xYCwgaXMgYW5vdGhlciBvcHRpb24uIE9uY2UgdGhlIGxvY2F0aW9uIGlzIGVzdGFibGlz
aGVkLCB1c2UgYHN2biBwcm9wZWRpdCBzdm46ZXh0ZXJuYWxzIF9kaXJlY3RvcnlfYCB0byBzZXQg
dGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgb24gYSBkaXJlY3RvcnkgaW4geW91ciByZXBvc2l0
b3J5LiBUaGlzIGRpcmVjdG9yeSB3b24ndCBjb250YWluIHRoZSBjb2RlLCBidXQgYmUgaXRzIHZl
cnNpb25lZCBwYXJlbnQgZGlyZWN0b3J5LgorCitUaGUgY29tbWFuZCBgc3ZuIHByb3BlZGl0YCB3
aWxsIGJyaW5nIHVwIHlvdXIgU3VidmVyc2lvbiBlZGl0b3IsIG1ha2luZyBlZGl0aW5nIHRoZSBs
b25nLCAocG90ZW50aWFsbHkgbXVsdGktbGluZSkgcHJvcGVydHkgc2ltcGxlci4gVGhpcyBzYW1l
IG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjaGVjayBvdXQgYSB0YWdnZWQgYnJhbmNoLCBieSB1c2lu
ZyB0aGUgYXBwcm9wcmlhdGUgVVJMIChlLmcuIGBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2Rl
LmNvbS9zdm4vdGFncy9yZWxlYXNlLTEuMC4xYCkuIEFkZGl0aW9uYWxseSwgdGhlIHN2bjpleHRl
cm5hbHMgcHJvcGVydHkgYWxsb3dzIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgcGFydGljdWxhciBy
ZXZpc2lvbiBvZiB0aGUgdHJ1bmsgd2l0aCB0aGUgYC1yXyMjX2Agb3B0aW9uIChlLmcuIGBleHRl
cm5hbHMvc3JjL2dvb2dsZXRlc3QgLXI2MCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNv
bS9zdm4vdHJ1bmtgKS4KKworSGVyZSBpcyBhbiBleGFtcGxlIG9mIHVzaW5nIHRoZSBzdm46ZXh0
ZXJuYWxzIHByb3BlcnRpZXMgb24gYSB0cnVuayAocmVhZCB2aWEgYHN2biBwcm9wZ2V0YCkgb2Yg
YSBwcm9qZWN0LiBUaGlzIHZhbHVlIGNoZWNrcyBvdXQgYSBjb3B5IG9mIEdvb2dsZSBUZXN0IGlu
dG8gdGhlIGB0cnVuay9leHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QvYCBkaXJlY3RvcnkuCisKK2Bg
YAorW0NvbXB1dGVyOnN2bl0gdXNlciQgc3ZuIHByb3BnZXQgc3ZuOmV4dGVybmFscyB0cnVuawor
ZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29t
L3N2bi90cnVuaworYGBgCisKKyMgQWRkIHRoZSBGcmFtZXdvcmsgdG8gWW91ciBQcm9qZWN0ICMK
KworVGhlIG5leHQgc3RlcCBpcyB0byBidWlsZCBhbmQgYWRkIHRoZSBndGVzdC5mcmFtZXdvcmsg
dG8geW91ciBvd24gcHJvamVjdC4gVGhpcyBndWlkZSBkZXNjcmliZXMgdHdvIGNvbW1vbiB3YXlz
IGJlbG93LgorCisgICogKipPcHRpb24gMSoqIC0tLSBUaGUgc2ltcGxlc3Qgd2F5IHRvIGFkZCBH
b29nbGUgVGVzdCB0byB5b3VyIG93biBwcm9qZWN0LCBpcyB0byBvcGVuIGd0ZXN0Lnhjb2RlcHJv
aiAoZm91bmQgaW4gdGhlIHhjb2RlLyBkaXJlY3Rvcnkgb2YgdGhlIEdvb2dsZSBUZXN0IHRydW5r
KSBhbmQgYnVpbGQgdGhlIGZyYW1ld29yayBtYW51YWxseS4gVGhlbiwgYWRkIHRoZSBidWlsdCBm
cmFtZXdvcmsgaW50byB5b3VyIHByb2plY3QgdXNpbmcgdGhlICJBZGQtPkV4aXN0aW5nIEZyYW1l
d29yay4uLiIgZnJvbSB0aGUgY29udGV4dCBtZW51IG9yICJQcm9qZWN0LT5BZGQuLi4iIGZyb20g
dGhlIG1haW4gbWVudS4gVGhlIGd0ZXN0LmZyYW1ld29yayBpcyByZWxvY2F0YWJsZSBhbmQgY29u
dGFpbnMgdGhlIGhlYWRlcnMgYW5kIG9iamVjdCBjb2RlIHRoYXQgeW91J2xsIG5lZWQgdG8gbWFr
ZSB0ZXN0cy4gVGhpcyBtZXRob2QgcmVxdWlyZXMgcmVidWlsZGluZyBldmVyeSB0aW1lIHlvdSB1
cGdyYWRlIEdvb2dsZSBUZXN0IGluIHlvdXIgcHJvamVjdC4KKyAgKiAqKk9wdGlvbiAyKiogLS0t
IElmIHlvdSBhcmUgZ29pbmcgdG8gYmUgbGl2aW5nIG9mZiB0aGUgdHJ1bmsgb2YgR29vZ2xlIFRl
c3QsIGluY29ycG9yYXRpbmcgaXRzIGxhdGVzdCBmZWF0dXJlcyBpbnRvIHlvdXIgdW5pdCB0ZXN0
cyAob3IgYXJlIGEgR29vZ2xlIFRlc3QgZGV2ZWxvcGVyIHlvdXJzZWxmKS4gWW91J2xsIHdhbnQg
dG8gcmVidWlsZCB0aGUgZnJhbWV3b3JrIGV2ZXJ5IHRpbWUgdGhlIHNvdXJjZSB1cGRhdGVzLiB0
byBkbyB0aGlzLCB5b3UnbGwgbmVlZCB0byBhZGQgdGhlIGd0ZXN0Lnhjb2RlcHJvaiBmaWxlLCBu
b3QgdGhlIGZyYW1ld29yayBpdHNlbGYsIHRvIHlvdXIgb3duIFhjb2RlIHByb2plY3QuIFRoZW4s
IGZyb20gdGhlIGJ1aWxkIHByb2R1Y3RzIHRoYXQgYXJlIHJldmVhbGVkIGJ5IHRoZSBwcm9qZWN0
J3MgZGlzY2xvc3VyZSB0cmlhbmdsZSwgeW91IGNhbiBmaW5kIHRoZSBndGVzdC5mcmFtZXdvcmss
IHdoaWNoIGNhbiBiZSBhZGRlZCB0byB5b3VyIHRhcmdldHMgKGRpc2N1c3NlZCBiZWxvdykuCisK
KyMgTWFrZSBhIFRlc3QgVGFyZ2V0ICMKKworVG8gc3RhcnQgd3JpdGluZyB0ZXN0cywgbWFrZSBh
IG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0LiBUaGlzIHRhcmdldCB0ZW1wbGF0ZSBpcyBhdmFpbGFi
bGUgdW5kZXIgQlNELCBDb2NvYSwgb3IgQ2FyYm9uLiBBZGQgeW91ciB1bml0IHRlc3Qgc291cmNl
IGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJjZXMiIGJ1aWxkIHBoYXNlIG9mIHRoZSB0YXJnZXQu
CisKK05leHQsIHlvdSdsbCB3YW50IHRvIGFkZCBndGVzdC5mcmFtZXdvcmsgaW4gdHdvIGRpZmZl
cmVudCB3YXlzLCBkZXBlbmRpbmcgdXBvbiB3aGljaCBvcHRpb24geW91IGNob3NlIGFib3ZlLgor
CisgICogKipPcHRpb24gMSoqIC0tLSBEdXJpbmcgY29tcGlsYXRpb24sIFhjb2RlIHdpbGwgbmVl
ZCB0byBrbm93IHRoYXQgeW91IGFyZSBsaW5raW5nIGFnYWluc3QgdGhlIGd0ZXN0LmZyYW1ld29y
ay4gQWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8gdGhlICJMaW5rIEJpbmFyeSB3aXRoIExpYnJh
cmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gVGhpcyB3aWxsIGluY2x1ZGUg
dGhlIEdvb2dsZSBUZXN0IGhlYWRlcnMgaW4geW91ciBoZWFkZXIgc2VhcmNoIHBhdGgsIGFuZCB3
aWxsIHRlbGwgdGhlIGxpbmtlciB3aGVyZSB0byBmaW5kIHRoZSBsaWJyYXJ5LgorICAqICoqT3B0
aW9uIDIqKiAtLS0gSWYgeW91ciB3b3JraW5nIG91dCBvZiB0aGUgdHJ1bmssIHlvdSdsbCBhbHNv
IHdhbnQgdG8gYWRkIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyICJMaW5rIEJpbmFyeSB3aXRoIExp
YnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gSW4gYWRkaXRpb24sIHlv
dSdsbCAgd2FudCB0byBhZGQgdGhlIGd0ZXN0LmZyYW1ld29yayBhcyBhIGRlcGVuZGVuY3kgdG8g
eW91ciB1bml0IHRlc3QgdGFyZ2V0LiBUaGlzIHdheSwgWGNvZGUgd2lsbCBtYWtlIHN1cmUgdGhh
dCBndGVzdC5mcmFtZXdvcmsgaXMgdXAgdG8gZGF0ZSwgZXZlcnkgdGltZSB5b3VyIGJ1aWxkIHlv
dXIgdGFyZ2V0LiBGaW5hbGx5LCBpZiB5b3UgZG9uJ3Qgc2hhcmUgYnVpbGQgZGlyZWN0b3JpZXMg
d2l0aCBHb29nbGUgVGVzdCwgeW91J2xsIGhhdmUgdG8gY29weSB0aGUgZ3Rlc3QuZnJhbWV3b3Jr
IGludG8geW91ciBvd24gYnVpbGQgcHJvZHVjdHMgZGlyZWN0b3J5IHVzaW5nIGEgIlJ1biBTY3Jp
cHQiIGJ1aWxkIHBoYXNlLgorCisjIFNldCBVcCB0aGUgRXhlY3V0YWJsZSBSdW4gRW52aXJvbm1l
bnQgIworCitTaW5jZSB0aGUgdW5pdCB0ZXN0IGV4ZWN1dGFibGUgaXMgYSBzaGVsbCB0b29sLCBp
dCBkb2Vzbid0IGhhdmUgYSBidW5kbGUgd2l0aCBhIGBDb250ZW50cy9GcmFtZXdvcmtzYCBkaXJl
Y3RvcnksIGluIHdoaWNoIHRvIHBsYWNlIGd0ZXN0LmZyYW1ld29yay4gSW5zdGVhZCwgdGhlIGR5
bmFtaWMgbGlua2VyIG11c3QgYmUgdG9sZCBhdCBydW50aW1lIHRvIHNlYXJjaCBmb3IgdGhlIGZy
YW1ld29yayBpbiBhbm90aGVyIGxvY2F0aW9uLiBUaGlzIGNhbiBiZSBhY2NvbXBsaXNoZWQgYnkg
c2V0dGluZyB0aGUgIkRZTERcX0ZSQU1FV09SS1xfUEFUSCIgZW52aXJvbm1lbnQgdmFyaWFibGUg
aW4gdGhlICJFZGl0IEFjdGl2ZSBFeGVjdXRhYmxlIC4uLiIgQXJndW1lbnRzIHRhYiwgdW5kZXIg
IlZhcmlhYmxlcyB0byBiZSBzZXQgaW4gdGhlIGVudmlyb25tZW50OiIuIFRoZSBwYXRoIGZvciB0
aGlzIHZhbHVlIGlzIHRoZSBwYXRoIChyZWxhdGl2ZSBvciBhYnNvbHV0ZSkgb2YgdGhlIGRpcmVj
dG9yeSBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsuCisKK0lmIHlvdSBoYXZlbid0IHNl
dCB1cCB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRILCBjb3JyZWN0bHksIHlvdSBtaWdodCBnZXQg
YSBtZXNzYWdlIGxpa2UgdGhpczoKKworYGBgCitbU2Vzc2lvbiBzdGFydGVkIGF0IDIwMDgtMDgt
MTUgMDY6MjM6NTcgLTA2MDAuXQorICBkeWxkOiBMaWJyYXJ5IG5vdCBsb2FkZWQ6IEBsb2FkZXJf
cGF0aC8uLi9GcmFtZXdvcmtzL2d0ZXN0LmZyYW1ld29yay9WZXJzaW9ucy9BL2d0ZXN0CisgICAg
UmVmZXJlbmNlZCBmcm9tOiAvVXNlcnMvdXNlcm5hbWUvRG9jdW1lbnRzL1NhbmRib3gvZ3Rlc3RT
YW1wbGUvYnVpbGQvRGVidWcvV2lkZ2V0RnJhbWV3b3JrVGVzdAorICAgIFJlYXNvbjogaW1hZ2Ug
bm90IGZvdW5kCitgYGAKKworVG8gY29ycmVjdCB0aGlzIHByb2JsZW0sIGdvdCB0byB0aGUgZGly
ZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGV4ZWN1dGFibGUgbmFtZWQgaW4gIlJlZmVyZW5jZWQgZnJv
bToiIHZhbHVlIGluIHRoZSBlcnJvciBtZXNzYWdlIGFib3ZlLiBUaGVuLCB3aXRoIHRoZSB0ZXJt
aW5hbCBpbiB0aGlzIGxvY2F0aW9uLCBmaW5kIHRoZSByZWxhdGl2ZSBwYXRoIHRvIHRoZSBkaXJl
Y3RvcnkgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrLiBUaGF0IGlzIHRoZSB2YWx1ZSB5
b3UnbGwgbmVlZCB0byBzZXQgYXMgdGhlIERZTERcX0ZSQU1FV09SS1xfUEFUSC4KKworIyBCdWls
ZCBhbmQgR28gIworCitOb3csIHdoZW4geW91IGNsaWNrICJCdWlsZCBhbmQgR28iLCB0aGUgdGVz
dCB3aWxsIGJlIGV4ZWN1dGVkLiBEdW1waW5nIG91dCBzb21ldGhpbmcgbGlrZSB0aGlzOgorCitg
YGAKK1tTZXNzaW9uIHN0YXJ0ZWQgYXQgMjAwOC0wOC0wNiAwNjozNjoxMyAtMDYwMC5dCitbPT09
PT09PT09PV0gUnVubmluZyAyIHRlc3RzIGZyb20gMSB0ZXN0IGNhc2UuCitbLS0tLS0tLS0tLV0g
R2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgorWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJv
bSBXaWRnZXRJbml0aWFsaXplclRlc3QKK1sgUlVOICAgICAgXSBXaWRnZXRJbml0aWFsaXplclRl
c3QuVGVzdENvbnN0cnVjdG9yCitbICAgICAgIE9LIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRl
c3RDb25zdHJ1Y3RvcgorWyBSVU4gICAgICBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29u
dmVyc2lvbgorWyAgICAgICBPSyBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29udmVyc2lv
bgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgorWz09PT09
PT09PT1dIDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZSByYW4uCitbICBQQVNTRUQgIF0gMiB0ZXN0
cy4KKworVGhlIERlYnVnZ2VyIGhhcyBleGl0ZWQgd2l0aCBzdGF0dXMgMC4gIAorYGBgCisKKyMg
U3VtbWFyeSAjCisKK1VuaXQgdGVzdGluZyBpcyBhIHZhbHVhYmxlIHdheSB0byBlbnN1cmUgeW91
ciBkYXRhIG1vZGVsIHN0YXlzIHZhbGlkIGV2ZW4gZHVyaW5nIHJhcGlkIGRldmVsb3BtZW50IG9y
IHJlZmFjdG9yaW5nLiBUaGUgR29vZ2xlIFRlc3RpbmcgRnJhbWV3b3JrIGlzIGEgZ3JlYXQgdW5p
dCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBhbmQgQysrIHdoaWNoIGludGVncmF0ZXMgd2VsbCB3
aXRoIGFuIFhjb2RlIGRldmVsb3BtZW50IGVudmlyb25tZW50LgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgKaW5kZXggMTIxZGMxZmI1YWM1ZDU5YTMzZDUzMDM0MDU4
ZWVlOTFjMjEyYTIwOC4uOTU3YTY5YzZhOWU3YmVkN2Q1N2ViZDc4NzJmYjA0N2Y5NzE3NWZjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1k
ZWF0aC10ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9n
dGVzdC1kZWF0aC10ZXN0LmgKQEAgLTM4LDcgKzM4LDcgQEAKICNpZm5kZWYgR1RFU1RfSU5DTFVE
RV9HVEVTVF9HVEVTVF9ERUFUSF9URVNUX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1Rf
R1RFU1RfREVBVEhfVEVTVF9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZGVh
dGgtdGVzdC1pbnRlcm5hbC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRo
LXRlc3QtaW50ZXJuYWwuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC01MSw2ICs1MSwx
NyBAQCBHVEVTVF9ERUNMQVJFX3N0cmluZ18oZGVhdGhfdGVzdF9zdHlsZSk7CiAKICNpZiBHVEVT
VF9IQVNfREVBVEhfVEVTVAogCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBSZXR1cm5zIGEg
Qm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNhbGxlciBpcyBjdXJyZW50bHkK
Ky8vIGV4ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiB0aGUgZGVhdGggdGVzdCBjaGlsZCBwcm9j
ZXNzLiAgVG9vbHMgc3VjaCBhcworLy8gVmFsZ3JpbmQgaGVhcCBjaGVja2VycyBtYXkgbmVlZCB0
aGlzIHRvIG1vZGlmeSB0aGVpciBiZWhhdmlvciBpbiBkZWF0aAorLy8gdGVzdHMuICBJTVBPUlRB
TlQ6IFRoaXMgaXMgYW4gaW50ZXJuYWwgdXRpbGl0eS4gIFVzaW5nIGl0IG1heSBicmVhayB0aGUK
Ky8vIGltcGxlbWVudGF0aW9uIG9mIGRlYXRoIHRlc3RzLiAgVXNlciBjb2RlIE1VU1QgTk9UIHVz
ZSBpdC4KK0dURVNUX0FQSV8gYm9vbCBJbkRlYXRoVGVzdENoaWxkKCk7CisKK30gIC8vIG5hbWVz
cGFjZSBpbnRlcm5hbAorCiAvLyBUaGUgZm9sbG93aW5nIG1hY3JvcyBhcmUgdXNlZnVsIGZvciB3
cml0aW5nIGRlYXRoIHRlc3RzLgogCiAvLyBIZXJlJ3Mgd2hhdCBoYXBwZW5zIHdoZW4gYW4gQVNT
RVJUX0RFQVRIKiBvciBFWFBFQ1RfREVBVEgqIGlzCkBAIC03NSw3ICs4Niw3IEBAIEdURVNUX0RF
Q0xBUkVfc3RyaW5nXyhkZWF0aF90ZXN0X3N0eWxlKTsKIC8vICAgZm9yIChpbnQgaSA9IDA7IGkg
PCA1OyBpKyspIHsKIC8vICAgICBFWFBFQ1RfREVBVEgoc2VydmVyLlByb2Nlc3NSZXF1ZXN0KGkp
LAogLy8gICAgICAgICAgICAgICAgICAiSW52YWxpZCByZXF1ZXN0IC4qIGluIFByb2Nlc3NSZXF1
ZXN0KCkiKQotLy8gICAgICAgICA8PCAiRmFpbGVkIHRvIGRpZSBvbiByZXF1ZXN0ICIgPDwgaSk7
CisvLyAgICAgICAgICAgICAgICAgIDw8ICJGYWlsZWQgdG8gZGllIG9uIHJlcXVlc3QgIiA8PCBp
OwogLy8gICB9CiAvLwogLy8gICBBU1NFUlRfRVhJVChzZXJ2ZXIuRXhpdE5vdygpLCA6OnRlc3Rp
bmc6OkV4aXRlZFdpdGhDb2RlKDApLCAiRXhpdGluZyIpOwpAQCAtMTU0LDI0ICsxNjUsMjQgQEAg
R1RFU1RfREVDTEFSRV9zdHJpbmdfKGRlYXRoX3Rlc3Rfc3R5bGUpOwogLy8gQXNzZXJ0cyB0aGF0
IGEgZ2l2ZW4gc3RhdGVtZW50IGNhdXNlcyB0aGUgcHJvZ3JhbSB0byBleGl0LCB3aXRoIGFuCiAv
LyBpbnRlZ2VyIGV4aXQgc3RhdHVzIHRoYXQgc2F0aXNmaWVzIHByZWRpY2F0ZSwgYW5kIGVtaXR0
aW5nIGVycm9yIG91dHB1dAogLy8gdGhhdCBtYXRjaGVzIHJlZ2V4LgotI2RlZmluZSBBU1NFUlRf
RVhJVChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpIFwKLSAgR1RFU1RfREVBVEhfVEVTVF8o
c3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4LCBHVEVTVF9GQVRBTF9GQUlMVVJFXykKKyMgZGVm
aW5lIEFTU0VSVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCkgXAorICAgIEdURVNU
X0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgR1RFU1RfRkFUQUxfRkFJ
TFVSRV8pCiAKIC8vIExpa2UgQVNTRVJUX0VYSVQsIGJ1dCBjb250aW51ZXMgb24gdG8gc3VjY2Vz
c2l2ZSB0ZXN0cyBpbiB0aGUKIC8vIHRlc3QgY2FzZSwgaWYgYW55OgotI2RlZmluZSBFWFBFQ1Rf
RVhJVChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpIFwKLSAgR1RFU1RfREVBVEhfVEVTVF8o
c3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4LCBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXykKKyMg
ZGVmaW5lIEVYUEVDVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCkgXAorICAgIEdU
RVNUX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgR1RFU1RfTk9ORkFU
QUxfRkFJTFVSRV8pCiAKIC8vIEFzc2VydHMgdGhhdCBhIGdpdmVuIHN0YXRlbWVudCBjYXVzZXMg
dGhlIHByb2dyYW0gdG8gZXhpdCwgZWl0aGVyIGJ5CiAvLyBleHBsaWNpdGx5IGV4aXRpbmcgd2l0
aCBhIG5vbnplcm8gZXhpdCBjb2RlIG9yIGJlaW5nIGtpbGxlZCBieSBhCiAvLyBzaWduYWwsIGFu
ZCBlbWl0dGluZyBlcnJvciBvdXRwdXQgdGhhdCBtYXRjaGVzIHJlZ2V4LgotI2RlZmluZSBBU1NF
UlRfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAotICBBU1NFUlRfRVhJVChzdGF0ZW1lbnQsIDo6
dGVzdGluZzo6aW50ZXJuYWw6OkV4aXRlZFVuc3VjY2Vzc2Z1bGx5LCByZWdleCkKKyMgZGVmaW5l
IEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgICAgQVNTRVJUX0VYSVQoc3RhdGVt
ZW50LCA6OnRlc3Rpbmc6OmludGVybmFsOjpFeGl0ZWRVbnN1Y2Nlc3NmdWxseSwgcmVnZXgpCiAK
IC8vIExpa2UgQVNTRVJUX0RFQVRILCBidXQgY29udGludWVzIG9uIHRvIHN1Y2Nlc3NpdmUgdGVz
dHMgaW4gdGhlCiAvLyB0ZXN0IGNhc2UsIGlmIGFueToKLSNkZWZpbmUgRVhQRUNUX0RFQVRIKHN0
YXRlbWVudCwgcmVnZXgpIFwKLSAgRVhQRUNUX0VYSVQoc3RhdGVtZW50LCA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpFeGl0ZWRVbnN1Y2Nlc3NmdWxseSwgcmVnZXgpCisjIGRlZmluZSBFWFBFQ1RfREVB
VEgoc3RhdGVtZW50LCByZWdleCkgXAorICAgIEVYUEVDVF9FWElUKHN0YXRlbWVudCwgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6RXhpdGVkVW5zdWNjZXNzZnVsbHksIHJlZ2V4KQogCiAvLyBUd28gcHJl
ZGljYXRlIGNsYXNzZXMgdGhhdCBjYW4gYmUgdXNlZCBpbiB7QVNTRVJULEVYUEVDVH1fRVhJVCo6
CiAKQEAgLTE4Nyw3ICsxOTgsNyBAQCBjbGFzcyBHVEVTVF9BUElfIEV4aXRlZFdpdGhDb2RlIHsK
ICAgY29uc3QgaW50IGV4aXRfY29kZV87CiB9OwogCi0jaWYgIUdURVNUX09TX1dJTkRPV1MKKyMg
aWYgIUdURVNUX09TX1dJTkRPV1MKIC8vIFRlc3RzIHRoYXQgYW4gZXhpdCBjb2RlIGRlc2NyaWJl
cyBhbiBleGl0IGR1ZSB0byB0ZXJtaW5hdGlvbiBieSBhCiAvLyBnaXZlbiBzaWduYWwuCiBjbGFz
cyBHVEVTVF9BUElfIEtpbGxlZEJ5U2lnbmFsIHsKQEAgLTE5Nyw3ICsyMDgsNyBAQCBjbGFzcyBH
VEVTVF9BUElfIEtpbGxlZEJ5U2lnbmFsIHsKICBwcml2YXRlOgogICBjb25zdCBpbnQgc2lnbnVt
XzsKIH07Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyAhR1RFU1Rf
T1NfV0lORE9XUwogCiAvLyBFWFBFQ1RfREVCVUdfREVBVEggYXNzZXJ0cyB0aGF0IHRoZSBnaXZl
biBzdGF0ZW1lbnRzIGRpZSBpbiBkZWJ1ZyBtb2RlLgogLy8gVGhlIGRlYXRoIHRlc3RpbmcgZnJh
bWV3b3JrIGNhdXNlcyB0aGlzIHRvIGhhdmUgaW50ZXJlc3Rpbmcgc2VtYW50aWNzLApAQCAtMjQy
LDIzICsyNTMsMjMgQEAgY2xhc3MgR1RFU1RfQVBJXyBLaWxsZWRCeVNpZ25hbCB7CiAvLyAgIEVY
UEVDVF9FUSgxMiwgRGllSW5EZWJ1Z09yMTIoJnNpZGVlZmZlY3QpKTsKIC8vIH0sICJkZWF0aCIp
OwogLy8KLSNpZmRlZiBOREVCVUcKKyMgaWZkZWYgTkRFQlVHCiAKLSNkZWZpbmUgRVhQRUNUX0RF
QlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKLSAgZG8geyBzdGF0ZW1lbnQ7IH0gd2hpbGUg
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCisjICBkZWZpbmUgRVhQRUNUX0RF
QlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKKyAgR1RFU1RfRVhFQ1VURV9TVEFURU1FTlRf
KHN0YXRlbWVudCwgcmVnZXgpCiAKLSNkZWZpbmUgQVNTRVJUX0RFQlVHX0RFQVRIKHN0YXRlbWVu
dCwgcmVnZXgpIFwKLSAgZG8geyBzdGF0ZW1lbnQ7IH0gd2hpbGUgKDo6dGVzdGluZzo6aW50ZXJu
YWw6OkFsd2F5c0ZhbHNlKCkpCisjICBkZWZpbmUgQVNTRVJUX0RFQlVHX0RFQVRIKHN0YXRlbWVu
dCwgcmVnZXgpIFwKKyAgR1RFU1RfRVhFQ1VURV9TVEFURU1FTlRfKHN0YXRlbWVudCwgcmVnZXgp
CiAKLSNlbHNlCisjIGVsc2UKIAotI2RlZmluZSBFWFBFQ1RfREVCVUdfREVBVEgoc3RhdGVtZW50
LCByZWdleCkgXAorIyAgZGVmaW5lIEVYUEVDVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4
KSBcCiAgIEVYUEVDVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KQogCi0jZGVmaW5lIEFTU0VSVF9E
RUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisjICBkZWZpbmUgQVNTRVJUX0RFQlVHX0RF
QVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKICAgQVNTRVJUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgp
CiAKLSNlbmRpZiAgLy8gTkRFQlVHIGZvciBFWFBFQ1RfREVCVUdfREVBVEgKKyMgZW5kaWYgIC8v
IE5ERUJVRyBmb3IgRVhQRUNUX0RFQlVHX0RFQVRICiAjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFU
SF9URVNUCiAKIC8vIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkg
YW5kCkBAIC0yNjcsMTQgKzI3OCwxNCBAQCBjbGFzcyBHVEVTVF9BUElfIEtpbGxlZEJ5U2lnbmFs
IHsKIC8vIHVzZWZ1bCB3aGVuIHlvdSBhcmUgY29tYmluaW5nIGRlYXRoIHRlc3QgYXNzZXJ0aW9u
cyB3aXRoIG5vcm1hbCB0ZXN0CiAvLyBhc3NlcnRpb25zIGluIG9uZSB0ZXN0LgogI2lmIEdURVNU
X0hBU19ERUFUSF9URVNUCi0jZGVmaW5lIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVt
ZW50LCByZWdleCkgXAorIyBkZWZpbmUgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1l
bnQsIHJlZ2V4KSBcCiAgICAgRVhQRUNUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpCi0jZGVmaW5l
IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAorIyBkZWZpbmUg
QVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCiAgICAgQVNTRVJU
X0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpCiAjZWxzZQotI2RlZmluZSBFWFBFQ1RfREVBVEhfSUZf
U1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKKyMgZGVmaW5lIEVYUEVDVF9ERUFUSF9JRl9T
VVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAogICAgIEdURVNUX1VOU1VQUE9SVEVEX0RFQVRI
X1RFU1RfKHN0YXRlbWVudCwgcmVnZXgsICkKLSNkZWZpbmUgQVNTRVJUX0RFQVRIX0lGX1NVUFBP
UlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisjIGRlZmluZSBBU1NFUlRfREVBVEhfSUZfU1VQUE9S
VEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKICAgICBHVEVTVF9VTlNVUFBPUlRFRF9ERUFUSF9URVNU
XyhzdGF0ZW1lbnQsIHJlZ2V4LCByZXR1cm4pCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaAppbmRleCBmMTM1
YjY5NDI3ZmU5ZWJlMjM3YzRjZGE3YTljMmYwZDc4ZGQ3NjhlLi5mZTg3OWJjYTc5MjdhZmFlMjQ5
OWE2MTM3YWIyNmY0OTkxZmJiYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaApAQCAtNDgsOCArNDgsMTEgQEAKIAog
I2luY2x1ZGUgPGxpbWl0cz4KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmlu
Zy5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg+CisjaW5jbHVk
ZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorCisvLyBFbnN1cmVzIHRoYXQgdGhlcmUg
aXMgYXQgbGVhc3Qgb25lIG9wZXJhdG9yPDwgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisvLyBT
ZWUgTWVzc2FnZSYgb3BlcmF0b3I8PCguLi4pIGJlbG93IGZvciB3aHkuCit2b2lkIG9wZXJhdG9y
PDwoY29uc3QgdGVzdGluZzo6aW50ZXJuYWw6OlNlY3JldCYsIGludCk7CiAKIG5hbWVzcGFjZSB0
ZXN0aW5nIHsKIApAQCAtNTgsNyArNjEsNyBAQCBuYW1lc3BhY2UgdGVzdGluZyB7CiAvLyBUeXBp
Y2FsIHVzYWdlOgogLy8KIC8vICAgMS4gWW91IHN0cmVhbSBhIGJ1bmNoIG9mIHZhbHVlcyB0byBh
IE1lc3NhZ2Ugb2JqZWN0LgotLy8gICAgICBJdCB3aWxsIHJlbWVtYmVyIHRoZSB0ZXh0IGluIGEg
U3RyU3RyZWFtLgorLy8gICAgICBJdCB3aWxsIHJlbWVtYmVyIHRoZSB0ZXh0IGluIGEgc3RyaW5n
c3RyZWFtLgogLy8gICAyLiBUaGVuIHlvdSBzdHJlYW0gdGhlIE1lc3NhZ2Ugb2JqZWN0IHRvIGFu
IG9zdHJlYW0uCiAvLyAgICAgIFRoaXMgY2F1c2VzIHRoZSB0ZXh0IGluIHRoZSBNZXNzYWdlIHRv
IGJlIHN0cmVhbWVkCiAvLyAgICAgIHRvIHRoZSBvc3RyZWFtLgpAQCAtNzQsNyArNzcsNyBAQCBu
YW1lc3BhY2UgdGVzdGluZyB7CiAvLyBNZXNzYWdlIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBpbmhl
cml0ZWQgZnJvbS4gIEluIHBhcnRpY3VsYXIsIGl0cwogLy8gZGVzdHJ1Y3RvciBpcyBub3Qgdmly
dHVhbC4KIC8vCi0vLyBOb3RlIHRoYXQgU3RyU3RyZWFtIGJlaGF2ZXMgZGlmZmVyZW50bHkgaW4g
Z2NjIGFuZCBpbiBNU1ZDLiAgWW91CisvLyBOb3RlIHRoYXQgc3RyaW5nc3RyZWFtIGJlaGF2ZXMg
ZGlmZmVyZW50bHkgaW4gZ2NjIGFuZCBpbiBNU1ZDLiAgWW91CiAvLyBjYW4gc3RyZWFtIGEgTlVM
TCBjaGFyIHBvaW50ZXIgdG8gaXQgaW4gdGhlIGZvcm1lciwgYnV0IG5vdCBpbiB0aGUKIC8vIGxh
dHRlciAoaXQgY2F1c2VzIGFuIGFjY2VzcyB2aW9sYXRpb24gaWYgeW91IGRvKS4gIFRoZSBNZXNz
YWdlCiAvLyBjbGFzcyBoaWRlcyB0aGlzIGRpZmZlcmVuY2UgYnkgdHJlYXRpbmcgYSBOVUxMIGNo
YXIgcG9pbnRlciBhcwpAQCAtODcsMjcgKzkwLDE4IEBAIGNsYXNzIEdURVNUX0FQSV8gTWVzc2Fn
ZSB7CiAKICBwdWJsaWM6CiAgIC8vIENvbnN0cnVjdHMgYW4gZW1wdHkgTWVzc2FnZS4KLSAgLy8g
V2UgYWxsb2NhdGUgdGhlIFN0clN0cmVhbSBzZXBhcmF0ZWx5IGJlY2F1c2UgaXQgb3RoZXJ3aXNl
IGVhY2ggdXNlIG9mCi0gIC8vIEFTU0VSVC9FWFBFQ1QgaW4gYSBwcm9jZWR1cmUgYWRkcyBvdmVy
IDIwMCBieXRlcyB0byB0aGUgcHJvY2VkdXJlJ3MKLSAgLy8gc3RhY2sgZnJhbWUgbGVhZGluZyB0
byBodWdlIHN0YWNrIGZyYW1lcyBpbiBzb21lIGNhc2VzOyBnY2MgZG9lcyBub3QgcmV1c2UKLSAg
Ly8gdGhlIHN0YWNrIHNwYWNlLgotICBNZXNzYWdlKCkgOiBzc18obmV3IGludGVybmFsOjpTdHJT
dHJlYW0pIHsKLSAgICAvLyBCeSBkZWZhdWx0LCB3ZSB3YW50IHRoZXJlIHRvIGJlIGVub3VnaCBw
cmVjaXNpb24gd2hlbiBwcmludGluZwotICAgIC8vIGEgZG91YmxlIHRvIGEgTWVzc2FnZS4KLSAg
ICAqc3NfIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
ZGlnaXRzMTAgKyAyKTsKLSAgfQorICBNZXNzYWdlKCk7CiAKICAgLy8gQ29weSBjb25zdHJ1Y3Rv
ci4KLSAgTWVzc2FnZShjb25zdCBNZXNzYWdlJiBtc2cpIDogc3NfKG5ldyBpbnRlcm5hbDo6U3Ry
U3RyZWFtKSB7ICAvLyBOT0xJTlQKKyAgTWVzc2FnZShjb25zdCBNZXNzYWdlJiBtc2cpIDogc3Nf
KG5ldyA6OnN0ZDo6c3RyaW5nc3RyZWFtKSB7ICAvLyBOT0xJTlQKICAgICAqc3NfIDw8IG1zZy5H
ZXRTdHJpbmcoKTsKICAgfQogCiAgIC8vIENvbnN0cnVjdHMgYSBNZXNzYWdlIGZyb20gYSBDLXN0
cmluZy4KLSAgZXhwbGljaXQgTWVzc2FnZShjb25zdCBjaGFyKiBzdHIpIDogc3NfKG5ldyBpbnRl
cm5hbDo6U3RyU3RyZWFtKSB7CisgIGV4cGxpY2l0IE1lc3NhZ2UoY29uc3QgY2hhciogc3RyKSA6
IHNzXyhuZXcgOjpzdGQ6OnN0cmluZ3N0cmVhbSkgewogICAgICpzc18gPDwgc3RyOwogICB9CiAK
LSAgfk1lc3NhZ2UoKSB7IGRlbGV0ZSBzc187IH0KICNpZiBHVEVTVF9PU19TWU1CSUFOCiAgIC8v
IFN0cmVhbXMgYSB2YWx1ZSAoZWl0aGVyIGEgcG9pbnRlciBvciBub3QpIHRvIHRoaXMgb2JqZWN0
LgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTExOSw3ICsxMTMsMjIgQEAgY2xhc3MgR1RF
U1RfQVBJXyBNZXNzYWdlIHsKICAgLy8gU3RyZWFtcyBhIG5vbi1wb2ludGVyIHZhbHVlIHRvIHRo
aXMgb2JqZWN0LgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgaW5saW5lIE1lc3NhZ2UmIG9w
ZXJhdG9yIDw8KGNvbnN0IFQmIHZhbCkgewotICAgIDo6R1Rlc3RTdHJlYW1Ub0hlbHBlcihzc18s
IHZhbCk7CisgICAgLy8gU29tZSBsaWJyYXJpZXMgb3ZlcmxvYWQgPDwgZm9yIFNUTCBjb250YWlu
ZXJzLiAgVGhlc2UKKyAgICAvLyBvdmVybG9hZHMgYXJlIGRlZmluZWQgaW4gdGhlIGdsb2JhbCBu
YW1lc3BhY2UgaW5zdGVhZCBvZiA6OnN0ZC4KKyAgICAvLworICAgIC8vIEMrKydzIHN5bWJvbCBs
b29rdXAgcnVsZSAoaS5lLiBLb2VuaWcgbG9va3VwKSBzYXlzIHRoYXQgdGhlc2UKKyAgICAvLyBv
dmVybG9hZHMgYXJlIHZpc2libGUgaW4gZWl0aGVyIHRoZSBzdGQgbmFtZXNwYWNlIG9yIHRoZSBn
bG9iYWwKKyAgICAvLyBuYW1lc3BhY2UsIGJ1dCBub3Qgb3RoZXIgbmFtZXNwYWNlcywgaW5jbHVk
aW5nIHRoZSB0ZXN0aW5nCisgICAgLy8gbmFtZXNwYWNlIHdoaWNoIEdvb2dsZSBUZXN0J3MgTWVz
c2FnZSBjbGFzcyBpcyBpbi4KKyAgICAvLworICAgIC8vIFRvIGFsbG93IFNUTCBjb250YWluZXJz
IChhbmQgb3RoZXIgdHlwZXMgdGhhdCBoYXMgYSA8PCBvcGVyYXRvcgorICAgIC8vIGRlZmluZWQg
aW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UpIHRvIGJlIHVzZWQgaW4gR29vZ2xlIFRlc3QKKyAgICAv
LyBhc3NlcnRpb25zLCB0ZXN0aW5nOjpNZXNzYWdlIG11c3QgYWNjZXNzIHRoZSBjdXN0b20gPDwg
b3BlcmF0b3IKKyAgICAvLyBmcm9tIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAgV2l0aCB0aGlzIHVz
aW5nIGRlY2xhcmF0aW9uLAorICAgIC8vIG92ZXJsb2FkcyBvZiA8PCBkZWZpbmVkIGluIHRoZSBn
bG9iYWwgbmFtZXNwYWNlIGFuZCB0aG9zZQorICAgIC8vIHZpc2libGUgdmlhIEtvZW5pZyBsb29r
dXAgYXJlIGJvdGggZXhwb3NlZCBpbiB0aGlzIGZ1bmN0aW9uLgorICAgIHVzaW5nIDo6b3BlcmF0
b3IgPDw7CisgICAgKnNzXyA8PCB2YWw7CiAgICAgcmV0dXJuICp0aGlzOwogICB9CiAKQEAgLTE0
MSw3ICsxNTAsNyBAQCBjbGFzcyBHVEVTVF9BUElfIE1lc3NhZ2UgewogICAgIGlmIChwb2ludGVy
ID09IE5VTEwpIHsKICAgICAgICpzc18gPDwgIihudWxsKSI7CiAgICAgfSBlbHNlIHsKLSAgICAg
IDo6R1Rlc3RTdHJlYW1Ub0hlbHBlcihzc18sIHBvaW50ZXIpOworICAgICAgKnNzXyA8PCBwb2lu
dGVyOwogICAgIH0KICAgICByZXR1cm4gKnRoaXM7CiAgIH0KQEAgLTE2NSwxMiArMTc0LDggQEAg
Y2xhc3MgR1RFU1RfQVBJXyBNZXNzYWdlIHsKIAogICAvLyBUaGVzZSB0d28gb3ZlcmxvYWRzIGFs
bG93IHN0cmVhbWluZyBhIHdpZGUgQyBzdHJpbmcgdG8gYSBNZXNzYWdlCiAgIC8vIHVzaW5nIHRo
ZSBVVEYtOCBlbmNvZGluZy4KLSAgTWVzc2FnZSYgb3BlcmF0b3IgPDwoY29uc3Qgd2NoYXJfdCog
d2lkZV9jX3N0cikgewotICAgIHJldHVybiAqdGhpcyA8PCBpbnRlcm5hbDo6U3RyaW5nOjpTaG93
V2lkZUNTdHJpbmcod2lkZV9jX3N0cik7Ci0gIH0KLSAgTWVzc2FnZSYgb3BlcmF0b3IgPDwod2No
YXJfdCogd2lkZV9jX3N0cikgewotICAgIHJldHVybiAqdGhpcyA8PCBpbnRlcm5hbDo6U3RyaW5n
OjpTaG93V2lkZUNTdHJpbmcod2lkZV9jX3N0cik7Ci0gIH0KKyAgTWVzc2FnZSYgb3BlcmF0b3Ig
PDwoY29uc3Qgd2NoYXJfdCogd2lkZV9jX3N0cik7CisgIE1lc3NhZ2UmIG9wZXJhdG9yIDw8KHdj
aGFyX3QqIHdpZGVfY19zdHIpOwogCiAjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCiAgIC8vIENv
bnZlcnRzIHRoZSBnaXZlbiB3aWRlIHN0cmluZyB0byBhIG5hcnJvdyBzdHJpbmcgdXNpbmcgdGhl
IFVURi04CkBAIC0xODQsMzYgKzE4OSwzOSBAQCBjbGFzcyBHVEVTVF9BUElfIE1lc3NhZ2Ugewog
ICBNZXNzYWdlJiBvcGVyYXRvciA8PChjb25zdCA6OndzdHJpbmcmIHdzdHIpOwogI2VuZGlmICAv
LyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKIAotICAvLyBHZXRzIHRoZSB0ZXh0IHN0cmVhbWVk
IHRvIHRoaXMgb2JqZWN0IHNvIGZhciBhcyBhIFN0cmluZy4KKyAgLy8gR2V0cyB0aGUgdGV4dCBz
dHJlYW1lZCB0byB0aGlzIG9iamVjdCBzbyBmYXIgYXMgYW4gc3RkOjpzdHJpbmcuCiAgIC8vIEVh
Y2ggJ1wwJyBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlciBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgog
ICAvLwogICAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VS
IFBST0dSQU0uCi0gIGludGVybmFsOjpTdHJpbmcgR2V0U3RyaW5nKCkgY29uc3QgewotICAgIHJl
dHVybiBpbnRlcm5hbDo6U3RyU3RyZWFtVG9TdHJpbmcoc3NfKTsKLSAgfQorICBzdGQ6OnN0cmlu
ZyBHZXRTdHJpbmcoKSBjb25zdDsKIAogIHByaXZhdGU6CisKICNpZiBHVEVTVF9PU19TWU1CSUFO
CiAgIC8vIFRoZXNlIGFyZSBuZWVkZWQgYXMgdGhlIE5va2lhIFN5bWJpYW4gQ29tcGlsZXIgY2Fu
bm90IGRlY2lkZSBiZXR3ZWVuCiAgIC8vIGNvbnN0IFQmIGFuZCBjb25zdCBUKiBpbiBhIGZ1bmN0
aW9uIHRlbXBsYXRlLiBUaGUgTm9raWEgY29tcGlsZXIgX2Nhbl8KICAgLy8gZGVjaWRlIGJldHdl
ZW4gY2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIGZvciBUIGFuZCBUKiwgc28gYQogICAv
LyB0cjE6OnR5cGVfdHJhaXRzLWxpa2UgaXNfcG9pbnRlciB3b3JrcywgYW5kIHdlIGNhbiBvdmVy
bG9hZCBvbiB0aGF0LgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgaW5saW5lIHZvaWQgU3Ry
ZWFtSGVscGVyKGludGVybmFsOjp0cnVlX3R5cGUgLypkdW1teSovLCBUKiBwb2ludGVyKSB7Cisg
IGlubGluZSB2b2lkIFN0cmVhbUhlbHBlcihpbnRlcm5hbDo6dHJ1ZV90eXBlIC8qaXNfcG9pbnRl
ciovLCBUKiBwb2ludGVyKSB7CiAgICAgaWYgKHBvaW50ZXIgPT0gTlVMTCkgewogICAgICAgKnNz
XyA8PCAiKG51bGwpIjsKICAgICB9IGVsc2UgewotICAgICAgOjpHVGVzdFN0cmVhbVRvSGVscGVy
KHNzXywgcG9pbnRlcik7CisgICAgICAqc3NfIDw8IHBvaW50ZXI7CiAgICAgfQogICB9CiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotICBpbmxpbmUgdm9pZCBTdHJlYW1IZWxwZXIoaW50ZXJuYWw6
OmZhbHNlX3R5cGUgLypkdW1teSovLCBjb25zdCBUJiB2YWx1ZSkgewotICAgIDo6R1Rlc3RTdHJl
YW1Ub0hlbHBlcihzc18sIHZhbHVlKTsKKyAgaW5saW5lIHZvaWQgU3RyZWFtSGVscGVyKGludGVy
bmFsOjpmYWxzZV90eXBlIC8qaXNfcG9pbnRlciovLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVCYgdmFsdWUpIHsKKyAgICAvLyBTZWUgdGhlIGNvbW1lbnRzIGluIE1lc3NhZ2Um
IG9wZXJhdG9yIDw8KGNvbnN0IFQmKSBhYm92ZSBmb3Igd2h5CisgICAgLy8gd2UgbmVlZCB0aGlz
IHVzaW5nIHN0YXRlbWVudC4KKyAgICB1c2luZyA6Om9wZXJhdG9yIDw8OworICAgICpzc18gPDwg
dmFsdWU7CiAgIH0KICNlbmRpZiAgLy8gR1RFU1RfT1NfU1lNQklBTgogCiAgIC8vIFdlJ2xsIGhv
bGQgdGhlIHRleHQgc3RyZWFtZWQgdG8gdGhpcyBvYmplY3QgaGVyZS4KLSAgaW50ZXJuYWw6OlN0
clN0cmVhbSogY29uc3Qgc3NfOworICBjb25zdCBpbnRlcm5hbDo6c2NvcGVkX3B0cjwgOjpzdGQ6
OnN0cmluZ3N0cmVhbT4gc3NfOwogCiAgIC8vIFdlIGRlY2xhcmUgKGJ1dCBkb24ndCBpbXBsZW1l
bnQpIHRoaXMgdG8gcHJldmVudCB0aGUgY29tcGlsZXIKICAgLy8gZnJvbSBpbXBsZW1lbnRpbmcg
dGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCkBAIC0yMjUsNiArMjMzLDE4IEBAIGlubGluZSBzdGQ6
Om9zdHJlYW0mIG9wZXJhdG9yIDw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IE1lc3NhZ2UmIHNi
KSB7CiAgIHJldHVybiBvcyA8PCBzYi5HZXRTdHJpbmcoKTsKIH0KIAorbmFtZXNwYWNlIGludGVy
bmFsIHsKKworLy8gQ29udmVydHMgYSBzdHJlYW1hYmxlIHZhbHVlIHRvIGFuIHN0ZDo6c3RyaW5n
LiAgQSBOVUxMIHBvaW50ZXIgaXMKKy8vIGNvbnZlcnRlZCB0byAiKG51bGwpIi4gIFdoZW4gdGhl
IGlucHV0IHZhbHVlIGlzIGEgOjpzdHJpbmcsCisvLyA6OnN0ZDo6c3RyaW5nLCA6OndzdHJpbmcs
IG9yIDo6c3RkOjp3c3RyaW5nIG9iamVjdCwgZWFjaCBOVUwKKy8vIGNoYXJhY3RlciBpbiBpdCBp
cyByZXBsYWNlZCB3aXRoICJcXDAiLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGQ6OnN0cmlu
ZyBTdHJlYW1hYmxlVG9TdHJpbmcoY29uc3QgVCYgc3RyZWFtYWJsZSkgeworICByZXR1cm4gKE1l
c3NhZ2UoKSA8PCBzdHJlYW1hYmxlKS5HZXRTdHJpbmcoKTsKK30KKworfSAgLy8gbmFtZXNwYWNl
IGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCiAjZW5kaWYgIC8vIEdURVNUX0lO
Q0xVREVfR1RFU1RfR1RFU1RfTUVTU0FHRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaAppbmRleCA4MTAwNjk2
NDRkMjNhZDM1NTk3M2NiNTNmY2ViMGE4NTZiMGEwMDZjLi4wMzhmOWJhNzllYjMwMzc3ZjE2NWQ4
YTAyMDBkNDc1MGQzNDliOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9p
bmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaApAQCAtMSw0ICsxLDYgQEAKLS8v
IFRoaXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5IGEgc2NyaXB0LiAgRE8gTk9UIEVESVQgQlkgSEFO
RCEhIQorLy8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgY29tbWFuZDoKKy8vICAgICBwdW1w
LnB5IGd0ZXN0LXBhcmFtLXRlc3QuaC5wdW1wCisvLyBETyBOT1QgRURJVCBCWSBIQU5EISEhCiAK
IC8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgogLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
QEAgLTQ4LDEwICs1MCwxMiBAQAogI2lmIDAKIAogLy8gVG8gd3JpdGUgdmFsdWUtcGFyYW1ldGVy
aXplZCB0ZXN0cywgZmlyc3QgeW91IHNob3VsZCBkZWZpbmUgYSBmaXh0dXJlCi0vLyBjbGFzcy4g
SXQgbXVzdCBiZSBkZXJpdmVkIGZyb20gdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxUPiwgd2hlcmUg
VCBpcwotLy8gdGhlIHR5cGUgb2YgeW91ciBwYXJhbWV0ZXIgdmFsdWVzLiBUZXN0V2l0aFBhcmFt
PFQ+IGlzIGl0c2VsZiBkZXJpdmVkCi0vLyBmcm9tIHRlc3Rpbmc6OlRlc3QuIFQgY2FuIGJlIGFu
eSBjb3B5YWJsZSB0eXBlLiBJZiBpdCdzIGEgcmF3IHBvaW50ZXIsCi0vLyB5b3UgYXJlIHJlc3Bv
bnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgbGlmZXNwYW4gb2YgdGhlIHBvaW50ZWQgdmFsdWVzLgor
Ly8gY2xhc3MuIEl0IGlzIHVzdWFsbHkgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08VD4gKHNlZSBiZWxvdyBmb3IKKy8vIGFub3RoZXIgaW5oZXJpdGFuY2Ugc2NoZW1lIHRoYXQn
cyBzb21ldGltZXMgdXNlZnVsIGluIG1vcmUgY29tcGxpY2F0ZWQKKy8vIGNsYXNzIGhpZXJhcmNo
aWVzKSwgd2hlcmUgdGhlIHR5cGUgb2YgeW91ciBwYXJhbWV0ZXIgdmFsdWVzLgorLy8gVGVzdFdp
dGhQYXJhbTxUPiBpcyBpdHNlbGYgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3QuIFQgY2FuIGJl
IGFueQorLy8gY29weWFibGUgdHlwZS4gSWYgaXQncyBhIHJhdyBwb2ludGVyLCB5b3UgYXJlIHJl
c3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUKKy8vIGxpZmVzcGFuIG9mIHRoZSBwb2ludGVkIHZh
bHVlcy4KIAogY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08
Y29uc3QgY2hhcio+IHsKICAgLy8gWW91IGNhbiBpbXBsZW1lbnQgYWxsIHRoZSB1c3VhbCBjbGFz
cyBmaXh0dXJlIG1lbWJlcnMgaGVyZS4KQEAgLTE0NiwyMSArMTUwLDQ3IEBAIElOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwgVmFsdWVzSW4o
cGV0cykpOwogLy8gSW4gdGhlIGZ1dHVyZSwgd2UgcGxhbiB0byBwdWJsaXNoIHRoZSBBUEkgZm9y
IGRlZmluaW5nIG5ldyBwYXJhbWV0ZXIKIC8vIGdlbmVyYXRvcnMuIEJ1dCBmb3Igbm93IHRoaXMg
aW50ZXJmYWNlIHJlbWFpbnMgcGFydCBvZiB0aGUgaW50ZXJuYWwKIC8vIGltcGxlbWVudGF0aW9u
IGFuZCBpcyBzdWJqZWN0IHRvIGNoYW5nZS4KKy8vCisvLworLy8gQSBwYXJhbWV0ZXJpemVkIHRl
c3QgZml4dHVyZSBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0IGFuZCBmcm9tCisv
LyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD4sIHdoZXJlIFQgaXMgdGhlIHR5cGUgb2Yg
dGhlIHBhcmFtZXRlcgorLy8gdmFsdWVzLiBJbmhlcml0aW5nIGZyb20gVGVzdFdpdGhQYXJhbTxU
PiBzYXRpc2ZpZXMgdGhhdCByZXF1aXJlbWVudCBiZWNhdXNlCisvLyBUZXN0V2l0aFBhcmFtPFQ+
IGluaGVyaXRzIGZyb20gYm90aCBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UuIEluIG1vcmUK
Ky8vIGNvbXBsaWNhdGVkIGhpZXJhcmNoaWVzLCBob3dldmVyLCBpdCBpcyBvY2Nhc2lvbmFsbHkg
dXNlZnVsIHRvIGluaGVyaXQKKy8vIHNlcGFyYXRlbHkgZnJvbSBUZXN0IGFuZCBXaXRoUGFyYW1J
bnRlcmZhY2UuIEZvciBleGFtcGxlOgorCitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3QgeworICAvLyBZb3UgY2FuIGluaGVyaXQgYWxsIHRoZSB1c3VhbCBtZW1iZXJzIGZv
ciBhIG5vbi1wYXJhbWV0ZXJpemVkIHRlc3QKKyAgLy8gZml4dHVyZSBoZXJlLgorfTsKKworY2xh
c3MgRGVyaXZlZFRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQ
YXJhbUludGVyZmFjZTxpbnQ+IHsKKyAgLy8gVGhlIHVzdWFsIHRlc3QgZml4dHVyZSBtZW1iZXJz
IGdvIGhlcmUgdG9vLgorfTsKKworVEVTVF9GKEJhc2VUZXN0LCBIYXNGb28pIHsKKyAgLy8gVGhp
cyBpcyBhbiBvcmRpbmFyeSBub24tcGFyYW1ldGVyaXplZCB0ZXN0LgorfQorCitURVNUX1AoRGVy
aXZlZFRlc3QsIERvZXNCbGFoKSB7CisgIC8vIEdldFBhcmFtIHdvcmtzIGp1c3QgdGhlIHNhbWUg
aGVyZSBhcyBpZiB5b3UgaW5oZXJpdCBmcm9tIFRlc3RXaXRoUGFyYW0uCisgIEVYUEVDVF9UUlVF
KGZvby5CbGFoKEdldFBhcmFtKCkpKTsKK30KIAogI2VuZGlmICAvLyAwCiAKLSNpbmNsdWRlIDxn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oIgogCiAjaWYgIUdURVNUX09TX1NZTUJJQU4KLSNpbmNsdWRlIDx1dGlsaXR5Pgor
IyBpbmNsdWRlIDx1dGlsaXR5PgogI2VuZGlmCiAKIC8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBk
ZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKIC8vICp1bmNvbmRp
dGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKIC8v
IGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJh
bS11dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5l
cmF0ZWQuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaCIKKyNpbmNsdWRlICJndGVz
dC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIgogCiAjaWYgR1RFU1RfSEFT
X1BBUkFNX1RFU1QKIApAQCAtMjc2LDExICszMDYsMTAgQEAgaW50ZXJuYWw6OlBhcmFtR2VuZXJh
dG9yPFQ+IFJhbmdlKFQgc3RhcnQsIFQgZW5kKSB7CiAvLwogdGVtcGxhdGUgPHR5cGVuYW1lIEZv
cndhcmRJdGVyYXRvcj4KIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjwKLSAgICB0eXBlbmFtZSA6
OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+IFZhbHVl
c0luKAotICBGb3J3YXJkSXRlcmF0b3IgYmVnaW4sCi0gIEZvcndhcmRJdGVyYXRvciBlbmQpIHsK
LSAgdHlwZWRlZiB0eXBlbmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRv
cj46OnZhbHVlX3R5cGUKLSAgICAgIFBhcmFtVHlwZTsKKyAgdHlwZW5hbWUgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4KK1Zh
bHVlc0luKEZvcndhcmRJdGVyYXRvciBiZWdpbiwgRm9yd2FyZEl0ZXJhdG9yIGVuZCkgeworICB0
eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJhaXRzPEZvcndh
cmRJdGVyYXRvcj4KKyAgICAgIDo6dmFsdWVfdHlwZSBQYXJhbVR5cGU7CiAgIHJldHVybiBpbnRl
cm5hbDo6UGFyYW1HZW5lcmF0b3I8UGFyYW1UeXBlPigKICAgICAgIG5ldyBpbnRlcm5hbDo6VmFs
dWVzSW5JdGVyYXRvclJhbmdlR2VuZXJhdG9yPFBhcmFtVHlwZT4oYmVnaW4sIGVuZCkpOwogfQpA
QCAtMTE5Miw3ICsxMjIxLDcgQEAgaW5saW5lIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxib29s
PiBCb29sKCkgewogICByZXR1cm4gVmFsdWVzKGZhbHNlLCB0cnVlKTsKIH0KIAotI2lmIEdURVNU
X0hBU19DT01CSU5FCisjIGlmIEdURVNUX0hBU19DT01CSU5FCiAvLyBDb21iaW5lKCkgYWxsb3dz
IHRoZSB1c2VyIHRvIGNvbWJpbmUgdHdvIG9yIG1vcmUgc2VxdWVuY2VzIHRvIHByb2R1Y2UKIC8v
IHZhbHVlcyBvZiBhIENhcnRlc2lhbiBwcm9kdWN0IG9mIHRob3NlIHNlcXVlbmNlcycgZWxlbWVu
dHMuCiAvLwpAQCAtMTIyOCw3ICsxMjU3LDcgQEAgaW5saW5lIGludGVybmFsOjpQYXJhbUdlbmVy
YXRvcjxib29sPiBCb29sKCkgewogLy8gQm9vbGVhbiBmbGFnczoKIC8vCiAvLyBjbGFzcyBGbGFn
RGVwZW5kZW50VGVzdAotLy8gICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08dHVw
bGUoYm9vbCwgYm9vbCk+ID4geworLy8gICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08dHVwbGU8Ym9vbCwgYm9vbD4gPiB7CiAvLyAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKIC8v
ICAgICAvLyBBc3NpZ25zIGV4dGVybmFsX2ZsYWdfMSBhbmQgZXh0ZXJuYWxfZmxhZ18yIHZhbHVl
cyBmcm9tIHRoZSB0dXBsZS4KIC8vICAgICB0aWUoZXh0ZXJuYWxfZmxhZ18xLCBleHRlcm5hbF9m
bGFnXzIpID0gR2V0UGFyYW0oKTsKQEAgLTEzNDQsMTEgKzEzNzMsMTEgQEAgaW50ZXJuYWw6OkNh
cnRlc2lhblByb2R1Y3RIb2xkZXIxMDxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0b3Iz
LAogICAgICAgR2VuZXJhdG9yMTA+KAogICAgICAgZzEsIGcyLCBnMywgZzQsIGc1LCBnNiwgZzcs
IGc4LCBnOSwgZzEwKTsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKKyMgZW5kaWYg
IC8vIEdURVNUX0hBU19DT01CSU5FCiAKIAogCi0jZGVmaW5lIFRFU1RfUCh0ZXN0X2Nhc2VfbmFt
ZSwgdGVzdF9uYW1lKSBcCisjIGRlZmluZSBURVNUX1AodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFt
ZSkgXAogICBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0
X25hbWUpIFwKICAgICAgIDogcHVibGljIHRlc3RfY2FzZV9uYW1lIHsgXAogICAgcHVibGljOiBc
CkBAIC0xMzU4LDE0ICsxMzg3LDE3IEBAIGludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVy
MTA8R2VuZXJhdG9yMSwgR2VuZXJhdG9yMiwgR2VuZXJhdG9yMywKICAgICBzdGF0aWMgaW50IEFk
ZFRvUmVnaXN0cnkoKSB7IFwKICAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpLiBcCiAgICAgICAgICAgR2V0VGVzdENh
c2VQYXR0ZXJuSG9sZGVyPHRlc3RfY2FzZV9uYW1lPihcCi0gICAgICAgICAgICAgICN0ZXN0X2Nh
c2VfbmFtZSwgX19GSUxFX18sIF9fTElORV9fKS0+QWRkVGVzdFBhdHRlcm4oXAotICAgICAgICAg
ICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCi0gICAgICAgICAgICAgICAgICAjdGVzdF9uYW1l
LCBcCi0gICAgICAgICAgICAgICAgICBuZXcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdE1ldGFG
YWN0b3J5PCBcCi0gICAgICAgICAgICAgICAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0
ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKT4oKSk7IFwKKyAgICAgICAgICAgICAgI3Rlc3RfY2Fz
ZV9uYW1lLCBcCisgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlv
bihcCisgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pKS0+QWRkVGVzdFBhdHRl
cm4oXAorICAgICAgICAgICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgXAorICAgICAgICAg
ICAgICAgICAgICAgICN0ZXN0X25hbWUsIFwKKyAgICAgICAgICAgICAgICAgICAgICBuZXcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6VGVzdE1ldGFGYWN0b3J5PCBcCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8oXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSk+KCkpOyBcCiAgICAgICByZXR1cm4gMDsg
XAogICAgIH0gXAotICAgIHN0YXRpYyBpbnQgZ3Rlc3RfcmVnaXN0ZXJpbmdfZHVtbXlfOyBcCisg
ICAgc3RhdGljIGludCBndGVzdF9yZWdpc3RlcmluZ19kdW1teV8gR1RFU1RfQVRUUklCVVRFX1VO
VVNFRF87IFwKICAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFwKICAgICAgICAg
R1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSk7IFwKICAg
fTsgXApAQCAtMTM3NCwxNiArMTQwNiwzNiBAQCBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhv
bGRlcjEwPEdlbmVyYXRvcjEsIEdlbmVyYXRvcjIsIEdlbmVyYXRvcjMsCiAgICAgICBHVEVTVF9U
RVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpOjpBZGRUb1JlZ2lzdHJ5
KCk7IFwKICAgdm9pZCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0
X25hbWUpOjpUZXN0Qm9keSgpCiAKLSNkZWZpbmUgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AocHJl
Zml4LCB0ZXN0X2Nhc2VfbmFtZSwgZ2VuZXJhdG9yKSBcCisvLyBUaGUgb3B0aW9uYWwgbGFzdCBh
cmd1bWVudCB0byBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBhbGxvd3MgdGhlIHVzZXIKKy8vIHRv
IHNwZWNpZnkgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHRoYXQgZ2VuZXJhdGVzIGN1c3RvbSB0ZXN0
IG5hbWUgc3VmZml4ZXMKKy8vIGJhc2VkIG9uIHRoZSB0ZXN0IHBhcmFtZXRlcnMuIFRoZSBmdW5j
dGlvbiBzaG91bGQgYWNjZXB0IG9uZSBhcmd1bWVudCBvZgorLy8gdHlwZSB0ZXN0aW5nOjpUZXN0
UGFyYW1JbmZvPGNsYXNzIFBhcmFtVHlwZT4sIGFuZCByZXR1cm4gc3RkOjpzdHJpbmcuCisvLwor
Ly8gdGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSBpcyBhIGJ1aWx0aW4gdGVzdCBzdWZm
aXggZ2VuZXJhdG9yIHRoYXQKKy8vIHJldHVybnMgdGhlIHZhbHVlIG9mIHRlc3Rpbmc6OlByaW50
VG9TdHJpbmcoR2V0UGFyYW0oKSkuIEl0IGRvZXMgbm90IHdvcmsKKy8vIGZvciBzdGQ6OnN0cmlu
ZyBvciBDIHN0cmluZ3MuCisvLworLy8gTm90ZTogdGVzdCBuYW1lcyBtdXN0IGJlIG5vbi1lbXB0
eSwgdW5pcXVlLCBhbmQgbWF5IG9ubHkgY29udGFpbiBBU0NJSQorLy8gYWxwaGFudW1lcmljIGNo
YXJhY3RlcnMgb3IgdW5kZXJzY29yZS4KKworIyBkZWZpbmUgSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AocHJlZml4LCB0ZXN0X2Nhc2VfbmFtZSwgZ2VuZXJhdG9yLCAuLi4pIFwKICAgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlwZT4gXAog
ICAgICAgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRvcl8oKSB7
IHJldHVybiBnZW5lcmF0b3I7IH0gXAotICBpbnQgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9u
YW1lIyNfZHVtbXlfID0gXAorICA6OnN0ZDo6c3RyaW5nIGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nh
c2VfbmFtZSMjX0V2YWxHZW5lcmF0ZU5hbWVfKCBcCisgICAgICBjb25zdCA6OnRlc3Rpbmc6OlRl
c3RQYXJhbUluZm88dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlwZT4mIGluZm8pIHsgXAorICAgIHJl
dHVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpHZXRQYXJhbU5hbWVHZW48dGVzdF9jYXNlX25hbWU6
OlBhcmFtVHlwZT4gXAorICAgICAgICAoX19WQV9BUkdTX18pKGluZm8pOyBcCisgIH0gXAorICBp
bnQgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfZHVtbXlfIEdURVNUX0FUVFJJQlVU
RV9VTlVTRURfID0gXAogICAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+
cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkuIFwKICAgICAgICAgICBHZXRUZXN0Q2FzZVBh
dHRlcm5Ib2xkZXI8dGVzdF9jYXNlX25hbWU+KFwKLSAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9u
YW1lLCBfX0ZJTEVfXywgX19MSU5FX18pLT5BZGRUZXN0Q2FzZUluc3RhbnRpYXRpb24oXAotICAg
ICAgICAgICAgICAgICAgI3ByZWZpeCwgXAotICAgICAgICAgICAgICAgICAgJmd0ZXN0XyMjcHJl
Zml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0b3JfLCBcCi0gICAgICAgICAgICAgICAg
ICBfX0ZJTEVfXywgX19MSU5FX18pCisgICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgXAor
ICAgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpDb2RlTG9jYXRpb24oXAorICAgICAg
ICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKSktPkFkZFRlc3RDYXNlSW5zdGFudGlhdGlv
bihcCisgICAgICAgICAgICAgICAgICAgICAgI3ByZWZpeCwgXAorICAgICAgICAgICAgICAgICAg
ICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdG9yXywgXAor
ICAgICAgICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19F
dmFsR2VuZXJhdGVOYW1lXywgXAorICAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJ
TkVfXykKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1
bXAKaW5kZXggYTIzMTE4ODI3ZjFkNDgwZmJiYjgyNTJmMzQwZjBlYmVkYTM0NmUyNS4uMzA3OGQ2
ZDJhMTlkNzkxOGVkM2M3NTZhYmNmY2I0OTkzN2UxNmViMSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3Qu
aC5wdW1wCkBAIC00OSwxMCArNDksMTIgQEAgJHZhciBtYXh0dXBsZSA9IDEwICAkJCBNYXhpbXVt
IG51bWJlciBvZiBDb21iaW5lIGFyZ3VtZW50cyB3ZSB3YW50IHRvIHN1cHBvcnQuCiAjaWYgMAog
CiAvLyBUbyB3cml0ZSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLCBmaXJzdCB5b3Ugc2hvdWxk
IGRlZmluZSBhIGZpeHR1cmUKLS8vIGNsYXNzLiBJdCBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0
aW5nOjpUZXN0V2l0aFBhcmFtPFQ+LCB3aGVyZSBUIGlzCi0vLyB0aGUgdHlwZSBvZiB5b3VyIHBh
cmFtZXRlciB2YWx1ZXMuIFRlc3RXaXRoUGFyYW08VD4gaXMgaXRzZWxmIGRlcml2ZWQKLS8vIGZy
b20gdGVzdGluZzo6VGVzdC4gVCBjYW4gYmUgYW55IGNvcHlhYmxlIHR5cGUuIElmIGl0J3MgYSBy
YXcgcG9pbnRlciwKLS8vIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBsaWZl
c3BhbiBvZiB0aGUgcG9pbnRlZCB2YWx1ZXMuCisvLyBjbGFzcy4gSXQgaXMgdXN1YWxseSBkZXJp
dmVkIGZyb20gdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxUPiAoc2VlIGJlbG93IGZvcgorLy8gYW5v
dGhlciBpbmhlcml0YW5jZSBzY2hlbWUgdGhhdCdzIHNvbWV0aW1lcyB1c2VmdWwgaW4gbW9yZSBj
b21wbGljYXRlZAorLy8gY2xhc3MgaGllcmFyY2hpZXMpLCB3aGVyZSB0aGUgdHlwZSBvZiB5b3Vy
IHBhcmFtZXRlciB2YWx1ZXMuCisvLyBUZXN0V2l0aFBhcmFtPFQ+IGlzIGl0c2VsZiBkZXJpdmVk
IGZyb20gdGVzdGluZzo6VGVzdC4gVCBjYW4gYmUgYW55CisvLyBjb3B5YWJsZSB0eXBlLiBJZiBp
dCdzIGEgcmF3IHBvaW50ZXIsIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZQor
Ly8gbGlmZXNwYW4gb2YgdGhlIHBvaW50ZWQgdmFsdWVzLgogCiBjbGFzcyBGb29UZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBjaGFyKj4gewogICAvLyBZb3UgY2Fu
IGltcGxlbWVudCBhbGwgdGhlIHVzdWFsIGNsYXNzIGZpeHR1cmUgbWVtYmVycyBoZXJlLgpAQCAt
MTM0LDkgKzEzNiwxMiBAQCBJTlNUQU5USUFURV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFudGlh
dGlvbk5hbWUsIEZvb1Rlc3QsIFZhbHVlc0luKHBldHMpKTsKIC8vIGluIHRoZSBnaXZlbiB0ZXN0
IGNhc2UsIHdoZXRoZXIgdGhlaXIgZGVmaW5pdGlvbnMgY29tZSBiZWZvcmUgb3IKIC8vIEFGVEVS
IHRoZSBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBzdGF0ZW1lbnQuCiAvLwotLy8gUGxlYXNlIGFs
c28gbm90ZSB0aGF0IGdlbmVyYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIGluCi0vLyBS
VU5fQUxMX1RFU1RTKCksIGFmdGVyIG1haW4oKSBoYXMgc3RhcnRlZC4gVGhpcyBhbGxvd3MgZXZh
bHVhdGlvbiBvZgotLy8gcGFyYW1ldGVyIGxpc3QgYmFzZWQgb24gY29tbWFuZCBsaW5lIHBhcmFt
ZXRlcnMuCisvLyBQbGVhc2UgYWxzbyBub3RlIHRoYXQgZ2VuZXJhdG9yIGV4cHJlc3Npb25zIChp
bmNsdWRpbmcgcGFyYW1ldGVycyB0byB0aGUKKy8vIGdlbmVyYXRvcnMpIGFyZSBldmFsdWF0ZWQg
aW4gSW5pdEdvb2dsZVRlc3QoKSwgYWZ0ZXIgbWFpbigpIGhhcyBzdGFydGVkLgorLy8gVGhpcyBh
bGxvd3MgdGhlIHVzZXIgb24gb25lIGhhbmQsIHRvIGFkanVzdCBnZW5lcmF0b3IgcGFyYW1ldGVy
cyBpbiBvcmRlcgorLy8gdG8gZHluYW1pY2FsbHkgZGV0ZXJtaW5lIGEgc2V0IG9mIHRlc3RzIHRv
IHJ1biBhbmQgb24gdGhlIG90aGVyIGhhbmQsCisvLyBnaXZlIHRoZSB1c2VyIGEgY2hhbmNlIHRv
IGluc3BlY3QgdGhlIGdlbmVyYXRlZCB0ZXN0cyB3aXRoIEdvb2dsZSBUZXN0CisvLyByZWZsZWN0
aW9uIEFQSSBiZWZvcmUgUlVOX0FMTF9URVNUUygpIGlzIGV4ZWN1dGVkLgogLy8KIC8vIFlvdSBj
YW4gc2VlIHNhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYyBhbmQgc2FtcGxlcy9zYW1wbGU4X3Vu
aXR0ZXN0LmNjCiAvLyBmb3IgbW9yZSBleGFtcGxlcy4KQEAgLTE0NCwyMSArMTQ5LDQ3IEBAIElO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwg
VmFsdWVzSW4ocGV0cykpOwogLy8gSW4gdGhlIGZ1dHVyZSwgd2UgcGxhbiB0byBwdWJsaXNoIHRo
ZSBBUEkgZm9yIGRlZmluaW5nIG5ldyBwYXJhbWV0ZXIKIC8vIGdlbmVyYXRvcnMuIEJ1dCBmb3Ig
bm93IHRoaXMgaW50ZXJmYWNlIHJlbWFpbnMgcGFydCBvZiB0aGUgaW50ZXJuYWwKIC8vIGltcGxl
bWVudGF0aW9uIGFuZCBpcyBzdWJqZWN0IHRvIGNoYW5nZS4KKy8vCisvLworLy8gQSBwYXJhbWV0
ZXJpemVkIHRlc3QgZml4dHVyZSBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0IGFu
ZCBmcm9tCisvLyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD4sIHdoZXJlIFQgaXMgdGhl
IHR5cGUgb2YgdGhlIHBhcmFtZXRlcgorLy8gdmFsdWVzLiBJbmhlcml0aW5nIGZyb20gVGVzdFdp
dGhQYXJhbTxUPiBzYXRpc2ZpZXMgdGhhdCByZXF1aXJlbWVudCBiZWNhdXNlCisvLyBUZXN0V2l0
aFBhcmFtPFQ+IGluaGVyaXRzIGZyb20gYm90aCBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2Uu
IEluIG1vcmUKKy8vIGNvbXBsaWNhdGVkIGhpZXJhcmNoaWVzLCBob3dldmVyLCBpdCBpcyBvY2Nh
c2lvbmFsbHkgdXNlZnVsIHRvIGluaGVyaXQKKy8vIHNlcGFyYXRlbHkgZnJvbSBUZXN0IGFuZCBX
aXRoUGFyYW1JbnRlcmZhY2UuIEZvciBleGFtcGxlOgorCitjbGFzcyBCYXNlVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgeworICAvLyBZb3UgY2FuIGluaGVyaXQgYWxsIHRoZSB1c3VhbCBt
ZW1iZXJzIGZvciBhIG5vbi1wYXJhbWV0ZXJpemVkIHRlc3QKKyAgLy8gZml4dHVyZSBoZXJlLgor
fTsKKworY2xhc3MgRGVyaXZlZFRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsIHB1YmxpYyA6OnRlc3Rp
bmc6OldpdGhQYXJhbUludGVyZmFjZTxpbnQ+IHsKKyAgLy8gVGhlIHVzdWFsIHRlc3QgZml4dHVy
ZSBtZW1iZXJzIGdvIGhlcmUgdG9vLgorfTsKKworVEVTVF9GKEJhc2VUZXN0LCBIYXNGb28pIHsK
KyAgLy8gVGhpcyBpcyBhbiBvcmRpbmFyeSBub24tcGFyYW1ldGVyaXplZCB0ZXN0LgorfQorCitU
RVNUX1AoRGVyaXZlZFRlc3QsIERvZXNCbGFoKSB7CisgIC8vIEdldFBhcmFtIHdvcmtzIGp1c3Qg
dGhlIHNhbWUgaGVyZSBhcyBpZiB5b3UgaW5oZXJpdCBmcm9tIFRlc3RXaXRoUGFyYW0uCisgIEVY
UEVDVF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsKK30KIAogI2VuZGlmICAvLyAwCiAKLSNp
bmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAjaWYgIUdURVNUX09TX1NZTUJJQU4KLSNpbmNsdWRlIDx1
dGlsaXR5PgorIyBpbmNsdWRlIDx1dGlsaXR5PgogI2VuZGlmCiAKIC8vIHNjcmlwdHMvZnVzZV9n
dGVzdC5weSBkZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKIC8v
ICp1bmNvbmRpdGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUg
bW92ZWQKIC8vIGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9n
dGVzdC1wYXJhbS11dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC1nZW5lcmF0ZWQuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5h
bC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaCIKKyNpbmNs
dWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIgogCiAjaWYg
R1RFU1RfSEFTX1BBUkFNX1RFU1QKIApAQCAtMjc0LDExICszMDUsMTAgQEAgaW50ZXJuYWw6OlBh
cmFtR2VuZXJhdG9yPFQ+IFJhbmdlKFQgc3RhcnQsIFQgZW5kKSB7CiAvLwogdGVtcGxhdGUgPHR5
cGVuYW1lIEZvcndhcmRJdGVyYXRvcj4KIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjwKLSAgICB0
eXBlbmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5
cGU+IFZhbHVlc0luKAotICBGb3J3YXJkSXRlcmF0b3IgYmVnaW4sCi0gIEZvcndhcmRJdGVyYXRv
ciBlbmQpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndh
cmRJdGVyYXRvcj46OnZhbHVlX3R5cGUKLSAgICAgIFBhcmFtVHlwZTsKKyAgdHlwZW5hbWUgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVf
dHlwZT4KK1ZhbHVlc0luKEZvcndhcmRJdGVyYXRvciBiZWdpbiwgRm9yd2FyZEl0ZXJhdG9yIGVu
ZCkgeworICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJh
aXRzPEZvcndhcmRJdGVyYXRvcj4KKyAgICAgIDo6dmFsdWVfdHlwZSBQYXJhbVR5cGU7CiAgIHJl
dHVybiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8UGFyYW1UeXBlPigKICAgICAgIG5ldyBpbnRl
cm5hbDo6VmFsdWVzSW5JdGVyYXRvclJhbmdlR2VuZXJhdG9yPFBhcmFtVHlwZT4oYmVnaW4sIGVu
ZCkpOwogfQpAQCAtMzQ4LDcgKzM3OCw3IEBAIGlubGluZSBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0
b3I8Ym9vbD4gQm9vbCgpIHsKICAgcmV0dXJuIFZhbHVlcyhmYWxzZSwgdHJ1ZSk7CiB9CiAKLSNp
ZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNfQ09NQklORQogLy8gQ29tYmluZSgp
IGFsbG93cyB0aGUgdXNlciB0byBjb21iaW5lIHR3byBvciBtb3JlIHNlcXVlbmNlcyB0byBwcm9k
dWNlCiAvLyB2YWx1ZXMgb2YgYSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB0aG9zZSBzZXF1ZW5jZXMn
IGVsZW1lbnRzLgogLy8KQEAgLTM4NCw3ICs0MTQsNyBAQCBpbmxpbmUgaW50ZXJuYWw6OlBhcmFt
R2VuZXJhdG9yPGJvb2w+IEJvb2woKSB7CiAvLyBCb29sZWFuIGZsYWdzOgogLy8KIC8vIGNsYXNz
IEZsYWdEZXBlbmRlbnRUZXN0Ci0vLyAgICAgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJh
bTx0dXBsZShib29sLCBib29sKT4gPiB7CisvLyAgICAgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdp
dGhQYXJhbTx0dXBsZTxib29sLCBib29sPiA+IHsKIC8vICAgdmlydHVhbCB2b2lkIFNldFVwKCkg
ewogLy8gICAgIC8vIEFzc2lnbnMgZXh0ZXJuYWxfZmxhZ18xIGFuZCBleHRlcm5hbF9mbGFnXzIg
dmFsdWVzIGZyb20gdGhlIHR1cGxlLgogLy8gICAgIHRpZShleHRlcm5hbF9mbGFnXzEsIGV4dGVy
bmFsX2ZsYWdfMikgPSBHZXRQYXJhbSgpOwpAQCAtNDA5LDExICs0MzksMTEgQEAgaW50ZXJuYWw6
OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIkaTwkZm9yIGosIFtbR2VuZXJhdG9yJGpdXT4gQ29tYmlu
ZSgKIH0KIAogXV0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKKyMgZW5kaWYgIC8vIEdU
RVNUX0hBU19DT01CSU5FCiAKIAogCi0jZGVmaW5lIFRFU1RfUCh0ZXN0X2Nhc2VfbmFtZSwgdGVz
dF9uYW1lKSBcCisjIGRlZmluZSBURVNUX1AodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXAog
ICBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUp
IFwKICAgICAgIDogcHVibGljIHRlc3RfY2FzZV9uYW1lIHsgXAogICAgcHVibGljOiBcCkBAIC00
MjMsMTQgKzQ1MywxNyBAQCBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlciRpPCRmb3Ig
aiwgW1tHZW5lcmF0b3Ikal1dPiBDb21iaW5lKAogICAgIHN0YXRpYyBpbnQgQWRkVG9SZWdpc3Ry
eSgpIHsgXAogICAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+cGFyYW1l
dGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkuIFwKICAgICAgICAgICBHZXRUZXN0Q2FzZVBhdHRlcm5I
b2xkZXI8dGVzdF9jYXNlX25hbWU+KFwKLSAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBf
X0ZJTEVfXywgX19MSU5FX18pLT5BZGRUZXN0UGF0dGVybihcCi0gICAgICAgICAgICAgICAgICAj
dGVzdF9jYXNlX25hbWUsIFwKLSAgICAgICAgICAgICAgICAgICN0ZXN0X25hbWUsIFwKLSAgICAg
ICAgICAgICAgICAgIG5ldyA6OnRlc3Rpbmc6OmludGVybmFsOjpUZXN0TWV0YUZhY3Rvcnk8IFwK
LSAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9u
YW1lLCB0ZXN0X25hbWUpPigpKTsgXAorICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIFwK
KyAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKFwKKyAgICAg
ICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykpLT5BZGRUZXN0UGF0dGVybihcCisgICAg
ICAgICAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCisgICAgICAgICAgICAgICAgICAg
ICAgI3Rlc3RfbmFtZSwgXAorICAgICAgICAgICAgICAgICAgICAgIG5ldyA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpUZXN0TWV0YUZhY3Rvcnk8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR1RF
U1RfVEVTVF9DTEFTU19OQU1FXyhcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKT4oKSk7IFwKICAgICAgIHJldHVybiAwOyBcCiAgICAgfSBc
Ci0gICAgc3RhdGljIGludCBndGVzdF9yZWdpc3RlcmluZ19kdW1teV87IFwKKyAgICBzdGF0aWMg
aW50IGd0ZXN0X3JlZ2lzdGVyaW5nX2R1bW15XyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXzsgXAog
ICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oXAogICAgICAgICBHVEVTVF9URVNU
X0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpKTsgXAogICB9OyBcCkBAIC00
MzksMTYgKzQ3MiwzNiBAQCBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlciRpPCRmb3Ig
aiwgW1tHZW5lcmF0b3Ikal1dPiBDb21iaW5lKAogICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1F
Xyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKTo6QWRkVG9SZWdpc3RyeSgpOyBcCiAgIHZvaWQg
R1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKTo6VGVzdEJv
ZHkoKQogCi0jZGVmaW5lIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKHByZWZpeCwgdGVzdF9jYXNl
X25hbWUsIGdlbmVyYXRvcikgXAorLy8gVGhlIG9wdGlvbmFsIGxhc3QgYXJndW1lbnQgdG8gSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AgYWxsb3dzIHRoZSB1c2VyCisvLyB0byBzcGVjaWZ5IGEgZnVu
Y3Rpb24gb3IgZnVuY3RvciB0aGF0IGdlbmVyYXRlcyBjdXN0b20gdGVzdCBuYW1lIHN1ZmZpeGVz
CisvLyBiYXNlZCBvbiB0aGUgdGVzdCBwYXJhbWV0ZXJzLiBUaGUgZnVuY3Rpb24gc2hvdWxkIGFj
Y2VwdCBvbmUgYXJndW1lbnQgb2YKKy8vIHR5cGUgdGVzdGluZzo6VGVzdFBhcmFtSW5mbzxjbGFz
cyBQYXJhbVR5cGU+LCBhbmQgcmV0dXJuIHN0ZDo6c3RyaW5nLgorLy8KKy8vIHRlc3Rpbmc6OlBy
aW50VG9TdHJpbmdQYXJhbU5hbWUgaXMgYSBidWlsdGluIHRlc3Qgc3VmZml4IGdlbmVyYXRvciB0
aGF0CisvLyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0ZXN0aW5nOjpQcmludFRvU3RyaW5nKEdldFBh
cmFtKCkpLgorLy8KKy8vIE5vdGU6IHRlc3QgbmFtZXMgbXVzdCBiZSBub24tZW1wdHksIHVuaXF1
ZSwgYW5kIG1heSBvbmx5IGNvbnRhaW4gQVNDSUkKKy8vIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJz
IG9yIHVuZGVyc2NvcmUuIEJlY2F1c2UgUHJpbnRUb1N0cmluZyBhZGRzIHF1b3RlcworLy8gdG8g
c3RkOjpzdHJpbmcgYW5kIEMgc3RyaW5ncywgaXQgd29uJ3Qgd29yayBmb3IgdGhlc2UgdHlwZXMu
CisKKyMgZGVmaW5lIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKHByZWZpeCwgdGVzdF9jYXNlX25h
bWUsIGdlbmVyYXRvciwgLi4uKSBcCiAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJh
dG9yPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+IFwKICAgICAgIGd0ZXN0XyMjcHJlZml4IyN0
ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0b3JfKCkgeyByZXR1cm4gZ2VuZXJhdG9yOyB9IFwK
LSAgaW50IGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX2R1bW15XyA9IFwKKyAgOjpz
dGQ6OnN0cmluZyBndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdGVO
YW1lXyggXAorICAgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHRlc3RfY2FzZV9u
YW1lOjpQYXJhbVR5cGU+JiBpbmZvKSB7IFwKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5h
bDo6R2V0UGFyYW1OYW1lR2VuPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+IFwKKyAgICAgICAg
KF9fVkFfQVJHU19fKShpbmZvKTsgXAorICB9IFwKKyAgaW50IGd0ZXN0XyMjcHJlZml4IyN0ZXN0
X2Nhc2VfbmFtZSMjX2R1bW15XyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9IFwKICAgICAgIDo6
dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdp
c3RyeSgpLiBcCiAgICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVyPHRlc3RfY2FzZV9u
YW1lPihcCi0gICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgX19GSUxFX18sIF9fTElORV9f
KS0+QWRkVGVzdENhc2VJbnN0YW50aWF0aW9uKFwKLSAgICAgICAgICAgICAgICAgICNwcmVmaXgs
IFwKLSAgICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19F
dmFsR2VuZXJhdG9yXywgXAotICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKQor
ICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIFwKKyAgICAgICAgICAgICAgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKFwKKyAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBf
X0xJTkVfXykpLT5BZGRUZXN0Q2FzZUluc3RhbnRpYXRpb24oXAorICAgICAgICAgICAgICAgICAg
ICAgICNwcmVmaXgsIFwKKyAgICAgICAgICAgICAgICAgICAgICAmZ3Rlc3RfIyNwcmVmaXgjI3Rl
c3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRvcl8sIFwKKyAgICAgICAgICAgICAgICAgICAgICAm
Z3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRlTmFtZV8sIFwKKyAg
ICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pCiAKIH0gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTMzMTY0Y2IzOGFiNTA1OTYyZjc1
YjE1NzY1NGFlZWU1NDU5ZjNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wcmludGVycy5oCkBAIC0wLDAgKzEsOTkzIEBACisv
LyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRp
c3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
Ky8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9y
OiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisvLyBHb29nbGUgVGVzdCAtIFRoZSBH
b29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrCisvLworLy8gVGhpcyBmaWxlIGltcGxlbWVudHMg
YSB1bml2ZXJzYWwgdmFsdWUgcHJpbnRlciB0aGF0IGNhbiBwcmludCBhCisvLyB2YWx1ZSBvZiBh
bnkgdHlwZSBUOgorLy8KKy8vICAgdm9pZCA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxQ
cmludGVyPFQ+OjpQcmludCh2YWx1ZSwgb3N0cmVhbV9wdHIpOworLy8KKy8vIEEgdXNlciBjYW4g
dGVhY2ggdGhpcyBmdW5jdGlvbiBob3cgdG8gcHJpbnQgYSBjbGFzcyB0eXBlIFQgYnkKKy8vIGRl
ZmluaW5nIGVpdGhlciBvcGVyYXRvcjw8KCkgb3IgUHJpbnRUbygpIGluIHRoZSBuYW1lc3BhY2Ug
dGhhdAorLy8gZGVmaW5lcyBULiAgTW9yZSBzcGVjaWZpY2FsbHksIHRoZSBGSVJTVCBkZWZpbmVk
IGZ1bmN0aW9uIGluIHRoZQorLy8gZm9sbG93aW5nIGxpc3Qgd2lsbCBiZSB1c2VkIChhc3N1bWlu
ZyBUIGlzIGRlZmluZWQgaW4gbmFtZXNwYWNlCisvLyBmb28pOgorLy8KKy8vICAgMS4gZm9vOjpQ
cmludFRvKGNvbnN0IFQmLCBvc3RyZWFtKikKKy8vICAgMi4gb3BlcmF0b3I8PChvc3RyZWFtJiwg
Y29uc3QgVCYpIGRlZmluZWQgaW4gZWl0aGVyIGZvbyBvciB0aGUKKy8vICAgICAgZ2xvYmFsIG5h
bWVzcGFjZS4KKy8vCisvLyBJZiBub25lIG9mIHRoZSBhYm92ZSBpcyBkZWZpbmVkLCBpdCB3aWxs
IHByaW50IHRoZSBkZWJ1ZyBzdHJpbmcgb2YKKy8vIHRoZSB2YWx1ZSBpZiBpdCBpcyBhIHByb3Rv
Y29sIGJ1ZmZlciwgb3IgcHJpbnQgdGhlIHJhdyBieXRlcyBpbiB0aGUKKy8vIHZhbHVlIG90aGVy
d2lzZS4KKy8vCisvLyBUbyBhaWQgZGVidWdnaW5nOiB3aGVuIFQgaXMgYSByZWZlcmVuY2UgdHlw
ZSwgdGhlIGFkZHJlc3Mgb2YgdGhlCisvLyB2YWx1ZSBpcyBhbHNvIHByaW50ZWQ7IHdoZW4gVCBp
cyBhIChjb25zdCkgY2hhciBwb2ludGVyLCBib3RoIHRoZQorLy8gcG9pbnRlciB2YWx1ZSBhbmQg
dGhlIE5VTC10ZXJtaW5hdGVkIHN0cmluZyBpdCBwb2ludHMgdG8gYXJlCisvLyBwcmludGVkLgor
Ly8KKy8vIFdlIGFsc28gcHJvdmlkZSBzb21lIGNvbnZlbmllbnQgd3JhcHBlcnM6CisvLworLy8g
ICAvLyBQcmludHMgYSB2YWx1ZSB0byBhIHN0cmluZy4gIEZvciBhIChjb25zdCBvciBub3QpIGNo
YXIKKy8vICAgLy8gcG9pbnRlciwgdGhlIE5VTC10ZXJtaW5hdGVkIHN0cmluZyAoYnV0IG5vdCB0
aGUgcG9pbnRlcikgaXMKKy8vICAgLy8gcHJpbnRlZC4KKy8vICAgc3RkOjpzdHJpbmcgOjp0ZXN0
aW5nOjpQcmludFRvU3RyaW5nKGNvbnN0IFQmIHZhbHVlKTsKKy8vCisvLyAgIC8vIFByaW50cyBh
IHZhbHVlIHRlcnNlbHk6IGZvciBhIHJlZmVyZW5jZSB0eXBlLCB0aGUgcmVmZXJlbmNlZAorLy8g
ICAvLyB2YWx1ZSAoYnV0IG5vdCB0aGUgYWRkcmVzcykgaXMgcHJpbnRlZDsgZm9yIGEgKGNvbnN0
IG9yIG5vdCkgY2hhcgorLy8gICAvLyBwb2ludGVyLCB0aGUgTlVMLXRlcm1pbmF0ZWQgc3RyaW5n
IChidXQgbm90IHRoZSBwb2ludGVyKSBpcworLy8gICAvLyBwcmludGVkLgorLy8gICB2b2lkIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnQoY29uc3QgVCYgdmFsdWUsIG9z
dHJlYW0qKTsKKy8vCisvLyAgIC8vIFByaW50cyB2YWx1ZSB1c2luZyB0aGUgdHlwZSBpbmZlcnJl
ZCBieSB0aGUgY29tcGlsZXIuICBUaGUgZGlmZmVyZW5jZQorLy8gICAvLyBmcm9tIFVuaXZlcnNh
bFRlcnNlUHJpbnQoKSBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gcHJpbnRzIGJvdGggdGhlCisvLyAg
IC8vIHBvaW50ZXIgYW5kIHRoZSBOVUwtdGVybWluYXRlZCBzdHJpbmcgZm9yIGEgKGNvbnN0IG9y
IG5vdCkgY2hhciBwb2ludGVyLgorLy8gICB2b2lkIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZl
cnNhbFByaW50KGNvbnN0IFQmIHZhbHVlLCBvc3RyZWFtKik7CisvLworLy8gICAvLyBQcmludHMg
dGhlIGZpZWxkcyBvZiBhIHR1cGxlIHRlcnNlbHkgdG8gYSBzdHJpbmcgdmVjdG9yLCBvbmUKKy8v
ICAgLy8gZWxlbWVudCBmb3IgZWFjaCBmaWVsZC4gVHVwbGUgc3VwcG9ydCBtdXN0IGJlIGVuYWJs
ZWQgaW4KKy8vICAgLy8gZ3Rlc3QtcG9ydC5oLgorLy8gICBzdGQ6OnZlY3RvcjxzdHJpbmc+IFVu
aXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKKy8vICAgICAgIGNvbnN0IFR1
cGxlJiB2YWx1ZSk7CisvLworLy8gS25vd24gbGltaXRhdGlvbjoKKy8vCisvLyBUaGUgcHJpbnQg
cHJpbWl0aXZlcyBwcmludCB0aGUgZWxlbWVudHMgb2YgYW4gU1RMLXN0eWxlIGNvbnRhaW5lcgor
Ly8gdXNpbmcgdGhlIGNvbXBpbGVyLWluZmVycmVkIHR5cGUgb2YgKml0ZXIgd2hlcmUgaXRlciBp
cyBhCisvLyBjb25zdF9pdGVyYXRvciBvZiB0aGUgY29udGFpbmVyLiAgV2hlbiBjb25zdF9pdGVy
YXRvciBpcyBhbiBpbnB1dAorLy8gaXRlcmF0b3IgYnV0IG5vdCBhIGZvcndhcmQgaXRlcmF0b3Is
IHRoaXMgaW5mZXJyZWQgdHlwZSBtYXkgbm90CisvLyBtYXRjaCB2YWx1ZV90eXBlLCBhbmQgdGhl
IHByaW50IG91dHB1dCBtYXkgYmUgaW5jb3JyZWN0LiAgSW4KKy8vIHByYWN0aWNlLCB0aGlzIGlz
IHJhcmVseSBhIHByb2JsZW0gYXMgZm9yIG1vc3QgY29udGFpbmVycworLy8gY29uc3RfaXRlcmF0
b3IgaXMgYSBmb3J3YXJkIGl0ZXJhdG9yLiAgV2UnbGwgZml4IHRoaXMgaWYgdGhlcmUncyBhbgor
Ly8gYWN0dWFsIG5lZWQgZm9yIGl0LiAgTm90ZSB0aGF0IHRoaXMgZml4IGNhbm5vdCByZWx5IG9u
IHZhbHVlX3R5cGUKKy8vIGJlaW5nIGRlZmluZWQgYXMgbWFueSB1c2VyLWRlZmluZWQgY29udGFp
bmVyIHR5cGVzIGRvbid0IGhhdmUKKy8vIHZhbHVlX3R5cGUuCisKKyNpZm5kZWYgR1RFU1RfSU5D
TFVERV9HVEVTVF9HVEVTVF9QUklOVEVSU19IXworI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNU
X0dURVNUX1BSSU5URVJTX0hfCisKKyNpbmNsdWRlIDxvc3RyZWFtPiAgLy8gTk9MSU5UCisjaW5j
bHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNp
bmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgor
I2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgiCisKKyNpZiBHVEVTVF9I
QVNfU1REX1RVUExFXworIyBpbmNsdWRlIDx0dXBsZT4KKyNlbmRpZgorCituYW1lc3BhY2UgdGVz
dGluZyB7CisKKy8vIERlZmluaXRpb25zIGluIHRoZSAnaW50ZXJuYWwnIGFuZCAnaW50ZXJuYWwy
JyBuYW1lIHNwYWNlcyBhcmUKKy8vIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLiAg
RE8gTk9UIFVTRSBUSEVNIElOIFVTRVIgQ09ERSEKK25hbWVzcGFjZSBpbnRlcm5hbDIgeworCisv
LyBQcmludHMgdGhlIGdpdmVuIG51bWJlciBvZiBieXRlcyBpbiB0aGUgZ2l2ZW4gb2JqZWN0IHRv
IHRoZSBnaXZlbgorLy8gb3N0cmVhbS4KK0dURVNUX0FQSV8gdm9pZCBQcmludEJ5dGVzSW5PYmpl
Y3RUbyhjb25zdCB1bnNpZ25lZCBjaGFyKiBvYmpfYnl0ZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDo6c3RkOjpvc3RyZWFtKiBvcyk7CisKKy8vIEZvciBzZWxlY3Rpbmcgd2hp
Y2ggcHJpbnRlciB0byB1c2Ugd2hlbiBhIGdpdmVuIHR5cGUgaGFzIG5laXRoZXIgPDwKKy8vIG5v
ciBQcmludFRvKCkuCitlbnVtIFR5cGVLaW5kIHsKKyAga1Byb3RvYnVmLCAgICAgICAgICAgICAg
Ly8gYSBwcm90b2J1ZiB0eXBlCisgIGtDb252ZXJ0aWJsZVRvSW50ZWdlciwgIC8vIGEgdHlwZSBp
bXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRvIEJpZ2dlc3RJbnQKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gKGUuZy4gYSBuYW1lZCBvciB1bm5hbWVkIGVudW0gdHlwZSkKKyAga090aGVyVHlw
ZSAgICAgICAgICAgICAgLy8gYW55dGhpbmcgZWxzZQorfTsKKworLy8gVHlwZVdpdGhvdXRGb3Jt
YXR0ZXI8VCwga1R5cGVLaW5kPjo6UHJpbnRWYWx1ZSh2YWx1ZSwgb3MpIGlzIGNhbGxlZAorLy8g
YnkgdGhlIHVuaXZlcnNhbCBwcmludGVyIHRvIHByaW50IGEgdmFsdWUgb2YgdHlwZSBUIHdoZW4g
bmVpdGhlcgorLy8gb3BlcmF0b3I8PCBub3IgUHJpbnRUbygpIGlzIGRlZmluZWQgZm9yIFQsIHdo
ZXJlIGtUeXBlS2luZCBpcyB0aGUKKy8vICJraW5kIiBvZiBUIGFzIGRlZmluZWQgYnkgZW51bSBU
eXBlS2luZC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBUeXBlS2luZCBrVHlwZUtpbmQ+CitjbGFz
cyBUeXBlV2l0aG91dEZvcm1hdHRlciB7CisgcHVibGljOgorICAvLyBUaGlzIGRlZmF1bHQgdmVy
c2lvbiBpcyBjYWxsZWQgd2hlbiBrVHlwZUtpbmQgaXMga090aGVyVHlwZS4KKyAgc3RhdGljIHZv
aWQgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAg
UHJpbnRCeXRlc0luT2JqZWN0VG8ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
Kj4oJnZhbHVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodmFsdWUpLCBvcyk7
CisgIH0KK307CisKKy8vIFdlIHByaW50IGEgcHJvdG9idWYgdXNpbmcgaXRzIFNob3J0RGVidWdT
dHJpbmcoKSB3aGVuIHRoZSBzdHJpbmcKKy8vIGRvZXNuJ3QgZXhjZWVkIHRoaXMgbWFueSBjaGFy
YWN0ZXJzOyBvdGhlcndpc2Ugd2UgcHJpbnQgaXQgdXNpbmcKKy8vIERlYnVnU3RyaW5nKCkgZm9y
IGJldHRlciByZWFkYWJpbGl0eS4KK2NvbnN0IHNpemVfdCBrUHJvdG9idWZPbmVMaW5lck1heExl
bmd0aCA9IDUwOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVXaXRob3V0Rm9y
bWF0dGVyPFQsIGtQcm90b2J1Zj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnRWYWx1
ZShjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgY29uc3QgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6c3RyaW5nIHNob3J0X3N0ciA9IHZhbHVlLlNob3J0RGVidWdTdHJpbmco
KTsKKyAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmcgcHJldHR5X3N0ciA9Cisg
ICAgICAgIHNob3J0X3N0ci5sZW5ndGgoKSA8PSBrUHJvdG9idWZPbmVMaW5lck1heExlbmd0aCA/
CisgICAgICAgIHNob3J0X3N0ciA6ICgiXG4iICsgdmFsdWUuRGVidWdTdHJpbmcoKSk7CisgICAg
Km9zIDw8ICgiPCIgKyBwcmV0dHlfc3RyICsgIj4iKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitjbGFzcyBUeXBlV2l0aG91dEZvcm1hdHRlcjxULCBrQ29udmVydGlibGVUb0lu
dGVnZXI+IHsKKyBwdWJsaWM6CisgIC8vIFNpbmNlIFQgaGFzIG5vIDw8IG9wZXJhdG9yIG9yIFBy
aW50VG8oKSBidXQgY2FuIGJlIGltcGxpY2l0bHkKKyAgLy8gY29udmVydGVkIHRvIEJpZ2dlc3RJ
bnQsIHdlIHByaW50IGl0IGFzIGEgQmlnZ2VzdEludC4KKyAgLy8KKyAgLy8gTW9zdCBsaWtlbHkg
VCBpcyBhbiBlbnVtIHR5cGUgKGVpdGhlciBuYW1lZCBvciB1bm5hbWVkKSwgaW4gd2hpY2gKKyAg
Ly8gY2FzZSBwcmludGluZyBpdCBhcyBhbiBpbnRlZ2VyIGlzIHRoZSBkZXNpcmVkIGJlaGF2aW9y
LiAgSW4gY2FzZQorICAvLyBUIGlzIG5vdCBhbiBlbnVtLCBwcmludGluZyBpdCBhcyBhbiBpbnRl
Z2VyIGlzIHRoZSBiZXN0IHdlIGNhbiBkbworICAvLyBnaXZlbiB0aGF0IGl0IGhhcyBubyB1c2Vy
LWRlZmluZWQgcHJpbnRlci4KKyAgc3RhdGljIHZvaWQgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1
ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgY29uc3QgaW50ZXJuYWw6OkJpZ2dlc3RJbnQg
a0JpZ0ludCA9IHZhbHVlOworICAgICpvcyA8PCBrQmlnSW50OworICB9Cit9OworCisvLyBQcmlu
dHMgdGhlIGdpdmVuIHZhbHVlIHRvIHRoZSBnaXZlbiBvc3RyZWFtLiAgSWYgdGhlIHZhbHVlIGlz
IGEKKy8vIHByb3RvY29sIG1lc3NhZ2UsIGl0cyBkZWJ1ZyBzdHJpbmcgaXMgcHJpbnRlZDsgaWYg
aXQncyBhbiBlbnVtIG9yCisvLyBvZiBhIHR5cGUgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0byBC
aWdnZXN0SW50LCBpdCdzIHByaW50ZWQgYXMgYW4KKy8vIGludGVnZXI7IG90aGVyd2lzZSB0aGUg
Ynl0ZXMgaW4gdGhlIHZhbHVlIGFyZSBwcmludGVkLiAgVGhpcyBpcworLy8gd2hhdCBVbml2ZXJz
YWxQcmludGVyPFQ+OjpQcmludCgpIGRvZXMgd2hlbiBpdCBrbm93cyBub3RoaW5nIGFib3V0Cisv
LyB0eXBlIFQgYW5kIFQgaGFzIG5laXRoZXIgPDwgb3BlcmF0b3Igbm9yIFByaW50VG8oKS4KKy8v
CisvLyBBIHVzZXIgY2FuIG92ZXJyaWRlIHRoaXMgYmVoYXZpb3IgZm9yIGEgY2xhc3MgdHlwZSBG
b28gYnkgZGVmaW5pbmcKKy8vIGEgPDwgb3BlcmF0b3IgaW4gdGhlIG5hbWVzcGFjZSB3aGVyZSBG
b28gaXMgZGVmaW5lZC4KKy8vCisvLyBXZSBwdXQgdGhpcyBvcGVyYXRvciBpbiBuYW1lc3BhY2Ug
J2ludGVybmFsMicgaW5zdGVhZCBvZiAnaW50ZXJuYWwnCisvLyB0byBzaW1wbGlmeSB0aGUgaW1w
bGVtZW50YXRpb24sIGFzIG11Y2ggY29kZSBpbiAnaW50ZXJuYWwnIG5lZWRzIHRvCisvLyB1c2Ug
PDwgaW4gU1RMLCB3aGljaCB3b3VsZCBjb25mbGljdCB3aXRoIG91ciBvd24gPDwgd2VyZSBpdCBk
ZWZpbmVkCisvLyBpbiAnaW50ZXJuYWwnLgorLy8KKy8vIE5vdGUgdGhhdCB0aGlzIG9wZXJhdG9y
PDwgdGFrZXMgYSBnZW5lcmljIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLAorLy8gQ2hhclRyYWl0
cz4gdHlwZSBpbnN0ZWFkIG9mIHRoZSBtb3JlIHJlc3RyaWN0ZWQgc3RkOjpvc3RyZWFtLiAgSWYK
Ky8vIHdlIGRlZmluZSBpdCB0byB0YWtlIGFuIHN0ZDo6b3N0cmVhbSBpbnN0ZWFkLCB3ZSdsbCBn
ZXQgYW4KKy8vICJhbWJpZ3VvdXMgb3ZlcmxvYWRzIiBjb21waWxlciBlcnJvciB3aGVuIHRyeWlu
ZyB0byBwcmludCBhIHR5cGUKKy8vIEZvbyB0aGF0IHN1cHBvcnRzIHN0cmVhbWluZyB0byBzdGQ6
OmJhc2ljX29zdHJlYW08Q2hhciwKKy8vIENoYXJUcmFpdHM+LCBhcyB0aGUgY29tcGlsZXIgY2Fu
bm90IHRlbGwgd2hldGhlcgorLy8gb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mLCBjb25zdCBUJikg
b3IKKy8vIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4sIGNv
bnN0IEZvbyYpIGlzIG1vcmUKKy8vIHNwZWNpZmljLgordGVtcGxhdGUgPHR5cGVuYW1lIENoYXIs
IHR5cGVuYW1lIENoYXJUcmFpdHMsIHR5cGVuYW1lIFQ+Cis6OnN0ZDo6YmFzaWNfb3N0cmVhbTxD
aGFyLCBDaGFyVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICA6OnN0ZDo6YmFzaWNfb3N0cmVhbTxD
aGFyLCBDaGFyVHJhaXRzPiYgb3MsIGNvbnN0IFQmIHgpIHsKKyAgVHlwZVdpdGhvdXRGb3JtYXR0
ZXI8VCwKKyAgICAgIChpbnRlcm5hbDo6SXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZSA/IGtQ
cm90b2J1ZiA6CisgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTxjb25zdCBU
JiwgaW50ZXJuYWw6OkJpZ2dlc3RJbnQ+Ojp2YWx1ZSA/CisgICAgICAga0NvbnZlcnRpYmxlVG9J
bnRlZ2VyIDoga090aGVyVHlwZSk+OjpQcmludFZhbHVlKHgsICZvcyk7CisgIHJldHVybiBvczsK
K30KKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsMgorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcK
KworLy8gVGhpcyBuYW1lc3BhY2UgTVVTVCBOT1QgQkUgTkVTVEVEIElOIDo6dGVzdGluZywgb3Ig
dGhlIG5hbWUgbG9vay11cAorLy8gbWFnaWMgbmVlZGVkIGZvciBpbXBsZW1lbnRpbmcgVW5pdmVy
c2FsUHJpbnRlciB3b24ndCB3b3JrLgorbmFtZXNwYWNlIHRlc3RpbmdfaW50ZXJuYWwgeworCisv
LyBVc2VkIHRvIHByaW50IGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gU1RMLXN0eWxlIGNvbnRhaW5l
ciB3aGVuIHRoZQorLy8gdXNlciBkb2Vzbid0IGRlZmluZSBQcmludFRvKCkgZm9yIGl0LgordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIERlZmF1bHRQcmludE5vbkNvbnRhaW5lclRvKGNvbnN0
IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgLy8gV2l0aCB0aGUgZm9sbG93aW5n
IHN0YXRlbWVudCwgZHVyaW5nIHVucXVhbGlmaWVkIG5hbWUgbG9va3VwLAorICAvLyB0ZXN0aW5n
OjppbnRlcm5hbDI6Om9wZXJhdG9yPDwgYXBwZWFycyBhcyBpZiBpdCB3YXMgZGVjbGFyZWQgaW4K
KyAgLy8gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSB0aGF0IGNvbnRhaW5zIGJvdGgK
KyAgLy8gOjp0ZXN0aW5nX2ludGVybmFsIGFuZCA6OnRlc3Rpbmc6OmludGVybmFsMiwgaS5lLiB0
aGUgZ2xvYmFsCisgIC8vIG5hbWVzcGFjZS4gIEZvciBtb3JlIGRldGFpbHMsIHJlZmVyIHRvIHRo
ZSBDKysgU3RhbmRhcmQgc2VjdGlvbgorICAvLyA3LjMuNC0xIFtuYW1lc3BhY2UudWRpcl0uICBU
aGlzIGFsbG93cyB1cyB0byBmYWxsIGJhY2sgb250bworICAvLyB0ZXN0aW5nOjppbnRlcm5hbDI6
Om9wZXJhdG9yPDwgaW4gY2FzZSBUIGRvZXNuJ3QgY29tZSB3aXRoIGEgPDwKKyAgLy8gb3BlcmF0
b3IuCisgIC8vCisgIC8vIFdlIGNhbm5vdCB3cml0ZSAndXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5h
bDI6Om9wZXJhdG9yPDw7Jywgd2hpY2gKKyAgLy8gZ2NjIDMuMyBmYWlscyB0byBjb21waWxlIGR1
ZSB0byBhIGNvbXBpbGVyIGJ1Zy4KKyAgdXNpbmcgbmFtZXNwYWNlIDo6dGVzdGluZzo6aW50ZXJu
YWwyOyAgLy8gTk9MSU5UCisKKyAgLy8gQXNzdW1pbmcgVCBpcyBkZWZpbmVkIGluIG5hbWVzcGFj
ZSBmb28sIGluIHRoZSBuZXh0IHN0YXRlbWVudCwKKyAgLy8gdGhlIGNvbXBpbGVyIHdpbGwgY29u
c2lkZXIgYWxsIG9mOgorICAvLworICAvLyAgIDEuIGZvbzo6b3BlcmF0b3I8PCAodGhhbmtzIHRv
IEtvZW5pZyBsb29rLXVwKSwKKyAgLy8gICAyLiA6Om9wZXJhdG9yPDwgKGFzIHRoZSBjdXJyZW50
IG5hbWVzcGFjZSBpcyBlbmNsb3NlZCBpbiA6OiksCisgIC8vICAgMy4gdGVzdGluZzo6aW50ZXJu
YWwyOjpvcGVyYXRvcjw8ICh0aGFua3MgdG8gdGhlIHVzaW5nIHN0YXRlbWVudCBhYm92ZSkuCisg
IC8vCisgIC8vIFRoZSBvcGVyYXRvcjw8IHdob3NlIHR5cGUgbWF0Y2hlcyBUIGJlc3Qgd2lsbCBi
ZSBwaWNrZWQuCisgIC8vCisgIC8vIFdlIGRlbGliZXJhdGVseSBhbGxvdyAjMiB0byBiZSBhIGNh
bmRpZGF0ZSwgYXMgc29tZXRpbWVzIGl0J3MKKyAgLy8gaW1wb3NzaWJsZSB0byBkZWZpbmUgIzEg
KGUuZy4gd2hlbiBmb28gaXMgOjpzdGQsIGRlZmluaW5nCisgIC8vIGFueXRoaW5nIGluIGl0IGlz
IHVuZGVmaW5lZCBiZWhhdmlvciB1bmxlc3MgeW91IGFyZSBhIGNvbXBpbGVyCisgIC8vIHZlbmRv
ci4pLgorICAqb3MgPDwgdmFsdWU7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nX2ludGVy
bmFsCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIEZv
cm1hdEZvckNvbXBhcmlzb248VG9QcmludCwgT3RoZXJPcGVyYW5kPjo6Rm9ybWF0KHZhbHVlKSBm
b3JtYXRzIGEKKy8vIHZhbHVlIG9mIHR5cGUgVG9QcmludCB0aGF0IGlzIGFuIG9wZXJhbmQgb2Yg
YSBjb21wYXJpc29uIGFzc2VydGlvbgorLy8gKGUuZy4gQVNTRVJUX0VRKS4gIE90aGVyT3BlcmFu
ZCBpcyB0aGUgdHlwZSBvZiB0aGUgb3RoZXIgb3BlcmFuZCBpbgorLy8gdGhlIGNvbXBhcmlzb24s
IGFuZCBpcyB1c2VkIHRvIGhlbHAgZGV0ZXJtaW5lIHRoZSBiZXN0IHdheSB0bworLy8gZm9ybWF0
IHRoZSB2YWx1ZS4gIEluIHBhcnRpY3VsYXIsIHdoZW4gdGhlIHZhbHVlIGlzIGEgQyBzdHJpbmcK
Ky8vIChjaGFyIHBvaW50ZXIpIGFuZCB0aGUgb3RoZXIgb3BlcmFuZCBpcyBhbiBTVEwgc3RyaW5n
IG9iamVjdCwgd2UKKy8vIHdhbnQgdG8gZm9ybWF0IHRoZSBDIHN0cmluZyBhcyBhIHN0cmluZywg
c2luY2Ugd2Uga25vdyBpdCBpcworLy8gY29tcGFyZWQgYnkgdmFsdWUgd2l0aCB0aGUgc3RyaW5n
IG9iamVjdC4gIElmIHRoZSB2YWx1ZSBpcyBhIGNoYXIKKy8vIHBvaW50ZXIgYnV0IHRoZSBvdGhl
ciBvcGVyYW5kIGlzIG5vdCBhbiBTVEwgc3RyaW5nIG9iamVjdCwgd2UgZG9uJ3QKKy8vIGtub3cg
d2hldGhlciB0aGUgcG9pbnRlciBpcyBzdXBwb3NlZCB0byBwb2ludCB0byBhIE5VTC10ZXJtaW5h
dGVkCisvLyBzdHJpbmcsIGFuZCB0aHVzIHdhbnQgdG8gcHJpbnQgaXQgYXMgYSBwb2ludGVyIHRv
IGJlIHNhZmUuCisvLworLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElO
IEEgVVNFUiBQUk9HUkFNLgorCisvLyBUaGUgZGVmYXVsdCBjYXNlLgordGVtcGxhdGUgPHR5cGVu
YW1lIFRvUHJpbnQsIHR5cGVuYW1lIE90aGVyT3BlcmFuZD4KK2NsYXNzIEZvcm1hdEZvckNvbXBh
cmlzb24geworIHB1YmxpYzoKKyAgc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9ybWF0KGNvbnN0IFRv
UHJpbnQmIHZhbHVlKSB7CisgICAgcmV0dXJuIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyh2YWx1
ZSk7CisgIH0KK307CisKKy8vIEFycmF5LgordGVtcGxhdGUgPHR5cGVuYW1lIFRvUHJpbnQsIHNp
emVfdCBOLCB0eXBlbmFtZSBPdGhlck9wZXJhbmQ+CitjbGFzcyBGb3JtYXRGb3JDb21wYXJpc29u
PFRvUHJpbnRbTl0sIE90aGVyT3BlcmFuZD4geworIHB1YmxpYzoKKyAgc3RhdGljIDo6c3RkOjpz
dHJpbmcgRm9ybWF0KGNvbnN0IFRvUHJpbnQqIHZhbHVlKSB7CisgICAgcmV0dXJuIEZvcm1hdEZv
ckNvbXBhcmlzb248Y29uc3QgVG9QcmludCosIE90aGVyT3BlcmFuZD46OkZvcm1hdCh2YWx1ZSk7
CisgIH0KK307CisKKy8vIEJ5IGRlZmF1bHQsIHByaW50IEMgc3RyaW5nIGFzIHBvaW50ZXJzIHRv
IGJlIHNhZmUsIGFzIHdlIGRvbid0IGtub3cKKy8vIHdoZXRoZXIgdGhleSBhY3R1YWxseSBwb2lu
dCB0byBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZy4KKworI2RlZmluZSBHVEVTVF9JTVBMX0ZPUk1B
VF9DX1NUUklOR19BU19QT0lOVEVSXyhDaGFyVHlwZSkgICAgICAgICAgICAgICAgXAorICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgT3RoZXJPcGVyYW5kPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICBjbGFzcyBGb3JtYXRGb3JDb21wYXJpc29uPENoYXJUeXBlKiwgT3RoZXJP
cGVyYW5kPiB7ICAgICAgICAgICAgICAgICAgXAorICAgcHVibGljOiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRp
YyA6OnN0ZDo6c3RyaW5nIEZvcm1hdChDaGFyVHlwZSogdmFsdWUpIHsgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgcmV0dXJuIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhzdGF0aWNfY2Fz
dDxjb25zdCB2b2lkKj4odmFsdWUpKTsgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKK0dURVNU
X0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1BPSU5URVJfKGNoYXIpOworR1RFU1RfSU1QTF9GT1JN
QVRfQ19TVFJJTkdfQVNfUE9JTlRFUl8oY29uc3QgY2hhcik7CitHVEVTVF9JTVBMX0ZPUk1BVF9D
X1NUUklOR19BU19QT0lOVEVSXyh3Y2hhcl90KTsKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5H
X0FTX1BPSU5URVJfKGNvbnN0IHdjaGFyX3QpOworCisjdW5kZWYgR1RFU1RfSU1QTF9GT1JNQVRf
Q19TVFJJTkdfQVNfUE9JTlRFUl8KKworLy8gSWYgYSBDIHN0cmluZyBpcyBjb21wYXJlZCB3aXRo
IGFuIFNUTCBzdHJpbmcgb2JqZWN0LCB3ZSBrbm93IGl0J3MgbWVhbnQKKy8vIHRvIHBvaW50IHRv
IGEgTlVMLXRlcm1pbmF0ZWQgc3RyaW5nLCBhbmQgdGh1cyBjYW4gcHJpbnQgaXQgYXMgYSBzdHJp
bmcuCisKKyNkZWZpbmUgR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhDaGFy
VHlwZSwgT3RoZXJTdHJpbmdUeXBlKSBcCisgIHRlbXBsYXRlIDw+ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGNsYXNzIEZvcm1h
dEZvckNvbXBhcmlzb248Q2hhclR5cGUqLCBPdGhlclN0cmluZ1R5cGU+IHsgICAgICAgICAgICAg
ICBcCisgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9ybWF0KENo
YXJUeXBlKiB2YWx1ZSkgeyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICByZXR1cm4gOjp0
ZXN0aW5nOjpQcmludFRvU3RyaW5nKHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgIH0KKworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNf
U1RSSU5HXyhjaGFyLCA6OnN0ZDo6c3RyaW5nKTsKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5H
X0FTX1NUUklOR18oY29uc3QgY2hhciwgOjpzdGQ6OnN0cmluZyk7CisKKyNpZiBHVEVTVF9IQVNf
R0xPQkFMX1NUUklORworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjaGFy
LCA6OnN0cmluZyk7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNvbnN0
IGNoYXIsIDo6c3RyaW5nKTsKKyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5H
CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKHdjaGFyX3QsIDo6d3N0cmlu
Zyk7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNvbnN0IHdjaGFyX3Qs
IDo6d3N0cmluZyk7CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORworR1RFU1Rf
SU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyh3Y2hhcl90LCA6OnN0ZDo6d3N0cmluZyk7
CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNvbnN0IHdjaGFyX3QsIDo6
c3RkOjp3c3RyaW5nKTsKKyNlbmRpZgorCisjdW5kZWYgR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJ
TkdfQVNfU1RSSU5HXworCisvLyBGb3JtYXRzIGEgY29tcGFyaXNvbiBhc3NlcnRpb24gKGUuZy4g
QVNTRVJUX0VRLCBFWFBFQ1RfTFQsIGFuZCBldGMpCisvLyBvcGVyYW5kIHRvIGJlIHVzZWQgaW4g
YSBmYWlsdXJlIG1lc3NhZ2UuICBUaGUgdHlwZSAoYnV0IG5vdCB2YWx1ZSkKKy8vIG9mIHRoZSBv
dGhlciBvcGVyYW5kIG1heSBhZmZlY3QgdGhlIGZvcm1hdC4gIFRoaXMgYWxsb3dzIHVzIHRvCisv
LyBwcmludCBhIGNoYXIqIGFzIGEgcmF3IHBvaW50ZXIgd2hlbiBpdCBpcyBjb21wYXJlZCBhZ2Fp
bnN0IGFub3RoZXIKKy8vIGNoYXIqIG9yIHZvaWQqLCBhbmQgcHJpbnQgaXQgYXMgYSBDIHN0cmlu
ZyB3aGVuIGl0IGlzIGNvbXBhcmVkCisvLyBhZ2FpbnN0IGFuIHN0ZDo6c3RyaW5nIG9iamVjdCwg
Zm9yIGV4YW1wbGUuCisvLworLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNF
IElOIEEgVVNFUiBQUk9HUkFNLgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4K
K3N0ZDo6c3RyaW5nIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSgKKyAgICBjb25z
dCBUMSYgdmFsdWUsIGNvbnN0IFQyJiAvKiBvdGhlcl9vcGVyYW5kICovKSB7CisgIHJldHVybiBG
b3JtYXRGb3JDb21wYXJpc29uPFQxLCBUMj46OkZvcm1hdCh2YWx1ZSk7Cit9CisKKy8vIFVuaXZl
cnNhbFByaW50ZXI8VD46OlByaW50KHZhbHVlLCBvc3RyZWFtX3B0cikgcHJpbnRzIHRoZSBnaXZl
bgorLy8gdmFsdWUgdG8gdGhlIGdpdmVuIG9zdHJlYW0uICBUaGUgY2FsbGVyIG11c3QgZW5zdXJl
IHRoYXQKKy8vICdvc3RyZWFtX3B0cicgaXMgbm90IE5VTEwsIG9yIHRoZSBiZWhhdmlvciBpcyB1
bmRlZmluZWQuCisvLworLy8gV2UgZGVmaW5lIFVuaXZlcnNhbFByaW50ZXIgYXMgYSBjbGFzcyB0
ZW1wbGF0ZSAoYXMgb3Bwb3NlZCB0byBhCisvLyBmdW5jdGlvbiB0ZW1wbGF0ZSksIGFzIHdlIG5l
ZWQgdG8gcGFydGlhbGx5IHNwZWNpYWxpemUgaXQgZm9yCisvLyByZWZlcmVuY2UgdHlwZXMsIHdo
aWNoIGNhbm5vdCBiZSBkb25lIHdpdGggZnVuY3Rpb24gdGVtcGxhdGVzLgordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitjbGFzcyBVbml2ZXJzYWxQcmludGVyOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK3ZvaWQgVW5pdmVyc2FsUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBv
cyk7CisKKy8vIFVzZWQgdG8gcHJpbnQgYW4gU1RMLXN0eWxlIGNvbnRhaW5lciB3aGVuIHRoZSB1
c2VyIGRvZXNuJ3QgZGVmaW5lCisvLyBhIFByaW50VG8oKSBmb3IgaXQuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQz4KK3ZvaWQgRGVmYXVsdFByaW50VG8oSXNDb250YWluZXIgLyogZHVtbXkgKi8sCisg
ICAgICAgICAgICAgICAgICAgIGZhbHNlX3R5cGUgLyogaXMgbm90IGEgcG9pbnRlciAqLywKKyAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQyYgY29udGFpbmVyLCA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgY29uc3Qgc2l6ZV90IGtNYXhDb3VudCA9IDMyOyAgLy8gVGhlIG1heGltdW0gbnVtYmVy
IG9mIGVsZW1lbnRzIHRvIHByaW50LgorICAqb3MgPDwgJ3snOworICBzaXplX3QgY291bnQgPSAw
OworICBmb3IgKHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29udGFpbmVyLmJlZ2lu
KCk7CisgICAgICAgaXQgIT0gY29udGFpbmVyLmVuZCgpOyArK2l0LCArK2NvdW50KSB7CisgICAg
aWYgKGNvdW50ID4gMCkgeworICAgICAgKm9zIDw8ICcsJzsKKyAgICAgIGlmIChjb3VudCA9PSBr
TWF4Q291bnQpIHsgIC8vIEVub3VnaCBoYXMgYmVlbiBwcmludGVkLgorICAgICAgICAqb3MgPDwg
IiAuLi4iOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgKm9zIDw8ICcgJzsK
KyAgICAvLyBXZSBjYW5ub3QgY2FsbCBQcmludFRvKCppdCwgb3MpIGhlcmUgYXMgUHJpbnRUbygp
IGRvZXNuJ3QKKyAgICAvLyBoYW5kbGUgKml0IGJlaW5nIGEgbmF0aXZlIGFycmF5LgorICAgIGlu
dGVybmFsOjpVbml2ZXJzYWxQcmludCgqaXQsIG9zKTsKKyAgfQorCisgIGlmIChjb3VudCA+IDAp
IHsKKyAgICAqb3MgPDwgJyAnOworICB9CisgICpvcyA8PCAnfSc7Cit9CisKKy8vIFVzZWQgdG8g
cHJpbnQgYSBwb2ludGVyIHRoYXQgaXMgbmVpdGhlciBhIGNoYXIgcG9pbnRlciBub3IgYSBtZW1i
ZXIKKy8vIHBvaW50ZXIsIHdoZW4gdGhlIHVzZXIgZG9lc24ndCBkZWZpbmUgUHJpbnRUbygpIGZv
ciBpdC4gIChBIG1lbWJlcgorLy8gdmFyaWFibGUgcG9pbnRlciBvciBtZW1iZXIgZnVuY3Rpb24g
cG9pbnRlciBkb2Vzbid0IHJlYWxseSBwb2ludCB0bworLy8gYSBsb2NhdGlvbiBpbiB0aGUgYWRk
cmVzcyBzcGFjZS4gIFRoZWlyIHJlcHJlc2VudGF0aW9uIGlzCisvLyBpbXBsZW1lbnRhdGlvbi1k
ZWZpbmVkLiAgVGhlcmVmb3JlIHRoZXkgd2lsbCBiZSBwcmludGVkIGFzIHJhdworLy8gYnl0ZXMu
KQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIERlZmF1bHRQcmludFRvKElzTm90Q29udGFp
bmVyIC8qIGR1bW15ICovLAorICAgICAgICAgICAgICAgICAgICB0cnVlX3R5cGUgLyogaXMgYSBw
b2ludGVyICovLAorICAgICAgICAgICAgICAgICAgICBUKiBwLCA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgaWYgKHAgPT0gTlVMTCkgeworICAgICpvcyA8PCAiTlVMTCI7CisgIH0gZWxzZSB7Cisg
ICAgLy8gQysrIGRvZXNuJ3QgYWxsb3cgY2FzdGluZyBmcm9tIGEgZnVuY3Rpb24gcG9pbnRlciB0
byBhbnkgb2JqZWN0CisgICAgLy8gcG9pbnRlci4KKyAgICAvLworICAgIC8vIElzVHJ1ZSgpIHNp
bGVuY2VzIHdhcm5pbmdzOiAiQ29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlIiwKKyAgICAvLyAidW5y
ZWFjaGFibGUgY29kZSIuCisgICAgaWYgKElzVHJ1ZShJbXBsaWNpdGx5Q29udmVydGlibGU8VCos
IGNvbnN0IHZvaWQqPjo6dmFsdWUpKSB7CisgICAgICAvLyBUIGlzIG5vdCBhIGZ1bmN0aW9uIHR5
cGUuICBXZSBqdXN0IGNhbGwgPDwgdG8gcHJpbnQgcCwKKyAgICAgIC8vIHJlbHlpbmcgb24gQURM
IHRvIHBpY2sgdXAgdXNlci1kZWZpbmVkIDw8IGZvciB0aGVpciBwb2ludGVyCisgICAgICAvLyB0
eXBlcywgaWYgYW55LgorICAgICAgKm9zIDw8IHA7CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIFQg
aXMgYSBmdW5jdGlvbiB0eXBlLCBzbyAnKm9zIDw8IHAnIGRvZXNuJ3QgZG8gd2hhdCB3ZSB3YW50
CisgICAgICAvLyAoaXQganVzdCBwcmludHMgcCBhcyBib29sKS4gIFdlIHdhbnQgdG8gcHJpbnQg
cCBhcyBhIGNvbnN0CisgICAgICAvLyB2b2lkKi4gIEhvd2V2ZXIsIHdlIGNhbm5vdCBjYXN0IGl0
IHRvIGNvbnN0IHZvaWQqIGRpcmVjdGx5LAorICAgICAgLy8gZXZlbiB1c2luZyByZWludGVycHJl
dF9jYXN0LCBhcyBlYXJsaWVyIHZlcnNpb25zIG9mIGdjYworICAgICAgLy8gKGUuZy4gMy40LjUp
IGNhbm5vdCBjb21waWxlIHRoZSBjYXN0IHdoZW4gcCBpcyBhIGZ1bmN0aW9uCisgICAgICAvLyBw
b2ludGVyLiAgQ2FzdGluZyB0byBVSW50NjQgZmlyc3Qgc29sdmVzIHRoZSBwcm9ibGVtLgorICAg
ICAgKm9zIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KAorICAgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8aW50ZXJuYWw6OlVJbnQ2ND4ocCkpOworICAgIH0KKyAgfQorfQorCisvLyBV
c2VkIHRvIHByaW50IGEgbm9uLWNvbnRhaW5lciwgbm9uLXBvaW50ZXIgdmFsdWUgd2hlbiB0aGUg
dXNlcgorLy8gZG9lc24ndCBkZWZpbmUgUHJpbnRUbygpIGZvciBpdC4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgordm9pZCBEZWZhdWx0UHJpbnRUbyhJc05vdENvbnRhaW5lciAvKiBkdW1teSAqLywK
KyAgICAgICAgICAgICAgICAgICAgZmFsc2VfdHlwZSAvKiBpcyBub3QgYSBwb2ludGVyICovLAor
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7
CisgIDo6dGVzdGluZ19pbnRlcm5hbDo6RGVmYXVsdFByaW50Tm9uQ29udGFpbmVyVG8odmFsdWUs
IG9zKTsKK30KKworLy8gUHJpbnRzIHRoZSBnaXZlbiB2YWx1ZSB1c2luZyB0aGUgPDwgb3BlcmF0
b3IgaWYgaXQgaGFzIG9uZTsKKy8vIG90aGVyd2lzZSBwcmludHMgdGhlIGJ5dGVzIGluIGl0LiAg
VGhpcyBpcyB3aGF0CisvLyBVbml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCgpIGRvZXMgd2hlbiBQ
cmludFRvKCkgaXMgbm90IHNwZWNpYWxpemVkCisvLyBvciBvdmVybG9hZGVkIGZvciB0eXBlIFQu
CisvLworLy8gQSB1c2VyIGNhbiBvdmVycmlkZSB0aGlzIGJlaGF2aW9yIGZvciBhIGNsYXNzIHR5
cGUgRm9vIGJ5IGRlZmluaW5nCisvLyBhbiBvdmVybG9hZCBvZiBQcmludFRvKCkgaW4gdGhlIG5h
bWVzcGFjZSB3aGVyZSBGb28gaXMgZGVmaW5lZC4gIFdlCisvLyBnaXZlIHRoZSB1c2VyIHRoaXMg
b3B0aW9uIGFzIHNvbWV0aW1lcyBkZWZpbmluZyBhIDw8IG9wZXJhdG9yIGZvcgorLy8gRm9vIGlz
IG5vdCBkZXNpcmFibGUgKGUuZy4gdGhlIGNvZGluZyBzdHlsZSBtYXkgcHJldmVudCBkb2luZyBp
dCwKKy8vIG9yIHRoZXJlIGlzIGFscmVhZHkgYSA8PCBvcGVyYXRvciBidXQgaXQgZG9lc24ndCBk
byB3aGF0IHRoZSB1c2VyCisvLyB3YW50cykuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQg
UHJpbnRUbyhjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIC8vIERlZmF1
bHRQcmludFRvKCkgaXMgb3ZlcmxvYWRlZC4gIFRoZSB0eXBlIG9mIGl0cyBmaXJzdCB0d28KKyAg
Ly8gYXJndW1lbnRzIGRldGVybWluZSB3aGljaCB2ZXJzaW9uIHdpbGwgYmUgcGlja2VkLiAgSWYg
VCBpcyBhbgorICAvLyBTVEwtc3R5bGUgY29udGFpbmVyLCB0aGUgdmVyc2lvbiBmb3IgY29udGFp
bmVyIHdpbGwgYmUgY2FsbGVkOyBpZgorICAvLyBUIGlzIGEgcG9pbnRlciwgdGhlIHBvaW50ZXIg
dmVyc2lvbiB3aWxsIGJlIGNhbGxlZDsgb3RoZXJ3aXNlIHRoZQorICAvLyBnZW5lcmljIHZlcnNp
b24gd2lsbCBiZSBjYWxsZWQuCisgIC8vCisgIC8vIE5vdGUgdGhhdCB3ZSBjaGVjayBmb3IgY29u
dGFpbmVyIHR5cGVzIGhlcmUsIHByaW9yIHRvIHdlIGNoZWNrCisgIC8vIGZvciBwcm90b2NvbCBt
ZXNzYWdlIHR5cGVzIGluIG91ciBvcGVyYXRvcjw8LiAgVGhlIHJhdGlvbmFsZSBpczoKKyAgLy8K
KyAgLy8gRm9yIHByb3RvY29sIG1lc3NhZ2VzLCB3ZSB3YW50IHRvIGdpdmUgcGVvcGxlIGEgY2hh
bmNlIHRvCisgIC8vIG92ZXJyaWRlIEdvb2dsZSBNb2NrJ3MgZm9ybWF0IGJ5IGRlZmluaW5nIGEg
UHJpbnRUbygpIG9yCisgIC8vIG9wZXJhdG9yPDwuICBGb3IgU1RMIGNvbnRhaW5lcnMsIG90aGVy
IGZvcm1hdHMgY2FuIGJlCisgIC8vIGluY29tcGF0aWJsZSB3aXRoIEdvb2dsZSBNb2NrJ3MgZm9y
bWF0IGZvciB0aGUgY29udGFpbmVyCisgIC8vIGVsZW1lbnRzOyB0aGVyZWZvcmUgd2UgY2hlY2sg
Zm9yIGNvbnRhaW5lciB0eXBlcyBoZXJlIHRvIGVuc3VyZQorICAvLyB0aGF0IG91ciBmb3JtYXQg
aXMgdXNlZC4KKyAgLy8KKyAgLy8gVGhlIHNlY29uZCBhcmd1bWVudCBvZiBEZWZhdWx0UHJpbnRU
bygpIGlzIG5lZWRlZCB0byBieXBhc3MgYSBidWcKKyAgLy8gaW4gU3ltYmlhbidzIEMrKyBjb21w
aWxlciB0aGF0IHByZXZlbnRzIGl0IGZyb20gcGlja2luZyB0aGUgcmlnaHQKKyAgLy8gb3Zlcmxv
YWQgYmV0d2VlbjoKKyAgLy8KKyAgLy8gICBQcmludFRvKGNvbnN0IFQmIHgsIC4uLik7CisgIC8v
ICAgUHJpbnRUbyhUKiB4LCAuLi4pOworICBEZWZhdWx0UHJpbnRUbyhJc0NvbnRhaW5lclRlc3Q8
VD4oMCksIGlzX3BvaW50ZXI8VD4oKSwgdmFsdWUsIG9zKTsKK30KKworLy8gVGhlIGZvbGxvd2lu
ZyBsaXN0IG9mIFByaW50VG8oKSBvdmVybG9hZHMgdGVsbHMKKy8vIFVuaXZlcnNhbFByaW50ZXI8
VD46OlByaW50KCkgaG93IHRvIHByaW50IHN0YW5kYXJkIHR5cGVzIChidWlsdC1pbgorLy8gdHlw
ZXMsIHN0cmluZ3MsIHBsYWluIGFycmF5cywgYW5kIHBvaW50ZXJzKS4KKworLy8gT3ZlcmxvYWRz
IGZvciB2YXJpb3VzIGNoYXIgdHlwZXMuCitHVEVTVF9BUElfIHZvaWQgUHJpbnRUbyh1bnNpZ25l
ZCBjaGFyIGMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7CitHVEVTVF9BUElfIHZvaWQgUHJpbnRUbyhz
aWduZWQgY2hhciBjLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhj
aGFyIGMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAvLyBXaGVuIHByaW50aW5nIGEgcGxhaW4g
Y2hhciwgd2UgYWx3YXlzIHRyZWF0IGl0IGFzIHVuc2lnbmVkLiAgVGhpcworICAvLyB3YXksIHRo
ZSBvdXRwdXQgd29uJ3QgYmUgYWZmZWN0ZWQgYnkgd2hldGhlciB0aGUgY29tcGlsZXIgdGhpbmtz
CisgIC8vIGNoYXIgaXMgc2lnbmVkIG9yIG5vdC4KKyAgUHJpbnRUbyhzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyPihjKSwgb3MpOworfQorCisvLyBPdmVybG9hZHMgZm9yIG90aGVyIHNpbXBsZSBi
dWlsdC1pbiB0eXBlcy4KK2lubGluZSB2b2lkIFByaW50VG8oYm9vbCB4LCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgKm9zIDw8ICh4ID8gInRydWUiIDogImZhbHNlIik7Cit9CisKKy8vIE92ZXJs
b2FkIGZvciB3Y2hhcl90IHR5cGUuCisvLyBQcmludHMgYSB3Y2hhcl90IGFzIGEgc3ltYm9sIGlm
IGl0IGlzIHByaW50YWJsZSBvciBhcyBpdHMgaW50ZXJuYWwKKy8vIGNvZGUgb3RoZXJ3aXNlIGFu
ZCBhbHNvIGFzIGl0cyBkZWNpbWFsIGNvZGUgKGV4Y2VwdCBmb3IgTCdcMCcpLgorLy8gVGhlIEwn
XDAnIGNoYXIgaXMgcHJpbnRlZCBhcyAiTCdcXDAnIi4gVGhlIGRlY2ltYWwgY29kZSBpcyBwcmlu
dGVkCisvLyBhcyBzaWduZWQgaW50ZWdlciB3aGVuIHdjaGFyX3QgaXMgaW1wbGVtZW50ZWQgYnkg
dGhlIGNvbXBpbGVyCisvLyBhcyBhIHNpZ25lZCB0eXBlIGFuZCBpcyBwcmludGVkIGFzIGFuIHVu
c2lnbmVkIGludGVnZXIgd2hlbiB3Y2hhcl90CisvLyBpcyBpbXBsZW1lbnRlZCBhcyBhbiB1bnNp
Z25lZCB0eXBlLgorR1RFU1RfQVBJXyB2b2lkIFByaW50VG8od2NoYXJfdCB3YywgOjpzdGQ6Om9z
dHJlYW0qIG9zKTsKKworLy8gT3ZlcmxvYWRzIGZvciBDIHN0cmluZ3MuCitHVEVTVF9BUElfIHZv
aWQgUHJpbnRUbyhjb25zdCBjaGFyKiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZv
aWQgUHJpbnRUbyhjaGFyKiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUbyhJbXBs
aWNpdENhc3RfPGNvbnN0IGNoYXIqPihzKSwgb3MpOworfQorCisvLyBzaWduZWQvdW5zaWduZWQg
Y2hhciBpcyBvZnRlbiB1c2VkIGZvciByZXByZXNlbnRpbmcgYmluYXJ5IGRhdGEsIHNvCisvLyB3
ZSBwcmludCBwb2ludGVycyB0byBpdCBhcyB2b2lkKiB0byBiZSBzYWZlLgoraW5saW5lIHZvaWQg
UHJpbnRUbyhjb25zdCBzaWduZWQgY2hhciogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFBy
aW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocyksIG9zKTsKK30KK2lubGluZSB2b2lk
IFByaW50VG8oc2lnbmVkIGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFRv
KEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMpLCBvcyk7Cit9CitpbmxpbmUgdm9pZCBQcmlu
dFRvKGNvbnN0IHVuc2lnbmVkIGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmlu
dFRvKEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMpLCBvcyk7Cit9CitpbmxpbmUgdm9pZCBQ
cmludFRvKHVuc2lnbmVkIGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFRv
KEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMpLCBvcyk7Cit9CisKKy8vIE1TVkMgY2FuIGJl
IGNvbmZpZ3VyZWQgdG8gZGVmaW5lIHdjaGFyX3QgYXMgYSB0eXBlZGVmIG9mIHVuc2lnbmVkCisv
LyBzaG9ydC4gIEl0IGRlZmluZXMgX05BVElWRV9XQ0hBUl9UX0RFRklORUQgd2hlbiB3Y2hhcl90
IGlzIGEgbmF0aXZlCisvLyB0eXBlLiAgV2hlbiB3Y2hhcl90IGlzIGEgdHlwZWRlZiwgZGVmaW5p
bmcgYW4gb3ZlcmxvYWQgZm9yIGNvbnN0CisvLyB3Y2hhcl90KiB3b3VsZCBjYXVzZSB1bnNpZ25l
ZCBzaG9ydCogYmUgcHJpbnRlZCBhcyBhIHdpZGUgc3RyaW5nLAorLy8gcG9zc2libHkgY2F1c2lu
ZyBpbnZhbGlkIG1lbW9yeSBhY2Nlc3Nlcy4KKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVm
aW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkKKy8vIE92ZXJsb2FkcyBmb3Igd2lkZSBDIHN0
cmluZ3MKK0dURVNUX0FQSV8gdm9pZCBQcmludFRvKGNvbnN0IHdjaGFyX3QqIHMsIDo6c3RkOjpv
c3RyZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRvKHdjaGFyX3QqIHMsIDo6c3RkOjpvc3Ry
ZWFtKiBvcykgeworICBQcmludFRvKEltcGxpY2l0Q2FzdF88Y29uc3Qgd2NoYXJfdCo+KHMpLCBv
cyk7Cit9CisjZW5kaWYKKworLy8gT3ZlcmxvYWQgZm9yIEMgYXJyYXlzLiAgTXVsdGktZGltZW5z
aW9uYWwgYXJyYXlzIGFyZSBwcmludGVkCisvLyBwcm9wZXJseS4KKworLy8gUHJpbnRzIHRoZSBn
aXZlbiBudW1iZXIgb2YgZWxlbWVudHMgaW4gYW4gYXJyYXksIHdpdGhvdXQgcHJpbnRpbmcKKy8v
IHRoZSBjdXJseSBicmFjZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgUHJpbnRSYXdB
cnJheVRvKGNvbnN0IFQgYVtdLCBzaXplX3QgY291bnQsIDo6c3RkOjpvc3RyZWFtKiBvcykgewor
ICBVbml2ZXJzYWxQcmludChhWzBdLCBvcyk7CisgIGZvciAoc2l6ZV90IGkgPSAxOyBpICE9IGNv
dW50OyBpKyspIHsKKyAgICAqb3MgPDwgIiwgIjsKKyAgICBVbml2ZXJzYWxQcmludChhW2ldLCBv
cyk7CisgIH0KK30KKworLy8gT3ZlcmxvYWRzIGZvciA6OnN0cmluZyBhbmQgOjpzdGQ6OnN0cmlu
Zy4KKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworR1RFU1RfQVBJXyB2b2lkIFByaW50U3Ry
aW5nVG8oY29uc3QgOjpzdHJpbmcmcywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKK2lubGluZSB2b2lk
IFByaW50VG8oY29uc3QgOjpzdHJpbmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmlu
dFN0cmluZ1RvKHMsIG9zKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcK
KworR1RFU1RfQVBJXyB2b2lkIFByaW50U3RyaW5nVG8oY29uc3QgOjpzdGQ6OnN0cmluZyZzLCA6
OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6c3Ry
aW5nJiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRTdHJpbmdUbyhzLCBvcyk7Cit9
CisKKy8vIE92ZXJsb2FkcyBmb3IgOjp3c3RyaW5nIGFuZCA6OnN0ZDo6d3N0cmluZy4KKyNpZiBH
VEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKK0dURVNUX0FQSV8gdm9pZCBQcmludFdpZGVTdHJpbmdU
byhjb25zdCA6OndzdHJpbmcmcywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKK2lubGluZSB2b2lkIFBy
aW50VG8oY29uc3QgOjp3c3RyaW5nJiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRX
aWRlU3RyaW5nVG8ocywgb3MpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJ
TkcKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORworR1RFU1RfQVBJXyB2b2lkIFByaW50V2lk
ZVN0cmluZ1RvKGNvbnN0IDo6c3RkOjp3c3RyaW5nJnMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7Citp
bmxpbmUgdm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp3c3RyaW5nJiBzLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgUHJpbnRXaWRlU3RyaW5nVG8ocywgb3MpOworfQorI2VuZGlmICAvLyBHVEVT
VF9IQVNfU1REX1dTVFJJTkcKKworI2lmIEdURVNUX0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFT
X1NURF9UVVBMRV8KKy8vIEhlbHBlciBmdW5jdGlvbiBmb3IgcHJpbnRpbmcgYSB0dXBsZS4gIFQg
bXVzdCBiZSBpbnN0YW50aWF0ZWQgd2l0aAorLy8gYSB0dXBsZSB0eXBlLgordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Cit2b2lkIFByaW50VHVwbGVUbyhjb25zdCBUJiB0LCA6OnN0ZDo6b3N0cmVhbSog
b3MpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfVFIxX1RVUExFIHx8IEdURVNUX0hBU19TVERfVFVQ
TEVfCisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCisvLyBPdmVybG9hZCBmb3IgOjpzdGQ6OnRy
MTo6dHVwbGUuICBOZWVkZWQgZm9yIHByaW50aW5nIGZ1bmN0aW9uIGFyZ3VtZW50cywKKy8vIHdo
aWNoIGFyZSBwYWNrZWQgYXMgdHVwbGVzLgorCisvLyBPdmVybG9hZGVkIFByaW50VG8oKSBmb3Ig
dHVwbGVzIG9mIHZhcmlvdXMgYXJpdGllcy4gIFdlIHN1cHBvcnQKKy8vIHR1cGxlcyBvZiB1cC10
byAxMCBmaWVsZHMuICBUaGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIHdvcmtzCisvLyByZWdh
cmRsZXNzIG9mIHdoZXRoZXIgdHIxOjp0dXBsZSBpcyBpbXBsZW1lbnRlZCB1c2luZyB0aGUKKy8v
IG5vbi1zdGFuZGFyZCB2YXJpYWRpYyB0ZW1wbGF0ZSBmZWF0dXJlIG9yIG5vdC4KKworaW5saW5l
IHZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTw+JiB0LCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQxPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxPiYgdCwgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6
dHVwbGU8VDEsIFQyPiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0
LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDM+JiB0
LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0
Pgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiYg
dCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
NCwgdHlwZW5hbWUgVDU+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEs
IFQyLCBUMywgVDQsIFQ1PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsK
KyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAg
ICB0eXBlbmFtZSBUNj4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAg
ICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6
OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+JiB0LAorICAgICAgICAgICAg
IDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFR1cGxlVG8odCwgb3MpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQs
IHR5cGVuYW1lIFQ1LAorICAgICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5h
bWUgVDg+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwgVDcsIFQ4PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAg
ICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOT4K
K3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDgsIFQ5PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsK
KyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAg
ICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlw
ZW5hbWUgVDEwPgordm9pZCBQcmludFRvKAorICAgIGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD4mIHQsCisgICAgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNU
X0hBU19UUjFfVFVQTEUKKworI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUuLi4gVHlwZXM+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnR1cGxlPFR5cGVzLi4u
PiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9Cisj
ZW5kaWYgIC8vIEdURVNUX0hBU19TVERfVFVQTEVfCisKKy8vIE92ZXJsb2FkIGZvciBzdGQ6OnBh
aXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgordm9pZCBQcmludFRvKGNv
bnN0IDo6c3RkOjpwYWlyPFQxLCBUMj4mIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAg
Km9zIDw8ICcoJzsKKyAgLy8gV2UgY2Fubm90IHVzZSBVbml2ZXJzYWxQcmludCh2YWx1ZS5maXJz
dCwgb3MpIGhlcmUsIGFzIFQxIG1heSBiZQorICAvLyBhIHJlZmVyZW5jZSB0eXBlLiAgVGhlIHNh
bWUgZm9yIHByaW50aW5nIHZhbHVlLnNlY29uZC4KKyAgVW5pdmVyc2FsUHJpbnRlcjxUMT46OlBy
aW50KHZhbHVlLmZpcnN0LCBvcyk7CisgICpvcyA8PCAiLCAiOworICBVbml2ZXJzYWxQcmludGVy
PFQyPjo6UHJpbnQodmFsdWUuc2Vjb25kLCBvcyk7CisgICpvcyA8PCAnKSc7Cit9CisKKy8vIElt
cGxlbWVudHMgcHJpbnRpbmcgYSBub24tcmVmZXJlbmNlIHR5cGUgVCBieSBsZXR0aW5nIHRoZSBj
b21waWxlcgorLy8gcGljayB0aGUgcmlnaHQgb3ZlcmxvYWQgb2YgUHJpbnRUbygpIGZvciBULgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbml2ZXJzYWxQcmludGVyIHsKKyBwdWJsaWM6
CisgIC8vIE1TVkMgd2FybnMgYWJvdXQgYWRkaW5nIGNvbnN0IHRvIGEgZnVuY3Rpb24gdHlwZSwg
c28gd2Ugd2FudCB0bworICAvLyBkaXNhYmxlIHRoZSB3YXJuaW5nLgorICBHVEVTVF9ESVNBQkxF
X01TQ19XQVJOSU5HU19QVVNIXyg0MTgwKQorCisgIC8vIE5vdGU6IHdlIGRlbGliZXJhdGVseSBk
b24ndCBjYWxsIHRoaXMgUHJpbnRUbygpLCBhcyB0aGF0IG5hbWUKKyAgLy8gY29uZmxpY3RzIHdp
dGggOjp0ZXN0aW5nOjppbnRlcm5hbDo6UHJpbnRUbyBpbiB0aGUgYm9keSBvZiB0aGUKKyAgLy8g
ZnVuY3Rpb24uCisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0
cmVhbSogb3MpIHsKKyAgICAvLyBCeSBkZWZhdWx0LCA6OnRlc3Rpbmc6OmludGVybmFsOjpQcmlu
dFRvKCkgaXMgdXNlZCBmb3IgcHJpbnRpbmcKKyAgICAvLyB0aGUgdmFsdWUuCisgICAgLy8KKyAg
ICAvLyBUaGFua3MgdG8gS29lbmlnIGxvb2stdXAsIGlmIFQgaXMgYSBjbGFzcyBhbmQgaGFzIGl0
cyBvd24KKyAgICAvLyBQcmludFRvKCkgZnVuY3Rpb24gZGVmaW5lZCBpbiBpdHMgbmFtZXNwYWNl
LCB0aGF0IGZ1bmN0aW9uIHdpbGwKKyAgICAvLyBiZSB2aXNpYmxlIGhlcmUuICBTaW5jZSBpdCBp
cyBtb3JlIHNwZWNpZmljIHRoYW4gdGhlIGdlbmVyaWMgb25lcworICAgIC8vIGluIDo6dGVzdGlu
Zzo6aW50ZXJuYWwsIGl0IHdpbGwgYmUgcGlja2VkIGJ5IHRoZSBjb21waWxlciBpbiB0aGUKKyAg
ICAvLyBmb2xsb3dpbmcgc3RhdGVtZW50IC0gZXhhY3RseSB3aGF0IHdlIHdhbnQuCisgICAgUHJp
bnRUbyh2YWx1ZSwgb3MpOworICB9CisKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9Q
XygpCit9OworCisvLyBVbml2ZXJzYWxQcmludEFycmF5KGJlZ2luLCBsZW4sIG9zKSBwcmludHMg
YW4gYXJyYXkgb2YgJ2xlbicKKy8vIGVsZW1lbnRzLCBzdGFydGluZyBhdCBhZGRyZXNzICdiZWdp
bicuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVW5pdmVyc2FsUHJpbnRBcnJheShjb25z
dCBUKiBiZWdpbiwgc2l6ZV90IGxlbiwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIGlmIChsZW4g
PT0gMCkgeworICAgICpvcyA8PCAie30iOworICB9IGVsc2UgeworICAgICpvcyA8PCAieyAiOwor
ICAgIGNvbnN0IHNpemVfdCBrVGhyZXNob2xkID0gMTg7CisgICAgY29uc3Qgc2l6ZV90IGtDaHVu
a1NpemUgPSA4OworICAgIC8vIElmIHRoZSBhcnJheSBoYXMgbW9yZSB0aGFuIGtUaHJlc2hvbGQg
ZWxlbWVudHMsIHdlJ2xsIGhhdmUgdG8KKyAgICAvLyBvbWl0IHNvbWUgZGV0YWlscyBieSBwcmlu
dGluZyBvbmx5IHRoZSBmaXJzdCBhbmQgdGhlIGxhc3QKKyAgICAvLyBrQ2h1bmtTaXplIGVsZW1l
bnRzLgorICAgIC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBsZXQgdGhlIHVzZXIgY29udHJvbCB0
aGUgdGhyZXNob2xkIHVzaW5nIGEgZmxhZy4KKyAgICBpZiAobGVuIDw9IGtUaHJlc2hvbGQpIHsK
KyAgICAgIFByaW50UmF3QXJyYXlUbyhiZWdpbiwgbGVuLCBvcyk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIFByaW50UmF3QXJyYXlUbyhiZWdpbiwga0NodW5rU2l6ZSwgb3MpOworICAgICAgKm9zIDw8
ICIsIC4uLiwgIjsKKyAgICAgIFByaW50UmF3QXJyYXlUbyhiZWdpbiArIGxlbiAtIGtDaHVua1Np
emUsIGtDaHVua1NpemUsIG9zKTsKKyAgICB9CisgICAgKm9zIDw8ICIgfSI7CisgIH0KK30KKy8v
IFRoaXMgb3ZlcmxvYWQgcHJpbnRzIGEgKGNvbnN0KSBjaGFyIGFycmF5IGNvbXBhY3RseS4KK0dU
RVNUX0FQSV8gdm9pZCBVbml2ZXJzYWxQcmludEFycmF5KAorICAgIGNvbnN0IGNoYXIqIGJlZ2lu
LCBzaXplX3QgbGVuLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworCisvLyBUaGlzIG92ZXJsb2FkIHBy
aW50cyBhIChjb25zdCkgd2NoYXJfdCBhcnJheSBjb21wYWN0bHkuCitHVEVTVF9BUElfIHZvaWQg
VW5pdmVyc2FsUHJpbnRBcnJheSgKKyAgICBjb25zdCB3Y2hhcl90KiBiZWdpbiwgc2l6ZV90IGxl
biwgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKKworLy8gSW1wbGVtZW50cyBwcmludGluZyBhbiBhcnJh
eSB0eXBlIFRbTl0uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitjbGFzcyBVbml2
ZXJzYWxQcmludGVyPFRbTl0+IHsKKyBwdWJsaWM6CisgIC8vIFByaW50cyB0aGUgZ2l2ZW4gYXJy
YXksIG9taXR0aW5nIHNvbWUgZWxlbWVudHMgd2hlbiB0aGVyZSBhcmUgdG9vCisgIC8vIG1hbnku
CisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQgKCZhKVtOXSwgOjpzdGQ6Om9zdHJlYW0qIG9z
KSB7CisgICAgVW5pdmVyc2FsUHJpbnRBcnJheShhLCBOLCBvcyk7CisgIH0KK307CisKKy8vIElt
cGxlbWVudHMgcHJpbnRpbmcgYSByZWZlcmVuY2UgdHlwZSBUJi4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgVW5pdmVyc2FsUHJpbnRlcjxUJj4geworIHB1YmxpYzoKKyAgLy8gTVNWQyB3
YXJucyBhYm91dCBhZGRpbmcgY29uc3QgdG8gYSBmdW5jdGlvbiB0eXBlLCBzbyB3ZSB3YW50IHRv
CisgIC8vIGRpc2FibGUgdGhlIHdhcm5pbmcuCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdT
X1BVU0hfKDQxODApCisKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgeworICAgIC8vIFByaW50cyB0aGUgYWRkcmVzcyBvZiB0aGUgdmFsdWUu
ICBXZSB1c2UgcmVpbnRlcnByZXRfY2FzdCBoZXJlCisgICAgLy8gYXMgc3RhdGljX2Nhc3QgZG9l
c24ndCBjb21waWxlIHdoZW4gVCBpcyBhIGZ1bmN0aW9uIHR5cGUuCisgICAgKm9zIDw8ICJAIiA8
PCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigmdmFsdWUpIDw8ICIgIjsKKworICAgIC8v
IFRoZW4gcHJpbnRzIHRoZSB2YWx1ZSBpdHNlbGYuCisgICAgVW5pdmVyc2FsUHJpbnQodmFsdWUs
IG9zKTsKKyAgfQorCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQorfTsKKwor
Ly8gUHJpbnRzIGEgdmFsdWUgdGVyc2VseTogZm9yIGEgcmVmZXJlbmNlIHR5cGUsIHRoZSByZWZl
cmVuY2VkIHZhbHVlCisvLyAoYnV0IG5vdCB0aGUgYWRkcmVzcykgaXMgcHJpbnRlZDsgZm9yIGEg
KGNvbnN0KSBjaGFyIHBvaW50ZXIsIHRoZQorLy8gTlVMLXRlcm1pbmF0ZWQgc3RyaW5nIChidXQg
bm90IHRoZSBwb2ludGVyKSBpcyBwcmludGVkLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlciB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBQcmlu
dChjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVW5pdmVyc2FsUHJp
bnQodmFsdWUsIG9zKTsKKyAgfQorfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVW5p
dmVyc2FsVGVyc2VQcmludGVyPFQmPiB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBQcmludChj
b25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVW5pdmVyc2FsUHJpbnQo
dmFsdWUsIG9zKTsKKyAgfQorfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KK2Ns
YXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxUW05dPiB7CisgcHVibGljOgorICBzdGF0aWMgdm9p
ZCBQcmludChjb25zdCBUICgmdmFsdWUpW05dLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBV
bml2ZXJzYWxQcmludGVyPFRbTl0+OjpQcmludCh2YWx1ZSwgb3MpOworICB9Cit9OwordGVtcGxh
dGUgPD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjb25zdCBjaGFyKj4geworIHB1Ymxp
YzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgY2hhciogc3RyLCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICpvcyA8PCAiTlVMTCI7CisgICAg
fSBlbHNlIHsKKyAgICAgIFVuaXZlcnNhbFByaW50KHN0cmluZyhzdHIpLCBvcyk7CisgICAgfQor
ICB9Cit9OwordGVtcGxhdGUgPD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjaGFyKj4g
eworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY2hhciogc3RyLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgICBVbml2ZXJzYWxUZXJzZVByaW50ZXI8Y29uc3QgY2hhcio+OjpQcmludChz
dHIsIG9zKTsKKyAgfQorfTsKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORwordGVtcGxhdGUg
PD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjb25zdCB3Y2hhcl90Kj4geworIHB1Ymxp
YzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3Qgd2NoYXJfdCogc3RyLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICpvcyA8PCAiTlVMTCI7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIFVuaXZlcnNhbFByaW50KDo6c3RkOjp3c3RyaW5nKHN0ciksIG9z
KTsKKyAgICB9CisgIH0KK307CisjZW5kaWYKKwordGVtcGxhdGUgPD4KK2NsYXNzIFVuaXZlcnNh
bFRlcnNlUHJpbnRlcjx3Y2hhcl90Kj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQo
d2NoYXJfdCogc3RyLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBVbml2ZXJzYWxUZXJzZVBy
aW50ZXI8Y29uc3Qgd2NoYXJfdCo+OjpQcmludChzdHIsIG9zKTsKKyAgfQorfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFRlcnNlUHJpbnQoY29uc3QgVCYgdmFsdWUs
IDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBVbml2ZXJzYWxUZXJzZVByaW50ZXI8VD46OlByaW50
KHZhbHVlLCBvcyk7Cit9CisKKy8vIFByaW50cyBhIHZhbHVlIHVzaW5nIHRoZSB0eXBlIGluZmVy
cmVkIGJ5IHRoZSBjb21waWxlci4gIFRoZQorLy8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5k
IFVuaXZlcnNhbFRlcnNlUHJpbnQoKSBpcyB0aGF0IGZvciBhCisvLyAoY29uc3QpIGNoYXIgcG9p
bnRlciwgdGhpcyBwcmludHMgYm90aCB0aGUgcG9pbnRlciBhbmQgdGhlCisvLyBOVUwtdGVybWlu
YXRlZCBzdHJpbmcuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVW5pdmVyc2FsUHJpbnQo
Y29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAvLyBBIHdvcmthcm9uZCBm
b3IgdGhlIGJ1ZyBpbiBWQysrIDcuMSB0aGF0IHByZXZlbnRzIHVzIGZyb20gaW5zdGFudGlhdGlu
ZworICAvLyBVbml2ZXJzYWxQcmludGVyIHdpdGggVCBkaXJlY3RseS4KKyAgdHlwZWRlZiBUIFQx
OworICBVbml2ZXJzYWxQcmludGVyPFQxPjo6UHJpbnQodmFsdWUsIG9zKTsKK30KKwordHlwZWRl
ZiA6OnN0ZDo6dmVjdG9yPHN0cmluZz4gU3RyaW5nczsKKworLy8gVHVwbGVQb2xpY3k8VHVwbGVU
PiBtdXN0IHByb3ZpZGU6CisvLyAtIHR1cGxlX3NpemUKKy8vICAgICBzaXplIG9mIHR1cGxlIFR1
cGxlVC4KKy8vIC0gZ2V0PHNpemVfdCBJPihjb25zdCBUdXBsZVQmIHQpCisvLyAgICAgc3RhdGlj
IGZ1bmN0aW9uIGV4dHJhY3RpbmcgZWxlbWVudCBJIG9mIHR1cGxlIFR1cGxlVC4KKy8vIC0gdHVw
bGVfZWxlbWVudDxzaXplX3QgST46OnR5cGUKKy8vICAgICB0eXBlIG9mIGVsZW1lbnQgSSBvZiB0
dXBsZSBUdXBsZVQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGVUPgorc3RydWN0IFR1cGxlUG9s
aWN5OworCisjaWYgR1RFU1RfSEFTX1RSMV9UVVBMRQordGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxl
VD4KK3N0cnVjdCBUdXBsZVBvbGljeSB7CisgIHR5cGVkZWYgVHVwbGVUIFR1cGxlOworICBzdGF0
aWMgY29uc3Qgc2l6ZV90IHR1cGxlX3NpemUgPSA6OnN0ZDo6dHIxOjp0dXBsZV9zaXplPFR1cGxl
Pjo6dmFsdWU7CisKKyAgdGVtcGxhdGUgPHNpemVfdCBJPgorICBzdHJ1Y3QgdHVwbGVfZWxlbWVu
dCA6IDo6c3RkOjp0cjE6OnR1cGxlX2VsZW1lbnQ8SSwgVHVwbGU+IHt9OworCisgIHRlbXBsYXRl
IDxzaXplX3QgST4KKyAgc3RhdGljIHR5cGVuYW1lIEFkZFJlZmVyZW5jZTwKKyAgICAgIGNvbnN0
IHR5cGVuYW1lIDo6c3RkOjp0cjE6OnR1cGxlX2VsZW1lbnQ8SSwgVHVwbGU+Ojp0eXBlPjo6dHlw
ZSBnZXQoCisgICAgICBjb25zdCBUdXBsZSYgdHVwbGUpIHsKKyAgICByZXR1cm4gOjpzdGQ6OnRy
MTo6Z2V0PEk+KHR1cGxlKTsKKyAgfQorfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZVQ+Citj
b25zdCBzaXplX3QgVHVwbGVQb2xpY3k8VHVwbGVUPjo6dHVwbGVfc2l6ZTsKKyNlbmRpZiAgLy8g
R1RFU1RfSEFTX1RSMV9UVVBMRQorCisjaWYgR1RFU1RfSEFTX1NURF9UVVBMRV8KK3RlbXBsYXRl
IDx0eXBlbmFtZS4uLiBUeXBlcz4KK3N0cnVjdCBUdXBsZVBvbGljeTwgOjpzdGQ6OnR1cGxlPFR5
cGVzLi4uPiA+IHsKKyAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8VHlwZXMuLi4+IFR1cGxlOworICBz
dGF0aWMgY29uc3Qgc2l6ZV90IHR1cGxlX3NpemUgPSA6OnN0ZDo6dHVwbGVfc2l6ZTxUdXBsZT46
OnZhbHVlOworCisgIHRlbXBsYXRlIDxzaXplX3QgST4KKyAgc3RydWN0IHR1cGxlX2VsZW1lbnQg
OiA6OnN0ZDo6dHVwbGVfZWxlbWVudDxJLCBUdXBsZT4ge307CisKKyAgdGVtcGxhdGUgPHNpemVf
dCBJPgorICBzdGF0aWMgY29uc3QgdHlwZW5hbWUgOjpzdGQ6OnR1cGxlX2VsZW1lbnQ8SSwgVHVw
bGU+Ojp0eXBlJiBnZXQoCisgICAgICBjb25zdCBUdXBsZSYgdHVwbGUpIHsKKyAgICByZXR1cm4g
OjpzdGQ6OmdldDxJPih0dXBsZSk7CisgIH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHlw
ZXM+Citjb25zdCBzaXplX3QgVHVwbGVQb2xpY3k8IDo6c3RkOjp0dXBsZTxUeXBlcy4uLj4gPjo6
dHVwbGVfc2l6ZTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9UVVBMRV8KKworI2lmIEdURVNU
X0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8KKy8vIFRoaXMgaGVscGVyIHRl
bXBsYXRlIGFsbG93cyBQcmludFRvKCkgZm9yIHR1cGxlcyBhbmQKKy8vIFVuaXZlcnNhbFRlcnNl
UHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygpIHRvIGJlIGRlZmluZWQgYnkKKy8vIGluZHVjdGlv
biBvbiB0aGUgbnVtYmVyIG9mIHR1cGxlIGZpZWxkcy4gIFRoZSBpZGVhIGlzIHRoYXQKKy8vIFR1
cGxlUHJlZml4UHJpbnRlcjxOPjo6UHJpbnRQcmVmaXhUbyh0LCBvcykgcHJpbnRzIHRoZSBmaXJz
dCBOCisvLyBmaWVsZHMgaW4gdHVwbGUgdCwgYW5kIGNhbiBiZSBkZWZpbmVkIGluIHRlcm1zIG9m
CisvLyBUdXBsZVByZWZpeFByaW50ZXI8TiAtIDE+LgorLy8KKy8vIFRoZSBpbmR1Y3RpdmUgY2Fz
ZS4KK3RlbXBsYXRlIDxzaXplX3QgTj4KK3N0cnVjdCBUdXBsZVByZWZpeFByaW50ZXIgeworICAv
LyBQcmludHMgdGhlIGZpcnN0IE4gZmllbGRzIG9mIGEgdHVwbGUuCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUdXBsZT4KKyAgc3RhdGljIHZvaWQgUHJpbnRQcmVmaXhUbyhjb25zdCBUdXBsZSYgdCwg
OjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVHVwbGVQcmVmaXhQcmludGVyPE4gLSAxPjo6UHJp
bnRQcmVmaXhUbyh0LCBvcyk7CisgICAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QVVNI
XygpCisgICAgaWYgKE4gPiAxKSB7CisgICAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9Q
T1BfKCkKKyAgICAgICpvcyA8PCAiLCAiOworICAgIH0KKyAgICBVbml2ZXJzYWxQcmludGVyPAor
ICAgICAgICB0eXBlbmFtZSBUdXBsZVBvbGljeTxUdXBsZT46OnRlbXBsYXRlIHR1cGxlX2VsZW1l
bnQ8TiAtIDE+Ojp0eXBlPgorICAgICAgICA6OlByaW50KFR1cGxlUG9saWN5PFR1cGxlPjo6dGVt
cGxhdGUgZ2V0PE4gLSAxPih0KSwgb3MpOworICB9CisKKyAgLy8gVGVyc2VseSBwcmludHMgdGhl
IGZpcnN0IE4gZmllbGRzIG9mIGEgdHVwbGUgdG8gYSBzdHJpbmcgdmVjdG9yLAorICAvLyBvbmUg
ZWxlbWVudCBmb3IgZWFjaCBmaWVsZC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPgorICBz
dGF0aWMgdm9pZCBUZXJzZVByaW50UHJlZml4VG9TdHJpbmdzKGNvbnN0IFR1cGxlJiB0LCBTdHJp
bmdzKiBzdHJpbmdzKSB7CisgICAgVHVwbGVQcmVmaXhQcmludGVyPE4gLSAxPjo6VGVyc2VQcmlu
dFByZWZpeFRvU3RyaW5ncyh0LCBzdHJpbmdzKTsKKyAgICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNz
OworICAgIFVuaXZlcnNhbFRlcnNlUHJpbnQoVHVwbGVQb2xpY3k8VHVwbGU+Ojp0ZW1wbGF0ZSBn
ZXQ8TiAtIDE+KHQpLCAmc3MpOworICAgIHN0cmluZ3MtPnB1c2hfYmFjayhzcy5zdHIoKSk7Cisg
IH0KK307CisKKy8vIEJhc2UgY2FzZS4KK3RlbXBsYXRlIDw+CitzdHJ1Y3QgVHVwbGVQcmVmaXhQ
cmludGVyPDA+IHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPgorICBzdGF0aWMgdm9pZCBQ
cmludFByZWZpeFRvKGNvbnN0IFR1cGxlJiwgOjpzdGQ6Om9zdHJlYW0qKSB7fQorCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUdXBsZT4KKyAgc3RhdGljIHZvaWQgVGVyc2VQcmludFByZWZpeFRvU3Ry
aW5ncyhjb25zdCBUdXBsZSYsIFN0cmluZ3MqKSB7fQorfTsKKworLy8gSGVscGVyIGZ1bmN0aW9u
IGZvciBwcmludGluZyBhIHR1cGxlLgorLy8gVHVwbGUgbXVzdCBiZSBlaXRoZXIgc3RkOjp0cjE6
OnR1cGxlIG9yIHN0ZDo6dHVwbGUgdHlwZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4KK3Zv
aWQgUHJpbnRUdXBsZVRvKGNvbnN0IFR1cGxlJiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAg
Km9zIDw8ICIoIjsKKyAgVHVwbGVQcmVmaXhQcmludGVyPFR1cGxlUG9saWN5PFR1cGxlPjo6dHVw
bGVfc2l6ZT46OlByaW50UHJlZml4VG8odCwgb3MpOworICAqb3MgPDwgIikiOworfQorCisvLyBQ
cmludHMgdGhlIGZpZWxkcyBvZiBhIHR1cGxlIHRlcnNlbHkgdG8gYSBzdHJpbmcgdmVjdG9yLCBv
bmUKKy8vIGVsZW1lbnQgZm9yIGVhY2ggZmllbGQuICBTZWUgdGhlIGNvbW1lbnQgYmVmb3JlCisv
LyBVbml2ZXJzYWxUZXJzZVByaW50KCkgZm9yIGhvdyB3ZSBkZWZpbmUgInRlcnNlbHkiLgordGVt
cGxhdGUgPHR5cGVuYW1lIFR1cGxlPgorU3RyaW5ncyBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVG
aWVsZHNUb1N0cmluZ3MoY29uc3QgVHVwbGUmIHZhbHVlKSB7CisgIFN0cmluZ3MgcmVzdWx0Owor
ICBUdXBsZVByZWZpeFByaW50ZXI8VHVwbGVQb2xpY3k8VHVwbGU+Ojp0dXBsZV9zaXplPjo6Cisg
ICAgICBUZXJzZVByaW50UHJlZml4VG9TdHJpbmdzKHZhbHVlLCAmcmVzdWx0KTsKKyAgcmV0dXJu
IHJlc3VsdDsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRSB8fCBHVEVTVF9IQVNf
U1REX1RVUExFXworCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Cis6OnN0ZDo6c3RyaW5nIFByaW50VG9TdHJpbmcoY29uc3QgVCYgdmFsdWUpIHsKKyAg
OjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgaW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnRl
cjxUPjo6UHJpbnQodmFsdWUsICZzcyk7CisgIHJldHVybiBzcy5zdHIoKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIHRlc3RpbmcKKworLy8gSW5jbHVkZSBhbnkgY3VzdG9tIHByaW50ZXIgYWRkZWQg
YnkgdGhlIGxvY2FsIGluc3RhbGxhdGlvbi4KKy8vIFdlIG11c3QgaW5jbHVkZSB0aGlzIGhlYWRl
ciBhdCB0aGUgZW5kIHRvIG1ha2Ugc3VyZSBpdCBjYW4gdXNlIHRoZQorLy8gZGVjbGFyYXRpb25z
IGZyb20gdGhpcyBmaWxlLgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1w
cmludGVycy5oIgorCisjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJJTlRF
UlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
Z3Rlc3Qtc3BpLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0
LXNwaS5oCmluZGV4IGM0MWRhNDg0NDc2MDNlOTY1ZmI3NzJhYmNhMmYxNDVlZTgyYTYwNmYuLmY2
M2ZhOWExYjJhODc1MDgxZGEzNjA2ZmM0NTc4ZWU1YTk0YWJiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qtc3BpLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1zcGkuaApAQCAtMzUsNyArMzUs
NyBAQAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1NQSV9IXwogI2RlZmluZSBH
VEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1NQSV9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKQEAg
LTk4LDEyICs5OCwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIFNpbmdsZUZhaWx1cmVDaGVja2VyIHsK
ICAgLy8gVGhlIGNvbnN0cnVjdG9yIHJlbWVtYmVycyB0aGUgYXJndW1lbnRzLgogICBTaW5nbGVG
YWlsdXJlQ2hlY2tlcihjb25zdCBUZXN0UGFydFJlc3VsdEFycmF5KiByZXN1bHRzLAogICAgICAg
ICAgICAgICAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBzdWJzdHIpOworICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdHJpbmcmIHN1YnN0cik7CiAgIH5TaW5nbGVGYWlsdXJlQ2hlY2tlcigpOwogIHByaXZh
dGU6CiAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0QXJyYXkqIGNvbnN0IHJlc3VsdHNfOwogICBjb25z
dCBUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlXzsKLSAgY29uc3QgU3RyaW5nIHN1YnN0cl87Cisg
IGNvbnN0IHN0cmluZyBzdWJzdHJfOwogCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oU2luZ2xlRmFpbHVyZUNoZWNrZXIpOwogfTsKQEAgLTIyMyw3ICsyMjMsNyBAQCBjbGFzcyBH
VEVTVF9BUElfIFNpbmdsZUZhaWx1cmVDaGVja2VyIHsKICAgICAgICAgKHN1YnN0cikpO1wKICAg
ICB7XAogICAgICAgOjp0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlciBn
dGVzdF9yZXBvcnRlcihcCi0gICAgICAgICAgOjp0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlcjo6SU5URVJDRVBUX0FMTF9USFJFQURTLFwKKyAgICAgICAgICA6OnRlc3Rp
bmc6OlNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpJTlRFUkNFUFRfQUxMX1RIUkVB
RFMsIFwKICAgICAgICAgICAmZ3Rlc3RfZmFpbHVyZXMpO1wKICAgICAgIGlmICg6OnRlc3Rpbmc6
OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgc3RhdGVtZW50OyB9XAogICAgIH1cCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXRlc3QtcGFy
dC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBh
cnQuaAppbmRleCBmNzE0NzU5MDY3NjM5ZjFlYTRlYzBhMTI2MzQ3ZGVjMTIwNDgyNDM5Li43N2Vi
ODQ0ODM5ZDg5MjdhMjkzZDI1NzA0ZGY5YjE3MDdhNDI3M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgKQEAg
LTM1LDggKzM1LDggQEAKIAogI2luY2x1ZGUgPGlvc2Z3ZD4KICNpbmNsdWRlIDx2ZWN0b3I+Ci0j
aW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNsdWRlIDxndGVz
dC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVz
dC1pbnRlcm5hbC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgog
CiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgR1RFU1RfQVBJ
XyBUZXN0UGFydFJlc3VsdCB7CiAgICAgICAgICAgICAgICAgIGludCBhX2xpbmVfbnVtYmVyLAog
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX21lc3NhZ2UpCiAgICAgICA6IHR5cGVfKGFf
dHlwZSksCi0gICAgICAgIGZpbGVfbmFtZV8oYV9maWxlX25hbWUpLAorICAgICAgICBmaWxlX25h
bWVfKGFfZmlsZV9uYW1lID09IE5VTEwgPyAiIiA6IGFfZmlsZV9uYW1lKSwKICAgICAgICAgbGlu
ZV9udW1iZXJfKGFfbGluZV9udW1iZXIpLAogICAgICAgICBzdW1tYXJ5XyhFeHRyYWN0U3VtbWFy
eShhX21lc3NhZ2UpKSwKICAgICAgICAgbWVzc2FnZV8oYV9tZXNzYWdlKSB7CkBAIC03Myw3ICs3
Myw5IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFBhcnRSZXN1bHQgewogCiAgIC8vIEdldHMgdGhl
IG5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRoZSB0ZXN0IHBhcnQgdG9vayBwbGFjZSwg
b3IKICAgLy8gTlVMTCBpZiBpdCdzIHVua25vd24uCi0gIGNvbnN0IGNoYXIqIGZpbGVfbmFtZSgp
IGNvbnN0IHsgcmV0dXJuIGZpbGVfbmFtZV8uY19zdHIoKTsgfQorICBjb25zdCBjaGFyKiBmaWxl
X25hbWUoKSBjb25zdCB7CisgICAgcmV0dXJuIGZpbGVfbmFtZV8uZW1wdHkoKSA/IE5VTEwgOiBm
aWxlX25hbWVfLmNfc3RyKCk7CisgIH0KIAogICAvLyBHZXRzIHRoZSBsaW5lIGluIHRoZSBzb3Vy
Y2UgZmlsZSB3aGVyZSB0aGUgdGVzdCBwYXJ0IHRvb2sgcGxhY2UsCiAgIC8vIG9yIC0xIGlmIGl0
J3MgdW5rbm93bi4KQEAgLTk2LDIxICs5OCwyMiBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RQYXJ0
UmVzdWx0IHsKIAogICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB0ZXN0IHBhcnQgZmF0YWxseSBm
YWlsZWQuCiAgIGJvb2wgZmF0YWxseV9mYWlsZWQoKSBjb25zdCB7IHJldHVybiB0eXBlXyA9PSBr
RmF0YWxGYWlsdXJlOyB9CisKICBwcml2YXRlOgogICBUeXBlIHR5cGVfOwogCiAgIC8vIEdldHMg
dGhlIHN1bW1hcnkgb2YgdGhlIGZhaWx1cmUgbWVzc2FnZSBieSBvbWl0dGluZyB0aGUgc3RhY2sK
ICAgLy8gdHJhY2UgaW4gaXQuCi0gIHN0YXRpYyBpbnRlcm5hbDo6U3RyaW5nIEV4dHJhY3RTdW1t
YXJ5KGNvbnN0IGNoYXIqIG1lc3NhZ2UpOworICBzdGF0aWMgc3RkOjpzdHJpbmcgRXh0cmFjdFN1
bW1hcnkoY29uc3QgY2hhciogbWVzc2FnZSk7CiAKICAgLy8gVGhlIG5hbWUgb2YgdGhlIHNvdXJj
ZSBmaWxlIHdoZXJlIHRoZSB0ZXN0IHBhcnQgdG9vayBwbGFjZSwgb3IKLSAgLy8gTlVMTCBpZiB0
aGUgc291cmNlIGZpbGUgaXMgdW5rbm93bi4KLSAgaW50ZXJuYWw6OlN0cmluZyBmaWxlX25hbWVf
OworICAvLyAiIiBpZiB0aGUgc291cmNlIGZpbGUgaXMgdW5rbm93bi4KKyAgc3RkOjpzdHJpbmcg
ZmlsZV9uYW1lXzsKICAgLy8gVGhlIGxpbmUgaW4gdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRoZSB0
ZXN0IHBhcnQgdG9vayBwbGFjZSwgb3IgLTEKICAgLy8gaWYgdGhlIGxpbmUgbnVtYmVyIGlzIHVu
a25vd24uCiAgIGludCBsaW5lX251bWJlcl87Ci0gIGludGVybmFsOjpTdHJpbmcgc3VtbWFyeV87
ICAvLyBUaGUgdGVzdCBmYWlsdXJlIHN1bW1hcnkuCi0gIGludGVybmFsOjpTdHJpbmcgbWVzc2Fn
ZV87ICAvLyBUaGUgdGVzdCBmYWlsdXJlIG1lc3NhZ2UuCisgIHN0ZDo6c3RyaW5nIHN1bW1hcnlf
OyAgLy8gVGhlIHRlc3QgZmFpbHVyZSBzdW1tYXJ5LgorICBzdGQ6OnN0cmluZyBtZXNzYWdlXzsg
IC8vIFRoZSB0ZXN0IGZhaWx1cmUgbWVzc2FnZS4KIH07CiAKIC8vIFByaW50cyBhIFRlc3RQYXJ0
UmVzdWx0IG9iamVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9ndGVzdC10eXBlZC10ZXN0LmgKaW5kZXggMWVjOGViOGQzMDkzOThkNTJiZDQ5
NjM4NGNmNDc0ODNhZTExNTJlZS4uNWY2OWQ1Njc4ZWFmMzRhNjAwY2E0NWY4Y2Y5MzQwODMxNjJm
YWZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9n
dGVzdC10eXBlZC10ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdC10eXBlZC10ZXN0LmgKQEAgLTE0Niw4ICsxNDYsOCBAQCBJTlNUQU5USUFURV9U
WVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcyk7CiAKICNlbmRpZiAgLy8gMAog
Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgotI2luY2x1ZGUgPGd0ZXN0
L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCIK
IAogLy8gSW1wbGVtZW50cyB0eXBlZCB0ZXN0cy4KIApAQCAtMTU3LDE2ICsxNTcsMTYgQEAgSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMpOwogLy8KIC8v
IEV4cGFuZHMgdG8gdGhlIG5hbWUgb2YgdGhlIHR5cGVkZWYgZm9yIHRoZSB0eXBlIHBhcmFtZXRl
cnMgb2YgdGhlCiAvLyBnaXZlbiB0ZXN0IGNhc2UuCi0jZGVmaW5lIEdURVNUX1RZUEVfUEFSQU1T
XyhUZXN0Q2FzZU5hbWUpIGd0ZXN0X3R5cGVfcGFyYW1zXyMjVGVzdENhc2VOYW1lIyNfCisjIGRl
ZmluZSBHVEVTVF9UWVBFX1BBUkFNU18oVGVzdENhc2VOYW1lKSBndGVzdF90eXBlX3BhcmFtc18j
I1Rlc3RDYXNlTmFtZSMjXwogCiAvLyBUaGUgJ1R5cGVzJyB0ZW1wbGF0ZSBhcmd1bWVudCBiZWxv
dyBtdXN0IGhhdmUgc3BhY2VzIGFyb3VuZCBpdAogLy8gc2luY2Ugc29tZSBjb21waWxlcnMgbWF5
IGNob2tlIG9uICc+Picgd2hlbiBwYXNzaW5nIGEgdGVtcGxhdGUKIC8vIGluc3RhbmNlIChlLmcu
IFR5cGVzPGludD4pCi0jZGVmaW5lIFRZUEVEX1RFU1RfQ0FTRShDYXNlTmFtZSwgVHlwZXMpIFwK
KyMgZGVmaW5lIFRZUEVEX1RFU1RfQ0FTRShDYXNlTmFtZSwgVHlwZXMpIFwKICAgdHlwZWRlZiA6
OnRlc3Rpbmc6OmludGVybmFsOjpUeXBlTGlzdDwgVHlwZXMgPjo6dHlwZSBcCiAgICAgICBHVEVT
VF9UWVBFX1BBUkFNU18oQ2FzZU5hbWUpCiAKLSNkZWZpbmUgVFlQRURfVEVTVChDYXNlTmFtZSwg
VGVzdE5hbWUpIFwKKyMgZGVmaW5lIFRZUEVEX1RFU1QoQ2FzZU5hbWUsIFRlc3ROYW1lKSBcCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiBcCiAgIGNsYXNzIEdURVNUX1RF
U1RfQ0xBU1NfTkFNRV8oQ2FzZU5hbWUsIFRlc3ROYW1lKSBcCiAgICAgICA6IHB1YmxpYyBDYXNl
TmFtZTxndGVzdF9UeXBlUGFyYW1fPiB7IFwKQEAgLTE3NSwxMyArMTc1LDE0IEBAIElOU1RBTlRJ
QVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsKICAgICB0eXBlZGVm
IGd0ZXN0X1R5cGVQYXJhbV8gVHlwZVBhcmFtOyBcCiAgICAgdmlydHVhbCB2b2lkIFRlc3RCb2R5
KCk7IFwKICAgfTsgXAotICBib29sIGd0ZXN0XyMjQ2FzZU5hbWUjI18jI1Rlc3ROYW1lIyNfcmVn
aXN0ZXJlZF8gPSBcCisgIGJvb2wgZ3Rlc3RfIyNDYXNlTmFtZSMjXyMjVGVzdE5hbWUjI19yZWdp
c3RlcmVkXyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9IFwKICAgICAgIDo6dGVzdGluZzo6aW50
ZXJuYWw6OlR5cGVQYXJhbWV0ZXJpemVkVGVzdDwgXAogICAgICAgICAgIENhc2VOYW1lLCBcCiAg
ICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVtcGxhdGVTZWw8IFwKICAgICAgICAgICAg
ICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyhDYXNlTmFtZSwgVGVzdE5hbWUpPiwgXAogICAgICAg
ICAgIEdURVNUX1RZUEVfUEFSQU1TXyhDYXNlTmFtZSk+OjpSZWdpc3RlcihcCi0gICAgICAgICAg
ICAgICIiLCAjQ2FzZU5hbWUsICNUZXN0TmFtZSwgMCk7IFwKKyAgICAgICAgICAgICAgIiIsIDo6
dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihfX0ZJTEVfXywgX19MSU5FX18pLCBcCisg
ICAgICAgICAgICAgICNDYXNlTmFtZSwgI1Rlc3ROYW1lLCAwKTsgXAogICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgZ3Rlc3RfVHlwZVBhcmFtXz4gXAogICB2b2lkIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8o
Q2FzZU5hbWUsIFRlc3ROYW1lKTxndGVzdF9UeXBlUGFyYW1fPjo6VGVzdEJvZHkoKQogCkBAIC0x
OTYsMzEgKzE5NywzMSBAQCBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVz
dCwgTXlUeXBlcyk7CiAvLyBFeHBhbmRzIHRvIHRoZSBuYW1lc3BhY2UgbmFtZSB0aGF0IHRoZSB0
eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMgZm9yCiAvLyB0aGUgZ2l2ZW4gdHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3QgY2FzZSBhcmUgZGVmaW5lZCBpbi4gIFRoZSBleGFjdAogLy8gbmFtZSBvZiB0aGUg
bmFtZXNwYWNlIGlzIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotI2RlZmluZSBH
VEVTVF9DQVNFX05BTUVTUEFDRV8oVGVzdENhc2VOYW1lKSBcCisjIGRlZmluZSBHVEVTVF9DQVNF
X05BTUVTUEFDRV8oVGVzdENhc2VOYW1lKSBcCiAgIGd0ZXN0X2Nhc2VfIyNUZXN0Q2FzZU5hbWUj
I18KIAogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09E
RS4KIC8vCiAvLyBFeHBhbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSB1c2VkIHRvIHJl
bWVtYmVyIHRoZSBuYW1lcyBvZgogLy8gdGhlIGRlZmluZWQgdGVzdHMgaW4gdGhlIGdpdmVuIHRl
c3QgY2FzZS4KLSNkZWZpbmUgR1RFU1RfVFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKFRlc3RDYXNl
TmFtZSkgXAorIyBkZWZpbmUgR1RFU1RfVFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKFRlc3RDYXNl
TmFtZSkgXAogICBndGVzdF90eXBlZF90ZXN0X2Nhc2VfcF9zdGF0ZV8jI1Rlc3RDYXNlTmFtZSMj
XwogCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RF
IERJUkVDVExZLgogLy8KIC8vIEV4cGFuZHMgdG8gdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIHVz
ZWQgdG8gcmVtZW1iZXIgdGhlIG5hbWVzIG9mCiAvLyB0aGUgcmVnaXN0ZXJlZCB0ZXN0cyBpbiB0
aGUgZ2l2ZW4gdGVzdCBjYXNlLgotI2RlZmluZSBHVEVTVF9SRUdJU1RFUkVEX1RFU1RfTkFNRVNf
KFRlc3RDYXNlTmFtZSkgXAorIyBkZWZpbmUgR1RFU1RfUkVHSVNURVJFRF9URVNUX05BTUVTXyhU
ZXN0Q2FzZU5hbWUpIFwKICAgZ3Rlc3RfcmVnaXN0ZXJlZF90ZXN0X25hbWVzXyMjVGVzdENhc2VO
YW1lIyNfCiAKIC8vIFRoZSB2YXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgdHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3QgbWFjcm9zIGFyZQogLy8gc3RhdGljIGFzIHR5cGljYWxseSB0aGVzZSBtYWNyb3Mg
YXJlIHVzZWQgaW4gYSAuaCBmaWxlIHRoYXQgY2FuIGJlCiAvLyAjaW5jbHVkZWQgaW4gbXVsdGlw
bGUgdHJhbnNsYXRpb24gdW5pdHMgbGlua2VkIHRvZ2V0aGVyLgotI2RlZmluZSBUWVBFRF9URVNU
X0NBU0VfUChDYXNlTmFtZSkgXAorIyBkZWZpbmUgVFlQRURfVEVTVF9DQVNFX1AoQ2FzZU5hbWUp
IFwKICAgc3RhdGljIDo6dGVzdGluZzo6aW50ZXJuYWw6OlR5cGVkVGVzdENhc2VQU3RhdGUgXAog
ICAgICAgR1RFU1RfVFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKENhc2VOYW1lKQogCi0jZGVmaW5l
IFRZUEVEX1RFU1RfUChDYXNlTmFtZSwgVGVzdE5hbWUpIFwKKyMgZGVmaW5lIFRZUEVEX1RFU1Rf
UChDYXNlTmFtZSwgVGVzdE5hbWUpIFwKICAgbmFtZXNwYWNlIEdURVNUX0NBU0VfTkFNRVNQQUNF
XyhDYXNlTmFtZSkgeyBcCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiBc
CiAgIGNsYXNzIFRlc3ROYW1lIDogcHVibGljIENhc2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IHsg
XApAQCAtMjI5LDE0ICsyMzAsMTQgQEAgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXks
IEZvb1Rlc3QsIE15VHlwZXMpOwogICAgIHR5cGVkZWYgZ3Rlc3RfVHlwZVBhcmFtXyBUeXBlUGFy
YW07IFwKICAgICB2aXJ0dWFsIHZvaWQgVGVzdEJvZHkoKTsgXAogICB9OyBcCi0gIHN0YXRpYyBi
b29sIGd0ZXN0XyMjVGVzdE5hbWUjI19kZWZpbmVkXyA9IFwKKyAgc3RhdGljIGJvb2wgZ3Rlc3Rf
IyNUZXN0TmFtZSMjX2RlZmluZWRfIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gXAogICAgICAg
R1RFU1RfVFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKENhc2VOYW1lKS5BZGRUZXN0TmFtZShcCiAg
ICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCAjQ2FzZU5hbWUsICNUZXN0TmFtZSk7IFwKICAg
fSBcCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiBcCiAgIHZvaWQgR1RF
U1RfQ0FTRV9OQU1FU1BBQ0VfKENhc2VOYW1lKTo6VGVzdE5hbWU8Z3Rlc3RfVHlwZVBhcmFtXz46
OlRlc3RCb2R5KCkKIAotI2RlZmluZSBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChDYXNlTmFt
ZSwgLi4uKSBcCisjIGRlZmluZSBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChDYXNlTmFtZSwg
Li4uKSBcCiAgIG5hbWVzcGFjZSBHVEVTVF9DQVNFX05BTUVTUEFDRV8oQ2FzZU5hbWUpIHsgXAog
ICB0eXBlZGVmIDo6dGVzdGluZzo6aW50ZXJuYWw6OlRlbXBsYXRlczxfX1ZBX0FSR1NfXz46OnR5
cGUgZ3Rlc3RfQWxsVGVzdHNfOyBcCiAgIH0gXApAQCAtMjQ3LDEyICsyNDgsMTUgQEAgSU5TVEFO
VElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMpOwogLy8gVGhlICdU
eXBlcycgdGVtcGxhdGUgYXJndW1lbnQgYmVsb3cgbXVzdCBoYXZlIHNwYWNlcyBhcm91bmQgaXQK
IC8vIHNpbmNlIHNvbWUgY29tcGlsZXJzIG1heSBjaG9rZSBvbiAnPj4nIHdoZW4gcGFzc2luZyBh
IHRlbXBsYXRlCiAvLyBpbnN0YW5jZSAoZS5nLiBUeXBlczxpbnQ+KQotI2RlZmluZSBJTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChQcmVmaXgsIENhc2VOYW1lLCBUeXBlcykgXAotICBib29s
IGd0ZXN0XyMjUHJlZml4IyNfIyNDYXNlTmFtZSA9IFwKKyMgZGVmaW5lIElOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QKFByZWZpeCwgQ2FzZU5hbWUsIFR5cGVzKSBcCisgIGJvb2wgZ3Rlc3Rf
IyNQcmVmaXgjI18jI0Nhc2VOYW1lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gXAogICAgICAg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTxDYXNlTmFtZSwg
XAogICAgICAgICAgIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhDYXNlTmFtZSk6Omd0ZXN0X0FsbFRl
c3RzXywgXAogICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlR5cGVMaXN0PCBUeXBlcyA+
Ojp0eXBlPjo6UmVnaXN0ZXIoXAotICAgICAgICAgICAgICAjUHJlZml4LCAjQ2FzZU5hbWUsIEdU
RVNUX1JFR0lTVEVSRURfVEVTVF9OQU1FU18oQ2FzZU5hbWUpKQorICAgICAgICAgICAgICAjUHJl
Zml4LCBcCisgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihf
X0ZJTEVfXywgX19MSU5FX18pLCBcCisgICAgICAgICAgICAgICZHVEVTVF9UWVBFRF9URVNUX0NB
U0VfUF9TVEFURV8oQ2FzZU5hbWUpLCBcCisgICAgICAgICAgICAgICNDYXNlTmFtZSwgR1RFU1Rf
UkVHSVNURVJFRF9URVNUX05BTUVTXyhDYXNlTmFtZSkpCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFT
X1RZUEVEX1RFU1RfUAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2d0ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2d0ZXN0LmgKaW5kZXggOTIxZmFkMTFmY2M4ZjI0YzBkZDIyMzk0YTQ4NjdhYjI0YjZlYTBjMy4u
Zjg0NmM1YmQ2Njk2NDk3N2ZhOTFlZmY5MDU5N2RkZDBiZGNkY2U4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaApAQCAtNTIsMzAgKzUyLDMyIEBA
CiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KIAogI2luY2x1ZGUgPGxpbWl0
cz4KKyNpbmNsdWRlIDxvc3RyZWFtPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgPGd0
ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwv
Z3Rlc3Qtc3RyaW5nLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oPgotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1wYXJh
bS10ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3RfcHJvZC5oPgotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0LXRlc3QtcGFydC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaD4K
KyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oIgorI2luY2x1ZGUgImd0
ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LWRlYXRo
LXRlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1tZXNzYWdlLmgiCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QtcGFyYW0tdGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXByaW50ZXJzLmgi
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3RfcHJvZC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXRl
c3QtcGFydC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaCIKIAogLy8gRGVw
ZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSwgZGlmZmVyZW50IHN0cmluZyBjbGFzc2VzIGFyZSBhdmFp
bGFibGUuCiAvLyBPbiBMaW51eCwgaW4gYWRkaXRpb24gdG8gOjpzdGQ6OnN0cmluZywgR29vZ2xl
IGFsc28gbWFrZXMgdXNlIG9mCiAvLyBjbGFzcyA6OnN0cmluZywgd2hpY2ggaGFzIHRoZSBzYW1l
IGludGVyZmFjZSBhcyA6OnN0ZDo6c3RyaW5nLCBidXQKIC8vIGhhcyBhIGRpZmZlcmVudCBpbXBs
ZW1lbnRhdGlvbi4KIC8vCi0vLyBUaGUgdXNlciBjYW4gZGVmaW5lIEdURVNUX0hBU19HTE9CQUxf
U1RSSU5HIHRvIDEgdG8gaW5kaWNhdGUgdGhhdAorLy8gWW91IGNhbiBkZWZpbmUgR1RFU1RfSEFT
X0dMT0JBTF9TVFJJTkcgdG8gMSB0byBpbmRpY2F0ZSB0aGF0CiAvLyA6OnN0cmluZyBpcyBhdmFp
bGFibGUgQU5EIGlzIGEgZGlzdGluY3QgdHlwZSB0byA6OnN0ZDo6c3RyaW5nLCBvcgogLy8gZGVm
aW5lIGl0IHRvIDAgdG8gaW5kaWNhdGUgb3RoZXJ3aXNlLgogLy8KLS8vIElmIHRoZSB1c2VyJ3Mg
OjpzdGQ6OnN0cmluZyBhbmQgOjpzdHJpbmcgYXJlIHRoZSBzYW1lIGNsYXNzIGR1ZSB0bwotLy8g
YWxpYXNpbmcsIGhlIHNob3VsZCBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgdG8gMC4K
Ky8vIElmIDo6c3RkOjpzdHJpbmcgYW5kIDo6c3RyaW5nIGFyZSB0aGUgc2FtZSBjbGFzcyBvbiB5
b3VyIHBsYXRmb3JtCisvLyBkdWUgdG8gYWxpYXNpbmcsIHlvdSBzaG91bGQgZGVmaW5lIEdURVNU
X0hBU19HTE9CQUxfU1RSSU5HIHRvIDAuCiAvLwotLy8gSWYgdGhlIHVzZXIgZG9lc24ndCBkZWZp
bmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcsIGl0IGlzIGRlZmluZWQKKy8vIElmIHlvdSBkbyBu
b3QgZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HLCBpdCBpcyBkZWZpbmVkCiAvLyBoZXVy
aXN0aWNhbGx5LgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CkBAIC0xMzYsNiArMTM4LDExIEBAIEdU
RVNUX0RFQ0xBUkVfaW50MzJfKHN0YWNrX3RyYWNlX2RlcHRoKTsKIC8vIG5vbi16ZXJvIGNvZGUg
b3RoZXJ3aXNlLgogR1RFU1RfREVDTEFSRV9ib29sXyh0aHJvd19vbl9mYWlsdXJlKTsKIAorLy8g
V2hlbiB0aGlzIGZsYWcgaXMgc2V0IHdpdGggYSAiaG9zdDpwb3J0IiBzdHJpbmcsIG9uIHN1cHBv
cnRlZAorLy8gcGxhdGZvcm1zIHRlc3QgcmVzdWx0cyBhcmUgc3RyZWFtZWQgdG8gdGhlIHNwZWNp
ZmllZCBwb3J0IG9uCisvLyB0aGUgc3BlY2lmaWVkIGhvc3QgbWFjaGluZS4KK0dURVNUX0RFQ0xB
UkVfc3RyaW5nXyhzdHJlYW1fcmVzdWx0X3RvKTsKKwogLy8gVGhlIHVwcGVyIGxpbWl0IGZvciB2
YWxpZCBzdGFjayB0cmFjZSBkZXB0aHMuCiBjb25zdCBpbnQga01heFN0YWNrVHJhY2VEZXB0aCA9
IDEwMDsKIApAQCAtMTQ3LDMxICsxNTQsMjYgQEAgY2xhc3MgRXhlY0RlYXRoVGVzdDsKIGNsYXNz
IE5vRXhlY0RlYXRoVGVzdDsKIGNsYXNzIEZpbmFsU3VjY2Vzc0NoZWNrZXI7CiBjbGFzcyBHVGVz
dEZsYWdTYXZlcjsKLWNsYXNzIFRlc3RJbmZvSW1wbDsKK2NsYXNzIFN0cmVhbWluZ0xpc3RlbmVy
VGVzdDsKIGNsYXNzIFRlc3RSZXN1bHRBY2Nlc3NvcjsKIGNsYXNzIFRlc3RFdmVudExpc3RlbmVy
c0FjY2Vzc29yOwogY2xhc3MgVGVzdEV2ZW50UmVwZWF0ZXI7CitjbGFzcyBVbml0VGVzdFJlY29y
ZFByb3BlcnR5VGVzdEhlbHBlcjsKIGNsYXNzIFdpbmRvd3NEZWF0aFRlc3Q7CiBjbGFzcyBVbml0
VGVzdEltcGwqIEdldFVuaXRUZXN0SW1wbCgpOwogdm9pZCBSZXBvcnRGYWlsdXJlSW5Vbmtub3du
TG9jYXRpb24oVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotY2xhc3MgUHJl
dHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOwotY2xhc3MgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVy
OwotCi0vLyBDb252ZXJ0cyBhIHN0cmVhbWFibGUgdmFsdWUgdG8gYSBTdHJpbmcuICBBIE5VTEwg
cG9pbnRlciBpcwotLy8gY29udmVydGVkIHRvICIobnVsbCkiLiAgV2hlbiB0aGUgaW5wdXQgdmFs
dWUgaXMgYSA6OnN0cmluZywKLS8vIDo6c3RkOjpzdHJpbmcsIDo6d3N0cmluZywgb3IgOjpzdGQ6
OndzdHJpbmcgb2JqZWN0LCBlYWNoIE5VTAotLy8gY2hhcmFjdGVyIGluIGl0IGlzIHJlcGxhY2Vk
IHdpdGggIlxcMCIuCi0vLyBEZWNsYXJlZCBpbiBndGVzdC1pbnRlcm5hbC5oIGJ1dCBkZWZpbmVk
IGhlcmUsIHNvIHRoYXQgaXQgaGFzIGFjY2VzcwotLy8gdG8gdGhlIGRlZmluaXRpb24gb2YgdGhl
IE1lc3NhZ2UgY2xhc3MsIHJlcXVpcmVkIGJ5IHRoZSBBUk0KLS8vIGNvbXBpbGVyLgotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1TdHJpbmcgU3RyZWFtYWJsZVRvU3RyaW5nKGNvbnN0IFQmIHN0cmVh
bWFibGUpIHsKLSAgcmV0dXJuIChNZXNzYWdlKCkgPDwgc3RyZWFtYWJsZSkuR2V0U3RyaW5nKCk7
Ci19CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbWVzc2FnZSk7CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogCisvLyBUaGUgZnJpZW5k
IHJlbGF0aW9uc2hpcCBvZiBzb21lIG9mIHRoZXNlIGNsYXNzZXMgaXMgY3ljbGljLgorLy8gSWYg
d2UgZG9uJ3QgZm9yd2FyZCBkZWNsYXJlIHRoZW0gdGhlIGNvbXBpbGVyIG1pZ2h0IGNvbmZ1c2Ug
dGhlIGNsYXNzZXMKKy8vIGluIGZyaWVuZHNoaXAgY2xhdXNlcyB3aXRoIHNhbWUgbmFtZWQgY2xh
c3NlcyBvbiB0aGUgc2NvcGUuCitjbGFzcyBUZXN0OworY2xhc3MgVGVzdENhc2U7CitjbGFzcyBU
ZXN0SW5mbzsKK2NsYXNzIFVuaXRUZXN0OworCiAvLyBBIGNsYXNzIGZvciBpbmRpY2F0aW5nIHdo
ZXRoZXIgYW4gYXNzZXJ0aW9uIHdhcyBzdWNjZXNzZnVsLiAgV2hlbgogLy8gdGhlIGFzc2VydGlv
biB3YXNuJ3Qgc3VjY2Vzc2Z1bCwgdGhlIEFzc2VydGlvblJlc3VsdCBvYmplY3QKIC8vIHJlbWVt
YmVycyBhIG5vbi1lbXB0eSBtZXNzYWdlIHRoYXQgZGVzY3JpYmVzIGhvdyBpdCBmYWlsZWQuCkBA
IC0yNTYsOCArMjU4LDMxIEBAIGNsYXNzIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IHsKICAg
Ly8gQ29weSBjb25zdHJ1Y3Rvci4KICAgLy8gVXNlZCBpbiBFWFBFQ1RfVFJVRS9GQUxTRShhc3Nl
cnRpb25fcmVzdWx0KS4KICAgQXNzZXJ0aW9uUmVzdWx0KGNvbnN0IEFzc2VydGlvblJlc3VsdCYg
b3RoZXIpOworCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQ4MDAgLyogZm9y
Y2luZyB2YWx1ZSB0byBib29sICovKQorCiAgIC8vIFVzZWQgaW4gdGhlIEVYUEVDVF9UUlVFL0ZB
TFNFKGJvb2xfZXhwcmVzc2lvbikuCi0gIGV4cGxpY2l0IEFzc2VydGlvblJlc3VsdChib29sIHN1
Y2Nlc3MpIDogc3VjY2Vzc18oc3VjY2Vzcykge30KKyAgLy8KKyAgLy8gVCBtdXN0IGJlIGNvbnRl
eHR1YWxseSBjb252ZXJ0aWJsZSB0byBib29sLgorICAvLworICAvLyBUaGUgc2Vjb25kIHBhcmFt
ZXRlciBwcmV2ZW50cyB0aGlzIG92ZXJsb2FkIGZyb20gYmVpbmcgY29uc2lkZXJlZCBpZgorICAv
LyB0aGUgYXJndW1lbnQgaXMgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0byBBc3NlcnRpb25SZXN1
bHQuIEluIHRoYXQgY2FzZQorICAvLyB3ZSB3YW50IEFzc2VydGlvblJlc3VsdCdzIGNvcHkgY29u
c3RydWN0b3IgdG8gYmUgdXNlZC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIGV4cGxpY2l0
IEFzc2VydGlvblJlc3VsdCgKKyAgICAgIGNvbnN0IFQmIHN1Y2Nlc3MsCisgICAgICB0eXBlbmFt
ZSBpbnRlcm5hbDo6RW5hYmxlSWY8CisgICAgICAgICAgIWludGVybmFsOjpJbXBsaWNpdGx5Q29u
dmVydGlibGU8VCwgQXNzZXJ0aW9uUmVzdWx0Pjo6dmFsdWU+Ojp0eXBlKgorICAgICAgICAgIC8q
ZW5hYmxlciovID0gTlVMTCkKKyAgICAgIDogc3VjY2Vzc18oc3VjY2Vzcykge30KKworICBHVEVT
VF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKworICAvLyBBc3NpZ25tZW50IG9wZXJhdG9y
LgorICBBc3NlcnRpb25SZXN1bHQmIG9wZXJhdG9yPShBc3NlcnRpb25SZXN1bHQgb3RoZXIpIHsK
KyAgICBzd2FwKG90aGVyKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KIAogICAvLyBSZXR1cm5z
IHRydWUgaWZmIHRoZSBhc3NlcnRpb24gc3VjY2VlZGVkLgogICBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gc3VjY2Vzc187IH0gIC8vIE5PTElOVApAQCAtMjcwLDIwICsyOTUsMzYgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgewogICAvLyBhc3NlcnRpb24ncyBleHBl
Y3RhdGlvbikuIFdoZW4gbm90aGluZyBoYXMgYmVlbiBzdHJlYW1lZCBpbnRvIHRoZQogICAvLyBv
YmplY3QsIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLgogICBjb25zdCBjaGFyKiBtZXNzYWdlKCkg
Y29uc3QgewotICAgIHJldHVybiBtZXNzYWdlXy5nZXQoKSAhPSBOVUxMICYmIG1lc3NhZ2VfLT5j
X3N0cigpICE9IE5VTEwgPwotICAgICAgICAgICBtZXNzYWdlXy0+Y19zdHIoKSA6ICIiOworICAg
IHJldHVybiBtZXNzYWdlXy5nZXQoKSAhPSBOVUxMID8gIG1lc3NhZ2VfLT5jX3N0cigpIDogIiI7
CiAgIH0KICAgLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogUmVtb3ZlIHRoaXMgYWZ0ZXIgbWFr
aW5nIHN1cmUgbm8gY2xpZW50cyB1c2UgaXQuCiAgIC8vIERlcHJlY2F0ZWQ7IHBsZWFzZSB1c2Ug
bWVzc2FnZSgpIGluc3RlYWQuCiAgIGNvbnN0IGNoYXIqIGZhaWx1cmVfbWVzc2FnZSgpIGNvbnN0
IHsgcmV0dXJuIG1lc3NhZ2UoKTsgfQogCiAgIC8vIFN0cmVhbXMgYSBjdXN0b20gZmFpbHVyZSBt
ZXNzYWdlIGludG8gdGhpcyBvYmplY3QuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBBc3NlcnRp
b25SZXN1bHQmIG9wZXJhdG9yPDwoY29uc3QgVCYgdmFsdWUpOworICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gQXNzZXJ0aW9uUmVzdWx0JiBvcGVyYXRvcjw8KGNvbnN0IFQmIHZhbHVlKSB7CisgICAg
QXBwZW5kTWVzc2FnZShNZXNzYWdlKCkgPDwgdmFsdWUpOworICAgIHJldHVybiAqdGhpczsKKyAg
fQorCisgIC8vIEFsbG93cyBzdHJlYW1pbmcgYmFzaWMgb3V0cHV0IG1hbmlwdWxhdG9ycyBzdWNo
IGFzIGVuZGwgb3IgZmx1c2ggaW50bworICAvLyB0aGlzIG9iamVjdC4KKyAgQXNzZXJ0aW9uUmVz
dWx0JiBvcGVyYXRvcjw8KAorICAgICAgOjpzdGQ6Om9zdHJlYW0mICgqYmFzaWNfbWFuaXB1bGF0
b3IpKDo6c3RkOjpvc3RyZWFtJiBzdHJlYW0pKSB7CisgICAgQXBwZW5kTWVzc2FnZShNZXNzYWdl
KCkgPDwgYmFzaWNfbWFuaXB1bGF0b3IpOworICAgIHJldHVybiAqdGhpczsKKyAgfQogCiAgcHJp
dmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSB3ZSB3YW50IEFzc2VydGlvblJlc3VsdCB0
byBiZQotICAvLyBjb3B5LWNvbnN0cnVjdGlibGUgYnV0IG5vdCBhc3NpZ25hYmxlLgotICB2b2lk
IG9wZXJhdG9yPShjb25zdCBBc3NlcnRpb25SZXN1bHQmIG90aGVyKTsKKyAgLy8gQXBwZW5kcyB0
aGUgY29udGVudHMgb2YgbWVzc2FnZSB0byBtZXNzYWdlXy4KKyAgdm9pZCBBcHBlbmRNZXNzYWdl
KGNvbnN0IE1lc3NhZ2UmIGFfbWVzc2FnZSkgeworICAgIGlmIChtZXNzYWdlXy5nZXQoKSA9PSBO
VUxMKQorICAgICAgbWVzc2FnZV8ucmVzZXQobmV3IDo6c3RkOjpzdHJpbmcpOworICAgIG1lc3Nh
Z2VfLT5hcHBlbmQoYV9tZXNzYWdlLkdldFN0cmluZygpLmNfc3RyKCkpOworICB9CisKKyAgLy8g
U3dhcCB0aGUgY29udGVudHMgb2YgdGhpcyBBc3NlcnRpb25SZXN1bHQgd2l0aCBvdGhlci4KKyAg
dm9pZCBzd2FwKEFzc2VydGlvblJlc3VsdCYgb3RoZXIpOwogCiAgIC8vIFN0b3JlcyByZXN1bHQg
b2YgdGhlIGFzc2VydGlvbiBwcmVkaWNhdGUuCiAgIGJvb2wgc3VjY2Vzc187CkBAIC0yOTEsMTkg
KzMzMiw4IEBAIGNsYXNzIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IHsKICAgLy8gY29uc3Ry
dWN0IGlzIG5vdCBzYXRpc2ZpZWQgd2l0aCB0aGUgcHJlZGljYXRlJ3Mgb3V0Y29tZS4KICAgLy8g
UmVmZXJlbmNlZCB2aWEgYSBwb2ludGVyIHRvIGF2b2lkIHRha2luZyB0b28gbXVjaCBzdGFjayBm
cmFtZSBzcGFjZQogICAvLyB3aXRoIHRlc3QgYXNzZXJ0aW9ucy4KLSAgaW50ZXJuYWw6OnNjb3Bl
ZF9wdHI8aW50ZXJuYWw6OlN0cmluZz4gbWVzc2FnZV87Ci19OyAgLy8gY2xhc3MgQXNzZXJ0aW9u
UmVzdWx0Ci0KLS8vIFN0cmVhbXMgYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlIGludG8gdGhpcyBv
YmplY3QuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFzc2VydGlvblJlc3VsdCYgQXNzZXJ0aW9u
UmVzdWx0OjpvcGVyYXRvcjw8KGNvbnN0IFQmIHZhbHVlKSB7Ci0gIE1lc3NhZ2UgbXNnOwotICBp
ZiAobWVzc2FnZV8uZ2V0KCkgIT0gTlVMTCkKLSAgICBtc2cgPDwgKm1lc3NhZ2VfOwotICBtc2cg
PDwgdmFsdWU7Ci0gIG1lc3NhZ2VfLnJlc2V0KG5ldyBpbnRlcm5hbDo6U3RyaW5nKG1zZy5HZXRT
dHJpbmcoKSkpOwotICByZXR1cm4gKnRoaXM7Ci19CisgIGludGVybmFsOjpzY29wZWRfcHRyPCA6
OnN0ZDo6c3RyaW5nPiBtZXNzYWdlXzsKK307CiAKIC8vIE1ha2VzIGEgc3VjY2Vzc2Z1bCBhc3Nl
cnRpb24gcmVzdWx0LgogR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uU3VjY2Vz
cygpOwpAQCAtMzI5LDggKzM1OSw4IEBAIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IEFzc2Vy
dGlvbkZhaWx1cmUoY29uc3QgTWVzc2FnZSYgbXNnKTsKIC8vCiAvLyAgIGNsYXNzIEZvb1Rlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAvLyAgICBwcm90ZWN0ZWQ6Ci0vLyAgICAgdmlydHVh
bCB2b2lkIFNldFVwKCkgeyAuLi4gfQotLy8gICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsg
Li4uIH0KKy8vICAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUgeyAuLi4gfQorLy8gICAgIHZvaWQg
VGVhckRvd24oKSBvdmVycmlkZSB7IC4uLiB9CiAvLyAgICAgLi4uCiAvLyAgIH07CiAvLwpAQCAt
MzQwLDcgKzM3MCw3IEBAIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvbkZhaWx1
cmUoY29uc3QgTWVzc2FnZSYgbXNnKTsKIC8vIFRlc3QgaXMgbm90IGNvcHlhYmxlLgogY2xhc3Mg
R1RFU1RfQVBJXyBUZXN0IHsKICBwdWJsaWM6Ci0gIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VGVz
dEluZm9JbXBsOworICBmcmllbmQgY2xhc3MgVGVzdEluZm87CiAKICAgLy8gRGVmaW5lcyB0eXBl
cyBmb3IgcG9pbnRlcnMgdG8gZnVuY3Rpb25zIHRoYXQgc2V0IHVwIGFuZCB0ZWFyIGRvd24KICAg
Ly8gYSB0ZXN0IGNhc2UuCkBAIC0zNzYsMjAgKzQwNiwyMSBAQCBjbGFzcyBHVEVTVF9BUElfIFRl
c3QgewogICAvLyBub24tZmF0YWwpIGZhaWx1cmUuCiAgIHN0YXRpYyBib29sIEhhc0ZhaWx1cmUo
KSB7IHJldHVybiBIYXNGYXRhbEZhaWx1cmUoKSB8fCBIYXNOb25mYXRhbEZhaWx1cmUoKTsgfQog
Ci0gIC8vIExvZ3MgYSBwcm9wZXJ0eSBmb3IgdGhlIGN1cnJlbnQgdGVzdC4gIE9ubHkgdGhlIGxh
c3QgdmFsdWUgZm9yIGEgZ2l2ZW4KLSAgLy8ga2V5IGlzIHJlbWVtYmVyZWQuCi0gIC8vIFRoZXNl
IGFyZSBwdWJsaWMgc3RhdGljIHNvIHRoZXkgY2FuIGJlIGNhbGxlZCBmcm9tIHV0aWxpdHkgZnVu
Y3Rpb25zCi0gIC8vIHRoYXQgYXJlIG5vdCBtZW1iZXJzIG9mIHRoZSB0ZXN0IGZpeHR1cmUuCi0g
IC8vIFRoZSBhcmd1bWVudHMgYXJlIGNvbnN0IGNoYXIqIGluc3RlYWQgc3RyaW5ncywgYXMgR29v
Z2xlIFRlc3QgaXMgdXNlZAotICAvLyBvbiBwbGF0Zm9ybXMgd2hlcmUgc3RyaW5nIGRvZXNuJ3Qg
Y29tcGlsZS4KLSAgLy8KLSAgLy8gTm90ZSB0aGF0IGEgZHJpdmluZyBjb25zaWRlcmF0aW9uIGZv
ciB0aGVzZSBSZWNvcmRQcm9wZXJ0eSBtZXRob2RzCi0gIC8vIHdhcyB0byBwcm9kdWNlIHhtbCBv
dXRwdXQgc3VpdGVkIHRvIHRoZSBHcmVlbnNwYW4gY2hhcnRpbmcgdXRpbGl0eSwKLSAgLy8gd2hp
Y2ggYXQgcHJlc2VudCB3aWxsIG9ubHkgY2hhcnQgdmFsdWVzIHRoYXQgZml0IGluIGEgMzItYml0
IGludC4gSXQKLSAgLy8gaXMgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0eSB0byByZXN0cmljdCB0
aGVpciB2YWx1ZXMgdG8gMzItYml0IGludHMKLSAgLy8gaWYgdGhleSBpbnRlbmQgdGhlbSB0byBi
ZSB1c2VkIHdpdGggR3JlZW5zcGFuLgotICBzdGF0aWMgdm9pZCBSZWNvcmRQcm9wZXJ0eShjb25z
dCBjaGFyKiBrZXksIGNvbnN0IGNoYXIqIHZhbHVlKTsKLSAgc3RhdGljIHZvaWQgUmVjb3JkUHJv
cGVydHkoY29uc3QgY2hhcioga2V5LCBpbnQgdmFsdWUpOworICAvLyBMb2dzIGEgcHJvcGVydHkg
Zm9yIHRoZSBjdXJyZW50IHRlc3QsIHRlc3QgY2FzZSwgb3IgZm9yIHRoZSBlbnRpcmUKKyAgLy8g
aW52b2NhdGlvbiBvZiB0aGUgdGVzdCBwcm9ncmFtIHdoZW4gdXNlZCBvdXRzaWRlIG9mIHRoZSBj
b250ZXh0IG9mIGEKKyAgLy8gdGVzdCBjYXNlLiAgT25seSB0aGUgbGFzdCB2YWx1ZSBmb3IgYSBn
aXZlbiBrZXkgaXMgcmVtZW1iZXJlZC4gIFRoZXNlCisgIC8vIGFyZSBwdWJsaWMgc3RhdGljIHNv
IHRoZXkgY2FuIGJlIGNhbGxlZCBmcm9tIHV0aWxpdHkgZnVuY3Rpb25zIHRoYXQgYXJlCisgIC8v
IG5vdCBtZW1iZXJzIG9mIHRoZSB0ZXN0IGZpeHR1cmUuICBDYWxscyB0byBSZWNvcmRQcm9wZXJ0
eSBtYWRlIGR1cmluZworICAvLyBsaWZlc3BhbiBvZiB0aGUgdGVzdCAoZnJvbSB0aGUgbW9tZW50
IGl0cyBjb25zdHJ1Y3RvciBzdGFydHMgdG8gdGhlCisgIC8vIG1vbWVudCBpdHMgZGVzdHJ1Y3Rv
ciBmaW5pc2hlcykgd2lsbCBiZSBvdXRwdXQgaW4gWE1MIGFzIGF0dHJpYnV0ZXMgb2YKKyAgLy8g
dGhlIDx0ZXN0Y2FzZT4gZWxlbWVudC4gIFByb3BlcnRpZXMgcmVjb3JkZWQgZnJvbSBmaXh0dXJl
J3MKKyAgLy8gU2V0VXBUZXN0Q2FzZSBvciBUZWFyRG93blRlc3RDYXNlIGFyZSBsb2dnZWQgYXMg
YXR0cmlidXRlcyBvZiB0aGUKKyAgLy8gY29ycmVzcG9uZGluZyA8dGVzdHN1aXRlPiBlbGVtZW50
LiAgQ2FsbHMgdG8gUmVjb3JkUHJvcGVydHkgbWFkZSBpbiB0aGUKKyAgLy8gZ2xvYmFsIGNvbnRl
eHQgKGJlZm9yZSBvciBhZnRlciBpbnZvY2F0aW9uIG9mIFJVTl9BTExfVEVTVFMgYW5kIGZyb20K
KyAgLy8gU2V0VXAvVGVhckRvd24gbWV0aG9kIG9mIEVudmlyb25tZW50IG9iamVjdHMgcmVnaXN0
ZXJlZCB3aXRoIEdvb2dsZQorICAvLyBUZXN0KSB3aWxsIGJlIG91dHB1dCBhcyBhdHRyaWJ1dGVz
IG9mIHRoZSA8dGVzdHN1aXRlcz4gZWxlbWVudC4KKyAgc3RhdGljIHZvaWQgUmVjb3JkUHJvcGVy
dHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKTsKKyAg
c3RhdGljIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwgaW50IHZh
bHVlKTsKIAogIHByb3RlY3RlZDoKICAgLy8gQ3JlYXRlcyBhIFRlc3Qgb2JqZWN0LgpAQCAtNDE3
LDIwICs0NDgsMjMgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0IHsKICAgLy8gU2V0cyB1cCwgZXhl
Y3V0ZXMsIGFuZCB0ZWFycyBkb3duIHRoZSB0ZXN0LgogICB2b2lkIFJ1bigpOwogCi0gIC8vIFVz
ZXMgYSBHVGVzdEZsYWdTYXZlciB0byBzYXZlIGFuZCByZXN0b3JlIGFsbCBHb29nbGUgVGVzdCBm
bGFncy4KLSAgY29uc3QgaW50ZXJuYWw6OkdUZXN0RmxhZ1NhdmVyKiBjb25zdCBndGVzdF9mbGFn
X3NhdmVyXzsKKyAgLy8gRGVsZXRlcyBzZWxmLiAgV2UgZGVsaWJlcmF0ZWx5IHBpY2sgYW4gdW51
c3VhbCBuYW1lIGZvciB0aGlzCisgIC8vIGludGVybmFsIG1ldGhvZCB0byBhdm9pZCBjbGFzaGlu
ZyB3aXRoIG5hbWVzIHVzZWQgaW4gdXNlciBURVNUcy4KKyAgdm9pZCBEZWxldGVTZWxmXygpIHsg
ZGVsZXRlIHRoaXM7IH0KKworICBjb25zdCBpbnRlcm5hbDo6c2NvcGVkX3B0cjwgR1RFU1RfRkxB
R19TQVZFUl8gPiBndGVzdF9mbGFnX3NhdmVyXzsKIAotICAvLyBPZnRlbiBhIHVzZXIgbWlzLXNw
ZWxscyBTZXRVcCgpIGFzIFNldHVwKCkgYW5kIHNwZW5kcyBhIGxvbmcgdGltZQorICAvLyBPZnRl
biBhIHVzZXIgbWlzc3BlbGxzIFNldFVwKCkgYXMgU2V0dXAoKSBhbmQgc3BlbmRzIGEgbG9uZyB0
aW1lCiAgIC8vIHdvbmRlcmluZyB3aHkgaXQgaXMgbmV2ZXIgY2FsbGVkIGJ5IEdvb2dsZSBUZXN0
LiAgVGhlIGRlY2xhcmF0aW9uIG9mCiAgIC8vIHRoZSBmb2xsb3dpbmcgbWV0aG9kIGlzIHNvbGVs
eSBmb3IgY2F0Y2hpbmcgc3VjaCBhbiBlcnJvciBhdAogICAvLyBjb21waWxlIHRpbWU6CiAgIC8v
CiAgIC8vICAgLSBUaGUgcmV0dXJuIHR5cGUgaXMgZGVsaWJlcmF0ZWx5IGNob3NlbiB0byBiZSBu
b3Qgdm9pZCwgc28gaXQKLSAgLy8gICB3aWxsIGJlIGEgY29uZmxpY3QgaWYgYSB1c2VyIGRlY2xh
cmVzIHZvaWQgU2V0dXAoKSBpbiBoaXMgdGVzdAotICAvLyAgIGZpeHR1cmUuCisgIC8vICAgd2ls
bCBiZSBhIGNvbmZsaWN0IGlmIHZvaWQgU2V0dXAoKSBpcyBkZWNsYXJlZCBpbiB0aGUgdXNlcidz
CisgIC8vICAgdGVzdCBmaXh0dXJlLgogICAvLwogICAvLyAgIC0gVGhpcyBtZXRob2QgaXMgcHJp
dmF0ZSwgc28gaXQgd2lsbCBiZSBhbm90aGVyIGNvbXBpbGVyIGVycm9yCi0gIC8vICAgaWYgYSB1
c2VyIGNhbGxzIGl0IGZyb20gaGlzIHRlc3QgZml4dHVyZS4KKyAgLy8gICBpZiB0aGUgbWV0aG9k
IGlzIGNhbGxlZCBmcm9tIHRoZSB1c2VyJ3MgdGVzdCBmaXh0dXJlLgogICAvLwogICAvLyBETyBO
T1QgT1ZFUlJJREUgVEhJUyBGVU5DVElPTi4KICAgLy8KQEAgLTQ1NCw3ICs0ODgsNyBAQCBjbGFz
cyBUZXN0UHJvcGVydHkgewogICAvLyBDJ3Rvci4gIFRlc3RQcm9wZXJ0eSBkb2VzIE5PVCBoYXZl
IGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KICAgLy8gQWx3YXlzIHVzZSB0aGlzIGNvbnN0cnVjdG9y
ICh3aXRoIHBhcmFtZXRlcnMpIHRvIGNyZWF0ZSBhCiAgIC8vIFRlc3RQcm9wZXJ0eSBvYmplY3Qu
Ci0gIFRlc3RQcm9wZXJ0eShjb25zdCBjaGFyKiBhX2tleSwgY29uc3QgY2hhciogYV92YWx1ZSkg
OgorICBUZXN0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGFfa2V5LCBjb25zdCBzdGQ6OnN0
cmluZyYgYV92YWx1ZSkgOgogICAgIGtleV8oYV9rZXkpLCB2YWx1ZV8oYV92YWx1ZSkgewogICB9
CiAKQEAgLTQ2OSwxNSArNTAzLDE1IEBAIGNsYXNzIFRlc3RQcm9wZXJ0eSB7CiAgIH0KIAogICAv
LyBTZXRzIGEgbmV3IHZhbHVlLCBvdmVycmlkaW5nIHRoZSBvbmUgc3VwcGxpZWQgaW4gdGhlIGNv
bnN0cnVjdG9yLgotICB2b2lkIFNldFZhbHVlKGNvbnN0IGNoYXIqIG5ld192YWx1ZSkgeworICB2
b2lkIFNldFZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBuZXdfdmFsdWUpIHsKICAgICB2YWx1ZV8g
PSBuZXdfdmFsdWU7CiAgIH0KIAogIHByaXZhdGU6CiAgIC8vIFRoZSBrZXkgc3VwcGxpZWQgYnkg
dGhlIHVzZXIuCi0gIGludGVybmFsOjpTdHJpbmcga2V5XzsKKyAgc3RkOjpzdHJpbmcga2V5XzsK
ICAgLy8gVGhlIHZhbHVlIHN1cHBsaWVkIGJ5IHRoZSB1c2VyLgotICBpbnRlcm5hbDo6U3RyaW5n
IHZhbHVlXzsKKyAgc3RkOjpzdHJpbmcgdmFsdWVfOwogfTsKIAogLy8gVGhlIHJlc3VsdCBvZiBh
IHNpbmdsZSBUZXN0LiAgVGhpcyBpbmNsdWRlcyBhIGxpc3Qgb2YKQEAgLTUyOCwxMCArNTYyLDEw
IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFJlc3VsdCB7CiAKICBwcml2YXRlOgogICBmcmllbmQg
Y2xhc3MgVGVzdEluZm87CisgIGZyaWVuZCBjbGFzcyBUZXN0Q2FzZTsKICAgZnJpZW5kIGNsYXNz
IFVuaXRUZXN0OwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkRlZmF1bHRHbG9iYWxUZXN0UGFy
dFJlc3VsdFJlcG9ydGVyOwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkV4ZWNEZWF0aFRlc3Q7
Ci0gIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VGVzdEluZm9JbXBsOwogICBmcmllbmQgY2xhc3Mg
aW50ZXJuYWw6OlRlc3RSZXN1bHRBY2Nlc3NvcjsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpV
bml0VGVzdEltcGw7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6V2luZG93c0RlYXRoVGVzdDsK
QEAgLTU1MywxMyArNTg3LDE2IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFJlc3VsdCB7CiAgIC8v
IGEgbm9uLWZhdGFsIGZhaWx1cmUgaWYgaW52YWxpZCAoZS5nLiwgaWYgaXQgY29uZmxpY3RzIHdp
dGggcmVzZXJ2ZWQKICAgLy8ga2V5IG5hbWVzKS4gSWYgYSBwcm9wZXJ0eSBpcyBhbHJlYWR5IHJl
Y29yZGVkIGZvciB0aGUgc2FtZSBrZXksIHRoZQogICAvLyB2YWx1ZSB3aWxsIGJlIHVwZGF0ZWQs
IHJhdGhlciB0aGFuIHN0b3JpbmcgbXVsdGlwbGUgdmFsdWVzIGZvciB0aGUgc2FtZQotICAvLyBr
ZXkuCi0gIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3Bl
cnR5KTsKKyAgLy8ga2V5LiAgeG1sX2VsZW1lbnQgc3BlY2lmaWVzIHRoZSBlbGVtZW50IGZvciB3
aGljaCB0aGUgcHJvcGVydHkgaXMgYmVpbmcKKyAgLy8gcmVjb3JkZWQgYW5kIGlzIHVzZWQgZm9y
IHZhbGlkYXRpb24uCisgIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHht
bF9lbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVz
dF9wcm9wZXJ0eSk7CiAKICAgLy8gQWRkcyBhIGZhaWx1cmUgaWYgdGhlIGtleSBpcyBhIHJlc2Vy
dmVkIGF0dHJpYnV0ZSBvZiBHb29nbGUgVGVzdAogICAvLyB0ZXN0Y2FzZSB0YWdzLiAgUmV0dXJu
cyB0cnVlIGlmIHRoZSBwcm9wZXJ0eSBpcyB2YWxpZC4KICAgLy8gVE9ETyhydXNzcik6IFZhbGlk
YXRlIGF0dHJpYnV0ZSBuYW1lcyBhcmUgbGVnYWwgYW5kIGh1bWFuIHJlYWRhYmxlLgotICBzdGF0
aWMgYm9vbCBWYWxpZGF0ZVRlc3RQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJv
cGVydHkpOworICBzdGF0aWMgYm9vbCBWYWxpZGF0ZVRlc3RQcm9wZXJ0eShjb25zdCBzdGQ6OnN0
cmluZyYgeG1sX2VsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSk7CiAKICAgLy8gQWRkcyBhIHRlc3QgcGFy
dCByZXN1bHQgdG8gdGhlIGxpc3QuCiAgIHZvaWQgQWRkVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVz
dFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpOwpAQCAtNjExLDIwICs2NDgsMzYgQEAgY2xh
c3MgR1RFU1RfQVBJXyBUZXN0SW5mbyB7CiAgIH5UZXN0SW5mbygpOwogCiAgIC8vIFJldHVybnMg
dGhlIHRlc3QgY2FzZSBuYW1lLgotICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0
OworICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRlc3RfY2Fz
ZV9uYW1lXy5jX3N0cigpOyB9CiAKICAgLy8gUmV0dXJucyB0aGUgdGVzdCBuYW1lLgotICBjb25z
dCBjaGFyKiBuYW1lKCkgY29uc3Q7CisgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7IHJldHVy
biBuYW1lXy5jX3N0cigpOyB9CisKKyAgLy8gUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgcGFyYW1l
dGVyIHR5cGUsIG9yIE5VTEwgaWYgdGhpcyBpcyBub3QgYSB0eXBlZAorICAvLyBvciBhIHR5cGUt
cGFyYW1ldGVyaXplZCB0ZXN0LgorICBjb25zdCBjaGFyKiB0eXBlX3BhcmFtKCkgY29uc3Qgewor
ICAgIGlmICh0eXBlX3BhcmFtXy5nZXQoKSAhPSBOVUxMKQorICAgICAgcmV0dXJuIHR5cGVfcGFy
YW1fLT5jX3N0cigpOworICAgIHJldHVybiBOVUxMOworICB9CiAKLSAgLy8gUmV0dXJucyB0aGUg
dGVzdCBjYXNlIGNvbW1lbnQuCi0gIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9jb21tZW50KCkgY29u
c3Q7CisgIC8vIFJldHVybnMgdGhlIHRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZhbHVlIHBh
cmFtZXRlciwgb3IgTlVMTCBpZiB0aGlzCisgIC8vIGlzIG5vdCBhIHZhbHVlLXBhcmFtZXRlcml6
ZWQgdGVzdC4KKyAgY29uc3QgY2hhciogdmFsdWVfcGFyYW0oKSBjb25zdCB7CisgICAgaWYgKHZh
bHVlX3BhcmFtXy5nZXQoKSAhPSBOVUxMKQorICAgICAgcmV0dXJuIHZhbHVlX3BhcmFtXy0+Y19z
dHIoKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIC8vIFJldHVybnMgdGhlIGZpbGUgbmFt
ZSB3aGVyZSB0aGlzIHRlc3QgaXMgZGVmaW5lZC4KKyAgY29uc3QgY2hhciogZmlsZSgpIGNvbnN0
IHsgcmV0dXJuIGxvY2F0aW9uXy5maWxlLmNfc3RyKCk7IH0KIAotICAvLyBSZXR1cm5zIHRoZSB0
ZXN0IGNvbW1lbnQuCi0gIGNvbnN0IGNoYXIqIGNvbW1lbnQoKSBjb25zdDsKKyAgLy8gUmV0dXJu
cyB0aGUgbGluZSB3aGVyZSB0aGlzIHRlc3QgaXMgZGVmaW5lZC4KKyAgaW50IGxpbmUoKSBjb25z
dCB7IHJldHVybiBsb2NhdGlvbl8ubGluZTsgfQogCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlz
IHRlc3Qgc2hvdWxkIHJ1biwgdGhhdCBpcyBpZiB0aGUgdGVzdCBpcyBub3QgZGlzYWJsZWQKLSAg
Ly8gKG9yIGl0IGlzIGRpc2FibGVkIGJ1dCB0aGUgYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxh
ZyBoYXMgYmVlbiBzcGVjaWZpZWQpCi0gIC8vIGFuZCBpdHMgZnVsbCBuYW1lIG1hdGNoZXMgdGhl
IHVzZXItc3BlY2lmaWVkIGZpbHRlci4KKyAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBz
aG91bGQgcnVuLCB0aGF0IGlzIGlmIHRoZSB0ZXN0IGlzIG5vdAorICAvLyBkaXNhYmxlZCAob3Ig
aXQgaXMgZGlzYWJsZWQgYnV0IHRoZSBhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnIGhhcwor
ICAvLyBiZWVuIHNwZWNpZmllZCkgYW5kIGl0cyBmdWxsIG5hbWUgbWF0Y2hlcyB0aGUgdXNlci1z
cGVjaWZpZWQgZmlsdGVyLgogICAvLwogICAvLyBHb29nbGUgVGVzdCBhbGxvd3MgdGhlIHVzZXIg
dG8gZmlsdGVyIHRoZSB0ZXN0cyBieSB0aGVpciBmdWxsIG5hbWVzLgogICAvLyBUaGUgZnVsbCBu
YW1lIG9mIGEgdGVzdCBCYXIgaW4gdGVzdCBjYXNlIEZvbyBpcyBkZWZpbmVkIGFzCkBAIC02Mzgs
MTAgKzY5MSwxOCBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RJbmZvIHsKICAgLy8KICAgLy8gRm9y
IGV4YW1wbGUsICpBKjpGb28uKiBpcyBhIGZpbHRlciB0aGF0IG1hdGNoZXMgYW55IHN0cmluZyB0
aGF0CiAgIC8vIGNvbnRhaW5zIHRoZSBjaGFyYWN0ZXIgJ0EnIG9yIHN0YXJ0cyB3aXRoICJGb28u
Ii4KLSAgYm9vbCBzaG91bGRfcnVuKCkgY29uc3Q7CisgIGJvb2wgc2hvdWxkX3J1bigpIGNvbnN0
IHsgcmV0dXJuIHNob3VsZF9ydW5fOyB9CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIHRl
c3Qgd2lsbCBhcHBlYXIgaW4gdGhlIFhNTCByZXBvcnQuCisgIGJvb2wgaXNfcmVwb3J0YWJsZSgp
IGNvbnN0IHsKKyAgICAvLyBGb3Igbm93LCB0aGUgWE1MIHJlcG9ydCBpbmNsdWRlcyBhbGwgdGVz
dHMgbWF0Y2hpbmcgdGhlIGZpbHRlci4KKyAgICAvLyBJbiB0aGUgZnV0dXJlLCB3ZSBtYXkgdHJp
bSB0ZXN0cyB0aGF0IGFyZSBleGNsdWRlZCBiZWNhdXNlIG9mCisgICAgLy8gc2hhcmRpbmcuCisg
ICAgcmV0dXJuIG1hdGNoZXNfZmlsdGVyXzsKKyAgfQogCiAgIC8vIFJldHVybnMgdGhlIHJlc3Vs
dCBvZiB0aGUgdGVzdC4KLSAgY29uc3QgVGVzdFJlc3VsdCogcmVzdWx0KCkgY29uc3Q7CisgIGNv
bnN0IFRlc3RSZXN1bHQqIHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuICZyZXN1bHRfOyB9CiAKICBw
cml2YXRlOgogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCkBAIC02NDksMzYgKzcxMCw2NCBAQCBj
bGFzcyBHVEVTVF9BUElfIFRlc3RJbmZvIHsKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RF
U1QKICAgZnJpZW5kIGNsYXNzIFRlc3Q7CiAgIGZyaWVuZCBjbGFzcyBUZXN0Q2FzZTsKLSAgZnJp
ZW5kIGNsYXNzIGludGVybmFsOjpUZXN0SW5mb0ltcGw7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5h
bDo6VW5pdFRlc3RJbXBsOworICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlN0cmVhbWluZ0xpc3Rl
bmVyVGVzdDsKICAgZnJpZW5kIFRlc3RJbmZvKiBpbnRlcm5hbDo6TWFrZUFuZFJlZ2lzdGVyVGVz
dEluZm8oCi0gICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwgY29uc3QgY2hhciogbmFt
ZSwKLSAgICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9jb21tZW50LCBjb25zdCBjaGFyKiBjb21t
ZW50LAorICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCisgICAgICBjb25zdCBjaGFy
KiBuYW1lLAorICAgICAgY29uc3QgY2hhciogdHlwZV9wYXJhbSwKKyAgICAgIGNvbnN0IGNoYXIq
IHZhbHVlX3BhcmFtLAorICAgICAgaW50ZXJuYWw6OkNvZGVMb2NhdGlvbiBjb2RlX2xvY2F0aW9u
LAogICAgICAgaW50ZXJuYWw6OlR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkLAogICAgICAgVGVzdDo6
U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAgICAgVGVzdDo6VGVhckRvd25UZXN0Q2Fz
ZUZ1bmMgdGVhcl9kb3duX3RjLAogICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFj
dG9yeSk7CiAKLSAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBtYXRjaGVzIHRoZSB1c2Vy
LXNwZWNpZmllZCBmaWx0ZXIuCi0gIGJvb2wgbWF0Y2hlc19maWx0ZXIoKSBjb25zdDsKKyAgLy8g
Q29uc3RydWN0cyBhIFRlc3RJbmZvIG9iamVjdC4gVGhlIG5ld2x5IGNvbnN0cnVjdGVkIGluc3Rh
bmNlIGFzc3VtZXMKKyAgLy8gb3duZXJzaGlwIG9mIHRoZSBmYWN0b3J5IG9iamVjdC4KKyAgVGVz
dEluZm8oY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RfY2FzZV9uYW1lLAorICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgbmFtZSwKKyAgICAgICAgICAgY29uc3QgY2hhciogYV90eXBlX3BhcmFt
LCAgIC8vIE5VTEwgaWYgbm90IGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QKKyAgICAgICAgICAg
Y29uc3QgY2hhciogYV92YWx1ZV9wYXJhbSwgIC8vIE5VTEwgaWYgbm90IGEgdmFsdWUtcGFyYW1l
dGVyaXplZCB0ZXN0CisgICAgICAgICAgIGludGVybmFsOjpDb2RlTG9jYXRpb24gYV9jb2RlX2xv
Y2F0aW9uLAorICAgICAgICAgICBpbnRlcm5hbDo6VHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCisg
ICAgICAgICAgIGludGVybmFsOjpUZXN0RmFjdG9yeUJhc2UqIGZhY3RvcnkpOwogCiAgIC8vIElu
Y3JlbWVudHMgdGhlIG51bWJlciBvZiBkZWF0aCB0ZXN0cyBlbmNvdW50ZXJlZCBpbiB0aGlzIHRl
c3Qgc28KICAgLy8gZmFyLgotICBpbnQgaW5jcmVtZW50X2RlYXRoX3Rlc3RfY291bnQoKTsKKyAg
aW50IGluY3JlbWVudF9kZWF0aF90ZXN0X2NvdW50KCkgeworICAgIHJldHVybiByZXN1bHRfLmlu
Y3JlbWVudF9kZWF0aF90ZXN0X2NvdW50KCk7CisgIH0KIAotICAvLyBBY2Nlc3NvcnMgZm9yIHRo
ZSBpbXBsZW1lbnRhdGlvbiBvYmplY3QuCi0gIGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGltcGwo
KSB7IHJldHVybiBpbXBsXzsgfQotICBjb25zdCBpbnRlcm5hbDo6VGVzdEluZm9JbXBsKiBpbXBs
KCkgY29uc3QgeyByZXR1cm4gaW1wbF87IH0KKyAgLy8gQ3JlYXRlcyB0aGUgdGVzdCBvYmplY3Qs
IHJ1bnMgaXQsIHJlY29yZHMgaXRzIHJlc3VsdCwgYW5kIHRoZW4KKyAgLy8gZGVsZXRlcyBpdC4K
KyAgdm9pZCBSdW4oKTsKIAotICAvLyBDb25zdHJ1Y3RzIGEgVGVzdEluZm8gb2JqZWN0LiBUaGUg
bmV3bHkgY29uc3RydWN0ZWQgaW5zdGFuY2UgYXNzdW1lcwotICAvLyBvd25lcnNoaXAgb2YgdGhl
IGZhY3Rvcnkgb2JqZWN0LgotICBUZXN0SW5mbyhjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwg
Y29uc3QgY2hhciogbmFtZSwKLSAgICAgICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX2NvbW1l
bnQsIGNvbnN0IGNoYXIqIGNvbW1lbnQsCi0gICAgICAgICAgIGludGVybmFsOjpUeXBlSWQgZml4
dHVyZV9jbGFzc19pZCwKLSAgICAgICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFj
dG9yeSk7CisgIHN0YXRpYyB2b2lkIENsZWFyVGVzdFJlc3VsdChUZXN0SW5mbyogdGVzdF9pbmZv
KSB7CisgICAgdGVzdF9pbmZvLT5yZXN1bHRfLkNsZWFyKCk7CisgIH0KIAotICAvLyBBbiBvcGFx
dWUgaW1wbGVtZW50YXRpb24gb2JqZWN0LgotICBpbnRlcm5hbDo6VGVzdEluZm9JbXBsKiBpbXBs
XzsKKyAgLy8gVGhlc2UgZmllbGRzIGFyZSBpbW11dGFibGUgcHJvcGVydGllcyBvZiB0aGUgdGVz
dC4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdF9jYXNlX25hbWVfOyAgICAgLy8gVGVzdCBjYXNl
IG5hbWUKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZV87ICAgICAgICAgICAgICAgLy8gVGVzdCBu
YW1lCisgIC8vIE5hbWUgb2YgdGhlIHBhcmFtZXRlciB0eXBlLCBvciBOVUxMIGlmIHRoaXMgaXMg
bm90IGEgdHlwZWQgb3IgYQorICAvLyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKyAgY29uc3Qg
aW50ZXJuYWw6OnNjb3BlZF9wdHI8Y29uc3QgOjpzdGQ6OnN0cmluZz4gdHlwZV9wYXJhbV87Cisg
IC8vIFRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZhbHVlIHBhcmFtZXRlciwgb3IgTlVMTCBp
ZiB0aGlzIGlzIG5vdCBhCisgIC8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKyAgY29uc3Qg
aW50ZXJuYWw6OnNjb3BlZF9wdHI8Y29uc3QgOjpzdGQ6OnN0cmluZz4gdmFsdWVfcGFyYW1fOwor
ICBpbnRlcm5hbDo6Q29kZUxvY2F0aW9uIGxvY2F0aW9uXzsKKyAgY29uc3QgaW50ZXJuYWw6OlR5
cGVJZCBmaXh0dXJlX2NsYXNzX2lkXzsgICAvLyBJRCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNz
CisgIGJvb2wgc2hvdWxkX3J1bl87ICAgICAgICAgICAgICAgICAvLyBUcnVlIGlmZiB0aGlzIHRl
c3Qgc2hvdWxkIHJ1bgorICBib29sIGlzX2Rpc2FibGVkXzsgICAgICAgICAgICAgICAgLy8gVHJ1
ZSBpZmYgdGhpcyB0ZXN0IGlzIGRpc2FibGVkCisgIGJvb2wgbWF0Y2hlc19maWx0ZXJfOyAgICAg
ICAgICAgICAvLyBUcnVlIGlmIHRoaXMgdGVzdCBtYXRjaGVzIHRoZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gdXNlci1zcGVjaWZpZWQgZmlsdGVyLgorICBpbnRlcm5h
bDo6VGVzdEZhY3RvcnlCYXNlKiBjb25zdCBmYWN0b3J5XzsgIC8vIFRoZSBmYWN0b3J5IHRoYXQg
Y3JlYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHRoZSB0ZXN0IG9iamVjdAorCisgIC8vIFRoaXMgZmllbGQgaXMgbXV0YWJsZSBhbmQgbmVlZHMg
dG8gYmUgcmVzZXQgYmVmb3JlIHJ1bm5pbmcgdGhlCisgIC8vIHRlc3QgZm9yIHRoZSBzZWNvbmQg
dGltZS4KKyAgVGVzdFJlc3VsdCByZXN1bHRfOwogCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8oVGVzdEluZm8pOwogfTsKQEAgLTY5Niw5ICs3ODUsMTEgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBUZXN0Q2FzZSB7CiAgIC8vIEFyZ3VtZW50czoKICAgLy8KICAgLy8gICBuYW1lOiAgICAg
ICAgIG5hbWUgb2YgdGhlIHRlc3QgY2FzZQorICAvLyAgIGFfdHlwZV9wYXJhbTogdGhlIG5hbWUg
b2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorICAvLyAgICAgICAgICAg
ICAgICAgdGhpcyBpcyBub3QgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KICAgLy8gICBzZXRf
dXBfdGM6ICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBj
YXNlCiAgIC8vICAgdGVhcl9kb3duX3RjOiBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRl
YXJzIGRvd24gdGhlIHRlc3QgY2FzZQotICBUZXN0Q2FzZShjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBjaGFyKiBjb21tZW50LAorICBUZXN0Q2FzZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFy
KiBhX3R5cGVfcGFyYW0sCiAgICAgICAgICAgIFRlc3Q6OlNldFVwVGVzdENhc2VGdW5jIHNldF91
cF90YywKICAgICAgICAgICAgVGVzdDo6VGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3Rj
KTsKIApAQCAtNzA4LDggKzc5OSwxMyBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RDYXNlIHsKICAg
Ly8gR2V0cyB0aGUgbmFtZSBvZiB0aGUgVGVzdENhc2UuCiAgIGNvbnN0IGNoYXIqIG5hbWUoKSBj
b25zdCB7IHJldHVybiBuYW1lXy5jX3N0cigpOyB9CiAKLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBj
YXNlIGNvbW1lbnQuCi0gIGNvbnN0IGNoYXIqIGNvbW1lbnQoKSBjb25zdCB7IHJldHVybiBjb21t
ZW50Xy5jX3N0cigpOyB9CisgIC8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB0
eXBlLCBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEKKyAgLy8gdHlwZS1wYXJhbWV0ZXJpemVkIHRl
c3QgY2FzZS4KKyAgY29uc3QgY2hhciogdHlwZV9wYXJhbSgpIGNvbnN0IHsKKyAgICBpZiAodHlw
ZV9wYXJhbV8uZ2V0KCkgIT0gTlVMTCkKKyAgICAgIHJldHVybiB0eXBlX3BhcmFtXy0+Y19zdHIo
KTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgdGVz
dCBpbiB0aGlzIHRlc3QgY2FzZSBzaG91bGQgcnVuLgogICBib29sIHNob3VsZF9ydW4oKSBjb25z
dCB7IHJldHVybiBzaG91bGRfcnVuXzsgfQpAQCAtNzIwLDkgKzgxNiwxNSBAQCBjbGFzcyBHVEVT
VF9BUElfIFRlc3RDYXNlIHsKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cyBp
biB0aGlzIHRlc3QgY2FzZS4KICAgaW50IGZhaWxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CiAKKyAg
Ly8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHRoYXQgd2lsbCBiZSByZXBvcnRl
ZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3Vu
dCgpIGNvbnN0OworCiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyBpbiB0
aGlzIHRlc3QgY2FzZS4KICAgaW50IGRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAv
LyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJlcG9y
dC4KKyAgaW50IHJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8vIEdldCB0aGUg
bnVtYmVyIG9mIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlIHRoYXQgc2hvdWxkIHJ1bi4KICAgaW50
IHRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3Q7CiAKQEAgLTc0Miw2ICs4NDQsMTAgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIHRvdGFsX3Rlc3RfY291bnQoKSAtIDEuIElmIGkg
aXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVMTC4KICAgY29uc3QgVGVzdEluZm8qIEdl
dFRlc3RJbmZvKGludCBpKSBjb25zdDsKIAorICAvLyBSZXR1cm5zIHRoZSBUZXN0UmVzdWx0IHRo
YXQgaG9sZHMgdGVzdCBwcm9wZXJ0aWVzIHJlY29yZGVkIGR1cmluZworICAvLyBleGVjdXRpb24g
b2YgU2V0VXBUZXN0Q2FzZSBhbmQgVGVhckRvd25UZXN0Q2FzZS4KKyAgY29uc3QgVGVzdFJlc3Vs
dCYgYWRfaG9jX3Rlc3RfcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gYWRfaG9jX3Rlc3RfcmVzdWx0
XzsgfQorCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNsYXNzIFRlc3Q7CiAgIGZyaWVuZCBjbGFzcyBp
bnRlcm5hbDo6VW5pdFRlc3RJbXBsOwpAQCAtNzc2LDE3ICs4ODIsNDQgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBUZXN0Q2FzZSB7CiAgIC8vIFJ1bnMgZXZlcnkgdGVzdCBpbiB0aGlzIFRlc3RDYXNlLgog
ICB2b2lkIFJ1bigpOwogCisgIC8vIFJ1bnMgU2V0VXBUZXN0Q2FzZSgpIGZvciB0aGlzIFRlc3RD
YXNlLiAgVGhpcyB3cmFwcGVyIGlzIG5lZWRlZAorICAvLyBmb3IgY2F0Y2hpbmcgZXhjZXB0aW9u
cyB0aHJvd24gZnJvbSBTZXRVcFRlc3RDYXNlKCkuCisgIHZvaWQgUnVuU2V0VXBUZXN0Q2FzZSgp
IHsgKCpzZXRfdXBfdGNfKSgpOyB9CisKKyAgLy8gUnVucyBUZWFyRG93blRlc3RDYXNlKCkgZm9y
IHRoaXMgVGVzdENhc2UuICBUaGlzIHdyYXBwZXIgaXMKKyAgLy8gbmVlZGVkIGZvciBjYXRjaGlu
ZyBleGNlcHRpb25zIHRocm93biBmcm9tIFRlYXJEb3duVGVzdENhc2UoKS4KKyAgdm9pZCBSdW5U
ZWFyRG93blRlc3RDYXNlKCkgeyAoKnRlYXJfZG93bl90Y18pKCk7IH0KKwogICAvLyBSZXR1cm5z
IHRydWUgaWZmIHRlc3QgcGFzc2VkLgotICBzdGF0aWMgYm9vbCBUZXN0UGFzc2VkKGNvbnN0IFRl
c3RJbmZvICogdGVzdF9pbmZvKTsKKyAgc3RhdGljIGJvb2wgVGVzdFBhc3NlZChjb25zdCBUZXN0
SW5mbyogdGVzdF9pbmZvKSB7CisgICAgcmV0dXJuIHRlc3RfaW5mby0+c2hvdWxkX3J1bigpICYm
IHRlc3RfaW5mby0+cmVzdWx0KCktPlBhc3NlZCgpOworICB9CiAKICAgLy8gUmV0dXJucyB0cnVl
IGlmZiB0ZXN0IGZhaWxlZC4KLSAgc3RhdGljIGJvb2wgVGVzdEZhaWxlZChjb25zdCBUZXN0SW5m
byAqIHRlc3RfaW5mbyk7CisgIHN0YXRpYyBib29sIFRlc3RGYWlsZWQoY29uc3QgVGVzdEluZm8q
IHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPnNob3VsZF9ydW4oKSAmJiB0ZXN0
X2luZm8tPnJlc3VsdCgpLT5GYWlsZWQoKTsKKyAgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYg
dGhlIHRlc3QgaXMgZGlzYWJsZWQgYW5kIHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhNTAorICAv
LyByZXBvcnQuCisgIHN0YXRpYyBib29sIFRlc3RSZXBvcnRhYmxlRGlzYWJsZWQoY29uc3QgVGVz
dEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPmlzX3JlcG9ydGFibGUo
KSAmJiB0ZXN0X2luZm8tPmlzX2Rpc2FibGVkXzsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBp
ZmYgdGVzdCBpcyBkaXNhYmxlZC4KLSAgc3RhdGljIGJvb2wgVGVzdERpc2FibGVkKGNvbnN0IFRl
c3RJbmZvICogdGVzdF9pbmZvKTsKKyAgc3RhdGljIGJvb2wgVGVzdERpc2FibGVkKGNvbnN0IFRl
c3RJbmZvKiB0ZXN0X2luZm8pIHsKKyAgICByZXR1cm4gdGVzdF9pbmZvLT5pc19kaXNhYmxlZF87
CisgIH0KKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgdGVzdCB3aWxsIGFwcGVhciBpbiB0
aGUgWE1MIHJlcG9ydC4KKyAgc3RhdGljIGJvb2wgVGVzdFJlcG9ydGFibGUoY29uc3QgVGVzdElu
Zm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPmlzX3JlcG9ydGFibGUoKTsK
KyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdGVzdCBzaG91bGQgcnVuLgot
ICBzdGF0aWMgYm9vbCBTaG91bGRSdW5UZXN0KGNvbnN0IFRlc3RJbmZvICp0ZXN0X2luZm8pOwor
ICBzdGF0aWMgYm9vbCBTaG91bGRSdW5UZXN0KGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsK
KyAgICByZXR1cm4gdGVzdF9pbmZvLT5zaG91bGRfcnVuKCk7CisgIH0KIAogICAvLyBTaHVmZmxl
cyB0aGUgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCiAgIHZvaWQgU2h1ZmZsZVRlc3RzKGludGVy
bmFsOjpSYW5kb20qIHJhbmRvbSk7CkBAIC03OTUsOSArOTI4LDEwIEBAIGNsYXNzIEdURVNUX0FQ
SV8gVGVzdENhc2UgewogICB2b2lkIFVuc2h1ZmZsZVRlc3RzKCk7CiAKICAgLy8gTmFtZSBvZiB0
aGUgdGVzdCBjYXNlLgotICBpbnRlcm5hbDo6U3RyaW5nIG5hbWVfOwotICAvLyBDb21tZW50IG9u
IHRoZSB0ZXN0IGNhc2UuCi0gIGludGVybmFsOjpTdHJpbmcgY29tbWVudF87CisgIHN0ZDo6c3Ry
aW5nIG5hbWVfOworICAvLyBOYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdHlwZSwgb3IgTlVMTCBpZiB0
aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEKKyAgLy8gdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisg
IGNvbnN0IGludGVybmFsOjpzY29wZWRfcHRyPGNvbnN0IDo6c3RkOjpzdHJpbmc+IHR5cGVfcGFy
YW1fOwogICAvLyBUaGUgdmVjdG9yIG9mIFRlc3RJbmZvcyBpbiB0aGVpciBvcmlnaW5hbCBvcmRl
ci4gIEl0IG93bnMgdGhlCiAgIC8vIGVsZW1lbnRzIGluIHRoZSB2ZWN0b3IuCiAgIHN0ZDo6dmVj
dG9yPFRlc3RJbmZvKj4gdGVzdF9pbmZvX2xpc3RfOwpAQCAtODEzLDEzICs5NDcsMTYgQEAgY2xh
c3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIGJvb2wgc2hvdWxkX3J1bl87CiAgIC8vIEVsYXBz
ZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5NaWxsaXMgZWxhcHNlZF90aW1lXzsK
KyAgLy8gSG9sZHMgdGVzdCBwcm9wZXJ0aWVzIHJlY29yZGVkIGR1cmluZyBleGVjdXRpb24gb2Yg
U2V0VXBUZXN0Q2FzZSBhbmQKKyAgLy8gVGVhckRvd25UZXN0Q2FzZS4KKyAgVGVzdFJlc3VsdCBh
ZF9ob2NfdGVzdF9yZXN1bHRfOwogCiAgIC8vIFdlIGRpc2FsbG93IGNvcHlpbmcgVGVzdENhc2Vz
LgogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRlc3RDYXNlKTsKIH07CiAKIC8v
IEFuIEVudmlyb25tZW50IG9iamVjdCBpcyBjYXBhYmxlIG9mIHNldHRpbmcgdXAgYW5kIHRlYXJp
bmcgZG93biBhbgotLy8gZW52aXJvbm1lbnQuICBUaGUgdXNlciBzaG91bGQgc3ViY2xhc3MgdGhp
cyB0byBkZWZpbmUgaGlzIG93bgorLy8gZW52aXJvbm1lbnQuICBZb3Ugc2hvdWxkIHN1YmNsYXNz
IHRoaXMgdG8gZGVmaW5lIHlvdXIgb3duCiAvLyBlbnZpcm9ubWVudChzKS4KIC8vCiAvLyBBbiBF
bnZpcm9ubWVudCBvYmplY3QgZG9lcyB0aGUgc2V0LXVwIGFuZCB0ZWFyLWRvd24gaW4gdmlydHVh
bApAQCAtODc2LDcgKzEwMTMsNyBAQCBjbGFzcyBUZXN0RXZlbnRMaXN0ZW5lciB7CiAgIC8vIEZp
cmVkIGJlZm9yZSB0aGUgdGVzdCBzdGFydHMuCiAgIHZpcnR1YWwgdm9pZCBPblRlc3RTdGFydChj
b25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSA9IDA7CiAKLSAgLy8gRmlyZWQgYWZ0ZXIgYSBmYWls
ZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VTUygpLgorICAvLyBGaXJlZCBhZnRlciBhIGZhaWxlZCBh
c3NlcnRpb24gb3IgYSBTVUNDRUVEKCkgaW52b2NhdGlvbi4KICAgdmlydHVhbCB2b2lkIE9uVGVz
dFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpID0gMDsK
IAogICAvLyBGaXJlZCBhZnRlciB0aGUgdGVzdCBlbmRzLgpAQCAtOTYxLDEwICsxMDk4LDEwIEBA
IGNsYXNzIEdURVNUX0FQSV8gVGVzdEV2ZW50TGlzdGVuZXJzIHsKIAogIHByaXZhdGU6CiAgIGZy
aWVuZCBjbGFzcyBUZXN0Q2FzZTsKKyAgZnJpZW5kIGNsYXNzIFRlc3RJbmZvOwogICBmcmllbmQg
Y2xhc3MgaW50ZXJuYWw6OkRlZmF1bHRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyOwogICBm
cmllbmQgY2xhc3MgaW50ZXJuYWw6Ok5vRXhlY0RlYXRoVGVzdDsKICAgZnJpZW5kIGNsYXNzIGlu
dGVybmFsOjpUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3NvcjsKLSAgZnJpZW5kIGNsYXNzIGludGVy
bmFsOjpUZXN0SW5mb0ltcGw7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VW5pdFRlc3RJbXBs
OwogCiAgIC8vIFJldHVybnMgcmVwZWF0ZXIgdGhhdCBicm9hZGNhc3RzIHRoZSBUZXN0RXZlbnRM
aXN0ZW5lciBldmVudHMgdG8gYWxsCkBAIC0xMDMyLDExICsxMTY5LDEzIEBAIGNsYXNzIEdURVNU
X0FQSV8gVW5pdFRlc3QgewogCiAgIC8vIFJldHVybnMgdGhlIFRlc3RDYXNlIG9iamVjdCBmb3Ig
dGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLAogICAvLyBvciBOVUxMIGlmIG5vIHRl
c3QgaXMgcnVubmluZy4KLSAgY29uc3QgVGVzdENhc2UqIGN1cnJlbnRfdGVzdF9jYXNlKCkgY29u
c3Q7CisgIGNvbnN0IFRlc3RDYXNlKiBjdXJyZW50X3Rlc3RfY2FzZSgpIGNvbnN0CisgICAgICBH
VEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCiAgIC8vIFJldHVybnMgdGhlIFRlc3RJbmZv
IG9iamVjdCBmb3IgdGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLAogICAvLyBvciBO
VUxMIGlmIG5vIHRlc3QgaXMgcnVubmluZy4KLSAgY29uc3QgVGVzdEluZm8qIGN1cnJlbnRfdGVz
dF9pbmZvKCkgY29uc3Q7CisgIGNvbnN0IFRlc3RJbmZvKiBjdXJyZW50X3Rlc3RfaW5mbygpIGNv
bnN0CisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCiAgIC8vIFJldHVybnMg
dGhlIHJhbmRvbSBzZWVkIHVzZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50IHRlc3QgcnVu
LgogICBpbnQgcmFuZG9tX3NlZWQoKSBjb25zdDsKQEAgLTEwNDYsNyArMTE4NSw4IEBAIGNsYXNz
IEdURVNUX0FQSV8gVW5pdFRlc3QgewogICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFu
ZCBpbnN0YW50aWF0ZSBhbmQgcmVnaXN0ZXIgdGhlbS4KICAgLy8KICAgLy8gSU5URVJOQUwgSU1Q
TEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotICBpbnRlcm5hbDo6
UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkmIHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3Ry
eSgpOworICBpbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkmIHBhcmFtZXRl
cml6ZWRfdGVzdF9yZWdpc3RyeSgpCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8p
OwogI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogCiAgIC8vIEdldHMgdGhlIG51bWJl
ciBvZiBzdWNjZXNzZnVsIHRlc3QgY2FzZXMuCkBAIC0xMDY4LDE1ICsxMjA4LDI1IEBAIGNsYXNz
IEdURVNUX0FQSV8gVW5pdFRlc3QgewogICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZmFpbGVkIHRl
c3RzLgogICBpbnQgZmFpbGVkX3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAvLyBHZXRzIHRoZSBu
dW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwg
cmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CisK
ICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzLgogICBpbnQgZGlzYWJsZWRf
dGVzdF9jb3VudCgpIGNvbnN0OwogCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0cyB0byBi
ZSBwcmludGVkIGluIHRoZSBYTUwgcmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV90ZXN0X2NvdW50
KCkgY29uc3Q7CisKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0cy4KICAgaW50IHRv
dGFsX3Rlc3RfY291bnQoKSBjb25zdDsKIAogICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMg
dGhhdCBzaG91bGQgcnVuLgogICBpbnQgdGVzdF90b19ydW5fY291bnQoKSBjb25zdDsKIAorICAv
LyBHZXRzIHRoZSB0aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0gc3RhcnQsIGluIG1zIGZyb20gdGhl
IHN0YXJ0IG9mIHRoZQorICAvLyBVTklYIGVwb2NoLgorICBUaW1lSW5NaWxsaXMgc3RhcnRfdGlt
ZXN0YW1wKCkgY29uc3Q7CisKICAgLy8gR2V0cyB0aGUgZWxhcHNlZCB0aW1lLCBpbiBtaWxsaXNl
Y29uZHMuCiAgIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3RpbWUoKSBjb25zdDsKIApAQCAtMTA5MSw2
ICsxMjQxLDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3QgewogICAvLyB0b3RhbF90ZXN0
X2Nhc2VfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVM
TC4KICAgY29uc3QgVGVzdENhc2UqIEdldFRlc3RDYXNlKGludCBpKSBjb25zdDsKIAorICAvLyBS
ZXR1cm5zIHRoZSBUZXN0UmVzdWx0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gb24gdGVzdCBmYWls
dXJlcyBhbmQKKyAgLy8gcHJvcGVydGllcyBsb2dnZWQgb3V0c2lkZSBvZiBpbmRpdmlkdWFsIHRl
c3QgY2FzZXMuCisgIGNvbnN0IFRlc3RSZXN1bHQmIGFkX2hvY190ZXN0X3Jlc3VsdCgpIGNvbnN0
OworCiAgIC8vIFJldHVybnMgdGhlIGxpc3Qgb2YgZXZlbnQgbGlzdGVuZXJzIHRoYXQgY2FuIGJl
IHVzZWQgdG8gdHJhY2sgZXZlbnRzCiAgIC8vIGluc2lkZSBHb29nbGUgVGVzdC4KICAgVGVzdEV2
ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMoKTsKQEAgLTExMTQsMTIgKzEyNjgsMTYgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBVbml0VGVzdCB7CiAgIHZvaWQgQWRkVGVzdFBhcnRSZXN1bHQoVGVzdFBhcnRS
ZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogZmlsZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lX251bWJl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnRlcm5hbDo6U3RyaW5nJiBtZXNz
YWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludGVybmFsOjpTdHJpbmcmIG9z
X3N0YWNrX3RyYWNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
b3Nfc3RhY2tfdHJhY2UpCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCi0g
IC8vIEFkZHMgYSBUZXN0UHJvcGVydHkgdG8gdGhlIGN1cnJlbnQgVGVzdFJlc3VsdCBvYmplY3Qu
IElmIHRoZSByZXN1bHQgYWxyZWFkeQotICAvLyBjb250YWlucyBhIHByb3BlcnR5IHdpdGggdGhl
IHNhbWUga2V5LCB0aGUgdmFsdWUgd2lsbCBiZSB1cGRhdGVkLgotICB2b2lkIFJlY29yZFByb3Bl
cnR5Rm9yQ3VycmVudFRlc3QoY29uc3QgY2hhcioga2V5LCBjb25zdCBjaGFyKiB2YWx1ZSk7Cisg
IC8vIEFkZHMgYSBUZXN0UHJvcGVydHkgdG8gdGhlIGN1cnJlbnQgVGVzdFJlc3VsdCBvYmplY3Qg
d2hlbiBpbnZva2VkIGZyb20KKyAgLy8gaW5zaWRlIGEgdGVzdCwgdG8gY3VycmVudCBUZXN0Q2Fz
ZSdzIGFkX2hvY190ZXN0X3Jlc3VsdF8gd2hlbiBpbnZva2VkCisgIC8vIGZyb20gU2V0VXBUZXN0
Q2FzZSBvciBUZWFyRG93blRlc3RDYXNlLCBvciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNldAor
ICAvLyB3aGVuIGludm9rZWQgZWxzZXdoZXJlLiAgSWYgdGhlIHJlc3VsdCBhbHJlYWR5IGNvbnRh
aW5zIGEgcHJvcGVydHkgd2l0aAorICAvLyB0aGUgc2FtZSBrZXksIHRoZSB2YWx1ZSB3aWxsIGJl
IHVwZGF0ZWQuCisgIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwg
Y29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKTsKIAogICAvLyBHZXRzIHRoZSBpLXRoIHRlc3QgY2Fz
ZSBhbW9uZyBhbGwgdGhlIHRlc3QgY2FzZXMuIGkgY2FuIHJhbmdlIGZyb20gMCB0bwogICAvLyB0
b3RhbF90ZXN0X2Nhc2VfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJl
dHVybnMgTlVMTC4KQEAgLTExMzQsMTEgKzEyOTIsMTMgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0
VGVzdCB7CiAgIGZyaWVuZCBjbGFzcyBUZXN0OwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkFz
c2VydEhlbHBlcjsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpTY29wZWRUcmFjZTsKKyAgZnJp
ZW5kIGNsYXNzIGludGVybmFsOjpTdHJlYW1pbmdMaXN0ZW5lclRlc3Q7CisgIGZyaWVuZCBjbGFz
cyBpbnRlcm5hbDo6VW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3RIZWxwZXI7CiAgIGZyaWVuZCBF
bnZpcm9ubWVudCogQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KEVudmlyb25tZW50KiBlbnYpOwog
ICBmcmllbmQgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCogaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1w
bCgpOwogICBmcmllbmQgdm9pZCBpbnRlcm5hbDo6UmVwb3J0RmFpbHVyZUluVW5rbm93bkxvY2F0
aW9uKAogICAgICAgVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCi0gICAgICBjb25z
dCBpbnRlcm5hbDo6U3RyaW5nJiBtZXNzYWdlKTsKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBt
ZXNzYWdlKTsKIAogICAvLyBDcmVhdGVzIGFuIGVtcHR5IFVuaXRUZXN0LgogICBVbml0VGVzdCgp
OwpAQCAtMTE0OCwxMCArMTMwOCwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0IHsKIAog
ICAvLyBQdXNoZXMgYSB0cmFjZSBkZWZpbmVkIGJ5IFNDT1BFRF9UUkFDRSgpIG9uIHRvIHRoZSBw
ZXItdGhyZWFkCiAgIC8vIEdvb2dsZSBUZXN0IHRyYWNlIHN0YWNrLgotICB2b2lkIFB1c2hHVGVz
dFRyYWNlKGNvbnN0IGludGVybmFsOjpUcmFjZUluZm8mIHRyYWNlKTsKKyAgdm9pZCBQdXNoR1Rl
c3RUcmFjZShjb25zdCBpbnRlcm5hbDo6VHJhY2VJbmZvJiB0cmFjZSkKKyAgICAgIEdURVNUX0xP
Q0tfRVhDTFVERURfKG11dGV4Xyk7CiAKICAgLy8gUG9wcyBhIHRyYWNlIGZyb20gdGhlIHBlci10
aHJlYWQgR29vZ2xlIFRlc3QgdHJhY2Ugc3RhY2suCi0gIHZvaWQgUG9wR1Rlc3RUcmFjZSgpOwor
ICB2b2lkIFBvcEdUZXN0VHJhY2UoKQorICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhf
KTsKIAogICAvLyBQcm90ZWN0cyBtdXRhYmxlIHN0YXRlIGluICppbXBsXy4gIFRoaXMgaXMgbXV0
YWJsZSBhcyBzb21lIGNvbnN0CiAgIC8vIG1ldGhvZHMgbmVlZCB0byBsb2NrIGl0IHRvby4KQEAg
LTEyMDYsODIgKzEzNjgsNDIgQEAgR1RFU1RfQVBJXyB2b2lkIEluaXRHb29nbGVUZXN0KGludCog
YXJnYywgd2NoYXJfdCoqIGFyZ3YpOwogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCi0vLyBUaGVz
ZSBvdmVybG9hZGVkIHZlcnNpb25zIGhhbmRsZSA6OnN0ZDo6c3RyaW5nIGFuZCA6OnN0ZDo6d3N0
cmluZy4KLUdURVNUX0FQSV8gaW5saW5lIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShj
b25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIpIHsKLSAgcmV0dXJuIChNZXNzYWdlKCkgPDwgJyInIDw8
IHN0ciA8PCAnIicpLkdldFN0cmluZygpOwotfQotCi0jaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5H
Ci1HVEVTVF9BUElfIGlubGluZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3Qg
OjpzdGQ6OndzdHJpbmcmIHdzdHIpIHsKLSAgcmV0dXJuIChNZXNzYWdlKCkgPDwgIkxcIiIgPDwg
d3N0ciA8PCAnIicpLkdldFN0cmluZygpOwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dT
VFJJTkcKLQotLy8gVGhlc2Ugb3ZlcmxvYWRlZCB2ZXJzaW9ucyBoYW5kbGUgOjpzdHJpbmcgYW5k
IDo6d3N0cmluZy4KLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotR1RFU1RfQVBJXyBpbmxp
bmUgU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKGNvbnN0IDo6c3RyaW5nJiBzdHIpIHsK
LSAgcmV0dXJuIChNZXNzYWdlKCkgPDwgJyInIDw8IHN0ciA8PCAnIicpLkdldFN0cmluZygpOwot
fQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotCi0jaWYgR1RFU1RfSEFTX0dM
T0JBTF9XU1RSSU5HCi1HVEVTVF9BUElfIGlubGluZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1l
c3NhZ2UoY29uc3QgOjp3c3RyaW5nJiB3c3RyKSB7Ci0gIHJldHVybiAoTWVzc2FnZSgpIDw8ICJM
XCIiIDw8IHdzdHIgPDwgJyInKS5HZXRTdHJpbmcoKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X0dMT0JBTF9XU1RSSU5HCi0KLS8vIEZvcm1hdHMgYSBjb21wYXJpc29uIGFzc2VydGlvbiAoZS5n
LiBBU1NFUlRfRVEsIEVYUEVDVF9MVCwgYW5kIGV0YykKLS8vIG9wZXJhbmQgdG8gYmUgdXNlZCBp
biBhIGZhaWx1cmUgbWVzc2FnZS4gIFRoZSB0eXBlIChidXQgbm90IHZhbHVlKQotLy8gb2YgdGhl
IG90aGVyIG9wZXJhbmQgbWF5IGFmZmVjdCB0aGUgZm9ybWF0LiAgVGhpcyBhbGxvd3MgdXMgdG8K
LS8vIHByaW50IGEgY2hhciogYXMgYSByYXcgcG9pbnRlciB3aGVuIGl0IGlzIGNvbXBhcmVkIGFn
YWluc3QgYW5vdGhlcgotLy8gY2hhciosIGFuZCBwcmludCBpdCBhcyBhIEMgc3RyaW5nIHdoZW4g
aXQgaXMgY29tcGFyZWQgYWdhaW5zdCBhbgotLy8gc3RkOjpzdHJpbmcgb2JqZWN0LCBmb3IgZXhh
bXBsZS4KLS8vCi0vLyBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpZ25vcmVzIHRoZSB0eXBl
IG9mIHRoZSBvdGhlciBvcGVyYW5kLgotLy8gU29tZSBzcGVjaWFsaXplZCB2ZXJzaW9ucyBhcmUg
dXNlZCB0byBoYW5kbGUgZm9ybWF0dGluZyB3aWRlIG9yCi0vLyBuYXJyb3cgQyBzdHJpbmdzLgot
Ly8KLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJP
R1JBTS4KKy8vIFNlcGFyYXRlIHRoZSBlcnJvciBnZW5lcmF0aW5nIGNvZGUgZnJvbSB0aGUgY29k
ZSBwYXRoIHRvIHJlZHVjZSB0aGUgc3RhY2sKKy8vIGZyYW1lIHNpemUgb2YgQ21wSGVscGVyRVEu
IFRoaXMgaGVscHMgcmVkdWNlIHRoZSBvdmVyaGVhZCBvZiBzb21lIHNhbml0aXplcnMKKy8vIHdo
ZW4gY2FsbGluZyBFWFBFQ1RfKiBpbiBhIHRpZ2h0IGxvb3AuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyPgotU3RyaW5nIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2Fn
ZShjb25zdCBUMSYgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFQyJiAvKiBvdGhlcl9vcGVyYW5kICovKSB7Ci0gIHJldHVybiBGb3JtYXRGb3JG
YWlsdXJlTWVzc2FnZSh2YWx1ZSk7CitBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRVFGYWlsdXJl
KGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVDEmIGxocywgY29uc3QgVDImIHJocykgeworICByZXR1cm4g
RXFGYWlsdXJlKGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIHJoc19leHByZXNz
aW9uLAorICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2Fn
ZShsaHMsIHJocyksCisgICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1
cmVNZXNzYWdlKHJocywgbGhzKSwKKyAgICAgICAgICAgICAgICAgICBmYWxzZSk7CiB9CiAKIC8v
IFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9FUS4KIHRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRVEoY29u
c3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUMSYgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVDImIGFjdHVhbCkgewotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkg
ICAgICAgICAgLy8gU2F2ZXMgdGhlIGN1cnJlbnQgd2FybmluZyBzdGF0ZS4KLSNwcmFnbWEgd2Fy
bmluZyhkaXNhYmxlOjQzODkpICAvLyBUZW1wb3JhcmlseSBkaXNhYmxlcyB3YXJuaW5nIG9uCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2lnbmVkL3Vuc2lnbmVkIG1pc21hdGNo
LgotI2VuZGlmCi0KLSAgaWYgKGV4cGVjdGVkID09IGFjdHVhbCkgeworQXNzZXJ0aW9uUmVzdWx0
IENtcEhlbHBlckVRKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFQxJiBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVDImIHJocykgeworR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDM4OSAv
KiBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2ggKi8pCisgIGlmIChsaHMgPT0gcmhzKSB7CiAgICAg
cmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklO
R1NfUE9QXygpCiAKLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHBvcCkgICAgICAg
ICAgLy8gUmVzdG9yZXMgdGhlIHdhcm5pbmcgc3RhdGUuCi0jZW5kaWYKLQotICByZXR1cm4gRXFG
YWlsdXJlKGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgYWN0dWFsX2V4
cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVN
ZXNzYWdlKGV4cGVjdGVkLCBhY3R1YWwpLAotICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNv
bXBhcmlzb25GYWlsdXJlTWVzc2FnZShhY3R1YWwsIGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAg
ICAgICBmYWxzZSk7CisgIHJldHVybiBDbXBIZWxwZXJFUUZhaWx1cmUobGhzX2V4cHJlc3Npb24s
IHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7CiB9CiAKIC8vIFdpdGggdGhpcyBvdmVybG9hZGVk
IHZlcnNpb24sIHdlIGFsbG93IGFub255bW91cyBlbnVtcyB0byBiZSB1c2VkCiAvLyBpbiB7QVNT
RVJUfEVYUEVDVH1fRVEgd2hlbiBjb21waWxlZCB3aXRoIGdjYyA0LCBhcyBhbm9ueW1vdXMgZW51
bXMKIC8vIGNhbiBiZSBpbXBsaWNpdGx5IGNhc3QgdG8gQmlnZ2VzdEludC4KLUdURVNUX0FQSV8g
QXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBh
Y3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEJpZ2dlc3RJbnQgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBCaWdnZXN0SW50IGFjdHVhbCk7CitHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBI
ZWxwZXJFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBsaHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IHJocyk7CiAKIC8vIFRoZSBo
ZWxwZXIgY2xhc3MgZm9yIHtBU1NFUlR8RVhQRUNUfV9FUS4gIFRoZSB0ZW1wbGF0ZSBhcmd1bWVu
dAogLy8gbGhzX2lzX251bGxfbGl0ZXJhbCBpcyB0cnVlIGlmZiB0aGUgZmlyc3QgYXJndW1lbnQg
dG8gQVNTRVJUX0VRKCkKQEAgLTEyOTIsMTIgKzE0MTQsMTEgQEAgY2xhc3MgRXFIZWxwZXIgewog
IHB1YmxpYzoKICAgLy8gVGhpcyB0ZW1wbGF0aXplZCB2ZXJzaW9uIGlzIGZvciB0aGUgZ2VuZXJh
bCBjYXNlLgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICBzdGF0aWMg
QXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHBy
ZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGV4cGVj
dGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDImIGFjdHVhbCkg
ewotICAgIHJldHVybiBDbXBIZWxwZXJFUShleHBlY3RlZF9leHByZXNzaW9uLCBhY3R1YWxfZXhw
cmVzc2lvbiwgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbCk7CisgIHN0
YXRpYyBBc3NlcnRpb25SZXN1bHQgQ29tcGFyZShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNz
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGxocywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiByaHMpIHsKKyAgICByZXR1
cm4gQ21wSGVscGVyRVEobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7
CiAgIH0KIAogICAvLyBXaXRoIHRoaXMgb3ZlcmxvYWRlZCB2ZXJzaW9uLCB3ZSBhbGxvdyBhbm9u
eW1vdXMgZW51bXMgdG8gYmUgdXNlZApAQCAtMTMwNiwxNyArMTQyNywxNiBAQCBjbGFzcyBFcUhl
bHBlciB7CiAgIC8vCiAgIC8vIEV2ZW4gdGhvdWdoIGl0cyBib2R5IGxvb2tzIHRoZSBzYW1lIGFz
IHRoZSBhYm92ZSB2ZXJzaW9uLCB3ZQogICAvLyBjYW5ub3QgbWVyZ2UgdGhlIHR3bywgYXMgaXQg
d2lsbCBtYWtlIGFub255bW91cyBlbnVtcyB1bmhhcHB5LgotICBzdGF0aWMgQXNzZXJ0aW9uUmVz
dWx0IENvbXBhcmUoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBleHBlY3RlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgYWN0dWFsKSB7Ci0gICAgcmV0
dXJuIENtcEhlbHBlckVRKGV4cGVjdGVkX2V4cHJlc3Npb24sIGFjdHVhbF9leHByZXNzaW9uLCBl
eHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsKTsKKyAgc3RhdGljIEFzc2Vy
dGlvblJlc3VsdCBDb21wYXJlKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGxocywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgcmhzKSB7CisgICAgcmV0dXJuIENtcEhl
bHBlckVRKGxoc19leHByZXNzaW9uLCByaHNfZXhwcmVzc2lvbiwgbGhzLCByaHMpOwogICB9CiB9
OwogCiAvLyBUaGlzIHNwZWNpYWxpemF0aW9uIGlzIHVzZWQgd2hlbiB0aGUgZmlyc3QgYXJndW1l
bnQgdG8gQVNTRVJUX0VRKCkKLS8vIGlzIGEgbnVsbCBwb2ludGVyIGxpdGVyYWwuCisvLyBpcyBh
IG51bGwgcG9pbnRlciBsaXRlcmFsLCBsaWtlIE5VTEwsIGZhbHNlLCBvciAwLgogdGVtcGxhdGUg
PD4KIGNsYXNzIEVxSGVscGVyPHRydWU+IHsKICBwdWJsaWM6CkBAIC0xMzI1LDI3ICsxNDQ1LDUz
IEBAIGNsYXNzIEVxSGVscGVyPHRydWU+IHsKICAgLy8gTk9UIGEgcG9pbnRlciwgZS5nLiBBU1NF
UlRfRVEoMCwgQW5JbnRGdW5jdGlvbigpKSBvcgogICAvLyBFWFBFQ1RfRVEoZmFsc2UsIGFfYm9v
bCkuCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gIHN0YXRpYyBBc3Nl
cnRpb25SZXN1bHQgQ29tcGFyZShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgZXhwZWN0ZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgYWN0dWFsKSB7Ci0g
ICAgcmV0dXJuIENtcEhlbHBlckVRKGV4cGVjdGVkX2V4cHJlc3Npb24sIGFjdHVhbF9leHByZXNz
aW9uLCBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsKTsKKyAgc3RhdGlj
IEFzc2VydGlvblJlc3VsdCBDb21wYXJlKAorICAgICAgY29uc3QgY2hhciogbGhzX2V4cHJlc3Np
b24sCisgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgIGNvbnN0IFQxJiBs
aHMsCisgICAgICBjb25zdCBUMiYgcmhzLAorICAgICAgLy8gVGhlIGZvbGxvd2luZyBsaW5lIHBy
ZXZlbnRzIHRoaXMgb3ZlcmxvYWQgZnJvbSBiZWluZyBjb25zaWRlcmVkIGlmIFQyCisgICAgICAv
LyBpcyBub3QgYSBwb2ludGVyIHR5cGUuICBXZSBuZWVkIHRoaXMgYmVjYXVzZSBBU1NFUlRfRVEo
TlVMTCwgbXlfcHRyKQorICAgICAgLy8gZXhwYW5kcyB0byBDb21wYXJlKCIiLCAiIiwgTlVMTCwg
bXlfcHRyKSwgd2hpY2ggcmVxdWlyZXMgYSBjb252ZXJzaW9uCisgICAgICAvLyB0byBtYXRjaCB0
aGUgU2VjcmV0KiBpbiB0aGUgb3RoZXIgb3ZlcmxvYWQsIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBt
YWtlCisgICAgICAvLyB0aGlzIHRlbXBsYXRlIG1hdGNoIGJldHRlci4KKyAgICAgIHR5cGVuYW1l
IEVuYWJsZUlmPCFpc19wb2ludGVyPFQyPjo6dmFsdWU+Ojp0eXBlKiA9IDApIHsKKyAgICByZXR1
cm4gQ21wSGVscGVyRVEobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7
CiAgIH0KIAotICAvLyBUaGlzIHZlcnNpb24gd2lsbCBiZSBwaWNrZWQgd2hlbiB0aGUgc2Vjb25k
IGFyZ3VtZW50IHRvCi0gIC8vIEFTU0VSVF9FUSgpIGlzIGEgcG9pbnRlciwgZS5nLiBBU1NFUlRf
RVEoTlVMTCwgYV9wb2ludGVyKS4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
Mj4KLSAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBDb21wYXJlKGNvbnN0IGNoYXIqIGV4cGVjdGVk
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFQxJiAvKiBleHBlY3RlZCAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFQyKiBhY3R1YWwpIHsKLSAgICAvLyBXZSBhbHJlYWR5IGtub3cgdGhhdCAnZXhwZWN0ZWQnIGlz
IGEgbnVsbCBwb2ludGVyLgotICAgIHJldHVybiBDbXBIZWxwZXJFUShleHBlY3RlZF9leHByZXNz
aW9uLCBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8VDIqPihOVUxMKSwgYWN0dWFsKTsKKyAgLy8gVGhpcyB2ZXJzaW9uIHdpbGwgYmUgcGlja2Vk
IHdoZW4gdGhlIHNlY29uZCBhcmd1bWVudCB0byBBU1NFUlRfRVEoKSBpcyBhCisgIC8vIHBvaW50
ZXIsIGUuZy4gQVNTRVJUX0VRKE5VTEwsIGFfcG9pbnRlcikuCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUoCisgICAgICBjb25zdCBjaGFy
KiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAg
ICAgLy8gV2UgdXNlZCB0byBoYXZlIGEgc2Vjb25kIHRlbXBsYXRlIHBhcmFtZXRlciBpbnN0ZWFk
IG9mIFNlY3JldCouICBUaGF0CisgICAgICAvLyB0ZW1wbGF0ZSBwYXJhbWV0ZXIgd291bGQgZGVk
dWNlIHRvICdsb25nJywgbWFraW5nIHRoaXMgYSBiZXR0ZXIgbWF0Y2gKKyAgICAgIC8vIHRoYW4g
dGhlIGZpcnN0IG92ZXJsb2FkIGV2ZW4gd2l0aG91dCB0aGUgZmlyc3Qgb3ZlcmxvYWQncyBFbmFi
bGVJZi4KKyAgICAgIC8vIFVuZm9ydHVuYXRlbHksIGdjYyB3aXRoIC1XY29udmVyc2lvbi1udWxs
IHdhcm5zIHdoZW4gInBhc3NpbmcgTlVMTCB0bworICAgICAgLy8gbm9uLXBvaW50ZXIgYXJndW1l
bnQiIChldmVuIGEgZGVkdWNlZCBpbnRlZ3JhbCBhcmd1bWVudCksIHNvIHRoZSBvbGQKKyAgICAg
IC8vIGltcGxlbWVudGF0aW9uIGNhdXNlZCB3YXJuaW5ncyBpbiB1c2VyIGNvZGUuCisgICAgICBT
ZWNyZXQqIC8qIGxocyAoTlVMTCkgKi8sCisgICAgICBUKiByaHMpIHsKKyAgICAvLyBXZSBhbHJl
YWR5IGtub3cgdGhhdCAnbGhzJyBpcyBhIG51bGwgcG9pbnRlci4KKyAgICByZXR1cm4gQ21wSGVs
cGVyRVEobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxUKj4oTlVMTCksIHJocyk7CiAgIH0KIH07CiAKKy8vIFNlcGFyYXRl
IHRoZSBlcnJvciBnZW5lcmF0aW5nIGNvZGUgZnJvbSB0aGUgY29kZSBwYXRoIHRvIHJlZHVjZSB0
aGUgc3RhY2sKKy8vIGZyYW1lIHNpemUgb2YgQ21wSGVscGVyT1AuIFRoaXMgaGVscHMgcmVkdWNl
IHRoZSBvdmVyaGVhZCBvZiBzb21lIHNhbml0aXplcnMKKy8vIHdoZW4gY2FsbGluZyBFWFBFQ1Rf
T1AgaW4gYSB0aWdodCBsb29wLgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4K
K0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJPcEZhaWx1cmUoY29uc3QgY2hhciogZXhwcjEsIGNv
bnN0IGNoYXIqIGV4cHIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUMSYgdmFsMSwgY29uc3QgVDImIHZhbDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIG9wKSB7CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkKKyAg
ICAgICAgIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgIiA8PCBvcCA8PCAiICgiIDw8
IGV4cHIyCisgICAgICAgICA8PCAiKSwgYWN0dWFsOiAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZSh2YWwxLCB2YWwyKQorICAgICAgICAgPDwgIiB2cyAiIDw8IEZvcm1hdEZv
ckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSh2YWwyLCB2YWwxKTsKK30KKwogLy8gQSBtYWNybyBm
b3IgaW1wbGVtZW50aW5nIHRoZSBoZWxwZXIgZnVuY3Rpb25zIG5lZWRlZCB0byBpbXBsZW1lbnQK
IC8vIEFTU0VSVF8/PyBhbmQgRVhQRUNUXz8/LiAgSXQgaXMgaGVyZSBqdXN0IHRvIGF2b2lkIGNv
cHktYW5kLXBhc3RlCiAvLyBvZiBzaW1pbGFyIGNvZGUuCkBAIC0xMzU2LDYgKzE1MDIsNyBAQCBj
bGFzcyBFcUhlbHBlcjx0cnVlPiB7CiAvLyB3aXRoIGdjYyA0LgogLy8KIC8vIElOVEVSTkFMIElN
UExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KKwogI2RlZmluZSBH
VEVTVF9JTVBMX0NNUF9IRUxQRVJfKG9wX25hbWUsIG9wKVwKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
MSwgdHlwZW5hbWUgVDI+XAogQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlciMjb3BfbmFtZShjb25z
dCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIsIFwKQEAgLTEzNjMsMTEgKzE1MTAsNyBA
QCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyIyNvcF9uYW1lKGNvbnN0IGNoYXIqIGV4cHIxLCBj
b25zdCBjaGFyKiBleHByMiwgXAogICBpZiAodmFsMSBvcCB2YWwyKSB7XAogICAgIHJldHVybiBB
c3NlcnRpb25TdWNjZXNzKCk7XAogICB9IGVsc2Uge1wKLSAgICBNZXNzYWdlIG1zZztcCi0gICAg
bXNnIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgIiAjb3AgIiAoIiA8PCBleHByMlwK
LSAgICAgICAgPDwgIiksIGFjdHVhbDogIiA8PCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2UodmFsMSwgdmFsMilcCi0gICAgICAgIDw8ICIgdnMgIiA8PCBGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2UodmFsMiwgdmFsMSk7XAotICAgIHJldHVybiBBc3NlcnRpb25GYWls
dXJlKG1zZyk7XAorICAgIHJldHVybiBDbXBIZWxwZXJPcEZhaWx1cmUoZXhwcjEsIGV4cHIyLCB2
YWwxLCB2YWwyLCAjb3ApO1wKICAgfVwKIH1cCiBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBD
bXBIZWxwZXIjI29wX25hbWUoXApAQCAtMTM4MCwyOSArMTUyMywyOSBAQCBHVEVTVF9JTVBMX0NN
UF9IRUxQRVJfKE5FLCAhPSk7CiAvLyBJbXBsZW1lbnRzIHRoZSBoZWxwZXIgZnVuY3Rpb24gZm9y
IHtBU1NFUlR8RVhQRUNUfV9MRQogR1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhMRSwgPD0pOwogLy8g
SW1wbGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fTFQKLUdU
RVNUX0lNUExfQ01QX0hFTFBFUl8oTFQsIDwgKTsKK0dURVNUX0lNUExfQ01QX0hFTFBFUl8oTFQs
IDwpOwogLy8gSW1wbGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVD
VH1fR0UKIEdURVNUX0lNUExfQ01QX0hFTFBFUl8oR0UsID49KTsKIC8vIEltcGxlbWVudHMgdGhl
IGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X0dUCi1HVEVTVF9JTVBMX0NNUF9I
RUxQRVJfKEdULCA+ICk7CitHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKEdULCA+KTsKIAogI3VuZGVm
IEdURVNUX0lNUExfQ01QX0hFTFBFUl8KIAogLy8gVGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FT
U0VSVHxFWFBFQ1R9X1NUUkVRLgogLy8KIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8g
Tk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KLUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENt
cEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVz
c2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogYWN0dWFsKTsKK0dURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBl
clNUUkVRKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMl9leHByZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMik7CiAKIC8v
IFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9TVFJDQVNFRVEuCiAvLwog
Ly8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFN
LgotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSQ0FTRUVRKGNvbnN0IGNo
YXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogYWN0dWFsKTsKK0dURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VF
UShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMyX2V4cHJlc3Npb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczIp
OwogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fU1RSTkUuCiAv
LwpAQCAtMTQyNCwxMCArMTU2NywxMCBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBI
ZWxwZXJTVFJDQVNFTkUoY29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKIC8vIEhlbHBlciBmdW5j
dGlvbiBmb3IgKl9TVFJFUSBvbiB3aWRlIHN0cmluZ3MuCiAvLwogLy8gSU5URVJOQUwgSU1QTEVN
RU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotR1RFU1RfQVBJXyBBc3Nl
cnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgd2NoYXJfdCogZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiBhY3R1YWwpOworR1RFU1RfQVBJXyBBc3Nl
cnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMyX2V4
cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB3Y2hhcl90KiBzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHdjaGFyX3QqIHMyKTsKIAogLy8gSGVscGVyIGZ1bmN0aW9uIGZvciAqX1NUUk5FIG9u
IHdpZGUgc3RyaW5ncy4KIC8vCkBAIC0xNDg1LDI4ICsxNjI4LDI4IEBAIG5hbWVzcGFjZSBpbnRl
cm5hbCB7CiAvLwogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEg
VVNFUiBQUk9HUkFNLgogdGVtcGxhdGUgPHR5cGVuYW1lIFJhd1R5cGU+Ci1Bc3NlcnRpb25SZXN1
bHQgQ21wSGVscGVyRmxvYXRpbmdQb2ludEVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSYXdUeXBlIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSYXdUeXBlIGFjdHVhbCkgewotICBjb25zdCBGbG9hdGluZ1BvaW50PFJhd1R5cGU+
IGxocyhleHBlY3RlZCksIHJocyhhY3R1YWwpOworQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckZs
b2F0aW5nUG9pbnRFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhd1R5cGUgbGhzX3ZhbHVl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdUeXBlIHJoc192
YWx1ZSkgeworICBjb25zdCBGbG9hdGluZ1BvaW50PFJhd1R5cGU+IGxocyhsaHNfdmFsdWUpLCBy
aHMocmhzX3ZhbHVlKTsKIAogICBpZiAobGhzLkFsbW9zdEVxdWFscyhyaHMpKSB7CiAgICAgcmV0
dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQogCi0gIFN0clN0cmVhbSBleHBlY3RlZF9zczsK
LSAgZXhwZWN0ZWRfc3MgPDwgc3RkOjpzZXRwcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxS
YXdUeXBlPjo6ZGlnaXRzMTAgKyAyKQotICAgICAgICAgICAgICA8PCBleHBlY3RlZDsKKyAgOjpz
dGQ6OnN0cmluZ3N0cmVhbSBsaHNfc3M7CisgIGxoc19zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihz
dGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+OjpkaWdpdHMxMCArIDIpCisgICAgICAgICA8PCBs
aHNfdmFsdWU7CiAKLSAgU3RyU3RyZWFtIGFjdHVhbF9zczsKLSAgYWN0dWFsX3NzIDw8IHN0ZDo6
c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8UmF3VHlwZT46OmRpZ2l0czEwICsgMikK
LSAgICAgICAgICAgIDw8IGFjdHVhbDsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSByaHNfc3M7Cisg
IHJoc19zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+
OjpkaWdpdHMxMCArIDIpCisgICAgICAgICA8PCByaHNfdmFsdWU7CiAKLSAgcmV0dXJuIEVxRmFp
bHVyZShleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIGFjdHVhbF9leHBy
ZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIFN0clN0cmVhbVRvU3RyaW5nKCZleHBlY3RlZF9z
cyksCi0gICAgICAgICAgICAgICAgICAgU3RyU3RyZWFtVG9TdHJpbmcoJmFjdHVhbF9zcyksCisg
IHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgcmhz
X2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJmxo
c19zcyksCisgICAgICAgICAgICAgICAgICAgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnJoc19zcyks
CiAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwogfQogCkBAIC0xNTQ4LDkgKzE2OTEsOSBAQCBj
bGFzcyBHVEVTVF9BUElfIEFzc2VydEhlbHBlciB7CiAgICAgICAgIDogdHlwZSh0KSwgZmlsZShz
cmNmaWxlKSwgbGluZShsaW5lX251bSksIG1lc3NhZ2UobXNnKSB7IH0KIAogICAgIFRlc3RQYXJ0
UmVzdWx0OjpUeXBlIGNvbnN0IHR5cGU7Ci0gICAgY29uc3QgY2hhciogICAgICAgIGNvbnN0IGZp
bGU7Ci0gICAgaW50ICAgICAgICAgICAgICAgIGNvbnN0IGxpbmU7Ci0gICAgU3RyaW5nICAgICAg
ICAgICAgIGNvbnN0IG1lc3NhZ2U7CisgICAgY29uc3QgY2hhciogY29uc3QgZmlsZTsKKyAgICBp
bnQgY29uc3QgbGluZTsKKyAgICBzdGQ6OnN0cmluZyBjb25zdCBtZXNzYWdlOwogCiAgICBwcml2
YXRlOgogICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQXNzZXJ0SGVscGVyRGF0
YSk7CkBAIC0xNTY0LDkgKzE3MDcsMTMgQEAgY2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRIZWxwZXIg
ewogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiAKICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAot
Ly8gVGhlIGFic3RyYWN0IGJhc2UgY2xhc3MgdGhhdCBhbGwgdmFsdWUtcGFyYW1ldGVyaXplZCB0
ZXN0cyBpbmhlcml0IGZyb20uCisvLyBUaGUgcHVyZSBpbnRlcmZhY2UgY2xhc3MgdGhhdCBhbGwg
dmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBpbmhlcml0IGZyb20uCisvLyBBIHZhbHVlLXBhcmFt
ZXRlcml6ZWQgY2xhc3MgbXVzdCBpbmhlcml0IGZyb20gYm90aCA6OnRlc3Rpbmc6OlRlc3QgYW5k
CisvLyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZS4gSW4gbW9zdCBjYXNlcyB0aGF0IGp1
c3QgbWVhbnMgaW5oZXJpdGluZworLy8gZnJvbSA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW0sIGJ1
dCBtb3JlIGNvbXBsaWNhdGVkIHRlc3QgaGllcmFyY2hpZXMKKy8vIG1heSBuZWVkIHRvIGluaGVy
aXQgZnJvbSBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UgYXQgZGlmZmVyZW50IGxldmVscy4K
IC8vCi0vLyBUaGlzIGNsYXNzIGFkZHMgc3VwcG9ydCBmb3IgYWNjZXNzaW5nIHRoZSB0ZXN0IHBh
cmFtZXRlciB2YWx1ZSB2aWEKKy8vIFRoaXMgaW50ZXJmYWNlIGhhcyBzdXBwb3J0IGZvciBhY2Nl
c3NpbmcgdGhlIHRlc3QgcGFyYW1ldGVyIHZhbHVlIHZpYQogLy8gdGhlIEdldFBhcmFtKCkgbWV0
aG9kLgogLy8KIC8vIFVzZSBpdCB3aXRoIG9uZSBvZiB0aGUgcGFyYW1ldGVyIGdlbmVyYXRvciBk
ZWZpbmluZyBmdW5jdGlvbnMsIGxpa2UgUmFuZ2UoKSwKQEAgLTE1OTUsMTMgKzE3NDIsMjIgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRIZWxwZXIgewogLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoT25lVG9UZW5SYW5nZSwgRm9vVGVzdCwgOjp0ZXN0aW5nOjpSYW5nZSgxLCAxMCkpOwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFRlc3RXaXRoUGFyYW0gOiBwdWJsaWMgVGVzdCB7
CitjbGFzcyBXaXRoUGFyYW1JbnRlcmZhY2UgewogIHB1YmxpYzoKICAgdHlwZWRlZiBUIFBhcmFt
VHlwZTsKKyAgdmlydHVhbCB+V2l0aFBhcmFtSW50ZXJmYWNlKCkge30KIAogICAvLyBUaGUgY3Vy
cmVudCBwYXJhbWV0ZXIgdmFsdWUuIElzIGFsc28gYXZhaWxhYmxlIGluIHRoZSB0ZXN0IGZpeHR1
cmUncwotICAvLyBjb25zdHJ1Y3Rvci4KLSAgY29uc3QgUGFyYW1UeXBlJiBHZXRQYXJhbSgpIGNv
bnN0IHsgcmV0dXJuICpwYXJhbWV0ZXJfOyB9CisgIC8vIGNvbnN0cnVjdG9yLiBUaGlzIG1lbWJl
ciBmdW5jdGlvbiBpcyBub24tc3RhdGljLCBldmVuIHRob3VnaCBpdCBvbmx5CisgIC8vIHJlZmVy
ZW5jZXMgc3RhdGljIGRhdGEsIHRvIHJlZHVjZSB0aGUgb3Bwb3J0dW5pdHkgZm9yIGluY29ycmVj
dCB1c2VzCisgIC8vIGxpa2Ugd3JpdGluZyAnV2l0aFBhcmFtSW50ZXJmYWNlPGJvb2w+OjpHZXRQ
YXJhbSgpJyBmb3IgYSB0ZXN0IHRoYXQKKyAgLy8gdXNlcyBhIGZpeHR1cmUgd2hvc2UgcGFyYW1l
dGVyIHR5cGUgaXMgaW50LgorICBjb25zdCBQYXJhbVR5cGUmIEdldFBhcmFtKCkgY29uc3Qgewor
ICAgIEdURVNUX0NIRUNLXyhwYXJhbWV0ZXJfICE9IE5VTEwpCisgICAgICAgIDw8ICJHZXRQYXJh
bSgpIGNhbiBvbmx5IGJlIGNhbGxlZCBpbnNpZGUgYSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3Qg
IgorICAgICAgICA8PCAiLS0gZGlkIHlvdSBpbnRlbmQgdG8gd3JpdGUgVEVTVF9QIGluc3RlYWQg
b2YgVEVTVF9GPyI7CisgICAgcmV0dXJuICpwYXJhbWV0ZXJfOworICB9CiAKICBwcml2YXRlOgog
ICAvLyBTZXRzIHBhcmFtZXRlciB2YWx1ZS4gVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3Ig
bWFraW5nIHN1cmUgdGhlIHZhbHVlCkBAIC0xNjEzLDEyICsxNzY5LDE5IEBAIGNsYXNzIFRlc3RX
aXRoUGFyYW0gOiBwdWJsaWMgVGVzdCB7CiAgIC8vIFN0YXRpYyB2YWx1ZSB1c2VkIGZvciBhY2Nl
c3NpbmcgcGFyYW1ldGVyIGR1cmluZyBhIHRlc3QgbGlmZXRpbWUuCiAgIHN0YXRpYyBjb25zdCBQ
YXJhbVR5cGUqIHBhcmFtZXRlcl87CiAKLSAgLy8gVGVzdENsYXNzIG11c3QgYmUgYSBzdWJjbGFz
cyBvZiBUZXN0V2l0aFBhcmFtPFQ+LgorICAvLyBUZXN0Q2xhc3MgbXVzdCBiZSBhIHN1YmNsYXNz
IG9mIFdpdGhQYXJhbUludGVyZmFjZTxUPiBhbmQgVGVzdC4KICAgdGVtcGxhdGUgPGNsYXNzIFRl
c3RDbGFzcz4gZnJpZW5kIGNsYXNzIGludGVybmFsOjpQYXJhbWV0ZXJpemVkVGVzdEZhY3Rvcnk7
CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46
OnBhcmFtZXRlcl8gPSBOVUxMOworY29uc3QgVCogV2l0aFBhcmFtSW50ZXJmYWNlPFQ+OjpwYXJh
bWV0ZXJfID0gTlVMTDsKKworLy8gTW9zdCB2YWx1ZS1wYXJhbWV0ZXJpemVkIGNsYXNzZXMgY2Fu
IGlnbm9yZSB0aGUgZXhpc3RlbmNlIG9mCisvLyBXaXRoUGFyYW1JbnRlcmZhY2UsIGFuZCBjYW4g
anVzdCBpbmhlcml0IGZyb20gOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtLgorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK2NsYXNzIFRlc3RXaXRoUGFyYW0gOiBwdWJsaWMgVGVzdCwgcHVibGljIFdp
dGhQYXJhbUludGVyZmFjZTxUPiB7Cit9OwogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9U
RVNUCiAKQEAgLTE2NDAsMjMgKzE4MDMsMjMgQEAgY29uc3QgVCogVGVzdFdpdGhQYXJhbTxUPjo6
cGFyYW1ldGVyXyA9IE5VTEw7CiAvLyB1c3VhbGx5IHdhbnQgdGhlIGZhaWwtZmFzdCBiZWhhdmlv
ciBvZiBGQUlMIGFuZCBBU1NFUlRfKiwgYnV0IHRob3NlCiAvLyB3cml0aW5nIGRhdGEtZHJpdmVu
IHRlc3RzIG9mdGVuIGZpbmQgdGhlbXNlbHZlcyB1c2luZyBBRERfRkFJTFVSRQogLy8gYW5kIEVY
UEVDVF8qIG1vcmUuCi0vLwotLy8gRXhhbXBsZXM6Ci0vLwotLy8gICBFWFBFQ1RfVFJVRShzZXJ2
ZXIuU3RhdHVzSXNPSygpKTsKLS8vICAgQVNTRVJUX0ZBTFNFKHNlcnZlci5IYXNQZW5kaW5nUmVx
dWVzdChwb3J0KSkKLS8vICAgICAgIDw8ICJUaGVyZSBhcmUgc3RpbGwgcGVuZGluZyByZXF1ZXN0
cyAiIDw8ICJvbiBwb3J0ICIgPDwgcG9ydDsKIAogLy8gR2VuZXJhdGVzIGEgbm9uZmF0YWwgZmFp
bHVyZSB3aXRoIGEgZ2VuZXJpYyBtZXNzYWdlLgogI2RlZmluZSBBRERfRkFJTFVSRSgpIEdURVNU
X05PTkZBVEFMX0ZBSUxVUkVfKCJGYWlsZWQiKQogCisvLyBHZW5lcmF0ZXMgYSBub25mYXRhbCBm
YWlsdXJlIGF0IHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlvbiB3aXRoCisvLyBhIGdlbmVy
aWMgbWVzc2FnZS4KKyNkZWZpbmUgQUREX0ZBSUxVUkVfQVQoZmlsZSwgbGluZSkgXAorICBHVEVT
VF9NRVNTQUdFX0FUXyhmaWxlLCBsaW5lLCAiRmFpbGVkIiwgXAorICAgICAgICAgICAgICAgICAg
ICA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlKQorCiAvLyBHZW5l
cmF0ZXMgYSBmYXRhbCBmYWlsdXJlIHdpdGggYSBnZW5lcmljIG1lc3NhZ2UuCiAjZGVmaW5lIEdU
RVNUX0ZBSUwoKSBHVEVTVF9GQVRBTF9GQUlMVVJFXygiRmFpbGVkIikKIAogLy8gRGVmaW5lIHRo
aXMgbWFjcm8gdG8gMSB0byBvbWl0IHRoZSBkZWZpbml0aW9uIG9mIEZBSUwoKSwgd2hpY2ggaXMg
YQogLy8gZ2VuZXJpYyBuYW1lIGFuZCBjbGFzaGVzIHdpdGggc29tZSBvdGhlciBsaWJyYXJpZXMu
CiAjaWYgIUdURVNUX0RPTlRfREVGSU5FX0ZBSUwKLSNkZWZpbmUgRkFJTCgpIEdURVNUX0ZBSUwo
KQorIyBkZWZpbmUgRkFJTCgpIEdURVNUX0ZBSUwoKQogI2VuZGlmCiAKIC8vIEdlbmVyYXRlcyBh
IHN1Y2Nlc3Mgd2l0aCBhIGdlbmVyaWMgbWVzc2FnZS4KQEAgLTE2NjUsNyArMTgyOCw3IEBAIGNv
bnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogLy8gRGVmaW5lIHRo
aXMgbWFjcm8gdG8gMSB0byBvbWl0IHRoZSBkZWZpbml0aW9uIG9mIFNVQ0NFRUQoKSwgd2hpY2gK
IC8vIGlzIGEgZ2VuZXJpYyBuYW1lIGFuZCBjbGFzaGVzIHdpdGggc29tZSBvdGhlciBsaWJyYXJp
ZXMuCiAjaWYgIUdURVNUX0RPTlRfREVGSU5FX1NVQ0NFRUQKLSNkZWZpbmUgU1VDQ0VFRCgpIEdU
RVNUX1NVQ0NFRUQoKQorIyBkZWZpbmUgU1VDQ0VFRCgpIEdURVNUX1NVQ0NFRUQoKQogI2VuZGlm
CiAKIC8vIE1hY3JvcyBmb3IgdGVzdGluZyBleGNlcHRpb25zLgpAQCAtMTY5NCwxMyArMTg1Nywx
MyBAQCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIC8vIEFz
c2VydGlvblJlc3VsdC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSBBc3NlcnRp
b25SZXN1bHQgd2l0aAogLy8gdGhlc2UgbWFjcm9zIHNlZSBjb21tZW50cyBvbiB0aGF0IGNsYXNz
LgogI2RlZmluZSBFWFBFQ1RfVFJVRShjb25kaXRpb24pIFwKLSAgR1RFU1RfVEVTVF9CT09MRUFO
Xyhjb25kaXRpb24sICNjb25kaXRpb24sIGZhbHNlLCB0cnVlLCBcCisgIEdURVNUX1RFU1RfQk9P
TEVBTl8oKGNvbmRpdGlvbiksICNjb25kaXRpb24sIGZhbHNlLCB0cnVlLCBcCiAgICAgICAgICAg
ICAgICAgICAgICAgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8pCiAjZGVmaW5lIEVYUEVDVF9GQUxT
RShjb25kaXRpb24pIFwKICAgR1RFU1RfVEVTVF9CT09MRUFOXyghKGNvbmRpdGlvbiksICNjb25k
aXRpb24sIHRydWUsIGZhbHNlLCBcCiAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfTk9ORkFU
QUxfRkFJTFVSRV8pCiAjZGVmaW5lIEFTU0VSVF9UUlVFKGNvbmRpdGlvbikgXAotICBHVEVTVF9U
RVNUX0JPT0xFQU5fKGNvbmRpdGlvbiwgI2NvbmRpdGlvbiwgZmFsc2UsIHRydWUsIFwKKyAgR1RF
U1RfVEVTVF9CT09MRUFOXygoY29uZGl0aW9uKSwgI2NvbmRpdGlvbiwgZmFsc2UsIHRydWUsIFwK
ICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9GQVRBTF9GQUlMVVJFXykKICNkZWZpbmUgQVNT
RVJUX0ZBTFNFKGNvbmRpdGlvbikgXAogICBHVEVTVF9URVNUX0JPT0xFQU5fKCEoY29uZGl0aW9u
KSwgI2NvbmRpdGlvbiwgdHJ1ZSwgZmFsc2UsIFwKQEAgLTE3MDgsMTYgKzE4NzEsMTYgQEAgY29u
c3QgVCogVGVzdFdpdGhQYXJhbTxUPjo6cGFyYW1ldGVyXyA9IE5VTEw7CiAKIC8vIEluY2x1ZGVz
IHRoZSBhdXRvLWdlbmVyYXRlZCBoZWFkZXIgdGhhdCBpbXBsZW1lbnRzIGEgZmFtaWx5IG9mCiAv
LyBnZW5lcmljIHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9zLgotI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0X3ByZWRfaW1wbC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIgogCiAv
LyBNYWNyb3MgZm9yIHRlc3RpbmcgZXF1YWxpdGllcyBhbmQgaW5lcXVhbGl0aWVzLgogLy8KLS8v
ICAgICoge0FTU0VSVHxFWFBFQ1R9X0VRKGV4cGVjdGVkLCBhY3R1YWwpOiBUZXN0cyB0aGF0IGV4
cGVjdGVkID09IGFjdHVhbAotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTkUodjEsIHYyKTogICAg
ICAgICAgIFRlc3RzIHRoYXQgdjEgIT0gdjIKLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0xUKHYx
LCB2Mik6ICAgICAgICAgICBUZXN0cyB0aGF0IHYxIDwgdjIKLS8vICAgICoge0FTU0VSVHxFWFBF
Q1R9X0xFKHYxLCB2Mik6ICAgICAgICAgICBUZXN0cyB0aGF0IHYxIDw9IHYyCi0vLyAgICAqIHtB
U1NFUlR8RVhQRUNUfV9HVCh2MSwgdjIpOiAgICAgICAgICAgVGVzdHMgdGhhdCB2MSA+IHYyCi0v
LyAgICAqIHtBU1NFUlR8RVhQRUNUfV9HRSh2MSwgdjIpOiAgICAgICAgICAgVGVzdHMgdGhhdCB2
MSA+PSB2MgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fRVEodjEsIHYyKTogVGVzdHMgdGhhdCB2
MSA9PSB2MgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTkUodjEsIHYyKTogVGVzdHMgdGhhdCB2
MSAhPSB2MgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTFQodjEsIHYyKTogVGVzdHMgdGhhdCB2
MSA8IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9MRSh2MSwgdjIpOiBUZXN0cyB0aGF0IHYx
IDw9IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9HVCh2MSwgdjIpOiBUZXN0cyB0aGF0IHYx
ID4gdjIKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0dFKHYxLCB2Mik6IFRlc3RzIHRoYXQgdjEg
Pj0gdjIKIC8vCiAvLyBXaGVuIHRoZXkgYXJlIG5vdCwgR29vZ2xlIFRlc3QgcHJpbnRzIGJvdGgg
dGhlIHRlc3RlZCBleHByZXNzaW9ucyBhbmQKIC8vIHRoZWlyIGFjdHVhbCB2YWx1ZXMuICBUaGUg
dmFsdWVzIG11c3QgYmUgY29tcGF0aWJsZSBidWlsdC1pbiB0eXBlcywKQEAgLTE3MzksOCArMTkw
Miw4IEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogLy8g
ICBhcmUgcmVsYXRlZCwgbm90IGhvdyB0aGVpciBjb250ZW50IGlzIHJlbGF0ZWQuICBUbyBjb21w
YXJlIHR3byBDCiAvLyAgIHN0cmluZ3MgYnkgY29udGVudCwgdXNlIHtBU1NFUlR8RVhQRUNUfV9T
VFIqKCkuCiAvLwotLy8gICAzLiB7QVNTRVJUfEVYUEVDVH1fRVEoZXhwZWN0ZWQsIGFjdHVhbCkg
aXMgcHJlZmVycmVkIHRvCi0vLyAgIHtBU1NFUlR8RVhQRUNUfV9UUlVFKGV4cGVjdGVkID09IGFj
dHVhbCksIGFzIHRoZSBmb3JtZXIgdGVsbHMgeW91CisvLyAgIDMuIHtBU1NFUlR8RVhQRUNUfV9F
USh2MSwgdjIpIGlzIHByZWZlcnJlZCB0bworLy8gICB7QVNTRVJUfEVYUEVDVH1fVFJVRSh2MSA9
PSB2MiksIGFzIHRoZSBmb3JtZXIgdGVsbHMgeW91CiAvLyAgIHdoYXQgdGhlIGFjdHVhbCB2YWx1
ZSBpcyB3aGVuIGl0IGZhaWxzLCBhbmQgc2ltaWxhcmx5IGZvciB0aGUKIC8vICAgb3RoZXIgY29t
cGFyaXNvbnMuCiAvLwpAQCAtMTc1NiwxMiArMTkxOSwxMiBAQCBjb25zdCBUKiBUZXN0V2l0aFBh
cmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIC8vICAgQVNTRVJUX0xUKGksIGFycmF5X3NpemUp
OwogLy8gICBBU1NFUlRfR1QocmVjb3Jkcy5zaXplKCksIDApIDw8ICJUaGVyZSBpcyBubyByZWNv
cmQgbGVmdC4iOwogCi0jZGVmaW5lIEVYUEVDVF9FUShleHBlY3RlZCwgYWN0dWFsKSBcCisjZGVm
aW5lIEVYUEVDVF9FUSh2YWwxLCB2YWwyKSBcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0
aW5nOjppbnRlcm5hbDo6IFwKLSAgICAgICAgICAgICAgICAgICAgICBFcUhlbHBlcjxHVEVTVF9J
U19OVUxMX0xJVEVSQUxfKGV4cGVjdGVkKT46OkNvbXBhcmUsIFwKLSAgICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZCwgYWN0dWFsKQotI2RlZmluZSBFWFBFQ1RfTkUoZXhwZWN0ZWQsIGFjdHVh
bCkgXAotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBl
ck5FLCBleHBlY3RlZCwgYWN0dWFsKQorICAgICAgICAgICAgICAgICAgICAgIEVxSGVscGVyPEdU
RVNUX0lTX05VTExfTElURVJBTF8odmFsMSk+OjpDb21wYXJlLCBcCisgICAgICAgICAgICAgICAg
ICAgICAgdmFsMSwgdmFsMikKKyNkZWZpbmUgRVhQRUNUX05FKHZhbDEsIHZhbDIpIFwKKyAgRVhQ
RUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJORSwgdmFsMSwg
dmFsMikKICNkZWZpbmUgRVhQRUNUX0xFKHZhbDEsIHZhbDIpIFwKICAgRVhQRUNUX1BSRURfRk9S
TUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJMRSwgdmFsMSwgdmFsMikKICNkZWZp
bmUgRVhQRUNUX0xUKHZhbDEsIHZhbDIpIFwKQEAgLTE3NzEsMjIgKzE5MzQsNDkgQEAgY29uc3Qg
VCogVGVzdFdpdGhQYXJhbTxUPjo6cGFyYW1ldGVyXyA9IE5VTEw7CiAjZGVmaW5lIEVYUEVDVF9H
VCh2YWwxLCB2YWwyKSBcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q21wSGVscGVyR1QsIHZhbDEsIHZhbDIpCiAKLSNkZWZpbmUgQVNTRVJUX0VRKGV4cGVjdGVk
LCBhY3R1YWwpIFwKKyNkZWZpbmUgR1RFU1RfQVNTRVJUX0VRKHZhbDEsIHZhbDIpIFwKICAgQVNT
RVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjogXAotICAgICAgICAgICAgICAg
ICAgICAgIEVxSGVscGVyPEdURVNUX0lTX05VTExfTElURVJBTF8oZXhwZWN0ZWQpPjo6Q29tcGFy
ZSwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLCBhY3R1YWwpCi0jZGVmaW5lIEFT
U0VSVF9ORSh2YWwxLCB2YWwyKSBcCisgICAgICAgICAgICAgICAgICAgICAgRXFIZWxwZXI8R1RF
U1RfSVNfTlVMTF9MSVRFUkFMXyh2YWwxKT46OkNvbXBhcmUsIFwKKyAgICAgICAgICAgICAgICAg
ICAgICB2YWwxLCB2YWwyKQorI2RlZmluZSBHVEVTVF9BU1NFUlRfTkUodmFsMSwgdmFsMikgXAog
ICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlck5FLCB2
YWwxLCB2YWwyKQotI2RlZmluZSBBU1NFUlRfTEUodmFsMSwgdmFsMikgXAorI2RlZmluZSBHVEVT
VF9BU1NFUlRfTEUodmFsMSwgdmFsMikgXAogICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkNtcEhlbHBlckxFLCB2YWwxLCB2YWwyKQotI2RlZmluZSBBU1NFUlRfTFQo
dmFsMSwgdmFsMikgXAorI2RlZmluZSBHVEVTVF9BU1NFUlRfTFQodmFsMSwgdmFsMikgXAogICBB
U1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckxULCB2YWwx
LCB2YWwyKQotI2RlZmluZSBBU1NFUlRfR0UodmFsMSwgdmFsMikgXAorI2RlZmluZSBHVEVTVF9B
U1NFUlRfR0UodmFsMSwgdmFsMikgXAogICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6
aW50ZXJuYWw6OkNtcEhlbHBlckdFLCB2YWwxLCB2YWwyKQotI2RlZmluZSBBU1NFUlRfR1QodmFs
MSwgdmFsMikgXAorI2RlZmluZSBHVEVTVF9BU1NFUlRfR1QodmFsMSwgdmFsMikgXAogICBBU1NF
UlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckdULCB2YWwxLCB2
YWwyKQogCi0vLyBDIFN0cmluZyBDb21wYXJpc29ucy4gIEFsbCB0ZXN0cyB0cmVhdCBOVUxMIGFu
ZCBhbnkgbm9uLU5VTEwgc3RyaW5nCisvLyBEZWZpbmUgbWFjcm8gR1RFU1RfRE9OVF9ERUZJTkVf
QVNTRVJUX1hZIHRvIDEgdG8gb21pdCB0aGUgZGVmaW5pdGlvbiBvZgorLy8gQVNTRVJUX1hZKCks
IHdoaWNoIGNsYXNoZXMgd2l0aCBzb21lIHVzZXJzJyBvd24gY29kZS4KKworI2lmICFHVEVTVF9E
T05UX0RFRklORV9BU1NFUlRfRVEKKyMgZGVmaW5lIEFTU0VSVF9FUSh2YWwxLCB2YWwyKSBHVEVT
VF9BU1NFUlRfRVEodmFsMSwgdmFsMikKKyNlbmRpZgorCisjaWYgIUdURVNUX0RPTlRfREVGSU5F
X0FTU0VSVF9ORQorIyBkZWZpbmUgQVNTRVJUX05FKHZhbDEsIHZhbDIpIEdURVNUX0FTU0VSVF9O
RSh2YWwxLCB2YWwyKQorI2VuZGlmCisKKyNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX0xF
CisjIGRlZmluZSBBU1NFUlRfTEUodmFsMSwgdmFsMikgR1RFU1RfQVNTRVJUX0xFKHZhbDEsIHZh
bDIpCisjZW5kaWYKKworI2lmICFHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfTFQKKyMgZGVmaW5l
IEFTU0VSVF9MVCh2YWwxLCB2YWwyKSBHVEVTVF9BU1NFUlRfTFQodmFsMSwgdmFsMikKKyNlbmRp
ZgorCisjaWYgIUdURVNUX0RPTlRfREVGSU5FX0FTU0VSVF9HRQorIyBkZWZpbmUgQVNTRVJUX0dF
KHZhbDEsIHZhbDIpIEdURVNUX0FTU0VSVF9HRSh2YWwxLCB2YWwyKQorI2VuZGlmCisKKyNpZiAh
R1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX0dUCisjIGRlZmluZSBBU1NFUlRfR1QodmFsMSwgdmFs
MikgR1RFU1RfQVNTRVJUX0dUKHZhbDEsIHZhbDIpCisjZW5kaWYKKworLy8gQy1zdHJpbmcgQ29t
cGFyaXNvbnMuICBBbGwgdGVzdHMgdHJlYXQgTlVMTCBhbmQgYW55IG5vbi1OVUxMIHN0cmluZwog
Ly8gYXMgZGlmZmVyZW50LiAgVHdvIE5VTExzIGFyZSBlcXVhbC4KIC8vCiAvLyAgICAqIHtBU1NF
UlR8RVhQRUNUfV9TVFJFUShzMSwgczIpOiAgICAgVGVzdHMgdGhhdCBzMSA9PSBzMgpAQCAtMTgw
MiwyOSArMTk5MiwyOSBAQCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0g
TlVMTDsKIC8vCiAvLyBUaGVzZSBtYWNyb3MgZXZhbHVhdGUgdGhlaXIgYXJndW1lbnRzIGV4YWN0
bHkgb25jZS4KIAotI2RlZmluZSBFWFBFQ1RfU1RSRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAotICBF
WFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkVRLCBl
eHBlY3RlZCwgYWN0dWFsKQorI2RlZmluZSBFWFBFQ1RfU1RSRVEoczEsIHMyKSBcCisgIEVYUEVD
VF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSRVEsIHMxLCBz
MikKICNkZWZpbmUgRVhQRUNUX1NUUk5FKHMxLCBzMikgXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUk5FLCBzMSwgczIpCi0jZGVmaW5lIEVY
UEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAotICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkNBU0VFUSwgZXhwZWN0ZWQsIGFjdHVh
bCkKKyNkZWZpbmUgRVhQRUNUX1NUUkNBU0VFUShzMSwgczIpIFwKKyAgRVhQRUNUX1BSRURfRk9S
TUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJDQVNFRVEsIHMxLCBzMikKICNk
ZWZpbmUgRVhQRUNUX1NUUkNBU0VORShzMSwgczIpXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6
dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkNBU0VORSwgczEsIHMyKQogCi0jZGVmaW5l
IEFTU0VSVF9TVFJFUShleHBlY3RlZCwgYWN0dWFsKSBcCi0gIEFTU0VSVF9QUkVEX0ZPUk1BVDIo
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSRVEsIGV4cGVjdGVkLCBhY3R1YWwpCisj
ZGVmaW5lIEFTU0VSVF9TVFJFUShzMSwgczIpIFwKKyAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRl
c3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJFUSwgczEsIHMyKQogI2RlZmluZSBBU1NFUlRf
U1RSTkUoczEsIHMyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q21wSGVscGVyU1RSTkUsIHMxLCBzMikKLSNkZWZpbmUgQVNTRVJUX1NUUkNBU0VFUShleHBl
Y3RlZCwgYWN0dWFsKSBcCi0gIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q21wSGVscGVyU1RSQ0FTRUVRLCBleHBlY3RlZCwgYWN0dWFsKQorI2RlZmluZSBBU1NFUlRf
U1RSQ0FTRUVRKHMxLCBzMikgXAorICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkNtcEhlbHBlclNUUkNBU0VFUSwgczEsIHMyKQogI2RlZmluZSBBU1NFUlRfU1RSQ0FT
RU5FKHMxLCBzMilcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
Q21wSGVscGVyU1RSQ0FTRU5FLCBzMSwgczIpCiAKIC8vIE1hY3JvcyBmb3IgY29tcGFyaW5nIGZs
b2F0aW5nLXBvaW50IG51bWJlcnMuCiAvLwotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fRkxPQVRf
RVEoZXhwZWN0ZWQsIGFjdHVhbCk6CisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9GTE9BVF9FUSh2
YWwxLCB2YWwyKToKIC8vICAgICAgICAgVGVzdHMgdGhhdCB0d28gZmxvYXQgdmFsdWVzIGFyZSBh
bG1vc3QgZXF1YWwuCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9ET1VCTEVfRVEoZXhwZWN0ZWQs
IGFjdHVhbCk6CisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9ET1VCTEVfRVEodmFsMSwgdmFsMik6
CiAvLyAgICAgICAgIFRlc3RzIHRoYXQgdHdvIGRvdWJsZSB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVh
bC4KIC8vICAgICoge0FTU0VSVHxFWFBFQ1R9X05FQVIodjEsIHYyLCBhYnNfZXJyb3IpOgogLy8g
ICAgICAgICBUZXN0cyB0aGF0IHYxIGFuZCB2MiBhcmUgd2l0aGluIHRoZSBnaXZlbiBkaXN0YW5j
ZSB0byBlYWNoIG90aGVyLgpAQCAtMTgzNCwyMSArMjAyNCwyMSBAQCBjb25zdCBUKiBUZXN0V2l0
aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIC8vIEZsb2F0aW5nUG9pbnQgdGVtcGxhdGUg
Y2xhc3MgaW4gZ3Rlc3QtaW50ZXJuYWwuaCBpZiB5b3UgYXJlCiAvLyBpbnRlcmVzdGVkIGluIHRo
ZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgogCi0jZGVmaW5lIEVYUEVDVF9GTE9BVF9FUShleHBl
Y3RlZCwgYWN0dWFsKVwKKyNkZWZpbmUgRVhQRUNUX0ZMT0FUX0VRKHZhbDEsIHZhbDIpXAogICBF
WFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckZsb2F0aW5n
UG9pbnRFUTxmbG9hdD4sIFwKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwgYWN0dWFs
KQorICAgICAgICAgICAgICAgICAgICAgIHZhbDEsIHZhbDIpCiAKLSNkZWZpbmUgRVhQRUNUX0RP
VUJMRV9FUShleHBlY3RlZCwgYWN0dWFsKVwKKyNkZWZpbmUgRVhQRUNUX0RPVUJMRV9FUSh2YWwx
LCB2YWwyKVwKICAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBI
ZWxwZXJGbG9hdGluZ1BvaW50RVE8ZG91YmxlPiwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4
cGVjdGVkLCBhY3R1YWwpCisgICAgICAgICAgICAgICAgICAgICAgdmFsMSwgdmFsMikKIAotI2Rl
ZmluZSBBU1NFUlRfRkxPQVRfRVEoZXhwZWN0ZWQsIGFjdHVhbClcCisjZGVmaW5lIEFTU0VSVF9G
TE9BVF9FUSh2YWwxLCB2YWwyKVwKICAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6Omlu
dGVybmFsOjpDbXBIZWxwZXJGbG9hdGluZ1BvaW50RVE8ZmxvYXQ+LCBcCi0gICAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0ZWQsIGFjdHVhbCkKKyAgICAgICAgICAgICAgICAgICAgICB2YWwxLCB2
YWwyKQogCi0jZGVmaW5lIEFTU0VSVF9ET1VCTEVfRVEoZXhwZWN0ZWQsIGFjdHVhbClcCisjZGVm
aW5lIEFTU0VSVF9ET1VCTEVfRVEodmFsMSwgdmFsMilcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIo
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyRmxvYXRpbmdQb2ludEVRPGRvdWJsZT4sIFwK
LSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwgYWN0dWFsKQorICAgICAgICAgICAgICAg
ICAgICAgIHZhbDEsIHZhbDIpCiAKICNkZWZpbmUgRVhQRUNUX05FQVIodmFsMSwgdmFsMiwgYWJz
X2Vycm9yKVwKICAgRVhQRUNUX1BSRURfRk9STUFUMyg6OnRlc3Rpbmc6OmludGVybmFsOjpEb3Vi
bGVOZWFyUHJlZEZvcm1hdCwgXApAQCAtMTg4MiwxNiArMjA3MiwxNiBAQCBHVEVTVF9BUElfIEFz
c2VydGlvblJlc3VsdCBEb3VibGVMRShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhw
cjIsCiAvLyBleHBlY3RlZCByZXN1bHQgYW5kIHRoZSBhY3R1YWwgcmVzdWx0IHdpdGggYm90aCBh
IGh1bWFuLXJlYWRhYmxlCiAvLyBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGVycm9yLCBp
ZiBhdmFpbGFibGUsIGFzIHdlbGwgYXMgdGhlCiAvLyBoZXggcmVzdWx0IGNvZGUuCi0jZGVmaW5l
IEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChleHByKSBcCisjIGRlZmluZSBFWFBFQ1RfSFJFU1VM
VF9TVUNDRUVERUQoZXhwcikgXAogICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDEoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6SXNIUkVTVUxUU3VjY2VzcywgKGV4cHIpKQogCi0jZGVmaW5lIEFTU0VSVF9IUkVT
VUxUX1NVQ0NFRURFRChleHByKSBcCisjIGRlZmluZSBBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQo
ZXhwcikgXAogICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDEoOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXNI
UkVTVUxUU3VjY2VzcywgKGV4cHIpKQogCi0jZGVmaW5lIEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChl
eHByKSBcCisjIGRlZmluZSBFWFBFQ1RfSFJFU1VMVF9GQUlMRUQoZXhwcikgXAogICAgIEVYUEVD
VF9QUkVEX0ZPUk1BVDEoOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXNIUkVTVUxURmFpbHVyZSwgKGV4
cHIpKQogCi0jZGVmaW5lIEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChleHByKSBcCisjIGRlZmluZSBB
U1NFUlRfSFJFU1VMVF9GQUlMRUQoZXhwcikgXAogICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDEoOjp0
ZXN0aW5nOjppbnRlcm5hbDo6SXNIUkVTVUxURmFpbHVyZSwgKGV4cHIpKQogCiAjZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1MKQEAgLTE5MjYsMTcgKzIxMTYsNiBAQCBHVEVTVF9BUElfIEFzc2Vy
dGlvblJlc3VsdCBEb3VibGVMRShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIs
CiAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlNjb3BlZFRyYWNlIEdURVNUX0NPTkNBVF9UT0tFTl8o
Z3Rlc3RfdHJhY2VfLCBfX0xJTkVfXykoXAogICAgIF9fRklMRV9fLCBfX0xJTkVfXywgOjp0ZXN0
aW5nOjpNZXNzYWdlKCkgPDwgKG1lc3NhZ2UpKQogCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0v
LyBUaGlzIHRlbXBsYXRlIGlzIGRlY2xhcmVkLCBidXQgaW50ZW50aW9uYWxseSB1bmRlZmluZWQu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotc3RydWN0IFN0YXRpY0Fzc2Vy
dFR5cGVFcUhlbHBlcjsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgU3RhdGljQXNz
ZXJ0VHlwZUVxSGVscGVyPFQsIFQ+IHt9OwotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQog
Ly8gQ29tcGlsZS10aW1lIGFzc2VydGlvbiBmb3IgdHlwZSBlcXVhbGl0eS4KIC8vIFN0YXRpY0Fz
c2VydFR5cGVFcTx0eXBlMSwgdHlwZTI+KCkgY29tcGlsZXMgaWZmIHR5cGUxIGFuZCB0eXBlMiBh
cmUKIC8vIHRoZSBzYW1lIHR5cGUuICBUaGUgdmFsdWUgaXQgcmV0dXJucyBpcyBub3QgaW50ZXJl
c3RpbmcuCkBAIC0xOTY5LDcgKzIxNDgsNyBAQCBzdHJ1Y3QgU3RhdGljQXNzZXJ0VHlwZUVxSGVs
cGVyPFQsIFQ+IHt9OwogLy8gdG8gY2F1c2UgYSBjb21waWxlciBlcnJvci4KIHRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CiBib29sIFN0YXRpY0Fzc2VydFR5cGVFcSgpIHsKLSAg
aW50ZXJuYWw6OlN0YXRpY0Fzc2VydFR5cGVFcUhlbHBlcjxUMSwgVDI+KCk7CisgICh2b2lkKWlu
dGVybmFsOjpTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI8VDEsIFQyPigpOwogICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMTk4MSw4ICsyMTYwLDggQEAgYm9vbCBTdGF0aWNBc3NlcnRUeXBlRXEoKSB7
CiAvLyBUaGUgY29udmVudGlvbiBpcyB0byBlbmQgdGhlIHRlc3QgY2FzZSBuYW1lIHdpdGggIlRl
c3QiLiAgRm9yCiAvLyBleGFtcGxlLCBhIHRlc3QgY2FzZSBmb3IgdGhlIEZvbyBjbGFzcyBjYW4g
YmUgbmFtZWQgRm9vVGVzdC4KIC8vCi0vLyBUaGUgdXNlciBzaG91bGQgcHV0IGhpcyB0ZXN0IGNv
ZGUgYmV0d2VlbiBicmFjZXMgYWZ0ZXIgdXNpbmcgdGhpcwotLy8gbWFjcm8uICBFeGFtcGxlOgor
Ly8gVGVzdCBjb2RlIHNob3VsZCBhcHBlYXIgYmV0d2VlbiBicmFjZXMgYWZ0ZXIgYW4gaW52b2Nh
dGlvbiBvZgorLy8gdGhpcyBtYWNyby4gIEV4YW1wbGU6CiAvLwogLy8gICBURVNUKEZvb1Rlc3Qs
IEluaXRpYWxpemVzQ29ycmVjdGx5KSB7CiAvLyAgICAgRm9vIGZvbzsKQEAgLTIwMDUsNyArMjE4
NCw3IEBAIGJvb2wgU3RhdGljQXNzZXJ0VHlwZUVxKCkgewogLy8gRGVmaW5lIHRoaXMgbWFjcm8g
dG8gMSB0byBvbWl0IHRoZSBkZWZpbml0aW9uIG9mIFRFU1QoKSwgd2hpY2gKIC8vIGlzIGEgZ2Vu
ZXJpYyBuYW1lIGFuZCBjbGFzaGVzIHdpdGggc29tZSBvdGhlciBsaWJyYXJpZXMuCiAjaWYgIUdU
RVNUX0RPTlRfREVGSU5FX1RFU1QKLSNkZWZpbmUgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9u
YW1lKSBHVEVTVF9URVNUKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpCisjIGRlZmluZSBURVNU
KHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIEdURVNUX1RFU1QodGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSkKICNlbmRpZgogCiAvLyBEZWZpbmVzIGEgdGVzdCB0aGF0IHVzZXMgYSB0ZXN0IGZp
eHR1cmUuCkBAIC0yMDM4LDE1ICsyMjE3LDIwIEBAIGJvb2wgU3RhdGljQXNzZXJ0VHlwZUVxKCkg
ewogICBHVEVTVF9URVNUXyh0ZXN0X2ZpeHR1cmUsIHRlc3RfbmFtZSwgdGVzdF9maXh0dXJlLCBc
CiAgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkdldFR5cGVJZDx0ZXN0X2ZpeHR1
cmU+KCkpCiAKLS8vIFVzZSB0aGlzIG1hY3JvIGluIG1haW4oKSB0byBydW4gYWxsIHRlc3RzLiAg
SXQgcmV0dXJucyAwIGlmIGFsbAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKworLy8gVXNlIHRo
aXMgZnVuY3Rpb24gaW4gbWFpbigpIHRvIHJ1biBhbGwgdGVzdHMuICBJdCByZXR1cm5zIDAgaWYg
YWxsCiAvLyB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3IgMSBvdGhlcndpc2UuCiAvLwogLy8gUlVO
X0FMTF9URVNUUygpIHNob3VsZCBiZSBpbnZva2VkIGFmdGVyIHRoZSBjb21tYW5kIGxpbmUgaGFz
IGJlZW4KIC8vIHBhcnNlZCBieSBJbml0R29vZ2xlVGVzdCgpLgorLy8KKy8vIFRoaXMgZnVuY3Rp
b24gd2FzIGZvcm1lcmx5IGEgbWFjcm87IHRodXMsIGl0IGlzIGluIHRoZSBnbG9iYWwKKy8vIG5h
bWVzcGFjZSBhbmQgaGFzIGFuIGFsbC1jYXBzIG5hbWUuCitpbnQgUlVOX0FMTF9URVNUUygpIEdU
RVNUX01VU1RfVVNFX1JFU1VMVF87CiAKLSNkZWZpbmUgUlVOX0FMTF9URVNUUygpXAotICAoOjp0
ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+UnVuKCkpCi0KLX0gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCitpbmxpbmUgaW50IFJVTl9BTExfVEVTVFMoKSB7CisgIHJldHVybiA6OnRlc3Rp
bmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5SdW4oKTsKK30KIAogI2VuZGlmICAvLyBHVEVT
VF9JTkNMVURFX0dURVNUX0dURVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcmVkX2ltcGwuaAppbmRleCBlMWUyZjhjNGM4ODdh
OGRlZmNiNzU4Y2EwY2FhYjNiN2NlYjlkNDFhLi4zMGFlNzEyZjUwZWQzZDhlODQ0NmU0NDk1YWY5
YjFhYmVjYWIyZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmgKQEAgLTI3LDcgKzI3LDcgQEAKIC8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotLy8gVGhpcyBmaWxlIGlzIEFVVE9NQVRJQ0FMTFkg
R0VORVJBVEVEIG9uIDEwLzAyLzIwMDggYnkgY29tbWFuZAorLy8gVGhpcyBmaWxlIGlzIEFVVE9N
QVRJQ0FMTFkgR0VORVJBVEVEIG9uIDEwLzMxLzIwMTEgYnkgY29tbWFuZAogLy8gJ2dlbl9ndGVz
dF9wcmVkX2ltcGwucHkgNScuICBETyBOT1QgRURJVCBCWSBIQU5EIQogLy8KIC8vIEltcGxlbWVu
dHMgYSBmYW1pbHkgb2YgZ2VuZXJpYyBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3Jvcy4KQEAgLTM3
LDcgKzM3LDcgQEAKIAogLy8gTWFrZXMgc3VyZSB0aGlzIGhlYWRlciBpcyBub3QgaW5jbHVkZWQg
YmVmb3JlIGd0ZXN0LmguCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KLSNl
cnJvciBEbyBub3QgaW5jbHVkZSBndGVzdF9wcmVkX2ltcGwuaCBkaXJlY3RseS4gIEluY2x1ZGUg
Z3Rlc3QuaCBpbnN0ZWFkLgorIyBlcnJvciBEbyBub3QgaW5jbHVkZSBndGVzdF9wcmVkX2ltcGwu
aCBkaXJlY3RseS4gIEluY2x1ZGUgZ3Rlc3QuaCBpbnN0ZWFkLgogI2VuZGlmICAvLyBHVEVTVF9J
TkNMVURFX0dURVNUX0dURVNUX0hfCiAKIC8vIFRoaXMgaGVhZGVyIGltcGxlbWVudHMgYSBmYW1p
bHkgb2YgZ2VuZXJpYyBwcmVkaWNhdGUgYXNzZXJ0aW9uCkBAIC05MCwxNyArOTAsMTUgQEAgQXNz
ZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQxSGVscGVyKGNvbnN0IGNoYXIqIHByZWRfdGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgdjEpIHsKICAgaWYgKHBy
ZWQodjEpKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIE1lc3NhZ2UgbXNnOwotICBt
c2cgPDwgcHJlZF90ZXh0IDw8ICIoIgotICAgICAgPDwgZTEgPDwgIikgZXZhbHVhdGVzIHRvIGZh
bHNlLCB3aGVyZSIKLSAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2
MTsKLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgcmV0dXJuIEFzc2VydGlvbkZh
aWx1cmUoKSA8PCBwcmVkX3RleHQgPDwgIigiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PDwgZTEgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjE7CiB9CiAK
IC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRURf
Rk9STUFUMS4KIC8vIERvbid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KICNkZWZpbmUgR1RFU1Rf
UFJFRF9GT1JNQVQxXyhwcmVkX2Zvcm1hdCwgdjEsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NF
UlRfKHByZWRfZm9ybWF0KCN2MSwgdjEpLFwKKyAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgj
djEsIHYxKSwgXAogICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVybmFsIG1h
Y3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQxLiAgRG9uJ3QgdXNlCkBA
IC0xMzYsMTkgKzEzNCwxNyBAQCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDJIZWxwZXIoY29u
c3QgY2hhciogcHJlZF90ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFQyJiB2MikgewogICBpZiAocHJlZCh2MSwgdjIpKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2Vz
cygpOwogCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgcHJlZF90ZXh0IDw8ICIoIgotICAgICAg
PDwgZTEgPDwgIiwgIgotICAgICAgPDwgZTIgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVy
ZSIKLSAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MQotICAgICAg
PDwgIlxuIiA8PCBlMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYyOwotICByZXR1cm4gQXNzZXJ0
aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4
dCA8PCAiKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMSA8PCAiLCAiCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTIgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3
aGVyZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZh
bHVhdGVzIHRvICIgPDwgdjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8
IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjI7CiB9CiAKIC8vIEludGVybmFsIG1hY3JvIGZv
ciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRURfRk9STUFUMi4KIC8vIERvbid0IHVz
ZSB0aGlzIGluIHlvdXIgY29kZS4KICNkZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQyXyhwcmVkX2Zv
cm1hdCwgdjEsIHYyLCBvbl9mYWlsdXJlKVwKLSAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgj
djEsICN2MiwgdjEsIHYyKSxcCisgIEdURVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoI3YxLCAjdjIs
IHYxLCB2MiksIFwKICAgICAgICAgICAgICAgICBvbl9mYWlsdXJlKQogCiAvLyBJbnRlcm5hbCBt
YWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEMi4gIERvbid0IHVzZQpA
QCAtMTg5LDIxICsxODUsMTkgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQzSGVscGVyKGNv
bnN0IGNoYXIqIHByZWRfdGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUMyYgdjMpIHsKICAgaWYgKHByZWQodjEsIHYyLCB2MykpIHJldHVybiBBc3NlcnRpb25T
dWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBwcmVkX3RleHQgPDwgIigiCi0g
ICAgICA8PCBlMSA8PCAiLCAiCi0gICAgICA8PCBlMiA8PCAiLCAiCi0gICAgICA8PCBlMyA8PCAi
KSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2
YWx1YXRlcyB0byAiIDw8IHYxCi0gICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRv
ICIgPDwgdjIKLSAgICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MzsK
LSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1
cmUoKSA8PCBwcmVkX3RleHQgPDwgIigiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
ZTEgPDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUyIDw8ICIsICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMyA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2Us
IHdoZXJlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBl
dmFsdWF0ZXMgdG8gIiA8PCB2MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIg
PDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MzsKIH0KIAogLy8gSW50
ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQz
LgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZP
Uk1BVDNfKHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCBvbl9mYWlsdXJlKVwKLSAgR1RFU1RfQVNT
RVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3YzLCB2MSwgdjIsIHYzKSxcCisgIEdURVNUX0FT
U0VSVF8ocHJlZF9mb3JtYXQoI3YxLCAjdjIsICN2MywgdjEsIHYyLCB2MyksIFwKICAgICAgICAg
ICAgICAgICBvbl9mYWlsdXJlKQogCiAvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5n
IHtFWFBFQ1R8QVNTRVJUfV9QUkVEMy4gIERvbid0IHVzZQpAQCAtMjQ5LDIzICsyNDMsMjEgQEAg
QXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQ0SGVscGVyKGNvbnN0IGNoYXIqIHByZWRfdGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUNCYgdjQpIHsKICAgaWYg
KHByZWQodjEsIHYyLCB2MywgdjQpKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIE1l
c3NhZ2UgbXNnOwotICBtc2cgPDwgcHJlZF90ZXh0IDw8ICIoIgotICAgICAgPDwgZTEgPDwgIiwg
IgotICAgICAgPDwgZTIgPDwgIiwgIgotICAgICAgPDwgZTMgPDwgIiwgIgotICAgICAgPDwgZTQg
PDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKLSAgICAgIDw8ICJcbiIgPDwgZTEgPDwg
IiBldmFsdWF0ZXMgdG8gIiA8PCB2MQotICAgICAgPDwgIlxuIiA8PCBlMiA8PCAiIGV2YWx1YXRl
cyB0byAiIDw8IHYyCi0gICAgICA8PCAiXG4iIDw8IGUzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwg
djMKLSAgICAgIDw8ICJcbiIgPDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NDsKLSAgcmV0
dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8
PCBwcmVkX3RleHQgPDwgIigiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTEgPDwg
IiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUyIDw8ICIsICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCBlMyA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgZTQgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjEK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVz
IHRvICIgPDwgdjIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUzIDw8
ICIgZXZhbHVhdGVzIHRvICIgPDwgdjMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAi
XG4iIDw8IGU0IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjQ7CiB9CiAKIC8vIEludGVybmFsIG1h
Y3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRURfRk9STUFUNC4KIC8vIERv
bid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KICNkZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQ0Xyhw
cmVkX2Zvcm1hdCwgdjEsIHYyLCB2MywgdjQsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NFUlRf
KHByZWRfZm9ybWF0KCN2MSwgI3YyLCAjdjMsICN2NCwgdjEsIHYyLCB2MywgdjQpLFwKKyAgR1RF
U1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3YzLCAjdjQsIHYxLCB2MiwgdjMsIHY0
KSwgXAogICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVybmFsIG1hY3JvIGZv
ciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQ0LiAgRG9uJ3QgdXNlCkBAIC0zMTYs
MjUgKzMwOCwyMyBAQCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDVIZWxwZXIoY29uc3QgY2hh
ciogcHJlZF90ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQ1
JiB2NSkgewogICBpZiAocHJlZCh2MSwgdjIsIHYzLCB2NCwgdjUpKSByZXR1cm4gQXNzZXJ0aW9u
U3VjY2VzcygpOwogCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgcHJlZF90ZXh0IDw8ICIoIgot
ICAgICAgPDwgZTEgPDwgIiwgIgotICAgICAgPDwgZTIgPDwgIiwgIgotICAgICAgPDwgZTMgPDwg
IiwgIgotICAgICAgPDwgZTQgPDwgIiwgIgotICAgICAgPDwgZTUgPDwgIikgZXZhbHVhdGVzIHRv
IGZhbHNlLCB3aGVyZSIKLSAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8
PCB2MQotICAgICAgPDwgIlxuIiA8PCBlMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYyCi0gICAg
ICA8PCAiXG4iIDw8IGUzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjMKLSAgICAgIDw8ICJcbiIg
PDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NAotICAgICAgPDwgIlxuIiA8PCBlNSA8PCAi
IGV2YWx1YXRlcyB0byAiIDw8IHY1OwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwor
ICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCBlMSA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgZTIgPDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUzIDw8
ICIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlNCA8PCAiLCAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgZTUgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVy
ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVh
dGVzIHRvICIgPDwgdjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUy
IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
PCAiXG4iIDw8IGUzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiXG4iIDw8IGU0IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjQKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGU1IDw8ICIgZXZhbHVhdGVzIHRvICIg
PDwgdjU7CiB9CiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxB
U1NFUlR9X1BSRURfRk9STUFUNS4KIC8vIERvbid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KICNk
ZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQ1XyhwcmVkX2Zvcm1hdCwgdjEsIHYyLCB2MywgdjQsIHY1
LCBvbl9mYWlsdXJlKVwKLSAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3Yz
LCAjdjQsICN2NSwgdjEsIHYyLCB2MywgdjQsIHY1KSxcCisgIEdURVNUX0FTU0VSVF8ocHJlZF9m
b3JtYXQoI3YxLCAjdjIsICN2MywgI3Y0LCAjdjUsIHYxLCB2MiwgdjMsIHY0LCB2NSksIFwKICAg
ICAgICAgICAgICAgICBvbl9mYWlsdXJlKQogCiAvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVt
ZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVENS4gIERvbid0IHVzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3Qt
cG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9j
dXN0b20vZ3Rlc3QtcG9ydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlNzQ0YmQzYmIzOGMzYTIxYjc1MjA3OGI3
YTIxZWIzZDYyMjM3ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmgKQEAgLTAsMCArMSw2
OSBAQAorLy8gQ29weXJpZ2h0IDIwMTUsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8v
IEluamVjdGlvbiBwb2ludCBmb3IgY3VzdG9tIHVzZXIgY29uZmlndXJhdGlvbnMuCisvLyBUaGUg
Zm9sbG93aW5nIG1hY3JvcyBjYW4gYmUgZGVmaW5lZDoKKy8vCisvLyAgIEZsYWcgcmVsYXRlZCBt
YWNyb3M6CisvLyAgICAgR1RFU1RfRkxBRyhmbGFnX25hbWUpCisvLyAgICAgR1RFU1RfVVNFX09X
Tl9GTEFHRklMRV9GTEFHXyAgLSBEZWZpbmUgdG8gMCB3aGVuIHRoZSBzeXN0ZW0gcHJvdmlkZXMg
aXRzCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd24gZmxhZ2ZpbGUg
ZmxhZyBwYXJzaW5nLgorLy8gICAgIEdURVNUX0RFQ0xBUkVfYm9vbF8obmFtZSkKKy8vICAgICBH
VEVTVF9ERUNMQVJFX2ludDMyXyhuYW1lKQorLy8gICAgIEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhu
YW1lKQorLy8gICAgIEdURVNUX0RFRklORV9ib29sXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKQor
Ly8gICAgIEdURVNUX0RFRklORV9pbnQzMl8obmFtZSwgZGVmYXVsdF92YWwsIGRvYykKKy8vICAg
ICBHVEVTVF9ERUZJTkVfc3RyaW5nXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKQorLy8KKy8vICAg
VGVzdCBmaWx0ZXJpbmc6CisvLyAgICAgR1RFU1RfVEVTVF9GSUxURVJfRU5WX1ZBUl8gLSBUaGUg
bmFtZSBvZiBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0aGF0CisvLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aWxsIGJlIHVzZWQgaWYgLS1HVEVTVF9GTEFHKHRlc3RfZmlsdGVy
KQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgbm90IHByb3ZpZGVkLgor
Ly8KKy8vICAgTG9nZ2luZzoKKy8vICAgICBHVEVTVF9MT0dfKHNldmVyaXR5KQorLy8gICAgIEdU
RVNUX0NIRUNLXyhjb25kaXRpb24pCisvLyAgICAgRnVuY3Rpb25zIExvZ1RvU3RkZXJyKCkgYW5k
IEZsdXNoSW5mb0xvZygpIGhhdmUgdG8gYmUgcHJvdmlkZWQgdG9vLgorLy8KKy8vICAgVGhyZWFk
aW5nOgorLy8gICAgIEdURVNUX0hBU19OT1RJRklDQVRJT05fIC0gRW5hYmxlZCBpZiBOb3RpZmlj
YXRpb24gaXMgYWxyZWFkeSBwcm92aWRlZC4KKy8vICAgICBHVEVTVF9IQVNfTVVURVhfQU5EX1RI
UkVBRF9MT0NBTF8gLSBFbmFibGVkIGlmIE11dGV4IGFuZCBUaHJlYWRMb2NhbCBhcmUKKy8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IHByb3ZpZGVkLgor
Ly8gICAgIE11c3QgYWxzbyBwcm92aWRlIEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRl
eCkgYW5kCisvLyAgICAgR1RFU1RfREVGSU5FX1NUQVRJQ19NVVRFWF8obXV0ZXgpCisvLworLy8g
ICAgIEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhsb2NrcykKKy8vICAgICBHVEVTVF9M
T0NLX0VYQ0xVREVEXyhsb2NrcykKKy8vCisvLyAqKiBDdXN0b20gaW1wbGVtZW50YXRpb24gc3Rh
cnRzIGhlcmUgKioKKworI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0NVU1RP
TV9HVEVTVF9QT1JUX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VT
VE9NX0dURVNUX1BPUlRfSF8KKworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVS
TkFMX0NVU1RPTV9HVEVTVF9QT1JUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wcmludGVycy5oIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3Qt
cHJpbnRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGMxZWEwNTBiNjFlOTNiZmNmMTQ2ZTYxMTFiZmE1MDMx
NWM4MmVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcHJpbnRlcnMuaApAQCAtMCwwICsxLDQyIEBA
CisvLyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8v
IGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gVGhp
cyBmaWxlIHByb3ZpZGVzIGFuIGluamVjdGlvbiBwb2ludCBmb3IgY3VzdG9tIHByaW50ZXJzIGlu
IGEgbG9jYWwKKy8vIGluc3RhbGxhdGlvbiBvZiBnVGVzdC4KKy8vIEl0IHdpbGwgYmUgaW5jbHVk
ZWQgZnJvbSBndGVzdC1wcmludGVycy5oIGFuZCB0aGUgb3ZlcnJpZGVzIGluIHRoaXMgZmlsZQor
Ly8gd2lsbCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lLgorLy8gU2VlIGRvY3VtZW50YXRpb24gYXQg
Z3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCBmb3IgZGV0YWlscyBvbiBob3cgdG8gZGVmaW5lIGEKKy8v
IGN1c3RvbSBwcmludGVyLgorLy8KKy8vICoqIEN1c3RvbSBpbXBsZW1lbnRhdGlvbiBzdGFydHMg
aGVyZSAqKgorCisjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dU
RVNUX1BSSU5URVJTX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VT
VE9NX0dURVNUX1BSSU5URVJTX0hfCisKKyNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9J
TlRFUk5BTF9DVVNUT01fR1RFU1RfUFJJTlRFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmMyNzQxMmE4OTgxODQ0ZDkyMTcxYWJlNTU4YzFkNjg5ODlkMDE1ZmMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2N1c3RvbS9ndGVzdC5oCkBAIC0wLDAgKzEsNDEgQEAKKy8vIENvcHlyaWdodCAyMDE1
LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBJbmplY3Rpb24gcG9pbnQgZm9yIGN1
c3RvbSB1c2VyIGNvbmZpZ3VyYXRpb25zLgorLy8gVGhlIGZvbGxvd2luZyBtYWNyb3MgY2FuIGJl
IGRlZmluZWQ6CisvLworLy8gR1RFU1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVSXyAgLSBUaGUgbmFt
ZSBvZiBhbiBpbXBsZW1lbnRhdGlvbiBvZgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UuCisvLworLy8gKiogQ3VzdG9tIGltcGxl
bWVudGF0aW9uIHN0YXJ0cyBoZXJlICoqCisKKyNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9J
TlRFUk5BTF9DVVNUT01fR1RFU1RfSF8KKyNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRF
Uk5BTF9DVVNUT01fR1RFU1RfSF8KKworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lO
VEVSTkFMX0NVU1RPTV9HVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRo
LXRlc3QtaW50ZXJuYWwuaAppbmRleCBlNDMzMDg0OGQ0ZWFlNTcwZjI4MGRhYzU3Y2YwMGIyOTcy
MmM3ZDBjLi4yYjNhNzhmNWJmODYzMjhmYzFiZjU4ZjE2ODJjOWVlNDRhNTA1N2MyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0
LWRlYXRoLXRlc3QtaW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaApAQCAtMzcsNyAr
MzcsOSBAQAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0RFQVRI
X1RFU1RfSU5URVJOQUxfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9H
VEVTVF9ERUFUSF9URVNUX0lOVEVSTkFMX0hfCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9n
dGVzdC1pbnRlcm5hbC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFs
LmgiCisKKyNpbmNsdWRlIDxzdGRpby5oPgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiBuYW1lc3Bh
Y2UgaW50ZXJuYWwgewpAQCAtOTYsOCArOTgsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBEZWF0aFRl
c3QgewogICAvLyB0ZXN0LCB0aGVuIHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlLgogICBlbnVtIFRl
c3RSb2xlIHsgT1ZFUlNFRV9URVNULCBFWEVDVVRFX1RFU1QgfTsKIAotICAvLyBBbiBlbnVtZXJh
dGlvbiBvZiB0aGUgdHdvIHJlYXNvbnMgdGhhdCBhIHRlc3QgbWlnaHQgYmUgYWJvcnRlZC4KLSAg
ZW51bSBBYm9ydFJlYXNvbiB7IFRFU1RfRU5DT1VOVEVSRURfUkVUVVJOX1NUQVRFTUVOVCwgVEVT
VF9ESURfTk9UX0RJRSB9OworICAvLyBBbiBlbnVtZXJhdGlvbiBvZiB0aGUgdGhyZWUgcmVhc29u
cyB0aGF0IGEgdGVzdCBtaWdodCBiZSBhYm9ydGVkLgorICBlbnVtIEFib3J0UmVhc29uIHsKKyAg
ICBURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQsCisgICAgVEVTVF9USFJFV19FWENF
UFRJT04sCisgICAgVEVTVF9ESURfTk9UX0RJRQorICB9OwogCiAgIC8vIEFzc3VtZXMgb25lIG9m
IHRoZSBhYm92ZSByb2xlcy4KICAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCkgPSAwOwpA
QCAtMTIxLDExICsxMjcsMTEgQEAgY2xhc3MgR1RFU1RfQVBJXyBEZWF0aFRlc3QgewogICAvLyB0
aGUgbGFzdCBkZWF0aCB0ZXN0LgogICBzdGF0aWMgY29uc3QgY2hhciogTGFzdE1lc3NhZ2UoKTsK
IAotICBzdGF0aWMgdm9pZCBzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKKyAgc3RhdGljIHZvaWQgc2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKGNv
bnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKTsKIAogIHByaXZhdGU6CiAgIC8vIEEgc3RyaW5nIGNv
bnRhaW5pbmcgYSBkZXNjcmlwdGlvbiBvZiB0aGUgb3V0Y29tZSBvZiB0aGUgbGFzdCBkZWF0aCB0
ZXN0LgotICBzdGF0aWMgU3RyaW5nIGxhc3RfZGVhdGhfdGVzdF9tZXNzYWdlXzsKKyAgc3RhdGlj
IHN0ZDo6c3RyaW5nIGxhc3RfZGVhdGhfdGVzdF9tZXNzYWdlXzsKIAogICBHVEVTVF9ESVNBTExP
V19DT1BZX0FORF9BU1NJR05fKERlYXRoVGVzdCk7CiB9OwpAQCAtMTQ5LDkgKzE1NSwzNCBAQCBj
bGFzcyBEZWZhdWx0RGVhdGhUZXN0RmFjdG9yeSA6IHB1YmxpYyBEZWF0aFRlc3RGYWN0b3J5IHsK
IC8vIGJ5IGEgc2lnbmFsLCBvciBleGl0ZWQgbm9ybWFsbHkgd2l0aCBhIG5vbnplcm8gZXhpdCBj
b2RlLgogR1RFU1RfQVBJXyBib29sIEV4aXRlZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1
cyk7CiAKKy8vIFRyYXBzIEMrKyBleGNlcHRpb25zIGVzY2FwaW5nIHN0YXRlbWVudCBhbmQgcmVw
b3J0cyB0aGVtIGFzIHRlc3QKKy8vIGZhaWx1cmVzLiBOb3RlIHRoYXQgdHJhcHBpbmcgU0VIIGV4
Y2VwdGlvbnMgaXMgbm90IGltcGxlbWVudGVkIGhlcmUuCisjIGlmIEdURVNUX0hBU19FWENFUFRJ
T05TCisjICBkZWZpbmUgR1RFU1RfRVhFQ1VURV9ERUFUSF9URVNUX1NUQVRFTUVOVF8oc3RhdGVt
ZW50LCBkZWF0aF90ZXN0KSBcCisgIHRyeSB7IFwKKyAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNI
QUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKKyAgfSBjYXRjaCAoY29uc3Qg
OjpzdGQ6OmV4Y2VwdGlvbiYgZ3Rlc3RfZXhjZXB0aW9uKSB7IFwKKyAgICBmcHJpbnRmKFwKKyAg
ICAgICAgc3RkZXJyLCBcCisgICAgICAgICJcbiVzOiBDYXVnaHQgc3RkOjpleGNlcHRpb24tZGVy
aXZlZCBleGNlcHRpb24gZXNjYXBpbmcgdGhlICIgXAorICAgICAgICAiZGVhdGggdGVzdCBzdGF0
ZW1lbnQuIEV4Y2VwdGlvbiBtZXNzYWdlOiAlc1xuIiwgXAorICAgICAgICA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpGb3JtYXRGaWxlTG9jYXRpb24oX19GSUxFX18sIF9fTElORV9fKS5jX3N0cigpLCBc
CisgICAgICAgIGd0ZXN0X2V4Y2VwdGlvbi53aGF0KCkpOyBcCisgICAgZmZsdXNoKHN0ZGVycik7
IFwKKyAgICBkZWF0aF90ZXN0LT5BYm9ydCg6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q6
OlRFU1RfVEhSRVdfRVhDRVBUSU9OKTsgXAorICB9IGNhdGNoICguLi4pIHsgXAorICAgIGRlYXRo
X3Rlc3QtPkFib3J0KDo6dGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVzdDo6VEVTVF9USFJFV19F
WENFUFRJT04pOyBcCisgIH0KKworIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfRVhFQ1VURV9ERUFU
SF9URVNUX1NUQVRFTUVOVF8oc3RhdGVtZW50LCBkZWF0aF90ZXN0KSBcCisgIEdURVNUX1NVUFBS
RVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KQorCisjIGVuZGlm
CisKIC8vIFRoaXMgbWFjcm8gaXMgZm9yIGltcGxlbWVudGluZyBBU1NFUlRfREVBVEgqLCBFWFBF
Q1RfREVBVEgqLAogLy8gQVNTRVJUX0VYSVQqLCBhbmQgRVhQRUNUX0VYSVQqLgotI2RlZmluZSBH
VEVTVF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIGZhaWwpIFwKKyMg
ZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgZmFp
bCkgXAogICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCiAgIGlmICg6OnRlc3Rpbmc6
OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAogICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJu
YWw6OlJFJiBndGVzdF9yZWdleCA9IChyZWdleCk7IFwKQEAgLTE3MiwxMCArMjAzLDEyIEBAIEdU
RVNUX0FQSV8gYm9vbCBFeGl0ZWRVbnN1Y2Nlc3NmdWxseShpbnQgZXhpdF9zdGF0dXMpOwogICAg
ICAgICBjYXNlIDo6dGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVzdDo6RVhFQ1VURV9URVNUOiB7
IFwKICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OlJldHVyblNlbnRp
bmVsIFwKICAgICAgICAgICAgICAgZ3Rlc3Rfc2VudGluZWwoZ3Rlc3RfZHQpOyBcCi0gICAgICAg
ICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1l
bnQpOyBcCisgICAgICAgICAgR1RFU1RfRVhFQ1VURV9ERUFUSF9URVNUX1NUQVRFTUVOVF8oc3Rh
dGVtZW50LCBndGVzdF9kdCk7IFwKICAgICAgICAgICBndGVzdF9kdC0+QWJvcnQoOjp0ZXN0aW5n
OjppbnRlcm5hbDo6RGVhdGhUZXN0OjpURVNUX0RJRF9OT1RfRElFKTsgXAogICAgICAgICAgIGJy
ZWFrOyBcCiAgICAgICAgIH0gXAorICAgICAgICBkZWZhdWx0OiBcCisgICAgICAgICAgYnJlYWs7
IFwKICAgICAgIH0gXAogICAgIH0gXAogICB9IGVsc2UgXApAQCAtMTg0LDEyICsyMTcsMjMgQEAg
R1RFU1RfQVBJXyBib29sIEV4aXRlZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1cyk7CiAv
LyBUaGUgc3ltYm9sICJmYWlsIiBoZXJlIGV4cGFuZHMgdG8gc29tZXRoaW5nIGludG8gd2hpY2gg
YSBtZXNzYWdlCiAvLyBjYW4gYmUgc3RyZWFtZWQuCiAKKy8vIFRoaXMgbWFjcm8gaXMgZm9yIGlt
cGxlbWVudGluZyBBU1NFUlQvRVhQRUNUX0RFQlVHX0RFQVRIIHdoZW4gY29tcGlsZWQgaW4KKy8v
IE5ERUJVRyBtb2RlLiBJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0aGUgc3RhdGVtZW50cyB0byBiZSBl
eGVjdXRlZCwgdGhlIHJlZ2V4IGlzCisvLyBpZ25vcmVkLCBhbmQgdGhlIG1hY3JvIG11c3QgYWNj
ZXB0IGEgc3RyZWFtZWQgbWVzc2FnZSBldmVuIHRob3VnaCB0aGUgbWVzc2FnZQorLy8gaXMgbmV2
ZXIgcHJpbnRlZC4KKyMgZGVmaW5lIEdURVNUX0VYRUNVVEVfU1RBVEVNRU5UXyhzdGF0ZW1lbnQs
IHJlZ2V4KSBcCisgIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKKyAgaWYgKDo6dGVz
dGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBcCisgICAgIEdURVNUX1NVUFBSRVNTX1VO
UkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KTsgXAorICB9IGVsc2UgXAor
ICAgIDo6dGVzdGluZzo6TWVzc2FnZSgpCisKIC8vIEEgY2xhc3MgcmVwcmVzZW50aW5nIHRoZSBw
YXJzZWQgY29udGVudHMgb2YgdGhlCiAvLyAtLWd0ZXN0X2ludGVybmFsX3J1bl9kZWF0aF90ZXN0
IGZsYWcsIGFzIGl0IGV4aXN0ZWQgd2hlbgogLy8gUlVOX0FMTF9URVNUUyB3YXMgY2FsbGVkLgog
Y2xhc3MgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnIHsKICBwdWJsaWM6Ci0gIEludGVybmFsUnVu
RGVhdGhUZXN0RmxhZyhjb25zdCBTdHJpbmcmIGFfZmlsZSwKKyAgSW50ZXJuYWxSdW5EZWF0aFRl
c3RGbGFnKGNvbnN0IHN0ZDo6c3RyaW5nJiBhX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgYV9saW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFuX2luZGV4
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFfd3JpdGVfZmQpCkBAIC0yMDEsMTMg
KzI0NSwxMyBAQCBjbGFzcyBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcgewogICAgICAgcG9zaXg6
OkNsb3NlKHdyaXRlX2ZkXyk7CiAgIH0KIAotICBTdHJpbmcgZmlsZSgpIGNvbnN0IHsgcmV0dXJu
IGZpbGVfOyB9CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlKCkgY29uc3QgeyByZXR1cm4gZmls
ZV87IH0KICAgaW50IGxpbmUoKSBjb25zdCB7IHJldHVybiBsaW5lXzsgfQogICBpbnQgaW5kZXgo
KSBjb25zdCB7IHJldHVybiBpbmRleF87IH0KICAgaW50IHdyaXRlX2ZkKCkgY29uc3QgeyByZXR1
cm4gd3JpdGVfZmRfOyB9CiAKICBwcml2YXRlOgotICBTdHJpbmcgZmlsZV87CisgIHN0ZDo6c3Ry
aW5nIGZpbGVfOwogICBpbnQgbGluZV87CiAgIGludCBpbmRleF87CiAgIGludCB3cml0ZV9mZF87
CkBAIC0yNTQsNyArMjk4LDcgQEAgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBQYXJzZUludGVy
bmFsUnVuRGVhdGhUZXN0RmxhZygpOwogLy8gIHN0YXRlbWVudCB1bmNvbmRpdGlvbmFsbHkgcmV0
dXJucyBvciB0aHJvd3MuIFRoZSBNZXNzYWdlIGNvbnN0cnVjdG9yIGF0CiAvLyAgdGhlIGVuZCBh
bGxvd3MgdGhlIHN5bnRheCBvZiBzdHJlYW1pbmcgYWRkaXRpb25hbCBtZXNzYWdlcyBpbnRvIHRo
ZQogLy8gIG1hY3JvLCBmb3IgY29tcGlsYXRpb25hbCBjb21wYXRpYmlsaXR5IHdpdGggRVhQRUNU
X0RFQVRIL0FTU0VSVF9ERUFUSC4KLSNkZWZpbmUgR1RFU1RfVU5TVVBQT1JURURfREVBVEhfVEVT
VF8oc3RhdGVtZW50LCByZWdleCwgdGVybWluYXRvcikgXAorIyBkZWZpbmUgR1RFU1RfVU5TVVBQ
T1JURURfREVBVEhfVEVTVF8oc3RhdGVtZW50LCByZWdleCwgdGVybWluYXRvcikgXAogICAgIEdU
RVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKICAgICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6QWx3YXlzVHJ1ZSgpKSB7IFwKICAgICAgIEdURVNUX0xPR18oV0FSTklORykgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC1maWxlcGF0aC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC1maWxlcGF0aC5oCmluZGV4IDRiNzZkNzk1MDZiMDI2YWJhMzcxNjQ3MmZjNDNj
ZWZjMWE3ZTM4OGEuLjdhMTNiNGIwZGU2MDgzYmJmZTY5NjNmOGMwZWQxNmUyN2RlNzcwMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtZmlsZXBhdGguaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgKQEAgLTQwLDcgKzQwLDcgQEAKICNpZm5kZWYg
R1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9GSUxFUEFUSF9IXwogI2RlZmluZSBH
VEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0ZJTEVQQVRIX0hfCiAKLSNpbmNsdWRl
IDxndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5h
bC9ndGVzdC1zdHJpbmcuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVy
bmFsIHsKQEAgLTYxLDExICs2MSw3IEBAIGNsYXNzIEdURVNUX0FQSV8gRmlsZVBhdGggewogICBG
aWxlUGF0aCgpIDogcGF0aG5hbWVfKCIiKSB7IH0KICAgRmlsZVBhdGgoY29uc3QgRmlsZVBhdGgm
IHJocykgOiBwYXRobmFtZV8ocmhzLnBhdGhuYW1lXykgeyB9CiAKLSAgZXhwbGljaXQgRmlsZVBh
dGgoY29uc3QgY2hhciogcGF0aG5hbWUpIDogcGF0aG5hbWVfKHBhdGhuYW1lKSB7Ci0gICAgTm9y
bWFsaXplKCk7Ci0gIH0KLQotICBleHBsaWNpdCBGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGhu
YW1lKSA6IHBhdGhuYW1lXyhwYXRobmFtZSkgeworICBleHBsaWNpdCBGaWxlUGF0aChjb25zdCBz
dGQ6OnN0cmluZyYgcGF0aG5hbWUpIDogcGF0aG5hbWVfKHBhdGhuYW1lKSB7CiAgICAgTm9ybWFs
aXplKCk7CiAgIH0KIApAQCAtNzgsNyArNzQsNyBAQCBjbGFzcyBHVEVTVF9BUElfIEZpbGVQYXRo
IHsKICAgICBwYXRobmFtZV8gPSByaHMucGF0aG5hbWVfOwogICB9CiAKLSAgU3RyaW5nIFRvU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gcGF0aG5hbWVfOyB9CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBz
dHJpbmcoKSBjb25zdCB7IHJldHVybiBwYXRobmFtZV87IH0KICAgY29uc3QgY2hhciogY19zdHIo
KSBjb25zdCB7IHJldHVybiBwYXRobmFtZV8uY19zdHIoKTsgfQogCiAgIC8vIFJldHVybnMgdGhl
IGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksIG9yICIiIGlmIHVuc3VjY2Vzc2Z1bC4KQEAgLTEx
MSw4ICsxMDcsOCBAQCBjbGFzcyBHVEVTVF9BUElfIEZpbGVQYXRoIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmlsZVBhdGgmIGJhc2VfbmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0ZW5z
aW9uKTsKIAotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBwYXRoIGlzIE5VTEwgb3IgIiIuCi0g
IGJvb2wgSXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIGNfc3RyKCkgPT0gTlVMTCB8fCAqY19zdHIo
KSA9PSAnXDAnOyB9CisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHBhdGggaXMgIiIuCisgIGJv
b2wgSXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHBhdGhuYW1lXy5lbXB0eSgpOyB9CiAKICAgLy8g
SWYgaW5wdXQgbmFtZSBoYXMgYSB0cmFpbGluZyBzZXBhcmF0b3IgY2hhcmFjdGVyLCByZW1vdmVz
IGl0IGFuZCByZXR1cm5zCiAgIC8vIHRoZSBuYW1lLCBvdGhlcndpc2UgcmV0dXJuIHRoZSBuYW1l
IHN0cmluZyB1bm1vZGlmaWVkLgpAQCAtMjAxLDcgKzE5Nyw3IEBAIGNsYXNzIEdURVNUX0FQSV8g
RmlsZVBhdGggewogICAvLyBzZXBhcmF0b3JzLiBSZXR1cm5zIE5VTEwgaWYgbm8gcGF0aCBzZXBh
cmF0b3Igd2FzIGZvdW5kLgogICBjb25zdCBjaGFyKiBGaW5kTGFzdFBhdGhTZXBhcmF0b3IoKSBj
b25zdDsKIAotICBTdHJpbmcgcGF0aG5hbWVfOworICBzdGQ6OnN0cmluZyBwYXRobmFtZV87CiB9
OyAgLy8gY2xhc3MgRmlsZVBhdGgKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0
LWludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVy
bmFsL2d0ZXN0LWludGVybmFsLmgKaW5kZXggMzFhNjZlOTlkM2M0ODIxNTFlNDBmYzM1YTQwMjcw
MDY5MDMyYTFkNS4uZWJkMWNmNjE1ZGUwN2Q5YjVhYjBlNjBjNzEwMDgyNjFlZmU1NDIxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9n
dGVzdC1pbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaApAQCAtMzcsMjQgKzM3LDMzIEBACiAjaWZuZGVm
IEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfSU5URVJOQUxfSF8KICNkZWZpbmUg
R1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9JTlRFUk5BTF9IXwogCi0jaW5jbHVk
ZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFs
L2d0ZXN0LXBvcnQuaCIKIAogI2lmIEdURVNUX09TX0xJTlVYCi0jaW5jbHVkZSA8c3RkbGliLmg+
Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3dhaXQuaD4KLSNpbmNsdWRl
IDx1bmlzdGQuaD4KKyMgaW5jbHVkZSA8c3RkbGliLmg+CisjIGluY2x1ZGUgPHN5cy90eXBlcy5o
PgorIyBpbmNsdWRlIDxzeXMvd2FpdC5oPgorIyBpbmNsdWRlIDx1bmlzdGQuaD4KICNlbmRpZiAg
Ly8gR1RFU1RfT1NfTElOVVgKIAorI2lmIEdURVNUX0hBU19FWENFUFRJT05TCisjIGluY2x1ZGUg
PHN0ZGV4Y2VwdD4KKyNlbmRpZgorCiAjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxmbG9h
dC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGlvbWFuaXA+CiAjaW5jbHVkZSA8
bGltaXRzPgorI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxzZXQ+CisjaW5jbHVkZSA8c3RyaW5n
PgorI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0
cmluZy5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmg+Ci0jaW5j
bHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmg+CisjaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3QtbWVzc2FnZS5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5o
IgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgiCisjaW5jbHVkZSAi
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgiCiAKIC8vIER1ZSB0byBDKysgcHJlcHJv
Y2Vzc29yIHdlaXJkbmVzcywgd2UgbmVlZCBkb3VibGUgaW5kaXJlY3Rpb24gdG8KIC8vIGNvbmNh
dGVuYXRlIHR3byB0b2tlbnMgd2hlbiBvbmUgb2YgdGhlbSBpcyBfX0xJTkVfXy4gIFdyaXRpbmcK
QEAgLTY3LDM5ICs3NiwxMiBAQAogI2RlZmluZSBHVEVTVF9DT05DQVRfVE9LRU5fKGZvbywgYmFy
KSBHVEVTVF9DT05DQVRfVE9LRU5fSU1QTF8oZm9vLCBiYXIpCiAjZGVmaW5lIEdURVNUX0NPTkNB
VF9UT0tFTl9JTVBMXyhmb28sIGJhcikgZm9vICMjIGJhcgogCi0vLyBHb29nbGUgVGVzdCBkZWZp
bmVzIHRoZSB0ZXN0aW5nOjpNZXNzYWdlIGNsYXNzIHRvIGFsbG93IGNvbnN0cnVjdGlvbiBvZgot
Ly8gdGVzdCBtZXNzYWdlcyB2aWEgdGhlIDw8IG9wZXJhdG9yLiAgVGhlIGlkZWEgaXMgdGhhdCBh
bnl0aGluZwotLy8gc3RyZWFtYWJsZSB0byBzdGQ6Om9zdHJlYW0gY2FuIGJlIHN0cmVhbWVkIHRv
IGEgdGVzdGluZzo6TWVzc2FnZS4KLS8vIFRoaXMgYWxsb3dzIGEgdXNlciB0byB1c2UgaGlzIG93
biB0eXBlcyBpbiBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGJ5Ci0vLyBvdmVybG9hZGluZyB0aGUg
PDwgb3BlcmF0b3IuCi0vLwotLy8gdXRpbC9ndGwvc3RsX2xvZ2dpbmctaW5sLmggb3ZlcmxvYWRz
IDw8IGZvciBTVEwgY29udGFpbmVycy4gIFRoZXNlCi0vLyBvdmVybG9hZHMgY2Fubm90IGJlIGRl
ZmluZWQgaW4gdGhlIHN0ZCBuYW1lc3BhY2UsIGFzIHRoYXQgd2lsbCBiZQotLy8gdW5kZWZpbmVk
IGJlaGF2aW9yLiAgVGhlcmVmb3JlLCB0aGV5IGFyZSBkZWZpbmVkIGluIHRoZSBnbG9iYWwKLS8v
IG5hbWVzcGFjZSBpbnN0ZWFkLgotLy8KLS8vIEMrKydzIHN5bWJvbCBsb29rdXAgcnVsZSAoaS5l
LiBLb2VuaWcgbG9va3VwKSBzYXlzIHRoYXQgdGhlc2UKLS8vIG92ZXJsb2FkcyBhcmUgdmlzaWJs
ZSBpbiBlaXRoZXIgdGhlIHN0ZCBuYW1lc3BhY2Ugb3IgdGhlIGdsb2JhbAotLy8gbmFtZXNwYWNl
LCBidXQgbm90IG90aGVyIG5hbWVzcGFjZXMsIGluY2x1ZGluZyB0aGUgdGVzdGluZwotLy8gbmFt
ZXNwYWNlIHdoaWNoIEdvb2dsZSBUZXN0J3MgTWVzc2FnZSBjbGFzcyBpcyBpbi4KLS8vCi0vLyBU
byBhbGxvdyBTVEwgY29udGFpbmVycyAoYW5kIG90aGVyIHR5cGVzIHRoYXQgaGFzIGEgPDwgb3Bl
cmF0b3IKLS8vIGRlZmluZWQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UpIHRvIGJlIHVzZWQgaW4g
R29vZ2xlIFRlc3QgYXNzZXJ0aW9ucywKLS8vIHRlc3Rpbmc6Ok1lc3NhZ2UgbXVzdCBhY2Nlc3Mg
dGhlIGN1c3RvbSA8PCBvcGVyYXRvciBmcm9tIHRoZSBnbG9iYWwKLS8vIG5hbWVzcGFjZS4gIEhl
bmNlIHRoaXMgaGVscGVyIGZ1bmN0aW9uLgotLy8KLS8vIE5vdGU6IEplZmZyZXkgWWFzc2tpbiBz
dWdnZXN0ZWQgYW4gYWx0ZXJuYXRpdmUgZml4IGJ5ICJ1c2luZwotLy8gOjpvcGVyYXRvcjw8OyIg
aW4gdGhlIGRlZmluaXRpb24gb2YgTWVzc2FnZSdzIG9wZXJhdG9yPDwuICBUaGF0IGZpeAotLy8g
ZG9lc24ndCByZXF1aXJlIGEgaGVscGVyIGZ1bmN0aW9uLCBidXQgdW5mb3J0dW5hdGVseSBkb2Vz
bid0Ci0vLyBjb21waWxlIHdpdGggTVNWQy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5l
IHZvaWQgR1Rlc3RTdHJlYW1Ub0hlbHBlcihzdGQ6Om9zdHJlYW0qIG9zLCBjb25zdCBUJiB2YWwp
IHsKLSAgKm9zIDw8IHZhbDsKLX0KK2NsYXNzIFByb3RvY29sTWVzc2FnZTsKK25hbWVzcGFjZSBw
cm90bzIgeyBjbGFzcyBNZXNzYWdlOyB9CiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIAotLy8gRm9y
d2FyZCBkZWNsYXJhdGlvbiBvZiBjbGFzc2VzLgorLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMuCiAK
IGNsYXNzIEFzc2VydGlvblJlc3VsdDsgICAgICAgICAgICAgICAgIC8vIFJlc3VsdCBvZiBhbiBh
c3NlcnRpb24uCiBjbGFzcyBNZXNzYWdlOyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXBy
ZXNlbnRzIGEgZmFpbHVyZSBtZXNzYWdlLgpAQCAtMTA4LDYgKzkwLDkgQEAgY2xhc3MgVGVzdElu
Zm87ICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5mb3JtYXRpb24gYWJvdXQgYSB0ZXN0Lgog
Y2xhc3MgVGVzdFBhcnRSZXN1bHQ7ICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0IG9mIGEgdGVz
dCBwYXJ0LgogY2xhc3MgVW5pdFRlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSBjb2xs
ZWN0aW9uIG9mIHRlc3QgY2FzZXMuCiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorOjpzdGQ6OnN0
cmluZyBQcmludFRvU3RyaW5nKGNvbnN0IFQmIHZhbHVlKTsKKwogbmFtZXNwYWNlIGludGVybmFs
IHsKIAogc3RydWN0IFRyYWNlSW5mbzsgICAgICAgICAgICAgICAgICAgICAgLy8gSW5mb3JtYXRp
b24gYWJvdXQgYSB0cmFjZSBwb2ludC4KQEAgLTExNSwxOCArMTAwLDEwIEBAIGNsYXNzIFNjb3Bl
ZFRyYWNlOyAgICAgICAgICAgICAgICAgICAgIC8vIEltcGxlbWVudHMgc2NvcGVkIHRyYWNlLgog
Y2xhc3MgVGVzdEluZm9JbXBsOyAgICAgICAgICAgICAgICAgICAgLy8gT3BhcXVlIGltcGxlbWVu
dGF0aW9uIG9mIFRlc3RJbmZvCiBjbGFzcyBVbml0VGVzdEltcGw7ICAgICAgICAgICAgICAgICAg
ICAvLyBPcGFxdWUgaW1wbGVtZW50YXRpb24gb2YgVW5pdFRlc3QKIAotLy8gSG93IG1hbnkgdGlt
ZXMgSW5pdEdvb2dsZVRlc3QoKSBoYXMgYmVlbiBjYWxsZWQuCi1leHRlcm4gaW50IGdfaW5pdF9n
dGVzdF9jb3VudDsKLQogLy8gVGhlIHRleHQgdXNlZCBpbiBmYWlsdXJlIG1lc3NhZ2VzIHRvIGlu
ZGljYXRlIHRoZSBzdGFydCBvZiB0aGUKIC8vIHN0YWNrIHRyYWNlLgogR1RFU1RfQVBJXyBleHRl
cm4gY29uc3QgY2hhciBrU3RhY2tUcmFjZU1hcmtlcltdOwogCi0vLyBBIHNlY3JldCB0eXBlIHRo
YXQgR29vZ2xlIFRlc3QgdXNlcnMgZG9uJ3Qga25vdyBhYm91dC4gIEl0IGhhcyBubwotLy8gZGVm
aW5pdGlvbiBvbiBwdXJwb3NlLiAgVGhlcmVmb3JlIGl0J3MgaW1wb3NzaWJsZSB0byBjcmVhdGUg
YQotLy8gU2VjcmV0IG9iamVjdCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LgotY2xhc3MgU2VjcmV0
OwotCiAvLyBUd28gb3ZlcmxvYWRlZCBoZWxwZXJzIGZvciBjaGVja2luZyBhdCBjb21waWxlIHRp
bWUgd2hldGhlciBhbgogLy8gZXhwcmVzc2lvbiBpcyBhIG51bGwgcG9pbnRlciBsaXRlcmFsIChp
LmUuIE5VTEwgb3IgYW55IDAtdmFsdWVkCiAvLyBjb21waWxlLXRpbWUgaW50ZWdyYWwgY29uc3Rh
bnQpLiAgVGhlaXIgcmV0dXJuIHZhbHVlcyBoYXZlCkBAIC0xNTAsMTUgKzEyNywzMCBAQCBjaGFy
ICgmSXNOdWxsTGl0ZXJhbEhlbHBlciguLi4pKVsyXTsgIC8vIE5PTElOVAogI2lmZGVmIEdURVNU
X0VMTElQU0lTX05FRURTX1BPRF8KIC8vIFdlIGxvc2Ugc3VwcG9ydCBmb3IgTlVMTCBkZXRlY3Rp
b24gd2hlcmUgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZQogLy8gcGFzc2luZyBub24tUE9EIGNs
YXNzZXMgdGhyb3VnaCBlbGxpcHNpcyAoLi4uKS4KLSNkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRF
UkFMXyh4KSBmYWxzZQorIyBkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBmYWxzZQog
I2Vsc2UKLSNkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBcCisjIGRlZmluZSBHVEVT
VF9JU19OVUxMX0xJVEVSQUxfKHgpIFwKICAgICAoc2l6ZW9mKDo6dGVzdGluZzo6aW50ZXJuYWw6
OklzTnVsbExpdGVyYWxIZWxwZXIoeCkpID09IDEpCiAjZW5kaWYgIC8vIEdURVNUX0VMTElQU0lT
X05FRURTX1BPRF8KIAogLy8gQXBwZW5kcyB0aGUgdXNlci1zdXBwbGllZCBtZXNzYWdlIHRvIHRo
ZSBHb29nbGUtVGVzdC1nZW5lcmF0ZWQgbWVzc2FnZS4KLUdURVNUX0FQSV8gU3RyaW5nIEFwcGVu
ZFVzZXJNZXNzYWdlKGNvbnN0IFN0cmluZyYgZ3Rlc3RfbXNnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgTWVzc2FnZSYgdXNlcl9tc2cpOworR1RFU1RfQVBJXyBz
dGQ6OnN0cmluZyBBcHBlbmRVc2VyTWVzc2FnZSgKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZ3Rl
c3RfbXNnLCBjb25zdCBNZXNzYWdlJiB1c2VyX21zZyk7CisKKyNpZiBHVEVTVF9IQVNfRVhDRVBU
SU9OUworCisvLyBUaGlzIGV4Y2VwdGlvbiBpcyB0aHJvd24gYnkgKGFuZCBvbmx5IGJ5KSBhIGZh
aWxlZCBHb29nbGUgVGVzdAorLy8gYXNzZXJ0aW9uIHdoZW4gR1RFU1RfRkxBRyh0aHJvd19vbl9m
YWlsdXJlKSBpcyB0cnVlIChpZiBleGNlcHRpb25zCisvLyBhcmUgZW5hYmxlZCkuICBXZSBkZXJp
dmUgaXQgZnJvbSBzdGQ6OnJ1bnRpbWVfZXJyb3IsIHdoaWNoIGlzIGZvcgorLy8gZXJyb3JzIHBy
ZXN1bWFibHkgZGV0ZWN0YWJsZSBvbmx5IGF0IHJ1biB0aW1lLiAgU2luY2UKKy8vIHN0ZDo6cnVu
dGltZV9lcnJvciBpbmhlcml0cyBmcm9tIHN0ZDo6ZXhjZXB0aW9uLCBtYW55IHRlc3RpbmcKKy8v
IGZyYW1ld29ya3Mga25vdyBob3cgdG8gZXh0cmFjdCBhbmQgcHJpbnQgdGhlIG1lc3NhZ2UgaW5z
aWRlIGl0LgorY2xhc3MgR1RFU1RfQVBJXyBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbiA6IHB1
YmxpYyA6OnN0ZDo6cnVudGltZV9lcnJvciB7CisgcHVibGljOgorICBleHBsaWNpdCBHb29nbGVU
ZXN0RmFpbHVyZUV4Y2VwdGlvbihjb25zdCBUZXN0UGFydFJlc3VsdCYgZmFpbHVyZSk7Cit9Owor
CisjZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCiAKIC8vIEEgaGVscGVyIGNsYXNzIGZv
ciBjcmVhdGluZyBzY29wZWQgdHJhY2VzIGluIHVzZXIgcHJvZ3JhbXMuCiBjbGFzcyBHVEVTVF9B
UElfIFNjb3BlZFRyYWNlIHsKQEAgLTE3OSw5OCArMTcxLDM1IEBAIGNsYXNzIEdURVNUX0FQSV8g
U2NvcGVkVHJhY2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGMndG9yIGFuZCBk
J3Rvci4gIFRoZXJlZm9yZSBpdCBkb2Vzbid0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gbmVlZCB0byBiZSB1c2VkIG90aGVyd2lzZS4KIAotLy8gQ29udmVydHMgYSBzdHJlYW1hYmxl
IHZhbHVlIHRvIGEgU3RyaW5nLiAgQSBOVUxMIHBvaW50ZXIgaXMKLS8vIGNvbnZlcnRlZCB0byAi
KG51bGwpIi4gIFdoZW4gdGhlIGlucHV0IHZhbHVlIGlzIGEgOjpzdHJpbmcsCi0vLyA6OnN0ZDo6
c3RyaW5nLCA6OndzdHJpbmcsIG9yIDo6c3RkOjp3c3RyaW5nIG9iamVjdCwgZWFjaCBOVUwKLS8v
IGNoYXJhY3RlciBpbiBpdCBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgotLy8gRGVjbGFyZWQgaGVy
ZSBidXQgZGVmaW5lZCBpbiBndGVzdC5oLCBzbyB0aGF0IGl0IGhhcyBhY2Nlc3MKLS8vIHRvIHRo
ZSBkZWZpbml0aW9uIG9mIHRoZSBNZXNzYWdlIGNsYXNzLCByZXF1aXJlZCBieSB0aGUgQVJNCi0v
LyBjb21waWxlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotU3RyaW5nIFN0cmVhbWFibGVUb1N0
cmluZyhjb25zdCBUJiBzdHJlYW1hYmxlKTsKLQotLy8gRm9ybWF0cyBhIHZhbHVlIHRvIGJlIHVz
ZWQgaW4gYSBmYWlsdXJlIG1lc3NhZ2UuCi0KLSNpZmRlZiBHVEVTVF9ORUVEU19JU19QT0lOVEVS
XwotCi0vLyBUaGVzZSBhcmUgbmVlZGVkIGFzIHRoZSBOb2tpYSBTeW1iaWFuIGFuZCBJQk0gWEwg
Qy9DKysgY29tcGlsZXJzCi0vLyBjYW5ub3QgZGVjaWRlIGJldHdlZW4gY29uc3QgVCYgYW5kIGNv
bnN0IFQqIGluIGEgZnVuY3Rpb24gdGVtcGxhdGUuCi0vLyBUaGVzZSBjb21waWxlcnMgX2Nhbl8g
ZGVjaWRlIGJldHdlZW4gY2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zCi0vLyBmb3IgVCBh
bmQgVCosIHNvIGEgdHIxOjp0eXBlX3RyYWl0cy1saWtlIGlzX3BvaW50ZXIgd29ya3MsIGFuZCB3
ZQotLy8gY2FuIG92ZXJsb2FkIG9uIHRoYXQuCi0KLS8vIFRoaXMgb3ZlcmxvYWQgbWFrZXMgc3Vy
ZSB0aGF0IGFsbCBwb2ludGVycyAoaW5jbHVkaW5nCi0vLyB0aG9zZSB0byBjaGFyIG9yIHdjaGFy
X3QpIGFyZSBwcmludGVkIGFzIHJhdyBwb2ludGVycy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
aW5saW5lIFN0cmluZyBGb3JtYXRWYWx1ZUZvckZhaWx1cmVNZXNzYWdlKGludGVybmFsOjp0cnVl
X3R5cGUgLypkdW1teSovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFQqIHBvaW50ZXIpIHsKLSAgcmV0dXJuIFN0cmVhbWFibGVUb1N0cmluZyhzdGF0aWNfY2Fz
dDxjb25zdCB2b2lkKj4ocG9pbnRlcikpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlu
bGluZSBTdHJpbmcgRm9ybWF0VmFsdWVGb3JGYWlsdXJlTWVzc2FnZShpbnRlcm5hbDo6ZmFsc2Vf
dHlwZSAvKmR1bW15Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVCYgdmFsdWUpIHsKLSAgcmV0dXJuIFN0cmVhbWFibGVUb1N0cmluZyh2YWx1ZSk7
Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFN0cmluZyBGb3JtYXRGb3JGYWls
dXJlTWVzc2FnZShjb25zdCBUJiB2YWx1ZSkgewotICByZXR1cm4gRm9ybWF0VmFsdWVGb3JGYWls
dXJlTWVzc2FnZSgKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjppc19wb2ludGVyPFQ+Ojp0eXBl
KCksIHZhbHVlKTsKLX0KLQotI2Vsc2UKLQotLy8gVGhlc2UgYXJlIG5lZWRlZCBhcyB0aGUgYWJv
dmUgc29sdXRpb24gdXNpbmcgaXNfcG9pbnRlciBoYXMgdGhlCi0vLyBsaW1pdGF0aW9uIHRoYXQg
VCBjYW5ub3QgYmUgYSB0eXBlIHdpdGhvdXQgZXh0ZXJuYWwgbGlua2FnZSwgd2hlbgotLy8gY29t
cGlsZWQgdXNpbmcgTVNWQy4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgU3RyaW5n
IEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKGNvbnN0IFQmIHZhbHVlKSB7Ci0gIHJldHVybiBTdHJl
YW1hYmxlVG9TdHJpbmcodmFsdWUpOwotfQotCi0vLyBUaGlzIG92ZXJsb2FkIG1ha2VzIHN1cmUg
dGhhdCBhbGwgcG9pbnRlcnMgKGluY2x1ZGluZwotLy8gdGhvc2UgdG8gY2hhciBvciB3Y2hhcl90
KSBhcmUgcHJpbnRlZCBhcyByYXcgcG9pbnRlcnMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlu
bGluZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoVCogcG9pbnRlcikgewotICByZXR1
cm4gU3RyZWFtYWJsZVRvU3RyaW5nKHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihwb2ludGVyKSk7
Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfTkVFRFNfSVNfUE9JTlRFUl8KLQotLy8gVGhlc2Ugb3Zl
cmxvYWRlZCB2ZXJzaW9ucyBoYW5kbGUgbmFycm93IGFuZCB3aWRlIGNoYXJhY3RlcnMuCi1HVEVT
VF9BUElfIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjaGFyIGNoKTsKLUdURVNUX0FQ
SV8gU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKHdjaGFyX3Qgd2NoYXIpOwotCi0vLyBX
aGVuIHRoaXMgb3BlcmFuZCBpcyBhIGNvbnN0IGNoYXIqIG9yIGNoYXIqLCBhbmQgdGhlIG90aGVy
IG9wZXJhbmQKLS8vIGlzIGEgOjpzdGQ6OnN0cmluZyBvciA6OnN0cmluZywgd2UgcHJpbnQgdGhp
cyBvcGVyYW5kIGFzIGEgQyBzdHJpbmcKLS8vIHJhdGhlciB0aGFuIGEgcG9pbnRlci4gIFdlIGRv
IHRoZSBzYW1lIGZvciB3aWRlIHN0cmluZ3MuCi0KLS8vIFRoaXMgaW50ZXJuYWwgbWFjcm8gaXMg
dXNlZCB0byBhdm9pZCBkdXBsaWNhdGVkIGNvZGUuCi0jZGVmaW5lIEdURVNUX0ZPUk1BVF9JTVBM
XyhvcGVyYW5kMl90eXBlLCBvcGVyYW5kMV9wcmludGVyKVwKLWlubGluZSBTdHJpbmcgRm9ybWF0
Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKFwKLSAgICBvcGVyYW5kMl90eXBlOjp2YWx1ZV90
eXBlKiBzdHIsIGNvbnN0IG9wZXJhbmQyX3R5cGUmIC8qb3BlcmFuZDIqLykge1wKLSAgcmV0dXJu
IG9wZXJhbmQxX3ByaW50ZXIoc3RyKTtcCi19XAotaW5saW5lIFN0cmluZyBGb3JtYXRGb3JDb21w
YXJpc29uRmFpbHVyZU1lc3NhZ2UoXAotICAgIGNvbnN0IG9wZXJhbmQyX3R5cGU6OnZhbHVlX3R5
cGUqIHN0ciwgY29uc3Qgb3BlcmFuZDJfdHlwZSYgLypvcGVyYW5kMiovKSB7XAotICByZXR1cm4g
b3BlcmFuZDFfcHJpbnRlcihzdHIpO1wKLX0KLQotR1RFU1RfRk9STUFUX0lNUExfKDo6c3RkOjpz
dHJpbmcsIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQpCi0jaWYgR1RFU1RfSEFTX1NURF9XU1RS
SU5HCi1HVEVTVF9GT1JNQVRfSU1QTF8oOjpzdGQ6OndzdHJpbmcsIFN0cmluZzo6U2hvd1dpZGVD
U3RyaW5nUXVvdGVkKQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKLQotI2lmIEdU
RVNUX0hBU19HTE9CQUxfU1RSSU5HCi1HVEVTVF9GT1JNQVRfSU1QTF8oOjpzdHJpbmcsIFN0cmlu
Zzo6U2hvd0NTdHJpbmdRdW90ZWQpCi0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5H
Ci0jaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCi1HVEVTVF9GT1JNQVRfSU1QTF8oOjp3c3Ry
aW5nLCBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZCkKLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X0dMT0JBTF9XU1RSSU5HCi0KLSN1bmRlZiBHVEVTVF9GT1JNQVRfSU1QTF8KK25hbWVzcGFjZSBl
ZGl0X2Rpc3RhbmNlIHsKKy8vIFJldHVybnMgdGhlIG9wdGltYWwgZWRpdHMgdG8gZ28gZnJvbSAn
bGVmdCcgdG8gJ3JpZ2h0Jy4KKy8vIEFsbCBlZGl0cyBjb3N0IHRoZSBzYW1lLCB3aXRoIHJlcGxh
Y2UgaGF2aW5nIGxvd2VyIHByaW9yaXR5IHRoYW4KKy8vIGFkZC9yZW1vdmUuCisvLyBTaW1wbGUg
aW1wbGVtZW50YXRpb24gb2YgdGhlIFdhZ25lcuKAk0Zpc2NoZXIgYWxnb3JpdGhtLgorLy8gU2Vl
IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2FnbmVyLUZpc2NoZXJfYWxnb3JpdGhtCitl
bnVtIEVkaXRUeXBlIHsga01hdGNoLCBrQWRkLCBrUmVtb3ZlLCBrUmVwbGFjZSB9OworR1RFU1Rf
QVBJXyBzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKAorICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIGxlZnQsIGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4m
IHJpZ2h0KTsKKworLy8gU2FtZSBhcyBhYm92ZSwgYnV0IHRoZSBpbnB1dCBpcyByZXByZXNlbnRl
ZCBhcyBzdHJpbmdzLgorR1RFU1RfQVBJXyBzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gQ2FsY3VsYXRl
T3B0aW1hbEVkaXRzKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgbGVmdCwK
KyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHJpZ2h0KTsKKworLy8gQ3JlYXRl
IGEgZGlmZiBvZiB0aGUgaW5wdXQgc3RyaW5ncyBpbiBVbmlmaWVkIGRpZmYgZm9ybWF0LgorR1RF
U1RfQVBJXyBzdGQ6OnN0cmluZyBDcmVhdGVVbmlmaWVkRGlmZihjb25zdCBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4mIGxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgcmlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb250ZXh0ID0gMik7CisKK30gIC8v
IG5hbWVzcGFjZSBlZGl0X2Rpc3RhbmNlCisKKy8vIENhbGN1bGF0ZSB0aGUgZGlmZiBiZXR3ZWVu
ICdsZWZ0JyBhbmQgJ3JpZ2h0JyBhbmQgcmV0dXJuIGl0IGluIHVuaWZpZWQgZGlmZgorLy8gZm9y
bWF0LgorLy8gSWYgbm90IG51bGwsIHN0b3JlcyBpbiAndG90YWxfbGluZV9jb3VudCcgdGhlIHRv
dGFsIG51bWJlciBvZiBsaW5lcyBmb3VuZAorLy8gaW4gbGVmdCArIHJpZ2h0LgorR1RFU1RfQVBJ
XyBzdGQ6OnN0cmluZyBEaWZmU3RyaW5ncyhjb25zdCBzdGQ6OnN0cmluZyYgbGVmdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHJpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIHRvdGFsX2xpbmVfY291
bnQpOwogCiAvLyBDb25zdHJ1Y3RzIGFuZCByZXR1cm5zIHRoZSBtZXNzYWdlIGZvciBhbiBlcXVh
bGl0eSBhc3NlcnRpb24KIC8vIChlLmcuIEFTU0VSVF9FUSwgRVhQRUNUX1NUUkVRLCBldGMpIGZh
aWx1cmUuCkBAIC0yODksMTIgKzIxOCwxMiBAQCBHVEVTVF9GT1JNQVRfSU1QTF8oOjp3c3RyaW5n
LCBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZCkKIC8vIGJlIGluc2VydGVkIGludG8gdGhl
IG1lc3NhZ2UuCiBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBFcUZhaWx1cmUoY29uc3QgY2hh
ciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4cGVjdGVkX3ZhbHVlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgYWN0dWFsX3ZhbHVlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBl
eHBlY3RlZF92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgYWN0dWFsX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaWdub3JpbmdfY2FzZSk7CiAKIC8vIENvbnN0cnVjdHMgYSBmYWlsdXJl
IG1lc3NhZ2UgZm9yIEJvb2xlYW4gYXNzZXJ0aW9ucyBzdWNoIGFzIEVYUEVDVF9UUlVFLgotR1RF
U1RfQVBJXyBTdHJpbmcgR2V0Qm9vbEFzc2VydGlvbkZhaWx1cmVNZXNzYWdlKAorR1RFU1RfQVBJ
XyBzdGQ6OnN0cmluZyBHZXRCb29sQXNzZXJ0aW9uRmFpbHVyZU1lc3NhZ2UoCiAgICAgY29uc3Qg
QXNzZXJ0aW9uUmVzdWx0JiBhc3NlcnRpb25fcmVzdWx0LAogICAgIGNvbnN0IGNoYXIqIGV4cHJl
c3Npb25fdGV4dCwKICAgICBjb25zdCBjaGFyKiBhY3R1YWxfcHJlZGljYXRlX3ZhbHVlLApAQCAt
MzY5LDcgKzI5OCw3IEBAIGNsYXNzIEZsb2F0aW5nUG9pbnQgewogICAvLyBiaXRzLiAgVGhlcmVm
b3JlLCA0IHNob3VsZCBiZSBlbm91Z2ggZm9yIG9yZGluYXJ5IHVzZS4KICAgLy8KICAgLy8gU2Vl
IHRoZSBmb2xsb3dpbmcgYXJ0aWNsZSBmb3IgbW9yZSBkZXRhaWxzIG9uIFVMUDoKLSAgLy8gaHR0
cDovL3d3dy5jeWdudXMtc29mdHdhcmUuY29tL3BhcGVycy9jb21wYXJpbmdmbG9hdHMvY29tcGFy
aW5nZmxvYXRzLmh0bS4KKyAgLy8gaHR0cDovL3JhbmRvbWFzY2lpLndvcmRwcmVzcy5jb20vMjAx
Mi8wMi8yNS9jb21wYXJpbmctZmxvYXRpbmctcG9pbnQtbnVtYmVycy0yMDEyLWVkaXRpb24vCiAg
IHN0YXRpYyBjb25zdCBzaXplX3Qga01heFVscHMgPSA0OwogCiAgIC8vIENvbnN0cnVjdHMgYSBG
bG9hdGluZ1BvaW50IGZyb20gYSByYXcgZmxvYXRpbmctcG9pbnQgbnVtYmVyLgpAQCAtMzk2LDYg
KzMyNSw5IEBAIGNsYXNzIEZsb2F0aW5nUG9pbnQgewogICAgIHJldHVybiBSZWludGVycHJldEJp
dHMoa0V4cG9uZW50Qml0TWFzayk7CiAgIH0KIAorICAvLyBSZXR1cm5zIHRoZSBtYXhpbXVtIHJl
cHJlc2VudGFibGUgZmluaXRlIGZsb2F0aW5nLXBvaW50IG51bWJlci4KKyAgc3RhdGljIFJhd1R5
cGUgTWF4KCk7CisKICAgLy8gTm9uLXN0YXRpYyBtZXRob2RzCiAKICAgLy8gUmV0dXJucyB0aGUg
Yml0cyB0aGF0IHJlcHJlc2VudHMgdGhpcyBudW1iZXIuCkBAIC00NzYsNiArNDA4LDEzIEBAIGNs
YXNzIEZsb2F0aW5nUG9pbnQgewogICBGbG9hdGluZ1BvaW50VW5pb24gdV87CiB9OwogCisvLyBX
ZSBjYW5ub3QgdXNlIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpIGFzIGl0IGNsYXNoZXMg
d2l0aCB0aGUgbWF4KCkKKy8vIG1hY3JvIGRlZmluZWQgYnkgPHdpbmRvd3MuaD4uCit0ZW1wbGF0
ZSA8PgoraW5saW5lIGZsb2F0IEZsb2F0aW5nUG9pbnQ8ZmxvYXQ+OjpNYXgoKSB7IHJldHVybiBG
TFRfTUFYOyB9Cit0ZW1wbGF0ZSA8PgoraW5saW5lIGRvdWJsZSBGbG9hdGluZ1BvaW50PGRvdWJs
ZT46Ok1heCgpIHsgcmV0dXJuIERCTF9NQVg7IH0KKwogLy8gVHlwZWRlZnMgdGhlIGluc3RhbmNl
cyBvZiB0aGUgRmxvYXRpbmdQb2ludCB0ZW1wbGF0ZSBjbGFzcyB0aGF0IHdlCiAvLyBjYXJlIHRv
IHVzZS4KIHR5cGVkZWYgRmxvYXRpbmdQb2ludDxmbG9hdD4gRmxvYXQ7CkBAIC01NTgsMjQgKzQ5
NywxNyBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBJc0hSRVNVTFRGYWlsdXJlKGNvbnN0
IGNoYXIqIGV4cHIsCiAKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCi0vLyBGb3JtYXRz
IGEgc291cmNlIGZpbGUgcGF0aCBhbmQgYSBsaW5lIG51bWJlciBhcyB0aGV5IHdvdWxkIGFwcGVh
cgotLy8gaW4gYSBjb21waWxlciBlcnJvciBtZXNzYWdlLgotaW5saW5lIFN0cmluZyBGb3JtYXRG
aWxlTG9jYXRpb24oY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpIHsKLSAgY29uc3QgY2hhciog
Y29uc3QgZmlsZV9uYW1lID0gZmlsZSA9PSBOVUxMID8gInVua25vd24gZmlsZSIgOiBmaWxlOwot
ICBpZiAobGluZSA8IDApIHsKLSAgICByZXR1cm4gU3RyaW5nOjpGb3JtYXQoIiVzOiIsIGZpbGVf
bmFtZSk7Ci0gIH0KLSNpZmRlZiBfTVNDX1ZFUgotICByZXR1cm4gU3RyaW5nOjpGb3JtYXQoIiVz
KCVkKToiLCBmaWxlX25hbWUsIGxpbmUpOwotI2Vsc2UKLSAgcmV0dXJuIFN0cmluZzo6Rm9ybWF0
KCIlczolZDoiLCBmaWxlX25hbWUsIGxpbmUpOwotI2VuZGlmICAvLyBfTVNDX1ZFUgotfQotCiAv
LyBUeXBlcyBvZiBTZXRVcFRlc3RDYXNlKCkgYW5kIFRlYXJEb3duVGVzdENhc2UoKSBmdW5jdGlv
bnMuCiB0eXBlZGVmIHZvaWQgKCpTZXRVcFRlc3RDYXNlRnVuYykoKTsKIHR5cGVkZWYgdm9pZCAo
KlRlYXJEb3duVGVzdENhc2VGdW5jKSgpOwogCitzdHJ1Y3QgQ29kZUxvY2F0aW9uIHsKKyAgQ29k
ZUxvY2F0aW9uKGNvbnN0IHN0cmluZyYgYV9maWxlLCBpbnQgYV9saW5lKSA6IGZpbGUoYV9maWxl
KSwgbGluZShhX2xpbmUpIHt9CisKKyAgc3RyaW5nIGZpbGU7CisgIGludCBsaW5lOworfTsKKwog
Ly8gQ3JlYXRlcyBhIG5ldyBUZXN0SW5mbyBvYmplY3QgYW5kIHJlZ2lzdGVycyBpdCB3aXRoIEdv
b2dsZSBUZXN0OwogLy8gcmV0dXJucyB0aGUgY3JlYXRlZCBvYmplY3QuCiAvLwpAQCAtNTgzLDEw
ICs1MTUsMTEgQEAgdHlwZWRlZiB2b2lkICgqVGVhckRvd25UZXN0Q2FzZUZ1bmMpKCk7CiAvLwog
Ly8gICB0ZXN0X2Nhc2VfbmFtZTogICBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UKIC8vICAgbmFtZTog
ICAgICAgICAgICAgbmFtZSBvZiB0aGUgdGVzdAotLy8gICB0ZXN0X2Nhc2VfY29tbWVudDogYSBj
b21tZW50IG9uIHRoZSB0ZXN0IGNhc2UgdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluCi0vLyAgICAg
ICAgICAgICAgICAgICAgICB0aGUgdGVzdCBvdXRwdXQKLS8vICAgY29tbWVudDogICAgICAgICAg
YSBjb21tZW50IG9uIHRoZSB0ZXN0IHRoYXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKLS8vICAg
ICAgICAgICAgICAgICAgICAgdGVzdCBvdXRwdXQKKy8vICAgdHlwZV9wYXJhbSAgICAgICAgdGhl
IG5hbWUgb2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorLy8gICAgICAg
ICAgICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVk
IHRlc3QuCisvLyAgIHZhbHVlX3BhcmFtICAgICAgIHRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhl
IHRlc3QncyB2YWx1ZSBwYXJhbWV0ZXIsCisvLyAgICAgICAgICAgICAgICAgICAgIG9yIE5VTEwg
aWYgdGhpcyBpcyBub3QgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKy8vICAgY29kZV9sb2Nh
dGlvbjogICAgY29kZSBsb2NhdGlvbiB3aGVyZSB0aGUgdGVzdCBpcyBkZWZpbmVkCiAvLyAgIGZp
eHR1cmVfY2xhc3NfaWQ6IElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKIC8vICAgc2V0X3Vw
X3RjOiAgICAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSB0ZXN0
IGNhc2UKIC8vICAgdGVhcl9kb3duX3RjOiAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhh
dCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UKQEAgLTU5NCw4ICs1MjcsMTEgQEAgdHlwZWRlZiB2
b2lkICgqVGVhckRvd25UZXN0Q2FzZUZ1bmMpKCk7CiAvLyAgICAgICAgICAgICAgICAgICAgIFRo
ZSBuZXdseSBjcmVhdGVkIFRlc3RJbmZvIGluc3RhbmNlIHdpbGwgYXNzdW1lCiAvLyAgICAgICAg
ICAgICAgICAgICAgIG93bmVyc2hpcCBvZiB0aGUgZmFjdG9yeSBvYmplY3QuCiBHVEVTVF9BUElf
IFRlc3RJbmZvKiBNYWtlQW5kUmVnaXN0ZXJUZXN0SW5mbygKLSAgICBjb25zdCBjaGFyKiB0ZXN0
X2Nhc2VfbmFtZSwgY29uc3QgY2hhciogbmFtZSwKLSAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2Vf
Y29tbWVudCwgY29uc3QgY2hhciogY29tbWVudCwKKyAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2Vf
bmFtZSwKKyAgICBjb25zdCBjaGFyKiBuYW1lLAorICAgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0s
CisgICAgY29uc3QgY2hhciogdmFsdWVfcGFyYW0sCisgICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9j
YXRpb24sCiAgICAgVHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCiAgICAgU2V0VXBUZXN0Q2FzZUZ1
bmMgc2V0X3VwX3RjLAogICAgIFRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YywKQEAg
LTYwNCw3ICs1NDAsNyBAQCBHVEVTVF9BUElfIFRlc3RJbmZvKiBNYWtlQW5kUmVnaXN0ZXJUZXN0
SW5mbygKIC8vIElmICpwc3RyIHN0YXJ0cyB3aXRoIHRoZSBnaXZlbiBwcmVmaXgsIG1vZGlmaWVz
ICpwc3RyIHRvIGJlIHJpZ2h0CiAvLyBwYXN0IHRoZSBwcmVmaXggYW5kIHJldHVybnMgdHJ1ZTsg
b3RoZXJ3aXNlIGxlYXZlcyAqcHN0ciB1bmNoYW5nZWQKIC8vIGFuZCByZXR1cm5zIGZhbHNlLiAg
Tm9uZSBvZiBwc3RyLCAqcHN0ciwgYW5kIHByZWZpeCBjYW4gYmUgTlVMTC4KLWJvb2wgU2tpcFBy
ZWZpeChjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IGNoYXIqKiBwc3RyKTsKK0dURVNUX0FQSV8g
Ym9vbCBTa2lwUHJlZml4KGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgY2hhcioqIHBzdHIpOwog
CiAjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAogCkBA
IC02MjUsMTAgKzU2MSwyMSBAQCBjbGFzcyBHVEVTVF9BUElfIFR5cGVkVGVzdENhc2VQU3RhdGUg
ewogICAgICAgZmZsdXNoKHN0ZGVycik7CiAgICAgICBwb3NpeDo6QWJvcnQoKTsKICAgICB9Ci0g
ICAgZGVmaW5lZF90ZXN0X25hbWVzXy5pbnNlcnQodGVzdF9uYW1lKTsKKyAgICByZWdpc3RlcmVk
X3Rlc3RzXy5pbnNlcnQoCisgICAgICAgIDo6c3RkOjptYWtlX3BhaXIodGVzdF9uYW1lLCBDb2Rl
TG9jYXRpb24oZmlsZSwgbGluZSkpKTsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQogCisgIGJvb2wg
VGVzdEV4aXN0cyhjb25zdCBzdGQ6OnN0cmluZyYgdGVzdF9uYW1lKSBjb25zdCB7CisgICAgcmV0
dXJuIHJlZ2lzdGVyZWRfdGVzdHNfLmNvdW50KHRlc3RfbmFtZSkgPiAwOworICB9CisKKyAgY29u
c3QgQ29kZUxvY2F0aW9uJiBHZXRDb2RlTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3Rf
bmFtZSkgY29uc3QgeworICAgIFJlZ2lzdGVyZWRUZXN0c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSByZWdpc3RlcmVkX3Rlc3RzXy5maW5kKHRlc3RfbmFtZSk7CisgICAgR1RFU1RfQ0hFQ0tfKGl0
ICE9IHJlZ2lzdGVyZWRfdGVzdHNfLmVuZCgpKTsKKyAgICByZXR1cm4gaXQtPnNlY29uZDsKKyAg
fQorCiAgIC8vIFZlcmlmaWVzIHRoYXQgcmVnaXN0ZXJlZF90ZXN0cyBtYXRjaCB0aGUgdGVzdCBu
YW1lcyBpbgogICAvLyBkZWZpbmVkX3Rlc3RfbmFtZXNfOyByZXR1cm5zIHJlZ2lzdGVyZWRfdGVz
dHMgaWYgc3VjY2Vzc2Z1bCwgb3IKICAgLy8gYWJvcnRzIHRoZSBwcm9ncmFtIG90aGVyd2lzZS4K
QEAgLTYzNiw4ICs1ODMsMTAgQEAgY2xhc3MgR1RFU1RfQVBJXyBUeXBlZFRlc3RDYXNlUFN0YXRl
IHsKICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiByZWdpc3Rl
cmVkX3Rlc3RzKTsKIAogIHByaXZhdGU6CisgIHR5cGVkZWYgOjpzdGQ6Om1hcDxzdGQ6OnN0cmlu
ZywgQ29kZUxvY2F0aW9uPiBSZWdpc3RlcmVkVGVzdHNNYXA7CisKICAgYm9vbCByZWdpc3RlcmVk
XzsKLSAgOjpzdGQ6OnNldDxjb25zdCBjaGFyKj4gZGVmaW5lZF90ZXN0X25hbWVzXzsKKyAgUmVn
aXN0ZXJlZFRlc3RzTWFwIHJlZ2lzdGVyZWRfdGVzdHNfOwogfTsKIAogLy8gU2tpcHMgdG8gdGhl
IGZpcnN0IG5vbi1zcGFjZSBjaGFyIGFmdGVyIHRoZSBmaXJzdCBjb21tYSBpbiAnc3RyJzsKQEAg
LTY0NywxNyArNTk2LDIyIEBAIGlubGluZSBjb25zdCBjaGFyKiBTa2lwQ29tbWEoY29uc3QgY2hh
ciogc3RyKSB7CiAgIGlmIChjb21tYSA9PSBOVUxMKSB7CiAgICAgcmV0dXJuIE5VTEw7CiAgIH0K
LSAgd2hpbGUgKGlzc3BhY2UoKigrK2NvbW1hKSkpIHt9CisgIHdoaWxlIChJc1NwYWNlKCooKytj
b21tYSkpKSB7fQogICByZXR1cm4gY29tbWE7CiB9CiAKIC8vIFJldHVybnMgdGhlIHByZWZpeCBv
ZiAnc3RyJyBiZWZvcmUgdGhlIGZpcnN0IGNvbW1hIGluIGl0OyByZXR1cm5zCiAvLyB0aGUgZW50
aXJlIHN0cmluZyBpZiBpdCBjb250YWlucyBubyBjb21tYS4KLWlubGluZSBTdHJpbmcgR2V0UHJl
Zml4VW50aWxDb21tYShjb25zdCBjaGFyKiBzdHIpIHsKK2lubGluZSBzdGQ6OnN0cmluZyBHZXRQ
cmVmaXhVbnRpbENvbW1hKGNvbnN0IGNoYXIqIHN0cikgewogICBjb25zdCBjaGFyKiBjb21tYSA9
IHN0cmNocihzdHIsICcsJyk7Ci0gIHJldHVybiBjb21tYSA9PSBOVUxMID8gU3RyaW5nKHN0cikg
OiBTdHJpbmcoc3RyLCBjb21tYSAtIHN0cik7CisgIHJldHVybiBjb21tYSA9PSBOVUxMID8gc3Ry
IDogc3RkOjpzdHJpbmcoc3RyLCBjb21tYSk7CiB9CiAKKy8vIFNwbGl0cyBhIGdpdmVuIHN0cmlu
ZyBvbiBhIGdpdmVuIGRlbGltaXRlciwgcG9wdWxhdGluZyBhIGdpdmVuCisvLyB2ZWN0b3Igd2l0
aCB0aGUgZmllbGRzLgordm9pZCBTcGxpdFN0cmluZyhjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIs
IGNoYXIgZGVsaW1pdGVyLAorICAgICAgICAgICAgICAgICA6OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6
c3RyaW5nPiogZGVzdCk7CisKIC8vIFR5cGVQYXJhbWV0ZXJpemVkVGVzdDxGaXh0dXJlLCBUZXN0
U2VsLCBUeXBlcz46OlJlZ2lzdGVyKCkKIC8vIHJlZ2lzdGVycyBhIGxpc3Qgb2YgdHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3RzIHdpdGggR29vZ2xlIFRlc3QuICBUaGUKIC8vIHJldHVybiB2YWx1ZSBp
cyBpbnNpZ25pZmljYW50IC0gd2UganVzdCBuZWVkIHRvIHJldHVybiBzb21ldGhpbmcKQEAgLTY3
Miw4ICs2MjYsMTAgQEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0IHsKICAgLy8gc3BlY2lm
aWVkIGluIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFByZWZpeCwgVGVzdENhc2UsCiAg
IC8vIFR5cGVzKS4gIFZhbGlkIHZhbHVlcyBmb3IgJ2luZGV4JyBhcmUgWzAsIE4gLSAxXSB3aGVy
ZSBOIGlzIHRoZQogICAvLyBsZW5ndGggb2YgVHlwZXMuCi0gIHN0YXRpYyBib29sIFJlZ2lzdGVy
KGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgY2hhciogY2FzZV9uYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiB0ZXN0X25hbWVzLCBpbnQgaW5kZXgpIHsKKyAgc3RhdGlj
IGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAg
ICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogY2FzZV9uYW1lLCBjb25zdCBjaGFyKiB0ZXN0X25hbWVzLAorICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaW5kZXgpIHsKICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjpIZWFk
IFR5cGU7CiAgICAgdHlwZWRlZiBGaXh0dXJlPFR5cGU+IEZpeHR1cmVDbGFzczsKICAgICB0eXBl
ZGVmIHR5cGVuYW1lIEdURVNUX0JJTkRfKFRlc3RTZWwsIFR5cGUpIFRlc3RDbGFzczsKQEAgLTY4
MSwxMSArNjM3LDEyIEBAIGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVkVGVzdCB7CiAgICAgLy8gRmly
c3QsIHJlZ2lzdGVycyB0aGUgZmlyc3QgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgaW4gdGhlIHR5
cGUKICAgICAvLyBsaXN0LgogICAgIE1ha2VBbmRSZWdpc3RlclRlc3RJbmZvKAotICAgICAgICBT
dHJpbmc6OkZvcm1hdCgiJXMlcyVzLyVkIiwgcHJlZml4LCBwcmVmaXhbMF0gPT0gJ1wwJyA/ICIi
IDogIi8iLAotICAgICAgICAgICAgICAgICAgICAgICBjYXNlX25hbWUsIGluZGV4KS5jX3N0cigp
LAotICAgICAgICBHZXRQcmVmaXhVbnRpbENvbW1hKHRlc3RfbmFtZXMpLmNfc3RyKCksCi0gICAg
ICAgIFN0cmluZzo6Rm9ybWF0KCJUeXBlUGFyYW0gPSAlcyIsIEdldFR5cGVOYW1lPFR5cGU+KCku
Y19zdHIoKSkuY19zdHIoKSwKLSAgICAgICAgIiIsCisgICAgICAgIChzdGQ6OnN0cmluZyhwcmVm
aXgpICsgKHByZWZpeFswXSA9PSAnXDAnID8gIiIgOiAiLyIpICsgY2FzZV9uYW1lICsgIi8iCisg
ICAgICAgICArIFN0cmVhbWFibGVUb1N0cmluZyhpbmRleCkpLmNfc3RyKCksCisgICAgICAgIFN0
cmlwVHJhaWxpbmdTcGFjZXMoR2V0UHJlZml4VW50aWxDb21tYSh0ZXN0X25hbWVzKSkuY19zdHIo
KSwKKyAgICAgICAgR2V0VHlwZU5hbWU8VHlwZT4oKS5jX3N0cigpLAorICAgICAgICBOVUxMLCAg
Ly8gTm8gdmFsdWUgcGFyYW1ldGVyLgorICAgICAgICBjb2RlX2xvY2F0aW9uLAogICAgICAgICBH
ZXRUeXBlSWQ8Rml4dHVyZUNsYXNzPigpLAogICAgICAgICBUZXN0Q2xhc3M6OlNldFVwVGVzdENh
c2UsCiAgICAgICAgIFRlc3RDbGFzczo6VGVhckRvd25UZXN0Q2FzZSwKQEAgLTY5Myw3ICs2NTAs
NyBAQCBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3QgewogCiAgICAgLy8gTmV4dCwgcmVjdXJz
ZXMgKGF0IGNvbXBpbGUgdGltZSkgd2l0aCB0aGUgdGFpbCBvZiB0aGUgdHlwZSBsaXN0LgogICAg
IHJldHVybiBUeXBlUGFyYW1ldGVyaXplZFRlc3Q8Rml4dHVyZSwgVGVzdFNlbCwgdHlwZW5hbWUg
VHlwZXM6OlRhaWw+Ci0gICAgICAgIDo6UmVnaXN0ZXIocHJlZml4LCBjYXNlX25hbWUsIHRlc3Rf
bmFtZXMsIGluZGV4ICsgMSk7CisgICAgICAgIDo6UmVnaXN0ZXIocHJlZml4LCBjb2RlX2xvY2F0
aW9uLCBjYXNlX25hbWUsIHRlc3RfbmFtZXMsIGluZGV4ICsgMSk7CiAgIH0KIH07CiAKQEAgLTcw
MSw4ICs2NTgsOSBAQCBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3QgewogdGVtcGxhdGUgPEdU
RVNUX1RFTVBMQVRFXyBGaXh0dXJlLCBjbGFzcyBUZXN0U2VsPgogY2xhc3MgVHlwZVBhcmFtZXRl
cml6ZWRUZXN0PEZpeHR1cmUsIFRlc3RTZWwsIFR5cGVzMD4gewogIHB1YmxpYzoKLSAgc3RhdGlj
IGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogLypwcmVmaXgqLywgY29uc3QgY2hhciogLypjYXNl
X25hbWUqLywKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLyp0ZXN0X25hbWVz
Ki8sIGludCAvKmluZGV4Ki8pIHsKKyAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciog
LypwcmVmaXgqLywgQ29kZUxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiAvKmNhc2VfbmFtZSovLCBjb25zdCBjaGFyKiAvKnRlc3RfbmFtZXMqLywKKyAgICAgICAg
ICAgICAgICAgICAgICAgaW50IC8qaW5kZXgqLykgewogICAgIHJldHVybiB0cnVlOwogICB9CiB9
OwpAQCAtNzE0LDE3ICs2NzIsMzEgQEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1
cmUsIFRlc3RTZWwsIFR5cGVzMD4gewogdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBGaXh0dXJl
LCB0eXBlbmFtZSBUZXN0cywgdHlwZW5hbWUgVHlwZXM+CiBjbGFzcyBUeXBlUGFyYW1ldGVyaXpl
ZFRlc3RDYXNlIHsKICBwdWJsaWM6Ci0gIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIq
IHByZWZpeCwgY29uc3QgY2hhciogY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiB0ZXN0X25hbWVzKSB7CisgIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNo
YXIqIHByZWZpeCwgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFR5cGVkVGVzdENhc2VQU3RhdGUqIHN0YXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBjYXNlX25hbWUsIGNvbnN0IGNoYXIqIHRlc3RfbmFtZXMpIHsK
KyAgICBzdGQ6OnN0cmluZyB0ZXN0X25hbWUgPSBTdHJpcFRyYWlsaW5nU3BhY2VzKAorICAgICAg
ICBHZXRQcmVmaXhVbnRpbENvbW1hKHRlc3RfbmFtZXMpKTsKKyAgICBpZiAoIXN0YXRlLT5UZXN0
RXhpc3RzKHRlc3RfbmFtZSkpIHsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdl
dCBjb2RlIGxvY2F0aW9uIGZvciB0ZXN0ICVzLiVzIGF0ICVzLiIsCisgICAgICAgICAgICAgIGNh
c2VfbmFtZSwgdGVzdF9uYW1lLmNfc3RyKCksCisgICAgICAgICAgICAgIEZvcm1hdEZpbGVMb2Nh
dGlvbihjb2RlX2xvY2F0aW9uLmZpbGUuY19zdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvZGVfbG9jYXRpb24ubGluZSkuY19zdHIoKSk7CisgICAgICBmZmx1c2goc3Rk
ZXJyKTsKKyAgICAgIHBvc2l4OjpBYm9ydCgpOworICAgIH0KKyAgICBjb25zdCBDb2RlTG9jYXRp
b24mIHRlc3RfbG9jYXRpb24gPSBzdGF0ZS0+R2V0Q29kZUxvY2F0aW9uKHRlc3RfbmFtZSk7CisK
ICAgICB0eXBlZGVmIHR5cGVuYW1lIFRlc3RzOjpIZWFkIEhlYWQ7CiAKICAgICAvLyBGaXJzdCwg
cmVnaXN0ZXIgdGhlIGZpcnN0IHRlc3QgaW4gJ1Rlc3QnIGZvciBlYWNoIHR5cGUgaW4gJ1R5cGVz
Jy4KICAgICBUeXBlUGFyYW1ldGVyaXplZFRlc3Q8Rml4dHVyZSwgSGVhZCwgVHlwZXM+OjpSZWdp
c3RlcigKLSAgICAgICAgcHJlZml4LCBjYXNlX25hbWUsIHRlc3RfbmFtZXMsIDApOworICAgICAg
ICBwcmVmaXgsIHRlc3RfbG9jYXRpb24sIGNhc2VfbmFtZSwgdGVzdF9uYW1lcywgMCk7CiAKICAg
ICAvLyBOZXh0LCByZWN1cnNlcyAoYXQgY29tcGlsZSB0aW1lKSB3aXRoIHRoZSB0YWlsIG9mIHRo
ZSB0ZXN0IGxpc3QuCiAgICAgcmV0dXJuIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2U8Rml4dHVy
ZSwgdHlwZW5hbWUgVGVzdHM6OlRhaWwsIFR5cGVzPgotICAgICAgICA6OlJlZ2lzdGVyKHByZWZp
eCwgY2FzZV9uYW1lLCBTa2lwQ29tbWEodGVzdF9uYW1lcykpOworICAgICAgICA6OlJlZ2lzdGVy
KHByZWZpeCwgY29kZV9sb2NhdGlvbiwgc3RhdGUsCisgICAgICAgICAgICAgICAgICAgY2FzZV9u
YW1lLCBTa2lwQ29tbWEodGVzdF9uYW1lcykpOwogICB9CiB9OwogCkBAIC03MzIsMTUgKzcwNCwx
NiBAQCBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlIHsKIHRlbXBsYXRlIDxHVEVTVF9U
RU1QTEFURV8gRml4dHVyZSwgdHlwZW5hbWUgVHlwZXM+CiBjbGFzcyBUeXBlUGFyYW1ldGVyaXpl
ZFRlc3RDYXNlPEZpeHR1cmUsIFRlbXBsYXRlczAsIFR5cGVzPiB7CiAgcHVibGljOgotICBzdGF0
aWMgYm9vbCBSZWdpc3Rlcihjb25zdCBjaGFyKiAvKnByZWZpeCovLCBjb25zdCBjaGFyKiAvKmNh
c2VfbmFtZSovLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKnRlc3RfbmFt
ZXMqLykgeworICBzdGF0aWMgYm9vbCBSZWdpc3Rlcihjb25zdCBjaGFyKiAvKnByZWZpeCovLCBD
b2RlTG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR5cGVkVGVzdENhc2VQ
U3RhdGUqIC8qc3RhdGUqLywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLypj
YXNlX25hbWUqLywgY29uc3QgY2hhciogLyp0ZXN0X25hbWVzKi8pIHsKICAgICByZXR1cm4gdHJ1
ZTsKICAgfQogfTsKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9I
QVNfVFlQRURfVEVTVF9QCiAKLS8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2Ug
YXMgYSBTdHJpbmcuCisvLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFzIGFu
IHN0ZDo6c3RyaW5nLgogLy8KIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMg
dG8gYmUgaW5jbHVkZWQgaXMgc3BlY2lmaWVkIGJ5CiAvLyB0aGUgZ3Rlc3Rfc3RhY2tfdHJhY2Vf
ZGVwdGggZmxhZy4gIFRoZSBza2lwX2NvdW50IHBhcmFtZXRlcgpAQCAtNzUwLDggKzcyMyw4IEBA
IGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2U8Rml4dHVyZSwgVGVtcGxhdGVzMCwgVHlw
ZXM+IHsKIC8vIEZvciBleGFtcGxlLCBpZiBGb28oKSBjYWxscyBCYXIoKSwgd2hpY2ggaW4gdHVy
biBjYWxscwogLy8gR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCguLi4sIDEpLCBGb28o
KSB3aWxsIGJlIGluY2x1ZGVkIGluCiAvLyB0aGUgdHJhY2UgYnV0IEJhcigpIGFuZCBHZXRDdXJy
ZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKCkgd29uJ3QuCi1HVEVTVF9BUElfIFN0cmluZyBHZXRD
dXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKFVuaXRUZXN0KiB1bml0X3Rlc3QsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBza2lwX2NvdW50
KTsKK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRv
cCgKKyAgICBVbml0VGVzdCogdW5pdF90ZXN0LCBpbnQgc2tpcF9jb3VudCk7CiAKIC8vIEhlbHBl
cnMgZm9yIHN1cHByZXNzaW5nIHdhcm5pbmdzIG9uIHVucmVhY2hhYmxlIGNvZGUgb3IgY29uc3Rh
bnQKIC8vIGNvbmRpdGlvbi4KQEAgLTc2Miw2ICs3MzUsMTUgQEAgR1RFU1RfQVBJXyBib29sIEFs
d2F5c1RydWUoKTsKIC8vIEFsd2F5cyByZXR1cm5zIGZhbHNlLgogaW5saW5lIGJvb2wgQWx3YXlz
RmFsc2UoKSB7IHJldHVybiAhQWx3YXlzVHJ1ZSgpOyB9CiAKKy8vIEhlbHBlciBmb3Igc3VwcHJl
c3NpbmcgZmFsc2Ugd2FybmluZyBmcm9tIENsYW5nIG9uIGEgY29uc3QgY2hhcioKKy8vIHZhcmlh
YmxlIGRlY2xhcmVkIGluIGEgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBhbHdheXMgYmVpbmcgTlVM
TCBpbgorLy8gdGhlIGVsc2UgYnJhbmNoLgorc3RydWN0IEdURVNUX0FQSV8gQ29uc3RDaGFyUHRy
IHsKKyAgQ29uc3RDaGFyUHRyKGNvbnN0IGNoYXIqIHN0cikgOiB2YWx1ZShzdHIpIHt9CisgIG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgIGNvbnN0IGNoYXIqIHZhbHVl
OworfTsKKwogLy8gQSBzaW1wbGUgTGluZWFyIENvbmdydWVudGlhbCBHZW5lcmF0b3IgZm9yIGdl
bmVyYXRpbmcgcmFuZG9tCiAvLyBudW1iZXJzIHdpdGggYSB1bmlmb3JtIGRpc3RyaWJ1dGlvbi4g
IFVubGlrZSByYW5kKCkgYW5kIHNyYW5kKCksIGl0CiAvLyBkb2Vzbid0IHVzZSBnbG9iYWwgc3Rh
dGUgKGFuZCB0aGVyZWZvcmUgY2FuJ3QgaW50ZXJmZXJlIHdpdGggdXNlcgpAQCAtNzg0LDEzICs3
NjYsMzQ2IEBAIGNsYXNzIEdURVNUX0FQSV8gUmFuZG9tIHsKICAgR1RFU1RfRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOXyhSYW5kb20pOwogfTsKIAorLy8gRGVmaW5pbmcgYSB2YXJpYWJsZSBvZiB0
eXBlIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBUMj4gd2lsbCBjYXVzZSBhCisvLyBjb21w
aWxlciBlcnJvciBpZmYgVDEgYW5kIFQyIGFyZSBkaWZmZXJlbnQgdHlwZXMuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorc3RydWN0IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFs
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBDb21waWxlQXNzZXJ0VHlwZXNFcXVh
bDxULCBUPiB7Cit9OworCisvLyBSZW1vdmVzIHRoZSByZWZlcmVuY2UgZnJvbSBhIHR5cGUgaWYg
aXQgaXMgYSByZWZlcmVuY2UgdHlwZSwKKy8vIG90aGVyd2lzZSBsZWF2ZXMgaXQgdW5jaGFuZ2Vk
LiAgVGhpcyBpcyB0aGUgc2FtZSBhcworLy8gdHIxOjpyZW1vdmVfcmVmZXJlbmNlLCB3aGljaCBp
cyBub3Qgd2lkZWx5IGF2YWlsYWJsZSB5ZXQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVj
dCBSZW1vdmVSZWZlcmVuY2UgeyB0eXBlZGVmIFQgdHlwZTsgfTsgIC8vIE5PTElOVAordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUmVtb3ZlUmVmZXJlbmNlPFQmPiB7IHR5cGVkZWYgVCB0
eXBlOyB9OyAgLy8gTk9MSU5UCisKKy8vIEEgaGFuZHkgd3JhcHBlciBhcm91bmQgUmVtb3ZlUmVm
ZXJlbmNlIHRoYXQgd29ya3Mgd2hlbiB0aGUgYXJndW1lbnQKKy8vIFQgZGVwZW5kcyBvbiB0ZW1w
bGF0ZSBwYXJhbWV0ZXJzLgorI2RlZmluZSBHVEVTVF9SRU1PVkVfUkVGRVJFTkNFXyhUKSBcCisg
ICAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UmVtb3ZlUmVmZXJlbmNlPFQ+Ojp0eXBl
CisKKy8vIFJlbW92ZXMgY29uc3QgZnJvbSBhIHR5cGUgaWYgaXQgaXMgYSBjb25zdCB0eXBlLCBv
dGhlcndpc2UgbGVhdmVzCisvLyBpdCB1bmNoYW5nZWQuICBUaGlzIGlzIHRoZSBzYW1lIGFzIHRy
MTo6cmVtb3ZlX2NvbnN0LCB3aGljaCBpcyBub3QKKy8vIHdpZGVseSBhdmFpbGFibGUgeWV0Lgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUmVtb3ZlQ29uc3QgeyB0eXBlZGVmIFQgdHlw
ZTsgfTsgIC8vIE5PTElOVAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUmVtb3ZlQ29u
c3Q8Y29uc3QgVD4geyB0eXBlZGVmIFQgdHlwZTsgfTsgIC8vIE5PTElOVAorCisvLyBNU1ZDIDgu
MCwgU3VuIEMrKywgYW5kIElCTSBYTCBDKysgaGF2ZSBhIGJ1ZyB3aGljaCBjYXVzZXMgdGhlIGFi
b3ZlCisvLyBkZWZpbml0aW9uIHRvIGZhaWwgdG8gcmVtb3ZlIHRoZSBjb25zdCBpbiAnY29uc3Qg
aW50WzNdJyBhbmQgJ2NvbnN0CisvLyBjaGFyWzNdWzRdJy4gIFRoZSBmb2xsb3dpbmcgc3BlY2lh
bGl6YXRpb24gd29ya3MgYXJvdW5kIHRoZSBidWcuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6
ZV90IE4+CitzdHJ1Y3QgUmVtb3ZlQ29uc3Q8Y29uc3QgVFtOXT4geworICB0eXBlZGVmIHR5cGVu
YW1lIFJlbW92ZUNvbnN0PFQ+Ojp0eXBlIHR5cGVbTl07Cit9OworCisjaWYgZGVmaW5lZChfTVND
X1ZFUikgJiYgX01TQ19WRVIgPCAxNDAwCisvLyBUaGlzIGlzIHRoZSBvbmx5IHNwZWNpYWxpemF0
aW9uIHRoYXQgYWxsb3dzIFZDKysgNy4xIHRvIHJlbW92ZSBjb25zdCBpbgorLy8gJ2NvbnN0IGlu
dFszXSBhbmQgJ2NvbnN0IGludFszXVs0XScuICBIb3dldmVyLCBpdCBjYXVzZXMgdHJvdWJsZSB3
aXRoIEdDQworLy8gYW5kIHRodXMgbmVlZHMgdG8gYmUgY29uZGl0aW9uYWxseSBjb21waWxlZC4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KK3N0cnVjdCBSZW1vdmVDb25zdDxUW05d
PiB7CisgIHR5cGVkZWYgdHlwZW5hbWUgUmVtb3ZlQ29uc3Q8VD46OnR5cGUgdHlwZVtOXTsKK307
CisjZW5kaWYKKworLy8gQSBoYW5keSB3cmFwcGVyIGFyb3VuZCBSZW1vdmVDb25zdCB0aGF0IHdv
cmtzIHdoZW4gdGhlIGFyZ3VtZW50CisvLyBUIGRlcGVuZHMgb24gdGVtcGxhdGUgcGFyYW1ldGVy
cy4KKyNkZWZpbmUgR1RFU1RfUkVNT1ZFX0NPTlNUXyhUKSBcCisgICAgdHlwZW5hbWUgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6UmVtb3ZlQ29uc3Q8VD46OnR5cGUKKworLy8gVHVybnMgY29uc3QgVSYs
IFUmLCBjb25zdCBVLCBhbmQgVSBhbGwgaW50byBVLgorI2RlZmluZSBHVEVTVF9SRU1PVkVfUkVG
RVJFTkNFX0FORF9DT05TVF8oVCkgXAorICAgIEdURVNUX1JFTU9WRV9DT05TVF8oR1RFU1RfUkVN
T1ZFX1JFRkVSRU5DRV8oVCkpCisKKy8vIEFkZHMgcmVmZXJlbmNlIHRvIGEgdHlwZSBpZiBpdCBp
cyBub3QgYSByZWZlcmVuY2UgdHlwZSwKKy8vIG90aGVyd2lzZSBsZWF2ZXMgaXQgdW5jaGFuZ2Vk
LiAgVGhpcyBpcyB0aGUgc2FtZSBhcworLy8gdHIxOjphZGRfcmVmZXJlbmNlLCB3aGljaCBpcyBu
b3Qgd2lkZWx5IGF2YWlsYWJsZSB5ZXQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBB
ZGRSZWZlcmVuY2UgeyB0eXBlZGVmIFQmIHR5cGU7IH07ICAvLyBOT0xJTlQKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorc3RydWN0IEFkZFJlZmVyZW5jZTxUJj4geyB0eXBlZGVmIFQmIHR5cGU7IH07
ICAvLyBOT0xJTlQKKworLy8gQSBoYW5keSB3cmFwcGVyIGFyb3VuZCBBZGRSZWZlcmVuY2UgdGhh
dCB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudCBUCisvLyBkZXBlbmRzIG9uIHRlbXBsYXRlIHBhcmFt
ZXRlcnMuCisjZGVmaW5lIEdURVNUX0FERF9SRUZFUkVOQ0VfKFQpIFwKKyAgICB0eXBlbmFtZSA6
OnRlc3Rpbmc6OmludGVybmFsOjpBZGRSZWZlcmVuY2U8VD46OnR5cGUKKworLy8gQWRkcyBhIHJl
ZmVyZW5jZSB0byBjb25zdCBvbiB0b3Agb2YgVCBhcyBuZWNlc3NhcnkuICBGb3IgZXhhbXBsZSwK
Ky8vIGl0IHRyYW5zZm9ybXMKKy8vCisvLyAgIGNoYXIgICAgICAgICA9PT4gY29uc3QgY2hhciYK
Ky8vICAgY29uc3QgY2hhciAgID09PiBjb25zdCBjaGFyJgorLy8gICBjaGFyJiAgICAgICAgPT0+
IGNvbnN0IGNoYXImCisvLyAgIGNvbnN0IGNoYXImICA9PT4gY29uc3QgY2hhciYKKy8vCisvLyBU
aGUgYXJndW1lbnQgVCBtdXN0IGRlcGVuZCBvbiBzb21lIHRlbXBsYXRlIHBhcmFtZXRlcnMuCisj
ZGVmaW5lIEdURVNUX1JFRkVSRU5DRV9UT19DT05TVF8oVCkgXAorICAgIEdURVNUX0FERF9SRUZF
UkVOQ0VfKGNvbnN0IEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfKFQpKQorCisvLyBJbXBsaWNpdGx5
Q29udmVydGlibGU8RnJvbSwgVG8+Ojp2YWx1ZSBpcyBhIGNvbXBpbGUtdGltZSBib29sCisvLyBj
b25zdGFudCB0aGF0J3MgdHJ1ZSBpZmYgdHlwZSBGcm9tIGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZl
cnRlZCB0bworLy8gdHlwZSBUby4KK3RlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBU
bz4KK2NsYXNzIEltcGxpY2l0bHlDb252ZXJ0aWJsZSB7CisgcHJpdmF0ZToKKyAgLy8gV2UgbmVl
ZCB0aGUgZm9sbG93aW5nIGhlbHBlciBmdW5jdGlvbnMgb25seSBmb3IgdGhlaXIgdHlwZXMuCisg
IC8vIFRoZXkgaGF2ZSBubyBpbXBsZW1lbnRhdGlvbnMuCisKKyAgLy8gTWFrZUZyb20oKSBpcyBh
biBleHByZXNzaW9uIHdob3NlIHR5cGUgaXMgRnJvbS4gIFdlIGNhbm5vdCBzaW1wbHkKKyAgLy8g
dXNlIEZyb20oKSwgYXMgdGhlIHR5cGUgRnJvbSBtYXkgbm90IGhhdmUgYSBwdWJsaWMgZGVmYXVs
dAorICAvLyBjb25zdHJ1Y3Rvci4KKyAgc3RhdGljIHR5cGVuYW1lIEFkZFJlZmVyZW5jZTxGcm9t
Pjo6dHlwZSBNYWtlRnJvbSgpOworCisgIC8vIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIG92ZXJs
b2FkZWQuICBHaXZlbiBhbiBleHByZXNzaW9uCisgIC8vIEhlbHBlcih4KSwgdGhlIGNvbXBpbGVy
IHdpbGwgcGljayB0aGUgZmlyc3QgdmVyc2lvbiBpZiB4IGNhbiBiZQorICAvLyBpbXBsaWNpdGx5
IGNvbnZlcnRlZCB0byB0eXBlIFRvOyBvdGhlcndpc2UgaXQgd2lsbCBwaWNrIHRoZQorICAvLyBz
ZWNvbmQgdmVyc2lvbi4KKyAgLy8KKyAgLy8gVGhlIGZpcnN0IHZlcnNpb24gcmV0dXJucyBhIHZh
bHVlIG9mIHNpemUgMSwgYW5kIHRoZSBzZWNvbmQKKyAgLy8gdmVyc2lvbiByZXR1cm5zIGEgdmFs
dWUgb2Ygc2l6ZSAyLiAgVGhlcmVmb3JlLCBieSBjaGVja2luZyB0aGUKKyAgLy8gc2l6ZSBvZiBI
ZWxwZXIoeCksIHdoaWNoIGNhbiBiZSBkb25lIGF0IGNvbXBpbGUgdGltZSwgd2UgY2FuIHRlbGwK
KyAgLy8gd2hpY2ggdmVyc2lvbiBvZiBIZWxwZXIoKSBpcyB1c2VkLCBhbmQgaGVuY2Ugd2hldGhl
ciB4IGNhbiBiZQorICAvLyBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0eXBlIFRvLgorICBzdGF0
aWMgY2hhciBIZWxwZXIoVG8pOworICBzdGF0aWMgY2hhciAoJkhlbHBlciguLi4pKVsyXTsgIC8v
IE5PTElOVAorCisgIC8vIFdlIGhhdmUgdG8gcHV0IHRoZSAncHVibGljJyBzZWN0aW9uIGFmdGVy
IHRoZSAncHJpdmF0ZScgc2VjdGlvbiwKKyAgLy8gb3IgTVNWQyByZWZ1c2VzIHRvIGNvbXBpbGUg
dGhlIGNvZGUuCisgcHVibGljOgorI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKQorICAvLyBDKytC
dWlsZGVyIGNhbm5vdCB1c2UgbWVtYmVyIG92ZXJsb2FkIHJlc29sdXRpb24gZHVyaW5nIHRlbXBs
YXRlCisgIC8vIGluc3RhbnRpYXRpb24uICBUaGUgc2ltcGxlc3Qgd29ya2Fyb3VuZCBpcyB0byB1
c2UgaXRzIEMrKzB4IHR5cGUgdHJhaXRzCisgIC8vIGZ1bmN0aW9ucyAoQysrQnVpbGRlciAyMDA5
IGFuZCBhYm92ZSBvbmx5KS4KKyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBfX2lzX2NvbnZl
cnRpYmxlKEZyb20sIFRvKTsKKyNlbHNlCisgIC8vIE1TVkMgd2FybnMgYWJvdXQgaW1wbGljaXRs
eSBjb252ZXJ0aW5nIGZyb20gZG91YmxlIHRvIGludCBmb3IKKyAgLy8gcG9zc2libGUgbG9zcyBv
ZiBkYXRhLCBzbyB3ZSBuZWVkIHRvIHRlbXBvcmFyaWx5IGRpc2FibGUgdGhlCisgIC8vIHdhcm5p
bmcuCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQyNDQpCisgIHN0YXRpYyBj
b25zdCBib29sIHZhbHVlID0KKyAgICAgIHNpemVvZihIZWxwZXIoSW1wbGljaXRseUNvbnZlcnRp
YmxlOjpNYWtlRnJvbSgpKSkgPT0gMTsKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9Q
XygpCisjZW5kaWYgIC8vIF9fQk9STEFORENfXworfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBGcm9t
LCB0eXBlbmFtZSBUbz4KK2NvbnN0IGJvb2wgSW1wbGljaXRseUNvbnZlcnRpYmxlPEZyb20sIFRv
Pjo6dmFsdWU7CisKKy8vIElzQVByb3RvY29sTWVzc2FnZTxUPjo6dmFsdWUgaXMgYSBjb21waWxl
LXRpbWUgYm9vbCBjb25zdGFudCB0aGF0J3MKKy8vIHRydWUgaWZmIFQgaXMgdHlwZSBQcm90b2Nv
bE1lc3NhZ2UsIHByb3RvMjo6TWVzc2FnZSwgb3IgYSBzdWJjbGFzcworLy8gb2YgdGhvc2UuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBJc0FQcm90b2NvbE1lc3NhZ2UKKyAgICA6IHB1
YmxpYyBib29sX2NvbnN0YW50PAorICBJbXBsaWNpdGx5Q29udmVydGlibGU8Y29uc3QgVCosIGNv
bnN0IDo6UHJvdG9jb2xNZXNzYWdlKj46OnZhbHVlIHx8CisgIEltcGxpY2l0bHlDb252ZXJ0aWJs
ZTxjb25zdCBUKiwgY29uc3QgOjpwcm90bzI6Ok1lc3NhZ2UqPjo6dmFsdWU+IHsKK307CisKKy8v
IFdoZW4gdGhlIGNvbXBpbGVyIHNlZXMgZXhwcmVzc2lvbiBJc0NvbnRhaW5lclRlc3Q8Qz4oMCks
IGlmIEMgaXMgYW4KKy8vIFNUTC1zdHlsZSBjb250YWluZXIgY2xhc3MsIHRoZSBmaXJzdCBvdmVy
bG9hZCBvZiBJc0NvbnRhaW5lclRlc3QKKy8vIHdpbGwgYmUgdmlhYmxlIChzaW5jZSBib3RoIEM6
Oml0ZXJhdG9yKiBhbmQgQzo6Y29uc3RfaXRlcmF0b3IqIGFyZQorLy8gdmFsaWQgdHlwZXMgYW5k
IE5VTEwgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIHRoZW0pLiAgSXQgd2lsbAorLy8g
YmUgcGlja2VkIG92ZXIgdGhlIHNlY29uZCBvdmVybG9hZCBhcyAnaW50JyBpcyBhIHBlcmZlY3Qg
bWF0Y2ggZm9yCisvLyB0aGUgdHlwZSBvZiBhcmd1bWVudCAwLiAgSWYgQzo6aXRlcmF0b3Igb3Ig
Qzo6Y29uc3RfaXRlcmF0b3IgaXMgbm90CisvLyBhIHZhbGlkIHR5cGUsIHRoZSBmaXJzdCBvdmVy
bG9hZCBpcyBub3QgdmlhYmxlLCBhbmQgdGhlIHNlY29uZAorLy8gb3ZlcmxvYWQgd2lsbCBiZSBw
aWNrZWQuICBUaGVyZWZvcmUsIHdlIGNhbiBkZXRlcm1pbmUgd2hldGhlciBDIGlzCisvLyBhIGNv
bnRhaW5lciBjbGFzcyBieSBjaGVja2luZyB0aGUgdHlwZSBvZiBJc0NvbnRhaW5lclRlc3Q8Qz4o
MCkuCisvLyBUaGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaXMgaW5zaWduaWZpY2FudC4KKy8v
CisvLyBOb3RlIHRoYXQgd2UgbG9vayBmb3IgYm90aCBDOjppdGVyYXRvciBhbmQgQzo6Y29uc3Rf
aXRlcmF0b3IuICBUaGUKKy8vIHJlYXNvbiBpcyB0aGF0IEMrKyBpbmplY3RzIHRoZSBuYW1lIG9m
IGEgY2xhc3MgYXMgYSBtZW1iZXIgb2YgdGhlCisvLyBjbGFzcyBpdHNlbGYgKGUuZy4geW91IGNh
biByZWZlciB0byBjbGFzcyBpdGVyYXRvciBhcyBlaXRoZXIKKy8vICdpdGVyYXRvcicgb3IgJ2l0
ZXJhdG9yOjppdGVyYXRvcicpLiAgSWYgd2UgbG9vayBmb3IgQzo6aXRlcmF0b3IKKy8vIG9ubHks
IGZvciBleGFtcGxlLCB3ZSB3b3VsZCBtaXN0YWtlbmx5IHRoaW5rIHRoYXQgYSBjbGFzcyBuYW1l
ZAorLy8gaXRlcmF0b3IgaXMgYW4gU1RMIGNvbnRhaW5lci4KKy8vCisvLyBBbHNvIG5vdGUgdGhh
dCB0aGUgc2ltcGxlciBhcHByb2FjaCBvZiBvdmVybG9hZGluZworLy8gSXNDb250YWluZXJUZXN0
KHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yKikgYW5kCisvLyBJc0NvbnRhaW5lclRlc3QoLi4u
KSBkb2Vzbid0IHdvcmsgd2l0aCBWaXN1YWwgQWdlIEMrKyBhbmQgU3VuIEMrKy4KK3R5cGVkZWYg
aW50IElzQ29udGFpbmVyOwordGVtcGxhdGUgPGNsYXNzIEM+CitJc0NvbnRhaW5lciBJc0NvbnRh
aW5lclRlc3QoaW50IC8qIGR1bW15ICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVuYW1lIEM6Oml0ZXJhdG9yKiAvKiBpdCAqLyA9IE5VTEwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZW5hbWUgQzo6Y29uc3RfaXRlcmF0b3IqIC8qIGNvbnN0X2l0ICovID0gTlVM
TCkgeworICByZXR1cm4gMDsKK30KKwordHlwZWRlZiBjaGFyIElzTm90Q29udGFpbmVyOwordGVt
cGxhdGUgPGNsYXNzIEM+CitJc05vdENvbnRhaW5lciBJc0NvbnRhaW5lclRlc3QobG9uZyAvKiBk
dW1teSAqLykgeyByZXR1cm4gJ1wwJzsgfQorCisvLyBFbmFibGVJZjxjb25kaXRpb24+Ojp0eXBl
IGlzIHZvaWQgd2hlbiAnQ29uZCcgaXMgdHJ1ZSwgYW5kCisvLyB1bmRlZmluZWQgd2hlbiAnQ29u
ZCcgaXMgZmFsc2UuICBUbyB1c2UgU0ZJTkFFIHRvIG1ha2UgYSBmdW5jdGlvbgorLy8gb3Zlcmxv
YWQgb25seSBhcHBseSB3aGVuIGEgcGFydGljdWxhciBleHByZXNzaW9uIGlzIHRydWUsIGFkZAor
Ly8gInR5cGVuYW1lIEVuYWJsZUlmPGV4cHJlc3Npb24+Ojp0eXBlKiA9IDAiIGFzIHRoZSBsYXN0
IHBhcmFtZXRlci4KK3RlbXBsYXRlPGJvb2w+IHN0cnVjdCBFbmFibGVJZjsKK3RlbXBsYXRlPD4g
c3RydWN0IEVuYWJsZUlmPHRydWU+IHsgdHlwZWRlZiB2b2lkIHR5cGU7IH07ICAvLyBOT0xJTlQK
KworLy8gVXRpbGl0aWVzIGZvciBuYXRpdmUgYXJyYXlzLgorCisvLyBBcnJheUVxKCkgY29tcGFy
ZXMgdHdvIGstZGltZW5zaW9uYWwgbmF0aXZlIGFycmF5cyB1c2luZyB0aGUKKy8vIGVsZW1lbnRz
JyBvcGVyYXRvcj09LCB3aGVyZSBrIGNhbiBiZSBhbnkgaW50ZWdlciA+PSAwLiAgV2hlbiBrIGlz
CisvLyAwLCBBcnJheUVxKCkgZGVnZW5lcmF0ZXMgaW50byBjb21wYXJpbmcgYSBzaW5nbGUgcGFp
ciBvZiB2YWx1ZXMuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorYm9vbCBB
cnJheUVxKGNvbnN0IFQqIGxocywgc2l6ZV90IHNpemUsIGNvbnN0IFUqIHJocyk7CisKKy8vIFRo
aXMgZ2VuZXJpYyB2ZXJzaW9uIGlzIHVzZWQgd2hlbiBrIGlzIDAuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4KK2lubGluZSBib29sIEFycmF5RXEoY29uc3QgVCYgbGhzLCBjb25z
dCBVJiByaHMpIHsgcmV0dXJuIGxocyA9PSByaHM7IH0KKworLy8gVGhpcyBvdmVybG9hZCBpcyB1
c2VkIHdoZW4gayA+PSAxLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVf
dCBOPgoraW5saW5lIGJvb2wgQXJyYXlFcShjb25zdCBUKCZsaHMpW05dLCBjb25zdCBVKCZyaHMp
W05dKSB7CisgIHJldHVybiBpbnRlcm5hbDo6QXJyYXlFcShsaHMsIE4sIHJocyk7Cit9CisKKy8v
IFRoaXMgaGVscGVyIHJlZHVjZXMgY29kZSBibG9hdC4gIElmIHdlIGluc3RlYWQgcHV0IGl0cyBs
b2dpYyBpbnNpZGUKKy8vIHRoZSBwcmV2aW91cyBBcnJheUVxKCkgZnVuY3Rpb24sIGFycmF5cyB3
aXRoIGRpZmZlcmVudCBzaXplcyB3b3VsZAorLy8gbGVhZCB0byBkaWZmZXJlbnQgY29waWVzIG9m
IHRoZSB0ZW1wbGF0ZSBjb2RlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Citi
b29sIEFycmF5RXEoY29uc3QgVCogbGhzLCBzaXplX3Qgc2l6ZSwgY29uc3QgVSogcmhzKSB7Cisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHNpemU7IGkrKykgeworICAgIGlmICghaW50ZXJuYWw6
OkFycmF5RXEobGhzW2ldLCByaHNbaV0pKQorICAgICAgcmV0dXJuIGZhbHNlOworICB9CisgIHJl
dHVybiB0cnVlOworfQorCisvLyBGaW5kcyB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgaXRlcmF0
b3IgcmFuZ2UgW2JlZ2luLCBlbmQpIHRoYXQKKy8vIGVxdWFscyBlbGVtLiAgRWxlbWVudCBtYXkg
YmUgYSBuYXRpdmUgYXJyYXkgdHlwZSBpdHNlbGYuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlciwg
dHlwZW5hbWUgRWxlbWVudD4KK0l0ZXIgQXJyYXlBd2FyZUZpbmQoSXRlciBiZWdpbiwgSXRlciBl
bmQsIGNvbnN0IEVsZW1lbnQmIGVsZW0pIHsKKyAgZm9yIChJdGVyIGl0ID0gYmVnaW47IGl0ICE9
IGVuZDsgKytpdCkgeworICAgIGlmIChpbnRlcm5hbDo6QXJyYXlFcSgqaXQsIGVsZW0pKQorICAg
ICAgcmV0dXJuIGl0OworICB9CisgIHJldHVybiBlbmQ7Cit9CisKKy8vIENvcHlBcnJheSgpIGNv
cGllcyBhIGstZGltZW5zaW9uYWwgbmF0aXZlIGFycmF5IHVzaW5nIHRoZSBlbGVtZW50cycKKy8v
IG9wZXJhdG9yPSwgd2hlcmUgayBjYW4gYmUgYW55IGludGVnZXIgPj0gMC4gIFdoZW4gayBpcyAw
LAorLy8gQ29weUFycmF5KCkgZGVnZW5lcmF0ZXMgaW50byBjb3B5aW5nIGEgc2luZ2xlIHZhbHVl
LgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3ZvaWQgQ29weUFycmF5KGNv
bnN0IFQqIGZyb20sIHNpemVfdCBzaXplLCBVKiB0byk7CisKKy8vIFRoaXMgZ2VuZXJpYyB2ZXJz
aW9uIGlzIHVzZWQgd2hlbiBrIGlzIDAuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4KK2lubGluZSB2b2lkIENvcHlBcnJheShjb25zdCBUJiBmcm9tLCBVKiB0bykgeyAqdG8gPSBm
cm9tOyB9CisKKy8vIFRoaXMgb3ZlcmxvYWQgaXMgdXNlZCB3aGVuIGsgPj0gMS4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgTj4KK2lubGluZSB2b2lkIENvcHlBcnJh
eShjb25zdCBUKCZmcm9tKVtOXSwgVSgqdG8pW05dKSB7CisgIGludGVybmFsOjpDb3B5QXJyYXko
ZnJvbSwgTiwgKnRvKTsKK30KKworLy8gVGhpcyBoZWxwZXIgcmVkdWNlcyBjb2RlIGJsb2F0LiAg
SWYgd2UgaW5zdGVhZCBwdXQgaXRzIGxvZ2ljIGluc2lkZQorLy8gdGhlIHByZXZpb3VzIENvcHlB
cnJheSgpIGZ1bmN0aW9uLCBhcnJheXMgd2l0aCBkaWZmZXJlbnQgc2l6ZXMKKy8vIHdvdWxkIGxl
YWQgdG8gZGlmZmVyZW50IGNvcGllcyBvZiB0aGUgdGVtcGxhdGUgY29kZS4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgordm9pZCBDb3B5QXJyYXkoY29uc3QgVCogZnJvbSwgc2l6
ZV90IHNpemUsIFUqIHRvKSB7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHNpemU7IGkrKykg
eworICAgIGludGVybmFsOjpDb3B5QXJyYXkoZnJvbVtpXSwgdG8gKyBpKTsKKyAgfQorfQorCisv
LyBUaGUgcmVsYXRpb24gYmV0d2VlbiBhbiBOYXRpdmVBcnJheSBvYmplY3QgKHNlZSBiZWxvdykg
YW5kIHRoZQorLy8gbmF0aXZlIGFycmF5IGl0IHJlcHJlc2VudHMuCisvLyBXZSB1c2UgMiBkaWZm
ZXJlbnQgc3RydWN0cyB0byBhbGxvdyBub24tY29weWFibGUgdHlwZXMgdG8gYmUgdXNlZCwgYXMg
bG9uZworLy8gYXMgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgpIGlzIHBhc3NlZC4KK3N0cnVj
dCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlIHt9Oworc3RydWN0IFJlbGF0aW9uVG9Tb3VyY2VD
b3B5IHt9OworCisvLyBBZGFwdHMgYSBuYXRpdmUgYXJyYXkgdG8gYSByZWFkLW9ubHkgU1RMLXN0
eWxlIGNvbnRhaW5lci4gIEluc3RlYWQKKy8vIG9mIHRoZSBjb21wbGV0ZSBTVEwgY29udGFpbmVy
IGNvbmNlcHQsIHRoaXMgYWRhcHRvciBvbmx5IGltcGxlbWVudHMKKy8vIG1lbWJlcnMgdXNlZnVs
IGZvciBHb29nbGUgTW9jaydzIGNvbnRhaW5lciBtYXRjaGVycy4gIE5ldyBtZW1iZXJzCisvLyBz
aG91bGQgYmUgYWRkZWQgYXMgbmVlZGVkLiAgVG8gc2ltcGxpZnkgdGhlIGltcGxlbWVudGF0aW9u
LCB3ZSBvbmx5CisvLyBzdXBwb3J0IEVsZW1lbnQgYmVpbmcgYSByYXcgdHlwZSAoaS5lLiBoYXZp
bmcgbm8gdG9wLWxldmVsIGNvbnN0IG9yCisvLyByZWZlcmVuY2UgbW9kaWZpZXIpLiAgSXQncyB0
aGUgY2xpZW50J3MgcmVzcG9uc2liaWxpdHkgdG8gc2F0aXNmeQorLy8gdGhpcyByZXF1aXJlbWVu
dC4gIEVsZW1lbnQgY2FuIGJlIGFuIGFycmF5IHR5cGUgaXRzZWxmIChoZW5jZQorLy8gbXVsdGkt
ZGltZW5zaW9uYWwgYXJyYXlzIGFyZSBzdXBwb3J0ZWQpLgordGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnQ+CitjbGFzcyBOYXRpdmVBcnJheSB7CisgcHVibGljOgorICAvLyBTVEwtc3R5bGUgY29u
dGFpbmVyIHR5cGVkZWZzLgorICB0eXBlZGVmIEVsZW1lbnQgdmFsdWVfdHlwZTsKKyAgdHlwZWRl
ZiBFbGVtZW50KiBpdGVyYXRvcjsKKyAgdHlwZWRlZiBjb25zdCBFbGVtZW50KiBjb25zdF9pdGVy
YXRvcjsKKworICAvLyBDb25zdHJ1Y3RzIGZyb20gYSBuYXRpdmUgYXJyYXkuIFJlZmVyZW5jZXMg
dGhlIHNvdXJjZS4KKyAgTmF0aXZlQXJyYXkoY29uc3QgRWxlbWVudCogYXJyYXksIHNpemVfdCBj
b3VudCwgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSkgeworICAgIEluaXRSZWYoYXJyYXksIGNv
dW50KTsKKyAgfQorCisgIC8vIENvbnN0cnVjdHMgZnJvbSBhIG5hdGl2ZSBhcnJheS4gQ29waWVz
IHRoZSBzb3VyY2UuCisgIE5hdGl2ZUFycmF5KGNvbnN0IEVsZW1lbnQqIGFycmF5LCBzaXplX3Qg
Y291bnQsIFJlbGF0aW9uVG9Tb3VyY2VDb3B5KSB7CisgICAgSW5pdENvcHkoYXJyYXksIGNvdW50
KTsKKyAgfQorCisgIC8vIENvcHkgY29uc3RydWN0b3IuCisgIE5hdGl2ZUFycmF5KGNvbnN0IE5h
dGl2ZUFycmF5JiByaHMpIHsKKyAgICAodGhpcy0+KnJocy5jbG9uZV8pKHJocy5hcnJheV8sIHJo
cy5zaXplXyk7CisgIH0KKworICB+TmF0aXZlQXJyYXkoKSB7CisgICAgaWYgKGNsb25lXyAhPSAm
TmF0aXZlQXJyYXk6OkluaXRSZWYpCisgICAgICBkZWxldGVbXSBhcnJheV87CisgIH0KKworICAv
LyBTVEwtc3R5bGUgY29udGFpbmVyIG1ldGhvZHMuCisgIHNpemVfdCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gc2l6ZV87IH0KKyAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBh
cnJheV87IH0KKyAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gYXJyYXlfICsg
c2l6ZV87IH0KKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5hdGl2ZUFycmF5JiByaHMpIGNvbnN0
IHsKKyAgICByZXR1cm4gc2l6ZSgpID09IHJocy5zaXplKCkgJiYKKyAgICAgICAgQXJyYXlFcShi
ZWdpbigpLCBzaXplKCksIHJocy5iZWdpbigpKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgZW51bSB7
CisgICAga0NoZWNrVHlwZUlzTm90Q29uc3RPckFSZWZlcmVuY2UgPSBTdGF0aWNBc3NlcnRUeXBl
RXFIZWxwZXI8CisgICAgICAgIEVsZW1lbnQsIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NP
TlNUXyhFbGVtZW50KT46OnZhbHVlLAorICB9OworCisgIC8vIEluaXRpYWxpemVzIHRoaXMgb2Jq
ZWN0IHdpdGggYSBjb3B5IG9mIHRoZSBpbnB1dC4KKyAgdm9pZCBJbml0Q29weShjb25zdCBFbGVt
ZW50KiBhcnJheSwgc2l6ZV90IGFfc2l6ZSkgeworICAgIEVsZW1lbnQqIGNvbnN0IGNvcHkgPSBu
ZXcgRWxlbWVudFthX3NpemVdOworICAgIENvcHlBcnJheShhcnJheSwgYV9zaXplLCBjb3B5KTsK
KyAgICBhcnJheV8gPSBjb3B5OworICAgIHNpemVfID0gYV9zaXplOworICAgIGNsb25lXyA9ICZO
YXRpdmVBcnJheTo6SW5pdENvcHk7CisgIH0KKworICAvLyBJbml0aWFsaXplcyB0aGlzIG9iamVj
dCB3aXRoIGEgcmVmZXJlbmNlIG9mIHRoZSBpbnB1dC4KKyAgdm9pZCBJbml0UmVmKGNvbnN0IEVs
ZW1lbnQqIGFycmF5LCBzaXplX3QgYV9zaXplKSB7CisgICAgYXJyYXlfID0gYXJyYXk7CisgICAg
c2l6ZV8gPSBhX3NpemU7CisgICAgY2xvbmVfID0gJk5hdGl2ZUFycmF5OjpJbml0UmVmOworICB9
CisKKyAgY29uc3QgRWxlbWVudCogYXJyYXlfOworICBzaXplX3Qgc2l6ZV87CisgIHZvaWQgKE5h
dGl2ZUFycmF5OjoqY2xvbmVfKShjb25zdCBFbGVtZW50Kiwgc2l6ZV90KTsKKworICBHVEVTVF9E
SVNBTExPV19BU1NJR05fKE5hdGl2ZUFycmF5KTsKK307CisKIH0gIC8vIG5hbWVzcGFjZSBpbnRl
cm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotI2RlZmluZSBHVEVTVF9NRVNTQUdFXyht
ZXNzYWdlLCByZXN1bHRfdHlwZSkgXAotICA6OnRlc3Rpbmc6OmludGVybmFsOjpBc3NlcnRIZWxw
ZXIocmVzdWx0X3R5cGUsIF9fRklMRV9fLCBfX0xJTkVfXywgbWVzc2FnZSkgXAorI2RlZmluZSBH
VEVTVF9NRVNTQUdFX0FUXyhmaWxlLCBsaW5lLCBtZXNzYWdlLCByZXN1bHRfdHlwZSkgXAorICA6
OnRlc3Rpbmc6OmludGVybmFsOjpBc3NlcnRIZWxwZXIocmVzdWx0X3R5cGUsIGZpbGUsIGxpbmUs
IG1lc3NhZ2UpIFwKICAgICA9IDo6dGVzdGluZzo6TWVzc2FnZSgpCiAKKyNkZWZpbmUgR1RFU1Rf
TUVTU0FHRV8obWVzc2FnZSwgcmVzdWx0X3R5cGUpIFwKKyAgR1RFU1RfTUVTU0FHRV9BVF8oX19G
SUxFX18sIF9fTElORV9fLCBtZXNzYWdlLCByZXN1bHRfdHlwZSkKKwogI2RlZmluZSBHVEVTVF9G
QVRBTF9GQUlMVVJFXyhtZXNzYWdlKSBcCiAgIHJldHVybiBHVEVTVF9NRVNTQUdFXyhtZXNzYWdl
LCA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlKQogCkBAIC04MDgsNyAr
MTEyMyw3IEBAIGNsYXNzIEdURVNUX0FQSV8gUmFuZG9tIHsKIAogI2RlZmluZSBHVEVTVF9URVNU
X1RIUk9XXyhzdGF0ZW1lbnQsIGV4cGVjdGVkX2V4Y2VwdGlvbiwgZmFpbCkgXAogICBHVEVTVF9B
TUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0gIGlmIChjb25zdCBjaGFyKiBndGVzdF9tc2cgPSAi
IikgeyBcCisgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpDb25zdENoYXJQdHIgZ3Rlc3RfbXNn
ID0gIiIpIHsgXAogICAgIGJvb2wgZ3Rlc3RfY2F1Z2h0X2V4cGVjdGVkID0gZmFsc2U7IFwKICAg
ICB0cnkgeyBcCiAgICAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdf
QkVMT1dfKHN0YXRlbWVudCk7IFwKQEAgLTgxNywzOCArMTEzMiwzOCBAQCBjbGFzcyBHVEVTVF9B
UElfIFJhbmRvbSB7CiAgICAgICBndGVzdF9jYXVnaHRfZXhwZWN0ZWQgPSB0cnVlOyBcCiAgICAg
fSBcCiAgICAgY2F0Y2ggKC4uLikgeyBcCi0gICAgICBndGVzdF9tc2cgPSAiRXhwZWN0ZWQ6ICIg
I3N0YXRlbWVudCAiIHRocm93cyBhbiBleGNlcHRpb24gb2YgdHlwZSAiIFwKLSAgICAgICAgICAg
ICAgICAgICNleHBlY3RlZF9leGNlcHRpb24gIi5cbiAgQWN0dWFsOiBpdCB0aHJvd3MgYSBkaWZm
ZXJlbnQgIiBcCi0gICAgICAgICAgICAgICAgICAidHlwZS4iOyBcCisgICAgICBndGVzdF9tc2cu
dmFsdWUgPSBcCisgICAgICAgICAgIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4g
ZXhjZXB0aW9uIG9mIHR5cGUgIiBcCisgICAgICAgICAgI2V4cGVjdGVkX2V4Y2VwdGlvbiAiLlxu
ICBBY3R1YWw6IGl0IHRocm93cyBhIGRpZmZlcmVudCB0eXBlLiI7IFwKICAgICAgIGdvdG8gR1RF
U1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0dGhyb3dfLCBfX0xJTkVfXyk7IFwKICAg
ICB9IFwKICAgICBpZiAoIWd0ZXN0X2NhdWdodF9leHBlY3RlZCkgeyBcCi0gICAgICBndGVzdF9t
c2cgPSAiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIHRocm93cyBhbiBleGNlcHRpb24gb2YgdHlw
ZSAiIFwKLSAgICAgICAgICAgICAgICAgICNleHBlY3RlZF9leGNlcHRpb24gIi5cbiAgQWN0dWFs
OiBpdCB0aHJvd3Mgbm90aGluZy4iOyBcCisgICAgICBndGVzdF9tc2cudmFsdWUgPSBcCisgICAg
ICAgICAgIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5
cGUgIiBcCisgICAgICAgICAgI2V4cGVjdGVkX2V4Y2VwdGlvbiAiLlxuICBBY3R1YWw6IGl0IHRo
cm93cyBub3RoaW5nLiI7IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9s
YWJlbF90ZXN0dGhyb3dfLCBfX0xJTkVfXyk7IFwKICAgICB9IFwKICAgfSBlbHNlIFwKICAgICBH
VEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3R0aHJvd18sIF9fTElORV9fKTogXAot
ICAgICAgZmFpbChndGVzdF9tc2cpCisgICAgICBmYWlsKGd0ZXN0X21zZy52YWx1ZSkKIAogI2Rl
ZmluZSBHVEVTVF9URVNUX05PX1RIUk9XXyhzdGF0ZW1lbnQsIGZhaWwpIFwKICAgR1RFU1RfQU1C
SUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAotICBpZiAoY29uc3QgY2hhciogZ3Rlc3RfbXNnID0gIiIp
IHsgXAorICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKICAgICB0
cnkgeyBcCiAgICAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVM
T1dfKHN0YXRlbWVudCk7IFwKICAgICB9IFwKICAgICBjYXRjaCAoLi4uKSB7IFwKLSAgICAgIGd0
ZXN0X21zZyA9ICJFeHBlY3RlZDogIiAjc3RhdGVtZW50ICIgZG9lc24ndCB0aHJvdyBhbiBleGNl
cHRpb24uXG4iIFwKLSAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogaXQgdGhyb3dzLiI7IFwK
ICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0bm90aHJvd18s
IF9fTElORV9fKTsgXAogICAgIH0gXAogICB9IGVsc2UgXAogICAgIEdURVNUX0NPTkNBVF9UT0tF
Tl8oZ3Rlc3RfbGFiZWxfdGVzdG5vdGhyb3dfLCBfX0xJTkVfXyk6IFwKLSAgICAgIGZhaWwoZ3Rl
c3RfbXNnKQorICAgICAgZmFpbCgiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgdGhy
b3cgYW4gZXhjZXB0aW9uLlxuIiBcCisgICAgICAgICAgICIgIEFjdHVhbDogaXQgdGhyb3dzLiIp
CiAKICNkZWZpbmUgR1RFU1RfVEVTVF9BTllfVEhST1dfKHN0YXRlbWVudCwgZmFpbCkgXAogICBH
VEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0gIGlmIChjb25zdCBjaGFyKiBndGVzdF9t
c2cgPSAiIikgeyBcCisgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsg
XAogICAgIGJvb2wgZ3Rlc3RfY2F1Z2h0X2FueSA9IGZhbHNlOyBcCiAgICAgdHJ5IHsgXAogICAg
ICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1l
bnQpOyBcCkBAIC04NTcsMTMgKzExNzIsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBSYW5kb20gewog
ICAgICAgZ3Rlc3RfY2F1Z2h0X2FueSA9IHRydWU7IFwKICAgICB9IFwKICAgICBpZiAoIWd0ZXN0
X2NhdWdodF9hbnkpIHsgXAotICAgICAgZ3Rlc3RfbXNnID0gIkV4cGVjdGVkOiAiICNzdGF0ZW1l
bnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuIiBcCi0gICAgICAgICAgICAgICAgICAiICBBY3R1
YWw6IGl0IGRvZXNuJ3QuIjsgXAogICAgICAgZ290byBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0
X2xhYmVsX3Rlc3Rhbnl0aHJvd18sIF9fTElORV9fKTsgXAogICAgIH0gXAogICB9IGVsc2UgXAog
ICAgIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdGFueXRocm93XywgX19MSU5F
X18pOiBcCi0gICAgICBmYWlsKGd0ZXN0X21zZykKKyAgICAgIGZhaWwoIkV4cGVjdGVkOiAiICNz
dGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuIiBcCisgICAgICAgICAgICIgIEFjdHVh
bDogaXQgZG9lc24ndC4iKQogCiAKIC8vIEltcGxlbWVudHMgQm9vbGVhbiB0ZXN0IGFzc2VydGlv
bnMgc3VjaCBhcyBFWFBFQ1RfVFJVRS4gZXhwcmVzc2lvbiBjYW4gYmUKQEAgLTg4MCwxOCArMTE5
NCwxNyBAQCBjbGFzcyBHVEVTVF9BUElfIFJhbmRvbSB7CiAKICNkZWZpbmUgR1RFU1RfVEVTVF9O
T19GQVRBTF9GQUlMVVJFXyhzdGF0ZW1lbnQsIGZhaWwpIFwKICAgR1RFU1RfQU1CSUdVT1VTX0VM
U0VfQkxPQ0tFUl8gXAotICBpZiAoY29uc3QgY2hhciogZ3Rlc3RfbXNnID0gIiIpIHsgXAorICBp
ZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKICAgICA6OnRlc3Rpbmc6
OmludGVybmFsOjpIYXNOZXdGYXRhbEZhaWx1cmVIZWxwZXIgZ3Rlc3RfZmF0YWxfZmFpbHVyZV9j
aGVja2VyOyBcCiAgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JF
TE9XXyhzdGF0ZW1lbnQpOyBcCiAgICAgaWYgKGd0ZXN0X2ZhdGFsX2ZhaWx1cmVfY2hlY2tlci5o
YXNfbmV3X2ZhdGFsX2ZhaWx1cmUoKSkgeyBcCi0gICAgICBndGVzdF9tc2cgPSAiRXhwZWN0ZWQ6
ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgZ2VuZXJhdGUgbmV3IGZhdGFsICIgXAotICAgICAgICAg
ICAgICAgICAgImZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZC5cbiIgXAotICAgICAgICAg
ICAgICAgICAgIiAgQWN0dWFsOiBpdCBkb2VzLiI7IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FU
X1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0bm9mYXRhbF8sIF9fTElORV9fKTsgXAogICAgIH0gXAog
ICB9IGVsc2UgXAogICAgIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdG5vZmF0
YWxfLCBfX0xJTkVfXyk6IFwKLSAgICAgIGZhaWwoZ3Rlc3RfbXNnKQorICAgICAgZmFpbCgiRXhw
ZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgZ2VuZXJhdGUgbmV3IGZhdGFsICIgXAorICAg
ICAgICAgICAiZmFpbHVyZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkLlxuIiBcCisgICAgICAgICAg
ICIgIEFjdHVhbDogaXQgZG9lcy4iKQogCiAvLyBFeHBhbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSBj
bGFzcyB0aGF0IGltcGxlbWVudHMgdGhlIGdpdmVuIHRlc3QuCiAjZGVmaW5lIEdURVNUX1RFU1Rf
Q0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXApAQCAtOTA0LDcgKzEyMTcs
NyBAQCBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25h
bWUpIDogcHVibGljIHBhcmVudF9jbGFzcyB7XAogICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRl
c3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpKCkge31cCiAgcHJpdmF0ZTpcCiAgIHZpcnR1YWwgdm9p
ZCBUZXN0Qm9keSgpO1wKLSAgc3RhdGljIDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3Rf
aW5mb187XAorICBzdGF0aWMgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvXyBH
VEVTVF9BVFRSSUJVVEVfVU5VU0VEXztcCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oXAogICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9u
YW1lKSk7XAogfTtcCkBAIC05MTIsNyArMTIyNSw4IEBAIGNsYXNzIEdURVNUX1RFU1RfQ0xBU1Nf
TkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgOiBwdWJsaWMgcGFyZW50X2NsYXNzIHtc
CiA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3Rf
Y2FzZV9uYW1lLCB0ZXN0X25hbWUpXAogICA6OnRlc3RfaW5mb18gPVwKICAgICA6OnRlc3Rpbmc6
OmludGVybmFsOjpNYWtlQW5kUmVnaXN0ZXJUZXN0SW5mbyhcCi0gICAgICAgICN0ZXN0X2Nhc2Vf
bmFtZSwgI3Rlc3RfbmFtZSwgIiIsICIiLCBcCisgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgI3Rl
c3RfbmFtZSwgTlVMTCwgTlVMTCwgXAorICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpDb2Rl
TG9jYXRpb24oX19GSUxFX18sIF9fTElORV9fKSwgXAogICAgICAgICAocGFyZW50X2lkKSwgXAog
ICAgICAgICBwYXJlbnRfY2xhc3M6OlNldFVwVGVzdENhc2UsIFwKICAgICAgICAgcGFyZW50X2Ns
YXNzOjpUZWFyRG93blRlc3RDYXNlLCBcCkBAIC05MjEsMyArMTIzNSw0IEBAIDo6dGVzdGluZzo6
VGVzdEluZm8qIGNvbnN0IEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSlcCiB2b2lkIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSk6OlRlc3RCb2R5KCkKIAogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lO
VEVSTkFMX0dURVNUX0lOVEVSTkFMX0hfCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRy
LmgKaW5kZXggNTQwZWY0Y2Q0NGU3MmI1NTg2NTcwODFhNWYwN2EwZjI4YjNlNDBlMy4uMzYwMjk0
MjIxNzRmMjE1ODQ4NjgxZGIxMTEwYmNkYjIzNTM4YTEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRyLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC1saW5rZWRfcHRyLmgKQEAgLTcxLDcgKzcxLDcgQEAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNp
bmNsdWRlIDxhc3NlcnQuaD4KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQu
aD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKIG5hbWVzcGFjZSB0
ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CkBAIC0xMDUsMjUgKzEwNSwzNSBAQCBjbGFz
cyBsaW5rZWRfcHRyX2ludGVybmFsIHsKICAgLy8gZnJhbWV3b3JrLgogCiAgIC8vIEpvaW4gYW4g
ZXhpc3RpbmcgY2lyY2xlLgotICAvLyBMIDwgZ19saW5rZWRfcHRyX211dGV4Ci0gIHZvaWQgam9p
bihsaW5rZWRfcHRyX2ludGVybmFsIGNvbnN0KiBwdHIpIHsKKyAgdm9pZCBqb2luKGxpbmtlZF9w
dHJfaW50ZXJuYWwgY29uc3QqIHB0cikKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGdfbGlu
a2VkX3B0cl9tdXRleCkgewogICAgIE11dGV4TG9jayBsb2NrKCZnX2xpbmtlZF9wdHJfbXV0ZXgp
OwogCiAgICAgbGlua2VkX3B0cl9pbnRlcm5hbCBjb25zdCogcCA9IHB0cjsKLSAgICB3aGlsZSAo
cC0+bmV4dF8gIT0gcHRyKSBwID0gcC0+bmV4dF87CisgICAgd2hpbGUgKHAtPm5leHRfICE9IHB0
cikgeworICAgICAgYXNzZXJ0KHAtPm5leHRfICE9IHRoaXMgJiYKKyAgICAgICAgICAgICAiVHJ5
aW5nIHRvIGpvaW4oKSBhIGxpbmtlZCByaW5nIHdlIGFyZSBhbHJlYWR5IGluLiAiCisgICAgICAg
ICAgICAgIklzIEdNb2NrIHRocmVhZCBzYWZldHkgZW5hYmxlZD8iKTsKKyAgICAgIHAgPSBwLT5u
ZXh0XzsKKyAgICB9CiAgICAgcC0+bmV4dF8gPSB0aGlzOwogICAgIG5leHRfID0gcHRyOwogICB9
CiAKICAgLy8gTGVhdmUgd2hhdGV2ZXIgY2lyY2xlIHdlJ3JlIHBhcnQgb2YuICBSZXR1cm5zIHRy
dWUgaWYgd2Ugd2VyZSB0aGUKICAgLy8gbGFzdCBtZW1iZXIgb2YgdGhlIGNpcmNsZS4gIE9uY2Ug
dGhpcyBpcyBkb25lLCB5b3UgY2FuIGpvaW4oKSBhbm90aGVyLgotICAvLyBMIDwgZ19saW5rZWRf
cHRyX211dGV4Ci0gIGJvb2wgZGVwYXJ0KCkgeworICBib29sIGRlcGFydCgpCisgICAgICBHVEVT
VF9MT0NLX0VYQ0xVREVEXyhnX2xpbmtlZF9wdHJfbXV0ZXgpIHsKICAgICBNdXRleExvY2sgbG9j
aygmZ19saW5rZWRfcHRyX211dGV4KTsKIAogICAgIGlmIChuZXh0XyA9PSB0aGlzKSByZXR1cm4g
dHJ1ZTsKICAgICBsaW5rZWRfcHRyX2ludGVybmFsIGNvbnN0KiBwID0gbmV4dF87Ci0gICAgd2hp
bGUgKHAtPm5leHRfICE9IHRoaXMpIHAgPSBwLT5uZXh0XzsKKyAgICB3aGlsZSAocC0+bmV4dF8g
IT0gdGhpcykgeworICAgICAgYXNzZXJ0KHAtPm5leHRfICE9IG5leHRfICYmCisgICAgICAgICAg
ICAgIlRyeWluZyB0byBkZXBhcnQoKSBhIGxpbmtlZCByaW5nIHdlIGFyZSBub3QgaW4uICIKKyAg
ICAgICAgICAgICAiSXMgR01vY2sgdGhyZWFkIHNhZmV0eSBlbmFibGVkPyIpOworICAgICAgcCA9
IHAtPm5leHRfOworICAgIH0KICAgICBwLT5uZXh0XyA9IG5leHRfOwogICAgIHJldHVybiBmYWxz
ZTsKICAgfQpAQCAtMTcyLDE1ICsxODIsNiBAQCBjbGFzcyBsaW5rZWRfcHRyIHsKICAgVCogZ2V0
KCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CiAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiB2YWx1ZV87IH0KICAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKnZhbHVlXzsg
fQotICAvLyBSZWxlYXNlIG93bmVyc2hpcCBvZiB0aGUgcG9pbnRlZCBvYmplY3QgYW5kIHJldHVy
bnMgaXQuCi0gIC8vIFNvbGUgb3duZXJzaGlwIGJ5IHRoaXMgbGlua2VkX3B0ciBvYmplY3QgaXMg
cmVxdWlyZWQuCi0gIFQqIHJlbGVhc2UoKSB7Ci0gICAgYm9vbCBsYXN0ID0gbGlua18uZGVwYXJ0
KCk7Ci0gICAgYXNzZXJ0KGxhc3QpOwotICAgIFQqIHYgPSB2YWx1ZV87Ci0gICAgdmFsdWVfID0g
TlVMTDsKLSAgICByZXR1cm4gdjsKLSAgfQogCiAgIGJvb2wgb3BlcmF0b3I9PShUKiBwKSBjb25z
dCB7IHJldHVybiB2YWx1ZV8gPT0gcDsgfQogICBib29sIG9wZXJhdG9yIT0oVCogcCkgY29uc3Qg
eyByZXR1cm4gdmFsdWVfICE9IHA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFy
YW0tdXRpbC1nZW5lcmF0ZWQuaAppbmRleCBhYjRhYjU2NjI1NjQyZDI1NThmZDM4YjE4Y2VkMDZk
MDM1MWVjMWY0Li40ZDFkODFkMjBmZmNhMzJiYThmOTU3N2ZmNWJkMDZiZmUyZGU3NDYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oCkBAIC0x
LDQgKzEsNiBAQAotLy8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgYSBzY3JpcHQuICBETyBO
T1QgRURJVCBCWSBIQU5EISEhCisvLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBjb21tYW5k
OgorLy8gICAgIHB1bXAucHkgZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCisvLyBE
TyBOT1QgRURJVCBCWSBIQU5EISEhCiAKIC8vIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJbmMuCiAv
LyBBbGwgUmlnaHRzIFJlc2VydmVkLgpAQCAtMzgsNyArNDAsNyBAQAogLy8gYW5kIGF0IG1vc3Qg
MTAgYXJndW1lbnRzIGluIENvbWJpbmUuIFBsZWFzZSBjb250YWN0CiAvLyBnb29nbGV0ZXN0ZnJh
bWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20gaWYgeW91IG5lZWQgbW9yZS4KIC8vIFBsZWFzZSBub3Rl
IHRoYXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgdG8gQ29tYmluZSBpcyBsaW1pdGVkCi0vLyBi
eSB0aGUgbWF4aW11bSBhcml0eSBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdHIxOjp0dXBsZSB3
aGljaCBpcworLy8gYnkgdGhlIG1heGltdW0gYXJpdHkgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9m
IHR1cGxlIHdoaWNoIGlzCiAvLyBjdXJyZW50bHkgc2V0IGF0IDEwLgogCiAjaWZuZGVmIEdURVNU
X0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFURURfSF8KQEAg
LTQ3LDggKzQ5LDggQEAKIC8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBkZXBlbmRzIG9uIGd0ZXN0
J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKIC8vICp1bmNvbmRpdGlvbmFsbHkqLiAgVGhl
cmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKIC8vIGluc2lkZSAjaWYgR1RF
U1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KKyNpbmNsdWRl
ICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKIApAQCAtNTgs
OCArNjAsOCBAQCBuYW1lc3BhY2UgdGVzdGluZyB7CiAvLyBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXBh
cmFtLXRlc3QuaC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+CiBpbnRlcm5h
bDo6UGFyYW1HZW5lcmF0b3I8Ci0gICAgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxG
b3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKLSAgICAgICAgRm9yd2FyZEl0
ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKTsKKyAgdHlwZW5hbWUgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4K
K1ZhbHVlc0luKEZvcndhcmRJdGVyYXRvciBiZWdpbiwgRm9yd2FyZEl0ZXJhdG9yIGVuZCk7CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KIGludGVybmFsOjpQYXJhbUdlbmVyYXRv
cjxUPiBWYWx1ZXNJbihjb25zdCBUICgmYXJyYXkpW05dKTsKQEAgLTc3LDcgKzc5LDEwIEBAIGNs
YXNzIFZhbHVlQXJyYXkxIHsKICAgZXhwbGljaXQgVmFsdWVBcnJheTEoVDEgdjEpIDogdjFfKHYx
KSB7fQogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsgcmV0dXJuIFZhbHVlc0luKCZ2MV8sICZ2MV8gKyAxKTsgfQorICBvcGVy
YXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7
c3RhdGljX2Nhc3Q8VD4odjFfKX07CisgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKKyAgfQog
CiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3Vw
cG9ydGVkLgpAQCAtOTMsNyArOTgsNyBAQCBjbGFzcyBWYWx1ZUFycmF5MiB7CiAKICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qgewot
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyX307CisgICAgY29uc3QgVCBhcnJheVtdID0g
e3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyl9OwogICAgIHJldHVybiBW
YWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTEyLDcgKzExNyw4IEBAIGNsYXNzIFZhbHVlQXJy
YXkzIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M199Owor
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxU
Pih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pfTsKICAgICByZXR1cm4gVmFsdWVz
SW4oYXJyYXkpOwogICB9CiAKQEAgLTEzMyw3ICsxMzksOCBAQCBjbGFzcyBWYWx1ZUFycmF5NCB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF99Owor
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxU
Pih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8p
fTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTE1NSw3ICsxNjIsOCBA
QCBjbGFzcyBWYWx1ZUFycmF5NSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJh
dG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2
MV8sIHYyXywgdjNfLCB2NF8sIHY1X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19j
YXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyl9OwogICAgIHJl
dHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTc5LDcgKzE4Nyw5IEBAIGNsYXNzIFZh
bHVlQXJyYXk2IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1H
ZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2
M18sIHY0XywgdjVfLCB2Nl99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxU
Pih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18p
LCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2Nl8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAg
LTIwNCw3ICsyMTQsOSBAQCBjbGFzcyBWYWx1ZUFycmF5NyB7CiAKICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N199OworICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0
aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2Fz
dDxUPih2N18pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTIzMSw3
ICsyNDMsOSBAQCBjbGFzcyBWYWx1ZUFycmF5OCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJy
YXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4X307CisgICAgY29u
c3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRp
Y19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0
PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJh
eSk7CiAgIH0KIApAQCAtMjU5LDcgKzI3MywxMCBAQCBjbGFzcyBWYWx1ZUFycmF5OSB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4o
djFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwg
c3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5
KTsKICAgfQogCkBAIC0yODgsNyArMzA1LDEwIEBAIGNsYXNzIFZhbHVlQXJyYXkxMCB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlfLCB2MTBffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nh
c3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4o
djhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyl9
OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMzE5LDcgKzMzOSwxMCBA
QCBjbGFzcyBWYWx1ZUFycmF5MTEgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVy
YXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7
djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExX307
CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0
PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0
XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0
YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKX07
CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0zNTEsOCArMzc0LDExIEBA
IGNsYXNzIFZhbHVlQXJyYXkxMiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJh
dG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2
MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAot
ICAgICAgICB2MTJffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKX07CiAgICAgcmV0dXJu
IFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0zODYsOCArNDEyLDExIEBAIGNsYXNzIFZhbHVl
QXJyYXkxMyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNf
LCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJf
LCB2MTNffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3Rh
dGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nh
c3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+
KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEz
Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtNDIyLDggKzQ1MSwx
MSBAQCBjbGFzcyBWYWx1ZUFycmF5MTQgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKX07CiAgICAgcmV0
dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC00NTksOCArNDkxLDEyIEBAIGNsYXNzIFZh
bHVlQXJyYXkxNSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFt
R2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywg
djNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2
MTJfLCB2MTNfLCB2MTRfLCB2MTVffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nh
c3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4o
djhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyks
IHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3Rh
dGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MTVfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC00
OTksOCArNTM1LDEyIEBAIGNsYXNzIFZhbHVlQXJyYXkxNiB7CiAKICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywgdjlf
LCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZffTsKKyAg
ICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19j
YXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8
VD4odjE2Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtNTQwLDgg
KzU4MCwxMiBAQCBjbGFzcyBWYWx1ZUFycmF5MTcgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFy
cmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEw
XywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3X307Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNf
Y2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0
PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCkBAIC01ODIsOCArNjI2LDEzIEBAIGNsYXNzIFZhbHVlQXJyYXkxOCB7CiAK
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkg
Y29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1Xywg
djZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRf
LCB2MTVfLCB2MTZfLCB2MTdfLCB2MThffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGlj
X2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8
VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEw
XyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwg
c3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYx
N18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKX07CiAgICAgcmV0dXJuIFZhbHVlc0lu
KGFycmF5KTsKICAgfQogCkBAIC02MjUsOCArNjc0LDEzIEBAIGNsYXNzIFZhbHVlQXJyYXkxOSB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2
MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlffTsKKyAgICBjb25zdCBUIGFycmF5W10g
PSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nh
c3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19j
YXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8
VD4odjE5Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtNjcwLDgg
KzcyNCwxMyBAQCBjbGFzcyBWYWx1ZUFycmF5MjAgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFy
cmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEw
XywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4
XywgdjE5XywgdjIwX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYx
XyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0
YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNf
Y2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0
PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC03MTcs
OCArNzc2LDE0IEBAIGNsYXNzIFZhbHVlQXJyYXkyMSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2
MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2
MThfLCB2MTlfLCB2MjBfLCB2MjFffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nh
c3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4o
djhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyks
IHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3Rh
dGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0
YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC03NjUsOCArODMwLDE0IEBAIGNsYXNz
IFZhbHVlQXJyYXkyMiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYy
XywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAg
ICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2
MjFfLCB2MjJffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0
PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4o
djEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVf
KSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+
KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIy
Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtODE1LDkgKzg4Niwx
NCBAQCBjbGFzcyBWYWx1ZUFycmF5MjMgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5
XywgdjIwXywgdjIxXywgdjIyXywKLSAgICAgICAgdjIzX307CisgICAgY29uc3QgVCBhcnJheVtd
ID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0
YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19j
YXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0
PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC04NjcsOSArOTQzLDE1IEBAIGNsYXNz
IFZhbHVlQXJyYXkyNCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYy
XywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAg
ICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2
MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7
c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGlj
X2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8
VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0
PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4o
djE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjRfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQog
CkBAIC05MjAsOSArMTAwMiwxNSBAQCBjbGFzcyBWYWx1ZUFycmF5MjUgewogCiAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAg
ICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2
OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2
XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0
XywgdjI1X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYx
M18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyks
IHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2
MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8p
LCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0
YXRpY19jYXN0PFQ+KHYyNV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAK
QEAgLTk3NSw5ICsxMDYzLDE1IEBAIGNsYXNzIFZhbHVlQXJyYXkyNiB7CiAKICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4
XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZf
LCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRf
LCB2MjVfLCB2MjZffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8
VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0
PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pfTsKICAgICByZXR1
cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTEwMzIsOSArMTEyNiwxNiBAQCBjbGFzcyBW
YWx1ZUFycmF5MjcgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8s
IHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAg
djEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIx
XywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3X307CisgICAgY29u
c3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRp
Y19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0
PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5
XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxU
Pih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYx
Nl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4Xyks
IHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2
MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8p
LCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3Xyl9Owog
ICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTA5MCw5ICsxMTkxLDE2IEBA
IGNsYXNzIFZhbHVlQXJyYXkyOCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJh
dG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2
MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAot
ICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2
MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2
MjhffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyks
IHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0
YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihh
cnJheSk7CiAgIH0KIApAQCAtMTE0OSw5ICsxMjU3LDE2IEBAIGNsYXNzIFZhbHVlQXJyYXkyOSB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2
MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNf
LAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlffTsKKyAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+
KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2
XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwg
c3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYy
M18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pfTsKICAgICByZXR1cm4gVmFs
dWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTEyMTAsOSArMTMyNSwxNyBAQCBjbGFzcyBWYWx1ZUFy
cmF5MzAgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywg
djRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywg
djEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIy
XywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMw
X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19j
YXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+
KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2Xyks
IHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBz
dGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRp
Y19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0
aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19j
YXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7
CiAgIH0KIApAQCAtMTI3Myw5ICsxMzk2LDE3IEBAIGNsYXNzIFZhbHVlQXJyYXkzMSB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2
MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAg
ICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFffTsKKyAg
ICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19j
YXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8
VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0
PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Mjdf
KSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyl9OwogICAgIHJldHVybiBW
YWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTMzNyw5ICsxNDY4LDE3IEBAIGNsYXNzIFZhbHVl
QXJyYXkzMiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNf
LCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJf
LCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2
MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2
MzBfLCB2MzFfLCB2MzJffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4o
djFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwg
c3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRp
Y19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nh
c3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19j
YXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0
PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4o
djMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkp
OwogICB9CiAKQEAgLTE0MDMsOSArMTU0MiwxOCBAQCBjbGFzcyBWYWx1ZUFycmF5MzMgewogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2
XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0Xywg
djE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAg
ICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMy
XywgdjMzX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYx
M18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyks
IHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2
MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8p
LCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0
YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2Mjlf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBz
dGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyl9OwogICAg
IHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTQ3MCw5ICsxNjE4LDE4IEBAIGNs
YXNzIFZhbHVlQXJyYXkzNCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8s
IHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAg
ICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBf
LCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2Mjhf
LCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRffTsKKyAgICBjb25zdCBUIGFycmF5
W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRp
Y19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nh
c3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19j
YXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8
VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0Xyl9OwogICAgIHJldHVy
biBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTUzOCwxMCArMTY5NSwxOCBAQCBjbGFzcyBW
YWx1ZUFycmF5MzUgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8s
IHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAg
djEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIx
XywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5
XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywKLSAgICAgICAgdjM1X307CisgICAgY29u
c3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRp
Y19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0
PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5
XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxU
Pih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYx
Nl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4Xyks
IHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2
MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8p
LCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0
YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBz
dGF0aWNfY2FzdDxUPih2MzVfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQog
CkBAIC0xNjA5LDEwICsxNzc0LDE5IEBAIGNsYXNzIFZhbHVlQXJyYXkzNiB7CiAKICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qgewot
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18s
IHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2
MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2
MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNf
LCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3Rh
dGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nh
c3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4o
djEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJf
KSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+
KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5
XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYy
Nl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3Rh
dGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCkBAIC0xNjgyLDEwICsxODU2LDE5IEBAIGNsYXNzIFZhbHVlQXJyYXkzNyB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2
MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNf
LAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFf
LCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdffTsKKyAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+
KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2
XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwg
c3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYy
M18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0
YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjM3Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAt
MTc1NiwxMCArMTkzOSwxOSBAQCBjbGFzcyBWYWx1ZUFycmF5MzggewogCiAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBj
b25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8s
IHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2Xywg
djE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0Xywg
djI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0
XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4X307CisgICAgY29uc3QgVCBhcnJheVtd
ID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0
YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19j
YXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0
PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+
KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMw
XyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxU
Pih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYz
N18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
ICAgfQogCkBAIC0xODMxLDEwICsyMDIzLDIwIEBAIGNsYXNzIFZhbHVlQXJyYXkzOSB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2
MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAg
ICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJf
LCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlffTsKKyAg
ICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19j
YXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8
VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0
PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Mjdf
KSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+
KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0
XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwg
c3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzlfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBA
IC0xOTA4LDEwICsyMTEwLDIwIEBAIGNsYXNzIFZhbHVlQXJyYXk0MCB7CiAKICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4
XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZf
LCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRf
LCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2
MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBffTsKKyAgICBj
b25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3Rh
dGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nh
c3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0
PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4o
djE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThf
KSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+
KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1
XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYz
Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0Xyks
IHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyl9OwogICAgIHJldHVybiBWYWx1ZXNJ
bihhcnJheSk7CiAgIH0KIApAQCAtMTk4NywxMCArMjE5OSwyMCBAQCBjbGFzcyBWYWx1ZUFycmF5
NDEgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRf
LCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEz
XywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywg
djIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywg
djMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4Xywg
djM5XywgdjQwXywgdjQxX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+
KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyks
IHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0
aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19j
YXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0
PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2Fz
dDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+
KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMz
XyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxU
Pih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0
MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
ICAgfQogCkBAIC0yMDY3LDEwICsyMjg5LDIxIEBAIGNsYXNzIFZhbHVlQXJyYXk0MiB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2
MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAg
ICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJf
LCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBf
LCB2NDFfLCB2NDJffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8
VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0
PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+
KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMx
XyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwg
c3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYz
OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyks
IHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKX07CiAg
ICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0yMTQ4LDEwICsyMzgxLDIxIEBA
IGNsYXNzIFZhbHVlQXJyYXk0MyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJh
dG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2
MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAot
ICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2
MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2
MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2
MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJfLCB2NDNffTsKKyAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+
KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2
XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwg
c3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYy
M18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0
YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyl9OwogICAg
IHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjIzMSwxMCArMjQ3NSwyMSBAQCBj
bGFzcyBWYWx1ZUFycmF5NDQgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFf
LCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAg
ICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIw
XywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4
XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2
XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0X307CisgICAg
Y29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYy
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0
YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19j
YXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2Fz
dDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+
KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4
XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYy
NV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2
MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8p
LCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0
YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBz
dGF0aWNfY2FzdDxUPih2NDRfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQog
CkBAIC0yMzE1LDEwICsyNTcwLDIyIEBAIGNsYXNzIFZhbHVlQXJyYXk0NSB7CiAKICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qgewot
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18s
IHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2
MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2
MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNf
LCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFf
LCB2NDJfLCB2NDNfLCB2NDRfLCB2NDVffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGlj
X2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8
VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEw
XyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwg
c3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYx
N18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5Xyks
IHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3Rh
dGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0
YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGlj
X2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRp
Y19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nh
c3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2NDVfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
ICAgfQogCkBAIC0yNDAxLDEwICsyNjY4LDIyIEBAIGNsYXNzIFZhbHVlQXJyYXk0NiB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2
MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAg
ICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJf
LCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBf
LCB2NDFfLCB2NDJfLCB2NDNfLCB2NDRfLCB2NDVfLCB2NDZffTsKKyAgICBjb25zdCBUIGFycmF5
W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRp
Y19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nh
c3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19j
YXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8
VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0
PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4o
djM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Mzlf
KSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+
KHY0NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDVfKSwgc3RhdGljX2Nhc3Q8VD4odjQ2
Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjQ4OSwxMSArMjc2
OCwyMiBAQCBjbGFzcyBWYWx1ZUFycmF5NDcgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
ICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5
W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywg
djExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4Xywg
djE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2Xywg
djI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAg
ICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0
XywgdjQ1XywgdjQ2XywKLSAgICAgICAgdjQ3X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYx
OV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyks
IHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2
MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8p
LCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0
YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBz
dGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRp
Y19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBzdGF0
aWNfY2FzdDxUPih2NDdfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBA
IC0yNTc5LDExICsyODY5LDIzIEBAIGNsYXNzIFZhbHVlQXJyYXk0OCB7CiAKICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4
XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZf
LCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRf
LCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2
MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFfLCB2
NDJfLCB2NDNfLCB2NDRfLCB2NDVfLCB2NDZfLCB2NDdfLAotICAgICAgICB2NDhffTsKKyAgICBj
b25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3Rh
dGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nh
c3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0
PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4o
djE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThf
KSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+
KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1
XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYz
Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0Xyks
IHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0
YXRpY19jYXN0PFQ+KHY0NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDVfKSwgc3RhdGlj
X2Nhc3Q8VD4odjQ2XyksIHN0YXRpY19jYXN0PFQ+KHY0N18pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2NDhfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0yNjcw
LDExICsyOTcyLDIzIEBAIGNsYXNzIFZhbHVlQXJyYXk0OSB7CiAKICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywgdjlf
LCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdf
LCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVf
LCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2
MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJfLCB2
NDNfLCB2NDRfLCB2NDVfLCB2NDZfLCB2NDdfLAotICAgICAgICB2NDhfLCB2NDlffTsKKyAgICBj
b25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3Rh
dGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nh
c3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0
PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4o
djE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThf
KSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+
KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1
XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYz
Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0Xyks
IHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0
YXRpY19jYXN0PFQ+KHY0NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDVfKSwgc3RhdGlj
X2Nhc3Q8VD4odjQ2XyksIHN0YXRpY19jYXN0PFQ+KHY0N18pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2NDhfKSwgc3RhdGljX2Nhc3Q8VD4odjQ5Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihh
cnJheSk7CiAgIH0KIApAQCAtMjc2MiwxMSArMzA3NiwyMyBAQCBjbGFzcyBWYWx1ZUFycmF5NTAg
ewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2
NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywg
djE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIz
XywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMx
XywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5
XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0XywgdjQ1XywgdjQ2XywgdjQ3XywKLSAgICAg
ICAgdjQ4XywgdjQ5XywgdjUwX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0
PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
XyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBz
dGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRp
Y19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0
aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19j
YXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNf
Y2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0
PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2Fz
dDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+
KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQy
XyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBzdGF0aWNfY2FzdDxU
Pih2NDdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ4XyksIHN0YXRpY19jYXN0PFQ+KHY0
OV8pLCBzdGF0aWNfY2FzdDxUPih2NTBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
ICAgfQogCkBAIC0yODI2LDcgKzMxNTIsNyBAQCBjbGFzcyBWYWx1ZUFycmF5NTAgewogICBjb25z
dCBUNTAgdjUwXzsKIH07CiAKLSNpZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNf
Q09NQklORQogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIg
Q09ERS4KIC8vCiAvLyBHZW5lcmF0ZXMgdmFsdWVzIGZyb20gdGhlIENhcnRlc2lhbiBwcm9kdWN0
IG9mIHZhbHVlcyBwcm9kdWNlZApAQCAtMjgzNCw5ICszMTYwLDkgQEAgY2xhc3MgVmFsdWVBcnJh
eTUwIHsKIC8vCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgogY2xhc3MgQ2Fy
dGVzaWFuUHJvZHVjdEdlbmVyYXRvcjIKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVy
ZmFjZTwgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyPiA+IHsKKyAgICA6IHB1YmxpYyBQYXJhbUdl
bmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDI+ID4gewogIHB1YmxpYzoK
LSAgdHlwZWRlZiA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDI+IFBhcmFtVHlwZTsKKyAgdHlwZWRl
ZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMj4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1
Y3RHZW5lcmF0b3IyKGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUMj4mIGcyKQpAQCAtMjk0OSw5ICszMjc1LDkgQEAgY2xhc3MgQ2FydGVz
aWFuUHJvZHVjdEdlbmVyYXRvcjIKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDM+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMwotICAgIDog
cHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIs
IFQzPiA+IHsKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5n
Ojp0dXBsZTxUMSwgVDIsIFQzPiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnRyMTo6
dHVwbGU8VDEsIFQyLCBUMz4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8
VDEsIFQyLCBUMz4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IzKGNv
bnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxU
Mj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczKQpAQCAtMzA4MSw5ICszNDA3LDkg
QEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjMKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0PgogY2xhc3MgQ2FydGVz
aWFuUHJvZHVjdEdlbmVyYXRvcjQKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFj
ZTwgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+ID4geworICAgIDogcHVibGljIFBh
cmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiA+
IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+
IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiBQ
YXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQoY29uc3QgUGFyYW1HZW5l
cmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBAIC0zMjMyLDkgKzM1NTgsOSBAQCBjbGFzcyBDYXJ0
ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNAogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1PgogY2xhc3MgQ2FydGVz
aWFuUHJvZHVjdEdlbmVyYXRvcjUKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFj
ZTwgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiA+IHsKKyAgICA6IHB1Ymxp
YyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBU
NCwgVDU+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIs
IFQzLCBUNCwgVDU+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBU
MiwgVDMsIFQ0LCBUNT4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1
KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLApAQCAtMzQwMCwxMCArMzcy
NiwxMCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNQogdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NSwKICAgICB0eXBlbmFtZSBUNj4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2Ci0g
ICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6c3RkOjp0cjE6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwg
Ojp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsCiAgICAgICAgIFQ2PiA+IHsKICBw
dWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
Nj4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNj4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2KGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4m
IGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLApAQCAtMzU4NiwxMCArMzkxMiwxMCBA
QCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNgogdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAg
ICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJh
dG9yNwotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHIxOjp0
dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAorICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9y
SW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCiAgICAg
ICAgIFQ3PiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDc+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjcoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMs
CkBAIC0zNzg5LDEwICs0MTE1LDEwIEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5h
bWUgVDg+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOAotICAgIDogcHVibGljIFBh
cmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LAorICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6
OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCiAgICAgICAgIFQ3LCBUOD4gPiB7CiAgcHVi
bGljOgotICB0eXBlZGVmIDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOD4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdl
bmVyYXRvcjgoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFt
R2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBAIC00MDEx
LDEwICs0MzM3LDEwIEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4CiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LAogICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5
cGVuYW1lIFQ5PgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjkKLSAgICA6IHB1Ymxp
YyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0
aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAogICAgICAgICBUNywgVDgsIFQ5PiA+
IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4LCBUOT4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVw
bGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4gUGFyYW1UeXBlOwogCiAgIENh
cnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAg
ICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxU
Mz4mIGczLApAQCAtNDI1MCwxMCArNDU3NiwxMCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2Vu
ZXJhdG9yOQogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMs
IHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcs
IHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgogY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjEwCi0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8
IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCisgICAgOiBwdWJsaWMg
UGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwKICAgICAgICAgVDcsIFQ4LCBUOSwgVDEwPiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVk
ZWYgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwPiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTA+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yMTAoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBA
IC00NTE1LDggKzQ4NDEsOCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMiB7CiBDYXJ0
ZXNpYW5Qcm9kdWN0SG9sZGVyMihjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9y
MiYgZzIpCiAgICAgICA6IGcxXyhnMSksIGcyXyhnMikge30KICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMj4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0cjE6
OnR1cGxlPFQxLCBUMj4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6
c3RkOjp0cjE6OnR1cGxlPFQxLCBUMj4gPigKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6
dGVzdGluZzo6dHVwbGU8VDEsIFQyPiA+KCkgY29uc3QgeworICAgIHJldHVybiBQYXJhbUdlbmVy
YXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDI+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Q
cm9kdWN0R2VuZXJhdG9yMjxUMSwgVDI+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVy
YXRvcjxUMT4gPihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4g
PihnMl8pKSk7CkBAIC00NTM3LDggKzQ4NjMsOCBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMyhj
b25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgY29uc3QgR2Vu
ZXJhdG9yMyYgZzMpCiAgICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhnMykge30KICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci0gIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzPiA+KCkgY29uc3Qg
ewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBU
Mz4gPigKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQy
LCBUMz4gPigpIGNvbnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6
dHVwbGU8VDEsIFQyLCBUMz4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0
b3IzPFQxLCBUMiwgVDM+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4g
PihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pLApA
QCAtNDU2Miw4ICs0ODg4LDggQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjQoY29uc3QgR2VuZXJh
dG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICAgIGNvbnN0IEdlbmVyYXRvcjMmIGcz
LCBjb25zdCBHZW5lcmF0b3I0JiBnNCkKICAgICAgIDogZzFfKGcxKSwgZzJfKGcyKSwgZzNfKGcz
KSwgZzRfKGc0KSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6
dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1H
ZW5lcmF0b3I8IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiA+KAorICBvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPigpIGNv
bnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQy
LCBUMywgVDQ+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNDxUMSwg
VDIsIFQzLCBUND4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcx
XyksCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyksCkBAIC00
NTg5LDggKzQ5MTUsOCBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNShjb25zdCBHZW5lcmF0b3Ix
JiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgY29uc3QgR2VuZXJhdG9yMyYgZzMsIGNv
bnN0IEdlbmVyYXRvcjQmIGc0LCBjb25zdCBHZW5lcmF0b3I1JiBnNSkKICAgICAgIDogZzFfKGcx
KSwgZzJfKGcyKSwgZzNfKGczKSwgZzRfKGc0KSwgZzVfKGc1KSB7fQogICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1l
IFQ1PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQy
LCBUMywgVDQsIFQ1PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpz
dGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiA+KAorICBvcGVyYXRvciBQYXJhbUdl
bmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+ID4oKSBjb25zdCB7
CisgICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0LCBUNT4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1PFQxLCBU
MiwgVDMsIFQ0LCBUNT4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+
KGcxXyksCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyksCkBA
IC00NjIwLDggKzQ5NDYsOCBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNihjb25zdCBHZW5lcmF0
b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgICA6IGcxXyhnMSksIGcyXyhnMiks
IGczXyhnMyksIGc0XyhnNCksIGc1XyhnNSksIGc2XyhnNikge30KICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NSwKICAgICAgIHR5cGVuYW1lIFQ2PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6
OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4gPigpIGNvbnN0IHsKLSAgICByZXR1
cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDY+ID4oCisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDY+ID4oKSBjb25zdCB7CisgICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9y
PCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+ID4oCiAgICAgICAgIG5l
dyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PigKICAg
ICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKICAgICAgICAgc3Rh
dGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwKQEAgLTQ2NTMsOSArNDk3OSw5IEBA
IENhcnRlc2lhblByb2R1Y3RIb2xkZXI3KGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5l
cmF0b3IyJiBnMiwKICAgICAgIDogZzFfKGcxKSwgZzJfKGcyKSwgZzNfKGczKSwgZzRfKGc0KSwg
ZzVfKGc1KSwgZzZfKGc2KSwgZzdfKGc3KSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgICAg
dHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpz
dGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKKyAgb3BlcmF0b3IgUGFyYW1H
ZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKICAgICAg
IFQ3PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnRyMTo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+ID4oCisgICAgcmV0dXJuIFBhcmFtR2Vu
ZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PiA+KAog
ICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjc8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDc+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8p
LAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pLApAQCAtNDY5
MSw5ICs1MDE3LDkgQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjgoY29uc3QgR2VuZXJhdG9yMSYg
ZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICAgICAgICAgIGc4XyhnOCkge30KICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0
eXBlbmFtZSBUNSwKICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+
Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsCiAgICAgICBUOD4gPigpIGNvbnN0IHsK
LSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOD4gPigKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVz
dGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiA+KAogICAgICAgICBu
ZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjg8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4PigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKICAg
ICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwKQEAgLTQ3MzIsOSAr
NTA1OCw5IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXI5KGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBj
b25zdCBHZW5lcmF0b3IyJiBnMiwKICAgICAgICAgICBnOV8oZzkpIHt9CiAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDUsCiAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBl
bmFtZSBUOT4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0cjE6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8
IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LAogICAgICAg
VDk+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0
dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsCisgICAgcmV0dXJuIFBhcmFtR2Vu
ZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwK
ICAgICAgICAgVDk+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOTxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PigKICAgICAgICAgc3RhdGljX2Nhc3Q8
UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKQEAgLTQ3NzYsMTAgKzUxMDIsMTAgQEAgQ2FydGVz
aWFuUHJvZHVjdEhvbGRlcjEwKGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3Iy
JiBnMiwKICAgICAgICAgICBnOV8oZzkpLCBnMTBfKGcxMCkge30KICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NSwKICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1l
IFQ5LCB0eXBlbmFtZSBUMTA+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIx
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsCi0gICAgICBUOSwgVDEwPiA+
KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnRyMTo6dHVwbGU8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LAotICAgICAgICBUOSwgVDEwPiA+KAorICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LAorICAgICAgVDEwPiA+KCkgY29uc3QgeworICAgIHJldHVybiBQ
YXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LAorICAgICAgICBUMTA+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0
R2VuZXJhdG9yMTA8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwKICAgICAgICAg
ICAgIFQxMD4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcxXyks
CkBAIC00ODEwLDcgKzUxMzYsNyBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMTAoY29uc3QgR2Vu
ZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICBjb25zdCBHZW5lcmF0b3IxMCBn
MTBfOwogfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXIxMAogCi0jZW5kaWYgIC8v
IEdURVNUX0hBU19DT01CSU5FCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQogCiB9ICAv
LyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBh
cmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCmluZGV4
IGJhZWRmYmMyZDdlODM0MWI1YjU1OWQ5Y2UzM2I4ZDg3NDUzZGVkNDIuLjVjN2M0N2FmMGJiMWU4
ODk4NDkyZTA1NDI1ZTQwMzk3YTRkMTJmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQu
aC5wdW1wCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCkBAIC0zOSw3ICszOSw3IEBAICR2
YXIgbWF4dHVwbGUgPSAxMCAgJCQgTWF4aW11bSBudW1iZXIgb2YgQ29tYmluZSBhcmd1bWVudHMg
d2Ugd2FudCB0byBzdXBwb3J0LgogLy8gYW5kIGF0IG1vc3QgJG1heHR1cGxlIGFyZ3VtZW50cyBp
biBDb21iaW5lLiBQbGVhc2UgY29udGFjdAogLy8gZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVn
cm91cHMuY29tIGlmIHlvdSBuZWVkIG1vcmUuCiAvLyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBudW1i
ZXIgb2YgYXJndW1lbnRzIHRvIENvbWJpbmUgaXMgbGltaXRlZAotLy8gYnkgdGhlIG1heGltdW0g
YXJpdHkgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRyMTo6dHVwbGUgd2hpY2ggaXMKKy8vIGJ5
IHRoZSBtYXhpbXVtIGFyaXR5IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0dXBsZSB3aGljaCBp
cwogLy8gY3VycmVudGx5IHNldCBhdCAkbWF4dHVwbGUuCiAKICNpZm5kZWYgR1RFU1RfSU5DTFVE
RV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0dFTkVSQVRFRF9IXwpAQCAtNDgsOCAr
NDgsOCBAQCAkdmFyIG1heHR1cGxlID0gMTAgICQkIE1heGltdW0gbnVtYmVyIG9mIENvbWJpbmUg
YXJndW1lbnRzIHdlIHdhbnQgdG8gc3VwcG9ydC4KIC8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBk
ZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKIC8vICp1bmNvbmRp
dGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKIC8v
IGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcGFyYW0tdXRpbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAjaWYgR1RFU1RfSEFTX1BBUkFN
X1RFU1QKIApAQCAtNTksOCArNTksOCBAQCBuYW1lc3BhY2UgdGVzdGluZyB7CiAvLyBpbmNsdWRl
L2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRl
cmF0b3I+CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ci0gICAgdHlwZW5hbWUgOjpzdGQ6Oml0
ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKLSAg
ICAgICAgRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKTsKKyAgdHlw
ZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0ZXJhdG9y
Pjo6dmFsdWVfdHlwZT4KK1ZhbHVlc0luKEZvcndhcmRJdGVyYXRvciBiZWdpbiwgRm9yd2FyZEl0
ZXJhdG9yIGVuZCk7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KIGludGVybmFs
OjpQYXJhbUdlbmVyYXRvcjxUPiBWYWx1ZXNJbihjb25zdCBUICgmYXJyYXkpW05dKTsKQEAgLTcy
LDMzICs3MiwxOCBAQCBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dHlwZW5hbWUgQ29udGFpbmVy
Ojp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIC8vIFVzZWQg
aW4gdGhlIFZhbHVlcygpIGZ1bmN0aW9uIHRvIHByb3ZpZGUgcG9seW1vcnBoaWMgY2FwYWJpbGl0
aWVzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxPgotY2xhc3MgVmFsdWVBcnJheTEgewotIHB1Ymxp
YzoKLSAgZXhwbGljaXQgVmFsdWVBcnJheTEoVDEgdjEpIDogdjFfKHYxKSB7fQotCi0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsg
cmV0dXJuIFZhbHVlc0luKCZ2MV8sICZ2MV8gKyAxKTsgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8g
aW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJh
dG9yPShjb25zdCBWYWx1ZUFycmF5MSYgb3RoZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsKLX07Ci0K
LSRyYW5nZSBpIDIuLm4KKyRyYW5nZSBpIDEuLm4KICRmb3IgaSBbWwogJHJhbmdlIGogMS4uaQog
CiB0ZW1wbGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIFQkal1dPgogY2xhc3MgVmFsdWVBcnJheSRp
IHsKICBwdWJsaWM6Ci0gIFZhbHVlQXJyYXkkaSgkZm9yIGosIFtbVCRqIHYkal1dKSA6ICRmb3Ig
aiwgW1t2JChqKV8odiRqKV1dIHt9CisgICRpZiBpPT0xIFtbZXhwbGljaXQgXV1WYWx1ZUFycmF5
JGkoJGZvciBqLCBbW1QkaiB2JGpdXSkgOiAkZm9yIGosIFtbdiQoailfKHYkaildXSB7fQogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7JGZvciBqLCBbW3YkKGopX11dfTsKKyAgICBj
b25zdCBUIGFycmF5W10gPSB7JGZvciBqLCBbW3N0YXRpY19jYXN0PFQ+KHYkKGopXyldXX07CiAg
ICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0xMTUsNyArMTAwLDcgQEAgJGZv
ciBqIFtbCiAKIF1dCiAKLSNpZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNfQ09N
QklORQogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09E
RS4KIC8vCiAvLyBHZW5lcmF0ZXMgdmFsdWVzIGZyb20gdGhlIENhcnRlc2lhbiBwcm9kdWN0IG9m
IHZhbHVlcyBwcm9kdWNlZApAQCAtMTI4LDkgKzExMyw5IEBAICRyYW5nZSBrIDIuLmkKIAogdGVt
cGxhdGUgPCRmb3IgaiwgW1t0eXBlbmFtZSBUJGpdXT4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RH
ZW5lcmF0b3IkaQotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6
dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4geworICAgIDogcHVibGljIFBhcmFtR2VuZXJh
dG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4gPiB7CiAgcHVi
bGljOgotICB0eXBlZGVmIDo6c3RkOjp0cjE6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4gUGFyYW1U
eXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8JGZvciBqLCBbW1Qkal1dPiBQYXJhbVR5
cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpKCRmb3IgaiwgW1tjb25zdCBQYXJh
bUdlbmVyYXRvcjxUJGo+JiBnJGpdXSkKICAgICAgIDogJGZvciBqLCBbW2ckKGopXyhnJGopXV0g
e30KQEAgLTI2OSw4ICsyNTQsOCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyJGkgewog
Q2FydGVzaWFuUHJvZHVjdEhvbGRlciRpKCRmb3IgaiwgW1tjb25zdCBHZW5lcmF0b3IkaiYgZyRq
XV0pCiAgICAgICA6ICRmb3IgaiwgW1tnJChqKV8oZyRqKV1dIHt9CiAgIHRlbXBsYXRlIDwkZm9y
IGosIFtbdHlwZW5hbWUgVCRqXV0+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6
dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFt
R2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4oCisgIG9wZXJh
dG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4gPigp
IGNvbnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8JGZv
ciBqLCBbW1Qkal1dPiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRp
PCRmb3IgaiwgW1tUJGpdXT4oCiAkZm9yIGosW1sKIApAQCAtMjkxLDcgKzI3Niw3IEBAICRmb3Ig
aiBbWwogCiBdXQogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCisjIGVuZGlmICAvLyBH
VEVTVF9IQVNfQ09NQklORQogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVz
cGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oCmluZGV4IDBjYmI1
OGMyMWI3Yjg5Y2Q0OGE4ZDFjNWNiNTIwZjMxMTM3NGNkZTIuLjgyY2FiOWIwMjAxYjE5YjdhZmJh
MzkxOTdmN2VhN2Y4YTRhMGIxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5o
CkBAIC0zNCwyMCArMzQsNDUgQEAKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5B
TF9HVEVTVF9QQVJBTV9VVElMX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJO
QUxfR1RFU1RfUEFSQU1fVVRJTF9IXwogCisjaW5jbHVkZSA8Y3R5cGUuaD4KKwogI2luY2x1ZGUg
PGl0ZXJhdG9yPgorI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUg
PHZlY3Rvcj4KIAogLy8gc2NyaXB0cy9mdXNlX2d0ZXN0LnB5IGRlcGVuZHMgb24gZ3Rlc3QncyBv
d24gaGVhZGVyIGJlaW5nICNpbmNsdWRlZAogLy8gKnVuY29uZGl0aW9uYWxseSouICBUaGVyZWZv
cmUgdGhlc2UgI2luY2x1ZGVzIGNhbm5vdCBiZSBtb3ZlZAogLy8gaW5zaWRlICNpZiBHVEVTVF9I
QVNfUEFSQU1fVEVTVC4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5o
PgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaD4KLSNpbmNsdWRl
IDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRf
cHRyLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LXByaW50ZXJzLmgiCiAKICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAogCiBu
YW1lc3BhY2UgdGVzdGluZyB7CisKKy8vIElucHV0IHRvIGEgcGFyYW1ldGVyaXplZCB0ZXN0IG5h
bWUgZ2VuZXJhdG9yLCBkZXNjcmliaW5nIGEgdGVzdCBwYXJhbWV0ZXIuCisvLyBDb25zaXN0cyBv
ZiB0aGUgcGFyYW1ldGVyIHZhbHVlIGFuZCB0aGUgaW50ZWdlciBwYXJhbWV0ZXIgaW5kZXguCit0
ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgorc3RydWN0IFRlc3RQYXJhbUluZm8geworICBUZXN0
UGFyYW1JbmZvKGNvbnN0IFBhcmFtVHlwZSYgYV9wYXJhbSwgc2l6ZV90IGFuX2luZGV4KSA6Cisg
ICAgcGFyYW0oYV9wYXJhbSksCisgICAgaW5kZXgoYW5faW5kZXgpIHt9CisgIFBhcmFtVHlwZSBw
YXJhbTsKKyAgc2l6ZV90IGluZGV4OworfTsKKworLy8gQSBidWlsdGluIHBhcmFtZXRlcml6ZWQg
dGVzdCBuYW1lIGdlbmVyYXRvciB3aGljaCByZXR1cm5zIHRoZSByZXN1bHQgb2YKKy8vIHRlc3Rp
bmc6OlByaW50VG9TdHJpbmcuCitzdHJ1Y3QgUHJpbnRUb1N0cmluZ1BhcmFtTmFtZSB7CisgIHRl
bXBsYXRlIDxjbGFzcyBQYXJhbVR5cGU+CisgIHN0ZDo6c3RyaW5nIG9wZXJhdG9yKCkoY29uc3Qg
VGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+JiBpbmZvKSBjb25zdCB7CisgICAgcmV0dXJuIFByaW50
VG9TdHJpbmcoaW5mby5wYXJhbSk7CisgIH0KK307CisKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAK
IC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCkBA
IC01Nyw3ICs4Miw3IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLyBURVNUX1AgbWFjcm8gaXMg
dXNlZCB0byBkZWZpbmUgdHdvIHRlc3RzIHdpdGggdGhlIHNhbWUgbmFtZQogLy8gYnV0IGluIGRp
ZmZlcmVudCBuYW1lc3BhY2VzLgogR1RFU1RfQVBJXyB2b2lkIFJlcG9ydEludmFsaWRUZXN0Q2Fz
ZVR5cGUoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb24gY29kZV9sb2Nh
dGlvbik7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZT4gY2xhc3MgUGFyYW1HZW5lcmF0b3JJbnRlcmZh
Y2U7CiB0ZW1wbGF0ZSA8dHlwZW5hbWU+IGNsYXNzIFBhcmFtR2VuZXJhdG9yOwpAQCAtMTcxLDcg
KzE5Niw3IEBAIGNsYXNzIFBhcmFtR2VuZXJhdG9yIHsKICAgaXRlcmF0b3IgZW5kKCkgY29uc3Qg
eyByZXR1cm4gaXRlcmF0b3IoaW1wbF8tPkVuZCgpKTsgfQogCiAgcHJpdmF0ZToKLSAgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjxjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxU
PiA+IGltcGxfOworICBsaW5rZWRfcHRyPGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+
ID4gaW1wbF87CiB9OwogCiAvLyBHZW5lcmF0ZXMgdmFsdWVzIGZyb20gYSByYW5nZSBvZiB0d28g
Y29tcGFyYWJsZSB2YWx1ZXMuIENhbiBiZSB1c2VkIHRvCkBAIC0yMDUsNyArMjMwLDcgQEAgY2xh
c3MgUmFuZ2VHZW5lcmF0b3IgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4gewog
ICAgICAgcmV0dXJuIGJhc2VfOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgQWR2YW5jZSgpIHsK
LSAgICAgIHZhbHVlXyA9IHZhbHVlXyArIHN0ZXBfOworICAgICAgdmFsdWVfID0gc3RhdGljX2Nh
c3Q8VD4odmFsdWVfICsgc3RlcF8pOwogICAgICAgaW5kZXhfKys7CiAgICAgfQogICAgIHZpcnR1
YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxUPiogQ2xvbmUoKSBjb25zdCB7CkBAIC0yNDIsNyAr
MjY3LDcgQEAgY2xhc3MgUmFuZ2VHZW5lcmF0b3IgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRl
cmZhY2U8VD4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQmIGVuZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbmNyZW1lbnRUJiBzdGVwKSB7
CiAgICAgaW50IGVuZF9pbmRleCA9IDA7Ci0gICAgZm9yIChUIGkgPSBiZWdpbjsgaSA8IGVuZDsg
aSA9IGkgKyBzdGVwKQorICAgIGZvciAoVCBpID0gYmVnaW47IGkgPCBlbmQ7IGkgPSBzdGF0aWNf
Y2FzdDxUPihpICsgc3RlcCkpCiAgICAgICBlbmRfaW5kZXgrKzsKICAgICByZXR1cm4gZW5kX2lu
ZGV4OwogICB9CkBAIC0yODUsNyArMzEwLDcgQEAgY2xhc3MgVmFsdWVzSW5JdGVyYXRvclJhbmdl
R2VuZXJhdG9yIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+IHsKICAgIHB1Ymxp
YzoKICAgICBJdGVyYXRvcihjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiogYmFzZSwK
ICAgICAgICAgICAgICB0eXBlbmFtZSBDb250YWluZXJUeXBlOjpjb25zdF9pdGVyYXRvciBpdGVy
YXRvcikKLSAgICAgICAgOiAgYmFzZV8oYmFzZSksIGl0ZXJhdG9yXyhpdGVyYXRvcikge30KKyAg
ICAgICAgOiBiYXNlXyhiYXNlKSwgaXRlcmF0b3JfKGl0ZXJhdG9yKSB7fQogICAgIHZpcnR1YWwg
fkl0ZXJhdG9yKCkge30KIAogICAgIHZpcnR1YWwgY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZh
Y2U8VD4qIEJhc2VHZW5lcmF0b3IoKSBjb25zdCB7CkBAIC0zNDYsNiArMzcxLDM3IEBAIGNsYXNz
IFZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvciA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvcklu
dGVyZmFjZTxUPiB7CiAKIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJ
TiBVU0VSIENPREUuCiAvLworLy8gRGVmYXVsdCBwYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSBnZW5l
cmF0b3IsIHJldHVybnMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUKKy8vIGludGVnZXIgdGVzdCBw
YXJhbWV0ZXIgaW5kZXguCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgorc3RkOjpzdHJpbmcg
RGVmYXVsdFBhcmFtTmFtZShjb25zdCBUZXN0UGFyYW1JbmZvPFBhcmFtVHlwZT4mIGluZm8pIHsK
KyAgTWVzc2FnZSBuYW1lX3N0cmVhbTsKKyAgbmFtZV9zdHJlYW0gPDwgaW5mby5pbmRleDsKKyAg
cmV0dXJuIG5hbWVfc3RyZWFtLkdldFN0cmluZygpOworfQorCisvLyBJTlRFUk5BTCBJTVBMRU1F
TlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgorLy8KKy8vIFBhcmFtZXRlcml6ZWQg
dGVzdCBuYW1lIG92ZXJsb2FkIGhlbHBlcnMsIHdoaWNoIGhlbHAgdGhlCisvLyBJTlNUQU5USUFU
RV9URVNUX0NBU0VfUCBtYWNybyBjaG9vc2UgYmV0d2VlbiB0aGUgZGVmYXVsdCBwYXJhbWV0ZXJp
emVkCisvLyB0ZXN0IG5hbWUgZ2VuZXJhdG9yIGFuZCB1c2VyIHBhcmFtIG5hbWUgZ2VuZXJhdG9y
LgordGVtcGxhdGUgPGNsYXNzIFBhcmFtVHlwZSwgY2xhc3MgUGFyYW1OYW1lR2VuRnVuY3Rvcj4K
K1BhcmFtTmFtZUdlbkZ1bmN0b3IgR2V0UGFyYW1OYW1lR2VuKFBhcmFtTmFtZUdlbkZ1bmN0b3Ig
ZnVuYykgeworICByZXR1cm4gZnVuYzsKK30KKwordGVtcGxhdGUgPGNsYXNzIFBhcmFtVHlwZT4K
K3N0cnVjdCBQYXJhbU5hbWVHZW5GdW5jIHsKKyAgdHlwZWRlZiBzdGQ6OnN0cmluZyBUeXBlKGNv
bnN0IFRlc3RQYXJhbUluZm88UGFyYW1UeXBlPiYpOworfTsKKwordGVtcGxhdGUgPGNsYXNzIFBh
cmFtVHlwZT4KK3R5cGVuYW1lIFBhcmFtTmFtZUdlbkZ1bmM8UGFyYW1UeXBlPjo6VHlwZSAqR2V0
UGFyYW1OYW1lR2VuKCkgeworICByZXR1cm4gRGVmYXVsdFBhcmFtTmFtZTsKK30KKworLy8gSU5U
RVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KKy8vCiAvLyBT
dG9yZXMgYSBwYXJhbWV0ZXIgdmFsdWUgYW5kIGxhdGVyIGNyZWF0ZXMgdGVzdHMgcGFyYW1ldGVy
aXplZCB3aXRoIHRoYXQKIC8vIHZhbHVlLgogdGVtcGxhdGUgPGNsYXNzIFRlc3RDbGFzcz4KQEAg
LTQxNiw3ICs0NzIsNyBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvQmFzZSB7CiAg
IHZpcnR1YWwgflBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9CYXNlKCkge30KIAogICAvLyBCYXNl
IHBhcnQgb2YgdGVzdCBjYXNlIG5hbWUgZm9yIGRpc3BsYXkgcHVycG9zZXMuCi0gIHZpcnR1YWwg
Y29uc3QgU3RyaW5nJiBHZXRUZXN0Q2FzZU5hbWUoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgY29u
c3Qgc3RyaW5nJiBHZXRUZXN0Q2FzZU5hbWUoKSBjb25zdCA9IDA7CiAgIC8vIFRlc3QgY2FzZSBp
ZCB0byB2ZXJpZnkgaWRlbnRpdHkuCiAgIHZpcnR1YWwgVHlwZUlkIEdldFRlc3RDYXNlVHlwZUlk
KCkgY29uc3QgPSAwOwogICAvLyBVbml0VGVzdCBjbGFzcyBpbnZva2VzIHRoaXMgbWV0aG9kIHRv
IHJlZ2lzdGVyIHRlc3RzIGluIHRoaXMKQEAgLTQ0OCwxMiArNTA0LDE0IEBAIGNsYXNzIFBhcmFt
ZXRlcml6ZWRUZXN0Q2FzZUluZm8gOiBwdWJsaWMgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jh
c2UgewogICB0eXBlZGVmIHR5cGVuYW1lIFRlc3RDYXNlOjpQYXJhbVR5cGUgUGFyYW1UeXBlOwog
ICAvLyBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBhcHByb3ByaWF0ZSBn
ZW5lcmF0b3IgdHlwZS4KICAgdHlwZWRlZiBQYXJhbUdlbmVyYXRvcjxQYXJhbVR5cGU+KEdlbmVy
YXRvckNyZWF0aW9uRnVuYykoKTsKKyAgdHlwZWRlZiB0eXBlbmFtZSBQYXJhbU5hbWVHZW5GdW5j
PFBhcmFtVHlwZT46OlR5cGUgUGFyYW1OYW1lR2VuZXJhdG9yRnVuYzsKIAotICBleHBsaWNpdCBQ
YXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvKGNvbnN0IGNoYXIqIG5hbWUpCi0gICAgICA6IHRlc3Rf
Y2FzZV9uYW1lXyhuYW1lKSB7fQorICBleHBsaWNpdCBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZv
KAorICAgICAgY29uc3QgY2hhciogbmFtZSwgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24pCisg
ICAgICA6IHRlc3RfY2FzZV9uYW1lXyhuYW1lKSwgY29kZV9sb2NhdGlvbl8oY29kZV9sb2NhdGlv
bikge30KIAogICAvLyBUZXN0IGNhc2UgYmFzZSBuYW1lIGZvciBkaXNwbGF5IHB1cnBvc2VzLgot
ICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgR2V0VGVzdENhc2VOYW1lKCkgY29uc3QgeyByZXR1cm4g
dGVzdF9jYXNlX25hbWVfOyB9CisgIHZpcnR1YWwgY29uc3Qgc3RyaW5nJiBHZXRUZXN0Q2FzZU5h
bWUoKSBjb25zdCB7IHJldHVybiB0ZXN0X2Nhc2VfbmFtZV87IH0KICAgLy8gVGVzdCBjYXNlIGlk
IHRvIHZlcmlmeSBpZGVudGl0eS4KICAgdmlydHVhbCBUeXBlSWQgR2V0VGVzdENhc2VUeXBlSWQo
KSBjb25zdCB7IHJldHVybiBHZXRUeXBlSWQ8VGVzdENhc2U+KCk7IH0KICAgLy8gVEVTVF9QIG1h
Y3JvIHVzZXMgQWRkVGVzdFBhdHRlcm4oKSB0byByZWNvcmQgaW5mb3JtYXRpb24KQEAgLTQ3MSwx
MSArNTI5LDEzIEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8gOiBwdWJsaWMgUGFy
YW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UgewogICB9CiAgIC8vIElOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QIG1hY3JvIHVzZXMgQWRkR2VuZXJhdG9yKCkgdG8gcmVjb3JkIGluZm9ybWF0aW9uCiAg
IC8vIGFib3V0IGEgZ2VuZXJhdG9yLgotICBpbnQgQWRkVGVzdENhc2VJbnN0YW50aWF0aW9uKGNv
bnN0IGNoYXIqIGluc3RhbnRpYXRpb25fbmFtZSwKKyAgaW50IEFkZFRlc3RDYXNlSW5zdGFudGlh
dGlvbihjb25zdCBzdHJpbmcmIGluc3RhbnRpYXRpb25fbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHZW5lcmF0b3JDcmVhdGlvbkZ1bmMqIGZ1bmMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLyogZmlsZSAqLywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgLyogbGluZSAqLykgewotICAgIGluc3RhbnRpYXRpb25zXy5w
dXNoX2JhY2soOjpzdGQ6Om1ha2VfcGFpcihpbnN0YW50aWF0aW9uX25hbWUsIGZ1bmMpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbU5hbWVHZW5lcmF0b3JGdW5jKiBuYW1l
X2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZSkgeworICAgIGluc3RhbnRp
YXRpb25zXy5wdXNoX2JhY2soCisgICAgICAgIEluc3RhbnRpYXRpb25JbmZvKGluc3RhbnRpYXRp
b25fbmFtZSwgZnVuYywgbmFtZV9mdW5jLCBmaWxlLCBsaW5lKSk7CiAgICAgcmV0dXJuIDA7ICAv
LyBSZXR1cm4gdmFsdWUgdXNlZCBvbmx5IHRvIHJ1biB0aGlzIG1ldGhvZCBpbiBuYW1lc3BhY2Ug
c2NvcGUuCiAgIH0KICAgLy8gVW5pdFRlc3QgY2xhc3MgaW52b2tlcyB0aGlzIG1ldGhvZCB0byBy
ZWdpc3RlciB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZQpAQCAtNDkwLDI2ICs1NTAsNDUgQEAgY2xh
c3MgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbyA6IHB1YmxpYyBQYXJhbWV0ZXJpemVkVGVzdENh
c2VJbmZvQmFzZSB7CiAgICAgICBmb3IgKHR5cGVuYW1lIEluc3RhbnRpYXRpb25Db250YWluZXI6
Oml0ZXJhdG9yIGdlbl9pdCA9CiAgICAgICAgICAgICAgICBpbnN0YW50aWF0aW9uc18uYmVnaW4o
KTsgZ2VuX2l0ICE9IGluc3RhbnRpYXRpb25zXy5lbmQoKTsKICAgICAgICAgICAgICAgICsrZ2Vu
X2l0KSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgaW5zdGFudGlhdGlvbl9uYW1lID0gZ2VuX2l0
LT5maXJzdDsKLSAgICAgICAgUGFyYW1HZW5lcmF0b3I8UGFyYW1UeXBlPiBnZW5lcmF0b3IoKCpn
ZW5faXQtPnNlY29uZCkoKSk7CisgICAgICAgIGNvbnN0IHN0cmluZyYgaW5zdGFudGlhdGlvbl9u
YW1lID0gZ2VuX2l0LT5uYW1lOworICAgICAgICBQYXJhbUdlbmVyYXRvcjxQYXJhbVR5cGU+IGdl
bmVyYXRvcigoKmdlbl9pdC0+Z2VuZXJhdG9yKSgpKTsKKyAgICAgICAgUGFyYW1OYW1lR2VuZXJh
dG9yRnVuYyogbmFtZV9mdW5jID0gZ2VuX2l0LT5uYW1lX2Z1bmM7CisgICAgICAgIGNvbnN0IGNo
YXIqIGZpbGUgPSBnZW5faXQtPmZpbGU7CisgICAgICAgIGludCBsaW5lID0gZ2VuX2l0LT5saW5l
OwogCi0gICAgICAgIE1lc3NhZ2UgdGVzdF9jYXNlX25hbWVfc3RyZWFtOworICAgICAgICBzdHJp
bmcgdGVzdF9jYXNlX25hbWU7CiAgICAgICAgIGlmICggIWluc3RhbnRpYXRpb25fbmFtZS5lbXB0
eSgpICkKLSAgICAgICAgICB0ZXN0X2Nhc2VfbmFtZV9zdHJlYW0gPDwgaW5zdGFudGlhdGlvbl9u
YW1lLmNfc3RyKCkgPDwgIi8iOwotICAgICAgICB0ZXN0X2Nhc2VfbmFtZV9zdHJlYW0gPDwgdGVz
dF9pbmZvLT50ZXN0X2Nhc2VfYmFzZV9uYW1lLmNfc3RyKCk7CisgICAgICAgICAgdGVzdF9jYXNl
X25hbWUgPSBpbnN0YW50aWF0aW9uX25hbWUgKyAiLyI7CisgICAgICAgIHRlc3RfY2FzZV9uYW1l
ICs9IHRlc3RfaW5mby0+dGVzdF9jYXNlX2Jhc2VfbmFtZTsKIAotICAgICAgICBpbnQgaSA9IDA7
CisgICAgICAgIHNpemVfdCBpID0gMDsKKyAgICAgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IHRl
c3RfcGFyYW1fbmFtZXM7CiAgICAgICAgIGZvciAodHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8UGFy
YW1UeXBlPjo6aXRlcmF0b3IgcGFyYW1faXQgPQogICAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
YmVnaW4oKTsKICAgICAgICAgICAgICBwYXJhbV9pdCAhPSBnZW5lcmF0b3IuZW5kKCk7ICsrcGFy
YW1faXQsICsraSkgewogICAgICAgICAgIE1lc3NhZ2UgdGVzdF9uYW1lX3N0cmVhbTsKLSAgICAg
ICAgICB0ZXN0X25hbWVfc3RyZWFtIDw8IHRlc3RfaW5mby0+dGVzdF9iYXNlX25hbWUuY19zdHIo
KSA8PCAiLyIgPDwgaTsKLSAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpNYWtlQW5kUmVn
aXN0ZXJUZXN0SW5mbygKLSAgICAgICAgICAgICAgdGVzdF9jYXNlX25hbWVfc3RyZWFtLkdldFN0
cmluZygpLmNfc3RyKCksCisKKyAgICAgICAgICBzdGQ6OnN0cmluZyBwYXJhbV9uYW1lID0gbmFt
ZV9mdW5jKAorICAgICAgICAgICAgICBUZXN0UGFyYW1JbmZvPFBhcmFtVHlwZT4oKnBhcmFtX2l0
LCBpKSk7CisKKyAgICAgICAgICBHVEVTVF9DSEVDS18oSXNWYWxpZFBhcmFtTmFtZShwYXJhbV9u
YW1lKSkKKyAgICAgICAgICAgICAgPDwgIlBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lICciIDw8IHBh
cmFtX25hbWUKKyAgICAgICAgICAgICAgPDwgIicgaXMgaW52YWxpZCwgaW4gIiA8PCBmaWxlCisg
ICAgICAgICAgICAgIDw8ICIgbGluZSAiIDw8IGxpbmUgPDwgc3RkOjplbmRsOworCisgICAgICAg
ICAgR1RFU1RfQ0hFQ0tfKHRlc3RfcGFyYW1fbmFtZXMuY291bnQocGFyYW1fbmFtZSkgPT0gMCkK
KyAgICAgICAgICAgICAgPDwgIkR1cGxpY2F0ZSBwYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSAnIiA8
PCBwYXJhbV9uYW1lCisgICAgICAgICAgICAgIDw8ICInLCBpbiAiIDw8IGZpbGUgPDwgIiBsaW5l
ICIgPDwgbGluZSA8PCBzdGQ6OmVuZGw7CisKKyAgICAgICAgICB0ZXN0X3BhcmFtX25hbWVzLmlu
c2VydChwYXJhbV9uYW1lKTsKKworICAgICAgICAgIHRlc3RfbmFtZV9zdHJlYW0gPDwgdGVzdF9p
bmZvLT50ZXN0X2Jhc2VfbmFtZSA8PCAiLyIgPDwgcGFyYW1fbmFtZTsKKyAgICAgICAgICBNYWtl
QW5kUmVnaXN0ZXJUZXN0SW5mbygKKyAgICAgICAgICAgICAgdGVzdF9jYXNlX25hbWUuY19zdHIo
KSwKICAgICAgICAgICAgICAgdGVzdF9uYW1lX3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0cigpLAot
ICAgICAgICAgICAgICAiIiwgIC8vIHRlc3RfY2FzZV9jb21tZW50Ci0gICAgICAgICAgICAgICIi
LCAgLy8gY29tbWVudDsgVE9ETyh2bGFkbEBnb29nbGUuY29tKTogcHJvdmlkZSBwYXJhbWV0ZXIg
dmFsdWUKLSAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXByZXNlbnRhdGlvbi4KKyAgICAgICAgICAgICAgTlVMTCwgIC8vIE5vIHR5cGUgcGFy
YW1ldGVyLgorICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKCpwYXJhbV9pdCkuY19zdHIoKSwK
KyAgICAgICAgICAgICAgY29kZV9sb2NhdGlvbl8sCiAgICAgICAgICAgICAgIEdldFRlc3RDYXNl
VHlwZUlkKCksCiAgICAgICAgICAgICAgIFRlc3RDYXNlOjpTZXRVcFRlc3RDYXNlLAogICAgICAg
ICAgICAgICBUZXN0Q2FzZTo6VGVhckRvd25UZXN0Q2FzZSwKQEAgLTUzMCwxNyArNjA5LDUwIEBA
IGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8gOiBwdWJsaWMgUGFyYW1ldGVyaXplZFRl
c3RDYXNlSW5mb0Jhc2UgewogICAgICAgICB0ZXN0X2Jhc2VfbmFtZShhX3Rlc3RfYmFzZV9uYW1l
KSwKICAgICAgICAgdGVzdF9tZXRhX2ZhY3RvcnkoYV90ZXN0X21ldGFfZmFjdG9yeSkge30KIAot
ICAgIGNvbnN0IFN0cmluZyB0ZXN0X2Nhc2VfYmFzZV9uYW1lOwotICAgIGNvbnN0IFN0cmluZyB0
ZXN0X2Jhc2VfbmFtZTsKKyAgICBjb25zdCBzdHJpbmcgdGVzdF9jYXNlX2Jhc2VfbmFtZTsKKyAg
ICBjb25zdCBzdHJpbmcgdGVzdF9iYXNlX25hbWU7CiAgICAgY29uc3Qgc2NvcGVkX3B0cjxUZXN0
TWV0YUZhY3RvcnlCYXNlPFBhcmFtVHlwZT4gPiB0ZXN0X21ldGFfZmFjdG9yeTsKICAgfTsKICAg
dHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGxpbmtlZF9wdHI8VGVzdEluZm8+ID4gVGVzdEluZm9Db250
YWluZXI7Ci0gIC8vIEtlZXBzIHBhaXJzIG9mIDxJbnN0YW50aWF0aW9uIG5hbWUsIFNlcXVlbmNl
IGdlbmVyYXRvciBjcmVhdGlvbiBmdW5jdGlvbj4KLSAgLy8gcmVjZWl2ZWQgZnJvbSBJTlNUQU5U
SUFURV9URVNUX0NBU0VfUCBtYWNyb3MuCi0gIHR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBHZW5lcmF0b3JDcmVhdGlvbkZ1bmMqPiA+Ci0gICAgICBJbnN0YW50aWF0aW9u
Q29udGFpbmVyOworICAvLyBSZWNvcmRzIGRhdGEgcmVjZWl2ZWQgZnJvbSBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUCBtYWNyb3M6CisgIC8vICA8SW5zdGFudGlhdGlvbiBuYW1lLCBTZXF1ZW5jZSBn
ZW5lcmF0b3IgY3JlYXRpb24gZnVuY3Rpb24sCisgIC8vICAgICBOYW1lIGdlbmVyYXRvciBmdW5j
dGlvbiwgU291cmNlIGZpbGUsIFNvdXJjZSBsaW5lPgorICBzdHJ1Y3QgSW5zdGFudGlhdGlvbklu
Zm8geworICAgICAgSW5zdGFudGlhdGlvbkluZm8oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWVfaW4s
CisgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3JDcmVhdGlvbkZ1bmMqIGdlbmVyYXRv
cl9pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtTmFtZUdlbmVyYXRvckZ1bmMqIG5h
bWVfZnVuY19pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGVfaW4s
CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZV9pbikKKyAgICAgICAgICA6IG5hbWUo
bmFtZV9pbiksCisgICAgICAgICAgICBnZW5lcmF0b3IoZ2VuZXJhdG9yX2luKSwKKyAgICAgICAg
ICAgIG5hbWVfZnVuYyhuYW1lX2Z1bmNfaW4pLAorICAgICAgICAgICAgZmlsZShmaWxlX2luKSwK
KyAgICAgICAgICAgIGxpbmUobGluZV9pbikge30KKworICAgICAgc3RkOjpzdHJpbmcgbmFtZTsK
KyAgICAgIEdlbmVyYXRvckNyZWF0aW9uRnVuYyogZ2VuZXJhdG9yOworICAgICAgUGFyYW1OYW1l
R2VuZXJhdG9yRnVuYyogbmFtZV9mdW5jOworICAgICAgY29uc3QgY2hhciogZmlsZTsKKyAgICAg
IGludCBsaW5lOworICB9OworICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8SW5zdGFudGlhdGlvbklu
Zm8+IEluc3RhbnRpYXRpb25Db250YWluZXI7CisKKyAgc3RhdGljIGJvb2wgSXNWYWxpZFBhcmFt
TmFtZShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkgeworICAgIC8vIENoZWNrIGZvciBlbXB0eSBz
dHJpbmcKKyAgICBpZiAobmFtZS5lbXB0eSgpKQorICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gQ2hlY2sgZm9yIGludmFsaWQgY2hhcmFjdGVycworICAgIGZvciAoc3RkOjpzdHJpbmc6OnNp
emVfdHlwZSBpbmRleCA9IDA7IGluZGV4IDwgbmFtZS5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAg
IGlmICghaXNhbG51bShuYW1lW2luZGV4XSkgJiYgbmFtZVtpbmRleF0gIT0gJ18nKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7CisgIH0KIAotICBjb25z
dCBTdHJpbmcgdGVzdF9jYXNlX25hbWVfOworICBjb25zdCBzdHJpbmcgdGVzdF9jYXNlX25hbWVf
OworICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbl87CiAgIFRlc3RJbmZvQ29udGFpbmVyIHRl
c3RzXzsKICAgSW5zdGFudGlhdGlvbkNvbnRhaW5lciBpbnN0YW50aWF0aW9uc187CiAKQEAgLTU2
OCw4ICs2ODAsNyBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSB7CiAgIHRl
bXBsYXRlIDxjbGFzcyBUZXN0Q2FzZT4KICAgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbzxUZXN0
Q2FzZT4qIEdldFRlc3RDYXNlUGF0dGVybkhvbGRlcigKICAgICAgIGNvbnN0IGNoYXIqIHRlc3Rf
Y2FzZV9uYW1lLAotICAgICAgY29uc3QgY2hhciogZmlsZSwKLSAgICAgIGludCBsaW5lKSB7Cisg
ICAgICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbikgewogICAgIFBhcmFtZXRlcml6ZWRUZXN0
Q2FzZUluZm88VGVzdENhc2U+KiB0eXBlZF90ZXN0X2luZm8gPSBOVUxMOwogICAgIGZvciAoVGVz
dENhc2VJbmZvQ29udGFpbmVyOjppdGVyYXRvciBpdCA9IHRlc3RfY2FzZV9pbmZvc18uYmVnaW4o
KTsKICAgICAgICAgIGl0ICE9IHRlc3RfY2FzZV9pbmZvc18uZW5kKCk7ICsraXQpIHsKQEAgLTU3
OCw4ICs2ODksOCBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSB7CiAgICAg
ICAgICAgLy8gQ29tcGxhaW4gYWJvdXQgaW5jb3JyZWN0IHVzYWdlIG9mIEdvb2dsZSBUZXN0IGZh
Y2lsaXRpZXMKICAgICAgICAgICAvLyBhbmQgdGVybWluYXRlIHRoZSBwcm9ncmFtIHNpbmNlIHdl
IGNhbm5vdCBndWFyYW50eSBjb3JyZWN0CiAgICAgICAgICAgLy8gdGVzdCBjYXNlIHNldHVwIGFu
ZCB0ZWFyLWRvd24gaW4gdGhpcyBjYXNlLgotICAgICAgICAgIFJlcG9ydEludmFsaWRUZXN0Q2Fz
ZVR5cGUodGVzdF9jYXNlX25hbWUsICBmaWxlLCBsaW5lKTsKLSAgICAgICAgICBhYm9ydCgpOwor
ICAgICAgICAgIFJlcG9ydEludmFsaWRUZXN0Q2FzZVR5cGUodGVzdF9jYXNlX25hbWUsIGNvZGVf
bG9jYXRpb24pOworICAgICAgICAgIHBvc2l4OjpBYm9ydCgpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UgYXJlIHN1cmUgdGhhdCB0aGUgb2JqZWN0IHdl
IGZvdW5kIGlzIG9mIHRoZSBzYW1lCiAgICAgICAgICAgLy8gdHlwZSB3ZSBhcmUgbG9va2luZyBm
b3IsIHNvIHdlIGRvd25jYXN0IGl0IHRvIHRoYXQgdHlwZQpAQCAtNTkxLDcgKzcwMiw4IEBAIGNs
YXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IHsKICAgICAgIH0KICAgICB9CiAgICAg
aWYgKHR5cGVkX3Rlc3RfaW5mbyA9PSBOVUxMKSB7Ci0gICAgICB0eXBlZF90ZXN0X2luZm8gPSBu
ZXcgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbzxUZXN0Q2FzZT4odGVzdF9jYXNlX25hbWUpOwor
ICAgICAgdHlwZWRfdGVzdF9pbmZvID0gbmV3IFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm88VGVz
dENhc2U+KAorICAgICAgICAgIHRlc3RfY2FzZV9uYW1lLCBjb2RlX2xvY2F0aW9uKTsKICAgICAg
IHRlc3RfY2FzZV9pbmZvc18ucHVzaF9iYWNrKHR5cGVkX3Rlc3RfaW5mbyk7CiAgICAgfQogICAg
IHJldHVybiB0eXBlZF90ZXN0X2luZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LWFyY2guaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43NGFiOTQ5MDU3YzczNGZhNDkxODhlOGQ2YmM0ZTc0YmU5MTBkYzBkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC1wb3J0LWFyY2guaApAQCAtMCwwICsxLDkzIEBACisvLyBDb3B5cmlnaHQgMjAx
NSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gVGhlIEdvb2dsZSBDKysgVGVzdGlu
ZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8KKy8vIFRoaXMgaGVhZGVyIGZpbGUgZGVmaW5l
cyB0aGUgR1RFU1RfT1NfKiBtYWNyby4KKy8vIEl0IGlzIHNlcGFyYXRlIGZyb20gZ3Rlc3QtcG9y
dC5oIHNvIHRoYXQgY3VzdG9tL2d0ZXN0LXBvcnQuaCBjYW4gaW5jbHVkZSBpdC4KKworI2lmbmRl
ZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRfQVJDSF9IXworI2RlZmlu
ZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRfQVJDSF9IXworCisvLyBE
ZXRlcm1pbmVzIHRoZSBwbGF0Zm9ybSBvbiB3aGljaCBHb29nbGUgVGVzdCBpcyBjb21waWxlZC4K
KyNpZmRlZiBfX0NZR1dJTl9fCisjIGRlZmluZSBHVEVTVF9PU19DWUdXSU4gMQorI2VsaWYgZGVm
aW5lZCBfX1NZTUJJQU4zMl9fCisjIGRlZmluZSBHVEVTVF9PU19TWU1CSUFOIDEKKyNlbGlmIGRl
ZmluZWQgX1dJTjMyCisjIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTIDEKKyMgaWZkZWYgX1dJTjMy
X1dDRQorIyAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIDEKKyMgZWxpZiBkZWZpbmVk
KF9fTUlOR1dfXykgfHwgZGVmaW5lZChfX01JTkdXMzJfXykKKyMgIGRlZmluZSBHVEVTVF9PU19X
SU5ET1dTX01JTkdXIDEKKyMgZWxpZiBkZWZpbmVkKFdJTkFQSV9GQU1JTFkpCisjICBpbmNsdWRl
IDx3aW5hcGlmYW1pbHkuaD4KKyMgIGlmIFdJTkFQSV9GQU1JTFlfUEFSVElUSU9OKFdJTkFQSV9Q
QVJUSVRJT05fREVTS1RPUCkKKyMgICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19ERVNLVE9QIDEK
KyMgIGVsaWYgV0lOQVBJX0ZBTUlMWV9QQVJUSVRJT04oV0lOQVBJX1BBUlRJVElPTl9QSE9ORV9B
UFApCisjICAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfUEhPTkUgMQorIyAgZWxpZiBXSU5BUElf
RkFNSUxZX1BBUlRJVElPTihXSU5BUElfUEFSVElUSU9OX0FQUCkKKyMgICBkZWZpbmUgR1RFU1Rf
T1NfV0lORE9XU19SVCAxCisjICBlbHNlCisgICAgLy8gV0lOQVBJX0ZBTUlMWSBkZWZpbmVkIGJ1
dCBubyBrbm93biBwYXJ0aXRpb24gbWF0Y2hlZC4KKyAgICAvLyBEZWZhdWx0IHRvIGRlc2t0b3Au
CisjICAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfREVTS1RPUCAxCisjICBlbmRpZgorIyBlbHNl
CisjICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19ERVNLVE9QIDEKKyMgZW5kaWYgIC8vIF9XSU4z
Ml9XQ0UKKyNlbGlmIGRlZmluZWQgX19BUFBMRV9fCisjIGRlZmluZSBHVEVTVF9PU19NQUMgMQor
IyBpZiBUQVJHRVRfT1NfSVBIT05FCisjICBkZWZpbmUgR1RFU1RfT1NfSU9TIDEKKyMgZW5kaWYK
KyNlbGlmIGRlZmluZWQgX19GcmVlQlNEX18KKyMgZGVmaW5lIEdURVNUX09TX0ZSRUVCU0QgMQor
I2VsaWYgZGVmaW5lZCBfX2xpbnV4X18KKyMgZGVmaW5lIEdURVNUX09TX0xJTlVYIDEKKyMgaWYg
ZGVmaW5lZCBfX0FORFJPSURfXworIyAgZGVmaW5lIEdURVNUX09TX0xJTlVYX0FORFJPSUQgMQor
IyBlbmRpZgorI2VsaWYgZGVmaW5lZCBfX01WU19fCisjIGRlZmluZSBHVEVTVF9PU19aT1MgMQor
I2VsaWYgZGVmaW5lZChfX3N1bikgJiYgZGVmaW5lZChfX1NWUjQpCisjIGRlZmluZSBHVEVTVF9P
U19TT0xBUklTIDEKKyNlbGlmIGRlZmluZWQoX0FJWCkKKyMgZGVmaW5lIEdURVNUX09TX0FJWCAx
CisjZWxpZiBkZWZpbmVkKF9faHB1eCkKKyMgZGVmaW5lIEdURVNUX09TX0hQVVggMQorI2VsaWYg
ZGVmaW5lZCBfX25hdGl2ZV9jbGllbnRfXworIyBkZWZpbmUgR1RFU1RfT1NfTkFDTCAxCisjZWxp
ZiBkZWZpbmVkIF9fT3BlbkJTRF9fCisjIGRlZmluZSBHVEVTVF9PU19PUEVOQlNEIDEKKyNlbGlm
IGRlZmluZWQgX19RTlhfXworIyBkZWZpbmUgR1RFU1RfT1NfUU5YIDEKKyNlbmRpZiAgLy8gX19D
WUdXSU5fXworCisjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1Rf
UE9SVF9BUkNIX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oCmluZGV4IGUyOWZkZTE0MWEzZGQzMjc4
NDVkODEzZWY3YTI1MDA4YzY4OTJkZWEuLjAwOTRlZDUwNzdlNjlhNTlhZmMzZjUzNWM5ZGNmYzQw
M2IzMWZiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oCkBAIC0zMCwxNSArMzAsNDMgQEAKIC8v
IEF1dGhvcnM6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAvLwogLy8gTG93LWxldmVs
IHR5cGVzIGFuZCB1dGlsaXRpZXMgZm9yIHBvcnRpbmcgR29vZ2xlIFRlc3QgdG8gdmFyaW91cwot
Ly8gcGxhdGZvcm1zLiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2Uu
ICBETyBOT1QgVVNFCi0vLyBUSEVNIElOIFVTRVIgQ09ERS4KKy8vIHBsYXRmb3Jtcy4gIEFsbCBt
YWNyb3MgZW5kaW5nIHdpdGggXyBhbmQgc3ltYm9scyBkZWZpbmVkIGluIGFuCisvLyBpbnRlcm5h
bCBuYW1lc3BhY2UgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLiAgQ29kZQor
Ly8gb3V0c2lkZSBHb29nbGUgVGVzdCBNVVNUIE5PVCBVU0UgVEhFTSBESVJFQ1RMWS4gIE1hY3Jv
cyB0aGF0IGRvbid0CisvLyBlbmQgd2l0aCBfIGFyZSBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MgcHVi
bGljIEFQSSBhbmQgY2FuIGJlIHVzZWQgYnkKKy8vIGNvZGUgb3V0c2lkZSBHb29nbGUgVGVzdC4K
Ky8vCisvLyBUaGlzIGZpbGUgaXMgZnVuZGFtZW50YWwgdG8gR29vZ2xlIFRlc3QuICBBbGwgb3Ro
ZXIgR29vZ2xlIFRlc3Qgc291cmNlCisvLyBmaWxlcyBhcmUgZXhwZWN0ZWQgdG8gI2luY2x1ZGUg
dGhpcy4gIFRoZXJlZm9yZSwgaXQgY2Fubm90ICNpbmNsdWRlCisvLyBhbnkgb3RoZXIgR29vZ2xl
IFRlc3QgaGVhZGVyLgogCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RF
U1RfUE9SVF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BP
UlRfSF8KIAotLy8gVGhlIHVzZXIgY2FuIGRlZmluZSB0aGUgZm9sbG93aW5nIG1hY3JvcyBpbiB0
aGUgYnVpbGQgc2NyaXB0IHRvCi0vLyBjb250cm9sIEdvb2dsZSBUZXN0J3MgYmVoYXZpb3IuICBJ
ZiB0aGUgdXNlciBkb2Vzbid0IGRlZmluZSBhIG1hY3JvCi0vLyBpbiB0aGlzIGxpc3QsIEdvb2ds
ZSBUZXN0IHdpbGwgZGVmaW5lIGl0LgorLy8gRW52aXJvbm1lbnQtZGVzY3JpYmluZyBtYWNyb3MK
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gR29vZ2xlIFRlc3QgY2Fu
IGJlIHVzZWQgaW4gbWFueSBkaWZmZXJlbnQgZW52aXJvbm1lbnRzLiAgTWFjcm9zIGluCisvLyB0
aGlzIHNlY3Rpb24gdGVsbCBHb29nbGUgVGVzdCB3aGF0IGtpbmQgb2YgZW52aXJvbm1lbnQgaXQg
aXMgYmVpbmcKKy8vIHVzZWQgaW4sIHN1Y2ggdGhhdCBHb29nbGUgVGVzdCBjYW4gcHJvdmlkZSBl
bnZpcm9ubWVudC1zcGVjaWZpYworLy8gZmVhdHVyZXMgYW5kIGltcGxlbWVudGF0aW9ucy4KKy8v
CisvLyBHb29nbGUgVGVzdCB0cmllcyB0byBhdXRvbWF0aWNhbGx5IGRldGVjdCB0aGUgcHJvcGVy
dGllcyBvZiBpdHMKKy8vIGVudmlyb25tZW50LCBzbyB1c2VycyB1c3VhbGx5IGRvbid0IG5lZWQg
dG8gd29ycnkgYWJvdXQgdGhlc2UKKy8vIG1hY3Jvcy4gIEhvd2V2ZXIsIHRoZSBhdXRvbWF0aWMg
ZGV0ZWN0aW9uIGlzIG5vdCBwZXJmZWN0LgorLy8gU29tZXRpbWVzIGl0J3MgbmVjZXNzYXJ5IGZv
ciBhIHVzZXIgdG8gZGVmaW5lIHNvbWUgb2YgdGhlIGZvbGxvd2luZworLy8gbWFjcm9zIGluIHRo
ZSBidWlsZCBzY3JpcHQgdG8gb3ZlcnJpZGUgR29vZ2xlIFRlc3QncyBkZWNpc2lvbnMuCisvLwor
Ly8gSWYgdGhlIHVzZXIgZG9lc24ndCBkZWZpbmUgYSBtYWNybyBpbiB0aGUgbGlzdCwgR29vZ2xl
IFRlc3Qgd2lsbAorLy8gcHJvdmlkZSBhIGRlZmF1bHQgZGVmaW5pdGlvbi4gIEFmdGVyIHRoaXMg
aGVhZGVyIGlzICNpbmNsdWRlZCwgYWxsCisvLyBtYWNyb3MgaW4gdGhpcyBsaXN0IHdpbGwgYmUg
ZGVmaW5lZCB0byBlaXRoZXIgMSBvciAwLgorLy8KKy8vIE5vdGVzIHRvIG1haW50YWluZXJzOgor
Ly8gICAtIEVhY2ggbWFjcm8gaGVyZSBpcyBhIHVzZXItdHdlYWthYmxlIGtub2I7IGRvIG5vdCBn
cm93IHRoZSBsaXN0CisvLyAgICAgbGlnaHRseS4KKy8vICAgLSBVc2UgI2lmIHRvIGtleSBvZmYg
dGhlc2UgbWFjcm9zLiAgRG9uJ3QgdXNlICNpZmRlZiBvciAiI2lmCisvLyAgICAgZGVmaW5lZCgu
Li4pIiwgd2hpY2ggd2lsbCBub3Qgd29yayBhcyB0aGVzZSBtYWNyb3MgYXJlIEFMV0FZUworLy8g
ICAgIGRlZmluZWQuCiAvLwogLy8gICBHVEVTVF9IQVNfQ0xPTkUgICAgICAgICAgLSBEZWZpbmUg
aXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgY2xvbmUoMikKIC8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlLgpAQCAtNTAsNiArNzgsOCBAQAogLy8gICBH
VEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRo
YXQgOjpzdHJpbmcKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZh
aWxhYmxlIChzb21lIHN5c3RlbXMgZGVmaW5lCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDo6d3N0cmluZywgd2hpY2ggaXMgZGlmZmVyZW50IHRvIHN0ZDo6d3N0cmluZykuCisvLyAg
IEdURVNUX0hBU19QT1NJWF9SRSAgICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUg
dGhhdCBQT1NJWCByZWd1bGFyCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJl
c3Npb25zIGFyZS9hcmVuJ3QgYXZhaWxhYmxlLgogLy8gICBHVEVTVF9IQVNfUFRIUkVBRCAgICAg
ICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgPHB0aHJlYWQuaD4KIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlLgogLy8gICBHVEVT
VF9IQVNfUlRUSSAgICAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQg
UlRUSSBpcy9pc24ndApAQCAtNjIsMTAgKzkyLDE2IEBACiAvLyAgIEdURVNUX0hBU19TRUggICAg
ICAgICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUKIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIgc3VwcG9ydHMgTWljcm9zb2Z0J3Mg
IlN0cnVjdHVyZWQKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uIEhh
bmRsaW5nIi4KKy8vICAgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgorLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHdoZXRoZXIg
dGhlCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtIHN1cHBvcnRzIEkv
TyBzdHJlYW0gcmVkaXJlY3Rpb24gdXNpbmcKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZHVwKCkgYW5kIGR1cDIoKS4KIC8vICAgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgIC0gRGVm
aW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB3aGV0aGVyIEdvb2dsZQogLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXN0J3Mgb3duIHRyMSB0dXBsZSBpbXBsZW1lbnRhdGlvbiBzaG91
bGQgYmUKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZC4gIFVudXNlZCB3aGVu
IHRoZSB1c2VyIHNldHMKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfSEFT
X1RSMV9UVVBMRSB0byAwLgorLy8gICBHVEVTVF9MQU5HX0NYWDExICAgICAgICAgLSBEZWZpbmUg
aXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgR29vZ2xlIFRlc3QKKy8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaXMgYnVpbGRpbmcgaW4gQysrMTEvQysrOTggbW9kZS4KIC8vICAgR1RF
U1RfTElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtIERlZmluZSB0byAxIHdoZW4gY29tcGlsaW5nIHRlc3RzIHRoYXQgdXNlCiAvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdvb2dsZSBUZXN0IGFzIGEgc2hhcmVkIGxpYnJhcnkgKGtu
b3duIGFzCkBAIC03NCwyMiArMTEwLDM0IEBACiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtIERlZmluZSB0byAxIHdoZW4gY29tcGlsaW5nIEdvb2dsZSBUZXN0IGl0c2VsZgogLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBhIHNoYXJlZCBsaWJyYXJ5LgogCi0vLyBUaGlz
IGhlYWRlciBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgdXRpbGl0aWVzOgorLy8gUGxhdGZvcm0taW5k
aWNhdGluZyBtYWNyb3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWFj
cm9zIGluZGljYXRpbmcgdGhlIHBsYXRmb3JtIG9uIHdoaWNoIEdvb2dsZSBUZXN0IGlzIGJlaW5n
IHVzZWQKKy8vIChhIG1hY3JvIGlzIGRlZmluZWQgdG8gMSBpZiBjb21waWxlZCBvbiB0aGUgZ2l2
ZW4gcGxhdGZvcm07CisvLyBvdGhlcndpc2UgVU5ERUZJTkVEIC0tIGl0J3MgbmV2ZXIgZGVmaW5l
ZCB0byAwLikuICBHb29nbGUgVGVzdAorLy8gZGVmaW5lcyB0aGVzZSBtYWNyb3MgYXV0b21hdGlj
YWxseS4gIENvZGUgb3V0c2lkZSBHb29nbGUgVGVzdCBNVVNUCisvLyBOT1QgZGVmaW5lIHRoZW0u
CiAvLwotLy8gTWFjcm9zIGluZGljYXRpbmcgdGhlIGN1cnJlbnQgcGxhdGZvcm0gKGRlZmluZWQg
dG8gMSBpZiBjb21waWxlZCBvbgotLy8gdGhlIGdpdmVuIHBsYXRmb3JtOyBvdGhlcndpc2UgdW5k
ZWZpbmVkKToKIC8vICAgR1RFU1RfT1NfQUlYICAgICAgLSBJQk0gQUlYCiAvLyAgIEdURVNUX09T
X0NZR1dJTiAgIC0gQ3lnd2luCi0vLyAgIEdURVNUX09TX0xJTlVYICAgIC0gTGludXgKIC8vICAg
R1RFU1RfT1NfRlJFRUJTRCAgLSBGcmVlQlNECi0vLyAgIEdURVNUX09TX0hVUkQgICAgIC0gR05V
L0h1cmQKKy8vICAgR1RFU1RfT1NfSFBVWCAgICAgLSBIUC1VWAorLy8gICBHVEVTVF9PU19MSU5V
WCAgICAtIExpbnV4CisvLyAgICAgR1RFU1RfT1NfTElOVVhfQU5EUk9JRCAtIEdvb2dsZSBBbmRy
b2lkCiAvLyAgIEdURVNUX09TX01BQyAgICAgIC0gTWFjIE9TIFgKKy8vICAgICBHVEVTVF9PU19J
T1MgICAgLSBpT1MKKy8vICAgR1RFU1RfT1NfTkFDTCAgICAgLSBHb29nbGUgTmF0aXZlIENsaWVu
dCAoTmFDbCkKKy8vICAgR1RFU1RfT1NfT1BFTkJTRCAgLSBPcGVuQlNECisvLyAgIEdURVNUX09T
X1FOWCAgICAgIC0gUU5YCiAvLyAgIEdURVNUX09TX1NPTEFSSVMgIC0gU3VuIFNvbGFyaXMKIC8v
ICAgR1RFU1RfT1NfU1lNQklBTiAgLSBTeW1iaWFuCiAvLyAgIEdURVNUX09TX1dJTkRPV1MgIC0g
V2luZG93cyAoRGVza3RvcCwgTWluR1csIG9yIE1vYmlsZSkKIC8vICAgICBHVEVTVF9PU19XSU5E
T1dTX0RFU0tUT1AgIC0gV2luZG93cyBEZXNrdG9wCiAvLyAgICAgR1RFU1RfT1NfV0lORE9XU19N
SU5HVyAgICAtIE1pbkdXCiAvLyAgICAgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgICAtIFdpbmRv
d3MgTW9iaWxlCisvLyAgICAgR1RFU1RfT1NfV0lORE9XU19QSE9ORSAgICAtIFdpbmRvd3MgUGhv
bmUKKy8vICAgICBHVEVTVF9PU19XSU5ET1dTX1JUICAgICAgIC0gV2luZG93cyBTdG9yZSBBcHAv
V2luUlQKIC8vICAgR1RFU1RfT1NfWk9TICAgICAgLSB6L09TCiAvLwogLy8gQW1vbmcgdGhlIHBs
YXRmb3JtcywgQ3lnd2luLCBMaW51eCwgTWF4IE9TIFgsIGFuZCBXaW5kb3dzIGhhdmUgdGhlCkBA
IC05OSwyMCArMTQ3LDUwIEBACiAvLyBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5j
b20gKHBhdGNoZXMgZm9yIGZpeGluZyB0aGVtIGFyZQogLy8gZXZlbiBtb3JlIHdlbGNvbWUhKS4K
IC8vCi0vLyBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgdGhhdCBub25lIG9mIHRoZSBHVEVTVF9P
U18qIG1hY3JvcyBhcmUgZGVmaW5lZC4KKy8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgbm9uZSBvZiB0
aGUgR1RFU1RfT1NfKiBtYWNyb3MgYXJlIGRlZmluZWQuCisKKy8vIEZlYXR1cmUtaW5kaWNhdGlu
ZyBtYWNyb3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNYWNyb3MgaW5k
aWNhdGluZyB3aGljaCBHb29nbGUgVGVzdCBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlIChhIG1hY3Jv
CisvLyBpcyBkZWZpbmVkIHRvIDEgaWYgdGhlIGNvcnJlc3BvbmRpbmcgZmVhdHVyZSBpcyBzdXBw
b3J0ZWQ7CisvLyBvdGhlcndpc2UgVU5ERUZJTkVEIC0tIGl0J3MgbmV2ZXIgZGVmaW5lZCB0byAw
LikuICBHb29nbGUgVGVzdAorLy8gZGVmaW5lcyB0aGVzZSBtYWNyb3MgYXV0b21hdGljYWxseS4g
IENvZGUgb3V0c2lkZSBHb29nbGUgVGVzdCBNVVNUCisvLyBOT1QgZGVmaW5lIHRoZW0uCisvLwor
Ly8gVGhlc2UgbWFjcm9zIGFyZSBwdWJsaWMgc28gdGhhdCBwb3J0YWJsZSB0ZXN0cyBjYW4gYmUg
d3JpdHRlbi4KKy8vIFN1Y2ggdGVzdHMgdHlwaWNhbGx5IHN1cnJvdW5kIGNvZGUgdXNpbmcgYSBm
ZWF0dXJlIHdpdGggYW4gI2lmCisvLyB3aGljaCBjb250cm9scyB0aGF0IGNvZGUuICBGb3IgZXhh
bXBsZToKKy8vCisvLyAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKy8vICAgRVhQRUNUX0RFQVRI
KERvU29tZXRoaW5nRGVhZGx5KCkpOworLy8gI2VuZGlmCiAvLwotLy8gTWFjcm9zIGluZGljYXRp
bmcgYXZhaWxhYmxlIEdvb2dsZSBUZXN0IGZlYXR1cmVzIChkZWZpbmVkIHRvIDEgaWYKLS8vIHRo
ZSBjb3JyZXNwb25kaW5nIGZlYXR1cmUgaXMgc3VwcG9ydGVkOyBvdGhlcndpc2UgdW5kZWZpbmVk
KToKIC8vICAgR1RFU1RfSEFTX0NPTUJJTkUgICAgICAtIHRoZSBDb21iaW5lKCkgZnVuY3Rpb24g
KGZvciB2YWx1ZS1wYXJhbWV0ZXJpemVkCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0cykKIC8vICAgR1RFU1RfSEFTX0RFQVRIX1RFU1QgICAtIGRlYXRoIHRlc3RzCiAvLyAgIEdU
RVNUX0hBU19QQVJBTV9URVNUICAgLSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzCiAvLyAgIEdU
RVNUX0hBU19UWVBFRF9URVNUICAgLSB0eXBlZCB0ZXN0cwogLy8gICBHVEVTVF9IQVNfVFlQRURf
VEVTVF9QIC0gdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzCi0vLyAgIEdURVNUX1VTRVNfUE9TSVhf
UkUgICAgLSBlbmhhbmNlZCBQT1NJWCByZWdleCBpcyB1c2VkLgorLy8gICBHVEVTVF9JU19USFJF
QURTQUZFICAgIC0gR29vZ2xlIFRlc3QgaXMgdGhyZWFkLXNhZmUuCisvLyAgIEdURVNUX1VTRVNf
UE9TSVhfUkUgICAgLSBlbmhhbmNlZCBQT1NJWCByZWdleCBpcyB1c2VkLiBEbyBub3QgY29uZnVz
ZSB3aXRoCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9IQVNfUE9TSVhfUkUg
KHNlZSBhYm92ZSkgd2hpY2ggdXNlcnMgY2FuCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWZpbmUgdGhlbXNlbHZlcy4KIC8vICAgR1RFU1RfVVNFU19TSU1QTEVfUkUgICAtIG91ciBv
d24gc2ltcGxlIHJlZ2V4IGlzIHVzZWQ7CiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGUgYWJvdmUgdHdvIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCiAvLyAgIEdURVNUX0NBTl9DT01Q
QVJFX05VTEwgLSBhY2NlcHRzIHVudHlwZWQgTlVMTCBpbiBFWFBFQ1RfRVEoKS4KKworLy8gTWlz
YyBwdWJsaWMgbWFjcm9zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyAgIEdURVNUX0ZM
QUcoZmxhZ19uYW1lKSAgLSByZWZlcmVuY2VzIHRoZSB2YXJpYWJsZSBjb3JyZXNwb25kaW5nIHRv
CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZ2l2ZW4gR29vZ2xlIFRlc3QgZmxh
Zy4KKworLy8gSW50ZXJuYWwgdXRpbGl0aWVzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisv
LyBUaGUgZm9sbG93aW5nIG1hY3JvcyBhbmQgdXRpbGl0aWVzIGFyZSBmb3IgR29vZ2xlIFRlc3Qn
cyBJTlRFUk5BTAorLy8gdXNlIG9ubHkuICBDb2RlIG91dHNpZGUgR29vZ2xlIFRlc3QgTVVTVCBO
T1QgVVNFIFRIRU0gRElSRUNUTFkuCiAvLwogLy8gTWFjcm9zIGZvciBiYXNpYyBDKysgY29kaW5n
OgogLy8gICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyAtIGZvciBkaXNhYmxpbmcgYSBn
Y2Mgd2FybmluZy4KQEAgLTEyMSwyNCArMTk5LDMyIEBACiAvLyAgIEdURVNUX0RJU0FMTE9XX0FT
U0lHTl8gICAtIGRpc2FibGVzIG9wZXJhdG9yPS4KIC8vICAgR1RFU1RfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOXyAtIGRpc2FibGVzIGNvcHkgY3RvciBhbmQgb3BlcmF0b3I9LgogLy8gICBHVEVT
VF9NVVNUX1VTRV9SRVNVTFRfICAgLSBkZWNsYXJlcyB0aGF0IGEgZnVuY3Rpb24ncyByZXN1bHQg
bXVzdCBiZSB1c2VkLgorLy8gICBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BVU0hfIC0g
c3RhcnQgY29kZSBzZWN0aW9uIHdoZXJlIE1TVkMgQzQxMjcgaXMKKy8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzZWQgKGNvbnN0YW50IGNvbmRpdGlvbmFs
KS4KKy8vICAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QT1BfICAtIGZpbmlzaCBjb2Rl
IHNlY3Rpb24gd2hlcmUgTVNWQyBDNDEyNworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXMgc3VwcHJlc3NlZC4KKy8vCisvLyBDKysxMSBmZWF0dXJlIHdyYXBwZXJz
OgorLy8KKy8vICAgdGVzdGluZzo6aW50ZXJuYWw6Om1vdmUgIC0gcG9ydGFiaWxpdHkgd3JhcHBl
ciBmb3Igc3RkOjptb3ZlLgogLy8KIC8vIFN5bmNocm9uaXphdGlvbjoKIC8vICAgTXV0ZXgsIE11
dGV4TG9jaywgVGhyZWFkTG9jYWwsIEdldFRocmVhZENvdW50KCkKLS8vICAgICAgICAgICAgICAg
ICAgLSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcy4KLS8vICAgR1RFU1RfSVNfVEhSRUFEU0FG
RSAtIGRlZmluZWQgdG8gMSB0byBpbmRpY2F0ZSB0aGF0IHRoZSBhYm92ZQotLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaGF2ZSByZWFsIGltcGxl
bWVudGF0aW9ucwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIEdvb2dsZSBUZXN0IGlz
IHRocmVhZC1zYWZlOyBvciAwIG90aGVyd2lzZS4KKy8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC0gc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMuCiAvLwogLy8gVGVtcGxhdGUgbWV0YSBw
cm9ncmFtbWluZzoKIC8vICAgaXNfcG9pbnRlciAgICAgLSBhcyBpbiBUUjE7IG5lZWRlZCBvbiBT
eW1iaWFuIGFuZCBJQk0gWEwgQy9DKysgb25seS4KKy8vICAgSXRlcmF0b3JUcmFpdHMgLSBwYXJ0
aWFsIGltcGxlbWVudGF0aW9uIG9mIHN0ZDo6aXRlcmF0b3JfdHJhaXRzLCB3aGljaAorLy8gICAg
ICAgICAgICAgICAgICAgIGlzIG5vdCBhdmFpbGFibGUgaW4gbGliQ3N0ZCB3aGVuIGNvbXBpbGVk
IHdpdGggU3VuIEMrKy4KIC8vCiAvLyBTbWFydCBwb2ludGVyczoKIC8vICAgc2NvcGVkX3B0ciAg
ICAgLSBhcyBpbiBUUjIuCiAvLwogLy8gUmVndWxhciBleHByZXNzaW9uczoKIC8vICAgUkUgICAg
ICAgICAgICAgLSBhIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24gY2xhc3MgdXNpbmcgdGhlIFBP
U0lYCi0vLyAgICAgICAgICAgICAgICAgICAgRXh0ZW5kZWQgUmVndWxhciBFeHByZXNzaW9uIHN5
bnRheC4gIE5vdCBhdmFpbGFibGUgb24KLS8vICAgICAgICAgICAgICAgICAgICBXaW5kb3dzLgor
Ly8gICAgICAgICAgICAgICAgICAgIEV4dGVuZGVkIFJlZ3VsYXIgRXhwcmVzc2lvbiBzeW50YXgg
b24gVU5JWC1saWtlCisvLyAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm1zLCBvciBhIHJlZHVj
ZWQgcmVndWxhciBleGNlcHRpb24gc3ludGF4IG9uCisvLyAgICAgICAgICAgICAgICAgICAgb3Ro
ZXIgcGxhdGZvcm1zLCBpbmNsdWRpbmcgV2luZG93cy4KIC8vCiAvLyBMb2dnaW5nOgogLy8gICBH
VEVTVF9MT0dfKCkgICAtIGxvZ3MgbWVzc2FnZXMgYXQgdGhlIHNwZWNpZmllZCBzZXZlcml0eSBs
ZXZlbC4KQEAgLTE2MCwxMCArMjQ2LDkgQEAKIC8vICAgQmlnZ2VzdEludCAgICAgLSB0aGUgYmln
Z2VzdCBzaWduZWQgaW50ZWdlciB0eXBlLgogLy8KIC8vIENvbW1hbmQtbGluZSB1dGlsaXRpZXM6
Ci0vLyAgIEdURVNUX0ZMQUcoKSAgICAgICAtIHJlZmVyZW5jZXMgYSBmbGFnLgogLy8gICBHVEVT
VF9ERUNMQVJFXyooKSAgLSBkZWNsYXJlcyBhIGZsYWcuCiAvLyAgIEdURVNUX0RFRklORV8qKCkg
ICAtIGRlZmluZXMgYSBmbGFnLgotLy8gICBHZXRBcmd2cygpICAgICAgICAgLSByZXR1cm5zIHRo
ZSBjb21tYW5kIGxpbmUgYXMgYSB2ZWN0b3Igb2Ygc3RyaW5ncy4KKy8vICAgR2V0SW5qZWN0YWJs
ZUFyZ3ZzKCkgLSByZXR1cm5zIHRoZSBjb21tYW5kIGxpbmUgYXMgYSB2ZWN0b3Igb2Ygc3RyaW5n
cy4KIC8vCiAvLyBFbnZpcm9ubWVudCB2YXJpYWJsZSB1dGlsaXRpZXM6CiAvLyAgIEdldEVudigp
ICAgICAgICAgICAgIC0gZ2V0cyB0aGUgdmFsdWUgb2YgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUu
CkBAIC0xNzEsMTUxICsyNTYsMjU2IEBACiAvLyAgIEludDMyRnJvbUdUZXN0RW52KCkgIC0gcGFy
c2VzIGFuIEludDMyIGVudmlyb25tZW50IHZhcmlhYmxlLgogLy8gICBTdHJpbmdGcm9tR1Rlc3RF
bnYoKSAtIHBhcnNlcyBhIHN0cmluZyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KIAotI2luY2x1ZGUg
PHN0ZGRlZi5oPiAgLy8gRm9yIHB0cmRpZmZfdAorI2luY2x1ZGUgPGN0eXBlLmg+ICAgLy8gZm9y
IGlzc3BhY2UsIGV0YworI2luY2x1ZGUgPHN0ZGRlZi5oPiAgLy8gZm9yIHB0cmRpZmZfdAogI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+
CiAjaWZuZGVmIF9XSU4zMl9XQ0UKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgorIyBpbmNsdWRlIDxz
eXMvdHlwZXMuaD4KKyMgaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNlbmRpZiAgLy8gIV9XSU4zMl9X
Q0UKIAotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgotI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNy
b3MuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTRXhwb3J0TWFjcm9zLmg+Ci0jaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2lmIGRlZmluZWQg
X19BUFBMRV9fCisjIGluY2x1ZGUgPEF2YWlsYWJpbGl0eU1hY3Jvcy5oPgorIyBpbmNsdWRlIDxU
YXJnZXRDb25kaXRpb25hbHMuaD4KKyNlbmRpZgogCisjaW5jbHVkZSA8YWxnb3JpdGhtPiAgLy8g
Tk9MSU5UCiAjaW5jbHVkZSA8aW9zdHJlYW0+ICAvLyBOT0xJTlQKICNpbmNsdWRlIDxzc3RyZWFt
PiAgLy8gTk9MSU5UCiAjaW5jbHVkZSA8c3RyaW5nPiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8dXRp
bGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+ICAvLyBOT0xJTlQKKworI2luY2x1ZGUgImd0ZXN0L2lu
dGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2N1c3Rv
bS9ndGVzdC1wb3J0LmgiCiAKLSNkZWZpbmUgR1RFU1RfREVWX0VNQUlMXyAiZ29vZ2xldGVzdGZy
YW1ld29ya0BAZ29vZ2xlZ3JvdXBzLmNvbSIKLSNkZWZpbmUgR1RFU1RfRkxBR19QUkVGSVhfICJn
dGVzdF8iCi0jZGVmaW5lIEdURVNUX0ZMQUdfUFJFRklYX0RBU0hfICJndGVzdC0iCi0jZGVmaW5l
IEdURVNUX0ZMQUdfUFJFRklYX1VQUEVSXyAiR1RFU1RfIgotI2RlZmluZSBHVEVTVF9OQU1FXyAi
R29vZ2xlIFRlc3QiCi0jZGVmaW5lIEdURVNUX1BST0pFQ1RfVVJMXyAiaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wL2dvb2dsZXRlc3QvIgorI2lmICFkZWZpbmVkKEdURVNUX0RFVl9FTUFJTF8pCisj
IGRlZmluZSBHVEVTVF9ERVZfRU1BSUxfICJnb29nbGV0ZXN0ZnJhbWV3b3JrQEBnb29nbGVncm91
cHMuY29tIgorIyBkZWZpbmUgR1RFU1RfRkxBR19QUkVGSVhfICJndGVzdF8iCisjIGRlZmluZSBH
VEVTVF9GTEFHX1BSRUZJWF9EQVNIXyAiZ3Rlc3QtIgorIyBkZWZpbmUgR1RFU1RfRkxBR19QUkVG
SVhfVVBQRVJfICJHVEVTVF8iCisjIGRlZmluZSBHVEVTVF9OQU1FXyAiR29vZ2xlIFRlc3QiCisj
IGRlZmluZSBHVEVTVF9QUk9KRUNUX1VSTF8gImh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29v
Z2xldGVzdC8iCisjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0RFVl9FTUFJTF8pCisKKyNpZiAh
ZGVmaW5lZChHVEVTVF9JTklUX0dPT0dMRV9URVNUX05BTUVfKQorIyBkZWZpbmUgR1RFU1RfSU5J
VF9HT09HTEVfVEVTVF9OQU1FXyAidGVzdGluZzo6SW5pdEdvb2dsZVRlc3QiCisjZW5kaWYgIC8v
ICFkZWZpbmVkKEdURVNUX0lOSVRfR09PR0xFX1RFU1RfTkFNRV8pCiAKIC8vIERldGVybWluZXMg
dGhlIHZlcnNpb24gb2YgZ2NjIHRoYXQgaXMgdXNlZCB0byBjb21waWxlIHRoaXMuCiAjaWZkZWYg
X19HTlVDX18KIC8vIDQwMzAyIG1lYW5zIHZlcnNpb24gNC4zLjIuCi0jZGVmaW5lIEdURVNUX0dD
Q19WRVJfIFwKKyMgZGVmaW5lIEdURVNUX0dDQ19WRVJfIFwKICAgICAoX19HTlVDX18qMTAwMDAg
KyBfX0dOVUNfTUlOT1JfXyoxMDAgKyBfX0dOVUNfUEFUQ0hMRVZFTF9fKQogI2VuZGlmICAvLyBf
X0dOVUNfXwogCi0vLyBEZXRlcm1pbmVzIHRoZSBwbGF0Zm9ybSBvbiB3aGljaCBHb29nbGUgVGVz
dCBpcyBjb21waWxlZC4KLSNpZmRlZiBfX0NZR1dJTl9fCi0jZGVmaW5lIEdURVNUX09TX0NZR1dJ
TiAxCi0jZWxpZiBkZWZpbmVkIF9fU1lNQklBTjMyX18KLSNkZWZpbmUgR1RFU1RfT1NfU1lNQklB
TiAxCi0jZWxpZiBkZWZpbmVkIF9XSU4zMgotI2RlZmluZSBHVEVTVF9PU19XSU5ET1dTIDEKLSNp
ZmRlZiBfV0lOMzJfV0NFCi0jZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIDEKLSNlbGlm
IGRlZmluZWQoX19NSU5HV19fKSB8fCBkZWZpbmVkKF9fTUlOR1czMl9fKQotI2RlZmluZSBHVEVT
VF9PU19XSU5ET1dTX01JTkdXIDEKKy8vIE1hY3JvcyBmb3IgZGlzYWJsaW5nIE1pY3Jvc29mdCBW
aXN1YWwgQysrIHdhcm5pbmdzLgorLy8KKy8vICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1Nf
UFVTSF8oNDgwMCA0Mzg1KQorLy8gICAvKiBjb2RlIHRoYXQgdHJpZ2dlcnMgd2FybmluZ3MgQzQ4
MDAgYW5kIEM0Mzg1ICovCisvLyAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQor
I2lmIF9NU0NfVkVSID49IDE1MDAKKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdT
X1BVU0hfKHdhcm5pbmdzKSBcCisgICAgX19wcmFnbWEod2FybmluZyhwdXNoKSkgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgX19wcmFnbWEod2FybmluZyhkaXNhYmxlOiB3YXJuaW5ncykp
CisjIGRlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkgICAgICAgICAgXAor
ICAgIF9fcHJhZ21hKHdhcm5pbmcocG9wKSkKKyNlbHNlCisvLyBPbGRlciB2ZXJzaW9ucyBvZiBN
U1ZDIGRvbid0IGhhdmUgX19wcmFnbWEuCisjIGRlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19XQVJO
SU5HU19QVVNIXyh3YXJuaW5ncykKKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdT
X1BPUF8oKQorI2VuZGlmCisKKyNpZm5kZWYgR1RFU1RfTEFOR19DWFgxMQorLy8gZ2NjIGFuZCBj
bGFuZyBkZWZpbmUgX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18gd2hlbgorLy8gLXN0ZD17Yyxn
bnV9Kyt7MHgsMTF9IGlzIHBhc3NlZC4gIFRoZSBDKysxMSBzdGFuZGFyZCBzcGVjaWZpZXMgYQor
Ly8gdmFsdWUgZm9yIF9fY3BsdXNwbHVzLCBhbmQgcmVjZW50IHZlcnNpb25zIG9mIGNsYW5nLCBn
Y2MsIGFuZAorLy8gcHJvYmFibHkgb3RoZXIgY29tcGlsZXJzIHNldCB0aGF0IHRvbyBpbiBDKysx
MSBtb2RlLgorIyBpZiBfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXyB8fCBfX2NwbHVzcGx1cyA+
PSAyMDExMDNMCisvLyBDb21waWxpbmcgaW4gYXQgbGVhc3QgQysrMTEgbW9kZS4KKyMgIGRlZmlu
ZSBHVEVTVF9MQU5HX0NYWDExIDEKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0xBTkdfQ1hYMTEg
MAorIyBlbmRpZgorI2VuZGlmCisKKy8vIERpc3RpbmN0IGZyb20gQysrMTEgbGFuZ3VhZ2Ugc3Vw
cG9ydCwgc29tZSBlbnZpcm9ubWVudHMgZG9uJ3QgcHJvdmlkZQorLy8gcHJvcGVyIEMrKzExIGxp
YnJhcnkgc3VwcG9ydC4gTm90YWJseSwgaXQncyBwb3NzaWJsZSB0byBidWlsZCBpbgorLy8gQysr
MTEgbW9kZSB3aGVuIHRhcmdldGluZyBNYWMgT1MgWCAxMC42LCB3aGljaCBoYXMgYW4gb2xkIGxp
YnN0ZGMrKworLy8gd2l0aCBubyBDKysxMSBzdXBwb3J0LgorLy8KKy8vIGxpYnN0ZGMrKyBoYXMg
c3VmZmljaWVudCBDKysxMSBzdXBwb3J0IGFzIG9mIEdDQyA0LjYuMCwgX19HTElCQ1hYX18KKy8v
IDIwMTEwMzI1LCBidXQgbWFpbnRlbmFuY2UgcmVsZWFzZXMgaW4gdGhlIDQuNCBhbmQgNC41IHNl
cmllcyBmb2xsb3dlZAorLy8gdGhpcyBkYXRlLCBzbyBjaGVjayBmb3IgdGhvc2UgdmVyc2lvbnMg
YnkgdGhlaXIgZGF0ZSBzdGFtcHMuCisvLyBodHRwczovL2djYy5nbnUub3JnL29ubGluZWRvY3Mv
bGlic3RkYysrL21hbnVhbC9hYmkuaHRtbCNhYmkudmVyc2lvbmluZworI2lmIEdURVNUX0xBTkdf
Q1hYMTEgJiYgXAorICAgICghZGVmaW5lZChfX0dMSUJDWFhfXykgfHwgKCBcCisgICAgICAgIF9f
R0xJQkNYWF9fID49IDIwMTEwMzI1dWwgJiYgIC8qIEdDQyA+PSA0LjYuMCAqLyBcCisgICAgICAg
IC8qIEJsYWNrbGlzdCBvZiBwYXRjaCByZWxlYXNlcyBvZiBvbGRlciBicmFuY2hlczogKi8gXAor
ICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDExMDQxNnVsICYmICAvKiBHQ0MgNC40LjYgKi8gXAor
ICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDEyMDMxM3VsICYmICAvKiBHQ0MgNC40LjcgKi8gXAor
ICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDExMDQyOHVsICYmICAvKiBHQ0MgNC41LjMgKi8gXAor
ICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDEyMDcwMnVsKSkgICAvKiBHQ0MgNC41LjQgKi8KKyMg
ZGVmaW5lIEdURVNUX1NURExJQl9DWFgxMSAxCisjZW5kaWYKKworLy8gT25seSB1c2UgQysrMTEg
bGlicmFyeSBmZWF0dXJlcyBpZiB0aGUgbGlicmFyeSBwcm92aWRlcyB0aGVtLgorI2lmIEdURVNU
X1NURExJQl9DWFgxMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9CRUdJTl9BTkRfRU5EXyAxCisj
IGRlZmluZSBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8gMQorIyBkZWZpbmUgR1RFU1RfSEFT
X1NURF9GVU5DVElPTl8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9JTklUSUFMSVpFUl9MSVNU
XyAxCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX01PVkVfIDEKKyMgZGVmaW5lIEdURVNUX0hBU19T
VERfU0hBUkVEX1BUUl8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9UWVBFX1RSQUlUU18gMQor
IyBkZWZpbmUgR1RFU1RfSEFTX1NURF9VTklRVUVfUFRSXyAxCisjZW5kaWYKKworLy8gQysrMTEg
c3BlY2lmaWVzIHRoYXQgPHR1cGxlPiBwcm92aWRlcyBzdGQ6OnR1cGxlLgorLy8gU29tZSBwbGF0
Zm9ybXMgc3RpbGwgbWlnaHQgbm90IGhhdmUgaXQsIGhvd2V2ZXIuCisjaWYgR1RFU1RfTEFOR19D
WFgxMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9UVVBMRV8gMQorIyBpZiBkZWZpbmVkKF9fY2xh
bmdfXykKKy8vIEluc3BpcmVkIGJ5IGh0dHA6Ly9jbGFuZy5sbHZtLm9yZy9kb2NzL0xhbmd1YWdl
RXh0ZW5zaW9ucy5odG1sI19faGFzX2luY2x1ZGUKKyMgIGlmIGRlZmluZWQoX19oYXNfaW5jbHVk
ZSkgJiYgIV9faGFzX2luY2x1ZGUoPHR1cGxlPikKKyMgICB1bmRlZiBHVEVTVF9IQVNfU1REX1RV
UExFXworIyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorLy8gSW5zcGlyZWQgYnkg
Ym9vc3QvY29uZmlnL3N0ZGxpYi9kaW5rdW13YXJlLmhwcAorIyAgaWYgZGVmaW5lZChfQ1BQTElC
X1ZFUikgJiYgX0NQUExJQl9WRVIgPCA1MjAKKyMgICB1bmRlZiBHVEVTVF9IQVNfU1REX1RVUExF
XworIyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9fR0xJQkNYWF9fKQorLy8gSW5zcGlyZWQgYnkg
Ym9vc3QvY29uZmlnL3N0ZGxpYi9saWJzdGRjcHAzLmhwcCwKKy8vIGh0dHA6Ly9nY2MuZ251Lm9y
Zy9nY2MtNC4yL2NoYW5nZXMuaHRtbCBhbmQKKy8vIGh0dHA6Ly9nY2MuZ251Lm9yZy9vbmxpbmVk
b2NzL2xpYnN0ZGMrKy9tYW51YWwvYmswMXB0MDFjaDAxLmh0bWwjbWFudWFsLmludHJvLnN0YXR1
cy5zdGFuZGFyZC4yMDB4CisjICBpZiBfX0dOVUNfXyA8IDQgfHwgKF9fR05VQ19fID09IDQgJiYg
X19HTlVDX01JTk9SX18gPCAyKQorIyAgIHVuZGVmIEdURVNUX0hBU19TVERfVFVQTEVfCisjICBl
bmRpZgorIyBlbmRpZgorI2VuZGlmCisKKy8vIEJyaW5ncyBpbiBkZWZpbml0aW9ucyBmb3IgZnVu
Y3Rpb25zIHVzZWQgaW4gdGhlIHRlc3Rpbmc6OmludGVybmFsOjpwb3NpeAorLy8gbmFtZXNwYWNl
IChyZWFkLCB3cml0ZSwgY2xvc2UsIGNoZGlyLCBpc2F0dHksIHN0YXQpLiBXZSBkbyBub3QgY3Vy
cmVudGx5CisvLyB1c2UgdGhlbSBvbiBXaW5kb3dzIE1vYmlsZS4KKyNpZiBHVEVTVF9PU19XSU5E
T1dTCisjIGlmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyAgaW5jbHVkZSA8ZGlyZWN0Lmg+
CisjICBpbmNsdWRlIDxpby5oPgorIyBlbmRpZgorLy8gSW4gb3JkZXIgdG8gYXZvaWQgaGF2aW5n
IHRvIGluY2x1ZGUgPHdpbmRvd3MuaD4sIHVzZSBmb3J3YXJkIGRlY2xhcmF0aW9uCisvLyBhc3N1
bWluZyBDUklUSUNBTF9TRUNUSU9OIGlzIGEgdHlwZWRlZiBvZiBfUlRMX0NSSVRJQ0FMX1NFQ1RJ
T04uCisvLyBUaGlzIGFzc3VtcHRpb24gaXMgdmVyaWZpZWQgYnkKKy8vIFdpbmRvd3NUeXBlc1Rl
c3QuQ1JJVElDQUxfU0VDVElPTklzX1JUTF9DUklUSUNBTF9TRUNUSU9OLgorc3RydWN0IF9SVExf
Q1JJVElDQUxfU0VDVElPTjsKICNlbHNlCi0jZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfREVTS1RP
UCAxCi0jZW5kaWYgIC8vIF9XSU4zMl9XQ0UKLSNlbGlmIGRlZmluZWQgX19BUFBMRV9fCi0jZGVm
aW5lIEdURVNUX09TX01BQyAxCi0jZWxpZiBkZWZpbmVkIF9fbGludXhfXwotI2RlZmluZSBHVEVT
VF9PU19MSU5VWCAxCi0jZWxpZiBkZWZpbmVkIF9fR05VX18KLSNkZWZpbmUgR1RFU1RfT1NfSFVS
RCAxCi0jZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18p
IHx8IGRlZmluZWQoX19GcmVlQlNEX2tlcm5lbF9fKQotI2RlZmluZSBHVEVTVF9PU19GUkVFQlNE
IDEKLSNlbGlmIGRlZmluZWQgX19NVlNfXwotI2RlZmluZSBHVEVTVF9PU19aT1MgMQotI2VsaWYg
ZGVmaW5lZChfX3N1bikgJiYgZGVmaW5lZChfX1NWUjQpCi0jZGVmaW5lIEdURVNUX09TX1NPTEFS
SVMgMQotI2VsaWYgZGVmaW5lZChfQUlYKQotI2RlZmluZSBHVEVTVF9PU19BSVggMQotI2VuZGlm
ICAvLyBfX0NZR1dJTl9fCi0KLSNpZiBHVEVTVF9PU19DWUdXSU4gfHwgR1RFU1RfT1NfTElOVVgg
fHwgR1RFU1RfT1NfTUFDIHx8IEdURVNUX09TX1NZTUJJQU4gfHwgXAotICAgIEdURVNUX09TX1NP
TEFSSVMgfHwgR1RFU1RfT1NfQUlYIHx8IEdURVNUX09TX0ZSRUVCU0QgfHwgR1RFU1RfT1NfSFVS
RAorLy8gVGhpcyBhc3N1bWVzIHRoYXQgbm9uLVdpbmRvd3MgT1NlcyBwcm92aWRlIHVuaXN0ZC5o
LiBGb3IgT1NlcyB3aGVyZSB0aGlzCisvLyBpcyBub3QgdGhlIGNhc2UsIHdlIG5lZWQgdG8gaW5j
bHVkZSBoZWFkZXJzIHRoYXQgcHJvdmlkZSB0aGUgZnVuY3Rpb25zCisvLyBtZW50aW9uZWQgYWJv
dmUuCisjIGluY2x1ZGUgPHVuaXN0ZC5oPgorIyBpbmNsdWRlIDxzdHJpbmdzLmg+CisjZW5kaWYg
IC8vIEdURVNUX09TX1dJTkRPV1MKKworI2lmIEdURVNUX09TX0xJTlVYX0FORFJPSUQKKy8vIFVz
ZWQgdG8gZGVmaW5lIF9fQU5EUk9JRF9BUElfXyBtYXRjaGluZyB0aGUgdGFyZ2V0IE5ESyBBUEkg
bGV2ZWwuCisjICBpbmNsdWRlIDxhbmRyb2lkL2FwaS1sZXZlbC5oPiAgLy8gTk9MSU5UCisjZW5k
aWYKKworLy8gRGVmaW5lcyB0aGlzIHRvIHRydWUgaWZmIEdvb2dsZSBUZXN0IGNhbiB1c2UgUE9T
SVggcmVndWxhciBleHByZXNzaW9ucy4KKyNpZm5kZWYgR1RFU1RfSEFTX1BPU0lYX1JFCisjIGlm
IEdURVNUX09TX0xJTlVYX0FORFJPSUQKKy8vIE9uIEFuZHJvaWQsIDxyZWdleC5oPiBpcyBvbmx5
IGF2YWlsYWJsZSBzdGFydGluZyB3aXRoIEdpbmdlcmJyZWFkLgorIyAgZGVmaW5lIEdURVNUX0hB
U19QT1NJWF9SRSAoX19BTkRST0lEX0FQSV9fID49IDkpCisjIGVsc2UKKyMgIGRlZmluZSBHVEVT
VF9IQVNfUE9TSVhfUkUgKCFHVEVTVF9PU19XSU5ET1dTKQorIyBlbmRpZgorI2VuZGlmCisKKyNp
ZiBHVEVTVF9VU0VTX1BDUkUKKy8vIFRoZSBhcHByb3ByaWF0ZSBoZWFkZXJzIGhhdmUgYWxyZWFk
eSBiZWVuIGluY2x1ZGVkLgorCisjZWxpZiBHVEVTVF9IQVNfUE9TSVhfUkUKIAogLy8gT24gc29t
ZSBwbGF0Zm9ybXMsIDxyZWdleC5oPiBuZWVkcyBzb21lb25lIHRvIGRlZmluZSBzaXplX3QsIGFu
ZAogLy8gd29uJ3QgY29tcGlsZSBvdGhlcndpc2UuICBXZSBjYW4gI2luY2x1ZGUgaXQgaGVyZSBh
cyB3ZSBhbHJlYWR5CiAvLyBpbmNsdWRlZCA8c3RkbGliLmg+LCB3aGljaCBpcyBndWFyYW50ZWVk
IHRvIGRlZmluZSBzaXplX3QgdGhyb3VnaAogLy8gPHN0ZGRlZi5oPi4KLSNpZiBIQVZFKFJFR0VY
X0gpCi0jaW5jbHVkZSA8cmVnZXguaD4gIC8vIE5PTElOVAotI2RlZmluZSBHVEVTVF9VU0VTX1BP
U0lYX1JFIDEKLSNlbHNlCi0jZGVmaW5lIEdURVNUX1VTRVNfU0lNUExFX1JFIDEKLSNlbmRpZgot
I2luY2x1ZGUgPHN0cmluZ3MuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPiAg
Ly8gTk9MSU5UCi0jaW5jbHVkZSA8dGltZS5oPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8dW5pc3Rk
Lmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8cmVnZXguaD4gIC8vIE5PTElOVAogCisjIGRlZmlu
ZSBHVEVTVF9VU0VTX1BPU0lYX1JFIDEKIAogI2VsaWYgR1RFU1RfT1NfV0lORE9XUwogCi0jaWYg
IUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0jaW5jbHVkZSA8ZGlyZWN0Lmg+ICAvLyBOT0xJTlQK
LSNpbmNsdWRlIDxpby5oPiAgLy8gTk9MSU5UCi0jZW5kaWYKLQogLy8gPHJlZ2V4Lmg+IGlzIG5v
dCBhdmFpbGFibGUgb24gV2luZG93cy4gIFVzZSBvdXIgb3duIHNpbXBsZSByZWdleAogLy8gaW1w
bGVtZW50YXRpb24gaW5zdGVhZC4KLSNkZWZpbmUgR1RFU1RfVVNFU19TSU1QTEVfUkUgMQorIyBk
ZWZpbmUgR1RFU1RfVVNFU19TSU1QTEVfUkUgMQogCiAjZWxzZQogCiAvLyA8cmVnZXguaD4gbWF5
IG5vdCBiZSBhdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybS4gIFVzZSBvdXIgb3duCiAvLyBzaW1w
bGUgcmVnZXggaW1wbGVtZW50YXRpb24gaW5zdGVhZC4KLSNkZWZpbmUgR1RFU1RfVVNFU19TSU1Q
TEVfUkUgMQorIyBkZWZpbmUgR1RFU1RfVVNFU19TSU1QTEVfUkUgMQogCi0jZW5kaWYgIC8vIEdU
RVNUX09TX0NZR1dJTiB8fCBHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19NQUMgfHwKLSAgICAg
ICAgLy8gR1RFU1RfT1NfU1lNQklBTiB8fCBHVEVTVF9PU19TT0xBUklTIHx8IEdURVNUX09TX0FJ
WCB8fAotICAgICAgICAvLyBHVEVTVF9PU19GUkVFQlNEIHx8IEdURVNUX09TX0hVUkQKKyNlbmRp
ZiAgLy8gR1RFU1RfVVNFU19QQ1JFCiAKICNpZm5kZWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKIC8v
IFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIHdoZXRoZXIgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCwg
c28gd2UgbmVlZAogLy8gdG8gZmlndXJlIGl0IG91dC4KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSB8
fCBkZWZpbmVkKF9fQk9STEFORENfXykKKyMgaWYgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5l
ZChfX0JPUkxBTkRDX18pCiAvLyBNU1ZDJ3MgYW5kIEMrK0J1aWxkZXIncyBpbXBsZW1lbnRhdGlv
bnMgb2YgdGhlIFNUTCB1c2UgdGhlIF9IQVNfRVhDRVBUSU9OUwogLy8gbWFjcm8gdG8gZW5hYmxl
IGV4Y2VwdGlvbnMsIHNvIHdlJ2xsIGRvIHRoZSBzYW1lLgogLy8gQXNzdW1lcyB0aGF0IGV4Y2Vw
dGlvbnMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdC4KLSNpZm5kZWYgX0hBU19FWENFUFRJT05TCi0j
ZGVmaW5lIF9IQVNfRVhDRVBUSU9OUyAxCi0jZW5kaWYgIC8vIF9IQVNfRVhDRVBUSU9OUwotI2Rl
ZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyBfSEFTX0VYQ0VQVElPTlMKLSNlbGlmIGRlZmluZWQo
X19HTlVDX18pICYmIF9fRVhDRVBUSU9OUworIyAgaWZuZGVmIF9IQVNfRVhDRVBUSU9OUworIyAg
IGRlZmluZSBfSEFTX0VYQ0VQVElPTlMgMQorIyAgZW5kaWYgIC8vIF9IQVNfRVhDRVBUSU9OUwor
IyAgZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIF9IQVNfRVhDRVBUSU9OUworIyBlbGlmIGRl
ZmluZWQoX19jbGFuZ19fKQorLy8gY2xhbmcgZGVmaW5lcyBfX0VYQ0VQVElPTlMgaWZmIGV4Y2Vw
dGlvbnMgYXJlIGVuYWJsZWQgYmVmb3JlIGNsYW5nIDIyMDcxNCwKKy8vIGJ1dCBpZmYgY2xlYW51
cHMgYXJlIGVuYWJsZWQgYWZ0ZXIgdGhhdC4gSW4gT2JqLUMrKyBmaWxlcywgdGhlcmUgY2FuIGJl
CisvLyBjbGVhbnVwcyBmb3IgT2JqQyBleGNlcHRpb25zIHdoaWNoIGFsc28gbmVlZCBjbGVhbnVw
cywgZXZlbiBpZiBDKysgZXhjZXB0aW9ucworLy8gYXJlIGRpc2FibGVkLiBjbGFuZyBoYXMgX19o
YXNfZmVhdHVyZShjeHhfZXhjZXB0aW9ucykgd2hpY2ggY2hlY2tzIGZvciBDKysKKy8vIGV4Y2Vw
dGlvbnMgc3RhcnRpbmcgYXQgY2xhbmcgcjIwNjM1MiwgYnV0IHdoaWNoIGNoZWNrZWQgZm9yIGNs
ZWFudXBzIHByaW9yIHRvCisvLyB0aGF0LiBUbyByZWxpYWJseSBjaGVjayBmb3IgQysrIGV4Y2Vw
dGlvbiBhdmFpbGFiaWxpdHkgd2l0aCBjbGFuZywgY2hlY2sgZm9yCisvLyBfX0VYQ0VQVElPTlMg
JiYgX19oYXNfZmVhdHVyZShjeHhfZXhjZXB0aW9ucykuCisjICBkZWZpbmUgR1RFU1RfSEFTX0VY
Q0VQVElPTlMgKF9fRVhDRVBUSU9OUyAmJiBfX2hhc19mZWF0dXJlKGN4eF9leGNlcHRpb25zKSkK
KyMgZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0VYQ0VQVElPTlMKIC8vIGdjYyBkZWZpbmVz
IF9fRVhDRVBUSU9OUyB0byAxIGlmZiBleGNlcHRpb25zIGFyZSBlbmFibGVkLgotI2RlZmluZSBH
VEVTVF9IQVNfRVhDRVBUSU9OUyAxCi0jZWxpZiBkZWZpbmVkKF9fU1VOUFJPX0NDKQorIyAgZGVm
aW5lIEdURVNUX0hBU19FWENFUFRJT05TIDEKKyMgZWxpZiBkZWZpbmVkKF9fU1VOUFJPX0NDKQog
Ly8gU3VuIFBybyBDQyBzdXBwb3J0cyBleGNlcHRpb25zLiAgSG93ZXZlciwgdGhlcmUgaXMgbm8g
Y29tcGlsZS10aW1lIHdheSBvZgogLy8gZGV0ZWN0aW5nIHdoZXRoZXIgdGhleSBhcmUgZW5hYmxl
ZCBvciBub3QuICBUaGVyZWZvcmUsIHdlIGFzc3VtZSB0aGF0CiAvLyB0aGV5IGFyZSBlbmFibGVk
IHVubGVzcyB0aGUgdXNlciB0ZWxscyB1cyBvdGhlcndpc2UuCi0jZGVmaW5lIEdURVNUX0hBU19F
WENFUFRJT05TIDEKLSNlbGlmIGRlZmluZWQoX19JQk1DUFBfXykgJiYgX19FWENFUFRJT05TCisj
ICBkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMQorIyBlbGlmIGRlZmluZWQoX19JQk1DUFBf
XykgJiYgX19FWENFUFRJT05TCiAvLyB4bEMgZGVmaW5lcyBfX0VYQ0VQVElPTlMgdG8gMSBpZmYg
ZXhjZXB0aW9ucyBhcmUgZW5hYmxlZC4KLSNkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMQot
I2Vsc2UKKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCisjIGVsaWYgZGVmaW5lZChf
X0hQX2FDQykKKy8vIEV4Y2VwdGlvbiBoYW5kbGluZyBpcyBpbiBlZmZlY3QgYnkgZGVmYXVsdCBp
biBIUCBhQ0MgY29tcGlsZXIuIEl0IGhhcyB0bworLy8gYmUgdHVybmVkIG9mIGJ5ICtub2VoIGNv
bXBpbGVyIG9wdGlvbiBpZiBkZXNpcmVkLgorIyAgZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05T
IDEKKyMgZWxzZQogLy8gRm9yIG90aGVyIGNvbXBpbGVycywgd2UgYXNzdW1lIGV4Y2VwdGlvbnMg
YXJlIGRpc2FibGVkIHRvIGJlCiAvLyBjb25zZXJ2YXRpdmUuCi0jZGVmaW5lIEdURVNUX0hBU19F
WENFUFRJT05TIDAKLSNlbmRpZiAgLy8gZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX0JP
UkxBTkRDX18pCisjICBkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMAorIyBlbmRpZiAgLy8g
ZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pCiAjZW5kaWYgIC8vIEdU
RVNUX0hBU19FWENFUFRJT05TCiAKICNpZiAhZGVmaW5lZChHVEVTVF9IQVNfU1REX1NUUklORykK
IC8vIEV2ZW4gdGhvdWdoIHdlIGRvbid0IHVzZSB0aGlzIG1hY3JvIGFueSBsb25nZXIsIHdlIGtl
ZXAgaXQgaW4gY2FzZQogLy8gc29tZSBjbGllbnRzIHN0aWxsIGRlcGVuZCBvbiBpdC4KLSNkZWZp
bmUgR1RFU1RfSEFTX1NURF9TVFJJTkcgMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9TVFJJTkcg
MQogI2VsaWYgIUdURVNUX0hBU19TVERfU1RSSU5HCiAvLyBUaGUgdXNlciB0b2xkIHVzIHRoYXQg
OjpzdGQ6OnN0cmluZyBpc24ndCBhdmFpbGFibGUuCi0jZXJyb3IgIkdvb2dsZSBUZXN0IGNhbm5v
dCBiZSB1c2VkIHdoZXJlIDo6c3RkOjpzdHJpbmcgaXNuJ3QgYXZhaWxhYmxlLiIKKyMgZXJyb3Ig
Ikdvb2dsZSBUZXN0IGNhbm5vdCBiZSB1c2VkIHdoZXJlIDo6c3RkOjpzdHJpbmcgaXNuJ3QgYXZh
aWxhYmxlLiIKICNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfSEFTX1NURF9TVFJJTkcpCiAKICNp
Zm5kZWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVz
IHdoZXRoZXIgOjpzdHJpbmcgaXMgYXZhaWxhYmxlLCBzbyB3ZSBuZWVkCiAvLyB0byBmaWd1cmUg
aXQgb3V0LgogCi0jZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HIDAKKyMgZGVmaW5lIEdU
RVNUX0hBU19HTE9CQUxfU1RSSU5HIDAKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NU
UklORwogCkBAIC0zMjUsMTcgKzUxNSwxOCBAQAogLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHVz
ZXMgYXV0b2NvbmYgdG8gZGV0ZWN0IHdoZXRoZXIgOjpzdGQ6OndzdHJpbmcKIC8vICAgaXMgYXZh
aWxhYmxlLgogCi0vLyBDeWd3aW4gMS41IGFuZCBiZWxvdyBkb2Vzbid0IHN1cHBvcnQgOjpzdGQ6
OndzdHJpbmcuCi0vLyBDeWd3aW4gMS43IG1pZ2h0IGFkZCB3c3RyaW5nIHN1cHBvcnQ7IHRoaXMg
c2hvdWxkIGJlIHVwZGF0ZWQgd2hlbiBjbGVhci4KLS8vIFNvbGFyaXMnIGxpYmMrKyBkb2Vzbid0
IHN1cHBvcnQgaXQgZWl0aGVyLgotI2RlZmluZSBHVEVTVF9IQVNfU1REX1dTVFJJTkcgKCEoR1RF
U1RfT1NfQ1lHV0lOIHx8IEdURVNUX09TX1NPTEFSSVMpKQorLy8gQ3lnd2luIDEuNyBhbmQgYmVs
b3cgZG9lc24ndCBzdXBwb3J0IDo6c3RkOjp3c3RyaW5nLgorLy8gU29sYXJpcycgbGliYysrIGRv
ZXNuJ3Qgc3VwcG9ydCBpdCBlaXRoZXIuICBBbmRyb2lkIGhhcworLy8gbm8gc3VwcG9ydCBmb3Ig
aXQgYXQgbGVhc3QgYXMgcmVjZW50IGFzIEZyb3lvICgyLjIpLgorIyBkZWZpbmUgR1RFU1RfSEFT
X1NURF9XU1RSSU5HIFwKKyAgICAoIShHVEVTVF9PU19MSU5VWF9BTkRST0lEIHx8IEdURVNUX09T
X0NZR1dJTiB8fCBHVEVTVF9PU19TT0xBUklTKSkKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RE
X1dTVFJJTkcKIAogI2lmbmRlZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKIC8vIFRoZSB1c2Vy
IGRpZG4ndCB0ZWxsIHVzIHdoZXRoZXIgOjp3c3RyaW5nIGlzIGF2YWlsYWJsZSwgc28gd2UgbmVl
ZAogLy8gdG8gZmlndXJlIGl0IG91dC4KLSNkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5H
IFwKKyMgZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfV1NUUklORyBcCiAgICAgKEdURVNUX0hBU19T
VERfV1NUUklORyAmJiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORykKICNlbmRpZiAgLy8gR1RFU1Rf
SEFTX0dMT0JBTF9XU1RSSU5HCiAKQEAgLTM0NCw2NCArNTM1LDEwNCBAQAogLy8gVGhlIHVzZXIg
ZGlkbid0IHRlbGwgdXMgd2hldGhlciBSVFRJIGlzIGVuYWJsZWQsIHNvIHdlIG5lZWQgdG8KIC8v
IGZpZ3VyZSBpdCBvdXQuCiAKLSNpZmRlZiBfTVNDX1ZFUgorIyBpZmRlZiBfTVNDX1ZFUgogCi0j
aWZkZWYgX0NQUFJUVEkgIC8vIE1TVkMgZGVmaW5lcyB0aGlzIG1hY3JvIGlmZiBSVFRJIGlzIGVu
YWJsZWQuCi0jZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKLSNlbHNlCi0jZGVmaW5lIEdURVNUX0hB
U19SVFRJIDAKLSNlbmRpZgorIyAgaWZkZWYgX0NQUFJUVEkgIC8vIE1TVkMgZGVmaW5lcyB0aGlz
IG1hY3JvIGlmZiBSVFRJIGlzIGVuYWJsZWQuCisjICAgZGVmaW5lIEdURVNUX0hBU19SVFRJIDEK
KyMgIGVsc2UKKyMgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAorIyAgZW5kaWYKIAogLy8gU3Rh
cnRpbmcgd2l0aCB2ZXJzaW9uIDQuMy4yLCBnY2MgZGVmaW5lcyBfX0dYWF9SVFRJIGlmZiBSVFRJ
IGlzIGVuYWJsZWQuCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoR1RFU1RfR0NDX1ZFUl8g
Pj0gNDAzMDIpCi0KLSNpZmRlZiBfX0dYWF9SVFRJCi0jZGVmaW5lIEdURVNUX0hBU19SVFRJIDEK
LSNlbHNlCi0jZGVmaW5lIEdURVNUX0hBU19SVFRJIDAKLSNlbmRpZiAgLy8gX19HWFhfUlRUSQor
IyBlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSA0MDMwMikKKwor
IyAgaWZkZWYgX19HWFhfUlRUSQorLy8gV2hlbiBidWlsZGluZyBhZ2FpbnN0IFNUTHBvcnQgd2l0
aCB0aGUgQW5kcm9pZCBOREsgYW5kIHdpdGgKKy8vIC1mcnR0aSAtZm5vLWV4Y2VwdGlvbnMsIHRo
ZSBidWlsZCBmYWlscyBhdCBsaW5rIHRpbWUgd2l0aCB1bmRlZmluZWQKKy8vIHJlZmVyZW5jZXMg
dG8gX19jeGFfYmFkX3R5cGVpZC4gTm90ZSBzdXJlIGlmIFNUTCBvciB0b29sY2hhaW4gYnVnLAor
Ly8gc28gZGlzYWJsZSBSVFRJIHdoZW4gZGV0ZWN0ZWQuCisjICAgaWYgR1RFU1RfT1NfTElOVVhf
QU5EUk9JRCAmJiBkZWZpbmVkKF9TVExQT1JUX01BSk9SKSAmJiBcCisgICAgICAgIWRlZmluZWQo
X19FWENFUFRJT05TKQorIyAgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAorIyAgIGVsc2UKKyMg
ICAgZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKKyMgICBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVhf
QU5EUk9JRCAmJiBfX1NUTFBPUlRfTUFKT1IgJiYgIV9fRVhDRVBUSU9OUworIyAgZWxzZQorIyAg
IGRlZmluZSBHVEVTVF9IQVNfUlRUSSAwCisjICBlbmRpZiAgLy8gX19HWFhfUlRUSQorCisvLyBD
bGFuZyBkZWZpbmVzIF9fR1hYX1JUVEkgc3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDMuMCwgYnV0IGl0
cyBtYW51YWwgcmVjb21tZW5kcworLy8gdXNpbmcgaGFzX2ZlYXR1cmUgaW5zdGVhZC4gaGFzX2Zl
YXR1cmUoY3h4X3J0dGkpIGlzIHN1cHBvcnRlZCBzaW5jZSAyLjcsIHRoZQorLy8gZmlyc3QgdmVy
c2lvbiB3aXRoIEMrKyBzdXBwb3J0LgorIyBlbGlmIGRlZmluZWQoX19jbGFuZ19fKQorCisjICBk
ZWZpbmUgR1RFU1RfSEFTX1JUVEkgX19oYXNfZmVhdHVyZShjeHhfcnR0aSkKIAogLy8gU3RhcnRp
bmcgd2l0aCB2ZXJzaW9uIDkuMCBJQk0gVmlzdWFsIEFnZSBkZWZpbmVzIF9fUlRUSV9BTExfXyB0
byAxIGlmCiAvLyBib3RoIHRoZSB0eXBlaWQgYW5kIGR5bmFtaWNfY2FzdCBmZWF0dXJlcyBhcmUg
cHJlc2VudC4KLSNlbGlmIGRlZmluZWQoX19JQk1DUFBfXykgJiYgKF9fSUJNQ1BQX18gPj0gOTAw
KQorIyBlbGlmIGRlZmluZWQoX19JQk1DUFBfXykgJiYgKF9fSUJNQ1BQX18gPj0gOTAwKQogCi0j
aWZkZWYgX19SVFRJX0FMTF9fCi0jZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKLSNlbHNlCi0jZGVm
aW5lIEdURVNUX0hBU19SVFRJIDAKLSNlbmRpZgorIyAgaWZkZWYgX19SVFRJX0FMTF9fCisjICAg
ZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKKyMgIGVsc2UKKyMgICBkZWZpbmUgR1RFU1RfSEFTX1JU
VEkgMAorIyAgZW5kaWYKIAotI2Vsc2UKKyMgZWxzZQogCiAvLyBGb3IgYWxsIG90aGVyIGNvbXBp
bGVycywgd2UgYXNzdW1lIFJUVEkgaXMgZW5hYmxlZC4KLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkg
MQorIyAgZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKIAotI2VuZGlmICAvLyBfTVNDX1ZFUgorIyBl
bmRpZiAgLy8gX01TQ19WRVIKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfUlRUSQogCiAvLyBJdCdz
IHRoaXMgaGVhZGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gI2luY2x1ZGUgPHR5cGVpbmZvPiB3aGVu
IFJUVEkKIC8vIGlzIGVuYWJsZWQuCiAjaWYgR1RFU1RfSEFTX1JUVEkKLSNpbmNsdWRlIDx0eXBl
aW5mbz4KKyMgaW5jbHVkZSA8dHlwZWluZm8+CiAjZW5kaWYKIAogLy8gRGV0ZXJtaW5lcyB3aGV0
aGVyIEdvb2dsZSBUZXN0IGNhbiB1c2UgdGhlIHB0aHJlYWRzIGxpYnJhcnkuCiAjaWZuZGVmIEdU
RVNUX0hBU19QVEhSRUFECi0vLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cyBleHBsaWNpdGx5LCBz
byB3ZSBhc3N1bWUgcHRocmVhZHMgc3VwcG9ydCBpcwotLy8gYXZhaWxhYmxlIG9uIExpbnV4IGFu
ZCBNYWMuCisvLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cyBleHBsaWNpdGx5LCBzbyB3ZSBtYWtl
IHJlYXNvbmFibGUgYXNzdW1wdGlvbnMgYWJvdXQKKy8vIHdoaWNoIHBsYXRmb3JtcyBoYXZlIHB0
aHJlYWRzIHN1cHBvcnQuCiAvLwogLy8gVG8gZGlzYWJsZSB0aHJlYWRpbmcgc3VwcG9ydCBpbiBH
b29nbGUgVGVzdCwgYWRkIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MAogLy8gdG8geW91ciBjb21waWxl
ciBmbGFncy4KLSNkZWZpbmUgR1RFU1RfSEFTX1BUSFJFQUQgKEdURVNUX09TX0xJTlVYIHx8IEdU
RVNUX09TX0ZSRUVCU0QgfHwgR1RFU1RfT1NfSFVSRCB8fCBHVEVTVF9PU19NQUMpCisjIGRlZmlu
ZSBHVEVTVF9IQVNfUFRIUkVBRCAoR1RFU1RfT1NfTElOVVggfHwgR1RFU1RfT1NfTUFDIHx8IEdU
RVNUX09TX0hQVVggXAorICAgIHx8IEdURVNUX09TX1FOWCB8fCBHVEVTVF9PU19GUkVFQlNEIHx8
IEdURVNUX09TX05BQ0wpCiAjZW5kaWYgIC8vIEdURVNUX0hBU19QVEhSRUFECiAKKyNpZiBHVEVT
VF9IQVNfUFRIUkVBRAorLy8gZ3Rlc3QtcG9ydC5oIGd1YXJhbnRlZXMgdG8gI2luY2x1ZGUgPHB0
aHJlYWQuaD4gd2hlbiBHVEVTVF9IQVNfUFRIUkVBRCBpcworLy8gdHJ1ZS4KKyMgaW5jbHVkZSA8
cHRocmVhZC5oPiAgLy8gTk9MSU5UCisKKy8vIEZvciB0aW1lc3BlYyBhbmQgbmFub3NsZWVwLCB1
c2VkIGJlbG93LgorIyBpbmNsdWRlIDx0aW1lLmg+ICAvLyBOT0xJTlQKKyNlbmRpZgorCisvLyBE
ZXRlcm1pbmVzIGlmIGhhc2hfbWFwL2hhc2hfc2V0IGFyZSBhdmFpbGFibGUuCisvLyBPbmx5IHVz
ZWQgZm9yIHRlc3RpbmcgYWdhaW5zdCB0aG9zZSBjb250YWluZXJzLgorI2lmICFkZWZpbmVkKEdU
RVNUX0hBU19IQVNIX01BUF8pCisjIGlmIF9NU0NfVkVSCisjICBkZWZpbmUgR1RFU1RfSEFTX0hB
U0hfTUFQXyAxICAvLyBJbmRpY2F0ZXMgdGhhdCBoYXNoX21hcCBpcyBhdmFpbGFibGUuCisjICBk
ZWZpbmUgR1RFU1RfSEFTX0hBU0hfU0VUXyAxICAvLyBJbmRpY2F0ZXMgdGhhdCBoYXNoX3NldCBp
cyBhdmFpbGFibGUuCisjIGVuZGlmICAvLyBfTVNDX1ZFUgorI2VuZGlmICAvLyAhZGVmaW5lZChH
VEVTVF9IQVNfSEFTSF9NQVBfKQorCiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgR29vZ2xlIFRlc3Qg
Y2FuIHVzZSB0cjEvdHVwbGUuICBZb3UgY2FuIGRlZmluZQogLy8gdGhpcyBtYWNybyB0byAwIHRv
IHByZXZlbnQgR29vZ2xlIFRlc3QgZnJvbSB1c2luZyB0dXBsZSAoYW55CiAvLyBmZWF0dXJlIGRl
cGVuZGluZyBvbiB0dXBsZSB3aXRoIGJlIGRpc2FibGVkIGluIHRoaXMgbW9kZSkuCiAjaWZuZGVm
IEdURVNUX0hBU19UUjFfVFVQTEUKKyMgaWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRCAmJiBkZWZp
bmVkKF9TVExQT1JUX01BSk9SKQorLy8gU1RMcG9ydCwgcHJvdmlkZWQgd2l0aCB0aGUgQW5kcm9p
ZCBOREssIGhhcyBuZWl0aGVyIDx0cjEvdHVwbGU+IG9yIDx0dXBsZT4uCisjICBkZWZpbmUgR1RF
U1RfSEFTX1RSMV9UVVBMRSAwCisjIGVsc2UKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIG5v
dCB0byBkbyBpdCwgc28gd2UgYXNzdW1lIGl0J3MgT0suCi0jZGVmaW5lIEdURVNUX0hBU19UUjFf
VFVQTEUgMQorIyAgZGVmaW5lIEdURVNUX0hBU19UUjFfVFVQTEUgMQorIyBlbmRpZgogI2VuZGlm
ICAvLyBHVEVTVF9IQVNfVFIxX1RVUExFCiAKIC8vIERldGVybWluZXMgd2hldGhlciBHb29nbGUg
VGVzdCdzIG93biB0cjEgdHVwbGUgaW1wbGVtZW50YXRpb24KQEAgLTQxMCw2NyArNjQxLDEwNyBA
QAogLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMsIHNvIHdlIG5lZWQgdG8gZmlndXJlIGl0IG91
dC4KIAogLy8gV2UgdXNlIG91ciBvd24gVFIxIHR1cGxlIGlmIHdlIGFyZW4ndCBzdXJlIHRoZSB1
c2VyIGhhcyBhbgotLy8gaW1wbGVtZW50YXRpb24gb2YgaXQgYWxyZWFkeS4gIEF0IHRoaXMgdGlt
ZSwgR0NDIDQuMC4wKyBhbmQgTVNWQwotLy8gMjAxMCBhcmUgdGhlIG9ubHkgbWFpbnN0cmVhbSBj
b21waWxlcnMgdGhhdCBjb21lIHdpdGggYSBUUjEgdHVwbGUKLS8vIGltcGxlbWVudGF0aW9uLiAg
TlZJRElBJ3MgQ1VEQSBOVkNDIGNvbXBpbGVyIHByZXRlbmRzIHRvIGJlIEdDQyBieQotLy8gZGVm
aW5pbmcgX19HTlVDX18gYW5kIGZyaWVuZHMsIGJ1dCBjYW5ub3QgY29tcGlsZSBHQ0MncyB0dXBs
ZQotLy8gaW1wbGVtZW50YXRpb24uICBNU1ZDIDIwMDggKDkuMCkgcHJvdmlkZXMgVFIxIHR1cGxl
IGluIGEgMzIzIE1CCi0vLyBGZWF0dXJlIFBhY2sgZG93bmxvYWQsIHdoaWNoIHdlIGNhbm5vdCBh
c3N1bWUgdGhlIHVzZXIgaGFzLgotI2lmIChkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChf
X0NVREFDQ19fKSAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0gNDAwMDApKSBcCi0gICAgfHwgX01TQ19W
RVIgPj0gMTYwMAotI2RlZmluZSBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSAwCi0jZWxzZQotI2Rl
ZmluZSBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSAxCi0jZW5kaWYKKy8vIGltcGxlbWVudGF0aW9u
IG9mIGl0IGFscmVhZHkuICBBdCB0aGlzIHRpbWUsIGxpYnN0ZGMrKyA0LjAuMCsgYW5kCisvLyBN
U1ZDIDIwMTAgYXJlIHRoZSBvbmx5IG1haW5zdHJlYW0gc3RhbmRhcmQgbGlicmFyaWVzIHRoYXQg
Y29tZQorLy8gd2l0aCBhIFRSMSB0dXBsZSBpbXBsZW1lbnRhdGlvbi4gIE5WSURJQSdzIENVREEg
TlZDQyBjb21waWxlcgorLy8gcHJldGVuZHMgdG8gYmUgR0NDIGJ5IGRlZmluaW5nIF9fR05VQ19f
IGFuZCBmcmllbmRzLCBidXQgY2Fubm90CisvLyBjb21waWxlIEdDQydzIHR1cGxlIGltcGxlbWVu
dGF0aW9uLiAgTVNWQyAyMDA4ICg5LjApIHByb3ZpZGVzIFRSMQorLy8gdHVwbGUgaW4gYSAzMjMg
TUIgRmVhdHVyZSBQYWNrIGRvd25sb2FkLCB3aGljaCB3ZSBjYW5ub3QgYXNzdW1lIHRoZQorLy8g
dXNlciBoYXMuICBRTlgncyBRQ0MgY29tcGlsZXIgaXMgYSBtb2RpZmllZCBHQ0MgYnV0IGl0IGRv
ZXNuJ3QKKy8vIHN1cHBvcnQgVFIxIHR1cGxlLiAgbGliYysrIG9ubHkgcHJvdmlkZXMgc3RkOjp0
dXBsZSwgaW4gQysrMTEgbW9kZSwKKy8vIGFuZCBpdCBjYW4gYmUgdXNlZCB3aXRoIHNvbWUgY29t
cGlsZXJzIHRoYXQgZGVmaW5lIF9fR05VQ19fLgorIyBpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYg
IWRlZmluZWQoX19DVURBQ0NfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMDAwKSBcCisgICAg
ICAmJiAhR1RFU1RfT1NfUU5YICYmICFkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikpIHx8IF9NU0Nf
VkVSID49IDE2MDAKKyMgIGRlZmluZSBHVEVTVF9FTlZfSEFTX1RSMV9UVVBMRV8gMQorIyBlbmRp
ZgorCisvLyBDKysxMSBzcGVjaWZpZXMgdGhhdCA8dHVwbGU+IHByb3ZpZGVzIHN0ZDo6dHVwbGUu
IFVzZSB0aGF0IGlmIGd0ZXN0IGlzIHVzZWQKKy8vIGluIEMrKzExIG1vZGUgYW5kIGxpYnN0ZGMr
KyBpc24ndCB2ZXJ5IG9sZCAoYmluYXJpZXMgdGFyZ2V0aW5nIE9TIFggMTAuNgorLy8gY2FuIGJ1
aWxkIHdpdGggY2xhbmcgYnV0IG5lZWQgdG8gdXNlIGdjYzQuMidzIGxpYnN0ZGMrKykuCisjIGlm
IEdURVNUX0xBTkdfQ1hYMTEgJiYgKCFkZWZpbmVkKF9fR0xJQkNYWF9fKSB8fCBfX0dMSUJDWFhf
XyA+IDIwMTEwMzI1KQorIyAgZGVmaW5lIEdURVNUX0VOVl9IQVNfU1REX1RVUExFXyAxCisjIGVu
ZGlmCisKKyMgaWYgR1RFU1RfRU5WX0hBU19UUjFfVFVQTEVfIHx8IEdURVNUX0VOVl9IQVNfU1RE
X1RVUExFXworIyAgZGVmaW5lIEdURVNUX1VTRV9PV05fVFIxX1RVUExFIDAKKyMgZWxzZQorIyAg
ZGVmaW5lIEdURVNUX1VTRV9PV05fVFIxX1RVUExFIDEKKyMgZW5kaWYKIAogI2VuZGlmICAvLyBH
VEVTVF9VU0VfT1dOX1RSMV9UVVBMRQogCiAvLyBUbyBhdm9pZCBjb25kaXRpb25hbCBjb21waWxh
dGlvbiBldmVyeXdoZXJlLCB3ZSBtYWtlIGl0CiAvLyBndGVzdC1wb3J0LmgncyByZXNwb25zaWJp
bGl0eSB0byAjaW5jbHVkZSB0aGUgaGVhZGVyIGltcGxlbWVudGluZwotLy8gdHIxL3R1cGxlLgor
Ly8gdHVwbGUuCisjaWYgR1RFU1RfSEFTX1NURF9UVVBMRV8KKyMgaW5jbHVkZSA8dHVwbGU+ICAv
LyBJV1lVIHByYWdtYTogZXhwb3J0CisjIGRlZmluZSBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfIDo6
c3RkCisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfVFVQTEVfCisKKy8vIFdlIGluY2x1ZGUgdHIx
Ojp0dXBsZSBldmVuIGlmIHN0ZDo6dHVwbGUgaXMgYXZhaWxhYmxlIHRvIGRlZmluZSBwcmludGVy
cyBmb3IKKy8vIHRoZW0uCiAjaWYgR1RFU1RfSEFTX1RSMV9UVVBMRQorIyBpZm5kZWYgR1RFU1Rf
VFVQTEVfTkFNRVNQQUNFXworIyAgZGVmaW5lIEdURVNUX1RVUExFX05BTUVTUEFDRV8gOjpzdGQ6
OnRyMQorIyBlbmRpZiAgLy8gR1RFU1RfVFVQTEVfTkFNRVNQQUNFXworCisjIGlmIEdURVNUX1VT
RV9PV05fVFIxX1RVUExFCisjICBpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5o
IiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydCAgLy8gTk9MSU5UCisjIGVsaWYgR1RFU1RfRU5WX0hB
U19TVERfVFVQTEVfCisjICBpbmNsdWRlIDx0dXBsZT4KKy8vIEMrKzExIHB1dHMgaXRzIHR1cGxl
IGludG8gdGhlIDo6c3RkIG5hbWVzcGFjZSByYXRoZXIgdGhhbgorLy8gOjpzdGQ6OnRyMS4gIGd0
ZXN0IGV4cGVjdHMgdHVwbGUgdG8gbGl2ZSBpbiA6OnN0ZDo6dHIxLCBzbyBwdXQgaXQgdGhlcmUu
CisvLyBUaGlzIGNhdXNlcyB1bmRlZmluZWQgYmVoYXZpb3IsIGJ1dCBzdXBwb3J0ZWQgY29tcGls
ZXJzIHJlYWN0IGluCisvLyB0aGUgd2F5IHdlIGludGVuZC4KK25hbWVzcGFjZSBzdGQgeworbmFt
ZXNwYWNlIHRyMSB7Cit1c2luZyA6OnN0ZDo6Z2V0OwordXNpbmcgOjpzdGQ6Om1ha2VfdHVwbGU7
Cit1c2luZyA6OnN0ZDo6dHVwbGU7Cit1c2luZyA6OnN0ZDo6dHVwbGVfZWxlbWVudDsKK3VzaW5n
IDo6c3RkOjp0dXBsZV9zaXplOworfQorfQogCi0jaWYgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUK
LSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oPgotI2VsaWYgR1RFU1RfT1Nf
U1lNQklBTgorIyBlbGlmIEdURVNUX09TX1NZTUJJQU4KIAogLy8gT24gU3ltYmlhbiwgQk9PU1Rf
SEFTX1RSMV9UVVBMRSBjYXVzZXMgQm9vc3QncyBUUjEgdHVwbGUgbGlicmFyeSB0bwogLy8gdXNl
IFNUTHBvcnQncyB0dXBsZSBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggdW5mb3J0dW5hdGVseSBkb2Vz
bid0CiAvLyB3b3JrIGFzIHRoZSBjb3B5IG9mIFNUTHBvcnQgZGlzdHJpYnV0ZWQgd2l0aCBTeW1i
aWFuIGlzIGluY29tcGxldGUuCiAvLyBCeSBtYWtpbmcgc3VyZSBCT09TVF9IQVNfVFIxX1RVUExF
IGlzIHVuZGVmaW5lZCwgd2UgZm9yY2UgQm9vc3QgdG8KIC8vIHVzZSBpdHMgb3duIHR1cGxlIGlt
cGxlbWVudGF0aW9uLgotI2lmZGVmIEJPT1NUX0hBU19UUjFfVFVQTEUKLSN1bmRlZiBCT09TVF9I
QVNfVFIxX1RVUExFCi0jZW5kaWYgIC8vIEJPT1NUX0hBU19UUjFfVFVQTEUKKyMgIGlmZGVmIEJP
T1NUX0hBU19UUjFfVFVQTEUKKyMgICB1bmRlZiBCT09TVF9IQVNfVFIxX1RVUExFCisjICBlbmRp
ZiAgLy8gQk9PU1RfSEFTX1RSMV9UVVBMRQogCiAvLyBUaGlzIHByZXZlbnRzIDxib29zdC90cjEv
ZGV0YWlsL2NvbmZpZy5ocHA+LCB3aGljaCBkZWZpbmVzCiAvLyBCT09TVF9IQVNfVFIxX1RVUExF
LCBmcm9tIGJlaW5nICNpbmNsdWRlZCBieSBCb29zdCdzIDx0dXBsZT4uCi0jZGVmaW5lIEJPT1NU
X1RSMV9ERVRBSUxfQ09ORklHX0hQUF9JTkNMVURFRAotI2luY2x1ZGUgPHR1cGxlPgorIyAgZGVm
aW5lIEJPT1NUX1RSMV9ERVRBSUxfQ09ORklHX0hQUF9JTkNMVURFRAorIyAgaW5jbHVkZSA8dHVw
bGU+ICAvLyBJV1lVIHByYWdtYTogZXhwb3J0ICAvLyBOT0xJTlQKIAotI2VsaWYgZGVmaW5lZChf
X0dOVUNfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMDAwKQorIyBlbGlmIGRlZmluZWQoX19H
TlVDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSA0MDAwMCkKIC8vIEdDQyA0LjArIGltcGxlbWVu
dHMgdHIxL3R1cGxlIGluIHRoZSA8dHIxL3R1cGxlPiBoZWFkZXIuICBUaGlzIGRvZXMKIC8vIG5v
dCBjb25mb3JtIHRvIHRoZSBUUjEgc3BlYywgd2hpY2ggcmVxdWlyZXMgdGhlIGhlYWRlciB0byBi
ZSA8dHVwbGU+LgogCi0jaWYgIUdURVNUX0hBU19SVFRJICYmIEdURVNUX0dDQ19WRVJfIDwgNDAz
MDIKKyMgIGlmICFHVEVTVF9IQVNfUlRUSSAmJiBHVEVTVF9HQ0NfVkVSXyA8IDQwMzAyCiAvLyBV
bnRpbCB2ZXJzaW9uIDQuMy4yLCBnY2MgaGFzIGEgYnVnIHRoYXQgY2F1c2VzIDx0cjEvZnVuY3Rp
b25hbD4sCiAvLyB3aGljaCBpcyAjaW5jbHVkZWQgYnkgPHRyMS90dXBsZT4sIHRvIG5vdCBjb21w
aWxlIHdoZW4gUlRUSSBpcwogLy8gZGlzYWJsZWQuICBfVFIxX0ZVTkNUSU9OQUwgaXMgdGhlIGhl
YWRlciBndWFyZCBmb3IKIC8vIDx0cjEvZnVuY3Rpb25hbD4uICBIZW5jZSB0aGUgZm9sbG93aW5n
ICNkZWZpbmUgaXMgYSBoYWNrIHRvIHByZXZlbnQKIC8vIDx0cjEvZnVuY3Rpb25hbD4gZnJvbSBi
ZWluZyBpbmNsdWRlZC4KLSNkZWZpbmUgX1RSMV9GVU5DVElPTkFMIDEKLSNpbmNsdWRlIDx0cjEv
dHVwbGU+Ci0jdW5kZWYgX1RSMV9GVU5DVElPTkFMICAvLyBBbGxvd3MgdGhlIHVzZXIgdG8gI2lu
Y2x1ZGUKKyMgICBkZWZpbmUgX1RSMV9GVU5DVElPTkFMIDEKKyMgICBpbmNsdWRlIDx0cjEvdHVw
bGU+CisjICAgdW5kZWYgX1RSMV9GVU5DVElPTkFMICAvLyBBbGxvd3MgdGhlIHVzZXIgdG8gI2lu
Y2x1ZGUKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDx0cjEvZnVuY3Rpb25hbD4gaWYgaGUg
Y2hvb3NlcyB0by4KLSNlbHNlCi0jaW5jbHVkZSA8dHIxL3R1cGxlPiAgLy8gTk9MSU5UCi0jZW5k
aWYgIC8vICFHVEVTVF9IQVNfUlRUSSAmJiBHVEVTVF9HQ0NfVkVSXyA8IDQwMzAyCisjICBlbHNl
CisjICAgaW5jbHVkZSA8dHIxL3R1cGxlPiAgLy8gTk9MSU5UCisjICBlbmRpZiAgLy8gIUdURVNU
X0hBU19SVFRJICYmIEdURVNUX0dDQ19WRVJfIDwgNDAzMDIKIAotI2Vsc2UKKyMgZWxzZQogLy8g
SWYgdGhlIGNvbXBpbGVyIGlzIG5vdCBHQ0MgNC4wKywgd2UgYXNzdW1lIHRoZSB1c2VyIGlzIHVz
aW5nIGEKIC8vIHNwZWMtY29uZm9ybWluZyBUUjEgaW1wbGVtZW50YXRpb24uCi0jaW5jbHVkZSA8
dHVwbGU+ICAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUKKyMg
IGluY2x1ZGUgPHR1cGxlPiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydCAgLy8gTk9MSU5UCisjIGVu
ZGlmICAvLyBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRQogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19U
UjFfVFVQTEUKIApAQCAtNDgxLDMwICs3NTIsNDYgQEAKICNpZm5kZWYgR1RFU1RfSEFTX0NMT05F
CiAvLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cywgc28gd2UgbmVlZCB0byBmaWd1cmUgaXQgb3V0
LgogCi0jaWYgR1RFU1RfT1NfTElOVVggJiYgIWRlZmluZWQoX19pYTY0X18pCi0jZGVmaW5lIEdU
RVNUX0hBU19DTE9ORSAxCi0jZWxzZQotI2RlZmluZSBHVEVTVF9IQVNfQ0xPTkUgMAotI2VuZGlm
ICAvLyBHVEVTVF9PU19MSU5VWCAmJiAhZGVmaW5lZChfX2lhNjRfXykKKyMgaWYgR1RFU1RfT1Nf
TElOVVggJiYgIWRlZmluZWQoX19pYTY0X18pCisjICBpZiBHVEVTVF9PU19MSU5VWF9BTkRST0lE
CisvLyBPbiBBbmRyb2lkLCBjbG9uZSgpIGlzIG9ubHkgYXZhaWxhYmxlIG9uIEFSTSBzdGFydGlu
ZyB3aXRoIEdpbmdlcmJyZWFkLgorIyAgICBpZiBkZWZpbmVkKF9fYXJtX18pICYmIF9fQU5EUk9J
RF9BUElfXyA+PSA5CisjICAgICBkZWZpbmUgR1RFU1RfSEFTX0NMT05FIDEKKyMgICAgZWxzZQor
IyAgICAgZGVmaW5lIEdURVNUX0hBU19DTE9ORSAwCisjICAgIGVuZGlmCisjICBlbHNlCisjICAg
ZGVmaW5lIEdURVNUX0hBU19DTE9ORSAxCisjICBlbmRpZgorIyBlbHNlCisjICBkZWZpbmUgR1RF
U1RfSEFTX0NMT05FIDAKKyMgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYICYmICFkZWZpbmVkKF9f
aWE2NF9fKQogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORQogCiAvLyBEZXRlcm1pbmVzIHdo
ZXRoZXIgdG8gc3VwcG9ydCBzdHJlYW0gcmVkaXJlY3Rpb24uIFRoaXMgaXMgdXNlZCB0byB0ZXN0
CiAvLyBvdXRwdXQgY29ycmVjdG5lc3MgYW5kIHRvIGltcGxlbWVudCBkZWF0aCB0ZXN0cy4KLSNp
ZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZTUJJQU4KLSNkZWZpbmUg
R1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8gMQotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZTUJJQU4KKyNpZm5kZWYgR1RFU1RfSEFTX1NUUkVB
TV9SRURJUkVDVElPTgorLy8gQnkgZGVmYXVsdCwgd2UgYXNzdW1lIHRoYXQgc3RyZWFtIHJlZGly
ZWN0aW9uIGlzIHN1cHBvcnRlZCBvbiBhbGwKKy8vIHBsYXRmb3JtcyBleGNlcHQga25vd24gbW9i
aWxlIG9uZXMuCisjIGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNUX09TX1NZTUJJ
QU4gfHwgXAorICAgIEdURVNUX09TX1dJTkRPV1NfUEhPTkUgfHwgR1RFU1RfT1NfV0lORE9XU19S
VAorIyAgZGVmaW5lIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04gMAorIyBlbHNlCisjICBk
ZWZpbmUgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTiAxCisjIGVuZGlmICAvLyAhR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZTUJJQU4KKyNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1NUUkVBTV9SRURJUkVDVElPTgogCiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc3VwcG9y
dCBkZWF0aCB0ZXN0cy4KIC8vIEdvb2dsZSBUZXN0IGRvZXMgbm90IHN1cHBvcnQgZGVhdGggdGVz
dHMgZm9yIFZDIDcuMSBhbmQgZWFybGllciBhcwogLy8gYWJvcnQoKSBpbiBhIFZDIDcuMSBhcHBs
aWNhdGlvbiBjb21waWxlZCBhcyBHVUkgaW4gZGVidWcgY29uZmlnCiAvLyBwb3BzIHVwIGEgZGlh
bG9nIHdpbmRvdyB0aGF0IGNhbm5vdCBiZSBzdXBwcmVzc2VkIHByb2dyYW1tYXRpY2FsbHkuCi0j
aWYgKEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX0ZSRUVCU0QgfHwgR1RFU1RfT1NfSFVSRCB8
fCBcCi0gICAgIEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19DWUdXSU4gfHwgR1RFU1RfT1NfU09M
QVJJUyB8fCBcCisjaWYgKEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX0NZR1dJTiB8fCBHVEVT
VF9PU19TT0xBUklTIHx8IFwKKyAgICAgKEdURVNUX09TX01BQyAmJiAhR1RFU1RfT1NfSU9TKSB8
fCBcCiAgICAgIChHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1AgJiYgX01TQ19WRVIgPj0gMTQwMCkg
fHwgXAotICAgICBHVEVTVF9PU19XSU5ET1dTX01JTkdXIHx8IEdURVNUX09TX0FJWCkKLSNkZWZp
bmUgR1RFU1RfSEFTX0RFQVRIX1RFU1QgMQotI2luY2x1ZGUgPHZlY3Rvcj4gIC8vIE5PTElOVAor
ICAgICBHVEVTVF9PU19XSU5ET1dTX01JTkdXIHx8IEdURVNUX09TX0FJWCB8fCBHVEVTVF9PU19I
UFVYIHx8IFwKKyAgICAgR1RFU1RfT1NfT1BFTkJTRCB8fCBHVEVTVF9PU19RTlggfHwgR1RFU1Rf
T1NfRlJFRUJTRCkKKyMgZGVmaW5lIEdURVNUX0hBU19ERUFUSF9URVNUIDEKICNlbmRpZgogCiAv
LyBXZSBkb24ndCBzdXBwb3J0IE1TVkMgNy4xIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZCBub3cu
ICBUaGVyZWZvcmUKQEAgLTUxNSwxMSArODAyLDExIEBACiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIg
dG8gc3VwcG9ydCB0eXBlLWRyaXZlbiB0ZXN0cy4KIAogLy8gVHlwZWQgdGVzdHMgbmVlZCA8dHlw
ZWluZm8+IGFuZCB2YXJpYWRpYyBtYWNyb3MsIHdoaWNoIEdDQywgVkMrKyA4LjAsCi0vLyBTdW4g
UHJvIENDLCBhbmQgSUJNIFZpc3VhbCBBZ2Ugc3VwcG9ydC4KKy8vIFN1biBQcm8gQ0MsIElCTSBW
aXN1YWwgQWdlLCBhbmQgSFAgYUNDIHN1cHBvcnQuCiAjaWYgZGVmaW5lZChfX0dOVUNfXykgfHwg
KF9NU0NfVkVSID49IDE0MDApIHx8IGRlZmluZWQoX19TVU5QUk9fQ0MpIHx8IFwKLSAgICBkZWZp
bmVkKF9fSUJNQ1BQX18pCi0jZGVmaW5lIEdURVNUX0hBU19UWVBFRF9URVNUIDEKLSNkZWZpbmUg
R1RFU1RfSEFTX1RZUEVEX1RFU1RfUCAxCisgICAgZGVmaW5lZChfX0lCTUNQUF9fKSB8fCBkZWZp
bmVkKF9fSFBfYUNDKQorIyBkZWZpbmUgR1RFU1RfSEFTX1RZUEVEX1RFU1QgMQorIyBkZWZpbmUg
R1RFU1RfSEFTX1RZUEVEX1RFU1RfUCAxCiAjZW5kaWYKIAogLy8gRGV0ZXJtaW5lcyB3aGV0aGVy
IHRvIHN1cHBvcnQgQ29tYmluZSgpLiBUaGlzIG9ubHkgbWFrZXMgc2Vuc2Ugd2hlbgpAQCAtNTI3
LDEzICs4MTQsMTggQEAKIC8vIHdvcmsgb24gU3VuIFN0dWRpbyBzaW5jZSBpdCBkb2Vzbid0IHVu
ZGVyc3RhbmQgdGVtcGxhdGVkIGNvbnZlcnNpb24KIC8vIG9wZXJhdG9ycy4KICNpZiBHVEVTVF9I
QVNfUEFSQU1fVEVTVCAmJiBHVEVTVF9IQVNfVFIxX1RVUExFICYmICFkZWZpbmVkKF9fU1VOUFJP
X0NDKQotI2RlZmluZSBHVEVTVF9IQVNfQ09NQklORSAxCisjIGRlZmluZSBHVEVTVF9IQVNfQ09N
QklORSAxCiAjZW5kaWYKIAogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzeXN0ZW0gY29tcGls
ZXIgdXNlcyBVVEYtMTYgZm9yIGVuY29kaW5nIHdpZGUgc3RyaW5ncy4KICNkZWZpbmUgR1RFU1Rf
V0lERV9TVFJJTkdfVVNFU19VVEYxNl8gXAogICAgIChHVEVTVF9PU19XSU5ET1dTIHx8IEdURVNU
X09TX0NZR1dJTiB8fCBHVEVTVF9PU19TWU1CSUFOIHx8IEdURVNUX09TX0FJWCkKIAorLy8gRGV0
ZXJtaW5lcyB3aGV0aGVyIHRlc3QgcmVzdWx0cyBjYW4gYmUgc3RyZWFtZWQgdG8gYSBzb2NrZXQu
CisjaWYgR1RFU1RfT1NfTElOVVgKKyMgZGVmaW5lIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18g
MQorI2VuZGlmCisKIC8vIERlZmluZXMgc29tZSB1dGlsaXR5IG1hY3Jvcy4KIAogLy8gVGhlIEdO
VSBjb21waWxlciBlbWl0cyBhIHdhcm5pbmcgaWYgbmVzdGVkICJpZiIgc3RhdGVtZW50cyBhcmUg
Zm9sbG93ZWQgYnkKQEAgLTU0NSw5ICs4MzcsOSBAQAogLy8KIC8vIFRoZSAic3dpdGNoICgwKSBj
YXNlIDA6IiBpZGlvbSBpcyB1c2VkIHRvIHN1cHByZXNzIHRoaXMuCiAjaWZkZWYgX19JTlRFTF9D
T01QSUxFUgotI2RlZmluZSBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXworIyBkZWZpbmUg
R1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8KICNlbHNlCi0jZGVmaW5lIEdURVNUX0FNQklH
VU9VU19FTFNFX0JMT0NLRVJfIHN3aXRjaCAoMCkgY2FzZSAwOiAgLy8gTk9MSU5UCisjIGRlZmlu
ZSBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBzd2l0Y2ggKDApIGNhc2UgMDogZGVmYXVs
dDogIC8vIE5PTElOVAogI2VuZGlmCiAKIC8vIFVzZSB0aGlzIGFubm90YXRpb24gYXQgdGhlIGVu
ZCBvZiBhIHN0cnVjdC9jbGFzcyBkZWZpbml0aW9uIHRvCkBAIC01NjIsOSArODU0LDE0IEBACiAv
LyBBbHNvIHVzZSBpdCBhZnRlciBhIHZhcmlhYmxlIG9yIHBhcmFtZXRlciBkZWNsYXJhdGlvbiB0
byB0ZWxsIHRoZQogLy8gY29tcGlsZXIgdGhlIHZhcmlhYmxlL3BhcmFtZXRlciBkb2VzIG5vdCBo
YXZlIHRvIGJlIHVzZWQuCiAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoQ09NUElM
RVJfSUNDKQotI2RlZmluZSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyBfX2F0dHJpYnV0ZV9fICgo
dW51c2VkKSkKLSNlbHNlCi0jZGVmaW5lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfCisjIGRlZmlu
ZSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKKyNlbGlm
IGRlZmluZWQoX19jbGFuZ19fKQorIyBpZiBfX2hhc19hdHRyaWJ1dGUodW51c2VkKQorIyAgZGVm
aW5lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQorIyBl
bmRpZgorI2VuZGlmCisjaWZuZGVmIEdURVNUX0FUVFJJQlVURV9VTlVTRURfCisjIGRlZmluZSBH
VEVTVF9BVFRSSUJVVEVfVU5VU0VEXwogI2VuZGlmCiAKIC8vIEEgbWFjcm8gdG8gZGlzYWxsb3cg
b3BlcmF0b3I9CkBAIC01ODQsNzIgKzg4MSwyMjcgQEAKIC8vCiAvLyAgIFNwcm9ja2V0KiBBbGxv
Y2F0ZVNwcm9ja2V0KCkgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXzsKICNpZiBkZWZpbmVkKF9fR05V
Q19fKSAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0gMzA0MDApICYmICFkZWZpbmVkKENPTVBJTEVSX0lD
QykKLSNkZWZpbmUgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXyBfX2F0dHJpYnV0ZV9fICgod2Fybl91
bnVzZWRfcmVzdWx0KSkKKyMgZGVmaW5lIEdURVNUX01VU1RfVVNFX1JFU1VMVF8gX19hdHRyaWJ1
dGVfXyAoKHdhcm5fdW51c2VkX3Jlc3VsdCkpCiAjZWxzZQotI2RlZmluZSBHVEVTVF9NVVNUX1VT
RV9SRVNVTFRfCisjIGRlZmluZSBHVEVTVF9NVVNUX1VTRV9SRVNVTFRfCiAjZW5kaWYgIC8vIF9f
R05VQ19fICYmIChHVEVTVF9HQ0NfVkVSXyA+PSAzMDQwMCkgJiYgIUNPTVBJTEVSX0lDQwogCisv
LyBNUyBDKysgY29tcGlsZXIgZW1pdHMgd2FybmluZyB3aGVuIGEgY29uZGl0aW9uYWwgZXhwcmVz
c2lvbiBpcyBjb21waWxlIHRpbWUKKy8vIGNvbnN0YW50LiBJbiBzb21lIGNvbnRleHRzIHRoaXMg
d2FybmluZyBpcyBmYWxzZSBwb3NpdGl2ZSBhbmQgbmVlZHMgdG8gYmUKKy8vIHN1cHByZXNzZWQu
IFVzZSB0aGUgZm9sbG93aW5nIHR3byBtYWNyb3MgaW4gc3VjaCBjYXNlczoKKy8vCisvLyBHVEVT
VF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BVU0hfKCkKKy8vIHdoaWxlICh0cnVlKSB7CisvLyBH
VEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BPUF8oKQorLy8gfQorIyBkZWZpbmUgR1RFU1Rf
SU5URU5USU9OQUxfQ09OU1RfQ09ORF9QVVNIXygpIFwKKyAgICBHVEVTVF9ESVNBQkxFX01TQ19X
QVJOSU5HU19QVVNIXyg0MTI3KQorIyBkZWZpbmUgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09O
RF9QT1BfKCkgXAorICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQorCiAvLyBE
ZXRlcm1pbmUgd2hldGhlciB0aGUgY29tcGlsZXIgc3VwcG9ydHMgTWljcm9zb2Z0J3MgU3RydWN0
dXJlZCBFeGNlcHRpb24KIC8vIEhhbmRsaW5nLiAgVGhpcyBpcyBzdXBwb3J0ZWQgYnkgc2V2ZXJh
bCBXaW5kb3dzIGNvbXBpbGVycyBidXQgZ2VuZXJhbGx5CiAvLyBkb2VzIG5vdCBleGlzdCBvbiBh
bnkgb3RoZXIgc3lzdGVtLgogI2lmbmRlZiBHVEVTVF9IQVNfU0VICiAvLyBUaGUgdXNlciBkaWRu
J3QgdGVsbCB1cywgc28gd2UgbmVlZCB0byBmaWd1cmUgaXQgb3V0LgogCi0jaWYgZGVmaW5lZChf
TVNDX1ZFUikgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pCisjIGlmIGRlZmluZWQoX01TQ19WRVIp
IHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQogLy8gVGhlc2UgdHdvIGNvbXBpbGVycyBhcmUga25v
d24gdG8gc3VwcG9ydCBTRUguCi0jZGVmaW5lIEdURVNUX0hBU19TRUggMQotI2Vsc2UKKyMgIGRl
ZmluZSBHVEVTVF9IQVNfU0VIIDEKKyMgZWxzZQogLy8gQXNzdW1lIG5vIFNFSC4KLSNkZWZpbmUg
R1RFU1RfSEFTX1NFSCAwCi0jZW5kaWYKKyMgIGRlZmluZSBHVEVTVF9IQVNfU0VIIDAKKyMgZW5k
aWYKKworI2RlZmluZSBHVEVTVF9JU19USFJFQURTQUZFIFwKKyAgICAoR1RFU1RfSEFTX01VVEVY
X0FORF9USFJFQURfTE9DQUxfIFwKKyAgICAgfHwgKEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNU
X09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQpIFwKKyAgICAgfHwgR1RF
U1RfSEFTX1BUSFJFQUQpCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAogCiAjaWZkZWYgX01T
Q19WRVIKKyMgaWYgR1RFU1RfTElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZCisjICBkZWZpbmUgR1RF
U1RfQVBJXyBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyMgZWxpZiBHVEVTVF9DUkVBVEVfU0hBUkVE
X0xJQlJBUlkKKyMgIGRlZmluZSBHVEVTVF9BUElfIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorIyBl
bmRpZgorI2VsaWYgX19HTlVDX18gPj0gNCB8fCBkZWZpbmVkKF9fY2xhbmdfXykKKyMgZGVmaW5l
IEdURVNUX0FQSV8gX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCisjZW5k
aWYgLy8gX01TQ19WRVIKIAotI2lmIEdURVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFSWQotI2Rl
ZmluZSBHVEVTVF9BUElfIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotI2VsaWYgR1RFU1RfQ1JFQVRF
X1NIQVJFRF9MSUJSQVJZCi0jZGVmaW5lIEdURVNUX0FQSV8gX19kZWNsc3BlYyhkbGxleHBvcnQp
CisjaWZuZGVmIEdURVNUX0FQSV8KKyMgZGVmaW5lIEdURVNUX0FQSV8KICNlbmRpZgogCi0jZW5k
aWYgIC8vIF9NU0NfVkVSCisjaWZkZWYgX19HTlVDX18KKy8vIEFzayB0aGUgY29tcGlsZXIgdG8g
bmV2ZXIgaW5saW5lIGEgZ2l2ZW4gZnVuY3Rpb24uCisjIGRlZmluZSBHVEVTVF9OT19JTkxJTkVf
IF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKKyNlbHNlCisjIGRlZmluZSBHVEVTVF9OT19JTkxJ
TkVfCisjZW5kaWYKIAotI2lmbmRlZiBHVEVTVF9BUElfCi0jZGVmaW5lIEdURVNUX0FQSV8KKy8v
IF9MSUJDUFBfVkVSU0lPTiBpcyBkZWZpbmVkIGJ5IHRoZSBsaWJjKysgbGlicmFyeSBmcm9tIHRo
ZSBMTFZNIHByb2plY3QuCisjaWYgZGVmaW5lZChfX0dMSUJDWFhfXykgfHwgZGVmaW5lZChfTElC
Q1BQX1ZFUlNJT04pCisjIGRlZmluZSBHVEVTVF9IQVNfQ1hYQUJJX0hfIDEKKyNlbHNlCisjIGRl
ZmluZSBHVEVTVF9IQVNfQ1hYQUJJX0hfIDAKICNlbmRpZgogCisvLyBBIGZ1bmN0aW9uIGxldmVs
IGF0dHJpYnV0ZSB0byBkaXNhYmxlIGNoZWNraW5nIGZvciB1c2Ugb2YgdW5pbml0aWFsaXplZAor
Ly8gbWVtb3J5IHdoZW4gYnVpbHQgd2l0aCBNZW1vcnlTYW5pdGl6ZXIuCisjaWYgZGVmaW5lZChf
X2NsYW5nX18pCisjIGlmIF9faGFzX2ZlYXR1cmUobWVtb3J5X3Nhbml0aXplcikKKyMgIGRlZmlu
ZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfTUVNT1JZXyBcCisgICAgICAgX19hdHRyaWJ1
dGVfXygobm9fc2FuaXRpemVfbWVtb3J5KSkKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0FUVFJJ
QlVURV9OT19TQU5JVElaRV9NRU1PUllfCisjIGVuZGlmICAvLyBfX2hhc19mZWF0dXJlKG1lbW9y
eV9zYW5pdGl6ZXIpCisjZWxzZQorIyBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpF
X01FTU9SWV8KKyNlbmRpZiAgLy8gX19jbGFuZ19fCisKKy8vIEEgZnVuY3Rpb24gbGV2ZWwgYXR0
cmlidXRlIHRvIGRpc2FibGUgQWRkcmVzc1Nhbml0aXplciBpbnN0cnVtZW50YXRpb24uCisjaWYg
ZGVmaW5lZChfX2NsYW5nX18pCisjIGlmIF9faGFzX2ZlYXR1cmUoYWRkcmVzc19zYW5pdGl6ZXIp
CisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX0FERFJFU1NfIFwKKyAgICAg
ICBfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV9hZGRyZXNzKSkKKyMgZWxzZQorIyAgZGVmaW5l
IEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTXworIyBlbmRpZiAgLy8gX19oYXNf
ZmVhdHVyZShhZGRyZXNzX3Nhbml0aXplcikKKyNlbHNlCisjIGRlZmluZSBHVEVTVF9BVFRSSUJV
VEVfTk9fU0FOSVRJWkVfQUREUkVTU18KKyNlbmRpZiAgLy8gX19jbGFuZ19fCisKKy8vIEEgZnVu
Y3Rpb24gbGV2ZWwgYXR0cmlidXRlIHRvIGRpc2FibGUgVGhyZWFkU2FuaXRpemVyIGluc3RydW1l
bnRhdGlvbi4KKyNpZiBkZWZpbmVkKF9fY2xhbmdfXykKKyMgaWYgX19oYXNfZmVhdHVyZSh0aHJl
YWRfc2FuaXRpemVyKQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9USFJF
QURfIFwKKyAgICAgICBfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV90aHJlYWQpKQorIyBlbHNl
CisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KKyMgZW5kaWYg
IC8vIF9faGFzX2ZlYXR1cmUodGhyZWFkX3Nhbml0aXplcikKKyNlbHNlCisjIGRlZmluZSBHVEVT
VF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXworI2VuZGlmICAvLyBfX2NsYW5nX18KKwog
bmFtZXNwYWNlIHRlc3RpbmcgewogCiBjbGFzcyBNZXNzYWdlOwogCisjaWYgZGVmaW5lZChHVEVT
VF9UVVBMRV9OQU1FU1BBQ0VfKQorLy8gSW1wb3J0IHR1cGxlIGFuZCBmcmllbmRzIGludG8gdGhl
IDo6dGVzdGluZyBuYW1lc3BhY2UuCisvLyBJdCBpcyBwYXJ0IG9mIG91ciBpbnRlcmZhY2UsIGhh
dmluZyB0aGVtIGluIDo6dGVzdGluZyBhbGxvd3MgdXMgdG8gY2hhbmdlCisvLyB0aGVpciB0eXBl
cyBhcyBuZWVkZWQuCit1c2luZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjpnZXQ7Cit1c2luZyBH
VEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjptYWtlX3R1cGxlOwordXNpbmcgR1RFU1RfVFVQTEVfTkFN
RVNQQUNFXzo6dHVwbGU7Cit1c2luZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjp0dXBsZV9zaXpl
OwordXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXzo6dHVwbGVfZWxlbWVudDsKKyNlbmRpZiAg
Ly8gZGVmaW5lZChHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfKQorCiBuYW1lc3BhY2UgaW50ZXJuYWwg
ewogCi1jbGFzcyBTdHJpbmc7CisvLyBBIHNlY3JldCB0eXBlIHRoYXQgR29vZ2xlIFRlc3QgdXNl
cnMgZG9uJ3Qga25vdyBhYm91dC4gIEl0IGhhcyBubworLy8gZGVmaW5pdGlvbiBvbiBwdXJwb3Nl
LiAgVGhlcmVmb3JlIGl0J3MgaW1wb3NzaWJsZSB0byBjcmVhdGUgYQorLy8gU2VjcmV0IG9iamVj
dCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LgorY2xhc3MgU2VjcmV0OwogCi1jbGFzcyBTdHJTdHJl
YW0gOiBwdWJsaWMgOjpzdGQ6OnN0cmluZ3N0cmVhbSB7Ci0gcHVibGljOgotICB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9Ci0gIHZvaWQqIG9wZXJhdG9y
IG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfQorLy8gVGhlIEdURVNUX0NPTVBJ
TEVfQVNTRVJUXyBtYWNybyBjYW4gYmUgdXNlZCB0byB2ZXJpZnkgdGhhdCBhIGNvbXBpbGUgdGlt
ZQorLy8gZXhwcmVzc2lvbiBpcyB0cnVlLiBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIHVzZSBpdCB0
byB2ZXJpZnkgdGhlCisvLyBzaXplIG9mIGEgc3RhdGljIGFycmF5OgorLy8KKy8vICAgR1RFU1Rf
Q09NUElMRV9BU1NFUlRfKEdURVNUX0FSUkFZX1NJWkVfKG5hbWVzKSA9PSBOVU1fTkFNRVMsCisv
LyAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc19pbmNvcnJlY3Rfc2l6ZSk7CisvLworLy8g
b3IgdG8gbWFrZSBzdXJlIGEgc3RydWN0IGlzIHNtYWxsZXIgdGhhbiBhIGNlcnRhaW4gc2l6ZToK
Ky8vCisvLyAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhzaXplb2YoZm9vKSA8IDEyOCwgZm9vX3Rv
b19sYXJnZSk7CisvLworLy8gVGhlIHNlY29uZCBhcmd1bWVudCB0byB0aGUgbWFjcm8gaXMgdGhl
IG5hbWUgb2YgdGhlIHZhcmlhYmxlLiBJZgorLy8gdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UsIG1v
c3QgY29tcGlsZXJzIHdpbGwgaXNzdWUgYSB3YXJuaW5nL2Vycm9yCisvLyBjb250YWluaW5nIHRo
ZSBuYW1lIG9mIHRoZSB2YXJpYWJsZS4KKworI2lmIEdURVNUX0xBTkdfQ1hYMTEKKyMgZGVmaW5l
IEdURVNUX0NPTVBJTEVfQVNTRVJUXyhleHByLCBtc2cpIHN0YXRpY19hc3NlcnQoZXhwciwgI21z
ZykKKyNlbHNlICAvLyAhR1RFU1RfTEFOR19DWFgxMQordGVtcGxhdGUgPGJvb2w+CisgIHN0cnVj
dCBDb21waWxlQXNzZXJ0IHsKK307CiAKLSAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXpl
KSB7Ci0gICAgcmV0dXJuIG1hbGxvYyhzaXplKTsKLSAgfQorIyBkZWZpbmUgR1RFU1RfQ09NUElM
RV9BU1NFUlRfKGV4cHIsIG1zZykgXAorICB0eXBlZGVmIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNv
bXBpbGVBc3NlcnQ8KHN0YXRpY19jYXN0PGJvb2w+KGV4cHIpKT4gXAorICAgICAgbXNnW3N0YXRp
Y19jYXN0PGJvb2w+KGV4cHIpID8gMSA6IC0xXSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXworI2Vu
ZGlmICAvLyAhR1RFU1RfTEFOR19DWFgxMQogCi0gIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQq
IHApIHsKLSAgICBmcmVlKHApOwotICB9CisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIEdU
RVNUX0NPTVBJTEVfQVNTRVJUXzoKKy8vCisvLyAoSW4gQysrMTEsIHdlIHNpbXBseSB1c2Ugc3Rh
dGljX2Fzc2VydCBpbnN0ZWFkIG9mIHRoZSBmb2xsb3dpbmcpCisvLworLy8gLSBHVEVTVF9DT01Q
SUxFX0FTU0VSVF8gd29ya3MgYnkgZGVmaW5pbmcgYW4gYXJyYXkgdHlwZSB0aGF0IGhhcyAtMQor
Ly8gICBlbGVtZW50cyAoYW5kIHRodXMgaXMgaW52YWxpZCkgd2hlbiB0aGUgZXhwcmVzc2lvbiBp
cyBmYWxzZS4KKy8vCisvLyAtIFRoZSBzaW1wbGVyIGRlZmluaXRpb24KKy8vCisvLyAgICAjZGVm
aW5lIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhleHByLCBtc2cpIHR5cGVkZWYgY2hhciBtc2dbKGV4
cHIpID8gMSA6IC0xXQorLy8KKy8vICAgZG9lcyBub3Qgd29yaywgYXMgZ2NjIHN1cHBvcnRzIHZh
cmlhYmxlLWxlbmd0aCBhcnJheXMgd2hvc2Ugc2l6ZXMKKy8vICAgYXJlIGRldGVybWluZWQgYXQg
cnVuLXRpbWUgKHRoaXMgaXMgZ2NjJ3MgZXh0ZW5zaW9uIGFuZCBub3QgcGFydAorLy8gICBvZiB0
aGUgQysrIHN0YW5kYXJkKS4gIEFzIGEgcmVzdWx0LCBnY2MgZmFpbHMgdG8gcmVqZWN0IHRoZQor
Ly8gICBmb2xsb3dpbmcgY29kZSB3aXRoIHRoZSBzaW1wbGUgZGVmaW5pdGlvbjoKKy8vCisvLyAg
ICAgaW50IGZvbzsKKy8vICAgICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oZm9vLCBtc2cpOyAvLyBu
b3Qgc3VwcG9zZWQgdG8gY29tcGlsZSBhcyBmb28gaXMKKy8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBub3QgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuCisvLworLy8g
LSBCeSB1c2luZyB0aGUgdHlwZSBDb21waWxlQXNzZXJ0PChib29sKGV4cHIpKT4sIHdlIGVuc3Vy
ZXMgdGhhdAorLy8gICBleHByIGlzIGEgY29tcGlsZS10aW1lIGNvbnN0YW50LiAgKFRlbXBsYXRl
IGFyZ3VtZW50cyBtdXN0IGJlCisvLyAgIGRldGVybWluZWQgYXQgY29tcGlsZS10aW1lLikKKy8v
CisvLyAtIFRoZSBvdXR0ZXIgcGFyZW50aGVzZXMgaW4gQ29tcGlsZUFzc2VydDwoYm9vbChleHBy
KSk+IGFyZSBuZWNlc3NhcnkKKy8vICAgdG8gd29yayBhcm91bmQgYSBidWcgaW4gZ2NjIDMuNC40
IGFuZCA0LjAuMS4gIElmIHdlIGhhZCB3cml0dGVuCisvLworLy8gICAgIENvbXBpbGVBc3NlcnQ8
Ym9vbChleHByKT4KKy8vCisvLyAgIGluc3RlYWQsIHRoZXNlIGNvbXBpbGVycyB3aWxsIHJlZnVz
ZSB0byBjb21waWxlCisvLworLy8gICAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyg1ID4gMCwgc29t
ZV9tZXNzYWdlKTsKKy8vCisvLyAgIChUaGV5IHNlZW0gdG8gdGhpbmsgdGhlICI+IiBpbiAiNSA+
IDAiIG1hcmtzIHRoZSBlbmQgb2YgdGhlCisvLyAgIHRlbXBsYXRlIGFyZ3VtZW50IGxpc3QuKQor
Ly8KKy8vIC0gVGhlIGFycmF5IHNpemUgaXMgKGJvb2woZXhwcikgPyAxIDogLTEpLCBpbnN0ZWFk
IG9mIHNpbXBseQorLy8KKy8vICAgICAoKGV4cHIpID8gMSA6IC0xKS4KKy8vCisvLyAgIFRoaXMg
aXMgdG8gYXZvaWQgcnVubmluZyBpbnRvIGEgYnVnIGluIE1TIFZDIDcuMSwgd2hpY2gKKy8vICAg
Y2F1c2VzICgoMC4wKSA/IDEgOiAtMSkgdG8gaW5jb3JyZWN0bHkgZXZhbHVhdGUgdG8gMS4KIAot
ICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgewotICAgIHJldHVybiBtYWxsb2Mo
c2l6ZSk7Ci0gIH0KKy8vIFN0YXRpY0Fzc2VydFR5cGVFcUhlbHBlciBpcyB1c2VkIGJ5IFN0YXRp
Y0Fzc2VydFR5cGVFcSBkZWZpbmVkIGluIGd0ZXN0LmguCisvLworLy8gVGhpcyB0ZW1wbGF0ZSBp
cyBkZWNsYXJlZCwgYnV0IGludGVudGlvbmFsbHkgdW5kZWZpbmVkLgordGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMj4KK3N0cnVjdCBTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI7CiAK
LSAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7Ci0gICAgZnJlZShwKTsKLSAgfQor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgU3RhdGljQXNzZXJ0VHlwZUVxSGVscGVyPFQs
IFQ+IHsKKyAgZW51bSB7IHZhbHVlID0gdHJ1ZSB9OwogfTsKIAorLy8gRXZhbHVhdGVzIHRvIHRo
ZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gJ2FycmF5Jy4KKyNkZWZpbmUgR1RFU1RfQVJSQVlfU0la
RV8oYXJyYXkpIChzaXplb2YoYXJyYXkpIC8gc2l6ZW9mKGFycmF5WzBdKSkKIAorI2lmIEdURVNU
X0hBU19HTE9CQUxfU1RSSU5HCit0eXBlZGVmIDo6c3RyaW5nIHN0cmluZzsKKyNlbHNlCit0eXBl
ZGVmIDo6c3RkOjpzdHJpbmcgc3RyaW5nOworI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NU
UklORworCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCit0eXBlZGVmIDo6d3N0cmluZyB3
c3RyaW5nOworI2VsaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCit0eXBlZGVmIDo6c3RkOjp3c3Ry
aW5nIHdzdHJpbmc7CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwogCiAvLyBB
IGhlbHBlciBmb3Igc3VwcHJlc3Npbmcgd2FybmluZ3Mgb24gY29uc3RhbnQgY29uZGl0aW9uLiAg
SXQganVzdAogLy8gcmV0dXJucyAnY29uZGl0aW9uJy4KQEAgLTY4NSw2ICsxMTM3LDEyIEBAIGNs
YXNzIHNjb3BlZF9wdHIgewogICAgICAgcHRyXyA9IHA7CiAgICAgfQogICB9CisKKyAgZnJpZW5k
IHZvaWQgc3dhcChzY29wZWRfcHRyJiBhLCBzY29wZWRfcHRyJiBiKSB7CisgICAgdXNpbmcgc3Rk
Ojpzd2FwOworICAgIHN3YXAoYS5wdHJfLCBiLnB0cl8pOworICB9CisKICBwcml2YXRlOgogICBU
KiBwdHJfOwogCkBAIC03MDUsNyArMTE2Myw5IEBAIGNsYXNzIEdURVNUX0FQSV8gUkUgewogICBS
RShjb25zdCA6OnN0ZDo6c3RyaW5nJiByZWdleCkgeyBJbml0KHJlZ2V4LmNfc3RyKCkpOyB9ICAv
LyBOT0xJTlQKIAogI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKICAgUkUoY29uc3QgOjpz
dHJpbmcmIHJlZ2V4KSB7IEluaXQocmVnZXguY19zdHIoKSk7IH0gIC8vIE5PTElOVAorCiAjZW5k
aWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCiAKICAgUkUoY29uc3QgY2hhciogcmVnZXgp
IHsgSW5pdChyZWdleCk7IH0gIC8vIE5PTElOVApAQCAtNzI5LDEyICsxMTg5LDE0IEBAIGNsYXNz
IEdURVNUX0FQSV8gUkUgewogICB9CiAKICNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCiAg
IHN0YXRpYyBib29sIEZ1bGxNYXRjaChjb25zdCA6OnN0cmluZyYgc3RyLCBjb25zdCBSRSYgcmUp
IHsKICAgICByZXR1cm4gRnVsbE1hdGNoKHN0ci5jX3N0cigpLCByZSk7CiAgIH0KICAgc3RhdGlj
IGJvb2wgUGFydGlhbE1hdGNoKGNvbnN0IDo6c3RyaW5nJiBzdHIsIGNvbnN0IFJFJiByZSkgewog
ICAgIHJldHVybiBQYXJ0aWFsTWF0Y2goc3RyLmNfc3RyKCksIHJlKTsKICAgfQorCiAjZW5kaWYg
IC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCiAKICAgc3RhdGljIGJvb2wgRnVsbE1hdGNoKGNv
bnN0IGNoYXIqIHN0ciwgY29uc3QgUkUmIHJlKTsKQEAgLTc0MywyMiArMTIwNSwzNiBAQCBjbGFz
cyBHVEVTVF9BUElfIFJFIHsKICBwcml2YXRlOgogICB2b2lkIEluaXQoY29uc3QgY2hhciogcmVn
ZXgpOwogCi0gIC8vIFdlIHVzZSBhIGNvbnN0IGNoYXIqIGluc3RlYWQgb2YgYSBzdHJpbmcsIGFz
IEdvb2dsZSBUZXN0IG1heSBiZSB1c2VkCi0gIC8vIHdoZXJlIHN0cmluZyBpcyBub3QgYXZhaWxh
YmxlLiAgV2UgYWxzbyBkbyBub3QgdXNlIEdvb2dsZSBUZXN0J3Mgb3duCi0gIC8vIFN0cmluZyB0
eXBlIGhlcmUsIGluIG9yZGVyIHRvIHNpbXBsaWZ5IGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZQot
ICAvLyBmaWxlcy4KKyAgLy8gV2UgdXNlIGEgY29uc3QgY2hhciogaW5zdGVhZCBvZiBhbiBzdGQ6
OnN0cmluZywgYXMgR29vZ2xlIFRlc3QgdXNlZCB0byBiZQorICAvLyB1c2VkIHdoZXJlIHN0ZDo6
c3RyaW5nIGlzIG5vdCBhdmFpbGFibGUuICBUT0RPKHdhbkBnb29nbGUuY29tKTogY2hhbmdlIHRv
CisgIC8vIHN0ZDo6c3RyaW5nLgogICBjb25zdCBjaGFyKiBwYXR0ZXJuXzsKICAgYm9vbCBpc192
YWxpZF87CisKICNpZiBHVEVTVF9VU0VTX1BPU0lYX1JFCisKICAgcmVnZXhfdCBmdWxsX3JlZ2V4
XzsgICAgIC8vIEZvciBGdWxsTWF0Y2goKS4KICAgcmVnZXhfdCBwYXJ0aWFsX3JlZ2V4XzsgIC8v
IEZvciBQYXJ0aWFsTWF0Y2goKS4KKwogI2Vsc2UgIC8vIEdURVNUX1VTRVNfU0lNUExFX1JFCisK
ICAgY29uc3QgY2hhciogZnVsbF9wYXR0ZXJuXzsgIC8vIEZvciBGdWxsTWF0Y2goKTsKKwogI2Vu
ZGlmCiAKICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhSRSk7CiB9OwogCisvLyBGb3JtYXRzIGEg
c291cmNlIGZpbGUgcGF0aCBhbmQgYSBsaW5lIG51bWJlciBhcyB0aGV5IHdvdWxkIGFwcGVhcgor
Ly8gaW4gYW4gZXJyb3IgbWVzc2FnZSBmcm9tIHRoZSBjb21waWxlciB1c2VkIHRvIGNvbXBpbGUg
dGhpcyBjb2RlLgorR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEZvcm1hdEZpbGVMb2NhdGlvbihj
b25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7CisKKy8vIEZvcm1hdHMgYSBmaWxlIGxvY2F0aW9u
IGZvciBjb21waWxlci1pbmRlcGVuZGVudCBYTUwgb3V0cHV0LgorLy8gQWx0aG91Z2ggdGhpcyBm
dW5jdGlvbiBpcyBub3QgcGxhdGZvcm0gZGVwZW5kZW50LCB3ZSBwdXQgaXQgbmV4dCB0bworLy8g
Rm9ybWF0RmlsZUxvY2F0aW9uIGluIG9yZGVyIHRvIGNvbnRyYXN0IHRoZSB0d28gZnVuY3Rpb25z
LgorR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxl
TG9jYXRpb24oY29uc3QgY2hhciogZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lKTsKKwogLy8gRGVmaW5l
cyBsb2dnaW5nIHV0aWxpdGllczoKIC8vICAgR1RFU1RfTE9HXyhzZXZlcml0eSkgLSBsb2dzIG1l
c3NhZ2VzIGF0IHRoZSBzcGVjaWZpZWQgc2V2ZXJpdHkgbGV2ZWwuIFRoZQogLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgaXRzZWxmIGlzIHN0cmVhbWVkIGludG8gdGhlIG1hY3Jv
LgpAQCAtNzkwLDEzICsxMjY2LDE4IEBAIGNsYXNzIEdURVNUX0FQSV8gR1Rlc3RMb2cgewogICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEdUZXN0TG9nKTsKIH07CiAKLSNkZWZpbmUg
R1RFU1RfTE9HXyhzZXZlcml0eSkgXAorI2lmICFkZWZpbmVkKEdURVNUX0xPR18pCisKKyMgZGVm
aW5lIEdURVNUX0xPR18oc2V2ZXJpdHkpIFwKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpHVGVz
dExvZyg6OnRlc3Rpbmc6OmludGVybmFsOjpHVEVTVF8jI3NldmVyaXR5LCBcCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKS5HZXRTdHJlYW0oKQog
CiBpbmxpbmUgdm9pZCBMb2dUb1N0ZGVycigpIHt9CiBpbmxpbmUgdm9pZCBGbHVzaEluZm9Mb2co
KSB7IGZmbHVzaChOVUxMKTsgfQogCisjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0xPR18pCisK
KyNpZiAhZGVmaW5lZChHVEVTVF9DSEVDS18pCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAt
IERPIE5PVCBVU0UuCiAvLwogLy8gR1RFU1RfQ0hFQ0tfIGlzIGFuIGFsbC1tb2RlIGFzc2VydC4g
SXQgYWJvcnRzIHRoZSBwcm9ncmFtIGlmIHRoZSBjb25kaXRpb24KQEAgLTgxMSwxMiArMTI5Miwx
MyBAQCBpbmxpbmUgdm9pZCBGbHVzaEluZm9Mb2coKSB7IGZmbHVzaChOVUxMKTsgfQogLy8gICAg
Y29uZGl0aW9uIGl0c2VsZiwgcGx1cyBhZGRpdGlvbmFsIG1lc3NhZ2Ugc3RyZWFtZWQgaW50byBp
dCwgaWYgYW55LAogLy8gICAgYW5kIHRoZW4gaXQgYWJvcnRzIHRoZSBwcm9ncmFtLiBJdCBhYm9y
dHMgdGhlIHByb2dyYW0gaXJyZXNwZWN0aXZlIG9mCiAvLyAgICB3aGV0aGVyIGl0IGlzIGJ1aWx0
IGluIHRoZSBkZWJ1ZyBtb2RlIG9yIG5vdC4KLSNkZWZpbmUgR1RFU1RfQ0hFQ0tfKGNvbmRpdGlv
bikgXAorIyBkZWZpbmUgR1RFU1RfQ0hFQ0tfKGNvbmRpdGlvbikgXAogICAgIEdURVNUX0FNQklH
VU9VU19FTFNFX0JMT0NLRVJfIFwKICAgICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXNUcnVl
KGNvbmRpdGlvbikpIFwKICAgICAgIDsgXAogICAgIGVsc2UgXAogICAgICAgR1RFU1RfTE9HXyhG
QVRBTCkgPDwgIkNvbmRpdGlvbiAiICNjb25kaXRpb24gIiBmYWlsZWQuICIKKyNlbmRpZiAgLy8g
IWRlZmluZWQoR1RFU1RfQ0hFQ0tfKQogCiAvLyBBbiBhbGwtbW9kZSBhc3NlcnQgdG8gdmVyaWZ5
IHRoYXQgdGhlIGdpdmVuIFBPU0lYLXN0eWxlIGZ1bmN0aW9uCiAvLyBjYWxsIHJldHVybnMgMCAo
aW5kaWNhdGluZyBzdWNjZXNzKS4gIEtub3duIGxpbWl0YXRpb246IHRoaXMKQEAgLTgyOCw4ICsx
MzEwLDc5IEBAIGlubGluZSB2b2lkIEZsdXNoSW5mb0xvZygpIHsgZmZsdXNoKE5VTEwpOyB9CiAg
ICAgR1RFU1RfTE9HXyhGQVRBTCkgPDwgI3Bvc2l4X2NhbGwgPDwgImZhaWxlZCB3aXRoIGVycm9y
ICIgXAogICAgICAgICAgICAgICAgICAgICAgIDw8IGd0ZXN0X2Vycm9yCiAKKyNpZiBHVEVTVF9I
QVNfU1REX01PVkVfCit1c2luZyBzdGQ6Om1vdmU7CisjZWxzZSAgLy8gR1RFU1RfSEFTX1NURF9N
T1ZFXwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25zdCBUJiBtb3ZlKGNvbnN0IFQmIHQpIHsK
KyAgcmV0dXJuIHQ7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfTU9WRV8KKwogLy8gSU5U
RVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KIC8vCisvLyBV
c2UgSW1wbGljaXRDYXN0XyBhcyBhIHNhZmUgdmVyc2lvbiBvZiBzdGF0aWNfY2FzdCBmb3IgdXBj
YXN0aW5nIGluCisvLyB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4gY2FzdGluZyBhIEZvbyogdG8g
YSBTdXBlcmNsYXNzT2ZGb28qIG9yIGEKKy8vIGNvbnN0IEZvbyopLiAgV2hlbiB5b3UgdXNlIElt
cGxpY2l0Q2FzdF8sIHRoZSBjb21waWxlciBjaGVja3MgdGhhdAorLy8gdGhlIGNhc3QgaXMgc2Fm
ZS4gIFN1Y2ggZXhwbGljaXQgSW1wbGljaXRDYXN0X3MgYXJlIG5lY2Vzc2FyeSBpbgorLy8gc3Vy
cHJpc2luZ2x5IG1hbnkgc2l0dWF0aW9ucyB3aGVyZSBDKysgZGVtYW5kcyBhbiBleGFjdCB0eXBl
IG1hdGNoCisvLyBpbnN0ZWFkIG9mIGFuIGFyZ3VtZW50IHR5cGUgY29udmVydGFibGUgdG8gYSB0
YXJnZXQgdHlwZS4KKy8vCisvLyBUaGUgc3ludGF4IGZvciB1c2luZyBJbXBsaWNpdENhc3RfIGlz
IHRoZSBzYW1lIGFzIGZvciBzdGF0aWNfY2FzdDoKKy8vCisvLyAgIEltcGxpY2l0Q2FzdF88VG9U
eXBlPihleHByKQorLy8KKy8vIEltcGxpY2l0Q2FzdF8gd291bGQgaGF2ZSBiZWVuIHBhcnQgb2Yg
dGhlIEMrKyBzdGFuZGFyZCBsaWJyYXJ5LAorLy8gYnV0IHRoZSBwcm9wb3NhbCB3YXMgc3VibWl0
dGVkIHRvbyBsYXRlLiAgSXQgd2lsbCBwcm9iYWJseSBtYWtlCisvLyBpdHMgd2F5IGludG8gdGhl
IGxhbmd1YWdlIGluIHRoZSBmdXR1cmUuCisvLworLy8gVGhpcyByZWxhdGl2ZWx5IHVnbHkgbmFt
ZSBpcyBpbnRlbnRpb25hbC4gSXQgcHJldmVudHMgY2xhc2hlcyB3aXRoCisvLyBzaW1pbGFyIGZ1
bmN0aW9ucyB1c2VycyBtYXkgaGF2ZSAoZS5nLiwgaW1wbGljaXRfY2FzdCkuIFRoZSBpbnRlcm5h
bAorLy8gbmFtZXNwYWNlIGFsb25lIGlzIG5vdCBlbm91Z2ggYmVjYXVzZSB0aGUgZnVuY3Rpb24g
Y2FuIGJlIGZvdW5kIGJ5IEFETC4KK3RlbXBsYXRlPHR5cGVuYW1lIFRvPgoraW5saW5lIFRvIElt
cGxpY2l0Q2FzdF8oVG8geCkgeyByZXR1cm4geDsgfQorCisvLyBXaGVuIHlvdSB1cGNhc3QgKHRo
YXQgaXMsIGNhc3QgYSBwb2ludGVyIGZyb20gdHlwZSBGb28gdG8gdHlwZQorLy8gU3VwZXJjbGFz
c09mRm9vKSwgaXQncyBmaW5lIHRvIHVzZSBJbXBsaWNpdENhc3RfPD4sIHNpbmNlIHVwY2FzdHMK
Ky8vIGFsd2F5cyBzdWNjZWVkLiAgV2hlbiB5b3UgZG93bmNhc3QgKHRoYXQgaXMsIGNhc3QgYSBw
b2ludGVyIGZyb20KKy8vIHR5cGUgRm9vIHRvIHR5cGUgU3ViY2xhc3NPZkZvbyksIHN0YXRpY19j
YXN0PD4gaXNuJ3Qgc2FmZSwgYmVjYXVzZQorLy8gaG93IGRvIHlvdSBrbm93IHRoZSBwb2ludGVy
IGlzIHJlYWxseSBvZiB0eXBlIFN1YmNsYXNzT2ZGb28/ICBJdAorLy8gY291bGQgYmUgYSBiYXJl
IEZvbywgb3Igb2YgdHlwZSBEaWZmZXJlbnRTdWJjbGFzc09mRm9vLiAgVGh1cywKKy8vIHdoZW4g
eW91IGRvd25jYXN0LCB5b3Ugc2hvdWxkIHVzZSB0aGlzIG1hY3JvLiAgSW4gZGVidWcgbW9kZSwg
d2UKKy8vIHVzZSBkeW5hbWljX2Nhc3Q8PiB0byBkb3VibGUtY2hlY2sgdGhlIGRvd25jYXN0IGlz
IGxlZ2FsICh3ZSBkaWUKKy8vIGlmIGl0J3Mgbm90KS4gIEluIG5vcm1hbCBtb2RlLCB3ZSBkbyB0
aGUgZWZmaWNpZW50IHN0YXRpY19jYXN0PD4KKy8vIGluc3RlYWQuICBUaHVzLCBpdCdzIGltcG9y
dGFudCB0byB0ZXN0IGluIGRlYnVnIG1vZGUgdG8gbWFrZSBzdXJlCisvLyB0aGUgY2FzdCBpcyBs
ZWdhbCEKKy8vICAgIFRoaXMgaXMgdGhlIG9ubHkgcGxhY2UgaW4gdGhlIGNvZGUgd2Ugc2hvdWxk
IHVzZSBkeW5hbWljX2Nhc3Q8Pi4KKy8vIEluIHBhcnRpY3VsYXIsIHlvdSBTSE9VTEROJ1QgYmUg
dXNpbmcgZHluYW1pY19jYXN0PD4gaW4gb3JkZXIgdG8KKy8vIGRvIFJUVEkgKGVnIGNvZGUgbGlr
ZSB0aGlzOgorLy8gICAgaWYgKGR5bmFtaWNfY2FzdDxTdWJjbGFzczE+KGZvbykpIEhhbmRsZUFT
dWJjbGFzczFPYmplY3QoZm9vKTsKKy8vICAgIGlmIChkeW5hbWljX2Nhc3Q8U3ViY2xhc3MyPihm
b28pKSBIYW5kbGVBU3ViY2xhc3MyT2JqZWN0KGZvbyk7CisvLyBZb3Ugc2hvdWxkIGRlc2lnbiB0
aGUgY29kZSBzb21lIG90aGVyIHdheSBub3QgdG8gbmVlZCB0aGlzLgorLy8KKy8vIFRoaXMgcmVs
YXRpdmVseSB1Z2x5IG5hbWUgaXMgaW50ZW50aW9uYWwuIEl0IHByZXZlbnRzIGNsYXNoZXMgd2l0
aAorLy8gc2ltaWxhciBmdW5jdGlvbnMgdXNlcnMgbWF5IGhhdmUgKGUuZy4sIGRvd25fY2FzdCku
IFRoZSBpbnRlcm5hbAorLy8gbmFtZXNwYWNlIGFsb25lIGlzIG5vdCBlbm91Z2ggYmVjYXVzZSB0
aGUgZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGJ5IEFETC4KK3RlbXBsYXRlPHR5cGVuYW1lIFRvLCB0
eXBlbmFtZSBGcm9tPiAgLy8gdXNlIGxpa2UgdGhpczogRG93bkNhc3RfPFQqPihmb28pOworaW5s
aW5lIFRvIERvd25DYXN0XyhGcm9tKiBmKSB7ICAvLyBzbyB3ZSBvbmx5IGFjY2VwdCBwb2ludGVy
cworICAvLyBFbnN1cmVzIHRoYXQgVG8gaXMgYSBzdWItdHlwZSBvZiBGcm9tICouICBUaGlzIHRl
c3QgaXMgaGVyZSBvbmx5CisgIC8vIGZvciBjb21waWxlLXRpbWUgdHlwZSBjaGVja2luZywgYW5k
IGhhcyBubyBvdmVyaGVhZCBpbiBhbgorICAvLyBvcHRpbWl6ZWQgYnVpbGQgYXQgcnVuLXRpbWUs
IGFzIGl0IHdpbGwgYmUgb3B0aW1pemVkIGF3YXkKKyAgLy8gY29tcGxldGVseS4KKyAgR1RFU1Rf
SU5URU5USU9OQUxfQ09OU1RfQ09ORF9QVVNIXygpCisgIGlmIChmYWxzZSkgeworICBHVEVTVF9J
TlRFTlRJT05BTF9DT05TVF9DT05EX1BPUF8oKQorICAgIGNvbnN0IFRvIHRvID0gTlVMTDsKKyAg
ICA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEZyb20qPih0byk7CisgIH0KKwor
I2lmIEdURVNUX0hBU19SVFRJCisgIC8vIFJUVEk6IGRlYnVnIG1vZGUgb25seSEKKyAgR1RFU1Rf
Q0hFQ0tfKGYgPT0gTlVMTCB8fCBkeW5hbWljX2Nhc3Q8VG8+KGYpICE9IE5VTEwpOworI2VuZGlm
CisgIHJldHVybiBzdGF0aWNfY2FzdDxUbz4oZik7Cit9CisKIC8vIERvd25jYXN0cyB0aGUgcG9p
bnRlciBvZiB0eXBlIEJhc2UgdG8gRGVyaXZlZC4KIC8vIERlcml2ZWQgbXVzdCBiZSBhIHN1YmNs
YXNzIG9mIEJhc2UuIFRoZSBwYXJhbWV0ZXIgTVVTVAogLy8gcG9pbnQgdG8gYSBjbGFzcyBvZiB0
eXBlIERlcml2ZWQsIG5vdCBhbnkgc3ViY2xhc3Mgb2YgaXQuCkBAIC04MzksMTMgKzEzOTIsMTgg
QEAgdGVtcGxhdGUgPGNsYXNzIERlcml2ZWQsIGNsYXNzIEJhc2U+CiBEZXJpdmVkKiBDaGVja2Vk
RG93bmNhc3RUb0FjdHVhbFR5cGUoQmFzZSogYmFzZSkgewogI2lmIEdURVNUX0hBU19SVFRJCiAg
IEdURVNUX0NIRUNLXyh0eXBlaWQoKmJhc2UpID09IHR5cGVpZChEZXJpdmVkKSk7CisjZW5kaWYK
KworI2lmIEdURVNUX0hBU19ET1dOQ0FTVF8KKyAgcmV0dXJuIDo6ZG93bl9jYXN0PERlcml2ZWQq
PihiYXNlKTsKKyNlbGlmIEdURVNUX0hBU19SVFRJCiAgIHJldHVybiBkeW5hbWljX2Nhc3Q8RGVy
aXZlZCo+KGJhc2UpOyAgLy8gTk9MSU5UCiAjZWxzZQogICByZXR1cm4gc3RhdGljX2Nhc3Q8RGVy
aXZlZCo+KGJhc2UpOyAgLy8gUG9vciBtYW4ncyBkb3duY2FzdC4KICNlbmRpZgogfQogCi0jaWYg
R1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElS
RUNUSU9OCiAKIC8vIERlZmluZXMgdGhlIHN0ZGVyciBjYXB0dXJlcjoKIC8vICAgQ2FwdHVyZVN0
ZG91dCAgICAgLSBzdGFydHMgY2FwdHVyaW5nIHN0ZG91dC4KQEAgLTg1NCwzMCArMTQxMiwzOSBA
QCBEZXJpdmVkKiBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGUoQmFzZSogYmFzZSkgewogLy8g
ICBHZXRDYXB0dXJlZFN0ZGVyciAtIHN0b3BzIGNhcHR1cmluZyBzdGRlcnIgYW5kIHJldHVybnMg
dGhlIGNhcHR1cmVkIHN0cmluZy4KIC8vCiBHVEVTVF9BUElfIHZvaWQgQ2FwdHVyZVN0ZG91dCgp
OwotR1RFU1RfQVBJXyBTdHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKTsKK0dURVNUX0FQSV8gc3Rk
OjpzdHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKTsKIEdURVNUX0FQSV8gdm9pZCBDYXB0dXJlU3Rk
ZXJyKCk7Ci1HVEVTVF9BUElfIFN0cmluZyBHZXRDYXB0dXJlZFN0ZGVycigpOworR1RFU1RfQVBJ
XyBzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0ZGVycigpOworCisjZW5kaWYgIC8vIEdURVNUX0hB
U19TVFJFQU1fUkVESVJFQ1RJT04KIAotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElS
RUNUSU9OXworLy8gUmV0dXJucyBhIHBhdGggdG8gdGVtcG9yYXJ5IGRpcmVjdG9yeS4KK0dURVNU
X0FQSV8gc3RkOjpzdHJpbmcgVGVtcERpcigpOwogCisvLyBSZXR1cm5zIHRoZSBzaXplIChpbiBi
eXRlcykgb2YgYSBmaWxlLgorR1RFU1RfQVBJXyBzaXplX3QgR2V0RmlsZVNpemUoRklMRSogZmls
ZSk7CisKKy8vIFJlYWRzIHRoZSBlbnRpcmUgY29udGVudCBvZiBhIGZpbGUgYXMgYSBzdHJpbmcu
CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFJlYWRFbnRpcmVGaWxlKEZJTEUqIGZpbGUpOworCisv
LyBBbGwgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KK0dURVNUX0FQSV8gY29uc3QgOjpzdGQ6OnZl
Y3Rvcjx0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nPiYgR2V0QXJndnMoKTsKIAogI2lmIEdURVNU
X0hBU19ERUFUSF9URVNUCiAKLS8vIEEgY29weSBvZiBhbGwgY29tbWFuZCBsaW5lIGFyZ3VtZW50
cy4gIFNldCBieSBJbml0R29vZ2xlVGVzdCgpLgotZXh0ZXJuIDo6c3RkOjp2ZWN0b3I8U3RyaW5n
PiBnX2FyZ3ZzOworY29uc3QgOjpzdGQ6OnZlY3Rvcjx0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5n
PiYgR2V0SW5qZWN0YWJsZUFyZ3ZzKCk7Cit2b2lkIFNldEluamVjdGFibGVBcmd2cyhjb25zdCA6
OnN0ZDo6dmVjdG9yPHRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmc+KgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuZXdfYXJndnMpOwogCi0vLyBHVEVTVF9IQVNfREVBVEhfVEVTVCBpbXBs
aWVzIHdlIGhhdmUgOjpzdGQ6OnN0cmluZy4KLWNvbnN0IDo6c3RkOjp2ZWN0b3I8U3RyaW5nPiYg
R2V0QXJndnMoKTsKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCiAvLyBEZWZp
bmVzIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzLgotCi0jaWYgR1RFU1RfSEFTX1BUSFJFQUQK
LQotLy8gU2xlZXBzIGZvciAocm91Z2hseSkgbiBtaWxsaS1zZWNvbmRzLiAgVGhpcyBmdW5jdGlv
biBpcyBvbmx5IGZvcgotLy8gdGVzdGluZyBHb29nbGUgVGVzdCdzIG93biBjb25zdHJ1Y3RzLiAg
RG9uJ3QgdXNlIGl0IGluIHVzZXIgdGVzdHMsCi0vLyBlaXRoZXIgZGlyZWN0bHkgb3IgaW5kaXJl
Y3RseS4KKyNpZiBHVEVTVF9JU19USFJFQURTQUZFCisjIGlmIEdURVNUX0hBU19QVEhSRUFECisv
LyBTbGVlcHMgZm9yIChyb3VnaGx5KSBuIG1pbGxpc2Vjb25kcy4gIFRoaXMgZnVuY3Rpb24gaXMg
b25seSBmb3IgdGVzdGluZworLy8gR29vZ2xlIFRlc3QncyBvd24gY29uc3RydWN0cy4gIERvbid0
IHVzZSBpdCBpbiB1c2VyIHRlc3RzLCBlaXRoZXIKKy8vIGRpcmVjdGx5IG9yIGluZGlyZWN0bHku
CiBpbmxpbmUgdm9pZCBTbGVlcE1pbGxpc2Vjb25kcyhpbnQgbikgewogICBjb25zdCB0aW1lc3Bl
YyB0aW1lID0gewogICAgIDAsICAgICAgICAgICAgICAgICAgLy8gMCBzZWNvbmRzLgpAQCAtODg1
LDcgKzE0NTIsMTMgQEAgaW5saW5lIHZvaWQgU2xlZXBNaWxsaXNlY29uZHMoaW50IG4pIHsKICAg
fTsKICAgbmFub3NsZWVwKCZ0aW1lLCBOVUxMKTsKIH0KKyMgZW5kaWYgIC8vIEdURVNUX0hBU19Q
VEhSRUFECiAKKyMgaWYgR1RFU1RfSEFTX05PVElGSUNBVElPTl8KKy8vIE5vdGlmaWNhdGlvbiBo
YXMgYWxyZWFkeSBiZWVuIGltcG9ydGVkIGludG8gdGhlIG5hbWVzcGFjZS4KKy8vIE5vdGhpbmcg
dG8gZG8gaGVyZS4KKworIyBlbGlmIEdURVNUX0hBU19QVEhSRUFECiAvLyBBbGxvd3MgYSBjb250
cm9sbGVyIHRocmVhZCB0byBwYXVzZSBleGVjdXRpb24gb2YgbmV3bHkgY3JlYXRlZAogLy8gdGhy
ZWFkcyB1bnRpbCBub3RpZmllZC4gIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIG11c3QgYmUgY3Jl
YXRlZAogLy8gYW5kIGRlc3Ryb3llZCBpbiB0aGUgY29udHJvbGxlciB0aHJlYWQuCkBAIC04OTQs
MjYgKzE0NjcsOTcgQEAgaW5saW5lIHZvaWQgU2xlZXBNaWxsaXNlY29uZHMoaW50IG4pIHsKIC8v
IHVzZSBpdCBpbiB1c2VyIHRlc3RzLCBlaXRoZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseS4KIGNs
YXNzIE5vdGlmaWNhdGlvbiB7CiAgcHVibGljOgotICBOb3RpZmljYXRpb24oKSA6IG5vdGlmaWVk
XyhmYWxzZSkge30KKyAgTm90aWZpY2F0aW9uKCkgOiBub3RpZmllZF8oZmFsc2UpIHsKKyAgICBH
VEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4X2luaXQoJm11dGV4XywgTlVM
TCkpOworICB9CisgIH5Ob3RpZmljYXRpb24oKSB7CisgICAgcHRocmVhZF9tdXRleF9kZXN0cm95
KCZtdXRleF8pOworICB9CiAKICAgLy8gTm90aWZpZXMgYWxsIHRocmVhZHMgY3JlYXRlZCB3aXRo
IHRoaXMgbm90aWZpY2F0aW9uIHRvIHN0YXJ0LiBNdXN0CiAgIC8vIGJlIGNhbGxlZCBmcm9tIHRo
ZSBjb250cm9sbGVyIHRocmVhZC4KLSAgdm9pZCBOb3RpZnkoKSB7IG5vdGlmaWVkXyA9IHRydWU7
IH0KKyAgdm9pZCBOb3RpZnkoKSB7CisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZtdXRleF8pOwor
ICAgIG5vdGlmaWVkXyA9IHRydWU7CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4Xyk7
CisgIH0KIAogICAvLyBCbG9ja3MgdW50aWwgdGhlIGNvbnRyb2xsZXIgdGhyZWFkIG5vdGlmaWVz
LiBNdXN0IGJlIGNhbGxlZCBmcm9tIGEgdGVzdAogICAvLyB0aHJlYWQuCiAgIHZvaWQgV2FpdEZv
ck5vdGlmaWNhdGlvbigpIHsKLSAgICB3aGlsZSghbm90aWZpZWRfKSB7CisgICAgZm9yICg7Oykg
eworICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZtdXRleF8pOworICAgICAgY29uc3QgYm9vbCBu
b3RpZmllZCA9IG5vdGlmaWVkXzsKKyAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleF8p
OworICAgICAgaWYgKG5vdGlmaWVkKQorICAgICAgICBicmVhazsKICAgICAgIFNsZWVwTWlsbGlz
ZWNvbmRzKDEwKTsKICAgICB9CiAgIH0KIAogIHByaXZhdGU6Ci0gIHZvbGF0aWxlIGJvb2wgbm90
aWZpZWRfOworICBwdGhyZWFkX211dGV4X3QgbXV0ZXhfOworICBib29sIG5vdGlmaWVkXzsKIAog
ICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE5vdGlmaWNhdGlvbik7CiB9OwogCisj
IGVsaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RF
U1RfT1NfV0lORE9XU19SVAorCitHVEVTVF9BUElfIHZvaWQgU2xlZXBNaWxsaXNlY29uZHMoaW50
IG4pOworCisvLyBQcm92aWRlcyBsZWFrLXNhZmUgV2luZG93cyBrZXJuZWwgaGFuZGxlIG93bmVy
c2hpcC4KKy8vIFVzZWQgaW4gZGVhdGggdGVzdHMgYW5kIGluIHRocmVhZGluZyBzdXBwb3J0Lgor
Y2xhc3MgR1RFU1RfQVBJXyBBdXRvSGFuZGxlIHsKKyBwdWJsaWM6CisgIC8vIEFzc3VtZSB0aGF0
IFdpbjMyIEhBTkRMRSB0eXBlIGlzIGVxdWl2YWxlbnQgdG8gdm9pZCouIERvaW5nIHNvIGFsbG93
cyB1cyB0bworICAvLyBhdm9pZCBpbmNsdWRpbmcgPHdpbmRvd3MuaD4gaW4gdGhpcyBoZWFkZXIg
ZmlsZS4gSW5jbHVkaW5nIDx3aW5kb3dzLmg+IGlzCisgIC8vIHVuZGVzaXJhYmxlIGJlY2F1c2Ug
aXQgZGVmaW5lcyBhIGxvdCBvZiBzeW1ib2xzIGFuZCBtYWNyb3MgdGhhdCB0ZW5kIHRvCisgIC8v
IGNvbmZsaWN0IHdpdGggY2xpZW50IGNvZGUuIFRoaXMgYXNzdW1wdGlvbiBpcyB2ZXJpZmllZCBi
eQorICAvLyBXaW5kb3dzVHlwZXNUZXN0LkhBTkRMRUlzVm9pZFN0YXIuCisgIHR5cGVkZWYgdm9p
ZCogSGFuZGxlOworICBBdXRvSGFuZGxlKCk7CisgIGV4cGxpY2l0IEF1dG9IYW5kbGUoSGFuZGxl
IGhhbmRsZSk7CisKKyAgfkF1dG9IYW5kbGUoKTsKKworICBIYW5kbGUgR2V0KCkgY29uc3Q7Cisg
IHZvaWQgUmVzZXQoKTsKKyAgdm9pZCBSZXNldChIYW5kbGUgaGFuZGxlKTsKKworIHByaXZhdGU6
CisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGhhbmRsZSBpcyBhIHZhbGlkIGhhbmRsZSBvYmpl
Y3QgdGhhdCBjYW4gYmUgY2xvc2VkLgorICBib29sIElzQ2xvc2VhYmxlKCkgY29uc3Q7CisKKyAg
SGFuZGxlIGhhbmRsZV87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhBdXRv
SGFuZGxlKTsKK307CisKKy8vIEFsbG93cyBhIGNvbnRyb2xsZXIgdGhyZWFkIHRvIHBhdXNlIGV4
ZWN1dGlvbiBvZiBuZXdseSBjcmVhdGVkCisvLyB0aHJlYWRzIHVudGlsIG5vdGlmaWVkLiAgSW5z
dGFuY2VzIG9mIHRoaXMgY2xhc3MgbXVzdCBiZSBjcmVhdGVkCisvLyBhbmQgZGVzdHJveWVkIGlu
IHRoZSBjb250cm9sbGVyIHRocmVhZC4KKy8vCisvLyBUaGlzIGNsYXNzIGlzIG9ubHkgZm9yIHRl
c3RpbmcgR29vZ2xlIFRlc3QncyBvd24gY29uc3RydWN0cy4gRG8gbm90CisvLyB1c2UgaXQgaW4g
dXNlciB0ZXN0cywgZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCitjbGFzcyBHVEVTVF9B
UElfIE5vdGlmaWNhdGlvbiB7CisgcHVibGljOgorICBOb3RpZmljYXRpb24oKTsKKyAgdm9pZCBO
b3RpZnkoKTsKKyAgdm9pZCBXYWl0Rm9yTm90aWZpY2F0aW9uKCk7CisKKyBwcml2YXRlOgorICBB
dXRvSGFuZGxlIGV2ZW50XzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE5v
dGlmaWNhdGlvbik7Cit9OworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX05PVElGSUNBVElPTl8KKwor
Ly8gT24gTWluR1csIHdlIGNhbiBoYXZlIGJvdGggR1RFU1RfT1NfV0lORE9XUyBhbmQgR1RFU1Rf
SEFTX1BUSFJFQUQKKy8vIGRlZmluZWQsIGJ1dCB3ZSBkb24ndCB3YW50IHRvIHVzZSBNaW5HVydz
IHB0aHJlYWRzIGltcGxlbWVudGF0aW9uLCB3aGljaAorLy8gaGFzIGNvbmZvcm1hbmNlIHByb2Js
ZW1zIHdpdGggc29tZSB2ZXJzaW9ucyBvZiB0aGUgUE9TSVggc3RhbmRhcmQuCisjIGlmIEdURVNU
X0hBU19QVEhSRUFEICYmICFHVEVTVF9PU19XSU5ET1dTX01JTkdXCisKIC8vIEFzIGEgQy1mdW5j
dGlvbiwgVGhyZWFkRnVuY1dpdGhDTGlua2FnZSBjYW5ub3QgYmUgdGVtcGxhdGVkIGl0c2VsZi4K
IC8vIENvbnNlcXVlbnRseSwgaXQgY2Fubm90IHNlbGVjdCBhIGNvcnJlY3QgaW5zdGFudGlhdGlv
biBvZiBUaHJlYWRXaXRoUGFyYW0KIC8vIGluIG9yZGVyIHRvIGNhbGwgaXRzIFJ1bigpLiBJbnRy
b2R1Y2luZyBUaHJlYWRXaXRoUGFyYW1CYXNlIGFzIGEKQEAgLTk1MSwxMCArMTU5NSw5IEBAIGV4
dGVybiAiQyIgaW5saW5lIHZvaWQqIFRocmVhZEZ1bmNXaXRoQ0xpbmthZ2Uodm9pZCogdGhyZWFk
KSB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNsYXNzIFRocmVhZFdpdGhQYXJhbSA6IHB1Ymxp
YyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgdm9pZCAoKlVzZXJU
aHJlYWRGdW5jKShUKTsKKyAgdHlwZWRlZiB2b2lkIFVzZXJUaHJlYWRGdW5jKFQpOwogCi0gIFRo
cmVhZFdpdGhQYXJhbSgKLSAgICAgIFVzZXJUaHJlYWRGdW5jIGZ1bmMsIFQgcGFyYW0sIE5vdGlm
aWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydCkKKyAgVGhyZWFkV2l0aFBhcmFtKFVzZXJUaHJlYWRG
dW5jKiBmdW5jLCBUIHBhcmFtLCBOb3RpZmljYXRpb24qIHRocmVhZF9jYW5fc3RhcnQpCiAgICAg
ICA6IGZ1bmNfKGZ1bmMpLAogICAgICAgICBwYXJhbV8ocGFyYW0pLAogICAgICAgICB0aHJlYWRf
Y2FuX3N0YXJ0Xyh0aHJlYWRfY2FuX3N0YXJ0KSwKQEAgLTk4MSw3ICsxNjI0LDcgQEAgY2xhc3Mg
VGhyZWFkV2l0aFBhcmFtIDogcHVibGljIFRocmVhZFdpdGhQYXJhbUJhc2UgewogICB9CiAKICBw
cml2YXRlOgotICBjb25zdCBVc2VyVGhyZWFkRnVuYyBmdW5jXzsgIC8vIFVzZXItc3VwcGxpZWQg
dGhyZWFkIGZ1bmN0aW9uLgorICBVc2VyVGhyZWFkRnVuYyogY29uc3QgZnVuY187ICAvLyBVc2Vy
LXN1cHBsaWVkIHRocmVhZCBmdW5jdGlvbi4KICAgY29uc3QgVCBwYXJhbV87ICAvLyBVc2VyLXN1
cHBsaWVkIHBhcmFtZXRlciB0byB0aGUgdGhyZWFkIGZ1bmN0aW9uLgogICAvLyBXaGVuIG5vbi1O
VUxMLCB1c2VkIHRvIGJsb2NrIGV4ZWN1dGlvbiB1bnRpbCB0aGUgY29udHJvbGxlciB0aHJlYWQK
ICAgLy8gbm90aWZpZXMuCkBAIC05OTEsNTEgKzE2MzQsMzE2IEBAIGNsYXNzIFRocmVhZFdpdGhQ
YXJhbSA6IHB1YmxpYyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKIAogICBHVEVTVF9ESVNBTExPV19D
T1BZX0FORF9BU1NJR05fKFRocmVhZFdpdGhQYXJhbSk7CiB9OworIyBlbmRpZiAgLy8gIUdURVNU
X09TX1dJTkRPV1MgJiYgR1RFU1RfSEFTX1BUSFJFQUQgfHwKKyAgICAgICAgIC8vIEdURVNUX0hB
U19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMXwogCi0vLyBndGVzdC1wb3J0LmggZ3VhcmFudGVlcyB0
byAjaW5jbHVkZSA8cHRocmVhZC5oPiB3aGVuIEdURVNUX0hBU19QVEhSRUFEIGlzCi0vLyB0cnVl
LgotI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyMgaWYgR1RFU1RfSEFTX01VVEVYX0FORF9USFJFQURf
TE9DQUxfCisvLyBNdXRleCBhbmQgVGhyZWFkTG9jYWwgaGF2ZSBhbHJlYWR5IGJlZW4gaW1wb3J0
ZWQgaW50byB0aGUgbmFtZXNwYWNlLgorLy8gTm90aGluZyB0byBkbyBoZXJlLgogCi0vLyBNdXRl
eEJhc2UgYW5kIE11dGV4IGltcGxlbWVudCBtdXRleCBvbiBwdGhyZWFkcy1iYXNlZCBwbGF0Zm9y
bXMuIFRoZXkKLS8vIGFyZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggY2xhc3MgTXV0ZXhMb2Nr
OgorIyBlbGlmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfUEhPTkUgJiYg
IUdURVNUX09TX1dJTkRPV1NfUlQKKworLy8gTXV0ZXggaW1wbGVtZW50cyBtdXRleCBvbiBXaW5k
b3dzIHBsYXRmb3Jtcy4gIEl0IGlzIHVzZWQgaW4gY29uanVuY3Rpb24KKy8vIHdpdGggY2xhc3Mg
TXV0ZXhMb2NrOgogLy8KIC8vICAgTXV0ZXggbXV0ZXg7CiAvLyAgIC4uLgotLy8gICBNdXRleExv
Y2sgbG9jaygmbXV0ZXgpOyAgLy8gQWNxdWlyZXMgdGhlIG11dGV4IGFuZCByZWxlYXNlcyBpdCBh
dCB0aGUgZW5kCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiB0aGUgY3VycmVu
dCBzY29wZS4KLS8vCi0vLyBNdXRleEJhc2UgaW1wbGVtZW50cyBiZWhhdmlvciBmb3IgYm90aCBz
dGF0aWNhbGx5IGFuZCBkeW5hbWljYWxseQotLy8gYWxsb2NhdGVkIG11dGV4ZXMuICBEbyBub3Qg
dXNlIE11dGV4QmFzZSBkaXJlY3RseS4gIEluc3RlYWQsIHdyaXRlCi0vLyB0aGUgZm9sbG93aW5n
IHRvIGRlZmluZSBhIHN0YXRpYyBtdXRleDoKKy8vICAgTXV0ZXhMb2NrIGxvY2soJm11dGV4KTsg
IC8vIEFjcXVpcmVzIHRoZSBtdXRleCBhbmQgcmVsZWFzZXMgaXQgYXQgdGhlCisvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBlbmQgb2YgdGhlIGN1cnJlbnQgc2NvcGUuCiAvLworLy8g
QSBzdGF0aWMgTXV0ZXggKm11c3QqIGJlIGRlZmluZWQgb3IgZGVjbGFyZWQgdXNpbmcgb25lIG9m
IHRoZSBmb2xsb3dpbmcKKy8vIG1hY3JvczoKIC8vICAgR1RFU1RfREVGSU5FX1NUQVRJQ19NVVRF
WF8oZ19zb21lX211dGV4KTsKKy8vICAgR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVURVhfKGdfc29t
ZV9tdXRleCk7CiAvLwotLy8gWW91IGNhbiBmb3J3YXJkIGRlY2xhcmUgYSBzdGF0aWMgbXV0ZXgg
bGlrZSB0aGlzOgorLy8gKEEgbm9uLXN0YXRpYyBNdXRleCBpcyBkZWZpbmVkL2RlY2xhcmVkIGlu
IHRoZSB1c3VhbCB3YXkpLgorY2xhc3MgR1RFU1RfQVBJXyBNdXRleCB7CisgcHVibGljOgorICBl
bnVtIE11dGV4VHlwZSB7IGtTdGF0aWMgPSAwLCBrRHluYW1pYyA9IDEgfTsKKyAgLy8gV2UgcmVs
eSBvbiBrU3RhdGljTXV0ZXggYmVpbmcgMCBhcyBpdCBpcyB0byB3aGF0IHRoZSBsaW5rZXIgaW5p
dGlhbGl6ZXMKKyAgLy8gdHlwZV8gaW4gc3RhdGljIG11dGV4ZXMuICBjcml0aWNhbF9zZWN0aW9u
XyB3aWxsIGJlIGluaXRpYWxpemVkIGxhemlseQorICAvLyBpbiBUaHJlYWRTYWZlTGF6eUluaXQo
KS4KKyAgZW51bSBTdGF0aWNDb25zdHJ1Y3RvclNlbGVjdG9yIHsga1N0YXRpY011dGV4ID0gMCB9
OworCisgIC8vIFRoaXMgY29uc3RydWN0b3IgaW50ZW50aW9uYWxseSBkb2VzIG5vdGhpbmcuICBJ
dCByZWxpZXMgb24gdHlwZV8gYmVpbmcKKyAgLy8gc3RhdGljYWxseSBpbml0aWFsaXplZCB0byAw
IChlZmZlY3RpdmVseSBzZXR0aW5nIGl0IHRvIGtTdGF0aWMpIGFuZCBvbgorICAvLyBUaHJlYWRT
YWZlTGF6eUluaXQoKSB0byBsYXppbHkgaW5pdGlhbGl6ZSB0aGUgcmVzdCBvZiB0aGUgbWVtYmVy
cy4KKyAgZXhwbGljaXQgTXV0ZXgoU3RhdGljQ29uc3RydWN0b3JTZWxlY3RvciAvKmR1bW15Ki8p
IHt9CisKKyAgTXV0ZXgoKTsKKyAgfk11dGV4KCk7CisKKyAgdm9pZCBMb2NrKCk7CisKKyAgdm9p
ZCBVbmxvY2soKTsKKworICAvLyBEb2VzIG5vdGhpbmcgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGhv
bGRzIHRoZSBtdXRleC4gT3RoZXJ3aXNlLCBjcmFzaGVzCisgIC8vIHdpdGggaGlnaCBwcm9iYWJp
bGl0eS4KKyAgdm9pZCBBc3NlcnRIZWxkKCk7CisKKyBwcml2YXRlOgorICAvLyBJbml0aWFsaXpl
cyBvd25lcl90aHJlYWRfaWRfIGFuZCBjcml0aWNhbF9zZWN0aW9uXyBpbiBzdGF0aWMgbXV0ZXhl
cy4KKyAgdm9pZCBUaHJlYWRTYWZlTGF6eUluaXQoKTsKKworICAvLyBQZXIgaHR0cDovL2Jsb2dz
Lm1zZG4uY29tL2Ivb2xkbmV3dGhpbmcvYXJjaGl2ZS8yMDA0LzAyLzIzLzc4Mzk1LmFzcHgsCisg
IC8vIHdlIGFzc3VtZSB0aGF0IDAgaXMgYW4gaW52YWxpZCB2YWx1ZSBmb3IgdGhyZWFkIElEcy4K
KyAgdW5zaWduZWQgaW50IG93bmVyX3RocmVhZF9pZF87CisKKyAgLy8gRm9yIHN0YXRpYyBtdXRl
eGVzLCB3ZSByZWx5IG9uIHRoZXNlIG1lbWJlcnMgYmVpbmcgaW5pdGlhbGl6ZWQgdG8gemVyb3MK
KyAgLy8gYnkgdGhlIGxpbmtlci4KKyAgTXV0ZXhUeXBlIHR5cGVfOworICBsb25nIGNyaXRpY2Fs
X3NlY3Rpb25faW5pdF9waGFzZV87ICAvLyBOT0xJTlQKKyAgX1JUTF9DUklUSUNBTF9TRUNUSU9O
KiBjcml0aWNhbF9zZWN0aW9uXzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05f
KE11dGV4KTsKK307CisKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRl
eCkgXAorICAgIGV4dGVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpNdXRleCBtdXRleAorCisjIGRl
ZmluZSBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhtdXRleCkgXAorICAgIDo6dGVzdGluZzo6
aW50ZXJuYWw6Ok11dGV4IG11dGV4KDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4OjprU3RhdGlj
TXV0ZXgpCisKKy8vIFdlIGNhbm5vdCBuYW1lIHRoaXMgY2xhc3MgTXV0ZXhMb2NrIGJlY2F1c2Ug
dGhlIGN0b3IgZGVjbGFyYXRpb24gd291bGQKKy8vIGNvbmZsaWN0IHdpdGggYSBtYWNybyBuYW1l
ZCBNdXRleExvY2ssIHdoaWNoIGlzIGRlZmluZWQgb24gc29tZQorLy8gcGxhdGZvcm1zLiBUaGF0
IG1hY3JvIGlzIHVzZWQgYXMgYSBkZWZlbnNpdmUgbWVhc3VyZSB0byBwcmV2ZW50IGFnYWluc3QK
Ky8vIGluYWR2ZXJ0ZW50IG1pc3VzZXMgb2YgTXV0ZXhMb2NrIGxpa2UgIk11dGV4TG9jaygmbXUp
IiByYXRoZXIgdGhhbgorLy8gIk11dGV4TG9jayBsKCZtdSkiLiAgSGVuY2UgdGhlIHR5cGVkZWYg
dHJpY2sgYmVsb3cuCitjbGFzcyBHVGVzdE11dGV4TG9jayB7CisgcHVibGljOgorICBleHBsaWNp
dCBHVGVzdE11dGV4TG9jayhNdXRleCogbXV0ZXgpCisgICAgICA6IG11dGV4XyhtdXRleCkgeyBt
dXRleF8tPkxvY2soKTsgfQorCisgIH5HVGVzdE11dGV4TG9jaygpIHsgbXV0ZXhfLT5VbmxvY2so
KTsgfQorCisgcHJpdmF0ZToKKyAgTXV0ZXgqIGNvbnN0IG11dGV4XzsKKworICBHVEVTVF9ESVNB
TExPV19DT1BZX0FORF9BU1NJR05fKEdUZXN0TXV0ZXhMb2NrKTsKK307CisKK3R5cGVkZWYgR1Rl
c3RNdXRleExvY2sgTXV0ZXhMb2NrOworCisvLyBCYXNlIGNsYXNzIGZvciBWYWx1ZUhvbGRlcjxU
Pi4gIEFsbG93cyBhIGNhbGxlciB0byBob2xkIGFuZCBkZWxldGUgYSB2YWx1ZQorLy8gd2l0aG91
dCBrbm93aW5nIGl0cyB0eXBlLgorY2xhc3MgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2Ugewor
IHB1YmxpYzoKKyAgdmlydHVhbCB+VGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UoKSB7fQorfTsK
KworLy8gUHJvdmlkZXMgYSB3YXkgZm9yIGEgdGhyZWFkIHRvIHNlbmQgbm90aWZpY2F0aW9ucyB0
byBhIFRocmVhZExvY2FsCisvLyByZWdhcmRsZXNzIG9mIGl0cyBwYXJhbWV0ZXIgdHlwZS4KK2Ns
YXNzIFRocmVhZExvY2FsQmFzZSB7CisgcHVibGljOgorICAvLyBDcmVhdGVzIGEgbmV3IFZhbHVl
SG9sZGVyPFQ+IG9iamVjdCBob2xkaW5nIGEgZGVmYXVsdCB2YWx1ZSBwYXNzZWQgdG8KKyAgLy8g
dGhpcyBUaHJlYWRMb2NhbDxUPidzIGNvbnN0cnVjdG9yIGFuZCByZXR1cm5zIGl0LiAgSXQgaXMg
dGhlIGNhbGxlcidzCisgIC8vIHJlc3BvbnNpYmlsaXR5IG5vdCB0byBjYWxsIHRoaXMgd2hlbiB0
aGUgVGhyZWFkTG9jYWw8VD4gaW5zdGFuY2UgYWxyZWFkeQorICAvLyBoYXMgYSB2YWx1ZSBvbiB0
aGUgY3VycmVudCB0aHJlYWQuCisgIHZpcnR1YWwgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2Uq
IE5ld1ZhbHVlRm9yQ3VycmVudFRocmVhZCgpIGNvbnN0ID0gMDsKKworIHByb3RlY3RlZDoKKyAg
VGhyZWFkTG9jYWxCYXNlKCkge30KKyAgdmlydHVhbCB+VGhyZWFkTG9jYWxCYXNlKCkge30KKwor
IHByaXZhdGU6CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkTG9jYWxC
YXNlKTsKK307CisKKy8vIE1hcHMgYSB0aHJlYWQgdG8gYSBzZXQgb2YgVGhyZWFkTG9jYWxzIHRo
YXQgaGF2ZSB2YWx1ZXMgaW5zdGFudGlhdGVkIG9uIHRoYXQKKy8vIHRocmVhZCBhbmQgbm90aWZp
ZXMgdGhlbSB3aGVuIHRoZSB0aHJlYWQgZXhpdHMuICBBIFRocmVhZExvY2FsIGluc3RhbmNlIGlz
CisvLyBleHBlY3RlZCB0byBwZXJzaXN0IHVudGlsIGFsbCB0aHJlYWRzIGl0IGhhcyB2YWx1ZXMg
b24gaGF2ZSB0ZXJtaW5hdGVkLgorY2xhc3MgR1RFU1RfQVBJXyBUaHJlYWRMb2NhbFJlZ2lzdHJ5
IHsKKyBwdWJsaWM6CisgIC8vIFJlZ2lzdGVycyB0aHJlYWRfbG9jYWxfaW5zdGFuY2UgYXMgaGF2
aW5nIHZhbHVlIG9uIHRoZSBjdXJyZW50IHRocmVhZC4KKyAgLy8gUmV0dXJucyBhIHZhbHVlIHRo
YXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHRocmVhZCBmcm9tIG90aGVyIHRocmVhZHMu
CisgIHN0YXRpYyBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogR2V0VmFsdWVPbkN1cnJlbnRU
aHJlYWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9pbnN0YW5j
ZSk7CisKKyAgLy8gSW52b2tlZCB3aGVuIGEgVGhyZWFkTG9jYWwgaW5zdGFuY2UgaXMgZGVzdHJv
eWVkLgorICBzdGF0aWMgdm9pZCBPblRocmVhZExvY2FsRGVzdHJveWVkKAorICAgICAgY29uc3Qg
VGhyZWFkTG9jYWxCYXNlKiB0aHJlYWRfbG9jYWxfaW5zdGFuY2UpOworfTsKKworY2xhc3MgR1RF
U1RfQVBJXyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKKyBwdWJsaWM6CisgIHZvaWQgSm9pbigpOwor
CisgcHJvdGVjdGVkOgorICBjbGFzcyBSdW5uYWJsZSB7CisgICBwdWJsaWM6CisgICAgdmlydHVh
bCB+UnVubmFibGUoKSB7fQorICAgIHZpcnR1YWwgdm9pZCBSdW4oKSA9IDA7CisgIH07CisKKyAg
VGhyZWFkV2l0aFBhcmFtQmFzZShSdW5uYWJsZSAqcnVubmFibGUsIE5vdGlmaWNhdGlvbiogdGhy
ZWFkX2Nhbl9zdGFydCk7CisgIHZpcnR1YWwgflRocmVhZFdpdGhQYXJhbUJhc2UoKTsKKworIHBy
aXZhdGU6CisgIEF1dG9IYW5kbGUgdGhyZWFkXzsKK307CisKKy8vIEhlbHBlciBjbGFzcyBmb3Ig
dGVzdGluZyBHb29nbGUgVGVzdCdzIG11bHRpLXRocmVhZGluZyBjb25zdHJ1Y3RzLgordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUaHJlYWRXaXRoUGFyYW0gOiBwdWJsaWMgVGhyZWFkV2l0
aFBhcmFtQmFzZSB7CisgcHVibGljOgorICB0eXBlZGVmIHZvaWQgVXNlclRocmVhZEZ1bmMoVCk7
CisKKyAgVGhyZWFkV2l0aFBhcmFtKFVzZXJUaHJlYWRGdW5jKiBmdW5jLCBUIHBhcmFtLCBOb3Rp
ZmljYXRpb24qIHRocmVhZF9jYW5fc3RhcnQpCisgICAgICA6IFRocmVhZFdpdGhQYXJhbUJhc2Uo
bmV3IFJ1bm5hYmxlSW1wbChmdW5jLCBwYXJhbSksIHRocmVhZF9jYW5fc3RhcnQpIHsKKyAgfQor
ICB2aXJ0dWFsIH5UaHJlYWRXaXRoUGFyYW0oKSB7fQorCisgcHJpdmF0ZToKKyAgY2xhc3MgUnVu
bmFibGVJbXBsIDogcHVibGljIFJ1bm5hYmxlIHsKKyAgIHB1YmxpYzoKKyAgICBSdW5uYWJsZUlt
cGwoVXNlclRocmVhZEZ1bmMqIGZ1bmMsIFQgcGFyYW0pCisgICAgICAgIDogZnVuY18oZnVuYyks
CisgICAgICAgICAgcGFyYW1fKHBhcmFtKSB7CisgICAgfQorICAgIHZpcnR1YWwgflJ1bm5hYmxl
SW1wbCgpIHt9CisgICAgdmlydHVhbCB2b2lkIFJ1bigpIHsKKyAgICAgIGZ1bmNfKHBhcmFtXyk7
CisgICAgfQorCisgICBwcml2YXRlOgorICAgIFVzZXJUaHJlYWRGdW5jKiBjb25zdCBmdW5jXzsK
KyAgICBjb25zdCBUIHBhcmFtXzsKKworICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oUnVubmFibGVJbXBsKTsKKyAgfTsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJ
R05fKFRocmVhZFdpdGhQYXJhbSk7Cit9OworCisvLyBJbXBsZW1lbnRzIHRocmVhZC1sb2NhbCBz
dG9yYWdlIG9uIFdpbmRvd3Mgc3lzdGVtcy4KIC8vCi0vLyAgIEdURVNUX0RFQ0xBUkVfU1RBVElD
X01VVEVYXyhnX3NvbWVfbXV0ZXgpOworLy8gICAvLyBUaHJlYWQgMQorLy8gICBUaHJlYWRMb2Nh
bDxpbnQ+IHRsKDEwMCk7ICAvLyAxMDAgaXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIGVhY2ggdGhy
ZWFkLgogLy8KLS8vIFRvIGNyZWF0ZSBhIGR5bmFtaWMgbXV0ZXgsIGp1c3QgZGVmaW5lIGFuIG9i
amVjdCBvZiB0eXBlIE11dGV4LgorLy8gICAvLyBUaHJlYWQgMgorLy8gICB0bC5zZXQoMTUwKTsg
IC8vIENoYW5nZXMgdGhlIHZhbHVlIGZvciB0aHJlYWQgMiBvbmx5LgorLy8gICBFWFBFQ1RfRVEo
MTUwLCB0bC5nZXQoKSk7CisvLworLy8gICAvLyBUaHJlYWQgMQorLy8gICBFWFBFQ1RfRVEoMTAw
LCB0bC5nZXQoKSk7ICAvLyBJbiB0aHJlYWQgMSwgdGwgaGFzIHRoZSBvcmlnaW5hbCB2YWx1ZS4K
Ky8vICAgdGwuc2V0KDIwMCk7CisvLyAgIEVYUEVDVF9FUSgyMDAsIHRsLmdldCgpKTsKKy8vCisv
LyBUaGUgdGVtcGxhdGUgdHlwZSBhcmd1bWVudCBUIG11c3QgaGF2ZSBhIHB1YmxpYyBjb3B5IGNv
bnN0cnVjdG9yLgorLy8gSW4gYWRkaXRpb24sIHRoZSBkZWZhdWx0IFRocmVhZExvY2FsIGNvbnN0
cnVjdG9yIHJlcXVpcmVzIFQgdG8gaGF2ZQorLy8gYSBwdWJsaWMgZGVmYXVsdCBjb25zdHJ1Y3Rv
ci4KKy8vCisvLyBUaGUgdXNlcnMgb2YgYSBUaGVhZExvY2FsIGluc3RhbmNlIGhhdmUgdG8gbWFr
ZSBzdXJlIHRoYXQgYWxsIGJ1dCBvbmUKKy8vIHRocmVhZHMgKGluY2x1ZGluZyB0aGUgbWFpbiBv
bmUpIHVzaW5nIHRoYXQgaW5zdGFuY2UgaGF2ZSBleGl0ZWQgYmVmb3JlCisvLyBkZXN0cm95aW5n
IGl0LiBPdGhlcndpc2UsIHRoZSBwZXItdGhyZWFkIG9iamVjdHMgbWFuYWdlZCBmb3IgdGhlbSBi
eSB0aGUKKy8vIFRocmVhZExvY2FsIGluc3RhbmNlIGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSBk
ZXN0cm95ZWQgb24gYWxsIHBsYXRmb3Jtcy4KKy8vCisvLyBHb29nbGUgVGVzdCBvbmx5IHVzZXMg
Z2xvYmFsIFRocmVhZExvY2FsIG9iamVjdHMuICBUaGF0IG1lYW5zIHRoZXkKKy8vIHdpbGwgZGll
IGFmdGVyIG1haW4oKSBoYXMgcmV0dXJuZWQuICBUaGVyZWZvcmUsIG5vIHBlci10aHJlYWQKKy8v
IG9iamVjdCBtYW5hZ2VkIGJ5IEdvb2dsZSBUZXN0IHdpbGwgYmUgbGVha2VkIGFzIGxvbmcgYXMg
YWxsIHRocmVhZHMKKy8vIHVzaW5nIEdvb2dsZSBUZXN0IGhhdmUgZXhpdGVkIHdoZW4gbWFpbigp
IHJldHVybnMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFRocmVhZExvY2FsIDogcHVi
bGljIFRocmVhZExvY2FsQmFzZSB7CisgcHVibGljOgorICBUaHJlYWRMb2NhbCgpIDogZGVmYXVs
dF9mYWN0b3J5XyhuZXcgRGVmYXVsdFZhbHVlSG9sZGVyRmFjdG9yeSgpKSB7fQorICBleHBsaWNp
dCBUaHJlYWRMb2NhbChjb25zdCBUJiB2YWx1ZSkKKyAgICAgIDogZGVmYXVsdF9mYWN0b3J5Xyhu
ZXcgSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkodmFsdWUpKSB7fQorCisgIH5UaHJlYWRMb2Nh
bCgpIHsgVGhyZWFkTG9jYWxSZWdpc3RyeTo6T25UaHJlYWRMb2NhbERlc3Ryb3llZCh0aGlzKTsg
fQorCisgIFQqIHBvaW50ZXIoKSB7IHJldHVybiBHZXRPckNyZWF0ZVZhbHVlKCk7IH0KKyAgY29u
c3QgVCogcG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIEdldE9yQ3JlYXRlVmFsdWUoKTsgfQorICBj
b25zdCBUJiBnZXQoKSBjb25zdCB7IHJldHVybiAqcG9pbnRlcigpOyB9CisgIHZvaWQgc2V0KGNv
bnN0IFQmIHZhbHVlKSB7ICpwb2ludGVyKCkgPSB2YWx1ZTsgfQorCisgcHJpdmF0ZToKKyAgLy8g
SG9sZHMgYSB2YWx1ZSBvZiBULiAgQ2FuIGJlIGRlbGV0ZWQgdmlhIGl0cyBiYXNlIGNsYXNzIHdp
dGhvdXQgdGhlIGNhbGxlcgorICAvLyBrbm93aW5nIHRoZSB0eXBlIG9mIFQuCisgIGNsYXNzIFZh
bHVlSG9sZGVyIDogcHVibGljIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlIHsKKyAgIHB1Ymxp
YzoKKyAgICBWYWx1ZUhvbGRlcigpIDogdmFsdWVfKCkge30KKyAgICBleHBsaWNpdCBWYWx1ZUhv
bGRlcihjb25zdCBUJiB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9CisKKyAgICBUKiBwb2ludGVy
KCkgeyByZXR1cm4gJnZhbHVlXzsgfQorCisgICBwcml2YXRlOgorICAgIFQgdmFsdWVfOworICAg
IEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVmFsdWVIb2xkZXIpOworICB9OworCisK
KyAgVCogR2V0T3JDcmVhdGVWYWx1ZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VmFsdWVIb2xkZXIqPigKKyAgICAgICAgVGhyZWFkTG9jYWxSZWdpc3RyeTo6R2V0VmFsdWVPbkN1
cnJlbnRUaHJlYWQodGhpcykpLT5wb2ludGVyKCk7CisgIH0KKworICB2aXJ0dWFsIFRocmVhZExv
Y2FsVmFsdWVIb2xkZXJCYXNlKiBOZXdWYWx1ZUZvckN1cnJlbnRUaHJlYWQoKSBjb25zdCB7Cisg
ICAgcmV0dXJuIGRlZmF1bHRfZmFjdG9yeV8tPk1ha2VOZXdIb2xkZXIoKTsKKyAgfQorCisgIGNs
YXNzIFZhbHVlSG9sZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAgVmFsdWVIb2xkZXJGYWN0
b3J5KCkge30KKyAgICB2aXJ0dWFsIH5WYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1
YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCA9IDA7CisKKyAgIHByaXZhdGU6
CisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhWYWx1ZUhvbGRlckZhY3Rvcnkp
OworICB9OworCisgIGNsYXNzIERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkgOiBwdWJsaWMgVmFs
dWVIb2xkZXJGYWN0b3J5IHsKKyAgIHB1YmxpYzoKKyAgICBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0
b3J5KCkge30KKyAgICB2aXJ0dWFsIFZhbHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkgY29uc3Qg
eyByZXR1cm4gbmV3IFZhbHVlSG9sZGVyKCk7IH0KKworICAgcHJpdmF0ZToKKyAgICBHVEVTVF9E
SVNBTExPV19DT1BZX0FORF9BU1NJR05fKERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9
OworCisgIGNsYXNzIEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5IDogcHVibGljIFZhbHVlSG9s
ZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAgZXhwbGljaXQgSW5zdGFuY2VWYWx1ZUhvbGRl
ckZhY3RvcnkoY29uc3QgVCYgdmFsdWUpIDogdmFsdWVfKHZhbHVlKSB7fQorICAgIHZpcnR1YWwg
VmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCB7CisgICAgICByZXR1cm4gbmV3IFZh
bHVlSG9sZGVyKHZhbHVlXyk7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGNvbnN0IFQgdmFs
dWVfOyAgLy8gVGhlIHZhbHVlIGZvciBlYWNoIHRocmVhZC4KKworICAgIEdURVNUX0RJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTl8oSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9OworCisg
IHNjb3BlZF9wdHI8VmFsdWVIb2xkZXJGYWN0b3J5PiBkZWZhdWx0X2ZhY3RvcnlfOworCisgIEdU
RVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkTG9jYWwpOworfTsKKworIyBlbGlm
IEdURVNUX0hBU19QVEhSRUFECisKKy8vIE11dGV4QmFzZSBhbmQgTXV0ZXggaW1wbGVtZW50IG11
dGV4IG9uIHB0aHJlYWRzLWJhc2VkIHBsYXRmb3Jtcy4KIGNsYXNzIE11dGV4QmFzZSB7CiAgcHVi
bGljOgogICAvLyBBY3F1aXJlcyB0aGlzIG11dGV4LgogICB2b2lkIExvY2soKSB7CiAgICAgR1RF
U1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9sb2NrKCZtdXRleF8pKTsKICAg
ICBvd25lcl8gPSBwdGhyZWFkX3NlbGYoKTsKKyAgICBoYXNfb3duZXJfID0gdHJ1ZTsKICAgfQog
CiAgIC8vIFJlbGVhc2VzIHRoaXMgbXV0ZXguCiAgIHZvaWQgVW5sb2NrKCkgewotICAgIC8vIFdl
IGRvbid0IHByb3RlY3Qgd3JpdGluZyB0byBvd25lcl8gaGVyZSwgYXMgaXQncyB0aGUgY2FsbGVy
J3MKLSAgICAvLyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCB0aGUgY3VycmVudCB0aHJl
YWQgaG9sZHMgdGhlCisgICAgLy8gU2luY2UgdGhlIGxvY2sgaXMgYmVpbmcgcmVsZWFzZWQgdGhl
IG93bmVyXyBmaWVsZCBzaG91bGQgbm8gbG9uZ2VyIGJlCisgICAgLy8gY29uc2lkZXJlZCB2YWxp
ZC4gV2UgZG9uJ3QgcHJvdGVjdCB3cml0aW5nIHRvIGhhc19vd25lcl8gaGVyZSwgYXMgaXQncwor
ICAgIC8vIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCB0aGUgY3Vy
cmVudCB0aHJlYWQgaG9sZHMgdGhlCiAgICAgLy8gbXV0ZXggd2hlbiB0aGlzIGlzIGNhbGxlZC4K
LSAgICBvd25lcl8gPSAwOworICAgIGhhc19vd25lcl8gPSBmYWxzZTsKICAgICBHVEVTVF9DSEVD
S19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXhfKSk7CiAgIH0KIAog
ICAvLyBEb2VzIG5vdGhpbmcgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGhvbGRzIHRoZSBtdXRleC4g
T3RoZXJ3aXNlLCBjcmFzaGVzCiAgIC8vIHdpdGggaGlnaCBwcm9iYWJpbGl0eS4KICAgdm9pZCBB
c3NlcnRIZWxkKCkgY29uc3QgewotICAgIEdURVNUX0NIRUNLXyhvd25lcl8gPT0gcHRocmVhZF9z
ZWxmKCkpCisgICAgR1RFU1RfQ0hFQ0tfKGhhc19vd25lcl8gJiYgcHRocmVhZF9lcXVhbChvd25l
cl8sIHB0aHJlYWRfc2VsZigpKSkKICAgICAgICAgPDwgIlRoZSBjdXJyZW50IHRocmVhZCBpcyBu
b3QgaG9sZGluZyB0aGUgbXV0ZXggQCIgPDwgdGhpczsKICAgfQogCkBAIC0xMDQ2LDE2ICsxOTU0
LDIzIEBAIGNsYXNzIE11dGV4QmFzZSB7CiAgIC8vIGhhdmUgdG8gYmUgcHVibGljLgogIHB1Ymxp
YzoKICAgcHRocmVhZF9tdXRleF90IG11dGV4XzsgIC8vIFRoZSB1bmRlcmx5aW5nIHB0aHJlYWQg
bXV0ZXguCi0gIHB0aHJlYWRfdCBvd25lcl87ICAvLyBUaGUgdGhyZWFkIGhvbGRpbmcgdGhlIG11
dGV4OyAwIG1lYW5zIG5vIG9uZSBob2xkcyBpdC4KKyAgLy8gaGFzX293bmVyXyBpbmRpY2F0ZXMg
d2hldGhlciB0aGUgb3duZXJfIGZpZWxkIGJlbG93IGNvbnRhaW5zIGEgdmFsaWQgdGhyZWFkCisg
IC8vIElEIGFuZCBpcyB0aGVyZWZvcmUgc2FmZSB0byBpbnNwZWN0IChlLmcuLCB0byB1c2UgaW4g
cHRocmVhZF9lcXVhbCgpKS4gQWxsCisgIC8vIGFjY2Vzc2VzIHRvIHRoZSBvd25lcl8gZmllbGQg
c2hvdWxkIGJlIHByb3RlY3RlZCBieSBhIGNoZWNrIG9mIHRoaXMgZmllbGQuCisgIC8vIEFuIGFs
dGVybmF0aXZlIG1pZ2h0IGJlIHRvIG1lbXNldCgpIG93bmVyXyB0byBhbGwgemVyb3MsIGJ1dCB0
aGVyZSdzIG5vCisgIC8vIGd1YXJhbnRlZSB0aGF0IGEgemVybydkIHB0aHJlYWRfdCBpcyBuZWNl
c3NhcmlseSBpbnZhbGlkIG9yIGV2ZW4gZGlmZmVyZW50CisgIC8vIGZyb20gcHRocmVhZF9zZWxm
KCkuCisgIGJvb2wgaGFzX293bmVyXzsKKyAgcHRocmVhZF90IG93bmVyXzsgIC8vIFRoZSB0aHJl
YWQgaG9sZGluZyB0aGUgbXV0ZXguCiB9OwogCiAvLyBGb3J3YXJkLWRlY2xhcmVzIGEgc3RhdGlj
IG11dGV4LgotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRFWF8obXV0ZXgpIFwKLSAg
ICBleHRlcm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXhCYXNlIG11dGV4CisjICBkZWZpbmUg
R1RFU1RfREVDTEFSRV9TVEFUSUNfTVVURVhfKG11dGV4KSBcCisgICAgIGV4dGVybiA6OnRlc3Rp
bmc6OmludGVybmFsOjpNdXRleEJhc2UgbXV0ZXgKIAogLy8gRGVmaW5lcyBhbmQgc3RhdGljYWxs
eSAoaS5lLiBhdCBsaW5rIHRpbWUpIGluaXRpYWxpemVzIGEgc3RhdGljIG11dGV4LgotI2RlZmlu
ZSBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhtdXRleCkgXAotICAgIDo6dGVzdGluZzo6aW50
ZXJuYWw6Ok11dGV4QmFzZSBtdXRleCA9IHsgUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUiwgMCB9
CisjICBkZWZpbmUgR1RFU1RfREVGSU5FX1NUQVRJQ19NVVRFWF8obXV0ZXgpIFwKKyAgICAgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXhCYXNlIG11dGV4ID0geyBQVEhSRUFEX01VVEVYX0lOSVRJ
QUxJWkVSLCBmYWxzZSwgcHRocmVhZF90KCkgfQogCiAvLyBUaGUgTXV0ZXggY2xhc3MgY2FuIG9u
bHkgYmUgdXNlZCBmb3IgbXV0ZXhlcyBjcmVhdGVkIGF0IHJ1bnRpbWUuIEl0CiAvLyBzaGFyZXMg
aXRzIEFQSSB3aXRoIE11dGV4QmFzZSBvdGhlcndpc2UuCkBAIC0xMDYzLDcgKzE5NzgsNyBAQCBj
bGFzcyBNdXRleCA6IHB1YmxpYyBNdXRleEJhc2UgewogIHB1YmxpYzoKICAgTXV0ZXgoKSB7CiAg
ICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9pbml0KCZtdXRleF8s
IE5VTEwpKTsKLSAgICBvd25lcl8gPSAwOworICAgIGhhc19vd25lcl8gPSBmYWxzZTsKICAgfQog
ICB+TXV0ZXgoKSB7CiAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRl
eF9kZXN0cm95KCZtdXRleF8pKTsKQEAgLTEwNzMsOSArMTk4OCwxMSBAQCBjbGFzcyBNdXRleCA6
IHB1YmxpYyBNdXRleEJhc2UgewogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE11
dGV4KTsKIH07CiAKLS8vIFdlIGNhbm5vdCBuYW1lIHRoaXMgY2xhc3MgTXV0ZXhMb2NrIGFzIHRo
ZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCisvLyBXZSBjYW5ub3QgbmFtZSB0aGlzIGNsYXNzIE11
dGV4TG9jayBiZWNhdXNlIHRoZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCiAvLyBjb25mbGljdCB3
aXRoIGEgbWFjcm8gbmFtZWQgTXV0ZXhMb2NrLCB3aGljaCBpcyBkZWZpbmVkIG9uIHNvbWUKLS8v
IHBsYXRmb3Jtcy4gIEhlbmNlIHRoZSB0eXBlZGVmIHRyaWNrIGJlbG93LgorLy8gcGxhdGZvcm1z
LiBUaGF0IG1hY3JvIGlzIHVzZWQgYXMgYSBkZWZlbnNpdmUgbWVhc3VyZSB0byBwcmV2ZW50IGFn
YWluc3QKKy8vIGluYWR2ZXJ0ZW50IG1pc3VzZXMgb2YgTXV0ZXhMb2NrIGxpa2UgIk11dGV4TG9j
aygmbXUpIiByYXRoZXIgdGhhbgorLy8gIk11dGV4TG9jayBsKCZtdSkiLiAgSGVuY2UgdGhlIHR5
cGVkZWYgdHJpY2sgYmVsb3cuCiBjbGFzcyBHVGVzdE11dGV4TG9jayB7CiAgcHVibGljOgogICBl
eHBsaWNpdCBHVGVzdE11dGV4TG9jayhNdXRleEJhc2UqIG11dGV4KQpAQCAtMTEwOSw0MSArMjAy
NiwxNCBAQCBleHRlcm4gIkMiIGlubGluZSB2b2lkIERlbGV0ZVRocmVhZExvY2FsVmFsdWUodm9p
ZCogdmFsdWVfaG9sZGVyKSB7CiB9CiAKIC8vIEltcGxlbWVudHMgdGhyZWFkLWxvY2FsIHN0b3Jh
Z2Ugb24gcHRocmVhZHMtYmFzZWQgc3lzdGVtcy4KLS8vCi0vLyAgIC8vIFRocmVhZCAxCi0vLyAg
IFRocmVhZExvY2FsPGludD4gdGwoMTAwKTsgIC8vIDEwMCBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBm
b3IgZWFjaCB0aHJlYWQuCi0vLwotLy8gICAvLyBUaHJlYWQgMgotLy8gICB0bC5zZXQoMTUwKTsg
IC8vIENoYW5nZXMgdGhlIHZhbHVlIGZvciB0aHJlYWQgMiBvbmx5LgotLy8gICBFWFBFQ1RfRVEo
MTUwLCB0bC5nZXQoKSk7Ci0vLwotLy8gICAvLyBUaHJlYWQgMQotLy8gICBFWFBFQ1RfRVEoMTAw
LCB0bC5nZXQoKSk7ICAvLyBJbiB0aHJlYWQgMSwgdGwgaGFzIHRoZSBvcmlnaW5hbCB2YWx1ZS4K
LS8vICAgdGwuc2V0KDIwMCk7Ci0vLyAgIEVYUEVDVF9FUSgyMDAsIHRsLmdldCgpKTsKLS8vCi0v
LyBUaGUgdGVtcGxhdGUgdHlwZSBhcmd1bWVudCBUIG11c3QgaGF2ZSBhIHB1YmxpYyBjb3B5IGNv
bnN0cnVjdG9yLgotLy8gSW4gYWRkaXRpb24sIHRoZSBkZWZhdWx0IFRocmVhZExvY2FsIGNvbnN0
cnVjdG9yIHJlcXVpcmVzIFQgdG8gaGF2ZQotLy8gYSBwdWJsaWMgZGVmYXVsdCBjb25zdHJ1Y3Rv
ci4KLS8vCi0vLyBBbiBvYmplY3QgbWFuYWdlZCBmb3IgYSB0aHJlYWQgYnkgYSBUaHJlYWRMb2Nh
bCBpbnN0YW5jZSBpcyBkZWxldGVkCi0vLyB3aGVuIHRoZSB0aHJlYWQgZXhpdHMuICBPciwgaWYg
dGhlIFRocmVhZExvY2FsIGluc3RhbmNlIGRpZXMgaW4KLS8vIHRoYXQgdGhyZWFkLCB3aGVuIHRo
ZSBUaHJlYWRMb2NhbCBkaWVzLiAgSXQncyB0aGUgdXNlcidzCi0vLyByZXNwb25zaWJpbGl0eSB0
byBlbnN1cmUgdGhhdCBhbGwgb3RoZXIgdGhyZWFkcyB1c2luZyBhIFRocmVhZExvY2FsCi0vLyBo
YXZlIGV4aXRlZCB3aGVuIGl0IGRpZXMsIG9yIHRoZSBwZXItdGhyZWFkIG9iamVjdHMgZm9yIHRo
b3NlCi0vLyB0aHJlYWRzIHdpbGwgbm90IGJlIGRlbGV0ZWQuCi0vLwotLy8gR29vZ2xlIFRlc3Qg
b25seSB1c2VzIGdsb2JhbCBUaHJlYWRMb2NhbCBvYmplY3RzLiAgVGhhdCBtZWFucyB0aGV5Ci0v
LyB3aWxsIGRpZSBhZnRlciBtYWluKCkgaGFzIHJldHVybmVkLiAgVGhlcmVmb3JlLCBubyBwZXIt
dGhyZWFkCi0vLyBvYmplY3QgbWFuYWdlZCBieSBHb29nbGUgVGVzdCB3aWxsIGJlIGxlYWtlZCBh
cyBsb25nIGFzIGFsbCB0aHJlYWRzCi0vLyB1c2luZyBHb29nbGUgVGVzdCBoYXZlIGV4aXRlZCB3
aGVuIG1haW4oKSByZXR1cm5zLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBUaHJlYWRM
b2NhbCB7CiAgcHVibGljOgotICBUaHJlYWRMb2NhbCgpIDoga2V5XyhDcmVhdGVLZXkoKSksCi0g
ICAgICAgICAgICAgICAgICBkZWZhdWx0XygpIHt9Ci0gIGV4cGxpY2l0IFRocmVhZExvY2FsKGNv
bnN0IFQmIHZhbHVlKSA6IGtleV8oQ3JlYXRlS2V5KCkpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Xyh2YWx1ZSkge30KKyAgVGhyZWFkTG9jYWwoKQor
ICAgICAgOiBrZXlfKENyZWF0ZUtleSgpKSwgZGVmYXVsdF9mYWN0b3J5XyhuZXcgRGVmYXVsdFZh
bHVlSG9sZGVyRmFjdG9yeSgpKSB7fQorICBleHBsaWNpdCBUaHJlYWRMb2NhbChjb25zdCBUJiB2
YWx1ZSkKKyAgICAgIDoga2V5XyhDcmVhdGVLZXkoKSksCisgICAgICAgIGRlZmF1bHRfZmFjdG9y
eV8obmV3IEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5KHZhbHVlKSkge30KIAogICB+VGhyZWFk
TG9jYWwoKSB7CiAgICAgLy8gRGVzdHJveXMgdGhlIG1hbmFnZWQgb2JqZWN0IGZvciB0aGUgY3Vy
cmVudCB0aHJlYWQsIGlmIGFueS4KQEAgLTExNjMsNiArMjA1Myw3IEBAIGNsYXNzIFRocmVhZExv
Y2FsIHsKICAgLy8gSG9sZHMgYSB2YWx1ZSBvZiB0eXBlIFQuCiAgIGNsYXNzIFZhbHVlSG9sZGVy
IDogcHVibGljIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlIHsKICAgIHB1YmxpYzoKKyAgICBW
YWx1ZUhvbGRlcigpIDogdmFsdWVfKCkge30KICAgICBleHBsaWNpdCBWYWx1ZUhvbGRlcihjb25z
dCBUJiB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9CiAKICAgICBUKiBwb2ludGVyKCkgeyByZXR1
cm4gJnZhbHVlXzsgfQpAQCAtMTE4OCwyMiArMjA3OSw1NCBAQCBjbGFzcyBUaHJlYWRMb2NhbCB7
CiAgICAgICByZXR1cm4gQ2hlY2tlZERvd25jYXN0VG9BY3R1YWxUeXBlPFZhbHVlSG9sZGVyPiho
b2xkZXIpLT5wb2ludGVyKCk7CiAgICAgfQogCi0gICAgVmFsdWVIb2xkZXIqIGNvbnN0IG5ld19o
b2xkZXIgPSBuZXcgVmFsdWVIb2xkZXIoZGVmYXVsdF8pOworICAgIFZhbHVlSG9sZGVyKiBjb25z
dCBuZXdfaG9sZGVyID0gZGVmYXVsdF9mYWN0b3J5Xy0+TWFrZU5ld0hvbGRlcigpOwogICAgIFRo
cmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlKiBjb25zdCBob2xkZXJfYmFzZSA9IG5ld19ob2xkZXI7
CiAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9zZXRzcGVjaWZpYyhrZXlf
LCBob2xkZXJfYmFzZSkpOwogICAgIHJldHVybiBuZXdfaG9sZGVyLT5wb2ludGVyKCk7CiAgIH0K
IAorICBjbGFzcyBWYWx1ZUhvbGRlckZhY3RvcnkgeworICAgcHVibGljOgorICAgIFZhbHVlSG9s
ZGVyRmFjdG9yeSgpIHt9CisgICAgdmlydHVhbCB+VmFsdWVIb2xkZXJGYWN0b3J5KCkge30KKyAg
ICB2aXJ0dWFsIFZhbHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkgY29uc3QgPSAwOworCisgICBw
cml2YXRlOgorICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVmFsdWVIb2xkZXJG
YWN0b3J5KTsKKyAgfTsKKworICBjbGFzcyBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5IDogcHVi
bGljIFZhbHVlSG9sZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAgRGVmYXVsdFZhbHVlSG9s
ZGVyRmFjdG9yeSgpIHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRlciogTWFrZU5ld0hvbGRlcigp
IGNvbnN0IHsgcmV0dXJuIG5ldyBWYWx1ZUhvbGRlcigpOyB9CisKKyAgIHByaXZhdGU6CisgICAg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5
KTsKKyAgfTsKKworICBjbGFzcyBJbnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeSA6IHB1YmxpYyBW
YWx1ZUhvbGRlckZhY3RvcnkgeworICAgcHVibGljOgorICAgIGV4cGxpY2l0IEluc3RhbmNlVmFs
dWVIb2xkZXJGYWN0b3J5KGNvbnN0IFQmIHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KKyAgICB2
aXJ0dWFsIFZhbHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkgY29uc3QgeworICAgICAgcmV0dXJu
IG5ldyBWYWx1ZUhvbGRlcih2YWx1ZV8pOworICAgIH0KKworICAgcHJpdmF0ZToKKyAgICBjb25z
dCBUIHZhbHVlXzsgIC8vIFRoZSB2YWx1ZSBmb3IgZWFjaCB0aHJlYWQuCisKKyAgICBHVEVTVF9E
SVNBTExPV19DT1BZX0FORF9BU1NJR05fKEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5KTsKKyAg
fTsKKwogICAvLyBBIGtleSBwdGhyZWFkcyB1c2VzIGZvciBsb29raW5nIHVwIHBlci10aHJlYWQg
dmFsdWVzLgogICBjb25zdCBwdGhyZWFkX2tleV90IGtleV87Ci0gIGNvbnN0IFQgZGVmYXVsdF87
ICAvLyBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgZWFjaCB0aHJlYWQuCisgIHNjb3BlZF9wdHI8VmFs
dWVIb2xkZXJGYWN0b3J5PiBkZWZhdWx0X2ZhY3RvcnlfOwogCiAgIEdURVNUX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTl8oVGhyZWFkTG9jYWwpOwogfTsKIAotI2RlZmluZSBHVEVTVF9JU19USFJF
QURTQUZFIDEKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMXwog
Ci0jZWxzZSAgLy8gR1RFU1RfSEFTX1BUSFJFQUQKKyNlbHNlICAvLyBHVEVTVF9JU19USFJFQURT
QUZFCiAKIC8vIEEgZHVtbXkgaW1wbGVtZW50YXRpb24gb2Ygc3luY2hyb25pemF0aW9uIHByaW1p
dGl2ZXMgKG11dGV4LCBsb2NrLAogLy8gYW5kIHRocmVhZC1sb2NhbCB2YXJpYWJsZSkuICBOZWNl
c3NhcnkgZm9yIGNvbXBpbGluZyBHb29nbGUgVGVzdCB3aGVyZQpAQCAtMTIxMywxNCArMjEzNiwy
MSBAQCBjbGFzcyBUaHJlYWRMb2NhbCB7CiBjbGFzcyBNdXRleCB7CiAgcHVibGljOgogICBNdXRl
eCgpIHt9CisgIHZvaWQgTG9jaygpIHt9CisgIHZvaWQgVW5sb2NrKCkge30KICAgdm9pZCBBc3Nl
cnRIZWxkKCkgY29uc3Qge30KIH07CiAKLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVU
RVhfKG11dGV4KSBcCisjIGRlZmluZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRFWF8obXV0ZXgp
IFwKICAgZXh0ZXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4IG11dGV4CiAKLSNkZWZpbmUg
R1RFU1RfREVGSU5FX1NUQVRJQ19NVVRFWF8obXV0ZXgpIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11
dGV4IG11dGV4CisjIGRlZmluZSBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhtdXRleCkgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXggbXV0ZXgKIAorLy8gV2UgY2Fubm90IG5hbWUgdGhpcyBj
bGFzcyBNdXRleExvY2sgYmVjYXVzZSB0aGUgY3RvciBkZWNsYXJhdGlvbiB3b3VsZAorLy8gY29u
ZmxpY3Qgd2l0aCBhIG1hY3JvIG5hbWVkIE11dGV4TG9jaywgd2hpY2ggaXMgZGVmaW5lZCBvbiBz
b21lCisvLyBwbGF0Zm9ybXMuIFRoYXQgbWFjcm8gaXMgdXNlZCBhcyBhIGRlZmVuc2l2ZSBtZWFz
dXJlIHRvIHByZXZlbnQgYWdhaW5zdAorLy8gaW5hZHZlcnRlbnQgbWlzdXNlcyBvZiBNdXRleExv
Y2sgbGlrZSAiTXV0ZXhMb2NrKCZtdSkiIHJhdGhlciB0aGFuCisvLyAiTXV0ZXhMb2NrIGwoJm11
KSIuICBIZW5jZSB0aGUgdHlwZWRlZiB0cmljayBiZWxvdy4KIGNsYXNzIEdUZXN0TXV0ZXhMb2Nr
IHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0IEdUZXN0TXV0ZXhMb2NrKE11dGV4Kikge30gIC8vIE5P
TElOVApAQCAtMTI0MSwxMSArMjE3MSw3IEBAIGNsYXNzIFRocmVhZExvY2FsIHsKICAgVCB2YWx1
ZV87CiB9OwogCi0vLyBUaGUgYWJvdmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaGF2ZSBk
dW1teSBpbXBsZW1lbnRhdGlvbnMuCi0vLyBUaGVyZWZvcmUgR29vZ2xlIFRlc3QgaXMgbm90IHRo
cmVhZC1zYWZlLgotI2RlZmluZSBHVEVTVF9JU19USFJFQURTQUZFIDAKLQotI2VuZGlmICAvLyBH
VEVTVF9IQVNfUFRIUkVBRAorI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCiAKIC8vIFJl
dHVybnMgdGhlIG51bWJlciBvZiB0aHJlYWRzIHJ1bm5pbmcgaW4gdGhlIHByb2Nlc3MsIG9yIDAg
dG8gaW5kaWNhdGUgdGhhdAogLy8gd2UgY2Fubm90IGRldGVjdCBpdC4KQEAgLTEyNjAsOSArMjE4
Niw5IEBAIEdURVNUX0FQSV8gc2l6ZV90IEdldFRocmVhZENvdW50KCk7CiAjaWYgZGVmaW5lZChf
X1NZTUJJQU4zMl9fKSB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pIHx8IGRlZmluZWQoX19TVU5QUk9f
Q0MpCiAvLyBXZSBsb3NlIHN1cHBvcnQgZm9yIE5VTEwgZGV0ZWN0aW9uIHdoZXJlIHRoZSBjb21w
aWxlciBkb2Vzbid0IGxpa2UKIC8vIHBhc3Npbmcgbm9uLVBPRCBjbGFzc2VzIHRocm91Z2ggZWxs
aXBzaXMgKC4uLikuCi0jZGVmaW5lIEdURVNUX0VMTElQU0lTX05FRURTX1BPRF8gMQorIyBkZWZp
bmUgR1RFU1RfRUxMSVBTSVNfTkVFRFNfUE9EXyAxCiAjZWxzZQotI2RlZmluZSBHVEVTVF9DQU5f
Q09NUEFSRV9OVUxMIDEKKyMgZGVmaW5lIEdURVNUX0NBTl9DT01QQVJFX05VTEwgMQogI2VuZGlm
CiAKIC8vIFRoZSBOb2tpYSBTeW1iaWFuIGFuZCBJQk0gWEwgQy9DKysgY29tcGlsZXJzIGNhbm5v
dCBkZWNpZGUgYmV0d2VlbgpAQCAtMTI3MCw3ICsyMTk2LDcgQEAgR1RFU1RfQVBJXyBzaXplX3Qg
R2V0VGhyZWFkQ291bnQoKTsKIC8vIF9jYW5fIGRlY2lkZSBiZXR3ZWVuIGNsYXNzIHRlbXBsYXRl
IHNwZWNpYWxpemF0aW9ucyBmb3IgVCBhbmQgVCosCiAvLyBzbyBhIHRyMTo6dHlwZV90cmFpdHMt
bGlrZSBpc19wb2ludGVyIHdvcmtzLgogI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgfHwgZGVm
aW5lZChfX0lCTUNQUF9fKQotI2RlZmluZSBHVEVTVF9ORUVEU19JU19QT0lOVEVSXyAxCisjIGRl
ZmluZSBHVEVTVF9ORUVEU19JU19QT0lOVEVSXyAxCiAjZW5kaWYKIAogdGVtcGxhdGUgPGJvb2wg
Ym9vbF92YWx1ZT4KQEAgLTEyODksMTcgKzIyMTUsNzkgQEAgc3RydWN0IGlzX3BvaW50ZXIgOiBw
dWJsaWMgZmFsc2VfdHlwZSB7fTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RydWN0IGlzX3Bv
aW50ZXI8VCo+IDogcHVibGljIHRydWVfdHlwZSB7fTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIEl0
ZXJhdG9yPgorc3RydWN0IEl0ZXJhdG9yVHJhaXRzIHsKKyAgdHlwZWRlZiB0eXBlbmFtZSBJdGVy
YXRvcjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitzdHJ1Y3QgSXRlcmF0b3JUcmFpdHM8VCo+IHsKKyAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Cit9
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBJdGVyYXRvclRyYWl0czxjb25zdCBU
Kj4geworICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKK307CisKICNpZiBHVEVTVF9PU19XSU5ET1dT
Ci0jZGVmaW5lIEdURVNUX1BBVEhfU0VQXyAiXFwiCi0jZGVmaW5lIEdURVNUX0hBU19BTFRfUEFU
SF9TRVBfIDEKKyMgZGVmaW5lIEdURVNUX1BBVEhfU0VQXyAiXFwiCisjIGRlZmluZSBHVEVTVF9I
QVNfQUxUX1BBVEhfU0VQXyAxCiAvLyBUaGUgYmlnZ2VzdCBzaWduZWQgaW50ZWdlciB0eXBlIHRo
ZSBjb21waWxlciBzdXBwb3J0cy4KIHR5cGVkZWYgX19pbnQ2NCBCaWdnZXN0SW50OwogI2Vsc2UK
LSNkZWZpbmUgR1RFU1RfUEFUSF9TRVBfICIvIgotI2RlZmluZSBHVEVTVF9IQVNfQUxUX1BBVEhf
U0VQXyAwCisjIGRlZmluZSBHVEVTVF9QQVRIX1NFUF8gIi8iCisjIGRlZmluZSBHVEVTVF9IQVNf
QUxUX1BBVEhfU0VQXyAwCiB0eXBlZGVmIGxvbmcgbG9uZyBCaWdnZXN0SW50OyAgLy8gTk9MSU5U
CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAorLy8gVXRpbGl0aWVzIGZvciBjaGFyLgor
CisvLyBpc3NwYWNlKGludCBjaCkgYW5kIGZyaWVuZHMgYWNjZXB0IGFuIHVuc2lnbmVkIGNoYXIg
b3IgRU9GLiAgY2hhcgorLy8gbWF5IGJlIHNpZ25lZCwgZGVwZW5kaW5nIG9uIHRoZSBjb21waWxl
ciAob3IgY29tcGlsZXIgZmxhZ3MpLgorLy8gVGhlcmVmb3JlIHdlIG5lZWQgdG8gY2FzdCBhIGNo
YXIgdG8gdW5zaWduZWQgY2hhciBiZWZvcmUgY2FsbGluZworLy8gaXNzcGFjZSgpLCBldGMuCisK
K2lubGluZSBib29sIElzQWxwaGEoY2hhciBjaCkgeworICByZXR1cm4gaXNhbHBoYShzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpICE9IDA7Cit9CitpbmxpbmUgYm9vbCBJc0FsTnVtKGNo
YXIgY2gpIHsKKyAgcmV0dXJuIGlzYWxudW0oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gp
KSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNEaWdpdChjaGFyIGNoKSB7CisgIHJldHVybiBpc2Rp
Z2l0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKK30KK2lubGluZSBib29s
IElzTG93ZXIoY2hhciBjaCkgeworICByZXR1cm4gaXNsb3dlcihzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPihjaCkpICE9IDA7Cit9CitpbmxpbmUgYm9vbCBJc1NwYWNlKGNoYXIgY2gpIHsKKyAg
cmV0dXJuIGlzc3BhY2Uoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOworfQor
aW5saW5lIGJvb2wgSXNVcHBlcihjaGFyIGNoKSB7CisgIHJldHVybiBpc3VwcGVyKHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKK30KK2lubGluZSBib29sIElzWERpZ2l0KGNo
YXIgY2gpIHsKKyAgcmV0dXJuIGlzeGRpZ2l0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNo
KSkgIT0gMDsKK30KK2lubGluZSBib29sIElzWERpZ2l0KHdjaGFyX3QgY2gpIHsKKyAgY29uc3Qg
dW5zaWduZWQgY2hhciBsb3dfYnl0ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKTsK
KyAgcmV0dXJuIGNoID09IGxvd19ieXRlICYmIGlzeGRpZ2l0KGxvd19ieXRlKSAhPSAwOworfQor
CitpbmxpbmUgY2hhciBUb0xvd2VyKGNoYXIgY2gpIHsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PGNo
YXI+KHRvbG93ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSk7Cit9CitpbmxpbmUg
Y2hhciBUb1VwcGVyKGNoYXIgY2gpIHsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXI+KHRvdXBw
ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSk7Cit9CisKK2lubGluZSBzdGQ6OnN0
cmluZyBTdHJpcFRyYWlsaW5nU3BhY2VzKHN0ZDo6c3RyaW5nIHN0cikgeworICBzdGQ6OnN0cmlu
Zzo6aXRlcmF0b3IgaXQgPSBzdHIuZW5kKCk7CisgIHdoaWxlIChpdCAhPSBzdHIuYmVnaW4oKSAm
JiBJc1NwYWNlKCotLWl0KSkKKyAgICBpdCA9IHN0ci5lcmFzZShpdCk7CisgIHJldHVybiBzdHI7
Cit9CisKIC8vIFRoZSB0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXggbmFtZXNwYWNlIGhvbGRzIHdy
YXBwZXJzIGZvciBjb21tb24KIC8vIFBPU0lYIGZ1bmN0aW9ucy4gIFRoZXNlIHdyYXBwZXJzIGhp
ZGUgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4KIC8vIFdpbmRvd3MvTVNWQyBhbmQgUE9TSVggc3lz
dGVtcy4gIFNpbmNlIHNvbWUgY29tcGlsZXJzIGRlZmluZSB0aGVzZQpAQCAtMTMxNCwzNiArMjMw
MiwzNiBAQCBuYW1lc3BhY2UgcG9zaXggewogCiB0eXBlZGVmIHN0cnVjdCBfc3RhdCBTdGF0U3Ry
dWN0OwogCi0jaWZkZWYgX19CT1JMQU5EQ19fCisjIGlmZGVmIF9fQk9STEFORENfXwogaW5saW5l
IGludCBJc0FUVFkoaW50IGZkKSB7IHJldHVybiBpc2F0dHkoZmQpOyB9CiBpbmxpbmUgaW50IFN0
ckNhc2VDbXAoY29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyKSB7CiAgIHJldHVybiBzdHJp
Y21wKHMxLCBzMik7CiB9CiBpbmxpbmUgY2hhciogU3RyRHVwKGNvbnN0IGNoYXIqIHNyYykgeyBy
ZXR1cm4gc3RyZHVwKHNyYyk7IH0KLSNlbHNlICAvLyAhX19CT1JMQU5EQ19fCi0jaWYgR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKKyMgZWxzZSAgLy8gIV9fQk9STEFORENfXworIyAgaWYgR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKIGlubGluZSBpbnQgSXNBVFRZKGludCAvKiBmZCAqLykgeyByZXR1
cm4gMDsgfQotI2Vsc2UKKyMgIGVsc2UKIGlubGluZSBpbnQgSXNBVFRZKGludCBmZCkgeyByZXR1
cm4gX2lzYXR0eShmZCk7IH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMg
IGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogaW5saW5lIGludCBTdHJDYXNlQ21w
KGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMikgewogICByZXR1cm4gX3N0cmljbXAoczEs
IHMyKTsKIH0KIGlubGluZSBjaGFyKiBTdHJEdXAoY29uc3QgY2hhciogc3JjKSB7IHJldHVybiBf
c3RyZHVwKHNyYyk7IH0KLSNlbmRpZiAgLy8gX19CT1JMQU5EQ19fCisjIGVuZGlmICAvLyBfX0JP
UkxBTkRDX18KIAotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGlmIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCiBpbmxpbmUgaW50IEZpbGVObyhGSUxFKiBmaWxlKSB7IHJldHVybiByZWlu
dGVycHJldF9jYXN0PGludD4oX2ZpbGVubyhmaWxlKSk7IH0KIC8vIFN0YXQoKSwgUm1EaXIoKSwg
YW5kIElzRGlyKCkgYXJlIG5vdCBuZWVkZWQgb24gV2luZG93cyBDRSBhdCB0aGlzCiAvLyB0aW1l
IGFuZCB0aHVzIG5vdCBkZWZpbmVkIHRoZXJlLgotI2Vsc2UKKyMgZWxzZQogaW5saW5lIGludCBG
aWxlTm8oRklMRSogZmlsZSkgeyByZXR1cm4gX2ZpbGVubyhmaWxlKTsgfQogaW5saW5lIGludCBT
dGF0KGNvbnN0IGNoYXIqIHBhdGgsIFN0YXRTdHJ1Y3QqIGJ1ZikgeyByZXR1cm4gX3N0YXQocGF0
aCwgYnVmKTsgfQogaW5saW5lIGludCBSbURpcihjb25zdCBjaGFyKiBkaXIpIHsgcmV0dXJuIF9y
bWRpcihkaXIpOyB9CiBpbmxpbmUgYm9vbCBJc0Rpcihjb25zdCBTdGF0U3RydWN0JiBzdCkgewog
ICByZXR1cm4gKF9TX0lGRElSICYgc3Quc3RfbW9kZSkgIT0gMDsKIH0KLSNlbmRpZiAgLy8gR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxF
CiAKICNlbHNlCiAKQEAgLTEzNjMsMTEgKzIzNTEsNyBAQCBpbmxpbmUgYm9vbCBJc0Rpcihjb25z
dCBTdGF0U3RydWN0JiBzdCkgeyByZXR1cm4gU19JU0RJUihzdC5zdF9tb2RlKTsgfQogCiAvLyBG
dW5jdGlvbnMgZGVwcmVjYXRlZCBieSBNU1ZDIDguMC4KIAotI2lmZGVmIF9NU0NfVkVSCi0vLyBU
ZW1wb3JhcmlseSBkaXNhYmxlIHdhcm5pbmcgNDk5NiAoZGVwcmVjYXRlZCBmdW5jdGlvbikuCi0j
cHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5OTYpCi0jZW5k
aWYKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQ5OTYgLyogZGVwcmVjYXRlZCBm
dW5jdGlvbiAqLykKIAogaW5saW5lIGNvbnN0IGNoYXIqIFN0ck5DcHkoY2hhciogZGVzdCwgY29u
c3QgY2hhciogc3JjLCBzaXplX3QgbikgewogICByZXR1cm4gc3RybmNweShkZXN0LCBzcmMsIG4p
OwpAQCAtMTM3Nyw3ICsyMzYxLDcgQEAgaW5saW5lIGNvbnN0IGNoYXIqIFN0ck5DcHkoY2hhciog
ZGVzdCwgY29uc3QgY2hhciogc3JjLCBzaXplX3QgbikgewogLy8gU3RyRXJyb3IoKSBhcmVuJ3Qg
bmVlZGVkIG9uIFdpbmRvd3MgQ0UgYXQgdGhpcyB0aW1lIGFuZCB0aHVzIG5vdAogLy8gZGVmaW5l
ZCB0aGVyZS4KIAotI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorI2lmICFHVEVTVF9PU19X
SU5ET1dTX01PQklMRSAmJiAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lO
RE9XU19SVAogaW5saW5lIGludCBDaERpcihjb25zdCBjaGFyKiBkaXIpIHsgcmV0dXJuIGNoZGly
KGRpcik7IH0KICNlbmRpZgogaW5saW5lIEZJTEUqIEZPcGVuKGNvbnN0IGNoYXIqIHBhdGgsIGNv
bnN0IGNoYXIqIG1vZGUpIHsKQEAgLTE0MDEsOCArMjM4NSw5IEBAIGlubGluZSBpbnQgQ2xvc2Uo
aW50IGZkKSB7IHJldHVybiBjbG9zZShmZCk7IH0KIGlubGluZSBjb25zdCBjaGFyKiBTdHJFcnJv
cihpbnQgZXJybnVtKSB7IHJldHVybiBzdHJlcnJvcihlcnJudW0pOyB9CiAjZW5kaWYKIGlubGlu
ZSBjb25zdCBjaGFyKiBHZXRFbnYoY29uc3QgY2hhciogbmFtZSkgewotI2lmIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCisjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgfHwgR1RFU1RfT1NfV0lO
RE9XU19QSE9ORSB8IEdURVNUX09TX1dJTkRPV1NfUlQKICAgLy8gV2UgYXJlIG9uIFdpbmRvd3Mg
Q0UsIHdoaWNoIGhhcyBubyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCisgIHN0YXRpY19jYXN0PHZv
aWQ+KG5hbWUpOyAgLy8gVG8gcHJldmVudCAndW51c2VkIGFyZ3VtZW50JyB3YXJuaW5nLgogICBy
ZXR1cm4gTlVMTDsKICNlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCBkZWZpbmVkKF9fU3Vu
T1NfNV84KSB8fCBkZWZpbmVkKF9fU3VuT1NfNV85KQogICAvLyBFbnZpcm9ubWVudCB2YXJpYWJs
ZXMgd2hpY2ggd2UgcHJvZ3JhbW1hdGljYWxseSBjbGVhciB3aWxsIGJlIHNldCB0byB0aGUKQEAg
LTE0MTQsOSArMjM5OSw3IEBAIGlubGluZSBjb25zdCBjaGFyKiBHZXRFbnYoY29uc3QgY2hhciog
bmFtZSkgewogI2VuZGlmCiB9CiAKLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHBv
cCkgIC8vIFJlc3RvcmVzIHRoZSB3YXJuaW5nIHN0YXRlLgotI2VuZGlmCitHVEVTVF9ESVNBQkxF
X01TQ19XQVJOSU5HU19QT1BfKCkKIAogI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAvLyBX
aW5kb3dzIENFIGhhcyBubyBDIGxpYnJhcnkuIFRoZSBhYm9ydCgpIGZ1bmN0aW9uIGlzIHVzZWQg
aW4KQEAgLTE0MjksNiArMjQxMiwyMyBAQCBpbmxpbmUgdm9pZCBBYm9ydCgpIHsgYWJvcnQoKTsg
fQogCiB9ICAvLyBuYW1lc3BhY2UgcG9zaXgKIAorLy8gTVNWQyAiZGVwcmVjYXRlcyIgc25wcmlu
dGYgYW5kIGlzc3VlcyB3YXJuaW5ncyB3aGVyZXZlciBpdCBpcyB1c2VkLiAgSW4KKy8vIG9yZGVy
IHRvIGF2b2lkIHRoZXNlIHdhcm5pbmdzLCB3ZSBuZWVkIHRvIHVzZSBfc25wcmludGYgb3IgX3Nu
cHJpbnRmX3Mgb24KKy8vIE1TVkMtYmFzZWQgcGxhdGZvcm1zLiAgV2UgbWFwIHRoZSBHVEVTVF9T
TlBSSU5URl8gbWFjcm8gdG8gdGhlIGFwcHJvcHJpYXRlCisvLyBmdW5jdGlvbiBpbiBvcmRlciB0
byBhY2hpZXZlIHRoYXQuICBXZSB1c2UgbWFjcm8gZGVmaW5pdGlvbiBoZXJlIGJlY2F1c2UKKy8v
IHNucHJpbnRmIGlzIGEgdmFyaWFkaWMgZnVuY3Rpb24uCisjaWYgX01TQ19WRVIgPj0gMTQwMCAm
JiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKy8vIE1TVkMgMjAwNSBhbmQgYWJvdmUgc3VwcG9y
dCB2YXJpYWRpYyBtYWNyb3MuCisjIGRlZmluZSBHVEVTVF9TTlBSSU5URl8oYnVmZmVyLCBzaXpl
LCBmb3JtYXQsIC4uLikgXAorICAgICBfc25wcmludGZfcyhidWZmZXIsIHNpemUsIHNpemUsIGZv
cm1hdCwgX19WQV9BUkdTX18pCisjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorLy8gV2luZG93cyBD
RSBkb2VzIG5vdCBkZWZpbmUgX3NucHJpbnRmX3MgYW5kIE1TVkMgcHJpb3IgdG8gMjAwNSBkb2Vz
bid0CisvLyBjb21wbGFpbiBhYm91dCBfc25wcmludGYuCisjIGRlZmluZSBHVEVTVF9TTlBSSU5U
Rl8gX3NucHJpbnRmCisjZWxzZQorIyBkZWZpbmUgR1RFU1RfU05QUklOVEZfIHNucHJpbnRmCisj
ZW5kaWYKKwogLy8gVGhlIG1heGltdW0gbnVtYmVyIGEgQmlnZ2VzdEludCBjYW4gcmVwcmVzZW50
LiAgVGhpcyBkZWZpbml0aW9uCiAvLyB3b3JrcyBubyBtYXR0ZXIgQmlnZ2VzdEludCBpcyByZXBy
ZXNlbnRlZCBpbiBvbmUncyBjb21wbGVtZW50IG9yCiAvLyB0d28ncyBjb21wbGVtZW50LgpAQCAt
MTUwMCwxNCArMjUwMCwyMyBAQCB0eXBlZGVmIFR5cGVXaXRoU2l6ZTw4Pjo6SW50IFRpbWVJbk1p
bGxpczsgIC8vIFJlcHJlc2VudHMgdGltZSBpbiBtaWxsaXNlY29uZHMuCiAvLyBVdGlsaXRpZXMg
Zm9yIGNvbW1hbmQgbGluZSBmbGFncyBhbmQgZW52aXJvbm1lbnQgdmFyaWFibGVzLgogCiAvLyBN
YWNybyBmb3IgcmVmZXJlbmNpbmcgZmxhZ3MuCi0jZGVmaW5lIEdURVNUX0ZMQUcobmFtZSkgRkxB
R1NfZ3Rlc3RfIyNuYW1lCisjaWYgIWRlZmluZWQoR1RFU1RfRkxBRykKKyMgZGVmaW5lIEdURVNU
X0ZMQUcobmFtZSkgRkxBR1NfZ3Rlc3RfIyNuYW1lCisjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNU
X0ZMQUcpCisKKyNpZiAhZGVmaW5lZChHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfKQorIyBk
ZWZpbmUgR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXyAxCisjZW5kaWYgIC8vICFkZWZpbmVk
KEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18pCisKKyNpZiAhZGVmaW5lZChHVEVTVF9ERUNM
QVJFX2Jvb2xfKQorIyBkZWZpbmUgR1RFU1RfRkxBR19TQVZFUl8gOjp0ZXN0aW5nOjppbnRlcm5h
bDo6R1Rlc3RGbGFnU2F2ZXIKIAogLy8gTWFjcm9zIGZvciBkZWNsYXJpbmcgZmxhZ3MuCi0jZGVm
aW5lIEdURVNUX0RFQ0xBUkVfYm9vbF8obmFtZSkgR1RFU1RfQVBJXyBleHRlcm4gYm9vbCBHVEVT
VF9GTEFHKG5hbWUpCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVfaW50MzJfKG5hbWUpIFwKKyMgZGVm
aW5lIEdURVNUX0RFQ0xBUkVfYm9vbF8obmFtZSkgR1RFU1RfQVBJXyBleHRlcm4gYm9vbCBHVEVT
VF9GTEFHKG5hbWUpCisjIGRlZmluZSBHVEVTVF9ERUNMQVJFX2ludDMyXyhuYW1lKSBcCiAgICAg
R1RFU1RfQVBJXyBleHRlcm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW50MzIgR1RFU1RfRkxBRyhu
YW1lKQogI2RlZmluZSBHVEVTVF9ERUNMQVJFX3N0cmluZ18obmFtZSkgXAotICAgIEdURVNUX0FQ
SV8gZXh0ZXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZyBHVEVTVF9GTEFHKG5hbWUpCisg
ICAgR1RFU1RfQVBJXyBleHRlcm4gOjpzdGQ6OnN0cmluZyBHVEVTVF9GTEFHKG5hbWUpCiAKIC8v
IE1hY3JvcyBmb3IgZGVmaW5pbmcgZmxhZ3MuCiAjZGVmaW5lIEdURVNUX0RFRklORV9ib29sXyhu
YW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCkBAIC0xNTE1LDcgKzI1MjQsMTUgQEAgdHlwZWRlZiBU
eXBlV2l0aFNpemU8OD46OkludCBUaW1lSW5NaWxsaXM7ICAvLyBSZXByZXNlbnRzIHRpbWUgaW4g
bWlsbGlzZWNvbmRzLgogI2RlZmluZSBHVEVTVF9ERUZJTkVfaW50MzJfKG5hbWUsIGRlZmF1bHRf
dmFsLCBkb2MpIFwKICAgICBHVEVTVF9BUElfIDo6dGVzdGluZzo6aW50ZXJuYWw6OkludDMyIEdU
RVNUX0ZMQUcobmFtZSkgPSAoZGVmYXVsdF92YWwpCiAjZGVmaW5lIEdURVNUX0RFRklORV9zdHJp
bmdfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpIFwKLSAgICBHVEVTVF9BUElfIDo6dGVzdGluZzo6
aW50ZXJuYWw6OlN0cmluZyBHVEVTVF9GTEFHKG5hbWUpID0gKGRlZmF1bHRfdmFsKQorICAgIEdU
RVNUX0FQSV8gOjpzdGQ6OnN0cmluZyBHVEVTVF9GTEFHKG5hbWUpID0gKGRlZmF1bHRfdmFsKQor
CisjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0RFQ0xBUkVfYm9vbF8pCisKKy8vIFRocmVhZCBh
bm5vdGF0aW9ucworI2lmICFkZWZpbmVkKEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXykK
KyMgZGVmaW5lIEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhsb2NrcykKKyMgZGVmaW5l
IEdURVNUX0xPQ0tfRVhDTFVERURfKGxvY2tzKQorI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9F
WENMVVNJVkVfTE9DS19SRVFVSVJFRF8pCiAKIC8vIFBhcnNlcyAnc3RyJyBmb3IgYSAzMi1iaXQg
c2lnbmVkIGludGVnZXIuICBJZiBzdWNjZXNzZnVsLCB3cml0ZXMgdGhlIHJlc3VsdAogLy8gdG8g
KnZhbHVlIGFuZCByZXR1cm5zIHRydWU7IG90aGVyd2lzZSBsZWF2ZXMgKnZhbHVlIHVuY2hhbmdl
ZCBhbmQgcmV0dXJucwpAQCAtMTUyOSw3ICsyNTQ2LDcgQEAgYm9vbCBQYXJzZUludDMyKGNvbnN0
IE1lc3NhZ2UmIHNyY190ZXh0LCBjb25zdCBjaGFyKiBzdHIsIEludDMyKiB2YWx1ZSk7CiAvLyBj
b3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBHb29nbGUgVGVzdCBmbGFnLgogYm9vbCBCb29sRnJv
bUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIGJvb2wgZGVmYXVsdF92YWwpOwogR1RFU1RfQVBJ
XyBJbnQzMiBJbnQzMkZyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBJbnQzMiBkZWZhdWx0
X3ZhbCk7Ci1jb25zdCBjaGFyKiBTdHJpbmdGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywg
Y29uc3QgY2hhciogZGVmYXVsdF92YWwpOworc3RkOjpzdHJpbmcgU3RyaW5nRnJvbUdUZXN0RW52
KGNvbnN0IGNoYXIqIGZsYWcsIGNvbnN0IGNoYXIqIGRlZmF1bHRfdmFsKTsKIAogfSAgLy8gbmFt
ZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
c3RyaW5nLmgKaW5kZXggYWZmMDkzZGVjOGRiMzk5MDc0ZWEzYjcxYmI3MjI3ZGE3ZTk2NzMwYS4u
OTdmMWE3ZmRkMmMwY2M0NGMzYTE0OGYwZjFlY2RjYmRmZTliYWM2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXN0cmluZy5oCkBAIC00Myw1NCArNDMsMjIgQEAKIAogI2lmZGVmIF9fQk9STEFORENfXwog
Ly8gc3RyaW5nLmggaXMgbm90IGd1YXJhbnRlZWQgdG8gcHJvdmlkZSBzdHJjcHkgb24gQysrIEJ1
aWxkZXIuCi0jaW5jbHVkZSA8bWVtLmg+CisjIGluY2x1ZGUgPG1lbS5oPgogI2VuZGlmCiAKICNp
bmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+
Ci0KICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1w
b3J0LmgiCisKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKLS8v
IFN0cmluZyAtIGEgVVRGLTggc3RyaW5nIGNsYXNzLgotLy8KLS8vIEZvciBoaXN0b3JpYyByZWFz
b25zLCB3ZSBkb24ndCB1c2Ugc3RkOjpzdHJpbmcuCi0vLwotLy8gVE9ETyh3YW5AZ29vZ2xlLmNv
bSk6IHJlcGxhY2UgdGhpcyBjbGFzcyB3aXRoIHN0ZDo6c3RyaW5nIG9yCi0vLyBpbXBsZW1lbnQg
aXQgaW4gdGVybXMgb2YgdGhlIGxhdHRlci4KLS8vCi0vLyBOb3RlIHRoYXQgU3RyaW5nIGNhbiBy
ZXByZXNlbnQgYm90aCBOVUxMIGFuZCB0aGUgZW1wdHkgc3RyaW5nLAotLy8gd2hpbGUgc3RkOjpz
dHJpbmcgY2Fubm90IHJlcHJlc2VudCBOVUxMLgotLy8KLS8vIE5VTEwgYW5kIHRoZSBlbXB0eSBz
dHJpbmcgYXJlIGNvbnNpZGVyZWQgZGlmZmVyZW50LiAgTlVMTCBpcyBsZXNzCi0vLyB0aGFuIGFu
eXRoaW5nIChpbmNsdWRpbmcgdGhlIGVtcHR5IHN0cmluZykgZXhjZXB0IGl0c2VsZi4KLS8vCi0v
LyBUaGlzIGNsYXNzIG9ubHkgcHJvdmlkZXMgbWluaW11bSBmdW5jdGlvbmFsaXR5IG5lY2Vzc2Fy
eSBmb3IKLS8vIGltcGxlbWVudGluZyBHb29nbGUgVGVzdC4gIFdlIGRvIG5vdCBpbnRlbmQgdG8g
aW1wbGVtZW50IGEgZnVsbC1mbGVkZ2VkCi0vLyBzdHJpbmcgY2xhc3MgaGVyZS4KLS8vCi0vLyBT
aW5jZSB0aGUgcHVycG9zZSBvZiB0aGlzIGNsYXNzIGlzIHRvIHByb3ZpZGUgYSBzdWJzdGl0dXRl
IGZvcgotLy8gc3RkOjpzdHJpbmcgb24gcGxhdGZvcm1zIHdoZXJlIGl0IGNhbm5vdCBiZSB1c2Vk
LCB3ZSBkZWZpbmUgYSBjb3B5Ci0vLyBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVyYXRv
cnMgc3VjaCB0aGF0IHdlIGRvbid0IG5lZWQKLS8vIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGlu
IGEgbG90IG9mIHBsYWNlcy4KLS8vCi0vLyBJbiBvcmRlciB0byBtYWtlIHRoZSByZXByZXNlbnRh
dGlvbiBlZmZpY2llbnQsIHRoZSBkJ3RvciBvZiBTdHJpbmcKLS8vIGlzIG5vdCB2aXJ0dWFsLiAg
VGhlcmVmb3JlIERPIE5PVCBJTkhFUklUIEZST00gU3RyaW5nLgorLy8gU3RyaW5nIC0gYW4gYWJz
dHJhY3QgY2xhc3MgaG9sZGluZyBzdGF0aWMgc3RyaW5nIHV0aWxpdGllcy4KIGNsYXNzIEdURVNU
X0FQSV8gU3RyaW5nIHsKICBwdWJsaWM6CiAgIC8vIFN0YXRpYyB1dGlsaXR5IG1ldGhvZHMKIAot
ICAvLyBSZXR1cm5zIHRoZSBpbnB1dCBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzIGlmIGl0J3Mg
bm90IE5VTEw7Ci0gIC8vIG90aGVyd2lzZSByZXR1cm5zICIobnVsbCkiLiAgRm9yIGV4YW1wbGUs
ICJcIkhlbGxvXCIiIGlzIHJldHVybmVkCi0gIC8vIGZvciBpbnB1dCAiSGVsbG8iLgotICAvLwot
ICAvLyBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJpbnRpbmcgYSBDIHN0cmluZyBpbiB0aGUgc3ludGF4
IG9mIGEgbGl0ZXJhbC4KLSAgLy8KLSAgLy8gS25vd24gaXNzdWU6IGVzY2FwZSBzZXF1ZW5jZXMg
YXJlIG5vdCBoYW5kbGVkIHlldC4KLSAgc3RhdGljIFN0cmluZyBTaG93Q1N0cmluZ1F1b3RlZChj
b25zdCBjaGFyKiBjX3N0cik7Ci0KICAgLy8gQ2xvbmVzIGEgMC10ZXJtaW5hdGVkIEMgc3RyaW5n
LCBhbGxvY2F0aW5nIG1lbW9yeSB1c2luZyBuZXcuICBUaGUKICAgLy8gY2FsbGVyIGlzIHJlc3Bv
bnNpYmxlIGZvciBkZWxldGluZyB0aGUgcmV0dXJuIHZhbHVlIHVzaW5nCiAgIC8vIGRlbGV0ZVtd
LiAgUmV0dXJucyB0aGUgY2xvbmVkIHN0cmluZywgb3IgTlVMTCBpZiB0aGUgaW5wdXQgaXMKQEAg
LTEzNywxMSArMTA1LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBTdHJpbmcgewogICAvLyBOVUxMIHdp
bGwgYmUgY29udmVydGVkIHRvICIobnVsbCkiLiAgSWYgYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5n
CiAgIC8vIHRoZSBjb252ZXJzaW9uLCAiKGZhaWxlZCB0byBjb252ZXJ0IGZyb20gd2lkZSBzdHJp
bmcpIiBpcwogICAvLyByZXR1cm5lZC4KLSAgc3RhdGljIFN0cmluZyBTaG93V2lkZUNTdHJpbmco
Y29uc3Qgd2NoYXJfdCogd2lkZV9jX3N0cik7Ci0KLSAgLy8gU2ltaWxhciB0byBTaG93V2lkZUNT
dHJpbmcoKSwgZXhjZXB0IHRoYXQgdGhpcyBmdW5jdGlvbiBlbmNsb3NlcwotICAvLyB0aGUgY29u
dmVydGVkIHN0cmluZyBpbiBkb3VibGUgcXVvdGVzLgotICBzdGF0aWMgU3RyaW5nIFNob3dXaWRl
Q1N0cmluZ1F1b3RlZChjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKTsKKyAgc3RhdGljIHN0ZDo6
c3RyaW5nIFNob3dXaWRlQ1N0cmluZyhjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKTsKIAogICAv
LyBDb21wYXJlcyB0d28gd2lkZSBDIHN0cmluZ3MuICBSZXR1cm5zIHRydWUgaWZmIHRoZXkgaGF2
ZSB0aGUgc2FtZQogICAvLyBjb250ZW50LgpAQCAtMTc1LDE3NCArMTM5LDI3IEBAIGNsYXNzIEdU
RVNUX0FQSV8gU3RyaW5nIHsKICAgc3RhdGljIGJvb2wgQ2FzZUluc2Vuc2l0aXZlV2lkZUNTdHJp
bmdFcXVhbHMoY29uc3Qgd2NoYXJfdCogbGhzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiByaHMpOwogCi0gIC8vIEZvcm1hdHMg
YSBsaXN0IG9mIGFyZ3VtZW50cyB0byBhIFN0cmluZywgdXNpbmcgdGhlIHNhbWUgZm9ybWF0Ci0g
IC8vIHNwZWMgc3RyaW5nIGFzIGZvciBwcmludGYuCi0gIC8vCi0gIC8vIFdlIGRvIG5vdCB1c2Ug
dGhlIFN0cmluZ1ByaW50ZiBjbGFzcyBhcyBpdCBpcyBub3QgdW5pdmVyc2FsbHkKLSAgLy8gYXZh
aWxhYmxlLgotICAvLwotICAvLyBUaGUgcmVzdWx0IGlzIGxpbWl0ZWQgdG8gNDA5NiBjaGFyYWN0
ZXJzIChpbmNsdWRpbmcgdGhlIHRhaWxpbmcKLSAgLy8gMCkuICBJZiA0MDk2IGNoYXJhY3RlcnMg
YXJlIG5vdCBlbm91Z2ggdG8gZm9ybWF0IHRoZSBpbnB1dCwKLSAgLy8gIjxidWZmZXIgZXhjZWVk
ZWQ+IiBpcyByZXR1cm5lZC4KLSAgc3RhdGljIFN0cmluZyBGb3JtYXQoY29uc3QgY2hhciogZm9y
bWF0LCAuLi4pOwotCi0gIC8vIEMndG9ycwotCi0gIC8vIFRoZSBkZWZhdWx0IGMndG9yIGNvbnN0
cnVjdHMgYSBOVUxMIHN0cmluZy4KLSAgU3RyaW5nKCkgOiBjX3N0cl8oTlVMTCksIGxlbmd0aF8o
MCkge30KLQotICAvLyBDb25zdHJ1Y3RzIGEgU3RyaW5nIGJ5IGNsb25pbmcgYSAwLXRlcm1pbmF0
ZWQgQyBzdHJpbmcuCi0gIFN0cmluZyhjb25zdCBjaGFyKiBhX2Nfc3RyKSB7ICAvLyBOT0xJTlQK
LSAgICBpZiAoYV9jX3N0ciA9PSBOVUxMKSB7Ci0gICAgICBjX3N0cl8gPSBOVUxMOwotICAgICAg
bGVuZ3RoXyA9IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgIENvbnN0cnVjdE5vbk51bGwoYV9jX3N0
ciwgc3RybGVuKGFfY19zdHIpKTsKLSAgICB9Ci0gIH0KLQotICAvLyBDb25zdHJ1Y3RzIGEgU3Ry
aW5nIGJ5IGNvcHlpbmcgYSBnaXZlbiBudW1iZXIgb2YgY2hhcnMgZnJvbSBhCi0gIC8vIGJ1ZmZl
ci4gIEUuZy4gU3RyaW5nKCJoZWxsbyIsIDMpIGNyZWF0ZXMgdGhlIHN0cmluZyAiaGVsIiwKLSAg
Ly8gU3RyaW5nKCJhXDBiY2QiLCA0KSBjcmVhdGVzICJhXDBiYyIsIFN0cmluZyhOVUxMLCAwKSBj
cmVhdGVzICIiLAotICAvLyBhbmQgU3RyaW5nKE5VTEwsIDEpIHJlc3VsdHMgaW4gYWNjZXNzIHZp
b2xhdGlvbi4KLSAgU3RyaW5nKGNvbnN0IGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGFfbGVuZ3RoKSB7
Ci0gICAgQ29uc3RydWN0Tm9uTnVsbChidWZmZXIsIGFfbGVuZ3RoKTsKLSAgfQorICAvLyBSZXR1
cm5zIHRydWUgaWZmIHRoZSBnaXZlbiBzdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXgs
IGlnbm9yaW5nCisgIC8vIGNhc2UuIEFueSBzdHJpbmcgaXMgY29uc2lkZXJlZCB0byBlbmQgd2l0
aCBhbiBlbXB0eSBzdWZmaXguCisgIHN0YXRpYyBib29sIEVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZl
KAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0ciwgY29uc3Qgc3RkOjpzdHJpbmcmIHN1ZmZp
eCk7CiAKLSAgLy8gVGhlIGNvcHkgYyd0b3IgY3JlYXRlcyBhIG5ldyBjb3B5IG9mIHRoZSBzdHJp
bmcuICBUaGUgdHdvCi0gIC8vIFN0cmluZyBvYmplY3RzIGRvIG5vdCBzaGFyZSBjb250ZW50Lgot
ICBTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHIpIDogY19zdHJfKE5VTEwpLCBsZW5ndGhfKDApIHsg
KnRoaXMgPSBzdHI7IH0KKyAgLy8gRm9ybWF0cyBhbiBpbnQgdmFsdWUgYXMgIiUwMmQiLgorICBz
dGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0SW50V2lkdGgyKGludCB2YWx1ZSk7ICAvLyAiJTAyZCIg
Zm9yIHdpZHRoID09IDIKIAotICAvLyBEJ3Rvci4gIFN0cmluZyBpcyBpbnRlbmRlZCB0byBiZSBh
IGZpbmFsIGNsYXNzLCBzbyB0aGUgZCd0b3IKLSAgLy8gZG9lc24ndCBuZWVkIHRvIGJlIHZpcnR1
YWwuCi0gIH5TdHJpbmcoKSB7IGRlbGV0ZVtdIGNfc3RyXzsgfQorICAvLyBGb3JtYXRzIGFuIGlu
dCB2YWx1ZSBhcyAiJVgiLgorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0SGV4SW50KGludCB2
YWx1ZSk7CiAKLSAgLy8gQWxsb3dzIGEgU3RyaW5nIHRvIGJlIGltcGxpY2l0bHkgY29udmVydGVk
IHRvIGFuIDo6c3RkOjpzdHJpbmcgb3IKLSAgLy8gOjpzdHJpbmcsIGFuZCB2aWNlIHZlcnNhLiAg
Q29udmVydGluZyBhIFN0cmluZyBjb250YWluaW5nIGEgTlVMTAotICAvLyBwb2ludGVyIHRvIDo6
c3RkOjpzdHJpbmcgb3IgOjpzdHJpbmcgaXMgdW5kZWZpbmVkIGJlaGF2aW9yLgotICAvLyBDb252
ZXJ0aW5nIGEgOjpzdGQ6OnN0cmluZyBvciA6OnN0cmluZyBjb250YWluaW5nIGFuIGVtYmVkZGVk
IE5VTAotICAvLyBjaGFyYWN0ZXIgdG8gYSBTdHJpbmcgd2lsbCByZXN1bHQgaW4gdGhlIHByZWZp
eCB1cCB0byB0aGUgZmlyc3QKLSAgLy8gTlVMIGNoYXJhY3Rlci4KLSAgU3RyaW5nKGNvbnN0IDo6
c3RkOjpzdHJpbmcmIHN0cikgewotICAgIENvbnN0cnVjdE5vbk51bGwoc3RyLmNfc3RyKCksIHN0
ci5sZW5ndGgoKSk7Ci0gIH0KLQotICBvcGVyYXRvciA6OnN0ZDo6c3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gOjpzdGQ6OnN0cmluZyhjX3N0cigpLCBsZW5ndGgoKSk7IH0KLQotI2lmIEdURVNUX0hB
U19HTE9CQUxfU1RSSU5HCi0gIFN0cmluZyhjb25zdCA6OnN0cmluZyYgc3RyKSB7Ci0gICAgQ29u
c3RydWN0Tm9uTnVsbChzdHIuY19zdHIoKSwgc3RyLmxlbmd0aCgpKTsKLSAgfQotCi0gIG9wZXJh
dG9yIDo6c3RyaW5nKCkgY29uc3QgeyByZXR1cm4gOjpzdHJpbmcoY19zdHIoKSwgbGVuZ3RoKCkp
OyB9Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0KLSAgLy8gUmV0dXJucyB0
cnVlIGlmZiB0aGlzIGlzIGFuIGVtcHR5IHN0cmluZyAoaS5lLiAiIikuCi0gIGJvb2wgZW1wdHko
KSBjb25zdCB7IHJldHVybiAoY19zdHIoKSAhPSBOVUxMKSAmJiAobGVuZ3RoKCkgPT0gMCk7IH0K
LQotICAvLyBDb21wYXJlcyB0aGlzIHdpdGggYW5vdGhlciBTdHJpbmcuCi0gIC8vIFJldHVybnMg
PCAwIGlmIHRoaXMgaXMgbGVzcyB0aGFuIHJocywgMCBpZiB0aGlzIGlzIGVxdWFsIHRvIHJocywg
b3IgPiAwCi0gIC8vIGlmIHRoaXMgaXMgZ3JlYXRlciB0aGFuIHJocy4KLSAgaW50IENvbXBhcmUo
Y29uc3QgU3RyaW5nJiByaHMpIGNvbnN0OwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBT
dHJpbmcgZXF1YWxzIHRoZSBnaXZlbiBDIHN0cmluZy4gIEEgTlVMTAotICAvLyBzdHJpbmcgYW5k
IGEgbm9uLU5VTEwgc3RyaW5nIGFyZSBjb25zaWRlcmVkIG5vdCBlcXVhbC4KLSAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IGNoYXIqIGFfY19zdHIpIGNvbnN0IHsgcmV0dXJuIENvbXBhcmUoYV9jX3N0
cikgPT0gMDsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBTdHJpbmcgaXMgbGVzcyB0
aGFuIHRoZSBnaXZlbiBTdHJpbmcuICBBCi0gIC8vIE5VTEwgc3RyaW5nIGlzIGNvbnNpZGVyZWQg
bGVzcyB0aGFuICIiLgotICBib29sIG9wZXJhdG9yPChjb25zdCBTdHJpbmcmIHJocykgY29uc3Qg
eyByZXR1cm4gQ29tcGFyZShyaHMpIDwgMDsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhp
cyBTdHJpbmcgZG9lc24ndCBlcXVhbCB0aGUgZ2l2ZW4gQyBzdHJpbmcuICBBIE5VTEwKLSAgLy8g
c3RyaW5nIGFuZCBhIG5vbi1OVUxMIHN0cmluZyBhcmUgY29uc2lkZXJlZCBub3QgZXF1YWwuCi0g
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBjaGFyKiBhX2Nfc3RyKSBjb25zdCB7IHJldHVybiAhKCp0
aGlzID09IGFfY19zdHIpOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIFN0cmluZyBl
bmRzIHdpdGggdGhlIGdpdmVuIHN1ZmZpeC4gICpBbnkqCi0gIC8vIFN0cmluZyBpcyBjb25zaWRl
cmVkIHRvIGVuZCB3aXRoIGEgTlVMTCBvciBlbXB0eSBzdWZmaXguCi0gIGJvb2wgRW5kc1dpdGgo
Y29uc3QgY2hhciogc3VmZml4KSBjb25zdDsKLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMg
U3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LCBub3QgY29uc2lkZXJpbmcKLSAgLy8g
Y2FzZS4gQW55IFN0cmluZyBpcyBjb25zaWRlcmVkIHRvIGVuZCB3aXRoIGEgTlVMTCBvciBlbXB0
eSBzdWZmaXguCi0gIGJvb2wgRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoY29uc3QgY2hhciogc3Vm
Zml4KSBjb25zdDsKLQotICAvLyBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIGVuY2Fwc3VsYXRl
ZCBzdHJpbmcsIG9yIDAgaWYgdGhlCi0gIC8vIHN0cmluZyBpcyBOVUxMLgotICBzaXplX3QgbGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbGVuZ3RoXzsgfQotCi0gIC8vIEdldHMgdGhlIDAtdGVybWlu
YXRlZCBDIHN0cmluZyB0aGlzIFN0cmluZyBvYmplY3QgcmVwcmVzZW50cy4KLSAgLy8gVGhlIFN0
cmluZyBvYmplY3Qgc3RpbGwgb3ducyB0aGUgc3RyaW5nLiAgVGhlcmVmb3JlIHRoZSBjYWxsZXIK
LSAgLy8gc2hvdWxkIE5PVCBkZWxldGUgdGhlIHJldHVybiB2YWx1ZS4KLSAgY29uc3QgY2hhciog
Y19zdHIoKSBjb25zdCB7IHJldHVybiBjX3N0cl87IH0KLQotICAvLyBBc3NpZ25zIGEgQyBzdHJp
bmcgdG8gdGhpcyBvYmplY3QuICBTZWxmLWFzc2lnbm1lbnQgd29ya3MuCi0gIGNvbnN0IFN0cmlu
ZyYgb3BlcmF0b3I9KGNvbnN0IGNoYXIqIGFfY19zdHIpIHsKLSAgICByZXR1cm4gKnRoaXMgPSBT
dHJpbmcoYV9jX3N0cik7Ci0gIH0KLQotICAvLyBBc3NpZ25zIGEgU3RyaW5nIG9iamVjdCB0byB0
aGlzIG9iamVjdC4gIFNlbGYtYXNzaWdubWVudCB3b3Jrcy4KLSAgY29uc3QgU3RyaW5nJiBvcGVy
YXRvcj0oY29uc3QgU3RyaW5nJiByaHMpIHsKLSAgICBpZiAodGhpcyAhPSAmcmhzKSB7Ci0gICAg
ICBkZWxldGVbXSBjX3N0cl87Ci0gICAgICBpZiAocmhzLmNfc3RyKCkgPT0gTlVMTCkgewotICAg
ICAgICBjX3N0cl8gPSBOVUxMOwotICAgICAgICBsZW5ndGhfID0gMDsKLSAgICAgIH0gZWxzZSB7
Ci0gICAgICAgIENvbnN0cnVjdE5vbk51bGwocmhzLmNfc3RyKCksIHJocy5sZW5ndGgoKSk7Ci0g
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuICp0aGlzOwotICB9CisgIC8vIEZvcm1hdHMgYSBi
eXRlIGFzICIlMDJYIi4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdEJ5dGUodW5zaWduZWQg
Y2hhciB2YWx1ZSk7CiAKICBwcml2YXRlOgotICAvLyBDb25zdHJ1Y3RzIGEgbm9uLU5VTEwgU3Ry
aW5nIGZyb20gdGhlIGdpdmVuIGNvbnRlbnQuICBUaGlzCi0gIC8vIGZ1bmN0aW9uIGNhbiBvbmx5
IGJlIGNhbGxlZCB3aGVuIGRhdGFfIGhhcyBub3QgYmVlbiBhbGxvY2F0ZWQuCi0gIC8vIENvbnN0
cnVjdE5vbk51bGwoTlVMTCwgMCkgcmVzdWx0cyBpbiBhbiBlbXB0eSBzdHJpbmcgKCIiKS4KLSAg
Ly8gQ29uc3RydWN0Tm9uTnVsbChOVUxMLCBub25femVybykgaXMgdW5kZWZpbmVkIGJlaGF2aW9y
LgotICB2b2lkIENvbnN0cnVjdE5vbk51bGwoY29uc3QgY2hhciogYnVmZmVyLCBzaXplX3QgYV9s
ZW5ndGgpIHsKLSAgICBjaGFyKiBjb25zdCBzdHIgPSBuZXcgY2hhclthX2xlbmd0aCArIDFdOwot
ICAgIG1lbWNweShzdHIsIGJ1ZmZlciwgYV9sZW5ndGgpOwotICAgIHN0clthX2xlbmd0aF0gPSAn
XDAnOwotICAgIGNfc3RyXyA9IHN0cjsKLSAgICBsZW5ndGhfID0gYV9sZW5ndGg7Ci0gIH0KLQot
ICBjb25zdCBjaGFyKiBjX3N0cl87Ci0gIHNpemVfdCBsZW5ndGhfOworICBTdHJpbmcoKTsgIC8v
IE5vdCBtZWFudCB0byBiZSBpbnN0YW50aWF0ZWQuCiB9OyAgLy8gY2xhc3MgU3RyaW5nCiAKLS8v
IFN0cmVhbXMgYSBTdHJpbmcgdG8gYW4gb3N0cmVhbS4gIEVhY2ggJ1wwJyBjaGFyYWN0ZXIgaW4g
dGhlIFN0cmluZwotLy8gaXMgcmVwbGFjZWQgd2l0aCAiXFwwIi4KLWlubGluZSA6OnN0ZDo6b3N0
cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFN0cmluZyYgc3RyKSB7
Ci0gIGlmIChzdHIuY19zdHIoKSA9PSBOVUxMKSB7Ci0gICAgb3MgPDwgIihudWxsKSI7Ci0gIH0g
ZWxzZSB7Ci0gICAgY29uc3QgY2hhciogY29uc3QgY19zdHIgPSBzdHIuY19zdHIoKTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSAhPSBzdHIubGVuZ3RoKCk7IGkrKykgewotICAgICAgaWYgKGNf
c3RyW2ldID09ICdcMCcpIHsKLSAgICAgICAgb3MgPDwgIlxcMCI7Ci0gICAgICB9IGVsc2Ugewot
ICAgICAgICBvcyA8PCBjX3N0cltpXTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgcmV0dXJuIG9z
OwotfQotCi0vLyBHZXRzIHRoZSBjb250ZW50IG9mIHRoZSBTdHJTdHJlYW0ncyBidWZmZXIgYXMg
YSBTdHJpbmcuICBFYWNoICdcMCcKKy8vIEdldHMgdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZ3N0
cmVhbSdzIGJ1ZmZlciBhcyBhbiBzdGQ6OnN0cmluZy4gIEVhY2ggJ1wwJwogLy8gY2hhcmFjdGVy
IGluIHRoZSBidWZmZXIgaXMgcmVwbGFjZWQgd2l0aCAiXFwwIi4KLUdURVNUX0FQSV8gU3RyaW5n
IFN0clN0cmVhbVRvU3RyaW5nKFN0clN0cmVhbSogc3RyZWFtKTsKLQotLy8gQ29udmVydHMgYSBz
dHJlYW1hYmxlIHZhbHVlIHRvIGEgU3RyaW5nLiAgQSBOVUxMIHBvaW50ZXIgaXMKLS8vIGNvbnZl
cnRlZCB0byAiKG51bGwpIi4gIFdoZW4gdGhlIGlucHV0IHZhbHVlIGlzIGEgOjpzdHJpbmcsCi0v
LyA6OnN0ZDo6c3RyaW5nLCA6OndzdHJpbmcsIG9yIDo6c3RkOjp3c3RyaW5nIG9iamVjdCwgZWFj
aCBOVUwKLS8vIGNoYXJhY3RlciBpbiBpdCBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgotCi0vLyBE
ZWNsYXJlZCBoZXJlIGJ1dCBkZWZpbmVkIGluIGd0ZXN0LmgsIHNvIHRoYXQgaXQgaGFzIGFjY2Vz
cwotLy8gdG8gdGhlIGRlZmluaXRpb24gb2YgdGhlIE1lc3NhZ2UgY2xhc3MsIHJlcXVpcmVkIGJ5
IHRoZSBBUk0KLS8vIGNvbXBpbGVyLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1TdHJpbmcgU3Ry
ZWFtYWJsZVRvU3RyaW5nKGNvbnN0IFQmIHN0cmVhbWFibGUpOworR1RFU1RfQVBJXyBzdGQ6OnN0
cmluZyBTdHJpbmdTdHJlYW1Ub1N0cmluZyg6OnN0ZDo6c3RyaW5nc3RyZWFtKiBzdHJlYW0pOwog
CiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXR1cGxlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVy
bmFsL2d0ZXN0LXR1cGxlLmgKaW5kZXggMTYxNzhmYzA3YWYxMjlhZjE1NDg3MWNjMmQ5YjNhOThk
MWQ5NGFiNC4uZTliNDA1MzQwYTg1NWY2MDI1OGIxMzQwMjZiZTdiMTM2MTJlYmUxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC10dXBsZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtdHVwbGUuaApAQCAtMSw0ICsxLDYgQEAKLS8vIFRoaXMgZmlsZSB3YXMgR0VO
RVJBVEVEIGJ5IGEgc2NyaXB0LiAgRE8gTk9UIEVESVQgQlkgSEFORCEhIQorLy8gVGhpcyBmaWxl
IHdhcyBHRU5FUkFURUQgYnkgY29tbWFuZDoKKy8vICAgICBwdW1wLnB5IGd0ZXN0LXR1cGxlLmgu
cHVtcAorLy8gRE8gTk9UIEVESVQgQlkgSEFORCEhIQogCiAvLyBDb3B5cmlnaHQgMjAwOSBHb29n
bGUgSW5jLgogLy8gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KQEAgLTQ0LDEzICs0NiwyMSBAQAogLy8g
cHJpdmF0ZSBhcyBwdWJsaWMuCiAvLyBTdW4gU3R1ZGlvIHZlcnNpb25zIDwgMTIgYWxzbyBoYXZl
IHRoZSBhYm92ZSBidWcuCiAjaWYgZGVmaW5lZChfX1NZTUJJQU4zMl9fKSB8fCAoZGVmaW5lZChf
X1NVTlBST19DQykgJiYgX19TVU5QUk9fQ0MgPCAweDU5MCkKLSNkZWZpbmUgR1RFU1RfREVDTEFS
RV9UVVBMRV9BU19GUklFTkRfIHB1YmxpYzoKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVf
QVNfRlJJRU5EXyBwdWJsaWM6CiAjZWxzZQotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FT
X0ZSSUVORF8gXAorIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIFwKICAg
ICB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhVKT4gZnJpZW5kIGNsYXNzIHR1cGxlOyBc
CiAgICBwcml2YXRlOgogI2VuZGlmCiAKKy8vIFZpc3VhbCBTdHVkaW8gMjAxMCwgMjAxMiwgYW5k
IDIwMTMgZGVmaW5lIHN5bWJvbHMgaW4gc3RkOjp0cjEgdGhhdCBjb25mbGljdAorLy8gd2l0aCBv
dXIgb3duIGRlZmluaXRpb25zLiBUaGVyZWZvcmUgdXNpbmcgb3VyIG93biB0dXBsZSBkb2VzIG5v
dCB3b3JrIG9uCisvLyB0aG9zZSBjb21waWxlcnMuCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYg
X01TQ19WRVIgPj0gMTYwMCAgLyogMTYwMCBpcyBWaXN1YWwgU3R1ZGlvIDIwMTAgKi8KKyMgZXJy
b3IgImd0ZXN0J3MgdHVwbGUgZG9lc24ndCBjb21waWxlIG9uIFZpc3VhbCBTdHVkaW8gMjAxMCBv
ciBsYXRlci4gXAorR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgbXVzdCBiZSBzZXQgdG8gMCBvbiB0
aG9zZSBjb21waWxlcnMuIgorI2VuZGlmCisKIC8vIEdURVNUX25fVFVQTEVfKFQpIGlzIHRoZSB0
eXBlIG9mIGFuIG4tdHVwbGUuCiAjZGVmaW5lIEdURVNUXzBfVFVQTEVfKFQpIHR1cGxlPD4KICNk
ZWZpbmUgR1RFU1RfMV9UVVBMRV8oVCkgdHVwbGU8VCMjMCwgdm9pZCwgdm9pZCwgdm9pZCwgdm9p
ZCwgdm9pZCwgdm9pZCwgXApAQCAtMTQwLDM0ICsxNTAsNTQgQEAgdGVtcGxhdGUgPGJvb2wga0lu
ZGV4VmFsaWQsIGludCBrSW5kZXgsIGNsYXNzIFR1cGxlPgogc3RydWN0IFR1cGxlRWxlbWVudDsK
IAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50
PHRydWUsIDAsIEdURVNUXzEwX1RVUExFXyhUKT4geyB0eXBlZGVmIFQwIHR5cGU7IH07CitzdHJ1
Y3QgVHVwbGVFbGVtZW50PHRydWUsIDAsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRl
ZiBUMCB0eXBlOworfTsKIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1
Y3QgVHVwbGVFbGVtZW50PHRydWUsIDEsIEdURVNUXzEwX1RVUExFXyhUKT4geyB0eXBlZGVmIFQx
IHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDEsIEdURVNUXzEwX1RVUExFXyhU
KSA+IHsKKyAgdHlwZWRlZiBUMSB0eXBlOworfTsKIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVO
QU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDIsIEdURVNUXzEwX1RVUExFXyhU
KT4geyB0eXBlZGVmIFQyIHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDIsIEdU
RVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUMiB0eXBlOworfTsKIAogdGVtcGxhdGUg
PEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDMsIEdU
RVNUXzEwX1RVUExFXyhUKT4geyB0eXBlZGVmIFQzIHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVFbGVt
ZW50PHRydWUsIDMsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUMyB0eXBlOwor
fTsKIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVt
ZW50PHRydWUsIDQsIEdURVNUXzEwX1RVUExFXyhUKT4geyB0eXBlZGVmIFQ0IHR5cGU7IH07Citz
dHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDQsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlw
ZWRlZiBUNCB0eXBlOworfTsKIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1z
dHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDUsIEdURVNUXzEwX1RVUExFXyhUKT4geyB0eXBlZGVm
IFQ1IHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDUsIEdURVNUXzEwX1RVUExF
XyhUKSA+IHsKKyAgdHlwZWRlZiBUNSB0eXBlOworfTsKIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZ
UEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDYsIEdURVNUXzEwX1RVUExF
XyhUKT4geyB0eXBlZGVmIFQ2IHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDYs
IEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUNiB0eXBlOworfTsKIAogdGVtcGxh
dGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDcs
IEdURVNUXzEwX1RVUExFXyhUKT4geyB0eXBlZGVmIFQ3IHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVF
bGVtZW50PHRydWUsIDcsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUNyB0eXBl
OworfTsKIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVF
bGVtZW50PHRydWUsIDgsIEdURVNUXzEwX1RVUExFXyhUKT4geyB0eXBlZGVmIFQ4IHR5cGU7IH07
CitzdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDgsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAg
dHlwZWRlZiBUOCB0eXBlOworfTsKIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+
Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDksIEdURVNUXzEwX1RVUExFXyhUKT4geyB0eXBl
ZGVmIFQ5IHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDksIEdURVNUXzEwX1RV
UExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUOSB0eXBlOworfTsKIAogfSAgLy8gbmFtZXNwYWNlIGd0
ZXN0X2ludGVybmFsCiAKQEAgLTcwOCwzNyArNzM4LDU5IEBAIGlubGluZSBHVEVTVF8xMF9UVVBM
RV8oVCkgbWFrZV90dXBsZShjb25zdCBUMCYgZjAsIGNvbnN0IFQxJiBmMSwgY29uc3QgVDImIGYy
LAogdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPiBzdHJ1Y3QgdHVwbGVfc2l6ZTsKIAogdGVtcGxh
dGUgPEdURVNUXzBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzBfVFVQ
TEVfKFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAwOyB9Oworc3RydWN0IHR1cGxlX3Np
emU8R1RFU1RfMF9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAwOwor
fTsKIAogdGVtcGxhdGUgPEdURVNUXzFfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXpl
PEdURVNUXzFfVFVQTEVfKFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAxOyB9Oworc3Ry
dWN0IHR1cGxlX3NpemU8R1RFU1RfMV9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQg
dmFsdWUgPSAxOworfTsKIAogdGVtcGxhdGUgPEdURVNUXzJfVFlQRU5BTUVTXyhUKT4KLXN0cnVj
dCB0dXBsZV9zaXplPEdURVNUXzJfVFVQTEVfKFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUg
PSAyOyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfMl9UVVBMRV8oVCkgPiB7CisgIHN0YXRp
YyBjb25zdCBpbnQgdmFsdWUgPSAyOworfTsKIAogdGVtcGxhdGUgPEdURVNUXzNfVFlQRU5BTUVT
XyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzNfVFVQTEVfKFQpPiB7IHN0YXRpYyBjb25z
dCBpbnQgdmFsdWUgPSAzOyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfM19UVVBMRV8oVCkg
PiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAzOworfTsKIAogdGVtcGxhdGUgPEdURVNU
XzRfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzRfVFVQTEVfKFQpPiB7
IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA0OyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1Rf
NF9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA0OworfTsKIAogdGVt
cGxhdGUgPEdURVNUXzVfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzVf
VFVQTEVfKFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA1OyB9Oworc3RydWN0IHR1cGxl
X3NpemU8R1RFU1RfNV9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA1
OworfTsKIAogdGVtcGxhdGUgPEdURVNUXzZfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9z
aXplPEdURVNUXzZfVFVQTEVfKFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA2OyB9Owor
c3RydWN0IHR1cGxlX3NpemU8R1RFU1RfNl9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBp
bnQgdmFsdWUgPSA2OworfTsKIAogdGVtcGxhdGUgPEdURVNUXzdfVFlQRU5BTUVTXyhUKT4KLXN0
cnVjdCB0dXBsZV9zaXplPEdURVNUXzdfVFVQTEVfKFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFs
dWUgPSA3OyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfN19UVVBMRV8oVCkgPiB7CisgIHN0
YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA3OworfTsKIAogdGVtcGxhdGUgPEdURVNUXzhfVFlQRU5B
TUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzhfVFVQTEVfKFQpPiB7IHN0YXRpYyBj
b25zdCBpbnQgdmFsdWUgPSA4OyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfOF9UVVBMRV8o
VCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA4OworfTsKIAogdGVtcGxhdGUgPEdU
RVNUXzlfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzlfVFVQTEVfKFQp
PiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA5OyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RF
U1RfOV9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA5OworfTsKIAog
dGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVT
VF8xMF9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDEwOyB9Oworc3RydWN0
IHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZh
bHVlID0gMTA7Cit9OwogCiB0ZW1wbGF0ZSA8aW50IGssIGNsYXNzIFR1cGxlPgogc3RydWN0IHR1
cGxlX2VsZW1lbnQgewpAQCAtOTIyLDggKzk3NCw4IEBAIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBF
TkFNRVNfKFQpLCBHVEVTVF8xMF9UWVBFTkFNRVNfKFUpPgogaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBHVEVTVF8xMF9UVVBMRV8oVCkmIHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdURVNUXzEwX1RVUExFXyhVKSYgdSkgewogICByZXR1cm4gZ3Rlc3RfaW50ZXJuYWw6OlNh
bWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9yPAotICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8xMF9U
VVBMRV8oVCk+Ojp2YWx1ZSwKLSAgICAgIHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFUpPjo6
dmFsdWU+OjpFcSh0LCB1KTsKKyAgICAgIHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFQpID46
OnZhbHVlLAorICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8xMF9UVVBMRV8oVSkgPjo6dmFsdWU+OjpF
cSh0LCB1KTsKIH0KIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCksIEdURVNUXzEw
X1RZUEVOQU1FU18oVSk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1wCmluZGV4IDg1
ZWJjODA2MmVlMTA0NDczN2IzNmU4YTQwODVkMjY3ZjE4ZGMyMDUuLjQyOWRkZmVlY2FhNzRlNzFh
OWQ4OWVjNTY4ZTk4NTgxYjc2NjJiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1wCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5w
dW1wCkBAIC00NSwxMyArNDUsMjEgQEAgJCQgVGhpcyBtZXRhIGNvbW1lbnQgZml4ZXMgYXV0by1p
bmRlbnRhdGlvbiBpbiBFbWFjcy4gfX0KIC8vIHByaXZhdGUgYXMgcHVibGljLgogLy8gU3VuIFN0
dWRpbyB2ZXJzaW9ucyA8IDEyIGFsc28gaGF2ZSB0aGUgYWJvdmUgYnVnLgogI2lmIGRlZmluZWQo
X19TWU1CSUFOMzJfXykgfHwgKGRlZmluZWQoX19TVU5QUk9fQ0MpICYmIF9fU1VOUFJPX0NDIDwg
MHg1OTApCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBwdWJsaWM6Cisj
IGRlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8gcHVibGljOgogI2Vsc2UKLSNk
ZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIFwKKyMgZGVmaW5lIEdURVNUX0RF
Q0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBcCiAgICAgdGVtcGxhdGUgPEdURVNUXyQobilfVFlQRU5B
TUVTXyhVKT4gZnJpZW5kIGNsYXNzIHR1cGxlOyBcCiAgICBwcml2YXRlOgogI2VuZGlmCiAKKy8v
IFZpc3VhbCBTdHVkaW8gMjAxMCwgMjAxMiwgYW5kIDIwMTMgZGVmaW5lIHN5bWJvbHMgaW4gc3Rk
Ojp0cjEgdGhhdCBjb25mbGljdAorLy8gd2l0aCBvdXIgb3duIGRlZmluaXRpb25zLiBUaGVyZWZv
cmUgdXNpbmcgb3VyIG93biB0dXBsZSBkb2VzIG5vdCB3b3JrIG9uCisvLyB0aG9zZSBjb21waWxl
cnMuCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTYwMCAgLyogMTYwMCBp
cyBWaXN1YWwgU3R1ZGlvIDIwMTAgKi8KKyMgZXJyb3IgImd0ZXN0J3MgdHVwbGUgZG9lc24ndCBj
b21waWxlIG9uIFZpc3VhbCBTdHVkaW8gMjAxMCBvciBsYXRlci4gXAorR1RFU1RfVVNFX09XTl9U
UjFfVFVQTEUgbXVzdCBiZSBzZXQgdG8gMCBvbiB0aG9zZSBjb21waWxlcnMuIgorI2VuZGlmCisK
IAogJHJhbmdlIGkgMC4ubi0xCiAkcmFuZ2UgaiAwLi5uCkBAIC0xMTgsOCArMTI2LDkgQEAgc3Ry
dWN0IFR1cGxlRWxlbWVudDsKIAogJGZvciBpIFtbCiB0ZW1wbGF0ZSA8R1RFU1RfJChuKV9UWVBF
TkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAkaSwgR1RFU1RfJChuKV9UVVBM
RV8oVCk+IFtbXV0KLXsgdHlwZWRlZiBUJGkgdHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8
dHJ1ZSwgJGksIEdURVNUXyQobilfVFVQTEVfKFQpID4geworICB0eXBlZGVmIFQkaSB0eXBlOwor
fTsKIAogCiBdXQpAQCAtMjIwLDcgKzIyOSw5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4g
c3RydWN0IHR1cGxlX3NpemU7CiAKICRmb3IgaiBbWwogdGVtcGxhdGUgPEdURVNUXyQoailfVFlQ
RU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXyQoailfVFVQTEVfKFQpPiB7IHN0
YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAkajsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXyQo
ailfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gJGo7Cit9OwogCiAK
IF1dCkBAIC0zMDIsOCArMzEzLDggQEAgdGVtcGxhdGUgPEdURVNUXyQobilfVFlQRU5BTUVTXyhU
KSwgR1RFU1RfJChuKV9UWVBFTkFNRVNfKFUpPgogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBHVEVTVF8kKG4pX1RVUExFXyhUKSYgdCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R1RFU1RfJChuKV9UVVBMRV8oVSkmIHUpIHsKICAgcmV0dXJuIGd0ZXN0X2ludGVybmFsOjpTYW1l
U2l6ZVR1cGxlUHJlZml4Q29tcGFyYXRvcjwKLSAgICAgIHR1cGxlX3NpemU8R1RFU1RfJChuKV9U
VVBMRV8oVCk+Ojp2YWx1ZSwKLSAgICAgIHR1cGxlX3NpemU8R1RFU1RfJChuKV9UVVBMRV8oVSk+
Ojp2YWx1ZT46OkVxKHQsIHUpOworICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8kKG4pX1RVUExFXyhU
KSA+Ojp2YWx1ZSwKKyAgICAgIHR1cGxlX3NpemU8R1RFU1RfJChuKV9UVVBMRV8oVSkgPjo6dmFs
dWU+OjpFcSh0LCB1KTsKIH0KIAogdGVtcGxhdGUgPEdURVNUXyQobilfVFlQRU5BTUVTXyhUKSwg
R1RFU1RfJChuKV9UWVBFTkFNRVNfKFUpPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgK
aW5kZXggMDkzZWVlNmYwMTk2MzU1NjlmNDA0YWU2MzU3YjhkZTQ4YjcxOGU4MS4uZTQ2ZjdjZmNi
NDgzYTk1NTFjMjBhZGEyM2I3N2Y5ODgwNDA1ZjRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5
cGUtdXRpbC5oCkBAIC00NCw1NSArNDQsNjMgQEAKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVT
VF9JTlRFUk5BTF9HVEVTVF9UWVBFX1VUSUxfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVT
VF9JTlRFUk5BTF9HVEVTVF9UWVBFX1VUSUxfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFs
L2d0ZXN0LXBvcnQuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4K
LQotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AKKyNp
bmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKIC8vICNpZmRlZiBfX0dOVUNf
XyBpcyB0b28gZ2VuZXJhbCBoZXJlLiAgSXQgaXMgcG9zc2libGUgdG8gdXNlIGdjYyB3aXRob3V0
IHVzaW5nCiAvLyBsaWJzdGRjKysgKHdoaWNoIGlzIHdoZXJlIGN4eGFiaS5oIGNvbWVzIGZyb20p
LgotI2lmZGVmIF9fR0xJQkNYWF9fCi0jaW5jbHVkZSA8Y3h4YWJpLmg+Ci0jZW5kaWYgIC8vIF9f
R0xJQkNYWF9fCisjIGlmIEdURVNUX0hBU19DWFhBQklfSF8KKyMgIGluY2x1ZGUgPGN4eGFiaS5o
PgorIyBlbGlmIGRlZmluZWQoX19IUF9hQ0MpCisjICBpbmNsdWRlIDxhY3h4X2RlbWFuZ2xlLmg+
CisjIGVuZGlmICAvLyBHVEVTVF9IQVNIX0NYWEFCSV9IXwogCiBuYW1lc3BhY2UgdGVzdGluZyB7
CiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCi0vLyBBc3NlcnR5VHlwZUVxPFQxLCBUMj46OnR5cGUg
aXMgZGVmaW5lZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQotLy8gdHlwZS4gIFRoaXMgY2Fu
IGJlIHVzZWQgYXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0aGF0Ci0vLyB0
d28gdHlwZXMgYXJlIGVxdWFsLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
Pgotc3RydWN0IEFzc2VydFR5cGVFcTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qg
QXNzZXJ0VHlwZUVxPFQsIFQ+IHsKLSAgdHlwZWRlZiBib29sIHR5cGU7Ci19OwotCiAvLyBHZXRU
eXBlTmFtZTxUPigpIHJldHVybnMgYSBodW1hbi1yZWFkYWJsZSBuYW1lIG9mIHR5cGUgVC4KKy8v
IE5COiBUaGlzIGZ1bmN0aW9uIGlzIGFsc28gdXNlZCBpbiBHb29nbGUgTW9jaywgc28gZG9uJ3Qg
bW92ZSBpdCBpbnNpZGUgb2YKKy8vIHRoZSB0eXBlZC10ZXN0LW9ubHkgc2VjdGlvbiBiZWxvdy4K
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotU3RyaW5nIEdldFR5cGVOYW1lKCkgewotI2lmIEdURVNU
X0hBU19SVFRJCitzdGQ6OnN0cmluZyBHZXRUeXBlTmFtZSgpIHsKKyMgaWYgR1RFU1RfSEFTX1JU
VEkKIAogICBjb25zdCBjaGFyKiBjb25zdCBuYW1lID0gdHlwZWlkKFQpLm5hbWUoKTsKLSNpZmRl
ZiBfX0dMSUJDWFhfXworIyAgaWYgR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBkZWZpbmVkKF9fSFBf
YUNDKQogICBpbnQgc3RhdHVzID0gMDsKICAgLy8gZ2NjJ3MgaW1wbGVtZW50YXRpb24gb2YgdHlw
ZWlkKFQpLm5hbWUoKSBtYW5nbGVzIHRoZSB0eXBlIG5hbWUsCiAgIC8vIHNvIHdlIGhhdmUgdG8g
ZGVtYW5nbGUgaXQuCi0gIGNoYXIqIGNvbnN0IHJlYWRhYmxlX25hbWUgPSBhYmk6Ol9fY3hhX2Rl
bWFuZ2xlKG5hbWUsIDAsIDAsICZzdGF0dXMpOwotICBjb25zdCBTdHJpbmcgbmFtZV9zdHIoc3Rh
dHVzID09IDAgPyByZWFkYWJsZV9uYW1lIDogbmFtZSk7CisjICAgaWYgR1RFU1RfSEFTX0NYWEFC
SV9IXworICB1c2luZyBhYmk6Ol9fY3hhX2RlbWFuZ2xlOworIyAgIGVuZGlmICAvLyBHVEVTVF9I
QVNfQ1hYQUJJX0hfCisgIGNoYXIqIGNvbnN0IHJlYWRhYmxlX25hbWUgPSBfX2N4YV9kZW1hbmds
ZShuYW1lLCAwLCAwLCAmc3RhdHVzKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZV9zdHIoc3Rh
dHVzID09IDAgPyByZWFkYWJsZV9uYW1lIDogbmFtZSk7CiAgIGZyZWUocmVhZGFibGVfbmFtZSk7
CiAgIHJldHVybiBuYW1lX3N0cjsKLSNlbHNlCisjICBlbHNlCiAgIHJldHVybiBuYW1lOwotI2Vu
ZGlmICAvLyBfX0dMSUJDWFhfXworIyAgZW5kaWYgIC8vIEdURVNUX0hBU19DWFhBQklfSF8gfHwg
X19IUF9hQ0MKKworIyBlbHNlCiAKLSNlbHNlCiAgIHJldHVybiAiPHR5cGU+IjsKLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1JUVEkKKworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX1JUVEkKIH0KIAorI2lm
IEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AKKworLy8gQXNz
ZXJ0eVR5cGVFcTxUMSwgVDI+Ojp0eXBlIGlzIGRlZmluZWQgaWZmIFQxIGFuZCBUMiBhcmUgdGhl
IHNhbWUKKy8vIHR5cGUuICBUaGlzIGNhbiBiZSB1c2VkIGFzIGEgY29tcGlsZS10aW1lIGFzc2Vy
dGlvbiB0byBlbnN1cmUgdGhhdAorLy8gdHdvIHR5cGVzIGFyZSBlcXVhbC4KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3N0cnVjdCBBc3NlcnRUeXBlRXE7CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEFzc2VydFR5cGVFcTxULCBUPiB7CisgIHR5cGVkZWYg
Ym9vbCB0eXBlOworfTsKKwogLy8gQSB1bmlxdWUgdHlwZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHZh
bHVlIGZvciB0aGUgYXJndW1lbnRzIG9mIGNsYXNzCiAvLyB0ZW1wbGF0ZSBUeXBlcy4gIFRoaXMg
YWxsb3dzIHVzIHRvIHNpbXVsYXRlIHZhcmlhZGljIHRlbXBsYXRlcwogLy8gKGUuZy4gVHlwZXM8
aW50PiwgVHlwZTxpbnQsIGRvdWJsZT4sIGFuZCBldGMpLCB3aGljaCBDKysgZG9lc24ndApAQCAt
MTYxMSw3ICsxNjE5LDcgQEAgc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3
LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCiAKIG5hbWVzcGFjZSBpbnRl
cm5hbCB7CiAKLSNkZWZpbmUgR1RFU1RfVEVNUExBVEVfIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBj
bGFzcworIyBkZWZpbmUgR1RFU1RfVEVNUExBVEVfIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFz
cwogCiAvLyBUaGUgdGVtcGxhdGUgInNlbGVjdG9yIiBzdHJ1Y3QgVGVtcGxhdGVTZWw8VG1wbD4g
aXMgdXNlZCB0bwogLy8gcmVwcmVzZW50IFRtcGwsIHdoaWNoIG11c3QgYmUgYSBjbGFzcyB0ZW1w
bGF0ZSB3aXRoIG9uZSB0eXBlCkBAIC0xNjI5LDcgKzE2MzcsNyBAQCBzdHJ1Y3QgVGVtcGxhdGVT
ZWwgewogICB9OwogfTsKIAotI2RlZmluZSBHVEVTVF9CSU5EXyhUbXBsU2VsLCBUKSBcCisjIGRl
ZmluZSBHVEVTVF9CSU5EXyhUbXBsU2VsLCBUKSBcCiAgIFRtcGxTZWw6OnRlbXBsYXRlIEJpbmQ8
VD46OnR5cGUKIAogLy8gQSB1bmlxdWUgc3RydWN0IHRlbXBsYXRlIHVzZWQgYXMgdGhlIGRlZmF1
bHQgdmFsdWUgZm9yIHRoZQpAQCAtMzI5MSw3ICszMjk5LDkgQEAgc3RydWN0IFRlbXBsYXRlczxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQx
NCwKIC8vIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKCkuCiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotc3RydWN0IFR5cGVMaXN0IHsgdHlwZWRlZiBUeXBlczE8VD4gdHlwZTsgfTsKK3N0
cnVjdCBUeXBlTGlzdCB7CisgIHR5cGVkZWYgVHlwZXMxPFQ+IHR5cGU7Cit9OwogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LAogICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5
cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCkBAIC0zMzEzLDkgKzMzMjMsOSBAQCBzdHJ1Y3QgVHlw
ZUxpc3Q8VHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEs
IFQxMiwgVDEzLAogICAgICAgVDQxLCBUNDIsIFQ0MywgVDQ0LCBUNDUsIFQ0NiwgVDQ3LCBUNDgs
IFQ0OSwgVDUwPjo6dHlwZSB0eXBlOwogfTsKIAorI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURf
VEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5h
bAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURf
VEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KICNlbmRpZiAgLy8gR1RFU1RfSU5DTFVE
RV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UWVBFX1VUSUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgu
cHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtdHlwZS11dGlsLmgucHVtcAppbmRleCA1YWVkMWU1NTQ0ZmEyZGExNTg5NzM0Y2JjM2I0MTQx
YjU4N2ExZjMyLi4yNTFmZGYwMjViMmM1MzExZmFmOTVlODZlMzMwZmU5MjFjNjBkYWRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXR5cGUtdXRpbC5oLnB1bXAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wCkBAIC00Miw1NSArNDIsNjMg
QEAgJHZhciBuID0gNTAgICQkIE1heGltdW0gbGVuZ3RoIG9mIHR5cGUgbGlzdHMgd2Ugd2FudCB0
byBzdXBwb3J0LgogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RZ
UEVfVVRJTF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RZ
UEVfVVRJTF9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgotI2lu
Y2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oPgotCi0jaWYgR1RFU1RfSEFTX1RZ
UEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorI2luY2x1ZGUgImd0ZXN0L2ludGVy
bmFsL2d0ZXN0LXBvcnQuaCIKIAogLy8gI2lmZGVmIF9fR05VQ19fIGlzIHRvbyBnZW5lcmFsIGhl
cmUuICBJdCBpcyBwb3NzaWJsZSB0byB1c2UgZ2NjIHdpdGhvdXQgdXNpbmcKIC8vIGxpYnN0ZGMr
KyAod2hpY2ggaXMgd2hlcmUgY3h4YWJpLmggY29tZXMgZnJvbSkuCi0jaWZkZWYgX19HTElCQ1hY
X18KLSNpbmNsdWRlIDxjeHhhYmkuaD4KLSNlbmRpZiAgLy8gX19HTElCQ1hYX18KKyMgaWYgR1RF
U1RfSEFTX0NYWEFCSV9IXworIyAgaW5jbHVkZSA8Y3h4YWJpLmg+CisjIGVsaWYgZGVmaW5lZChf
X0hQX2FDQykKKyMgIGluY2x1ZGUgPGFjeHhfZGVtYW5nbGUuaD4KKyMgZW5kaWYgIC8vIEdURVNU
X0hBU0hfQ1hYQUJJX0hfCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5h
bCB7CiAKLS8vIEFzc2VydHlUeXBlRXE8VDEsIFQyPjo6dHlwZSBpcyBkZWZpbmVkIGlmZiBUMSBh
bmQgVDIgYXJlIHRoZSBzYW1lCi0vLyB0eXBlLiAgVGhpcyBjYW4gYmUgdXNlZCBhcyBhIGNvbXBp
bGUtdGltZSBhc3NlcnRpb24gdG8gZW5zdXJlIHRoYXQKLS8vIHR3byB0eXBlcyBhcmUgZXF1YWwu
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1zdHJ1Y3QgQXNzZXJ0VHlw
ZUVxOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBBc3NlcnRUeXBlRXE8VCwgVD4g
ewotICB0eXBlZGVmIGJvb2wgdHlwZTsKLX07Ci0KIC8vIEdldFR5cGVOYW1lPFQ+KCkgcmV0dXJu
cyBhIGh1bWFuLXJlYWRhYmxlIG5hbWUgb2YgdHlwZSBULgorLy8gTkI6IFRoaXMgZnVuY3Rpb24g
aXMgYWxzbyB1c2VkIGluIEdvb2dsZSBNb2NrLCBzbyBkb24ndCBtb3ZlIGl0IGluc2lkZSBvZgor
Ly8gdGhlIHR5cGVkLXRlc3Qtb25seSBzZWN0aW9uIGJlbG93LgogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1TdHJpbmcgR2V0VHlwZU5hbWUoKSB7Ci0jaWYgR1RFU1RfSEFTX1JUVEkKK3N0ZDo6c3Ry
aW5nIEdldFR5cGVOYW1lKCkgeworIyBpZiBHVEVTVF9IQVNfUlRUSQogCiAgIGNvbnN0IGNoYXIq
IGNvbnN0IG5hbWUgPSB0eXBlaWQoVCkubmFtZSgpOwotI2lmZGVmIF9fR0xJQkNYWF9fCisjICBp
ZiBHVEVTVF9IQVNfQ1hYQUJJX0hfIHx8IGRlZmluZWQoX19IUF9hQ0MpCiAgIGludCBzdGF0dXMg
PSAwOwogICAvLyBnY2MncyBpbXBsZW1lbnRhdGlvbiBvZiB0eXBlaWQoVCkubmFtZSgpIG1hbmds
ZXMgdGhlIHR5cGUgbmFtZSwKICAgLy8gc28gd2UgaGF2ZSB0byBkZW1hbmdsZSBpdC4KLSAgY2hh
ciogY29uc3QgcmVhZGFibGVfbmFtZSA9IGFiaTo6X19jeGFfZGVtYW5nbGUobmFtZSwgMCwgMCwg
JnN0YXR1cyk7Ci0gIGNvbnN0IFN0cmluZyBuYW1lX3N0cihzdGF0dXMgPT0gMCA/IHJlYWRhYmxl
X25hbWUgOiBuYW1lKTsKKyMgICBpZiBHVEVTVF9IQVNfQ1hYQUJJX0hfCisgIHVzaW5nIGFiaTo6
X19jeGFfZGVtYW5nbGU7CisjICAgZW5kaWYgIC8vIEdURVNUX0hBU19DWFhBQklfSF8KKyAgY2hh
ciogY29uc3QgcmVhZGFibGVfbmFtZSA9IF9fY3hhX2RlbWFuZ2xlKG5hbWUsIDAsIDAsICZzdGF0
dXMpOworICBjb25zdCBzdGQ6OnN0cmluZyBuYW1lX3N0cihzdGF0dXMgPT0gMCA/IHJlYWRhYmxl
X25hbWUgOiBuYW1lKTsKICAgZnJlZShyZWFkYWJsZV9uYW1lKTsKICAgcmV0dXJuIG5hbWVfc3Ry
OwotI2Vsc2UKKyMgIGVsc2UKICAgcmV0dXJuIG5hbWU7Ci0jZW5kaWYgIC8vIF9fR0xJQkNYWF9f
CisjICBlbmRpZiAgLy8gR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBfX0hQX2FDQworCisjIGVsc2UK
IAotI2Vsc2UKICAgcmV0dXJuICI8dHlwZT4iOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUlRUSQor
CisjIGVuZGlmICAvLyBHVEVTVF9IQVNfUlRUSQogfQogCisjaWYgR1RFU1RfSEFTX1RZUEVEX1RF
U1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorCisvLyBBc3NlcnR5VHlwZUVxPFQxLCBUMj46
OnR5cGUgaXMgZGVmaW5lZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQorLy8gdHlwZS4gIFRo
aXMgY2FuIGJlIHVzZWQgYXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0aGF0
CisvLyB0d28gdHlwZXMgYXJlIGVxdWFsLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyPgorc3RydWN0IEFzc2VydFR5cGVFcTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citz
dHJ1Y3QgQXNzZXJ0VHlwZUVxPFQsIFQ+IHsKKyAgdHlwZWRlZiBib29sIHR5cGU7Cit9OworCiAv
LyBBIHVuaXF1ZSB0eXBlIHVzZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBhcmd1bWVu
dHMgb2YgY2xhc3MKIC8vIHRlbXBsYXRlIFR5cGVzLiAgVGhpcyBhbGxvd3MgdXMgdG8gc2ltdWxh
dGUgdmFyaWFkaWMgdGVtcGxhdGVzCiAvLyAoZS5nLiBUeXBlczxpbnQ+LCBUeXBlPGludCwgZG91
YmxlPiwgYW5kIGV0YyksIHdoaWNoIEMrKyBkb2Vzbid0CkBAIC0xNjksNyArMTc3LDcgQEAgc3Ry
dWN0IFR5cGVzPCRmb3IgaiwgW1tUJGpdXSRmb3Iga1tbLCBpbnRlcm5hbDo6Tm9uZV1dPiB7CiAK
IG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKLSNkZWZpbmUgR1RFU1RfVEVNUExBVEVfIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcworIyBkZWZpbmUgR1RFU1RfVEVNUExBVEVfIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcwogCiAvLyBUaGUgdGVtcGxhdGUgInNlbGVjdG9yIiBzdHJ1Y3QgVGVt
cGxhdGVTZWw8VG1wbD4gaXMgdXNlZCB0bwogLy8gcmVwcmVzZW50IFRtcGwsIHdoaWNoIG11c3Qg
YmUgYSBjbGFzcyB0ZW1wbGF0ZSB3aXRoIG9uZSB0eXBlCkBAIC0xODcsNyArMTk1LDcgQEAgc3Ry
dWN0IFRlbXBsYXRlU2VsIHsKICAgfTsKIH07CiAKLSNkZWZpbmUgR1RFU1RfQklORF8oVG1wbFNl
bCwgVCkgXAorIyBkZWZpbmUgR1RFU1RfQklORF8oVG1wbFNlbCwgVCkgXAogICBUbXBsU2VsOjp0
ZW1wbGF0ZSBCaW5kPFQ+Ojp0eXBlCiAKIC8vIEEgdW5pcXVlIHN0cnVjdCB0ZW1wbGF0ZSB1c2Vk
IGFzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUKQEAgLTI3MCw3ICsyNzgsOSBAQCBzdHJ1Y3Qg
VGVtcGxhdGVzPCRmb3IgaiwgW1tUJGpdXSRmb3Iga1tbLCBOb25lVF1dPiB7CiAvLyBJTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUCgpLgogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVj
dCBUeXBlTGlzdCB7IHR5cGVkZWYgVHlwZXMxPFQ+IHR5cGU7IH07CitzdHJ1Y3QgVHlwZUxpc3Qg
eworICB0eXBlZGVmIFR5cGVzMTxUPiB0eXBlOworfTsKIAogCiAkcmFuZ2UgaSAxLi5uCkBAIC0y
NzksOSArMjg5LDkgQEAgc3RydWN0IFR5cGVMaXN0PFR5cGVzPCRmb3IgaSwgW1tUJGldXT4gPiB7
CiAgIHR5cGVkZWYgdHlwZW5hbWUgVHlwZXM8JGZvciBpLCBbW1QkaV1dPjo6dHlwZSB0eXBlOwog
fTsKIAorI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURf
VEVTVF9QCisKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3Rp
bmcKIAotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURf
VEVTVF9QCi0KICNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9U
WVBFX1VUSUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21ha2UvTWFr
ZWZpbGUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tYWtlL01ha2VmaWxlCmluZGV4IDViMjdi
NmEyY2JiMTNlMzgwZWU3NWQxODZmNTUzYmZiNWZhMTQ0YjUuLjlhYzc0NDkzYmE1NTI0NjU5N2U5
MGI4OThmYWU4NDdhZTM1OGVhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L21ha2UvTWFrZWZpbGUKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbWFrZS9NYWtlZmls
ZQpAQCAtMjAsMTAgKzIwLDEyIEBAIEdURVNUX0RJUiA9IC4uCiBVU0VSX0RJUiA9IC4uL3NhbXBs
ZXMKIAogIyBGbGFncyBwYXNzZWQgdG8gdGhlIHByZXByb2Nlc3Nvci4KLUNQUEZMQUdTICs9IC1J
JChHVEVTVF9ESVIpL2luY2x1ZGUKKyMgU2V0IEdvb2dsZSBUZXN0J3MgaGVhZGVyIGRpcmVjdG9y
eSBhcyBhIHN5c3RlbSBkaXJlY3RvcnksIHN1Y2ggdGhhdAorIyB0aGUgY29tcGlsZXIgZG9lc24n
dCBnZW5lcmF0ZSB3YXJuaW5ncyBpbiBHb29nbGUgVGVzdCBoZWFkZXJzLgorQ1BQRkxBR1MgKz0g
LWlzeXN0ZW0gJChHVEVTVF9ESVIpL2luY2x1ZGUKIAogIyBGbGFncyBwYXNzZWQgdG8gdGhlIEMr
KyBjb21waWxlci4KLUNYWEZMQUdTICs9IC1nIC1XYWxsIC1XZXh0cmEKK0NYWEZMQUdTICs9IC1n
IC1XYWxsIC1XZXh0cmEgLXB0aHJlYWQKIAogIyBBbGwgdGVzdHMgcHJvZHVjZWQgYnkgdGhpcyBN
YWtlZmlsZS4gIFJlbWVtYmVyIHRvIGFkZCBuZXcgdGVzdHMgeW91CiAjIGNyZWF0ZWQgdG8gdGhl
IGxpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0LW1k
LnNsbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQuc2xuCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjgyOWI0MDE5YWUzYWU1MWZkMDA2MDNlOTM0NzkzYzRkYjgzODUwY2UKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0LW1kLnNsbgpAQCAtMCww
ICsxLDQ1IEBACitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQg
VmVyc2lvbiA4LjAwCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJD
OTQyfSIpID0gImd0ZXN0LW1kIiwgImd0ZXN0LW1kLnZjcHJvaiIsICJ7QzhGNkMxNzItNTZGMi00
RTc2LUI1RkEtQzNCNDIzQjMxQkU4fSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5j
aWVzKSA9IHBvc3RQcm9qZWN0CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2pl
Y3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3RfbWFp
bi1tZCIsICJndGVzdF9tYWluLW1kLnZjcHJvaiIsICJ7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDct
RjY4RUQ5ODYyMDMzfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBv
c3RQcm9qZWN0CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5
Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3RfcHJvZF90ZXN0LW1k
IiwgImd0ZXN0X3Byb2RfdGVzdC1tZC52Y3Byb2oiLCAiezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlE
LUVBNEQ0OUJDM0VDQn0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBw
b3N0UHJvamVjdAorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJD
OUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0X3VuaXR0ZXN0LW1k
IiwgImd0ZXN0X3VuaXR0ZXN0LW1kLnZjcHJvaiIsICJ7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0Mt
RjRFRTBFRDQ4MUEyfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBv
c3RQcm9qZWN0CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK0dsb2JhbAorCUdsb2Jh
bFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uKSA9IHByZVNvbHV0aW9uCisJCURlYnVnID0g
RGVidWcKKwkJUmVsZWFzZSA9IFJlbGVhc2UKKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2Vj
dGlvbihQcm9qZWN0Q29uZmlndXJhdGlvbikgPSBwb3N0U29sdXRpb24KKwkJe0M4RjZDMTcyLTU2
RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIK
KwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uRGVidWcuQnVpbGQuMCA9
IERlYnVnfFdpbjMyCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LlJl
bGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1
RkEtQzNCNDIzQjMxQkU4fS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXszQUY1
NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVn
fFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LkRlYnVnLkJ1
aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYy
MDMzfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezNBRjU0QzhBLTEwQkYt
NDMzMi05MTQ3LUY2OEVEOTg2MjAzM30uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgor
CQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5EZWJ1Zy5BY3RpdmVDZmcg
PSBEZWJ1Z3xXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5E
ZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVB
NEQ0OUJDM0VDQn0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXsyNDg0ODU1
MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0J9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8
V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uRGVidWcuQWN0
aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0
ODFBMn0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzkt
ODIzQy1GNEVFMEVENDgxQTJ9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7
NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfS5SZWxlYXNlLkJ1aWxkLjAgPSBS
ZWxlYXNlfFdpbjMyCisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oRXh0ZW5zaWJp
bGl0eUdsb2JhbHMpID0gcG9zdFNvbHV0aW9uCisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNl
Y3Rpb24oRXh0ZW5zaWJpbGl0eUFkZElucykgPSBwb3N0U29sdXRpb24KKwlFbmRHbG9iYWxTZWN0
aW9uCitFbmRHbG9iYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMv
Z3Rlc3QtbWQudmNwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52
Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWMxNDk2Y2NiZjBjOTY2ZTc5NTgzYzBmYzc0YTg5OWMxNzUwOWZm
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3Qt
bWQudmNwcm9qCkBAIC0wLDAgKzEsMTI2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZp
c3VhbCBDKysiCisJVmVyc2lvbj0iNy4xMCIKKwlOYW1lPSJndGVzdC1tZCIKKwlQcm9qZWN0R1VJ
RD0ie0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0iCisJS2V5d29yZD0iV2lu
MzJQcm9qIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJ
PC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFt
ZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25OYW1lKS8kKENv
bmZpZ3VyYXRpb25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChPdXREaXIpLyQo
UHJvamVjdE5hbWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiCisJCQlDaGFyYWN0ZXJTZXQ9
IjIiCisJCQlSZWZlcmVuY2VzUGF0aD0iIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM9IldJTjMyO19ERUJVRztfTElCIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJCUJh
c2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlVc2VQcmVj
b21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQ
b3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0
Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvZ3Rl
c3RkLmxpYiIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZD
UHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRU
b29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJ
CTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8
VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJ
TmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFt
ZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1
cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91
dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJ
SW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCisJCQlDb25m
aWd1cmF0aW9uVHlwZT0iNCIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCVJlZmVyZW5jZXNQYXRo
PSImcXVvdDsuLlxpbmNsdWRlJnF1b3Q7OyZxdW90Oy4uJnF1b3Q7Ij4KKwkJCTxUb29sCisJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lO
MzI7TkRFQlVHO19MSUIiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJVXNlUHJlY29tcGls
ZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFi
aWxpdHlQcm9ibGVtcz0iRkFMU0UiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlO
YW1lPSJWQ0xpYnJhcmlhblRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2d0ZXN0Lmxp
YiIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5h
bWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVp
bGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29s
CisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0i
VkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNB
dXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9u
PgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxG
aWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJRmlsdGVyPSJjcHA7
YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCIKKwkJCVVuaXF1ZUlkZW50aWZpZXI9
Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ij4KKwkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxzcmNcZ3Rlc3QtYWxsLmNjIj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90
Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4K
KwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1
b3Q7Ii8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+
CisJCTxGaWx0ZXIKKwkJCU5hbWU9IkhlYWRlciBGaWxlcyIKKwkJCUZpbHRlcj0iaDtocHA7aHh4
O2htO2lubDtpbmM7eHNkIgorCQkJVW5pcXVlSWRlbnRpZmllcj0iezkzOTk1MzgwLTg5QkQtNGIw
NC04OEVCLTYyNUZCRTUyRUJGQn0iPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxz
PgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4cHJvaiBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4cHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMTAwNzhlNGFhYjY5MTcxMmExMDNjMmViNjNlZTdkYWMxZWY0OTliZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9tc3ZjL2d0ZXN0LW1kLnZjeHByb2oKKysrIC9kZXYvbnVsbApAQCAtMSwzNjAgKzAsMCBA
QAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERl
ZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSIxNC4wIiB4bWxucz0iaHR0cDovL3Nj
aGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEl0ZW1Hcm91
cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRp
b24gSW5jbHVkZT0iRGVidWdTdWZmaXh8V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVi
dWdTdWZmaXg8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3Jt
PgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9u
IEluY2x1ZGU9IkRlYnVnU3VmZml4fHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Z1N1
ZmZpeDwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAg
IDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IkRlYnVnX1dpbkNhaXJvfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnX1dp
bkNhaXJvPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4K
LSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJ
bmNsdWRlPSJEZWJ1Z19XaW5DYWlyb3x4NjQiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWdf
V2luQ2Fpcm88L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4K
LSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJ
bmNsdWRlPSJEZWJ1Z3xXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmln
dXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0
Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8
eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgotICAgICAg
PFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAg
ICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUHJvZHVjdGlvbnxXaW4zMiI+Ci0gICAg
ICA8Q29uZmlndXJhdGlvbj5Qcm9kdWN0aW9uPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRm
b3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQcm9kdWN0aW9ufHg2NCI+Ci0gICAgICA8Q29u
ZmlndXJhdGlvbj5Qcm9kdWN0aW9uPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2
NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENv
bmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiI+Ci0gICAgICA8Q29u
ZmlndXJhdGlvbj5SZWxlYXNlX1dpbkNhaXJvPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRm
b3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlX1dpbkNhaXJvfHg2NCI+Ci0gICAg
ICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlX1dpbkNhaXJvPC9Db25maWd1cmF0aW9uPgotICAgICAg
PFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAg
ICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+Ci0gICAgICA8
Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldp
bjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0
Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlv
bj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+
Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxQcm9wZXJ0
eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KLSAgICA8UHJvamVjdEd1aWQ+e0M4RjZDMTcyLTU2RjIt
NEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH08L1Byb2plY3RHdWlkPgotICAgIDxSb290TmFtZXNwYWNl
Pmd0ZXN0LW1kPC9Sb290TmFtZXNwYWNlPgotICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29y
ZD4KLSAgICA8V2luZG93c1RhcmdldFBsYXRmb3JtVmVyc2lvbj44LjE8L1dpbmRvd3NUYXJnZXRQ
bGF0Zm9ybVZlcnNpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIk
KFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3Bl
cnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlw
ZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11
bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZv
cm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0i
Q29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0Nv
bmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJT
ZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJv
cGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3Vy
YXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0
aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAg
IDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3Jv
dXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0g
ICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgot
ICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3Jt
VG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFBy
b3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQ
cm9kdWN0aW9ufFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0
aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVy
U2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwv
UGxhdGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQn
IiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xp
YnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9D
aGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+
Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0
aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlv
blR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8
UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3Vw
PgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJh
dGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3Rl
clNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8
L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJv
fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5T
dGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRp
Qnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1U
b29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyIgTGFi
ZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5
PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFj
dGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8
L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIiBMYWJlbD0iQ29uZmlndXJh
dGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRp
b25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAg
PFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91
cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENv
bmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxD
aGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNl
dD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEltcG9ydCBQ
cm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+Ci0gIDxJbXBv
cnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgotICA8L0ltcG9ydEdyb3VwPgotICA8
SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIg
Q29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPElt
cG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnBy
b3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0
eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2Fs
QXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFy
aWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAg
PEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPElt
cG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVz
ZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3Bw
LiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAv
PgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3Bz
XGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4
NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249
ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnBy
b3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2pl
Y3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0g
IDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVl
dHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4k
KFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilc
TWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERh
dGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylc
dG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBv
cnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1
Y3Rpb258eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9
IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29u
ZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9y
dCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3Bz
IiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNo
ZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3Bw
LiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBw
RGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVz
KVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPElt
cG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0
aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQ
cm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAv
PgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciIExhYmVsPSJQcm9w
ZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJS
b290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9Ikxv
Y2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGli
cmFyaWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4K
LSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWdfV2luQ2Fpcm98eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1w
b3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+
Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNc
Y29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMici
IExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhp
c3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMn
KSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0i
JChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgICA8
SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xkZWJ1Z3N1
ZmZpeC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyIgTGFi
ZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMo
JyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBM
YWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdl
YktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICAgIDxJbXBv
cnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGRlYnVnc3VmZml4
LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNl
ck1hY3JvcyIgLz4KLSAgPFByb3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+
MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxPdXREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAg
ICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98
eDY0JyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxs
aWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+JChD
b25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGly
PgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWly
b3xXaW4zMiciPiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj4kKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERpciBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2lu
MzInIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
PC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmd0ZXN0
JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmd0ZXN0JChEZWJ1
Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+Z3Rlc3Qk
KERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+Z3Rl
c3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj5ndGVz
dCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj5ndGVzdCQo
RGVidWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5ndGVzdCQoRGVidWdT
dWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwv
VGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+Z3Rlc3QkKERlYnVnU3VmZml4
KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPmd0ZXN0JChEZWJ1Z1N1ZmZp
eCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPmd0ZXN0JChEZWJ1Z1N1ZmZp
eCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj5ndGVzdCQoRGVidWdTdWZmaXgp
PC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1p
emF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGly
KS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNs
dWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGlu
Y2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEph
dmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjsl
KFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAg
ICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAg
PEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+
Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYj4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGly
KWd0ZXN0JChEZWJ1Z1N1ZmZpeCkubGliPC9PdXRwdXRGaWxlPgotICAgIDwvTGliPgotICA8L0l0
ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPENsQ29tcGls
ZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIp
Li5cSW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChD
b25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
PgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFByZWNvbXBpbGVkSGVh
ZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVj
a3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgIDwvQ2xDb21waWxl
PgotICAgIDxMaWI+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilndGVzdCQoRGVidWdTdWZm
aXgpLmxpYjwvT3V0cHV0RmlsZT4KLSAgICA8L0xpYj4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3Vw
PgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAg
ICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5j
bHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdI
ZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAg
ICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRp
VGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgot
ICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5h
YmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgIDwvQ2xDb21waWxlPgotICAg
IDxMaWI+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilndGVzdC5saWI8L091dHB1dEZpbGU+
Ci0gICAgPC9MaWI+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9u
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19X
aW5DYWlyb3x4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNh
YmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVk
ZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxp
YnJhcnk+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVh
ZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1
bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYj4KLSAgICAgIDxPdXRwdXRG
aWxlPiQoT3V0RGlyKWd0ZXN0LmxpYjwvT3V0cHV0RmlsZT4KLSAgICA8L0xpYj4KLSAgPC9JdGVt
RGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+Ci0gICAgPENs
Q29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAg
ICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2pl
Y3REaXIpLi5cSW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3Jl
XEZvcndhcmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZh
dGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29y
ZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNz
b3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxCYXNpY1J1bnRp
bWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgIDwvQ2xD
b21waWxlPgotICAgIDxMaWI+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilndGVzdCQoRGVi
dWdTdWZmaXgpLmxpYjwvT3V0cHV0RmlsZT4KLSAgICA8L0xpYj4KLSAgPC9JdGVtRGVmaW5pdGlv
bkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0g
ICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXElu
Y2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAg
ICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4K
LSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVu
YWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAg
ICA8TGliPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpZ3Rlc3QkKERlYnVnU3VmZml4KS5s
aWI8L091dHB1dEZpbGU+Ci0gICAgPC9MaWI+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAg
PEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5j
bHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdI
ZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAg
ICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAg
IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMp
PC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliIC8+
Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAg
IDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2pl
Y3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZh
dGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAg
IDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJ
QjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0g
ICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYiAvPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0g
IDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAg
ICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0
RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRl
OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFk
ZXI+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRl
ZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0g
ICAgPExpYiAvPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9X
aW5DYWlyb3x4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChD
b25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlY29t
cGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFByZXByb2Nl
c3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAgPC9JdGVt
RGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj4KLSAgICA8Q2xD
b21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGly
KS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNs
dWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGlu
Y2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEph
dmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1By
ZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwv
Q2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRl
bURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1Byb2R1Y3Rpb258eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVk
ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9Q
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliIC8+Ci0g
IDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHNyY1xndGVzdC1kZWF0aC10ZXN0LmNjIiAvPgotICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cc3JjXGd0ZXN0LWZpbGVwYXRoLmNjIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cc3JjXGd0ZXN0LXBvcnQuY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxz
cmNcZ3Rlc3QtdGVzdC1wYXJ0LmNjIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3Jj
XGd0ZXN0LXR5cGVkLXRlc3QuY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNc
Z3Rlc3QuY2MiIC8+Ci0gIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1kZWF0aC10ZXN0LWlu
dGVybmFsLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0
ZXN0LWRlYXRoLXRlc3QuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVc
Z3Rlc3RcaW50ZXJuYWxcZ3Rlc3QtZmlsZXBhdGguaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHNyY1xndGVzdC1pbnRlcm5hbC1pbmwuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rlc3QtaW50ZXJuYWwuaCIgLz4KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtbWVzc2FnZS5oIiAvPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1w
b3J0LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0
LXNwaS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRl
cm5hbFxndGVzdC1zdHJpbmcuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1
ZGVcZ3Rlc3RcZ3Rlc3QuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVc
Z3Rlc3RcZ3Rlc3RfcHJlZF9pbXBsLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxp
bmNsdWRlXGd0ZXN0XGd0ZXN0X3Byb2QuaCIgLz4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJbXBvcnQg
UHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+Ci0gIDxJ
bXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci08
L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0
LW1kLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3Qt
bWQudmN4cHJvai5maWx0ZXJzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzdkMWM5
YjRkY2E2YTE0ZWM3MDZiYzRhOGMxMzFmNmI1YzgzODAwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rl
c3QtbWQudmN4cHJvai5maWx0ZXJzCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAot77u/
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IFRvb2xzVmVy
c2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIv
bXNidWlsZC8yMDAzIj4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJj
ZSBGaWxlcyI+Ci0gICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEw
NjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KLSAgICAgIDxFeHRlbnNpb25zPmNw
cDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgotICAgIDwv
RmlsdGVyPgotICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KLSAgICAgIDxVbmlx
dWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9Vbmlx
dWVJZGVudGlmaWVyPgotICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNk
PC9FeHRlbnNpb25zPgotICAgIDwvRmlsdGVyPgotICA8L0l0ZW1Hcm91cD4KLSAgPEl0ZW1Hcm91
cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC1kZWF0aC10ZXN0LmNjIj4K
LSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0g
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QtZmlsZXBhdGguY2MiPgotICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC1wb3J0LmNjIj4KLSAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxzcmNcZ3Rlc3QtdGVzdC1wYXJ0LmNjIj4KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZp
bGVzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxzcmNcZ3Rlc3QtdHlwZWQtdGVzdC5jYyI+Ci0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwv
RmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3Jj
XGd0ZXN0LmNjIj4KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9D
bENvbXBpbGU+Ci0gIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1kZWF0aC10ZXN0LWludGVy
bmFsLmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5j
bHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtZGVh
dGgtdGVzdC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9D
bEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVy
bmFsXGd0ZXN0LWZpbGVwYXRoLmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHNyY1xndGVz
dC1pbnRlcm5hbC1pbmwuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgot
ICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVz
dFxpbnRlcm5hbFxndGVzdC1pbnRlcm5hbC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
PC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxp
bmNsdWRlXGd0ZXN0XGd0ZXN0LW1lc3NhZ2UuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1wb3J0LmgiPgotICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3Qtc3BpLmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rlc3Qtc3RyaW5nLmgiPgotICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdF9wcmVkX2ltcGwuaCI+Ci0gICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdF9wcm9kLmgiPgotICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgPC9JdGVtR3JvdXA+Ci08L1By
b2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC5zbG4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9t
c3ZjL2d0ZXN0LnNsbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWIyOTI5NjQ5ZmY2OWExMDllZWE1YjRiN2Y2ZGNj
NzFjNTFjZDRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2
Yy9ndGVzdC5zbG4KQEAgLTAsMCArMSw0NSBAQAorTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29s
dXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gOC4wMAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEt
MTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdCIsICJndGVzdC52Y3Byb2oiLCAie0M4
RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30iCisJUHJvamVjdFNlY3Rpb24oUHJv
amVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQ
cm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIp
ID0gImd0ZXN0X21haW4iLCAiZ3Rlc3RfbWFpbi52Y3Byb2oiLCAiezNBRjU0QzhBLTEwQkYtNDMz
Mi05MTQ3LUY2OEVEOTg2MjAzMn0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2ll
cykgPSBwb3N0UHJvamVjdAorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0
KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0X3VuaXR0
ZXN0IiwgImd0ZXN0X3VuaXR0ZXN0LnZjcHJvaiIsICJ7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0Mt
RjRFRTBFRDQ4MUExfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBv
c3RQcm9qZWN0CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5
Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3RfcHJvZF90ZXN0Iiwg
Imd0ZXN0X3Byb2RfdGVzdC52Y3Byb2oiLCAiezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0
OUJDM0VDQX0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJv
amVjdAorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitHbG9iYWwKKwlHbG9iYWxTZWN0
aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvbikgPSBwcmVTb2x1dGlvbgorCQlEZWJ1ZyA9IERlYnVn
CisJCVJlbGVhc2UgPSBSZWxlYXNlCisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24o
UHJvamVjdENvbmZpZ3VyYXRpb24pID0gcG9zdFNvbHV0aW9uCisJCXtDOEY2QzE3Mi01NkYyLTRF
NzYtQjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtD
OEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1
Z3xXaW4zMgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fS5SZWxlYXNl
LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMz
QjQyM0IzMUJFN30uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7M0FGNTRDOEEt
MTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4z
MgorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5EZWJ1Zy5CdWlsZC4w
ID0gRGVidWd8V2luMzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0u
UmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzIt
OTE0Ny1GNjhFRDk4NjIwMzJ9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezRE
OUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uRGVidWcuQWN0aXZlQ2ZnID0gRGVi
dWd8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uRGVidWcu
QnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVE
NDgxQTF9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7NEQ5RkRGQjUtOTg2
QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUExfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMy
CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LkRlYnVnLkFjdGl2ZUNm
ZyA9IERlYnVnfFdpbjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9
LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQt
RUE0RDQ5QkMzRUNBfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezI0ODQ4
NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQX0uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFz
ZXxXaW4zMgorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKEV4dGVuc2liaWxpdHlH
bG9iYWxzKSA9IHBvc3RTb2x1dGlvbgorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9u
KEV4dGVuc2liaWxpdHlBZGRJbnMpID0gcG9zdFNvbHV0aW9uCisJRW5kR2xvYmFsU2VjdGlvbgor
RW5kR2xvYmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0
LnZjcHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QudmNwcm9qCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ0OWU3ZTA5ZWE3ZThhOTEwNGQ5YjQ1MjIxOTRiMjRiM2ZiOGU4OTMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0LnZjcHJvagpAQCAt
MCwwICsxLDEyNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUy
Ij8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZl
cnNpb249IjcuMTAiCisJTmFtZT0iZ3Rlc3QiCisJUHJvamVjdEdVSUQ9IntDOEY2QzE3Mi01NkYy
LTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9IgorCUtleXdvcmQ9IldpbjMyUHJvaiI+CisJPFBsYXRm
b3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxhdGZvcm1zPgorCTxD
b25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgor
CQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uTmFtZSkvJChDb25maWd1cmF0aW9uTmFtZSki
CisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKSIKKwkJ
CUNvbmZpZ3VyYXRpb25UeXBlPSI0IgorCQkJQ2hhcmFjdGVyU2V0PSIyIgorCQkJUmVmZXJlbmNl
c1BhdGg9IiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0
aW1pemF0aW9uPSIwIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7
X0xJQiIKKwkJCQlNaW5pbWFsUmVidWlsZD0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9
IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAi
CisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVt
cz0iRkFMU0UiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIvPgorCQkJPFRvb2wKKwkJ
CQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpYnJh
cmlhblRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2d0ZXN0ZC5saWIiLz4KKwkJCTxU
b29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RC
dWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29s
Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wK
KwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9
IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJW
Q1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdy
YXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFu
YWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZp
Z3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQo
U29sdXRpb25OYW1lKS8kKENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVj
dG9yeT0iJChPdXREaXIpLyQoUHJvamVjdE5hbWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjQi
CisJCQlDaGFyYWN0ZXJTZXQ9IjIiCisJCQlSZWZlcmVuY2VzUGF0aD0iJnF1b3Q7Li5caW5jbHVk
ZSZxdW90OzsmcXVvdDsuLiZxdW90OyI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfTElCIgor
CQkJCVJ1bnRpbWVMaWJyYXJ5PSI0IgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJ
CVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZB
TFNFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4KKwkJCTxUb29sCisJCQkJTmFt
ZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5U
b29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9ndGVzdC5saWIiLz4KKwkJCTxUb29sCisJ
CQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2
ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJ
CQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlO
YW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2Vi
U2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERh
dGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJH
ZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdy
YXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRp
b25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIK
KwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRs
O2hwajtiYXQ7YXNtO2FzbXgiCisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00
Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
c3JjXGd0ZXN0LWFsbC5jYyI+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRl
YnVnfFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsu
LlxpbmNsdWRlJnF1b3Q7Ii8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlO
YW1lPSJIZWFkZXIgRmlsZXMiCisJCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jO3hzZCIK
KwkJCVVuaXF1ZUlkZW50aWZpZXI9Ins5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVC
RkJ9Ij4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8
L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9tc3ZjL2d0ZXN0X21haW4tbWQudmNwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2
Yy9ndGVzdF9tYWluLW1kLnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDA5NTZjZDNkMjZiMDgyYTIzMDUy
NzljYzlhNzhjZTdmNzZiMTJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvbXN2Yy9ndGVzdF9tYWluLW1kLnZjcHJvagpAQCAtMCwwICsxLDEyOSBAQAorPD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJv
amVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjcuMTAiCisJTmFtZT0i
Z3Rlc3RfbWFpbi1tZCIKKwlQcm9qZWN0R1VJRD0iezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2
OEVEOTg2MjAzM30iCisJS2V5d29yZD0iV2luMzJQcm9qIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxh
dGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25z
PgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJl
Y3Rvcnk9IiQoU29sdXRpb25OYW1lKS8kKENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJCUludGVybWVk
aWF0ZURpcmVjdG9yeT0iJChPdXREaXIpLyQoUHJvamVjdE5hbWUpIgorCQkJQ29uZmlndXJhdGlv
blR5cGU9IjQiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiCisJCQlSZWZlcmVuY2VzUGF0aD0iIj4KKwkJ
CTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAi
CisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfTElCIgorCQkJCU1p
bmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50
aW1lTGlicmFyeT0iMyIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5n
TGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKKwkJ
CQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3Vz
dG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKKwkJ
CQlPdXRwdXRGaWxlPSIkKE91dERpcikvJChQcm9qZWN0TmFtZSlkLmxpYiIvPgorCQkJPFRvb2wK
KwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxk
RXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4K
KwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJ
CU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNX
ZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1M
RGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBl
ckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2Vk
V3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJh
dGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iJChTb2x1
dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5
PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCIKKwkJ
CUNoYXJhY3RlclNldD0iMiIKKwkJCVJlZmVyZW5jZXNQYXRoPSImcXVvdDsuLlxpbmNsdWRlJnF1
b3Q7OyZxdW90Oy4uJnF1b3Q7Ij4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19MSUIiCisJCQkJ
UnVudGltZUxpYnJhcnk9IjIiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2Fy
bmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0Ui
CisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJW
Q0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wi
CisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpLyQoUHJvamVjdE5hbWUpLmxpYiIvPgorCQkJPFRv
b2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1
aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wi
Lz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0i
VkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZD
WE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3Jh
cHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5h
Z2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmln
dXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJCTxQcm9qZWN0UmVmZXJlbmNlCisJCQlSZWZlcmVu
Y2VkUHJvamVjdElkZW50aWZpZXI9IntDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFC
RTh9IgorCQkJTmFtZT0iZ3Rlc3QtbWQiLz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8
RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7
b2RsO2lkbDtocGo7YmF0O2FzbTthc214IgorCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0Yx
LUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn0iPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHNyY1xndGVzdF9tYWluLmNjIj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iRGVidWd8V2luMzIiPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4uJnF1b3Q7
OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4KKwkJCQkJPFRv
b2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1b3Q7Ii8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0
ZXIKKwkJCU5hbWU9IkhlYWRlciBGaWxlcyIKKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtp
bmM7eHNkIgorCQkJVW5pcXVlSWRlbnRpZmllcj0iezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYy
NUZCRTUyRUJGQn0iPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xv
YmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L21zdmMvZ3Rlc3RfbWFpbi52Y3Byb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9tc3ZjL2d0ZXN0X21haW4udmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3ZTlmNDE3Njg1ZmYzNzU4NDIw
MDAxZGE5NDMyZDQwMzcxZmJjYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9tc3ZjL2d0ZXN0X21haW4udmNwcm9qCkBAIC0wLDAgKzEsMTI5IEBACis8P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9q
ZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4xMCIKKwlOYW1lPSJn
dGVzdF9tYWluIgorCVByb2plY3RHVUlEPSJ7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5
ODYyMDMyfSIKKwlLZXl3b3JkPSJXaW4zMlByb2oiPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9y
bQorCQkJTmFtZT0iV2luMzIiLz4KKwk8L1BsYXRmb3Jtcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJ
CTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9y
eT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJSW50ZXJtZWRpYXRl
RGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCisJCQlDb25maWd1cmF0aW9uVHlw
ZT0iNCIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCVJlZmVyZW5jZXNQYXRoPSIiPgorCQkJPFRv
b2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJ
CQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19MSUIiCisJCQkJTWluaW1h
bFJlYnVpbGQ9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVM
aWJyYXJ5PSI1IgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZl
bD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZBTFNFIgorCQkJCURl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21C
dWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIgorCQkJCU91
dHB1dEZpbGU9IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKWQubGliIi8+CisJCQk8VG9vbAorCQkJ
CU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVu
dFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFt
ZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNl
cnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRh
R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2Vu
ZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFw
cGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9u
CisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9u
TmFtZSkvJChDb25maWd1cmF0aW9uTmFtZSkiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQo
T3V0RGlyKS8kKFByb2plY3ROYW1lKSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0IgorCQkJQ2hh
cmFjdGVyU2V0PSIyIgorCQkJUmVmZXJlbmNlc1BhdGg9IiZxdW90Oy4uXGluY2x1ZGUmcXVvdDs7
JnF1b3Q7Li4mcXVvdDsiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0xJQiIKKwkJCQlSdW50
aW1lTGlicmFyeT0iNCIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5n
TGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKKwkJ
CQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3Vz
dG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKKwkJ
CQlPdXRwdXRGaWxlPSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkubGliIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRF
dmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJ
TmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dl
YlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxE
YXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVy
R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRX
cmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0
aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwkJPFByb2plY3RSZWZlcmVuY2UKKwkJCVJlZmVyZW5jZWRQ
cm9qZWN0SWRlbnRpZmllcj0ie0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30i
CisJCQlOYW1lPSJndGVzdCIvPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIK
KwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRs
O2hwajtiYXQ7YXNtO2FzbXgiCisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00
Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
c3JjXGd0ZXN0X21haW4uY2MiPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJE
ZWJ1Z3xXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7
Li5caW5jbHVkZSZxdW90OyIvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiPgorCQkJCQk8VG9vbAorCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiLz4KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJ
TmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYzt4c2Qi
CisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJF
QkZCfSI+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgor
PC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvbXN2Yy9ndGVzdF9wcm9kX3Rlc3QtbWQudmNwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvbXN2Yy9ndGVzdF9wcm9kX3Rlc3QtbWQudmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwNzFkMjhmZWQw
MWNjZmE5MzMwOTFjNzExN2YyYTU4NDAxYmZlMDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3Byb2oKQEAgLTAsMCAr
MSwxNjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pgor
PFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9u
PSI3LjEwIgorCU5hbWU9Imd0ZXN0X3Byb2RfdGVzdC1tZCIKKwlQcm9qZWN0R1VJRD0iezI0ODQ4
NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0iCisJS2V5d29yZD0iV2luMzJQcm9qIj4K
Kwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9y
bXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8
V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25OYW1lKS8kKENvbmZpZ3VyYXRp
b25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChPdXREaXIpLyQoUHJvamVjdE5h
bWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIK
KwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19DT05TT0xFIgorCQkJ
CU1pbmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlS
dW50aW1lTGlicmFyeT0iMyIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMyIKKwkJCQlXYXJu
aW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIK
KwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZD
Q3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJ
CQlPdXRwdXRGaWxlPSIkKE91dERpcikvZ3Rlc3RfcHJvZF90ZXN0LmV4ZSIKKwkJCQlMaW5rSW5j
cmVtZW50YWw9IjIiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVBy
b2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9ndGVzdF9wcm9kX3Rlc3QucGRiIgorCQkJCVN1
YlN5c3RlbT0iMSIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9
IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wi
Lz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wK
KwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNS
ZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQ
cm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJh
dG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJ
CQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8
VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+
CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8
V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25OYW1lKS8kKENvbmZpZ3VyYXRp
b25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChPdXREaXIpLyQoUHJvamVjdE5h
bWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmlu
aXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJ
CQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjMiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURl
dGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiCisJCQkJRGVidWdJbmZvcm1hdGlv
bkZvcm1hdD0iMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXRE
aXIpL2d0ZXN0X3Byb2RfdGVzdC5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCUdl
bmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJT3B0
aW1pemVSZWZlcmVuY2VzPSIyIgorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiCisJCQkJVGFy
Z2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8
VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5h
bWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5r
RXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wi
Lz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29s
CisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJW
Q01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1
eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+
CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwkJPFByb2plY3RSZWZlcmVuY2UK
KwkJCVJlZmVyZW5jZWRQcm9qZWN0SWRlbnRpZmllcj0iezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3
LUY2OEVEOTg2MjAzM30iCisJCQlOYW1lPSJndGVzdF9tYWluLW1kIi8+CisJPC9SZWZlcmVuY2Vz
PgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJRmlsdGVy
PSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCIKKwkJCVVuaXF1ZUlkZW50
aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ij4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlx0ZXN0XGd0ZXN0X3Byb2RfdGVzdC5jYyI+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1b3Q7IgorCQkJCQkJVXNl
UHJlY29tcGlsZWRIZWFkZXI9IjAiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1b3Q7IgorCQkJCQkJ
VXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHRlc3RccHJvZHVjdGlvbi5j
YyI+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIj4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1b3Q7
IgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4K
KwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1
b3Q7IgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iSGVh
ZGVyIEZpbGVzIgorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYzt4c2QiCisJCQlVbmlx
dWVJZGVudGlmaWVyPSJ7OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfSI+CisJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cdGVzdFxwcm9kdWN0aW9uLmgiPgorCQkJPC9G
aWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwv
VmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L21zdmMvZ3Rlc3RfcHJvZF90ZXN0LnZjcHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21z
dmMvZ3Rlc3RfcHJvZF90ZXN0LnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OThjNzU4MDhhMTYyNGU2NzQ0
YTJiMjE3OTYwYzA2ZTIxMWZhZmY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvbXN2Yy9ndGVzdF9wcm9kX3Rlc3QudmNwcm9qCkBAIC0wLDAgKzEsMTY0IEBACis8
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVk
aW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4xMCIKKwlO
YW1lPSJndGVzdF9wcm9kX3Rlc3QiCisJUHJvamVjdEdVSUQ9InsyNDg0ODU1MS1FRjRGLTQ3RTgt
OUE5RC1FQTRENDlCQzNFQ0F9IgorCUtleXdvcmQ9IldpbjMyUHJvaiI+CisJPFBsYXRmb3Jtcz4K
KwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxhdGZvcm1zPgorCTxDb25maWd1
cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJT3V0
cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uTmFtZSkvJChDb25maWd1cmF0aW9uTmFtZSkiCisJCQlJ
bnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKSIKKwkJCUNvbmZp
Z3VyYXRpb25UeXBlPSIxIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSIKKwkJCQlNaW5pbWFsUmVidWls
ZD0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9
IjUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjMiCisJCQkJV2FybmluZ0xldmVsPSIzIgor
CQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiCisJCQkJRGVidWdJbmZv
cm1hdGlvbkZvcm1hdD0iNCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9v
bCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0i
JChPdXREaXIpL2d0ZXN0X3Byb2RfdGVzdC5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIyIgor
CQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VG
aWxlPSIkKE91dERpcikvZ3Rlc3RfcHJvZF90ZXN0LnBkYiIKKwkJCQlTdWJTeXN0ZW09IjEiCisJ
CQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQ
cmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxl
clRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JU
b29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJ
CTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlO
YW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1l
PSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3Vy
YXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJT3V0
cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uTmFtZSkvJChDb25maWd1cmF0aW9uTmFtZSkiCisJCQlJ
bnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKSIKKwkJCUNvbmZp
Z3VyYXRpb25UeXBlPSIxIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7
TkRFQlVHO19DT05TT0xFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSI0IgorCQkJCVVzZVByZWNvbXBp
bGVkSGVhZGVyPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRh
YmlsaXR5UHJvYmxlbXM9IkZBTFNFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4K
KwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJ
TmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9ndGVzdF9wcm9k
X3Rlc3QuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5m
b3JtYXRpb249IlRSVUUiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCU9wdGltaXplUmVmZXJlbmNl
cz0iMiIKKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIgorCQkJCVRhcmdldE1hY2hpbmU9IjEi
Lz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1l
PSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxk
RXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJ
CQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZD
V2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBl
ckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2Vk
V3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJh
dGlvbnM+CisJPFJlZmVyZW5jZXM+CisJCTxQcm9qZWN0UmVmZXJlbmNlCisJCQlSZWZlcmVuY2Vk
UHJvamVjdElkZW50aWZpZXI9InszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzJ9
IgorCQkJTmFtZT0iZ3Rlc3RfbWFpbiIvPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxG
aWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtv
ZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXgiCisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEt
QzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cdGVzdFxndGVzdF9wcm9kX3Rlc3QuY2MiPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4m
cXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIKKwkJCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVy
PSIwIi8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7
Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIKKwkJCQkJCVVzZVByZWNvbXBpbGVkSGVh
ZGVyPSIwIi8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlx0ZXN0XHByb2R1Y3Rpb24uY2MiPgorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIKKwkJCQkJCVVzZVByZWNv
bXBpbGVkSGVhZGVyPSIwIi8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIKKwkJCQkJCVVzZVBy
ZWNvbXBpbGVkSGVhZGVyPSIwIi8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmls
ZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IkhlYWRlciBGaWxlcyIKKwkJCUZp
bHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmM7eHNkIgorCQkJVW5pcXVlSWRlbnRpZmllcj0iezkz
OTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn0iPgorCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHRlc3RccHJvZHVjdGlvbi5oIj4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+
CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2pl
Y3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0X3VuaXR0
ZXN0LW1kLnZjcHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3RfdW5pdHRl
c3QtbWQudmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1MjU5Mzk3NTBkNzQ3YzdiNDhhYzQ0ODM4NjljZjY3
NjVhNmVhY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3Zj
L2d0ZXN0X3VuaXR0ZXN0LW1kLnZjcHJvagpAQCAtMCwwICsxLDE0NyBAQAorPD94bWwgdmVyc2lv
bj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAor
CVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjcuMTAiCisJTmFtZT0iZ3Rlc3Rf
dW5pdHRlc3QtbWQiCisJUHJvamVjdEdVSUQ9Ins0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVF
MEVENDgxQTJ9IgorCUtleXdvcmQ9IldpbjMyUHJvaiI+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRm
b3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxhdGZvcm1zPgorCTxDb25maWd1cmF0aW9ucz4K
KwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0
b3J5PSIkKFNvbHV0aW9uTmFtZSkvJChDb25maWd1cmF0aW9uTmFtZSkiCisJCQlJbnRlcm1lZGlh
dGVEaXJlY3Rvcnk9IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKSIKKwkJCUNvbmZpZ3VyYXRpb25U
eXBlPSIxIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSIKKwkJCQlNaW5pbWFsUmVidWlsZD0iVFJVRSIK
KwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkJ
VXNlUHJlY29tcGlsZWRIZWFkZXI9IjMiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVj
dDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZv
cm1hdD0iNCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIp
L2d0ZXN0X3VuaXR0ZXN0LmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiCisJCQkJR2VuZXJh
dGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0
RGlyKS9ndGVzdF91bml0dGVzdC5wZGIiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCVRhcmdldE1h
Y2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wK
KwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJW
Q1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50
VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJ
CQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJ
CU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5h
Z2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlh
cnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8
Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9y
eT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJSW50ZXJtZWRpYXRl
RGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCisJCQlDb25maWd1cmF0aW9uVHlw
ZT0iMSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09O
U09MRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0i
MyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2Js
ZW1zPSJGQUxTRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlu
a2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvZ3Rlc3RfdW5pdHRlc3QuZXhlIgor
CQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRS
VUUiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiIKKwkJCQlF
bmFibGVDT01EQVRGb2xkaW5nPSIyIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29s
CisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWls
ZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJ
CQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZD
V2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hN
TERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVu
dFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRv
b2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVy
YXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJl
ZmVyZW5jZXM+CisJCTxQcm9qZWN0UmVmZXJlbmNlCisJCQlSZWZlcmVuY2VkUHJvamVjdElkZW50
aWZpZXI9InszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9IgorCQkJTmFtZT0i
Z3Rlc3RfbWFpbi1tZCIvPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJ
CU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hw
ajtiYXQ7YXNtO2FzbXgiCisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00Mzc2
LUEwNjYtMkEzMkQ3NTJBMkZGfSI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cdGVz
dFxndGVzdF91bml0dGVzdC5jYyI+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9
IkRlYnVnfFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCQlPcHRpbWl6YXRpb249IjEiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1b3Q7IgorCQkJCQkJQmFzaWNS
dW50aW1lQ2hlY2tzPSIwIgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJCQlE
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIKKwkJ
CQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIi8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IkhlYWRlciBGaWxl
cyIKKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmM7eHNkIgorCQkJVW5pcXVlSWRlbnRp
Zmllcj0iezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn0iPgorCQk8L0ZpbHRl
cj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJv
amVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3RfdW5p
dHRlc3QudmNwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdF91bml0dGVz
dC52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmIyZDc0MzQ1NzEwNDhmYTA1MzdhODg0ZWJhNzhiNjg4Nzc1
ODE2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rl
c3RfdW5pdHRlc3QudmNwcm9qCkBAIC0wLDAgKzEsMTQ3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVj
dFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4xMCIKKwlOYW1lPSJndGVzdF91bml0dGVz
dCIKKwlQcm9qZWN0R1VJRD0iezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0i
CisJS2V5d29yZD0iV2luMzJQcm9qIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5h
bWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmln
dXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29s
dXRpb25OYW1lKS8kKENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9y
eT0iJChPdXREaXIpLyQoUHJvamVjdE5hbWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJ
CQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lO
MzI7X0RFQlVHO19DT05TT0xFIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJCUJhc2lj
UnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iNSIKKwkJCQlVc2VQcmVjb21w
aWxlZEhlYWRlcj0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0
YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJ
CU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvZ3Rlc3RfdW5p
dHRlc3QuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiIKKwkJCQlHZW5lcmF0ZURlYnVnSW5m
b3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL2d0ZXN0
X3VuaXR0ZXN0LnBkYiIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIv
PgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9
IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRF
dmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJ
CQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJ
CQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJ
CU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNX
ZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVy
R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRX
cmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0
aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0
aW9uTmFtZSkvJChDb25maWd1cmF0aW9uTmFtZSkiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9
IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJ
Q2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIgorCQkJ
CVJ1bnRpbWVMaWJyYXJ5PSI0IgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIzIgorCQkJCVdh
cm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZBTFNF
IgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0i
VkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgor
CQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9ndGVzdF91bml0dGVzdC5leGUiCisJCQkJTGlua0lu
Y3JlbWVudGFsPSIxIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlT
dWJTeXN0ZW09IjEiCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIgorCQkJCUVuYWJsZUNPTURB
VEZvbGRpbmc9IjIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1l
PSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29s
Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29s
CisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZD
UmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNl
UHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVy
YXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIv
PgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4K
KwkJPFByb2plY3RSZWZlcmVuY2UKKwkJCVJlZmVyZW5jZWRQcm9qZWN0SWRlbnRpZmllcj0iezNB
RjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0iCisJCQlOYW1lPSJndGVzdF9tYWlu
Ii8+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNl
IEZpbGVzIgorCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNt
eCIKKwkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1
MkEyRkZ9Ij4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx0ZXN0XGd0ZXN0X3VuaXR0
ZXN0LmNjIj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIi
PgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCU9wdGlt
aXphdGlvbj0iMSIKKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4u
JnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiCisJCQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9
IjAiCisJCQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQkJCURlYnVnSW5mb3JtYXRp
b25Gb3JtYXQ9IjMiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
PSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1b3Q7IgorCQkJCQkJVXNlUHJlY29t
cGlsZWRIZWFkZXI9IjAiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgor
CQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJRmlsdGVy
PSJoO2hwcDtoeHg7aG07aW5sO2luYzt4c2QiCisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7OTM5OTUz
ODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfSI+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+
CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvcnVuX3Rlc3RzLnB5IGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvcnVuX3Rlc3RzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBl
MTA4NDA1NmUyM2JkZDVjZmNmNDRmMDY3NmMxZDYyOGFlNjNkNzYxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3J1
bl90ZXN0cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLSMhL3Vzci9iaW4vZW52
IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3Ry
aWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlJ1bnMgdGhlIHNwZWNpZmllZCB0ZXN0cyBm
b3IgR29vZ2xlIFRlc3QuCi0KLVRoaXMgc2NyaXB0IHJlcXVpcmVzIFB5dGhvbiAyLjMgb3IgaGln
aGVyLiAgVG8gbGVhcm4gdGhlIHVzYWdlLCBydW4gaXQKLXdpdGggLWguCi0iIiIKLQotaW1wb3J0
IG9zCi1pbXBvcnQgc3lzCi0KLVNDUklQVF9ESVIgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18p
IG9yICcuJwotCi1zeXMucGF0aC5hcHBlbmQob3MucGF0aC5qb2luKFNDUklQVF9ESVIsICd0ZXN0
JykpCi1pbXBvcnQgcnVuX3Rlc3RzX3V0aWwKLQotCi1kZWYgX01haW4oKToKLSAgIiIiUnVucyBh
bGwgdGVzdHMgZm9yIEdvb2dsZSBUZXN0LiIiIgotCi0gIG9wdGlvbnMsIGFyZ3MgPSBydW5fdGVz
dHNfdXRpbC5QYXJzZUFyZ3MoJ2d0ZXN0JykKLSAgdGVzdF9ydW5uZXIgPSBydW5fdGVzdHNfdXRp
bC5UZXN0UnVubmVyKHNjcmlwdF9kaXI9U0NSSVBUX0RJUikKLSAgdGVzdHMgPSB0ZXN0X3J1bm5l
ci5HZXRUZXN0c1RvUnVuKGFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcHRpb25zLmNvbmZpZ3VyYXRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW9ucy5idWlsdF9jb25maWd1cmF0aW9ucykKLSAgaWYgbm90IHRlc3RzOgotICAg
IHN5cy5leGl0KDEpICAjIEluY29ycmVjdCBwYXJhbWV0ZXJzIGdpdmVuLCBhYm9ydCBleGVjdXRp
b24uCi0KLSAgc3lzLmV4aXQodGVzdF9ydW5uZXIuUnVuVGVzdHModGVzdHNbMF0sIHRlc3RzWzFd
KSkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgX01haW4oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MKaW5kZXgg
M2FkNmZkNjUzODI2MTdmN2Q2YjQwMWY0ZDFiZDgzZmM4NmVkODRmZS4uMDA1MWNkNWRjZDcxNTJl
Njg3YWE3ZWExMzkxMWI1ZGJiOWZhNjhhMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjCkBAIC0zNCw3ICszNCw3IEBACiAj
aW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KIAotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogdXNpbmcgOjp0ZXN0aW5nOjpF
bXB0eVRlc3RFdmVudExpc3RlbmVyOwogdXNpbmcgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdDsK
QEAgLTg5LDggKzg5LDcgQEAgY2xhc3MgTGVha0NoZWNrZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZl
bnRMaXN0ZW5lciB7CiAgICAgLy8gWW91IGNhbiBnZW5lcmF0ZSBhIGZhaWx1cmUgaW4gYW55IGV2
ZW50IGhhbmRsZXIgZXhjZXB0CiAgICAgLy8gT25UZXN0UGFydFJlc3VsdC4gSnVzdCB1c2UgYW4g
YXBwcm9wcmlhdGUgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIHRvIGRvCiAgICAgLy8gaXQuCi0gICAg
RVhQRUNUX1RSVUUoZGlmZmVyZW5jZSA8PSAwKQotICAgICAgICA8PCAiTGVha2VkICIgPDwgZGlm
ZmVyZW5jZSA8PCAiIHVuaXQocykgb2YgV2F0ZXIhIjsKKyAgICBFWFBFQ1RfTEUoZGlmZmVyZW5j
ZSwgMCkgPDwgIkxlYWtlZCAiIDw8IGRpZmZlcmVuY2UgPDwgIiB1bml0KHMpIG9mIFdhdGVyISI7
CiAgIH0KIAogICBpbnQgaW5pdGlhbGx5X2FsbG9jYXRlZF87CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QuY2MKaW5kZXggMDFlYjU0NjJm
ODFhZDU0YjM4YWM1ZWU2MzM3OTcyZWFhMDRkN2FkZS4uYWVmYzRmMWQ4NjZlODA5MzMyYTQ1Zjlh
MGUyMTkzYzZmNDViYWRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ft
cGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nh
bXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYwpAQCAtNDUsNyArNDUsNyBAQAogCiAjaW5jbHVkZSA8
bGltaXRzLmg+CiAjaW5jbHVkZSAic2FtcGxlMS5oIgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogCiAvLyBTdGVwIDIuIFVzZSB0aGUgVEVTVCBt
YWNybyB0byBkZWZpbmUgeW91ciB0ZXN0cy4KQEAgLTgxLDcgKzgxLDcgQEAgVEVTVChGYWN0b3Jp
YWxUZXN0LCBOZWdhdGl2ZSkgewogICAvLyB0ZXN0IGNhc2UuCiAgIEVYUEVDVF9FUSgxLCBGYWN0
b3JpYWwoLTUpKTsKICAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgtMSkpOwotICBFWFBFQ1RfVFJV
RShGYWN0b3JpYWwoLTEwKSA+IDApOworICBFWFBFQ1RfR1QoRmFjdG9yaWFsKC0xMCksIDApOwog
CiAgIC8vIDxUZWNobmljYWxEZXRhaWxzPgogICAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9z
YW1wbGVzL3NhbXBsZTIuaAppbmRleCA1YjU3ZTYwODJmYTRmNmI3MjRiZmI1ODI2ODdiZmUwYTYz
MTlmMmE3Li5jYjQ4NWM3MGZiMzNhZDdkODQwNWY2NmE4YTI3NDQxMmRlMDQ4NTI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTIuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTIuaApAQCAtNDQsNyArNDQsNiBAQCBj
bGFzcyBNeVN0cmluZyB7CiAgIGNvbnN0IE15U3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgTXlTdHJp
bmcmIHJocyk7CiAKICBwdWJsaWM6Ci0KICAgLy8gQ2xvbmVzIGEgMC10ZXJtaW5hdGVkIEMgc3Ry
aW5nLCBhbGxvY2F0aW5nIG1lbW9yeSB1c2luZyBuZXcuCiAgIHN0YXRpYyBjb25zdCBjaGFyKiBD
bG9uZUNTdHJpbmcoY29uc3QgY2hhciogYV9jX3N0cmluZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYwppbmRleCAzMjIzMmQ5
OGMwYmQyNTQ4MjFjOGY2OTFhNmI4NTVmMWYxNjE2ZmI4Li40ZmExOWI3MWM3OTJhNGM2YzlkNjkw
MzExNjEwMDI4M2IwMTIwYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9z
YW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0LmNjCkBAIC00MSw3ICs0MSw3IEBACiAvLyBuZWVkZWQu
CiAKICNpbmNsdWRlICJzYW1wbGUyLmgiCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgogCiAvLyBJbiB0aGlzIGV4YW1wbGUsIHdlIHRlc3QgdGhlIE15
U3RyaW5nIGNsYXNzIChhIHNpbXBsZSBzdHJpbmcpLgogCkBAIC03OSw3ICs3OSw3IEBAIGNvbnN0
IGNoYXIga0hlbGxvU3RyaW5nW10gPSAiSGVsbG8sIHdvcmxkISI7CiAvLyBUZXN0cyB0aGUgYyd0
b3IgdGhhdCBhY2NlcHRzIGEgQyBzdHJpbmcuCiBURVNUKE15U3RyaW5nLCBDb25zdHJ1Y3RvckZy
b21DU3RyaW5nKSB7CiAgIGNvbnN0IE15U3RyaW5nIHMoa0hlbGxvU3RyaW5nKTsKLSAgRVhQRUNU
X1RSVUUoc3RyY21wKHMuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSA9PSAwKTsKKyAgRVhQRUNU
X0VRKDAsIHN0cmNtcChzLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykpOwogICBFWFBFQ1RfRVEo
c2l6ZW9mKGtIZWxsb1N0cmluZykvc2l6ZW9mKGtIZWxsb1N0cmluZ1swXSkgLSAxLAogICAgICAg
ICAgICAgcy5MZW5ndGgoKSk7CiB9CkBAIC04OCw3ICs4OCw3IEBAIFRFU1QoTXlTdHJpbmcsIENv
bnN0cnVjdG9yRnJvbUNTdHJpbmcpIHsKIFRFU1QoTXlTdHJpbmcsIENvcHlDb25zdHJ1Y3Rvcikg
ewogICBjb25zdCBNeVN0cmluZyBzMShrSGVsbG9TdHJpbmcpOwogICBjb25zdCBNeVN0cmluZyBz
MiA9IHMxOwotICBFWFBFQ1RfVFJVRShzdHJjbXAoczIuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5n
KSA9PSAwKTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzMi5jX3N0cmluZygpLCBrSGVsbG9TdHJp
bmcpKTsKIH0KIAogLy8gVGVzdHMgdGhlIFNldCBtZXRob2QuCkBAIC05NiwxMiArOTYsMTIgQEAg
VEVTVChNeVN0cmluZywgU2V0KSB7CiAgIE15U3RyaW5nIHM7CiAKICAgcy5TZXQoa0hlbGxvU3Ry
aW5nKTsKLSAgRVhQRUNUX1RSVUUoc3RyY21wKHMuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSA9
PSAwKTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykp
OwogCiAgIC8vIFNldCBzaG91bGQgd29yayB3aGVuIHRoZSBpbnB1dCBwb2ludGVyIGlzIHRoZSBz
YW1lIGFzIHRoZSBvbmUKICAgLy8gYWxyZWFkeSBpbiB0aGUgTXlTdHJpbmcgb2JqZWN0LgogICBz
LlNldChzLmNfc3RyaW5nKCkpOwotICBFWFBFQ1RfVFJVRShzdHJjbXAocy5jX3N0cmluZygpLCBr
SGVsbG9TdHJpbmcpID09IDApOworICBFWFBFQ1RfRVEoMCwgc3RyY21wKHMuY19zdHJpbmcoKSwg
a0hlbGxvU3RyaW5nKSk7CiAKICAgLy8gQ2FuIHdlIHNldCB0aGUgTXlTdHJpbmcgdG8gTlVMTD8K
ICAgcy5TZXQoTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1w
bGVzL3NhbXBsZTMtaW5sLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBs
ZTMtaW5sLmgKaW5kZXggNDYzNjlhMDc2ZDg1YzQxMTQyM2FjYWE5OGRkNDU1ZTU1OWVkMzAwYS4u
N2UzMDg0ZDYzODVkZjg5N2ZlNTkyNDhmNDk2YmJjOTFhMTc2ODk1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzLWlubC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMy1pbmwuaApAQCAtNjAsNyArNjAsNyBAQCBj
bGFzcyBRdWV1ZU5vZGUgewogIHByaXZhdGU6CiAgIC8vIENyZWF0ZXMgYSBub2RlIHdpdGggYSBn
aXZlbiBlbGVtZW50IHZhbHVlLiAgVGhlIG5leHQgcG9pbnRlciBpcwogICAvLyBzZXQgdG8gTlVM
TC4KLSAgUXVldWVOb2RlKGNvbnN0IEUmIGFuX2VsZW1lbnQpIDogZWxlbWVudF8oYW5fZWxlbWVu
dCksIG5leHRfKE5VTEwpIHt9CisgIGV4cGxpY2l0IFF1ZXVlTm9kZShjb25zdCBFJiBhbl9lbGVt
ZW50KSA6IGVsZW1lbnRfKGFuX2VsZW1lbnQpLCBuZXh0XyhOVUxMKSB7fQogCiAgIC8vIFdlIGRp
c2FibGUgdGhlIGRlZmF1bHQgYXNzaWdubWVudCBvcGVyYXRvciBhbmQgY29weSBjJ3Rvci4KICAg
Y29uc3QgUXVldWVOb2RlJiBvcGVyYXRvciA9IChjb25zdCBRdWV1ZU5vZGUmKTsKQEAgLTcyLDgg
KzcyLDcgQEAgY2xhc3MgUXVldWVOb2RlIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEU+ICAvLyBF
IGlzIHRoZSBlbGVtZW50IHR5cGUuCiBjbGFzcyBRdWV1ZSB7Ci1wdWJsaWM6Ci0KKyBwdWJsaWM6
CiAgIC8vIENyZWF0ZXMgYW4gZW1wdHkgcXVldWUuCiAgIFF1ZXVlKCkgOiBoZWFkXyhOVUxMKSwg
bGFzdF8oTlVMTCksIHNpemVfKDApIHt9CiAKQEAgLTE2OCw2ICsxNjcsNiBAQCBjbGFzcyBRdWV1
ZSB7CiAgIC8vIFdlIGRpc2FsbG93IGNvcHlpbmcgYSBxdWV1ZS4KICAgUXVldWUoY29uc3QgUXVl
dWUmKTsKICAgY29uc3QgUXVldWUmIG9wZXJhdG9yID0gKGNvbnN0IFF1ZXVlJik7Ci0gfTsKK307
CiAKICNlbmRpZiAgLy8gR1RFU1RfU0FNUExFU19TQU1QTEUzX0lOTF9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjCmluZGV4IDM0
YzFjYTg2NTZlYWI1NjQxODE1NjBkYmYxNDlkMGEyYWE5MmNjMWQuLmJmMzg3N2QwMTMyMzQ1YjE4
OWVkNWViYTczZDIwMWJlYzU2ZjhkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MKQEAgLTY0LDcgKzY0LDcgQEAKIC8vIDwv
VGVjaG5pY2FsRGV0YWlscz4KIAogI2luY2x1ZGUgInNhbXBsZTMtaW5sLmgiCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAvLyBUbyB1c2UgYSB0
ZXN0IGZpeHR1cmUsIGRlcml2ZSBhIGNsYXNzIGZyb20gdGVzdGluZzo6VGVzdC4KIGNsYXNzIFF1
ZXVlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNF91bml0dGVzdC5jYwppbmRleCBiNGZiMzczNmFiYmZm
ODNmNzlhZjQ0N2NhNGJjNmI5MTA1ODY5MzJlLi5mYTVhZmM3ZDVhMTY4NmIwOTg4OWJmMDdiY2Fj
ZjU4MTY3NzEwMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVz
L3NhbXBsZTRfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxl
cy9zYW1wbGU0X3VuaXR0ZXN0LmNjCkBAIC0yOSw3ICsyOSw3IEBACiAvLwogLy8gQXV0aG9yOiB3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
KyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgInNhbXBsZTQuaCIKIAogLy8gVGVz
dHMgdGhlIEluY3JlbWVudCgpIG1ldGhvZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYwppbmRleCA0OWRhZTdjNjlmYTc2ZThhNDg2
MDc3MDZiNGExNjJjNjQyZjBhMDg1Li40M2Q4ZTU3Nzc1ODNlYzRiZTAxMDg5Yzk5Nzk1YjkwYjcz
ZWY0ZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBs
ZTVfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1w
bGU1X3VuaXR0ZXN0LmNjCkBAIC00Nyw3ICs0Nyw3IEBACiAjaW5jbHVkZSA8bGltaXRzLmg+CiAj
aW5jbHVkZSA8dGltZS5oPgogI2luY2x1ZGUgInNhbXBsZTMtaW5sLmgiCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgInNhbXBsZTEu
aCIKIAogLy8gSW4gdGhpcyBzYW1wbGUsIHdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgZXZlcnkgdGVz
dCBmaW5pc2hlcyB3aXRoaW4KQEAgLTEwMSw3ICsxMDEsNyBAQCBURVNUX0YoSW50ZWdlckZ1bmN0
aW9uVGVzdCwgRmFjdG9yaWFsKSB7CiAgIC8vIFRlc3RzIGZhY3RvcmlhbCBvZiBuZWdhdGl2ZSBu
dW1iZXJzLgogICBFWFBFQ1RfRVEoMSwgRmFjdG9yaWFsKC01KSk7CiAgIEVYUEVDVF9FUSgxLCBG
YWN0b3JpYWwoLTEpKTsKLSAgRVhQRUNUX1RSVUUoRmFjdG9yaWFsKC0xMCkgPiAwKTsKKyAgRVhQ
RUNUX0dUKEZhY3RvcmlhbCgtMTApLCAwKTsKIAogICAvLyBUZXN0cyBmYWN0b3JpYWwgb2YgMC4K
ICAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgwKSk7CkBAIC0xMTcsMjAgKzExNywyMCBAQCBURVNU
X0YoSW50ZWdlckZ1bmN0aW9uVGVzdCwgRmFjdG9yaWFsKSB7CiAvLyBUZXN0cyBJc1ByaW1lKCkK
IFRFU1RfRihJbnRlZ2VyRnVuY3Rpb25UZXN0LCBJc1ByaW1lKSB7CiAgIC8vIFRlc3RzIG5lZ2F0
aXZlIGlucHV0LgotICBFWFBFQ1RfVFJVRSghSXNQcmltZSgtMSkpOwotICBFWFBFQ1RfVFJVRSgh
SXNQcmltZSgtMikpOwotICBFWFBFQ1RfVFJVRSghSXNQcmltZShJTlRfTUlOKSk7CisgIEVYUEVD
VF9GQUxTRShJc1ByaW1lKC0xKSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKC0yKSk7CisgIEVY
UEVDVF9GQUxTRShJc1ByaW1lKElOVF9NSU4pKTsKIAogICAvLyBUZXN0cyBzb21lIHRyaXZpYWwg
Y2FzZXMuCi0gIEVYUEVDVF9UUlVFKCFJc1ByaW1lKDApKTsKLSAgRVhQRUNUX1RSVUUoIUlzUHJp
bWUoMSkpOworICBFWFBFQ1RfRkFMU0UoSXNQcmltZSgwKSk7CisgIEVYUEVDVF9GQUxTRShJc1By
aW1lKDEpKTsKICAgRVhQRUNUX1RSVUUoSXNQcmltZSgyKSk7CiAgIEVYUEVDVF9UUlVFKElzUHJp
bWUoMykpOwogCiAgIC8vIFRlc3RzIHBvc2l0aXZlIGlucHV0LgotICBFWFBFQ1RfVFJVRSghSXNQ
cmltZSg0KSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKDQpKTsKICAgRVhQRUNUX1RSVUUoSXNQ
cmltZSg1KSk7Ci0gIEVYUEVDVF9UUlVFKCFJc1ByaW1lKDYpKTsKKyAgRVhQRUNUX0ZBTFNFKElz
UHJpbWUoNikpOwogICBFWFBFQ1RfVFJVRShJc1ByaW1lKDIzKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYwppbmRleCBk
ZDBkZjMxZjBiYjdjYmYyNjE2MDczNDJlODY0MDRkNzVhODUzNDNlLi44ZjIwMzZhNTE2MDgwYmE3
MzkwNGFlMzZkYmYyYWU2MDU1M2E2ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjCkBAIC0zNSw3ICszNSw3IEBACiAvLyBU
aGUgaW50ZXJmYWNlIGFuZCBpdHMgaW1wbGVtZW50YXRpb25zIGFyZSBpbiB0aGlzIGhlYWRlci4K
ICNpbmNsdWRlICJwcmltZV90YWJsZXMuaCIKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Cisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogLy8gRmlyc3QsIHdlIGRlZmluZSBzb21lIGZhY3Rv
cnkgZnVuY3Rpb25zIGZvciBjcmVhdGluZyBpbnN0YW5jZXMgb2YKIC8vIHRoZSBpbXBsZW1lbnRh
dGlvbnMuICBZb3UgbWF5IGJlIGFibGUgdG8gc2tpcCB0aGlzIHN0ZXAgaWYgYWxsIHlvdXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlN191bml0dGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlN191bml0dGVzdC5j
YwppbmRleCBmNDU1MjgyN2VkOWI4MzA2Y2RkMzE5YWE1N2YzZWQwNjc2MmI0ZjVmLi4xYjY1MWEy
MWQ2NDkyZjAyZWM2YzMwMGNmNmE3ZWFkZDVkNDdmYzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU3X3VuaXR0ZXN0LmNjCkBAIC0zOCwxOSArMzgs
MTggQEAKIC8vIFRoZSBpbnRlcmZhY2UgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbnMgYXJlIGluIHRo
aXMgaGVhZGVyLgogI2luY2x1ZGUgInByaW1lX3RhYmxlcy5oIgogCi0jaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAjaWYgR1RFU1RfSEFTX1BBUkFN
X1RFU1QKIAogdXNpbmcgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtOwogdXNpbmcgOjp0ZXN0aW5n
OjpWYWx1ZXM7CiAKLS8vIEFzIGEgZ2VuZXJhbCBydWxlLCB0ZXN0ZWQgb2JqZWN0cyBzaG91bGQg
bm90IGJlIHJldXNlZCBiZXR3ZWVuIHRlc3RzLgotLy8gQWxzbywgdGhlaXIgY29uc3RydWN0b3Jz
IGFuZCBkZXN0cnVjdG9ycyBvZiB0ZXN0ZWQgb2JqZWN0cyBjYW4gaGF2ZQotLy8gc2lkZSBlZmZl
Y3RzLiBUaHVzIHlvdSBzaG91bGQgY3JlYXRlIGFuZCBkZXN0cm95IHRoZW0gZm9yIGVhY2ggdGVz
dC4KLS8vIEluIHRoaXMgc2FtcGxlIHdlIHdpbGwgZGVmaW5lIGEgc2ltcGxlIGZhY3RvcnkgZnVu
Y3Rpb24gZm9yIFByaW1lVGFibGUKLS8vIG9iamVjdHMuIFdlIHdpbGwgaW5zdGFudGlhdGUgb2Jq
ZWN0cyBpbiB0ZXN0J3MgU2V0VXAoKSBtZXRob2QgYW5kCi0vLyBkZWxldGUgdGhlbSBpbiBUZWFy
RG93bigpIG1ldGhvZC4KKy8vIEFzIGEgZ2VuZXJhbCBydWxlLCB0byBwcmV2ZW50IGEgdGVzdCBm
cm9tIGFmZmVjdGluZyB0aGUgdGVzdHMgdGhhdCBjb21lCisvLyBhZnRlciBpdCwgeW91IHNob3Vs
ZCBjcmVhdGUgYW5kIGRlc3Ryb3kgdGhlIHRlc3RlZCBvYmplY3RzIGZvciBlYWNoIHRlc3QKKy8v
IGluc3RlYWQgb2YgcmV1c2luZyB0aGVtLiAgSW4gdGhpcyBzYW1wbGUgd2Ugd2lsbCBkZWZpbmUg
YSBzaW1wbGUgZmFjdG9yeQorLy8gZnVuY3Rpb24gZm9yIFByaW1lVGFibGUgb2JqZWN0cy4gIFdl
IHdpbGwgaW5zdGFudGlhdGUgb2JqZWN0cyBpbiB0ZXN0J3MKKy8vIFNldFVwKCkgbWV0aG9kIGFu
ZCBkZWxldGUgdGhlbSBpbiBUZWFyRG93bigpIG1ldGhvZC4KIHR5cGVkZWYgUHJpbWVUYWJsZSog
Q3JlYXRlUHJpbWVUYWJsZUZ1bmMoKTsKIAogUHJpbWVUYWJsZSogQ3JlYXRlT25UaGVGbHlQcmlt
ZVRhYmxlKCkgewpAQCAtNjIsMTEgKzYxLDEwIEBAIFByaW1lVGFibGUqIENyZWF0ZVByZUNhbGN1
bGF0ZWRQcmltZVRhYmxlKCkgewogICByZXR1cm4gbmV3IFByZUNhbGN1bGF0ZWRQcmltZVRhYmxl
KG1heF9wcmVjYWxjdWxhdGVkKTsKIH0KIAotLy8gSW5zaWRlIHRoZSB0ZXN0IGJvZHksIGZpeHR1
cmUgY29uc3RydWN0b3IsIFNldFVwKCksIGFuZCBUZWFyRG93bigpCi0vLyB5b3UgY2FuIHJlZmVy
IHRvIHRoZSB0ZXN0IHBhcmFtZXRlciBieSBHZXRQYXJhbSgpLgotLy8gSW4gdGhpcyBjYXNlLCB0
aGUgdGVzdCBwYXJhbWV0ZXIgaXMgYSBQcmltZVRhYmxlRmFjdG9yeSBpbnRlcmZhY2UgcG9pbnRl
cgotLy8gd2hpY2ggd2UgdXNlIGluIGZpeHR1cmUncyBTZXRVcCgpIHRvIGNyZWF0ZSBhbmQgc3Rv
cmUgYW4gaW5zdGFuY2Ugb2YKLS8vIFByaW1lVGFibGUuCisvLyBJbnNpZGUgdGhlIHRlc3QgYm9k
eSwgZml4dHVyZSBjb25zdHJ1Y3RvciwgU2V0VXAoKSwgYW5kIFRlYXJEb3duKCkgeW91CisvLyBj
YW4gcmVmZXIgdG8gdGhlIHRlc3QgcGFyYW1ldGVyIGJ5IEdldFBhcmFtKCkuICBJbiB0aGlzIGNh
c2UsIHRoZSB0ZXN0CisvLyBwYXJhbWV0ZXIgaXMgYSBmYWN0b3J5IGZ1bmN0aW9uIHdoaWNoIHdl
IGNhbGwgaW4gZml4dHVyZSdzIFNldFVwKCkgdG8KKy8vIGNyZWF0ZSBhbmQgc3RvcmUgYW4gaW5z
dGFuY2Ugb2YgUHJpbWVUYWJsZS4KIGNsYXNzIFByaW1lVGFibGVUZXN0IDogcHVibGljIFRlc3RX
aXRoUGFyYW08Q3JlYXRlUHJpbWVUYWJsZUZ1bmMqPiB7CiAgcHVibGljOgogICB2aXJ0dWFsIH5Q
cmltZVRhYmxlVGVzdCgpIHsgZGVsZXRlIHRhYmxlXzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjCmluZGV4IGNjZjYxZDkyYjg1
YzMxMmY3ZjJlYzJmNmQ4YTY3M2RmZjRiMDJkNjYuLjcyNzQzMzQwNjc0ODg4NTEyZmMzODYwOGMx
MzhhNDBmOWFhMzJkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBs
ZXMvc2FtcGxlOF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1w
bGVzL3NhbXBsZThfdW5pdHRlc3QuY2MKQEAgLTM2LDcgKzM2LDcgQEAKIC8vIFVzZSBjbGFzcyBk
ZWZpbml0aW9ucyB0byB0ZXN0IGZyb20gdGhpcyBoZWFkZXIuCiAjaW5jbHVkZSAicHJpbWVfdGFi
bGVzLmgiCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCiAKICNpZiBHVEVTVF9IQVNfQ09NQklORQogCkBAIC05MCw3ICs5MCw3IEBAIHVzaW5nIDo6
dGVzdGluZzo6Q29tYmluZTsKIC8vIFByZUNhbGN1bGF0ZWRQcmltZVRhYmxlIGRpc2FibGVkLiBX
ZSBkbyB0aGlzIGJ5IGRlZmluaW5nIGZpeHR1cmUgd2hpY2ggd2lsbAogLy8gYWNjZXB0IGRpZmZl
cmVudCBjb21iaW5hdGlvbnMgb2YgcGFyYW1ldGVycyBmb3IgaW5zdGFudGlhdGluZyBhCiAvLyBI
eWJyaWRQcmltZVRhYmxlIGluc3RhbmNlLgotY2xhc3MgUHJpbWVUYWJsZVRlc3QgOiBwdWJsaWMg
VGVzdFdpdGhQYXJhbTwgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50PiA+IHsKK2NsYXNzIFBy
aW1lVGFibGVUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08IDo6dGVzdGluZzo6dHVwbGU8Ym9v
bCwgaW50PiA+IHsKICBwcm90ZWN0ZWQ6CiAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKICAgICAv
LyBUaGlzIGNhbiBiZSB3cml0dGVuIGFzCkBAIC0xMDEsOCArMTAxLDggQEAgY2xhc3MgUHJpbWVU
YWJsZVRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTwgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwg
aW50PiA+IHsKICAgICAvLwogICAgIC8vIG9uY2UgdGhlIEdvb2dsZSBDKysgU3R5bGUgR3VpZGUg
YWxsb3dzIHVzZSBvZiA6OnN0ZDo6dHIxOjp0aWUuCiAgICAgLy8KLSAgICBib29sIGZvcmNlX29u
X3RoZV9mbHkgPSA6OnN0ZDo6dHIxOjpnZXQ8MD4oR2V0UGFyYW0oKSk7Ci0gICAgaW50IG1heF9w
cmVjYWxjdWxhdGVkID0gOjpzdGQ6OnRyMTo6Z2V0PDE+KEdldFBhcmFtKCkpOworICAgIGJvb2wg
Zm9yY2Vfb25fdGhlX2ZseSA9IDo6dGVzdGluZzo6Z2V0PDA+KEdldFBhcmFtKCkpOworICAgIGlu
dCBtYXhfcHJlY2FsY3VsYXRlZCA9IDo6dGVzdGluZzo6Z2V0PDE+KEdldFBhcmFtKCkpOwogICAg
IHRhYmxlXyA9IG5ldyBIeWJyaWRQcmltZVRhYmxlKGZvcmNlX29uX3RoZV9mbHksIG1heF9wcmVj
YWxjdWxhdGVkKTsKICAgfQogICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MKaW5kZXgg
ZDgyOGVmNGQ4NmI3NDZiMjU2OTdiZGQ0NmQyMTAwYTQ0NjE0MmQzMS4uYjJlMjA3OWJmM2IzZGUy
YjA0NWI5YTgwZDdlN2M3YmRhYjljODlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYwpAQCAtMzQsNyArMzQsNyBAQAogCiAj
aW5jbHVkZSA8c3RkaW8uaD4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKIAogdXNpbmcgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVy
OwogdXNpbmcgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdDsKQEAgLTY5LDcgKzY5LDcgQEAgY2xh
c3MgVGVyc2VQcmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewogICAgIGZm
bHVzaChzdGRvdXQpOwogICB9CiAKLSAgLy8gQ2FsbGVkIGFmdGVyIGEgZmFpbGVkIGFzc2VydGlv
biBvciBhIFNVQ0NFU1MoKS4KKyAgLy8gQ2FsbGVkIGFmdGVyIGEgZmFpbGVkIGFzc2VydGlvbiBv
ciBhIFNVQ0NFRUQoKSBpbnZvY2F0aW9uLgogICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJlc3Vs
dChjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgewogICAgIGZwcmludGYo
c3Rkb3V0LAogICAgICAgICAgICAgIiVzIGluICVzOiVkXG4lc1xuIiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvY29tbW9uLnB5IGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc2NyaXB0cy9jb21tb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MwMzQ3YTc1YmRmZjMxODgw
OTc3NDUwMTVhNTgwMzc2NGFkNzQxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3NjcmlwdHMvY29tbW9uLnB5CkBAIC0wLDAgKzEsODMgQEAKKyMgQ29weXJpZ2h0
IDIwMTMgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyIiIlNoYXJlZCB1dGlsaXRpZXMgZm9yIHdyaXRpbmcgc2NyaXB0cyBmb3IgR29vZ2xlIFRl
c3QvTW9jay4iIiIKKworX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KScKKworCitpbXBvcnQgb3MKK2ltcG9ydCByZQorCisKKyMgTWF0Y2hlcyB0aGUgbGluZSBmcm9t
ICdzdm4gaW5mbyAuJyBvdXRwdXQgdGhhdCBkZXNjcmliZXMgd2hhdCBTVk4KKyMgcGF0aCB0aGUg
Y3VycmVudCBsb2NhbCBkaXJlY3RvcnkgY29ycmVzcG9uZHMgdG8uICBGb3IgZXhhbXBsZSwgaW4K
KyMgYSBnb29nbGV0ZXN0IFNWTiB3b3Jrc3BhY2UncyB0cnVuay90ZXN0IGRpcmVjdG9yeSwgdGhl
IG91dHB1dCB3aWxsIGJlOgorIworIyBVUkw6IGh0dHBzOi8vZ29vZ2xldGVzdC5nb29nbGVjb2Rl
LmNvbS9zdm4vdHJ1bmsvdGVzdAorX1NWTl9JTkZPX1VSTF9SRSA9IHJlLmNvbXBpbGUocideVVJM
OiBodHRwczovLyhcdyspXC5nb29nbGVjb2RlXC5jb20vc3ZuKC4qKScpCisKKworZGVmIEdldENv
bW1hbmRPdXRwdXQoY29tbWFuZCk6CisgICIiIlJ1bnMgdGhlIHNoZWxsIGNvbW1hbmQgYW5kIHJl
dHVybnMgaXRzIHN0ZG91dCBhcyBhIGxpc3Qgb2YgbGluZXMuIiIiCisKKyAgZiA9IG9zLnBvcGVu
KGNvbW1hbmQsICdyJykKKyAgbGluZXMgPSBbbGluZS5zdHJpcCgpIGZvciBsaW5lIGluIGYucmVh
ZGxpbmVzKCldCisgIGYuY2xvc2UoKQorICByZXR1cm4gbGluZXMKKworCitkZWYgR2V0U3ZuSW5m
bygpOgorICAiIiJSZXR1cm5zIHRoZSBwcm9qZWN0IG5hbWUgYW5kIHRoZSBjdXJyZW50IFNWTiB3
b3Jrc3BhY2UncyByb290IHBhdGguIiIiCisKKyAgZm9yIGxpbmUgaW4gR2V0Q29tbWFuZE91dHB1
dCgnc3ZuIGluZm8gLicpOgorICAgIG0gPSBfU1ZOX0lORk9fVVJMX1JFLm1hdGNoKGxpbmUpCisg
ICAgaWYgbToKKyAgICAgIHByb2plY3QgPSBtLmdyb3VwKDEpICAjIGdvb2dsZXRlc3Qgb3IgZ29v
Z2xlbW9jaworICAgICAgcmVsX3BhdGggPSBtLmdyb3VwKDIpCisgICAgICByb290ID0gb3MucGF0
aC5yZWFscGF0aChyZWxfcGF0aC5jb3VudCgnLycpICogJy4uLycpCisgICAgICByZXR1cm4gcHJv
amVjdCwgcm9vdAorCisgIHJldHVybiBOb25lLCBOb25lCisKKworZGVmIEdldFN2blRydW5rKCk6
CisgICIiIlJldHVybnMgdGhlIGN1cnJlbnQgU1ZOIHdvcmtzcGFjZSdzIHRydW5rIHJvb3QgcGF0
aC4iIiIKKworICBfLCByb290ID0gR2V0U3ZuSW5mbygpCisgIHJldHVybiByb290ICsgJy90cnVu
aycgaWYgcm9vdCBlbHNlIE5vbmUKKworCitkZWYgSXNJbkdUZXN0U3ZuKCk6CisgIHByb2plY3Qs
IF8gPSBHZXRTdm5JbmZvKCkKKyAgcmV0dXJuIHByb2plY3QgPT0gJ2dvb2dsZXRlc3QnCisKKwor
ZGVmIElzSW5HTW9ja1N2bigpOgorICBwcm9qZWN0LCBfID0gR2V0U3ZuSW5mbygpCisgIHJldHVy
biBwcm9qZWN0ID09ICdnb29nbGVtb2NrJwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2NyaXB0cy9mdXNlX2d0ZXN0X2ZpbGVzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2NyaXB0cy9mdXNlX2d0ZXN0X2ZpbGVzLnB5CmluZGV4IDE0ODQ0NGNhNzExYjFlZGFhYWZl
YThkNzgyNmQzY2ZkNGMwMWRlMGIuLjNmM2U5ZjM2ZDYxYjNiN2NhNzJmZTY5M2U1NTA4MTA2Yjdj
YmY3NjIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvZnVzZV9n
dGVzdF9maWxlcy5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2Z1c2Vf
Z3Rlc3RfZmlsZXMucHkKQEAgLTYwLDE1ICs2MCwxOCBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCBy
ZQotaW1wb3J0IHNldHMKK3RyeToKKyAgZnJvbSBzZXRzIGltcG9ydCBTZXQgYXMgc2V0ICAjIEZv
ciBQeXRob24gMi4zIGNvbXBhdGliaWxpdHkKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgcGFzcwog
aW1wb3J0IHN5cwogCiAjIFdlIGFzc3VtZSB0aGF0IHRoaXMgZmlsZSBpcyBpbiB0aGUgc2NyaXB0
cy8gZGlyZWN0b3J5IGluIHRoZSBHb29nbGUKICMgVGVzdCByb290IGRpcmVjdG9yeS4KIERFRkFV
TFRfR1RFU1RfUk9PVF9ESVIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9f
KSwgJy4uJykKIAotIyBSZWdleCBmb3IgbWF0Y2hpbmcgJyNpbmNsdWRlIDxndGVzdC8uLi4+Jy4K
LUlOQ0xVREVfR1RFU1RfRklMRV9SRUdFWCA9IHJlLmNvbXBpbGUocideXHMqI1xzKmluY2x1ZGVc
cyo8KGd0ZXN0Ly4rKT4nKQorIyBSZWdleCBmb3IgbWF0Y2hpbmcgJyNpbmNsdWRlICJndGVzdC8u
Li4iJy4KK0lOQ0xVREVfR1RFU1RfRklMRV9SRUdFWCA9IHJlLmNvbXBpbGUocideXHMqI1xzKmlu
Y2x1ZGVccyoiKGd0ZXN0Ly4rKSInKQogCiAjIFJlZ2V4IGZvciBtYXRjaGluZyAnI2luY2x1ZGUg
InNyYy8uLi4iJy4KIElOQ0xVREVfU1JDX0ZJTEVfUkVHRVggPSByZS5jb21waWxlKHInXlxzKiNc
cyppbmNsdWRlXHMqIihzcmMvLispIicpCkBAIC05MCwxMCArOTMsMTAgQEAgZGVmIFZlcmlmeUZp
bGVFeGlzdHMoZGlyZWN0b3J5LCByZWxhdGl2ZV9wYXRoKToKICAgIiIiCiAKICAgaWYgbm90IG9z
LnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkaXJlY3RvcnksIHJlbGF0aXZlX3BhdGgpKToKLSAg
ICBwcmludCAnRVJST1I6IENhbm5vdCBmaW5kICVzIGluIGRpcmVjdG9yeSAlcy4nICUgKHJlbGF0
aXZlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaXJlY3RvcnkpCi0gICAgcHJpbnQgKCdQbGVhc2UgZWl0aGVyIHNwZWNpZnkgYSB2
YWxpZCBwcm9qZWN0IHJvb3QgZGlyZWN0b3J5ICcKLSAgICAgICAgICAgJ29yIG9taXQgaXQgb24g
dGhlIGNvbW1hbmQgbGluZS4nKQorICAgIHByaW50KCdFUlJPUjogQ2Fubm90IGZpbmQgJXMgaW4g
ZGlyZWN0b3J5ICVzLicgJSAocmVsYXRpdmVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSkpCisgICAgcHJpbnQoJ1Bs
ZWFzZSBlaXRoZXIgc3BlY2lmeSBhIHZhbGlkIHByb2plY3Qgcm9vdCBkaXJlY3RvcnkgJworICAg
ICAgICAgICdvciBvbWl0IGl0IG9uIHRoZSBjb21tYW5kIGxpbmUuJykKICAgICBzeXMuZXhpdCgx
KQogCiAKQEAgLTExOSwxMSArMTIyLDExIEBAIGRlZiBWZXJpZnlPdXRwdXRGaWxlKG91dHB1dF9k
aXIsIHJlbGF0aXZlX3BhdGgpOgogICAgICMgVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IFRoZSBmb2xs
b3dpbmcgdXNlci1pbnRlcmFjdGlvbiBkb2Vzbid0CiAgICAgIyB3b3JrIHdpdGggYXV0b21hdGVk
IHByb2Nlc3Nlcy4gIFdlIHNob3VsZCBwcm92aWRlIGEgd2F5IGZvciB0aGUKICAgICAjIE1ha2Vm
aWxlIHRvIGZvcmNlIG92ZXJ3cml0aW5nIHRoZSBmaWxlcy4KLSAgICBwcmludCAoJyVzIGFscmVh
ZHkgZXhpc3RzIGluIGRpcmVjdG9yeSAlcyAtIG92ZXJ3cml0ZSBpdD8gKHkvTikgJyAlCi0gICAg
ICAgICAgIChyZWxhdGl2ZV9wYXRoLCBvdXRwdXRfZGlyKSkKKyAgICBwcmludCgnJXMgYWxyZWFk
eSBleGlzdHMgaW4gZGlyZWN0b3J5ICVzIC0gb3ZlcndyaXRlIGl0PyAoeS9OKSAnICUKKyAgICAg
ICAgICAocmVsYXRpdmVfcGF0aCwgb3V0cHV0X2RpcikpCiAgICAgYW5zd2VyID0gc3lzLnN0ZGlu
LnJlYWRsaW5lKCkuc3RyaXAoKQogICAgIGlmIGFuc3dlciBub3QgaW4gWyd5JywgJ1knXToKLSAg
ICAgIHByaW50ICdBQk9SVEVELicKKyAgICAgIHByaW50KCdBQk9SVEVELicpCiAgICAgICBzeXMu
ZXhpdCgxKQogCiAgICMgTWFrZXMgc3VyZSB0aGUgZGlyZWN0b3J5IGhvbGRpbmcgdGhlIG91dHB1
dCBmaWxlIGV4aXN0czsgY3JlYXRlcwpAQCAtMTQ2LDggKzE0OSw4IEBAIGRlZiBWYWxpZGF0ZU91
dHB1dERpcihvdXRwdXRfZGlyKToKIGRlZiBGdXNlR1Rlc3RIKGd0ZXN0X3Jvb3QsIG91dHB1dF9k
aXIpOgogICAiIiJTY2FucyBmb2xkZXIgZ3Rlc3Rfcm9vdCB0byBnZW5lcmF0ZSBndGVzdC9ndGVz
dC5oIGluIG91dHB1dF9kaXIuIiIiCiAKLSAgb3V0cHV0X2ZpbGUgPSBmaWxlKG9zLnBhdGguam9p
bihvdXRwdXRfZGlyLCBHVEVTVF9IX09VVFBVVCksICd3JykKLSAgcHJvY2Vzc2VkX2ZpbGVzID0g
c2V0cy5TZXQoKSAgIyBIb2xkcyBhbGwgZ3Rlc3QgaGVhZGVycyB3ZSd2ZSBwcm9jZXNzZWQuCisg
IG91dHB1dF9maWxlID0gb3Blbihvcy5wYXRoLmpvaW4ob3V0cHV0X2RpciwgR1RFU1RfSF9PVVRQ
VVQpLCAndycpCisgIHByb2Nlc3NlZF9maWxlcyA9IHNldCgpICAjIEhvbGRzIGFsbCBndGVzdCBo
ZWFkZXJzIHdlJ3ZlIHByb2Nlc3NlZC4KIAogICBkZWYgUHJvY2Vzc0ZpbGUoZ3Rlc3RfaGVhZGVy
X3BhdGgpOgogICAgICIiIlByb2Nlc3NlcyB0aGUgZ2l2ZW4gZ3Rlc3QgaGVhZGVyIGZpbGUuIiIi
CkBAIC0xNTksMTAgKzE2MiwxMCBAQCBkZWYgUHJvY2Vzc0ZpbGUoZ3Rlc3RfaGVhZGVyX3BhdGgp
OgogICAgIHByb2Nlc3NlZF9maWxlcy5hZGQoZ3Rlc3RfaGVhZGVyX3BhdGgpCiAKICAgICAjIFJl
YWRzIGVhY2ggbGluZSBpbiB0aGUgZ2l2ZW4gZ3Rlc3QgaGVhZGVyLgotICAgIGZvciBsaW5lIGlu
IGZpbGUob3MucGF0aC5qb2luKGd0ZXN0X3Jvb3QsIGd0ZXN0X2hlYWRlcl9wYXRoKSwgJ3InKToK
KyAgICBmb3IgbGluZSBpbiBvcGVuKG9zLnBhdGguam9pbihndGVzdF9yb290LCBndGVzdF9oZWFk
ZXJfcGF0aCksICdyJyk6CiAgICAgICBtID0gSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VYLm1hdGNo
KGxpbmUpCiAgICAgICBpZiBtOgotICAgICAgICAjIEl0J3MgJyNpbmNsdWRlIDxndGVzdC8uLi4+
JyAtIGxldCdzIHByb2Nlc3MgaXQgcmVjdXJzaXZlbHkuCisgICAgICAgICMgSXQncyAnI2luY2x1
ZGUgImd0ZXN0Ly4uLiInIC0gbGV0J3MgcHJvY2VzcyBpdCByZWN1cnNpdmVseS4KICAgICAgICAg
UHJvY2Vzc0ZpbGUoJ2luY2x1ZGUvJyArIG0uZ3JvdXAoMSkpCiAgICAgICBlbHNlOgogICAgICAg
ICAjIE90aGVyd2lzZSB3ZSBjb3B5IHRoZSBsaW5lIHVuY2hhbmdlZCB0byB0aGUgb3V0cHV0IGZp
bGUuCkBAIC0xNzUsNyArMTc4LDcgQEAgZGVmIFByb2Nlc3NGaWxlKGd0ZXN0X2hlYWRlcl9wYXRo
KToKIGRlZiBGdXNlR1Rlc3RBbGxDY1RvRmlsZShndGVzdF9yb290LCBvdXRwdXRfZmlsZSk6CiAg
ICIiIlNjYW5zIGZvbGRlciBndGVzdF9yb290IHRvIGdlbmVyYXRlIGd0ZXN0L2d0ZXN0LWFsbC5j
YyBpbiBvdXRwdXRfZmlsZS4iIiIKIAotICBwcm9jZXNzZWRfZmlsZXMgPSBzZXRzLlNldCgpCisg
IHByb2Nlc3NlZF9maWxlcyA9IHNldCgpCiAKICAgZGVmIFByb2Nlc3NGaWxlKGd0ZXN0X3NvdXJj
ZV9maWxlKToKICAgICAiIiJQcm9jZXNzZXMgdGhlIGdpdmVuIGd0ZXN0IHNvdXJjZSBmaWxlLiIi
IgpAQCAtMTg3LDIzICsxOTAsMjMgQEAgZGVmIFByb2Nlc3NGaWxlKGd0ZXN0X3NvdXJjZV9maWxl
KToKICAgICBwcm9jZXNzZWRfZmlsZXMuYWRkKGd0ZXN0X3NvdXJjZV9maWxlKQogCiAgICAgIyBS
ZWFkcyBlYWNoIGxpbmUgaW4gdGhlIGdpdmVuIGd0ZXN0IHNvdXJjZSBmaWxlLgotICAgIGZvciBs
aW5lIGluIGZpbGUob3MucGF0aC5qb2luKGd0ZXN0X3Jvb3QsIGd0ZXN0X3NvdXJjZV9maWxlKSwg
J3InKToKKyAgICBmb3IgbGluZSBpbiBvcGVuKG9zLnBhdGguam9pbihndGVzdF9yb290LCBndGVz
dF9zb3VyY2VfZmlsZSksICdyJyk6CiAgICAgICBtID0gSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VY
Lm1hdGNoKGxpbmUpCiAgICAgICBpZiBtOgogICAgICAgICBpZiAnaW5jbHVkZS8nICsgbS5ncm91
cCgxKSA9PSBHVEVTVF9TUElfSF9TRUVEOgotICAgICAgICAgICMgSXQncyAnI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0LXNwaS5oPicuICBUaGlzIGZpbGUgaXMgbm90Ci0gICAgICAgICAgIyAjaW5jbHVk
ZWQgYnkgPGd0ZXN0L2d0ZXN0Lmg+LCBzbyB3ZSBuZWVkIHRvIHByb2Nlc3MgaXQuCisgICAgICAg
ICAgIyBJdCdzICcjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiJy4gIFRoaXMgZmlsZSBpcyBu
b3QKKyAgICAgICAgICAjICNpbmNsdWRlZCBieSAiZ3Rlc3QvZ3Rlc3QuaCIsIHNvIHdlIG5lZWQg
dG8gcHJvY2VzcyBpdC4KICAgICAgICAgICBQcm9jZXNzRmlsZShHVEVTVF9TUElfSF9TRUVEKQog
ICAgICAgICBlbHNlOgotICAgICAgICAgICMgSXQncyAnI2luY2x1ZGUgPGd0ZXN0L2Zvby5oPicg
d2hlcmUgZm9vIGlzIG5vdCBndGVzdC1zcGkuCi0gICAgICAgICAgIyBXZSB0cmVhdCBpdCBhcyAn
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+JywgYXMgYWxsIG90aGVyCisgICAgICAgICAgIyBJdCdz
ICcjaW5jbHVkZSAiZ3Rlc3QvZm9vLmgiJyB3aGVyZSBmb28gaXMgbm90IGd0ZXN0LXNwaS4KKyAg
ICAgICAgICAjIFdlIHRyZWF0IGl0IGFzICcjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCInLCBhcyBh
bGwgb3RoZXIKICAgICAgICAgICAjIGd0ZXN0IGhlYWRlcnMgYXJlIGJlaW5nIGZ1c2VkIGludG8g
Z3Rlc3QuaCBhbmQgY2Fubm90IGJlCiAgICAgICAgICAgIyAjaW5jbHVkZWQgZGlyZWN0bHkuCiAK
LSAgICAgICAgICAjIFRoZXJlIGlzIG5vIG5lZWQgdG8gI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
IG1vcmUgdGhhbiBvbmNlLgorICAgICAgICAgICMgVGhlcmUgaXMgbm8gbmVlZCB0byAjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIgbW9yZSB0aGFuIG9uY2UuCiAgICAgICAgICAgaWYgbm90IEdURVNU
X0hfU0VFRCBpbiBwcm9jZXNzZWRfZmlsZXM6CiAgICAgICAgICAgICBwcm9jZXNzZWRfZmlsZXMu
YWRkKEdURVNUX0hfU0VFRCkKLSAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKCcjaW5jbHVk
ZSA8JXM+XG4nICUgKEdURVNUX0hfT1VUUFVULCkpCisgICAgICAgICAgICBvdXRwdXRfZmlsZS53
cml0ZSgnI2luY2x1ZGUgIiVzIlxuJyAlIChHVEVTVF9IX09VVFBVVCwpKQogICAgICAgZWxzZToK
ICAgICAgICAgbSA9IElOQ0xVREVfU1JDX0ZJTEVfUkVHRVgubWF0Y2gobGluZSkKICAgICAgICAg
aWYgbToKQEAgLTIxOCw3ICsyMjEsNyBAQCBkZWYgUHJvY2Vzc0ZpbGUoZ3Rlc3Rfc291cmNlX2Zp
bGUpOgogZGVmIEZ1c2VHVGVzdEFsbENjKGd0ZXN0X3Jvb3QsIG91dHB1dF9kaXIpOgogICAiIiJT
Y2FucyBmb2xkZXIgZ3Rlc3Rfcm9vdCB0byBnZW5lcmF0ZSBndGVzdC9ndGVzdC1hbGwuY2MgaW4g
b3V0cHV0X2Rpci4iIiIKIAotICBvdXRwdXRfZmlsZSA9IGZpbGUob3MucGF0aC5qb2luKG91dHB1
dF9kaXIsIEdURVNUX0FMTF9DQ19PVVRQVVQpLCAndycpCisgIG91dHB1dF9maWxlID0gb3Blbihv
cy5wYXRoLmpvaW4ob3V0cHV0X2RpciwgR1RFU1RfQUxMX0NDX09VVFBVVCksICd3JykKICAgRnVz
ZUdUZXN0QWxsQ2NUb0ZpbGUoZ3Rlc3Rfcm9vdCwgb3V0cHV0X2ZpbGUpCiAgIG91dHB1dF9maWxl
LmNsb3NlKCkKIApAQCAtMjQyLDcgKzI0NSw3IEBAIGRlZiBtYWluKCk6CiAgICAgIyBmdXNlX2d0
ZXN0X2ZpbGVzLnB5IEdURVNUX1JPT1RfRElSIE9VVFBVVF9ESVIKICAgICBGdXNlR1Rlc3Qoc3lz
LmFyZ3ZbMV0sIHN5cy5hcmd2WzJdKQogICBlbHNlOgotICAgIHByaW50IF9fZG9jX18KKyAgICBw
cmludChfX2RvY19fKQogICAgIHN5cy5leGl0KDEpCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9nZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5IGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9nZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5CmluZGV4IDgzMDcx
MzRhZGFmNGRhMmJlOGZhMjMzMjI5MTUyMGQzOWM5NGJiMTIuLjNlN2FiMDQyZWFjYmExMzhhMmIy
YTE3ODFhNzBiNzU0YTdhYzI1YzkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NjcmlwdHMvZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zY3JpcHRzL2dlbl9ndGVzdF9wcmVkX2ltcGwucHkKQEAgLTExNyw3ICsxMTcsNyBAQCBk
ZWYgSGVhZGVyUHJlYW1ibGUobik6CiAKIC8vIE1ha2VzIHN1cmUgdGhpcyBoZWFkZXIgaXMgbm90
IGluY2x1ZGVkIGJlZm9yZSBndGVzdC5oLgogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dU
RVNUX0hfCi0jZXJyb3IgRG8gbm90IGluY2x1ZGUgZ3Rlc3RfcHJlZF9pbXBsLmggZGlyZWN0bHku
ICBJbmNsdWRlIGd0ZXN0LmggaW5zdGVhZC4KKyMgZXJyb3IgRG8gbm90IGluY2x1ZGUgZ3Rlc3Rf
cHJlZF9pbXBsLmggZGlyZWN0bHkuICBJbmNsdWRlIGd0ZXN0LmggaW5zdGVhZC4KICNlbmRpZiAg
Ly8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9IXwogCiAvLyBUaGlzIGhlYWRlciBpbXBsZW1l
bnRzIGEgZmFtaWx5IG9mIGdlbmVyaWMgcHJlZGljYXRlIGFzc2VydGlvbgpAQCAtMjM4LDI3ICsy
MzgsMjUgQEAgZGVmIEltcGxlbWVudGF0aW9uRm9yQXJpdHkobik6CiAgIGltcGwgKz0gIiIiKSB7
CiAgIGlmIChwcmVkKCUodnMpcykpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgTWVz
c2FnZSBtc2c7CiAiIiIgJSBERUZTCiAKLSAgaW1wbCArPSAnICBtc2cgPDwgcHJlZF90ZXh0IDw8
ICIoIicKKyAgaW1wbCArPSAnICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4
dCA8PCAiKCInCiAKICAgaW1wbCArPSBJdGVyKG4sICIiIgotICAgICAgPDwgZSVzIiIiLCBzZXA9
JyA8PCAiLCAiJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlJXMiIiIsIHNlcD0n
IDw8ICIsICInKQogCiAgIGltcGwgKz0gJyA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJl
IicKIAogICBpbXBsICs9IEl0ZXIobiwgIiIiCi0gICAgICA8PCAiXFxuIiA8PCBlJXMgPDwgIiBl
dmFsdWF0ZXMgdG8gIiA8PCB2JXMiIiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
IlxcbiIgPDwgZSVzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdiVzIiIiKQogCiAgIGltcGwgKz0g
IiIiOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogCiAvLyBJbnRlcm5hbCBt
YWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEX0ZPUk1BVCUobilzLgog
Ly8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1B
VCUobilzXyhwcmVkX2Zvcm1hdCwgJSh2cylzLCBvbl9mYWlsdXJlKVxcCi0gIEdURVNUX0FTU0VS
VF8ocHJlZF9mb3JtYXQoJSh2dHMpcywgJSh2cylzKSxcXAorICBHVEVTVF9BU1NFUlRfKHByZWRf
Zm9ybWF0KCUodnRzKXMsICUodnMpcyksIFxcCiAgICAgICAgICAgICAgICAgb25fZmFpbHVyZSkK
IAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJF
RCUobilzLiAgRG9uJ3QgdXNlCkBAIC0zODYsOCArMzg0LDggQEAgZGVmIFVuaXRUZXN0UHJlYW1i
bGUoKToKIAogI2luY2x1ZGUgPGlvc3RyZWFtPgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
LSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGkuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgogCiAvLyBBIHVzZXItZGVmaW5lZCBkYXRhIHR5
cGUuCiBzdHJ1Y3QgQm9vbCB7CkBAIC00NzgsMTUgKzQ3NiwxNCBAQCBkZWYgVGVzdHNGb3JBcml0
eShuKToKICAgaWYgKFByZWRGdW5jdGlvbiUobilzKCUodnMpcykpCiAgICAgcmV0dXJuIHRlc3Rp
bmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5nOjpNZXNzYWdlIG1zZzsKLSAgbXNn
IDw8ICIiIiAlIERFRlMKKyAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAg
ICAgPDwgIiIiICUgREVGUwogCiAgIHRlc3RzICs9IEl0ZXIobiwgJ2UlcycsIHNlcD0nIDw8ICIg
KyAiIDw8ICcpCiAKICAgdGVzdHMgKz0gIiIiCiAgICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJl
IHBvc2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKICAgICAgIDw8ICUodl9zdW0pcyA8PCAiLiI7
Ci0gIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAiIiIgJSBERUZT
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvZ3Rlc3QtY29u
ZmlnLmluIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9ndGVzdC1jb25maWcuaW4K
aW5kZXggOWM3MjYzODU0YjlmODYzYjYxOGM3MDhkZTFlZmUwZThiMWY3MjgwYS4uNzgwZjg0MzJl
ZmNjMWFlZWFhYWQwNzA2MDg2ZDNmZjY0MTI4NWI2OCAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc2NyaXB0cy9ndGVzdC1jb25maWcuaW4KKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc2NyaXB0cy9ndGVzdC1jb25maWcuaW4KQEAgLTIwOSw3ICsyMDksNyBAQCBpZiB0
ZXN0ICIke3RoaXNfYmluZGlyfSIgPSAiJHt0aGlzX2JpbmRpciUke2JpbmRpcn19IjsgdGhlbgog
ICAjIFRoZSBwYXRoIHRvIHRoZSBzY3JpcHQgZG9lc24ndCBlbmQgaW4gdGhlIGJpbmRpciBzZXF1
ZW5jZSBmcm9tIEF1dG9jb25mLAogICAjIGFzc3VtZSB0aGF0IHdlIGFyZSBpbiBhIGJ1aWxkIHRy
ZWUuCiAgIGJ1aWxkX2Rpcj1gZGlybmFtZSAke3RoaXNfYmluZGlyfWAKLSAgc3JjX2Rpcj1gY2Qg
JHt0aGlzX2JpbmRpcn0vQHRvcF9zcmNkaXJAOyBwd2QgLVBgCisgIHNyY19kaXI9YGNkICR7dGhp
c19iaW5kaXJ9OyBjZCBAdG9wX3NyY2RpckA7IHB3ZCAtUGAKIAogICAjIFRPRE8oY2hhbmRsZXJj
QGdvb2dsZS5jb20pOiBUaGlzIGlzIGEgZGFuZ2Vyb3VzIGRlcGVuZGVuY3kgb24gbGlidG9vbCwg
d2UKICAgIyBzaG91bGQgd29yayB0byByZW1vdmUgaXQsIGFuZC9vciByZW1vdmUgbGlidG9vbCBh
bHRvZ2V0aGVyLCByZXBsYWNpbmcgaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NjcmlwdHMvcHVtcC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcHVt
cC5weQppbmRleCBmMTVjMWI2Y2ViNGI4YjFiYjBiZjRlODNlM2VhOTNiMzhjNzg1ODAwLi41ZWZi
NjUzYzIwN2QxZjFjMmFlY2M0ZDY5MGJmNzMyZTNjMWQ3MWFiIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3B1bXAucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2NyaXB0cy9wdW1wLnB5CkBAIC0yOSw3ICsyOSw3IEBACiAjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCi0iIiJwdW1wIHYwLjEgLSBQcmV0dHkgVXNlZnVsIGZvciBNZXRhIFBy
b2dyYW1taW5nLgorIiIicHVtcCB2MC4yLjAgLSBQcmV0dHkgVXNlZnVsIGZvciBNZXRhIFByb2dy
YW1taW5nLgogCiBBIHRvb2wgZm9yIHByZXByb2Nlc3NvciBtZXRhIHByb2dyYW1taW5nLiAgVXNl
ZnVsIGZvciBnZW5lcmF0aW5nCiByZXBldGl0aXZlIGJvaWxlcnBsYXRlIGNvZGUuICBFc3BlY2lh
bGx5IHVzZWZ1bCBmb3Igd3JpdGluZyBDKysKQEAgLTc4LDcgKzc4LDYgQEAKICAgICAocmUuY29t
cGlsZShyJ1wkcmFuZ2VccysnKSwgJyRyYW5nZScpLAogICAgIChyZS5jb21waWxlKHInXCRbX0Et
WmEtel1cdyonKSwgJyRpZCcpLAogICAgIChyZS5jb21waWxlKHInXCRcKFwkXCknKSwgJyQoJCkn
KSwKLSAgICAocmUuY29tcGlsZShyJ1wkXCQuKicpLCAnJCQnKSwKICAgICAocmUuY29tcGlsZShy
J1wkJyksICckJyksCiAgICAgKHJlLmNvbXBpbGUocidcW1xbXG4/JyksICdbWycpLAogICAgIChy
ZS5jb21waWxlKHInXF1cXVxuPycpLCAnXV0nKSwKQEAgLTIyNCw2ICsyMjMsMTcgQEAgZGVmIFN1
YlN0cmluZyhsaW5lcywgc3RhcnQsIGVuZCk6CiAgIHJldHVybiAnJy5qb2luKHJlc3VsdF9saW5l
cykKIAogCitkZWYgU3RyaXBNZXRhQ29tbWVudHMoc3RyKToKKyAgIiIiU3RyaXAgbWV0YSBjb21t
ZW50cyBmcm9tIGVhY2ggbGluZSBpbiB0aGUgZ2l2ZW4gc3RyaW5nLiIiIgorCisgICMgRmlyc3Qs
IGNvbXBsZXRlbHkgcmVtb3ZlIGxpbmVzIGNvbnRhaW5pbmcgbm90aGluZyBidXQgYSBtZXRhCisg
ICMgY29tbWVudCwgaW5jbHVkaW5nIHRoZSB0cmFpbGluZyBcbi4KKyAgc3RyID0gcmUuc3ViKHIn
XlxzKlwkXCQuKlxuJywgJycsIHN0cikKKworICAjIFRoZW4sIHJlbW92ZSBtZXRhIGNvbW1lbnRz
IGZyb20gY29udGVudGZ1bCBsaW5lcy4KKyAgcmV0dXJuIHJlLnN1YihyJ1xzKlwkXCQuKicsICcn
LCBzdHIpCisKKwogZGVmIE1ha2VUb2tlbihsaW5lcywgc3RhcnQsIGVuZCwgdG9rZW5fdHlwZSk6
CiAgICIiIkNyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgVG9rZW4uIiIiCiAKQEAgLTMxMSwxMSAr
MzIxLDcgQEAgZGVmIFRva2VuaXplTGluZXMobGluZXMsIHBvcyk6CiAgICAgICBwcmV2X3Rva2Vu
ID0gTWFrZVRva2VuKGxpbmVzLCBwb3MsIGZvdW5kLnN0YXJ0LCAnY29kZScpCiAgICAgICBwcmV2
X3Rva2VuX3JzdHJpcHBlZCA9IFJTdHJpcE5ld0xpbmVGcm9tVG9rZW4ocHJldl90b2tlbikKIAot
ICAgIGlmIGZvdW5kLnRva2VuX3R5cGUgPT0gJyQkJzogICMgQSBtZXRhIGNvbW1lbnQuCi0gICAg
ICBpZiBwcmV2X3Rva2VuX3JzdHJpcHBlZDoKLSAgICAgICAgeWllbGQgcHJldl90b2tlbl9yc3Ry
aXBwZWQKLSAgICAgIHBvcyA9IEN1cnNvcihmb3VuZC5lbmQubGluZSArIDEsIDApCi0gICAgZWxp
ZiBmb3VuZC50b2tlbl90eXBlID09ICckdmFyJzoKKyAgICBpZiBmb3VuZC50b2tlbl90eXBlID09
ICckdmFyJzoKICAgICAgIGlmIHByZXZfdG9rZW5fcnN0cmlwcGVkOgogICAgICAgICB5aWVsZCBw
cmV2X3Rva2VuX3JzdHJpcHBlZAogICAgICAgeWllbGQgZm91bmQKQEAgLTM3NCw4ICszODAsMTEg
QEAgZGVmIFRva2VuaXplTGluZXMobGluZXMsIHBvcyk6CiAKIAogZGVmIFRva2VuaXplKHMpOgot
ICBsaW5lcyA9IHMuc3BsaXRsaW5lcyhUcnVlKQotICByZXR1cm4gVG9rZW5pemVMaW5lcyhsaW5l
cywgQ3Vyc29yKDAsIDApKQorICAiIiJBIGdlbmVyYXRvciB0aGF0IHlpZWxkcyB0aGUgdG9rZW5z
IGluIHRoZSBnaXZlbiBzdHJpbmcuIiIiCisgIGlmIHMgIT0gJyc6CisgICAgbGluZXMgPSBzLnNw
bGl0bGluZXMoVHJ1ZSkKKyAgICBmb3IgdG9rZW4gaW4gVG9rZW5pemVMaW5lcyhsaW5lcywgQ3Vy
c29yKDAsIDApKToKKyAgICAgIHlpZWxkIHRva2VuCiAKIAogY2xhc3MgQ29kZU5vZGU6CkBAIC01
NjUsMTEgKzU3NCw5IEBAIGRlZiBQYXJzZUNvZGVOb2RlKHRva2Vucyk6CiAgIHJldHVybiBDb2Rl
Tm9kZShhdG9taWNfY29kZV9saXN0KQogCiAKLWRlZiBDb252ZXJ0KGZpbGVfcGF0aCk6Ci0gIHMg
PSBmaWxlKGZpbGVfcGF0aCwgJ3InKS5yZWFkKCkKLSAgdG9rZW5zID0gW10KLSAgZm9yIHRva2Vu
IGluIFRva2VuaXplKHMpOgotICAgIHRva2Vucy5hcHBlbmQodG9rZW4pCitkZWYgUGFyc2VUb0FT
VChwdW1wX3NyY190ZXh0KToKKyAgIiIiQ29udmVydCB0aGUgZ2l2ZW4gUHVtcCBzb3VyY2UgdGV4
dCBpbnRvIGFuIEFTVC4iIiIKKyAgdG9rZW5zID0gbGlzdChUb2tlbml6ZShwdW1wX3NyY190ZXh0
KSkKICAgY29kZV9ub2RlID0gUGFyc2VDb2RlTm9kZSh0b2tlbnMpCiAgIHJldHVybiBjb2RlX25v
ZGUKIApAQCAtNjk3LDE0ICs3MDQsMTQgQEAgZGVmIFJ1bkNvZGUoZW52LCBjb2RlX25vZGUsIG91
dHB1dCk6CiAgICAgUnVuQXRvbWljQ29kZShlbnYsIGF0b21pY19jb2RlLCBvdXRwdXQpCiAKIAot
ZGVmIElzQ29tbWVudChjdXJfbGluZSk6CitkZWYgSXNTaW5nbGVMaW5lQ29tbWVudChjdXJfbGlu
ZSk6CiAgIHJldHVybiAnLy8nIGluIGN1cl9saW5lCiAKIAotZGVmIElzSW5QcmVwcm9jZXNzb3JE
aXJldmF0aXZlKHByZXZfbGluZXMsIGN1cl9saW5lKToKK2RlZiBJc0luUHJlcHJvY2Vzc29yRGly
ZWN0aXZlKHByZXZfbGluZXMsIGN1cl9saW5lKToKICAgaWYgY3VyX2xpbmUubHN0cmlwKCkuc3Rh
cnRzd2l0aCgnIycpOgogICAgIHJldHVybiBUcnVlCi0gIHJldHVybiBwcmV2X2xpbmVzICE9IFtd
IGFuZCBwcmV2X2xpbmVzWy0xXS5lbmRzd2l0aCgnXFwnKQorICByZXR1cm4gcHJldl9saW5lcyBh
bmQgcHJldl9saW5lc1stMV0uZW5kc3dpdGgoJ1xcJykKIAogCiBkZWYgV3JhcENvbW1lbnQobGlu
ZSwgb3V0cHV0KToKQEAgLTc2MSw3ICs3NjgsNyBAQCBkZWYgV3JhcENvZGUobGluZSwgbGluZV9j
b25jYXQsIG91dHB1dCk6CiAgICAgb3V0cHV0LmFwcGVuZChwcmVmaXggKyBjdXJfbGluZS5zdHJp
cCgpKQogCiAKLWRlZiBXcmFwUHJlcHJvY2Vzc29yRGlyZXZhdGl2ZShsaW5lLCBvdXRwdXQpOgor
ZGVmIFdyYXBQcmVwcm9jZXNzb3JEaXJlY3RpdmUobGluZSwgb3V0cHV0KToKICAgV3JhcENvZGUo
bGluZSwgJyBcXCcsIG91dHB1dCkKIAogCkBAIC03NjksMjkgKzc3NiwzNyBAQCBkZWYgV3JhcFBs
YWluQ29kZShsaW5lLCBvdXRwdXQpOgogICBXcmFwQ29kZShsaW5lLCAnJywgb3V0cHV0KQogCiAK
LWRlZiBJc0hlYWRlckd1YXJkT3JJbmNsdWRlKGxpbmUpOgorZGVmIElzTXVsdGlMaW5lSVdZVVBy
YWdtYShsaW5lKToKKyAgcmV0dXJuIHJlLnNlYXJjaChyJy9cKiBJV1lVIHByYWdtYTogJywgbGlu
ZSkKKworCitkZWYgSXNIZWFkZXJHdWFyZEluY2x1ZGVPck9uZUxpbmVJV1lVUHJhZ21hKGxpbmUp
OgogICByZXR1cm4gKHJlLm1hdGNoKHInXiMoaWZuZGVmfGRlZmluZXxlbmRpZlxzKi8vKVxzKltc
d19dK1xzKiQnLCBsaW5lKSBvcgotICAgICAgICAgIHJlLm1hdGNoKHInXiNpbmNsdWRlXHMnLCBs
aW5lKSkKKyAgICAgICAgICByZS5tYXRjaChyJ14jaW5jbHVkZVxzJywgbGluZSkgb3IKKyAgICAg
ICAgICAjIERvbid0IGJyZWFrIElXWVUgcHJhZ21hcywgZWl0aGVyOyB0aGF0IGNhdXNlcyBpd3l1
LnB5IHByb2JsZW1zLgorICAgICAgICAgIHJlLnNlYXJjaChyJy8vIElXWVUgcHJhZ21hOiAnLCBs
aW5lKSkKIAogCiBkZWYgV3JhcExvbmdMaW5lKGxpbmUsIG91dHB1dCk6CiAgIGxpbmUgPSBsaW5l
LnJzdHJpcCgpCiAgIGlmIGxlbihsaW5lKSA8PSA4MDoKICAgICBvdXRwdXQuYXBwZW5kKGxpbmUp
Ci0gIGVsaWYgSXNDb21tZW50KGxpbmUpOgotICAgIGlmIElzSGVhZGVyR3VhcmRPckluY2x1ZGUo
bGluZSk6Ci0gICAgICAjIFRoZSBzdHlsZSBndWlkZSBtYWRlIGFuIGV4Y2VwdGlvbiB0byBhbGxv
dyBsb25nIGhlYWRlciBndWFyZCBsaW5lcwotICAgICAgIyBhbmQgaW5jbHVkZXMuCisgIGVsaWYg
SXNTaW5nbGVMaW5lQ29tbWVudChsaW5lKToKKyAgICBpZiBJc0hlYWRlckd1YXJkSW5jbHVkZU9y
T25lTGluZUlXWVVQcmFnbWEobGluZSk6CisgICAgICAjIFRoZSBzdHlsZSBndWlkZSBtYWRlIGFu
IGV4Y2VwdGlvbiB0byBhbGxvdyBsb25nIGhlYWRlciBndWFyZCBsaW5lcywKKyAgICAgICMgaW5j
bHVkZXMgYW5kIElXWVUgcHJhZ21hcy4KICAgICAgIG91dHB1dC5hcHBlbmQobGluZSkKICAgICBl
bHNlOgogICAgICAgV3JhcENvbW1lbnQobGluZSwgb3V0cHV0KQotICBlbGlmIElzSW5QcmVwcm9j
ZXNzb3JEaXJldmF0aXZlKG91dHB1dCwgbGluZSk6Ci0gICAgaWYgSXNIZWFkZXJHdWFyZE9ySW5j
bHVkZShsaW5lKToKLSAgICAgICMgVGhlIHN0eWxlIGd1aWRlIG1hZGUgYW4gZXhjZXB0aW9uIHRv
IGFsbG93IGxvbmcgaGVhZGVyIGd1YXJkIGxpbmVzCi0gICAgICAjIGFuZCBpbmNsdWRlcy4KKyAg
ZWxpZiBJc0luUHJlcHJvY2Vzc29yRGlyZWN0aXZlKG91dHB1dCwgbGluZSk6CisgICAgaWYgSXNI
ZWFkZXJHdWFyZEluY2x1ZGVPck9uZUxpbmVJV1lVUHJhZ21hKGxpbmUpOgorICAgICAgIyBUaGUg
c3R5bGUgZ3VpZGUgbWFkZSBhbiBleGNlcHRpb24gdG8gYWxsb3cgbG9uZyBoZWFkZXIgZ3VhcmQg
bGluZXMsCisgICAgICAjIGluY2x1ZGVzIGFuZCBJV1lVIHByYWdtYXMuCiAgICAgICBvdXRwdXQu
YXBwZW5kKGxpbmUpCiAgICAgZWxzZToKLSAgICAgIFdyYXBQcmVwcm9jZXNzb3JEaXJldmF0aXZl
KGxpbmUsIG91dHB1dCkKKyAgICAgIFdyYXBQcmVwcm9jZXNzb3JEaXJlY3RpdmUobGluZSwgb3V0
cHV0KQorICBlbGlmIElzTXVsdGlMaW5lSVdZVVByYWdtYShsaW5lKToKKyAgICBvdXRwdXQuYXBw
ZW5kKGxpbmUpCiAgIGVsc2U6CiAgICAgV3JhcFBsYWluQ29kZShsaW5lLCBvdXRwdXQpCiAKQEAg
LTgwNSwxNiArODIwLDIxIEBAIGRlZiBCZWF1dGlmeUNvZGUoc3RyaW5nKToKICAgcmV0dXJuICdc
bicuam9pbihvdXRwdXQyKSArICdcbicKIAogCitkZWYgQ29udmVydEZyb21QdW1wU291cmNlKHNy
Y190ZXh0KToKKyAgIiIiUmV0dXJuIHRoZSB0ZXh0IGdlbmVyYXRlZCBmcm9tIHRoZSBnaXZlbiBQ
dW1wIHNvdXJjZSB0ZXh0LiIiIgorICBhc3QgPSBQYXJzZVRvQVNUKFN0cmlwTWV0YUNvbW1lbnRz
KHNyY190ZXh0KSkKKyAgb3V0cHV0ID0gT3V0cHV0KCkKKyAgUnVuQ29kZShFbnYoKSwgYXN0LCBv
dXRwdXQpCisgIHJldHVybiBCZWF1dGlmeUNvZGUob3V0cHV0LnN0cmluZykKKworCiBkZWYgbWFp
bihhcmd2KToKICAgaWYgbGVuKGFyZ3YpID09IDE6CiAgICAgcHJpbnQgX19kb2NfXwogICAgIHN5
cy5leGl0KDEpCiAKICAgZmlsZV9wYXRoID0gYXJndlstMV0KLSAgYXN0ID0gQ29udmVydChmaWxl
X3BhdGgpCi0gIG91dHB1dCA9IE91dHB1dCgpCi0gIFJ1bkNvZGUoRW52KCksIGFzdCwgb3V0cHV0
KQotICBvdXRwdXRfc3RyID0gQmVhdXRpZnlDb2RlKG91dHB1dC5zdHJpbmcpCisgIG91dHB1dF9z
dHIgPSBDb252ZXJ0RnJvbVB1bXBTb3VyY2UoZmlsZShmaWxlX3BhdGgsICdyJykucmVhZCgpKQog
ICBpZiBmaWxlX3BhdGguZW5kc3dpdGgoJy5wdW1wJyk6CiAgICAgb3V0cHV0X2ZpbGVfcGF0aCA9
IGZpbGVfcGF0aFs6LTVdCiAgIGVsc2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zY3JpcHRzL3JlbGVhc2VfZG9jcy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nj
cmlwdHMvcmVsZWFzZV9kb2NzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyOTEzNDdmNjc0YWZkN2FmODQ5NjE1
YTc1YjEzOGQ1MjkzZjljZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zY3JpcHRzL3JlbGVhc2VfZG9jcy5weQpAQCAtMCwwICsxLDE1OCBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDEzIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJTY3JpcHQgZm9yIGJyYW5jaGluZyBH
b29nbGUgVGVzdC9Nb2NrIHdpa2kgcGFnZXMgZm9yIGEgbmV3IHZlcnNpb24uCisKK1NZTk9QU0lT
CisgICAgICAgcmVsZWFzZV9kb2NzLnB5IE5FV19SRUxFQVNFX1ZFUlNJT04KKworICAgICAgIEdv
b2dsZSBUZXN0IGFuZCBHb29nbGUgTW9jaydzIGV4dGVybmFsIHVzZXIgZG9jdW1lbnRhdGlvbiBp
cyBpbgorICAgICAgIGludGVybGlua2VkIHdpa2kgZmlsZXMuICBXaGVuIHdlIHJlbGVhc2UgYSBu
ZXcgdmVyc2lvbiBvZgorICAgICAgIEdvb2dsZSBUZXN0IG9yIEdvb2dsZSBNb2NrLCB3ZSBuZWVk
IHRvIGJyYW5jaCB0aGUgd2lraSBmaWxlcworICAgICAgIHN1Y2ggdGhhdCB1c2VycyBvZiBhIHNw
ZWNpZmljIHZlcnNpb24gb2YgR29vZ2xlIFRlc3QvTW9jayBjYW4KKyAgICAgICBsb29rIHVwIGRv
Y3VtZW5hdGlvbiByZWxldmFudCBmb3IgdGhhdCB2ZXJzaW9uLiAgVGhpcyBzY3JpcHQKKyAgICAg
ICBhdXRvbWF0ZXMgdGhhdCBwcm9jZXNzIGJ5OgorCisgICAgICAgICAtIGJyYW5jaGluZyB0aGUg
Y3VycmVudCB3aWtpIHBhZ2VzICh3aGljaCBkb2N1bWVudCB0aGUKKyAgICAgICAgICAgYmVoYXZp
b3Igb2YgdGhlIFNWTiB0cnVuayBoZWFkKSB0byBwYWdlcyBmb3IgdGhlIHNwZWNpZmllZAorICAg
ICAgICAgICB2ZXJzaW9uIChlLmcuIGJyYW5jaGluZyBGQVEud2lraSB0byBWMl82X0ZBUS53aWtp
IHdoZW4KKyAgICAgICAgICAgTkVXX1JFTEVBU0VfVkVSU0lPTiBpcyAyLjYpOworICAgICAgICAg
LSB1cGRhdGluZyB0aGUgbGlua3MgaW4gdGhlIGJyYW5jaGVkIGZpbGVzIHRvIHBvaW50IHRvIHRo
ZSBicmFuY2hlZAorICAgICAgICAgICB2ZXJzaW9uIChlLmcuIGEgbGluayBpbiBWMl82X0ZBUS53
aWtpIHRoYXQgcG9pbnRlZCB0bworICAgICAgICAgICBQcmltZXIud2lraSNBbmNob3Igd2lsbCBu
b3cgcG9pbnQgdG8gVjJfNl9QcmltZXIud2lraSNBbmNob3IpLgorCisgICAgICAgTk9URTogTkVX
X1JFTEVBU0VfVkVSU0lPTiBtdXN0IGJlIGEgTkVXIHZlcnNpb24gbnVtYmVyIGZvcgorICAgICAg
IHdoaWNoIHRoZSB3aWtpIHBhZ2VzIGRvbid0IHlldCBleGlzdDsgb3RoZXJ3aXNlIHlvdSdsbCBn
ZXQgU1ZOCisgICAgICAgZXJyb3JzIGxpa2UgInN2bjogUGF0aCAnVjFfN19QdW1wTWFudWFsLndp
a2knIGlzIG5vdCBhCisgICAgICAgZGlyZWN0b3J5IiB3aGVuIHJ1bm5pbmcgdGhlIHNjcmlwdC4K
KworRVhBTVBMRQorICAgICAgICQgY2QgUEFUSC9UTy9HVEVTVF9TVk5fV09SS1NQQUNFL3RydW5r
CisgICAgICAgJCBzY3JpcHRzL3JlbGVhc2VfZG9jcy5weSAyLjYgICMgY3JlYXRlIHdpa2kgcGFn
ZXMgZm9yIHYyLjYKKyAgICAgICAkIHN2biBzdGF0dXMgICAgICAgICAgICAgICAgICAgIyB2ZXJp
ZnkgdGhlIGZpbGUgbGlzdAorICAgICAgICQgc3ZuIGRpZmYgICAgICAgICAgICAgICAgICAgICAj
IHZlcmlmeSB0aGUgZmlsZSBjb250ZW50cworICAgICAgICQgc3ZuIGNvbW1pdCAtbSAicmVsZWFz
ZSB3aWtpIHBhZ2VzIGZvciB2Mi42IgorIiIiCisKK19fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbiknCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCisK
K2ltcG9ydCBjb21tb24KKworCisjIFdpa2kgcGFnZXMgdGhhdCBzaG91bGRuJ3QgYmUgYnJhbmNo
ZWQgZm9yIGV2ZXJ5IGd0ZXN0L2dtb2NrIHJlbGVhc2UuCitHVEVTVF9VTlZFUlNJT05FRF9XSUtJ
UyA9IFsnRGV2R3VpZGUud2lraSddCitHTU9DS19VTlZFUlNJT05FRF9XSUtJUyA9IFsKKyAgICAn
RGVzaWduRG9jLndpa2knLAorICAgICdEZXZHdWlkZS53aWtpJywKKyAgICAnS25vd25Jc3N1ZXMu
d2lraScKKyAgICBdCisKKworZGVmIERyb3BXaWtpU3VmZml4KHdpa2lfZmlsZW5hbWUpOgorICAi
IiJSZW1vdmVzIHRoZSAud2lraSBzdWZmaXggKGlmIGFueSkgZnJvbSB0aGUgZ2l2ZW4gZmlsZW5h
bWUuIiIiCisKKyAgcmV0dXJuICh3aWtpX2ZpbGVuYW1lWzotbGVuKCcud2lraScpXSBpZiB3aWtp
X2ZpbGVuYW1lLmVuZHN3aXRoKCcud2lraScpCisgICAgICAgICAgZWxzZSB3aWtpX2ZpbGVuYW1l
KQorCisKK2NsYXNzIFdpa2lCcmFuY2hlcihvYmplY3QpOgorICAiIiJCcmFuY2hlcyAuLi4iIiIK
KworICBkZWYgX19pbml0X18oc2VsZiwgZG90X3ZlcnNpb24pOgorICAgIHNlbGYucHJvamVjdCwg
c3ZuX3Jvb3RfcGF0aCA9IGNvbW1vbi5HZXRTdm5JbmZvKCkKKyAgICBpZiBzZWxmLnByb2plY3Qg
bm90IGluICgnZ29vZ2xldGVzdCcsICdnb29nbGVtb2NrJyk6CisgICAgICBzeXMuZXhpdCgnVGhp
cyBzY3JpcHQgbXVzdCBiZSBydW4gaW4gYSBndGVzdCBvciBnbW9jayBTVk4gd29ya3NwYWNlLicp
CisgICAgc2VsZi53aWtpX2RpciA9IHN2bl9yb290X3BhdGggKyAnL3dpa2knCisgICAgIyBUdXJu
ICcyLjYnIHRvICdWMl82XycuCisgICAgc2VsZi52ZXJzaW9uX3ByZWZpeCA9ICdWJyArIGRvdF92
ZXJzaW9uLnJlcGxhY2UoJy4nLCAnXycpICsgJ18nCisgICAgc2VsZi5maWxlc190b19icmFuY2gg
PSBzZWxmLkdldEZpbGVzVG9CcmFuY2goKQorICAgIHBhZ2VfbmFtZXMgPSBbRHJvcFdpa2lTdWZm
aXgoZikgZm9yIGYgaW4gc2VsZi5maWxlc190b19icmFuY2hdCisgICAgIyBBIGxpbmsgdG8gRm9v
Lndpa2kgaXMgaW4gb25lIG9mIHRoZSBmb2xsb3dpbmcgZm9ybXM6CisgICAgIyAgIFtGb28gd29y
ZHNdCisgICAgIyAgIFtGb28jQW5jaG9yIHdvcmRzXQorICAgICMgICBbaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS8uLi4vd2lraS9Gb28gd29yZHNdCisgICAgIyAgIFtodHRwOi8vY29kZS5nb29nbGUu
Y29tLy4uLi93aWtpL0ZvbyNBbmNob3Igd29yZHNdCisgICAgIyBXZSB3YW50IHRvIHJlcGxhY2Ug
J0Zvbycgd2l0aCAnVjJfNl9Gb28nIGluIHRoZSBhYm92ZSBjYXNlcy4KKyAgICBzZWxmLnNlYXJj
aF9mb3JfcmUgPSByZS5jb21waWxlKAorICAgICAgICAjIFRoaXMgcmVnZXggbWF0Y2hlcyBlaXRo
ZXIKKyAgICAgICAgIyAgIFtGb28KKyAgICAgICAgIyBvcgorICAgICAgICAjICAgL3dpa2kvRm9v
CisgICAgICAgICMgZm9sbG93ZWQgYnkgYSBzcGFjZSBvciBhICMsIHdoZXJlIEZvbyBpcyB0aGUg
bmFtZSBvZiBhbgorICAgICAgICAjIHVudmVyc2lvbmVkIHdpa2kgcGFnZS4KKyAgICAgICAgcico
XFt8L3dpa2kvKSglcykoWyAjXSknICUgJ3wnLmpvaW4ocGFnZV9uYW1lcykpCisgICAgc2VsZi5y
ZXBsYWNlX3dpdGggPSByJ1wxJXNcMlwzJyAlIChzZWxmLnZlcnNpb25fcHJlZml4LCkKKworICBk
ZWYgR2V0RmlsZXNUb0JyYW5jaChzZWxmKToKKyAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiAud2lr
aSBmaWxlIG5hbWVzIHRoYXQgbmVlZCB0byBiZSBicmFuY2hlZC4iIiIKKworICAgIHVudmVyc2lv
bmVkX3dpa2lzID0gKEdURVNUX1VOVkVSU0lPTkVEX1dJS0lTIGlmIHNlbGYucHJvamVjdCA9PSAn
Z29vZ2xldGVzdCcKKyAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEdNT0NLX1VOVkVSU0lP
TkVEX1dJS0lTKQorICAgIHJldHVybiBbZiBmb3IgZiBpbiBvcy5saXN0ZGlyKHNlbGYud2lraV9k
aXIpCisgICAgICAgICAgICBpZiAoZi5lbmRzd2l0aCgnLndpa2knKSBhbmQKKyAgICAgICAgICAg
ICAgICBub3QgcmUubWF0Y2gocideVlxkJywgZikgYW5kICAjIEV4Y2x1ZGVkIHZlcnNpb25lZCAu
d2lraSBmaWxlcy4KKyAgICAgICAgICAgICAgICBmIG5vdCBpbiB1bnZlcnNpb25lZF93aWtpcyld
CisKKyAgZGVmIEJyYW5jaEZpbGVzKHNlbGYpOgorICAgICIiIkJyYW5jaGVzIHRoZSAud2lraSBm
aWxlcyBuZWVkZWQgdG8gYmUgYnJhbmNoZWQuIiIiCisKKyAgICBwcmludCAnQnJhbmNoaW5nICVk
IC53aWtpIGZpbGVzOicgJSAobGVuKHNlbGYuZmlsZXNfdG9fYnJhbmNoKSwpCisgICAgb3MuY2hk
aXIoc2VsZi53aWtpX2RpcikKKyAgICBmb3IgZiBpbiBzZWxmLmZpbGVzX3RvX2JyYW5jaDoKKyAg
ICAgIGNvbW1hbmQgPSAnc3ZuIGNwICVzICVzJXMnICUgKGYsIHNlbGYudmVyc2lvbl9wcmVmaXgs
IGYpCisgICAgICBwcmludCBjb21tYW5kCisgICAgICBvcy5zeXN0ZW0oY29tbWFuZCkKKworICBk
ZWYgVXBkYXRlTGlua3NJbkJyYW5jaGVkRmlsZXMoc2VsZik6CisKKyAgICBmb3IgZiBpbiBzZWxm
LmZpbGVzX3RvX2JyYW5jaDoKKyAgICAgIHNvdXJjZV9maWxlID0gb3MucGF0aC5qb2luKHNlbGYu
d2lraV9kaXIsIGYpCisgICAgICB2ZXJzaW9uZWRfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndp
a2lfZGlyLCBzZWxmLnZlcnNpb25fcHJlZml4ICsgZikKKyAgICAgIHByaW50ICdVcGRhdGluZyBs
aW5rcyBpbiAlcy4nICUgKHZlcnNpb25lZF9maWxlLCkKKyAgICAgIHRleHQgPSBmaWxlKHNvdXJj
ZV9maWxlLCAncicpLnJlYWQoKQorICAgICAgbmV3X3RleHQgPSBzZWxmLnNlYXJjaF9mb3JfcmUu
c3ViKHNlbGYucmVwbGFjZV93aXRoLCB0ZXh0KQorICAgICAgZmlsZSh2ZXJzaW9uZWRfZmlsZSwg
J3cnKS53cml0ZShuZXdfdGV4dCkKKworCitkZWYgbWFpbigpOgorICBpZiBsZW4oc3lzLmFyZ3Yp
ICE9IDI6CisgICAgc3lzLmV4aXQoX19kb2NfXykKKworICBicmFuY2hlciA9IFdpa2lCcmFuY2hl
cihzeXMuYXJndlsxXSkKKyAgYnJhbmNoZXIuQnJhbmNoRmlsZXMoKQorICBicmFuY2hlci5VcGRh
dGVMaW5rc0luQnJhbmNoZWRGaWxlcygpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
KyAgbWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3Rl
c3QvTWFrZWZpbGUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3Rlc3QvTWFrZWZp
bGUKaW5kZXggZmZjMGM5MGFkOTk1NzJkZjk0YWZiNWI2NDEzNmE5YzI5NDg4YWUwNi4uY2RmZjU4
NDYzN2I3YTZlOWRmMWZhNDNjZThmNTg4YzQzODE1ZTU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy90ZXN0L01ha2VmaWxlCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3NjcmlwdHMvdGVzdC9NYWtlZmlsZQpAQCAtMjEsNyArMjEsOSBAQCBTQU1QTEVf
RElSID0gLi4vLi4vc2FtcGxlcwogR1RFU1RfTUFJTl9DQyA9IC4uLy4uL3NyYy9ndGVzdF9tYWlu
LmNjCiAKICMgRmxhZ3MgcGFzc2VkIHRvIHRoZSBwcmVwcm9jZXNzb3IuCi1DUFBGTEFHUyArPSAt
SSQoRlVTRURfR1RFU1RfRElSKQorIyBXZSBoYXZlIG5vIGlkZWEgaGVyZSB3aGV0aGVyIHB0aHJl
YWRzIGlzIGF2YWlsYWJsZSBpbiB0aGUgc3lzdGVtLCBzbworIyBkaXNhYmxlIGl0cyB1c2UuCitD
UFBGTEFHUyArPSAtSSQoRlVTRURfR1RFU1RfRElSKSAtREdURVNUX0hBU19QVEhSRUFEPTAKIAog
IyBGbGFncyBwYXNzZWQgdG8gdGhlIEMrKyBjb21waWxlci4KIENYWEZMQUdTICs9IC1nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtYWxsLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWFsbC5jYwppbmRleCBmZTM0NzY1ZmI2NzIxOGE1
NmNiNWUyNTJhNzBlNjhhMzZiYzg4ZDA3Li4wYTljZWU1MjIzMzMyOGIxYmFmZGM0YmM0MDI2OTlm
YTE0MDM4ZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3Qt
YWxsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1hbGwuY2MKQEAg
LTM2LDEyICszNiwxMyBAQAogCiAvLyBUaGlzIGxpbmUgZW5zdXJlcyB0aGF0IGd0ZXN0LmggY2Fu
IGJlIGNvbXBpbGVkIG9uIGl0cyBvd24sIGV2ZW4KIC8vIHdoZW4gaXQncyBmdXNlZC4KLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIC8vIFRoZSBm
b2xsb3dpbmcgbGluZXMgcHVsbCBpbiB0aGUgcmVhbCBndGVzdCAqLmNjIGZpbGVzLgogI2luY2x1
ZGUgInNyYy9ndGVzdC5jYyIKICNpbmNsdWRlICJzcmMvZ3Rlc3QtZGVhdGgtdGVzdC5jYyIKICNp
bmNsdWRlICJzcmMvZ3Rlc3QtZmlsZXBhdGguY2MiCiAjaW5jbHVkZSAic3JjL2d0ZXN0LXBvcnQu
Y2MiCisjaW5jbHVkZSAic3JjL2d0ZXN0LXByaW50ZXJzLmNjIgogI2luY2x1ZGUgInNyYy9ndGVz
dC10ZXN0LXBhcnQuY2MiCiAjaW5jbHVkZSAic3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtZGVhdGgtdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1kZWF0aC10ZXN0LmNjCmluZGV4IDBj
Zjc4MjViY2FjNzlmYTM1ZDBhMTI0OGUyMzA4YTI0YWE2MjdiOGEuLmEwMWEzNjk4MzA4NzgyODIx
ZTRmOTBmNDEyODUxMjhiNzVjOGUzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NyYy9ndGVzdC1kZWF0aC10ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NyYy9ndGVzdC1kZWF0aC10ZXN0LmNjCkBAIC0zMSwzNyArMzEsNDcgQEAKIC8vCiAvLyBUaGlz
IGZpbGUgaW1wbGVtZW50cyBkZWF0aCB0ZXN0cy4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LWRl
YXRoLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFs
L2d0ZXN0LXBvcnQuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QuaCIK
IAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCiAKLSNpZiBHVEVTVF9PU19NQUMKLSNpbmNsdWRl
IDxjcnRfZXh0ZXJucy5oPgotI2VuZGlmICAvLyBHVEVTVF9PU19NQUMKKyMgaWYgR1RFU1RfT1Nf
TUFDCisjICBpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgorIyBlbmRpZiAgLy8gR1RFU1RfT1NfTUFD
CiAKLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8bGlt
aXRzLmg+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+CisjIGluY2x1ZGUgPGVycm5vLmg+CisjIGluY2x1
ZGUgPGZjbnRsLmg+CisjIGluY2x1ZGUgPGxpbWl0cy5oPgogCi0jaWYgR1RFU1RfT1NfV0lORE9X
UwotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbHNlCi0jaW5jbHVkZSA8c3lzL21tYW4uaD4KLSNp
bmNsdWRlIDxzeXMvd2FpdC5oPgotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdU
RVNUX09TX0xJTlVYCisjICBpbmNsdWRlIDxzaWduYWwuaD4KKyMgZW5kaWYgIC8vIEdURVNUX09T
X0xJTlVYCisKKyMgaW5jbHVkZSA8c3RkYXJnLmg+CisKKyMgaWYgR1RFU1RfT1NfV0lORE9XUwor
IyAgaW5jbHVkZSA8d2luZG93cy5oPgorIyBlbHNlCisjICBpbmNsdWRlIDxzeXMvbW1hbi5oPgor
IyAgaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKwor
IyBpZiBHVEVTVF9PU19RTlgKKyMgIGluY2x1ZGUgPHNwYXduLmg+CisjIGVuZGlmICAvLyBHVEVT
VF9PU19RTlgKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0
cmluZy5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCIKKyNpbmNsdWRlICJndGVz
dC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKIAogLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFu
c2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwogLy8gaW1wbGVtZW50YXRpb24u
ICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRl
ZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwot
Ly8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVy
bmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KKy8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJl
IGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGV4aXN0cyB0bworLy8gcHJldmVudCB0aGUg
YWNjaWRlbnRhbCBpbmNsdXNpb24gb2YgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4gdGhlCisvLyB1
c2VyJ3MgY29kZS4KICNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKICNpbmNsdWRlICJz
cmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCiAjdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCkBA
IC0xMDAsMzYgKzExMCw3OSBAQCBHVEVTVF9ERUZJTkVfc3RyaW5nXygKICAgICAiSW5kaWNhdGVz
IHRoZSBmaWxlLCBsaW5lIG51bWJlciwgdGVtcG9yYWwgaW5kZXggb2YgIgogICAgICJ0aGUgc2lu
Z2xlIGRlYXRoIHRlc3QgdG8gcnVuLCBhbmQgYSBmaWxlIGRlc2NyaXB0b3IgdG8gIgogICAgICJ3
aGljaCBhIHN1Y2Nlc3MgY29kZSBtYXkgYmUgc2VudCwgYWxsIHNlcGFyYXRlZCBieSAiCi0gICAg
ImNvbG9ucy4gIFRoaXMgZmxhZyBpcyBzcGVjaWZpZWQgaWYgYW5kIG9ubHkgaWYgdGhlIGN1cnJl
bnQgIgorICAgICJ0aGUgJ3wnIGNoYXJhY3RlcnMuICBUaGlzIGZsYWcgaXMgc3BlY2lmaWVkIGlm
IGFuZCBvbmx5IGlmIHRoZSBjdXJyZW50ICIKICAgICAicHJvY2VzcyBpcyBhIHN1Yi1wcm9jZXNz
IGxhdW5jaGVkIGZvciBydW5uaW5nIGEgdGhyZWFkLXNhZmUgIgogICAgICJkZWF0aCB0ZXN0LiAg
Rk9SIElOVEVSTkFMIFVTRSBPTkxZLiIpOwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiAKICNp
ZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBWYWxp
ZCBvbmx5IGZvciBmYXN0IGRlYXRoIHRlc3RzLiBJbmRpY2F0ZXMgdGhlIGNvZGUgaXMgcnVubmlu
ZyBpbiB0aGUKKy8vIGNoaWxkIHByb2Nlc3Mgb2YgYSBmYXN0IHN0eWxlIGRlYXRoIHRlc3QuCisj
IGlmICFHVEVTVF9PU19XSU5ET1dTCitzdGF0aWMgYm9vbCBnX2luX2Zhc3RfZGVhdGhfdGVzdF9j
aGlsZCA9IGZhbHNlOworIyBlbmRpZgorCisvLyBSZXR1cm5zIGEgQm9vbGVhbiB2YWx1ZSBpbmRp
Y2F0aW5nIHdoZXRoZXIgdGhlIGNhbGxlciBpcyBjdXJyZW50bHkKKy8vIGV4ZWN1dGluZyBpbiB0
aGUgY29udGV4dCBvZiB0aGUgZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzLiAgVG9vbHMgc3VjaCBh
cworLy8gVmFsZ3JpbmQgaGVhcCBjaGVja2VycyBtYXkgbmVlZCB0aGlzIHRvIG1vZGlmeSB0aGVp
ciBiZWhhdmlvciBpbiBkZWF0aAorLy8gdGVzdHMuICBJTVBPUlRBTlQ6IFRoaXMgaXMgYW4gaW50
ZXJuYWwgdXRpbGl0eS4gIFVzaW5nIGl0IG1heSBicmVhayB0aGUKKy8vIGltcGxlbWVudGF0aW9u
IG9mIGRlYXRoIHRlc3RzLiAgVXNlciBjb2RlIE1VU1QgTk9UIHVzZSBpdC4KK2Jvb2wgSW5EZWF0
aFRlc3RDaGlsZCgpIHsKKyMgaWYgR1RFU1RfT1NfV0lORE9XUworCisgIC8vIE9uIFdpbmRvd3Ms
IGRlYXRoIHRlc3RzIGFyZSB0aHJlYWQtc2FmZSByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiB0
aGUKKyAgLy8gZGVhdGhfdGVzdF9zdHlsZSBmbGFnLgorICByZXR1cm4gIUdURVNUX0ZMQUcoaW50
ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpLmVtcHR5KCk7CisKKyMgZWxzZQorCisgIGlmIChHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZlIikKKyAgICByZXR1cm4gIUdURVNU
X0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpLmVtcHR5KCk7CisgIGVsc2UKKyAgICByZXR1
cm4gZ19pbl9mYXN0X2RlYXRoX3Rlc3RfY2hpbGQ7CisjZW5kaWYKK30KKworfSAgLy8gbmFtZXNw
YWNlIGludGVybmFsCisKIC8vIEV4aXRlZFdpdGhDb2RlIGNvbnN0cnVjdG9yLgogRXhpdGVkV2l0
aENvZGU6OkV4aXRlZFdpdGhDb2RlKGludCBleGl0X2NvZGUpIDogZXhpdF9jb2RlXyhleGl0X2Nv
ZGUpIHsKIH0KIAogLy8gRXhpdGVkV2l0aENvZGUgZnVuY3Rpb24tY2FsbCBvcGVyYXRvci4KIGJv
b2wgRXhpdGVkV2l0aENvZGU6Om9wZXJhdG9yKCkoaW50IGV4aXRfc3RhdHVzKSBjb25zdCB7Ci0j
aWYgR1RFU1RfT1NfV0lORE9XUworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisKICAgcmV0dXJuIGV4
aXRfc3RhdHVzID09IGV4aXRfY29kZV87Ci0jZWxzZQorCisjIGVsc2UKKwogICByZXR1cm4gV0lG
RVhJVEVEKGV4aXRfc3RhdHVzKSAmJiBXRVhJVFNUQVRVUyhleGl0X3N0YXR1cykgPT0gZXhpdF9j
b2RlXzsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjIGVuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCiB9CiAKLSNpZiAhR1RFU1RfT1NfV0lORE9XUworIyBpZiAhR1RFU1RfT1NfV0lO
RE9XUwogLy8gS2lsbGVkQnlTaWduYWwgY29uc3RydWN0b3IuCiBLaWxsZWRCeVNpZ25hbDo6S2ls
bGVkQnlTaWduYWwoaW50IHNpZ251bSkgOiBzaWdudW1fKHNpZ251bSkgewogfQogCiAvLyBLaWxs
ZWRCeVNpZ25hbCBmdW5jdGlvbi1jYWxsIG9wZXJhdG9yLgogYm9vbCBLaWxsZWRCeVNpZ25hbDo6
b3BlcmF0b3IoKShpbnQgZXhpdF9zdGF0dXMpIGNvbnN0IHsKKyMgIGlmIGRlZmluZWQoR1RFU1Rf
S0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8pCisgIHsKKyAgICBib29sIHJlc3VsdDsKKyAgICBp
ZiAoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8oc2lnbnVtXywgZXhpdF9zdGF0dXMs
ICZyZXN1bHQpKSB7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgfQorIyAgZW5kaWYg
IC8vIGRlZmluZWQoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8pCiAgIHJldHVybiBX
SUZTSUdOQUxFRChleGl0X3N0YXR1cykgJiYgV1RFUk1TSUcoZXhpdF9zdGF0dXMpID09IHNpZ251
bV87CiB9Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyAhR1RFU1Rf
T1NfV0lORE9XUwogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCkBAIC0xMzcsMjIgKzE5MCwyNyBA
QCBuYW1lc3BhY2UgaW50ZXJuYWwgewogCiAvLyBHZW5lcmF0ZXMgYSB0ZXh0dWFsIGRlc2NyaXB0
aW9uIG9mIGEgZ2l2ZW4gZXhpdCBjb2RlLCBpbiB0aGUgZm9ybWF0CiAvLyBzcGVjaWZpZWQgYnkg
d2FpdCgyKS4KLXN0YXRpYyBTdHJpbmcgRXhpdFN1bW1hcnkoaW50IGV4aXRfY29kZSkgeworc3Rh
dGljIHN0ZDo6c3RyaW5nIEV4aXRTdW1tYXJ5KGludCBleGl0X2NvZGUpIHsKICAgTWVzc2FnZSBt
OwotI2lmIEdURVNUX09TX1dJTkRPV1MKKworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisKICAgbSA8
PCAiRXhpdGVkIHdpdGggZXhpdCBzdGF0dXMgIiA8PCBleGl0X2NvZGU7Ci0jZWxzZQorCisjIGVs
c2UKKwogICBpZiAoV0lGRVhJVEVEKGV4aXRfY29kZSkpIHsKICAgICBtIDw8ICJFeGl0ZWQgd2l0
aCBleGl0IHN0YXR1cyAiIDw8IFdFWElUU1RBVFVTKGV4aXRfY29kZSk7CiAgIH0gZWxzZSBpZiAo
V0lGU0lHTkFMRUQoZXhpdF9jb2RlKSkgewogICAgIG0gPDwgIlRlcm1pbmF0ZWQgYnkgc2lnbmFs
ICIgPDwgV1RFUk1TSUcoZXhpdF9jb2RlKTsKICAgfQotI2lmZGVmIFdDT1JFRFVNUAorIyAgaWZk
ZWYgV0NPUkVEVU1QCiAgIGlmIChXQ09SRURVTVAoZXhpdF9jb2RlKSkgewogICAgIG0gPDwgIiAo
Y29yZSBkdW1wZWQpIjsKICAgfQotI2VuZGlmCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MK
KyMgIGVuZGlmCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKICAgcmV0dXJuIG0uR2V0
U3RyaW5nKCk7CiB9CiAKQEAgLTE2MiwxMiArMjIwLDEyIEBAIGJvb2wgRXhpdGVkVW5zdWNjZXNz
ZnVsbHkoaW50IGV4aXRfc3RhdHVzKSB7CiAgIHJldHVybiAhRXhpdGVkV2l0aENvZGUoMCkoZXhp
dF9zdGF0dXMpOwogfQogCi0jaWYgIUdURVNUX09TX1dJTkRPV1MKKyMgaWYgIUdURVNUX09TX1dJ
TkRPV1MKIC8vIEdlbmVyYXRlcyBhIHRleHR1YWwgZmFpbHVyZSBtZXNzYWdlIHdoZW4gYSBkZWF0
aCB0ZXN0IGZpbmRzIG1vcmUgdGhhbgogLy8gb25lIHRocmVhZCBydW5uaW5nLCBvciBjYW5ub3Qg
ZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgdGhyZWFkcywgcHJpb3IKIC8vIHRvIGV4ZWN1dGluZyB0
aGUgZ2l2ZW4gc3RhdGVtZW50LiAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZQogLy8g
Y2FsbGVyIG5vdCB0byBwYXNzIGEgdGhyZWFkX2NvdW50IG9mIDEuCi1zdGF0aWMgU3RyaW5nIERl
YXRoVGVzdFRocmVhZFdhcm5pbmcoc2l6ZV90IHRocmVhZF9jb3VudCkgeworc3RhdGljIHN0ZDo6
c3RyaW5nIERlYXRoVGVzdFRocmVhZFdhcm5pbmcoc2l6ZV90IHRocmVhZF9jb3VudCkgewogICBN
ZXNzYWdlIG1zZzsKICAgbXNnIDw8ICJEZWF0aCB0ZXN0cyB1c2UgZm9yaygpLCB3aGljaCBpcyB1
bnNhZmUgcGFydGljdWxhcmx5IgogICAgICAgPDwgIiBpbiBhIHRocmVhZGVkIGNvbnRleHQuIEZv
ciB0aGlzIHRlc3QsICIgPDwgR1RFU1RfTkFNRV8gPDwgIiAiOwpAQCAtMTc3LDI3ICsyMzUsMzEg
QEAgc3RhdGljIFN0cmluZyBEZWF0aFRlc3RUaHJlYWRXYXJuaW5nKHNpemVfdCB0aHJlYWRfY291
bnQpIHsKICAgICBtc2cgPDwgImRldGVjdGVkICIgPDwgdGhyZWFkX2NvdW50IDw8ICIgdGhyZWFk
cy4iOwogICByZXR1cm4gbXNnLkdldFN0cmluZygpOwogfQotI2VuZGlmICAvLyAhR1RFU1RfT1Nf
V0lORE9XUworIyBlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1MKIAogLy8gRmxhZyBjaGFyYWN0
ZXJzIGZvciByZXBvcnRpbmcgYSBkZWF0aCB0ZXN0IHRoYXQgZGlkIG5vdCBkaWUuCiBzdGF0aWMg
Y29uc3QgY2hhciBrRGVhdGhUZXN0TGl2ZWQgPSAnTCc7CiBzdGF0aWMgY29uc3QgY2hhciBrRGVh
dGhUZXN0UmV0dXJuZWQgPSAnUic7CitzdGF0aWMgY29uc3QgY2hhciBrRGVhdGhUZXN0VGhyZXcg
PSAnVCc7CiBzdGF0aWMgY29uc3QgY2hhciBrRGVhdGhUZXN0SW50ZXJuYWxFcnJvciA9ICdJJzsK
IAotLy8gQW4gZW51bWVyYXRpb24gZGVzY3JpYmluZyBhbGwgb2YgdGhlIHBvc3NpYmxlIHdheXMg
dGhhdCBhIGRlYXRoIHRlc3QKLS8vIGNhbiBjb25jbHVkZS4gIERJRUQgbWVhbnMgdGhhdCB0aGUg
cHJvY2VzcyBkaWVkIHdoaWxlIGV4ZWN1dGluZyB0aGUKLS8vIHRlc3QgY29kZTsgTElWRUQgbWVh
bnMgdGhhdCBwcm9jZXNzIGxpdmVkIGJleW9uZCB0aGUgZW5kIG9mIHRoZSB0ZXN0Ci0vLyBjb2Rl
OyBhbmQgUkVUVVJORUQgbWVhbnMgdGhhdCB0aGUgdGVzdCBzdGF0ZW1lbnQgYXR0ZW1wdGVkIGEg
InJldHVybiwiCi0vLyB3aGljaCBpcyBub3QgYWxsb3dlZC4gIElOX1BST0dSRVNTIG1lYW5zIHRo
ZSB0ZXN0IGhhcyBub3QgeWV0Ci0vLyBjb25jbHVkZWQuCi1lbnVtIERlYXRoVGVzdE91dGNvbWUg
eyBJTl9QUk9HUkVTUywgRElFRCwgTElWRUQsIFJFVFVSTkVEIH07CisvLyBBbiBlbnVtZXJhdGlv
biBkZXNjcmliaW5nIGFsbCBvZiB0aGUgcG9zc2libGUgd2F5cyB0aGF0IGEgZGVhdGggdGVzdCBj
YW4KKy8vIGNvbmNsdWRlLiAgRElFRCBtZWFucyB0aGF0IHRoZSBwcm9jZXNzIGRpZWQgd2hpbGUg
ZXhlY3V0aW5nIHRoZSB0ZXN0CisvLyBjb2RlOyBMSVZFRCBtZWFucyB0aGF0IHByb2Nlc3MgbGl2
ZWQgYmV5b25kIHRoZSBlbmQgb2YgdGhlIHRlc3QgY29kZTsKKy8vIFJFVFVSTkVEIG1lYW5zIHRo
YXQgdGhlIHRlc3Qgc3RhdGVtZW50IGF0dGVtcHRlZCB0byBleGVjdXRlIGEgcmV0dXJuCisvLyBz
dGF0ZW1lbnQsIHdoaWNoIGlzIG5vdCBhbGxvd2VkOyBUSFJFVyBtZWFucyB0aGF0IHRoZSB0ZXN0
IHN0YXRlbWVudAorLy8gcmV0dXJuZWQgY29udHJvbCBieSB0aHJvd2luZyBhbiBleGNlcHRpb24u
ICBJTl9QUk9HUkVTUyBtZWFucyB0aGUgdGVzdAorLy8gaGFzIG5vdCB5ZXQgY29uY2x1ZGVkLgor
Ly8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogVW5pZnkgbmFtZXMgYW5kIHBvc3NpYmx5IHZhbHVl
cyBmb3IKKy8vIEFib3J0UmVhc29uLCBEZWF0aFRlc3RPdXRjb21lLCBhbmQgZmxhZyBjaGFyYWN0
ZXJzIGFib3ZlLgorZW51bSBEZWF0aFRlc3RPdXRjb21lIHsgSU5fUFJPR1JFU1MsIERJRUQsIExJ
VkVELCBSRVRVUk5FRCwgVEhSRVcgfTsKIAogLy8gUm91dGluZSBmb3IgYWJvcnRpbmcgdGhlIHBy
b2dyYW0gd2hpY2ggaXMgc2FmZSB0byBjYWxsIGZyb20gYW4KIC8vIGV4ZWMtc3R5bGUgZGVhdGgg
dGVzdCBjaGlsZCBwcm9jZXNzLCBpbiB3aGljaCBjYXNlIHRoZSBlcnJvcgogLy8gbWVzc2FnZSBp
cyBwcm9wYWdhdGVkIGJhY2sgdG8gdGhlIHBhcmVudCBwcm9jZXNzLiAgT3RoZXJ3aXNlLCB0aGUK
IC8vIG1lc3NhZ2UgaXMgc2ltcGx5IHByaW50ZWQgdG8gc3RkZXJyLiAgSW4gZWl0aGVyIGNhc2Us
IHRoZSBwcm9ncmFtCiAvLyB0aGVuIGV4aXRzIHdpdGggc3RhdHVzIDEuCi12b2lkIERlYXRoVGVz
dEFib3J0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewordm9pZCBEZWF0aFRlc3RBYm9ydChjb25z
dCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgewogICAvLyBPbiBhIFBPU0lYIHN5c3RlbSwgdGhpcyBm
dW5jdGlvbiBtYXkgYmUgY2FsbGVkIGZyb20gYSB0aHJlYWRzYWZlLXN0eWxlCiAgIC8vIGRlYXRo
IHRlc3QgY2hpbGQgcHJvY2Vzcywgd2hpY2ggb3BlcmF0ZXMgb24gYSB2ZXJ5IHNtYWxsIHN0YWNr
LiAgVXNlCiAgIC8vIHRoZSBoZWFwIGZvciBhbnkgYWRkaXRpb25hbCBub24tbWludXNjdWxlIG1l
bW9yeSByZXF1aXJlbWVudHMuCkBAIC0yMTIsMTggKzI3NCwxOSBAQCB2b2lkIERlYXRoVGVzdEFi
b3J0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewogICB9IGVsc2UgewogICAgIGZwcmludGYoc3Rk
ZXJyLCAiJXMiLCBtZXNzYWdlLmNfc3RyKCkpOwogICAgIGZmbHVzaChzdGRlcnIpOwotICAgIGFi
b3J0KCk7CisgICAgcG9zaXg6OkFib3J0KCk7CiAgIH0KIH0KIAogLy8gQSByZXBsYWNlbWVudCBm
b3IgQ0hFQ0sgdGhhdCBjYWxscyBEZWF0aFRlc3RBYm9ydCBpZiB0aGUgYXNzZXJ0aW9uCiAvLyBm
YWlscy4KLSNkZWZpbmUgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oZXhwcmVzc2lvbikgXAorIyBk
ZWZpbmUgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oZXhwcmVzc2lvbikgXAogICBkbyB7IFwKICAg
ICBpZiAoITo6dGVzdGluZzo6aW50ZXJuYWw6OklzVHJ1ZShleHByZXNzaW9uKSkgeyBcCi0gICAg
ICBEZWF0aFRlc3RBYm9ydCg6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmc6OkZvcm1hdCggXAot
ICAgICAgICAgICJDSEVDSyBmYWlsZWQ6IEZpbGUgJXMsIGxpbmUgJWQ6ICVzIiwgXAotICAgICAg
ICAgIF9fRklMRV9fLCBfX0xJTkVfXywgI2V4cHJlc3Npb24pKTsgXAorICAgICAgRGVhdGhUZXN0
QWJvcnQoIFwKKyAgICAgICAgICA6OnN0ZDo6c3RyaW5nKCJDSEVDSyBmYWlsZWQ6IEZpbGUgIikg
KyBfX0ZJTEVfXyArICAiLCBsaW5lICIgXAorICAgICAgICAgICsgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6U3RyZWFtYWJsZVRvU3RyaW5nKF9fTElORV9fKSArICI6ICIgXAorICAgICAgICAgICsgI2V4
cHJlc3Npb24pOyBcCiAgICAgfSBcCiAgIH0gd2hpbGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFs
d2F5c0ZhbHNlKCkpCiAKQEAgLTIzNCwyMiArMjk3LDIzIEBAIHZvaWQgRGVhdGhUZXN0QWJvcnQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7CiAvLyBldmFsdWF0ZXMgdGhlIGV4cHJlc3Npb24gYXMg
bG9uZyBhcyBpdCBldmFsdWF0ZXMgdG8gLTEgYW5kIHNldHMKIC8vIGVycm5vIHRvIEVJTlRSLiAg
SWYgdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIC0xIGJ1dCBlcnJubyBpcwogLy8gc29tZXRo
aW5nIG90aGVyIHRoYW4gRUlOVFIsIERlYXRoVGVzdEFib3J0IGlzIGNhbGxlZC4KLSNkZWZpbmUg
R1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhleHByZXNzaW9uKSBcCisjIGRlZmluZSBH
VEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGV4cHJlc3Npb24pIFwKICAgZG8geyBcCiAg
ICAgaW50IGd0ZXN0X3JldHZhbDsgXAogICAgIGRvIHsgXAogICAgICAgZ3Rlc3RfcmV0dmFsID0g
KGV4cHJlc3Npb24pOyBcCiAgICAgfSB3aGlsZSAoZ3Rlc3RfcmV0dmFsID09IC0xICYmIGVycm5v
ID09IEVJTlRSKTsgXAogICAgIGlmIChndGVzdF9yZXR2YWwgPT0gLTEpIHsgXAotICAgICAgRGVh
dGhUZXN0QWJvcnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOjpGb3JtYXQoIFwKLSAgICAg
ICAgICAiQ0hFQ0sgZmFpbGVkOiBGaWxlICVzLCBsaW5lICVkOiAlcyAhPSAtMSIsIFwKLSAgICAg
ICAgICBfX0ZJTEVfXywgX19MSU5FX18sICNleHByZXNzaW9uKSk7IFwKKyAgICAgIERlYXRoVGVz
dEFib3J0KCBcCisgICAgICAgICAgOjpzdGQ6OnN0cmluZygiQ0hFQ0sgZmFpbGVkOiBGaWxlICIp
ICsgX19GSUxFX18gKyAiLCBsaW5lICIgXAorICAgICAgICAgICsgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6U3RyZWFtYWJsZVRvU3RyaW5nKF9fTElORV9fKSArICI6ICIgXAorICAgICAgICAgICsgI2V4
cHJlc3Npb24gKyAiICE9IC0xIik7IFwKICAgICB9IFwKICAgfSB3aGlsZSAoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6QWx3YXlzRmFsc2UoKSkKIAogLy8gUmV0dXJucyB0aGUgbWVzc2FnZSBkZXNjcmli
aW5nIHRoZSBsYXN0IHN5c3RlbSBlcnJvciBpbiBlcnJuby4KLVN0cmluZyBHZXRMYXN0RXJybm9E
ZXNjcmlwdGlvbigpIHsKLSAgICByZXR1cm4gU3RyaW5nKGVycm5vID09IDAgPyAiIiA6IHBvc2l4
OjpTdHJFcnJvcihlcnJubykpOworc3RkOjpzdHJpbmcgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24o
KSB7CisgICAgcmV0dXJuIGVycm5vID09IDAgPyAiIiA6IHBvc2l4OjpTdHJFcnJvcihlcnJubyk7
CiB9CiAKIC8vIFRoaXMgaXMgY2FsbGVkIGZyb20gYSBkZWF0aCB0ZXN0IHBhcmVudCBwcm9jZXNz
IHRvIHJlYWQgYSBmYWlsdXJlCkBAIC0yOTksMTEgKzM2MywxMSBAQCBjb25zdCBjaGFyKiBEZWF0
aFRlc3Q6Okxhc3RNZXNzYWdlKCkgewogICByZXR1cm4gbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2Vf
LmNfc3RyKCk7CiB9CiAKLXZvaWQgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3Nh
Z2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7Cit2b2lkIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVh
dGhfdGVzdF9tZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7CiAgIGxhc3RfZGVh
dGhfdGVzdF9tZXNzYWdlXyA9IG1lc3NhZ2U7CiB9CiAKLVN0cmluZyBEZWF0aFRlc3Q6Omxhc3Rf
ZGVhdGhfdGVzdF9tZXNzYWdlXzsKK3N0ZDo6c3RyaW5nIERlYXRoVGVzdDo6bGFzdF9kZWF0aF90
ZXN0X21lc3NhZ2VfOwogCiAvLyBQcm92aWRlcyBjcm9zcyBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlv
biBmb3Igc29tZSBkZWF0aCBmdW5jdGlvbmFsaXR5LgogY2xhc3MgRGVhdGhUZXN0SW1wbCA6IHB1
YmxpYyBEZWF0aFRlc3QgewpAQCAtMzg4LDYgKzQ1Miw5IEBAIHZvaWQgRGVhdGhUZXN0SW1wbDo6
UmVhZEFuZEludGVycHJldFN0YXR1c0J5dGUoKSB7CiAgICAgICBjYXNlIGtEZWF0aFRlc3RSZXR1
cm5lZDoKICAgICAgICAgc2V0X291dGNvbWUoUkVUVVJORUQpOwogICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2Uga0RlYXRoVGVzdFRocmV3OgorICAgICAgICBzZXRfb3V0Y29tZShUSFJFVyk7Cisg
ICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBrRGVhdGhUZXN0TGl2ZWQ6CiAgICAgICAgIHNldF9v
dXRjb21lKExJVkVEKTsKICAgICAgICAgYnJlYWs7CkBAIC00MTYsMTkgKzQ4Myw0NiBAQCB2b2lk
IERlYXRoVGVzdEltcGw6OkFib3J0KEFib3J0UmVhc29uIHJlYXNvbikgewogICAvLyBpdCBmaW5k
cyBhbnkgZGF0YSBpbiBvdXIgcGlwZS4gIFNvLCBoZXJlIHdlIHdyaXRlIGEgc2luZ2xlIGZsYWcg
Ynl0ZQogICAvLyB0byB0aGUgcGlwZSwgdGhlbiBleGl0LgogICBjb25zdCBjaGFyIHN0YXR1c19j
aCA9Ci0gICAgICByZWFzb24gPT0gVEVTVF9ESURfTk9UX0RJRSA/IGtEZWF0aFRlc3RMaXZlZCA6
IGtEZWF0aFRlc3RSZXR1cm5lZDsKKyAgICAgIHJlYXNvbiA9PSBURVNUX0RJRF9OT1RfRElFID8g
a0RlYXRoVGVzdExpdmVkIDoKKyAgICAgIHJlYXNvbiA9PSBURVNUX1RIUkVXX0VYQ0VQVElPTiA/
IGtEZWF0aFRlc3RUaHJldyA6IGtEZWF0aFRlc3RSZXR1cm5lZDsKKwogICBHVEVTVF9ERUFUSF9U
RVNUX0NIRUNLX1NZU0NBTExfKHBvc2l4OjpXcml0ZSh3cml0ZV9mZCgpLCAmc3RhdHVzX2NoLCAx
KSk7Ci0gIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8ocG9zaXg6OkNsb3NlKHdyaXRl
X2ZkKCkpKTsKKyAgLy8gV2UgYXJlIGxlYWtpbmcgdGhlIGRlc2NyaXB0b3IgaGVyZSBiZWNhdXNl
IG9uIHNvbWUgcGxhdGZvcm1zIChpLmUuLAorICAvLyB3aGVuIGJ1aWx0IGFzIFdpbmRvd3MgRExM
KSwgZGVzdHJ1Y3RvcnMgb2YgZ2xvYmFsIG9iamVjdHMgd2lsbCBzdGlsbAorICAvLyBydW4gYWZ0
ZXIgY2FsbGluZyBfZXhpdCgpLiBPbiBzdWNoIHN5c3RlbXMsIHdyaXRlX2ZkXyB3aWxsIGJlCisg
IC8vIGluZGlyZWN0bHkgY2xvc2VkIGZyb20gdGhlIGRlc3RydWN0b3Igb2YgVW5pdFRlc3RJbXBs
LCBjYXVzaW5nIGRvdWJsZQorICAvLyBjbG9zZSBpZiBpdCBpcyBhbHNvIGNsb3NlZCBoZXJlLiBP
biBkZWJ1ZyBjb25maWd1cmF0aW9ucywgZG91YmxlIGNsb3NlCisgIC8vIG1heSBhc3NlcnQuIEFz
IHRoZXJlIGFyZSBubyBpbi1wcm9jZXNzIGJ1ZmZlcnMgdG8gZmx1c2ggaGVyZSwgd2UgYXJlCisg
IC8vIHJlbHlpbmcgb24gdGhlIE9TIHRvIGNsb3NlIHRoZSBkZXNjcmlwdG9yIGFmdGVyIHRoZSBw
cm9jZXNzIHRlcm1pbmF0ZXMKKyAgLy8gd2hlbiB0aGUgZGVzdHJ1Y3RvcnMgYXJlIG5vdCBydW4u
CiAgIF9leGl0KDEpOyAgLy8gRXhpdHMgdy9vIGFueSBub3JtYWwgZXhpdCBob29rcyAod2Ugd2Vy
ZSBzdXBwb3NlZCB0byBjcmFzaCkKIH0KIAorLy8gUmV0dXJucyBhbiBpbmRlbnRlZCBjb3B5IG9m
IHN0ZGVyciBvdXRwdXQgZm9yIGEgZGVhdGggdGVzdC4KKy8vIFRoaXMgbWFrZXMgZGlzdGluZ3Vp
c2hpbmcgZGVhdGggdGVzdCBvdXRwdXQgbGluZXMgZnJvbSByZWd1bGFyIGxvZyBsaW5lcworLy8g
bXVjaCBlYXNpZXIuCitzdGF0aWMgOjpzdGQ6OnN0cmluZyBGb3JtYXREZWF0aFRlc3RPdXRwdXQo
Y29uc3QgOjpzdGQ6OnN0cmluZyYgb3V0cHV0KSB7CisgIDo6c3RkOjpzdHJpbmcgcmV0OworICBm
b3IgKHNpemVfdCBhdCA9IDA7IDsgKSB7CisgICAgY29uc3Qgc2l6ZV90IGxpbmVfZW5kID0gb3V0
cHV0LmZpbmQoJ1xuJywgYXQpOworICAgIHJldCArPSAiWyAgREVBVEggICBdICI7CisgICAgaWYg
KGxpbmVfZW5kID09IDo6c3RkOjpzdHJpbmc6Om5wb3MpIHsKKyAgICAgIHJldCArPSBvdXRwdXQu
c3Vic3RyKGF0KTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXQgKz0gb3V0cHV0LnN1YnN0
cihhdCwgbGluZV9lbmQgKyAxIC0gYXQpOworICAgIGF0ID0gbGluZV9lbmQgKyAxOworICB9Cisg
IHJldHVybiByZXQ7Cit9CisKIC8vIEFzc2Vzc2VzIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2Yg
YSBkZWF0aCB0ZXN0LCB1c2luZyBib3RoIHByaXZhdGUKIC8vIG1lbWJlcnMgd2hpY2ggaGF2ZSBw
cmV2aW91c2x5IGJlZW4gc2V0LCBhbmQgb25lIGFyZ3VtZW50OgogLy8KIC8vIFByaXZhdGUgZGF0
YSBtZW1iZXJzOgogLy8gICBvdXRjb21lOiAgQW4gZW51bWVyYXRpb24gZGVzY3JpYmluZyBob3cg
dGhlIGRlYXRoIHRlc3QKLS8vICAgICAgICAgICAgIGNvbmNsdWRlZDogRElFRCwgTElWRUQsIG9y
IFJFVFVSTkVELiAgVGhlIGRlYXRoIHRlc3QgZmFpbHMKLS8vICAgICAgICAgICAgIGluIHRoZSBs
YXR0ZXIgdHdvIGNhc2VzLgorLy8gICAgICAgICAgICAgY29uY2x1ZGVkOiBESUVELCBMSVZFRCwg
VEhSRVcsIG9yIFJFVFVSTkVELiAgVGhlIGRlYXRoIHRlc3QKKy8vICAgICAgICAgICAgIGZhaWxz
IGluIHRoZSBsYXR0ZXIgdGhyZWUgY2FzZXMuCiAvLyAgIHN0YXR1czogICBUaGUgZXhpdCBzdGF0
dXMgb2YgdGhlIGNoaWxkIHByb2Nlc3MuIE9uICpuaXgsIGl0IGlzIGluIHRoZQogLy8gICAgICAg
ICAgICAgaW4gdGhlIGZvcm1hdCBzcGVjaWZpZWQgYnkgd2FpdCgyKS4gT24gV2luZG93cywgdGhp
cyBpcyB0aGUKIC8vICAgICAgICAgICAgIHZhbHVlIHN1cHBsaWVkIHRvIHRoZSBFeGl0UHJvY2Vz
cygpIEFQSSBvciBhIG51bWVyaWMgY29kZQpAQCAtNDQ4LDcgKzU0Miw3IEBAIGJvb2wgRGVhdGhU
ZXN0SW1wbDo6UGFzc2VkKGJvb2wgc3RhdHVzX29rKSB7CiAgIGlmICghc3Bhd25lZCgpKQogICAg
IHJldHVybiBmYWxzZTsKIAotICBjb25zdCBTdHJpbmcgZXJyb3JfbWVzc2FnZSA9IEdldENhcHR1
cmVkU3RkZXJyKCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGVycm9yX21lc3NhZ2UgPSBHZXRDYXB0
dXJlZFN0ZGVycigpOwogCiAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICBNZXNzYWdlIGJ1ZmZl
cjsKQEAgLTQ1NywxMSArNTUxLDE1IEBAIGJvb2wgRGVhdGhUZXN0SW1wbDo6UGFzc2VkKGJvb2wg
c3RhdHVzX29rKSB7CiAgIHN3aXRjaCAob3V0Y29tZSgpKSB7CiAgICAgY2FzZSBMSVZFRDoKICAg
ICAgIGJ1ZmZlciA8PCAiICAgIFJlc3VsdDogZmFpbGVkIHRvIGRpZS5cbiIKLSAgICAgICAgICAg
ICA8PCAiIEVycm9yIG1zZzogIiA8PCBlcnJvcl9tZXNzYWdlOworICAgICAgICAgICAgIDw8ICIg
RXJyb3IgbXNnOlxuIiA8PCBGb3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2FnZSk7Cisg
ICAgICBicmVhazsKKyAgICBjYXNlIFRIUkVXOgorICAgICAgYnVmZmVyIDw8ICIgICAgUmVzdWx0
OiB0aHJldyBhbiBleGNlcHRpb24uXG4iCisgICAgICAgICAgICAgPDwgIiBFcnJvciBtc2c6XG4i
IDw8IEZvcm1hdERlYXRoVGVzdE91dHB1dChlcnJvcl9tZXNzYWdlKTsKICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgUkVUVVJORUQ6CiAgICAgICBidWZmZXIgPDwgIiAgICBSZXN1bHQ6IGlsbGVnYWwg
cmV0dXJuIGluIHRlc3Qgc3RhdGVtZW50LlxuIgotICAgICAgICAgICAgIDw8ICIgRXJyb3IgbXNn
OiAiIDw8IGVycm9yX21lc3NhZ2U7CisgICAgICAgICAgICAgPDwgIiBFcnJvciBtc2c6XG4iIDw8
IEZvcm1hdERlYXRoVGVzdE91dHB1dChlcnJvcl9tZXNzYWdlKTsKICAgICAgIGJyZWFrOwogICAg
IGNhc2UgRElFRDoKICAgICAgIGlmIChzdGF0dXNfb2spIHsKQEAgLTQ3MSwxMSArNTY5LDEyIEBA
IGJvb2wgRGVhdGhUZXN0SW1wbDo6UGFzc2VkKGJvb2wgc3RhdHVzX29rKSB7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgYnVmZmVyIDw8ICIgICAgUmVzdWx0OiBkaWVkIGJ1dCBub3Qgd2l0
aCBleHBlY3RlZCBlcnJvci5cbiIKICAgICAgICAgICAgICAgICAgPDwgIiAgRXhwZWN0ZWQ6ICIg
PDwgcmVnZXgoKS0+cGF0dGVybigpIDw8ICJcbiIKLSAgICAgICAgICAgICAgICAgPDwgIkFjdHVh
bCBtc2c6ICIgPDwgZXJyb3JfbWVzc2FnZTsKKyAgICAgICAgICAgICAgICAgPDwgIkFjdHVhbCBt
c2c6XG4iIDw8IEZvcm1hdERlYXRoVGVzdE91dHB1dChlcnJvcl9tZXNzYWdlKTsKICAgICAgICAg
fQogICAgICAgfSBlbHNlIHsKICAgICAgICAgYnVmZmVyIDw8ICIgICAgUmVzdWx0OiBkaWVkIGJ1
dCBub3Qgd2l0aCBleHBlY3RlZCBleGl0IGNvZGU6XG4iCi0gICAgICAgICAgICAgICA8PCAiICAg
ICAgICAgICAgIiA8PCBFeGl0U3VtbWFyeShzdGF0dXMoKSkgPDwgIlxuIjsKKyAgICAgICAgICAg
ICAgIDw8ICIgICAgICAgICAgICAiIDw8IEV4aXRTdW1tYXJ5KHN0YXR1cygpKSA8PCAiXG4iCisg
ICAgICAgICAgICAgICA8PCAiQWN0dWFsIG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0
KGVycm9yX21lc3NhZ2UpOwogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTl9QUk9H
UkVTUzoKQEAgLTQ4OCw3ICs1ODcsNyBAQCBib29sIERlYXRoVGVzdEltcGw6OlBhc3NlZChib29s
IHN0YXR1c19vaykgewogICByZXR1cm4gc3VjY2VzczsKIH0KIAotI2lmIEdURVNUX09TX1dJTkRP
V1MKKyMgaWYgR1RFU1RfT1NfV0lORE9XUwogLy8gV2luZG93c0RlYXRoVGVzdCBpbXBsZW1lbnRz
IGRlYXRoIHRlc3RzIG9uIFdpbmRvd3MuIER1ZSB0byB0aGUKIC8vIHNwZWNpZmljcyBvZiBzdGFy
dGluZyBuZXcgcHJvY2Vzc2VzIG9uIFdpbmRvd3MsIGRlYXRoIHRlc3RzIHRoZXJlIGFyZQogLy8g
YWx3YXlzIHRocmVhZHNhZmUsIGFuZCBHb29nbGUgVGVzdCBjb25zaWRlcnMgdGhlCkBAIC01MTks
MTEgKzYxOCwxMSBAQCBib29sIERlYXRoVGVzdEltcGw6OlBhc3NlZChib29sIHN0YXR1c19vaykg
ewogLy8KIGNsYXNzIFdpbmRvd3NEZWF0aFRlc3QgOiBwdWJsaWMgRGVhdGhUZXN0SW1wbCB7CiAg
cHVibGljOgotICBXaW5kb3dzRGVhdGhUZXN0KGNvbnN0IGNoYXIqIHN0YXRlbWVudCwKLSAgICAg
ICAgICAgICAgICAgICBjb25zdCBSRSogcmVnZXgsCisgIFdpbmRvd3NEZWF0aFRlc3QoY29uc3Qg
Y2hhciogYV9zdGF0ZW1lbnQsCisgICAgICAgICAgICAgICAgICAgY29uc3QgUkUqIGFfcmVnZXgs
CiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwKICAgICAgICAgICAgICAgICAg
ICBpbnQgbGluZSkKLSAgICAgIDogRGVhdGhUZXN0SW1wbChzdGF0ZW1lbnQsIHJlZ2V4KSwgZmls
ZV8oZmlsZSksIGxpbmVfKGxpbmUpIHt9CisgICAgICA6IERlYXRoVGVzdEltcGwoYV9zdGF0ZW1l
bnQsIGFfcmVnZXgpLCBmaWxlXyhmaWxlKSwgbGluZV8obGluZSkge30KIAogICAvLyBBbGwgb2Yg
dGhlc2UgdmlydHVhbCBmdW5jdGlvbnMgYXJlIGluaGVyaXRlZCBmcm9tIERlYXRoVGVzdC4KICAg
dmlydHVhbCBpbnQgV2FpdCgpOwpAQCAtNTgwLDEyICs2NzksMTIgQEAgaW50IFdpbmRvd3NEZWF0
aFRlc3Q6OldhaXQoKSB7CiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKAogICAgICAgV0FJVF9P
QkpFQ1RfMCA9PSA6OldhaXRGb3JTaW5nbGVPYmplY3QoY2hpbGRfaGFuZGxlXy5HZXQoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElORklOSVRFKSk7Ci0g
IERXT1JEIHN0YXR1czsKLSAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oOjpHZXRFeGl0Q29kZVBy
b2Nlc3MoY2hpbGRfaGFuZGxlXy5HZXQoKSwgJnN0YXR1cykKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIT0gRkFMU0UpOworICBEV09SRCBzdGF0dXNfY29kZTsKKyAgR1RFU1RfREVBVEhfVEVT
VF9DSEVDS18oCisgICAgICA6OkdldEV4aXRDb2RlUHJvY2VzcyhjaGlsZF9oYW5kbGVfLkdldCgp
LCAmc3RhdHVzX2NvZGUpICE9IEZBTFNFKTsKICAgY2hpbGRfaGFuZGxlXy5SZXNldCgpOwotICBz
ZXRfc3RhdHVzKHN0YXRpY19jYXN0PGludD4oc3RhdHVzKSk7Ci0gIHJldHVybiB0aGlzLT5zdGF0
dXMoKTsKKyAgc2V0X3N0YXR1cyhzdGF0aWNfY2FzdDxpbnQ+KHN0YXR1c19jb2RlKSk7CisgIHJl
dHVybiBzdGF0dXMoKTsKIH0KIAogLy8gVGhlIEFzc3VtZVJvbGUgcHJvY2VzcyBmb3IgYSBXaW5k
b3dzIGRlYXRoIHRlc3QuICBJdCBjcmVhdGVzIGEgY2hpbGQKQEAgLTYyNSwyMiArNzI0LDE5IEBA
IERlYXRoVGVzdDo6VGVzdFJvbGUgV2luZG93c0RlYXRoVGVzdDo6QXNzdW1lUm9sZSgpIHsKICAg
ICAgIEZBTFNFLCAgIC8vIFRoZSBpbml0aWFsIHN0YXRlIGlzIG5vbi1zaWduYWxsZWQuCiAgICAg
ICBOVUxMKSk7ICAvLyBUaGUgZXZlbiBpcyB1bm5hbWVkLgogICBHVEVTVF9ERUFUSF9URVNUX0NI
RUNLXyhldmVudF9oYW5kbGVfLkdldCgpICE9IE5VTEwpOwotICBjb25zdCBTdHJpbmcgZmlsdGVy
X2ZsYWcgPSBTdHJpbmc6OkZvcm1hdCgiLS0lcyVzPSVzLiVzIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfRkxBR19QUkVGSVhfLCBrRmlsdGVyRmxh
ZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+dGVz
dF9jYXNlX25hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5mby0+bmFtZSgpKTsKLSAgY29uc3QgU3RyaW5nIGludGVybmFsX2ZsYWcgPSBTdHJpbmc6
OkZvcm1hdCgKLSAgICAiLS0lcyVzPSVzfCVkfCVkfCV1fCVJdXwlSXUiLAotICAgICAgR1RFU1Rf
RkxBR19QUkVGSVhfLAotICAgICAga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZywKLSAgICAgIGZp
bGVfLCBsaW5lXywKLSAgICAgIGRlYXRoX3Rlc3RfaW5kZXgsCi0gICAgICBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBpbnQ+KDo6R2V0Q3VycmVudFByb2Nlc3NJZCgpKSwKLSAgICAgIC8vIHNpemVfdCBo
YXMgdGhlIHNhbWUgd2l0aCBhcyBwb2ludGVycyBvbiBib3RoIDMyLWJpdCBhbmQgNjQtYml0Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGZpbHRlcl9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIp
ICsgR1RFU1RfRkxBR19QUkVGSVhfICsga0ZpbHRlckZsYWcgKyAiPSIgKworICAgICAgaW5mby0+
dGVzdF9jYXNlX25hbWUoKSArICIuIiArIGluZm8tPm5hbWUoKTsKKyAgY29uc3Qgc3RkOjpzdHJp
bmcgaW50ZXJuYWxfZmxhZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0iKSArIEdURVNUX0ZMQUdf
UFJFRklYXyArIGtJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcgKworICAgICAgIj0iICsgZmlsZV8g
KyAifCIgKyBTdHJlYW1hYmxlVG9TdHJpbmcobGluZV8pICsgInwiICsKKyAgICAgIFN0cmVhbWFi
bGVUb1N0cmluZyhkZWF0aF90ZXN0X2luZGV4KSArICJ8IiArCisgICAgICBTdHJlYW1hYmxlVG9T
dHJpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pig6OkdldEN1cnJlbnRQcm9jZXNzSWQoKSkp
ICsKKyAgICAgIC8vIHNpemVfdCBoYXMgdGhlIHNhbWUgd2lkdGggYXMgcG9pbnRlcnMgb24gYm90
aCAzMi1iaXQgYW5kIDY0LWJpdAogICAgICAgLy8gV2luZG93cyBwbGF0Zm9ybXMuCiAgICAgICAv
LyBTZWUgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3RjeGYxZHc2LmFz
cHguCi0gICAgICByZWludGVycHJldF9jYXN0PHNpemVfdD4od3JpdGVfaGFuZGxlKSwKLSAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihldmVudF9oYW5kbGVfLkdldCgpKSk7CisgICAgICAi
fCIgKyBTdHJlYW1hYmxlVG9TdHJpbmcocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KHdyaXRlX2hh
bmRsZSkpICsKKyAgICAgICJ8IiArIFN0cmVhbWFibGVUb1N0cmluZyhyZWludGVycHJldF9jYXN0
PHNpemVfdD4oZXZlbnRfaGFuZGxlXy5HZXQoKSkpOwogCiAgIGNoYXIgZXhlY3V0YWJsZV9wYXRo
W19NQVhfUEFUSCArIDFdOyAgLy8gTk9MSU5UCiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKApA
QCAtNjQ4LDEwICs3NDQsOSBAQCBEZWF0aFRlc3Q6OlRlc3RSb2xlIFdpbmRvd3NEZWF0aFRlc3Q6
OkFzc3VtZVJvbGUoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4ZWN1dGFibGVfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX01BWF9QQVRIKSk7CiAKLSAgU3RyaW5nIGNvbW1hbmRfbGluZSA9IFN0cmluZzo6
Rm9ybWF0KCIlcyAlcyBcIiVzXCIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOjpHZXRDb21tYW5kTGluZUEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbHRlcl9mbGFnLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnRlcm5hbF9mbGFnLmNfc3RyKCkpOworICBzdGQ6OnN0cmluZyBjb21t
YW5kX2xpbmUgPQorICAgICAgc3RkOjpzdHJpbmcoOjpHZXRDb21tYW5kTGluZUEoKSkgKyAiICIg
KyBmaWx0ZXJfZmxhZyArICIgXCIiICsKKyAgICAgIGludGVybmFsX2ZsYWcgKyAiXCIiOwogCiAg
IERlYXRoVGVzdDo6c2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKCIiKTsKIApAQCAtNjg0LDcg
Kzc3OSw3IEBAIERlYXRoVGVzdDo6VGVzdFJvbGUgV2luZG93c0RlYXRoVGVzdDo6QXNzdW1lUm9s
ZSgpIHsKICAgc2V0X3NwYXduZWQodHJ1ZSk7CiAgIHJldHVybiBPVkVSU0VFX1RFU1Q7CiB9Ci0j
ZWxzZSAgLy8gV2UgYXJlIG5vdCBvbiBXaW5kb3dzLgorIyBlbHNlICAvLyBXZSBhcmUgbm90IG9u
IFdpbmRvd3MuCiAKIC8vIEZvcmtpbmdEZWF0aFRlc3QgcHJvdmlkZXMgaW1wbGVtZW50YXRpb25z
IGZvciBtb3N0IG9mIHRoZSBhYnN0cmFjdAogLy8gbWV0aG9kcyBvZiB0aGUgRGVhdGhUZXN0IGlu
dGVyZmFjZS4gIE9ubHkgdGhlIEFzc3VtZVJvbGUgbWV0aG9kIGlzCkBAIC03NjgsNiArODYzLDcg
QEAgRGVhdGhUZXN0OjpUZXN0Um9sZSBOb0V4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAg
ICAgLy8gRXZlbnQgZm9yd2FyZGluZyB0byB0aGUgbGlzdGVuZXJzIG9mIGV2ZW50IGxpc3RlbmVy
IEFQSSBtdXNoIGJlIHNodXQKICAgICAvLyBkb3duIGluIGRlYXRoIHRlc3Qgc3VicHJvY2Vzc2Vz
LgogICAgIEdldFVuaXRUZXN0SW1wbCgpLT5saXN0ZW5lcnMoKS0+U3VwcHJlc3NFdmVudEZvcndh
cmRpbmcoKTsKKyAgICBnX2luX2Zhc3RfZGVhdGhfdGVzdF9jaGlsZCA9IHRydWU7CiAgICAgcmV0
dXJuIEVYRUNVVEVfVEVTVDsKICAgfSBlbHNlIHsKICAgICBHVEVTVF9ERUFUSF9URVNUX0NIRUNL
X1NZU0NBTExfKGNsb3NlKHBpcGVfZmRbMV0pKTsKQEAgLTc4Nyw2ICs4ODMsMTYgQEAgY2xhc3Mg
RXhlY0RlYXRoVGVzdCA6IHB1YmxpYyBGb3JraW5nRGVhdGhUZXN0IHsKICAgICAgIEZvcmtpbmdE
ZWF0aFRlc3QoYV9zdGF0ZW1lbnQsIGFfcmVnZXgpLCBmaWxlXyhmaWxlKSwgbGluZV8obGluZSkg
eyB9CiAgIHZpcnR1YWwgVGVzdFJvbGUgQXNzdW1lUm9sZSgpOwogIHByaXZhdGU6CisgIHN0YXRp
YyA6OnN0ZDo6dmVjdG9yPHRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmc+CisgIEdldEFyZ3ZzRm9y
RGVhdGhUZXN0Q2hpbGRQcm9jZXNzKCkgeworICAgIDo6c3RkOjp2ZWN0b3I8dGVzdGluZzo6aW50
ZXJuYWw6OnN0cmluZz4gYXJncyA9IEdldEluamVjdGFibGVBcmd2cygpOworIyAgaWYgZGVmaW5l
ZChHVEVTVF9FWFRSQV9ERUFUSF9URVNUX0NPTU1BTkRfTElORV9BUkdTXykKKyAgICA6OnN0ZDo6
dmVjdG9yPHRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmc+IGV4dHJhX2FyZ3MgPQorICAgICAgICBH
VEVTVF9FWFRSQV9ERUFUSF9URVNUX0NPTU1BTkRfTElORV9BUkdTXygpOworICAgIGFyZ3MuaW5z
ZXJ0KGFyZ3MuZW5kKCksIGV4dHJhX2FyZ3MuYmVnaW4oKSwgZXh0cmFfYXJncy5lbmQoKSk7Cisj
ICBlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9FWFRSQV9ERUFUSF9URVNUX0NPTU1BTkRfTElORV9B
UkdTXykKKyAgICByZXR1cm4gYXJnczsKKyAgfQogICAvLyBUaGUgbmFtZSBvZiB0aGUgZmlsZSBp
biB3aGljaCB0aGUgZGVhdGggdGVzdCBpcyBsb2NhdGVkLgogICBjb25zdCBjaGFyKiBjb25zdCBm
aWxlXzsKICAgLy8gVGhlIGxpbmUgbnVtYmVyIG9uIHdoaWNoIHRoZSBkZWF0aCB0ZXN0IGlzIGxv
Y2F0ZWQuCkBAIC04MjEsNiArOTI3LDcgQEAgY2xhc3MgQXJndW1lbnRzIHsKICAgY2hhciogY29u
c3QqIEFyZ3YoKSB7CiAgICAgcmV0dXJuICZhcmdzX1swXTsKICAgfQorCiAgcHJpdmF0ZToKICAg
c3RkOjp2ZWN0b3I8Y2hhcio+IGFyZ3NfOwogfTsKQEAgLTgzMiw2ICs5MzksMjEgQEAgc3RydWN0
IEV4ZWNEZWF0aFRlc3RBcmdzIHsKICAgaW50IGNsb3NlX2ZkOyAgICAgICAvLyBGaWxlIGRlc2Ny
aXB0b3IgdG8gY2xvc2U7IHRoZSByZWFkIGVuZCBvZiBhIHBpcGUKIH07CiAKKyMgIGlmIEdURVNU
X09TX01BQworaW5saW5lIGNoYXIqKiBHZXRFbnZpcm9uKCkgeworICAvLyBXaGVuIEdvb2dsZSBU
ZXN0IGlzIGJ1aWx0IGFzIGEgZnJhbWV3b3JrIG9uIE1hY09TIFgsIHRoZSBlbnZpcm9uIHZhcmlh
YmxlCisgIC8vIGlzIHVuYXZhaWxhYmxlLiBBcHBsZSdzIGRvY3VtZW50YXRpb24gKG1hbiBlbnZp
cm9uKSByZWNvbW1lbmRzIHVzaW5nCisgIC8vIF9OU0dldEVudmlyb24oKSBpbnN0ZWFkLgorICBy
ZXR1cm4gKl9OU0dldEVudmlyb24oKTsKK30KKyMgIGVsc2UKKy8vIFNvbWUgUE9TSVggcGxhdGZv
cm1zIGV4cGVjdCB5b3UgdG8gZGVjbGFyZSBlbnZpcm9uLiBleHRlcm4gIkMiIG1ha2VzCisvLyBp
dCByZXNpZGUgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCitleHRlcm4gIkMiIGNoYXIqKiBlbnZp
cm9uOworaW5saW5lIGNoYXIqKiBHZXRFbnZpcm9uKCkgeyByZXR1cm4gZW52aXJvbjsgfQorIyAg
ZW5kaWYgIC8vIEdURVNUX09TX01BQworCisjICBpZiAhR1RFU1RfT1NfUU5YCiAvLyBUaGUgbWFp
biBmdW5jdGlvbiBmb3IgYSB0aHJlYWRzYWZlLXN0eWxlIGRlYXRoIHRlc3QgY2hpbGQgcHJvY2Vz
cy4KIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIGEgY2xvbmUoKS1lZCBwcm9jZXNzIGFu
ZCB0aHVzIG11c3QgYXZvaWQKIC8vIGFueSBwb3RlbnRpYWxseSB1bnNhZmUgb3BlcmF0aW9ucyBs
aWtlIG1hbGxvYyBvciBsaWJjIGZ1bmN0aW9ucy4KQEAgLTg0Niw5ICs5NjgsOCBAQCBzdGF0aWMg
aW50IEV4ZWNEZWF0aFRlc3RDaGlsZE1haW4odm9pZCogY2hpbGRfYXJnKSB7CiAgICAgICBVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+b3JpZ2luYWxfd29ya2luZ19kaXIoKTsKICAgLy8gV2UgY2Fu
IHNhZmVseSBjYWxsIGNoZGlyKCkgYXMgaXQncyBhIGRpcmVjdCBzeXN0ZW0gY2FsbC4KICAgaWYg
KGNoZGlyKG9yaWdpbmFsX2RpcikgIT0gMCkgewotICAgIERlYXRoVGVzdEFib3J0KFN0cmluZzo6
Rm9ybWF0KCJjaGRpcihcIiVzXCIpIGZhaWxlZDogJXMiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9yaWdpbmFsX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpLmNfc3RyKCkpKTsKKyAgICBEZWF0aFRlc3RB
Ym9ydChzdGQ6OnN0cmluZygiY2hkaXIoXCIiKSArIG9yaWdpbmFsX2RpciArICJcIikgZmFpbGVk
OiAiICsKKyAgICAgICAgICAgICAgICAgICBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpKTsKICAg
ICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICB9CiAKQEAgLTg1Nyw0MCArOTc4LDk0IEBAIHN0YXRp
YyBpbnQgRXhlY0RlYXRoVGVzdENoaWxkTWFpbih2b2lkKiBjaGlsZF9hcmcpIHsKICAgLy8gdW5z
YWZlLiAgU2luY2UgZXhlY3ZlKCkgZG9lc24ndCBzZWFyY2ggdGhlIFBBVEgsIHRoZSB1c2VyIG11
c3QKICAgLy8gaW52b2tlIHRoZSB0ZXN0IHByb2dyYW0gdmlhIGEgdmFsaWQgcGF0aCB0aGF0IGNv
bnRhaW5zIGF0IGxlYXN0CiAgIC8vIG9uZSBwYXRoIHNlcGFyYXRvci4KLSAgLy8gV2UgaGF2ZSBy
ZXBsYWNlZCBleGVjdmUoKSB3aXRoIGV4ZWN2KCkgZm9yIFdlYktpdCB0byBhdm9pZCB1c2luZwot
ICAvLyBlbnZpcm9uLiBJdCBzaG91bGQgYmUgc2FmZSBiZWNhdXNlIGV4ZWN2KCkgaXMganVzdCBh
IHNpbXBsZSB3cmFwcGVyCi0gIC8vIG9mIGV4ZWN2ZSgpLgotICBleGVjdihhcmdzLT5hcmd2WzBd
LCBhcmdzLT5hcmd2KTsKLSAgRGVhdGhUZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQoImV4ZWN2KCVz
LCAuLi4pIGluICVzIGZhaWxlZDogJXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhcmdzLT5hcmd2WzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5h
bF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2Ny
aXB0aW9uKCkuY19zdHIoKSkpOworICBleGVjdmUoYXJncy0+YXJndlswXSwgYXJncy0+YXJndiwg
R2V0RW52aXJvbigpKTsKKyAgRGVhdGhUZXN0QWJvcnQoc3RkOjpzdHJpbmcoImV4ZWN2ZSgiKSAr
IGFyZ3MtPmFyZ3ZbMF0gKyAiLCAuLi4pIGluICIgKworICAgICAgICAgICAgICAgICBvcmlnaW5h
bF9kaXIgKyAiIGZhaWxlZDogIiArCisgICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2Ny
aXB0aW9uKCkpOwogICByZXR1cm4gRVhJVF9GQUlMVVJFOwogfQorIyAgZW5kaWYgIC8vICFHVEVT
VF9PU19RTlgKIAogLy8gVHdvIHV0aWxpdHkgcm91dGluZXMgdGhhdCB0b2dldGhlciBkZXRlcm1p
bmUgdGhlIGRpcmVjdGlvbiB0aGUgc3RhY2sKIC8vIGdyb3dzLgogLy8gVGhpcyBjb3VsZCBiZSBh
Y2NvbXBsaXNoZWQgbW9yZSBlbGVnYW50bHkgYnkgYSBzaW5nbGUgcmVjdXJzaXZlCiAvLyBmdW5j
dGlvbiwgYnV0IHdlIHdhbnQgdG8gZ3VhcmQgYWdhaW5zdCB0aGUgdW5saWtlbHkgcG9zc2liaWxp
dHkgb2YKIC8vIGEgc21hcnQgY29tcGlsZXIgb3B0aW1pemluZyB0aGUgcmVjdXJzaW9uIGF3YXku
Ci1ib29sIFN0YWNrTG93ZXJUaGFuQWRkcmVzcyhjb25zdCB2b2lkKiBwdHIpIHsKKy8vCisvLyBH
VEVTVF9OT19JTkxJTkVfIGlzIHJlcXVpcmVkIHRvIHByZXZlbnQgR0NDIDQuNiBmcm9tIGlubGlu
aW5nCisvLyBTdGFja0xvd2VyVGhhbkFkZHJlc3MgaW50byBTdGFja0dyb3dzRG93biwgd2hpY2gg
dGhlbiBkb2Vzbid0IGdpdmUKKy8vIGNvcnJlY3QgYW5zd2VyLgordm9pZCBTdGFja0xvd2VyVGhh
bkFkZHJlc3MoY29uc3Qgdm9pZCogcHRyLCBib29sKiByZXN1bHQpIEdURVNUX05PX0lOTElORV87
Cit2b2lkIFN0YWNrTG93ZXJUaGFuQWRkcmVzcyhjb25zdCB2b2lkKiBwdHIsIGJvb2wqIHJlc3Vs
dCkgewogICBpbnQgZHVtbXk7Ci0gIHJldHVybiAmZHVtbXkgPCBwdHI7CisgICpyZXN1bHQgPSAo
JmR1bW15IDwgcHRyKTsKIH0KIAorLy8gTWFrZSBzdXJlIEFkZHJlc3NTYW5pdGl6ZXIgZG9lcyBu
b3QgdGFtcGVyIHdpdGggdGhlIHN0YWNrIGhlcmUuCitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJ
WkVfQUREUkVTU18KIGJvb2wgU3RhY2tHcm93c0Rvd24oKSB7CiAgIGludCBkdW1teTsKLSAgcmV0
dXJuIFN0YWNrTG93ZXJUaGFuQWRkcmVzcygmZHVtbXkpOworICBib29sIHJlc3VsdDsKKyAgU3Rh
Y2tMb3dlclRoYW5BZGRyZXNzKCZkdW1teSwgJnJlc3VsdCk7CisgIHJldHVybiByZXN1bHQ7CiB9
CiAKLS8vIEEgdGhyZWFkc2FmZSBpbXBsZW1lbnRhdGlvbiBvZiBmb3JrKDIpIGZvciB0aHJlYWRz
YWZlLXN0eWxlIGRlYXRoIHRlc3RzCi0vLyB0aGF0IHVzZXMgY2xvbmUoMikuICBJdCBkaWVzIHdp
dGggYW4gZXJyb3IgbWVzc2FnZSBpZiBhbnl0aGluZyBnb2VzCi0vLyB3cm9uZy4KLXN0YXRpYyBw
aWRfdCBFeGVjRGVhdGhUZXN0Rm9yayhjaGFyKiBjb25zdCogYXJndiwgaW50IGNsb3NlX2ZkKSB7
CisvLyBTcGF3bnMgYSBjaGlsZCBwcm9jZXNzIHdpdGggdGhlIHNhbWUgZXhlY3V0YWJsZSBhcyB0
aGUgY3VycmVudCBwcm9jZXNzIGluCisvLyBhIHRocmVhZC1zYWZlIG1hbm5lciBhbmQgaW5zdHJ1
Y3RzIGl0IHRvIHJ1biB0aGUgZGVhdGggdGVzdC4gIFRoZQorLy8gaW1wbGVtZW50YXRpb24gdXNl
cyBmb3JrKDIpICsgZXhlYy4gIE9uIHN5c3RlbXMgd2hlcmUgY2xvbmUoMikgaXMKKy8vIGF2YWls
YWJsZSwgaXQgaXMgdXNlZCBpbnN0ZWFkLCBiZWluZyBzbGlnaHRseSBtb3JlIHRocmVhZC1zYWZl
LiAgT24gUU5YLAorLy8gZm9yayBzdXBwb3J0cyBvbmx5IHNpbmdsZS10aHJlYWRlZCBlbnZpcm9u
bWVudHMsIHNvIHRoaXMgZnVuY3Rpb24gdXNlcworLy8gc3Bhd24oMikgdGhlcmUgaW5zdGVhZC4g
IFRoZSBmdW5jdGlvbiBkaWVzIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpZgorLy8gYW55dGhpbmcg
Z29lcyB3cm9uZy4KK3N0YXRpYyBwaWRfdCBFeGVjRGVhdGhUZXN0U3Bhd25DaGlsZChjaGFyKiBj
b25zdCogYXJndiwgaW50IGNsb3NlX2ZkKSB7CiAgIEV4ZWNEZWF0aFRlc3RBcmdzIGFyZ3MgPSB7
IGFyZ3YsIGNsb3NlX2ZkIH07CiAgIHBpZF90IGNoaWxkX3BpZCA9IC0xOwogCi0jaWYgR1RFU1Rf
SEFTX0NMT05FCisjICBpZiBHVEVTVF9PU19RTlgKKyAgLy8gT2J0YWlucyB0aGUgY3VycmVudCBk
aXJlY3RvcnkgYW5kIHNldHMgaXQgdG8gYmUgY2xvc2VkIGluIHRoZSBjaGlsZAorICAvLyBwcm9j
ZXNzLgorICBjb25zdCBpbnQgY3dkX2ZkID0gb3BlbigiLiIsIE9fUkRPTkxZKTsKKyAgR1RFU1Rf
REVBVEhfVEVTVF9DSEVDS18oY3dkX2ZkICE9IC0xKTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVD
S19TWVNDQUxMXyhmY250bChjd2RfZmQsIEZfU0VURkQsIEZEX0NMT0VYRUMpKTsKKyAgLy8gV2Ug
bmVlZCB0byBleGVjdXRlIHRoZSB0ZXN0IHByb2dyYW0gaW4gdGhlIHNhbWUgZW52aXJvbm1lbnQg
d2hlcmUKKyAgLy8gaXQgd2FzIG9yaWdpbmFsbHkgaW52b2tlZC4gIFRoZXJlZm9yZSB3ZSBjaGFu
Z2UgdG8gdGhlIG9yaWdpbmFsCisgIC8vIHdvcmtpbmcgZGlyZWN0b3J5IGZpcnN0LgorICBjb25z
dCBjaGFyKiBjb25zdCBvcmlnaW5hbF9kaXIgPQorICAgICAgVW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPm9yaWdpbmFsX3dvcmtpbmdfZGlyKCk7CisgIC8vIFdlIGNhbiBzYWZlbHkgY2FsbCBjaGRp
cigpIGFzIGl0J3MgYSBkaXJlY3Qgc3lzdGVtIGNhbGwuCisgIGlmIChjaGRpcihvcmlnaW5hbF9k
aXIpICE9IDApIHsKKyAgICBEZWF0aFRlc3RBYm9ydChzdGQ6OnN0cmluZygiY2hkaXIoXCIiKSAr
IG9yaWdpbmFsX2RpciArICJcIikgZmFpbGVkOiAiICsKKyAgICAgICAgICAgICAgICAgICBHZXRM
YXN0RXJybm9EZXNjcmlwdGlvbigpKTsKKyAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICB9CisK
KyAgaW50IGZkX2ZsYWdzOworICAvLyBTZXQgY2xvc2VfZmQgdG8gYmUgY2xvc2VkIGFmdGVyIHNw
YXduLgorICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGZkX2ZsYWdzID0gZmNudGwo
Y2xvc2VfZmQsIEZfR0VURkQpKTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhm
Y250bChjbG9zZV9mZCwgRl9TRVRGRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmZF9mbGFncyB8IEZEX0NMT0VYRUMpKTsKKyAgc3RydWN0IGluaGVyaXRhbmNlIGlu
aGVyaXQgPSB7MH07CisgIC8vIHNwYXduIGlzIGEgc3lzdGVtIGNhbGwuCisgIGNoaWxkX3BpZCA9
IHNwYXduKGFyZ3MuYXJndlswXSwgMCwgTlVMTCwgJmluaGVyaXQsIGFyZ3MuYXJndiwgR2V0RW52
aXJvbigpKTsKKyAgLy8gUmVzdG9yZXMgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCisg
IEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGZjaGRpcihjd2RfZmQpICE9IC0xKTsKKyAgR1RFU1Rf
REVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhjbG9zZShjd2RfZmQpKTsKKworIyAgZWxzZSAgIC8v
IEdURVNUX09TX1FOWAorIyAgIGlmIEdURVNUX09TX0xJTlVYCisgIC8vIFdoZW4gYSBTSUdQUk9G
IHNpZ25hbCBpcyByZWNlaXZlZCB3aGlsZSBmb3JrKCkgb3IgY2xvbmUoKSBhcmUgZXhlY3V0aW5n
LAorICAvLyB0aGUgcHJvY2VzcyBtYXkgaGFuZy4gVG8gYXZvaWQgdGhpcywgd2UgaWdub3JlIFNJ
R1BST0YgaGVyZSBhbmQgcmUtZW5hYmxlCisgIC8vIGl0IGFmdGVyIHRoZSBjYWxsIHRvIGZvcmso
KS9jbG9uZSgpIGlzIGNvbXBsZXRlLgorICBzdHJ1Y3Qgc2lnYWN0aW9uIHNhdmVkX3NpZ3Byb2Zf
YWN0aW9uOworICBzdHJ1Y3Qgc2lnYWN0aW9uIGlnbm9yZV9zaWdwcm9mX2FjdGlvbjsKKyAgbWVt
c2V0KCZpZ25vcmVfc2lncHJvZl9hY3Rpb24sIDAsIHNpemVvZihpZ25vcmVfc2lncHJvZl9hY3Rp
b24pKTsKKyAgc2lnZW1wdHlzZXQoJmlnbm9yZV9zaWdwcm9mX2FjdGlvbi5zYV9tYXNrKTsKKyAg
aWdub3JlX3NpZ3Byb2ZfYWN0aW9uLnNhX2hhbmRsZXIgPSBTSUdfSUdOOworICBHVEVTVF9ERUFU
SF9URVNUX0NIRUNLX1NZU0NBTExfKHNpZ2FjdGlvbigKKyAgICAgIFNJR1BST0YsICZpZ25vcmVf
c2lncHJvZl9hY3Rpb24sICZzYXZlZF9zaWdwcm9mX2FjdGlvbikpOworIyAgIGVuZGlmICAvLyBH
VEVTVF9PU19MSU5VWAorCisjICAgaWYgR1RFU1RfSEFTX0NMT05FCiAgIGNvbnN0IGJvb2wgdXNl
X2ZvcmsgPSBHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspOwogCiAgIGlmICghdXNlX2Zv
cmspIHsKQEAgLTkwMCwyMSArMTA3NSwzNyBAQCBzdGF0aWMgcGlkX3QgRXhlY0RlYXRoVGVzdEZv
cmsoY2hhciogY29uc3QqIGFyZ3YsIGludCBjbG9zZV9mZCkgewogICAgIHZvaWQqIGNvbnN0IHN0
YWNrID0gbW1hcChOVUxMLCBzdGFja19zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBNQVBfQU5PTiB8IE1BUF9QUklWQVRFLCAtMSwgMCk7
CiAgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhY2sgIT0gTUFQX0ZBSUxFRCk7CisKKyAg
ICAvLyBNYXhpbXVtIHN0YWNrIGFsaWdubWVudCBpbiBieXRlczogIEZvciBhIGRvd253YXJkLWdy
b3dpbmcgc3RhY2ssIHRoaXMKKyAgICAvLyBhbW91bnQgaXMgc3VidHJhY3RlZCBmcm9tIHNpemUg
b2YgdGhlIHN0YWNrIHNwYWNlIHRvIGdldCBhbiBhZGRyZXNzCisgICAgLy8gdGhhdCBpcyB3aXRo
aW4gdGhlIHN0YWNrIHNwYWNlIGFuZCBpcyBhbGlnbmVkIG9uIGFsbCBzeXN0ZW1zIHdlIGNhcmUK
KyAgICAvLyBhYm91dC4gIEFzIGZhciBhcyBJIGtub3cgdGhlcmUgaXMgbm8gQUJJIHdpdGggc3Rh
Y2sgYWxpZ25tZW50IGdyZWF0ZXIKKyAgICAvLyB0aGFuIDY0LiAgV2UgYXNzdW1lIHN0YWNrIGFu
ZCBzdGFja19zaXplIGFscmVhZHkgaGF2ZSBhbGlnbm1lbnQgb2YKKyAgICAvLyBrTWF4U3RhY2tB
bGlnbm1lbnQuCisgICAgY29uc3Qgc2l6ZV90IGtNYXhTdGFja0FsaWdubWVudCA9IDY0OwogICAg
IHZvaWQqIGNvbnN0IHN0YWNrX3RvcCA9Ci0gICAgICAgIHN0YXRpY19jYXN0PGNoYXIqPihzdGFj
aykgKyAoc3RhY2tfZ3Jvd3NfZG93biA/IHN0YWNrX3NpemUgOiAwKTsKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8Y2hhcio+KHN0YWNrKSArCisgICAgICAgICAgICAoc3RhY2tfZ3Jvd3NfZG93biA/IHN0
YWNrX3NpemUgLSBrTWF4U3RhY2tBbGlnbm1lbnQgOiAwKTsKKyAgICBHVEVTVF9ERUFUSF9URVNU
X0NIRUNLXyhzdGFja19zaXplID4ga01heFN0YWNrQWxpZ25tZW50ICYmCisgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHN0YWNrX3RvcCkgJSBrTWF4U3RhY2tBbGlnbm1lbnQgPT0g
MCk7CiAKICAgICBjaGlsZF9waWQgPSBjbG9uZSgmRXhlY0RlYXRoVGVzdENoaWxkTWFpbiwgc3Rh
Y2tfdG9wLCBTSUdDSExELCAmYXJncyk7CiAKICAgICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyht
dW5tYXAoc3RhY2ssIHN0YWNrX3NpemUpICE9IC0xKTsKICAgfQotI2Vsc2UKKyMgICBlbHNlCiAg
IGNvbnN0IGJvb2wgdXNlX2ZvcmsgPSB0cnVlOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUK
KyMgICBlbmRpZiAgLy8gR1RFU1RfSEFTX0NMT05FCiAKICAgaWYgKHVzZV9mb3JrICYmIChjaGls
ZF9waWQgPSBmb3JrKCkpID09IDApIHsKICAgICAgIEV4ZWNEZWF0aFRlc3RDaGlsZE1haW4oJmFy
Z3MpOwogICAgICAgX2V4aXQoMCk7CiAgIH0KKyMgIGVuZGlmICAvLyBHVEVTVF9PU19RTlgKKyMg
IGlmIEdURVNUX09TX0xJTlVYCisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oCisg
ICAgICBzaWdhY3Rpb24oU0lHUFJPRiwgJnNhdmVkX3NpZ3Byb2ZfYWN0aW9uLCBOVUxMKSk7Cisj
ICBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKIAogICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhj
aGlsZF9waWQgIT0gLTEpOwogICByZXR1cm4gY2hpbGRfcGlkOwpAQCAtOTQyLDE2ICsxMTMzLDE2
IEBAIERlYXRoVGVzdDo6VGVzdFJvbGUgRXhlY0RlYXRoVGVzdDo6QXNzdW1lUm9sZSgpIHsKICAg
Ly8gaXQgYmUgY2xvc2VkIHdoZW4gdGhlIGNoaWxkIHByb2Nlc3MgZG9lcyBhbiBleGVjOgogICBH
VEVTVF9ERUFUSF9URVNUX0NIRUNLXyhmY250bChwaXBlX2ZkWzFdLCBGX1NFVEZELCAwKSAhPSAt
MSk7CiAKLSAgY29uc3QgU3RyaW5nIGZpbHRlcl9mbGFnID0KLSAgICAgIFN0cmluZzo6Rm9ybWF0
KCItLSVzJXM9JXMuJXMiLAotICAgICAgICAgICAgICAgICAgICAgR1RFU1RfRkxBR19QUkVGSVhf
LCBrRmlsdGVyRmxhZywKLSAgICAgICAgICAgICAgICAgICAgIGluZm8tPnRlc3RfY2FzZV9uYW1l
KCksIGluZm8tPm5hbWUoKSk7Ci0gIGNvbnN0IFN0cmluZyBpbnRlcm5hbF9mbGFnID0KLSAgICAg
IFN0cmluZzo6Rm9ybWF0KCItLSVzJXM9JXN8JWR8JWR8JWQiLAotICAgICAgICAgICAgICAgICAg
ICAgR1RFU1RfRkxBR19QUkVGSVhfLCBrSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnLAotICAgICAg
ICAgICAgICAgICAgICAgZmlsZV8sIGxpbmVfLCBkZWF0aF90ZXN0X2luZGV4LCBwaXBlX2ZkWzFd
KTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsdGVyX2ZsYWcgPQorICAgICAgc3RkOjpzdHJpbmco
Ii0tIikgKyBHVEVTVF9GTEFHX1BSRUZJWF8gKyBrRmlsdGVyRmxhZyArICI9IgorICAgICAgKyBp
bmZvLT50ZXN0X2Nhc2VfbmFtZSgpICsgIi4iICsgaW5mby0+bmFtZSgpOworICBjb25zdCBzdGQ6
OnN0cmluZyBpbnRlcm5hbF9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIpICsgR1RFU1Rf
RkxBR19QUkVGSVhfICsga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZyArICI9IgorICAgICAgKyBm
aWxlXyArICJ8IiArIFN0cmVhbWFibGVUb1N0cmluZyhsaW5lXykgKyAifCIKKyAgICAgICsgU3Ry
ZWFtYWJsZVRvU3RyaW5nKGRlYXRoX3Rlc3RfaW5kZXgpICsgInwiCisgICAgICArIFN0cmVhbWFi
bGVUb1N0cmluZyhwaXBlX2ZkWzFdKTsKICAgQXJndW1lbnRzIGFyZ3M7Ci0gIGFyZ3MuQWRkQXJn
dW1lbnRzKEdldEFyZ3ZzKCkpOworICBhcmdzLkFkZEFyZ3VtZW50cyhHZXRBcmd2c0ZvckRlYXRo
VGVzdENoaWxkUHJvY2VzcygpKTsKICAgYXJncy5BZGRBcmd1bWVudChmaWx0ZXJfZmxhZy5jX3N0
cigpKTsKICAgYXJncy5BZGRBcmd1bWVudChpbnRlcm5hbF9mbGFnLmNfc3RyKCkpOwogCkBAIC05
NjIsNyArMTE1Myw3IEBAIERlYXRoVGVzdDo6VGVzdFJvbGUgRXhlY0RlYXRoVGVzdDo6QXNzdW1l
Um9sZSgpIHsKICAgLy8gaXMgbmVjZXNzYXJ5LgogICBGbHVzaEluZm9Mb2coKTsKIAotICBjb25z
dCBwaWRfdCBjaGlsZF9waWQgPSBFeGVjRGVhdGhUZXN0Rm9yayhhcmdzLkFyZ3YoKSwgcGlwZV9m
ZFswXSk7CisgIGNvbnN0IHBpZF90IGNoaWxkX3BpZCA9IEV4ZWNEZWF0aFRlc3RTcGF3bkNoaWxk
KGFyZ3MuQXJndigpLCBwaXBlX2ZkWzBdKTsKICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVND
QUxMXyhjbG9zZShwaXBlX2ZkWzFdKSk7CiAgIHNldF9jaGlsZF9waWQoY2hpbGRfcGlkKTsKICAg
c2V0X3JlYWRfZmQocGlwZV9mZFswXSk7CkBAIC05NzAsNyArMTE2MSw3IEBAIERlYXRoVGVzdDo6
VGVzdFJvbGUgRXhlY0RlYXRoVGVzdDo6QXNzdW1lUm9sZSgpIHsKICAgcmV0dXJuIE9WRVJTRUVf
VEVTVDsKIH0KIAotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gIUdU
RVNUX09TX1dJTkRPV1MKIAogLy8gQ3JlYXRlcyBhIGNvbmNyZXRlIERlYXRoVGVzdC1kZXJpdmVk
IGNsYXNzIHRoYXQgZGVwZW5kcyBvbiB0aGUKIC8vIC0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSBm
bGFnLCBhbmQgc2V0cyB0aGUgcG9pbnRlciBwb2ludGVkIHRvCkBAIC05ODgsOSArMTE3OSwxMCBA
QCBib29sIERlZmF1bHREZWF0aFRlc3RGYWN0b3J5OjpDcmVhdGUoY29uc3QgY2hhciogc3RhdGVt
ZW50LCBjb25zdCBSRSogcmVnZXgsCiAKICAgaWYgKGZsYWcgIT0gTlVMTCkgewogICAgIGlmIChk
ZWF0aF90ZXN0X2luZGV4ID4gZmxhZy0+aW5kZXgoKSkgewotICAgICAgRGVhdGhUZXN0OjpzZXRf
bGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICAgIkRlYXRo
IHRlc3QgY291bnQgKCVkKSBzb21laG93IGV4Y2VlZGVkIGV4cGVjdGVkIG1heGltdW0gKCVkKSIs
Ci0gICAgICAgICAgZGVhdGhfdGVzdF9pbmRleCwgZmxhZy0+aW5kZXgoKSkpOworICAgICAgRGVh
dGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoCisgICAgICAgICAgIkRlYXRoIHRl
c3QgY291bnQgKCIgKyBTdHJlYW1hYmxlVG9TdHJpbmcoZGVhdGhfdGVzdF9pbmRleCkKKyAgICAg
ICAgICArICIpIHNvbWVob3cgZXhjZWVkZWQgZXhwZWN0ZWQgbWF4aW11bSAoIgorICAgICAgICAg
ICsgU3RyZWFtYWJsZVRvU3RyaW5nKGZsYWctPmluZGV4KCkpICsgIikiKTsKICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTEwMDEsNDkgKzExOTMsMzQgQEAgYm9vbCBEZWZhdWx0RGVh
dGhUZXN0RmFjdG9yeTo6Q3JlYXRlKGNvbnN0IGNoYXIqIHN0YXRlbWVudCwgY29uc3QgUkUqIHJl
Z2V4LAogICAgIH0KICAgfQogCi0jaWYgR1RFU1RfT1NfV0lORE9XUworIyBpZiBHVEVTVF9PU19X
SU5ET1dTCisKICAgaWYgKEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPT0gInRocmVhZHNh
ZmUiIHx8CiAgICAgICBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJmYXN0Iikgewog
ICAgICp0ZXN0ID0gbmV3IFdpbmRvd3NEZWF0aFRlc3Qoc3RhdGVtZW50LCByZWdleCwgZmlsZSwg
bGluZSk7CiAgIH0KLSNlbHNlCisKKyMgZWxzZQorCiAgIGlmIChHVEVTVF9GTEFHKGRlYXRoX3Rl
c3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZlIikgewogICAgICp0ZXN0ID0gbmV3IEV4ZWNEZWF0aFRl
c3Qoc3RhdGVtZW50LCByZWdleCwgZmlsZSwgbGluZSk7CiAgIH0gZWxzZSBpZiAoR1RFU1RfRkxB
RyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAiZmFzdCIpIHsKICAgICAqdGVzdCA9IG5ldyBOb0V4ZWNE
ZWF0aFRlc3Qoc3RhdGVtZW50LCByZWdleCk7CiAgIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lO
RE9XUworCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKICAgZWxzZSB7ICAvLyBOT0xJ
TlQgLSB0aGlzIGlzIG1vcmUgcmVhZGFibGUgdGhhbiB1bmJhbGFuY2VkIGJyYWNrZXRzIGluc2lk
ZSAjaWYuCi0gICAgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoU3RyaW5n
OjpGb3JtYXQoCi0gICAgICAgICJVbmtub3duIGRlYXRoIHRlc3Qgc3R5bGUgXCIlc1wiIGVuY291
bnRlcmVkIiwKLSAgICAgICAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKS5jX3N0cigpKSk7
CisgICAgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoCisgICAgICAgICJV
bmtub3duIGRlYXRoIHRlc3Qgc3R5bGUgXCIiICsgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxl
KQorICAgICAgICArICJcIiBlbmNvdW50ZXJlZCIpOwogICAgIHJldHVybiBmYWxzZTsKICAgfQog
CiAgIHJldHVybiB0cnVlOwogfQogCi0vLyBTcGxpdHMgYSBnaXZlbiBzdHJpbmcgb24gYSBnaXZl
biBkZWxpbWl0ZXIsIHBvcHVsYXRpbmcgYSBnaXZlbgotLy8gdmVjdG9yIHdpdGggdGhlIGZpZWxk
cy4gIEdURVNUX0hBU19ERUFUSF9URVNUIGltcGxpZXMgdGhhdCB3ZSBoYXZlCi0vLyA6OnN0ZDo6
c3RyaW5nLCBzbyB3ZSBjYW4gdXNlIGl0IGhlcmUuCi1zdGF0aWMgdm9pZCBTcGxpdFN0cmluZyhj
b25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIsIGNoYXIgZGVsaW1pdGVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4qIGRlc3QpIHsKLSAgOjpzdGQ6
OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4gcGFyc2VkOwotICA6OnN0ZDo6c3RyaW5nOjpzaXplX3R5
cGUgcG9zID0gMDsKLSAgd2hpbGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkg
ewotICAgIGNvbnN0IDo6c3RkOjpzdHJpbmc6OnNpemVfdHlwZSBjb2xvbiA9IHN0ci5maW5kKGRl
bGltaXRlciwgcG9zKTsKLSAgICBpZiAoY29sb24gPT0gOjpzdGQ6OnN0cmluZzo6bnBvcykgewot
ICAgICAgcGFyc2VkLnB1c2hfYmFjayhzdHIuc3Vic3RyKHBvcykpOwotICAgICAgYnJlYWs7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgIHBhcnNlZC5wdXNoX2JhY2soc3RyLnN1YnN0cihwb3MsIGNvbG9u
IC0gcG9zKSk7Ci0gICAgICBwb3MgPSBjb2xvbiArIDE7Ci0gICAgfQotICB9Ci0gIGRlc3QtPnN3
YXAocGFyc2VkKTsKLX0KLQotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lO
RE9XUwogLy8gUmVjcmVhdGVzIHRoZSBwaXBlIGFuZCBldmVudCBoYW5kbGVzIGZyb20gdGhlIHBy
b3ZpZGVkIHBhcmFtZXRlcnMsCiAvLyBzaWduYWxzIHRoZSBldmVudCwgYW5kIHJldHVybnMgYSBm
aWxlIGRlc2NyaXB0b3Igd3JhcHBlZCBhcm91bmQgdGhlIHBpcGUKIC8vIGhhbmRsZS4gVGhpcyBm
dW5jdGlvbiBpcyBjYWxsZWQgaW4gdGhlIGNoaWxkIHByb2Nlc3Mgb25seS4KQEAgLTEwNTQsOCAr
MTIzMSw4IEBAIGludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBpbnQgcGFyZW50
X3Byb2Nlc3NfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGQUxTRSwgIC8vIE5vbi1pbmhlcml0YWJsZS4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudF9wcm9jZXNzX2lkKSk7CiAgIGlm
IChwYXJlbnRfcHJvY2Vzc19oYW5kbGUuR2V0KCkgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsK
LSAgICBEZWF0aFRlc3RBYm9ydChTdHJpbmc6OkZvcm1hdCgiVW5hYmxlIHRvIG9wZW4gcGFyZW50
IHByb2Nlc3MgJXUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudF9w
cm9jZXNzX2lkKSk7CisgICAgRGVhdGhUZXN0QWJvcnQoIlVuYWJsZSB0byBvcGVuIHBhcmVudCBw
cm9jZXNzICIgKworICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhwYXJlbnRf
cHJvY2Vzc19pZCkpOwogICB9CiAKICAgLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogUmVwbGFj
ZSB0aGUgZm9sbG93aW5nIGNoZWNrIHdpdGggYQpAQCAtMTA3NSw5ICsxMjUyLDEwIEBAIGludCBH
ZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBpbnQgcGFyZW50X3Byb2Nlc3NfaWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEVVBMSUNBVEVfU0FNRV9BQ0NFU1Mg
aXMgdXNlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwgIC8vIFJlcXVlc3Qgbm9u
LWluaGVyaXRhYmxlIGhhbmRsZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgRFVQTElDQVRF
X1NBTUVfQUNDRVNTKSkgewotICAgIERlYXRoVGVzdEFib3J0KFN0cmluZzo6Rm9ybWF0KAotICAg
ICAgICAiVW5hYmxlIHRvIGR1cGxpY2F0ZSB0aGUgcGlwZSBoYW5kbGUgJUl1IGZyb20gdGhlIHBh
cmVudCBwcm9jZXNzICV1IiwKLSAgICAgICAgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCwgcGFyZW50
X3Byb2Nlc3NfaWQpKTsKKyAgICBEZWF0aFRlc3RBYm9ydCgiVW5hYmxlIHRvIGR1cGxpY2F0ZSB0
aGUgcGlwZSBoYW5kbGUgIiArCisgICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5n
KHdyaXRlX2hhbmRsZV9hc19zaXplX3QpICsKKyAgICAgICAgICAgICAgICAgICAiIGZyb20gdGhl
IHBhcmVudCBwcm9jZXNzICIgKworICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmlu
ZyhwYXJlbnRfcHJvY2Vzc19pZCkpOwogICB9CiAKICAgY29uc3QgSEFORExFIGV2ZW50X2hhbmRs
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPihldmVudF9oYW5kbGVfYXNfc2l6ZV90KTsKQEAg
LTEwODgsMTcgKzEyNjYsMTggQEAgaW50IEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9yKHVuc2lnbmVk
IGludCBwYXJlbnRfcHJvY2Vzc19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
RFVQTElDQVRFX1NBTUVfQUNDRVNTKSkgewotICAgIERlYXRoVGVzdEFib3J0KFN0cmluZzo6Rm9y
bWF0KAotICAgICAgICAiVW5hYmxlIHRvIGR1cGxpY2F0ZSB0aGUgZXZlbnQgaGFuZGxlICVJdSBm
cm9tIHRoZSBwYXJlbnQgcHJvY2VzcyAldSIsCi0gICAgICAgIGV2ZW50X2hhbmRsZV9hc19zaXpl
X3QsIHBhcmVudF9wcm9jZXNzX2lkKSk7CisgICAgRGVhdGhUZXN0QWJvcnQoIlVuYWJsZSB0byBk
dXBsaWNhdGUgdGhlIGV2ZW50IGhhbmRsZSAiICsKKyAgICAgICAgICAgICAgICAgICBTdHJlYW1h
YmxlVG9TdHJpbmcoZXZlbnRfaGFuZGxlX2FzX3NpemVfdCkgKworICAgICAgICAgICAgICAgICAg
ICIgZnJvbSB0aGUgcGFyZW50IHByb2Nlc3MgIiArCisgICAgICAgICAgICAgICAgICAgU3RyZWFt
YWJsZVRvU3RyaW5nKHBhcmVudF9wcm9jZXNzX2lkKSk7CiAgIH0KIAogICBjb25zdCBpbnQgd3Jp
dGVfZmQgPQogICAgICAgOjpfb3Blbl9vc2ZoYW5kbGUocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJf
dD4oZHVwX3dyaXRlX2hhbmRsZSksIE9fQVBQRU5EKTsKICAgaWYgKHdyaXRlX2ZkID09IC0xKSB7
Ci0gICAgRGVhdGhUZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICJVbmFibGUgdG8g
Y29udmVydCBwaXBlIGhhbmRsZSAlSXUgdG8gYSBmaWxlIGRlc2NyaXB0b3IiLAotICAgICAgICB3
cml0ZV9oYW5kbGVfYXNfc2l6ZV90KSk7CisgICAgRGVhdGhUZXN0QWJvcnQoIlVuYWJsZSB0byBj
b252ZXJ0IHBpcGUgaGFuZGxlICIgKworICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0
cmluZyh3cml0ZV9oYW5kbGVfYXNfc2l6ZV90KSArCisgICAgICAgICAgICAgICAgICAgIiB0byBh
IGZpbGUgZGVzY3JpcHRvciIpOwogICB9CiAKICAgLy8gU2lnbmFscyB0aGUgcGFyZW50IHRoYXQg
dGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlwZSBoYXMgYmVlbiBhY3F1aXJlZApAQCAtMTEwNyw3ICsx
Mjg2LDcgQEAgaW50IEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9yKHVuc2lnbmVkIGludCBwYXJlbnRf
cHJvY2Vzc19pZCwKIAogICByZXR1cm4gd3JpdGVfZmQ7CiB9Ci0jZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAogLy8gUmV0dXJucyBhIG5l
d2x5IGNyZWF0ZWQgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnIG9iamVjdCB3aXRoIGZpZWxkcwog
Ly8gaW5pdGlhbGl6ZWQgZnJvbSB0aGUgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVz
dCkgZmxhZyBpZgpAQCAtMTEyMyw3ICsxMzAyLDggQEAgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFn
KiBQYXJzZUludGVybmFsUnVuRGVhdGhUZXN0RmxhZygpIHsKICAgU3BsaXRTdHJpbmcoR1RFU1Rf
RkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkuY19zdHIoKSwgJ3wnLCAmZmllbGRzKTsKICAg
aW50IHdyaXRlX2ZkID0gLTE7CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09T
X1dJTkRPV1MKKwogICB1bnNpZ25lZCBpbnQgcGFyZW50X3Byb2Nlc3NfaWQgPSAwOwogICBzaXpl
X3Qgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCA9IDA7CiAgIHNpemVfdCBldmVudF9oYW5kbGVfYXNf
c2l6ZV90ID0gMDsKQEAgLTExMzQsMjMgKzEzMTQsMjQgQEAgSW50ZXJuYWxSdW5EZWF0aFRlc3RG
bGFnKiBQYXJzZUludGVybmFsUnVuRGVhdGhUZXN0RmxhZygpIHsKICAgICAgIHx8ICFQYXJzZU5h
dHVyYWxOdW1iZXIoZmllbGRzWzNdLCAmcGFyZW50X3Byb2Nlc3NfaWQpCiAgICAgICB8fCAhUGFy
c2VOYXR1cmFsTnVtYmVyKGZpZWxkc1s0XSwgJndyaXRlX2hhbmRsZV9hc19zaXplX3QpCiAgICAg
ICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1s1XSwgJmV2ZW50X2hhbmRsZV9hc19zaXpl
X3QpKSB7Ci0gICAgRGVhdGhUZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICJCYWQg
LS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFnOiAlcyIsCi0gICAgICAgIEdURVNU
X0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpLmNfc3RyKCkpKTsKKyAgICBEZWF0aFRlc3RB
Ym9ydCgiQmFkIC0tZ3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QgZmxhZzogIiArCisgICAg
ICAgICAgICAgICAgICAgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkpOwogICB9
CiAgIHdyaXRlX2ZkID0gR2V0U3RhdHVzRmlsZURlc2NyaXB0b3IocGFyZW50X3Byb2Nlc3NfaWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVfaGFuZGxlX2FzX3Np
emVfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudF9oYW5kbGVf
YXNfc2l6ZV90KTsKLSNlbHNlCisjIGVsc2UKKwogICBpZiAoZmllbGRzLnNpemUoKSAhPSA0CiAg
ICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1sxXSwgJmxpbmUpCiAgICAgICB8fCAh
UGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1syXSwgJmluZGV4KQogICAgICAgfHwgIVBhcnNlTmF0
dXJhbE51bWJlcihmaWVsZHNbM10sICZ3cml0ZV9mZCkpIHsKLSAgICBEZWF0aFRlc3RBYm9ydChT
dHJpbmc6OkZvcm1hdCgKLSAgICAgICAgIkJhZCAtLWd0ZXN0X2ludGVybmFsX3J1bl9kZWF0aF90
ZXN0IGZsYWc6ICVzIiwKLSAgICAgICAgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVz
dCkuY19zdHIoKSkpOworICAgIERlYXRoVGVzdEFib3J0KCJCYWQgLS1ndGVzdF9pbnRlcm5hbF9y
dW5fZGVhdGhfdGVzdCBmbGFnOiAiCisgICAgICAgICsgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5f
ZGVhdGhfdGVzdCkpOwogICB9Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworIyBlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCiAgIHJldHVybiBuZXcgSW50ZXJuYWxSdW5EZWF0aFRl
c3RGbGFnKGZpZWxkc1swXSwgbGluZSwgaW5kZXgsIHdyaXRlX2ZkKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWZpbGVwYXRoLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWZpbGVwYXRoLmNjCmluZGV4IGMxZWY5MTg4YWQ4
NWFiOGEwNDdhMzNiZjk5NDVlMWNkMGNjNzNlZmYuLjAyOTJkYzExOTU3ZWFhMjE4YjM1OGYxZjc2
MWNhNGE1Y2IyZmFlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9n
dGVzdC1maWxlcGF0aC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3Qt
ZmlsZXBhdGguY2MKQEAgLTI5LDM1ICsyOSwzNiBAQAogLy8KIC8vIEF1dGhvcnM6IGtlaXRoLnJh
eUBnbWFpbC5jb20gKEtlaXRoIFJheSkKIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0
LWZpbGVwYXRoLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9n
dGVzdC1maWxlcGF0aC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIK
IAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCiAjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSNp
bmNsdWRlIDx3aW5kb3dzLmg+CisjIGluY2x1ZGUgPHdpbmRvd3MuaD4KICNlbGlmIEdURVNUX09T
X1dJTkRPV1MKLSNpbmNsdWRlIDxkaXJlY3QuaD4KLSNpbmNsdWRlIDxpby5oPgorIyBpbmNsdWRl
IDxkaXJlY3QuaD4KKyMgaW5jbHVkZSA8aW8uaD4KICNlbGlmIEdURVNUX09TX1NZTUJJQU4KIC8v
IFN5bWJpYW4gT3BlbkMgaGFzIFBBVEhfTUFYIGluIHN5cy9zeXNsaW1pdHMuaAotI2luY2x1ZGUg
PHN5cy9zeXNsaW1pdHMuaD4KKyMgaW5jbHVkZSA8c3lzL3N5c2xpbWl0cy5oPgogI2Vsc2UKLSNp
bmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxjbGltaXRzPiAgLy8gU29tZSBMaW51eCBkaXN0
cmlidXRpb25zIGRlZmluZSBQQVRIX01BWCBoZXJlLgorIyBpbmNsdWRlIDxsaW1pdHMuaD4KKyMg
aW5jbHVkZSA8Y2xpbWl0cz4gIC8vIFNvbWUgTGludXggZGlzdHJpYnV0aW9ucyBkZWZpbmUgUEFU
SF9NQVggaGVyZS4KICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIAogI2lmIEdU
RVNUX09TX1dJTkRPV1MKLSNkZWZpbmUgR1RFU1RfUEFUSF9NQVhfIF9NQVhfUEFUSAorIyBkZWZp
bmUgR1RFU1RfUEFUSF9NQVhfIF9NQVhfUEFUSAogI2VsaWYgZGVmaW5lZChQQVRIX01BWCkKLSNk
ZWZpbmUgR1RFU1RfUEFUSF9NQVhfIFBBVEhfTUFYCisjIGRlZmluZSBHVEVTVF9QQVRIX01BWF8g
UEFUSF9NQVgKICNlbGlmIGRlZmluZWQoX1hPUEVOX1BBVEhfTUFYKQotI2RlZmluZSBHVEVTVF9Q
QVRIX01BWF8gX1hPUEVOX1BBVEhfTUFYCisjIGRlZmluZSBHVEVTVF9QQVRIX01BWF8gX1hPUEVO
X1BBVEhfTUFYCiAjZWxzZQotI2RlZmluZSBHVEVTVF9QQVRIX01BWF8gX1BPU0lYX1BBVEhfTUFY
CisjIGRlZmluZSBHVEVTVF9QQVRIX01BWF8gX1BPU0lYX1BBVEhfTUFYCiAjZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MKIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5o
PgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgogCiBuYW1lc3BhY2Ug
dGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewpAQCAtNjksMjEgKzcwLDE5IEBAIG5hbWVz
cGFjZSBpbnRlcm5hbCB7CiAvLyBvZiB0aGVtLgogY29uc3QgY2hhciBrUGF0aFNlcGFyYXRvciA9
ICdcXCc7CiBjb25zdCBjaGFyIGtBbHRlcm5hdGVQYXRoU2VwYXJhdG9yID0gJy8nOwotY29uc3Qg
Y2hhciBrUGF0aFNlcGFyYXRvclN0cmluZ1tdID0gIlxcIjsKIGNvbnN0IGNoYXIga0FsdGVybmF0
ZVBhdGhTZXBhcmF0b3JTdHJpbmdbXSA9ICIvIjsKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklM
RQorIyBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogLy8gV2luZG93cyBDRSBkb2Vzbid0IGhh
dmUgYSBjdXJyZW50IGRpcmVjdG9yeS4gWW91IHNob3VsZCBub3QgdXNlCiAvLyB0aGUgY3VycmVu
dCBkaXJlY3RvcnkgaW4gdGVzdHMgb24gV2luZG93cyBDRSwgYnV0IHRoaXMgYXQgbGVhc3QKIC8v
IHByb3ZpZGVzIGEgcmVhc29uYWJsZSBmYWxsYmFjay4KIGNvbnN0IGNoYXIga0N1cnJlbnREaXJl
Y3RvcnlTdHJpbmdbXSA9ICJcXCI7CiAvLyBXaW5kb3dzIENFIGRvZXNuJ3QgZGVmaW5lIElOVkFM
SURfRklMRV9BVFRSSUJVVEVTCiBjb25zdCBEV09SRCBrSW52YWxpZEZpbGVBdHRyaWJ1dGVzID0g
MHhmZmZmZmZmZjsKLSNlbHNlCisjIGVsc2UKIGNvbnN0IGNoYXIga0N1cnJlbnREaXJlY3RvcnlT
dHJpbmdbXSA9ICIuXFwiOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBl
bmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKICNlbHNlCiBjb25zdCBjaGFyIGtQYXRo
U2VwYXJhdG9yID0gJy8nOwotY29uc3QgY2hhciBrUGF0aFNlcGFyYXRvclN0cmluZ1tdID0gIi8i
OwogY29uc3QgY2hhciBrQ3VycmVudERpcmVjdG9yeVN0cmluZ1tdID0gIi4vIjsKICNlbmRpZiAg
Ly8gR1RFU1RfT1NfV0lORE9XUwogCkBAIC05OCw3ICs5Nyw3IEBAIHN0YXRpYyBib29sIElzUGF0
aFNlcGFyYXRvcihjaGFyIGMpIHsKIAogLy8gUmV0dXJucyB0aGUgY3VycmVudCB3b3JraW5nIGRp
cmVjdG9yeSwgb3IgIiIgaWYgdW5zdWNjZXNzZnVsLgogRmlsZVBhdGggRmlsZVBhdGg6OkdldEN1
cnJlbnREaXIoKSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyNpZiBHVEVTVF9PU19X
SU5ET1dTX01PQklMRSB8fCBHVEVTVF9PU19XSU5ET1dTX1BIT05FIHx8IEdURVNUX09TX1dJTkRP
V1NfUlQKICAgLy8gV2luZG93cyBDRSBkb2Vzbid0IGhhdmUgYSBjdXJyZW50IGRpcmVjdG9yeSwg
c28gd2UganVzdCByZXR1cm4KICAgLy8gc29tZXRoaW5nIHJlYXNvbmFibGUuCiAgIHJldHVybiBG
aWxlUGF0aChrQ3VycmVudERpcmVjdG9yeVN0cmluZyk7CkBAIC0xMDcsNyArMTA2LDE0IEBAIEZp
bGVQYXRoIEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkgewogICByZXR1cm4gRmlsZVBhdGgoX2dl
dGN3ZChjd2QsIHNpemVvZihjd2QpKSA9PSBOVUxMID8gIiIgOiBjd2QpOwogI2Vsc2UKICAgY2hh
ciBjd2RbR1RFU1RfUEFUSF9NQVhfICsgMV0gPSB7ICdcMCcgfTsKLSAgcmV0dXJuIEZpbGVQYXRo
KGdldGN3ZChjd2QsIHNpemVvZihjd2QpKSA9PSBOVUxMID8gIiIgOiBjd2QpOworICBjaGFyKiBy
ZXN1bHQgPSBnZXRjd2QoY3dkLCBzaXplb2YoY3dkKSk7CisjIGlmIEdURVNUX09TX05BQ0wKKyAg
Ly8gZ2V0Y3dkIHdpbGwgbGlrZWx5IGZhaWwgaW4gTmFDbCBkdWUgdG8gdGhlIHNhbmRib3gsIHNv
IHJldHVybiBzb21ldGhpbmcKKyAgLy8gcmVhc29uYWJsZS4gVGhlIHVzZXIgbWF5IGhhdmUgcHJv
dmlkZWQgYSBzaGltIGltcGxlbWVudGF0aW9uIGZvciBnZXRjd2QsCisgIC8vIGhvd2V2ZXIsIHNv
IGZhbGxiYWNrIG9ubHkgd2hlbiBmYWlsdXJlIGlzIGRldGVjdGVkLgorICByZXR1cm4gRmlsZVBh
dGgocmVzdWx0ID09IE5VTEwgPyBrQ3VycmVudERpcmVjdG9yeVN0cmluZyA6IGN3ZCk7CisjIGVu
ZGlmICAvLyBHVEVTVF9PU19OQUNMCisgIHJldHVybiBGaWxlUGF0aChyZXN1bHQgPT0gTlVMTCA/
ICIiIDogY3dkKTsKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIH0KIApAQCAt
MTE2LDkgKzEyMiwxMCBAQCBGaWxlUGF0aCBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpIHsKIC8v
IEZpbGVQYXRoKCJkaXIvZmlsZSIpLiBJZiBhIGNhc2UtaW5zZW5zaXRpdmUgZXh0ZW5zaW9uIGlz
IG5vdAogLy8gZm91bmQsIHJldHVybnMgYSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBGaWxlUGF0aC4K
IEZpbGVQYXRoIEZpbGVQYXRoOjpSZW1vdmVFeHRlbnNpb24oY29uc3QgY2hhciogZXh0ZW5zaW9u
KSBjb25zdCB7Ci0gIFN0cmluZyBkb3RfZXh0ZW5zaW9uKFN0cmluZzo6Rm9ybWF0KCIuJXMiLCBl
eHRlbnNpb24pKTsKLSAgaWYgKHBhdGhuYW1lXy5FbmRzV2l0aENhc2VJbnNlbnNpdGl2ZShkb3Rf
ZXh0ZW5zaW9uLmNfc3RyKCkpKSB7Ci0gICAgcmV0dXJuIEZpbGVQYXRoKFN0cmluZyhwYXRobmFt
ZV8uY19zdHIoKSwgcGF0aG5hbWVfLmxlbmd0aCgpIC0gNCkpOworICBjb25zdCBzdGQ6OnN0cmlu
ZyBkb3RfZXh0ZW5zaW9uID0gc3RkOjpzdHJpbmcoIi4iKSArIGV4dGVuc2lvbjsKKyAgaWYgKFN0
cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUocGF0aG5hbWVfLCBkb3RfZXh0ZW5zaW9uKSkg
eworICAgIHJldHVybiBGaWxlUGF0aChwYXRobmFtZV8uc3Vic3RyKAorICAgICAgICAwLCBwYXRo
bmFtZV8ubGVuZ3RoKCkgLSBkb3RfZXh0ZW5zaW9uLmxlbmd0aCgpKSk7CiAgIH0KICAgcmV0dXJu
ICp0aGlzOwogfQpAQCAtMTQ3LDcgKzE1NCw3IEBAIGNvbnN0IGNoYXIqIEZpbGVQYXRoOjpGaW5k
TGFzdFBhdGhTZXBhcmF0b3IoKSBjb25zdCB7CiAvLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCAnXCcg
aXMgdGhlIHBhdGggc2VwYXJhdG9yLCBvdGhlcndpc2UgaXQgaXMgJy8nLgogRmlsZVBhdGggRmls
ZVBhdGg6OlJlbW92ZURpcmVjdG9yeU5hbWUoKSBjb25zdCB7CiAgIGNvbnN0IGNoYXIqIGNvbnN0
IGxhc3Rfc2VwID0gRmluZExhc3RQYXRoU2VwYXJhdG9yKCk7Ci0gIHJldHVybiBsYXN0X3NlcCA/
IEZpbGVQYXRoKFN0cmluZyhsYXN0X3NlcCArIDEpKSA6ICp0aGlzOworICByZXR1cm4gbGFzdF9z
ZXAgPyBGaWxlUGF0aChsYXN0X3NlcCArIDEpIDogKnRoaXM7CiB9CiAKIC8vIFJlbW92ZUZpbGVO
YW1lIHJldHVybnMgdGhlIGRpcmVjdG9yeSBwYXRoIHdpdGggdGhlIGZpbGVuYW1lIHJlbW92ZWQu
CkBAIC0xNTgsOSArMTY1LDkgQEAgRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZURpcmVjdG9yeU5h
bWUoKSBjb25zdCB7CiAvLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCAnXCcgaXMgdGhlIHBhdGggc2Vw
YXJhdG9yLCBvdGhlcndpc2UgaXQgaXMgJy8nLgogRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZUZp
bGVOYW1lKCkgY29uc3QgewogICBjb25zdCBjaGFyKiBjb25zdCBsYXN0X3NlcCA9IEZpbmRMYXN0
UGF0aFNlcGFyYXRvcigpOwotICBTdHJpbmcgZGlyOworICBzdGQ6OnN0cmluZyBkaXI7CiAgIGlm
IChsYXN0X3NlcCkgewotICAgIGRpciA9IFN0cmluZyhjX3N0cigpLCBsYXN0X3NlcCArIDEgLSBj
X3N0cigpKTsKKyAgICBkaXIgPSBzdGQ6OnN0cmluZyhjX3N0cigpLCBsYXN0X3NlcCArIDEgLSBj
X3N0cigpKTsKICAgfSBlbHNlIHsKICAgICBkaXIgPSBrQ3VycmVudERpcmVjdG9yeVN0cmluZzsK
ICAgfQpAQCAtMTc3LDExICsxODQsMTIgQEAgRmlsZVBhdGggRmlsZVBhdGg6Ok1ha2VGaWxlTmFt
ZShjb25zdCBGaWxlUGF0aCYgZGlyZWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBGaWxlUGF0aCYgYmFzZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgbnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBleHRlbnNpb24pIHsKLSAgU3RyaW5nIGZpbGU7CisgIHN0ZDo6c3RyaW5nIGZpbGU7
CiAgIGlmIChudW1iZXIgPT0gMCkgewotICAgIGZpbGUgPSBTdHJpbmc6OkZvcm1hdCgiJXMuJXMi
LCBiYXNlX25hbWUuY19zdHIoKSwgZXh0ZW5zaW9uKTsKKyAgICBmaWxlID0gYmFzZV9uYW1lLnN0
cmluZygpICsgIi4iICsgZXh0ZW5zaW9uOwogICB9IGVsc2UgewotICAgIGZpbGUgPSBTdHJpbmc6
OkZvcm1hdCgiJXNfJWQuJXMiLCBiYXNlX25hbWUuY19zdHIoKSwgbnVtYmVyLCBleHRlbnNpb24p
OworICAgIGZpbGUgPSBiYXNlX25hbWUuc3RyaW5nKCkgKyAiXyIgKyBTdHJlYW1hYmxlVG9TdHJp
bmcobnVtYmVyKQorICAgICAgICArICIuIiArIGV4dGVuc2lvbjsKICAgfQogICByZXR1cm4gQ29u
Y2F0UGF0aHMoZGlyZWN0b3J5LCBGaWxlUGF0aChmaWxlKSk7CiB9CkBAIC0xOTMsOCArMjAxLDcg
QEAgRmlsZVBhdGggRmlsZVBhdGg6OkNvbmNhdFBhdGhzKGNvbnN0IEZpbGVQYXRoJiBkaXJlY3Rv
cnksCiAgIGlmIChkaXJlY3RvcnkuSXNFbXB0eSgpKQogICAgIHJldHVybiByZWxhdGl2ZV9wYXRo
OwogICBjb25zdCBGaWxlUGF0aCBkaXIoZGlyZWN0b3J5LlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFy
YXRvcigpKTsKLSAgcmV0dXJuIEZpbGVQYXRoKFN0cmluZzo6Rm9ybWF0KCIlcyVjJXMiLCBkaXIu
Y19zdHIoKSwga1BhdGhTZXBhcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWxhdGl2ZV9wYXRoLmNfc3RyKCkpKTsKKyAgcmV0dXJuIEZpbGVQYXRoKGRpci5zdHJpbmco
KSArIGtQYXRoU2VwYXJhdG9yICsgcmVsYXRpdmVfcGF0aC5zdHJpbmcoKSk7CiB9CiAKIC8vIFJl
dHVybnMgdHJ1ZSBpZiBwYXRobmFtZSBkZXNjcmliZXMgc29tZXRoaW5nIGZpbmRhYmxlIGluIHRo
ZSBmaWxlLXN5c3RlbSwKQEAgLTMzOCw3ICszNDUsNyBAQCBib29sIEZpbGVQYXRoOjpDcmVhdGVG
b2xkZXIoKSBjb25zdCB7CiAvLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCB1c2VzIFwgYXMgdGhlIHNl
cGFyYXRvciwgb3RoZXIgcGxhdGZvcm1zIHVzZSAvLgogRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92
ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpIGNvbnN0IHsKICAgcmV0dXJuIElzRGlyZWN0b3J5KCkK
LSAgICAgID8gRmlsZVBhdGgoU3RyaW5nKHBhdGhuYW1lXy5jX3N0cigpLCBwYXRobmFtZV8ubGVu
Z3RoKCkgLSAxKSkKKyAgICAgID8gRmlsZVBhdGgocGF0aG5hbWVfLnN1YnN0cigwLCBwYXRobmFt
ZV8ubGVuZ3RoKCkgLSAxKSkKICAgICAgIDogKnRoaXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaAppbmRleCAwMTQxNWY3ZDk1OWRj
YTA3MDlmYWMxNzY2MTBkYjczODhmNjA0NTU5Li5lZDhhNjgyYTk2NGYwNzBjYTA2YTlkOGU5YTc3
ZWE1NjhkYjBmZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rl
c3QtaW50ZXJuYWwtaW5sLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0
LWludGVybmFsLWlubC5oCkBAIC00MCwxMyArNDAsMTMgQEAKIC8vIEdURVNUX0lNUExFTUVOVEFU
SU9OXyBpcyBkZWZpbmVkIHRvIDEgaWZmIHRoZSBjdXJyZW50IHRyYW5zbGF0aW9uIHVuaXQgaXMK
IC8vIHBhcnQgb2YgR29vZ2xlIFRlc3QncyBpbXBsZW1lbnRhdGlvbjsgb3RoZXJ3aXNlIGl0J3Mg
dW5kZWZpbmVkLgogI2lmICFHVEVTVF9JTVBMRU1FTlRBVElPTl8KLS8vIEEgdXNlciBpcyB0cnlp
bmcgdG8gaW5jbHVkZSB0aGlzIGZyb20gaGlzIGNvZGUgLSBqdXN0IHNheSBuby4KLSNlcnJvciAi
Z3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzIGludGVybmFsIGlt
cGxlbWVudGF0aW9uLiIKLSNlcnJvciAiSXQgbXVzdCBub3QgYmUgaW5jbHVkZWQgZXhjZXB0IGJ5
IEdvb2dsZSBUZXN0IGl0c2VsZi4iCisvLyBJZiB0aGlzIGZpbGUgaXMgaW5jbHVkZWQgZnJvbSB0
aGUgdXNlcidzIGNvZGUsIGp1c3Qgc2F5IG5vLgorIyBlcnJvciAiZ3Rlc3QtaW50ZXJuYWwtaW5s
LmggaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzIGludGVybmFsIGltcGxlbWVudGF0aW9uLiIKKyMg
ZXJyb3IgIkl0IG11c3Qgbm90IGJlIGluY2x1ZGVkIGV4Y2VwdCBieSBHb29nbGUgVGVzdCBpdHNl
bGYuIgogI2VuZGlmICAvLyBHVEVTVF9JTVBMRU1FTlRBVElPTl8KIAogI2lmbmRlZiBfV0lOMzJf
V0NFCi0jaW5jbHVkZSA8ZXJybm8uaD4KKyMgaW5jbHVkZSA8ZXJybm8uaD4KICNlbmRpZiAgLy8g
IV9XSU4zMl9XQ0UKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4gIC8v
IEZvciBzdHJ0b2xsL19zdHJ0b3VsNjQvbWFsbG9jL2ZyZWUuCkBAIC01NiwxNCArNTYsMTkgQEAK
ICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSA8Z3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaCIKKworI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKyMgaW5jbHVkZSA8YXJwYS9p
bmV0Lmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8bmV0ZGIuaD4gIC8vIE5PTElOVAorI2VuZGlm
CiAKICNpZiBHVEVTVF9PU19XSU5ET1dTCi0jaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gRm9yIERX
T1JELgorIyBpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBOT0xJTlQKICNlbmRpZiAgLy8gR1RFU1Rf
T1NfV0lORE9XUwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4gIC8vIE5PTElOVAotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiICAvLyBOT0xJ
TlQKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKIAogbmFtZXNwYWNlIHRlc3Rpbmcgewog
CkBAIC05Myw3ICs5OCw5IEBAIGNvbnN0IGNoYXIga1JhbmRvbVNlZWRGbGFnW10gPSAicmFuZG9t
X3NlZWQiOwogY29uc3QgY2hhciBrUmVwZWF0RmxhZ1tdID0gInJlcGVhdCI7CiBjb25zdCBjaGFy
IGtTaHVmZmxlRmxhZ1tdID0gInNodWZmbGUiOwogY29uc3QgY2hhciBrU3RhY2tUcmFjZURlcHRo
RmxhZ1tdID0gInN0YWNrX3RyYWNlX2RlcHRoIjsKK2NvbnN0IGNoYXIga1N0cmVhbVJlc3VsdFRv
RmxhZ1tdID0gInN0cmVhbV9yZXN1bHRfdG8iOwogY29uc3QgY2hhciBrVGhyb3dPbkZhaWx1cmVG
bGFnW10gPSAidGhyb3dfb25fZmFpbHVyZSI7Citjb25zdCBjaGFyIGtGbGFnZmlsZUZsYWdbXSA9
ICJmbGFnZmlsZSI7CiAKIC8vIEEgdmFsaWQgcmFuZG9tIHNlZWQgbXVzdCBiZSBpbiBbMSwga01h
eFJhbmRvbVNlZWRdLgogY29uc3QgaW50IGtNYXhSYW5kb21TZWVkID0gOTk5OTk7CkBAIC0xMTEs
NiArMTE4LDEyIEBAIEdURVNUX0FQSV8gYm9vbCBTaG91bGRVc2VDb2xvcihib29sIHN0ZG91dF9p
c190dHkpOwogLy8gRm9ybWF0cyB0aGUgZ2l2ZW4gdGltZSBpbiBtaWxsaXNlY29uZHMgYXMgc2Vj
b25kcy4KIEdURVNUX0FQSV8gc3RkOjpzdHJpbmcgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRz
KFRpbWVJbk1pbGxpcyBtcyk7CiAKKy8vIENvbnZlcnRzIHRoZSBnaXZlbiB0aW1lIGluIG1pbGxp
c2Vjb25kcyB0byBhIGRhdGUgc3RyaW5nIGluIHRoZSBJU08gODYwMQorLy8gZm9ybWF0LCB3aXRo
b3V0IHRoZSB0aW1lem9uZSBpbmZvcm1hdGlvbi4gIE4uQi46IGR1ZSB0byB0aGUgdXNlIHRoZQor
Ly8gbm9uLXJlZW50cmFudCBsb2NhbHRpbWUoKSBmdW5jdGlvbiwgdGhpcyBmdW5jdGlvbiBpcyBu
b3QgdGhyZWFkIHNhZmUuICBEbworLy8gbm90IHVzZSBpdCBpbiBhbnkgY29kZSB0aGF0IGNhbiBi
ZSBjYWxsZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBG
b3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMShUaW1lSW5NaWxsaXMgbXMpOworCiAvLyBQ
YXJzZXMgYSBzdHJpbmcgZm9yIGFuIEludDMyIGZsYWcsIGluIHRoZSBmb3JtIG9mICItLWZsYWc9
dmFsdWUiLgogLy8KIC8vIE9uIHN1Y2Nlc3MsIHN0b3JlcyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcg
aW4gKnZhbHVlLCBhbmQgcmV0dXJucwpAQCAtMTY1LDYgKzE3OCw3IEBAIGNsYXNzIEdUZXN0Rmxh
Z1NhdmVyIHsKICAgICByZXBlYXRfID0gR1RFU1RfRkxBRyhyZXBlYXQpOwogICAgIHNodWZmbGVf
ID0gR1RFU1RfRkxBRyhzaHVmZmxlKTsKICAgICBzdGFja190cmFjZV9kZXB0aF8gPSBHVEVTVF9G
TEFHKHN0YWNrX3RyYWNlX2RlcHRoKTsKKyAgICBzdHJlYW1fcmVzdWx0X3RvXyA9IEdURVNUX0ZM
QUcoc3RyZWFtX3Jlc3VsdF90byk7CiAgICAgdGhyb3dfb25fZmFpbHVyZV8gPSBHVEVTVF9GTEFH
KHRocm93X29uX2ZhaWx1cmUpOwogICB9CiAKQEAgLTE4NSwzNyArMTk5LDM4IEBAIGNsYXNzIEdU
ZXN0RmxhZ1NhdmVyIHsKICAgICBHVEVTVF9GTEFHKHJlcGVhdCkgPSByZXBlYXRfOwogICAgIEdU
RVNUX0ZMQUcoc2h1ZmZsZSkgPSBzaHVmZmxlXzsKICAgICBHVEVTVF9GTEFHKHN0YWNrX3RyYWNl
X2RlcHRoKSA9IHN0YWNrX3RyYWNlX2RlcHRoXzsKKyAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1
bHRfdG8pID0gc3RyZWFtX3Jlc3VsdF90b187CiAgICAgR1RFU1RfRkxBRyh0aHJvd19vbl9mYWls
dXJlKSA9IHRocm93X29uX2ZhaWx1cmVfOwogICB9CisKICBwcml2YXRlOgogICAvLyBGaWVsZHMg
Zm9yIHNhdmluZyB0aGUgb3JpZ2luYWwgdmFsdWVzIG9mIGZsYWdzLgogICBib29sIGFsc29fcnVu
X2Rpc2FibGVkX3Rlc3RzXzsKICAgYm9vbCBicmVha19vbl9mYWlsdXJlXzsKICAgYm9vbCBjYXRj
aF9leGNlcHRpb25zXzsKLSAgU3RyaW5nIGNvbG9yXzsKLSAgU3RyaW5nIGRlYXRoX3Rlc3Rfc3R5
bGVfOworICBzdGQ6OnN0cmluZyBjb2xvcl87CisgIHN0ZDo6c3RyaW5nIGRlYXRoX3Rlc3Rfc3R5
bGVfOwogICBib29sIGRlYXRoX3Rlc3RfdXNlX2ZvcmtfOwotICBTdHJpbmcgZmlsdGVyXzsKLSAg
U3RyaW5nIGludGVybmFsX3J1bl9kZWF0aF90ZXN0XzsKKyAgc3RkOjpzdHJpbmcgZmlsdGVyXzsK
KyAgc3RkOjpzdHJpbmcgaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfOwogICBib29sIGxpc3RfdGVz
dHNfOwotICBTdHJpbmcgb3V0cHV0XzsKKyAgc3RkOjpzdHJpbmcgb3V0cHV0XzsKICAgYm9vbCBw
cmludF90aW1lXzsKICAgaW50ZXJuYWw6OkludDMyIHJhbmRvbV9zZWVkXzsKICAgaW50ZXJuYWw6
OkludDMyIHJlcGVhdF87CiAgIGJvb2wgc2h1ZmZsZV87CiAgIGludGVybmFsOjpJbnQzMiBzdGFj
a190cmFjZV9kZXB0aF87CisgIHN0ZDo6c3RyaW5nIHN0cmVhbV9yZXN1bHRfdG9fOwogICBib29s
IHRocm93X29uX2ZhaWx1cmVfOwogfSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXzsKIAogLy8gQ29u
dmVydHMgYSBVbmljb2RlIGNvZGUgcG9pbnQgdG8gYSBuYXJyb3cgc3RyaW5nIGluIFVURi04IGVu
Y29kaW5nLgogLy8gY29kZV9wb2ludCBwYXJhbWV0ZXIgaXMgb2YgdHlwZSBVSW50MzIgYmVjYXVz
ZSB3Y2hhcl90IG1heSBub3QgYmUKIC8vIHdpZGUgZW5vdWdoIHRvIGNvbnRhaW4gYSBjb2RlIHBv
aW50LgotLy8gVGhlIG91dHB1dCBidWZmZXIgc3RyIG11c3QgY29udGFpbnQgYXQgbGVhc3QgMzIg
Y2hhcmFjdGVycy4KLS8vIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBhZGRyZXNzIG9mIHRoZSBv
dXRwdXQgYnVmZmVyLgogLy8gSWYgdGhlIGNvZGVfcG9pbnQgaXMgbm90IGEgdmFsaWQgVW5pY29k
ZSBjb2RlIHBvaW50Ci0vLyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNvZGUgcmFuZ2UgVSswIHRvIFUr
MTBGRkZGKSBpdCB3aWxsIGJlIG91dHB1dAotLy8gYXMgJyhJbnZhbGlkIFVuaWNvZGUgMHhYWFhY
WFhYWCknLgotR1RFU1RfQVBJXyBjaGFyKiBDb2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9p
bnQsIGNoYXIqIHN0cik7CisvLyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNvZGUgcmFuZ2UgVSswIHRv
IFUrMTBGRkZGKSBpdCB3aWxsIGJlIGNvbnZlcnRlZAorLy8gdG8gIihJbnZhbGlkIFVuaWNvZGUg
MHhYWFhYWFhYWCkiLgorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBDb2RlUG9pbnRUb1V0ZjgoVUlu
dDMyIGNvZGVfcG9pbnQpOwogCiAvLyBDb252ZXJ0cyBhIHdpZGUgc3RyaW5nIHRvIGEgbmFycm93
IHN0cmluZyBpbiBVVEYtOCBlbmNvZGluZy4KIC8vIFRoZSB3aWRlIHN0cmluZyBpcyBhc3N1bWVk
IHRvIGhhdmUgdGhlIGZvbGxvd2luZyBlbmNvZGluZzoKQEAgLTIzMCw3ICsyNDUsNyBAQCBHVEVT
VF9BUElfIGNoYXIqIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9wb2ludCwgY2hhciogc3Ry
KTsKIC8vIGFzICcoSW52YWxpZCBVbmljb2RlIDB4WFhYWFhYWFgpJy4gSWYgdGhlIHN0cmluZyBp
cyBpbiBVVEYxNiBlbmNvZGluZwogLy8gYW5kIGNvbnRhaW5zIGludmFsaWQgVVRGLTE2IHN1cnJv
Z2F0ZSBwYWlycywgdmFsdWVzIGluIHRob3NlIHBhaXJzCiAvLyB3aWxsIGJlIGVuY29kZWQgYXMg
aW5kaXZpZHVhbCBVbmljb2RlIGNoYXJhY3RlcnMgZnJvbSBCYXNpYyBOb3JtYWwgUGxhbmUuCi1H
VEVTVF9BUElfIFN0cmluZyBXaWRlU3RyaW5nVG9VdGY4KGNvbnN0IHdjaGFyX3QqIHN0ciwgaW50
IG51bV9jaGFycyk7CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFdpZGVTdHJpbmdUb1V0ZjgoY29u
c3Qgd2NoYXJfdCogc3RyLCBpbnQgbnVtX2NoYXJzKTsKIAogLy8gUmVhZHMgdGhlIEdURVNUX1NI
QVJEX1NUQVRVU19GSUxFIGVudmlyb25tZW50IHZhcmlhYmxlLCBhbmQgY3JlYXRlcyB0aGUgZmls
ZQogLy8gaWYgdGhlIHZhcmlhYmxlIGlzIHByZXNlbnQuIElmIGEgZmlsZSBhbHJlYWR5IGV4aXN0
cyBhdCB0aGlzIGxvY2F0aW9uLCB0aGlzCkBAIC0yNjYsNyArMjgxLDE0IEBAIEdURVNUX0FQSV8g
Ym9vbCBTaG91bGRSdW5UZXN0T25TaGFyZCgKIC8vIHRoZSBnaXZlbiBwcmVkaWNhdGUuCiB0ZW1w
bGF0ZSA8Y2xhc3MgQ29udGFpbmVyLCB0eXBlbmFtZSBQcmVkaWNhdGU+CiBpbmxpbmUgaW50IENv
dW50SWYoY29uc3QgQ29udGFpbmVyJiBjLCBQcmVkaWNhdGUgcHJlZGljYXRlKSB7Ci0gIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6Y291bnRfaWYoYy5iZWdpbigpLCBjLmVuZCgpLCBwcmVk
aWNhdGUpKTsKKyAgLy8gSW1wbGVtZW50ZWQgYXMgYW4gZXhwbGljaXQgbG9vcCBzaW5jZSBzdGQ6
OmNvdW50X2lmKCkgaW4gbGliQ3N0ZCBvbgorICAvLyBTb2xhcmlzIGhhcyBhIG5vbi1zdGFuZGFy
ZCBzaWduYXR1cmUuCisgIGludCBjb3VudCA9IDA7CisgIGZvciAodHlwZW5hbWUgQ29udGFpbmVy
Ojpjb25zdF9pdGVyYXRvciBpdCA9IGMuYmVnaW4oKTsgaXQgIT0gYy5lbmQoKTsgKytpdCkgewor
ICAgIGlmIChwcmVkaWNhdGUoKml0KSkKKyAgICAgICsrY291bnQ7CisgIH0KKyAgcmV0dXJuIGNv
dW50OwogfQogCiAvLyBBcHBsaWVzIGEgZnVuY3Rpb24vZnVuY3RvciB0byBlYWNoIGVsZW1lbnQg
aW4gdGhlIGNvbnRhaW5lci4KQEAgLTMyNyw5NSArMzQ5LDE1IEBAIGNsYXNzIFRlc3RQcm9wZXJ0
eUtleUlzIHsKICAgLy8gQ29uc3RydWN0b3IuCiAgIC8vCiAgIC8vIFRlc3RQcm9wZXJ0eUtleUlz
IGhhcyBOTyBkZWZhdWx0IGNvbnN0cnVjdG9yLgotICBleHBsaWNpdCBUZXN0UHJvcGVydHlLZXlJ
cyhjb25zdCBjaGFyKiBrZXkpCi0gICAgICA6IGtleV8oa2V5KSB7fQorICBleHBsaWNpdCBUZXN0
UHJvcGVydHlLZXlJcyhjb25zdCBzdGQ6OnN0cmluZyYga2V5KSA6IGtleV8oa2V5KSB7fQogCiAg
IC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgbmFtZSBvZiB0ZXN0IHByb3BlcnR5IG1hdGNo
ZXMgb24ga2V5Xy4KICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9w
cm9wZXJ0eSkgY29uc3QgewotICAgIHJldHVybiBTdHJpbmcodGVzdF9wcm9wZXJ0eS5rZXkoKSku
Q29tcGFyZShrZXlfKSA9PSAwOworICAgIHJldHVybiB0ZXN0X3Byb3BlcnR5LmtleSgpID09IGtl
eV87CiAgIH0KIAogIHByaXZhdGU6Ci0gIFN0cmluZyBrZXlfOwotfTsKLQotY2xhc3MgVGVzdElu
Zm9JbXBsIHsKLSBwdWJsaWM6Ci0gIFRlc3RJbmZvSW1wbChUZXN0SW5mbyogcGFyZW50LCBjb25z
dCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUs
IGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9jb21tZW50LAotICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogY29tbWVudCwgVHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCi0gICAgICAgICAgICAgICBpbnRl
cm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5KTsKLSAgflRlc3RJbmZvSW1wbCgpOwotCi0g
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRlc3Qgc2hvdWxkIHJ1bi4KLSAgYm9vbCBzaG91bGRf
cnVuKCkgY29uc3QgeyByZXR1cm4gc2hvdWxkX3J1bl87IH0KLQotICAvLyBTZXRzIHRoZSBzaG91
bGRfcnVuIG1lbWJlci4KLSAgdm9pZCBzZXRfc2hvdWxkX3J1bihib29sIHNob3VsZCkgeyBzaG91
bGRfcnVuXyA9IHNob3VsZDsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRlc3QgaXMg
ZGlzYWJsZWQuIERpc2FibGVkIHRlc3RzIGFyZSBub3QgcnVuLgotICBib29sIGlzX2Rpc2FibGVk
KCkgY29uc3QgeyByZXR1cm4gaXNfZGlzYWJsZWRfOyB9Ci0KLSAgLy8gU2V0cyB0aGUgaXNfZGlz
YWJsZWQgbWVtYmVyLgotICB2b2lkIHNldF9pc19kaXNhYmxlZChib29sIGlzKSB7IGlzX2Rpc2Fi
bGVkXyA9IGlzOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBtYXRjaGVzIHRo
ZSBmaWx0ZXIgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLgotICBib29sIG1hdGNoZXNfZmlsdGVyKCkg
Y29uc3QgeyByZXR1cm4gbWF0Y2hlc19maWx0ZXJfOyB9Ci0KLSAgLy8gU2V0cyB0aGUgbWF0Y2hl
c19maWx0ZXIgbWVtYmVyLgotICB2b2lkIHNldF9tYXRjaGVzX2ZpbHRlcihib29sIG1hdGNoZXMp
IHsgbWF0Y2hlc19maWx0ZXJfID0gbWF0Y2hlczsgfQotCi0gIC8vIFJldHVybnMgdGhlIHRlc3Qg
Y2FzZSBuYW1lLgotICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0IHsgcmV0dXJu
IHRlc3RfY2FzZV9uYW1lXy5jX3N0cigpOyB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBuYW1l
LgotICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbmFtZV8uY19zdHIoKTsgfQot
Ci0gIC8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBjb21tZW50LgotICBjb25zdCBjaGFyKiB0ZXN0
X2Nhc2VfY29tbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRlc3RfY2FzZV9jb21tZW50Xy5jX3N0cigp
OyB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBjb21tZW50LgotICBjb25zdCBjaGFyKiBjb21t
ZW50KCkgY29uc3QgeyByZXR1cm4gY29tbWVudF8uY19zdHIoKTsgfQotCi0gIC8vIFJldHVybnMg
dGhlIElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuCi0gIFR5cGVJZCBmaXh0dXJlX2NsYXNz
X2lkKCkgY29uc3QgeyByZXR1cm4gZml4dHVyZV9jbGFzc19pZF87IH0KLQotICAvLyBSZXR1cm5z
IHRoZSB0ZXN0IHJlc3VsdC4KLSAgVGVzdFJlc3VsdCogcmVzdWx0KCkgeyByZXR1cm4gJnJlc3Vs
dF87IH0KLSAgY29uc3QgVGVzdFJlc3VsdCogcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gJnJlc3Vs
dF87IH0KLQotICAvLyBDcmVhdGVzIHRoZSB0ZXN0IG9iamVjdCwgcnVucyBpdCwgcmVjb3JkcyBp
dHMgcmVzdWx0LCBhbmQgdGhlbgotICAvLyBkZWxldGVzIGl0LgotICB2b2lkIFJ1bigpOwotCi0g
IC8vIENsZWFycyB0aGUgdGVzdCByZXN1bHQuCi0gIHZvaWQgQ2xlYXJSZXN1bHQoKSB7IHJlc3Vs
dF8uQ2xlYXIoKTsgfQotCi0gIC8vIENsZWFycyB0aGUgdGVzdCByZXN1bHQgaW4gdGhlIGdpdmVu
IFRlc3RJbmZvIG9iamVjdC4KLSAgc3RhdGljIHZvaWQgQ2xlYXJUZXN0UmVzdWx0KFRlc3RJbmZv
ICogdGVzdF9pbmZvKSB7Ci0gICAgdGVzdF9pbmZvLT5pbXBsKCktPkNsZWFyUmVzdWx0KCk7Ci0g
IH0KLQotIHByaXZhdGU6Ci0gIC8vIFRoZXNlIGZpZWxkcyBhcmUgaW1tdXRhYmxlIHByb3BlcnRp
ZXMgb2YgdGhlIHRlc3QuCi0gIFRlc3RJbmZvKiBjb25zdCBwYXJlbnRfOyAgICAgICAgICAvLyBU
aGUgb3duZXIgb2YgdGhpcyBvYmplY3QKLSAgY29uc3QgU3RyaW5nIHRlc3RfY2FzZV9uYW1lXzsg
ICAgIC8vIFRlc3QgY2FzZSBuYW1lCi0gIGNvbnN0IFN0cmluZyBuYW1lXzsgICAgICAgICAgICAg
ICAvLyBUZXN0IG5hbWUKLSAgY29uc3QgU3RyaW5nIHRlc3RfY2FzZV9jb21tZW50XzsgIC8vIFRl
c3QgY2FzZSBjb21tZW50Ci0gIGNvbnN0IFN0cmluZyBjb21tZW50XzsgICAgICAgICAgICAvLyBU
ZXN0IGNvbW1lbnQKLSAgY29uc3QgVHlwZUlkIGZpeHR1cmVfY2xhc3NfaWRfOyAgIC8vIElEIG9m
IHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKLSAgYm9vbCBzaG91bGRfcnVuXzsgICAgICAgICAgICAg
ICAgIC8vIFRydWUgaWZmIHRoaXMgdGVzdCBzaG91bGQgcnVuCi0gIGJvb2wgaXNfZGlzYWJsZWRf
OyAgICAgICAgICAgICAgICAvLyBUcnVlIGlmZiB0aGlzIHRlc3QgaXMgZGlzYWJsZWQKLSAgYm9v
bCBtYXRjaGVzX2ZpbHRlcl87ICAgICAgICAgICAgIC8vIFRydWUgaWYgdGhpcyB0ZXN0IG1hdGNo
ZXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VyLXNwZWNp
ZmllZCBmaWx0ZXIuCi0gIGludGVybmFsOjpUZXN0RmFjdG9yeUJhc2UqIGNvbnN0IGZhY3Rvcnlf
OyAgLy8gVGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHRlc3Qgb2JqZWN0Ci0KLSAgLy8gVGhpcyBmaWVs
ZCBpcyBtdXRhYmxlIGFuZCBuZWVkcyB0byBiZSByZXNldCBiZWZvcmUgcnVubmluZyB0aGUKLSAg
Ly8gdGVzdCBmb3IgdGhlIHNlY29uZCB0aW1lLgotICBUZXN0UmVzdWx0IHJlc3VsdF87Ci0KLSAg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0SW5mb0ltcGwpOworICBzdGQ6OnN0
cmluZyBrZXlfOwogfTsKIAogLy8gQ2xhc3MgVW5pdFRlc3RPcHRpb25zLgpAQCAtNDMzLDEyICsz
NzUsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdE9wdGlvbnMgewogICAvLyBGdW5jdGlv
bnMgZm9yIHByb2Nlc3NpbmcgdGhlIGd0ZXN0X291dHB1dCBmbGFnLgogCiAgIC8vIFJldHVybnMg
dGhlIG91dHB1dCBmb3JtYXQsIG9yICIiIGZvciBub3JtYWwgcHJpbnRlZCBvdXRwdXQuCi0gIHN0
YXRpYyBTdHJpbmcgR2V0T3V0cHV0Rm9ybWF0KCk7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBHZXRP
dXRwdXRGb3JtYXQoKTsKIAogICAvLyBSZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBy
ZXF1ZXN0ZWQgb3V0cHV0IGZpbGUsIG9yIHRoZQogICAvLyBkZWZhdWx0ICh0ZXN0X2RldGFpbC54
bWwgaW4gdGhlIG9yaWdpbmFsIHdvcmtpbmcgZGlyZWN0b3J5KSBpZgogICAvLyBub25lIHdhcyBl
eHBsaWNpdGx5IHNwZWNpZmllZC4KLSAgc3RhdGljIFN0cmluZyBHZXRBYnNvbHV0ZVBhdGhUb091
dHB1dEZpbGUoKTsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldEFic29sdXRlUGF0aFRvT3V0cHV0
RmlsZSgpOwogCiAgIC8vIEZ1bmN0aW9ucyBmb3IgcHJvY2Vzc2luZyB0aGUgZ3Rlc3RfZmlsdGVy
IGZsYWcuCiAKQEAgLTQ1MSw4ICszOTMsOCBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0T3B0
aW9ucyB7CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdXNlci1zcGVjaWZpZWQgZmlsdGVy
IG1hdGNoZXMgdGhlIHRlc3QgY2FzZQogICAvLyBuYW1lIGFuZCB0aGUgdGVzdCBuYW1lLgotICBz
dGF0aWMgYm9vbCBGaWx0ZXJNYXRjaGVzVGVzdChjb25zdCBTdHJpbmcgJnRlc3RfY2FzZV9uYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcgJnRlc3RfbmFt
ZSk7CisgIHN0YXRpYyBib29sIEZpbHRlck1hdGNoZXNUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0
ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnRlc3RfbmFtZSk7CiAKICNpZiBHVEVTVF9PU19XSU5ET1dTCiAgIC8vIEZ1bmN0
aW9uIGZvciBzdXBwb3J0aW5nIHRoZSBndGVzdF9jYXRjaF9leGNlcHRpb24gZmxhZy4KQEAgLTQ2
NSw3ICs0MDcsNyBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0T3B0aW9ucyB7CiAKICAgLy8g
UmV0dXJucyB0cnVlIGlmICJuYW1lIiBtYXRjaGVzIHRoZSAnOicgc2VwYXJhdGVkIGxpc3Qgb2Yg
Z2xvYi1zdHlsZQogICAvLyBmaWx0ZXJzIGluICJmaWx0ZXIiLgotICBzdGF0aWMgYm9vbCBNYXRj
aGVzRmlsdGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgY2hhciogZmlsdGVyKTsKKyAgc3Rh
dGljIGJvb2wgTWF0Y2hlc0ZpbHRlcihjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgY29uc3QgY2hh
ciogZmlsdGVyKTsKIH07CiAKIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24ncyBu
YW1lLCByZW1vdmluZyBkaXJlY3RvcnkgcGF0aCBpZiB0aGF0CkBAIC00NzgsMTkgKzQyMCwyMyBA
QCBjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UgewogICBPc1N0YWNrVHJhY2VHZXR0
ZXJJbnRlcmZhY2UoKSB7fQogICB2aXJ0dWFsIH5Pc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2Uo
KSB7fQogCi0gIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYSBTdHJp
bmcuICBQYXJhbWV0ZXJzOgorICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNl
IGFzIGFuIHN0ZDo6c3RyaW5nLiAgUGFyYW1ldGVyczoKICAgLy8KICAgLy8gICBtYXhfZGVwdGgg
IC0gdGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZAogICAv
LyAgICAgICAgICAgICAgICBpbiB0aGUgdHJhY2UuCiAgIC8vICAgc2tpcF9jb3VudCAtIHRoZSBu
dW1iZXIgb2YgdG9wIGZyYW1lcyB0byBiZSBza2lwcGVkOyBkb2Vzbid0IGNvdW50CiAgIC8vICAg
ICAgICAgICAgICAgIGFnYWluc3QgbWF4X2RlcHRoLgotICB2aXJ0dWFsIFN0cmluZyBDdXJyZW50
U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCkgPSAwOworICB2aXJ0dWFs
IHN0cmluZyBDdXJyZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCkg
PSAwOwogCiAgIC8vIFVwb25MZWF2aW5nR1Rlc3QoKSBzaG91bGQgYmUgY2FsbGVkIGltbWVkaWF0
ZWx5IGJlZm9yZSBHb29nbGUgVGVzdCBjYWxscwogICAvLyB1c2VyIGNvZGUuIEl0IHNhdmVzIHNv
bWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgc3RhY2sgdGhhdAogICAvLyBDdXJyZW50
U3RhY2tUcmFjZSgpIHdpbGwgdXNlIHRvIGZpbmQgYW5kIGhpZGUgR29vZ2xlIFRlc3Qgc3RhY2sg
ZnJhbWVzLgogICB2aXJ0dWFsIHZvaWQgVXBvbkxlYXZpbmdHVGVzdCgpID0gMDsKIAorICAvLyBU
aGlzIHN0cmluZyBpcyBpbnNlcnRlZCBpbiBwbGFjZSBvZiBzdGFjayBmcmFtZXMgdGhhdCBhcmUg
cGFydCBvZgorICAvLyBHb29nbGUgVGVzdCdzIGltcGxlbWVudGF0aW9uLgorICBzdGF0aWMgY29u
c3QgY2hhciogY29uc3Qga0VsaWRlZEZyYW1lc01hcmtlcjsKKwogIHByaXZhdGU6CiAgIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlKTsK
IH07CkBAIC00OTgsMjMgKzQ0NCwxMiBAQCBjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZh
Y2UgewogLy8gQSB3b3JraW5nIGltcGxlbWVudGF0aW9uIG9mIHRoZSBPc1N0YWNrVHJhY2VHZXR0
ZXJJbnRlcmZhY2UgaW50ZXJmYWNlLgogY2xhc3MgT3NTdGFja1RyYWNlR2V0dGVyIDogcHVibGlj
IE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSB7CiAgcHVibGljOgotICBPc1N0YWNrVHJhY2VH
ZXR0ZXIoKSA6IGNhbGxlcl9mcmFtZV8oTlVMTCkge30KLSAgdmlydHVhbCBTdHJpbmcgQ3VycmVu
dFN0YWNrVHJhY2UoaW50IG1heF9kZXB0aCwgaW50IHNraXBfY291bnQpOwotICB2aXJ0dWFsIHZv
aWQgVXBvbkxlYXZpbmdHVGVzdCgpOworICBPc1N0YWNrVHJhY2VHZXR0ZXIoKSB7fQogCi0gIC8v
IFRoaXMgc3RyaW5nIGlzIGluc2VydGVkIGluIHBsYWNlIG9mIHN0YWNrIGZyYW1lcyB0aGF0IGFy
ZSBwYXJ0IG9mCi0gIC8vIEdvb2dsZSBUZXN0J3MgaW1wbGVtZW50YXRpb24uCi0gIHN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCBrRWxpZGVkRnJhbWVzTWFya2VyOworICB2aXJ0dWFsIHN0cmluZyBD
dXJyZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCk7CisgIHZpcnR1
YWwgdm9pZCBVcG9uTGVhdmluZ0dUZXN0KCk7CiAKICBwcml2YXRlOgotICBNdXRleCBtdXRleF87
ICAvLyBwcm90ZWN0cyBhbGwgaW50ZXJuYWwgc3RhdGUKLQotICAvLyBXZSBzYXZlIHRoZSBzdGFj
ayBmcmFtZSBiZWxvdyB0aGUgZnJhbWUgdGhhdCBjYWxscyB1c2VyIGNvZGUuCi0gIC8vIFdlIGRv
IHRoaXMgYmVjYXVzZSB0aGUgYWRkcmVzcyBvZiB0aGUgZnJhbWUgaW1tZWRpYXRlbHkgYmVsb3cK
LSAgLy8gdGhlIHVzZXIgY29kZSBjaGFuZ2VzIGJldHdlZW4gdGhlIGNhbGwgdG8gVXBvbkxlYXZp
bmdHVGVzdCgpCi0gIC8vIGFuZCBhbnkgY2FsbHMgdG8gQ3VycmVudFN0YWNrVHJhY2UoKSBmcm9t
IHdpdGhpbiB0aGUgdXNlciBjb2RlLgotICB2b2lkKiBjYWxsZXJfZnJhbWVfOwotCiAgIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oT3NTdGFja1RyYWNlR2V0dGVyKTsKIH07CiAKQEAg
LTUyMiw3ICs0NTcsNyBAQCBjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXIgOiBwdWJsaWMgT3NTdGFj
a1RyYWNlR2V0dGVySW50ZXJmYWNlIHsKIHN0cnVjdCBUcmFjZUluZm8gewogICBjb25zdCBjaGFy
KiBmaWxlOwogICBpbnQgbGluZTsKLSAgU3RyaW5nIG1lc3NhZ2U7CisgIHN0ZDo6c3RyaW5nIG1l
c3NhZ2U7CiB9OwogCiAvLyBUaGlzIGlzIHRoZSBkZWZhdWx0IGdsb2JhbCB0ZXN0IHBhcnQgcmVz
dWx0IHJlcG9ydGVyIHVzZWQgaW4gVW5pdFRlc3RJbXBsLgpAQCAtNjA2LDE1ICs1NDEsMjUgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBHZXRzIHRoZSBudW1iZXIgb2Yg
ZmFpbGVkIHRlc3RzLgogICBpbnQgZmFpbGVkX3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAvLyBH
ZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGlu
IHRoZSBYTUwgcmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkg
Y29uc3Q7CisKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzLgogICBpbnQg
ZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0OwogCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiB0
ZXN0cyB0byBiZSBwcmludGVkIGluIHRoZSBYTUwgcmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV90
ZXN0X2NvdW50KCkgY29uc3Q7CisKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0cy4K
ICAgaW50IHRvdGFsX3Rlc3RfY291bnQoKSBjb25zdDsKIAogICAvLyBHZXRzIHRoZSBudW1iZXIg
b2YgdGVzdHMgdGhhdCBzaG91bGQgcnVuLgogICBpbnQgdGVzdF90b19ydW5fY291bnQoKSBjb25z
dDsKIAorICAvLyBHZXRzIHRoZSB0aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0gc3RhcnQsIGluIG1z
IGZyb20gdGhlIHN0YXJ0IG9mIHRoZQorICAvLyBVTklYIGVwb2NoLgorICBUaW1lSW5NaWxsaXMg
c3RhcnRfdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gc3RhcnRfdGltZXN0YW1wXzsgfQorCiAg
IC8vIEdldHMgdGhlIGVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5NaWxs
aXMgZWxhcHNlZF90aW1lKCkgY29uc3QgeyByZXR1cm4gZWxhcHNlZF90aW1lXzsgfQogCkBAIC02
NjMsNyArNjA4LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBnZXR0
ZXIsIGFuZCByZXR1cm5zIGl0LgogICBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UqIG9zX3N0
YWNrX3RyYWNlX2dldHRlcigpOwogCi0gIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sg
dHJhY2UgYXMgYSBTdHJpbmcuCisgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJh
Y2UgYXMgYW4gc3RkOjpzdHJpbmcuCiAgIC8vCiAgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBz
dGFjayBmcmFtZXMgdG8gYmUgaW5jbHVkZWQgaXMgc3BlY2lmaWVkIGJ5CiAgIC8vIHRoZSBndGVz
dF9zdGFja190cmFjZV9kZXB0aCBmbGFnLiAgVGhlIHNraXBfY291bnQgcGFyYW1ldGVyCkBAIC02
NzMsNyArNjE4LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBGb3Ig
ZXhhbXBsZSwgaWYgRm9vKCkgY2FsbHMgQmFyKCksIHdoaWNoIGluIHR1cm4gY2FsbHMKICAgLy8g
Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgxKSwgRm9vKCkgd2lsbCBiZSBpbmNsdWRlZCBp
biB0aGUKICAgLy8gdHJhY2UgYnV0IEJhcigpIGFuZCBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0
VG9wKCkgd29uJ3QuCi0gIFN0cmluZyBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKGludCBz
a2lwX2NvdW50KTsKKyAgc3RkOjpzdHJpbmcgQ3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcChp
bnQgc2tpcF9jb3VudCkgR1RFU1RfTk9fSU5MSU5FXzsKIAogICAvLyBGaW5kcyBhbmQgcmV0dXJu
cyBhIFRlc3RDYXNlIHdpdGggdGhlIGdpdmVuIG5hbWUuICBJZiBvbmUgZG9lc24ndAogICAvLyBl
eGlzdCwgY3JlYXRlcyBvbmUgYW5kIHJldHVybnMgaXQuCkBAIC02ODEsMTAgKzYyNiwxMiBAQCBj
bGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vIEFyZ3VtZW50czoKICAgLy8KICAg
Ly8gICB0ZXN0X2Nhc2VfbmFtZTogbmFtZSBvZiB0aGUgdGVzdCBjYXNlCisgIC8vICAgdHlwZV9w
YXJhbTogICAgIHRoZSBuYW1lIG9mIHRoZSB0ZXN0J3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwg
aWYKKyAgLy8gICAgICAgICAgICAgICAgICAgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhIHR5cGUt
cGFyYW1ldGVyaXplZCB0ZXN0LgogICAvLyAgIHNldF91cF90YzogICAgICBwb2ludGVyIHRvIHRo
ZSBmdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIHRlc3QgY2FzZQogICAvLyAgIHRlYXJfZG93bl90
YzogICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2Fz
ZQogICBUZXN0Q2FzZSogR2V0VGVzdENhc2UoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb21tZW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogdHlwZV9wYXJhbSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIFRlc3Q6OlNldFVwVGVzdENhc2VGdW5jIHNldF91cF90YywKICAgICAgICAgICAgICAgICAg
ICAgICAgIFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90Yyk7CiAKQEAgLTY5
Nyw3ICs2NDQsNyBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vICAgdGVz
dF9pbmZvOiAgICB0aGUgVGVzdEluZm8gb2JqZWN0CiAgIHZvaWQgQWRkVGVzdEluZm8oVGVzdDo6
U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAgICAgICAgICAgICAgICAgIFRlc3Q6OlRl
YXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YywKLSAgICAgICAgICAgICAgICAgICBUZXN0
SW5mbyAqIHRlc3RfaW5mbykgeworICAgICAgICAgICAgICAgICAgIFRlc3RJbmZvKiB0ZXN0X2lu
Zm8pIHsKICAgICAvLyBJbiBvcmRlciB0byBzdXBwb3J0IHRocmVhZC1zYWZlIGRlYXRoIHRlc3Rz
LCB3ZSBuZWVkIHRvCiAgICAgLy8gcmVtZW1iZXIgdGhlIG9yaWdpbmFsIHdvcmtpbmcgZGlyZWN0
b3J5IHdoZW4gdGhlIHRlc3QgcHJvZ3JhbQogICAgIC8vIHdhcyBmaXJzdCBpbnZva2VkLiAgV2Ug
Y2Fubm90IGRvIHRoaXMgaW4gUlVOX0FMTF9URVNUUygpLCBhcwpAQCAtNzEyLDcgKzY1OSw3IEBA
IGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgICB9CiAKICAgICBHZXRUZXN0Q2Fz
ZSh0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCksCi0gICAgICAgICAgICAgICAgdGVzdF9pbmZv
LT50ZXN0X2Nhc2VfY29tbWVudCgpLAorICAgICAgICAgICAgICAgIHRlc3RfaW5mby0+dHlwZV9w
YXJhbSgpLAogICAgICAgICAgICAgICAgIHNldF91cF90YywKICAgICAgICAgICAgICAgICB0ZWFy
X2Rvd25fdGMpLT5BZGRUZXN0SW5mbyh0ZXN0X2luZm8pOwogICB9CkBAIC03MzgsMjcgKzY4NSwz
NSBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIH0KIAogICAvLyBSZWdpc3Rl
cnMgYWxsIHBhcmFtZXRlcml6ZWQgdGVzdHMgZGVmaW5lZCB1c2luZyBURVNUX1AgYW5kCi0gIC8v
IElOU1RBTlRJQVRFX1RFU1RfUCwgY3JlYXRpbmcgcmVndWxhciB0ZXN0cyBmb3IgZWFjaCB0ZXN0
L3BhcmFtZXRlcgotICAvLyBjb21iaW5hdGlvbi4gVGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCBt
b3JlIHRoZW4gb25jZTsgaXQgaGFzCi0gIC8vIGd1YXJkcyBwcm90ZWN0aW5nIGZyb20gcmVnaXN0
ZXJpbmcgdGhlIHRlc3RzIG1vcmUgdGhlbiBvbmNlLgotICAvLyBJZiB2YWx1ZS1wYXJhbWV0ZXJp
emVkIHRlc3RzIGFyZSBkaXNhYmxlZCwgUmVnaXN0ZXJQYXJhbWV0ZXJpemVkVGVzdHMKLSAgLy8g
aXMgcHJlc2VudCBidXQgZG9lcyBub3RoaW5nLgorICAvLyBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UCwgY3JlYXRpbmcgcmVndWxhciB0ZXN0cyBmb3IgZWFjaCB0ZXN0L3BhcmFtZXRlcgorICAvLyBj
b21iaW5hdGlvbi4gVGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCBtb3JlIHRoZW4gb25jZTsgaXQg
aGFzIGd1YXJkcworICAvLyBwcm90ZWN0aW5nIGZyb20gcmVnaXN0ZXJpbmcgdGhlIHRlc3RzIG1v
cmUgdGhlbiBvbmNlLiAgSWYKKyAgLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZGlz
YWJsZWQsIFJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzIGlzCisgIC8vIHByZXNlbnQgYnV0IGRv
ZXMgbm90aGluZy4KICAgdm9pZCBSZWdpc3RlclBhcmFtZXRlcml6ZWRUZXN0cygpOwogCiAgIC8v
IFJ1bnMgYWxsIHRlc3RzIGluIHRoaXMgVW5pdFRlc3Qgb2JqZWN0LCBwcmludHMgdGhlIHJlc3Vs
dCwgYW5kCi0gIC8vIHJldHVybnMgMCBpZiBhbGwgdGVzdHMgYXJlIHN1Y2Nlc3NmdWwsIG9yIDEg
b3RoZXJ3aXNlLiAgSWYgYW55Ci0gIC8vIGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIGEgdGVz
dCBvbiBXaW5kb3dzLCB0aGlzIHRlc3QgaXMKLSAgLy8gY29uc2lkZXJlZCB0byBiZSBmYWlsZWQs
IGJ1dCB0aGUgcmVzdCBvZiB0aGUgdGVzdHMgd2lsbCBzdGlsbCBiZQotICAvLyBydW4uICAoV2Ug
ZGlzYWJsZSBleGNlcHRpb25zIG9uIExpbnV4IGFuZCBNYWMgT1MgWCwgc28gdGhlIGlzc3VlCi0g
IC8vIGRvZXNuJ3QgYXBwbHkgdGhlcmUuKQotICBpbnQgUnVuQWxsVGVzdHMoKTsKLQotICAvLyBD
bGVhcnMgdGhlIHJlc3VsdHMgb2YgYWxsIHRlc3RzLCBpbmNsdWRpbmcgdGhlIGFkIGhvYyB0ZXN0
LgotICB2b2lkIENsZWFyUmVzdWx0KCkgeworICAvLyByZXR1cm5zIHRydWUgaWYgYWxsIHRlc3Rz
IGFyZSBzdWNjZXNzZnVsLiAgSWYgYW55IGV4Y2VwdGlvbiBpcworICAvLyB0aHJvd24gZHVyaW5n
IGEgdGVzdCwgdGhpcyB0ZXN0IGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFpbGVkLCBidXQKKyAgLy8g
dGhlIHJlc3Qgb2YgdGhlIHRlc3RzIHdpbGwgc3RpbGwgYmUgcnVuLgorICBib29sIFJ1bkFsbFRl
c3RzKCk7CisKKyAgLy8gQ2xlYXJzIHRoZSByZXN1bHRzIG9mIGFsbCB0ZXN0cywgZXhjZXB0IHRo
ZSBhZCBob2MgdGVzdHMuCisgIHZvaWQgQ2xlYXJOb25BZEhvY1Rlc3RSZXN1bHQoKSB7CiAgICAg
Rm9yRWFjaCh0ZXN0X2Nhc2VzXywgVGVzdENhc2U6OkNsZWFyVGVzdENhc2VSZXN1bHQpOworICB9
CisKKyAgLy8gQ2xlYXJzIHRoZSByZXN1bHRzIG9mIGFkLWhvYyB0ZXN0IGFzc2VydGlvbnMuCisg
IHZvaWQgQ2xlYXJBZEhvY1Rlc3RSZXN1bHQoKSB7CiAgICAgYWRfaG9jX3Rlc3RfcmVzdWx0Xy5D
bGVhcigpOwogICB9CiAKKyAgLy8gQWRkcyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUgY3VycmVudCBU
ZXN0UmVzdWx0IG9iamVjdCB3aGVuIGludm9rZWQgaW4gYQorICAvLyBjb250ZXh0IG9mIGEgdGVz
dCBvciBhIHRlc3QgY2FzZSwgb3IgdG8gdGhlIGdsb2JhbCBwcm9wZXJ0eSBzZXQuIElmIHRoZQor
ICAvLyByZXN1bHQgYWxyZWFkeSBjb250YWlucyBhIHByb3BlcnR5IHdpdGggdGhlIHNhbWUga2V5
LCB0aGUgdmFsdWUgd2lsbCBiZQorICAvLyB1cGRhdGVkLgorICB2b2lkIFJlY29yZFByb3BlcnR5
KGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSk7CisKICAgZW51bSBSZWFjdGlvblRv
U2hhcmRpbmcgewogICAgIEhPTk9SX1NIQVJESU5HX1BST1RPQ09MLAogICAgIElHTk9SRV9TSEFS
RElOR19QUk9UT0NPTApAQCAtODE3LDYgKzc3MiwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRU
ZXN0SW1wbCB7CiAgIC8vIFVuaXRUZXN0T3B0aW9ucy4gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9y
ZSBJbml0R29vZ2xlVGVzdC4KICAgdm9pZCBDb25maWd1cmVYbWxPdXRwdXQoKTsKIAorI2lmIEdU
RVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKyAgLy8gSW5pdGlhbGl6ZXMgdGhlIGV2ZW50IGxpc3Rl
bmVyIGZvciBzdHJlYW1pbmcgdGVzdCByZXN1bHRzIHRvIGEgc29ja2V0LgorICAvLyBNdXN0IG5v
dCBiZSBjYWxsZWQgYmVmb3JlIEluaXRHb29nbGVUZXN0LgorICB2b2lkIENvbmZpZ3VyZVN0cmVh
bWluZ091dHB1dCgpOworI2VuZGlmCisKICAgLy8gUGVyZm9ybXMgaW5pdGlhbGl6YXRpb24gZGVw
ZW5kZW50IHVwb24gZmxhZyB2YWx1ZXMgb2J0YWluZWQgaW4KICAgLy8gUGFyc2VHb29nbGVUZXN0
RmxhZ3NPbmx5LiAgSXMgY2FsbGVkIGZyb20gSW5pdEdvb2dsZVRlc3QgYWZ0ZXIgdGhlIGNhbGwg
dG8KICAgLy8gUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5LiAgSW4gY2FzZSBhIHVzZXIgbmVnbGVj
dHMgdG8gY2FsbCBJbml0R29vZ2xlVGVzdApAQCAtODM3LDkgKzc5OCwxNyBAQCBjbGFzcyBHVEVT
VF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vIFJlc3RvcmVzIHRoZSB0ZXN0IGNhc2VzIGFuZCB0
ZXN0cyB0byB0aGVpciBvcmRlciBiZWZvcmUgdGhlIGZpcnN0IHNodWZmbGUuCiAgIHZvaWQgVW5z
aHVmZmxlVGVzdHMoKTsKIAorICAvLyBSZXR1cm5zIHRoZSB2YWx1ZSBvZiBHVEVTVF9GTEFHKGNh
dGNoX2V4Y2VwdGlvbnMpIGF0IHRoZSBtb21lbnQKKyAgLy8gVW5pdFRlc3Q6OlJ1bigpIHN0YXJ0
cy4KKyAgYm9vbCBjYXRjaF9leGNlcHRpb25zKCkgY29uc3QgeyByZXR1cm4gY2F0Y2hfZXhjZXB0
aW9uc187IH0KKwogIHByaXZhdGU6CiAgIGZyaWVuZCBjbGFzcyA6OnRlc3Rpbmc6OlVuaXRUZXN0
OwogCisgIC8vIFVzZWQgYnkgVW5pdFRlc3Q6OlJ1bigpIHRvIGNhcHR1cmUgdGhlIHN0YXRlIG9m
CisgIC8vIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgYXQgdGhlIG1vbWVudCBpdCBzdGFy
dHMuCisgIHZvaWQgc2V0X2NhdGNoX2V4Y2VwdGlvbnMoYm9vbCB2YWx1ZSkgeyBjYXRjaF9leGNl
cHRpb25zXyA9IHZhbHVlOyB9CisKICAgLy8gVGhlIFVuaXRUZXN0IG9iamVjdCB0aGF0IG93bnMg
dGhpcyBpbXBsZW1lbnRhdGlvbiBvYmplY3QuCiAgIFVuaXRUZXN0KiBjb25zdCBwYXJlbnRfOwog
CkBAIC05MjksNiArODk4LDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAg
Ly8gT3VyIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLgogICBpbnRlcm5hbDo6UmFuZG9tIHJhbmRv
bV87CiAKKyAgLy8gVGhlIHRpbWUgb2YgdGhlIHRlc3QgcHJvZ3JhbSBzdGFydCwgaW4gbXMgZnJv
bSB0aGUgc3RhcnQgb2YgdGhlCisgIC8vIFVOSVggZXBvY2guCisgIFRpbWVJbk1pbGxpcyBzdGFy
dF90aW1lc3RhbXBfOworCiAgIC8vIEhvdyBsb25nIHRoZSB0ZXN0IHRvb2sgdG8gcnVuLCBpbiBt
aWxsaXNlY29uZHMuCiAgIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3RpbWVfOwogCkBAIC05NDIsNiAr
OTE1LDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gQSBwZXItdGhy
ZWFkIHN0YWNrIG9mIHRyYWNlcyBjcmVhdGVkIGJ5IHRoZSBTQ09QRURfVFJBQ0UoKSBtYWNyby4K
ICAgaW50ZXJuYWw6OlRocmVhZExvY2FsPHN0ZDo6dmVjdG9yPFRyYWNlSW5mbz4gPiBndGVzdF90
cmFjZV9zdGFja187CiAKKyAgLy8gVGhlIHZhbHVlIG9mIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0
aW9ucykgYXQgdGhlIG1vbWVudCBSdW5BbGxUZXN0cygpCisgIC8vIHN0YXJ0cy4KKyAgYm9vbCBj
YXRjaF9leGNlcHRpb25zXzsKKwogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFVu
aXRUZXN0SW1wbCk7CiB9OyAgLy8gY2xhc3MgVW5pdFRlc3RJbXBsCiAKQEAgLTk1MSwxNCArOTI4
LDE2IEBAIGlubGluZSBVbml0VGVzdEltcGwqIEdldFVuaXRUZXN0SW1wbCgpIHsKICAgcmV0dXJu
IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5pbXBsKCk7CiB9CiAKKyNpZiBHVEVTVF9VU0VTX1NJ
TVBMRV9SRQorCiAvLyBJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zIGZvciBpbXBsZW1lbnRpbmcg
dGhlIHNpbXBsZSByZWd1bGFyCiAvLyBleHByZXNzaW9uIG1hdGNoZXIuCiBHVEVTVF9BUElfIGJv
b2wgSXNJblNldChjaGFyIGNoLCBjb25zdCBjaGFyKiBzdHIpOwotR1RFU1RfQVBJXyBib29sIElz
RGlnaXQoY2hhciBjaCk7Ci1HVEVTVF9BUElfIGJvb2wgSXNQdW5jdChjaGFyIGNoKTsKK0dURVNU
X0FQSV8gYm9vbCBJc0FzY2lpRGlnaXQoY2hhciBjaCk7CitHVEVTVF9BUElfIGJvb2wgSXNBc2Np
aVB1bmN0KGNoYXIgY2gpOwogR1RFU1RfQVBJXyBib29sIElzUmVwZWF0KGNoYXIgY2gpOwotR1RF
U1RfQVBJXyBib29sIElzV2hpdGVTcGFjZShjaGFyIGNoKTsKLUdURVNUX0FQSV8gYm9vbCBJc1dv
cmRDaGFyKGNoYXIgY2gpOworR1RFU1RfQVBJXyBib29sIElzQXNjaWlXaGl0ZVNwYWNlKGNoYXIg
Y2gpOworR1RFU1RfQVBJXyBib29sIElzQXNjaWlXb3JkQ2hhcihjaGFyIGNoKTsKIEdURVNUX0FQ
SV8gYm9vbCBJc1ZhbGlkRXNjYXBlKGNoYXIgY2gpOwogR1RFU1RfQVBJXyBib29sIEF0b21NYXRj
aGVzQ2hhcihib29sIGVzY2FwZWQsIGNoYXIgcGF0dGVybiwgY2hhciBjaCk7CiBHVEVTVF9BUElf
IGJvb2wgVmFsaWRhdGVSZWdleChjb25zdCBjaGFyKiByZWdleCk7CkBAIC05NjcsNiArOTQ2LDgg
QEAgR1RFU1RfQVBJXyBib29sIE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKAogICAgIGJv
b2wgZXNjYXBlZCwgY2hhciBjaCwgY2hhciByZXBlYXQsIGNvbnN0IGNoYXIqIHJlZ2V4LCBjb25z
dCBjaGFyKiBzdHIpOwogR1RFU1RfQVBJXyBib29sIE1hdGNoUmVnZXhBbnl3aGVyZShjb25zdCBj
aGFyKiByZWdleCwgY29uc3QgY2hhciogc3RyKTsKIAorI2VuZGlmICAvLyBHVEVTVF9VU0VTX1NJ
TVBMRV9SRQorCiAvLyBQYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IgR29vZ2xlIFRlc3QgZmxh
Z3MsIHdpdGhvdXQgaW5pdGlhbGl6aW5nCiAvLyBvdGhlciBwYXJ0cyBvZiBHb29nbGUgVGVzdC4K
IEdURVNUX0FQSV8gdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoaW50KiBhcmdjLCBjaGFy
KiogYXJndik7CkBAIC05NzYsMzMgKzk1Nyw3IEBAIEdURVNUX0FQSV8gdm9pZCBQYXJzZUdvb2ds
ZVRlc3RGbGFnc09ubHkoaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndik7CiAKIC8vIFJldHVybnMg
dGhlIG1lc3NhZ2UgZGVzY3JpYmluZyB0aGUgbGFzdCBzeXN0ZW0gZXJyb3IsIHJlZ2FyZGxlc3Mg
b2YgdGhlCiAvLyBwbGF0Zm9ybS4KLVN0cmluZyBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpOwot
Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotLy8gUHJvdmlkZXMgbGVhay1zYWZlIFdpbmRvd3Mga2Vy
bmVsIGhhbmRsZSBvd25lcnNoaXAuCi1jbGFzcyBBdXRvSGFuZGxlIHsKLSBwdWJsaWM6Ci0gIEF1
dG9IYW5kbGUoKSA6IGhhbmRsZV8oSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHt9Ci0gIGV4cGxpY2l0
IEF1dG9IYW5kbGUoSEFORExFIGhhbmRsZSkgOiBoYW5kbGVfKGhhbmRsZSkge30KLQotICB+QXV0
b0hhbmRsZSgpIHsgUmVzZXQoKTsgfQotCi0gIEhBTkRMRSBHZXQoKSBjb25zdCB7IHJldHVybiBo
YW5kbGVfOyB9Ci0gIHZvaWQgUmVzZXQoKSB7IFJlc2V0KElOVkFMSURfSEFORExFX1ZBTFVFKTsg
fQotICB2b2lkIFJlc2V0KEhBTkRMRSBoYW5kbGUpIHsKLSAgICBpZiAoaGFuZGxlICE9IGhhbmRs
ZV8pIHsKLSAgICAgIGlmIChoYW5kbGVfICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAg
ICA6OkNsb3NlSGFuZGxlKGhhbmRsZV8pOwotICAgICAgaGFuZGxlXyA9IGhhbmRsZTsKLSAgICB9
Ci0gIH0KLQotIHByaXZhdGU6Ci0gIEhBTkRMRSBoYW5kbGVfOwotCi0gIEdURVNUX0RJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTl8oQXV0b0hhbmRsZSk7Ci19OwotI2VuZGlmICAvLyBHVEVTVF9PU19X
SU5ET1dTCitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCk7
CiAKIC8vIEF0dGVtcHRzIHRvIHBhcnNlIGEgc3RyaW5nIGludG8gYSBwb3NpdGl2ZSBpbnRlZ2Vy
IHBvaW50ZWQgdG8gYnkgdGhlCiAvLyBudW1iZXIgcGFyYW1ldGVyLiAgUmV0dXJucyB0cnVlIGlm
IHRoYXQgaXMgcG9zc2libGUuCkBAIC0xMDEzLDcgKzk2OCw3IEBAIGJvb2wgUGFyc2VOYXR1cmFs
TnVtYmVyKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgSW50ZWdlciogbnVtYmVyKSB7CiAgIC8v
IEZhaWwgZmFzdCBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGRvZXMgbm90IGJlZ2luIHdpdGggYSBkaWdp
dDsKICAgLy8gdGhpcyBieXBhc3NlcyBzdHJ0b1hYWCdzICJvcHRpb25hbCBsZWFkaW5nIHdoaXRl
c3BhY2UgYW5kIHBsdXMKICAgLy8gb3IgbWludXMgc2lnbiIgc2VtYW50aWNzLCB3aGljaCBhcmUg
dW5kZXNpcmFibGUgaGVyZS4KLSAgaWYgKHN0ci5lbXB0eSgpIHx8ICFpc2RpZ2l0KHN0clswXSkp
IHsKKyAgaWYgKHN0ci5lbXB0eSgpIHx8ICFJc0RpZ2l0KHN0clswXSkpIHsKICAgICByZXR1cm4g
ZmFsc2U7CiAgIH0KICAgZXJybm8gPSAwOwpAQCAtMTAyMSwxNCArOTc2LDIwIEBAIGJvb2wgUGFy
c2VOYXR1cmFsTnVtYmVyKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgSW50ZWdlciogbnVtYmVy
KSB7CiAgIGNoYXIqIGVuZDsKICAgLy8gQmlnZ2VzdENvbnZlcnRpYmxlIGlzIHRoZSBsYXJnZXN0
IGludGVnZXIgdHlwZSB0aGF0IHN5c3RlbS1wcm92aWRlZAogICAvLyBzdHJpbmctdG8tbnVtYmVy
IGNvbnZlcnNpb24gcm91dGluZXMgY2FuIHJldHVybi4KLSNpZiBHVEVTVF9PU19XSU5ET1dTICYm
ICFkZWZpbmVkKF9fR05VQ19fKQorCisjIGlmIEdURVNUX09TX1dJTkRPV1MgJiYgIWRlZmluZWQo
X19HTlVDX18pCisKICAgLy8gTVNWQyBhbmQgQysrIEJ1aWxkZXIgZGVmaW5lIF9faW50NjQgaW5z
dGVhZCBvZiB0aGUgc3RhbmRhcmQgbG9uZyBsb25nLgogICB0eXBlZGVmIHVuc2lnbmVkIF9faW50
NjQgQmlnZ2VzdENvbnZlcnRpYmxlOwogICBjb25zdCBCaWdnZXN0Q29udmVydGlibGUgcGFyc2Vk
ID0gX3N0cnRvdWk2NChzdHIuY19zdHIoKSwgJmVuZCwgMTApOwotI2Vsc2UKKworIyBlbHNlCisK
ICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgQmlnZ2VzdENvbnZlcnRpYmxlOyAgLy8gTk9M
SU5UCiAgIGNvbnN0IEJpZ2dlc3RDb252ZXJ0aWJsZSBwYXJzZWQgPSBzdHJ0b3VsbChzdHIuY19z
dHIoKSwgJmVuZCwgMTApOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVk
KF9fR05VQ19fKQorCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVkKF9f
R05VQ19fKQorCiAgIGNvbnN0IGJvb2wgcGFyc2Vfc3VjY2VzcyA9ICplbmQgPT0gJ1wwJyAmJiBl
cnJubyA9PSAwOwogCiAgIC8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IENvbnZlcnQgdGhpcyB0
byBjb21waWxlIHRpbWUgYXNzZXJ0aW9uIHdoZW4gaXQgaXMKQEAgLTEwNTMsOCArMTAxNCw5IEBA
IGJvb2wgUGFyc2VOYXR1cmFsTnVtYmVyKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgSW50ZWdl
ciogbnVtYmVyKSB7CiBjbGFzcyBUZXN0UmVzdWx0QWNjZXNzb3IgewogIHB1YmxpYzoKICAgc3Rh
dGljIHZvaWQgUmVjb3JkUHJvcGVydHkoVGVzdFJlc3VsdCogdGVzdF9yZXN1bHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB4bWxfZWxlbWVudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFByb3BlcnR5JiBwcm9wZXJ0eSkg
ewotICAgIHRlc3RfcmVzdWx0LT5SZWNvcmRQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgdGVzdF9y
ZXN1bHQtPlJlY29yZFByb3BlcnR5KHhtbF9lbGVtZW50LCBwcm9wZXJ0eSk7CiAgIH0KIAogICBz
dGF0aWMgdm9pZCBDbGVhclRlc3RQYXJ0UmVzdWx0cyhUZXN0UmVzdWx0KiB0ZXN0X3Jlc3VsdCkg
ewpAQCAtMTA2Nyw2ICsxMDI5LDE1NCBAQCBjbGFzcyBUZXN0UmVzdWx0QWNjZXNzb3IgewogICB9
CiB9OwogCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworCisvLyBTdHJlYW1zIHRlc3Qg
cmVzdWx0cyB0byB0aGUgZ2l2ZW4gcG9ydCBvbiB0aGUgZ2l2ZW4gaG9zdCBtYWNoaW5lLgorY2xh
c3MgR1RFU1RfQVBJXyBTdHJlYW1pbmdMaXN0ZW5lciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExp
c3RlbmVyIHsKKyBwdWJsaWM6CisgIC8vIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHdyaXRpbmcg
c3RyaW5ncyB0byBhIHNvY2tldC4KKyAgY2xhc3MgQWJzdHJhY3RTb2NrZXRXcml0ZXIgeworICAg
cHVibGljOgorICAgIHZpcnR1YWwgfkFic3RyYWN0U29ja2V0V3JpdGVyKCkge30KKworICAgIC8v
IFNlbmRzIGEgc3RyaW5nIHRvIHRoZSBzb2NrZXQuCisgICAgdmlydHVhbCB2b2lkIFNlbmQoY29u
c3Qgc3RyaW5nJiBtZXNzYWdlKSA9IDA7CisKKyAgICAvLyBDbG9zZXMgdGhlIHNvY2tldC4KKyAg
ICB2aXJ0dWFsIHZvaWQgQ2xvc2VDb25uZWN0aW9uKCkge30KKworICAgIC8vIFNlbmRzIGEgc3Ry
aW5nIGFuZCBhIG5ld2xpbmUgdG8gdGhlIHNvY2tldC4KKyAgICB2b2lkIFNlbmRMbihjb25zdCBz
dHJpbmcmIG1lc3NhZ2UpIHsKKyAgICAgIFNlbmQobWVzc2FnZSArICJcbiIpOworICAgIH0KKyAg
fTsKKworICAvLyBDb25jcmV0ZSBjbGFzcyBmb3IgYWN0dWFsbHkgd3JpdGluZyBzdHJpbmdzIHRv
IGEgc29ja2V0LgorICBjbGFzcyBTb2NrZXRXcml0ZXIgOiBwdWJsaWMgQWJzdHJhY3RTb2NrZXRX
cml0ZXIgeworICAgcHVibGljOgorICAgIFNvY2tldFdyaXRlcihjb25zdCBzdHJpbmcmIGhvc3Qs
IGNvbnN0IHN0cmluZyYgcG9ydCkKKyAgICAgICAgOiBzb2NrZmRfKC0xKSwgaG9zdF9uYW1lXyho
b3N0KSwgcG9ydF9udW1fKHBvcnQpIHsKKyAgICAgIE1ha2VDb25uZWN0aW9uKCk7CisgICAgfQor
CisgICAgdmlydHVhbCB+U29ja2V0V3JpdGVyKCkgeworICAgICAgaWYgKHNvY2tmZF8gIT0gLTEp
CisgICAgICAgIENsb3NlQ29ubmVjdGlvbigpOworICAgIH0KKworICAgIC8vIFNlbmRzIGEgc3Ry
aW5nIHRvIHRoZSBzb2NrZXQuCisgICAgdmlydHVhbCB2b2lkIFNlbmQoY29uc3Qgc3RyaW5nJiBt
ZXNzYWdlKSB7CisgICAgICBHVEVTVF9DSEVDS18oc29ja2ZkXyAhPSAtMSkKKyAgICAgICAgICA8
PCAiU2VuZCgpIGNhbiBiZSBjYWxsZWQgb25seSB3aGVuIHRoZXJlIGlzIGEgY29ubmVjdGlvbi4i
OworCisgICAgICBjb25zdCBpbnQgbGVuID0gc3RhdGljX2Nhc3Q8aW50PihtZXNzYWdlLmxlbmd0
aCgpKTsKKyAgICAgIGlmICh3cml0ZShzb2NrZmRfLCBtZXNzYWdlLmNfc3RyKCksIGxlbikgIT0g
bGVuKSB7CisgICAgICAgIEdURVNUX0xPR18oV0FSTklORykKKyAgICAgICAgICAgIDw8ICJzdHJl
YW1fcmVzdWx0X3RvOiBmYWlsZWQgdG8gc3RyZWFtIHRvICIKKyAgICAgICAgICAgIDw8IGhvc3Rf
bmFtZV8gPDwgIjoiIDw8IHBvcnRfbnVtXzsKKyAgICAgIH0KKyAgICB9CisKKyAgIHByaXZhdGU6
CisgICAgLy8gQ3JlYXRlcyBhIGNsaWVudCBzb2NrZXQgYW5kIGNvbm5lY3RzIHRvIHRoZSBzZXJ2
ZXIuCisgICAgdm9pZCBNYWtlQ29ubmVjdGlvbigpOworCisgICAgLy8gQ2xvc2VzIHRoZSBzb2Nr
ZXQuCisgICAgdm9pZCBDbG9zZUNvbm5lY3Rpb24oKSB7CisgICAgICBHVEVTVF9DSEVDS18oc29j
a2ZkXyAhPSAtMSkKKyAgICAgICAgICA8PCAiQ2xvc2VDb25uZWN0aW9uKCkgY2FuIGJlIGNhbGxl
ZCBvbmx5IHdoZW4gdGhlcmUgaXMgYSBjb25uZWN0aW9uLiI7CisKKyAgICAgIGNsb3NlKHNvY2tm
ZF8pOworICAgICAgc29ja2ZkXyA9IC0xOworICAgIH0KKworICAgIGludCBzb2NrZmRfOyAgLy8g
c29ja2V0IGZpbGUgZGVzY3JpcHRvcgorICAgIGNvbnN0IHN0cmluZyBob3N0X25hbWVfOworICAg
IGNvbnN0IHN0cmluZyBwb3J0X251bV87CisKKyAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKFNvY2tldFdyaXRlcik7CisgIH07ICAvLyBjbGFzcyBTb2NrZXRXcml0ZXIKKworICAv
LyBFc2NhcGVzICc9JywgJyYnLCAnJScsIGFuZCAnXG4nIGNoYXJhY3RlcnMgaW4gc3RyIGFzICIl
eHgiLgorICBzdGF0aWMgc3RyaW5nIFVybEVuY29kZShjb25zdCBjaGFyKiBzdHIpOworCisgIFN0
cmVhbWluZ0xpc3RlbmVyKGNvbnN0IHN0cmluZyYgaG9zdCwgY29uc3Qgc3RyaW5nJiBwb3J0KQor
ICAgICAgOiBzb2NrZXRfd3JpdGVyXyhuZXcgU29ja2V0V3JpdGVyKGhvc3QsIHBvcnQpKSB7IFN0
YXJ0KCk7IH0KKworICBleHBsaWNpdCBTdHJlYW1pbmdMaXN0ZW5lcihBYnN0cmFjdFNvY2tldFdy
aXRlciogc29ja2V0X3dyaXRlcikKKyAgICAgIDogc29ja2V0X3dyaXRlcl8oc29ja2V0X3dyaXRl
cikgeyBTdGFydCgpOyB9CisKKyAgdm9pZCBPblRlc3RQcm9ncmFtU3RhcnQoY29uc3QgVW5pdFRl
c3QmIC8qIHVuaXRfdGVzdCAqLykgeworICAgIFNlbmRMbigiZXZlbnQ9VGVzdFByb2dyYW1TdGFy
dCIpOworICB9CisKKyAgdm9pZCBPblRlc3RQcm9ncmFtRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0
X3Rlc3QpIHsKKyAgICAvLyBOb3RlIHRoYXQgR29vZ2xlIFRlc3QgY3VycmVudCBvbmx5IHJlcG9y
dCBlbGFwc2VkIHRpbWUgZm9yIGVhY2gKKyAgICAvLyB0ZXN0IGl0ZXJhdGlvbiwgbm90IGZvciB0
aGUgZW50aXJlIHRlc3QgcHJvZ3JhbS4KKyAgICBTZW5kTG4oImV2ZW50PVRlc3RQcm9ncmFtRW5k
JnBhc3NlZD0iICsgRm9ybWF0Qm9vbCh1bml0X3Rlc3QuUGFzc2VkKCkpKTsKKworICAgIC8vIE5v
dGlmeSB0aGUgc3RyZWFtaW5nIHNlcnZlciB0byBzdG9wLgorICAgIHNvY2tldF93cml0ZXJfLT5D
bG9zZUNvbm5lY3Rpb24oKTsKKyAgfQorCisgIHZvaWQgT25UZXN0SXRlcmF0aW9uU3RhcnQoY29u
c3QgVW5pdFRlc3QmIC8qIHVuaXRfdGVzdCAqLywgaW50IGl0ZXJhdGlvbikgeworICAgIFNlbmRM
bigiZXZlbnQ9VGVzdEl0ZXJhdGlvblN0YXJ0Jml0ZXJhdGlvbj0iICsKKyAgICAgICAgICAgU3Ry
ZWFtYWJsZVRvU3RyaW5nKGl0ZXJhdGlvbikpOworICB9CisKKyAgdm9pZCBPblRlc3RJdGVyYXRp
b25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwgaW50IC8qIGl0ZXJhdGlvbiAqLykgewor
ICAgIFNlbmRMbigiZXZlbnQ9VGVzdEl0ZXJhdGlvbkVuZCZwYXNzZWQ9IiArCisgICAgICAgICAg
IEZvcm1hdEJvb2wodW5pdF90ZXN0LlBhc3NlZCgpKSArICImZWxhcHNlZF90aW1lPSIgKworICAg
ICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodW5pdF90ZXN0LmVsYXBzZWRfdGltZSgpKSArICJt
cyIpOworICB9CisKKyAgdm9pZCBPblRlc3RDYXNlU3RhcnQoY29uc3QgVGVzdENhc2UmIHRlc3Rf
Y2FzZSkgeworICAgIFNlbmRMbihzdGQ6OnN0cmluZygiZXZlbnQ9VGVzdENhc2VTdGFydCZuYW1l
PSIpICsgdGVzdF9jYXNlLm5hbWUoKSk7CisgIH0KKworICB2b2lkIE9uVGVzdENhc2VFbmQoY29u
c3QgVGVzdENhc2UmIHRlc3RfY2FzZSkgeworICAgIFNlbmRMbigiZXZlbnQ9VGVzdENhc2VFbmQm
cGFzc2VkPSIgKyBGb3JtYXRCb29sKHRlc3RfY2FzZS5QYXNzZWQoKSkKKyAgICAgICAgICAgKyAi
JmVsYXBzZWRfdGltZT0iICsgU3RyZWFtYWJsZVRvU3RyaW5nKHRlc3RfY2FzZS5lbGFwc2VkX3Rp
bWUoKSkKKyAgICAgICAgICAgKyAibXMiKTsKKyAgfQorCisgIHZvaWQgT25UZXN0U3RhcnQoY29u
c3QgVGVzdEluZm8mIHRlc3RfaW5mbykgeworICAgIFNlbmRMbihzdGQ6OnN0cmluZygiZXZlbnQ9
VGVzdFN0YXJ0Jm5hbWU9IikgKyB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgfQorCisgIHZvaWQgT25U
ZXN0RW5kKGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKKyAgICBTZW5kTG4oImV2ZW50PVRl
c3RFbmQmcGFzc2VkPSIgKworICAgICAgICAgICBGb3JtYXRCb29sKCh0ZXN0X2luZm8ucmVzdWx0
KCkpLT5QYXNzZWQoKSkgKworICAgICAgICAgICAiJmVsYXBzZWRfdGltZT0iICsKKyAgICAgICAg
ICAgU3RyZWFtYWJsZVRvU3RyaW5nKCh0ZXN0X2luZm8ucmVzdWx0KCkpLT5lbGFwc2VkX3RpbWUo
KSkgKyAibXMiKTsKKyAgfQorCisgIHZvaWQgT25UZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFy
dFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgeworICAgIGNvbnN0IGNoYXIqIGZpbGVfbmFtZSA9
IHRlc3RfcGFydF9yZXN1bHQuZmlsZV9uYW1lKCk7CisgICAgaWYgKGZpbGVfbmFtZSA9PSBOVUxM
KQorICAgICAgZmlsZV9uYW1lID0gIiI7CisgICAgU2VuZExuKCJldmVudD1UZXN0UGFydFJlc3Vs
dCZmaWxlPSIgKyBVcmxFbmNvZGUoZmlsZV9uYW1lKSArCisgICAgICAgICAgICImbGluZT0iICsg
U3RyZWFtYWJsZVRvU3RyaW5nKHRlc3RfcGFydF9yZXN1bHQubGluZV9udW1iZXIoKSkgKworICAg
ICAgICAgICAiJm1lc3NhZ2U9IiArIFVybEVuY29kZSh0ZXN0X3BhcnRfcmVzdWx0Lm1lc3NhZ2Uo
KSkpOworICB9CisKKyBwcml2YXRlOgorICAvLyBTZW5kcyB0aGUgZ2l2ZW4gbWVzc2FnZSBhbmQg
YSBuZXdsaW5lIHRvIHRoZSBzb2NrZXQuCisgIHZvaWQgU2VuZExuKGNvbnN0IHN0cmluZyYgbWVz
c2FnZSkgeyBzb2NrZXRfd3JpdGVyXy0+U2VuZExuKG1lc3NhZ2UpOyB9CisKKyAgLy8gQ2FsbGVk
IGF0IHRoZSBzdGFydCBvZiBzdHJlYW1pbmcgdG8gbm90aWZ5IHRoZSByZWNlaXZlciB3aGF0Cisg
IC8vIHByb3RvY29sIHdlIGFyZSB1c2luZy4KKyAgdm9pZCBTdGFydCgpIHsgU2VuZExuKCJndGVz
dF9zdHJlYW1pbmdfcHJvdG9jb2xfdmVyc2lvbj0xLjAiKTsgfQorCisgIHN0cmluZyBGb3JtYXRC
b29sKGJvb2wgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID8gIjEiIDogIjAiOyB9CisKKyAgY29uc3Qg
c2NvcGVkX3B0cjxBYnN0cmFjdFNvY2tldFdyaXRlcj4gc29ja2V0X3dyaXRlcl87CisKKyAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTdHJlYW1pbmdMaXN0ZW5lcik7Cit9OyAgLy8g
Y2xhc3MgU3RyZWFtaW5nTGlzdGVuZXIKKworI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JF
U1VMVFNfCisKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3Rp
bmcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXBvcnQu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYwppbmRleCBiOTUw
NGY1NmFlNmY5M2UxMjZkMmI1NjhhN2Q5N2RiNTE3ZmI4M2U0Li5lNWJmM2RkMmJlNGJlMzM2MTc2
ZmViNWQxNGQ3MGQ5NTI2YjI4YzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zcmMvZ3Rlc3QtcG9ydC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rl
c3QtcG9ydC5jYwpAQCAtMjksMzYgKzI5LDUwIEBACiAvLwogLy8gQXV0aG9yOiB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9y
dC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKIAogI2luY2x1ZGUg
PGxpbWl0cy5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5j
bHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZnN0cmVhbT4KIAotI2lmIEdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCi0jaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gRm9yIFRlcm1pbmF0ZVByb2Nlc3Mo
KQotI2VsaWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1ZGUgPGlvLmg+Ci0jaW5jbHVkZSA8c3lz
L3N0YXQuaD4KKyNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyMg
aW5jbHVkZSA8aW8uaD4KKyMgaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyMgaW5jbHVkZSA8bWFwPiAg
Ly8gVXNlZCBpbiBUaHJlYWRMb2NhbC4KICNlbHNlCi0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGluY2x1ZGUgPHVuaXN0ZC5oPgorI2Vu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKICNpZiBHVEVTVF9PU19NQUMKLSNpbmNsdWRlIDxt
YWNoL21hY2hfaW5pdC5oPgotI2luY2x1ZGUgPG1hY2gvdGFzay5oPgotI2luY2x1ZGUgPG1hY2gv
dm1fbWFwLmg+CisjIGluY2x1ZGUgPG1hY2gvbWFjaF9pbml0Lmg+CisjIGluY2x1ZGUgPG1hY2gv
dGFzay5oPgorIyBpbmNsdWRlIDxtYWNoL3ZtX21hcC5oPgogI2VuZGlmICAvLyBHVEVTVF9PU19N
QUMKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
LW1lc3NhZ2UuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4KKyNp
ZiBHVEVTVF9PU19RTlgKKyMgaW5jbHVkZSA8ZGV2Y3RsLmg+CisjIGluY2x1ZGUgPGZjbnRsLmg+
CisjIGluY2x1ZGUgPHN5cy9wcm9jZnMuaD4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfUU5YCisKKyNp
ZiBHVEVTVF9PU19BSVgKKyMgaW5jbHVkZSA8cHJvY2luZm8uaD4KKyMgaW5jbHVkZSA8c3lzL3R5
cGVzLmg+CisjZW5kaWYgIC8vIEdURVNUX09TX0FJWAorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qt
c3BpLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgorI2luY2x1ZGUgImd0ZXN0
L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3Qtc3RyaW5nLmgiCiAKIC8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBp
cyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKIC8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21l
IGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdp
bGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1
c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgot
Ly8gaGlzIGNvZGUuCisvLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVy
cm9yLiAgVGhpcyB0cmljayBleGlzdHMgdG8KKy8vIHByZXZlbnQgdGhlIGFjY2lkZW50YWwgaW5j
bHVzaW9uIG9mIGd0ZXN0LWludGVybmFsLWlubC5oIGluIHRoZQorLy8gdXNlcidzIGNvZGUuCiAj
ZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCiAjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVy
bmFsLWlubC5oIgogI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwpAQCAtNzUsMTAgKzg5LDMx
IEBAIGNvbnN0IGludCBrU3RkT3V0RmlsZW5vID0gU1RET1VUX0ZJTEVOTzsKIGNvbnN0IGludCBr
U3RkRXJyRmlsZW5vID0gU1RERVJSX0ZJTEVOTzsKICNlbmRpZiAgLy8gX01TQ19WRVIKIAotI2lm
IEdURVNUX09TX01BQworI2lmIEdURVNUX09TX0xJTlVYCisKK25hbWVzcGFjZSB7Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK1QgUmVhZFByb2NGaWxlRmllbGQoY29uc3Qgc3RyaW5nJiBmaWxlbmFt
ZSwgaW50IGZpZWxkKSB7CisgIHN0ZDo6c3RyaW5nIGR1bW15OworICBzdGQ6Omlmc3RyZWFtIGZp
bGUoZmlsZW5hbWUuY19zdHIoKSk7CisgIHdoaWxlIChmaWVsZC0tID4gMCkgeworICAgIGZpbGUg
Pj4gZHVtbXk7CisgIH0KKyAgVCBvdXRwdXQgPSAwOworICBmaWxlID4+IG91dHB1dDsKKyAgcmV0
dXJuIG91dHB1dDsKK30KK30gIC8vIG5hbWVzcGFjZQorCisvLyBSZXR1cm5zIHRoZSBudW1iZXIg
b2YgYWN0aXZlIHRocmVhZHMsIG9yIDAgd2hlbiB0aGVyZSBpcyBhbiBlcnJvci4KK3NpemVfdCBH
ZXRUaHJlYWRDb3VudCgpIHsKKyAgY29uc3Qgc3RyaW5nIGZpbGVuYW1lID0KKyAgICAgIChNZXNz
YWdlKCkgPDwgIi9wcm9jLyIgPDwgZ2V0cGlkKCkgPDwgIi9zdGF0IikuR2V0U3RyaW5nKCk7Cisg
IHJldHVybiBSZWFkUHJvY0ZpbGVGaWVsZDxpbnQ+KGZpbGVuYW1lLCAxOSk7Cit9CisKKyNlbGlm
IEdURVNUX09TX01BQwogCi0vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBydW5uaW5n
IGluIHRoZSBwcm9jZXNzLCBvciAwIHRvIGluZGljYXRlIHRoYXQKLS8vIHdlIGNhbm5vdCBkZXRl
Y3QgaXQuCiBzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CiAgIGNvbnN0IHRhc2tfdCB0YXNrID0g
bWFjaF90YXNrX3NlbGYoKTsKICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCB0aHJlYWRfY291bnQ7
CkBAIC05Niw2ICsxMzEsMzkgQEAgc2l6ZV90IEdldFRocmVhZENvdW50KCkgewogICB9CiB9CiAK
KyNlbGlmIEdURVNUX09TX1FOWAorCisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBy
dW5uaW5nIGluIHRoZSBwcm9jZXNzLCBvciAwIHRvIGluZGljYXRlIHRoYXQKKy8vIHdlIGNhbm5v
dCBkZXRlY3QgaXQuCitzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CisgIGNvbnN0IGludCBmZCA9
IG9wZW4oIi9wcm9jL3NlbGYvYXMiLCBPX1JET05MWSk7CisgIGlmIChmZCA8IDApIHsKKyAgICBy
ZXR1cm4gMDsKKyAgfQorICBwcm9jZnNfaW5mbyBwcm9jZXNzX2luZm87CisgIGNvbnN0IGludCBz
dGF0dXMgPQorICAgICAgZGV2Y3RsKGZkLCBEQ01EX1BST0NfSU5GTywgJnByb2Nlc3NfaW5mbywg
c2l6ZW9mKHByb2Nlc3NfaW5mbyksIE5VTEwpOworICBjbG9zZShmZCk7CisgIGlmIChzdGF0dXMg
PT0gRU9LKSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4ocHJvY2Vzc19pbmZvLm51
bV90aHJlYWRzKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCisjZWxpZiBH
VEVTVF9PU19BSVgKKworc2l6ZV90IEdldFRocmVhZENvdW50KCkgeworICBzdHJ1Y3QgcHJvY2Vu
dHJ5NjQgZW50cnk7CisgIHBpZF90IHBpZCA9IGdldHBpZCgpOworICBpbnQgc3RhdHVzID0gZ2V0
cHJvY3M2NCgmZW50cnksIHNpemVvZihlbnRyeSksIE5VTEwsIDAsICZwaWQsIDEpOworICBpZiAo
c3RhdHVzID09IDEpIHsKKyAgICByZXR1cm4gZW50cnkucGlfdGhjb3VudDsKKyAgfSBlbHNlIHsK
KyAgICByZXR1cm4gMDsKKyAgfQorfQorCiAjZWxzZQogCiBzaXplX3QgR2V0VGhyZWFkQ291bnQo
KSB7CkBAIC0xMDQsNyArMTcyLDM5MCBAQCBzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CiAgIHJl
dHVybiAwOwogfQogCi0jZW5kaWYgIC8vIEdURVNUX09TX01BQworI2VuZGlmICAvLyBHVEVTVF9P
U19MSU5VWAorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRSAmJiBHVEVTVF9PU19XSU5ET1dTCisK
K3ZvaWQgU2xlZXBNaWxsaXNlY29uZHMoaW50IG4pIHsKKyAgOjpTbGVlcChuKTsKK30KKworQXV0
b0hhbmRsZTo6QXV0b0hhbmRsZSgpCisgICAgOiBoYW5kbGVfKElOVkFMSURfSEFORExFX1ZBTFVF
KSB7fQorCitBdXRvSGFuZGxlOjpBdXRvSGFuZGxlKEhhbmRsZSBoYW5kbGUpCisgICAgOiBoYW5k
bGVfKGhhbmRsZSkge30KKworQXV0b0hhbmRsZTo6fkF1dG9IYW5kbGUoKSB7CisgIFJlc2V0KCk7
Cit9CisKK0F1dG9IYW5kbGU6OkhhbmRsZSBBdXRvSGFuZGxlOjpHZXQoKSBjb25zdCB7CisgIHJl
dHVybiBoYW5kbGVfOworfQorCit2b2lkIEF1dG9IYW5kbGU6OlJlc2V0KCkgeworICBSZXNldChJ
TlZBTElEX0hBTkRMRV9WQUxVRSk7Cit9CisKK3ZvaWQgQXV0b0hhbmRsZTo6UmVzZXQoSEFORExF
IGhhbmRsZSkgeworICAvLyBSZXNldHRpbmcgd2l0aCB0aGUgc2FtZSBoYW5kbGUgd2UgYWxyZWFk
eSBvd24gaXMgaW52YWxpZC4KKyAgaWYgKGhhbmRsZV8gIT0gaGFuZGxlKSB7CisgICAgaWYgKElz
Q2xvc2VhYmxlKCkpIHsKKyAgICAgIDo6Q2xvc2VIYW5kbGUoaGFuZGxlXyk7CisgICAgfQorICAg
IGhhbmRsZV8gPSBoYW5kbGU7CisgIH0gZWxzZSB7CisgICAgR1RFU1RfQ0hFQ0tfKCFJc0Nsb3Nl
YWJsZSgpKQorICAgICAgICA8PCAiUmVzZXR0aW5nIGEgdmFsaWQgaGFuZGxlIHRvIGl0c2VsZiBp
cyBsaWtlbHkgYSBwcm9ncmFtbWVyIGVycm9yICIKKyAgICAgICAgICAgICJhbmQgdGh1cyBub3Qg
YWxsb3dlZC4iOworICB9Cit9CisKK2Jvb2wgQXV0b0hhbmRsZTo6SXNDbG9zZWFibGUoKSBjb25z
dCB7CisgIC8vIERpZmZlcmVudCBXaW5kb3dzIEFQSXMgbWF5IHVzZSBlaXRoZXIgb2YgdGhlc2Ug
dmFsdWVzIHRvIHJlcHJlc2VudCBhbgorICAvLyBpbnZhbGlkIGhhbmRsZS4KKyAgcmV0dXJuIGhh
bmRsZV8gIT0gTlVMTCAmJiBoYW5kbGVfICE9IElOVkFMSURfSEFORExFX1ZBTFVFOworfQorCitO
b3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbigpCisgICAgOiBldmVudF8oOjpDcmVhdGVFdmVudChO
VUxMLCAgIC8vIERlZmF1bHQgc2VjdXJpdHkgYXR0cmlidXRlcy4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRSVUUsICAgLy8gRG8gbm90IHJlc2V0IGF1dG9tYXRpY2FsbHkuCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGQUxTRSwgIC8vIEluaXRpYWxseSB1bnNldC4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5VTEwpKSB7ICAvLyBBbm9ueW1vdXMgZXZlbnQuCisgIEdURVNU
X0NIRUNLXyhldmVudF8uR2V0KCkgIT0gTlVMTCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpO
b3RpZnkoKSB7CisgIEdURVNUX0NIRUNLXyg6OlNldEV2ZW50KGV2ZW50Xy5HZXQoKSkgIT0gRkFM
U0UpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6V2FpdEZvck5vdGlmaWNhdGlvbigpIHsKKyAg
R1RFU1RfQ0hFQ0tfKAorICAgICAgOjpXYWl0Rm9yU2luZ2xlT2JqZWN0KGV2ZW50Xy5HZXQoKSwg
SU5GSU5JVEUpID09IFdBSVRfT0JKRUNUXzApOworfQorCitNdXRleDo6TXV0ZXgoKQorICAgIDog
b3duZXJfdGhyZWFkX2lkXygwKSwKKyAgICAgIHR5cGVfKGtEeW5hbWljKSwKKyAgICAgIGNyaXRp
Y2FsX3NlY3Rpb25faW5pdF9waGFzZV8oMCksCisgICAgICBjcml0aWNhbF9zZWN0aW9uXyhuZXcg
Q1JJVElDQUxfU0VDVElPTikgeworICA6OkluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oY3JpdGlj
YWxfc2VjdGlvbl8pOworfQorCitNdXRleDo6fk11dGV4KCkgeworICAvLyBTdGF0aWMgbXV0ZXhl
cyBhcmUgbGVha2VkIGludGVudGlvbmFsbHkuIEl0IGlzIG5vdCB0aHJlYWQtc2FmZSB0byB0cnkK
KyAgLy8gdG8gY2xlYW4gdGhlbSB1cC4KKyAgLy8gVE9ETyh5dWthd2EpOiBTd2l0Y2ggdG8gU2xp
bSBSZWFkZXIvV3JpdGVyIChTUlcpIExvY2tzLCB3aGljaCByZXF1aXJlcworICAvLyBub3RoaW5n
IHRvIGNsZWFuIGl0IHVwIGJ1dCBpcyBhdmFpbGFibGUgb25seSBvbiBWaXN0YSBhbmQgbGF0ZXIu
CisgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rl
c2t0b3AvYWE5MDQ5MzcuYXNweAorICBpZiAodHlwZV8gPT0ga0R5bmFtaWMpIHsKKyAgICA6OkRl
bGV0ZUNyaXRpY2FsU2VjdGlvbihjcml0aWNhbF9zZWN0aW9uXyk7CisgICAgZGVsZXRlIGNyaXRp
Y2FsX3NlY3Rpb25fOworICAgIGNyaXRpY2FsX3NlY3Rpb25fID0gTlVMTDsKKyAgfQorfQorCit2
b2lkIE11dGV4OjpMb2NrKCkgeworICBUaHJlYWRTYWZlTGF6eUluaXQoKTsKKyAgOjpFbnRlckNy
aXRpY2FsU2VjdGlvbihjcml0aWNhbF9zZWN0aW9uXyk7CisgIG93bmVyX3RocmVhZF9pZF8gPSA6
OkdldEN1cnJlbnRUaHJlYWRJZCgpOworfQorCit2b2lkIE11dGV4OjpVbmxvY2soKSB7CisgIFRo
cmVhZFNhZmVMYXp5SW5pdCgpOworICAvLyBXZSBkb24ndCBwcm90ZWN0IHdyaXRpbmcgdG8gb3du
ZXJfdGhyZWFkX2lkXyBoZXJlLCBhcyBpdCdzIHRoZQorICAvLyBjYWxsZXIncyByZXNwb25zaWJp
bGl0eSB0byBlbnN1cmUgdGhhdCB0aGUgY3VycmVudCB0aHJlYWQgaG9sZHMgdGhlCisgIC8vIG11
dGV4IHdoZW4gdGhpcyBpcyBjYWxsZWQuCisgIG93bmVyX3RocmVhZF9pZF8gPSAwOworICA6Okxl
YXZlQ3JpdGljYWxTZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb25fKTsKK30KKworLy8gRG9lcyBub3Ro
aW5nIGlmIHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUgbXV0ZXguIE90aGVyd2lzZSwgY3Jh
c2hlcworLy8gd2l0aCBoaWdoIHByb2JhYmlsaXR5Lgordm9pZCBNdXRleDo6QXNzZXJ0SGVsZCgp
IHsKKyAgVGhyZWFkU2FmZUxhenlJbml0KCk7CisgIEdURVNUX0NIRUNLXyhvd25lcl90aHJlYWRf
aWRfID09IDo6R2V0Q3VycmVudFRocmVhZElkKCkpCisgICAgICA8PCAiVGhlIGN1cnJlbnQgdGhy
ZWFkIGlzIG5vdCBob2xkaW5nIHRoZSBtdXRleCBAIiA8PCB0aGlzOworfQorCisvLyBJbml0aWFs
aXplcyBvd25lcl90aHJlYWRfaWRfIGFuZCBjcml0aWNhbF9zZWN0aW9uXyBpbiBzdGF0aWMgbXV0
ZXhlcy4KK3ZvaWQgTXV0ZXg6OlRocmVhZFNhZmVMYXp5SW5pdCgpIHsKKyAgLy8gRHluYW1pYyBt
dXRleGVzIGFyZSBpbml0aWFsaXplZCBpbiB0aGUgY29uc3RydWN0b3IuCisgIGlmICh0eXBlXyA9
PSBrU3RhdGljKSB7CisgICAgc3dpdGNoICgKKyAgICAgICAgOjpJbnRlcmxvY2tlZENvbXBhcmVF
eGNoYW5nZSgmY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXywgMUwsIDBMKSkgeworICAgICAg
Y2FzZSAwOgorICAgICAgICAvLyBJZiBjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhhc2VfIHdhcyAw
IGJlZm9yZSB0aGUgZXhjaGFuZ2UsIHdlCisgICAgICAgIC8vIGFyZSB0aGUgZmlyc3QgdG8gdGVz
dCBpdCBhbmQgbmVlZCB0byBwZXJmb3JtIHRoZSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgb3du
ZXJfdGhyZWFkX2lkXyA9IDA7CisgICAgICAgIGNyaXRpY2FsX3NlY3Rpb25fID0gbmV3IENSSVRJ
Q0FMX1NFQ1RJT047CisgICAgICAgIDo6SW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbihjcml0aWNh
bF9zZWN0aW9uXyk7CisgICAgICAgIC8vIFVwZGF0ZXMgdGhlIGNyaXRpY2FsX3NlY3Rpb25faW5p
dF9waGFzZV8gdG8gMiB0byBzaWduYWwKKyAgICAgICAgLy8gaW5pdGlhbGl6YXRpb24gY29tcGxl
dGUuCisgICAgICAgIEdURVNUX0NIRUNLXyg6OkludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAmY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXywg
MkwsIDFMKSA9PQorICAgICAgICAgICAgICAgICAgICAgIDFMKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIDE6CisgICAgICAgIC8vIFNvbWVib2R5IGVsc2UgaXMgYWxyZWFkeSBpbml0aWFs
aXppbmcgdGhlIG11dGV4OyBzcGluIHVudGlsIHRoZXkKKyAgICAgICAgLy8gYXJlIGRvbmUuCisg
ICAgICAgIHdoaWxlICg6OkludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKCZjcml0aWNhbF9zZWN0
aW9uX2luaXRfcGhhc2VfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMkwp
ICE9IDJMKSB7CisgICAgICAgICAgLy8gUG9zc2libHkgeWllbGRzIHRoZSByZXN0IG9mIHRoZSB0
aHJlYWQncyB0aW1lIHNsaWNlIHRvIG90aGVyCisgICAgICAgICAgLy8gdGhyZWFkcy4KKyAgICAg
ICAgICA6OlNsZWVwKDApOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNl
IDI6CisgICAgICAgIGJyZWFrOyAgLy8gVGhlIG11dGV4IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQg
YW5kIHJlYWR5IGZvciB1c2UuCisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIEdURVNUX0NIRUNL
XyhmYWxzZSkKKyAgICAgICAgICAgIDw8ICJVbmV4cGVjdGVkIHZhbHVlIG9mIGNyaXRpY2FsX3Nl
Y3Rpb25faW5pdF9waGFzZV8gIgorICAgICAgICAgICAgPDwgIndoaWxlIGluaXRpYWxpemluZyBh
IHN0YXRpYyBtdXRleC4iOworICAgIH0KKyAgfQorfQorCituYW1lc3BhY2UgeworCitjbGFzcyBU
aHJlYWRXaXRoUGFyYW1TdXBwb3J0IDogcHVibGljIFRocmVhZFdpdGhQYXJhbUJhc2UgeworIHB1
YmxpYzoKKyAgc3RhdGljIEhBTkRMRSBDcmVhdGVUaHJlYWQoUnVubmFibGUqIHJ1bm5hYmxlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24qIHRocmVhZF9jYW5fc3Rh
cnQpIHsKKyAgICBUaHJlYWRNYWluUGFyYW0qIHBhcmFtID0gbmV3IFRocmVhZE1haW5QYXJhbShy
dW5uYWJsZSwgdGhyZWFkX2Nhbl9zdGFydCk7CisgICAgRFdPUkQgdGhyZWFkX2lkOworICAgIC8v
IFRPRE8oeXVrYXdhKTogQ29uc2lkZXIgdG8gdXNlIF9iZWdpbnRocmVhZGV4IGluc3RlYWQuCisg
ICAgSEFORExFIHRocmVhZF9oYW5kbGUgPSA6OkNyZWF0ZVRocmVhZCgKKyAgICAgICAgTlVMTCwg
ICAgLy8gRGVmYXVsdCBzZWN1cml0eS4KKyAgICAgICAgMCwgICAgICAgLy8gRGVmYXVsdCBzdGFj
ayBzaXplLgorICAgICAgICAmVGhyZWFkV2l0aFBhcmFtU3VwcG9ydDo6VGhyZWFkTWFpbiwKKyAg
ICAgICAgcGFyYW0sICAgLy8gUGFyYW1ldGVyIHRvIFRocmVhZE1haW5TdGF0aWMKKyAgICAgICAg
MHgwLCAgICAgLy8gRGVmYXVsdCBjcmVhdGlvbiBmbGFncy4KKyAgICAgICAgJnRocmVhZF9pZCk7
ICAvLyBOZWVkIGEgdmFsaWQgcG9pbnRlciBmb3IgdGhlIGNhbGwgdG8gd29yayB1bmRlciBXaW45
OC4KKyAgICBHVEVTVF9DSEVDS18odGhyZWFkX2hhbmRsZSAhPSBOVUxMKSA8PCAiQ3JlYXRlVGhy
ZWFkIGZhaWxlZCB3aXRoIGVycm9yICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCA6OkdldExhc3RFcnJvcigpIDw8ICIuIjsKKyAgICBpZiAodGhyZWFkX2hhbmRs
ZSA9PSBOVUxMKSB7CisgICAgICBkZWxldGUgcGFyYW07CisgICAgfQorICAgIHJldHVybiB0aHJl
YWRfaGFuZGxlOworICB9CisKKyBwcml2YXRlOgorICBzdHJ1Y3QgVGhyZWFkTWFpblBhcmFtIHsK
KyAgICBUaHJlYWRNYWluUGFyYW0oUnVubmFibGUqIHJ1bm5hYmxlLCBOb3RpZmljYXRpb24qIHRo
cmVhZF9jYW5fc3RhcnQpCisgICAgICAgIDogcnVubmFibGVfKHJ1bm5hYmxlKSwKKyAgICAgICAg
ICB0aHJlYWRfY2FuX3N0YXJ0Xyh0aHJlYWRfY2FuX3N0YXJ0KSB7CisgICAgfQorICAgIHNjb3Bl
ZF9wdHI8UnVubmFibGU+IHJ1bm5hYmxlXzsKKyAgICAvLyBEb2VzIG5vdCBvd24uCisgICAgTm90
aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0XzsKKyAgfTsKKworICBzdGF0aWMgRFdPUkQgV0lO
QVBJIFRocmVhZE1haW4odm9pZCogcHRyKSB7CisgICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcC4K
KyAgICBzY29wZWRfcHRyPFRocmVhZE1haW5QYXJhbT4gcGFyYW0oc3RhdGljX2Nhc3Q8VGhyZWFk
TWFpblBhcmFtKj4ocHRyKSk7CisgICAgaWYgKHBhcmFtLT50aHJlYWRfY2FuX3N0YXJ0XyAhPSBO
VUxMKQorICAgICAgcGFyYW0tPnRocmVhZF9jYW5fc3RhcnRfLT5XYWl0Rm9yTm90aWZpY2F0aW9u
KCk7CisgICAgcGFyYW0tPnJ1bm5hYmxlXy0+UnVuKCk7CisgICAgcmV0dXJuIDA7CisgIH0KKwor
ICAvLyBQcm9oaWJpdCBpbnN0YW50aWF0aW9uLgorICBUaHJlYWRXaXRoUGFyYW1TdXBwb3J0KCk7
CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJlYWRXaXRoUGFyYW1TdXBw
b3J0KTsKK307CisKK30gIC8vIG5hbWVzcGFjZQorCitUaHJlYWRXaXRoUGFyYW1CYXNlOjpUaHJl
YWRXaXRoUGFyYW1CYXNlKFJ1bm5hYmxlICpydW5uYWJsZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KQorICAg
ICAgOiB0aHJlYWRfKFRocmVhZFdpdGhQYXJhbVN1cHBvcnQ6OkNyZWF0ZVRocmVhZChydW5uYWJs
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGhyZWFkX2Nhbl9zdGFydCkpIHsKK30KKworVGhyZWFkV2l0aFBhcmFtQmFzZTo6flRocmVhZFdp
dGhQYXJhbUJhc2UoKSB7CisgIEpvaW4oKTsKK30KKwordm9pZCBUaHJlYWRXaXRoUGFyYW1CYXNl
OjpKb2luKCkgeworICBHVEVTVF9DSEVDS18oOjpXYWl0Rm9yU2luZ2xlT2JqZWN0KHRocmVhZF8u
R2V0KCksIElORklOSVRFKSA9PSBXQUlUX09CSkVDVF8wKQorICAgICAgPDwgIkZhaWxlZCB0byBq
b2luIHRoZSB0aHJlYWQgd2l0aCBlcnJvciAiIDw8IDo6R2V0TGFzdEVycm9yKCkgPDwgIi4iOwor
fQorCisvLyBNYXBzIGEgdGhyZWFkIHRvIGEgc2V0IG9mIFRocmVhZElkVG9UaHJlYWRMb2NhbHMg
dGhhdCBoYXZlIHZhbHVlcworLy8gaW5zdGFudGlhdGVkIG9uIHRoYXQgdGhyZWFkIGFuZCBub3Rp
ZmllcyB0aGVtIHdoZW4gdGhlIHRocmVhZCBleGl0cy4gIEEKKy8vIFRocmVhZExvY2FsIGluc3Rh
bmNlIGlzIGV4cGVjdGVkIHRvIHBlcnNpc3QgdW50aWwgYWxsIHRocmVhZHMgaXQgaGFzCisvLyB2
YWx1ZXMgb24gaGF2ZSB0ZXJtaW5hdGVkLgorY2xhc3MgVGhyZWFkTG9jYWxSZWdpc3RyeUltcGwg
eworIHB1YmxpYzoKKyAgLy8gUmVnaXN0ZXJzIHRocmVhZF9sb2NhbF9pbnN0YW5jZSBhcyBoYXZp
bmcgdmFsdWUgb24gdGhlIGN1cnJlbnQgdGhyZWFkLgorICAvLyBSZXR1cm5zIGEgdmFsdWUgdGhh
dCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSB0aGUgdGhyZWFkIGZyb20gb3RoZXIgdGhyZWFkcy4K
KyAgc3RhdGljIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlKiBHZXRWYWx1ZU9uQ3VycmVudFRo
cmVhZCgKKyAgICAgIGNvbnN0IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2FsX2luc3RhbmNl
KSB7CisgICAgRFdPUkQgY3VycmVudF90aHJlYWQgPSA6OkdldEN1cnJlbnRUaHJlYWRJZCgpOwor
ICAgIE11dGV4TG9jayBsb2NrKCZtdXRleF8pOworICAgIFRocmVhZElkVG9UaHJlYWRMb2NhbHMq
IGNvbnN0IHRocmVhZF90b190aHJlYWRfbG9jYWxzID0KKyAgICAgICAgR2V0VGhyZWFkTG9jYWxz
TWFwTG9ja2VkKCk7CisgICAgVGhyZWFkSWRUb1RocmVhZExvY2Fsczo6aXRlcmF0b3IgdGhyZWFk
X2xvY2FsX3BvcyA9CisgICAgICAgIHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5maW5kKGN1cnJl
bnRfdGhyZWFkKTsKKyAgICBpZiAodGhyZWFkX2xvY2FsX3BvcyA9PSB0aHJlYWRfdG9fdGhyZWFk
X2xvY2Fscy0+ZW5kKCkpIHsKKyAgICAgIHRocmVhZF9sb2NhbF9wb3MgPSB0aHJlYWRfdG9fdGhy
ZWFkX2xvY2Fscy0+aW5zZXJ0KAorICAgICAgICAgIHN0ZDo6bWFrZV9wYWlyKGN1cnJlbnRfdGhy
ZWFkLCBUaHJlYWRMb2NhbFZhbHVlcygpKSkuZmlyc3Q7CisgICAgICBTdGFydFdhdGNoZXJUaHJl
YWRGb3IoY3VycmVudF90aHJlYWQpOworICAgIH0KKyAgICBUaHJlYWRMb2NhbFZhbHVlcyYgdGhy
ZWFkX2xvY2FsX3ZhbHVlcyA9IHRocmVhZF9sb2NhbF9wb3MtPnNlY29uZDsKKyAgICBUaHJlYWRM
b2NhbFZhbHVlczo6aXRlcmF0b3IgdmFsdWVfcG9zID0KKyAgICAgICAgdGhyZWFkX2xvY2FsX3Zh
bHVlcy5maW5kKHRocmVhZF9sb2NhbF9pbnN0YW5jZSk7CisgICAgaWYgKHZhbHVlX3BvcyA9PSB0
aHJlYWRfbG9jYWxfdmFsdWVzLmVuZCgpKSB7CisgICAgICB2YWx1ZV9wb3MgPQorICAgICAgICAg
IHRocmVhZF9sb2NhbF92YWx1ZXMKKyAgICAgICAgICAgICAgLmluc2VydChzdGQ6Om1ha2VfcGFp
cigKKyAgICAgICAgICAgICAgICAgIHRocmVhZF9sb2NhbF9pbnN0YW5jZSwKKyAgICAgICAgICAg
ICAgICAgIGxpbmtlZF9wdHI8VGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2U+KAorICAgICAgICAg
ICAgICAgICAgICAgIHRocmVhZF9sb2NhbF9pbnN0YW5jZS0+TmV3VmFsdWVGb3JDdXJyZW50VGhy
ZWFkKCkpKSkKKyAgICAgICAgICAgICAgLmZpcnN0OworICAgIH0KKyAgICByZXR1cm4gdmFsdWVf
cG9zLT5zZWNvbmQuZ2V0KCk7CisgIH0KKworICBzdGF0aWMgdm9pZCBPblRocmVhZExvY2FsRGVz
dHJveWVkKAorICAgICAgY29uc3QgVGhyZWFkTG9jYWxCYXNlKiB0aHJlYWRfbG9jYWxfaW5zdGFu
Y2UpIHsKKyAgICBzdGQ6OnZlY3RvcjxsaW5rZWRfcHRyPFRocmVhZExvY2FsVmFsdWVIb2xkZXJC
YXNlPiA+IHZhbHVlX2hvbGRlcnM7CisgICAgLy8gQ2xlYW4gdXAgdGhlIFRocmVhZExvY2FsVmFs
dWVzIGRhdGEgc3RydWN0dXJlIHdoaWxlIGhvbGRpbmcgdGhlIGxvY2ssIGJ1dAorICAgIC8vIGRl
ZmVyIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2VzLgor
ICAgIHsKKyAgICAgIE11dGV4TG9jayBsb2NrKCZtdXRleF8pOworICAgICAgVGhyZWFkSWRUb1Ro
cmVhZExvY2FscyogY29uc3QgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMgPQorICAgICAgICAgIEdl
dFRocmVhZExvY2Fsc01hcExvY2tlZCgpOworICAgICAgZm9yIChUaHJlYWRJZFRvVGhyZWFkTG9j
YWxzOjppdGVyYXRvciBpdCA9CisgICAgICAgICAgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmJl
Z2luKCk7CisgICAgICAgICAgaXQgIT0gdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmVuZCgpOwor
ICAgICAgICAgICsraXQpIHsKKyAgICAgICAgVGhyZWFkTG9jYWxWYWx1ZXMmIHRocmVhZF9sb2Nh
bF92YWx1ZXMgPSBpdC0+c2Vjb25kOworICAgICAgICBUaHJlYWRMb2NhbFZhbHVlczo6aXRlcmF0
b3IgdmFsdWVfcG9zID0KKyAgICAgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMuZmluZCh0aHJl
YWRfbG9jYWxfaW5zdGFuY2UpOworICAgICAgICBpZiAodmFsdWVfcG9zICE9IHRocmVhZF9sb2Nh
bF92YWx1ZXMuZW5kKCkpIHsKKyAgICAgICAgICB2YWx1ZV9ob2xkZXJzLnB1c2hfYmFjayh2YWx1
ZV9wb3MtPnNlY29uZCk7CisgICAgICAgICAgdGhyZWFkX2xvY2FsX3ZhbHVlcy5lcmFzZSh2YWx1
ZV9wb3MpOworICAgICAgICAgIC8vIFRoaXMgJ2lmJyBjYW4gb25seSBiZSBzdWNjZXNzZnVsIGF0
IG1vc3Qgb25jZSwgc28gdGhlb3JldGljYWxseSB3ZQorICAgICAgICAgIC8vIGNvdWxkIGJyZWFr
IG91dCBvZiB0aGUgbG9vcCBoZXJlLCBidXQgd2UgZG9uJ3QgYm90aGVyIGRvaW5nIHNvLgorICAg
ICAgICB9CisgICAgICB9CisgICAgfQorICAgIC8vIE91dHNpZGUgdGhlIGxvY2ssIGxldCB0aGUg
ZGVzdHJ1Y3RvciBmb3IgJ3ZhbHVlX2hvbGRlcnMnIGRlYWxsb2NhdGUgdGhlCisgICAgLy8gVGhy
ZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2VzLgorICB9CisKKyAgc3RhdGljIHZvaWQgT25UaHJlYWRF
eGl0KERXT1JEIHRocmVhZF9pZCkgeworICAgIEdURVNUX0NIRUNLXyh0aHJlYWRfaWQgIT0gMCkg
PDwgOjpHZXRMYXN0RXJyb3IoKTsKKyAgICBzdGQ6OnZlY3RvcjxsaW5rZWRfcHRyPFRocmVhZExv
Y2FsVmFsdWVIb2xkZXJCYXNlPiA+IHZhbHVlX2hvbGRlcnM7CisgICAgLy8gQ2xlYW4gdXAgdGhl
IFRocmVhZElkVG9UaHJlYWRMb2NhbHMgZGF0YSBzdHJ1Y3R1cmUgd2hpbGUgaG9sZGluZyB0aGUK
KyAgICAvLyBsb2NrLCBidXQgZGVmZXIgdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBUaHJlYWRMb2Nh
bFZhbHVlSG9sZGVyQmFzZXMuCisgICAgeworICAgICAgTXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7
CisgICAgICBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzKiBjb25zdCB0aHJlYWRfdG9fdGhyZWFkX2xv
Y2FscyA9CisgICAgICAgICAgR2V0VGhyZWFkTG9jYWxzTWFwTG9ja2VkKCk7CisgICAgICBUaHJl
YWRJZFRvVGhyZWFkTG9jYWxzOjppdGVyYXRvciB0aHJlYWRfbG9jYWxfcG9zID0KKyAgICAgICAg
ICB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+ZmluZCh0aHJlYWRfaWQpOworICAgICAgaWYgKHRo
cmVhZF9sb2NhbF9wb3MgIT0gdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmVuZCgpKSB7CisgICAg
ICAgIFRocmVhZExvY2FsVmFsdWVzJiB0aHJlYWRfbG9jYWxfdmFsdWVzID0gdGhyZWFkX2xvY2Fs
X3Bvcy0+c2Vjb25kOworICAgICAgICBmb3IgKFRocmVhZExvY2FsVmFsdWVzOjppdGVyYXRvciB2
YWx1ZV9wb3MgPQorICAgICAgICAgICAgdGhyZWFkX2xvY2FsX3ZhbHVlcy5iZWdpbigpOworICAg
ICAgICAgICAgdmFsdWVfcG9zICE9IHRocmVhZF9sb2NhbF92YWx1ZXMuZW5kKCk7CisgICAgICAg
ICAgICArK3ZhbHVlX3BvcykgeworICAgICAgICAgIHZhbHVlX2hvbGRlcnMucHVzaF9iYWNrKHZh
bHVlX3Bvcy0+c2Vjb25kKTsKKyAgICAgICAgfQorICAgICAgICB0aHJlYWRfdG9fdGhyZWFkX2xv
Y2Fscy0+ZXJhc2UodGhyZWFkX2xvY2FsX3Bvcyk7CisgICAgICB9CisgICAgfQorICAgIC8vIE91
dHNpZGUgdGhlIGxvY2ssIGxldCB0aGUgZGVzdHJ1Y3RvciBmb3IgJ3ZhbHVlX2hvbGRlcnMnIGRl
YWxsb2NhdGUgdGhlCisgICAgLy8gVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2VzLgorICB9CisK
KyBwcml2YXRlOgorICAvLyBJbiBhIHBhcnRpY3VsYXIgdGhyZWFkLCBtYXBzIGEgVGhyZWFkTG9j
YWwgb2JqZWN0IHRvIGl0cyB2YWx1ZS4KKyAgdHlwZWRlZiBzdGQ6Om1hcDxjb25zdCBUaHJlYWRM
b2NhbEJhc2UqLAorICAgICAgICAgICAgICAgICAgIGxpbmtlZF9wdHI8VGhyZWFkTG9jYWxWYWx1
ZUhvbGRlckJhc2U+ID4gVGhyZWFkTG9jYWxWYWx1ZXM7CisgIC8vIFN0b3JlcyBhbGwgVGhyZWFk
SWRUb1RocmVhZExvY2FscyBoYXZpbmcgdmFsdWVzIGluIGEgdGhyZWFkLCBpbmRleGVkIGJ5Cisg
IC8vIHRocmVhZCdzIElELgorICB0eXBlZGVmIHN0ZDo6bWFwPERXT1JELCBUaHJlYWRMb2NhbFZh
bHVlcz4gVGhyZWFkSWRUb1RocmVhZExvY2FsczsKKworICAvLyBIb2xkcyB0aGUgdGhyZWFkIGlk
IGFuZCB0aHJlYWQgaGFuZGxlIHRoYXQgd2UgcGFzcyBmcm9tCisgIC8vIFN0YXJ0V2F0Y2hlclRo
cmVhZEZvciB0byBXYXRjaGVyVGhyZWFkRnVuYy4KKyAgdHlwZWRlZiBzdGQ6OnBhaXI8RFdPUkQs
IEhBTkRMRT4gVGhyZWFkSWRBbmRIYW5kbGU7CisKKyAgc3RhdGljIHZvaWQgU3RhcnRXYXRjaGVy
VGhyZWFkRm9yKERXT1JEIHRocmVhZF9pZCkgeworICAgIC8vIFRoZSByZXR1cm5lZCBoYW5kbGUg
d2lsbCBiZSBrZXB0IGluIHRocmVhZF9tYXAgYW5kIGNsb3NlZCBieQorICAgIC8vIHdhdGNoZXJf
dGhyZWFkIGluIFdhdGNoZXJUaHJlYWRGdW5jLgorICAgIEhBTkRMRSB0aHJlYWQgPSA6Ok9wZW5U
aHJlYWQoU1lOQ0hST05JWkUgfCBUSFJFQURfUVVFUllfSU5GT1JNQVRJT04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRocmVhZF9pZCk7CisgICAgR1RFU1RfQ0hFQ0tfKHRocmVhZCAhPSBOVUxMKTsKKyAg
ICAvLyBXZSBuZWVkIHRvIHRvIHBhc3MgYSB2YWxpZCB0aHJlYWQgSUQgcG9pbnRlciBpbnRvIENy
ZWF0ZVRocmVhZCBmb3IgaXQKKyAgICAvLyB0byB3b3JrIGNvcnJlY3RseSB1bmRlciBXaW45OC4K
KyAgICBEV09SRCB3YXRjaGVyX3RocmVhZF9pZDsKKyAgICBIQU5ETEUgd2F0Y2hlcl90aHJlYWQg
PSA6OkNyZWF0ZVRocmVhZCgKKyAgICAgICAgTlVMTCwgICAvLyBEZWZhdWx0IHNlY3VyaXR5Lgor
ICAgICAgICAwLCAgICAgIC8vIERlZmF1bHQgc3RhY2sgc2l6ZQorICAgICAgICAmVGhyZWFkTG9j
YWxSZWdpc3RyeUltcGw6OldhdGNoZXJUaHJlYWRGdW5jLAorICAgICAgICByZWludGVycHJldF9j
YXN0PExQVk9JRD4obmV3IFRocmVhZElkQW5kSGFuZGxlKHRocmVhZF9pZCwgdGhyZWFkKSksCisg
ICAgICAgIENSRUFURV9TVVNQRU5ERUQsCisgICAgICAgICZ3YXRjaGVyX3RocmVhZF9pZCk7Cisg
ICAgR1RFU1RfQ0hFQ0tfKHdhdGNoZXJfdGhyZWFkICE9IE5VTEwpOworICAgIC8vIEdpdmUgdGhl
IHdhdGNoZXIgdGhyZWFkIHRoZSBzYW1lIHByaW9yaXR5IGFzIG91cnMgdG8gYXZvaWQgYmVpbmcK
KyAgICAvLyBibG9ja2VkIGJ5IGl0LgorICAgIDo6U2V0VGhyZWFkUHJpb3JpdHkod2F0Y2hlcl90
aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICA6OkdldFRocmVhZFByaW9yaXR5KDo6R2V0
Q3VycmVudFRocmVhZCgpKSk7CisgICAgOjpSZXN1bWVUaHJlYWQod2F0Y2hlcl90aHJlYWQpOwor
ICAgIDo6Q2xvc2VIYW5kbGUod2F0Y2hlcl90aHJlYWQpOworICB9CisKKyAgLy8gTW9uaXRvcnMg
ZXhpdCBmcm9tIGEgZ2l2ZW4gdGhyZWFkIGFuZCBub3RpZmllcyB0aG9zZQorICAvLyBUaHJlYWRJ
ZFRvVGhyZWFkTG9jYWxzIGFib3V0IHRocmVhZCB0ZXJtaW5hdGlvbi4KKyAgc3RhdGljIERXT1JE
IFdJTkFQSSBXYXRjaGVyVGhyZWFkRnVuYyhMUFZPSUQgcGFyYW0pIHsKKyAgICBjb25zdCBUaHJl
YWRJZEFuZEhhbmRsZSogdGFoID0KKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUaHJl
YWRJZEFuZEhhbmRsZSo+KHBhcmFtKTsKKyAgICBHVEVTVF9DSEVDS18oCisgICAgICAgIDo6V2Fp
dEZvclNpbmdsZU9iamVjdCh0YWgtPnNlY29uZCwgSU5GSU5JVEUpID09IFdBSVRfT0JKRUNUXzAp
OworICAgIE9uVGhyZWFkRXhpdCh0YWgtPmZpcnN0KTsKKyAgICA6OkNsb3NlSGFuZGxlKHRhaC0+
c2Vjb25kKTsKKyAgICBkZWxldGUgdGFoOworICAgIHJldHVybiAwOworICB9CisKKyAgLy8gUmV0
dXJucyBtYXAgb2YgdGhyZWFkIGxvY2FsIGluc3RhbmNlcy4KKyAgc3RhdGljIFRocmVhZElkVG9U
aHJlYWRMb2NhbHMqIEdldFRocmVhZExvY2Fsc01hcExvY2tlZCgpIHsKKyAgICBtdXRleF8uQXNz
ZXJ0SGVsZCgpOworICAgIHN0YXRpYyBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzKiBtYXAgPSBuZXcg
VGhyZWFkSWRUb1RocmVhZExvY2FsczsKKyAgICByZXR1cm4gbWFwOworICB9CisKKyAgLy8gUHJv
dGVjdHMgYWNjZXNzIHRvIEdldFRocmVhZExvY2Fsc01hcExvY2tlZCgpIGFuZCBpdHMgcmV0dXJu
IHZhbHVlLgorICBzdGF0aWMgTXV0ZXggbXV0ZXhfOworICAvLyBQcm90ZWN0cyBhY2Nlc3MgdG8g
R2V0VGhyZWFkTWFwTG9ja2VkKCkgYW5kIGl0cyByZXR1cm4gdmFsdWUuCisgIHN0YXRpYyBNdXRl
eCB0aHJlYWRfbWFwX211dGV4XzsKK307CisKK011dGV4IFRocmVhZExvY2FsUmVnaXN0cnlJbXBs
OjptdXRleF8oTXV0ZXg6OmtTdGF0aWNNdXRleCk7CitNdXRleCBUaHJlYWRMb2NhbFJlZ2lzdHJ5
SW1wbDo6dGhyZWFkX21hcF9tdXRleF8oTXV0ZXg6OmtTdGF0aWNNdXRleCk7CisKK1RocmVhZExv
Y2FsVmFsdWVIb2xkZXJCYXNlKiBUaHJlYWRMb2NhbFJlZ2lzdHJ5OjpHZXRWYWx1ZU9uQ3VycmVu
dFRocmVhZCgKKyAgICAgIGNvbnN0IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2FsX2luc3Rh
bmNlKSB7CisgIHJldHVybiBUaHJlYWRMb2NhbFJlZ2lzdHJ5SW1wbDo6R2V0VmFsdWVPbkN1cnJl
bnRUaHJlYWQoCisgICAgICB0aHJlYWRfbG9jYWxfaW5zdGFuY2UpOworfQorCit2b2lkIFRocmVh
ZExvY2FsUmVnaXN0cnk6Ok9uVGhyZWFkTG9jYWxEZXN0cm95ZWQoCisgICAgICBjb25zdCBUaHJl
YWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9pbnN0YW5jZSkgeworICBUaHJlYWRMb2NhbFJlZ2lz
dHJ5SW1wbDo6T25UaHJlYWRMb2NhbERlc3Ryb3llZCh0aHJlYWRfbG9jYWxfaW5zdGFuY2UpOwor
fQorCisjZW5kaWYgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUgJiYgR1RFU1RfT1NfV0lORE9XUwog
CiAjaWYgR1RFU1RfVVNFU19QT1NJWF9SRQogCkBAIC0xODAsMjAgKzYzMSwyMCBAQCBib29sIElz
SW5TZXQoY2hhciBjaCwgY29uc3QgY2hhciogc3RyKSB7CiAvLyBSZXR1cm5zIHRydWUgaWZmIGNo
IGJlbG9uZ3MgdG8gdGhlIGdpdmVuIGNsYXNzaWZpY2F0aW9uLiAgVW5saWtlCiAvLyBzaW1pbGFy
IGZ1bmN0aW9ucyBpbiA8Y3R5cGUuaD4sIHRoZXNlIGFyZW4ndCBhZmZlY3RlZCBieSB0aGUKIC8v
IGN1cnJlbnQgbG9jYWxlLgotYm9vbCBJc0RpZ2l0KGNoYXIgY2gpIHsgcmV0dXJuICcwJyA8PSBj
aCAmJiBjaCA8PSAnOSc7IH0KLWJvb2wgSXNQdW5jdChjaGFyIGNoKSB7Citib29sIElzQXNjaWlE
aWdpdChjaGFyIGNoKSB7IHJldHVybiAnMCcgPD0gY2ggJiYgY2ggPD0gJzknOyB9Citib29sIElz
QXNjaWlQdW5jdChjaGFyIGNoKSB7CiAgIHJldHVybiBJc0luU2V0KGNoLCAiXi0hXCIjJCUmJygp
KissLi86Ozw9Pj9AW1xcXV9ge3x9fiIpOwogfQogYm9vbCBJc1JlcGVhdChjaGFyIGNoKSB7IHJl
dHVybiBJc0luU2V0KGNoLCAiPyorIik7IH0KLWJvb2wgSXNXaGl0ZVNwYWNlKGNoYXIgY2gpIHsg
cmV0dXJuIElzSW5TZXQoY2gsICIgXGZcblxyXHRcdiIpOyB9Ci1ib29sIElzV29yZENoYXIoY2hh
ciBjaCkgeworYm9vbCBJc0FzY2lpV2hpdGVTcGFjZShjaGFyIGNoKSB7IHJldHVybiBJc0luU2V0
KGNoLCAiIFxmXG5cclx0XHYiKTsgfQorYm9vbCBJc0FzY2lpV29yZENoYXIoY2hhciBjaCkgewog
ICByZXR1cm4gKCdhJyA8PSBjaCAmJiBjaCA8PSAneicpIHx8ICgnQScgPD0gY2ggJiYgY2ggPD0g
J1onKSB8fAogICAgICAgKCcwJyA8PSBjaCAmJiBjaCA8PSAnOScpIHx8IGNoID09ICdfJzsKIH0K
IAogLy8gUmV0dXJucyB0cnVlIGlmZiAiXFxjIiBpcyBhIHN1cHBvcnRlZCBlc2NhcGUgc2VxdWVu
Y2UuCiBib29sIElzVmFsaWRFc2NhcGUoY2hhciBjKSB7Ci0gIHJldHVybiAoSXNQdW5jdChjKSB8
fCBJc0luU2V0KGMsICJkRGZucnNTdHZ3VyIpKTsKKyAgcmV0dXJuIChJc0FzY2lpUHVuY3QoYykg
fHwgSXNJblNldChjLCAiZERmbnJzU3R2d1ciKSk7CiB9CiAKIC8vIFJldHVybnMgdHJ1ZSBpZmYg
dGhlIGdpdmVuIGF0b20gKHNwZWNpZmllZCBieSBlc2NhcGVkIGFuZCBwYXR0ZXJuKQpAQCAtMjAx
LDI2ICs2NTIsMjYgQEAgYm9vbCBJc1ZhbGlkRXNjYXBlKGNoYXIgYykgewogYm9vbCBBdG9tTWF0
Y2hlc0NoYXIoYm9vbCBlc2NhcGVkLCBjaGFyIHBhdHRlcm5fY2hhciwgY2hhciBjaCkgewogICBp
ZiAoZXNjYXBlZCkgeyAgLy8gIlxccCIgd2hlcmUgcCBpcyBwYXR0ZXJuX2NoYXIuCiAgICAgc3dp
dGNoIChwYXR0ZXJuX2NoYXIpIHsKLSAgICAgIGNhc2UgJ2QnOiByZXR1cm4gSXNEaWdpdChjaCk7
Ci0gICAgICBjYXNlICdEJzogcmV0dXJuICFJc0RpZ2l0KGNoKTsKKyAgICAgIGNhc2UgJ2QnOiBy
ZXR1cm4gSXNBc2NpaURpZ2l0KGNoKTsKKyAgICAgIGNhc2UgJ0QnOiByZXR1cm4gIUlzQXNjaWlE
aWdpdChjaCk7CiAgICAgICBjYXNlICdmJzogcmV0dXJuIGNoID09ICdcZic7CiAgICAgICBjYXNl
ICduJzogcmV0dXJuIGNoID09ICdcbic7CiAgICAgICBjYXNlICdyJzogcmV0dXJuIGNoID09ICdc
cic7Ci0gICAgICBjYXNlICdzJzogcmV0dXJuIElzV2hpdGVTcGFjZShjaCk7Ci0gICAgICBjYXNl
ICdTJzogcmV0dXJuICFJc1doaXRlU3BhY2UoY2gpOworICAgICAgY2FzZSAncyc6IHJldHVybiBJ
c0FzY2lpV2hpdGVTcGFjZShjaCk7CisgICAgICBjYXNlICdTJzogcmV0dXJuICFJc0FzY2lpV2hp
dGVTcGFjZShjaCk7CiAgICAgICBjYXNlICd0JzogcmV0dXJuIGNoID09ICdcdCc7CiAgICAgICBj
YXNlICd2JzogcmV0dXJuIGNoID09ICdcdic7Ci0gICAgICBjYXNlICd3JzogcmV0dXJuIElzV29y
ZENoYXIoY2gpOwotICAgICAgY2FzZSAnVyc6IHJldHVybiAhSXNXb3JkQ2hhcihjaCk7CisgICAg
ICBjYXNlICd3JzogcmV0dXJuIElzQXNjaWlXb3JkQ2hhcihjaCk7CisgICAgICBjYXNlICdXJzog
cmV0dXJuICFJc0FzY2lpV29yZENoYXIoY2gpOwogICAgIH0KLSAgICByZXR1cm4gSXNQdW5jdChw
YXR0ZXJuX2NoYXIpICYmIHBhdHRlcm5fY2hhciA9PSBjaDsKKyAgICByZXR1cm4gSXNBc2NpaVB1
bmN0KHBhdHRlcm5fY2hhcikgJiYgcGF0dGVybl9jaGFyID09IGNoOwogICB9CiAKICAgcmV0dXJu
IChwYXR0ZXJuX2NoYXIgPT0gJy4nICYmIGNoICE9ICdcbicpIHx8IHBhdHRlcm5fY2hhciA9PSBj
aDsKIH0KIAogLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgVmFsaWRhdGVSZWdleCgpIHRvIGZv
cm1hdCBlcnJvciBtZXNzYWdlcy4KLVN0cmluZyBGb3JtYXRSZWdleFN5bnRheEVycm9yKGNvbnN0
IGNoYXIqIHJlZ2V4LCBpbnQgaW5kZXgpIHsKK3N0ZDo6c3RyaW5nIEZvcm1hdFJlZ2V4U3ludGF4
RXJyb3IoY29uc3QgY2hhciogcmVnZXgsIGludCBpbmRleCkgewogICByZXR1cm4gKE1lc3NhZ2Uo
KSA8PCAiU3ludGF4IGVycm9yIGF0IGluZGV4ICIgPDwgaW5kZXgKICAgICAgICAgICA8PCAiIGlu
IHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24gXCIiIDw8IHJlZ2V4IDw8ICJcIjogIikuR2V0U3Ry
aW5nKCk7CiB9CkBAIC00MjIsNiArODczLDM3IEBAIHZvaWQgUkU6OkluaXQoY29uc3QgY2hhciog
cmVnZXgpIHsKIAogI2VuZGlmICAvLyBHVEVTVF9VU0VTX1BPU0lYX1JFCiAKK2NvbnN0IGNoYXIg
a1Vua25vd25GaWxlW10gPSAidW5rbm93biBmaWxlIjsKKworLy8gRm9ybWF0cyBhIHNvdXJjZSBm
aWxlIHBhdGggYW5kIGEgbGluZSBudW1iZXIgYXMgdGhleSB3b3VsZCBhcHBlYXIKKy8vIGluIGFu
IGVycm9yIG1lc3NhZ2UgZnJvbSB0aGUgY29tcGlsZXIgdXNlZCB0byBjb21waWxlIHRoaXMgY29k
ZS4KK0dURVNUX0FQSV8gOjpzdGQ6OnN0cmluZyBGb3JtYXRGaWxlTG9jYXRpb24oY29uc3QgY2hh
ciogZmlsZSwgaW50IGxpbmUpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsZV9uYW1lKGZpbGUg
PT0gTlVMTCA/IGtVbmtub3duRmlsZSA6IGZpbGUpOworCisgIGlmIChsaW5lIDwgMCkgeworICAg
IHJldHVybiBmaWxlX25hbWUgKyAiOiI7CisgIH0KKyNpZmRlZiBfTVNDX1ZFUgorICByZXR1cm4g
ZmlsZV9uYW1lICsgIigiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGxpbmUpICsgIik6IjsKKyNlbHNl
CisgIHJldHVybiBmaWxlX25hbWUgKyAiOiIgKyBTdHJlYW1hYmxlVG9TdHJpbmcobGluZSkgKyAi
OiI7CisjZW5kaWYgIC8vIF9NU0NfVkVSCit9CisKKy8vIEZvcm1hdHMgYSBmaWxlIGxvY2F0aW9u
IGZvciBjb21waWxlci1pbmRlcGVuZGVudCBYTUwgb3V0cHV0LgorLy8gQWx0aG91Z2ggdGhpcyBm
dW5jdGlvbiBpcyBub3QgcGxhdGZvcm0gZGVwZW5kZW50LCB3ZSBwdXQgaXQgbmV4dCB0bworLy8g
Rm9ybWF0RmlsZUxvY2F0aW9uIGluIG9yZGVyIHRvIGNvbnRyYXN0IHRoZSB0d28gZnVuY3Rpb25z
LgorLy8gTm90ZSB0aGF0IEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oKSBk
b2VzIE5PVCBhcHBlbmQgY29sb24KKy8vIHRvIHRoZSBmaWxlIGxvY2F0aW9uIGl0IHByb2R1Y2Vz
LCB1bmxpa2UgRm9ybWF0RmlsZUxvY2F0aW9uKCkuCitHVEVTVF9BUElfIDo6c3RkOjpzdHJpbmcg
Rm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvbigKKyAgICBjb25zdCBjaGFyKiBm
aWxlLCBpbnQgbGluZSkgeworICBjb25zdCBzdGQ6OnN0cmluZyBmaWxlX25hbWUoZmlsZSA9PSBO
VUxMID8ga1Vua25vd25GaWxlIDogZmlsZSk7CisKKyAgaWYgKGxpbmUgPCAwKQorICAgIHJldHVy
biBmaWxlX25hbWU7CisgIGVsc2UKKyAgICByZXR1cm4gZmlsZV9uYW1lICsgIjoiICsgU3RyZWFt
YWJsZVRvU3RyaW5nKGxpbmUpOworfQogCiBHVGVzdExvZzo6R1Rlc3RMb2coR1Rlc3RMb2dTZXZl
cml0eSBzZXZlcml0eSwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpCiAgICAgOiBzZXZlcml0
eV8oc2V2ZXJpdHkpIHsKQEAgLTQ0MywxOSArOTI1LDE2IEBAIEdUZXN0TG9nOjp+R1Rlc3RMb2co
KSB7CiB9CiAvLyBEaXNhYmxlIE1pY3Jvc29mdCBkZXByZWNhdGlvbiB3YXJuaW5ncyBmb3IgUE9T
SVggZnVuY3Rpb25zIGNhbGxlZCBmcm9tCiAvLyB0aGlzIGNsYXNzIChjcmVhdCwgZHVwLCBkdXAy
LCBhbmQgY2xvc2UpCi0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3By
YWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ5OTYpCi0jZW5kaWYgIC8vIF9NU0NfVkVSCitHVEVTVF9E
SVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0OTk2KQogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9S
RURJUkVDVElPTl8KKyNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCiAKIC8vIE9iamVj
dCB0aGF0IGNhcHR1cmVzIGFuIG91dHB1dCBzdHJlYW0gKHN0ZG91dC9zdGRlcnIpLgogY2xhc3Mg
Q2FwdHVyZWRTdHJlYW0gewogIHB1YmxpYzoKICAgLy8gVGhlIGN0b3IgcmVkaXJlY3RzIHRoZSBz
dHJlYW0gdG8gYSB0ZW1wb3JhcnkgZmlsZS4KLSAgQ2FwdHVyZWRTdHJlYW0oaW50IGZkKSA6IGZk
XyhmZCksIHVuY2FwdHVyZWRfZmRfKGR1cChmZCkpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisg
IGV4cGxpY2l0IENhcHR1cmVkU3RyZWFtKGludCBmZCkgOiBmZF8oZmQpLCB1bmNhcHR1cmVkX2Zk
XyhkdXAoZmQpKSB7CisjIGlmIEdURVNUX09TX1dJTkRPV1MKICAgICBjaGFyIHRlbXBfZGlyX3Bh
dGhbTUFYX1BBVEggKyAxXSA9IHsgJ1wwJyB9OyAgLy8gTk9MSU5UCiAgICAgY2hhciB0ZW1wX2Zp
bGVfcGF0aFtNQVhfUEFUSCArIDFdID0geyAnXDAnIH07ICAvLyBOT0xJTlQKIApAQCAtNDcwLDE0
ICs5NDksMzMgQEAgY2xhc3MgQ2FwdHVyZWRTdHJlYW0gewogICAgIEdURVNUX0NIRUNLXyhjYXB0
dXJlZF9mZCAhPSAtMSkgPDwgIlVuYWJsZSB0byBvcGVuIHRlbXBvcmFyeSBmaWxlICIKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHRlbXBfZmlsZV9wYXRoOwogICAgIGZp
bGVuYW1lXyA9IHRlbXBfZmlsZV9wYXRoOwotI2Vsc2UKLSAgICAvLyBUaGVyZSdzIG5vIGd1YXJh
bnRlZSB0aGF0IGEgdGVzdCBoYXMgd3JpdGUgYWNjZXNzIHRvIHRoZQotICAgIC8vIGN1cnJlbnQg
ZGlyZWN0b3J5LCBzbyB3ZSBjcmVhdGUgdGhlIHRlbXBvcmFyeSBmaWxlIGluIHRoZSAvdG1wCi0g
ICAgLy8gZGlyZWN0b3J5IGluc3RlYWQuCisjIGVsc2UKKyAgICAvLyBUaGVyZSdzIG5vIGd1YXJh
bnRlZSB0aGF0IGEgdGVzdCBoYXMgd3JpdGUgYWNjZXNzIHRvIHRoZSBjdXJyZW50CisgICAgLy8g
ZGlyZWN0b3J5LCBzbyB3ZSBjcmVhdGUgdGhlIHRlbXBvcmFyeSBmaWxlIGluIHRoZSAvdG1wIGRp
cmVjdG9yeQorICAgIC8vIGluc3RlYWQuIFdlIHVzZSAvdG1wIG9uIG1vc3Qgc3lzdGVtcywgYW5k
IC9zZGNhcmQgb24gQW5kcm9pZC4KKyAgICAvLyBUaGF0J3MgYmVjYXVzZSBBbmRyb2lkIGRvZXNu
J3QgaGF2ZSAvdG1wLgorIyAgaWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRAorICAgIC8vIE5vdGU6
IEFuZHJvaWQgYXBwbGljYXRpb25zIGFyZSBleHBlY3RlZCB0byBjYWxsIHRoZSBmcmFtZXdvcmsn
cworICAgIC8vIENvbnRleHQuZ2V0RXh0ZXJuYWxTdG9yYWdlRGlyZWN0b3J5KCkgbWV0aG9kIHRo
cm91Z2ggSk5JIHRvIGdldAorICAgIC8vIHRoZSBsb2NhdGlvbiBvZiB0aGUgd29ybGQtd3JpdGFi
bGUgU0QgQ2FyZCBkaXJlY3RvcnkuIEhvd2V2ZXIsCisgICAgLy8gdGhpcyByZXF1aXJlcyBhIENv
bnRleHQgaGFuZGxlLCB3aGljaCBjYW5ub3QgYmUgcmV0cmlldmVkCisgICAgLy8gZ2xvYmFsbHkg
ZnJvbSBuYXRpdmUgY29kZS4gRG9pbmcgc28gYWxzbyBwcmVjbHVkZXMgcnVubmluZyB0aGUKKyAg
ICAvLyBjb2RlIGFzIHBhcnQgb2YgYSByZWd1bGFyIHN0YW5kYWxvbmUgZXhlY3V0YWJsZSwgd2hp
Y2ggZG9lc24ndAorICAgIC8vIHJ1biBpbiBhIERhbHZpayBwcm9jZXNzIChlLmcuIHdoZW4gcnVu
bmluZyBpdCB0aHJvdWdoICdhZGIgc2hlbGwnKS4KKyAgICAvLworICAgIC8vIFRoZSBsb2NhdGlv
biAvc2RjYXJkIGlzIGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSBuYXRpdmUgY29kZQorICAgIC8v
IGFuZCBpcyB0aGUgb25seSBsb2NhdGlvbiAodW5vZmZpY2lhbGx5KSBzdXBwb3J0ZWQgYnkgdGhl
IEFuZHJvaWQKKyAgICAvLyB0ZWFtLiBJdCdzIGdlbmVyYWxseSBhIHN5bWxpbmsgdG8gdGhlIHJl
YWwgU0QgQ2FyZCBtb3VudCBwb2ludAorICAgIC8vIHdoaWNoIGNhbiBiZSAvbW50L3NkY2FyZCwg
L21udC9zZGNhcmQwLCAvc3lzdGVtL21lZGlhL3NkY2FyZCwgb3IKKyAgICAvLyBvdGhlciBPRU0t
Y3VzdG9taXplZCBsb2NhdGlvbnMuIE5ldmVyIHJlbHkgb24gdGhlc2UsIGFuZCBhbHdheXMKKyAg
ICAvLyB1c2UgL3NkY2FyZC4KKyAgICBjaGFyIG5hbWVfdGVtcGxhdGVbXSA9ICIvc2RjYXJkL2d0
ZXN0X2NhcHR1cmVkX3N0cmVhbS5YWFhYWFgiOworIyAgZWxzZQogICAgIGNoYXIgbmFtZV90ZW1w
bGF0ZVtdID0gIi90bXAvY2FwdHVyZWRfc3RyZWFtLlhYWFhYWCI7CisjICBlbmRpZiAgLy8gR1RF
U1RfT1NfTElOVVhfQU5EUk9JRAogICAgIGNvbnN0IGludCBjYXB0dXJlZF9mZCA9IG1rc3RlbXAo
bmFtZV90ZW1wbGF0ZSk7CiAgICAgZmlsZW5hbWVfID0gbmFtZV90ZW1wbGF0ZTsKLSNlbmRpZiAg
Ly8gR1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogICAgIGZm
bHVzaChOVUxMKTsKICAgICBkdXAyKGNhcHR1cmVkX2ZkLCBmZF8pOwogICAgIGNsb3NlKGNhcHR1
cmVkX2ZkKTsKQEAgLTQ4Nyw3ICs5ODUsNyBAQCBjbGFzcyBDYXB0dXJlZFN0cmVhbSB7CiAgICAg
cmVtb3ZlKGZpbGVuYW1lXy5jX3N0cigpKTsKICAgfQogCi0gIFN0cmluZyBHZXRDYXB0dXJlZFN0
cmluZygpIHsKKyAgc3RkOjpzdHJpbmcgR2V0Q2FwdHVyZWRTdHJpbmcoKSB7CiAgICAgaWYgKHVu
Y2FwdHVyZWRfZmRfICE9IC0xKSB7CiAgICAgICAvLyBSZXN0b3JlcyB0aGUgb3JpZ2luYWwgc3Ry
ZWFtLgogICAgICAgZmZsdXNoKE5VTEwpOwpAQCAtNDk3LDE4ICs5OTUsMTIgQEAgY2xhc3MgQ2Fw
dHVyZWRTdHJlYW0gewogICAgIH0KIAogICAgIEZJTEUqIGNvbnN0IGZpbGUgPSBwb3NpeDo6Rk9w
ZW4oZmlsZW5hbWVfLmNfc3RyKCksICJyIik7Ci0gICAgY29uc3QgU3RyaW5nIGNvbnRlbnQgPSBS
ZWFkRW50aXJlRmlsZShmaWxlKTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBjb250ZW50ID0gUmVh
ZEVudGlyZUZpbGUoZmlsZSk7CiAgICAgcG9zaXg6OkZDbG9zZShmaWxlKTsKICAgICByZXR1cm4g
Y29udGVudDsKICAgfQogCiAgcHJpdmF0ZToKLSAgLy8gUmVhZHMgdGhlIGVudGlyZSBjb250ZW50
IG9mIGEgZmlsZSBhcyBhIFN0cmluZy4KLSAgc3RhdGljIFN0cmluZyBSZWFkRW50aXJlRmlsZShG
SUxFKiBmaWxlKTsKLQotICAvLyBSZXR1cm5zIHRoZSBzaXplIChpbiBieXRlcykgb2YgYSBmaWxl
LgotICBzdGF0aWMgc2l6ZV90IEdldEZpbGVTaXplKEZJTEUqIGZpbGUpOwotCiAgIGNvbnN0IGlu
dCBmZF87ICAvLyBBIHN0cmVhbSB0byBjYXB0dXJlLgogICBpbnQgdW5jYXB0dXJlZF9mZF87CiAg
IC8vIE5hbWUgb2YgdGhlIHRlbXBvcmFyeSBmaWxlIGhvbGRpbmcgdGhlIHN0ZGVyciBvdXRwdXQu
CkBAIC01MTcsMzggKzEwMDksNyBAQCBjbGFzcyBDYXB0dXJlZFN0cmVhbSB7CiAgIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQ2FwdHVyZWRTdHJlYW0pOwogfTsKIAotLy8gUmV0dXJu
cyB0aGUgc2l6ZSAoaW4gYnl0ZXMpIG9mIGEgZmlsZS4KLXNpemVfdCBDYXB0dXJlZFN0cmVhbTo6
R2V0RmlsZVNpemUoRklMRSogZmlsZSkgewotICBmc2VlayhmaWxlLCAwLCBTRUVLX0VORCk7Ci0g
IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGZ0ZWxsKGZpbGUpKTsKLX0KLQotLy8gUmVhZHMg
dGhlIGVudGlyZSBjb250ZW50IG9mIGEgZmlsZSBhcyBhIHN0cmluZy4KLVN0cmluZyBDYXB0dXJl
ZFN0cmVhbTo6UmVhZEVudGlyZUZpbGUoRklMRSogZmlsZSkgewotICBjb25zdCBzaXplX3QgZmls
ZV9zaXplID0gR2V0RmlsZVNpemUoZmlsZSk7Ci0gIGNoYXIqIGNvbnN0IGJ1ZmZlciA9IG5ldyBj
aGFyW2ZpbGVfc2l6ZV07Ci0KLSAgc2l6ZV90IGJ5dGVzX2xhc3RfcmVhZCA9IDA7ICAvLyAjIG9m
IGJ5dGVzIHJlYWQgaW4gdGhlIGxhc3QgZnJlYWQoKQotICBzaXplX3QgYnl0ZXNfcmVhZCA9IDA7
ICAgICAgIC8vICMgb2YgYnl0ZXMgcmVhZCBzbyBmYXIKLQotICBmc2VlayhmaWxlLCAwLCBTRUVL
X1NFVCk7Ci0KLSAgLy8gS2VlcHMgcmVhZGluZyB0aGUgZmlsZSB1bnRpbCB3ZSBjYW5ub3QgcmVh
ZCBmdXJ0aGVyIG9yIHRoZQotICAvLyBwcmUtZGV0ZXJtaW5lZCBmaWxlIHNpemUgaXMgcmVhY2hl
ZC4KLSAgZG8gewotICAgIGJ5dGVzX2xhc3RfcmVhZCA9IGZyZWFkKGJ1ZmZlcitieXRlc19yZWFk
LCAxLCBmaWxlX3NpemUtYnl0ZXNfcmVhZCwgZmlsZSk7Ci0gICAgYnl0ZXNfcmVhZCArPSBieXRl
c19sYXN0X3JlYWQ7Ci0gIH0gd2hpbGUgKGJ5dGVzX2xhc3RfcmVhZCA+IDAgJiYgYnl0ZXNfcmVh
ZCA8IGZpbGVfc2l6ZSk7Ci0KLSAgY29uc3QgU3RyaW5nIGNvbnRlbnQoYnVmZmVyLCBieXRlc19y
ZWFkKTsKLSAgZGVsZXRlW10gYnVmZmVyOwotCi0gIHJldHVybiBjb250ZW50OwotfQotCi0jaWZk
ZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYgIC8vIF9NU0NfVkVSCitH
VEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKIAogc3RhdGljIENhcHR1cmVkU3RyZWFt
KiBnX2NhcHR1cmVkX3N0ZGVyciA9IE5VTEw7CiBzdGF0aWMgQ2FwdHVyZWRTdHJlYW0qIGdfY2Fw
dHVyZWRfc3Rkb3V0ID0gTlVMTDsKQEAgLTU2Myw4ICsxMDI0LDggQEAgdm9pZCBDYXB0dXJlU3Ry
ZWFtKGludCBmZCwgY29uc3QgY2hhciogc3RyZWFtX25hbWUsIENhcHR1cmVkU3RyZWFtKiogc3Ry
ZWFtKSB7CiB9CiAKIC8vIFN0b3BzIGNhcHR1cmluZyB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgcmV0
dXJucyB0aGUgY2FwdHVyZWQgc3RyaW5nLgotU3RyaW5nIEdldENhcHR1cmVkU3RyZWFtKENhcHR1
cmVkU3RyZWFtKiogY2FwdHVyZWRfc3RyZWFtKSB7Ci0gIGNvbnN0IFN0cmluZyBjb250ZW50ID0g
KCpjYXB0dXJlZF9zdHJlYW0pLT5HZXRDYXB0dXJlZFN0cmluZygpOworc3RkOjpzdHJpbmcgR2V0
Q2FwdHVyZWRTdHJlYW0oQ2FwdHVyZWRTdHJlYW0qKiBjYXB0dXJlZF9zdHJlYW0pIHsKKyAgY29u
c3Qgc3RkOjpzdHJpbmcgY29udGVudCA9ICgqY2FwdHVyZWRfc3RyZWFtKS0+R2V0Q2FwdHVyZWRT
dHJpbmcoKTsKIAogICBkZWxldGUgKmNhcHR1cmVkX3N0cmVhbTsKICAgKmNhcHR1cmVkX3N0cmVh
bSA9IE5VTEw7CkBAIC01ODMsMjEgKzEwNDQsNzkgQEAgdm9pZCBDYXB0dXJlU3RkZXJyKCkgewog
fQogCiAvLyBTdG9wcyBjYXB0dXJpbmcgc3Rkb3V0IGFuZCByZXR1cm5zIHRoZSBjYXB0dXJlZCBz
dHJpbmcuCi1TdHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKSB7IHJldHVybiBHZXRDYXB0dXJlZFN0
cmVhbSgmZ19jYXB0dXJlZF9zdGRvdXQpOyB9CitzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0ZG91
dCgpIHsKKyAgcmV0dXJuIEdldENhcHR1cmVkU3RyZWFtKCZnX2NhcHR1cmVkX3N0ZG91dCk7Cit9
CiAKIC8vIFN0b3BzIGNhcHR1cmluZyBzdGRlcnIgYW5kIHJldHVybnMgdGhlIGNhcHR1cmVkIHN0
cmluZy4KLVN0cmluZyBHZXRDYXB0dXJlZFN0ZGVycigpIHsgcmV0dXJuIEdldENhcHR1cmVkU3Ry
ZWFtKCZnX2NhcHR1cmVkX3N0ZGVycik7IH0KK3N0ZDo6c3RyaW5nIEdldENhcHR1cmVkU3RkZXJy
KCkgeworICByZXR1cm4gR2V0Q2FwdHVyZWRTdHJlYW0oJmdfY2FwdHVyZWRfc3RkZXJyKTsKK30K
IAotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXworI2VuZGlmICAvLyBH
VEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCisKK3N0ZDo6c3RyaW5nIFRlbXBEaXIoKSB7Cisj
aWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyAgcmV0dXJuICJcXHRlbXBcXCI7CisjZWxpZiBH
VEVTVF9PU19XSU5ET1dTCisgIGNvbnN0IGNoYXIqIHRlbXBfZGlyID0gcG9zaXg6OkdldEVudigi
VEVNUCIpOworICBpZiAodGVtcF9kaXIgPT0gTlVMTCB8fCB0ZW1wX2RpclswXSA9PSAnXDAnKQor
ICAgIHJldHVybiAiXFx0ZW1wXFwiOworICBlbHNlIGlmICh0ZW1wX2RpcltzdHJsZW4odGVtcF9k
aXIpIC0gMV0gPT0gJ1xcJykKKyAgICByZXR1cm4gdGVtcF9kaXI7CisgIGVsc2UKKyAgICByZXR1
cm4gc3RkOjpzdHJpbmcodGVtcF9kaXIpICsgIlxcIjsKKyNlbGlmIEdURVNUX09TX0xJTlVYX0FO
RFJPSUQKKyAgcmV0dXJuICIvc2RjYXJkLyI7CisjZWxzZQorICByZXR1cm4gIi90bXAvIjsKKyNl
bmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKK30KKworc2l6ZV90IEdldEZpbGVTaXpl
KEZJTEUqIGZpbGUpIHsKKyAgZnNlZWsoZmlsZSwgMCwgU0VFS19FTkQpOworICByZXR1cm4gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihmdGVsbChmaWxlKSk7Cit9CisKK3N0ZDo6c3RyaW5nIFJlYWRFbnRp
cmVGaWxlKEZJTEUqIGZpbGUpIHsKKyAgY29uc3Qgc2l6ZV90IGZpbGVfc2l6ZSA9IEdldEZpbGVT
aXplKGZpbGUpOworICBjaGFyKiBjb25zdCBidWZmZXIgPSBuZXcgY2hhcltmaWxlX3NpemVdOwor
CisgIHNpemVfdCBieXRlc19sYXN0X3JlYWQgPSAwOyAgLy8gIyBvZiBieXRlcyByZWFkIGluIHRo
ZSBsYXN0IGZyZWFkKCkKKyAgc2l6ZV90IGJ5dGVzX3JlYWQgPSAwOyAgICAgICAvLyAjIG9mIGJ5
dGVzIHJlYWQgc28gZmFyCisKKyAgZnNlZWsoZmlsZSwgMCwgU0VFS19TRVQpOworCisgIC8vIEtl
ZXBzIHJlYWRpbmcgdGhlIGZpbGUgdW50aWwgd2UgY2Fubm90IHJlYWQgZnVydGhlciBvciB0aGUK
KyAgLy8gcHJlLWRldGVybWluZWQgZmlsZSBzaXplIGlzIHJlYWNoZWQuCisgIGRvIHsKKyAgICBi
eXRlc19sYXN0X3JlYWQgPSBmcmVhZChidWZmZXIrYnl0ZXNfcmVhZCwgMSwgZmlsZV9zaXplLWJ5
dGVzX3JlYWQsIGZpbGUpOworICAgIGJ5dGVzX3JlYWQgKz0gYnl0ZXNfbGFzdF9yZWFkOworICB9
IHdoaWxlIChieXRlc19sYXN0X3JlYWQgPiAwICYmIGJ5dGVzX3JlYWQgPCBmaWxlX3NpemUpOwor
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvbnRlbnQoYnVmZmVyLCBieXRlc19yZWFkKTsKKyAgZGVs
ZXRlW10gYnVmZmVyOworCisgIHJldHVybiBjb250ZW50OworfQogCiAjaWYgR1RFU1RfSEFTX0RF
QVRIX1RFU1QKIAotLy8gQSBjb3B5IG9mIGFsbCBjb21tYW5kIGxpbmUgYXJndW1lbnRzLiAgU2V0
IGJ5IEluaXRHb29nbGVUZXN0KCkuCi06OnN0ZDo6dmVjdG9yPFN0cmluZz4gZ19hcmd2czsKK3N0
YXRpYyBjb25zdCA6OnN0ZDo6dmVjdG9yPHRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmc+KiBnX2lu
amVjdGVkX3Rlc3RfYXJndnMgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5VTEw7ICAvLyBPd25lZC4KIAotLy8gUmV0dXJucyB0aGUgY29tbWFuZCBsaW5lIGFzIGEg
dmVjdG9yIG9mIHN0cmluZ3MuCi1jb25zdCA6OnN0ZDo6dmVjdG9yPFN0cmluZz4mIEdldEFyZ3Zz
KCkgeyByZXR1cm4gZ19hcmd2czsgfQordm9pZCBTZXRJbmplY3RhYmxlQXJndnMoY29uc3QgOjpz
dGQ6OnZlY3Rvcjx0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nPiogYXJndnMpIHsKKyAgaWYgKGdf
aW5qZWN0ZWRfdGVzdF9hcmd2cyAhPSBhcmd2cykKKyAgICBkZWxldGUgZ19pbmplY3RlZF90ZXN0
X2FyZ3ZzOworICBnX2luamVjdGVkX3Rlc3RfYXJndnMgPSBhcmd2czsKK30KIAorY29uc3QgOjpz
dGQ6OnZlY3Rvcjx0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nPiYgR2V0SW5qZWN0YWJsZUFyZ3Zz
KCkgeworICBpZiAoZ19pbmplY3RlZF90ZXN0X2FyZ3ZzICE9IE5VTEwpIHsKKyAgICByZXR1cm4g
KmdfaW5qZWN0ZWRfdGVzdF9hcmd2czsKKyAgfQorICByZXR1cm4gR2V0QXJndnMoKTsKK30KICNl
bmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKIAogI2lmIEdURVNUX09TX1dJTkRPV1NfTU9C
SUxFCkBAIC02MTIsMTMgKzExMzEsMTMgQEAgdm9pZCBBYm9ydCgpIHsKIC8vIFJldHVybnMgdGhl
IG5hbWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGNvcnJlc3BvbmRpbmcgdG8gdGhlCiAv
LyBnaXZlbiBmbGFnLiAgRm9yIGV4YW1wbGUsIEZsYWdUb0VudlZhcigiZm9vIikgd2lsbCByZXR1
cm4KIC8vICJHVEVTVF9GT08iIGluIHRoZSBvcGVuLXNvdXJjZSB2ZXJzaW9uLgotc3RhdGljIFN0
cmluZyBGbGFnVG9FbnZWYXIoY29uc3QgY2hhciogZmxhZykgewotICBjb25zdCBTdHJpbmcgZnVs
bF9mbGFnID0KK3N0YXRpYyBzdGQ6OnN0cmluZyBGbGFnVG9FbnZWYXIoY29uc3QgY2hhciogZmxh
ZykgeworICBjb25zdCBzdGQ6OnN0cmluZyBmdWxsX2ZsYWcgPQogICAgICAgKE1lc3NhZ2UoKSA8
PCBHVEVTVF9GTEFHX1BSRUZJWF8gPDwgZmxhZykuR2V0U3RyaW5nKCk7CiAKICAgTWVzc2FnZSBl
bnZfdmFyOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBmdWxsX2ZsYWcubGVuZ3RoKCk7IGkr
KykgewotICAgIGVudl92YXIgPDwgc3RhdGljX2Nhc3Q8Y2hhcj4odG91cHBlcihmdWxsX2ZsYWcu
Y19zdHIoKVtpXSkpOworICAgIGVudl92YXIgPDwgVG9VcHBlcihmdWxsX2ZsYWcuY19zdHIoKVtp
XSk7CiAgIH0KIAogICByZXR1cm4gZW52X3Zhci5HZXRTdHJpbmcoKTsKQEAgLTY3MCw3ICsxMTg5
LDEwIEBAIGJvb2wgUGFyc2VJbnQzMihjb25zdCBNZXNzYWdlJiBzcmNfdGV4dCwgY29uc3QgY2hh
ciogc3RyLCBJbnQzMiogdmFsdWUpIHsKIC8vCiAvLyBUaGUgdmFsdWUgaXMgY29uc2lkZXJlZCB0
cnVlIGlmZiBpdCdzIG5vdCAiMCIuCiBib29sIEJvb2xGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciog
ZmxhZywgYm9vbCBkZWZhdWx0X3ZhbHVlKSB7Ci0gIGNvbnN0IFN0cmluZyBlbnZfdmFyID0gRmxh
Z1RvRW52VmFyKGZsYWcpOworI2lmIGRlZmluZWQoR1RFU1RfR0VUX0JPT0xfRlJPTV9FTlZfKQor
ICByZXR1cm4gR1RFU1RfR0VUX0JPT0xfRlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOwor
I2VuZGlmICAvLyBkZWZpbmVkKEdURVNUX0dFVF9CT09MX0ZST01fRU5WXykKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFnKTsKICAgY29uc3QgY2hhciogY29u
c3Qgc3RyaW5nX3ZhbHVlID0gcG9zaXg6OkdldEVudihlbnZfdmFyLmNfc3RyKCkpOwogICByZXR1
cm4gc3RyaW5nX3ZhbHVlID09IE5VTEwgPwogICAgICAgZGVmYXVsdF92YWx1ZSA6IHN0cmNtcChz
dHJpbmdfdmFsdWUsICIwIikgIT0gMDsKQEAgLTY4MCw3ICsxMjAyLDEwIEBAIGJvb2wgQm9vbEZy
b21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBib29sIGRlZmF1bHRfdmFsdWUpIHsKIC8vIHZh
cmlhYmxlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGZsYWc7IGlmIGl0IGlzbid0IHNldCBv
cgogLy8gZG9lc24ndCByZXByZXNlbnQgYSB2YWxpZCAzMi1iaXQgaW50ZWdlciwgcmV0dXJucyBk
ZWZhdWx0X3ZhbHVlLgogSW50MzIgSW50MzJGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywg
SW50MzIgZGVmYXVsdF92YWx1ZSkgewotICBjb25zdCBTdHJpbmcgZW52X3ZhciA9IEZsYWdUb0Vu
dlZhcihmbGFnKTsKKyNpZiBkZWZpbmVkKEdURVNUX0dFVF9JTlQzMl9GUk9NX0VOVl8pCisgIHJl
dHVybiBHVEVTVF9HRVRfSU5UMzJfRlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOworI2Vu
ZGlmICAvLyBkZWZpbmVkKEdURVNUX0dFVF9JTlQzMl9GUk9NX0VOVl8pCisgIGNvbnN0IHN0ZDo6
c3RyaW5nIGVudl92YXIgPSBGbGFnVG9FbnZWYXIoZmxhZyk7CiAgIGNvbnN0IGNoYXIqIGNvbnN0
IHN0cmluZ192YWx1ZSA9IHBvc2l4OjpHZXRFbnYoZW52X3Zhci5jX3N0cigpKTsKICAgaWYgKHN0
cmluZ192YWx1ZSA9PSBOVUxMKSB7CiAgICAgLy8gVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGlz
IG5vdCBzZXQuCkBAIC03MDEsMTAgKzEyMjYsMzMgQEAgSW50MzIgSW50MzJGcm9tR1Rlc3RFbnYo
Y29uc3QgY2hhciogZmxhZywgSW50MzIgZGVmYXVsdF92YWx1ZSkgewogCiAvLyBSZWFkcyBhbmQg
cmV0dXJucyB0aGUgc3RyaW5nIGVudmlyb25tZW50IHZhcmlhYmxlIGNvcnJlc3BvbmRpbmcgdG8K
IC8vIHRoZSBnaXZlbiBmbGFnOyBpZiBpdCdzIG5vdCBzZXQsIHJldHVybnMgZGVmYXVsdF92YWx1
ZS4KLWNvbnN0IGNoYXIqIFN0cmluZ0Zyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBjb25z
dCBjaGFyKiBkZWZhdWx0X3ZhbHVlKSB7Ci0gIGNvbnN0IFN0cmluZyBlbnZfdmFyID0gRmxhZ1Rv
RW52VmFyKGZsYWcpOwotICBjb25zdCBjaGFyKiBjb25zdCB2YWx1ZSA9IHBvc2l4OjpHZXRFbnYo
ZW52X3Zhci5jX3N0cigpKTsKLSAgcmV0dXJuIHZhbHVlID09IE5VTEwgPyBkZWZhdWx0X3ZhbHVl
IDogdmFsdWU7CitzdGQ6OnN0cmluZyBTdHJpbmdGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxh
ZywgY29uc3QgY2hhciogZGVmYXVsdF92YWx1ZSkgeworI2lmIGRlZmluZWQoR1RFU1RfR0VUX1NU
UklOR19GUk9NX0VOVl8pCisgIHJldHVybiBHVEVTVF9HRVRfU1RSSU5HX0ZST01fRU5WXyhmbGFn
LCBkZWZhdWx0X3ZhbHVlKTsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9HRVRfU1RSSU5HX0ZS
T01fRU5WXykKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFn
KTsKKyAgY29uc3QgY2hhciogdmFsdWUgPSBwb3NpeDo6R2V0RW52KGVudl92YXIuY19zdHIoKSk7
CisgIGlmICh2YWx1ZSAhPSBOVUxMKSB7CisgICAgcmV0dXJuIHZhbHVlOworICB9CisKKyAgLy8g
QXMgYSBzcGVjaWFsIGNhc2UgZm9yIHRoZSAnb3V0cHV0JyBmbGFnLCBpZiBHVEVTVF9PVVRQVVQg
aXMgbm90CisgIC8vIHNldCwgd2UgbG9vayBmb3IgWE1MX09VVFBVVF9GSUxFLCB3aGljaCBpcyBz
ZXQgYnkgdGhlIEJhemVsIGJ1aWxkCisgIC8vIHN5c3RlbS4gIFRoZSB2YWx1ZSBvZiBYTUxfT1VU
UFVUX0ZJTEUgaXMgYSBmaWxlbmFtZSB3aXRob3V0IHRoZQorICAvLyAieG1sOiIgcHJlZml4IG9m
IEdURVNUX09VVFBVVC4KKyAgLy8KKyAgLy8gVGhlIG5ldCBwcmlvcml0eSBvcmRlciBhZnRlciBm
bGFnIHByb2Nlc3NpbmcgaXMgdGh1czoKKyAgLy8gICAtLWd0ZXN0X291dHB1dCBjb21tYW5kIGxp
bmUgZmxhZworICAvLyAgIEdURVNUX09VVFBVVCBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAvLyAg
IFhNTF9PVVRQVVRfRklMRSBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAvLyAgICdkZWZhdWx0X3Zh
bHVlJworICBpZiAoc3RyY21wKGZsYWcsICJvdXRwdXQiKSA9PSAwKSB7CisgICAgdmFsdWUgPSBw
b3NpeDo6R2V0RW52KCJYTUxfT1VUUFVUX0ZJTEUiKTsKKyAgICBpZiAodmFsdWUgIT0gTlVMTCkg
eworICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCJ4bWw6IikgKyB2YWx1ZTsKKyAgICB9CisgIH0K
KyAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXByaW50ZXJzLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXByaW50ZXJzLmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmEyZGY0MTJmOGEyMDQ1OTA0M2NkYjcwZTViMDk1YTcyYjdhMTM5NGEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcHJpbnRlcnMuY2MKQEAg
LTAsMCArMSwzNzMgQEAKKy8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgorLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKKy8vIEdv
b2dsZSBUZXN0IC0gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsKKy8vCisvLyBUaGlz
IGZpbGUgaW1wbGVtZW50cyBhIHVuaXZlcnNhbCB2YWx1ZSBwcmludGVyIHRoYXQgY2FuIHByaW50
IGEKKy8vIHZhbHVlIG9mIGFueSB0eXBlIFQ6CisvLworLy8gICB2b2lkIDo6dGVzdGluZzo6aW50
ZXJuYWw6OlVuaXZlcnNhbFByaW50ZXI8VD46OlByaW50KHZhbHVlLCBvc3RyZWFtX3B0cik7Cisv
LworLy8gSXQgdXNlcyB0aGUgPDwgb3BlcmF0b3Igd2hlbiBwb3NzaWJsZSwgYW5kIHByaW50cyB0
aGUgYnl0ZXMgaW4gdGhlCisvLyBvYmplY3Qgb3RoZXJ3aXNlLiAgQSB1c2VyIGNhbiBvdmVycmlk
ZSBpdHMgYmVoYXZpb3IgZm9yIGEgY2xhc3MKKy8vIHR5cGUgRm9vIGJ5IGRlZmluaW5nIGVpdGhl
ciBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiwgY29uc3QgRm9vJikKKy8vIG9yIHZvaWQgUHJp
bnRUbyhjb25zdCBGb28mLCA6OnN0ZDo6b3N0cmVhbSopIGluIHRoZSBuYW1lc3BhY2UgdGhhdAor
Ly8gZGVmaW5lcyBGb28uCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1wcmludGVycy5oIgorI2lu
Y2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxjd2NoYXI+Cisj
aW5jbHVkZSA8b3N0cmVhbT4gIC8vIE5PTElOVAorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRl
ICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKwor
bmFtZXNwYWNlIHsKKwordXNpbmcgOjpzdGQ6Om9zdHJlYW07CisKKy8vIFByaW50cyBhIHNlZ21l
bnQgb2YgYnl0ZXMgaW4gdGhlIGdpdmVuIG9iamVjdC4KK0dURVNUX0FUVFJJQlVURV9OT19TQU5J
VElaRV9NRU1PUllfCitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTU18KK0dURVNU
X0FUVFJJQlVURV9OT19TQU5JVElaRV9USFJFQURfCit2b2lkIFByaW50Qnl0ZVNlZ21lbnRJbk9i
amVjdFRvKGNvbnN0IHVuc2lnbmVkIGNoYXIqIG9ial9ieXRlcywgc2l6ZV90IHN0YXJ0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQsIG9zdHJlYW0qIG9zKSB7
CisgIGNoYXIgdGV4dFs1XSA9ICIiOworICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBjb3VudDsg
aSsrKSB7CisgICAgY29uc3Qgc2l6ZV90IGogPSBzdGFydCArIGk7CisgICAgaWYgKGkgIT0gMCkg
eworICAgICAgLy8gT3JnYW5pemVzIHRoZSBieXRlcyBpbnRvIGdyb3VwcyBvZiAyIGZvciBlYXN5
IHBhcnNpbmcgYnkKKyAgICAgIC8vIGh1bWFuLgorICAgICAgaWYgKChqICUgMikgPT0gMCkKKyAg
ICAgICAgKm9zIDw8ICcgJzsKKyAgICAgIGVsc2UKKyAgICAgICAgKm9zIDw8ICctJzsKKyAgICB9
CisgICAgR1RFU1RfU05QUklOVEZfKHRleHQsIHNpemVvZih0ZXh0KSwgIiUwMlgiLCBvYmpfYnl0
ZXNbal0pOworICAgICpvcyA8PCB0ZXh0OworICB9Cit9CisKKy8vIFByaW50cyB0aGUgYnl0ZXMg
aW4gdGhlIGdpdmVuIHZhbHVlIHRvIHRoZSBnaXZlbiBvc3RyZWFtLgordm9pZCBQcmludEJ5dGVz
SW5PYmplY3RUb0ltcGwoY29uc3QgdW5zaWduZWQgY2hhciogb2JqX2J5dGVzLCBzaXplX3QgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvc3RyZWFtKiBvcykgeworICAvLyBU
ZWxscyB0aGUgdXNlciBob3cgYmlnIHRoZSBvYmplY3QgaXMuCisgICpvcyA8PCBjb3VudCA8PCAi
LWJ5dGUgb2JqZWN0IDwiOworCisgIGNvbnN0IHNpemVfdCBrVGhyZXNob2xkID0gMTMyOworICBj
b25zdCBzaXplX3Qga0NodW5rU2l6ZSA9IDY0OworICAvLyBJZiB0aGUgb2JqZWN0IHNpemUgaXMg
YmlnZ2VyIHRoYW4ga1RocmVzaG9sZCwgd2UnbGwgaGF2ZSB0byBvbWl0CisgIC8vIHNvbWUgZGV0
YWlscyBieSBwcmludGluZyBvbmx5IHRoZSBmaXJzdCBhbmQgdGhlIGxhc3Qga0NodW5rU2l6ZQor
ICAvLyBieXRlcy4KKyAgLy8gVE9ETyh3YW4pOiBsZXQgdGhlIHVzZXIgY29udHJvbCB0aGUgdGhy
ZXNob2xkIHVzaW5nIGEgZmxhZy4KKyAgaWYgKGNvdW50IDwga1RocmVzaG9sZCkgeworICAgIFBy
aW50Qnl0ZVNlZ21lbnRJbk9iamVjdFRvKG9ial9ieXRlcywgMCwgY291bnQsIG9zKTsKKyAgfSBl
bHNlIHsKKyAgICBQcmludEJ5dGVTZWdtZW50SW5PYmplY3RUbyhvYmpfYnl0ZXMsIDAsIGtDaHVu
a1NpemUsIG9zKTsKKyAgICAqb3MgPDwgIiAuLi4gIjsKKyAgICAvLyBSb3VuZHMgdXAgdG8gMi1i
eXRlIGJvdW5kYXJ5LgorICAgIGNvbnN0IHNpemVfdCByZXN1bWVfcG9zID0gKGNvdW50IC0ga0No
dW5rU2l6ZSArIDEpLzIqMjsKKyAgICBQcmludEJ5dGVTZWdtZW50SW5PYmplY3RUbyhvYmpfYnl0
ZXMsIHJlc3VtZV9wb3MsIGNvdW50IC0gcmVzdW1lX3Bvcywgb3MpOworICB9CisgICpvcyA8PCAi
PiI7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCituYW1lc3BhY2UgaW50ZXJuYWwyIHsKKworLy8g
RGVsZWdhdGVzIHRvIFByaW50Qnl0ZXNJbk9iamVjdFRvSW1wbCgpIHRvIHByaW50IHRoZSBieXRl
cyBpbiB0aGUKKy8vIGdpdmVuIG9iamVjdC4gIFRoZSBkZWxlZ2F0aW9uIHNpbXBsaWZpZXMgdGhl
IGltcGxlbWVudGF0aW9uLCB3aGljaAorLy8gdXNlcyB0aGUgPDwgb3BlcmF0b3IgYW5kIHRodXMg
aXMgZWFzaWVyIGRvbmUgb3V0c2lkZSBvZiB0aGUKKy8vIDo6dGVzdGluZzo6aW50ZXJuYWwgbmFt
ZXNwYWNlLCB3aGljaCBjb250YWlucyBhIDw8IG9wZXJhdG9yIHRoYXQKKy8vIHNvbWV0aW1lcyBj
b25mbGljdHMgd2l0aCB0aGUgb25lIGluIFNUTC4KK3ZvaWQgUHJpbnRCeXRlc0luT2JqZWN0VG8o
Y29uc3QgdW5zaWduZWQgY2hhciogb2JqX2J5dGVzLCBzaXplX3QgY291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9zdHJlYW0qIG9zKSB7CisgIFByaW50Qnl0ZXNJbk9iamVjdFRvSW1w
bChvYmpfYnl0ZXMsIGNvdW50LCBvcyk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbDIK
KworbmFtZXNwYWNlIGludGVybmFsIHsKKworLy8gRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBh
IGNoYXIgKG9yIHdjaGFyX3QpLCB3ZSBwcmludCBpdCBpbiBvbmUKKy8vIG9mIHRocmVlIGZvcm1h
dHM6CisvLyAgIC0gYXMgaXMgaWYgaXQncyBhIHByaW50YWJsZSBBU0NJSSAoZS5nLiAnYScsICcy
JywgJyAnKSwKKy8vICAgLSBhcyBhIGhleGlkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZSAoZS5nLiAn
XHg3RicpLCBvcgorLy8gICAtIGFzIGEgc3BlY2lhbCBlc2NhcGUgc2VxdWVuY2UgKGUuZy4gJ1xy
JywgJ1xuJykuCitlbnVtIENoYXJGb3JtYXQgeworICBrQXNJcywKKyAga0hleEVzY2FwZSwKKyAg
a1NwZWNpYWxFc2NhcGUKK307CisKKy8vIFJldHVybnMgdHJ1ZSBpZiBjIGlzIGEgcHJpbnRhYmxl
IEFTQ0lJIGNoYXJhY3Rlci4gIFdlIHRlc3QgdGhlCisvLyB2YWx1ZSBvZiBjIGRpcmVjdGx5IGlu
c3RlYWQgb2YgY2FsbGluZyBpc3ByaW50KCksIHdoaWNoIGlzIGJ1Z2d5IG9uCisvLyBXaW5kb3dz
IE1vYmlsZS4KK2lubGluZSBib29sIElzUHJpbnRhYmxlQXNjaWkod2NoYXJfdCBjKSB7CisgIHJl
dHVybiAweDIwIDw9IGMgJiYgYyA8PSAweDdFOworfQorCisvLyBQcmludHMgYSB3aWRlIG9yIG5h
cnJvdyBjaGFyIGMgYXMgYSBjaGFyYWN0ZXIgbGl0ZXJhbCB3aXRob3V0IHRoZQorLy8gcXVvdGVz
LCBlc2NhcGluZyBpdCB3aGVuIG5lY2Vzc2FyeTsgcmV0dXJucyBob3cgYyB3YXMgZm9ybWF0dGVk
LgorLy8gVGhlIHRlbXBsYXRlIGFyZ3VtZW50IFVuc2lnbmVkQ2hhciBpcyB0aGUgdW5zaWduZWQg
dmVyc2lvbiBvZiBDaGFyLAorLy8gd2hpY2ggaXMgdGhlIHR5cGUgb2YgYy4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBVbnNpZ25lZENoYXIsIHR5cGVuYW1lIENoYXI+CitzdGF0aWMgQ2hhckZvcm1hdCBQ
cmludEFzQ2hhckxpdGVyYWxUbyhDaGFyIGMsIG9zdHJlYW0qIG9zKSB7CisgIHN3aXRjaCAoc3Rh
dGljX2Nhc3Q8d2NoYXJfdD4oYykpIHsKKyAgICBjYXNlIEwnXDAnOgorICAgICAgKm9zIDw8ICJc
XDAiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1wnJzoKKyAgICAgICpvcyA8PCAiXFwnIjsK
KyAgICAgIGJyZWFrOworICAgIGNhc2UgTCdcXCc6CisgICAgICAqb3MgPDwgIlxcXFwiOworICAg
ICAgYnJlYWs7CisgICAgY2FzZSBMJ1xhJzoKKyAgICAgICpvcyA8PCAiXFxhIjsKKyAgICAgIGJy
ZWFrOworICAgIGNhc2UgTCdcYic6CisgICAgICAqb3MgPDwgIlxcYiI7CisgICAgICBicmVhazsK
KyAgICBjYXNlIEwnXGYnOgorICAgICAgKm9zIDw8ICJcXGYiOworICAgICAgYnJlYWs7CisgICAg
Y2FzZSBMJ1xuJzoKKyAgICAgICpvcyA8PCAiXFxuIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2Ug
TCdccic6CisgICAgICAqb3MgPDwgIlxcciI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwnXHQn
OgorICAgICAgKm9zIDw8ICJcXHQiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1x2JzoKKyAg
ICAgICpvcyA8PCAiXFx2IjsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBpZiAo
SXNQcmludGFibGVBc2NpaShjKSkgeworICAgICAgICAqb3MgPDwgc3RhdGljX2Nhc3Q8Y2hhcj4o
Yyk7CisgICAgICAgIHJldHVybiBrQXNJczsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgICpvcyA8
PCAiXFx4IiArIFN0cmluZzo6Rm9ybWF0SGV4SW50KHN0YXRpY19jYXN0PFVuc2lnbmVkQ2hhcj4o
YykpOworICAgICAgICByZXR1cm4ga0hleEVzY2FwZTsKKyAgICAgIH0KKyAgfQorICByZXR1cm4g
a1NwZWNpYWxFc2NhcGU7Cit9CisKKy8vIFByaW50cyBhIHdjaGFyX3QgYyBhcyBpZiBpdCdzIHBh
cnQgb2YgYSBzdHJpbmcgbGl0ZXJhbCwgZXNjYXBpbmcgaXQgd2hlbgorLy8gbmVjZXNzYXJ5OyBy
ZXR1cm5zIGhvdyBjIHdhcyBmb3JtYXR0ZWQuCitzdGF0aWMgQ2hhckZvcm1hdCBQcmludEFzU3Ry
aW5nTGl0ZXJhbFRvKHdjaGFyX3QgYywgb3N0cmVhbSogb3MpIHsKKyAgc3dpdGNoIChjKSB7Cisg
ICAgY2FzZSBMJ1wnJzoKKyAgICAgICpvcyA8PCAiJyI7CisgICAgICByZXR1cm4ga0FzSXM7Cisg
ICAgY2FzZSBMJyInOgorICAgICAgKm9zIDw8ICJcXFwiIjsKKyAgICAgIHJldHVybiBrU3BlY2lh
bEVzY2FwZTsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIFByaW50QXNDaGFyTGl0ZXJhbFRv
PHdjaGFyX3Q+KGMsIG9zKTsKKyAgfQorfQorCisvLyBQcmludHMgYSBjaGFyIGMgYXMgaWYgaXQn
cyBwYXJ0IG9mIGEgc3RyaW5nIGxpdGVyYWwsIGVzY2FwaW5nIGl0IHdoZW4KKy8vIG5lY2Vzc2Fy
eTsgcmV0dXJucyBob3cgYyB3YXMgZm9ybWF0dGVkLgorc3RhdGljIENoYXJGb3JtYXQgUHJpbnRB
c1N0cmluZ0xpdGVyYWxUbyhjaGFyIGMsIG9zdHJlYW0qIG9zKSB7CisgIHJldHVybiBQcmludEFz
U3RyaW5nTGl0ZXJhbFRvKAorICAgICAgc3RhdGljX2Nhc3Q8d2NoYXJfdD4oc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oYykpLCBvcyk7Cit9CisKKy8vIFByaW50cyBhIHdpZGUgb3IgbmFycm93
IGNoYXJhY3RlciBjIGFuZCBpdHMgY29kZS4gICdcMCcgaXMgcHJpbnRlZAorLy8gYXMgIidcXDAn
Iiwgb3RoZXIgdW5wcmludGFibGUgY2hhcmFjdGVycyBhcmUgYWxzbyBwcm9wZXJseSBlc2NhcGVk
CisvLyB1c2luZyB0aGUgc3RhbmRhcmQgQysrIGVzY2FwZSBzZXF1ZW5jZS4gIFRoZSB0ZW1wbGF0
ZSBhcmd1bWVudAorLy8gVW5zaWduZWRDaGFyIGlzIHRoZSB1bnNpZ25lZCB2ZXJzaW9uIG9mIENo
YXIsIHdoaWNoIGlzIHRoZSB0eXBlIG9mIGMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVW5zaWduZWRD
aGFyLCB0eXBlbmFtZSBDaGFyPgordm9pZCBQcmludENoYXJBbmRDb2RlVG8oQ2hhciBjLCBvc3Ry
ZWFtKiBvcykgeworICAvLyBGaXJzdCwgcHJpbnQgYyBhcyBhIGxpdGVyYWwgaW4gdGhlIG1vc3Qg
cmVhZGFibGUgZm9ybSB3ZSBjYW4gZmluZC4KKyAgKm9zIDw8ICgoc2l6ZW9mKGMpID4gMSkgPyAi
TCciIDogIiciKTsKKyAgY29uc3QgQ2hhckZvcm1hdCBmb3JtYXQgPSBQcmludEFzQ2hhckxpdGVy
YWxUbzxVbnNpZ25lZENoYXI+KGMsIG9zKTsKKyAgKm9zIDw8ICInIjsKKworICAvLyBUbyBhaWQg
dXNlciBkZWJ1Z2dpbmcsIHdlIGFsc28gcHJpbnQgYydzIGNvZGUgaW4gZGVjaW1hbCwgdW5sZXNz
CisgIC8vIGl0J3MgMCAoaW4gd2hpY2ggY2FzZSBjIHdhcyBwcmludGVkIGFzICdcXDAnLCBtYWtp
bmcgdGhlIGNvZGUKKyAgLy8gb2J2aW91cykuCisgIGlmIChjID09IDApCisgICAgcmV0dXJuOwor
ICAqb3MgPDwgIiAoIiA8PCBzdGF0aWNfY2FzdDxpbnQ+KGMpOworCisgIC8vIEZvciBtb3JlIGNv
bnZlbmllbmNlLCB3ZSBwcmludCBjJ3MgY29kZSBhZ2FpbiBpbiBoZXhpZGVjaW1hbCwKKyAgLy8g
dW5sZXNzIGMgd2FzIGFscmVhZHkgcHJpbnRlZCBpbiB0aGUgZm9ybSAnXHgjIycgb3IgdGhlIGNv
ZGUgaXMgaW4KKyAgLy8gWzEsIDldLgorICBpZiAoZm9ybWF0ID09IGtIZXhFc2NhcGUgfHwgKDEg
PD0gYyAmJiBjIDw9IDkpKSB7CisgICAgLy8gRG8gbm90aGluZy4KKyAgfSBlbHNlIHsKKyAgICAq
b3MgPDwgIiwgMHgiIDw8IFN0cmluZzo6Rm9ybWF0SGV4SW50KHN0YXRpY19jYXN0PFVuc2lnbmVk
Q2hhcj4oYykpOworICB9CisgICpvcyA8PCAiKSI7Cit9CisKK3ZvaWQgUHJpbnRUbyh1bnNpZ25l
ZCBjaGFyIGMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludENoYXJBbmRDb2RlVG88dW5z
aWduZWQgY2hhcj4oYywgb3MpOworfQordm9pZCBQcmludFRvKHNpZ25lZCBjaGFyIGMsIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgeworICBQcmludENoYXJBbmRDb2RlVG88dW5zaWduZWQgY2hhcj4oYywg
b3MpOworfQorCisvLyBQcmludHMgYSB3Y2hhcl90IGFzIGEgc3ltYm9sIGlmIGl0IGlzIHByaW50
YWJsZSBvciBhcyBpdHMgaW50ZXJuYWwKKy8vIGNvZGUgb3RoZXJ3aXNlIGFuZCBhbHNvIGFzIGl0
cyBjb2RlLiAgTCdcMCcgaXMgcHJpbnRlZCBhcyAiTCdcXDAnIi4KK3ZvaWQgUHJpbnRUbyh3Y2hh
cl90IHdjLCBvc3RyZWFtKiBvcykgeworICBQcmludENoYXJBbmRDb2RlVG88d2NoYXJfdD4od2Ms
IG9zKTsKK30KKworLy8gUHJpbnRzIHRoZSBnaXZlbiBhcnJheSBvZiBjaGFyYWN0ZXJzIHRvIHRo
ZSBvc3RyZWFtLiAgQ2hhclR5cGUgbXVzdCBiZSBlaXRoZXIKKy8vIGNoYXIgb3Igd2NoYXJfdC4K
Ky8vIFRoZSBhcnJheSBzdGFydHMgYXQgYmVnaW4sIHRoZSBsZW5ndGggaXMgbGVuLCBpdCBtYXkg
aW5jbHVkZSAnXDAnIGNoYXJhY3RlcnMKKy8vIGFuZCBtYXkgbm90IGJlIE5VTC10ZXJtaW5hdGVk
LgordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorR1RFU1RfQVRUUklCVVRFX05PX1NBTklU
SVpFX01FTU9SWV8KK0dURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTXworR1RFU1Rf
QVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KK3N0YXRpYyB2b2lkIFByaW50Q2hhcnNBc1N0
cmluZ1RvKAorICAgIGNvbnN0IENoYXJUeXBlKiBiZWdpbiwgc2l6ZV90IGxlbiwgb3N0cmVhbSog
b3MpIHsKKyAgY29uc3QgY2hhciogY29uc3Qga1F1b3RlQmVnaW4gPSBzaXplb2YoQ2hhclR5cGUp
ID09IDEgPyAiXCIiIDogIkxcIiI7CisgICpvcyA8PCBrUXVvdGVCZWdpbjsKKyAgYm9vbCBpc19w
cmV2aW91c19oZXggPSBmYWxzZTsKKyAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGxl
bjsgKytpbmRleCkgeworICAgIGNvbnN0IENoYXJUeXBlIGN1ciA9IGJlZ2luW2luZGV4XTsKKyAg
ICBpZiAoaXNfcHJldmlvdXNfaGV4ICYmIElzWERpZ2l0KGN1cikpIHsKKyAgICAgIC8vIFByZXZp
b3VzIGNoYXJhY3RlciBpcyBvZiAnXHguLicgZm9ybSBhbmQgdGhpcyBjaGFyYWN0ZXIgY2FuIGJl
CisgICAgICAvLyBpbnRlcnByZXRlZCBhcyBhbm90aGVyIGhleGFkZWNpbWFsIGRpZ2l0IGluIGl0
cyBudW1iZXIuIEJyZWFrIHN0cmluZyB0bworICAgICAgLy8gZGlzYW1iaWd1YXRlLgorICAgICAg
Km9zIDw8ICJcIiAiIDw8IGtRdW90ZUJlZ2luOworICAgIH0KKyAgICBpc19wcmV2aW91c19oZXgg
PSBQcmludEFzU3RyaW5nTGl0ZXJhbFRvKGN1ciwgb3MpID09IGtIZXhFc2NhcGU7CisgIH0KKyAg
Km9zIDw8ICJcIiI7Cit9CisKKy8vIFByaW50cyBhIChjb25zdCkgY2hhci93Y2hhcl90IGFycmF5
IG9mICdsZW4nIGVsZW1lbnRzLCBzdGFydGluZyBhdCBhZGRyZXNzCisvLyAnYmVnaW4nLiAgQ2hh
clR5cGUgbXVzdCBiZSBlaXRoZXIgY2hhciBvciB3Y2hhcl90LgordGVtcGxhdGUgPHR5cGVuYW1l
IENoYXJUeXBlPgorR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8KK0dURVNUX0FU
VFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpF
X1RIUkVBRF8KK3N0YXRpYyB2b2lkIFVuaXZlcnNhbFByaW50Q2hhckFycmF5KAorICAgIGNvbnN0
IENoYXJUeXBlKiBiZWdpbiwgc2l6ZV90IGxlbiwgb3N0cmVhbSogb3MpIHsKKyAgLy8gVGhlIGNv
ZGUKKyAgLy8gICBjb25zdCBjaGFyIGtGb29bXSA9ICJmb28iOworICAvLyBnZW5lcmF0ZXMgYW4g
YXJyYXkgb2YgNCwgbm90IDMsIGVsZW1lbnRzLCB3aXRoIHRoZSBsYXN0IG9uZSBiZWluZyAnXDAn
LgorICAvLworICAvLyBUaGVyZWZvcmUgd2hlbiBwcmludGluZyBhIGNoYXIgYXJyYXksIHdlIGRv
bid0IHByaW50IHRoZSBsYXN0IGVsZW1lbnQgaWYKKyAgLy8gaXQncyAnXDAnLCBzdWNoIHRoYXQg
dGhlIG91dHB1dCBtYXRjaGVzIHRoZSBzdHJpbmcgbGl0ZXJhbCBhcyBpdCdzCisgIC8vIHdyaXR0
ZW4gaW4gdGhlIHNvdXJjZSBjb2RlLgorICBpZiAobGVuID4gMCAmJiBiZWdpbltsZW4gLSAxXSA9
PSAnXDAnKSB7CisgICAgUHJpbnRDaGFyc0FzU3RyaW5nVG8oYmVnaW4sIGxlbiAtIDEsIG9zKTsK
KyAgICByZXR1cm47CisgIH0KKworICAvLyBJZiwgaG93ZXZlciwgdGhlIGxhc3QgZWxlbWVudCBp
biB0aGUgYXJyYXkgaXMgbm90ICdcMCcsIGUuZy4KKyAgLy8gICAgY29uc3QgY2hhciBrRm9vW10g
PSB7ICdmJywgJ28nLCAnbycgfTsKKyAgLy8gd2UgbXVzdCBwcmludCB0aGUgZW50aXJlIGFycmF5
LiAgV2UgYWxzbyBwcmludCBhIG1lc3NhZ2UgdG8gaW5kaWNhdGUKKyAgLy8gdGhhdCB0aGUgYXJy
YXkgaXMgbm90IE5VTC10ZXJtaW5hdGVkLgorICBQcmludENoYXJzQXNTdHJpbmdUbyhiZWdpbiwg
bGVuLCBvcyk7CisgICpvcyA8PCAiIChubyB0ZXJtaW5hdGluZyBOVUwpIjsKK30KKworLy8gUHJp
bnRzIGEgKGNvbnN0KSBjaGFyIGFycmF5IG9mICdsZW4nIGVsZW1lbnRzLCBzdGFydGluZyBhdCBh
ZGRyZXNzICdiZWdpbicuCit2b2lkIFVuaXZlcnNhbFByaW50QXJyYXkoY29uc3QgY2hhciogYmVn
aW4sIHNpemVfdCBsZW4sIG9zdHJlYW0qIG9zKSB7CisgIFVuaXZlcnNhbFByaW50Q2hhckFycmF5
KGJlZ2luLCBsZW4sIG9zKTsKK30KKworLy8gUHJpbnRzIGEgKGNvbnN0KSB3Y2hhcl90IGFycmF5
IG9mICdsZW4nIGVsZW1lbnRzLCBzdGFydGluZyBhdCBhZGRyZXNzCisvLyAnYmVnaW4nLgordm9p
ZCBVbml2ZXJzYWxQcmludEFycmF5KGNvbnN0IHdjaGFyX3QqIGJlZ2luLCBzaXplX3QgbGVuLCBv
c3RyZWFtKiBvcykgeworICBVbml2ZXJzYWxQcmludENoYXJBcnJheShiZWdpbiwgbGVuLCBvcyk7
Cit9CisKKy8vIFByaW50cyB0aGUgZ2l2ZW4gQyBzdHJpbmcgdG8gdGhlIG9zdHJlYW0uCit2b2lk
IFByaW50VG8oY29uc3QgY2hhciogcywgb3N0cmVhbSogb3MpIHsKKyAgaWYgKHMgPT0gTlVMTCkg
eworICAgICpvcyA8PCAiTlVMTCI7CisgIH0gZWxzZSB7CisgICAgKm9zIDw8IEltcGxpY2l0Q2Fz
dF88Y29uc3Qgdm9pZCo+KHMpIDw8ICIgcG9pbnRpbmcgdG8gIjsKKyAgICBQcmludENoYXJzQXNT
dHJpbmdUbyhzLCBzdHJsZW4ocyksIG9zKTsKKyAgfQorfQorCisvLyBNU1ZDIGNvbXBpbGVyIGNh
biBiZSBjb25maWd1cmVkIHRvIGRlZmluZSB3aGFyX3QgYXMgYSB0eXBlZGVmCisvLyBvZiB1bnNp
Z25lZCBzaG9ydC4gRGVmaW5pbmcgYW4gb3ZlcmxvYWQgZm9yIGNvbnN0IHdjaGFyX3QqIGluIHRo
YXQgY2FzZQorLy8gd291bGQgY2F1c2UgcG9pbnRlcnMgdG8gdW5zaWduZWQgc2hvcnRzIGJlIHBy
aW50ZWQgYXMgd2lkZSBzdHJpbmdzLAorLy8gcG9zc2libHkgYWNjZXNzaW5nIG1vcmUgbWVtb3J5
IHRoYW4gaW50ZW5kZWQgYW5kIGNhdXNpbmcgaW52YWxpZAorLy8gbWVtb3J5IGFjY2Vzc2VzLiBN
U1ZDIGRlZmluZXMgX05BVElWRV9XQ0hBUl9UX0RFRklORUQgc3ltYm9sIHdoZW4KKy8vIHdjaGFy
X3QgaXMgaW1wbGVtZW50ZWQgYXMgYSBuYXRpdmUgdHlwZS4KKyNpZiAhZGVmaW5lZChfTVNDX1ZF
UikgfHwgZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkKKy8vIFByaW50cyB0aGUgZ2l2
ZW4gd2lkZSBDIHN0cmluZyB0byB0aGUgb3N0cmVhbS4KK3ZvaWQgUHJpbnRUbyhjb25zdCB3Y2hh
cl90KiBzLCBvc3RyZWFtKiBvcykgeworICBpZiAocyA9PSBOVUxMKSB7CisgICAgKm9zIDw8ICJO
VUxMIjsKKyAgfSBlbHNlIHsKKyAgICAqb3MgPDwgSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4o
cykgPDwgIiBwb2ludGluZyB0byAiOworICAgIFByaW50Q2hhcnNBc1N0cmluZ1RvKHMsIHN0ZDo6
d2NzbGVuKHMpLCBvcyk7CisgIH0KK30KKyNlbmRpZiAgLy8gd2NoYXJfdCBpcyBuYXRpdmUKKwor
Ly8gUHJpbnRzIGEgOjpzdHJpbmcgb2JqZWN0LgorI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5H
Cit2b2lkIFByaW50U3RyaW5nVG8oY29uc3QgOjpzdHJpbmcmIHMsIG9zdHJlYW0qIG9zKSB7Cisg
IFByaW50Q2hhcnNBc1N0cmluZ1RvKHMuZGF0YSgpLCBzLnNpemUoKSwgb3MpOworfQorI2VuZGlm
ICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCit2b2lkIFByaW50U3RyaW5nVG8oY29uc3Qg
OjpzdGQ6OnN0cmluZyYgcywgb3N0cmVhbSogb3MpIHsKKyAgUHJpbnRDaGFyc0FzU3RyaW5nVG8o
cy5kYXRhKCksIHMuc2l6ZSgpLCBvcyk7Cit9CisKKy8vIFByaW50cyBhIDo6d3N0cmluZyBvYmpl
Y3QuCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCit2b2lkIFByaW50V2lkZVN0cmluZ1Rv
KGNvbnN0IDo6d3N0cmluZyYgcywgb3N0cmVhbSogb3MpIHsKKyAgUHJpbnRDaGFyc0FzU3RyaW5n
VG8ocy5kYXRhKCksIHMuc2l6ZSgpLCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9C
QUxfV1NUUklORworCisjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCit2b2lkIFByaW50V2lkZVN0
cmluZ1RvKGNvbnN0IDo6c3RkOjp3c3RyaW5nJiBzLCBvc3RyZWFtKiBvcykgeworICBQcmludENo
YXJzQXNTdHJpbmdUbyhzLmRhdGEoKSwgcy5zaXplKCksIG9zKTsKK30KKyNlbmRpZiAgLy8gR1RF
U1RfSEFTX1NURF9XU1RSSU5HCisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCit9ICAvLyBu
YW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3Jj
L2d0ZXN0LXRlc3QtcGFydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10
ZXN0LXBhcnQuY2MKaW5kZXggNWQxODNhNDQ2ZjI5NGNlOWUxYTg1ODdjOGI5MTIwYTliZWM4ODdk
ZC4uZmIwZTM1NDI1ZTFlNmY3MTc5ZDAyYjkzOTQ1YmRlZTQzMWIyNWU0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXRlc3QtcGFydC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjCkBAIC0zMSwxMyArMzEs
MTMgQEAKIC8vCiAvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRl
c3QpCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC10ZXN0LXBhcnQuaD4KKyNpbmNsdWRlICJndGVz
dC9ndGVzdC10ZXN0LXBhcnQuaCIKIAogLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlv
biB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwogLy8gaW1wbGVtZW50YXRpb24uICBJdCBt
dXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3Ig
dGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJl
dmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlu
bC5oIGluCi0vLyBoaXMgY29kZS4KKy8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29t
cGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGV4aXN0cyB0bworLy8gcHJldmVudCB0aGUgYWNjaWRl
bnRhbCBpbmNsdXNpb24gb2YgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4gdGhlCisvLyB1c2VyJ3Mg
Y29kZS4KICNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKICNpbmNsdWRlICJzcmMvZ3Rl
c3QtaW50ZXJuYWwtaW5sLmgiCiAjdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCkBAIC00OCwx
MCArNDgsMTAgQEAgdXNpbmcgaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbDsKIAogLy8gR2V0cyB0
aGUgc3VtbWFyeSBvZiB0aGUgZmFpbHVyZSBtZXNzYWdlIGJ5IG9taXR0aW5nIHRoZSBzdGFjayB0
cmFjZQogLy8gaW4gaXQuCi1pbnRlcm5hbDo6U3RyaW5nIFRlc3RQYXJ0UmVzdWx0OjpFeHRyYWN0
U3VtbWFyeShjb25zdCBjaGFyKiBtZXNzYWdlKSB7CitzdGQ6OnN0cmluZyBUZXN0UGFydFJlc3Vs
dDo6RXh0cmFjdFN1bW1hcnkoY29uc3QgY2hhciogbWVzc2FnZSkgewogICBjb25zdCBjaGFyKiBj
b25zdCBzdGFja190cmFjZSA9IHN0cnN0cihtZXNzYWdlLCBpbnRlcm5hbDo6a1N0YWNrVHJhY2VN
YXJrZXIpOwotICByZXR1cm4gc3RhY2tfdHJhY2UgPT0gTlVMTCA/IGludGVybmFsOjpTdHJpbmco
bWVzc2FnZSkgOgotICAgICAgaW50ZXJuYWw6OlN0cmluZyhtZXNzYWdlLCBzdGFja190cmFjZSAt
IG1lc3NhZ2UpOworICByZXR1cm4gc3RhY2tfdHJhY2UgPT0gTlVMTCA/IG1lc3NhZ2UgOgorICAg
ICAgc3RkOjpzdHJpbmcobWVzc2FnZSwgc3RhY2tfdHJhY2UpOwogfQogCiAvLyBQcmludHMgYSBU
ZXN0UGFydFJlc3VsdCBvYmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zcmMvZ3Rlc3QtdHlwZWQtdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9n
dGVzdC10eXBlZC10ZXN0LmNjCmluZGV4IDNjYzRiNWRlMmFhY2I3NTk4OTExOWM1Zjk2YzdmNGY4
MGVhZDVjYWUuLmRmMWVlZjQ3NTRlZmViNmJjMDY2MjM5YjFjY2MzYmZlZWI4OTYzMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10eXBlZC10ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10eXBlZC10ZXN0LmNjCkBAIC0y
OSw4ICsyOSw4IEBACiAvLwogLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oIgorI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5h
bCB7CkBAIC00MCwzOCArNDAsNDYgQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIC8vIFNraXBzIHRv
IHRoZSBmaXJzdCBub24tc3BhY2UgY2hhciBpbiBzdHIuIFJldHVybnMgYW4gZW1wdHkgc3RyaW5n
IGlmIHN0cgogLy8gY29udGFpbnMgb25seSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMuCiBzdGF0aWMg
Y29uc3QgY2hhciogU2tpcFNwYWNlcyhjb25zdCBjaGFyKiBzdHIpIHsKLSAgd2hpbGUgKGlzc3Bh
Y2UoKnN0cikpCisgIHdoaWxlIChJc1NwYWNlKCpzdHIpKQogICAgIHN0cisrOwogICByZXR1cm4g
c3RyOwogfQogCitzdGF0aWMgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IFNwbGl0SW50b1Rlc3RO
YW1lcyhjb25zdCBjaGFyKiBzcmMpIHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG5hbWVf
dmVjOworICBzcmMgPSBTa2lwU3BhY2VzKHNyYyk7CisgIGZvciAoOyBzcmMgIT0gTlVMTDsgc3Jj
ID0gU2tpcENvbW1hKHNyYykpIHsKKyAgICBuYW1lX3ZlYy5wdXNoX2JhY2soU3RyaXBUcmFpbGlu
Z1NwYWNlcyhHZXRQcmVmaXhVbnRpbENvbW1hKHNyYykpKTsKKyAgfQorICByZXR1cm4gbmFtZV92
ZWM7Cit9CisKIC8vIFZlcmlmaWVzIHRoYXQgcmVnaXN0ZXJlZF90ZXN0cyBtYXRjaCB0aGUgdGVz
dCBuYW1lcyBpbgotLy8gZGVmaW5lZF90ZXN0X25hbWVzXzsgcmV0dXJucyByZWdpc3RlcmVkX3Rl
c3RzIGlmIHN1Y2Nlc3NmdWwsIG9yCisvLyByZWdpc3RlcmVkX3Rlc3RzXzsgcmV0dXJucyByZWdp
c3RlcmVkX3Rlc3RzIGlmIHN1Y2Nlc3NmdWwsIG9yCiAvLyBhYm9ydHMgdGhlIHByb2dyYW0gb3Ro
ZXJ3aXNlLgogY29uc3QgY2hhciogVHlwZWRUZXN0Q2FzZVBTdGF0ZTo6VmVyaWZ5UmVnaXN0ZXJl
ZFRlc3ROYW1lcygKICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciog
cmVnaXN0ZXJlZF90ZXN0cykgewotICB0eXBlZGVmIDo6c3RkOjpzZXQ8Y29uc3QgY2hhcio+Ojpj
b25zdF9pdGVyYXRvciBEZWZpbmVkVGVzdEl0ZXI7CisgIHR5cGVkZWYgUmVnaXN0ZXJlZFRlc3Rz
TWFwOjpjb25zdF9pdGVyYXRvciBSZWdpc3RlcmVkVGVzdEl0ZXI7CiAgIHJlZ2lzdGVyZWRfID0g
dHJ1ZTsKIAotICAvLyBTa2lwIGluaXRpYWwgd2hpdGVzcGFjZSBpbiByZWdpc3RlcmVkX3Rlc3Rz
IHNpbmNlIHNvbWUKLSAgLy8gcHJlcHJvY2Vzc29ycyBwcmVmaXggc3RyaW5naXppZWQgbGl0ZXJh
bHMgd2l0aCB3aGl0ZXNwYWNlLgotICByZWdpc3RlcmVkX3Rlc3RzID0gU2tpcFNwYWNlcyhyZWdp
c3RlcmVkX3Rlc3RzKTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG5hbWVfdmVjID0gU3Bs
aXRJbnRvVGVzdE5hbWVzKHJlZ2lzdGVyZWRfdGVzdHMpOwogCiAgIE1lc3NhZ2UgZXJyb3JzOwot
ICA6OnN0ZDo6c2V0PFN0cmluZz4gdGVzdHM7Ci0gIGZvciAoY29uc3QgY2hhciogbmFtZXMgPSBy
ZWdpc3RlcmVkX3Rlc3RzOyBuYW1lcyAhPSBOVUxMOwotICAgICAgIG5hbWVzID0gU2tpcENvbW1h
KG5hbWVzKSkgewotICAgIGNvbnN0IFN0cmluZyBuYW1lID0gR2V0UHJlZml4VW50aWxDb21tYShu
YW1lcyk7CisKKyAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IHRlc3RzOworICBmb3IgKHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgbmFtZV9pdCA9IG5hbWVfdmVjLmJlZ2lu
KCk7CisgICAgICAgbmFtZV9pdCAhPSBuYW1lX3ZlYy5lbmQoKTsgKytuYW1lX2l0KSB7CisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUgPSAqbmFtZV9pdDsKICAgICBpZiAodGVzdHMuY291bnQo
bmFtZSkgIT0gMCkgewogICAgICAgZXJyb3JzIDw8ICJUZXN0ICIgPDwgbmFtZSA8PCAiIGlzIGxp
c3RlZCBtb3JlIHRoYW4gb25jZS5cbiI7CiAgICAgICBjb250aW51ZTsKICAgICB9CiAKICAgICBi
b29sIGZvdW5kID0gZmFsc2U7Ci0gICAgZm9yIChEZWZpbmVkVGVzdEl0ZXIgaXQgPSBkZWZpbmVk
X3Rlc3RfbmFtZXNfLmJlZ2luKCk7Ci0gICAgICAgICBpdCAhPSBkZWZpbmVkX3Rlc3RfbmFtZXNf
LmVuZCgpOworICAgIGZvciAoUmVnaXN0ZXJlZFRlc3RJdGVyIGl0ID0gcmVnaXN0ZXJlZF90ZXN0
c18uYmVnaW4oKTsKKyAgICAgICAgIGl0ICE9IHJlZ2lzdGVyZWRfdGVzdHNfLmVuZCgpOwogICAg
ICAgICAgKytpdCkgewotICAgICAgaWYgKG5hbWUgPT0gKml0KSB7CisgICAgICBpZiAobmFtZSA9
PSBpdC0+Zmlyc3QpIHsKICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICBicmVhazsKICAg
ICAgIH0KQEAgLTg1LDE1ICs5MywxNSBAQCBjb25zdCBjaGFyKiBUeXBlZFRlc3RDYXNlUFN0YXRl
OjpWZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVzKAogICAgIH0KICAgfQogCi0gIGZvciAoRGVmaW5l
ZFRlc3RJdGVyIGl0ID0gZGVmaW5lZF90ZXN0X25hbWVzXy5iZWdpbigpOwotICAgICAgIGl0ICE9
IGRlZmluZWRfdGVzdF9uYW1lc18uZW5kKCk7CisgIGZvciAoUmVnaXN0ZXJlZFRlc3RJdGVyIGl0
ID0gcmVnaXN0ZXJlZF90ZXN0c18uYmVnaW4oKTsKKyAgICAgICBpdCAhPSByZWdpc3RlcmVkX3Rl
c3RzXy5lbmQoKTsKICAgICAgICArK2l0KSB7Ci0gICAgaWYgKHRlc3RzLmNvdW50KCppdCkgPT0g
MCkgewotICAgICAgZXJyb3JzIDw8ICJZb3UgZm9yZ290IHRvIGxpc3QgdGVzdCAiIDw8ICppdCA8
PCAiLlxuIjsKKyAgICBpZiAodGVzdHMuY291bnQoaXQtPmZpcnN0KSA9PSAwKSB7CisgICAgICBl
cnJvcnMgPDwgIllvdSBmb3Jnb3QgdG8gbGlzdCB0ZXN0ICIgPDwgaXQtPmZpcnN0IDw8ICIuXG4i
OwogICAgIH0KICAgfQogCi0gIGNvbnN0IFN0cmluZyYgZXJyb3JzX3N0ciA9IGVycm9ycy5HZXRT
dHJpbmcoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIGVycm9yc19zdHIgPSBlcnJvcnMuR2V0U3Ry
aW5nKCk7CiAgIGlmIChlcnJvcnNfc3RyICE9ICIiKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICIl
cyAlcyIsIEZvcm1hdEZpbGVMb2NhdGlvbihmaWxlLCBsaW5lKS5jX3N0cigpLAogICAgICAgICAg
ICAgZXJyb3JzX3N0ci5jX3N0cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NyYy9ndGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC5jYwpp
bmRleCA1Yjg3MWMwYWRiMGExYzRjZmEyMzc1NTQwNTdkNTE2MDg0NjE5NTBlLi5kODgyYWIyZTM2
YTEyOTk1MjgwMTNmZTU4NTQzOGJhZjZmZTc3MmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zcmMvZ3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3Jj
L2d0ZXN0LmNjCkBAIC0zMSwxOSArMzEsMjUgQEAKIC8vCiAvLyBUaGUgR29vZ2xlIEMrKyBUZXN0
aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisj
aW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3Qtc3BpLmgiCiAKICNpbmNsdWRlIDxjdHlwZS5oPgogI2luY2x1ZGUgPG1hdGguaD4KICNp
bmNsdWRlIDxzdGRhcmcuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5o
PgorI2luY2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDx3Y2hhci5oPgogI2luY2x1ZGUgPHdjdHlw
ZS5oPgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPG9zdHJlYW0+CisjaW5jbHVk
ZSA8aW9tYW5pcD4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bGlzdD4KKyNpbmNsdWRl
IDxtYXA+CisjaW5jbHVkZSA8b3N0cmVhbT4gIC8vIE5PTElOVAogI2luY2x1ZGUgPHNzdHJlYW0+
CiAjaW5jbHVkZSA8dmVjdG9yPgogCkBAIC01MSw3MiArNTcsODAgQEAKIAogLy8gVE9ETyhrZW50
b25AZ29vZ2xlLmNvbSk6IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZhaWxhYmlsaXR5IG9mCiAv
LyBnZXR0aW1lb2ZkYXkoKS4KLSNkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQorIyBk
ZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQogCi0jaW5jbHVkZSA8ZmNudGwuaD4KLSNp
bmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxzY2hlZC5oPgorIyBpbmNsdWRlIDxmY250bC5o
PiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPGxpbWl0cy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUg
PHNjaGVkLmg+ICAvLyBOT0xJTlQKIC8vIERlY2xhcmVzIHZzbnByaW50ZigpLiAgVGhpcyBoZWFk
ZXIgaXMgbm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgotI2luY2x1ZGUgPHN0cmluZ3MuaD4KLSNp
bmNsdWRlIDxzeXMvbW1hbi5oPgotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0jaW5jbHVkZSA8dW5p
c3RkLmg+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KKyMgaW5jbHVkZSA8
c3RyaW5ncy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy9tbWFuLmg+ICAvLyBOT0xJTlQK
KyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDx1bmlzdGQuaD4g
IC8vIE5PTElOVAorIyBpbmNsdWRlIDxzdHJpbmc+CiAKICNlbGlmIEdURVNUX09TX1NZTUJJQU4K
LSNkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQotI2luY2x1ZGUgPHN5cy90aW1lLmg+
ICAvLyBOT0xJTlQKKyMgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKKyMgaW5jbHVk
ZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAogCiAjZWxpZiBHVEVTVF9PU19aT1MKLSNkZWZpbmUg
R1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQotI2luY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJ
TlQKKyMgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKKyMgaW5jbHVkZSA8c3lzL3Rp
bWUuaD4gIC8vIE5PTElOVAogCiAvLyBPbiB6L09TIHdlIGFkZGl0aW9uYWxseSBuZWVkIHN0cmlu
Z3MuaCBmb3Igc3RyY2FzZWNtcC4KLSNpbmNsdWRlIDxzdHJpbmdzLmg+ICAvLyBOT0xJTlQKKyMg
aW5jbHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5UCiAKICNlbGlmIEdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFICAvLyBXZSBhcmUgb24gV2luZG93cyBDRS4KIAotI2luY2x1ZGUgPHdpbmRvd3MuaD4g
IC8vIE5PTElOVAorIyBpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBOT0xJTlQKKyMgdW5kZWYgbWlu
CiAKICNlbGlmIEdURVNUX09TX1dJTkRPV1MgIC8vIFdlIGFyZSBvbiBXaW5kb3dzIHByb3Blci4K
IAotI2luY2x1ZGUgPGlvLmg+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDxzeXMvdGltZWIuaD4gIC8v
IE5PTElOVAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8c3lz
L3N0YXQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxpby5oPiAgLy8gTk9MSU5UCisjIGluY2x1
ZGUgPHN5cy90aW1lYi5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy90eXBlcy5oPiAgLy8g
Tk9MSU5UCisjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+ICAvLyBOT0xJTlQKIAotI2lmIEdURVNUX09T
X1dJTkRPV1NfTUlOR1cKKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NSU5HVwogLy8gTWluR1cgaGFz
IGdldHRpbWVvZmRheSgpIGJ1dCBub3QgX2Z0aW1lNjQoKS4KIC8vIFRPRE8oa2VudG9uQGdvb2ds
ZS5jb20pOiBVc2UgYXV0b2NvbmYgdG8gZGV0ZWN0IGF2YWlsYWJpbGl0eSBvZgogLy8gICBnZXR0
aW1lb2ZkYXkoKS4KIC8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBUaGVyZSBhcmUgb3RoZXIg
d2F5cyB0byBnZXQgdGhlIHRpbWUgb24KIC8vICAgV2luZG93cywgbGlrZSBHZXRUaWNrQ291bnQo
KSBvciBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgpLiAgTWluR1cKIC8vICAgc3VwcG9ydHMgdGhl
c2UuICBjb25zaWRlciB1c2luZyB0aGVtIGluc3RlYWQuCi0jZGVmaW5lIEdURVNUX0hBU19HRVRU
SU1FT0ZEQVlfIDEKLSNpbmNsdWRlIDxzeXMvdGltZS5oPiAgLy8gTk9MSU5UCi0jZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1NfTUlOR1cKKyMgIGRlZmluZSBHVEVTVF9IQVNfR0VUVElNRU9GREFZ
XyAxCisjICBpbmNsdWRlIDxzeXMvdGltZS5oPiAgLy8gTk9MSU5UCisjIGVuZGlmICAvLyBHVEVT
VF9PU19XSU5ET1dTX01JTkdXCiAKIC8vIGNwcGxpbnQgdGhpbmtzIHRoYXQgdGhlIGhlYWRlciBp
cyBhbHJlYWR5IGluY2x1ZGVkLCBzbyB3ZSB3YW50IHRvCiAvLyBzaWxlbmNlIGl0LgotI2luY2x1
ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBOT0xJ
TlQKKyMgdW5kZWYgbWluCiAKICNlbHNlCiAKIC8vIEFzc3VtZSBvdGhlciBwbGF0Zm9ybXMgaGF2
ZSBnZXR0aW1lb2ZkYXkoKS4KIC8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBVc2UgYXV0b2Nv
bmYgdG8gZGV0ZWN0IGF2YWlsYWJpbGl0eSBvZgogLy8gICBnZXR0aW1lb2ZkYXkoKS4KLSNkZWZp
bmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVP
RkRBWV8gMQogCiAvLyBjcHBsaW50IHRoaW5rcyB0aGF0IHRoZSBoZWFkZXIgaXMgYWxyZWFkeSBp
bmNsdWRlZCwgc28gd2Ugd2FudCB0bwogLy8gc2lsZW5jZSBpdC4KLSNpbmNsdWRlIDxzeXMvdGlt
ZS5oPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8dW5pc3RkLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVk
ZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDx1bmlzdGQuaD4gIC8vIE5PTElO
VAogCiAjZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCiAKICNpZiBHVEVTVF9IQVNfRVhDRVBUSU9O
UwotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KKyMgaW5jbHVkZSA8c3RkZXhjZXB0PgorI2VuZGlmCisK
KyNpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisjIGluY2x1ZGUgPGFycGEvaW5ldC5oPiAg
Ly8gTk9MSU5UCisjIGluY2x1ZGUgPG5ldGRiLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3lz
L3NvY2tldC5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy90eXBlcy5oPiAgLy8gTk9MSU5U
CiAjZW5kaWYKIAogLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBh
cnQgb2YgR29vZ2xlIFRlc3QncwpAQCAtMTI5LDcgKzE0Myw3IEBACiAjdW5kZWYgR1RFU1RfSU1Q
TEVNRU5UQVRJT05fCiAKICNpZiBHVEVTVF9PU19XSU5ET1dTCi0jZGVmaW5lIHZzbnByaW50ZiBf
dnNucHJpbnRmCisjIGRlZmluZSB2c25wcmludGYgX3ZzbnByaW50ZgogI2VuZGlmICAvLyBHVEVT
VF9PU19XSU5ET1dTCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKQEAgLTE3NSw2ICsxODksMTYgQEAg
Ym9vbCBnX2hlbHBfZmxhZyA9IGZhbHNlOwogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAor
c3RhdGljIGNvbnN0IGNoYXIqIEdldERlZmF1bHRGaWx0ZXIoKSB7CisjaWZkZWYgR1RFU1RfVEVT
VF9GSUxURVJfRU5WX1ZBUl8KKyAgY29uc3QgY2hhciogY29uc3QgdGVzdGJyaWRnZV90ZXN0X29u
bHkgPSBnZXRlbnYoR1RFU1RfVEVTVF9GSUxURVJfRU5WX1ZBUl8pOworICBpZiAodGVzdGJyaWRn
ZV90ZXN0X29ubHkgIT0gTlVMTCkgeworICAgIHJldHVybiB0ZXN0YnJpZGdlX3Rlc3Rfb25seTsK
KyAgfQorI2VuZGlmICAvLyBHVEVTVF9URVNUX0ZJTFRFUl9FTlZfVkFSXworICByZXR1cm4ga1Vu
aXZlcnNhbEZpbHRlcjsKK30KKwogR1RFU1RfREVGSU5FX2Jvb2xfKAogICAgIGFsc29fcnVuX2Rp
c2FibGVkX3Rlc3RzLAogICAgIGludGVybmFsOjpCb29sRnJvbUdUZXN0RW52KCJhbHNvX3J1bl9k
aXNhYmxlZF90ZXN0cyIsIGZhbHNlKSwKQEAgLTE4Nyw3ICsyMTEsNyBAQCBHVEVTVF9ERUZJTkVf
Ym9vbF8oCiAKIEdURVNUX0RFRklORV9ib29sXygKICAgICBjYXRjaF9leGNlcHRpb25zLAotICAg
IGludGVybmFsOjpCb29sRnJvbUdUZXN0RW52KCJjYXRjaF9leGNlcHRpb25zIiwgZmFsc2UpLAor
ICAgIGludGVybmFsOjpCb29sRnJvbUdUZXN0RW52KCJjYXRjaF9leGNlcHRpb25zIiwgdHJ1ZSks
CiAgICAgIlRydWUgaWZmICIgR1RFU1RfTkFNRV8KICAgICAiIHNob3VsZCBjYXRjaCBleGNlcHRp
b25zIGFuZCB0cmVhdCB0aGVtIGFzIHRlc3QgZmFpbHVyZXMuIik7CiAKQEAgLTE5NywxMSArMjIx
LDExIEBAIEdURVNUX0RFRklORV9zdHJpbmdfKAogICAgICJXaGV0aGVyIHRvIHVzZSBjb2xvcnMg
aW4gdGhlIG91dHB1dC4gIFZhbGlkIHZhbHVlczogeWVzLCBubywgIgogICAgICJhbmQgYXV0by4g
ICdhdXRvJyBtZWFucyB0byB1c2UgY29sb3JzIGlmIHRoZSBvdXRwdXQgaXMgIgogICAgICJiZWlu
ZyBzZW50IHRvIGEgdGVybWluYWwgYW5kIHRoZSBURVJNIGVudmlyb25tZW50IHZhcmlhYmxlICIK
LSAgICAiaXMgc2V0IHRvIHh0ZXJtLCB4dGVybS1jb2xvciwgeHRlcm0tMjU2Y29sb3IsIGxpbnV4
IG9yIGN5Z3dpbi4iKTsKKyAgICAiaXMgc2V0IHRvIGEgdGVybWluYWwgdHlwZSB0aGF0IHN1cHBv
cnRzIGNvbG9ycy4iKTsKIAogR1RFU1RfREVGSU5FX3N0cmluZ18oCiAgICAgZmlsdGVyLAotICAg
IGludGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYoImZpbHRlciIsIGtVbml2ZXJzYWxGaWx0ZXIp
LAorICAgIGludGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYoImZpbHRlciIsIEdldERlZmF1bHRG
aWx0ZXIoKSksCiAgICAgIkEgY29sb24tc2VwYXJhdGVkIGxpc3Qgb2YgZ2xvYiAobm90IHJlZ2V4
KSBwYXR0ZXJucyAiCiAgICAgImZvciBmaWx0ZXJpbmcgdGhlIHRlc3RzIHRvIHJ1biwgb3B0aW9u
YWxseSBmb2xsb3dlZCBieSBhICIKICAgICAiJy0nIGFuZCBhIDogc2VwYXJhdGVkIGxpc3Qgb2Yg
bmVnYXRpdmUgcGF0dGVybnMgKHRlc3RzIHRvICIKQEAgLTI1OCw2ICsyODIsMTMgQEAgR1RFU1Rf
REVGSU5FX2ludDMyXygKICAgICAiVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0
byBwcmludCB3aGVuIGFuICIKICAgICAiYXNzZXJ0aW9uIGZhaWxzLiAgVGhlIHZhbGlkIHJhbmdl
IGlzIDAgdGhyb3VnaCAxMDAsIGluY2x1c2l2ZS4iKTsKIAorR1RFU1RfREVGSU5FX3N0cmluZ18o
CisgICAgc3RyZWFtX3Jlc3VsdF90bywKKyAgICBpbnRlcm5hbDo6U3RyaW5nRnJvbUdUZXN0RW52
KCJzdHJlYW1fcmVzdWx0X3RvIiwgIiIpLAorICAgICJUaGlzIGZsYWcgc3BlY2lmaWVzIHRoZSBo
b3N0IG5hbWUgYW5kIHRoZSBwb3J0IG51bWJlciBvbiB3aGljaCB0byBzdHJlYW0gIgorICAgICJ0
ZXN0IHJlc3VsdHMuIEV4YW1wbGU6IFwibG9jYWxob3N0OjU1NVwiLiBUaGUgZmxhZyBpcyBlZmZl
Y3RpdmUgb25seSBvbiAiCisgICAgIkxpbnV4LiIpOworCiBHVEVTVF9ERUZJTkVfYm9vbF8oCiAg
ICAgdGhyb3dfb25fZmFpbHVyZSwKICAgICBpbnRlcm5hbDo6Qm9vbEZyb21HVGVzdEVudigidGhy
b3dfb25fZmFpbHVyZSIsIGZhbHNlKSwKQEAgLTI2NSw2ICsyOTYsMTMgQEAgR1RFU1RfREVGSU5F
X2Jvb2xfKAogICAgICJpZiBleGNlcHRpb25zIGFyZSBlbmFibGVkIG9yIGV4aXQgdGhlIHByb2dy
YW0gd2l0aCBhIG5vbi16ZXJvIGNvZGUgIgogICAgICJvdGhlcndpc2UuIik7CiAKKyNpZiBHVEVT
VF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCitHVEVTVF9ERUZJTkVfc3RyaW5nXygKKyAgICBmbGFn
ZmlsZSwKKyAgICBpbnRlcm5hbDo6U3RyaW5nRnJvbUdUZXN0RW52KCJmbGFnZmlsZSIsICIiKSwK
KyAgICAiVGhpcyBmbGFnIHNwZWNpZmllcyB0aGUgZmxhZ2ZpbGUgdG8gcmVhZCBjb21tYW5kLWxp
bmUgZmxhZ3MgZnJvbS4iKTsKKyNlbmRpZiAgLy8gR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFH
XworCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCiAvLyBHZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVy
IGZyb20gWzAsIHJhbmdlKSwgdXNpbmcgYSBMaW5lYXIKQEAgLTI4OSwxMyArMzI3LDcgQEAgVUlu
dDMyIFJhbmRvbTo6R2VuZXJhdGUoVUludDMyIHJhbmdlKSB7CiAvLyBHVGVzdElzSW5pdGlhbGl6
ZWQoKSByZXR1cm5zIHRydWUgaWZmIHRoZSB1c2VyIGhhcyBpbml0aWFsaXplZAogLy8gR29vZ2xl
IFRlc3QuICBVc2VmdWwgZm9yIGNhdGNoaW5nIHRoZSB1c2VyIG1pc3Rha2Ugb2Ygbm90IGluaXRp
YWxpemluZwogLy8gR29vZ2xlIFRlc3QgYmVmb3JlIGNhbGxpbmcgUlVOX0FMTF9URVNUUygpLgot
Ly8KLS8vIEEgdXNlciBtdXN0IGNhbGwgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKSB0byBpbml0
aWFsaXplIEdvb2dsZQotLy8gVGVzdC4gIGdfaW5pdF9ndGVzdF9jb3VudCBpcyBzZXQgdG8gdGhl
IG51bWJlciBvZiB0aW1lcwotLy8gSW5pdEdvb2dsZVRlc3QoKSBoYXMgYmVlbiBjYWxsZWQuICBX
ZSBkb24ndCBwcm90ZWN0IHRoaXMgdmFyaWFibGUKLS8vIHVuZGVyIGEgbXV0ZXggYXMgaXQgaXMg
b25seSBhY2Nlc3NlZCBpbiB0aGUgbWFpbiB0aHJlYWQuCi1pbnQgZ19pbml0X2d0ZXN0X2NvdW50
ID0gMDsKLXN0YXRpYyBib29sIEdUZXN0SXNJbml0aWFsaXplZCgpIHsgcmV0dXJuIGdfaW5pdF9n
dGVzdF9jb3VudCAhPSAwOyB9CitzdGF0aWMgYm9vbCBHVGVzdElzSW5pdGlhbGl6ZWQoKSB7IHJl
dHVybiBHZXRBcmd2cygpLnNpemUoKSA+IDA7IH0KIAogLy8gSXRlcmF0ZXMgb3ZlciBhIHZlY3Rv
ciBvZiBUZXN0Q2FzZXMsIGtlZXBpbmcgYSBydW5uaW5nIHN1bSBvZiB0aGUKIC8vIHJlc3VsdHMg
b2YgY2FsbGluZyBhIGdpdmVuIGludC1yZXR1cm5pbmcgbWV0aG9kIG9uIGVhY2guCkBAIC0zNDks
MTAgKzM4MSwxOCBAQCB2b2lkIEFzc2VydEhlbHBlcjo6b3BlcmF0b3I9KGNvbnN0IE1lc3NhZ2Um
IG1lc3NhZ2UpIGNvbnN0IHsKIH0KIAogLy8gTXV0ZXggZm9yIGxpbmtlZCBwb2ludGVycy4KLUdU
RVNUX0RFRklORV9TVEFUSUNfTVVURVhfKGdfbGlua2VkX3B0cl9tdXRleCk7CitHVEVTVF9BUElf
IEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKGdfbGlua2VkX3B0cl9tdXRleCk7CiAKLS8vIEFw
cGxpY2F0aW9uIHBhdGhuYW1lIGdvdHRlbiBpbiBJbml0R29vZ2xlVGVzdC4KLVN0cmluZyBnX2V4
ZWN1dGFibGVfcGF0aDsKKy8vIEEgY29weSBvZiBhbGwgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4g
IFNldCBieSBJbml0R29vZ2xlVGVzdCgpLgorOjpzdGQ6OnZlY3Rvcjx0ZXN0aW5nOjppbnRlcm5h
bDo6c3RyaW5nPiBnX2FyZ3ZzOworCitjb25zdCA6OnN0ZDo6dmVjdG9yPHRlc3Rpbmc6OmludGVy
bmFsOjpzdHJpbmc+JiBHZXRBcmd2cygpIHsKKyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9HRVRf
QVJHVlNfKQorICByZXR1cm4gR1RFU1RfQ1VTVE9NX0dFVF9BUkdWU18oKTsKKyNlbHNlICAvLyBk
ZWZpbmVkKEdURVNUX0NVU1RPTV9HRVRfQVJHVlNfKQorICByZXR1cm4gZ19hcmd2czsKKyNlbmRp
ZiAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01fR0VUX0FSR1ZTXykKK30KIAogLy8gUmV0dXJucyB0
aGUgY3VycmVudCBhcHBsaWNhdGlvbidzIG5hbWUsIHJlbW92aW5nIGRpcmVjdG9yeSBwYXRoIGlm
IHRoYXQKIC8vIGlzIHByZXNlbnQuCkBAIC0zNjAsOSArNDAwLDkgQEAgRmlsZVBhdGggR2V0Q3Vy
cmVudEV4ZWN1dGFibGVOYW1lKCkgewogICBGaWxlUGF0aCByZXN1bHQ7CiAKICNpZiBHVEVTVF9P
U19XSU5ET1dTCi0gIHJlc3VsdC5TZXQoRmlsZVBhdGgoZ19leGVjdXRhYmxlX3BhdGgpLlJlbW92
ZUV4dGVuc2lvbigiZXhlIikpOworICByZXN1bHQuU2V0KEZpbGVQYXRoKEdldEFyZ3ZzKClbMF0p
LlJlbW92ZUV4dGVuc2lvbigiZXhlIikpOwogI2Vsc2UKLSAgcmVzdWx0LlNldChGaWxlUGF0aChn
X2V4ZWN1dGFibGVfcGF0aCkpOworICByZXN1bHQuU2V0KEZpbGVQYXRoKEdldEFyZ3ZzKClbMF0p
KTsKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCiAgIHJldHVybiByZXN1bHQuUmVtb3Zl
RGlyZWN0b3J5TmFtZSgpOwpAQCAtMzcxLDI5ICs0MTEsMjkgQEAgRmlsZVBhdGggR2V0Q3VycmVu
dEV4ZWN1dGFibGVOYW1lKCkgewogLy8gRnVuY3Rpb25zIGZvciBwcm9jZXNzaW5nIHRoZSBndGVz
dF9vdXRwdXQgZmxhZy4KIAogLy8gUmV0dXJucyB0aGUgb3V0cHV0IGZvcm1hdCwgb3IgIiIgZm9y
IG5vcm1hbCBwcmludGVkIG91dHB1dC4KLVN0cmluZyBVbml0VGVzdE9wdGlvbnM6OkdldE91dHB1
dEZvcm1hdCgpIHsKK3N0ZDo6c3RyaW5nIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0
KCkgewogICBjb25zdCBjaGFyKiBjb25zdCBndGVzdF9vdXRwdXRfZmxhZyA9IEdURVNUX0ZMQUco
b3V0cHV0KS5jX3N0cigpOwotICBpZiAoZ3Rlc3Rfb3V0cHV0X2ZsYWcgPT0gTlVMTCkgcmV0dXJu
IFN0cmluZygiIik7CisgIGlmIChndGVzdF9vdXRwdXRfZmxhZyA9PSBOVUxMKSByZXR1cm4gc3Rk
OjpzdHJpbmcoIiIpOwogCiAgIGNvbnN0IGNoYXIqIGNvbnN0IGNvbG9uID0gc3RyY2hyKGd0ZXN0
X291dHB1dF9mbGFnLCAnOicpOwogICByZXR1cm4gKGNvbG9uID09IE5VTEwpID8KLSAgICAgIFN0
cmluZyhndGVzdF9vdXRwdXRfZmxhZykgOgotICAgICAgU3RyaW5nKGd0ZXN0X291dHB1dF9mbGFn
LCBjb2xvbiAtIGd0ZXN0X291dHB1dF9mbGFnKTsKKyAgICAgIHN0ZDo6c3RyaW5nKGd0ZXN0X291
dHB1dF9mbGFnKSA6CisgICAgICBzdGQ6OnN0cmluZyhndGVzdF9vdXRwdXRfZmxhZywgY29sb24g
LSBndGVzdF9vdXRwdXRfZmxhZyk7CiB9CiAKIC8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHJl
cXVlc3RlZCBvdXRwdXQgZmlsZSwgb3IgdGhlIGRlZmF1bHQgaWYgbm9uZQogLy8gd2FzIGV4cGxp
Y2l0bHkgc3BlY2lmaWVkLgotU3RyaW5nIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRo
VG9PdXRwdXRGaWxlKCkgeworc3RkOjpzdHJpbmcgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0
ZVBhdGhUb091dHB1dEZpbGUoKSB7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGd0ZXN0X291dHB1dF9m
bGFnID0gR1RFU1RfRkxBRyhvdXRwdXQpLmNfc3RyKCk7CiAgIGlmIChndGVzdF9vdXRwdXRfZmxh
ZyA9PSBOVUxMKQotICAgIHJldHVybiBTdHJpbmcoIiIpOworICAgIHJldHVybiAiIjsKIAogICBj
b25zdCBjaGFyKiBjb25zdCBjb2xvbiA9IHN0cmNocihndGVzdF9vdXRwdXRfZmxhZywgJzonKTsK
ICAgaWYgKGNvbG9uID09IE5VTEwpCi0gICAgcmV0dXJuIFN0cmluZyhpbnRlcm5hbDo6RmlsZVBh
dGg6OkNvbmNhdFBhdGhzKAotICAgICAgICAgICAgICAgaW50ZXJuYWw6OkZpbGVQYXRoKAotICAg
ICAgICAgICAgICAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5n
X2RpcigpKSwKLSAgICAgICAgICAgICAgIGludGVybmFsOjpGaWxlUGF0aChrRGVmYXVsdE91dHB1
dEZpbGUpKS5Ub1N0cmluZygpICk7CisgICAgcmV0dXJuIGludGVybmFsOjpGaWxlUGF0aDo6Q29u
Y2F0UGF0aHMoCisgICAgICAgIGludGVybmFsOjpGaWxlUGF0aCgKKyAgICAgICAgICAgIFVuaXRU
ZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5nX2RpcigpKSwKKyAgICAgICAgaW50
ZXJuYWw6OkZpbGVQYXRoKGtEZWZhdWx0T3V0cHV0RmlsZSkpLnN0cmluZygpOwogCiAgIGludGVy
bmFsOjpGaWxlUGF0aCBvdXRwdXRfbmFtZShjb2xvbiArIDEpOwogICBpZiAoIW91dHB1dF9uYW1l
LklzQWJzb2x1dGVQYXRoKCkpCkBAIC00MDYsMTIgKzQ0NiwxMiBAQCBTdHJpbmcgVW5pdFRlc3RP
cHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSB7CiAgICAgICAgIGludGVybmFs
OjpGaWxlUGF0aChjb2xvbiArIDEpKTsKIAogICBpZiAoIW91dHB1dF9uYW1lLklzRGlyZWN0b3J5
KCkpCi0gICAgcmV0dXJuIG91dHB1dF9uYW1lLlRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG91dHB1
dF9uYW1lLnN0cmluZygpOwogCiAgIGludGVybmFsOjpGaWxlUGF0aCByZXN1bHQoaW50ZXJuYWw6
OkZpbGVQYXRoOjpHZW5lcmF0ZVVuaXF1ZUZpbGVOYW1lKAogICAgICAgb3V0cHV0X25hbWUsIGlu
dGVybmFsOjpHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKSwKICAgICAgIEdldE91dHB1dEZvcm1h
dCgpLmNfc3RyKCkpKTsKLSAgcmV0dXJuIHJlc3VsdC5Ub1N0cmluZygpOworICByZXR1cm4gcmVz
dWx0LnN0cmluZygpOwogfQogCiAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB3aWxkY2FyZCBwYXR0
ZXJuIG1hdGNoZXMgdGhlIHN0cmluZy4gIFRoZQpAQCAtNDM2LDcgKzQ3Niw4IEBAIGJvb2wgVW5p
dFRlc3RPcHRpb25zOjpQYXR0ZXJuTWF0Y2hlc1N0cmluZyhjb25zdCBjaGFyICpwYXR0ZXJuLAog
ICB9CiB9CiAKLWJvb2wgVW5pdFRlc3RPcHRpb25zOjpNYXRjaGVzRmlsdGVyKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgY2hhciogZmlsdGVyKSB7Citib29sIFVuaXRUZXN0T3B0aW9uczo6TWF0
Y2hlc0ZpbHRlcigKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgY29uc3QgY2hhciogZmls
dGVyKSB7CiAgIGNvbnN0IGNoYXIgKmN1cl9wYXR0ZXJuID0gZmlsdGVyOwogICBmb3IgKDs7KSB7
CiAgICAgaWYgKFBhdHRlcm5NYXRjaGVzU3RyaW5nKGN1cl9wYXR0ZXJuLCBuYW1lLmNfc3RyKCkp
KSB7CkBAIC00NTYsMjggKzQ5NywyNCBAQCBib29sIFVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0Zp
bHRlcihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IGNoYXIqIGZpbHRlcikgewogICB9CiB9CiAK
LS8vIFRPRE8oa2VpdGhyYXkpOiBtb3ZlIFN0cmluZyBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMg
dG8gZ3Rlc3Qtc3RyaW5nLmNjLgotCiAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB1c2VyLXNwZWNp
ZmllZCBmaWx0ZXIgbWF0Y2hlcyB0aGUgdGVzdCBjYXNlCiAvLyBuYW1lIGFuZCB0aGUgdGVzdCBu
YW1lLgotYm9vbCBVbml0VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KGNvbnN0IFN0cmlu
ZyAmdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nICZ0ZXN0X25hbWUpIHsKLSAgY29uc3QgU3RyaW5nJiBmdWxsX25hbWUg
PSBTdHJpbmc6OkZvcm1hdCgiJXMuJXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RfY2FzZV9uYW1lLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9uYW1lLmNfc3RyKCkpOworYm9vbCBVbml0VGVz
dE9wdGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0X2Nhc2Vf
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyAmdGVzdF9uYW1lKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmdWxsX25hbWUgPSB0
ZXN0X2Nhc2VfbmFtZSArICIuIiArIHRlc3RfbmFtZS5jX3N0cigpOwogCiAgIC8vIFNwbGl0IC0t
Z3Rlc3RfZmlsdGVyIGF0ICctJywgaWYgdGhlcmUgaXMgb25lLCB0byBzZXBhcmF0ZSBpbnRvCiAg
IC8vIHBvc2l0aXZlIGZpbHRlciBhbmQgbmVnYXRpdmUgZmlsdGVyIHBvcnRpb25zCiAgIGNvbnN0
IGNoYXIqIGNvbnN0IHAgPSBHVEVTVF9GTEFHKGZpbHRlcikuY19zdHIoKTsKICAgY29uc3QgY2hh
ciogY29uc3QgZGFzaCA9IHN0cmNocihwLCAnLScpOwotICBTdHJpbmcgcG9zaXRpdmU7Ci0gIFN0
cmluZyBuZWdhdGl2ZTsKKyAgc3RkOjpzdHJpbmcgcG9zaXRpdmU7CisgIHN0ZDo6c3RyaW5nIG5l
Z2F0aXZlOwogICBpZiAoZGFzaCA9PSBOVUxMKSB7CiAgICAgcG9zaXRpdmUgPSBHVEVTVF9GTEFH
KGZpbHRlcikuY19zdHIoKTsgIC8vIFdob2xlIHN0cmluZyBpcyBhIHBvc2l0aXZlIGZpbHRlcgot
ICAgIG5lZ2F0aXZlID0gU3RyaW5nKCIiKTsKKyAgICBuZWdhdGl2ZSA9ICIiOwogICB9IGVsc2Ug
ewotICAgIHBvc2l0aXZlID0gU3RyaW5nKHAsIGRhc2ggLSBwKTsgIC8vIEV2ZXJ5dGhpbmcgdXAg
dG8gdGhlIGRhc2gKLSAgICBuZWdhdGl2ZSA9IFN0cmluZyhkYXNoKzEpOyAgICAgICAvLyBFdmVy
eXRoaW5nIGFmdGVyIHRoZSBkYXNoCisgICAgcG9zaXRpdmUgPSBzdGQ6OnN0cmluZyhwLCBkYXNo
KTsgICAvLyBFdmVyeXRoaW5nIHVwIHRvIHRoZSBkYXNoCisgICAgbmVnYXRpdmUgPSBzdGQ6OnN0
cmluZyhkYXNoICsgMSk7ICAvLyBFdmVyeXRoaW5nIGFmdGVyIHRoZSBkYXNoCiAgICAgaWYgKHBv
c2l0aXZlLmVtcHR5KCkpIHsKICAgICAgIC8vIFRyZWF0ICctdGVzdDEnIGFzIHRoZSBzYW1lIGFz
ICcqLXRlc3QxJwogICAgICAgcG9zaXRpdmUgPSBrVW5pdmVyc2FsRmlsdGVyOwpAQCAtNDkwLDIw
ICs1MjcsMzMgQEAgYm9vbCBVbml0VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KGNvbnN0
IFN0cmluZyAmdGVzdF9jYXNlX25hbWUsCiAgICAgICAgICAgIU1hdGNoZXNGaWx0ZXIoZnVsbF9u
YW1lLCBuZWdhdGl2ZS5jX3N0cigpKSk7CiB9CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjaWYg
R1RFU1RfSEFTX1NFSAogLy8gUmV0dXJucyBFWENFUFRJT05fRVhFQ1VURV9IQU5ETEVSIGlmIEdv
b2dsZSBUZXN0IHNob3VsZCBoYW5kbGUgdGhlCiAvLyBnaXZlbiBTRUggZXhjZXB0aW9uLCBvciBF
WENFUFRJT05fQ09OVElOVUVfU0VBUkNIIG90aGVyd2lzZS4KIC8vIFRoaXMgZnVuY3Rpb24gaXMg
dXNlZnVsIGFzIGFuIF9fZXhjZXB0IGNvbmRpdGlvbi4KIGludCBVbml0VGVzdE9wdGlvbnM6OkdU
ZXN0U2hvdWxkUHJvY2Vzc1NFSChEV09SRCBleGNlcHRpb25fY29kZSkgewotICAvLyBHb29nbGUg
VGVzdCBzaG91bGQgaGFuZGxlIGFuIGV4Y2VwdGlvbiBpZjoKKyAgLy8gR29vZ2xlIFRlc3Qgc2hv
dWxkIGhhbmRsZSBhIFNFSCBleGNlcHRpb24gaWY6CiAgIC8vICAgMS4gdGhlIHVzZXIgd2FudHMg
aXQgdG8sIEFORAotICAvLyAgIDIuIHRoaXMgaXMgbm90IGEgYnJlYWtwb2ludCBleGNlcHRpb24u
Ci0gIHJldHVybiAoR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSAmJgotICAgICAgICAgIGV4
Y2VwdGlvbl9jb2RlICE9IEVYQ0VQVElPTl9CUkVBS1BPSU5UKSA/Ci0gICAgICBFWENFUFRJT05f
RVhFQ1VURV9IQU5ETEVSIDoKLSAgICAgIEVYQ0VQVElPTl9DT05USU5VRV9TRUFSQ0g7CisgIC8v
ICAgMi4gdGhpcyBpcyBub3QgYSBicmVha3BvaW50IGV4Y2VwdGlvbiwgQU5ECisgIC8vICAgMy4g
dGhpcyBpcyBub3QgYSBDKysgZXhjZXB0aW9uIChWQysrIGltcGxlbWVudHMgdGhlbSB2aWEgU0VI
LAorICAvLyAgICAgIGFwcGFyZW50bHkpLgorICAvLworICAvLyBTRUggZXhjZXB0aW9uIGNvZGUg
Zm9yIEMrKyBleGNlcHRpb25zLgorICAvLyAoc2VlIGh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5j
b20va2IvMTg1Mjk0IGZvciBtb3JlIGluZm9ybWF0aW9uKS4KKyAgY29uc3QgRFdPUkQga0N4eEV4
Y2VwdGlvbkNvZGUgPSAweGUwNmQ3MzYzOworCisgIGJvb2wgc2hvdWxkX2hhbmRsZSA9IHRydWU7
CisKKyAgaWYgKCFHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKQorICAgIHNob3VsZF9oYW5k
bGUgPSBmYWxzZTsKKyAgZWxzZSBpZiAoZXhjZXB0aW9uX2NvZGUgPT0gRVhDRVBUSU9OX0JSRUFL
UE9JTlQpCisgICAgc2hvdWxkX2hhbmRsZSA9IGZhbHNlOworICBlbHNlIGlmIChleGNlcHRpb25f
Y29kZSA9PSBrQ3h4RXhjZXB0aW9uQ29kZSkKKyAgICBzaG91bGRfaGFuZGxlID0gZmFsc2U7CisK
KyAgcmV0dXJuIHNob3VsZF9oYW5kbGUgPyBFWENFUFRJT05fRVhFQ1VURV9IQU5ETEVSIDogRVhD
RVBUSU9OX0NPTlRJTlVFX1NFQVJDSDsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwor
I2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogCkBA
IC01ODMsOCArNjMzLDggQEAgQXNzZXJ0aW9uUmVzdWx0IEhhc09uZUZhaWx1cmUoY29uc3QgY2hh
ciogLyogcmVzdWx0c19leHByICovLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogLyogc3Vic3RyX2V4cHIgKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUZXN0UGFydFJlc3VsdEFycmF5JiByZXN1bHRzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGVzdFBhcnRSZXN1bHQ6OlR5cGUgdHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN1YnN0cikgewotICBjb25zdCBTdHJpbmcgZXhwZWN0
ZWQodHlwZSA9PSBUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSA/CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmcmIHN1YnN0cikgeworICBjb25zdCBzdGQ6OnN0
cmluZyBleHBlY3RlZCh0eXBlID09IFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlID8KICAg
ICAgICAgICAgICAgICAgICAgICAgICIxIGZhdGFsIGZhaWx1cmUiIDoKICAgICAgICAgICAgICAg
ICAgICAgICAgICIxIG5vbi1mYXRhbCBmYWlsdXJlIik7CiAgIE1lc3NhZ2UgbXNnOwpAQCAtNTk0
LDIzICs2NDQsMjEgQEAgQXNzZXJ0aW9uUmVzdWx0IEhhc09uZUZhaWx1cmUoY29uc3QgY2hhciog
LyogcmVzdWx0c19leHByICovLAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXpl
KCk7IGkrKykgewogICAgICAgbXNnIDw8ICJcbiIgPDwgcmVzdWx0cy5HZXRUZXN0UGFydFJlc3Vs
dChpKTsKICAgICB9Ci0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgICByZXR1
cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG1zZzsKICAgfQogCiAgIGNvbnN0IFRlc3RQYXJ0UmVz
dWx0JiByID0gcmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgwKTsKICAgaWYgKHIudHlwZSgpICE9
IHR5cGUpIHsKLSAgICBtc2cgPDwgIkV4cGVjdGVkOiAiIDw8IGV4cGVjdGVkIDw8ICJcbiIKLSAg
ICAgICAgPDwgIiAgQWN0dWFsOlxuIgotICAgICAgICA8PCByOwotICAgIHJldHVybiBBc3NlcnRp
b25GYWlsdXJlKG1zZyk7CisgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiRXhwZWN0
ZWQ6ICIgPDwgZXhwZWN0ZWQgPDwgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PDwgIiAgQWN0dWFsOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcjsKICAg
fQogCi0gIGlmIChzdHJzdHIoci5tZXNzYWdlKCksIHN1YnN0cikgPT0gTlVMTCkgewotICAgIG1z
ZyA8PCAiRXhwZWN0ZWQ6ICIgPDwgZXhwZWN0ZWQgPDwgIiBjb250YWluaW5nIFwiIgotICAgICAg
ICA8PCBzdWJzdHIgPDwgIlwiXG4iCi0gICAgICAgIDw8ICIgIEFjdHVhbDpcbiIKLSAgICAgICAg
PDwgcjsKLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICBpZiAoc3Ryc3RyKHIu
bWVzc2FnZSgpLCBzdWJzdHIuY19zdHIoKSkgPT0gTlVMTCkgeworICAgIHJldHVybiBBc3NlcnRp
b25GYWlsdXJlKCkgPDwgIkV4cGVjdGVkOiAiIDw8IGV4cGVjdGVkIDw8ICIgY29udGFpbmluZyBc
IiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHN1YnN0ciA8PCAiXCJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgIEFjdHVhbDpcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IHI7CiAgIH0KIAogICByZXR1cm4gQXNzZXJ0aW9uU3VjY2Vz
cygpOwpAQCAtNjIyLDcgKzY3MCw3IEBAIEFzc2VydGlvblJlc3VsdCBIYXNPbmVGYWlsdXJlKGNv
bnN0IGNoYXIqIC8qIHJlc3VsdHNfZXhwciAqLywKIFNpbmdsZUZhaWx1cmVDaGVja2VyOjogU2lu
Z2xlRmFpbHVyZUNoZWNrZXIoCiAgICAgY29uc3QgVGVzdFBhcnRSZXN1bHRBcnJheSogcmVzdWx0
cywKICAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlLAotICAgIGNvbnN0IGNoYXIqIHN1YnN0
cikKKyAgICBjb25zdCBzdHJpbmcmIHN1YnN0cikKICAgICA6IHJlc3VsdHNfKHJlc3VsdHMpLAog
ICAgICAgdHlwZV8odHlwZSksCiAgICAgICBzdWJzdHJfKHN1YnN0cikge30KQEAgLTYzMiw3ICs2
ODAsNyBAQCBTaW5nbGVGYWlsdXJlQ2hlY2tlcjo6IFNpbmdsZUZhaWx1cmVDaGVja2VyKAogLy8g
dHlwZSBhbmQgY29udGFpbnMgdGhlIGdpdmVuIHN1YnN0cmluZy4gIElmIHRoYXQncyBub3QgdGhl
IGNhc2UsIGEKIC8vIG5vbi1mYXRhbCBmYWlsdXJlIHdpbGwgYmUgZ2VuZXJhdGVkLgogU2luZ2xl
RmFpbHVyZUNoZWNrZXI6On5TaW5nbGVGYWlsdXJlQ2hlY2tlcigpIHsKLSAgRVhQRUNUX1BSRURf
Rk9STUFUMyhIYXNPbmVGYWlsdXJlLCAqcmVzdWx0c18sIHR5cGVfLCBzdWJzdHJfLmNfc3RyKCkp
OworICBFWFBFQ1RfUFJFRF9GT1JNQVQzKEhhc09uZUZhaWx1cmUsICpyZXN1bHRzXywgdHlwZV8s
IHN1YnN0cl8pOwogfQogCiBEZWZhdWx0R2xvYmFsVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjo6RGVm
YXVsdEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIoCkBAIC03MDksMTEgKzc1NywyMiBAQCBp
bnQgVW5pdFRlc3RJbXBsOjpmYWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJuIFN1
bU92ZXJUZXN0Q2FzZUxpc3QodGVzdF9jYXNlc18sICZUZXN0Q2FzZTo6ZmFpbGVkX3Rlc3RfY291
bnQpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxs
IGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0LgoraW50IFVuaXRUZXN0SW1wbDo6cmVwb3J0
YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3QgeworICByZXR1cm4gU3VtT3ZlclRlc3RD
YXNlTGlzdCh0ZXN0X2Nhc2VzXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlRlc3RD
YXNlOjpyZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQpOworfQorCiAvLyBHZXRzIHRoZSBu
dW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMuCiBpbnQgVW5pdFRlc3RJbXBsOjpkaXNhYmxlZF90ZXN0
X2NvdW50KCkgY29uc3QgewogICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0ZXN0X2Nhc2Vz
XywgJlRlc3RDYXNlOjpkaXNhYmxlZF90ZXN0X2NvdW50KTsKIH0KIAorLy8gR2V0cyB0aGUgbnVt
YmVyIG9mIHRlc3RzIHRvIGJlIHByaW50ZWQgaW4gdGhlIFhNTCByZXBvcnQuCitpbnQgVW5pdFRl
c3RJbXBsOjpyZXBvcnRhYmxlX3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBTdW1PdmVy
VGVzdENhc2VMaXN0KHRlc3RfY2FzZXNfLCAmVGVzdENhc2U6OnJlcG9ydGFibGVfdGVzdF9jb3Vu
dCk7Cit9CisKIC8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdHMuCiBpbnQgVW5pdFRlc3RJ
bXBsOjp0b3RhbF90ZXN0X2NvdW50KCkgY29uc3QgewogICByZXR1cm4gU3VtT3ZlclRlc3RDYXNl
TGlzdCh0ZXN0X2Nhc2VzXywgJlRlc3RDYXNlOjp0b3RhbF90ZXN0X2NvdW50KTsKQEAgLTcyNCw3
ICs3ODMsNyBAQCBpbnQgVW5pdFRlc3RJbXBsOjp0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0IHsK
ICAgcmV0dXJuIFN1bU92ZXJUZXN0Q2FzZUxpc3QodGVzdF9jYXNlc18sICZUZXN0Q2FzZTo6dGVz
dF90b19ydW5fY291bnQpOwogfQogCi0vLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRy
YWNlIGFzIGEgU3RyaW5nLgorLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBh
cyBhbiBzdGQ6OnN0cmluZy4KIC8vCiAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhY2sgZnJh
bWVzIHRvIGJlIGluY2x1ZGVkIGlzIHNwZWNpZmllZCBieQogLy8gdGhlIGd0ZXN0X3N0YWNrX3Ry
YWNlX2RlcHRoIGZsYWcuICBUaGUgc2tpcF9jb3VudCBwYXJhbWV0ZXIKQEAgLTczNCw5ICs3OTMs
MTMgQEAgaW50IFVuaXRUZXN0SW1wbDo6dGVzdF90b19ydW5fY291bnQoKSBjb25zdCB7CiAvLyBG
b3IgZXhhbXBsZSwgaWYgRm9vKCkgY2FsbHMgQmFyKCksIHdoaWNoIGluIHR1cm4gY2FsbHMKIC8v
IEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoMSksIEZvbygpIHdpbGwgYmUgaW5jbHVkZWQg
aW4gdGhlCiAvLyB0cmFjZSBidXQgQmFyKCkgYW5kIEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRU
b3AoKSB3b24ndC4KLVN0cmluZyBVbml0VGVzdEltcGw6OkN1cnJlbnRPc1N0YWNrVHJhY2VFeGNl
cHRUb3AoaW50IHNraXBfY291bnQpIHsKLSAgKHZvaWQpc2tpcF9jb3VudDsKLSAgcmV0dXJuIFN0
cmluZygiIik7CitzdGQ6OnN0cmluZyBVbml0VGVzdEltcGw6OkN1cnJlbnRPc1N0YWNrVHJhY2VF
eGNlcHRUb3AoaW50IHNraXBfY291bnQpIHsKKyAgcmV0dXJuIG9zX3N0YWNrX3RyYWNlX2dldHRl
cigpLT5DdXJyZW50U3RhY2tUcmFjZSgKKyAgICAgIHN0YXRpY19jYXN0PGludD4oR1RFU1RfRkxB
RyhzdGFja190cmFjZV9kZXB0aCkpLAorICAgICAgc2tpcF9jb3VudCArIDEKKyAgICAgIC8vIFNr
aXBzIHRoZSB1c2VyLXNwZWNpZmllZCBudW1iZXIgb2YgZnJhbWVzIHBsdXMgdGhpcyBmdW5jdGlv
bgorICAgICAgLy8gaXRzZWxmLgorICAgICAgKTsgIC8vIE5PTElOVAogfQogCiAvLyBSZXR1cm5z
IHRoZSBjdXJyZW50IHRpbWUgaW4gbWlsbGlzZWNvbmRzLgpAQCAtNzY0LDY1ICs4MjcsMjggQEAg
VGltZUluTWlsbGlzIEdldFRpbWVJbk1pbGxpcygpIHsKICAgcmV0dXJuIDA7CiAjZWxpZiBHVEVT
VF9PU19XSU5ET1dTICYmICFHVEVTVF9IQVNfR0VUVElNRU9GREFZXwogICBfX3RpbWViNjQgbm93
OwotI2lmZGVmIF9NU0NfVkVSCisKICAgLy8gTVNWQyA4IGRlcHJlY2F0ZXMgX2Z0aW1lNjQoKSwg
c28gd2Ugd2FudCB0byBzdXBwcmVzcyB3YXJuaW5nIDQ5OTYKICAgLy8gKGRlcHJlY2F0ZWQgZnVu
Y3Rpb24pIHRoZXJlLgogICAvLyBUT0RPKGtlbnRvbkBnb29nbGUuY29tKTogVXNlIEdldFRpY2tD
b3VudCgpPyAgT3IgdXNlCiAgIC8vICAgU3lzdGVtVGltZVRvRmlsZVRpbWUoKQotI3ByYWdtYSB3
YXJuaW5nKHB1c2gpICAgICAgICAgIC8vIFNhdmVzIHRoZSBjdXJyZW50IHdhcm5pbmcgc3RhdGUu
Ci0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0OTk2KSAgLy8gVGVtcG9yYXJpbHkgZGlzYWJsZXMg
d2FybmluZyA0OTk2LgotICBfZnRpbWU2NCgmbm93KTsKLSNwcmFnbWEgd2FybmluZyhwb3ApICAg
ICAgICAgICAvLyBSZXN0b3JlcyB0aGUgd2FybmluZyBzdGF0ZS4KLSNlbHNlCisgIEdURVNUX0RJ
U0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQ5OTYpCiAgIF9mdGltZTY0KCZub3cpOwotI2VuZGlm
ICAvLyBfTVNDX1ZFUgorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKwogICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VGltZUluTWlsbGlzPihub3cudGltZSkgKiAxMDAwICsgbm93Lm1p
bGxpdG07CiAjZWxpZiBHVEVTVF9IQVNfR0VUVElNRU9GREFZXwogICBzdHJ1Y3QgdGltZXZhbCBu
b3c7CiAgIGdldHRpbWVvZmRheSgmbm93LCBOVUxMKTsKICAgcmV0dXJuIHN0YXRpY19jYXN0PFRp
bWVJbk1pbGxpcz4obm93LnR2X3NlYykgKiAxMDAwICsgbm93LnR2X3VzZWMgLyAxMDAwOwogI2Vs
c2UKLSNlcnJvciAiRG9uJ3Qga25vdyBob3cgdG8gZ2V0IHRoZSBjdXJyZW50IHRpbWUgb24geW91
ciBzeXN0ZW0uIgorIyBlcnJvciAiRG9uJ3Qga25vdyBob3cgdG8gZ2V0IHRoZSBjdXJyZW50IHRp
bWUgb24geW91ciBzeXN0ZW0uIgogI2VuZGlmCiB9CiAKIC8vIFV0aWxpdGllcwogCi0vLyBjbGFz
cyBTdHJpbmcKLQotLy8gUmV0dXJucyB0aGUgaW5wdXQgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3Rl
cyBpZiBpdCdzIG5vdCBOVUxMOwotLy8gb3RoZXJ3aXNlIHJldHVybnMgIihudWxsKSIuICBGb3Ig
ZXhhbXBsZSwgIlwiSGVsbG9cIiIgaXMgcmV0dXJuZWQKLS8vIGZvciBpbnB1dCAiSGVsbG8iLgot
Ly8KLS8vIFRoaXMgaXMgdXNlZnVsIGZvciBwcmludGluZyBhIEMgc3RyaW5nIGluIHRoZSBzeW50
YXggb2YgYSBsaXRlcmFsLgotLy8KLS8vIEtub3duIGlzc3VlOiBlc2NhcGUgc2VxdWVuY2VzIGFy
ZSBub3QgaGFuZGxlZCB5ZXQuCi1TdHJpbmcgU3RyaW5nOjpTaG93Q1N0cmluZ1F1b3RlZChjb25z
dCBjaGFyKiBjX3N0cikgewotICByZXR1cm4gY19zdHIgPyBTdHJpbmc6OkZvcm1hdCgiXCIlc1wi
IiwgY19zdHIpIDogU3RyaW5nKCIobnVsbCkiKTsKLX0KLQotLy8gQ29waWVzIGF0IG1vc3QgbGVu
Z3RoIGNoYXJhY3RlcnMgZnJvbSBzdHIgaW50byBhIG5ld2x5LWFsbG9jYXRlZAotLy8gcGllY2Ug
b2YgbWVtb3J5IG9mIHNpemUgbGVuZ3RoKzEuICBUaGUgbWVtb3J5IGlzIGFsbG9jYXRlZCB3aXRo
IG5ld1tdLgotLy8gQSB0ZXJtaW5hdGluZyBudWxsIGJ5dGUgaXMgd3JpdHRlbiB0byB0aGUgbWVt
b3J5LCBhbmQgYSBwb2ludGVyIHRvIGl0Ci0vLyBpcyByZXR1cm5lZC4gIElmIHN0ciBpcyBOVUxM
LCBOVUxMIGlzIHJldHVybmVkLgotc3RhdGljIGNoYXIqIENsb25lU3RyaW5nKGNvbnN0IGNoYXIq
IHN0ciwgc2l6ZV90IGxlbmd0aCkgewotICBpZiAoc3RyID09IE5VTEwpIHsKLSAgICByZXR1cm4g
TlVMTDsKLSAgfSBlbHNlIHsKLSAgICBjaGFyKiBjb25zdCBjbG9uZSA9IG5ldyBjaGFyW2xlbmd0
aCArIDFdOwotICAgIHBvc2l4OjpTdHJOQ3B5KGNsb25lLCBzdHIsIGxlbmd0aCk7Ci0gICAgY2xv
bmVbbGVuZ3RoXSA9ICdcMCc7Ci0gICAgcmV0dXJuIGNsb25lOwotICB9Ci19Ci0KLS8vIENsb25l
cyBhIDAtdGVybWluYXRlZCBDIHN0cmluZywgYWxsb2NhdGluZyBtZW1vcnkgdXNpbmcgbmV3LiAg
VGhlCi0vLyBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nW10gdGhlIHJldHVybiB2
YWx1ZS4gIFJldHVybnMgdGhlCi0vLyBjbG9uZWQgc3RyaW5nLCBvciBOVUxMIGlmIHRoZSBpbnB1
dCBpcyBOVUxMLgotY29uc3QgY2hhciAqIFN0cmluZzo6Q2xvbmVDU3RyaW5nKGNvbnN0IGNoYXIq
IGNfc3RyKSB7Ci0gIHJldHVybiAoY19zdHIgPT0gTlVMTCkgPwotICAgICAgICAgICAgICAgICAg
ICBOVUxMIDogQ2xvbmVTdHJpbmcoY19zdHIsIHN0cmxlbihjX3N0cikpOwotfQorLy8gY2xhc3Mg
U3RyaW5nLgogCiAjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIC8vIENyZWF0ZXMgYSBVVEYt
MTYgd2lkZSBzdHJpbmcgZnJvbSB0aGUgZ2l2ZW4gQU5TSSBzdHJpbmcsIGFsbG9jYXRpbmcKQEAg
LTg3OSwxMSArOTA1LDYgQEAgYm9vbCBTdHJpbmc6OkNTdHJpbmdFcXVhbHMoY29uc3QgY2hhciAq
IGxocywgY29uc3QgY2hhciAqIHJocykgewogLy8gZW5jb2RpbmcsIGFuZCBzdHJlYW1zIHRoZSBy
ZXN1bHQgdG8gdGhlIGdpdmVuIE1lc3NhZ2Ugb2JqZWN0Lgogc3RhdGljIHZvaWQgU3RyZWFtV2lk
ZUNoYXJzVG9NZXNzYWdlKGNvbnN0IHdjaGFyX3QqIHdzdHIsIHNpemVfdCBsZW5ndGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSogbXNnKSB7Ci0gIC8vIFRP
RE8od2FuKTogY29uc2lkZXIgYWxsb3dpbmcgYSB0ZXN0aW5nOjpTdHJpbmcgb2JqZWN0IHRvCi0g
IC8vIGNvbnRhaW4gJ1wwJy4gIFRoaXMgd2lsbCBtYWtlIGl0IGJlaGF2ZSBtb3JlIGxpa2Ugc3Rk
OjpzdHJpbmcsCi0gIC8vIGFuZCB3aWxsIGFsbG93IFRvVXRmOFN0cmluZygpIHRvIHJldHVybiB0
aGUgY29ycmVjdCBlbmNvZGluZwotICAvLyBmb3IgJ1wwJyBzLnQuIHdlIGNhbiBnZXQgcmlkIG9m
IHRoZSBjb25kaXRpb25hbCBoZXJlIChhbmQgaW4KLSAgLy8gc2V2ZXJhbCBvdGhlciBwbGFjZXMp
LgogICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBsZW5ndGg7ICkgeyAgLy8gTk9MSU5UCiAgICAg
aWYgKHdzdHJbaV0gIT0gTCdcMCcpIHsKICAgICAgICptc2cgPDwgV2lkZVN0cmluZ1RvVXRmOCh3
c3RyICsgaSwgc3RhdGljX2Nhc3Q8aW50PihsZW5ndGggLSBpKSk7CkBAIC04OTgsOCArOTE5LDQ1
IEBAIHN0YXRpYyB2b2lkIFN0cmVhbVdpZGVDaGFyc1RvTWVzc2FnZShjb25zdCB3Y2hhcl90KiB3
c3RyLCBzaXplX3QgbGVuZ3RoLAogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORyB8
fCBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKIAordm9pZCBTcGxpdFN0cmluZyhjb25zdCA6OnN0
ZDo6c3RyaW5nJiBzdHIsIGNoYXIgZGVsaW1pdGVyLAorICAgICAgICAgICAgICAgICA6OnN0ZDo6
dmVjdG9yPCA6OnN0ZDo6c3RyaW5nPiogZGVzdCkgeworICA6OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6
c3RyaW5nPiBwYXJzZWQ7CisgIDo6c3RkOjpzdHJpbmc6OnNpemVfdHlwZSBwb3MgPSAwOworICB3
aGlsZSAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7CisgICAgY29uc3QgOjpz
dGQ6OnN0cmluZzo6c2l6ZV90eXBlIGNvbG9uID0gc3RyLmZpbmQoZGVsaW1pdGVyLCBwb3MpOwor
ICAgIGlmIChjb2xvbiA9PSA6OnN0ZDo6c3RyaW5nOjpucG9zKSB7CisgICAgICBwYXJzZWQucHVz
aF9iYWNrKHN0ci5zdWJzdHIocG9zKSk7CisgICAgICBicmVhazsKKyAgICB9IGVsc2UgeworICAg
ICAgcGFyc2VkLnB1c2hfYmFjayhzdHIuc3Vic3RyKHBvcywgY29sb24gLSBwb3MpKTsKKyAgICAg
IHBvcyA9IGNvbG9uICsgMTsKKyAgICB9CisgIH0KKyAgZGVzdC0+c3dhcChwYXJzZWQpOworfQor
CiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAorLy8gQ29uc3RydWN0cyBhbiBlbXB0eSBNZXNz
YWdlLgorLy8gV2UgYWxsb2NhdGUgdGhlIHN0cmluZ3N0cmVhbSBzZXBhcmF0ZWx5IGJlY2F1c2Ug
b3RoZXJ3aXNlIGVhY2ggdXNlIG9mCisvLyBBU1NFUlQvRVhQRUNUIGluIGEgcHJvY2VkdXJlIGFk
ZHMgb3ZlciAyMDAgYnl0ZXMgdG8gdGhlIHByb2NlZHVyZSdzCisvLyBzdGFjayBmcmFtZSBsZWFk
aW5nIHRvIGh1Z2Ugc3RhY2sgZnJhbWVzIGluIHNvbWUgY2FzZXM7IGdjYyBkb2VzIG5vdCByZXVz
ZQorLy8gdGhlIHN0YWNrIHNwYWNlLgorTWVzc2FnZTo6TWVzc2FnZSgpIDogc3NfKG5ldyA6OnN0
ZDo6c3RyaW5nc3RyZWFtKSB7CisgIC8vIEJ5IGRlZmF1bHQsIHdlIHdhbnQgdGhlcmUgdG8gYmUg
ZW5vdWdoIHByZWNpc2lvbiB3aGVuIHByaW50aW5nCisgIC8vIGEgZG91YmxlIHRvIGEgTWVzc2Fn
ZS4KKyAgKnNzXyA8PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OmRpZ2l0czEwICsgMik7Cit9CisKKy8vIFRoZXNlIHR3byBvdmVybG9hZHMgYWxsb3cgc3Ry
ZWFtaW5nIGEgd2lkZSBDIHN0cmluZyB0byBhIE1lc3NhZ2UKKy8vIHVzaW5nIHRoZSBVVEYtOCBl
bmNvZGluZy4KK01lc3NhZ2UmIE1lc3NhZ2U6Om9wZXJhdG9yIDw8KGNvbnN0IHdjaGFyX3QqIHdp
ZGVfY19zdHIpIHsKKyAgcmV0dXJuICp0aGlzIDw8IGludGVybmFsOjpTdHJpbmc6OlNob3dXaWRl
Q1N0cmluZyh3aWRlX2Nfc3RyKTsKK30KK01lc3NhZ2UmIE1lc3NhZ2U6Om9wZXJhdG9yIDw8KHdj
aGFyX3QqIHdpZGVfY19zdHIpIHsKKyAgcmV0dXJuICp0aGlzIDw8IGludGVybmFsOjpTdHJpbmc6
OlNob3dXaWRlQ1N0cmluZyh3aWRlX2Nfc3RyKTsKK30KKwogI2lmIEdURVNUX0hBU19TVERfV1NU
UklORwogLy8gQ29udmVydHMgdGhlIGdpdmVuIHdpZGUgc3RyaW5nIHRvIGEgbmFycm93IHN0cmlu
ZyB1c2luZyB0aGUgVVRGLTgKIC8vIGVuY29kaW5nLCBhbmQgc3RyZWFtcyB0aGUgcmVzdWx0IHRv
IHRoaXMgTWVzc2FnZSBvYmplY3QuCkBAIC05MTgsNTUgKzk3NiwyNiBAQCBNZXNzYWdlJiBNZXNz
YWdlOjpvcGVyYXRvciA8PChjb25zdCA6OndzdHJpbmcmIHdzdHIpIHsKIH0KICNlbmRpZiAgLy8g
R1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCiAKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIEZv
cm1hdHMgYSB2YWx1ZSB0byBiZSB1c2VkIGluIGEgZmFpbHVyZSBtZXNzYWdlLgotCi0vLyBGb3Ig
YSBjaGFyIHZhbHVlLCB3ZSBwcmludCBpdCBhcyBhIEMrKyBjaGFyIGxpdGVyYWwgYW5kIGFzIGFu
Ci0vLyB1bnNpZ25lZCBpbnRlZ2VyIChib3RoIGluIGRlY2ltYWwgYW5kIGluIGhleGFkZWNpbWFs
KS4KLVN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjaGFyIGNoKSB7Ci0gIGNvbnN0IHVu
c2lnbmVkIGludCBjaF9hc191aW50ID0gY2g7Ci0gIC8vIEEgU3RyaW5nIG9iamVjdCBjYW5ub3Qg
Y29udGFpbiAnXDAnLCBzbyB3ZSBwcmludCAiXFwwIiB3aGVuIGNoIGlzCi0gIC8vICdcMCcuCi0g
IHJldHVybiBTdHJpbmc6OkZvcm1hdCgiJyVzJyAoJXUsIDB4JVgpIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNoID8gU3RyaW5nOjpGb3JtYXQoIiVjIiwgY2gpLmNfc3RyKCkgOiAiXFwwIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNoX2FzX3VpbnQsIGNoX2FzX3VpbnQpOwotfQotCi0v
LyBGb3IgYSB3Y2hhcl90IHZhbHVlLCB3ZSBwcmludCBpdCBhcyBhIEMrKyB3Y2hhcl90IGxpdGVy
YWwgYW5kIGFzIGFuCi0vLyB1bnNpZ25lZCBpbnRlZ2VyIChib3RoIGluIGRlY2ltYWwgYW5kIGlu
IGhleGlkZWNpbWFsKS4KLVN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZSh3Y2hhcl90IHdj
aGFyKSB7Ci0gIC8vIFRoZSBDKysgc3RhbmRhcmQgZG9lc24ndCBzcGVjaWZ5IHRoZSBleGFjdCBz
aXplIG9mIHRoZSB3Y2hhcl90Ci0gIC8vIHR5cGUuICBJdCBqdXN0IHNheXMgdGhhdCBpdCBzaGFs
bCBoYXZlIHRoZSBzYW1lIHNpemUgYXMgYW5vdGhlcgotICAvLyBpbnRlZ3JhbCB0eXBlLCBjYWxs
ZWQgaXRzIHVuZGVybHlpbmcgdHlwZS4KLSAgLy8KLSAgLy8gVGhlcmVmb3JlLCBpbiBvcmRlciB0
byBwcmludCBhIHdjaGFyX3QgdmFsdWUgaW4gdGhlIG51bWVyaWMgZm9ybSwKLSAgLy8gd2UgZmly
c3QgY29udmVydCBpdCB0byB0aGUgbGFyZ2VzdCBpbnRlZ3JhbCB0eXBlIChVSW50NjQpIGFuZAot
ICAvLyB0aGVuIHByaW50IHRoZSBjb252ZXJ0ZWQgdmFsdWUuCi0gIC8vCi0gIC8vIFdlIHVzZSBz
dHJlYW1pbmcgdG8gcHJpbnQgdGhlIHZhbHVlIGFzICIlbGx1IiBkb2Vzbid0IHdvcmsKLSAgLy8g
Y29ycmVjdGx5IHdpdGggTVNWQyA3LjEuCi0gIGNvbnN0IFVJbnQ2NCB3Y2hhcl9hc191aW50NjQg
PSB3Y2hhcjsKLSAgTWVzc2FnZSBtc2c7Ci0gIC8vIEEgU3RyaW5nIG9iamVjdCBjYW5ub3QgY29u
dGFpbiAnXDAnLCBzbyB3ZSBwcmludCAiXFwwIiB3aGVuIHdjaGFyIGlzCi0gIC8vIEwnXDAnLgot
ICBjaGFyIGJ1ZmZlclszMl07ICAvLyBDb2RlUG9pbnRUb1V0ZjggcmVxdWlyZXMgYSBidWZmZXIg
dGhhdCBiaWcuCi0gIG1zZyA8PCAiTCciCi0gICAgICA8PCAod2NoYXIgPyBDb2RlUG9pbnRUb1V0
Zjgoc3RhdGljX2Nhc3Q8VUludDMyPih3Y2hhciksIGJ1ZmZlcikgOiAiXFwwIikKLSAgICAgIDw8
ICInICgiIDw8IHdjaGFyX2FzX3VpbnQ2NCA8PCAiLCAweCIgPDwgOjpzdGQ6OnNldGJhc2UoMTYp
Ci0gICAgICA8PCB3Y2hhcl9hc191aW50NjQgPDwgIikiOwotICByZXR1cm4gbXNnLkdldFN0cmlu
ZygpOworLy8gR2V0cyB0aGUgdGV4dCBzdHJlYW1lZCB0byB0aGlzIG9iamVjdCBzbyBmYXIgYXMg
YW4gc3RkOjpzdHJpbmcuCisvLyBFYWNoICdcMCcgY2hhcmFjdGVyIGluIHRoZSBidWZmZXIgaXMg
cmVwbGFjZWQgd2l0aCAiXFwwIi4KK3N0ZDo6c3RyaW5nIE1lc3NhZ2U6OkdldFN0cmluZygpIGNv
bnN0IHsKKyAgcmV0dXJuIGludGVybmFsOjpTdHJpbmdTdHJlYW1Ub1N0cmluZyhzc18uZ2V0KCkp
OwogfQogCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQogLy8gQXNzZXJ0aW9uUmVzdWx0IGNv
bnN0cnVjdG9ycy4KIC8vIFVzZWQgaW4gRVhQRUNUX1RSVUUvRkFMU0UoYXNzZXJ0aW9uX3Jlc3Vs
dCkuCiBBc3NlcnRpb25SZXN1bHQ6OkFzc2VydGlvblJlc3VsdChjb25zdCBBc3NlcnRpb25SZXN1
bHQmIG90aGVyKQogICAgIDogc3VjY2Vzc18ob3RoZXIuc3VjY2Vzc18pLAogICAgICAgbWVzc2Fn
ZV8ob3RoZXIubWVzc2FnZV8uZ2V0KCkgIT0gTlVMTCA/Ci0gICAgICAgICAgICAgICBuZXcgaW50
ZXJuYWw6OlN0cmluZygqb3RoZXIubWVzc2FnZV8pIDoKLSAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PGludGVybmFsOjpTdHJpbmcqPihOVUxMKSkgeworICAgICAgICAgICAgICAgbmV3IDo6c3Rk
OjpzdHJpbmcoKm90aGVyLm1lc3NhZ2VfKSA6CisgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDwg
OjpzdGQ6OnN0cmluZyo+KE5VTEwpKSB7Cit9CisKKy8vIFN3YXBzIHR3byBBc3NlcnRpb25SZXN1
bHRzLgordm9pZCBBc3NlcnRpb25SZXN1bHQ6OnN3YXAoQXNzZXJ0aW9uUmVzdWx0JiBvdGhlcikg
eworICB1c2luZyBzdGQ6OnN3YXA7CisgIHN3YXAoc3VjY2Vzc18sIG90aGVyLnN1Y2Nlc3NfKTsK
KyAgc3dhcChtZXNzYWdlXywgb3RoZXIubWVzc2FnZV8pOwogfQogCiAvLyBSZXR1cm5zIHRoZSBh
c3NlcnRpb24ncyBuZWdhdGlvbi4gVXNlZCB3aXRoIEVYUEVDVC9BU1NFUlRfRkFMU0UuCkBAIC05
OTUsNiArMTAyNCwyNzYgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvbkZhaWx1cmUoY29uc3Qg
TWVzc2FnZSYgbWVzc2FnZSkgewogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCituYW1lc3BhY2Ug
ZWRpdF9kaXN0YW5jZSB7CitzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gQ2FsY3VsYXRlT3B0aW1hbEVk
aXRzKGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIGxlZnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIHJpZ2h0
KSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGRvdWJsZT4gPiBjb3N0cygKKyAgICAgIGxl
ZnQuc2l6ZSgpICsgMSwgc3RkOjp2ZWN0b3I8ZG91YmxlPihyaWdodC5zaXplKCkgKyAxKSk7Cisg
IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPEVkaXRUeXBlPiA+IGJlc3RfbW92ZSgKKyAgICAgIGxl
ZnQuc2l6ZSgpICsgMSwgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+KHJpZ2h0LnNpemUoKSArIDEpKTsK
KworICAvLyBQb3B1bGF0ZSBmb3IgZW1wdHkgcmlnaHQuCisgIGZvciAoc2l6ZV90IGxfaSA9IDA7
IGxfaSA8IGNvc3RzLnNpemUoKTsgKytsX2kpIHsKKyAgICBjb3N0c1tsX2ldWzBdID0gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihsX2kpOworICAgIGJlc3RfbW92ZVtsX2ldWzBdID0ga1JlbW92ZTsKKyAg
fQorICAvLyBQb3B1bGF0ZSBmb3IgZW1wdHkgbGVmdC4KKyAgZm9yIChzaXplX3Qgcl9pID0gMTsg
cl9pIDwgY29zdHNbMF0uc2l6ZSgpOyArK3JfaSkgeworICAgIGNvc3RzWzBdW3JfaV0gPSBzdGF0
aWNfY2FzdDxkb3VibGU+KHJfaSk7CisgICAgYmVzdF9tb3ZlWzBdW3JfaV0gPSBrQWRkOworICB9
CisKKyAgZm9yIChzaXplX3QgbF9pID0gMDsgbF9pIDwgbGVmdC5zaXplKCk7ICsrbF9pKSB7Cisg
ICAgZm9yIChzaXplX3Qgcl9pID0gMDsgcl9pIDwgcmlnaHQuc2l6ZSgpOyArK3JfaSkgeworICAg
ICAgaWYgKGxlZnRbbF9pXSA9PSByaWdodFtyX2ldKSB7CisgICAgICAgIC8vIEZvdW5kIGEgbWF0
Y2guIENvbnN1bWUgaXQuCisgICAgICAgIGNvc3RzW2xfaSArIDFdW3JfaSArIDFdID0gY29zdHNb
bF9pXVtyX2ldOworICAgICAgICBiZXN0X21vdmVbbF9pICsgMV1bcl9pICsgMV0gPSBrTWF0Y2g7
CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorCisgICAgICBjb25zdCBkb3VibGUgYWRkID0g
Y29zdHNbbF9pICsgMV1bcl9pXTsKKyAgICAgIGNvbnN0IGRvdWJsZSByZW1vdmUgPSBjb3N0c1ts
X2ldW3JfaSArIDFdOworICAgICAgY29uc3QgZG91YmxlIHJlcGxhY2UgPSBjb3N0c1tsX2ldW3Jf
aV07CisgICAgICBpZiAoYWRkIDwgcmVtb3ZlICYmIGFkZCA8IHJlcGxhY2UpIHsKKyAgICAgICAg
Y29zdHNbbF9pICsgMV1bcl9pICsgMV0gPSBhZGQgKyAxOworICAgICAgICBiZXN0X21vdmVbbF9p
ICsgMV1bcl9pICsgMV0gPSBrQWRkOworICAgICAgfSBlbHNlIGlmIChyZW1vdmUgPCBhZGQgJiYg
cmVtb3ZlIDwgcmVwbGFjZSkgeworICAgICAgICBjb3N0c1tsX2kgKyAxXVtyX2kgKyAxXSA9IHJl
bW92ZSArIDE7CisgICAgICAgIGJlc3RfbW92ZVtsX2kgKyAxXVtyX2kgKyAxXSA9IGtSZW1vdmU7
CisgICAgICB9IGVsc2UgeworICAgICAgICAvLyBXZSBtYWtlIHJlcGxhY2UgYSBsaXR0bGUgbW9y
ZSBleHBlbnNpdmUgdGhhbiBhZGQvcmVtb3ZlIHRvIGxvd2VyCisgICAgICAgIC8vIHRoZWlyIHBy
aW9yaXR5LgorICAgICAgICBjb3N0c1tsX2kgKyAxXVtyX2kgKyAxXSA9IHJlcGxhY2UgKyAxLjAw
MDAxOworICAgICAgICBiZXN0X21vdmVbbF9pICsgMV1bcl9pICsgMV0gPSBrUmVwbGFjZTsKKyAg
ICAgIH0KKyAgICB9CisgIH0KKworICAvLyBSZWNvbnN0cnVjdCB0aGUgYmVzdCBwYXRoLiBXZSBk
byBpdCBpbiByZXZlcnNlIG9yZGVyLgorICBzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gYmVzdF9wYXRo
OworICBmb3IgKHNpemVfdCBsX2kgPSBsZWZ0LnNpemUoKSwgcl9pID0gcmlnaHQuc2l6ZSgpOyBs
X2kgPiAwIHx8IHJfaSA+IDA7KSB7CisgICAgRWRpdFR5cGUgbW92ZSA9IGJlc3RfbW92ZVtsX2ld
W3JfaV07CisgICAgYmVzdF9wYXRoLnB1c2hfYmFjayhtb3ZlKTsKKyAgICBsX2kgLT0gbW92ZSAh
PSBrQWRkOworICAgIHJfaSAtPSBtb3ZlICE9IGtSZW1vdmU7CisgIH0KKyAgc3RkOjpyZXZlcnNl
KGJlc3RfcGF0aC5iZWdpbigpLCBiZXN0X3BhdGguZW5kKCkpOworICByZXR1cm4gYmVzdF9wYXRo
OworfQorCituYW1lc3BhY2UgeworCisvLyBIZWxwZXIgY2xhc3MgdG8gY29udmVydCBzdHJpbmcg
aW50byBpZHMgd2l0aCBkZWR1cGxpY2F0aW9uLgorY2xhc3MgSW50ZXJuYWxTdHJpbmdzIHsKKyBw
dWJsaWM6CisgIHNpemVfdCBHZXRJZChjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7CisgICAgSWRN
YXA6Oml0ZXJhdG9yIGl0ID0gaWRzXy5maW5kKHN0cik7CisgICAgaWYgKGl0ICE9IGlkc18uZW5k
KCkpIHJldHVybiBpdC0+c2Vjb25kOworICAgIHNpemVfdCBpZCA9IGlkc18uc2l6ZSgpOworICAg
IHJldHVybiBpZHNfW3N0cl0gPSBpZDsKKyAgfQorCisgcHJpdmF0ZToKKyAgdHlwZWRlZiBzdGQ6
Om1hcDxzdGQ6OnN0cmluZywgc2l6ZV90PiBJZE1hcDsKKyAgSWRNYXAgaWRzXzsKK307CisKK30g
IC8vIG5hbWVzcGFjZQorCitzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gQ2FsY3VsYXRlT3B0aW1hbEVk
aXRzKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgbGVmdCwKKyAgICBjb25z
dCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHJpZ2h0KSB7CisgIHN0ZDo6dmVjdG9yPHNpemVf
dD4gbGVmdF9pZHMsIHJpZ2h0X2lkczsKKyAgeworICAgIEludGVybmFsU3RyaW5ncyBpbnRlcm5f
dGFibGU7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZWZ0LnNpemUoKTsgKytpKSB7Cisg
ICAgICBsZWZ0X2lkcy5wdXNoX2JhY2soaW50ZXJuX3RhYmxlLkdldElkKGxlZnRbaV0pKTsKKyAg
ICB9CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByaWdodC5zaXplKCk7ICsraSkgeworICAg
ICAgcmlnaHRfaWRzLnB1c2hfYmFjayhpbnRlcm5fdGFibGUuR2V0SWQocmlnaHRbaV0pKTsKKyAg
ICB9CisgIH0KKyAgcmV0dXJuIENhbGN1bGF0ZU9wdGltYWxFZGl0cyhsZWZ0X2lkcywgcmlnaHRf
aWRzKTsKK30KKworbmFtZXNwYWNlIHsKKworLy8gSGVscGVyIGNsYXNzIHRoYXQgaG9sZHMgdGhl
IHN0YXRlIGZvciBvbmUgaHVuayBhbmQgcHJpbnRzIGl0IG91dCB0byB0aGUKKy8vIHN0cmVhbS4K
Ky8vIEl0IHJlb3JkZXJzIGFkZHMvcmVtb3ZlcyB3aGVuIHBvc3NpYmxlIHRvIGdyb3VwIGFsbCBy
ZW1vdmVzIGJlZm9yZSBhbGwKKy8vIGFkZHMuIEl0IGFsc28gYWRkcyB0aGUgaHVuayBoZWFkZXIg
YmVmb3JlIHByaW50aW50IGludG8gdGhlIHN0cmVhbS4KK2NsYXNzIEh1bmsgeworIHB1YmxpYzoK
KyAgSHVuayhzaXplX3QgbGVmdF9zdGFydCwgc2l6ZV90IHJpZ2h0X3N0YXJ0KQorICAgICAgOiBs
ZWZ0X3N0YXJ0XyhsZWZ0X3N0YXJ0KSwKKyAgICAgICAgcmlnaHRfc3RhcnRfKHJpZ2h0X3N0YXJ0
KSwKKyAgICAgICAgYWRkc18oKSwKKyAgICAgICAgcmVtb3Zlc18oKSwKKyAgICAgICAgY29tbW9u
XygpIHt9CisKKyAgdm9pZCBQdXNoTGluZShjaGFyIGVkaXQsIGNvbnN0IGNoYXIqIGxpbmUpIHsK
KyAgICBzd2l0Y2ggKGVkaXQpIHsKKyAgICAgIGNhc2UgJyAnOgorICAgICAgICArK2NvbW1vbl87
CisgICAgICAgIEZsdXNoRWRpdHMoKTsKKyAgICAgICAgaHVua18ucHVzaF9iYWNrKHN0ZDo6bWFr
ZV9wYWlyKCcgJywgbGluZSkpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJy0nOgorICAg
ICAgICArK3JlbW92ZXNfOworICAgICAgICBodW5rX3JlbW92ZXNfLnB1c2hfYmFjayhzdGQ6Om1h
a2VfcGFpcignLScsIGxpbmUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICcrJzoKKyAg
ICAgICAgKythZGRzXzsKKyAgICAgICAgaHVua19hZGRzXy5wdXNoX2JhY2soc3RkOjptYWtlX3Bh
aXIoJysnLCBsaW5lKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgfQorCisgIHZvaWQgUHJp
bnRUbyhzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgUHJpbnRIZWFkZXIob3MpOworICAgIEZsdXNo
RWRpdHMoKTsKKyAgICBmb3IgKHN0ZDo6bGlzdDxzdGQ6OnBhaXI8Y2hhciwgY29uc3QgY2hhcio+
ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0KKyAgICAgICAgICAgICBodW5rXy5iZWdpbigpOworICAg
ICAgICAgaXQgIT0gaHVua18uZW5kKCk7ICsraXQpIHsKKyAgICAgICpvcyA8PCBpdC0+Zmlyc3Qg
PDwgaXQtPnNlY29uZCA8PCAiXG4iOworICAgIH0KKyAgfQorCisgIGJvb2wgaGFzX2VkaXRzKCkg
Y29uc3QgeyByZXR1cm4gYWRkc18gfHwgcmVtb3Zlc187IH0KKworIHByaXZhdGU6CisgIHZvaWQg
Rmx1c2hFZGl0cygpIHsKKyAgICBodW5rXy5zcGxpY2UoaHVua18uZW5kKCksIGh1bmtfcmVtb3Zl
c18pOworICAgIGh1bmtfLnNwbGljZShodW5rXy5lbmQoKSwgaHVua19hZGRzXyk7CisgIH0KKwor
ICAvLyBQcmludCBhIHVuaWZpZWQgZGlmZiBoZWFkZXIgZm9yIG9uZSBodW5rLgorICAvLyBUaGUg
Zm9ybWF0IGlzCisgIC8vICAgIkBAIC08bGVmdF9zdGFydD4sPGxlZnRfbGVuZ3RoPiArPHJpZ2h0
X3N0YXJ0Piw8cmlnaHRfbGVuZ3RoPiBAQCIKKyAgLy8gd2hlcmUgdGhlIGxlZnQvcmlnaHQgcGFy
dHMgYXJlIG9tbWl0dGVkIGlmIHVubmVjZXNzYXJ5LgorICB2b2lkIFByaW50SGVhZGVyKHN0ZDo6
b3N0cmVhbSogc3MpIGNvbnN0IHsKKyAgICAqc3MgPDwgIkBAICI7CisgICAgaWYgKHJlbW92ZXNf
KSB7CisgICAgICAqc3MgPDwgIi0iIDw8IGxlZnRfc3RhcnRfIDw8ICIsIiA8PCAocmVtb3Zlc18g
KyBjb21tb25fKTsKKyAgICB9CisgICAgaWYgKHJlbW92ZXNfICYmIGFkZHNfKSB7CisgICAgICAq
c3MgPDwgIiAiOworICAgIH0KKyAgICBpZiAoYWRkc18pIHsKKyAgICAgICpzcyA8PCAiKyIgPDwg
cmlnaHRfc3RhcnRfIDw8ICIsIiA8PCAoYWRkc18gKyBjb21tb25fKTsKKyAgICB9CisgICAgKnNz
IDw8ICIgQEBcbiI7CisgIH0KKworICBzaXplX3QgbGVmdF9zdGFydF8sIHJpZ2h0X3N0YXJ0XzsK
KyAgc2l6ZV90IGFkZHNfLCByZW1vdmVzXywgY29tbW9uXzsKKyAgc3RkOjpsaXN0PHN0ZDo6cGFp
cjxjaGFyLCBjb25zdCBjaGFyKj4gPiBodW5rXywgaHVua19hZGRzXywgaHVua19yZW1vdmVzXzsK
K307CisKK30gIC8vIG5hbWVzcGFjZQorCisvLyBDcmVhdGUgYSBsaXN0IG9mIGRpZmYgaHVua3Mg
aW4gVW5pZmllZCBkaWZmIGZvcm1hdC4KKy8vIEVhY2ggaHVuayBoYXMgYSBoZWFkZXIgZ2VuZXJh
dGVkIGJ5IFByaW50SGVhZGVyIGFib3ZlIHBsdXMgYSBib2R5IHdpdGgKKy8vIGxpbmVzIHByZWZp
eGVkIHdpdGggJyAnIGZvciBubyBjaGFuZ2UsICctJyBmb3IgZGVsZXRpb24gYW5kICcrJyBmb3IK
Ky8vIGFkZGl0aW9uLgorLy8gJ2NvbnRleHQnIHJlcHJlc2VudHMgdGhlIGRlc2lyZWQgdW5jaGFu
Z2VkIHByZWZpeC9zdWZmaXggYXJvdW5kIHRoZSBkaWZmLgorLy8gSWYgdHdvIGh1bmtzIGFyZSBj
bG9zZSBlbm91Z2ggdGhhdCB0aGVpciBjb250ZXh0cyBvdmVybGFwLCB0aGVuIHRoZXkgYXJlCisv
LyBqb2luZWQgaW50byBvbmUgaHVuay4KK3N0ZDo6c3RyaW5nIENyZWF0ZVVuaWZpZWREaWZmKGNv
bnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgbGVmdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgcmlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY29udGV4dCkgeworICBjb25zdCBzdGQ6OnZl
Y3RvcjxFZGl0VHlwZT4gZWRpdHMgPSBDYWxjdWxhdGVPcHRpbWFsRWRpdHMobGVmdCwgcmlnaHQp
OworCisgIHNpemVfdCBsX2kgPSAwLCByX2kgPSAwLCBlZGl0X2kgPSAwOworICBzdGQ6OnN0cmlu
Z3N0cmVhbSBzczsKKyAgd2hpbGUgKGVkaXRfaSA8IGVkaXRzLnNpemUoKSkgeworICAgIC8vIEZp
bmQgZmlyc3QgZWRpdC4KKyAgICB3aGlsZSAoZWRpdF9pIDwgZWRpdHMuc2l6ZSgpICYmIGVkaXRz
W2VkaXRfaV0gPT0ga01hdGNoKSB7CisgICAgICArK2xfaTsKKyAgICAgICsrcl9pOworICAgICAg
KytlZGl0X2k7CisgICAgfQorCisgICAgLy8gRmluZCB0aGUgZmlyc3QgbGluZSB0byBpbmNsdWRl
IGluIHRoZSBodW5rLgorICAgIGNvbnN0IHNpemVfdCBwcmVmaXhfY29udGV4dCA9IHN0ZDo6bWlu
KGxfaSwgY29udGV4dCk7CisgICAgSHVuayBodW5rKGxfaSAtIHByZWZpeF9jb250ZXh0ICsgMSwg
cl9pIC0gcHJlZml4X2NvbnRleHQgKyAxKTsKKyAgICBmb3IgKHNpemVfdCBpID0gcHJlZml4X2Nv
bnRleHQ7IGkgPiAwOyAtLWkpIHsKKyAgICAgIGh1bmsuUHVzaExpbmUoJyAnLCBsZWZ0W2xfaSAt
IGldLmNfc3RyKCkpOworICAgIH0KKworICAgIC8vIEl0ZXJhdGUgdGhlIGVkaXRzIHVudGlsIHdl
IGZvdW5kIGVub3VnaCBzdWZmaXggZm9yIHRoZSBodW5rIG9yIHRoZSBpbnB1dAorICAgIC8vIGlz
IG92ZXIuCisgICAgc2l6ZV90IG5fc3VmZml4ID0gMDsKKyAgICBmb3IgKDsgZWRpdF9pIDwgZWRp
dHMuc2l6ZSgpOyArK2VkaXRfaSkgeworICAgICAgaWYgKG5fc3VmZml4ID49IGNvbnRleHQpIHsK
KyAgICAgICAgLy8gQ29udGludWUgb25seSBpZiB0aGUgbmV4dCBodW5rIGlzIHZlcnkgY2xvc2Uu
CisgICAgICAgIHN0ZDo6dmVjdG9yPEVkaXRUeXBlPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBlZGl0
cy5iZWdpbigpICsgZWRpdF9pOworICAgICAgICB3aGlsZSAoaXQgIT0gZWRpdHMuZW5kKCkgJiYg
Kml0ID09IGtNYXRjaCkgKytpdDsKKyAgICAgICAgaWYgKGl0ID09IGVkaXRzLmVuZCgpIHx8IChp
dCAtIGVkaXRzLmJlZ2luKCkpIC0gZWRpdF9pID49IGNvbnRleHQpIHsKKyAgICAgICAgICAvLyBU
aGVyZSBpcyBubyBuZXh0IGVkaXQgb3IgaXQgaXMgdG9vIGZhciBhd2F5LgorICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIEVkaXRUeXBlIGVkaXQgPSBlZGl0c1tl
ZGl0X2ldOworICAgICAgLy8gUmVzZXQgY291bnQgd2hlbiBhIG5vbiBtYXRjaCBpcyBmb3VuZC4K
KyAgICAgIG5fc3VmZml4ID0gZWRpdCA9PSBrTWF0Y2ggPyBuX3N1ZmZpeCArIDEgOiAwOworCisg
ICAgICBpZiAoZWRpdCA9PSBrTWF0Y2ggfHwgZWRpdCA9PSBrUmVtb3ZlIHx8IGVkaXQgPT0ga1Jl
cGxhY2UpIHsKKyAgICAgICAgaHVuay5QdXNoTGluZShlZGl0ID09IGtNYXRjaCA/ICcgJyA6ICct
JywgbGVmdFtsX2ldLmNfc3RyKCkpOworICAgICAgfQorICAgICAgaWYgKGVkaXQgPT0ga0FkZCB8
fCBlZGl0ID09IGtSZXBsYWNlKSB7CisgICAgICAgIGh1bmsuUHVzaExpbmUoJysnLCByaWdodFty
X2ldLmNfc3RyKCkpOworICAgICAgfQorCisgICAgICAvLyBBZHZhbmNlIGluZGljZXMsIGRlcGVu
ZGluZyBvbiBlZGl0IHR5cGUuCisgICAgICBsX2kgKz0gZWRpdCAhPSBrQWRkOworICAgICAgcl9p
ICs9IGVkaXQgIT0ga1JlbW92ZTsKKyAgICB9CisKKyAgICBpZiAoIWh1bmsuaGFzX2VkaXRzKCkp
IHsKKyAgICAgIC8vIFdlIGFyZSBkb25lLiBXZSBkb24ndCB3YW50IHRoaXMgaHVuay4KKyAgICAg
IGJyZWFrOworICAgIH0KKworICAgIGh1bmsuUHJpbnRUbygmc3MpOworICB9CisgIHJldHVybiBz
cy5zdHIoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGVkaXRfZGlzdGFuY2UKKworbmFtZXNwYWNl
IHsKKworLy8gVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFsdWVzIHJlY2VpdmVk
IGluIEVxRmFpbHVyZSgpIGFyZSBhbHJlYWR5CisvLyBlc2NhcGVkLiBTcGxpdCB0aGVtIG9uIGVz
Y2FwZWQgJ1xuJyBib3VuZGFyaWVzLiBMZWF2ZSBhbGwgb3RoZXIgZXNjYXBlZAorLy8gY2hhcmFj
dGVycyB0aGUgc2FtZS4KK3N0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBTcGxpdEVzY2FwZWRTdHJp
bmcoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgeworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4g
bGluZXM7CisgIHNpemVfdCBzdGFydCA9IDAsIGVuZCA9IHN0ci5zaXplKCk7CisgIGlmIChlbmQg
PiAyICYmIHN0clswXSA9PSAnIicgJiYgc3RyW2VuZCAtIDFdID09ICciJykgeworICAgICsrc3Rh
cnQ7CisgICAgLS1lbmQ7CisgIH0KKyAgYm9vbCBlc2NhcGVkID0gZmFsc2U7CisgIGZvciAoc2l6
ZV90IGkgPSBzdGFydDsgaSArIDEgPCBlbmQ7ICsraSkgeworICAgIGlmIChlc2NhcGVkKSB7Cisg
ICAgICBlc2NhcGVkID0gZmFsc2U7CisgICAgICBpZiAoc3RyW2ldID09ICduJykgeworICAgICAg
ICBsaW5lcy5wdXNoX2JhY2soc3RyLnN1YnN0cihzdGFydCwgaSAtIHN0YXJ0IC0gMSkpOworICAg
ICAgICBzdGFydCA9IGkgKyAxOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBlc2NhcGVk
ID0gc3RyW2ldID09ICdcXCc7CisgICAgfQorICB9CisgIGxpbmVzLnB1c2hfYmFjayhzdHIuc3Vi
c3RyKHN0YXJ0LCBlbmQgLSBzdGFydCkpOworICByZXR1cm4gbGluZXM7Cit9CisKK30gIC8vIG5h
bWVzcGFjZQorCiAvLyBDb25zdHJ1Y3RzIGFuZCByZXR1cm5zIHRoZSBtZXNzYWdlIGZvciBhbiBl
cXVhbGl0eSBhc3NlcnRpb24KIC8vIChlLmcuIEFTU0VSVF9FUSwgRVhQRUNUX1NUUkVRLCBldGMp
IGZhaWx1cmUuCiAvLwpAQCAtMTAwMiw0MSArMTMwMSw1MyBAQCBuYW1lc3BhY2UgaW50ZXJuYWwg
ewogLy8gYW5kIHRoZWlyIHZhbHVlcywgYXMgc3RyaW5ncy4gIEZvciBleGFtcGxlLCBmb3IgQVNT
RVJUX0VRKGZvbywgYmFyKQogLy8gd2hlcmUgZm9vIGlzIDUgYW5kIGJhciBpcyA2LCB3ZSBoYXZl
OgogLy8KLS8vICAgZXhwZWN0ZWRfZXhwcmVzc2lvbjogImZvbyIKLS8vICAgYWN0dWFsX2V4cHJl
c3Npb246ICAgImJhciIKLS8vICAgZXhwZWN0ZWRfdmFsdWU6ICAgICAgIjUiCi0vLyAgIGFjdHVh
bF92YWx1ZTogICAgICAgICI2IgorLy8gICBsaHNfZXhwcmVzc2lvbjogImZvbyIKKy8vICAgcmhz
X2V4cHJlc3Npb246ICJiYXIiCisvLyAgIGxoc192YWx1ZTogICAgICAiNSIKKy8vICAgcmhzX3Zh
bHVlOiAgICAgICI2IgogLy8KIC8vIFRoZSBpZ25vcmluZ19jYXNlIHBhcmFtZXRlciBpcyB0cnVl
IGlmZiB0aGUgYXNzZXJ0aW9uIGlzIGEKLS8vICpfU1RSQ0FTRUVRKi4gIFdoZW4gaXQncyB0cnVl
LCB0aGUgc3RyaW5nICIgKGlnbm9yaW5nIGNhc2UpIiB3aWxsCisvLyAqX1NUUkNBU0VFUSouICBX
aGVuIGl0J3MgdHJ1ZSwgdGhlIHN0cmluZyAiSWdub3JpbmcgY2FzZSIgd2lsbAogLy8gYmUgaW5z
ZXJ0ZWQgaW50byB0aGUgbWVzc2FnZS4KLUFzc2VydGlvblJlc3VsdCBFcUZhaWx1cmUoY29uc3Qg
Y2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFN0cmluZyYgZXhwZWN0ZWRfdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFN0cmluZyYgYWN0dWFsX3ZhbHVlLAorQXNzZXJ0aW9uUmVzdWx0IEVxRmFpbHVyZShjb25z
dCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBsaHNfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiByaHNfdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdu
b3JpbmdfY2FzZSkgewogICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8ICJWYWx1ZSBvZjogIiA8PCBh
Y3R1YWxfZXhwcmVzc2lvbjsKLSAgaWYgKGFjdHVhbF92YWx1ZSAhPSBhY3R1YWxfZXhwcmVzc2lv
bikgewotICAgIG1zZyA8PCAiXG4gIEFjdHVhbDogIiA8PCBhY3R1YWxfdmFsdWU7CisgIG1zZyA8
PCAiICAgICAgRXhwZWN0ZWQ6ICIgPDwgbGhzX2V4cHJlc3Npb247CisgIGlmIChsaHNfdmFsdWUg
IT0gbGhzX2V4cHJlc3Npb24pIHsKKyAgICBtc2cgPDwgIlxuICAgICAgV2hpY2ggaXM6ICIgPDwg
bGhzX3ZhbHVlOworICB9CisgIG1zZyA8PCAiXG5UbyBiZSBlcXVhbCB0bzogIiA8PCByaHNfZXhw
cmVzc2lvbjsKKyAgaWYgKHJoc192YWx1ZSAhPSByaHNfZXhwcmVzc2lvbikgeworICAgIG1zZyA8
PCAiXG4gICAgICBXaGljaCBpczogIiA8PCByaHNfdmFsdWU7CiAgIH0KIAotICBtc2cgPDwgIlxu
RXhwZWN0ZWQ6ICIgPDwgZXhwZWN0ZWRfZXhwcmVzc2lvbjsKICAgaWYgKGlnbm9yaW5nX2Nhc2Up
IHsKLSAgICBtc2cgPDwgIiAoaWdub3JpbmcgY2FzZSkiOworICAgIG1zZyA8PCAiXG5JZ25vcmlu
ZyBjYXNlIjsKICAgfQotICBpZiAoZXhwZWN0ZWRfdmFsdWUgIT0gZXhwZWN0ZWRfZXhwcmVzc2lv
bikgewotICAgIG1zZyA8PCAiXG5XaGljaCBpczogIiA8PCBleHBlY3RlZF92YWx1ZTsKKworICBp
ZiAoIWxoc192YWx1ZS5lbXB0eSgpICYmICFyaHNfdmFsdWUuZW1wdHkoKSkgeworICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBsaHNfbGluZXMgPQorICAgICAgICBTcGxpdEVzY2Fw
ZWRTdHJpbmcobGhzX3ZhbHVlKTsKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4g
cmhzX2xpbmVzID0KKyAgICAgICAgU3BsaXRFc2NhcGVkU3RyaW5nKHJoc192YWx1ZSk7CisgICAg
aWYgKGxoc19saW5lcy5zaXplKCkgPiAxIHx8IHJoc19saW5lcy5zaXplKCkgPiAxKSB7CisgICAg
ICBtc2cgPDwgIlxuV2l0aCBkaWZmOlxuIgorICAgICAgICAgIDw8IGVkaXRfZGlzdGFuY2U6OkNy
ZWF0ZVVuaWZpZWREaWZmKGxoc19saW5lcywgcmhzX2xpbmVzKTsKKyAgICB9CiAgIH0KIAotICBy
ZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgp
IDw8IG1zZzsKIH0KIAogLy8gQ29uc3RydWN0cyBhIGZhaWx1cmUgbWVzc2FnZSBmb3IgQm9vbGVh
biBhc3NlcnRpb25zIHN1Y2ggYXMgRVhQRUNUX1RSVUUuCi1TdHJpbmcgR2V0Qm9vbEFzc2VydGlv
bkZhaWx1cmVNZXNzYWdlKGNvbnN0IEFzc2VydGlvblJlc3VsdCYgYXNzZXJ0aW9uX3Jlc3VsdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwcmVz
c2lvbl90ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBhY3R1YWxfcHJlZGljYXRlX3ZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBleHBlY3RlZF9wcmVkaWNhdGVfdmFsdWUpIHsKK3N0ZDo6
c3RyaW5nIEdldEJvb2xBc3NlcnRpb25GYWlsdXJlTWVzc2FnZSgKKyAgICBjb25zdCBBc3NlcnRp
b25SZXN1bHQmIGFzc2VydGlvbl9yZXN1bHQsCisgICAgY29uc3QgY2hhciogZXhwcmVzc2lvbl90
ZXh0LAorICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9wcmVkaWNhdGVfdmFsdWUsCisgICAgY29uc3Qg
Y2hhciogZXhwZWN0ZWRfcHJlZGljYXRlX3ZhbHVlKSB7CiAgIGNvbnN0IGNoYXIqIGFjdHVhbF9t
ZXNzYWdlID0gYXNzZXJ0aW9uX3Jlc3VsdC5tZXNzYWdlKCk7CiAgIE1lc3NhZ2UgbXNnOwogICBt
c2cgPDwgIlZhbHVlIG9mOiAiIDw8IGV4cHJlc3Npb25fdGV4dApAQCAtMTA1OSwxMyArMTM3MCwx
MiBAQCBBc3NlcnRpb25SZXN1bHQgRG91YmxlTmVhclByZWRGb3JtYXQoY29uc3QgY2hhciogZXhw
cjEsCiAKICAgLy8gVE9ETyh3YW4pOiBkbyBub3QgcHJpbnQgdGhlIHZhbHVlIG9mIGFuIGV4cHJl
c3Npb24gaWYgaXQncwogICAvLyBhbHJlYWR5IGEgbGl0ZXJhbC4KLSAgTWVzc2FnZSBtc2c7Ci0g
IG1zZyA8PCAiVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAiIDw8IGV4cHIxIDw8ICIgYW5kICIgPDwg
ZXhwcjIKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwgIlRoZSBkaWZmZXJl
bmNlIGJldHdlZW4gIiA8PCBleHByMSA8PCAiIGFuZCAiIDw8IGV4cHIyCiAgICAgICA8PCAiIGlz
ICIgPDwgZGlmZiA8PCAiLCB3aGljaCBleGNlZWRzICIgPDwgYWJzX2Vycm9yX2V4cHIgPDwgIiwg
d2hlcmVcbiIKICAgICAgIDw8IGV4cHIxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdmFsMSA8PCAi
LFxuIgogICAgICAgPDwgZXhwcjIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2YWwyIDw8ICIsIGFu
ZFxuIgogICAgICAgPDwgYWJzX2Vycm9yX2V4cHIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCBhYnNf
ZXJyb3IgPDwgIi4iOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogCiAKQEAg
LTEwOTAsMjAgKzE0MDAsMTggQEAgQXNzZXJ0aW9uUmVzdWx0IEZsb2F0aW5nUG9pbnRMRShjb25z
dCBjaGFyKiBleHByMSwKICAgLy8gdmFsMiBpcyBOYU4sIGFzIHRoZSBJRUVFIGZsb2F0aW5nLXBv
aW50IHN0YW5kYXJkIHJlcXVpcmVzIHRoYXQKICAgLy8gYW55IHByZWRpY2F0ZSBpbnZvbHZpbmcg
YSBOYU4gbXVzdCByZXR1cm4gZmFsc2UuCiAKLSAgU3RyU3RyZWFtIHZhbDFfc3M7CisgIDo6c3Rk
OjpzdHJpbmdzdHJlYW0gdmFsMV9zczsKICAgdmFsMV9zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihz
dGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+OjpkaWdpdHMxMCArIDIpCiAgICAgICAgICAgPDwg
dmFsMTsKIAotICBTdHJTdHJlYW0gdmFsMl9zczsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSB2YWwy
X3NzOwogICB2YWwyX3NzIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8
UmF3VHlwZT46OmRpZ2l0czEwICsgMikKICAgICAgICAgICA8PCB2YWwyOwogCi0gIE1lc3NhZ2Ug
bXNnOwotICBtc2cgPDwgIkV4cGVjdGVkOiAoIiA8PCBleHByMSA8PCAiKSA8PSAoIiA8PCBleHBy
MiA8PCAiKVxuIgotICAgICAgPDwgIiAgQWN0dWFsOiAiIDw8IFN0clN0cmVhbVRvU3RyaW5nKCZ2
YWwxX3NzKSA8PCAiIHZzICIKLSAgICAgIDw8IFN0clN0cmVhbVRvU3RyaW5nKCZ2YWwyX3NzKTsK
LQotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFp
bHVyZSgpCisgICAgICA8PCAiRXhwZWN0ZWQ6ICgiIDw8IGV4cHIxIDw8ICIpIDw9ICgiIDw8IGV4
cHIyIDw8ICIpXG4iCisgICAgICA8PCAiICBBY3R1YWw6ICIgPDwgU3RyaW5nU3RyZWFtVG9TdHJp
bmcoJnZhbDFfc3MpIDw8ICIgdnMgIgorICAgICAgPDwgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnZh
bDJfc3MpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKQEAgLTExMjYsMTggKzE0MzQs
MTggQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIAogLy8gVGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ig
e0FTU0VSVHxFWFBFQ1R9X0VRIHdpdGggaW50IG9yIGVudW0KIC8vIGFyZ3VtZW50cy4KLUFzc2Vy
dGlvblJlc3VsdCBDbXBIZWxwZXJFUShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgZXhwZWN0ZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBhY3R1YWwpIHsKLSAgaWYgKGV4cGVj
dGVkID09IGFjdHVhbCkgeworQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRKGNvbnN0IGNoYXIq
IGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQg
bGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgcmhzKSB7CisgIGlm
IChsaHMgPT0gcmhzKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQogCi0g
IHJldHVybiBFcUZhaWx1cmUoZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAg
ICBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2UoZXhwZWN0ZWQsIGFjdHVhbCksCi0gICAgICAgICAgICAgICAgICAg
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKGFjdHVhbCwgZXhwZWN0ZWQpLAorICBy
ZXR1cm4gRXFGYWlsdXJlKGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIHJoc19l
eHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJl
TWVzc2FnZShsaHMsIHJocyksCisgICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNv
bkZhaWx1cmVNZXNzYWdlKHJocywgbGhzKSwKICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CiB9
CiAKQEAgLTExNTAsMTEgKzE0NTgsMTAgQEAgQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlciMjb3Bf
bmFtZShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIsIFwKICAgaWYgKHZhbDEg
b3AgdmFsMikge1wKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpO1wKICAgfSBlbHNlIHtc
Ci0gICAgTWVzc2FnZSBtc2c7XAotICAgIG1zZyA8PCAiRXhwZWN0ZWQ6ICgiIDw8IGV4cHIxIDw8
ICIpICIgI29wICIgKCIgPDwgZXhwcjJcCisgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSBc
CisgICAgICAgIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgIiAjb3AgIiAoIiA8PCBl
eHByMlwKICAgICAgICAgPDwgIiksIGFjdHVhbDogIiA8PCBGb3JtYXRGb3JDb21wYXJpc29uRmFp
bHVyZU1lc3NhZ2UodmFsMSwgdmFsMilcCiAgICAgICAgIDw8ICIgdnMgIiA8PCBGb3JtYXRGb3JD
b21wYXJpc29uRmFpbHVyZU1lc3NhZ2UodmFsMiwgdmFsMSk7XAotICAgIHJldHVybiBBc3NlcnRp
b25GYWlsdXJlKG1zZyk7XAogICB9XAogfQogCkBAIC0xMTc3LDM0ICsxNDg0LDM0IEBAIEdURVNU
X0lNUExfQ01QX0hFTFBFUl8oR1QsID4gKQogI3VuZGVmIEdURVNUX0lNUExfQ01QX0hFTFBFUl8K
IAogLy8gVGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NUUkVRLgotQXNz
ZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4
cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhw
ZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFs
KSB7Ci0gIGlmIChTdHJpbmc6OkNTdHJpbmdFcXVhbHMoZXhwZWN0ZWQsIGFjdHVhbCkpIHsKK0Fz
c2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBsaHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzKSB7CisgIGlmIChTdHJp
bmc6OkNTdHJpbmdFcXVhbHMobGhzLCByaHMpKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nl
c3MoKTsKICAgfQogCi0gIHJldHVybiBFcUZhaWx1cmUoZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBT
dHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAgICAgICBT
dHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKGFjdHVhbCksCisgIHJldHVybiBFcUZhaWx1cmUobGhz
X2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAg
ICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhsaHMpLAorICAgICAgICAgICAgICAgICAgIFByaW50
VG9TdHJpbmcocmhzKSwKICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CiB9CiAKIC8vIFRoZSBo
ZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9TVFJDQVNFRVEuCi1Bc3NlcnRpb25S
ZXN1bHQgQ21wSGVscGVyU1RSQ0FTRUVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9l
eHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogYWN0dWFsKSB7Ci0gIGlmIChTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMo
ZXhwZWN0ZWQsIGFjdHVhbCkpIHsKK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJDQVNFRVEo
Y29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHJocykgeworICBpZiAoU3RyaW5nOjpDYXNlSW5zZW5zaXRp
dmVDU3RyaW5nRXF1YWxzKGxocywgcmhzKSkgewogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNz
KCk7CiAgIH0KIAotICByZXR1cm4gRXFGYWlsdXJlKGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAg
ICAgICAgICAgICAgICAgYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgU3Ry
aW5nOjpTaG93Q1N0cmluZ1F1b3RlZChleHBlY3RlZCksCi0gICAgICAgICAgICAgICAgICAgU3Ry
aW5nOjpTaG93Q1N0cmluZ1F1b3RlZChhY3R1YWwpLAorICByZXR1cm4gRXFGYWlsdXJlKGxoc19l
eHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIHJoc19leHByZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgIFByaW50VG9TdHJpbmcobGhzKSwKKyAgICAgICAgICAgICAgICAgICBQcmludFRv
U3RyaW5nKHJocyksCiAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7CiB9CiAKQEAgLTEyMTYsMTEg
KzE1MjMsOSBAQCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSTkUoY29uc3QgY2hhciogczFf
ZXhwcmVzc2lvbiwKICAgaWYgKCFTdHJpbmc6OkNTdHJpbmdFcXVhbHMoczEsIHMyKSkgewogICAg
IHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAgIH0gZWxzZSB7Ci0gICAgTWVzc2FnZSBtc2c7
Ci0gICAgbXNnIDw8ICJFeHBlY3RlZDogKCIgPDwgczFfZXhwcmVzc2lvbiA8PCAiKSAhPSAoIgot
ICAgICAgICA8PCBzMl9leHByZXNzaW9uIDw8ICIpLCBhY3R1YWw6IFwiIgotICAgICAgICA8PCBz
MSA8PCAiXCIgdnMgXCIiIDw8IHMyIDw8ICJcIiI7Ci0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1
cmUobXNnKTsKKyAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJFeHBlY3RlZDogKCIg
PDwgczFfZXhwcmVzc2lvbiA8PCAiKSAhPSAoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgczJfZXhwcmVzc2lvbiA8PCAiKSwgYWN0dWFsOiBcIiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDw8IHMxIDw8ICJcIiB2cyBcIiIgPDwgczIgPDwgIlwiIjsKICAgfQogfQog
CkBAIC0xMjMyLDExICsxNTM3LDEwIEBAIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJDQVNF
TkUoY29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKICAgaWYgKCFTdHJpbmc6OkNhc2VJbnNlbnNp
dGl2ZUNTdHJpbmdFcXVhbHMoczEsIHMyKSkgewogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNz
KCk7CiAgIH0gZWxzZSB7Ci0gICAgTWVzc2FnZSBtc2c7Ci0gICAgbXNnIDw8ICJFeHBlY3RlZDog
KCIgPDwgczFfZXhwcmVzc2lvbiA8PCAiKSAhPSAoIgorICAgIHJldHVybiBBc3NlcnRpb25GYWls
dXJlKCkKKyAgICAgICAgPDwgIkV4cGVjdGVkOiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9
ICgiCiAgICAgICAgIDw8IHMyX2V4cHJlc3Npb24gPDwgIikgKGlnbm9yaW5nIGNhc2UpLCBhY3R1
YWw6IFwiIgogICAgICAgICA8PCBzMSA8PCAiXCIgdnMgXCIiIDw8IHMyIDw8ICJcIiI7Ci0gICAg
cmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKICAgfQogfQogCkBAIC0xMjg1LDEzICsxNTg5
LDEyIEBAIEFzc2VydGlvblJlc3VsdCBJc1N1YnN0cmluZ0ltcGwoCiAKICAgY29uc3QgYm9vbCBp
c193aWRlX3N0cmluZyA9IHNpemVvZihuZWVkbGVbMF0pID4gMTsKICAgY29uc3QgY2hhciogY29u
c3QgYmVnaW5fc3RyaW5nX3F1b3RlID0gaXNfd2lkZV9zdHJpbmcgPyAiTFwiIiA6ICJcIiI7Ci0g
IHJldHVybiBBc3NlcnRpb25GYWlsdXJlKAotICAgICAgTWVzc2FnZSgpCisgIHJldHVybiBBc3Nl
cnRpb25GYWlsdXJlKCkKICAgICAgIDw8ICJWYWx1ZSBvZjogIiA8PCBuZWVkbGVfZXhwciA8PCAi
XG4iCiAgICAgICA8PCAiICBBY3R1YWw6ICIgPDwgYmVnaW5fc3RyaW5nX3F1b3RlIDw8IG5lZWRs
ZSA8PCAiXCJcbiIKICAgICAgIDw8ICJFeHBlY3RlZDogIiA8PCAoZXhwZWN0ZWRfdG9fYmVfc3Vi
c3RyaW5nID8gIiIgOiAibm90ICIpCiAgICAgICA8PCAiYSBzdWJzdHJpbmcgb2YgIiA8PCBoYXlz
dGFja19leHByIDw8ICJcbiIKLSAgICAgIDw8ICJXaGljaCBpczogIiA8PCBiZWdpbl9zdHJpbmdf
cXVvdGUgPDwgaGF5c3RhY2sgPDwgIlwiIik7CisgICAgICA8PCAiV2hpY2ggaXM6ICIgPDwgYmVn
aW5fc3RyaW5nX3F1b3RlIDw8IGhheXN0YWNrIDw8ICJcIiI7CiB9CiAKIH0gIC8vIG5hbWVzcGFj
ZQpAQCAtMTM2MCwxNiArMTY2MywxOSBAQCBuYW1lc3BhY2UgewogQXNzZXJ0aW9uUmVzdWx0IEhS
RVNVTFRGYWlsdXJlSGVscGVyKGNvbnN0IGNoYXIqIGV4cHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9uZyBocikgeyAgLy8gTk9MSU5UCi0jaWYgR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUKKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKwogICAvLyBXaW5k
b3dzIENFIGRvZXNuJ3Qgc3VwcG9ydCBGb3JtYXRNZXNzYWdlLgogICBjb25zdCBjaGFyIGVycm9y
X3RleHRbXSA9ICIiOwotI2Vsc2UKKworIyBlbHNlCisKICAgLy8gTG9va3MgdXAgdGhlIGh1bWFu
LXJlYWRhYmxlIHN5c3RlbSBtZXNzYWdlIGZvciB0aGUgSFJFU1VMVCBjb2RlCiAgIC8vIGFuZCBz
aW5jZSB3ZSdyZSBub3QgcGFzc2luZyBhbnkgcGFyYW1zIHRvIEZvcm1hdE1lc3NhZ2UsIHdlIGRv
bid0CiAgIC8vIHdhbnQgaW5zZXJ0cyBleHBhbmRlZC4KICAgY29uc3QgRFdPUkQga0ZsYWdzID0g
Rk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0gfAogICAgICAgICAgICAgICAgICAgICAgICBGT1JN
QVRfTUVTU0FHRV9JR05PUkVfSU5TRVJUUzsKLSAgY29uc3QgRFdPUkQga0J1ZlNpemUgPSA0MDk2
OyAgLy8gU3RyaW5nOjpGb3JtYXQgY2FuJ3QgZXhjZWVkIHRoaXMgbGVuZ3RoLgorICBjb25zdCBE
V09SRCBrQnVmU2l6ZSA9IDQwOTY7CiAgIC8vIEdldHMgdGhlIHN5c3RlbSdzIGh1bWFuIHJlYWRh
YmxlIG1lc3NhZ2Ugc3RyaW5nIGZvciB0aGlzIEhSRVNVTFQuCiAgIGNoYXIgZXJyb3JfdGV4dFtr
QnVmU2l6ZV0gPSB7ICdcMCcgfTsKICAgRFdPUkQgbWVzc2FnZV9sZW5ndGggPSA6OkZvcm1hdE1l
c3NhZ2VBKGtGbGFncywKQEAgLTEzNzksMTkgKzE2ODUsMTggQEAgQXNzZXJ0aW9uUmVzdWx0IEhS
RVNVTFRGYWlsdXJlSGVscGVyKGNvbnN0IGNoYXIqIGV4cHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl90ZXh0LCAgLy8gb3V0cHV0IGJ1ZmZlcgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0J1ZlNpemUsICAvLyBidWYg
c2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7ICAv
LyBubyBhcmd1bWVudHMgZm9yIGluc2VydHMKLSAgLy8gVHJpbXMgdGFpbGluZyB3aGl0ZSBzcGFj
ZSAoRm9ybWF0TWVzc2FnZSBsZWF2ZXMgYSB0cmFpbGluZyBjci1sZikKLSAgZm9yICg7IG1lc3Nh
Z2VfbGVuZ3RoICYmIGlzc3BhY2UoZXJyb3JfdGV4dFttZXNzYWdlX2xlbmd0aCAtIDFdKTsKKyAg
Ly8gVHJpbXMgdGFpbGluZyB3aGl0ZSBzcGFjZSAoRm9ybWF0TWVzc2FnZSBsZWF2ZXMgYSB0cmFp
bGluZyBDUi1MRikKKyAgZm9yICg7IG1lc3NhZ2VfbGVuZ3RoICYmIElzU3BhY2UoZXJyb3JfdGV4
dFttZXNzYWdlX2xlbmd0aCAtIDFdKTsKICAgICAgICAgICAtLW1lc3NhZ2VfbGVuZ3RoKSB7CiAg
ICAgZXJyb3JfdGV4dFttZXNzYWdlX2xlbmd0aCAtIDFdID0gJ1wwJzsKICAgfQotI2VuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogCi0gIGNvbnN0IFN0cmluZyBlcnJvcl9oZXgoU3Ry
aW5nOjpGb3JtYXQoIjB4JTA4WCAiLCBocikpOwotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8ICJF
eHBlY3RlZDogIiA8PCBleHByIDw8ICIgIiA8PCBleHBlY3RlZCA8PCAiLlxuIgotICAgICAgPDwg
IiAgQWN0dWFsOiAiIDw8IGVycm9yX2hleCA8PCBlcnJvcl90ZXh0IDw8ICJcbiI7CisjIGVuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogCi0gIHJldHVybiA6OnRlc3Rpbmc6OkFzc2Vy
dGlvbkZhaWx1cmUobXNnKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZXJyb3JfaGV4KCIweCIgKyBT
dHJpbmc6OkZvcm1hdEhleEludChocikpOworICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25G
YWlsdXJlKCkKKyAgICAgIDw8ICJFeHBlY3RlZDogIiA8PCBleHByIDw8ICIgIiA8PCBleHBlY3Rl
ZCA8PCAiLlxuIgorICAgICAgPDwgIiAgQWN0dWFsOiAiIDw8IGVycm9yX2hleCA8PCAiICIgPDwg
ZXJyb3JfdGV4dCA8PCAiXG4iOwogfQogCiB9ICAvLyBuYW1lc3BhY2UKQEAgLTE0NDgsMTIgKzE3
NTMsMTUgQEAgaW5saW5lIFVJbnQzMiBDaG9wTG93Qml0cyhVSW50MzIqIGJpdHMsIGludCBuKSB7
CiAvLyBDb252ZXJ0cyBhIFVuaWNvZGUgY29kZSBwb2ludCB0byBhIG5hcnJvdyBzdHJpbmcgaW4g
VVRGLTggZW5jb2RpbmcuCiAvLyBjb2RlX3BvaW50IHBhcmFtZXRlciBpcyBvZiB0eXBlIFVJbnQz
MiBiZWNhdXNlIHdjaGFyX3QgbWF5IG5vdCBiZQogLy8gd2lkZSBlbm91Z2ggdG8gY29udGFpbiBh
IGNvZGUgcG9pbnQuCi0vLyBUaGUgb3V0cHV0IGJ1ZmZlciBzdHIgbXVzdCBjb250YWludCBhdCBs
ZWFzdCAzMiBjaGFyYWN0ZXJzLgotLy8gVGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIGFkZHJlc3Mg
b2YgdGhlIG91dHB1dCBidWZmZXIuCiAvLyBJZiB0aGUgY29kZV9wb2ludCBpcyBub3QgYSB2YWxp
ZCBVbmljb2RlIGNvZGUgcG9pbnQKLS8vIChpLmUuIG91dHNpZGUgb2YgVW5pY29kZSByYW5nZSBV
KzAgdG8gVSsxMEZGRkYpIGl0IHdpbGwgYmUgb3V0cHV0Ci0vLyBhcyAnKEludmFsaWQgVW5pY29k
ZSAweFhYWFhYWFhYKScuCi1jaGFyKiBDb2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQs
IGNoYXIqIHN0cikgeworLy8gKGkuZS4gb3V0c2lkZSBvZiBVbmljb2RlIHJhbmdlIFUrMCB0byBV
KzEwRkZGRikgaXQgd2lsbCBiZSBjb252ZXJ0ZWQKKy8vIHRvICIoSW52YWxpZCBVbmljb2RlIDB4
WFhYWFhYWFgpIi4KK3N0ZDo6c3RyaW5nIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9wb2lu
dCkgeworICBpZiAoY29kZV9wb2ludCA+IGtNYXhDb2RlUG9pbnQ0KSB7CisgICAgcmV0dXJuICIo
SW52YWxpZCBVbmljb2RlIDB4IiArIFN0cmluZzo6Rm9ybWF0SGV4SW50KGNvZGVfcG9pbnQpICsg
IikiOworICB9CisKKyAgY2hhciBzdHJbNV07ICAvLyBCaWcgZW5vdWdoIGZvciB0aGUgbGFyZ2Vz
dCB2YWxpZCBjb2RlIHBvaW50LgogICBpZiAoY29kZV9wb2ludCA8PSBrTWF4Q29kZVBvaW50MSkg
ewogICAgIHN0clsxXSA9ICdcMCc7CiAgICAgc3RyWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oY29k
ZV9wb2ludCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAweHh4eHh4eApAQCAtMTQ2Niwy
MiArMTc3NCwxMiBAQCBjaGFyKiBDb2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQsIGNo
YXIqIHN0cikgewogICAgIHN0clsyXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgfCBDaG9wTG93
Qml0cygmY29kZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKICAgICBzdHJbMV0gPSBzdGF0aWNf
Y2FzdDxjaGFyPigweDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVfcG9pbnQsIDYpKTsgIC8vIDEweHh4
eHh4CiAgICAgc3RyWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHhFMCB8IGNvZGVfcG9pbnQpOyAg
ICAgICAgICAgICAgICAgICAvLyAxMTEweHh4eAotICB9IGVsc2UgaWYgKGNvZGVfcG9pbnQgPD0g
a01heENvZGVQb2ludDQpIHsKKyAgfSBlbHNlIHsgIC8vIGNvZGVfcG9pbnQgPD0ga01heENvZGVQ
b2ludDQKICAgICBzdHJbNF0gPSAnXDAnOwogICAgIHN0clszXSA9IHN0YXRpY19jYXN0PGNoYXI+
KDB4ODAgfCBDaG9wTG93Qml0cygmY29kZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKICAgICBz
dHJbMl0gPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVfcG9pbnQs
IDYpKTsgIC8vIDEweHh4eHh4CiAgICAgc3RyWzFdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHg4MCB8
IENob3BMb3dCaXRzKCZjb2RlX3BvaW50LCA2KSk7ICAvLyAxMHh4eHh4eAogICAgIHN0clswXSA9
IHN0YXRpY19jYXN0PGNoYXI+KDB4RjAgfCBjb2RlX3BvaW50KTsgICAgICAgICAgICAgICAgICAg
Ly8gMTExMTB4eHgKLSAgfSBlbHNlIHsKLSAgICAvLyBUaGUgbG9uZ2VzdCBzdHJpbmcgU3RyaW5n
OjpGb3JtYXQgY2FuIHByb2R1Y2Ugd2hlbiBpbnZva2VkCi0gICAgLy8gd2l0aCB0aGVzZSBwYXJh
bWV0ZXJzIGlzIDI4IGNoYXJhY3RlciBsb25nIChub3QgaW5jbHVkaW5nCi0gICAgLy8gdGhlIHRl
cm1pbmF0aW5nIG51bCBjaGFyYWN0ZXIpLiBXZSBhcmUgYXNraW5nIGZvciAzMiBjaGFyYWN0ZXIK
LSAgICAvLyBidWZmZXIganVzdCBpbiBjYXNlLiBUaGlzIGlzIGFsc28gZW5vdWdoIGZvciBzdHJu
Y3B5IHRvCi0gICAgLy8gbnVsbC10ZXJtaW5hdGUgdGhlIGRlc3RpbmF0aW9uIHN0cmluZy4KLSAg
ICBwb3NpeDo6U3RyTkNweSgKLSAgICAgICAgc3RyLCBTdHJpbmc6OkZvcm1hdCgiKEludmFsaWQg
VW5pY29kZSAweCVYKSIsIGNvZGVfcG9pbnQpLmNfc3RyKCksIDMyKTsKLSAgICBzdHJbMzFdID0g
J1wwJzsgIC8vIE1ha2VzIHN1cmUgbm8gY2hhbmdlIGluIHRoZSBmb3JtYXQgdG8gc3RybmNweSBs
ZWF2ZXMKLSAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSByZXN1bHQgdW50ZXJtaW5hdGVkLgog
ICB9CiAgIHJldHVybiBzdHI7CiB9CkBAIC0xNTIyLDExICsxODIwLDExIEBAIGlubGluZSBVSW50
MzIgQ3JlYXRlQ29kZVBvaW50RnJvbVV0ZjE2U3Vycm9nYXRlUGFpcih3Y2hhcl90IGZpcnN0LAog
Ly8gYXMgJyhJbnZhbGlkIFVuaWNvZGUgMHhYWFhYWFhYWCknLiBJZiB0aGUgc3RyaW5nIGlzIGlu
IFVURjE2IGVuY29kaW5nCiAvLyBhbmQgY29udGFpbnMgaW52YWxpZCBVVEYtMTYgc3Vycm9nYXRl
IHBhaXJzLCB2YWx1ZXMgaW4gdGhvc2UgcGFpcnMKIC8vIHdpbGwgYmUgZW5jb2RlZCBhcyBpbmRp
dmlkdWFsIFVuaWNvZGUgY2hhcmFjdGVycyBmcm9tIEJhc2ljIE5vcm1hbCBQbGFuZS4KLVN0cmlu
ZyBXaWRlU3RyaW5nVG9VdGY4KGNvbnN0IHdjaGFyX3QqIHN0ciwgaW50IG51bV9jaGFycykgewor
c3RkOjpzdHJpbmcgV2lkZVN0cmluZ1RvVXRmOChjb25zdCB3Y2hhcl90KiBzdHIsIGludCBudW1f
Y2hhcnMpIHsKICAgaWYgKG51bV9jaGFycyA9PSAtMSkKICAgICBudW1fY2hhcnMgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHdjc2xlbihzdHIpKTsKIAotICBTdHJTdHJlYW0gc3RyZWFtOworICA6OnN0ZDo6
c3RyaW5nc3RyZWFtIHN0cmVhbTsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fY2hhcnM7ICsr
aSkgewogICAgIFVJbnQzMiB1bmljb2RlX2NvZGVfcG9pbnQ7CiAKQEAgLTE1NDAsMjcgKzE4Mzgs
MTcgQEAgU3RyaW5nIFdpZGVTdHJpbmdUb1V0ZjgoY29uc3Qgd2NoYXJfdCogc3RyLCBpbnQgbnVt
X2NoYXJzKSB7CiAgICAgICB1bmljb2RlX2NvZGVfcG9pbnQgPSBzdGF0aWNfY2FzdDxVSW50MzI+
KHN0cltpXSk7CiAgICAgfQogCi0gICAgY2hhciBidWZmZXJbMzJdOyAgLy8gQ29kZVBvaW50VG9V
dGY4IHJlcXVpcmVzIGEgYnVmZmVyIHRoaXMgYmlnLgotICAgIHN0cmVhbSA8PCBDb2RlUG9pbnRU
b1V0ZjgodW5pY29kZV9jb2RlX3BvaW50LCBidWZmZXIpOworICAgIHN0cmVhbSA8PCBDb2RlUG9p
bnRUb1V0ZjgodW5pY29kZV9jb2RlX3BvaW50KTsKICAgfQotICByZXR1cm4gU3RyU3RyZWFtVG9T
dHJpbmcoJnN0cmVhbSk7CisgIHJldHVybiBTdHJpbmdTdHJlYW1Ub1N0cmluZygmc3RyZWFtKTsK
IH0KIAotLy8gQ29udmVydHMgYSB3aWRlIEMgc3RyaW5nIHRvIGEgU3RyaW5nIHVzaW5nIHRoZSBV
VEYtOCBlbmNvZGluZy4KKy8vIENvbnZlcnRzIGEgd2lkZSBDIHN0cmluZyB0byBhbiBzdGQ6OnN0
cmluZyB1c2luZyB0aGUgVVRGLTggZW5jb2RpbmcuCiAvLyBOVUxMIHdpbGwgYmUgY29udmVydGVk
IHRvICIobnVsbCkiLgotU3RyaW5nIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKGNvbnN0IHdjaGFy
X3QgKiB3aWRlX2Nfc3RyKSB7Ci0gIGlmICh3aWRlX2Nfc3RyID09IE5VTEwpIHJldHVybiBTdHJp
bmcoIihudWxsKSIpOwotCi0gIHJldHVybiBTdHJpbmcoaW50ZXJuYWw6OldpZGVTdHJpbmdUb1V0
Zjgod2lkZV9jX3N0ciwgLTEpLmNfc3RyKCkpOwotfQotCi0vLyBTaW1pbGFyIHRvIFNob3dXaWRl
Q1N0cmluZygpLCBleGNlcHQgdGhhdCB0aGlzIGZ1bmN0aW9uIGVuY2xvc2VzCi0vLyB0aGUgY29u
dmVydGVkIHN0cmluZyBpbiBkb3VibGUgcXVvdGVzLgotU3RyaW5nIFN0cmluZzo6U2hvd1dpZGVD
U3RyaW5nUXVvdGVkKGNvbnN0IHdjaGFyX3QqIHdpZGVfY19zdHIpIHsKLSAgaWYgKHdpZGVfY19z
dHIgPT0gTlVMTCkgcmV0dXJuIFN0cmluZygiKG51bGwpIik7CitzdGQ6OnN0cmluZyBTdHJpbmc6
OlNob3dXaWRlQ1N0cmluZyhjb25zdCB3Y2hhcl90ICogd2lkZV9jX3N0cikgeworICBpZiAod2lk
ZV9jX3N0ciA9PSBOVUxMKSAgcmV0dXJuICIobnVsbCkiOwogCi0gIHJldHVybiBTdHJpbmc6OkZv
cm1hdCgiTFwiJXNcIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmc6OlNob3dXaWRl
Q1N0cmluZyh3aWRlX2Nfc3RyKS5jX3N0cigpKTsKKyAgcmV0dXJuIGludGVybmFsOjpXaWRlU3Ry
aW5nVG9VdGY4KHdpZGVfY19zdHIsIC0xKTsKIH0KIAogLy8gQ29tcGFyZXMgdHdvIHdpZGUgQyBz
dHJpbmdzLiAgUmV0dXJucyB0cnVlIGlmZiB0aGV5IGhhdmUgdGhlIHNhbWUKQEAgLTE1NzgsMTgg
KzE4NjYsMTggQEAgYm9vbCBTdHJpbmc6OldpZGVDU3RyaW5nRXF1YWxzKGNvbnN0IHdjaGFyX3Qg
KiBsaHMsIGNvbnN0IHdjaGFyX3QgKiByaHMpIHsKIH0KIAogLy8gSGVscGVyIGZ1bmN0aW9uIGZv
ciAqX1NUUkVRIG9uIHdpZGUgc3RyaW5ncy4KLUFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJF
UShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIGV4cGVjdGVkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIGFjdHVhbCkgewotICBpZiAoU3RyaW5nOjpX
aWRlQ1N0cmluZ0VxdWFscyhleHBlY3RlZCwgYWN0dWFsKSkgeworQXNzZXJ0aW9uUmVzdWx0IENt
cEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIGxocywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiByaHMpIHsKKyAgaWYgKFN0cmluZzo6V2lkZUNT
dHJpbmdFcXVhbHMobGhzLCByaHMpKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsK
ICAgfQogCi0gIHJldHVybiBFcUZhaWx1cmUoZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAg
ICAgICAgICAgICBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBTdHJpbmc6
OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChleHBlY3RlZCksCi0gICAgICAgICAgICAgICAgICAgU3Ry
aW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoYWN0dWFsKSwKKyAgcmV0dXJuIEVxRmFpbHVyZShs
aHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICByaHNfZXhwcmVzc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKGxocyksCisgICAgICAgICAgICAgICAgICAgUHJp
bnRUb1N0cmluZyhyaHMpLAogICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKIH0KIApAQCAtMTYw
MiwxMiArMTg5MCwxMCBAQCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSTkUoY29uc3QgY2hh
ciogczFfZXhwcmVzc2lvbiwKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9CiAK
LSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4cHJlc3Npb24g
PDwgIikgIT0gKCIKLSAgICAgIDw8IHMyX2V4cHJlc3Npb24gPDwgIiksIGFjdHVhbDogIgotICAg
ICAgPDwgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoczEpCi0gICAgICA8PCAiIHZzICIg
PDwgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoczIpOwotICByZXR1cm4gQXNzZXJ0aW9u
RmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJFeHBlY3RlZDog
KCIgPDwgczFfZXhwcmVzc2lvbiA8PCAiKSAhPSAoIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8IHMyX2V4cHJlc3Npb24gPDwgIiksIGFjdHVhbDogIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDw8IFByaW50VG9TdHJpbmcoczEpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIiB2cyAiIDw8IFByaW50VG9TdHJpbmcoczIpOwogfQogCiAvLyBDb21wYXJlcyB0d28g
QyBzdHJpbmdzLCBpZ25vcmluZyBjYXNlLiAgUmV0dXJucyB0cnVlIGlmZiB0aGV5IGhhdmUKQEAg
LTE2MzgsMTcgKzE5MjQsMTcgQEAgYm9vbCBTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZUNTdHJpbmdF
cXVhbHMoY29uc3QgY2hhciAqIGxocywgY29uc3QgY2hhciAqIHJocykgewogICAvLyBjdXJyZW50
IGxvY2FsZS4KIGJvb2wgU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscyhj
b25zdCB3Y2hhcl90KiBsaHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgd2NoYXJfdCogcmhzKSB7Ci0gIGlmICggbGhzID09IE5VTEwgKSByZXR1
cm4gcmhzID09IE5VTEw7CisgIGlmIChsaHMgPT0gTlVMTCkgcmV0dXJuIHJocyA9PSBOVUxMOwog
Ci0gIGlmICggcmhzID09IE5VTEwgKSByZXR1cm4gZmFsc2U7CisgIGlmIChyaHMgPT0gTlVMTCkg
cmV0dXJuIGZhbHNlOwogCiAjaWYgR1RFU1RfT1NfV0lORE9XUwogICByZXR1cm4gX3djc2ljbXAo
bGhzLCByaHMpID09IDA7Ci0jZWxpZiBHVEVTVF9PU19MSU5VWAorI2VsaWYgR1RFU1RfT1NfTElO
VVggJiYgIUdURVNUX09TX0xJTlVYX0FORFJPSUQKICAgcmV0dXJuIHdjc2Nhc2VjbXAobGhzLCBy
aHMpID09IDA7CiAjZWxzZQotICAvLyBNYWMgT1MgWCBhbmQgQ3lnd2luIGRvbid0IGRlZmluZSB3
Y3NjYXNlY21wLiAgT3RoZXIgdW5rbm93biBPU2VzCi0gIC8vIG1heSBub3QgZGVmaW5lIGl0IGVp
dGhlci4KKyAgLy8gQW5kcm9pZCwgTWFjIE9TIFggYW5kIEN5Z3dpbiBkb24ndCBkZWZpbmUgd2Nz
Y2FzZWNtcC4KKyAgLy8gT3RoZXIgdW5rbm93biBPU2VzIG1heSBub3QgZGVmaW5lIGl0IGVpdGhl
ci4KICAgd2ludF90IGxlZnQsIHJpZ2h0OwogICBkbyB7CiAgICAgbGVmdCA9IHRvd2xvd2VyKCps
aHMrKyk7CkBAIC0xNjU4LDEzMyArMTk0NCw2OSBAQCBib29sIFN0cmluZzo6Q2FzZUluc2Vuc2l0
aXZlV2lkZUNTdHJpbmdFcXVhbHMoY29uc3Qgd2NoYXJfdCogbGhzLAogI2VuZGlmICAvLyBPUyBz
ZWxlY3RvcgogfQogCi0vLyBDb21wYXJlcyB0aGlzIHdpdGggYW5vdGhlciBTdHJpbmcuCi0vLyBS
ZXR1cm5zIDwgMCBpZiB0aGlzIGlzIGxlc3MgdGhhbiByaHMsIDAgaWYgdGhpcyBpcyBlcXVhbCB0
byByaHMsIG9yID4gMAotLy8gaWYgdGhpcyBpcyBncmVhdGVyIHRoYW4gcmhzLgotaW50IFN0cmlu
Zzo6Q29tcGFyZShjb25zdCBTdHJpbmcgJiByaHMpIGNvbnN0IHsKLSAgY29uc3QgY2hhciogY29u
c3QgbGhzX2Nfc3RyID0gY19zdHIoKTsKLSAgY29uc3QgY2hhciogY29uc3QgcmhzX2Nfc3RyID0g
cmhzLmNfc3RyKCk7Ci0KLSAgaWYgKGxoc19jX3N0ciA9PSBOVUxMKSB7Ci0gICAgcmV0dXJuIHJo
c19jX3N0ciA9PSBOVUxMID8gMCA6IC0xOyAgLy8gTlVMTCA8IGFueXRoaW5nIGV4Y2VwdCBOVUxM
Ci0gIH0gZWxzZSBpZiAocmhzX2Nfc3RyID09IE5VTEwpIHsKLSAgICByZXR1cm4gMTsKLSAgfQot
Ci0gIGNvbnN0IHNpemVfdCBzaG9ydGVyX3N0cl9sZW4gPQotICAgICAgbGVuZ3RoKCkgPD0gcmhz
Lmxlbmd0aCgpID8gbGVuZ3RoKCkgOiByaHMubGVuZ3RoKCk7Ci0gIGZvciAoc2l6ZV90IGkgPSAw
OyBpICE9IHNob3J0ZXJfc3RyX2xlbjsgaSsrKSB7Ci0gICAgaWYgKGxoc19jX3N0cltpXSA8IHJo
c19jX3N0cltpXSkgewotICAgICAgcmV0dXJuIC0xOwotICAgIH0gZWxzZSBpZiAobGhzX2Nfc3Ry
W2ldID4gcmhzX2Nfc3RyW2ldKSB7Ci0gICAgICByZXR1cm4gMTsKLSAgICB9Ci0gIH0KLSAgcmV0
dXJuIChsZW5ndGgoKSA8IHJocy5sZW5ndGgoKSkgPyAtMSA6Ci0gICAgICAobGVuZ3RoKCkgPiBy
aHMubGVuZ3RoKCkpID8gMSA6IDA7CisvLyBSZXR1cm5zIHRydWUgaWZmIHN0ciBlbmRzIHdpdGgg
dGhlIGdpdmVuIHN1ZmZpeCwgaWdub3JpbmcgY2FzZS4KKy8vIEFueSBzdHJpbmcgaXMgY29uc2lk
ZXJlZCB0byBlbmQgd2l0aCBhbiBlbXB0eSBzdWZmaXguCitib29sIFN0cmluZzo6RW5kc1dpdGhD
YXNlSW5zZW5zaXRpdmUoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0ciwgY29uc3Qgc3RkOjpz
dHJpbmcmIHN1ZmZpeCkgeworICBjb25zdCBzaXplX3Qgc3RyX2xlbiA9IHN0ci5sZW5ndGgoKTsK
KyAgY29uc3Qgc2l6ZV90IHN1ZmZpeF9sZW4gPSBzdWZmaXgubGVuZ3RoKCk7CisgIHJldHVybiAo
c3RyX2xlbiA+PSBzdWZmaXhfbGVuKSAmJgorICAgICAgICAgQ2FzZUluc2Vuc2l0aXZlQ1N0cmlu
Z0VxdWFscyhzdHIuY19zdHIoKSArIHN0cl9sZW4gLSBzdWZmaXhfbGVuLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXguY19zdHIoKSk7CiB9CiAKLS8vIFJldHVy
bnMgdHJ1ZSBpZmYgdGhpcyBTdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXguICAqQW55
KgotLy8gU3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGggYSBOVUxMIG9yIGVtcHR5IHN1
ZmZpeC4KLWJvb2wgU3RyaW5nOjpFbmRzV2l0aChjb25zdCBjaGFyKiBzdWZmaXgpIGNvbnN0IHsK
LSAgaWYgKHN1ZmZpeCA9PSBOVUxMIHx8IENTdHJpbmdFcXVhbHMoc3VmZml4LCAiIikpIHJldHVy
biB0cnVlOwotCi0gIGlmIChjX3N0cigpID09IE5VTEwpIHJldHVybiBmYWxzZTsKLQotICBjb25z
dCBzaXplX3QgdGhpc19sZW4gPSBzdHJsZW4oY19zdHIoKSk7Ci0gIGNvbnN0IHNpemVfdCBzdWZm
aXhfbGVuID0gc3RybGVuKHN1ZmZpeCk7Ci0gIHJldHVybiAodGhpc19sZW4gPj0gc3VmZml4X2xl
bikgJiYKLSAgICAgICAgIENTdHJpbmdFcXVhbHMoY19zdHIoKSArIHRoaXNfbGVuIC0gc3VmZml4
X2xlbiwgc3VmZml4KTsKKy8vIEZvcm1hdHMgYW4gaW50IHZhbHVlIGFzICIlMDJkIi4KK3N0ZDo6
c3RyaW5nIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKGludCB2YWx1ZSkgeworICBzdGQ6OnN0cmlu
Z3N0cmVhbSBzczsKKyAgc3MgPDwgc3RkOjpzZXRmaWxsKCcwJykgPDwgc3RkOjpzZXR3KDIpIDw8
IHZhbHVlOworICByZXR1cm4gc3Muc3RyKCk7CiB9CiAKLS8vIFJldHVybnMgdHJ1ZSBpZmYgdGhp
cyBTdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXgsIGlnbm9yaW5nIGNhc2UuCi0vLyBB
bnkgU3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGggYSBOVUxMIG9yIGVtcHR5IHN1ZmZp
eC4KLWJvb2wgU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZShjb25zdCBjaGFyKiBzdWZm
aXgpIGNvbnN0IHsKLSAgaWYgKHN1ZmZpeCA9PSBOVUxMIHx8IENTdHJpbmdFcXVhbHMoc3VmZml4
LCAiIikpIHJldHVybiB0cnVlOwotCi0gIGlmIChjX3N0cigpID09IE5VTEwpIHJldHVybiBmYWxz
ZTsKLQotICBjb25zdCBzaXplX3QgdGhpc19sZW4gPSBzdHJsZW4oY19zdHIoKSk7Ci0gIGNvbnN0
IHNpemVfdCBzdWZmaXhfbGVuID0gc3RybGVuKHN1ZmZpeCk7Ci0gIHJldHVybiAodGhpc19sZW4g
Pj0gc3VmZml4X2xlbikgJiYKLSAgICAgICAgIENhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMo
Y19zdHIoKSArIHRoaXNfbGVuIC0gc3VmZml4X2xlbiwgc3VmZml4KTsKKy8vIEZvcm1hdHMgYW4g
aW50IHZhbHVlIGFzICIlWCIuCitzdGQ6OnN0cmluZyBTdHJpbmc6OkZvcm1hdEhleEludChpbnQg
dmFsdWUpIHsKKyAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIHNzIDw8IHN0ZDo6aGV4IDw8IHN0
ZDo6dXBwZXJjYXNlIDw8IHZhbHVlOworICByZXR1cm4gc3Muc3RyKCk7CiB9CiAKLS8vIEZvcm1h
dHMgYSBsaXN0IG9mIGFyZ3VtZW50cyB0byBhIFN0cmluZywgdXNpbmcgdGhlIHNhbWUgZm9ybWF0
Ci0vLyBzcGVjIHN0cmluZyBhcyBmb3IgcHJpbnRmLgotLy8KLS8vIFdlIGRvIG5vdCB1c2UgdGhl
IFN0cmluZ1ByaW50ZiBjbGFzcyBhcyBpdCBpcyBub3QgdW5pdmVyc2FsbHkKLS8vIGF2YWlsYWJs
ZS4KLS8vCi0vLyBUaGUgcmVzdWx0IGlzIGxpbWl0ZWQgdG8gNDA5NiBjaGFyYWN0ZXJzIChpbmNs
dWRpbmcgdGhlIHRhaWxpbmcgMCkuCi0vLyBJZiA0MDk2IGNoYXJhY3RlcnMgYXJlIG5vdCBlbm91
Z2ggdG8gZm9ybWF0IHRoZSBpbnB1dCwgb3IgaWYKLS8vIHRoZXJlJ3MgYW4gZXJyb3IsICI8Zm9y
bWF0dGluZyBlcnJvciBvciBidWZmZXIgZXhjZWVkZWQ+IiBpcwotLy8gcmV0dXJuZWQuCi1TdHJp
bmcgU3RyaW5nOjpGb3JtYXQoY29uc3QgY2hhciAqIGZvcm1hdCwgLi4uKSB7Ci0gIHZhX2xpc3Qg
YXJnczsKLSAgdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKLQotICBjaGFyIGJ1ZmZlcls0MDk2XTsK
LSAgY29uc3QgaW50IGtCdWZmZXJTaXplID0gc2l6ZW9mKGJ1ZmZlcikvc2l6ZW9mKGJ1ZmZlclsw
XSk7Ci0KLSAgLy8gTVNWQyA4IGRlcHJlY2F0ZXMgdnNucHJpbnRmKCksIHNvIHdlIHdhbnQgdG8g
c3VwcHJlc3Mgd2FybmluZwotICAvLyA0OTk2IChkZXByZWNhdGVkIGZ1bmN0aW9uKSB0aGVyZS4K
LSNpZmRlZiBfTVNDX1ZFUiAgLy8gV2UgYXJlIHVzaW5nIE1TVkMuCi0jcHJhZ21hIHdhcm5pbmco
cHVzaCkgICAgICAgICAgLy8gU2F2ZXMgdGhlIGN1cnJlbnQgd2FybmluZyBzdGF0ZS4KLSNwcmFn
bWEgd2FybmluZyhkaXNhYmxlOjQ5OTYpICAvLyBUZW1wb3JhcmlseSBkaXNhYmxlcyB3YXJuaW5n
IDQ5OTYuCi0gIGNvbnN0IGludCBzaXplID0gdnNucHJpbnRmKGJ1ZmZlciwga0J1ZmZlclNpemUs
IGZvcm1hdCwgYXJncyk7Ci0jcHJhZ21hIHdhcm5pbmcocG9wKSAgICAgICAgICAgLy8gUmVzdG9y
ZXMgdGhlIHdhcm5pbmcgc3RhdGUuCi0jZWxzZSAgLy8gV2UgYXJlIG5vdCB1c2luZyBNU1ZDLgot
ICBjb25zdCBpbnQgc2l6ZSA9IHZzbnByaW50ZihidWZmZXIsIGtCdWZmZXJTaXplLCBmb3JtYXQs
IGFyZ3MpOwotI2VuZGlmICAvLyBfTVNDX1ZFUgotICB2YV9lbmQoYXJncyk7Ci0KLSAgLy8gdnNu
cHJpbnRmKCkncyBiZWhhdmlvciBpcyBub3QgcG9ydGFibGUuICBXaGVuIHRoZSBidWZmZXIgaXMg
bm90Ci0gIC8vIGJpZyBlbm91Z2gsIGl0IHJldHVybnMgYSBuZWdhdGl2ZSB2YWx1ZSBpbiBNU1ZD
LCBhbmQgcmV0dXJucyB0aGUKLSAgLy8gbmVlZGVkIGJ1ZmZlciBzaXplIG9uIExpbnV4LiAgV2hl
biB0aGVyZSBpcyBhbiBvdXRwdXQgZXJyb3IsIGl0Ci0gIC8vIGFsd2F5cyByZXR1cm5zIGEgbmVn
YXRpdmUgdmFsdWUuICBGb3Igc2ltcGxpY2l0eSwgd2UgbHVtcCB0aGUgdHdvCi0gIC8vIGVycm9y
IGNhc2VzIHRvZ2V0aGVyLgotICBpZiAoc2l6ZSA8IDAgfHwgc2l6ZSA+PSBrQnVmZmVyU2l6ZSkg
ewotICAgIHJldHVybiBTdHJpbmcoIjxmb3JtYXR0aW5nIGVycm9yIG9yIGJ1ZmZlciBleGNlZWRl
ZD4iKTsKLSAgfSBlbHNlIHsKLSAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlciwgc2l6ZSk7Ci0gIH0K
Ky8vIEZvcm1hdHMgYSBieXRlIGFzICIlMDJYIi4KK3N0ZDo6c3RyaW5nIFN0cmluZzo6Rm9ybWF0
Qnl0ZSh1bnNpZ25lZCBjaGFyIHZhbHVlKSB7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICBz
cyA8PCBzdGQ6OnNldGZpbGwoJzAnKSA8PCBzdGQ6OnNldHcoMikgPDwgc3RkOjpoZXggPDwgc3Rk
Ojp1cHBlcmNhc2UKKyAgICAgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih2YWx1ZSk7Cisg
IHJldHVybiBzcy5zdHIoKTsKIH0KIAotLy8gQ29udmVydHMgdGhlIGJ1ZmZlciBpbiBhIFN0clN0
cmVhbSB0byBhIFN0cmluZywgY29udmVydGluZyBOVUwKKy8vIENvbnZlcnRzIHRoZSBidWZmZXIg
aW4gYSBzdHJpbmdzdHJlYW0gdG8gYW4gc3RkOjpzdHJpbmcsIGNvbnZlcnRpbmcgTlVMCiAvLyBi
eXRlcyB0byAiXFwwIiBhbG9uZyB0aGUgd2F5LgotU3RyaW5nIFN0clN0cmVhbVRvU3RyaW5nKFN0
clN0cmVhbSogc3MpIHsKK3N0ZDo6c3RyaW5nIFN0cmluZ1N0cmVhbVRvU3RyaW5nKDo6c3RkOjpz
dHJpbmdzdHJlYW0qIHNzKSB7CiAgIGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciA9IHNzLT5zdHIo
KTsKICAgY29uc3QgY2hhciogY29uc3Qgc3RhcnQgPSBzdHIuY19zdHIoKTsKICAgY29uc3QgY2hh
ciogY29uc3QgZW5kID0gc3RhcnQgKyBzdHIubGVuZ3RoKCk7CiAKLSAgLy8gV2UgbmVlZCB0byB1
c2UgYSBoZWxwZXIgU3RyU3RyZWFtIHRvIGRvIHRoaXMgdHJhbnNmb3JtYXRpb24KLSAgLy8gYmVj
YXVzZSBTdHJpbmcgZG9lc24ndCBzdXBwb3J0IHB1c2hfYmFjaygpLgotICBTdHJTdHJlYW0gaGVs
cGVyOworICBzdGQ6OnN0cmluZyByZXN1bHQ7CisgIHJlc3VsdC5yZXNlcnZlKDIgKiAoZW5kIC0g
c3RhcnQpKTsKICAgZm9yIChjb25zdCBjaGFyKiBjaCA9IHN0YXJ0OyBjaCAhPSBlbmQ7ICsrY2gp
IHsKICAgICBpZiAoKmNoID09ICdcMCcpIHsKLSAgICAgIGhlbHBlciA8PCAiXFwwIjsgIC8vIFJl
cGxhY2VzIE5VTCB3aXRoICJcXDAiOworICAgICAgcmVzdWx0ICs9ICJcXDAiOyAgLy8gUmVwbGFj
ZXMgTlVMIHdpdGggIlxcMCI7CiAgICAgfSBlbHNlIHsKLSAgICAgIGhlbHBlci5wdXQoKmNoKTsK
KyAgICAgIHJlc3VsdCArPSAqY2g7CiAgICAgfQogICB9CiAKLSAgcmV0dXJuIFN0cmluZyhoZWxw
ZXIuc3RyKCkuY19zdHIoKSk7CisgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8vIEFwcGVuZHMgdGhl
IHVzZXItc3VwcGxpZWQgbWVzc2FnZSB0byB0aGUgR29vZ2xlLVRlc3QtZ2VuZXJhdGVkIG1lc3Nh
Z2UuCi1TdHJpbmcgQXBwZW5kVXNlck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBndGVzdF9tc2csCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVzc2FnZSYgdXNlcl9tc2cpIHsKK3N0ZDo6
c3RyaW5nIEFwcGVuZFVzZXJNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBndGVzdF9tc2csCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNZXNzYWdlJiB1c2VyX21zZykgewog
ICAvLyBBcHBlbmRzIHRoZSB1c2VyIG1lc3NhZ2UgaWYgaXQncyBub24tZW1wdHkuCi0gIGNvbnN0
IFN0cmluZyB1c2VyX21zZ19zdHJpbmcgPSB1c2VyX21zZy5HZXRTdHJpbmcoKTsKKyAgY29uc3Qg
c3RkOjpzdHJpbmcgdXNlcl9tc2dfc3RyaW5nID0gdXNlcl9tc2cuR2V0U3RyaW5nKCk7CiAgIGlm
ICh1c2VyX21zZ19zdHJpbmcuZW1wdHkoKSkgewogICAgIHJldHVybiBndGVzdF9tc2c7CiAgIH0K
IAotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGd0ZXN0X21zZyA8PCAiXG4iIDw8IHVzZXJfbXNn
X3N0cmluZzsKLQotICByZXR1cm4gbXNnLkdldFN0cmluZygpOworICByZXR1cm4gZ3Rlc3RfbXNn
ICsgIlxuIiArIHVzZXJfbXNnX3N0cmluZzsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
CkBAIC0xODMyLDggKzIwNTQsOSBAQCB2b2lkIFRlc3RSZXN1bHQ6OkFkZFRlc3RQYXJ0UmVzdWx0
KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7CiAvLyBBZGRzIGEgdGVz
dCBwcm9wZXJ0eSB0byB0aGUgbGlzdC4gSWYgYSBwcm9wZXJ0eSB3aXRoIHRoZSBzYW1lIGtleSBh
cyB0aGUKIC8vIHN1cHBsaWVkIHByb3BlcnR5IGlzIGFscmVhZHkgcmVwcmVzZW50ZWQsIHRoZSB2
YWx1ZSBvZiB0aGlzIHRlc3RfcHJvcGVydHkKIC8vIHJlcGxhY2VzIHRoZSBvbGQgdmFsdWUgZm9y
IHRoYXQga2V5Lgotdm9pZCBUZXN0UmVzdWx0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBUZXN0UHJv
cGVydHkmIHRlc3RfcHJvcGVydHkpIHsKLSAgaWYgKCFWYWxpZGF0ZVRlc3RQcm9wZXJ0eSh0ZXN0
X3Byb3BlcnR5KSkgewordm9pZCBUZXN0UmVzdWx0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBzdGQ6
OnN0cmluZyYgeG1sX2VsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgeworICBpZiAoIVZhbGlkYXRlVGVzdFBy
b3BlcnR5KHhtbF9lbGVtZW50LCB0ZXN0X3Byb3BlcnR5KSkgewogICAgIHJldHVybjsKICAgfQog
ICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGxvY2soJnRlc3RfcHJvcGVyaXRlc19tdXRleF8pOwpAQCAt
MTg0NywyMSArMjA3MCw5NCBAQCB2b2lkIFRlc3RSZXN1bHQ6OlJlY29yZFByb3BlcnR5KGNvbnN0
IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgewogICBwcm9wZXJ0eV93aXRoX21hdGNoaW5n
X2tleS0+U2V0VmFsdWUodGVzdF9wcm9wZXJ0eS52YWx1ZSgpKTsKIH0KIAotLy8gQWRkcyBhIGZh
aWx1cmUgaWYgdGhlIGtleSBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBvZiBHb29nbGUgVGVzdAot
Ly8gdGVzdGNhc2UgdGFncy4gIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvcGVydHkgaXMgdmFsaWQu
Ci1ib29sIFRlc3RSZXN1bHQ6OlZhbGlkYXRlVGVzdFByb3BlcnR5KGNvbnN0IFRlc3RQcm9wZXJ0
eSYgdGVzdF9wcm9wZXJ0eSkgewotICBpbnRlcm5hbDo6U3RyaW5nIGtleSh0ZXN0X3Byb3BlcnR5
LmtleSgpKTsKLSAgaWYgKGtleSA9PSAibmFtZSIgfHwga2V5ID09ICJzdGF0dXMiIHx8IGtleSA9
PSAidGltZSIgfHwga2V5ID09ICJjbGFzc25hbWUiKSB7Ci0gICAgQUREX0ZBSUxVUkUoKQotICAg
ICAgICA8PCAiUmVzZXJ2ZWQga2V5IHVzZWQgaW4gUmVjb3JkUHJvcGVydHkoKTogIgotICAgICAg
ICA8PCBrZXkKLSAgICAgICAgPDwgIiAoJ25hbWUnLCAnc3RhdHVzJywgJ3RpbWUnLCBhbmQgJ2Ns
YXNzbmFtZScgYXJlIHJlc2VydmVkIGJ5ICIKLSAgICAgICAgPDwgR1RFU1RfTkFNRV8gPDwgIiki
OworLy8gVGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgYXR0cmlidXRlcyB1c2VkIGluIHRoZSA8dGVzdHN1
aXRlcz4gZWxlbWVudCBvZiBYTUwKKy8vIG91dHB1dC4KK3N0YXRpYyBjb25zdCBjaGFyKiBjb25z
dCBrUmVzZXJ2ZWRUZXN0U3VpdGVzQXR0cmlidXRlc1tdID0geworICAiZGlzYWJsZWQiLAorICAi
ZXJyb3JzIiwKKyAgImZhaWx1cmVzIiwKKyAgIm5hbWUiLAorICAicmFuZG9tX3NlZWQiLAorICAi
dGVzdHMiLAorICAidGltZSIsCisgICJ0aW1lc3RhbXAiCit9OworCisvLyBUaGUgbGlzdCBvZiBy
ZXNlcnZlZCBhdHRyaWJ1dGVzIHVzZWQgaW4gdGhlIDx0ZXN0c3VpdGU+IGVsZW1lbnQgb2YgWE1M
CisvLyBvdXRwdXQuCitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qga1Jlc2VydmVkVGVzdFN1aXRl
QXR0cmlidXRlc1tdID0geworICAiZGlzYWJsZWQiLAorICAiZXJyb3JzIiwKKyAgImZhaWx1cmVz
IiwKKyAgIm5hbWUiLAorICAidGVzdHMiLAorICAidGltZSIKK307CisKKy8vIFRoZSBsaXN0IG9m
IHJlc2VydmVkIGF0dHJpYnV0ZXMgdXNlZCBpbiB0aGUgPHRlc3RjYXNlPiBlbGVtZW50IG9mIFhN
TCBvdXRwdXQuCitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qga1Jlc2VydmVkVGVzdENhc2VBdHRy
aWJ1dGVzW10gPSB7CisgICJjbGFzc25hbWUiLAorICAibmFtZSIsCisgICJzdGF0dXMiLAorICAi
dGltZSIsCisgICJ0eXBlX3BhcmFtIiwKKyAgInZhbHVlX3BhcmFtIgorfTsKKwordGVtcGxhdGUg
PGludCBrU2l6ZT4KK3N0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBBcnJheUFzVmVjdG9yKGNvbnN0
IGNoYXIqIGNvbnN0ICgmYXJyYXkpW2tTaXplXSkgeworICByZXR1cm4gc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+KGFycmF5LCBhcnJheSArIGtTaXplKTsKK30KKworc3RhdGljIHN0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPiBHZXRSZXNlcnZlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KAorICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiB4bWxfZWxlbWVudCkgeworICBpZiAoeG1sX2VsZW1lbnQgPT0gInRlc3Rz
dWl0ZXMiKSB7CisgICAgcmV0dXJuIEFycmF5QXNWZWN0b3Ioa1Jlc2VydmVkVGVzdFN1aXRlc0F0
dHJpYnV0ZXMpOworICB9IGVsc2UgaWYgKHhtbF9lbGVtZW50ID09ICJ0ZXN0c3VpdGUiKSB7Cisg
ICAgcmV0dXJuIEFycmF5QXNWZWN0b3Ioa1Jlc2VydmVkVGVzdFN1aXRlQXR0cmlidXRlcyk7Cisg
IH0gZWxzZSBpZiAoeG1sX2VsZW1lbnQgPT0gInRlc3RjYXNlIikgeworICAgIHJldHVybiBBcnJh
eUFzVmVjdG9yKGtSZXNlcnZlZFRlc3RDYXNlQXR0cmlidXRlcyk7CisgIH0gZWxzZSB7CisgICAg
R1RFU1RfQ0hFQ0tfKGZhbHNlKSA8PCAiVW5yZWNvZ25pemVkIHhtbF9lbGVtZW50IHByb3ZpZGVk
OiAiIDw8IHhtbF9lbGVtZW50OworICB9CisgIC8vIFRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBi
dXQgc29tZSBjb21waWxlcnMgbWF5IG5vdCByZWFsaXplcyB0aGF0LgorICByZXR1cm4gc3RkOjp2
ZWN0b3I8c3RkOjpzdHJpbmc+KCk7Cit9CisKK3N0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRXb3Jk
TGlzdChjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHdvcmRzKSB7CisgIE1lc3NhZ2Ug
d29yZF9saXN0OworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzLnNpemUoKTsgKytpKSB7
CisgICAgaWYgKGkgPiAwICYmIHdvcmRzLnNpemUoKSA+IDIpIHsKKyAgICAgIHdvcmRfbGlzdCA8
PCAiLCAiOworICAgIH0KKyAgICBpZiAoaSA9PSB3b3Jkcy5zaXplKCkgLSAxKSB7CisgICAgICB3
b3JkX2xpc3QgPDwgImFuZCAiOworICAgIH0KKyAgICB3b3JkX2xpc3QgPDwgIiciIDw8IHdvcmRz
W2ldIDw8ICInIjsKKyAgfQorICByZXR1cm4gd29yZF9saXN0LkdldFN0cmluZygpOworfQorCiti
b29sIFZhbGlkYXRlVGVzdFByb3BlcnR5TmFtZShjb25zdCBzdGQ6OnN0cmluZyYgcHJvcGVydHlf
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiYgcmVzZXJ2ZWRfbmFtZXMpIHsKKyAgaWYgKHN0ZDo6ZmluZChyZXNlcnZlZF9u
YW1lcy5iZWdpbigpLCByZXNlcnZlZF9uYW1lcy5lbmQoKSwgcHJvcGVydHlfbmFtZSkgIT0KKyAg
ICAgICAgICByZXNlcnZlZF9uYW1lcy5lbmQoKSkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIlJl
c2VydmVkIGtleSB1c2VkIGluIFJlY29yZFByb3BlcnR5KCk6ICIgPDwgcHJvcGVydHlfbmFtZQor
ICAgICAgICAgICAgICAgICAgPDwgIiAoIiA8PCBGb3JtYXRXb3JkTGlzdChyZXNlcnZlZF9uYW1l
cykKKyAgICAgICAgICAgICAgICAgIDw8ICIgYXJlIHJlc2VydmVkIGJ5ICIgPDwgR1RFU1RfTkFN
RV8gPDwgIikiOwogICAgIHJldHVybiBmYWxzZTsKICAgfQogICByZXR1cm4gdHJ1ZTsKIH0KIAor
Ly8gQWRkcyBhIGZhaWx1cmUgaWYgdGhlIGtleSBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBvZiB0
aGUgZWxlbWVudCBuYW1lZAorLy8geG1sX2VsZW1lbnQuICBSZXR1cm5zIHRydWUgaWYgdGhlIHBy
b3BlcnR5IGlzIHZhbGlkLgorYm9vbCBUZXN0UmVzdWx0OjpWYWxpZGF0ZVRlc3RQcm9wZXJ0eShj
b25zdCBzdGQ6OnN0cmluZyYgeG1sX2VsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgeworICByZXR1
cm4gVmFsaWRhdGVUZXN0UHJvcGVydHlOYW1lKHRlc3RfcHJvcGVydHkua2V5KCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0UmVzZXJ2ZWRBdHRyaWJ1dGVzRm9yRWxlbWVu
dCh4bWxfZWxlbWVudCkpOworfQorCiAvLyBDbGVhcnMgdGhlIG9iamVjdC4KIHZvaWQgVGVzdFJl
c3VsdDo6Q2xlYXIoKSB7CiAgIHRlc3RfcGFydF9yZXN1bHRzXy5jbGVhcigpOwpAQCAtMTkxNCwx
NCArMjIxMCwxNSBAQCBpbnQgVGVzdFJlc3VsdDo6dGVzdF9wcm9wZXJ0eV9jb3VudCgpIGNvbnN0
IHsKIAogLy8gQ3JlYXRlcyBhIFRlc3Qgb2JqZWN0LgogCi0vLyBUaGUgYyd0b3Igc2F2ZXMgdGhl
IHZhbHVlcyBvZiBhbGwgR29vZ2xlIFRlc3QgZmxhZ3MuCisvLyBUaGUgYyd0b3Igc2F2ZXMgdGhl
IHN0YXRlcyBvZiBhbGwgZmxhZ3MuCiBUZXN0OjpUZXN0KCkKLSAgICA6IGd0ZXN0X2ZsYWdfc2F2
ZXJfKG5ldyBpbnRlcm5hbDo6R1Rlc3RGbGFnU2F2ZXIpIHsKKyAgICA6IGd0ZXN0X2ZsYWdfc2F2
ZXJfKG5ldyBHVEVTVF9GTEFHX1NBVkVSXykgewogfQogCi0vLyBUaGUgZCd0b3IgcmVzdG9yZXMg
dGhlIHZhbHVlcyBvZiBhbGwgR29vZ2xlIFRlc3QgZmxhZ3MuCisvLyBUaGUgZCd0b3IgcmVzdG9y
ZXMgdGhlIHN0YXRlcyBvZiBhbGwgZmxhZ3MuICBUaGUgYWN0dWFsIHdvcmsgaXMKKy8vIGRvbmUg
YnkgdGhlIGQndG9yIG9mIHRoZSBndGVzdF9mbGFnX3NhdmVyXyBmaWVsZCwgYW5kIHRodXMgbm90
CisvLyB2aXNpYmxlIGhlcmUuCiBUZXN0Ojp+VGVzdCgpIHsKLSAgZGVsZXRlIGd0ZXN0X2ZsYWdf
c2F2ZXJfOwogfQogCiAvLyBTZXRzIHVwIHRoZSB0ZXN0IGZpeHR1cmUuCkBAIC0xOTM3LDEyICsy
MjM0LDEyIEBAIHZvaWQgVGVzdDo6VGVhckRvd24oKSB7CiB9CiAKIC8vIEFsbG93cyB1c2VyIHN1
cHBsaWVkIGtleSB2YWx1ZSBwYWlycyB0byBiZSByZWNvcmRlZCBmb3IgbGF0ZXIgb3V0cHV0Lgot
dm9pZCBUZXN0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBjaGFyKiBrZXksIGNvbnN0IGNoYXIqIHZh
bHVlKSB7Ci0gIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5SZWNvcmRQcm9wZXJ0eUZvckN1cnJl
bnRUZXN0KGtleSwgdmFsdWUpOwordm9pZCBUZXN0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBzdGQ6
OnN0cmluZyYga2V5LCBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpIHsKKyAgVW5pdFRlc3Q6Okdl
dEluc3RhbmNlKCktPlJlY29yZFByb3BlcnR5KGtleSwgdmFsdWUpOwogfQogCiAvLyBBbGxvd3Mg
dXNlciBzdXBwbGllZCBrZXkgdmFsdWUgcGFpcnMgdG8gYmUgcmVjb3JkZWQgZm9yIGxhdGVyIG91
dHB1dC4KLXZvaWQgVGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBpbnQgdmFs
dWUpIHsKK3ZvaWQgVGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwg
aW50IHZhbHVlKSB7CiAgIE1lc3NhZ2UgdmFsdWVfbWVzc2FnZTsKICAgdmFsdWVfbWVzc2FnZSA8
PCB2YWx1ZTsKICAgUmVjb3JkUHJvcGVydHkoa2V5LCB2YWx1ZV9tZXNzYWdlLkdldFN0cmluZygp
LmNfc3RyKCkpOwpAQCAtMTk1MSw3ICsyMjQ4LDcgQEAgdm9pZCBUZXN0OjpSZWNvcmRQcm9wZXJ0
eShjb25zdCBjaGFyKiBrZXksIGludCB2YWx1ZSkgewogbmFtZXNwYWNlIGludGVybmFsIHsKIAog
dm9pZCBSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oVGVzdFBhcnRSZXN1bHQ6OlR5cGUg
cmVzdWx0X3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7CiAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgYSBmcmll
bmQgb2YgVW5pdFRlc3QgYW5kIGFzIHN1Y2ggaGFzIGFjY2VzcyB0bwogICAvLyBBZGRUZXN0UGFy
dFJlc3VsdC4KICAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPkFkZFRlc3RQYXJ0UmVzdWx0KApA
QCAtMTk1OSwyNyArMjI1NiwxMSBAQCB2b2lkIFJlcG9ydEZhaWx1cmVJblVua25vd25Mb2NhdGlv
bihUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKICAgICAgIE5VTEwsICAvLyBObyBp
bmZvIGFib3V0IHRoZSBzb3VyY2UgZmlsZSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLgog
ICAgICAgLTEsICAgIC8vIFdlIGhhdmUgbm8gaW5mbyBvbiB3aGljaCBsaW5lIGNhdXNlZCB0aGUg
ZXhjZXB0aW9uLgogICAgICAgbWVzc2FnZSwKLSAgICAgIFN0cmluZygpKTsgIC8vIE5vIHN0YWNr
IHRyYWNlLCBlaXRoZXIuCisgICAgICAiIik7ICAgLy8gTm8gc3RhY2sgdHJhY2UsIGVpdGhlci4K
IH0KIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0v
LyBXZSBhcmUgb24gV2luZG93cy4KLQotLy8gQWRkcyBhbiAiZXhjZXB0aW9uIHRocm93biIgZmF0
YWwgZmFpbHVyZSB0byB0aGUgY3VycmVudCB0ZXN0Lgotc3RhdGljIHZvaWQgQWRkRXhjZXB0aW9u
VGhyb3duRmFpbHVyZShEV09SRCBleGNlcHRpb25fY29kZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbG9jYXRpb24pIHsKLSAgTWVzc2FnZSBtZXNz
YWdlOwotICBtZXNzYWdlIDw8ICJFeGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAweCIgPDwgc3Rk
OjpzZXRiYXNlKDE2KSA8PAotICAgIGV4Y2VwdGlvbl9jb2RlIDw8IHN0ZDo6c2V0YmFzZSgxMCkg
PDwgIiBpbiAiIDw8IGxvY2F0aW9uIDw8ICIuIjsKLQotICBpbnRlcm5hbDo6UmVwb3J0RmFpbHVy
ZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UuR2V0U3RyaW5nKCkp
OwotfQotCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQogLy8gR29vZ2xlIFRlc3QgcmVx
dWlyZXMgYWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSB0byB1c2UgdGhlIHNhbWUgdGVz
dAogLy8gZml4dHVyZSBjbGFzcy4gIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBjdXJyZW50
IHRlc3QgaGFzIHRoZQogLy8gc2FtZSBmaXh0dXJlIGNsYXNzIGFzIHRoZSBmaXJzdCB0ZXN0IGlu
IHRoZSBjdXJyZW50IHRlc3QgY2FzZS4gIElmCkBAIC0xOTkwLDE1ICsyMjcxLDEzIEBAIGJvb2wg
VGVzdDo6SGFzU2FtZUZpeHR1cmVDbGFzcygpIHsKICAgY29uc3QgVGVzdENhc2UqIGNvbnN0IHRl
c3RfY2FzZSA9IGltcGwtPmN1cnJlbnRfdGVzdF9jYXNlKCk7CiAKICAgLy8gSW5mbyBhYm91dCB0
aGUgZmlyc3QgdGVzdCBpbiB0aGUgY3VycmVudCB0ZXN0IGNhc2UuCi0gIGNvbnN0IGludGVybmFs
OjpUZXN0SW5mb0ltcGwqIGNvbnN0IGZpcnN0X3Rlc3RfaW5mbyA9Ci0gICAgICB0ZXN0X2Nhc2Ut
PnRlc3RfaW5mb19saXN0KClbMF0tPmltcGwoKTsKLSAgY29uc3QgaW50ZXJuYWw6OlR5cGVJZCBm
aXJzdF9maXh0dXJlX2lkID0gZmlyc3RfdGVzdF9pbmZvLT5maXh0dXJlX2NsYXNzX2lkKCk7Cisg
IGNvbnN0IFRlc3RJbmZvKiBjb25zdCBmaXJzdF90ZXN0X2luZm8gPSB0ZXN0X2Nhc2UtPnRlc3Rf
aW5mb19saXN0KClbMF07CisgIGNvbnN0IGludGVybmFsOjpUeXBlSWQgZmlyc3RfZml4dHVyZV9p
ZCA9IGZpcnN0X3Rlc3RfaW5mby0+Zml4dHVyZV9jbGFzc19pZF87CiAgIGNvbnN0IGNoYXIqIGNv
bnN0IGZpcnN0X3Rlc3RfbmFtZSA9IGZpcnN0X3Rlc3RfaW5mby0+bmFtZSgpOwogCiAgIC8vIElu
Zm8gYWJvdXQgdGhlIGN1cnJlbnQgdGVzdC4KLSAgY29uc3QgaW50ZXJuYWw6OlRlc3RJbmZvSW1w
bCogY29uc3QgdGhpc190ZXN0X2luZm8gPQotICAgICAgaW1wbC0+Y3VycmVudF90ZXN0X2luZm8o
KS0+aW1wbCgpOwotICBjb25zdCBpbnRlcm5hbDo6VHlwZUlkIHRoaXNfZml4dHVyZV9pZCA9IHRo
aXNfdGVzdF9pbmZvLT5maXh0dXJlX2NsYXNzX2lkKCk7CisgIGNvbnN0IFRlc3RJbmZvKiBjb25z
dCB0aGlzX3Rlc3RfaW5mbyA9IGltcGwtPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisgIGNvbnN0IGlu
dGVybmFsOjpUeXBlSWQgdGhpc19maXh0dXJlX2lkID0gdGhpc190ZXN0X2luZm8tPmZpeHR1cmVf
Y2xhc3NfaWRfOwogICBjb25zdCBjaGFyKiBjb25zdCB0aGlzX3Rlc3RfbmFtZSA9IHRoaXNfdGVz
dF9pbmZvLT5uYW1lKCk7CiAKICAgaWYgKHRoaXNfZml4dHVyZV9pZCAhPSBmaXJzdF9maXh0dXJl
X2lkKSB7CkBAIC0yMDA4LDggKzIyODcsOCBAQCBib29sIFRlc3Q6Okhhc1NhbWVGaXh0dXJlQ2xh
c3MoKSB7CiAgICAgY29uc3QgYm9vbCB0aGlzX2lzX1RFU1QgPSB0aGlzX2ZpeHR1cmVfaWQgPT0g
aW50ZXJuYWw6OkdldFRlc3RUeXBlSWQoKTsKIAogICAgIGlmIChmaXJzdF9pc19URVNUIHx8IHRo
aXNfaXNfVEVTVCkgewotICAgICAgLy8gVGhlIHVzZXIgbWl4ZWQgVEVTVCBhbmQgVEVTVF9GIGlu
IHRoaXMgdGVzdCBjYXNlIC0gd2UnbGwgdGVsbAotICAgICAgLy8gaGltL2hlciBob3cgdG8gZml4
IGl0LgorICAgICAgLy8gQm90aCBURVNUIGFuZCBURVNUX0YgYXBwZWFyIGluIHNhbWUgdGVzdCBj
YXNlLCB3aGljaCBpcyBpbmNvcnJlY3QuCisgICAgICAvLyBUZWxsIHRoZSB1c2VyIGhvdyB0byBm
aXggdGhpcy4KIAogICAgICAgLy8gR2V0cyB0aGUgbmFtZSBvZiB0aGUgVEVTVCBhbmQgdGhlIG5h
bWUgb2YgdGhlIFRFU1RfRi4gIE5vdGUKICAgICAgIC8vIHRoYXQgZmlyc3RfaXNfVEVTVCBhbmQg
dGhpc19pc19URVNUIGNhbm5vdCBib3RoIGJlIHRydWUsIGFzCkBAIC0yMDI5LDggKzIzMDgsOCBA
QCBib29sIFRlc3Q6Okhhc1NhbWVGaXh0dXJlQ2xhc3MoKSB7CiAgICAgICAgICAgPDwgIndhbnQg
dG8gY2hhbmdlIHRoZSBURVNUIHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRvIGFub3RoZXIgdGVzdFxu
IgogICAgICAgICAgIDw8ICJjYXNlLiI7CiAgICAgfSBlbHNlIHsKLSAgICAgIC8vIFRoZSB1c2Vy
IGRlZmluZWQgdHdvIGZpeHR1cmUgY2xhc3NlcyB3aXRoIHRoZSBzYW1lIG5hbWUgaW4KLSAgICAg
IC8vIHR3byBuYW1lc3BhY2VzIC0gd2UnbGwgdGVsbCBoaW0vaGVyIGhvdyB0byBmaXggaXQuCisg
ICAgICAvLyBUd28gZml4dHVyZSBjbGFzc2VzIHdpdGggdGhlIHNhbWUgbmFtZSBhcHBlYXIgaW4g
dHdvIGRpZmZlcmVudAorICAgICAgLy8gbmFtZXNwYWNlcywgd2hpY2ggaXMgbm90IGFsbG93ZWQu
IFRlbGwgdGhlIHVzZXIgaG93IHRvIGZpeCB0aGlzLgogICAgICAgQUREX0ZBSUxVUkUoKQogICAg
ICAgICAgIDw8ICJBbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBz
YW1lIHRlc3QgZml4dHVyZVxuIgogICAgICAgICAgIDw8ICJjbGFzcy4gIEhvd2V2ZXIsIGluIHRl
c3QgY2FzZSAiCkBAIC0yMDQ4LDYyICsyMzI3LDE2MiBAQCBib29sIFRlc3Q6Okhhc1NhbWVGaXh0
dXJlQ2xhc3MoKSB7CiAgIHJldHVybiB0cnVlOwogfQogCi0vLyBSdW5zIHRoZSB0ZXN0IGFuZCB1
cGRhdGVzIHRoZSB0ZXN0IHJlc3VsdC4KLXZvaWQgVGVzdDo6UnVuKCkgewotICBpZiAoIUhhc1Nh
bWVGaXh0dXJlQ2xhc3MoKSkgcmV0dXJuOworI2lmIEdURVNUX0hBU19TRUgKIAotICBpbnRlcm5h
bDo6VW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0gaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgp
OworLy8gQWRkcyBhbiAiZXhjZXB0aW9uIHRocm93biIgZmF0YWwgZmFpbHVyZSB0byB0aGUgY3Vy
cmVudCB0ZXN0LiAgVGhpcworLy8gZnVuY3Rpb24gcmV0dXJucyBpdHMgcmVzdWx0IHZpYSBhbiBv
dXRwdXQgcGFyYW1ldGVyIHBvaW50ZXIgYmVjYXVzZSBWQysrCisvLyBwcm9oaWJpdHMgY3JlYXRp
b24gb2Ygb2JqZWN0cyB3aXRoIGRlc3RydWN0b3JzIG9uIHN0YWNrIGluIGZ1bmN0aW9ucworLy8g
dXNpbmcgX190cnkgKHNlZSBlcnJvciBDMjcxMikuCitzdGF0aWMgc3RkOjpzdHJpbmcqIEZvcm1h
dFNlaEV4Y2VwdGlvbk1lc3NhZ2UoRFdPUkQgZXhjZXB0aW9uX2NvZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbG9jYXRpb24pIHsK
KyAgTWVzc2FnZSBtZXNzYWdlOworICBtZXNzYWdlIDw8ICJTRUggZXhjZXB0aW9uIHdpdGggY29k
ZSAweCIgPDwgc3RkOjpzZXRiYXNlKDE2KSA8PAorICAgIGV4Y2VwdGlvbl9jb2RlIDw8IHN0ZDo6
c2V0YmFzZSgxMCkgPDwgIiB0aHJvd24gaW4gIiA8PCBsb2NhdGlvbiA8PCAiLiI7CisKKyAgcmV0
dXJuIG5ldyBzdGQ6OnN0cmluZyhtZXNzYWdlLkdldFN0cmluZygpKTsKK30KKworI2VuZGlmICAv
LyBHVEVTVF9IQVNfU0VICisKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKyNpZiBHVEVTVF9IQVNf
RVhDRVBUSU9OUworCisvLyBBZGRzIGFuICJleGNlcHRpb24gdGhyb3duIiBmYXRhbCBmYWlsdXJl
IHRvIHRoZSBjdXJyZW50IHRlc3QuCitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0Q3h4RXhjZXB0
aW9uTWVzc2FnZShjb25zdCBjaGFyKiBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7CisgIE1lc3Nh
Z2UgbWVzc2FnZTsKKyAgaWYgKGRlc2NyaXB0aW9uICE9IE5VTEwpIHsKKyAgICBtZXNzYWdlIDw8
ICJDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gXCIiIDw8IGRlc2NyaXB0aW9uIDw8ICJc
IiI7CisgIH0gZWxzZSB7CisgICAgbWVzc2FnZSA8PCAiVW5rbm93biBDKysgZXhjZXB0aW9uIjsK
KyAgfQorICBtZXNzYWdlIDw8ICIgdGhyb3duIGluICIgPDwgbG9jYXRpb24gPDwgIi4iOworCisg
IHJldHVybiBtZXNzYWdlLkdldFN0cmluZygpOworfQorCitzdGF0aWMgc3RkOjpzdHJpbmcgUHJp
bnRUZXN0UGFydFJlc3VsdFRvU3RyaW5nKAorICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0
X3BhcnRfcmVzdWx0KTsKKworR29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb246Okdvb2dsZVRlc3RG
YWlsdXJlRXhjZXB0aW9uKAorICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBmYWlsdXJlKQorICAg
IDogOjpzdGQ6OnJ1bnRpbWVfZXJyb3IoUHJpbnRUZXN0UGFydFJlc3VsdFRvU3RyaW5nKGZhaWx1
cmUpLmNfc3RyKCkpIHt9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworLy8g
V2UgcHV0IHRoZXNlIGhlbHBlciBmdW5jdGlvbnMgaW4gdGhlIGludGVybmFsIG5hbWVzcGFjZSBh
cyBJQk0ncyB4bEMKKy8vIGNvbXBpbGVyIHJlamVjdHMgdGhlIGNvZGUgaWYgdGhleSB3ZXJlIGRl
Y2xhcmVkIHN0YXRpYy4KKworLy8gUnVucyB0aGUgZ2l2ZW4gbWV0aG9kIGFuZCBoYW5kbGVzIFNF
SCBleGNlcHRpb25zIGl0IHRocm93cywgd2hlbgorLy8gU0VIIGlzIHN1cHBvcnRlZDsgcmV0dXJu
cyB0aGUgMC12YWx1ZSBmb3IgdHlwZSBSZXN1bHQgaW4gY2FzZSBvZiBhbgorLy8gU0VIIGV4Y2Vw
dGlvbi4gIChNaWNyb3NvZnQgY29tcGlsZXJzIGNhbm5vdCBoYW5kbGUgU0VIIGFuZCBDKysKKy8v
IGV4Y2VwdGlvbnMgaW4gdGhlIHNhbWUgZnVuY3Rpb24uICBUaGVyZWZvcmUsIHdlIHByb3ZpZGUg
YSBzZXBhcmF0ZQorLy8gd3JhcHBlciBmdW5jdGlvbiBmb3IgaGFuZGxpbmcgU0VIIGV4Y2VwdGlv
bnMuKQordGVtcGxhdGUgPGNsYXNzIFQsIHR5cGVuYW1lIFJlc3VsdD4KK1Jlc3VsdCBIYW5kbGVT
ZWhFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAgICBUKiBvYmplY3QsIFJlc3VsdCAo
VDo6Km1ldGhvZCkoKSwgY29uc3QgY2hhciogbG9jYXRpb24pIHsKICNpZiBHVEVTVF9IQVNfU0VI
Ci0gIC8vIENhdGNoIFNFSC1zdHlsZSBleGNlcHRpb25zLgotICBpbXBsLT5vc19zdGFja190cmFj
ZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwogICBfX3RyeSB7Ci0gICAgU2V0VXAoKTsK
LSAgfSBfX2V4Y2VwdChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpHVGVzdFNob3VsZFByb2Nl
c3NTRUgoCisgICAgcmV0dXJuIChvYmplY3QtPiptZXRob2QpKCk7CisgIH0gX19leGNlcHQgKGlu
dGVybmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCggIC8vIE5PTElO
VAogICAgICAgR2V0RXhjZXB0aW9uQ29kZSgpKSkgewotICAgIEFkZEV4Y2VwdGlvblRocm93bkZh
aWx1cmUoR2V0RXhjZXB0aW9uQ29kZSgpLCAiU2V0VXAoKSIpOworICAgIC8vIFdlIGNyZWF0ZSB0
aGUgZXhjZXB0aW9uIG1lc3NhZ2Ugb24gdGhlIGhlYXAgYmVjYXVzZSBWQysrIHByb2hpYml0cwor
ICAgIC8vIGNyZWF0aW9uIG9mIG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycyBvbiBzdGFjayBpbiBm
dW5jdGlvbnMgdXNpbmcgX190cnkKKyAgICAvLyAoc2VlIGVycm9yIEMyNzEyKS4KKyAgICBzdGQ6
OnN0cmluZyogZXhjZXB0aW9uX21lc3NhZ2UgPSBGb3JtYXRTZWhFeGNlcHRpb25NZXNzYWdlKAor
ICAgICAgICBHZXRFeGNlcHRpb25Db2RlKCksIGxvY2F0aW9uKTsKKyAgICBpbnRlcm5hbDo6UmVw
b3J0RmFpbHVyZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4Y2VwdGlv
bl9tZXNzYWdlKTsKKyAgICBkZWxldGUgZXhjZXB0aW9uX21lc3NhZ2U7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFJlc3VsdD4oMCk7CiAgIH0KKyNlbHNlCisgICh2b2lkKWxvY2F0aW9uOworICBy
ZXR1cm4gKG9iamVjdC0+Km1ldGhvZCkoKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAorfQog
Ci0gIC8vIFdlIHdpbGwgcnVuIHRoZSB0ZXN0IG9ubHkgaWYgU2V0VXAoKSBoYWQgbm8gZmF0YWwg
ZmFpbHVyZS4KLSAgaWYgKCFIYXNGYXRhbEZhaWx1cmUoKSkgewotICAgIGltcGwtPm9zX3N0YWNr
X3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7Ci0gICAgX190cnkgewotICAgICAg
VGVzdEJvZHkoKTsKLSAgICB9IF9fZXhjZXB0KGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6OkdU
ZXN0U2hvdWxkUHJvY2Vzc1NFSCgKLSAgICAgICAgR2V0RXhjZXB0aW9uQ29kZSgpKSkgewotICAg
ICAgQWRkRXhjZXB0aW9uVGhyb3duRmFpbHVyZShHZXRFeGNlcHRpb25Db2RlKCksICJ0aGUgdGVz
dCBib2R5Iik7CisvLyBSdW5zIHRoZSBnaXZlbiBtZXRob2QgYW5kIGNhdGNoZXMgYW5kIHJlcG9y
dHMgQysrIGFuZC9vciBTRUgtc3R5bGUKKy8vIGV4Y2VwdGlvbnMsIGlmIHRoZXkgYXJlIHN1cHBv
cnRlZDsgcmV0dXJucyB0aGUgMC12YWx1ZSBmb3IgdHlwZQorLy8gUmVzdWx0IGluIGNhc2Ugb2Yg
YW4gU0VIIGV4Y2VwdGlvbi4KK3RlbXBsYXRlIDxjbGFzcyBULCB0eXBlbmFtZSBSZXN1bHQ+CitS
ZXN1bHQgSGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgVCogb2JqZWN0
LCBSZXN1bHQgKFQ6OiptZXRob2QpKCksIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7CisgIC8vIE5P
VEU6IFRoZSB1c2VyIGNvZGUgY2FuIGFmZmVjdCB0aGUgd2F5IGluIHdoaWNoIEdvb2dsZSBUZXN0
IGhhbmRsZXMKKyAgLy8gZXhjZXB0aW9ucyBieSBzZXR0aW5nIEdURVNUX0ZMQUcoY2F0Y2hfZXhj
ZXB0aW9ucyksIGJ1dCBvbmx5IGJlZm9yZQorICAvLyBSVU5fQUxMX1RFU1RTKCkgc3RhcnRzLiBJ
dCBpcyB0ZWNobmljYWxseSBwb3NzaWJsZSB0byBjaGVjayB0aGUgZmxhZworICAvLyBhZnRlciB0
aGUgZXhjZXB0aW9uIGlzIGNhdWdodCBhbmQgZWl0aGVyIHJlcG9ydCBvciByZS10aHJvdyB0aGUK
KyAgLy8gZXhjZXB0aW9uIGJhc2VkIG9uIHRoZSBmbGFnJ3MgdmFsdWU6CisgIC8vCisgIC8vIHRy
eSB7CisgIC8vICAgLy8gUGVyZm9ybSB0aGUgdGVzdCBtZXRob2QuCisgIC8vIH0gY2F0Y2ggKC4u
LikgeworICAvLyAgIGlmIChHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKQorICAvLyAgICAg
Ly8gUmVwb3J0IHRoZSBleGNlcHRpb24gYXMgZmFpbHVyZS4KKyAgLy8gICBlbHNlCisgIC8vICAg
ICB0aHJvdzsgIC8vIFJlLXRocm93cyB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uLgorICAvLyB9Cisg
IC8vCisgIC8vIEhvd2V2ZXIsIHRoZSBwdXJwb3NlIG9mIHRoaXMgZmxhZyBpcyB0byBhbGxvdyB0
aGUgcHJvZ3JhbSB0byBkcm9wIGludG8KKyAgLy8gdGhlIGRlYnVnZ2VyIHdoZW4gdGhlIGV4Y2Vw
dGlvbiBpcyB0aHJvd24uIE9uIG1vc3QgcGxhdGZvcm1zLCBvbmNlIHRoZQorICAvLyBjb250cm9s
IGVudGVycyB0aGUgY2F0Y2ggYmxvY2ssIHRoZSBleGNlcHRpb24gb3JpZ2luIGluZm9ybWF0aW9u
IGlzCisgIC8vIGxvc3QgYW5kIHRoZSBkZWJ1Z2dlciB3aWxsIHN0b3AgdGhlIHByb2dyYW0gYXQg
dGhlIHBvaW50IG9mIHRoZQorICAvLyByZS10aHJvdyBpbiB0aGlzIGZ1bmN0aW9uIC0tIGluc3Rl
YWQgb2YgYXQgdGhlIHBvaW50IG9mIHRoZSBvcmlnaW5hbAorICAvLyB0aHJvdyBzdGF0ZW1lbnQg
aW4gdGhlIGNvZGUgdW5kZXIgdGVzdC4gIEZvciB0aGlzIHJlYXNvbiwgd2UgcGVyZm9ybQorICAv
LyB0aGUgY2hlY2sgZWFybHksIHNhY3JpZmljaW5nIHRoZSBhYmlsaXR5IHRvIGFmZmVjdCBHb29n
bGUgVGVzdCdzCisgIC8vIGV4Y2VwdGlvbiBoYW5kbGluZyBpbiB0aGUgbWV0aG9kIHdoZXJlIHRo
ZSBleGNlcHRpb24gaXMgdGhyb3duLgorICBpZiAoaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgp
LT5jYXRjaF9leGNlcHRpb25zKCkpIHsKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworICAgIHRy
eSB7CisgICAgICByZXR1cm4gSGFuZGxlU2VoRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQo
b2JqZWN0LCBtZXRob2QsIGxvY2F0aW9uKTsKKyAgICB9IGNhdGNoIChjb25zdCBpbnRlcm5hbDo6
R29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24mKSB7ICAvLyBOT0xJTlQKKyAgICAgIC8vIFRoaXMg
ZXhjZXB0aW9uIHR5cGUgY2FuIG9ubHkgYmUgdGhyb3duIGJ5IGEgZmFpbGVkIEdvb2dsZQorICAg
ICAgLy8gVGVzdCBhc3NlcnRpb24gd2l0aCB0aGUgaW50ZW50aW9uIG9mIGxldHRpbmcgYW5vdGhl
ciB0ZXN0aW5nCisgICAgICAvLyBmcmFtZXdvcmsgY2F0Y2ggaXQuICBUaGVyZWZvcmUgd2UganVz
dCByZS10aHJvdyBpdC4KKyAgICAgIHRocm93OworICAgIH0gY2F0Y2ggKGNvbnN0IHN0ZDo6ZXhj
ZXB0aW9uJiBlKSB7ICAvLyBOT0xJTlQKKyAgICAgIGludGVybmFsOjpSZXBvcnRGYWlsdXJlSW5V
bmtub3duTG9jYXRpb24oCisgICAgICAgICAgVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUs
CisgICAgICAgICAgRm9ybWF0Q3h4RXhjZXB0aW9uTWVzc2FnZShlLndoYXQoKSwgbG9jYXRpb24p
KTsKKyAgICB9IGNhdGNoICguLi4pIHsgIC8vIE5PTElOVAorICAgICAgaW50ZXJuYWw6OlJlcG9y
dEZhaWx1cmVJblVua25vd25Mb2NhdGlvbigKKyAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6a0Zh
dGFsRmFpbHVyZSwKKyAgICAgICAgICBGb3JtYXRDeHhFeGNlcHRpb25NZXNzYWdlKE5VTEwsIGxv
Y2F0aW9uKSk7CiAgICAgfQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZXN1bHQ+KDApOworI2Vs
c2UKKyAgICByZXR1cm4gSGFuZGxlU2VoRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQob2Jq
ZWN0LCBtZXRob2QsIGxvY2F0aW9uKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMK
KyAgfSBlbHNlIHsKKyAgICByZXR1cm4gKG9iamVjdC0+Km1ldGhvZCkoKTsKICAgfQorfQogCi0g
IC8vIEhvd2V2ZXIsIHdlIHdhbnQgdG8gY2xlYW4gdXAgYXMgbXVjaCBhcyBwb3NzaWJsZS4gIEhl
bmNlIHdlIHdpbGwKLSAgLy8gYWx3YXlzIGNhbGwgVGVhckRvd24oKSwgZXZlbiBpZiBTZXRVcCgp
IG9yIHRoZSB0ZXN0IGJvZHkgaGFzCi0gIC8vIGZhaWxlZC4KLSAgaW1wbC0+b3Nfc3RhY2tfdHJh
Y2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgX190cnkgewotICAgIFRlYXJEb3du
KCk7Ci0gIH0gX19leGNlcHQoaW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6R1Rlc3RTaG91bGRQ
cm9jZXNzU0VIKAotICAgICAgR2V0RXhjZXB0aW9uQ29kZSgpKSkgewotICAgIEFkZEV4Y2VwdGlv
blRocm93bkZhaWx1cmUoR2V0RXhjZXB0aW9uQ29kZSgpLCAiVGVhckRvd24oKSIpOwotICB9Ci0K
LSNlbHNlICAvLyBXZSBhcmUgb24gYSBjb21waWxlciBvciBwbGF0Zm9ybSB0aGF0IGRvZXNuJ3Qg
c3VwcG9ydCBTRUguCi0gIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmlu
Z0dUZXN0KCk7Ci0gIFNldFVwKCk7Cit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKworLy8gUnVu
cyB0aGUgdGVzdCBhbmQgdXBkYXRlcyB0aGUgdGVzdCByZXN1bHQuCit2b2lkIFRlc3Q6OlJ1bigp
IHsKKyAgaWYgKCFIYXNTYW1lRml4dHVyZUNsYXNzKCkpIHJldHVybjsKIAorICBpbnRlcm5hbDo6
VW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0gaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpOwor
ICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOworICBp
bnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQodGhpcywgJlRlc3Q6
OlNldFVwLCAiU2V0VXAoKSIpOwogICAvLyBXZSB3aWxsIHJ1biB0aGUgdGVzdCBvbmx5IGlmIFNl
dFVwKCkgd2FzIHN1Y2Nlc3NmdWwuCiAgIGlmICghSGFzRmF0YWxGYWlsdXJlKCkpIHsKICAgICBp
bXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotICAgIFRl
c3RCb2R5KCk7CisgICAgaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9y
dGVkKAorICAgICAgICB0aGlzLCAmVGVzdDo6VGVzdEJvZHksICJ0aGUgdGVzdCBib2R5Iik7CiAg
IH0KIAogICAvLyBIb3dldmVyLCB3ZSB3YW50IHRvIGNsZWFuIHVwIGFzIG11Y2ggYXMgcG9zc2li
bGUuICBIZW5jZSB3ZSB3aWxsCiAgIC8vIGFsd2F5cyBjYWxsIFRlYXJEb3duKCksIGV2ZW4gaWYg
U2V0VXAoKSBvciB0aGUgdGVzdCBib2R5IGhhcwogICAvLyBmYWlsZWQuCiAgIGltcGwtPm9zX3N0
YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7Ci0gIFRlYXJEb3duKCk7Ci0j
ZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKKyAgaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1l
dGhvZElmU3VwcG9ydGVkKAorICAgICAgdGhpcywgJlRlc3Q6OlRlYXJEb3duLCAiVGVhckRvd24o
KSIpOwogfQogCi0KIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGN1cnJlbnQgdGVzdCBoYXMgYSBm
YXRhbCBmYWlsdXJlLgogYm9vbCBUZXN0OjpIYXNGYXRhbEZhaWx1cmUoKSB7CiAgIHJldHVybiBp
bnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCktPmN1cnJlbnRfdGVzdF9yZXN1bHQoKS0+SGFzRmF0
YWxGYWlsdXJlKCk7CkBAIC0yMTE4LDIyICsyNDk3LDI4IEBAIGJvb2wgVGVzdDo6SGFzTm9uZmF0
YWxGYWlsdXJlKCkgewogLy8gY2xhc3MgVGVzdEluZm8KIAogLy8gQ29uc3RydWN0cyBhIFRlc3RJ
bmZvIG9iamVjdC4gSXQgYXNzdW1lcyBvd25lcnNoaXAgb2YgdGhlIHRlc3QgZmFjdG9yeQotLy8g
b2JqZWN0IHZpYSBpbXBsXy4KLVRlc3RJbmZvOjpUZXN0SW5mbyhjb25zdCBjaGFyKiBhX3Rlc3Rf
Y2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX3Rlc3RfY2FzZV9jb21tZW50LAotICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGFfY29tbWVudCwKKy8vIG9iamVjdC4KK1Rlc3RJbmZvOjpU
ZXN0SW5mbyhjb25zdCBzdGQ6OnN0cmluZyYgYV90ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgYV9uYW1lLAorICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGFfdHlwZV9wYXJhbSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBh
X3ZhbHVlX3BhcmFtLAorICAgICAgICAgICAgICAgICAgIGludGVybmFsOjpDb2RlTG9jYXRpb24g
YV9jb2RlX2xvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgIGludGVybmFsOjpUeXBlSWQgZml4
dHVyZV9jbGFzc19pZCwKLSAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlC
YXNlKiBmYWN0b3J5KSB7Ci0gIGltcGxfID0gbmV3IGludGVybmFsOjpUZXN0SW5mb0ltcGwodGhp
cywgYV90ZXN0X2Nhc2VfbmFtZSwgYV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFfdGVzdF9jYXNlX2NvbW1lbnQsIGFfY29tbWVudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmaXh0dXJlX2NsYXNzX2lkLCBmYWN0b3J5KTsKLX0KKyAg
ICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5KQorICAg
IDogdGVzdF9jYXNlX25hbWVfKGFfdGVzdF9jYXNlX25hbWUpLAorICAgICAgbmFtZV8oYV9uYW1l
KSwKKyAgICAgIHR5cGVfcGFyYW1fKGFfdHlwZV9wYXJhbSA/IG5ldyBzdGQ6OnN0cmluZyhhX3R5
cGVfcGFyYW0pIDogTlVMTCksCisgICAgICB2YWx1ZV9wYXJhbV8oYV92YWx1ZV9wYXJhbSA/IG5l
dyBzdGQ6OnN0cmluZyhhX3ZhbHVlX3BhcmFtKSA6IE5VTEwpLAorICAgICAgbG9jYXRpb25fKGFf
Y29kZV9sb2NhdGlvbiksCisgICAgICBmaXh0dXJlX2NsYXNzX2lkXyhmaXh0dXJlX2NsYXNzX2lk
KSwKKyAgICAgIHNob3VsZF9ydW5fKGZhbHNlKSwKKyAgICAgIGlzX2Rpc2FibGVkXyhmYWxzZSks
CisgICAgICBtYXRjaGVzX2ZpbHRlcl8oZmFsc2UpLAorICAgICAgZmFjdG9yeV8oZmFjdG9yeSks
CisgICAgICByZXN1bHRfKCkge30KIAogLy8gRGVzdHJ1Y3RzIGEgVGVzdEluZm8gb2JqZWN0Lgot
VGVzdEluZm86On5UZXN0SW5mbygpIHsKLSAgZGVsZXRlIGltcGxfOwotfQorVGVzdEluZm86On5U
ZXN0SW5mbygpIHsgZGVsZXRlIGZhY3RvcnlfOyB9CiAKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAK
QEAgLTIxNDQsMTAgKzI1MjksMTEgQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIC8vCiAvLyAgIHRl
c3RfY2FzZV9uYW1lOiAgIG5hbWUgb2YgdGhlIHRlc3QgY2FzZQogLy8gICBuYW1lOiAgICAgICAg
ICAgICBuYW1lIG9mIHRoZSB0ZXN0Ci0vLyAgIHRlc3RfY2FzZV9jb21tZW50OiBhIGNvbW1lbnQg
b24gdGhlIHRlc3QgY2FzZSB0aGF0IHdpbGwgYmUgaW5jbHVkZWQgaW4KLS8vICAgICAgICAgICAg
ICAgICAgICAgIHRoZSB0ZXN0IG91dHB1dAotLy8gICBjb21tZW50OiAgICAgICAgICBhIGNvbW1l
bnQgb24gdGhlIHRlc3QgdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZQotLy8gICAgICAgICAg
ICAgICAgICAgICB0ZXN0IG91dHB1dAorLy8gICB0eXBlX3BhcmFtOiAgICAgICB0aGUgbmFtZSBv
ZiB0aGUgdGVzdCdzIHR5cGUgcGFyYW1ldGVyLCBvciBOVUxMIGlmCisvLyAgICAgICAgICAgICAg
ICAgICAgIHRoaXMgaXMgbm90IGEgdHlwZWQgb3IgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4K
Ky8vICAgdmFsdWVfcGFyYW06ICAgICAgdGV4dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGVzdCdz
IHZhbHVlIHBhcmFtZXRlciwKKy8vICAgICAgICAgICAgICAgICAgICAgb3IgTlVMTCBpZiB0aGlz
IGlzIG5vdCBhIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKy8vICAgY29kZV9sb2NhdGlvbjog
ICAgY29kZSBsb2NhdGlvbiB3aGVyZSB0aGUgdGVzdCBpcyBkZWZpbmVkCiAvLyAgIGZpeHR1cmVf
Y2xhc3NfaWQ6IElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKIC8vICAgc2V0X3VwX3RjOiAg
ICAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSB0ZXN0IGNhc2UK
IC8vICAgdGVhcl9kb3duX3RjOiAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCB0ZWFy
cyBkb3duIHRoZSB0ZXN0IGNhc2UKQEAgLTIxNTUsMjIgKzI1NDEsMjUgQEAgbmFtZXNwYWNlIGlu
dGVybmFsIHsKIC8vICAgICAgICAgICAgICAgICAgICAgVGhlIG5ld2x5IGNyZWF0ZWQgVGVzdElu
Zm8gaW5zdGFuY2Ugd2lsbCBhc3N1bWUKIC8vICAgICAgICAgICAgICAgICAgICAgb3duZXJzaGlw
IG9mIHRoZSBmYWN0b3J5IG9iamVjdC4KIFRlc3RJbmZvKiBNYWtlQW5kUmVnaXN0ZXJUZXN0SW5m
bygKLSAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwgY29uc3QgY2hhciogbmFtZSwKLSAg
ICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfY29tbWVudCwgY29uc3QgY2hhciogY29tbWVudCwKKyAg
ICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICBjb25zdCBjaGFyKiBuYW1lLAorICAg
IGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0sCisgICAgY29uc3QgY2hhciogdmFsdWVfcGFyYW0sCisg
ICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24sCiAgICAgVHlwZUlkIGZpeHR1cmVfY2xhc3Nf
aWQsCiAgICAgU2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAgIFRlYXJEb3duVGVzdENh
c2VGdW5jIHRlYXJfZG93bl90YywKICAgICBUZXN0RmFjdG9yeUJhc2UqIGZhY3RvcnkpIHsKICAg
VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9Ci0gICAgICBuZXcgVGVzdEluZm8odGVzdF9jYXNl
X25hbWUsIG5hbWUsIHRlc3RfY2FzZV9jb21tZW50LCBjb21tZW50LAotICAgICAgICAgICAgICAg
ICAgIGZpeHR1cmVfY2xhc3NfaWQsIGZhY3RvcnkpOworICAgICAgbmV3IFRlc3RJbmZvKHRlc3Rf
Y2FzZV9uYW1lLCBuYW1lLCB0eXBlX3BhcmFtLCB2YWx1ZV9wYXJhbSwKKyAgICAgICAgICAgICAg
ICAgICBjb2RlX2xvY2F0aW9uLCBmaXh0dXJlX2NsYXNzX2lkLCBmYWN0b3J5KTsKICAgR2V0VW5p
dFRlc3RJbXBsKCktPkFkZFRlc3RJbmZvKHNldF91cF90YywgdGVhcl9kb3duX3RjLCB0ZXN0X2lu
Zm8pOwogICByZXR1cm4gdGVzdF9pbmZvOwogfQogCiAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QK
IHZvaWQgUmVwb3J0SW52YWxpZFRlc3RDYXNlVHlwZShjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQg
bGluZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbiBjb2Rl
X2xvY2F0aW9uKSB7CiAgIE1lc3NhZ2UgZXJyb3JzOwogICBlcnJvcnMKICAgICAgIDw8ICJBdHRl
bXB0ZWQgcmVkZWZpbml0aW9uIG9mIHRlc3QgY2FzZSAiIDw8IHRlc3RfY2FzZV9uYW1lIDw8ICIu
XG4iCkBAIC0yMTgyLDQ4ICsyNTcxLDE1IEBAIHZvaWQgUmVwb3J0SW52YWxpZFRlc3RDYXNlVHlw
ZShjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKICAgICAgIDw8ICJwcm9iYWJseSByZW5hbWUg
b25lIG9mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50byBkaWZmZXJlbnRcbiIKICAg
ICAgIDw8ICJ0ZXN0IGNhc2VzLiI7CiAKLSAgZnByaW50ZihzdGRlcnIsICIlcyAlcyIsIEZvcm1h
dEZpbGVMb2NhdGlvbihmaWxlLCBsaW5lKS5jX3N0cigpLAorICBmcHJpbnRmKHN0ZGVyciwgIiVz
ICVzIiwKKyAgICAgICAgICBGb3JtYXRGaWxlTG9jYXRpb24oY29kZV9sb2NhdGlvbi5maWxlLmNf
c3RyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVfbG9jYXRpb24ubGluZSku
Y19zdHIoKSwKICAgICAgICAgICBlcnJvcnMuR2V0U3RyaW5nKCkuY19zdHIoKSk7CiB9CiAjZW5k
aWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAog
Ci0vLyBSZXR1cm5zIHRoZSB0ZXN0IGNhc2UgbmFtZS4KLWNvbnN0IGNoYXIqIFRlc3RJbmZvOjp0
ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0IHsKLSAgcmV0dXJuIGltcGxfLT50ZXN0X2Nhc2VfbmFtZSgp
OwotfQotCi0vLyBSZXR1cm5zIHRoZSB0ZXN0IG5hbWUuCi1jb25zdCBjaGFyKiBUZXN0SW5mbzo6
bmFtZSgpIGNvbnN0IHsKLSAgcmV0dXJuIGltcGxfLT5uYW1lKCk7Ci19Ci0KLS8vIFJldHVybnMg
dGhlIHRlc3QgY2FzZSBjb21tZW50LgotY29uc3QgY2hhciogVGVzdEluZm86OnRlc3RfY2FzZV9j
b21tZW50KCkgY29uc3QgewotICByZXR1cm4gaW1wbF8tPnRlc3RfY2FzZV9jb21tZW50KCk7Ci19
Ci0KLS8vIFJldHVybnMgdGhlIHRlc3QgY29tbWVudC4KLWNvbnN0IGNoYXIqIFRlc3RJbmZvOjpj
b21tZW50KCkgY29uc3QgewotICByZXR1cm4gaW1wbF8tPmNvbW1lbnQoKTsKLX0KLQotLy8gUmV0
dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBzaG91bGQgcnVuLgotYm9vbCBUZXN0SW5mbzo6c2hvdWxk
X3J1bigpIGNvbnN0IHsgcmV0dXJuIGltcGxfLT5zaG91bGRfcnVuKCk7IH0KLQotLy8gUmV0dXJu
cyB0cnVlIGlmIHRoaXMgdGVzdCBtYXRjaGVzIHRoZSB1c2VyLXNwZWNpZmllZCBmaWx0ZXIuCi1i
b29sIFRlc3RJbmZvOjptYXRjaGVzX2ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIGltcGxfLT5tYXRj
aGVzX2ZpbHRlcigpOyB9Ci0KLS8vIFJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgdGVzdC4KLWNv
bnN0IFRlc3RSZXN1bHQqIFRlc3RJbmZvOjpyZXN1bHQoKSBjb25zdCB7IHJldHVybiBpbXBsXy0+
cmVzdWx0KCk7IH0KLQotLy8gSW5jcmVtZW50cyB0aGUgbnVtYmVyIG9mIGRlYXRoIHRlc3RzIGVu
Y291bnRlcmVkIGluIHRoaXMgdGVzdCBzbwotLy8gZmFyLgotaW50IFRlc3RJbmZvOjppbmNyZW1l
bnRfZGVhdGhfdGVzdF9jb3VudCgpIHsKLSAgcmV0dXJuIGltcGxfLT5yZXN1bHQoKS0+aW5jcmVt
ZW50X2RlYXRoX3Rlc3RfY291bnQoKTsKLX0KLQogbmFtZXNwYWNlIHsKIAogLy8gQSBwcmVkaWNh
dGUgdGhhdCBjaGVja3MgdGhlIHRlc3QgbmFtZSBvZiBhIFRlc3RJbmZvIGFnYWluc3QgYSBrbm93
bgpAQCAtMjI0NCwxMSArMjYwMCwxMSBAQCBjbGFzcyBUZXN0TmFtZUlzIHsKIAogICAvLyBSZXR1
cm5zIHRydWUgaWZmIHRoZSB0ZXN0IG5hbWUgb2YgdGVzdF9pbmZvIG1hdGNoZXMgbmFtZV8uCiAg
IGJvb2wgb3BlcmF0b3IoKShjb25zdCBUZXN0SW5mbyAqIHRlc3RfaW5mbykgY29uc3QgewotICAg
IHJldHVybiB0ZXN0X2luZm8gJiYgaW50ZXJuYWw6OlN0cmluZyh0ZXN0X2luZm8tPm5hbWUoKSku
Q29tcGFyZShuYW1lXykgPT0gMDsKKyAgICByZXR1cm4gdGVzdF9pbmZvICYmIHRlc3RfaW5mby0+
bmFtZSgpID09IG5hbWVfOwogICB9CiAKICBwcml2YXRlOgotICBpbnRlcm5hbDo6U3RyaW5nIG5h
bWVfOworICBzdGQ6OnN0cmluZyBuYW1lXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZQpAQCAtMjI2
Nyw3MCArMjYyMyw1NCBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6UmVnaXN0ZXJQYXJhbWV0ZXJpemVk
VGVzdHMoKSB7CiAjZW5kaWYKIH0KIAorfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKIC8vIENy
ZWF0ZXMgdGhlIHRlc3Qgb2JqZWN0LCBydW5zIGl0LCByZWNvcmRzIGl0cyByZXN1bHQsIGFuZCB0
aGVuCiAvLyBkZWxldGVzIGl0Lgotdm9pZCBUZXN0SW5mb0ltcGw6OlJ1bigpIHsKK3ZvaWQgVGVz
dEluZm86OlJ1bigpIHsKICAgaWYgKCFzaG91bGRfcnVuXykgcmV0dXJuOwogCiAgIC8vIFRlbGxz
IFVuaXRUZXN0IHdoZXJlIHRvIHN0b3JlIHRlc3QgcmVzdWx0LgotICBVbml0VGVzdEltcGwqIGNv
bnN0IGltcGwgPSBpbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCk7Ci0gIGltcGwtPnNldF9jdXJy
ZW50X3Rlc3RfaW5mbyhwYXJlbnRfKTsKKyAgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCogY29uc3Qg
aW1wbCA9IGludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKTsKKyAgaW1wbC0+c2V0X2N1cnJlbnRf
dGVzdF9pbmZvKHRoaXMpOwogCiAgIFRlc3RFdmVudExpc3RlbmVyKiByZXBlYXRlciA9IFVuaXRU
ZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKS5yZXBlYXRlcigpOwogCiAgIC8vIE5vdGlm
aWVzIHRoZSB1bml0IHRlc3QgZXZlbnQgbGlzdGVuZXJzIHRoYXQgYSB0ZXN0IGlzIGFib3V0IHRv
IHN0YXJ0LgotICByZXBlYXRlci0+T25UZXN0U3RhcnQoKnBhcmVudF8pOworICByZXBlYXRlci0+
T25UZXN0U3RhcnQoKnRoaXMpOwogCi0gIGNvbnN0IFRpbWVJbk1pbGxpcyBzdGFydCA9IEdldFRp
bWVJbk1pbGxpcygpOworICBjb25zdCBUaW1lSW5NaWxsaXMgc3RhcnQgPSBpbnRlcm5hbDo6R2V0
VGltZUluTWlsbGlzKCk7CiAKICAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25M
ZWF2aW5nR1Rlc3QoKTsKLSNpZiBHVEVTVF9IQVNfU0VICi0gIC8vIENhdGNoIFNFSC1zdHlsZSBl
eGNlcHRpb25zLgotICBUZXN0KiB0ZXN0ID0gTlVMTDsKLQotICBfX3RyeSB7Ci0gICAgLy8gQ3Jl
YXRlcyB0aGUgdGVzdCBvYmplY3QuCi0gICAgdGVzdCA9IGZhY3RvcnlfLT5DcmVhdGVUZXN0KCk7
Ci0gIH0gX19leGNlcHQoaW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6R1Rlc3RTaG91bGRQcm9j
ZXNzU0VIKAotICAgICAgR2V0RXhjZXB0aW9uQ29kZSgpKSkgewotICAgIEFkZEV4Y2VwdGlvblRo
cm93bkZhaWx1cmUoR2V0RXhjZXB0aW9uQ29kZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInRoZSB0ZXN0IGZpeHR1cmUncyBjb25zdHJ1Y3RvciIpOwotICAgIHJldHVybjsKLSAg
fQotI2Vsc2UgIC8vIFdlIGFyZSBvbiBhIGNvbXBpbGVyIG9yIHBsYXRmb3JtIHRoYXQgZG9lc24n
dCBzdXBwb3J0IFNFSC4KLQotICAvLyBUT0RPKHdhbik6IElmIHRlc3QtPlJ1bigpIHRocm93cywg
dGVzdCB3b24ndCBiZSBkZWxldGVkLiAgVGhpcyBpcwotICAvLyBub3QgYSBwcm9ibGVtIG5vdyBh
cyB3ZSBkb24ndCB1c2UgZXhjZXB0aW9ucy4gIElmIHdlIHdlcmUgdG8KLSAgLy8gZW5hYmxlIGV4
Y2VwdGlvbnMsIHdlIHNob3VsZCByZXZpc2UgdGhlIGZvbGxvd2luZyB0byBiZQotICAvLyBleGNl
cHRpb24tc2FmZS4KIAogICAvLyBDcmVhdGVzIHRoZSB0ZXN0IG9iamVjdC4KLSAgVGVzdCogdGVz
dCA9IGZhY3RvcnlfLT5DcmVhdGVUZXN0KCk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKLQot
ICAvLyBSdW5zIHRoZSB0ZXN0IG9ubHkgaWYgdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSB0ZXN0IGZp
eHR1cmUgZGlkbid0Ci0gIC8vIGdlbmVyYXRlIGEgZmF0YWwgZmFpbHVyZS4KLSAgaWYgKCFUZXN0
OjpIYXNGYXRhbEZhaWx1cmUoKSkgeworICBUZXN0KiBjb25zdCB0ZXN0ID0gaW50ZXJuYWw6Okhh
bmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAorICAgICAgZmFjdG9yeV8sICZpbnRl
cm5hbDo6VGVzdEZhY3RvcnlCYXNlOjpDcmVhdGVUZXN0LAorICAgICAgInRoZSB0ZXN0IGZpeHR1
cmUncyBjb25zdHJ1Y3RvciIpOworCisgIC8vIFJ1bnMgdGhlIHRlc3Qgb25seSBpZiB0aGUgdGVz
dCBvYmplY3Qgd2FzIGNyZWF0ZWQgYW5kIGl0cworICAvLyBjb25zdHJ1Y3RvciBkaWRuJ3QgZ2Vu
ZXJhdGUgYSBmYXRhbCBmYWlsdXJlLgorICBpZiAoKHRlc3QgIT0gTlVMTCkgJiYgIVRlc3Q6Okhh
c0ZhdGFsRmFpbHVyZSgpKSB7CisgICAgLy8gVGhpcyBkb2Vzbid0IHRocm93IGFzIGFsbCB1c2Vy
IGNvZGUgdGhhdCBjYW4gdGhyb3cgYXJlIHdyYXBwZWQgaW50bworICAgIC8vIGV4Y2VwdGlvbiBo
YW5kbGluZyBjb2RlLgogICAgIHRlc3QtPlJ1bigpOwogICB9CiAKICAgLy8gRGVsZXRlcyB0aGUg
dGVzdCBvYmplY3QuCiAgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmlu
Z0dUZXN0KCk7Ci0gIGRlbGV0ZSB0ZXN0OwotICB0ZXN0ID0gTlVMTDsKKyAgaW50ZXJuYWw6Okhh
bmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAorICAgICAgdGVzdCwgJlRlc3Q6OkRl
bGV0ZVNlbGZfLCAidGhlIHRlc3QgZml4dHVyZSdzIGRlc3RydWN0b3IiKTsKIAotICByZXN1bHRf
LnNldF9lbGFwc2VkX3RpbWUoR2V0VGltZUluTWlsbGlzKCkgLSBzdGFydCk7CisgIHJlc3VsdF8u
c2V0X2VsYXBzZWRfdGltZShpbnRlcm5hbDo6R2V0VGltZUluTWlsbGlzKCkgLSBzdGFydCk7CiAK
ICAgLy8gTm90aWZpZXMgdGhlIHVuaXQgdGVzdCBldmVudCBsaXN0ZW5lciB0aGF0IGEgdGVzdCBo
YXMganVzdCBmaW5pc2hlZC4KLSAgcmVwZWF0ZXItPk9uVGVzdEVuZCgqcGFyZW50Xyk7CisgIHJl
cGVhdGVyLT5PblRlc3RFbmQoKnRoaXMpOwogCiAgIC8vIFRlbGxzIFVuaXRUZXN0IHRvIHN0b3Ag
YXNzb2NpYXRpbmcgYXNzZXJ0aW9uIHJlc3VsdHMgdG8gdGhpcwogICAvLyB0ZXN0LgogICBpbXBs
LT5zZXRfY3VycmVudF90ZXN0X2luZm8oTlVMTCk7CiB9CiAKLX0gIC8vIG5hbWVzcGFjZSBpbnRl
cm5hbAotCiAvLyBjbGFzcyBUZXN0Q2FzZQogCiAvLyBHZXRzIHRoZSBudW1iZXIgb2Ygc3VjY2Vz
c2Z1bCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KQEAgLTIzNDMsMTAgKzI2ODMsMjEgQEAgaW50
IFRlc3RDYXNlOjpmYWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJuIENvdW50SWYo
dGVzdF9pbmZvX2xpc3RfLCBUZXN0RmFpbGVkKTsKIH0KIAorLy8gR2V0cyB0aGUgbnVtYmVyIG9m
IGRpc2FibGVkIHRlc3RzIHRoYXQgd2lsbCBiZSByZXBvcnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4K
K2ludCBUZXN0Q2FzZTo6cmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3Qgewor
ICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlzdF8sIFRlc3RSZXBvcnRhYmxlRGlzYWJsZWQp
OworfQorCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgaW4gdGhpcyB0ZXN0
IGNhc2UuCiBpbnQgVGVzdENhc2U6OmRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7CiAgIHJl
dHVybiBDb3VudElmKHRlc3RfaW5mb19saXN0XywgVGVzdERpc2FibGVkKTsKIH0KIAorLy8gR2V0
cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50ZWQgaW4gdGhlIFhNTCByZXBvcnQuCitp
bnQgVGVzdENhc2U6OnJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNvbnN0IHsKKyAgcmV0dXJuIENv
dW50SWYodGVzdF9pbmZvX2xpc3RfLCBUZXN0UmVwb3J0YWJsZSk7Cit9CisKIC8vIEdldCB0aGUg
bnVtYmVyIG9mIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlIHRoYXQgc2hvdWxkIHJ1bi4KIGludCBU
ZXN0Q2FzZTo6dGVzdF90b19ydW5fY291bnQoKSBjb25zdCB7CiAgIHJldHVybiBDb3VudElmKHRl
c3RfaW5mb19saXN0XywgU2hvdWxkUnVuVGVzdCk7CkBAIC0yMzYyLDEzICsyNzEzLDE1IEBAIGlu
dCBUZXN0Q2FzZTo6dG90YWxfdGVzdF9jb3VudCgpIGNvbnN0IHsKIC8vIEFyZ3VtZW50czoKIC8v
CiAvLyAgIG5hbWU6ICAgICAgICAgbmFtZSBvZiB0aGUgdGVzdCBjYXNlCisvLyAgIGFfdHlwZV9w
YXJhbTogdGhlIG5hbWUgb2YgdGhlIHRlc3QgY2FzZSdzIHR5cGUgcGFyYW1ldGVyLCBvciBOVUxM
IGlmCisvLyAgICAgICAgICAgICAgICAgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhIHR5cGUtcGFy
YW1ldGVyaXplZCB0ZXN0IGNhc2UuCiAvLyAgIHNldF91cF90YzogICAgcG9pbnRlciB0byB0aGUg
ZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSB0ZXN0IGNhc2UKIC8vICAgdGVhcl9kb3duX3RjOiBw
b2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQotVGVz
dENhc2U6OlRlc3RDYXNlKGNvbnN0IGNoYXIqIGFfbmFtZSwgY29uc3QgY2hhciogYV9jb21tZW50
LAorVGVzdENhc2U6OlRlc3RDYXNlKGNvbnN0IGNoYXIqIGFfbmFtZSwgY29uc3QgY2hhciogYV90
eXBlX3BhcmFtLAogICAgICAgICAgICAgICAgICAgIFRlc3Q6OlNldFVwVGVzdENhc2VGdW5jIHNl
dF91cF90YywKICAgICAgICAgICAgICAgICAgICBUZXN0OjpUZWFyRG93blRlc3RDYXNlRnVuYyB0
ZWFyX2Rvd25fdGMpCiAgICAgOiBuYW1lXyhhX25hbWUpLAotICAgICAgY29tbWVudF8oYV9jb21t
ZW50KSwKKyAgICAgIHR5cGVfcGFyYW1fKGFfdHlwZV9wYXJhbSA/IG5ldyBzdGQ6OnN0cmluZyhh
X3R5cGVfcGFyYW0pIDogTlVMTCksCiAgICAgICBzZXRfdXBfdGNfKHNldF91cF90YyksCiAgICAg
ICB0ZWFyX2Rvd25fdGNfKHRlYXJfZG93bl90YyksCiAgICAgICBzaG91bGRfcnVuXyhmYWxzZSks
CkBAIC0yNDEzLDQ1ICsyNzY2LDI3IEBAIHZvaWQgVGVzdENhc2U6OlJ1bigpIHsKIAogICByZXBl
YXRlci0+T25UZXN0Q2FzZVN0YXJ0KCp0aGlzKTsKICAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0
dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgc2V0X3VwX3RjXygpOworICBpbnRlcm5hbDo6
SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgICB0aGlzLCAmVGVzdENh
c2U6OlJ1blNldFVwVGVzdENhc2UsICJTZXRVcFRlc3RDYXNlKCkiKTsKIAogICBjb25zdCBpbnRl
cm5hbDo6VGltZUluTWlsbGlzIHN0YXJ0ID0gaW50ZXJuYWw6OkdldFRpbWVJbk1pbGxpcygpOwog
ICBmb3IgKGludCBpID0gMDsgaSA8IHRvdGFsX3Rlc3RfY291bnQoKTsgaSsrKSB7Ci0gICAgR2V0
TXV0YWJsZVRlc3RJbmZvKGkpLT5pbXBsKCktPlJ1bigpOworICAgIEdldE11dGFibGVUZXN0SW5m
byhpKS0+UnVuKCk7CiAgIH0KICAgZWxhcHNlZF90aW1lXyA9IGludGVybmFsOjpHZXRUaW1lSW5N
aWxsaXMoKSAtIHN0YXJ0OwogCiAgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9u
TGVhdmluZ0dUZXN0KCk7Ci0gIHRlYXJfZG93bl90Y18oKTsKKyAgaW50ZXJuYWw6OkhhbmRsZUV4
Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAorICAgICAgdGhpcywgJlRlc3RDYXNlOjpSdW5U
ZWFyRG93blRlc3RDYXNlLCAiVGVhckRvd25UZXN0Q2FzZSgpIik7CisKICAgcmVwZWF0ZXItPk9u
VGVzdENhc2VFbmQoKnRoaXMpOwogICBpbXBsLT5zZXRfY3VycmVudF90ZXN0X2Nhc2UoTlVMTCk7
CiB9CiAKIC8vIENsZWFycyB0aGUgcmVzdWx0cyBvZiBhbGwgdGVzdHMgaW4gdGhpcyB0ZXN0IGNh
c2UuCiB2b2lkIFRlc3RDYXNlOjpDbGVhclJlc3VsdCgpIHsKLSAgRm9yRWFjaCh0ZXN0X2luZm9f
bGlzdF8sIGludGVybmFsOjpUZXN0SW5mb0ltcGw6OkNsZWFyVGVzdFJlc3VsdCk7Ci19Ci0KLS8v
IFJldHVybnMgdHJ1ZSBpZmYgdGVzdCBwYXNzZWQuCi1ib29sIFRlc3RDYXNlOjpUZXN0UGFzc2Vk
KGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKSB7Ci0gIGNvbnN0IGludGVybmFsOjpUZXN0SW5m
b0ltcGwqIGNvbnN0IGltcGwgPSB0ZXN0X2luZm8tPmltcGwoKTsKLSAgcmV0dXJuIGltcGwtPnNo
b3VsZF9ydW4oKSAmJiBpbXBsLT5yZXN1bHQoKS0+UGFzc2VkKCk7Ci19Ci0KLS8vIFJldHVybnMg
dHJ1ZSBpZmYgdGVzdCBmYWlsZWQuCi1ib29sIFRlc3RDYXNlOjpUZXN0RmFpbGVkKGNvbnN0IFRl
c3RJbmZvICogdGVzdF9pbmZvKSB7Ci0gIGNvbnN0IGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGNv
bnN0IGltcGwgPSB0ZXN0X2luZm8tPmltcGwoKTsKLSAgcmV0dXJuIGltcGwtPnNob3VsZF9ydW4o
KSAmJiBpbXBsLT5yZXN1bHQoKS0+RmFpbGVkKCk7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZmYg
dGVzdCBpcyBkaXNhYmxlZC4KLWJvb2wgVGVzdENhc2U6OlRlc3REaXNhYmxlZChjb25zdCBUZXN0
SW5mbyAqIHRlc3RfaW5mbykgewotICByZXR1cm4gdGVzdF9pbmZvLT5pbXBsKCktPmlzX2Rpc2Fi
bGVkKCk7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdGVzdCBzaG91bGQgcnVu
LgotYm9vbCBUZXN0Q2FzZTo6U2hvdWxkUnVuVGVzdChjb25zdCBUZXN0SW5mbyAqdGVzdF9pbmZv
KSB7Ci0gIHJldHVybiB0ZXN0X2luZm8tPmltcGwoKS0+c2hvdWxkX3J1bigpOworICBhZF9ob2Nf
dGVzdF9yZXN1bHRfLkNsZWFyKCk7CisgIEZvckVhY2godGVzdF9pbmZvX2xpc3RfLCBUZXN0SW5m
bzo6Q2xlYXJUZXN0UmVzdWx0KTsKIH0KIAogLy8gU2h1ZmZsZXMgdGhlIHRlc3RzIGluIHRoaXMg
dGVzdCBjYXNlLgpAQCAtMjQ3MSwyMCArMjgwNiwyMCBAQCB2b2lkIFRlc3RDYXNlOjpVbnNodWZm
bGVUZXN0cygpIHsKIC8vCiAvLyBGb3JtYXRDb3VudGFibGVOb3VuKDEsICJmb3JtdWxhIiwgImZv
cm11bGkiKSByZXR1cm5zICIxIGZvcm11bGEiLgogLy8gRm9ybWF0Q291bnRhYmxlTm91big1LCAi
Ym9vayIsICJib29rcyIpIHJldHVybnMgIjUgYm9va3MiLgotc3RhdGljIGludGVybmFsOjpTdHJp
bmcgRm9ybWF0Q291bnRhYmxlTm91bihpbnQgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBzaW5ndWxhcl9mb3JtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogcGx1cmFs
X2Zvcm0pIHsKLSAgcmV0dXJuIGludGVybmFsOjpTdHJpbmc6OkZvcm1hdCgiJWQgJXMiLCBjb3Vu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCA9PSAxID8gc2luZ3Vs
YXJfZm9ybSA6IHBsdXJhbF9mb3JtKTsKK3N0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRDb3VudGFi
bGVOb3VuKGludCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIgKiBzaW5ndWxhcl9mb3JtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciAqIHBsdXJhbF9mb3JtKSB7CisgIHJldHVybiBpbnRlcm5h
bDo6U3RyZWFtYWJsZVRvU3RyaW5nKGNvdW50KSArICIgIiArCisgICAgICAoY291bnQgPT0gMSA/
IHNpbmd1bGFyX2Zvcm0gOiBwbHVyYWxfZm9ybSk7CiB9CiAKIC8vIEZvcm1hdHMgdGhlIGNvdW50
IG9mIHRlc3RzLgotc3RhdGljIGludGVybmFsOjpTdHJpbmcgRm9ybWF0VGVzdENvdW50KGludCB0
ZXN0X2NvdW50KSB7CitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0VGVzdENvdW50KGludCB0ZXN0
X2NvdW50KSB7CiAgIHJldHVybiBGb3JtYXRDb3VudGFibGVOb3VuKHRlc3RfY291bnQsICJ0ZXN0
IiwgInRlc3RzIik7CiB9CiAKIC8vIEZvcm1hdHMgdGhlIGNvdW50IG9mIHRlc3QgY2FzZXMuCi1z
dGF0aWMgaW50ZXJuYWw6OlN0cmluZyBGb3JtYXRUZXN0Q2FzZUNvdW50KGludCB0ZXN0X2Nhc2Vf
Y291bnQpIHsKK3N0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRUZXN0Q2FzZUNvdW50KGludCB0ZXN0
X2Nhc2VfY291bnQpIHsKICAgcmV0dXJuIEZvcm1hdENvdW50YWJsZU5vdW4odGVzdF9jYXNlX2Nv
dW50LCAidGVzdCBjYXNlIiwgInRlc3QgY2FzZXMiKTsKIH0KIApAQCAtMjUwNCwxMyArMjgzOSwx
NSBAQCBzdGF0aWMgY29uc3QgY2hhciAqIFRlc3RQYXJ0UmVzdWx0VHlwZVRvU3RyaW5nKFRlc3RQ
YXJ0UmVzdWx0OjpUeXBlIHR5cGUpIHsKICNlbHNlCiAgICAgICByZXR1cm4gIkZhaWx1cmVcbiI7
CiAjZW5kaWYKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuICJVbmtub3duIHJlc3VsdCB0eXBl
IjsKICAgfQotCi0gIHJldHVybiAiVW5rbm93biByZXN1bHQgdHlwZSI7CiB9CiAKLS8vIFByaW50
cyBhIFRlc3RQYXJ0UmVzdWx0IHRvIGEgU3RyaW5nLgotc3RhdGljIGludGVybmFsOjpTdHJpbmcg
UHJpbnRUZXN0UGFydFJlc3VsdFRvU3RyaW5nKAorbmFtZXNwYWNlIGludGVybmFsIHsKKworLy8g
UHJpbnRzIGEgVGVzdFBhcnRSZXN1bHQgdG8gYW4gc3RkOjpzdHJpbmcuCitzdGF0aWMgc3RkOjpz
dHJpbmcgUHJpbnRUZXN0UGFydFJlc3VsdFRvU3RyaW5nKAogICAgIGNvbnN0IFRlc3RQYXJ0UmVz
dWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7CiAgIHJldHVybiAoTWVzc2FnZSgpCiAgICAgICAgICAg
PDwgaW50ZXJuYWw6OkZvcm1hdEZpbGVMb2NhdGlvbih0ZXN0X3BhcnRfcmVzdWx0LmZpbGVfbmFt
ZSgpLApAQCAtMjUyMSw3ICsyODU4LDcgQEAgc3RhdGljIGludGVybmFsOjpTdHJpbmcgUHJpbnRU
ZXN0UGFydFJlc3VsdFRvU3RyaW5nKAogCiAvLyBQcmludHMgYSBUZXN0UGFydFJlc3VsdC4KIHN0
YXRpYyB2b2lkIFByaW50VGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3Rf
cGFydF9yZXN1bHQpIHsKLSAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyYgcmVzdWx0ID0KKyAgY29u
c3Qgc3RkOjpzdHJpbmcmIHJlc3VsdCA9CiAgICAgICBQcmludFRlc3RQYXJ0UmVzdWx0VG9TdHJp
bmcodGVzdF9wYXJ0X3Jlc3VsdCk7CiAgIHByaW50ZigiJXNcbiIsIHJlc3VsdC5jX3N0cigpKTsK
ICAgZmZsdXNoKHN0ZG91dCk7CkBAIC0yNTQwLDggKzI4NzcsNiBAQCBzdGF0aWMgdm9pZCBQcmlu
dFRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7
CiAKIC8vIGNsYXNzIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcgogCi1uYW1lc3BhY2UgaW50
ZXJuYWwgewotCiBlbnVtIEdUZXN0Q29sb3IgewogICBDT0xPUl9ERUZBVUxULAogICBDT0xPUl9S
RUQsCkBAIC0yNTQ5LDcgKzI4ODQsOCBAQCBlbnVtIEdUZXN0Q29sb3IgewogICBDT0xPUl9ZRUxM
T1cKIH07CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklM
RQorI2lmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFICYmIFwK
KyAgICAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lORE9XU19SVAogCiAv
LyBSZXR1cm5zIHRoZSBjaGFyYWN0ZXIgYXR0cmlidXRlIGZvciB0aGUgZ2l2ZW4gY29sb3IuCiBX
T1JEIEdldENvbG9yQXR0cmlidXRlKEdUZXN0Q29sb3IgY29sb3IpIHsKQEAgLTI1OTIsNiArMjky
OCwxMiBAQCBib29sIFNob3VsZFVzZUNvbG9yKGJvb2wgc3Rkb3V0X2lzX3R0eSkgewogICAgICAg
ICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgInh0ZXJtIikgfHwKICAgICAgICAgU3RyaW5n
OjpDU3RyaW5nRXF1YWxzKHRlcm0sICJ4dGVybS1jb2xvciIpIHx8CiAgICAgICAgIFN0cmluZzo6
Q1N0cmluZ0VxdWFscyh0ZXJtLCAieHRlcm0tMjU2Y29sb3IiKSB8fAorICAgICAgICBTdHJpbmc6
OkNTdHJpbmdFcXVhbHModGVybSwgInNjcmVlbiIpIHx8CisgICAgICAgIFN0cmluZzo6Q1N0cmlu
Z0VxdWFscyh0ZXJtLCAic2NyZWVuLTI1NmNvbG9yIikgfHwKKyAgICAgICAgU3RyaW5nOjpDU3Ry
aW5nRXF1YWxzKHRlcm0sICJ0bXV4IikgfHwKKyAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxz
KHRlcm0sICJ0bXV4LTI1NmNvbG9yIikgfHwKKyAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxz
KHRlcm0sICJyeHZ0LXVuaWNvZGUiKSB8fAorICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHMo
dGVybSwgInJ4dnQtdW5pY29kZS0yNTZjb2xvciIpIHx8CiAgICAgICAgIFN0cmluZzo6Q1N0cmlu
Z0VxdWFscyh0ZXJtLCAibGludXgiKSB8fAogICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHMo
dGVybSwgImN5Z3dpbiIpOwogICAgIHJldHVybiBzdGRvdXRfaXNfdHR5ICYmIHRlcm1fc3VwcG9y
dHNfY29sb3I7CkBAIC0yNjE1LDggKzI5NTcsOSBAQCB2b2lkIENvbG9yZWRQcmludGYoR1Rlc3RD
b2xvciBjb2xvciwgY29uc3QgY2hhciogZm10LCAuLi4pIHsKICAgdmFfbGlzdCBhcmdzOwogICB2
YV9zdGFydChhcmdzLCBmbXQpOwogCi0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgfHwgR1RF
U1RfT1NfU1lNQklBTiB8fCBHVEVTVF9PU19aT1MKLSAgY29uc3QgYm9vbCB1c2VfY29sb3IgPSBm
YWxzZTsKKyNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRSB8fCBHVEVTVF9PU19TWU1CSUFOIHx8
IEdURVNUX09TX1pPUyB8fCBcCisgICAgR1RFU1RfT1NfSU9TIHx8IEdURVNUX09TX1dJTkRPV1Nf
UEhPTkUgfHwgR1RFU1RfT1NfV0lORE9XU19SVAorICBjb25zdCBib29sIHVzZV9jb2xvciA9IEFs
d2F5c0ZhbHNlKCk7CiAjZWxzZQogICBzdGF0aWMgY29uc3QgYm9vbCBpbl9jb2xvcl9tb2RlID0K
ICAgICAgIFNob3VsZFVzZUNvbG9yKHBvc2l4OjpJc0FUVFkocG9zaXg6OkZpbGVObyhzdGRvdXQp
KSAhPSAwKTsKQEAgLTI2MzAsNyArMjk3Myw4IEBAIHZvaWQgQ29sb3JlZFByaW50ZihHVGVzdENv
bG9yIGNvbG9yLCBjb25zdCBjaGFyKiBmbXQsIC4uLikgewogICAgIHJldHVybjsKICAgfQogCi0j
aWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyNpZiBHVEVT
VF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRSAmJiBcCisgICAgIUdURVNU
X09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQKICAgY29uc3QgSEFORExF
IHN0ZG91dF9oYW5kbGUgPSBHZXRTdGRIYW5kbGUoU1REX09VVFBVVF9IQU5ETEUpOwogCiAgIC8v
IEdldHMgdGhlIGN1cnJlbnQgdGV4dCBjb2xvci4KQEAgLTI2NTcsNiArMzAwMSwyOCBAQCB2b2lk
IENvbG9yZWRQcmludGYoR1Rlc3RDb2xvciBjb2xvciwgY29uc3QgY2hhciogZm10LCAuLi4pIHsK
ICAgdmFfZW5kKGFyZ3MpOwogfQogCisvLyBUZXh0IHByaW50ZWQgaW4gR29vZ2xlIFRlc3QncyB0
ZXh0IG91dHB1dCBhbmQgLS1ndW5pdF9saXN0X3Rlc3RzCisvLyBvdXRwdXQgdG8gbGFiZWwgdGhl
IHR5cGUgcGFyYW1ldGVyIGFuZCB2YWx1ZSBwYXJhbWV0ZXIgZm9yIGEgdGVzdC4KK3N0YXRpYyBj
b25zdCBjaGFyIGtUeXBlUGFyYW1MYWJlbFtdID0gIlR5cGVQYXJhbSI7CitzdGF0aWMgY29uc3Qg
Y2hhciBrVmFsdWVQYXJhbUxhYmVsW10gPSAiR2V0UGFyYW0oKSI7CisKK3ZvaWQgUHJpbnRGdWxs
VGVzdENvbW1lbnRJZlByZXNlbnQoY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbykgeworICBjb25z
dCBjaGFyKiBjb25zdCB0eXBlX3BhcmFtID0gdGVzdF9pbmZvLnR5cGVfcGFyYW0oKTsKKyAgY29u
c3QgY2hhciogY29uc3QgdmFsdWVfcGFyYW0gPSB0ZXN0X2luZm8udmFsdWVfcGFyYW0oKTsKKwor
ICBpZiAodHlwZV9wYXJhbSAhPSBOVUxMIHx8IHZhbHVlX3BhcmFtICE9IE5VTEwpIHsKKyAgICBw
cmludGYoIiwgd2hlcmUgIik7CisgICAgaWYgKHR5cGVfcGFyYW0gIT0gTlVMTCkgeworICAgICAg
cHJpbnRmKCIlcyA9ICVzIiwga1R5cGVQYXJhbUxhYmVsLCB0eXBlX3BhcmFtKTsKKyAgICAgIGlm
ICh2YWx1ZV9wYXJhbSAhPSBOVUxMKQorICAgICAgICBwcmludGYoIiBhbmQgIik7CisgICAgfQor
ICAgIGlmICh2YWx1ZV9wYXJhbSAhPSBOVUxMKSB7CisgICAgICBwcmludGYoIiVzID0gJXMiLCBr
VmFsdWVQYXJhbUxhYmVsLCB2YWx1ZV9wYXJhbSk7CisgICAgfQorICB9Cit9CisKIC8vIFRoaXMg
Y2xhc3MgaW1wbGVtZW50cyB0aGUgVGVzdEV2ZW50TGlzdGVuZXIgaW50ZXJmYWNlLgogLy8KIC8v
IENsYXNzIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlciBpcyBjb3B5YWJsZS4KQEAgLTI2ODQs
OCArMzA1MCw2IEBAIGNsYXNzIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlciA6IHB1YmxpYyBU
ZXN0RXZlbnRMaXN0ZW5lciB7CiAKICBwcml2YXRlOgogICBzdGF0aWMgdm9pZCBQcmludEZhaWxl
ZFRlc3RzKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpOwotCi0gIGludGVybmFsOjpTdHJpbmcg
dGVzdF9jYXNlX25hbWVfOwogfTsKIAogICAvLyBGaXJlZCBiZWZvcmUgZWFjaCBpdGVyYXRpb24g
b2YgdGVzdHMgc3RhcnRzLgpAQCAtMjY5OCwxNSArMzA2MiwxNiBAQCB2b2lkIFByZXR0eVVuaXRU
ZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0SXRlcmF0aW9uU3RhcnQoCiAKICAgLy8gUHJpbnRzIHRo
ZSBmaWx0ZXIgaWYgaXQncyBub3QgKi4gIFRoaXMgcmVtaW5kcyB0aGUgdXNlciB0aGF0IHNvbWUK
ICAgLy8gdGVzdHMgbWF5IGJlIHNraXBwZWQuCi0gIGlmICghaW50ZXJuYWw6OlN0cmluZzo6Q1N0
cmluZ0VxdWFscyhmaWx0ZXIsIGtVbml2ZXJzYWxGaWx0ZXIpKSB7CisgIGlmICghU3RyaW5nOjpD
U3RyaW5nRXF1YWxzKGZpbHRlciwga1VuaXZlcnNhbEZpbHRlcikpIHsKICAgICBDb2xvcmVkUHJp
bnRmKENPTE9SX1lFTExPVywKICAgICAgICAgICAgICAgICAgICJOb3RlOiAlcyBmaWx0ZXIgPSAl
c1xuIiwgR1RFU1RfTkFNRV8sIGZpbHRlcik7CiAgIH0KIAogICBpZiAoaW50ZXJuYWw6OlNob3Vs
ZFNoYXJkKGtUZXN0VG90YWxTaGFyZHMsIGtUZXN0U2hhcmRJbmRleCwgZmFsc2UpKSB7CisgICAg
Y29uc3QgSW50MzIgc2hhcmRfaW5kZXggPSBJbnQzMkZyb21FbnZPckRpZShrVGVzdFNoYXJkSW5k
ZXgsIC0xKTsKICAgICBDb2xvcmVkUHJpbnRmKENPTE9SX1lFTExPVywKLSAgICAgICAgICAgICAg
ICAgICJOb3RlOiBUaGlzIGlzIHRlc3Qgc2hhcmQgJXMgb2YgJXMuXG4iLAotICAgICAgICAgICAg
ICAgICAgaW50ZXJuYWw6OnBvc2l4OjpHZXRFbnYoa1Rlc3RTaGFyZEluZGV4KSwKKyAgICAgICAg
ICAgICAgICAgICJOb3RlOiBUaGlzIGlzIHRlc3Qgc2hhcmQgJWQgb2YgJXMuXG4iLAorICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihzaGFyZF9pbmRleCkgKyAxLAogICAgICAgICAg
ICAgICAgICAgaW50ZXJuYWw6OnBvc2l4OjpHZXRFbnYoa1Rlc3RUb3RhbFNoYXJkcykpOwogICB9
CiAKQEAgLTI3MzEsMjcgKzMwOTYsMjIgQEAgdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50
ZXI6Ok9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCgKIH0KIAogdm9pZCBQcmV0dHlVbml0VGVzdFJl
c3VsdFByaW50ZXI6Ok9uVGVzdENhc2VTdGFydChjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKSB7
Ci0gIHRlc3RfY2FzZV9uYW1lXyA9IHRlc3RfY2FzZS5uYW1lKCk7Ci0gIGNvbnN0IGludGVybmFs
OjpTdHJpbmcgY291bnRzID0KKyAgY29uc3Qgc3RkOjpzdHJpbmcgY291bnRzID0KICAgICAgIEZv
cm1hdENvdW50YWJsZU5vdW4odGVzdF9jYXNlLnRlc3RfdG9fcnVuX2NvdW50KCksICJ0ZXN0Iiwg
InRlc3RzIik7CiAgIENvbG9yZWRQcmludGYoQ09MT1JfR1JFRU4sICJbLS0tLS0tLS0tLV0gIik7
Ci0gIHByaW50ZigiJXMgZnJvbSAlcyIsIGNvdW50cy5jX3N0cigpLCB0ZXN0X2Nhc2VfbmFtZV8u
Y19zdHIoKSk7Ci0gIGlmICh0ZXN0X2Nhc2UuY29tbWVudCgpWzBdID09ICdcMCcpIHsKKyAgcHJp
bnRmKCIlcyBmcm9tICVzIiwgY291bnRzLmNfc3RyKCksIHRlc3RfY2FzZS5uYW1lKCkpOworICBp
ZiAodGVzdF9jYXNlLnR5cGVfcGFyYW0oKSA9PSBOVUxMKSB7CiAgICAgcHJpbnRmKCJcbiIpOwog
ICB9IGVsc2UgewotICAgIHByaW50ZigiLCB3aGVyZSAlc1xuIiwgdGVzdF9jYXNlLmNvbW1lbnQo
KSk7CisgICAgcHJpbnRmKCIsIHdoZXJlICVzID0gJXNcbiIsIGtUeXBlUGFyYW1MYWJlbCwgdGVz
dF9jYXNlLnR5cGVfcGFyYW0oKSk7CiAgIH0KICAgZmZsdXNoKHN0ZG91dCk7CiB9CiAKIHZvaWQg
UHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYg
dGVzdF9pbmZvKSB7CiAgIENvbG9yZWRQcmludGYoQ09MT1JfR1JFRU4sICAiWyBSVU4gICAgICBd
ICIpOwotICBQcmludFRlc3ROYW1lKHRlc3RfY2FzZV9uYW1lXy5jX3N0cigpLCB0ZXN0X2luZm8u
bmFtZSgpKTsKLSAgaWYgKHRlc3RfaW5mby5jb21tZW50KClbMF0gPT0gJ1wwJykgewotICAgIHBy
aW50ZigiXG4iKTsKLSAgfSBlbHNlIHsKLSAgICBwcmludGYoIiwgd2hlcmUgJXNcbiIsIHRlc3Rf
aW5mby5jb21tZW50KCkpOwotICB9CisgIFByaW50VGVzdE5hbWUodGVzdF9pbmZvLnRlc3RfY2Fz
ZV9uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOworICBwcmludGYoIlxuIik7CiAgIGZmbHVzaChz
dGRvdXQpOwogfQogCkBAIC0yNzczLDcgKzMxMzMsMTAgQEAgdm9pZCBQcmV0dHlVbml0VGVzdFJl
c3VsdFByaW50ZXI6Ok9uVGVzdEVuZChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CiAgIH0g
ZWxzZSB7CiAgICAgQ29sb3JlZFByaW50ZihDT0xPUl9SRUQsICJbICBGQUlMRUQgIF0gIik7CiAg
IH0KLSAgUHJpbnRUZXN0TmFtZSh0ZXN0X2Nhc2VfbmFtZV8uY19zdHIoKSwgdGVzdF9pbmZvLm5h
bWUoKSk7CisgIFByaW50VGVzdE5hbWUodGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3Rf
aW5mby5uYW1lKCkpOworICBpZiAodGVzdF9pbmZvLnJlc3VsdCgpLT5GYWlsZWQoKSkKKyAgICBQ
cmludEZ1bGxUZXN0Q29tbWVudElmUHJlc2VudCh0ZXN0X2luZm8pOworCiAgIGlmIChHVEVTVF9G
TEFHKHByaW50X3RpbWUpKSB7CiAgICAgcHJpbnRmKCIgKCVzIG1zKVxuIiwgaW50ZXJuYWw6OlN0
cmVhbWFibGVUb1N0cmluZygKICAgICAgICAgICAgdGVzdF9pbmZvLnJlc3VsdCgpLT5lbGFwc2Vk
X3RpbWUoKSkuY19zdHIoKSk7CkBAIC0yNzg2LDEyICszMTQ5LDExIEBAIHZvaWQgUHJldHR5VW5p
dFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RFbmQoY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbykg
ewogdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdENhc2VFbmQoY29uc3Qg
VGVzdENhc2UmIHRlc3RfY2FzZSkgewogICBpZiAoIUdURVNUX0ZMQUcocHJpbnRfdGltZSkpIHJl
dHVybjsKIAotICB0ZXN0X2Nhc2VfbmFtZV8gPSB0ZXN0X2Nhc2UubmFtZSgpOwotICBjb25zdCBp
bnRlcm5hbDo6U3RyaW5nIGNvdW50cyA9CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvdW50cyA9CiAg
ICAgICBGb3JtYXRDb3VudGFibGVOb3VuKHRlc3RfY2FzZS50ZXN0X3RvX3J1bl9jb3VudCgpLCAi
dGVzdCIsICJ0ZXN0cyIpOwogICBDb2xvcmVkUHJpbnRmKENPTE9SX0dSRUVOLCAiWy0tLS0tLS0t
LS1dICIpOwogICBwcmludGYoIiVzIGZyb20gJXMgKCVzIG1zIHRvdGFsKVxuXG4iLAotICAgICAg
ICAgY291bnRzLmNfc3RyKCksIHRlc3RfY2FzZV9uYW1lXy5jX3N0cigpLAorICAgICAgICAgY291
bnRzLmNfc3RyKCksIHRlc3RfY2FzZS5uYW1lKCksCiAgICAgICAgICBpbnRlcm5hbDo6U3RyZWFt
YWJsZVRvU3RyaW5nKHRlc3RfY2FzZS5lbGFwc2VkX3RpbWUoKSkuY19zdHIoKSk7CiAgIGZmbHVz
aChzdGRvdXQpOwogfQpAQCAtMjgyMiwyMSArMzE4NCwxNCBAQCB2b2lkIFByZXR0eVVuaXRUZXN0
UmVzdWx0UHJpbnRlcjo6UHJpbnRGYWlsZWRUZXN0cyhjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0
KSB7CiAgICAgICB9CiAgICAgICBDb2xvcmVkUHJpbnRmKENPTE9SX1JFRCwgIlsgIEZBSUxFRCAg
XSAiKTsKICAgICAgIHByaW50ZigiJXMuJXMiLCB0ZXN0X2Nhc2UubmFtZSgpLCB0ZXN0X2luZm8u
bmFtZSgpKTsKLSAgICAgIGlmICh0ZXN0X2Nhc2UuY29tbWVudCgpWzBdICE9ICdcMCcgfHwKLSAg
ICAgICAgICB0ZXN0X2luZm8uY29tbWVudCgpWzBdICE9ICdcMCcpIHsKLSAgICAgICAgcHJpbnRm
KCIsIHdoZXJlICVzIiwgdGVzdF9jYXNlLmNvbW1lbnQoKSk7Ci0gICAgICAgIGlmICh0ZXN0X2Nh
c2UuY29tbWVudCgpWzBdICE9ICdcMCcgJiYKLSAgICAgICAgICAgIHRlc3RfaW5mby5jb21tZW50
KClbMF0gIT0gJ1wwJykgewotICAgICAgICAgIHByaW50ZigiIGFuZCAiKTsKLSAgICAgICAgfQot
ICAgICAgfQotICAgICAgcHJpbnRmKCIlc1xuIiwgdGVzdF9pbmZvLmNvbW1lbnQoKSk7CisgICAg
ICBQcmludEZ1bGxUZXN0Q29tbWVudElmUHJlc2VudCh0ZXN0X2luZm8pOworICAgICAgcHJpbnRm
KCJcbiIpOwogICAgIH0KICAgfQogfQogCi0gdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50
ZXI6Ok9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IC8qaXRl
cmF0aW9uKi8pIHsKK3ZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RJdGVy
YXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IC8qaXRlcmF0aW9uKi8pIHsKICAg
Q29sb3JlZFByaW50ZihDT0xPUl9HUkVFTiwgICJbPT09PT09PT09PV0gIik7CiAgIHByaW50Zigi
JXMgZnJvbSAlcyByYW4uIiwKICAgICAgICAgIEZvcm1hdFRlc3RDb3VudCh1bml0X3Rlc3QudGVz
dF90b19ydW5fY291bnQoKSkuY19zdHIoKSwKQEAgLTI4NTksNyArMzIxNCw3IEBAIHZvaWQgUHJl
dHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludEZhaWxlZFRlc3RzKGNvbnN0IFVuaXRUZXN0
JiB1bml0X3Rlc3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG51bV9mYWlsdXJlcyA9PSAx
ID8gIlRFU1QiIDogIlRFU1RTIik7CiAgIH0KIAotICBpbnQgbnVtX2Rpc2FibGVkID0gdW5pdF90
ZXN0LmRpc2FibGVkX3Rlc3RfY291bnQoKTsKKyAgaW50IG51bV9kaXNhYmxlZCA9IHVuaXRfdGVz
dC5yZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKTsKICAgaWYgKG51bV9kaXNhYmxlZCAm
JiAhR1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cykpIHsKICAgICBpZiAoIW51bV9m
YWlsdXJlcykgewogICAgICAgcHJpbnRmKCJcbiIpOyAgLy8gQWRkIGEgc3BhY2VyIGlmIG5vIEZB
SUxVUkUgYmFubmVyIGlzIGRpc3BsYXllZC4KQEAgLTMwMTMsMTggKzMzNjgsMjcgQEAgY2xhc3Mg
WG1sVW5pdFRlc3RSZXN1bHRQcmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIg
ewogICAvLyBpc19hdHRyaWJ1dGUgaXMgdHJ1ZSwgdGhlIHRleHQgaXMgbWVhbnQgdG8gYXBwZWFy
IGFzIGFuIGF0dHJpYnV0ZQogICAvLyB2YWx1ZSwgYW5kIG5vcm1hbGl6YWJsZSB3aGl0ZXNwYWNl
IGlzIHByZXNlcnZlZCBieSByZXBsYWNpbmcgaXQKICAgLy8gd2l0aCBjaGFyYWN0ZXIgcmVmZXJl
bmNlcy4KLSAgc3RhdGljIFN0cmluZyBFc2NhcGVYbWwoY29uc3QgY2hhciogc3RyLCBib29sIGlz
X2F0dHJpYnV0ZSk7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFc2NhcGVYbWwoY29uc3Qgc3RkOjpz
dHJpbmcmIHN0ciwgYm9vbCBpc19hdHRyaWJ1dGUpOwogCiAgIC8vIFJldHVybnMgdGhlIGdpdmVu
IHN0cmluZyB3aXRoIGFsbCBjaGFyYWN0ZXJzIGludmFsaWQgaW4gWE1MIHJlbW92ZWQuCi0gIHN0
YXRpYyBTdHJpbmcgUmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoY29uc3QgY2hhciogc3RyKTsK
KyAgc3RhdGljIHN0ZDo6c3RyaW5nIFJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGNvbnN0IHN0
ZDo6c3RyaW5nJiBzdHIpOwogCiAgIC8vIENvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIEVzY2Fw
ZVhtbCB3aGVuIHN0ciBpcyBhbiBhdHRyaWJ1dGUgdmFsdWUuCi0gIHN0YXRpYyBTdHJpbmcgRXNj
YXBlWG1sQXR0cmlidXRlKGNvbnN0IGNoYXIqIHN0cikgeworICBzdGF0aWMgc3RkOjpzdHJpbmcg
RXNjYXBlWG1sQXR0cmlidXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKICAgICByZXR1cm4g
RXNjYXBlWG1sKHN0ciwgdHJ1ZSk7CiAgIH0KIAogICAvLyBDb252ZW5pZW5jZSB3cmFwcGVyIGFy
b3VuZCBFc2NhcGVYbWwgd2hlbiBzdHIgaXMgbm90IGFuIGF0dHJpYnV0ZSB2YWx1ZS4KLSAgc3Rh
dGljIFN0cmluZyBFc2NhcGVYbWxUZXh0KGNvbnN0IGNoYXIqIHN0cikgeyByZXR1cm4gRXNjYXBl
WG1sKHN0ciwgZmFsc2UpOyB9CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFc2NhcGVYbWxUZXh0KGNv
bnN0IGNoYXIqIHN0cikgeworICAgIHJldHVybiBFc2NhcGVYbWwoc3RyLCBmYWxzZSk7CisgIH0K
KworICAvLyBWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBhdHRyaWJ1dGUgYmVsb25ncyB0byB0aGUg
Z2l2ZW4gZWxlbWVudCBhbmQKKyAgLy8gc3RyZWFtcyB0aGUgYXR0cmlidXRlIGFzIFhNTC4KKyAg
c3RhdGljIHZvaWQgT3V0cHV0WG1sQXR0cmlidXRlKHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGVsZW1lbnRf
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHZhbHVlKTsKIAogICAvLyBTdHJlYW1zIGFuIFhNTCBDREFUQSBzZWN0aW9uLCBlc2NhcGlu
ZyBpbnZhbGlkIENEQVRBIHNlcXVlbmNlcyBhcyBuZWVkZWQuCiAgIHN0YXRpYyB2b2lkIE91dHB1
dFhtbENEYXRhU2VjdGlvbig6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLCBjb25zdCBjaGFyKiBkYXRh
KTsKQEAgLTMwMzUsMTkgKzMzOTksMjEgQEAgY2xhc3MgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVy
IDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKTsKIAogICAvLyBQcmludHMgYW4g
WE1MIHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdENhc2Ugb2JqZWN0Ci0gIHN0YXRpYyB2b2lkIFBy
aW50WG1sVGVzdENhc2UoRklMRSogb3V0LCBjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKTsKKyAg
c3RhdGljIHZvaWQgUHJpbnRYbWxUZXN0Q2FzZSg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpOwog
CiAgIC8vIFByaW50cyBhbiBYTUwgc3VtbWFyeSBvZiB1bml0X3Rlc3QgdG8gb3V0cHV0IHN0cmVh
bSBvdXQuCi0gIHN0YXRpYyB2b2lkIFByaW50WG1sVW5pdFRlc3QoRklMRSogb3V0LCBjb25zdCBV
bml0VGVzdCYgdW5pdF90ZXN0KTsKKyAgc3RhdGljIHZvaWQgUHJpbnRYbWxVbml0VGVzdCg6OnN0
ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFVuaXRUZXN0JiB1bml0X3Rlc3QpOwogCiAgIC8vIFByb2R1Y2VzIGEgc3RyaW5nIHJlcHJlc2Vu
dGluZyB0aGUgdGVzdCBwcm9wZXJ0aWVzIGluIGEgcmVzdWx0IGFzIHNwYWNlCiAgIC8vIGRlbGlt
aXRlZCBYTUwgYXR0cmlidXRlcyBiYXNlZCBvbiB0aGUgcHJvcGVydHkga2V5PSJ2YWx1ZSIgcGFp
cnMuCi0gIC8vIFdoZW4gdGhlIFN0cmluZyBpcyBub3QgZW1wdHksIGl0IGluY2x1ZGVzIGEgc3Bh
Y2UgYXQgdGhlIGJlZ2lubmluZywKKyAgLy8gV2hlbiB0aGUgc3RkOjpzdHJpbmcgaXMgbm90IGVt
cHR5LCBpdCBpbmNsdWRlcyBhIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcsCiAgIC8vIHRvIGRlbGlt
aXQgdGhpcyBhdHRyaWJ1dGUgZnJvbSBwcmlvciBhdHRyaWJ1dGVzLgotICBzdGF0aWMgU3RyaW5n
IFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCk7
CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBUZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRlcyhjb25z
dCBUZXN0UmVzdWx0JiByZXN1bHQpOwogCiAgIC8vIFRoZSBvdXRwdXQgZmlsZS4KLSAgY29uc3Qg
U3RyaW5nIG91dHB1dF9maWxlXzsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgb3V0cHV0X2ZpbGVfOwog
CiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oWG1sVW5pdFRlc3RSZXN1bHRQcmlu
dGVyKTsKIH07CkBAIC0zMDg5LDcgKzM0NTUsOSBAQCB2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJp
bnRlcjo6T25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsCiAgICAg
ZmZsdXNoKHN0ZGVycik7CiAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwogICB9Ci0gIFByaW50WG1s
VW5pdFRlc3QoeG1sb3V0LCB1bml0X3Rlc3QpOworICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07
CisgIFByaW50WG1sVW5pdFRlc3QoJnN0cmVhbSwgdW5pdF90ZXN0KTsKKyAgZnByaW50Zih4bWxv
dXQsICIlcyIsIFN0cmluZ1N0cmVhbVRvU3RyaW5nKCZzdHJlYW0pLmNfc3RyKCkpOwogICBmY2xv
c2UoeG1sb3V0KTsKIH0KIApAQCAtMzEwNSw0MiArMzQ3Myw0MyBAQCB2b2lkIFhtbFVuaXRUZXN0
UmVzdWx0UHJpbnRlcjo6T25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rl
c3QsCiAvLyBtb3N0IGludmFsaWQgY2hhcmFjdGVycyBjYW4gYmUgcmV0YWluZWQgdXNpbmcgY2hh
cmFjdGVyIHJlZmVyZW5jZXMuCiAvLyBUT0RPKHdhbik6IEl0IG1pZ2h0IGJlIG5pY2UgdG8gaGF2
ZSBhIG1pbmltYWxseSBpbnZhc2l2ZSwgaHVtYW4tcmVhZGFibGUKIC8vIGVzY2FwaW5nIHNjaGVt
ZSBmb3IgaW52YWxpZCBjaGFyYWN0ZXJzLCByYXRoZXIgdGhhbiBkcm9wcGluZyB0aGVtLgotU3Ry
aW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6RXNjYXBlWG1sKGNvbnN0IGNoYXIqIHN0ciwg
Ym9vbCBpc19hdHRyaWJ1dGUpIHsKK3N0ZDo6c3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRl
cjo6RXNjYXBlWG1sKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIsIGJvb2wgaXNfYXR0cmli
dXRlKSB7CiAgIE1lc3NhZ2UgbTsKIAotICBpZiAoc3RyICE9IE5VTEwpIHsKLSAgICBmb3IgKGNv
bnN0IGNoYXIqIHNyYyA9IHN0cjsgKnNyYzsgKytzcmMpIHsKLSAgICAgIHN3aXRjaCAoKnNyYykg
ewotICAgICAgICBjYXNlICc8JzoKLSAgICAgICAgICBtIDw8ICImbHQ7IjsKLSAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSAnPic6Ci0gICAgICAgICAgbSA8PCAiJmd0OyI7Ci0gICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJyYnOgotICAgICAgICAgIG0gPDwgIiZhbXA7IjsKLSAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnXCcnOgotICAgICAgICAgIGlmIChpc19hdHRy
aWJ1dGUpCi0gICAgICAgICAgICBtIDw8ICImYXBvczsiOwotICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG0gPDwgJ1wnJzsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnIic6Ci0g
ICAgICAgICAgaWYgKGlzX2F0dHJpYnV0ZSkKLSAgICAgICAgICAgIG0gPDwgIiZxdW90OyI7Cisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgY2hh
ciBjaCA9IHN0cltpXTsKKyAgICBzd2l0Y2ggKGNoKSB7CisgICAgICBjYXNlICc8JzoKKyAgICAg
ICAgbSA8PCAiJmx0OyI7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnPic6CisgICAgICAg
IG0gPDwgIiZndDsiOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJyYnOgorICAgICAgICBt
IDw8ICImYW1wOyI7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnXCcnOgorICAgICAgICBp
ZiAoaXNfYXR0cmlidXRlKQorICAgICAgICAgIG0gPDwgIiZhcG9zOyI7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICBtIDw8ICdcJyc7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnIic6Cisg
ICAgICAgIGlmIChpc19hdHRyaWJ1dGUpCisgICAgICAgICAgbSA8PCAiJnF1b3Q7IjsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgIG0gPDwgJyInOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1
bHQ6CisgICAgICAgIGlmIChJc1ZhbGlkWG1sQ2hhcmFjdGVyKGNoKSkgeworICAgICAgICAgIGlm
IChpc19hdHRyaWJ1dGUgJiYgSXNOb3JtYWxpemFibGVXaGl0ZXNwYWNlKGNoKSkKKyAgICAgICAg
ICAgIG0gPDwgIiYjeCIgPDwgU3RyaW5nOjpGb3JtYXRCeXRlKHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KGNoKSkKKyAgICAgICAgICAgICAgPDwgIjsiOwogICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG0gPDwgJyInOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgIGlmIChJc1ZhbGlkWG1sQ2hhcmFjdGVyKCpzcmMpKSB7Ci0gICAgICAgICAgICBpZiAo
aXNfYXR0cmlidXRlICYmIElzTm9ybWFsaXphYmxlV2hpdGVzcGFjZSgqc3JjKSkKLSAgICAgICAg
ICAgICAgbSA8PCBTdHJpbmc6OkZvcm1hdCgiJiN4JTAyWDsiLCB1bnNpZ25lZCgqc3JjKSk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIG0gPDwgKnNyYzsKLSAgICAgICAgICB9Ci0g
ICAgICAgICAgYnJlYWs7Ci0gICAgICB9CisgICAgICAgICAgICBtIDw8IGNoOworICAgICAgICB9
CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgfQogCkBAIC0zMTUwLDE3ICszNTE5LDE1IEBAIFN0
cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OkVzY2FwZVhtbChjb25zdCBjaGFyKiBzdHIs
IGJvb2wgaXNfYXR0cmlidXRlKSB7CiAvLyBSZXR1cm5zIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBh
bGwgY2hhcmFjdGVycyBpbnZhbGlkIGluIFhNTCByZW1vdmVkLgogLy8gQ3VycmVudGx5IGludmFs
aWQgY2hhcmFjdGVycyBhcmUgZHJvcHBlZCBmcm9tIHRoZSBzdHJpbmcuIEFuCiAvLyBhbHRlcm5h
dGl2ZSBpcyB0byByZXBsYWNlIHRoZW0gd2l0aCBjZXJ0YWluIGNoYXJhY3RlcnMgc3VjaCBhcyAu
IG9yID8uCi1TdHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpSZW1vdmVJbnZhbGlkWG1s
Q2hhcmFjdGVycyhjb25zdCBjaGFyKiBzdHIpIHsKLSAgY2hhciogY29uc3Qgb3V0cHV0ID0gbmV3
IGNoYXJbc3RybGVuKHN0cikgKyAxXTsKLSAgY2hhciogYXBwZW5kZXIgPSBvdXRwdXQ7Ci0gIGZv
ciAoY2hhciBjaCA9ICpzdHI7IGNoICE9ICdcMCc7IGNoID0gKisrc3RyKQotICAgIGlmIChJc1Zh
bGlkWG1sQ2hhcmFjdGVyKGNoKSkKLSAgICAgICphcHBlbmRlcisrID0gY2g7Ci0gICphcHBlbmRl
ciA9ICdcMCc7CitzdGQ6OnN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlJlbW92ZUlu
dmFsaWRYbWxDaGFyYWN0ZXJzKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKKyAgc3Rk
OjpzdHJpbmcgb3V0cHV0OworICBvdXRwdXQucmVzZXJ2ZShzdHIuc2l6ZSgpKTsKKyAgZm9yIChz
dGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzdHIuYmVnaW4oKTsgaXQgIT0gc3RyLmVu
ZCgpOyArK2l0KQorICAgIGlmIChJc1ZhbGlkWG1sQ2hhcmFjdGVyKCppdCkpCisgICAgICBvdXRw
dXQucHVzaF9iYWNrKCppdCk7CiAKLSAgU3RyaW5nIHJldF92YWx1ZShvdXRwdXQpOwotICBkZWxl
dGVbXSBvdXRwdXQ7Ci0gIHJldHVybiByZXRfdmFsdWU7CisgIHJldHVybiBvdXRwdXQ7CiB9CiAK
IC8vIFRoZSBmb2xsb3dpbmcgcm91dGluZXMgZ2VuZXJhdGUgYW4gWE1MIHJlcHJlc2VudGF0aW9u
IG9mIGEgVW5pdFRlc3QKQEAgLTMxODIsMTAgKzM1NDksNDEgQEAgU3RyaW5nIFhtbFVuaXRUZXN0
UmVzdWx0UHJpbnRlcjo6UmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoY29uc3QgY2hhciogc3Ry
KSB7CiAvLyBGb3JtYXRzIHRoZSBnaXZlbiB0aW1lIGluIG1pbGxpc2Vjb25kcyBhcyBzZWNvbmRz
Lgogc3RkOjpzdHJpbmcgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKFRpbWVJbk1pbGxpcyBt
cykgewogICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOwotICBzcyA8PCBtcy8xMDAwLjA7CisgIHNz
IDw8IChzdGF0aWNfY2FzdDxkb3VibGU+KG1zKSAqIDFlLTMpOwogICByZXR1cm4gc3Muc3RyKCk7
CiB9CiAKK3N0YXRpYyBib29sIFBvcnRhYmxlTG9jYWx0aW1lKHRpbWVfdCBzZWNvbmRzLCBzdHJ1
Y3QgdG0qIG91dCkgeworI2lmIGRlZmluZWQoX01TQ19WRVIpCisgIHJldHVybiBsb2NhbHRpbWVf
cyhvdXQsICZzZWNvbmRzKSA9PSAwOworI2VsaWYgZGVmaW5lZChfX01JTkdXMzJfXykgfHwgZGVm
aW5lZChfX01JTkdXNjRfXykKKyAgLy8gTUlOR1cgPHRpbWUuaD4gcHJvdmlkZXMgbmVpdGhlciBs
b2NhbHRpbWVfciBub3IgbG9jYWx0aW1lX3MsIGJ1dCB1c2VzCisgIC8vIFdpbmRvd3MnIGxvY2Fs
dGltZSgpLCB3aGljaCBoYXMgYSB0aHJlYWQtbG9jYWwgdG0gYnVmZmVyLgorICBzdHJ1Y3QgdG0q
IHRtX3B0ciA9IGxvY2FsdGltZSgmc2Vjb25kcyk7ICAvLyBOT0xJTlQKKyAgaWYgKHRtX3B0ciA9
PSBOVUxMKQorICAgIHJldHVybiBmYWxzZTsKKyAgKm91dCA9ICp0bV9wdHI7CisgIHJldHVybiB0
cnVlOworI2Vsc2UKKyAgcmV0dXJuIGxvY2FsdGltZV9yKCZzZWNvbmRzLCBvdXQpICE9IE5VTEw7
CisjZW5kaWYKK30KKworLy8gQ29udmVydHMgdGhlIGdpdmVuIGVwb2NoIHRpbWUgaW4gbWlsbGlz
ZWNvbmRzIHRvIGEgZGF0ZSBzdHJpbmcgaW4gdGhlIElTTworLy8gODYwMSBmb3JtYXQsIHdpdGhv
dXQgdGhlIHRpbWV6b25lIGluZm9ybWF0aW9uLgorc3RkOjpzdHJpbmcgRm9ybWF0RXBvY2hUaW1l
SW5NaWxsaXNBc0lzbzg2MDEoVGltZUluTWlsbGlzIG1zKSB7CisgIHN0cnVjdCB0bSB0aW1lX3N0
cnVjdDsKKyAgaWYgKCFQb3J0YWJsZUxvY2FsdGltZShzdGF0aWNfY2FzdDx0aW1lX3Q+KG1zIC8g
MTAwMCksICZ0aW1lX3N0cnVjdCkpCisgICAgcmV0dXJuICIiOworICAvLyBZWVlZLU1NLUREVGho
Om1tOnNzCisgIHJldHVybiBTdHJlYW1hYmxlVG9TdHJpbmcodGltZV9zdHJ1Y3QudG1feWVhciAr
IDE5MDApICsgIi0iICsKKyAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0
LnRtX21vbiArIDEpICsgIi0iICsKKyAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVf
c3RydWN0LnRtX21kYXkpICsgIlQiICsKKyAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRp
bWVfc3RydWN0LnRtX2hvdXIpICsgIjoiICsKKyAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgy
KHRpbWVfc3RydWN0LnRtX21pbikgKyAiOiIgKworICAgICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0
aDIodGltZV9zdHJ1Y3QudG1fc2VjKTsKK30KKwogLy8gU3RyZWFtcyBhbiBYTUwgQ0RBVEEgc2Vj
dGlvbiwgZXNjYXBpbmcgaW52YWxpZCBDREFUQSBzZXF1ZW5jZXMgYXMgbmVlZGVkLgogdm9pZCBY
bWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dFhtbENEYXRhU2VjdGlvbig6OnN0ZDo6b3N0
cmVhbSogc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhKSB7CkBAIC0zMjA2LDM1ICszNjA0LDYzIEBAIHZv
aWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPdXRwdXRYbWxDRGF0YVNlY3Rpb24oOjpzdGQ6
Om9zdHJlYW0qIHN0cmVhbSwKICAgKnN0cmVhbSA8PCAiXV0+IjsKIH0KIAordm9pZCBYbWxVbml0
VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dFhtbEF0dHJpYnV0ZSgKKyAgICBzdGQ6Om9zdHJlYW0q
IHN0cmVhbSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZWxlbWVudF9uYW1lLAorICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBuYW1lLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkgeworICBj
b25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGFsbG93ZWRfbmFtZXMgPQorICAgICAgR2V0
UmVzZXJ2ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudChlbGVtZW50X25hbWUpOworCisgIEdURVNUX0NI
RUNLXyhzdGQ6OmZpbmQoYWxsb3dlZF9uYW1lcy5iZWdpbigpLCBhbGxvd2VkX25hbWVzLmVuZCgp
LCBuYW1lKSAhPQorICAgICAgICAgICAgICAgICAgIGFsbG93ZWRfbmFtZXMuZW5kKCkpCisgICAg
ICA8PCAiQXR0cmlidXRlICIgPDwgbmFtZSA8PCAiIGlzIG5vdCBhbGxvd2VkIGZvciBlbGVtZW50
IDwiIDw8IGVsZW1lbnRfbmFtZQorICAgICAgPDwgIj4uIjsKKworICAqc3RyZWFtIDw8ICIgIiA8
PCBuYW1lIDw8ICI9XCIiIDw8IEVzY2FwZVhtbEF0dHJpYnV0ZSh2YWx1ZSkgPDwgIlwiIjsKK30K
KwogLy8gUHJpbnRzIGFuIFhNTCByZXByZXNlbnRhdGlvbiBvZiBhIFRlc3RJbmZvIG9iamVjdC4K
IC8vIFRPRE8od2FuKTogVGhlcmUgaXMgYWxzbyB2YWx1ZSBpbiBwcmludGluZyBwcm9wZXJ0aWVz
IHdpdGggdGhlIHBsYWluIHByaW50ZXIuCiB2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6
T3V0cHV0WG1sVGVzdEluZm8oOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2Vf
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CiAgIGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCA9
ICp0ZXN0X2luZm8ucmVzdWx0KCk7Ci0gICpzdHJlYW0gPDwgIiAgICA8dGVzdGNhc2UgbmFtZT1c
IiIKLSAgICAgICAgICA8PCBFc2NhcGVYbWxBdHRyaWJ1dGUodGVzdF9pbmZvLm5hbWUoKSkuY19z
dHIoKQotICAgICAgICAgIDw8ICJcIiBzdGF0dXM9XCIiCi0gICAgICAgICAgPDwgKHRlc3RfaW5m
by5zaG91bGRfcnVuKCkgPyAicnVuIiA6ICJub3RydW4iKQotICAgICAgICAgIDw8ICJcIiB0aW1l
PVwiIgotICAgICAgICAgIDw8IEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyhyZXN1bHQuZWxh
cHNlZF90aW1lKCkpCi0gICAgICAgICAgPDwgIlwiIGNsYXNzbmFtZT1cIiIgPDwgRXNjYXBlWG1s
QXR0cmlidXRlKHRlc3RfY2FzZV9uYW1lKS5jX3N0cigpCi0gICAgICAgICAgPDwgIlwiIiA8PCBU
ZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRlcyhyZXN1bHQpLmNfc3RyKCk7CisgIGNvbnN0IHN0
ZDo6c3RyaW5nIGtUZXN0Y2FzZSA9ICJ0ZXN0Y2FzZSI7CisKKyAgKnN0cmVhbSA8PCAiICAgIDx0
ZXN0Y2FzZSI7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgIm5hbWUi
LCB0ZXN0X2luZm8ubmFtZSgpKTsKKworICBpZiAodGVzdF9pbmZvLnZhbHVlX3BhcmFtKCkgIT0g
TlVMTCkgeworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgInZhbHVl
X3BhcmFtIiwKKyAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9pbmZvLnZhbHVlX3BhcmFtKCkp
OworICB9CisgIGlmICh0ZXN0X2luZm8udHlwZV9wYXJhbSgpICE9IE5VTEwpIHsKKyAgICBPdXRw
dXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJ0eXBlX3BhcmFtIiwgdGVzdF9pbmZv
LnR5cGVfcGFyYW0oKSk7CisgIH0KKworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVz
dGNhc2UsICJzdGF0dXMiLAorICAgICAgICAgICAgICAgICAgICAgdGVzdF9pbmZvLnNob3VsZF9y
dW4oKSA/ICJydW4iIDogIm5vdHJ1biIpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBr
VGVzdGNhc2UsICJ0aW1lIiwKKyAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxp
c0FzU2Vjb25kcyhyZXN1bHQuZWxhcHNlZF90aW1lKCkpKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRl
KHN0cmVhbSwga1Rlc3RjYXNlLCAiY2xhc3NuYW1lIiwgdGVzdF9jYXNlX25hbWUpOworICAqc3Ry
ZWFtIDw8IFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKHJlc3VsdCk7CiAKICAgaW50IGZh
aWx1cmVzID0gMDsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHQudG90YWxfcGFydF9jb3Vu
dCgpOyArK2kpIHsKICAgICBjb25zdCBUZXN0UGFydFJlc3VsdCYgcGFydCA9IHJlc3VsdC5HZXRU
ZXN0UGFydFJlc3VsdChpKTsKICAgICBpZiAocGFydC5mYWlsZWQoKSkgewotICAgICAgaWYgKCsr
ZmFpbHVyZXMgPT0gMSkKKyAgICAgIGlmICgrK2ZhaWx1cmVzID09IDEpIHsKICAgICAgICAgKnN0
cmVhbSA8PCAiPlxuIjsKKyAgICAgIH0KKyAgICAgIGNvbnN0IHN0cmluZyBsb2NhdGlvbiA9IGlu
dGVybmFsOjpGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uKAorICAgICAgICAg
IHBhcnQuZmlsZV9uYW1lKCksIHBhcnQubGluZV9udW1iZXIoKSk7CisgICAgICBjb25zdCBzdHJp
bmcgc3VtbWFyeSA9IGxvY2F0aW9uICsgIlxuIiArIHBhcnQuc3VtbWFyeSgpOwogICAgICAgKnN0
cmVhbSA8PCAiICAgICAgPGZhaWx1cmUgbWVzc2FnZT1cIiIKLSAgICAgICAgICAgICAgPDwgRXNj
YXBlWG1sQXR0cmlidXRlKHBhcnQuc3VtbWFyeSgpKS5jX3N0cigpCisgICAgICAgICAgICAgIDw8
IEVzY2FwZVhtbEF0dHJpYnV0ZShzdW1tYXJ5LmNfc3RyKCkpCiAgICAgICAgICAgICAgIDw8ICJc
IiB0eXBlPVwiXCI+IjsKLSAgICAgIGNvbnN0IFN0cmluZyBtZXNzYWdlID0gUmVtb3ZlSW52YWxp
ZFhtbENoYXJhY3RlcnMoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICAgIiVzOiVkXG4lcyIsCi0g
ICAgICAgICAgcGFydC5maWxlX25hbWUoKSwgcGFydC5saW5lX251bWJlcigpLAotICAgICAgICAg
IHBhcnQubWVzc2FnZSgpKS5jX3N0cigpKTsKLSAgICAgIE91dHB1dFhtbENEYXRhU2VjdGlvbihz
dHJlYW0sIG1lc3NhZ2UuY19zdHIoKSk7CisgICAgICBjb25zdCBzdHJpbmcgZGV0YWlsID0gbG9j
YXRpb24gKyAiXG4iICsgcGFydC5tZXNzYWdlKCk7CisgICAgICBPdXRwdXRYbWxDRGF0YVNlY3Rp
b24oc3RyZWFtLCBSZW1vdmVJbnZhbGlkWG1sQ2hhcmFjdGVycyhkZXRhaWwpLmNfc3RyKCkpOwog
ICAgICAgKnN0cmVhbSA8PCAiPC9mYWlsdXJlPlxuIjsKICAgICB9CiAgIH0KQEAgLTMyNDYsNDkg
KzM2NzIsNzMgQEAgdm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dFhtbFRlc3RJ
bmZvKDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCiB9CiAKIC8vIFByaW50cyBhbiBYTUwgcmVwcmVz
ZW50YXRpb24gb2YgYSBUZXN0Q2FzZSBvYmplY3QKLXZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmlu
dGVyOjpQcmludFhtbFRlc3RDYXNlKEZJTEUqIG91dCwKK3ZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQ
cmludGVyOjpQcmludFhtbFRlc3RDYXNlKHN0ZDo6b3N0cmVhbSogc3RyZWFtLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdENhc2UmIHRl
c3RfY2FzZSkgewotICBmcHJpbnRmKG91dCwKLSAgICAgICAgICAiICA8dGVzdHN1aXRlIG5hbWU9
XCIlc1wiIHRlc3RzPVwiJWRcIiBmYWlsdXJlcz1cIiVkXCIgIgotICAgICAgICAgICJkaXNhYmxl
ZD1cIiVkXCIgIiwKLSAgICAgICAgICBFc2NhcGVYbWxBdHRyaWJ1dGUodGVzdF9jYXNlLm5hbWUo
KSkuY19zdHIoKSwKLSAgICAgICAgICB0ZXN0X2Nhc2UudG90YWxfdGVzdF9jb3VudCgpLAotICAg
ICAgICAgIHRlc3RfY2FzZS5mYWlsZWRfdGVzdF9jb3VudCgpLAotICAgICAgICAgIHRlc3RfY2Fz
ZS5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOwotICBmcHJpbnRmKG91dCwKLSAgICAgICAgICAiZXJy
b3JzPVwiMFwiIHRpbWU9XCIlc1wiPlxuIiwKLSAgICAgICAgICBGb3JtYXRUaW1lSW5NaWxsaXNB
c1NlY29uZHModGVzdF9jYXNlLmVsYXBzZWRfdGltZSgpKS5jX3N0cigpKTsKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcga1Rlc3RzdWl0ZSA9ICJ0ZXN0c3VpdGUiOworICAqc3RyZWFtIDw8ICIgIDwiIDw8
IGtUZXN0c3VpdGU7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUsICJu
YW1lIiwgdGVzdF9jYXNlLm5hbWUoKSk7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtU
ZXN0c3VpdGUsICJ0ZXN0cyIsCisgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJp
bmcodGVzdF9jYXNlLnJlcG9ydGFibGVfdGVzdF9jb3VudCgpKSk7CisgIE91dHB1dFhtbEF0dHJp
YnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUsICJmYWlsdXJlcyIsCisgICAgICAgICAgICAgICAgICAg
ICBTdHJlYW1hYmxlVG9TdHJpbmcodGVzdF9jYXNlLmZhaWxlZF90ZXN0X2NvdW50KCkpKTsKKyAg
T3V0cHV0WG1sQXR0cmlidXRlKAorICAgICAgc3RyZWFtLCBrVGVzdHN1aXRlLCAiZGlzYWJsZWQi
LAorICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHRlc3RfY2FzZS5yZXBvcnRhYmxlX2Rpc2FibGVk
X3Rlc3RfY291bnQoKSkpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRl
LCAiZXJyb3JzIiwgIjAiKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0
ZSwgInRpbWUiLAorICAgICAgICAgICAgICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNv
bmRzKHRlc3RfY2FzZS5lbGFwc2VkX3RpbWUoKSkpOworICAqc3RyZWFtIDw8IFRlc3RQcm9wZXJ0
aWVzQXNYbWxBdHRyaWJ1dGVzKHRlc3RfY2FzZS5hZF9ob2NfdGVzdF9yZXN1bHQoKSkKKyAgICAg
ICAgICA8PCAiPlxuIjsKKwogICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RfY2FzZS50b3RhbF90
ZXN0X2NvdW50KCk7ICsraSkgewotICAgIFN0clN0cmVhbSBzdHJlYW07Ci0gICAgT3V0cHV0WG1s
VGVzdEluZm8oJnN0cmVhbSwgdGVzdF9jYXNlLm5hbWUoKSwgKnRlc3RfY2FzZS5HZXRUZXN0SW5m
byhpKSk7Ci0gICAgZnByaW50ZihvdXQsICIlcyIsIFN0clN0cmVhbVRvU3RyaW5nKCZzdHJlYW0p
LmNfc3RyKCkpOworICAgIGlmICh0ZXN0X2Nhc2UuR2V0VGVzdEluZm8oaSktPmlzX3JlcG9ydGFi
bGUoKSkKKyAgICAgIE91dHB1dFhtbFRlc3RJbmZvKHN0cmVhbSwgdGVzdF9jYXNlLm5hbWUoKSwg
KnRlc3RfY2FzZS5HZXRUZXN0SW5mbyhpKSk7CiAgIH0KLSAgZnByaW50ZihvdXQsICIgIDwvdGVz
dHN1aXRlPlxuIik7CisgICpzdHJlYW0gPDwgIiAgPC8iIDw8IGtUZXN0c3VpdGUgPDwgIj5cbiI7
CiB9CiAKIC8vIFByaW50cyBhbiBYTUwgc3VtbWFyeSBvZiB1bml0X3Rlc3QgdG8gb3V0cHV0IHN0
cmVhbSBvdXQuCi12b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRYbWxVbml0VGVz
dChGSUxFKiBvdXQsCit2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRYbWxVbml0
VGVzdChzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpIHsKLSAgZnByaW50
ZihvdXQsICI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz5cbiIpOwot
ICBmcHJpbnRmKG91dCwKLSAgICAgICAgICAiPHRlc3RzdWl0ZXMgdGVzdHM9XCIlZFwiIGZhaWx1
cmVzPVwiJWRcIiBkaXNhYmxlZD1cIiVkXCIgIgotICAgICAgICAgICJlcnJvcnM9XCIwXCIgdGlt
ZT1cIiVzXCIgIiwKLSAgICAgICAgICB1bml0X3Rlc3QudG90YWxfdGVzdF9jb3VudCgpLAotICAg
ICAgICAgIHVuaXRfdGVzdC5mYWlsZWRfdGVzdF9jb3VudCgpLAotICAgICAgICAgIHVuaXRfdGVz
dC5kaXNhYmxlZF90ZXN0X2NvdW50KCksCi0gICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNT
ZWNvbmRzKHVuaXRfdGVzdC5lbGFwc2VkX3RpbWUoKSkuY19zdHIoKSk7CisgIGNvbnN0IHN0ZDo6
c3RyaW5nIGtUZXN0c3VpdGVzID0gInRlc3RzdWl0ZXMiOworCisgICpzdHJlYW0gPDwgIjw/eG1s
IHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCI/PlxuIjsKKyAgKnN0cmVhbSA8PCAi
PCIgPDwga1Rlc3RzdWl0ZXM7CisKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3Rz
dWl0ZXMsICJ0ZXN0cyIsCisgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmco
dW5pdF90ZXN0LnJlcG9ydGFibGVfdGVzdF9jb3VudCgpKSk7CisgIE91dHB1dFhtbEF0dHJpYnV0
ZShzdHJlYW0sIGtUZXN0c3VpdGVzLCAiZmFpbHVyZXMiLAorICAgICAgICAgICAgICAgICAgICAg
U3RyZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5mYWlsZWRfdGVzdF9jb3VudCgpKSk7CisgIE91
dHB1dFhtbEF0dHJpYnV0ZSgKKyAgICAgIHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJkaXNhYmxlZCIs
CisgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodW5pdF90ZXN0LnJlcG9ydGFibGVfZGlzYWJsZWRf
dGVzdF9jb3VudCgpKSk7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGVz
LCAiZXJyb3JzIiwgIjAiKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKAorICAgICAgc3RyZWFtLCBr
VGVzdHN1aXRlcywgInRpbWVzdGFtcCIsCisgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0Fz
SXNvODYwMSh1bml0X3Rlc3Quc3RhcnRfdGltZXN0YW1wKCkpKTsKKyAgT3V0cHV0WG1sQXR0cmli
dXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0aW1lIiwKKyAgICAgICAgICAgICAgICAgICAgIEZv
cm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyh1bml0X3Rlc3QuZWxhcHNlZF90aW1lKCkpKTsKKwog
ICBpZiAoR1RFU1RfRkxBRyhzaHVmZmxlKSkgewotICAgIGZwcmludGYob3V0LCAicmFuZG9tX3Nl
ZWQ9XCIlZFwiICIsIHVuaXRfdGVzdC5yYW5kb21fc2VlZCgpKTsKKyAgICBPdXRwdXRYbWxBdHRy
aWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlcywgInJhbmRvbV9zZWVkIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5yYW5kb21fc2VlZCgpKSk7Cisg
IH0KKworICAqc3RyZWFtIDw8IFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKHVuaXRfdGVz
dC5hZF9ob2NfdGVzdF9yZXN1bHQoKSk7CisKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwg
a1Rlc3RzdWl0ZXMsICJuYW1lIiwgIkFsbFRlc3RzIik7CisgICpzdHJlYW0gPDwgIj5cbiI7CisK
KyAgZm9yIChpbnQgaSA9IDA7IGkgPCB1bml0X3Rlc3QudG90YWxfdGVzdF9jYXNlX2NvdW50KCk7
ICsraSkgeworICAgIGlmICh1bml0X3Rlc3QuR2V0VGVzdENhc2UoaSktPnJlcG9ydGFibGVfdGVz
dF9jb3VudCgpID4gMCkKKyAgICAgIFByaW50WG1sVGVzdENhc2Uoc3RyZWFtLCAqdW5pdF90ZXN0
LkdldFRlc3RDYXNlKGkpKTsKICAgfQotICBmcHJpbnRmKG91dCwgIm5hbWU9XCJBbGxUZXN0c1wi
PlxuIik7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgdW5pdF90ZXN0LnRvdGFsX3Rlc3RfY2FzZV9j
b3VudCgpOyArK2kpCi0gICAgUHJpbnRYbWxUZXN0Q2FzZShvdXQsICp1bml0X3Rlc3QuR2V0VGVz
dENhc2UoaSkpOwotICBmcHJpbnRmKG91dCwgIjwvdGVzdHN1aXRlcz5cbiIpOworICAqc3RyZWFt
IDw8ICI8LyIgPDwga1Rlc3RzdWl0ZXMgPDwgIj5cbiI7CiB9CiAKIC8vIFByb2R1Y2VzIGEgc3Ry
aW5nIHJlcHJlc2VudGluZyB0aGUgdGVzdCBwcm9wZXJ0aWVzIGluIGEgcmVzdWx0IGFzIHNwYWNl
CiAvLyBkZWxpbWl0ZWQgWE1MIGF0dHJpYnV0ZXMgYmFzZWQgb24gdGhlIHByb3BlcnR5IGtleT0i
dmFsdWUiIHBhaXJzLgotU3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6VGVzdFByb3Bl
cnRpZXNBc1htbEF0dHJpYnV0ZXMoCitzdGQ6OnN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50
ZXI6OlRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKAogICAgIGNvbnN0IFRlc3RSZXN1bHQm
IHJlc3VsdCkgewogICBNZXNzYWdlIGF0dHJpYnV0ZXM7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwg
cmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKTsgKytpKSB7CkBAIC0zMzAxLDEyICszNzUxLDgy
IEBAIFN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlRlc3RQcm9wZXJ0aWVzQXNYbWxB
dHRyaWJ1dGVzKAogCiAvLyBFbmQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyCiAKKyNpZiBHVEVT
VF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKKy8vIENoZWNrcyBpZiBzdHIgY29udGFpbnMgJz0nLCAn
JicsICclJyBvciAnXG4nIGNoYXJhY3RlcnMuIElmIHllcywKKy8vIHJlcGxhY2VzIHRoZW0gYnkg
IiV4eCIgd2hlcmUgeHggaXMgdGhlaXIgaGV4YWRlY2ltYWwgdmFsdWUuIEZvcgorLy8gZXhhbXBs
ZSwgcmVwbGFjZXMgIj0iIHdpdGggIiUzRCIuICBUaGlzIGFsZ29yaXRobSBpcyBPKHN0cmxlbihz
dHIpKQorLy8gaW4gYm90aCB0aW1lIGFuZCBzcGFjZSAtLSBpbXBvcnRhbnQgYXMgdGhlIGlucHV0
IHN0ciBtYXkgY29udGFpbiBhbgorLy8gYXJiaXRyYXJpbHkgbG9uZyB0ZXN0IGZhaWx1cmUgbWVz
c2FnZSBhbmQgc3RhY2sgdHJhY2UuCitzdHJpbmcgU3RyZWFtaW5nTGlzdGVuZXI6OlVybEVuY29k
ZShjb25zdCBjaGFyKiBzdHIpIHsKKyAgc3RyaW5nIHJlc3VsdDsKKyAgcmVzdWx0LnJlc2VydmUo
c3RybGVuKHN0cikgKyAxKTsKKyAgZm9yIChjaGFyIGNoID0gKnN0cjsgY2ggIT0gJ1wwJzsgY2gg
PSAqKytzdHIpIHsKKyAgICBzd2l0Y2ggKGNoKSB7CisgICAgICBjYXNlICclJzoKKyAgICAgIGNh
c2UgJz0nOgorICAgICAgY2FzZSAnJic6CisgICAgICBjYXNlICdcbic6CisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIiUiICsgU3RyaW5nOjpGb3JtYXRCeXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KGNoKSkpOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJlc3Vs
dC5wdXNoX2JhY2soY2gpOworICAgICAgICBicmVhazsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJl
c3VsdDsKK30KKwordm9pZCBTdHJlYW1pbmdMaXN0ZW5lcjo6U29ja2V0V3JpdGVyOjpNYWtlQ29u
bmVjdGlvbigpIHsKKyAgR1RFU1RfQ0hFQ0tfKHNvY2tmZF8gPT0gLTEpCisgICAgICA8PCAiTWFr
ZUNvbm5lY3Rpb24oKSBjYW4ndCBiZSBjYWxsZWQgd2hlbiB0aGVyZSBpcyBhbHJlYWR5IGEgY29u
bmVjdGlvbi4iOworCisgIGFkZHJpbmZvIGhpbnRzOworICBtZW1zZXQoJmhpbnRzLCAwLCBzaXpl
b2YoaGludHMpKTsKKyAgaGludHMuYWlfZmFtaWx5ID0gQUZfVU5TUEVDOyAgICAvLyBUbyBhbGxv
dyBib3RoIElQdjQgYW5kIElQdjYgYWRkcmVzc2VzLgorICBoaW50cy5haV9zb2NrdHlwZSA9IFNP
Q0tfU1RSRUFNOworICBhZGRyaW5mbyogc2VydmluZm8gPSBOVUxMOworCisgIC8vIFVzZSB0aGUg
Z2V0YWRkcmluZm8oKSB0byBnZXQgYSBsaW5rZWQgbGlzdCBvZiBJUCBhZGRyZXNzZXMgZm9yCisg
IC8vIHRoZSBnaXZlbiBob3N0IG5hbWUuCisgIGNvbnN0IGludCBlcnJvcl9udW0gPSBnZXRhZGRy
aW5mbygKKyAgICAgIGhvc3RfbmFtZV8uY19zdHIoKSwgcG9ydF9udW1fLmNfc3RyKCksICZoaW50
cywgJnNlcnZpbmZvKTsKKyAgaWYgKGVycm9yX251bSAhPSAwKSB7CisgICAgR1RFU1RfTE9HXyhX
QVJOSU5HKSA8PCAic3RyZWFtX3Jlc3VsdF90bzogZ2V0YWRkcmluZm8oKSBmYWlsZWQ6ICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIDw8IGdhaV9zdHJlcnJvcihlcnJvcl9udW0pOworICB9CisK
KyAgLy8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgcmVzdWx0cyBhbmQgY29ubmVjdCB0byB0aGUgZmly
c3Qgd2UgY2FuLgorICBmb3IgKGFkZHJpbmZvKiBjdXJfYWRkciA9IHNlcnZpbmZvOyBzb2NrZmRf
ID09IC0xICYmIGN1cl9hZGRyICE9IE5VTEw7CisgICAgICAgY3VyX2FkZHIgPSBjdXJfYWRkci0+
YWlfbmV4dCkgeworICAgIHNvY2tmZF8gPSBzb2NrZXQoCisgICAgICAgIGN1cl9hZGRyLT5haV9m
YW1pbHksIGN1cl9hZGRyLT5haV9zb2NrdHlwZSwgY3VyX2FkZHItPmFpX3Byb3RvY29sKTsKKyAg
ICBpZiAoc29ja2ZkXyAhPSAtMSkgeworICAgICAgLy8gQ29ubmVjdCB0aGUgY2xpZW50IHNvY2tl
dCB0byB0aGUgc2VydmVyIHNvY2tldC4KKyAgICAgIGlmIChjb25uZWN0KHNvY2tmZF8sIGN1cl9h
ZGRyLT5haV9hZGRyLCBjdXJfYWRkci0+YWlfYWRkcmxlbikgPT0gLTEpIHsKKyAgICAgICAgY2xv
c2Uoc29ja2ZkXyk7CisgICAgICAgIHNvY2tmZF8gPSAtMTsKKyAgICAgIH0KKyAgICB9CisgIH0K
KworICBmcmVlYWRkcmluZm8oc2VydmluZm8pOyAgLy8gYWxsIGRvbmUgd2l0aCB0aGlzIHN0cnVj
dHVyZQorCisgIGlmIChzb2NrZmRfID09IC0xKSB7CisgICAgR1RFU1RfTE9HXyhXQVJOSU5HKSA8
PCAic3RyZWFtX3Jlc3VsdF90bzogZmFpbGVkIHRvIGNvbm5lY3QgdG8gIgorICAgICAgICAgICAg
ICAgICAgICAgICAgPDwgaG9zdF9uYW1lXyA8PCAiOiIgPDwgcG9ydF9udW1fOworICB9Cit9CisK
Ky8vIEVuZCBvZiBjbGFzcyBTdHJlYW1pbmcgTGlzdGVuZXIKKyNlbmRpZiAgLy8gR1RFU1RfQ0FO
X1NUUkVBTV9SRVNVTFRTX18KKwogLy8gQ2xhc3MgU2NvcGVkVHJhY2UKIAogLy8gUHVzaGVzIHRo
ZSBnaXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlvbiBhbmQgbWVzc2FnZSBvbnRvIGEgcGVyLXRocmVh
ZAogLy8gdHJhY2Ugc3RhY2sgbWFpbnRhaW5lZCBieSBHb29nbGUgVGVzdC4KLS8vIEwgPCBVbml0
VGVzdDo6bXV0ZXhfCi1TY29wZWRUcmFjZTo6U2NvcGVkVHJhY2UoY29uc3QgY2hhciogZmlsZSwg
aW50IGxpbmUsIGNvbnN0IE1lc3NhZ2UmIG1lc3NhZ2UpIHsKK1Njb3BlZFRyYWNlOjpTY29wZWRU
cmFjZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgTWVzc2FnZSYgbWVzc2FnZSkK
KyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXygmVW5pdFRlc3Q6Om11dGV4XykgewogICBUcmFjZUlu
Zm8gdHJhY2U7CiAgIHRyYWNlLmZpbGUgPSBmaWxlOwogICB0cmFjZS5saW5lID0gbGluZTsKQEAg
LTMzMTYsMzQgKzM4MzYsNTIgQEAgU2NvcGVkVHJhY2U6OlNjb3BlZFRyYWNlKGNvbnN0IGNoYXIq
IGZpbGUsIGludCBsaW5lLCBjb25zdCBNZXNzYWdlJiBtZXNzYWdlKSB7CiB9CiAKIC8vIFBvcHMg
dGhlIGluZm8gcHVzaGVkIGJ5IHRoZSBjJ3Rvci4KLS8vIEwgPCBVbml0VGVzdDo6bXV0ZXhfCi1T
Y29wZWRUcmFjZTo6flNjb3BlZFRyYWNlKCkgeworU2NvcGVkVHJhY2U6On5TY29wZWRUcmFjZSgp
CisgICAgR1RFU1RfTE9DS19FWENMVURFRF8oJlVuaXRUZXN0OjptdXRleF8pIHsKICAgVW5pdFRl
c3Q6OkdldEluc3RhbmNlKCktPlBvcEdUZXN0VHJhY2UoKTsKIH0KIAogCiAvLyBjbGFzcyBPc1N0
YWNrVHJhY2VHZXR0ZXIKIAotLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBh
cyBhIFN0cmluZy4gIFBhcmFtZXRlcnM6Ci0vLwotLy8gICBtYXhfZGVwdGggIC0gdGhlIG1heGlt
dW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZAotLy8gICAgICAgICAgICAg
ICAgaW4gdGhlIHRyYWNlLgotLy8gICBza2lwX2NvdW50IC0gdGhlIG51bWJlciBvZiB0b3AgZnJh
bWVzIHRvIGJlIHNraXBwZWQ7IGRvZXNuJ3QgY291bnQKLS8vICAgICAgICAgICAgICAgIGFnYWlu
c3QgbWF4X2RlcHRoLgotLy8KLS8vIEwgPCBtdXRleF8KLS8vIFdlIHVzZSAiTCA8IG11dGV4XyIg
dG8gZGVub3RlIHRoYXQgdGhlIGZ1bmN0aW9uIG1heSBhY3F1aXJlIG11dGV4Xy4KLVN0cmluZyBP
c1N0YWNrVHJhY2VHZXR0ZXI6OkN1cnJlbnRTdGFja1RyYWNlKGludCwgaW50KSB7Ci0gIHJldHVy
biBTdHJpbmcoIiIpOwotfQorY29uc3QgY2hhciogY29uc3QgT3NTdGFja1RyYWNlR2V0dGVySW50
ZXJmYWNlOjprRWxpZGVkRnJhbWVzTWFya2VyID0KKyAgICAiLi4uICIgR1RFU1RfTkFNRV8gIiBp
bnRlcm5hbCBmcmFtZXMgLi4uIjsKIAotLy8gTCA8IG11dGV4Xwotdm9pZCBPc1N0YWNrVHJhY2VH
ZXR0ZXI6OlVwb25MZWF2aW5nR1Rlc3QoKSB7CitzdHJpbmcgT3NTdGFja1RyYWNlR2V0dGVyOjpD
dXJyZW50U3RhY2tUcmFjZShpbnQgLyptYXhfZGVwdGgqLywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKnNraXBfY291bnQqLykgeworICByZXR1cm4g
IiI7CiB9CiAKLWNvbnN0IGNoYXIqIGNvbnN0Ci1Pc1N0YWNrVHJhY2VHZXR0ZXI6OmtFbGlkZWRG
cmFtZXNNYXJrZXIgPQotICAgICIuLi4gIiBHVEVTVF9OQU1FXyAiIGludGVybmFsIGZyYW1lcyAu
Li4iOwordm9pZCBPc1N0YWNrVHJhY2VHZXR0ZXI6OlVwb25MZWF2aW5nR1Rlc3QoKSB7fQorCisv
LyBBIGhlbHBlciBjbGFzcyB0aGF0IGNyZWF0ZXMgdGhlIHByZW1hdHVyZS1leGl0IGZpbGUgaW4g
aXRzCisvLyBjb25zdHJ1Y3RvciBhbmQgZGVsZXRlcyB0aGUgZmlsZSBpbiBpdHMgZGVzdHJ1Y3Rv
ci4KK2NsYXNzIFNjb3BlZFByZW1hdHVyZUV4aXRGaWxlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0
IFNjb3BlZFByZW1hdHVyZUV4aXRGaWxlKGNvbnN0IGNoYXIqIHByZW1hdHVyZV9leGl0X2ZpbGVw
YXRoKQorICAgICAgOiBwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8ocHJlbWF0dXJlX2V4aXRfZmls
ZXBhdGgpIHsKKyAgICAvLyBJZiBhIHBhdGggdG8gdGhlIHByZW1hdHVyZS1leGl0IGZpbGUgaXMg
c3BlY2lmaWVkLi4uCisgICAgaWYgKHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoICE9IE5VTEwgJiYg
KnByZW1hdHVyZV9leGl0X2ZpbGVwYXRoICE9ICdcMCcpIHsKKyAgICAgIC8vIGNyZWF0ZSB0aGUg
ZmlsZSB3aXRoIGEgc2luZ2xlICIwIiBjaGFyYWN0ZXIgaW4gaXQuICBJL08KKyAgICAgIC8vIGVy
cm9ycyBhcmUgaWdub3JlZCBhcyB0aGVyZSdzIG5vdGhpbmcgYmV0dGVyIHdlIGNhbiBkbyBhbmQg
d2UKKyAgICAgIC8vIGRvbid0IHdhbnQgdG8gZmFpbCB0aGUgdGVzdCBiZWNhdXNlIG9mIHRoaXMu
CisgICAgICBGSUxFKiBwZmlsZSA9IHBvc2l4OjpGT3BlbihwcmVtYXR1cmVfZXhpdF9maWxlcGF0
aCwgInciKTsKKyAgICAgIGZ3cml0ZSgiMCIsIDEsIDEsIHBmaWxlKTsKKyAgICAgIGZjbG9zZShw
ZmlsZSk7CisgICAgfQorICB9CisKKyAgflNjb3BlZFByZW1hdHVyZUV4aXRGaWxlKCkgeworICAg
IGlmIChwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8gIT0gTlVMTCAmJiAqcHJlbWF0dXJlX2V4aXRf
ZmlsZXBhdGhfICE9ICdcMCcpIHsKKyAgICAgIHJlbW92ZShwcmVtYXR1cmVfZXhpdF9maWxlcGF0
aF8pOworICAgIH0KKyAgfQorCisgcHJpdmF0ZToKKyAgY29uc3QgY2hhciogY29uc3QgcHJlbWF0
dXJlX2V4aXRfZmlsZXBhdGhfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8o
U2NvcGVkUHJlbWF0dXJlRXhpdEZpbGUpOworfTsKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
CiAKQEAgLTM0MzEsNyArMzk2OSw3IEBAIHZvaWQgVGVzdEV2ZW50TGlzdGVuZXJzOjpTdXBwcmVz
c0V2ZW50Rm9yd2FyZGluZygpIHsKIC8vIFdlIGRvbid0IHByb3RlY3QgdGhpcyB1bmRlciBtdXRl
eF8gYXMgYSB1c2VyIGlzIG5vdCBzdXBwb3NlZCB0bwogLy8gY2FsbCB0aGlzIGJlZm9yZSBtYWlu
KCkgc3RhcnRzLCBmcm9tIHdoaWNoIHBvaW50IG9uIHRoZSByZXR1cm4KIC8vIHZhbHVlIHdpbGwg
bmV2ZXIgY2hhbmdlLgotVW5pdFRlc3QgKiBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKSB7CitVbml0
VGVzdCogVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkgewogICAvLyBXaGVuIGNvbXBpbGVkIHdpdGgg
TVNWQyA3LjEgaW4gb3B0aW1pemVkIG1vZGUsIGRlc3Ryb3lpbmcgdGhlCiAgIC8vIFVuaXRUZXN0
IG9iamVjdCB1cG9uIGV4aXRpbmcgdGhlIHByb2dyYW0gbWVzc2VzIHVwIHRoZSBleGl0IGNvZGUs
CiAgIC8vIGNhdXNpbmcgc3VjY2Vzc2Z1bCB0ZXN0cyB0byBhcHBlYXIgZmFpbGVkLiAgV2UgaGF2
ZSB0byB1c2UgYQpAQCAtMzQ4MSwxNyArNDAxOSwzMyBAQCBpbnQgVW5pdFRlc3Q6OnN1Y2Nlc3Nm
dWxfdGVzdF9jb3VudCgpIGNvbnN0IHsKIC8vIEdldHMgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVz
dHMuCiBpbnQgVW5pdFRlc3Q6OmZhaWxlZF90ZXN0X2NvdW50KCkgY29uc3QgeyByZXR1cm4gaW1w
bCgpLT5mYWlsZWRfdGVzdF9jb3VudCgpOyB9CiAKKy8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNh
YmxlZCB0ZXN0cyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhNTCByZXBvcnQuCitpbnQg
VW5pdFRlc3Q6OnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKKyAgcmV0
dXJuIGltcGwoKS0+cmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCk7Cit9CisKIC8vIEdl
dHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cy4KIGludCBVbml0VGVzdDo6ZGlzYWJsZWRf
dGVzdF9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJuIGltcGwoKS0+ZGlzYWJsZWRfdGVzdF9jb3Vu
dCgpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0
aGUgWE1MIHJlcG9ydC4KK2ludCBVbml0VGVzdDo6cmVwb3J0YWJsZV90ZXN0X2NvdW50KCkgY29u
c3QgeworICByZXR1cm4gaW1wbCgpLT5yZXBvcnRhYmxlX3Rlc3RfY291bnQoKTsKK30KKwogLy8g
R2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0cy4KIGludCBVbml0VGVzdDo6dG90YWxfdGVzdF9j
b3VudCgpIGNvbnN0IHsgcmV0dXJuIGltcGwoKS0+dG90YWxfdGVzdF9jb3VudCgpOyB9CiAKIC8v
IEdldHMgdGhlIG51bWJlciBvZiB0ZXN0cyB0aGF0IHNob3VsZCBydW4uCiBpbnQgVW5pdFRlc3Q6
OnRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3QgeyByZXR1cm4gaW1wbCgpLT50ZXN0X3RvX3J1bl9j
b3VudCgpOyB9CiAKKy8vIEdldHMgdGhlIHRpbWUgb2YgdGhlIHRlc3QgcHJvZ3JhbSBzdGFydCwg
aW4gbXMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlCisvLyBVTklYIGVwb2NoLgoraW50ZXJuYWw6OlRp
bWVJbk1pbGxpcyBVbml0VGVzdDo6c3RhcnRfdGltZXN0YW1wKCkgY29uc3QgeworICAgIHJldHVy
biBpbXBsKCktPnN0YXJ0X3RpbWVzdGFtcCgpOworfQorCiAvLyBHZXRzIHRoZSBlbGFwc2VkIHRp
bWUsIGluIG1pbGxpc2Vjb25kcy4KIGludGVybmFsOjpUaW1lSW5NaWxsaXMgVW5pdFRlc3Q6OmVs
YXBzZWRfdGltZSgpIGNvbnN0IHsKICAgcmV0dXJuIGltcGwoKS0+ZWxhcHNlZF90aW1lKCk7CkBA
IC0zNTEwLDYgKzQwNjQsMTIgQEAgY29uc3QgVGVzdENhc2UqIFVuaXRUZXN0OjpHZXRUZXN0Q2Fz
ZShpbnQgaSkgY29uc3QgewogICByZXR1cm4gaW1wbCgpLT5HZXRUZXN0Q2FzZShpKTsKIH0KIAor
Ly8gUmV0dXJucyB0aGUgVGVzdFJlc3VsdCBjb250YWluaW5nIGluZm9ybWF0aW9uIG9uIHRlc3Qg
ZmFpbHVyZXMgYW5kCisvLyBwcm9wZXJ0aWVzIGxvZ2dlZCBvdXRzaWRlIG9mIGluZGl2aWR1YWwg
dGVzdCBjYXNlcy4KK2NvbnN0IFRlc3RSZXN1bHQmIFVuaXRUZXN0OjphZF9ob2NfdGVzdF9yZXN1
bHQoKSBjb25zdCB7CisgIHJldHVybiAqaW1wbCgpLT5hZF9ob2NfdGVzdF9yZXN1bHQoKTsKK30K
KwogLy8gR2V0cyB0aGUgaS10aCB0ZXN0IGNhc2UgYW1vbmcgYWxsIHRoZSB0ZXN0IGNhc2VzLiBp
IGNhbiByYW5nZSBmcm9tIDAgdG8KIC8vIHRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpIC0gMS4gSWYg
aSBpcyBub3QgaW4gdGhhdCByYW5nZSwgcmV0dXJucyBOVUxMLgogVGVzdENhc2UqIFVuaXRUZXN0
OjpHZXRNdXRhYmxlVGVzdENhc2UoaW50IGkpIHsKQEAgLTM1NDEsMjkgKzQxMDEsMTYgQEAgRW52
aXJvbm1lbnQqIFVuaXRUZXN0OjpBZGRFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KSB7CiAg
IHJldHVybiBlbnY7CiB9CiAKLSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwotLy8gQSBmYWlsZWQg
R29vZ2xlIFRlc3QgYXNzZXJ0aW9uIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIG9mIHRoaXMgdHlw
ZQotLy8gd2hlbiBleGNlcHRpb25zIGFyZSBlbmFibGVkLiAgV2UgZGVyaXZlIGl0IGZyb20gc3Rk
OjpydW50aW1lX2Vycm9yLAotLy8gd2hpY2ggaXMgZm9yIGVycm9ycyBwcmVzdW1hYmx5IGRldGVj
dGFibGUgb25seSBhdCBydW4gdGltZS4gIFNpbmNlCi0vLyBzdGQ6OnJ1bnRpbWVfZXJyb3IgaW5o
ZXJpdHMgZnJvbSBzdGQ6OmV4Y2VwdGlvbiwgbWFueSB0ZXN0aW5nCi0vLyBmcmFtZXdvcmtzIGtu
b3cgaG93IHRvIGV4dHJhY3QgYW5kIHByaW50IHRoZSBtZXNzYWdlIGluc2lkZSBpdC4KLWNsYXNz
IEdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uIDogcHVibGljIDo6c3RkOjpydW50aW1lX2Vycm9y
IHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IEdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uKGNvbnN0
IFRlc3RQYXJ0UmVzdWx0JiBmYWlsdXJlKQotICAgICAgOiA6OnN0ZDo6cnVudGltZV9lcnJvcihQ
cmludFRlc3RQYXJ0UmVzdWx0VG9TdHJpbmcoZmFpbHVyZSkuY19zdHIoKSkge30KLX07Ci0jZW5k
aWYKLQogLy8gQWRkcyBhIFRlc3RQYXJ0UmVzdWx0IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQg
b2JqZWN0LiAgQWxsIEdvb2dsZSBUZXN0CiAvLyBhc3NlcnRpb24gbWFjcm9zIChlLmcuIEFTU0VS
VF9UUlVFLCBFWFBFQ1RfRVEsIGV0YykgZXZlbnR1YWxseSBjYWxsCiAvLyB0aGlzIHRvIHJlcG9y
dCB0aGVpciByZXN1bHRzLiAgVGhlIHVzZXIgY29kZSBzaG91bGQgdXNlIHRoZQogLy8gYXNzZXJ0
aW9uIG1hY3JvcyBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhpcyBkaXJlY3RseS4KLS8vIEwgPCBtdXRl
eF8KLXZvaWQgVW5pdFRlc3Q6OkFkZFRlc3RQYXJ0UmVzdWx0KFRlc3RQYXJ0UmVzdWx0OjpUeXBl
IHJlc3VsdF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogZmlsZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVf
bnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJuYWw6
OlN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGludGVybmFsOjpTdHJpbmcmIG9zX3N0YWNrX3RyYWNlKSB7Cit2b2lkIFVuaXRUZXN0OjpBZGRU
ZXN0UGFydFJlc3VsdCgKKyAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKKyAg
ICBjb25zdCBjaGFyKiBmaWxlX25hbWUsCisgICAgaW50IGxpbmVfbnVtYmVyLAorICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBtZXNzYWdlLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvc19zdGFja190
cmFjZSkgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7CiAgIE1lc3NhZ2UgbXNnOwogICBt
c2cgPDwgbWVzc2FnZTsKIApAQCAtMzU5NiwxNyArNDE0MywyMSBAQCB2b2lkIFVuaXRUZXN0OjpB
ZGRUZXN0UGFydFJlc3VsdChUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKICAgICAv
LyB3aXRoIGFub3RoZXIgdGVzdGluZyBmcmFtZXdvcmspIGFuZCBzcGVjaWZ5IHRoZSBmb3JtZXIg
b24gdGhlCiAgICAgLy8gY29tbWFuZCBsaW5lIGZvciBkZWJ1Z2dpbmcuCiAgICAgaWYgKEdURVNU
X0ZMQUcoYnJlYWtfb25fZmFpbHVyZSkpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjaWYgR1RF
U1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lO
RE9XU19SVAogICAgICAgLy8gVXNpbmcgRGVidWdCcmVhayBvbiBXaW5kb3dzIGFsbG93cyBndGVz
dCB0byBzdGlsbCBicmVhayBpbnRvIGEgZGVidWdnZXIKICAgICAgIC8vIHdoZW4gYSBmYWlsdXJl
IGhhcHBlbnMgYW5kIGJvdGggdGhlIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBhbmQKICAgICAg
IC8vIHRoZSAtLWd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnMgZmxhZ3MgYXJlIHNwZWNpZmllZC4KICAg
ICAgIERlYnVnQnJlYWsoKTsKICNlbHNlCisgICAgICAvLyBEZXJlZmVyZW5jZSBOVUxMIHRocm91
Z2ggYSB2b2xhdGlsZSBwb2ludGVyIHRvIHByZXZlbnQgdGhlIGNvbXBpbGVyCisgICAgICAvLyBm
cm9tIHJlbW92aW5nLiBXZSB1c2UgdGhpcyByYXRoZXIgdGhhbiBhYm9ydCgpIG9yIF9fYnVpbHRp
bl90cmFwKCkgZm9yCisgICAgICAvLyBwb3J0YWJpbGl0eTogU3ltYmlhbiBkb2Vzbid0IGltcGxl
bWVudCBhYm9ydCgpIHdlbGwsIGFuZCBzb21lIGRlYnVnZ2VycworICAgICAgLy8gZG9uJ3QgY29y
cmVjdGx5IHRyYXAgYWJvcnQoKS4KICAgICAgICpzdGF0aWNfY2FzdDx2b2xhdGlsZSBpbnQqPihO
VUxMKSA9IDE7CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKICAgICB9IGVsc2UgaWYgKEdU
RVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkpIHsKICNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwot
ICAgICAgdGhyb3cgR29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24ocmVzdWx0KTsKKyAgICAgIHRo
cm93IGludGVybmFsOjpHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbihyZXN1bHQpOwogI2Vsc2UK
ICAgICAgIC8vIFdlIGNhbm5vdCBjYWxsIGFib3J0KCkgYXMgaXQgZ2VuZXJhdGVzIGEgcG9wLXVw
IGluIGRlYnVnIG1vZGUKICAgICAgIC8vIHRoYXQgY2Fubm90IGJlIHN1cHByZXNzZWQgaW4gVkMg
Ny4xIG9yIGJlbG93LgpAQCAtMzYxNiwxMiArNDE2NywxNCBAQCB2b2lkIFVuaXRUZXN0OjpBZGRU
ZXN0UGFydFJlc3VsdChUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKICAgfQogfQog
Ci0vLyBDcmVhdGVzIGFuZCBhZGRzIGEgcHJvcGVydHkgdG8gdGhlIGN1cnJlbnQgVGVzdFJlc3Vs
dC4gSWYgYSBwcm9wZXJ0eSBtYXRjaGluZwotLy8gdGhlIHN1cHBsaWVkIHZhbHVlIGFscmVhZHkg
ZXhpc3RzLCB1cGRhdGVzIGl0cyB2YWx1ZSBpbnN0ZWFkLgotdm9pZCBVbml0VGVzdDo6UmVjb3Jk
UHJvcGVydHlGb3JDdXJyZW50VGVzdChjb25zdCBjaGFyKiBrZXksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHZhbHVlKSB7Ci0gIGNvbnN0
IFRlc3RQcm9wZXJ0eSB0ZXN0X3Byb3BlcnR5KGtleSwgdmFsdWUpOwotICBpbXBsXy0+Y3VycmVu
dF90ZXN0X3Jlc3VsdCgpLT5SZWNvcmRQcm9wZXJ0eSh0ZXN0X3Byb3BlcnR5KTsKKy8vIEFkZHMg
YSBUZXN0UHJvcGVydHkgdG8gdGhlIGN1cnJlbnQgVGVzdFJlc3VsdCBvYmplY3Qgd2hlbiBpbnZv
a2VkIGZyb20KKy8vIGluc2lkZSBhIHRlc3QsIHRvIGN1cnJlbnQgVGVzdENhc2UncyBhZF9ob2Nf
dGVzdF9yZXN1bHRfIHdoZW4gaW52b2tlZAorLy8gZnJvbSBTZXRVcFRlc3RDYXNlIG9yIFRlYXJE
b3duVGVzdENhc2UsIG9yIHRvIHRoZSBnbG9iYWwgcHJvcGVydHkgc2V0CisvLyB3aGVuIGludm9r
ZWQgZWxzZXdoZXJlLiAgSWYgdGhlIHJlc3VsdCBhbHJlYWR5IGNvbnRhaW5zIGEgcHJvcGVydHkg
d2l0aAorLy8gdGhlIHNhbWUga2V5LCB0aGUgdmFsdWUgd2lsbCBiZSB1cGRhdGVkLgordm9pZCBV
bml0VGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkgeworICBpbXBs
Xy0+UmVjb3JkUHJvcGVydHkoVGVzdFByb3BlcnR5KGtleSwgdmFsdWUpKTsKIH0KIAogLy8gUnVu
cyBhbGwgdGVzdHMgaW4gdGhpcyBVbml0VGVzdCBvYmplY3QgYW5kIHByaW50cyB0aGUgcmVzdWx0
LgpAQCAtMzYzMCwzMSArNDE4Myw1OCBAQCB2b2lkIFVuaXRUZXN0OjpSZWNvcmRQcm9wZXJ0eUZv
ckN1cnJlbnRUZXN0KGNvbnN0IGNoYXIqIGtleSwKIC8vIFdlIGRvbid0IHByb3RlY3QgdGhpcyB1
bmRlciBtdXRleF8sIGFzIHdlIG9ubHkgc3VwcG9ydCBjYWxsaW5nIGl0CiAvLyBmcm9tIHRoZSBt
YWluIHRocmVhZC4KIGludCBVbml0VGVzdDo6UnVuKCkgewotI2lmIEdURVNUX0hBU19TRUgKLSAg
Ly8gQ2F0Y2ggU0VILXN0eWxlIGV4Y2VwdGlvbnMuCi0KICAgY29uc3QgYm9vbCBpbl9kZWF0aF90
ZXN0X2NoaWxkX3Byb2Nlc3MgPQogICAgICAgaW50ZXJuYWw6OkdURVNUX0ZMQUcoaW50ZXJuYWxf
cnVuX2RlYXRoX3Rlc3QpLmxlbmd0aCgpID4gMDsKIAorICAvLyBHb29nbGUgVGVzdCBpbXBsZW1l
bnRzIHRoaXMgcHJvdG9jb2wgZm9yIGNhdGNoaW5nIHRoYXQgYSB0ZXN0CisgIC8vIHByb2dyYW0g
ZXhpdHMgYmVmb3JlIHJldHVybmluZyBjb250cm9sIHRvIEdvb2dsZSBUZXN0OgorICAvLworICAv
LyAgIDEuIFVwb24gc3RhcnQsIEdvb2dsZSBUZXN0IGNyZWF0ZXMgYSBmaWxlIHdob3NlIGFic29s
dXRlIHBhdGgKKyAgLy8gICAgICBpcyBzcGVjaWZpZWQgYnkgdGhlIGVudmlyb25tZW50IHZhcmlh
YmxlCisgIC8vICAgICAgVEVTVF9QUkVNQVRVUkVfRVhJVF9GSUxFLgorICAvLyAgIDIuIFdoZW4g
R29vZ2xlIFRlc3QgaGFzIGZpbmlzaGVkIGl0cyB3b3JrLCBpdCBkZWxldGVzIHRoZSBmaWxlLgor
ICAvLworICAvLyBUaGlzIGFsbG93cyBhIHRlc3QgcnVubmVyIHRvIHNldCBURVNUX1BSRU1BVFVS
RV9FWElUX0ZJTEUgYmVmb3JlCisgIC8vIHJ1bm5pbmcgYSBHb29nbGUtVGVzdC1iYXNlZCB0ZXN0
IHByb2dyYW0gYW5kIGNoZWNrIHRoZSBleGlzdGVuY2UKKyAgLy8gb2YgdGhlIGZpbGUgYXQgdGhl
IGVuZCBvZiB0aGUgdGVzdCBleGVjdXRpb24gdG8gc2VlIGlmIGl0IGhhcworICAvLyBleGl0ZWQg
cHJlbWF0dXJlbHkuCisKKyAgLy8gSWYgd2UgYXJlIGluIHRoZSBjaGlsZCBwcm9jZXNzIG9mIGEg
ZGVhdGggdGVzdCwgZG9uJ3QKKyAgLy8gY3JlYXRlL2RlbGV0ZSB0aGUgcHJlbWF0dXJlIGV4aXQg
ZmlsZSwgYXMgZG9pbmcgc28gaXMgdW5uZWNlc3NhcnkKKyAgLy8gYW5kIHdpbGwgY29uZnVzZSB0
aGUgcGFyZW50IHByb2Nlc3MuICBPdGhlcndpc2UsIGNyZWF0ZS9kZWxldGUKKyAgLy8gdGhlIGZp
bGUgdXBvbiBlbnRlcmluZy9sZWF2aW5nIHRoaXMgZnVuY3Rpb24uICBJZiB0aGUgcHJvZ3JhbQor
ICAvLyBzb21laG93IGV4aXRzIGJlZm9yZSB0aGlzIGZ1bmN0aW9uIGhhcyBhIGNoYW5jZSB0byBy
ZXR1cm4sIHRoZQorICAvLyBwcmVtYXR1cmUtZXhpdCBmaWxlIHdpbGwgYmUgbGVmdCB1bmRlbGV0
ZWQsIGNhdXNpbmcgYSB0ZXN0IHJ1bm5lcgorICAvLyB0aGF0IHVuZGVyc3RhbmRzIHRoZSBwcmVt
YXR1cmUtZXhpdC1maWxlIHByb3RvY29sIHRvIHJlcG9ydCB0aGUKKyAgLy8gdGVzdCBhcyBoYXZp
bmcgZmFpbGVkLgorICBjb25zdCBpbnRlcm5hbDo6U2NvcGVkUHJlbWF0dXJlRXhpdEZpbGUgcHJl
bWF0dXJlX2V4aXRfZmlsZSgKKyAgICAgIGluX2RlYXRoX3Rlc3RfY2hpbGRfcHJvY2VzcyA/Cisg
ICAgICBOVUxMIDogaW50ZXJuYWw6OnBvc2l4OjpHZXRFbnYoIlRFU1RfUFJFTUFUVVJFX0VYSVRf
RklMRSIpKTsKKworICAvLyBDYXB0dXJlcyB0aGUgdmFsdWUgb2YgR1RFU1RfRkxBRyhjYXRjaF9l
eGNlcHRpb25zKS4gIFRoaXMgdmFsdWUgd2lsbCBiZQorICAvLyB1c2VkIGZvciB0aGUgZHVyYXRp
b24gb2YgdGhlIHByb2dyYW0uCisgIGltcGwoKS0+c2V0X2NhdGNoX2V4Y2VwdGlvbnMoR1RFU1Rf
RkxBRyhjYXRjaF9leGNlcHRpb25zKSk7CisKKyNpZiBHVEVTVF9IQVNfU0VICiAgIC8vIEVpdGhl
ciB0aGUgdXNlciB3YW50cyBHb29nbGUgVGVzdCB0byBjYXRjaCBleGNlcHRpb25zIHRocm93biBi
eSB0aGUKICAgLy8gdGVzdHMgb3IgdGhpcyBpcyBleGVjdXRpbmcgaW4gdGhlIGNvbnRleHQgb2Yg
ZGVhdGggdGVzdCBjaGlsZAogICAvLyBwcm9jZXNzLiBJbiBlaXRoZXIgY2FzZSB0aGUgdXNlciBk
b2VzIG5vdCB3YW50IHRvIHNlZSBwb3AtdXAgZGlhbG9ncwotICAvLyBhYm91dCBjcmFzaGVzIC0g
dGhleSBhcmUgZXhwZWN0ZWQuLgotICBpZiAoR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSB8
fCBpbl9kZWF0aF90ZXN0X2NoaWxkX3Byb2Nlc3MpIHsKLSNpZiAhR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKKyAgLy8gYWJvdXQgY3Jhc2hlcyAtIHRoZXkgYXJlIGV4cGVjdGVkLgorICBpZiAoaW1w
bCgpLT5jYXRjaF9leGNlcHRpb25zKCkgfHwgaW5fZGVhdGhfdGVzdF9jaGlsZF9wcm9jZXNzKSB7
CisjIGlmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRSAmJiAhR1RFU1RfT1NfV0lORE9XU19QSE9O
RSAmJiAhR1RFU1RfT1NfV0lORE9XU19SVAogICAgIC8vIFNldEVycm9yTW9kZSBkb2Vzbid0IGV4
aXN0IG9uIENFLgogICAgIFNldEVycm9yTW9kZShTRU1fRkFJTENSSVRJQ0FMRVJST1JTIHwgU0VN
X05PQUxJR05NRU5URkFVTFRFWENFUFQgfAogICAgICAgICAgICAgICAgICBTRU1fTk9HUEZBVUxU
RVJST1JCT1ggfCBTRU1fTk9PUEVORklMRUVSUk9SQk9YKTsKLSNlbmRpZiAgLy8gIUdURVNUX09T
X1dJTkRPV1NfTU9CSUxFCisjIGVuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIAot
I2lmIChkZWZpbmVkKF9NU0NfVkVSKSB8fCBHVEVTVF9PU19XSU5ET1dTX01JTkdXKSAmJiAhR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaWYgKGRlZmluZWQoX01TQ19WRVIpIHx8IEdURVNUX09T
X1dJTkRPV1NfTUlOR1cpICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQogICAgIC8vIERlYXRo
IHRlc3QgY2hpbGRyZW4gY2FuIGJlIHRlcm1pbmF0ZWQgd2l0aCBfYWJvcnQoKS4gIE9uIFdpbmRv
d3MsCiAgICAgLy8gX2Fib3J0KCkgY2FuIHNob3cgYSBkaWFsb2cgd2l0aCBhIHdhcm5pbmcgbWVz
c2FnZS4gIFRoaXMgZm9yY2VzIHRoZQogICAgIC8vIGFib3J0IG1lc3NhZ2UgdG8gZ28gdG8gc3Rk
ZXJyIGluc3RlYWQuCiAgICAgX3NldF9lcnJvcl9tb2RlKF9PVVRfVE9fU1RERVJSKTsKLSNlbmRp
ZgorIyBlbmRpZgogCi0jaWYgX01TQ19WRVIgPj0gMTQwMCAmJiAhR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKKyMgaWYgX01TQ19WRVIgPj0gMTQwMCAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
ICAgICAvLyBJbiB0aGUgZGVidWcgdmVyc2lvbiwgVmlzdWFsIFN0dWRpbyBwb3BzIHVwIGEgc2Vw
YXJhdGUgZGlhbG9nCiAgICAgLy8gb2ZmZXJpbmcgYSBjaG9pY2UgdG8gZGVidWcgdGhlIGFib3J0
ZWQgcHJvZ3JhbS4gV2UgbmVlZCB0byBzdXBwcmVzcwogICAgIC8vIHRoaXMgZGlhbG9nIG9yIGl0
IHdpbGwgcG9wIHVwIGZvciBldmVyeSBFWFBFQ1QvQVNTRVJUX0RFQVRIIHN0YXRlbWVudApAQCAt
MzY3MCwyMiArNDI1MCwxNCBAQCBpbnQgVW5pdFRlc3Q6OlJ1bigpIHsKICAgICAgIF9zZXRfYWJv
cnRfYmVoYXZpb3IoCiAgICAgICAgICAgMHgwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIENsZWFyIHRoZSBmb2xsb3dpbmcgZmxhZ3M6CiAgICAgICAgICAgX1dSSVRFX0FC
T1JUX01TRyB8IF9DQUxMX1JFUE9SVEZBVUxUKTsgIC8vIHBvcC11cCB3aW5kb3csIGNvcmUgZHVt
cC4KLSNlbmRpZgotICB9Ci0KLSAgX190cnkgewotICAgIHJldHVybiBpbXBsXy0+UnVuQWxsVGVz
dHMoKTsKLSAgfSBfX2V4Y2VwdChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpHVGVzdFNob3Vs
ZFByb2Nlc3NTRUgoCi0gICAgICBHZXRFeGNlcHRpb25Db2RlKCkpKSB7Ci0gICAgcHJpbnRmKCJF
eGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAweCV4LlxuRkFJTFxuIiwgR2V0RXhjZXB0aW9uQ29k
ZSgpKTsKLSAgICBmZmx1c2goc3Rkb3V0KTsKLSAgICByZXR1cm4gMTsKKyMgZW5kaWYKICAgfQot
Ci0jZWxzZSAgLy8gV2UgYXJlIG9uIGEgY29tcGlsZXIgb3IgcGxhdGZvcm0gdGhhdCBkb2Vzbid0
IHN1cHBvcnQgU0VILgotCi0gIHJldHVybiBpbXBsXy0+UnVuQWxsVGVzdHMoKTsKICNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1NFSAorCisgIHJldHVybiBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0lu
TWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgICBpbXBsKCksCisgICAgICAmaW50ZXJuYWw6OlVuaXRU
ZXN0SW1wbDo6UnVuQWxsVGVzdHMsCisgICAgICAiYXV4aWxpYXJ5IHRlc3QgY29kZSAoZW52aXJv
bm1lbnRzIG9yIGV2ZW50IGxpc3RlbmVycykiKSA/IDAgOiAxOwogfQogCiAvLyBSZXR1cm5zIHRo
ZSB3b3JraW5nIGRpcmVjdG9yeSB3aGVuIHRoZSBmaXJzdCBURVNUKCkgb3IgVEVTVF9GKCkgd2Fz
CkBAIC0zNjk2LDE2ICs0MjY4LDE2IEBAIGNvbnN0IGNoYXIqIFVuaXRUZXN0OjpvcmlnaW5hbF93
b3JraW5nX2RpcigpIGNvbnN0IHsKIAogLy8gUmV0dXJucyB0aGUgVGVzdENhc2Ugb2JqZWN0IGZv
ciB0aGUgdGVzdCB0aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcsCiAvLyBvciBOVUxMIGlmIG5vIHRl
c3QgaXMgcnVubmluZy4KLS8vIEwgPCBtdXRleF8KLWNvbnN0IFRlc3RDYXNlKiBVbml0VGVzdDo6
Y3VycmVudF90ZXN0X2Nhc2UoKSBjb25zdCB7Citjb25zdCBUZXN0Q2FzZSogVW5pdFRlc3Q6OmN1
cnJlbnRfdGVzdF9jYXNlKCkgY29uc3QKKyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8p
IHsKICAgaW50ZXJuYWw6Ok11dGV4TG9jayBsb2NrKCZtdXRleF8pOwogICByZXR1cm4gaW1wbF8t
PmN1cnJlbnRfdGVzdF9jYXNlKCk7CiB9CiAKIC8vIFJldHVybnMgdGhlIFRlc3RJbmZvIG9iamVj
dCBmb3IgdGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLAogLy8gb3IgTlVMTCBpZiBu
byB0ZXN0IGlzIHJ1bm5pbmcuCi0vLyBMIDwgbXV0ZXhfCi1jb25zdCBUZXN0SW5mbyogVW5pdFRl
c3Q6OmN1cnJlbnRfdGVzdF9pbmZvKCkgY29uc3QgeworY29uc3QgVGVzdEluZm8qIFVuaXRUZXN0
OjpjdXJyZW50X3Rlc3RfaW5mbygpIGNvbnN0CisgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0
ZXhfKSB7CiAgIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKICAgcmV0dXJuIGlt
cGxfLT5jdXJyZW50X3Rlc3RfaW5mbygpOwogfQpAQCAtMzcxNiw5ICs0Mjg4LDkgQEAgaW50IFVu
aXRUZXN0OjpyYW5kb21fc2VlZCgpIGNvbnN0IHsgcmV0dXJuIGltcGxfLT5yYW5kb21fc2VlZCgp
OyB9CiAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKIC8vIFJldHVybnMgUGFyYW1ldGVyaXplZFRl
c3RDYXNlUmVnaXN0cnkgb2JqZWN0IHVzZWQgdG8ga2VlcCB0cmFjayBvZgogLy8gdmFsdWUtcGFy
YW1ldGVyaXplZCB0ZXN0cyBhbmQgaW5zdGFudGlhdGUgYW5kIHJlZ2lzdGVyIHRoZW0uCi0vLyBM
IDwgbXV0ZXhfCiBpbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkmCi0gICAg
VW5pdFRlc3Q6OnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpIHsKKyAgICBVbml0VGVzdDo6
cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkKKyAgICAgICAgR1RFU1RfTE9DS19FWENMVURF
RF8obXV0ZXhfKSB7CiAgIHJldHVybiBpbXBsXy0+cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5
KCk7CiB9CiAjZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCkBAIC0zNzM1LDE1ICs0MzA3
LDE1IEBAIFVuaXRUZXN0Ojp+VW5pdFRlc3QoKSB7CiAKIC8vIFB1c2hlcyBhIHRyYWNlIGRlZmlu
ZWQgYnkgU0NPUEVEX1RSQUNFKCkgb24gdG8gdGhlIHBlci10aHJlYWQKIC8vIEdvb2dsZSBUZXN0
IHRyYWNlIHN0YWNrLgotLy8gTCA8IG11dGV4Xwotdm9pZCBVbml0VGVzdDo6UHVzaEdUZXN0VHJh
Y2UoY29uc3QgaW50ZXJuYWw6OlRyYWNlSW5mbyYgdHJhY2UpIHsKK3ZvaWQgVW5pdFRlc3Q6OlB1
c2hHVGVzdFRyYWNlKGNvbnN0IGludGVybmFsOjpUcmFjZUluZm8mIHRyYWNlKQorICAgIEdURVNU
X0xPQ0tfRVhDTFVERURfKG11dGV4XykgewogICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGxvY2soJm11
dGV4Xyk7CiAgIGltcGxfLT5ndGVzdF90cmFjZV9zdGFjaygpLnB1c2hfYmFjayh0cmFjZSk7CiB9
CiAKIC8vIFBvcHMgYSB0cmFjZSBmcm9tIHRoZSBwZXItdGhyZWFkIEdvb2dsZSBUZXN0IHRyYWNl
IHN0YWNrLgotLy8gTCA8IG11dGV4Xwotdm9pZCBVbml0VGVzdDo6UG9wR1Rlc3RUcmFjZSgpIHsK
K3ZvaWQgVW5pdFRlc3Q6OlBvcEdUZXN0VHJhY2UoKQorICAgIEdURVNUX0xPQ0tfRVhDTFVERURf
KG11dGV4XykgewogICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7CiAgIGltcGxf
LT5ndGVzdF90cmFjZV9zdGFjaygpLnBvcF9iYWNrKCk7CiB9CkBAIC0zNzUyLDE3ICs0MzI0LDEw
IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIFVuaXRUZXN0SW1wbDo6VW5pdFRlc3RJbXBsKFVu
aXRUZXN0KiBwYXJlbnQpCiAgICAgOiBwYXJlbnRfKHBhcmVudCksCi0jaWZkZWYgX01TQ19WRVIK
LSNwcmFnbWEgd2FybmluZyhwdXNoKSAgICAgICAgICAgICAgICAgICAgLy8gU2F2ZXMgdGhlIGN1
cnJlbnQgd2FybmluZyBzdGF0ZS4KLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQzNTUpICAgICAg
ICAgICAgLy8gVGVtcG9yYXJpbHkgZGlzYWJsZXMgd2FybmluZyA0MzU1Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh1c2luZyB0aGlzIGluIGluaXRpYWxpemVy
KS4KKyAgICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQzNTUgLyogdXNpbmcg
dGhpcyBpbiBpbml0aWFsaXplciAqLykKICAgICAgIGRlZmF1bHRfZ2xvYmFsX3Rlc3RfcGFydF9y
ZXN1bHRfcmVwb3J0ZXJfKHRoaXMpLAogICAgICAgZGVmYXVsdF9wZXJfdGhyZWFkX3Rlc3RfcGFy
dF9yZXN1bHRfcmVwb3J0ZXJfKHRoaXMpLAotI3ByYWdtYSB3YXJuaW5nKHBvcCkgICAgICAgICAg
ICAgICAgICAgICAvLyBSZXN0b3JlcyB0aGUgd2FybmluZyBzdGF0ZSBhZ2Fpbi4KLSNlbHNlCi0g
ICAgICBkZWZhdWx0X2dsb2JhbF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXyh0aGlzKSwKLSAg
ICAgIGRlZmF1bHRfcGVyX3RocmVhZF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXyh0aGlzKSwK
LSNlbmRpZiAgLy8gX01TQ19WRVIKKyAgICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BP
UF8oKQogICAgICAgZ2xvYmFsX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3Rlcl8oCiAgICAgICAgICAg
JmRlZmF1bHRfZ2xvYmFsX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfKSwKICAgICAgIHBlcl90
aHJlYWRfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8oCkBAIC0zNzc5LDEzICs0MzQ0LDEzIEBA
IFVuaXRUZXN0SW1wbDo6VW5pdFRlc3RJbXBsKFVuaXRUZXN0KiBwYXJlbnQpCiAgICAgICBwb3N0
X2ZsYWdfcGFyc2VfaW5pdF9wZXJmb3JtZWRfKGZhbHNlKSwKICAgICAgIHJhbmRvbV9zZWVkXygw
KSwgIC8vIFdpbGwgYmUgb3ZlcnJpZGRlbiBieSB0aGUgZmxhZyBiZWZvcmUgZmlyc3QgdXNlLgog
ICAgICAgcmFuZG9tXygwKSwgIC8vIFdpbGwgYmUgcmVzZWVkZWQgYmVmb3JlIGZpcnN0IHVzZS4K
LSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorICAgICAgc3RhcnRfdGltZXN0YW1wXygwKSwKICAg
ICAgIGVsYXBzZWRfdGltZV8oMCksCi0gICAgICBpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdF9mbGFn
XyhOVUxMKSwKLSAgICAgIGRlYXRoX3Rlc3RfZmFjdG9yeV8obmV3IERlZmF1bHREZWF0aFRlc3RG
YWN0b3J5KSB7Ci0jZWxzZQotICAgICAgZWxhcHNlZF90aW1lXygwKSB7Ci0jZW5kaWYgIC8vIEdU
RVNUX0hBU19ERUFUSF9URVNUCisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKyAgICAgIGRlYXRo
X3Rlc3RfZmFjdG9yeV8obmV3IERlZmF1bHREZWF0aFRlc3RGYWN0b3J5KSwKKyNlbmRpZgorICAg
ICAgLy8gV2lsbCBiZSBvdmVycmlkZGVuIGJ5IHRoZSBmbGFnIGJlZm9yZSBmaXJzdCB1c2UuCisg
ICAgICBjYXRjaF9leGNlcHRpb25zXyhmYWxzZSkgewogICBsaXN0ZW5lcnMoKS0+U2V0RGVmYXVs
dFJlc3VsdFByaW50ZXIobmV3IFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcik7CiB9CiAKQEAg
LTM3OTksNiArNDM2NCwyOCBAQCBVbml0VGVzdEltcGw6On5Vbml0VGVzdEltcGwoKSB7CiAgIGRl
bGV0ZSBvc19zdGFja190cmFjZV9nZXR0ZXJfOwogfQogCisvLyBBZGRzIGEgVGVzdFByb3BlcnR5
IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0IHdoZW4gaW52b2tlZCBpbiBhCisvLyBj
b250ZXh0IG9mIGEgdGVzdCwgdG8gY3VycmVudCB0ZXN0IGNhc2UncyBhZF9ob2NfdGVzdF9yZXN1
bHQgd2hlbiBpbnZva2UKKy8vIGZyb20gU2V0VXBUZXN0Q2FzZS9UZWFyRG93blRlc3RDYXNlLCBv
ciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNldAorLy8gb3RoZXJ3aXNlLiAgSWYgdGhlIHJlc3Vs
dCBhbHJlYWR5IGNvbnRhaW5zIGEgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBrZXksCisvLyB0aGUg
dmFsdWUgd2lsbCBiZSB1cGRhdGVkLgordm9pZCBVbml0VGVzdEltcGw6OlJlY29yZFByb3BlcnR5
KGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgeworICBzdGQ6OnN0cmluZyB4bWxf
ZWxlbWVudDsKKyAgVGVzdFJlc3VsdCogdGVzdF9yZXN1bHQ7ICAvLyBUZXN0UmVzdWx0IGFwcHJv
cHJpYXRlIGZvciBwcm9wZXJ0eSByZWNvcmRpbmcuCisKKyAgaWYgKGN1cnJlbnRfdGVzdF9pbmZv
XyAhPSBOVUxMKSB7CisgICAgeG1sX2VsZW1lbnQgPSAidGVzdGNhc2UiOworICAgIHRlc3RfcmVz
dWx0ID0gJihjdXJyZW50X3Rlc3RfaW5mb18tPnJlc3VsdF8pOworICB9IGVsc2UgaWYgKGN1cnJl
bnRfdGVzdF9jYXNlXyAhPSBOVUxMKSB7CisgICAgeG1sX2VsZW1lbnQgPSAidGVzdHN1aXRlIjsK
KyAgICB0ZXN0X3Jlc3VsdCA9ICYoY3VycmVudF90ZXN0X2Nhc2VfLT5hZF9ob2NfdGVzdF9yZXN1
bHRfKTsKKyAgfSBlbHNlIHsKKyAgICB4bWxfZWxlbWVudCA9ICJ0ZXN0c3VpdGVzIjsKKyAgICB0
ZXN0X3Jlc3VsdCA9ICZhZF9ob2NfdGVzdF9yZXN1bHRfOworICB9CisgIHRlc3RfcmVzdWx0LT5S
ZWNvcmRQcm9wZXJ0eSh4bWxfZWxlbWVudCwgdGVzdF9wcm9wZXJ0eSk7Cit9CisKICNpZiBHVEVT
VF9IQVNfREVBVEhfVEVTVAogLy8gRGlzYWJsZXMgZXZlbnQgZm9yd2FyZGluZyBpZiB0aGUgY29u
dHJvbCBpcyBjdXJyZW50bHkgaW4gYSBkZWF0aCB0ZXN0CiAvLyBzdWJwcm9jZXNzLiBNdXN0IG5v
dCBiZSBjYWxsZWQgYmVmb3JlIEluaXRHb29nbGVUZXN0LgpAQCAtMzgxMSw3ICs0Mzk4LDcgQEAg
dm9pZCBVbml0VGVzdEltcGw6OlN1cHByZXNzVGVzdEV2ZW50c0lmSW5TdWJwcm9jZXNzKCkgewog
Ly8gSW5pdGlhbGl6ZXMgZXZlbnQgbGlzdGVuZXJzIHBlcmZvcm1pbmcgWE1MIG91dHB1dCBhcyBz
cGVjaWZpZWQgYnkKIC8vIFVuaXRUZXN0T3B0aW9ucy4gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9y
ZSBJbml0R29vZ2xlVGVzdC4KIHZvaWQgVW5pdFRlc3RJbXBsOjpDb25maWd1cmVYbWxPdXRwdXQo
KSB7Ci0gIGNvbnN0IFN0cmluZyYgb3V0cHV0X2Zvcm1hdCA9IFVuaXRUZXN0T3B0aW9uczo6R2V0
T3V0cHV0Rm9ybWF0KCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZm9ybWF0ID0gVW5p
dFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQoKTsKICAgaWYgKG91dHB1dF9mb3JtYXQgPT0g
InhtbCIpIHsKICAgICBsaXN0ZW5lcnMoKS0+U2V0RGVmYXVsdFhtbEdlbmVyYXRvcihuZXcgWG1s
VW5pdFRlc3RSZXN1bHRQcmludGVyKAogICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29s
dXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpKTsKQEAgLTM4MjIsNiArNDQwOSwyNSBAQCB2
b2lkIFVuaXRUZXN0SW1wbDo6Q29uZmlndXJlWG1sT3V0cHV0KCkgewogICB9CiB9CiAKKyNpZiBH
VEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisvLyBJbml0aWFsaXplcyBldmVudCBsaXN0ZW5lcnMg
Zm9yIHN0cmVhbWluZyB0ZXN0IHJlc3VsdHMgaW4gc3RyaW5nIGZvcm0uCisvLyBNdXN0IG5vdCBi
ZSBjYWxsZWQgYmVmb3JlIEluaXRHb29nbGVUZXN0Lgordm9pZCBVbml0VGVzdEltcGw6OkNvbmZp
Z3VyZVN0cmVhbWluZ091dHB1dCgpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIHRhcmdldCA9IEdU
RVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90byk7CisgIGlmICghdGFyZ2V0LmVtcHR5KCkpIHsKKyAg
ICBjb25zdCBzaXplX3QgcG9zID0gdGFyZ2V0LmZpbmQoJzonKTsKKyAgICBpZiAocG9zICE9IHN0
ZDo6c3RyaW5nOjpucG9zKSB7CisgICAgICBsaXN0ZW5lcnMoKS0+QXBwZW5kKG5ldyBTdHJlYW1p
bmdMaXN0ZW5lcih0YXJnZXQuc3Vic3RyKDAsIHBvcyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3Vic3RyKHBvcysxKSkpOworICAgIH0g
ZWxzZSB7CisgICAgICBwcmludGYoIldBUk5JTkc6IHVucmVjb2duaXplZCBzdHJlYW1pbmcgdGFy
Z2V0IFwiJXNcIiBpZ25vcmVkLlxuIiwKKyAgICAgICAgICAgICB0YXJnZXQuY19zdHIoKSk7Cisg
ICAgICBmZmx1c2goc3Rkb3V0KTsKKyAgICB9CisgIH0KK30KKyNlbmRpZiAgLy8gR1RFU1RfQ0FO
X1NUUkVBTV9SRVNVTFRTXworCiAvLyBQZXJmb3JtcyBpbml0aWFsaXphdGlvbiBkZXBlbmRlbnQg
dXBvbiBmbGFnIHZhbHVlcyBvYnRhaW5lZCBpbgogLy8gUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5
LiAgSXMgY2FsbGVkIGZyb20gSW5pdEdvb2dsZVRlc3QgYWZ0ZXIgdGhlIGNhbGwgdG8KIC8vIFBh
cnNlR29vZ2xlVGVzdEZsYWdzT25seS4gIEluIGNhc2UgYSB1c2VyIG5lZ2xlY3RzIHRvIGNhbGwg
SW5pdEdvb2dsZVRlc3QKQEAgLTM4MzIsNiArNDQzOCwxMSBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6
UG9zdEZsYWdQYXJzaW5nSW5pdCgpIHsKICAgaWYgKCFwb3N0X2ZsYWdfcGFyc2VfaW5pdF9wZXJm
b3JtZWRfKSB7CiAgICAgcG9zdF9mbGFnX3BhcnNlX2luaXRfcGVyZm9ybWVkXyA9IHRydWU7CiAK
KyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9URVNUX0VWRU5UX0xJU1RFTkVSXykKKyAgICAvLyBS
ZWdpc3RlciB0byBzZW5kIG5vdGlmaWNhdGlvbnMgYWJvdXQga2V5IHByb2Nlc3Mgc3RhdGUgY2hh
bmdlcy4KKyAgICBsaXN0ZW5lcnMoKS0+QXBwZW5kKG5ldyBHVEVTVF9DVVNUT01fVEVTVF9FVkVO
VF9MSVNURU5FUl8oKSk7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfQ1VTVE9NX1RFU1RfRVZF
TlRfTElTVEVORVJfKQorCiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKICAgICBJbml0RGVhdGhU
ZXN0U3VicHJvY2Vzc0NvbnRyb2xJbmZvKCk7CiAgICAgU3VwcHJlc3NUZXN0RXZlbnRzSWZJblN1
YnByb2Nlc3MoKTsKQEAgLTM4NDUsNiArNDQ1NiwxMSBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6UG9z
dEZsYWdQYXJzaW5nSW5pdCgpIHsKICAgICAvLyBDb25maWd1cmVzIGxpc3RlbmVycyBmb3IgWE1M
IG91dHB1dC4gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgdXNlcnMKICAgICAvLyB0byBzaHV0
IGRvd24gdGhlIGRlZmF1bHQgWE1MIG91dHB1dCBiZWZvcmUgaW52b2tpbmcgUlVOX0FMTF9URVNU
Uy4KICAgICBDb25maWd1cmVYbWxPdXRwdXQoKTsKKworI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVT
VUxUU18KKyAgICAvLyBDb25maWd1cmVzIGxpc3RlbmVycyBmb3Igc3RyZWFtaW5nIHRlc3QgcmVz
dWx0cyB0byB0aGUgc3BlY2lmaWVkIHNlcnZlci4KKyAgICBDb25maWd1cmVTdHJlYW1pbmdPdXRw
dXQoKTsKKyNlbmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXwogICB9CiB9CiAKQEAg
LTM4NTksNyArNDQ3NSw3IEBAIHZvaWQgVW5pdFRlc3RJbXBsOjpQb3N0RmxhZ1BhcnNpbmdJbml0
KCkgewogY2xhc3MgVGVzdENhc2VOYW1lSXMgewogIHB1YmxpYzoKICAgLy8gQ29uc3RydWN0b3Iu
Ci0gIGV4cGxpY2l0IFRlc3RDYXNlTmFtZUlzKGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgZXhwbGlj
aXQgVGVzdENhc2VOYW1lSXMoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpCiAgICAgICA6IG5hbWVf
KG5hbWUpIHt9CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgbmFtZSBvZiB0ZXN0X2Nhc2Ug
bWF0Y2hlcyBuYW1lXy4KQEAgLTM4NjgsNyArNDQ4NCw3IEBAIGNsYXNzIFRlc3RDYXNlTmFtZUlz
IHsKICAgfQogCiAgcHJpdmF0ZToKLSAgU3RyaW5nIG5hbWVfOworICBzdGQ6OnN0cmluZyBuYW1l
XzsKIH07CiAKIC8vIEZpbmRzIGFuZCByZXR1cm5zIGEgVGVzdENhc2Ugd2l0aCB0aGUgZ2l2ZW4g
bmFtZS4gIElmIG9uZSBkb2Vzbid0CkBAIC0zODc5LDEwICs0NDk1LDEyIEBAIGNsYXNzIFRlc3RD
YXNlTmFtZUlzIHsKIC8vIEFyZ3VtZW50czoKIC8vCiAvLyAgIHRlc3RfY2FzZV9uYW1lOiBuYW1l
IG9mIHRoZSB0ZXN0IGNhc2UKKy8vICAgdHlwZV9wYXJhbTogICAgIHRoZSBuYW1lIG9mIHRoZSB0
ZXN0IGNhc2UncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorLy8gICAgICAgICAgICAgICAg
ICAgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2Uu
CiAvLyAgIHNldF91cF90YzogICAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHNldHMg
dXAgdGhlIHRlc3QgY2FzZQogLy8gICB0ZWFyX2Rvd25fdGM6ICAgcG9pbnRlciB0byB0aGUgZnVu
Y3Rpb24gdGhhdCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UKIFRlc3RDYXNlKiBVbml0VGVzdElt
cGw6OkdldFRlc3RDYXNlKGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogY29tbWVudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0OjpTZXRVcFRlc3RDYXNlRnVuYyBzZXRf
dXBfdGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0OjpUZWFyRG93
blRlc3RDYXNlRnVuYyB0ZWFyX2Rvd25fdGMpIHsKICAgLy8gQ2FuIHdlIGZpbmQgYSBUZXN0Q2Fz
ZSB3aXRoIHRoZSBnaXZlbiBuYW1lPwpAQCAtMzg5NSwxMCArNDUxMywxMCBAQCBUZXN0Q2FzZSog
VW5pdFRlc3RJbXBsOjpHZXRUZXN0Q2FzZShjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKIAog
ICAvLyBOby4gIExldCdzIGNyZWF0ZSBvbmUuCiAgIFRlc3RDYXNlKiBjb25zdCBuZXdfdGVzdF9j
YXNlID0KLSAgICAgIG5ldyBUZXN0Q2FzZSh0ZXN0X2Nhc2VfbmFtZSwgY29tbWVudCwgc2V0X3Vw
X3RjLCB0ZWFyX2Rvd25fdGMpOworICAgICAgbmV3IFRlc3RDYXNlKHRlc3RfY2FzZV9uYW1lLCB0
eXBlX3BhcmFtLCBzZXRfdXBfdGMsIHRlYXJfZG93bl90Yyk7CiAKICAgLy8gSXMgdGhpcyBhIGRl
YXRoIHRlc3QgY2FzZT8KLSAgaWYgKGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6Ok1hdGNoZXNG
aWx0ZXIoU3RyaW5nKHRlc3RfY2FzZV9uYW1lKSwKKyAgaWYgKGludGVybmFsOjpVbml0VGVzdE9w
dGlvbnM6Ok1hdGNoZXNGaWx0ZXIodGVzdF9jYXNlX25hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtEZWF0aFRlc3RDYXNlRmlsdGVyKSkgewogICAg
IC8vIFllcy4gIEluc2VydHMgdGhlIHRlc3QgY2FzZSBhZnRlciB0aGUgbGFzdCBkZWF0aCB0ZXN0
IGNhc2UKICAgICAvLyBkZWZpbmVkIHNvIGZhci4gIFRoaXMgb25seSB3b3JrcyB3aGVuIHRoZSB0
ZXN0IGNhc2VzIGhhdmVuJ3QKQEAgLTM5MjIsMjcgKzQ1NDAsMjYgQEAgc3RhdGljIHZvaWQgU2V0
VXBFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KSB7IGVudi0+U2V0VXAoKTsgfQogc3RhdGlj
IHZvaWQgVGVhckRvd25FbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KSB7IGVudi0+VGVhckRv
d24oKTsgfQogCiAvLyBSdW5zIGFsbCB0ZXN0cyBpbiB0aGlzIFVuaXRUZXN0IG9iamVjdCwgcHJp
bnRzIHRoZSByZXN1bHQsIGFuZAotLy8gcmV0dXJucyAwIGlmIGFsbCB0ZXN0cyBhcmUgc3VjY2Vz
c2Z1bCwgb3IgMSBvdGhlcndpc2UuICBJZiBhbnkKLS8vIGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVy
aW5nIGEgdGVzdCBvbiBXaW5kb3dzLCB0aGlzIHRlc3QgaXMKLS8vIGNvbnNpZGVyZWQgdG8gYmUg
ZmFpbGVkLCBidXQgdGhlIHJlc3Qgb2YgdGhlIHRlc3RzIHdpbGwgc3RpbGwgYmUKLS8vIHJ1bi4g
IChXZSBkaXNhYmxlIGV4Y2VwdGlvbnMgb24gTGludXggYW5kIE1hYyBPUyBYLCBzbyB0aGUgaXNz
dWUKLS8vIGRvZXNuJ3QgYXBwbHkgdGhlcmUuKQorLy8gcmV0dXJucyB0cnVlIGlmIGFsbCB0ZXN0
cyBhcmUgc3VjY2Vzc2Z1bC4gIElmIGFueSBleGNlcHRpb24gaXMKKy8vIHRocm93biBkdXJpbmcg
YSB0ZXN0LCB0aGUgdGVzdCBpcyBjb25zaWRlcmVkIHRvIGJlIGZhaWxlZCwgYnV0IHRoZQorLy8g
cmVzdCBvZiB0aGUgdGVzdHMgd2lsbCBzdGlsbCBiZSBydW4uCisvLwogLy8gV2hlbiBwYXJhbWV0
ZXJpemVkIHRlc3RzIGFyZSBlbmFibGVkLCBpdCBleHBhbmRzIGFuZCByZWdpc3RlcnMKIC8vIHBh
cmFtZXRlcml6ZWQgdGVzdHMgZmlyc3QgaW4gUmVnaXN0ZXJQYXJhbWV0ZXJpemVkVGVzdHMoKS4K
IC8vIEFsbCBvdGhlciBmdW5jdGlvbnMgY2FsbGVkIGZyb20gUnVuQWxsVGVzdHMoKSBtYXkgc2Fm
ZWx5IGFzc3VtZSB0aGF0CiAvLyBwYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSByZWFkeSB0byBiZSBj
b3VudGVkIGFuZCBydW4uCi1pbnQgVW5pdFRlc3RJbXBsOjpSdW5BbGxUZXN0cygpIHsKK2Jvb2wg
VW5pdFRlc3RJbXBsOjpSdW5BbGxUZXN0cygpIHsKICAgLy8gTWFrZXMgc3VyZSBJbml0R29vZ2xl
VGVzdCgpIHdhcyBjYWxsZWQuCiAgIGlmICghR1Rlc3RJc0luaXRpYWxpemVkKCkpIHsKICAgICBw
cmludGYoIiVzIiwKICAgICAgICAgICAgIlxuVGhpcyB0ZXN0IHByb2dyYW0gZGlkIE5PVCBjYWxs
IDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QgIgogICAgICAgICAgICAiYmVmb3JlIGNhbGxpbmcg
UlVOX0FMTF9URVNUUygpLiAgUGxlYXNlIGZpeCBpdC5cbiIpOwotICAgIHJldHVybiAxOworICAg
IHJldHVybiBmYWxzZTsKICAgfQogCiAgIC8vIERvIG5vdCBydW4gYW55IHRlc3QgaWYgdGhlIC0t
aGVscCBmbGFnIHdhcyBzcGVjaWZpZWQuCiAgIGlmIChnX2hlbHBfZmxhZykKLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gdHJ1ZTsKIAogICAvLyBSZXBlYXRzIHRoZSBjYWxsIHRvIHRoZSBwb3N0
LWZsYWcgcGFyc2luZyBpbml0aWFsaXphdGlvbiBpbiBjYXNlIHRoZQogICAvLyB1c2VyIGRpZG4n
dCBjYWxsIEluaXRHb29nbGVUZXN0LgpAQCAtMzk1OSw2ICs0NTc2LDExIEBAIGludCBVbml0VGVz
dEltcGw6OlJ1bkFsbFRlc3RzKCkgewogCiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKICAgaW5f
c3VicHJvY2Vzc19mb3JfZGVhdGhfdGVzdCA9IChpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdF9mbGFn
Xy5nZXQoKSAhPSBOVUxMKTsKKyMgaWYgZGVmaW5lZChHVEVTVF9FWFRSQV9ERUFUSF9URVNUX0NI
SUxEX1NFVFVQXykKKyAgaWYgKGluX3N1YnByb2Nlc3NfZm9yX2RlYXRoX3Rlc3QpIHsKKyAgICBH
VEVTVF9FWFRSQV9ERUFUSF9URVNUX0NISUxEX1NFVFVQXygpOworICB9CisjIGVuZGlmICAvLyBk
ZWZpbmVkKEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ0hJTERfU0VUVVBfKQogI2VuZGlmICAvLyBH
VEVTVF9IQVNfREVBVEhfVEVTVAogCiAgIGNvbnN0IGJvb2wgc2hvdWxkX3NoYXJkID0gU2hvdWxk
U2hhcmQoa1Rlc3RUb3RhbFNoYXJkcywga1Rlc3RTaGFyZEluZGV4LApAQCAtMzk3NCw3ICs0NTk2
LDcgQEAgaW50IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7CiAgIGlmIChHVEVTVF9GTEFH
KGxpc3RfdGVzdHMpKSB7CiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCAqYWZ0ZXIqIEZpbHRl
clRlc3RzKCkgaGFzIGJlZW4gY2FsbGVkLgogICAgIExpc3RUZXN0c01hdGNoaW5nRmlsdGVyKCk7
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHRydWU7CiAgIH0KIAogICByYW5kb21fc2VlZF8g
PSBHVEVTVF9GTEFHKHNodWZmbGUpID8KQEAgLTM5ODUsNiArNDYwNyw3IEBAIGludCBVbml0VGVz
dEltcGw6OlJ1bkFsbFRlc3RzKCkgewogCiAgIFRlc3RFdmVudExpc3RlbmVyKiByZXBlYXRlciA9
IGxpc3RlbmVycygpLT5yZXBlYXRlcigpOwogCisgIHN0YXJ0X3RpbWVzdGFtcF8gPSBHZXRUaW1l
SW5NaWxsaXMoKTsKICAgcmVwZWF0ZXItPk9uVGVzdFByb2dyYW1TdGFydCgqcGFyZW50Xyk7CiAK
ICAgLy8gSG93IG1hbnkgdGltZXMgdG8gcmVwZWF0IHRoZSB0ZXN0cz8gIFdlIGRvbid0IHdhbnQg
dG8gcmVwZWF0IHRoZW0KQEAgLTM5OTMsNyArNDYxNiw5IEBAIGludCBVbml0VGVzdEltcGw6OlJ1
bkFsbFRlc3RzKCkgewogICAvLyBSZXBlYXRzIGZvcmV2ZXIgaWYgdGhlIHJlcGVhdCBjb3VudCBp
cyBuZWdhdGl2ZS4KICAgY29uc3QgYm9vbCBmb3JldmVyID0gcmVwZWF0IDwgMDsKICAgZm9yIChp
bnQgaSA9IDA7IGZvcmV2ZXIgfHwgaSAhPSByZXBlYXQ7IGkrKykgewotICAgIENsZWFyUmVzdWx0
KCk7CisgICAgLy8gV2Ugd2FudCB0byBwcmVzZXJ2ZSBmYWlsdXJlcyBnZW5lcmF0ZWQgYnkgYWQt
aG9jIHRlc3QKKyAgICAvLyBhc3NlcnRpb25zIGV4ZWN1dGVkIGJlZm9yZSBSVU5fQUxMX1RFU1RT
KCkuCisgICAgQ2xlYXJOb25BZEhvY1Rlc3RSZXN1bHQoKTsKIAogICAgIGNvbnN0IFRpbWVJbk1p
bGxpcyBzdGFydCA9IEdldFRpbWVJbk1pbGxpcygpOwogCkBAIC00MDU4LDggKzQ2ODMsNyBAQCBp
bnQgVW5pdFRlc3RJbXBsOjpSdW5BbGxUZXN0cygpIHsKIAogICByZXBlYXRlci0+T25UZXN0UHJv
Z3JhbUVuZCgqcGFyZW50Xyk7CiAKLSAgLy8gUmV0dXJucyAwIGlmIGFsbCB0ZXN0cyBwYXNzZWQs
IG9yIDEgb3RoZXIgd2lzZS4KLSAgcmV0dXJuIGZhaWxlZCA/IDEgOiAwOworICByZXR1cm4gIWZh
aWxlZDsKIH0KIAogLy8gUmVhZHMgdGhlIEdURVNUX1NIQVJEX1NUQVRVU19GSUxFIGVudmlyb25t
ZW50IHZhcmlhYmxlLCBhbmQgY3JlYXRlcyB0aGUgZmlsZQpAQCAtNDEzMyw3ICs0NzU3LDcgQEAg
Ym9vbCBTaG91bGRTaGFyZChjb25zdCBjaGFyKiB0b3RhbF9zaGFyZHNfZW52LAogLy8gUGFyc2Vz
IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB2YXIgYXMgYW4gSW50MzIuIElmIGl0IGlzIHVuc2V0
LAogLy8gcmV0dXJucyBkZWZhdWx0X3ZhbC4gSWYgaXQgaXMgbm90IGFuIEludDMyLCBwcmludHMg
YW4gZXJyb3IKIC8vIGFuZCBhYm9ydHMuCi1JbnQzMiBJbnQzMkZyb21FbnZPckRpZShjb25zdCBj
aGFyKiBjb25zdCB2YXIsIEludDMyIGRlZmF1bHRfdmFsKSB7CitJbnQzMiBJbnQzMkZyb21FbnZP
ckRpZShjb25zdCBjaGFyKiB2YXIsIEludDMyIGRlZmF1bHRfdmFsKSB7CiAgIGNvbnN0IGNoYXIq
IHN0cl92YWwgPSBwb3NpeDo6R2V0RW52KHZhcik7CiAgIGlmIChzdHJfdmFsID09IE5VTEwpIHsK
ICAgICByZXR1cm4gZGVmYXVsdF92YWw7CkBAIC00MTc2LDEyICs0ODAwLDEyIEBAIGludCBVbml0
VGVzdEltcGw6OkZpbHRlclRlc3RzKFJlYWN0aW9uVG9TaGFyZGluZyBzaGFyZF90ZXN0cykgewog
ICBpbnQgbnVtX3NlbGVjdGVkX3Rlc3RzID0gMDsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0
ZXN0X2Nhc2VzXy5zaXplKCk7IGkrKykgewogICAgIFRlc3RDYXNlKiBjb25zdCB0ZXN0X2Nhc2Ug
PSB0ZXN0X2Nhc2VzX1tpXTsKLSAgICBjb25zdCBTdHJpbmcgJnRlc3RfY2FzZV9uYW1lID0gdGVz
dF9jYXNlLT5uYW1lKCk7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnRlc3RfY2FzZV9uYW1lID0g
dGVzdF9jYXNlLT5uYW1lKCk7CiAgICAgdGVzdF9jYXNlLT5zZXRfc2hvdWxkX3J1bihmYWxzZSk7
CiAKICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHRlc3RfY2FzZS0+dGVzdF9pbmZvX2xpc3Qo
KS5zaXplKCk7IGorKykgewogICAgICAgVGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9IHRlc3Rf
Y2FzZS0+dGVzdF9pbmZvX2xpc3QoKVtqXTsKLSAgICAgIGNvbnN0IFN0cmluZyB0ZXN0X25hbWUo
dGVzdF9pbmZvLT5uYW1lKCkpOworICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdF9uYW1lKHRl
c3RfaW5mby0+bmFtZSgpKTsKICAgICAgIC8vIEEgdGVzdCBpcyBkaXNhYmxlZCBpZiB0ZXN0IGNh
c2UgbmFtZSBvciB0ZXN0IG5hbWUgbWF0Y2hlcwogICAgICAgLy8ga0Rpc2FibGVUZXN0RmlsdGVy
LgogICAgICAgY29uc3QgYm9vbCBpc19kaXNhYmxlZCA9CkBAIC00MTg5LDEyICs0ODEzLDEyIEBA
IGludCBVbml0VGVzdEltcGw6OkZpbHRlclRlc3RzKFJlYWN0aW9uVG9TaGFyZGluZyBzaGFyZF90
ZXN0cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAga0Rpc2FibGVUZXN0RmlsdGVyKSB8fAogICAgICAgICAgIGludGVybmFsOjpVbml0VGVzdE9w
dGlvbnM6Ok1hdGNoZXNGaWx0ZXIodGVzdF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAga0Rpc2FibGVUZXN0RmlsdGVyKTsKLSAgICAgIHRl
c3RfaW5mby0+aW1wbCgpLT5zZXRfaXNfZGlzYWJsZWQoaXNfZGlzYWJsZWQpOworICAgICAgdGVz
dF9pbmZvLT5pc19kaXNhYmxlZF8gPSBpc19kaXNhYmxlZDsKIAogICAgICAgY29uc3QgYm9vbCBt
YXRjaGVzX2ZpbHRlciA9CiAgICAgICAgICAgaW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6Rmls
dGVyTWF0Y2hlc1Rlc3QodGVzdF9jYXNlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9uYW1lKTsKLSAgICAgIHRlc3RfaW5m
by0+aW1wbCgpLT5zZXRfbWF0Y2hlc19maWx0ZXIobWF0Y2hlc19maWx0ZXIpOworICAgICAgdGVz
dF9pbmZvLT5tYXRjaGVzX2ZpbHRlcl8gPSBtYXRjaGVzX2ZpbHRlcjsKIAogICAgICAgY29uc3Qg
Ym9vbCBpc19ydW5uYWJsZSA9CiAgICAgICAgICAgKEdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJs
ZWRfdGVzdHMpIHx8ICFpc19kaXNhYmxlZCkgJiYKQEAgLTQyMDgsMTUgKzQ4MzIsNDAgQEAgaW50
IFVuaXRUZXN0SW1wbDo6RmlsdGVyVGVzdHMoUmVhY3Rpb25Ub1NoYXJkaW5nIHNoYXJkX3Rlc3Rz
KSB7CiAgICAgICBudW1fcnVubmFibGVfdGVzdHMgKz0gaXNfcnVubmFibGU7CiAgICAgICBudW1f
c2VsZWN0ZWRfdGVzdHMgKz0gaXNfc2VsZWN0ZWQ7CiAKLSAgICAgIHRlc3RfaW5mby0+aW1wbCgp
LT5zZXRfc2hvdWxkX3J1bihpc19zZWxlY3RlZCk7CisgICAgICB0ZXN0X2luZm8tPnNob3VsZF9y
dW5fID0gaXNfc2VsZWN0ZWQ7CiAgICAgICB0ZXN0X2Nhc2UtPnNldF9zaG91bGRfcnVuKHRlc3Rf
Y2FzZS0+c2hvdWxkX3J1bigpIHx8IGlzX3NlbGVjdGVkKTsKICAgICB9CiAgIH0KICAgcmV0dXJu
IG51bV9zZWxlY3RlZF90ZXN0czsKIH0KIAorLy8gUHJpbnRzIHRoZSBnaXZlbiBDLXN0cmluZyBv
biBhIHNpbmdsZSBsaW5lIGJ5IHJlcGxhY2luZyBhbGwgJ1xuJworLy8gY2hhcmFjdGVycyB3aXRo
IHN0cmluZyAiXFxuIi4gIElmIHRoZSBvdXRwdXQgdGFrZXMgbW9yZSB0aGFuCisvLyBtYXhfbGVu
Z3RoIGNoYXJhY3RlcnMsIG9ubHkgcHJpbnRzIHRoZSBmaXJzdCBtYXhfbGVuZ3RoIGNoYXJhY3Rl
cnMKKy8vIGFuZCAiLi4uIi4KK3N0YXRpYyB2b2lkIFByaW50T25PbmVMaW5lKGNvbnN0IGNoYXIq
IHN0ciwgaW50IG1heF9sZW5ndGgpIHsKKyAgaWYgKHN0ciAhPSBOVUxMKSB7CisgICAgZm9yIChp
bnQgaSA9IDA7ICpzdHIgIT0gJ1wwJzsgKytzdHIpIHsKKyAgICAgIGlmIChpID49IG1heF9sZW5n
dGgpIHsKKyAgICAgICAgcHJpbnRmKCIuLi4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9Cisg
ICAgICBpZiAoKnN0ciA9PSAnXG4nKSB7CisgICAgICAgIHByaW50ZigiXFxuIik7CisgICAgICAg
IGkgKz0gMjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHByaW50ZigiJWMiLCAqc3RyKTsKKyAg
ICAgICAgKytpOworICAgICAgfQorICAgIH0KKyAgfQorfQorCiAvLyBQcmludHMgdGhlIG5hbWVz
IG9mIHRoZSB0ZXN0cyBtYXRjaGluZyB0aGUgdXNlci1zcGVjaWZpZWQgZmlsdGVyIGZsYWcuCiB2
b2lkIFVuaXRUZXN0SW1wbDo6TGlzdFRlc3RzTWF0Y2hpbmdGaWx0ZXIoKSB7CisgIC8vIFByaW50
IGF0IG1vc3QgdGhpcyBtYW55IGNoYXJhY3RlcnMgZm9yIGVhY2ggdHlwZS92YWx1ZSBwYXJhbWV0
ZXIuCisgIGNvbnN0IGludCBrTWF4UGFyYW1MZW5ndGggPSAyNTA7CisKICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB0ZXN0X2Nhc2VzXy5zaXplKCk7IGkrKykgewogICAgIGNvbnN0IFRlc3RDYXNl
KiBjb25zdCB0ZXN0X2Nhc2UgPSB0ZXN0X2Nhc2VzX1tpXTsKICAgICBib29sIHByaW50ZWRfdGVz
dF9jYXNlX25hbWUgPSBmYWxzZTsKQEAgLTQyMjQsMTIgKzQ4NzMsMjYgQEAgdm9pZCBVbml0VGVz
dEltcGw6Okxpc3RUZXN0c01hdGNoaW5nRmlsdGVyKCkgewogICAgIGZvciAoc2l6ZV90IGogPSAw
OyBqIDwgdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpLnNpemUoKTsgaisrKSB7CiAgICAgICBj
b25zdCBUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KICAgICAgICAgICB0ZXN0X2Nhc2UtPnRl
c3RfaW5mb19saXN0KClbal07Ci0gICAgICBpZiAodGVzdF9pbmZvLT5tYXRjaGVzX2ZpbHRlcigp
KSB7CisgICAgICBpZiAodGVzdF9pbmZvLT5tYXRjaGVzX2ZpbHRlcl8pIHsKICAgICAgICAgaWYg
KCFwcmludGVkX3Rlc3RfY2FzZV9uYW1lKSB7CiAgICAgICAgICAgcHJpbnRlZF90ZXN0X2Nhc2Vf
bmFtZSA9IHRydWU7Ci0gICAgICAgICAgcHJpbnRmKCIlcy5cbiIsIHRlc3RfY2FzZS0+bmFtZSgp
KTsKKyAgICAgICAgICBwcmludGYoIiVzLiIsIHRlc3RfY2FzZS0+bmFtZSgpKTsKKyAgICAgICAg
ICBpZiAodGVzdF9jYXNlLT50eXBlX3BhcmFtKCkgIT0gTlVMTCkgeworICAgICAgICAgICAgcHJp
bnRmKCIgICMgJXMgPSAiLCBrVHlwZVBhcmFtTGFiZWwpOworICAgICAgICAgICAgLy8gV2UgcHJp
bnQgdGhlIHR5cGUgcGFyYW1ldGVyIG9uIGEgc2luZ2xlIGxpbmUgdG8gbWFrZQorICAgICAgICAg
ICAgLy8gdGhlIG91dHB1dCBlYXN5IHRvIHBhcnNlIGJ5IGEgcHJvZ3JhbS4KKyAgICAgICAgICAg
IFByaW50T25PbmVMaW5lKHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgpLCBrTWF4UGFyYW1MZW5ndGgp
OworICAgICAgICAgIH0KKyAgICAgICAgICBwcmludGYoIlxuIik7CiAgICAgICAgIH0KLSAgICAg
ICAgcHJpbnRmKCIgICVzXG4iLCB0ZXN0X2luZm8tPm5hbWUoKSk7CisgICAgICAgIHByaW50Zigi
ICAlcyIsIHRlc3RfaW5mby0+bmFtZSgpKTsKKyAgICAgICAgaWYgKHRlc3RfaW5mby0+dmFsdWVf
cGFyYW0oKSAhPSBOVUxMKSB7CisgICAgICAgICAgcHJpbnRmKCIgICMgJXMgPSAiLCBrVmFsdWVQ
YXJhbUxhYmVsKTsKKyAgICAgICAgICAvLyBXZSBwcmludCB0aGUgdmFsdWUgcGFyYW1ldGVyIG9u
IGEgc2luZ2xlIGxpbmUgdG8gbWFrZSB0aGUKKyAgICAgICAgICAvLyBvdXRwdXQgZWFzeSB0byBw
YXJzZSBieSBhIHByb2dyYW0uCisgICAgICAgICAgUHJpbnRPbk9uZUxpbmUodGVzdF9pbmZvLT52
YWx1ZV9wYXJhbSgpLCBrTWF4UGFyYW1MZW5ndGgpOworICAgICAgICB9CisgICAgICAgIHByaW50
ZigiXG4iKTsKICAgICAgIH0KICAgICB9CiAgIH0KQEAgLTQyNTQsNyArNDkxNywxMSBAQCB2b2lk
IFVuaXRUZXN0SW1wbDo6c2V0X29zX3N0YWNrX3RyYWNlX2dldHRlcigKIC8vIGdldHRlciwgYW5k
IHJldHVybnMgaXQuCiBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UqIFVuaXRUZXN0SW1wbDo6
b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCkgewogICBpZiAob3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXyA9
PSBOVUxMKSB7CisjaWZkZWYgR1RFU1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVSXworICAgIG9zX3N0
YWNrX3RyYWNlX2dldHRlcl8gPSBuZXcgR1RFU1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVSXzsKKyNl
bHNlCiAgICAgb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXyA9IG5ldyBPc1N0YWNrVHJhY2VHZXR0ZXI7
CisjZW5kaWYgIC8vIEdURVNUX09TX1NUQUNLX1RSQUNFX0dFVFRFUl8KICAgfQogCiAgIHJldHVy
biBvc19zdGFja190cmFjZV9nZXR0ZXJfOwpAQCAtNDI2NCw3ICs0OTMxLDcgQEAgT3NTdGFja1Ry
YWNlR2V0dGVySW50ZXJmYWNlKiBVbml0VGVzdEltcGw6Om9zX3N0YWNrX3RyYWNlX2dldHRlcigp
IHsKIC8vIHRoZSBUZXN0UmVzdWx0IGZvciB0aGUgYWQgaG9jIHRlc3QgaWYgbm8gdGVzdCBpcyBy
dW5uaW5nLgogVGVzdFJlc3VsdCogVW5pdFRlc3RJbXBsOjpjdXJyZW50X3Rlc3RfcmVzdWx0KCkg
ewogICByZXR1cm4gY3VycmVudF90ZXN0X2luZm9fID8KLSAgICBjdXJyZW50X3Rlc3RfaW5mb18t
PmltcGwoKS0+cmVzdWx0KCkgOiAmYWRfaG9jX3Rlc3RfcmVzdWx0XzsKKyAgICAgICYoY3VycmVu
dF90ZXN0X2luZm9fLT5yZXN1bHRfKSA6ICZhZF9ob2NfdGVzdF9yZXN1bHRfOwogfQogCiAvLyBT
aHVmZmxlcyBhbGwgdGVzdCBjYXNlcywgYW5kIHRoZSB0ZXN0cyB3aXRoaW4gZWFjaCB0ZXN0IGNh
c2UsCkBAIC00MjkzLDMzICs0OTYwLDcgQEAgdm9pZCBVbml0VGVzdEltcGw6OlVuc2h1ZmZsZVRl
c3RzKCkgewogICB9CiB9CiAKLS8vIFRlc3RJbmZvSW1wbCBjb25zdHJ1Y3Rvci4gVGhlIG5ldyBp
bnN0YW5jZSBhc3N1bWVzIG93bmVyc2hpcCBvZiB0aGUgdGVzdAotLy8gZmFjdG9yeSBvYmplY3Qu
Ci1UZXN0SW5mb0ltcGw6OlRlc3RJbmZvSW1wbChUZXN0SW5mbyogcGFyZW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV90ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGFfdGVzdF9jYXNlX2NvbW1lbnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX2NvbW1lbnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBUeXBlSWQgYV9maXh0dXJlX2NsYXNzX2lkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSkgOgotICAgIHBhcmVudF8o
cGFyZW50KSwKLSAgICB0ZXN0X2Nhc2VfbmFtZV8oU3RyaW5nKGFfdGVzdF9jYXNlX25hbWUpKSwK
LSAgICBuYW1lXyhTdHJpbmcoYV9uYW1lKSksCi0gICAgdGVzdF9jYXNlX2NvbW1lbnRfKFN0cmlu
ZyhhX3Rlc3RfY2FzZV9jb21tZW50KSksCi0gICAgY29tbWVudF8oU3RyaW5nKGFfY29tbWVudCkp
LAotICAgIGZpeHR1cmVfY2xhc3NfaWRfKGFfZml4dHVyZV9jbGFzc19pZCksCi0gICAgc2hvdWxk
X3J1bl8oZmFsc2UpLAotICAgIGlzX2Rpc2FibGVkXyhmYWxzZSksCi0gICAgbWF0Y2hlc19maWx0
ZXJfKGZhbHNlKSwKLSAgICBmYWN0b3J5XyhmYWN0b3J5KSB7Ci19Ci0KLS8vIFRlc3RJbmZvSW1w
bCBkZXN0cnVjdG9yLgotVGVzdEluZm9JbXBsOjp+VGVzdEluZm9JbXBsKCkgewotICBkZWxldGUg
ZmFjdG9yeV87Ci19Ci0KLS8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMg
YSBTdHJpbmcuCisvLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFzIGFuIHN0
ZDo6c3RyaW5nLgogLy8KIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMgdG8g
YmUgaW5jbHVkZWQgaXMgc3BlY2lmaWVkIGJ5CiAvLyB0aGUgZ3Rlc3Rfc3RhY2tfdHJhY2VfZGVw
dGggZmxhZy4gIFRoZSBza2lwX2NvdW50IHBhcmFtZXRlcgpAQCAtNDMyOSwxNSArNDk3MCwxNSBA
QCBUZXN0SW5mb0ltcGw6On5UZXN0SW5mb0ltcGwoKSB7CiAvLyBGb3IgZXhhbXBsZSwgaWYgRm9v
KCkgY2FsbHMgQmFyKCksIHdoaWNoIGluIHR1cm4gY2FsbHMKIC8vIEdldEN1cnJlbnRPc1N0YWNr
VHJhY2VFeGNlcHRUb3AoLi4uLCAxKSwgRm9vKCkgd2lsbCBiZSBpbmNsdWRlZCBpbgogLy8gdGhl
IHRyYWNlIGJ1dCBCYXIoKSBhbmQgR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgpIHdv
bid0LgotU3RyaW5nIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoVW5pdFRlc3QqIC8q
dW5pdF90ZXN0Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
c2tpcF9jb3VudCkgeworc3RkOjpzdHJpbmcgR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRv
cChVbml0VGVzdCogLyp1bml0X3Rlc3QqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHNraXBfY291bnQpIHsKICAgLy8gV2UgcGFzcyBza2lwX2NvdW50
ICsgMSB0byBza2lwIHRoaXMgd3JhcHBlciBmdW5jdGlvbiBpbiBhZGRpdGlvbgogICAvLyB0byB3
aGF0IHRoZSB1c2VyIHJlYWxseSB3YW50cyB0byBza2lwLgogICByZXR1cm4gR2V0VW5pdFRlc3RJ
bXBsKCktPkN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3Aoc2tpcF9jb3VudCArIDEpOwogfQog
Ci0vLyBVc2VkIGJ5IHRoZSBHVEVTVF9ISURFX1VOUkVBQ0hBQkxFX0NPREVfIG1hY3JvIHRvIHN1
cHByZXNzIHVucmVhY2hhYmxlCi0vLyBjb2RlIHdhcm5pbmdzLgorLy8gVXNlZCBieSB0aGUgR1RF
U1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyBtYWNybyB0bworLy8g
c3VwcHJlc3MgdW5yZWFjaGFibGUgY29kZSB3YXJuaW5ncy4KIG5hbWVzcGFjZSB7CiBjbGFzcyBD
bGFzc1VuaXF1ZVRvQWx3YXlzVHJ1ZSB7fTsKIH0KQEAgLTQzNzgsNyArNTAxOSw3IEBAIGNvbnN0
IGNoYXIqIFBhcnNlRmxhZ1ZhbHVlKGNvbnN0IGNoYXIqIHN0ciwKICAgaWYgKHN0ciA9PSBOVUxM
IHx8IGZsYWcgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CiAKICAgLy8gVGhlIGZsYWcgbXVzdCBzdGFy
dCB3aXRoICItLSIgZm9sbG93ZWQgYnkgR1RFU1RfRkxBR19QUkVGSVhfLgotICBjb25zdCBTdHJp
bmcgZmxhZ19zdHIgPSBTdHJpbmc6OkZvcm1hdCgiLS0lcyVzIiwgR1RFU1RfRkxBR19QUkVGSVhf
LCBmbGFnKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmxhZ19zdHIgPSBzdGQ6OnN0cmluZygiLS0i
KSArIEdURVNUX0ZMQUdfUFJFRklYXyArIGZsYWc7CiAgIGNvbnN0IHNpemVfdCBmbGFnX2xlbiA9
IGZsYWdfc3RyLmxlbmd0aCgpOwogICBpZiAoc3RybmNtcChzdHIsIGZsYWdfc3RyLmNfc3RyKCks
IGZsYWdfbGVuKSAhPSAwKSByZXR1cm4gTlVMTDsKIApAQCAtNDQ0Myw3ICs1MDg0LDcgQEAgYm9v
bCBQYXJzZUludDMyRmxhZyhjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsIEludDMy
KiB2YWx1ZSkgewogLy8KIC8vIE9uIHN1Y2Nlc3MsIHN0b3JlcyB0aGUgdmFsdWUgb2YgdGhlIGZs
YWcgaW4gKnZhbHVlLCBhbmQgcmV0dXJucwogLy8gdHJ1ZS4gIE9uIGZhaWx1cmUsIHJldHVybnMg
ZmFsc2Ugd2l0aG91dCBjaGFuZ2luZyAqdmFsdWUuCi1ib29sIFBhcnNlU3RyaW5nRmxhZyhjb25z
dCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsIFN0cmluZyogdmFsdWUpIHsKK2Jvb2wgUGFy
c2VTdHJpbmdGbGFnKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgY2hhciogZmxhZywgc3RkOjpzdHJp
bmcqIHZhbHVlKSB7CiAgIC8vIEdldHMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIGFzIGEgc3RyaW5n
LgogICBjb25zdCBjaGFyKiBjb25zdCB2YWx1ZV9zdHIgPSBQYXJzZUZsYWdWYWx1ZShzdHIsIGZs
YWcsIGZhbHNlKTsKIApAQCAtNDQ5NSw3ICs1MTM2LDcgQEAgc3RhdGljIHZvaWQgUHJpbnRDb2xv
ckVuY29kZWQoY29uc3QgY2hhciogc3RyKSB7CiAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Q29sb3JlZFByaW50Zihjb2xvciwgIiVzIiwgU3RyaW5nKHN0ciwgcCAtIHN0cikuY19zdHIoKSk7
CisgICAgQ29sb3JlZFByaW50Zihjb2xvciwgIiVzIiwgc3RkOjpzdHJpbmcoc3RyLCBwKS5jX3N0
cigpKTsKIAogICAgIGNvbnN0IGNoYXIgY2ggPSBwWzFdOwogICAgIHN0ciA9IHAgKyAyOwpAQCAt
NDU0OSw2ICs1MTkwLDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyIGtDb2xvckVuY29kZWRIZWxwTWVz
c2FnZVtdID0KICAgICBHVEVTVF9QQVRIX1NFUF8gIkBZfEBHOkBZRklMRV9QQVRIXUBEXG4iCiAi
ICAgICAgR2VuZXJhdGUgYW4gWE1MIHJlcG9ydCBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5IG9yIHdp
dGggdGhlIGdpdmVuIGZpbGVcbiIKICIgICAgICBuYW1lLiBAWUZJTEVfUEFUSEBEIGRlZmF1bHRz
IHRvIEBHdGVzdF9kZXRhaWxzLnhtbEBELlxuIgorI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxU
U18KKyIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAic3RyZWFtX3Jlc3VsdF90bz1AWUhPU1RA
RzpAWVBPUlRARFxuIgorIiAgICAgIFN0cmVhbSB0ZXN0IHJlc3VsdHMgdG8gdGhlIGdpdmVuIHNl
cnZlci5cbiIKKyNlbmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXwogIlxuIgogIkFz
c2VydGlvbiBCZWhhdmlvcjpcbiIKICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVCAmJiAhR1RFU1Rf
T1NfV0lORE9XUwpAQCAtNDU1OSwxMCArNTIwNCw5IEBAIHN0YXRpYyBjb25zdCBjaGFyIGtDb2xv
ckVuY29kZWRIZWxwTWVzc2FnZVtdID0KICIgICAgICBUdXJuIGFzc2VydGlvbiBmYWlsdXJlcyBp
bnRvIGRlYnVnZ2VyIGJyZWFrLXBvaW50cy5cbiIKICIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklY
XyAidGhyb3dfb25fZmFpbHVyZUBEXG4iCiAiICAgICAgVHVybiBhc3NlcnRpb24gZmFpbHVyZXMg
aW50byBDKysgZXhjZXB0aW9ucy5cbiIKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0iICBARy0tIiBH
VEVTVF9GTEFHX1BSRUZJWF8gImNhdGNoX2V4Y2VwdGlvbnNARFxuIgotIiAgICAgIFN1cHByZXNz
IHBvcC11cHMgY2F1c2VkIGJ5IGV4Y2VwdGlvbnMuXG4iCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1MKKyIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiY2F0Y2hfZXhjZXB0aW9ucz0wQERc
biIKKyIgICAgICBEbyBub3QgcmVwb3J0IGV4Y2VwdGlvbnMgYXMgdGVzdCBmYWlsdXJlcy4gSW5z
dGVhZCwgYWxsb3cgdGhlbVxuIgorIiAgICAgIHRvIGNyYXNoIHRoZSBwcm9ncmFtIG9yIHRocm93
IGEgcG9wLXVwIChvbiBXaW5kb3dzKS5cbiIKICJcbiIKICJFeGNlcHQgZm9yIEBHLS0iIEdURVNU
X0ZMQUdfUFJFRklYXyAibGlzdF90ZXN0c0BELCB5b3UgY2FuIGFsdGVybmF0aXZlbHkgc2V0ICIK
ICAgICAidGhlIGNvcnJlc3BvbmRpbmdcbiIKQEAgLTQ1NzYsNDUgKzUyMjAsODkgQEAgc3RhdGlj
IGNvbnN0IGNoYXIga0NvbG9yRW5jb2RlZEhlbHBNZXNzYWdlW10gPQogIihub3Qgb25lIGluIHlv
dXIgb3duIGNvZGUgb3IgdGVzdHMpLCBwbGVhc2UgcmVwb3J0IGl0IHRvXG4iCiAiQEc8IiBHVEVT
VF9ERVZfRU1BSUxfICI+QEQuXG4iOwogCitib29sIFBhcnNlR29vZ2xlVGVzdEZsYWcoY29uc3Qg
Y2hhciogY29uc3QgYXJnKSB7CisgIHJldHVybiBQYXJzZUJvb2xGbGFnKGFyZywga0Fsc29SdW5E
aXNhYmxlZFRlc3RzRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoYWxz
b19ydW5fZGlzYWJsZWRfdGVzdHMpKSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtCcmVh
a09uRmFpbHVyZUZsYWcsCisgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGJyZWFrX29u
X2ZhaWx1cmUpKSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtDYXRjaEV4Y2VwdGlvbnNG
bGFnLAorICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSkg
fHwKKyAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtDb2xvckZsYWcsICZHVEVTVF9GTEFHKGNv
bG9yKSkgfHwKKyAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtEZWF0aFRlc3RTdHlsZUZsYWcs
CisgICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkpIHx8
CisgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0RlYXRoVGVzdFVzZUZvcmssCisgICAgICAgICAg
ICAgICAgICAgICZHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspKSB8fAorICAgICAgUGFy
c2VTdHJpbmdGbGFnKGFyZywga0ZpbHRlckZsYWcsICZHVEVTVF9GTEFHKGZpbHRlcikpIHx8Cisg
ICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnLAorICAg
ICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KSkg
fHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrTGlzdFRlc3RzRmxhZywgJkdURVNUX0ZMQUco
bGlzdF90ZXN0cykpIHx8CisgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrT3V0cHV0RmxhZywg
JkdURVNUX0ZMQUcob3V0cHV0KSkgfHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrUHJpbnRU
aW1lRmxhZywgJkdURVNUX0ZMQUcocHJpbnRfdGltZSkpIHx8CisgICAgICBQYXJzZUludDMyRmxh
ZyhhcmcsIGtSYW5kb21TZWVkRmxhZywgJkdURVNUX0ZMQUcocmFuZG9tX3NlZWQpKSB8fAorICAg
ICAgUGFyc2VJbnQzMkZsYWcoYXJnLCBrUmVwZWF0RmxhZywgJkdURVNUX0ZMQUcocmVwZWF0KSkg
fHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrU2h1ZmZsZUZsYWcsICZHVEVTVF9GTEFHKHNo
dWZmbGUpKSB8fAorICAgICAgUGFyc2VJbnQzMkZsYWcoYXJnLCBrU3RhY2tUcmFjZURlcHRoRmxh
ZywKKyAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSkg
fHwKKyAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtTdHJlYW1SZXN1bHRUb0ZsYWcsCisgICAg
ICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykpIHx8CisgICAg
ICBQYXJzZUJvb2xGbGFnKGFyZywga1Rocm93T25GYWlsdXJlRmxhZywKKyAgICAgICAgICAgICAg
ICAgICAgJkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkpOworfQorCisjaWYgR1RFU1RfVVNF
X09XTl9GTEFHRklMRV9GTEFHXwordm9pZCBMb2FkRmxhZ3NGcm9tRmlsZShjb25zdCBzdGQ6OnN0
cmluZyYgcGF0aCkgeworICBGSUxFKiBmbGFnZmlsZSA9IHBvc2l4OjpGT3BlbihwYXRoLmNfc3Ry
KCksICJyIik7CisgIGlmICghZmxhZ2ZpbGUpIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAg
ICAgICAgICJVbmFibGUgdG8gb3BlbiBmaWxlIFwiJXNcIlxuIiwKKyAgICAgICAgICAgIEdURVNU
X0ZMQUcoZmxhZ2ZpbGUpLmNfc3RyKCkpOworICAgIGZmbHVzaChzdGRlcnIpOworICAgIGV4aXQo
RVhJVF9GQUlMVVJFKTsKKyAgfQorICBzdGQ6OnN0cmluZyBjb250ZW50cyhSZWFkRW50aXJlRmls
ZShmbGFnZmlsZSkpOworICBwb3NpeDo6RkNsb3NlKGZsYWdmaWxlKTsKKyAgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IGxpbmVzOworICBTcGxpdFN0cmluZyhjb250ZW50cywgJ1xuJywgJmxpbmVz
KTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaW5lcy5zaXplKCk7ICsraSkgeworICAgIGlm
IChsaW5lc1tpXS5lbXB0eSgpKQorICAgICAgY29udGludWU7CisgICAgaWYgKCFQYXJzZUdvb2ds
ZVRlc3RGbGFnKGxpbmVzW2ldLmNfc3RyKCkpKQorICAgICAgZ19oZWxwX2ZsYWcgPSB0cnVlOwor
ICB9Cit9CisjZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KKwogLy8gUGFy
c2VzIHRoZSBjb21tYW5kIGxpbmUgZm9yIEdvb2dsZSBUZXN0IGZsYWdzLCB3aXRob3V0IGluaXRp
YWxpemluZwogLy8gb3RoZXIgcGFydHMgb2YgR29vZ2xlIFRlc3QuICBUaGUgdHlwZSBwYXJhbWV0
ZXIgQ2hhclR5cGUgY2FuIGJlCiAvLyBpbnN0YW50aWF0ZWQgdG8gZWl0aGVyIGNoYXIgb3Igd2No
YXJfdC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KIHZvaWQgUGFyc2VHb29nbGVUZXN0
RmxhZ3NPbmx5SW1wbChpbnQqIGFyZ2MsIENoYXJUeXBlKiogYXJndikgewogICBmb3IgKGludCBp
ID0gMTsgaSA8ICphcmdjOyBpKyspIHsKLSAgICBjb25zdCBTdHJpbmcgYXJnX3N0cmluZyA9IFN0
cmVhbWFibGVUb1N0cmluZyhhcmd2W2ldKTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBhcmdfc3Ry
aW5nID0gU3RyZWFtYWJsZVRvU3RyaW5nKGFyZ3ZbaV0pOwogICAgIGNvbnN0IGNoYXIqIGNvbnN0
IGFyZyA9IGFyZ19zdHJpbmcuY19zdHIoKTsKIAogICAgIHVzaW5nIGludGVybmFsOjpQYXJzZUJv
b2xGbGFnOwogICAgIHVzaW5nIGludGVybmFsOjpQYXJzZUludDMyRmxhZzsKICAgICB1c2luZyBp
bnRlcm5hbDo6UGFyc2VTdHJpbmdGbGFnOwogCi0gICAgLy8gRG8gd2Ugc2VlIGEgR29vZ2xlIFRl
c3QgZmxhZz8KLSAgICBpZiAoUGFyc2VCb29sRmxhZyhhcmcsIGtBbHNvUnVuRGlzYWJsZWRUZXN0
c0ZsYWcsCi0gICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJs
ZWRfdGVzdHMpKSB8fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0JyZWFrT25GYWlsdXJl
RmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJl
KSkgfHwKLSAgICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtDYXRjaEV4Y2VwdGlvbnNGbGFnLAot
ICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKSB8fAot
ICAgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrQ29sb3JGbGFnLCAmR1RFU1RfRkxBRyhjb2xv
cikpIHx8Ci0gICAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtEZWF0aFRlc3RTdHlsZUZsYWcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSkg
fHwKLSAgICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtEZWF0aFRlc3RVc2VGb3JrLAotICAgICAg
ICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspKSB8fAotICAg
ICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrRmlsdGVyRmxhZywgJkdURVNUX0ZMQUcoZmlsdGVy
KSkgfHwKLSAgICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga0ludGVybmFsUnVuRGVhdGhUZXN0
RmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGludGVybmFsX3J1bl9k
ZWF0aF90ZXN0KSkgfHwKLSAgICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtMaXN0VGVzdHNGbGFn
LCAmR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSkgfHwKLSAgICAgICAgUGFyc2VTdHJpbmdGbGFnKGFy
Zywga091dHB1dEZsYWcsICZHVEVTVF9GTEFHKG91dHB1dCkpIHx8Ci0gICAgICAgIFBhcnNlQm9v
bEZsYWcoYXJnLCBrUHJpbnRUaW1lRmxhZywgJkdURVNUX0ZMQUcocHJpbnRfdGltZSkpIHx8Ci0g
ICAgICAgIFBhcnNlSW50MzJGbGFnKGFyZywga1JhbmRvbVNlZWRGbGFnLCAmR1RFU1RfRkxBRyhy
YW5kb21fc2VlZCkpIHx8Ci0gICAgICAgIFBhcnNlSW50MzJGbGFnKGFyZywga1JlcGVhdEZsYWcs
ICZHVEVTVF9GTEFHKHJlcGVhdCkpIHx8Ci0gICAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrU2h1
ZmZsZUZsYWcsICZHVEVTVF9GTEFHKHNodWZmbGUpKSB8fAotICAgICAgICBQYXJzZUludDMyRmxh
ZyhhcmcsIGtTdGFja1RyYWNlRGVwdGhGbGFnLAotICAgICAgICAgICAgICAgICAgICAgICAmR1RF
U1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkpIHx8Ci0gICAgICAgIFBhcnNlQm9vbEZsYWcoYXJn
LCBrVGhyb3dPbkZhaWx1cmVGbGFnLCAmR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSkKLSAg
ICAgICAgKSB7Ci0gICAgICAvLyBZZXMuICBTaGlmdCB0aGUgcmVtYWluZGVyIG9mIHRoZSBhcmd2
IGxpc3QgbGVmdCBieSBvbmUuICBOb3RlCisgICAgYm9vbCByZW1vdmVfZmxhZyA9IGZhbHNlOwor
ICAgIGlmIChQYXJzZUdvb2dsZVRlc3RGbGFnKGFyZykpIHsKKyAgICAgIHJlbW92ZV9mbGFnID0g
dHJ1ZTsKKyNpZiBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCisgICAgfSBlbHNlIGlmIChQ
YXJzZVN0cmluZ0ZsYWcoYXJnLCBrRmxhZ2ZpbGVGbGFnLCAmR1RFU1RfRkxBRyhmbGFnZmlsZSkp
KSB7CisgICAgICBMb2FkRmxhZ3NGcm9tRmlsZShHVEVTVF9GTEFHKGZsYWdmaWxlKSk7CisgICAg
ICByZW1vdmVfZmxhZyA9IHRydWU7CisjZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVf
RkxBR18KKyAgICB9IGVsc2UgaWYgKGFyZ19zdHJpbmcgPT0gIi0taGVscCIgfHwgYXJnX3N0cmlu
ZyA9PSAiLWgiIHx8CisgICAgICAgICAgICAgICBhcmdfc3RyaW5nID09ICItPyIgfHwgYXJnX3N0
cmluZyA9PSAiLz8iIHx8CisgICAgICAgICAgICAgICBIYXNHb29nbGVUZXN0RmxhZ1ByZWZpeChh
cmcpKSB7CisgICAgICAvLyBCb3RoIGhlbHAgZmxhZyBhbmQgdW5yZWNvZ25pemVkIEdvb2dsZSBU
ZXN0IGZsYWdzIChleGNsdWRpbmcKKyAgICAgIC8vIGludGVybmFsIG9uZXMpIHRyaWdnZXIgaGVs
cCBkaXNwbGF5LgorICAgICAgZ19oZWxwX2ZsYWcgPSB0cnVlOworICAgIH0KKworICAgIGlmIChy
ZW1vdmVfZmxhZykgeworICAgICAgLy8gU2hpZnQgdGhlIHJlbWFpbmRlciBvZiB0aGUgYXJndiBs
aXN0IGxlZnQgYnkgb25lLiAgTm90ZQogICAgICAgLy8gdGhhdCBhcmd2IGhhcyAoKmFyZ2MgKyAx
KSBlbGVtZW50cywgdGhlIGxhc3Qgb25lIGFsd2F5cyBiZWluZwogICAgICAgLy8gTlVMTC4gIFRo
ZSBmb2xsb3dpbmcgbG9vcCBtb3ZlcyB0aGUgdHJhaWxpbmcgTlVMTCBlbGVtZW50IGFzCiAgICAg
ICAvLyB3ZWxsLgpAQCAtNDYyOCwxMiArNTMxNiw2IEBAIHZvaWQgUGFyc2VHb29nbGVUZXN0Rmxh
Z3NPbmx5SW1wbChpbnQqIGFyZ2MsIENoYXJUeXBlKiogYXJndikgewogICAgICAgLy8gV2UgYWxz
byBuZWVkIHRvIGRlY3JlbWVudCB0aGUgaXRlcmF0b3IgYXMgd2UganVzdCByZW1vdmVkCiAgICAg
ICAvLyBhbiBlbGVtZW50LgogICAgICAgaS0tOwotICAgIH0gZWxzZSBpZiAoYXJnX3N0cmluZyA9
PSAiLS1oZWxwIiB8fCBhcmdfc3RyaW5nID09ICItaCIgfHwKLSAgICAgICAgICAgICAgIGFyZ19z
dHJpbmcgPT0gIi0/IiB8fCBhcmdfc3RyaW5nID09ICIvPyIgfHwKLSAgICAgICAgICAgICAgIEhh
c0dvb2dsZVRlc3RGbGFnUHJlZml4KGFyZykpIHsKLSAgICAgIC8vIEJvdGggaGVscCBmbGFnIGFu
ZCB1bnJlY29nbml6ZWQgR29vZ2xlIFRlc3QgZmxhZ3MgKGV4Y2x1ZGluZwotICAgICAgLy8gaW50
ZXJuYWwgb25lcykgdHJpZ2dlciBoZWxwIGRpc3BsYXkuCi0gICAgICBnX2hlbHBfZmxhZyA9IHRy
dWU7CiAgICAgfQogICB9CiAKQEAgLTQ2NjAsMjEgKzUzNDIsMTUgQEAgdm9pZCBQYXJzZUdvb2ds
ZVRlc3RGbGFnc09ubHkoaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndikgewogLy8gd2NoYXJfdC4K
IHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KIHZvaWQgSW5pdEdvb2dsZVRlc3RJbXBsKGlu
dCogYXJnYywgQ2hhclR5cGUqKiBhcmd2KSB7Ci0gIGdfaW5pdF9ndGVzdF9jb3VudCsrOwotCiAg
IC8vIFdlIGRvbid0IHdhbnQgdG8gcnVuIHRoZSBpbml0aWFsaXphdGlvbiBjb2RlIHR3aWNlLgot
ICBpZiAoZ19pbml0X2d0ZXN0X2NvdW50ICE9IDEpIHJldHVybjsKKyAgaWYgKEdUZXN0SXNJbml0
aWFsaXplZCgpKSByZXR1cm47CiAKICAgaWYgKCphcmdjIDw9IDApIHJldHVybjsKIAotICBpbnRl
cm5hbDo6Z19leGVjdXRhYmxlX3BhdGggPSBpbnRlcm5hbDo6U3RyZWFtYWJsZVRvU3RyaW5nKGFy
Z3ZbMF0pOwotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKICAgZ19hcmd2cy5jbGVhcigpOwog
ICBmb3IgKGludCBpID0gMDsgaSAhPSAqYXJnYzsgaSsrKSB7CiAgICAgZ19hcmd2cy5wdXNoX2Jh
Y2soU3RyZWFtYWJsZVRvU3RyaW5nKGFyZ3ZbaV0pKTsKICAgfQotI2VuZGlmICAvLyBHVEVTVF9I
QVNfREVBVEhfVEVTVAogCiAgIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seShhcmdjLCBhcmd2KTsK
ICAgR2V0VW5pdFRlc3RJbXBsKCktPlBvc3RGbGFnUGFyc2luZ0luaXQoKTsKQEAgLTQ2OTIsMTMg
KzUzNjgsMjEgQEAgdm9pZCBJbml0R29vZ2xlVGVzdEltcGwoaW50KiBhcmdjLCBDaGFyVHlwZSoq
IGFyZ3YpIHsKIC8vCiAvLyBDYWxsaW5nIHRoZSBmdW5jdGlvbiBmb3IgdGhlIHNlY29uZCB0aW1l
IGhhcyBubyB1c2VyLXZpc2libGUgZWZmZWN0Lgogdm9pZCBJbml0R29vZ2xlVGVzdChpbnQqIGFy
Z2MsIGNoYXIqKiBhcmd2KSB7CisjaWYgZGVmaW5lZChHVEVTVF9DVVNUT01fSU5JVF9HT09HTEVf
VEVTVF9GVU5DVElPTl8pCisgIEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9O
XyhhcmdjLCBhcmd2KTsKKyNlbHNlICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9JTklUX0dPT0dM
RV9URVNUX0ZVTkNUSU9OXykKICAgaW50ZXJuYWw6OkluaXRHb29nbGVUZXN0SW1wbChhcmdjLCBh
cmd2KTsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9G
VU5DVElPTl8pCiB9CiAKIC8vIFRoaXMgb3ZlcmxvYWRlZCB2ZXJzaW9uIGNhbiBiZSB1c2VkIGlu
IFdpbmRvd3MgcHJvZ3JhbXMgY29tcGlsZWQgaW4KIC8vIFVOSUNPREUgbW9kZS4KIHZvaWQgSW5p
dEdvb2dsZVRlc3QoaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndikgeworI2lmIGRlZmluZWQoR1RF
U1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQorICBHVEVTVF9DVVNUT01fSU5J
VF9HT09HTEVfVEVTVF9GVU5DVElPTl8oYXJnYywgYXJndik7CisjZWxzZSAgLy8gZGVmaW5lZChH
VEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8pCiAgIGludGVybmFsOjpJbml0
R29vZ2xlVGVzdEltcGwoYXJnYywgYXJndik7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfQ1VT
VE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQogfQogCiB9ICAvLyBuYW1lc3BhY2UgdGVz
dGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0X21haW4u
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3RfbWFpbi5jYwppbmRleCBkMjBj
MDJmZGZiMGE5NDYxZGNjMmEyNzg5YzQ5MjJiNWIzMDU2MzUyLi5mMzAyODIyNTUyMzMwNmViOTY0
OGY5NGJjYmU5ZTNhNzgwMTZiYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zcmMvZ3Rlc3RfbWFpbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rl
c3RfbWFpbi5jYwpAQCAtMjcsMTMgKzI3LDEyIEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKLSNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDxzdGRpby5oPgogCi0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7
Ci0gIHN0ZDo6Y291dCA8PCAiUnVubmluZyBtYWluKCkgZnJvbSBndGVzdF9tYWluLmNjXG4iOwor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKK0dURVNUX0FQSV8gaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIgKiphcmd2KSB7CisgIHByaW50ZigiUnVubmluZyBtYWluKCkgZnJvbSBndGVzdF9tYWlu
LmNjXG4iKTsKICAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwogICByZXR1
cm4gUlVOX0FMTF9URVNUUygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTBhMTNk
NWUyZTE0ZjQ2YzU1MmFiMmIxMDc2NDA5MWY4NWUyNzViCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MKQEAg
LTAsMCArMSw5MyBAQAorLy8gQ29weXJpZ2h0IDIwMTAsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0
OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8v
CisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorLy8KKy8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKy8vCisvLyBU
ZXN0cyB0aGF0IHZlcmlmeSBpbnRlcmFjdGlvbiBvZiBleGNlcHRpb25zIGFuZCBkZWF0aCB0ZXN0
cy4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaCIKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgorCisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworIyBpZiBHVEVTVF9IQVNf
U0VICisjICBpbmNsdWRlIDx3aW5kb3dzLmg+ICAgICAgICAgIC8vIEZvciBSYWlzZUV4Y2VwdGlv
bigpLgorIyBlbmRpZgorCisjIGluY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgorCisjIGlmIEdU
RVNUX0hBU19FWENFUFRJT05TCisKKyMgIGluY2x1ZGUgPGV4Y2VwdGlvbj4gIC8vIEZvciBzdGQ6
OmV4Y2VwdGlvbi4KKworLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyByZXBvcnQgdGhyb3duIGV4
Y2VwdGlvbnMgYXMgZmFpbHVyZXMgYW5kIHRoYXQgdGhlCisvLyBleGNlcHRpb25zIGRvIG5vdCBl
c2NhcGUgZGVhdGggdGVzdCBtYWNyb3MuCitURVNUKEN4eEV4Y2VwdGlvbkRlYXRoVGVzdCwgRXhj
ZXB0aW9uSXNGYWlsdXJlKSB7CisgIHRyeSB7CisgICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX0RFQVRIKHRocm93IDEsICIiKSwgInRocmV3IGFuIGV4Y2VwdGlvbiIpOworICB9IGNh
dGNoICguLi4pIHsgIC8vIE5PTElOVAorICAgIEZBSUwoKSA8PCAiQW4gZXhjZXB0aW9uIGVzY2Fw
ZWQgYSBkZWF0aCB0ZXN0IG1hY3JvIGludm9jYXRpb24gIgorICAgICAgICAgICA8PCAid2l0aCBj
YXRjaF9leGNlcHRpb25zICIKKyAgICAgICAgICAgPDwgKHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0
Y2hfZXhjZXB0aW9ucykgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKKyAgfQorfQorCitjbGFz
cyBUZXN0RXhjZXB0aW9uIDogcHVibGljIHN0ZDo6ZXhjZXB0aW9uIHsKKyBwdWJsaWM6CisgIHZp
cnR1YWwgY29uc3QgY2hhciogd2hhdCgpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gImV4Y2VwdGlv
bmFsIG1lc3NhZ2UiOyB9Cit9OworCitURVNUKEN4eEV4Y2VwdGlvbkRlYXRoVGVzdCwgUHJpbnRz
TWVzc2FnZUZvclN0ZEV4Y2VwdGlvbnMpIHsKKyAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgZXhjZXB0
aW9uIG1lc3NhZ2UgaXMgcXVvdGVkIGluIHRoZSBmYWlsdXJlIHRleHQuCisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9ERUFUSCh0aHJvdyBUZXN0RXhjZXB0aW9uKCksICIiKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbmFsIG1lc3NhZ2UiKTsKKyAgLy8gVmVy
aWZpZXMgdGhhdCB0aGUgbG9jYXRpb24gaXMgbWVudGlvbmVkIGluIHRoZSBmYWlsdXJlIHRleHQu
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ERUFUSCh0aHJvdyBUZXN0RXhjZXB0
aW9uKCksICIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImd0ZXN0LWRlYXRoLXRlc3Rf
ZXhfdGVzdC5jYyIpOworfQorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworIyBp
ZiBHVEVTVF9IQVNfU0VICisvLyBUZXN0cyB0aGF0IGVuYWJsaW5nIGludGVyY2VwdGlvbiBvZiBT
RUggZXhjZXB0aW9ucyB3aXRoIHRoZQorLy8gY2F0Y2hfZXhjZXB0aW9ucyBmbGFnIGRvZXMgbm90
IGludGVyZmVyZSB3aXRoIFNFSCBleGNlcHRpb25zIGJlaW5nCisvLyB0cmVhdGVkIGFzIGRlYXRo
IGJ5IGRlYXRoIHRlc3RzLgorVEVTVChTZWhFeGNlcHRpb25EZWFzVGVzdCwgQ2F0Y2hFeGNlcHRp
b25zRG9lc05vdEludGVyZmVyZSkgeworICBFWFBFQ1RfREVBVEgoUmFpc2VFeGNlcHRpb24oNDIs
IDB4MCwgMCwgTlVMTCksICIiKQorICAgICAgPDwgIndpdGggY2F0Y2hfZXhjZXB0aW9ucyAiCisg
ICAgICA8PCAodGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA/ICJlbmFibGVk
IiA6ICJkaXNhYmxlZCIpOworfQorIyBlbmRpZgorCisjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFU
SF9URVNUCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICB0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hf
ZXhjZXB0aW9ucykgPSBHVEVTVF9FTkFCTEVfQ0FUQ0hfRVhDRVBUSU9OU18gIT0gMDsKKyAgcmV0
dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2MKaW5kZXggZWQ1YjUzYjcxYWYyZjc5NTYw
ZDcxNzJhYTY3Y2M3NDBiYTcwNDAxMS4uYmI0YTNkMWIzODgyMmU2Y2E2NGExZWUzM2Y2NGJjYTc2
YWYxOGE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1k
ZWF0aC10ZXN0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dC1kZWF0aC10ZXN0X3Rlc3QuY2MKQEAgLTMxLDM3ICszMSw0MCBAQAogLy8KIC8vIFRlc3RzIGZv
ciBkZWF0aCB0ZXN0cy4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaD4KLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWZp
bGVwYXRoLmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgorI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGgu
aCIKIAogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlOwogdXNpbmcgdGVzdGlu
Zzo6aW50ZXJuYWw6OkFsd2F5c1RydWU7CiAKICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogCi0j
aWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1ZGUgPGRpcmVjdC5oPiAgICAgICAgICAvLyBGb3Ig
Y2hkaXIoKS4KLSNlbHNlCi0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8c3lzL3dhaXQu
aD4gICAgICAgIC8vIEZvciB3YWl0cGlkLgotI2luY2x1ZGUgPGxpbWl0cz4gICAgICAgICAgICAv
LyBGb3Igc3RkOjpudW1lcmljX2xpbWl0cy4KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwor
IyBpZiBHVEVTVF9PU19XSU5ET1dTCisjICBpbmNsdWRlIDxkaXJlY3QuaD4gICAgICAgICAgLy8g
Rm9yIGNoZGlyKCkuCisjIGVsc2UKKyMgIGluY2x1ZGUgPHVuaXN0ZC5oPgorIyAgaW5jbHVkZSA8
c3lzL3dhaXQuaD4gICAgICAgIC8vIEZvciB3YWl0cGlkLgorIyBlbmRpZiAgLy8gR1RFU1RfT1Nf
V0lORE9XUwogCi0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0jaW5j
bHVkZSA8c3RkaW8uaD4KKyMgaW5jbHVkZSA8bGltaXRzLmg+CisjIGluY2x1ZGUgPHNpZ25hbC5o
PgorIyBpbmNsdWRlIDxzdGRpby5oPgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+Cisj
IGlmIEdURVNUX09TX0xJTlVYCisjICBpbmNsdWRlIDxzeXMvdGltZS5oPgorIyBlbmRpZiAgLy8g
R1RFU1RfT1NfTElOVVgKKworIyBpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKIAogLy8gSW5k
aWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3Qn
cwogLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFs
LWlubC5oIGlzCiAvLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9y
LiAgVGhpcyB0cmljayBpcyB0bwogLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkg
aW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCiAvLyBoaXMgY29kZS4KLSNkZWZpbmUg
R1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5s
LmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCisjIGRlZmluZSBHVEVTVF9JTVBMRU1F
TlRBVElPTl8gMQorIyBpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCisjIHVuZGVm
IEdURVNUX0lNUExFTUVOVEFUSU9OXwogCiBuYW1lc3BhY2UgcG9zaXggPSA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpwb3NpeDsKIApAQCAtNzEsOCArNzQsOCBAQCB1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6RGVhdGhUZXN0RmFjdG9yeTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpGaWxlUGF0aDsK
IHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRMYXN0RXJybm9EZXNjcmlwdGlvbjsKIHVzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjpHZXRVbml0VGVzdEltcGw7Cit1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6SW5EZWF0aFRlc3RDaGlsZDsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpQYXJzZU5h
dHVyYWxOdW1iZXI7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOwogCiBuYW1lc3Bh
Y2UgdGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewpAQCAtMTAzLDkgKzEwNiwxMCBAQCBj
bGFzcyBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSB7CiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwK
IH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAKLXZvaWQgRGllSW5zaWRlKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uKSB7Ci0gIGZwcmludGYoc3RkZXJyLCAiZGVhdGggaW5zaWRlICVzKCkuIiwgZnVuY3Rp
b24pOwotICBmZmx1c2goc3RkZXJyKTsKK3ZvaWQgRGllV2l0aE1lc3NhZ2UoY29uc3QgOjpzdGQ6
OnN0cmluZyYgbWVzc2FnZSkgeworICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgbWVzc2FnZS5jX3N0
cigpKTsKKyAgZmZsdXNoKHN0ZGVycik7ICAvLyBNYWtlIHN1cmUgdGhlIHRleHQgaXMgcHJpbnRl
ZCBiZWZvcmUgdGhlIHByb2Nlc3MgZXhpdHMuCisKICAgLy8gV2UgY2FsbCBfZXhpdCgpIGluc3Rl
YWQgb2YgZXhpdCgpLCBhcyB0aGUgZm9ybWVyIGlzIGEgZGlyZWN0CiAgIC8vIHN5c3RlbSBjYWxs
IGFuZCB0aHVzIHNhZmVyIGluIHRoZSBwcmVzZW5jZSBvZiB0aHJlYWRzLiAgZXhpdCgpCiAgIC8v
IHdpbGwgaW52b2tlIHVzZXItZGVmaW5lZCBleGl0LWhvb2tzLCB3aGljaCBtYXkgZG8gZGFuZ2Vy
b3VzCkBAIC0xMTgsNiArMTIyLDEwIEBAIHZvaWQgRGllSW5zaWRlKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uKSB7CiAgICAgX2V4aXQoMSk7CiB9CiAKK3ZvaWQgRGllSW5zaWRlKGNvbnN0IDo6c3RkOjpz
dHJpbmcmIGZ1bmN0aW9uKSB7CisgIERpZVdpdGhNZXNzYWdlKCJkZWF0aCBpbnNpZGUgIiArIGZ1
bmN0aW9uICsgIigpLiIpOworfQorCiAvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHdvcmsuCiAK
IGNsYXNzIFRlc3RGb3JEZWF0aFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CkBAIC0xOTAs
MTMgKzE5OCwxNyBAQCB2b2lkIERlYXRoVGVzdFN1YnJvdXRpbmUoKSB7CiAvLyBEZWF0aCBpbiBk
YmcsIG5vdCBvcHQuCiBpbnQgRGllSW5EZWJ1Z0Vsc2UxMihpbnQqIHNpZGVlZmZlY3QpIHsKICAg
aWYgKHNpZGVlZmZlY3QpICpzaWRlZWZmZWN0ID0gMTI7Ci0jaWZuZGVmIE5ERUJVRworCisjIGlm
bmRlZiBOREVCVUcKKwogICBEaWVJbnNpZGUoIkRpZUluRGVidWdFbHNlMTIiKTsKLSNlbmRpZiAg
Ly8gTkRFQlVHCisKKyMgZW5kaWYgIC8vIE5ERUJVRworCiAgIHJldHVybiAxMjsKIH0KIAotI2lm
IEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lORE9XUwogCiAvLyBUZXN0cyB0aGUg
RXhpdGVkV2l0aENvZGUgcHJlZGljYXRlLgogVEVTVChFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCwg
RXhpdGVkV2l0aENvZGUpIHsKQEAgLTIwOSw3ICsyMjEsNyBAQCBURVNUKEV4aXRTdGF0dXNQcmVk
aWNhdGVUZXN0LCBFeGl0ZWRXaXRoQ29kZSkgewogICBFWFBFQ1RfRkFMU0UodGVzdGluZzo6RXhp
dGVkV2l0aENvZGUoMSkoMCkpOwogfQogCi0jZWxzZQorIyBlbHNlCiAKIC8vIFJldHVybnMgdGhl
IGV4aXQgc3RhdHVzIG9mIGEgcHJvY2VzcyB0aGF0IGNhbGxzIF9leGl0KDIpIHdpdGggYQogLy8g
Z2l2ZW4gZXhpdCBjb2RlLiAgVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgdGhlCkBAIC0y
NjgsNyArMjgwLDcgQEAgVEVTVChFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCwgS2lsbGVkQnlTaWdu
YWwpIHsKICAgRVhQRUNUX0ZBTFNFKHByZWRfa2lsbChzdGF0dXNfc2VndikpOwogfQogCi0jZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAog
Ly8gVGVzdHMgdGhhdCB0aGUgZGVhdGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUgd2hpY2gg
bWF5IG9yIG1heSBub3QKIC8vIGJlIGZvbGxvd2VkIGJ5IG9wZXJhdG9yPDwsIGFuZCB0aGF0IGlu
IGVpdGhlciBjYXNlIHRoZSBjb21wbGV0ZSB0ZXh0CkBAIC0zMDAsNyArMzEyLDcgQEAgdm9pZCBE
aWVXaXRoRW1iZWRkZWROdWwoKSB7CiAgIF9leGl0KDEpOwogfQogCi0jaWYgR1RFU1RfVVNFU19Q
Q1JFCisjIGlmIEdURVNUX1VTRVNfUENSRQogLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEggYW5k
IEFTU0VSVF9ERUFUSCB3b3JrIHdoZW4gdGhlIGVycm9yCiAvLyBtZXNzYWdlIGhhcyBhIE5VTCBj
aGFyYWN0ZXIgaW4gaXQuCiBURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRW1iZWRkZWROdWxJbk1l
c3NhZ2UpIHsKQEAgLTMwOSwxNyArMzIxLDE0IEBAIFRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBF
bWJlZGRlZE51bEluTWVzc2FnZSkgewogICBFWFBFQ1RfREVBVEgoRGllV2l0aEVtYmVkZGVkTnVs
KCksICJteSBudWxsIHdvcmxkIik7CiAgIEFTU0VSVF9ERUFUSChEaWVXaXRoRW1iZWRkZWROdWwo
KSwgIm15IG51bGwgd29ybGQiKTsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfVVNFU19QQ1JFCisjIGVu
ZGlmICAvLyBHVEVTVF9VU0VTX1BDUkUKIAogLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0IG1hY3Jv
cyBleHBhbmQgdG8gY29kZSB3aGljaCBpbnRlcmFjdHMgd2VsbCB3aXRoIHN3aXRjaAogLy8gc3Rh
dGVtZW50cy4KIFRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTd2l0Y2hTdGF0ZW1lbnQpIHsKLS8v
IE1pY3Jvc29mdCBjb21waWxlciB1c3VhbGx5IGNvbXBsYWlucyBhYm91dCBzd2l0Y2ggc3RhdGVt
ZW50cyB3aXRob3V0Ci0vLyBjYXNlIGxhYmVscy4gV2Ugc3VwcHJlc3MgdGhhdCB3YXJuaW5nIGZv
ciB0aGlzIHRlc3QuCi0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3By
YWdtYSB3YXJuaW5nKGRpc2FibGU6IDQwNjUpCi0jZW5kaWYgIC8vIF9NU0NfVkVSCisgIC8vIE1p
Y3Jvc29mdCBjb21waWxlciB1c3VhbGx5IGNvbXBsYWlucyBhYm91dCBzd2l0Y2ggc3RhdGVtZW50
cyB3aXRob3V0CisgIC8vIGNhc2UgbGFiZWxzLiBXZSBzdXBwcmVzcyB0aGF0IHdhcm5pbmcgZm9y
IHRoaXMgdGVzdC4KKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDA2NSkKIAog
ICBzd2l0Y2ggKDApCiAgICAgZGVmYXVsdDoKQEAgLTMyOSw5ICszMzgsNyBAQCBURVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgU3dpdGNoU3RhdGVtZW50KSB7CiAgICAgY2FzZSAwOgogICAgICAgRVhQ
RUNUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgImV4aXQgaW4gc3dpdGNoIGNhc2UiOwogCi0jaWZk
ZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYgIC8vIF9NU0NfVkVSCisg
IEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQogfQogCiAvLyBUZXN0cyB0aGF0IGEg
c3RhdGljIG1lbWJlciBmdW5jdGlvbiBjYW4gYmUgdXNlZCBpbiBhICJmYXN0IiBzdHlsZQpAQCAt
MzYzLDYgKzM3MCw1OCBAQCBURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRmFzdERlYXRoVGVzdElu
Q2hhbmdlZERpcikgewogICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIiKTsKIH0KIAorIyBpZiBH
VEVTVF9PU19MSU5VWAordm9pZCBTaWdwcm9mQWN0aW9uKGludCwgc2lnaW5mb190Kiwgdm9pZCop
IHsgLyogbm8gb3AgKi8gfQorCisvLyBTZXRzIFNJR1BST0YgYWN0aW9uIGFuZCBJVElNRVJfUFJP
RiB0aW1lciAoaW50ZXJ2YWw6IDFtcykuCit2b2lkIFNldFNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigp
IHsKKyAgc3RydWN0IGl0aW1lcnZhbCB0aW1lcjsKKyAgdGltZXIuaXRfaW50ZXJ2YWwudHZfc2Vj
ID0gMDsKKyAgdGltZXIuaXRfaW50ZXJ2YWwudHZfdXNlYyA9IDE7CisgIHRpbWVyLml0X3ZhbHVl
ID0gdGltZXIuaXRfaW50ZXJ2YWw7CisgIEFTU0VSVF9FUSgwLCBzZXRpdGltZXIoSVRJTUVSX1BS
T0YsICZ0aW1lciwgTlVMTCkpOworICBzdHJ1Y3Qgc2lnYWN0aW9uIHNpZ25hbF9hY3Rpb247Cisg
IG1lbXNldCgmc2lnbmFsX2FjdGlvbiwgMCwgc2l6ZW9mKHNpZ25hbF9hY3Rpb24pKTsKKyAgc2ln
ZW1wdHlzZXQoJnNpZ25hbF9hY3Rpb24uc2FfbWFzayk7CisgIHNpZ25hbF9hY3Rpb24uc2Ffc2ln
YWN0aW9uID0gU2lncHJvZkFjdGlvbjsKKyAgc2lnbmFsX2FjdGlvbi5zYV9mbGFncyA9IFNBX1JF
U1RBUlQgfCBTQV9TSUdJTkZPOworICBBU1NFUlRfRVEoMCwgc2lnYWN0aW9uKFNJR1BST0YsICZz
aWduYWxfYWN0aW9uLCBOVUxMKSk7Cit9CisKKy8vIERpc2FibGVzIElUSU1FUl9QUk9GIHRpbWVy
IGFuZCBpZ25vcmVzIFNJR1BST0Ygc2lnbmFsLgordm9pZCBEaXNhYmxlU2lncHJvZkFjdGlvbkFu
ZFRpbWVyKHN0cnVjdCBzaWdhY3Rpb24qIG9sZF9zaWduYWxfYWN0aW9uKSB7CisgIHN0cnVjdCBp
dGltZXJ2YWwgdGltZXI7CisgIHRpbWVyLml0X2ludGVydmFsLnR2X3NlYyA9IDA7CisgIHRpbWVy
Lml0X2ludGVydmFsLnR2X3VzZWMgPSAwOworICB0aW1lci5pdF92YWx1ZSA9IHRpbWVyLml0X2lu
dGVydmFsOworICBBU1NFUlRfRVEoMCwgc2V0aXRpbWVyKElUSU1FUl9QUk9GLCAmdGltZXIsIE5V
TEwpKTsKKyAgc3RydWN0IHNpZ2FjdGlvbiBzaWduYWxfYWN0aW9uOworICBtZW1zZXQoJnNpZ25h
bF9hY3Rpb24sIDAsIHNpemVvZihzaWduYWxfYWN0aW9uKSk7CisgIHNpZ2VtcHR5c2V0KCZzaWdu
YWxfYWN0aW9uLnNhX21hc2spOworICBzaWduYWxfYWN0aW9uLnNhX2hhbmRsZXIgPSBTSUdfSUdO
OworICBBU1NFUlRfRVEoMCwgc2lnYWN0aW9uKFNJR1BST0YsICZzaWduYWxfYWN0aW9uLCBvbGRf
c2lnbmFsX2FjdGlvbikpOworfQorCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHdvcmsgd2hl
biBTSUdQUk9GIGhhbmRsZXIgYW5kIHRpbWVyIGFyZSBzZXQuCitURVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgRmFzdFNpZ3Byb2ZBY3Rpb25TZXQpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0
aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAgU2V0U2lncHJvZkFjdGlvbkFuZFRpbWVyKCk7Cisg
IEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOworICBzdHJ1Y3Qgc2lnYWN0aW9uIG9sZF9zaWdu
YWxfYWN0aW9uOworICBEaXNhYmxlU2lncHJvZkFjdGlvbkFuZFRpbWVyKCZvbGRfc2lnbmFsX2Fj
dGlvbik7CisgIEVYUEVDVF9UUlVFKG9sZF9zaWduYWxfYWN0aW9uLnNhX3NpZ2FjdGlvbiA9PSBT
aWdwcm9mQWN0aW9uKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRocmVhZFNhZmVT
aWdwcm9mQWN0aW9uU2V0KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHls
ZSkgPSAidGhyZWFkc2FmZSI7CisgIFNldFNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigpOworICBFWFBF
Q1RfREVBVEgoX2V4aXQoMSksICIiKTsKKyAgc3RydWN0IHNpZ2FjdGlvbiBvbGRfc2lnbmFsX2Fj
dGlvbjsKKyAgRGlzYWJsZVNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigmb2xkX3NpZ25hbF9hY3Rpb24p
OworICBFWFBFQ1RfVFJVRShvbGRfc2lnbmFsX2FjdGlvbi5zYV9zaWdhY3Rpb24gPT0gU2lncHJv
ZkFjdGlvbik7Cit9CisjIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCiAvLyBSZXBlYXRzIGEg
cmVwcmVzZW50YXRpdmUgc2FtcGxlIG9mIGRlYXRoIHRlc3RzIGluIHRoZSAidGhyZWFkc2FmZSIg
c3R5bGU6CiAKIFRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTdGF0aWNNZW1iZXJGdW5jdGlvblRo
cmVhZHNhZmVTdHlsZSkgewpAQCAtNDAwLDYgKzQ1OSw4IEBAIFRFU1RfRihUZXN0Rm9yRGVhdGhU
ZXN0LCBNaXhlZFN0eWxlcykgewogICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKTsKIH0KIAor
IyBpZiBHVEVTVF9IQVNfQ0xPTkUgJiYgR1RFU1RfSEFTX1BUSFJFQUQKKwogbmFtZXNwYWNlIHsK
IAogYm9vbCBwdGhyZWFkX2ZsYWc7CkBAIC00MTAsOCArNDcxLDYgQEAgdm9pZCBTZXRQdGhyZWFk
RmxhZygpIHsKIAogfSAgLy8gbmFtZXNwYWNlCiAKLSNpZiBHVEVTVF9IQVNfQ0xPTkUgJiYgR1RF
U1RfSEFTX1BUSFJFQUQKLQogVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERvZXNOb3RFeGVjdXRl
QXRmb3JrSG9va3MpIHsKICAgaWYgKCF0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNl
X2ZvcmspKSB7CiAgICAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0
aHJlYWRzYWZlIjsKQEAgLTQyMiw3ICs0ODEsNyBAQCBURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
RG9lc05vdEV4ZWN1dGVBdGZvcmtIb29rcykgewogICB9CiB9CiAKLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX0NMT05FICYmIEdURVNUX0hBU19QVEhSRUFECisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ0xP
TkUgJiYgR1RFU1RfSEFTX1BUSFJFQUQKIAogLy8gVGVzdHMgdGhhdCBhIG1ldGhvZCBvZiBhbm90
aGVyIGNsYXNzIGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KIFRFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBNZXRob2RPZkFub3RoZXJDbGFzcykgewpAQCAtNDQ0LDEzICs1MDMsMTkgQEAgVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFjY2VwdHNBbnl0aGluZ0NvbnZlcnRpYmxlVG9SRSkgewog
ICBjb25zdCB0ZXN0aW5nOjppbnRlcm5hbDo6UkUgcmVnZXgocmVnZXhfY19zdHIpOwogICBFWFBF
Q1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXgpOwogCi0jaWYgR1RFU1RfSEFTX0dMT0JB
TF9TVFJJTkcKKyMgaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKwogICBjb25zdCBzdHJpbmcg
cmVnZXhfc3RyKHJlZ2V4X2Nfc3RyKTsKICAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCks
IHJlZ2V4X3N0cik7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKKyMgZW5k
aWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKKyMgaWYgIUdURVNUX1VTRVNfUENSRQog
CiAgIGNvbnN0IDo6c3RkOjpzdHJpbmcgcmVnZXhfc3RkX3N0cihyZWdleF9jX3N0cik7CiAgIEVY
UEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleF9zdGRfc3RyKTsKKworIyBlbmRpZiAg
Ly8gIUdURVNUX1VTRVNfUENSRQogfQogCiAvLyBUZXN0cyB0aGF0IGEgbm9uLXZvaWQgZnVuY3Rp
b24gY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgpAQCAtNTM4LDE3ICs2MDMsMjAgQEAgVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIFNpbmdsZUV2YWx1YXRpb24pIHsKIH0KIAogLy8gVGVzdHMg
dGhhdCBydW4tYXdheSBkZWF0aCB0ZXN0cyBhcmUgcmVwb3J0ZWQgYXMgZmFpbHVyZXMuCi1URVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgUnVuYXdheSkgeworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3Qs
IFJ1bmF3YXlJc0ZhaWx1cmUpIHsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RF
QVRIKHN0YXRpY19jYXN0PHZvaWQ+KDApLCAiRm9vIiksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJmYWlsZWQgdG8gZGllLiIpOworfQogCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHJl
cG9ydCBleGVjdXRpbmcgJ3JldHVybicgaW4gdGhlIHN0YXRlbWVudCBhcworLy8gZmFpbHVyZS4K
K1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBSZXR1cm5Jc0ZhaWx1cmUpIHsKICAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoQVNTRVJUX0RFQVRIKHJldHVybiwgIkJhciIpLAogICAgICAgICAgICAgICAg
ICAgICAgICAiaWxsZWdhbCByZXR1cm4gaW4gdGVzdCBzdGF0ZW1lbnQuIik7CiB9CiAKLQotLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfREVCVUdfREVBVEggd29ya3MgYXMgZXhwZWN0ZWQsCi0vLyB0aGF0
IGlzLCBpbiBkZWJ1ZyBtb2RlLCBpdDoKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQlVHX0RFQVRI
IHdvcmtzIGFzIGV4cGVjdGVkLCB0aGF0IGlzLCB5b3UgY2FuIHN0cmVhbSBhCisvLyBtZXNzYWdl
IHRvIGl0LCBhbmQgaW4gZGVidWcgbW9kZSBpdDoKIC8vIDEuIEFzc2VydHMgb24gZGVhdGguCiAv
LyAyLiBIYXMgbm8gc2lkZSBlZmZlY3QuCiAvLwpAQCAtNTU3LDQ1ICs2MjUsNDkgQEAgVEVTVF9G
KFRlc3RGb3JEZWF0aFRlc3QsIFJ1bmF3YXkpIHsKIFRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBU
ZXN0RXhwZWN0RGVidWdEZWF0aCkgewogICBpbnQgc2lkZWVmZmVjdCA9IDA7CiAKLSAgRVhQRUNU
X0RFQlVHX0RFQVRIKERpZUluRGVidWdFbHNlMTIoJnNpZGVlZmZlY3QpLAotICAgICAgICAgICAg
ICAgICAgICAgImRlYXRoLipEaWVJbkRlYnVnRWxzZTEyIik7CisgIEVYUEVDVF9ERUJVR19ERUFU
SChEaWVJbkRlYnVnRWxzZTEyKCZzaWRlZWZmZWN0KSwgImRlYXRoLipEaWVJbkRlYnVnRWxzZTEy
IikKKyAgICAgIDw8ICJNdXN0IGFjY2VwdCBhIHN0cmVhbWVkIG1lc3NhZ2UiOworCisjIGlmZGVm
IE5ERUJVRwogCi0jaWZkZWYgTkRFQlVHCiAgIC8vIENoZWNrcyB0aGF0IHRoZSBhc3NpZ25tZW50
IG9jY3VycyBpbiBvcHQgbW9kZSAoc2lkZWVmZmVjdCkuCiAgIEVYUEVDVF9FUSgxMiwgc2lkZWVm
ZmVjdCk7Ci0jZWxzZQorCisjIGVsc2UKKwogICAvLyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVu
dCBkb2VzIG5vdCBvY2N1ciBpbiBkYmcgbW9kZSAobm8gc2lkZWVmZmVjdCkuCiAgIEVYUEVDVF9F
USgwLCBzaWRlZWZmZWN0KTsKLSNlbmRpZgorCisjIGVuZGlmCiB9CiAKLS8vIFRlc3RzIHRoYXQg
QVNTRVJUX0RFQlVHX0RFQVRIIHdvcmtzIGFzIGV4cGVjdGVkCi0vLyBJbiBkZWJ1ZyBtb2RlOgot
Ly8gMS4gQXNzZXJ0cyBvbiBkZWJ1ZyBkZWF0aC4KKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQlVH
X0RFQVRIIHdvcmtzIGFzIGV4cGVjdGVkLCB0aGF0IGlzLCB5b3UgY2FuIHN0cmVhbSBhCisvLyBt
ZXNzYWdlIHRvIGl0LCBhbmQgaW4gZGVidWcgbW9kZSBpdDoKKy8vIDEuIEFzc2VydHMgb24gZGVh
dGguCiAvLyAyLiBIYXMgbm8gc2lkZSBlZmZlY3QuCiAvLwotLy8gSW4gb3B0IG1vZGU6Ci0vLyAx
LiBIYXMgc2lkZSBlZmZlY3RzIGFuZCByZXR1cm5zIHRoZSBleHBlY3RlZCB2YWx1ZSAoMTIpLgor
Ly8gQW5kIGluIG9wdCBtb2RlLCBpdDoKKy8vIDEuICBIYXMgc2lkZSBlZmZlY3RzIGJ1dCBkb2Vz
IG5vdCBhc3NlcnQuCiBURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgVGVzdEFzc2VydERlYnVnRGVh
dGgpIHsKICAgaW50IHNpZGVlZmZlY3QgPSAwOwogCi0gIEFTU0VSVF9ERUJVR19ERUFUSCh7ICAv
LyBOT0xJTlQKLSAgICAvLyBUZXN0cyB0aGF0IHRoZSByZXR1cm4gdmFsdWUgaXMgMTIgaW4gb3B0
IG1vZGUuCi0gICAgRVhQRUNUX0VRKDEyLCBEaWVJbkRlYnVnRWxzZTEyKCZzaWRlZWZmZWN0KSk7
Ci0gICAgLy8gVGVzdHMgdGhhdCB0aGUgc2lkZSBlZmZlY3Qgb2NjdXJyZWQgaW4gb3B0IG1vZGUu
Ci0gICAgRVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0KTsKLSAgfSwgImRlYXRoLipEaWVJbkRlYnVn
RWxzZTEyIik7CisgIEFTU0VSVF9ERUJVR19ERUFUSChEaWVJbkRlYnVnRWxzZTEyKCZzaWRlZWZm
ZWN0KSwgImRlYXRoLipEaWVJbkRlYnVnRWxzZTEyIikKKyAgICAgIDw8ICJNdXN0IGFjY2VwdCBh
IHN0cmVhbWVkIG1lc3NhZ2UiOworCisjIGlmZGVmIE5ERUJVRwogCi0jaWZkZWYgTkRFQlVHCiAg
IC8vIENoZWNrcyB0aGF0IHRoZSBhc3NpZ25tZW50IG9jY3VycyBpbiBvcHQgbW9kZSAoc2lkZWVm
ZmVjdCkuCiAgIEVYUEVDVF9FUSgxMiwgc2lkZWVmZmVjdCk7Ci0jZWxzZQorCisjIGVsc2UKKwog
ICAvLyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBkb2VzIG5vdCBvY2N1ciBpbiBkYmcgbW9k
ZSAobm8gc2lkZWVmZmVjdCkuCiAgIEVYUEVDVF9FUSgwLCBzaWRlZWZmZWN0KTsKLSNlbmRpZgor
CisjIGVuZGlmCiB9CiAKLSNpZm5kZWYgTkRFQlVHCisjIGlmbmRlZiBOREVCVUcKIAogdm9pZCBF
eHBlY3REZWJ1Z0RlYXRoSGVscGVyKGJvb2wqIGFib3J0ZWQpIHsKICAgKmFib3J0ZWQgPSB0cnVl
OwpAQCAtNjAzLDcgKzY3NSw3IEBAIHZvaWQgRXhwZWN0RGVidWdEZWF0aEhlbHBlcihib29sKiBh
Ym9ydGVkKSB7CiAgICphYm9ydGVkID0gZmFsc2U7CiB9CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dT
CisjICBpZiBHVEVTVF9PU19XSU5ET1dTCiBURVNUKFBvcFVwRGVhdGhUZXN0LCBEb2VzTm90U2hv
d1BvcFVwT25BYm9ydCkgewogICBwcmludGYoIlRoaXMgdGVzdCBzaG91bGQgYmUgY29uc2lkZXJl
ZCBmYWlsaW5nIGlmIGl0IHNob3dzICIKICAgICAgICAgICJhbnkgcG9wLXVwIGRpYWxvZ3MuXG4i
KTsKQEAgLTYxNCwxOCArNjg2LDcgQEAgVEVTVChQb3BVcERlYXRoVGVzdCwgRG9lc05vdFNob3dQ
b3BVcE9uQWJvcnQpIHsKICAgICBhYm9ydCgpOwogICB9LCAiIik7CiB9Ci0KLVRFU1QoUG9wVXBE
ZWF0aFRlc3QsIERvZXNOb3RTaG93UG9wVXBPblRocm93KSB7Ci0gIHByaW50ZigiVGhpcyB0ZXN0
IHNob3VsZCBiZSBjb25zaWRlcmVkIGZhaWxpbmcgaWYgaXQgc2hvd3MgIgotICAgICAgICAgImFu
eSBwb3AtdXAgZGlhbG9ncy5cbiIpOwotICBmZmx1c2goc3Rkb3V0KTsKLQotICBFWFBFQ1RfREVB
VEgoewotICAgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgPSBmYWxzZTsK
LSAgICB0aHJvdyAxOwotICB9LCAiIik7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MK
KyMgIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKIC8vIFRlc3RzIHRoYXQgRVhQRUNUX0RF
QlVHX0RFQVRIIGluIGRlYnVnIG1vZGUgZG9lcyBub3QgYWJvcnQKIC8vIHRoZSBmdW5jdGlvbi4K
QEAgLTYzNyw3ICs2OTgsMTAgQEAgVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEV4cGVjdERlYnVn
RGVhdGhEb2VzTm90QWJvcnQpIHsKIAogdm9pZCBBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKGJvb2wq
IGFib3J0ZWQpIHsKICAgKmFib3J0ZWQgPSB0cnVlOwotICBBU1NFUlRfREVCVUdfREVBVEgocmV0
dXJuLCAiIikgPDwgIlRoaXMgaXMgZXhwZWN0ZWQgdG8gZmFpbC4iOworICBHVEVTVF9MT0dfKElO
Rk8pIDw8ICJCZWZvcmUgQVNTRVJUX0RFQlVHX0RFQVRIIjsKKyAgQVNTRVJUX0RFQlVHX0RFQVRI
KEdURVNUX0xPR18oSU5GTykgPDwgIkluIEFTU0VSVF9ERUJVR19ERUFUSCI7IHJldHVybiwgIiIp
CisgICAgICA8PCAiVGhpcyBpcyBleHBlY3RlZCB0byBmYWlsLiI7CisgIEdURVNUX0xPR18oSU5G
TykgPDwgIkFmdGVyIEFTU0VSVF9ERUJVR19ERUFUSCI7CiAgICphYm9ydGVkID0gZmFsc2U7CiB9
CiAKQEAgLTY1MCwzMSArNzE0LDk4IEBAIFRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnRE
ZWJ1Z0RlYXRoQWJvcnRzKSB7CiAgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOwogfQogCi0jZW5kaWYg
IC8vIF9OREVCVUcKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJv
cnRzMikgeworICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7
CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
QXNzZXJ0RGVidWdEZWF0aEFib3J0czMpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJv
cnRlZCA9IGZhbHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVs
cGVyKCZhYm9ydGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9G
KFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM0KSB7CisgIHN0YXRpYyBi
b29sIGFib3J0ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
QXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJv
cnRlZCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJv
cnRzNSkgeworICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7
CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
QXNzZXJ0RGVidWdEZWF0aEFib3J0czYpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJv
cnRlZCA9IGZhbHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVs
cGVyKCZhYm9ydGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9G
KFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM3KSB7CisgIHN0YXRpYyBi
b29sIGFib3J0ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
QXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJv
cnRlZCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJv
cnRzOCkgeworICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7
CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
QXNzZXJ0RGVidWdEZWF0aEFib3J0czkpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJv
cnRlZCA9IGZhbHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVs
cGVyKCZhYm9ydGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9G
KFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHMxMCkgeworICBzdGF0aWMg
Ym9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJF
KEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVFKGFi
b3J0ZWQpOworfQorCisjIGVuZGlmICAvLyBfTkRFQlVHCiAKIC8vIFRlc3RzIHRoZSAqX0VYSVQg
ZmFtaWx5IG9mIG1hY3JvcywgdXNpbmcgYSB2YXJpZXR5IG9mIHByZWRpY2F0ZXMuCiBzdGF0aWMg
dm9pZCBUZXN0RXhpdE1hY3JvcygpIHsKICAgRVhQRUNUX0VYSVQoX2V4aXQoMSksICB0ZXN0aW5n
OjpFeGl0ZWRXaXRoQ29kZSgxKSwgICIiKTsKICAgQVNTRVJUX0VYSVQoX2V4aXQoNDIpLCB0ZXN0
aW5nOjpFeGl0ZWRXaXRoQ29kZSg0MiksICIiKTsKIAotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMg
aWYgR1RFU1RfT1NfV0lORE9XUworCiAgIC8vIE9mIGFsbCBzaWduYWxzIGVmZmVjdHMgb24gdGhl
IHByb2Nlc3MgZXhpdCBjb2RlLCBvbmx5IHRob3NlIG9mIFNJR0FCUlQKICAgLy8gYXJlIGRvY3Vt
ZW50ZWQgb24gV2luZG93cy4KICAgLy8gU2VlIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4t
dXMvbGlicmFyeS9kd3d6a3Q0YyhWUy43MSkuYXNweC4KLSAgRVhQRUNUX0VYSVQocmFpc2UoU0lH
QUJSVCksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDMpLCAiIik7Ci0jZWxzZQorICBFWFBFQ1Rf
RVhJVChyYWlzZShTSUdBQlJUKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMyksICIiKSA8PCAi
Yl9hciI7CisKKyMgZWxzZQorCiAgIEVYUEVDVF9FWElUKHJhaXNlKFNJR0tJTEwpLCB0ZXN0aW5n
OjpLaWxsZWRCeVNpZ25hbChTSUdLSUxMKSwgIiIpIDw8ICJmb28iOwogICBBU1NFUlRfRVhJVChy
YWlzZShTSUdVU1IyKSwgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHVVNSMiksICIiKSA8PCAi
YmFyIjsKIAogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKICAgICBBU1NFUlRf
RVhJVChfZXhpdCgwKSwgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHU0VHViksICIiKQotICAg
ICAgICA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCB0b28uIjsKKyAgICAgIDw8ICJUaGlz
IGZhaWx1cmUgaXMgZXhwZWN0ZWQsIHRvby4iOwogICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVj
dGVkLCB0b28uIik7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworIyBlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUwogCiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElO
VAogICAgIEVYUEVDVF9FWElUKHJhaXNlKFNJR1NFR1YpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29k
ZSgwKSwgIiIpCi0gICAgICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIjsKKyAgICAg
IDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIjsKICAgfSwgIlRoaXMgZmFpbHVyZSBpcyBl
eHBlY3RlZC4iKTsKIH0KIApAQCAtNjk0LDYgKzgyNSw1NyBAQCBURVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgSW52YWxpZFN0eWxlKSB7CiAgIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIik7
CiB9CiAKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEZWF0aFRlc3RGYWlsZWRPdXRwdXQpIHsK
KyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBFWFBFQ1RfREVBVEgoRGllV2l0aE1lc3NhZ2Uo
ImRlYXRoXG4iKSwKKyAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgbWVzc2FnZSIpLAorICAg
ICAgIkFjdHVhbCBtc2c6XG4iCisgICAgICAiWyAgREVBVEggICBdIGRlYXRoXG4iKTsKK30KKwor
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERlYXRoVGVzdFVuZXhwZWN0ZWRSZXR1cm5PdXRwdXQp
IHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBFWFBFQ1RfREVBVEgoeworICAgICAgICAg
IGZwcmludGYoc3RkZXJyLCAicmV0dXJuaW5nXG4iKTsKKyAgICAgICAgICBmZmx1c2goc3RkZXJy
KTsKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0sICIiKSwKKyAgICAgICIgICAgUmVzdWx0
OiBpbGxlZ2FsIHJldHVybiBpbiB0ZXN0IHN0YXRlbWVudC5cbiIKKyAgICAgICIgRXJyb3IgbXNn
OlxuIgorICAgICAgIlsgIERFQVRIICAgXSByZXR1cm5pbmdcbiIpOworfQorCitURVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgRGVhdGhUZXN0QmFkRXhpdENvZGVPdXRwdXQpIHsKKyAgdGVzdGluZzo6
R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoCisgICAgICBFWFBFQ1RfRVhJVChEaWVXaXRoTWVzc2FnZSgiZXhpdGluZyB3aXRo
IHJjIDFcbiIpLAorICAgICAgICAgICAgICAgICAgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMyks
CisgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgbWVzc2FnZSIpLAorICAgICAgIiAgICBSZXN1
bHQ6IGRpZWQgYnV0IG5vdCB3aXRoIGV4cGVjdGVkIGV4aXQgY29kZTpcbiIKKyAgICAgICIgICAg
ICAgICAgICBFeGl0ZWQgd2l0aCBleGl0IHN0YXR1cyAxXG4iCisgICAgICAiQWN0dWFsIG1zZzpc
biIKKyAgICAgICJbICBERUFUSCAgIF0gZXhpdGluZyB3aXRoIHJjIDFcbiIpOworfQorCitURVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgRGVhdGhUZXN0TXVsdGlMaW5lTWF0Y2hGYWlsKSB7CisgIHRl
c3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKAorICAgICAgRVhQRUNUX0RFQVRIKERpZVdpdGhNZXNzYWdlKCJsaW5l
IDFcbmxpbmUgMlxubGluZSAzXG4iKSwKKyAgICAgICAgICAgICAgICAgICAibGluZSAxXG54eXpc
bmxpbmUgM1xuIiksCisgICAgICAiQWN0dWFsIG1zZzpcbiIKKyAgICAgICJbICBERUFUSCAgIF0g
bGluZSAxXG4iCisgICAgICAiWyAgREVBVEggICBdIGxpbmUgMlxuIgorICAgICAgIlsgIERFQVRI
ICAgXSBsaW5lIDNcbiIpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRGVhdGhUZXN0
TXVsdGlMaW5lTWF0Y2hQYXNzKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9z
dHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9ERUFUSChEaWVXaXRoTWVzc2FnZSgibGluZSAxXG5s
aW5lIDJcbmxpbmUgM1xuIiksCisgICAgICAgICAgICAgICAibGluZSAxXG5saW5lIDJcbmxpbmUg
M1xuIik7Cit9CisKIC8vIEEgRGVhdGhUZXN0RmFjdG9yeSB0aGF0IHJldHVybnMgTW9ja0RlYXRo
VGVzdHMuCiBjbGFzcyBNb2NrRGVhdGhUZXN0RmFjdG9yeSA6IHB1YmxpYyBEZWF0aFRlc3RGYWN0
b3J5IHsKICBwdWJsaWM6CkBAIC03MDksOSArODkxLDkgQEAgY2xhc3MgTW9ja0RlYXRoVGVzdEZh
Y3RvcnkgOiBwdWJsaWMgRGVhdGhUZXN0RmFjdG9yeSB7CiAgIC8vIEFjY2Vzc29ycy4KICAgaW50
IEFzc3VtZVJvbGVDYWxscygpIGNvbnN0IHsgcmV0dXJuIGFzc3VtZV9yb2xlX2NhbGxzXzsgfQog
ICBpbnQgV2FpdENhbGxzKCkgY29uc3QgeyByZXR1cm4gd2FpdF9jYWxsc187IH0KLSAgaW50IFBh
c3NlZENhbGxzKCkgY29uc3QgeyByZXR1cm4gcGFzc2VkX2FyZ3NfLnNpemUoKTsgfQorICBzaXpl
X3QgUGFzc2VkQ2FsbHMoKSBjb25zdCB7IHJldHVybiBwYXNzZWRfYXJnc18uc2l6ZSgpOyB9CiAg
IGJvb2wgUGFzc2VkQXJndW1lbnQoaW50IG4pIGNvbnN0IHsgcmV0dXJuIHBhc3NlZF9hcmdzX1tu
XTsgfQotICBpbnQgQWJvcnRDYWxscygpIGNvbnN0IHsgcmV0dXJuIGFib3J0X2FyZ3NfLnNpemUo
KTsgfQorICBzaXplX3QgQWJvcnRDYWxscygpIGNvbnN0IHsgcmV0dXJuIGFib3J0X2FyZ3NfLnNp
emUoKTsgfQogICBEZWF0aFRlc3Q6OkFib3J0UmVhc29uIEFib3J0QXJndW1lbnQoaW50IG4pIGNv
bnN0IHsKICAgICByZXR1cm4gYWJvcnRfYXJnc19bbl07CiAgIH0KQEAgLTc3Myw2ICs5NTUsNyBA
QCBjbGFzcyBNb2NrRGVhdGhUZXN0IDogcHVibGljIERlYXRoVGVzdCB7CiAgIHZpcnR1YWwgdm9p
ZCBBYm9ydChBYm9ydFJlYXNvbiByZWFzb24pIHsKICAgICBwYXJlbnRfLT5hYm9ydF9hcmdzXy5w
dXNoX2JhY2socmVhc29uKTsKICAgfQorCiAgcHJpdmF0ZToKICAgTW9ja0RlYXRoVGVzdEZhY3Rv
cnkqIGNvbnN0IHBhcmVudF87CiAgIGNvbnN0IFRlc3RSb2xlIHJvbGVfOwpAQCAtODcxLDggKzEw
NTQsOCBAQCBURVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwgTm90aGluZ0hhcHBlbnMpIHsKICAg
RVhQRUNUX0ZBTFNFKGZsYWcpOwogICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPkFzc3VtZVJvbGVD
YWxscygpKTsKICAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7Ci0gIEVYUEVD
VF9FUSgwLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5
Xy0+QWJvcnRDYWxscygpKTsKKyAgRVhQRUNUX0VRKDBVLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMo
KSk7CisgIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7CiAgIEVYUEVDVF9G
QUxTRShmYWN0b3J5Xy0+VGVzdERlbGV0ZWQoKSk7CiB9CiAKQEAgLTg4Niw5ICsxMDY5LDkgQEAg
VEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxkRXhpdHNTdWNjZXNzZnVsbHkpIHsKICAg
RVhQRUNUX0ZBTFNFKGZsYWcpOwogICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVD
YWxscygpKTsKICAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7Ci0gIEFTU0VS
VF9FUSgxLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7CisgIEFTU0VSVF9FUSgxVSwgZmFjdG9y
eV8tPlBhc3NlZENhbGxzKCkpOwogICBFWFBFQ1RfRkFMU0UoZmFjdG9yeV8tPlBhc3NlZEFyZ3Vt
ZW50KDApKTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOworICBFWFBF
Q1RfRVEoMFUsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOwogICBFWFBFQ1RfVFJVRShmYWN0b3J5
Xy0+VGVzdERlbGV0ZWQoKSk7CiB9CiAKQEAgLTkwMSw5ICsxMDg0LDkgQEAgVEVTVF9GKE1hY3Jv
TG9naWNEZWF0aFRlc3QsIENoaWxkRXhpdHNVbnN1Y2Nlc3NmdWxseSkgewogICBFWFBFQ1RfRkFM
U0UoZmxhZyk7CiAgIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOwog
ICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPldhaXRDYWxscygpKTsKLSAgQVNTRVJUX0VRKDEsIGZh
Y3RvcnlfLT5QYXNzZWRDYWxscygpKTsKKyAgQVNTRVJUX0VRKDFVLCBmYWN0b3J5Xy0+UGFzc2Vk
Q2FsbHMoKSk7CiAgIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5QYXNzZWRBcmd1bWVudCgwKSk7Ci0g
IEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKKyAgRVhQRUNUX0VRKDBVLCBm
YWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKICAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3REZWxl
dGVkKCkpOwogfQogCkBAIC05MTcsOCArMTEwMCw4IEBAIFRFU1RfRihNYWNyb0xvZ2ljRGVhdGhU
ZXN0LCBDaGlsZFBlcmZvcm1zUmV0dXJuKSB7CiAgIEVYUEVDVF9UUlVFKGZsYWcpOwogICBFWFBF
Q1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKICAgRVhQRUNUX0VRKDAsIGZh
Y3RvcnlfLT5XYWl0Q2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+UGFzc2VkQ2Fs
bHMoKSk7Ci0gIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKKyAgRVhQRUNU
X0VRKDBVLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7CisgIEVYUEVDVF9FUSgxVSwgZmFjdG9y
eV8tPkFib3J0Q2FsbHMoKSk7CiAgIEVYUEVDVF9FUShEZWF0aFRlc3Q6OlRFU1RfRU5DT1VOVEVS
RURfUkVUVVJOX1NUQVRFTUVOVCwKICAgICAgICAgICAgIGZhY3RvcnlfLT5BYm9ydEFyZ3VtZW50
KDApKTsKICAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkpOwpAQCAtOTMzLDEz
ICsxMTE2LDEzIEBAIFRFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBDaGlsZERvZXNOb3REaWUp
IHsKICAgRVhQRUNUX1RSVUUoZmxhZyk7CiAgIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1l
Um9sZUNhbGxzKCkpOwogICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPldhaXRDYWxscygpKTsKLSAg
RVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKKyAgRVhQRUNUX0VRKDBVLCBm
YWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7CiAgIC8vIFRoaXMgdGltZSB0aGVyZSBhcmUgdHdvIGNh
bGxzIHRvIEFib3J0OiBvbmUgc2luY2UgdGhlIHRlc3QgZGlkbid0CiAgIC8vIGRpZSwgYW5kIGFu
b3RoZXIgZnJvbSB0aGUgUmV0dXJuU2VudGluZWwgd2hlbiBpdCdzIGRlc3Ryb3llZC4gIFRoZQog
ICAvLyBzZW50aW5lbCBub3JtYWxseSBpc24ndCBkZXN0cm95ZWQgaWYgYSB0ZXN0IGRvZXNuJ3Qg
ZGllLCBzaW5jZQogICAvLyBfZXhpdCgyKSBpcyBjYWxsZWQgaW4gdGhhdCBjYXNlIGJ5IEZvcmtp
bmdEZWF0aFRlc3QsIGJ1dCBub3QgYnkKICAgLy8gb3VyIE1vY2tEZWF0aFRlc3QuCi0gIEFTU0VS
VF9FUSgyLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKKyAgQVNTRVJUX0VRKDJVLCBmYWN0b3J5
Xy0+QWJvcnRDYWxscygpKTsKICAgRVhQRUNUX0VRKERlYXRoVGVzdDo6VEVTVF9ESURfTk9UX0RJ
RSwKICAgICAgICAgICAgIGZhY3RvcnlfLT5BYm9ydEFyZ3VtZW50KDApKTsKICAgRVhQRUNUX0VR
KERlYXRoVGVzdDo6VEVTVF9FTkNPVU5URVJFRF9SRVRVUk5fU1RBVEVNRU5ULApAQCAtOTc0LDcg
KzExNTcsNyBAQCBURVNUKEdldExhc3RFcnJub0Rlc2NyaXB0aW9uLCBHZXRMYXN0RXJybm9EZXNj
cmlwdGlvbldvcmtzKSB7CiAgIEVYUEVDVF9TVFJFUSgiIiwgR2V0TGFzdEVycm5vRGVzY3JpcHRp
b24oKS5jX3N0cigpKTsKIH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1Nf
V0lORE9XUwogVEVTVChBdXRvSGFuZGxlVGVzdCwgQXV0b0hhbmRsZVdvcmtzKSB7CiAgIEhBTkRM
RSBoYW5kbGUgPSA6OkNyZWF0ZUV2ZW50KE5VTEwsIEZBTFNFLCBGQUxTRSwgTlVMTCk7CiAgIEFT
U0VSVF9ORShJTlZBTElEX0hBTkRMRV9WQUxVRSwgaGFuZGxlKTsKQEAgLTk5OSw0NiArMTE4Miw0
NSBAQCBURVNUKEF1dG9IYW5kbGVUZXN0LCBBdXRvSGFuZGxlV29ya3MpIHsKICAgdGVzdGluZzo6
aW50ZXJuYWw6OkF1dG9IYW5kbGUgYXV0b19oYW5kbGUyOwogICBFWFBFQ1RfRVEoSU5WQUxJRF9I
QU5ETEVfVkFMVUUsIGF1dG9faGFuZGxlMi5HZXQoKSk7CiB9Ci0jZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAotI2lmIEdURVNUX09TX1dJ
TkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lORE9XUwogdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IEJp
Z2dlc3RQYXJzYWJsZTsKIHR5cGVkZWYgc2lnbmVkIF9faW50NjQgQmlnZ2VzdFNpZ25lZFBhcnNh
YmxlOwotY29uc3QgQmlnZ2VzdFBhcnNhYmxlIGtCaWdnZXN0UGFyc2FibGVNYXggPSBVTExPTkdf
TUFYOwotY29uc3QgQmlnZ2VzdFBhcnNhYmxlIGtCaWdnZXN0U2lnbmVkUGFyc2FibGVNYXggPSBM
TE9OR19NQVg7Ci0jZWxzZQorIyBlbHNlCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBCaWdn
ZXN0UGFyc2FibGU7CiB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgQmlnZ2VzdFNpZ25lZFBhcnNh
YmxlOwotY29uc3QgQmlnZ2VzdFBhcnNhYmxlIGtCaWdnZXN0UGFyc2FibGVNYXggPQotICAgIDo6
c3RkOjpudW1lcmljX2xpbWl0czxCaWdnZXN0UGFyc2FibGU+OjptYXgoKTsKLWNvbnN0IEJpZ2dl
c3RTaWduZWRQYXJzYWJsZSBrQmlnZ2VzdFNpZ25lZFBhcnNhYmxlTWF4ID0KLSAgICA6OnN0ZDo6
bnVtZXJpY19saW1pdHM8QmlnZ2VzdFNpZ25lZFBhcnNhYmxlPjo6bWF4KCk7Ci0jZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworLy8gV2Ug
Y2Fubm90IHVzZSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSBhcyBpdCBjbGFzaGVzIHdp
dGggdGhlCisvLyBtYXgoKSBtYWNybyBkZWZpbmVkIGJ5IDx3aW5kb3dzLmg+LgorY29uc3QgQmln
Z2VzdFBhcnNhYmxlIGtCaWdnZXN0UGFyc2FibGVNYXggPSBVTExPTkdfTUFYOworY29uc3QgQmln
Z2VzdFNpZ25lZFBhcnNhYmxlIGtCaWdnZXN0U2lnbmVkUGFyc2FibGVNYXggPSBMTE9OR19NQVg7
CiAKIFRFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgUmVqZWN0c0ludmFsaWRGb3JtYXQpIHsK
ICAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7CiAKICAgLy8gUmVqZWN0cyBub24tbnVtYmVy
cy4KLSAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIm5vbi1udW1iZXIg
c3RyaW5nIiksICZyZXN1bHQpKTsKKyAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcigi
bm9uLW51bWJlciBzdHJpbmciLCAmcmVzdWx0KSk7CiAKICAgLy8gUmVqZWN0cyBudW1iZXJzIHdp
dGggd2hpdGVzcGFjZSBwcmVmaXguCi0gIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIo
U3RyaW5nKCIgMTIzIiksICZyZXN1bHQpKTsKKyAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51
bWJlcigiIDEyMyIsICZyZXN1bHQpKTsKIAogICAvLyBSZWplY3RzIG5lZ2F0aXZlIG51bWJlcnMu
Ci0gIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCItMTIzIiksICZyZXN1
bHQpKTsKKyAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcigiLTEyMyIsICZyZXN1bHQp
KTsKIAogICAvLyBSZWplY3RzIG51bWJlcnMgc3RhcnRpbmcgd2l0aCBhIHBsdXMgc2lnbi4KLSAg
RVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIisxMjMiKSwgJnJlc3VsdCkp
OworICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCIrMTIzIiwgJnJlc3VsdCkpOwog
ICBlcnJubyA9IDA7CiB9CiAKIFRFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgUmVqZWN0c092
ZXJmbG93bk51bWJlcnMpIHsKICAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7CiAKLSAgRVhQ
RUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIjk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5IiksICZyZXN1bHQpKTsKKyAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcigiOTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTkiLCAmcmVzdWx0KSk7CiAKICAgc2lnbmVkIGNoYXIgY2hhcl9y
ZXN1bHQgPSAwOwotICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygiMjAw
IiksICZjaGFyX3Jlc3VsdCkpOworICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCIy
MDAiLCAmY2hhcl9yZXN1bHQpKTsKICAgZXJybm8gPSAwOwogfQogCkBAIC0xMDQ2LDE2ICsxMjI4
LDE2IEBAIFRFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgQWNjZXB0c1ZhbGlkTnVtYmVycykg
ewogICBCaWdnZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsKIAogICByZXN1bHQgPSAwOwotICBBU1NF
UlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCIxMjMiKSwgJnJlc3VsdCkpOworICBB
U1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjEyMyIsICZyZXN1bHQpKTsKICAgRVhQRUNU
X0VRKDEyM1UsIHJlc3VsdCk7CiAKICAgLy8gQ2hlY2sgMCBhcyBhbiBlZGdlIGNhc2UuCiAgIHJl
c3VsdCA9IDE7Ci0gIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIjAiKSwg
JnJlc3VsdCkpOworICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjAiLCAmcmVzdWx0
KSk7CiAgIEVYUEVDVF9FUSgwVSwgcmVzdWx0KTsKIAogICByZXN1bHQgPSAxOwotICBBU1NFUlRf
VFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCIwMDAwMCIpLCAmcmVzdWx0KSk7CisgIEFT
U0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcigiMDAwMDAiLCAmcmVzdWx0KSk7CiAgIEVYUEVD
VF9FUSgwVSwgcmVzdWx0KTsKIH0KIApAQCAtMTA5MSwyMiArMTI3MywyMiBAQCBURVNUKFBhcnNl
TmF0dXJhbE51bWJlclRlc3QsIEFjY2VwdHNUeXBlTGltaXRzKSB7CiAKIFRFU1QoUGFyc2VOYXR1
cmFsTnVtYmVyVGVzdCwgV29ya3NGb3JTaG9ydGVySW50ZWdlcnMpIHsKICAgc2hvcnQgc2hvcnRf
cmVzdWx0ID0gMDsKLSAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygiMTIz
IiksICZzaG9ydF9yZXN1bHQpKTsKKyAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKCIx
MjMiLCAmc2hvcnRfcmVzdWx0KSk7CiAgIEVYUEVDVF9FUSgxMjMsIHNob3J0X3Jlc3VsdCk7CiAK
ICAgc2lnbmVkIGNoYXIgY2hhcl9yZXN1bHQgPSAwOwotICBBU1NFUlRfVFJVRShQYXJzZU5hdHVy
YWxOdW1iZXIoU3RyaW5nKCIxMjMiKSwgJmNoYXJfcmVzdWx0KSk7CisgIEFTU0VSVF9UUlVFKFBh
cnNlTmF0dXJhbE51bWJlcigiMTIzIiwgJmNoYXJfcmVzdWx0KSk7CiAgIEVYUEVDVF9FUSgxMjMs
IGNoYXJfcmVzdWx0KTsKIH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1Nf
V0lORE9XUwogVEVTVChFbnZpcm9ubWVudFRlc3QsIEhhbmRsZUZpdHNJbnRvU2l6ZVQpIHsKICAg
Ly8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogUmVtb3ZlIHRoaXMgdGVzdCBhZnRlciB0aGlzIGNv
bmRpdGlvbiBpcyB2ZXJpZmllZAogICAvLyBpbiBhIHN0YXRpYyBhc3NlcnRpb24gaW4gZ3Rlc3Qt
ZGVhdGgtdGVzdC5jYyBpbiB0aGUgZnVuY3Rpb24KICAgLy8gR2V0U3RhdHVzRmlsZURlc2NyaXB0
b3IuCiAgIEFTU0VSVF9UUlVFKHNpemVvZihIQU5ETEUpIDw9IHNpemVvZihzaXplX3QpKTsKIH0K
LSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9X
UwogCiAvLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQvQVNTRVJUX0RFQVRI
X0lGX1NVUFBPUlRFRCB0cmlnZ2VyCiAvLyBmYWlsdXJlcyB3aGVuIGRlYXRoIHRlc3RzIGFyZSBh
dmFpbGFibGUgb24gdGhlIHN5c3RlbS4KQEAgLTExMjEsMTEgKzEzMDMsMzAgQEAgVEVTVChDb25k
aXRpb25hbERlYXRoTWFjcm9zRGVhdGhUZXN0LCBFeHBlY3RzRGVhdGhXaGVuRGVhdGhUZXN0c0F2
YWlsYWJsZSkgewogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfREVBVEhfSUZfU1VQUE9S
VEVEKDssICIiKSwgIiIpOwogfQogCi0jZWxzZQorVEVTVChJbkRlYXRoVGVzdENoaWxkRGVhdGhU
ZXN0LCBSZXBvcnRzRGVhdGhUZXN0Q29ycmVjdGx5SW5GYXN0U3R5bGUpIHsKKyAgdGVzdGluZzo6
R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAgRVhQRUNUX0ZBTFNFKElu
RGVhdGhUZXN0Q2hpbGQoKSk7CisgIEVYUEVDVF9ERUFUSCh7CisgICAgZnByaW50ZihzdGRlcnIs
IEluRGVhdGhUZXN0Q2hpbGQoKSA/ICJJbnNpZGUiIDogIk91dHNpZGUiKTsKKyAgICBmZmx1c2go
c3RkZXJyKTsKKyAgICBfZXhpdCgxKTsKKyAgfSwgIkluc2lkZSIpOworfQorCitURVNUKEluRGVh
dGhUZXN0Q2hpbGREZWF0aFRlc3QsIFJlcG9ydHNEZWF0aFRlc3RDb3JyZWN0bHlJblRocmVhZFNh
ZmVTdHlsZSkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRo
cmVhZHNhZmUiOworICBFWFBFQ1RfRkFMU0UoSW5EZWF0aFRlc3RDaGlsZCgpKTsKKyAgRVhQRUNU
X0RFQVRIKHsKKyAgICBmcHJpbnRmKHN0ZGVyciwgSW5EZWF0aFRlc3RDaGlsZCgpID8gIkluc2lk
ZSIgOiAiT3V0c2lkZSIpOworICAgIGZmbHVzaChzdGRlcnIpOworICAgIF9leGl0KDEpOworICB9
LCAiSW5zaWRlIik7Cit9CisKKyNlbHNlICAvLyAhR1RFU1RfSEFTX0RFQVRIX1RFU1QgZm9sbG93
cwogCiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q2FwdHVyZVN0ZGVycjsKIHVzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpHZXRDYXB0dXJlZFN0ZGVycjsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjpTdHJpbmc7CiAKIC8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRC9BU1NF
UlRfREVBVEhfSUZfU1VQUE9SVEVEIGFyZSBzdGlsbAogLy8gZGVmaW5lZCBidXQgZG8gbm90IHRy
aWdnZXIgZmFpbHVyZXMgd2hlbiBkZWF0aCB0ZXN0cyBhcmUgbm90IGF2YWlsYWJsZSBvbgpAQCAt
MTEzNSw3ICsxMzM2LDcgQEAgVEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zVGVzdCwgV2FybnNX
aGVuRGVhdGhUZXN0c05vdEF2YWlsYWJsZSkgewogICAvLyB3aGVuIGRlYXRoIHRlc3RzIGFyZSBu
b3Qgc3VwcG9ydGVkLgogICBDYXB0dXJlU3RkZXJyKCk7CiAgIEVYUEVDVF9ERUFUSF9JRl9TVVBQ
T1JURUQoOywgIiIpOwotICBTdHJpbmcgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKKyAg
c3RkOjpzdHJpbmcgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKICAgQVNTRVJUX1RSVUUo
TlVMTCAhPSBzdHJzdHIob3V0cHV0LmNfc3RyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJEZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikpOwog
ICBBU1NFUlRfVFJVRShOVUxMICE9IHN0cnN0cihvdXRwdXQuY19zdHIoKSwgIjsiKSk7CkBAIC0x
MTcxLDcgKzEzNzIsOCBAQCBURVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NUZXN0LCBBc3NlcnRE
ZWF0RG9lc05vdFJldHVybmhJZlVuc3VwcG9ydGVkKSB7CiAgIEZ1bmNXaXRoQXNzZXJ0KCZuKTsK
ICAgRVhQRUNUX0VRKDEsIG4pOwogfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAor
CisjZW5kaWYgIC8vICFHVEVTVF9IQVNfREVBVEhfVEVTVAogCiAvLyBUZXN0cyB0aGF0IHRoZSBk
ZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29kZSB3aGljaCBtYXkgb3IgbWF5IG5vdAogLy8g
YmUgZm9sbG93ZWQgYnkgb3BlcmF0b3I8PCwgYW5kIHRoYXQgaW4gZWl0aGVyIGNhc2UgdGhlIGNv
bXBsZXRlIHRleHQKQEAgLTEyMDIsMTIgKzE0MDQsOSBAQCBURVNUKENvbmRpdGlvbmFsRGVhdGhN
YWNyb3NTeW50YXhEZWF0aFRlc3QsIFNpbmdsZVN0YXRlbWVudCkgewogLy8gVGVzdHMgdGhhdCBj
b25kaXRpb25hbCBkZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29kZSB3aGljaCBpbnRlcmFj
dHMKIC8vIHdlbGwgd2l0aCBzd2l0Y2ggc3RhdGVtZW50cy4KIFRFU1QoQ29uZGl0aW9uYWxEZWF0
aE1hY3Jvc1N5bnRheERlYXRoVGVzdCwgU3dpdGNoU3RhdGVtZW50KSB7Ci0vLyBNaWNyb3NvZnQg
Y29tcGlsZXIgdXN1YWxseSBjb21wbGFpbnMgYWJvdXQgc3dpdGNoIHN0YXRlbWVudHMgd2l0aG91
dAotLy8gY2FzZSBsYWJlbHMuIFdlIHN1cHByZXNzIHRoYXQgd2FybmluZyBmb3IgdGhpcyB0ZXN0
LgotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2Fybmlu
ZyhkaXNhYmxlOiA0MDY1KQotI2VuZGlmICAvLyBfTVNDX1ZFUgorICAvLyBNaWNyb3NvZnQgY29t
cGlsZXIgdXN1YWxseSBjb21wbGFpbnMgYWJvdXQgc3dpdGNoIHN0YXRlbWVudHMgd2l0aG91dAor
ICAvLyBjYXNlIGxhYmVscy4gV2Ugc3VwcHJlc3MgdGhhdCB3YXJuaW5nIGZvciB0aGlzIHRlc3Qu
CisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQwNjUpCiAKICAgc3dpdGNoICgw
KQogICAgIGRlZmF1bHQ6CkBAIC0xMjE4LDkgKzE0MTcsNyBAQCBURVNUKENvbmRpdGlvbmFsRGVh
dGhNYWNyb3NTeW50YXhEZWF0aFRlc3QsIFN3aXRjaFN0YXRlbWVudCkgewogICAgIGNhc2UgMDoK
ICAgICAgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQoMSksICIiKSA8PCAiZXhpdCBp
biBzd2l0Y2ggY2FzZSI7CiAKLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHBvcCkK
LSNlbmRpZiAgLy8gX01TQ19WRVIKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygp
CiB9CiAKIC8vIFRlc3RzIHRoYXQgYSB0ZXN0IGNhc2Ugd2hvc2UgbmFtZSBlbmRzIHdpdGggIkRl
YXRoVGVzdCIgd29ya3MgZmluZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdC1maWxlcGF0aF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdC1maWxlcGF0aF90ZXN0LmNjCmluZGV4IDYyNTAyODI3NThkZmIzYzkzZjQ3ZjA5MWM1
MmEyZGJmOTJjYWNlZWIuLmRhNzI5ODY5MjZiNjg2NmEzMjQ3NjY1MzIwYmIxYjViMDAyNmQ1NjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtZmlsZXBhdGhf
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWZpbGVwYXRo
X3Rlc3QuY2MKQEAgLTM4LDggKzM4LDggQEAKIC8vIGJ1aWxkIG9yIG1ha2UtZmlsZXMgZm9yIHNv
bWUgZXhpc3RpbmcgR29vZ2xlIFRlc3QgY2xpZW50cy4gRG8gbm90CiAvLyAjaW5jbHVkZSB0aGlz
IGZpbGUgYW55d2hlcmUgZWxzZSEKIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWZp
bGVwYXRoLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRl
cm5hbC9ndGVzdC1maWxlcGF0aC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIC8vIElu
ZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0
J3MKIC8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5h
bC1pbmwuaCBpcwpAQCAtNTEsOSArNTEsOSBAQAogI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9O
XwogCiAjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSNpbmNsdWRlIDx3aW5kb3dzLmg+ICAv
LyBOT0xJTlQKKyMgaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gTk9MSU5UCiAjZWxpZiBHVEVTVF9P
U19XSU5ET1dTCi0jaW5jbHVkZSA8ZGlyZWN0Lmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8ZGly
ZWN0Lmg+ICAvLyBOT0xJTlQKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIAog
bmFtZXNwYWNlIHRlc3RpbmcgewpAQCAtOTEsMjEgKzkxLDI0IEBAIFRFU1QoR2V0Q3VycmVudERp
clRlc3QsIFJldHVybnNDdXJyZW50RGlyKSB7CiAgIGNvbnN0IEZpbGVQYXRoIGN3ZCA9IEZpbGVQ
YXRoOjpHZXRDdXJyZW50RGlyKCk7CiAgIHBvc2l4OjpDaERpcihvcmlnaW5hbF9kaXIuY19zdHIo
KSk7CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKwogICAv
LyBTa2lwcyB0aGUgIjoiLgogICBjb25zdCBjaGFyKiBjb25zdCBjd2Rfd2l0aG91dF9kcml2ZSA9
IHN0cmNocihjd2QuY19zdHIoKSwgJzonKTsKICAgQVNTRVJUX1RSVUUoY3dkX3dpdGhvdXRfZHJp
dmUgIT0gTlVMTCk7CiAgIEVYUEVDVF9TVFJFUShHVEVTVF9QQVRIX1NFUF8sIGN3ZF93aXRob3V0
X2RyaXZlICsgMSk7Ci0jZWxzZQotICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLCBjd2Qu
Y19zdHIoKSk7Ci0jZW5kaWYKKworIyBlbHNlCisKKyAgRVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQ
XywgY3dkLnN0cmluZygpKTsKKworIyBlbmRpZgogfQogCiAjZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCiAKIFRFU1QoSXNFbXB0eVRlc3QsIFJldHVybnNUcnVlRm9yRW1wdHlQYXRo
KSB7CiAgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIiKS5Jc0VtcHR5KCkpOwotICBFWFBFQ1RfVFJV
RShGaWxlUGF0aChOVUxMKS5Jc0VtcHR5KCkpOwogfQogCiBURVNUKElzRW1wdHlUZXN0LCBSZXR1
cm5zRmFsc2VGb3JOb25FbXB0eVBhdGgpIHsKQEAgLTExNywzOCArMTIwLDM4IEBAIFRFU1QoSXNF
bXB0eVRlc3QsIFJldHVybnNGYWxzZUZvck5vbkVtcHR5UGF0aCkgewogCiAvLyBSZW1vdmVEaXJl
Y3RvcnlOYW1lICIiIC0+ICIiCiBURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBXaGVuRW1w
dHlOYW1lKSB7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgRmlsZVBhdGgoIiIpLlJlbW92ZURpcmVjdG9y
eU5hbWUoKS5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKCIiLCBGaWxlUGF0aCgiIikuUmVtb3ZlRGly
ZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKIH0KIAogLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiYWZp
bGUiIC0+ICJhZmlsZSIKIFRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIEJ1dE5vRGlyZWN0
b3J5KSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWZpbGUiLAotICAgICAgRmlsZVBhdGgoImFmaWxlIiku
UmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImFmaWxlIiwKKyAg
ICAgIEZpbGVQYXRoKCJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7CiB9
CiAKIC8vIFJlbW92ZURpcmVjdG9yeU5hbWUgIi9hZmlsZSIgLT4gImFmaWxlIgogVEVTVChSZW1v
dmVEaXJlY3RvcnlOYW1lVGVzdCwgUm9vdEZpbGVTaG91bGRHaXZlRmlsZU5hbWUpIHsKLSAgRVhQ
RUNUX1NUUkVRKCJhZmlsZSIsCi0gICAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gImFmaWxl
IikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImFmaWxlIiwK
KyAgICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlO
YW1lKCkuc3RyaW5nKCkpOwogfQogCiAvLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZGlyLyIgLT4g
IiIKIFRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFdoZXJlVGhlcmVJc05vRmlsZU5hbWUp
IHsKLSAgRVhQRUNUX1NUUkVRKCIiLAotICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhf
U0VQXykuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoIiIsCisg
ICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfKS5SZW1vdmVEaXJlY3RvcnlOYW1l
KCkuc3RyaW5nKCkpOwogfQogCiAvLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZGlyL2FmaWxlIiAt
PiAiYWZpbGUiCiBURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRHaXZlRmlsZU5h
bWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAgICBGaWxlUGF0aCgiYWRpciIgR1RF
U1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0cigpKTsKKyAg
RVhQRUNUX0VRKCJhZmlsZSIsCisgICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBf
ICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7CiB9CiAKIC8vIFJlbW92
ZURpcmVjdG9yeU5hbWUgImFkaXIvc3ViZGlyL2FmaWxlIiAtPiAiYWZpbGUiCiBURVNUKFJlbW92
ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRBbHNvR2l2ZUZpbGVOYW1lKSB7Ci0gIEVYUEVDVF9T
VFJFUSgiYWZpbGUiLAorICBFWFBFQ1RfRVEoImFmaWxlIiwKICAgICAgIEZpbGVQYXRoKCJhZGly
IiBHVEVTVF9QQVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIpCi0gICAg
ICAuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOworICAgICAgLlJlbW92ZURpcmVjdG9y
eU5hbWUoKS5zdHJpbmcoKSk7CiB9CiAKICNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXwpAQCAt
MTU4LDI2ICsxNjEsMjMgQEAgVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgU2hvdWxkQWxz
b0dpdmVGaWxlTmFtZSkgewogCiAvLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCIvYWZpbGUiKSAtPiAi
YWZpbGUiCiBURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBSb290RmlsZVNob3VsZEdpdmVG
aWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoImFmaWxlIiwK
LSAgICAgICAgICAgICAgIEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCku
Y19zdHIoKSk7CisgIEVYUEVDVF9FUSgiYWZpbGUiLCBGaWxlUGF0aCgiL2FmaWxlIikuUmVtb3Zl
RGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKIH0KIAogLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgi
YWRpci8iKSAtPiAiIgogVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgV2hlcmVUaGVyZUlz
Tm9GaWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoIiIsCi0g
ICAgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci8iKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19z
dHIoKSk7CisgIEVYUEVDVF9FUSgiIiwgRmlsZVBhdGgoImFkaXIvIikuUmVtb3ZlRGlyZWN0b3J5
TmFtZSgpLnN0cmluZygpKTsKIH0KIAogLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgiYWRpci9hZmls
ZSIpIC0+ICJhZmlsZSIKIFRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEdpdmVG
aWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoImFmaWxlIiwK
LSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL2FmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFt
ZSgpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImFmaWxlIiwgRmlsZVBhdGgoImFkaXIvYWZpbGUi
KS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOwogfQogCiAvLyBSZW1vdmVEaXJlY3Rv
cnlOYW1lKCJhZGlyL3N1YmRpci9hZmlsZSIpIC0+ICJhZmlsZSIKIFRFU1QoUmVtb3ZlRGlyZWN0
b3J5TmFtZVRlc3QsIFNob3VsZEFsc29HaXZlRmlsZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3Ip
IHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiYWRp
ci9zdWJkaXIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIoKSk7CisgIEVYUEVD
VF9FUSgiYWZpbGUiLAorICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvc3ViZGlyL2FmaWxlIiku
UmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKIH0KIAogI2VuZGlmCkBAIC0xODYsMzgg
KzE4NiwzNSBAQCBURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRBbHNvR2l2ZUZp
bGVOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7CiBURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwg
RW1wdHlOYW1lKSB7CiAjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKICAgLy8gT24gV2luZG93
cyBDRSwgd2UgdXNlIHRoZSByb290IGFzIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLSAgRVhQRUNU
X1NUUkVRKEdURVNUX1BBVEhfU0VQXywKLSAgICAgIEZpbGVQYXRoKCIiKS5SZW1vdmVGaWxlTmFt
ZSgpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfLCBGaWxlUGF0aCgiIiku
UmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7CiAjZWxzZQotICBFWFBFQ1RfU1RSRVEoIi4iIEdU
RVNUX1BBVEhfU0VQXywKLSAgICAgIEZpbGVQYXRoKCIiKS5SZW1vdmVGaWxlTmFtZSgpLmNfc3Ry
KCkpOworICBFWFBFQ1RfRVEoIi4iIEdURVNUX1BBVEhfU0VQXywgRmlsZVBhdGgoIiIpLlJlbW92
ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOwogI2VuZGlmCiB9CiAKIC8vIFJlbW92ZUZpbGVOYW1lICJh
ZGlyLyIgLT4gImFkaXIvIgogVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEJ1dE5vRmlsZSkgewot
ICBFWFBFQ1RfU1RSRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXywKLSAgICAgIEZpbGVQYXRoKCJh
ZGlyIiBHVEVTVF9QQVRIX1NFUF8pLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7CisgIEVYUEVD
VF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNU
X1BBVEhfU0VQXykuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7CiB9CiAKIC8vIFJlbW92ZUZp
bGVOYW1lICJhZGlyL2FmaWxlIiAtPiAiYWRpci8iCiBURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwg
R2l2ZXNEaXJOYW1lKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAot
ICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKQotICAgICAgLlJl
bW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9T
RVBfLAorICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUi
KS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKIH0KIAogLy8gUmVtb3ZlRmlsZU5hbWUgImFk
aXIvc3ViZGlyL2FmaWxlIiAtPiAiYWRpci9zdWJkaXIvIgogVEVTVChSZW1vdmVGaWxlTmFtZVRl
c3QsIEdpdmVzRGlyQW5kU3ViRGlyTmFtZSkgewotICBFWFBFQ1RfU1RSRVEoImFkaXIiIEdURVNU
X1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8sCisgIEVYUEVDVF9FUSgiYWRpciIg
R1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXywKICAgICAgIEZpbGVQYXRo
KCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIp
Ci0gICAgICAuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKKyAgICAgIC5SZW1vdmVGaWxlTmFt
ZSgpLnN0cmluZygpKTsKIH0KIAogLy8gUmVtb3ZlRmlsZU5hbWUgIi9hZmlsZSIgLT4gIi8iCiBU
RVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNSb290RGlyKSB7Ci0gIEVYUEVDVF9TVFJFUShH
VEVTVF9QQVRIX1NFUF8sCi0gICAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gImFmaWxlIiku
UmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQXywK
KyAgICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgp
LnN0cmluZygpKTsKIH0KIAogI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCkBAIC0yMjcsMjYg
KzIyNCwyNSBAQCBURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNSb290RGlyKSB7CiAKIC8v
IFJlbW92ZUZpbGVOYW1lKCJhZGlyLyIpIC0+ICJhZGlyLyIKIFRFU1QoUmVtb3ZlRmlsZU5hbWVU
ZXN0LCBCdXROb0ZpbGVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCJh
ZGlyIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci8iKS5S
ZW1vdmVGaWxlTmFtZSgpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImFkaXIiIEdURVNUX1BBVEhf
U0VQXywKKyAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyLyIpLlJlbW92ZUZpbGVOYW1lKCkuc3Ry
aW5nKCkpOwogfQogCiAvLyBSZW1vdmVGaWxlTmFtZSgiYWRpci9hZmlsZSIpIC0+ICJhZGlyLyIK
IFRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc0Rpck5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0
b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICAgICAg
ICAgICBGaWxlUGF0aCgiYWRpci9hZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Cisg
IEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgo
ImFkaXIvYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKIH0KIAogLy8gUmVtb3Zl
RmlsZU5hbWUoImFkaXIvc3ViZGlyL2FmaWxlIikgLT4gImFkaXIvc3ViZGlyLyIKIFRFU1QoUmVt
b3ZlRmlsZU5hbWVUZXN0LCBHaXZlc0RpckFuZFN1YkRpck5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0
b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gInN1YmRpciIgR1RF
U1RfUEFUSF9TRVBfLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvc3ViZGlyL2FmaWxl
IikuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKCJhZGlyIiBHVEVTVF9Q
QVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgo
ImFkaXIvc3ViZGlyL2FmaWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7CiB9CiAKIC8v
IFJlbW92ZUZpbGVOYW1lKCIvYWZpbGUiKSAtPiAiXCIKIFRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0
LCBHaXZlc1Jvb3REaXJGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKEdU
RVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1vdmVG
aWxlTmFtZSgpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfLCBGaWxlUGF0
aCgiL2FmaWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7CiB9CiAKICNlbmRpZgpAQCAt
MjU0LDEyNSArMjUwLDEyMCBAQCBURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNSb290RGly
Rm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7CiBURVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRl
V2hlbk51bWJlcklzWmVybykgewogICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZp
bGVOYW1lKEZpbGVQYXRoKCJmb28iKSwgRmlsZVBhdGgoImJhciIpLAogICAgICAgMCwgInhtbCIp
OwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFs
LmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwg
YWN0dWFsLnN0cmluZygpKTsKIH0KIAogVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZUZp
bGVOYW1lTnVtYmVyR3RaZXJvKSB7CiAgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtl
RmlsZU5hbWUoRmlsZVBhdGgoImZvbyIpLCBGaWxlUGF0aCgiYmFyIiksCiAgICAgICAxMiwgInht
bCIpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXJfMTIueG1sIiwg
YWN0dWFsLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXJf
MTIueG1sIiwgYWN0dWFsLnN0cmluZygpKTsKIH0KIAogVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBH
ZW5lcmF0ZUZpbGVOYW1lV2l0aFNsYXNoTnVtYmVySXNaZXJvKSB7CiAgIEZpbGVQYXRoIGFjdHVh
bCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBf
KSwKICAgICAgIEZpbGVQYXRoKCJiYXIiKSwgMCwgInhtbCIpOwotICBFWFBFQ1RfU1RSRVEoImZv
byIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFsLmNfc3RyKCkpOworICBFWFBFQ1Rf
RVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFsLnN0cmluZygpKTsKIH0K
IAogVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZUZpbGVOYW1lV2l0aFNsYXNoTnVtYmVy
R3RaZXJvKSB7CiAgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmls
ZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKSwKICAgICAgIEZpbGVQYXRoKCJiYXIiKSwgMTIs
ICJ4bWwiKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyXzEyLnht
bCIsIGFjdHVhbC5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAi
YmFyXzEyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7CiB9CiAKIFRFU1QoTWFrZUZpbGVOYW1lVGVz
dCwgR2VuZXJhdGVXaGVuTnVtYmVySXNaZXJvQW5kRGlySXNFbXB0eSkgewogICBGaWxlUGF0aCBh
Y3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCIiKSwgRmlsZVBhdGgoImJh
ciIpLAogICAgICAgMCwgInhtbCIpOwotICBFWFBFQ1RfU1RSRVEoImJhci54bWwiLCBhY3R1YWwu
Y19zdHIoKSk7CisgIEVYUEVDVF9FUSgiYmFyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7CiB9CiAK
IFRFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVySXNOb3RaZXJvQW5kRGly
SXNFbXB0eSkgewogICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZp
bGVQYXRoKCIiKSwgRmlsZVBhdGgoImJhciIpLAogICAgICAgMTQsICJ4bWwiKTsKLSAgRVhQRUNU
X1NUUkVRKCJiYXJfMTQueG1sIiwgYWN0dWFsLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImJhcl8x
NC54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOwogfQogCiBURVNUKENvbmNhdFBhdGhzVGVzdCwgV29y
a3NXaGVuRGlyRG9lc05vdEVuZFdpdGhQYXRoU2VwKSB7CiAgIEZpbGVQYXRoIGFjdHVhbCA9IEZp
bGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiYmFyLnhtbCIpKTsKLSAgRVhQRUNUX1NU
UkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKKyAg
RVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVhbC5zdHJpbmco
KSk7CiB9CiAKIFRFU1QoQ29uY2F0UGF0aHNUZXN0LCBXb3Jrc1doZW5QYXRoMUVuZHNXaXRoUGF0
aFNlcCkgewogICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBh
dGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZpbGVQYXRoKCJiYXIueG1sIikpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIg
R1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFsLmNfc3RyKCkpOworICBFWFBFQ1RfRVEo
ImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFsLnN0cmluZygpKTsKIH0KIAog
VEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgxQmVpbmdFbXB0eSkgewogICBGaWxlUGF0aCBhY3R1
YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoIiIpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJhci54bWwiKSk7Ci0gIEVYUEVD
VF9TVFJFUSgiYmFyLnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKCJiYXIueG1s
IiwgYWN0dWFsLnN0cmluZygpKTsKIH0KIAogVEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgyQmVp
bmdFbXB0eSkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmls
ZVBhdGgoImZvbyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RmlsZVBhdGgoIiIpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXywgYWN0
dWFsLmNfc3RyKCkpOworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMo
RmlsZVBhdGgoImZvbyIpLCBGaWxlUGF0aCgiIikpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1Rf
UEFUSF9TRVBfLCBhY3R1YWwuc3RyaW5nKCkpOwogfQogCiBURVNUKENvbmNhdFBhdGhzVGVzdCwg
Qm90aFBhdGhCZWluZ0VtcHR5KSB7CiAgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25j
YXRQYXRocyhGaWxlUGF0aCgiIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGaWxlUGF0aCgiIikpOwotICBFWFBFQ1RfU1RSRVEoIiIsIGFjdHVhbC5jX3N0cigp
KTsKKyAgRVhQRUNUX0VRKCIiLCBhY3R1YWwuc3RyaW5nKCkpOwogfQogCiBURVNUKENvbmNhdFBh
dGhzVGVzdCwgUGF0aDFDb250YWluc1BhdGhTZXApIHsKICAgRmlsZVBhdGggYWN0dWFsID0gRmls
ZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9v
YmFyLnhtbCIpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBH
VEVTVF9QQVRIX1NFUF8gImZvb2Jhci54bWwiLAotICAgICAgICAgICAgICAgYWN0dWFsLmNfc3Ry
KCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhf
U0VQXyAiZm9vYmFyLnhtbCIsCisgICAgICAgICAgICBhY3R1YWwuc3RyaW5nKCkpOwogfQogCiBU
RVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDJDb250YWluc1BhdGhTZXApIHsKICAgRmlsZVBhdGgg
YWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKAogICAgICAgRmlsZVBhdGgoImZvbyIgR1RF
U1RfUEFUSF9TRVBfKSwKICAgICAgIEZpbGVQYXRoKCJiYXIiIEdURVNUX1BBVEhfU0VQXyAiYmFy
LnhtbCIpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBHVEVT
VF9QQVRIX1NFUF8gImJhci54bWwiLAotICAgICAgICAgICAgICAgYWN0dWFsLmNfc3RyKCkpOwor
ICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXyAi
YmFyLnhtbCIsCisgICAgICAgICAgICBhY3R1YWwuc3RyaW5nKCkpOwogfQogCiBURVNUKENvbmNh
dFBhdGhzVGVzdCwgUGF0aDJFbmRzV2l0aFBhdGhTZXApIHsKICAgRmlsZVBhdGggYWN0dWFsID0g
RmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJiYXIiIEdURVNUX1BBVEhfU0VQXykp
OwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhf
U0VQXywgYWN0dWFsLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBf
ICJiYXIiIEdURVNUX1BBVEhfU0VQXywgYWN0dWFsLnN0cmluZygpKTsKIH0KIAogLy8gUmVtb3Zl
VHJhaWxpbmdQYXRoU2VwYXJhdG9yICIiIC0+ICIiCiBURVNUKFJlbW92ZVRyYWlsaW5nUGF0aFNl
cGFyYXRvclRlc3QsIEVtcHR5U3RyaW5nKSB7Ci0gIEVYUEVDVF9TVFJFUSgiIiwKLSAgICAgIEZp
bGVQYXRoKCIiKS5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKKyAgRVhQ
RUNUX0VRKCIiLCBGaWxlUGF0aCgiIikuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuc3Ry
aW5nKCkpOwogfQogCiAvLyBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IgImZvbyIgLT4gImZv
byIKIFRFU1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgRmlsZU5vU2xhc2hTdHJp
bmcpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28iLAotICAgICAgRmlsZVBhdGgoImZvbyIpLlJlbW92
ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImZvbyIsIEZp
bGVQYXRoKCJmb28iKS5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5zdHJpbmcoKSk7CiB9
CiAKIC8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiZm9vLyIgLT4gImZvbyIKIFRFU1Qo
UmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgU2hvdWxkUmVtb3ZlVHJhaWxpbmdTZXBh
cmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKAotICAgICAgImZvbyIsCi0gICAgICBGaWxlUGF0aCgi
Zm9vIiBHVEVTVF9QQVRIX1NFUF8pLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLmNfc3Ry
KCkpOworICBFWFBFQ1RfRVEoImZvbyIsCisgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRI
X1NFUF8pLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKICNpZiBHVEVT
VF9IQVNfQUxUX1BBVEhfU0VQXwotICBFWFBFQ1RfU1RSRVEoImZvbyIsCi0gICAgICAgICAgICAg
ICBGaWxlUGF0aCgiZm9vLyIpLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLmNfc3RyKCkp
OworICBFWFBFQ1RfRVEoImZvbyIsIEZpbGVQYXRoKCJmb28vIikuUmVtb3ZlVHJhaWxpbmdQYXRo
U2VwYXJhdG9yKCkuc3RyaW5nKCkpOwogI2VuZGlmCiB9CiAKIC8vIFJlbW92ZVRyYWlsaW5nUGF0
aFNlcGFyYXRvciAiZm9vL2Jhci8iIC0+ICJmb28vYmFyLyIKIFRFU1QoUmVtb3ZlVHJhaWxpbmdQ
YXRoU2VwYXJhdG9yVGVzdCwgU2hvdWxkUmVtb3ZlTGFzdFNlcGFyYXRvcikgewotICBFWFBFQ1Rf
U1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgICAgICAgICAgICAgRmlsZVBh
dGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXykKLSAgICAgICAg
ICAgICAgIC5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKKyAgRVhQRUNU
X0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKKyAgICAgICAgICAgIEZpbGVQYXRoKCJm
b28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBHVEVTVF9QQVRIX1NFUF8pCisgICAgICAgICAgICAg
ICAgLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKIH0KIAogLy8gUmVt
b3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28vYmFyIiAtPiAiZm9vL2JhciIKIFRFU1QoUmVt
b3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgU2hvdWxkUmV0dXJuVW5tb2RpZmllZCkgewot
ICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgICAgICAgICAg
ICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiKQotICAgICAgICAgICAgICAg
LlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImZv
byIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RF
U1RfUEFUSF9TRVBfICJiYXIiKQorICAgICAgICAgICAgICAgIC5SZW1vdmVUcmFpbGluZ1BhdGhT
ZXBhcmF0b3IoKS5zdHJpbmcoKSk7CiB9CiAKIFRFU1QoRGlyZWN0b3J5VGVzdCwgUm9vdERpcmVj
dG9yeUV4aXN0cykgewpAQCAtNDE1LDUwICs0MDYsNDcgQEAgVEVTVChEaXJlY3RvcnlUZXN0LCBF
bXB0eVBhdGhEaXJlY3RvcnlEb2VzTm90RXhpc3QpIHsKIAogVEVTVChEaXJlY3RvcnlUZXN0LCBD
dXJyZW50RGlyZWN0b3J5RXhpc3RzKSB7CiAjaWYgR1RFU1RfT1NfV0lORE9XUyAgLy8gV2UgYXJl
IG9uIFdpbmRvd3MuCi0jaWZuZGVmIF9XSU4zMl9DRSAgLy8gV2luZG93cyBDRSBkb2Vzbid0IGhh
dmUgYSBjdXJyZW50IGRpcmVjdG9yeS4KKyMgaWZuZGVmIF9XSU4zMl9DRSAgLy8gV2luZG93cyBD
RSBkb2Vzbid0IGhhdmUgYSBjdXJyZW50IGRpcmVjdG9yeS4KKwogICBFWFBFQ1RfVFJVRShGaWxl
UGF0aCgiLiIpLkRpcmVjdG9yeUV4aXN0cygpKTsKICAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi5c
XCIpLkRpcmVjdG9yeUV4aXN0cygpKTsKLSNlbmRpZiAgLy8gX1dJTjMyX0NFCisKKyMgZW5kaWYg
IC8vIF9XSU4zMl9DRQogI2Vsc2UKICAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi4iKS5EaXJlY3Rv
cnlFeGlzdHMoKSk7CiAgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIuLyIpLkRpcmVjdG9yeUV4aXN0
cygpKTsKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogfQogCi1URVNUKE5vcm1hbGl6ZVRl
c3QsIE51bGxTdHJpbmdzRXF1YWxFbXB0eURpcmVjdG9yeSkgewotICBFWFBFQ1RfU1RSRVEoIiIs
IEZpbGVQYXRoKE5VTEwpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIEZpbGVQYXRoKFN0
cmluZyhOVUxMKSkuY19zdHIoKSk7Ci19Ci0KIC8vICJmb28vYmFyIiA9PSBmb28vL2JhciIgPT0g
ImZvby8vL2JhciIKIFRFU1QoTm9ybWFsaXplVGVzdCwgTXVsdGlwbGVDb25zZWN1dGl2ZVNlcGFw
YXJhdG9yc0luTWlkc3RyaW5nKSB7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8gImJhciIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8g
ImJhciIpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJi
YXIiLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfIEdURVNU
X1BBVEhfU0VQXyAiYmFyIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8gImJhciIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRI
X1NFUF8gR1RFU1RfUEFUSF9TRVBfCi0gICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRI
X1NFUF8gImJhciIpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBf
ICJiYXIiLAorICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIi
KS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCisg
ICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBf
ICJiYXIiKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJh
ciIsCisgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFU
SF9TRVBfCisgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8gImJhciIpLnN0cmlu
ZygpKTsKIH0KIAogLy8gIi9iYXIiID09IC8vYmFyIiA9PSAiLy8vYmFyIgogVEVTVChOb3JtYWxp
emVUZXN0LCBNdWx0aXBsZUNvbnNlY3V0aXZlU2VwYXBhcmF0b3JzQXRTdHJpbmdTdGFydCkgewot
ICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgIEZpbGVQYXRoKEdURVNU
X1BBVEhfU0VQXyAiYmFyIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUShHVEVTVF9QQVRIX1NF
UF8gImJhciIsCi0gICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAi
YmFyIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUShHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0g
ICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NF
UF8gImJhciIpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAor
ICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOworICBFWFBFQ1Rf
RVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyBH
VEVTVF9QQVRIX1NFUF8gImJhciIpLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKEdURVNUX1BBVEhf
U0VQXyAiYmFyIiwKKyAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBf
IEdURVNUX1BBVEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOwogfQogCiAvLyAiZm9vLyIgPT0gZm9v
Ly8iID09ICJmb28vLy8iCiBURVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRpcGxlQ29uc2VjdXRpdmVT
ZXBhcGFyYXRvcnNBdFN0cmluZ0VuZCkgewotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFU
SF9TRVBfLAotICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXykuY19zdHIoKSk7Ci0g
IEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgRmlsZVBhdGgoImZvbyIg
R1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXykuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJF
USgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9T
RVBfIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8pLmNfc3RyKCkpOworICBFWFBFQ1Rf
RVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhf
U0VQXykuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAg
IEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8pLnN0cmluZygp
KTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKKyAgICBGaWxlUGF0aCgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXykuc3RyaW5n
KCkpOwogfQogCiAjaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KQEAgLTQ2NywxMiArNDU1LDEy
IEBAIFRFU1QoTm9ybWFsaXplVGVzdCwgTXVsdGlwbGVDb25zZWN1dGl2ZVNlcGFwYXJhdG9yc0F0
U3RyaW5nRW5kKSB7CiAvLyByZWdhcmRsZXNzIG9mIHRoZWlyIGNvbWJpbmF0aW9uIChlLmcuICJm
b29cIiA9PSJmb28vXCIgPT0KIC8vICJmb29cXC8iKS4KIFRFU1QoTm9ybWFsaXplVGVzdCwgTWl4
QWx0ZXJuYXRlU2VwYXJhdG9yQXRTdHJpbmdFbmQpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdU
RVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28vIikuY19zdHIoKSk7
Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICAgICAgICAgICBG
aWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gIi8iKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NU
UkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28v
LyIgR1RFU1RfUEFUSF9TRVBfKS5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BB
VEhfU0VQXywKKyAgICAgICAgICAgIEZpbGVQYXRoKCJmb28vIikuc3RyaW5nKCkpOworICBFWFBF
Q1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIg
R1RFU1RfUEFUSF9TRVBfICIvIikuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1Rf
UEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgoImZvby8vIiBHVEVTVF9QQVRIX1NFUF8p
LnN0cmluZygpKTsKIH0KIAogI2VuZGlmCkBAIC00ODEsMzEgKzQ2OSwzMSBAQCBURVNUKEFzc2ln
bm1lbnRPcGVyYXRvclRlc3QsIERlZmF1bHRBc3NpZ25lZFRvTm9uRGVmYXVsdCkgewogICBGaWxl
UGF0aCBkZWZhdWx0X3BhdGg7CiAgIEZpbGVQYXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgiKTsK
ICAgbm9uX2RlZmF1bHRfcGF0aCA9IGRlZmF1bHRfcGF0aDsKLSAgRVhQRUNUX1NUUkVRKCIiLCBu
b25fZGVmYXVsdF9wYXRoLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIGRlZmF1bHRfcGF0
aC5jX3N0cigpKTsgIC8vIFJIUyB2YXIgaXMgdW5jaGFuZ2VkLgorICBFWFBFQ1RfRVEoIiIsIG5v
bl9kZWZhdWx0X3BhdGguc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoIiIsIGRlZmF1bHRfcGF0aC5z
dHJpbmcoKSk7ICAvLyBSSFMgdmFyIGlzIHVuY2hhbmdlZC4KIH0KIAogVEVTVChBc3NpZ25tZW50
T3BlcmF0b3JUZXN0LCBOb25EZWZhdWx0QXNzaWduZWRUb0RlZmF1bHQpIHsKICAgRmlsZVBhdGgg
bm9uX2RlZmF1bHRfcGF0aCgicGF0aCIpOwogICBGaWxlUGF0aCBkZWZhdWx0X3BhdGg7CiAgIGRl
ZmF1bHRfcGF0aCA9IG5vbl9kZWZhdWx0X3BhdGg7Ci0gIEVYUEVDVF9TVFJFUSgicGF0aCIsIGRl
ZmF1bHRfcGF0aC5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJwYXRoIiwgbm9uX2RlZmF1bHRf
cGF0aC5jX3N0cigpKTsgIC8vIFJIUyB2YXIgaXMgdW5jaGFuZ2VkLgorICBFWFBFQ1RfRVEoInBh
dGgiLCBkZWZhdWx0X3BhdGguc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoInBhdGgiLCBub25fZGVm
YXVsdF9wYXRoLnN0cmluZygpKTsgIC8vIFJIUyB2YXIgaXMgdW5jaGFuZ2VkLgogfQogCiBURVNU
KEFzc2lnbm1lbnRPcGVyYXRvclRlc3QsIENvbnN0QXNzaWduZWRUb05vbkNvbnN0KSB7CiAgIGNv
bnN0IEZpbGVQYXRoIGNvbnN0X2RlZmF1bHRfcGF0aCgiY29uc3RfcGF0aCIpOwogICBGaWxlUGF0
aCBub25fZGVmYXVsdF9wYXRoKCJwYXRoIik7CiAgIG5vbl9kZWZhdWx0X3BhdGggPSBjb25zdF9k
ZWZhdWx0X3BhdGg7Ci0gIEVYUEVDVF9TVFJFUSgiY29uc3RfcGF0aCIsIG5vbl9kZWZhdWx0X3Bh
dGguY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiY29uc3RfcGF0aCIsIG5vbl9kZWZhdWx0X3BhdGgu
c3RyaW5nKCkpOwogfQogCiBjbGFzcyBEaXJlY3RvcnlDcmVhdGlvblRlc3QgOiBwdWJsaWMgVGVz
dCB7CiAgcHJvdGVjdGVkOgogICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgdGVzdGRhdGFf
cGF0aF8uU2V0KEZpbGVQYXRoKFN0cmluZzo6Rm9ybWF0KCIlcyVzJXMiLAotICAgICAgICBUZW1w
RGlyKCkuY19zdHIoKSwgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuY19zdHIoKSwKLSAgICAg
ICAgIl9kaXJlY3RvcnlfY3JlYXRpb24iIEdURVNUX1BBVEhfU0VQXyAidGVzdCIgR1RFU1RfUEFU
SF9TRVBfKSkpOworICAgIHRlc3RkYXRhX3BhdGhfLlNldChGaWxlUGF0aCgKKyAgICAgICAgVGVt
cERpcigpICsgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKworICAgICAgICAi
X2RpcmVjdG9yeV9jcmVhdGlvbiIgR1RFU1RfUEFUSF9TRVBfICJ0ZXN0IiBHVEVTVF9QQVRIX1NF
UF8pKTsKICAgICB0ZXN0ZGF0YV9maWxlXy5TZXQodGVzdGRhdGFfcGF0aF8uUmVtb3ZlVHJhaWxp
bmdQYXRoU2VwYXJhdG9yKCkpOwogCiAgICAgdW5pcXVlX2ZpbGUwXy5TZXQoRmlsZVBhdGg6Ok1h
a2VGaWxlTmFtZSh0ZXN0ZGF0YV9wYXRoXywgRmlsZVBhdGgoInVuaXF1ZSIpLApAQCAtNTI2LDIy
ICs1MTQsNiBAQCBjbGFzcyBEaXJlY3RvcnlDcmVhdGlvblRlc3QgOiBwdWJsaWMgVGVzdCB7CiAg
ICAgcG9zaXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhfLmNfc3RyKCkpOwogICB9CiAKLSAgU3RyaW5n
IFRlbXBEaXIoKSBjb25zdCB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSAgICByZXR1
cm4gU3RyaW5nKCJcXHRlbXBcXCIpOwotI2VsaWYgR1RFU1RfT1NfV0lORE9XUwotICAgIGNvbnN0
IGNoYXIqIHRlbXBfZGlyID0gcG9zaXg6OkdldEVudigiVEVNUCIpOwotICAgIGlmICh0ZW1wX2Rp
ciA9PSBOVUxMIHx8IHRlbXBfZGlyWzBdID09ICdcMCcpCi0gICAgICByZXR1cm4gU3RyaW5nKCJc
XHRlbXBcXCIpOwotICAgIGVsc2UgaWYgKFN0cmluZyh0ZW1wX2RpcikuRW5kc1dpdGgoIlxcIikp
Ci0gICAgICByZXR1cm4gU3RyaW5nKHRlbXBfZGlyKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4g
U3RyaW5nOjpGb3JtYXQoIiVzXFwiLCB0ZW1wX2Rpcik7Ci0jZWxzZQotICAgIHJldHVybiBTdHJp
bmcoIi90bXAvIik7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0gIH0KLQog
ICB2b2lkIENyZWF0ZVRleHRGaWxlKGNvbnN0IGNoYXIqIGZpbGVuYW1lKSB7CiAgICAgRklMRSog
ZiA9IHBvc2l4OjpGT3BlbihmaWxlbmFtZSwgInciKTsKICAgICBmcHJpbnRmKGYsICJ0ZXh0XG4i
KTsKQEAgLTU1OCwxMyArNTMwLDEzIEBAIGNsYXNzIERpcmVjdG9yeUNyZWF0aW9uVGVzdCA6IHB1
YmxpYyBUZXN0IHsKIH07CiAKIFRFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURp
cmVjdG9yaWVzUmVjdXJzaXZlbHkpIHsKLSAgRVhQRUNUX0ZBTFNFKHRlc3RkYXRhX3BhdGhfLkRp
cmVjdG9yeUV4aXN0cygpKSA8PCB0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpOworICBFWFBFQ1RfRkFM
U0UodGVzdGRhdGFfcGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkpIDw8IHRlc3RkYXRhX3BhdGhfLnN0
cmluZygpOwogICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1Jl
Y3Vyc2l2ZWx5KCkpOwogICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlz
dHMoKSk7CiB9CiAKIFRFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURpcmVjdG9y
aWVzRm9yQWxyZWFkeUV4aXN0aW5nUGF0aCkgewotICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfcGF0
aF8uRGlyZWN0b3J5RXhpc3RzKCkpIDw8IHRlc3RkYXRhX3BhdGhfLmNfc3RyKCk7CisgIEVYUEVD
VF9GQUxTRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlzdHMoKSkgPDwgdGVzdGRhdGFfcGF0
aF8uc3RyaW5nKCk7CiAgIEVYUEVDVF9UUlVFKHRlc3RkYXRhX3BhdGhfLkNyZWF0ZURpcmVjdG9y
aWVzUmVjdXJzaXZlbHkoKSk7CiAgIC8vIENhbGwgJ2NyZWF0ZScgYWdhaW4uLi4gc2hvdWxkIHN0
aWxsIHN1Y2NlZWQuCiAgIEVYUEVDVF9UUlVFKHRlc3RkYXRhX3BhdGhfLkNyZWF0ZURpcmVjdG9y
aWVzUmVjdXJzaXZlbHkoKSk7CkBAIC01NzMsNyArNTQ1LDcgQEAgVEVTVF9GKERpcmVjdG9yeUNy
ZWF0aW9uVGVzdCwgQ3JlYXRlRGlyZWN0b3JpZXNGb3JBbHJlYWR5RXhpc3RpbmdQYXRoKSB7CiBU
RVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0FuZFVuaXF1ZUZp
bGVuYW1lKSB7CiAgIEZpbGVQYXRoIGZpbGVfcGF0aChGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVG
aWxlTmFtZSh0ZXN0ZGF0YV9wYXRoXywKICAgICAgIEZpbGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIp
KTsKLSAgRVhQRUNUX1NUUkVRKHVuaXF1ZV9maWxlMF8uY19zdHIoKSwgZmlsZV9wYXRoLmNfc3Ry
KCkpOworICBFWFBFQ1RfRVEodW5pcXVlX2ZpbGUwXy5zdHJpbmcoKSwgZmlsZV9wYXRoLnN0cmlu
ZygpKTsKICAgRVhQRUNUX0ZBTFNFKGZpbGVfcGF0aC5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7
ICAvLyBmaWxlIG5vdCB0aGVyZQogCiAgIHRlc3RkYXRhX3BhdGhfLkNyZWF0ZURpcmVjdG9yaWVz
UmVjdXJzaXZlbHkoKTsKQEAgLTU4Myw3ICs1NTUsNyBAQCBURVNUX0YoRGlyZWN0b3J5Q3JlYXRp
b25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0FuZFVuaXF1ZUZpbGVuYW1lKSB7CiAKICAgRmlsZVBh
dGggZmlsZV9wYXRoMihGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFtZSh0ZXN0ZGF0YV9w
YXRoXywKICAgICAgIEZpbGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIpKTsKLSAgRVhQRUNUX1NUUkVR
KHVuaXF1ZV9maWxlMV8uY19zdHIoKSwgZmlsZV9wYXRoMi5jX3N0cigpKTsKKyAgRVhQRUNUX0VR
KHVuaXF1ZV9maWxlMV8uc3RyaW5nKCksIGZpbGVfcGF0aDIuc3RyaW5nKCkpOwogICBFWFBFQ1Rf
RkFMU0UoZmlsZV9wYXRoMi5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAvLyBmaWxlIG5vdCB0
aGVyZQogICBDcmVhdGVUZXh0RmlsZShmaWxlX3BhdGgyLmNfc3RyKCkpOwogICBFWFBFQ1RfVFJV
RShmaWxlX3BhdGgyLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsKQEAgLTYwNCw0MyArNTc2LDQz
IEBAIFRFU1QoTm9EaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZU5vRGlyZWN0b3JpZXNGb3JE
ZWZhdWx0WG1sRmlsZSkgewogCiBURVNUKEZpbGVQYXRoVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9y
KSB7CiAgIEZpbGVQYXRoIGZwOwotICBFWFBFQ1RfU1RSRVEoIiIsIGZwLmNfc3RyKCkpOworICBF
WFBFQ1RfRVEoIiIsIGZwLnN0cmluZygpKTsKIH0KIAogVEVTVChGaWxlUGF0aFRlc3QsIENoYXJB
bmRDb3B5Q29uc3RydWN0b3JzKSB7CiAgIGNvbnN0IEZpbGVQYXRoIGZwKCJzcGljeSIpOwotICBF
WFBFQ1RfU1RSRVEoInNwaWN5IiwgZnAuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgic3BpY3kiLCBm
cC5zdHJpbmcoKSk7CiAKICAgY29uc3QgRmlsZVBhdGggZnBfY29weShmcCk7Ci0gIEVYUEVDVF9T
VFJFUSgic3BpY3kiLCBmcF9jb3B5LmNfc3RyKCkpOworICBFWFBFQ1RfRVEoInNwaWN5IiwgZnBf
Y29weS5zdHJpbmcoKSk7CiB9CiAKIFRFU1QoRmlsZVBhdGhUZXN0LCBTdHJpbmdDb25zdHJ1Y3Rv
cikgewotICBjb25zdCBGaWxlUGF0aCBmcChTdHJpbmcoImNpZGVyIikpOwotICBFWFBFQ1RfU1RS
RVEoImNpZGVyIiwgZnAuY19zdHIoKSk7CisgIGNvbnN0IEZpbGVQYXRoIGZwKHN0ZDo6c3RyaW5n
KCJjaWRlciIpKTsKKyAgRVhQRUNUX0VRKCJjaWRlciIsIGZwLnN0cmluZygpKTsKIH0KIAogVEVT
VChGaWxlUGF0aFRlc3QsIFNldCkgewogICBjb25zdCBGaWxlUGF0aCBhcHBsZSgiYXBwbGUiKTsK
ICAgRmlsZVBhdGggbWFjKCJtYWMiKTsKICAgbWFjLlNldChhcHBsZSk7ICAvLyBJbXBsZW1lbnQg
U2V0KCkgc2luY2Ugb3ZlcmxvYWRpbmcgb3BlcmF0b3I9IGlzIGZvcmJpZGRlbi4KLSAgRVhQRUNU
X1NUUkVRKCJhcHBsZSIsIG1hYy5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJhcHBsZSIsIGFw
cGxlLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImFwcGxlIiwgbWFjLnN0cmluZygpKTsKKyAgRVhQ
RUNUX0VRKCJhcHBsZSIsIGFwcGxlLnN0cmluZygpKTsKIH0KIAogVEVTVChGaWxlUGF0aFRlc3Qs
IFRvU3RyaW5nKSB7CiAgIGNvbnN0IEZpbGVQYXRoIGZpbGUoImRyaW5rIik7Ci0gIFN0cmluZyBz
dHIoZmlsZS5Ub1N0cmluZygpKTsKLSAgRVhQRUNUX1NUUkVRKCJkcmluayIsIHN0ci5jX3N0cigp
KTsKKyAgRVhQRUNUX0VRKCJkcmluayIsIGZpbGUuc3RyaW5nKCkpOwogfQogCiBURVNUKEZpbGVQ
YXRoVGVzdCwgUmVtb3ZlRXh0ZW5zaW9uKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYXBwIiwgRmlsZVBh
dGgoImFwcC5leGUiKS5SZW1vdmVFeHRlbnNpb24oImV4ZSIpLmNfc3RyKCkpOwotICBFWFBFQ1Rf
U1RSRVEoIkFQUCIsIEZpbGVQYXRoKCJBUFAuRVhFIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5j
X3N0cigpKTsKKyAgRVhQRUNUX0VRKCJhcHAiLCBGaWxlUGF0aCgiYXBwLmNjIikuUmVtb3ZlRXh0
ZW5zaW9uKCJjYyIpLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJhcHAiLCBGaWxlUGF0aCgiYXBw
LmV4ZSIpLlJlbW92ZUV4dGVuc2lvbigiZXhlIikuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoIkFQ
UCIsIEZpbGVQYXRoKCJBUFAuRVhFIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5zdHJpbmcoKSk7
CiB9CiAKIFRFU1QoRmlsZVBhdGhUZXN0LCBSZW1vdmVFeHRlbnNpb25XaGVuVGhlcmVJc05vRXh0
ZW5zaW9uKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYXBwIiwgRmlsZVBhdGgoImFwcCIpLlJlbW92ZUV4
dGVuc2lvbigiZXhlIikuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiYXBwIiwgRmlsZVBhdGgoImFw
cCIpLlJlbW92ZUV4dGVuc2lvbigiZXhlIikuc3RyaW5nKCkpOwogfQogCiBURVNUKEZpbGVQYXRo
VGVzdCwgSXNEaXJlY3RvcnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdC1saW5rZWRfcHRyX3Rlc3QuY2MKaW5kZXggZWFlODIyOTZjOTIxZjBhZmU0MmZj
MjMzNTc0OTcwZWU3NzA5ZTViZC4uNmZjZjUxMjRhOGMzMWFmODQ4ZmQxMDc3YTQ1MWE3YzQxODQ0
YzQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saW5r
ZWRfcHRyX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1s
aW5rZWRfcHRyX3Rlc3QuY2MKQEAgLTMwLDEwICszMCwxMCBAQAogLy8gQXV0aG9yczogRGFuIEVn
bm9yIChlZ25vckBnb29nbGUuY29tKQogLy8gUG9ydGVkIHRvIFdpbmRvd3M6IFZhZGltIEJlcm1h
biAodmFkaW1iQGdvb2dsZS5jb20pCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1s
aW5rZWRfcHRyLmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5o
IgogCiAjaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2UgewogCkBAIC03Nyw3ICs3Nyw4IEBAIGNs
YXNzIExpbmtlZFB0clRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBURVNUX0YoTGlua2Vk
UHRyVGVzdCwgR2VuZXJhbFRlc3QpIHsKICAgewogICAgIGxpbmtlZF9wdHI8QT4gYTAsIGExLCBh
MjsKLSAgICBhMCA9IGEwOworICAgIC8vIFVzZSBleHBsaWNpdCBmdW5jdGlvbiBjYWxsIG5vdGF0
aW9uIGhlcmUgdG8gc3VwcHJlc3Mgc2VsZi1hc3NpZ24gd2FybmluZy4KKyAgICBhMC5vcGVyYXRv
cj0oYTApOwogICAgIGExID0gYTI7CiAgICAgQVNTRVJUX0VRKGEwLmdldCgpLCBzdGF0aWNfY2Fz
dDxBKj4oTlVMTCkpOwogICAgIEFTU0VSVF9FUShhMS5nZXQoKSwgc3RhdGljX2Nhc3Q8QSo+KE5V
TEwpKTsKQEAgLTE0Nyw4ICsxNDgsNyBAQCBURVNUX0YoTGlua2VkUHRyVGVzdCwgR2VuZXJhbFRl
c3QpIHsKICAgICAiQTAgZHRvclxuIgogICAgICJBMyBkdG9yXG4iCiAgICAgIkExIGR0b3JcbiIs
Ci0gICAgaGlzdG9yeS0+R2V0U3RyaW5nKCkuY19zdHIoKQotICApOworICAgIGhpc3RvcnktPkdl
dFN0cmluZygpLmNfc3RyKCkpOwogfQogCiB9ICAvLyBVbm5hbWVkIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saXN0ZW5lcl90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saXN0ZW5lcl90ZXN0LmNjCmlu
ZGV4IGM5YmUzOWE4N2U4OGQ4OTYwMWI5YmM5MzcyYTE0ZWRhYWY2MTI5NDMuLjkwNzQ3Njg1ZjA3
MmIyMjEwOGZjZDFjMzFkNWNjYzVkNDYyMjk2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWxpc3RlbmVyX3Rlc3QuY2MKQEAgLTMzLDcgKzMzLDcgQEAK
IC8vIFRoaXMgZmlsZSB2ZXJpZmllcyBHb29nbGUgVGVzdCBldmVudCBsaXN0ZW5lcnMgcmVjZWl2
ZSBldmVudHMgYXQgdGhlCiAvLyByaWdodCB0aW1lcy4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKICNpbmNsdWRlIDx2ZWN0b3I+CiAKIHVzaW5n
IDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50OwpAQCAtNDUsMTcgKzQ1LDE2IEBA
IHVzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXI7CiB1c2luZyA6OnRlc3Rpbmc6OlRl
c3RJbmZvOwogdXNpbmcgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDsKIHVzaW5nIDo6dGVzdGlu
Zzo6VW5pdFRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmc7CiAKIC8vIFVz
ZWQgYnkgdGVzdHMgdG8gcmVnaXN0ZXIgdGhlaXIgZXZlbnRzLgotc3RkOjp2ZWN0b3I8U3RyaW5n
PiogZ19ldmVudHMgPSBOVUxMOworc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiBnX2V2ZW50cyA9
IE5VTEw7CiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIGNs
YXNzIEV2ZW50UmVjb3JkaW5nTGlzdGVuZXIgOiBwdWJsaWMgVGVzdEV2ZW50TGlzdGVuZXIgewog
IHB1YmxpYzoKLSAgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lcihjb25zdCBjaGFyKiBuYW1lKSA6IG5h
bWVfKG5hbWUpIHt9CisgIGV4cGxpY2l0IEV2ZW50UmVjb3JkaW5nTGlzdGVuZXIoY29uc3QgY2hh
ciogbmFtZSkgOiBuYW1lXyhuYW1lKSB7fQogCiAgcHJvdGVjdGVkOgogICB2aXJ0dWFsIHZvaWQg
T25UZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7CkBAIC0x
MTksNTQgKzExOCw1MiBAQCBjbGFzcyBFdmVudFJlY29yZGluZ0xpc3RlbmVyIDogcHVibGljIFRl
c3RFdmVudExpc3RlbmVyIHsKICAgfQogCiAgcHJpdmF0ZToKLSAgU3RyaW5nIEdldEZ1bGxNZXRo
b2ROYW1lKGNvbnN0IGNoYXIqIG5hbWUpIHsKLSAgICBNZXNzYWdlIG1lc3NhZ2U7Ci0gICAgbWVz
c2FnZSA8PCBuYW1lXyA8PCAiLiIgPDwgbmFtZTsKLSAgICByZXR1cm4gbWVzc2FnZS5HZXRTdHJp
bmcoKTsKKyAgc3RkOjpzdHJpbmcgR2V0RnVsbE1ldGhvZE5hbWUoY29uc3QgY2hhciogbmFtZSkg
eworICAgIHJldHVybiBuYW1lXyArICIuIiArIG5hbWU7CiAgIH0KIAotICBTdHJpbmcgbmFtZV87
CisgIHN0ZDo6c3RyaW5nIG5hbWVfOwogfTsKIAogY2xhc3MgRW52aXJvbm1lbnRJbnZvY2F0aW9u
Q2F0Y2hlciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7CiAgcHJvdGVjdGVkOgogICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkVudmlyb25tZW50
OjpTZXRVcCIpKTsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKCJFbnZpcm9ubWVudDo6U2V0VXAi
KTsKICAgfQogCiAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBnX2V2ZW50cy0+cHVz
aF9iYWNrKFN0cmluZygiRW52aXJvbm1lbnQ6OlRlYXJEb3duIikpOworICAgIGdfZXZlbnRzLT5w
dXNoX2JhY2soIkVudmlyb25tZW50OjpUZWFyRG93biIpOwogICB9CiB9OwogCiBjbGFzcyBMaXN0
ZW5lclRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgcHJvdGVjdGVkOgogICBzdGF0aWMgdm9pZCBTZXRV
cFRlc3RDYXNlKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJMaXN0ZW5lclRl
c3Q6OlNldFVwVGVzdENhc2UiKSk7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJU
ZXN0OjpTZXRVcFRlc3RDYXNlIik7CiAgIH0KIAogICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RD
YXNlKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJMaXN0ZW5lclRlc3Q6OlRl
YXJEb3duVGVzdENhc2UiKSk7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0
OjpUZWFyRG93blRlc3RDYXNlIik7CiAgIH0KIAogICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0g
ICAgZ19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6U2V0VXAiKSk7Cisg
ICAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0OjpTZXRVcCIpOwogICB9CiAKICAg
dmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5n
KCJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duIikpOworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxp
c3RlbmVyVGVzdDo6VGVhckRvd24iKTsKICAgfQogfTsKIAogVEVTVF9GKExpc3RlbmVyVGVzdCwg
RG9lc0ZvbykgewogICAvLyBUZXN0IGV4ZWN1dGlvbiBvcmRlciB3aXRoaW4gYSB0ZXN0IGNhc2Ug
aXMgbm90IGd1YXJhbnRlZWQgc28gd2UgYXJlIG5vdAogICAvLyByZWNvcmRpbmcgdGhlIHRlc3Qg
bmFtZS4KLSAgZ19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6KiBUZXN0
IEJvZHkiKSk7CisgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJv
ZHkiKTsKICAgU1VDQ0VFRCgpOyAgLy8gVHJpZ2dlcnMgT25UZXN0UGFydFJlc3VsdC4KIH0KIAog
VEVTVF9GKExpc3RlbmVyVGVzdCwgRG9lc0JhcikgewotICBnX2V2ZW50cy0+cHVzaF9iYWNrKFN0
cmluZygiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIpKTsKKyAgZ19ldmVudHMtPnB1c2hfYmFj
aygiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIpOwogICBTVUNDRUVEKCk7ICAvLyBUcmlnZ2Vy
cyBPblRlc3RQYXJ0UmVzdWx0LgogfQogCkBAIC0xNzcsMTggKzE3NCwxOCBAQCBURVNUX0YoTGlz
dGVuZXJUZXN0LCBEb2VzQmFyKSB7CiB1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpFbnZpcm9u
bWVudEludm9jYXRpb25DYXRjaGVyOwogdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RXZlbnRS
ZWNvcmRpbmdMaXN0ZW5lcjsKIAotdm9pZCBWZXJpZnlSZXN1bHRzKGNvbnN0IHN0ZDo6dmVjdG9y
PFN0cmluZz4mIGRhdGEsCit2b2lkIFZlcmlmeVJlc3VsdHMoY29uc3Qgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+JiBkYXRhLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0KiBl
eHBlY3RlZF9kYXRhLAotICAgICAgICAgICAgICAgICAgIGludCBleHBlY3RlZF9kYXRhX3NpemUp
IHsKLSAgY29uc3QgaW50IGFjdHVhbF9zaXplID0gZGF0YS5zaXplKCk7CisgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGV4cGVjdGVkX2RhdGFfc2l6ZSkgeworICBjb25zdCBzaXplX3QgYWN0dWFs
X3NpemUgPSBkYXRhLnNpemUoKTsKICAgLy8gSWYgdGhlIGZvbGxvd2luZyBhc3NlcnRpb24gZmFp
bHMsIGEgbmV3IGVudHJ5IHdpbGwgYmUgYXBwZW5kZWQgdG8KICAgLy8gZGF0YS4gIEhlbmNlIHdl
IHNhdmUgZGF0YS5zaXplKCkgZmlyc3QuCiAgIEVYUEVDVF9FUShleHBlY3RlZF9kYXRhX3NpemUs
IGFjdHVhbF9zaXplKTsKIAogICAvLyBDb21wYXJlcyB0aGUgY29tbW9uIHByZWZpeC4KLSAgY29u
c3QgaW50IHNob3J0ZXJfc2l6ZSA9IGV4cGVjdGVkX2RhdGFfc2l6ZSA8PSBhY3R1YWxfc2l6ZSA/
CisgIGNvbnN0IHNpemVfdCBzaG9ydGVyX3NpemUgPSBleHBlY3RlZF9kYXRhX3NpemUgPD0gYWN0
dWFsX3NpemUgPwogICAgICAgZXhwZWN0ZWRfZGF0YV9zaXplIDogYWN0dWFsX3NpemU7Ci0gIGlu
dCBpID0gMDsKKyAgc2l6ZV90IGkgPSAwOwogICBmb3IgKDsgaSA8IHNob3J0ZXJfc2l6ZTsgKytp
KSB7CiAgICAgQVNTRVJUX1NUUkVRKGV4cGVjdGVkX2RhdGFbaV0sIGRhdGFbaV0uY19zdHIoKSkK
ICAgICAgICAgPDwgImF0IHBvc2l0aW9uICIgPDwgaTsKQEAgLTE5NiwxMiArMTkzLDEzIEBAIHZv
aWQgVmVyaWZ5UmVzdWx0cyhjb25zdCBzdGQ6OnZlY3RvcjxTdHJpbmc+JiBkYXRhLAogCiAgIC8v
IFByaW50cyBleHRyYSBlbGVtZW50cyBpbiB0aGUgYWN0dWFsIGRhdGEuCiAgIGZvciAoOyBpIDwg
YWN0dWFsX3NpemU7ICsraSkgewotICAgIHByaW50ZigiICBBY3R1YWwgZXZlbnQgIyVkOiAlc1xu
IiwgaSwgZGF0YVtpXS5jX3N0cigpKTsKKyAgICBwcmludGYoIiAgQWN0dWFsIGV2ZW50ICMlbHU6
ICVzXG4iLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpKSwgZGF0YVtpXS5j
X3N0cigpKTsKICAgfQogfQogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAg
c3RkOjp2ZWN0b3I8U3RyaW5nPiBldmVudHM7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBl
dmVudHM7CiAgIGdfZXZlbnRzID0gJmV2ZW50czsKICAgSW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFy
Z3YpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LW1l
c3NhZ2VfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbWVzc2Fn
ZV90ZXN0LmNjCmluZGV4IGU0MmIwMzQ0Nzg3MmUzZThmMDdhOWE0YWRkMmJlNWRkNDY5ODBiNTUu
LjE3NTIzOGVmNGU2NGFkYjRlMWY3ODhmMTNhNGVkMDRkNjA2NTdlMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjCkBAIC0zMSw4
OCArMzEsODAgQEAKIC8vCiAvLyBUZXN0cyBmb3IgdGhlIE1lc3NhZ2UgY2xhc3MuCiAKLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC1tZXNzYWdlLmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2Fn
ZS5oIgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgogCiBuYW1lc3BhY2UgewogCiB1c2luZyA6OnRlc3Rpbmc6Ok1lc3NhZ2U7Ci11c2luZyA6OnRl
c3Rpbmc6OmludGVybmFsOjpTdHJTdHJlYW07Ci0KLS8vIEEgaGVscGVyIGZ1bmN0aW9uIHRoYXQg
dHVybnMgYSBNZXNzYWdlIGludG8gYSBDIHN0cmluZy4KLWNvbnN0IGNoYXIqIFRvQ1N0cmluZyhj
b25zdCBNZXNzYWdlJiBtc2cpIHsKLSAgc3RhdGljIHRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmcg
cmVzdWx0OwotICByZXN1bHQgPSBtc2cuR2V0U3RyaW5nKCk7Ci0gIHJldHVybiByZXN1bHQuY19z
dHIoKTsKLX0KIAogLy8gVGVzdHMgdGhlIHRlc3Rpbmc6Ok1lc3NhZ2UgY2xhc3MKIAogLy8gVGVz
dHMgdGhlIGRlZmF1bHQgY29uc3RydWN0b3IuCiBURVNUKE1lc3NhZ2VUZXN0LCBEZWZhdWx0Q29u
c3RydWN0b3IpIHsKICAgY29uc3QgTWVzc2FnZSBtc2c7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgVG9D
U3RyaW5nKG1zZykpOworICBFWFBFQ1RfRVEoIiIsIG1zZy5HZXRTdHJpbmcoKSk7CiB9CiAKIC8v
IFRlc3RzIHRoZSBjb3B5IGNvbnN0cnVjdG9yLgogVEVTVChNZXNzYWdlVGVzdCwgQ29weUNvbnN0
cnVjdG9yKSB7CiAgIGNvbnN0IE1lc3NhZ2UgbXNnMSgiSGVsbG8iKTsKICAgY29uc3QgTWVzc2Fn
ZSBtc2cyKG1zZzEpOwotICBFWFBFQ1RfU1RSRVEoIkhlbGxvIiwgVG9DU3RyaW5nKG1zZzIpKTsK
KyAgRVhQRUNUX0VRKCJIZWxsbyIsIG1zZzIuR2V0U3RyaW5nKCkpOwogfQogCiAvLyBUZXN0cyBj
b25zdHJ1Y3RpbmcgYSBNZXNzYWdlIGZyb20gYSBDLXN0cmluZy4KIFRFU1QoTWVzc2FnZVRlc3Qs
IENvbnN0cnVjdHNGcm9tQ1N0cmluZykgewogICBNZXNzYWdlIG1zZygiSGVsbG8iKTsKLSAgRVhQ
RUNUX1NUUkVRKCJIZWxsbyIsIFRvQ1N0cmluZyhtc2cpKTsKKyAgRVhQRUNUX0VRKCJIZWxsbyIs
IG1zZy5HZXRTdHJpbmcoKSk7CiB9CiAKIC8vIFRlc3RzIHN0cmVhbWluZyBhIGZsb2F0LgogVEVT
VChNZXNzYWdlVGVzdCwgU3RyZWFtc0Zsb2F0KSB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IHMgPSBU
b0NTdHJpbmcoTWVzc2FnZSgpIDw8IDEuMjM0NTZGIDw8ICIgIiA8PCAyLjM0NTY3Rik7CisgIGNv
bnN0IHN0ZDo6c3RyaW5nIHMgPSAoTWVzc2FnZSgpIDw8IDEuMjM0NTZGIDw8ICIgIiA8PCAyLjM0
NTY3RikuR2V0U3RyaW5nKCk7CiAgIC8vIEJvdGggbnVtYmVycyBzaG91bGQgYmUgcHJpbnRlZCB3
aXRoIGVub3VnaCBwcmVjaXNpb24uCi0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNT
dWJzdHJpbmcsICIxLjIzNDU2MCIsIHMpOwotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6
OklzU3Vic3RyaW5nLCAiIDIuMzQ1NjY5Iiwgcyk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVz
dGluZzo6SXNTdWJzdHJpbmcsICIxLjIzNDU2MCIsIHMuY19zdHIoKSk7CisgIEVYUEVDVF9QUkVE
X0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIgMi4zNDU2NjkiLCBzLmNfc3RyKCkpOwog
fQogCiAvLyBUZXN0cyBzdHJlYW1pbmcgYSBkb3VibGUuCiBURVNUKE1lc3NhZ2VUZXN0LCBTdHJl
YW1zRG91YmxlKSB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IHMgPSBUb0NTdHJpbmcoTWVzc2FnZSgp
IDw8IDEyNjA1NzA4ODAuNDU1NTQ5NyA8PCAiICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCAxMjYwNTcyMjY1LjE5NTQ1MzQpOworICBjb25zdCBzdGQ6OnN0cmluZyBzID0g
KE1lc3NhZ2UoKSA8PCAxMjYwNTcwODgwLjQ1NTU0OTcgPDwgIiAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgMTI2MDU3MjI2NS4xOTU0NTM0KS5HZXRTdHJpbmcoKTsKICAg
Ly8gQm90aCBudW1iZXJzIHNob3VsZCBiZSBwcmludGVkIHdpdGggZW5vdWdoIHByZWNpc2lvbi4K
LSAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIjEyNjA1NzA4ODAu
NDUiLCBzKTsKLSAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIiAx
MjYwNTcyMjY1LjE5Iiwgcyk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJz
dHJpbmcsICIxMjYwNTcwODgwLjQ1Iiwgcy5jX3N0cigpKTsKKyAgRVhQRUNUX1BSRURfRk9STUFU
Mih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIiAxMjYwNTcyMjY1LjE5Iiwgcy5jX3N0cigpKTsKIH0K
IAogLy8gVGVzdHMgc3RyZWFtaW5nIGEgbm9uLWNoYXIgcG9pbnRlci4KIFRFU1QoTWVzc2FnZVRl
c3QsIFN0cmVhbXNQb2ludGVyKSB7CiAgIGludCBuID0gMDsKICAgaW50KiBwID0gJm47Ci0gIEVY
UEVDVF9TVFJORSgiKG51bGwpIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCBwKSk7CisgIEVYUEVD
VF9ORSgiKG51bGwpIiwgKE1lc3NhZ2UoKSA8PCBwKS5HZXRTdHJpbmcoKSk7CiB9CiAKIC8vIFRl
c3RzIHN0cmVhbWluZyBhIE5VTEwgbm9uLWNoYXIgcG9pbnRlci4KIFRFU1QoTWVzc2FnZVRlc3Qs
IFN0cmVhbXNOdWxsUG9pbnRlcikgewogICBpbnQqIHAgPSBOVUxMOwotICBFWFBFQ1RfU1RSRVEo
IihudWxsKSIsIFRvQ1N0cmluZyhNZXNzYWdlKCkgPDwgcCkpOworICBFWFBFQ1RfRVEoIihudWxs
KSIsIChNZXNzYWdlKCkgPDwgcCkuR2V0U3RyaW5nKCkpOwogfQogCiAvLyBUZXN0cyBzdHJlYW1p
bmcgYSBDIHN0cmluZy4KIFRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNDU3RyaW5nKSB7Ci0gIEVY
UEVDVF9TVFJFUSgiRm9vIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCAiRm9vIikpOworICBFWFBF
Q1RfRVEoIkZvbyIsIChNZXNzYWdlKCkgPDwgIkZvbyIpLkdldFN0cmluZygpKTsKIH0KIAogLy8g
VGVzdHMgc3RyZWFtaW5nIGEgTlVMTCBDIHN0cmluZy4KIFRFU1QoTWVzc2FnZVRlc3QsIFN0cmVh
bXNOdWxsQ1N0cmluZykgewogICBjaGFyKiBwID0gTlVMTDsKLSAgRVhQRUNUX1NUUkVRKCIobnVs
bCkiLCBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8IHApKTsKKyAgRVhQRUNUX0VRKCIobnVsbCkiLCAo
TWVzc2FnZSgpIDw8IHApLkdldFN0cmluZygpKTsKIH0KIAogLy8gVGVzdHMgc3RyZWFtaW5nIHN0
ZDo6c3RyaW5nLgogVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc1N0cmluZykgewogICBjb25zdCA6
OnN0ZDo6c3RyaW5nIHN0cigiSGVsbG8iKTsKLSAgRVhQRUNUX1NUUkVRKCJIZWxsbyIsIFRvQ1N0
cmluZyhNZXNzYWdlKCkgPDwgc3RyKSk7CisgIEVYUEVDVF9FUSgiSGVsbG8iLCAoTWVzc2FnZSgp
IDw8IHN0cikuR2V0U3RyaW5nKCkpOwogfQogCiAvLyBUZXN0cyB0aGF0IHdlIGNhbiBvdXRwdXQg
c3RyaW5ncyBjb250YWluaW5nIGVtYmVkZGVkIE5VTHMuCkBAIC0xMjEsNDIgKzExMyw0MiBAQCBU
RVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zU3RyaW5nV2l0aEVtYmVkZGVkTlVMKSB7CiAgICAgICAi
SGVyZSdzIGEgTlVMXDAgYW5kIHNvbWUgbW9yZSBzdHJpbmciOwogICBjb25zdCA6OnN0ZDo6c3Ry
aW5nIHN0cmluZ193aXRoX251bChjaGFyX2FycmF5X3dpdGhfbnVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoY2hhcl9hcnJheV93aXRoX251bCkgLSAxKTsK
LSAgRVhQRUNUX1NUUkVRKCJIZXJlJ3MgYSBOVUxcXDAgYW5kIHNvbWUgbW9yZSBzdHJpbmciLAot
ICAgICAgICAgICAgICAgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCBzdHJpbmdfd2l0aF9udWwpKTsK
KyAgRVhQRUNUX0VRKCJIZXJlJ3MgYSBOVUxcXDAgYW5kIHNvbWUgbW9yZSBzdHJpbmciLAorICAg
ICAgICAgICAgKE1lc3NhZ2UoKSA8PCBzdHJpbmdfd2l0aF9udWwpLkdldFN0cmluZygpKTsKIH0K
IAogLy8gVGVzdHMgc3RyZWFtaW5nIGEgTlVMIGNoYXIuCiBURVNUKE1lc3NhZ2VUZXN0LCBTdHJl
YW1zTlVMQ2hhcikgewotICBFWFBFQ1RfU1RSRVEoIlxcMCIsIFRvQ1N0cmluZyhNZXNzYWdlKCkg
PDwgJ1wwJykpOworICBFWFBFQ1RfRVEoIlxcMCIsIChNZXNzYWdlKCkgPDwgJ1wwJykuR2V0U3Ry
aW5nKCkpOwogfQogCiAvLyBUZXN0cyBzdHJlYW1pbmcgaW50LgogVEVTVChNZXNzYWdlVGVzdCwg
U3RyZWFtc0ludCkgewotICBFWFBFQ1RfU1RSRVEoIjEyMyIsIFRvQ1N0cmluZyhNZXNzYWdlKCkg
PDwgMTIzKSk7CisgIEVYUEVDVF9FUSgiMTIzIiwgKE1lc3NhZ2UoKSA8PCAxMjMpLkdldFN0cmlu
ZygpKTsKIH0KIAogLy8gVGVzdHMgdGhhdCBiYXNpYyBJTyBtYW5pcHVsYXRvcnMgKGVuZGwsIGVu
ZHMsIGFuZCBmbHVzaCkgY2FuIGJlCiAvLyBzdHJlYW1lZCB0byBNZXNzYWdlLgogVEVTVChNZXNz
YWdlVGVzdCwgU3RyZWFtc0Jhc2ljSW9NYW5pcCkgewotICBFWFBFQ1RfU1RSRVEoIkxpbmUgMS5c
bkEgTlVMIGNoYXIgXFwwIGluIGxpbmUgMi4iLAotICAgICAgICAgICAgICAgVG9DU3RyaW5nKE1l
c3NhZ2UoKSA8PCAiTGluZSAxLiIgPDwgc3RkOjplbmRsCisgIEVYUEVDVF9FUSgiTGluZSAxLlxu
QSBOVUwgY2hhciBcXDAgaW4gbGluZSAyLiIsCisgICAgICAgICAgICAgICAoTWVzc2FnZSgpIDw8
ICJMaW5lIDEuIiA8PCBzdGQ6OmVuZGwKICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiQSBO
VUwgY2hhciAiIDw8IHN0ZDo6ZW5kcyA8PCBzdGQ6OmZsdXNoCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgIiBpbiBsaW5lIDIuIikpOworICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIg
aW4gbGluZSAyLiIpLkdldFN0cmluZygpKTsKIH0KIAogLy8gVGVzdHMgTWVzc2FnZTo6R2V0U3Ry
aW5nKCkKIFRFU1QoTWVzc2FnZVRlc3QsIEdldFN0cmluZykgewogICBNZXNzYWdlIG1zZzsKICAg
bXNnIDw8IDEgPDwgIiBsYW1iIjsKLSAgRVhQRUNUX1NUUkVRKCIxIGxhbWIiLCBtc2cuR2V0U3Ry
aW5nKCkuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiMSBsYW1iIiwgbXNnLkdldFN0cmluZygpKTsK
IH0KIAogLy8gVGVzdHMgc3RyZWFtaW5nIGEgTWVzc2FnZSBvYmplY3QgdG8gYW4gb3N0cmVhbS4K
IFRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNUb09TdHJlYW0pIHsKICAgTWVzc2FnZSBtc2coIkhl
bGxvIik7Ci0gIFN0clN0cmVhbSBzczsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKICAgc3Mg
PDwgbXNnOwotICBFWFBFQ1RfU1RSRVEoIkhlbGxvIiwgdGVzdGluZzo6aW50ZXJuYWw6OlN0clN0
cmVhbVRvU3RyaW5nKCZzcykuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiSGVsbG8iLCB0ZXN0aW5n
OjppbnRlcm5hbDo6U3RyaW5nU3RyZWFtVG9TdHJpbmcoJnNzKSk7CiB9CiAKIC8vIFRlc3RzIHRo
YXQgYSBNZXNzYWdlIG9iamVjdCBkb2Vzbid0IHRha2UgdXAgdG9vIG11Y2ggc3RhY2sgc3BhY2Uu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LW9wdGlvbnNf
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Qtb3B0aW9uc190ZXN0
LmNjCmluZGV4IDJlMmNiYzkyZTVlMDI4Yzc0YzgyZjA3NTBmZGQ4YmRmYjRlODgzMWUuLjU1ODZk
YzNiMWIyNWM5YjhlZGFmZjUwMWQ5Njk3YWJlYWJiMjVmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Qtb3B0aW9uc190ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Qtb3B0aW9uc190ZXN0LmNjCkBAIC0zOCwxMiArMzgs
MTIgQEAKIC8vIG1ha2UtZmlsZXMgb24gV2luZG93cyBhbmQgb3RoZXIgcGxhdGZvcm1zLiBEbyBu
b3QgI2luY2x1ZGUgdGhpcyBmaWxlCiAvLyBhbnl3aGVyZSBlbHNlIQogCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAjaWYgR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUKLSNpbmNsdWRlIDx3aW5kb3dzLmg+CisjIGluY2x1ZGUgPHdpbmRvd3MuaD4K
ICNlbGlmIEdURVNUX09TX1dJTkRPV1MKLSNpbmNsdWRlIDxkaXJlY3QuaD4KKyMgaW5jbHVkZSA8
ZGlyZWN0Lmg+CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAKIC8vIEluZGlj
YXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MK
QEAgLTc4LDE0ICs3OCwxNCBAQCBURVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZvcm1hdCkg
ewogCiBURVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZpbGVEZWZhdWx0KSB7CiAgIEdURVNU
X0ZMQUcob3V0cHV0KSA9ICIiOwotICBFWFBFQ1RfU1RSRVEoR2V0QWJzb2x1dGVQYXRoT2YoRmls
ZVBhdGgoInRlc3RfZGV0YWlsLnhtbCIpKS5jX3N0cigpLAotICAgICAgICAgICAgICAgVW5pdFRl
c3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0cigpKTsKKyAgRVhQ
RUNUX0VRKEdldEFic29sdXRlUGF0aE9mKEZpbGVQYXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuc3Ry
aW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0
cHV0RmlsZSgpKTsKIH0KIAogVEVTVChYbWxPdXRwdXRUZXN0LCBHZXRPdXRwdXRGaWxlU2luZ2xl
RmlsZSkgewogICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOmZpbGVuYW1lLmFiYyI7Ci0gIEVY
UEVDVF9TVFJFUShHZXRBYnNvbHV0ZVBhdGhPZihGaWxlUGF0aCgiZmlsZW5hbWUuYWJjIikpLmNf
c3RyKCksCi0gICAgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRv
T3V0cHV0RmlsZSgpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoR2V0QWJzb2x1dGVQYXRoT2YoRmls
ZVBhdGgoImZpbGVuYW1lLmFiYyIpKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0
aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOwogfQogCiBURVNUKFhtbE91dHB1
dFRlc3QsIEdldE91dHB1dEZpbGVGcm9tRGlyZWN0b3J5UGF0aCkgewpAQCAtOTMsOCArOTMsOSBA
QCBURVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZpbGVGcm9tRGlyZWN0b3J5UGF0aCkgewog
ICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3RlZF9vdXRwdXRfZmlsZSA9CiAgICAgICBHZXRBYnNv
bHV0ZVBhdGhPZigKICAgICAgICAgICBGaWxlUGF0aChzdGQ6OnN0cmluZygicGF0aCIpICsgR1RF
U1RfUEFUSF9TRVBfICsKLSAgICAgICAgICAgICAgICAgICBHZXRDdXJyZW50RXhlY3V0YWJsZU5h
bWUoKS5jX3N0cigpICsgIi54bWwiKSkuY19zdHIoKTsKLSAgY29uc3QgU3RyaW5nJiBvdXRwdXRf
ZmlsZSA9IFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7Cisg
ICAgICAgICAgICAgICAgICAgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKyAi
LnhtbCIpKS5zdHJpbmcoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9maWxlID0KKyAg
ICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7CiAjaWYg
R1RFU1RfT1NfV0lORE9XUwogICBFWFBFQ1RfU1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxl
LmNfc3RyKCksIG91dHB1dF9maWxlLmNfc3RyKCkpOwogI2Vsc2UKQEAgLTEwMyw3ICsxMDQsNyBA
QCBURVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZpbGVGcm9tRGlyZWN0b3J5UGF0aCkgewog
fQogCiBURVNUKE91dHB1dEZpbGVIZWxwZXJzVGVzdCwgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1l
KSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGV4ZV9zdHIgPSBHZXRDdXJyZW50RXhlY3V0YWJsZU5h
bWUoKS5jX3N0cigpOworICBjb25zdCBzdGQ6OnN0cmluZyBleGVfc3RyID0gR2V0Q3VycmVudEV4
ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCk7CiAjaWYgR1RFU1RfT1NfV0lORE9XUwogICBjb25zdCBi
b29sIHN1Y2Nlc3MgPQogICAgICAgX3N0cmNtcGkoImd0ZXN0LW9wdGlvbnNfdGVzdCIsIGV4ZV9z
dHIuY19zdHIoKSkgPT0gMCB8fApAQCAtMTI5LDEyICsxMzAsMTIgQEAgY2xhc3MgWG1sT3V0cHV0
Q2hhbmdlRGlyVGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICBvcmlnaW5hbF93b3JraW5nX2Rpcl8g
PSBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpOwogICAgIHBvc2l4OjpDaERpcigiLi4iKTsKICAg
ICAvLyBUaGlzIHdpbGwgbWFrZSB0aGUgdGVzdCBmYWlsIGlmIHJ1biBmcm9tIHRoZSByb290IGRp
cmVjdG9yeS4KLSAgICBFWFBFQ1RfU1RSTkUob3JpZ2luYWxfd29ya2luZ19kaXJfLmNfc3RyKCks
Ci0gICAgICAgICAgICAgICAgIEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkuY19zdHIoKSk7Cisg
ICAgRVhQRUNUX05FKG9yaWdpbmFsX3dvcmtpbmdfZGlyXy5zdHJpbmcoKSwKKyAgICAgICAgICAg
ICAgRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKS5zdHJpbmcoKSk7CiAgIH0KIAogICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7Ci0gICAgcG9zaXg6OkNoRGlyKG9yaWdpbmFsX3dvcmtpbmdfZGly
Xy5jX3N0cigpKTsKKyAgICBwb3NpeDo6Q2hEaXIob3JpZ2luYWxfd29ya2luZ19kaXJfLnN0cmlu
ZygpLmNfc3RyKCkpOwogICB9CiAKICAgRmlsZVBhdGggb3JpZ2luYWxfd29ya2luZ19kaXJfOwpA
QCAtMTQyLDIzICsxNDMsMjMgQEAgY2xhc3MgWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCA6IHB1Ymxp
YyBUZXN0IHsKIAogVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2lu
YWxXb3JraW5nRGlyV2l0aERlZmF1bHQpIHsKICAgR1RFU1RfRkxBRyhvdXRwdXQpID0gIiI7Ci0g
IEVYUEVDVF9TVFJFUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJf
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJ0ZXN0X2Rl
dGFpbC54bWwiKSkuY19zdHIoKSwKLSAgICAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0
QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSk7CisgIEVYUEVDVF9FUShGaWxlUGF0
aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuc3RyaW5nKCksCisg
ICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgp
KTsKIH0KIAogVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxX
b3JraW5nRGlyV2l0aERlZmF1bHRYTUwpIHsKICAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbCI7
Ci0gIEVYUEVDVF9TVFJFUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19k
aXJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJ0ZXN0
X2RldGFpbC54bWwiKSkuY19zdHIoKSwKLSAgICAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6
R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSk7CisgIEVYUEVDVF9FUShGaWxl
UGF0aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuc3RyaW5nKCks
CisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0Rmls
ZSgpKTsKIH0KIAogVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2lu
YWxXb3JraW5nRGlyV2l0aFJlbGF0aXZlRmlsZSkgewogICBHVEVTVF9GTEFHKG91dHB1dCkgPSAi
eG1sOmZpbGVuYW1lLmFiYyI7Ci0gIEVYUEVDVF9TVFJFUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMo
b3JpZ2luYWxfd29ya2luZ19kaXJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZpbGVQYXRoKCJmaWxlbmFtZS5hYmMiKSkuY19zdHIoKSwKLSAgICAgICAgICAgICAgIFVu
aXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSk7Cisg
IEVYUEVDVF9FUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmaWxlbmFtZS5hYmMi
KSkuc3RyaW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0
aFRvT3V0cHV0RmlsZSgpKTsKIH0KIAogVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFBy
ZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aFJlbGF0aXZlUGF0aCkgewpAQCAtMTY3LDggKzE2
OCw5IEBAIFRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29y
a2luZ0RpcldpdGhSZWxhdGl2ZVBhdGgpIHsKICAgICAgIEZpbGVQYXRoOjpDb25jYXRQYXRocygK
ICAgICAgICAgICBvcmlnaW5hbF93b3JraW5nX2Rpcl8sCiAgICAgICAgICAgRmlsZVBhdGgoc3Rk
OjpzdHJpbmcoInBhdGgiKSArIEdURVNUX1BBVEhfU0VQXyArCi0gICAgICAgICAgICAgICAgICAg
R2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuY19zdHIoKSArICIueG1sIikpLmNfc3RyKCk7Ci0g
IGNvbnN0IFN0cmluZyYgb3V0cHV0X2ZpbGUgPSBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRl
UGF0aFRvT3V0cHV0RmlsZSgpOworICAgICAgICAgICAgICAgICAgIEdldEN1cnJlbnRFeGVjdXRh
YmxlTmFtZSgpLnN0cmluZygpICsgIi54bWwiKSkuc3RyaW5nKCk7CisgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBvdXRwdXRfZmlsZSA9CisgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0
aFRvT3V0cHV0RmlsZSgpOwogI2lmIEdURVNUX09TX1dJTkRPV1MKICAgRVhQRUNUX1NUUkNBU0VF
UShleHBlY3RlZF9vdXRwdXRfZmlsZS5jX3N0cigpLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKICNl
bHNlCkBAIC0xNzksMTIgKzE4MSwxMiBAQCBURVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwg
UHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoUmVsYXRpdmVQYXRoKSB7CiBURVNUX0YoWG1s
T3V0cHV0Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoQWJzb2x1
dGVGaWxlKSB7CiAjaWYgR1RFU1RfT1NfV0lORE9XUwogICBHVEVTVF9GTEFHKG91dHB1dCkgPSAi
eG1sOmM6XFx0bXBcXGZpbGVuYW1lLmFiYyI7Ci0gIEVYUEVDVF9TVFJFUShGaWxlUGF0aCgiYzpc
XHRtcFxcZmlsZW5hbWUuYWJjIikuY19zdHIoKSwKLSAgICAgICAgICAgICAgIFVuaXRUZXN0T3B0
aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSk7CisgIEVYUEVDVF9F
UShGaWxlUGF0aCgiYzpcXHRtcFxcZmlsZW5hbWUuYWJjIikuc3RyaW5nKCksCisgICAgICAgICAg
ICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKICNlbHNl
CiAgIEdURVNUX0ZMQUcob3V0cHV0KSA9InhtbDovdG1wL2ZpbGVuYW1lLmFiYyI7Ci0gIEVYUEVD
VF9TVFJFUShGaWxlUGF0aCgiL3RtcC9maWxlbmFtZS5hYmMiKS5jX3N0cigpLAotICAgICAgICAg
ICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0
cigpKTsKKyAgRVhQRUNUX0VRKEZpbGVQYXRoKCIvdG1wL2ZpbGVuYW1lLmFiYyIpLnN0cmluZygp
LAorICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZp
bGUoKSk7CiAjZW5kaWYKIH0KIApAQCAtMTk3LDggKzE5OSw5IEBAIFRFU1RfRihYbWxPdXRwdXRD
aGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhBYnNvbHV0ZVBhdGgp
IHsKIAogICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOiIgKyBwYXRoOwogICBjb25zdCBzdGQ6
OnN0cmluZyBleHBlY3RlZF9vdXRwdXRfZmlsZSA9Ci0gICAgICBwYXRoICsgR2V0Q3VycmVudEV4
ZWN1dGFibGVOYW1lKCkuY19zdHIoKSArICIueG1sIjsKLSAgY29uc3QgU3RyaW5nJiBvdXRwdXRf
ZmlsZSA9IFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7Cisg
ICAgICBwYXRoICsgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKyAiLnhtbCI7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZmlsZSA9CisgICAgICBVbml0VGVzdE9wdGlv
bnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpOwogCiAjaWYgR1RFU1RfT1NfV0lORE9X
UwogICBFWFBFQ1RfU1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxlLmNfc3RyKCksIG91dHB1
dF9maWxlLmNfc3RyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjCmluZGV4IGNjYjZjZmFjOWU3NmI4MjdmMTdhZTEx
ODI5ZTIzNmQ2Zjk3ZWU2NDYuLjRhNzgyZmU3MDgzN2FjYTg0YjQ3NWEzNDU1YTFlNTRhYjgyODM4
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0t
dGVzdDJfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBh
cmFtLXRlc3QyX3Rlc3QuY2MKQEAgLTMyLDcgKzMyLDcgQEAKIC8vIFRlc3RzIGZvciBHb29nbGUg
VGVzdCBpdHNlbGYuICBUaGlzIHZlcmlmaWVzIHRoYXQgdGhlIGJhc2ljIGNvbnN0cnVjdHMgb2YK
IC8vIEdvb2dsZSBUZXN0IHdvcmsuCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVz
dC5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBh
cmFtLXRlc3RfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFy
YW0tdGVzdF90ZXN0LmNjCmluZGV4IGQwYTBlNzM1YzBiOTg4ZWYxYTIyYjdkN2FlNjkwMjcwMThi
ZGI4Y2IuLjhiMjc4YmI5NGI4NTZmNzFiYThhOTJlNzc4YmFiNGQyZjMwMjJiNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0
LmNjCkBAIC0zMywyMyArMzMsMjMgQEAKIC8vIGdlbmVyYXRvcnMgb2JqZWN0cyBwcm9kdWNlIGNv
cnJlY3QgcGFyYW1ldGVyIHNlcXVlbmNlcyBhbmQgdGhhdAogLy8gR29vZ2xlIFRlc3QgcnVudGlt
ZSBpbnN0YW50aWF0ZXMgY29ycmVjdCB0ZXN0cyBmcm9tIHRob3NlIHNlcXVlbmNlcy4KIAotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2lmIEdU
RVNUX0hBU19QQVJBTV9URVNUCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8aW9z
dHJlYW0+Ci0jaW5jbHVkZSA8bGlzdD4KLSNpbmNsdWRlIDxzc3RyZWFtPgotI2luY2x1ZGUgPHN0
cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+CisjIGluY2x1ZGUgPGFsZ29yaXRobT4KKyMgaW5jbHVk
ZSA8aW9zdHJlYW0+CisjIGluY2x1ZGUgPGxpc3Q+CisjIGluY2x1ZGUgPHNzdHJlYW0+CisjIGlu
Y2x1ZGUgPHN0cmluZz4KKyMgaW5jbHVkZSA8dmVjdG9yPgogCiAvLyBUbyBpbmNsdWRlIGd0ZXN0
LWludGVybmFsLWlubC5oLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQotI2luY2x1
ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIgIC8vIGZvciBVbml0VGVzdE9wdGlvbnMKLSN1
bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KKyMgZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9O
XyAxCisjIGluY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIgIC8vIGZvciBVbml0VGVz
dE9wdGlvbnMKKyMgdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCiAKLSNpbmNsdWRlICJ0ZXN0
L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oIgorIyBpbmNsdWRlICJ0ZXN0L2d0ZXN0LXBhcmFtLXRl
c3RfdGVzdC5oIgogCiB1c2luZyA6OnN0ZDo6dmVjdG9yOwogdXNpbmcgOjpzdGQ6OnNvcnQ7CkBA
IC02MiwxMiArNjIsMTIgQEAgdXNpbmcgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtOwogdXNpbmcg
Ojp0ZXN0aW5nOjpWYWx1ZXM7CiB1c2luZyA6OnRlc3Rpbmc6OlZhbHVlc0luOwogCi0jaWYgR1RF
U1RfSEFTX0NPTUJJTkUKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKIHVzaW5nIDo6dGVzdGluZzo6
Q29tYmluZTsKLXVzaW5nIDo6c3RkOjp0cjE6OmdldDsKLXVzaW5nIDo6c3RkOjp0cjE6Om1ha2Vf
dHVwbGU7Ci11c2luZyA6OnN0ZDo6dHIxOjp0dXBsZTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NP
TUJJTkUKK3VzaW5nIDo6dGVzdGluZzo6Z2V0OwordXNpbmcgOjp0ZXN0aW5nOjptYWtlX3R1cGxl
OwordXNpbmcgOjp0ZXN0aW5nOjp0dXBsZTsKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5F
CiAKIHVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yOwogdXNpbmcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOwpAQCAtODUsNyArODUsNyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KICAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKIH0KIAotI2lmIEdURVNU
X0hBU19DT01CSU5FCisjIGlmIEdURVNUX0hBU19DT01CSU5FCiAKIC8vIFRoZXNlIG92ZXJsb2Fk
cyBhbGxvdyBwcmludGluZyB0dXBsZXMgaW4gb3VyIHRlc3RzLiAgV2UgY2Fubm90CiAvLyBkZWZp
bmUgYW4gb3BlcmF0b3I8PCBmb3IgdHVwbGVzLCBhcyB0aGF0IGRlZmluaXRpb24gbmVlZHMgdG8g
YmUgaW4KQEAgLTEyMSw3ICsxMjEsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICByZXR1cm4gc3Ry
ZWFtLnN0cigpOwogfQogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCisjIGVuZGlmICAv
LyBHVEVTVF9IQVNfQ09NQklORQogCiAvLyBWZXJpZmllcyB0aGF0IGEgc2VxdWVuY2UgZ2VuZXJh
dGVkIGJ5IHRoZSBnZW5lcmF0b3IgYW5kIGFjY2Vzc2VkCiAvLyB2aWEgdGhlIGl0ZXJhdG9yIG9i
amVjdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBvbmUgdXNpbmcgR29vZ2xlIFRlc3QKQEAgLTI4MCwx
MCArMjgwLDEwIEBAIGNsYXNzIERvZ0FkZGVyIHsKICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgRG9n
QWRkZXImIG90aGVyKSBjb25zdCB7CiAgICAgcmV0dXJuIHZhbHVlXyA8IG90aGVyLnZhbHVlXzsK
ICAgfQotICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmcmIHZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gdmFsdWVfOyB9CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIHZhbHVlXzsgfQogCiAgcHJpdmF0ZToKLSAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3Ry
aW5nIHZhbHVlXzsKKyAgc3RkOjpzdHJpbmcgdmFsdWVfOwogfTsKIAogVEVTVChSYW5nZVRlc3Qs
IFdvcmtzV2l0aEFDdXN0b21UeXBlKSB7CkBAIC00NTcsNyArNDU3LDcgQEAgVEVTVChCb29sVGVz
dCwgQm9vbFdvcmtzKSB7CiAgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7
CiB9CiAKLSNpZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNfQ09NQklORQogCiAv
LyBUZXN0cyB0aGF0IENvbWJpbmUoKSB3aXRoIHR3byBwYXJhbWV0ZXJzIGdlbmVyYXRlcyB0aGUg
ZXhwZWN0ZWQgc2VxdWVuY2UuCiBURVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFR3b1BhcmFt
ZXRlcnMpIHsKQEAgLTU0Miw3ICs1NDIsNyBAQCBURVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0
aE1heE51bWJlck9mUGFyYW1ldGVycykgewogICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3Rl
ZF92YWx1ZXMpOwogfQogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCisjIGVuZGlmICAv
LyBHVEVTVF9IQVNfQ09NQklORQogCiAvLyBUZXN0cyB0aGF0IGFuIGdlbmVyYXRvciBwcm9kdWNl
cyBjb3JyZWN0IHNlcXVlbmNlIGFmdGVyIGJlaW5nCiAvLyBhc3NpZ25lZCBmcm9tIGFub3RoZXIg
Z2VuZXJhdG9yLgpAQCAtNjA2LDYgKzYwNiw3IEBAIGNsYXNzIFRlc3RHZW5lcmF0aW9uRW52aXJv
bm1lbnQgOiBwdWJsaWMgOjp0ZXN0aW5nOjpFbnZpcm9ubWVudCB7CiAgICAgICAgICAgPDwgImhh
cyBub3QgYmVlbiBydW4gYXMgZXhwZWN0ZWQuIjsKICAgICB9CiAgIH0KKwogIHByaXZhdGU6CiAg
IFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQoKSA6IGZpeHR1cmVfY29uc3RydWN0b3JfY291bnRf
KDApLCBzZXRfdXBfY291bnRfKDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZWFyX2Rvd25fY291bnRfKDApLCB0ZXN0X2JvZHlfY291bnRfKDApIHt9CkBAIC02NzQsNiArNjc1
LDcgQEAgY2xhc3MgVGVzdEdlbmVyYXRpb25UZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50
PiB7CiAKICAgICBFWFBFQ1RfVFJVRShjb2xsZWN0ZWRfcGFyYW1ldGVyc18gPT0gZXhwZWN0ZWRf
dmFsdWVzKTsKICAgfQorCiAgcHJvdGVjdGVkOgogICBpbnQgY3VycmVudF9wYXJhbWV0ZXJfOwog
ICBzdGF0aWMgdmVjdG9yPGludD4gY29sbGVjdGVkX3BhcmFtZXRlcnNfOwpAQCAtNzkyLDE5ICs3
OTQsMjM3IEBAIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEZvdXJFbGVtU2VxdWVuY2UsIFNlcGFy
YXRlSW5zdGFuY2VUZXN0LCBSYW5nZSgxLCA0KSk7CiAvLyBzZXF1ZW5jZSBlbGVtZW50IHVzZWQg
dG8gaW5zdGFudGlhdGUgdGhlIHRlc3QuCiBjbGFzcyBOYW1pbmdUZXN0IDogcHVibGljIFRlc3RX
aXRoUGFyYW08aW50PiB7fTsKIAotVEVTVF9QKE5hbWluZ1Rlc3QsIFRlc3RzQXJlTmFtZWRBcHBy
b3ByaWF0ZWx5KSB7CitURVNUX1AoTmFtaW5nVGVzdCwgVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXNB
bmRQYXJhbWV0ZXJzKSB7CiAgIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3Rf
aW5mbyA9CiAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRf
dGVzdF9pbmZvKCk7CiAKICAgRVhQRUNUX1NUUkVRKCJaZXJvVG9GaXZlU2VxdWVuY2UvTmFtaW5n
VGVzdCIsIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0g
IG1zZyA8PCAiVGVzdHNBcmVOYW1lZEFwcHJvcHJpYXRlbHkvIiA8PCBHZXRQYXJhbSgpOwotICBF
WFBFQ1RfU1RSRVEobXNnLkdldFN0cmluZygpLmNfc3RyKCksIHRlc3RfaW5mby0+bmFtZSgpKTsK
KyAgTWVzc2FnZSBpbmRleF9zdHJlYW07CisgIGluZGV4X3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRD
b3JyZWN0TmFtZXNBbmRQYXJhbWV0ZXJzLyIgPDwgR2V0UGFyYW0oKTsKKyAgRVhQRUNUX1NUUkVR
KGluZGV4X3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0cigpLCB0ZXN0X2luZm8tPm5hbWUoKSk7CisK
KyAgRVhQRUNUX0VRKDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgpKSwgdGVzdF9p
bmZvLT52YWx1ZV9wYXJhbSgpKTsKIH0KIAogSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoWmVyb1Rv
Rml2ZVNlcXVlbmNlLCBOYW1pbmdUZXN0LCBSYW5nZSgwLCA1KSk7CiAKKy8vIFRlc3RzIHRoYXQg
dXNlciBzdXBwbGllZCBjdXN0b20gcGFyYW1ldGVyIG5hbWVzIGFyZSB3b3JraW5nIGNvcnJlY3Rs
eS4KKy8vIFJ1bnMgdGhlIHRlc3Qgd2l0aCBhIGJ1aWx0aW4gaGVscGVyIG1ldGhvZCB3aGljaCB1
c2VzIFByaW50VG9TdHJpbmcsCisvLyBhcyB3ZWxsIGFzIGEgY3VzdG9tIGZ1bmN0aW9uIGFuZCBj
dXN0b20gZnVuY3RvciB0byBlbnN1cmUgYWxsIHBvc3NpYmxlCisvLyB1c2VzIHdvcmsgY29ycmVj
dGx5LgorY2xhc3MgQ3VzdG9tRnVuY3Rvck5hbWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJh
bTxzdGQ6OnN0cmluZz4ge307CitURVNUX1AoQ3VzdG9tRnVuY3Rvck5hbWluZ1Rlc3QsIEN1c3Rv
bVRlc3ROYW1lcykge30KKworc3RydWN0IEN1c3RvbVBhcmFtTmFtZUZ1bmN0b3IgeworICBzdGQ6
OnN0cmluZyBvcGVyYXRvcigpKGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzxzdGQ6OnN0
cmluZz4mIGluZm8pIHsKKyAgICByZXR1cm4gaW5mby5wYXJhbTsKKyAgfQorfTsKKworSU5TVEFO
VElBVEVfVEVTVF9DQVNFX1AoQ3VzdG9tUGFyYW1OYW1lRnVuY3RvciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEN1c3RvbUZ1bmN0b3JOYW1pbmdUZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsdWVzKHN0ZDo6c3RyaW5nKCJGdW5jdG9yTmFtZSIpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEN1c3RvbVBhcmFtTmFtZUZ1bmN0b3IoKSk7CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QKEFsbEFsbG93ZWRDaGFyYWN0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9t
RnVuY3Rvck5hbWluZ1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoImFiY2Rl
ZmdoaWprbG1ub3BxcnN0dXZ3eHl6IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIwMTIzNDU2Nzg5MF8iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbVBhcmFt
TmFtZUZ1bmN0b3IoKSk7CisKK2lubGluZSBzdGQ6OnN0cmluZyBDdXN0b21QYXJhbU5hbWVGdW5j
dGlvbigKKyAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88c3RkOjpzdHJpbmc+JiBp
bmZvKSB7CisgIHJldHVybiBpbmZvLnBhcmFtOworfQorCitjbGFzcyBDdXN0b21GdW5jdGlvbk5h
bWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxzdGQ6OnN0cmluZz4ge307CitURVNUX1Ao
Q3VzdG9tRnVuY3Rpb25OYW1pbmdUZXN0LCBDdXN0b21UZXN0TmFtZXMpIHt9CisKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKEN1c3RvbVBhcmFtTmFtZUZ1bmN0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgQ3VzdG9tRnVuY3Rpb25OYW1pbmdUZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsdWVzKHN0ZDo6c3RyaW5nKCJGdW5jdGlvbk5hbWUiKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICBDdXN0b21QYXJhbU5hbWVGdW5jdGlvbik7CisKKyNpZiBHVEVTVF9MQU5HX0NYWDEx
CisKKy8vIFRlc3QgY3VzdG9tIG5hbWluZyB3aXRoIGEgbGFtYmRhCisKK2NsYXNzIEN1c3RvbUxh
bWJkYU5hbWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxzdGQ6OnN0cmluZz4ge307CitU
RVNUX1AoQ3VzdG9tTGFtYmRhTmFtaW5nVGVzdCwgQ3VzdG9tVGVzdE5hbWVzKSB7fQorCitJTlNU
QU5USUFURV9URVNUX0NBU0VfUChDdXN0b21QYXJhbU5hbWVMYW1iZGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICBDdXN0b21MYW1iZGFOYW1pbmdUZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsdWVzKHN0ZDo6c3RyaW5nKCJMYW1iZGFOYW1lIikpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgW10oY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHN0ZDo6c3RyaW5nPiYgaW5m
bykgeworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5mby5wYXJhbTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0pOworCisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKwor
VEVTVChDdXN0b21OYW1pbmdUZXN0LCBDaGVja05hbWVSZWdpc3RyeSkgeworICA6OnRlc3Rpbmc6
OlVuaXRUZXN0KiB1bml0X3Rlc3QgPSA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgp
OworICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gdGVzdF9uYW1lczsKKyAgZm9yIChpbnQgY2FzZV9u
dW0gPSAwOworICAgICAgIGNhc2VfbnVtIDwgdW5pdF90ZXN0LT50b3RhbF90ZXN0X2Nhc2VfY291
bnQoKTsKKyAgICAgICArK2Nhc2VfbnVtKSB7CisgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0Q2Fz
ZSogdGVzdF9jYXNlID0gdW5pdF90ZXN0LT5HZXRUZXN0Q2FzZShjYXNlX251bSk7CisgICAgZm9y
IChpbnQgdGVzdF9udW0gPSAwOworICAgICAgICAgdGVzdF9udW0gPCB0ZXN0X2Nhc2UtPnRvdGFs
X3Rlc3RfY291bnQoKTsKKyAgICAgICAgICsrdGVzdF9udW0pIHsKKyAgICAgIGNvbnN0IDo6dGVz
dGluZzo6VGVzdEluZm8qIHRlc3RfaW5mbyA9IHRlc3RfY2FzZS0+R2V0VGVzdEluZm8odGVzdF9u
dW0pOworICAgICAgdGVzdF9uYW1lcy5pbnNlcnQoc3RkOjpzdHJpbmcodGVzdF9pbmZvLT5uYW1l
KCkpKTsKKyAgICB9CisgIH0KKyAgRVhQRUNUX0VRKDF1LCB0ZXN0X25hbWVzLmNvdW50KCJDdXN0
b21UZXN0TmFtZXMvRnVuY3Rvck5hbWUiKSk7CisgIEVYUEVDVF9FUSgxdSwgdGVzdF9uYW1lcy5j
b3VudCgiQ3VzdG9tVGVzdE5hbWVzL0Z1bmN0aW9uTmFtZSIpKTsKKyNpZiBHVEVTVF9MQU5HX0NY
WDExCisgIEVYUEVDVF9FUSgxdSwgdGVzdF9uYW1lcy5jb3VudCgiQ3VzdG9tVGVzdE5hbWVzL0xh
bWJkYU5hbWUiKSk7CisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKK30KKworLy8gVGVzdCBh
IG51bWVyaWMgbmFtZSB0byBlbnN1cmUgUHJpbnRUb1N0cmluZ1BhcmFtTmFtZSB3b3JrcyBjb3Jy
ZWN0bHkuCisKK2NsYXNzIEN1c3RvbUludGVnZXJOYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRo
UGFyYW08aW50PiB7fTsKKworVEVTVF9QKEN1c3RvbUludGVnZXJOYW1pbmdUZXN0LCBUZXN0c1Jl
cG9ydENvcnJlY3ROYW1lcykgeworICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0
ZXN0X2luZm8gPQorICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJy
ZW50X3Rlc3RfaW5mbygpOworICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07CisgIHRlc3RfbmFt
ZV9zdHJlYW0gPDwgIlRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzLyIgPDwgR2V0UGFyYW0oKTsKKyAg
RVhQRUNUX1NUUkVRKHRlc3RfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19zdHIoKSwgdGVzdF9p
bmZvLT5uYW1lKCkpOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChQcmludFRvU3RyaW5n
LAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tSW50ZWdlck5hbWluZ1Rlc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICBSYW5nZSgwLCA1KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgpKTsKKworLy8gVGVzdCBhIGN1c3Rv
bSBzdHJ1Y3Qgd2l0aCBQcmludFRvU3RyaW5nLgorCitzdHJ1Y3QgQ3VzdG9tU3RydWN0IHsKKyAg
ZXhwbGljaXQgQ3VzdG9tU3RydWN0KGludCB2YWx1ZSkgOiB4KHZhbHVlKSB7fQorICBpbnQgeDsK
K307CisKK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIHN0cmVhbSwgY29u
c3QgQ3VzdG9tU3RydWN0JiB2YWwpIHsKKyAgc3RyZWFtIDw8IHZhbC54OworICByZXR1cm4gc3Ry
ZWFtOworfQorCitjbGFzcyBDdXN0b21TdHJ1Y3ROYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRo
UGFyYW08Q3VzdG9tU3RydWN0PiB7fTsKKworVEVTVF9QKEN1c3RvbVN0cnVjdE5hbWluZ1Rlc3Qs
IFRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzKSB7CisgIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8q
IGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisgIE1lc3NhZ2UgdGVzdF9uYW1lX3N0cmVhbTsKKyAg
dGVzdF9uYW1lX3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMvIiA8PCBHZXRQYXJh
bSgpOworICBFWFBFQ1RfU1RSRVEodGVzdF9uYW1lX3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0cigp
LCB0ZXN0X2luZm8tPm5hbWUoKSk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFByaW50
VG9TdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21TdHJ1Y3ROYW1pbmdUZXN0
LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEN1c3RvbVN0cnVjdCgwKSwgQ3VzdG9t
U3RydWN0KDEpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6UHJpbnRUb1N0
cmluZ1BhcmFtTmFtZSgpKTsKKworLy8gVGVzdCB0aGF0IHVzaW5nIGEgc3RhdGVmdWwgcGFyYW1l
dGVyIG5hbWluZyBmdW5jdGlvbiB3b3JrcyBhcyBleHBlY3RlZC4KKworc3RydWN0IFN0YXRlZnVs
TmFtaW5nRnVuY3RvciB7CisgIFN0YXRlZnVsTmFtaW5nRnVuY3RvcigpIDogc3VtKDApIHt9Cisg
IHN0ZDo6c3RyaW5nIG9wZXJhdG9yKCkoY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPGlu
dD4mIGluZm8pIHsKKyAgICBpbnQgdmFsdWUgPSBpbmZvLnBhcmFtICsgc3VtOworICAgIHN1bSAr
PSBpbmZvLnBhcmFtOworICAgIHJldHVybiA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcodmFsdWUp
OworICB9CisgIGludCBzdW07Cit9OworCitjbGFzcyBTdGF0ZWZ1bE5hbWluZ1Rlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4geworIHByb3RlY3RlZDoKKyAgU3RhdGVm
dWxOYW1pbmdUZXN0KCkgOiBzdW1fKDApIHt9CisgIGludCBzdW1fOworfTsKKworVEVTVF9QKFN0
YXRlZnVsTmFtaW5nVGVzdCwgVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMpIHsKKyAgY29uc3QgOjp0
ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0aW5nOjpVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKyAgc3VtXyArPSBHZXRQ
YXJhbSgpOworICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07CisgIHRlc3RfbmFtZV9zdHJlYW0g
PDwgIlRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzLyIgPDwgc3VtXzsKKyAgRVhQRUNUX1NUUkVRKHRl
c3RfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19zdHIoKSwgdGVzdF9pbmZvLT5uYW1lKCkpOwor
fQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChTdGF0ZWZ1bE5hbWluZ0Z1bmN0b3IsCisgICAg
ICAgICAgICAgICAgICAgICAgICBTdGF0ZWZ1bE5hbWluZ1Rlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICBSYW5nZSgwLCA1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlZnVsTmFt
aW5nRnVuY3RvcigpKTsKKworLy8gQ2xhc3MgdGhhdCBjYW5ub3QgYmUgc3RyZWFtZWQgaW50byBh
biBvc3RyZWFtLiAgSXQgbmVlZHMgdG8gYmUgY29weWFibGUKKy8vIChhbmQsIGluIGNhc2Ugb2Yg
TVNWQywgYWxzbyBhc3NpZ25hYmxlKSBpbiBvcmRlciB0byBiZSBhIHRlc3QgcGFyYW1ldGVyCisv
LyB0eXBlLiAgSXRzIGRlZmF1bHQgY29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVy
YXRvciBkbyBleGFjdGx5CisvLyB3aGF0IHdlIG5lZWQuCitjbGFzcyBVbnN0cmVhbWFibGUgewor
IHB1YmxpYzoKKyAgZXhwbGljaXQgVW5zdHJlYW1hYmxlKGludCB2YWx1ZSkgOiB2YWx1ZV8odmFs
dWUpIHt9CisKKyBwcml2YXRlOgorICBpbnQgdmFsdWVfOworfTsKKworY2xhc3MgQ29tbWVudFRl
c3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxVbnN0cmVhbWFibGU+IHt9OworCitURVNUX1AoQ29t
bWVudFRlc3QsIFRlc3RzQ29ycmVjdGx5UmVwb3J0VW5zdHJlYW1hYmxlUGFyYW1zKSB7CisgIGNv
bnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGlu
Zzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisKKyAgRVhQ
RUNUX0VRKDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgpKSwgdGVzdF9pbmZvLT52
YWx1ZV9wYXJhbSgpKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSW5zdGFudGlhdGlv
bldpdGhDb21tZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbW1lbnRUZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKFVuc3RyZWFtYWJsZSgxKSkpOworCisvLyBWZXJp
ZnkgdGhhdCB3ZSBjYW4gY3JlYXRlIGEgaGllcmFyY2h5IG9mIHRlc3QgZml4dHVyZXMsIHdoZXJl
IHRoZSBiYXNlCisvLyBjbGFzcyBmaXh0dXJlIGlzIG5vdCBwYXJhbWV0ZXJpemVkIGFuZCB0aGUg
ZGVyaXZlZCBjbGFzcyBpcy4gSW4gdGhpcyBjYXNlCisvLyBQYXJhbWV0ZXJpemVkRGVyaXZlZFRl
c3QgaW5oZXJpdHMgZnJvbSBOb25QYXJhbWV0ZXJpemVkQmFzZVRlc3QuICBXZQorLy8gcGVyZm9y
bSBzaW1wbGUgdGVzdHMgb24gYm90aC4KK2NsYXNzIE5vblBhcmFtZXRlcml6ZWRCYXNlVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHB1YmxpYzoKKyAgTm9uUGFyYW1ldGVyaXplZEJh
c2VUZXN0KCkgOiBuXygxNykgeyB9CisgcHJvdGVjdGVkOgorICBpbnQgbl87Cit9OworCitjbGFz
cyBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3QgOiBwdWJsaWMgTm9uUGFyYW1ldGVyaXplZEJhc2VU
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIDo6dGVzdGluZzo6
V2l0aFBhcmFtSW50ZXJmYWNlPGludD4geworIHByb3RlY3RlZDoKKyAgUGFyYW1ldGVyaXplZERl
cml2ZWRUZXN0KCkgOiBjb3VudF8oMCkgeyB9CisgIGludCBjb3VudF87CisgIHN0YXRpYyBpbnQg
Z2xvYmFsX2NvdW50XzsKK307CisKK2ludCBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3Q6Omdsb2Jh
bF9jb3VudF8gPSAwOworCitURVNUX0YoTm9uUGFyYW1ldGVyaXplZEJhc2VUZXN0LCBGaXh0dXJl
SXNJbml0aWFsaXplZCkgeworICBFWFBFQ1RfRVEoMTcsIG5fKTsKK30KKworVEVTVF9QKFBhcmFt
ZXRlcml6ZWREZXJpdmVkVGVzdCwgU2Vlc1NlcXVlbmNlKSB7CisgIEVYUEVDVF9FUSgxNywgbl8p
OworICBFWFBFQ1RfRVEoMCwgY291bnRfKyspOworICBFWFBFQ1RfRVEoR2V0UGFyYW0oKSwgZ2xv
YmFsX2NvdW50XysrKTsKK30KKworY2xhc3MgUGFyYW1ldGVyaXplZERlYXRoVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7IH07CisKK1RFU1RfRihQYXJhbWV0ZXJp
emVkRGVhdGhUZXN0LCBHZXRQYXJhbURpZXNGcm9tVGVzdEYpIHsKKyAgRVhQRUNUX0RFQVRIX0lG
X1NVUFBPUlRFRChHZXRQYXJhbSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuKiB2
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QgLioiKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoUmFuZ2VaZXJvVG9GaXZlLCBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3QsIFJhbmdlKDAsIDUp
KTsKKwogI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogCiBURVNUKENvbXBpbGVUZXN0
LCBDb21iaW5lSXNEZWZpbmVkT25seVdoZW5HdGVzdEhhc1BhcmFtVGVzdElzRGVmaW5lZCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0
X3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90
ZXN0LmgKaW5kZXggYjdmOTQ5MzYxMzdkZmM1ZjNmMmQ1N2ZhNDBkY2FmN2ExNWNiNmI1ZS4uMjZl
YTEyMmIxMGI5ZjljZDcyNDk2ZTE4OWVjYTkwYjJiY2RmY2NlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oCkBAIC0zNywx
OCArMzcsMjAgQEAKICNpZm5kZWYgR1RFU1RfVEVTVF9HVEVTVF9QQVJBTV9URVNUX1RFU1RfSF8K
ICNkZWZpbmUgR1RFU1RfVEVTVF9HVEVTVF9QQVJBTV9URVNUX1RFU1RfSF8KIAotI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2lmIEdURVNUX0hB
U19QQVJBTV9URVNUCiAKIC8vIFRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyBkZWZpbml0aW9uIGFu
ZCBpbnN0YW50aWF0aW9uIG9mIGEgdGVzdAogLy8gaW4gc2VwYXJhdGUgdHJhbnNsYXRpb24gdW5p
dHMuCi1jbGFzcyBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0IDogcHVibGljIDo6dGVzdGluZzo6
VGVzdFdpdGhQYXJhbTxpbnQ+IHt9OworY2xhc3MgRXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7Cit9OwogCiAvLyBUZXN0IGZp
eHR1cmUgZm9yIHRlc3RpbmcgaW5zdGFudGlhdGlvbiBvZiBhIHRlc3QgaW4gbXVsdGlwbGUKIC8v
IHRyYW5zbGF0aW9uIHVuaXRzLgogY2xhc3MgSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xh
aW9uVW5pdHNUZXN0Ci0gICAgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4g
e307CisgICAgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4geworfTsKIAog
I2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3QtcG9ydF90ZXN0LmNjCmluZGV4IDM3MjU4NjAyZmE1Y2Y1YTc3OTk0
N2NkNDI3ZTIwZTkwOWZjOTI1OGQuLjZlYTYwN2JjNzBkMzUyZDY0NjUzYmYyODEyNWE5MWMzMmUw
YjU2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcG9y
dF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcG9ydF90
ZXN0LmNjCkBAIC0zMSwxOCArMzEsMjAgQEAKIC8vCiAvLyBUaGlzIGZpbGUgdGVzdHMgdGhlIGlu
dGVybmFsIGNyb3NzLXBsYXRmb3JtIHN1cHBvcnQgdXRpbGl0aWVzLgogCi0jaW5jbHVkZSA8Z3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0
LXBvcnQuaCIKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKICNpZiBHVEVTVF9PU19NQUMKLSNpbmNs
dWRlIDx0aW1lLmg+CisjIGluY2x1ZGUgPHRpbWUuaD4KICNlbmRpZiAgLy8gR1RFU1RfT1NfTUFD
CiAKKyNpbmNsdWRlIDxsaXN0PgogI2luY2x1ZGUgPHV0aWxpdHk+ICAvLyBGb3Igc3RkOjpwYWly
IGFuZCBzdGQ6Om1ha2VfcGFpci4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgorI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCiAKIC8vIEluZGljYXRlcyB0
aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKIC8vIGlt
cGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBp
cwpAQCAtNTksNiArNjEsMTc0IEBAIHVzaW5nIHN0ZDo6cGFpcjsKIG5hbWVzcGFjZSB0ZXN0aW5n
IHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKK1RFU1QoSXNYRGlnaXRUZXN0LCBXb3Jrc0Zvck5h
cnJvd0FzY2lpKSB7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KCcwJykpOworICBFWFBFQ1RfVFJV
RShJc1hEaWdpdCgnOScpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoJ0EnKSk7CisgIEVYUEVD
VF9UUlVFKElzWERpZ2l0KCdGJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgnYScpKTsKKyAg
RVhQRUNUX1RSVUUoSXNYRGlnaXQoJ2YnKSk7CisKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KCct
JykpOworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoJ2cnKSk7CisgIEVYUEVDVF9GQUxTRShJc1hE
aWdpdCgnRycpKTsKK30KKworVEVTVChJc1hEaWdpdFRlc3QsIFJldHVybnNGYWxzZUZvck5hcnJv
d05vbkFzY2lpKSB7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdCgnXHg4MCcpKTsKKyAgRVhQRUNU
X0ZBTFNFKElzWERpZ2l0KHN0YXRpY19jYXN0PGNoYXI+KCcwJyB8ICdceDgwJykpKTsKK30KKwor
VEVTVChJc1hEaWdpdFRlc3QsIFdvcmtzRm9yV2lkZUFzY2lpKSB7CisgIEVYUEVDVF9UUlVFKElz
WERpZ2l0KEwnMCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoTCc5JykpOworICBFWFBFQ1Rf
VFJVRShJc1hEaWdpdChMJ0EnKSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnRicpKTsKKyAg
RVhQRUNUX1RSVUUoSXNYRGlnaXQoTCdhJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdChMJ2Yn
KSk7CisKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KEwnLScpKTsKKyAgRVhQRUNUX0ZBTFNFKElz
WERpZ2l0KEwnZycpKTsKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KEwnRycpKTsKK30KKworVEVT
VChJc1hEaWdpdFRlc3QsIFJldHVybnNGYWxzZUZvcldpZGVOb25Bc2NpaSkgeworICBFWFBFQ1Rf
RkFMU0UoSXNYRGlnaXQoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHg4MCkpKTsKKyAgRVhQRUNUX0ZB
TFNFKElzWERpZ2l0KHN0YXRpY19jYXN0PHdjaGFyX3Q+KEwnMCcgfCAweDgwKSkpOworICBFWFBF
Q1RfRkFMU0UoSXNYRGlnaXQoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oTCcwJyB8IDB4MTAwKSkpOwor
fQorCitjbGFzcyBCYXNlIHsKKyBwdWJsaWM6CisgIC8vIENvcHkgY29uc3RydWN0b3IgYW5kIGFz
c2lnbm1lbnQgb3BlcmF0b3IgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQsIHNvIHdlCisgIC8vIHVz
ZSB0aGVtLgorICBCYXNlKCkgOiBtZW1iZXJfKDApIHt9CisgIGV4cGxpY2l0IEJhc2UoaW50IG4p
IDogbWVtYmVyXyhuKSB7fQorICB2aXJ0dWFsIH5CYXNlKCkge30KKyAgaW50IG1lbWJlcigpIHsg
cmV0dXJuIG1lbWJlcl87IH0KKworIHByaXZhdGU6CisgIGludCBtZW1iZXJfOworfTsKKworY2xh
c3MgRGVyaXZlZCA6IHB1YmxpYyBCYXNlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IERlcml2ZWQo
aW50IG4pIDogQmFzZShuKSB7fQorfTsKKworVEVTVChJbXBsaWNpdENhc3RUZXN0LCBDb252ZXJ0
c1BvaW50ZXJzKSB7CisgIERlcml2ZWQgZGVyaXZlZCgwKTsKKyAgRVhQRUNUX1RSVUUoJmRlcml2
ZWQgPT0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlKj4oJmRlcml2ZWQp
KTsKK30KKworVEVTVChJbXBsaWNpdENhc3RUZXN0LCBDYW5Vc2VJbmhlcml0YW5jZSkgeworICBE
ZXJpdmVkIGRlcml2ZWQoMSk7CisgIEJhc2UgYmFzZSA9IDo6dGVzdGluZzo6aW50ZXJuYWw6Oklt
cGxpY2l0Q2FzdF88QmFzZT4oZGVyaXZlZCk7CisgIEVYUEVDVF9FUShkZXJpdmVkLm1lbWJlcigp
LCBiYXNlLm1lbWJlcigpKTsKK30KKworY2xhc3MgQ2FzdGFibGUgeworIHB1YmxpYzoKKyAgZXhw
bGljaXQgQ2FzdGFibGUoYm9vbCogY29udmVydGVkKSA6IGNvbnZlcnRlZF8oY29udmVydGVkKSB7
fQorICBvcGVyYXRvciBCYXNlKCkgeworICAgICpjb252ZXJ0ZWRfID0gdHJ1ZTsKKyAgICByZXR1
cm4gQmFzZSgpOworICB9CisKKyBwcml2YXRlOgorICBib29sKiBjb252ZXJ0ZWRfOworfTsKKwor
VEVTVChJbXBsaWNpdENhc3RUZXN0LCBDYW5Vc2VOb25Db25zdENhc3RPcGVyYXRvcikgeworICBi
b29sIGNvbnZlcnRlZCA9IGZhbHNlOworICBDYXN0YWJsZSBjYXN0YWJsZSgmY29udmVydGVkKTsK
KyAgQmFzZSBiYXNlID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlPihj
YXN0YWJsZSk7CisgIEVYUEVDVF9UUlVFKGNvbnZlcnRlZCk7Cit9CisKK2NsYXNzIENvbnN0Q2Fz
dGFibGUgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgQ29uc3RDYXN0YWJsZShib29sKiBjb252ZXJ0
ZWQpIDogY29udmVydGVkXyhjb252ZXJ0ZWQpIHt9CisgIG9wZXJhdG9yIEJhc2UoKSBjb25zdCB7
CisgICAgKmNvbnZlcnRlZF8gPSB0cnVlOworICAgIHJldHVybiBCYXNlKCk7CisgIH0KKworIHBy
aXZhdGU6CisgIGJvb2wqIGNvbnZlcnRlZF87Cit9OworCitURVNUKEltcGxpY2l0Q2FzdFRlc3Qs
IENhblVzZUNvbnN0Q2FzdE9wZXJhdG9yT25Db25zdFZhbHVlcykgeworICBib29sIGNvbnZlcnRl
ZCA9IGZhbHNlOworICBjb25zdCBDb25zdENhc3RhYmxlIGNvbnN0X2Nhc3RhYmxlKCZjb252ZXJ0
ZWQpOworICBCYXNlIGJhc2UgPSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEJh
c2U+KGNvbnN0X2Nhc3RhYmxlKTsKKyAgRVhQRUNUX1RSVUUoY29udmVydGVkKTsKK30KKworY2xh
c3MgQ29uc3RBbmROb25Db25zdENhc3RhYmxlIHsKKyBwdWJsaWM6CisgIENvbnN0QW5kTm9uQ29u
c3RDYXN0YWJsZShib29sKiBjb252ZXJ0ZWQsIGJvb2wqIGNvbnN0X2NvbnZlcnRlZCkKKyAgICAg
IDogY29udmVydGVkXyhjb252ZXJ0ZWQpLCBjb25zdF9jb252ZXJ0ZWRfKGNvbnN0X2NvbnZlcnRl
ZCkge30KKyAgb3BlcmF0b3IgQmFzZSgpIHsKKyAgICAqY29udmVydGVkXyA9IHRydWU7CisgICAg
cmV0dXJuIEJhc2UoKTsKKyAgfQorICBvcGVyYXRvciBCYXNlKCkgY29uc3QgeworICAgICpjb25z
dF9jb252ZXJ0ZWRfID0gdHJ1ZTsKKyAgICByZXR1cm4gQmFzZSgpOworICB9CisKKyBwcml2YXRl
OgorICBib29sKiBjb252ZXJ0ZWRfOworICBib29sKiBjb25zdF9jb252ZXJ0ZWRfOworfTsKKwor
VEVTVChJbXBsaWNpdENhc3RUZXN0LCBDYW5TZWxlY3RCZXR3ZWVuQ29uc3RBbmROb25Db25zdENh
c3JBcHByb3ByaWF0ZWx5KSB7CisgIGJvb2wgY29udmVydGVkID0gZmFsc2U7CisgIGJvb2wgY29u
c3RfY29udmVydGVkID0gZmFsc2U7CisgIENvbnN0QW5kTm9uQ29uc3RDYXN0YWJsZSBjYXN0YWJs
ZSgmY29udmVydGVkLCAmY29uc3RfY29udmVydGVkKTsKKyAgQmFzZSBiYXNlID0gOjp0ZXN0aW5n
OjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlPihjYXN0YWJsZSk7CisgIEVYUEVDVF9UUlVF
KGNvbnZlcnRlZCk7CisgIEVYUEVDVF9GQUxTRShjb25zdF9jb252ZXJ0ZWQpOworCisgIGNvbnZl
cnRlZCA9IGZhbHNlOworICBjb25zdF9jb252ZXJ0ZWQgPSBmYWxzZTsKKyAgY29uc3QgQ29uc3RB
bmROb25Db25zdENhc3RhYmxlIGNvbnN0X2Nhc3RhYmxlKCZjb252ZXJ0ZWQsICZjb25zdF9jb252
ZXJ0ZWQpOworICBiYXNlID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNl
Pihjb25zdF9jYXN0YWJsZSk7CisgIEVYUEVDVF9GQUxTRShjb252ZXJ0ZWQpOworICBFWFBFQ1Rf
VFJVRShjb25zdF9jb252ZXJ0ZWQpOworfQorCitjbGFzcyBUbyB7CisgcHVibGljOgorICBUbyhi
b29sKiBjb252ZXJ0ZWQpIHsgKmNvbnZlcnRlZCA9IHRydWU7IH0gIC8vIE5PTElOVAorfTsKKwor
VEVTVChJbXBsaWNpdENhc3RUZXN0LCBDYW5Vc2VJbXBsaWNpdENvbnN0cnVjdG9yKSB7CisgIGJv
b2wgY29udmVydGVkID0gZmFsc2U7CisgIFRvIHRvID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1w
bGljaXRDYXN0XzxUbz4oJmNvbnZlcnRlZCk7CisgICh2b2lkKXRvOworICBFWFBFQ1RfVFJVRShj
b252ZXJ0ZWQpOworfQorCitURVNUKEl0ZXJhdG9yVHJhaXRzVGVzdCwgV29ya3NGb3JTVExDb250
YWluZXJJdGVyYXRvcnMpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCwKKyAgICAgIEl0ZXJh
dG9yVHJhaXRzPCA6OnN0ZDo6dmVjdG9yPGludD46OmNvbnN0X2l0ZXJhdG9yPjo6dmFsdWVfdHlw
ZT4oKTsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGJvb2wsCisgICAgICBJdGVyYXRvclRyYWl0czwg
OjpzdGQ6Omxpc3Q8Ym9vbD46Oml0ZXJhdG9yPjo6dmFsdWVfdHlwZT4oKTsKK30KKworVEVTVChJ
dGVyYXRvclRyYWl0c1Rlc3QsIFdvcmtzRm9yUG9pbnRlclRvTm9uQ29uc3QpIHsKKyAgU3RhdGlj
QXNzZXJ0VHlwZUVxPGNoYXIsIEl0ZXJhdG9yVHJhaXRzPGNoYXIqPjo6dmFsdWVfdHlwZT4oKTsK
KyAgU3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IHZvaWQqLCBJdGVyYXRvclRyYWl0czxjb25zdCB2
b2lkKio+Ojp2YWx1ZV90eXBlPigpOworfQorCitURVNUKEl0ZXJhdG9yVHJhaXRzVGVzdCwgV29y
a3NGb3JQb2ludGVyVG9Db25zdCkgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y2hhciwgSXRlcmF0
b3JUcmFpdHM8Y29uc3QgY2hhcio+Ojp2YWx1ZV90eXBlPigpOworICBTdGF0aWNBc3NlcnRUeXBl
RXE8Y29uc3Qgdm9pZCosCisgICAgICBJdGVyYXRvclRyYWl0czxjb25zdCB2b2lkKiBjb25zdCo+
Ojp2YWx1ZV90eXBlPigpOworfQorCiAvLyBUZXN0cyB0aGF0IHRoZSBlbGVtZW50X3R5cGUgdHlw
ZWRlZiBpcyBhdmFpbGFibGUgaW4gc2NvcGVkX3B0ciBhbmQgcmVmZXJzCiAvLyB0byB0aGUgcGFy
YW1ldGVyIHR5cGUuCiBURVNUKFNjb3BlZFB0clRlc3QsIERlZmluZXNFbGVtZW50VHlwZSkgewpA
QCAtOTEsNjYgKzI2MSwxMDQgQEAgVEVTVChHdGVzdENoZWNrU3ludGF4VGVzdCwgV29ya3NXaXRo
U3dpdGNoKSB7CiAgICAgICBHVEVTVF9DSEVDS18odHJ1ZSk7CiAgIH0KIAotICBzd2l0Y2goMCkK
KyAgc3dpdGNoICgwKQogICAgIGNhc2UgMDoKICAgICAgIEdURVNUX0NIRUNLXyh0cnVlKSA8PCAi
Q2hlY2sgZmFpbGVkIGluIHN3aXRjaCBjYXNlIjsKIH0KIAotI2lmIEdURVNUX09TX01BQworLy8g
VmVyaWZpZXMgYmVoYXZpb3Igb2YgRm9ybWF0RmlsZUxvY2F0aW9uLgorVEVTVChGb3JtYXRGaWxl
TG9jYXRpb25UZXN0LCBGb3JtYXRzRmlsZUxvY2F0aW9uKSB7CisgIEVYUEVDVF9QUkVEX0ZPUk1B
VDIoSXNTdWJzdHJpbmcsICJmb28uY2MiLCBGb3JtYXRGaWxlTG9jYXRpb24oImZvby5jYyIsIDQy
KSk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICI0MiIsIEZvcm1hdEZpbGVM
b2NhdGlvbigiZm9vLmNjIiwgNDIpKTsKK30KKworVEVTVChGb3JtYXRGaWxlTG9jYXRpb25UZXN0
LCBGb3JtYXRzVW5rbm93bkZpbGUpIHsKKyAgRVhQRUNUX1BSRURfRk9STUFUMigKKyAgICAgIElz
U3Vic3RyaW5nLCAidW5rbm93biBmaWxlIiwgRm9ybWF0RmlsZUxvY2F0aW9uKE5VTEwsIDQyKSk7
CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICI0MiIsIEZvcm1hdEZpbGVMb2Nh
dGlvbihOVUxMLCA0MikpOworfQorCitURVNUKEZvcm1hdEZpbGVMb2NhdGlvblRlc3QsIEZvcm1h
dHNVa25vd25MaW5lKSB7CisgIEVYUEVDVF9FUSgiZm9vLmNjOiIsIEZvcm1hdEZpbGVMb2NhdGlv
bigiZm9vLmNjIiwgLTEpKTsKK30KKworVEVTVChGb3JtYXRGaWxlTG9jYXRpb25UZXN0LCBGb3Jt
YXRzVWtub3duRmlsZUFuZExpbmUpIHsKKyAgRVhQRUNUX0VRKCJ1bmtub3duIGZpbGU6IiwgRm9y
bWF0RmlsZUxvY2F0aW9uKE5VTEwsIC0xKSk7Cit9CisKKy8vIFZlcmlmaWVzIGJlaGF2aW9yIG9m
IEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24uCitURVNUKEZvcm1hdENvbXBp
bGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzRmlsZUxvY2F0aW9uKSB7Cisg
IEVYUEVDVF9FUSgiZm9vLmNjOjQyIiwgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2Nh
dGlvbigiZm9vLmNjIiwgNDIpKTsKK30KKworVEVTVChGb3JtYXRDb21waWxlckluZGVwZW5kZW50
RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c1Vrbm93bkZpbGUpIHsKKyAgRVhQRUNUX0VRKCJ1bmtu
b3duIGZpbGU6NDIiLAorICAgICAgICAgICAgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVM
b2NhdGlvbihOVUxMLCA0MikpOworfQorCitURVNUKEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRG
aWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzVWtub3duTGluZSkgeworICBFWFBFQ1RfRVEoImZvby5j
YyIsIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oImZvby5jYyIsIC0xKSk7
Cit9CisKK1RFU1QoRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvblRlc3QsIEZv
cm1hdHNVa25vd25GaWxlQW5kTGluZSkgeworICBFWFBFQ1RfRVEoInVua25vd24gZmlsZSIsIEZv
cm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oTlVMTCwgLTEpKTsKK30KKworI2lm
IEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19RTlgKIHZvaWQqIFRo
cmVhZEZ1bmModm9pZCogZGF0YSkgewotICBwdGhyZWFkX211dGV4X3QqIG11dGV4ID0gc3RhdGlj
X2Nhc3Q8cHRocmVhZF9tdXRleF90Kj4oZGF0YSk7Ci0gIHB0aHJlYWRfbXV0ZXhfbG9jayhtdXRl
eCk7Ci0gIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKG11dGV4KTsKKyAgaW50ZXJuYWw6Ok11dGV4KiBt
dXRleCA9IHN0YXRpY19jYXN0PGludGVybmFsOjpNdXRleCo+KGRhdGEpOworICBtdXRleC0+TG9j
aygpOworICBtdXRleC0+VW5sb2NrKCk7CiAgIHJldHVybiBOVUxMOwogfQogCiBURVNUKEdldFRo
cmVhZENvdW50VGVzdCwgUmV0dXJuc0NvcnJlY3RWYWx1ZSkgewotICBFWFBFQ1RfRVEoMVUsIEdl
dFRocmVhZENvdW50KCkpOwotICBwdGhyZWFkX211dGV4X3QgbXV0ZXg7Ci0gIHB0aHJlYWRfYXR0
cl90ICBhdHRyOworICBjb25zdCBzaXplX3Qgc3RhcnRpbmdfY291bnQgPSBHZXRUaHJlYWRDb3Vu
dCgpOwogICBwdGhyZWFkX3QgICAgICAgdGhyZWFkX2lkOwogCi0gIC8vIFRPRE8odmxhZGxAZ29v
Z2xlLmNvbSk6IHR1cm4gbXV0ZXggaW50byBpbnRlcm5hbDo6TXV0ZXggZm9yIGF1dG9tYXRpYwot
ICAvLyBkZXN0cnVjdGlvbi4KLSAgcHRocmVhZF9tdXRleF9pbml0KCZtdXRleCwgTlVMTCk7Ci0g
IHB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXgpOwotICBBU1NFUlRfRVEoMCwgcHRocmVhZF9hdHRy
X2luaXQoJmF0dHIpKTsKLSAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXR0cl9zZXRkZXRhY2hzdGF0
ZSgmYXR0ciwgUFRIUkVBRF9DUkVBVEVfSk9JTkFCTEUpKTsKLQotICBjb25zdCBpbnQgc3RhdHVz
ID0gcHRocmVhZF9jcmVhdGUoJnRocmVhZF9pZCwgJmF0dHIsICZUaHJlYWRGdW5jLCAmbXV0ZXgp
OwotICBBU1NFUlRfRVEoMCwgcHRocmVhZF9hdHRyX2Rlc3Ryb3koJmF0dHIpKTsKLSAgQVNTRVJU
X0VRKDAsIHN0YXR1cyk7Ci0gIEVYUEVDVF9FUSgyVSwgR2V0VGhyZWFkQ291bnQoKSk7Ci0gIHB0
aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleCk7CisgIGludGVybmFsOjpNdXRleCBtdXRleDsKKyAg
eworICAgIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXgpOworICAgIHB0aHJlYWRfYXR0
cl90ICBhdHRyOworICAgIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0dHJfaW5pdCgmYXR0cikpOwor
ICAgIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0dHJfc2V0ZGV0YWNoc3RhdGUoJmF0dHIsIFBUSFJF
QURfQ1JFQVRFX0pPSU5BQkxFKSk7CisKKyAgICBjb25zdCBpbnQgc3RhdHVzID0gcHRocmVhZF9j
cmVhdGUoJnRocmVhZF9pZCwgJmF0dHIsICZUaHJlYWRGdW5jLCAmbXV0ZXgpOworICAgIEFTU0VS
VF9FUSgwLCBwdGhyZWFkX2F0dHJfZGVzdHJveSgmYXR0cikpOworICAgIEFTU0VSVF9FUSgwLCBz
dGF0dXMpOworICAgIEVYUEVDVF9FUShzdGFydGluZ19jb3VudCArIDEsIEdldFRocmVhZENvdW50
KCkpOworICB9CiAKICAgdm9pZCogZHVtbXk7CiAgIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2pvaW4o
dGhyZWFkX2lkLCAmZHVtbXkpKTsKIAotICAvLyBNYWNPUyBYIG1heSBub3QgaW1tZWRpYXRlbHkg
cmVwb3J0IHRoZSB1cGRhdGVkIHRocmVhZCBjb3VudCBhZnRlcgorICAvLyBUaGUgT1MgbWF5IG5v
dCBpbW1lZGlhdGVseSByZXBvcnQgdGhlIHVwZGF0ZWQgdGhyZWFkIGNvdW50IGFmdGVyCiAgIC8v
IGpvaW5pbmcgYSB0aHJlYWQsIGNhdXNpbmcgZmxha2luZXNzIGluIHRoaXMgdGVzdC4gVG8gY291
bnRlciB0aGF0LCB3ZQogICAvLyB3YWl0IGZvciB1cCB0byAuNSBzZWNvbmRzIGZvciB0aGUgT1Mg
dG8gcmVwb3J0IHRoZSBjb3JyZWN0IHZhbHVlLgogICBmb3IgKGludCBpID0gMDsgaSA8IDU7ICsr
aSkgewotICAgIGlmIChHZXRUaHJlYWRDb3VudCgpID09IDEpCisgICAgaWYgKEdldFRocmVhZENv
dW50KCkgPT0gc3RhcnRpbmdfY291bnQpCiAgICAgICBicmVhazsKIAogICAgIFNsZWVwTWlsbGlz
ZWNvbmRzKDEwMCk7CiAgIH0KLSAgRVhQRUNUX0VRKDFVLCBHZXRUaHJlYWRDb3VudCgpKTsKLSAg
cHRocmVhZF9tdXRleF9kZXN0cm95KCZtdXRleCk7CisKKyAgRVhQRUNUX0VRKHN0YXJ0aW5nX2Nv
dW50LCBHZXRUaHJlYWRDb3VudCgpKTsKIH0KICNlbHNlCiBURVNUKEdldFRocmVhZENvdW50VGVz
dCwgUmV0dXJuc1plcm9XaGVuVW5hYmxlVG9Db3VudFRocmVhZHMpIHsKICAgRVhQRUNUX0VRKDBV
LCBHZXRUaHJlYWRDb3VudCgpKTsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfTUFDCisjZW5kaWYg
IC8vIEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19RTlgKIAogVEVT
VChHdGVzdENoZWNrRGVhdGhUZXN0LCBEaWVzV2l0aENvcnJlY3RPdXRwdXRPbkZhaWx1cmUpIHsK
ICAgY29uc3QgYm9vbCBhX2ZhbHNlX2NvbmRpdGlvbiA9IGZhbHNlOwogICBjb25zdCBjaGFyIHJl
Z2V4W10gPQogI2lmZGVmIF9NU0NfVkVSCiAgICAgICJndGVzdC1wb3J0X3Rlc3RcXC5jY1xcKFxc
ZCtcXCk6IgotI2Vsc2UKKyNlbGlmIEdURVNUX1VTRVNfUE9TSVhfUkUKICAgICAgImd0ZXN0LXBv
cnRfdGVzdFxcLmNjOlswLTldKyIKKyNlbHNlCisgICAgICJndGVzdC1wb3J0X3Rlc3RcXC5jYzpc
XGQrIgogI2VuZGlmICAvLyBfTVNDX1ZFUgogICAgICAiLiphX2ZhbHNlX2NvbmRpdGlvbi4qRXh0
cmEgaW5mby4qIjsKIApAQCAtMTcwLDkgKzM3OCwyNiBAQCBURVNUKEd0ZXN0Q2hlY2tEZWF0aFRl
c3QsIExpdmVzU2lsZW50bHlPblN1Y2Nlc3MpIHsKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVB
VEhfVEVTVAogCisvLyBWZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IGNob29zZSByZWd1bGFyIGV4
cHJlc3Npb24gZW5naW5lIGFwcHJvcHJpYXRlIHRvCisvLyB0aGUgcGxhdGZvcm0uIFRoZSB0ZXN0
IHdpbGwgcHJvZHVjZSBjb21waWxlciBlcnJvcnMgaW4gY2FzZSBvZiBmYWlsdXJlLgorLy8gRm9y
IHNpbXBsaWNpdHksIHdlIG9ubHkgY292ZXIgdGhlIG1vc3QgaW1wb3J0YW50IHBsYXRmb3JtcyBo
ZXJlLgorVEVTVChSZWdleEVuZ2luZVNlbGVjdGlvblRlc3QsIFNlbGVjdHNDb3JyZWN0UmVnZXhF
bmdpbmUpIHsKKyNpZiAhR1RFU1RfVVNFU19QQ1JFCisjIGlmIEdURVNUX0hBU19QT1NJWF9SRQor
CisgIEVYUEVDVF9UUlVFKEdURVNUX1VTRVNfUE9TSVhfUkUpOworCisjIGVsc2UKKworICBFWFBF
Q1RfVFJVRShHVEVTVF9VU0VTX1NJTVBMRV9SRSk7CisKKyMgZW5kaWYKKyNlbmRpZiAgLy8gIUdU
RVNUX1VTRVNfUENSRQorfQorCiAjaWYgR1RFU1RfVVNFU19QT1NJWF9SRQogCi0jaWYgR1RFU1Rf
SEFTX1RZUEVEX1RFU1QKKyMgaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFN0cj4KIGNsYXNzIFJFVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CkBA
IC0xODEsOSArNDA2LDkgQEAgY2xhc3MgUkVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
fTsKIC8vIHN1cHBvcnRzLgogdHlwZWRlZiB0ZXN0aW5nOjpUeXBlczwKICAgICA6OnN0ZDo6c3Ry
aW5nLAotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisjICBpZiBHVEVTVF9IQVNfR0xPQkFM
X1NUUklORwogICAgIDo6c3RyaW5nLAotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklO
RworIyAgZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCiAgICAgY29uc3QgY2hhcio+
IFN0cmluZ1R5cGVzOwogCiBUWVBFRF9URVNUX0NBU0UoUkVUZXN0LCBTdHJpbmdUeXBlcyk7CkBA
IC0yMzQsNyArNDU5LDcgQEAgVFlQRURfVEVTVChSRVRlc3QsIFBhcnRpYWxNYXRjaFdvcmtzKSB7
CiAgIEVYUEVDVF9GQUxTRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgienphIiksIHJlKSk7
CiB9CiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QKKyMgZW5kaWYgIC8vIEdURVNU
X0hBU19UWVBFRF9URVNUCiAKICNlbGlmIEdURVNUX1VTRVNfU0lNUExFX1JFCiAKQEAgLTI1Miwz
MyArNDc3LDMzIEBAIFRFU1QoSXNJblNldFRlc3QsIFdvcmtzRm9yTm9uTnVsQ2hhcnMpIHsKICAg
RVhQRUNUX1RSVUUoSXNJblNldCgnYicsICJhYiIpKTsKIH0KIAotVEVTVChJc0RpZ2l0VGVzdCwg
SXNGYWxzZUZvck5vbkRpZ2l0KSB7Ci0gIEVYUEVDVF9GQUxTRShJc0RpZ2l0KCdcMCcpKTsKLSAg
RVhQRUNUX0ZBTFNFKElzRGlnaXQoJyAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0RpZ2l0KCcrJykp
OwotICBFWFBFQ1RfRkFMU0UoSXNEaWdpdCgnLScpKTsKLSAgRVhQRUNUX0ZBTFNFKElzRGlnaXQo
Jy4nKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0RpZ2l0KCdhJykpOworVEVTVChJc0FzY2lpRGlnaXRU
ZXN0LCBJc0ZhbHNlRm9yTm9uRGlnaXQpIHsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlEaWdpdCgn
XDAnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpRGlnaXQoJyAnKSk7CisgIEVYUEVDVF9GQUxT
RShJc0FzY2lpRGlnaXQoJysnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpRGlnaXQoJy0nKSk7
CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpRGlnaXQoJy4nKSk7CisgIEVYUEVDVF9GQUxTRShJc0Fz
Y2lpRGlnaXQoJ2EnKSk7CiB9CiAKLVRFU1QoSXNEaWdpdFRlc3QsIElzVHJ1ZUZvckRpZ2l0KSB7
Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQoJzAnKSk7Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQoJzEn
KSk7Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQoJzUnKSk7Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQo
JzknKSk7CitURVNUKElzQXNjaWlEaWdpdFRlc3QsIElzVHJ1ZUZvckRpZ2l0KSB7CisgIEVYUEVD
VF9UUlVFKElzQXNjaWlEaWdpdCgnMCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaURpZ2l0KCcx
JykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpRGlnaXQoJzUnKSk7CisgIEVYUEVDVF9UUlVFKElz
QXNjaWlEaWdpdCgnOScpKTsKIH0KIAotVEVTVChJc1B1bmN0VGVzdCwgSXNGYWxzZUZvck5vblB1
bmN0KSB7Ci0gIEVYUEVDVF9GQUxTRShJc1B1bmN0KCdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElz
UHVuY3QoJyAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1B1bmN0KCdcbicpKTsKLSAgRVhQRUNUX0ZB
TFNFKElzUHVuY3QoJ2EnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1B1bmN0KCcwJykpOworVEVTVChJ
c0FzY2lpUHVuY3RUZXN0LCBJc0ZhbHNlRm9yTm9uUHVuY3QpIHsKKyAgRVhQRUNUX0ZBTFNFKElz
QXNjaWlQdW5jdCgnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3QoJyAnKSk7Cisg
IEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3QoJ1xuJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2Np
aVB1bmN0KCdhJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVB1bmN0KCcwJykpOwogfQogCi1U
RVNUKElzUHVuY3RUZXN0LCBJc1RydWVGb3JQdW5jdCkgeworVEVTVChJc0FzY2lpUHVuY3RUZXN0
LCBJc1RydWVGb3JQdW5jdCkgewogICBmb3IgKGNvbnN0IGNoYXIqIHAgPSAiXi0hXCIjJCUmJygp
KissLi86Ozw9Pj9AW1xcXV9ge3x9fiI7ICpwOyBwKyspIHsKLSAgICBFWFBFQ1RfUFJFRDEoSXNQ
dW5jdCwgKnApOworICAgIEVYUEVDVF9QUkVEMShJc0FzY2lpUHVuY3QsICpwKTsKICAgfQogfQog
CkBAIC0yOTYsNDcgKzUyMSw0NyBAQCBURVNUKElzUmVwZWF0VGVzdCwgSXNUcnVlRm9yUmVwZWF0
Q2hhcikgewogICBFWFBFQ1RfVFJVRShJc1JlcGVhdCgnKycpKTsKIH0KIAotVEVTVChJc1doaXRl
U3BhY2VUZXN0LCBJc0ZhbHNlRm9yTm9uV2hpdGVTcGFjZSkgewotICBFWFBFQ1RfRkFMU0UoSXNX
aGl0ZVNwYWNlKCdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV2hpdGVTcGFjZSgnYScpKTsKLSAg
RVhQRUNUX0ZBTFNFKElzV2hpdGVTcGFjZSgnMScpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV2hpdGVT
cGFjZSgnKycpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV2hpdGVTcGFjZSgnXycpKTsKK1RFU1QoSXNB
c2NpaVdoaXRlU3BhY2VUZXN0LCBJc0ZhbHNlRm9yTm9uV2hpdGVTcGFjZSkgeworICBFWFBFQ1Rf
RkFMU0UoSXNBc2NpaVdoaXRlU3BhY2UoJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdo
aXRlU3BhY2UoJ2EnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV2hpdGVTcGFjZSgnMScpKTsK
KyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXaGl0ZVNwYWNlKCcrJykpOworICBFWFBFQ1RfRkFMU0Uo
SXNBc2NpaVdoaXRlU3BhY2UoJ18nKSk7CiB9CiAKLVRFU1QoSXNXaGl0ZVNwYWNlVGVzdCwgSXNU
cnVlRm9yV2hpdGVTcGFjZSkgewotICBFWFBFQ1RfVFJVRShJc1doaXRlU3BhY2UoJyAnKSk7Ci0g
IEVYUEVDVF9UUlVFKElzV2hpdGVTcGFjZSgnXG4nKSk7Ci0gIEVYUEVDVF9UUlVFKElzV2hpdGVT
cGFjZSgnXHInKSk7Ci0gIEVYUEVDVF9UUlVFKElzV2hpdGVTcGFjZSgnXHQnKSk7Ci0gIEVYUEVD
VF9UUlVFKElzV2hpdGVTcGFjZSgnXHYnKSk7Ci0gIEVYUEVDVF9UUlVFKElzV2hpdGVTcGFjZSgn
XGYnKSk7CitURVNUKElzQXNjaWlXaGl0ZVNwYWNlVGVzdCwgSXNUcnVlRm9yV2hpdGVTcGFjZSkg
eworICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnICcpKTsKKyAgRVhQRUNUX1RSVUUo
SXNBc2NpaVdoaXRlU3BhY2UoJ1xuJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFj
ZSgnXHInKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXaGl0ZVNwYWNlKCdcdCcpKTsKKyAgRVhQ
RUNUX1RSVUUoSXNBc2NpaVdoaXRlU3BhY2UoJ1x2JykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lp
V2hpdGVTcGFjZSgnXGYnKSk7CiB9CiAKLVRFU1QoSXNXb3JkQ2hhclRlc3QsIElzRmFsc2VGb3JO
b25Xb3JkQ2hhcikgewotICBFWFBFQ1RfRkFMU0UoSXNXb3JkQ2hhcignXDAnKSk7Ci0gIEVYUEVD
VF9GQUxTRShJc1dvcmRDaGFyKCcrJykpOwotICBFWFBFQ1RfRkFMU0UoSXNXb3JkQ2hhcignLicp
KTsKLSAgRVhQRUNUX0ZBTFNFKElzV29yZENoYXIoJyAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1dv
cmRDaGFyKCdcbicpKTsKK1RFU1QoSXNBc2NpaVdvcmRDaGFyVGVzdCwgSXNGYWxzZUZvck5vbldv
cmRDaGFyKSB7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV29yZENoYXIoJ1wwJykpOworICBFWFBF
Q1RfRkFMU0UoSXNBc2NpaVdvcmRDaGFyKCcrJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdv
cmRDaGFyKCcuJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdvcmRDaGFyKCcgJykpOworICBF
WFBFQ1RfRkFMU0UoSXNBc2NpaVdvcmRDaGFyKCdcbicpKTsKIH0KIAotVEVTVChJc1dvcmRDaGFy
VGVzdCwgSXNUcnVlRm9yTGV0dGVyKSB7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJ2EnKSk7
Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJ2InKSk7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENo
YXIoJ0EnKSk7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJ1onKSk7CitURVNUKElzQXNjaWlX
b3JkQ2hhclRlc3QsIElzVHJ1ZUZvckxldHRlcikgeworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29y
ZENoYXIoJ2EnKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignYicpKTsKKyAgRVhQ
RUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCdBJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29y
ZENoYXIoJ1onKSk7CiB9CiAKLVRFU1QoSXNXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvckRpZ2l0KSB7
Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJzAnKSk7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENo
YXIoJzEnKSk7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJzcnKSk7Ci0gIEVYUEVDVF9UUlVF
KElzV29yZENoYXIoJzknKSk7CitURVNUKElzQXNjaWlXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvckRp
Z2l0KSB7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignMCcpKTsKKyAgRVhQRUNUX1RS
VUUoSXNBc2NpaVdvcmRDaGFyKCcxJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIo
JzcnKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignOScpKTsKIH0KIAotVEVTVChJ
c1dvcmRDaGFyVGVzdCwgSXNUcnVlRm9yVW5kZXJzY29yZSkgewotICBFWFBFQ1RfVFJVRShJc1dv
cmRDaGFyKCdfJykpOworVEVTVChJc0FzY2lpV29yZENoYXJUZXN0LCBJc1RydWVGb3JVbmRlcnNj
b3JlKSB7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignXycpKTsKIH0KIAogVEVTVChJ
c1ZhbGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZvck5vblByaW50YWJsZSkgewpAQCAtNzM2LDcgKzk2
MSw3IEBAIFRFU1QoQ2FwdHVyZVRlc3QsIENhcHR1cmVzU3Rkb3V0QW5kU3RkZXJyKSB7CiAKIFRF
U1QoQ2FwdHVyZURlYXRoVGVzdCwgQ2Fubm90UmVlbnRlclN0ZG91dENhcHR1cmUpIHsKICAgQ2Fw
dHVyZVN0ZG91dCgpOwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKENhcHR1cmVTdGRvdXQo
KTssCisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoQ2FwdHVyZVN0ZG91dCgpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJPbmx5IG9uZSBzdGRvdXQgY2FwdHVyZXIgY2FuIGV4aXN0
IGF0IGEgdGltZSIpOwogICBHZXRDYXB0dXJlZFN0ZG91dCgpOwogCkBAIC03NzUsMjMgKzEwMDAs
MjQgQEAgVEVTVChUaHJlYWRMb2NhbFRlc3QsIFZhbHVlRGVmYXVsdENvbnRydWN0b3JJc05vdFJl
cXVpcmVkRm9yUGFyYW1WZXJzaW9uKSB7CiB9CiAKIFRFU1QoVGhyZWFkTG9jYWxUZXN0LCBHZXRB
bmRQb2ludGVyUmV0dXJuU2FtZVZhbHVlKSB7Ci0gIFRocmVhZExvY2FsPFN0cmluZz4gdGhyZWFk
X2xvY2FsOworICBUaHJlYWRMb2NhbDxzdGQ6OnN0cmluZz4gdGhyZWFkX2xvY2FsX3N0cmluZzsK
IAotICBFWFBFQ1RfRVEodGhyZWFkX2xvY2FsLnBvaW50ZXIoKSwgJih0aHJlYWRfbG9jYWwuZ2V0
KCkpKTsKKyAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpLCAmKHRocmVh
ZF9sb2NhbF9zdHJpbmcuZ2V0KCkpKTsKIAogICAvLyBWZXJpZmllcyB0aGUgY29uZGl0aW9uIHN0
aWxsIGhvbGRzIGFmdGVyIGNhbGxpbmcgc2V0LgotICB0aHJlYWRfbG9jYWwuc2V0KCJmb28iKTsK
LSAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbC5wb2ludGVyKCksICYodGhyZWFkX2xvY2FsLmdldCgp
KSk7CisgIHRocmVhZF9sb2NhbF9zdHJpbmcuc2V0KCJmb28iKTsKKyAgRVhQRUNUX0VRKHRocmVh
ZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpLCAmKHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkpKTsK
IH0KIAogVEVTVChUaHJlYWRMb2NhbFRlc3QsIFBvaW50ZXJBbmRDb25zdFBvaW50ZXJSZXR1cm5T
YW1lVmFsdWUpIHsKLSAgVGhyZWFkTG9jYWw8U3RyaW5nPiB0aHJlYWRfbG9jYWw7Ci0gIGNvbnN0
IFRocmVhZExvY2FsPFN0cmluZz4mIGNvbnN0X3RocmVhZF9sb2NhbCA9IHRocmVhZF9sb2NhbDsK
KyAgVGhyZWFkTG9jYWw8c3RkOjpzdHJpbmc+IHRocmVhZF9sb2NhbF9zdHJpbmc7CisgIGNvbnN0
IFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiYgY29uc3RfdGhyZWFkX2xvY2FsX3N0cmluZyA9Cisg
ICAgICB0aHJlYWRfbG9jYWxfc3RyaW5nOwogCi0gIEVYUEVDVF9FUSh0aHJlYWRfbG9jYWwucG9p
bnRlcigpLCBjb25zdF90aHJlYWRfbG9jYWwucG9pbnRlcigpKTsKKyAgRVhQRUNUX0VRKHRocmVh
ZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpLCBjb25zdF90aHJlYWRfbG9jYWxfc3RyaW5nLnBvaW50
ZXIoKSk7CiAKLSAgdGhyZWFkX2xvY2FsLnNldCgiZm9vIik7Ci0gIEVYUEVDVF9FUSh0aHJlYWRf
bG9jYWwucG9pbnRlcigpLCBjb25zdF90aHJlYWRfbG9jYWwucG9pbnRlcigpKTsKKyAgdGhyZWFk
X2xvY2FsX3N0cmluZy5zZXQoImZvbyIpOworICBFWFBFQ1RfRVEodGhyZWFkX2xvY2FsX3N0cmlu
Zy5wb2ludGVyKCksIGNvbnN0X3RocmVhZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpKTsKIH0KIAog
I2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKQEAgLTgzMSwxMSArMTA1NywxMyBAQCBjbGFzcyBBdG9t
aWNDb3VudGVyV2l0aE11dGV4IHsKICAgICBNdXRleExvY2sgbG9jayhtdXRleF8pOwogICAgIGlu
dCB0ZW1wID0gdmFsdWVfOwogICAgIHsKLSAgICAgIC8vIExvY2tpbmcgYSBtdXRleCBwdXRzIHVw
IGEgbWVtb3J5IGJhcnJpZXIsIHByZXZlbnRpbmcgcmVhZHMgYW5kCi0gICAgICAvLyB3cml0ZXMg
dG8gdmFsdWVfIHJlYXJyYW5nZWQgd2hlbiBvYnNlcnZlZCBmcm9tIG90aGVyIHRocmVhZHMuCi0g
ICAgICAvLwotICAgICAgLy8gV2UgY2Fubm90IHVzZSBNdXRleCBhbmQgTXV0ZXhMb2NrIGhlcmUg
b3IgcmVseSBvbiB0aGVpciBtZW1vcnkKLSAgICAgIC8vIGJhcnJpZXIgZnVuY3Rpb25hbGl0eSBh
cyB3ZSBhcmUgdGVzdGluZyB0aGVtIGhlcmUuCisgICAgICAvLyBXZSBuZWVkIHRvIHB1dCB1cCBh
IG1lbW9yeSBiYXJyaWVyIHRvIHByZXZlbnQgcmVhZHMgYW5kIHdyaXRlcyB0bworICAgICAgLy8g
dmFsdWVfIHJlYXJyYW5nZWQgd2l0aCB0aGUgY2FsbCB0byBTbGVlcE1pbGxpc2Vjb25kcyB3aGVu
IG9ic2VydmVkCisgICAgICAvLyBmcm9tIG90aGVyIHRocmVhZHMuCisjaWYgR1RFU1RfSEFTX1BU
SFJFQUQKKyAgICAgIC8vIE9uIFBPU0lYLCBsb2NraW5nIGEgbXV0ZXggcHV0cyB1cCBhIG1lbW9y
eSBiYXJyaWVyLiAgV2UgY2Fubm90IHVzZQorICAgICAgLy8gTXV0ZXggYW5kIE11dGV4TG9jayBo
ZXJlIG9yIHJlbHkgb24gdGhlaXIgbWVtb3J5IGJhcnJpZXIKKyAgICAgIC8vIGZ1bmN0aW9uYWxp
dHkgYXMgd2UgYXJlIHRlc3RpbmcgdGhlbSBoZXJlLgogICAgICAgcHRocmVhZF9tdXRleF90IG1l
bW9yeV9iYXJyaWVyX211dGV4OwogICAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18oCiAg
ICAgICAgICAgcHRocmVhZF9tdXRleF9pbml0KCZtZW1vcnlfYmFycmllcl9tdXRleCwgTlVMTCkp
OwpAQCAtODQ0LDYgKzEwNzIsMTYgQEAgY2xhc3MgQXRvbWljQ291bnRlcldpdGhNdXRleCB7CiAg
ICAgICBTbGVlcE1pbGxpc2Vjb25kcyhyYW5kb21fLkdlbmVyYXRlKDMwKSk7CiAKICAgICAgIEdU
RVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtZW1vcnlfYmFy
cmllcl9tdXRleCkpOworICAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9t
dXRleF9kZXN0cm95KCZtZW1vcnlfYmFycmllcl9tdXRleCkpOworI2VsaWYgR1RFU1RfT1NfV0lO
RE9XUworICAgICAgLy8gT24gV2luZG93cywgcGVyZm9ybWluZyBhbiBpbnRlcmxvY2tlZCBhY2Nl
c3MgcHV0cyB1cCBhIG1lbW9yeSBiYXJyaWVyLgorICAgICAgdm9sYXRpbGUgTE9ORyBkdW1teSA9
IDA7CisgICAgICA6OkludGVybG9ja2VkSW5jcmVtZW50KCZkdW1teSk7CisgICAgICBTbGVlcE1p
bGxpc2Vjb25kcyhyYW5kb21fLkdlbmVyYXRlKDMwKSk7CisgICAgICA6OkludGVybG9ja2VkSW5j
cmVtZW50KCZkdW1teSk7CisjZWxzZQorIyBlcnJvciAiTWVtb3J5IGJhcnJpZXIgbm90IGltcGxl
bWVudGVkIG9uIHRoaXMgcGxhdGZvcm0uIgorI2VuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVBRAog
ICAgIH0KICAgICB2YWx1ZV8gPSB0ZW1wICsgMTsKICAgfQpAQCAtODk1LDEyNCArMTEzMywxNzIg
QEAgdm9pZCBSdW5Gcm9tVGhyZWFkKHZvaWQgKGZ1bmMpKFQpLCBUIHBhcmFtKSB7CiAgIHRocmVh
ZC5Kb2luKCk7CiB9CiAKLXZvaWQgUmV0cmlldmVUaHJlYWRMb2NhbFZhbHVlKHBhaXI8VGhyZWFk
TG9jYWw8U3RyaW5nPiosIFN0cmluZyo+IHBhcmFtKSB7Cit2b2lkIFJldHJpZXZlVGhyZWFkTG9j
YWxWYWx1ZSgKKyAgICBwYWlyPFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiosIHN0ZDo6c3RyaW5n
Kj4gcGFyYW0pIHsKICAgKnBhcmFtLnNlY29uZCA9IHBhcmFtLmZpcnN0LT5nZXQoKTsKIH0KIAog
VEVTVChUaHJlYWRMb2NhbFRlc3QsIFBhcmFtZXRlcml6ZWRDb25zdHJ1Y3RvclNldHNEZWZhdWx0
KSB7Ci0gIFRocmVhZExvY2FsPFN0cmluZz4gdGhyZWFkX2xvY2FsKCJmb28iKTsKLSAgRVhQRUNU
X1NUUkVRKCJmb28iLCB0aHJlYWRfbG9jYWwuZ2V0KCkuY19zdHIoKSk7CisgIFRocmVhZExvY2Fs
PHN0ZDo6c3RyaW5nPiB0aHJlYWRfbG9jYWxfc3RyaW5nKCJmb28iKTsKKyAgRVhQRUNUX1NUUkVR
KCJmb28iLCB0aHJlYWRfbG9jYWxfc3RyaW5nLmdldCgpLmNfc3RyKCkpOwogCi0gIHRocmVhZF9s
b2NhbC5zZXQoImJhciIpOwotICBFWFBFQ1RfU1RSRVEoImJhciIsIHRocmVhZF9sb2NhbC5nZXQo
KS5jX3N0cigpKTsKKyAgdGhyZWFkX2xvY2FsX3N0cmluZy5zZXQoImJhciIpOworICBFWFBFQ1Rf
U1RSRVEoImJhciIsIHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkuY19zdHIoKSk7CiAKLSAgU3Ry
aW5nIHJlc3VsdDsKLSAgUnVuRnJvbVRocmVhZCgmUmV0cmlldmVUaHJlYWRMb2NhbFZhbHVlLCBt
YWtlX3BhaXIoJnRocmVhZF9sb2NhbCwgJnJlc3VsdCkpOworICBzdGQ6OnN0cmluZyByZXN1bHQ7
CisgIFJ1bkZyb21UaHJlYWQoJlJldHJpZXZlVGhyZWFkTG9jYWxWYWx1ZSwKKyAgICAgICAgICAg
ICAgICBtYWtlX3BhaXIoJnRocmVhZF9sb2NhbF9zdHJpbmcsICZyZXN1bHQpKTsKICAgRVhQRUNU
X1NUUkVRKCJmb28iLCByZXN1bHQuY19zdHIoKSk7CiB9CiAKKy8vIEtlZXBzIHRyYWNrIG9mIHdo
ZXRoZXIgb2YgZGVzdHJ1Y3RvcnMgYmVpbmcgY2FsbGVkIG9uIGluc3RhbmNlcyBvZgorLy8gRGVz
dHJ1Y3RvclRyYWNrZXIuICBPbiBXaW5kb3dzLCB3YWl0cyBmb3IgdGhlIGRlc3RydWN0b3IgY2Fs
bCByZXBvcnRzLgorY2xhc3MgRGVzdHJ1Y3RvckNhbGwgeworIHB1YmxpYzoKKyAgRGVzdHJ1Y3Rv
ckNhbGwoKSB7CisgICAgaW52b2tlZF8gPSBmYWxzZTsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisg
ICAgd2FpdF9ldmVudF8uUmVzZXQoOjpDcmVhdGVFdmVudChOVUxMLCBUUlVFLCBGQUxTRSwgTlVM
TCkpOworICAgIEdURVNUX0NIRUNLXyh3YWl0X2V2ZW50Xy5HZXQoKSAhPSBOVUxMKTsKKyNlbmRp
ZgorICB9CisKKyAgYm9vbCBDaGVja0Rlc3Ryb3llZCgpIGNvbnN0IHsKKyNpZiBHVEVTVF9PU19X
SU5ET1dTCisgICAgaWYgKDo6V2FpdEZvclNpbmdsZU9iamVjdCh3YWl0X2V2ZW50Xy5HZXQoKSwg
MTAwMCkgIT0gV0FJVF9PQkpFQ1RfMCkKKyAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAg
IHJldHVybiBpbnZva2VkXzsKKyAgfQorCisgIHZvaWQgUmVwb3J0RGVzdHJveWVkKCkgeworICAg
IGludm9rZWRfID0gdHJ1ZTsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgICAgOjpTZXRFdmVudCh3
YWl0X2V2ZW50Xy5HZXQoKSk7CisjZW5kaWYKKyAgfQorCisgIHN0YXRpYyBzdGQ6OnZlY3RvcjxE
ZXN0cnVjdG9yQ2FsbCo+JiBMaXN0KCkgeyByZXR1cm4gKmxpc3RfOyB9CisKKyAgc3RhdGljIHZv
aWQgUmVzZXRMaXN0KCkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdF8tPnNpemUo
KTsgKytpKSB7CisgICAgICBkZWxldGUgbGlzdF8tPmF0KGkpOworICAgIH0KKyAgICBsaXN0Xy0+
Y2xlYXIoKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgYm9vbCBpbnZva2VkXzsKKyNpZiBHVEVTVF9P
U19XSU5ET1dTCisgIEF1dG9IYW5kbGUgd2FpdF9ldmVudF87CisjZW5kaWYKKyAgc3RhdGljIHN0
ZDo6dmVjdG9yPERlc3RydWN0b3JDYWxsKj4qIGNvbnN0IGxpc3RfOworCisgIEdURVNUX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTl8oRGVzdHJ1Y3RvckNhbGwpOworfTsKKworc3RkOjp2ZWN0b3I8
RGVzdHJ1Y3RvckNhbGwqPiogY29uc3QgRGVzdHJ1Y3RvckNhbGw6Omxpc3RfID0KKyAgICBuZXcg
c3RkOjp2ZWN0b3I8RGVzdHJ1Y3RvckNhbGwqPjsKKwogLy8gRGVzdHJ1Y3RvclRyYWNrZXIga2Vl
cHMgdHJhY2sgb2Ygd2hldGhlciBpdHMgaW5zdGFuY2VzIGhhdmUgYmVlbgogLy8gZGVzdHJveWVk
Lgotc3RhdGljIHN0ZDo6dmVjdG9yPGJvb2w+IGdfZGVzdHJveWVkOwotCiBjbGFzcyBEZXN0cnVj
dG9yVHJhY2tlciB7CiAgcHVibGljOgogICBEZXN0cnVjdG9yVHJhY2tlcigpIDogaW5kZXhfKEdl
dE5ld0luZGV4KCkpIHt9CiAgIERlc3RydWN0b3JUcmFja2VyKGNvbnN0IERlc3RydWN0b3JUcmFj
a2VyJiAvKiByaHMgKi8pCiAgICAgICA6IGluZGV4XyhHZXROZXdJbmRleCgpKSB7fQogICB+RGVz
dHJ1Y3RvclRyYWNrZXIoKSB7Ci0gICAgLy8gV2UgbmV2ZXIgYWNjZXNzIGdfZGVzdHJveWVkIGNv
bmN1cnJlbnRseSwgc28gd2UgZG9uJ3QgbmVlZCB0bwotICAgIC8vIHByb3RlY3QgdGhlIHdyaXRl
IG9wZXJhdGlvbiB1bmRlciBhIG11dGV4LgotICAgIGdfZGVzdHJveWVkW2luZGV4X10gPSB0cnVl
OworICAgIC8vIFdlIG5ldmVyIGFjY2VzcyBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpIGNvbmN1cnJl
bnRseSwgc28gd2UgZG9uJ3QgbmVlZAorICAgIC8vIHRvIHByb3RlY3QgdGhpcyBhY2NjZXNzIHdp
dGggYSBtdXRleC4KKyAgICBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpW2luZGV4X10tPlJlcG9ydERl
c3Ryb3llZCgpOwogICB9CiAKICBwcml2YXRlOgotICBzdGF0aWMgaW50IEdldE5ld0luZGV4KCkg
ewotICAgIGdfZGVzdHJveWVkLnB1c2hfYmFjayhmYWxzZSk7Ci0gICAgcmV0dXJuIGdfZGVzdHJv
eWVkLnNpemUoKSAtIDE7CisgIHN0YXRpYyBzaXplX3QgR2V0TmV3SW5kZXgoKSB7CisgICAgRGVz
dHJ1Y3RvckNhbGw6Okxpc3QoKS5wdXNoX2JhY2sobmV3IERlc3RydWN0b3JDYWxsKTsKKyAgICBy
ZXR1cm4gRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKS5zaXplKCkgLSAxOwogICB9Ci0gIGNvbnN0IGlu
dCBpbmRleF87CisgIGNvbnN0IHNpemVfdCBpbmRleF87CisKKyAgR1RFU1RfRElTQUxMT1dfQVNT
SUdOXyhEZXN0cnVjdG9yVHJhY2tlcik7CiB9OwogCiB0eXBlZGVmIFRocmVhZExvY2FsPERlc3Ry
dWN0b3JUcmFja2VyPiogVGhyZWFkUGFyYW07CiAKLXZvaWQgQ2FsbFRocmVhZExvY2FsR2V0KFRo
cmVhZFBhcmFtIHRocmVhZF9sb2NhbCkgewotICB0aHJlYWRfbG9jYWwtPmdldCgpOwordm9pZCBD
YWxsVGhyZWFkTG9jYWxHZXQoVGhyZWFkUGFyYW0gdGhyZWFkX2xvY2FsX3BhcmFtKSB7CisgIHRo
cmVhZF9sb2NhbF9wYXJhbS0+Z2V0KCk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgd2hlbiBhIFRocmVh
ZExvY2FsIG9iamVjdCBkaWVzIGluIGEgdGhyZWFkLCBpdCBkZXN0cm95cwogLy8gdGhlIG1hbmFn
ZWQgb2JqZWN0IGZvciB0aGF0IHRocmVhZC4KIFRFU1QoVGhyZWFkTG9jYWxUZXN0LCBEZXN0cm95
c01hbmFnZWRPYmplY3RGb3JPd25UaHJlYWRXaGVuRHlpbmcpIHsKLSAgZ19kZXN0cm95ZWQuY2xl
YXIoKTsKKyAgRGVzdHJ1Y3RvckNhbGw6OlJlc2V0TGlzdCgpOwogCiAgIHsKLSAgICAvLyBUaGUg
bmV4dCBsaW5lIGRlZmF1bHQgY29uc3RydWN0cyBhIERlc3RydWN0b3JUcmFja2VyIG9iamVjdCBh
cwotICAgIC8vIHRoZSBkZWZhdWx0IHZhbHVlIG9mIG9iamVjdHMgbWFuYWdlZCBieSB0aHJlYWRf
bG9jYWwuCi0gICAgVGhyZWFkTG9jYWw8RGVzdHJ1Y3RvclRyYWNrZXI+IHRocmVhZF9sb2NhbDsK
LSAgICBBU1NFUlRfRVEoMVUsIGdfZGVzdHJveWVkLnNpemUoKSk7Ci0gICAgQVNTRVJUX0ZBTFNF
KGdfZGVzdHJveWVkWzBdKTsKKyAgICBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4gdGhy
ZWFkX2xvY2FsX3RyYWNrZXI7CisgICAgQVNTRVJUX0VRKDBVLCBEZXN0cnVjdG9yQ2FsbDo6TGlz
dCgpLnNpemUoKSk7CiAKICAgICAvLyBUaGlzIGNyZWF0ZXMgYW5vdGhlciBEZXN0cnVjdG9yVHJh
Y2tlciBvYmplY3QgZm9yIHRoZSBtYWluIHRocmVhZC4KLSAgICB0aHJlYWRfbG9jYWwuZ2V0KCk7
Ci0gICAgQVNTRVJUX0VRKDJVLCBnX2Rlc3Ryb3llZC5zaXplKCkpOwotICAgIEFTU0VSVF9GQUxT
RShnX2Rlc3Ryb3llZFswXSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdfZGVzdHJveWVkWzFdKTsKKyAg
ICB0aHJlYWRfbG9jYWxfdHJhY2tlci5nZXQoKTsKKyAgICBBU1NFUlRfRVEoMVUsIERlc3RydWN0
b3JDYWxsOjpMaXN0KCkuc2l6ZSgpKTsKKyAgICBBU1NFUlRfRkFMU0UoRGVzdHJ1Y3RvckNhbGw6
Okxpc3QoKVswXS0+Q2hlY2tEZXN0cm95ZWQoKSk7CiAgIH0KIAotICAvLyBOb3cgdGhyZWFkX2xv
Y2FsIGhhcyBkaWVkLiAgSXQgc2hvdWxkIGhhdmUgZGVzdHJveWVkIGJvdGggdGhlCi0gIC8vIGRl
ZmF1bHQgdmFsdWUgc2hhcmVkIGJ5IGFsbCB0aHJlYWRzIGFuZCB0aGUgdmFsdWUgZm9yIHRoZSBt
YWluCi0gIC8vIHRocmVhZC4KLSAgQVNTRVJUX0VRKDJVLCBnX2Rlc3Ryb3llZC5zaXplKCkpOwot
ICBFWFBFQ1RfVFJVRShnX2Rlc3Ryb3llZFswXSk7Ci0gIEVYUEVDVF9UUlVFKGdfZGVzdHJveWVk
WzFdKTsKKyAgLy8gTm93IHRocmVhZF9sb2NhbF90cmFja2VyIGhhcyBkaWVkLgorICBBU1NFUlRf
RVEoMVUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpKTsKKyAgRVhQRUNUX1RSVUUoRGVz
dHJ1Y3RvckNhbGw6Okxpc3QoKVswXS0+Q2hlY2tEZXN0cm95ZWQoKSk7CiAKLSAgZ19kZXN0cm95
ZWQuY2xlYXIoKTsKKyAgRGVzdHJ1Y3RvckNhbGw6OlJlc2V0TGlzdCgpOwogfQogCiAvLyBUZXN0
cyB0aGF0IHdoZW4gYSB0aHJlYWQgZXhpdHMsIHRoZSB0aHJlYWQtbG9jYWwgb2JqZWN0IGZvciB0
aGF0CiAvLyB0aHJlYWQgaXMgZGVzdHJveWVkLgogVEVTVChUaHJlYWRMb2NhbFRlc3QsIERlc3Ry
b3lzTWFuYWdlZE9iamVjdEF0VGhyZWFkRXhpdCkgewotICBnX2Rlc3Ryb3llZC5jbGVhcigpOwor
ICBEZXN0cnVjdG9yQ2FsbDo6UmVzZXRMaXN0KCk7CiAKICAgewotICAgIC8vIFRoZSBuZXh0IGxp
bmUgZGVmYXVsdCBjb25zdHJ1Y3RzIGEgRGVzdHJ1Y3RvclRyYWNrZXIgb2JqZWN0IGFzCi0gICAg
Ly8gdGhlIGRlZmF1bHQgdmFsdWUgb2Ygb2JqZWN0cyBtYW5hZ2VkIGJ5IHRocmVhZF9sb2NhbC4K
LSAgICBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4gdGhyZWFkX2xvY2FsOwotICAgIEFT
U0VSVF9FUSgxVSwgZ19kZXN0cm95ZWQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRkFMU0UoZ19kZXN0
cm95ZWRbMF0pOworICAgIFRocmVhZExvY2FsPERlc3RydWN0b3JUcmFja2VyPiB0aHJlYWRfbG9j
YWxfdHJhY2tlcjsKKyAgICBBU1NFUlRfRVEoMFUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6
ZSgpKTsKIAogICAgIC8vIFRoaXMgY3JlYXRlcyBhbm90aGVyIERlc3RydWN0b3JUcmFja2VyIG9i
amVjdCBpbiB0aGUgbmV3IHRocmVhZC4KICAgICBUaHJlYWRXaXRoUGFyYW08VGhyZWFkUGFyYW0+
IHRocmVhZCgKLSAgICAgICAgJkNhbGxUaHJlYWRMb2NhbEdldCwgJnRocmVhZF9sb2NhbCwgTlVM
TCk7CisgICAgICAgICZDYWxsVGhyZWFkTG9jYWxHZXQsICZ0aHJlYWRfbG9jYWxfdHJhY2tlciwg
TlVMTCk7CiAgICAgdGhyZWFkLkpvaW4oKTsKIAotICAgIC8vIE5vdyB0aGUgbmV3IHRocmVhZCBo
YXMgZXhpdGVkLiAgVGhlIHBlci10aHJlYWQgb2JqZWN0IGZvciBpdAotICAgIC8vIHNob3VsZCBo
YXZlIGJlZW4gZGVzdHJveWVkLgotICAgIEFTU0VSVF9FUSgyVSwgZ19kZXN0cm95ZWQuc2l6ZSgp
KTsKLSAgICBBU1NFUlRfRkFMU0UoZ19kZXN0cm95ZWRbMF0pOwotICAgIEFTU0VSVF9UUlVFKGdf
ZGVzdHJveWVkWzFdKTsKKyAgICAvLyBUaGUgdGhyZWFkIGhhcyBleGl0ZWQsIGFuZCB3ZSBzaG91
bGQgaGF2ZSBhIERlc3Ryb3llZFRyYWNrZXIKKyAgICAvLyBpbnN0YW5jZSBjcmVhdGVkIGZvciBp
dC4gQnV0IGl0IG1heSBub3QgaGF2ZSBiZWVuIGRlc3Ryb3llZCB5ZXQuCisgICAgQVNTRVJUX0VR
KDFVLCBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnNpemUoKSk7CiAgIH0KIAotICAvLyBOb3cgdGhy
ZWFkX2xvY2FsIGhhcyBkaWVkLiAgVGhlIGRlZmF1bHQgdmFsdWUgc2hvdWxkIGhhdmUgYmVlbgot
ICAvLyBkZXN0cm95ZWQgdG9vLgotICBBU1NFUlRfRVEoMlUsIGdfZGVzdHJveWVkLnNpemUoKSk7
Ci0gIEVYUEVDVF9UUlVFKGdfZGVzdHJveWVkWzBdKTsKLSAgRVhQRUNUX1RSVUUoZ19kZXN0cm95
ZWRbMV0pOworICAvLyBUaGUgdGhyZWFkIGhhcyBleGl0ZWQgYW5kIHRocmVhZF9sb2NhbF90cmFj
a2VyIGhhcyBkaWVkLgorICBBU1NFUlRfRVEoMVUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6
ZSgpKTsKKyAgRVhQRUNUX1RSVUUoRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKVswXS0+Q2hlY2tEZXN0
cm95ZWQoKSk7CiAKLSAgZ19kZXN0cm95ZWQuY2xlYXIoKTsKKyAgRGVzdHJ1Y3RvckNhbGw6OlJl
c2V0TGlzdCgpOwogfQogCiBURVNUKFRocmVhZExvY2FsVGVzdCwgVGhyZWFkTG9jYWxNdXRhdGlv
bnNBZmZlY3RPbmx5Q3VycmVudFRocmVhZCkgewotICBUaHJlYWRMb2NhbDxTdHJpbmc+IHRocmVh
ZF9sb2NhbDsKLSAgdGhyZWFkX2xvY2FsLnNldCgiRm9vIik7Ci0gIEVYUEVDVF9TVFJFUSgiRm9v
IiwgdGhyZWFkX2xvY2FsLmdldCgpLmNfc3RyKCkpOworICBUaHJlYWRMb2NhbDxzdGQ6OnN0cmlu
Zz4gdGhyZWFkX2xvY2FsX3N0cmluZzsKKyAgdGhyZWFkX2xvY2FsX3N0cmluZy5zZXQoIkZvbyIp
OworICBFWFBFQ1RfU1RSRVEoIkZvbyIsIHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkuY19zdHIo
KSk7CiAKLSAgU3RyaW5nIHJlc3VsdDsKLSAgUnVuRnJvbVRocmVhZCgmUmV0cmlldmVUaHJlYWRM
b2NhbFZhbHVlLCBtYWtlX3BhaXIoJnRocmVhZF9sb2NhbCwgJnJlc3VsdCkpOwotICBFWFBFQ1Rf
VFJVRShyZXN1bHQuY19zdHIoKSA9PSBOVUxMKTsKKyAgc3RkOjpzdHJpbmcgcmVzdWx0OworICBS
dW5Gcm9tVGhyZWFkKCZSZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUsCisgICAgICAgICAgICAgICAg
bWFrZV9wYWlyKCZ0aHJlYWRfbG9jYWxfc3RyaW5nLCAmcmVzdWx0KSk7CisgIEVYUEVDVF9UUlVF
KHJlc3VsdC5lbXB0eSgpKTsKIH0KIAogI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCiAK
KyNpZiBHVEVTVF9PU19XSU5ET1dTCitURVNUKFdpbmRvd3NUeXBlc1Rlc3QsIEhBTkRMRUlzVm9p
ZFN0YXIpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPEhBTkRMRSwgdm9pZCo+KCk7Cit9CisKK1RF
U1QoV2luZG93c1R5cGVzVGVzdCwgQ1JJVElDQUxfU0VDVElPTklzX1JUTF9DUklUSUNBTF9TRUNU
SU9OKSB7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxDUklUSUNBTF9TRUNUSU9OLCBfUlRMX0NSSVRJ
Q0FMX1NFQ1RJT04+KCk7Cit9CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKwogfSAgLy8g
bmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wcmludGVyc190ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wcmludGVyc190ZXN0LmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNlOTdjYzI0YWI0YzE1NjVmZTgzZjEzZDE2OTZkMjhiYzNmMmUxZjQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXByaW50ZXJzX3Rlc3Qu
Y2MKQEAgLTAsMCArMSwxNjM1IEBACisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KKy8v
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQor
CisvLyBHb29nbGUgVGVzdCAtIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrCisvLwor
Ly8gVGhpcyBmaWxlIHRlc3RzIHRoZSB1bml2ZXJzYWwgdmFsdWUgcHJpbnRlci4KKworI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LXByaW50ZXJzLmgiCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1
ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4K
KyNpbmNsdWRlIDxkZXF1ZT4KKyNpbmNsdWRlIDxsaXN0PgorI2luY2x1ZGUgPG1hcD4KKyNpbmNs
dWRlIDxzZXQ+CisjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVk
ZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgorCisvLyBoYXNoX21hcCBhbmQgaGFzaF9zZXQgYXJlIGF2YWlsYWJsZSB1bmRlciBWaXN1YWwg
QysrLCBvciBvbiBMaW51eC4KKyNpZiBHVEVTVF9IQVNfSEFTSF9NQVBfCisjIGluY2x1ZGUgPGhh
c2hfbWFwPiAgICAgICAgICAgIC8vIE5PTElOVAorI2VuZGlmICAvLyBHVEVTVF9IQVNfSEFTSF9N
QVBfCisjaWYgR1RFU1RfSEFTX0hBU0hfU0VUXworIyBpbmNsdWRlIDxoYXNoX3NldD4gICAgICAg
ICAgICAvLyBOT0xJTlQKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0hBU0hfU0VUXworCisjaWYgR1RF
U1RfSEFTX1NURF9GT1JXQVJEX0xJU1RfCisjIGluY2x1ZGUgPGZvcndhcmRfbGlzdD4gLy8gTk9M
SU5UCisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfRk9SV0FSRF9MSVNUXworCisvLyBTb21lIHVz
ZXItZGVmaW5lZCB0eXBlcyBmb3IgdGVzdGluZyB0aGUgdW5pdmVyc2FsIHZhbHVlIHByaW50ZXIu
CisKKy8vIEFuIGFub255bW91cyBlbnVtIHR5cGUuCitlbnVtIEFub255bW91c0VudW0geworICBr
QUUxID0gLTEsCisgIGtBRTIgPSAxCit9OworCisvLyBBbiBlbnVtIHdpdGhvdXQgYSB1c2VyLWRl
ZmluZWQgcHJpbnRlci4KK2VudW0gRW51bVdpdGhvdXRQcmludGVyIHsKKyAga0VXUDEgPSAtMiwK
KyAga0VXUDIgPSA0MgorfTsKKworLy8gQW4gZW51bSB3aXRoIGEgPDwgb3BlcmF0b3IuCitlbnVt
IEVudW1XaXRoU3RyZWFtaW5nIHsKKyAga0VXUzEgPSAxMAorfTsKKworc3RkOjpvc3RyZWFtJiBv
cGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIEVudW1XaXRoU3RyZWFtaW5nIGUpIHsKKyAgcmV0
dXJuIG9zIDw8IChlID09IGtFV1MxID8gImtFV1MxIiA6ICJpbnZhbGlkIik7Cit9CisKKy8vIEFu
IGVudW0gd2l0aCBhIFByaW50VG8oKSBmdW5jdGlvbi4KK2VudW0gRW51bVdpdGhQcmludFRvIHsK
KyAga0VXUFQxID0gMQorfTsKKwordm9pZCBQcmludFRvKEVudW1XaXRoUHJpbnRUbyBlLCBzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCAoZSA9PSBrRVdQVDEgPyAia0VXUFQxIiA6ICJpbnZh
bGlkIik7Cit9CisKKy8vIEEgY2xhc3MgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0byBCaWdnZXN0
SW50LgorY2xhc3MgQmlnZ2VzdEludENvbnZlcnRpYmxlIHsKKyBwdWJsaWM6CisgIG9wZXJhdG9y
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkJpZ2dlc3RJbnQoKSBjb25zdCB7IHJldHVybiA0MjsgfQor
fTsKKworLy8gQSB1c2VyLWRlZmluZWQgdW5wcmludGFibGUgY2xhc3MgdGVtcGxhdGUgaW4gdGhl
IGdsb2JhbCBuYW1lc3BhY2UuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFVucHJpbnRh
YmxlVGVtcGxhdGVJbkdsb2JhbCB7CisgcHVibGljOgorICBVbnByaW50YWJsZVRlbXBsYXRlSW5H
bG9iYWwoKSA6IHZhbHVlXygpIHt9CisgcHJpdmF0ZToKKyAgVCB2YWx1ZV87Cit9OworCisvLyBB
IHVzZXItZGVmaW5lZCBzdHJlYW1hYmxlIHR5cGUgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCitj
bGFzcyBTdHJlYW1hYmxlSW5HbG9iYWwgeworIHB1YmxpYzoKKyAgdmlydHVhbCB+U3RyZWFtYWJs
ZUluR2xvYmFsKCkge30KK307CisKK2lubGluZSB2b2lkIG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJl
YW0mIG9zLCBjb25zdCBTdHJlYW1hYmxlSW5HbG9iYWwmIC8qIHggKi8pIHsKKyAgb3MgPDwgIlN0
cmVhbWFibGVJbkdsb2JhbCI7Cit9CisKK3ZvaWQgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYg
b3MsIGNvbnN0IFN0cmVhbWFibGVJbkdsb2JhbCogLyogeCAqLykgeworICBvcyA8PCAiU3RyZWFt
YWJsZUluR2xvYmFsKiI7Cit9CisKK25hbWVzcGFjZSBmb28geworCisvLyBBIHVzZXItZGVmaW5l
ZCB1bnByaW50YWJsZSB0eXBlIGluIGEgdXNlciBuYW1lc3BhY2UuCitjbGFzcyBVbnByaW50YWJs
ZUluRm9vIHsKKyBwdWJsaWM6CisgIFVucHJpbnRhYmxlSW5Gb28oKSA6IHpfKDApIHsgbWVtY3B5
KHh5XywgIlx4RUZceDEyXHgwXHgwXHgzNFx4QUJceDBceDAiLCA4KTsgfQorICBkb3VibGUgeigp
IGNvbnN0IHsgcmV0dXJuIHpfOyB9CisgcHJpdmF0ZToKKyAgY2hhciB4eV9bOF07CisgIGRvdWJs
ZSB6XzsKK307CisKKy8vIEEgdXNlci1kZWZpbmVkIHByaW50YWJsZSB0eXBlIGluIGEgdXNlci1j
aG9zZW4gbmFtZXNwYWNlLgorc3RydWN0IFByaW50YWJsZVZpYVByaW50VG8geworICBQcmludGFi
bGVWaWFQcmludFRvKCkgOiB2YWx1ZSgpIHt9CisgIGludCB2YWx1ZTsKK307CisKK3ZvaWQgUHJp
bnRUbyhjb25zdCBQcmludGFibGVWaWFQcmludFRvJiB4LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsK
KyAgKm9zIDw8ICJQcmludGFibGVWaWFQcmludFRvOiAiIDw8IHgudmFsdWU7Cit9CisKKy8vIEEg
dHlwZSB3aXRoIGEgdXNlci1kZWZpbmVkIDw8IGZvciBwcmludGluZyBpdHMgcG9pbnRlci4KK3N0
cnVjdCBQb2ludGVyUHJpbnRhYmxlIHsKK307CisKKzo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8
KDo6c3RkOjpvc3RyZWFtJiBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBv
aW50ZXJQcmludGFibGUqIC8qIHggKi8pIHsKKyAgcmV0dXJuIG9zIDw8ICJQb2ludGVyUHJpbnRh
YmxlKiI7Cit9CisKKy8vIEEgdXNlci1kZWZpbmVkIHByaW50YWJsZSBjbGFzcyB0ZW1wbGF0ZSBp
biBhIHVzZXItY2hvc2VuIG5hbWVzcGFjZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3Mg
UHJpbnRhYmxlVmlhUHJpbnRUb1RlbXBsYXRlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFByaW50
YWJsZVZpYVByaW50VG9UZW1wbGF0ZShjb25zdCBUJiBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVl
KSB7fQorCisgIGNvbnN0IFQmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CisgcHJp
dmF0ZToKKyAgVCB2YWx1ZV87Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgUHJp
bnRUbyhjb25zdCBQcmludGFibGVWaWFQcmludFRvVGVtcGxhdGU8VD4mIHgsIDo6c3RkOjpvc3Ry
ZWFtKiBvcykgeworICAqb3MgPDwgIlByaW50YWJsZVZpYVByaW50VG9UZW1wbGF0ZTogIiA8PCB4
LnZhbHVlKCk7Cit9CisKKy8vIEEgdXNlci1kZWZpbmVkIHN0cmVhbWFibGUgY2xhc3MgdGVtcGxh
dGUgaW4gYSB1c2VyIG5hbWVzcGFjZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgU3Ry
ZWFtYWJsZVRlbXBsYXRlSW5Gb28geworIHB1YmxpYzoKKyAgU3RyZWFtYWJsZVRlbXBsYXRlSW5G
b28oKSA6IHZhbHVlXygpIHt9CisKKyAgY29uc3QgVCYgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2
YWx1ZV87IH0KKyBwcml2YXRlOgorICBUIHZhbHVlXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgoraW5saW5lIDo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBv
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJlYW1hYmxlVGVt
cGxhdGVJbkZvbzxUPiYgeCkgeworICByZXR1cm4gb3MgPDwgIlN0cmVhbWFibGVUZW1wbGF0ZUlu
Rm9vOiAiIDw8IHgudmFsdWUoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGZvbworCituYW1lc3Bh
Y2UgdGVzdGluZyB7CituYW1lc3BhY2UgZ3Rlc3RfcHJpbnRlcnNfdGVzdCB7CisKK3VzaW5nIDo6
c3RkOjpkZXF1ZTsKK3VzaW5nIDo6c3RkOjpsaXN0OwordXNpbmcgOjpzdGQ6Om1ha2VfcGFpcjsK
K3VzaW5nIDo6c3RkOjptYXA7Cit1c2luZyA6OnN0ZDo6bXVsdGltYXA7Cit1c2luZyA6OnN0ZDo6
bXVsdGlzZXQ7Cit1c2luZyA6OnN0ZDo6cGFpcjsKK3VzaW5nIDo6c3RkOjpzZXQ7Cit1c2luZyA6
OnN0ZDo6dmVjdG9yOwordXNpbmcgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nOwordXNpbmcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlOwordXNp
bmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzsKK3VzaW5nIDo6dGVzdGluZzo6
aW50ZXJuYWw6Ok5hdGl2ZUFycmF5OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UkU7Cit1
c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlOwordXNp
bmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nczsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJu
YWw6OlVuaXZlcnNhbFByaW50OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2Fs
UHJpbnRlcjsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnQ7
Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVs
ZHNUb1N0cmluZ3M7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmc7CisKKy8vIFRo
ZSBoYXNoXyogY2xhc3NlcyBhcmUgbm90IHBhcnQgb2YgdGhlIEMrKyBzdGFuZGFyZC4gIFNUTHBv
cnQKKy8vIGRlZmluZXMgdGhlbSBpbiBuYW1lc3BhY2Ugc3RkLiAgTVNWQyBkZWZpbmVzIHRoZW0g
aW4gOjpzdGRleHQuICBHQ0MKKy8vIGRlZmluZXMgdGhlbSBpbiA6Oi4KKyNpZmRlZiBfU1RMUF9I
QVNIX01BUCAgLy8gV2UgZ290IDxoYXNoX21hcD4gZnJvbSBTVExwb3J0LgordXNpbmcgOjpzdGQ6
Omhhc2hfbWFwOwordXNpbmcgOjpzdGQ6Omhhc2hfc2V0OwordXNpbmcgOjpzdGQ6Omhhc2hfbXVs
dGltYXA7Cit1c2luZyA6OnN0ZDo6aGFzaF9tdWx0aXNldDsKKyNlbGlmIF9NU0NfVkVSCit1c2lu
ZyA6OnN0ZGV4dDo6aGFzaF9tYXA7Cit1c2luZyA6OnN0ZGV4dDo6aGFzaF9zZXQ7Cit1c2luZyA6
OnN0ZGV4dDo6aGFzaF9tdWx0aW1hcDsKK3VzaW5nIDo6c3RkZXh0OjpoYXNoX211bHRpc2V0Owor
I2VuZGlmCisKKy8vIFByaW50cyBhIHZhbHVlIHRvIGEgc3RyaW5nIHVzaW5nIHRoZSB1bml2ZXJz
YWwgdmFsdWUgcHJpbnRlci4gIFRoaXMKKy8vIGlzIGEgaGVscGVyIGZvciB0ZXN0aW5nIFVuaXZl
cnNhbFByaW50ZXI8VD46OlByaW50KCkgZm9yIHZhcmlvdXMgdHlwZXMuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3N0cmluZyBQcmludChjb25zdCBUJiB2YWx1ZSkgeworICA6OnN0ZDo6c3RyaW5n
c3RyZWFtIHNzOworICBVbml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCh2YWx1ZSwgJnNzKTsKKyAg
cmV0dXJuIHNzLnN0cigpOworfQorCisvLyBQcmludHMgYSB2YWx1ZSBwYXNzZWQgYnkgcmVmZXJl
bmNlIHRvIGEgc3RyaW5nLCB1c2luZyB0aGUgdW5pdmVyc2FsCisvLyB2YWx1ZSBwcmludGVyLiAg
VGhpcyBpcyBhIGhlbHBlciBmb3IgdGVzdGluZworLy8gVW5pdmVyc2FsUHJpbnRlcjxUJj46OlBy
aW50KCkgZm9yIHZhcmlvdXMgdHlwZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cmluZyBQ
cmludEJ5UmVmKGNvbnN0IFQmIHZhbHVlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7Cisg
IFVuaXZlcnNhbFByaW50ZXI8VCY+OjpQcmludCh2YWx1ZSwgJnNzKTsKKyAgcmV0dXJuIHNzLnN0
cigpOworfQorCisvLyBUZXN0cyBwcmludGluZyB2YXJpb3VzIGVudW0gdHlwZXMuCisKK1RFU1Qo
UHJpbnRFbnVtVGVzdCwgQW5vbnltb3VzRW51bSkgeworICBFWFBFQ1RfRVEoIi0xIiwgUHJpbnQo
a0FFMSkpOworICBFWFBFQ1RfRVEoIjEiLCBQcmludChrQUUyKSk7Cit9CisKK1RFU1QoUHJpbnRF
bnVtVGVzdCwgRW51bVdpdGhvdXRQcmludGVyKSB7CisgIEVYUEVDVF9FUSgiLTIiLCBQcmludChr
RVdQMSkpOworICBFWFBFQ1RfRVEoIjQyIiwgUHJpbnQoa0VXUDIpKTsKK30KKworVEVTVChQcmlu
dEVudW1UZXN0LCBFbnVtV2l0aFN0cmVhbWluZykgeworICBFWFBFQ1RfRVEoImtFV1MxIiwgUHJp
bnQoa0VXUzEpKTsKKyAgRVhQRUNUX0VRKCJpbnZhbGlkIiwgUHJpbnQoc3RhdGljX2Nhc3Q8RW51
bVdpdGhTdHJlYW1pbmc+KDApKSk7Cit9CisKK1RFU1QoUHJpbnRFbnVtVGVzdCwgRW51bVdpdGhQ
cmludFRvKSB7CisgIEVYUEVDVF9FUSgia0VXUFQxIiwgUHJpbnQoa0VXUFQxKSk7CisgIEVYUEVD
VF9FUSgiaW52YWxpZCIsIFByaW50KHN0YXRpY19jYXN0PEVudW1XaXRoUHJpbnRUbz4oMCkpKTsK
K30KKworLy8gVGVzdHMgcHJpbnRpbmcgYSBjbGFzcyBpbXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRv
IEJpZ2dlc3RJbnQuCisKK1RFU1QoUHJpbnRDbGFzc1Rlc3QsIEJpZ2dlc3RJbnRDb252ZXJ0aWJs
ZSkgeworICBFWFBFQ1RfRVEoIjQyIiwgUHJpbnQoQmlnZ2VzdEludENvbnZlcnRpYmxlKCkpKTsK
K30KKworLy8gVGVzdHMgcHJpbnRpbmcgdmFyaW91cyBjaGFyIHR5cGVzLgorCisvLyBjaGFyLgor
VEVTVChQcmludENoYXJUZXN0LCBQbGFpbkNoYXIpIHsKKyAgRVhQRUNUX0VRKCInXFwwJyIsIFBy
aW50KCdcMCcpKTsKKyAgRVhQRUNUX0VRKCInXFwnJyAoMzksIDB4MjcpIiwgUHJpbnQoJ1wnJykp
OworICBFWFBFQ1RfRVEoIidcIicgKDM0LCAweDIyKSIsIFByaW50KCciJykpOworICBFWFBFQ1Rf
RVEoIic/JyAoNjMsIDB4M0YpIiwgUHJpbnQoJz8nKSk7CisgIEVYUEVDVF9FUSgiJ1xcXFwnICg5
MiwgMHg1QykiLCBQcmludCgnXFwnKSk7CisgIEVYUEVDVF9FUSgiJ1xcYScgKDcpIiwgUHJpbnQo
J1xhJykpOworICBFWFBFQ1RfRVEoIidcXGInICg4KSIsIFByaW50KCdcYicpKTsKKyAgRVhQRUNU
X0VRKCInXFxmJyAoMTIsIDB4QykiLCBQcmludCgnXGYnKSk7CisgIEVYUEVDVF9FUSgiJ1xcbicg
KDEwLCAweEEpIiwgUHJpbnQoJ1xuJykpOworICBFWFBFQ1RfRVEoIidcXHInICgxMywgMHhEKSIs
IFByaW50KCdccicpKTsKKyAgRVhQRUNUX0VRKCInXFx0JyAoOSkiLCBQcmludCgnXHQnKSk7Cisg
IEVYUEVDVF9FUSgiJ1xcdicgKDExLCAweEIpIiwgUHJpbnQoJ1x2JykpOworICBFWFBFQ1RfRVEo
IidcXHg3RicgKDEyNykiLCBQcmludCgnXHg3RicpKTsKKyAgRVhQRUNUX0VRKCInXFx4RkYnICgy
NTUpIiwgUHJpbnQoJ1x4RkYnKSk7CisgIEVYUEVDVF9FUSgiJyAnICgzMiwgMHgyMCkiLCBQcmlu
dCgnICcpKTsKKyAgRVhQRUNUX0VRKCInYScgKDk3LCAweDYxKSIsIFByaW50KCdhJykpOworfQor
CisvLyBzaWduZWQgY2hhci4KK1RFU1QoUHJpbnRDaGFyVGVzdCwgU2lnbmVkQ2hhcikgeworICBF
WFBFQ1RfRVEoIidcXDAnIiwgUHJpbnQoc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+KCdcMCcpKSk7
CisgIEVYUEVDVF9FUSgiJ1xceENFJyAoLTUwKSIsCisgICAgICAgICAgICBQcmludChzdGF0aWNf
Y2FzdDxzaWduZWQgY2hhcj4oLTUwKSkpOworfQorCisvLyB1bnNpZ25lZCBjaGFyLgorVEVTVChQ
cmludENoYXJUZXN0LCBVbnNpZ25lZENoYXIpIHsKKyAgRVhQRUNUX0VRKCInXFwwJyIsIFByaW50
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCdcMCcpKSk7CisgIEVYUEVDVF9FUSgiJ2InICg5
OCwgMHg2MikiLAorICAgICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
J2InKSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyBvdGhlciBzaW1wbGUsIGJ1aWx0LWluIHR5
cGVzLgorCisvLyBib29sLgorVEVTVChQcmludEJ1aWx0SW5UeXBlVGVzdCwgQm9vbCkgeworICBF
WFBFQ1RfRVEoImZhbHNlIiwgUHJpbnQoZmFsc2UpKTsKKyAgRVhQRUNUX0VRKCJ0cnVlIiwgUHJp
bnQodHJ1ZSkpOworfQorCisvLyB3Y2hhcl90LgorVEVTVChQcmludEJ1aWx0SW5UeXBlVGVzdCwg
V2NoYXJfdCkgeworICBFWFBFQ1RfRVEoIkwnXFwwJyIsIFByaW50KEwnXDAnKSk7CisgIEVYUEVD
VF9FUSgiTCdcXCcnICgzOSwgMHgyNykiLCBQcmludChMJ1wnJykpOworICBFWFBFQ1RfRVEoIkwn
XCInICgzNCwgMHgyMikiLCBQcmludChMJyInKSk7CisgIEVYUEVDVF9FUSgiTCc/JyAoNjMsIDB4
M0YpIiwgUHJpbnQoTCc/JykpOworICBFWFBFQ1RfRVEoIkwnXFxcXCcgKDkyLCAweDVDKSIsIFBy
aW50KEwnXFwnKSk7CisgIEVYUEVDVF9FUSgiTCdcXGEnICg3KSIsIFByaW50KEwnXGEnKSk7Cisg
IEVYUEVDVF9FUSgiTCdcXGInICg4KSIsIFByaW50KEwnXGInKSk7CisgIEVYUEVDVF9FUSgiTCdc
XGYnICgxMiwgMHhDKSIsIFByaW50KEwnXGYnKSk7CisgIEVYUEVDVF9FUSgiTCdcXG4nICgxMCwg
MHhBKSIsIFByaW50KEwnXG4nKSk7CisgIEVYUEVDVF9FUSgiTCdcXHInICgxMywgMHhEKSIsIFBy
aW50KEwnXHInKSk7CisgIEVYUEVDVF9FUSgiTCdcXHQnICg5KSIsIFByaW50KEwnXHQnKSk7Cisg
IEVYUEVDVF9FUSgiTCdcXHYnICgxMSwgMHhCKSIsIFByaW50KEwnXHYnKSk7CisgIEVYUEVDVF9F
USgiTCdcXHg3RicgKDEyNykiLCBQcmludChMJ1x4N0YnKSk7CisgIEVYUEVDVF9FUSgiTCdcXHhG
RicgKDI1NSkiLCBQcmludChMJ1x4RkYnKSk7CisgIEVYUEVDVF9FUSgiTCcgJyAoMzIsIDB4MjAp
IiwgUHJpbnQoTCcgJykpOworICBFWFBFQ1RfRVEoIkwnYScgKDk3LCAweDYxKSIsIFByaW50KEwn
YScpKTsKKyAgRVhQRUNUX0VRKCJMJ1xceDU3NicgKDEzOTgpIiwgUHJpbnQoc3RhdGljX2Nhc3Q8
d2NoYXJfdD4oMHg1NzYpKSk7CisgIEVYUEVDVF9FUSgiTCdcXHhDNzREJyAoNTEwMjEpIiwgUHJp
bnQoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHhDNzREKSkpOworfQorCisvLyBUZXN0IHRoYXQgSW50
NjQgcHJvdmlkZXMgbW9yZSBzdG9yYWdlIHRoYW4gd2NoYXJfdC4KK1RFU1QoUHJpbnRUeXBlU2l6
ZVRlc3QsIFdjaGFyX3QpIHsKKyAgRVhQRUNUX0xUKHNpemVvZih3Y2hhcl90KSwgc2l6ZW9mKHRl
c3Rpbmc6OmludGVybmFsOjpJbnQ2NCkpOworfQorCisvLyBWYXJpb3VzIGludGVnZXIgdHlwZXMu
CitURVNUKFByaW50QnVpbHRJblR5cGVUZXN0LCBJbnRlZ2VyKSB7CisgIEVYUEVDVF9FUSgiJ1xc
eEZGJyAoMjU1KSIsIFByaW50KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSkpKTsgIC8v
IHVpbnQ4CisgIEVYUEVDVF9FUSgiJ1xceDgwJyAoLTEyOCkiLCBQcmludChzdGF0aWNfY2FzdDxz
aWduZWQgY2hhcj4oLTEyOCkpKTsgIC8vIGludDgKKyAgRVhQRUNUX0VRKCI2NTUzNSIsIFByaW50
KFVTSFJUX01BWCkpOyAgLy8gdWludDE2CisgIEVYUEVDVF9FUSgiLTMyNzY4IiwgUHJpbnQoU0hS
VF9NSU4pKTsgIC8vIGludDE2CisgIEVYUEVDVF9FUSgiNDI5NDk2NzI5NSIsIFByaW50KFVJTlRf
TUFYKSk7ICAvLyB1aW50MzIKKyAgRVhQRUNUX0VRKCItMjE0NzQ4MzY0OCIsIFByaW50KElOVF9N
SU4pKTsgIC8vIGludDMyCisgIEVYUEVDVF9FUSgiMTg0NDY3NDQwNzM3MDk1NTE2MTUiLAorICAg
ICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8dGVzdGluZzo6aW50ZXJuYWw6OlVJbnQ2ND4oLTEp
KSk7ICAvLyB1aW50NjQKKyAgRVhQRUNUX0VRKCItOTIyMzM3MjAzNjg1NDc3NTgwOCIsCisgICAg
ICAgICAgICBQcmludChzdGF0aWNfY2FzdDx0ZXN0aW5nOjppbnRlcm5hbDo6SW50NjQ+KDEpIDw8
IDYzKSk7ICAvLyBpbnQ2NAorfQorCisvLyBTaXplIHR5cGVzLgorVEVTVChQcmludEJ1aWx0SW5U
eXBlVGVzdCwgU2l6ZV90KSB7CisgIEVYUEVDVF9FUSgiMSIsIFByaW50KHNpemVvZignYScpKSk7
ICAvLyBzaXplX3QuCisjaWYgIUdURVNUX09TX1dJTkRPV1MKKyAgLy8gV2luZG93cyBoYXMgbm8g
c3NpemVfdCB0eXBlLgorICBFWFBFQ1RfRVEoIi0yIiwgUHJpbnQoc3RhdGljX2Nhc3Q8c3NpemVf
dD4oLTIpKSk7ICAvLyBzc2l6ZV90LgorI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUworfQor
CisvLyBGbG9hdGluZy1wb2ludHMuCitURVNUKFByaW50QnVpbHRJblR5cGVUZXN0LCBGbG9hdGlu
Z1BvaW50cykgeworICBFWFBFQ1RfRVEoIjEuNSIsIFByaW50KDEuNWYpKTsgICAvLyBmbG9hdAor
ICBFWFBFQ1RfRVEoIi0yLjUiLCBQcmludCgtMi41KSk7ICAvLyBkb3VibGUKK30KKworLy8gU2lu
Y2UgOjpzdGQ6OnN0cmluZ3N0cmVhbTo6b3BlcmF0b3I8PChjb25zdCB2b2lkICopIGZvcm1hdHMg
dGhlIHBvaW50ZXIKKy8vIG91dHB1dCBkaWZmZXJlbnRseSB3aXRoIGRpZmZlcmVudCBjb21waWxl
cnMsIHdlIGhhdmUgdG8gY3JlYXRlIHRoZSBleHBlY3RlZAorLy8gb3V0cHV0IGZpcnN0IGFuZCB1
c2UgaXQgYXMgb3VyIGV4cGVjdGF0aW9uLgorc3RhdGljIHN0cmluZyBQcmludFBvaW50ZXIoY29u
c3Qgdm9pZCAqcCkgeworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIGV4cGVjdGVkX3Jlc3VsdF9zdHJl
YW07CisgIGV4cGVjdGVkX3Jlc3VsdF9zdHJlYW0gPDwgcDsKKyAgcmV0dXJuIGV4cGVjdGVkX3Jl
c3VsdF9zdHJlYW0uc3RyKCk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIEMgc3RyaW5ncy4KKwor
Ly8gY29uc3QgY2hhciouCitURVNUKFByaW50Q1N0cmluZ1Rlc3QsIENvbnN0KSB7CisgIGNvbnN0
IGNoYXIqIHAgPSAiV29ybGQiOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApICsgIiBwb2lu
dGluZyB0byBcIldvcmxkXCIiLCBQcmludChwKSk7Cit9CisKKy8vIGNoYXIqLgorVEVTVChQcmlu
dENTdHJpbmdUZXN0LCBOb25Db25zdCkgeworICBjaGFyIHBbXSA9ICJIaSI7CisgIEVYUEVDVF9F
UShQcmludFBvaW50ZXIocCkgKyAiIHBvaW50aW5nIHRvIFwiSGlcIiIsCisgICAgICAgICAgICBQ
cmludChzdGF0aWNfY2FzdDxjaGFyKj4ocCkpKTsKK30KKworLy8gTlVMTCBDIHN0cmluZy4KK1RF
U1QoUHJpbnRDU3RyaW5nVGVzdCwgTnVsbCkgeworICBjb25zdCBjaGFyKiBwID0gTlVMTDsKKyAg
RVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBUZXN0cyB0aGF0IEMgc3RyaW5n
cyBhcmUgZXNjYXBlZCBwcm9wZXJseS4KK1RFU1QoUHJpbnRDU3RyaW5nVGVzdCwgRXNjYXBlc1By
b3Blcmx5KSB7CisgIGNvbnN0IGNoYXIqIHAgPSAiJ1wiP1xcXGFcYlxmXG5cclx0XHZceDdGXHhG
RiBhIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSArICIgcG9pbnRpbmcgdG8gXCInXFxc
Ij9cXFxcXFxhXFxiXFxmIgorICAgICAgICAgICAgIlxcblxcclxcdFxcdlxceDdGXFx4RkYgYVwi
IiwKKyAgICAgICAgICAgIFByaW50KHApKTsKK30KKworLy8gTVNWQyBjb21waWxlciBjYW4gYmUg
Y29uZmlndXJlZCB0byBkZWZpbmUgd2hhcl90IGFzIGEgdHlwZWRlZgorLy8gb2YgdW5zaWduZWQg
c2hvcnQuIERlZmluaW5nIGFuIG92ZXJsb2FkIGZvciBjb25zdCB3Y2hhcl90KiBpbiB0aGF0IGNh
c2UKKy8vIHdvdWxkIGNhdXNlIHBvaW50ZXJzIHRvIHVuc2lnbmVkIHNob3J0cyBiZSBwcmludGVk
IGFzIHdpZGUgc3RyaW5ncywKKy8vIHBvc3NpYmx5IGFjY2Vzc2luZyBtb3JlIG1lbW9yeSB0aGFu
IGludGVuZGVkIGFuZCBjYXVzaW5nIGludmFsaWQKKy8vIG1lbW9yeSBhY2Nlc3Nlcy4gTVNWQyBk
ZWZpbmVzIF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEIHN5bWJvbCB3aGVuCisvLyB3Y2hhcl90IGlz
IGltcGxlbWVudGVkIGFzIGEgbmF0aXZlIHR5cGUuCisjaWYgIWRlZmluZWQoX01TQ19WRVIpIHx8
IGRlZmluZWQoX05BVElWRV9XQ0hBUl9UX0RFRklORUQpCisKKy8vIGNvbnN0IHdjaGFyX3QqLgor
VEVTVChQcmludFdpZGVDU3RyaW5nVGVzdCwgQ29uc3QpIHsKKyAgY29uc3Qgd2NoYXJfdCogcCA9
IEwiV29ybGQiOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApICsgIiBwb2ludGluZyB0byBM
XCJXb3JsZFwiIiwgUHJpbnQocCkpOworfQorCisvLyB3Y2hhcl90Ki4KK1RFU1QoUHJpbnRXaWRl
Q1N0cmluZ1Rlc3QsIE5vbkNvbnN0KSB7CisgIHdjaGFyX3QgcFtdID0gTCJIaSI7CisgIEVYUEVD
VF9FUShQcmludFBvaW50ZXIocCkgKyAiIHBvaW50aW5nIHRvIExcIkhpXCIiLAorICAgICAgICAg
ICAgUHJpbnQoc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KHApKSk7Cit9CisKKy8vIE5VTEwgd2lkZSBD
IHN0cmluZy4KK1RFU1QoUHJpbnRXaWRlQ1N0cmluZ1Rlc3QsIE51bGwpIHsKKyAgY29uc3Qgd2No
YXJfdCogcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8g
VGVzdHMgdGhhdCB3aWRlIEMgc3RyaW5ncyBhcmUgZXNjYXBlZCBwcm9wZXJseS4KK1RFU1QoUHJp
bnRXaWRlQ1N0cmluZ1Rlc3QsIEVzY2FwZXNQcm9wZXJseSkgeworICBjb25zdCB3Y2hhcl90IHNb
XSA9IHsnXCcnLCAnIicsICc/JywgJ1xcJywgJ1xhJywgJ1xiJywgJ1xmJywgJ1xuJywgJ1xyJywK
KyAgICAgICAgICAgICAgICAgICAgICAgJ1x0JywgJ1x2JywgMHhEMywgMHg1NzYsIDB4OEQzLCAw
eEM3NEQsICcgJywgJ2EnLCAnXDAnfTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihzKSArICIg
cG9pbnRpbmcgdG8gTFwiJ1xcXCI/XFxcXFxcYVxcYlxcZiIKKyAgICAgICAgICAgICJcXG5cXHJc
XHRcXHZcXHhEM1xceDU3NlxceDhEM1xceEM3NEQgYVwiIiwKKyAgICAgICAgICAgIFByaW50KHN0
YXRpY19jYXN0PGNvbnN0IHdjaGFyX3QqPihzKSkpOworfQorI2VuZGlmICAvLyBuYXRpdmUgd2No
YXJfdAorCisvLyBUZXN0cyBwcmludGluZyBwb2ludGVycyB0byBvdGhlciBjaGFyIHR5cGVzLgor
CisvLyBzaWduZWQgY2hhciouCitURVNUKFByaW50Q2hhclBvaW50ZXJUZXN0LCBTaWduZWRDaGFy
KSB7CisgIHNpZ25lZCBjaGFyKiBwID0gcmVpbnRlcnByZXRfY2FzdDxzaWduZWQgY2hhcio+KDB4
MTIzNCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5V
TEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gY29uc3Qgc2lnbmVk
IGNoYXIqLgorVEVTVChQcmludENoYXJQb2ludGVyVGVzdCwgQ29uc3RTaWduZWRDaGFyKSB7Cisg
IHNpZ25lZCBjaGFyKiBwID0gcmVpbnRlcnByZXRfY2FzdDxzaWduZWQgY2hhcio+KDB4MTIzNCk7
CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5VTEw7Cisg
IEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gdW5zaWduZWQgY2hhciouCitU
RVNUKFByaW50Q2hhclBvaW50ZXJUZXN0LCBVbnNpZ25lZENoYXIpIHsKKyAgdW5zaWduZWQgY2hh
ciogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KDB4MTIzNCk7CisgIEVYUEVD
VF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9F
USgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gY29uc3QgdW5zaWduZWQgY2hhciouCitURVNU
KFByaW50Q2hhclBvaW50ZXJUZXN0LCBDb25zdFVuc2lnbmVkQ2hhcikgeworICBjb25zdCB1bnNp
Z25lZCBjaGFyKiBwID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oMHgx
MjM0KTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0gTlVM
TDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBUZXN0cyBwcmludGlu
ZyBwb2ludGVycyB0byBzaW1wbGUsIGJ1aWx0LWluIHR5cGVzLgorCisvLyBib29sKi4KK1RFU1Qo
UHJpbnRQb2ludGVyVG9CdWlsdEluVHlwZVRlc3QsIEJvb2wpIHsKKyAgYm9vbCogcCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Ym9vbCo+KDB4QUJDRCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCks
IFByaW50KHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsK
K30KKworLy8gdm9pZCouCitURVNUKFByaW50UG9pbnRlclRvQnVpbHRJblR5cGVUZXN0LCBWb2lk
KSB7CisgIHZvaWQqIHAgPSByZWludGVycHJldF9jYXN0PHZvaWQqPigweEFCQ0QpOworICBFWFBF
Q1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7CisgIHAgPSBOVUxMOworICBFWFBFQ1Rf
RVEoIk5VTEwiLCBQcmludChwKSk7Cit9CisKKy8vIGNvbnN0IHZvaWQqLgorVEVTVChQcmludFBv
aW50ZXJUb0J1aWx0SW5UeXBlVGVzdCwgQ29uc3RWb2lkKSB7CisgIGNvbnN0IHZvaWQqIHAgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigweEFCQ0QpOworICBFWFBFQ1RfRVEoUHJpbnRQ
b2ludGVyKHApLCBQcmludChwKSk7CisgIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQ
cmludChwKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIHBvaW50ZXJzIHRvIHBvaW50ZXJzLgor
VEVTVChQcmludFBvaW50ZXJUb1BvaW50ZXJUZXN0LCBJbnRQb2ludGVyUG9pbnRlcikgeworICBp
bnQqKiBwID0gcmVpbnRlcnByZXRfY2FzdDxpbnQqKj4oMHhBQkNEKTsKKyAgRVhQRUNUX0VRKFBy
aW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxM
IiwgUHJpbnQocCkpOworfQorCisvLyBUZXN0cyBwcmludGluZyAobm9uLW1lbWJlcikgZnVuY3Rp
b24gcG9pbnRlcnMuCisKK3ZvaWQgTXlGdW5jdGlvbihpbnQgLyogbiAqLykge30KKworVEVTVChQ
cmludFBvaW50ZXJUZXN0LCBOb25NZW1iZXJGdW5jdGlvblBvaW50ZXIpIHsKKyAgLy8gV2UgY2Fu
bm90IGRpcmVjdGx5IGNhc3QgJk15RnVuY3Rpb24gdG8gY29uc3Qgdm9pZCogYmVjYXVzZSB0aGUK
KyAgLy8gc3RhbmRhcmQgZGlzYWxsb3dzIGNhc3RpbmcgYmV0d2VlbiBwb2ludGVycyB0byBmdW5j
dGlvbnMgYW5kCisgIC8vIHBvaW50ZXJzIHRvIG9iamVjdHMsIGFuZCBzb21lIGNvbXBpbGVycyAo
ZS5nLiBHQ0MgMy40KSBlbmZvcmNlCisgIC8vIHRoaXMgbGltaXRhdGlvbi4KKyAgRVhQRUNUX0VR
KAorICAgICAgUHJpbnRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KAorICAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8aW50ZXJuYWw6OkJpZ2dlc3RJbnQ+KCZNeUZ1bmN0aW9u
KSkpLAorICAgICAgUHJpbnQoJk15RnVuY3Rpb24pKTsKKyAgaW50ICgqcCkoYm9vbCkgPSBOVUxM
OyAgLy8gTk9MSU5UCisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gQW4g
YXNzZXJ0aW9uIHByZWRpY2F0ZSBkZXRlcm1pbmluZyB3aGV0aGVyIGEgb25lIHN0cmluZyBpcyBh
IHByZWZpeCBmb3IKKy8vIGFub3RoZXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyaW5nVHlwZT4K
K0Fzc2VydGlvblJlc3VsdCBIYXNQcmVmaXgoY29uc3QgU3RyaW5nVHlwZSYgc3RyLCBjb25zdCBT
dHJpbmdUeXBlJiBwcmVmaXgpIHsKKyAgaWYgKHN0ci5maW5kKHByZWZpeCwgMCkgPT0gMCkKKyAg
ICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOworCisgIGNvbnN0IGJvb2wgaXNfd2lkZV9zdHJp
bmcgPSBzaXplb2YocHJlZml4WzBdKSA+IDE7CisgIGNvbnN0IGNoYXIqIGNvbnN0IGJlZ2luX3N0
cmluZ19xdW90ZSA9IGlzX3dpZGVfc3RyaW5nID8gIkxcIiIgOiAiXCIiOworICByZXR1cm4gQXNz
ZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBiZWdpbl9zdHJpbmdfcXVvdGUgPDwgcHJlZml4IDw8
ICJcIiBpcyBub3QgYSBwcmVmaXggb2YgIgorICAgICAgPDwgYmVnaW5fc3RyaW5nX3F1b3RlIDw8
IHN0ciA8PCAiXCJcbiI7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIG1lbWJlciB2YXJpYWJsZSBw
b2ludGVycy4gIEFsdGhvdWdoIHRoZXkgYXJlIGNhbGxlZAorLy8gcG9pbnRlcnMsIHRoZXkgZG9u
J3QgcG9pbnQgdG8gYSBsb2NhdGlvbiBpbiB0aGUgYWRkcmVzcyBzcGFjZS4KKy8vIFRoZWlyIHJl
cHJlc2VudGF0aW9uIGlzIGltcGxlbWVudGF0aW9uLWRlZmluZWQuICBUaHVzIHRoZXkgd2lsbCBi
ZQorLy8gcHJpbnRlZCBhcyByYXcgYnl0ZXMuCisKK3N0cnVjdCBGb28geworIHB1YmxpYzoKKyAg
dmlydHVhbCB+Rm9vKCkge30KKyAgaW50IE15TWV0aG9kKGNoYXIgeCkgeyByZXR1cm4geCArIDE7
IH0KKyAgdmlydHVhbCBjaGFyIE15VmlydHVhbE1ldGhvZChpbnQgLyogbiAqLykgeyByZXR1cm4g
J2EnOyB9CisKKyAgaW50IHZhbHVlOworfTsKKworVEVTVChQcmludFBvaW50ZXJUZXN0LCBNZW1i
ZXJWYXJpYWJsZVBvaW50ZXIpIHsKKyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KFByaW50KCZGb286
OnZhbHVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFByaW50KHNpemVvZigmRm9vOjp2YWx1
ZSkpICsgIi1ieXRlIG9iamVjdCAiKSk7CisgIGludCAoRm9vOjoqcCkgPSBOVUxMOyAgLy8gTk9M
SU5UCisgIEVYUEVDVF9UUlVFKEhhc1ByZWZpeChQcmludChwKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFByaW50KHNpemVvZihwKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKK30KKworLy8gVGVz
dHMgcHJpbnRpbmcgbWVtYmVyIGZ1bmN0aW9uIHBvaW50ZXJzLiAgQWx0aG91Z2ggdGhleSBhcmUg
Y2FsbGVkCisvLyBwb2ludGVycywgdGhleSBkb24ndCBwb2ludCB0byBhIGxvY2F0aW9uIGluIHRo
ZSBhZGRyZXNzIHNwYWNlLgorLy8gVGhlaXIgcmVwcmVzZW50YXRpb24gaXMgaW1wbGVtZW50YXRp
b24tZGVmaW5lZC4gIFRodXMgdGhleSB3aWxsIGJlCisvLyBwcmludGVkIGFzIHJhdyBieXRlcy4K
K1RFU1QoUHJpbnRQb2ludGVyVGVzdCwgTWVtYmVyRnVuY3Rpb25Qb2ludGVyKSB7CisgIEVYUEVD
VF9UUlVFKEhhc1ByZWZpeChQcmludCgmRm9vOjpNeU1ldGhvZCksCisgICAgICAgICAgICAgICAg
ICAgICAgICBQcmludChzaXplb2YoJkZvbzo6TXlNZXRob2QpKSArICItYnl0ZSBvYmplY3QgIikp
OworICBFWFBFQ1RfVFJVRSgKKyAgICAgIEhhc1ByZWZpeChQcmludCgmRm9vOjpNeVZpcnR1YWxN
ZXRob2QpLAorICAgICAgICAgICAgICAgIFByaW50KHNpemVvZigoJkZvbzo6TXlWaXJ0dWFsTWV0
aG9kKSkpICsgIi1ieXRlIG9iamVjdCAiKSk7CisgIGludCAoRm9vOjoqcCkoY2hhcikgPSBOVUxM
OyAgLy8gTk9MSU5UCisgIEVYUEVDVF9UUlVFKEhhc1ByZWZpeChQcmludChwKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFByaW50KHNpemVvZihwKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKK30K
KworLy8gVGVzdHMgcHJpbnRpbmcgQyBhcnJheXMuCisKKy8vIFRoZSBkaWZmZXJlbmNlIGJldHdl
ZW4gdGhpcyBhbmQgUHJpbnQoKSBpcyB0aGF0IGl0IGVuc3VyZXMgdGhhdCB0aGUKKy8vIGFyZ3Vt
ZW50IGlzIGEgcmVmZXJlbmNlIHRvIGFuIGFycmF5LgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNp
emVfdCBOPgorc3RyaW5nIFByaW50QXJyYXlIZWxwZXIoVCAoJmEpW05dKSB7CisgIHJldHVybiBQ
cmludChhKTsKK30KKworLy8gT25lLWRpbWVuc2lvbmFsIGFycmF5LgorVEVTVChQcmludEFycmF5
VGVzdCwgT25lRGltZW5zaW9uYWxBcnJheSkgeworICBpbnQgYVs1XSA9IHsgMSwgMiwgMywgNCwg
NSB9OworICBFWFBFQ1RfRVEoInsgMSwgMiwgMywgNCwgNSB9IiwgUHJpbnRBcnJheUhlbHBlcihh
KSk7Cit9CisKKy8vIFR3by1kaW1lbnNpb25hbCBhcnJheS4KK1RFU1QoUHJpbnRBcnJheVRlc3Qs
IFR3b0RpbWVuc2lvbmFsQXJyYXkpIHsKKyAgaW50IGFbMl1bNV0gPSB7CisgICAgeyAxLCAyLCAz
LCA0LCA1IH0sCisgICAgeyA2LCA3LCA4LCA5LCAwIH0KKyAgfTsKKyAgRVhQRUNUX0VRKCJ7IHsg
MSwgMiwgMywgNCwgNSB9LCB7IDYsIDcsIDgsIDksIDAgfSB9IiwgUHJpbnRBcnJheUhlbHBlcihh
KSk7Cit9CisKKy8vIEFycmF5IG9mIGNvbnN0IGVsZW1lbnRzLgorVEVTVChQcmludEFycmF5VGVz
dCwgQ29uc3RBcnJheSkgeworICBjb25zdCBib29sIGFbMV0gPSB7IGZhbHNlIH07CisgIEVYUEVD
VF9FUSgieyBmYWxzZSB9IiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIGNoYXIgYXJy
YXkgd2l0aG91dCB0ZXJtaW5hdGluZyBOVUwuCitURVNUKFByaW50QXJyYXlUZXN0LCBDaGFyQXJy
YXlXaXRoTm9UZXJtaW5hdGluZ051bCkgeworICAvLyBBcnJheSBhIGNvbnRhaW5zICdcMCcgaW4g
dGhlIG1pZGRsZSBhbmQgZG9lc24ndCBlbmQgd2l0aCAnXDAnLgorICBjaGFyIGFbXSA9IHsgJ0gn
LCAnXDAnLCAnaScgfTsKKyAgRVhQRUNUX0VRKCJcIkhcXDBpXCIgKG5vIHRlcm1pbmF0aW5nIE5V
TCkiLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8gY29uc3QgY2hhciBhcnJheSB3aXRo
IHRlcm1pbmF0aW5nIE5VTC4KK1RFU1QoUHJpbnRBcnJheVRlc3QsIENvbnN0Q2hhckFycmF5V2l0
aFRlcm1pbmF0aW5nTnVsKSB7CisgIGNvbnN0IGNoYXIgYVtdID0gIlwwSGkiOworICBFWFBFQ1Rf
RVEoIlwiXFwwSGlcIiIsIFByaW50QXJyYXlIZWxwZXIoYSkpOworfQorCisvLyBjb25zdCB3Y2hh
cl90IGFycmF5IHdpdGhvdXQgdGVybWluYXRpbmcgTlVMLgorVEVTVChQcmludEFycmF5VGVzdCwg
V0NoYXJBcnJheVdpdGhOb1Rlcm1pbmF0aW5nTnVsKSB7CisgIC8vIEFycmF5IGEgY29udGFpbnMg
J1wwJyBpbiB0aGUgbWlkZGxlIGFuZCBkb2Vzbid0IGVuZCB3aXRoICdcMCcuCisgIGNvbnN0IHdj
aGFyX3QgYVtdID0geyBMJ0gnLCBMJ1wwJywgTCdpJyB9OworICBFWFBFQ1RfRVEoIkxcIkhcXDBp
XCIgKG5vIHRlcm1pbmF0aW5nIE5VTCkiLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8g
d2NoYXJfdCBhcnJheSB3aXRoIHRlcm1pbmF0aW5nIE5VTC4KK1RFU1QoUHJpbnRBcnJheVRlc3Qs
IFdDb25zdENoYXJBcnJheVdpdGhUZXJtaW5hdGluZ051bCkgeworICBjb25zdCB3Y2hhcl90IGFb
XSA9IEwiXDBIaSI7CisgIEVYUEVDVF9FUSgiTFwiXFwwSGlcIiIsIFByaW50QXJyYXlIZWxwZXIo
YSkpOworfQorCisvLyBBcnJheSBvZiBvYmplY3RzLgorVEVTVChQcmludEFycmF5VGVzdCwgT2Jq
ZWN0QXJyYXkpIHsKKyAgc3RyaW5nIGFbM10gPSB7ICJIaSIsICJIZWxsbyIsICJOaSBoYW8iIH07
CisgIEVYUEVDVF9FUSgieyBcIkhpXCIsIFwiSGVsbG9cIiwgXCJOaSBoYW9cIiB9IiwgUHJpbnRB
cnJheUhlbHBlcihhKSk7Cit9CisKKy8vIEFycmF5IHdpdGggbWFueSBlbGVtZW50cy4KK1RFU1Qo
UHJpbnRBcnJheVRlc3QsIEJpZ0FycmF5KSB7CisgIGludCBhWzEwMF0gPSB7IDEsIDIsIDMgfTsK
KyAgRVhQRUNUX0VRKCJ7IDEsIDIsIDMsIDAsIDAsIDAsIDAsIDAsIC4uLiwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCB9IiwKKyAgICAgICAgICAgIFByaW50QXJyYXlIZWxwZXIoYSkpOworfQorCisv
LyBUZXN0cyBwcmludGluZyA6OnN0cmluZyBhbmQgOjpzdGQ6OnN0cmluZy4KKworI2lmIEdURVNU
X0hBU19HTE9CQUxfU1RSSU5HCisvLyA6OnN0cmluZy4KK1RFU1QoUHJpbnRTdHJpbmdUZXN0LCBT
dHJpbmdJbkdsb2JhbE5hbWVzcGFjZSkgeworICBjb25zdCBjaGFyIHNbXSA9ICInXCI/XFxcYVxi
XGZcblwwXHJcdFx2XHg3Rlx4RkYgYSI7CisgIGNvbnN0IDo6c3RyaW5nIHN0cihzLCBzaXplb2Yo
cykpOworICBFWFBFQ1RfRVEoIlwiJ1xcXCI/XFxcXFxcYVxcYlxcZlxcblxcMFxcclxcdFxcdlxc
eDdGXFx4RkYgYVxcMFwiIiwKKyAgICAgICAgICAgIFByaW50KHN0cikpOworfQorI2VuZGlmICAv
LyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCisvLyA6OnN0ZDo6c3RyaW5nLgorVEVTVChQcmlu
dFN0cmluZ1Rlc3QsIFN0cmluZ0luU3RkTmFtZXNwYWNlKSB7CisgIGNvbnN0IGNoYXIgc1tdID0g
IidcIj9cXFxhXGJcZlxuXDBcclx0XHZceDdGXHhGRiBhIjsKKyAgY29uc3QgOjpzdGQ6OnN0cmlu
ZyBzdHIocywgc2l6ZW9mKHMpKTsKKyAgRVhQRUNUX0VRKCJcIidcXFwiP1xcXFxcXGFcXGJcXGZc
XG5cXDBcXHJcXHRcXHZcXHg3RlxceEZGIGFcXDBcIiIsCisgICAgICAgICAgICBQcmludChzdHIp
KTsKK30KKworVEVTVChQcmludFN0cmluZ1Rlc3QsIFN0cmluZ0FtYmlndW91c0hleCkgeworICAv
LyAiXHg2QkFOQU5BIiBpcyBhbWJpZ3VvdXMsIGl0IGNhbiBiZSBpbnRlcnByZXRlZCBhcyBzdGFy
dGluZyB3aXRoIGVpdGhlciBvZjoKKyAgLy8gJ1x4NicsICdceDZCJywgb3IgJ1x4NkJBJy4KKwor
ICAvLyBhIGhleCBlc2NhcGluZyBzZXF1ZW5jZSBmb2xsb3dpbmcgYnkgYSBkZWNpbWFsIGRpZ2l0
CisgIEVYUEVDVF9FUSgiXCIwXFx4MTJcIiBcIjNcIiIsIFByaW50KDo6c3RkOjpzdHJpbmcoIjBc
eDEyIiAiMyIpKSk7CisgIC8vIGEgaGV4IGVzY2FwaW5nIHNlcXVlbmNlIGZvbGxvd2luZyBieSBh
IGhleCBkaWdpdCAobG93ZXItY2FzZSkKKyAgRVhQRUNUX0VRKCJcIm1tXFx4NlwiIFwiYmFuYW5h
c1wiIiwgUHJpbnQoOjpzdGQ6OnN0cmluZygibW1ceDYiICJiYW5hbmFzIikpKTsKKyAgLy8gYSBo
ZXggZXNjYXBpbmcgc2VxdWVuY2UgZm9sbG93aW5nIGJ5IGEgaGV4IGRpZ2l0ICh1cHBlci1jYXNl
KQorICBFWFBFQ1RfRVEoIlwiTk9NXFx4NlwiIFwiQkFOQU5BXCIiLCBQcmludCg6OnN0ZDo6c3Ry
aW5nKCJOT01ceDYiICJCQU5BTkEiKSkpOworICAvLyBhIGhleCBlc2NhcGluZyBzZXF1ZW5jZSBm
b2xsb3dpbmcgYnkgYSBub24teGRpZ2l0CisgIEVYUEVDVF9FUSgiXCIhXFx4NS0hXCIiLCBQcmlu
dCg6OnN0ZDo6c3RyaW5nKCIhXHg1LSEiKSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyA6Ondz
dHJpbmcgYW5kIDo6c3RkOjp3c3RyaW5nLgorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5H
CisvLyA6OndzdHJpbmcuCitURVNUKFByaW50V2lkZVN0cmluZ1Rlc3QsIFN0cmluZ0luR2xvYmFs
TmFtZXNwYWNlKSB7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0gTCInXCI/XFxcYVxiXGZcblwwXHJc
dFx2XHhEM1x4NTc2XHg4RDNceEM3NEQgYSI7CisgIGNvbnN0IDo6d3N0cmluZyBzdHIocywgc2l6
ZW9mKHMpL3NpemVvZih3Y2hhcl90KSk7CisgIEVYUEVDVF9FUSgiTFwiJ1xcXCI/XFxcXFxcYVxc
YlxcZlxcblxcMFxcclxcdFxcdiIKKyAgICAgICAgICAgICJcXHhEM1xceDU3NlxceDhEM1xceEM3
NEQgYVxcMFwiIiwKKyAgICAgICAgICAgIFByaW50KHN0cikpOworfQorI2VuZGlmICAvLyBHVEVT
VF9IQVNfR0xPQkFMX1dTVFJJTkcKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORworLy8gOjpz
dGQ6OndzdHJpbmcuCitURVNUKFByaW50V2lkZVN0cmluZ1Rlc3QsIFN0cmluZ0luU3RkTmFtZXNw
YWNlKSB7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0gTCInXCI/XFxcYVxiXGZcblwwXHJcdFx2XHhE
M1x4NTc2XHg4RDNceEM3NEQgYSI7CisgIGNvbnN0IDo6c3RkOjp3c3RyaW5nIHN0cihzLCBzaXpl
b2Yocykvc2l6ZW9mKHdjaGFyX3QpKTsKKyAgRVhQRUNUX0VRKCJMXCInXFxcIj9cXFxcXFxhXFxi
XFxmXFxuXFwwXFxyXFx0XFx2IgorICAgICAgICAgICAgIlxceEQzXFx4NTc2XFx4OEQzXFx4Qzc0
RCBhXFwwXCIiLAorICAgICAgICAgICAgUHJpbnQoc3RyKSk7Cit9CisKK1RFU1QoUHJpbnRXaWRl
U3RyaW5nVGVzdCwgU3RyaW5nQW1iaWd1b3VzSGV4KSB7CisgIC8vIHNhbWUgZm9yIHdpZGUgc3Ry
aW5ncy4KKyAgRVhQRUNUX0VRKCJMXCIwXFx4MTJcIiBMXCIzXCIiLCBQcmludCg6OnN0ZDo6d3N0
cmluZyhMIjBceDEyIiBMIjMiKSkpOworICBFWFBFQ1RfRVEoIkxcIm1tXFx4NlwiIExcImJhbmFu
YXNcIiIsCisgICAgICAgICAgICBQcmludCg6OnN0ZDo6d3N0cmluZyhMIm1tXHg2IiBMImJhbmFu
YXMiKSkpOworICBFWFBFQ1RfRVEoIkxcIk5PTVxceDZcIiBMXCJCQU5BTkFcIiIsCisgICAgICAg
ICAgICBQcmludCg6OnN0ZDo6d3N0cmluZyhMIk5PTVx4NiIgTCJCQU5BTkEiKSkpOworICBFWFBF
Q1RfRVEoIkxcIiFcXHg1LSFcIiIsIFByaW50KDo6c3RkOjp3c3RyaW5nKEwiIVx4NS0hIikpKTsK
K30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RSSU5HCisKKy8vIFRlc3RzIHByaW50aW5n
IHR5cGVzIHRoYXQgc3VwcG9ydCBnZW5lcmljIHN0cmVhbWluZyAoaS5lLiBzdHJlYW1pbmcKKy8v
IHRvIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiBmb3IgYW55IHZhbGlkIENo
YXIgYW5kCisvLyBDaGFyVHJhaXRzIHR5cGVzKS4KKworLy8gVGVzdHMgcHJpbnRpbmcgYSBub24t
dGVtcGxhdGUgdHlwZSB0aGF0IHN1cHBvcnRzIGdlbmVyaWMgc3RyZWFtaW5nLgorCitjbGFzcyBB
bGxvd3NHZW5lcmljU3RyZWFtaW5nIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhciwgdHlw
ZW5hbWUgQ2hhclRyYWl0cz4KK3N0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYg
b3BlcmF0b3I8PCgKKyAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9z
LAorICAgIGNvbnN0IEFsbG93c0dlbmVyaWNTdHJlYW1pbmcmIC8qIGEgKi8pIHsKKyAgcmV0dXJu
IG9zIDw8ICJBbGxvd3NHZW5lcmljU3RyZWFtaW5nIjsKK30KKworVEVTVChQcmludFR5cGVXaXRo
R2VuZXJpY1N0cmVhbWluZ1Rlc3QsIE5vblRlbXBsYXRlVHlwZSkgeworICBBbGxvd3NHZW5lcmlj
U3RyZWFtaW5nIGE7CisgIEVYUEVDVF9FUSgiQWxsb3dzR2VuZXJpY1N0cmVhbWluZyIsIFByaW50
KGEpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgYSB0ZW1wbGF0ZSB0eXBlIHRoYXQgc3VwcG9y
dHMgZ2VuZXJpYyBzdHJlYW1pbmcuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQWxs
b3dzR2VuZXJpY1N0cmVhbWluZ1RlbXBsYXRlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hh
ciwgdHlwZW5hbWUgQ2hhclRyYWl0cywgdHlwZW5hbWUgVD4KK3N0ZDo6YmFzaWNfb3N0cmVhbTxD
aGFyLCBDaGFyVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hh
ciwgQ2hhclRyYWl0cz4mIG9zLAorICAgIGNvbnN0IEFsbG93c0dlbmVyaWNTdHJlYW1pbmdUZW1w
bGF0ZTxUPiYgLyogYSAqLykgeworICByZXR1cm4gb3MgPDwgIkFsbG93c0dlbmVyaWNTdHJlYW1p
bmdUZW1wbGF0ZSI7Cit9CisKK1RFU1QoUHJpbnRUeXBlV2l0aEdlbmVyaWNTdHJlYW1pbmdUZXN0
LCBUZW1wbGF0ZVR5cGUpIHsKKyAgQWxsb3dzR2VuZXJpY1N0cmVhbWluZ1RlbXBsYXRlPGludD4g
YTsKKyAgRVhQRUNUX0VRKCJBbGxvd3NHZW5lcmljU3RyZWFtaW5nVGVtcGxhdGUiLCBQcmludChh
KSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIGEgdHlwZSB0aGF0IHN1cHBvcnRzIGdlbmVyaWMg
c3RyZWFtaW5nIGFuZCBjYW4gYmUKKy8vIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGFub3RoZXIg
cHJpbnRhYmxlIHR5cGUuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQWxsb3dzR2Vu
ZXJpY1N0cmVhbWluZ0FuZEltcGxpY2l0Q29udmVyc2lvblRlbXBsYXRlIHsKKyBwdWJsaWM6Cisg
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIENoYXIsIHR5cGVuYW1lIENoYXJUcmFpdHMsIHR5cGVuYW1lIFQ+CitzdGQ6OmJh
c2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9wZXJhdG9yPDwoCisgICAgc3RkOjpiYXNp
Y19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcywKKyAgICBjb25zdCBBbGxvd3NHZW5lcmlj
U3RyZWFtaW5nQW5kSW1wbGljaXRDb252ZXJzaW9uVGVtcGxhdGU8VD4mIC8qIGEgKi8pIHsKKyAg
cmV0dXJuIG9zIDw8ICJBbGxvd3NHZW5lcmljU3RyZWFtaW5nQW5kSW1wbGljaXRDb252ZXJzaW9u
VGVtcGxhdGUiOworfQorCitURVNUKFByaW50VHlwZVdpdGhHZW5lcmljU3RyZWFtaW5nVGVzdCwg
VHlwZUltcGxpY2l0bHlDb252ZXJ0aWJsZSkgeworICBBbGxvd3NHZW5lcmljU3RyZWFtaW5nQW5k
SW1wbGljaXRDb252ZXJzaW9uVGVtcGxhdGU8aW50PiBhOworICBFWFBFQ1RfRVEoIkFsbG93c0dl
bmVyaWNTdHJlYW1pbmdBbmRJbXBsaWNpdENvbnZlcnNpb25UZW1wbGF0ZSIsIFByaW50KGEpKTsK
K30KKworI2lmIEdURVNUX0hBU19TVFJJTkdfUElFQ0VfCisKKy8vIFRlc3RzIHByaW50aW5nIFN0
cmluZ1BpZWNlLgorCitURVNUKFByaW50U3RyaW5nUGllY2VUZXN0LCBTaW1wbGVTdHJpbmdQaWVj
ZSkgeworICBjb25zdCBTdHJpbmdQaWVjZSBzcCA9ICJIZWxsbyI7CisgIEVYUEVDVF9FUSgiXCJI
ZWxsb1wiIiwgUHJpbnQoc3ApKTsKK30KKworVEVTVChQcmludFN0cmluZ1BpZWNlVGVzdCwgVW5w
cmludGFibGVDaGFyYWN0ZXJzKSB7CisgIGNvbnN0IGNoYXIgc3RyW10gPSAiTlVMIChcMCkgYW5k
IFxyXHQiOworICBjb25zdCBTdHJpbmdQaWVjZSBzcChzdHIsIHNpemVvZihzdHIpIC0gMSk7Cisg
IEVYUEVDVF9FUSgiXCJOVUwgKFxcMCkgYW5kIFxcclxcdFwiIiwgUHJpbnQoc3ApKTsKK30KKwor
I2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSSU5HX1BJRUNFXworCisvLyBUZXN0cyBwcmludGluZyBT
VEwgY29udGFpbmVycy4KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIEVtcHR5RGVxdWUp
IHsKKyAgZGVxdWU8Y2hhcj4gZW1wdHk7CisgIEVYUEVDVF9FUSgie30iLCBQcmludChlbXB0eSkp
OworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgTm9uRW1wdHlEZXF1ZSkgeworICBk
ZXF1ZTxpbnQ+IG5vbl9lbXB0eTsKKyAgbm9uX2VtcHR5LnB1c2hfYmFjaygxKTsKKyAgbm9uX2Vt
cHR5LnB1c2hfYmFjaygzKTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDMgfSIsIFByaW50KG5vbl9lbXB0
eSkpOworfQorCisjaWYgR1RFU1RfSEFTX0hBU0hfTUFQXworCitURVNUKFByaW50U3RsQ29udGFp
bmVyVGVzdCwgT25lRWxlbWVudEhhc2hNYXApIHsKKyAgaGFzaF9tYXA8aW50LCBjaGFyPiBtYXAx
OworICBtYXAxWzFdID0gJ2EnOworICBFWFBFQ1RfRVEoInsgKDEsICdhJyAoOTcsIDB4NjEpKSB9
IiwgUHJpbnQobWFwMSkpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgSGFzaE11
bHRpTWFwKSB7CisgIGhhc2hfbXVsdGltYXA8aW50LCBib29sPiBtYXAxOworICBtYXAxLmluc2Vy
dChtYWtlX3BhaXIoNSwgdHJ1ZSkpOworICBtYXAxLmluc2VydChtYWtlX3BhaXIoNSwgZmFsc2Up
KTsKKworICAvLyBFbGVtZW50cyBvZiBoYXNoX211bHRpbWFwIGNhbiBiZSBwcmludGVkIGluIGFu
eSBvcmRlci4KKyAgY29uc3Qgc3RyaW5nIHJlc3VsdCA9IFByaW50KG1hcDEpOworICBFWFBFQ1Rf
VFJVRShyZXN1bHQgPT0gInsgKDUsIHRydWUpLCAoNSwgZmFsc2UpIH0iIHx8CisgICAgICAgICAg
ICAgIHJlc3VsdCA9PSAieyAoNSwgZmFsc2UpLCAoNSwgdHJ1ZSkgfSIpCisgICAgICAgICAgICAg
ICAgICA8PCAiIHdoZXJlIFByaW50KG1hcDEpIHJldHVybnMgXCIiIDw8IHJlc3VsdCA8PCAiXCIu
IjsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfSEFTSF9NQVBfCisKKyNpZiBHVEVTVF9IQVNf
SEFTSF9TRVRfCisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBIYXNoU2V0KSB7CisgIGhh
c2hfc2V0PHN0cmluZz4gc2V0MTsKKyAgc2V0MS5pbnNlcnQoImhlbGxvIik7CisgIEVYUEVDVF9F
USgieyBcImhlbGxvXCIgfSIsIFByaW50KHNldDEpKTsKK30KKworVEVTVChQcmludFN0bENvbnRh
aW5lclRlc3QsIEhhc2hNdWx0aVNldCkgeworICBjb25zdCBpbnQga1NpemUgPSA1OworICBpbnQg
YVtrU2l6ZV0gPSB7IDEsIDEsIDIsIDUsIDEgfTsKKyAgaGFzaF9tdWx0aXNldDxpbnQ+IHNldDEo
YSwgYSArIGtTaXplKTsKKworICAvLyBFbGVtZW50cyBvZiBoYXNoX211bHRpc2V0IGNhbiBiZSBw
cmludGVkIGluIGFueSBvcmRlci4KKyAgY29uc3Qgc3RyaW5nIHJlc3VsdCA9IFByaW50KHNldDEp
OworICBjb25zdCBzdHJpbmcgZXhwZWN0ZWRfcGF0dGVybiA9ICJ7IGQsIGQsIGQsIGQsIGQgfSI7
ICAvLyBkIG1lYW5zIGEgZGlnaXQuCisKKyAgLy8gVmVyaWZpZXMgdGhlIHJlc3VsdCBtYXRjaGVz
IHRoZSBleHBlY3RlZCBwYXR0ZXJuOyBhbHNvIGV4dHJhY3RzCisgIC8vIHRoZSBudW1iZXJzIGlu
IHRoZSByZXN1bHQuCisgIEFTU0VSVF9FUShleHBlY3RlZF9wYXR0ZXJuLmxlbmd0aCgpLCByZXN1
bHQubGVuZ3RoKCkpOworICBzdGQ6OnZlY3RvcjxpbnQ+IG51bWJlcnM7CisgIGZvciAoc2l6ZV90
IGkgPSAwOyBpICE9IHJlc3VsdC5sZW5ndGgoKTsgaSsrKSB7CisgICAgaWYgKGV4cGVjdGVkX3Bh
dHRlcm5baV0gPT0gJ2QnKSB7CisgICAgICBBU1NFUlRfTkUoaXNkaWdpdChzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPihyZXN1bHRbaV0pKSwgMCk7CisgICAgICBudW1iZXJzLnB1c2hfYmFjayhy
ZXN1bHRbaV0gLSAnMCcpOworICAgIH0gZWxzZSB7CisgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRf
cGF0dGVybltpXSwgcmVzdWx0W2ldKSA8PCAiIHdoZXJlIHJlc3VsdCBpcyAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCByZXN1bHQ7CisgICAgfQor
ICB9CisKKyAgLy8gTWFrZXMgc3VyZSB0aGUgcmVzdWx0IGNvbnRhaW5zIHRoZSByaWdodCBudW1i
ZXJzLgorICBzdGQ6OnNvcnQobnVtYmVycy5iZWdpbigpLCBudW1iZXJzLmVuZCgpKTsKKyAgc3Rk
Ojpzb3J0KGEsIGEgKyBrU2l6ZSk7CisgIEVYUEVDVF9UUlVFKHN0ZDo6ZXF1YWwoYSwgYSArIGtT
aXplLCBudW1iZXJzLmJlZ2luKCkpKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfSEFTSF9T
RVRfCisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBMaXN0KSB7CisgIGNvbnN0IHN0cmlu
ZyBhW10gPSB7CisgICAgImhlbGxvIiwKKyAgICAid29ybGQiCisgIH07CisgIGNvbnN0IGxpc3Q8
c3RyaW5nPiBzdHJpbmdzKGEsIGEgKyAyKTsKKyAgRVhQRUNUX0VRKCJ7IFwiaGVsbG9cIiwgXCJ3
b3JsZFwiIH0iLCBQcmludChzdHJpbmdzKSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJU
ZXN0LCBNYXApIHsKKyAgbWFwPGludCwgYm9vbD4gbWFwMTsKKyAgbWFwMVsxXSA9IHRydWU7Cisg
IG1hcDFbNV0gPSBmYWxzZTsKKyAgbWFwMVszXSA9IHRydWU7CisgIEVYUEVDVF9FUSgieyAoMSwg
dHJ1ZSksICgzLCB0cnVlKSwgKDUsIGZhbHNlKSB9IiwgUHJpbnQobWFwMSkpOworfQorCitURVNU
KFByaW50U3RsQ29udGFpbmVyVGVzdCwgTXVsdGlNYXApIHsKKyAgbXVsdGltYXA8Ym9vbCwgaW50
PiBtYXAxOworICAvLyBUaGUgbWFrZV9wYWlyIHRlbXBsYXRlIGZ1bmN0aW9uIHdvdWxkIGRlZHVj
ZSB0aGUgdHlwZSBhcworICAvLyBwYWlyPGJvb2wsIGludD4gaGVyZSwgYW5kIHNpbmNlIHRoZSBr
ZXkgcGFydCBpbiBhIG11bHRpbWFwIGhhcyB0bworICAvLyBiZSBjb25zdGFudCwgd2l0aG91dCBh
IHRlbXBsYXRlZCBjdG9yIGluIHRoZSBwYWlyIGNsYXNzIChhcyBpbgorICAvLyBsaWJDc3RkIG9u
IFNvbGFyaXMpLCBtYWtlX3BhaXIgY2FsbCB3b3VsZCBmYWlsIHRvIGNvbXBpbGUgYXMgbm8KKyAg
Ly8gaW1wbGljaXQgY29udmVyc2lvbiBpcyBmb3VuZC4gIFRodXMgZXhwbGljaXQgdHlwZW5hbWUg
aXMgdXNlZAorICAvLyBoZXJlIGluc3RlYWQuCisgIG1hcDEuaW5zZXJ0KHBhaXI8Y29uc3QgYm9v
bCwgaW50Pih0cnVlLCAwKSk7CisgIG1hcDEuaW5zZXJ0KHBhaXI8Y29uc3QgYm9vbCwgaW50Pih0
cnVlLCAxKSk7CisgIG1hcDEuaW5zZXJ0KHBhaXI8Y29uc3QgYm9vbCwgaW50PihmYWxzZSwgMikp
OworICBFWFBFQ1RfRVEoInsgKGZhbHNlLCAyKSwgKHRydWUsIDApLCAodHJ1ZSwgMSkgfSIsIFBy
aW50KG1hcDEpKTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIFNldCkgeworICBj
b25zdCB1bnNpZ25lZCBpbnQgYVtdID0geyAzLCAwLCA1IH07CisgIHNldDx1bnNpZ25lZCBpbnQ+
IHNldDEoYSwgYSArIDMpOworICBFWFBFQ1RfRVEoInsgMCwgMywgNSB9IiwgUHJpbnQoc2V0MSkp
OworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgTXVsdGlTZXQpIHsKKyAgY29uc3Qg
aW50IGFbXSA9IHsgMSwgMSwgMiwgNSwgMSB9OworICBtdWx0aXNldDxpbnQ+IHNldDEoYSwgYSAr
IDUpOworICBFWFBFQ1RfRVEoInsgMSwgMSwgMSwgMiwgNSB9IiwgUHJpbnQoc2V0MSkpOworfQor
CisjaWYgR1RFU1RfSEFTX1NURF9GT1JXQVJEX0xJU1RfCisvLyA8c2xpc3Q+IGlzIGF2YWlsYWJs
ZSBvbiBMaW51eCBpbiB0aGUgZ29vZ2xlMyBtb2RlLCBidXQgbm90IG9uCisvLyBXaW5kb3dzIG9y
IE1hYyBPUyBYLgorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgU2luZ2x5TGlua2VkTGlz
dCkgeworICBpbnQgYVtdID0geyA5LCAyLCA4IH07CisgIGNvbnN0IHN0ZDo6Zm9yd2FyZF9saXN0
PGludD4gaW50cyhhLCBhICsgMyk7CisgIEVYUEVDVF9FUSgieyA5LCAyLCA4IH0iLCBQcmludChp
bnRzKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfRk9SV0FSRF9MSVNUXworCitURVNU
KFByaW50U3RsQ29udGFpbmVyVGVzdCwgUGFpcikgeworICBwYWlyPGNvbnN0IGJvb2wsIGludD4g
cCh0cnVlLCA1KTsKKyAgRVhQRUNUX0VRKCIodHJ1ZSwgNSkiLCBQcmludChwKSk7Cit9CisKK1RF
U1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBWZWN0b3IpIHsKKyAgdmVjdG9yPGludD4gdjsKKyAg
di5wdXNoX2JhY2soMSk7CisgIHYucHVzaF9iYWNrKDIpOworICBFWFBFQ1RfRVEoInsgMSwgMiB9
IiwgUHJpbnQodikpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgTG9uZ1NlcXVl
bmNlKSB7CisgIGNvbnN0IGludCBhWzEwMF0gPSB7IDEsIDIsIDMgfTsKKyAgY29uc3QgdmVjdG9y
PGludD4gdihhLCBhICsgMTAwKTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDIsIDMsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsICIKKyAgICAgICAgICAgICIwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAuLi4gfSIsIFByaW50KHYpKTsKK30K
KworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIE5lc3RlZENvbnRhaW5lcikgeworICBjb25z
dCBpbnQgYTFbXSA9IHsgMSwgMiB9OworICBjb25zdCBpbnQgYTJbXSA9IHsgMywgNCwgNSB9Owor
ICBjb25zdCBsaXN0PGludD4gbDEoYTEsIGExICsgMik7CisgIGNvbnN0IGxpc3Q8aW50PiBsMihh
MiwgYTIgKyAzKTsKKworICB2ZWN0b3I8bGlzdDxpbnQ+ID4gdjsKKyAgdi5wdXNoX2JhY2sobDEp
OworICB2LnB1c2hfYmFjayhsMik7CisgIEVYUEVDVF9FUSgieyB7IDEsIDIgfSwgeyAzLCA0LCA1
IH0gfSIsIFByaW50KHYpKTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIE9uZURp
bWVuc2lvbmFsTmF0aXZlQXJyYXkpIHsKKyAgY29uc3QgaW50IGFbM10gPSB7IDEsIDIsIDMgfTsK
KyAgTmF0aXZlQXJyYXk8aW50PiBiKGEsIDMsIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSk7
CisgIEVYUEVDVF9FUSgieyAxLCAyLCAzIH0iLCBQcmludChiKSk7Cit9CisKK1RFU1QoUHJpbnRT
dGxDb250YWluZXJUZXN0LCBUd29EaW1lbnNpb25hbE5hdGl2ZUFycmF5KSB7CisgIGNvbnN0IGlu
dCBhWzJdWzNdID0geyB7IDEsIDIsIDMgfSwgeyA0LCA1LCA2IH0gfTsKKyAgTmF0aXZlQXJyYXk8
aW50WzNdPiBiKGEsIDIsIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSk7CisgIEVYUEVDVF9F
USgieyB7IDEsIDIsIDMgfSwgeyA0LCA1LCA2IH0gfSIsIFByaW50KGIpKTsKK30KKworLy8gVGVz
dHMgdGhhdCBhIGNsYXNzIG5hbWVkIGl0ZXJhdG9yIGlzbid0IHRyZWF0ZWQgYXMgYSBjb250YWlu
ZXIuCisKK3N0cnVjdCBpdGVyYXRvciB7CisgIGNoYXIgeDsKK307CisKK1RFU1QoUHJpbnRTdGxD
b250YWluZXJUZXN0LCBJdGVyYXRvcikgeworICBpdGVyYXRvciBpdCA9IHt9OworICBFWFBFQ1Rf
RVEoIjEtYnl0ZSBvYmplY3QgPDAwPiIsIFByaW50KGl0KSk7Cit9CisKKy8vIFRlc3RzIHRoYXQg
YSBjbGFzcyBuYW1lZCBjb25zdF9pdGVyYXRvciBpc24ndCB0cmVhdGVkIGFzIGEgY29udGFpbmVy
LgorCitzdHJ1Y3QgY29uc3RfaXRlcmF0b3IgeworICBjaGFyIHg7Cit9OworCitURVNUKFByaW50
U3RsQ29udGFpbmVyVGVzdCwgQ29uc3RJdGVyYXRvcikgeworICBjb25zdF9pdGVyYXRvciBpdCA9
IHt9OworICBFWFBFQ1RfRVEoIjEtYnl0ZSBvYmplY3QgPDAwPiIsIFByaW50KGl0KSk7Cit9CisK
KyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCisvLyBUZXN0cyBwcmludGluZyA6OnN0ZDo6dHIxOjp0
dXBsZXMuCisKKy8vIFR1cGxlcyBvZiB2YXJpb3VzIGFyaXRpZXMuCitURVNUKFByaW50VHIxVHVw
bGVUZXN0LCBWYXJpb3VzU2l6ZXMpIHsKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8PiB0MDsKKyAgRVhQ
RUNUX0VRKCIoKSIsIFByaW50KHQwKSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8aW50PiB0MSg1
KTsKKyAgRVhQRUNUX0VRKCIoNSkiLCBQcmludCh0MSkpOworCisgIDo6c3RkOjp0cjE6OnR1cGxl
PGNoYXIsIGJvb2w+IHQyKCdhJywgdHJ1ZSk7CisgIEVYUEVDVF9FUSgiKCdhJyAoOTcsIDB4NjEp
LCB0cnVlKSIsIFByaW50KHQyKSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBp
bnQ+IHQzKGZhbHNlLCAyLCAzKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMpIiwgUHJpbnQo
dDMpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50PiB0NChmYWxz
ZSwgMiwgMywgNCk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0KSIsIFByaW50KHQ0KSk7
CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbD4gdDUoZmFs
c2UsIDIsIDMsIDQsIHRydWUpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSki
LCBQcmludCh0NSkpOworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQs
IGJvb2wsIGludD4gdDYoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYpOworICBFWFBFQ1RfRVEoIihm
YWxzZSwgMiwgMywgNCwgdHJ1ZSwgNikiLCBQcmludCh0NikpOworCisgIDo6c3RkOjp0cjE6OnR1
cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50PiB0NygKKyAgICAgIGZhbHNl
LCAyLCAzLCA0LCB0cnVlLCA2LCA3KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRy
dWUsIDYsIDcpIiwgUHJpbnQodDcpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQs
IGludCwgaW50LCBib29sLCBpbnQsIGludCwgYm9vbD4gdDgoCisgICAgICBmYWxzZSwgMiwgMywg
NCwgdHJ1ZSwgNiwgNywgdHJ1ZSk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVl
LCA2LCA3LCB0cnVlKSIsIFByaW50KHQ4KSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwg
aW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGJvb2wsIGludD4gdDkoCisgICAgICBmYWxz
ZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSwgOSk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAy
LCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlLCA5KSIsIFByaW50KHQ5KSk7CisKKyAgY29uc3QgY2hh
ciogY29uc3Qgc3RyID0gIjgiOworICAvLyBWQysrIDIwMTAncyBpbXBsZW1lbnRhdGlvbiBvZiB0
dXBsZSBvZiBDKysweCBpcyBkZWZpY2llbnQsIHJlcXVpcmluZworICAvLyBhbiBleHBsaWNpdCB0
eXBlIGNhc3Qgb2YgTlVMTCB0byBiZSB1c2VkLgorICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBj
aGFyLCBzaG9ydCwgdGVzdGluZzo6aW50ZXJuYWw6OkludDMyLCAgLy8gTk9MSU5UCisgICAgICB0
ZXN0aW5nOjppbnRlcm5hbDo6SW50NjQsIGZsb2F0LCBkb3VibGUsIGNvbnN0IGNoYXIqLCB2b2lk
Kiwgc3RyaW5nPgorICAgICAgdDEwKGZhbHNlLCAnYScsIDMsIDQsIDUsIDEuNUYsIC0yLjUsIHN0
ciwKKyAgICAgICAgICBJbXBsaWNpdENhc3RfPHZvaWQqPihOVUxMKSwgIjEwIik7CisgIEVYUEVD
VF9FUSgiKGZhbHNlLCAnYScgKDk3LCAweDYxKSwgMywgNCwgNSwgMS41LCAtMi41LCAiICsgUHJp
bnRQb2ludGVyKHN0cikgKworICAgICAgICAgICAgIiBwb2ludGluZyB0byBcIjhcIiwgTlVMTCwg
XCIxMFwiKSIsCisgICAgICAgICAgICBQcmludCh0MTApKTsKK30KKworLy8gTmVzdGVkIHR1cGxl
cy4KK1RFU1QoUHJpbnRUcjFUdXBsZVRlc3QsIE5lc3RlZFR1cGxlKSB7CisgIDo6c3RkOjp0cjE6
OnR1cGxlPCA6OnN0ZDo6dHIxOjp0dXBsZTxpbnQsIGJvb2w+LCBjaGFyPiBuZXN0ZWQoCisgICAg
ICA6OnN0ZDo6dHIxOjptYWtlX3R1cGxlKDUsIHRydWUpLCAnYScpOworICBFWFBFQ1RfRVEoIigo
NSwgdHJ1ZSksICdhJyAoOTcsIDB4NjEpKSIsIFByaW50KG5lc3RlZCkpOworfQorCisjZW5kaWYg
IC8vIEdURVNUX0hBU19UUjFfVFVQTEUKKworI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCisvLyBU
ZXN0cyBwcmludGluZyA6OnN0ZDo6dHVwbGVzLgorCisvLyBUdXBsZXMgb2YgdmFyaW91cyBhcml0
aWVzLgorVEVTVChQcmludFN0ZFR1cGxlVGVzdCwgVmFyaW91c1NpemVzKSB7CisgIDo6c3RkOjp0
dXBsZTw+IHQwOworICBFWFBFQ1RfRVEoIigpIiwgUHJpbnQodDApKTsKKworICA6OnN0ZDo6dHVw
bGU8aW50PiB0MSg1KTsKKyAgRVhQRUNUX0VRKCIoNSkiLCBQcmludCh0MSkpOworCisgIDo6c3Rk
Ojp0dXBsZTxjaGFyLCBib29sPiB0MignYScsIHRydWUpOworICBFWFBFQ1RfRVEoIignYScgKDk3
LCAweDYxKSwgdHJ1ZSkiLCBQcmludCh0MikpOworCisgIDo6c3RkOjp0dXBsZTxib29sLCBpbnQs
IGludD4gdDMoZmFsc2UsIDIsIDMpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMykiLCBQcmlu
dCh0MykpOworCisgIDo6c3RkOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50PiB0NChmYWxzZSwg
MiwgMywgNCk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0KSIsIFByaW50KHQ0KSk7CisK
KyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2w+IHQ1KGZhbHNlLCAyLCAz
LCA0LCB0cnVlKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUpIiwgUHJpbnQo
dDUpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50PiB0
NihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNik7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0
LCB0cnVlLCA2KSIsIFByaW50KHQ2KSk7CisKKyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwgaW50
LCBpbnQsIGJvb2wsIGludCwgaW50PiB0NygKKyAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2
LCA3KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcpIiwgUHJpbnQo
dDcpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBp
bnQsIGJvb2w+IHQ4KAorICAgICAgZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUpOwor
ICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSkiLCBQcmludCh0
OCkpOworCisgIDo6c3RkOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGlu
dCwgYm9vbCwgaW50PiB0OSgKKyAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVl
LCA5KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUsIDkp
IiwgUHJpbnQodDkpKTsKKworICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAiOCI7CisgIC8vIFZD
KysgMjAxMCdzIGltcGxlbWVudGF0aW9uIG9mIHR1cGxlIG9mIEMrKzB4IGlzIGRlZmljaWVudCwg
cmVxdWlyaW5nCisgIC8vIGFuIGV4cGxpY2l0IHR5cGUgY2FzdCBvZiBOVUxMIHRvIGJlIHVzZWQu
CisgIDo6c3RkOjp0dXBsZTxib29sLCBjaGFyLCBzaG9ydCwgdGVzdGluZzo6aW50ZXJuYWw6Oklu
dDMyLCAgLy8gTk9MSU5UCisgICAgICB0ZXN0aW5nOjppbnRlcm5hbDo6SW50NjQsIGZsb2F0LCBk
b3VibGUsIGNvbnN0IGNoYXIqLCB2b2lkKiwgc3RyaW5nPgorICAgICAgdDEwKGZhbHNlLCAnYScs
IDMsIDQsIDUsIDEuNUYsIC0yLjUsIHN0ciwKKyAgICAgICAgICBJbXBsaWNpdENhc3RfPHZvaWQq
PihOVUxMKSwgIjEwIik7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAnYScgKDk3LCAweDYxKSwgMywg
NCwgNSwgMS41LCAtMi41LCAiICsgUHJpbnRQb2ludGVyKHN0cikgKworICAgICAgICAgICAgIiBw
b2ludGluZyB0byBcIjhcIiwgTlVMTCwgXCIxMFwiKSIsCisgICAgICAgICAgICBQcmludCh0MTAp
KTsKK30KKworLy8gTmVzdGVkIHR1cGxlcy4KK1RFU1QoUHJpbnRTdGRUdXBsZVRlc3QsIE5lc3Rl
ZFR1cGxlKSB7CisgIDo6c3RkOjp0dXBsZTwgOjpzdGQ6OnR1cGxlPGludCwgYm9vbD4sIGNoYXI+
IG5lc3RlZCgKKyAgICAgIDo6c3RkOjptYWtlX3R1cGxlKDUsIHRydWUpLCAnYScpOworICBFWFBF
Q1RfRVEoIigoNSwgdHJ1ZSksICdhJyAoOTcsIDB4NjEpKSIsIFByaW50KG5lc3RlZCkpOworfQor
CisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKworLy8gVGVzdHMgcHJpbnRpbmcgdXNlci1k
ZWZpbmVkIHVucHJpbnRhYmxlIHR5cGVzLgorCisvLyBVbnByaW50YWJsZSB0eXBlcyBpbiB0aGUg
Z2xvYmFsIG5hbWVzcGFjZS4KK1RFU1QoUHJpbnRVbnByaW50YWJsZVR5cGVUZXN0LCBJbkdsb2Jh
bE5hbWVzcGFjZSkgeworICBFWFBFQ1RfRVEoIjEtYnl0ZSBvYmplY3QgPDAwPiIsCisgICAgICAg
ICAgICBQcmludChVbnByaW50YWJsZVRlbXBsYXRlSW5HbG9iYWw8Y2hhcj4oKSkpOworfQorCisv
LyBVbnByaW50YWJsZSB0eXBlcyBpbiBhIHVzZXIgbmFtZXNwYWNlLgorVEVTVChQcmludFVucHJp
bnRhYmxlVHlwZVRlc3QsIEluVXNlck5hbWVzcGFjZSkgeworICBFWFBFQ1RfRVEoIjE2LWJ5dGUg
b2JqZWN0IDxFRi0xMiAwMC0wMCAzNC1BQiAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMD4i
LAorICAgICAgICAgICAgUHJpbnQoOjpmb286OlVucHJpbnRhYmxlSW5Gb28oKSkpOworfQorCisv
LyBVbnByaW50YWJsZSB0eXBlcyBhcmUgdGhhdCB0b28gYmlnIHRvIGJlIHByaW50ZWQgY29tcGxl
dGVseS4KKworc3RydWN0IEJpZyB7CisgIEJpZygpIHsgbWVtc2V0KGFycmF5LCAwLCBzaXplb2Yo
YXJyYXkpKTsgfQorICBjaGFyIGFycmF5WzI1N107Cit9OworCitURVNUKFByaW50VW5wcml0YWJs
ZVR5cGVUZXN0LCBCaWdPYmplY3QpIHsKKyAgRVhQRUNUX0VRKCIyNTctYnl0ZSBvYmplY3QgPDAw
LTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwICIKKyAgICAgICAgICAgICIwMC0wMCAw
MC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAiCisg
ICAgICAgICAgICAiMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAt
MDAgMDAtMDAgMDAtMDAgIgorICAgICAgICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAw
LTAwIDAwLTAwIC4uLiAwMC0wMCAwMC0wMCAwMC0wMCAiCisgICAgICAgICAgICAiMDAtMDAgMDAt
MDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgIgorICAg
ICAgICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAw
IDAwLTAwIDAwLTAwICIKKyAgICAgICAgICAgICIwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0w
MCAwMC0wMCAwMC0wMCAwMC0wMCAwMD4iLAorICAgICAgICAgICAgUHJpbnQoQmlnKCkpKTsKK30K
KworLy8gVGVzdHMgcHJpbnRpbmcgdXNlci1kZWZpbmVkIHN0cmVhbWFibGUgdHlwZXMuCisKKy8v
IFN0cmVhbWFibGUgdHlwZXMgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCitURVNUKFByaW50U3Ry
ZWFtYWJsZVR5cGVUZXN0LCBJbkdsb2JhbE5hbWVzcGFjZSkgeworICBTdHJlYW1hYmxlSW5HbG9i
YWwgeDsKKyAgRVhQRUNUX0VRKCJTdHJlYW1hYmxlSW5HbG9iYWwiLCBQcmludCh4KSk7CisgIEVY
UEVDVF9FUSgiU3RyZWFtYWJsZUluR2xvYmFsKiIsIFByaW50KCZ4KSk7Cit9CisKKy8vIFByaW50
YWJsZSB0ZW1wbGF0ZSB0eXBlcyBpbiBhIHVzZXIgbmFtZXNwYWNlLgorVEVTVChQcmludFN0cmVh
bWFibGVUeXBlVGVzdCwgVGVtcGxhdGVUeXBlSW5Vc2VyTmFtZXNwYWNlKSB7CisgIEVYUEVDVF9F
USgiU3RyZWFtYWJsZVRlbXBsYXRlSW5Gb286IDAiLAorICAgICAgICAgICAgUHJpbnQoOjpmb286
OlN0cmVhbWFibGVUZW1wbGF0ZUluRm9vPGludD4oKSkpOworfQorCisvLyBUZXN0cyBwcmludGlu
ZyB1c2VyLWRlZmluZWQgdHlwZXMgdGhhdCBoYXZlIGEgUHJpbnRUbygpIGZ1bmN0aW9uLgorVEVT
VChQcmludFByaW50YWJsZVR5cGVUZXN0LCBJblVzZXJOYW1lc3BhY2UpIHsKKyAgRVhQRUNUX0VR
KCJQcmludGFibGVWaWFQcmludFRvOiAwIiwKKyAgICAgICAgICAgIFByaW50KDo6Zm9vOjpQcmlu
dGFibGVWaWFQcmludFRvKCkpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgYSBwb2ludGVyIHRv
IGEgdXNlci1kZWZpbmVkIHR5cGUgdGhhdCBoYXMgYSA8PAorLy8gb3BlcmF0b3IgZm9yIGl0cyBw
b2ludGVyLgorVEVTVChQcmludFByaW50YWJsZVR5cGVUZXN0LCBQb2ludGVySW5Vc2VyTmFtZXNw
YWNlKSB7CisgIDo6Zm9vOjpQb2ludGVyUHJpbnRhYmxlIHg7CisgIEVYUEVDVF9FUSgiUG9pbnRl
clByaW50YWJsZSoiLCBQcmludCgmeCkpOworfQorCisvLyBUZXN0cyBwcmludGluZyB1c2VyLWRl
ZmluZWQgY2xhc3MgdGVtcGxhdGUgdGhhdCBoYXZlIGEgUHJpbnRUbygpIGZ1bmN0aW9uLgorVEVT
VChQcmludFByaW50YWJsZVR5cGVUZXN0LCBUZW1wbGF0ZUluVXNlck5hbWVzcGFjZSkgeworICBF
WFBFQ1RfRVEoIlByaW50YWJsZVZpYVByaW50VG9UZW1wbGF0ZTogNSIsCisgICAgICAgICAgICBQ
cmludCg6OmZvbzo6UHJpbnRhYmxlVmlhUHJpbnRUb1RlbXBsYXRlPGludD4oNSkpKTsKK30KKwor
Ly8gVGVzdHMgdGhhdCB0aGUgdW5pdmVyc2FsIHByaW50ZXIgcHJpbnRzIGJvdGggdGhlIGFkZHJl
c3MgYW5kIHRoZQorLy8gdmFsdWUgb2YgYSByZWZlcmVuY2UuCitURVNUKFByaW50UmVmZXJlbmNl
VGVzdCwgUHJpbnRzQWRkcmVzc0FuZFZhbHVlKSB7CisgIGludCBuID0gNTsKKyAgRVhQRUNUX0VR
KCJAIiArIFByaW50UG9pbnRlcigmbikgKyAiIDUiLCBQcmludEJ5UmVmKG4pKTsKKworICBpbnQg
YVsyXVszXSA9IHsKKyAgICB7IDAsIDEsIDIgfSwKKyAgICB7IDMsIDQsIDUgfQorICB9OworICBF
WFBFQ1RfRVEoIkAiICsgUHJpbnRQb2ludGVyKGEpICsgIiB7IHsgMCwgMSwgMiB9LCB7IDMsIDQs
IDUgfSB9IiwKKyAgICAgICAgICAgIFByaW50QnlSZWYoYSkpOworCisgIGNvbnN0IDo6Zm9vOjpV
bnByaW50YWJsZUluRm9vIHg7CisgIEVYUEVDVF9FUSgiQCIgKyBQcmludFBvaW50ZXIoJngpICsg
IiAxNi1ieXRlIG9iamVjdCAiCisgICAgICAgICAgICAiPEVGLTEyIDAwLTAwIDM0LUFCIDAwLTAw
IDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwPiIsCisgICAgICAgICAgICBQcmludEJ5UmVmKHgpKTsK
K30KKworLy8gVGVzdHMgdGhhdCB0aGUgdW5pdmVyc2FsIHByaW50ZXIgcHJpbnRzIGEgZnVuY3Rp
b24gcG9pbnRlciBwYXNzZWQgYnkKKy8vIHJlZmVyZW5jZS4KK1RFU1QoUHJpbnRSZWZlcmVuY2VU
ZXN0LCBIYW5kbGVzRnVuY3Rpb25Qb2ludGVyKSB7CisgIHZvaWQgKCpmcCkoaW50IG4pID0gJk15
RnVuY3Rpb247CisgIGNvbnN0IHN0cmluZyBmcF9wb2ludGVyX3N0cmluZyA9CisgICAgICBQcmlu
dFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oJmZwKSk7CisgIC8vIFdlIGNh
bm5vdCBkaXJlY3RseSBjYXN0ICZNeUZ1bmN0aW9uIHRvIGNvbnN0IHZvaWQqIGJlY2F1c2UgdGhl
CisgIC8vIHN0YW5kYXJkIGRpc2FsbG93cyBjYXN0aW5nIGJldHdlZW4gcG9pbnRlcnMgdG8gZnVu
Y3Rpb25zIGFuZAorICAvLyBwb2ludGVycyB0byBvYmplY3RzLCBhbmQgc29tZSBjb21waWxlcnMg
KGUuZy4gR0NDIDMuNCkgZW5mb3JjZQorICAvLyB0aGlzIGxpbWl0YXRpb24uCisgIGNvbnN0IHN0
cmluZyBmcF9zdHJpbmcgPSBQcmludFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4oCisgICAgICByZWludGVycHJldF9jYXN0PGludGVybmFsOjpCaWdnZXN0SW50PihmcCkpKTsK
KyAgRVhQRUNUX0VRKCJAIiArIGZwX3BvaW50ZXJfc3RyaW5nICsgIiAiICsgZnBfc3RyaW5nLAor
ICAgICAgICAgICAgUHJpbnRCeVJlZihmcCkpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSB1bml2
ZXJzYWwgcHJpbnRlciBwcmludHMgYSBtZW1iZXIgZnVuY3Rpb24gcG9pbnRlcgorLy8gcGFzc2Vk
IGJ5IHJlZmVyZW5jZS4KK1RFU1QoUHJpbnRSZWZlcmVuY2VUZXN0LCBIYW5kbGVzTWVtYmVyRnVu
Y3Rpb25Qb2ludGVyKSB7CisgIGludCAoRm9vOjoqcCkoY2hhciBjaCkgPSAmRm9vOjpNeU1ldGhv
ZDsKKyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KAorICAgICAgUHJpbnRCeVJlZihwKSwKKyAgICAg
ICJAIiArIFByaW50UG9pbnRlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigmcCkpICsg
IiAiICsKKyAgICAgICAgICBQcmludChzaXplb2YocCkpICsgIi1ieXRlIG9iamVjdCAiKSk7CisK
KyAgY2hhciAoRm9vOjoqcDIpKGludCBuKSA9ICZGb286Ok15VmlydHVhbE1ldGhvZDsKKyAgRVhQ
RUNUX1RSVUUoSGFzUHJlZml4KAorICAgICAgUHJpbnRCeVJlZihwMiksCisgICAgICAiQCIgKyBQ
cmludFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oJnAyKSkgKyAiICIgKwor
ICAgICAgICAgIFByaW50KHNpemVvZihwMikpICsgIi1ieXRlIG9iamVjdCAiKSk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgdGhlIHVuaXZlcnNhbCBwcmludGVyIHByaW50cyBhIG1lbWJlciB2YXJpYWJs
ZSBwb2ludGVyCisvLyBwYXNzZWQgYnkgcmVmZXJlbmNlLgorVEVTVChQcmludFJlZmVyZW5jZVRl
c3QsIEhhbmRsZXNNZW1iZXJWYXJpYWJsZVBvaW50ZXIpIHsKKyAgaW50IChGb286OipwKSA9ICZG
b286OnZhbHVlOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9UUlVFKEhhc1ByZWZpeCgKKyAgICAgIFBy
aW50QnlSZWYocCksCisgICAgICAiQCIgKyBQcmludFBvaW50ZXIoJnApICsgIiAiICsgUHJpbnQo
c2l6ZW9mKHApKSArICItYnl0ZSBvYmplY3QgIikpOworfQorCisvLyBUZXN0cyB0aGF0IEZvcm1h
dEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSgpLCB3aGljaCBpcyB1c2VkIHRvIHByaW50Cisv
LyBhbiBvcGVyYW5kIGluIGEgY29tcGFyaXNvbiBhc3NlcnRpb24gKGUuZy4gQVNTRVJUX0VRKSB3
aGVuIHRoZSBhc3NlcnRpb24KKy8vIGZhaWxzLCBmb3JtYXRzIHRoZSBvcGVyYW5kIGluIHRoZSBk
ZXNpcmVkIHdheS4KKworLy8gc2NhbGFyCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJl
TWVzc2FnZVRlc3QsIFdvcmtzRm9yU2NhbGFyKSB7CisgIEVYUEVDVF9TVFJFUSgiMTIzIiwKKyAg
ICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSgxMjMsIDEyNCku
Y19zdHIoKSk7Cit9CisKKy8vIG5vbi1jaGFyIHBvaW50ZXIKK1RFU1QoRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JOb25DaGFyUG9pbnRlcikgeworICBpbnQg
biA9IDA7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIoJm4pLAorICAgICAgICAgICAgRm9ybWF0
Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKCZuLCAmbikuY19zdHIoKSk7Cit9CisKKy8vIG5v
bi1jaGFyIGFycmF5CitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3Qs
IEZvcm1hdHNOb25DaGFyQXJyYXlBc1BvaW50ZXIpIHsKKyAgLy8gSW4gZXhwcmVzc2lvbiAnYXJy
YXkgPT0geCcsICdhcnJheScgaXMgY29tcGFyZWQgYnkgcG9pbnRlci4KKyAgLy8gVGhlcmVmb3Jl
IHdlIHdhbnQgdG8gcHJpbnQgYW4gYXJyYXkgb3BlcmFuZCBhcyBhIHBvaW50ZXIuCisgIGludCBu
W10gPSB7IDEsIDIsIDMgfTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihuKSwKKyAgICAgICAg
ICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShuLCBuKS5jX3N0cigpKTsKK30K
KworLy8gVGVzdHMgZm9ybWF0dGluZyBhIGNoYXIgcG9pbnRlciB3aGVuIGl0J3MgY29tcGFyZWQg
d2l0aCBhbm90aGVyIHBvaW50ZXIuCisvLyBJbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBwcmludCBp
dCBhcyBhIHJhdyBwb2ludGVyLCBhcyB0aGUgY29tcGFyaXNpb24gaXMgYnkKKy8vIHBvaW50ZXIu
CisKKy8vIGNoYXIgcG9pbnRlciB2cyBwb2ludGVyCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhclBvaW50ZXJWc1BvaW50ZXIpIHsKKyAgLy8g
SW4gZXhwcmVzc2lvbiAncCA9PSB4Jywgd2hlcmUgJ3AnIGFuZCAneCcgYXJlIChjb25zdCBvciBu
b3QpIGNoYXIKKyAgLy8gcG9pbnRlcnMsIHRoZSBvcGVyYW5kcyBhcmUgY29tcGFyZWQgYnkgcG9p
bnRlci4gIFRoZXJlZm9yZSB3ZQorICAvLyB3YW50IHRvIHByaW50ICdwJyBhcyBhIHBvaW50ZXIg
aW5zdGVhZCBvZiBhIEMgc3RyaW5nICh3ZSBkb24ndAorICAvLyBldmVuIGtub3cgaWYgaXQncyBz
dXBwb3NlZCB0byBwb2ludCB0byBhIHZhbGlkIEMgc3RyaW5nKS4KKworICAvLyBjb25zdCBjaGFy
KgorICBjb25zdCBjaGFyKiBzID0gImhlbGxvIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihz
KSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzLCBzKS5j
X3N0cigpKTsKKworICAvLyBjaGFyKgorICBjaGFyIGNoID0gJ2EnOworICBFWFBFQ1RfRVEoUHJp
bnRQb2ludGVyKCZjaCksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2UoJmNoLCAmY2gpLmNfc3RyKCkpOworfQorCisvLyB3Y2hhcl90IHBvaW50ZXIgdnMgcG9p
bnRlcgorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0Zv
cldDaGFyUG9pbnRlclZzUG9pbnRlcikgeworICAvLyBJbiBleHByZXNzaW9uICdwID09IHgnLCB3
aGVyZSAncCcgYW5kICd4JyBhcmUgKGNvbnN0IG9yIG5vdCkgY2hhcgorICAvLyBwb2ludGVycywg
dGhlIG9wZXJhbmRzIGFyZSBjb21wYXJlZCBieSBwb2ludGVyLiAgVGhlcmVmb3JlIHdlCisgIC8v
IHdhbnQgdG8gcHJpbnQgJ3AnIGFzIGEgcG9pbnRlciBpbnN0ZWFkIG9mIGEgd2lkZSBDIHN0cmlu
ZyAod2UgZG9uJ3QKKyAgLy8gZXZlbiBrbm93IGlmIGl0J3Mgc3VwcG9zZWQgdG8gcG9pbnQgdG8g
YSB2YWxpZCB3aWRlIEMgc3RyaW5nKS4KKworICAvLyBjb25zdCB3Y2hhcl90KgorICBjb25zdCB3
Y2hhcl90KiBzID0gTCJoZWxsbyI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocyksCisgICAg
ICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgcykuY19zdHIoKSk7
CisKKyAgLy8gd2NoYXJfdCoKKyAgd2NoYXJfdCBjaCA9IEwnYSc7CisgIEVYUEVDVF9FUShQcmlu
dFBvaW50ZXIoJmNoKSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVz
c2FnZSgmY2gsICZjaCkuY19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIGZvcm1hdHRpbmcgYSBjaGFy
IHBvaW50ZXIgd2hlbiBpdCdzIGNvbXBhcmVkIHRvIGEgc3RyaW5nIG9iamVjdC4KKy8vIEluIHRo
aXMgY2FzZSB3ZSB3YW50IHRvIHByaW50IHRoZSBjaGFyIHBvaW50ZXIgYXMgYSBDIHN0cmluZy4K
KworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisvLyBjaGFyIHBvaW50ZXIgdnMgOjpzdHJp
bmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JD
aGFyUG9pbnRlclZzU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIqIHMgPSAiaGVsbG8gXCJ3b3JsZCI7
CisgIEVYUEVDVF9TVFJFUSgiXCJoZWxsbyBcXFwid29ybGRcIiIsICAvLyBUaGUgc3RyaW5nIGNv
bnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2UocywgOjpzdHJpbmcoKSkuY19zdHIoKSk7CisKKyAgLy8gY2hhcioK
KyAgY2hhciBzdHJbXSA9ICJoaVwxIjsKKyAgY2hhciogcCA9IHN0cjsKKyAgRVhQRUNUX1NUUkVR
KCJcImhpXFx4MVwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4K
KyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShwLCA6OnN0
cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisvLyBjaGFyIHBvaW50ZXIgdnMgc3RkOjpz
dHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NG
b3JDaGFyUG9pbnRlclZzU3RkU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIqIHMgPSAiaGVsbG8gXCJ3
b3JsZCI7CisgIEVYUEVDVF9TVFJFUSgiXCJoZWxsbyBcXFwid29ybGRcIiIsICAvLyBUaGUgc3Ry
aW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JD
b21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgOjpzdGQ6OnN0cmluZygpKS5jX3N0cigpKTsKKwor
ICAvLyBjaGFyKgorICBjaGFyIHN0cltdID0gImhpXDEiOworICBjaGFyKiBwID0gc3RyOworICBF
WFBFQ1RfU1RSRVEoIlwiaGlcXHgxXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBi
ZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNz
YWdlKHAsIDo6c3RkOjpzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfR0xP
QkFMX1dTVFJJTkcKKy8vIHdjaGFyX3QgcG9pbnRlciB2cyA6OndzdHJpbmcKK1RFU1QoRm9ybWF0
Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhclBvaW50ZXJWc1dT
dHJpbmcpIHsKKyAgY29uc3Qgd2NoYXJfdCogcyA9IEwiaGkgXCJ3b3JsZCI7CisgIEVYUEVDVF9T
VFJFUSgiTFwiaGkgXFxcIndvcmxkXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBi
ZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNz
YWdlKHMsIDo6d3N0cmluZygpKS5jX3N0cigpKTsKKworICAvLyB3Y2hhcl90KgorICB3Y2hhcl90
IHN0cltdID0gTCJoaVwxIjsKKyAgd2NoYXJfdCogcCA9IHN0cjsKKyAgRVhQRUNUX1NUUkVRKCJM
XCJoaVxceDFcIiIsICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisg
ICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocCwgOjp3c3Ry
aW5nKCkpLmNfc3RyKCkpOworfQorI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcK
Ky8vIHdjaGFyX3QgcG9pbnRlciB2cyBzdGQ6OndzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhclBvaW50ZXJWc1N0ZFdTdHJpbmcp
IHsKKyAgY29uc3Qgd2NoYXJfdCogcyA9IEwiaGkgXCJ3b3JsZCI7CisgIEVYUEVDVF9TVFJFUSgi
TFwiaGkgXFxcIndvcmxkXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBiZSBlc2Nh
cGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHMs
IDo6c3RkOjp3c3RyaW5nKCkpLmNfc3RyKCkpOworCisgIC8vIHdjaGFyX3QqCisgIHdjaGFyX3Qg
c3RyW10gPSBMImhpXDEiOworICB3Y2hhcl90KiBwID0gc3RyOworICBFWFBFQ1RfU1RSRVEoIkxc
ImhpXFx4MVwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAg
ICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShwLCA6OnN0ZDo6
d3N0cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisvLyBUZXN0cyBmb3JtYXR0aW5nIGEg
Y2hhciBhcnJheSB3aGVuIGl0J3MgY29tcGFyZWQgd2l0aCBhIHBvaW50ZXIgb3IgYXJyYXkuCisv
LyBJbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBwcmludCB0aGUgYXJyYXkgYXMgYSByb3cgcG9pbnRl
ciwgYXMgdGhlIGNvbXBhcmlzb24KKy8vIGlzIGJ5IHBvaW50ZXIuCisKKy8vIGNoYXIgYXJyYXkg
dnMgcG9pbnRlcgorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBX
b3Jrc0ZvckNoYXJBcnJheVZzUG9pbnRlcikgeworICBjaGFyIHN0cltdID0gImhpIFwid29ybGRc
IiI7CisgIGNoYXIqIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHN0ciksCisg
ICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCBwKS5jX3N0
cigpKTsKK30KKworLy8gY2hhciBhcnJheSB2cyBjaGFyIGFycmF5CitURVNUKEZvcm1hdEZvckNv
bXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhckFycmF5VnNDaGFyQXJyYXkp
IHsKKyAgY29uc3QgY2hhciBzdHJbXSA9ICJoaSBcIndvcmxkXCIiOworICBFWFBFQ1RfRVEoUHJp
bnRQb2ludGVyKHN0ciksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2Uoc3RyLCBzdHIpLmNfc3RyKCkpOworfQorCisvLyB3Y2hhcl90IGFycmF5IHZzIHBvaW50
ZXIKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JX
Q2hhckFycmF5VnNQb2ludGVyKSB7CisgIHdjaGFyX3Qgc3RyW10gPSBMImhpIFwid29ybGRcIiI7
CisgIHdjaGFyX3QqIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHN0ciksCisg
ICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCBwKS5jX3N0
cigpKTsKK30KKworLy8gd2NoYXJfdCBhcnJheSB2cyB3Y2hhcl90IGFycmF5CitURVNUKEZvcm1h
dEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJBcnJheVZzV0No
YXJBcnJheSkgeworICBjb25zdCB3Y2hhcl90IHN0cltdID0gTCJoaSBcIndvcmxkXCIiOworICBF
WFBFQ1RfRVEoUHJpbnRQb2ludGVyKHN0ciksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCBzdHIpLmNfc3RyKCkpOworfQorCisvLyBUZXN0cyBmb3Jt
YXR0aW5nIGEgY2hhciBhcnJheSB3aGVuIGl0J3MgY29tcGFyZWQgd2l0aCBhIHN0cmluZyBvYmpl
Y3QuCisvLyBJbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBwcmludCB0aGUgYXJyYXkgYXMgYSBDIHN0
cmluZy4KKworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisvLyBjaGFyIGFycmF5IHZzIHN0
cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0Zv
ckNoYXJBcnJheVZzU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIgc3RyW10gPSAiaGkgXCJ3XDBybGRc
IiI7CisgIEVYUEVDVF9TVFJFUSgiXCJoaSBcXFwid1wiIiwgIC8vIFRoZSBjb250ZW50IHNob3Vs
ZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFbWJlZGRl
ZCBOVUwgdGVybWluYXRlcyB0aGUgc3RyaW5nLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29t
cGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgOjpzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisjZW5k
aWYKKworLy8gY2hhciBhcnJheSB2cyBzdGQ6OnN0cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVZzU3RkU3RyaW5nKSB7Cisg
IGNvbnN0IGNoYXIgc3RyW10gPSAiaGkgXCJ3b3JsZFwiIjsKKyAgRVhQRUNUX1NUUkVRKCJcImhp
IFxcXCJ3b3JsZFxcXCJcIiIsICAvLyBUaGUgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAg
ICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzdHIsIDo6c3Rk
OjpzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcK
Ky8vIHdjaGFyX3QgYXJyYXkgdnMgd3N0cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFp
bHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvcldDaGFyQXJyYXlWc1dTdHJpbmcpIHsKKyAgY29uc3Qg
d2NoYXJfdCBzdHJbXSA9IEwiaGkgXCJ3b3JsZFwiIjsKKyAgRVhQRUNUX1NUUkVRKCJMXCJoaSBc
XFwid29ybGRcXFwiXCIiLCAgLy8gVGhlIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAg
ICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCA6OndzdHJp
bmcoKSkuY19zdHIoKSk7Cit9CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORwor
Ly8gd2NoYXJfdCBhcnJheSB2cyBzdGQ6OndzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNv
bkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhckFycmF5VnNTdGRXU3RyaW5nKSB7Cisg
IGNvbnN0IHdjaGFyX3Qgc3RyW10gPSBMImhpIFwid1wwcmxkXCIiOworICBFWFBFQ1RfU1RSRVEo
CisgICAgICAiTFwiaGkgXFxcIndcIiIsICAvLyBUaGUgY29udGVudCBzaG91bGQgYmUgZXNjYXBl
ZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVtYmVkZGVkIE5VTCB0ZXJtaW5hdGVzIHRo
ZSBzdHJpbmcuCisgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCA6
OnN0ZDo6d3N0cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisvLyBVc2VmdWwgZm9yIHRl
c3RpbmcgUHJpbnRUb1N0cmluZygpLiAgV2UgY2Fubm90IHVzZSBFWFBFQ1RfRVEoKQorLy8gdGhl
cmUgYXMgaXRzIGltcGxlbWVudGF0aW9uIHVzZXMgUHJpbnRUb1N0cmluZygpLiAgVGhlIGNhbGxl
ciBtdXN0CisvLyBlbnN1cmUgdGhhdCAndmFsdWUnIGhhcyBubyBzaWRlIGVmZmVjdC4KKyNkZWZp
bmUgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18odmFsdWUsIGV4cGVjdGVkX3N0cmluZykgICAgICAg
ICBcCisgIEVYUEVDVF9UUlVFKFByaW50VG9TdHJpbmcodmFsdWUpID09IChleHBlY3RlZF9zdHJp
bmcpKSAgICAgICAgXAorICAgICAgPDwgIiB3aGVyZSAiICN2YWx1ZSAiIHByaW50cyBhcyAiIDw8
IChQcmludFRvU3RyaW5nKHZhbHVlKSkKKworVEVTVChQcmludFRvU3RyaW5nVGVzdCwgV29ya3NG
b3JTY2FsYXIpIHsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18oMTIzLCAiMTIzIik7Cit9CisK
K1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIFdvcmtzRm9yUG9pbnRlclRvQ29uc3RDaGFyKSB7Cisg
IGNvbnN0IGNoYXIqIHAgPSAiaGVsbG8iOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhwLCAi
XCJoZWxsb1wiIik7Cit9CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIFdvcmtzRm9yUG9pbnRl
clRvTm9uQ29uc3RDaGFyKSB7CisgIGNoYXIgc1tdID0gImhlbGxvIjsKKyAgY2hhciogcCA9IHM7
CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKHAsICJcImhlbGxvXCIiKTsKK30KKworVEVTVChQ
cmludFRvU3RyaW5nVGVzdCwgRXNjYXBlc0ZvclBvaW50ZXJUb0NvbnN0Q2hhcikgeworICBjb25z
dCBjaGFyKiBwID0gImhlbGxvXG4iOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhwLCAiXCJo
ZWxsb1xcblwiIik7Cit9CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIEVzY2FwZXNGb3JQb2lu
dGVyVG9Ob25Db25zdENoYXIpIHsKKyAgY2hhciBzW10gPSAiaGVsbG9cMSI7CisgIGNoYXIqIHAg
PSBzOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhwLCAiXCJoZWxsb1xceDFcIiIpOworfQor
CitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvckFycmF5KSB7CisgIGludCBuWzNdID0g
eyAxLCAyLCAzIH07CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKG4sICJ7IDEsIDIsIDMgfSIp
OworfQorCitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheSkgeworICBj
aGFyIHNbXSA9ICJoZWxsbyI7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKHMsICJcImhlbGxv
XCIiKTsKK30KKworVEVTVChQcmludFRvU3RyaW5nVGVzdCwgV29ya3NGb3JDaGFyQXJyYXlXaXRo
RW1iZWRkZWROdWwpIHsKKyAgY29uc3QgY2hhciBzdHJfd2l0aF9udWxbXSA9ICJoZWxsb1wwIHdv
cmxkIjsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18oc3RyX3dpdGhfbnVsLCAiXCJoZWxsb1xc
MCB3b3JsZFwiIik7CisKKyAgY2hhciBtdXRhYmxlX3N0cl93aXRoX251bFtdID0gImhlbGxvXDAg
d29ybGQiOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhtdXRhYmxlX3N0cl93aXRoX251bCwg
IlwiaGVsbG9cXDAgd29ybGRcIiIpOworfQorCisjdW5kZWYgRVhQRUNUX1BSSU5UX1RPX1NUUklO
R18KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VGVzdCwgV29ya3NGb3JOb25SZWZlcmVuY2Up
IHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2FsVGVyc2VQcmludCgxMjMs
ICZzcyk7CisgIEVYUEVDVF9FUSgiMTIzIiwgc3Muc3RyKCkpOworfQorCitURVNUKFVuaXZlcnNh
bFRlcnNlUHJpbnRUZXN0LCBXb3Jrc0ZvclJlZmVyZW5jZSkgeworICBjb25zdCBpbnQmIG4gPSAx
MjM7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIFVuaXZlcnNhbFRlcnNlUHJpbnQobiwg
JnNzKTsKKyAgRVhQRUNUX0VRKCIxMjMiLCBzcy5zdHIoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2Fs
VGVyc2VQcmludFRlc3QsIFdvcmtzRm9yQ1N0cmluZykgeworICBjb25zdCBjaGFyKiBzMSA9ICJh
YmMiOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMTsKKyAgVW5pdmVyc2FsVGVyc2VQcmludChz
MSwgJnNzMSk7CisgIEVYUEVDVF9FUSgiXCJhYmNcIiIsIHNzMS5zdHIoKSk7CisKKyAgY2hhciog
czIgPSBjb25zdF9jYXN0PGNoYXIqPihzMSk7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3MyOwor
ICBVbml2ZXJzYWxUZXJzZVByaW50KHMyLCAmc3MyKTsKKyAgRVhQRUNUX0VRKCJcImFiY1wiIiwg
c3MyLnN0cigpKTsKKworICBjb25zdCBjaGFyKiBzMyA9IE5VTEw7CisgIDo6c3RkOjpzdHJpbmdz
dHJlYW0gc3MzOworICBVbml2ZXJzYWxUZXJzZVByaW50KHMzLCAmc3MzKTsKKyAgRVhQRUNUX0VR
KCJOVUxMIiwgc3MzLnN0cigpKTsKK30KKworVEVTVChVbml2ZXJzYWxQcmludFRlc3QsIFdvcmtz
Rm9yTm9uUmVmZXJlbmNlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIFVuaXZlcnNh
bFByaW50KDEyMywgJnNzKTsKKyAgRVhQRUNUX0VRKCIxMjMiLCBzcy5zdHIoKSk7Cit9CisKK1RF
U1QoVW5pdmVyc2FsUHJpbnRUZXN0LCBXb3Jrc0ZvclJlZmVyZW5jZSkgeworICBjb25zdCBpbnQm
IG4gPSAxMjM7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIFVuaXZlcnNhbFByaW50KG4s
ICZzcyk7CisgIEVYUEVDVF9FUSgiMTIzIiwgc3Muc3RyKCkpOworfQorCitURVNUKFVuaXZlcnNh
bFByaW50VGVzdCwgV29ya3NGb3JDU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIqIHMxID0gImFiYyI7
CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3MxOworICBVbml2ZXJzYWxQcmludChzMSwgJnNzMSk7
CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIoczEpICsgIiBwb2ludGluZyB0byBcImFiY1wiIiwg
c3RyaW5nKHNzMS5zdHIoKSkpOworCisgIGNoYXIqIHMyID0gY29uc3RfY2FzdDxjaGFyKj4oczEp
OworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMjsKKyAgVW5pdmVyc2FsUHJpbnQoczIsICZzczIp
OworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHMyKSArICIgcG9pbnRpbmcgdG8gXCJhYmNcIiIs
IHN0cmluZyhzczIuc3RyKCkpKTsKKworICBjb25zdCBjaGFyKiBzMyA9IE5VTEw7CisgIDo6c3Rk
OjpzdHJpbmdzdHJlYW0gc3MzOworICBVbml2ZXJzYWxQcmludChzMywgJnNzMyk7CisgIEVYUEVD
VF9FUSgiTlVMTCIsIHNzMy5zdHIoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsUHJpbnRUZXN0LCBX
b3Jrc0ZvckNoYXJBcnJheSkgeworICBjb25zdCBjaGFyIHN0cltdID0gIlwiTGluZVwwIDFcIlxu
TGluZSAyIjsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczE7CisgIFVuaXZlcnNhbFByaW50KHN0
ciwgJnNzMSk7CisgIEVYUEVDVF9FUSgiXCJcXFwiTGluZVxcMCAxXFxcIlxcbkxpbmUgMlwiIiwg
c3MxLnN0cigpKTsKKworICBjb25zdCBjaGFyIG11dGFibGVfc3RyW10gPSAiXCJMaW5lXDAgMVwi
XG5MaW5lIDIiOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMjsKKyAgVW5pdmVyc2FsUHJpbnQo
bXV0YWJsZV9zdHIsICZzczIpOworICBFWFBFQ1RfRVEoIlwiXFxcIkxpbmVcXDAgMVxcXCJcXG5M
aW5lIDJcIiIsIHNzMi5zdHIoKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCisKK1RF
U1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhUcjEsIFBy
aW50c0VtcHR5VHVwbGUpIHsKKyAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50
VHVwbGVGaWVsZHNUb1N0cmluZ3MoCisgICAgICA6OnN0ZDo6dHIxOjptYWtlX3R1cGxlKCkpOwor
ICBFWFBFQ1RfRVEoMHUsIHJlc3VsdC5zaXplKCkpOworfQorCitURVNUKFVuaXZlcnNhbFRlcnNl
UHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmludHNPbmVUdXBsZSkgewor
ICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5n
cygKKyAgICAgIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGUoMSkpOworICBBU1NFUlRfRVEoMXUsIHJl
c3VsdC5zaXplKCkpOworICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRbMF0pOworfQorCitURVNUKFVu
aXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmludHNU
d29UdXBsZSkgeworICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZp
ZWxkc1RvU3RyaW5ncygKKyAgICAgIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGUoMSwgJ2EnKSk7Cisg
IEFTU0VSVF9FUSgydSwgcmVzdWx0LnNpemUoKSk7CisgIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFsw
XSk7CisgIEVYUEVDVF9FUSgiJ2EnICg5NywgMHg2MSkiLCByZXN1bHRbMV0pOworfQorCitURVNU
KFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmlu
dHNUZXJzZWx5KSB7CisgIGNvbnN0IGludCBuID0gMTsKKyAgU3RyaW5ncyByZXN1bHQgPSBVbml2
ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoCisgICAgICA6OnN0ZDo6dHIxOjp0
dXBsZTxjb25zdCBpbnQmLCBjb25zdCBjaGFyKj4obiwgImEiKSk7CisgIEFTU0VSVF9FUSgydSwg
cmVzdWx0LnNpemUoKSk7CisgIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7CisgIEVYUEVDVF9F
USgiXCJhXCIiLCByZXN1bHRbMV0pOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQ
TEUKKworI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmlu
dFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhTdGQsIFByaW50c0VtcHR5VHVwbGUpIHsKKyAg
U3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3Mo
OjpzdGQ6Om1ha2VfdHVwbGUoKSk7CisgIEVYUEVDVF9FUSgwdSwgcmVzdWx0LnNpemUoKSk7Cit9
CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhT
dGQsIFByaW50c09uZVR1cGxlKSB7CisgIFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQ
cmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAorICAgICAgOjpzdGQ6Om1ha2VfdHVwbGUoMSkpOwor
ICBBU1NFUlRfRVEoMXUsIHJlc3VsdC5zaXplKCkpOworICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRb
MF0pOworfQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rl
c3RXaXRoU3RkLCBQcmludHNUd29UdXBsZSkgeworICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNh
bFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKKyAgICAgIDo6c3RkOjptYWtlX3R1cGxl
KDEsICdhJykpOworICBBU1NFUlRfRVEoMnUsIHJlc3VsdC5zaXplKCkpOworICBFWFBFQ1RfRVEo
IjEiLCByZXN1bHRbMF0pOworICBFWFBFQ1RfRVEoIidhJyAoOTcsIDB4NjEpIiwgcmVzdWx0WzFd
KTsKK30KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0
V2l0aFN0ZCwgUHJpbnRzVGVyc2VseSkgeworICBjb25zdCBpbnQgbiA9IDE7CisgIFN0cmluZ3Mg
cmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAorICAgICAg
OjpzdGQ6OnR1cGxlPGNvbnN0IGludCYsIGNvbnN0IGNoYXIqPihuLCAiYSIpKTsKKyAgQVNTRVJU
X0VRKDJ1LCByZXN1bHQuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKCIxIiwgcmVzdWx0WzBdKTsKKyAg
RVhQRUNUX0VRKCJcImFcIiIsIHJlc3VsdFsxXSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFT
X1NURF9UVVBMRV8KKworfSAgLy8gbmFtZXNwYWNlIGd0ZXN0X3ByaW50ZXJzX3Rlc3QKK30gIC8v
IG5hbWVzcGFjZSB0ZXN0aW5nCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0LmNjCmluZGV4IDVhM2U5MTk2YWI5NmU0MTNmZWYzMzA3
NTI0YjE4YzkyZjVlZGFkYjAuLmNhOGJhOTMzYWVmOTAxNzcwYWNhNzhlMWU0NGI5YmRlNTBlODY1
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdGVzdC1w
YXJ0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10ZXN0
LXBhcnRfdGVzdC5jYwpAQCAtMzAsOSArMzAsOSBAQAogLy8gQXV0aG9yOiBtaGV1bGVAZ29vZ2xl
LmNvbSAoTWFya3VzIEhldWxlKQogLy8KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXRlc3QtcGFy
dC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oIgogCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiB1c2luZyB0ZXN0aW5nOjpN
ZXNzYWdlOwogdXNpbmcgdGVzdGluZzo6VGVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHVwbGVfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3QtdHVwbGVfdGVzdC5jYwppbmRleCA1MzJmNzBiM2Q0ZTkwNzBmNDU5Njg2
MjViM2ZmOTdjMzk4NDc1N2Q3Li5iZmFhM2UwYWM0YjIyOTBkOWZhMmI2OTQ3YWQ4MDlmMTBiOGQy
NDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR1cGxl
X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10dXBsZV90
ZXN0LmNjCkBAIC0yOSw5ICsyOSw5IEBACiAvLwogLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAo
WmhhbnlvbmcgV2FuKQogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaD4K
KyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oIgogI2luY2x1ZGUgPHV0aWxp
dHk+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgog
CiBuYW1lc3BhY2UgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MKaW5kZXggNzlhOGE4N2RjZmRiZGU1M2MxZTBkOGM2
ZDExYTk4NjkyMmIwMmZmOC4uYzI4NDcwMGIwMjBiNTI0OTE3NWJmY2ZhM2E1YmFlODVlNmYzOGFh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10
ZXN0Ml90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlw
ZWQtdGVzdDJfdGVzdC5jYwpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAog
I2luY2x1ZGUgInRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgiCi0jaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAjaWYgR1RFU1RfSEFTX1RZUEVE
X1RFU1RfUAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
LXR5cGVkLXRlc3RfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Qt
dHlwZWQtdGVzdF90ZXN0LmNjCmluZGV4IGYyYzM5NzIzMTAxNzc5ZTc3MTg0N2Q1OTJkOWZhYmI1
NmYzYjQ1YzYuLjkzNjI4YmEwODBjY2VlYTNkNjM1NTY2ODM0NzMwZDA0NGQ1YjQ1MDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90
ZXN0LmNjCkBAIC0yOSwxMSArMjksMTIgQEAKIC8vCiAvLyBBdXRob3I6IHdhbkBnb29nbGUuY29t
IChaaGFueW9uZyBXYW4pCiAKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5o
IgorCiAjaW5jbHVkZSA8c2V0PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgInRlc3Qv
Z3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgiCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgogCiB1c2luZyB0ZXN0aW5nOjpUZXN0OwogCkBAIC0zNDMsNiAr
MzQ0LDI1IEBAIFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKE51bWVyaWNUZXN0LAogdHlwZWRl
ZiBUeXBlczxpbnQsIGRvdWJsZT4gTnVtZXJpY1R5cGVzOwogSU5TVEFOVElBVEVfVFlQRURfVEVT
VF9DQVNFX1AoTXksIE51bWVyaWNUZXN0LCBOdW1lcmljVHlwZXMpOwogCitzdGF0aWMgY29uc3Qg
Y2hhciogR2V0VGVzdE5hbWUoKSB7CisgIHJldHVybiB0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5z
dGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKS0+bmFtZSgpOworfQorLy8gVGVzdCB0aGUgc3Ry
aXBwaW5nIG9mIHNwYWNlIGZyb20gdGVzdCBuYW1lcwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIFRyaW1tZWRUZXN0IDogcHVibGljIFRlc3QgeyB9OworVFlQRURfVEVTVF9DQVNFX1AoVHJp
bW1lZFRlc3QpOworVFlQRURfVEVTVF9QKFRyaW1tZWRUZXN0LCBUZXN0MSkgeyBFWFBFQ1RfU1RS
RVEoIlRlc3QxIiwgR2V0VGVzdE5hbWUoKSk7IH0KK1RZUEVEX1RFU1RfUChUcmltbWVkVGVzdCwg
VGVzdDIpIHsgRVhQRUNUX1NUUkVRKCJUZXN0MiIsIEdldFRlc3ROYW1lKCkpOyB9CitUWVBFRF9U
RVNUX1AoVHJpbW1lZFRlc3QsIFRlc3QzKSB7IEVYUEVDVF9TVFJFUSgiVGVzdDMiLCBHZXRUZXN0
TmFtZSgpKTsgfQorVFlQRURfVEVTVF9QKFRyaW1tZWRUZXN0LCBUZXN0NCkgeyBFWFBFQ1RfU1RS
RVEoIlRlc3Q0IiwgR2V0VGVzdE5hbWUoKSk7IH0KK1RZUEVEX1RFU1RfUChUcmltbWVkVGVzdCwg
VGVzdDUpIHsgRVhQRUNUX1NUUkVRKCJUZXN0NSIsIEdldFRlc3ROYW1lKCkpOyB9CitSRUdJU1RF
Ul9UWVBFRF9URVNUX0NBU0VfUCgKKyAgICBUcmltbWVkVGVzdCwKKyAgICBUZXN0MSwgVGVzdDIs
VGVzdDMgLCBUZXN0NCAsVGVzdDUgKTsgIC8vIE5PTElOVAordGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMj4gc3RydWN0IE15UGFpciB7fTsKKy8vIEJlIHN1cmUgdG8gdHJ5IGEgdHlw
ZSB3aXRoIGEgY29tbWEgaW4gaXRzIG5hbWUganVzdCBpbiBjYXNlIGl0IG1hdHRlcnMuCit0eXBl
ZGVmIFR5cGVzPGludCwgZG91YmxlLCBNeVBhaXI8aW50LCBpbnQ+ID4gVHJpbVR5cGVzOworSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIFRyaW1tZWRUZXN0LCBUcmltVHlwZXMpOwor
CiB9ICAvLyBuYW1lc3BhY2UgbGlicmFyeTIKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURf
VEVTVF9QCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5
cGVkLXRlc3RfdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBl
ZC10ZXN0X3Rlc3QuaAppbmRleCA0MGRmZWFjNmUwMWQ5N2VjZjdmZWJiODY1ZmNlNjY4NDhiYThl
OGRiLi40MWQ3NTcwNGNmODRkOGJkMDU0OTBkOTkzNGI2NTIyMTMxNjllOGZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgK
QEAgLTMyLDcgKzMyLDcgQEAKICNpZm5kZWYgR1RFU1RfVEVTVF9HVEVTVF9UWVBFRF9URVNUX1RF
U1RfSF8KICNkZWZpbmUgR1RFU1RfVEVTVF9HVEVTVF9UWVBFRF9URVNUX1RFU1RfSF8KIAotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2lmIEdU
RVNUX0hBU19UWVBFRF9URVNUX1AKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2MKaW5kZXggN2UwZjhmODA0NWQ3MWMw
MTVkMTI5NGZmZWY0Y2E1NDVkZGM1NTFmOS4uYjFmNTE2ODhhZjc1MzNiNDMxNjcxNDljYTI0ZTlk
Y2Q2YzU1ZDViNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dC11bml0dGVzdC1hcGlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjCkBAIC0zMyw3ICszMyw3IEBACiAvLyBUaGlzIGZp
bGUgY29udGFpbnMgdGVzdHMgdmVyaWZ5aW5nIGNvcnJlY3RuZXNzIG9mIGRhdGEgcHJvdmlkZWQg
dmlhCiAvLyBVbml0VGVzdCdzIHB1YmxpYyBtZXRob2RzLgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAjaW5jbHVkZSA8c3RyaW5nLmg+ICAv
LyBGb3Igc3RyY21wLgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTU0LDcgKzU0LDcgQEAgY2xh
c3MgVW5pdFRlc3RIZWxwZXIgewogIHB1YmxpYzoKICAgLy8gUmV0dXJucyB0aGUgYXJyYXkgb2Yg
cG9pbnRlcnMgdG8gYWxsIHRlc3QgY2FzZXMgc29ydGVkIGJ5IHRoZSB0ZXN0IGNhc2UKICAgLy8g
bmFtZS4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZSBhcnJheS4K
LSAgc3RhdGljIFRlc3RDYXNlIGNvbnN0KiogY29uc3QgR2V0U29ydGVkVGVzdENhc2VzKCkgewor
ICBzdGF0aWMgVGVzdENhc2UgY29uc3QqKiBHZXRTb3J0ZWRUZXN0Q2FzZXMoKSB7CiAgICAgVW5p
dFRlc3QmIHVuaXRfdGVzdCA9ICpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKTsKICAgICBUZXN0Q2Fz
ZSBjb25zdCoqIGNvbnN0IHRlc3RfY2FzZXMgPQogICAgICAgICBuZXcgY29uc3QgVGVzdENhc2Uq
W3VuaXRfdGVzdC50b3RhbF90ZXN0X2Nhc2VfY291bnQoKV07CkBAIC04Myw3ICs4Myw3IEBAIGNs
YXNzIFVuaXRUZXN0SGVscGVyIHsKICAgLy8gUmV0dXJucyB0aGUgYXJyYXkgb2YgcG9pbnRlcnMg
dG8gYWxsIHRlc3RzIGluIGEgcGFydGljdWxhciB0ZXN0IGNhc2UKICAgLy8gc29ydGVkIGJ5IHRo
ZSB0ZXN0IG5hbWUuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUK
ICAgLy8gYXJyYXkuCi0gIHN0YXRpYyBUZXN0SW5mbyBjb25zdCoqIGNvbnN0IEdldFNvcnRlZFRl
c3RzKGNvbnN0IFRlc3RDYXNlKiB0ZXN0X2Nhc2UpIHsKKyAgc3RhdGljIFRlc3RJbmZvIGNvbnN0
KiogR2V0U29ydGVkVGVzdHMoY29uc3QgVGVzdENhc2UqIHRlc3RfY2FzZSkgewogICAgIFRlc3RJ
bmZvIGNvbnN0KiogY29uc3QgdGVzdHMgPQogICAgICAgICBuZXcgY29uc3QgVGVzdEluZm8qW3Rl
c3RfY2FzZS0+dG90YWxfdGVzdF9jb3VudCgpXTsKIApAQCAtMTAzLDEyICsxMDMsNiBAQCBUWVBF
RF9URVNUKFRlc3RDYXNlV2l0aENvbW1lbnRUZXN0LCBEdW1teSkge30KIAogY29uc3QgaW50IGtU
eXBlZFRlc3RDYXNlcyA9IDE7CiBjb25zdCBpbnQga1R5cGVkVGVzdHMgPSAxOwotCi1TdHJpbmcg
R2V0RXhwZWN0ZWRUZXN0Q2FzZUNvbW1lbnQoKSB7Ci0gIE1lc3NhZ2UgY29tbWVudDsKLSAgY29t
bWVudCA8PCAiVHlwZVBhcmFtID0gIiA8PCBHZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIoKTsKLSAg
cmV0dXJuIGNvbW1lbnQuR2V0U3RyaW5nKCk7Ci19CiAjZWxzZQogY29uc3QgaW50IGtUeXBlZFRl
c3RDYXNlcyA9IDA7CiBjb25zdCBpbnQga1R5cGVkVGVzdHMgPSAwOwpAQCAtMTQzLDEyICsxMzcs
MTkgQEAgVEVTVChBcGlUZXN0LCBVbml0VGVzdEltbXV0YWJsZUFjY2Vzc29yc1dvcmspIHsKICAg
UmVjb3JkUHJvcGVydHkoImtleSIsICJ2YWx1ZSIpOwogfQogCitBc3NlcnRpb25SZXN1bHQgSXNO
dWxsKGNvbnN0IGNoYXIqIHN0cikgeworICBpZiAoc3RyICE9IE5VTEwpIHsKKyAgICByZXR1cm4g
dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJhcmd1bWVudCBpcyAiIDw8IHN0cjsKKyAg
fQorICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOworfQorCiBURVNUKEFwaVRlc3QsIFRlc3RD
YXNlSW1tdXRhYmxlQWNjZXNzb3JzV29yaykgewogICBjb25zdCBUZXN0Q2FzZSogdGVzdF9jYXNl
ID0gVW5pdFRlc3RIZWxwZXI6OkZpbmRUZXN0Q2FzZSgiQXBpVGVzdCIpOwogICBBU1NFUlRfVFJV
RSh0ZXN0X2Nhc2UgIT0gTlVMTCk7CiAKICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdF9j
YXNlLT5uYW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RfY2FzZS0+Y29tbWVudCgpKTsK
KyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVD
VF9UUlVFKHRlc3RfY2FzZS0+c2hvdWxkX3J1bigpKTsKICAgRVhQRUNUX0VRKDEsIHRlc3RfY2Fz
ZS0+ZGlzYWJsZWRfdGVzdF9jb3VudCgpKTsKICAgRVhQRUNUX0VRKDMsIHRlc3RfY2FzZS0+dGVz
dF90b19ydW5fY291bnQoKSk7CkBAIC0xNTgsMjYgKzE1OSwyNiBAQCBURVNUKEFwaVRlc3QsIFRl
c3RDYXNlSW1tdXRhYmxlQWNjZXNzb3JzV29yaykgewogCiAgIEVYUEVDVF9TVFJFUSgiRElTQUJM
RURfRHVtbXkxIiwgdGVzdHNbMF0tPm5hbWUoKSk7CiAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIs
IHRlc3RzWzBdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1sw
XS0+Y29tbWVudCgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1swXS0+dGVzdF9jYXNlX2Nv
bW1lbnQoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1swXS0+dmFsdWVfcGFyYW0oKSkp
OworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMF0tPnR5cGVfcGFyYW0oKSkpOwogICBFWFBF
Q1RfRkFMU0UodGVzdHNbMF0tPnNob3VsZF9ydW4oKSk7CiAKICAgRVhQRUNUX1NUUkVRKCJUZXN0
Q2FzZURpc2FibGVkQWNjZXNzb3JzV29yayIsIHRlc3RzWzFdLT5uYW1lKCkpOwogICBFWFBFQ1Rf
U1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1sxXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9T
VFJFUSgiIiwgdGVzdHNbMV0tPmNvbW1lbnQoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNb
MV0tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMV0t
PnZhbHVlX3BhcmFtKCkpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzFdLT50eXBlX3Bh
cmFtKCkpKTsKICAgRVhQRUNUX1RSVUUodGVzdHNbMV0tPnNob3VsZF9ydW4oKSk7CiAKICAgRVhQ
RUNUX1NUUkVRKCJUZXN0Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dvcmsiLCB0ZXN0c1syXS0+bmFt
ZSgpKTsKICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbMl0tPnRlc3RfY2FzZV9uYW1l
KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzJdLT5jb21tZW50KCkpOwotICBFWFBFQ1Rf
U1RSRVEoIiIsIHRlc3RzWzJdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgRVhQRUNUX1RSVUUo
SXNOdWxsKHRlc3RzWzJdLT52YWx1ZV9wYXJhbSgpKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0
ZXN0c1syXS0+dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVDVF9UUlVFKHRlc3RzWzJdLT5zaG91bGRf
cnVuKCkpOwogCiAgIEVYUEVDVF9TVFJFUSgiVW5pdFRlc3RJbW11dGFibGVBY2Nlc3NvcnNXb3Jr
IiwgdGVzdHNbM10tPm5hbWUoKSk7CiAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzNd
LT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1szXS0+Y29tbWVu
dCgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1szXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7
CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1szXS0+dmFsdWVfcGFyYW0oKSkpOworICBFWFBF
Q1RfVFJVRShJc051bGwodGVzdHNbM10tPnR5cGVfcGFyYW0oKSkpOwogICBFWFBFQ1RfVFJVRSh0
ZXN0c1szXS0+c2hvdWxkX3J1bigpKTsKIAogICBkZWxldGVbXSB0ZXN0czsKQEAgLTE4OCw3ICsx
ODksNyBAQCBURVNUKEFwaVRlc3QsIFRlc3RDYXNlSW1tdXRhYmxlQWNjZXNzb3JzV29yaykgewog
ICBBU1NFUlRfVFJVRSh0ZXN0X2Nhc2UgIT0gTlVMTCk7CiAKICAgRVhQRUNUX1NUUkVRKCJUZXN0
Q2FzZVdpdGhDb21tZW50VGVzdC8wIiwgdGVzdF9jYXNlLT5uYW1lKCkpOwotICBFWFBFQ1RfU1RS
RVEoR2V0RXhwZWN0ZWRUZXN0Q2FzZUNvbW1lbnQoKS5jX3N0cigpLCB0ZXN0X2Nhc2UtPmNvbW1l
bnQoKSk7CisgIEVYUEVDVF9TVFJFUShHZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIoKSwgdGVzdF9j
YXNlLT50eXBlX3BhcmFtKCkpOwogICBFWFBFQ1RfVFJVRSh0ZXN0X2Nhc2UtPnNob3VsZF9ydW4o
KSk7CiAgIEVYUEVDVF9FUSgwLCB0ZXN0X2Nhc2UtPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAg
IEVYUEVDVF9FUSgxLCB0ZXN0X2Nhc2UtPnRlc3RfdG9fcnVuX2NvdW50KCkpOwpAQCAtMTk4LDkg
KzE5OSw4IEBAIFRFU1QoQXBpVGVzdCwgVGVzdENhc2VJbW11dGFibGVBY2Nlc3NvcnNXb3JrKSB7
CiAKICAgRVhQRUNUX1NUUkVRKCJEdW1teSIsIHRlc3RzWzBdLT5uYW1lKCkpOwogICBFWFBFQ1Rf
U1RSRVEoIlRlc3RDYXNlV2l0aENvbW1lbnRUZXN0LzAiLCB0ZXN0c1swXS0+dGVzdF9jYXNlX25h
bWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMF0tPmNvbW1lbnQoKSk7Ci0gIEVYUEVD
VF9TVFJFUShHZXRFeHBlY3RlZFRlc3RDYXNlQ29tbWVudCgpLmNfc3RyKCksCi0gICAgICAgICAg
ICAgICB0ZXN0c1swXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVs
bCh0ZXN0c1swXS0+dmFsdWVfcGFyYW0oKSkpOworICBFWFBFQ1RfU1RSRVEoR2V0VHlwZU5hbWU8
aW50PigpLmNfc3RyKCksIHRlc3RzWzBdLT50eXBlX3BhcmFtKCkpOwogICBFWFBFQ1RfVFJVRSh0
ZXN0c1swXS0+c2hvdWxkX3J1bigpKTsKIAogICBkZWxldGVbXSB0ZXN0czsKQEAgLTIxMiw3ICsy
MTIsNyBAQCBURVNUKEFwaVRlc3QsIFRlc3RDYXNlRGlzYWJsZWRBY2Nlc3NvcnNXb3JrKSB7CiAg
IEFTU0VSVF9UUlVFKHRlc3RfY2FzZSAhPSBOVUxMKTsKIAogICBFWFBFQ1RfU1RSRVEoIkRJU0FC
TEVEX1Rlc3QiLCB0ZXN0X2Nhc2UtPm5hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdF9j
YXNlLT5jb21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdF9jYXNlLT50eXBlX3Bh
cmFtKCkpKTsKICAgRVhQRUNUX0ZBTFNFKHRlc3RfY2FzZS0+c2hvdWxkX3J1bigpKTsKICAgRVhQ
RUNUX0VRKDEsIHRlc3RfY2FzZS0+ZGlzYWJsZWRfdGVzdF9jb3VudCgpKTsKICAgRVhQRUNUX0VR
KDAsIHRlc3RfY2FzZS0+dGVzdF90b19ydW5fY291bnQoKSk7CkBAIC0yMjEsOCArMjIxLDggQEAg
VEVTVChBcGlUZXN0LCBUZXN0Q2FzZURpc2FibGVkQWNjZXNzb3JzV29yaykgewogICBjb25zdCBU
ZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0gdGVzdF9jYXNlLT5HZXRUZXN0SW5mbygwKTsKICAg
RVhQRUNUX1NUUkVRKCJEdW1teTIiLCB0ZXN0X2luZm8tPm5hbWUoKSk7CiAgIEVYUEVDVF9TVFJF
USgiRElTQUJMRURfVGVzdCIsIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVD
VF9TVFJFUSgiIiwgdGVzdF9pbmZvLT5jb21tZW50KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRl
c3RfaW5mby0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0
X2luZm8tPnZhbHVlX3BhcmFtKCkpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfaW5mby0+
dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVDVF9GQUxTRSh0ZXN0X2luZm8tPnNob3VsZF9ydW4oKSk7
CiB9CiAKQEAgLTI0Nyw3ICsyNDcsNyBAQCBjbGFzcyBGaW5hbFN1Y2Nlc3NDaGVja2VyIDogcHVi
bGljIEVudmlyb25tZW50IHsKICAgICBjb25zdCBUZXN0Q2FzZSoqIGNvbnN0IHRlc3RfY2FzZXMg
PSBVbml0VGVzdEhlbHBlcjo6R2V0U29ydGVkVGVzdENhc2VzKCk7CiAKICAgICBFWFBFQ1RfU1RS
RVEoIkFwaVRlc3QiLCB0ZXN0X2Nhc2VzWzBdLT5uYW1lKCkpOwotICAgIEVYUEVDVF9TVFJFUSgi
IiwgdGVzdF9jYXNlc1swXS0+Y29tbWVudCgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVz
dF9jYXNlc1swXS0+dHlwZV9wYXJhbSgpKSk7CiAgICAgRVhQRUNUX1RSVUUodGVzdF9jYXNlc1sw
XS0+c2hvdWxkX3J1bigpKTsKICAgICBFWFBFQ1RfRVEoMSwgdGVzdF9jYXNlc1swXS0+ZGlzYWJs
ZWRfdGVzdF9jb3VudCgpKTsKICAgICBBU1NFUlRfRVEoNCwgdGVzdF9jYXNlc1swXS0+dG90YWxf
dGVzdF9jb3VudCgpKTsKQEAgLTI1Nyw3ICsyNTcsNyBAQCBjbGFzcyBGaW5hbFN1Y2Nlc3NDaGVj
a2VyIDogcHVibGljIEVudmlyb25tZW50IHsKICAgICBFWFBFQ1RfRkFMU0UodGVzdF9jYXNlc1sw
XS0+RmFpbGVkKCkpOwogCiAgICAgRVhQRUNUX1NUUkVRKCJESVNBQkxFRF9UZXN0IiwgdGVzdF9j
YXNlc1sxXS0+bmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RfY2FzZXNbMV0tPmNv
bW1lbnQoKSk7CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfY2FzZXNbMV0tPnR5cGVfcGFy
YW0oKSkpOwogICAgIEVYUEVDVF9GQUxTRSh0ZXN0X2Nhc2VzWzFdLT5zaG91bGRfcnVuKCkpOwog
ICAgIEVYUEVDVF9FUSgxLCB0ZXN0X2Nhc2VzWzFdLT5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOwog
ICAgIEFTU0VSVF9FUSgxLCB0ZXN0X2Nhc2VzWzFdLT50b3RhbF90ZXN0X2NvdW50KCkpOwpAQCAt
MjY2LDggKzI2Niw3IEBAIGNsYXNzIEZpbmFsU3VjY2Vzc0NoZWNrZXIgOiBwdWJsaWMgRW52aXJv
bm1lbnQgewogCiAjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKICAgICBFWFBFQ1RfU1RSRVEoIlRl
c3RDYXNlV2l0aENvbW1lbnRUZXN0LzAiLCB0ZXN0X2Nhc2VzWzJdLT5uYW1lKCkpOwotICAgIEVY
UEVDVF9TVFJFUShHZXRFeHBlY3RlZFRlc3RDYXNlQ29tbWVudCgpLmNfc3RyKCksCi0gICAgICAg
ICAgICAgICAgIHRlc3RfY2FzZXNbMl0tPmNvbW1lbnQoKSk7CisgICAgRVhQRUNUX1NUUkVRKEdl
dFR5cGVOYW1lPGludD4oKS5jX3N0cigpLCB0ZXN0X2Nhc2VzWzJdLT50eXBlX3BhcmFtKCkpOwog
ICAgIEVYUEVDVF9UUlVFKHRlc3RfY2FzZXNbMl0tPnNob3VsZF9ydW4oKSk7CiAgICAgRVhQRUNU
X0VRKDAsIHRlc3RfY2FzZXNbMl0tPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgICAgQVNTRVJU
X0VRKDEsIHRlc3RfY2FzZXNbMl0tPnRvdGFsX3Rlc3RfY291bnQoKSk7CkBAIC0yODUsMjQgKzI4
NCwyNCBAQCBjbGFzcyBGaW5hbFN1Y2Nlc3NDaGVja2VyIDogcHVibGljIEVudmlyb25tZW50IHsK
IAogICAgIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VEaXNhYmxlZEFjY2Vzc29yc1dvcmsiLCB0ZXN0
c1sxXS0+bmFtZSgpKTsKICAgICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1sxXS0+dGVz
dF9jYXNlX25hbWUoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1sxXS0+Y29tbWVudCgp
KTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzFdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsK
KyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMV0tPnZhbHVlX3BhcmFtKCkpKTsKKyAgICBF
WFBFQ1RfVFJVRShJc051bGwodGVzdHNbMV0tPnR5cGVfcGFyYW0oKSkpOwogICAgIEVYUEVDVF9U
UlVFKHRlc3RzWzFdLT5zaG91bGRfcnVuKCkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzFdLT5y
ZXN1bHQoKS0+UGFzc2VkKCkpOwogICAgIEVYUEVDVF9FUSgwLCB0ZXN0c1sxXS0+cmVzdWx0KCkt
PnRlc3RfcHJvcGVydHlfY291bnQoKSk7CiAKICAgICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlSW1t
dXRhYmxlQWNjZXNzb3JzV29yayIsIHRlc3RzWzJdLT5uYW1lKCkpOwogICAgIEVYUEVDVF9TVFJF
USgiQXBpVGVzdCIsIHRlc3RzWzJdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RS
RVEoIiIsIHRlc3RzWzJdLT5jb21tZW50KCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNb
Ml0tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1sy
XS0+dmFsdWVfcGFyYW0oKSkpOworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1syXS0+dHlw
ZV9wYXJhbSgpKSk7CiAgICAgRVhQRUNUX1RSVUUodGVzdHNbMl0tPnNob3VsZF9ydW4oKSk7CiAg
ICAgRVhQRUNUX1RSVUUodGVzdHNbMl0tPnJlc3VsdCgpLT5QYXNzZWQoKSk7CiAgICAgRVhQRUNU
X0VRKDAsIHRlc3RzWzJdLT5yZXN1bHQoKS0+dGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKIAogICAg
IEVYUEVDVF9TVFJFUSgiVW5pdFRlc3RJbW11dGFibGVBY2Nlc3NvcnNXb3JrIiwgdGVzdHNbM10t
Pm5hbWUoKSk7CiAgICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbM10tPnRlc3RfY2Fz
ZV9uYW1lKCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbM10tPmNvbW1lbnQoKSk7Ci0g
ICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1szXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgICAg
RVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzNdLT52YWx1ZV9wYXJhbSgpKSk7CisgICAgRVhQRUNU
X1RSVUUoSXNOdWxsKHRlc3RzWzNdLT50eXBlX3BhcmFtKCkpKTsKICAgICBFWFBFQ1RfVFJVRSh0
ZXN0c1szXS0+c2hvdWxkX3J1bigpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0c1szXS0+cmVzdWx0
KCktPlBhc3NlZCgpKTsKICAgICBFWFBFQ1RfRVEoMSwgdGVzdHNbM10tPnJlc3VsdCgpLT50ZXN0
X3Byb3BlcnR5X2NvdW50KCkpOwpAQCAtMzE4LDkgKzMxNyw4IEBAIGNsYXNzIEZpbmFsU3VjY2Vz
c0NoZWNrZXIgOiBwdWJsaWMgRW52aXJvbm1lbnQgewogCiAgICAgRVhQRUNUX1NUUkVRKCJEdW1t
eSIsIHRlc3RzWzBdLT5uYW1lKCkpOwogICAgIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VXaXRoQ29t
bWVudFRlc3QvMCIsIHRlc3RzWzBdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RS
RVEoIiIsIHRlc3RzWzBdLT5jb21tZW50KCkpOwotICAgIEVYUEVDVF9TVFJFUShHZXRFeHBlY3Rl
ZFRlc3RDYXNlQ29tbWVudCgpLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgIHRlc3RzWzBdLT50
ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMF0tPnZh
bHVlX3BhcmFtKCkpKTsKKyAgICBFWFBFQ1RfU1RSRVEoR2V0VHlwZU5hbWU8aW50PigpLmNfc3Ry
KCksIHRlc3RzWzBdLT50eXBlX3BhcmFtKCkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzBdLT5z
aG91bGRfcnVuKCkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzBdLT5yZXN1bHQoKS0+UGFzc2Vk
KCkpOwogICAgIEVYUEVDVF9FUSgwLCB0ZXN0c1swXS0+cmVzdWx0KCktPnRlc3RfcHJvcGVydHlf
Y291bnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X2FsbF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9hbGxfdGVz
dC5jYwppbmRleCBlMWVkYjA4ZTMzYTE4YzIzOTExNWRhZDVlNGEwZDZmYjYzMmRiYjE3Li45NTVh
YTYyODI4NDgzM2RiNmM0ZGU4OGEyMGFlZDYzZjZmMThkY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2FsbF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYWxsX3Rlc3QuY2MKQEAgLTQ1LDQgKzQ1LDMgQEAKICNp
bmNsdWRlICJ0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MiCiAjaW5jbHVkZSAidGVzdC9n
dGVzdF91bml0dGVzdC5jYyIKICNpbmNsdWRlICJ0ZXN0L3Byb2R1Y3Rpb24uY2MiCi0jaW5jbHVk
ZSAic3JjL2d0ZXN0X21haW4uY2MiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkKaW5kZXgg
YzgxOTE4MzMxMjI3NWRlY2EwNWM3NjMxODYwNDA0NzFiZmY0OWYzMy4uNzhmM2UwZjUzYjc5MWNl
MjI4YTdhZGYwMzA4NjZiYjI4ODNiOWZlYSAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0LnB5CisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdC5w
eQpAQCAtNjYsMjEgKzY2LDE1IEBACiAgICAgJ2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRl
c3RfJykKIAogCi0jIFV0aWxpdGllcy4KLQotCi1lbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkK
LQotCi1kZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToKLSAgIiIiU2V0cyBhbiBlbnZpcm9u
bWVudCB2YXJpYWJsZSB0byBhIGdpdmVuIHZhbHVlOyB1bnNldHMgaXQgd2hlbiB0aGUKLSAgZ2l2
ZW4gdmFsdWUgaXMgTm9uZS4KLSAgIiIiCi0KLSAgaWYgdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAg
ZW52aXJvbltlbnZfdmFyXSA9IHZhbHVlCi0gIGVsaWYgZW52X3ZhciBpbiBlbnZpcm9uOgotICAg
IGRlbCBlbnZpcm9uW2Vudl92YXJdCitlbnZpcm9uID0gZ3Rlc3RfdGVzdF91dGlscy5lbnZpcm9u
CitTZXRFbnZWYXIgPSBndGVzdF90ZXN0X3V0aWxzLlNldEVudlZhcgorCisjIFRlc3RzIGluIHRo
aXMgZmlsZSBydW4gYSBHb29nbGUtVGVzdC1iYXNlZCB0ZXN0IHByb2dyYW0gYW5kIGV4cGVjdCBp
dAorIyB0byB0ZXJtaW5hdGUgcHJlbWF0dXJlbHkuICBUaGVyZWZvcmUgdGhleSBhcmUgaW5jb21w
YXRpYmxlIHdpdGgKKyMgdGhlIHByZW1hdHVyZS1leGl0LWZpbGUgcHJvdG9jb2wgYnkgZGVzaWdu
LiAgVW5zZXQgdGhlCisjIHByZW1hdHVyZS1leGl0IGZpbGVwYXRoIHRvIHByZXZlbnQgR29vZ2xl
IFRlc3QgZnJvbSBjcmVhdGluZworIyB0aGUgZmlsZS4KK1NldEVudlZhcihndGVzdF90ZXN0X3V0
aWxzLlBSRU1BVFVSRV9FWElUX0ZJTEVfRU5WX1ZBUiwgTm9uZSkKIAogCiBkZWYgUnVuKGNvbW1h
bmQpOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9icmVh
a19vbl9mYWlsdXJlX3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8uY2MKaW5kZXggZDI4ZDFkM2RhZDQ2Yjhm
ZGYzYzM0MDk2N2RiZmNhODUyZjU5ZTRhMS4uZGQwNzQ3OGMwNzU3Yzc0Y2Q1NDhhOGYzZTkyNzQz
NWE2ZTQyOTc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0Xy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfLmNjCkBAIC0zOSwxMSAr
MzksMTEgQEAKIC8vIFRoaXMgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1
bml0IHRlc3QuICBJdCBpcwogLy8gZXhwZWN0ZWQgdG8gZmFpbC4gIERvbid0IHJ1biBpdCBkaXJl
Y3RseS4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKIAogI2lmIEdURVNUX09TX1dJTkRPV1MKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVk
ZSA8c3RkbGliLmg+CisjIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyMgaW5jbHVkZSA8c3RkbGliLmg+
CiAjZW5kaWYKIAogbmFtZXNwYWNlIHsKQEAgLTY5LDcgKzY5LDggQEAgaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIgKiphcmd2KSB7CiAgIC8vIGEgZ2VuZXJhbCBwcm90ZWN0aW9uIGZhdWx0IChzZWdt
ZW50IHZpb2xhdGlvbikuCiAgIFNldEVycm9yTW9kZShTRU1fTk9HUEZBVUxURVJST1JCT1ggfCBT
RU1fRkFJTENSSVRJQ0FMRVJST1JTKTsKIAotI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQor
IyBpZiBHVEVTVF9IQVNfU0VIICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCiAgIC8vIFRo
ZSBkZWZhdWx0IHVuaGFuZGxlZCBleGNlcHRpb24gZmlsdGVyIGRvZXMgbm90IGFsd2F5cyBleGl0
CiAgIC8vIHdpdGggdGhlIGV4Y2VwdGlvbiBjb2RlIGFzIGV4aXQgY29kZSAtIGZvciBleGFtcGxl
IGl0IGV4aXRzIHdpdGgKICAgLy8gMCBmb3IgRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT04gYW5k
IDEgZm9yIEVYQ0VQVElPTl9CUkVBS1BPSU5UCkBAIC03Nyw3ICs3OCw4IEBAIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyICoqYXJndikgewogICAvLyBmaWx0ZXIgd2hpY2ggYWx3YXlzIGV4aXRzIHdp
dGggdGhlIGV4Y2VwdGlvbiBjb2RlIGZvciB1bmhhbmRsZWQKICAgLy8gZXhjZXB0aW9ucy4KICAg
U2V0VW5oYW5kbGVkRXhjZXB0aW9uRmlsdGVyKEV4aXRXaXRoRXhjZXB0aW9uQ29kZSk7Ci0jZW5k
aWYKKworIyBlbmRpZgogI2VuZGlmCiAKICAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2Ms
IGFyZ3YpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9j
YXRjaF9leGNlcHRpb25zX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNmZjMjJmZDFmZTVjMGM0
ZWJkYzhkZTdiNDIyMzZhMTY2OWIwZDA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9jYXRjaF9leGNlcHRpb25zX3Rlc3QucHkKQEAgLTAsMCAr
MSwyMzcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMCBHb29n
bGUgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlRl
c3RzIEdvb2dsZSBUZXN0J3MgZXhjZXB0aW9uIGNhdGNoaW5nIGJlaGF2aW9yLgorCitUaGlzIHNj
cmlwdCBpbnZva2VzIGd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfdGVzdF8gYW5kCitndGVzdF9jYXRj
aF9leGNlcHRpb25zX2V4X3Rlc3RfIChwcm9ncmFtcyB3cml0dGVuIHdpdGgKK0dvb2dsZSBUZXN0
KSBhbmQgdmVyaWZpZXMgdGhlaXIgb3V0cHV0LgorIiIiCisKK19fYXV0aG9yX18gPSAndmxhZGxA
Z29vZ2xlLmNvbSAoVmxhZCBMb3NldiknCisKK2ltcG9ydCBvcworCitpbXBvcnQgZ3Rlc3RfdGVz
dF91dGlscworCisjIENvbnN0YW50cy4KK0ZMQUdfUFJFRklYID0gJy0tZ3Rlc3RfJworTElTVF9U
RVNUU19GTEFHID0gRkxBR19QUkVGSVggKyAnbGlzdF90ZXN0cycKK05PX0NBVENIX0VYQ0VQVElP
TlNfRkxBRyA9IEZMQUdfUFJFRklYICsgJ2NhdGNoX2V4Y2VwdGlvbnM9MCcKK0ZJTFRFUl9GTEFH
ID0gRkxBR19QUkVGSVggKyAnZmlsdGVyJworCisjIFBhdGggdG8gdGhlIGd0ZXN0X2NhdGNoX2V4
Y2VwdGlvbnNfZXhfdGVzdF8gYmluYXJ5LCBjb21waWxlZCB3aXRoCisjIGV4Y2VwdGlvbnMgZW5h
YmxlZC4KK0VYX0VYRV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBh
dGgoCisgICAgJ2d0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfZXhfdGVzdF8nKQorCisjIFBhdGggdG8g
dGhlIGd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfdGVzdF8gYmluYXJ5LCBjb21waWxlZCB3aXRoCisj
IGV4Y2VwdGlvbnMgZGlzYWJsZWQuCitFWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVz
dEV4ZWN1dGFibGVQYXRoKAorICAgICdndGVzdF9jYXRjaF9leGNlcHRpb25zX25vX2V4X3Rlc3Rf
JykKKworZW52aXJvbiA9IGd0ZXN0X3Rlc3RfdXRpbHMuZW52aXJvbgorU2V0RW52VmFyID0gZ3Rl
c3RfdGVzdF91dGlscy5TZXRFbnZWYXIKKworIyBUZXN0cyBpbiB0aGlzIGZpbGUgcnVuIGEgR29v
Z2xlLVRlc3QtYmFzZWQgdGVzdCBwcm9ncmFtIGFuZCBleHBlY3QgaXQKKyMgdG8gdGVybWluYXRl
IHByZW1hdHVyZWx5LiAgVGhlcmVmb3JlIHRoZXkgYXJlIGluY29tcGF0aWJsZSB3aXRoCisjIHRo
ZSBwcmVtYXR1cmUtZXhpdC1maWxlIHByb3RvY29sIGJ5IGRlc2lnbi4gIFVuc2V0IHRoZQorIyBw
cmVtYXR1cmUtZXhpdCBmaWxlcGF0aCB0byBwcmV2ZW50IEdvb2dsZSBUZXN0IGZyb20gY3JlYXRp
bmcKKyMgdGhlIGZpbGUuCitTZXRFbnZWYXIoZ3Rlc3RfdGVzdF91dGlscy5QUkVNQVRVUkVfRVhJ
VF9GSUxFX0VOVl9WQVIsIE5vbmUpCisKK1RFU1RfTElTVCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3Vi
cHJvY2VzcygKKyAgICBbRVhFX1BBVEgsIExJU1RfVEVTVFNfRkxBR10sIGVudj1lbnZpcm9uKS5v
dXRwdXQKKworU1VQUE9SVFNfU0VIX0VYQ0VQVElPTlMgPSAnVGhyb3dzU2VoRXhjZXB0aW9uJyBp
biBURVNUX0xJU1QKKworaWYgU1VQUE9SVFNfU0VIX0VYQ0VQVElPTlM6CisgIEJJTkFSWV9PVVRQ
VVQgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0VYRV9QQVRIXSwgZW52PWVudmlyb24p
Lm91dHB1dAorCitFWF9CSU5BUllfT1VUUFVUID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNz
KAorICAgIFtFWF9FWEVfUEFUSF0sIGVudj1lbnZpcm9uKS5vdXRwdXQKKworCisjIFRoZSB0ZXN0
cy4KK2lmIFNVUFBPUlRTX1NFSF9FWENFUFRJT05TOgorICAjIHB5bGludDpkaXNhYmxlLW1zZz1D
NjMwMgorICBjbGFzcyBDYXRjaFNlaEV4Y2VwdGlvbnNUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVz
dENhc2UpOgorICAgICIiIlRlc3RzIGV4Y2VwdGlvbi1jYXRjaGluZyBiZWhhdmlvci4iIiIKKwor
CisgICAgZGVmIFRlc3RTZWhFeGNlcHRpb25zKHNlbGYsIHRlc3Rfb3V0cHV0KToKKyAgICAgIHNl
bGYuYXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24gJworICAgICAg
ICAgICAgICAgICAgICdpbiB0aGUgdGVzdCBmaXh0dXJlXCdzIGNvbnN0cnVjdG9yJworICAgICAg
ICAgICAgICAgICAgIGluIHRlc3Rfb3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhj
ZXB0aW9uIHdpdGggY29kZSAweDJhIHRocm93biAnCisgICAgICAgICAgICAgICAgICAgJ2luIHRo
ZSB0ZXN0IGZpeHR1cmVcJ3MgZGVzdHJ1Y3RvcicKKyAgICAgICAgICAgICAgICAgICBpbiB0ZXN0
X291dHB1dCkKKyAgICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgy
YSB0aHJvd24gaW4gU2V0VXBUZXN0Q2FzZSgpJworICAgICAgICAgICAgICAgICAgIGluIHRlc3Rf
b3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGggY29kZSAweDJh
IHRocm93biBpbiBUZWFyRG93blRlc3RDYXNlKCknCisgICAgICAgICAgICAgICAgICAgaW4gdGVz
dF9vdXRwdXQpCisgICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4
MmEgdGhyb3duIGluIFNldFVwKCknCisgICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQp
CisgICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhyb3du
IGluIFRlYXJEb3duKCknCisgICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCisgICAg
ICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhyb3duIGluIHRo
ZSB0ZXN0IGJvZHknCisgICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCisKKyAgICBk
ZWYgdGVzdENhdGNoZXNTZWhFeGNlcHRpb25zV2l0aEN4eEV4Y2VwdGlvbnNFbmFibGVkKHNlbGYp
OgorICAgICAgc2VsZi5UZXN0U2VoRXhjZXB0aW9ucyhFWF9CSU5BUllfT1VUUFVUKQorCisgICAg
ZGVmIHRlc3RDYXRjaGVzU2VoRXhjZXB0aW9uc1dpdGhDeHhFeGNlcHRpb25zRGlzYWJsZWQoc2Vs
Zik6CisgICAgICBzZWxmLlRlc3RTZWhFeGNlcHRpb25zKEJJTkFSWV9PVVRQVVQpCisKKworY2xh
c3MgQ2F0Y2hDeHhFeGNlcHRpb25zVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAg
IiIiVGVzdHMgQysrIGV4Y2VwdGlvbi1jYXRjaGluZyBiZWhhdmlvci4KKworICAgICBUZXN0cyBp
biB0aGlzIHRlc3QgY2FzZSB2ZXJpZnkgdGhhdDoKKyAgICAgKiBDKysgZXhjZXB0aW9ucyBhcmUg
Y2F1Z2h0IGFuZCBsb2dnZWQgYXMgQysrIChub3QgU0VIKSBleGNlcHRpb25zCisgICAgICogRXhj
ZXB0aW9uIHRocm93biBhZmZlY3QgdGhlIHJlbWFpbmRlciBvZiB0aGUgdGVzdCB3b3JrIGZsb3cg
aW4gdGhlCisgICAgICAgZXhwZWN0ZWQgbWFubmVyLgorICAiIiIKKworICBkZWYgdGVzdENhdGNo
ZXNDeHhFeGNlcHRpb25zSW5GaXh0dXJlQ29uc3RydWN0b3Ioc2VsZik6CisgICAgc2VsZi5hc3Nl
cnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gJworICAgICAgICAgICAgICAgICAn
IlN0YW5kYXJkIEMrKyBleGNlcHRpb24iIHRocm93biAnCisgICAgICAgICAgICAgICAgICdpbiB0
aGUgdGVzdCBmaXh0dXJlXCdzIGNvbnN0cnVjdG9yJworICAgICAgICAgICAgICAgICBpbiBFWF9C
SU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygndW5leHBlY3RlZCcgbm90IGluIEVYX0JJ
TkFSWV9PVVRQVVQsCisgICAgICAgICAgICAgICAgICdUaGlzIGZhaWx1cmUgYmVsb25ncyBpbiB0
aGlzIHRlc3Qgb25seSBpZiAnCisgICAgICAgICAgICAgICAgICciQ3h4RXhjZXB0aW9uSW5Db25z
dHJ1Y3RvclRlc3QiIChubyBxdW90ZXMpICcKKyAgICAgICAgICAgICAgICAgJ2FwcGVhcnMgb24g
dGhlIHNhbWUgbGluZSBhcyB3b3JkcyAiY2FsbGVkIHVuZXhwZWN0ZWRseSInKQorCisgIGlmICgn
Q3h4RXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdC5UaHJvd3NFeGNlcHRpb25JbkRlc3RydWN0b3In
IGluCisgICAgICBFWF9CSU5BUllfT1VUUFVUKToKKworICAgIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4
Y2VwdGlvbnNJbkZpeHR1cmVEZXN0cnVjdG9yKHNlbGYpOgorICAgICAgc2VsZi5hc3NlcnRfKCdD
KysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gJworICAgICAgICAgICAgICAgICAgICciU3Rh
bmRhcmQgQysrIGV4Y2VwdGlvbiIgdGhyb3duICcKKyAgICAgICAgICAgICAgICAgICAnaW4gdGhl
IHRlc3QgZml4dHVyZVwncyBkZXN0cnVjdG9yJworICAgICAgICAgICAgICAgICAgIGluIEVYX0JJ
TkFSWV9PVVRQVVQpCisgICAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluRGVzdHJ1Y3Rv
clRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAnCisgICAgICAgICAgICAgICAgICAgJ2NhbGxlZCBh
cyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKwor
ICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5TZXRVcFRlc3RDYXNlKHNlbGYpOgorICAg
IHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICJTdGFuZGFyZCBD
KysgZXhjZXB0aW9uIicKKyAgICAgICAgICAgICAgICAgJyB0aHJvd24gaW4gU2V0VXBUZXN0Q2Fz
ZSgpJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNz
ZXJ0XygnQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAn
CisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAg
ICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5T
ZXRVcFRlc3RDYXNlVGVzdCBjb25zdHJ1Y3RvciAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQg
YXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAg
IHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCBkZXN0cnVjdG9y
ICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAg
ICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25J
blNldFVwVGVzdENhc2VUZXN0OjpTZXRVcCgpICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBh
cyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAg
c2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0OjpUZWFyRG93bigp
ICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAg
ICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25J
blNldFVwVGVzdENhc2VUZXN0IHRlc3QgYm9keSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQg
YXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorCisg
IGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJblRlYXJEb3duVGVzdENhc2Uoc2VsZik6Cisg
ICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gIlN0YW5kYXJk
IEMrKyBleGNlcHRpb24iJworICAgICAgICAgICAgICAgICAnIHRocm93biBpbiBUZWFyRG93blRl
c3RDYXNlKCknCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisKKyAgZGVm
IHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luU2V0VXAoc2VsZik6CisgICAgc2VsZi5hc3NlcnRf
KCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gIlN0YW5kYXJkIEMrKyBleGNlcHRpb24i
JworICAgICAgICAgICAgICAgICAnIHRocm93biBpbiBTZXRVcCgpJworICAgICAgICAgICAgICAg
ICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5T
ZXRVcFRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQg
YXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAg
IHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QgZGVzdHJ1Y3RvciAnCisgICAg
ICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBF
WF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRl
c3Q6OlRlYXJEb3duKCkgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicK
KyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8o
J3VuZXhwZWN0ZWQnIG5vdCBpbiBFWF9CSU5BUllfT1VUUFVULAorICAgICAgICAgICAgICAgICAn
VGhpcyBmYWlsdXJlIGJlbG9uZ3MgaW4gdGhpcyB0ZXN0IG9ubHkgaWYgJworICAgICAgICAgICAg
ICAgICAnIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0IiAobm8gcXVvdGVzKSAnCisgICAgICAgICAg
ICAgICAgICdhcHBlYXJzIG9uIHRoZSBzYW1lIGxpbmUgYXMgd29yZHMgImNhbGxlZCB1bmV4cGVj
dGVkbHkiJykKKworICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5UZWFyRG93bihzZWxm
KToKKyAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlvbiAiU3Rh
bmRhcmQgQysrIGV4Y2VwdGlvbiInCisgICAgICAgICAgICAgICAgICcgdGhyb3duIGluIFRlYXJE
b3duKCknCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5h
c3NlcnRfKCdDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICcK
KyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAg
IGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblRl
YXJEb3duVGVzdCBkZXN0cnVjdG9yICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBl
Y3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisKKyAgZGVmIHRl
c3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luVGVzdEJvZHkoc2VsZik6CisgICAgc2VsZi5hc3NlcnRf
KCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gIlN0YW5kYXJkIEMrKyBleGNlcHRpb24i
JworICAgICAgICAgICAgICAgICAnIHRocm93biBpbiB0aGUgdGVzdCBib2R5JworICAgICAgICAg
ICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0
aW9uSW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAnCisgICAgICAgICAgICAgICAg
ICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VU
UFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QgZGVzdHJ1
Y3RvciAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAg
ICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0
aW9uSW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duKCkgJworICAgICAgICAgICAgICAgICAnY2FsbGVk
IGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKwor
ICBkZWYgdGVzdENhdGNoZXNOb25TdGRDeHhFeGNlcHRpb25zKHNlbGYpOgorICAgIHNlbGYuYXNz
ZXJ0XygnVW5rbm93biBDKysgZXhjZXB0aW9uIHRocm93biBpbiB0aGUgdGVzdCBib2R5JworICAg
ICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorCisgIGRlZiB0ZXN0VW5oYW5kbGVk
Q3h4RXhjZXB0aW9uc0Fib3J0VGhlUHJvZ3JhbShzZWxmKToKKyAgICAjIEZpbHRlcnMgb3V0IFNF
SCBleGNlcHRpb24gdGVzdHMgb24gV2luZG93cy4gVW5oYW5kbGVkIFNFSCBleGNlcHRpb25zCisg
ICAgIyBjYXVzZSB0ZXN0cyB0byBzaG93IHBvcC11cCB3aW5kb3dzIHRoZXJlLgorICAgIEZJVExF
Ul9PVVRfU0VIX1RFU1RTX0ZMQUcgPSBGSUxURVJfRkxBRyArICc9LSpTZWgqJworICAgICMgQnkg
ZGVmYXVsdCwgR29vZ2xlIFRlc3QgZG9lc24ndCBjYXRjaCB0aGUgZXhjZXB0aW9ucy4KKyAgICB1
bmNhdWdodF9leGNlcHRpb25zX2V4X2JpbmFyeV9vdXRwdXQgPSBndGVzdF90ZXN0X3V0aWxzLlN1
YnByb2Nlc3MoCisgICAgICAgIFtFWF9FWEVfUEFUSCwKKyAgICAgICAgIE5PX0NBVENIX0VYQ0VQ
VElPTlNfRkxBRywKKyAgICAgICAgIEZJVExFUl9PVVRfU0VIX1RFU1RTX0ZMQUddLAorICAgICAg
ICBlbnY9ZW52aXJvbikub3V0cHV0CisKKyAgICBzZWxmLmFzc2VydF8oJ1VuaGFuZGxlZCBDKysg
ZXhjZXB0aW9uIHRlcm1pbmF0aW5nIHRoZSBwcm9ncmFtJworICAgICAgICAgICAgICAgICBpbiB1
bmNhdWdodF9leGNlcHRpb25zX2V4X2JpbmFyeV9vdXRwdXQpCisgICAgc2VsZi5hc3NlcnRfKCd1
bmV4cGVjdGVkJyBub3QgaW4gdW5jYXVnaHRfZXhjZXB0aW9uc19leF9iaW5hcnlfb3V0cHV0KQor
CisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NhdGNoX2V4
Y2VwdGlvbnNfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Nh
dGNoX2V4Y2VwdGlvbnNfdGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBmYzgyYzk5OGQ2MjFkM2E3MzI0
YWY2Y2VjYzM0MWFlYTg3NjAxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc190ZXN0Xy5jYwpAQCAtMCwwICsxLDMx
MSBAQAorLy8gQ29weXJpZ2h0IDIwMTAsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8v
IEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKy8vCisvLyBUZXN0cyBmb3Ig
R29vZ2xlIFRlc3QgaXRzZWxmLiBUZXN0cyBpbiB0aGlzIGZpbGUgdGhyb3cgQysrIG9yIFNFSAor
Ly8gZXhjZXB0aW9ucywgYW5kIHRoZSBvdXRwdXQgaXMgdmVyaWZpZWQgYnkgZ3Rlc3RfY2F0Y2hf
ZXhjZXB0aW9uc190ZXN0LnB5LgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2luY2x1
ZGUgPHN0ZGlvLmg+ICAvLyBOT0xJTlQKKyNpbmNsdWRlIDxzdGRsaWIuaD4gIC8vIEZvciBleGl0
KCkuCisKKyNpZiBHVEVTVF9IQVNfU0VICisjIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgor
CisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKyMgaW5jbHVkZSA8ZXhjZXB0aW9uPiAgLy8gRm9y
IHNldF90ZXJtaW5hdGUoKS4KKyMgaW5jbHVkZSA8c3RkZXhjZXB0PgorI2VuZGlmCisKK3VzaW5n
IHRlc3Rpbmc6OlRlc3Q7CisKKyNpZiBHVEVTVF9IQVNfU0VICisKK2NsYXNzIFNlaEV4Y2VwdGlv
bkluQ29uc3RydWN0b3JUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgU2VoRXhjZXB0
aW9uSW5Db25zdHJ1Y3RvclRlc3QoKSB7IFJhaXNlRXhjZXB0aW9uKDQyLCAwLCAwLCBOVUxMKTsg
fQorfTsKKworVEVTVF9GKFNlaEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0LCBUaHJvd3NFeGNl
cHRpb25JbkNvbnN0cnVjdG9yKSB7fQorCitjbGFzcyBTZWhFeGNlcHRpb25JbkRlc3RydWN0b3JU
ZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgflNlaEV4Y2VwdGlvbkluRGVzdHJ1Y3Rv
clRlc3QoKSB7IFJhaXNlRXhjZXB0aW9uKDQyLCAwLCAwLCBOVUxMKTsgfQorfTsKKworVEVTVF9G
KFNlaEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3QsIFRocm93c0V4Y2VwdGlvbkluRGVzdHJ1Y3Rv
cikge30KKworY2xhc3MgU2VoRXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCA6IHB1YmxpYyBU
ZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7IFJhaXNlRXhj
ZXB0aW9uKDQyLCAwLCAwLCBOVUxMKTsgfQorfTsKKworVEVTVF9GKFNlaEV4Y2VwdGlvbkluU2V0
VXBUZXN0Q2FzZVRlc3QsIFRocm93c0V4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZSkge30KKworY2xh
c3MgU2VoRXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNlVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBw
dWJsaWM6CisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7IFJhaXNlRXhjZXB0aW9u
KDQyLCAwLCAwLCBOVUxMKTsgfQorfTsKKworVEVTVF9GKFNlaEV4Y2VwdGlvbkluVGVhckRvd25U
ZXN0Q2FzZVRlc3QsIFRocm93c0V4Y2VwdGlvbkluVGVhckRvd25UZXN0Q2FzZSkge30KKworY2xh
c3MgU2VoRXhjZXB0aW9uSW5TZXRVcFRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgor
ICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IFJhaXNlRXhjZXB0aW9uKDQyLCAwLCAwLCBOVUxMKTsg
fQorfTsKKworVEVTVF9GKFNlaEV4Y2VwdGlvbkluU2V0VXBUZXN0LCBUaHJvd3NFeGNlcHRpb25J
blNldFVwKSB7fQorCitjbGFzcyBTZWhFeGNlcHRpb25JblRlYXJEb3duVGVzdCA6IHB1YmxpYyBU
ZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsgUmFpc2VFeGNl
cHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhjZXB0aW9uSW5UZWFy
RG93blRlc3QsIFRocm93c0V4Y2VwdGlvbkluVGVhckRvd24pIHt9CisKK1RFU1QoU2VoRXhjZXB0
aW9uVGVzdCwgVGhyb3dzU2VoRXhjZXB0aW9uKSB7CisgIFJhaXNlRXhjZXB0aW9uKDQyLCAwLCAw
LCBOVUxMKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICisKKyNpZiBHVEVTVF9IQVNf
RVhDRVBUSU9OUworCitjbGFzcyBDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCA6IHB1Ymxp
YyBUZXN0IHsKKyBwdWJsaWM6CisgIEN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0KCkgewor
ICAgIC8vIFdpdGhvdXQgdGhpcyBtYWNybyBWQysrIGNvbXBsYWlucyBhYm91dCB1bnJlYWNoYWJs
ZSBjb2RlIGF0IHRoZSBlbmQgb2YKKyAgICAvLyB0aGUgY29uc3RydWN0b3IuCisgICAgR1RFU1Rf
U1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXygKKyAgICAgICAgdGhyb3cg
c3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIikpOworICB9CisKKyAg
c3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAg
ICAgICAgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkg
IgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworIHByb3RlY3Rl
ZDoKKyAgfkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0KCkgeworICAgIEFERF9GQUlMVVJF
KCkgPDwgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0IGRlc3RydWN0b3IgIgorICAgICAg
ICAgICAgICAgICAgPDwgImNhbGxlZCB1bmV4cGVjdGVkbHkuIjsKKyAgfQorCisgIHZpcnR1YWwg
dm9pZCBTZXRVcCgpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJDeHhFeGNlcHRpb25JbkNvbnN0
cnVjdG9yVGVzdDo6U2V0VXAoKSAiCisgICAgICAgICAgICAgICAgICA8PCAiY2FsbGVkIHVuZXhw
ZWN0ZWRseS4iOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIEFERF9G
QUlMVVJFKCkgPDwgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0OjpUZWFyRG93bigpICIK
KyAgICAgICAgICAgICAgICAgIDw8ICJjYWxsZWQgdW5leHBlY3RlZGx5LiI7CisgIH0KK307CisK
K1RFU1RfRihDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5D
b25zdHJ1Y3RvcikgeworICBBRERfRkFJTFVSRSgpIDw8ICJDeHhFeGNlcHRpb25JbkNvbnN0cnVj
dG9yVGVzdCB0ZXN0IGJvZHkgIgorICAgICAgICAgICAgICAgIDw8ICJjYWxsZWQgdW5leHBlY3Rl
ZGx5LiI7Cit9CisKKy8vIEV4Y2VwdGlvbnMgaW4gZGVzdHJ1Y3RvcnMgYXJlIG5vdCBzdXBwb3J0
ZWQgaW4gQysrMTEuCisjaWYgIWRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pICYm
ICBfX2NwbHVzcGx1cyA8IDIwMTEwM0wKK2NsYXNzIEN4eEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRl
c3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RD
YXNlKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5EZXN0
cnVjdG9yVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBl
eHBlY3RlZC5cbiIpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIH5DeHhFeGNlcHRpb25JbkRlc3Ry
dWN0b3JUZXN0KCkgeworICAgIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklO
R19CRUxPV18oCisgICAgICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcigiU3RhbmRhcmQgQysr
IGV4Y2VwdGlvbiIpKTsKKyAgfQorfTsKKworVEVTVF9GKEN4eEV4Y2VwdGlvbkluRGVzdHJ1Y3Rv
clRlc3QsIFRocm93c0V4Y2VwdGlvbkluRGVzdHJ1Y3Rvcikge30KKyNlbmRpZiAgLy8gQysrMTEg
bW9kZQorCitjbGFzcyBDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0IDogcHVibGljIFRl
c3QgeworIHB1YmxpYzoKKyAgQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCgpIHsKKyAg
ICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRl
c3QgY29uc3RydWN0b3IgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7Cisg
IH0KKworICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgeworICAgIHRocm93IHN0ZDo6cnVu
dGltZV9lcnJvcigiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIpOworICB9CisKKyAgc3RhdGljIHZv
aWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4
eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCisgICAg
ICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICB+
Q3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAg
ICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgZGVzdHJ1Y3RvciAiCisg
ICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgIHZpcnR1YWwgdm9p
ZCBTZXRVcCgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbklu
U2V0VXBUZXN0Q2FzZVRlc3Q6OlNldFVwKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVj
dGVkLlxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgcHJpbnRm
KCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0OjpUZWFy
RG93bigpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9Cit9Owor
CitURVNUX0YoQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCwgVGhyb3dzRXhjZXB0aW9u
SW5TZXRVcFRlc3RDYXNlKSB7CisgIHByaW50ZigiJXMiLAorICAgICAgICAgIkN4eEV4Y2VwdGlv
bkluU2V0VXBUZXN0Q2FzZVRlc3QgdGVzdCBib2R5ICIKKyAgICAgICAgICJjYWxsZWQgYXMgZXhw
ZWN0ZWQuXG4iKTsKK30KKworY2xhc3MgQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNlVGVz
dCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENh
c2UoKSB7CisgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0
aW9uIik7CisgIH0KK307CisKK1RFU1RfRihDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdENhc2VU
ZXN0LCBUaHJvd3NFeGNlcHRpb25JblRlYXJEb3duVGVzdENhc2UpIHt9CisKK2NsYXNzIEN4eEV4
Y2VwdGlvbkluU2V0VXBUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljIHZv
aWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4
eEV4Y2VwdGlvbkluU2V0VXBUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgIgorICAgICAgICAgICAi
Y2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworIHByb3RlY3RlZDoKKyAgfkN4eEV4Y2Vw
dGlvbkluU2V0VXBUZXN0KCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhj
ZXB0aW9uSW5TZXRVcFRlc3QgZGVzdHJ1Y3RvciAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhw
ZWN0ZWQuXG4iKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsgdGhyb3cgc3RkOjpy
dW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIik7IH0KKworICB2aXJ0dWFsIHZv
aWQgVGVhckRvd24oKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRp
b25JblNldFVwVGVzdDo6VGVhckRvd24oKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0
ZWQuXG4iKTsKKyAgfQorfTsKKworVEVTVF9GKEN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0LCBUaHJv
d3NFeGNlcHRpb25JblNldFVwKSB7CisgIEFERF9GQUlMVVJFKCkgPDwgIkN4eEV4Y2VwdGlvbklu
U2V0VXBUZXN0IHRlc3QgYm9keSAiCisgICAgICAgICAgICAgICAgPDwgImNhbGxlZCB1bmV4cGVj
dGVkbHkuIjsKK30KKworY2xhc3MgQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3QgOiBwdWJsaWMg
VGVzdCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAg
IHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3Q6OlRl
YXJEb3duVGVzdENhc2UoKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsK
KyAgfQorCisgcHJvdGVjdGVkOgorICB+Q3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3QoKSB7Cisg
ICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCBk
ZXN0cnVjdG9yICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisK
KyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJv
cigiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIpOworICB9Cit9OworCitURVNUX0YoQ3h4RXhjZXB0
aW9uSW5UZWFyRG93blRlc3QsIFRocm93c0V4Y2VwdGlvbkluVGVhckRvd24pIHt9CisKK2NsYXNz
IEN4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAg
c3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAg
ICAgICAgIkN4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgIgor
ICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworIHByb3RlY3RlZDoK
KyAgfkN4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0KCkgeworICAgIHByaW50ZigiJXMiLAorICAg
ICAgICAgICAiQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QgZGVzdHJ1Y3RvciAiCisgICAgICAg
ICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluVGVz
dEJvZHlUZXN0OjpUZWFyRG93bigpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5c
biIpOworICB9Cit9OworCitURVNUX0YoQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QsIFRocm93
c1N0ZEN4eEV4Y2VwdGlvbikgeworICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJk
IEMrKyBleGNlcHRpb24iKTsKK30KKworVEVTVChDeHhFeGNlcHRpb25UZXN0LCBUaHJvd3NOb25T
dGRDeHhFeGNlcHRpb24pIHsKKyAgdGhyb3cgIkMtc3RyaW5nIjsKK30KKworLy8gVGhpcyB0ZXJt
aW5hdGUgaGFuZGxlciBhYm9ydHMgdGhlIHByb2dyYW0gdXNpbmcgZXhpdCgpIHJhdGhlciB0aGFu
IGFib3J0KCkuCisvLyBUaGlzIGF2b2lkcyBzaG93aW5nIHBvcC11cHMgb24gV2luZG93cyBzeXN0
ZW1zIGFuZCBjb3JlIGR1bXBzIG9uIFVuaXgtbGlrZQorLy8gb25lcy4KK3ZvaWQgVGVybWluYXRl
SGFuZGxlcigpIHsKKyAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgIlVuaGFuZGxlZCBDKysgZXhj
ZXB0aW9uIHRlcm1pbmF0aW5nIHRoZSBwcm9ncmFtLiIpOworICBmZmx1c2goTlVMTCk7CisgIGV4
aXQoMyk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKyAgc3Rk
OjpzZXRfdGVybWluYXRlKCZUZXJtaW5hdGVIYW5kbGVyKTsKKyNlbmRpZgorICB0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rl
c3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0Xy5j
YwppbmRleCA1OGQzNzdjOWIyYWYwYmZlODE5NWNhMmMwYTkwMjEzOWQ5MTEwNjQyLi5mNjFlYmI4
OWI4NGU4ZTAzZTVlZmRkNDEzMjQwNjExMzc2YWZlNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdF8uY2MKQEAgLTM1LDcgKzM1LDcgQEAK
IAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIC8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24g
dW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKIC8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVz
dCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3QucHkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weQppbmRleCBiY2MwYmZkNTUz
Mjk3MjY4MDc2MTU3NzM2YzgzZTRhODRjYWUwNTZjLi40MjQwNzVjZmEzNzQ3NmNjZDhjN2Q0ZmYw
MjcyYjI3ZDg4Nzg3MTNlIDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X2Vudl92YXJfdGVzdC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X2Vudl92YXJfdGVzdC5weQpAQCAtNDcsOCArNDcsOCBAQAogCiBkZWYgQXNzZXJ0RXEo
ZXhwZWN0ZWQsIGFjdHVhbCk6CiAgIGlmIGV4cGVjdGVkICE9IGFjdHVhbDoKLSAgICBwcmludCAn
RXhwZWN0ZWQ6ICVzJyAlIChleHBlY3RlZCwpCi0gICAgcHJpbnQgJyAgQWN0dWFsOiAlcycgJSAo
YWN0dWFsLCkKKyAgICBwcmludCgnRXhwZWN0ZWQ6ICVzJyAlIChleHBlY3RlZCwpKQorICAgIHBy
aW50KCcgIEFjdHVhbDogJXMnICUgKGFjdHVhbCwpKQogICAgIHJhaXNlIEFzc2VydGlvbkVycm9y
CiAKIApAQCAtODcsMTkgKzg3LDMxIEBAIGRlZiB0ZXN0RW52VmFyQWZmZWN0c0ZsYWcoc2VsZik6
CiAgICAgVGVzdEZsYWcoJ2JyZWFrX29uX2ZhaWx1cmUnLCAnMScsICcwJykKICAgICBUZXN0Rmxh
ZygnY29sb3InLCAneWVzJywgJ2F1dG8nKQogICAgIFRlc3RGbGFnKCdmaWx0ZXInLCAnRm9vVGVz
dC5CYXInLCAnKicpCisgICAgU2V0RW52VmFyKCdYTUxfT1VUUFVUX0ZJTEUnLCBOb25lKSAjIEZv
ciAnb3V0cHV0JyB0ZXN0CiAgICAgVGVzdEZsYWcoJ291dHB1dCcsICd4bWw6dG1wL2Zvby54bWwn
LCAnJykKICAgICBUZXN0RmxhZygncHJpbnRfdGltZScsICcwJywgJzEnKQogICAgIFRlc3RGbGFn
KCdyZXBlYXQnLCAnOTk5JywgJzEnKQogICAgIFRlc3RGbGFnKCd0aHJvd19vbl9mYWlsdXJlJywg
JzEnLCAnMCcpCiAgICAgVGVzdEZsYWcoJ2RlYXRoX3Rlc3Rfc3R5bGUnLCAndGhyZWFkc2FmZScs
ICdmYXN0JykKLQotICAgIGlmIElTX1dJTkRPV1M6Ci0gICAgICBUZXN0RmxhZygnY2F0Y2hfZXhj
ZXB0aW9ucycsICcxJywgJzAnKQorICAgIFRlc3RGbGFnKCdjYXRjaF9leGNlcHRpb25zJywgJzAn
LCAnMScpCiAKICAgICBpZiBJU19MSU5VWDoKICAgICAgIFRlc3RGbGFnKCdkZWF0aF90ZXN0X3Vz
ZV9mb3JrJywgJzEnLCAnMCcpCiAgICAgICBUZXN0RmxhZygnc3RhY2tfdHJhY2VfZGVwdGgnLCAn
MCcsICcxMDAnKQogCisgIGRlZiB0ZXN0WG1sT3V0cHV0RmlsZShzZWxmKToKKyAgICAiIiJUZXN0
cyB0aGF0ICRYTUxfT1VUUFVUX0ZJTEUgYWZmZWN0cyB0aGUgb3V0cHV0IGZsYWcuIiIiCisKKyAg
ICBTZXRFbnZWYXIoJ0dURVNUX09VVFBVVCcsIE5vbmUpCisgICAgU2V0RW52VmFyKCdYTUxfT1VU
UFVUX0ZJTEUnLCAndG1wL2Jhci54bWwnKQorICAgIEFzc2VydEVxKCd4bWw6dG1wL2Jhci54bWwn
LCBHZXRGbGFnKCdvdXRwdXQnKSkKKworICBkZWYgdGVzdFhtbE91dHB1dEZpbGVPdmVycmlkZShz
ZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0ICRYTUxfT1VUUFVUX0ZJTEUgaXMgb3ZlcnJpZGRlbiBi
eSAkR1RFU1RfT1VUUFVUIiIiCisKKyAgICBTZXRFbnZWYXIoJ0dURVNUX09VVFBVVCcsICd4bWw6
dG1wL2Zvby54bWwnKQorICAgIFNldEVudlZhcignWE1MX09VVFBVVF9GSUxFJywgJ3RtcC9iYXIu
eG1sJykKKyAgICBBc3NlcnRFcSgneG1sOnRtcC9mb28ueG1sJywgR2V0RmxhZygnb3V0cHV0Jykp
CiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJf
dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJfdGVz
dF8uY2MKaW5kZXggZjdjNzhmY2YzMDUzMTJhNjZjMjY1YjE4MTBhNjkxMDc3ZGI3NzFmNy4uNTM5
YWZjOTY4MzdlM2U3MzZkMDgxYmIyMGE0MzY0ZTVkZTg1NmY5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3RfLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0Xy5jYwpAQCAtMzIsNyAr
MzIsNyBAQAogLy8gQSBoZWxwZXIgcHJvZ3JhbSBmb3IgdGVzdGluZyB0aGF0IEdvb2dsZSBUZXN0
IHBhcnNlcyB0aGUgZW52aXJvbm1lbnQKIC8vIHZhcmlhYmxlcyBjb3JyZWN0bHkuCiAKLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKICNpbmNsdWRl
IDxpb3N0cmVhbT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjCmluZGV4IGM5MzkyNjE0ZDc0ZDdmYzIzMmU4NmIyYzNk
NmNkYjFiMWUyYjYxMzEuLjNjZmYxOWU3MGVkY2NhMGQyNjIxNDVlZGU1ODEwYWU5YTA3NDM3YTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52aXJvbm1l
bnRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudmly
b25tZW50X3Rlc3QuY2MKQEAgLTMzLDcgKzMzLDExIEBACiAKICNpbmNsdWRlIDxzdGRsaWIuaD4K
ICNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKworI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMSAgLy8gUmVx
dWlyZWQgZm9yIHRoZSBuZXh0ICNpbmNsdWRlLgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5h
bC1pbmwuaCIKKyN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KIAogbmFtZXNwYWNlIHRlc3Rp
bmcgewogR1RFU1RfREVDTEFSRV9zdHJpbmdfKGZpbHRlcik7CkBAIC05Miw2ICs5Niw3IEBAIGNs
YXNzIE15RW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6RW52aXJvbm1lbnQgewogCiAgIC8v
IFdhcyBUZWFyRG93bigpIHJ1bj8KICAgYm9vbCB0ZWFyX2Rvd25fd2FzX3J1bigpIGNvbnN0IHsg
cmV0dXJuIHRlYXJfZG93bl93YXNfcnVuXzsgfQorCiAgcHJpdmF0ZToKICAgRmFpbHVyZVR5cGUg
ZmFpbHVyZV9pbl9zZXRfdXBfOwogICBib29sIHNldF91cF93YXNfcnVuXzsKQEAgLTExMSw3ICsx
MTYsNyBAQCBURVNUKEZvb1Rlc3QsIEJhcikgewogdm9pZCBDaGVjayhib29sIGNvbmRpdGlvbiwg
Y29uc3QgY2hhciogbXNnKSB7CiAgIGlmICghY29uZGl0aW9uKSB7CiAgICAgcHJpbnRmKCJGQUlM
RUQ6ICVzXG4iLCBtc2cpOwotICAgIGFib3J0KCk7CisgICAgdGVzdGluZzo6aW50ZXJuYWw6OnBv
c2l4OjpBYm9ydCgpOwogICB9CiB9CiAKQEAgLTEyMyw2ICsxMjgsNyBAQCBpbnQgUnVuQWxsVGVz
dHMoTXlFbnZpcm9ubWVudCogZW52LCBGYWlsdXJlVHlwZSBmYWlsdXJlKSB7CiAgIGVudi0+UmVz
ZXQoKTsKICAgZW52LT5zZXRfZmFpbHVyZV9pbl9zZXRfdXAoZmFpbHVyZSk7CiAgIHRlc3Rfd2Fz
X3J1biA9IGZhbHNlOworICB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCktPkNs
ZWFyQWRIb2NUZXN0UmVzdWx0KCk7CiAgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0
ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRl
c3QucHkKaW5kZXggMGQxYTc3MDA1OGNjYjkwMTE1NDY4MDkyNGNiZDNjNjRkOGM4ZDE3OS4uZWMw
YjE1MWIxMWJkYjVmNzk5OTk2MjIxYjEzOGRlNzRiNzY5YjEzMSAxMDA3NTUKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3QucHkKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3QucHkKQEAgLTQ0
LDcgKzQ0LDEwIEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgc2V0cwordHJ5Ogor
ICBmcm9tIHNldHMgaW1wb3J0IFNldCBhcyBzZXQgICMgRm9yIFB5dGhvbiAyLjMgY29tcGF0aWJp
bGl0eQorZXhjZXB0IEltcG9ydEVycm9yOgorICBwYXNzCiBpbXBvcnQgc3lzCiAKIGltcG9ydCBn
dGVzdF90ZXN0X3V0aWxzCkBAIC01OCw3ICs2MSw3IEBACiAjIGV4Y2VwdGlvbiBpcyB0aHJvd24g
aWYgdGhlIGlucHV0IGlzIGFueXRoaW5nIG90aGVyIHRoYW4gJ1RydWUnIG5vciAnRmFsc2UnLgog
b3MuZW52aXJvblsnRU1QVFlfVkFSJ10gPSAnJwogY2hpbGQgPSBndGVzdF90ZXN0X3V0aWxzLlN1
YnByb2Nlc3MoCi0gICAgW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAnaW1wb3J0IG9zOyBwcmludCBc
J0VNUFRZX1ZBUlwnIGluIG9zLmVudmlyb24nXSkKKyAgICBbc3lzLmV4ZWN1dGFibGUsICctYycs
ICdpbXBvcnQgb3M7IHByaW50KFwnRU1QVFlfVkFSXCcgaW4gb3MuZW52aXJvbiknXSkKIENBTl9Q
QVNTX0VNUFRZX0VOViA9IGV2YWwoY2hpbGQub3V0cHV0KQogCiAKQEAgLTcxLDcgKzc0LDcgQEAK
IG9zLmVudmlyb25bJ1VOU0VUX1ZBUiddID0gJ1gnCiBkZWwgb3MuZW52aXJvblsnVU5TRVRfVkFS
J10KIGNoaWxkID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAotICAgIFtzeXMuZXhlY3V0
YWJsZSwgJy1jJywgJ2ltcG9ydCBvczsgcHJpbnQgXCdVTlNFVF9WQVJcJyBub3QgaW4gb3MuZW52
aXJvbiddKQorICAgIFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgJ2ltcG9ydCBvczsgcHJpbnQoXCdV
TlNFVF9WQVJcJyBub3QgaW4gb3MuZW52aXJvbiknXSkKIENBTl9VTlNFVF9FTlYgPSBldmFsKGNo
aWxkLm91dHB1dCkKIAogCkBAIC0yNDMsMTQgKzI0NiwxNCBAQCBkZWYgQXNzZXJ0UGFydGl0aW9u
SXNWYWxpZChzZWxmLCBzZXRfdmFyLCBsaXN0X29mX3NldHMpOgogICAgIGZvciBzbGljZV92YXIg
aW4gbGlzdF9vZl9zZXRzOgogICAgICAgZnVsbF9wYXJ0aXRpb24uZXh0ZW5kKHNsaWNlX3ZhcikK
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXRfdmFyKSwgbGVuKGZ1bGxfcGFydGl0aW9uKSkK
LSAgICBzZWxmLmFzc2VydEVxdWFsKHNldHMuU2V0KHNldF92YXIpLCBzZXRzLlNldChmdWxsX3Bh
cnRpdGlvbikpCisgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoc2V0X3ZhciksIHNldChmdWxsX3Bh
cnRpdGlvbikpCiAKICAgZGVmIEFkanVzdEZvclBhcmFtZXRlcml6ZWRUZXN0cyhzZWxmLCB0ZXN0
c190b19ydW4pOgogICAgICIiIkFkanVzdCB0ZXN0c190b19ydW4gaW4gY2FzZSB2YWx1ZSBwYXJh
bWV0ZXJpemVkIHRlc3RzIGFyZSBkaXNhYmxlZC4iIiIKIAogICAgIGdsb2JhbCBwYXJhbV90ZXN0
c19wcmVzZW50CiAgICAgaWYgbm90IHBhcmFtX3Rlc3RzX3ByZXNlbnQ6Ci0gICAgICByZXR1cm4g
bGlzdChzZXRzLlNldCh0ZXN0c190b19ydW4pIC0gc2V0cy5TZXQoUEFSQU1fVEVTVFMpKQorICAg
ICAgcmV0dXJuIGxpc3Qoc2V0KHRlc3RzX3RvX3J1bikgLSBzZXQoUEFSQU1fVEVTVFMpKQogICAg
IGVsc2U6CiAgICAgICByZXR1cm4gdGVzdHNfdG9fcnVuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0Xy5jYwppbmRleCAzMjU1
MDRmZTk0YWZjMTc3YzQ2Y2JjMTM1ZmVjNjc1YzU1NGQyZTBkLi43N2RlZmZjMzhmN2RmMWRkYmU2
NWE1MWViOWFhNWY4YjQwZTUyYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X2ZpbHRlcl91bml0dGVzdF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3RfLmNjCkBAIC0zOCw3ICszOCw3IEBACiAv
LyBUaGUgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRlc3QuICBE
b24ndCBydW4gaXQKIC8vIGRpcmVjdGx5LgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNp
bmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2UgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVzdC5weSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5CmluZGV4IDNjYjRjNDhlMGI0NjI4
ZDlhYTdjNmYzMjA3YWI3ZWUxMGNkMjJiYTMuLjA5M2M4MzhkOWU0NzJmYmRlMmUxMjVmMjBkNzNj
MTdlYWVlOTUwZjUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfaGVscF90ZXN0LnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
aGVscF90ZXN0LnB5CkBAIC0zMiw3ICszMiw3IEBACiAiIiJUZXN0cyB0aGUgLS1oZWxwIGZsYWcg
b2YgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yay4KIAogU1lOT1BTSVMKLSAgICAgICBndGVz
dF9oZWxwX3Rlc3QucHkgLS1ndGVzdF9idWlsZF9kaXI9QlVJTEQvRElSCisgICAgICAgZ3Rlc3Rf
aGVscF90ZXN0LnB5IC0tYnVpbGRfZGlyPUJVSUxEL0RJUgogICAgICAgICAgIyB3aGVyZSBCVUlM
RC9ESVIgY29udGFpbnMgdGhlIGJ1aWx0IGd0ZXN0X2hlbHBfdGVzdF8gZmlsZS4KICAgICAgICBn
dGVzdF9oZWxwX3Rlc3QucHkKICIiIgpAQCAtNDQsMTIgKzQ0LDEzIEBACiBpbXBvcnQgZ3Rlc3Rf
dGVzdF91dGlscwogCiAKK0lTX0xJTlVYID0gb3MubmFtZSA9PSAncG9zaXgnIGFuZCBvcy51bmFt
ZSgpWzBdID09ICdMaW51eCcKIElTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdudCcKIAogUFJPR1JB
TV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2d0ZXN0X2hl
bHBfdGVzdF8nKQogRkxBR19QUkVGSVggPSAnLS1ndGVzdF8nCi1DQVRDSF9FWENFUFRJT05TX0ZM
QUcgPSBGTEFHX1BSRUZJWCArICdjYXRjaF9leGNlcHRpb25zJwogREVBVEhfVEVTVF9TVFlMRV9G
TEFHID0gRkxBR19QUkVGSVggKyAnZGVhdGhfdGVzdF9zdHlsZScKK1NUUkVBTV9SRVNVTFRfVE9f
RkxBRyA9IEZMQUdfUFJFRklYICsgJ3N0cmVhbV9yZXN1bHRfdG8nCiBVTktOT1dOX0ZMQUcgPSBG
TEFHX1BSRUZJWCArICd1bmtub3duX2ZsYWdfZm9yX3Rlc3RpbmcnCiBMSVNUX1RFU1RTX0ZMQUcg
PSBGTEFHX1BSRUZJWCArICdsaXN0X3Rlc3RzJwogSU5DT1JSRUNUX0ZMQUdfVkFSSUFOVFMgPSBb
cmUuc3ViKCdeLS0nLCAnLScsIExJU1RfVEVTVFNfRkxBRyksCkBAIC03Miw3ICs3Myw4IEBACiAg
ICAgRkxBR19QUkVGSVggKyByJ3ByaW50X3RpbWUuKicgKwogICAgIEZMQUdfUFJFRklYICsgcidv
dXRwdXQ9LionICsKICAgICBGTEFHX1BSRUZJWCArIHInYnJlYWtfb25fZmFpbHVyZS4qJyArCi0g
ICAgRkxBR19QUkVGSVggKyByJ3Rocm93X29uX2ZhaWx1cmUuKicsCisgICAgRkxBR19QUkVGSVgg
KyByJ3Rocm93X29uX2ZhaWx1cmUuKicgKworICAgIEZMQUdfUFJFRklYICsgcidjYXRjaF9leGNl
cHRpb25zPTAuKicsCiAgICAgcmUuRE9UQUxMKQogCiAKQEAgLTEwOSwxMCArMTExLDExIEBAIGRl
ZiBUZXN0SGVscEZsYWcoc2VsZiwgZmxhZyk6CiAgICAgZXhpdF9jb2RlLCBvdXRwdXQgPSBSdW5X
aXRoRmxhZyhmbGFnKQogICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIGV4aXRfY29kZSkKICAgICBz
ZWxmLmFzc2VydF8oSEVMUF9SRUdFWC5zZWFyY2gob3V0cHV0KSwgb3V0cHV0KQotICAgIGlmIElT
X1dJTkRPV1M6Ci0gICAgICBzZWxmLmFzc2VydF8oQ0FUQ0hfRVhDRVBUSU9OU19GTEFHIGluIG91
dHB1dCwgb3V0cHV0KQorCisgICAgaWYgSVNfTElOVVg6CisgICAgICBzZWxmLmFzc2VydF8oU1RS
RUFNX1JFU1VMVF9UT19GTEFHIGluIG91dHB1dCwgb3V0cHV0KQogICAgIGVsc2U6Ci0gICAgICBz
ZWxmLmFzc2VydF8oQ0FUQ0hfRVhDRVBUSU9OU19GTEFHIG5vdCBpbiBvdXRwdXQsIG91dHB1dCkK
KyAgICAgIHNlbGYuYXNzZXJ0XyhTVFJFQU1fUkVTVUxUX1RPX0ZMQUcgbm90IGluIG91dHB1dCwg
b3V0cHV0KQogCiAgICAgaWYgU1VQUE9SVFNfREVBVEhfVEVTVFMgYW5kIG5vdCBJU19XSU5ET1dT
OgogICAgICAgc2VsZi5hc3NlcnRfKERFQVRIX1RFU1RfU1RZTEVfRkxBRyBpbiBvdXRwdXQsIG91
dHB1dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVs
cF90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0
Xy5jYwppbmRleCBhYWQwZDcyZDc2NzUzNWUxYjdhNzIyMjQ3NzU0MzAxMDMzZTcxMDZmLi4zMWY3
OGMyNDQxYmU2Njg4MWY4ZWRmNTliZjdhYzQ5ZDQ3YjE1OTYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVzdF8uY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3RfLmNjCkBAIC0zMiw3ICszMiw3IEBA
CiAvLyBUaGlzIHByb2dyYW0gaXMgbWVhbnQgdG8gYmUgcnVuIGJ5IGd0ZXN0X2hlbHBfdGVzdC5w
eS4gIERvIG5vdCBydW4KIC8vIGl0IGRpcmVjdGx5LgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAvLyBXaGVuIGEgaGVscCBmbGFnIGlzIHNw
ZWNpZmllZCwgdGhpcyBwcm9ncmFtIHNob3VsZCBza2lwIHRoZSB0ZXN0cwogLy8gYW5kIGV4aXQg
d2l0aCAwOyBvdGhlcndpc2UgdGhlIGZvbGxvd2luZyB0ZXN0IHdpbGwgYmUgZXhlY3V0ZWQsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNf
dW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVz
dHNfdW5pdHRlc3QucHkKaW5kZXggY2U4YzNlZjA1ZjY2MDBlODcyMTRhNmQ0MDE2MjhlZDkyM2Ex
NTJkYS4uZjJkMmZkMWIxYzVkNWUwMWMxNzQ2NzQwZmU5Njg0NzAzNWFiNGRhYiAxMDA3NTUKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0
LnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191
bml0dGVzdC5weQpAQCAtNDAsNiArNDAsNyBAQAogX19hdXRob3JfXyA9ICdwaGFubmFAZ29vZ2xl
LmNvbSAoUGF0cmljayBIYW5uYSknCiAKIGltcG9ydCBndGVzdF90ZXN0X3V0aWxzCitpbXBvcnQg
cmUKIAogCiAjIENvbnN0YW50cy4KQEAgLTUyLDM4ICs1Myw2MyBAQAogCiAjIFRoZSBleHBlY3Rl
ZCBvdXRwdXQgd2hlbiBydW5uaW5nIGd0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfIHdpdGgKICMg
LS1ndGVzdF9saXN0X3Rlc3RzCi1FWFBFQ1RFRF9PVVRQVVRfTk9fRklMVEVSID0gIiIiRm9vRGVh
dGhUZXN0LgorRVhQRUNURURfT1VUUFVUX05PX0ZJTFRFUl9SRSA9IHJlLmNvbXBpbGUociIiIkZv
b0RlYXRoVGVzdFwuCiAgIFRlc3QxCi1Gb28uCitGb29cLgogICBCYXIxCiAgIEJhcjIKICAgRElT
QUJMRURfQmFyMwotQWJjLgorQWJjXC4KICAgWHl6CiAgIERlZgotRm9vQmFyLgorRm9vQmFyXC4K
ICAgQmF6Ci1Gb29UZXN0LgorRm9vVGVzdFwuCiAgIFRlc3QxCiAgIERJU0FCTEVEX1Rlc3QyCiAg
IFRlc3QzCi0iIiIKK1R5cGVkVGVzdC8wXC4gICMgVHlwZVBhcmFtID0gKFZlcnlMb3syNDV9fGNs
YXNzIFZlcnlMb3syMzl9KVwuXC5cLgorICBUZXN0QQorICBUZXN0QgorVHlwZWRUZXN0LzFcLiAg
IyBUeXBlUGFyYW0gPSBpbnRccypcKiggX19wdHI2NCk/CisgIFRlc3RBCisgIFRlc3RCCitUeXBl
ZFRlc3QvMlwuICAjIFR5cGVQYXJhbSA9IC4qTXlBcnJheTxib29sLFxzKjQyPgorICBUZXN0QQor
ICBUZXN0QgorTXkvVHlwZVBhcmFtVGVzdC8wXC4gICMgVHlwZVBhcmFtID0gKFZlcnlMb3syNDV9
fGNsYXNzIFZlcnlMb3syMzl9KVwuXC5cLgorICBUZXN0QQorICBUZXN0QgorTXkvVHlwZVBhcmFt
VGVzdC8xXC4gICMgVHlwZVBhcmFtID0gaW50XHMqXCooIF9fcHRyNjQpPworICBUZXN0QQorICBU
ZXN0QgorTXkvVHlwZVBhcmFtVGVzdC8yXC4gICMgVHlwZVBhcmFtID0gLipNeUFycmF5PGJvb2ws
XHMqNDI+CisgIFRlc3RBCisgIFRlc3RCCitNeUluc3RhbnRpYXRpb24vVmFsdWVQYXJhbVRlc3Rc
LgorICBUZXN0QS8wICAjIEdldFBhcmFtXChcKSA9IG9uZSBsaW5lCisgIFRlc3RBLzEgICMgR2V0
UGFyYW1cKFwpID0gdHdvXFxubGluZXMKKyAgVGVzdEEvMiAgIyBHZXRQYXJhbVwoXCkgPSBhIHZl
cnlcXG5sb3syNDF9XC5cLlwuCisgIFRlc3RCLzAgICMgR2V0UGFyYW1cKFwpID0gb25lIGxpbmUK
KyAgVGVzdEIvMSAgIyBHZXRQYXJhbVwoXCkgPSB0d29cXG5saW5lcworICBUZXN0Qi8yICAjIEdl
dFBhcmFtXChcKSA9IGEgdmVyeVxcbmxvezI0MX1cLlwuXC4KKyIiIikKIAogIyBUaGUgZXhwZWN0
ZWQgb3V0cHV0IHdoZW4gcnVubmluZyBndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0XyB3aXRoCiAj
IC0tZ3Rlc3RfbGlzdF90ZXN0cyBhbmQgLS1ndGVzdF9maWx0ZXI9Rm9vKi4KLUVYUEVDVEVEX09V
VFBVVF9GSUxURVJfRk9PID0gIiIiRm9vRGVhdGhUZXN0LgorRVhQRUNURURfT1VUUFVUX0ZJTFRF
Ul9GT09fUkUgPSByZS5jb21waWxlKHIiIiJGb29EZWF0aFRlc3RcLgogICBUZXN0MQotRm9vLgor
Rm9vXC4KICAgQmFyMQogICBCYXIyCiAgIERJU0FCTEVEX0JhcjMKLUZvb0Jhci4KK0Zvb0Jhclwu
CiAgIEJhegotRm9vVGVzdC4KK0Zvb1Rlc3RcLgogICBUZXN0MQogICBESVNBQkxFRF9UZXN0Mgog
ICBUZXN0MwotIiIiCisiIiIpCiAKICMgVXRpbGl0aWVzLgogCkBAIC0xMDAsMTkgKzEyNiwxOCBA
QCBkZWYgUnVuKGFyZ3MpOgogY2xhc3MgR1Rlc3RMaXN0VGVzdHNVbml0VGVzdChndGVzdF90ZXN0
X3V0aWxzLlRlc3RDYXNlKToKICAgIiIiVGVzdHMgdXNpbmcgdGhlIC0tZ3Rlc3RfbGlzdF90ZXN0
cyBmbGFnIHRvIGxpc3QgYWxsIHRlc3RzLiIiIgogCi0gIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwg
ZmxhZ192YWx1ZSwgZXhwZWN0ZWRfb3V0cHV0LCBvdGhlcl9mbGFnKToKKyAgZGVmIFJ1bkFuZFZl
cmlmeShzZWxmLCBmbGFnX3ZhbHVlLCBleHBlY3RlZF9vdXRwdXRfcmUsIG90aGVyX2ZsYWcpOgog
ICAgICIiIlJ1bnMgZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8gYW5kIHZlcmlmaWVzIHRoYXQg
aXQgcHJpbnRzCiAgICAgdGhlIGNvcnJlY3QgdGVzdHMuCiAKICAgICBBcmdzOgotICAgICAgZmxh
Z192YWx1ZTogICAgICAgdmFsdWUgb2YgdGhlIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnOwotICAg
ICAgICAgICAgICAgICAgICAgICAgTm9uZSBpZiB0aGUgZmxhZyBzaG91bGQgbm90IGJlIHByZXNl
bnQuCi0KLSAgICAgIGV4cGVjdGVkX291dHB1dDogIHRoZSBleHBlY3RlZCBvdXRwdXQgYWZ0ZXIg
cnVubmluZyBjb21tYW5kOwotCi0gICAgICBvdGhlcl9mbGFnOiAgICAgICBhIGRpZmZlcmVudCBm
bGFnIHRvIGJlIHBhc3NlZCB0byBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBhbG9u
ZyB3aXRoIGd0ZXN0X2xpc3RfdGVzdHM7Ci0gICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlm
IHRoZSBmbGFnIHNob3VsZCBub3QgYmUgcHJlc2VudC4KKyAgICAgIGZsYWdfdmFsdWU6ICAgICAg
ICAgdmFsdWUgb2YgdGhlIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnOworICAgICAgICAgICAgICAg
ICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBub3QgYmUgcHJlc2VudC4KKyAgICAg
IGV4cGVjdGVkX291dHB1dF9yZTogcmVndWxhciBleHByZXNzaW9uIHRoYXQgbWF0Y2hlcyB0aGUg
ZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGFmdGVyIHJ1bm5pbmcg
Y29tbWFuZDsKKyAgICAgIG90aGVyX2ZsYWc6ICAgICAgICAgYSBkaWZmZXJlbnQgZmxhZyB0byBi
ZSBwYXNzZWQgdG8gY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICBhbG9uZyB3aXRo
IGd0ZXN0X2xpc3RfdGVzdHM7CisgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUgaWYgdGhl
IGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgogICAgICIiIgogCiAgICAgaWYgZmxhZ192YWx1
ZSBpcyBOb25lOgpAQCAtMTMyLDM2ICsxNTcsNDEgQEAgZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBm
bGFnX3ZhbHVlLCBleHBlY3RlZF9vdXRwdXQsIG90aGVyX2ZsYWcpOgogCiAgICAgb3V0cHV0ID0g
UnVuKGFyZ3MpCiAKLSAgICBtc2cgPSAoJ3doZW4gJXMgaXMgJXMsIHRoZSBvdXRwdXQgb2YgIiVz
IiBpcyAiJXMiLicgJQotICAgICAgICAgICAoTElTVF9URVNUU19GTEFHLCBmbGFnX2V4cHJlc3Np
b24sICcgJy5qb2luKGFyZ3MpLCBvdXRwdXQpKQotCi0gICAgaWYgZXhwZWN0ZWRfb3V0cHV0IGlz
IG5vdCBOb25lOgotICAgICAgc2VsZi5hc3NlcnRfKG91dHB1dCA9PSBleHBlY3RlZF9vdXRwdXQs
IG1zZykKKyAgICBpZiBleHBlY3RlZF9vdXRwdXRfcmU6CisgICAgICBzZWxmLmFzc2VydF8oCisg
ICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0X3JlLm1hdGNoKG91dHB1dCksCisgICAgICAgICAgKCd3
aGVuICVzIGlzICVzLCB0aGUgb3V0cHV0IG9mICIlcyIgaXMgIiVzIixcbicKKyAgICAgICAgICAg
J3doaWNoIGRvZXMgbm90IG1hdGNoIHJlZ2V4ICIlcyInICUKKyAgICAgICAgICAgKExJU1RfVEVT
VFNfRkxBRywgZmxhZ19leHByZXNzaW9uLCAnICcuam9pbihhcmdzKSwgb3V0cHV0LAorICAgICAg
ICAgICAgZXhwZWN0ZWRfb3V0cHV0X3JlLnBhdHRlcm4pKSkKICAgICBlbHNlOgotICAgICAgc2Vs
Zi5hc3NlcnRfKG91dHB1dCAhPSBFWFBFQ1RFRF9PVVRQVVRfTk9fRklMVEVSLCBtc2cpCisgICAg
ICBzZWxmLmFzc2VydF8oCisgICAgICAgICAgbm90IEVYUEVDVEVEX09VVFBVVF9OT19GSUxURVJf
UkUubWF0Y2gob3V0cHV0KSwKKyAgICAgICAgICAoJ3doZW4gJXMgaXMgJXMsIHRoZSBvdXRwdXQg
b2YgIiVzIiBpcyAiJXMiJyUKKyAgICAgICAgICAgKExJU1RfVEVTVFNfRkxBRywgZmxhZ19leHBy
ZXNzaW9uLCAnICcuam9pbihhcmdzKSwgb3V0cHV0KSkpCiAKICAgZGVmIHRlc3REZWZhdWx0QmVo
YXZpb3Ioc2VsZik6CiAgICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0IG1v
ZGUuIiIiCiAKICAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPU5vbmUsCi0gICAgICAg
ICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0PU5vbmUsCisgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfb3V0cHV0X3JlPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJf
ZmxhZz1Ob25lKQogCiAgIGRlZiB0ZXN0RmxhZyhzZWxmKToKICAgICAiIiJUZXN0cyB1c2luZyB0
aGUgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuIiIiCiAKICAgICBzZWxmLlJ1bkFuZFZlcmlmeShm
bGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXQ9Tm9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9Tm9uZSwKICAgICAg
ICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPU5vbmUpCiAgICAgc2VsZi5SdW5BbmRWZXJpZnko
ZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0PUVY
UEVDVEVEX09VVFBVVF9OT19GSUxURVIsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRf
b3V0cHV0X3JlPUVYUEVDVEVEX09VVFBVVF9OT19GSUxURVJfUkUsCiAgICAgICAgICAgICAgICAg
ICAgICAgb3RoZXJfZmxhZz1Ob25lKQogCiAgIGRlZiB0ZXN0T3ZlcnJpZGVOb25GaWx0ZXJGbGFn
cyhzZWxmKToKICAgICAiIiJUZXN0cyB0aGF0IC0tZ3Rlc3RfbGlzdF90ZXN0cyBvdmVycmlkZXMg
dGhlIG5vbi1maWx0ZXIgZmxhZ3MuIiIiCiAKICAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3Zh
bHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXQ9RVhQRUNURURf
T1VUUFVUX05PX0ZJTFRFUiwKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRf
cmU9RVhQRUNURURfT1VUUFVUX05PX0ZJTFRFUl9SRSwKICAgICAgICAgICAgICAgICAgICAgICBv
dGhlcl9mbGFnPSctLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUnKQogCiAgIGRlZiB0ZXN0V2l0aEZp
bHRlckZsYWdzKHNlbGYpOgpAQCAtMTY5LDcgKzE5OSw3IEBAIGRlZiB0ZXN0V2l0aEZpbHRlckZs
YWdzKHNlbGYpOgogICAgIC0tZ3Rlc3RfZmlsdGVyIGZsYWcuIiIiCiAKICAgICBzZWxmLlJ1bkFu
ZFZlcmlmeShmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9v
dXRwdXQ9RVhQRUNURURfT1VUUFVUX0ZJTFRFUl9GT08sCisgICAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRfb3V0cHV0X3JlPUVYUEVDVEVEX09VVFBVVF9GSUxURVJfRk9PX1JFLAogICAgICAg
ICAgICAgICAgICAgICAgIG90aGVyX2ZsYWc9Jy0tZ3Rlc3RfZmlsdGVyPUZvbyonKQogCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191
bml0dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVz
dHNfdW5pdHRlc3RfLmNjCmluZGV4IGEwZWQwODI1YjVkODg5NjkyMzAxYzVhNGQ0ZjBlYjc1YmFi
YzViYzguLjkwN2MxNzZiYTk1NTVkNjhjNzRmNGRmY2NiOTY3ZmRjOTFlOTgyYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVz
dF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X3Rlc3Rz
X3VuaXR0ZXN0Xy5jYwpAQCAtMzgsOSArMzgsNyBAQAogLy8gVGhpcyBwcm9ncmFtIHdpbGwgYmUg
aW52b2tlZCBmcm9tIGEgUHl0aG9uIHVuaXQgdGVzdC4KIC8vIERvbid0IHJ1biBpdCBkaXJlY3Rs
eS4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLW5hbWVzcGFjZSB7CisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKIAogLy8gU2V2ZXJhbCBkaWZmZXJlbnQgdGVzdCBjYXNlcyBhbmQgdGVz
dHMgdGhhdCB3aWxsIGJlIGxpc3RlZC4KIFRFU1QoRm9vLCBCYXIxKSB7CkBAIC03Niw3ICs3NCw4
MSBAQCBURVNUX0YoRm9vVGVzdCwgVGVzdDMpIHsKIFRFU1QoRm9vRGVhdGhUZXN0LCBUZXN0MSkg
ewogfQogCi19ICAvLyBuYW1lc3BhY2UKKy8vIEEgZ3JvdXAgb2YgdmFsdWUtcGFyYW1ldGVyaXpl
ZCB0ZXN0cy4KKworY2xhc3MgTXlUeXBlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IE15VHlwZShj
b25zdCBzdGQ6OnN0cmluZyYgYV92YWx1ZSkgOiB2YWx1ZV8oYV92YWx1ZSkge30KKworICBjb25z
dCBzdGQ6OnN0cmluZyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KKworIHByaXZh
dGU6CisgIHN0ZDo6c3RyaW5nIHZhbHVlXzsKK307CisKKy8vIFRlYWNoZXMgR29vZ2xlIFRlc3Qg
aG93IHRvIHByaW50IGEgTXlUeXBlLgordm9pZCBQcmludFRvKGNvbnN0IE15VHlwZSYgeCwgc3Rk
Ojpvc3RyZWFtKiBvcykgeworICAqb3MgPDwgeC52YWx1ZSgpOworfQorCitjbGFzcyBWYWx1ZVBh
cmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPE15VHlwZT4geworfTsKKwor
VEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBUZXN0QSkgeworfQorCitURVNUX1AoVmFsdWVQYXJhbVRl
c3QsIFRlc3RCKSB7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKAorICAgIE15SW5zdGFu
dGlhdGlvbiwgVmFsdWVQYXJhbVRlc3QsCisgICAgdGVzdGluZzo6VmFsdWVzKE15VHlwZSgib25l
IGxpbmUiKSwKKyAgICAgICAgICAgICAgICAgICAgTXlUeXBlKCJ0d29cbmxpbmVzIiksCisgICAg
ICAgICAgICAgICAgICAgIE15VHlwZSgiYSB2ZXJ5XG5sb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb25n
IGxpbmUiKSkpOyAgLy8gTk9MSU5UCisKKy8vIEEgZ3JvdXAgb2YgdHlwZWQgdGVzdHMuCisKKy8v
IEEgZGVsaWJlcmF0ZWx5IGxvbmcgdHlwZSBuYW1lIGZvciB0ZXN0aW5nIHRoZSBsaW5lLXRydW5j
YXRpbmcKKy8vIGJlaGF2aW9yIHdoZW4gcHJpbnRpbmcgYSB0eXBlIHBhcmFtZXRlci4KK2NsYXNz
IFZlcnlMb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb2dOYW1lIHsgIC8vIE5PTElOVAorfTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlZFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgaW50IGtTaXplPgorY2xhc3MgTXlBcnJh
eSB7Cit9OworCit0eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPFZlcnlMb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb2dOYW1lLCAgLy8gTk9MSU5UCisgICAgICAgICAgICAgICAgICAgICAgIGludCosIE15QXJy
YXk8Ym9vbCwgNDI+ID4gTXlUeXBlczsKKworVFlQRURfVEVTVF9DQVNFKFR5cGVkVGVzdCwgTXlU
eXBlcyk7CisKK1RZUEVEX1RFU1QoVHlwZWRUZXN0LCBUZXN0QSkgeworfQorCitUWVBFRF9URVNU
KFR5cGVkVGVzdCwgVGVzdEIpIHsKK30KKworLy8gQSBncm91cCBvZiB0eXBlLXBhcmFtZXRlcml6
ZWQgdGVzdHMuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZVBhcmFtVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKFR5cGVQYXJh
bVRlc3QpOworCitUWVBFRF9URVNUX1AoVHlwZVBhcmFtVGVzdCwgVGVzdEEpIHsKK30KKworVFlQ
RURfVEVTVF9QKFR5cGVQYXJhbVRlc3QsIFRlc3RCKSB7Cit9CisKK1JFR0lTVEVSX1RZUEVEX1RF
U1RfQ0FTRV9QKFR5cGVQYXJhbVRlc3QsIFRlc3RBLCBUZXN0Qik7CisKK0lOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QKE15LCBUeXBlUGFyYW1UZXN0LCBNeVR5cGVzKTsKIAogaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CiAgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9tYWluX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9t
YWluX3VuaXR0ZXN0LmNjCmluZGV4IDdhM2YwYWRmYWRmNmQ3ZTVjMTk1YjMxOTQ0NzE0ZDVhYzQx
YmI4ZTMuLmVjZDliYjg3NmZmN2NlOWU4Y2VhM2QzMDIyNGQyODhhOWIxOWU3MDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbWFpbl91bml0dGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X21haW5fdW5pdHRlc3QuY2MK
QEAgLTI5LDcgKzI5LDcgQEAKIC8vCiAvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9u
ZyBXYW4pCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCiAKIC8vIFRlc3RzIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBkZWZpbmUgbWFpbigpIHdoZW4g
d2UgbGluayB0bwogLy8gZ3Rlc3RfbWFpbiBpbnN0ZWFkIG9mIGd0ZXN0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9uYy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbmMuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDczYjVkYjZkNDE4MzA5YTQ3YTIzZGZmMTgwMDUzYjc1ZDMyMDEyNGYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF9uYy5jYworKysgL2Rldi9udWxsCkBAIC0xLDIzNCArMCwwIEBACi0vLyBDb3B5
cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1
dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBUaGlzIGZpbGUgaXMgdGhlIGlucHV0IHRv
IGEgbmVnYXRpdmUtY29tcGlsYXRpb24gdGVzdCBmb3IgR29vZ2xlCi0vLyBUZXN0LiAgQ29kZSBo
ZXJlIGlzIE5PVCBzdXBwb3NlZCB0byBjb21waWxlLiAgSXRzIHB1cnBvc2UgaXMgdG8KLS8vIHZl
cmlmeSB0aGF0IGNlcnRhaW4gaW5jb3JyZWN0IHVzYWdlcyBvZiB0aGUgR29vZ2xlIFRlc3QgQVBJ
IGFyZQotLy8gaW5kZWVkIHJlamVjdGVkIGJ5IHRoZSBjb21waWxlci4KLS8vCi0vLyBXZSBzdGls
bCBuZWVkIHRvIHdyaXRlIHRoZSBuZWdhdGl2ZS1jb21waWxhdGlvbiB0ZXN0IGl0c2VsZiwgd2hp
Y2gKLS8vIHdpbGwgYmUgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIGJ1aWxkIGVudmlyb25tZW50
LgotLy8KLS8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBmaW5pc2ggdGhlIG5lZ2F0aXZlLWNvbXBp
bGF0aW9uIHRlc3QuCi0KLSNpZmRlZiBURVNUX0NBTk5PVF9JR05PUkVfUlVOX0FMTF9URVNUU19S
RVNVTFQKLS8vIFRlc3RzIHRoYXQgdGhlIHJlc3VsdCBvZiBSVU5fQUxMX1RFU1RTKCkgY2Fubm90
IGJlIGlnbm9yZWQuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1pbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFy
Z3YpOwotICBSVU5fQUxMX1RFU1RTKCk7ICAvLyBUaGlzIGxpbmUgc2hvdWxkbid0IGNvbXBpbGUu
Ci19Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9VU0VSX0NBTk5PVF9JTkNMVURFX0dURVNUX0lOVEVS
TkFMX0lOTF9IKQotLy8gVGVzdHMgdGhhdCBhIHVzZXIgY2Fubm90IGluY2x1ZGUgZ3Rlc3QtaW50
ZXJuYWwtaW5sLmggaW4gaGlzIGNvZGUuCi0KLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwt
aW5sLmgiCi0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRDSEVTX0RFQ0xBUklOR19TRVRVUF9JTl9U
RVNUX0ZJWFRVUkVfV0lUSF9UWVBPKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0Y2hl
cyB0aGUgdHlwbyB3aGVuIGEgdXNlciBkZWNsYXJlcyBhCi0vLyBTZXR1cCgpIG1ldGhvZCBpbiBh
IHRlc3QgZml4dHVyZS4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLWNsYXNzIE15VGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZvaWQgU2V0dXAoKSB7
fQotfTsKLQotI2VsaWYgZGVmaW5lZChURVNUX0NBVENIRVNfQ0FMTElOR19TRVRVUF9JTl9URVNU
X1dJVEhfVFlQTykKLS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgdGhlIHR5cG8g
d2hlbiBhIHVzZXIgY2FsbHMgU2V0dXAoKQotLy8gZnJvbSBhIHRlc3QgZml4dHVyZS4KLQotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLWNsYXNzIE15VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICB0ZXN0aW5n
OjpUZXN0OjpTZXR1cCgpOyAgLy8gVHJpZXMgdG8gY2FsbCBTZXRVcCgpIGluIHRoZSBwYXJlbnQg
Y2xhc3MuCi0gIH0KLX07Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRDSEVTX0RFQ0xBUklOR19T
RVRVUF9JTl9FTlZJUk9OTUVOVF9XSVRIX1RZUE8pCi0vLyBUZXN0cyB0aGF0IHRoZSBjb21waWxl
ciBjYXRjaGVzIHRoZSB0eXBvIHdoZW4gYSB1c2VyIGRlY2xhcmVzIGEKLS8vIFNldHVwKCkgbWV0
aG9kIGluIGEgc3ViY2xhc3Mgb2YgRW52aXJvbm1lbnQuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgotCi1jbGFzcyBNeUVudmlyb25tZW50IDogcHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50
IHsKLSBwdWJsaWM6Ci0gIHZvaWQgU2V0dXAoKSB7fQotfTsKLQotI2VsaWYgZGVmaW5lZChURVNU
X0NBVENIRVNfQ0FMTElOR19TRVRVUF9JTl9FTlZJUk9OTUVOVF9XSVRIX1RZUE8pCi0vLyBUZXN0
cyB0aGF0IHRoZSBjb21waWxlciBjYXRjaGVzIHRoZSB0eXBvIHdoZW4gYSB1c2VyIGNhbGxzIFNl
dHVwKCkKLS8vIGluIGFuIEVudmlyb25tZW50LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
LQotY2xhc3MgTXlFbnZpcm9ubWVudCA6IHB1YmxpYyB0ZXN0aW5nOjpFbnZpcm9ubWVudCB7Ci0g
cHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgLy8gVHJpZXMgdG8gY2Fs
bCBTZXRVcCgpIGluIHRoZSBwYXJlbnQgY2xhc3MuCi0gICAgdGVzdGluZzo6RW52aXJvbm1lbnQ6
OlNldHVwKCk7Ci0gIH0KLX07Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRDSEVTX1dST05HX0NB
U0VfSU5fVFlQRURfVEVTVF9QKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0Y2hlcyB1
c2luZyB0aGUgd3JvbmcgdGVzdCBjYXNlIG5hbWUgaW4KLS8vIFRZUEVEX1RFU1RfUC4KLQotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgRm9v
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotY2xhc3MgQmFyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RF
U1RfQ0FTRV9QKEZvb1Rlc3QpOwotVFlQRURfVEVTVF9QKEJhclRlc3QsIEEpIHt9ICAvLyBXcm9u
ZyB0ZXN0IGNhc2UgbmFtZS4KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsIEEp
OwotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIHRlc3Rpbmc6OlR5
cGVzPGludD4pOwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19XUk9OR19DQVNFX0lOX1JF
R0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0
Y2hlcyB1c2luZyB0aGUgd3JvbmcgdGVzdCBjYXNlIG5hbWUgaW4KLS8vIFJFR0lTVEVSX1RZUEVE
X1RFU1RfQ0FTRV9QLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBCYXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewotfTsKLQotVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7Ci1UWVBFRF9URVNUX1AoRm9v
VGVzdCwgQSkge30KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEJhclRlc3QsIEEpOyAgLy8g
V3JvbmcgdGVzdCBjYXNlIG5hbWUuCi1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwg
Rm9vVGVzdCwgdGVzdGluZzo6VHlwZXM8aW50Pik7Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRD
SEVTX1dST05HX0NBU0VfSU5fSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1ApCi0vLyBUZXN0
cyB0aGF0IHRoZSBjb21waWxlciBjYXRjaGVzIHVzaW5nIHRoZSB3cm9uZyB0ZXN0IGNhc2UgbmFt
ZSBpbgotLy8gSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AuCi0KLSNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEZvb1Rlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEJh
clRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChG
b29UZXN0KTsKLVRZUEVEX1RFU1RfUChGb29UZXN0LCBBKSB7fQotUkVHSVNURVJfVFlQRURfVEVT
VF9DQVNFX1AoRm9vVGVzdCwgQSk7Ci0KLS8vIFdyb25nIHRlc3QgY2FzZSBuYW1lLgotSU5TVEFO
VElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEJhclRlc3QsIHRlc3Rpbmc6OlR5cGVzPGludD4p
OwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19JTlNUQU5USUFURV9UWVBFRF9URVNFVF9D
QVNFX1BfV0lUSF9TQU1FX05BTUVfUFJFRklYKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIg
Y2F0Y2hlcyBpbnN0YW50aWF0aW5nIFRZUEVEX1RFU1RfQ0FTRV9QCi0vLyB0d2ljZSB3aXRoIHRo
ZSBzYW1lIG5hbWUgcHJlZml4LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewot
fTsKLQotVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7Ci1UWVBFRF9URVNUX1AoRm9vVGVzdCwg
QSkge30KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsIEEpOwotCi1JTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgdGVzdGluZzo6VHlwZXM8aW50Pik7
Ci0KLS8vIFdyb25nIG5hbWUgcHJlZml4OiAiTXkiIGhhcyBiZWVuIHVzZWQuCi1JTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgdGVzdGluZzo6VHlwZXM8ZG91YmxlPik7
Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9TVEFUSUNfQVNTRVJUX1RZUEVfRVFfSVNfTk9UX0FfVFlQ
RSkKLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLS8vIFRlc3RzIHRoYXQgU3RhdGljQXNz
ZXJ0VHlwZUVxPFQxLCBUMj4gY2Fubm90IGJlIHVzZWQgYXMgYSB0eXBlLgotdGVzdGluZzo6U3Rh
dGljQXNzZXJ0VHlwZUVxPGludCwgaW50PiBkdW1teTsKLQotI2VsaWYgZGVmaW5lZChURVNUX1NU
QVRJQ19BU1NFUlRfVFlQRV9FUV9XT1JLU19JTl9OQU1FU1BBQ0UpCi0KLSNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgotCi0vLyBUZXN0cyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+IHdv
cmtzIGluIGEgbmFtZXNwYWNlIHNjb3BlLgotc3RhdGljIGJvb2wgZHVtbXkgPSB0ZXN0aW5nOjpT
dGF0aWNBc3NlcnRUeXBlRXE8aW50LCBjb25zdCBpbnQ+KCk7Ci0KLSNlbGlmIGRlZmluZWQoVEVT
VF9TVEFUSUNfQVNTRVJUX1RZUEVfRVFfV09SS1NfSU5fQ0xBU1MpCi0KLSNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEhlbHBlciB7Ci0gcHVi
bGljOgotICAvLyBUZXN0cyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+IHdvcmtzIGlu
IGEgY2xhc3MuCi0gIEhlbHBlcigpIHsgdGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGludCwg
VD4oKTsgfQotCi0gIHZvaWQgRG9Tb21ldGhpbmcoKSB7fQotfTsKLQotdm9pZCBUZXN0KCkgewot
ICBIZWxwZXI8Ym9vbD4gaDsKLSAgaC5Eb1NvbWV0aGluZygpOyAgLy8gVG8gYXZvaWQgdGhlICJ1
bnVzZWQgdmFyaWFibGUiIHdhcm5pbmcuCi19Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9TVEFUSUNf
QVNTRVJUX1RZUEVfRVFfV09SS1NfSU5fRlVOQ1RJT04pCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgotCi12b2lkIFRlc3QoKSB7Ci0gIC8vIFRlc3RzIHRoYXQgU3RhdGljQXNzZXJ0VHlwZUVx
PFQxLCBUMj4gd29ya3MgaW5zaWRlIGEgZnVuY3Rpb24uCi0gIHRlc3Rpbmc6OlN0YXRpY0Fzc2Vy
dFR5cGVFcTxjb25zdCBpbnQsIGludD4oKTsKLX0KLQotI2Vsc2UKLS8vIEEgc2FuaXR5IHRlc3Qu
ICBUaGlzIHNob3VsZCBjb21waWxlLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotaW50
IG1haW4oKSB7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19Ci0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9uY190ZXN0LnB5IGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9uY190ZXN0LnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCAwNmZmYjNmODAzOGYwYTU3OTZlNGI2ZDYyOWQwMmU4MDU2NWEyNDM4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbmNfdGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0x
LDEwNiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDcs
IEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0j
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ci0iIiJOZWdhdGl2ZSBjb21waWxhdGlvbiB0ZXN0IGZvciBHb29nbGUgVGVzdC4iIiIKLQotX19h
dXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IG9zCi1p
bXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1JU19MSU5VWCA9IG9zLm5hbWUgPT0gJ3Bv
c2l4JyBhbmQgb3MudW5hbWUoKVswXSA9PSAnTGludXgnCi1pZiBub3QgSVNfTElOVVg6Ci0gIHN5
cy5leGl0KDApICAjIE5lZ2F0aXZlIGNvbXBpbGF0aW9uIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVk
IG9uIFdpbmRvd3MgJiBNYWMuCi0KLQotY2xhc3MgR1Rlc3ROQ1Rlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgotICAiIiJOZWdhdGl2ZSBjb21waWxhdGlvbiB0ZXN0IGZvciBHb29nbGUgVGVzdC4iIiIK
LQotICBkZWYgdGVzdENvbXBpbGVyRXJyb3Ioc2VsZik6Ci0gICAgIiIiVmVyaWZpZXMgdGhhdCBl
cnJvbmVvdXMgY29kZSBsZWFkcyB0byBleHBlY3RlZCBjb21waWxlcgotICAgIG1lc3NhZ2VzLiIi
IgotCi0gICAgIyBEZWZpbmVzIGEgbGlzdCBvZiB0ZXN0IHNwZWNzLCB3aGVyZSBlYWNoIGVsZW1l
bnQgaXMgYSB0dXBsZQotICAgICMgKHRlc3QgbmFtZSwgbGlzdCBvZiByZWdleGVzIGZvciBtYXRj
aGluZyB0aGUgY29tcGlsZXIgZXJyb3JzKS4KLSAgICB0ZXN0X3NwZWNzID0gWwotICAgICAgKCdD
QU5OT1RfSUdOT1JFX1JVTl9BTExfVEVTVFNfUkVTVUxUJywKLSAgICAgICBbcidpZ25vcmluZyBy
ZXR1cm4gdmFsdWUnXSksCi0KLSAgICAgICgnVVNFUl9DQU5OT1RfSU5DTFVERV9HVEVTVF9JTlRF
Uk5BTF9JTkxfSCcsCi0gICAgICAgW3InbXVzdCBub3QgYmUgaW5jbHVkZWQgZXhjZXB0IGJ5IEdv
b2dsZSBUZXN0IGl0c2VsZiddKSwKLQotICAgICAgKCdDQVRDSEVTX0RFQ0xBUklOR19TRVRVUF9J
Tl9URVNUX0ZJWFRVUkVfV0lUSF9UWVBPJywKLSAgICAgICBbcidTZXR1cF9zaG91bGRfYmVfc3Bl
bGxlZF9TZXRVcCddKSwKLQotICAgICAgKCdDQVRDSEVTX0NBTExJTkdfU0VUVVBfSU5fVEVTVF9X
SVRIX1RZUE8nLAotICAgICAgIFtyJ1NldHVwX3Nob3VsZF9iZV9zcGVsbGVkX1NldFVwJ10pLAot
Ci0gICAgICAoJ0NBVENIRVNfREVDTEFSSU5HX1NFVFVQX0lOX0VOVklST05NRU5UX1dJVEhfVFlQ
TycsCi0gICAgICAgW3InU2V0dXBfc2hvdWxkX2JlX3NwZWxsZWRfU2V0VXAnXSksCi0KLSAgICAg
ICgnQ0FUQ0hFU19DQUxMSU5HX1NFVFVQX0lOX0VOVklST05NRU5UX1dJVEhfVFlQTycsCi0gICAg
ICAgW3InU2V0dXBfc2hvdWxkX2JlX3NwZWxsZWRfU2V0VXAnXSksCi0KLSAgICAgICgnQ0FUQ0hF
U19XUk9OR19DQVNFX0lOX1RZUEVEX1RFU1RfUCcsCi0gICAgICAgW3InQmFyVGVzdC4qd2FzIG5v
dCBkZWNsYXJlZCddKSwKLQotICAgICAgKCdDQVRDSEVTX1dST05HX0NBU0VfSU5fUkVHSVNURVJf
VFlQRURfVEVTVF9DQVNFX1AnLAotICAgICAgIFtyJ0JhclRlc3QuKndhcyBub3QgZGVjbGFyZWQn
XSksCi0KLSAgICAgICgnQ0FUQ0hFU19XUk9OR19DQVNFX0lOX0lOU1RBTlRJQVRFX1RZUEVEX1RF
U1RfQ0FTRV9QJywKLSAgICAgICBbcidCYXJUZXN0Lipub3QgZGVjbGFyZWQnXSksCi0KLSAgICAg
ICgnQ0FUQ0hFU19JTlNUQU5USUFURV9UWVBFRF9URVNFVF9DQVNFX1BfV0lUSF9TQU1FX05BTUVf
UFJFRklYJywKLSAgICAgICBbcidyZWRlZmluaXRpb24gb2YuKk15LipGb29UZXN0J10pLAotCi0g
ICAgICAoJ1NUQVRJQ19BU1NFUlRfVFlQRV9FUV9JU19OT1RfQV9UWVBFJywKLSAgICAgICBbcidT
dGF0aWNBc3NlcnRUeXBlRXEuKiBkb2VzIG5vdCBuYW1lIGEgdHlwZSddKSwKLQotICAgICAgKCdT
VEFUSUNfQVNTRVJUX1RZUEVfRVFfV09SS1NfSU5fTkFNRVNQQUNFJywKLSAgICAgICBbcidTdGF0
aWNBc3NlcnRUeXBlRXEuKmludC4qY29uc3QgaW50J10pLAotCi0gICAgICAoJ1NUQVRJQ19BU1NF
UlRfVFlQRV9FUV9XT1JLU19JTl9DTEFTUycsCi0gICAgICAgW3InU3RhdGljQXNzZXJ0VHlwZUVx
LippbnQuKmJvb2wnXSksCi0KLSAgICAgICgnU1RBVElDX0FTU0VSVF9UWVBFX0VRX1dPUktTX0lO
X0ZVTkNUSU9OJywKLSAgICAgICBbcidTdGF0aWNBc3NlcnRUeXBlRXEuKmNvbnN0IGludC4qaW50
J10pLAotCi0gICAgICAoJ1NBTklUWScsCi0gICAgICAgTm9uZSkKLSAgICAgIF0KLQotICAgICMg
VE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHZlcmlmeSB0aGF0IHRoZSB0ZXN0IHNwZWNzIGFyZSBzYXRp
c2ZpZWQuCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgdW5pdHRlc3QubWFpbigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X25vX3Rlc3Rf
dW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X25vX3Rlc3Rf
dW5pdHRlc3QuY2MKaW5kZXggYWZlMmRjMGM5MmZlNDNhZTkzNWIyMmNlZjMxNzdlNTE4NGI3ZmZh
MS4uMjkyNTk5YWY4ZDA4ZDY4M2Q4YWY4NmZlZTk3ZmEzYzVhNjE2YTY2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9ub190ZXN0X3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdC5j
YwpAQCAtMzIsMjMgKzMyLDI1IEBACiAvLwogLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhh
bnlvbmcgV2FuKQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQorI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewogICB0ZXN0aW5n
OjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CiAKICAgLy8gQW4gYWQtaG9jIGFzc2VydGlv
biBvdXRzaWRlIG9mIGFsbCB0ZXN0cy4KICAgLy8KLSAgLy8gVGhpcyBzZXJ2ZXMgdHdvIHB1cnBv
c2VzOgorICAvLyBUaGlzIHNlcnZlcyB0aHJlZSBwdXJwb3NlczoKICAgLy8KICAgLy8gMS4gSXQg
dmVyaWZpZXMgdGhhdCBhbiBhZC1ob2MgYXNzZXJ0aW9uIGNhbiBiZSBleGVjdXRlZCBldmVuIGlm
CiAgIC8vICAgIG5vIHRlc3QgaXMgZGVmaW5lZC4KLSAgLy8gMi4gV2UgaGFkIGEgYnVnIHdoZXJl
IHRoZSBYTUwgb3V0cHV0IHdvbid0IGJlIGdlbmVyYXRlZCBpZiBhbgorICAvLyAyLiBJdCB2ZXJp
ZmllcyB0aGF0IGEgZmFpbGVkIGFkLWhvYyBhc3NlcnRpb24gY2F1c2VzIHRoZSB0ZXN0CisgIC8v
ICAgIHByb2dyYW0gdG8gZmFpbC4KKyAgLy8gMy4gV2UgaGFkIGEgYnVnIHdoZXJlIHRoZSBYTUwg
b3V0cHV0IHdvbid0IGJlIGdlbmVyYXRlZCBpZiBhbgogICAvLyAgICBhc3NlcnRpb24gaXMgZXhl
Y3V0ZWQgYmVmb3JlIFJVTl9BTExfVEVTVFMoKSBpcyBjYWxsZWQsIGV2ZW4KICAgLy8gICAgdGhv
dWdoIC0tZ3Rlc3Rfb3V0cHV0PXhtbCBpcyBzcGVjaWZpZWQuICBUaGlzIG1ha2VzIHN1cmUgdGhl
CiAgIC8vICAgIGJ1ZyBpcyBmaXhlZCBhbmQgZG9lc24ndCByZWdyZXNzLgotICBFWFBFQ1RfRVEo
MSwgMSk7CisgIEVYUEVDVF9FUSgxLCAyKTsKIAotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwor
ICAvLyBUaGUgYWJvdmUgRVhQRUNUX0VRKCkgc2hvdWxkIGNhdXNlIFJVTl9BTExfVEVTVFMoKSB0
byByZXR1cm4gbm9uLXplcm8uCisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCkgPyAwIDogMTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rl
c3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0LnB5
CmluZGV4IDE5MjAzMGEyMDIwYmZkNDFlOTRjNGU0OTE0Y2FiYTM4ZGI3NGYyZmIuLjA2ZGJlZTA5
ODA1MDY4NWU1YzBjNWI1YzQ1YTM0N2FmNzk5OTczZTYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdC5weQpAQCAtMzIsNyArMzIsNyBAQAog
IiIiVGVzdHMgdGhlIHRleHQgb3V0cHV0IG9mIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsu
CiAKIFNZTk9QU0lTCi0gICAgICAgZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkgLS1ndGVzdF9idWlsZF9k
aXI9QlVJTEQvRElSIC0tZ2VuZ29sZGVuCisgICAgICAgZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkgLS1i
dWlsZF9kaXI9QlVJTEQvRElSIC0tZ2VuZ29sZGVuCiAgICAgICAgICAjIHdoZXJlIEJVSUxEL0RJ
UiBjb250YWlucyB0aGUgYnVpbHQgZ3Rlc3Rfb3V0cHV0X3Rlc3RfIGZpbGUuCiAgICAgICAgZ3Rl
c3Rfb3V0cHV0X3Rlc3QucHkgLS1nZW5nb2xkZW4KICAgICAgICBndGVzdF9vdXRwdXRfdGVzdC5w
eQpAQCAtNDAsNiArNDAsNyBAQAogCiBfX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFu
eW9uZyBXYW4pJwogCitpbXBvcnQgZGlmZmxpYgogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9y
dCBzeXMKQEAgLTUyLDMwICs1MywyOCBAQAogCiBJU19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQn
CiAKLWlmIElTX1dJTkRPV1M6Ci0gIEdPTERFTl9OQU1FID0gJ2d0ZXN0X291dHB1dF90ZXN0X2dv
bGRlbl93aW4udHh0JwotZWxzZToKLSAgR09MREVOX05BTUUgPSAnZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
Z29sZGVuX2xpbi50eHQnCisjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IHJlbW92ZSB0aGUgX2xp
biBzdWZmaXguCitHT0xERU5fTkFNRSA9ICdndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fbGluLnR4
dCcKIAogUFJPR1JBTV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBh
dGgoJ2d0ZXN0X291dHB1dF90ZXN0XycpCiAKICMgQXQgbGVhc3Qgb25lIGNvbW1hbmQgd2UgZXhl
cmNpc2UgbXVzdCBub3QgaGF2ZSB0aGUKLSMgLS1ndGVzdF9pbnRlcm5hbF9za2lwX2Vudmlyb25t
ZW50X2FuZF9hZF9ob2NfdGVzdHMgZmxhZy4KKyMgJ2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRf
YW5kX2FkX2hvY190ZXN0cycgYXJndW1lbnQuCiBDT01NQU5EX0xJU1RfVEVTVFMgPSAoe30sIFtQ
Uk9HUkFNX1BBVEgsICctLWd0ZXN0X2xpc3RfdGVzdHMnXSkKIENPTU1BTkRfV0lUSF9DT0xPUiA9
ICh7fSwgW1BST0dSQU1fUEFUSCwgJy0tZ3Rlc3RfY29sb3I9eWVzJ10pCiBDT01NQU5EX1dJVEhf
VElNRSA9ICh7fSwgW1BST0dSQU1fUEFUSCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0t
Z3Rlc3RfcHJpbnRfdGltZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICctLWd0ZXN0X2lu
dGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cycsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICdpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMn
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ndGVzdF9maWx0ZXI9RmF0YWxGYWlsdXJl
VGVzdC4qOkxvZ2dpbmdUZXN0LionXSkKIENPTU1BTkRfV0lUSF9ESVNBQkxFRCA9ICgKICAgICB7
fSwgW1BST0dSQU1fUEFUSCwKICAgICAgICAgICctLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rl
c3RzJywKLSAgICAgICAgICctLWd0ZXN0X2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2Fk
X2hvY190ZXN0cycsCisgICAgICAgICAnaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRf
aG9jX3Rlc3RzJywKICAgICAgICAgICctLWd0ZXN0X2ZpbHRlcj0qRElTQUJMRURfKiddKQogQ09N
TUFORF9XSVRIX1NIQVJESU5HID0gKAogICAgIHsnR1RFU1RfU0hBUkRfSU5ERVgnOiAnMScsICdH
VEVTVF9UT1RBTF9TSEFSRFMnOiAnMid9LAogICAgIFtQUk9HUkFNX1BBVEgsCi0gICAgICctLWd0
ZXN0X2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cycsCisgICAgICdp
bnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMnLAogICAgICAnLS1ndGVz
dF9maWx0ZXI9UGFzc2luZ1Rlc3QuKiddKQogCiBHT0xERU5fUEFUSCA9IG9zLnBhdGguam9pbihn
dGVzdF90ZXN0X3V0aWxzLkdldFNvdXJjZURpcigpLCBHT0xERU5fTkFNRSkKQEAgLTEzOCw2ICsx
MzcsMjAgQEAgZGVmIFJlbW92ZVR5cGVJbmZvRGV0YWlscyh0ZXN0X291dHB1dCk6CiAgIHJldHVy
biByZS5zdWIocid1bnNpZ25lZCBpbnQnLCAndW5zaWduZWQnLCB0ZXN0X291dHB1dCkKIAogCitk
ZWYgTm9ybWFsaXplVG9DdXJyZW50UGxhdGZvcm0odGVzdF9vdXRwdXQpOgorICAiIiJOb3JtYWxp
emVzIHBsYXRmb3JtIHNwZWNpZmljIG91dHB1dCBkZXRhaWxzIGZvciBlYXNpZXIgY29tcGFyaXNv
bi4iIiIKKworICBpZiBJU19XSU5ET1dTOgorICAgICMgUmVtb3ZlcyB0aGUgY29sb3IgaW5mb3Jt
YXRpb24gdGhhdCBpcyBub3QgcHJlc2VudCBvbiBXaW5kb3dzLgorICAgIHRlc3Rfb3V0cHV0ID0g
cmUuc3ViKCdceDFiXFxbKDA7M1xkKT9tJywgJycsIHRlc3Rfb3V0cHV0KQorICAgICMgQ2hhbmdl
cyBmYWlsdXJlIG1lc3NhZ2UgaGVhZGVycyBpbnRvIHRoZSBXaW5kb3dzIGZvcm1hdC4KKyAgICB0
ZXN0X291dHB1dCA9IHJlLnN1YihyJzogRmFpbHVyZVxuJywgcic6IGVycm9yOiAnLCB0ZXN0X291
dHB1dCkKKyAgICAjIENoYW5nZXMgZmlsZShsaW5lX251bWJlcikgdG8gZmlsZTpsaW5lX251bWJl
ci4KKyAgICB0ZXN0X291dHB1dCA9IHJlLnN1YihyJygoXHd8XC4pKylcKChcZCspXCk6Jywgcidc
MTpcMzonLCB0ZXN0X291dHB1dCkKKworICByZXR1cm4gdGVzdF9vdXRwdXQKKworCiBkZWYgUmVt
b3ZlVGVzdENvdW50cyhvdXRwdXQpOgogICAiIiJSZW1vdmVzIHRlc3QgY291bnRzIGZyb20gYSBH
b29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgogCkBAIC0yNDAsOCArMjUzLDggQEAgZGVm
IEdldE91dHB1dE9mQWxsQ29tbWFuZHMoKToKIAogQ0FOX0dFTkVSQVRFX0dPTERFTl9GSUxFID0g
KFNVUFBPUlRTX0RFQVRIX1RFU1RTIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNV
UFBPUlRTX1RZUEVEX1RFU1RTIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVUFBP
UlRTX1RIUkVBRFMpCi0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVVBQT1JUU19USFJF
QURTIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBJU19XSU5ET1dTKQogCiBj
bGFzcyBHVGVzdE91dHB1dFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CiAgIGRlZiBS
ZW1vdmVVbnN1cHBvcnRlZFRlc3RzKHNlbGYsIHRlc3Rfb3V0cHV0KToKQEAgLTI2Niw3ICsyNzks
NyBAQCBkZWYgUmVtb3ZlVW5zdXBwb3J0ZWRUZXN0cyhzZWxmLCB0ZXN0X291dHB1dCk6CiAgIGRl
ZiB0ZXN0T3V0cHV0KHNlbGYpOgogICAgIG91dHB1dCA9IEdldE91dHB1dE9mQWxsQ29tbWFuZHMo
KQogCi0gICAgZ29sZGVuX2ZpbGUgPSBvcGVuKEdPTERFTl9QQVRILCAncmInKQorICAgIGdvbGRl
bl9maWxlID0gb3BlbihHT0xERU5fUEFUSCwgJ3InKQogICAgICMgQSBtaXMtY29uZmlndXJlZCBz
b3VyY2UgY29udHJvbCBzeXN0ZW0gY2FuIGNhdXNlIFxyIGFwcGVhciBpbiBFT0wKICAgICAjIHNl
cXVlbmNlcyB3aGVuIHdlIHJlYWQgdGhlIGdvbGRlbiBmaWxlIGlycmVzcGVjdGl2ZSBvZiBhbiBv
cGVyYXRpbmcKICAgICAjIHN5c3RlbSB1c2VkLiBUaGVyZWZvcmUsIHdlIG5lZWQgdG8gc3RyaXAg
dGhvc2UgXHIncyBmcm9tIG5ld2xpbmVzCkBAIC0yODIsMTEgKzI5NSwxNiBAQCBkZWYgdGVzdE91
dHB1dChzZWxmKToKICAgICBub3JtYWxpemVkX2dvbGRlbiA9IFJlbW92ZVR5cGVJbmZvRGV0YWls
cyhnb2xkZW4pCiAKICAgICBpZiBDQU5fR0VORVJBVEVfR09MREVOX0ZJTEU6Ci0gICAgICBzZWxm
LmFzc2VydEVxdWFsKG5vcm1hbGl6ZWRfZ29sZGVuLCBub3JtYWxpemVkX2FjdHVhbCkKKyAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobm9ybWFsaXplZF9nb2xkZW4sIG5vcm1hbGl6ZWRfYWN0dWFsLAor
ICAgICAgICAgICAgICAgICAgICAgICAnXG4nLmpvaW4oZGlmZmxpYi51bmlmaWVkX2RpZmYoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkX2dvbGRlbi5zcGxpdCgnXG4nKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRfYWN0dWFsLnNwbGl0KCdcbicp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dvbGRlbicsICdhY3R1YWwnKSkpCiAgICAg
ZWxzZToKLSAgICAgIG5vcm1hbGl6ZWRfYWN0dWFsID0gUmVtb3ZlVGVzdENvdW50cyhub3JtYWxp
emVkX2FjdHVhbCkKLSAgICAgIG5vcm1hbGl6ZWRfZ29sZGVuID0gUmVtb3ZlVGVzdENvdW50cyhz
ZWxmLlJlbW92ZVVuc3VwcG9ydGVkVGVzdHMoCi0gICAgICAgICAgbm9ybWFsaXplZF9nb2xkZW4p
KQorICAgICAgbm9ybWFsaXplZF9hY3R1YWwgPSBOb3JtYWxpemVUb0N1cnJlbnRQbGF0Zm9ybSgK
KyAgICAgICAgICBSZW1vdmVUZXN0Q291bnRzKG5vcm1hbGl6ZWRfYWN0dWFsKSkKKyAgICAgIG5v
cm1hbGl6ZWRfZ29sZGVuID0gTm9ybWFsaXplVG9DdXJyZW50UGxhdGZvcm0oCisgICAgICAgICAg
UmVtb3ZlVGVzdENvdW50cyhzZWxmLlJlbW92ZVVuc3VwcG9ydGVkVGVzdHMobm9ybWFsaXplZF9n
b2xkZW4pKSkKIAogICAgICAgIyBUaGlzIGNvZGUgaXMgdmVyeSBoYW5keSB3aGVuIGRlYnVnZ2lu
ZyBnb2xkZW4gZmlsZSBkaWZmZXJlbmNlczoKICAgICAgIGlmIG9zLmdldGVudignREVCVUdfR1RF
U1RfT1VUUFVUX1RFU1QnKToKQEAgLTMxMiwxNCArMzMwLDkgQEAgZGVmIHRlc3RPdXRwdXQoc2Vs
Zik6CiAgICAgZWxzZToKICAgICAgIG1lc3NhZ2UgPSAoCiAgICAgICAgICAgIiIiVW5hYmxlIHRv
IHdyaXRlIGEgZ29sZGVuIGZpbGUgd2hlbiBjb21waWxlZCBpbiBhbiBlbnZpcm9ubWVudAotdGhh
dCBkb2VzIG5vdCBzdXBwb3J0IGFsbCB0aGUgcmVxdWlyZWQgZmVhdHVyZXMgKGRlYXRoIHRlc3Rz
IiIiKQotICAgICAgaWYgSVNfV0lORE9XUzoKLSAgICAgICAgbWVzc2FnZSArPSAoCi0gICAgICAg
ICAgICAiIiJcbmFuZCB0eXBlZCB0ZXN0cykuIFBsZWFzZSBjaGVjayB0aGF0IHlvdSBhcmUgdXNp
bmcgVkMrKyA4LjAgU1AxCi1vciBoaWdoZXIgYXMgeW91ciBjb21waWxlci4iIiIpCi0gICAgICBl
bHNlOgotICAgICAgICBtZXNzYWdlICs9ICIiIlxudHlwZWQgdGVzdHMsIGFuZCB0aHJlYWRzKS4g
IFBsZWFzZSBnZW5lcmF0ZSB0aGUKLWdvbGRlbiBmaWxlIHVzaW5nIGEgYmluYXJ5IGJ1aWx0IHdp
dGggdGhvc2UgZmVhdHVyZXMgZW5hYmxlZC4iIiIKK3RoYXQgZG9lcyBub3Qgc3VwcG9ydCBhbGwg
dGhlIHJlcXVpcmVkIGZlYXR1cmVzIChkZWF0aCB0ZXN0cywgdHlwZWQgdGVzdHMsCithbmQgbXVs
dGlwbGUgdGhyZWFkcykuICBQbGVhc2UgZ2VuZXJhdGUgdGhlIGdvbGRlbiBmaWxlIHVzaW5nIGEg
YmluYXJ5IGJ1aWx0Cit3aXRoIHRob3NlIGZlYXR1cmVzIGVuYWJsZWQuIiIiKQogCiAgICAgICBz
eXMuc3RkZXJyLndyaXRlKG1lc3NhZ2UpCiAgICAgICBzeXMuZXhpdCgxKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF8uY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0Xy5jYwppbmRleCAyNzNl
OGU5M2ViMDU5ZjVkYjY5MzdjOGM3ZDc3NzY2Zjg3ODA1MjcwLi4xMDcwYTlmMjZmZTUwOTg4Zjgw
YjNjNjdkOWQwNDZhMmI1YmY5OWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0Xy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0Xy5jYwpAQCAtMjcsMTMgKzI3LDE2IEBACiAvLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQSB1bml0IHRlc3QgZm9yIEdvb2dsZSBU
ZXN0IGl0c2VsZi4gIFRoaXMgdmVyaWZpZXMgdGhhdCB0aGUgYmFzaWMKLS8vIGNvbnN0cnVjdHMg
b2YgR29vZ2xlIFRlc3Qgd29yay4KKy8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgZmlsZSBpcyB0byBn
ZW5lcmF0ZSBHb29nbGUgVGVzdCBvdXRwdXQgdW5kZXIKKy8vIHZhcmlvdXMgY29uZGl0aW9ucy4g
IFRoZSBvdXRwdXQgd2lsbCB0aGVuIGJlIHZlcmlmaWVkIGJ5CisvLyBndGVzdF9vdXRwdXRfdGVz
dC5weSB0byBlbnN1cmUgdGhhdCBHb29nbGUgVGVzdCBnZW5lcmF0ZXMgdGhlCisvLyBkZXNpcmVk
IG1lc3NhZ2VzLiAgVGhlcmVmb3JlLCBtb3N0IHRlc3RzIGluIHRoaXMgZmlsZSBhcmUgTUVBTlQg
VE8KKy8vIEZBSUwuCiAvLwogLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgogCiAvLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBH
b29nbGUgVGVzdCdzCiAvLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rl
c3QtaW50ZXJuYWwtaW5sLmggaXMKQEAgLTU1LDggKzU4LDYgQEAgdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OlRocmVhZFdpdGhQYXJhbTsKICNlbmRpZgogCiBuYW1lc3BhY2UgcG9zaXggPSA6OnRl
c3Rpbmc6OmludGVybmFsOjpwb3NpeDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmc7
Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVkX3B0cjsKIAogLy8gVGVzdHMgY2F0Y2hp
bmcgZmF0YWwgZmFpbHVyZXMuCiAKQEAgLTg3LDYgKzg4LDM1IEBAIFRFU1QoUGFzc2luZ1Rlc3Qs
IFBhc3NpbmdUZXN0MSkgewogVEVTVChQYXNzaW5nVGVzdCwgUGFzc2luZ1Rlc3QyKSB7CiB9CiAK
Ky8vIFRlc3RzIHRoYXQgcGFyYW1ldGVycyBvZiBmYWlsaW5nIHBhcmFtZXRlcml6ZWQgdGVzdHMg
YXJlIHByaW50ZWQgaW4gdGhlCisvLyBmYWlsaW5nIHRlc3Qgc3VtbWFyeS4KK2NsYXNzIEZhaWxp
bmdQYXJhbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHt9OworCitU
RVNUX1AoRmFpbGluZ1BhcmFtVGVzdCwgRmFpbHMpIHsKKyAgRVhQRUNUX0VRKDEsIEdldFBhcmFt
KCkpOworfQorCisvLyBUaGlzIGdlbmVyYXRlcyBhIHRlc3Qgd2hpY2ggd2lsbCBmYWlsLiBHb29n
bGUgVGVzdCBpcyBleHBlY3RlZCB0byBwcmludAorLy8gaXRzIHBhcmFtZXRlciB3aGVuIGl0IG91
dHB1dHMgdGhlIGxpc3Qgb2YgYWxsIGZhaWxlZCB0ZXN0cy4KK0lOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QKFByaW50aW5nRmFpbGluZ1BhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgIEZhaWxp
bmdQYXJhbVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXMoMikp
OworCitzdGF0aWMgY29uc3QgY2hhciBrR29sZGVuU3RyaW5nW10gPSAiXCJMaW5lXDAgMVwiXG5M
aW5lIDIiOworCitURVNUKE5vbmZhdGFsRmFpbHVyZVRlc3QsIEVzY2FwZXNTdHJpbmdPcGVyYW5k
cykgeworICBzdGQ6OnN0cmluZyBhY3R1YWwgPSAiYWN0dWFsIFwic3RyaW5nXCIiOworICBFWFBF
Q1RfRVEoa0dvbGRlblN0cmluZywgYWN0dWFsKTsKKworICBjb25zdCBjaGFyKiBnb2xkZW4gPSBr
R29sZGVuU3RyaW5nOworICBFWFBFQ1RfRVEoZ29sZGVuLCBhY3R1YWwpOworfQorCitURVNUKE5v
bmZhdGFsRmFpbHVyZVRlc3QsIERpZmZGb3JMb25nU3RyaW5ncykgeworICBzdGQ6OnN0cmluZyBn
b2xkZW5fc3RyKGtHb2xkZW5TdHJpbmcsIHNpemVvZihrR29sZGVuU3RyaW5nKSAtIDEpOworICBF
WFBFQ1RfRVEoZ29sZGVuX3N0ciwgIkxpbmUgMiIpOworfQorCiAvLyBUZXN0cyBjYXRjaGluZyBh
IGZhdGFsIGZhaWx1cmUgaW4gYSBzdWJyb3V0aW5lLgogVEVTVChGYXRhbEZhaWx1cmVUZXN0LCBG
YXRhbEZhaWx1cmVJblN1YnJvdXRpbmUpIHsKICAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVy
ZSB0aGF0IHggc2hvdWxkIGJlIDEpXG4iKTsKQEAgLTIwNywxMyArMjM3LDEzIEBAIFRFU1QoU0NP
UEVEX1RSQUNFVGVzdCwgQ2FuQmVSZXBlYXRlZCkgewogCiAgIHsKICAgICBTQ09QRURfVFJBQ0Uo
IkMiKTsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFu
ZCBzaG91bGQgY29udGFpbiAiCi0gICAgICAgICAgICAgICAgICA8PCAidHJhY2UgcG9pbnQgQSwg
QiwgYW5kIEMuIjsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0
ZWQsIGFuZCBzaG91bGQgIgorICAgICAgICAgICAgICAgICAgPDwgImNvbnRhaW4gdHJhY2UgcG9p
bnQgQSwgQiwgYW5kIEMuIjsKICAgfQogCiAgIFNDT1BFRF9UUkFDRSgiRCIpOwotICBBRERfRkFJ
TFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiAi
Ci0gICAgICAgICAgICAgICAgPDwgInRyYWNlIHBvaW50IEEsIEIsIGFuZCBELiI7CisgIEFERF9G
QUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCAiCisgICAg
ICAgICAgICAgICAgPDwgImNvbnRhaW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEQuIjsKIH0KIAog
I2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKQEAgLTM2NCw2ICszOTQsNyBAQCBjbGFzcyBGYXRhbEZh
aWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAg
ICAgICAgICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVz
dCBmaXh0dXJlIGMndG9yICIKICAgICAgICAgICAgICAgICAgIDw8ICJoYWQgYSBmYXRhbCBmYWls
dXJlLiI7CiAgIH0KKwogIHByaXZhdGU6CiAgIHZvaWQgSW5pdCgpIHsKICAgICBGQUlMKCkgPDwg
IkV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IuIjsKQEAgLTQy
NywxMzcgKzQ1OCwxMCBAQCBURVNUX0YoRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QsIEZhaWx1cmVJ
blNldFVwKSB7CiAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyBTZXRV
cCgpIGZhaWxlZC4iOwogfQogCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotCi0vLyBUaGlzIGdyb3Vw
IG9mIHRlc3RzIHZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3QgaGFuZGxlcyBTRUggYW5kIEMrKwot
Ly8gZXhjZXB0aW9ucyBjb3JyZWN0bHkuCi0KLS8vIEEgZnVuY3Rpb24gdGhhdCB0aHJvd3MgYW4g
U0VIIGV4Y2VwdGlvbi4KLXN0YXRpYyB2b2lkIFRocm93U0VIKCkgewotICBpbnQqIHAgPSBOVUxM
OwotICAqcCA9IDA7ICAvLyBSYWlzZXMgYW4gYWNjZXNzIHZpb2xhdGlvbi4KLX0KLQotLy8gVGVz
dHMgZXhjZXB0aW9ucyB0aHJvd24gaW4gdGhlIHRlc3QgZml4dHVyZSBjb25zdHJ1Y3Rvci4KLWNs
YXNzIEV4Y2VwdGlvbkluRml4dHVyZUN0b3JUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewot
IHByb3RlY3RlZDoKLSAgRXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3QoKSB7Ci0gICAgcHJpbnRm
KCIoZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiB0aHJvd24gZXhjZXB0aW9uICIKLSAgICAgICAgICAg
ImluIHRoZSB0ZXN0IGZpeHR1cmUncyBjb25zdHJ1Y3RvcilcbiIpOwotCi0gICAgVGhyb3dTRUgo
KTsKLSAgfQotCi0gIHZpcnR1YWwgfkV4Y2VwdGlvbkluRml4dHVyZUN0b3JUZXN0KCkgewotICAg
IERlaW5pdCgpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIEZBSUwoKSA8
PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIFNldFVwKCkuICAiCi0gICAgICAgICAgIDw8ICJXZSBz
aG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgdGhyZXcuIjsK
LSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBGQUlMKCkgPDwgIlVORVhQ
RUNURUQgZmFpbHVyZSBpbiBUZWFyRG93bigpLiAgIgotICAgICAgICAgICA8PCAiV2Ugc2hvdWxk
IG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yIHRocmV3LiI7Ci0gIH0K
LSBwcml2YXRlOgotICB2b2lkIERlaW5pdCgpIHsKLSAgICBGQUlMKCkgPDwgIlVORVhQRUNURUQg
ZmFpbHVyZSBpbiB0aGUgZCd0b3IuICAiCi0gICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIg
Z2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgdGhyZXcuIjsKLSAgfQotfTsKLQot
VEVTVF9GKEV4Y2VwdGlvbkluRml4dHVyZUN0b3JUZXN0LCBFeGNlcHRpb25JbkZpeHR1cmVDdG9y
KSB7Ci0gIEZBSUwoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIHRoZSB0ZXN0IGZ1bmN0aW9u
LiAgIgotICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgdGhlIHRlc3Qg
Zml4dHVyZSBjJ3RvciB0aHJldy4iOwotfQotCi0vLyBUZXN0cyBleGNlcHRpb25zIHRocm93biBp
biBTZXRVcCgpLgotY2xhc3MgRXhjZXB0aW9uSW5TZXRVcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIH5FeGNlcHRpb25JblNldFVwVGVzdCgpIHsK
LSAgICBEZWluaXQoKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBwcmlu
dGYoIihleHBlY3RpbmcgMyBmYWlsdXJlcylcbiIpOwotCi0gICAgVGhyb3dTRUgoKTsKLSAgfQot
Ci0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZh
aWx1cmUgIzIsIGluIFRlYXJEb3duKCkuIjsKLSAgfQotIHByaXZhdGU6Ci0gIHZvaWQgRGVpbml0
KCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4
dHVyZSBkJ3Rvci4iOwotICB9Ci19OwotCi1URVNUX0YoRXhjZXB0aW9uSW5TZXRVcFRlc3QsIEV4
Y2VwdGlvbkluU2V0VXApIHsKLSAgRkFJTCgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gdGhl
IHRlc3QgZnVuY3Rpb24uICAiCi0gICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJl
LCBhcyBTZXRVcCgpIHRocmV3LiI7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVGVhckRvd24oKSBhbmQg
dGhlIHRlc3QgZml4dHVyZSBkJ3RvciBhcmUgYWx3YXlzIGNhbGxlZCwKLS8vIGV2ZW4gd2hlbiB0
aGUgdGVzdCBmdW5jdGlvbiB0aHJvd3MgYW4gZXhjZXB0aW9uLgotY2xhc3MgRXhjZXB0aW9uSW5U
ZXN0RnVuY3Rpb25UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAg
dmlydHVhbCB+RXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0KCkgewotICAgIERlaW5pdCgpOwot
ICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0
ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4iOwotICB9Ci0gcHJpdmF0ZToKLSAgdm9pZCBE
ZWluaXQoKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVz
dCBmaXh0dXJlIGQndG9yLiI7Ci0gIH0KLX07Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIHRlc3QgZml4
dHVyZSBkJ3RvciBpcyBhbHdheXMgY2FsbGVkLCBldmVuIHdoZW4gdGhlCi0vLyB0ZXN0IGZ1bmN0
aW9uIHRocm93cyBhbiBTRUggZXhjZXB0aW9uLgotVEVTVF9GKEV4Y2VwdGlvbkluVGVzdEZ1bmN0
aW9uVGVzdCwgU0VIKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyAzIGZhaWx1cmVzKVxuIik7Ci0K
LSAgVGhyb3dTRUgoKTsKLX0KLQotI2lmIEdURVNUX0hBU19FWENFUFRJT05TCi0KLS8vIFRlc3Rz
IHRoYXQgdGhlIHRlc3QgZml4dHVyZSBkJ3RvciBpcyBhbHdheXMgY2FsbGVkLCBldmVuIHdoZW4g
dGhlCi0vLyB0ZXN0IGZ1bmN0aW9uIHRocm93cyBhIEMrKyBleGNlcHRpb24uICBXZSBkbyB0aGlz
IG9ubHkgd2hlbgotLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMgaXMgbm9uLXplcm8sIGkuZS4gQysr
IGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQuCi1URVNUX0YoRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25U
ZXN0LCBDcHBFeGNlcHRpb24pIHsKLSAgdGhyb3cgMTsKLX0KLQotLy8gVGVzdHMgZXhjZXB0aW9u
cyB0aHJvd24gaW4gVGVhckRvd24oKS4KLWNsYXNzIEV4Y2VwdGlvbkluVGVhckRvd25UZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB+RXhjZXB0aW9u
SW5UZWFyRG93blRlc3QoKSB7Ci0gICAgRGVpbml0KCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKSB7Ci0gICAgdGhyb3cgMTsKLSAgfQotIHByaXZhdGU6Ci0gIHZvaWQgRGVpbml0
KCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZml4
dHVyZSBkJ3Rvci4iOwotICB9Ci19OwotCi1URVNUX0YoRXhjZXB0aW9uSW5UZWFyRG93blRlc3Qs
IEV4Y2VwdGlvbkluVGVhckRvd24pIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMp
XG4iKTsKK1RFU1QoQWRkRmFpbHVyZUF0VGVzdCwgTWVzc2FnZUNvbnRhaW5zU3BlY2lmaWVkRmls
ZUFuZExpbmVOdW1iZXIpIHsKKyAgQUREX0ZBSUxVUkVfQVQoImZvby5jYyIsIDQyKSA8PCAiRXhw
ZWN0ZWQgZmFpbHVyZSBpbiBmb28uY2MiOwogfQogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19FWENF
UFRJT05TCi0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCiAjaWYgR1RFU1RfSVNfVEhS
RUFEU0FGRQogCiAvLyBBIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KQEAgLTYxMCw3ICs1
MTQsOCBAQCBjbGFzcyBEZWF0aFRlc3RBbmRNdWx0aVRocmVhZHNUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgewogCiAgcHJpdmF0ZToKICAgU3Bhd25UaHJlYWROb3RpZmljYXRpb25zIG5vdGlm
aWNhdGlvbnNfOwotICBzY29wZWRfcHRyPFRocmVhZFdpdGhQYXJhbTxTcGF3blRocmVhZE5vdGlm
aWNhdGlvbnMqPiA+IHRocmVhZF87CisgIHRlc3Rpbmc6OmludGVybmFsOjpzY29wZWRfcHRyPFRo
cmVhZFdpdGhQYXJhbTxTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMqPiA+CisgICAgICB0aHJlYWRf
OwogfTsKIAogI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCkBAIC04NTAsNiArNzU1LDMy
IEBAIFRFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dz
KSB7CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKIAorLy8gVGhpcyAjaWZkZWYg
YmxvY2sgdGVzdHMgdGhlIG91dHB1dCBvZiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorCisj
aWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKKworc3RkOjpzdHJpbmcgUGFyYW1OYW1lRnVuYyhjb25z
dCB0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHN0ZDo6c3RyaW5nPiYgaW5mbykgeworICByZXR1cm4g
aW5mby5wYXJhbTsKK30KKworY2xhc3MgUGFyYW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3RX
aXRoUGFyYW08c3RkOjpzdHJpbmc+IHsKK307CisKK1RFU1RfUChQYXJhbVRlc3QsIFN1Y2Nlc3Mp
IHsKKyAgRVhQRUNUX0VRKCJhIiwgR2V0UGFyYW0oKSk7Cit9CisKK1RFU1RfUChQYXJhbVRlc3Qs
IEZhaWx1cmUpIHsKKyAgRVhQRUNUX0VRKCJiIiwgR2V0UGFyYW0oKSkgPDwgIkV4cGVjdGVkIGZh
aWx1cmUiOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChQcmludGluZ1N0cmluZ3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICBQYXJhbVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0aW5nOjpWYWx1ZXMoc3RkOjpzdHJpbmcoImEiKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICBQYXJhbU5hbWVGdW5jKTsKKworI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAor
CiAvLyBUaGlzICNpZmRlZiBibG9jayB0ZXN0cyB0aGUgb3V0cHV0IG9mIHR5cGVkIHRlc3RzLgog
I2lmIEdURVNUX0hBU19UWVBFRF9URVNUCiAKQEAgLTkwMSw3ICs4MzIsNyBAQCBJTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUChVbnNpZ25lZCwgVHlwZWRUZXN0UCwgVW5zaWduZWRUeXBlcyk7
CiBURVNUKEFEZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0KSB7CiB9CiAKLSNpZiBHVEVTVF9IQVNf
VFlQRURfVEVTVAorIyBpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAogCiAvLyBXZSByZWx5IG9uIHRo
ZSBnb2xkZW4gZmlsZSB0byB2ZXJpZnkgdGhhdCB0eXBlZCB0ZXN0cyB3aG9zZSB0ZXN0CiAvLyBj
YXNlIG5hbWUgZW5kcyB3aXRoIERlYXRoVGVzdCBhcmUgcnVuIGZpcnN0LgpAQCAtOTE2LDkgKzg0
Nyw5IEBAIFRZUEVEX1RFU1RfQ0FTRShBVHlwZWREZWF0aFRlc3QsIE51bWVyaWNUeXBlcyk7CiBU
WVBFRF9URVNUKEFUeXBlZERlYXRoVGVzdCwgU2hvdWxkUnVuRmlyc3QpIHsKIH0KIAotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RF
U1QKIAotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUX1AKKyMgaWYgR1RFU1RfSEFTX1RZUEVEX1RF
U1RfUAogCiAKIC8vIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIHZlcmlmeSB0aGF0IHR5
cGUtcGFyYW1ldGVyaXplZCB0ZXN0cwpAQCAtOTM3LDcgKzg2OCw3IEBAIFJFR0lTVEVSX1RZUEVE
X1RFU1RfQ0FTRV9QKEFUeXBlUGFyYW1EZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0KTsKIAogSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEFUeXBlUGFyYW1EZWF0aFRlc3QsIE51bWVy
aWNUeXBlcyk7CiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorIyBlbmRpZiAg
Ly8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9U
RVNUCiAKQEAgLTEwODUsMTAgKzEwMTYsNiBAQCBjbGFzcyBCYXJFbnZpcm9ubWVudCA6IHB1Ymxp
YyB0ZXN0aW5nOjpFbnZpcm9ubWVudCB7CiAgIH0KIH07CiAKLUdURVNUX0RFRklORV9ib29sXyhp
bnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMsIGZhbHNlLAotICAgICAg
ICAgICAgICAgICAgICJUaGlzIGZsYWcgY2F1c2VzIHRoZSBwcm9ncmFtIHRvIHNraXAgdGVzdCBl
bnZpcm9ubWVudCAiCi0gICAgICAgICAgICAgICAgICAgInRlc3RzIGFuZCBhZCBob2MgdGVzdHMu
Iik7Ci0KIC8vIFRoZSBtYWluIGZ1bmN0aW9uLgogLy8KIC8vIFRoZSBpZGVhIGlzIHRvIHVzZSBH
b29nbGUgVGVzdCB0byBydW4gYWxsIHRoZSB0ZXN0cyB3ZSBoYXZlIGRlZmluZWQgKHNvbWUKQEAg
LTExMDUsMjQgKzEwMzIsMjQgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CiAg
IC8vIGdsb2JhbCBzaWRlIGVmZmVjdHMuICBUaGUgZm9sbG93aW5nIGxpbmUgc2VydmVzIGFzIGEg
c2FuaXR5IHRlc3QKICAgLy8gZm9yIGl0LgogICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJn
YywgYXJndik7Ci0gIGlmIChhcmdjID49IDIgJiYKLSAgICAgIFN0cmluZyhhcmd2WzFdKSA9PSAi
LS1ndGVzdF9pbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMiKQotICAg
IEdURVNUX0ZMQUcoaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzKSA9
IHRydWU7CisgIGJvb2wgaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3Rz
ID0KKyAgICAgIHN0ZDo6Y291bnQoYXJndiwgYXJndiArIGFyZ2MsCisgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nKCJpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMi
KSkgPiAwOwogCiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKICAgaWYgKHRlc3Rpbmc6OmludGVy
bmFsOjpHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KSAhPSAiIikgewogICAgIC8v
IFNraXAgdGhlIHVzdWFsIG91dHB1dCBjYXB0dXJpbmcgaWYgd2UncmUgcnVubmluZyBhcyB0aGUg
Y2hpbGQKICAgICAvLyBwcm9jZXNzIG9mIGFuIHRocmVhZHNhZmUtc3R5bGUgZGVhdGggdGVzdC4K
LSNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MKICAgICBwb3NpeDo6
RlJlb3BlbigibnVsOiIsICJ3Iiwgc3Rkb3V0KTsKLSNlbHNlCisjIGVsc2UKICAgICBwb3NpeDo6
RlJlb3BlbigiL2Rldi9udWxsIiwgInciLCBzdGRvdXQpOwotI2VuZGlmICAvLyBHVEVTVF9PU19X
SU5ET1dTCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAgICAgcmV0dXJuIFJVTl9BTExf
VEVTVFMoKTsKICAgfQogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCi0gIGlmIChH
VEVTVF9GTEFHKGludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cykpCisg
IGlmIChpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMpCiAgICAgcmV0
dXJuIFJVTl9BTExfVEVTVFMoKTsKIAogICAvLyBSZWdpc3RlcnMgdHdvIGdsb2JhbCB0ZXN0IGVu
dmlyb25tZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0CmluZGV4IGVjNjA0MzdhY2FhNzY0
MGRmYmYzZGIyODNjZjFkMTUwMzRjMDYyMmUuLjIyMjNkNTYwZTJkOWMyYWU0NzBiNmEyY2NlYzRk
Y2JlMThmYTU3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fbGluLnR4dApAQCAtNSw5ICs1LDkgQEAg
VmFsdWUgb2Y6IGZhbHNlCiAgIEFjdHVhbDogZmFsc2UKIEV4cGVjdGVkOiB0cnVlCiBndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IDMKLUV4cGVjdGVkOiAyCi0bWzA7
MzJtWz09PT09PT09PT1dIBtbbVJ1bm5pbmcgNjAgdGVzdHMgZnJvbSAyNSB0ZXN0IGNhc2VzLgor
ICAgICAgRXhwZWN0ZWQ6IDIKK1RvIGJlIGVxdWFsIHRvOiAzCisbWzA7MzJtWz09PT09PT09PT1d
IBtbbVJ1bm5pbmcgNjYgdGVzdHMgZnJvbSAyOSB0ZXN0IGNhc2VzLgogG1swOzMybVstLS0tLS0t
LS0tXSAbW21HbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCiBGb29FbnZpcm9ubWVudDo6
U2V0VXAoKSBjYWxsZWQuCiBCYXJFbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuCkBAIC0zMSwy
MCArMzEsNDQgQEAgQmFyRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLgogG1swOzMybVsgICAg
ICAgT0sgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDEKIBtbMDszMm1bIFJVTiAgICAgIF0g
G1ttUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCiAbWzA7MzJtWyAgICAgICBPSyBdIBtbbVBhc3Np
bmdUZXN0LlBhc3NpbmdUZXN0MgorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20g
Tm9uZmF0YWxGYWlsdXJlVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21Ob25mYXRhbEZhaWx1
cmVUZXN0LkVzY2FwZXNTdHJpbmdPcGVyYW5kcworZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZh
aWx1cmUKKyAgICAgIEV4cGVjdGVkOiBrR29sZGVuU3RyaW5nCisgICAgICBXaGljaCBpczogIlwi
TGluZSIKK1RvIGJlIGVxdWFsIHRvOiBhY3R1YWwKKyAgICAgIFdoaWNoIGlzOiAiYWN0dWFsIFwi
c3RyaW5nXCIiCitndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQorICAgICAgRXhwZWN0
ZWQ6IGdvbGRlbgorICAgICAgV2hpY2ggaXM6ICJcIkxpbmUiCitUbyBiZSBlcXVhbCB0bzogYWN0
dWFsCisgICAgICBXaGljaCBpczogImFjdHVhbCBcInN0cmluZ1wiIgorG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkVzY2FwZXNTdHJpbmdPcGVyYW5kcworG1swOzMy
bVsgUlVOICAgICAgXSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkRpZmZGb3JMb25nU3RyaW5ncwor
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKKyAgICAgIEV4cGVjdGVkOiBnb2xkZW5f
c3RyCisgICAgICBXaGljaCBpczogIlwiTGluZVwwIDFcIlxuTGluZSAyIgorVG8gYmUgZXF1YWwg
dG86ICJMaW5lIDIiCitXaXRoIGRpZmY6CitAQCAtMSwyIEBACistXCJMaW5lXDAgMVwiCisgTGlu
ZSAyCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uZmF0YWxGYWlsdXJlVGVzdC5EaWZmRm9y
TG9uZ1N0cmluZ3MKIBtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMyB0ZXN0cyBmcm9tIEZhdGFsRmFp
bHVyZVRlc3QKIBtbMDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZh
aWx1cmVJblN1YnJvdXRpbmUKIChleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUg
MSkKIGd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogeAotICBBY3R1
YWw6IDIKLUV4cGVjdGVkOiAxCisgICAgICBFeHBlY3RlZDogMQorVG8gYmUgZXF1YWwgdG86IHgK
KyAgICAgIFdoaWNoIGlzOiAyCiAbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRl
c3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCiAbWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFs
RmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCiAoZXhwZWN0aW5nIGEg
ZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCiBndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFp
bHVyZQotVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQorICAgICAgRXhwZWN0
ZWQ6IDEKK1RvIGJlIGVxdWFsIHRvOiB4CisgICAgICBXaGljaCBpczogMgogG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGlu
ZQogG1swOzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVy
ZUluU3Vicm91dGluZQogKGV4cGVjdGluZyBhIGZhaWx1cmUgb24gZmFsc2UpCkBAIC04MywzOSAr
MTA3LDM5IEBAIFRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEg
dHJhY2UuCiAbWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJbkxv
b3AKIChleHBlY3RlZCB0byBmYWlsKQogZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUK
LVZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMQotRXhwZWN0ZWQ6IDIKKyAgICAgIEV4cGVjdGVkOiAy
CitUbyBiZSBlcXVhbCB0bzogbgorICAgICAgV2hpY2ggaXM6IDEKIEdvb2dsZSBUZXN0IHRyYWNl
OgogZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGkgPSAxCiBndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogRmFpbHVyZQotVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQorICAgICAg
RXhwZWN0ZWQ6IDEKK1RvIGJlIGVxdWFsIHRvOiBuCisgICAgICBXaGljaCBpczogMgogR29vZ2xl
IFRlc3QgdHJhY2U6CiBndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogaSA9IDIKIBtbMDszMW1bICBG
QUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAogG1swOzMybVsgUlVOICAg
ICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJyb3V0aW5lCiAoZXhwZWN0ZWQgdG8g
ZmFpbCkKIGd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogbgotICBB
Y3R1YWw6IDEKLUV4cGVjdGVkOiAyCisgICAgICBFeHBlY3RlZDogMgorVG8gYmUgZXF1YWwgdG86
IG4KKyAgICAgIFdoaWNoIGlzOiAxCiBHb29nbGUgVGVzdCB0cmFjZToKIGd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBuID0gMQogZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVl
IG9mOiBuCi0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKKyAgICAgIEV4cGVjdGVkOiAxCitUbyBi
ZSBlcXVhbCB0bzogbgorICAgICAgV2hpY2ggaXM6IDIKIEdvb2dsZSBUZXN0IHRyYWNlOgogZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4gPSAyCiAbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BF
RF9UUkFDRVRlc3QuV29ya3NJblN1YnJvdXRpbmUKIBtbMDszMm1bIFJVTiAgICAgIF0gG1ttU0NP
UEVEX1RSQUNFVGVzdC5DYW5CZU5lc3RlZAogKGV4cGVjdGVkIHRvIGZhaWwpCiBndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAyCi1FeHBlY3Rl
ZDogMQorICAgICAgRXhwZWN0ZWQ6IDEKK1RvIGJlIGVxdWFsIHRvOiBuCisgICAgICBXaGljaCBp
czogMgogR29vZ2xlIFRlc3QgdHJhY2U6CiBndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogbiA9IDIK
IGd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiAKQEAgLTIzNSw2ICsyNTksMTIgQEAgZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKIEZhaWxlZAogRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4g
dGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KIBtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWls
dXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0
ZXN0IGZyb20gQWRkRmFpbHVyZUF0VGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21BZGRGYWls
dXJlQXRUZXN0Lk1lc3NhZ2VDb250YWluc1NwZWNpZmllZEZpbGVBbmRMaW5lTnVtYmVyCitmb28u
Y2M6NDI6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSBpbiBmb28uY2MKKxtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttQWRkRmFpbHVyZUF0VGVzdC5NZXNzYWdlQ29udGFpbnNTcGVjaWZp
ZWRGaWxlQW5kTGluZU51bWJlcgogG1swOzMybVstLS0tLS0tLS0tXSAbW200IHRlc3RzIGZyb20g
TWl4ZWRVcFRlc3RDYXNlVGVzdAogG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENh
c2VUZXN0LkZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28KIBtbMDszMm1bICAgICAgIE9LIF0gG1tt
TWl4ZWRVcFRlc3RDYXNlVGVzdC5GaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vCkBAIC00MDcsMzMg
KzQzNywzMyBAQCBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCiAbWzA7MzJtWyAgICAgICBPSyBd
IBtbbVR5cGVkVGVzdC8wLlN1Y2Nlc3MKIBtbMDszMm1bIFJVTiAgICAgIF0gG1ttVHlwZWRUZXN0
LzAuRmFpbHVyZQogZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiBU
eXBlUGFyYW0oKQotICBBY3R1YWw6IDAKLUV4cGVjdGVkOiAxCisgICAgICBFeHBlY3RlZDogMQor
VG8gYmUgZXF1YWwgdG86IFR5cGVQYXJhbSgpCisgICAgICBXaGljaCBpczogMAogRXhwZWN0ZWQg
ZmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3QvMC5GYWlsdXJlCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbVR5cGVkVGVzdC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9
IGludAogG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVW5zaWduZWQvVHlwZWRU
ZXN0UC8wLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBjaGFyCiAbWzA7MzJtWyBSVU4gICAg
ICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5TdWNjZXNzCiAbWzA7MzJtWyAgICAgICBPSyBd
IBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5TdWNjZXNzCiAbWzA7MzJtWyBSVU4gICAgICBdIBtb
bVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5GYWlsdXJlCiBndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmFpbHVyZQotVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogXDAKLUV4cGVjdGVkOiAx
VQotV2hpY2ggaXM6IDEKKyAgICAgIEV4cGVjdGVkOiAxVQorICAgICAgV2hpY2ggaXM6IDEKK1Rv
IGJlIGVxdWFsIHRvOiBUeXBlUGFyYW0oKQorICAgICAgV2hpY2ggaXM6ICdcMCcKIEV4cGVjdGVk
IGZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZh
aWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1
cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKIBtbMDszMm1bLS0tLS0tLS0tLV0g
G1ttMiB0ZXN0cyBmcm9tIFVuc2lnbmVkL1R5cGVkVGVzdFAvMSwgd2hlcmUgVHlwZVBhcmFtID0g
dW5zaWduZWQgaW50CiAbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAv
MS5TdWNjZXNzCiAbWzA7MzJtWyAgICAgICBPSyBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5T
dWNjZXNzCiAbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWls
dXJlCiBndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IFR5cGVQYXJh
bSgpCi0gIEFjdHVhbDogMAotRXhwZWN0ZWQ6IDFVCi1XaGljaCBpczogMQorICAgICAgRXhwZWN0
ZWQ6IDFVCisgICAgICBXaGljaCBpczogMQorVG8gYmUgZXF1YWwgdG86IFR5cGVQYXJhbSgpCisg
ICAgICBXaGljaCBpczogMAogRXhwZWN0ZWQgZmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21VbnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21V
bnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQg
aW50CiAbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTQgdGVzdHMgZnJvbSBFeHBlY3RGYWlsdXJlVGVz
dAogG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZh
aWx1cmUKIChleHBlY3RpbmcgMSBmYWlsdXJlKQpAQCAtNTY0LDYgKzU5NCwyMyBAQCBndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQogRmFpbGVkCiBFeHBlY3RlZCBub24tZmF0YWwgZmFp
bHVyZS4KIBtbMDszMW1bICBGQUlMRUQgIF0gG1ttU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVw
b3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCisbWzA7MzJtWy0tLS0tLS0tLS1d
IBtbbTEgdGVzdCBmcm9tIFByaW50aW5nRmFpbGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1UZXN0Cisb
WzA7MzJtWyBSVU4gICAgICBdIBtbbVByaW50aW5nRmFpbGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1U
ZXN0LkZhaWxzLzAKK2d0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCisgICAgICBFeHBl
Y3RlZDogMQorVG8gYmUgZXF1YWwgdG86IEdldFBhcmFtKCkKKyAgICAgIFdoaWNoIGlzOiAyCisb
WzA7MzFtWyAgRkFJTEVEICBdIBtbbVByaW50aW5nRmFpbGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1U
ZXN0LkZhaWxzLzAsIHdoZXJlIEdldFBhcmFtKCkgPSAyCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtb
bTIgdGVzdHMgZnJvbSBQcmludGluZ1N0cmluZ3MvUGFyYW1UZXN0CisbWzA7MzJtWyBSVU4gICAg
ICBdIBtbbVByaW50aW5nU3RyaW5ncy9QYXJhbVRlc3QuU3VjY2Vzcy9hCisbWzA7MzJtWyAgICAg
ICBPSyBdIBtbbVByaW50aW5nU3RyaW5ncy9QYXJhbVRlc3QuU3VjY2Vzcy9hCisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbVByaW50aW5nU3RyaW5ncy9QYXJhbVRlc3QuRmFpbHVyZS9hCitndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQorICAgICAgRXhwZWN0ZWQ6ICJiIgorVG8gYmUgZXF1
YWwgdG86IEdldFBhcmFtKCkKKyAgICAgIFdoaWNoIGlzOiAiYSIKK0V4cGVjdGVkIGZhaWx1cmUK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttUHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5GYWlsdXJl
L2EsIHdoZXJlIEdldFBhcmFtKCkgPSAiYSIKIBtbMDszMm1bLS0tLS0tLS0tLV0gG1ttR2xvYmFs
IHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCiBCYXJFbnZpcm9ubWVudDo6VGVhckRvd24oKSBj
YWxsZWQuCiBndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQpAQCAtNTczLDkgKzYyMCwx
MSBAQCBGb29FbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuCiBndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogRmFpbHVyZQogRmFpbGVkCiBFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotG1swOzMy
bVs9PT09PT09PT09XSAbW202MCB0ZXN0cyBmcm9tIDI1IHRlc3QgY2FzZXMgcmFuLgotG1swOzMy
bVsgIFBBU1NFRCAgXSAbW20yMSB0ZXN0cy4KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttMzkgdGVz
dHMsIGxpc3RlZCBiZWxvdzoKKxtbMDszMm1bPT09PT09PT09PV0gG1ttNjYgdGVzdHMgZnJvbSAy
OSB0ZXN0IGNhc2VzIHJhbi4KKxtbMDszMm1bICBQQVNTRUQgIF0gG1ttMjIgdGVzdHMuCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbTQ0IHRlc3RzLCBsaXN0ZWQgYmVsb3c6CisbWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbU5vbmZhdGFsRmFpbHVyZVRlc3QuRXNjYXBlc1N0cmluZ09wZXJhbmRzCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbU5vbmZhdGFsRmFpbHVyZVRlc3QuRGlmZkZvckxvbmdTdHJpbmdz
CiAbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5T
dWJyb3V0aW5lCiAbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxG
YWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCiAbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFp
bHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCkBAIC01OTAsNiArNjM5LDcgQEAg
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KIBtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWls
dXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCiAbWzA7MzFt
WyAgRkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVw
CiAbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJ
blNldFVwCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUFkZEZhaWx1cmVBdFRlc3QuTWVzc2FnZUNv
bnRhaW5zU3BlY2lmaWVkRmlsZUFuZExpbmVOdW1iZXIKIBtbMDszMW1bICBGQUlMRUQgIF0gG1tt
TWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbAogG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCiAbWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RX
aXRoVGhpc05hbWVTaG91bGRGYWlsCkBAIC02MTUsOCArNjY1LDEwIEBAIEV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuCiAbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFk
c1Rlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCiAbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZh
aWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCiAbWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbVNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdC5JbnRlcmNlcHRP
bmx5Q3VycmVudFRocmVhZAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21QcmludGluZ0ZhaWxpbmdQ
YXJhbXMvRmFpbGluZ1BhcmFtVGVzdC5GYWlscy8wLCB3aGVyZSBHZXRQYXJhbSgpID0gMgorG1sw
OzMxbVsgIEZBSUxFRCAgXSAbW21QcmludGluZ1N0cmluZ3MvUGFyYW1UZXN0LkZhaWx1cmUvYSwg
d2hlcmUgR2V0UGFyYW0oKSA9ICJhIgogCi0zOSBGQUlMRUQgVEVTVFMKKzQ0IEZBSUxFRCBURVNU
UwogG1swOzMzbSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNUCiAKIBtbbU5vdGU6IEdvb2dsZSBU
ZXN0IGZpbHRlciA9IEZhdGFsRmFpbHVyZVRlc3QuKjpMb2dnaW5nVGVzdC4qCkBAIC02MjYsMTYg
KzY3OCwxNiBAQCBFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgogWyBSVU4gICAgICBdIEZhdGFsRmFp
bHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCiAoZXhwZWN0aW5nIGEgZmFpbHVyZSB0
aGF0IHggc2hvdWxkIGJlIDEpCiBndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFs
dWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQorICAgICAgRXhwZWN0ZWQ6IDEKK1Rv
IGJlIGVxdWFsIHRvOiB4CisgICAgICBXaGljaCBpczogMgogWyAgRkFJTEVEICBdIEZhdGFsRmFp
bHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lICg/IG1zKQogWyBSVU4gICAgICBdIEZh
dGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCiAoZXhwZWN0aW5n
IGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCiBndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmFpbHVyZQotVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQorICAgICAgRXhw
ZWN0ZWQ6IDEKK1RvIGJlIGVxdWFsIHRvOiB4CisgICAgICBXaGljaCBpczogMgogWyAgRkFJTEVE
ICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lICg/IG1z
KQogWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0
aW5lCiAoZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiBmYWxzZSkKQEAgLTY3MCw4ICs3MjIsNiBAQCBF
eHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDYKIFsgIEZBSUxFRCAgXSBMb2dn
aW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwogCiAgNCBGQUlMRUQgVEVT
VFMKLSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNUCi0KIE5vdGU6IEdvb2dsZSBUZXN0IGZpbHRl
ciA9ICpESVNBQkxFRF8qCiBbPT09PT09PT09PV0gUnVubmluZyAxIHRlc3QgZnJvbSAxIHRlc3Qg
Y2FzZS4KIFstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCkBAIC02
ODIsNyArNzMyLDcgQEAgTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gKkRJU0FCTEVEXyoKIFs9
PT09PT09PT09XSAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZSByYW4uCiBbICBQQVNTRUQgIF0gMSB0
ZXN0LgogTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gUGFzc2luZ1Rlc3QuKgotTm90ZTogVGhp
cyBpcyB0ZXN0IHNoYXJkIDEgb2YgMi4KK05vdGU6IFRoaXMgaXMgdGVzdCBzaGFyZCAyIG9mIDIu
CiBbPT09PT09PT09PV0gUnVubmluZyAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZS4KIFstLS0tLS0t
LS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCiBbLS0tLS0tLS0tLV0gMSB0ZXN0
IGZyb20gUGFzc2luZ1Rlc3QKQEAgLTY5MSw2ICs3NDEsMyBAQCBOb3RlOiBUaGlzIGlzIHRlc3Qg
c2hhcmQgMSBvZiAyLgogWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXIt
ZG93bgogWz09PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlIHJhbi4KIFsgIFBBU1NF
RCAgXSAxIHRlc3QuCi0KLSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNUCi0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX3dp
bi50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dv
bGRlbl93aW4udHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTNjM2FhZmMzMWY1
ZjEwMDVjNzc0MjgzZTAwYmRiMDlkZTgxZjY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0
cHV0X3Rlc3RfZ29sZGVuX3dpbi50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2MDUgKzAsMCBAQAot
VGhlIG5vbi10ZXN0IHBhcnQgb2YgdGhlIGNvZGUgaXMgZXhwZWN0ZWQgdG8gaGF2ZSAyIGZhaWx1
cmVzLgotCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBmYWxzZQot
ICBBY3R1YWw6IGZhbHNlCi1FeHBlY3RlZDogdHJ1ZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IGVycm9yOiBWYWx1ZSBvZjogMwotRXhwZWN0ZWQ6IDIKLVs9PT09PT09PT09XSBSdW5uaW5nIDYx
IHRlc3RzIGZyb20gMjcgdGVzdCBjYXNlcy4KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZp
cm9ubWVudCBzZXQtdXAuCi1Gb29FbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuCi1CYXJFbnZp
cm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gQURlYXRo
VGVzdAotWyBSVU4gICAgICBdIEFEZWF0aFRlc3QuU2hvdWxkUnVuRmlyc3QKLVsgICAgICAgT0sg
XSBBRGVhdGhUZXN0LlNob3VsZFJ1bkZpcnN0Ci1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gQVR5
cGVkRGVhdGhUZXN0LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGludAotWyBSVU4gICAgICBdIEFUeXBl
ZERlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci1bICAgICAgIE9LIF0gQVR5cGVkRGVhdGhUZXN0
LzAuU2hvdWxkUnVuRmlyc3QKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBBVHlwZWREZWF0aFRl
c3QvMSwgd2hlcmUgVHlwZVBhcmFtID0gZG91YmxlCi1bIFJVTiAgICAgIF0gQVR5cGVkRGVhdGhU
ZXN0LzEuU2hvdWxkUnVuRmlyc3QKLVsgICAgICAgT0sgXSBBVHlwZWREZWF0aFRlc3QvMS5TaG91
bGRSdW5GaXJzdAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIE15L0FUeXBlUGFyYW1EZWF0aFRl
c3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci1bIFJVTiAgICAgIF0gTXkvQVR5cGVQYXJhbURl
YXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci1bICAgICAgIE9LIF0gTXkvQVR5cGVQYXJhbURlYXRo
VGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTXkvQVR5cGVQ
YXJhbURlYXRoVGVzdC8xLCB3aGVyZSBUeXBlUGFyYW0gPSBkb3VibGUKLVsgUlVOICAgICAgXSBN
eS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKLVsgICAgICAgT0sgXSBNeS9B
VHlwZVBhcmFtRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKLVstLS0tLS0tLS0tXSAyIHRlc3Rz
IGZyb20gUGFzc2luZ1Rlc3QKLVsgUlVOICAgICAgXSBQYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDEK
LVsgICAgICAgT0sgXSBQYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDEKLVsgUlVOICAgICAgXSBQYXNz
aW5nVGVzdC5QYXNzaW5nVGVzdDIKLVsgICAgICAgT0sgXSBQYXNzaW5nVGVzdC5QYXNzaW5nVGVz
dDIKLVstLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdAotWyBSVU4gICAg
ICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5n
IGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
ZXJyb3I6IFZhbHVlIG9mOiB4Ci0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLVsgIEZBSUxFRCAg
XSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotWyBSVU4gICAgICBd
IEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi0oZXhwZWN0
aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogZXJyb3I6IFZhbHVlIG9mOiB4Ci0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLVsgIEZBSUxF
RCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQotWyBS
VU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0o
ZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiBmYWxzZSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBl
cnJvcjogVmFsdWUgb2Y6IGZhbHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4cGVjdGVkOiB0cnVlCi1b
ICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUK
LVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBMb2dnaW5nVGVzdAotWyBSVU4gICAgICBdIExvZ2dp
bmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCi0oZXhwZWN0aW5nIDIgZmFp
bHVyZXMgb24gKDMpID49IChhW2ldKSkKLWkgPT0gMAotaSA9PSAxCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgOQot
aSA9PSAyCi1pID09IDMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6
ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA2Ci1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3Qu
SW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLVstLS0tLS0tLS0tXSA1IHRlc3RzIGZy
b20gU0NPUEVEX1RSQUNFVGVzdAotWyBSVU4gICAgICBdIFNDT1BFRF9UUkFDRVRlc3QuT2JleXNT
Y29wZXMKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9y
OiBGYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEg
dHJhY2UuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotVGhpcyBmYWls
dXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGhhdmUgYSB0cmFjZS4KLUdvb2dsZSBUZXN0IHRy
YWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEV4cGVjdGVkIHRyYWNlCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBh
bmQgc2hvdWxkbid0IGhhdmUgYSB0cmFjZS4KLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0
Lk9iZXlzU2NvcGVzCi1bIFJVTiAgICAgIF0gU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAot
KGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVl
IG9mOiBuCi0gIEFjdHVhbDogMQotRXhwZWN0ZWQ6IDIKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGkgPSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJy
b3I6IFZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLUdvb2dsZSBUZXN0IHRy
YWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGkgPSAyCi1bICBGQUlMRUQgIF0gU0NPUEVE
X1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAotWyBSVU4gICAgICBdIFNDT1BFRF9UUkFDRVRlc3QuV29y
a3NJblN1YnJvdXRpbmUKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IGVycm9yOiBWYWx1ZSBvZjogbgotICBBY3R1YWw6IDEKLUV4cGVjdGVkOiAyCi1Hb29nbGUg
VGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBuID0gMQotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogbgotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAx
Ci1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBuID0gMgotWyAg
RkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuV29ya3NJblN1YnJvdXRpbmUKLVsgUlVOICAgICAg
XSBTQ09QRURfVFJBQ0VUZXN0LkNhbkJlTmVzdGVkCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAyCi1FeHBl
Y3RlZDogMQotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogbiA9
IDIKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiAKLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJBQ0VU
ZXN0LkNhbkJlTmVzdGVkCi1bIFJVTiAgICAgIF0gU0NPUEVEX1RSQUNFVGVzdC5DYW5CZVJlcGVh
dGVkCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjog
RmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFj
ZSBwb2ludCBBLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
QQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLVRoaXMgZmFpbHVyZSBp
cyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEgYW5kIEIuCi1Hb29n
bGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBCCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogQQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLVRo
aXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEs
IEIsIGFuZCBDLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
QwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEIKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBB
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEQuCi1H
b29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBECi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEEKLVsgIEZBSUxFRCAg
XSBTQ09QRURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJv
bSBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QKLVsgUlVOICAgICAgXSBO
b25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0
b3IKLShleHBlY3RpbmcgNSBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJv
cjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGMndG9y
LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1
cmUgIzIsIGluIFNldFVwKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxl
ZAotRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgYm9keS4KLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICM0LCBpbiBUZWFyRG93
bi4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWls
dXJlICM1LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIE5vbkZhdGFs
RmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotWy0t
LS0tLS0tLS1dIDEgdGVzdCBmcm9tIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVz
dAotWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWls
dXJlSW5Db25zdHJ1Y3RvcgotKGV4cGVjdGluZyAyIGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0
IGZpeHR1cmUgYyd0b3IuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAot
RXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxF
RCAgXSBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3Ry
dWN0b3IKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVz
dAotWyBSVU4gICAgICBdIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVw
Ci0oZXhwZWN0aW5nIDQgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6
IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVz
dCBmdW5jdGlvbi4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBl
Y3RlZCBmYWlsdXJlICMzLCBpbiBUZWFyRG93bigpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRoZSB0ZXN0IGZpeHR1cmUg
ZCd0b3IuCi1bICBGQUlMRUQgIF0gTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUlu
U2V0VXAKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBGYXRhbEZhaWx1cmVJblNldFVwVGVzdAot
WyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi0oZXhw
ZWN0aW5nIDMgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxl
ZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUg
IzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJl
SW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBFeGNl
cHRpb25JbkZpeHR1cmVDdG9yVGVzdAotWyBSVU4gICAgICBdIEV4Y2VwdGlvbkluRml4dHVyZUN0
b3JUZXN0LkV4Y2VwdGlvbkluRml4dHVyZUN0b3IKLShleHBlY3RpbmcgYSBmYWlsdXJlIG9uIHRo
cm93biBleGNlcHRpb24gaW4gdGhlIHRlc3QgZml4dHVyZSdzIGNvbnN0cnVjdG9yKQotdW5rbm93
biBmaWxlOiBlcnJvcjogRXhjZXB0aW9uIHRocm93biB3aXRoIGNvZGUgMHhjMDAwMDAwNSBpbiB0
aGUgdGVzdCBmaXh0dXJlJ3MgY29uc3RydWN0b3IuCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20g
RXhjZXB0aW9uSW5TZXRVcFRlc3QKLVsgUlVOICAgICAgXSBFeGNlcHRpb25JblNldFVwVGVzdC5F
eGNlcHRpb25JblNldFVwCi0oZXhwZWN0aW5nIDMgZmFpbHVyZXMpCi11bmtub3duIGZpbGU6IGVy
cm9yOiBFeGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAweGMwMDAwMDA1IGluIFNldFVwKCkuCi1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAj
MiwgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVk
Ci1FeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJ
TEVEICBdIEV4Y2VwdGlvbkluU2V0VXBUZXN0LkV4Y2VwdGlvbkluU2V0VXAKLVstLS0tLS0tLS0t
XSAyIHRlc3RzIGZyb20gRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0Ci1bIFJVTiAgICAgIF0g
RXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0LlNFSAotKGV4cGVjdGluZyAzIGZhaWx1cmVzKQot
dW5rbm93biBmaWxlOiBlcnJvcjogRXhjZXB0aW9uIHRocm93biB3aXRoIGNvZGUgMHhjMDAwMDAw
NSBpbiB0aGUgdGVzdCBib2R5LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWls
ZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRlYXJEb3duKCkuCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3Qg
Zml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3Qu
U0VICi1bIFJVTiAgICAgIF0gRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0LkNwcEV4Y2VwdGlv
bgotdW5rbm93biBmaWxlOiBlcnJvcjogRXhjZXB0aW9uIHRocm93biB3aXRoIGNvZGUgMHhlMDZk
NzM2MyBpbiB0aGUgdGVzdCBib2R5LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBG
YWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRlYXJEb3duKCkuCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRl
c3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRl
c3QuQ3BwRXhjZXB0aW9uCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRXhjZXB0aW9uSW5UZWFy
RG93blRlc3QKLVsgUlVOICAgICAgXSBFeGNlcHRpb25JblRlYXJEb3duVGVzdC5FeGNlcHRpb25J
blRlYXJEb3duCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMpCi11bmtub3duIGZpbGU6IGVycm9yOiBF
eGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAweGUwNmQ3MzYzIGluIFRlYXJEb3duKCkuCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwg
aW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAgXSBFeGNlcHRpb25JblRlYXJE
b3duVGVzdC5FeGNlcHRpb25JblRlYXJEb3duCi1bLS0tLS0tLS0tLV0gNCB0ZXN0cyBmcm9tIE1p
eGVkVXBUZXN0Q2FzZVRlc3QKLVsgUlVOICAgICAgXSBNaXhlZFVwVGVzdENhc2VUZXN0LkZpcnN0
VGVzdEZyb21OYW1lc3BhY2VGb28KLVsgICAgICAgT0sgXSBNaXhlZFVwVGVzdENhc2VUZXN0LkZp
cnN0VGVzdEZyb21OYW1lc3BhY2VGb28KLVsgUlVOICAgICAgXSBNaXhlZFVwVGVzdENhc2VUZXN0
LlNlY29uZFRlc3RGcm9tTmFtZXNwYWNlRm9vCi1bICAgICAgIE9LIF0gTWl4ZWRVcFRlc3RDYXNl
VGVzdC5TZWNvbmRUZXN0RnJvbU5hbWVzcGFjZUZvbwotWyBSVU4gICAgICBdIE1peGVkVXBUZXN0
Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwKLWd0ZXN0LmNjOiM6IGVycm9yOiBGYWlsZWQKLUFsbCB0
ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJl
Ci1jbGFzcy4gIEhvd2V2ZXIsIGluIHRlc3QgY2FzZSBNaXhlZFVwVGVzdENhc2VUZXN0LAoteW91
IGRlZmluZWQgdGVzdCBGaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vIGFuZCB0ZXN0IFRoaXNTaG91
bGRGYWlsCi11c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAgVGhpcyBj
YW4gaGFwcGVuIGlmCi10aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5hbWVzcGFj
ZXMgb3IgdHJhbnNsYXRpb24KLXVuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZb3Ugc2hv
dWxkIHByb2JhYmx5IHJlbmFtZSBvbmUKLW9mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMg
aW50byBkaWZmZXJlbnQgdGVzdCBjYXNlcy4KLVsgIEZBSUxFRCAgXSBNaXhlZFVwVGVzdENhc2VU
ZXN0LlRoaXNTaG91bGRGYWlsCi1bIFJVTiAgICAgIF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlz
U2hvdWxkRmFpbFRvbwotZ3Rlc3QuY2M6IzogZXJyb3I6IEZhaWxlZAotQWxsIHRlc3RzIGluIHRo
ZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAg
SG93ZXZlciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVRlc3QsCi15b3UgZGVmaW5lZCB0
ZXN0IEZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28gYW5kIHRlc3QgVGhpc1Nob3VsZEZhaWxUb28K
LXVzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBoYXBw
ZW4gaWYKLXRoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0
cmFuc2xhdGlvbgotdW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQgcHJv
YmFibHkgcmVuYW1lIG9uZQotb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRp
ZmZlcmVudCB0ZXN0IGNhc2VzLgotWyAgRkFJTEVEICBdIE1peGVkVXBUZXN0Q2FzZVRlc3QuVGhp
c1Nob3VsZEZhaWxUb28KLVstLS0tLS0tLS0tXSAyIHRlc3RzIGZyb20gTWl4ZWRVcFRlc3RDYXNl
V2l0aFNhbWVUZXN0TmFtZVRlc3QKLVsgUlVOICAgICAgXSBNaXhlZFVwVGVzdENhc2VXaXRoU2Ft
ZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotWyAgICAg
ICBPSyBdIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RX
aXRoVGhpc05hbWVTaG91bGRGYWlsCi1bIFJVTiAgICAgIF0gTWl4ZWRVcFRlc3RDYXNlV2l0aFNh
bWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLWd0ZXN0
LmNjOiM6IGVycm9yOiBGYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVz
dCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcy4gIEhvd2V2ZXIsIGluIHRlc3QgY2Fz
ZSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdCwKLXlvdSBkZWZpbmVkIHRlc3Qg
VGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwgYW5kIHRlc3QgVGhlU2Vjb25kVGVz
dFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLXVzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJl
IGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKLXRoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBk
aWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlvbgotdW5pdHMgYW5kIGhhdmUgdGhlIHNh
bWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVuYW1lIG9uZQotb2YgdGhlIGNsYXNzZXMg
dG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0ZXN0IGNhc2VzLgotWyAgRkFJTEVEICBd
IE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhp
c05hbWVTaG91bGRGYWlsCi1bLS0tLS0tLS0tLV0gMiB0ZXN0cyBmcm9tIFRFU1RfRl9iZWZvcmVf
VEVTVF9pbl9zYW1lX3Rlc3RfY2FzZQotWyBSVU4gICAgICBdIFRFU1RfRl9iZWZvcmVfVEVTVF9p
bl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0YKLVsgICAgICAgT0sgXSBURVNUX0Zf
YmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GCi1bIFJVTiAg
ICAgIF0gVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RF
U1RBbmRTaG91bGRGYWlsCi1ndGVzdC5jYzojOiBlcnJvcjogRmFpbGVkCi1BbGwgdGVzdHMgaW4g
dGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3Ms
IHNvIG1peGluZyBURVNUX0YgYW5kIFRFU1QgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIGlzCi1pbGxl
Z2FsLiAgSW4gdGVzdCBjYXNlIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSwK
LXRlc3QgRGVmaW5lZFVzaW5nVEVTVF9GIGlzIGRlZmluZWQgdXNpbmcgVEVTVF9GIGJ1dAotdGVz
dCBEZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxkRmFpbCBpcyBkZWZpbmVkIHVzaW5nIFRFU1QuICBZ
b3UgcHJvYmFibHkKLXdhbnQgdG8gY2hhbmdlIHRoZSBURVNUIHRvIFRFU1RfRiBvciBtb3ZlIGl0
IHRvIGFub3RoZXIgdGVzdAotY2FzZS4KLVsgIEZBSUxFRCAgXSBURVNUX0ZfYmVmb3JlX1RFU1Rf
aW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwKLVstLS0tLS0t
LS0tXSAyIHRlc3RzIGZyb20gVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlCi1b
IFJVTiAgICAgIF0gVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRV
c2luZ1RFU1QKLVsgICAgICAgT0sgXSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nh
c2UuRGVmaW5lZFVzaW5nVEVTVAotWyBSVU4gICAgICBdIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9z
YW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsCi1ndGVzdC5jYzoj
OiBlcnJvcjogRmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNl
IHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3MsIHNvIG1peGluZyBURVNUX0YgYW5kIFRFU1Qg
aW4gdGhlIHNhbWUgdGVzdCBjYXNlIGlzCi1pbGxlZ2FsLiAgSW4gdGVzdCBjYXNlIFRFU1RfYmVm
b3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZSwKLXRlc3QgRGVmaW5lZFVzaW5nVEVTVF9GQW5k
U2hvdWxkRmFpbCBpcyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKLXRlc3QgRGVmaW5lZFVzaW5n
VEVTVCBpcyBkZWZpbmVkIHVzaW5nIFRFU1QuICBZb3UgcHJvYmFibHkKLXdhbnQgdG8gY2hhbmdl
IHRoZSBURVNUIHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRvIGFub3RoZXIgdGVzdAotY2FzZS4KLVsg
IEZBSUxFRCAgXSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVz
aW5nVEVTVF9GQW5kU2hvdWxkRmFpbAotWy0tLS0tLS0tLS1dIDggdGVzdHMgZnJvbSBFeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0Ci1bIFJVTiAgICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVz
dC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLVsgICAgICAgT0sgXSBFeHBlY3ROb25mYXRh
bEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotWyBSVU4gICAgICBdIEV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxWYXJpYWJsZXMKLVsgICAg
ICAgT0sgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsVmFyaWFi
bGVzCi1bIFJVTiAgICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1doZW5U
aGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi1bICAgICAgIE9LIF0gRXhwZWN0Tm9uZmF0YWxGYWls
dXJlVGVzdC5TdWNjZWVkc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi1bIFJVTiAgICAg
IF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZh
aWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVk
OiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotWyAgRkFJTEVEICBd
IEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWls
dXJlCi1bIFJVTiAgICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVy
ZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6
IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMiBmYWls
dXJlcwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVk
Ci1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSAxLgotCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
IDIuCi0KLVsgIEZBSUxFRCAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRo
ZXJlQXJlVHdvTm9uZmF0YWxGYWlsdXJlcwotWyBSVU4gICAgICBdIEV4cGVjdE5vbmZhdGFsRmFp
bHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZh
aWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUK
LSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWls
ZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLVsgIEZBSUxFRCAgXSBFeHBlY3ROb25mYXRh
bEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLVsgUlVOICAgICAg
XSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLShl
eHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5vbi1m
YXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotWyAgRkFJTEVEICBdIEV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotWyBSVU4gICAgICBd
IEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi0oZXhw
ZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0
YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBFeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotWy0tLS0tLS0tLS1dIDgg
dGVzdHMgZnJvbSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0Ci1bIFJVTiAgICAgIF0gRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLVsgICAgICAgT0sgXSBF
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotWyBSVU4g
ICAgICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxTdGF0aWNWYXJp
YWJsZXMKLVsgICAgICAgT0sgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxv
Y2FsU3RhdGljVmFyaWFibGVzCi1bIFJVTiAgICAgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5T
dWNjZWVkc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi1bICAgICAgIE9LIF0gRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi1bIFJVTiAg
ICAgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1
cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAx
IGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKLVsgUlVOICAg
ICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWls
dXJlcwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6
IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDIgZmFpbHVyZXMKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgot
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0
ZWQgZmF0YWwgZmFpbHVyZS4KLQotWyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qu
RmFpbHNXaGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzCi1bIFJVTiAgICAgIF0gRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi0oZXhwZWN0
aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWls
dXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVy
ZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLVsgIEZBSUxFRCAgXSBF
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUK
LVsgUlVOICAgICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJl
dHVybnMKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVk
OiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhw
ZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi1bIFJVTiAgICAg
IF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLShleHBl
Y3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZh
aWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxGYWls
dXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLVstLS0tLS0tLS0tXSAyIHRlc3RzIGZy
b20gVHlwZWRUZXN0LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGludAotWyBSVU4gICAgICBdIFR5cGVk
VGVzdC8wLlN1Y2Nlc3MKLVsgICAgICAgT0sgXSBUeXBlZFRlc3QvMC5TdWNjZXNzCi1bIFJVTiAg
ICAgIF0gVHlwZWRUZXN0LzAuRmFpbHVyZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9y
OiBWYWx1ZSBvZjogVHlwZVBhcmFtKCkKLSAgQWN0dWFsOiAwCi1FeHBlY3RlZDogMQotRXhwZWN0
ZWQgZmFpbHVyZQotWyAgRkFJTEVEICBdIFR5cGVkVGVzdC8wLkZhaWx1cmUKLVstLS0tLS0tLS0t
XSAyIHRlc3RzIGZyb20gVW5zaWduZWQvVHlwZWRUZXN0UC8wLCB3aGVyZSBUeXBlUGFyYW0gPSB1
bnNpZ25lZCBjaGFyCi1bIFJVTiAgICAgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8wLlN1Y2Nlc3MK
LVsgICAgICAgT0sgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAuU3VjY2VzcwotWyBSVU4gICAgICBd
IFVuc2lnbmVkL1R5cGVkVGVzdFAvMC5GYWlsdXJlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
ZXJyb3I6IFZhbHVlIG9mOiBUeXBlUGFyYW0oKQotICBBY3R1YWw6IFwwCi1FeHBlY3RlZDogMVUK
LVdoaWNoIGlzOiAxCi1FeHBlY3RlZCBmYWlsdXJlCi1bICBGQUlMRUQgIF0gVW5zaWduZWQvVHlw
ZWRUZXN0UC8wLkZhaWx1cmUKLVstLS0tLS0tLS0tXSAyIHRlc3RzIGZyb20gVW5zaWduZWQvVHlw
ZWRUZXN0UC8xLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKLVsgUlVOICAgICAgXSBV
bnNpZ25lZC9UeXBlZFRlc3RQLzEuU3VjY2VzcwotWyAgICAgICBPSyBdIFVuc2lnbmVkL1R5cGVk
VGVzdFAvMS5TdWNjZXNzCi1bIFJVTiAgICAgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1
cmUKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IFR5cGVQYXJhbSgp
Ci0gIEFjdHVhbDogMAotRXhwZWN0ZWQ6IDFVCi1XaGljaCBpczogMQotRXhwZWN0ZWQgZmFpbHVy
ZQotWyAgRkFJTEVEICBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlCi1bLS0tLS0tLS0t
LV0gNCB0ZXN0cyBmcm9tIEV4cGVjdEZhaWx1cmVUZXN0Ci1bIFJVTiAgICAgIF0gRXhwZWN0RmFp
bHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0
LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBTdWNjZXNzOgotU3VjY2VlZGVkCi0KLShleHBlY3RpbmcgMSBm
YWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAg
QWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFp
bGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQotKGV4cGVjdGluZyAxIGZhaWx1cmUp
Ci1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZSBjb250YWluaW5n
ICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUgZXhwZWN0ZWQuIgotICBBY3R1YWw6Ci1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwg
ZmFpbHVyZS4KLQotWyAgRkFJTEVEICBdIEV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFp
bHVyZQotWyBSVU4gICAgICBdIEV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVy
ZQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEg
bm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1
Y2Nlc3M6Ci1TdWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBl
cnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZh
aWx1cmUuCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVj
dGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgbm9uLWZhdGFs
IGZhaWx1cmUuIgotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFs
IGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi1bICBGQUlM
RUQgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi1bIFJVTiAgICAg
IF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0oZXhw
ZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBm
YWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBTdWNjZXNzOgotU3Vj
Y2VlZGVkCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVj
dGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4K
LQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEg
ZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUgZXhwZWN0
ZWQuIgotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToK
LUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotWyAgRkFJTEVEICBdIEV4cGVjdEZh
aWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotWyBSVU4gICAgICBdIEV4
cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotKGV4cGVj
dGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFs
IGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1T
dWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhw
ZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0K
LShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5v
bi1mYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1cmUu
IgotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6
Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQgIF0gRXhw
ZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi1bLS0tLS0t
LS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCi1CYXJFbnZpcm9ubWVudDo6
VGVhckRvd24oKSBjYWxsZWQuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxl
ZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi1Gb29FbnZpcm9ubWVudDo6VGVhckRvd24o
KSBjYWxsZWQuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0
ZWQgZmF0YWwgZmFpbHVyZS4KLVs9PT09PT09PT09XSA2MSB0ZXN0cyBmcm9tIDI3IHRlc3QgY2Fz
ZXMgcmFuLgotWyAgUEFTU0VEICBdIDIxIHRlc3RzLgotWyAgRkFJTEVEICBdIDQwIHRlc3RzLCBs
aXN0ZWQgYmVsb3c6Ci1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJ
blN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUlu
TmVzdGVkU3Vicm91dGluZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxG
YWlsdXJlSW5TdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5n
TG9nZ2luZ0FuZEFzc2VydGlvbnMKLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0Lk9iZXlz
U2NvcGVzCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAotWyAgRkFJ
TEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuV29ya3NJblN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBT
Q09QRURfVFJBQ0VUZXN0LkNhbkJlTmVzdGVkCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVz
dC5DYW5CZVJlcGVhdGVkCi1bICBGQUlMRUQgIF0gTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29u
c3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi1bICBGQUlMRUQgIF0gRmF0YWxGYWls
dXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi1bICBGQUlM
RUQgIF0gTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKLVsgIEZBSUxF
RCAgXSBGYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotWyAgRkFJTEVEICBd
IEV4Y2VwdGlvbkluRml4dHVyZUN0b3JUZXN0LkV4Y2VwdGlvbkluRml4dHVyZUN0b3IKLVsgIEZB
SUxFRCAgXSBFeGNlcHRpb25JblNldFVwVGVzdC5FeGNlcHRpb25JblNldFVwCi1bICBGQUlMRUQg
IF0gRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0LlNFSAotWyAgRkFJTEVEICBdIEV4Y2VwdGlv
bkluVGVzdEZ1bmN0aW9uVGVzdC5DcHBFeGNlcHRpb24KLVsgIEZBSUxFRCAgXSBFeGNlcHRpb25J
blRlYXJEb3duVGVzdC5FeGNlcHRpb25JblRlYXJEb3duCi1bICBGQUlMRUQgIF0gTWl4ZWRVcFRl
c3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbAotWyAgRkFJTEVEICBdIE1peGVkVXBUZXN0Q2FzZVRl
c3QuVGhpc1Nob3VsZEZhaWxUb28KLVsgIEZBSUxFRCAgXSBNaXhlZFVwVGVzdENhc2VXaXRoU2Ft
ZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotWyAgRkFJ
TEVEICBdIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdU
RVNUQW5kU2hvdWxkRmFpbAotWyAgRkFJTEVEICBdIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1l
X3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsCi1bICBGQUlMRUQgIF0g
RXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1
cmUKLVsgIEZBSUxFRCAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJl
QXJlVHdvTm9uZmF0YWxGYWlsdXJlcwotWyAgRkFJTEVEICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVy
ZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVj
dE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotWyAgRkFJTEVE
ICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi1b
ICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRh
bEZhaWx1cmUKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRo
ZXJlQXJlVHdvRmF0YWxGYWlsdXJlcwotWyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRl
c3QuRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVj
dEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotWyAgRkFJTEVEICBd
IEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi1bICBGQUlM
RUQgIF0gVHlwZWRUZXN0LzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci1bICBGQUlM
RUQgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVu
c2lnbmVkIGNoYXIKLVsgIEZBSUxFRCAgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZSwg
d2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50Ci1bICBGQUlMRUQgIF0gRXhwZWN0RmFpbHVy
ZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCi1bICBGQUlMRUQgIF0gRXhwZWN0RmFpbHVyZVRlc3Qu
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi1bICBGQUlMRUQgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhw
ZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi1bICBGQUlMRUQgIF0gRXhwZWN0RmFpbHVyZVRl
c3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0KLTQwIEZBSUxFRCBURVNUUwot
ICBZT1UgSEFWRSAxIERJU0FCTEVEIFRFU1QKLQotTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0g
RmF0YWxGYWlsdXJlVGVzdC4qOkxvZ2dpbmdUZXN0LioKLVs9PT09PT09PT09XSBSdW5uaW5nIDQg
dGVzdHMgZnJvbSAyIHRlc3QgY2FzZXMuCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJv
bm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDMgdGVzdHMgZnJvbSBGYXRhbEZhaWx1cmVUZXN0
Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUK
LShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQot
WyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lICg/
IG1zKQotWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRT
dWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiB4Ci0gIEFjdHVhbDogMgotRXhw
ZWN0ZWQ6IDEKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVz
dGVkU3Vicm91dGluZSAoPyBtcykKLVsgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZh
dGFsRmFpbHVyZUluU3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgb24gZmFsc2UpCi1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBmYWxzZQotICBBY3R1YWw6
IGZhbHNlCi1FeHBlY3RlZDogdHJ1ZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9u
ZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lICg/IG1zKQotWy0tLS0tLS0tLS1dIDMgdGVzdHMgZnJv
bSBGYXRhbEZhaWx1cmVUZXN0ICg/IG1zIHRvdGFsKQotCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZy
b20gTG9nZ2luZ1Rlc3QKLVsgUlVOICAgICAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dn
aW5nQW5kQXNzZXJ0aW9ucwotKGV4cGVjdGluZyAyIGZhaWx1cmVzIG9uICgzKSA+PSAoYVtpXSkp
Ci1pID09IDAKLWkgPT0gMQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBFeHBlY3Rl
ZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDkKLWkgPT0gMgotaSA9PSAzCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6
IDMgdnMgNgotWyAgRkFJTEVEICBdIExvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRB
c3NlcnRpb25zICg/IG1zKQotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExvZ2dpbmdUZXN0ICg/
IG1zIHRvdGFsKQotCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1k
b3duCi1bPT09PT09PT09PV0gNCB0ZXN0cyBmcm9tIDIgdGVzdCBjYXNlcyByYW4uICg/IG1zIHRv
dGFsKQotWyAgUEFTU0VEICBdIDAgdGVzdHMuCi1bICBGQUlMRUQgIF0gNCB0ZXN0cywgbGlzdGVk
IGJlbG93OgotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJy
b3V0aW5lCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3Rl
ZFN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVy
ZUluU3Vicm91dGluZQotWyAgRkFJTEVEICBdIExvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dp
bmdBbmRBc3NlcnRpb25zCi0KLSA0IEZBSUxFRCBURVNUUwotICBZT1UgSEFWRSAxIERJU0FCTEVE
IFRFU1QKLQotTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gKkRJU0FCTEVEXyoKLVs9PT09PT09
PT09XSBSdW5uaW5nIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlLgotWy0tLS0tLS0tLS1dIEdsb2Jh
bCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBEaXNh
YmxlZFRlc3RzV2FybmluZ1Rlc3QKLVsgUlVOICAgICAgXSBEaXNhYmxlZFRlc3RzV2FybmluZ1Rl
c3QuRElTQUJMRURfQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnU3VwcHJlc3Nlc1dhcm5pbmcKLVsg
ICAgICAgT0sgXSBEaXNhYmxlZFRlc3RzV2FybmluZ1Rlc3QuRElTQUJMRURfQWxzb1J1bkRpc2Fi
bGVkVGVzdHNGbGFnU3VwcHJlc3Nlc1dhcm5pbmcKLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBl
bnZpcm9ubWVudCB0ZWFyLWRvd24KLVs9PT09PT09PT09XSAxIHRlc3QgZnJvbSAxIHRlc3QgY2Fz
ZSByYW4uCi1bICBQQVNTRUQgIF0gMSB0ZXN0LgotTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0g
UGFzc2luZ1Rlc3QuKgotTm90ZTogVGhpcyBpcyB0ZXN0IHNoYXJkIDEgb2YgMi4KLVs9PT09PT09
PT09XSBSdW5uaW5nIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlLgotWy0tLS0tLS0tLS1dIEdsb2Jh
bCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBQYXNz
aW5nVGVzdAotWyBSVU4gICAgICBdIFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgotWyAgICAgICBP
SyBdIFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVu
dmlyb25tZW50IHRlYXItZG93bgotWz09PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNl
IHJhbi4KLVsgIFBBU1NFRCAgXSAxIHRlc3QuCi0KLSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNU
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJlZF9p
bXBsX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcmVk
X2ltcGxfdW5pdHRlc3QuY2MKaW5kZXggZTdlZTU0YjU2ZDg2YjllYTU0YjcxNjEyNTg2OWFhMjg3
ZDEyNmJlNy4uYTg0ZWZmODYwYTRkN2RjOGI4NTYzZjhlMWU3ZjQ3OWUyOTJlYTMzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcmVkX2ltcGxfdW5pdHRl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcmVkX2ltcGxf
dW5pdHRlc3QuY2MKQEAgLTI3LDcgKzI3LDcgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIAotLy8gVGhpcyBmaWxlIGlzIEFVVE9NQVRJQ0FMTFkgR0VORVJBVEVEIG9uIDEwLzAy
LzIwMDggYnkgY29tbWFuZAorLy8gVGhpcyBmaWxlIGlzIEFVVE9NQVRJQ0FMTFkgR0VORVJBVEVE
IG9uIDEwLzMxLzIwMTEgYnkgY29tbWFuZAogLy8gJ2dlbl9ndGVzdF9wcmVkX2ltcGwucHkgNScu
ICBETyBOT1QgRURJVCBCWSBIQU5EIQogCiAvLyBSZWdyZXNzaW9uIHRlc3QgZm9yIGd0ZXN0X3By
ZWRfaW1wbC5oCkBAIC00OSw4ICs0OSw4IEBACiAKICNpbmNsdWRlIDxpb3N0cmVhbT4KIAotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+CisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKIAogLy8g
QSB1c2VyLWRlZmluZWQgZGF0YSB0eXBlLgogc3RydWN0IEJvb2wgewpAQCAtMTAzLDExICsxMDMs
MTAgQEAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRGb3JtYXRGdW5jdGlvbjEoY29uc3Qg
Y2hhciogZTEsCiAgIGlmIChQcmVkRnVuY3Rpb24xKHYxKSkKICAgICByZXR1cm4gdGVzdGluZzo6
QXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIHRlc3Rpbmc6Ok1lc3NhZ2UgbXNnOwotICBtc2cgPDwg
ZTEKKyAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwgZTEKICAg
ICAgIDw8ICIgaXMgZXhwZWN0ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgog
ICAgICAgPDwgdjEgPDwgIi4iOwotICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSht
c2cpOwogfQogCiAvLyBBIHVuYXJ5IHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rvci4KQEAgLTQ5
NCwxMSArNDkzLDEwIEBAIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rp
b24yKGNvbnN0IGNoYXIqIGUxLAogICBpZiAoUHJlZEZ1bmN0aW9uMih2MSwgdjIpKQogICAgIHJl
dHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgdGVzdGluZzo6TWVzc2FnZSBt
c2c7Ci0gIG1zZyA8PCBlMSA8PCAiICsgIiA8PCBlMgorICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0
aW9uRmFpbHVyZSgpCisgICAgICA8PCBlMSA8PCAiICsgIiA8PCBlMgogICAgICAgPDwgIiBpcyBl
eHBlY3RlZCB0byBiZSBwb3NpdGl2ZSwgYnV0IGV2YWx1YXRlcyB0byAiCiAgICAgICA8PCB2MSAr
IHYyIDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNnKTsKIH0K
IAogLy8gQSBiaW5hcnkgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdG9yLgpAQCAtOTI3LDExICs5
MjUsMTAgQEAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRGb3JtYXRGdW5jdGlvbjMoY29u
c3QgY2hhciogZTEsCiAgIGlmIChQcmVkRnVuY3Rpb24zKHYxLCB2MiwgdjMpKQogICAgIHJldHVy
biB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgdGVzdGluZzo6TWVzc2FnZSBtc2c7
Ci0gIG1zZyA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBlMworICByZXR1cm4gdGVz
dGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAi
ICsgIiA8PCBlMwogICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBiZSBwb3NpdGl2ZSwgYnV0IGV2
YWx1YXRlcyB0byAiCiAgICAgICA8PCB2MSArIHYyICsgdjMgPDwgIi4iOwotICByZXR1cm4gdGVz
dGluZzo6QXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogCiAvLyBBIHRlcm5hcnkgcHJlZGljYXRl
LWZvcm1hdHRlciBmdW5jdG9yLgpAQCAtMTQwMiwxMSArMTM5OSwxMCBAQCB0ZXN0aW5nOjpBc3Nl
cnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1bmN0aW9uNChjb25zdCBjaGFyKiBlMSwKICAgaWYgKFBy
ZWRGdW5jdGlvbjQodjEsIHYyLCB2MywgdjQpKQogICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRp
b25TdWNjZXNzKCk7CiAKLSAgdGVzdGluZzo6TWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBlMSA8PCAi
ICsgIiA8PCBlMiA8PCAiICsgIiA8PCBlMyA8PCAiICsgIiA8PCBlNAorICByZXR1cm4gdGVzdGlu
Zzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAiICsg
IiA8PCBlMyA8PCAiICsgIiA8PCBlNAogICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBiZSBwb3Np
dGl2ZSwgYnV0IGV2YWx1YXRlcyB0byAiCiAgICAgICA8PCB2MSArIHYyICsgdjMgKyB2NCA8PCAi
LiI7Ci0gIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIC8vIEEg
NC1hcnkgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdG9yLgpAQCAtMTkxOSwxMSArMTkxNSwxMCBA
QCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1bmN0aW9uNShjb25zdCBjaGFy
KiBlMSwKICAgaWYgKFByZWRGdW5jdGlvbjUodjEsIHYyLCB2MywgdjQsIHY1KSkKICAgICByZXR1
cm4gdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIHRlc3Rpbmc6Ok1lc3NhZ2UgbXNn
OwotICBtc2cgPDwgZTEgPDwgIiArICIgPDwgZTIgPDwgIiArICIgPDwgZTMgPDwgIiArICIgPDwg
ZTQgPDwgIiArICIgPDwgZTUKKyAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQor
ICAgICAgPDwgZTEgPDwgIiArICIgPDwgZTIgPDwgIiArICIgPDwgZTMgPDwgIiArICIgPDwgZTQg
PDwgIiArICIgPDwgZTUKICAgICAgIDw8ICIgaXMgZXhwZWN0ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1
dCBldmFsdWF0ZXMgdG8gIgogICAgICAgPDwgdjEgKyB2MiArIHYzICsgdjQgKyB2NSA8PCAiLiI7
Ci0gIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIC8vIEEgNS1h
cnkgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcmVtYXR1cmVfZXhpdF90ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcmVtYXR1cmVfZXhpdF90ZXN0LmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNiNGRjN2Q0M2ZkNmY0OGI5YWZhMzJmY2VhZTYzZGE4NTNjNjQ0MTgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZW1hdHVyZV9leGl0
X3Rlc3QuY2MKQEAgLTAsMCArMSwxMjcgQEAKKy8vIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5j
LgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBX
YW4pCisvLworLy8gVGVzdHMgdGhhdCBHb29nbGUgVGVzdCBtYW5pcHVsYXRlcyB0aGUgcHJlbWF0
dXJlLWV4aXQtZGV0ZWN0aW9uCisvLyBmaWxlIGNvcnJlY3RseS4KKworI2luY2x1ZGUgPHN0ZGlv
Lmg+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCit1c2luZyA6OnRlc3Rpbmc6OkluaXRH
b29nbGVUZXN0OwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0OwordXNpbmcgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6cG9zaXg6OkdldEVudjsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpT
dGF0OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OlN0YXRTdHJ1Y3Q7CisKK25h
bWVzcGFjZSB7CisKK2NsYXNzIFByZW1hdHVyZUV4aXRUZXN0IDogcHVibGljIFRlc3QgeworIHB1
YmxpYzoKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgZ2l2ZW4gZmlsZSBleGlzdHMuCisgIHN0
YXRpYyBib29sIEZpbGVFeGlzdHMoY29uc3QgY2hhciogZmlsZXBhdGgpIHsKKyAgICBTdGF0U3Ry
dWN0IHN0YXQ7CisgICAgcmV0dXJuIFN0YXQoZmlsZXBhdGgsICZzdGF0KSA9PSAwOworICB9CisK
KyBwcm90ZWN0ZWQ6CisgIFByZW1hdHVyZUV4aXRUZXN0KCkgeworICAgIHByZW1hdHVyZV9leGl0
X2ZpbGVfcGF0aF8gPSBHZXRFbnYoIlRFU1RfUFJFTUFUVVJFX0VYSVRfRklMRSIpOworCisgICAg
Ly8gTm9ybWFsaXplIE5VTEwgdG8gIiIgZm9yIGVhc2Ugb2YgaGFuZGxpbmcuCisgICAgaWYgKHBy
ZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8gPT0gTlVMTCkgeworICAgICAgcHJlbWF0dXJlX2V4aXRf
ZmlsZV9wYXRoXyA9ICIiOworICAgIH0KKyAgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhl
IHByZW1hdHVyZS1leGl0IGZpbGUgZXhpc3RzLgorICBib29sIFByZW1hdHVyZUV4aXRGaWxlRXhp
c3RzKCkgY29uc3QgeworICAgIHJldHVybiBGaWxlRXhpc3RzKHByZW1hdHVyZV9leGl0X2ZpbGVf
cGF0aF8pOworICB9CisKKyAgY29uc3QgY2hhciogcHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXzsK
K307CisKK3R5cGVkZWYgUHJlbWF0dXJlRXhpdFRlc3QgUHJlbWF0dXJlRXhpdERlYXRoVGVzdDsK
KworLy8gVGVzdHMgdGhhdDoKKy8vICAgLSB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZSBleGlzdHMg
ZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgYQorLy8gICAgIGRlYXRoIHRlc3QgKEVYUEVDVF9ERUFU
SCopLCBhbmQKKy8vICAgLSBhIGRlYXRoIHRlc3QgZG9lc24ndCBpbnRlcmZlcmUgd2l0aCB0aGUg
bWFpbiB0ZXN0IHByb2Nlc3MncworLy8gICAgIGhhbmRsaW5nIG9mIHRoZSBwcmVtYXR1cmUtZXhp
dCBmaWxlLgorVEVTVF9GKFByZW1hdHVyZUV4aXREZWF0aFRlc3QsIEZpbGVFeGlzdHNEdXJpbmdF
eGVjdXRpb25PZkRlYXRoVGVzdCkgeworICBpZiAoKnByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8g
PT0gJ1wwJykgeworICAgIHJldHVybjsKKyAgfQorCisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JU
RUQoeworICAgICAgLy8gSWYgdGhlIGZpbGUgZXhpc3RzLCBjcmFzaCB0aGUgcHJvY2VzcyBzdWNo
IHRoYXQgdGhlIG1haW4gdGVzdAorICAgICAgLy8gcHJvY2VzcyB3aWxsIGNhdGNoIHRoZSAoZXhw
ZWN0ZWQpIGNyYXNoIGFuZCByZXBvcnQgYSBzdWNjZXNzOworICAgICAgLy8gb3RoZXJ3aXNlIGRv
bid0IGNyYXNoLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBtYWluIHRlc3QgcHJvY2VzcworICAgICAg
Ly8gdG8gcmVwb3J0IHRoYXQgdGhlIGRlYXRoIHRlc3QgaGFzIGZhaWxlZC4KKyAgICAgIGlmIChQ
cmVtYXR1cmVFeGl0RmlsZUV4aXN0cygpKSB7CisgICAgICAgIGV4aXQoMSk7CisgICAgICB9Cisg
ICAgfSwgIiIpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlIGV4
aXN0cyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiBhCisvLyBub3JtYWwgKG5vbi1kZWF0aCkgdGVz
dC4KK1RFU1RfRihQcmVtYXR1cmVFeGl0VGVzdCwgUHJlbWF0dXJlRXhpdEZpbGVFeGlzdHNEdXJp
bmdUZXN0RXhlY3V0aW9uKSB7CisgIGlmICgqcHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXyA9PSAn
XDAnKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgRVhQRUNUX1RSVUUoUHJlbWF0dXJlRXhpdEZp
bGVFeGlzdHMoKSkKKyAgICAgIDw8ICIgZmlsZSAiIDw8IHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0
aF8KKyAgICAgIDw8ICIgc2hvdWxkIGV4aXN0IGR1cmluZyB0ZXN0IGV4ZWN1dGlvbiwgYnV0IGRv
ZXNuJ3QuIjsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFy
ICoqYXJndikgeworICBJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIGNvbnN0IGludCBl
eGl0X2NvZGUgPSBSVU5fQUxMX1RFU1RTKCk7CisKKyAgLy8gVGVzdCB0aGF0IHRoZSBwcmVtYXR1
cmUtZXhpdCBmaWxlIGlzIGRlbGV0ZWQgdXBvbiByZXR1cm4gZnJvbQorICAvLyBSVU5fQUxMX1RF
U1RTKCkuCisgIGNvbnN0IGNoYXIqIGNvbnN0IGZpbGVwYXRoID0gR2V0RW52KCJURVNUX1BSRU1B
VFVSRV9FWElUX0ZJTEUiKTsKKyAgaWYgKGZpbGVwYXRoICE9IE5VTEwgJiYgKmZpbGVwYXRoICE9
ICdcMCcpIHsKKyAgICBpZiAoUHJlbWF0dXJlRXhpdFRlc3Q6OkZpbGVFeGlzdHMoZmlsZXBhdGgp
KSB7CisgICAgICBwcmludGYoCisgICAgICAgICAgIkZpbGUgJXMgc2hvdWxkbid0IGV4aXN0IGFm
dGVyIHRoZSB0ZXN0IHByb2dyYW0gZmluaXNoZXMsIGJ1dCBkb2VzLiIsCisgICAgICAgICAgZmls
ZXBhdGgpOworICAgICAgcmV0dXJuIDE7CisgICAgfQorICB9CisKKyAgcmV0dXJuIGV4aXRfY29k
ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJv
ZF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcm9kX3Rlc3Qu
Y2MKaW5kZXggYmMzMjAxZDBmMjRhZTk4ZWQwNjJjN2I4YzlmNDRkN2RmZTZkN2M5Ni4uMDYwYWJj
ZTE4NzI0NGNmYzQ4YjNjZDVhNmNiODFiM2Y5ZWI5YWQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2MKQEAgLTMxLDcgKzMxLDcgQEAKIC8v
CiAvLyBVbml0IHRlc3QgZm9yIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oLgogCi0jaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgInRl
c3QvcHJvZHVjdGlvbi5oIgogCiAvLyBUZXN0cyB0aGF0IHByaXZhdGUgbWVtYmVycyBjYW4gYmUg
YWNjZXNzZWQgZnJvbSBhIFRFU1QgZGVjbGFyZWQgYXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcmVwZWF0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X3JlcGVhdF90ZXN0LmNjCmluZGV4IGRmNjg2OGI4MzAyOTYxMjVh
MjdjN2YzN2Y5MzE2Y2VkNGVkODJkNTQuLjQ4MTAxMmFkYzI0MDU0ZjRhODFmM2U3NDllOGQyNTc0
YzM2NGQwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
cmVwZWF0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9y
ZXBlYXRfdGVzdC5jYwpAQCAtMzMsNyArMzMsNyBAQAogCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAj
aW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgogCiAvLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQg
aXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCiAvLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29t
ZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKQEAgLTY5LDkgKzY5LDkgQEAgbmFtZXNw
YWNlIHsKICAgICAgICAgICAgICAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBhY3R1YWxfdmFsIDw8
ICJcbiJcCiAgICAgICAgICAgICAgICAgICA8PCAiRXhwZWN0ZWQ6ICIgI2V4cGVjdGVkICJcbiJc
CiAgICAgICAgICAgICAgICAgICA8PCAiV2hpY2ggaXM6ICIgPDwgZXhwZWN0ZWRfdmFsIDw8ICJc
biI7XAotICAgICAgYWJvcnQoKTtcCisgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6
QWJvcnQoKTtcCiAgICAgfVwKLSAgfSB3aGlsZSg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNG
YWxzZSgpKQorICB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgpKQog
CiAKIC8vIFVzZWQgZm9yIHZlcmlmeWluZyB0aGF0IGdsb2JhbCBlbnZpcm9ubWVudCBzZXQtdXAg
YW5kIHRlYXItZG93biBhcmUKQEAgLTExMywxMCArMTEzLDEwIEBAIFRFU1QoQmFyRGVhdGhUZXN0
LCBUaHJlYWRTYWZlQW5kRmFzdCkgewogICBnX2RlYXRoX3Rlc3RfY291bnQrKzsKIAogICBHVEVT
VF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOwotICBFWFBFQ1RfREVBVEhf
SUZfU1VQUE9SVEVEKGFib3J0KCksICIiKTsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg6
OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6QWJvcnQoKSwgIiIpOwogCiAgIEdURVNUX0ZMQUco
ZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQo
YWJvcnQoKSwgIiIpOworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDo6dGVzdGluZzo6aW50
ZXJuYWw6OnBvc2l4OjpBYm9ydCgpLCAiIik7CiB9CiAKICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVT
VApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxl
X3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rl
c3RfLmNjCmluZGV4IDUzZWNmNzc3MGExNDExNzY2OGI0YWRlYTZmYjZmNTAyNjY3MTdkZTcuLjZm
YjQ0MWJkNGQ0NjYyMWY2OTg3Y2FkNGI3NmFlNTk0OTlkN2ZmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0Xy5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdF8uY2MKQEAgLTMxLDcg
KzMxLDcgQEAKIAogLy8gVmVyaWZpZXMgdGhhdCB0ZXN0IHNodWZmbGluZyB3b3Jrcy4KIAotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogbmFtZXNw
YWNlIHsKIApAQCAtNDIsNyArNDIsNiBAQCB1c2luZyA6OnRlc3Rpbmc6OlRlc3Q7CiB1c2luZyA6
OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyczsKIHVzaW5nIDo6dGVzdGluZzo6VGVzdEluZm87
CiB1c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OwotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
U3RyaW5nOwogdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVkX3B0cjsKIAogLy8gVGhl
IHRlc3QgbWV0aG9kcyBhcmUgZW1wdHksIGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgdGhpcyBwcm9n
cmFtIGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Nv
bGVfaGVhZGVyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Nv
bGVfaGVhZGVyX3Rlc3QuY2MKaW5kZXggZGU5MWU4MDBmNWExMzgyOTk5ZmMyMDFmNWNmM2NlMDQ2
NGNhYTFjZS4uY2NkMDkxYTI4MWQzYzMwMmVjNmU3MzYwMjJmZDYxODgxNmMxMTlkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zb2xlX2hlYWRlcl90ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJf
dGVzdC5jYwpAQCAtMzIsNyArMzIsNyBAQAogLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgaXQn
cyBwb3NzaWJsZSB0byB1c2UgR29vZ2xlIFRlc3QgYnkgaW5jbHVkaW5nCiAvLyB0aGUgZ3Rlc3Qu
aCBoZWFkZXIgZmlsZSBhbG9uZS4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogbmFtZXNwYWNlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zdHJlc3NfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc3RyZXNzX3Rlc3QuY2MKaW5kZXggZjVhZjc4Y2M2ZDNmMzk1
YTAwZDRkMWNlODU5OWZhNWYxZGZhNzYyNi4uZTdkYWE0MzBkZmJlNTBmMTA0YTNhNDNiN2YwYjRh
NmJlMjE3MzI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9zdHJlc3NfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X3N0cmVzc190ZXN0LmNjCkBAIC0zMiw3ICszMiw3IEBACiAvLyBUZXN0cyB0aGF0IFNDT1BFRF9U
UkFDRSgpIGFuZCB2YXJpb3VzIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgY2FuIGJlCiAvLyB1c2Vk
IGluIGEgbGFyZ2UgbnVtYmVyIG9mIHRocmVhZHMgY29uY3VycmVudGx5LgogCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAjaW5jbHVkZSA8aW9z
dHJlYW0+CiAjaW5jbHVkZSA8dmVjdG9yPgpAQCAtNTAsNyArNTAsNiBAQCBuYW1lc3BhY2UgdGVz
dGluZyB7CiBuYW1lc3BhY2UgewogCiB1c2luZyBpbnRlcm5hbDo6Tm90aWZpY2F0aW9uOwotdXNp
bmcgaW50ZXJuYWw6OlN0cmluZzsKIHVzaW5nIGludGVybmFsOjpUZXN0UHJvcGVydHlLZXlJczsK
IHVzaW5nIGludGVybmFsOjpUaHJlYWRXaXRoUGFyYW07CiB1c2luZyBpbnRlcm5hbDo6c2NvcGVk
X3B0cjsKQEAgLTYyLDEzICs2MSwxMyBAQCB1c2luZyBpbnRlcm5hbDo6c2NvcGVkX3B0cjsKIC8v
IEhvdyBtYW55IHRocmVhZHMgdG8gY3JlYXRlPwogY29uc3QgaW50IGtUaHJlYWRDb3VudCA9IDUw
OwogCi1TdHJpbmcgSWRUb0tleShpbnQgaWQsIGNvbnN0IGNoYXIqIHN1ZmZpeCkgeworc3RkOjpz
dHJpbmcgSWRUb0tleShpbnQgaWQsIGNvbnN0IGNoYXIqIHN1ZmZpeCkgewogICBNZXNzYWdlIGtl
eTsKICAga2V5IDw8ICJrZXlfIiA8PCBpZCA8PCAiXyIgPDwgc3VmZml4OwogICByZXR1cm4ga2V5
LkdldFN0cmluZygpOwogfQogCi1TdHJpbmcgSWRUb1N0cmluZyhpbnQgaWQpIHsKK3N0ZDo6c3Ry
aW5nIElkVG9TdHJpbmcoaW50IGlkKSB7CiAgIE1lc3NhZ2UgaWRfbWVzc2FnZTsKICAgaWRfbWVz
c2FnZSA8PCBpZDsKICAgcmV0dXJuIGlkX21lc3NhZ2UuR2V0U3RyaW5nKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RfdXRpbHMucHkgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RfdXRpbHMucHkKaW5kZXggZTBmNTk3
M2U3ZWE2ZjgxZTY2NmMzMTIxYzNjOGZhODQzZjQzNGY2MS4uNGFjZDM2Yzk3NWMwYTFjMjhlNWU1
MGNkNzkzYTEzMTkwNzc0NTBjNCAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfdGVzdF91dGlscy5weQpAQCAtNTYsNiArNTYsMjEgQEAKIElTX1dJTkRPV1MgPSBv
cy5uYW1lID09ICdudCcKIElTX0NZR1dJTiA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBhbmQgJ0NZR1dJ
TicgaW4gb3MudW5hbWUoKVswXQogCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3Igc3Bl
Y2lmeWluZyB0aGUgcGF0aCB0byB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZS4KK1BSRU1BVFVSRV9F
WElUX0ZJTEVfRU5WX1ZBUiA9ICdURVNUX1BSRU1BVFVSRV9FWElUX0ZJTEUnCisKK2Vudmlyb24g
PSBvcy5lbnZpcm9uLmNvcHkoKQorCisKK2RlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgor
ICAiIiJTZXRzL3Vuc2V0cyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIGdpdmVuIHZhbHVl
LiIiIgorCisgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAgIGVudmlyb25bZW52X3Zhcl0gPSB2
YWx1ZQorICBlbGlmIGVudl92YXIgaW4gZW52aXJvbjoKKyAgICBkZWwgZW52aXJvbltlbnZfdmFy
XQorCisKICMgSGVyZSB3ZSBleHBvc2UgYSBjbGFzcyBmcm9tIGEgcGFydGljdWxhciBtb2R1bGUs
IGRlcGVuZGluZyBvbiB0aGUKICMgZW52aXJvbm1lbnQuIFRoZSBjb21tZW50IHN1cHByZXNzZXMg
dGhlICdJbnZhbGlkIHZhcmlhYmxlIG5hbWUnIGxpbnQKICMgY29tcGxhaW50LgpAQCAtNjMsOCAr
NzgsOCBAQAogCiAjIEluaXRpYWxseSBtYXBzIGEgZmxhZyB0byBpdHMgZGVmYXVsdCB2YWx1ZS4g
QWZ0ZXIKICMgX1BhcnNlQW5kU3RyaXBHVGVzdEZsYWdzKCkgaXMgY2FsbGVkLCBtYXBzIGEgZmxh
ZyB0byBpdHMgYWN0dWFsIHZhbHVlLgotX2ZsYWdfbWFwID0geydndGVzdF9zb3VyY2VfZGlyJzog
b3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2WzBdKSwKLSAgICAgICAgICAgICAnZ3Rlc3RfYnVpbGRf
ZGlyJzogb3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2WzBdKX0KK19mbGFnX21hcCA9IHsnc291cmNl
X2Rpcic6IG9zLnBhdGguZGlybmFtZShzeXMuYXJndlswXSksCisgICAgICAgICAgICAgJ2J1aWxk
X2Rpcic6IG9zLnBhdGguZGlybmFtZShzeXMuYXJndlswXSl9CiBfZ3Rlc3RfZmxhZ3NfYXJlX3Bh
cnNlZCA9IEZhbHNlCiAKIApAQCAtMTExLDEzICsxMjYsMTMgQEAgZGVmIEdldEZsYWcoZmxhZyk6
CiBkZWYgR2V0U291cmNlRGlyKCk6CiAgICIiIlJldHVybnMgdGhlIGFic29sdXRlIHBhdGggb2Yg
dGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgLnB5IGZpbGVzIGFyZS4iIiIKIAotICByZXR1cm4gb3Mu
cGF0aC5hYnNwYXRoKEdldEZsYWcoJ2d0ZXN0X3NvdXJjZV9kaXInKSkKKyAgcmV0dXJuIG9zLnBh
dGguYWJzcGF0aChHZXRGbGFnKCdzb3VyY2VfZGlyJykpCiAKIAogZGVmIEdldEJ1aWxkRGlyKCk6
CiAgICIiIlJldHVybnMgdGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGRpcmVjdG9yeSB3aGVyZSB0
aGUgdGVzdCBiaW5hcmllcyBhcmUuIiIiCiAKLSAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChHZXRG
bGFnKCdndGVzdF9idWlsZF9kaXInKSkKKyAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChHZXRGbGFn
KCdidWlsZF9kaXInKSkKIAogCiBfdGVtcF9kaXIgPSBOb25lCkBAIC0xNjAsMTQgKzE3NSwxMCBA
QCBkZWYgR2V0VGVzdEV4ZWN1dGFibGVQYXRoKGV4ZWN1dGFibGVfbmFtZSwgYnVpbGRfZGlyPU5v
bmUpOgogCiAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwYXRoKToKICAgICBtZXNzYWdlID0gKAot
ICAgICAgICAnVW5hYmxlIHRvIGZpbmQgdGhlIHRlc3QgYmluYXJ5LiBQbGVhc2UgbWFrZSBzdXJl
IHRvIHByb3ZpZGUgcGF0aFxuJwotICAgICAgICAndG8gdGhlIGJpbmFyeSB2aWEgdGhlIC0tZ3Rl
c3RfYnVpbGRfZGlyIGZsYWcgb3IgdGhlIEdURVNUX0JVSUxEX0RJUlxuJwotICAgICAgICAnZW52
aXJvbm1lbnQgdmFyaWFibGUuIEZvciBjb252ZW5pZW50IHVzZSwgaW52b2tlIHRoaXMgc2NyaXB0
IHZpYVxuJwotICAgICAgICAnbWtfdGVzdC5weS5cbicKLSAgICAgICAgIyBUT0RPKHZsYWRsQGdv
b2dsZS5jb20pOiBjaGFuZ2UgbWtfdGVzdC5weSB0byB0ZXN0LnB5IGFmdGVyIHJlbmFtaW5nCi0g
ICAgICAgICMgdGhlIGZpbGUuCi0gICAgICAgICdQbGVhc2UgcnVuIG1rX3Rlc3QucHkgLWggZm9y
IGhlbHAuJykKLSAgICBwcmludCA+PiBzeXMuc3RkZXJyLCBtZXNzYWdlCisgICAgICAgICdVbmFi
bGUgdG8gZmluZCB0aGUgdGVzdCBiaW5hcnkgIiVzIi4gUGxlYXNlIG1ha2Ugc3VyZSB0byBwcm92
aWRlXG4nCisgICAgICAgICdhIHBhdGggdG8gdGhlIGJpbmFyeSB2aWEgdGhlIC0tYnVpbGRfZGly
IGZsYWcgb3IgdGhlIEJVSUxEX0RJUlxuJworICAgICAgICAnZW52aXJvbm1lbnQgdmFyaWFibGUu
JyAlIHBhdGgpCisgICAgc3lzLnN0ZG91dC53cml0ZShtZXNzYWdlKQogICAgIHN5cy5leGl0KDEp
CiAKICAgcmV0dXJuIHBhdGgKQEAgLTI0NSw3ICsyNTYsNyBAQCBkZWYgX1JlcGxhY2VFbnZEaWN0
KGRlc3QsIHNyYyk6CiAgICAgICAgICMgQ2hhbmdlcyBtYWRlIGJ5IG9zLmVudmlyb24uY2xlYXIg
YXJlIG5vdCBpbmhlcml0YWJsZSBieSBjaGlsZAogICAgICAgICAjIHByb2Nlc3NlcyB1bnRpbCBQ
eXRob24gMi42LiBUbyBwcm9kdWNlIGluaGVyaXRhYmxlIGNoYW5nZXMgd2UgaGF2ZQogICAgICAg
ICAjIHRvIGRlbGV0ZSBlbnZpcm9ubWVudCBpdGVtcyB3aXRoIHRoZSBkZWwgc3RhdGVtZW50Lgot
ICAgICAgICBmb3Iga2V5IGluIGRlc3Q6CisgICAgICAgIGZvciBrZXkgaW4gZGVzdC5rZXlzKCk6
CiAgICAgICAgICAgZGVsIGRlc3Rba2V5XQogICAgICAgICBkZXN0LnVwZGF0ZShzcmMpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFp
bHVyZV9leF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJv
d19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MKaW5kZXggOGJmOWRjOTA1YjVmZjgzYWMwMjEwNDEzNDM1
ODBmOTA5NzU0ODNjZS4uOGQ0NmM3NmYxNjEyMWZkMWY0N2M5NzQxMGYzZTA4ZWY0YTExNmVkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJvd19vbl9m
YWlsdXJlX2V4X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF90aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MKQEAgLTMxLDcgKzMxLDcgQEAKIAogLy8gVGVz
dHMgR29vZ2xlIFRlc3QncyB0aHJvdy1vbi1mYWlsdXJlIG1vZGUgd2l0aCBleGNlcHRpb25zIGVu
YWJsZWQuCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdGRpby5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rl
c3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1
cmVfdGVzdC5weQppbmRleCA1Njc4ZmZlYWY2ZmE2MWVmN2RjYjQ1YjhmMzRhMDM0MTE5MWFiZjZl
Li4zZTc3NDBjYWJiOGFjZmQyMTJjMzdlYjgxNjkzNzIyMjYxNzQzYTcxIDEwMDc1NQotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdC5w
eQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1
cmVfdGVzdC5weQpAQCAtNzAsNyArNzAsNyBAQCBkZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVl
KToKIGRlZiBSdW4oY29tbWFuZCk6CiAgICIiIlJ1bnMgYSBjb21tYW5kOyByZXR1cm5zIFRydWUv
RmFsc2UgaWYgaXRzIGV4aXQgY29kZSBpcy9pc24ndCAwLiIiIgogCi0gIHByaW50ICdSdW5uaW5n
ICIlcyIuIC4gLicgJSAnICcuam9pbihjb21tYW5kKQorICBwcmludCgnUnVubmluZyAiJXMiLiAu
IC4nICUgJyAnLmpvaW4oY29tbWFuZCkpCiAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nl
c3MoY29tbWFuZCkKICAgcmV0dXJuIHAuZXhpdGVkIGFuZCBwLmV4aXRfY29kZSA9PSAwCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFp
bHVyZV90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3df
b25fZmFpbHVyZV90ZXN0Xy5jYwppbmRleCA4OGZiZDVhNzZkYzkyMDZmNGEwMjk1MTRiODc2ZGMw
MTQxZTM2YmZhLi4yYjg4ZmUzZDliM2I4YjVmMGUzNjRkYjBkZDY5ZmY3ZGIxOGFhNjNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1
cmVfdGVzdF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJv
d19vbl9mYWlsdXJlX3Rlc3RfLmNjCkBAIC0zNSwxNCArMzUsMzAgQEAKIC8vIGludm9rZWQgYnkg
Z3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0LnB5LCBhbmQgaXMgZXhwZWN0ZWQgdG8gZXhpdAog
Ly8gd2l0aCBub24temVybyBpbiB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlIG9yIDAgb3RoZXJ3
aXNlLgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgorCisjaW5jbHVkZSA8c3RkaW8uaD4gICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGZmbHVz
aCwgZnByaW50ZiwgTlVMTCwgZXRjLgorI2luY2x1ZGUgPHN0ZGxpYi5oPiAgICAgICAgICAgICAg
ICAgICAgIC8vIGZvciBleGl0CisjaW5jbHVkZSA8ZXhjZXB0aW9uPiAgICAgICAgICAgICAgICAg
ICAgLy8gZm9yIHNldF90ZXJtaW5hdGUKKworLy8gVGhpcyB0ZXJtaW5hdGUgaGFuZGxlciBhYm9y
dHMgdGhlIHByb2dyYW0gdXNpbmcgZXhpdCgpIHJhdGhlciB0aGFuIGFib3J0KCkuCisvLyBUaGlz
IGF2b2lkcyBzaG93aW5nIHBvcC11cHMgb24gV2luZG93cyBzeXN0ZW1zIGFuZCBjb3JlIGR1bXBz
IG9uIFVuaXgtbGlrZQorLy8gb25lcy4KK3ZvaWQgVGVybWluYXRlSGFuZGxlcigpIHsKKyAgZnBy
aW50ZihzdGRlcnIsICIlc1xuIiwgIlVuaGFuZGxlZCBDKysgZXhjZXB0aW9uIHRlcm1pbmF0aW5n
IHRoZSBwcm9ncmFtLiIpOworICBmZmx1c2goTlVMTCk7CisgIGV4aXQoMSk7Cit9CiAKIGludCBt
YWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworI2lmIEdURVNUX0hBU19FWENFUFRJT05TCisg
IHN0ZDo6c2V0X3Rlcm1pbmF0ZSgmVGVybWluYXRlSGFuZGxlcik7CisjZW5kaWYKICAgdGVzdGlu
Zzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwogCiAgIC8vIFdlIHdhbnQgdG8gZW5zdXJl
IHRoYXQgcGVvcGxlIGNhbiB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBpbgogICAvLyBvdGhl
ciB0ZXN0aW5nIGZyYW1ld29ya3MsIGFzIGxvbmcgYXMgdGhleSBpbml0aWFsaXplIEdvb2dsZSBU
ZXN0Ci0gIC8vIHByb3Blcmx5IGFuZCBzZXQgdGhlIHRocm93bi1vbi1mYWlsdXJlIG1vZGUuICBU
aGVyZWZvcmUsIHdlIGRvbid0CisgIC8vIHByb3Blcmx5IGFuZCBzZXQgdGhlIHRocm93LW9uLWZh
aWx1cmUgbW9kZS4gIFRoZXJlZm9yZSwgd2UgZG9uJ3QKICAgLy8gdXNlIEdvb2dsZSBUZXN0J3Mg
Y29uc3RydWN0cyBmb3IgZGVmaW5pbmcgYW5kIHJ1bm5pbmcgdGVzdHMKICAgLy8gKGUuZy4gVEVT
VCBhbmQgUlVOX0FMTF9URVNUUykgaGVyZS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5weQppbmRleCA2YWU1N2Vl
ZWRhZmNmMDc1MDRkZDhkNWQ3YThiNWE3ZjgzODEzZjI3Li40MzU4MzcwMDk3ZmI4NGM1M2FhY2Zm
MzEzNzBhNDVhMjRmODdmMjY5IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5weQpAQCAtNDYsOCArNDYsOCBAQCBk
ZWYgQXNzZXJ0KGNvbmRpdGlvbik6CiAKIGRlZiBBc3NlcnRFcShleHBlY3RlZCwgYWN0dWFsKToK
ICAgaWYgZXhwZWN0ZWQgIT0gYWN0dWFsOgotICAgIHByaW50ICdFeHBlY3RlZDogJXMnICUgKGV4
cGVjdGVkLCkKLSAgICBwcmludCAnICBBY3R1YWw6ICVzJyAlIChhY3R1YWwsKQorICAgIHByaW50
KCdFeHBlY3RlZDogJXMnICUgKGV4cGVjdGVkLCkpCisgICAgcHJpbnQoJyAgQWN0dWFsOiAlcycg
JSAoYWN0dWFsLCkpCiAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKIAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdF8uY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdF8u
Y2MKaW5kZXggZThiMmFhODFkZDU0ZDljNjQzYTU4ZGU1ZTQ0ZDZjY2I1MjBhNzc2NS4uNDQzMTY5
ODdmYmI1ZDZkYzA4OTA5MjU1YTM3MjhjZTM1YTJlYzdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3RfLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0Xy5jYwpA
QCAtMjksNyArMjksNyBAQAogLy8KIC8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25n
IFdhbikKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKIAogVEVTVChEdW1teVRlc3QsIER1bW15KSB7CiAgIC8vIFRoaXMgdGVzdCBkb2Vzbid0IHZl
cmlmeSBhbnl0aGluZy4gIFdlIGp1c3QgbmVlZCBpdCB0byBjcmVhdGUgYQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MKaW5kZXggYTE0ZjA2NWEyY2Nk
ODYzNzlhMDE0OWEzM2ZjNTY0NWMwZWM4YjE4MS4uODhlOTQxMzRiOTRjYzlhNTExYTJmYzVkOWZm
MjQ2NzBlYTlhNzkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X3VuaXR0ZXN0LmNjCkBAIC0zMiw4ICszMiw3IEBACiAvLyBUZXN0cyBmb3IgR29vZ2xlIFRlc3Qg
aXRzZWxmLiAgVGhpcyB2ZXJpZmllcyB0aGF0IHRoZSBiYXNpYyBjb25zdHJ1Y3RzIG9mCiAvLyBH
b29nbGUgVGVzdCB3b3JrLgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDx2
ZWN0b3I+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogLy8gVmVyaWZpZXMgdGhhdCB0aGUg
Y29tbWFuZCBsaW5lIGZsYWcgdmFyaWFibGVzIGNhbiBiZSBhY2Nlc3NlZAogLy8gaW4gY29kZSBv
bmNlIDxndGVzdC9ndGVzdC5oPiBoYXMgYmVlbiAjaW5jbHVkZWQuCkBAIC01MiwxMSArNTEsMjEg
QEAgVEVTVChDb21tYW5kTGluZUZsYWdzVGVzdCwgQ2FuQmVBY2Nlc3NlZEluQ29kZU9uY2VHVGVz
dEhJc0luY2x1ZGVkKSB7CiAgICAgICB8fCB0ZXN0aW5nOjpHVEVTVF9GTEFHKHNob3dfaW50ZXJu
YWxfc3RhY2tfZnJhbWVzKQogICAgICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyhzaHVmZmxlKQog
ICAgICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkgPiAwCisgICAg
ICB8fCB0ZXN0aW5nOjpHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pICE9ICJ1bmtub3duIgog
ICAgICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKICAgRVhQRUNU
X1RSVUUoZHVtbXkgfHwgIWR1bW15KTsgIC8vIFN1cHByZXNzZXMgd2FybmluZyB0aGF0IGR1bW15
IGlzIHVudXNlZC4KIH0KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgorI2luY2x1ZGUg
PGxpbWl0cy5oPiAgLy8gRm9yIElOVF9NQVguCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVk
ZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dGltZS5oPgorCisjaW5jbHVkZSA8bWFwPgorI2luY2x1
ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDxvc3RyZWFtPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qt
c3BpLmgiCiAKIC8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0
IG9mIEdvb2dsZSBUZXN0J3MKIC8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9y
ZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwpAQCAtNjcsMTUgKzc2LDg1IEBAIFRFU1QoQ29tbWFu
ZExpbmVGbGFnc1Rlc3QsIENhbkJlQWNjZXNzZWRJbkNvZGVPbmNlR1Rlc3RISXNJbmNsdWRlZCkg
ewogI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKICN1bmRlZiBHVEVTVF9JTVBM
RU1FTlRBVElPTl8KIAotI2luY2x1ZGUgPGxpbWl0cy5oPiAgLy8gRm9yIElOVF9NQVguCi0jaW5j
bHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8dGltZS5oPgotCi0jaW5jbHVkZSA8bWFwPgotCiBu
YW1lc3BhY2UgdGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCisjaWYgR1RFU1RfQ0FO
X1NUUkVBTV9SRVNVTFRTXworCitjbGFzcyBTdHJlYW1pbmdMaXN0ZW5lclRlc3QgOiBwdWJsaWMg
VGVzdCB7CisgcHVibGljOgorICBjbGFzcyBGYWtlU29ja2V0V3JpdGVyIDogcHVibGljIFN0cmVh
bWluZ0xpc3RlbmVyOjpBYnN0cmFjdFNvY2tldFdyaXRlciB7CisgICBwdWJsaWM6CisgICAgLy8g
U2VuZHMgYSBzdHJpbmcgdG8gdGhlIHNvY2tldC4KKyAgICB2aXJ0dWFsIHZvaWQgU2VuZChjb25z
dCBzdHJpbmcmIG1lc3NhZ2UpIHsgb3V0cHV0XyArPSBtZXNzYWdlOyB9CisKKyAgICBzdHJpbmcg
b3V0cHV0XzsKKyAgfTsKKworICBTdHJlYW1pbmdMaXN0ZW5lclRlc3QoKQorICAgICAgOiBmYWtl
X3NvY2tfd3JpdGVyXyhuZXcgRmFrZVNvY2tldFdyaXRlciksCisgICAgICAgIHN0cmVhbWVyXyhm
YWtlX3NvY2tfd3JpdGVyXyksCisgICAgICAgIHRlc3RfaW5mb19vYmpfKCJGb29UZXN0IiwgIkJh
ciIsIE5VTEwsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbihfX0ZJ
TEVfXywgX19MSU5FX18pLCAwLCBOVUxMKSB7fQorCisgcHJvdGVjdGVkOgorICBzdHJpbmcqIG91
dHB1dCgpIHsgcmV0dXJuICYoZmFrZV9zb2NrX3dyaXRlcl8tPm91dHB1dF8pOyB9CisKKyAgRmFr
ZVNvY2tldFdyaXRlciogY29uc3QgZmFrZV9zb2NrX3dyaXRlcl87CisgIFN0cmVhbWluZ0xpc3Rl
bmVyIHN0cmVhbWVyXzsKKyAgVW5pdFRlc3QgdW5pdF90ZXN0XzsKKyAgVGVzdEluZm8gdGVzdF9p
bmZvX29ial87ICAvLyBUaGUgbmFtZSB0ZXN0X2luZm9fIHdhcyB0YWtlbiBieSB0ZXN0aW5nOjpU
ZXN0LgorfTsKKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25UZXN0UHJvZ3JhbUVu
ZCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdFByb2dyYW1FbmQodW5p
dF90ZXN0Xyk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdFByb2dyYW1FbmQmcGFzc2VkPTFcbiIs
ICpvdXRwdXQoKSk7Cit9CisKK1RFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRlc3QsIE9uVGVzdEl0
ZXJhdGlvbkVuZCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdEl0ZXJh
dGlvbkVuZCh1bml0X3Rlc3RfLCA0Mik7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdEl0ZXJhdGlv
bkVuZCZwYXNzZWQ9MSZlbGFwc2VkX3RpbWU9MG1zXG4iLCAqb3V0cHV0KCkpOworfQorCitURVNU
X0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RDYXNlU3RhcnQpIHsKKyAgKm91dHB1dCgp
ID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RDYXNlU3RhcnQoVGVzdENhc2UoIkZvb1Rlc3QiLCAi
QmFyIiwgTlVMTCwgTlVMTCkpOworICBFWFBFQ1RfRVEoImV2ZW50PVRlc3RDYXNlU3RhcnQmbmFt
ZT1Gb29UZXN0XG4iLCAqb3V0cHV0KCkpOworfQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJU
ZXN0LCBPblRlc3RDYXNlRW5kKSB7CisgICpvdXRwdXQoKSA9ICIiOworICBzdHJlYW1lcl8uT25U
ZXN0Q2FzZUVuZChUZXN0Q2FzZSgiRm9vVGVzdCIsICJCYXIiLCBOVUxMLCBOVUxMKSk7CisgIEVY
UEVDVF9FUSgiZXZlbnQ9VGVzdENhc2VFbmQmcGFzc2VkPTEmZWxhcHNlZF90aW1lPTBtc1xuIiwg
Km91dHB1dCgpKTsKK30KKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25UZXN0U3Rh
cnQpIHsKKyAgKm91dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RTdGFydCh0ZXN0X2lu
Zm9fb2JqXyk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdFN0YXJ0Jm5hbWU9QmFyXG4iLCAqb3V0
cHV0KCkpOworfQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RFbmQpIHsK
KyAgKm91dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RFbmQodGVzdF9pbmZvX29ial8p
OworICBFWFBFQ1RfRVEoImV2ZW50PVRlc3RFbmQmcGFzc2VkPTEmZWxhcHNlZF90aW1lPTBtc1xu
IiwgKm91dHB1dCgpKTsKK30KKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25UZXN0
UGFydFJlc3VsdCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdFBhcnRS
ZXN1bHQoVGVzdFBhcnRSZXN1bHQoCisgICAgICBUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVy
ZSwgImZvby5jYyIsIDQyLCAiZmFpbGVkPVxuJiUiKSk7CisKKyAgLy8gTWV0YSBjaGFyYWN0ZXJz
IGluIHRoZSBmYWlsdXJlIG1lc3NhZ2Ugc2hvdWxkIGJlIHByb3Blcmx5IGVzY2FwZWQuCisgIEVY
UEVDVF9FUSgKKyAgICAgICJldmVudD1UZXN0UGFydFJlc3VsdCZmaWxlPWZvby5jYyZsaW5lPTQy
Jm1lc3NhZ2U9ZmFpbGVkJTNEJTBBJTI2JTI1XG4iLAorICAgICAgKm91dHB1dCgpKTsKK30KKwor
I2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKIC8vIFByb3ZpZGVzIGFjY2Vz
cyB0byBvdGhlcndpc2UgcHJpdmF0ZSBwYXJ0cyBvZiB0aGUgVGVzdEV2ZW50TGlzdGVuZXJzIGNs
YXNzCiAvLyB0aGF0IGFyZSBuZWVkZWQgdG8gdGVzdCBpdC4KIGNsYXNzIFRlc3RFdmVudExpc3Rl
bmVyc0FjY2Vzc29yIHsKQEAgLTEwMiw2ICsxODEsMTggQEAgY2xhc3MgVGVzdEV2ZW50TGlzdGVu
ZXJzQWNjZXNzb3IgewogICB9CiB9OwogCitjbGFzcyBVbml0VGVzdFJlY29yZFByb3BlcnR5VGVz
dEhlbHBlciA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIFVuaXRUZXN0UmVjb3JkUHJv
cGVydHlUZXN0SGVscGVyKCkge30KKworICAvLyBGb3J3YXJkcyB0byBVbml0VGVzdDo6UmVjb3Jk
UHJvcGVydHkoKSB0byBieXBhc3MgYWNjZXNzIGNvbnRyb2xzLgorICB2b2lkIFVuaXRUZXN0UmVj
b3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpIHsK
KyAgICB1bml0X3Rlc3RfLlJlY29yZFByb3BlcnR5KGtleSwgdmFsdWUpOworICB9CisKKyAgVW5p
dFRlc3QgdW5pdF90ZXN0XzsKK307CisKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8g
bmFtZXNwYWNlIHRlc3RpbmcKIApAQCAtMTEwLDYgKzIwMSw3IEBAIHVzaW5nIHRlc3Rpbmc6OkFz
c2VydGlvblJlc3VsdDsKIHVzaW5nIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3M7CiB1c2luZyB0
ZXN0aW5nOjpEb3VibGVMRTsKIHVzaW5nIHRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXI7
Cit1c2luZyB0ZXN0aW5nOjpFbnZpcm9ubWVudDsKIHVzaW5nIHRlc3Rpbmc6OkZsb2F0TEU7CiB1
c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzKTsKIHVzaW5n
IHRlc3Rpbmc6OkdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSk7CkBAIC0xMjUsNiArMjE3LDcg
QEAgdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhyZXBlYXQpOwogdXNpbmcgdGVzdGluZzo6R1RF
U1RfRkxBRyhzaG93X2ludGVybmFsX3N0YWNrX2ZyYW1lcyk7CiB1c2luZyB0ZXN0aW5nOjpHVEVT
VF9GTEFHKHNodWZmbGUpOwogdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhzdGFja190cmFjZV9k
ZXB0aCk7Cit1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pOwogdXNp
bmcgdGVzdGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKIHVzaW5nIHRlc3Rpbmc6
OklzTm90U3Vic3RyaW5nOwogdXNpbmcgdGVzdGluZzo6SXNTdWJzdHJpbmc7CkBAIC0xMzIsNTMg
KzIyNSw3NSBAQCB1c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwogdXNpbmcgdGVzdGluZzo6U2NvcGVk
RmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI7CiB1c2luZyB0ZXN0aW5nOjpTdGF0aWNBc3NlcnRU
eXBlRXE7CiB1c2luZyB0ZXN0aW5nOjpUZXN0OwotdXNpbmcgdGVzdGluZzo6VGVzdEV2ZW50TGlz
dGVuZXJzOwogdXNpbmcgdGVzdGluZzo6VGVzdENhc2U7Cit1c2luZyB0ZXN0aW5nOjpUZXN0RXZl
bnRMaXN0ZW5lcnM7Cit1c2luZyB0ZXN0aW5nOjpUZXN0SW5mbzsKIHVzaW5nIHRlc3Rpbmc6OlRl
c3RQYXJ0UmVzdWx0OwogdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHRBcnJheTsKIHVzaW5n
IHRlc3Rpbmc6OlRlc3RQcm9wZXJ0eTsKIHVzaW5nIHRlc3Rpbmc6OlRlc3RSZXN1bHQ7Cit1c2lu
ZyB0ZXN0aW5nOjpUaW1lSW5NaWxsaXM7CiB1c2luZyB0ZXN0aW5nOjpVbml0VGVzdDsKLXVzaW5n
IHRlc3Rpbmc6OmtNYXhTdGFja1RyYWNlRGVwdGg7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6
QWRkUmVmZXJlbmNlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlOwogdXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWU7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6QXBwZW5kVXNlck1lc3NhZ2U7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QXJyYXlBd2Fy
ZUZpbmQ7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QXJyYXlFcTsKIHVzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpDb2RlUG9pbnRUb1V0Zjg7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q29t
cGlsZUFzc2VydFR5cGVzRXF1YWw7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q29weUFycmF5
OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkNvdW50SWY7CiB1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6RXFGYWlsdXJlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZsb2F0aW5nUG9pbnQ7
Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzOwog
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZvckVhY2g7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6Rm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDE7Cit1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6Rm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzOwogdXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OkdUZXN0RmxhZ1NhdmVyOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldEN1cnJlbnRP
c1N0YWNrVHJhY2VFeGNlcHRUb3A7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0RWxlbWVu
dE9yOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldE5leHRSYW5kb21TZWVkOwogdXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OkdldFJhbmRvbVNlZWRGcm9tRmxhZzsKIHVzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpHZXRUZXN0VHlwZUlkOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldFRp
bWVJbk1pbGxpczsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRUeXBlSWQ7CiB1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsOwordXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJbnQz
MjsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJbnQzMkZyb21FbnZPckRpZTsKK3VzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpJc0FQcm90b2NvbE1lc3NhZ2U7Cit1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6SXNDb250YWluZXI7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SXNDb250YWluZXJU
ZXN0OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OklzTm90Q29udGFpbmVyOwordXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6Ok5hdGl2ZUFycmF5OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlBh
cnNlSW50MzJGbGFnOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlJlbGF0aW9uVG9Tb3VyY2VD
b3B5OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2U7
Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVtb3ZlQ29uc3Q7Cit1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6UmVtb3ZlUmVmZXJlbmNlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlNob3Vs
ZFJ1blRlc3RPblNoYXJkOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlNob3VsZFNoYXJkOwog
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlNob3VsZFVzZUNvbG9yOwogdXNpbmcgdGVzdGluZzo6
aW50ZXJuYWw6OlNodWZmbGU7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2h1ZmZsZVJhbmdl
OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlNraXBQcmVmaXg7CiB1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6U3RyZWFtYWJsZVRvU3RyaW5nOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlN0
cmluZzsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3Nv
cjsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpUZXN0UmVzdWx0QWNjZXNzb3I7CiB1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6VUludDMyOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OldpZGVT
dHJpbmdUb1V0Zjg7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6ZWRpdF9kaXN0YW5jZTo6Q2Fs
Y3VsYXRlT3B0aW1hbEVkaXRzOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmVkaXRfZGlzdGFu
Y2U6OkNyZWF0ZVVuaWZpZWREaWZmOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmVkaXRfZGlz
dGFuY2U6OkVkaXRUeXBlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmtNYXhSYW5kb21TZWVk
OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmtUZXN0VHlwZUlkSW5Hb29nbGVUZXN0OwotdXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI7Cit1c2luZyB0ZXN0aW5nOjprTWF4U3Rh
Y2tUcmFjZURlcHRoOwogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNpZiBH
VEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q2Fw
dHVyZVN0ZG91dDsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRDYXB0dXJlZFN0ZG91dDsK
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNlbmRpZgogCiAjaWYg
R1RFU1RfSVNfVEhSRUFEU0FGRQogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlRocmVhZFdpdGhQ
YXJhbTsKQEAgLTI4OSwxMiArNDA0LDk5IEBAIFRFU1QoRm9ybWF0VGltZUluTWlsbGlzQXNTZWNv
bmRzVGVzdCwgRm9ybWF0c05lZ2F0aXZlTnVtYmVyKSB7CiAgIEVYUEVDVF9FUSgiLTMiLCBGb3Jt
YXRUaW1lSW5NaWxsaXNBc1NlY29uZHMoLTMwMDApKTsKIH0KIAorLy8gVGVzdHMgRm9ybWF0RXBv
Y2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoKS4gIFRoZSBjb3JyZWN0bmVzcyBvZiBjb252ZXJzaW9u
CisvLyBmb3IgcGFydGljdWxhciBkYXRlcyBiZWxvdyB3YXMgdmVyaWZpZWQgaW4gUHl0aG9uIHVz
aW5nCisvLyBkYXRldGltZS5kYXRldGltZS5mcm9tdXRjdGltZXN0YW1wKDx0aW1ldGFtcD4vMTAw
MCkuCisKKy8vIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxIGRlcGVuZHMgb24gdGhl
IGN1cnJlbnQgdGltZXpvbmUsIHNvIHdlCisvLyBoYXZlIHRvIHNldCB1cCBhIHBhcnRpY3VsYXIg
dGltZXpvbmUgdG8gb2J0YWluIHByZWRpY3RhYmxlIHJlc3VsdHMuCitjbGFzcyBGb3JtYXRFcG9j
aFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICAv
LyBPbiBDeWd3aW4sIEdDQyBkb2Vzbid0IGFsbG93IHVucXVhbGlmaWVkIGludGVnZXIgbGl0ZXJh
bHMgdG8gZXhjZWVkCisgIC8vIDMyIGJpdHMsIGV2ZW4gd2hlbiA2NC1iaXQgaW50ZWdlciB0eXBl
cyBhcmUgYXZhaWxhYmxlLiAgV2UgaGF2ZSB0bworICAvLyBmb3JjZSB0aGUgY29uc3RhbnRzIHRv
IGhhdmUgYSA2NC1iaXQgdHlwZSBoZXJlLgorICBzdGF0aWMgY29uc3QgVGltZUluTWlsbGlzIGtN
aWxsaXNQZXJTZWMgPSAxMDAwOworCisgcHJpdmF0ZToKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkg
eworICAgIHNhdmVkX3R6XyA9IE5VTEw7CisKKyAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5H
U19QVVNIXyg0OTk2IC8qIGdldGVudiwgc3RyZHVwOiBkZXByZWNhdGVkICovKQorICAgIGlmIChn
ZXRlbnYoIlRaIikpCisgICAgICBzYXZlZF90el8gPSBzdHJkdXAoZ2V0ZW52KCJUWiIpKTsKKyAg
ICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKworICAgIC8vIFNldCB1cCB0aGUg
dGltZSB6b25lIGZvciBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSB0byB1c2UuICBX
ZQorICAgIC8vIGNhbm5vdCB1c2UgdGhlIGxvY2FsIHRpbWUgem9uZSBiZWNhdXNlIHRoZSBmdW5j
dGlvbidzIG91dHB1dCBkZXBlbmRzCisgICAgLy8gb24gdGhlIHRpbWUgem9uZS4KKyAgICBTZXRU
aW1lWm9uZSgiVVRDKzAwIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Cisg
ICAgU2V0VGltZVpvbmUoc2F2ZWRfdHpfKTsKKyAgICBmcmVlKGNvbnN0X2Nhc3Q8Y2hhcio+KHNh
dmVkX3R6XykpOworICAgIHNhdmVkX3R6XyA9IE5VTEw7CisgIH0KKworICBzdGF0aWMgdm9pZCBT
ZXRUaW1lWm9uZShjb25zdCBjaGFyKiB0aW1lX3pvbmUpIHsKKyAgICAvLyB0enNldCgpIGRpc3Rp
bmd1aXNoZXMgYmV0d2VlbiB0aGUgVFogdmFyaWFibGUgYmVpbmcgcHJlc2VudCBhbmQgZW1wdHkK
KyAgICAvLyBhbmQgbm90IGJlaW5nIHByZXNlbnQsIHNvIHdlIGhhdmUgdG8gY29uc2lkZXIgdGhl
IGNhc2Ugb2YgdGltZV96b25lCisgICAgLy8gYmVpbmcgTlVMTC4KKyNpZiBfTVNDX1ZFUgorICAg
IC8vIC4uLlVubGVzcyBpdCdzIE1TVkMsIHdob3NlIHN0YW5kYXJkIGxpYnJhcnkncyBfcHV0ZW52
IGRvZXNuJ3QKKyAgICAvLyBkaXN0aW5ndWlzaCBiZXR3ZWVuIGFuIGVtcHR5IGFuZCBhIG1pc3Np
bmcgdmFyaWFibGUuCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZW52X3ZhciA9CisgICAgICAgIHN0
ZDo6c3RyaW5nKCJUWj0iKSArICh0aW1lX3pvbmUgPyB0aW1lX3pvbmUgOiAiIik7CisgICAgX3B1
dGVudihlbnZfdmFyLmNfc3RyKCkpOworICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BV
U0hfKDQ5OTYgLyogZGVwcmVjYXRlZCBmdW5jdGlvbiAqLykKKyAgICB0enNldCgpOworICAgIEdU
RVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQorI2Vsc2UKKyAgICBpZiAodGltZV96b25l
KSB7CisgICAgICBzZXRlbnYoKCJUWiIpLCB0aW1lX3pvbmUsIDEpOworICAgIH0gZWxzZSB7Cisg
ICAgICB1bnNldGVudigiVFoiKTsKKyAgICB9CisgICAgdHpzZXQoKTsKKyNlbmRpZgorICB9CisK
KyAgY29uc3QgY2hhciogc2F2ZWRfdHpfOworfTsKKworY29uc3QgVGltZUluTWlsbGlzIEZvcm1h
dEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxVGVzdDo6a01pbGxpc1BlclNlYzsKKworVEVTVF9G
KEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxVGVzdCwgUHJpbnRzVHdvRGlnaXRTZWdt
ZW50cykgeworICBFWFBFQ1RfRVEoIjIwMTEtMTAtMzFUMTg6NTI6NDIiLAorICAgICAgICAgICAg
Rm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoMTMyMDA4NzE2MiAqIGtNaWxsaXNQZXJT
ZWMpKTsKK30KKworVEVTVF9GKEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxVGVzdCwg
TWlsbGlzZWNvbmRzRG9Ob3RBZmZlY3RSZXN1bHQpIHsKKyAgRVhQRUNUX0VRKAorICAgICAgIjIw
MTEtMTAtMzFUMTg6NTI6NDIiLAorICAgICAgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2
MDEoMTMyMDA4NzE2MiAqIGtNaWxsaXNQZXJTZWMgKyAyMzQpKTsKK30KKworVEVTVF9GKEZvcm1h
dEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxVGVzdCwgUHJpbnRzTGVhZGluZ1plcm9lcykgewor
ICBFWFBFQ1RfRVEoIjIwMTEtMDktMDNUMDU6MDc6MDIiLAorICAgICAgICAgICAgRm9ybWF0RXBv
Y2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoMTMxNTAyNjQyMiAqIGtNaWxsaXNQZXJTZWMpKTsKK30K
KworVEVTVF9GKEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxVGVzdCwgUHJpbnRzMjRI
b3VyVGltZSkgeworICBFWFBFQ1RfRVEoIjIwMTEtMDktMjhUMTc6MDg6MjIiLAorICAgICAgICAg
ICAgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoMTMxNzIyOTcwMiAqIGtNaWxsaXNQ
ZXJTZWMpKTsKK30KKworVEVTVF9GKEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxVGVz
dCwgUHJpbnRzRXBvY2hTdGFydCkgeworICBFWFBFQ1RfRVEoIjE5NzAtMDEtMDFUMDA6MDA6MDAi
LCBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSgwKSk7Cit9CisKICNpZiBHVEVTVF9D
QU5fQ09NUEFSRV9OVUxMCiAKLSNpZmRlZiBfX0JPUkxBTkRDX18KKyMgaWZkZWYgX19CT1JMQU5E
Q19fCiAvLyBTaWxlbmNlcyB3YXJuaW5nczogIkNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZSIsICJV
bnJlYWNoYWJsZSBjb2RlIgotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCi0jZW5k
aWYKKyMgIHByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCisjIGVuZGlmCiAKIC8vIFRl
c3RzIHRoYXQgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBpcyB0cnVlIHdoZW4geCBpcyBhIG51
bGwKIC8vIHBvaW50ZXIgbGl0ZXJhbC4KQEAgLTMwMywxNCArNTA1LDYgQEAgVEVTVChOdWxsTGl0
ZXJhbFRlc3QsIElzVHJ1ZUZvck51bGxMaXRlcmFscykgewogICBFWFBFQ1RfVFJVRShHVEVTVF9J
U19OVUxMX0xJVEVSQUxfKDApKTsKICAgRVhQRUNUX1RSVUUoR1RFU1RfSVNfTlVMTF9MSVRFUkFM
XygwVSkpOwogICBFWFBFQ1RfVFJVRShHVEVTVF9JU19OVUxMX0xJVEVSQUxfKDBMKSk7Ci0gIEVY
UEVDVF9UUlVFKEdURVNUX0lTX05VTExfTElURVJBTF8oZmFsc2UpKTsKLSNpZm5kZWYgX19CT1JM
QU5EQ19fCi0gIC8vIFNvbWUgY29tcGlsZXJzIG1heSBmYWlsIHRvIGRldGVjdCBzb21lIG51bGwg
cG9pbnRlciBsaXRlcmFsczsKLSAgLy8gYXMgbG9uZyBhcyB1c2VycyBvZiB0aGUgZnJhbWV3b3Jr
IGRvbid0IHVzZSBzdWNoIGxpdGVyYWxzLCB0aGlzCi0gIC8vIGlzIGhhcm1sZXNzLgotICBFWFBF
Q1RfVFJVRShHVEVTVF9JU19OVUxMX0xJVEVSQUxfKDEgLSAxKSk7Ci0gIEVYUEVDVF9UUlVFKEdU
RVNUX0lTX05VTExfTElURVJBTF8odHJ1ZSAmJiBmYWxzZSkpOwotI2VuZGlmCiB9CiAKIC8vIFRl
c3RzIHRoYXQgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBpcyBmYWxzZSB3aGVuIHggaXMgbm90
IGEgbnVsbApAQCAtMzIyLDEwICs1MTYsMTAgQEAgVEVTVChOdWxsTGl0ZXJhbFRlc3QsIElzRmFs
c2VGb3JOb25OdWxsTGl0ZXJhbHMpIHsKICAgRVhQRUNUX0ZBTFNFKEdURVNUX0lTX05VTExfTElU
RVJBTF8oc3RhdGljX2Nhc3Q8dm9pZCo+KE5VTEwpKSk7CiB9CiAKLSNpZmRlZiBfX0JPUkxBTkRD
X18KKyMgaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2
aW91cyAiI3ByYWdtYSBvcHRpb24gcHVzaCIgc3VwcHJlc3NlZCB0aGVtLgotI3ByYWdtYSBvcHRp
b24gcG9wCi0jZW5kaWYKKyMgIHByYWdtYSBvcHRpb24gcG9wCisjIGVuZGlmCiAKICNlbmRpZiAg
Ly8gR1RFU1RfQ0FOX0NPTVBBUkVfTlVMTAogLy8KQEAgLTMzMywzOSArNTI3LDQxIEBAIFRFU1Qo
TnVsbExpdGVyYWxUZXN0LCBJc0ZhbHNlRm9yTm9uTnVsbExpdGVyYWxzKSB7CiAKIC8vIFRlc3Rz
IHRoYXQgdGhlIE5VTCBjaGFyYWN0ZXIgTCdcMCcgaXMgZW5jb2RlZCBjb3JyZWN0bHkuCiBURVNU
KENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29kZU51bCkgewotICBjaGFyIGJ1ZmZlclszMl07
Ci0gIEVYUEVDVF9TVFJFUSgiIiwgQ29kZVBvaW50VG9VdGY4KEwnXDAnLCBidWZmZXIpKTsKKyAg
RVhQRUNUX0VRKCIiLCBDb2RlUG9pbnRUb1V0ZjgoTCdcMCcpKTsKIH0KIAogLy8gVGVzdHMgdGhh
dCBBU0NJSSBjaGFyYWN0ZXJzIGFyZSBlbmNvZGVkIGNvcnJlY3RseS4KIFRFU1QoQ29kZVBvaW50
VG9VdGY4VGVzdCwgQ2FuRW5jb2RlQXNjaWkpIHsKLSAgY2hhciBidWZmZXJbMzJdOwotICBFWFBF
Q1RfU1RSRVEoImEiLCBDb2RlUG9pbnRUb1V0ZjgoTCdhJywgYnVmZmVyKSk7Ci0gIEVYUEVDVF9T
VFJFUSgiWiIsIENvZGVQb2ludFRvVXRmOChMJ1onLCBidWZmZXIpKTsKLSAgRVhQRUNUX1NUUkVR
KCImIiwgQ29kZVBvaW50VG9VdGY4KEwnJicsIGJ1ZmZlcikpOwotICBFWFBFQ1RfU1RSRVEoIlx4
N0YiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDdGJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiYSIs
IENvZGVQb2ludFRvVXRmOChMJ2EnKSk7CisgIEVYUEVDVF9FUSgiWiIsIENvZGVQb2ludFRvVXRm
OChMJ1onKSk7CisgIEVYUEVDVF9FUSgiJiIsIENvZGVQb2ludFRvVXRmOChMJyYnKSk7CisgIEVY
UEVDVF9FUSgiXHg3RiIsIENvZGVQb2ludFRvVXRmOChMJ1x4N0YnKSk7CiB9CiAKIC8vIFRlc3Rz
IHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0aGF0IGhhdmUgOCB0byAxMSBiaXRzIGFyZSBlbmNv
ZGVkCiAvLyBhcyAxMTB4eHh4eCAxMHh4eHh4eC4KIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwg
Q2FuRW5jb2RlOFRvMTFCaXRzKSB7Ci0gIGNoYXIgYnVmZmVyWzMyXTsKICAgLy8gMDAwIDExMDEg
MDAxMSA9PiAxMTAtMDAwMTEgMTAtMDEwMDExCi0gIEVYUEVDVF9TVFJFUSgiXHhDM1x4OTMiLCBD
b2RlUG9pbnRUb1V0ZjgoTCdceEQzJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiXHhDM1x4OTMi
LCBDb2RlUG9pbnRUb1V0ZjgoTCdceEQzJykpOwogCiAgIC8vIDEwMSAwMTExIDAxMTAgPT4gMTEw
LTEwMTAxIDEwLTExMDExMAotICBFWFBFQ1RfU1RSRVEoIlx4RDVceEI2IiwgQ29kZVBvaW50VG9V
dGY4KEwnXHg1NzYnLCBidWZmZXIpKTsKKyAgLy8gU29tZSBjb21waWxlcnMgKGUuZy4sIEdDQyBv
biBNaW5HVykgY2Fubm90IGhhbmRsZSBub24tQVNDSUkgY29kZXBvaW50cworICAvLyBpbiB3aWRl
IHN0cmluZ3MgYW5kIHdpZGUgY2hhcnMuIEluIG9yZGVyIHRvIGFjY29tb2RhdGUgdGhlbSwgd2Ug
aGF2ZSB0bworICAvLyBpbnRyb2R1Y2Ugc3VjaCBjaGFyYWN0ZXIgY29uc3RhbnRzIGFzIGludGVn
ZXJzLgorICBFWFBFQ1RfRVEoIlx4RDVceEI2IiwKKyAgICAgICAgICAgIENvZGVQb2ludFRvVXRm
OChzdGF0aWNfY2FzdDx3Y2hhcl90PigweDU3NikpKTsKIH0KIAogLy8gVGVzdHMgdGhhdCBVbmlj
b2RlIGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSAxMiB0byAxNiBiaXRzIGFyZSBlbmNvZGVkCiAvLyBh
cyAxMTEweHh4eCAxMHh4eHh4eCAxMHh4eHh4eC4KIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwg
Q2FuRW5jb2RlMTJUbzE2Qml0cykgewotICBjaGFyIGJ1ZmZlclszMl07CiAgIC8vIDAwMDAgMTAw
MCAxMTAxIDAwMTEgPT4gMTExMC0wMDAwIDEwLTEwMDAxMSAxMC0wMTAwMTEKLSAgRVhQRUNUX1NU
UkVRKCJceEUwXHhBM1x4OTMiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDhEMycsIGJ1ZmZlcikpOwor
ICBFWFBFQ1RfRVEoIlx4RTBceEEzXHg5MyIsCisgICAgICAgICAgICBDb2RlUG9pbnRUb1V0Zjgo
c3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHg4RDMpKSk7CiAKICAgLy8gMTEwMCAwMTExIDAxMDAgMTEw
MSA9PiAxMTEwLTExMDAgMTAtMDExMTAxIDEwLTAwMTEwMQotICBFWFBFQ1RfU1RSRVEoIlx4RUNc
eDlEXHg4RCIsIENvZGVQb2ludFRvVXRmOChMJ1x4Qzc0RCcsIGJ1ZmZlcikpOworICBFWFBFQ1Rf
RVEoIlx4RUNceDlEXHg4RCIsCisgICAgICAgICAgICBDb2RlUG9pbnRUb1V0Zjgoc3RhdGljX2Nh
c3Q8d2NoYXJfdD4oMHhDNzREKSkpOwogfQogCiAjaWYgIUdURVNUX1dJREVfU1RSSU5HX1VTRVNf
VVRGMTZfCkBAIC0zNzYsMjIgKzU3MiwxOSBAQCBURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENh
bkVuY29kZTEyVG8xNkJpdHMpIHsKIC8vIFRlc3RzIHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0
aGF0IGhhdmUgMTcgdG8gMjEgYml0cyBhcmUgZW5jb2RlZAogLy8gYXMgMTExMTB4eHggMTB4eHh4
eHggMTB4eHh4eHggMTB4eHh4eHguCiBURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29k
ZTE3VG8yMUJpdHMpIHsKLSAgY2hhciBidWZmZXJbMzJdOwogICAvLyAwIDAwMDEgMDAwMCAxMDAw
IDExMDEgMDAxMSA9PiAxMTExMC0wMDAgMTAtMDEwMDAwIDEwLTEwMDAxMSAxMC0wMTAwMTEKLSAg
RVhQRUNUX1NUUkVRKCJceEYwXHg5MFx4QTNceDkzIiwgQ29kZVBvaW50VG9VdGY4KEwnXHgxMDhE
MycsIGJ1ZmZlcikpOworICBFWFBFQ1RfRVEoIlx4RjBceDkwXHhBM1x4OTMiLCBDb2RlUG9pbnRU
b1V0ZjgoTCdceDEwOEQzJykpOwogCiAgIC8vIDAgMDAwMSAwMDAwIDAxMDAgMDAwMCAwMDAwID0+
IDExMTEwLTAwMCAxMC0wMTAwMDAgMTAtMDEwMDAwIDEwLTAwMDAwMAotICBFWFBFQ1RfU1RSRVEo
Ilx4RjBceDkwXHg5MFx4ODAiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDEwNDAwJywgYnVmZmVyKSk7
CisgIEVYUEVDVF9FUSgiXHhGMFx4OTBceDkwXHg4MCIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA0
MDAnKSk7CiAKICAgLy8gMSAwMDAwIDEwMDAgMDExMCAwMDExIDAxMDAgPT4gMTExMTAtMTAwIDEw
LTAwMTAwMCAxMC0wMTEwMDAgMTAtMTEwMTAwCi0gIEVYUEVDVF9TVFJFUSgiXHhGNFx4ODhceDk4
XHhCNCIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA4NjM0JywgYnVmZmVyKSk7CisgIEVYUEVDVF9F
USgiXHhGNFx4ODhceDk4XHhCNCIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA4NjM0JykpOwogfQog
CiAvLyBUZXN0cyB0aGF0IGVuY29kaW5nIGFuIGludmFsaWQgY29kZS1wb2ludCBnZW5lcmF0ZXMg
dGhlIGV4cGVjdGVkIHJlc3VsdC4KIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2Rl
SW52YWxpZENvZGVQb2ludCkgewotICBjaGFyIGJ1ZmZlclszMl07Ci0gIEVYUEVDVF9TVFJFUSgi
KEludmFsaWQgVW5pY29kZSAweDEyMzRBQkNEKSIsCi0gICAgICAgICAgICAgICBDb2RlUG9pbnRU
b1V0ZjgoTCdceDEyMzRBQkNEJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiKEludmFsaWQgVW5p
Y29kZSAweDEyMzRBQkNEKSIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTIzNEFCQ0QnKSk7CiB9CiAK
ICNlbmRpZiAgLy8gIUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCkBAIC00MjAsMjAgKzYx
MywyMyBAQCBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGU4VG8xMUJpdHMpIHsK
ICAgRVhQRUNUX1NUUkVRKCJceEMzXHg5MyIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEQzIiwgLTEp
LmNfc3RyKCkpOwogCiAgIC8vIDEwMSAwMTExIDAxMTAgPT4gMTEwLTEwMTAxIDEwLTExMDExMAot
ICBFWFBFQ1RfU1RSRVEoIlx4RDVceEI2IiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4NTc2IiwgMSku
Y19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHhENVx4QjYiLCBXaWRlU3RyaW5nVG9VdGY4KEwi
XHg1NzYiLCAtMSkuY19zdHIoKSk7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0geyAweDU3NiwgJ1ww
JyB9OworICBFWFBFQ1RfU1RSRVEoIlx4RDVceEI2IiwgV2lkZVN0cmluZ1RvVXRmOChzLCAxKS5j
X3N0cigpKTsKKyAgRVhQRUNUX1NUUkVRKCJceEQ1XHhCNiIsIFdpZGVTdHJpbmdUb1V0Zjgocywg
LTEpLmNfc3RyKCkpOwogfQogCiAvLyBUZXN0cyB0aGF0IFVuaWNvZGUgY29kZS1wb2ludHMgdGhh
dCBoYXZlIDEyIHRvIDE2IGJpdHMgYXJlIGVuY29kZWQKIC8vIGFzIDExMTB4eHh4IDEweHh4eHh4
IDEweHh4eHh4LgogVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgQ2FuRW5jb2RlMTJUbzE2Qml0
cykgewogICAvLyAwMDAwIDEwMDAgMTEwMSAwMDExID0+IDExMTAtMDAwMCAxMC0xMDAwMTEgMTAt
MDEwMDExCi0gIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lkZVN0cmluZ1RvVXRmOChM
Ilx4OEQzIiwgMSkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lk
ZVN0cmluZ1RvVXRmOChMIlx4OEQzIiwgLTEpLmNfc3RyKCkpOworICBjb25zdCB3Y2hhcl90IHMx
W10gPSB7IDB4OEQzLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lk
ZVN0cmluZ1RvVXRmOChzMSwgMSkuY19zdHIoKSk7CisgIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNc
eDkzIiwgV2lkZVN0cmluZ1RvVXRmOChzMSwgLTEpLmNfc3RyKCkpOwogCiAgIC8vIDExMDAgMDEx
MSAwMTAwIDExMDEgPT4gMTExMC0xMTAwIDEwLTAxMTEwMSAxMC0wMDExMDEKLSAgRVhQRUNUX1NU
UkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhDNzREIiwgMSkuY19zdHIo
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHhFQ1x4OURceDhEIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4
Qzc0RCIsIC0xKS5jX3N0cigpKTsKKyAgY29uc3Qgd2NoYXJfdCBzMltdID0geyAweEM3NEQsICdc
MCcgfTsKKyAgRVhQRUNUX1NUUkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5nVG9VdGY4KHMy
LCAxKS5jX3N0cigpKTsKKyAgRVhQRUNUX1NUUkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5n
VG9VdGY4KHMyLCAtMSkuY19zdHIoKSk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgdGhlIGNvbnZlcnNp
b24gc3RvcHMgd2hlbiB0aGUgZnVuY3Rpb24gZW5jb3VudGVycyBcMCBjaGFyYWN0ZXIuCkBAIC00
NDcsNyArNjQzLDYgQEAgVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgU3RvcHNXaGVuTGVuZ3Ro
TGltaXRSZWFjaGVkKSB7CiAgIEVYUEVDVF9TVFJFUSgiQUJDIiwgV2lkZVN0cmluZ1RvVXRmOChM
IkFCQ0RFRiIsIDMpLmNfc3RyKCkpOwogfQogCi0KICNpZiAhR1RFU1RfV0lERV9TVFJJTkdfVVNF
U19VVEYxNl8KIC8vIFRlc3RzIHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0aGF0IGhhdmUgMTcg
dG8gMjEgYml0cyBhcmUgZW5jb2RlZAogLy8gYXMgMTExMTB4eHggMTB4eHh4eHggMTB4eHh4eHgg
MTB4eHh4eHguIFRoaXMgY29kZSBtYXkgbm90IGNvbXBpbGUKQEAgLTQ3MSwyNSArNjY2LDI5IEBA
IFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENhbkVuY29kZUludmFsaWRDb2RlUG9pbnQpIHsK
IC8vIFRlc3RzIHRoYXQgc3Vycm9nYXRlIHBhaXJzIGFyZSBlbmNvZGVkIGNvcnJlY3RseSBvbiB0
aGUgc3lzdGVtcyB1c2luZwogLy8gVVRGLTE2IGVuY29kaW5nIGluIHRoZSB3aWRlIHN0cmluZ3Mu
CiBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGVWYWxpZFV0ZjE2U1Vycm9nYXRl
UGFpcnMpIHsKLSAgRVhQRUNUX1NUUkVRKCJceEYwXHg5MFx4OTBceDgwIiwKLSAgICAgICAgICAg
ICAgIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEQ4MDFceERDMDAiLCAtMSkuY19zdHIoKSk7CisgIGNv
bnN0IHdjaGFyX3Qgc1tdID0geyAweEQ4MDEsIDB4REMwMCwgJ1wwJyB9OworICBFWFBFQ1RfU1RS
RVEoIlx4RjBceDkwXHg5MFx4ODAiLCBXaWRlU3RyaW5nVG9VdGY4KHMsIC0xKS5jX3N0cigpKTsK
IH0KIAogLy8gVGVzdHMgdGhhdCBlbmNvZGluZyBhbiBpbnZhbGlkIFVURi0xNiBzdXJyb2dhdGUg
cGFpcgogLy8gZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCByZXN1bHQuCiBURVNUKFdpZGVTdHJpbmdU
b1V0ZjhUZXN0LCBDYW5FbmNvZGVJbnZhbGlkVXRmMTZTdXJyb2dhdGVQYWlyKSB7CiAgIC8vIExl
YWRpbmcgc3Vycm9nYXRlIGlzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZy4KLSAgRVhQRUNUX1NU
UkVRKCJceEVEXHhBMFx4ODAiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhEODAwIiwgLTEpLmNfc3Ry
KCkpOworICBjb25zdCB3Y2hhcl90IHMxW10gPSB7IDB4RDgwMCwgJ1wwJyB9OworICBFWFBFQ1Rf
U1RSRVEoIlx4RURceEEwXHg4MCIsIFdpZGVTdHJpbmdUb1V0ZjgoczEsIC0xKS5jX3N0cigpKTsK
ICAgLy8gTGVhZGluZyBzdXJyb2dhdGUgaXMgbm90IGZvbGxvd2VkIGJ5IHRoZSB0cmFpbGluZyBz
dXJyb2dhdGUuCi0gIEVYUEVDVF9TVFJFUSgiXHhFRFx4QTBceDgwJCIsIFdpZGVTdHJpbmdUb1V0
ZjgoTCJceEQ4MDAkIiwgLTEpLmNfc3RyKCkpOworICBjb25zdCB3Y2hhcl90IHMyW10gPSB7IDB4
RDgwMCwgJ00nLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhFRFx4QTBceDgwTSIsIFdpZGVT
dHJpbmdUb1V0ZjgoczIsIC0xKS5jX3N0cigpKTsKICAgLy8gVHJhaWxpbmcgc3Vycm9nYXRlIGFw
cGVhcmFzIHdpdGhvdXQgYSBsZWFkaW5nIHN1cnJvZ2F0ZS4KLSAgRVhQRUNUX1NUUkVRKCJceEVE
XHhCMFx4ODBQUVIiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhEQzAwUFFSIiwgLTEpLmNfc3RyKCkp
OworICBjb25zdCB3Y2hhcl90IHMzW10gPSB7IDB4REMwMCwgJ1AnLCAnUScsICdSJywgJ1wwJyB9
OworICBFWFBFQ1RfU1RSRVEoIlx4RURceEIwXHg4MFBRUiIsIFdpZGVTdHJpbmdUb1V0ZjgoczMs
IC0xKS5jX3N0cigpKTsKIH0KICNlbmRpZiAgLy8gIUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRG
MTZfCiAKIC8vIFRlc3RzIHRoYXQgY29kZXBvaW50IGNvbmNhdGVuYXRpb24gd29ya3MgY29ycmVj
dGx5LgogI2lmICFHVEVTVF9XSURFX1NUUklOR19VU0VTX1VURjE2XwogVEVTVChXaWRlU3RyaW5n
VG9VdGY4VGVzdCwgQ29uY2F0ZW5hdGVzQ29kZXBvaW50c0NvcnJlY3RseSkgeworICBjb25zdCB3
Y2hhcl90IHNbXSA9IHsgMHgxMDg2MzQsIDB4Qzc0RCwgJ1xuJywgMHg1NzYsIDB4OEQzLCAweDEw
ODYzNCwgJ1wwJ307CiAgIEVYUEVDVF9TVFJFUSgKICAgICAgICJceEY0XHg4OFx4OThceEI0Igog
ICAgICAgICAgICJceEVDXHg5RFx4OEQiCkBAIC00OTcsMTMgKzY5NiwxNCBAQCBURVNUKFdpZGVT
dHJpbmdUb1V0ZjhUZXN0LCBDb25jYXRlbmF0ZXNDb2RlcG9pbnRzQ29ycmVjdGx5KSB7CiAgICAg
ICAgICAgIlx4RDVceEI2IgogICAgICAgICAgICJceEUwXHhBM1x4OTMiCiAgICAgICAgICAgIlx4
RjRceDg4XHg5OFx4QjQiLAotICAgICAgV2lkZVN0cmluZ1RvVXRmOChMIlx4MTA4NjM0XHhDNzRE
XG5ceDU3Nlx4OEQzXHgxMDg2MzQiLCAtMSkuY19zdHIoKSk7CisgICAgICBXaWRlU3RyaW5nVG9V
dGY4KHMsIC0xKS5jX3N0cigpKTsKIH0KICNlbHNlCiBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0
LCBDb25jYXRlbmF0ZXNDb2RlcG9pbnRzQ29ycmVjdGx5KSB7CisgIGNvbnN0IHdjaGFyX3Qgc1td
ID0geyAweEM3NEQsICdcbicsIDB4NTc2LCAweDhEMywgJ1wwJ307CiAgIEVYUEVDVF9TVFJFUSgK
ICAgICAgICJceEVDXHg5RFx4OEQiICJcbiIgIlx4RDVceEI2IiAiXHhFMFx4QTNceDkzIiwKLSAg
ICAgIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEM3NERcblx4NTc2XHg4RDMiLCAtMSkuY19zdHIoKSk7
CisgICAgICBXaWRlU3RyaW5nVG9VdGY4KHMsIC0xKS5jX3N0cigpKTsKIH0KICNlbmRpZiAgLy8g
IUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCiAKQEAgLTc5NywyNjkgKzk5NywxNiBAQCBU
RVNUKEFzc2VydEhlbHBlclRlc3QsIEFzc2VydEhlbHBlcklzU21hbGwpIHsKICAgRVhQRUNUX0xF
KHNpemVvZih0ZXN0aW5nOjppbnRlcm5hbDo6QXNzZXJ0SGVscGVyKSwgc2l6ZW9mKHZvaWQqKSk7
CiB9CiAKLS8vIFRlc3RzIHRoZSBTdHJpbmcgY2xhc3MuCi0KLS8vIFRlc3RzIFN0cmluZydzIGNv
bnN0cnVjdG9ycy4KLVRFU1QoU3RyaW5nVGVzdCwgQ29uc3RydWN0b3JzKSB7Ci0gIC8vIERlZmF1
bHQgY3Rvci4KLSAgU3RyaW5nIHMxOwotICAvLyBXZSBhcmVuJ3QgdXNpbmcgRVhQRUNUX0VRKE5V
TEwsIHMxLmNfc3RyKCkpIGJlY2F1c2UgY29tcGFyaW5nCi0gIC8vIHBvaW50ZXJzIHdpdGggTlVM
TCBpc24ndCBzdXBwb3J0ZWQgb24gYWxsIHBsYXRmb3Jtcy4KLSAgRVhQRUNUX0VRKDBVLCBzMS5s
ZW5ndGgoKSk7Ci0gIEVYUEVDVF9UUlVFKE5VTEwgPT0gczEuY19zdHIoKSk7Ci0KLSAgLy8gSW1w
bGljaXRseSBjb25zdHJ1Y3RzIGZyb20gYSBDLXN0cmluZy4KLSAgU3RyaW5nIHMyID0gIkhpIjsK
LSAgRVhQRUNUX0VRKDJVLCBzMi5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiSGkiLCBzMi5j
X3N0cigpKTsKLQotICAvLyBDb25zdHJ1Y3RzIGZyb20gYSBDLXN0cmluZyBhbmQgYSBsZW5ndGgu
Ci0gIFN0cmluZyBzMygiaGVsbG8iLCAzKTsKLSAgRVhQRUNUX0VRKDNVLCBzMy5sZW5ndGgoKSk7
Ci0gIEVYUEVDVF9TVFJFUSgiaGVsIiwgczMuY19zdHIoKSk7Ci0KLSAgLy8gVGhlIGVtcHR5IFN0
cmluZyBzaG91bGQgYmUgY3JlYXRlZCB3aGVuIFN0cmluZyBpcyBjb25zdHJ1Y3RlZCB3aXRoCi0g
IC8vIGEgTlVMTCBwb2ludGVyIGFuZCBsZW5ndGggMC4KLSAgRVhQRUNUX0VRKDBVLCBTdHJpbmco
TlVMTCwgMCkubGVuZ3RoKCkpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKE5VTEwsIDApLmNfc3Ry
KCkgPT0gTlVMTCk7Ci0KLSAgLy8gQ29uc3RydWN0cyBhIFN0cmluZyB0aGF0IGNvbnRhaW5zICdc
MCcuCi0gIFN0cmluZyBzNCgiYVwwYmNkIiwgNCk7Ci0gIEVYUEVDVF9FUSg0VSwgczQubGVuZ3Ro
KCkpOwotICBFWFBFQ1RfRVEoJ2EnLCBzNC5jX3N0cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdcMCcs
IHM0LmNfc3RyKClbMV0pOwotICBFWFBFQ1RfRVEoJ2InLCBzNC5jX3N0cigpWzJdKTsKLSAgRVhQ
RUNUX0VRKCdjJywgczQuY19zdHIoKVszXSk7Ci0KLSAgLy8gQ29weSBjdG9yIHdoZXJlIHRoZSBz
b3VyY2UgaXMgTlVMTC4KLSAgY29uc3QgU3RyaW5nIG51bGxfc3RyOwotICBTdHJpbmcgczUgPSBu
dWxsX3N0cjsKLSAgRVhQRUNUX1RSVUUoczUuY19zdHIoKSA9PSBOVUxMKTsKLQotICAvLyBDb3B5
IGN0b3Igd2hlcmUgdGhlIHNvdXJjZSBpc24ndCBOVUxMLgotICBTdHJpbmcgczYgPSBzMzsKLSAg
RVhQRUNUX0VRKDNVLCBzNi5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiaGVsIiwgczYuY19z
dHIoKSk7Ci0KLSAgLy8gQ29weSBjdG9yIHdoZXJlIHRoZSBzb3VyY2UgY29udGFpbnMgJ1wwJy4K
LSAgU3RyaW5nIHM3ID0gczQ7Ci0gIEVYUEVDVF9FUSg0VSwgczcubGVuZ3RoKCkpOwotICBFWFBF
Q1RfRVEoJ2EnLCBzNy5jX3N0cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdcMCcsIHM3LmNfc3RyKClb
MV0pOwotICBFWFBFQ1RfRVEoJ2InLCBzNy5jX3N0cigpWzJdKTsKLSAgRVhQRUNUX0VRKCdjJywg
czcuY19zdHIoKVszXSk7Ci19Ci0KLVRFU1QoU3RyaW5nVGVzdCwgQ29udmVydHNGcm9tU3RkU3Ry
aW5nKSB7Ci0gIC8vIEFuIGVtcHR5IHN0ZDo6c3RyaW5nLgotICBjb25zdCBzdGQ6OnN0cmluZyBz
cmMxKCIiKTsKLSAgY29uc3QgU3RyaW5nIGRlc3QxID0gc3JjMTsKLSAgRVhQRUNUX0VRKDBVLCBk
ZXN0MS5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgZGVzdDEuY19zdHIoKSk7Ci0KLSAg
Ly8gQSBub3JtYWwgc3RkOjpzdHJpbmcuCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIHNyYzIoIkhpIik7
Ci0gIGNvbnN0IFN0cmluZyBkZXN0MiA9IHNyYzI7Ci0gIEVYUEVDVF9FUSgyVSwgZGVzdDIubGVu
Z3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoIkhpIiwgZGVzdDIuY19zdHIoKSk7Ci0KLSAgLy8gQW4g
c3RkOjpzdHJpbmcgd2l0aCBhbiBlbWJlZGRlZCBOVUwgY2hhcmFjdGVyLgotICBjb25zdCBjaGFy
IHNyYzNbXSA9ICJhXDBiIjsKLSAgY29uc3QgU3RyaW5nIGRlc3QzID0gc3RkOjpzdHJpbmcoc3Jj
Mywgc2l6ZW9mKHNyYzMpKTsKLSAgRVhQRUNUX0VRKHNpemVvZihzcmMzKSwgZGVzdDMubGVuZ3Ro
KCkpOwotICBFWFBFQ1RfRVEoJ2EnLCBkZXN0My5jX3N0cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdc
MCcsIGRlc3QzLmNfc3RyKClbMV0pOwotICBFWFBFQ1RfRVEoJ2InLCBkZXN0My5jX3N0cigpWzJd
KTsKLX0KLQotVEVTVChTdHJpbmdUZXN0LCBDb252ZXJ0c1RvU3RkU3RyaW5nKSB7Ci0gIC8vIEFu
IGVtcHR5IFN0cmluZy4KLSAgY29uc3QgU3RyaW5nIHNyYzEoIiIpOwotICBjb25zdCBzdGQ6OnN0
cmluZyBkZXN0MSA9IHNyYzE7Ci0gIEVYUEVDVF9FUSgiIiwgZGVzdDEpOwotCi0gIC8vIEEgbm9y
bWFsIFN0cmluZy4KLSAgY29uc3QgU3RyaW5nIHNyYzIoIkhpIik7Ci0gIGNvbnN0IHN0ZDo6c3Ry
aW5nIGRlc3QyID0gc3JjMjsKLSAgRVhQRUNUX0VRKCJIaSIsIGRlc3QyKTsKLQotICAvLyBBIFN0
cmluZyBjb250YWluaW5nIGEgJ1wwJy4KLSAgY29uc3QgU3RyaW5nIHNyYzMoInhcMHkiLCAzKTsK
LSAgY29uc3Qgc3RkOjpzdHJpbmcgZGVzdDMgPSBzcmMzOwotICBFWFBFQ1RfRVEoc3RkOjpzdHJp
bmcoInhcMHkiLCAzKSwgZGVzdDMpOwotfQotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcK
LQotVEVTVChTdHJpbmdUZXN0LCBDb252ZXJ0c0Zyb21HbG9iYWxTdHJpbmcpIHsKLSAgLy8gQW4g
ZW1wdHkgOjpzdHJpbmcuCi0gIGNvbnN0IDo6c3RyaW5nIHNyYzEoIiIpOwotICBjb25zdCBTdHJp
bmcgZGVzdDEgPSBzcmMxOwotICBFWFBFQ1RfRVEoMFUsIGRlc3QxLmxlbmd0aCgpKTsKLSAgRVhQ
RUNUX1NUUkVRKCIiLCBkZXN0MS5jX3N0cigpKTsKLQotICAvLyBBIG5vcm1hbCA6OnN0cmluZy4K
LSAgY29uc3QgOjpzdHJpbmcgc3JjMigiSGkiKTsKLSAgY29uc3QgU3RyaW5nIGRlc3QyID0gc3Jj
MjsKLSAgRVhQRUNUX0VRKDJVLCBkZXN0Mi5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiSGki
LCBkZXN0Mi5jX3N0cigpKTsKLQotICAvLyBBbiA6OnN0cmluZyB3aXRoIGFuIGVtYmVkZGVkIE5V
TCBjaGFyYWN0ZXIuCi0gIGNvbnN0IGNoYXIgc3JjM1tdID0gInhcMHkiOwotICBjb25zdCBTdHJp
bmcgZGVzdDMgPSA6OnN0cmluZyhzcmMzLCBzaXplb2Yoc3JjMykpOwotICBFWFBFQ1RfRVEoc2l6
ZW9mKHNyYzMpLCBkZXN0My5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgneCcsIGRlc3QzLmNfc3Ry
KClbMF0pOwotICBFWFBFQ1RfRVEoJ1wwJywgZGVzdDMuY19zdHIoKVsxXSk7Ci0gIEVYUEVDVF9F
USgneScsIGRlc3QzLmNfc3RyKClbMl0pOwotfQotCi1URVNUKFN0cmluZ1Rlc3QsIENvbnZlcnRz
VG9HbG9iYWxTdHJpbmcpIHsKLSAgLy8gQW4gZW1wdHkgU3RyaW5nLgotICBjb25zdCBTdHJpbmcg
c3JjMSgiIik7Ci0gIGNvbnN0IDo6c3RyaW5nIGRlc3QxID0gc3JjMTsKLSAgRVhQRUNUX0VRKCIi
LCBkZXN0MSk7Ci0KLSAgLy8gQSBub3JtYWwgU3RyaW5nLgotICBjb25zdCBTdHJpbmcgc3JjMigi
SGkiKTsKLSAgY29uc3QgOjpzdHJpbmcgZGVzdDIgPSBzcmMyOwotICBFWFBFQ1RfRVEoIkhpIiwg
ZGVzdDIpOwotCi0gIGNvbnN0IFN0cmluZyBzcmMzKCJ4XDB5IiwgMyk7Ci0gIGNvbnN0IDo6c3Ry
aW5nIGRlc3QzID0gc3JjMzsKLSAgRVhQRUNUX0VRKDo6c3RyaW5nKCJ4XDB5IiwgMyksIGRlc3Qz
KTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotCi0vLyBUZXN0cyBT
dHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKCkuCi1URVNUKFN0cmluZ1Rlc3QsIFNob3dDU3RyaW5n
UXVvdGVkKSB7Ci0gIEVYUEVDVF9TVFJFUSgiKG51bGwpIiwKLSAgICAgICAgICAgICAgIFN0cmlu
Zzo6U2hvd0NTdHJpbmdRdW90ZWQoTlVMTCkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXCJc
IiIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKCIiKS5jX3N0cigp
KTsKLSAgRVhQRUNUX1NUUkVRKCJcImZvb1wiIiwKLSAgICAgICAgICAgICAgIFN0cmluZzo6U2hv
d0NTdHJpbmdRdW90ZWQoImZvbyIpLmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6OmVt
cHR5KCkuCi1URVNUKFN0cmluZ1Rlc3QsIEVtcHR5KSB7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygi
IikuZW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShTdHJpbmcoKS5lbXB0eSgpKTsKLSAgRVhQRUNU
X0ZBTFNFKFN0cmluZyhOVUxMKS5lbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiYSIp
LmVtcHR5KCkpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCJcMCIsIDEpLmVtcHR5KCkpOwotfQot
Ci0vLyBUZXN0cyBTdHJpbmc6OkNvbXBhcmUoKS4KLVRFU1QoU3RyaW5nVGVzdCwgQ29tcGFyZSkg
ewotICAvLyBOVUxMIHZzIE5VTEwuCi0gIEVYUEVDVF9FUSgwLCBTdHJpbmcoKS5Db21wYXJlKFN0
cmluZygpKSk7Ci0KLSAgLy8gTlVMTCB2cyBub24tTlVMTC4KLSAgRVhQRUNUX0VRKC0xLCBTdHJp
bmcoKS5Db21wYXJlKFN0cmluZygiIikpKTsKLQotICAvLyBOb24tTlVMTCB2cyBOVUxMLgotICBF
WFBFQ1RfRVEoMSwgU3RyaW5nKCIiKS5Db21wYXJlKFN0cmluZygpKSk7Ci0KLSAgLy8gVGhlIGZv
bGxvd2luZyBjb3ZlcnMgbm9uLU5VTEwgdnMgbm9uLU5VTEwuCi0KLSAgLy8gIiIgdnMgIiIuCi0g
IEVYUEVDVF9FUSgwLCBTdHJpbmcoIiIpLkNvbXBhcmUoU3RyaW5nKCIiKSkpOwotCi0gIC8vICIi
IHZzIG5vbi0iIi4KLSAgRVhQRUNUX0VRKC0xLCBTdHJpbmcoIiIpLkNvbXBhcmUoU3RyaW5nKCJc
MCIsIDEpKSk7Ci0gIEVYUEVDVF9FUSgtMSwgU3RyaW5nKCIiKS5Db21wYXJlKCIgIikpOwotCi0g
IC8vIE5vbi0iIiB2cyAiIi4KLSAgRVhQRUNUX0VRKDEsIFN0cmluZygiYSIpLkNvbXBhcmUoU3Ry
aW5nKCIiKSkpOwotCi0gIC8vIFRoZSBmb2xsb3dpbmcgY292ZXJzIG5vbi0iIiB2cyBub24tIiIu
Ci0KLSAgLy8gU2FtZSBsZW5ndGggYW5kIGVxdWFsLgotICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCJh
IikuQ29tcGFyZShTdHJpbmcoImEiKSkpOwotCi0gIC8vIFNhbWUgbGVuZ3RoIGFuZCBkaWZmZXJl
bnQuCi0gIEVYUEVDVF9FUSgtMSwgU3RyaW5nKCJhXDBiIiwgMykuQ29tcGFyZShTdHJpbmcoImFc
MGMiLCAzKSkpOwotICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCJiIikuQ29tcGFyZShTdHJpbmcoImEi
KSkpOwotCi0gIC8vIERpZmZlcmVudCBsZW5ndGhzLgotICBFWFBFQ1RfRVEoLTEsIFN0cmluZygi
YSIpLkNvbXBhcmUoU3RyaW5nKCJhYiIpKSk7Ci0gIEVYUEVDVF9FUSgtMSwgU3RyaW5nKCJhIiku
Q29tcGFyZShTdHJpbmcoImFcMCIsIDIpKSk7Ci0gIEVYUEVDVF9FUSgxLCBTdHJpbmcoImFiYyIp
LkNvbXBhcmUoU3RyaW5nKCJhYWNkIikpKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpvcGVyYXRv
cj09KCkuCi1URVNUKFN0cmluZ1Rlc3QsIEVxdWFscykgewotICBjb25zdCBTdHJpbmcgbnVsbChO
VUxMKTsKLSAgRVhQRUNUX1RSVUUobnVsbCA9PSBOVUxMKTsgIC8vIE5PTElOVAotICBFWFBFQ1Rf
RkFMU0UobnVsbCA9PSAiIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKG51bGwgPT0gImJh
ciIpOyAgLy8gTk9MSU5UCi0KLSAgY29uc3QgU3RyaW5nIGVtcHR5KCIiKTsKLSAgRVhQRUNUX0ZB
TFNFKGVtcHR5ID09IE5VTEwpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKGVtcHR5ID09ICIi
KTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRkFMU0UoZW1wdHkgPT0gImJhciIpOyAgLy8gTk9MSU5U
Ci0KLSAgY29uc3QgU3RyaW5nIGZvbygiZm9vIik7Ci0gIEVYUEVDVF9GQUxTRShmb28gPT0gTlVM
TCk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKGZvbyA9PSAiIik7ICAvLyBOT0xJTlQKLSAg
RVhQRUNUX0ZBTFNFKGZvbyA9PSAiYmFyIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUoZm9v
ID09ICJmb28iKTsgIC8vIE5PTElOVAotCi0gIGNvbnN0IFN0cmluZyBiYXIoInhcMHkiLCAzKTsK
LSAgRVhQRUNUX0ZBTFNFKGJhciA9PSAieCIpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6Om9wZXJh
dG9yIT0oKS4KLVRFU1QoU3RyaW5nVGVzdCwgTm90RXF1YWxzKSB7Ci0gIGNvbnN0IFN0cmluZyBu
dWxsKE5VTEwpOwotICBFWFBFQ1RfRkFMU0UobnVsbCAhPSBOVUxMKTsgIC8vIE5PTElOVAotICBF
WFBFQ1RfVFJVRShudWxsICE9ICIiKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShudWxsICE9
ICJiYXIiKTsgIC8vIE5PTElOVAotCi0gIGNvbnN0IFN0cmluZyBlbXB0eSgiIik7Ci0gIEVYUEVD
VF9UUlVFKGVtcHR5ICE9IE5VTEwpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShlbXB0eSAh
PSAiIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUoZW1wdHkgIT0gImJhciIpOyAgLy8gTk9M
SU5UCi0KLSAgY29uc3QgU3RyaW5nIGZvbygiZm9vIik7Ci0gIEVYUEVDVF9UUlVFKGZvbyAhPSBO
VUxMKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShmb28gIT0gIiIpOyAgLy8gTk9MSU5UCi0g
IEVYUEVDVF9UUlVFKGZvbyAhPSAiYmFyIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKGZv
byAhPSAiZm9vIik7ICAvLyBOT0xJTlQKLQotICBjb25zdCBTdHJpbmcgYmFyKCJ4XDB5IiwgMyk7
Ci0gIEVYUEVDVF9UUlVFKGJhciAhPSAieCIpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6Omxlbmd0
aCgpLgotVEVTVChTdHJpbmdUZXN0LCBMZW5ndGgpIHsKLSAgRVhQRUNUX0VRKDBVLCBTdHJpbmco
KS5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgwVSwgU3RyaW5nKCIiKS5sZW5ndGgoKSk7Ci0gIEVY
UEVDVF9FUSgyVSwgU3RyaW5nKCJhYiIpLmxlbmd0aCgpKTsKLSAgRVhQRUNUX0VRKDNVLCBTdHJp
bmcoImFcMGIiLCAzKS5sZW5ndGgoKSk7Ci19Ci0KLS8vIFRlc3RzIFN0cmluZzo6RW5kc1dpdGgo
KS4KLVRFU1QoU3RyaW5nVGVzdCwgRW5kc1dpdGgpIHsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCJm
b29iYXIiKS5FbmRzV2l0aCgiYmFyIikpOwotICBFWFBFQ1RfVFJVRShTdHJpbmcoImZvb2JhciIp
LkVuZHNXaXRoKCIiKSk7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiIikuRW5kc1dpdGgoIiIpKTsK
LQotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCJmb29iYXIiKS5FbmRzV2l0aCgiZm9vIikpOwotICBF
WFBFQ1RfRkFMU0UoU3RyaW5nKCIiKS5FbmRzV2l0aCgiZm9vIikpOwotfQotCiAvLyBUZXN0cyBT
dHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCkuCiBURVNUKFN0cmluZ1Rlc3QsIEVuZHNX
aXRoQ2FzZUluc2Vuc2l0aXZlKSB7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiZm9vYmFyIikuRW5k
c1dpdGhDYXNlSW5zZW5zaXRpdmUoIkJBUiIpKTsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCJmb29i
YVIiKS5FbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiYmFyIikpOwotICBFWFBFQ1RfVFJVRShTdHJp
bmcoImZvb2JhciIpLkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCIiKSk7Ci0gIEVYUEVDVF9UUlVF
KFN0cmluZygiIikuRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoIiIpKTsKKyAgRVhQRUNUX1RSVUUo
U3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vYmFyIiwgIkJBUiIpKTsKKyAgRVhQ
RUNUX1RSVUUoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vYmFSIiwgImJhciIp
KTsKKyAgRVhQRUNUX1RSVUUoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vYmFy
IiwgIiIpKTsKKyAgRVhQRUNUX1RSVUUoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgi
IiwgIiIpKTsKIAotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCJGb29iYXIiKS5FbmRzV2l0aENhc2VJ
bnNlbnNpdGl2ZSgiZm9vIikpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCJmb29iYXIiKS5FbmRz
V2l0aENhc2VJbnNlbnNpdGl2ZSgiRm9vIikpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCIiKS5F
bmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vIikpOworICBFWFBFQ1RfRkFMU0UoU3RyaW5nOjpF
bmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiRm9vYmFyIiwgImZvbyIpKTsKKyAgRVhQRUNUX0ZBTFNF
KFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImZvb2JhciIsICJGb28iKSk7CisgIEVY
UEVDVF9GQUxTRShTdHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCIiLCAiZm9vIikpOwog
fQogCiAvLyBDKytCdWlsZGVyJ3MgcHJlcHJvY2Vzc29yIGlzIGJ1Z2d5OyBpdCBmYWlscyB0byBl
eHBhbmQgbWFjcm9zIHRoYXQKQEAgLTEwNzksODcgKzEwMjYsNiBAQCBURVNUKFN0cmluZ1Rlc3Qs
IENhc2VJbnNlbnNpdGl2ZVdpZGVDU3RyaW5nRXF1YWxzKSB7CiAgIEVYUEVDVF9UUlVFKFN0cmlu
Zzo6Q2FzZUluc2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMoTCJGT09CQVIiLCBMImZvb2JhciIp
KTsKIH0KIAotLy8gVGVzdHMgdGhhdCBOVUxMIGNhbiBiZSBhc3NpZ25lZCB0byBhIFN0cmluZy4K
LVRFU1QoU3RyaW5nVGVzdCwgQ2FuQmVBc3NpZ25lZE5VTEwpIHsKLSAgY29uc3QgU3RyaW5nIHNy
YyhOVUxMKTsKLSAgU3RyaW5nIGRlc3Q7Ci0KLSAgZGVzdCA9IHNyYzsKLSAgRVhQRUNUX1NUUkVR
KE5VTEwsIGRlc3QuY19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIGVtcHR5IHN0cmlu
ZyAiIiBjYW4gYmUgYXNzaWduZWQgdG8gYSBTdHJpbmcuCi1URVNUKFN0cmluZ1Rlc3QsIENhbkJl
QXNzaWduZWRFbXB0eSkgewotICBjb25zdCBTdHJpbmcgc3JjKCIiKTsKLSAgU3RyaW5nIGRlc3Q7
Ci0KLSAgZGVzdCA9IHNyYzsKLSAgRVhQRUNUX1NUUkVRKCIiLCBkZXN0LmNfc3RyKCkpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IGEgbm9uLWVtcHR5IHN0cmluZyBjYW4gYmUgYXNzaWduZWQgdG8gYSBT
dHJpbmcuCi1URVNUKFN0cmluZ1Rlc3QsIENhbkJlQXNzaWduZWROb25FbXB0eSkgewotICBjb25z
dCBTdHJpbmcgc3JjKCJoZWxsbyIpOwotICBTdHJpbmcgZGVzdDsKLSAgZGVzdCA9IHNyYzsKLSAg
RVhQRUNUX0VRKDVVLCBkZXN0Lmxlbmd0aCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJoZWxsbyIsIGRl
c3QuY19zdHIoKSk7Ci0KLSAgY29uc3QgU3RyaW5nIHNyYzIoInhcMHkiLCAzKTsKLSAgU3RyaW5n
IGRlc3QyOwotICBkZXN0MiA9IHNyYzI7Ci0gIEVYUEVDVF9FUSgzVSwgZGVzdDIubGVuZ3RoKCkp
OwotICBFWFBFQ1RfRVEoJ3gnLCBkZXN0Mi5jX3N0cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdcMCcs
IGRlc3QyLmNfc3RyKClbMV0pOwotICBFWFBFQ1RfRVEoJ3knLCBkZXN0Mi5jX3N0cigpWzJdKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBhIFN0cmluZyBjYW4gYmUgYXNzaWduZWQgdG8gaXRzZWxmLgot
VEVTVChTdHJpbmdUZXN0LCBDYW5CZUFzc2lnbmVkU2VsZikgewotICBTdHJpbmcgZGVzdCgiaGVs
bG8iKTsKLQotICBkZXN0ID0gZGVzdDsKLSAgRVhQRUNUX1NUUkVRKCJoZWxsbyIsIGRlc3QuY19z
dHIoKSk7Ci19Ci0KLS8vIFN1biBTdHVkaW8gPCAxMiBpbmNvcnJlY3RseSByZWplY3RzIHRoaXMg
Y29kZSBkdWUgdG8gYW4gb3ZlcmxvYWRpbmcKLS8vIGFtYmlndWl0eS4KLSNpZiAhKGRlZmluZWQo
X19TVU5QUk9fQ0MpICYmIF9fU1VOUFJPX0NDIDwgMHg1OTApCi0vLyBUZXN0cyBzdHJlYW1pbmcg
YSBTdHJpbmcuCi1URVNUKFN0cmluZ1Rlc3QsIFN0cmVhbXMpIHsKLSAgRVhQRUNUX0VRKFN0cmVh
bWFibGVUb1N0cmluZyhTdHJpbmcoKSksICIobnVsbCkiKTsKLSAgRVhQRUNUX0VRKFN0cmVhbWFi
bGVUb1N0cmluZyhTdHJpbmcoIiIpKSwgIiIpOwotICBFWFBFQ1RfRVEoU3RyZWFtYWJsZVRvU3Ry
aW5nKFN0cmluZygiYVwwYiIsIDMpKSwgImFcXDBiIik7Ci19Ci0jZW5kaWYKLQotLy8gVGVzdHMg
dGhhdCBTdHJpbmc6OkZvcm1hdCgpIHdvcmtzLgotVEVTVChTdHJpbmdUZXN0LCBGb3JtYXRXb3Jr
cykgewotICAvLyBOb3JtYWwgY2FzZTogdGhlIGZvcm1hdCBzcGVjIGlzIHZhbGlkLCB0aGUgYXJn
dW1lbnRzIG1hdGNoIHRoZQotICAvLyBzcGVjLCBhbmQgdGhlIHJlc3VsdCBpcyA8IDQwOTUgY2hh
cmFjdGVycy4KLSAgRVhQRUNUX1NUUkVRKCJIZWxsbywgNDIiLCBTdHJpbmc6OkZvcm1hdCgiJXMs
ICVkIiwgIkhlbGxvIiwgNDIpLmNfc3RyKCkpOwotCi0gIC8vIEVkZ2UgY2FzZTogdGhlIHJlc3Vs
dCBpcyA0MDk1IGNoYXJhY3RlcnMuCi0gIGNoYXIgYnVmZmVyWzQwOTZdOwotICBjb25zdCBzaXpl
X3Qga1NpemUgPSBzaXplb2YoYnVmZmVyKTsKLSAgbWVtc2V0KGJ1ZmZlciwgJ2EnLCBrU2l6ZSAt
IDEpOwotICBidWZmZXJba1NpemUgLSAxXSA9ICdcMCc7Ci0gIEVYUEVDVF9TVFJFUShidWZmZXIs
IFN0cmluZzo6Rm9ybWF0KCIlcyIsIGJ1ZmZlcikuY19zdHIoKSk7Ci0KLSAgLy8gVGhlIHJlc3Vs
dCBuZWVkcyB0byBiZSA0MDk2IGNoYXJhY3RlcnMsIGV4Y2VlZGluZyBGb3JtYXQoKSdzIGxpbWl0
LgotICBFWFBFQ1RfU1RSRVEoIjxmb3JtYXR0aW5nIGVycm9yIG9yIGJ1ZmZlciBleGNlZWRlZD4i
LAotICAgICAgICAgICAgICAgU3RyaW5nOjpGb3JtYXQoInglcyIsIGJ1ZmZlcikuY19zdHIoKSk7
Ci0KLSNpZiBHVEVTVF9PU19MSU5VWAotICAvLyBPbiBMaW51eCwgaW52YWxpZCBmb3JtYXQgc3Bl
YyBzaG91bGQgbGVhZCB0byBhbiBlcnJvciBtZXNzYWdlLgotICAvLyBJbiBvdGhlciBlbnZpcm9u
bWVudCAoZS5nLiBNU1ZDIG9uIFdpbmRvd3MpLCBTdHJpbmc6OkZvcm1hdCgpIG1heQotICAvLyBz
aW1wbHkgaWdub3JlIGEgYmFkIGZvcm1hdCBzcGVjLCBzbyB0aGlzIGFzc2VydGlvbiBpcyBydW4g
b24KLSAgLy8gTGludXggb25seS4KLSAgRVhQRUNUX1NUUkVRKCI8Zm9ybWF0dGluZyBlcnJvciBv
ciBidWZmZXIgZXhjZWVkZWQ+IiwKLSAgICAgICAgICAgICAgIFN0cmluZzo6Rm9ybWF0KCIlIiku
Y19zdHIoKSk7Ci0jZW5kaWYKLX0KLQogI2lmIEdURVNUX09TX1dJTkRPV1MKIAogLy8gVGVzdHMg
U3RyaW5nOjpTaG93V2lkZUNTdHJpbmcoKS4KQEAgLTExNzAsMTcgKzEwMzYsNyBAQCBURVNUKFN0
cmluZ1Rlc3QsIFNob3dXaWRlQ1N0cmluZykgewogICBFWFBFQ1RfU1RSRVEoImZvbyIsIFN0cmlu
Zzo6U2hvd1dpZGVDU3RyaW5nKEwiZm9vIikuY19zdHIoKSk7CiB9CiAKLS8vIFRlc3RzIFN0cmlu
Zzo6U2hvd1dpZGVDU3RyaW5nUXVvdGVkKCkuCi1URVNUKFN0cmluZ1Rlc3QsIFNob3dXaWRlQ1N0
cmluZ1F1b3RlZCkgewotICBFWFBFQ1RfU1RSRVEoIihudWxsKSIsCi0gICAgICAgICAgICAgICBT
dHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChOVUxMKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NU
UkVRKCJMXCJcIiIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3Rl
ZChMIiIpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIkxcImZvb1wiIiwKLSAgICAgICAgICAg
ICAgIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVvdGVkKEwiZm9vIikuY19zdHIoKSk7Ci19Ci0K
LSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklM
RQogVEVTVChTdHJpbmdUZXN0LCBBbnNpQW5kVXRmMTZOdWxsKSB7CiAgIEVYUEVDVF9FUShOVUxM
LCBTdHJpbmc6OkFuc2lUb1V0ZjE2KE5VTEwpKTsKICAgRVhQRUNUX0VRKE5VTEwsIFN0cmluZzo6
VXRmMTZUb0Fuc2koTlVMTCkpOwpAQCAtMTIwMyw3ICsxMDU5LDcgQEAgVEVTVChTdHJpbmdUZXN0
LCBBbnNpQW5kVXRmMTZDb252ZXJ0UGF0aENoYXJzKSB7CiAgIEVYUEVDVF9FUSgwLCB3Y3NuY21w
KEwiLjpcXCBcIio/IiwgdXRmMTYsIDMpKTsKICAgZGVsZXRlIFtdIHV0ZjE2OwogfQotI2VuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKIAogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKQEAgLTEzMTcsNiArMTE3
MywxNyBAQCBURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc0ZhdGFsRmFsaXVy
ZSkgewogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRGYXRhbEZhaWx1cmUoKSwgIkV4cGVjdGVk
IGZhdGFsIGZhaWx1cmUuIik7CiB9CiAKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworVEVT
VF9GKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEFjY2VwdHNTdHJpbmdPYmplY3QpIHsKKyAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmF0YWxGYWlsdXJlKCksIDo6c3RyaW5nKCJFeHBlY3RlZCBm
YXRhbCBmYWlsdXJlLiIpKTsKK30KKyNlbmRpZgorCitURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdCwgQWNjZXB0c1N0ZFN0cmluZ09iamVjdCkgeworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShB
ZGRGYXRhbEZhaWx1cmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6OnN0cmluZygi
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKSk7Cit9CisKIFRFU1RfRihFeHBlY3RGYXRhbEZhaWx1
cmVUZXN0LCBDYXRjaGVzRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzKSB7CiAgIC8vIFdlIGhhdmUg
YW5vdGhlciB0ZXN0IGJlbG93IHRvIHZlcmlmeSB0aGF0IHRoZSBtYWNybyBjYXRjaGVzIGZhdGFs
CiAgIC8vIGZhaWx1cmVzIGdlbmVyYXRlZCBvbiBhbm90aGVyIHRocmVhZC4KQEAgLTEzMjYsNyAr
MTE5Myw3IEBAIFRFU1RfRihFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBDYXRjaGVzRmF0YWxGYWls
dXJlT25BbGxUaHJlYWRzKSB7CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFNpbGVuY2VzIHdh
cm5pbmdzOiAiQ29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlIgotI3ByYWdtYSBvcHRpb24gcHVzaCAt
dy1jY2MKKyMgcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYwogI2VuZGlmCiAKIC8vIFRlc3RzIHRo
YXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBjYW4gYmUgdXNlZCBpbiBhIG5vbi12b2lkCkBAIC0x
MzU0LDcgKzEyMjEsNyBAQCB2b2lkIERvZXNOb3RBYm9ydEhlbHBlcihib29sKiBhYm9ydGVkKSB7
CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZp
b3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXBwcmVzc2VkIHRoZW0uCi0jcHJhZ21hIG9wdGlv
biBwb3AKKyMgcHJhZ21hIG9wdGlvbiBwb3AKICNlbmRpZgogCiBURVNUX0YoRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdCwgRG9lc05vdEFib3J0KSB7CkBAIC0xMzcxLDggKzEyMzgsOCBAQCBzdGF0aWMg
aW50IGdsb2JhbF92YXIgPSAwOwogI2RlZmluZSBHVEVTVF9VU0VfVU5QUk9URUNURURfQ09NTUFf
IGdsb2JhbF92YXIrKywgZ2xvYmFsX3ZhcisrCiAKIFRFU1RfRihFeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LCBBY2NlcHRzTWFjcm9UaGF0RXhwYW5kc1RvVW5wcm90ZWN0ZWRDb21tYSkgewotI2lmICFk
ZWZpbmVkKF9fQk9STEFORENfXykgfHwgX19CT1JMQU5EQ19fID49IDB4NjAwCi0gIC8vIElDRSdz
IGluIEMrK0J1aWxkZXIgMjAwNy4KKyNpZm5kZWYgX19CT1JMQU5EQ19fCisgIC8vIElDRSdzIGlu
IEMrK0J1aWxkZXIuCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKICAgICBHVEVTVF9VU0VfVU5Q
Uk9URUNURURfQ09NTUFfOwogICAgIEFkZEZhdGFsRmFpbHVyZSgpOwpAQCAtMTM5NCw2ICsxMjYx
LDE4IEBAIFRFU1RfRihFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBDYXRjaGVzTm9uZmF0YWxG
YWlsdXJlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBub24tZmF0YWwg
ZmFpbHVyZS4iKTsKIH0KIAorI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCitURVNUX0YoRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQWNjZXB0c1N0cmluZ09iamVjdCkgeworICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShBZGROb25mYXRhbEZhaWx1cmUoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgOjpzdHJpbmcoIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpKTsKK30KKyNl
bmRpZgorCitURVNUX0YoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQWNjZXB0c1N0ZFN0cmlu
Z09iamVjdCkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBZGROb25mYXRhbEZhaWx1cmUo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6OnN0cmluZygiRXhwZWN0ZWQgbm9u
LWZhdGFsIGZhaWx1cmUuIikpOworfQorCiBURVNUX0YoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVz
dCwgQ2F0Y2hlc05vbmZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcykgewogICAvLyBXZSBoYXZlIGFu
b3RoZXIgdGVzdCBiZWxvdyB0byB2ZXJpZnkgdGhhdCB0aGUgbWFjcm8gY2F0Y2hlcwogICAvLyBu
b24tZmF0YWwgZmFpbHVyZXMgZ2VuZXJhdGVkIG9uIGFub3RoZXIgdGhyZWFkLgpAQCAtMTU2Niw3
ICsxNDQ1LDcgQEAgVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBOb1Byb3BlcnRpZXNGb3Vu
ZFdoZW5Ob25lQXJlQWRkZWQpIHsKIFRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgT25lUHJv
cGVydHlGb3VuZFdoZW5BZGRlZCkgewogICBUZXN0UmVzdWx0IHRlc3RfcmVzdWx0OwogICBUZXN0
UHJvcGVydHkgcHJvcGVydHkoImtleV8xIiwgIjEiKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpS
ZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5KTsKKyAgVGVzdFJlc3VsdEFjY2Vz
c29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5KTsK
ICAgQVNTRVJUX0VRKDEsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKSk7CiAgIGNv
bnN0IFRlc3RQcm9wZXJ0eSYgYWN0dWFsX3Byb3BlcnR5ID0gdGVzdF9yZXN1bHQuR2V0VGVzdFBy
b3BlcnR5KDApOwogICBFWFBFQ1RfU1RSRVEoImtleV8xIiwgYWN0dWFsX3Byb3BlcnR5LmtleSgp
KTsKQEAgLTE1NzgsOCArMTQ1Nyw4IEBAIFRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgTXVs
dGlwbGVQcm9wZXJ0aWVzRm91bmRXaGVuQWRkZWQpIHsKICAgVGVzdFJlc3VsdCB0ZXN0X3Jlc3Vs
dDsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzEoImtleV8xIiwgIjEiKTsKICAgVGVzdFByb3Bl
cnR5IHByb3BlcnR5XzIoImtleV8yIiwgIjIiKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNv
cmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzEpOwotICBUZXN0UmVzdWx0QWNjZXNz
b3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMik7CisgIFRlc3RSZXN1
bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9w
ZXJ0eV8xKTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1
bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzIpOwogICBBU1NFUlRfRVEoMiwgdGVzdF9yZXN1bHQu
dGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKICAgY29uc3QgVGVzdFByb3BlcnR5JiBhY3R1YWxfcHJv
cGVydHlfMSA9IHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgwKTsKICAgRVhQRUNUX1NUUkVR
KCJrZXlfMSIsIGFjdHVhbF9wcm9wZXJ0eV8xLmtleSgpKTsKQEAgLTE1OTcsMTAgKzE0NzYsMTAg
QEAgVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBPdmVycmlkZXNWYWx1ZXNGb3JEdXBsaWNh
dGVLZXlzKSB7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8yXzEoImtleV8yIiwgIjIiKTsKICAg
VGVzdFByb3BlcnR5IHByb3BlcnR5XzFfMigia2V5XzEiLCAiMTIiKTsKICAgVGVzdFByb3BlcnR5
IHByb3BlcnR5XzJfMigia2V5XzIiLCAiMjIiKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNv
cmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzFfMSk7Ci0gIFRlc3RSZXN1bHRBY2Nl
c3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9wZXJ0eV8yXzEpOwotICBUZXN0
UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMV8y
KTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHBy
b3BlcnR5XzJfMik7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3Rf
cmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8xXzEpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6
OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMl8xKTsK
KyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0
Y2FzZSIsIHByb3BlcnR5XzFfMik7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVy
dHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8yXzIpOwogCiAgIEFTU0VSVF9F
USgyLCB0ZXN0X3Jlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwogICBjb25zdCBUZXN0UHJv
cGVydHkmIGFjdHVhbF9wcm9wZXJ0eV8xID0gdGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KDAp
OwpAQCAtMTYxMywxNCArMTQ5MiwxNCBAQCBURVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIE92
ZXJyaWRlc1ZhbHVlc0ZvckR1cGxpY2F0ZUtleXMpIHsKIH0KIAogLy8gVGVzdHMgVGVzdFJlc3Vs
dDo6R2V0VGVzdFByb3BlcnR5KCkuCi1URVNUKFRlc3RSZXN1bHRQcm9wZXJ0eURlYXRoVGVzdCwg
R2V0VGVzdFByb3BlcnR5KSB7CitURVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIEdldFRlc3RQ
cm9wZXJ0eSkgewogICBUZXN0UmVzdWx0IHRlc3RfcmVzdWx0OwogICBUZXN0UHJvcGVydHkgcHJv
cGVydHlfMSgia2V5XzEiLCAiMSIpOwogICBUZXN0UHJvcGVydHkgcHJvcGVydHlfMigia2V5XzIi
LCAiMiIpOwogICBUZXN0UHJvcGVydHkgcHJvcGVydHlfMygia2V5XzMiLCAiMyIpOwotICBUZXN0
UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMSk7
Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9w
ZXJ0eV8yKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1
bHQsIHByb3BlcnR5XzMpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0
ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMSk7CisgIFRlc3RSZXN1bHRBY2Nlc3Nv
cjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8yKTsK
KyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0
Y2FzZSIsIHByb3BlcnR5XzMpOwogCiAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgZmV0Y2hlZF9wcm9w
ZXJ0eV8xID0gdGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KDApOwogICBjb25zdCBUZXN0UHJv
cGVydHkmIGZldGNoZWRfcHJvcGVydHlfMiA9IHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgx
KTsKQEAgLTE2MzksNDEgKzE1MTgsMTUgQEAgVEVTVChUZXN0UmVzdWx0UHJvcGVydHlEZWF0aFRl
c3QsIEdldFRlc3RQcm9wZXJ0eSkgewogICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHRlc3Rf
cmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgtMSksICIiKTsKIH0KIAotLy8gV2hlbiBhIHByb3BlcnR5
IHVzaW5nIGEgcmVzZXJ2ZWQga2V5IGlzIHN1cHBsaWVkIHRvIHRoaXMgZnVuY3Rpb24sIGl0IHRl
c3RzCi0vLyB0aGF0IGEgbm9uLWZhdGFsIGZhaWx1cmUgaXMgYWRkZWQsIGEgZmF0YWwgZmFpbHVy
ZSBpcyBub3QgYWRkZWQsIGFuZCB0aGF0IHRoZQotLy8gcHJvcGVydHkgaXMgbm90IHJlY29yZGVk
Lgotdm9pZCBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZl
ZEtleShjb25zdCBjaGFyKiBrZXkpIHsKLSAgVGVzdFJlc3VsdCB0ZXN0X3Jlc3VsdDsKLSAgVGVz
dFByb3BlcnR5IHByb3BlcnR5KGtleSwgIjEiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
Ci0gICAgICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwg
cHJvcGVydHkpLAotICAgICAgIlJlc2VydmVkIGtleSIpOwotICBBU1NFUlRfRVEoMCwgdGVzdF9y
ZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpKSA8PCAiTm90IHJlY29yZGVkIjsKLX0KLQotLy8g
QXR0ZW1wdGluZyB0byByZWNvcmRpbmcgYSBwcm9wZXJ0eSB3aXRoIHRoZSBSZXNlcnZlZCBsaXRl
cmFsICJuYW1lIgotLy8gc2hvdWxkIGFkZCBhIG5vbi1mYXRhbCBmYWlsdXJlIGFuZCB0aGUgcHJv
cGVydHkgc2hvdWxkIG5vdCBiZSByZWNvcmRlZC4KLVRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVz
dCwgQWRkRmFpbHVyZVdoZW5Vc2luZ1Jlc2VydmVkS2V5Q2FsbGVkTmFtZSkgewotICBFeHBlY3RO
b25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgibmFtZSIpOwot
fQotCi0vLyBBdHRlbXB0aW5nIHRvIHJlY29yZGluZyBhIHByb3BlcnR5IHdpdGggdGhlIFJlc2Vy
dmVkIGxpdGVyYWwgInN0YXR1cyIKLS8vIHNob3VsZCBhZGQgYSBub24tZmF0YWwgZmFpbHVyZSBh
bmQgdGhlIHByb3BlcnR5IHNob3VsZCBub3QgYmUgcmVjb3JkZWQuCi1URVNUKFRlc3RSZXN1bHRQ
cm9wZXJ0eVRlc3QsIEFkZEZhaWx1cmVXaGVuVXNpbmdSZXNlcnZlZEtleUNhbGxlZFN0YXR1cykg
ewotICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtl
eSgic3RhdHVzIik7Ci19Ci0KLS8vIEF0dGVtcHRpbmcgdG8gcmVjb3JkaW5nIGEgcHJvcGVydHkg
d2l0aCB0aGUgUmVzZXJ2ZWQgbGl0ZXJhbCAidGltZSIKLS8vIHNob3VsZCBhZGQgYSBub24tZmF0
YWwgZmFpbHVyZSBhbmQgdGhlIHByb3BlcnR5IHNob3VsZCBub3QgYmUgcmVjb3JkZWQuCi1URVNU
KFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIEFkZEZhaWx1cmVXaGVuVXNpbmdSZXNlcnZlZEtleUNh
bGxlZFRpbWUpIHsKLSAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRo
UmVzZXJ2ZWRLZXkoInRpbWUiKTsKLX0KLQotLy8gQXR0ZW1wdGluZyB0byByZWNvcmRpbmcgYSBw
cm9wZXJ0eSB3aXRoIHRoZSBSZXNlcnZlZCBsaXRlcmFsICJjbGFzc25hbWUiCi0vLyBzaG91bGQg
YWRkIGEgbm9uLWZhdGFsIGZhaWx1cmUgYW5kIHRoZSBwcm9wZXJ0eSBzaG91bGQgbm90IGJlIHJl
Y29yZGVkLgotVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBBZGRGYWlsdXJlV2hlblVzaW5n
UmVzZXJ2ZWRLZXlDYWxsZWRDbGFzc25hbWUpIHsKLSAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVj
b3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoImNsYXNzbmFtZSIpOwotfQorLy8gVGVzdHMg
dGhlIFRlc3QgY2xhc3MuCisvLworLy8gSXQncyBkaWZmaWN1bHQgdG8gdGVzdCBldmVyeSBwdWJs
aWMgbWV0aG9kIG9mIHRoaXMgY2xhc3MgKHdlIGFyZQorLy8gYWxyZWFkeSBzdHJldGNoaW5nIHRo
ZSBsaW1pdCBvZiBHb29nbGUgVGVzdCBieSB1c2luZyBpdCB0byB0ZXN0IGl0c2VsZiEpLgorLy8g
Rm9ydHVuYXRlbHksIHdlIGRvbid0IGhhdmUgdG8gZG8gdGhhdCwgYXMgd2UgYXJlIGFscmVhZHkg
dGVzdGluZworLy8gdGhlIGZ1bmN0aW9uYWxpdGllcyBvZiB0aGUgVGVzdCBjbGFzcyBleHRlbnNp
dmVseSBieSB1c2luZyBHb29nbGUgVGVzdAorLy8gYWxvbmUuCisvLworLy8gVGhlcmVmb3JlLCB0
aGlzIHNlY3Rpb24gb25seSBjb250YWlucyBvbmUgdGVzdC4KIAogLy8gVGVzdHMgdGhhdCBHVGVz
dEZsYWdTYXZlciB3b3JrcyBvbiBXaW5kb3dzIGFuZCBNYWMuCiAKQEAgLTE2OTgsNiArMTU1MSw3
IEBAIGNsYXNzIEdUZXN0RmxhZ1NhdmVyVGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICBHVEVTVF9G
TEFHKHJlcGVhdCkgPSAxOwogICAgIEdURVNUX0ZMQUcoc2h1ZmZsZSkgPSBmYWxzZTsKICAgICBH
VEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSA9IGtNYXhTdGFja1RyYWNlRGVwdGg7CisgICAg
R1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSA9ICIiOwogICAgIEdURVNUX0ZMQUcodGhyb3df
b25fZmFpbHVyZSkgPSBmYWxzZTsKICAgfQogCkBAIC0xNzI0LDYgKzE1NzgsNyBAQCBjbGFzcyBH
VGVzdEZsYWdTYXZlclRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgRVhQRUNUX0VRKDEsIEdURVNU
X0ZMQUcocmVwZWF0KSk7CiAgICAgRVhQRUNUX0ZBTFNFKEdURVNUX0ZMQUcoc2h1ZmZsZSkpOwog
ICAgIEVYUEVDVF9FUShrTWF4U3RhY2tUcmFjZURlcHRoLCBHVEVTVF9GTEFHKHN0YWNrX3RyYWNl
X2RlcHRoKSk7CisgICAgRVhQRUNUX1NUUkVRKCIiLCBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRf
dG8pLmNfc3RyKCkpOwogICAgIEVYUEVDVF9GQUxTRShHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1
cmUpKTsKIAogICAgIEdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpID0gdHJ1ZTsK
QEAgLTE3MzksOCArMTU5NCwxMCBAQCBjbGFzcyBHVGVzdEZsYWdTYXZlclRlc3QgOiBwdWJsaWMg
VGVzdCB7CiAgICAgR1RFU1RfRkxBRyhyZXBlYXQpID0gMTAwOwogICAgIEdURVNUX0ZMQUcoc2h1
ZmZsZSkgPSB0cnVlOwogICAgIEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpID0gMTsKKyAg
ICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pID0gImxvY2FsaG9zdDoxMjM0IjsKICAgICBH
VEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1ZTsKICAgfQorCiAgcHJpdmF0ZToKICAg
Ly8gRm9yIHNhdmluZyBHb29nbGUgVGVzdCBmbGFncyBkdXJpbmcgdGhpcyB0ZXN0IGNhc2UuCiAg
IHN0YXRpYyBHVGVzdEZsYWdTYXZlciogc2F2ZXJfOwpAQCAtMTc3MywxNSArMTYzMCwxNiBAQCBz
dGF0aWMgdm9pZCBTZXRFbnYoY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogdmFsdWUpIHsK
ICAgLy8gQysrQnVpbGRlcidzIHB1dGVudiBvbmx5IHN0b3JlcyBhIHBvaW50ZXIgdG8gaXRzIHBh
cmFtZXRlcjsgd2UgaGF2ZSB0bwogICAvLyBlbnN1cmUgdGhhdCB0aGUgc3RyaW5nIHJlbWFpbnMg
dmFsaWQgYXMgbG9uZyBhcyBpdCBtaWdodCBiZSBuZWVkZWQuCiAgIC8vIFdlIHVzZSBhbiBzdGQ6
Om1hcCB0byBkbyBzby4KLSAgc3RhdGljIHN0ZDo6bWFwPFN0cmluZywgU3RyaW5nKj4gYWRkZWRf
ZW52OworICBzdGF0aWMgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nKj4gYWRkZWRf
ZW52OwogCiAgIC8vIEJlY2F1c2UgcHV0ZW52IHN0b3JlcyBhIHBvaW50ZXIgdG8gdGhlIHN0cmlu
ZyBidWZmZXIsIHdlIGNhbid0IGRlbGV0ZSB0aGUKICAgLy8gcHJldmlvdXMgc3RyaW5nIChpZiBw
cmVzZW50KSB1bnRpbCBhZnRlciBpdCdzIHJlcGxhY2VkLgotICBTdHJpbmcgKnByZXZfZW52ID0g
TlVMTDsKKyAgc3RkOjpzdHJpbmcgKnByZXZfZW52ID0gTlVMTDsKICAgaWYgKGFkZGVkX2Vudi5m
aW5kKG5hbWUpICE9IGFkZGVkX2Vudi5lbmQoKSkgewogICAgIHByZXZfZW52ID0gYWRkZWRfZW52
W25hbWVdOwogICB9Ci0gIGFkZGVkX2VudltuYW1lXSA9IG5ldyBTdHJpbmcoKE1lc3NhZ2UoKSA8
PCBuYW1lIDw8ICI9IiA8PCB2YWx1ZSkuR2V0U3RyaW5nKCkpOworICBhZGRlZF9lbnZbbmFtZV0g
PSBuZXcgc3RkOjpzdHJpbmcoCisgICAgICAoTWVzc2FnZSgpIDw8IG5hbWUgPDwgIj0iIDw8IHZh
bHVlKS5HZXRTdHJpbmcoKSk7CiAKICAgLy8gVGhlIHN0YW5kYXJkIHNpZ25hdHVyZSBvZiBwdXRl
bnYgYWNjZXB0cyBhICdjaGFyKicgYXJndW1lbnQuIE90aGVyCiAgIC8vIGltcGxlbWVudGF0aW9u
cywgbGlrZSBDKytCdWlsZGVyJ3MsIGFjY2VwdCBhICdjb25zdCBjaGFyKicuCkBAIC0xODEzLDYg
KzE2NzEsOCBAQCBURVNUKEludDMyRnJvbUdUZXN0RW52VGVzdCwgUmV0dXJuc0RlZmF1bHRXaGVu
VmFyaWFibGVJc05vdFNldCkgewogICBFWFBFQ1RfRVEoMTAsIEludDMyRnJvbUdUZXN0RW52KCJ0
ZW1wIiwgMTApKTsKIH0KIAorIyBpZiAhZGVmaW5lZChHVEVTVF9HRVRfSU5UMzJfRlJPTV9FTlZf
KQorCiAvLyBUZXN0cyB0aGF0IEludDMyRnJvbUdUZXN0RW52KCkgcmV0dXJucyB0aGUgZGVmYXVs
dCB2YWx1ZSB3aGVuIHRoZQogLy8gZW52aXJvbm1lbnQgdmFyaWFibGUgb3ZlcmZsb3dzIGFzIGFu
IEludDMyLgogVEVTVChJbnQzMkZyb21HVGVzdEVudlRlc3QsIFJldHVybnNEZWZhdWx0V2hlblZh
bHVlT3ZlcmZsb3dzKSB7CkBAIC0xODM3LDYgKzE2OTcsOCBAQCBURVNUKEludDMyRnJvbUdUZXN0
RW52VGVzdCwgUmV0dXJuc0RlZmF1bHRXaGVuVmFsdWVJc0ludmFsaWQpIHsKICAgRVhQRUNUX0VR
KDUwLCBJbnQzMkZyb21HVGVzdEVudigidGVtcCIsIDUwKSk7CiB9CiAKKyMgZW5kaWYgIC8vICFk
ZWZpbmVkKEdURVNUX0dFVF9JTlQzMl9GUk9NX0VOVl8pCisKIC8vIFRlc3RzIHRoYXQgSW50MzJG
cm9tR1Rlc3RFbnYoKSBwYXJzZXMgYW5kIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZQogLy8gZW52
aXJvbm1lbnQgdmFyaWFibGUgd2hlbiBpdCByZXByZXNlbnRzIGEgdmFsaWQgZGVjaW1hbCBpbnRl
Z2VyIGluCiAvLyB0aGUgcmFuZ2Ugb2YgYW4gSW50MzIuCkBAIC0yMDcwLDYgKzE5MzIsMTczIEBA
IFRFU1QoVW5pdFRlc3RUZXN0LCBDYW5HZXRPcmlnaW5hbFdvcmtpbmdEaXIpIHsKICAgRVhQRUNU
X1NUUk5FKFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5nX2RpcigpLCAi
Iik7CiB9CiAKK1RFU1QoVW5pdFRlc3RUZXN0LCBSZXR1cm5zUGxhdXNpYmxlVGltZXN0YW1wKSB7
CisgIEVYUEVDVF9MVCgwLCBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+c3RhcnRfdGltZXN0YW1w
KCkpOworICBFWFBFQ1RfTEUoVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnN0YXJ0X3RpbWVzdGFt
cCgpLCBHZXRUaW1lSW5NaWxsaXMoKSk7Cit9CisKKy8vIFdoZW4gYSBwcm9wZXJ0eSB1c2luZyBh
IHJlc2VydmVkIGtleSBpcyBzdXBwbGllZCB0byB0aGlzIGZ1bmN0aW9uLCBpdAorLy8gdGVzdHMg
dGhhdCBhIG5vbi1mYXRhbCBmYWlsdXJlIGlzIGFkZGVkLCBhIGZhdGFsIGZhaWx1cmUgaXMgbm90
IGFkZGVkLAorLy8gYW5kIHRoYXQgdGhlIHByb3BlcnR5IGlzIG5vdCByZWNvcmRlZC4KK3ZvaWQg
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoCisg
ICAgY29uc3QgVGVzdFJlc3VsdCYgdGVzdF9yZXN1bHQsIGNvbnN0IGNoYXIqIGtleSkgeworICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShUZXN0OjpSZWNvcmRQcm9wZXJ0eShrZXksICIxIiksICJS
ZXNlcnZlZCBrZXkiKTsKKyAgQVNTRVJUX0VRKDAsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlf
Y291bnQoKSkgPDwgIlByb3BlcnR5IGZvciBrZXkgJyIgPDwga2V5CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICInIHJlY29yZGVkIHVuZXhwZWN0
ZWRseS4iOworfQorCit2b2lkIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5
V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgY29uc3QgY2hhcioga2V5KSB7Cisg
IGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8gPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3Vy
cmVudF90ZXN0X2luZm8oKTsKKyAgQVNTRVJUX1RSVUUodGVzdF9pbmZvICE9IE5VTEwpOworICBF
eHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgqdGVz
dF9pbmZvLT5yZXN1bHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga2V5KTsKK30KKwordm9pZCBFeHBlY3ROb25GYXRhbEZhaWx1cmVS
ZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICBj
b25zdCBjaGFyKiBrZXkpIHsKKyAgY29uc3QgVGVzdENhc2UqIHRlc3RfY2FzZSA9IFVuaXRUZXN0
OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfY2FzZSgpOworICBBU1NFUlRfVFJVRSh0ZXN0
X2Nhc2UgIT0gTlVMTCk7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5
V2l0aFJlc2VydmVkS2V5KAorICAgICAgdGVzdF9jYXNlLT5hZF9ob2NfdGVzdF9yZXN1bHQoKSwg
a2V5KTsKK30KKwordm9pZCBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdp
dGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgIGNvbnN0IGNoYXIqIGtleSkgewor
ICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgK
KyAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5hZF9ob2NfdGVzdF9yZXN1bHQoKSwga2V5
KTsKK30KKworLy8gVGVzdHMgdGhhdCBwcm9wZXJ0eSByZWNvcmRpbmcgZnVuY3Rpb25zIGluIFVu
aXRUZXN0IG91dHNpZGUgb2YgdGVzdHMKKy8vIGZ1bmN0aW9ucyBjb3JyZWNseS4gIENyZWF0aW5n
IGEgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgVW5pdFRlc3QgZW5zdXJlcyBpdAorLy8gaXMgaW4gYSBz
dGF0ZSBzaW1pbGFyIHRvIHRoZSBVbml0VGVzdCdzIHNpbmdsZXRvbidzIGJldHdlZW4gdGVzdHMu
CitjbGFzcyBVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdCA6CisgICAgcHVibGljIHRlc3Rpbmc6
OmludGVybmFsOjpVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdEhlbHBlciB7CisgcHVibGljOgor
ICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgeworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVy
ZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAorICAg
ICAgICAiZGlzYWJsZWQiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9w
ZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICAgICAgImVycm9ycyIp
OworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVk
S2V5Rm9yQ3VycmVudFRlc3RDYXNlKAorICAgICAgICAiZmFpbHVyZXMiKTsKKyAgICBFeHBlY3RO
b25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRU
ZXN0Q2FzZSgKKyAgICAgICAgIm5hbWUiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNv
cmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICAgICAg
InRlc3RzIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRo
UmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdENhc2UoCisgICAgICAgICJ0aW1lIik7CisKKyAgICBU
ZXN0OjpSZWNvcmRQcm9wZXJ0eSgidGVzdF9jYXNlX2tleV8xIiwgIjEiKTsKKyAgICBjb25zdCBU
ZXN0Q2FzZSogdGVzdF9jYXNlID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVz
dF9jYXNlKCk7CisgICAgQVNTRVJUX1RSVUUodGVzdF9jYXNlICE9IE5VTEwpOworCisgICAgQVNT
RVJUX0VRKDEsIHRlc3RfY2FzZS0+YWRfaG9jX3Rlc3RfcmVzdWx0KCkudGVzdF9wcm9wZXJ0eV9j
b3VudCgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInRlc3RfY2FzZV9rZXlfMSIsCisgICAgICAgICAg
ICAgICAgIHRlc3RfY2FzZS0+YWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDAp
LmtleSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIjEiLAorICAgICAgICAgICAgICAgICB0ZXN0X2Nh
c2UtPmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKKyAg
fQorfTsKKworLy8gVGVzdHMgVGVzdFJlc3VsdCBoYXMgdGhlIGV4cGVjdGVkIHByb3BlcnR5IHdo
ZW4gYWRkZWQuCitURVNUX0YoVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3QsIE9uZVByb3BlcnR5
Rm91bmRXaGVuQWRkZWQpIHsKKyAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzEiLCAiMSIp
OworCisgIEFTU0VSVF9FUSgxLCB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLnRlc3Rf
cHJvcGVydHlfY291bnQoKSk7CisKKyAgRVhQRUNUX1NUUkVRKCJrZXlfMSIsCisgICAgICAgICAg
ICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS5r
ZXkoKSk7CisgIEVYUEVDVF9TVFJFUSgiMSIsCisgICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFk
X2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKK30KKworLy8g
VGVzdHMgVGVzdFJlc3VsdCBoYXMgbXVsdGlwbGUgcHJvcGVydGllcyB3aGVuIGFkZGVkLgorVEVT
VF9GKFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0LCBNdWx0aXBsZVByb3BlcnRpZXNGb3VuZFdo
ZW5BZGRlZCkgeworICBVbml0VGVzdFJlY29yZFByb3BlcnR5KCJrZXlfMSIsICIxIik7CisgIFVu
aXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8yIiwgIjIiKTsKKworICBBU1NFUlRfRVEoMiwgdW5p
dF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOworCisg
IEVYUEVDVF9TVFJFUSgia2V5XzEiLAorICAgICAgICAgICAgICAgdW5pdF90ZXN0Xy5hZF9ob2Nf
dGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMCkua2V5KCkpOworICBFWFBFQ1RfU1RSRVEo
IjEiLCB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52
YWx1ZSgpKTsKKworICBFWFBFQ1RfU1RSRVEoImtleV8yIiwKKyAgICAgICAgICAgICAgIHVuaXRf
dGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDEpLmtleSgpKTsKKyAg
RVhQRUNUX1NUUkVRKCIyIiwgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0
UHJvcGVydHkoMSkudmFsdWUoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RSZXN1bHQ6OlJlY29yZFBy
b3BlcnR5KCkgb3ZlcnJpZGVzIHZhbHVlcyBmb3IgZHVwbGljYXRlIGtleXMuCitURVNUX0YoVW5p
dFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3QsIE92ZXJyaWRlc1ZhbHVlc0ZvckR1cGxpY2F0ZUtleXMp
IHsKKyAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzEiLCAiMSIpOworICBVbml0VGVzdFJl
Y29yZFByb3BlcnR5KCJrZXlfMiIsICIyIik7CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoImtl
eV8xIiwgIjEyIik7CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8yIiwgIjIyIik7CisK
KyAgQVNTRVJUX0VRKDIsIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkudGVzdF9wcm9w
ZXJ0eV9jb3VudCgpKTsKKworICBFWFBFQ1RfU1RSRVEoImtleV8xIiwKKyAgICAgICAgICAgICAg
IHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLmtleSgp
KTsKKyAgRVhQRUNUX1NUUkVRKCIxMiIsCisgICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hv
Y190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKKworICBFWFBFQ1Rf
U1RSRVEoImtleV8yIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVz
dWx0KCkuR2V0VGVzdFByb3BlcnR5KDEpLmtleSgpKTsKKyAgRVhQRUNUX1NUUkVRKCIyMiIsCisg
ICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9w
ZXJ0eSgxKS52YWx1ZSgpKTsKK30KKworVEVTVF9GKFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0
LAorICAgICAgIEFkZEZhaWx1cmVJbnNpZGVUZXN0c1doZW5Vc2luZ1Rlc3RDYXNlUmVzZXJ2ZWRL
ZXlzKSB7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2Vy
dmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgICAibmFtZSIpOworICBFeHBlY3ROb25GYXRhbEZh
aWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0KAorICAg
ICAgInZhbHVlX3BhcmFtIik7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3Bl
cnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgICAidHlwZV9wYXJhbSIpOwor
ICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZv
ckN1cnJlbnRUZXN0KAorICAgICAgInN0YXR1cyIpOworICBFeHBlY3ROb25GYXRhbEZhaWx1cmVS
ZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0KAorICAgICAgInRp
bWUiKTsKKyAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2
ZWRLZXlGb3JDdXJyZW50VGVzdCgKKyAgICAgICJjbGFzc25hbWUiKTsKK30KKworVEVTVF9GKFVu
aXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0LAorICAgICAgIEFkZFJlY29yZFdpdGhSZXNlcnZlZEtl
eXNHZW5lcmF0ZXNDb3JyZWN0UHJvcGVydHlMaXN0KSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKAorICAgICAgVGVzdDo6UmVjb3JkUHJvcGVydHkoIm5hbWUiLCAiMSIpLAorICAgICAgIidj
bGFzc25hbWUnLCAnbmFtZScsICdzdGF0dXMnLCAndGltZScsICd0eXBlX3BhcmFtJywgYW5kICd2
YWx1ZV9wYXJhbSciCisgICAgICAiIGFyZSByZXNlcnZlZCIpOworfQorCitjbGFzcyBVbml0VGVz
dFJlY29yZFByb3BlcnR5VGVzdEVudmlyb25tZW50IDogcHVibGljIEVudmlyb25tZW50IHsKKyBw
dWJsaWM6CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBFeHBlY3ROb25GYXRhbEZh
aWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAor
ICAgICAgICAidGVzdHMiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9w
ZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgICAgICAiZmFpbHVyZXMi
KTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZl
ZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgICAgICAiZGlzYWJsZWQiKTsKKyAgICBFeHBlY3RO
b25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRl
c3RDYXNlKAorICAgICAgICAiZXJyb3JzIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVj
b3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAg
Im5hbWUiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhS
ZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgICAgICAidGltZXN0YW1wIik7CisgICAg
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRz
aWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgInRpbWUiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1
cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAg
ICAgICAicmFuZG9tX3NlZWQiKTsKKyAgfQorfTsKKworLy8gVGhpcyB3aWxsIHRlc3QgcHJvcGVy
dHkgcmVjb3JkaW5nIG91dHNpZGUgb2YgYW55IHRlc3Qgb3IgdGVzdCBjYXNlLgorc3RhdGljIEVu
dmlyb25tZW50KiByZWNvcmRfcHJvcGVydHlfZW52ID0KKyAgICBBZGRHbG9iYWxUZXN0RW52aXJv
bm1lbnQobmV3IFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0RW52aXJvbm1lbnQpOworCiAvLyBU
aGlzIGdyb3VwIG9mIHRlc3RzIGlzIGZvciBwcmVkaWNhdGUgYXNzZXJ0aW9ucyAoQVNTRVJUX1BS
RUQqLCBldGMpCiAvLyBvZiB2YXJpb3VzIGFyaXRpZXMuICBUaGV5IGRvIG5vdCBhdHRlbXB0IHRv
IGJlIGV4aGF1c3RpdmUuICBSYXRoZXIsCiAvLyB2aWV3IHRoZW0gYXMgc21va2UgdGVzdHMgdGhh
dCBjYW4gYmUgZWFzaWx5IHJldmlld2VkIGFuZCB2ZXJpZmllZC4KQEAgLTI0MzcsNyArMjQ2Niw3
IEBAIFRFU1QoU3RyaW5nQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1NUUkNBU0VFUSkgewogCiAgIEFT
U0VSVF9TVFJDQVNFRVEoIiIsICIiKTsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1NU
UkNBU0VFUSgiSGkiLCAiaGkyIiksCi0gICAgICAgICAgICAgICAgICAgICAgICIoaWdub3Jpbmcg
Y2FzZSkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIklnbm9yaW5nIGNhc2UiKTsKIH0KIAog
Ly8gVGVzdHMgQVNTRVJUX1NUUkNBU0VORS4KQEAgLTI0NzUsNiArMjUwNCwxMSBAQCBURVNUKFN0
cmluZ0Fzc2VydGlvblRlc3QsIFNUUkVRX1dpZGUpIHsKICAgLy8gU3RyaW5ncyBjb250YWluaW5n
IHdpZGUgY2hhcmFjdGVycy4KICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1NUUkVR
KEwiYWJjXHg4MTE5IiwgTCJhYmNceDgxMjAiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImFiYyIpOworCisgIC8vIFRoZSBzdHJlYW1pbmcgdmFyaWF0aW9uLgorICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfU1RSRVEoTCJhYmNceDgxMTkiLCBM
ImFiY1x4ODEyMSIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlIjsKKyAgfSwgIkV4cGVjdGVkIGZhaWx1
cmUiKTsKIH0KIAogLy8gVGVzdHMgKl9TVFJORSBvbiB3aWRlIHN0cmluZ3MuCkBAIC0yNTAxLDYg
KzI1MzUsOSBAQCBURVNUKFN0cmluZ0Fzc2VydGlvblRlc3QsIFNUUk5FX1dpZGUpIHsKICAgLy8g
U3RyaW5ncyBjb250YWluaW5nIHdpZGUgY2hhcmFjdGVycy4KICAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoRVhQRUNUX1NUUk5FKEwiYWJjXHg4MTE5IiwgTCJhYmNceDgxMTkiKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImFiYyIpOworCisgIC8vIFRoZSBzdHJlYW1pbmcgdmFyaWF0aW9u
LgorICBBU1NFUlRfU1RSTkUoTCJhYmNceDgxMTkiLCBMImFiY1x4ODEyMCIpIDw8ICJUaGlzIHNo
b3VsZG4ndCBoYXBwZW4iOwogfQogCiAvLyBUZXN0cyBmb3IgOjp0ZXN0aW5nOjpJc1N1YnN0cmlu
ZygpLgpAQCAtMjYzMSw3ICsyNjY4LDYgQEAgVEVTVChJc05vdFN1YnN0cmluZ1Rlc3QsIFJldHVy
bnNDb3JyZWN0UmVzdWx0Rm9yU3RkV3N0cmluZykgewogdGVtcGxhdGUgPHR5cGVuYW1lIFJhd1R5
cGU+CiBjbGFzcyBGbG9hdGluZ1BvaW50VGVzdCA6IHB1YmxpYyBUZXN0IHsKICBwcm90ZWN0ZWQ6
Ci0KICAgLy8gUHJlLWNhbGN1bGF0ZWQgbnVtYmVycyB0byBiZSB1c2VkIGJ5IHRoZSB0ZXN0cy4K
ICAgc3RydWN0IFRlc3RWYWx1ZXMgewogICAgIFJhd1R5cGUgY2xvc2VfdG9fcG9zaXRpdmVfemVy
bzsKQEAgLTMyMjQsNyArMzI2MCw3IEBAIFRFU1RfRihTaW5nbGVFdmFsdWF0aW9uVGVzdCwgQVNT
RVJUX1NUUikgewogCiAgIC8vIGZhaWxlZCBFWFBFQ1RfU1RSQ0FTRUVRCiAgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9TVFJDQVNFRVEocDFfKyssIHAyXysrKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgImlnbm9yaW5nIGNhc2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIklnbm9yaW5nIGNhc2UiKTsKICAgRVhQRUNUX0VRKHMxXyArIDIsIHAxXyk7CiAgIEVYUEVD
VF9FUShzMl8gKyAyLCBwMl8pOwogfQpAQCAtMzQxMiw1OSArMzQ0OCwxNTEgQEAgVEVTVF9GKE5v
RmF0YWxGYWlsdXJlVGVzdCwgTWVzc2FnZUlzU3RyZWFtYWJsZSkgewogCiAvLyBUZXN0cyBub24t
c3RyaW5nIGFzc2VydGlvbnMuCiAKK3N0ZDo6c3RyaW5nIEVkaXRzVG9TdHJpbmcoY29uc3Qgc3Rk
Ojp2ZWN0b3I8RWRpdFR5cGU+JiBlZGl0cykgeworICBzdGQ6OnN0cmluZyBvdXQ7CisgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZWRpdHMuc2l6ZSgpOyArK2kpIHsKKyAgICBzdGF0aWMgY29uc3Qg
Y2hhciBrRWRpdHNbXSA9ICIgKy0vIjsKKyAgICBvdXQuYXBwZW5kKDEsIGtFZGl0c1tlZGl0c1tp
XV0pOworICB9CisgIHJldHVybiBvdXQ7Cit9CisKK3N0ZDo6dmVjdG9yPHNpemVfdD4gQ2hhcnNU
b0luZGljZXMoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgeworICBzdGQ6OnZlY3RvcjxzaXplX3Q+
IG91dDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHIuc2l6ZSgpOyArK2kpIHsKKyAgICBv
dXQucHVzaF9iYWNrKHN0cltpXSk7CisgIH0KKyAgcmV0dXJuIG91dDsKK30KKworc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+IENoYXJzVG9MaW5lcyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7Cisg
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBvdXQ7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c3RyLnNpemUoKTsgKytpKSB7CisgICAgb3V0LnB1c2hfYmFjayhzdHIuc3Vic3RyKGksIDEpKTsK
KyAgfQorICByZXR1cm4gb3V0OworfQorCitURVNUKEVkaXREaXN0YW5jZSwgVGVzdENhc2VzKSB7
CisgIHN0cnVjdCBDYXNlIHsKKyAgICBpbnQgbGluZTsKKyAgICBjb25zdCBjaGFyKiBsZWZ0Owor
ICAgIGNvbnN0IGNoYXIqIHJpZ2h0OworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkX2VkaXRzOwor
ICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkX2RpZmY7CisgIH07CisgIHN0YXRpYyBjb25zdCBDYXNl
IGtDYXNlc1tdID0geworICAgICAgLy8gTm8gY2hhbmdlLgorICAgICAge19fTElORV9fLCAiQSIs
ICJBIiwgIiAiLCAiIn0sCisgICAgICB7X19MSU5FX18sICJBQkNERSIsICJBQkNERSIsICIgICAg
ICIsICIifSwKKyAgICAgIC8vIFNpbXBsZSBhZGRzLgorICAgICAge19fTElORV9fLCAiWCIsICJY
QSIsICIgKyIsICJAQCArMSwyIEBAXG4gWFxuK0FcbiJ9LAorICAgICAge19fTElORV9fLCAiWCIs
ICJYQUJDRCIsICIgKysrKyIsICJAQCArMSw1IEBAXG4gWFxuK0FcbitCXG4rQ1xuK0RcbiJ9LAor
ICAgICAgLy8gU2ltcGxlIHJlbW92ZXMuCisgICAgICB7X19MSU5FX18sICJYQSIsICJYIiwgIiAt
IiwgIkBAIC0xLDIgQEBcbiBYXG4tQVxuIn0sCisgICAgICB7X19MSU5FX18sICJYQUJDRCIsICJY
IiwgIiAtLS0tIiwgIkBAIC0xLDUgQEBcbiBYXG4tQVxuLUJcbi1DXG4tRFxuIn0sCisgICAgICAv
LyBTaW1wbGUgcmVwbGFjZXMuCisgICAgICB7X19MSU5FX18sICJBIiwgImEiLCAiLyIsICJAQCAt
MSwxICsxLDEgQEBcbi1BXG4rYVxuIn0sCisgICAgICB7X19MSU5FX18sICJBQkNEIiwgImFiY2Qi
LCAiLy8vLyIsCisgICAgICAgIkBAIC0xLDQgKzEsNCBAQFxuLUFcbi1CXG4tQ1xuLURcbithXG4r
YlxuK2NcbitkXG4ifSwKKyAgICAgIC8vIFBhdGggZmluZGluZy4KKyAgICAgIHtfX0xJTkVfXywg
IkFCQ0RFRkdIIiwgIkFCWEVHSDEiLCAiICAtLyAtICArIiwKKyAgICAgICAiQEAgLTEsOCArMSw3
IEBAXG4gQVxuIEJcbi1DXG4tRFxuK1hcbiBFXG4tRlxuIEdcbiBIXG4rMVxuIn0sCisgICAgICB7
X19MSU5FX18sICJBQUFBQkNDQ0MiLCAiQUJBQkNEQ0RDIiwgIi0gLyAgICsgLyAiLAorICAgICAg
ICJAQCAtMSw5ICsxLDkgQEBcbi1BXG4gQVxuLUFcbitCXG4gQVxuIEJcbiBDXG4rRFxuIENcbi1D
XG4rRFxuIENcbiJ9LAorICAgICAge19fTElORV9fLCAiQUJDREUiLCAiQkNEQ0QiLCAiLSAgICsv
IiwKKyAgICAgICAiQEAgLTEsNSArMSw1IEBAXG4tQVxuIEJcbiBDXG4gRFxuLUVcbitDXG4rRFxu
In0sCisgICAgICB7X19MSU5FX18sICJBQkNERUZHSElKS0wiLCAiQkNEQ0RFRkdKS0xKSyIsICIt
ICsrICAgICAtLSAgICsrIiwKKyAgICAgICAiQEAgLTEsNCArMSw1IEBAXG4tQVxuIEJcbitDXG4r
RFxuIENcbiBEXG4iCisgICAgICAgIkBAIC02LDcgKzcsNyBAQFxuIEZcbiBHXG4tSFxuLUlcbiBK
XG4gS1xuIExcbitKXG4rS1xuIn0sCisgICAgICB7fX07CisgIGZvciAoY29uc3QgQ2FzZSogYyA9
IGtDYXNlczsgYy0+bGVmdDsgKytjKSB7CisgICAgRVhQRUNUX1RSVUUoYy0+ZXhwZWN0ZWRfZWRp
dHMgPT0KKyAgICAgICAgICAgICAgICBFZGl0c1RvU3RyaW5nKENhbGN1bGF0ZU9wdGltYWxFZGl0
cyhDaGFyc1RvSW5kaWNlcyhjLT5sZWZ0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDaGFyc1RvSW5kaWNlcyhjLT5yaWdodCkpKSkKKyAgICAg
ICAgPDwgIkxlZnQgPCIgPDwgYy0+bGVmdCA8PCAiPiBSaWdodCA8IiA8PCBjLT5yaWdodCA8PCAi
PiBFZGl0cyA8IgorICAgICAgICA8PCBFZGl0c1RvU3RyaW5nKENhbGN1bGF0ZU9wdGltYWxFZGl0
cygKKyAgICAgICAgICAgICAgIENoYXJzVG9JbmRpY2VzKGMtPmxlZnQpLCBDaGFyc1RvSW5kaWNl
cyhjLT5yaWdodCkpKSA8PCAiPiI7CisgICAgRVhQRUNUX1RSVUUoYy0+ZXhwZWN0ZWRfZGlmZiA9
PSBDcmVhdGVVbmlmaWVkRGlmZihDaGFyc1RvTGluZXMoYy0+bGVmdCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyc1RvTGluZXMoYy0+
cmlnaHQpKSkKKyAgICAgICAgPDwgIkxlZnQgPCIgPDwgYy0+bGVmdCA8PCAiPiBSaWdodCA8IiA8
PCBjLT5yaWdodCA8PCAiPiBEaWZmIDwiCisgICAgICAgIDw8IENyZWF0ZVVuaWZpZWREaWZmKENo
YXJzVG9MaW5lcyhjLT5sZWZ0KSwgQ2hhcnNUb0xpbmVzKGMtPnJpZ2h0KSkKKyAgICAgICAgPDwg
Ij4iOworICB9Cit9CisKIC8vIFRlc3RzIEVxRmFpbHVyZSgpLCB1c2VkIGZvciBpbXBsZW1lbnRp
bmcgKkVRKiBhc3NlcnRpb25zLgogVEVTVChBc3NlcnRpb25UZXN0LCBFcUZhaWx1cmUpIHsKLSAg
Y29uc3QgU3RyaW5nIGZvb192YWwoIjUiKSwgYmFyX3ZhbCgiNiIpOwotICBjb25zdCBTdHJpbmcg
bXNnMSgKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZm9vX3ZhbCgiNSIpLCBiYXJfdmFsKCI2Iik7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIG1zZzEoCiAgICAgICBFcUZhaWx1cmUoImZvbyIsICJiYXIiLCBm
b29fdmFsLCBiYXJfdmFsLCBmYWxzZSkKICAgICAgIC5mYWlsdXJlX21lc3NhZ2UoKSk7CiAgIEVY
UEVDVF9TVFJFUSgKLSAgICAgICJWYWx1ZSBvZjogYmFyXG4iCi0gICAgICAiICBBY3R1YWw6IDZc
biIKLSAgICAgICJFeHBlY3RlZDogZm9vXG4iCi0gICAgICAiV2hpY2ggaXM6IDUiLAorICAgICAg
IiAgICAgIEV4cGVjdGVkOiBmb29cbiIKKyAgICAgICIgICAgICBXaGljaCBpczogNVxuIgorICAg
ICAgIlRvIGJlIGVxdWFsIHRvOiBiYXJcbiIKKyAgICAgICIgICAgICBXaGljaCBpczogNiIsCiAg
ICAgICBtc2cxLmNfc3RyKCkpOwogCi0gIGNvbnN0IFN0cmluZyBtc2cyKAorICBjb25zdCBzdGQ6
OnN0cmluZyBtc2cyKAogICAgICAgRXFGYWlsdXJlKCJmb28iLCAiNiIsIGZvb192YWwsIGJhcl92
YWwsIGZhbHNlKQogICAgICAgLmZhaWx1cmVfbWVzc2FnZSgpKTsKICAgRVhQRUNUX1NUUkVRKAot
ICAgICAgIlZhbHVlIG9mOiA2XG4iCi0gICAgICAiRXhwZWN0ZWQ6IGZvb1xuIgotICAgICAgIldo
aWNoIGlzOiA1IiwKKyAgICAgICIgICAgICBFeHBlY3RlZDogZm9vXG4iCisgICAgICAiICAgICAg
V2hpY2ggaXM6IDVcbiIKKyAgICAgICJUbyBiZSBlcXVhbCB0bzogNiIsCiAgICAgICBtc2cyLmNf
c3RyKCkpOwogCi0gIGNvbnN0IFN0cmluZyBtc2czKAorICBjb25zdCBzdGQ6OnN0cmluZyBtc2cz
KAogICAgICAgRXFGYWlsdXJlKCI1IiwgImJhciIsIGZvb192YWwsIGJhcl92YWwsIGZhbHNlKQog
ICAgICAgLmZhaWx1cmVfbWVzc2FnZSgpKTsKICAgRVhQRUNUX1NUUkVRKAotICAgICAgIlZhbHVl
IG9mOiBiYXJcbiIKLSAgICAgICIgIEFjdHVhbDogNlxuIgotICAgICAgIkV4cGVjdGVkOiA1IiwK
KyAgICAgICIgICAgICBFeHBlY3RlZDogNVxuIgorICAgICAgIlRvIGJlIGVxdWFsIHRvOiBiYXJc
biIKKyAgICAgICIgICAgICBXaGljaCBpczogNiIsCiAgICAgICBtc2czLmNfc3RyKCkpOwogCi0g
IGNvbnN0IFN0cmluZyBtc2c0KAorICBjb25zdCBzdGQ6OnN0cmluZyBtc2c0KAogICAgICAgRXFG
YWlsdXJlKCI1IiwgIjYiLCBmb29fdmFsLCBiYXJfdmFsLCBmYWxzZSkuZmFpbHVyZV9tZXNzYWdl
KCkpOwogICBFWFBFQ1RfU1RSRVEoCi0gICAgICAiVmFsdWUgb2Y6IDZcbiIKLSAgICAgICJFeHBl
Y3RlZDogNSIsCisgICAgICAiICAgICAgRXhwZWN0ZWQ6IDVcbiIKKyAgICAgICJUbyBiZSBlcXVh
bCB0bzogNiIsCiAgICAgICBtc2c0LmNfc3RyKCkpOwogCi0gIGNvbnN0IFN0cmluZyBtc2c1KAor
ICBjb25zdCBzdGQ6OnN0cmluZyBtc2c1KAogICAgICAgRXFGYWlsdXJlKCJmb28iLCAiYmFyIiwK
LSAgICAgICAgICAgICAgICBTdHJpbmcoIlwieFwiIiksIFN0cmluZygiXCJ5XCIiKSwKKyAgICAg
ICAgICAgICAgICBzdGQ6OnN0cmluZygiXCJ4XCIiKSwgc3RkOjpzdHJpbmcoIlwieVwiIiksCiAg
ICAgICAgICAgICAgICAgdHJ1ZSkuZmFpbHVyZV9tZXNzYWdlKCkpOwogICBFWFBFQ1RfU1RSRVEo
Ci0gICAgICAiVmFsdWUgb2Y6IGJhclxuIgotICAgICAgIiAgQWN0dWFsOiBcInlcIlxuIgotICAg
ICAgIkV4cGVjdGVkOiBmb28gKGlnbm9yaW5nIGNhc2UpXG4iCi0gICAgICAiV2hpY2ggaXM6IFwi
eFwiIiwKKyAgICAgICIgICAgICBFeHBlY3RlZDogZm9vXG4iCisgICAgICAiICAgICAgV2hpY2gg
aXM6IFwieFwiXG4iCisgICAgICAiVG8gYmUgZXF1YWwgdG86IGJhclxuIgorICAgICAgIiAgICAg
IFdoaWNoIGlzOiBcInlcIlxuIgorICAgICAgIklnbm9yaW5nIGNhc2UiLAogICAgICAgbXNnNS5j
X3N0cigpKTsKIH0KIAorVEVTVChBc3NlcnRpb25UZXN0LCBFcUZhaWx1cmVXaXRoRGlmZikgewor
ICBjb25zdCBzdGQ6OnN0cmluZyBsZWZ0KAorICAgICAgIjFcXG4yWFhYXFxuM1xcbjVcXG42XFxu
N1xcbjhcXG45XFxuMTBcXG4xMVxcbjEyWFhYXFxuMTNcXG4xNFxcbjE1Iik7CisgIGNvbnN0IHN0
ZDo6c3RyaW5nIHJpZ2h0KAorICAgICAgIjFcXG4yXFxuM1xcbjRcXG41XFxuNlxcbjdcXG44XFxu
OVxcbjExXFxuMTJcXG4xM1xcbjE0Iik7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG1zZzEoCisgICAg
ICBFcUZhaWx1cmUoImxlZnQiLCAicmlnaHQiLCBsZWZ0LCByaWdodCwgZmFsc2UpLmZhaWx1cmVf
bWVzc2FnZSgpKTsKKyAgRVhQRUNUX1NUUkVRKAorICAgICAgIiAgICAgIEV4cGVjdGVkOiBsZWZ0
XG4iCisgICAgICAiICAgICAgV2hpY2ggaXM6ICIKKyAgICAgICIxXFxuMlhYWFxcbjNcXG41XFxu
NlxcbjdcXG44XFxuOVxcbjEwXFxuMTFcXG4xMlhYWFxcbjEzXFxuMTRcXG4xNVxuIgorICAgICAg
IlRvIGJlIGVxdWFsIHRvOiByaWdodFxuIgorICAgICAgIiAgICAgIFdoaWNoIGlzOiAxXFxuMlxc
bjNcXG40XFxuNVxcbjZcXG43XFxuOFxcbjlcXG4xMVxcbjEyXFxuMTNcXG4xNFxuIgorICAgICAg
IldpdGggZGlmZjpcbkBAIC0xLDUgKzEsNiBAQFxuIDFcbi0yWFhYXG4rMlxuIDNcbis0XG4gNVxu
IDZcbiIKKyAgICAgICJAQCAtNyw4ICs4LDYgQEBcbiA4XG4gOVxuLTEwXG4gMTFcbi0xMlhYWFxu
KzEyXG4gMTNcbiAxNFxuLTE1XG4iLAorICAgICAgbXNnMS5jX3N0cigpKTsKK30KKwogLy8gVGVz
dHMgQXBwZW5kVXNlck1lc3NhZ2UoKSwgdXNlZCBmb3IgaW1wbGVtZW50aW5nIHRoZSAqRVEqIG1h
Y3Jvcy4KIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXBwZW5kVXNlck1lc3NhZ2UpIHsKLSAgY29uc3Qg
U3RyaW5nIGZvbygiZm9vIik7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZvbygiZm9vIik7CiAKICAg
TWVzc2FnZSBtc2c7CiAgIEVYUEVDVF9TVFJFUSgiZm9vIiwKQEAgLTM0NzcsNyArMzYwNSw3IEBA
IFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXBwZW5kVXNlck1lc3NhZ2UpIHsKIAogI2lmZGVmIF9fQk9S
TEFORENfXwogLy8gU2lsZW5jZXMgd2FybmluZ3M6ICJDb25kaXRpb24gaXMgYWx3YXlzIHRydWUi
LCAiVW5yZWFjaGFibGUgY29kZSIKLSNwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAor
IyBwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAogI2VuZGlmCiAKIC8vIFRlc3RzIEFT
U0VSVF9UUlVFLgpAQCAtMzQ5MCw4ICszNjE4LDggQEAgVEVTVChBc3NlcnRpb25UZXN0LCBBU1NF
UlRfVFJVRSkgewogLy8gVGVzdHMgQVNTRVJUX1RSVUUocHJlZGljYXRlKSBmb3IgcHJlZGljYXRl
cyByZXR1cm5pbmcgQXNzZXJ0aW9uUmVzdWx0LgogVEVTVChBc3NlcnRpb25UZXN0LCBBc3NlcnRU
cnVlV2l0aEFzc2VydGlvblJlc3VsdCkgewogICBBU1NFUlRfVFJVRShSZXN1bHRJc0V2ZW4oMikp
OwotI2lmICFkZWZpbmVkKF9fQk9STEFORENfXykgfHwgX19CT1JMQU5EQ19fID49IDB4NjAwCi0g
IC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAwNy4KKyNpZm5kZWYgX19CT1JMQU5EQ19fCisgIC8v
IElDRSdzIGluIEMrK0J1aWxkZXIuCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9UUlVF
KFJlc3VsdElzRXZlbigzKSksCiAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogUmVz
dWx0SXNFdmVuKDMpXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogZmFsc2Ug
KDMgaXMgb2RkKVxuIgpAQCAtMzUxNiw4ICszNjQ0LDggQEAgVEVTVChBc3NlcnRpb25UZXN0LCBB
U1NFUlRfRkFMU0UpIHsKIC8vIFRlc3RzIEFTU0VSVF9GQUxTRShwcmVkaWNhdGUpIGZvciBwcmVk
aWNhdGVzIHJldHVybmluZyBBc3NlcnRpb25SZXN1bHQuCiBURVNUKEFzc2VydGlvblRlc3QsIEFz
c2VydEZhbHNlV2l0aEFzc2VydGlvblJlc3VsdCkgewogICBBU1NFUlRfRkFMU0UoUmVzdWx0SXNF
dmVuKDMpKTsKLSNpZiAhZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IF9fQk9STEFORENfXyA+PSAw
eDYwMAotICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcuCisjaWZuZGVmIF9fQk9STEFORENf
XworICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyLgogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NF
UlRfRkFMU0UoUmVzdWx0SXNFdmVuKDIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVl
IG9mOiBSZXN1bHRJc0V2ZW4oMilcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFs
OiB0cnVlICgyIGlzIGV2ZW4pXG4iCkBAIC0zNTMyLDcgKzM2NjAsNyBAQCBURVNUKEFzc2VydGlv
blRlc3QsIEFzc2VydEZhbHNlV2l0aEFzc2VydGlvblJlc3VsdCkgewogCiAjaWZkZWYgX19CT1JM
QU5EQ19fCiAvLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2aW91cyAiI3ByYWdtYSBvcHRp
b24gcHVzaCIgc3VwcmVzc2VkIHRoZW0KLSNwcmFnbWEgb3B0aW9uIHBvcAorIyBwcmFnbWEgb3B0
aW9uIHBvcAogI2VuZGlmCiAKIC8vIFRlc3RzIHVzaW5nIEFTU0VSVF9FUSBvbiBkb3VibGUgdmFs
dWVzLiAgVGhlIHB1cnBvc2UgaXMgdG8gbWFrZQpAQCAtMzU1MSw5ICszNjc5LDkgQEAgVEVTVChF
eHBlY3RUZXN0LCBBU1NFUlRfRVFfRG91YmxlKSB7CiBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VS
VF9FUSkgewogICBBU1NFUlRfRVEoNSwgMiArIDMpOwogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShB
U1NFUlRfRVEoNSwgMiozKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiAyKjNc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiA2XG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICJFeHBlY3RlZDogNSIpOworICAgICAgICAgICAgICAgICAgICAgICAiICAgICAg
RXhwZWN0ZWQ6IDVcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiAy
KjNcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgIFdoaWNoIGlzOiA2Iik7CiB9CiAK
IC8vIFRlc3RzIEFTU0VSVF9FUShOVUxMLCBwb2ludGVyKS4KQEAgLTM1NzAsNyArMzY5OCw3IEBA
IFRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0VRX05VTEwpIHsKICAgLy8gQSBmYWlsdXJlLgog
ICBzdGF0aWMgaW50IG4gPSAwOwogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoTlVM
TCwgJm4pLAotICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6ICZuXG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiAmblxuIik7CiB9CiAjZW5kaWYgIC8v
IEdURVNUX0NBTl9DT01QQVJFX05VTEwKIApAQCAtMzYzNSwxMyArMzc2MywxNCBAQCB2b2lkIFRo
cm93Tm90aGluZygpIHt9CiBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9USFJPVykgewogICBB
U1NFUlRfVEhST1coVGhyb3dBbkludGVnZXIoKSwgaW50KTsKIAotI2lmbmRlZiBfX0JPUkxBTkRD
X18KKyMgaWZuZGVmIF9fQk9STEFORENfXworCiAgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAw
NyBhbmQgMjAwOS4KICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoCiAgICAgICBBU1NFUlRfVEhST1co
VGhyb3dBbkludGVnZXIoKSwgYm9vbCksCiAgICAgICAiRXhwZWN0ZWQ6IFRocm93QW5JbnRlZ2Vy
KCkgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiB0eXBlIGJvb2wuXG4iCiAgICAgICAiICBBY3R1YWw6
IGl0IHRocm93cyBhIGRpZmZlcmVudCB0eXBlLiIpOwotI2VuZGlmCisjIGVuZGlmCiAKICAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoCiAgICAgICBBU1NFUlRfVEhST1coVGhyb3dOb3RoaW5nKCksIGJv
b2wpLApAQCAtMzY3Miw3ICszODAxLDggQEAgVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfQU5Z
X1RIUk9XKSB7CiAvLyBjb21waWxlLgogVEVTVChBc3NlcnRpb25UZXN0LCBBc3NlcnRQcmVjZWRl
bmNlKSB7CiAgIEFTU0VSVF9FUSgxIDwgMiwgdHJ1ZSk7Ci0gIEFTU0VSVF9FUSh0cnVlICYmIGZh
bHNlLCBmYWxzZSk7CisgIGJvb2wgZmFsc2VfdmFsdWUgPSBmYWxzZTsKKyAgQVNTRVJUX0VRKHRy
dWUgJiYgZmFsc2VfdmFsdWUsIGZhbHNlKTsKIH0KIAogLy8gQSBzdWJyb3V0aW5lIHVzZWQgYnkg
dGhlIGZvbGxvd2luZyB0ZXN0LgpAQCAtMzY4Myw3ICszODEzLDcgQEAgdm9pZCBUZXN0RXExKGlu
dCB4KSB7CiAvLyBUZXN0cyBjYWxsaW5nIGEgdGVzdCBzdWJyb3V0aW5lIHRoYXQncyBub3QgcGFy
dCBvZiBhIGZpeHR1cmUuCiBURVNUKEFzc2VydGlvblRlc3QsIE5vbkZpeHR1cmVTdWJyb3V0aW5l
KSB7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKFRlc3RFcTEoMiksCi0gICAgICAgICAgICAgICAg
ICAgICAgICJWYWx1ZSBvZjogeCIpOworICAgICAgICAgICAgICAgICAgICAgICAiVG8gYmUgZXF1
YWwgdG86IHgiKTsKIH0KIAogLy8gQW4gdW5jb3B5YWJsZSBjbGFzcy4KQEAgLTM3MzIsNyArMzg2
Miw3IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0V29ya3NXaXRoVW5jb3B5YWJsZU9iamVj
dCkgewogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShUZXN0QXNzZXJ0Tm9uUG9zaXRpdmUoKSwKICAg
ICAiSXNQb3NpdGl2ZVVuY29weWFibGUoeSkgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZVxueSBl
dmFsdWF0ZXMgdG8gLTEiKTsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoVGVzdEFzc2VydEVxdWFs
c1VuY29weWFibGUoKSwKLSAgICAiVmFsdWUgb2Y6IHlcbiAgQWN0dWFsOiAtMVxuRXhwZWN0ZWQ6
IHhcbldoaWNoIGlzOiA1Iik7CisgICAgIkV4cGVjdGVkOiB4XG4gICAgICBXaGljaCBpczogNVxu
VG8gYmUgZXF1YWwgdG86IHlcbiAgICAgIFdoaWNoIGlzOiAtMSIpOwogfQogCiAvLyBUZXN0cyB0
aGF0IHVuY29weWFibGUgb2JqZWN0cyBjYW4gYmUgdXNlZCBpbiBleHBlY3RzLgpAQCAtMzc0NCw1
NyArMzg3NCw4OSBAQCBURVNUKEFzc2VydGlvblRlc3QsIEV4cGVjdFdvcmtzV2l0aFVuY29weWFi
bGVPYmplY3QpIHsKICAgICAiSXNQb3NpdGl2ZVVuY29weWFibGUoeSkgZXZhbHVhdGVzIHRvIGZh
bHNlLCB3aGVyZVxueSBldmFsdWF0ZXMgdG8gLTEiKTsKICAgRVhQRUNUX0VRKHgsIHgpOwogICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoeCwgeSksCi0gICAgIlZhbHVlIG9mOiB5
XG4gIEFjdHVhbDogLTFcbkV4cGVjdGVkOiB4XG5XaGljaCBpczogNSIpOworICAgICJFeHBlY3Rl
ZDogeFxuICAgICAgV2hpY2ggaXM6IDVcblRvIGJlIGVxdWFsIHRvOiB5XG4gICAgICBXaGljaCBp
czogLTEiKTsKIH0KIAorZW51bSBOYW1lZEVudW0geworICBrRTEgPSAwLAorICBrRTIgPSAxCit9
OwogCi0vLyBUaGUgdmVyc2lvbiBvZiBnY2MgdXNlZCBpbiBYQ29kZSAyLjIgaGFzIGEgYnVnIGFu
ZCBkb2Vzbid0IGFsbG93CitURVNUKEFzc2VydGlvblRlc3QsIE5hbWVkRW51bSkgeworICBFWFBF
Q1RfRVEoa0UxLCBrRTEpOworICBFWFBFQ1RfTFQoa0UxLCBrRTIpOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfRVEoa0UxLCBrRTIpLCAiV2hpY2ggaXM6IDAiKTsKKyAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKGtFMSwga0UyKSwgIldoaWNoIGlzOiAxIik7Cit9
CisKKy8vIFRoZSB2ZXJzaW9uIG9mIGdjYyB1c2VkIGluIFhDb2RlIDIuMiBoYXMgYSBidWcgYW5k
IGRvZXNuJ3QgYWxsb3cKIC8vIGFub255bW91cyBlbnVtcyBpbiBhc3NlcnRpb25zLiAgVGhlcmVm
b3JlIHRoZSBmb2xsb3dpbmcgdGVzdCBpcyBub3QKIC8vIGRvbmUgb24gTWFjLgotLy8gU3VuIFN0
dWRpbyBhbHNvIHJlamVjdHMgdGhpcyBjb2RlLgotI2lmICFHVEVTVF9PU19NQUMgJiYgIWRlZmlu
ZWQoX19TVU5QUk9fQ0MpCisvLyBTdW4gU3R1ZGlvIGFuZCBIUCBhQ0MgYWxzbyByZWplY3QgdGhp
cyBjb2RlLgorI2lmICFHVEVTVF9PU19NQUMgJiYgIWRlZmluZWQoX19TVU5QUk9fQ0MpICYmICFk
ZWZpbmVkKF9fSFBfYUNDKQogCiAvLyBUZXN0cyB1c2luZyBhc3NlcnRpb25zIHdpdGggYW5vbnlt
b3VzIGVudW1zLgogZW51bSB7Ci0gIENBU0VfQSA9IC0xLAotI2lmIEdURVNUX09TX0xJTlVYCisg
IGtDYXNlQSA9IC0xLAorCisjIGlmIEdURVNUX09TX0xJTlVYCisKICAgLy8gV2Ugd2FudCB0byB0
ZXN0IHRoZSBjYXNlIHdoZXJlIHRoZSBzaXplIG9mIHRoZSBhbm9ueW1vdXMgZW51bSBpcwogICAv
LyBsYXJnZXIgdGhhbiBzaXplb2YoaW50KSwgdG8gbWFrZSBzdXJlIG91ciBpbXBsZW1lbnRhdGlv
biBvZiB0aGUKICAgLy8gYXNzZXJ0aW9ucyBkb2Vzbid0IHRydW5jYXRlIHRoZSBlbnVtcy4gIEhv
d2V2ZXIsIE1TVkMKICAgLy8gKGluY29ycmVjdGx5KSBkb2Vzbid0IGFsbG93IGFuIGVudW0gdmFs
dWUgdG8gZXhjZWVkIHRoZSByYW5nZSBvZgogICAvLyBhbiBpbnQsIHNvIHRoaXMgaGFzIHRvIGJl
IGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuCiAgIC8vCi0gIC8vIE9uIExpbnV4LCBDQVNFX0IgYW5k
IENBU0VfQSBoYXZlIHRoZSBzYW1lIHZhbHVlIHdoZW4gdHJ1bmNhdGVkIHRvCisgIC8vIE9uIExp
bnV4LCBrQ2FzZUIgYW5kIGtDYXNlQSBoYXZlIHRoZSBzYW1lIHZhbHVlIHdoZW4gdHJ1bmNhdGVk
IHRvCiAgIC8vIGludCBzaXplLiAgV2Ugd2FudCB0byB0ZXN0IHdoZXRoZXIgdGhpcyB3aWxsIGNv
bmZ1c2UgdGhlCiAgIC8vIGFzc2VydGlvbnMuCi0gIENBU0VfQiA9IHRlc3Rpbmc6OmludGVybmFs
OjprTWF4QmlnZ2VzdEludCwKLSNlbHNlCi0gIENBU0VfQiA9IElOVF9NQVgsCi0jZW5kaWYgIC8v
IEdURVNUX09TX0xJTlVYCisgIGtDYXNlQiA9IHRlc3Rpbmc6OmludGVybmFsOjprTWF4QmlnZ2Vz
dEludCwKKworIyBlbHNlCisKKyAga0Nhc2VCID0gSU5UX01BWCwKKworIyBlbmRpZiAgLy8gR1RF
U1RfT1NfTElOVVgKKworICBrQ2FzZUMgPSA0MgogfTsKIAogVEVTVChBc3NlcnRpb25UZXN0LCBB
bm9ueW1vdXNFbnVtKSB7Ci0jaWYgR1RFU1RfT1NfTElOVVgKLSAgRVhQRUNUX0VRKHN0YXRpY19j
YXN0PGludD4oQ0FTRV9BKSwgc3RhdGljX2Nhc3Q8aW50PihDQVNFX0IpKTsKLSNlbmRpZiAgLy8g
R1RFU1RfT1NfTElOVVgKLQotICBFWFBFQ1RfRVEoQ0FTRV9BLCBDQVNFX0EpOwotICBFWFBFQ1Rf
TkUoQ0FTRV9BLCBDQVNFX0IpOwotICBFWFBFQ1RfTFQoQ0FTRV9BLCBDQVNFX0IpOwotICBFWFBF
Q1RfTEUoQ0FTRV9BLCBDQVNFX0IpOwotICBFWFBFQ1RfR1QoQ0FTRV9CLCBDQVNFX0EpOwotICBF
WFBFQ1RfR0UoQ0FTRV9BLCBDQVNFX0EpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBF
Q1RfR0UoQ0FTRV9BLCBDQVNFX0IpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKENBU0Vf
QSkgPj0gKENBU0VfQikiKTsKLQotICBBU1NFUlRfRVEoQ0FTRV9BLCBDQVNFX0EpOwotICBBU1NF
UlRfTkUoQ0FTRV9BLCBDQVNFX0IpOwotICBBU1NFUlRfTFQoQ0FTRV9BLCBDQVNFX0IpOwotICBB
U1NFUlRfTEUoQ0FTRV9BLCBDQVNFX0IpOwotICBBU1NFUlRfR1QoQ0FTRV9CLCBDQVNFX0EpOwot
ICBBU1NFUlRfR0UoQ0FTRV9BLCBDQVNFX0EpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NF
UlRfRVEoQ0FTRV9BLCBDQVNFX0IpLAotICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6
IENBU0VfQiIpOworIyBpZiBHVEVTVF9PU19MSU5VWAorCisgIEVYUEVDVF9FUShzdGF0aWNfY2Fz
dDxpbnQ+KGtDYXNlQSksIHN0YXRpY19jYXN0PGludD4oa0Nhc2VCKSk7CisKKyMgZW5kaWYgIC8v
IEdURVNUX09TX0xJTlVYCisKKyAgRVhQRUNUX0VRKGtDYXNlQSwga0Nhc2VBKTsKKyAgRVhQRUNU
X05FKGtDYXNlQSwga0Nhc2VCKTsKKyAgRVhQRUNUX0xUKGtDYXNlQSwga0Nhc2VCKTsKKyAgRVhQ
RUNUX0xFKGtDYXNlQSwga0Nhc2VCKTsKKyAgRVhQRUNUX0dUKGtDYXNlQiwga0Nhc2VBKTsKKyAg
RVhQRUNUX0dFKGtDYXNlQSwga0Nhc2VBKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX0dFKGtDYXNlQSwga0Nhc2VCKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIihrQ2Fz
ZUEpID49IChrQ2FzZUIpIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HRShr
Q2FzZUEsIGtDYXNlQyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICItMSB2cyA0MiIpOwor
CisgIEFTU0VSVF9FUShrQ2FzZUEsIGtDYXNlQSk7CisgIEFTU0VSVF9ORShrQ2FzZUEsIGtDYXNl
Qik7CisgIEFTU0VSVF9MVChrQ2FzZUEsIGtDYXNlQik7CisgIEFTU0VSVF9MRShrQ2FzZUEsIGtD
YXNlQik7CisgIEFTU0VSVF9HVChrQ2FzZUIsIGtDYXNlQSk7CisgIEFTU0VSVF9HRShrQ2FzZUEs
IGtDYXNlQSk7CisKKyMgaWZuZGVmIF9fQk9STEFORENfXworCisgIC8vIElDRSdzIGluIEMrK0J1
aWxkZXIuCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShrQ2FzZUEsIGtDYXNlQiks
CisgICAgICAgICAgICAgICAgICAgICAgICJUbyBiZSBlcXVhbCB0bzoga0Nhc2VCIik7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShrQ2FzZUEsIGtDYXNlQyksCisgICAgICAgICAg
ICAgICAgICAgICAgICJXaGljaCBpczogNDIiKTsKKyMgZW5kaWYKKworICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShBU1NFUlRfRVEoa0Nhc2VBLCBrQ2FzZUMpLAorICAgICAgICAgICAgICAgICAgICAg
ICAiV2hpY2ggaXM6IC0xIik7CiB9CiAKICNlbmRpZiAgLy8gIUdURVNUX09TX01BQyAmJiAhZGVm
aW5lZChfX1NVTlBST19DQykKQEAgLTM4NDAsMjQgKzQwMDIsMjYgQEAgVEVTVChIUkVTVUxUQXNz
ZXJ0aW9uVGVzdCwgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKSB7CiAKICAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRVhQRUNUX0hSRVNVTFRfRkFJTEVEKE9rSFJFU1VMVFN1Y2Nlc3MoKSksCiAgICAg
IkV4cGVjdGVkOiAoT2tIUkVTVUxUU3VjY2VzcygpKSBmYWlscy5cbiIKLSAgICAiICBBY3R1YWw6
IDB4MDAwMDAwMDAiKTsKKyAgICAiICBBY3R1YWw6IDB4MCIpOwogICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShFWFBFQ1RfSFJFU1VMVF9GQUlMRUQoRmFsc2VIUkVTVUxUU3VjY2VzcygpKSwKICAg
ICAiRXhwZWN0ZWQ6IChGYWxzZUhSRVNVTFRTdWNjZXNzKCkpIGZhaWxzLlxuIgotICAgICIgIEFj
dHVhbDogMHgwMDAwMDAwMSIpOworICAgICIgIEFjdHVhbDogMHgxIik7CiB9CiAKIFRFU1QoSFJF
U1VMVEFzc2VydGlvblRlc3QsIEFTU0VSVF9IUkVTVUxUX0ZBSUxFRCkgewogICBBU1NFUlRfSFJF
U1VMVF9GQUlMRUQoRV9VTkVYUEVDVEVEKTsKIAotI2lmbmRlZiBfX0JPUkxBTkRDX18KKyMgaWZu
ZGVmIF9fQk9STEFORENfXworCiAgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAwNyBhbmQgMjAw
OS4KICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0hSRVNVTFRfRkFJTEVEKE9rSFJFU1VM
VFN1Y2Nlc3MoKSksCiAgICAgIkV4cGVjdGVkOiAoT2tIUkVTVUxUU3VjY2VzcygpKSBmYWlscy5c
biIKLSAgICAiICBBY3R1YWw6IDB4MDAwMDAwMDAiKTsKLSNlbmRpZgorICAgICIgIEFjdHVhbDog
MHgwIik7CisjIGVuZGlmCisKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0hSRVNVTFRf
RkFJTEVEKEZhbHNlSFJFU1VMVFN1Y2Nlc3MoKSksCiAgICAgIkV4cGVjdGVkOiAoRmFsc2VIUkVT
VUxUU3VjY2VzcygpKSBmYWlscy5cbiIKLSAgICAiICBBY3R1YWw6IDB4MDAwMDAwMDEiKTsKKyAg
ICAiICBBY3R1YWw6IDB4MSIpOwogfQogCiAvLyBUZXN0cyB0aGF0IHN0cmVhbWluZyB0byB0aGUg
SFJFU1VMVCBtYWNyb3Mgd29ya3MuCkBAIC0zODcxLDEyICs0MDM1LDEzIEBAIFRFU1QoSFJFU1VM
VEFzc2VydGlvblRlc3QsIFN0cmVhbWluZykgewogICAgICAgRVhQRUNUX0hSRVNVTFRfU1VDQ0VF
REVEKEVfVU5FWFBFQ1RFRCkgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAogICAgICAgImV4cGVjdGVk
IGZhaWx1cmUiKTsKIAotI2lmbmRlZiBfX0JPUkxBTkRDX18KKyMgaWZuZGVmIF9fQk9STEFORENf
XworCiAgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAwNyBhbmQgMjAwOS4KICAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoCiAgICAgICBBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoRV9VTkVYUEVDVEVE
KSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCiAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIpOwotI2Vu
ZGlmCisjIGVuZGlmCiAKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCiAgICAgICBFWFBFQ1Rf
SFJFU1VMVF9GQUlMRUQoU19PSykgPDwgImV4cGVjdGVkIGZhaWx1cmUiLApAQCAtMzg5MSw3ICs0
MDU2LDcgQEAgVEVTVChIUkVTVUxUQXNzZXJ0aW9uVGVzdCwgU3RyZWFtaW5nKSB7CiAKICNpZmRl
ZiBfX0JPUkxBTkRDX18KIC8vIFNpbGVuY2VzIHdhcm5pbmdzOiAiQ29uZGl0aW9uIGlzIGFsd2F5
cyB0cnVlIiwgIlVucmVhY2hhYmxlIGNvZGUiCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAt
dy1yY2gKKyMgcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gKICNlbmRpZgogCiAvLyBU
ZXN0cyB0aGF0IHRoZSBhc3NlcnRpb24gbWFjcm9zIGJlaGF2ZSBsaWtlIHNpbmdsZSBzdGF0ZW1l
bnRzLgpAQCAtNDAwOCw3ICs0MTczLDcgQEAgVEVTVChBc3NlcnRpb25TeW50YXhUZXN0LCBXb3Jr
c1dpdGhTd2l0Y2gpIHsKICNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwogCiB2b2lkIFRocm93QVN0
cmluZygpIHsKLSAgICB0aHJvdyAiU3RyaW5nIjsKKyAgICB0aHJvdyAic3RkOjpzdHJpbmciOwog
fQogCiAvLyBUZXN0IHRoYXQgdGhlIGV4Y2VwdGlvbiBhc3NlcnRpb24gbWFjcm9zIGNvbXBpbGUg
YW5kIHdvcmsgd2l0aCBjb25zdApAQCAtNDA2MCw4ICs0MjI1LDEwOSBAQCBURVNUKFN1Y2Nlc3Nm
dWxBc3NlcnRpb25UZXN0LCBBU1NFUlRfU1RSKSB7CiAKIG5hbWVzcGFjZSB7CiAKKy8vIFRlc3Rz
IHRoZSBtZXNzYWdlIHN0cmVhbWluZyB2YXJpYXRpb24gb2YgYXNzZXJ0aW9ucy4KKworVEVTVChB
c3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEVYUEVDVCkgeworICBFWFBFQ1RfRVEoMSwgMSkgPDwg
IlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNU
X05FKDEsIDEpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJFeHBlY3RlZCBmYWlsdXJlICMxIik7CisgIEVYUEVDVF9MRSgxLCAyKSA8PCAiVGhp
cyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfTFQo
MSwgMCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkV4cGVjdGVkIGZhaWx1cmUgIzIuIik7CisgIEVYUEVDVF9HRSgxLCAwKSA8PCAiVGhpcyBz
aG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR1QoMSwg
MikgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IkV4cGVjdGVkIGZhaWx1cmUgIzMuIik7CisKKyAgRVhQRUNUX1NUUkVRKCIxIiwgIjEiKSA8PCAi
VGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1Rf
U1RSTkUoIjEiLCAiMSIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM0LiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJlICM0LiIpOworICBFWFBFQ1RfU1RSQ0FTRUVR
KCJhIiwgIkEiKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShFWFBFQ1RfU1RSQ0FTRU5FKCJhIiwgIkEiKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAj
NS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZSAjNS4iKTsK
KworICBFWFBFQ1RfRkxPQVRfRVEoMSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RPVUJMRV9FUSgxLCAxLjIpIDw8ICJFeHBl
Y3RlZCBmYWlsdXJlICM2LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBm
YWlsdXJlICM2LiIpOworICBFWFBFQ1RfTkVBUigxLCAxLjEsIDAuMikgPDwgIlRoaXMgc2hvdWxk
IHN1Y2NlZWQuIjsKK30KKworVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVCkg
eworICBBU1NFUlRfRVEoMSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJU
X05FKDEsIDIpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9MRSgxLCAyKSA8
PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfTFQoMSwgMikgPDwgIlRoaXMgc2hv
dWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJUX0dFKDEsIDApIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVk
LiI7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9HVCgxLCAyKSA8PCAiRXhwZWN0ZWQg
ZmFpbHVyZS4iLAorICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZS4iKTsK
K30KKworVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVF9TVFIpIHsKKyAgQVNT
RVJUX1NUUkVRKCIxIiwgIjEiKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRf
U1RSTkUoIjEiLCAiMiIpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9TVFJD
QVNFRVEoImEiLCAiQSIpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFTU0VSVF9TVFJDQVNFTkUoImEiLCAiQSIpIDw8ICJFeHBlY3RlZCBmYWlsdXJl
LiIsCisgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJlLiIpOworfQorCitU
RVNUKEFzc2VydGlvbldpdGhNZXNzYWdlVGVzdCwgQVNTRVJUX0ZMT0FUSU5HKSB7CisgIEFTU0VS
VF9GTE9BVF9FUSgxLCAxKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfRE9V
QkxFX0VRKDEsIDEpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKEFTU0VSVF9ORUFSKDEsMS4yLCAwLjEpIDw8ICJFeHBlY3QgZmFpbHVyZS4iLCAgLy8g
Tk9MSU5UCisgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3QgZmFpbHVyZS4iKTsKKyAgLy8g
VG8gd29yayBhcm91bmQgYSBidWcgaW4gZ2NjIDIuOTUuMCwgdGhlcmUgaXMgaW50ZW50aW9uYWxs
eSBubworICAvLyBzcGFjZSBhZnRlciB0aGUgZmlyc3QgY29tbWEgaW4gdGhlIHByZXZpb3VzIHN0
YXRlbWVudC4KK30KKworLy8gVGVzdHMgdXNpbmcgQVNTRVJUX0ZBTFNFIHdpdGggYSBzdHJlYW1l
ZCBtZXNzYWdlLgorVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVF9GQUxTRSkg
eworICBBU1NFUlRfRkFMU0UoZmFsc2UpIDw8ICJUaGlzIHNob3VsZG4ndCBmYWlsLiI7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9GQUxTRSh0cnVlKSA8
PCAiRXhwZWN0ZWQgZmFpbHVyZTogIiA8PCAyIDw8ICIgPiAiIDw8IDEKKyAgICAgICAgICAgICAg
ICAgICAgICAgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB0cnVlOworICB9LCAiRXhwZWN0ZWQgZmFp
bHVyZSIpOworfQorCisvLyBUZXN0cyB1c2luZyBGQUlMIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdl
LgorVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEZBSUwpIHsKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoRkFJTCgpIDw8IDAsCisgICAgICAgICAgICAgICAgICAgICAgICIwIik7Cit9CisK
Ky8vIFRlc3RzIHVzaW5nIFNVQ0NFRUQgd2l0aCBhIHN0cmVhbWVkIG1lc3NhZ2UuCitURVNUKEFz
c2VydGlvbldpdGhNZXNzYWdlVGVzdCwgU1VDQ0VFRCkgeworICBTVUNDRUVEKCkgPDwgIlN1Y2Nl
c3MgPT0gIiA8PCAxOworfQorCisvLyBUZXN0cyB1c2luZyBBU1NFUlRfVFJVRSB3aXRoIGEgc3Ry
ZWFtZWQgbWVzc2FnZS4KK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBBU1NFUlRfVFJV
RSkgeworICBBU1NFUlRfVFJVRSh0cnVlKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBB
U1NFUlRfVFJVRSh0cnVlKSA8PCB0cnVlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBO
T0xJTlQKKyAgICBBU1NFUlRfVFJVRShmYWxzZSkgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAq
PihOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxjaGFyICo+KE5V
TEwpOworICB9LCAiKG51bGwpKG51bGwpIik7Cit9CisKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisv
LyBUZXN0cyB1c2luZyB3aWRlIHN0cmluZ3MgaW4gYXNzZXJ0aW9uIG1lc3NhZ2VzLgorVEVTVChB
c3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIFdpZGVTdHJpbmdNZXNzYWdlKSB7CisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9UUlVFKGZhbHNlKSA8PCBM
IlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC5ceDgxMTkiOworICB9LCAiVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkLiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBB
U1NFUlRfRVEoMSwgMikgPDwgIlRoaXMgZmFpbHVyZSBpcyAiCisgICAgICAgICAgICAgICAgICAg
IDw8IEwiZXhwZWN0ZWQgdG9vLlx4ODEyMCI7CisgIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0
ZWQgdG9vLiIpOworfQorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKIC8vIFRlc3RzIEVY
UEVDVF9UUlVFLgogVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfVFJVRSkgeworICBFWFBFQ1RfVFJV
RSh0cnVlKSA8PCAiSW50ZW50aW9uYWwgc3VjY2VzcyI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEVYUEVDVF9UUlVFKGZhbHNlKSA8PCAiSW50ZW50aW9uYWwgZmFpbHVyZSAjMS4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9uYWwgZmFpbHVyZSAjMS4iKTsKKyAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1RSVUUoZmFsc2UpIDw8ICJJbnRlbnRpb25hbCBm
YWlsdXJlICMyLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlbnRpb25hbCBmYWls
dXJlICMyLiIpOwogICBFWFBFQ1RfVFJVRSgyID4gMSk7ICAvLyBOT0xJTlQKICAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1RSVUUoMiA8IDEpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAiVmFsdWUgb2Y6IDIgPCAxXG4iCkBAIC00MDg1LDkgKzQzNTEsMTQgQEAgVEVTVChFeHBl
Y3RUZXN0LCBFeHBlY3RUcnVlV2l0aEFzc2VydGlvblJlc3VsdCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAiRXhwZWN0ZWQ6IHRydWUiKTsKIH0KIAotLy8gVGVzdHMgRVhQRUNUX0ZBTFNF
LgorLy8gVGVzdHMgRVhQRUNUX0ZBTFNFIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgogVEVTVChF
eHBlY3RUZXN0LCBFWFBFQ1RfRkFMU0UpIHsKICAgRVhQRUNUX0ZBTFNFKDIgPCAxKTsgIC8vIE5P
TElOVAorICBFWFBFQ1RfRkFMU0UoZmFsc2UpIDw8ICJJbnRlbnRpb25hbCBzdWNjZXNzIjsKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0ZBTFNFKHRydWUpIDw8ICJJbnRlbnRpb25h
bCBmYWlsdXJlICMxLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlbnRpb25hbCBm
YWlsdXJlICMxLiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRkFMU0UodHJ1
ZSkgPDwgIkludGVudGlvbmFsIGZhaWx1cmUgIzIuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkludGVudGlvbmFsIGZhaWx1cmUgIzIuIik7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEVYUEVDVF9GQUxTRSgyID4gMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBv
ZjogMiA+IDFcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiB0cnVlXG4i
CkBAIC00MTEyLDE2ICs0MzgzLDE2IEBAIFRFU1QoRXhwZWN0VGVzdCwgRXhwZWN0RmFsc2VXaXRo
QXNzZXJ0aW9uUmVzdWx0KSB7CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFJlc3RvcmVzIHdh
cm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXByZXNzZWQgdGhl
bQotI3ByYWdtYSBvcHRpb24gcG9wCisjIHByYWdtYSBvcHRpb24gcG9wCiAjZW5kaWYKIAogLy8g
VGVzdHMgRVhQRUNUX0VRLgogVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVEpIHsKICAgRVhQRUNU
X0VRKDUsIDIgKyAzKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDUsIDIq
MyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogMiozXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogNlxuIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAiRXhwZWN0ZWQ6IDUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgIEV4
cGVjdGVkOiA1XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICJUbyBiZSBlcXVhbCB0bzog
MiozXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICBXaGljaCBpczogNiIpOwog
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoNSwgMiAtIDMpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAiMiAtIDMiKTsKIH0KQEAgLTQxNDMsNyArNDQxNCw3IEBAIFRFU1Qo
RXhwZWN0VGVzdCwgRVhQRUNUX0VRX0RvdWJsZSkgewogVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1Rf
RVFfTlVMTCkgewogICAvLyBBIHN1Y2Nlc3MuCiAgIGNvbnN0IGNoYXIqIHAgPSBOVUxMOwotICAv
LyBTb21lIG9sZGVyIEdDQyB2ZXJzaW9ucyBtYXkgaXNzdWUgYSBzcHVyaW91cyB3YXJpbmcgaW4g
dGhpcyBvciB0aGUgbmV4dAorICAvLyBTb21lIG9sZGVyIEdDQyB2ZXJzaW9ucyBtYXkgaXNzdWUg
YSBzcHVyaW91cyB3YXJuaW5nIGluIHRoaXMgb3IgdGhlIG5leHQKICAgLy8gYXNzZXJ0aW9uIHN0
YXRlbWVudC4gVGhpcyB3YXJuaW5nIHNob3VsZCBub3QgYmUgc3VwcHJlc3NlZCB3aXRoCiAgIC8v
IHN0YXRpY19jYXN0IHNpbmNlIHRoZSB0ZXN0IHZlcmlmaWVzIHRoZSBhYmlsaXR5IHRvIHVzZSBi
YXJlIE5VTEwgYXMgdGhlCiAgIC8vIGV4cGVjdGVkIHBhcmFtZXRlciB0byB0aGUgbWFjcm8uCkBA
IC00MTUyLDcgKzQ0MjMsNyBAQCBURVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9FUV9OVUxMKSB7CiAg
IC8vIEEgZmFpbHVyZS4KICAgaW50IG4gPSAwOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShF
WFBFQ1RfRVEoTlVMTCwgJm4pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6
ICZuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiAmblxu
Iik7CiB9CiAjZW5kaWYgIC8vIEdURVNUX0NBTl9DT01QQVJFX05VTEwKIApAQCAtNDI2OCw3ICs0
NTM5LDcgQEAgVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfQU5ZX1RIUk9XKSB7CiBURVNUKEV4cGVj
dFRlc3QsIEV4cGVjdFByZWNlZGVuY2UpIHsKICAgRVhQRUNUX0VRKDEgPCAyLCB0cnVlKTsKICAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHRydWUsIHRydWUgJiYgZmFsc2UpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IHRydWUgJiYgZmFsc2UiKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiB0cnVlICYmIGZhbHNlIik7
CiB9CiAKIApAQCAtNDM2MSw3ICs0NjMyLDcgQEAgVEVTVChTdHJlYW1hYmxlVGVzdCwgQmFzaWNJ
b01hbmlwKSB7CiAKIHZvaWQgQWRkRmFpbHVyZUhlbHBlcihib29sKiBhYm9ydGVkKSB7CiAgICph
Ym9ydGVkID0gdHJ1ZTsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiRmFpbHVyZSI7CisgIEFERF9GQUlM
VVJFKCkgPDwgIkludGVudGlvbmFsIGZhaWx1cmUuIjsKICAgKmFib3J0ZWQgPSBmYWxzZTsKIH0K
IApAQCAtNDM2OSwxMCArNDY0MCwyNSBAQCB2b2lkIEFkZEZhaWx1cmVIZWxwZXIoYm9vbCogYWJv
cnRlZCkgewogVEVTVChNYWNyb1Rlc3QsIEFERF9GQUlMVVJFKSB7CiAgIGJvb2wgYWJvcnRlZCA9
IHRydWU7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmVIZWxwZXIoJmFib3J0
ZWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbHVyZSIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAiSW50ZW50aW9uYWwgZmFpbHVyZS4iKTsKICAgRVhQRUNUX0ZBTFNFKGFi
b3J0ZWQpOwogfQogCisvLyBUZXN0cyBBRERfRkFJTFVSRV9BVC4KK1RFU1QoTWFjcm9UZXN0LCBB
RERfRkFJTFVSRV9BVCkgeworICAvLyBWZXJpZmllcyB0aGF0IEFERF9GQUlMVVJFX0FUIGRvZXMg
Z2VuZXJhdGUgYSBub25mYXRhbCBmYWlsdXJlIGFuZAorICAvLyB0aGUgZmFpbHVyZSBtZXNzYWdl
IGNvbnRhaW5zIHRoZSB1c2VyLXN0cmVhbWVkIHBhcnQuCisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEFERF9GQUlMVVJFX0FUKCJmb28uY2MiLCA0MikgPDwgIldyb25nISIsICJXcm9uZyEiKTsK
KworICAvLyBWZXJpZmllcyB0aGF0IHRoZSB1c2VyLXN0cmVhbWVkIHBhcnQgaXMgb3B0aW9uYWwu
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFERF9GQUlMVVJFX0FUKCJmb28uY2MiLCA0Miks
ICJGYWlsZWQiKTsKKworICAvLyBVbmZvcnR1bmF0ZWx5LCB3ZSBjYW5ub3QgdmVyaWZ5IHRoYXQg
dGhlIGZhaWx1cmUgbWVzc2FnZSBjb250YWlucworICAvLyB0aGUgcmlnaHQgZmlsZSBwYXRoIGFu
ZCBsaW5lIG51bWJlciB0aGUgc2FtZSB3YXksIGFzCisgIC8vIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKCkgZG9lc24ndCBnZXQgdG8gc2VlIHRoZSBmaWxlIHBhdGggYW5kCisgIC8vIGxpbmUgbnVt
YmVyLiAgSW5zdGVhZCwgd2UgZG8gdGhhdCBpbiBndGVzdF9vdXRwdXRfdGVzdF8uY2MuCit9CisK
IC8vIFRlc3RzIEZBSUwuCiBURVNUKE1hY3JvVGVzdCwgRkFJTCkgewogICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShGQUlMKCksCkBAIC00Mzg3LDcgKzQ2NzMsNiBAQCBURVNUKE1hY3JvVGVzdCwgU1VD
Q0VFRCkgewogICBTVUNDRUVEKCkgPDwgIkV4cGxpY2l0IHN1Y2Nlc3MuIjsKIH0KIAotCiAvLyBU
ZXN0cyBmb3IgRVhQRUNUX0VRKCkgYW5kIEFTU0VSVF9FUSgpLgogLy8KIC8vIFRoZXNlIHRlc3Rz
IGZhaWwgKmludGVudGlvbmFsbHkqLCBzLnQuIHRoZSBmYWlsdXJlIG1lc3NhZ2VzIGNhbiBiZQpA
QCAtNDM5OCw4ICs0NjgzLDEwIEBAIFRFU1QoTWFjcm9UZXN0LCBTVUNDRUVEKSB7CiAvLyBUZXN0
cyB1c2luZyBib29sIHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCiBURVNUKEVxQXNzZXJ0
aW9uVGVzdCwgQm9vbCkgewogICBFWFBFQ1RfRVEodHJ1ZSwgIHRydWUpOwotICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShBU1NFUlRfRVEoZmFsc2UsIHRydWUpLAotICAgICAgICAgICAgICAgICAgICAg
ICAiVmFsdWUgb2Y6IHRydWUiKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeworICAgICAgYm9v
bCBmYWxzZV92YWx1ZSA9IGZhbHNlOworICAgICAgQVNTRVJUX0VRKGZhbHNlX3ZhbHVlLCB0cnVl
KTsKKyAgICB9LCAiVG8gYmUgZXF1YWwgdG86IHRydWUiKTsKIH0KIAogLy8gVGVzdHMgdXNpbmcg
aW50IHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCkBAIC00NDMzLDE4ICs0NzIwLDE4IEBA
IFRFU1QoRXFBc3NlcnRpb25UZXN0LCBXaWRlQ2hhcikgewogICBFWFBFQ1RfRVEoTCdiJywgTCdi
Jyk7CiAKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKEwnXDAnLCBMJ3gnKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBMJ3gnXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICIgIEFjdHVhbDogTCd4JyAoMTIwLCAweDc4KVxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IEwnXDAnXG4iCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICJXaGljaCBpczogTCdcMCcgKDAsIDB4MCkiKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICAgIEV4cGVjdGVkOiBMJ1wwJ1xuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICAgICAgV2hpY2ggaXM6IEwnXDAnICgwLCAweDApXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJUbyBiZSBlcXVhbCB0bzogTCd4J1xuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICAgICAgV2hpY2ggaXM6IEwneCcgKDEyMCwgMHg3OCkiKTsKIAogICBzdGF0aWMgd2NoYXJf
dCB3Y2hhcjsKICAgd2NoYXIgPSBMJ2InOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBF
Q1RfRVEoTCdhJywgd2NoYXIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAid2NoYXIiKTsK
LSAgd2NoYXIgPSBMJ1x4ODExOSc7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShM
J1x4ODEyMCcsIHdjaGFyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiB3Y2hh
ciIpOworICB3Y2hhciA9IDB4ODExOTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VR
KHN0YXRpY19jYXN0PHdjaGFyX3Q+KDB4ODEyMCksIHdjaGFyKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIlRvIGJlIGVxdWFsIHRvOiB3Y2hhciIpOwogfQogCiAvLyBUZXN0cyB1c2luZyA6OnN0
ZDo6c3RyaW5nIHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCkBAIC00NDYxLDcgKzQ3NDgs
NyBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgU3RkU3RyaW5nKSB7CiAgIC8vIENvbXBhcmVzIGEg
Y29uc3QgY2hhciogdG8gYW4gc3RkOjpzdHJpbmcgdGhhdCBoYXMgZGlmZmVyZW50CiAgIC8vIGNv
bnRlbnQKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKCJUZXN0IiwgOjpzdGQ6
OnN0cmluZygidGVzdCIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIjo6c3RkOjpzdHJp
bmcoXCJ0ZXN0XCIpIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICJcInRlc3RcIiIpOwog
CiAgIC8vIENvbXBhcmVzIGFuIHN0ZDo6c3RyaW5nIHRvIGEgY2hhciogdGhhdCBoYXMgZGlmZmVy
ZW50IGNvbnRlbnQuCiAgIGNoYXIqIGNvbnN0IHAxID0gY29uc3RfY2FzdDxjaGFyKj4oImZvbyIp
OwpAQCAtNDQ3MywyOCArNDc2MCwzMCBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgU3RkU3RyaW5n
KSB7CiAgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIHN0cjMoc3RyMSk7CiAgIHN0cjMuYXQoMikgPSAn
XDAnOwogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoc3RyMSwgc3RyMyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogc3RyM1xuIgotICAgICAgICAgICAgICAgICAg
ICAgICAiICBBY3R1YWw6IFwiQSBcXDAgaW4gdGhlIG1pZGRsZVwiIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICJUbyBiZSBlcXVhbCB0bzogc3RyM1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAiICAgICAgV2hpY2ggaXM6IFwiQSBcXDAgaW4gdGhlIG1pZGRsZVwiIik7CiB9CiAKICNpZiBH
VEVTVF9IQVNfU1REX1dTVFJJTkcKIAogLy8gVGVzdHMgdXNpbmcgOjpzdGQ6OndzdHJpbmcgdmFs
dWVzIGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4KIFRFU1QoRXFBc3NlcnRpb25UZXN0LCBTdGRXaWRl
U3RyaW5nKSB7Ci0gIC8vIENvbXBhcmVzIGFuIHN0ZDo6d3N0cmluZyB0byBhIGNvbnN0IHdjaGFy
X3QqIHRoYXQgaGFzIGlkZW50aWNhbAotICAvLyBjb250ZW50LgotICBFWFBFQ1RfRVEoOjpzdGQ6
OndzdHJpbmcoTCJUZXN0XHg4MTE5IiksIEwiVGVzdFx4ODExOSIpOwotCiAgIC8vIENvbXBhcmVz
IHR3byBpZGVudGljYWwgc3RkOjp3c3RyaW5ncy4KICAgY29uc3QgOjpzdGQ6OndzdHJpbmcgd3N0
cjEoTCJBICogaW4gdGhlIG1pZGRsZSIpOwogICBjb25zdCA6OnN0ZDo6d3N0cmluZyB3c3RyMih3
c3RyMSk7CiAgIEFTU0VSVF9FUSh3c3RyMSwgd3N0cjIpOwogCisgIC8vIENvbXBhcmVzIGFuIHN0
ZDo6d3N0cmluZyB0byBhIGNvbnN0IHdjaGFyX3QqIHRoYXQgaGFzIGlkZW50aWNhbAorICAvLyBj
b250ZW50LgorICBjb25zdCB3Y2hhcl90IGtUZXN0WDgxMTlbXSA9IHsgJ1QnLCAnZScsICdzJywg
J3QnLCAweDgxMTksICdcMCcgfTsKKyAgRVhQRUNUX0VRKDo6c3RkOjp3c3RyaW5nKGtUZXN0WDgx
MTkpLCBrVGVzdFg4MTE5KTsKKwogICAvLyBDb21wYXJlcyBhbiBzdGQ6OndzdHJpbmcgdG8gYSBj
b25zdCB3Y2hhcl90KiB0aGF0IGhhcyBkaWZmZXJlbnQKICAgLy8gY29udGVudC4KKyAgY29uc3Qg
d2NoYXJfdCBrVGVzdFg4MTIwW10gPSB7ICdUJywgJ2UnLCAncycsICd0JywgMHg4MTIwLCAnXDAn
IH07CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9F
USg6OnN0ZDo6d3N0cmluZyhMIlRlc3RceDgxMTkiKSwgTCJUZXN0XHg4MTIwIik7Ci0gIH0sICJM
XCJUZXN0XFx4ODEyMFwiIik7CisgICAgRVhQRUNUX0VRKDo6c3RkOjp3c3RyaW5nKGtUZXN0WDgx
MTkpLCBrVGVzdFg4MTIwKTsKKyAgfSwgImtUZXN0WDgxMjAiKTsKIAogICAvLyBDb21wYXJlcyB0
d28gc3RkOjp3c3RyaW5ncyB0aGF0IGhhdmUgZGlmZmVyZW50IGNvbnRlbnRzLCBvbmUgb2YKICAg
Ly8gd2hpY2ggaGF2aW5nIGEgTlVMIGNoYXJhY3RlciBpbiB0aGUgbWlkZGxlLgpAQCAtNDU0Niwx
OCArNDgzNSwyMCBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgR2xvYmFsU3RyaW5nKSB7CiAKIC8v
IFRlc3RzIHVzaW5nIDo6d3N0cmluZyB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgogVEVT
VChFcUFzc2VydGlvblRlc3QsIEdsb2JhbFdpZGVTdHJpbmcpIHsKLSAgLy8gQ29tcGFyZXMgYSBj
b25zdCB3Y2hhcl90KiB0byBhIDo6d3N0cmluZyB0aGF0IGhhcyBpZGVudGljYWwgY29udGVudC4K
LSAgQVNTRVJUX0VRKEwiVGVzdFx4ODExOSIsIDo6d3N0cmluZyhMIlRlc3RceDgxMTkiKSk7Ci0K
ICAgLy8gQ29tcGFyZXMgdHdvIGlkZW50aWNhbCA6OndzdHJpbmdzLgogICBzdGF0aWMgY29uc3Qg
Ojp3c3RyaW5nIHdzdHIxKEwiQSAqIGluIHRoZSBtaWRkbGUiKTsKICAgc3RhdGljIGNvbnN0IDo6
d3N0cmluZyB3c3RyMih3c3RyMSk7CiAgIEVYUEVDVF9FUSh3c3RyMSwgd3N0cjIpOwogCisgIC8v
IENvbXBhcmVzIGEgY29uc3Qgd2NoYXJfdCogdG8gYSA6OndzdHJpbmcgdGhhdCBoYXMgaWRlbnRp
Y2FsIGNvbnRlbnQuCisgIGNvbnN0IHdjaGFyX3Qga1Rlc3RYODExOVtdID0geyAnVCcsICdlJywg
J3MnLCAndCcsIDB4ODExOSwgJ1wwJyB9OworICBBU1NFUlRfRVEoa1Rlc3RYODExOSwgOjp3c3Ry
aW5nKGtUZXN0WDgxMTkpKTsKKwogICAvLyBDb21wYXJlcyBhIGNvbnN0IHdjaGFyX3QqIHRvIGEg
Ojp3c3RyaW5nIHRoYXQgaGFzIGRpZmZlcmVudAogICAvLyBjb250ZW50LgorICBjb25zdCB3Y2hh
cl90IGtUZXN0WDgxMjBbXSA9IHsgJ1QnLCAnZScsICdzJywgJ3QnLCAweDgxMjAsICdcMCcgfTsK
ICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX0VRKEwi
VGVzdFx4ODEyMCIsIDo6d3N0cmluZyhMIlRlc3RceDgxMTkiKSk7CisgICAgRVhQRUNUX0VRKGtU
ZXN0WDgxMjAsIDo6d3N0cmluZyhrVGVzdFg4MTE5KSk7CiAgIH0sICJUZXN0XFx4ODExOSIpOwog
CiAgIC8vIENvbXBhcmVzIGEgd2NoYXJfdCogdG8gYSA6OndzdHJpbmcgdGhhdCBoYXMgZGlmZmVy
ZW50IGNvbnRlbnQuCkBAIC00NTkwLDcgKzQ4ODEsNyBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwg
Q2hhclBvaW50ZXIpIHsKICAgQVNTRVJUX0VRKHAxLCBwMSk7CiAKICAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRVhQRUNUX0VRKHAwLCBwMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJW
YWx1ZSBvZjogcDIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRv
OiBwMiIpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEocDEsIHAyKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInAyIik7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFT
U0VSVF9FUShyZWludGVycHJldF9jYXN0PGNoYXIqPigweDEyMzQpLApAQCAtNDYxMiw3ICs0OTAz
LDcgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIFdpZGVDaGFyUG9pbnRlcikgewogICBFWFBFQ1Rf
RVEocDAsIHAwKTsKIAogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEocDAsIHAy
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBwMiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAiVG8gYmUgZXF1YWwgdG86IHAyIik7CiAgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9FUShwMSwgcDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAi
cDIiKTsKICAgdm9pZCogcHYzID0gKHZvaWQqKTB4MTIzNDsgIC8vIE5PTElOVApAQCAtNDYzMiw2
ICs0OTIzLDY4IEBAIFRFU1QoRXFBc3NlcnRpb25UZXN0LCBPdGhlclBvaW50ZXIpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIjB4MTIzNCIpOwogfQogCisvLyBBIGNsYXNzIHRoYXQgc3VwcG9y
dHMgYmluYXJ5IGNvbXBhcmlzb24gb3BlcmF0b3JzIGJ1dCBub3Qgc3RyZWFtaW5nLgorY2xhc3Mg
VW5wcmludGFibGVDaGFyIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFVucHJpbnRhYmxlQ2hhcihj
aGFyIGNoKSA6IGNoYXJfKGNoKSB7fQorCisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVbnByaW50
YWJsZUNoYXImIHJocykgY29uc3QgeworICAgIHJldHVybiBjaGFyXyA9PSByaHMuY2hhcl87Cisg
IH0KKyAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBjb25zdCB7
CisgICAgcmV0dXJuIGNoYXJfICE9IHJocy5jaGFyXzsKKyAgfQorICBib29sIG9wZXJhdG9yPChj
b25zdCBVbnByaW50YWJsZUNoYXImIHJocykgY29uc3QgeworICAgIHJldHVybiBjaGFyXyA8IHJo
cy5jaGFyXzsKKyAgfQorICBib29sIG9wZXJhdG9yPD0oY29uc3QgVW5wcmludGFibGVDaGFyJiBy
aHMpIGNvbnN0IHsKKyAgICByZXR1cm4gY2hhcl8gPD0gcmhzLmNoYXJfOworICB9CisgIGJvb2wg
b3BlcmF0b3I+KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBjb25zdCB7CisgICAgcmV0dXJu
IGNoYXJfID4gcmhzLmNoYXJfOworICB9CisgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBVbnByaW50
YWJsZUNoYXImIHJocykgY29uc3QgeworICAgIHJldHVybiBjaGFyXyA+PSByaHMuY2hhcl87Cisg
IH0KKworIHByaXZhdGU6CisgIGNoYXIgY2hhcl87Cit9OworCisvLyBUZXN0cyB0aGF0IEFTU0VS
VF9FUSgpIGFuZCBmcmllbmRzIGRvbid0IHJlcXVpcmUgdGhlIGFyZ3VtZW50cyB0bworLy8gYmUg
cHJpbnRhYmxlLgorVEVTVChDb21wYXJpc29uQXNzZXJ0aW9uVGVzdCwgQWNjZXB0c1VucHJpbnRh
YmxlQXJncykgeworICBjb25zdCBVbnByaW50YWJsZUNoYXIgeCgneCcpLCB5KCd5Jyk7CisgIEFT
U0VSVF9FUSh4LCB4KTsKKyAgRVhQRUNUX05FKHgsIHkpOworICBBU1NFUlRfTFQoeCwgeSk7Cisg
IEVYUEVDVF9MRSh4LCB5KTsKKyAgQVNTRVJUX0dUKHksIHgpOworICBFWFBFQ1RfR0UoeCwgeCk7
CisKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHgsIHkpLCAiMS1ieXRlIG9i
amVjdCA8Nzg+Iik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSh4LCB5KSwg
IjEtYnl0ZSBvYmplY3QgPDc5PiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1Rf
TFQoeSwgeSksICIxLWJ5dGUgb2JqZWN0IDw3OT4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoRVhQRUNUX0dUKHgsIHkpLCAiMS1ieXRlIG9iamVjdCA8Nzg+Iik7CisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9HVCh4LCB5KSwgIjEtYnl0ZSBvYmplY3QgPDc5PiIpOworCisg
IC8vIENvZGUgdGVzdGVkIGJ5IEVYUEVDVF9GQVRBTF9GQUlMVVJFIGNhbm5vdCByZWZlcmVuY2Ug
bG9jYWwKKyAgLy8gdmFyaWFibGVzLCBzbyB3ZSBoYXZlIHRvIHdyaXRlIFVucHJpbnRhYmxlQ2hh
cigneCcpIGluc3RlYWQgb2YgeC4KKyNpZm5kZWYgX19CT1JMQU5EQ19fCisgIC8vIElDRSdzIGlu
IEMrK0J1aWxkZXIuCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9ORShVbnByaW50YWJs
ZUNoYXIoJ3gnKSwgVW5wcmludGFibGVDaGFyKCd4JykpLAorICAgICAgICAgICAgICAgICAgICAg
ICAiMS1ieXRlIG9iamVjdCA8Nzg+Iik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9M
RShVbnByaW50YWJsZUNoYXIoJ3knKSwgVW5wcmludGFibGVDaGFyKCd4JykpLAorICAgICAgICAg
ICAgICAgICAgICAgICAiMS1ieXRlIG9iamVjdCA8Nzg+Iik7CisjZW5kaWYKKyAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoQVNTRVJUX0xFKFVucHJpbnRhYmxlQ2hhcigneScpLCBVbnByaW50YWJsZUNo
YXIoJ3gnKSksCisgICAgICAgICAgICAgICAgICAgICAgICIxLWJ5dGUgb2JqZWN0IDw3OT4iKTsK
KyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0dFKFVucHJpbnRhYmxlQ2hhcigneCcpLCBV
bnByaW50YWJsZUNoYXIoJ3knKSksCisgICAgICAgICAgICAgICAgICAgICAgICIxLWJ5dGUgb2Jq
ZWN0IDw3OD4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0dFKFVucHJpbnRhYmxl
Q2hhcigneCcpLCBVbnByaW50YWJsZUNoYXIoJ3knKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICIxLWJ5dGUgb2JqZWN0IDw3OT4iKTsKK30KKwogLy8gVGVzdHMgdGhlIEZSSUVORF9URVNUIG1h
Y3JvLgogCiAvLyBUaGlzIGNsYXNzIGhhcyBhIHByaXZhdGUgbWVtYmVyIHdlIHdhbnQgdG8gdGVz
dC4gIFdlIHdpbGwgdGVzdCBpdApAQCAtNDc0OSw3ICs1MTAyLDcgQEAgVEVTVChBc3NlcnRpb25S
ZXN1bHRUZXN0LCBDb25zdHJ1Y3Rpb25Xb3JrcykgewogICBFWFBFQ1RfU1RSRVEoImdoaSIsIHI1
Lm1lc3NhZ2UoKSk7CiB9CiAKLS8vIFRlc3RzIHRoYXQgdGhlIG5lZ2F0aW9uIGZpcHMgdGhlIHBy
ZWRpY2F0ZSByZXN1bHQgYnV0IGtlZXBzIHRoZSBtZXNzYWdlLgorLy8gVGVzdHMgdGhhdCB0aGUg
bmVnYXRpb24gZmxpcHMgdGhlIHByZWRpY2F0ZSByZXN1bHQgYnV0IGtlZXBzIHRoZSBtZXNzYWdl
LgogVEVTVChBc3NlcnRpb25SZXN1bHRUZXN0LCBOZWdhdGlvbldvcmtzKSB7CiAgIEFzc2VydGlv
blJlc3VsdCByMSA9IEFzc2VydGlvblN1Y2Nlc3MoKSA8PCAiYWJjIjsKICAgRVhQRUNUX0ZBTFNF
KCFyMSk7CkBAIC00NzY2LDYgKzUxMTksMzcgQEAgVEVTVChBc3NlcnRpb25SZXN1bHRUZXN0LCBT
dHJlYW1pbmdXb3JrcykgewogICBFWFBFQ1RfU1RSRVEoImFiY2QwdHJ1ZSIsIHIubWVzc2FnZSgp
KTsKIH0KIAorVEVTVChBc3NlcnRpb25SZXN1bHRUZXN0LCBDYW5TdHJlYW1Pc3RyZWFtTWFuaXB1
bGF0b3JzKSB7CisgIEFzc2VydGlvblJlc3VsdCByID0gQXNzZXJ0aW9uU3VjY2VzcygpOworICBy
IDw8ICJEYXRhIiA8PCBzdGQ6OmVuZGwgPDwgc3RkOjpmbHVzaCA8PCBzdGQ6OmVuZHMgPDwgIldp
bGwgYmUgdmlzaWJsZSI7CisgIEVYUEVDVF9TVFJFUSgiRGF0YVxuXFwwV2lsbCBiZSB2aXNpYmxl
Iiwgci5tZXNzYWdlKCkpOworfQorCisvLyBUaGUgbmV4dCB0ZXN0IHVzZXMgZXhwbGljaXQgY29u
dmVyc2lvbiBvcGVyYXRvcnMgLS0gYSBDKysxMSBmZWF0dXJlLgorI2lmIEdURVNUX0xBTkdfQ1hY
MTEKKworVEVTVChBc3NlcnRpb25SZXN1bHRUZXN0LCBDb25zdHJ1Y3RpYmxlRnJvbUNvbnRleHR1
YWxseUNvbnZlcnRpYmxlVG9Cb29sKSB7CisgIHN0cnVjdCBFeHBsaWNpdGx5Q29udmVydGlibGVU
b0Jvb2wgeworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiB2YWx1
ZTsgfQorICAgIGJvb2wgdmFsdWU7CisgIH07CisgIEV4cGxpY2l0bHlDb252ZXJ0aWJsZVRvQm9v
bCB2MSA9IHtmYWxzZX07CisgIEV4cGxpY2l0bHlDb252ZXJ0aWJsZVRvQm9vbCB2MiA9IHt0cnVl
fTsKKyAgRVhQRUNUX0ZBTFNFKHYxKTsKKyAgRVhQRUNUX1RSVUUodjIpOworfQorCisjZW5kaWYg
IC8vIEdURVNUX0xBTkdfQ1hYMTEKKworc3RydWN0IENvbnZlcnRpYmxlVG9Bc3NlcnRpb25SZXN1
bHQgeworICBvcGVyYXRvciBBc3NlcnRpb25SZXN1bHQoKSBjb25zdCB7IHJldHVybiBBc3NlcnRp
b25SZXN1bHQodHJ1ZSk7IH0KK307CisKK1RFU1QoQXNzZXJ0aW9uUmVzdWx0VGVzdCwgQ29uc3Ry
dWN0aWJsZUZyb21JbXBsaWNpdGx5Q29udmVydGlibGUpIHsKKyAgQ29udmVydGlibGVUb0Fzc2Vy
dGlvblJlc3VsdCBvYmo7CisgIEVYUEVDVF9UUlVFKG9iaik7Cit9CisKIC8vIFRlc3RzIHN0cmVh
bWluZyBhIHVzZXIgdHlwZSB3aG9zZSBkZWZpbml0aW9uIGFuZCBvcGVyYXRvciA8PCBhcmUKIC8v
IGJvdGggaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCiBjbGFzcyBCYXNlIHsKQEAgLTQ5NTAsNiAr
NTMzNCw1OSBAQCBURVNUX0YoVGVzdEluZm9UZXN0LCByZXN1bHQpIHsKICAgQVNTRVJUX0VRKDAs
IEdldFRlc3RSZXN1bHQodGVzdF9pbmZvKS0+dG90YWxfcGFydF9jb3VudCgpKTsKIH0KIAorI2Rl
ZmluZSBWRVJJRllfQ09ERV9MT0NBVElPTiBcCisgIGNvbnN0IGludCBleHBlY3RlZF9saW5lID0g
X19MSU5FX18gLSAxOyBcCisgIGNvbnN0IFRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPSBHZXRV
bml0VGVzdEltcGwoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsgXAorICBBU1NFUlRfVFJVRSh0ZXN0
X2luZm8pOyBcCisgIEVYUEVDVF9TVFJFUShfX0ZJTEVfXywgdGVzdF9pbmZvLT5maWxlKCkpOyBc
CisgIEVYUEVDVF9FUShleHBlY3RlZF9saW5lLCB0ZXN0X2luZm8tPmxpbmUoKSkKKworVEVTVChD
b2RlTG9jYXRpb25Gb3JURVNULCBWZXJpZnkpIHsKKyAgVkVSSUZZX0NPREVfTE9DQVRJT047Cit9
CisKK2NsYXNzIENvZGVMb2NhdGlvbkZvclRFU1RGIDogcHVibGljIFRlc3QgeworfTsKKworVEVT
VF9GKENvZGVMb2NhdGlvbkZvclRFU1RGLCBWZXJpZnkpIHsKKyAgVkVSSUZZX0NPREVfTE9DQVRJ
T047Cit9CisKK2NsYXNzIENvZGVMb2NhdGlvbkZvclRFU1RQIDogcHVibGljIFRlc3RXaXRoUGFy
YW08aW50PiB7Cit9OworCitURVNUX1AoQ29kZUxvY2F0aW9uRm9yVEVTVFAsIFZlcmlmeSkgewor
ICBWRVJJRllfQ09ERV9MT0NBVElPTjsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoLCBD
b2RlTG9jYXRpb25Gb3JURVNUUCwgVmFsdWVzKDApKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitjbGFzcyBDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1QgOiBwdWJsaWMgVGVzdCB7Cit9OworCitU
WVBFRF9URVNUX0NBU0UoQ29kZUxvY2F0aW9uRm9yVFlQRURURVNULCBpbnQpOworCitUWVBFRF9U
RVNUKENvZGVMb2NhdGlvbkZvclRZUEVEVEVTVCwgVmVyaWZ5KSB7CisgIFZFUklGWV9DT0RFX0xP
Q0FUSU9OOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIENvZGVMb2NhdGlvbkZv
clRZUEVEVEVTVFAgOiBwdWJsaWMgVGVzdCB7Cit9OworCitUWVBFRF9URVNUX0NBU0VfUChDb2Rl
TG9jYXRpb25Gb3JUWVBFRFRFU1RQKTsKKworVFlQRURfVEVTVF9QKENvZGVMb2NhdGlvbkZvclRZ
UEVEVEVTVFAsIFZlcmlmeSkgeworICBWRVJJRllfQ09ERV9MT0NBVElPTjsKK30KKworUkVHSVNU
RVJfVFlQRURfVEVTVF9DQVNFX1AoQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCwgVmVyaWZ5KTsK
KworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIENvZGVMb2NhdGlvbkZvclRZUEVE
VEVTVFAsIGludCk7CisKKyN1bmRlZiBWRVJJRllfQ09ERV9MT0NBVElPTgorCiAvLyBUZXN0cyBz
ZXR0aW5nIHVwIGFuZCB0ZWFyaW5nIGRvd24gYSB0ZXN0IGNhc2UuCiAKIGNsYXNzIFNldFVwVGVz
dENhc2VUZXN0IDogcHVibGljIFRlc3QgewpAQCAtNTAzMCw2ICs1NDY3LDcgQEAgc3RydWN0IEZs
YWdzIHsKICAgICAgICAgICAgIHJlcGVhdCgxKSwKICAgICAgICAgICAgIHNodWZmbGUoZmFsc2Up
LAogICAgICAgICAgICAgc3RhY2tfdHJhY2VfZGVwdGgoa01heFN0YWNrVHJhY2VEZXB0aCksCisg
ICAgICAgICAgICBzdHJlYW1fcmVzdWx0X3RvKCIiKSwKICAgICAgICAgICAgIHRocm93X29uX2Zh
aWx1cmUoZmFsc2UpIHt9CiAKICAgLy8gRmFjdG9yeSBtZXRob2RzLgpAQCAtNTEzMCw2ICs1NTY4
LDE0IEBAIHN0cnVjdCBGbGFncyB7CiAgICAgcmV0dXJuIGZsYWdzOwogICB9CiAKKyAgLy8gQ3Jl
YXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3Rv
KSBmbGFnIGhhcworICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCisgIHN0YXRpYyBGbGFncyBTdHJlYW1S
ZXN1bHRUbyhjb25zdCBjaGFyKiBzdHJlYW1fcmVzdWx0X3RvKSB7CisgICAgRmxhZ3MgZmxhZ3M7
CisgICAgZmxhZ3Muc3RyZWFtX3Jlc3VsdF90byA9IHN0cmVhbV9yZXN1bHRfdG87CisgICAgcmV0
dXJuIGZsYWdzOworICB9CisKICAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUg
Z3Rlc3RfdGhyb3dfb25fZmFpbHVyZSBmbGFnIGhhcwogICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCiAg
IHN0YXRpYyBGbGFncyBUaHJvd09uRmFpbHVyZShib29sIHRocm93X29uX2ZhaWx1cmUpIHsKQEAg
LTUxNTEsNiArNTU5Nyw3IEBAIHN0cnVjdCBGbGFncyB7CiAgIEludDMyIHJlcGVhdDsKICAgYm9v
bCBzaHVmZmxlOwogICBJbnQzMiBzdGFja190cmFjZV9kZXB0aDsKKyAgY29uc3QgY2hhciogc3Ry
ZWFtX3Jlc3VsdF90bzsKICAgYm9vbCB0aHJvd19vbl9mYWlsdXJlOwogfTsKIApAQCAtNTE3MSw2
ICs1NjE4LDcgQEAgY2xhc3MgSW5pdEdvb2dsZVRlc3RUZXN0IDogcHVibGljIFRlc3QgewogICAg
IEdURVNUX0ZMQUcocmVwZWF0KSA9IDE7CiAgICAgR1RFU1RfRkxBRyhzaHVmZmxlKSA9IGZhbHNl
OwogICAgIEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpID0ga01heFN0YWNrVHJhY2VEZXB0
aDsKKyAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pID0gIiI7CiAgICAgR1RFU1RfRkxB
Ryh0aHJvd19vbl9mYWlsdXJlKSA9IGZhbHNlOwogICB9CiAKQEAgLTUxOTksOCArNTY0NywxMCBA
QCBjbGFzcyBJbml0R29vZ2xlVGVzdFRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgRVhQRUNUX0VR
KGV4cGVjdGVkLnJhbmRvbV9zZWVkLCBHVEVTVF9GTEFHKHJhbmRvbV9zZWVkKSk7CiAgICAgRVhQ
RUNUX0VRKGV4cGVjdGVkLnJlcGVhdCwgR1RFU1RfRkxBRyhyZXBlYXQpKTsKICAgICBFWFBFQ1Rf
RVEoZXhwZWN0ZWQuc2h1ZmZsZSwgR1RFU1RfRkxBRyhzaHVmZmxlKSk7Ci0gICAgRVhQRUNUX0VR
KGV4cGVjdGVkLnRocm93X29uX2ZhaWx1cmUsIEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkp
OwogICAgIEVYUEVDVF9FUShleHBlY3RlZC5zdGFja190cmFjZV9kZXB0aCwgR1RFU1RfRkxBRyhz
dGFja190cmFjZV9kZXB0aCkpOworICAgIEVYUEVDVF9TVFJFUShleHBlY3RlZC5zdHJlYW1fcmVz
dWx0X3RvLAorICAgICAgICAgICAgICAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pLmNf
c3RyKCkpOworICAgIEVYUEVDVF9FUShleHBlY3RlZC50aHJvd19vbl9mYWlsdXJlLCBHVEVTVF9G
TEFHKHRocm93X29uX2ZhaWx1cmUpKTsKICAgfQogCiAgIC8vIFBhcnNlcyBhIGNvbW1hbmQgbGlu
ZSAoc3BlY2lmaWVkIGJ5IGFyZ2MxIGFuZCBhcmd2MSksIHRoZW4KQEAgLTUyMTMsMTYgKzU2NjMs
MTYgQEAgY2xhc3MgSW5pdEdvb2dsZVRlc3RUZXN0IDogcHVibGljIFRlc3QgewogICAgIGNvbnN0
IGJvb2wgc2F2ZWRfaGVscF9mbGFnID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6Z19oZWxwX2ZsYWc7
CiAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Z19oZWxwX2ZsYWcgPSBmYWxzZTsKIAotI2lmIEdU
RVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCisjaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVD
VElPTgogICAgIENhcHR1cmVTdGRvdXQoKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9S
RURJUkVDVElPTl8KKyNlbmRpZgogCiAgICAgLy8gUGFyc2VzIHRoZSBjb21tYW5kIGxpbmUuCiAg
ICAgaW50ZXJuYWw6OlBhcnNlR29vZ2xlVGVzdEZsYWdzT25seSgmYXJnYzEsIGNvbnN0X2Nhc3Q8
Q2hhclR5cGUqKj4oYXJndjEpKTsKIAotI2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05f
Ci0gICAgY29uc3QgU3RyaW5nIGNhcHR1cmVkX3N0ZG91dCA9IEdldENhcHR1cmVkU3Rkb3V0KCk7
Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCisjaWYgR1RFU1RfSEFT
X1NUUkVBTV9SRURJUkVDVElPTgorICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNhcHR1cmVkX3N0ZG91
dCA9IEdldENhcHR1cmVkU3Rkb3V0KCk7CisjZW5kaWYKIAogICAgIC8vIFZlcmlmaWVzIHRoZSBm
bGFnIHZhbHVlcy4KICAgICBDaGVja0ZsYWdzKGV4cGVjdGVkKTsKQEAgLTUyMzUsNyArNTY4NSw3
IEBAIGNsYXNzIEluaXRHb29nbGVUZXN0VGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICAvLyBoZWxw
IG1lc3NhZ2UgZm9yIHRoZSBmbGFncyBpdCByZWNvZ25pemVzLgogICAgIEVYUEVDVF9FUShzaG91
bGRfcHJpbnRfaGVscCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Z19oZWxwX2ZsYWcpOwogCi0jaWYg
R1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElS
RUNUSU9OCiAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRfaGVscF9mcmFnbWVudCA9CiAg
ICAgICAgICJUaGlzIHByb2dyYW0gY29udGFpbnMgdGVzdHMgd3JpdHRlbiB1c2luZyI7CiAgICAg
aWYgKHNob3VsZF9wcmludF9oZWxwKSB7CkBAIC01MjQ0LDEzICs1Njk0LDE0IEBAIGNsYXNzIElu
aXRHb29nbGVUZXN0VGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICAgIEVYUEVDVF9QUkVEX0ZPUk1B
VDIoSXNOb3RTdWJzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2hl
bHBfZnJhZ21lbnQsIGNhcHR1cmVkX3N0ZG91dCk7CiAgICAgfQotI2VuZGlmICAvLyBHVEVTVF9I
QVNfU1RSRUFNX1JFRElSRUNUSU9OXworI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElS
RUNUSU9OCiAKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpnX2hlbHBfZmxhZyA9IHNhdmVkX2hl
bHBfZmxhZzsKICAgfQogCiAgIC8vIFRoaXMgbWFjcm8gd3JhcHMgVGVzdFBhcnNpbmdGbGFncyBz
LnQuIHRoZSB1c2VyIGRvZXNuJ3QgbmVlZAogICAvLyB0byBzcGVjaWZ5IHRoZSBhcnJheSBzaXpl
cy4KKwogI2RlZmluZSBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YxLCBhcmd2MiwgZXhw
ZWN0ZWQsIHNob3VsZF9wcmludF9oZWxwKSBcCiAgIFRlc3RQYXJzaW5nRmxhZ3Moc2l6ZW9mKGFy
Z3YxKS9zaXplb2YoKmFyZ3YxKSAtIDEsIGFyZ3YxLCBcCiAgICAgICAgICAgICAgICAgICAgc2l6
ZW9mKGFyZ3YyKS9zaXplb2YoKmFyZ3YyKSAtIDEsIGFyZ3YyLCBcCkBAIC01ODYxLDYgKzYzMTIs
MjIgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU3RhY2tUcmFjZURlcHRoKSB7CiAgIEdU
RVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpTdGFja1RyYWNlRGVw
dGgoNSksIGZhbHNlKTsKIH0KIAorVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU3RyZWFtUmVz
dWx0VG8pIHsKKyAgY29uc3QgY2hhciogYXJndltdID0geworICAgICJmb28uZXhlIiwKKyAgICAi
LS1ndGVzdF9zdHJlYW1fcmVzdWx0X3RvPWxvY2FsaG9zdDoxMjM0IiwKKyAgICBOVUxMCisgIH07
CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAor
ICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oCisgICAgICBhcmd2LCBhcmd2Miwg
RmxhZ3M6OlN0cmVhbVJlc3VsdFRvKCJsb2NhbGhvc3Q6MTIzNCIpLCBmYWxzZSk7Cit9CisKIC8v
IFRlc3RzIHBhcnNpbmcgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlLgogVEVTVF9GKEluaXRHb29n
bGVUZXN0VGVzdCwgVGhyb3dPbkZhaWx1cmVXaXRob3V0VmFsdWUpIHsKICAgY29uc3QgY2hhciog
YXJndltdID0gewpAQCAtNTkzNSw3ICs2NDAyLDEwOCBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RU
ZXN0LCBXaWRlU3RyaW5ncykgewogCiAgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwg
YXJndjIsIGV4cGVjdGVkX2ZsYWdzLCBmYWxzZSk7CiB9Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworI2lmIEdURVNUX1VTRV9PV05f
RkxBR0ZJTEVfRkxBR18KK2NsYXNzIEZsYWdmaWxlVGVzdCA6IHB1YmxpYyBJbml0R29vZ2xlVGVz
dFRlc3QgeworIHB1YmxpYzoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIEluaXRHb29n
bGVUZXN0VGVzdDo6U2V0VXAoKTsKKworICAgIHRlc3RkYXRhX3BhdGhfLlNldChpbnRlcm5hbDo6
RmlsZVBhdGgoCisgICAgICAgIGludGVybmFsOjpUZW1wRGlyKCkgKyBpbnRlcm5hbDo6R2V0Q3Vy
cmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKworICAgICAgICAiX2ZsYWdmaWxlX3Rlc3Qi
KSk7CisgICAgdGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5j
X3N0cigpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVGb2xkZXIoKSk7
CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgdGVzdGluZzo6aW50ZXJu
YWw6OnBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKKyAgICBJbml0R29vZ2xl
VGVzdFRlc3Q6OlRlYXJEb3duKCk7CisgIH0KKworICBpbnRlcm5hbDo6RmlsZVBhdGggQ3JlYXRl
RmxhZ2ZpbGUoY29uc3QgY2hhciogY29udGVudHMpIHsKKyAgICBpbnRlcm5hbDo6RmlsZVBhdGgg
ZmlsZV9wYXRoKGludGVybmFsOjpGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFtZSgKKyAg
ICAgICAgdGVzdGRhdGFfcGF0aF8sIGludGVybmFsOjpGaWxlUGF0aCgidW5pcXVlIiksICJ0eHQi
KSk7CisgICAgRklMRSogZiA9IHRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6Rk9wZW4oZmlsZV9w
YXRoLmNfc3RyKCksICJ3Iik7CisgICAgZnByaW50ZihmLCAiJXMiLCBjb250ZW50cyk7CisgICAg
ZmNsb3NlKGYpOworICAgIHJldHVybiBmaWxlX3BhdGg7CisgIH0KKworIHByaXZhdGU6CisgIGlu
dGVybmFsOjpGaWxlUGF0aCB0ZXN0ZGF0YV9wYXRoXzsKK307CisKKy8vIFRlc3RzIGFuIGVtcHR5
IGZsYWdmaWxlLgorVEVTVF9GKEZsYWdmaWxlVGVzdCwgRW1wdHkpIHsKKyAgaW50ZXJuYWw6OkZp
bGVQYXRoIGZsYWdmaWxlX3BhdGgoQ3JlYXRlRmxhZ2ZpbGUoIiIpKTsKKyAgc3RkOjpzdHJpbmcg
ZmxhZ2ZpbGVfZmxhZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0iIEdURVNUX0ZMQUdfUFJFRklY
XyAiZmxhZ2ZpbGU9IikgKyBmbGFnZmlsZV9wYXRoLmNfc3RyKCk7CisKKyAgY29uc3QgY2hhciog
YXJndltdID0geworICAgICJmb28uZXhlIiwKKyAgICBmbGFnZmlsZV9mbGFnLmNfc3RyKCksCisg
ICAgTlVMTAorICB9OworCisgIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7CisgICAgImZvby5leGUi
LAorICAgIE5VTEwKKyAgfTsKKworICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFy
Z3YyLCBGbGFncygpLCBmYWxzZSk7Cit9CisKKy8vIFRlc3RzIHBhc3NpbmcgYSBub24tZW1wdHkg
LS1ndGVzdF9maWx0ZXIgZmxhZyB2aWEgLS1ndGVzdF9mbGFnZmlsZS4KK1RFU1RfRihGbGFnZmls
ZVRlc3QsIEZpbHRlck5vbkVtcHR5KSB7CisgIGludGVybmFsOjpGaWxlUGF0aCBmbGFnZmlsZV9w
YXRoKENyZWF0ZUZsYWdmaWxlKAorICAgICAgIi0tIiAgR1RFU1RfRkxBR19QUkVGSVhfICAiZmls
dGVyPWFiYyIpKTsKKyAgc3RkOjpzdHJpbmcgZmxhZ2ZpbGVfZmxhZyA9CisgICAgICBzdGQ6OnN0
cmluZygiLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiZmxhZ2ZpbGU9IikgKyBmbGFnZmlsZV9wYXRo
LmNfc3RyKCk7CisKKyAgY29uc3QgY2hhciogYXJndltdID0geworICAgICJmb28uZXhlIiwKKyAg
ICBmbGFnZmlsZV9mbGFnLmNfc3RyKCksCisgICAgTlVMTAorICB9OworCisgIGNvbnN0IGNoYXIq
IGFyZ3YyW10gPSB7CisgICAgImZvby5leGUiLAorICAgIE5VTEwKKyAgfTsKKworICBHVEVTVF9U
RVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6RmlsdGVyKCJhYmMiKSwgZmFs
c2UpOworfQorCisvLyBUZXN0cyBwYXNzaW5nIHNldmVyYWwgZmxhZ3MgdmlhIC0tZ3Rlc3RfZmxh
Z2ZpbGUuCitURVNUX0YoRmxhZ2ZpbGVUZXN0LCBTZXZlcmFsRmxhZ3MpIHsKKyAgaW50ZXJuYWw6
OkZpbGVQYXRoIGZsYWdmaWxlX3BhdGgoQ3JlYXRlRmxhZ2ZpbGUoCisgICAgICAiLS0iICBHVEVT
VF9GTEFHX1BSRUZJWF8gICJmaWx0ZXI9YWJjXG4iCisgICAgICAiLS0iICBHVEVTVF9GTEFHX1BS
RUZJWF8gICJicmVha19vbl9mYWlsdXJlXG4iCisgICAgICAiLS0iICBHVEVTVF9GTEFHX1BSRUZJ
WF8gICJsaXN0X3Rlc3RzIikpOworICBzdGQ6OnN0cmluZyBmbGFnZmlsZV9mbGFnID0KKyAgICAg
IHN0ZDo6c3RyaW5nKCItLSIgR1RFU1RfRkxBR19QUkVGSVhfICJmbGFnZmlsZT0iKSArIGZsYWdm
aWxlX3BhdGguY19zdHIoKTsKKworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgImZvby5l
eGUiLAorICAgIGZsYWdmaWxlX2ZsYWcuY19zdHIoKSwKKyAgICBOVUxMCisgIH07CisKKyAgY29u
c3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAorICB9OworCisg
IEZsYWdzIGV4cGVjdGVkX2ZsYWdzOworICBleHBlY3RlZF9mbGFncy5icmVha19vbl9mYWlsdXJl
ID0gdHJ1ZTsKKyAgZXhwZWN0ZWRfZmxhZ3MuZmlsdGVyID0gImFiYyI7CisgIGV4cGVjdGVkX2Zs
YWdzLmxpc3RfdGVzdHMgPSB0cnVlOworCisgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJn
diwgYXJndjIsIGV4cGVjdGVkX2ZsYWdzLCBmYWxzZSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX1VT
RV9PV05fRkxBR0ZJTEVfRkxBR18KIAogLy8gVGVzdHMgY3VycmVudF90ZXN0X2luZm8oKSBpbiBV
bml0VGVzdC4KIGNsYXNzIEN1cnJlbnRUZXN0SW5mb1Rlc3QgOiBwdWJsaWMgVGVzdCB7CkBAIC02
MDQ4LDcgKzY2MTYsNyBAQCBURVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBVbmNvbmRpdGlv
bmFsKSB7CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFNpbGVuY2VzIHdhcm5pbmdzOiAiQ29u
ZGl0aW9uIGlzIGFsd2F5cyB0cnVlIiwgIlVucmVhY2hhYmxlIGNvZGUiCi0jcHJhZ21hIG9wdGlv
biBwdXNoIC13LWNjYyAtdy1yY2gKKyMgcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gK
ICNlbmRpZgogCiBURVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBUcnV0aCkgewpAQCAtNjA3
MSw3ICs2NjM5LDcgQEAgVEVTVChTdHJlYW1pbmdBc3NlcnRpb25zVGVzdCwgVHJ1dGgyKSB7CiAK
ICNpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3Vz
ICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXByZXNzZWQgdGhlbQotI3ByYWdtYSBvcHRpb24gcG9w
CisjIHByYWdtYSBvcHRpb24gcG9wCiAjZW5kaWYKIAogVEVTVChTdHJlYW1pbmdBc3NlcnRpb25z
VGVzdCwgSW50ZWdlckVxdWFscykgewpAQCAtNjI2NCwxNSArNjgzMiw0MCBAQCBURVNUKENvbG9y
ZWRPdXRwdXRUZXN0LCBVc2VzQ29sb3JzV2hlblRlcm1TdXBwb3J0c0NvbG9ycykgewogICBTZXRF
bnYoIlRFUk0iLCAieHRlcm0tY29sb3IiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgogICBF
WFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCiAK
KyAgU2V0RW52KCJURVJNIiwgInh0ZXJtLTI1NmNvbG9yIik7ICAvLyBURVJNIHN1cHBvcnRzIGNv
bG9ycy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlz
IGEgVFRZLgorCisgIFNldEVudigiVEVSTSIsICJzY3JlZW4iKTsgIC8vIFRFUk0gc3VwcG9ydHMg
Y29sb3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQg
aXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInNjcmVlbi0yNTZjb2xvciIpOyAgLy8gVEVS
TSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsg
IC8vIFN0ZG91dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAidG11eCIpOyAgLy8gVEVS
TSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsg
IC8vIFN0ZG91dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAidG11eC0yNTZjb2xvciIp
OyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9y
KHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAicnh2dC11
bmljb2RlIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxk
VXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgorCisgIFNldEVudigiVEVSTSIs
ICJyeHZ0LXVuaWNvZGUtMjU2Y29sb3IiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBF
WFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisK
ICAgU2V0RW52KCJURVJNIiwgImxpbnV4Iik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KICAg
RVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgor
CisgIFNldEVudigiVEVSTSIsICJjeWd3aW4iKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgor
ICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFku
CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIH0KIAogLy8gVmVyaWZpZXMgdGhhdCBTdGF0
aWNBc3NlcnRUeXBlRXEgd29ya3MgaW4gYSBuYW1lc3BhY2Ugc2NvcGUuCiAKLXN0YXRpYyBib29s
IGR1bW15MSA9IFN0YXRpY0Fzc2VydFR5cGVFcTxib29sLCBib29sPigpOwotc3RhdGljIGJvb2wg
ZHVtbXkyID0gU3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGludCwgY29uc3QgaW50PigpOworc3Rh
dGljIGJvb2wgZHVtbXkxIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gU3RhdGljQXNzZXJ0VHlw
ZUVxPGJvb2wsIGJvb2w+KCk7CitzdGF0aWMgYm9vbCBkdW1teTIgR1RFU1RfQVRUUklCVVRFX1VO
VVNFRF8gPQorICAgIFN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCBpbnQsIGNvbnN0IGludD4oKTsK
IAogLy8gVmVyaWZpZXMgdGhhdCBTdGF0aWNBc3NlcnRUeXBlRXEgd29ya3MgaW4gYSBjbGFzcy4K
IApAQCAtNjQ2Niw3ICs3MDU5LDcgQEAgVEVTVChUZXN0RXZlbnRMaXN0ZW5lcnNUZXN0LCBBcHBl
bmQpIHsKIC8vIG9yZGVyLgogY2xhc3MgU2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIgOiBwdWJsaWMg
RW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CiAgcHVibGljOgotICBTZXF1ZW5jZVRlc3RpbmdMaXN0
ZW5lcihzdGQ6OnZlY3RvcjxTdHJpbmc+KiB2ZWN0b3IsIGNvbnN0IGNoYXIqIGlkKQorICBTZXF1
ZW5jZVRlc3RpbmdMaXN0ZW5lcihzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIHZlY3RvciwgY29u
c3QgY2hhciogaWQpCiAgICAgICA6IHZlY3Rvcl8odmVjdG9yKSwgaWRfKGlkKSB7fQogCiAgcHJv
dGVjdGVkOgpAQCAtNjQ4OSwyMCArNzA4MiwyMCBAQCBjbGFzcyBTZXF1ZW5jZVRlc3RpbmdMaXN0
ZW5lciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKICAgfQogCiAgcHJpdmF0ZToK
LSAgU3RyaW5nIEdldEV2ZW50RGVzY3JpcHRpb24oY29uc3QgY2hhciogbWV0aG9kKSB7CisgIHN0
ZDo6c3RyaW5nIEdldEV2ZW50RGVzY3JpcHRpb24oY29uc3QgY2hhciogbWV0aG9kKSB7CiAgICAg
TWVzc2FnZSBtZXNzYWdlOwogICAgIG1lc3NhZ2UgPDwgaWRfIDw8ICIuIiA8PCBtZXRob2Q7CiAg
ICAgcmV0dXJuIG1lc3NhZ2UuR2V0U3RyaW5nKCk7CiAgIH0KIAotICBzdGQ6OnZlY3RvcjxTdHJp
bmc+KiB2ZWN0b3JfOworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIHZlY3Rvcl87CiAgIGNv
bnN0IGNoYXIqIGNvbnN0IGlkXzsKIAogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05f
KFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyKTsKIH07CiAKIFRFU1QoRXZlbnRMaXN0ZW5lclRlc3Qs
IEFwcGVuZEtlZXBzT3JkZXIpIHsKLSAgc3RkOjp2ZWN0b3I8U3RyaW5nPiB2ZWM7CisgIHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiB2ZWM7CiAgIFRlc3RFdmVudExpc3RlbmVycyBsaXN0ZW5lcnM7
CiAgIGxpc3RlbmVycy5BcHBlbmQobmV3IFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyKCZ2ZWMsICIx
c3QiKSk7CiAgIGxpc3RlbmVycy5BcHBlbmQobmV3IFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyKCZ2
ZWMsICIybmQiKSk7CkBAIC02NzE1LDQgKzczMDgsMzk5IEBAIEdURVNUX1RFU1QoQWx0ZXJuYXRp
dmVOYW1lVGVzdCwgV29ya3MpIHsgIC8vIEdURVNUX1RFU1QgaXMgdGhlIHNhbWUgYXMgVEVTVC4K
ICAgLy8gR1RFU1RfRkFJTCBpcyB0aGUgc2FtZSBhcyBGQUlMLgogICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShHVEVTVF9GQUlMKCkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAogICAgICAgICAgICAg
ICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworCisgIC8vIEdURVNUX0FTU0VSVF9Y
WSBpcyB0aGUgc2FtZSBhcyBBU1NFUlRfWFkuCisKKyAgR1RFU1RfQVNTRVJUX0VRKDAsIDApOwor
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfRVEoMCwgMSkgPDwgIkFuIGV4cGVj
dGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVy
ZSIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfRVEoMSwgMCkgPDwgIkFu
IGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQg
ZmFpbHVyZSIpOworCisgIEdURVNUX0FTU0VSVF9ORSgwLCAxKTsKKyAgR1RFU1RfQVNTRVJUX05F
KDEsIDApOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfTkUoMCwgMCkgPDwg
IkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0
ZWQgZmFpbHVyZSIpOworCisgIEdURVNUX0FTU0VSVF9MRSgwLCAwKTsKKyAgR1RFU1RfQVNTRVJU
X0xFKDAsIDEpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfTEUoMSwgMCkg
PDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhw
ZWN0ZWQgZmFpbHVyZSIpOworCisgIEdURVNUX0FTU0VSVF9MVCgwLCAxKTsKKyAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0xUKDAsIDApIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKyAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0xUKDEsIDApIDw8ICJBbiBleHBlY3RlZCBm
YWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsK
KworICBHVEVTVF9BU1NFUlRfR0UoMCwgMCk7CisgIEdURVNUX0FTU0VSVF9HRSgxLCAwKTsKKyAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0dFKDAsIDEpIDw8ICJBbiBleHBlY3Rl
ZCBmYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUi
KTsKKworICBHVEVTVF9BU1NFUlRfR1QoMSwgMCk7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdU
RVNUX0FTU0VSVF9HVCgwLCAxKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEdURVNUX0FTU0VSVF9HVCgxLCAxKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7Cit9CisKKy8vIFRlc3Rz
IGZvciBpbnRlcm5hbCB1dGlsaXRpZXMgbmVjZXNzYXJ5IGZvciBpbXBsZW1lbnRhdGlvbiBvZiB0
aGUgdW5pdmVyc2FsCisvLyBwcmludGluZy4KKy8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEZp
bmQgYSBiZXR0ZXIgaG9tZSBmb3IgdGhlbS4KKworY2xhc3MgQ29udmVyc2lvbkhlbHBlckJhc2Ug
e307CitjbGFzcyBDb252ZXJzaW9uSGVscGVyRGVyaXZlZCA6IHB1YmxpYyBDb252ZXJzaW9uSGVs
cGVyQmFzZSB7fTsKKworLy8gVGVzdHMgdGhhdCBJc0FQcm90b2NvbE1lc3NhZ2U8VD46OnZhbHVl
IGlzIGEgY29tcGlsZS10aW1lIGNvbnN0YW50LgorVEVTVChJc0FQcm90b2NvbE1lc3NhZ2VUZXN0
LCBWYWx1ZUlzQ29tcGlsZVRpbWVDb25zdGFudCkgeworICBHVEVTVF9DT01QSUxFX0FTU0VSVF8o
SXNBUHJvdG9jb2xNZXNzYWdlPFByb3RvY29sTWVzc2FnZT46OnZhbHVlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3RfdHJ1ZSk7CisgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyghSXNBUHJv
dG9jb2xNZXNzYWdlPGludD46OnZhbHVlLCBjb25zdF9mYWxzZSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgSXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZSBpcyB0cnVlIHdoZW4gVCBpcworLy8gcHJv
dG8yOjpNZXNzYWdlIG9yIGEgc3ViLWNsYXNzIG9mIGl0LgorVEVTVChJc0FQcm90b2NvbE1lc3Nh
Z2VUZXN0LCBWYWx1ZUlzVHJ1ZVdoZW5UeXBlSXNBUHJvdG9jb2xNZXNzYWdlKSB7CisgIEVYUEVD
VF9UUlVFKElzQVByb3RvY29sTWVzc2FnZTwgOjpwcm90bzI6Ok1lc3NhZ2U+Ojp2YWx1ZSk7Cisg
IEVYUEVDVF9UUlVFKElzQVByb3RvY29sTWVzc2FnZTxQcm90b2NvbE1lc3NhZ2U+Ojp2YWx1ZSk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgSXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZSBpcyBmYWxz
ZSB3aGVuIFQgaXMgbmVpdGhlcgorLy8gUHJvdG9jb2xNZXNzYWdlIG5vciBhIHN1Yi1jbGFzcyBv
ZiBpdC4KK1RFU1QoSXNBUHJvdG9jb2xNZXNzYWdlVGVzdCwgVmFsdWVJc0ZhbHNlV2hlblR5cGVJ
c05vdEFQcm90b2NvbE1lc3NhZ2UpIHsKKyAgRVhQRUNUX0ZBTFNFKElzQVByb3RvY29sTWVzc2Fn
ZTxpbnQ+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShJc0FQcm90b2NvbE1lc3NhZ2U8Y29uc3Qg
Q29udmVyc2lvbkhlbHBlckJhc2U+Ojp2YWx1ZSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQ29tcGls
ZUFzc2VydFR5cGVzRXF1YWwgY29tcGlsZXMgd2hlbiB0aGUgdHlwZSBhcmd1bWVudHMgYXJlCisv
LyBlcXVhbC4KK1RFU1QoQ29tcGlsZUFzc2VydFR5cGVzRXF1YWwsIENvbXBpbGVzV2hlblR5cGVz
QXJlRXF1YWwpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8dm9pZCwgdm9pZD4oKTsKKyAg
Q29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50KiwgaW50Kj4oKTsKK30KKworLy8gVGVzdHMgdGhh
dCBSZW1vdmVSZWZlcmVuY2UgZG9lcyBub3QgYWZmZWN0IG5vbi1yZWZlcmVuY2UgdHlwZXMuCitU
RVNUKFJlbW92ZVJlZmVyZW5jZVRlc3QsIERvZXNOb3RBZmZlY3ROb25SZWZlcmVuY2VUeXBlKSB7
CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCwgUmVtb3ZlUmVmZXJlbmNlPGludD46OnR5
cGU+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNvbnN0IGNoYXIsIFJlbW92ZVJlZmVy
ZW5jZTxjb25zdCBjaGFyPjo6dHlwZT4oKTsKK30KKworLy8gVGVzdHMgdGhhdCBSZW1vdmVSZWZl
cmVuY2UgcmVtb3ZlcyByZWZlcmVuY2UgZnJvbSByZWZlcmVuY2UgdHlwZXMuCitURVNUKFJlbW92
ZVJlZmVyZW5jZVRlc3QsIFJlbW92ZXNSZWZlcmVuY2UpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVz
RXF1YWw8aW50LCBSZW1vdmVSZWZlcmVuY2U8aW50Jj46OnR5cGU+KCk7CisgIENvbXBpbGVBc3Nl
cnRUeXBlc0VxdWFsPGNvbnN0IGNoYXIsIFJlbW92ZVJlZmVyZW5jZTxjb25zdCBjaGFyJj46OnR5
cGU+KCk7Cit9CisKKy8vIFRlc3RzIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfLgorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgordm9pZCBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVu
Y2UoKSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBHVEVTVF9SRU1PVkVfUkVGRVJF
TkNFXyhUMik+KCk7Cit9CisKK1RFU1QoUmVtb3ZlUmVmZXJlbmNlVGVzdCwgTWFjcm9WZXJzaW9u
KSB7CisgIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZTxpbnQsIGludD4oKTsKKyAgVGVzdEdUZXN0
UmVtb3ZlUmVmZXJlbmNlPGNvbnN0IGNoYXIsIGNvbnN0IGNoYXImPigpOworfQorCisKKy8vIFRl
c3RzIHRoYXQgUmVtb3ZlQ29uc3QgZG9lcyBub3QgYWZmZWN0IG5vbi1jb25zdCB0eXBlcy4KK1RF
U1QoUmVtb3ZlQ29uc3RUZXN0LCBEb2VzTm90QWZmZWN0Tm9uQ29uc3RUeXBlKSB7CisgIENvbXBp
bGVBc3NlcnRUeXBlc0VxdWFsPGludCwgUmVtb3ZlQ29uc3Q8aW50Pjo6dHlwZT4oKTsKKyAgQ29t
cGlsZUFzc2VydFR5cGVzRXF1YWw8Y2hhciYsIFJlbW92ZUNvbnN0PGNoYXImPjo6dHlwZT4oKTsK
K30KKworLy8gVGVzdHMgdGhhdCBSZW1vdmVDb25zdCByZW1vdmVzIGNvbnN0IGZyb20gY29uc3Qg
dHlwZXMuCitURVNUKFJlbW92ZUNvbnN0VGVzdCwgUmVtb3Zlc0NvbnN0KSB7CisgIENvbXBpbGVB
c3NlcnRUeXBlc0VxdWFsPGludCwgUmVtb3ZlQ29uc3Q8Y29uc3QgaW50Pjo6dHlwZT4oKTsKKyAg
Q29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y2hhclsyXSwgUmVtb3ZlQ29uc3Q8Y29uc3QgY2hhclsy
XT46OnR5cGU+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNoYXJbMl1bM10sIFJlbW92
ZUNvbnN0PGNvbnN0IGNoYXJbMl1bM10+Ojp0eXBlPigpOworfQorCisvLyBUZXN0cyBHVEVTVF9S
RU1PVkVfQ09OU1RfLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgordm9p
ZCBUZXN0R1Rlc3RSZW1vdmVDb25zdCgpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8VDEs
IEdURVNUX1JFTU9WRV9DT05TVF8oVDIpPigpOworfQorCitURVNUKFJlbW92ZUNvbnN0VGVzdCwg
TWFjcm9WZXJzaW9uKSB7CisgIFRlc3RHVGVzdFJlbW92ZUNvbnN0PGludCwgaW50PigpOworICBU
ZXN0R1Rlc3RSZW1vdmVDb25zdDxkb3VibGUmLCBkb3VibGUmPigpOworICBUZXN0R1Rlc3RSZW1v
dmVDb25zdDxjaGFyLCBjb25zdCBjaGFyPigpOworfQorCisvLyBUZXN0cyBHVEVTVF9SRU1PVkVf
UkVGRVJFTkNFX0FORF9DT05TVF8uCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDI+Cit2b2lkIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0KCkgeworICBDb21waWxl
QXNzZXJ0VHlwZXNFcXVhbDxUMSwgR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV9BTkRfQ09OU1RfKFQy
KT4oKTsKK30KKworVEVTVChSZW1vdmVSZWZlcmVuY2VUb0NvbnN0VGVzdCwgV29ya3MpIHsKKyAg
VGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8aW50LCBpbnQ+KCk7CisgIFRlc3RHVGVz
dFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0PGRvdWJsZSwgZG91YmxlJj4oKTsKKyAgVGVzdEdUZXN0
UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8Y2hhciwgY29uc3QgY2hhcj4oKTsKKyAgVGVzdEdUZXN0
UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8Y2hhciwgY29uc3QgY2hhciY+KCk7CisgIFRlc3RHVGVz
dFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0PGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKj4oKTsKK30K
KworLy8gVGVzdHMgdGhhdCBBZGRSZWZlcmVuY2UgZG9lcyBub3QgYWZmZWN0IHJlZmVyZW5jZSB0
eXBlcy4KK1RFU1QoQWRkUmVmZXJlbmNlVGVzdCwgRG9lc05vdEFmZmVjdFJlZmVyZW5jZVR5cGUp
IHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50JiwgQWRkUmVmZXJlbmNlPGludCY+Ojp0
eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjb25zdCBjaGFyJiwgQWRkUmVmZXJl
bmNlPGNvbnN0IGNoYXImPjo6dHlwZT4oKTsKK30KKworLy8gVGVzdHMgdGhhdCBBZGRSZWZlcmVu
Y2UgYWRkcyByZWZlcmVuY2UgdG8gbm9uLXJlZmVyZW5jZSB0eXBlcy4KK1RFU1QoQWRkUmVmZXJl
bmNlVGVzdCwgQWRkc1JlZmVyZW5jZSkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQm
LCBBZGRSZWZlcmVuY2U8aW50Pjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8
Y29uc3QgY2hhciYsIEFkZFJlZmVyZW5jZTxjb25zdCBjaGFyPjo6dHlwZT4oKTsKK30KKworLy8g
VGVzdHMgR1RFU1RfQUREX1JFRkVSRU5DRV8uCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDI+Cit2b2lkIFRlc3RHVGVzdEFkZFJlZmVyZW5jZSgpIHsKKyAgQ29tcGlsZUFzc2Vy
dFR5cGVzRXF1YWw8VDEsIEdURVNUX0FERF9SRUZFUkVOQ0VfKFQyKT4oKTsKK30KKworVEVTVChB
ZGRSZWZlcmVuY2VUZXN0LCBNYWNyb1ZlcnNpb24pIHsKKyAgVGVzdEdUZXN0QWRkUmVmZXJlbmNl
PGludCYsIGludD4oKTsKKyAgVGVzdEdUZXN0QWRkUmVmZXJlbmNlPGNvbnN0IGNoYXImLCBjb25z
dCBjaGFyJj4oKTsKK30KKworLy8gVGVzdHMgR1RFU1RfUkVGRVJFTkNFX1RPX0NPTlNUXy4KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgVGVzdEdUZXN0UmVmZXJl
bmNlVG9Db25zdCgpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8VDEsIEdURVNUX1JFRkVS
RU5DRV9UT19DT05TVF8oVDIpPigpOworfQorCitURVNUKEdUZXN0UmVmZXJlbmNlVG9Db25zdFRl
c3QsIFdvcmtzKSB7CisgIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29uc3Q8Y29uc3QgY2hhciYsIGNo
YXI+KCk7CisgIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29uc3Q8Y29uc3QgaW50JiwgY29uc3QgaW50
PigpOworICBUZXN0R1Rlc3RSZWZlcmVuY2VUb0NvbnN0PGNvbnN0IGRvdWJsZSYsIGRvdWJsZT4o
KTsKKyAgVGVzdEdUZXN0UmVmZXJlbmNlVG9Db25zdDxjb25zdCBzdGQ6OnN0cmluZyYsIGNvbnN0
IHN0ZDo6c3RyaW5nJj4oKTsKK30KKworLy8gVGVzdHMgdGhhdCBJbXBsaWNpdGx5Q29udmVydGli
bGU8VDEsIFQyPjo6dmFsdWUgaXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuCitURVNUKEltcGxp
Y2l0bHlDb252ZXJ0aWJsZVRlc3QsIFZhbHVlSXNDb21waWxlVGltZUNvbnN0YW50KSB7CisgIEdU
RVNUX0NPTVBJTEVfQVNTRVJUXygoSW1wbGljaXRseUNvbnZlcnRpYmxlPGludCwgaW50Pjo6dmFs
dWUpLCBjb25zdF90cnVlKTsKKyAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKCghSW1wbGljaXRseUNv
bnZlcnRpYmxlPHZvaWQqLCBpbnQqPjo6dmFsdWUpLAorICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3RfZmFsc2UpOworfQorCisvLyBUZXN0cyB0aGF0IEltcGxpY2l0bHlDb252ZXJ0aWJsZTxU
MSwgVDI+Ojp2YWx1ZSBpcyB0cnVlIHdoZW4gVDEgY2FuCisvLyBiZSBpbXBsaWNpdGx5IGNvbnZl
cnRlZCB0byBUMi4KK1RFU1QoSW1wbGljaXRseUNvbnZlcnRpYmxlVGVzdCwgVmFsdWVJc1RydWVX
aGVuQ29udmVydGlibGUpIHsKKyAgRVhQRUNUX1RSVUUoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxp
bnQsIGRvdWJsZT46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChJbXBsaWNpdGx5Q29udmVydGli
bGU8ZG91YmxlLCBpbnQ+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoSW1wbGljaXRseUNvbnZl
cnRpYmxlPGludCosIHZvaWQqPjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKEltcGxpY2l0bHlD
b252ZXJ0aWJsZTxpbnQqLCBjb25zdCBpbnQqPjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKElt
cGxpY2l0bHlDb252ZXJ0aWJsZTxDb252ZXJzaW9uSGVscGVyRGVyaXZlZCYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvbkhlbHBlckJhc2UmPjo6
dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxjb25zdCBDb252
ZXJzaW9uSGVscGVyQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
b252ZXJzaW9uSGVscGVyQmFzZT46OnZhbHVlKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgSW1wbGlj
aXRseUNvbnZlcnRpYmxlPFQxLCBUMj46OnZhbHVlIGlzIGZhbHNlIHdoZW4gVDEKKy8vIGNhbm5v
dCBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBUMi4KK1RFU1QoSW1wbGljaXRseUNvbnZlcnRp
YmxlVGVzdCwgVmFsdWVJc0ZhbHNlV2hlbk5vdENvbnZlcnRpYmxlKSB7CisgIEVYUEVDVF9GQUxT
RSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPGRvdWJsZSwgaW50Kj46OnZhbHVlKSk7CisgIEVYUEVD
VF9GQUxTRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPHZvaWQqLCBpbnQqPjo6dmFsdWUpKTsKKyAg
RVhQRUNUX0ZBTFNFKChJbXBsaWNpdGx5Q29udmVydGlibGU8Y29uc3QgaW50KiwgaW50Kj46OnZh
bHVlKSk7CisgIEVYUEVDVF9GQUxTRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPENvbnZlcnNpb25I
ZWxwZXJCYXNlJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVy
c2lvbkhlbHBlckRlcml2ZWQmPjo6dmFsdWUpKTsKK30KKworLy8gVGVzdHMgSXNDb250YWluZXJU
ZXN0LgorCitjbGFzcyBOb25Db250YWluZXIge307CisKK1RFU1QoSXNDb250YWluZXJUZXN0VGVz
dCwgV29ya3NGb3JOb25Db250YWluZXIpIHsKKyAgRVhQRUNUX0VRKHNpemVvZihJc05vdENvbnRh
aW5lciksIHNpemVvZihJc0NvbnRhaW5lclRlc3Q8aW50PigwKSkpOworICBFWFBFQ1RfRVEoc2l6
ZW9mKElzTm90Q29udGFpbmVyKSwgc2l6ZW9mKElzQ29udGFpbmVyVGVzdDxjaGFyWzVdPigwKSkp
OworICBFWFBFQ1RfRVEoc2l6ZW9mKElzTm90Q29udGFpbmVyKSwgc2l6ZW9mKElzQ29udGFpbmVy
VGVzdDxOb25Db250YWluZXI+KDApKSk7Cit9CisKK1RFU1QoSXNDb250YWluZXJUZXN0VGVzdCwg
V29ya3NGb3JDb250YWluZXIpIHsKKyAgRVhQRUNUX0VRKHNpemVvZihJc0NvbnRhaW5lciksCisg
ICAgICAgICAgICBzaXplb2YoSXNDb250YWluZXJUZXN0PHN0ZDo6dmVjdG9yPGJvb2w+ID4oMCkp
KTsKKyAgRVhQRUNUX0VRKHNpemVvZihJc0NvbnRhaW5lciksCisgICAgICAgICAgICBzaXplb2Yo
SXNDb250YWluZXJUZXN0PHN0ZDo6bWFwPGludCwgZG91YmxlPiA+KDApKSk7Cit9CisKKy8vIFRl
c3RzIEFycmF5RXEoKS4KKworVEVTVChBcnJheUVxVGVzdCwgV29ya3NGb3JEZWdlbmVyYXRlZEFy
cmF5cykgeworICBFWFBFQ1RfVFJVRShBcnJheUVxKDUsIDVMKSk7CisgIEVYUEVDVF9GQUxTRShB
cnJheUVxKCdhJywgMCkpOworfQorCitURVNUKEFycmF5RXFUZXN0LCBXb3Jrc0Zvck9uZURpbWVu
c2lvbmFsQXJyYXlzKSB7CisgIC8vIE5vdGUgdGhhdCBhIGFuZCBiIGFyZSBkaXN0aW5jdCBidXQg
Y29tcGF0aWJsZSB0eXBlcy4KKyAgY29uc3QgaW50IGFbXSA9IHsgMCwgMSB9OworICBsb25nIGJb
XSA9IHsgMCwgMSB9OworICBFWFBFQ1RfVFJVRShBcnJheUVxKGEsIGIpKTsKKyAgRVhQRUNUX1RS
VUUoQXJyYXlFcShhLCAyLCBiKSk7CisKKyAgYlswXSA9IDI7CisgIEVYUEVDVF9GQUxTRShBcnJh
eUVxKGEsIGIpKTsKKyAgRVhQRUNUX0ZBTFNFKEFycmF5RXEoYSwgMSwgYikpOworfQorCitURVNU
KEFycmF5RXFUZXN0LCBXb3Jrc0ZvclR3b0RpbWVuc2lvbmFsQXJyYXlzKSB7CisgIGNvbnN0IGNo
YXIgYVtdWzNdID0geyAiaGkiLCAibG8iIH07CisgIGNvbnN0IGNoYXIgYltdWzNdID0geyAiaGki
LCAibG8iIH07CisgIGNvbnN0IGNoYXIgY1tdWzNdID0geyAiaGkiLCAibGkiIH07CisKKyAgRVhQ
RUNUX1RSVUUoQXJyYXlFcShhLCBiKSk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgMiwgYikp
OworCisgIEVYUEVDVF9GQUxTRShBcnJheUVxKGEsIGMpKTsKKyAgRVhQRUNUX0ZBTFNFKEFycmF5
RXEoYSwgMiwgYykpOworfQorCisvLyBUZXN0cyBBcnJheUF3YXJlRmluZCgpLgorCitURVNUKEFy
cmF5QXdhcmVGaW5kVGVzdCwgV29ya3NGb3JPbmVEaW1lbnNpb25hbEFycmF5KSB7CisgIGNvbnN0
IGNoYXIgYVtdID0gImhlbGxvIjsKKyAgRVhQRUNUX0VRKGEgKyA0LCBBcnJheUF3YXJlRmluZChh
LCBhICsgNSwgJ28nKSk7CisgIEVYUEVDVF9FUShhICsgNSwgQXJyYXlBd2FyZUZpbmQoYSwgYSAr
IDUsICd4JykpOworfQorCitURVNUKEFycmF5QXdhcmVGaW5kVGVzdCwgV29ya3NGb3JUd29EaW1l
bnNpb25hbEFycmF5KSB7CisgIGludCBhW11bMl0gPSB7IHsgMCwgMSB9LCB7IDIsIDMgfSwgeyA0
LCA1IH0gfTsKKyAgY29uc3QgaW50IGJbMl0gPSB7IDIsIDMgfTsKKyAgRVhQRUNUX0VRKGEgKyAx
LCBBcnJheUF3YXJlRmluZChhLCBhICsgMywgYikpOworCisgIGNvbnN0IGludCBjWzJdID0geyA2
LCA3IH07CisgIEVYUEVDVF9FUShhICsgMywgQXJyYXlBd2FyZUZpbmQoYSwgYSArIDMsIGMpKTsK
K30KKworLy8gVGVzdHMgQ29weUFycmF5KCkuCisKK1RFU1QoQ29weUFycmF5VGVzdCwgV29ya3NG
b3JEZWdlbmVyYXRlZEFycmF5cykgeworICBpbnQgbiA9IDA7CisgIENvcHlBcnJheSgnYScsICZu
KTsKKyAgRVhQRUNUX0VRKCdhJywgbik7Cit9CisKK1RFU1QoQ29weUFycmF5VGVzdCwgV29ya3NG
b3JPbmVEaW1lbnNpb25hbEFycmF5cykgeworICBjb25zdCBjaGFyIGFbM10gPSAiaGkiOworICBp
bnQgYlszXTsKKyNpZm5kZWYgX19CT1JMQU5EQ19fICAvLyBDKytCdWlsZGVyIGNhbm5vdCBjb21w
aWxlIHNvbWUgYXJyYXkgc2l6ZSBkZWR1Y3Rpb25zLgorICBDb3B5QXJyYXkoYSwgJmIpOworICBF
WFBFQ1RfVFJVRShBcnJheUVxKGEsIGIpKTsKKyNlbmRpZgorCisgIGludCBjWzNdOworICBDb3B5
QXJyYXkoYSwgMywgYyk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYykpOworfQorCitURVNU
KENvcHlBcnJheVRlc3QsIFdvcmtzRm9yVHdvRGltZW5zaW9uYWxBcnJheXMpIHsKKyAgY29uc3Qg
aW50IGFbMl1bM10gPSB7IHsgMCwgMSwgMiB9LCB7IDMsIDQsIDUgfSB9OworICBpbnQgYlsyXVsz
XTsKKyNpZm5kZWYgX19CT1JMQU5EQ19fICAvLyBDKytCdWlsZGVyIGNhbm5vdCBjb21waWxlIHNv
bWUgYXJyYXkgc2l6ZSBkZWR1Y3Rpb25zLgorICBDb3B5QXJyYXkoYSwgJmIpOworICBFWFBFQ1Rf
VFJVRShBcnJheUVxKGEsIGIpKTsKKyNlbmRpZgorCisgIGludCBjWzJdWzNdOworICBDb3B5QXJy
YXkoYSwgMiwgYyk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYykpOworfQorCisvLyBUZXN0
cyBOYXRpdmVBcnJheS4KKworVEVTVChOYXRpdmVBcnJheVRlc3QsIENvbnN0cnVjdG9yRnJvbUFy
cmF5V29ya3MpIHsKKyAgY29uc3QgaW50IGFbM10gPSB7IDAsIDEsIDIgfTsKKyAgTmF0aXZlQXJy
YXk8aW50PiBuYShhLCAzLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOworICBFWFBFQ1Rf
RVEoM1UsIG5hLnNpemUoKSk7CisgIEVYUEVDVF9FUShhLCBuYS5iZWdpbigpKTsKK30KKworVEVT
VChOYXRpdmVBcnJheVRlc3QsIENyZWF0ZXNBbmREZWxldGVzQ29weU9mQXJyYXlXaGVuQXNrZWRU
bykgeworICB0eXBlZGVmIGludCBBcnJheVsyXTsKKyAgQXJyYXkqIGEgPSBuZXcgQXJyYXlbMV07
CisgICgqYSlbMF0gPSAwOworICAoKmEpWzFdID0gMTsKKyAgTmF0aXZlQXJyYXk8aW50PiBuYSgq
YSwgMiwgUmVsYXRpb25Ub1NvdXJjZUNvcHkoKSk7CisgIEVYUEVDVF9ORSgqYSwgbmEuYmVnaW4o
KSk7CisgIGRlbGV0ZVtdIGE7CisgIEVYUEVDVF9FUSgwLCBuYS5iZWdpbigpWzBdKTsKKyAgRVhQ
RUNUX0VRKDEsIG5hLmJlZ2luKClbMV0pOworCisgIC8vIFdlIHJlbHkgb24gdGhlIGhlYXAgY2hl
Y2tlciB0byB2ZXJpZnkgdGhhdCBuYSBkZWxldGVzIHRoZSBjb3B5IG9mCisgIC8vIGFycmF5Lgor
fQorCitURVNUKE5hdGl2ZUFycmF5VGVzdCwgVHlwZU1lbWJlcnNBcmVDb3JyZWN0KSB7CisgIFN0
YXRpY0Fzc2VydFR5cGVFcTxjaGFyLCBOYXRpdmVBcnJheTxjaGFyPjo6dmFsdWVfdHlwZT4oKTsK
KyAgU3RhdGljQXNzZXJ0VHlwZUVxPGludFsyXSwgTmF0aXZlQXJyYXk8aW50WzJdPjo6dmFsdWVf
dHlwZT4oKTsKKworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgY2hhciosIE5hdGl2ZUFycmF5
PGNoYXI+Ojpjb25zdF9pdGVyYXRvcj4oKTsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGJv
b2woKilbMl0sIE5hdGl2ZUFycmF5PGJvb2xbMl0+Ojpjb25zdF9pdGVyYXRvcj4oKTsKK30KKwor
VEVTVChOYXRpdmVBcnJheVRlc3QsIE1ldGhvZHNXb3JrKSB7CisgIGNvbnN0IGludCBhWzNdID0g
eyAwLCAxLCAyIH07CisgIE5hdGl2ZUFycmF5PGludD4gbmEoYSwgMywgUmVsYXRpb25Ub1NvdXJj
ZUNvcHkoKSk7CisgIEFTU0VSVF9FUSgzVSwgbmEuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKDMsIG5h
LmVuZCgpIC0gbmEuYmVnaW4oKSk7CisKKyAgTmF0aXZlQXJyYXk8aW50Pjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBuYS5iZWdpbigpOworICBFWFBFQ1RfRVEoMCwgKml0KTsKKyAgKytpdDsKKyAgRVhQ
RUNUX0VRKDEsICppdCk7CisgIGl0Kys7CisgIEVYUEVDVF9FUSgyLCAqaXQpOworICArK2l0Owor
ICBFWFBFQ1RfRVEobmEuZW5kKCksIGl0KTsKKworICBFWFBFQ1RfVFJVRShuYSA9PSBuYSk7CisK
KyAgTmF0aXZlQXJyYXk8aW50PiBuYTIoYSwgMywgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgp
KTsKKyAgRVhQRUNUX1RSVUUobmEgPT0gbmEyKTsKKworICBjb25zdCBpbnQgYjFbM10gPSB7IDAs
IDEsIDEgfTsKKyAgY29uc3QgaW50IGIyWzRdID0geyAwLCAxLCAyLCAzIH07CisgIEVYUEVDVF9G
QUxTRShuYSA9PSBOYXRpdmVBcnJheTxpbnQ+KGIxLCAzLCBSZWxhdGlvblRvU291cmNlUmVmZXJl
bmNlKCkpKTsKKyAgRVhQRUNUX0ZBTFNFKG5hID09IE5hdGl2ZUFycmF5PGludD4oYjIsIDQsIFJl
bGF0aW9uVG9Tb3VyY2VDb3B5KCkpKTsKK30KKworVEVTVChOYXRpdmVBcnJheVRlc3QsIFdvcmtz
Rm9yVHdvRGltZW5zaW9uYWxBcnJheSkgeworICBjb25zdCBjaGFyIGFbMl1bM10gPSB7ICJoaSIs
ICJsbyIgfTsKKyAgTmF0aXZlQXJyYXk8Y2hhclszXT4gbmEoYSwgMiwgUmVsYXRpb25Ub1NvdXJj
ZVJlZmVyZW5jZSgpKTsKKyAgQVNTRVJUX0VRKDJVLCBuYS5zaXplKCkpOworICBFWFBFQ1RfRVEo
YSwgbmEuYmVnaW4oKSk7Cit9CisKKy8vIFRlc3RzIFNraXBQcmVmaXgoKS4KKworVEVTVChTa2lw
UHJlZml4VGVzdCwgU2tpcHNXaGVuUHJlZml4TWF0Y2hlcykgeworICBjb25zdCBjaGFyKiBjb25z
dCBzdHIgPSAiaGVsbG8iOworCisgIGNvbnN0IGNoYXIqIHAgPSBzdHI7CisgIEVYUEVDVF9UUlVF
KFNraXBQcmVmaXgoIiIsICZwKSk7CisgIEVYUEVDVF9FUShzdHIsIHApOworCisgIHAgPSBzdHI7
CisgIEVYUEVDVF9UUlVFKFNraXBQcmVmaXgoImhlbGwiLCAmcCkpOworICBFWFBFQ1RfRVEoc3Ry
ICsgNCwgcCk7CiB9CisKK1RFU1QoU2tpcFByZWZpeFRlc3QsIERvZXNOb3RTa2lwV2hlblByZWZp
eERvZXNOb3RNYXRjaCkgeworICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAid29ybGQiOworCisg
IGNvbnN0IGNoYXIqIHAgPSBzdHI7CisgIEVYUEVDVF9GQUxTRShTa2lwUHJlZml4KCJXIiwgJnAp
KTsKKyAgRVhQRUNUX0VRKHN0ciwgcCk7CisKKyAgcCA9IHN0cjsKKyAgRVhQRUNUX0ZBTFNFKFNr
aXBQcmVmaXgoIndvcmxkISIsICZwKSk7CisgIEVYUEVDVF9FUShzdHIsIHApOworfQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMV90
ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUx
X3Rlc3RfLmNjCmluZGV4IDY2NGJhYWQyYWI4NzNiYTM4ODE5M2E2NWQyYjc5ZmQ4M2RiMmU3NzUu
LjUzMWNlZDQ5ZDQxMDg3NjI5ZGU5MjU0NGYwNTljYmRlYTI3MGI1YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3Rf
LmNjCkBAIC0zMiw3ICszMiw3IEBACiAvLyBndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8gd3JpdGVz
IHNvbWUgeG1sIHZpYSBUZXN0UHJvcGVydHkgdXNlZCBieQogLy8gZ3Rlc3RfeG1sX291dGZpbGVz
X3Rlc3QucHkKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKIAogY2xhc3MgUHJvcGVydHlPbmUgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgcHJv
dGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94
bWxfb3V0ZmlsZTJfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X3htbF9vdXRmaWxlMl90ZXN0Xy5jYwppbmRleCAzNDExYTNkMzhiODYxMDRjNmE2MGM2MGQxMTMx
Y2I2NmFhNTRjMTkyLi43YjQwMGIyNzYwNTdjZjYyNGI0ZGVlNjQ1ZGUzM2EzYzQ5ZjBlZWM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxl
Ml90ZXN0Xy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9v
dXRmaWxlMl90ZXN0Xy5jYwpAQCAtMzIsNyArMzIsNyBAQAogLy8gZ3Rlc3RfeG1sX291dGZpbGUy
X3Rlc3RfIHdyaXRlcyBzb21lIHhtbCB2aWEgVGVzdFByb3BlcnR5IHVzZWQgYnkKIC8vIGd0ZXN0
X3htbF9vdXRmaWxlc190ZXN0LnB5CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIGNsYXNzIFByb3BlcnR5VHdvIDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgewogIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5CmluZGV4IDBmZTk0N2YwODRjOGY1NmY0
YWRmNWQwYzlmYTAyNmNlMjk5NzVkMmMuLjUyNGU0MzdlNmMxNzY3OGJkMmI2ZDI4YWQyYTQ3OTk4
MTAyNTkyYzIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
eG1sX291dGZpbGVzX3Rlc3QucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weQpAQCAtNDUsNyArNDUsNyBAQAogR1RFU1RfT1VUUFVU
XzJfVEVTVCA9ICJndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8iCiAKIEVYUEVDVEVEX1hNTF8xID0g
IiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx0ZXN0c3VpdGVzIHRl
c3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIgbmFt
ZT0iQWxsVGVzdHMiPgorPHRlc3RzdWl0ZXMgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxl
ZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiB0aW1lc3RhbXA9IioiIG5hbWU9IkFsbFRlc3RzIj4K
ICAgPHRlc3RzdWl0ZSBuYW1lPSJQcm9wZXJ0eU9uZSIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBk
aXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAgICA8dGVzdGNhc2UgbmFtZT0iVGVz
dFNvbWVQcm9wZXJ0aWVzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0
eU9uZSIgU2V0VXBQcm9wPSIxIiBUZXN0U29tZVByb3BlcnR5PSIxIiBUZWFyRG93blByb3A9IjEi
IC8+CiAgIDwvdGVzdHN1aXRlPgpAQCAtNTMsNyArNTMsNyBAQAogIiIiCiAKIEVYUEVDVEVEX1hN
TF8yID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx0ZXN0c3Vp
dGVzIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0i
KiIgbmFtZT0iQWxsVGVzdHMiPgorPHRlc3RzdWl0ZXMgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBk
aXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiB0aW1lc3RhbXA9IioiIG5hbWU9IkFsbFRl
c3RzIj4KICAgPHRlc3RzdWl0ZSBuYW1lPSJQcm9wZXJ0eVR3byIgdGVzdHM9IjEiIGZhaWx1cmVz
PSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAgICA8dGVzdGNhc2UgbmFt
ZT0iVGVzdFNvbWVQcm9wZXJ0aWVzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQ
cm9wZXJ0eVR3byIgU2V0VXBQcm9wPSIyIiBUZXN0U29tZVByb3BlcnR5PSIyIiBUZWFyRG93blBy
b3A9IjIiIC8+CiAgIDwvdGVzdHN1aXRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0LnB5CmluZGV4IDZkNDQ5Mjlj
YWNhMDNlYzZmYWU0NDcxZWQxYmExZDQxNmE1ZGZjZTAuLmJjZDU5NzU5OTFkNzQzNjcyOWNkODZl
NmM4MmQyM2M4ZjM1NWE4ZWIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3QucHkKQEAgLTMzLDggKzMzLDEwIEBA
CiAKIF9fYXV0aG9yX18gPSAnZWVmYWNtQGdtYWlsLmNvbSAoU2VhbiBNY2FmZWUpJwogCitpbXBv
cnQgZGF0ZXRpbWUKIGltcG9ydCBlcnJubwogaW1wb3J0IG9zCitpbXBvcnQgcmUKIGltcG9ydCBz
eXMKIGZyb20geG1sLmRvbSBpbXBvcnQgbWluaWRvbSwgTm9kZQogCkBAIC00Miw2ICs0NCw4IEBA
CiBpbXBvcnQgZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMKIAogCitHVEVTVF9GSUxURVJfRkxBRyA9ICct
LWd0ZXN0X2ZpbHRlcicKK0dURVNUX0xJU1RfVEVTVFNfRkxBRyA9ICctLWd0ZXN0X2xpc3RfdGVz
dHMnCiBHVEVTVF9PVVRQVVRfRkxBRyAgICAgICAgID0gIi0tZ3Rlc3Rfb3V0cHV0IgogR1RFU1Rf
REVGQVVMVF9PVVRQVVRfRklMRSA9ICJ0ZXN0X2RldGFpbC54bWwiCiBHVEVTVF9QUk9HUkFNX05B
TUUgPSAiZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8iCkBAIC00OSw0NCArNTMsNDQgQEAKIFNV
UFBPUlRTX1NUQUNLX1RSQUNFUyA9IEZhbHNlCiAKIGlmIFNVUFBPUlRTX1NUQUNLX1RSQUNFUzoK
LSAgU1RBQ0tfVFJBQ0VfVEVNUExBVEUgPSAiXG5TdGFjayB0cmFjZTpcbioiCisgIFNUQUNLX1RS
QUNFX1RFTVBMQVRFID0gJ1xuU3RhY2sgdHJhY2U6XG4qJwogZWxzZToKLSAgU1RBQ0tfVFJBQ0Vf
VEVNUExBVEUgPSAiIgorICBTVEFDS19UUkFDRV9URU1QTEFURSA9ICcnCiAKIEVYUEVDVEVEX05P
Tl9FTVBUWV9YTUwgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgot
PHRlc3RzdWl0ZXMgdGVzdHM9IjE1IiBmYWlsdXJlcz0iNCIgZGlzYWJsZWQ9IjIiIGVycm9ycz0i
MCIgdGltZT0iKiIgbmFtZT0iQWxsVGVzdHMiPgorPHRlc3RzdWl0ZXMgdGVzdHM9IjIzIiBmYWls
dXJlcz0iNCIgZGlzYWJsZWQ9IjIiIGVycm9ycz0iMCIgdGltZT0iKiIgdGltZXN0YW1wPSIqIiBu
YW1lPSJBbGxUZXN0cyIgYWRfaG9jX3Byb3BlcnR5PSI0MiI+CiAgIDx0ZXN0c3VpdGUgbmFtZT0i
U3VjY2Vzc2Z1bFRlc3QiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9y
cz0iMCIgdGltZT0iKiI+CiAgICAgPHRlc3RjYXNlIG5hbWU9IlN1Y2NlZWRzIiBzdGF0dXM9InJ1
biIgdGltZT0iKiIgY2xhc3NuYW1lPSJTdWNjZXNzZnVsVGVzdCIvPgogICA8L3Rlc3RzdWl0ZT4K
ICAgPHRlc3RzdWl0ZSBuYW1lPSJGYWlsZWRUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjEiIGRp
c2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJGYWls
cyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iRmFpbGVkVGVzdCI+Ci0gICAgICA8
ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogMiYjeDBBO0V4cGVjdGVkOiAxIiB0eXBlPSIiPjwh
W0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioKLVZhbHVlIG9mOiAyCi1FeHBl
Y3RlZDogMSUoc3RhY2spc11dPjwvZmFpbHVyZT4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Imd0
ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOiomI3gwQTsgICAgICBFeHBlY3RlZDogMSYjeDBB
O1RvIGJlIGVxdWFsIHRvOiAyIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5p
dHRlc3RfLmNjOioKKyAgICAgIEV4cGVjdGVkOiAxCitUbyBiZSBlcXVhbCB0bzogMiUoc3RhY2sp
c11dPjwvZmFpbHVyZT4KICAgICA8L3Rlc3RjYXNlPgogICA8L3Rlc3RzdWl0ZT4KICAgPHRlc3Rz
dWl0ZSBuYW1lPSJNaXhlZFJlc3VsdFRlc3QiIHRlc3RzPSIzIiBmYWlsdXJlcz0iMSIgZGlzYWJs
ZWQ9IjEiIGVycm9ycz0iMCIgdGltZT0iKiI+CiAgICAgPHRlc3RjYXNlIG5hbWU9IlN1Y2NlZWRz
IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJNaXhlZFJlc3VsdFRlc3QiLz4KICAg
ICA8dGVzdGNhc2UgbmFtZT0iRmFpbHMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9
Ik1peGVkUmVzdWx0VGVzdCI+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogMiYj
eDBBO0V4cGVjdGVkOiAxIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRl
c3RfLmNjOioKLVZhbHVlIG9mOiAyCi1FeHBlY3RlZDogMSUoc3RhY2spc11dPjwvZmFpbHVyZT4K
LSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IlZhbHVlIG9mOiAzJiN4MEE7RXhwZWN0ZWQ6IDIiIHR5
cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgotVmFsdWUgb2Y6
IDMKLUV4cGVjdGVkOiAyJShzdGFjaylzXV0+PC9mYWlsdXJlPgorICAgICAgPGZhaWx1cmUgbWVz
c2FnZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBBOyAgICAgIEV4cGVjdGVk
OiAxJiN4MEE7VG8gYmUgZXF1YWwgdG86IDIiIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291
dHB1dF91bml0dGVzdF8uY2M6KgorICAgICAgRXhwZWN0ZWQ6IDEKK1RvIGJlIGVxdWFsIHRvOiAy
JShzdGFjaylzXV0+PC9mYWlsdXJlPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iZ3Rlc3RfeG1s
X291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBBOyAgICAgIEV4cGVjdGVkOiAyJiN4MEE7VG8gYmUg
ZXF1YWwgdG86IDMiIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8u
Y2M6KgorICAgICAgRXhwZWN0ZWQ6IDIKK1RvIGJlIGVxdWFsIHRvOiAzJShzdGFjaylzXV0+PC9m
YWlsdXJlPgogICAgIDwvdGVzdGNhc2U+CiAgICAgPHRlc3RjYXNlIG5hbWU9IkRJU0FCTEVEX3Rl
c3QiIHN0YXR1cz0ibm90cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ik1peGVkUmVzdWx0VGVzdCIv
PgogICA8L3Rlc3RzdWl0ZT4KICAgPHRlc3RzdWl0ZSBuYW1lPSJYbWxRdW90aW5nVGVzdCIgdGVz
dHM9IjEiIGZhaWx1cmVzPSIxIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAg
ICA8dGVzdGNhc2UgbmFtZT0iT3V0cHV0c0NEYXRhIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xh
c3NuYW1lPSJYbWxRdW90aW5nVGVzdCI+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJGYWlsZWQm
I3gwQTtYTUwgb3V0cHV0OiAmbHQ7P3htbCBlbmNvZGluZz0mcXVvdDt1dGYtOCZxdW90OyZndDsm
bHQ7dG9wJmd0OyZsdDshW0NEQVRBW2NkYXRhIHRleHRdXSZndDsmbHQ7L3RvcCZndDsiIHR5cGU9
IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgorICAgICAgPGZhaWx1
cmUgbWVzc2FnZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBBO0ZhaWxlZCYj
eDBBO1hNTCBvdXRwdXQ6ICZsdDs/eG1sIGVuY29kaW5nPSZxdW90O3V0Zi04JnF1b3Q7Jmd0OyZs
dDt0b3AmZ3Q7Jmx0OyFbQ0RBVEFbY2RhdGEgdGV4dF1dJmd0OyZsdDsvdG9wJmd0OyIgdHlwZT0i
Ij48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCiBGYWlsZWQKIFhNTCBv
dXRwdXQ6IDw/eG1sIGVuY29kaW5nPSJ1dGYtOCI+PHRvcD48IVtDREFUQVtjZGF0YSB0ZXh0XV0+
XV0mZ3Q7PCFbQ0RBVEFbPC90b3A+JShzdGFjaylzXV0+PC9mYWlsdXJlPgogICAgIDwvdGVzdGNh
c2U+CiAgIDwvdGVzdHN1aXRlPgogICA8dGVzdHN1aXRlIG5hbWU9IkludmFsaWRDaGFyYWN0ZXJz
VGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIxIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1l
PSIqIj4KICAgICA8dGVzdGNhc2UgbmFtZT0iSW52YWxpZENoYXJhY3RlcnNJbk1lc3NhZ2UiIHN0
YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IkludmFsaWRDaGFyYWN0ZXJzVGVzdCI+Ci0g
ICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJGYWlsZWQmI3gwQTtJbnZhbGlkIGNoYXJhY3RlcnMgaW4g
YnJhY2tldHMgW10iIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8u
Y2M6KgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8u
Y2M6KiYjeDBBO0ZhaWxlZCYjeDBBO0ludmFsaWQgY2hhcmFjdGVycyBpbiBicmFja2V0cyBbXSIg
dHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCiBGYWlsZWQK
IEludmFsaWQgY2hhcmFjdGVycyBpbiBicmFja2V0cyBbXSUoc3RhY2spc11dPjwvZmFpbHVyZT4K
ICAgICA8L3Rlc3RjYXNlPgpAQCAtOTQsNyArOTgsNyBAQAogICA8dGVzdHN1aXRlIG5hbWU9IkRp
c2FibGVkVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMSIgZXJyb3JzPSIw
IiB0aW1lPSIqIj4KICAgICA8dGVzdGNhc2UgbmFtZT0iRElTQUJMRURfdGVzdF9ub3RfcnVuIiBz
dGF0dXM9Im5vdHJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJEaXNhYmxlZFRlc3QiLz4KICAgPC90
ZXN0c3VpdGU+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0IiB0ZXN0
cz0iNCIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgorICA8
dGVzdHN1aXRlIG5hbWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCIgdGVzdHM9IjQiIGZhaWx1cmVz
PSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiBTZXRVcFRlc3RDYXNlPSJ5ZXMi
IFRlYXJEb3duVGVzdENhc2U9ImF5ZSI+CiAgICAgPHRlc3RjYXNlIG5hbWU9Ik9uZVByb3BlcnR5
IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3Qi
IGtleV8xPSIxIi8+CiAgICAgPHRlc3RjYXNlIG5hbWU9IkludFZhbHVlZFByb3BlcnR5IiBzdGF0
dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiIGtleV9p
bnQ9IjEiLz4KICAgICA8dGVzdGNhc2UgbmFtZT0iVGhyZWVQcm9wZXJ0aWVzIiBzdGF0dXM9InJ1
biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiIGtleV8xPSIxIiBr
ZXlfMj0iMiIga2V5XzM9IjMiLz4KQEAgLTEwNSwzNCArMTA5LDk0IEBACiAgICAgIDx0ZXN0Y2Fz
ZSBuYW1lPSJFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRJbnRWYWx1ZWRQcm9wZXJ0eSIg
c3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTm9GaXh0dXJlVGVzdCIga2V5X2Zvcl91
dGlsaXR5X2ludD0iMSIvPgogICAgICA8dGVzdGNhc2UgbmFtZT0iRXh0ZXJuYWxVdGlsaXR5VGhh
dENhbGxzUmVjb3JkU3RyaW5nVmFsdWVkUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBj
bGFzc25hbWU9Ik5vRml4dHVyZVRlc3QiIGtleV9mb3JfdXRpbGl0eV9zdHJpbmc9IjEiLz4KICAg
PC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiB0
ZXN0cz0iNCIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgor
ICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzAiIHZhbHVlX3BhcmFt
PSIzMyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1U
ZXN0IiAvPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzEiIHZh
bHVlX3BhcmFtPSI0MiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1Zh
bHVlUGFyYW1UZXN0IiAvPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJBbm90aGVyVGVzdFRoYXRIYXNW
YWx1ZVBhcmFtQXR0cmlidXRlLzAiIHZhbHVlX3BhcmFtPSIzMyIgc3RhdHVzPSJydW4iIHRpbWU9
IioiIGNsYXNzbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiAvPgorICAgIDx0ZXN0Y2FzZSBu
YW1lPSJBbm90aGVyVGVzdFRoYXRIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzEiIHZhbHVlX3BhcmFt
PSI0MiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1U
ZXN0IiAvPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJUeXBlZFRlc3QvMCIg
dGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4K
KyAgICA8dGVzdGNhc2UgbmFtZT0iSGFzVHlwZVBhcmFtQXR0cmlidXRlIiB0eXBlX3BhcmFtPSIq
IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJUeXBlZFRlc3QvMCIgLz4KKyAgPC90
ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iVHlwZWRUZXN0LzEiIHRlc3RzPSIxIiBmYWls
dXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNl
IG5hbWU9Ikhhc1R5cGVQYXJhbUF0dHJpYnV0ZSIgdHlwZV9wYXJhbT0iKiIgc3RhdHVzPSJydW4i
IHRpbWU9IioiIGNsYXNzbmFtZT0iVHlwZWRUZXN0LzEiIC8+CisgIDwvdGVzdHN1aXRlPgorICA8
dGVzdHN1aXRlIG5hbWU9IlNpbmdsZS9UeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLzAiIHRlc3Rz
PSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAg
PHRlc3RjYXNlIG5hbWU9Ikhhc1R5cGVQYXJhbUF0dHJpYnV0ZSIgdHlwZV9wYXJhbT0iKiIgc3Rh
dHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVz
dENhc2UvMCIgLz4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iU2luZ2xlL1R5
cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMSIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxl
ZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iSGFzVHlwZVBh
cmFtQXR0cmlidXRlIiB0eXBlX3BhcmFtPSIqIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3Nu
YW1lPSJTaW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8xIiAvPgorICA8L3Rlc3RzdWl0
ZT4KIDwvdGVzdHN1aXRlcz4iIiIgJSB7J3N0YWNrJzogU1RBQ0tfVFJBQ0VfVEVNUExBVEV9CiAK
K0VYUEVDVEVEX0ZJTFRFUkVEX1RFU1RfWE1MID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv
ZGluZz0iVVRGLTgiPz4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJs
ZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIKKyAgICAgICAgICAgIHRpbWVzdGFtcD0iKiIgbmFt
ZT0iQWxsVGVzdHMiIGFkX2hvY19wcm9wZXJ0eT0iNDIiPgorICA8dGVzdHN1aXRlIG5hbWU9IlN1
Y2Nlc3NmdWxUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIgorICAgICAg
ICAgICAgIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNlIG5hbWU9IlN1Y2NlZWRz
IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJTdWNjZXNzZnVsVGVzdCIvPgorICA8
L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1aXRlcz4iIiIKIAogRVhQRUNURURfRU1QVFlfWE1MID0gIiIi
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx0ZXN0c3VpdGVzIHRlc3Rz
PSIwIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIgbmFtZT0i
QWxsVGVzdHMiPgorPHRlc3RzdWl0ZXMgdGVzdHM9IjAiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0i
MCIgZXJyb3JzPSIwIiB0aW1lPSIqIgorICAgICAgICAgICAgdGltZXN0YW1wPSIqIiBuYW1lPSJB
bGxUZXN0cyI+CiA8L3Rlc3RzdWl0ZXM+IiIiCiAKK0dURVNUX1BST0dSQU1fUEFUSCA9IGd0ZXN0
X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKEdURVNUX1BST0dSQU1fTkFNRSkKKwor
U1VQUE9SVFNfVFlQRURfVEVTVFMgPSAnVHlwZWRUZXN0JyBpbiBndGVzdF90ZXN0X3V0aWxzLlN1
YnByb2Nlc3MoCisgICAgW0dURVNUX1BST0dSQU1fUEFUSCwgR1RFU1RfTElTVF9URVNUU19GTEFH
XSwgY2FwdHVyZV9zdGRlcnI9RmFsc2UpLm91dHB1dAorCiAKIGNsYXNzIEdUZXN0WE1MT3V0cHV0
VW5pdFRlc3QoZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMuR1Rlc3RYTUxUZXN0Q2FzZSk6CiAgICIiIgog
ICBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgWE1MIG91dHB1dCBmdW5jdGlvbmFsaXR5Lgog
ICAiIiIKIAotICBkZWYgdGVzdE5vbkVtcHR5WG1sT3V0cHV0KHNlbGYpOgotICAgICIiIgotICAg
IFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYSBub24tZW1wdHkgWE1MIG91dHB1
dCwgYW5kCi0gICAgdGVzdHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBleHBlY3RlZC4KLSAgICAi
IiIKLSAgICBzZWxmLl9UZXN0WG1sT3V0cHV0KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQRUNURURf
Tk9OX0VNUFRZX1hNTCwgMSkKKyAgIyBUaGlzIHRlc3QgY3VycmVudGx5IGJyZWFrcyBvbiBwbGF0
Zm9ybXMgdGhhdCBkbyBub3Qgc3VwcG9ydCB0eXBlZCBhbmQKKyAgIyB0eXBlLXBhcmFtZXRlcml6
ZWQgdGVzdHMsIHNvIHdlIGRvbid0IHJ1biBpdCB1bmRlciB0aGVtLgorICBpZiBTVVBQT1JUU19U
WVBFRF9URVNUUzoKKyAgICBkZWYgdGVzdE5vbkVtcHR5WG1sT3V0cHV0KHNlbGYpOgorICAgICAg
IiIiCisgICAgICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRoYXQgZ2VuZXJhdGVzIGEgbm9uLWVtcHR5
IFhNTCBvdXRwdXQsIGFuZAorICAgICAgdGVzdHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBleHBl
Y3RlZC4KKyAgICAgICIiIgorICAgICAgc2VsZi5fVGVzdFhtbE91dHB1dChHVEVTVF9QUk9HUkFN
X05BTUUsIEVYUEVDVEVEX05PTl9FTVBUWV9YTUwsIDEpCiAKICAgZGVmIHRlc3RFbXB0eVhtbE91
dHB1dChzZWxmKToKLSAgICAiIiIKKyAgICAiIiJWZXJpZmllcyBYTUwgb3V0cHV0IGZvciBhIEdv
b2dsZSBUZXN0IGJpbmFyeSB3aXRob3V0IGFjdHVhbCB0ZXN0cy4KKwogICAgIFJ1bnMgYSB0ZXN0
IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkgWE1MIG91dHB1dCwgYW5kCiAgICAgdGVz
dHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBleHBlY3RlZC4KICAgICAiIiIKIAotICAgIHNlbGYu
X1Rlc3RYbWxPdXRwdXQoImd0ZXN0X25vX3Rlc3RfdW5pdHRlc3QiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgRVhQRUNURURfRU1QVFlfWE1MLCAwKQorICAgIHNlbGYuX1Rlc3RYbWxPdXRwdXQo
J2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnLCBFWFBFQ1RFRF9FTVBUWV9YTUwsIDApCisKKyAgZGVm
IHRlc3RUaW1lc3RhbXBWYWx1ZShzZWxmKToKKyAgICAiIiJDaGVja3Mgd2hldGhlciB0aGUgdGlt
ZXN0YW1wIGF0dHJpYnV0ZSBpbiB0aGUgWE1MIG91dHB1dCBpcyB2YWxpZC4KKworICAgIFJ1bnMg
YSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkgWE1MIG91dHB1dCwgYW5kIGNo
ZWNrcyBpZgorICAgIHRoZSB0aW1lc3RhbXAgYXR0cmlidXRlIGluIHRoZSB0ZXN0c3VpdGVzIHRh
ZyBpcyB2YWxpZC4KKyAgICAiIiIKKyAgICBhY3R1YWwgPSBzZWxmLl9HZXRYbWxPdXRwdXQoJ2d0
ZXN0X25vX3Rlc3RfdW5pdHRlc3QnLCBbXSwgMCkKKyAgICBkYXRlX3RpbWVfc3RyID0gYWN0dWFs
LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKCd0aW1lc3RhbXAnKS52YWx1ZQorICAg
ICMgZGF0ZXRpbWUuc3RycHRpbWUoKSBpcyBvbmx5IGF2YWlsYWJsZSBpbiBQeXRob24gMi41KyBz
byB3ZSBoYXZlIHRvCisgICAgIyBwYXJzZSB0aGUgZXhwZWN0ZWQgZGF0ZXRpbWUgbWFudWFsbHku
CisgICAgbWF0Y2ggPSByZS5tYXRjaChyJyhcZCspLShcZFxkKS0oXGRcZClUKFxkXGQpOihcZFxk
KTooXGRcZCknLCBkYXRlX3RpbWVfc3RyKQorICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKKyAgICAgICAg
cmUubWF0Y2gsCisgICAgICAgICdYTUwgZGF0ZXR0aW1lIHN0cmluZyAlcyBoYXMgaW5jb3JyZWN0
IGZvcm1hdCcgJSBkYXRlX3RpbWVfc3RyKQorICAgIGRhdGVfdGltZV9mcm9tX3htbCA9IGRhdGV0
aW1lLmRhdGV0aW1lKAorICAgICAgICB5ZWFyPWludChtYXRjaC5ncm91cCgxKSksIG1vbnRoPWlu
dChtYXRjaC5ncm91cCgyKSksCisgICAgICAgIGRheT1pbnQobWF0Y2guZ3JvdXAoMykpLCBob3Vy
PWludChtYXRjaC5ncm91cCg0KSksCisgICAgICAgIG1pbnV0ZT1pbnQobWF0Y2guZ3JvdXAoNSkp
LCBzZWNvbmQ9aW50KG1hdGNoLmdyb3VwKDYpKSkKKworICAgIHRpbWVfZGVsdGEgPSBhYnMoZGF0
ZXRpbWUuZGF0ZXRpbWUubm93KCkgLSBkYXRlX3RpbWVfZnJvbV94bWwpCisgICAgIyB0aW1lc3Rh
bXAgdmFsdWUgc2hvdWxkIGJlIG5lYXIgdGhlIGN1cnJlbnQgbG9jYWwgdGltZQorICAgIHNlbGYu
YXNzZXJ0VHJ1ZSh0aW1lX2RlbHRhIDwgZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9NjAwKSwK
KyAgICAgICAgICAgICAgICAgICAgJ3RpbWVfZGVsdGEgaXMgJXMnICUgdGltZV9kZWx0YSkKKyAg
ICBhY3R1YWwudW5saW5rKCkKIAogICBkZWYgdGVzdERlZmF1bHRPdXRwdXRGaWxlKHNlbGYpOgog
ICAgICIiIgpAQCAtMTQyLDE1ICsyMDYsMTYgQEAgZGVmIHRlc3REZWZhdWx0T3V0cHV0RmlsZShz
ZWxmKToKICAgICBvdXRwdXRfZmlsZSA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdl
dFRlbXBEaXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9ERUZBVUxU
X09VVFBVVF9GSUxFKQogICAgIGd0ZXN0X3Byb2dfcGF0aCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0
VGVzdEV4ZWN1dGFibGVQYXRoKAotICAgICAgICAiZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCIpCisg
ICAgICAgICdndGVzdF9ub190ZXN0X3VuaXR0ZXN0JykKICAgICB0cnk6CiAgICAgICBvcy5yZW1v
dmUob3V0cHV0X2ZpbGUpCi0gICAgZXhjZXB0IE9TRXJyb3IsIGU6CisgICAgZXhjZXB0IE9TRXJy
b3I6CisgICAgICBlID0gc3lzLmV4Y19pbmZvKClbMV0KICAgICAgIGlmIGUuZXJybm8gIT0gZXJy
bm8uRU5PRU5UOgogICAgICAgICByYWlzZQogCiAgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3Vi
cHJvY2VzcygKLSAgICAgICAgW2d0ZXN0X3Byb2dfcGF0aCwgIiVzPXhtbCIgJSBHVEVTVF9PVVRQ
VVRfRkxBR10sCisgICAgICAgIFtndGVzdF9wcm9nX3BhdGgsICclcz14bWwnICUgR1RFU1RfT1VU
UFVUX0ZMQUddLAogICAgICAgICB3b3JraW5nX2Rpcj1ndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBE
aXIoKSkKICAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCiAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
MCwgcC5leGl0X2NvZGUpCkBAIC0xNjMsNjAgKzIyOCw3OSBAQCBkZWYgdGVzdFN1cHByZXNzZWRY
bWxPdXRwdXQoc2VsZik6CiAgICAgIiIiCiAKICAgICB4bWxfcGF0aCA9IG9zLnBhdGguam9pbihn
dGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHVEVTVF9QUk9HUkFNX05BTUUgKyAib3V0LnhtbCIpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR1RFU1RfUFJPR1JBTV9OQU1FICsgJ291dC54bWwnKQogICAgIGlmIG9zLnBhdGguaXNm
aWxlKHhtbF9wYXRoKToKICAgICAgIG9zLnJlbW92ZSh4bWxfcGF0aCkKIAotICAgIGd0ZXN0X3By
b2dfcGF0aCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKEdURVNUX1BS
T0dSQU1fTkFNRSkKLQotICAgIGNvbW1hbmQgPSBbZ3Rlc3RfcHJvZ19wYXRoLAotICAgICAgICAg
ICAgICAgIiVzPXhtbDolcyIgJSAoR1RFU1RfT1VUUFVUX0ZMQUcsIHhtbF9wYXRoKSwKLSAgICAg
ICAgICAgICAgICItLXNodXRfZG93bl94bWwiXQorICAgIGNvbW1hbmQgPSBbR1RFU1RfUFJPR1JB
TV9QQVRILAorICAgICAgICAgICAgICAgJyVzPXhtbDolcycgJSAoR1RFU1RfT1VUUFVUX0ZMQUcs
IHhtbF9wYXRoKSwKKyAgICAgICAgICAgICAgICctLXNodXRfZG93bl94bWwnXQogICAgIHAgPSBn
dGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKICAgICBpZiBwLnRlcm1pbmF0ZWRf
Ynlfc2lnbmFsOgotICAgICAgc2VsZi5hc3NlcnRfKEZhbHNlLAotICAgICAgICAgICAgICAgICAg
ICIlcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAlZCIgJSAoZ3Rlc3RfcHJvZ19uYW1lLCBwLnNpZ25h
bCkpCisgICAgICAjIHAuc2lnbmFsIGlzIGF2YWxhYmxlIG9ubHkgaWYgcC50ZXJtaW5hdGVkX2J5
X3NpZ25hbCBpcyBUcnVlLgorICAgICAgc2VsZi5hc3NlcnRGYWxzZSgKKyAgICAgICAgICBwLnRl
cm1pbmF0ZWRfYnlfc2lnbmFsLAorICAgICAgICAgICclcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAl
ZCcgJSAoR1RFU1RfUFJPR1JBTV9OQU1FLCBwLnNpZ25hbCkpCiAgICAgZWxzZToKICAgICAgIHNl
bGYuYXNzZXJ0XyhwLmV4aXRlZCkKICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIHAuZXhpdF9j
b2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgIiclcycgZXhpdGVkIHdpdGggY29kZSAlcywg
d2hpY2ggZG9lc24ndCBtYXRjaCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAidGhlIGV4cGVj
dGVkIGV4aXQgY29kZSAlcy4iCisgICAgICAgICAgICAgICAgICAgICAgICAndGhlIGV4cGVjdGVk
IGV4aXQgY29kZSAlcy4nCiAgICAgICAgICAgICAgICAgICAgICAgICAlIChjb21tYW5kLCBwLmV4
aXRfY29kZSwgMSkpCiAKICAgICBzZWxmLmFzc2VydF8obm90IG9zLnBhdGguaXNmaWxlKHhtbF9w
YXRoKSkKIAorICBkZWYgdGVzdEZpbHRlcmVkVGVzdFhtbE91dHB1dChzZWxmKToKKyAgICAiIiJW
ZXJpZmllcyBYTUwgb3V0cHV0IHdoZW4gYSBmaWx0ZXIgaXMgYXBwbGllZC4KIAotICBkZWYgX1Rl
c3RYbWxPdXRwdXQoc2VsZiwgZ3Rlc3RfcHJvZ19uYW1lLCBleHBlY3RlZF94bWwsIGV4cGVjdGVk
X2V4aXRfY29kZSk6CisgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGV4ZWN1dGVzIG9ubHkg
c29tZSB0ZXN0cyBhbmQgdmVyaWZpZXMgdGhhdAorICAgIG5vbi1zZWxlY3RlZCB0ZXN0cyBkbyBu
b3Qgc2hvdyB1cCBpbiB0aGUgWE1MIG91dHB1dC4KICAgICAiIiIKLSAgICBBc3NlcnRzIHRoYXQg
dGhlIFhNTCBkb2N1bWVudCBnZW5lcmF0ZWQgYnkgcnVubmluZyB0aGUgcHJvZ3JhbQotICAgIGd0
ZXN0X3Byb2dfbmFtZSBtYXRjaGVzIGV4cGVjdGVkX3htbCwgYSBzdHJpbmcgY29udGFpbmluZyBh
bm90aGVyCi0gICAgWE1MIGRvY3VtZW50LiAgRnVydGhlcm1vcmUsIHRoZSBwcm9ncmFtJ3MgZXhp
dCBjb2RlIG11c3QgYmUKLSAgICBleHBlY3RlZF9leGl0X2NvZGUuCisKKyAgICBzZWxmLl9UZXN0
WG1sT3V0cHV0KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQRUNURURfRklMVEVSRURfVEVTVF9YTUws
IDAsCisgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9hcmdzPVsnJXM9U3VjY2Vzc2Z1bFRl
c3QuKicgJSBHVEVTVF9GSUxURVJfRkxBR10pCisKKyAgZGVmIF9HZXRYbWxPdXRwdXQoc2VsZiwg
Z3Rlc3RfcHJvZ19uYW1lLCBleHRyYV9hcmdzLCBleHBlY3RlZF9leGl0X2NvZGUpOgorICAgICIi
IgorICAgIFJldHVybnMgdGhlIHhtbCBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgdGhlIHBy
b2dyYW0gZ3Rlc3RfcHJvZ19uYW1lLgorICAgIEZ1cnRoZXJtb3JlLCB0aGUgcHJvZ3JhbSdzIGV4
aXQgY29kZSBtdXN0IGJlIGV4cGVjdGVkX2V4aXRfY29kZS4KICAgICAiIiIKICAgICB4bWxfcGF0
aCA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBndGVzdF9wcm9nX25hbWUgKyAib3V0LnhtbCIpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ3Rlc3RfcHJvZ19uYW1lICsgJ291dC54bWwnKQogICAgIGd0
ZXN0X3Byb2dfcGF0aCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKGd0
ZXN0X3Byb2dfbmFtZSkKIAotICAgIGNvbW1hbmQgPSBbZ3Rlc3RfcHJvZ19wYXRoLCAiJXM9eG1s
OiVzIiAlIChHVEVTVF9PVVRQVVRfRkxBRywgeG1sX3BhdGgpXQorICAgIGNvbW1hbmQgPSAoW2d0
ZXN0X3Byb2dfcGF0aCwgJyVzPXhtbDolcycgJSAoR1RFU1RfT1VUUFVUX0ZMQUcsIHhtbF9wYXRo
KV0gKworICAgICAgICAgICAgICAgZXh0cmFfYXJncykKICAgICBwID0gZ3Rlc3RfdGVzdF91dGls
cy5TdWJwcm9jZXNzKGNvbW1hbmQpCiAgICAgaWYgcC50ZXJtaW5hdGVkX2J5X3NpZ25hbDoKICAg
ICAgIHNlbGYuYXNzZXJ0XyhGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAiJXMgd2FzIGtpbGxl
ZCBieSBzaWduYWwgJWQiICUgKGd0ZXN0X3Byb2dfbmFtZSwgcC5zaWduYWwpKQorICAgICAgICAg
ICAgICAgICAgICclcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAlZCcgJSAoZ3Rlc3RfcHJvZ19uYW1l
LCBwLnNpZ25hbCkpCiAgICAgZWxzZToKICAgICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX2V4aXRfY29kZSwgcC5leGl0X2NvZGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyBleGl0ZWQgd2l0aCBjb2RlICVzLCB3aGljaCBk
b2Vzbid0IG1hdGNoICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZXhwZWN0ZWQgZXhp
dCBjb2RlICVzLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgZXhwZWN0ZWQgZXhpdCBj
b2RlICVzLicKICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvbW1hbmQsIHAuZXhpdF9jb2Rl
LCBleHBlY3RlZF9leGl0X2NvZGUpKQorICAgIGFjdHVhbCA9IG1pbmlkb20ucGFyc2UoeG1sX3Bh
dGgpCisgICAgcmV0dXJuIGFjdHVhbAogCisgIGRlZiBfVGVzdFhtbE91dHB1dChzZWxmLCBndGVz
dF9wcm9nX25hbWUsIGV4cGVjdGVkX3htbCwKKyAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
X2V4aXRfY29kZSwgZXh0cmFfYXJncz1Ob25lKToKKyAgICAiIiIKKyAgICBBc3NlcnRzIHRoYXQg
dGhlIFhNTCBkb2N1bWVudCBnZW5lcmF0ZWQgYnkgcnVubmluZyB0aGUgcHJvZ3JhbQorICAgIGd0
ZXN0X3Byb2dfbmFtZSBtYXRjaGVzIGV4cGVjdGVkX3htbCwgYSBzdHJpbmcgY29udGFpbmluZyBh
bm90aGVyCisgICAgWE1MIGRvY3VtZW50LiAgRnVydGhlcm1vcmUsIHRoZSBwcm9ncmFtJ3MgZXhp
dCBjb2RlIG11c3QgYmUKKyAgICBleHBlY3RlZF9leGl0X2NvZGUuCisgICAgIiIiCisKKyAgICBh
Y3R1YWwgPSBzZWxmLl9HZXRYbWxPdXRwdXQoZ3Rlc3RfcHJvZ19uYW1lLCBleHRyYV9hcmdzIG9y
IFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGUp
CiAgICAgZXhwZWN0ZWQgPSBtaW5pZG9tLnBhcnNlU3RyaW5nKGV4cGVjdGVkX3htbCkKLSAgICBh
Y3R1YWwgICA9IG1pbmlkb20ucGFyc2UoeG1sX3BhdGgpCiAgICAgc2VsZi5Ob3JtYWxpemVYbWwo
YWN0dWFsLmRvY3VtZW50RWxlbWVudCkKICAgICBzZWxmLkFzc2VydEVxdWl2YWxlbnROb2Rlcyhl
eHBlY3RlZC5kb2N1bWVudEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWN0dWFsLmRvY3VtZW50RWxlbWVudCkKICAgICBleHBlY3RlZC51bmxpbmsoKQotICAgIGFjdHVh
bCAgLnVubGluaygpCi0KKyAgICBhY3R1YWwudW5saW5rKCkKIAogCiBpZiBfX25hbWVfXyA9PSAn
X19tYWluX18nOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MKaW5kZXggZmMwN2VmNDZiZDY2N2FhOTJlNWRh
ZjdmMjAyZWZjZDc2MzY2YmY4YS4uNDhiODc3MWI1MjQ2YzE0MWY0Y2RiYTBkOWZlOGEyZGM5YTZl
Nzc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxf
b3V0cHV0X3VuaXR0ZXN0Xy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjCkBAIC0zOCwxMyArMzgsMTYgQEAKIC8vIFRoaXMg
cHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRlc3QuICBEb24ndCBy
dW4gaXQKIC8vIGRpcmVjdGx5LgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgogCiB1c2luZyA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0OwogdXNp
bmcgOjp0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3RX
aXRoUGFyYW07CiB1c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OwordXNpbmcgOjp0ZXN0aW5nOjpU
ZXN0OwordXNpbmcgOjp0ZXN0aW5nOjpWYWx1ZXM7CiAKLWNsYXNzIFN1Y2Nlc3NmdWxUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgU3VjY2Vzc2Z1bFRlc3QgOiBwdWJsaWMgVGVz
dCB7CiB9OwogCiBURVNUX0YoU3VjY2Vzc2Z1bFRlc3QsIFN1Y2NlZWRzKSB7CkBAIC01MiwxNCAr
NTUsMTQgQEAgVEVTVF9GKFN1Y2Nlc3NmdWxUZXN0LCBTdWNjZWVkcykgewogICBBU1NFUlRfRVEo
MSwgMSk7CiB9CiAKLWNsYXNzIEZhaWxlZFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Citj
bGFzcyBGYWlsZWRUZXN0IDogcHVibGljIFRlc3QgewogfTsKIAogVEVTVF9GKEZhaWxlZFRlc3Qs
IEZhaWxzKSB7CiAgIEFTU0VSVF9FUSgxLCAyKTsKIH0KIAotY2xhc3MgRGlzYWJsZWRUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgRGlzYWJsZWRUZXN0IDogcHVibGljIFRlc3Qg
ewogfTsKIAogVEVTVF9GKERpc2FibGVkVGVzdCwgRElTQUJMRURfdGVzdF9ub3RfcnVuKSB7CkBA
IC05MSw3ICs5NCwxMCBAQCBURVNUKEludmFsaWRDaGFyYWN0ZXJzVGVzdCwgSW52YWxpZENoYXJh
Y3RlcnNJbk1lc3NhZ2UpIHsKICAgRkFJTCgpIDw8ICJJbnZhbGlkIGNoYXJhY3RlcnMgaW4gYnJh
Y2tldHMgW1x4MVx4Ml0iOwogfQogCi1jbGFzcyBQcm9wZXJ0eVJlY29yZGluZ1Rlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7CitjbGFzcyBQcm9wZXJ0eVJlY29yZGluZ1Rlc3QgOiBwdWJsaWMg
VGVzdCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgeyBSZWNvcmRQ
cm9wZXJ0eSgiU2V0VXBUZXN0Q2FzZSIsICJ5ZXMiKTsgfQorICBzdGF0aWMgdm9pZCBUZWFyRG93
blRlc3RDYXNlKCkgeyBSZWNvcmRQcm9wZXJ0eSgiVGVhckRvd25UZXN0Q2FzZSIsICJheWUiKTsg
fQogfTsKIAogVEVTVF9GKFByb3BlcnR5UmVjb3JkaW5nVGVzdCwgT25lUHJvcGVydHkpIHsKQEAg
LTExNywxMiArMTIzLDEyIEBAIFRFU1QoTm9GaXh0dXJlVGVzdCwgUmVjb3JkUHJvcGVydHkpIHsK
ICAgUmVjb3JkUHJvcGVydHkoImtleSIsICIxIik7CiB9CiAKLXZvaWQgRXh0ZXJuYWxVdGlsaXR5
VGhhdENhbGxzUmVjb3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBpbnQgdmFsdWUpIHsKK3Zv
aWQgRXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJp
bmcmIGtleSwgaW50IHZhbHVlKSB7CiAgIHRlc3Rpbmc6OlRlc3Q6OlJlY29yZFByb3BlcnR5KGtl
eSwgdmFsdWUpOwogfQogCi12b2lkIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFByb3Bl
cnR5KGNvbnN0IGNoYXIqIGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogdmFsdWUpIHsKK3ZvaWQgRXh0ZXJuYWxVdGlsaXR5VGhhdENh
bGxzUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSB7
CiAgIHRlc3Rpbmc6OlRlc3Q6OlJlY29yZFByb3BlcnR5KGtleSwgdmFsdWUpOwogfQogCkBAIC0x
MzQsNiArMTQwLDM1IEBAIFRFU1QoTm9GaXh0dXJlVGVzdCwgRXh0ZXJuYWxVdGlsaXR5VGhhdENh
bGxzUmVjb3JkU3RyaW5nVmFsdWVkUHJvcGVydHkpIHsKICAgRXh0ZXJuYWxVdGlsaXR5VGhhdENh
bGxzUmVjb3JkUHJvcGVydHkoImtleV9mb3JfdXRpbGl0eV9zdHJpbmciLCAiMSIpOwogfQogCisv
LyBWZXJpZmllcyB0aGF0IHRoZSB0ZXN0IHBhcmFtZXRlciB2YWx1ZSBpcyBvdXRwdXQgaW4gdGhl
ICd2YWx1ZV9wYXJhbScKKy8vIFhNTCBhdHRyaWJ1dGUgZm9yIHZhbHVlLXBhcmFtZXRlcml6ZWQg
dGVzdHMuCitjbGFzcyBWYWx1ZVBhcmFtVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4g
e307CitURVNUX1AoVmFsdWVQYXJhbVRlc3QsIEhhc1ZhbHVlUGFyYW1BdHRyaWJ1dGUpIHt9CitU
RVNUX1AoVmFsdWVQYXJhbVRlc3QsIEFub3RoZXJUZXN0VGhhdEhhc1ZhbHVlUGFyYW1BdHRyaWJ1
dGUpIHt9CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChTaW5nbGUsIFZhbHVlUGFyYW1UZXN0LCBW
YWx1ZXMoMzMsIDQyKSk7CisKKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAorLy8gVmVyaWZpZXMg
dGhhdCB0aGUgdHlwZSBwYXJhbWV0ZXIgbmFtZSBpcyBvdXRwdXQgaW4gdGhlICd0eXBlX3BhcmFt
JworLy8gWE1MIGF0dHJpYnV0ZSBmb3IgdHlwZWQgdGVzdHMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gY2xhc3MgVHlwZWRUZXN0IDogcHVibGljIFRlc3Qge307Cit0eXBlZGVmIHRlc3Rpbmc6OlR5
cGVzPGludCwgbG9uZz4gVHlwZWRUZXN0VHlwZXM7CitUWVBFRF9URVNUX0NBU0UoVHlwZWRUZXN0
LCBUeXBlZFRlc3RUeXBlcyk7CitUWVBFRF9URVNUKFR5cGVkVGVzdCwgSGFzVHlwZVBhcmFtQXR0
cmlidXRlKSB7fQorI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisvLyBWZXJp
ZmllcyB0aGF0IHRoZSB0eXBlIHBhcmFtZXRlciBuYW1lIGlzIG91dHB1dCBpbiB0aGUgJ3R5cGVf
cGFyYW0nCisvLyBYTUwgYXR0cmlidXRlIGZvciB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSA6IHB1
YmxpYyBUZXN0IHt9OworVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2Fz
ZSk7CitUWVBFRF9URVNUX1AoVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSwgSGFzVHlwZVBhcmFt
QXR0cmlidXRlKSB7fQorUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtZXRlcml6
ZWRUZXN0Q2FzZSwgSGFzVHlwZVBhcmFtQXR0cmlidXRlKTsKK3R5cGVkZWYgdGVzdGluZzo6VHlw
ZXM8aW50LCBsb25nPiBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlVHlwZXM7CitJTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUChTaW5nbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZVR5cGVzKTsKKyNlbmRpZgorCiBpbnQgbWFpbihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKICAgSW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwog
CkBAIC0xNDEsNSArMTc2LDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CiAg
ICAgVGVzdEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMgPSBVbml0VGVzdDo6R2V0SW5zdGFuY2Uo
KS0+bGlzdGVuZXJzKCk7CiAgICAgZGVsZXRlIGxpc3RlbmVycy5SZWxlYXNlKGxpc3RlbmVycy5k
ZWZhdWx0X3htbF9nZW5lcmF0b3IoKSk7CiAgIH0KKyAgdGVzdGluZzo6VGVzdDo6UmVjb3JkUHJv
cGVydHkoImFkX2hvY19wcm9wZXJ0eSIsICI0MiIpOwogICByZXR1cm4gUlVOX0FMTF9URVNUUygp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxf
dGVzdF91dGlscy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX3Rl
c3RfdXRpbHMucHkKaW5kZXggYzgzYzNiN2VhNzliMmQ3NjJlZWQ2NjVlMmQ2MWRmOGI5ZWEwODQ0
My4uMzQxOTU2YjU0ZGRmZmZkYzdjZmU4Y2JjYTNmMGQ5YjE0OWMyZGIyNiAxMDA3NTUKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfdGVzdF91dGlscy5weQorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF90ZXN0X3V0aWxzLnB5CkBA
IC0zOSw4ICszOSw4IEBACiBpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwogCiAKLUdURVNUX09VVFBV
VF9GTEFHICAgICAgICAgPSAiLS1ndGVzdF9vdXRwdXQiCi1HVEVTVF9ERUZBVUxUX09VVFBVVF9G
SUxFID0gInRlc3RfZGV0YWlsLnhtbCIKK0dURVNUX09VVFBVVF9GTEFHICAgICAgICAgPSAnLS1n
dGVzdF9vdXRwdXQnCitHVEVTVF9ERUZBVUxUX09VVFBVVF9GSUxFID0gJ3Rlc3RfZGV0YWlsLnht
bCcKIAogY2xhc3MgR1Rlc3RYTUxUZXN0Q2FzZShndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToK
ICAgIiIiCkBAIC01OCw4ICs1OCw5IEBAIGRlZiBBc3NlcnRFcXVpdmFsZW50Tm9kZXMoc2VsZiwg
ZXhwZWN0ZWRfbm9kZSwgYWN0dWFsX25vZGUpOgogICAgICogIEl0IGhhcyB0aGUgc2FtZSB0YWcg
bmFtZSBhcyBleHBlY3RlZF9ub2RlLgogICAgICogIEl0IGhhcyB0aGUgc2FtZSBzZXQgb2YgYXR0
cmlidXRlcyBhcyBleHBlY3RlZF9ub2RlLCBlYWNoIHdpdGgKICAgICAgICB0aGUgc2FtZSB2YWx1
ZSBhcyB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgb2YgZXhwZWN0ZWRfbm9kZS4KLSAgICAg
ICBBbiBleGNlcHRpb24gaXMgYW55IGF0dHJpYnV0ZSBuYW1lZCAidGltZSIsIHdoaWNoIG5lZWRz
IG9ubHkgYmUKLSAgICAgICBjb252ZXJ0aWJsZSB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4K
KyAgICAgICBFeGNlcHRpb25zIGFyZSBhbnkgYXR0cmlidXRlIG5hbWVkICJ0aW1lIiwgd2hpY2gg
bmVlZHMgb25seSBiZQorICAgICAgIGNvbnZlcnRpYmxlIHRvIGEgZmxvYXRpbmctcG9pbnQgbnVt
YmVyIGFuZCBhbnkgYXR0cmlidXRlIG5hbWVkCisgICAgICAgInR5cGVfcGFyYW0iIHdoaWNoIG9u
bHkgaGFzIHRvIGJlIG5vbi1lbXB0eS4KICAgICAqICBJdCBoYXMgYW4gZXF1aXZhbGVudCBzZXQg
b2YgY2hpbGQgbm9kZXMgKGluY2x1ZGluZyBlbGVtZW50cyBhbmQKICAgICAgICBDREFUQSBzZWN0
aW9ucykgYXMgZXhwZWN0ZWRfbm9kZS4gIE5vdGUgdGhhdCB3ZSBpZ25vcmUgdGhlCiAgICAgICAg
b3JkZXIgb2YgdGhlIGNoaWxkcmVuIGFzIHRoZXkgYXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlIGlu
IGFueQpAQCAtNzksMzQgKzgwLDM4IEBAIGRlZiBBc3NlcnRFcXVpdmFsZW50Tm9kZXMoc2VsZiwg
ZXhwZWN0ZWRfbm9kZSwgYWN0dWFsX25vZGUpOgogICAgIGFjdHVhbF9hdHRyaWJ1dGVzICAgPSBh
Y3R1YWxfbm9kZSAgLmF0dHJpYnV0ZXMKICAgICBzZWxmLmFzc2VydEVxdWFscygKICAgICAgICAg
ZXhwZWN0ZWRfYXR0cmlidXRlcy5sZW5ndGgsIGFjdHVhbF9hdHRyaWJ1dGVzLmxlbmd0aCwKLSAg
ICAgICAgImF0dHJpYnV0ZSBudW1iZXJzIGRpZmZlciBpbiBlbGVtZW50ICIgKyBhY3R1YWxfbm9k
ZS50YWdOYW1lKQorICAgICAgICAnYXR0cmlidXRlIG51bWJlcnMgZGlmZmVyIGluIGVsZW1lbnQg
JXM6XG5FeHBlY3RlZDogJXJcbkFjdHVhbDogJXInICUgKAorICAgICAgICAgICAgYWN0dWFsX25v
ZGUudGFnTmFtZSwgZXhwZWN0ZWRfYXR0cmlidXRlcy5rZXlzKCksCisgICAgICAgICAgICBhY3R1
YWxfYXR0cmlidXRlcy5rZXlzKCkpKQogICAgIGZvciBpIGluIHJhbmdlKGV4cGVjdGVkX2F0dHJp
YnV0ZXMubGVuZ3RoKToKICAgICAgIGV4cGVjdGVkX2F0dHIgPSBleHBlY3RlZF9hdHRyaWJ1dGVz
Lml0ZW0oaSkKICAgICAgIGFjdHVhbF9hdHRyICAgPSBhY3R1YWxfYXR0cmlidXRlcy5nZXQoZXhw
ZWN0ZWRfYXR0ci5uYW1lKQogICAgICAgc2VsZi5hc3NlcnRfKAogICAgICAgICAgIGFjdHVhbF9h
dHRyIGlzIG5vdCBOb25lLAotICAgICAgICAgICJleHBlY3RlZCBhdHRyaWJ1dGUgJXMgbm90IGZv
dW5kIGluIGVsZW1lbnQgJXMiICUKKyAgICAgICAgICAnZXhwZWN0ZWQgYXR0cmlidXRlICVzIG5v
dCBmb3VuZCBpbiBlbGVtZW50ICVzJyAlCiAgICAgICAgICAgKGV4cGVjdGVkX2F0dHIubmFtZSwg
YWN0dWFsX25vZGUudGFnTmFtZSkpCi0gICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZF9h
dHRyLnZhbHVlLCBhY3R1YWxfYXR0ci52YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICIg
dmFsdWVzIG9mIGF0dHJpYnV0ZSAlcyBpbiBlbGVtZW50ICVzIGRpZmZlciIgJQotICAgICAgICAg
ICAgICAgICAgICAgICAgKGV4cGVjdGVkX2F0dHIubmFtZSwgYWN0dWFsX25vZGUudGFnTmFtZSkp
CisgICAgICBzZWxmLmFzc2VydEVxdWFscygKKyAgICAgICAgICBleHBlY3RlZF9hdHRyLnZhbHVl
LCBhY3R1YWxfYXR0ci52YWx1ZSwKKyAgICAgICAgICAnIHZhbHVlcyBvZiBhdHRyaWJ1dGUgJXMg
aW4gZWxlbWVudCAlcyBkaWZmZXI6ICVzIHZzICVzJyAlCisgICAgICAgICAgKGV4cGVjdGVkX2F0
dHIubmFtZSwgYWN0dWFsX25vZGUudGFnTmFtZSwKKyAgICAgICAgICAgZXhwZWN0ZWRfYXR0ci52
YWx1ZSwgYWN0dWFsX2F0dHIudmFsdWUpKQogCiAgICAgZXhwZWN0ZWRfY2hpbGRyZW4gPSBzZWxm
Ll9HZXRDaGlsZHJlbihleHBlY3RlZF9ub2RlKQogICAgIGFjdHVhbF9jaGlsZHJlbiA9IHNlbGYu
X0dldENoaWxkcmVuKGFjdHVhbF9ub2RlKQogICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAogICAgICAg
ICBsZW4oZXhwZWN0ZWRfY2hpbGRyZW4pLCBsZW4oYWN0dWFsX2NoaWxkcmVuKSwKLSAgICAgICAg
Im51bWJlciBvZiBjaGlsZCBlbGVtZW50cyBkaWZmZXIgaW4gZWxlbWVudCAiICsgYWN0dWFsX25v
ZGUudGFnTmFtZSkKLSAgICBmb3IgY2hpbGRfaWQsIGNoaWxkIGluIGV4cGVjdGVkX2NoaWxkcmVu
Lml0ZXJpdGVtcygpOgorICAgICAgICAnbnVtYmVyIG9mIGNoaWxkIGVsZW1lbnRzIGRpZmZlciBp
biBlbGVtZW50ICcgKyBhY3R1YWxfbm9kZS50YWdOYW1lKQorICAgIGZvciBjaGlsZF9pZCwgY2hp
bGQgaW4gZXhwZWN0ZWRfY2hpbGRyZW4uaXRlbXMoKToKICAgICAgIHNlbGYuYXNzZXJ0XyhjaGls
ZF9pZCBpbiBhY3R1YWxfY2hpbGRyZW4sCiAgICAgICAgICAgICAgICAgICAgJzwlcz4gaXMgbm90
IGluIDwlcz4gKGluIGVsZW1lbnQgJXMpJyAlCiAgICAgICAgICAgICAgICAgICAgKGNoaWxkX2lk
LCBhY3R1YWxfY2hpbGRyZW4sIGFjdHVhbF9ub2RlLnRhZ05hbWUpKQogICAgICAgc2VsZi5Bc3Nl
cnRFcXVpdmFsZW50Tm9kZXMoY2hpbGQsIGFjdHVhbF9jaGlsZHJlbltjaGlsZF9pZF0pCiAKICAg
aWRlbnRpZnlpbmdfYXR0cmlidXRlID0gewotICAgICJ0ZXN0c3VpdGVzIjogIm5hbWUiLAotICAg
ICJ0ZXN0c3VpdGUiOiAibmFtZSIsCi0gICAgInRlc3RjYXNlIjogICJuYW1lIiwKLSAgICAiZmFp
bHVyZSI6ICAgIm1lc3NhZ2UiLAorICAgICd0ZXN0c3VpdGVzJzogJ25hbWUnLAorICAgICd0ZXN0
c3VpdGUnOiAnbmFtZScsCisgICAgJ3Rlc3RjYXNlJzogICduYW1lJywKKyAgICAnZmFpbHVyZSc6
ICAgJ21lc3NhZ2UnLAogICAgIH0KIAogICBkZWYgX0dldENoaWxkcmVuKHNlbGYsIGVsZW1lbnQp
OgpAQCAtMTI2LDIwICsxMzEsMjAgQEAgZGVmIF9HZXRDaGlsZHJlbihzZWxmLCBlbGVtZW50KToK
ICAgICBmb3IgY2hpbGQgaW4gZWxlbWVudC5jaGlsZE5vZGVzOgogICAgICAgaWYgY2hpbGQubm9k
ZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05PREU6CiAgICAgICAgIHNlbGYuYXNzZXJ0XyhjaGlsZC50
YWdOYW1lIGluIHNlbGYuaWRlbnRpZnlpbmdfYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAg
ICAgIkVuY291bnRlcmVkIHVua25vd24gZWxlbWVudCA8JXM+IiAlIGNoaWxkLnRhZ05hbWUpCisg
ICAgICAgICAgICAgICAgICAgICAnRW5jb3VudGVyZWQgdW5rbm93biBlbGVtZW50IDwlcz4nICUg
Y2hpbGQudGFnTmFtZSkKICAgICAgICAgY2hpbGRJRCA9IGNoaWxkLmdldEF0dHJpYnV0ZShzZWxm
LmlkZW50aWZ5aW5nX2F0dHJpYnV0ZVtjaGlsZC50YWdOYW1lXSkKICAgICAgICAgc2VsZi5hc3Nl
cnRfKGNoaWxkSUQgbm90IGluIGNoaWxkcmVuKQogICAgICAgICBjaGlsZHJlbltjaGlsZElEXSA9
IGNoaWxkCiAgICAgICBlbGlmIGNoaWxkLm5vZGVUeXBlIGluIFtOb2RlLlRFWFRfTk9ERSwgTm9k
ZS5DREFUQV9TRUNUSU9OX05PREVdOgotICAgICAgICBpZiAiZGV0YWlsIiBub3QgaW4gY2hpbGRy
ZW46CisgICAgICAgIGlmICdkZXRhaWwnIG5vdCBpbiBjaGlsZHJlbjoKICAgICAgICAgICBpZiAo
Y2hpbGQubm9kZVR5cGUgPT0gTm9kZS5DREFUQV9TRUNUSU9OX05PREUgb3IKICAgICAgICAgICAg
ICAgbm90IGNoaWxkLm5vZGVWYWx1ZS5pc3NwYWNlKCkpOgotICAgICAgICAgICAgY2hpbGRyZW5b
ImRldGFpbCJdID0gY2hpbGQub3duZXJEb2N1bWVudC5jcmVhdGVDREFUQVNlY3Rpb24oCisgICAg
ICAgICAgICBjaGlsZHJlblsnZGV0YWlsJ10gPSBjaGlsZC5vd25lckRvY3VtZW50LmNyZWF0ZUNE
QVRBU2VjdGlvbigKICAgICAgICAgICAgICAgICBjaGlsZC5ub2RlVmFsdWUpCiAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgY2hpbGRyZW5bImRldGFpbCJdLm5vZGVWYWx1ZSArPSBjaGlsZC5ub2Rl
VmFsdWUKKyAgICAgICAgICBjaGlsZHJlblsnZGV0YWlsJ10ubm9kZVZhbHVlICs9IGNoaWxkLm5v
ZGVWYWx1ZQogICAgICAgZWxzZToKLSAgICAgICAgc2VsZi5mYWlsKCJFbmNvdW50ZXJlZCB1bmV4
cGVjdGVkIG5vZGUgdHlwZSAlZCIgJSBjaGlsZC5ub2RlVHlwZSkKKyAgICAgICAgc2VsZi5mYWls
KCdFbmNvdW50ZXJlZCB1bmV4cGVjdGVkIG5vZGUgdHlwZSAlZCcgJSBjaGlsZC5ub2RlVHlwZSkK
ICAgICByZXR1cm4gY2hpbGRyZW4KIAogICBkZWYgTm9ybWFsaXplWG1sKHNlbGYsIGVsZW1lbnQp
OgpAQCAtMTUwLDIzICsxNTUsNDAgQEAgZGVmIE5vcm1hbGl6ZVhtbChzZWxmLCBlbGVtZW50KToK
ICAgICAqICBUaGUgInRpbWUiIGF0dHJpYnV0ZSBvZiA8dGVzdHN1aXRlcz4sIDx0ZXN0c3VpdGU+
IGFuZCA8dGVzdGNhc2U+CiAgICAgICAgZWxlbWVudHMgaXMgcmVwbGFjZWQgd2l0aCBhIHNpbmds
ZSBhc3RlcmlzaywgaWYgaXQgY29udGFpbnMKICAgICAgICBvbmx5IGRpZ2l0IGNoYXJhY3RlcnMu
Ci0gICAgKiAgVGhlIGxpbmUgbnVtYmVyIHJlcG9ydGVkIGluIHRoZSBmaXJzdCBsaW5lIG9mIHRo
ZSAibWVzc2FnZSIKLSAgICAgICBhdHRyaWJ1dGUgb2YgPGZhaWx1cmU+IGVsZW1lbnRzIGlzIHJl
cGxhY2VkIHdpdGggYSBzaW5nbGUgYXN0ZXJpc2suCisgICAgKiAgVGhlICJ0aW1lc3RhbXAiIGF0
dHJpYnV0ZSBvZiA8dGVzdHN1aXRlcz4gZWxlbWVudHMgaXMgcmVwbGFjZWQgd2l0aCBhCisgICAg
ICAgc2luZ2xlIGFzdGVyaXNrLCBpZiBpdCBjb250YWlucyBhIHZhbGlkIElTTzg2MDEgZGF0ZXRp
bWUgdmFsdWUuCisgICAgKiAgVGhlICJ0eXBlX3BhcmFtIiBhdHRyaWJ1dGUgb2YgPHRlc3RjYXNl
PiBlbGVtZW50cyBpcyByZXBsYWNlZCB3aXRoIGEKKyAgICAgICBzaW5nbGUgYXN0ZXJpc2sgKGlm
IGl0IHNuIG5vbi1lbXB0eSkgYXMgaXQgaXMgdGhlIHR5cGUgbmFtZSByZXR1cm5lZAorICAgICAg
IGJ5IHRoZSBjb21waWxlciBhbmQgaXMgcGxhdGZvcm0gZGVwZW5kZW50LgorICAgICogIFRoZSBs
aW5lIGluZm8gcmVwb3J0ZWQgaW4gdGhlIGZpcnN0IGxpbmUgb2YgdGhlICJtZXNzYWdlIgorICAg
ICAgIGF0dHJpYnV0ZSBhbmQgQ0RBVEEgc2VjdGlvbiBvZiA8ZmFpbHVyZT4gZWxlbWVudHMgaXMg
cmVwbGFjZWQgd2l0aCB0aGUKKyAgICAgICBmaWxlJ3MgYmFzZW5hbWUgYW5kIGEgc2luZ2xlIGFz
dGVyaXNrIGZvciB0aGUgbGluZSBudW1iZXIuCiAgICAgKiAgVGhlIGRpcmVjdG9yeSBuYW1lcyBp
biBmaWxlIHBhdGhzIGFyZSByZW1vdmVkLgogICAgICogIFRoZSBzdGFjayB0cmFjZXMgYXJlIHJl
bW92ZWQuCiAgICAgIiIiCiAKLSAgICBpZiBlbGVtZW50LnRhZ05hbWUgaW4gKCJ0ZXN0c3VpdGVz
IiwgInRlc3RzdWl0ZSIsICJ0ZXN0Y2FzZSIpOgotICAgICAgdGltZSA9IGVsZW1lbnQuZ2V0QXR0
cmlidXRlTm9kZSgidGltZSIpCi0gICAgICB0aW1lLnZhbHVlID0gcmUuc3ViKHIiXlxkKyhcLlxk
Kyk/JCIsICIqIiwgdGltZS52YWx1ZSkKLSAgICBlbGlmIGVsZW1lbnQudGFnTmFtZSA9PSAiZmFp
bHVyZSI6CisgICAgaWYgZWxlbWVudC50YWdOYW1lID09ICd0ZXN0c3VpdGVzJzoKKyAgICAgIHRp
bWVzdGFtcCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlTm9kZSgndGltZXN0YW1wJykKKyAgICAgIHRp
bWVzdGFtcC52YWx1ZSA9IHJlLnN1YihyJ15cZHs0fS1cZFxkLVxkXGRUXGRcZDpcZFxkOlxkXGQk
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKicsIHRpbWVzdGFtcC52YWx1ZSkK
KyAgICBpZiBlbGVtZW50LnRhZ05hbWUgaW4gKCd0ZXN0c3VpdGVzJywgJ3Rlc3RzdWl0ZScsICd0
ZXN0Y2FzZScpOgorICAgICAgdGltZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlTm9kZSgndGltZScp
CisgICAgICB0aW1lLnZhbHVlID0gcmUuc3ViKHInXlxkKyhcLlxkKyk/JCcsICcqJywgdGltZS52
YWx1ZSkKKyAgICAgIHR5cGVfcGFyYW0gPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoJ3R5cGVf
cGFyYW0nKQorICAgICAgaWYgdHlwZV9wYXJhbSBhbmQgdHlwZV9wYXJhbS52YWx1ZToKKyAgICAg
ICAgdHlwZV9wYXJhbS52YWx1ZSA9ICcqJworICAgIGVsaWYgZWxlbWVudC50YWdOYW1lID09ICdm
YWlsdXJlJzoKKyAgICAgIHNvdXJjZV9saW5lX3BhdCA9IHInXi4qWy9cXF0oLio6KVxkK1xuJwor
ICAgICAgIyBSZXBsYWNlcyB0aGUgc291cmNlIGxpbmUgaW5mb3JtYXRpb24gd2l0aCBhIG5vcm1h
bGl6ZWQgZm9ybS4KKyAgICAgIG1lc3NhZ2UgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoJ21l
c3NhZ2UnKQorICAgICAgbWVzc2FnZS52YWx1ZSA9IHJlLnN1Yihzb3VyY2VfbGluZV9wYXQsICdc
XDEqXG4nLCBtZXNzYWdlLnZhbHVlKQogICAgICAgZm9yIGNoaWxkIGluIGVsZW1lbnQuY2hpbGRO
b2RlczoKICAgICAgICAgaWYgY2hpbGQubm9kZVR5cGUgPT0gTm9kZS5DREFUQV9TRUNUSU9OX05P
REU6Ci0gICAgICAgICAgIyBSZW1vdmVzIHRoZSBzb3VyY2UgbGluZSBudW1iZXIuCi0gICAgICAg
ICAgY2RhdGEgPSByZS5zdWIociJeLipbL1xcXSguKjopXGQrXG4iLCAiXFwxKlxuIiwgY2hpbGQu
bm9kZVZhbHVlKQorICAgICAgICAgICMgUmVwbGFjZXMgdGhlIHNvdXJjZSBsaW5lIGluZm9ybWF0
aW9uIHdpdGggYSBub3JtYWxpemVkIGZvcm0uCisgICAgICAgICAgY2RhdGEgPSByZS5zdWIoc291
cmNlX2xpbmVfcGF0LCAnXFwxKlxuJywgY2hpbGQubm9kZVZhbHVlKQogICAgICAgICAgICMgUmVt
b3ZlcyB0aGUgYWN0dWFsIHN0YWNrIHRyYWNlLgotICAgICAgICAgIGNoaWxkLm5vZGVWYWx1ZSA9
IHJlLnN1YihyIlxuU3RhY2sgdHJhY2U6XG4oLnxcbikqIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiIsIGNkYXRhKQorICAgICAgICAgIGNoaWxkLm5vZGVWYWx1ZSA9IHJl
LnN1YihyJ1xuU3RhY2sgdHJhY2U6XG4oLnxcbikqJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJycsIGNkYXRhKQogICAgIGZvciBjaGlsZCBpbiBlbGVtZW50LmNoaWxkTm9k
ZXM6CiAgICAgICBpZiBjaGlsZC5ub2RlVHlwZSA9PSBOb2RlLkVMRU1FTlRfTk9ERToKICAgICAg
ICAgc2VsZi5Ob3JtYWxpemVYbWwoY2hpbGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L3Byb2R1Y3Rpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
cHJvZHVjdGlvbi5oCmluZGV4IDhmMTZmZmZhMjQxNmM1NzE1M2ZhYjNlMDk3ZDEzNGFmMWZiNGE5
YmMuLjk4ZmQ1ZTQ3NmM4ODRmYTE2YjQ3ODZhZDhhODg1MGNmNmU0YWE5YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5oCkBAIC0zNCw3ICszNCw3IEBACiAjaWZu
ZGVmIEdURVNUX1RFU1RfUFJPRFVDVElPTl9IXwogI2RlZmluZSBHVEVTVF9URVNUX1BST0RVQ1RJ
T05fSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0X3Byb2QuaD4KKyNpbmNsdWRlICJndGVzdC9n
dGVzdF9wcm9kLmgiCiAKIGNsYXNzIFByaXZhdGVDb2RlIHsKICBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0c191dGlsLnB5IGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ydW5fdGVzdHNfdXRpbC5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggOWU1NzkzMWViYTJjNjExZTBhMWY2MGZmZjRmMDk1MzllMTA3NjdhZC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0c191dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEs
NDY2ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDggR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3Ry
aWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlByb3ZpZGVzIGZhY2lsaXRpZXMgZm9yIHJ1
bm5pbmcgU0NvbnMtYnVpbHQgR29vZ2xlIFRlc3QvTW9jayB0ZXN0cy4iIiIKLQotCi1pbXBvcnQg
b3B0cGFyc2UKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2V0cwotaW1wb3J0IHN5cwot
Ci10cnk6Ci0gICMgc3Vicm9jZXNzIG1vZHVsZSBpcyBhIHByZWZlcmFibGUgd2F5IHRvIGludm9r
ZSBzdWJwcm9jZXNzZXMgYnV0IGl0IG1heQotICAjIG5vdCBiZSBhdmFpbGFibGUgb24gTWFjT1Mg
WCAxMC40LgotICAjIFN1cHByZXNzZXMgdGhlICdJbXBvcnQgbm90IGF0IHRoZSB0b3Agb2YgdGhl
IGZpbGUnIGxpbnQgY29tcGxhaW50LgotICAjIHB5bGludDogZGlzYWJsZS1tc2c9QzYyMDQKLSAg
aW1wb3J0IHN1YnByb2Nlc3MKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgc3VicHJvY2VzcyA9IE5v
bmUKLQotSEVMUF9NU0cgPSAiIiJSdW5zIHRoZSBzcGVjaWZpZWQgdGVzdHMgZm9yICUocHJvailz
LgotCi1TWU5PUFNJUwotICAgICAgIHJ1bl90ZXN0cy5weSBbT1BUSU9OXS4uLiBbQlVJTERfRElS
XS4uLiBbVEVTVF0uLi4KLQotREVTQ1JJUFRJT04KLSAgICAgICBSdW5zIHRoZSBzcGVjaWZpZWQg
dGVzdHMgKGVpdGhlciBiaW5hcnkgb3IgUHl0aG9uKSwgYW5kIHByaW50cyBhCi0gICAgICAgc3Vt
bWFyeSBvZiB0aGUgcmVzdWx0cy4gQlVJTERfRElSUyB3aWxsIGJlIHVzZWQgdG8gc2VhcmNoIGZv
ciB0aGUKLSAgICAgICBiaW5hcmllcy4gSWYgbm8gVEVTVHMgYXJlIHNwZWNpZmllZCwgYWxsIGJp
bmFyeSB0ZXN0cyBmb3VuZCBpbgotICAgICAgIEJVSUxEX0RJUnMgYW5kIGFsbCBQeXRob24gdGVz
dHMgZm91bmQgaW4gdGhlIGRpcmVjdG9yeSB0ZXN0LyAoaW4gdGhlCi0gICAgICAgJShwcm9qKXMg
cm9vdCkgYXJlIHJ1bi4KLQotICAgICAgIFRFU1QgaXMgYSBuYW1lIG9mIGVpdGhlciBhIGJpbmFy
eSBvciBhIFB5dGhvbiB0ZXN0LiBBIGJpbmFyeSB0ZXN0IGlzCi0gICAgICAgYW4gZXhlY3V0YWJs
ZSBmaWxlIG5hbWVkICpfdGVzdCBvciAqX3VuaXR0ZXN0ICh3aXRoIHRoZSAuZXhlCi0gICAgICAg
ZXh0ZW5zaW9uIG9uIFdpbmRvd3MpIEEgUHl0aG9uIHRlc3QgaXMgYSBzY3JpcHQgbmFtZWQgKl90
ZXN0LnB5IG9yCi0gICAgICAgKl91bml0dGVzdC5weS4KLQotT1BUSU9OUwotICAgICAgIC1oLCAt
LWhlbHAKLSAgICAgICAgICAgICAgUHJpbnQgdGhpcyBoZWxwIG1lc3NhZ2UuCi0gICAgICAgLWMg
Q09ORklHVVJBVElPTlMKLSAgICAgICAgICAgICAgU3BlY2lmeSBidWlsZCBkaXJlY3RvcmllcyB2
aWEgYnVpbGQgY29uZmlndXJhdGlvbnMuCi0gICAgICAgICAgICAgIENPTkZJR1VSQVRJT05TIGlz
IGVpdGhlciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGJ1aWxkCi0gICAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb25zIG9yICdhbGwnLiBFYWNoIGNvbmZpZ3VyYXRpb24gaXMgZXF1aXZhbGVudCB0
bwotICAgICAgICAgICAgICBhZGRpbmcgJ3Njb25zL2J1aWxkLzxjb25maWd1cmF0aW9uPi8lKHBy
b2opcy9zY29ucycgdG8gQlVJTERfRElScy4KLSAgICAgICAgICAgICAgU3BlY2lmeWluZyAtYz1h
bGwgaXMgZXF1aXZhbGVudCB0byBwcm92aWRpbmcgYWxsIGRpcmVjdG9yaWVzCi0gICAgICAgICAg
ICAgIGxpc3RlZCBpbiBLTk9XTiBCVUlMRCBESVJFQ1RPUklFUyBzZWN0aW9uIGJlbG93LgotICAg
ICAgIC1hCi0gICAgICAgICAgICAgIEVxdWl2YWxlbnQgdG8gLWM9YWxsCi0gICAgICAgLWIKLSAg
ICAgICAgICAgICAgRXF1aXZhbGVudCB0byAtYz1hbGwgd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQg
dGhlIHNjcmlwdCB3aWxsIG5vdAotICAgICAgICAgICAgICBmYWlsIGlmIHNvbWUgb2YgdGhlIEtO
T1dOIEJVSUxEIERJUkVDVE9SSUVTIGRvIG5vdCBleGlzdHM7IHRoZQotICAgICAgICAgICAgICBz
Y3JpcHQgd2lsbCBzaW1wbHkgbm90IHJ1biB0aGUgdGVzdHMgdGhlcmUuICdiJyBzdGFuZHMgZm9y
Ci0gICAgICAgICAgICAgICdidWlsdCBkaXJlY3RvcmllcycuCi0KLVJFVFVSTiBWQUxVRQotICAg
ICAgIFJldHVybnMgMCBpZiBhbGwgdGVzdHMgYXJlIHN1Y2Nlc3NmdWw7IG90aGVyd2lzZSByZXR1
cm5zIDEuCi0KLUVYQU1QTEVTCi0gICAgICAgcnVuX3Rlc3RzLnB5Ci0gICAgICAgICAgICAgIFJ1
bnMgYWxsIHRlc3RzIGZvciB0aGUgZGVmYXVsdCBidWlsZCBjb25maWd1cmF0aW9uLgotICAgICAg
IHJ1bl90ZXN0cy5weSAtYQotICAgICAgICAgICAgICBSdW5zIGFsbCB0ZXN0cyB3aXRoIGJpbmFy
aWVzIGluIEtOT1dOIEJVSUxEIERJUkVDVE9SSUVTLgotICAgICAgIHJ1bl90ZXN0cy5weSAtYgot
ICAgICAgICAgICAgICBSdW5zIGFsbCB0ZXN0cyBpbiBLTk9XTiBCVUlMRCBESVJFQ1RPUklFUyB0
aGF0IGhhdmUgYmVlbgotICAgICAgICAgICAgICBidWlsdC4KLSAgICAgICBydW5fdGVzdHMucHkg
Zm9vLwotICAgICAgICAgICAgICBSdW5zIGFsbCB0ZXN0cyBpbiB0aGUgZm9vLyBkaXJlY3Rvcnkg
YW5kIGFsbCBQeXRob24gdGVzdHMgaW4KLSAgICAgICAgICAgICAgdGhlIGRpcmVjdG9yeSB0ZXN0
LiBUaGUgUHl0aG9uIHRlc3RzIGFyZSBpbnN0cnVjdGVkIHRvIGxvb2sKLSAgICAgICAgICAgICAg
Zm9yIGJpbmFyaWVzIGluIGZvby8uCi0gICAgICAgcnVuX3Rlc3RzLnB5IGJhcl90ZXN0LmV4ZSB0
ZXN0L2Jhel90ZXN0LmV4ZSBmb28vIGJhci8KLSAgICAgICAgICAgICAgUnVucyBmb28vYmFyX3Rl
c3QuZXhlLCBiYXIvYmFyX3Rlc3QuZXhlLCBmb28vYmF6X3Rlc3QuZXhlLCBhbmQKLSAgICAgICAg
ICAgICAgYmFyL2Jhel90ZXN0LmV4ZS4KLSAgICAgICBydW5fdGVzdHMucHkgZm9vIGJhciB0ZXN0
L2Zvb190ZXN0LnB5Ci0gICAgICAgICAgICAgIFJ1bnMgdGVzdC9mb29fdGVzdC5weSB0d2ljZSBp
bnN0cnVjdGluZyBpdCB0byBsb29rIGZvciBpdHMKLSAgICAgICAgICAgICAgdGVzdCBiaW5hcmll
cyBpbiB0aGUgZGlyZWN0b3JpZXMgZm9vIGFuZCBiYXIsCi0gICAgICAgICAgICAgIGNvcnJlc3Bv
bmRpbmdseS4KLQotS05PV04gQlVJTEQgRElSRUNUT1JJRVMKLSAgICAgIHJ1bl90ZXN0cy5weSBr
bm93cyBhYm91dCBkaXJlY3RvcmllcyB3aGVyZSB0aGUgU0NvbnMgYnVpbGQgc2NyaXB0Ci0gICAg
ICBkZXBvc2l0cyBpdHMgcHJvZHVjdHMuIFRoZXNlIGFyZSB0aGUgZGlyZWN0b3JpZXMgd2hlcmUg
cnVuX3Rlc3RzLnB5Ci0gICAgICB3aWxsIGJlIGxvb2tpbmcgZm9yIGl0cyBiaW5hcmllcy4gQ3Vy
cmVudGx5LCAlKHByb2opcydzIFNDb25zdHJ1Y3QgZmlsZQotICAgICAgZGVmaW5lcyB0aGVtIGFz
IGZvbGxvd3MgKHRoZSBkZWZhdWx0IGJ1aWxkIGRpcmVjdG9yeSBpcyB0aGUgZmlyc3Qgb25lCi0g
ICAgICBsaXN0ZWQgaW4gZWFjaCBncm91cCk6Ci0gICAgICBPbiBXaW5kb3dzOgotICAgICAgICAg
ICAgICA8JShwcm9qKXMgcm9vdD4vc2NvbnMvYnVpbGQvd2luLWRiZzgvJShwcm9qKXMvc2NvbnMv
Ci0gICAgICAgICAgICAgIDwlKHByb2opcyByb290Pi9zY29ucy9idWlsZC93aW4tb3B0OC8lKHBy
b2opcy9zY29ucy8KLSAgICAgIE9uIE1hYzoKLSAgICAgICAgICAgICAgPCUocHJvailzIHJvb3Q+
L3Njb25zL2J1aWxkL21hYy1kYmcvJShwcm9qKXMvc2NvbnMvCi0gICAgICAgICAgICAgIDwlKHBy
b2opcyByb290Pi9zY29ucy9idWlsZC9tYWMtb3B0LyUocHJvailzL3Njb25zLwotICAgICAgT24g
b3RoZXIgcGxhdGZvcm1zOgotICAgICAgICAgICAgICA8JShwcm9qKXMgcm9vdD4vc2NvbnMvYnVp
bGQvZGJnLyUocHJvailzL3Njb25zLwotICAgICAgICAgICAgICA8JShwcm9qKXMgcm9vdD4vc2Nv
bnMvYnVpbGQvb3B0LyUocHJvailzL3Njb25zLyIiIgotCi1JU19XSU5ET1dTID0gb3MubmFtZSA9
PSAnbnQnCi1JU19NQUMgPSBvcy5uYW1lID09ICdwb3NpeCcgYW5kIG9zLnVuYW1lKClbMF0gPT0g
J0RhcndpbicKLUlTX0NZR1dJTiA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBhbmQgJ0NZR1dJTicgaW4g
b3MudW5hbWUoKVswXQotCi0jIERlZmluaXRpb24gb2YgQ09ORklHUyBtdXN0IG1hdGNoIHRoYXQg
b2YgdGhlIGJ1aWxkIGRpcmVjdG9yeSBuYW1lcyBpbiB0aGUKLSMgU0NvbnN0cnVjdCBzY3JpcHQu
IFRoZSBmaXJzdCBsaXN0IGl0ZW0gaXMgdGhlIGRlZmF1bHQgYnVpbGQgY29uZmlndXJhdGlvbi4K
LWlmIElTX1dJTkRPV1M6Ci0gIENPTkZJR1MgPSAoJ3dpbi1kYmc4JywgJ3dpbi1vcHQ4JykKLWVs
aWYgSVNfTUFDOgotICBDT05GSUdTID0gKCdtYWMtZGJnJywgJ21hYy1vcHQnKQotZWxzZToKLSAg
Q09ORklHUyA9ICgnZGJnJywgJ29wdCcpCi0KLWlmIElTX1dJTkRPV1Mgb3IgSVNfQ1lHV0lOOgot
ICBQWVRIT05fVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocidfKHVuaXQpP3Rlc3RcLnB5JCcsIHJl
LklHTk9SRUNBU0UpCi0gIEJJTkFSWV9URVNUX1JFR0VYID0gcmUuY29tcGlsZShyJ18odW5pdCk/
dGVzdChcLmV4ZSk/JCcsIHJlLklHTk9SRUNBU0UpCi0gIEJJTkFSWV9URVNUX1NFQVJDSF9SRUdF
WCA9IHJlLmNvbXBpbGUocidfKHVuaXQpP3Rlc3RcLmV4ZSQnLCByZS5JR05PUkVDQVNFKQotZWxz
ZToKLSAgUFlUSE9OX1RFU1RfUkVHRVggPSByZS5jb21waWxlKHInXyh1bml0KT90ZXN0XC5weSQn
KQotICBCSU5BUllfVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocidfKHVuaXQpP3Rlc3QkJykKLSAg
QklOQVJZX1RFU1RfU0VBUkNIX1JFR0VYID0gQklOQVJZX1RFU1RfUkVHRVgKLQotCi1kZWYgX0dl
dEd0ZXN0QnVpbGREaXIoaW5qZWN0ZWRfb3MsIHNjcmlwdF9kaXIsIGNvbmZpZyk6Ci0gICIiIkNh
bGN1bGF0ZXMgcGF0aCB0byB0aGUgR29vZ2xlIFRlc3QgU0NvbnMgYnVpbGQgZGlyZWN0b3J5LiIi
IgotCi0gIHJldHVybiBpbmplY3RlZF9vcy5wYXRoLm5vcm1wYXRoKGluamVjdGVkX29zLnBhdGgu
am9pbihzY3JpcHRfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3Njb25zL2J1aWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdndGVzdC9zY29ucycp
KQotCi0KLWRlZiBfR2V0Q29uZmlnRnJvbUJ1aWxkRGlyKGJ1aWxkX2Rpcik6Ci0gICIiIkV4dHJh
Y3RzIHRoZSBjb25maWd1cmF0aW9uIG5hbWUgZnJvbSB0aGUgYnVpbGQgZGlyZWN0b3J5LiIiIgot
Ci0gICMgV2UgZG9uJ3Qgd2FudCB0byBkZXBlbmQgb24gYnVpbGRfZGlyIGNvbnRhaW5pbmcgdGhl
IGNvcnJlY3QgcGF0aAotICAjIHNlcGFyYXRvcnMuCi0gIG0gPSByZS5tYXRjaChyJy4qW1xcL10o
W15cXC9dKylbXFwvXVteXFwvXStbXFwvXXNjb25zW1xcL10/JCcsIGJ1aWxkX2RpcikKLSAgaWYg
bToKLSAgICByZXR1cm4gbS5ncm91cCgxKQotICBlbHNlOgotICAgIHByaW50ID4+c3lzLnN0ZGVy
ciwgKCclcyBpcyBhbiBpbnZhbGlkIGJ1aWxkIGRpcmVjdG9yeSB0aGF0IGRvZXMgbm90ICcKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAnY29ycmVzcG9uZCB0byBhbnkgY29uZmlndXJhdGlvbi4n
ICUgKGJ1aWxkX2RpciwpKQotICAgIHJldHVybiAnJwotCi0KLSMgQWxsIHBhdGhzIGluIHRoaXMg
c2NyaXB0IGFyZSBlaXRoZXIgYWJzb2x1dGUgb3IgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQKLSMg
d29ya2luZyBkaXJlY3RvcnksIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLgotY2xhc3MgVGVz
dFJ1bm5lcihvYmplY3QpOgotICAiIiJQcm92aWRlcyBmYWNpbGl0aWVzIGZvciBydW5uaW5nIFB5
dGhvbiBhbmQgYmluYXJ5IHRlc3RzIGZvciBHb29nbGUgVGVzdC4iIiIKLQotICBkZWYgX19pbml0
X18oc2VsZiwKLSAgICAgICAgICAgICAgIHNjcmlwdF9kaXIsCi0gICAgICAgICAgICAgICBidWls
ZF9kaXJfdmFyX25hbWU9J0dURVNUX0JVSUxEX0RJUicsCi0gICAgICAgICAgICAgICBpbmplY3Rl
ZF9vcz1vcywKLSAgICAgICAgICAgICAgIGluamVjdGVkX3N1YnByb2Nlc3M9c3VicHJvY2VzcywK
LSAgICAgICAgICAgICAgIGluamVjdGVkX2J1aWxkX2Rpcl9maW5kZXI9X0dldEd0ZXN0QnVpbGRE
aXIpOgotICAgICIiIkluaXRpYWxpemVzIGEgVGVzdFJ1bm5lciBpbnN0YW5jZS4KLQotICAgIEFy
Z3M6Ci0gICAgICBzY3JpcHRfZGlyOiAgICAgICAgICAgICAgICBGaWxlIHBhdGggdG8gdGhlIGNh
bGxpbmcgc2NyaXB0LgotICAgICAgYnVpbGRfZGlyX3Zhcl9uYW1lOiAgICAgICAgTmFtZSBvZiB0
aGUgZW52IHZhcmlhYmxlIHVzZWQgdG8gcGFzcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoZSBidWlsZCBkaXJlY3RvcnkgcGF0aCB0byB0aGUgaW52b2tlZAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMuCi0gICAgICBpbmplY3RlZF9vczogICAg
ICAgICAgICAgICBzdGFuZGFyZCBvcyBtb2R1bGUgb3IgYSBtb2NrL3N0dWIgZm9yCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nLgotICAgICAgaW5qZWN0ZWRfc3VicHJv
Y2VzczogICAgICAgc3RhbmRhcmQgc3VicHJvY2VzcyBtb2R1bGUgb3IgYSBtb2NrL3N0dWIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0ZXN0aW5nCi0gICAgICBpbmplY3Rl
ZF9idWlsZF9kaXJfZmluZGVyOiBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgdGhlIHBhdGggdG8K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBkaXJlY3RvcnkuCi0g
ICAgIiIiCi0KLSAgICBzZWxmLm9zID0gaW5qZWN0ZWRfb3MKLSAgICBzZWxmLnN1YnByb2Nlc3Mg
PSBpbmplY3RlZF9zdWJwcm9jZXNzCi0gICAgc2VsZi5idWlsZF9kaXJfZmluZGVyID0gaW5qZWN0
ZWRfYnVpbGRfZGlyX2ZpbmRlcgotICAgIHNlbGYuYnVpbGRfZGlyX3Zhcl9uYW1lID0gYnVpbGRf
ZGlyX3Zhcl9uYW1lCi0gICAgc2VsZi5zY3JpcHRfZGlyID0gc2NyaXB0X2RpcgotCi0gIGRlZiBf
R2V0QnVpbGREaXJGb3JDb25maWcoc2VsZiwgY29uZmlnKToKLSAgICAiIiJSZXR1cm5zIHRoZSBi
dWlsZCBkaXJlY3RvcnkgZm9yIGEgZ2l2ZW4gY29uZmlndXJhdGlvbi4iIiIKLQotICAgIHJldHVy
biBzZWxmLmJ1aWxkX2Rpcl9maW5kZXIoc2VsZi5vcywgc2VsZi5zY3JpcHRfZGlyLCBjb25maWcp
Ci0KLSAgZGVmIF9SdW4oc2VsZiwgYXJncyk6Ci0gICAgIiIiUnVucyB0aGUgZXhlY3V0YWJsZSB3
aXRoIGdpdmVuIGFyZ3MgKGFyZ3NbMF0gaXMgdGhlIGV4ZWN1dGFibGUgbmFtZSkuCi0KLSAgICBB
cmdzOgotICAgICAgYXJnczogQ29tbWFuZCBsaW5lIGFyZ3VtZW50cyBmb3IgdGhlIHByb2Nlc3Mu
Ci0KLSAgICBSZXR1cm5zOgotICAgICAgUHJvY2VzcydzIGV4aXQgY29kZSBpZiBpdCBleGl0cyBu
b3JtYWxseSwgb3IgLXNpZ25hbCBpZiB0aGUgcHJvY2VzcyBpcwotICAgICAga2lsbGVkIGJ5IGEg
c2lnbmFsLgotICAgICIiIgotCi0gICAgaWYgc2VsZi5zdWJwcm9jZXNzOgotICAgICAgcmV0dXJu
IHNlbGYuc3VicHJvY2Vzcy5Qb3BlbihhcmdzKS53YWl0KCkKLSAgICBlbHNlOgotICAgICAgcmV0
dXJuIHNlbGYub3Muc3Bhd252KHNlbGYub3MuUF9XQUlULCBhcmdzWzBdLCBhcmdzKQotCi0gIGRl
ZiBfUnVuQmluYXJ5VGVzdChzZWxmLCB0ZXN0KToKLSAgICAiIiJSdW5zIHRoZSBiaW5hcnkgdGVz
dCBnaXZlbiBpdHMgcGF0aC4KLQotICAgIEFyZ3M6Ci0gICAgICB0ZXN0OiBQYXRoIHRvIHRoZSB0
ZXN0IGJpbmFyeS4KLQotICAgIFJldHVybnM6Ci0gICAgICBQcm9jZXNzJ3MgZXhpdCBjb2RlIGlm
IGl0IGV4aXRzIG5vcm1hbGx5LCBvciAtc2lnbmFsIGlmIHRoZSBwcm9jZXNzIGlzCi0gICAgICBr
aWxsZWQgYnkgYSBzaWduYWwuCi0gICAgIiIiCi0KLSAgICByZXR1cm4gc2VsZi5fUnVuKFt0ZXN0
XSkKLQotICBkZWYgX1J1blB5dGhvblRlc3Qoc2VsZiwgdGVzdCwgYnVpbGRfZGlyKToKLSAgICAi
IiJSdW5zIHRoZSBQeXRob24gdGVzdCBzY3JpcHQgd2l0aCB0aGUgc3BlY2lmaWVkIGJ1aWxkIGRp
cmVjdG9yeS4KLQotICAgIEFyZ3M6Ci0gICAgICB0ZXN0OiBQYXRoIHRvIHRoZSB0ZXN0J3MgUHl0
aG9uIHNjcmlwdC4KLSAgICAgIGJ1aWxkX2RpcjogUGF0aCB0byB0aGUgZGlyZWN0b3J5IHdoZXJl
IHRoZSB0ZXN0IGJpbmFyeSBpcyB0byBiZSBmb3VuZC4KLQotICAgIFJldHVybnM6Ci0gICAgICBQ
cm9jZXNzJ3MgZXhpdCBjb2RlIGlmIGl0IGV4aXRzIG5vcm1hbGx5LCBvciAtc2lnbmFsIGlmIHRo
ZSBwcm9jZXNzIGlzCi0gICAgICBraWxsZWQgYnkgYSBzaWduYWwuCi0gICAgIiIiCi0KLSAgICBv
bGRfYnVpbGRfZGlyID0gc2VsZi5vcy5lbnZpcm9uLmdldChzZWxmLmJ1aWxkX2Rpcl92YXJfbmFt
ZSkKLQotICAgIHRyeToKLSAgICAgIHNlbGYub3MuZW52aXJvbltzZWxmLmJ1aWxkX2Rpcl92YXJf
bmFtZV0gPSBidWlsZF9kaXIKLQotICAgICAgIyBJZiB0aGlzIHNjcmlwdCBpcyBydW4gb24gYSBX
aW5kb3dzIG1hY2hpbmUgdGhhdCBoYXMgbm8gYXNzb2NpYXRpb24KLSAgICAgICMgYmV0d2VlbiB0
aGUgLnB5IGV4dGVuc2lvbiBhbmQgYSBweXRob24gaW50ZXJwcmV0ZXIsIHNpbXBseSBwYXNzaW5n
Ci0gICAgICAjIHRoZSBzY3JpcHQgbmFtZSBpbnRvIHN1YnByb2Nlc3MuUG9wZW4vb3Muc3Bhd24g
d2lsbCBub3Qgd29yay4KLSAgICAgIHByaW50ICdSdW5uaW5nICVzIC4gLiAuJyAlICh0ZXN0LCkK
LSAgICAgIHJldHVybiBzZWxmLl9SdW4oW3N5cy5leGVjdXRhYmxlLCB0ZXN0XSkKLQotICAgIGZp
bmFsbHk6Ci0gICAgICBpZiBvbGRfYnVpbGRfZGlyIGlzIE5vbmU6Ci0gICAgICAgIGRlbCBzZWxm
Lm9zLmVudmlyb25bc2VsZi5idWlsZF9kaXJfdmFyX25hbWVdCi0gICAgICBlbHNlOgotICAgICAg
ICBzZWxmLm9zLmVudmlyb25bc2VsZi5idWlsZF9kaXJfdmFyX25hbWVdID0gb2xkX2J1aWxkX2Rp
cgotCi0gIGRlZiBfRmluZEZpbGVzQnlSZWdleChzZWxmLCBkaXJlY3RvcnksIHJlZ2V4KToKLSAg
ICAiIiJSZXR1cm5zIGZpbGVzIGluIGEgZGlyZWN0b3J5IHdob3NlIG5hbWVzIG1hdGNoIGEgcmVn
dWxhciBleHByZXNzaW9uLgotCi0gICAgQXJnczoKLSAgICAgIGRpcmVjdG9yeTogUGF0aCB0byB0
aGUgZGlyZWN0b3J5IHRvIHNlYXJjaCBmb3IgZmlsZXMuCi0gICAgICByZWdleDogUmVndWxhciBl
eHByZXNzaW9uIHRvIGZpbHRlciBmaWxlIG5hbWVzLgotCi0gICAgUmV0dXJuczoKLSAgICAgIFRo
ZSBsaXN0IG9mIHRoZSBwYXRocyB0byB0aGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS4KLSAgICAi
IiIKLQotICAgIHJldHVybiBbc2VsZi5vcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCBmaWxlX25hbWUp
Ci0gICAgICAgICAgICBmb3IgZmlsZV9uYW1lIGluIHNlbGYub3MubGlzdGRpcihkaXJlY3Rvcnkp
Ci0gICAgICAgICAgICBpZiByZS5zZWFyY2gocmVnZXgsIGZpbGVfbmFtZSldCi0KLSAgIyBUT0RP
KHZsYWRsQGdvb2dsZS5jb20pOiBJbXBsZW1lbnQgcGFyc2luZyBvZiBzY29ucy9TQ29uc2NyaXB0
IHRvIHJ1biBhbGwKLSAgIyB0ZXN0cyBkZWZpbmVkIHRoZXJlIHdoZW4gbm8gdGVzdHMgYXJlIHNw
ZWNpZmllZC4KLSAgIyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBVcGRhdGUgdGhlIGRvY3N0cmlu
ZyBhZnRlciB0aGUgY29kZSBpcyBjaGFuZ2VkIHRvCi0gICMgdHJ5IHRvIHRlc3QgYWxsIGJ1aWxk
cyBkZWZpbmVkIGluIHNjb25zL1NDb25zY3JpcHQuCi0gIGRlZiBHZXRUZXN0c1RvUnVuKHNlbGYs
Ci0gICAgICAgICAgICAgICAgICAgIGFyZ3MsCi0gICAgICAgICAgICAgICAgICAgIG5hbWVkX2Nv
bmZpZ3VyYXRpb25zLAotICAgICAgICAgICAgICAgICAgICBidWlsdF9jb25maWd1cmF0aW9ucywK
LSAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPUNPTkZJR1MsCi0g
ICAgICAgICAgICAgICAgICAgIHB5dGhvbl90ZXN0c190b19za2lwPU5vbmUpOgotICAgICIiIkRl
dGVybWluZXMgd2hhdCB0ZXN0cyBzaG91bGQgYmUgcnVuLgotCi0gICAgQXJnczoKLSAgICAgIGFy
Z3M6IFRoZSBsaXN0IG9mIG5vbi1vcHRpb24gYXJndW1lbnRzIGZyb20gdGhlIGNvbW1hbmQgbGlu
ZS4KLSAgICAgIG5hbWVkX2NvbmZpZ3VyYXRpb25zOiBUaGUgbGlzdCBvZiBjb25maWd1cmF0aW9u
cyBzcGVjaWZpZWQgdmlhIC1jIG9yIC1hLgotICAgICAgYnVpbHRfY29uZmlndXJhdGlvbnM6IFRy
dWUgaWYgLWIgaGFzIGJlZW4gc3BlY2lmaWVkLgotICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRp
b25zOiBhIGxpc3Qgb2YgY29uZmlndXJhdGlvbnMgYXZhaWxhYmxlIG9uIHRoZQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgcGxhdGZvcm0sIGluamVjdGFibGUgZm9yIHRlc3Rp
bmcuCi0gICAgICBweXRob25fdGVzdHNfdG9fc2tpcDogYSBjb2xsZWN0aW9uIG9mIChjb25maWd1
cmF0aW9uLCBweXRob24gdGVzdCBuYW1lKXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGF0IG5lZWQgdG8gYmUgc2tpcHBlZC4KLQotICAgIFJldHVybnM6Ci0gICAgICBBIHR1cGxlIHdp
dGggMiBlbGVtZW50czogdGhlIGxpc3Qgb2YgUHl0aG9uIHRlc3RzIHRvIHJ1biBhbmQgdGhlIGxp
c3Qgb2YKLSAgICAgIGJpbmFyeSB0ZXN0cyB0byBydW4uCi0gICAgIiIiCi0KLSAgICBpZiBuYW1l
ZF9jb25maWd1cmF0aW9ucyA9PSAnYWxsJzoKLSAgICAgIG5hbWVkX2NvbmZpZ3VyYXRpb25zID0g
JywnLmpvaW4oYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zKQotCi0gICAgbm9ybWFsaXplZF9hcmdz
ID0gW3NlbGYub3MucGF0aC5ub3JtcGF0aChhcmcpIGZvciBhcmcgaW4gYXJnc10KLQotICAgICMg
QSBmaW5hbCBsaXN0IG9mIGJ1aWxkIGRpcmVjdG9yaWVzIHdoaWNoIHdpbGwgYmUgc2VhcmNoZWQg
Zm9yIHRoZSB0ZXN0Ci0gICAgIyBiaW5hcmllcy4gRmlyc3QsIGFkZCBkaXJlY3RvcmllcyBzcGVj
aWZpZWQgZGlyZWN0bHkgb24gdGhlIGNvbW1hbmQKLSAgICAjIGxpbmUuCi0gICAgYnVpbGRfZGly
cyA9IGZpbHRlcihzZWxmLm9zLnBhdGguaXNkaXIsIG5vcm1hbGl6ZWRfYXJncykKLQotICAgICMg
QWRkcyBidWlsZCBkaXJlY3RvcmllcyBzcGVjaWZpZWQgdmlhIHRoZWlyIGJ1aWxkIGNvbmZpZ3Vy
YXRpb25zIHVzaW5nCi0gICAgIyB0aGUgLWMgb3IgLWEgb3B0aW9ucy4KLSAgICBpZiBuYW1lZF9j
b25maWd1cmF0aW9uczoKLSAgICAgIGJ1aWxkX2RpcnMgKz0gW3NlbGYuX0dldEJ1aWxkRGlyRm9y
Q29uZmlnKGNvbmZpZykKLSAgICAgICAgICAgICAgICAgICAgIGZvciBjb25maWcgaW4gbmFtZWRf
Y29uZmlndXJhdGlvbnMuc3BsaXQoJywnKV0KLQotICAgICMgQWRkcyBLTk9XTiBCVUlMRCBESVJF
Q1RPUklFUyBpZiAtYiBpcyBzcGVjaWZpZWQuCi0gICAgaWYgYnVpbHRfY29uZmlndXJhdGlvbnM6
Ci0gICAgICBidWlsZF9kaXJzICs9IFtzZWxmLl9HZXRCdWlsZERpckZvckNvbmZpZyhjb25maWcp
Ci0gICAgICAgICAgICAgICAgICAgICBmb3IgY29uZmlnIGluIGF2YWlsYWJsZV9jb25maWd1cmF0
aW9ucwotICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5vcy5wYXRoLmlzZGlyKHNlbGYuX0dl
dEJ1aWxkRGlyRm9yQ29uZmlnKGNvbmZpZykpXQotCi0gICAgIyBJZiBubyBkaXJlY3RvcmllcyB3
ZXJlIHNwZWNpZmllZCBlaXRoZXIgdmlhIC1hLCAtYiwgLWMsIG9yIGRpcmVjdGx5LCB1c2UKLSAg
ICAjIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uCi0gICAgZWxpZiBub3QgYnVpbGRfZGlyczoK
LSAgICAgIGJ1aWxkX2RpcnMgPSBbc2VsZi5fR2V0QnVpbGREaXJGb3JDb25maWcoYXZhaWxhYmxl
X2NvbmZpZ3VyYXRpb25zWzBdKV0KLQotICAgICMgTWFrZXMgc3VyZSB0aGVyZSBhcmUgbm8gZHVw
bGljYXRpb25zLgotICAgIGJ1aWxkX2RpcnMgPSBzZXRzLlNldChidWlsZF9kaXJzKQotCi0gICAg
ZXJyb3JzX2ZvdW5kID0gRmFsc2UKLSAgICBsaXN0ZWRfcHl0aG9uX3Rlc3RzID0gW10gICMgQWxs
IFB5dGhvbiB0ZXN0cyBsaXN0ZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KLSAgICBsaXN0ZWRfYmlu
YXJ5X3Rlc3RzID0gW10gICMgQWxsIGJpbmFyeSB0ZXN0cyBsaXN0ZWQgb24gdGhlIGNvbW1hbmQg
bGluZS4KLQotICAgIHRlc3RfZGlyID0gc2VsZi5vcy5wYXRoLm5vcm1wYXRoKHNlbGYub3MucGF0
aC5qb2luKHNlbGYuc2NyaXB0X2RpciwgJ3Rlc3QnKSkKLQotICAgICMgU2lmdHMgdGhyb3VnaCBu
b24tZGlyZWN0b3J5IGFyZ3VtZW50cyBmaXNoaW5nIGZvciBhbnkgUHl0aG9uIG9yIGJpbmFyeQot
ICAgICMgdGVzdHMgYW5kIGRldGVjdGluZyBlcnJvcnMuCi0gICAgZm9yIGFyZ3VtZW50IGluIHNl
dHMuU2V0KG5vcm1hbGl6ZWRfYXJncykgLSBidWlsZF9kaXJzOgotICAgICAgaWYgcmUuc2VhcmNo
KFBZVEhPTl9URVNUX1JFR0VYLCBhcmd1bWVudCk6Ci0gICAgICAgIHB5dGhvbl9wYXRoID0gc2Vs
Zi5vcy5wYXRoLmpvaW4odGVzdF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5vcy5wYXRoLmJhc2VuYW1lKGFyZ3VtZW50KSkKLSAgICAgICAgaWYgc2Vs
Zi5vcy5wYXRoLmlzZmlsZShweXRob25fcGF0aCk6Ci0gICAgICAgICAgbGlzdGVkX3B5dGhvbl90
ZXN0cy5hcHBlbmQocHl0aG9uX3BhdGgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgc3lzLnN0
ZGVyci53cml0ZSgnVW5hYmxlIHRvIGZpbmQgUHl0aG9uIHRlc3QgJXMnICUgYXJndW1lbnQpCi0g
ICAgICAgICAgZXJyb3JzX2ZvdW5kID0gVHJ1ZQotICAgICAgZWxpZiByZS5zZWFyY2goQklOQVJZ
X1RFU1RfUkVHRVgsIGFyZ3VtZW50KToKLSAgICAgICAgIyBUaGlzIHNjcmlwdCBhbHNvIGFjY2Vw
dHMgYmluYXJ5IHRlc3QgbmFtZXMgcHJlZml4ZWQgd2l0aCB0ZXN0LyBmb3IKLSAgICAgICAgIyB0
aGUgY29udmVuaWVuY2Ugb2YgdHlwaW5nIHRoZW0gKGNhbiB1c2UgcGF0aCBjb21wbGV0aW9ucyBp
biB0aGUKLSAgICAgICAgIyBzaGVsbCkuICBTdHJpcHMgdGVzdC8gcHJlZml4IGZyb20gdGhlIGJp
bmFyeSB0ZXN0IG5hbWVzLgotICAgICAgICBsaXN0ZWRfYmluYXJ5X3Rlc3RzLmFwcGVuZChzZWxm
Lm9zLnBhdGguYmFzZW5hbWUoYXJndW1lbnQpKQotICAgICAgZWxzZToKLSAgICAgICAgc3lzLnN0
ZGVyci53cml0ZSgnJXMgaXMgbmVpdGhlciB0ZXN0IG5vciBidWlsZCBkaXJlY3RvcnknICUgYXJn
dW1lbnQpCi0gICAgICAgIGVycm9yc19mb3VuZCA9IFRydWUKLQotICAgIGlmIGVycm9yc19mb3Vu
ZDoKLSAgICAgIHJldHVybiBOb25lCi0KLSAgICB1c2VyX2hhc19saXN0ZWRfdGVzdHMgPSBsaXN0
ZWRfcHl0aG9uX3Rlc3RzIG9yIGxpc3RlZF9iaW5hcnlfdGVzdHMKLQotICAgIGlmIHVzZXJfaGFz
X2xpc3RlZF90ZXN0czoKLSAgICAgIHNlbGVjdGVkX3B5dGhvbl90ZXN0cyA9IGxpc3RlZF9weXRo
b25fdGVzdHMKLSAgICBlbHNlOgotICAgICAgc2VsZWN0ZWRfcHl0aG9uX3Rlc3RzID0gc2VsZi5f
RmluZEZpbGVzQnlSZWdleCh0ZXN0X2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFlUSE9OX1RFU1RfUkVHRVgpCi0KLSAgICAjIFRPRE8o
dmxhZGxAZ29vZ2xlLmNvbSk6IHNraXAgdW5idWlsdCBQeXRob24gdGVzdHMgd2hlbiAtYiBpcyBz
cGVjaWZpZWQuCi0gICAgcHl0aG9uX3Rlc3RfcGFpcnMgPSBbXQotICAgIGZvciBkaXJlY3Rvcnkg
aW4gYnVpbGRfZGlyczoKLSAgICAgIGZvciB0ZXN0IGluIHNlbGVjdGVkX3B5dGhvbl90ZXN0czoK
LSAgICAgICAgY29uZmlnID0gX0dldENvbmZpZ0Zyb21CdWlsZERpcihkaXJlY3RvcnkpCi0gICAg
ICAgIGZpbGVfbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUodGVzdCkKLSAgICAgICAgaWYgcHl0aG9u
X3Rlc3RzX3RvX3NraXAgYW5kIChjb25maWcsIGZpbGVfbmFtZSkgaW4gcHl0aG9uX3Rlc3RzX3Rv
X3NraXA6Ci0gICAgICAgICAgcHJpbnQgKCdOT1RFOiAlcyBpcyBza2lwcGVkIGZvciBjb25maWd1
cmF0aW9uICVzLCBhcyBpdCBkb2VzIG5vdCAnCi0gICAgICAgICAgICAgICAgICd3b3JrIHRoZXJl
LicgJSAoZmlsZV9uYW1lLCBjb25maWcpKQotICAgICAgICBlbHNlOgotICAgICAgICAgIHB5dGhv
bl90ZXN0X3BhaXJzLmFwcGVuZCgoZGlyZWN0b3J5LCB0ZXN0KSkKLQotICAgIGJpbmFyeV90ZXN0
X3BhaXJzID0gW10KLSAgICBmb3IgZGlyZWN0b3J5IGluIGJ1aWxkX2RpcnM6Ci0gICAgICBpZiB1
c2VyX2hhc19saXN0ZWRfdGVzdHM6Ci0gICAgICAgIGJpbmFyeV90ZXN0X3BhaXJzLmV4dGVuZCgK
LSAgICAgICAgICAgIFsoZGlyZWN0b3J5LCBzZWxmLm9zLnBhdGguam9pbihkaXJlY3RvcnksIHRl
c3QpKQotICAgICAgICAgICAgIGZvciB0ZXN0IGluIGxpc3RlZF9iaW5hcnlfdGVzdHNdKQotICAg
ICAgZWxzZToKLSAgICAgICAgdGVzdHMgPSBzZWxmLl9GaW5kRmlsZXNCeVJlZ2V4KGRpcmVjdG9y
eSwgQklOQVJZX1RFU1RfU0VBUkNIX1JFR0VYKQotICAgICAgICBiaW5hcnlfdGVzdF9wYWlycy5l
eHRlbmQoWyhkaXJlY3RvcnksIHRlc3QpIGZvciB0ZXN0IGluIHRlc3RzXSkKLQotICAgIHJldHVy
biAocHl0aG9uX3Rlc3RfcGFpcnMsIGJpbmFyeV90ZXN0X3BhaXJzKQotCi0gIGRlZiBSdW5UZXN0
cyhzZWxmLCBweXRob25fdGVzdHMsIGJpbmFyeV90ZXN0cyk6Ci0gICAgIiIiUnVucyBQeXRob24g
YW5kIGJpbmFyeSB0ZXN0cyBhbmQgcmVwb3J0cyByZXN1bHRzIHRvIHRoZSBzdGFuZGFyZCBvdXRw
dXQuCi0KLSAgICBBcmdzOgotICAgICAgcHl0aG9uX3Rlc3RzOiBMaXN0IG9mIFB5dGhvbiB0ZXN0
cyB0byBydW4gaW4gdGhlIGZvcm0gb2YgdHVwbGVzCi0gICAgICAgICAgICAgICAgICAgIChidWls
ZCBkaXJlY3RvcnksIFB5dGhvbiB0ZXN0IHNjcmlwdCkuCi0gICAgICBiaW5hcnlfdGVzdHM6IExp
c3Qgb2YgYmluYXJ5IHRlc3RzIHRvIHJ1biBpbiB0aGUgZm9ybSBvZiB0dXBsZXMKLSAgICAgICAg
ICAgICAgICAgICAgKGJ1aWxkIGRpcmVjdG9yeSwgYmluYXJ5IGZpbGUpLgotCi0gICAgUmV0dXJu
czoKLSAgICAgIFRoZSBleGl0IGNvZGUgdGhlIHByb2dyYW0gc2hvdWxkIHBhc3MgaW50byBzeXMu
ZXhpdCgpLgotICAgICIiIgotCi0gICAgaWYgcHl0aG9uX3Rlc3RzIG9yIGJpbmFyeV90ZXN0czoK
LSAgICAgIHJlc3VsdHMgPSBbXQotICAgICAgZm9yIGRpcmVjdG9yeSwgdGVzdCBpbiBweXRob25f
dGVzdHM6Ci0gICAgICAgIHJlc3VsdHMuYXBwZW5kKChkaXJlY3RvcnksCi0gICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fUnVuUHl0aG9u
VGVzdCh0ZXN0LCBkaXJlY3RvcnkpID09IDApKQotICAgICAgZm9yIGRpcmVjdG9yeSwgdGVzdCBp
biBiaW5hcnlfdGVzdHM6Ci0gICAgICAgIHJlc3VsdHMuYXBwZW5kKChkaXJlY3RvcnksCi0gICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLm9zLnBhdGguYmFzZW5hbWUodGVzdCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9SdW5CaW5hcnlUZXN0KHRlc3QpID09IDApKQotCi0gICAg
ICBmYWlsZWQgPSBbKGRpcmVjdG9yeSwgdGVzdCkKLSAgICAgICAgICAgICAgICBmb3IgKGRpcmVj
dG9yeSwgdGVzdCwgc3VjY2VzcykgaW4gcmVzdWx0cwotICAgICAgICAgICAgICAgIGlmIG5vdCBz
dWNjZXNzXQotICAgICAgcHJpbnQKLSAgICAgIHByaW50ICclZCB0ZXN0cyBydW4uJyAlIGxlbihy
ZXN1bHRzKQotICAgICAgaWYgZmFpbGVkOgotICAgICAgICBwcmludCAnVGhlIGZvbGxvd2luZyAl
ZCB0ZXN0cyBmYWlsZWQ6JyAlIGxlbihmYWlsZWQpCi0gICAgICAgIGZvciAoZGlyZWN0b3J5LCB0
ZXN0KSBpbiBmYWlsZWQ6Ci0gICAgICAgICAgcHJpbnQgJyVzIGluICVzJyAlICh0ZXN0LCBkaXJl
Y3RvcnkpCi0gICAgICAgIHJldHVybiAxCi0gICAgICBlbHNlOgotICAgICAgICBwcmludCAnQWxs
IHRlc3RzIHBhc3NlZCEnCi0gICAgZWxzZTogICMgTm8gdGVzdHMgZGVmaW5lZAotICAgICAgcHJp
bnQgJ05vdGhpbmcgdG8gdGVzdCAtIG5vIHRlc3RzIHNwZWNpZmllZCEnCi0KLSAgICByZXR1cm4g
MAotCi0KLWRlZiBQYXJzZUFyZ3MocHJvamVjdF9uYW1lLCBhcmd2PU5vbmUsIGhlbHBfY2FsbGJh
Y2s9Tm9uZSk6Ci0gICIiIlBhcnNlcyB0aGUgb3B0aW9ucyBydW5fdGVzdHMucHkgdXNlcy4iIiIK
LQotICAjIFN1cHByZXNzZXMgbGludCB3YXJuaW5nIG9uIHVudXNlZCBhcmd1bWVudHMuICBUaGVz
ZSBhcmd1bWVudHMgYXJlCi0gICMgcmVxdWlyZWQgYnkgb3B0cGFyc2UsIGV2ZW4gdGhvdWdoIHRo
ZXkgYXJlIHVudXNlZC4KLSAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPVcwNjEzCi0gIGRlZiBQcmlu
dEhlbHAob3B0aW9uLCBvcHQsIHZhbHVlLCBwYXJzZXIpOgotICAgIHByaW50IEhFTFBfTVNHICUg
eydwcm9qJzogcHJvamVjdF9uYW1lfQotICAgIHN5cy5leGl0KDEpCi0KLSAgcGFyc2VyID0gb3B0
cGFyc2UuT3B0aW9uUGFyc2VyKCkKLSAgcGFyc2VyLmFkZF9vcHRpb24oJy1jJywKLSAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uPSdzdG9yZScsCi0gICAgICAgICAgICAgICAgICAgIGRlc3Q9J2Nv
bmZpZ3VyYXRpb25zJywKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lKQotICBwYXJz
ZXIuYWRkX29wdGlvbignLWEnLAotICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX2Nv
bnN0JywKLSAgICAgICAgICAgICAgICAgICAgZGVzdD0nY29uZmlndXJhdGlvbnMnLAotICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0PSdh
bGwnKQotICBwYXJzZXIuYWRkX29wdGlvbignLWInLAotICAgICAgICAgICAgICAgICAgICBhY3Rp
b249J3N0b3JlX2NvbnN0JywKLSAgICAgICAgICAgICAgICAgICAgZGVzdD0nYnVpbHRfY29uZmln
dXJhdGlvbnMnLAotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAotICAgICAgICAg
ICAgICAgICAgICBjb25zdD1UcnVlKQotICAjIFJlcGxhY2VzIHRoZSBidWlsdC1pbiBoZWxwIHdp
dGggb3Vycy4KLSAgcGFyc2VyLnJlbW92ZV9vcHRpb24oJy1oJykKLSAgcGFyc2VyLmFkZF9vcHRp
b24oJy1oJywgJy0taGVscCcsCi0gICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nY2FsbGJhY2sn
LAotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz1oZWxwX2NhbGxiYWNrIG9yIFByaW50SGVs
cCkKLSAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKGFyZ3YpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0c191dGlsX3Rlc3QucHkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0c191dGlsX3Rlc3QucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDljNTU3MjZmZDUwYjJhMGMyNTA2ODE0MWQ3ZTY2OTQzZjBiNmRlNzMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ydW5fdGVzdHNfdXRpbF90ZXN0LnB5CisrKyAvZGV2L251bGwK
QEAgLTEsNjc2ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQg
MjAwOSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotIiIiVGVzdHMgZm9yIHJ1bl90ZXN0c191dGlsLnB5IHRlc3QgcnVubmVyIHNjcmlwdC4iIiIK
LQotX19hdXRob3JfXyA9ICd2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KScKLQotaW1wb3J0
IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzZXRzCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0IHJ1
bl90ZXN0c191dGlsCi0KLQotR1RFU1RfREJHX0RJUiA9ICdzY29ucy9idWlsZC9kYmcvZ3Rlc3Qv
c2NvbnMnCi1HVEVTVF9PUFRfRElSID0gJ3Njb25zL2J1aWxkL29wdC9ndGVzdC9zY29ucycKLUdU
RVNUX09USEVSX0RJUiA9ICdzY29ucy9idWlsZC9vdGhlci9ndGVzdC9zY29ucycKLQotCi1kZWYg
QWRkRXhlRXh0ZW5zaW9uKHBhdGgpOgotICAiIiJBcHBlbmRzIC5leGUgdG8gdGhlIHBhdGggb24g
V2luZG93cyBvciBDeWd3aW4uIiIiCi0KLSAgaWYgcnVuX3Rlc3RzX3V0aWwuSVNfV0lORE9XUyBv
ciBydW5fdGVzdHNfdXRpbC5JU19DWUdXSU46Ci0gICAgcmV0dXJuIHBhdGggKyAnLmV4ZScKLSAg
ZWxzZToKLSAgICByZXR1cm4gcGF0aAotCi0KLWNsYXNzIEZha2VQYXRoKG9iamVjdCk6Ci0gICIi
IkEgZmFrZSBvcy5wYXRoIG1vZHVsZSBmb3IgdGVzdGluZy4iIiIKLQotICBkZWYgX19pbml0X18o
c2VsZiwgY3VycmVudF9kaXI9b3MuZ2V0Y3dkKCksIGtub3duX3BhdGhzPU5vbmUpOgotICAgIHNl
bGYuY3VycmVudF9kaXIgPSBjdXJyZW50X2RpcgotICAgIHNlbGYudHJlZSA9IHt9Ci0gICAgc2Vs
Zi5wYXRoX3NlcGFyYXRvciA9IG9zLnNlcAotCi0gICAgIyBrbm93bl9wYXRocyBjb250YWlucyBl
aXRoZXIgYWJzb2x1dGUgb3IgcmVsYXRpdmUgcGF0aHMuIFJlbGF0aXZlIHBhdGhzCi0gICAgIyBh
cmUgYWJzb2x1dGl6ZWQgd2l0aCBzZWxmLmN1cnJlbnRfZGlyLgotICAgIGlmIGtub3duX3BhdGhz
OgotICAgICAgc2VsZi5fQWRkUGF0aHMoa25vd25fcGF0aHMpCi0KLSAgZGVmIF9BZGRQYXRoKHNl
bGYsIHBhdGgpOgotICAgIGVuZHNfd2l0aF9zbGFzaCA9IHBhdGguZW5kc3dpdGgoJy8nKQotICAg
IHBhdGggPSBzZWxmLmFic3BhdGgocGF0aCkKLSAgICBpZiBlbmRzX3dpdGhfc2xhc2g6Ci0gICAg
ICBwYXRoICs9IHNlbGYucGF0aF9zZXBhcmF0b3IKLSAgICBuYW1lX2xpc3QgPSBwYXRoLnNwbGl0
KHNlbGYucGF0aF9zZXBhcmF0b3IpCi0gICAgdHJlZSA9IHNlbGYudHJlZQotICAgIGZvciBuYW1l
IGluIG5hbWVfbGlzdFs6LTFdOgotICAgICAgaWYgbm90IG5hbWU6Ci0gICAgICAgIGNvbnRpbnVl
Ci0gICAgICBpZiBuYW1lIGluIHRyZWU6Ci0gICAgICAgIHRyZWUgPSB0cmVlW25hbWVdCi0gICAg
ICBlbHNlOgotICAgICAgICB0cmVlW25hbWVdID0ge30KLSAgICAgICAgdHJlZSA9IHRyZWVbbmFt
ZV0KLQotICAgIG5hbWUgPSBuYW1lX2xpc3RbLTFdCi0gICAgaWYgbmFtZToKLSAgICAgIGlmIG5h
bWUgaW4gdHJlZToKLSAgICAgICAgYXNzZXJ0IHRyZWVbbmFtZV0gPT0gMQotICAgICAgZWxzZToK
LSAgICAgICAgdHJlZVtuYW1lXSA9IDEKLQotICBkZWYgX0FkZFBhdGhzKHNlbGYsIHBhdGhzKToK
LSAgICBmb3IgcGF0aCBpbiBwYXRoczoKLSAgICAgIHNlbGYuX0FkZFBhdGgocGF0aCkKLQotICBk
ZWYgUGF0aEVsZW1lbnQoc2VsZiwgcGF0aCk6Ci0gICAgIiIiUmV0dXJucyBhbiBpbnRlcm5hbCBy
ZXByZXNlbnRhdGlvbiBvZiBkaXJlY3RvcnkgdHJlZSBlbnRyeSBmb3IgcGF0aC4iIiIKLSAgICB0
cmVlID0gc2VsZi50cmVlCi0gICAgbmFtZV9saXN0ID0gc2VsZi5hYnNwYXRoKHBhdGgpLnNwbGl0
KHNlbGYucGF0aF9zZXBhcmF0b3IpCi0gICAgZm9yIG5hbWUgaW4gbmFtZV9saXN0OgotICAgICAg
aWYgbm90IG5hbWU6Ci0gICAgICAgIGNvbnRpbnVlCi0gICAgICB0cmVlID0gdHJlZS5nZXQobmFt
ZSwgTm9uZSkKLSAgICAgIGlmIHRyZWUgaXMgTm9uZToKLSAgICAgICAgYnJlYWsKLQotICAgIHJl
dHVybiB0cmVlCi0KLSAgIyBTaWxlbmNlcyBweWxpbnQgd2FybmluZyBhYm91dCB1c2luZyBzdGFu
ZGFyZCBuYW1lcy4KLSAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2NDA5Ci0gIGRlZiBub3JtcGF0
aChzZWxmLCBwYXRoKToKLSAgICByZXR1cm4gb3MucGF0aC5ub3JtcGF0aChwYXRoKQotCi0gIGRl
ZiBhYnNwYXRoKHNlbGYsIHBhdGgpOgotICAgIHJldHVybiBzZWxmLm5vcm1wYXRoKG9zLnBhdGgu
am9pbihzZWxmLmN1cnJlbnRfZGlyLCBwYXRoKSkKLQotICBkZWYgaXNmaWxlKHNlbGYsIHBhdGgp
OgotICAgIHJldHVybiBzZWxmLlBhdGhFbGVtZW50KHNlbGYuYWJzcGF0aChwYXRoKSkgPT0gMQot
Ci0gIGRlZiBpc2RpcihzZWxmLCBwYXRoKToKLSAgICByZXR1cm4gdHlwZShzZWxmLlBhdGhFbGVt
ZW50KHNlbGYuYWJzcGF0aChwYXRoKSkpID09IHR5cGUoZGljdCgpKQotCi0gIGRlZiBiYXNlbmFt
ZShzZWxmLCBwYXRoKToKLSAgICByZXR1cm4gb3MucGF0aC5iYXNlbmFtZShwYXRoKQotCi0gIGRl
ZiBkaXJuYW1lKHNlbGYsIHBhdGgpOgotICAgIHJldHVybiBvcy5wYXRoLmRpcm5hbWUocGF0aCkK
LQotICBkZWYgam9pbihzZWxmLCAqa2FyZ3MpOgotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKmth
cmdzKQotCi0KLWNsYXNzIEZha2VPcyhvYmplY3QpOgotICAiIiJBIGZha2Ugb3MgbW9kdWxlIGZv
ciB0ZXN0aW5nLiIiIgotICBQX1dBSVQgPSBvcy5QX1dBSVQKLQotICBkZWYgX19pbml0X18oc2Vs
ZiwgZmFrZV9wYXRoX21vZHVsZSk6Ci0gICAgc2VsZi5wYXRoID0gZmFrZV9wYXRoX21vZHVsZQot
Ci0gICAgIyBTb21lIG1ldGhvZHMvYXR0cmlidXRlcyBhcmUgZGVsZWdhdGVkIHRvIHRoZSByZWFs
IG9zIG1vZHVsZS4KLSAgICBzZWxmLmVudmlyb24gPSBvcy5lbnZpcm9uCi0KLSAgIyBweWxpbnQ6
IGRpc2FibGUtbXNnPUM2NDA5Ci0gIGRlZiBsaXN0ZGlyKHNlbGYsIHBhdGgpOgotICAgIGFzc2Vy
dCBzZWxmLnBhdGguaXNkaXIocGF0aCkKLSAgICByZXR1cm4gc2VsZi5wYXRoLlBhdGhFbGVtZW50
KHBhdGgpLml0ZXJrZXlzKCkKLQotICBkZWYgc3Bhd252KHNlbGYsIHdhaXQsIGV4ZWN1dGFibGUs
ICprYXJncyk6Ci0gICAgYXNzZXJ0IHdhaXQgPT0gRmFrZU9zLlBfV0FJVAotICAgIHJldHVybiBz
ZWxmLnNwYXduX2ltcGwoZXhlY3V0YWJsZSwga2FyZ3MpCi0KLQotY2xhc3MgR2V0VGVzdHNUb1J1
blRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAiIiJFeGVyY2lzZXMgVGVzdFJ1bm5lci5HZXRU
ZXN0c1RvUnVuLiIiIgotCi0gIGRlZiBOb3JtYWxpemVHZXRUZXN0c1RvUnVuUmVzdWx0cyhzZWxm
LCByZXN1bHRzKToKLSAgICAiIiJOb3JtYWxpemVzIHBhdGggZGF0YSByZXR1cm5lZCBmcm9tIEdl
dFRlc3RzVG9SdW4gZm9yIGNvbXBhcmlzb24uIiIiCi0KLSAgICBkZWYgTm9ybWFsaXplUHl0aG9u
VGVzdFBhaXIocGFpcik6Ci0gICAgICAiIiJOb3JtYWxpemVzIHBhdGggZGF0YSBpbiB0aGUgKGRp
cmVjdG9yeSwgcHl0aG9uX3NjcmlwdCkgcGFpci4iIiIKLQotICAgICAgcmV0dXJuIChvcy5wYXRo
Lm5vcm1wYXRoKHBhaXJbMF0pLCBvcy5wYXRoLm5vcm1wYXRoKHBhaXJbMV0pKQotCi0gICAgZGVm
IE5vcm1hbGl6ZUJpbmFyeVRlc3RQYWlyKHBhaXIpOgotICAgICAgIiIiTm9ybWFsaXplcyBwYXRo
IGRhdGEgaW4gdGhlIChkaXJlY3RvcnksIGJpbmFyeV9leGVjdXRhYmxlKSBwYWlyLiIiIgotCi0g
ICAgICBkaXJlY3RvcnksIGV4ZWN1dGFibGUgPSBtYXAob3MucGF0aC5ub3JtcGF0aCwgcGFpcikK
LQotICAgICAgIyBPbiBXaW5kb3dzIGFuZCBDeWd3aW4sIHRoZSB0ZXN0IGZpbGUgbmFtZXMgaGF2
ZSB0aGUgLmV4ZSBleHRlbnNpb24sIGJ1dAotICAgICAgIyB0aGV5IGNhbiBiZSBpbnZva2VkIGVp
dGhlciBieSBuYW1lIG9yIGJ5IG5hbWUrZXh0ZW5zaW9uLiBPdXIgdGVzdCBtdXN0Ci0gICAgICAj
IGFjY29tbW9kYXRlIGJvdGggc2l0dWF0aW9ucy4KLSAgICAgIGlmIHJ1bl90ZXN0c191dGlsLklT
X1dJTkRPV1Mgb3IgcnVuX3Rlc3RzX3V0aWwuSVNfQ1lHV0lOOgotICAgICAgICBleGVjdXRhYmxl
ID0gcmUuc3ViKHInXC5leGUkJywgJycsIGV4ZWN1dGFibGUpCi0gICAgICByZXR1cm4gKGRpcmVj
dG9yeSwgZXhlY3V0YWJsZSkKLQotICAgIHB5dGhvbl90ZXN0cyA9IHNldHMuU2V0KG1hcChOb3Jt
YWxpemVQeXRob25UZXN0UGFpciwgcmVzdWx0c1swXSkpCi0gICAgYmluYXJ5X3Rlc3RzID0gc2V0
cy5TZXQobWFwKE5vcm1hbGl6ZUJpbmFyeVRlc3RQYWlyLCByZXN1bHRzWzFdKSkKLSAgICByZXR1
cm4gKHB5dGhvbl90ZXN0cywgYmluYXJ5X3Rlc3RzKQotCi0gIGRlZiBBc3NlcnRSZXN1bHRzRXF1
YWwoc2VsZiwgcmVzdWx0cywgZXhwZWN0ZWQpOgotICAgICIiIkFzc2VydHMgcmVzdWx0cyByZXR1
cm5lZCBieSBHZXRUZXN0c1RvUnVuIGVxdWFsIHRvIGV4cGVjdGVkIHJlc3VsdHMuIiIiCi0KLSAg
ICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuTm9ybWFsaXplR2V0VGVzdHNUb1J1blJlc3VsdHMocmVz
dWx0cyksCi0gICAgICAgICAgICAgICAgICAgICBzZWxmLk5vcm1hbGl6ZUdldFRlc3RzVG9SdW5S
ZXN1bHRzKGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAgICAgICAgICdJbmNvcnJlY3Qgc2V0IG9m
IHRlc3RzIHJldHVybmVkOlxuJXNcbmV4cGVjdGVkOlxuJXMnICUKLSAgICAgICAgICAgICAgICAg
ICAgIChyZXN1bHRzLCBleHBlY3RlZCkpCi0KLSAgZGVmIHNldFVwKHNlbGYpOgotICAgIHNlbGYu
ZmFrZV9vcyA9IEZha2VPcyhGYWtlUGF0aCgKLSAgICAgICAgY3VycmVudF9kaXI9b3MucGF0aC5h
YnNwYXRoKG9zLnBhdGguZGlybmFtZShydW5fdGVzdHNfdXRpbC5fX2ZpbGVfXykpLAotICAgICAg
ICBrbm93bl9wYXRocz1bQWRkRXhlRXh0ZW5zaW9uKEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3Vu
aXR0ZXN0JyksCi0gICAgICAgICAgICAgICAgICAgICBBZGRFeGVFeHRlbnNpb24oR1RFU1RfT1BU
X0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAgICAgICAgICAgICd0ZXN0L2d0
ZXN0X2NvbG9yX3Rlc3QucHknXSkpCi0gICAgc2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zID0gWydk
YmcnLCAnb3B0J10KLSAgICBzZWxmLnRlc3RfcnVubmVyID0gcnVuX3Rlc3RzX3V0aWwuVGVzdFJ1
bm5lcihzY3JpcHRfZGlyPScuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbmplY3RlZF9vcz1zZWxmLmZha2Vfb3MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5qZWN0ZWRfc3VicHJvY2Vzcz1Ob25l
KQotCi0gIGRlZiB0ZXN0QmluYXJ5VGVzdHNPbmx5KHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBH
ZXRUZXN0c1RvUnVuIHdpdGggcGFyYW1ldGVycyBkZXNpZ25hdGluZyBiaW5hcnkgdGVzdHMgb25s
eS4iIiIKLQotICAgICMgQSBkZWZhdWx0IGJ1aWxkLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0Vx
dWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAg
ICBbJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNl
LAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1
cmF0aW9ucyksCi0gICAgICAgIChbXSwKLSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1Rf
REJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBBbiBleHBsaWNpdGx5IHNw
ZWNpZmllZCBkaXJlY3RvcnkuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAg
IHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdf
RElSLCAnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFs
c2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZp
Z3VyYXRpb25zKSwKLSAgICAgICAgKFtdLAotICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVT
VF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIEEgcGFydGljdWxhciBj
b25maWd1cmF0aW9uLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxm
LnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X3VuaXR0ZXN0
J10sCi0gICAgICAgICAgICAnb3RoZXInLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAg
ICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAg
ICAgICAgKFtdLAotICAgICAgICAgWyhHVEVTVF9PVEhFUl9ESVIsIEdURVNUX09USEVSX0RJUiAr
ICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBBbGwgYXZhaWxhYmxlIGNvbmZpZ3VyYXRp
b25zCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5u
ZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAg
ICAgICAgICdhbGwnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVf
Y29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFtdLAot
ICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVz
dCcpLAotICAgICAgICAgIChHVEVTVF9PUFRfRElSLCBHVEVTVF9PUFRfRElSICsgJy9ndGVzdF91
bml0dGVzdCcpXSkpCi0KLSAgICAjIEFsbCBidWlsdCBjb25maWd1cmF0aW9ucyAodW5idWlsdCBk
b24ndCBjYXVzZSBmYWlsdXJlKS4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAg
ICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF91
bml0dGVzdCddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBUcnVlLAotICAgICAgICAg
ICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyArIFsn
dW5idWlsdCddKSwKLSAgICAgICAgKFtdLAotICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVT
VF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpLAotICAgICAgICAgIChHVEVTVF9PUFRfRElS
LCBHVEVTVF9PUFRfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIEEgY29tYmlu
YXRpb24gb2YgYW4gZXhwbGljaXQgZGlyZWN0b3J5IGFuZCBhIGNvbmZpZ3VyYXRpb24uCi0gICAg
c2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVz
dHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rlc3RfdW5pdHRlc3QnXSwK
LSAgICAgICAgICAgICdvcHQnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFp
bGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAg
KFtdLAotICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91
bml0dGVzdCcpLAotICAgICAgICAgIChHVEVTVF9PUFRfRElSLCBHVEVTVF9PUFRfRElSICsgJy9n
dGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIFNhbWUgdGVzdCBzcGVjaWZpZWQgaW4gYW4gZXhw
bGljaXQgZGlyZWN0b3J5IGFuZCB2aWEgYSBjb25maWd1cmF0aW9uLgotICAgIHNlbGYuQXNzZXJ0
UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0g
ICAgICAgICAgICBbR1RFU1RfREJHX0RJUiwgJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAg
ICAnZGJnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZp
Z3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbXSwKLSAgICAg
ICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0p
KQotCi0gICAgIyBBbGwgYnVpbHQgY29uZmlndXJhdGlvbnMgKyBleHBsaWNpdCBkaXJlY3Rvcnkg
KyBleHBsaWNpdCBjb25maWd1cmF0aW9uLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAot
ICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbR1RF
U1RfREJHX0RJUiwgJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAnb3B0JywKLSAgICAg
ICAgICAgIFRydWUsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5m
YWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFtdLAotICAgICAgICAgWyhHVEVTVF9EQkdf
RElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpLAotICAgICAgICAgIChHVEVT
VF9PUFRfRElSLCBHVEVTVF9PUFRfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgZGVm
IHRlc3RQeXRob25UZXN0c09ubHkoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3RzVG9S
dW4gd2l0aCBwYXJhbWV0ZXJzIGRlc2lnbmF0aW5nIFB5dGhvbiB0ZXN0cyBvbmx5LiIiIgotCi0g
ICAgIyBBIGRlZmF1bHQgYnVpbGQuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAg
ICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3Rf
Y29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAg
ICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlv
bnMpLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5
JyldLAotICAgICAgICAgW10pKQotCi0gICAgIyBBbiBleHBsaWNpdGx5IHNwZWNpZmllZCBkaXJl
Y3RvcnkuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9y
dW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAndGVzdC9n
dGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNl
LAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1
cmF0aW9ucyksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rl
c3QucHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEEgcGFydGljdWxhciBjb25maWd1cmF0
aW9uLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVu
bmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwK
LSAgICAgICAgICAgICdvdGhlcicsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2
YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAg
ICAoWyhHVEVTVF9PVEhFUl9ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAg
ICAgICBbXSkpCi0KLSAgICAjIEFsbCBhdmFpbGFibGUgY29uZmlndXJhdGlvbnMKLSAgICBzZWxm
LkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1Rv
UnVuKAotICAgICAgICAgICAgWyd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAg
ICAgICdhbGwnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29u
ZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1Rf
REJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpLAotICAgICAgICAgIChHVEVTVF9P
UFRfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgW10pKQotCi0g
ICAgIyBBbGwgYnVpbHQgY29uZmlndXJhdGlvbnMgKHVuYnVpbHQgZG9uJ3QgY2F1c2UgZmFpbHVy
ZSkuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5u
ZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfY29sb3JfdGVzdC5weSddLAot
ICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBUcnVlLAotICAgICAgICAgICAgYXZhaWxhYmxl
X2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyArIFsndW5idWlsdCddKSwK
LSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpLAot
ICAgICAgICAgIChHVEVTVF9PUFRfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAot
ICAgICAgICAgW10pKQotCi0gICAgIyBBIGNvbWJpbmF0aW9uIG9mIGFuIGV4cGxpY2l0IGRpcmVj
dG9yeSBhbmQgYSBjb25maWd1cmF0aW9uLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAot
ICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbR1RF
U1RfREJHX0RJUiwgJ2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICdvcHQnLAot
ICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9
c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rl
c3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpLAotICAgICAgICAgIChHVEVTVF9PUFRfRElSLCAndGVz
dC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgW10pKQotCi0gICAgIyBTYW1lIHRl
c3Qgc3BlY2lmaWVkIGluIGFuIGV4cGxpY2l0IGRpcmVjdG9yeSBhbmQgdmlhIGEgY29uZmlndXJh
dGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1
bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIsICdndGVzdF9j
b2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnZGJnJywKLSAgICAgICAgICAgIEZhbHNlLAot
ICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0
aW9ucyksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Qu
cHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEFsbCBidWlsdCBjb25maWd1cmF0aW9ucyAr
IGV4cGxpY2l0IGRpcmVjdG9yeSArIGV4cGxpY2l0IGNvbmZpZ3VyYXRpb24uCi0gICAgc2VsZi5B
c3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1
bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rlc3RfY29sb3JfdGVzdC5weSddLAot
ICAgICAgICAgICAgJ29wdCcsCi0gICAgICAgICAgICBUcnVlLAotICAgICAgICAgICAgYXZhaWxh
YmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChb
KEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKSwKLSAgICAgICAgICAo
R1RFU1RfT1BUX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtd
KSkKLQotICBkZWYgdGVzdENvbWJpbmF0aW9uT2ZCaW5hcnlBbmRQeXRob25UZXN0cyhzZWxmKToK
LSAgICAiIiJFeGVyY2lzZXMgR2V0VGVzdHNUb1J1biB3aXRoIG1peGVkIGJpbmFyeS9QeXRob24g
dGVzdHMuIiIiCi0KLSAgICAjIFVzZSBvbmx5IGRlZmF1bHQgY29uZmlndXJhdGlvbiBmb3IgdGhp
cyB0ZXN0LgotCi0gICAgIyBOZWl0aGVyIGJpbmFyeSBub3IgUHl0aG9uIHRlc3RzIGFyZSBzcGVj
aWZpZWQgc28gZmluZCBhbGwuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAg
IHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtdLAotICAgICAg
ICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25m
aWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoWyhHVEVTVF9E
QkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgWyhHVEVTVF9E
QkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIFNw
ZWNpZnlpbmcgYm90aCBiaW5hcnkgYW5kIFB5dGhvbiB0ZXN0cy4KLSAgICBzZWxmLkFzc2VydFJl
c3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAg
ICAgICAgICAgWydndGVzdF91bml0dGVzdCcsICdndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAg
ICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2Nv
bmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbKEdURVNU
X0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAgICBbKEdURVNU
X0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMg
U3BlY2lmeWluZyBiaW5hcnkgdGVzdHMgc3VwcHJlc3NlcyBQeXRob24gdGVzdHMuCi0gICAgc2Vs
Zi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNU
b1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICcnLAot
ICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9
c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFtdLAotICAgICAgICAgWyhHVEVT
VF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICMg
U3BlY2lmeWluZyBQeXRob24gdGVzdHMgc3VwcHJlc3NlcyBiaW5hcnkgdGVzdHMuCi0gICAgc2Vs
Zi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNU
b1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfY29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAg
JycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0
aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElS
LCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgW10pKQotCi0gIGRlZiB0
ZXN0SWdub3Jlc05vblRlc3RGaWxlcyhzZWxmKToKLSAgICAiIiJWZXJpZmllcyB0aGF0IEdldFRl
c3RzVG9SdW4gaWdub3JlcyBub24tdGVzdCBmaWxlcyBpbiB0aGUgZmlsZXN5c3RlbS4iIiIKLQot
ICAgIHNlbGYuZmFrZV9vcyA9IEZha2VPcyhGYWtlUGF0aCgKLSAgICAgICAgY3VycmVudF9kaXI9
b3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShydW5fdGVzdHNfdXRpbC5fX2ZpbGVfXykp
LAotICAgICAgICBrbm93bl9wYXRocz1bQWRkRXhlRXh0ZW5zaW9uKEdURVNUX0RCR19ESVIgKyAn
L2d0ZXN0X25vbnRlc3QnKSwKLSAgICAgICAgICAgICAgICAgICAgICd0ZXN0LyddKSkKLSAgICBz
ZWxmLnRlc3RfcnVubmVyID0gcnVuX3Rlc3RzX3V0aWwuVGVzdFJ1bm5lcihzY3JpcHRfZGlyPScu
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmpl
Y3RlZF9vcz1zZWxmLmZha2Vfb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5qZWN0ZWRfc3VicHJvY2Vzcz1Ob25lKQotICAgIHNlbGYuQXNzZXJ0
UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0g
ICAgICAgICAgICBbXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgVHJ1ZSwKLSAgICAg
ICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMp
LAotICAgICAgICAoW10sIFtdKSkKLQotICBkZWYgdGVzdFdvcmtzRnJvbURpZmZlcmVudERpcihz
ZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgR2V0VGVzdHNUb1J1biBmcm9tIGEgZGlyZWN0b3J5IGRp
ZmZlcmVudCBmcm9tIHJ1bl90ZXN0LnB5J3MuIiIiCi0KLSAgICAjIEhlcmUgd2Ugc2ltdWxhdGUg
YW4gdGVzdCBzY3JpcHQgaW4gZGlyZWN0b3J5IC9kLyBjYWxsZWQgZnJvbSB0aGUKLSAgICAjIGRp
cmVjdG9yeSAvYS9iL2MvLgotICAgIHNlbGYuZmFrZV9vcyA9IEZha2VPcyhGYWtlUGF0aCgKLSAg
ICAgICAgY3VycmVudF9kaXI9b3MucGF0aC5hYnNwYXRoKCcvYS9iL2MnKSwKLSAgICAgICAga25v
d25fcGF0aHM9WwotICAgICAgICAgICAgJy9hL2IvYy8nLAotICAgICAgICAgICAgQWRkRXhlRXh0
ZW5zaW9uKCcvZC8nICsgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAg
ICAgICAgIEFkZEV4ZUV4dGVuc2lvbignL2QvJyArIEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0X3Vu
aXR0ZXN0JyksCi0gICAgICAgICAgICAnL2QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5J10pKQot
ICAgIHNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyA9IFsnZGJnJywgJ29wdCddCi0gICAgc2VsZi50
ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5uZXIoc2NyaXB0X2Rpcj0nL2QvJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3Rl
ZF9vcz1zZWxmLmZha2Vfb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5qZWN0ZWRfc3VicHJvY2Vzcz1Ob25lKQotICAgICMgQSBiaW5hcnkgdGVz
dC4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5l
ci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF91bml0dGVzdCddLAotICAgICAg
ICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25m
aWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAg
ICAgICBbKCcvZC8nICsgR1RFU1RfREJHX0RJUiwgJy9kLycgKyBHVEVTVF9EQkdfRElSICsgJy9n
dGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIEEgUHl0aG9uIHRlc3QuCi0gICAgc2VsZi5Bc3Nl
cnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigK
LSAgICAgICAgICAgIFsnZ3Rlc3RfY29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJycsCi0g
ICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1z
ZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoWygnL2QvJyArIEdURVNUX0RCR19E
SVIsICcvZC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sIFtdKSkKLQotICBkZWYgdGVzdE5v
blRlc3RCaW5hcnkoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3RzVG9SdW4gd2l0aCBh
IG5vbi10ZXN0IHBhcmFtZXRlci4iIiIKLQotICAgIHNlbGYuYXNzZXJ0XygKLSAgICAgICAgbm90
IHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfdW5p
dHRlc3Rfbm90X3JlYWxseSddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwK
LSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJh
dGlvbnMpKQotCi0gIGRlZiB0ZXN0Tm9uRXhpc3RpbmdQeXRob25UZXN0KHNlbGYpOgotICAgICIi
IkV4ZXJjaXNlcyBHZXRUZXN0c1RvUnVuIHdpdGggYSBub24tZXhpc3RlbnQgUHl0aG9uIHRlc3Qg
cGFyYW1ldGVyLiIiIgotCi0gICAgc2VsZi5hc3NlcnRfKAotICAgICAgICBub3Qgc2VsZi50ZXN0
X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydub25leGlzdGVudF90ZXN0LnB5
J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZh
aWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucykpCi0KLSAgaWYg
cnVuX3Rlc3RzX3V0aWwuSVNfV0lORE9XUyBvciBydW5fdGVzdHNfdXRpbC5JU19DWUdXSU46Ci0K
LSAgICBkZWYgdGVzdERvZXNOb3RQaWNrTm9uRXhlRmlsZXNPbldpbmRvd3Moc2VsZik6Ci0gICAg
ICAiIiJWZXJpZmllcyB0aGF0IEdldFRlc3RzVG9SdW4gZG9lcyBub3QgZmluZCBfdGVzdCBmaWxl
cyBvbiBXaW5kb3dzLiIiIgotCi0gICAgICBzZWxmLmZha2Vfb3MgPSBGYWtlT3MoRmFrZVBhdGgo
Ci0gICAgICAgICAgY3VycmVudF9kaXI9b3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShy
dW5fdGVzdHNfdXRpbC5fX2ZpbGVfXykpLAotICAgICAgICAgIGtub3duX3BhdGhzPVsnL2QvJyAr
IEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3Rlc3QnLCAndGVzdC8nXSkpCi0gICAgICBzZWxmLnRl
c3RfcnVubmVyID0gcnVuX3Rlc3RzX3V0aWwuVGVzdFJ1bm5lcihzY3JpcHRfZGlyPScuJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluamVjdGVk
X29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluamVjdGVkX3N1YnByb2Nlc3M9Tm9uZSkKLSAgICAgIHNlbGYuQXNzZXJ0
UmVzdWx0c0VxdWFsKAotICAgICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigK
LSAgICAgICAgICAgICAgW10sCi0gICAgICAgICAgICAgICcnLAotICAgICAgICAgICAgICBUcnVl
LAotICAgICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZp
Z3VyYXRpb25zKSwKLSAgICAgICAgICAoW10sIFtdKSkKLQotCi1jbGFzcyBSdW5UZXN0c1Rlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgotICAiIiJFeGVyY2lzZXMgVGVzdFJ1bm5lci5SdW5UZXN0cy4i
IiIKLQotICBkZWYgU3Bhd25TdWNjZXNzKHNlbGYsIHVudXNlZF9leGVjdXRhYmxlLCB1bnVzZWRf
YXJndik6Ci0gICAgIiIiRmFrZXMgdGVzdCBzdWNjZXNzIGJ5IHJldHVybmluZyAwIGFzIGFuIGV4
aXQgY29kZS4iIiIKLQotICAgIHNlbGYubnVtX3NwYXduX2NhbGxzICs9IDEKLSAgICByZXR1cm4g
MAotCi0gIGRlZiBTcGF3bkZhaWx1cmUoc2VsZiwgdW51c2VkX2V4ZWN1dGFibGUsIHVudXNlZF9h
cmd2KToKLSAgICAiIiJGYWtlcyB0ZXN0IHN1Y2Nlc3MgYnkgcmV0dXJuaW5nIDEgYXMgYW4gZXhp
dCBjb2RlLiIiIgotCi0gICAgc2VsZi5udW1fc3Bhd25fY2FsbHMgKz0gMQotICAgIHJldHVybiAx
Ci0KLSAgZGVmIHNldFVwKHNlbGYpOgotICAgIHNlbGYuZmFrZV9vcyA9IEZha2VPcyhGYWtlUGF0
aCgKLSAgICAgICAgY3VycmVudF9kaXI9b3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShy
dW5fdGVzdHNfdXRpbC5fX2ZpbGVfXykpLAotICAgICAgICBrbm93bl9wYXRocz1bCi0gICAgICAg
ICAgICBBZGRFeGVFeHRlbnNpb24oR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwK
LSAgICAgICAgICAgIEFkZEV4ZUV4dGVuc2lvbihHVEVTVF9PUFRfRElSICsgJy9ndGVzdF91bml0
dGVzdCcpLAotICAgICAgICAgICAgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weSddKSkKLSAgICBz
ZWxmLmZha2VfY29uZmlndXJhdGlvbnMgPSBbJ2RiZycsICdvcHQnXQotICAgIHNlbGYudGVzdF9y
dW5uZXIgPSBydW5fdGVzdHNfdXRpbC5UZXN0UnVubmVyKAotICAgICAgICBzY3JpcHRfZGlyPW9z
LnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3IgJy4nLAotICAgICAgICBpbmplY3RlZF9vcz1zZWxm
LmZha2Vfb3MsCi0gICAgICAgIGluamVjdGVkX3N1YnByb2Nlc3M9Tm9uZSkKLSAgICBzZWxmLm51
bV9zcGF3bl9jYWxscyA9IDAgICMgQSBudW1iZXIgb2YgY2FsbHMgdG8gc3Bhd24uCi0KLSAgZGVm
IHRlc3RSdW5QeXRob25UZXN0U3VjY2VzcyhzZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgUnVuVGVz
dHMgdG8gaGFuZGxlIGEgUHl0aG9uIHRlc3Qgc3VjY2Vzcy4iIiIKLQotICAgIHNlbGYuZmFrZV9v
cy5zcGF3bl9pbXBsID0gc2VsZi5TcGF3blN1Y2Nlc3MKLSAgICBzZWxmLmFzc2VydEVxdWFsKAot
ICAgICAgICBzZWxmLnRlc3RfcnVubmVyLlJ1blRlc3RzKAotICAgICAgICAgICAgWyhHVEVTVF9E
QkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgICAgW10pLAot
ICAgICAgICAwKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5udW1fc3Bhd25fY2FsbHMsIDEp
Ci0KLSAgZGVmIHRlc3RSdW5CaW5hcnlUZXN0U3VjY2VzcyhzZWxmKToKLSAgICAiIiJFeGVyY2lz
ZXMgUnVuVGVzdHMgdG8gaGFuZGxlIGEgYmluYXJ5IHRlc3Qgc3VjY2Vzcy4iIiIKLQotICAgIHNl
bGYuZmFrZV9vcy5zcGF3bl9pbXBsID0gc2VsZi5TcGF3blN1Y2Nlc3MKLSAgICBzZWxmLmFzc2Vy
dEVxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLlJ1blRlc3RzKAotICAgICAgICAgICAg
W10sCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0
X3VuaXR0ZXN0JyldKSwKLSAgICAgICAgMCkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnVt
X3NwYXduX2NhbGxzLCAxKQotCi0gIGRlZiB0ZXN0UnVuUHl0aG9uVGVzdEZhdWlsdXJlKHNlbGYp
OgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0cyB0byBoYW5kbGUgYSBQeXRob24gdGVzdCBmYWls
dXJlLiIiIgotCi0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxmLlNwYXduRmFpbHVy
ZQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuUnVuVGVz
dHMoCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Qu
cHknKV0sCi0gICAgICAgICAgICBbXSksCi0gICAgICAgIDEpCi0gICAgc2VsZi5hc3NlcnRFcXVh
bChzZWxmLm51bV9zcGF3bl9jYWxscywgMSkKLQotICBkZWYgdGVzdFJ1bkJpbmFyeVRlc3RGYWls
dXJlKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0cyB0byBoYW5kbGUgYSBiaW5hcnkg
dGVzdCBmYWlsdXJlLiIiIgotCi0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxmLlNw
YXduRmFpbHVyZQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5u
ZXIuUnVuVGVzdHMoCi0gICAgICAgICAgICBbXSwKLSAgICAgICAgICAgIFsoR1RFU1RfREJHX0RJ
UiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pLAotICAgICAgICAxKQotICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5udW1fc3Bhd25fY2FsbHMsIDEpCi0KLSAgZGVmIHRlc3RD
b21iaW5lZFRlc3RTdWNjZXNzKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0cyB0byBo
YW5kbGUgYSBzdWNjZXNzIG9mIGJvdGggUHl0aG9uIGFuZCBiaW5hcnkgdGVzdC4iIiIKLQotICAg
IHNlbGYuZmFrZV9vcy5zcGF3bl9pbXBsID0gc2VsZi5TcGF3blN1Y2Nlc3MKLSAgICBzZWxmLmFz
c2VydEVxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLlJ1blRlc3RzKAotICAgICAgICAg
ICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSwK
LSAgICAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5p
dHRlc3QnKV0pLAotICAgICAgICAwKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5udW1fc3Bh
d25fY2FsbHMsIDIpCi0KLSAgZGVmIHRlc3RDb21iaW5lZFRlc3RTdWNjZXNzQW5kRmFpbHVyZShz
ZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgUnVuVGVzdHMgdG8gaGFuZGxlIGEgc3VjY2VzcyBvZiBi
b3RoIFB5dGhvbiBhbmQgYmluYXJ5IHRlc3QuIiIiCi0KLSAgICBkZWYgU3Bhd25JbXBsKGV4ZWN1
dGFibGUsIGFyZ3YpOgotICAgICAgc2VsZi5udW1fc3Bhd25fY2FsbHMgKz0gMQotICAgICAgIyBT
aW11bGF0ZXMgZmFpbHVyZSBvZiBhIFB5dGhvbiB0ZXN0IGFuZCBzdWNjZXNzIG9mIGEgYmluYXJ5
IHRlc3QuCi0gICAgICBpZiAnLnB5JyBpbiBleGVjdXRhYmxlIG9yICcucHknIGluIGFyZ3ZbMF06
Ci0gICAgICAgIHJldHVybiAxCi0gICAgICBlbHNlOgotICAgICAgICByZXR1cm4gMAotCi0gICAg
c2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBTcGF3bkltcGwKLSAgICBzZWxmLmFzc2VydEVxdWFs
KAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLlJ1blRlc3RzKAotICAgICAgICAgICAgWyhHVEVT
VF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSwKLSAgICAgICAg
ICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0p
LAotICAgICAgICAwKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5udW1fc3Bhd25fY2FsbHMs
IDIpCi0KLQotY2xhc3MgUGFyc2VBcmdzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICIiIkV4
ZXJjaXNlcyBQYXJzZUFyZ3MuIiIiCi0KLSAgZGVmIHRlc3ROb09wdGlvbnMoc2VsZik6Ci0gICAg
b3B0aW9ucywgYXJncyA9IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygnZ3Rlc3QnLCBhcmd2PVsn
c2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBbJ3NjcmlwdC5weSddKQot
ICAgIHNlbGYuYXNzZXJ0XyhvcHRpb25zLmNvbmZpZ3VyYXRpb25zIGlzIE5vbmUpCi0gICAgc2Vs
Zi5hc3NlcnRGYWxzZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRpb25zKQotCi0gIGRlZiB0ZXN0
T3B0aW9uQyhzZWxmKToKLSAgICBvcHRpb25zLCBhcmdzID0gcnVuX3Rlc3RzX3V0aWwuUGFyc2VB
cmdzKAotICAgICAgICAnZ3Rlc3QnLCBhcmd2PVsnc2NyaXB0LnB5JywgJy1jJywgJ2RiZyddKQot
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgWydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2Vy
dEVxdWFsKG9wdGlvbnMuY29uZmlndXJhdGlvbnMsICdkYmcnKQotICAgIHNlbGYuYXNzZXJ0RmFs
c2Uob3B0aW9ucy5idWlsdF9jb25maWd1cmF0aW9ucykKLQotICBkZWYgdGVzdE9wdGlvbkEoc2Vs
Zik6Ci0gICAgb3B0aW9ucywgYXJncyA9IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygnZ3Rlc3Qn
LCBhcmd2PVsnc2NyaXB0LnB5JywgJy1hJ10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBb
J3NjcmlwdC5weSddKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5jb25maWd1cmF0aW9u
cywgJ2FsbCcpCi0gICAgc2VsZi5hc3NlcnRGYWxzZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRp
b25zKQotCi0gIGRlZiB0ZXN0T3B0aW9uQihzZWxmKToKLSAgICBvcHRpb25zLCBhcmdzID0gcnVu
X3Rlc3RzX3V0aWwuUGFyc2VBcmdzKCdndGVzdCcsIGFyZ3Y9WydzY3JpcHQucHknLCAnLWInXSkK
LSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3Nl
cnRfKG9wdGlvbnMuY29uZmlndXJhdGlvbnMgaXMgTm9uZSkKLSAgICBzZWxmLmFzc2VydFRydWUo
b3B0aW9ucy5idWlsdF9jb25maWd1cmF0aW9ucykKLQotICBkZWYgdGVzdE9wdGlvbkNBbmRPcHRp
b25CKHNlbGYpOgotICAgIG9wdGlvbnMsIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3Mo
Ci0gICAgICAgICdndGVzdCcsIGFyZ3Y9WydzY3JpcHQucHknLCAnLWMnLCAnZGJnJywgJy1iJ10p
Ci0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBbJ3NjcmlwdC5weSddKQotICAgIHNlbGYuYXNz
ZXJ0RXF1YWwob3B0aW9ucy5jb25maWd1cmF0aW9ucywgJ2RiZycpCi0gICAgc2VsZi5hc3NlcnRU
cnVlKG9wdGlvbnMuYnVpbHRfY29uZmlndXJhdGlvbnMpCi0KLSAgZGVmIHRlc3RPcHRpb25IKHNl
bGYpOgotICAgIGhlbHBfY2FsbGVkID0gW0ZhbHNlXQotCi0gICAgIyBTdXBwcmVzc2VzIGxpbnQg
d2FybmluZyBvbiB1bnVzZWQgYXJndW1lbnRzLiAgVGhlc2UgYXJndW1lbnRzIGFyZQotICAgICMg
cmVxdWlyZWQgYnkgb3B0cGFyc2UsIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIHVudXNlZC4KLSAgICAj
IHB5bGludDogZGlzYWJsZS1tc2c9VzA2MTMKLSAgICBkZWYgVmVyaWZ5SGVscChvcHRpb24sIG9w
dCwgdmFsdWUsIHBhcnNlcik6Ci0gICAgICBoZWxwX2NhbGxlZFswXSA9IFRydWUKLQotICAgICMg
VmVyaWZpZXMgdGhhdCAtaCBjYXVzZXMgdGhlIGhlbHAgY2FsbGJhY2sgdG8gYmUgY2FsbGVkLgot
ICAgIGhlbHBfY2FsbGVkWzBdID0gRmFsc2UKLSAgICBfLCBhcmdzID0gcnVuX3Rlc3RzX3V0aWwu
UGFyc2VBcmdzKAotICAgICAgICAnZ3Rlc3QnLCBhcmd2PVsnc2NyaXB0LnB5JywgJy1oJ10sIGhl
bHBfY2FsbGJhY2s9VmVyaWZ5SGVscCkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsnc2Ny
aXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRUcnVlKGhlbHBfY2FsbGVkWzBdKQotCi0gICAgIyBW
ZXJpZmllcyB0aGF0IC0taGVscCBjYXVzZXMgdGhlIGhlbHAgY2FsbGJhY2sgdG8gYmUgY2FsbGVk
LgotICAgIGhlbHBfY2FsbGVkWzBdID0gRmFsc2UKLSAgICBfLCBhcmdzID0gcnVuX3Rlc3RzX3V0
aWwuUGFyc2VBcmdzKAotICAgICAgICAnZ3Rlc3QnLCBhcmd2PVsnc2NyaXB0LnB5JywgJy0taGVs
cCddLCBoZWxwX2NhbGxiYWNrPVZlcmlmeUhlbHApCi0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdz
LCBbJ3NjcmlwdC5weSddKQotICAgIHNlbGYuYXNzZXJ0VHJ1ZShoZWxwX2NhbGxlZFswXSkKLQot
Ci1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9EZWJ1Z1Byb2plY3QueGNj
b25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvRGVidWdQcm9qZWN0
LnhjY29uZmlnCmluZGV4IDU3NmYzZDliZjBlMjRmNmVlOTg5MTgxM2U0ZTE4ZTRmMWMxYmU0NjIu
LjNkNjgxNTdkNWQ1MTJhODgwZjE4Njg1NmMzYmExMGI0YTJiMTgwMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9EZWJ1Z1Byb2plY3QueGNjb25maWcK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0RlYnVnUHJvamVjdC54
Y2NvbmZpZwpAQCAtMjgsMTIgKzI4LDMgQEAgT1RIRVJfQ0ZMQUdTID0gJChPVEhFUl9DRkxBR1Mp
IC1EREVCVUc9MQogLy8gVGhlc2UgYXJlIHR1cm5lZCBvZmYgdG8gYXZvaWQgU1RMIGluY29tcGF0
aWJpbGl0aWVzIHdpdGggY2xpZW50IGNvZGUKIC8vIC8vIFR1cm5zIG9uIHNwZWNpYWwgQysrIFNU
TCBjaGVja3MgdG8gImVuY291cmFnZSIgZ29vZCBTVEwgdXNlCiAvLyBHQ0NfUFJFUFJPQ0VTU09S
X0RFRklOSVRJT05TID0gJChHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TKSBfR0xJQkNYWF9E
RUJVR19QRURBTlRJQyBfR0xJQkNYWF9ERUJVRyBfR0xJQkNQUF9DT05DRVBUX0NIRUNLUwotCi0v
LyBVc2VkIGJ5IEhFQURFUl9TRUFSQ0hfUEFUSFMgaW4gR2VuZXJhbC54Y2NvbmZpZwotV0VCQ09S
RV9QUklWQVRFX0hFQURFUlNfRElSID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL1dlYkNvcmUuZnJh
bWV3b3JrL1ByaXZhdGVIZWFkZXJzOwotCi1PTkxZX0FDVElWRV9BUkNIID0gWUVTCi0KLVNES1JP
T1QgPSAkKFNES1JPT1RfJChVU0VfSU5URVJOQUxfU0RLKSk7Ci1TREtST09UXyA9IG1hY29zeDsK
LVNES1JPT1RfWUVTID0gbWFjb3N4LmludGVybmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0ZyYW1ld29ya1RhcmdldC54Y2NvbmZpZyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9GcmFtZXdvcmtUYXJnZXQueGNjb25maWcK
aW5kZXggZjRkYTlkMjM5OTE2MzVhYmRjZGE4MmI2YTA2ZWFjM2ZjODU4OTBhZC4uMzU3YjFjOGZi
ZmEyMzFkYTNlY2YyZGMzN2NjZTE3MjgzMDQyOTExYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0ZyYW1ld29ya1RhcmdldC54Y2NvbmZpZworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvRnJhbWV3b3JrVGFyZ2V0LnhjY29u
ZmlnCkBAIC0xNSw1ICsxNSwzIEBAIFNUUklQX1NUWUxFID0gbm9uLWdsb2JhbAogCiAvLyBMZXQg
dGhlIHVzZXIgaW5zdGFsbCBieSBzcGVjaWZ5aW5nIHRoZSAkRFNUUk9PVCB3aXRoIHhjb2RlYnVp
bGQKIFNLSVBfSU5TVEFMTCA9IE5PCi0KLUlOU1RBTExfUEFUSCA9ICQoU1lTVEVNX0xJQlJBUllf
RElSKS9Qcml2YXRlRnJhbWV3b3JrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3hjb2RlL0NvbmZpZy9HZW5lcmFsLnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QveGNvZGUvQ29uZmlnL0dlbmVyYWwueGNjb25maWcKaW5kZXggZDg3NjNkNjQ0MWI4YjkwYmZj
OTk2ZTZjMGM5ZmZjZTA3MWExMjE3Mi4uZjIzZTMyMjI3Mjc1NjM0M2MwNGY1MGMyZjc5OTc0NDAw
OGI0NWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmln
L0dlbmVyYWwueGNjb25maWcKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29u
ZmlnL0dlbmVyYWwueGNjb25maWcKQEAgLTUsMjAgKzUsMTAgQEAKIC8vICBleGFtcGxlcy4KIC8v
ICBUaGlzIGZpbGUgaXMgYmFzZWQgb24gdGhlIFhjb2RlIENvbmZpZ3VyYXRpb24gZmlsZXMgaW46
CiAvLyAgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS10b29sYm94LWZvci1tYWMvCi0v
LwotCi0jaW5jbHVkZSAiLi4vLi4vLi4vLi4vLi4vLi4vSW50ZXJuYWwvQ29uZmlndXJhdGlvbnMv
SGF2ZUludGVybmFsU0RLLnhjY29uZmlnIgotCi1VU0VfSU5URVJOQUxfU0RLID0gJChVU0VfSU5U
RVJOQUxfU0RLXyQoQ09ORklHVVJBVElPTikpOwotVVNFX0lOVEVSTkFMX1NES19Qcm9kdWN0aW9u
ID0gWUVTOwotVVNFX0lOVEVSTkFMX1NES19EZWJ1ZyA9ICQoSEFWRV9JTlRFUk5BTF9TREspOwot
VVNFX0lOVEVSTkFMX1NES19SZWxlYXNlID0gJChIQVZFX0lOVEVSTkFMX1NESyk7Ci0KLUdDQ19W
RVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKLQotQVJDSFMgPSAk
KEFSQ0hTX1NUQU5EQVJEXzMyXzY0X0JJVCk7CisvLyAKIAotSEVBREVSX1NFQVJDSF9QQVRIUyA9
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZSAiJChXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVIpL0ZvcndhcmRpbmdIZWFkZXJzIiAuLi8gLi4vaW5jbHVkZS8KKy8vIEJ1
aWxkIGZvciBQUEMgYW5kIEludGVsLCAzMi0gYW5kIDY0LWJpdAorQVJDSFMgPSBpMzg2IHg4Nl82
NCBwcGMgcHBjNjQKIAogLy8gWmVyb2xpbmsgcHJldmVudHMgbGluayB3YXJuaW5ncyBzbyB0dXJu
IGl0IG9mZgogWkVST19MSU5LID0gTk8KQEAgLTI4LDE5ICsxOCw2IEBAIFBSRUJJTkRJTkcgPSBO
TwogCiAvLyBTdHJpY3Rlc3Qgd2FybmluZyBwb2xpY3kKIFdBUk5JTkdfQ0ZMQUdTID0gLVdhbGwg
LVdlcnJvciAtV2VuZGlmLWxhYmVscyAtV25ld2xpbmUtZW9mIC1Xbm8tc2lnbi1jb21wYXJlIC1X
c2hhZG93Ci1DTEFOR19XQVJOX0JPT0xfQ09OVkVSU0lPTiA9IFlFUzsKLUNMQU5HX1dBUk5fQ09O
U1RBTlRfQ09OVkVSU0lPTiA9IFlFUzsKLUNMQU5HX1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsKLUNM
QU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOwotQ0xBTkdfV0FSTl9JTlRfQ09OVkVSU0lP
TiA9IFlFUzsKLUNMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZRVM7Ci1FTkFC
TEVfU1RSSUNUX09CSkNfTVNHU0VORCA9IFlFUzsKLUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05W
RVJTSU9OID0gWUVTOwotR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7Ci1HQ0NfV0FS
Tl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOwotR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRP
UyA9IFlFUzsKLUdDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlFUzsKLUdDQ19XQVJOX1VOVVNF
RF9WQVJJQUJMRSA9IFlFUzsKIAogLy8gV29yayBhcm91bmQgWGNvZGUgYnVncyBieSB1c2luZyBl
eHRlcm5hbCBzdHJpcC4gU2VlOgogLy8gaHR0cDovL2xpc3RzLmFwcGxlLmNvbS9hcmNoaXZlcy9Y
Y29kZS11c2Vycy8yMDA2L0ZlYi9tc2cwMDA1MC5odG1sCkBAIC00OSwyNyArMjYsMTYgQEAgU0VQ
QVJBVEVfU1RSSVAgPSBZRVMKIC8vIEZvcmNlIEM5OSBkaWFsZWN0CiBHQ0NfQ19MQU5HVUFHRV9T
VEFOREFSRCA9IGM5OQogCi0vLyBGb3JjZSBDKysxNAotQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5E
QVJEID0gZ251KysxNDsKLQogLy8gbm90IHN1cmUgd2h5IGFwcGxlIGRlZmF1bHRzIHRoaXMgb24s
IGJ1dCBpdCdzIHByZXR0eSByaXNreQogQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk8KIAog
Ly8gVHVybiBvbiBwb3NpdGlvbiBkZXBlbmRlbnQgY29kZSBmb3IgbW9zdCBjYXNlcyAob3ZlcnJp
ZGRlbiB3aGVyZSBhcHByb3ByaWF0ZSkKIEdDQ19EWU5BTUlDX05PX1BJQyA9IFlFUwogCi1HQ0Nf
UFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05T
KSBHVEVTVF9IQVNfVFIxX1RVUExFPTAgR1RFU1RfSEFTX1JUVEk9MDsKLQotQ0xBTkdfQ1hYX0xJ
QlJBUlkgPSBsaWJjKys7Ci0KLVRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SID0gJChNQUNf
T1NfWF9WRVJTSU9OX01BSk9SKTsKLQotQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CisvLyBE
ZWZhdWx0IFNESyBhbmQgbWluaW11bSBPUyB2ZXJzaW9uIGlzIDEwLjQKK1NES1JPT1QgPSAkKERF
VkVMT1BFUl9TREtfRElSKS9NYWNPU1gxMC40dS5zZGsKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdF
VCA9IDEwLjQKK0dDQ19WRVJTSU9OID0gNC4wCiAKIC8vIFZFUlNJT05JTkcgQlVJTEQgU0VUVElO
R1MgKHVzZWQgaW4gSW5mby5wbGlzdCkKIEdURVNUX1ZFUlNJT05JTkZPX0FCT1VUID0gIMKpIDIw
MDggR29vZ2xlIEluYy4KLU9USEVSX0NGTEFHUyA9ICQoQVNBTl9PVEhFUl9DRkxBR1MpOwotT1RI
RVJfQ1BMVVNQTFVTRkxBR1MgPSAkKEFTQU5fT1RIRVJfQ1BMVVNQTFVTRkxBR1MpOwotT1RIRVJf
TERGTEFHUyA9ICQoQVNBTl9PVEhFUl9MREZMQUdTKTsKLQotU1VQUE9SVEVEX1BMQVRGT1JNUyA9
IGlwaG9uZW9zIGlwaG9uZXNpbXVsYXRvciBtYWNvc3ggdHZvcyB0dnNpbXVsYXRvciB3YXRjaG9z
IHdhdGNoc2ltdWxhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNv
ZGUvQ29uZmlnL1Byb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QveGNvZGUvQ29uZmlnL1Byb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmlnCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMTZjNjg3OGU5NzYxMDE4OGRhYTg2MjlkMzUyMWFiOTQ3NzZi
YWM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9Qcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZp
ZworKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8vCi0vLyAgUHJvZHVjdGlvblByb2pl
Y3QueGNjb25maWcKLS8vCi0vLyAgVGhlc2UgYXJlIFByb2R1Y3Rpb24gQ29uZmlndXJhdGlvbiBw
cm9qZWN0IHNldHRpbmdzIGZvciB0aGUgZ3Rlc3QgZnJhbWV3b3JrCi0vLyAgYW5kIGV4YW1wbGVz
LiBJdCBpcyBzZXQgaW4gdGhlICJCYXNlZCBPbjoiIGRyb3Bkb3duIGluIHRoZSAiUHJvamVjdCIg
aW5mbwotLy8gIGRpYWxvZy4KLS8vICBUaGlzIGZpbGUgaXMgYmFzZWQgb24gdGhlIFhjb2RlIENv
bmZpZ3VyYXRpb24gZmlsZXMgaW46Ci0vLyAgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2ds
ZS10b29sYm94LWZvci1tYWMvCi0vLyAKLQotI2luY2x1ZGUgIlJlbGVhc2VQcm9qZWN0LnhjY29u
ZmlnIgotCi0vLyBVc2VkIGJ5IEhFQURFUl9TRUFSQ0hfUEFUSFMgaW4gR2VuZXJhbC54Y2NvbmZp
ZwotV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSID0gJChXRUJDT1JFX1BSSVZBVEVfSEVBREVS
U19ESVJfJChXS19VU0VfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVIpKTsKLVdFQkNPUkVfUFJJVkFU
RV9IRUFERVJTX0RJUl9OTyA9ICQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL1dlYktp
dC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL1dlYkNvcmUuZnJhbWV3b3JrL1ByaXZh
dGVIZWFkZXJzOwotV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSX1lFUyA9ICQoV0tfT1ZFUlJJ
REVfRlJBTUVXT1JLU19ESVIpL1dlYkNvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwotCi1G
UkFNRVdPUktfU0VBUkNIX1BBVEhTID0gJChXS19RVU9URURfT1ZFUlJJREVfRlJBTUVXT1JLU19E
SVIpICQoaW5oZXJpdGVkKTsKLQotT05MWV9BQ1RJVkVfQVJDSCA9IE5PCi0KLVNES1JPT1QgPSBt
YWNvc3guaW50ZXJuYWw7Ci0KLVdLX0VNUFRZXyA9IFlFUzsKLVdLX05PVF8gPSBZRVM7Ci1XS19O
T1RfWUVTID0gTk87Ci0KLVdLX1VTRV9PVkVSUklERV9GUkFNRVdPUktTX0RJUltzZGs9bWFjb3N4
Kl0gPSAkKFdLX05PVF8kKFdLX0VNUFRZXyQoV0tfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVIpKSk7
Ci0KLVdLX09WRVJSSURFX0ZSQU1FV09SS1NfRElSID0gJChXS19PVkVSUklERV9GUkFNRVdPUktT
X0RJUl9VU0VfU1RBR0lOR19JTlNUQUxMX1BBVEhfJChVU0VfU1RBR0lOR19JTlNUQUxMX1BBVEgp
KTsKLVdLX09WRVJSSURFX0ZSQU1FV09SS1NfRElSX1VTRV9TVEFHSU5HX0lOU1RBTExfUEFUSF9Z
RVMgPSAkKFNZU1RFTV9MSUJSQVJZX0RJUikvU3RhZ2VkRnJhbWV3b3Jrcy9TYWZhcmk7Ci0KLVdL
X1FVT1RFRF9PVkVSUklERV9GUkFNRVdPUktTX0RJUiA9ICQoV0tfUVVPVEVEX09WRVJSSURFX0ZS
QU1FV09SS1NfRElSXyQoV0tfVVNFX09WRVJSSURFX0ZSQU1FV09SS1NfRElSKSk7Ci1XS19RVU9U
RURfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVJfWUVTID0gIiQoV0tfT1ZFUlJJREVfRlJBTUVXT1JL
U19ESVIpIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZp
Zy9SZWxlYXNlUHJvamVjdC54Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2Rl
L0NvbmZpZy9SZWxlYXNlUHJvamVjdC54Y2NvbmZpZwppbmRleCAxM2U5MTdmYmZhMmRkZjJkM2Vl
NTMxNTk4ZGMwZmIwZjJiNWJmODc2Li41MzQ5ZjBhMDRhZmM3ODM3Nzg3ODI4ZDNmNDI0YTg4OTg3
NGVjOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcv
UmVsZWFzZVByb2plY3QueGNjb25maWcKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNv
ZGUvQ29uZmlnL1JlbGVhc2VQcm9qZWN0LnhjY29uZmlnCkBAIC0zMCwxMiArMzAsMyBAQCBPVEhF
Ul9DRkxBR1MgPSAkKE9USEVSX0NGTEFHUykgLUROREVCVUc9MSAtV25vLXVudXNlZC12YXJpYWJs
ZQogCiAvLyBXaGVuIHdlIHN0cmlwIHdlIHdhbnQgdG8gc3RyaXAgYWxsIHN5bWJvbHMgaW4gcmVs
ZWFzZSwgYnV0IHNhdmUgZXh0ZXJuYWxzLgogU1RSSVBfU1RZTEUgPSBhbGwKLQotLy8gVXNlZCBi
eSBIRUFERVJfU0VBUkNIX1BBVEhTIGluIEdlbmVyYWwueGNjb25maWcKLVdFQkNPUkVfUFJJVkFU
RV9IRUFERVJTX0RJUiA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9XZWJDb3JlLmZyYW1ld29yay9Q
cml2YXRlSGVhZGVyczsKLQotT05MWV9BQ1RJVkVfQVJDSCA9IFlFUwotCi1TREtST09UID0gJChT
REtST09UXyQoVVNFX0lOVEVSTkFMX1NESykpOwotU0RLUk9PVF8gPSBtYWNvc3g7Ci1TREtST09U
X1lFUyA9IG1hY29zeC5pbnRlcm5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3hjb2RlL0NvbmZpZy9TdGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmlnIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcK
aW5kZXggZGQzMzI1NWE5NDQ3NzAyMGNmMTFmNzA1NWU0NGFlMjUyOGViOWY5Ny4uMzkyMmZhNTFk
NTJkNWZmMGYzMDQ2ZmY1MWMwYWQ2YTk2ZmI0OGJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlUYXJn
ZXQueGNjb25maWcKQEAgLTE2LDUgKzE2LDMgQEAgU1RSSVBfU1RZTEUgPSBkZWJ1Z2dpbmcKIAog
Ly8gTGV0IHRoZSB1c2VyIGluc3RhbGwgYnkgc3BlY2lmeWluZyB0aGUgJERTVFJPT1Qgd2l0aCB4
Y29kZWJ1aWxkCiBTS0lQX0lOU1RBTEwgPSBOTwotCi1PVEhFUl9MREZMQUdTID0gOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvTWFrZWZpbGUgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC94Y29kZS9NYWtlZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMmM4ZTg0OTNkZjI5NjhhYmU3NzFjNmQ2NzhlOGQyOWQzOWM5YjNhNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC94Y29kZS9NYWtlZmlsZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotU0NSSVBUU19Q
QVRIID89IC4uLy4uLy4uLy4uL1Rvb2xzL1NjcmlwdHMKLWluY2x1ZGUgLi4vLi4vLi4vLi4vTWFr
ZWZpbGUuc2hhcmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9T
YW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9ydW50ZXN0cy5zaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3J1bnRlc3RzLnNoCm9sZCBtb2RlIDEw
MDc1NQpuZXcgbW9kZSAxMDA2NDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0X3Rlc3Qu
Y2MKaW5kZXggNjFjMGQyZmZkNzZkMTgwNmFhMzU5NzlkOGFlMzY0MTA2NDhhYWExNS4uODcyNTk5
NDIxODUxNDA4ZTc2YWFiNmM1NjBiODE4OTI0NTliYmQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0X3Rlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtT
YW1wbGUvd2lkZ2V0X3Rlc3QuY2MKQEAgLTM2LDcgKzM2LDcgQEAKIC8vIFRoaXMgaXMgYSBzaW1w
bGUgdGVzdCBmaWxlIGZvciB0aGUgV2lkZ2V0IGNsYXNzIGluIHRoZSBXaWRnZXQuZnJhbWV3b3Jr
CiAKICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgogCiAjaW5jbHVkZSA8V2lkZ2V0L3dpZGdldC5oPgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9TY3JpcHRzL3J1bnRlc3RzLnNoIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2NyaXB0cy9ydW50ZXN0cy5zaApvbGQgbW9k
ZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC94Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3hjb2RlL1NjcmlwdHMvdmVyc2lvbmdlbmVyYXRlLnB5Cm9sZCBtb2RlIDEwMDY0NApu
ZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2Rl
L2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC94Y29kZS9ndGVzdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFmZjNmYmFmZWZi
YWFjM2I4MzgyNDhiMTdkNTY4NzZiM2Q1ZjZiZTguLjg0NzNjM2M5MjMzNDYwZGIxMWNlYjgyYWJh
ZTJhMzY3NjlmMmNjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2Rl
L2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QveGNvZGUvZ3Rlc3QueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzcsNyArMzcs
NiBAQAogLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBC
WEJ1aWxkRmlsZSBzZWN0aW9uICovCi0JCTFBMEE0QzQ1MTRCN0EzQjUwMDg5NTEzNSAvKiBKYXZh
U2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQTBBNEM0NDE0QjdBM0I1MDA4OTUxMzUgLyogSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrICovOyB9OwogCQkyMjRBMTJBMzBFOUVBRENDMDBCRDE3RkQgLyogZ3Rlc3QtdGVz
dC1wYXJ0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
MjRBMTJBMjBFOUVBRENDMDBCRDE3RkQgLyogZ3Rlc3QtdGVzdC1wYXJ0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkzQkY2RjJBMDBFNzlCNUFEMDAw
RjJFRUUgLyogZ3Rlc3QtdHlwZS11dGlsLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNCRjZGMjlGMEU3OUI1QUQwMDBGMkVFRSAv
KiBndGVzdC10eXBlLXV0aWwuaCAqLzsgfTsKIAkJM0JGNkYyQTUwRTc5QjYxNjAwMEYyRUVFIC8q
IGd0ZXN0LXR5cGVkLXRlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDNCRjZGMkE0MEU3OUI2MTYwMDBGMkVFRSAvKiBndGVzdC10eXBlZC10ZXN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwpAQCAtNDcsNyAr
NDYsNyBAQAogCQk0MDQ4ODQzQjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0RFMEUyRjc5OUIwMENG
NzY1OCAvKiBndGVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsg
fTsgfTsKIAkJNDA0ODg0M0MwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X3ByZWRfaW1wbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzREYwRTJG
Nzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X3ByZWRfaW1wbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNDA0ODg0M0QwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0
ZXN0X3Byb2QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQwNDg4M0UwMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcm9kLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQk0MDQ4ODQ1MDBFMkY3OTlCMDBDRjc2
NTggLyogUkVBRE1FIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MDQ4ODNGNjBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FICovOyB9OworCQk0MDQ4ODQ1
MDBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FLm1kIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNGNjBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1F
Lm1kICovOyB9OwogCQk0MDQ4ODRBMDBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3QtZGVhdGgtdGVz
dC1pbnRlcm5hbC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNFMjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtZGVhdGgt
dGVzdC1pbnRlcm5hbC5oICovOyB9OwogCQk0MDQ4ODRBMTBFMkY3QkU2MDBDRjc2NTggLyogZ3Rl
c3QtZmlsZXBhdGguaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRTMwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWZpbGVw
YXRoLmggKi87IH07CiAJCTQwNDg4NEEyMEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1pbnRlcm5h
bC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MDQ4ODNFNDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtaW50ZXJuYWwuaCAqLzsg
fTsKQEAgLTU1LDcgKzU0LDcgQEAKIAkJNDA0ODg0QTQwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0
LXN0cmluZy5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MDQ4ODNFNjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Qtc3RyaW5nLmgg
Ki87IH07CiAJCTQwNDg4NEFDMEUyRjdDRDkwMENGNzY1OCAvKiBDSEFOR0VTIGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODRBOTBFMkY3Q0Q5MDBD
Rjc2NTggLyogQ0hBTkdFUyAqLzsgfTsKIAkJNDA0ODg0QUQwRTJGN0NEOTAwQ0Y3NjU4IC8qIENP
TlRSSUJVVE9SUyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDA0ODg0QUEwRTJGN0NEOTAwQ0Y3NjU4IC8qIENPTlRSSUJVVE9SUyAqLzsgfTsKLQkJNDA0
ODg0QUUwRTJGN0NEOTAwQ0Y3NjU4IC8qIENPUFlJTkcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4NEFCMEUyRjdDRDkwMENGNzY1OCAvKiBDT1BZ
SU5HICovOyB9OworCQk0MDQ4ODRBRTBFMkY3Q0Q5MDBDRjc2NTggLyogTElDRU5TRSBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODg0QUIwRTJGN0NE
OTAwQ0Y3NjU4IC8qIExJQ0VOU0UgKi87IH07CiAJCTQwODk5RjNBMEZGQTcwRDQwMDBCMjlBRSAv
KiBndGVzdC1hbGwuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyMjRBMTJBMTBFOUVBREE3MDBCRDE3RkQgLyogZ3Rlc3QtYWxsLmNjICovOyB9OwogCQk0
MDg5OUY1MDBGRkE3MjgxMDAwQjI5QUUgLyogZ3Rlc3QtdHVwbGUuaCBpbiBDb3B5IEhlYWRlcnMg
SW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA4OTlGNEQwRkZB
NzI3MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggKi87IH07CiAJCTQwODk5RjUzMEZGQTcyQTAw
MDBCMjlBRSAvKiBndGVzdF91bml0dGVzdC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDNCMjM4QzEyMEU3RkUxM0MwMDg0NkUxMSAvKiBndGVzdF91bml0
dGVzdC5jYyAqLzsgfTsKQEAgLTc5LDYgKzc4LDExIEBACiAJCTQ1MzlDOTM4MEVDMjgwRTIwMEE3
MEY0QyAvKiBndGVzdC1saW5rZWRfcHRyLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MzlDOTM1MEVDMjgwRTIwMEE3MEY0QyAv
KiBndGVzdC1saW5rZWRfcHRyLmggKi87IH07CiAJCTQ1MzlDOTM5MEVDMjgwRTIwMEE3MEY0QyAv
KiBndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTM5QzkzNjBFQzI4MEUyMDBBNzBG
NEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCAqLzsgfTsKIAkJNDUzOUM5M0EwRUMy
ODBFMjAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJu
YWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUzOUM5MzcwRUMyODBFMjAw
QTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwuaCAqLzsgfTsKKwkJNDU2N0M4MTgxMjY0RkY3MTAw
Nzc0MEJFIC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NTY3QzgxNzEyNjRGRjcxMDA3NzQwQkUgLyogZ3Rlc3QtcHJpbnRl
cnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCUUz
NUI1RTI4MUY2MTQ5NDAwMDU0NkYxRCAvKiBndGVzdC1wb3J0LWFyY2guaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUI1RTI3MUY2MTQ5NDAwMDU0NkYx
RCAvKiBndGVzdC1wb3J0LWFyY2guaCAqLzsgfTsKKwkJRTM1QjVFMkYxRjYxNDk4NDAwNTQ2RjFE
IC8qIGd0ZXN0LXBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNUI1RTJDMUY2MTQ5ODQwMDU0NkYxRCAvKiBndGVzdC1wb3J0LmggKi87IH07CisJ
CUUzNUI1RTMwMUY2MTQ5ODQwMDU0NkYxRCAvKiBndGVzdC1wcmludGVycy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1QjVFMkQxRjYxNDk4NDAwNTQ2
RjFEIC8qIGd0ZXN0LXByaW50ZXJzLmggKi87IH07CisJCUUzNUI1RTMxMUY2MTQ5ODQwMDU0NkYx
RCAvKiBndGVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM1QjVFMkUxRjYxNDk4NDAwNTQ2RjFEIC8qIGd0ZXN0LmggKi87IH07CiAvKiBFbmQgUEJY
QnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNl
Y3Rpb24gKi8KQEAgLTE5OSw3ICsyMDMsNiBAQAogLyogRW5kIFBCWENvcHlGaWxlc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KLQkJ
MUEwQTRDNDQxNEI3QTNCNTAwODk1MTM1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJh
bWV3b3JrOyBwYXRoID0gSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwogCQkyMjRBMTJBMTBFOUVBREE3MDBCRDE3RkQgLyogZ3Rlc3Qt
YWxsLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9ICJndGVzdC1hbGwu
Y2MiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyMjRBMTJBMjBFOUVBRENDMDBCRDE3
RkQgLyogZ3Rlc3QtdGVzdC1wYXJ0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSAiZ3Rlc3QtdGVzdC1wYXJ0LmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzQjIz
OEMxMjBFN0ZFMTNDMDA4NDZFMTEgLyogZ3Rlc3RfdW5pdHRlc3QuY2MgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBndGVzdF91bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIxOCwxMSArMjIxLDExIEBACiAJCTQwNDg4M0U0MEUyRjc5OUIwMENG
NzY1OCAvKiBndGVzdC1pbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSAiZ3Rlc3QtaW50ZXJuYWwuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwNDg4
M0U1MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1wb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9ICJndGVzdC1wb3J0LmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MDQ4ODNFNjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Qtc3RyaW5nLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1zdHJpbmcuaCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQwNDg4M0Y2MEUyRjc5OUIwMENGNzY1OCAvKiBSRUFETUUgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBuYW1lID0gUkVBRE1FOyBwYXRoID0gLi4vUkVBRE1FOyBzb3VyY2VUcmVlID0gU09V
UkNFX1JPT1Q7IH07CisJCTQwNDg4M0Y2MEUyRjc5OUIwMENGNzY1OCAvKiBSRUFETUUubWQgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gUkVBRE1FLm1kOyBwYXRoID0gLi4vUkVBRE1FLm1kOyBzb3Vy
Y2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTQwNDg4NDBEMEUyRjc5OUIwMENGNzY1OCAvKiBn
dGVzdF9tYWluLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gZ3Rlc3Rf
bWFpbi5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDA0ODg0QTkwRTJGN0NEOTAw
Q0Y3NjU4IC8qIENIQU5HRVMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gQ0hBTkdFUzsgcGF0aCA9
IC4uL0NIQU5HRVM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNDA0ODg0QUEwRTJG
N0NEOTAwQ0Y3NjU4IC8qIENPTlRSSUJVVE9SUyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDT05U
UklCVVRPUlM7IHBhdGggPSAuLi9DT05UUklCVVRPUlM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9P
VDsgfTsKLQkJNDA0ODg0QUIwRTJGN0NEOTAwQ0Y3NjU4IC8qIENPUFlJTkcgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBuYW1lID0gQ09QWUlORzsgcGF0aCA9IC4uL0NPUFlJTkc7IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKKwkJNDA0ODg0QUIwRTJGN0NEOTAwQ0Y3NjU4IC8qIExJQ0VOU0UgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBuYW1lID0gTElDRU5TRTsgcGF0aCA9IC4uL0xJQ0VOU0U7IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKIAkJNDA4OTlGNDMwRkZBNzE4NDAwMEIyOUFFIC8qIGd0ZXN0X3Vu
aXR0ZXN0LWZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZp
bGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAw
OyBwYXRoID0gImd0ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayI7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CiAJCTQwODk5RjREMEZGQTcyNzEwMDBCMjlBRSAvKiBndGVzdC10dXBs
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtdHVwbGUuaCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwODk5RkIzMEZGQTc1NjcwMDBCMjlBRSAvKiBT
dGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0
aCA9IFN0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMzksMTIgKzI0MiwxNiBAQAogCQk0MEQ0Q0RGMzBFMzBFMDc0MDAyOTQ4MDEgLyog
R2VuZXJhbC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBHZW5lcmFs
LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MEQ0Q0RGNDBFMzBFMDc0
MDAyOTQ4MDEgLyogUmVsZWFzZVByb2plY3QueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29u
ZmlnOyBwYXRoID0gUmVsZWFzZVByb2plY3QueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQwRDRDRjUxMEUzMEY1RTIwMDI5NDgwMSAvKiBJbmZvLnBsaXN0ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5wbGlzdC54bWw7IHBhdGggPSBJbmZvLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0NEM0OERGRjE0QTQwOThGMDBBMkQ5QzcgLyogUHJvZHVjdGlvblByb2plY3Qu
eGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gUHJvZHVjdGlvblByb2pl
Y3QueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1MzlDOEZGMEVDMjdG
NjQwMEE3MEY0QyAvKiBndGVzdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBpbmNsdWRlSW5JbmRleCA9
IDA7IHBhdGggPSBndGVzdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTQ1MzlDOTMzMEVDMjgwQUUwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS10ZXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1wYXJhbS10ZXN0LmgiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NTM5QzkzNTBFQzI4MEUyMDBBNzBGNEMgLyog
Z3Rlc3QtbGlua2VkX3B0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rl
c3QtbGlua2VkX3B0ci5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDUzOUM5MzYw
RUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDUzOUM5MzcwRUMyODBFMjAwQTcwRjRDIC8q
IGd0ZXN0LXBhcmFtLXV0aWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0
ZXN0LXBhcmFtLXV0aWwuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ1NjdDODE3
MTI2NEZGNzEwMDc3NDBCRSAvKiBndGVzdC1wcmludGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcHJpbnRlcnMuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUzNUI1RTI3MUY2MTQ5NDAwMDU0NkYxRCAvKiBndGVzdC1wb3J0LWFyY2guaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXBvcnQtYXJjaC5oIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1QjVFMkMxRjYxNDk4NDAwNTQ2RjFEIC8qIGd0ZXN0
LXBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXBvcnQuaCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNUI1RTJEMUY2MTQ5ODQwMDU0NkYxRCAv
KiBndGVzdC1wcmludGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rl
c3QtcHJpbnRlcnMuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNUI1RTJFMUY2
MTQ5ODQwMDU0NkYxRCAvKiBndGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBndGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZl
cmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0
aW9uICovCkBAIC0yODQsMTQgKzI5MSw2IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Ci0JCTQ0NEQxMTcyMTRBMjYyOEYwMDlGRUMzRiAv
KiBGcmFtZXdvcmtzICovID0gewotCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7Ci0J
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJMUEwQTRD
NDUxNEI3QTNCNTAwODk1MTM1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovLAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwotCQl9OwogLyogRW5kIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyog
QmVnaW4gUEJYR3JvdXAgc2VjdGlvbiAqLwpAQCAtMzE2LDcgKzMxNSw2IEBACiAJCQkJMDhGQjc3
QUNGRTg0MTcwN0MwMkFBQzA3IC8qIFNvdXJjZSAqLywKIAkJCQk0MEQ0Q0Y0RTBFMzBGNUUyMDAy
OTQ4MDEgLyogUmVzb3VyY2VzICovLAogCQkJCTQwM0VFMzdCMEUzNzc4MjIwMDRCRDFFMiAvKiBT
Y3JpcHRzICovLAotCQkJCTFBMEE0QzQ2MTRCN0EzQkMwMDg5NTEzNSAvKiBGcmFtZXdvcmtzICov
LAogCQkJCTAzNDc2OERERkYzOEE0NUExMURCOUM4QiAvKiBQcm9kdWN0cyAqLywKIAkJCSk7CiAJ
CQluYW1lID0gZ3Rlc3Q7CkBAIC0zMjcsMjQgKzMyNSwxNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJ
CQkJNDA0ODg0QTkwRTJGN0NEOTAwQ0Y3NjU4IC8qIENIQU5HRVMgKi8sCiAJCQkJNDA0ODg0QUEw
RTJGN0NEOTAwQ0Y3NjU4IC8qIENPTlRSSUJVVE9SUyAqLywKLQkJCQk0MDQ4ODRBQjBFMkY3Q0Q5
MDBDRjc2NTggLyogQ09QWUlORyAqLywKIAkJCQk0MDQ4ODNEOTBFMkY3OTlCMDBDRjc2NTggLyog
aW5jbHVkZSAqLywKLQkJCQk0MDQ4ODNGNjBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FICovLAor
CQkJCTQwNDg4NEFCMEUyRjdDRDkwMENGNzY1OCAvKiBMSUNFTlNFICovLAogCQkJCTQwODlBMDJG
MEZGQUNGODQwMDBCMjlBRSAvKiBzYW1wbGVzICovLAogCQkJCTQwNDg4NDA3MEUyRjc5OUIwMENG
NzY1OCAvKiBzcmMgKi8sCiAJCQkJM0IyMzhCRjAwRTdGRTEzQjAwODQ2RTExIC8qIHRlc3QgKi8s
CisJCQkJNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCAqLywKIAkJCSk7CiAJ
CQluYW1lID0gU291cmNlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJMUEw
QTRDNDYxNEI3QTNCQzAwODk1MTM1IC8qIEZyYW1ld29ya3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhH
cm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTFBMEE0QzQ0MTRCN0EzQjUwMDg5NTEzNSAvKiBK
YXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8sCi0JCQkpOwotCQkJbmFtZSA9IEZyYW1ld29ya3M7
Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQkzQjIzOEJGMDBFN0ZFMTNCMDA4
NDZFMTEgLyogdGVzdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC0zNzksNiArMzY5LDcgQEAKIAkJCQk0MDQ4ODNEQjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rl
c3QtZGVhdGgtdGVzdC5oICovLAogCQkJCTQwNDg4M0RDMEUyRjc5OUIwMENGNzY1OCAvKiBndGVz
dC1tZXNzYWdlLmggKi8sCiAJCQkJNDUzOUM5MzMwRUMyODBBRTAwQTcwRjRDIC8qIGd0ZXN0LXBh
cmFtLXRlc3QuaCAqLywKKwkJCQk0NTY3QzgxNzEyNjRGRjcxMDA3NzQwQkUgLyogZ3Rlc3QtcHJp
bnRlcnMuaCAqLywKIAkJCQk0MDQ4ODNERDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Qtc3BpLmgg
Ki8sCiAJCQkJMjI0QTEyQTIwRTlFQURDQzAwQkQxN0ZEIC8qIGd0ZXN0LXRlc3QtcGFydC5oICov
LAogCQkJCTNCRjZGMkE0MEU3OUI2MTYwMDBGMkVFRSAvKiBndGVzdC10eXBlZC10ZXN0LmggKi8s
CkBAIC0zOTIsMTIgKzM4MywxNCBAQAogCQk0MDQ4ODNFMTBFMkY3OTlCMDBDRjc2NTggLyogaW50
ZXJuYWwgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUz
NUI1RTJCMUY2MTQ5ODQwMDU0NkYxRCAvKiBjdXN0b20gKi8sCiAJCQkJNDA0ODgzRTIwRTJGNzk5
QjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCAqLywKIAkJCQk0MDQ4ODNF
MzBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtZmlsZXBhdGguaCAqLywKIAkJCQk0MDQ4ODNFNDBF
MkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtaW50ZXJuYWwuaCAqLywKIAkJCQk0NTM5QzkzNTBFQzI4
MEUyMDBBNzBGNEMgLyogZ3Rlc3QtbGlua2VkX3B0ci5oICovLAogCQkJCTQ1MzlDOTM2MEVDMjgw
RTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oICovLAogCQkJCTQ1MzlD
OTM3MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLmggKi8sCisJCQkJRTM1QjVF
MjcxRjYxNDk0MDAwNTQ2RjFEIC8qIGd0ZXN0LXBvcnQtYXJjaC5oICovLAogCQkJCTQwNDg4M0U1
MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1wb3J0LmggKi8sCiAJCQkJNDA0ODgzRTYwRTJGNzk5
QjAwQ0Y3NjU4IC8qIGd0ZXN0LXN0cmluZy5oICovLAogCQkJCTQwODk5RjREMEZGQTcyNzEwMDBC
MjlBRSAvKiBndGVzdC10dXBsZS5oICovLApAQCAtNDMzLDcgKzQyNiw2IEBACiAJCQkJNDBENENE
RjEwRTMwRTA3NDAwMjk0ODAxIC8qIERlYnVnUHJvamVjdC54Y2NvbmZpZyAqLywKIAkJCQk0MEQ0
Q0RGMjBFMzBFMDc0MDAyOTQ4MDEgLyogRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnICovLAogCQkJ
CTQwRDRDREYzMEUzMEUwNzQwMDI5NDgwMSAvKiBHZW5lcmFsLnhjY29uZmlnICovLAotCQkJCTQ0
QzQ4REZGMTRBNDA5OEYwMEEyRDlDNyAvKiBQcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZpZyAqLywK
IAkJCQk0MEQ0Q0RGNDBFMzBFMDc0MDAyOTQ4MDEgLyogUmVsZWFzZVByb2plY3QueGNjb25maWcg
Ki8sCiAJCQkJNDA4OTlGQjMwRkZBNzU2NzAwMEIyOUFFIC8qIFN0YXRpY0xpYnJhcnlUYXJnZXQu
eGNjb25maWcgKi8sCiAJCQkpOwpAQCAtNDQ4LDYgKzQ0MCwxNiBAQAogCQkJcGF0aCA9IFJlc291
cmNlczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUUzNUI1RTJCMUY2MTQ5
ODQwMDU0NkYxRCAvKiBjdXN0b20gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCUUzNUI1RTJDMUY2MTQ5ODQwMDU0NkYxRCAvKiBndGVzdC1wb3J0LmggKi8s
CisJCQkJRTM1QjVFMkQxRjYxNDk4NDAwNTQ2RjFEIC8qIGd0ZXN0LXByaW50ZXJzLmggKi8sCisJ
CQkJRTM1QjVFMkUxRjYxNDk4NDAwNTQ2RjFEIC8qIGd0ZXN0LmggKi8sCisJCQkpOworCQkJcGF0
aCA9IGN1c3RvbTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAvKiBFbmQgUEJY
R3JvdXAgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9u
ICovCkBAIC00NTgsOSArNDYwLDE0IEBACiAJCQkJNDA0ODg0MzgwRTJGNzk5QjAwQ0Y3NjU4IC8q
IGd0ZXN0LWRlYXRoLXRlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQwNDg4NDM5MEUyRjc5OUIw
MENGNzY1OCAvKiBndGVzdC1tZXNzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NTM5QzkzNDBF
QzI4MEFFMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdGVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTM1QjVFMjgxRjYxNDk0MDAwNTQ2RjFEIC8qIGd0ZXN0LXBvcnQtYXJjaC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTM1QjVFMkYxRjYxNDk4NDAwNTQ2RjFEIC8qIGd0ZXN0LXBvcnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUUzNUI1RTMwMUY2MTQ5ODQwMDU0NkYxRCAvKiBndGVzdC1wcmludGVycy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDU2N0M4MTgxMjY0RkY3MTAwNzc0MEJFIC8qIGd0ZXN0LXBy
aW50ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MDQ4ODQzQTBFMkY3OTlCMDBDRjc2NTggLyog
Z3Rlc3Qtc3BpLmggaW4gSGVhZGVycyAqLywKIAkJCQkyMjRBMTJBMzBFOUVBRENDMDBCRDE3RkQg
LyogZ3Rlc3QtdGVzdC1wYXJ0LmggaW4gSGVhZGVycyAqLywKIAkJCQkzQkY2RjJBNTBFNzlCNjE2
MDAwRjJFRUUgLyogZ3Rlc3QtdHlwZWQtdGVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1QjVF
MzExRjYxNDk4NDAwNTQ2RjFEIC8qIGd0ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MDQ4ODQz
QjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQwNDg4NDND
MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcmVkX2ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQwNDg4NDNEMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcm9kLmggaW4gSGVhZGVycyAqLywK
QEAgLTU3OCw3ICs1ODUsNiBAQAogCQkJCThEMDdGMkJEMDQ4NkNDN0EwMDdDRDFEMCAvKiBIZWFk
ZXJzICovLAogCQkJCTQwNDg4NEE1MEUyRjdDMDQwMENGNzY1OCAvKiBDb3B5IEhlYWRlcnMgSW50
ZXJuYWwgKi8sCiAJCQkJOEQwN0YyQkYwNDg2Q0M3QTAwN0NEMUQwIC8qIFJlc291cmNlcyAqLywK
LQkJCQk0NDREMTE3MjE0QTI2MjhGMDA5RkVDM0YgLyogRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJ
CQlidWlsZFJ1bGVzID0gKAogCQkJKTsKQEAgLTU5OSw4ICs2MDUsNyBAQAogCQkwODY3RDY5MEZF
ODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7CiAJCQlpc2EgPSBQQlhQcm9q
ZWN0OwogCQkJYXR0cmlidXRlcyA9IHsKLQkJCQlMYXN0U3dpZnRVcGRhdGVDaGVjayA9IDA3MDA7
Ci0JCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDA2MDA7CisJCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDA0
NjA7CiAJCQl9OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDRGQURDMjQ2MDhCNDE1NkQw
MEFCRTU1RSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgImd0ZXN0
IiAqLzsKIAkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDMuMiI7CkBAIC02MzgsOSAr
NjQzLDkgQEAKIAkJCWZpbGVzID0gKAogCQkJCTQwNDg4NEFDMEUyRjdDRDkwMENGNzY1OCAvKiBD
SEFOR0VTIGluIFJlc291cmNlcyAqLywKIAkJCQk0MDQ4ODRBRDBFMkY3Q0Q5MDBDRjc2NTggLyog
Q09OVFJJQlVUT1JTIGluIFJlc291cmNlcyAqLywKLQkJCQk0MDQ4ODRBRTBFMkY3Q0Q5MDBDRjc2
NTggLyogQ09QWUlORyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJNDBDODQ5NzgxMDFBMzY1NDAwODM2
NDJBIC8qIGxpYmd0ZXN0X21haW4uYSBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJNDA0ODg0NTAwRTJG
Nzk5QjAwQ0Y3NjU4IC8qIFJFQURNRSBpbiBSZXNvdXJjZXMgKi8sCisJCQkJNDA0ODg0QUUwRTJG
N0NEOTAwQ0Y3NjU4IC8qIExJQ0VOU0UgaW4gUmVzb3VyY2VzICovLAorCQkJCTQwNDg4NDUwMEUy
Rjc5OUIwMENGNzY1OCAvKiBSRUFETUUubWQgaW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtODEyLDIwICs4
MTcsMjUgQEAKIAkJM0IyMzhGNjAwRTgyOEI1NDAwODQ2RTExIC8qIERlYnVnICovID0gewogCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNP
TUJJTkVfSElEUElfSU1BR0VTID0gWUVTOwogCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKIAkJ
CQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKIAkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0g
MDsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7
CiAJCQkJUFJPRFVDVF9OQU1FID0gQ2hlY2s7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCX07
CiAJCQluYW1lID0gRGVidWc7CiAJCX07CiAJCTNCMjM4RjYxMEU4MjhCNTQwMDg0NkUxMSAvKiBS
ZWxlYXNlICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCUNPTUJJTkVfSElEUElfSU1BR0VTID0gWUVTOwogCQkJCUNPUFlfUEhB
U0VfU1RSSVAgPSBZRVM7CiAJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdp
dGgtZHN5bSI7Ci0JCQkJR0NDX0VOQUJMRV9GSVhfQU5EX0NPTlRJTlVFID0gTk87CisJCQkJR0ND
X1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOwogCQkJCVBST0RV
Q1RfTkFNRSA9IENoZWNrOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQkJWkVST19MSU5LID0g
Tk87CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CkBAIC04MzMsMzUgKzg0Myw0OSBAQAogCQk0
MDg5OUY0NTBGRkE3MTg1MDAwQjI5QUUgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJR0NDX1ZFUlNJT04gPSBj
b20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUhFQURFUl9TRUFSQ0hfUEFU
SFMgPSAuLi87CiAJCQkJUFJPRFVDVF9OQU1FID0gImd0ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayI7
CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CiAJ
CTQwODk5RjQ2MEZGQTcxODUwMDBCMjlBRSAvKiBSZWxlYXNlICovID0gewogCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUdDQ19WRVJTSU9O
ID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNI
X1BBVEhTID0gLi4vOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJndGVzdF91bml0dGVzdC1mcmFtZXdv
cmsiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJ
CX07CiAJCTQwODlBMDE1MEZGQUNFRkQwMDBCMjlBRSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlHQ0NfVkVS
U0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CiAJCQkJUFJPRFVDVF9O
QU1FID0gInNhbXBsZTFfdW5pdHRlc3QtZnJhbWV3b3JrIjsKKwkJCQlTREtST09UID0gbWFjb3N4
OwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKIAkJNDA4OUEwMTYwRkZBQ0VGRDAwMEIy
OUFFIC8qIFJlbGVhc2UgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJz
Lmxsdm0uY2xhbmcuMV8wOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJzYW1wbGUxX3VuaXR0ZXN0LWZy
YW1ld29yayI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFz
ZTsKIAkJfTsKIAkJNDBDNDRBREYwRTM3OThGNDAwOEZDQzUxIC8qIERlYnVnICovID0gewogCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNP
TUJJTkVfSElEUElfSU1BR0VTID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNv
bXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAx
MC43OwogCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0OworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJ
CQkJVEFSR0VUX05BTUUgPSBndGVzdDsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CkBAIC04Njks
NyArODkzLDExIEBACiAJCTQwQzQ0QUUwMEUzNzk4RjQwMDhGQ0M1MSAvKiBSZWxlYXNlICovID0g
ewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewor
CQkJCUNPTUJJTkVfSElEUElfSU1BR0VTID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFw
cGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJH
RVQgPSAxMC43OwogCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0OworCQkJCVNES1JPT1QgPSBtYWNv
c3g7CiAJCQkJVEFSR0VUX05BTUUgPSBndGVzdDsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsK
QEAgLTg3OCw5ICs5MDYsMTYgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJ
YmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyog
U3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CiAJCQkJR0NDX0lOTElORVNfQVJFX1BSSVZB
VEVfRVhURVJOID0gWUVTOwogCQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gWUVTOwor
CQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJ
CQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLi8sCisJCQkJCS4uL2luY2x1ZGUvLAor
CQkJCSk7CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsK
IAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC04ODgsOSArOTIzLDE2IEBACiAJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gNDA4OTlGQjMwRkZBNzU2NzAwMEIyOUFFIC8qIFN0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25m
aWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNPTUJJTkVfSElEUElfSU1BR0VTID0g
WUVTOwogCQkJCUdDQ19JTkxJTkVTX0FSRV9QUklWQVRFX0VYVEVSTiA9IFlFUzsKIAkJCQlHQ0Nf
U1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBs
ZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgK
KwkJCQkJLi4vLAorCQkJCQkuLi9pbmNsdWRlLywKKwkJCQkpOwogCQkJCVBST0RVQ1RfTkFNRSA9
IGd0ZXN0OworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7
CiAJCX07CkBAIC04OTgsNyArOTQwLDE0IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDA4OTlGQjMwRkZBNzU2NzAwMEIy
OUFFIC8qIFN0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCUNPTUJJTkVfSElEUElfSU1BR0VTID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0g
Y29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BB
VEhTID0gKAorCQkJCQkuLi8sCisJCQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7CiAJCQkJUFJPRFVD
VF9OQU1FID0gZ3Rlc3RfbWFpbjsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5h
bWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTkwNiwxMzQgKzk1NSw3MiBAQAogCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDQwODk5RkIz
MEZGQTc1NjcwMDBCMjlBRSAvKiBTdGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmlnICovOwogCQkJ
YnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDT01CSU5FX0hJRFBJX0lNQUdFUyA9IFlFUzsKKwkJCQlH
Q0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJSEVB
REVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJLi4vLAorCQkJCQkuLi9pbmNsdWRlLywKKwkJCQkp
OwogCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0X21haW47CisJCQkJU0RLUk9PVCA9IG1hY29zeDsK
IAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKIAkJNDBDODQ5ODUxMDFBMzY4NTAwODM2
NDJBIC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5s
bHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gLi4vOwogCQkJCVBST0RV
Q1RfTkFNRSA9IGd0ZXN0X3VuaXR0ZXN0OworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQl9Owog
CQkJbmFtZSA9IERlYnVnOwogCQl9OwogCQk0MEM4NDk4NjEwMUEzNjg1MDA4MzY0MkEgLyogUmVs
ZWFzZSAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFu
Zy4xXzA7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9IC4uLzsKIAkJCQlQUk9EVUNUX05BTUUg
PSBndGVzdF91bml0dGVzdDsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUg
PSBSZWxlYXNlOwogCQl9OwogCQk0MEM4NDk5NTEwMUEzNkE2MDA4MzY0MkEgLyogRGVidWcgKi8g
PSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOwog
CQkJCVBST0RVQ1RfTkFNRSA9ICJzYW1wbGUxX3VuaXR0ZXN0LXN0YXRpYyI7CisJCQkJU0RLUk9P
VCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CiAJCTQwQzg0OTk2MTAx
QTM2QTYwMDgzNjQyQSAvKiBSZWxlYXNlICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxl
LmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKIAkJCQlQUk9EVUNUX05BTUUgPSAic2FtcGxlMV91
bml0dGVzdC1zdGF0aWMiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQl9OwogCQkJbmFtZSA9
IFJlbGVhc2U7CiAJCX07Ci0JCTQ0QzQ4RTA0MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9u
ICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDQ0QzQ4REZGMTRBNDA5OEYwMEEyRDlDNyAvKiBQcm9kdWN0aW9uUHJv
amVjdC54Y2NvbmZpZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQl9OwotCQkJbmFtZSA9
IFByb2R1Y3Rpb247Ci0JCX07Ci0JCTQ0QzQ4RTA1MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0
aW9uICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQliYXNlQ29uZmln
dXJhdGlvblJlZmVyZW5jZSA9IDQwRDRDREYyMEUzMEUwNzQwMDI5NDgwMSAvKiBGcmFtZXdvcmtU
YXJnZXQueGNjb25maWcgKi87Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCURZTElCX0NPTVBB
VElCSUxJVFlfVkVSU0lPTiA9IDE7Ci0JCQkJRFlMSUJfQ1VSUkVOVF9WRVJTSU9OID0gMTsKLQkJ
CQlJTkZPUExJU1RfRklMRSA9IFJlc291cmNlcy9JbmZvLnBsaXN0OwotCQkJCUlORk9QTElTVF9Q
UkVGSVhfSEVBREVSID0gIiQoUFJPSkVDVF9URU1QX0RJUikvVmVyc2lvbi5oIjsKLQkJCQlJTkZP
UExJU1RfUFJFUFJPQ0VTUyA9IFlFUzsKLQkJCQlQUk9EVUNUX05BTUUgPSBndGVzdDsKLQkJCQlW
RVJTSU9OSU5HX1NZU1RFTSA9ICJhcHBsZS1nZW5lcmljIjsKLQkJCX07Ci0JCQluYW1lID0gUHJv
ZHVjdGlvbjsKLQkJfTsKLQkJNDRDNDhFMDYxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24g
Ki8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJhc2VDb25maWd1cmF0
aW9uUmVmZXJlbmNlID0gNDA4OTlGQjMwRkZBNzU2NzAwMEIyOUFFIC8qIFN0YXRpY0xpYnJhcnlU
YXJnZXQueGNjb25maWcgKi87Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUdDQ19JTkxJTkVT
X0FSRV9QUklWQVRFX0VYVEVSTiA9IFlFUzsKLQkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVS
TiA9IFlFUzsKLQkJCQlQUk9EVUNUX05BTUUgPSBndGVzdDsKLQkJCX07Ci0JCQluYW1lID0gUHJv
ZHVjdGlvbjsKLQkJfTsKLQkJNDRDNDhFMDcxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24g
Ki8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJhc2VDb25maWd1cmF0
aW9uUmVmZXJlbmNlID0gNDA4OTlGQjMwRkZBNzU2NzAwMEIyOUFFIC8qIFN0YXRpY0xpYnJhcnlU
YXJnZXQueGNjb25maWcgKi87Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCVBST0RVQ1RfTkFN
RSA9IGd0ZXN0X21haW47Ci0JCQl9OwotCQkJbmFtZSA9IFByb2R1Y3Rpb247Ci0JCX07Ci0JCTQ0
QzQ4RTA4MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICovID0gewotCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCVBST0RVQ1RfTkFN
RSA9ICJndGVzdF91bml0dGVzdC1mcmFtZXdvcmsiOwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0
aW9uOwotCQl9OwotCQk0NEM0OEUwOTE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9
IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsK
LQkJCQlQUk9EVUNUX05BTUUgPSBndGVzdF91bml0dGVzdDsKLQkJCX07Ci0JCQluYW1lID0gUHJv
ZHVjdGlvbjsKLQkJfTsKLQkJNDRDNDhFMEExNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24g
Ki8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3Mg
PSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gInNhbXBsZTFfdW5pdHRlc3QtZnJhbWV3b3JrIjsKLQkJ
CX07Ci0JCQluYW1lID0gUHJvZHVjdGlvbjsKLQkJfTsKLQkJNDRDNDhFMEIxNEE0MDlERTAwQTJE
OUM3IC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
LQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gInNhbXBsZTFfdW5pdHRl
c3Qtc3RhdGljIjsKLQkJCX07Ci0JCQluYW1lID0gUHJvZHVjdGlvbjsKLQkJfTsKLQkJNDRDNDhF
MEMxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJQ09QWV9QSEFTRV9TVFJJ
UCA9IFlFUzsKLQkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3lt
IjsKLQkJCQlHQ0NfRU5BQkxFX0ZJWF9BTkRfQ09OVElOVUUgPSBOTzsKLQkJCQlQUk9EVUNUX05B
TUUgPSBDaGVjazsKLQkJCQlaRVJPX0xJTksgPSBOTzsKLQkJCX07Ci0JCQluYW1lID0gUHJvZHVj
dGlvbjsKLQkJfTsKLQkJNDRDNDhFMEQxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8g
PSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7
Ci0JCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7Ci0JCQkJVEFSR0VUX05BTUUgPSBndGVzdDsKLQkJ
CX07Ci0JCQluYW1lID0gUHJvZHVjdGlvbjsKLQkJfTsKIAkJNEZBREMyNDMwOEI0MTU2RDAwQUJF
NTVFIC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQli
YXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDQwRDRDREYyMEUzMEUwNzQwMDI5NDgwMSAvKiBG
cmFtZXdvcmtUYXJnZXQueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNP
TUJJTkVfSElEUElfSU1BR0VTID0gWUVTOwogCQkJCURZTElCX0NPTVBBVElCSUxJVFlfVkVSU0lP
TiA9IDE7CiAJCQkJRFlMSUJfQ1VSUkVOVF9WRVJTSU9OID0gMTsKKwkJCQlHQ0NfVkVSU0lPTiA9
IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJSEVBREVSX1NFQVJDSF9Q
QVRIUyA9ICgKKwkJCQkJLi4vLAorCQkJCQkuLi9pbmNsdWRlLywKKwkJCQkpOwogCQkJCUlORk9Q
TElTVF9GSUxFID0gUmVzb3VyY2VzL0luZm8ucGxpc3Q7CiAJCQkJSU5GT1BMSVNUX1BSRUZJWF9I
RUFERVIgPSAiJChQUk9KRUNUX1RFTVBfRElSKS9WZXJzaW9uLmgiOwogCQkJCUlORk9QTElTVF9Q
UkVQUk9DRVNTID0gWUVTOwogCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0OworCQkJCVNES1JPT1Qg
PSBtYWNvc3g7CiAJCQkJVkVSU0lPTklOR19TWVNURU0gPSAiYXBwbGUtZ2VuZXJpYyI7CiAJCQl9
OwogCQkJbmFtZSA9IERlYnVnOwpAQCAtMTA0MiwxMiArMTAyOSwxOSBAQAogCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDQwRDRD
REYyMEUzMEUwNzQwMDI5NDgwMSAvKiBGcmFtZXdvcmtUYXJnZXQueGNjb25maWcgKi87CiAJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUNPTUJJTkVfSElEUElfSU1BR0VTID0gWUVTOwogCQkJCURZ
TElCX0NPTVBBVElCSUxJVFlfVkVSU0lPTiA9IDE7CiAJCQkJRFlMSUJfQ1VSUkVOVF9WRVJTSU9O
ID0gMTsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4x
XzA7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJLi4vLAorCQkJCQkuLi9pbmNs
dWRlLywKKwkJCQkpOwogCQkJCUlORk9QTElTVF9GSUxFID0gUmVzb3VyY2VzL0luZm8ucGxpc3Q7
CiAJCQkJSU5GT1BMSVNUX1BSRUZJWF9IRUFERVIgPSAiJChQUk9KRUNUX1RFTVBfRElSKS9WZXJz
aW9uLmgiOwogCQkJCUlORk9QTElTVF9QUkVQUk9DRVNTID0gWUVTOwogCQkJCVBST0RVQ1RfTkFN
RSA9IGd0ZXN0OworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQkJVkVSU0lPTklOR19TWVNURU0g
PSAiYXBwbGUtZ2VuZXJpYyI7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CkBAIC0xMDc0LDEw
MCArMTA2OCw5MCBAQAogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKIAkJCQkzQjIzOEY2MDBF
ODI4QjU0MDA4NDZFMTEgLyogRGVidWcgKi8sCiAJCQkJM0IyMzhGNjEwRTgyOEI1NDAwODQ2RTEx
IC8qIFJlbGVhc2UgKi8sCi0JCQkJNDRDNDhFMEMxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rp
b24gKi8sCiAJCQkpOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJ
ZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJCWRlZmF1bHRDb25maWd1
cmF0aW9uTmFtZSA9IFJlbGVhc2U7CiAJCX07CiAJCTQwODk5RjRBMEZGQTcxQkMwMDBCMjlBRSAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiZ3Rlc3RfdW5p
dHRlc3QtZnJhbWV3b3JrIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJ
CQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAogCQkJCTQwODk5RjQ1MEZGQTcxODUwMDBCMjlBRSAv
KiBEZWJ1ZyAqLywKIAkJCQk0MDg5OUY0NjBGRkE3MTg1MDAwQjI5QUUgLyogUmVsZWFzZSAqLywK
LQkJCQk0NEM0OEUwODE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLywKIAkJCSk7CiAJ
CQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJh
dGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVs
ZWFzZTsKIAkJfTsKIAkJNDA4OUEwMjQwRkZBQ0YwMTAwMEIyOUFFIC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJzYW1wbGUxX3VuaXR0ZXN0LWZyYW1ld29y
ayIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1
cmF0aW9ucyA9ICgKIAkJCQk0MDg5QTAxNTBGRkFDRUZEMDAwQjI5QUUgLyogRGVidWcgKi8sCiAJ
CQkJNDA4OUEwMTYwRkZBQ0VGRDAwMEIyOUFFIC8qIFJlbGVhc2UgKi8sCi0JCQkJNDRDNDhFMEEx
NEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8sCiAJCQkpOwogCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJv
ZHVjdGlvbjsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CiAJCX07CiAJ
CTQwQzQ0QUU0MEUzNzk5MDUwMDhGQ0M1MSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWEFnZ3JlZ2F0ZVRhcmdldCAiVmVyc2lvbiBJbmZvIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29u
ZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAogCQkJCTQwQzQ0QURG
MEUzNzk4RjQwMDhGQ0M1MSAvKiBEZWJ1ZyAqLywKIAkJCQk0MEM0NEFFMDBFMzc5OEY0MDA4RkND
NTEgLyogUmVsZWFzZSAqLywKLQkJCQk0NEM0OEUwRDE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVj
dGlvbiAqLywKIAkJCSk7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0J
CQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25OYW1lID0gUmVsZWFzZTsKIAkJfTsKIAkJNDBDODQ5MDIxMDFBMjEyRTAwODM2NDJB
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJndGVzdC1z
dGF0aWMiICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29u
ZmlndXJhdGlvbnMgPSAoCiAJCQkJNDBDODQ4RkIxMDFBMjA5RDAwODM2NDJBIC8qIERlYnVnICov
LAogCQkJCTQwQzg0OEZDMTAxQTIwOUQwMDgzNjQyQSAvKiBSZWxlYXNlICovLAotCQkJCTQ0QzQ4
RTA2MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICovLAogCQkJKTsKIAkJCWRlZmF1bHRD
b25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9
IFByb2R1Y3Rpb247CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwogCQl9
OwogCQk0MEM4NDkxMjEwMUEyMUQyMDA4MzY0MkEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0X21haW4tc3RhdGljIiAqLyA9IHsKIAkJCWlzYSA9
IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAogCQkJCTQw
Qzg0OTBFMTAxQTIxN0YwMDgzNjQyQSAvKiBEZWJ1ZyAqLywKIAkJCQk0MEM4NDkwRjEwMUEyMTdG
MDA4MzY0MkEgLyogUmVsZWFzZSAqLywKLQkJCQk0NEM0OEUwNzE0QTQwOURFMDBBMkQ5QzcgLyog
UHJvZHVjdGlvbiAqLywKIAkJCSk7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9
IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKIAkJfTsKIAkJNDBDODQ5ODQxMDFBMzY4NTAw
ODM2NDJBIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJn
dGVzdF91bml0dGVzdC1zdGF0aWMiICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlz
dDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCiAJCQkJNDBDODQ5ODUxMDFBMzY4NTAwODM2
NDJBIC8qIERlYnVnICovLAogCQkJCTQwQzg0OTg2MTAxQTM2ODUwMDgzNjQyQSAvKiBSZWxlYXNl
ICovLAotCQkJCTQ0QzQ4RTA5MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICovLAogCQkJ
KTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUg
PSBSZWxlYXNlOwogCQl9OwogCQk0MEM4NDk5NDEwMUEzNkE2MDA4MzY0MkEgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgInNhbXBsZTFfdW5pdHRlc3Qtc3Rh
dGljIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZp
Z3VyYXRpb25zID0gKAogCQkJCTQwQzg0OTk1MTAxQTM2QTYwMDgzNjQyQSAvKiBEZWJ1ZyAqLywK
IAkJCQk0MEM4NDk5NjEwMUEzNkE2MDA4MzY0MkEgLyogUmVsZWFzZSAqLywKLQkJCQk0NEM0OEUw
QjE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLywKIAkJCSk7CiAJCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQ
cm9kdWN0aW9uOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKIAkJfTsK
IAkJNEZBREMyNDIwOEI0MTU2RDAwQUJFNTVFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYTmF0aXZlVGFyZ2V0ICJndGVzdC1mcmFtZXdvcmsiICovID0gewogCQkJaXNhID0gWEND
b25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCiAJCQkJNEZBREMy
NDMwOEI0MTU2RDAwQUJFNTVFIC8qIERlYnVnICovLAogCQkJCTRGQURDMjQ0MDhCNDE1NkQwMEFC
RTU1RSAvKiBSZWxlYXNlICovLAotCQkJCTQ0QzQ4RTA1MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9k
dWN0aW9uICovLAogCQkJKTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsK
LQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwogCQl9OwogCQk0RkFEQzI0NjA4QjQxNTZEMDBBQkU1
NUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJndGVzdCIgKi8g
PSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9u
cyA9ICgKIAkJCQk0RkFEQzI0NzA4QjQxNTZEMDBBQkU1NUUgLyogRGVidWcgKi8sCiAJCQkJNEZB
REMyNDgwOEI0MTU2RDAwQUJFNTVFIC8qIFJlbGVhc2UgKi8sCi0JCQkJNDRDNDhFMDQxNEE0MDlE
RTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8sCiAJCQkpOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlv
bjsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CiAJCX07CiAvKiBFbmQg
WENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCiAJfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwN2MyYTUyYzMyMDZmNzgzYjhlNTkyODZk
M2YyZjQwNDQ1MGRkODAwLi5lMzMzZDQxMWJmMmU2MTM5YTczN2NkNDhkNzQ2NWVmMDBmNjY5MTVm
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTctMDktMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgVXBkYXRlIGdvb2dsZXRlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTcyMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmVkIHd0ZiBoZWFkZXIgaW5jbHVzaW9uIGZy
b20gZ3Rlc3QtcG9ydC5oIHRvIGNvbmZpZy5oLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9j
b25maWcuaDoKKwogMjAxNy0wOS0wNyAgTWF0dGhldyBTdGV3YXJ0ICA8bWF0dGhld19yX3N0ZXdh
cnRAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBMaXZlIFBMVCBpbXBsZW1lbnRlZCB3aXRoIFdl
YkRyaXZlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKaW5kZXggZmU0M2Y3MzViM2NlNzRkNTkyMjU4ZWM4YmRj
MTk1NzYwOGM4ZGFjOC4uYWI0ODFlNDExODY4Zjc5MzIxMTM3NTE2N2M2ZGQ0MjA2NjU0OTRjOCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvbmZpZy5oCkBAIC03Myw2ICs3MywxMSBAQAogCiAjaWZkZWYgX19jcGx1c3Bs
dXMKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgor
I2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTRXhwb3J0
TWFjcm9zLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgogI2VuZGlmCiAKICNpZmRlZiBfX2NsYW5nX18K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320284</attachid>
            <date>2017-09-08 11:25:05 -0700</date>
            <delta_ts>2018-08-30 14:53:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175722-20170909032519.patch</filename>
            <type>text/plain</type>
            <size>2180276</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9DaGFuZ2VMb2cKaW5kZXggZWQ1ZmE1ODcz
NGYxYTA3Y2EyY2U3M2FjZGM3NWNlMjY0YzI4YTdjYi4uNjMyMDEyMWE3NGFhYmRlOWJiYzhmZmRk
YmMxMzM5OTIxYTM1MGVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0NyBAQAorMjAx
Ny0wOS0wOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBVcGRhdGUgZ29vZ2xldGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc1NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIGd0ZXN0IHZlcnNpb24gZnJvbSAxLjUuMCB0byAxLjguMC4KKwor
ICAgICAgICAqIGd0ZXN0Ly5naXRpZ25vcmU6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L0NIQU5H
RVM6CisgICAgICAgICogZ3Rlc3QvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogZ3Rlc3QvQ09O
VFJJQlVUT1JTOgorICAgICAgICAqIGd0ZXN0L0xJQ0VOU0U6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9DT1BZSU5HLgorICAgICAgICAqIGd0ZXN0L01ha2VmaWxlLmFtOgor
ICAgICAgICAqIGd0ZXN0L1JFQURNRTogUmVtb3ZlZC4KKyAgICAgICAgKiBndGVzdC9SRUFETUUu
V2ViS2l0OiBSZW1vdmVkLgorICAgICAgICAqIGd0ZXN0L1JFQURNRS5tZDogQWRkZWQuCisgICAg
ICAgICogZ3Rlc3QvYnVpbGQtYXV4Ly5rZWVwOiBBZGRlZC4KKyAgICAgICAgKiBndGVzdC9jbWFr
ZS9pbnRlcm5hbF91dGlscy5jbWFrZTogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvY29kZWdlYXIv
Z3Rlc3RfYWxsLmNjOgorICAgICAgICAqIGd0ZXN0L2NvZGVnZWFyL2d0ZXN0X2xpbmsuY2M6Cisg
ICAgICAgICogZ3Rlc3QvY29uZmlndXJlLmFjOgorICAgICAgICAqIGd0ZXN0L2RvY3MvQWR2YW5j
ZWRHdWlkZS5tZDogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvZG9jcy9EZXZHdWlkZS5tZDogQWRk
ZWQuCisgICAgICAgICogZ3Rlc3QvZG9jcy9Eb2N1bWVudGF0aW9uLm1kOiBBZGRlZC4KKyAgICAg
ICAgKiBndGVzdC9kb2NzL0ZBUS5tZDogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvZG9jcy9Qcmlt
ZXIubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvUHVtcE1hbnVhbC5tZDogQWRkZWQu
CisgICAgICAgICogZ3Rlc3QvZG9jcy9TYW1wbGVzLm1kOiBBZGRlZC4KKyAgICAgICAgKiBndGVz
dC9kb2NzL1YxXzVfQWR2YW5jZWRHdWlkZS5tZDogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvZG9j
cy9WMV81X0RvY3VtZW50YXRpb24ubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvVjFf
NV9GQVEubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvVjFfNV9QcmltZXIubWQ6IEFk
ZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvVjFfNV9QdW1wTWFudWFsLm1kOiBBZGRlZC4KKyAg
ICAgICAgKiBndGVzdC9kb2NzL1YxXzVfWGNvZGVHdWlkZS5tZDogQWRkZWQuCisgICAgICAgICog
Z3Rlc3QvZG9jcy9WMV82X0FkdmFuY2VkR3VpZGUubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0
L2RvY3MvVjFfNl9Eb2N1bWVudGF0aW9uLm1kOiBBZGRlZC4KKyAgICAgICAgKiBndGVzdC9kb2Nz
L1YxXzZfRkFRLm1kOiBBZGRlZC4KKyAgICAgICAgKiBndGVzdC9kb2NzL1YxXzZfUHJpbWVyLm1k
OiBBZGRlZC4KKyAgICAgICAgKiBndGVzdC9kb2NzL1YxXzZfUHVtcE1hbnVhbC5tZDogQWRkZWQu
CisgICAgICAgICogZ3Rlc3QvZG9jcy9WMV82X1NhbXBsZXMubWQ6IEFkZGVkLgorICAgICAgICAq
IGd0ZXN0L2RvY3MvVjFfNl9YY29kZUd1aWRlLm1kOiBBZGRlZC4KKyAgICAgICAgKiBndGVzdC9k
b2NzL1YxXzdfQWR2YW5jZWRHdWlkZS5tZDogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvZG9jcy9W
MV83X0RvY3VtZW50YXRpb24ubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvVjFfN19G
QVEubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvVjFfN19QcmltZXIubWQ6IEFkZGVk
LgorICAgICAgICAqIGd0ZXN0L2RvY3MvVjFfN19QdW1wTWFudWFsLm1kOiBBZGRlZC4KKyAgICAg
ICAgKiBndGVzdC9kb2NzL1YxXzdfU2FtcGxlcy5tZDogQWRkZWQuCisgICAgICAgICogZ3Rlc3Qv
ZG9jcy9WMV83X1hjb2RlR3VpZGUubWQ6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2RvY3MvWGNv
ZGVHdWlkZS5tZDogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1k
ZWF0aC10ZXN0Lmg6CisgICAgICAgICogZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdl
Lmg6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6U3RyZWFtYWJsZVRvU3RyaW5nKToKKyAg
ICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaDoKKyAgICAgICAg
KFRFU1RfUCk6CisgICAgICAgICh0ZXN0aW5nOjpWYWx1ZXNJbik6CisgICAgICAgICogZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcDoKKyAgICAgICAgKiBndGVzdC9p
bmNsdWRlL2d0ZXN0L2d0ZXN0LXByaW50ZXJzLmg6IEFkZGVkLgorICAgICAgICAodGVzdGluZzo6
aW50ZXJuYWwyOjpUeXBlV2l0aG91dEZvcm1hdHRlcjo6UHJpbnRWYWx1ZSk6CisgICAgICAgICh0
ZXN0aW5nOjppbnRlcm5hbDI6Om9wZXJhdG9yPDwpOgorICAgICAgICAodGVzdGluZ19pbnRlcm5h
bDo6RGVmYXVsdFByaW50Tm9uQ29udGFpbmVyVG8pOgorICAgICAgICAodGVzdGluZzo6aW50ZXJu
YWw6OkZvcm1hdEZvckNvbXBhcmlzb246OkZvcm1hdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRl
cm5hbDo6Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKToKKyAgICAgICAgKHRlc3Rp
bmc6OmludGVybmFsOjpEZWZhdWx0UHJpbnRUbyk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5h
bDo6UHJpbnRUbyk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6UHJpbnRSYXdBcnJheVRv
KToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxQcmludGVyOjpQcmludCk6
CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnRBcnJheSk6CisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnRlcjxUOjpQcmludCk6CisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludGVyOjpQcmludCk6Cisg
ICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludGVyPFQ6OlByaW50
KToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50ZXI8Y2hh
cjo6UHJpbnQpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJp
bnRlcjx3Y2hhcl90OjpQcmludCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVy
c2FsVGVyc2VQcmludCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJp
bnQpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlR1cGxlUG9saWN5OjpnZXQpOgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlR1cGxlUHJlZml4UHJpbnRlcjo6UHJpbnRQcmVmaXhU
byk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VHVwbGVQcmVmaXhQcmludGVyOjpUZXJz
ZVByaW50UHJlZml4VG9TdHJpbmdzKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUdXBs
ZVByZWZpeFByaW50ZXI8MD46OlByaW50UHJlZml4VG8pOgorICAgICAgICAodGVzdGluZzo6aW50
ZXJuYWw6OlR1cGxlUHJlZml4UHJpbnRlcjwwPjo6VGVyc2VQcmludFByZWZpeFRvU3RyaW5ncyk6
CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6UHJpbnRUdXBsZVRvKToKKyAgICAgICAgKHRl
c3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3Mp
OgorICAgICAgICAodGVzdGluZzo6UHJpbnRUb1N0cmluZyk6CisgICAgICAgICogZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9ndGVzdC1zcGkuaDoKKyAgICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2d0
ZXN0LXRlc3QtcGFydC5oOgorICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlw
ZWQtdGVzdC5oOgorICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaDoKKyAgICAg
ICAgKHRlc3Rpbmc6OlRlc3RQcm9wZXJ0eTo6VGVzdFByb3BlcnR5KToKKyAgICAgICAgKHRlc3Rp
bmc6OlRlc3RQcm9wZXJ0eTo6U2V0VmFsdWUpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6
OkNtcEhlbHBlckVRRmFpbHVyZSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVs
cGVyRVEpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkVxSGVscGVyOjpDb21wYXJlKToK
KyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpFcUhlbHBlcjx0cnVlPjo6Q29tcGFyZSk6Cisg
ICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyT3BGYWlsdXJlKToKKyAgICAgICAg
KHRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJGbG9hdGluZ1BvaW50RVEpOgorICAgICAgICAo
dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlOjp+V2l0aFBhcmFtSW50ZXJmYWNlKToKKyAgICAg
ICAgKHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTo6R2V0UGFyYW0gY29uc3QpOgorICAgICAg
ICAodGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxKToKKyAgICAgICAgKFJVTl9BTExfVEVTVFMp
OgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlN0cmVhbWFibGVUb1N0cmluZyk6IERlbGV0
ZWQuCisgICAgICAgICh0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQ6Om9wZXJhdG9yPDwpOiBEZWxl
dGVkLgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkZvcm1hdEZvckZhaWx1cmVNZXNzYWdl
KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2UpOiBEZWxldGVkLgorICAgICAgICAodGVzdGluZzo6VGVzdFdpdGhQ
YXJhbTo6R2V0UGFyYW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAodGVzdGluZzo6VGVzdFdp
dGhQYXJhbTo6U2V0UGFyYW0pOiBEZWxldGVkLgorICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rl
c3QvZ3Rlc3RfcHJlZF9pbXBsLmg6CisgICAgICAgIChBc3NlcnRQcmVkMUhlbHBlcik6CisgICAg
ICAgIChBc3NlcnRQcmVkMkhlbHBlcik6CisgICAgICAgIChBc3NlcnRQcmVkM0hlbHBlcik6Cisg
ICAgICAgIChBc3NlcnRQcmVkNEhlbHBlcik6CisgICAgICAgIChBc3NlcnRQcmVkNUhlbHBlcik6
CisgICAgICAgICogZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9y
dC5oOiBBZGRlZC4KKyAgICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3Rv
bS9ndGVzdC1wcmludGVycy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMV90ZXN0Xy5jYy4KKyAgICAgICAgKiBndGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9saW5rLmNjLgorICAgICAgICAqIGd0ZXN0L2luY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5oOgorICAgICAgICAo
dGVzdGluZzo6aW50ZXJuYWw6OkludGVybmFsUnVuRGVhdGhUZXN0RmxhZzo6SW50ZXJuYWxSdW5E
ZWF0aFRlc3RGbGFnKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpJbnRlcm5hbFJ1bkRl
YXRoVGVzdEZsYWc6OmZpbGUgY29uc3QpOgorICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaDoKKyAgICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6
RmxvYXRpbmdQb2ludDxmbG9hdD46Ok1heCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6
RmxvYXRpbmdQb2ludDxkb3VibGU+OjpNYXgpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6
OkNvZGVMb2NhdGlvbjo6Q29kZUxvY2F0aW9uKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFs
OjpTa2lwQ29tbWEpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkdldFByZWZpeFVudGls
Q29tbWEpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlR5cGVQYXJhbWV0ZXJpemVkVGVz
dDo6UmVnaXN0ZXIpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlR5cGVQYXJhbWV0ZXJp
emVkVGVzdENhc2U6OlJlZ2lzdGVyKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpJc0Nv
bnRhaW5lclRlc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkFycmF5RXEpOgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkFycmF5QXdhcmVGaW5kKToKKyAgICAgICAgKHRlc3Rp
bmc6OmludGVybmFsOjpDb3B5QXJyYXkpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Ok5h
dGl2ZUFycmF5OjpOYXRpdmVBcnJheSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6TmF0
aXZlQXJyYXk6On5OYXRpdmVBcnJheSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6TmF0
aXZlQXJyYXk6OnNpemUgY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Ok5hdGl2
ZUFycmF5OjpiZWdpbiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6TmF0aXZl
QXJyYXk6OmVuZCBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6TmF0aXZlQXJy
YXk6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Ok5hdGl2
ZUFycmF5OjpJbml0Q29weSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6TmF0aXZlQXJy
YXk6OkluaXRSZWYpOgorICAgICAgICAoR1Rlc3RTdHJlYW1Ub0hlbHBlcik6IERlbGV0ZWQuCisg
ICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0VmFsdWVGb3JGYWlsdXJlTWVzc2FnZSk6
IERlbGV0ZWQuCisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0Rm9yRmFpbHVyZU1l
c3NhZ2UpOiBEZWxldGVkLgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkZvcm1hdEZpbGVM
b2NhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC1saW5rZWRfcHRyLmg6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2Vk
X3B0cl9pbnRlcm5hbDo6R1RFU1RfTE9DS19FWENMVURFRF8pOgorICAgICAgICAodGVzdGluZzo6
aW50ZXJuYWw6OmxpbmtlZF9wdHI6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5n
OjppbnRlcm5hbDo6bGlua2VkX3B0cl9pbnRlcm5hbDo6am9pbik6IERlbGV0ZWQuCisgICAgICAg
ICh0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cl9pbnRlcm5hbDo6ZGVwYXJ0KTogRGVsZXRl
ZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpsaW5rZWRfcHRyOjpyZWxlYXNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFt
LXV0aWwtZ2VuZXJhdGVkLmg6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJh
eTE6Om9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+IGNvbnN0KToKKyAgICAgICAgKHRlc3Rpbmc6
OmludGVybmFsOjpWYWx1ZUFycmF5Mjo6b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4gY29uc3Qp
OgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlZhbHVlQXJyYXkzOjpvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVB
cnJheTQ6Om9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+IGNvbnN0KToKKyAgICAgICAgKHRlc3Rp
bmc6OmludGVybmFsOjpWYWx1ZUFycmF5NTo6b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4gY29u
c3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlZhbHVlQXJyYXk2OjpvcGVyYXRvciBQ
YXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFs
dWVBcnJheTc6Om9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+IGNvbnN0KToKKyAgICAgICAgKHRl
c3Rpbmc6OmludGVybmFsOjpWYWx1ZUFycmF5ODo6b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4g
Y29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlZhbHVlQXJyYXk5OjpvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6
VmFsdWVBcnJheTEwOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAg
ICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTExOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTEyOjpv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRl
cm5hbDo6VmFsdWVBcnJheTEzOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6Cisg
ICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTE0OjpvcGVyYXRvciBQYXJhbUdl
bmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJh
eTE1OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5n
OjppbnRlcm5hbDo6VmFsdWVBcnJheTE2OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25z
dCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTE3OjpvcGVyYXRvciBQ
YXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFs
dWVBcnJheTE4OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0
ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTE5OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTIwOjpvcGVy
YXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5h
bDo6VmFsdWVBcnJheTIxOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTIyOjpvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTIz
OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjpp
bnRlcm5hbDo6VmFsdWVBcnJheTI0OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6
CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTI1OjpvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVB
cnJheTI2OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0
aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTI3OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBj
b25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTI4OjpvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6
VmFsdWVBcnJheTI5OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAg
ICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTMwOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTMxOjpv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRl
cm5hbDo6VmFsdWVBcnJheTMyOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6Cisg
ICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTMzOjpvcGVyYXRvciBQYXJhbUdl
bmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJh
eTM0OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5n
OjppbnRlcm5hbDo6VmFsdWVBcnJheTM1OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25z
dCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTM2OjpvcGVyYXRvciBQ
YXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFs
dWVBcnJheTM3OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0
ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTM4OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTM5OjpvcGVy
YXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5h
bDo6VmFsdWVBcnJheTQwOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTQxOjpvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTQy
OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjpp
bnRlcm5hbDo6VmFsdWVBcnJheTQzOjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6
CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTQ0OjpvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVB
cnJheTQ1OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0
aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTQ2OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBj
b25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTQ3OjpvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6
VmFsdWVBcnJheTQ4OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAg
ICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTQ5OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VmFsdWVBcnJheTUwOjpv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRl
cm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjI6Om9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6
OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMj4gPiBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRl
cm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjM6Om9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6
OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDM+ID4gY29uc3QpOgorICAgICAgICAodGVzdGluZzo6
aW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXI0OjpvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPiBjb25zdCk6CisgICAgICAgICh0
ZXN0aW5nOjppbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjU6Om9wZXJhdG9yIFBhcmFt
R2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gPiBjb25zdCk6
CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjY6Om9w
ZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDY+ID4gY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkNhcnRlc2lhblBy
b2R1Y3RIb2xkZXI3OjogY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkNhcnRl
c2lhblByb2R1Y3RIb2xkZXI4OjogY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6
OkNhcnRlc2lhblByb2R1Y3RIb2xkZXI5OjogY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50
ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIxMDo6IGNvbnN0KToKKyAgICAgICAgKHRlc3Rp
bmc6OmludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMjo6b3BlcmF0b3IgUGFyYW1HZW5l
cmF0b3I8IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMj4gPiBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjM6Om9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzPiA+IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9s
ZGVyNDo6b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwg
VDMsIFQ0PiA+IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpD
YXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNTo6b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0
cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gPiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICh0ZXN0aW5nOjppbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjY6Om9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiA+
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcDoKKyAgICAgICAgKiBndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaDoKKyAgICAgICAgKHRlc3Rpbmc6
OlRlc3RQYXJhbUluZm86OlRlc3RQYXJhbUluZm8pOgorICAgICAgICAodGVzdGluZzo6UHJpbnRU
b1N0cmluZ1BhcmFtTmFtZTo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjpp
bnRlcm5hbDo6UmFuZ2VHZW5lcmF0b3I6Okl0ZXJhdG9yOjpBZHZhbmNlKToKKyAgICAgICAgKHRl
c3Rpbmc6OmludGVybmFsOjpSYW5nZUdlbmVyYXRvcjo6Q2FsY3VsYXRlRW5kSW5kZXgpOgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvcjo6
SXRlcmF0b3I6Okl0ZXJhdG9yKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpEZWZhdWx0
UGFyYW1OYW1lKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpHZXRQYXJhbU5hbWVHZW4p
OgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm86
OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8pOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6
OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm86OkdldFRlc3RDYXNlTmFtZSBjb25zdCk6CisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbzo6QWRkVGVz
dENhc2VJbnN0YW50aWF0aW9uKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpQYXJhbWV0
ZXJpemVkVGVzdENhc2VJbmZvOjpSZWdpc3RlclRlc3RzKToKKyAgICAgICAgKHRlc3Rpbmc6Omlu
dGVybmFsOjpQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvOjpJbnN0YW50aWF0aW9uSW5mbzo6SW5z
dGFudGlhdGlvbkluZm8pOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtZXRlcml6
ZWRUZXN0Q2FzZUluZm86OklzVmFsaWRQYXJhbU5hbWUpOgorICAgICAgICAodGVzdGluZzo6aW50
ZXJuYWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5OjpHZXRUZXN0Q2FzZVBhdHRlcm5I
b2xkZXIpOgorICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9y
dC1hcmNoLmg6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtcG9ydC5oOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI6OnN3
YXApOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Om1vdmUpOgorICAgICAgICAodGVzdGlu
Zzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF8pOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6
OkRvd25DYXN0Xyk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Q2hlY2tlZERvd25jYXN0
VG9BY3R1YWxUeXBlKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpOb3RpZmljYXRpb246
Ok5vdGlmaWNhdGlvbik6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Tm90aWZpY2F0aW9u
Ojp+Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpOb3RpZmljYXRp
b246Ok5vdGlmeSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6Tm90aWZpY2F0aW9uOjpX
YWl0Rm9yTm90aWZpY2F0aW9uKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJlYWRX
aXRoUGFyYW06OlRocmVhZFdpdGhQYXJhbSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6
R1Rlc3RNdXRleExvY2s6OkdUZXN0TXV0ZXhMb2NrKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVy
bmFsOjpHVGVzdE11dGV4TG9jazo6fkdUZXN0TXV0ZXhMb2NrKToKKyAgICAgICAgKHRlc3Rpbmc6
OmludGVybmFsOjpUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZTo6flRocmVhZExvY2FsVmFsdWVI
b2xkZXJCYXNlKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJlYWRMb2NhbEJhc2U6
OlRocmVhZExvY2FsQmFzZSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkTG9j
YWxCYXNlOjp+VGhyZWFkTG9jYWxCYXNlKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpU
aHJlYWRXaXRoUGFyYW06On5UaHJlYWRXaXRoUGFyYW0pOgorICAgICAgICAodGVzdGluZzo6aW50
ZXJuYWw6OlRocmVhZFdpdGhQYXJhbTo6UnVubmFibGVJbXBsOjpSdW5uYWJsZUltcGwpOgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRocmVhZFdpdGhQYXJhbTo6UnVubmFibGVJbXBsOjp+
UnVubmFibGVJbXBsKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJlYWRXaXRoUGFy
YW06OlJ1bm5hYmxlSW1wbDo6UnVuKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJl
YWRMb2NhbDo6VGhyZWFkTG9jYWwpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRocmVh
ZExvY2FsOjp+VGhyZWFkTG9jYWwpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRocmVh
ZExvY2FsOjpwb2ludGVyKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJlYWRMb2Nh
bDo6cG9pbnRlciBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkTG9j
YWw6OmdldCBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkTG9jYWw6
OnNldCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkTG9jYWw6OlZhbHVlSG9s
ZGVyOjpWYWx1ZUhvbGRlcik6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkTG9j
YWw6OlZhbHVlSG9sZGVyOjpwb2ludGVyKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpU
aHJlYWRMb2NhbDo6R2V0T3JDcmVhdGVWYWx1ZSBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjpp
bnRlcm5hbDo6VGhyZWFkTG9jYWw6Ok5ld1ZhbHVlRm9yQ3VycmVudFRocmVhZCBjb25zdCk6Cisg
ICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkTG9jYWw6OlZhbHVlSG9sZGVyRmFjdG9y
eTo6VmFsdWVIb2xkZXJGYWN0b3J5KToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJl
YWRMb2NhbDo6VmFsdWVIb2xkZXJGYWN0b3J5Ojp+VmFsdWVIb2xkZXJGYWN0b3J5KToKKyAgICAg
ICAgKHRlc3Rpbmc6OmludGVybmFsOjpUaHJlYWRMb2NhbDo6RGVmYXVsdFZhbHVlSG9sZGVyRmFj
dG9yeTo6RGVmYXVsdFZhbHVlSG9sZGVyRmFjdG9yeSk6CisgICAgICAgICh0ZXN0aW5nOjppbnRl
cm5hbDo6VGhyZWFkTG9jYWw6OkRlZmF1bHRWYWx1ZUhvbGRlckZhY3Rvcnk6Ok1ha2VOZXdIb2xk
ZXIgY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRocmVhZExvY2FsOjpJbnN0
YW5jZVZhbHVlSG9sZGVyRmFjdG9yeTo6SW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkpOgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRocmVhZExvY2FsOjpJbnN0YW5jZVZhbHVlSG9sZGVy
RmFjdG9yeTo6TWFrZU5ld0hvbGRlciBjb25zdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5h
bDo6TXV0ZXhCYXNlOjpMb2NrKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpNdXRleEJh
c2U6OlVubG9jayk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXhCYXNlOjpBc3Nl
cnRIZWxkIGNvbnN0KToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpNdXRleDo6TXV0ZXgp
OgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4OjpMb2NrKToKKyAgICAgICAgKHRl
c3Rpbmc6OmludGVybmFsOjpNdXRleDo6VW5sb2NrKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVy
bmFsOjpJc0FscGhhKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpJc0FsTnVtKToKKyAg
ICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpJc0RpZ2l0KToKKyAgICAgICAgKHRlc3Rpbmc6Omlu
dGVybmFsOjpJc0xvd2VyKToKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpJc1NwYWNlKToK
KyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpJc1VwcGVyKToKKyAgICAgICAgKHRlc3Rpbmc6
OmludGVybmFsOjpJc1hEaWdpdCk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VG9Mb3dl
cik6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VG9VcHBlcik6CisgICAgICAgICh0ZXN0
aW5nOjppbnRlcm5hbDo6U3RyaXBUcmFpbGluZ1NwYWNlcyk6CisgICAgICAgICh0ZXN0aW5nOjpp
bnRlcm5hbDo6cG9zaXg6OkdldEVudik6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6U3Ry
U3RyZWFtOjpvcGVyYXRvciBuZXcpOiBEZWxldGVkLgorICAgICAgICAodGVzdGluZzo6aW50ZXJu
YWw6OlN0clN0cmVhbTo6b3BlcmF0b3IgbmV3W10pOiBEZWxldGVkLgorICAgICAgICAodGVzdGlu
Zzo6aW50ZXJuYWw6OlN0clN0cmVhbTo6b3BlcmF0b3IgZGVsZXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKHRlc3Rpbmc6OmludGVybmFsOjpTdHJTdHJlYW06Om9wZXJhdG9yIGRlbGV0ZVtdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmlu
Zy5oOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Om9wZXJhdG9yPDwpOiBEZWxldGVkLgor
ICAgICAgICAqIGd0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaDoKKyAg
ICAgICAgKHN0ZDo6dHIxOjpndGVzdF9pbnRlcm5hbDo6PEdURVNUXzEwX1RZUEVOQU1FU18pOgor
ICAgICAgICAoc3RkOjp0cjE6OjxHVEVTVF8wX1RZUEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0
cjE6OjxHVEVTVF8xX1RZUEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6OjxHVEVTVF8yX1RZ
UEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6OjxHVEVTVF8zX1RZUEVOQU1FU18pOgorICAg
ICAgICAoc3RkOjp0cjE6OjxHVEVTVF80X1RZUEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6
OjxHVEVTVF81X1RZUEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6OjxHVEVTVF82X1RZUEVO
QU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6OjxHVEVTVF83X1RZUEVOQU1FU18pOgorICAgICAg
ICAoc3RkOjp0cjE6OjxHVEVTVF84X1RZUEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6OjxH
VEVTVF85X1RZUEVOQU1FU18pOgorICAgICAgICAoc3RkOjp0cjE6OjxHVEVTVF8xMF9UWVBFTkFN
RVNfKToKKyAgICAgICAgKHN0ZDo6dHIxOjpHVEVTVF8xMF9UWVBFTkFNRVNfKToKKyAgICAgICAg
KiBndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcDoKKyAgICAg
ICAgKiBndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oOgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkdldFR5cGVOYW1lKToKKyAgICAgICAgKiBndGVzdC9p
bmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oLnB1bXA6CisgICAgICAgICog
Z3Rlc3QvbWFrZS9NYWtlZmlsZToKKyAgICAgICAgKiBndGVzdC9tc3ZjL2d0ZXN0LW1kLnNsbjog
QWRkZWQuCisgICAgICAgICogZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3Byb2o6IEFkZGVkLgorICAg
ICAgICAqIGd0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4cHJvajogUmVtb3ZlZC4KKyAgICAgICAgKiBn
dGVzdC9tc3ZjL2d0ZXN0LW1kLnZjeHByb2ouZmlsdGVyczogUmVtb3ZlZC4KKyAgICAgICAgKiBn
dGVzdC9tc3ZjL2d0ZXN0LnNsbjogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvbXN2Yy9ndGVzdC52
Y3Byb2o6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L21zdmMvZ3Rlc3RfbWFpbi1tZC52Y3Byb2o6
IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L21zdmMvZ3Rlc3RfbWFpbi52Y3Byb2o6IEFkZGVkLgor
ICAgICAgICAqIGd0ZXN0L21zdmMvZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjcHJvajogQWRkZWQuCisg
ICAgICAgICogZ3Rlc3QvbXN2Yy9ndGVzdF9wcm9kX3Rlc3QudmNwcm9qOiBBZGRlZC4KKyAgICAg
ICAgKiBndGVzdC9tc3ZjL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjcHJvajogQWRkZWQuCisgICAgICAg
ICogZ3Rlc3QvbXN2Yy9ndGVzdF91bml0dGVzdC52Y3Byb2o6IEFkZGVkLgorICAgICAgICAqIGd0
ZXN0L3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2M6CisgICAgICAgICogZ3Rlc3Qvc2FtcGxl
cy9zYW1wbGUxX3VuaXR0ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3NhbXBsZXMvc2FtcGxlMi5o
OgorICAgICAgICAqIGd0ZXN0L3NhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYzoKKyAgICAgICAg
KiBndGVzdC9zYW1wbGVzL3NhbXBsZTMtaW5sLmg6CisgICAgICAgIChRdWV1ZU5vZGU6OlF1ZXVl
Tm9kZSk6CisgICAgICAgICogZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjOgorICAg
ICAgICAqIGd0ZXN0L3NhbXBsZXMvc2FtcGxlNF91bml0dGVzdC5jYzoKKyAgICAgICAgKiBndGVz
dC9zYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2M6CisgICAgICAgICogZ3Rlc3Qvc2FtcGxlcy9z
YW1wbGU2X3VuaXR0ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3NhbXBsZXMvc2FtcGxlN191bml0
dGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC9zYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2M6Cisg
ICAgICAgICogZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjOgorICAgICAgICAqIGd0
ZXN0L3NjcmlwdHMvY29tbW9uLnB5OiBSZW5hbWVkIGZyb20gU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvcnVuX3Rlc3RzLnB5LgorICAgICAgICAoR2V0Q29tbWFuZE91dHB1dCk6CisgICAgICAgIChH
ZXRTdm5JbmZvKToKKyAgICAgICAgKEdldFN2blRydW5rKToKKyAgICAgICAgKElzSW5HVGVzdFN2
bik6CisgICAgICAgIChJc0luR01vY2tTdm4pOgorICAgICAgICAqIGd0ZXN0L3NjcmlwdHMvZnVz
ZV9ndGVzdF9maWxlcy5weToKKyAgICAgICAgKFZlcmlmeUZpbGVFeGlzdHMpOgorICAgICAgICAo
VmVyaWZ5T3V0cHV0RmlsZSk6CisgICAgICAgIChGdXNlR1Rlc3RIKToKKyAgICAgICAgKEZ1c2VH
VGVzdEguUHJvY2Vzc0ZpbGUpOgorICAgICAgICAoRnVzZUdUZXN0QWxsQ2NUb0ZpbGUpOgorICAg
ICAgICAoRnVzZUdUZXN0QWxsQ2NUb0ZpbGUuUHJvY2Vzc0ZpbGUpOgorICAgICAgICAoRnVzZUdU
ZXN0QWxsQ2MpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogZ3Rlc3Qvc2NyaXB0cy9nZW5f
Z3Rlc3RfcHJlZF9pbXBsLnB5OgorICAgICAgICAqIGd0ZXN0L3NjcmlwdHMvZ3Rlc3QtY29uZmln
LmluOgorICAgICAgICAqIGd0ZXN0L3NjcmlwdHMvcHVtcC5weToKKyAgICAgICAgKFN0cmlwTWV0
YUNvbW1lbnRzKToKKyAgICAgICAgKFRva2VuaXplTGluZXMpOgorICAgICAgICAoVG9rZW5pemUp
OgorICAgICAgICAoUGFyc2VUb0FTVCk6CisgICAgICAgIChJc1NpbmdsZUxpbmVDb21tZW50KToK
KyAgICAgICAgKElzSW5QcmVwcm9jZXNzb3JEaXJlY3RpdmUpOgorICAgICAgICAoV3JhcFByZXBy
b2Nlc3NvckRpcmVjdGl2ZSk6CisgICAgICAgIChJc011bHRpTGluZUlXWVVQcmFnbWEpOgorICAg
ICAgICAoSXNIZWFkZXJHdWFyZEluY2x1ZGVPck9uZUxpbmVJV1lVUHJhZ21hKToKKyAgICAgICAg
KFdyYXBMb25nTGluZSk6CisgICAgICAgIChDb252ZXJ0RnJvbVB1bXBTb3VyY2UpOgorICAgICAg
ICAobWFpbik6CisgICAgICAgIChDb252ZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKElzQ29tbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChJc0luUHJlcHJvY2Vzc29yRGlyZXZhdGl2ZSk6IERlbGV0
ZWQuCisgICAgICAgIChXcmFwUHJlcHJvY2Vzc29yRGlyZXZhdGl2ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChJc0hlYWRlckd1YXJkT3JJbmNsdWRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBndGVzdC9z
Y3JpcHRzL3JlbGVhc2VfZG9jcy5weTogQWRkZWQuCisgICAgICAgIChEcm9wV2lraVN1ZmZpeCk6
CisgICAgICAgIChXaWtpQnJhbmNoZXIpOgorICAgICAgICAoV2lraUJyYW5jaGVyLl9faW5pdF9f
KToKKyAgICAgICAgKFdpa2lCcmFuY2hlci5HZXRGaWxlc1RvQnJhbmNoKToKKyAgICAgICAgKFdp
a2lCcmFuY2hlci5CcmFuY2hGaWxlcyk6CisgICAgICAgIChXaWtpQnJhbmNoZXIuVXBkYXRlTGlu
a3NJbkJyYW5jaGVkRmlsZXMpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogZ3Rlc3Qvc2Ny
aXB0cy90ZXN0L01ha2VmaWxlOgorICAgICAgICAqIGd0ZXN0L3NyYy9ndGVzdC1hbGwuY2M6Cisg
ICAgICAgICogZ3Rlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2M6CisgICAgICAgICogZ3Rlc3Qv
c3JjL2d0ZXN0LWZpbGVwYXRoLmNjOgorICAgICAgICAqIGd0ZXN0L3NyYy9ndGVzdC1pbnRlcm5h
bC1pbmwuaDoKKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpHVGVzdEZsYWdTYXZlcjo6R1Rl
c3RGbGFnU2F2ZXIpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkdUZXN0RmxhZ1NhdmVy
Ojp+R1Rlc3RGbGFnU2F2ZXIpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OkNvdW50SWYp
OgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRlc3RQcm9wZXJ0eUtleUlzOjpUZXN0UHJv
cGVydHlLZXlJcyk6CisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdFByb3BlcnR5S2V5
SXM6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6Ok9zU3Rh
Y2tUcmFjZUdldHRlcjo6T3NTdGFja1RyYWNlR2V0dGVyKToKKyAgICAgICAgKHRlc3Rpbmc6Omlu
dGVybmFsOjpQYXJzZU5hdHVyYWxOdW1iZXIpOgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6
OlRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkpOgorICAgICAgICAodGVzdGluZzo6
aW50ZXJuYWw6OlRlc3RJbmZvSW1wbDo6c2hvdWxkX3J1biBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdEluZm9JbXBsOjpzZXRfc2hvdWxkX3J1bik6IERl
bGV0ZWQuCisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdEluZm9JbXBsOjppc19kaXNh
YmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdElu
Zm9JbXBsOjpzZXRfaXNfZGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAodGVzdGluZzo6aW50
ZXJuYWw6OlRlc3RJbmZvSW1wbDo6bWF0Y2hlc19maWx0ZXIgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRlc3RJbmZvSW1wbDo6c2V0X21hdGNoZXNfZmlsdGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpUZXN0SW5mb0ltcGw6OnRl
c3RfY2FzZV9uYW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFs
OjpUZXN0SW5mb0ltcGw6Om5hbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAodGVzdGluZzo6
aW50ZXJuYWw6OlRlc3RJbmZvSW1wbDo6dGVzdF9jYXNlX2NvbW1lbnQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRlc3RJbmZvSW1wbDo6Y29tbWVudCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdEluZm9JbXBsOjpm
aXh0dXJlX2NsYXNzX2lkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVy
bmFsOjpUZXN0SW5mb0ltcGw6OnJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0aW5nOjpp
bnRlcm5hbDo6VGVzdEluZm9JbXBsOjpyZXN1bHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
dGVzdGluZzo6aW50ZXJuYWw6OlRlc3RJbmZvSW1wbDo6Q2xlYXJSZXN1bHQpOiBEZWxldGVkLgor
ICAgICAgICAodGVzdGluZzo6aW50ZXJuYWw6OlRlc3RJbmZvSW1wbDo6Q2xlYXJUZXN0UmVzdWx0
KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxlOjpBdXRv
SGFuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxl
Ojp+QXV0b0hhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0aW5nOjppbnRlcm5hbDo6QXV0
b0hhbmRsZTo6R2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3Rpbmc6OmludGVybmFs
OjpBdXRvSGFuZGxlOjpSZXNldCk6IERlbGV0ZWQuCisgICAgICAgICogZ3Rlc3Qvc3JjL2d0ZXN0
LXBvcnQuY2M6CisgICAgICAgICogZ3Rlc3Qvc3JjL2d0ZXN0LXByaW50ZXJzLmNjOiBBZGRlZC4K
KyAgICAgICAgKiBndGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjOgorICAgICAgICAqIGd0ZXN0
L3NyYy9ndGVzdC10eXBlZC10ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3NyYy9ndGVzdC5jYzoK
KyAgICAgICAgKiBndGVzdC9zcmMvZ3Rlc3RfbWFpbi5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0
L2d0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYzogQWRkZWQuCisgICAgICAgICogZ3Rlc3QvdGVz
dC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdC1m
aWxlcGF0aF90ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3QtbGlua2VkX3B0cl90
ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYzoKKyAg
ICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0LW1lc3NhZ2VfdGVzdC5jYzoKKyAgICAgICAgKiBndGVz
dC90ZXN0L2d0ZXN0LW9wdGlvbnNfdGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0
LXBhcmFtLXRlc3QyX3Rlc3QuY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10
ZXN0X3Rlc3QuY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3Qu
aDoKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYzoKKyAgICAgICAgKiBn
dGVzdC90ZXN0L2d0ZXN0LXByaW50ZXJzX3Rlc3QuY2M6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0
L3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVz
dC10dXBsZV90ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJf
dGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYzoK
KyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oOgorICAgICAgICAq
IGd0ZXN0L3Rlc3QvZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2M6CisgICAgICAgICogZ3Rlc3Qv
dGVzdC9ndGVzdF9hbGxfdGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0X2JyZWFr
X29uX2ZhaWx1cmVfdW5pdHRlc3QucHk6CisgICAgICAgIChTZXRFbnZWYXIpOiBEZWxldGVkLgor
ICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8uY2M6
CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9jYXRjaF9leGNlcHRpb25zX3Rlc3QucHk6IEFk
ZGVkLgorICAgICAgICAoQ2F0Y2hTZWhFeGNlcHRpb25zVGVzdCk6CisgICAgICAgIChDYXRjaFNl
aEV4Y2VwdGlvbnNUZXN0LlRlc3RTZWhFeGNlcHRpb25zKToKKyAgICAgICAgKENhdGNoU2VoRXhj
ZXB0aW9uc1Rlc3QudGVzdENhdGNoZXNTZWhFeGNlcHRpb25zV2l0aEN4eEV4Y2VwdGlvbnNFbmFi
bGVkKToKKyAgICAgICAgKENhdGNoU2VoRXhjZXB0aW9uc1Rlc3QudGVzdENhdGNoZXNTZWhFeGNl
cHRpb25zV2l0aEN4eEV4Y2VwdGlvbnNEaXNhYmxlZCk6CisgICAgICAgIChDYXRjaEN4eEV4Y2Vw
dGlvbnNUZXN0KToKKyAgICAgICAgKENhdGNoQ3h4RXhjZXB0aW9uc1Rlc3QudGVzdENhdGNoZXND
eHhFeGNlcHRpb25zSW5GaXh0dXJlQ29uc3RydWN0b3IpOgorICAgICAgICAoQ2F0Y2hDeHhFeGNl
cHRpb25zVGVzdC50ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJbkZpeHR1cmVEZXN0cnVjdG9yKToK
KyAgICAgICAgKENhdGNoQ3h4RXhjZXB0aW9uc1Rlc3QudGVzdENhdGNoZXNDeHhFeGNlcHRpb25z
SW5TZXRVcFRlc3RDYXNlKToKKyAgICAgICAgKENhdGNoQ3h4RXhjZXB0aW9uc1Rlc3QudGVzdENh
dGNoZXNDeHhFeGNlcHRpb25zSW5UZWFyRG93blRlc3RDYXNlKToKKyAgICAgICAgKENhdGNoQ3h4
RXhjZXB0aW9uc1Rlc3QudGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5TZXRVcCk6CisgICAgICAg
IChDYXRjaEN4eEV4Y2VwdGlvbnNUZXN0LnRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luVGVhckRv
d24pOgorICAgICAgICAoQ2F0Y2hDeHhFeGNlcHRpb25zVGVzdC50ZXN0Q2F0Y2hlc0N4eEV4Y2Vw
dGlvbnNJblRlc3RCb2R5KToKKyAgICAgICAgKENhdGNoQ3h4RXhjZXB0aW9uc1Rlc3QudGVzdENh
dGNoZXNOb25TdGRDeHhFeGNlcHRpb25zKToKKyAgICAgICAgKENhdGNoQ3h4RXhjZXB0aW9uc1Rl
c3QudGVzdFVuaGFuZGxlZEN4eEV4Y2VwdGlvbnNBYm9ydFRoZVByb2dyYW0pOgorICAgICAgICAq
IGd0ZXN0L3Rlc3QvZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc190ZXN0Xy5jYzogQWRkZWQuCisgICAg
ICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0Xy5jYzoKKyAgICAgICAgKiBndGVzdC90
ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weToKKyAgICAgICAgKEFzc2VydEVxKToKKyAgICAgICAg
KEdUZXN0RW52VmFyVGVzdC50ZXN0RW52VmFyQWZmZWN0c0ZsYWcpOgorICAgICAgICAoR1Rlc3RF
bnZWYXJUZXN0LnRlc3RYbWxPdXRwdXRGaWxlKToKKyAgICAgICAgKEdUZXN0RW52VmFyVGVzdCk6
CisgICAgICAgIChHVGVzdEVudlZhclRlc3QudGVzdFhtbE91dHB1dEZpbGVPdmVycmlkZSk6Cisg
ICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3RfLmNjOgorICAgICAgICAqIGd0
ZXN0L3Rlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0
L2d0ZXN0X2ZpbHRlcl91bml0dGVzdC5weToKKyAgICAgICAgKEdUZXN0RmlsdGVyVW5pdFRlc3Qu
QXNzZXJ0UGFydGl0aW9uSXNWYWxpZCk6CisgICAgICAgIChHVGVzdEZpbHRlclVuaXRUZXN0LkFk
anVzdEZvclBhcmFtZXRlcml6ZWRUZXN0cyk6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9m
aWx0ZXJfdW5pdHRlc3RfLmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0
LnB5OgorICAgICAgICAoR1Rlc3RIZWxwVGVzdC5UZXN0SGVscEZsYWcpOgorICAgICAgICAqIGd0
ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0Xy5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0
X2xpc3RfdGVzdHNfdW5pdHRlc3QucHk6CisgICAgICAgIChWZXJ5TG8pOgorICAgICAgICAoR1Rl
c3RMaXN0VGVzdHNVbml0VGVzdC5SdW5BbmRWZXJpZnkpOgorICAgICAgICAoR1Rlc3RMaXN0VGVz
dHNVbml0VGVzdC50ZXN0RGVmYXVsdEJlaGF2aW9yKToKKyAgICAgICAgKEdUZXN0TGlzdFRlc3Rz
VW5pdFRlc3QudGVzdEZsYWcpOgorICAgICAgICAoR1Rlc3RMaXN0VGVzdHNVbml0VGVzdC50ZXN0
T3ZlcnJpZGVOb25GaWx0ZXJGbGFncyk6CisgICAgICAgIChHVGVzdExpc3RUZXN0c1VuaXRUZXN0
LnRlc3RXaXRoRmlsdGVyRmxhZ3MpOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90
ZXN0c191bml0dGVzdF8uY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9tYWluX3VuaXR0
ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfbmMuY2M6IFJlbW92ZWQuCisgICAg
ICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9uY190ZXN0LnB5OiBSZW1vdmVkLgorICAgICAgICAqIGd0
ZXN0L3Rlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0
L2d0ZXN0X291dHB1dF90ZXN0LnB5OgorICAgICAgICAoTm9ybWFsaXplVG9DdXJyZW50UGxhdGZv
cm0pOgorICAgICAgICAoR1Rlc3RPdXRwdXRUZXN0LnRlc3RPdXRwdXQpOgorICAgICAgICAqIGd0
ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rl
c3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQ6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVz
dF9vdXRwdXRfdGVzdF9nb2xkZW5fd2luLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBndGVzdC90
ZXN0L2d0ZXN0X3ByZWRfaW1wbF91bml0dGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0
ZXN0X3ByZW1hdHVyZV9leGl0X3Rlc3QuY2M6IEFkZGVkLgorICAgICAgICAqIGd0ZXN0L3Rlc3Qv
Z3Rlc3RfcHJvZF90ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfcmVwZWF0X3Rl
c3QuY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3RfLmNjOgorICAg
ICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYzoKKyAgICAgICAgKiBn
dGVzdC90ZXN0L2d0ZXN0X3N0cmVzc190ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rl
c3RfdGVzdF91dGlscy5weToKKyAgICAgICAgKFNldEVudlZhcik6CisgICAgICAgIChHZXRTb3Vy
Y2VEaXIpOgorICAgICAgICAoR2V0QnVpbGREaXIpOgorICAgICAgICAoR2V0VGVzdEV4ZWN1dGFi
bGVQYXRoKToKKyAgICAgICAgKFN1YnByb2Nlc3MuX19pbml0X18uX1JlcGxhY2VFbnZEaWN0KToK
KyAgICAgICAgKFN1YnByb2Nlc3MpOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3df
b25fZmFpbHVyZV9leF90ZXN0LmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3df
b25fZmFpbHVyZV90ZXN0LnB5OgorICAgICAgICAoUnVuKToKKyAgICAgICAgKiBndGVzdC90ZXN0
L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9n
dGVzdF91bmluaXRpYWxpemVkX3Rlc3QucHk6CisgICAgICAgIChBc3NlcnRFcSk6CisgICAgICAg
ICogZ3Rlc3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3RfLmNjOgorICAgICAgICAqIGd0
ZXN0L3Rlc3QvZ3Rlc3RfdW5pdHRlc3QuY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF94
bWxfb3V0ZmlsZTFfdGVzdF8uY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0
ZmlsZTJfdGVzdF8uY2M6CisgICAgICAgICogZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZXNf
dGVzdC5weToKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3Qu
cHk6CisgICAgICAgIChHVGVzdFhNTE91dHB1dFVuaXRUZXN0KToKKyAgICAgICAgKEdUZXN0WE1M
T3V0cHV0VW5pdFRlc3QudGVzdE5vbkVtcHR5WG1sT3V0cHV0KToKKyAgICAgICAgKEdUZXN0WE1M
T3V0cHV0VW5pdFRlc3QudGVzdEVtcHR5WG1sT3V0cHV0KToKKyAgICAgICAgKEdUZXN0WE1MT3V0
cHV0VW5pdFRlc3QudGVzdFRpbWVzdGFtcFZhbHVlKToKKyAgICAgICAgKEdUZXN0WE1MT3V0cHV0
VW5pdFRlc3QudGVzdERlZmF1bHRPdXRwdXRGaWxlKToKKyAgICAgICAgKEdUZXN0WE1MT3V0cHV0
VW5pdFRlc3QudGVzdFN1cHByZXNzZWRYbWxPdXRwdXQpOgorICAgICAgICAoR1Rlc3RYTUxPdXRw
dXRVbml0VGVzdC50ZXN0RmlsdGVyZWRUZXN0WG1sT3V0cHV0KToKKyAgICAgICAgKEdUZXN0WE1M
T3V0cHV0VW5pdFRlc3QuX0dldFhtbE91dHB1dCk6CisgICAgICAgIChHVGVzdFhNTE91dHB1dFVu
aXRUZXN0Ll9UZXN0WG1sT3V0cHV0KToKKyAgICAgICAgKiBndGVzdC90ZXN0L2d0ZXN0X3htbF9v
dXRwdXRfdW5pdHRlc3RfLmNjOgorICAgICAgICAqIGd0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX3Rlc3Rf
dXRpbHMucHk6CisgICAgICAgIChHVGVzdFhNTFRlc3RDYXNlLkFzc2VydEVxdWl2YWxlbnROb2Rl
cyk6CisgICAgICAgIChHVGVzdFhNTFRlc3RDYXNlKToKKyAgICAgICAgKEdUZXN0WE1MVGVzdENh
c2UuX0dldENoaWxkcmVuKToKKyAgICAgICAgKEdUZXN0WE1MVGVzdENhc2UuTm9ybWFsaXplWG1s
KToKKyAgICAgICAgKiBndGVzdC90ZXN0L3Byb2R1Y3Rpb24uaDoKKyAgICAgICAgKiBndGVzdC90
ZXN0L3J1bl90ZXN0c191dGlsLnB5OiBSZW1vdmVkLgorICAgICAgICAqIGd0ZXN0L3Rlc3QvcnVu
X3Rlc3RzX3V0aWxfdGVzdC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBndGVzdC94Y29kZS9Db25m
aWcvRGVidWdQcm9qZWN0LnhjY29uZmlnOgorICAgICAgICAqIGd0ZXN0L3hjb2RlL0NvbmZpZy9G
cmFtZXdvcmtUYXJnZXQueGNjb25maWc6CisgICAgICAgICogZ3Rlc3QveGNvZGUvQ29uZmlnL0dl
bmVyYWwueGNjb25maWc6CisgICAgICAgICogZ3Rlc3QveGNvZGUvQ29uZmlnL1Byb2R1Y3Rpb25Q
cm9qZWN0LnhjY29uZmlnOiBSZW1vdmVkLgorICAgICAgICAqIGd0ZXN0L3hjb2RlL0NvbmZpZy9S
ZWxlYXNlUHJvamVjdC54Y2NvbmZpZzoKKyAgICAgICAgKiBndGVzdC94Y29kZS9Db25maWcvU3Rh
dGljTGlicmFyeVRhcmdldC54Y2NvbmZpZzoKKyAgICAgICAgKiBndGVzdC94Y29kZS9NYWtlZmls
ZTogUmVtb3ZlZC4KKyAgICAgICAgKiBndGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBs
ZS9ydW50ZXN0cy5zaDoKKyAgICAgICAgKiBndGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1Nh
bXBsZS93aWRnZXRfdGVzdC5jYzoKKyAgICAgICAgKiBndGVzdC94Y29kZS9TY3JpcHRzL3J1bnRl
c3RzLnNoOgorICAgICAgICAqIGd0ZXN0L3hjb2RlL1NjcmlwdHMvdmVyc2lvbmdlbmVyYXRlLnB5
OgorICAgICAgICAqIGd0ZXN0L3hjb2RlL2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKIDIwMTctMDgtMDggIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtDTWFrZV0gUHJvcGVybHkgdGVzdCBpZiBjb21waWxlciBzdXBwb3J0cyBj
b21waWxlciBmbGFncwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvLmdpdGln
bm9yZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0Ly5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI3
YmU0YjkxYjcwMWRiOWYzZjg5ODkxZTBiZGIxMjc5ZmIxNTNiNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0Ly5naXRpZ25vcmUKQEAgLTAsMCArMSwyIEBACisjIHB5
dGhvbgorKi5weWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NIQU5HRVMg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DSEFOR0VTCmluZGV4IGU1NzQ0MTVlZTZlZDgxY2Y0
OTJiZTI5NTM0NmM0NDRlZWIxMGNlODguLjA1NTIxMzI0MjEyYzkxMjg3ZDkyNDRkNDRiYWIzMDZk
YjY2NGJhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NIQU5HRVMKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ0hBTkdFUwpAQCAtMSwzICsxLDYyIEBACitDaGFu
Z2VzIGZvciAxLjcuMDoKKworKiBOZXcgZmVhdHVyZTogZGVhdGggdGVzdHMgYXJlIHN1cHBvcnRl
ZCBvbiBPcGVuQlNEIGFuZCBpbiBpT1MKKyAgc2ltdWxhdG9yIG5vdy4KKyogTmV3IGZlYXR1cmU6
IEdvb2dsZSBUZXN0IG5vdyBpbXBsZW1lbnRzIGEgcHJvdG9jb2wgdG8gYWxsb3cKKyAgYSB0ZXN0
IHJ1bm5lciB0byBkZXRlY3QgdGhhdCBhIHRlc3QgcHJvZ3JhbSBoYXMgZXhpdGVkCisgIHByZW1h
dHVyZWx5IGFuZCByZXBvcnQgaXQgYXMgYSBmYWlsdXJlIChiZWZvcmUgaXQgd291bGQgYmUKKyAg
ZmFsc2VseSByZXBvcnRlZCBhcyBhIHN1Y2Nlc3MgaWYgdGhlIGV4aXQgY29kZSBpcyAwKS4KKyog
TmV3IGZlYXR1cmU6IFRlc3Q6OlJlY29yZFByb3BlcnR5KCkgY2FuIG5vdyBiZSB1c2VkIG91dHNp
ZGUgb2YgdGhlCisgIGxpZmVzcGFuIG9mIGEgdGVzdCBtZXRob2QsIGluIHdoaWNoIGNhc2UgaXQg
d2lsbCBiZSBhdHRyaWJ1dGVkIHRvCisgIHRoZSBjdXJyZW50IHRlc3QgY2FzZSBvciB0aGUgdGVz
dCBwcm9ncmFtIGluIHRoZSBYTUwgcmVwb3J0LgorKiBOZXcgZmVhdHVyZSAocG90ZW50aWFsbHkg
YnJlYWtpbmcpOiAtLWd0ZXN0X2xpc3RfdGVzdHMgbm93IHByaW50cworICB0aGUgdHlwZSBwYXJh
bWV0ZXJzIGFuZCB2YWx1ZSBwYXJhbWV0ZXJzIGZvciBlYWNoIHRlc3QuCisqIEltcHJvdmVtZW50
OiBjaGFyIHBvaW50ZXJzIGFuZCBjaGFyIGFycmF5cyBhcmUgbm93IGVzY2FwZWQgcHJvcGVybHkK
KyAgaW4gZmFpbHVyZSBtZXNzYWdlcy4KKyogSW1wcm92ZW1lbnQ6IGZhaWx1cmUgc3VtbWFyeSBp
biBYTUwgcmVwb3J0cyBub3cgaW5jbHVkZXMgZmlsZSBhbmQKKyAgbGluZSBpbmZvcm1hdGlvbi4K
KyogSW1wcm92ZW1lbnQ6IHRoZSA8dGVzdHN1aXRlcz4gWE1MIGVsZW1lbnQgbm93IGhhcyBhIHRp
bWVzdGFtcCBhdHRyaWJ1dGUuCisqIEltcHJvdmVtZW50OiBXaGVuIC0tZ3Rlc3RfZmlsdGVyIGlz
IHNwZWNpZmllZCwgWE1MIHJlcG9ydCBub3cgZG9lc24ndAorICBjb250YWluIGluZm9ybWF0aW9u
IGFib3V0IHRlc3RzIHRoYXQgYXJlIGZpbHRlcmVkIG91dC4KKyogRml4ZWQgdGhlIGJ1ZyB3aGVy
ZSBsb25nIC0tZ3Rlc3RfZmlsdGVyIGZsYWcgdmFsdWVzIGFyZSB0cnVuY2F0ZWQgaW4KKyAgZGVh
dGggdGVzdHMuCisqIFBvdGVudGlhbGx5IGJyZWFraW5nIGNoYW5nZTogUlVOX0FMTF9URVNUUygp
IGlzIG5vdyBpbXBsZW1lbnRlZCBhcyBhCisgIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBtYWNybyBp
biBvcmRlciB0byB3b3JrIGJldHRlciB3aXRoIENsYW5nLgorKiBDb21wYXRpYmlsaXR5IGZpeGVz
IHdpdGggQysrIDExIGFuZCB2YXJpb3VzIHBsYXRmb3Jtcy4KKyogQnVnL3dhcm5pbmcgZml4ZXMu
CisKK0NoYW5nZXMgZm9yIDEuNi4wOgorCisqIE5ldyBmZWF0dXJlOiBBRERfRkFJTFVSRV9BVCgp
IGZvciByZXBvcnRpbmcgYSB0ZXN0IGZhaWx1cmUgYXQgdGhlCisgIGdpdmVuIHNvdXJjZSBsb2Nh
dGlvbiAtLSB1c2VmdWwgZm9yIHdyaXRpbmcgdGVzdGluZyB1dGlsaXRpZXMuCisqIE5ldyBmZWF0
dXJlOiB0aGUgdW5pdmVyc2FsIHZhbHVlIHByaW50ZXIgaXMgbW92ZWQgZnJvbSBHb29nbGUgTW9j
aworICB0byBHb29nbGUgVGVzdC4KKyogTmV3IGZlYXR1cmU6IHR5cGUgcGFyYW1ldGVycyBhbmQg
dmFsdWUgcGFyYW1ldGVycyBhcmUgcmVwb3J0ZWQgaW4KKyAgdGhlIFhNTCByZXBvcnQgbm93Lgor
KiBBIGd0ZXN0X2Rpc2FibGVfcHRocmVhZHMgQ01ha2Ugb3B0aW9uLgorKiBDb2xvcmVkIG91dHB1
dCB3b3JrcyBpbiBHTlUgU2NyZWVuIHNlc3Npb25zIG5vdy4KKyogUGFyYW1ldGVycyBvZiB2YWx1
ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBub3cgcHJpbnRlZCBpbiB0aGUKKyAgdGV4dHVhbCBv
dXRwdXQuCisqIEZhaWx1cmVzIGZyb20gYWQgaG9jIHRlc3QgYXNzZXJ0aW9ucyBydW4gYmVmb3Jl
IFJVTl9BTExfVEVTVFMoKSBhcmUKKyAgbm93IGNvcnJlY3RseSByZXBvcnRlZC4KKyogQXJndW1l
bnRzIG9mIEFTU0VSVF9YWSBhbmQgRVhQRUNUX1hZIG5vIGxvbmdlciBuZWVkIHRvIHN1cHBvcnQg
PDwgdG8KKyAgb3N0cmVhbS4KKyogTW9yZSBjb21wbGV0ZSBoYW5kbGluZyBvZiBleGNlcHRpb25z
LgorKiBHVEVTVF9BU1NFUlRfWFkgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBBU1NFUlRfWFkgaW4g
Y2FzZSB0aGUgbGF0dGVyCisgIG5hbWUgaXMgYWxyZWFkeSB1c2VkIGJ5IGFub3RoZXIgbGlicmFy
eS4KKyogLS1ndGVzdF9jYXRjaF9leGNlcHRpb25zIGlzIG5vdyB0cnVlIGJ5IGRlZmF1bHQsIGFs
bG93aW5nIGEgdGVzdAorICBwcm9ncmFtIHRvIGNvbnRpbnVlIGFmdGVyIGFuIGV4Y2VwdGlvbiBp
cyB0aHJvd24uCisqIFZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdCBmaXh0dXJlcyBjYW4gbm93IGRl
cml2ZSBmcm9tIFRlc3QgYW5kCisgIFdpdGhQYXJhbUludGVyZmFjZTxUPiBzZXBhcmF0ZWx5LCBl
YXNpbmcgY29udmVyc2lvbiBvZiBsZWdhY3kgdGVzdHMuCisqIERlYXRoIHRlc3QgbWVzc2FnZXMg
YXJlIGNsZWFybHkgbWFya2VkIHRvIG1ha2UgdGhlbSBtb3JlCisgIGRpc3Rpbmd1aXNoYWJsZSBm
cm9tIG90aGVyIG1lc3NhZ2VzLgorKiBDb21wYXRpYmlsaXR5IGZpeGVzIGZvciBBbmRyb2lkLCBH
b29nbGUgTmF0aXZlIENsaWVudCwgTWluR1csIEhQIFVYLAorICBQb3dlclBDLCBMdWNpZCBhdXRv
dG9vbHMsIGxpYkNTdGQsIFN1biBDKyssIEJvcmxhbmQgQysrIEJ1aWxkZXIgKENvZGUgR2Vhciks
CisgIElCTSBYTCBDKysgKFZpc3VhbCBBZ2UgQysrKSwgYW5kIEMrKzB4LgorKiBCdWcgZml4ZXMg
YW5kIGltcGxlbWVudGF0aW9uIGNsZWFuLXVwcy4KKyogUG90ZW50aWFsbHkgaW5jb21wYXRpYmxl
IGNoYW5nZXM6IGRpc2FibGVzIHRoZSBoYXJtZnVsICdtYWtlIGluc3RhbGwnCisgIGNvbW1hbmQg
aW4gYXV0b3Rvb2xzLgorCiBDaGFuZ2VzIGZvciAxLjUuMDoKIAogICogTmV3IGZlYXR1cmU6IGFz
c2VydGlvbnMgY2FuIGJlIHNhZmVseSBjYWxsZWQgaW4gbXVsdGlwbGUgdGhyZWFkcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9DTWFrZUxpc3RzLnR4dApvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAw
NjQ0CmluZGV4IGU5MjFmOTUyM2NlZGQ4NGE5ZDNlYWFlY2IxMWE5ZmY3NDNlMGI5OGMuLmFmZGQw
ZGVmMGNiNDRlNTUzM2I3NWEwNjlkNTUzMmE0ZTU5OGM0MDEKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ01h
a2VMaXN0cy50eHQKQEAgLTE4LDYgKzE4LDcgQEAgc2V0KEdURVNUX1NPVVJDRVMKICAgICAke0dU
RVNUX0RJUn0vc3JjL2d0ZXN0LWZpbGVwYXRoLmNjCiAgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVz
dF9tYWluLmNjCiAgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1wb3J0LmNjCisgICAgJHtHVEVT
VF9ESVJ9L3NyYy9ndGVzdC1wcmludGVycy5jYwogICAgICR7R1RFU1RfRElSfS9zcmMvZ3Rlc3Qt
dGVzdC1wYXJ0LmNjCiAgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC10eXBlZC10ZXN0LmNjCiAp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DT05UUklCVVRPUlMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9DT05UUklCVVRPUlMKaW5kZXggMDkzNGFlMTMwNTlhZmNkYzA1
ZGY4MTI0N2U2MWI5YTg0YTIzMTJlMi4uZmVhZTJmYzA0NDEwZGMzMDhlNDY0YWEyNTZmZTFmMmQz
MWVkYzk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09OVFJJQlVUT1JT
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NPTlRSSUJVVE9SUwpAQCAtMjEsNiArMjEs
NyBAQCBNYW51ZWwgS2xpbWVrIDxrbGltZWtAZ29vZ2xlLmNvbT4KIE1hcmt1cyBIZXVsZSA8bWFy
a3VzLmhldWxlQGdtYWlsLmNvbT4KIE1pa2EgUmFlbnRvIDxtaWtpZUBpa2kuZmk+CiBNaWtsw7Nz
IEZhemVrYXMgPG1mYXpla2FzQHN6ZW1hZm9yLmNvbT4KK1Bhc2kgVmFsbWluZW4gPHBhc2kudmFs
bWluZW5AZ21haWwuY29tPgogUGF0cmljayBIYW5uYSA8cGhhbm5hQGdvb2dsZS5jb20+CiBQYXRy
aWNrIFJpbGV5IDxwZnJAZ29vZ2xlLmNvbT4KIFBldGVyIEthbWluc2tpIDxwaW90cmtAZ29vZ2xl
LmNvbT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NPUFlJTkcgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9DT1BZSU5HCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxOTQxYTExZjhjZTk0Mzg5MTYwYjQ1ODkyN2EyOWJhMjE3NTQyODE4Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L0NPUFlJTkcKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Db3B5cmlnaHQgMjAwOCwg
R29vZ2xlIEluYy4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotbWV0OgotCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotZGlzdHJpYnV0aW9uLgotICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLXRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLVNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0oSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLU9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9MSUNFTlNFIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTQxYTExZjhjZTk0Mzg5MTYw
YjQ1ODkyN2EyOWJhMjE3NTQyODE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvTElDRU5TRQpAQCAtMCwwICsxLDI4IEBACitDb3B5cmlnaHQgMjAwOCwgR29vZ2xl
IEluYy4KK0FsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
bWV0OgorCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlz
dHJpYnV0aW9uLgorICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKK0EgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCitPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCitUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9NYWtlZmlsZS5hbSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L01ha2VmaWxlLmFtCmluZGV4IDhkNzVlMzJjYzIwY2RlODNjMTc0ZjRl
MDc4ZTI5OTNhOTMyYTlkMTguLjI5Nzk3ZTRlOWRlNGUxZDVlNWY5M2JiYTE0Mjg4ZGU4N2Y2MjM5
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L01ha2VmaWxlLmFtCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L01ha2VmaWxlLmFtCkBAIC0xLDEzICsxLDE2IEBACiAj
IEF1dG9tYWtlIGZpbGUKIAorQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQKKwogIyBOb25zdGFuZGFy
ZCBwYWNrYWdlIGZpbGVzIGZvciBkaXN0cmlidXRpb24KIEVYVFJBX0RJU1QgPSBcCiAgIENIQU5H
RVMgXAogICBDT05UUklCVVRPUlMgXAorICBMSUNFTlNFIFwKICAgaW5jbHVkZS9ndGVzdC9ndGVz
dC1wYXJhbS10ZXN0LmgucHVtcCBcCisgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFy
YW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wIFwKICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC10dXBsZS5oLnB1bXAgXAogICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRp
bC5oLnB1bXAgXAotICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2Vu
ZXJhdGVkLmgucHVtcCBcCiAgIG1ha2UvTWFrZWZpbGUgXAogICBzY3JpcHRzL2Z1c2VfZ3Rlc3Rf
ZmlsZXMucHkgXAogICBzY3JpcHRzL2dlbl9ndGVzdF9wcmVkX2ltcGwucHkgXApAQCAtMTcsMTMg
KzIwLDE0IEBAIEVYVFJBX0RJU1QgPSBcCiAjIGd0ZXN0IHNvdXJjZSBmaWxlcyB0aGF0IHdlIGRv
bid0IGNvbXBpbGUgZGlyZWN0bHkuICBUaGV5IGFyZQogIyAjaW5jbHVkZWQgYnkgZ3Rlc3QtYWxs
LmNjLgogR1RFU1RfU1JDID0gXAotICBzcmMvZ3Rlc3QuY2MgXAogICBzcmMvZ3Rlc3QtZGVhdGgt
dGVzdC5jYyBcCiAgIHNyYy9ndGVzdC1maWxlcGF0aC5jYyBcCiAgIHNyYy9ndGVzdC1pbnRlcm5h
bC1pbmwuaCBcCiAgIHNyYy9ndGVzdC1wb3J0LmNjIFwKKyAgc3JjL2d0ZXN0LXByaW50ZXJzLmNj
IFwKICAgc3JjL2d0ZXN0LXRlc3QtcGFydC5jYyBcCi0gIHNyYy9ndGVzdC10eXBlZC10ZXN0LmNj
CisgIHNyYy9ndGVzdC10eXBlZC10ZXN0LmNjIFwKKyAgc3JjL2d0ZXN0LmNjCiAKIEVYVFJBX0RJ
U1QgKz0gJChHVEVTVF9TUkMpCiAKQEAgLTQxLDU2ICs0NSw1OSBAQCBFWFRSQV9ESVNUICs9IFwK
IAogIyBDKysgdGVzdCBmaWxlcyB0aGF0IHdlIGRvbid0IGNvbXBpbGUgZGlyZWN0bHkuCiBFWFRS
QV9ESVNUICs9IFwKKyAgdGVzdC9ndGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MgXAogICB0ZXN0
L2d0ZXN0LWRlYXRoLXRlc3RfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVz
dC5jYyBcCiAgIHRlc3QvZ3Rlc3QtZmlsZXBhdGhfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3QtbGlu
a2VkX3B0cl90ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC1saXN0ZW5lcl90ZXN0LmNjIFwKICAgdGVz
dC9ndGVzdC1tZXNzYWdlX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3Qu
Y2MgXAogICB0ZXN0L2d0ZXN0LW9wdGlvbnNfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtcGFyYW0t
dGVzdF90ZXN0LmNjIFwKICAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjIFwKKyAgdGVz
dC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rl
c3QuY2MgXAorICB0ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3Qt
cGFyYW0tdGVzdF90ZXN0LmggXAogICB0ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYyBcCi0gIHRlc3Qv
Z3Rlc3RfcHJlZF9pbXBsX3VuaXR0ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2Mg
XAotICB0ZXN0L3Byb2R1Y3Rpb24uY2MgXAotICB0ZXN0L3Byb2R1Y3Rpb24uaCBcCi0gIHRlc3Qv
Z3Rlc3RfcmVwZWF0X3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0X3NvbGVfaGVhZGVyX3Rlc3QuY2Mg
XAotICB0ZXN0L2d0ZXN0X3N0cmVzc190ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdF9wcmVtYXR1cmVf
ZXhpdF90ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC1wcmludGVyc190ZXN0LmNjIFwKICAgdGVzdC9n
dGVzdC10ZXN0LXBhcnRfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9l
eF90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MgXAorICB0ZXN0L2d0
ZXN0LXR1cGxlX3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MgXAor
ICB0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3QtdHlwZWQtdGVz
dF90ZXN0LmggXAotICB0ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjIFwKICAgdGVzdC9ndGVzdC11bml0
dGVzdC1hcGlfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYyBcCi0gIHRl
c3QvZ3Rlc3RfbWFpbl91bml0dGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MgXAot
ICB0ZXN0L2d0ZXN0LXR1cGxlX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVz
dC5jYyBcCi0gIHRlc3QvZ3Rlc3QtcGFyYW0tdGVzdDJfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3Rf
YnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8uY2MgXAorICB0ZXN0L2d0ZXN0X2NhdGNoX2V4Y2Vw
dGlvbnNfdGVzdF8uY2MgXAogICB0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjIFwKICAgdGVzdC9n
dGVzdF9lbnZfdmFyX3Rlc3RfLmNjIFwKKyAgdGVzdC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNj
IFwKICAgdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3RfLmNjIFwKICAgdGVzdC9ndGVzdF9oZWxw
X3Rlc3RfLmNjIFwKICAgdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYyBcCisgIHRl
c3QvZ3Rlc3RfbWFpbl91bml0dGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0dGVz
dC5jYyBcCiAgIHRlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjIFwKKyAgdGVzdC9ndGVzdF9wcmVk
X2ltcGxfdW5pdHRlc3QuY2MgXAorICB0ZXN0L2d0ZXN0X3Byb2RfdGVzdC5jYyBcCisgIHRlc3Qv
Z3Rlc3RfcmVwZWF0X3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdF8uY2MgXAor
ICB0ZXN0L2d0ZXN0X3NvbGVfaGVhZGVyX3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0X3N0cmVzc190
ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MgXAogICB0
ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2MgXAogICB0ZXN0L2d0ZXN0X3VuaW5p
dGlhbGl6ZWRfdGVzdF8uY2MgXAorICB0ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjIFwKKyAgdGVzdC9n
dGVzdF91bml0dGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfLmNjIFwK
ICAgdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X3htbF9v
dXRwdXRfdW5pdHRlc3RfLmNjCisgIHRlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2Mg
XAorICB0ZXN0L3Byb2R1Y3Rpb24uY2MgXAorICB0ZXN0L3Byb2R1Y3Rpb24uaAogCiAjIFB5dGhv
biB0ZXN0cyB0aGF0IHdlIGRvbid0IHJ1bi4KIEVYVFJBX0RJU1QgKz0gXAotICB0ZXN0L2d0ZXN0
X3Rlc3RfdXRpbHMucHkgXAotICB0ZXN0L2d0ZXN0X3htbF90ZXN0X3V0aWxzLnB5IFwKICAgdGVz
dC9ndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0LnB5IFwKKyAgdGVzdC9ndGVzdF9jYXRj
aF9leGNlcHRpb25zX3Rlc3QucHkgXAogICB0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkgXAogICB0
ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weSBcCiAgIHRlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0
LnB5IFwKQEAgLTk4LDI0ICsxMDUsMjQgQEAgRVhUUkFfRElTVCArPSBcCiAgIHRlc3QvZ3Rlc3Rf
bGlzdF90ZXN0c191bml0dGVzdC5weSBcCiAgIHRlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkgXAog
ICB0ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0IFwKLSAgdGVzdC9ndGVzdF9v
dXRwdXRfdGVzdF9nb2xkZW5fd2luLnR4dCBcCiAgIHRlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0LnB5
IFwKKyAgdGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5IFwKICAgdGVzdC9ndGVzdF90aHJvd19vbl9m
YWlsdXJlX3Rlc3QucHkgXAogICB0ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5weSBcCiAg
IHRlc3QvZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkgXAogICB0ZXN0L2d0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3QucHkgXAotICB0ZXN0L3J1bl90ZXN0c191dGlsLnB5IFwKLSAgdGVzdC9ydW5f
dGVzdHNfdXRpbF90ZXN0LnB5CisgIHRlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkKIAogIyBD
TWFrZSBzY3JpcHQKIEVYVFJBX0RJU1QgKz0gXAotICBDTWFrZUxpc3RzLnR4dAorICBDTWFrZUxp
c3RzLnR4dCBcCisgIGNtYWtlL2ludGVybmFsX3V0aWxzLmNtYWtlCiAKICMgTVNWQyBwcm9qZWN0
IGZpbGVzCiBFWFRSQV9ESVNUICs9IFwKICAgbXN2Yy9ndGVzdC1tZC5zbG4gXAotICBtc3ZjL2d0
ZXN0LnNsbiBcCiAgIG1zdmMvZ3Rlc3QtbWQudmNwcm9qIFwKKyAgbXN2Yy9ndGVzdC5zbG4gXAog
ICBtc3ZjL2d0ZXN0LnZjcHJvaiBcCiAgIG1zdmMvZ3Rlc3RfbWFpbi1tZC52Y3Byb2ogXAogICBt
c3ZjL2d0ZXN0X21haW4udmNwcm9qIFwKQEAgLTEzMywzMSArMTQwLDI3IEBAIEVYVFJBX0RJU1Qg
Kz0gXAogICB4Y29kZS9Db25maWcvU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyBcCiAgIHhj
b2RlL0NvbmZpZy9UZXN0VGFyZ2V0LnhjY29uZmlnIFwKICAgeGNvZGUvUmVzb3VyY2VzL0luZm8u
cGxpc3QgXAotICB4Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weSBcCiAgIHhjb2RlL1Nj
cmlwdHMvcnVudGVzdHMuc2ggXAorICB4Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weSBc
CiAgIHhjb2RlL2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKIAogIyB4Y29kZSBzYW1w
bGUgZmlsZXMKIEVYVFJBX0RJU1QgKz0gXAogICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBs
ZS9JbmZvLnBsaXN0IFwKKyAgeGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvV2lkZ2V0RnJh
bWV3b3JrLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogXAogICB4Y29kZS9TYW1wbGVzL0ZyYW1l
d29ya1NhbXBsZS9ydW50ZXN0cy5zaCBcCi0gIHhjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxl
L3dpZGdldF90ZXN0LmNjIFwKICAgeGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0
LmNjIFwKICAgeGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0LmggXAotICB4Y29k
ZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9XaWRnZXRGcmFtZXdvcmsueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS93aWRnZXRfdGVzdC5j
YwogCiAjIEMrK0J1aWxkZXIgcHJvamVjdCBmaWxlcwogRVhUUkFfRElTVCArPSBcCisgIGNvZGVn
ZWFyL2d0ZXN0LmNicHJvaiBcCisgIGNvZGVnZWFyL2d0ZXN0Lmdyb3VwcHJvaiBcCiAgIGNvZGVn
ZWFyL2d0ZXN0X2FsbC5jYyBcCiAgIGNvZGVnZWFyL2d0ZXN0X2xpbmsuY2MgXAotICBjb2RlZ2Vh
ci9ndGVzdC5jYnByb2ogXAogICBjb2RlZ2Vhci9ndGVzdF9tYWluLmNicHJvaiBcCi0gIGNvZGVn
ZWFyL2d0ZXN0X3VuaXR0ZXN0LmNicHJvaiBcCi0gIGNvZGVnZWFyL2d0ZXN0Lmdyb3VwcHJvagot
Ci0jIFNjcmlwdHMgYW5kIHV0aWxpdGllcwotYmluX1NDUklQVFMgPSBzY3JpcHRzL2d0ZXN0LWNv
bmZpZwotQ0xFQU5GSUxFUyA9ICQoYmluX1NDUklQVFMpCisgIGNvZGVnZWFyL2d0ZXN0X3VuaXR0
ZXN0LmNicHJvagogCiAjIERpc3RyaWJ1dGUgYW5kIGluc3RhbGwgTTQgbWFjcm8KIG00ZGF0YWRp
ciA9ICQoZGF0YWRpcikvYWNsb2NhbApAQCAtMTgxLDE1ICsxODQsMTcgQEAgbGliX0xUTElCUkFS
SUVTID0gbGliL2xpYmd0ZXN0LmxhIGxpYi9saWJndGVzdF9tYWluLmxhCiAKIGxpYl9saWJndGVz
dF9sYV9TT1VSQ0VTID0gc3JjL2d0ZXN0LWFsbC5jYwogCi1wa2dpbmNsdWRlX0hFQURFUlMgPSBp
bmNsdWRlL2d0ZXN0L2d0ZXN0LmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVz
dC9ndGVzdC1kZWF0aC10ZXN0LmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVz
dC9ndGVzdC1tZXNzYWdlLmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9n
dGVzdC1wYXJhbS10ZXN0LmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9n
dGVzdF9wcmVkX2ltcGwuaCBcCi0gICAgICAgICAgICAgICAgICAgICBpbmNsdWRlL2d0ZXN0L2d0
ZXN0X3Byb2QuaCBcCi0gICAgICAgICAgICAgICAgICAgICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXNw
aS5oIFwKLSAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0
LmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVzdC10eXBlZC10ZXN0
LmgKK3BrZ2luY2x1ZGVfSEVBREVSUyA9IFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10
ZXN0LmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCBcCisgIGluY2x1ZGUvZ3Rl
c3QvZ3Rlc3QtcGFyYW0tdGVzdC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC1wcmludGVycy5o
IFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC1zcGkuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3Qt
dGVzdC1wYXJ0LmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaCBcCisgIGlu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmgg
XAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaAogCiBwa2dpbmNsdWRlX2ludGVybmFsZGly
ID0gJChwa2dpbmNsdWRlZGlyKS9pbnRlcm5hbAogcGtnaW5jbHVkZV9pbnRlcm5hbF9IRUFERVJT
ID0gXApAQCAtMjAwLDkgKzIwNSwxMyBAQCBwa2dpbmNsdWRlX2ludGVybmFsX0hFQURFUlMgPSBc
CiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCBc
CiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oIFwKICAgaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmggXAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXBvcnQtYXJjaC5oIFwKICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJp
bmcuaCBcCiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaCBcCi0gIGluY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgKKyAgaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC10eXBlLXV0aWwuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9t
L2d0ZXN0LmggXAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0Lmgg
XAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wcmludGVycy5oCiAKIGxp
Yl9saWJndGVzdF9tYWluX2xhX1NPVVJDRVMgPSBzcmMvZ3Rlc3RfbWFpbi5jYwogbGliX2xpYmd0
ZXN0X21haW5fbGFfTElCQUREID0gbGliL2xpYmd0ZXN0LmxhCkBAIC0yMTYsMTMgKzIyNSwxNCBA
QCBsaWJfbGliZ3Rlc3RfbWFpbl9sYV9MSUJBREQgPSBsaWIvbGliZ3Rlc3QubGEKIAogbm9pbnN0
X0xUTElCUkFSSUVTID0gc2FtcGxlcy9saWJzYW1wbGVzLmxhCiAKLXNhbXBsZXNfbGlic2FtcGxl
c19sYV9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGUxLmNjIFwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2FtcGxlcy9zYW1wbGUxLmggXAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzYW1wbGVzL3NhbXBsZTIuY2MgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzYW1wbGVzL3NhbXBsZTIuaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNhbXBsZXMvc2FtcGxlMy1pbmwuaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNhbXBsZXMvc2FtcGxlNC5jYyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNh
bXBsZXMvc2FtcGxlNC5oCitzYW1wbGVzX2xpYnNhbXBsZXNfbGFfU09VUkNFUyA9IFwKKyAgc2Ft
cGxlcy9zYW1wbGUxLmNjIFwKKyAgc2FtcGxlcy9zYW1wbGUxLmggXAorICBzYW1wbGVzL3NhbXBs
ZTIuY2MgXAorICBzYW1wbGVzL3NhbXBsZTIuaCBcCisgIHNhbXBsZXMvc2FtcGxlMy1pbmwuaCBc
CisgIHNhbXBsZXMvc2FtcGxlNC5jYyBcCisgIHNhbXBsZXMvc2FtcGxlNC5oCiAKIFRFU1RTPQog
VEVTVFNfRU5WSVJPTk1FTlQgPSBHVEVTVF9TT1VSQ0VfRElSPSIkKHNyY2RpcikvdGVzdCIgXApA
QCAtMjM0LDYgKzI0NCw3IEBAIFRFU1RTICs9IHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdAogY2hl
Y2tfUFJPR1JBTVMgKz0gc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0CiBzYW1wbGVzX3NhbXBsZTFf
dW5pdHRlc3RfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYwogc2FtcGxlc19z
YW1wbGUxX3VuaXR0ZXN0X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGliL2xpYmd0ZXN0LmxhIFwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvbGlic2FtcGxlcy5sYQogCiAjIEFub3RoZXIgc2Ft
cGxlLiAgSXQgYWxzbyB2ZXJpZmllcyB0aGF0IGxpYmd0ZXN0IHdvcmtzLgpAQCAtMjQzLDE4ICsy
NTQsMjAgQEAgc2FtcGxlc19zYW1wbGUxMF91bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1w
bGUxMF91bml0dGVzdC5jYwogc2FtcGxlc19zYW1wbGUxMF91bml0dGVzdF9MREFERCA9IGxpYi9s
aWJndGVzdC5sYQogCiAjIFRoaXMgdGVzdHMgbW9zdCBjb25zdHJ1Y3RzIG9mIGd0ZXN0IGFuZCB2
ZXJpZmllcyB0aGF0IGxpYmd0ZXN0X21haW4KLSMgd29ya3MuCisjIGFuZCBsaWJndGVzdCB3b3Jr
LgogVEVTVFMgKz0gdGVzdC9ndGVzdF9hbGxfdGVzdAogY2hlY2tfUFJPR1JBTVMgKz0gdGVzdC9n
dGVzdF9hbGxfdGVzdAogdGVzdF9ndGVzdF9hbGxfdGVzdF9TT1VSQ0VTID0gdGVzdC9ndGVzdF9h
bGxfdGVzdC5jYwotdGVzdF9ndGVzdF9hbGxfdGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWlu
LmxhCit0ZXN0X2d0ZXN0X2FsbF90ZXN0X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQogCiAjIFRlc3RzIHRo
YXQgZnVzZWQgZ3Rlc3QgZmlsZXMgY29tcGlsZSBhbmQgd29yay4KIEZVU0VEX0dURVNUX1NSQyA9
IFwKICAgZnVzZWQtc3JjL2d0ZXN0L2d0ZXN0LWFsbC5jYyBcCi0gIGZ1c2VkLXNyYy9ndGVzdC9n
dGVzdF9tYWluLmNjIFwKLSAgZnVzZWQtc3JjL2d0ZXN0L2d0ZXN0LmgKKyAgZnVzZWQtc3JjL2d0
ZXN0L2d0ZXN0LmggXAorICBmdXNlZC1zcmMvZ3Rlc3QvZ3Rlc3RfbWFpbi5jYwogCitpZiBIQVZF
X1BZVEhPTgogVEVTVFMgKz0gdGVzdC9mdXNlZF9ndGVzdF90ZXN0CiBjaGVja19QUk9HUkFNUyAr
PSB0ZXN0L2Z1c2VkX2d0ZXN0X3Rlc3QKIHRlc3RfZnVzZWRfZ3Rlc3RfdGVzdF9TT1VSQ0VTID0g
JChGVVNFRF9HVEVTVF9TUkMpIFwKQEAgLTI3OCw3ICsyOTEsMjAgQEAgZnVzZWQtZ3Rlc3Q6ICQo
cGtnaW5jbHVkZV9IRUFERVJTKSAkKHBrZ2luY2x1ZGVfaW50ZXJuYWxfSEVBREVSUykgXAogCiBt
YWludGFpbmVyLWNsZWFuLWxvY2FsOgogCXJtIC1yZiAiJChzcmNkaXIpL2Z1c2VkLXNyYyIKK2Vu
ZGlmCiAKICMgRGVhdGggdGVzdHMgbWF5IHByb2R1Y2UgY29yZSBkdW1wcyBpbiB0aGUgYnVpbGQg
ZGlyZWN0b3J5LiBJbiBjYXNlCiAjIHRoaXMgaGFwcGVucywgY2xlYW4gdGhlbSB0byBrZWVwIGRp
c3RjbGVhbmNoZWNrIGhhcHB5LgotQ0xFQU5GSUxFUyArPSBjb3JlCitDTEVBTkZJTEVTID0gY29y
ZQorCisjIERpc2FibGVzICdtYWtlIGluc3RhbGwnIGFzIGluc3RhbGxpbmcgYSBjb21waWxlZCB2
ZXJzaW9uIG9mIEdvb2dsZQorIyBUZXN0IGNhbiBsZWFkIHRvIHVuZGVmaW5lZCBiZWhhdmlvciBk
dWUgdG8gdmlvbGF0aW9uIG9mIHRoZQorIyBPbmUtRGVmaW5pdGlvbiBSdWxlLgorCitpbnN0YWxs
LWV4ZWMtbG9jYWw6CisJZWNobyAiJ21ha2UgaW5zdGFsbCcgaXMgZGFuZ2Vyb3VzIGFuZCBub3Qg
c3VwcG9ydGVkLiBJbnN0ZWFkLCBzZWUgUkVBRE1FIGZvciBob3cgdG8gaW50ZWdyYXRlIEdvb2ds
ZSBUZXN0IGludG8geW91ciBidWlsZCBzeXN0ZW0uIgorCWZhbHNlCisKK2luc3RhbGwtZGF0YS1s
b2NhbDoKKwllY2hvICInbWFrZSBpbnN0YWxsJyBpcyBkYW5nZXJvdXMgYW5kIG5vdCBzdXBwb3J0
ZWQuIEluc3RlYWQsIHNlZSBSRUFETUUgZm9yIGhvdyB0byBpbnRlZ3JhdGUgR29vZ2xlIFRlc3Qg
aW50byB5b3VyIGJ1aWxkIHN5c3RlbS4iCisJZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L1JFQURNRSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM2MTE5MDAyMDk5MTUwZDcxNTc0OWExNmUwM2My
ZjU3MzY4NmJiNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9SRUFETUUKKysrIC9kZXYvbnVsbApAQCAtMSw0MTcg
KzAsMCBAQAotR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yawotPT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotCi1odHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC8KLQotT3Zl
cnZpZXcKLS0tLS0tLS0tCi0KLUdvb2dsZSdzIGZyYW1ld29yayBmb3Igd3JpdGluZyBDKysgdGVz
dHMgb24gYSB2YXJpZXR5IG9mIHBsYXRmb3JtcwotKExpbnV4LCBNYWMgT1MgWCwgV2luZG93cywg
V2luZG93cyBDRSwgU3ltYmlhbiwgZXRjKS4gIEJhc2VkIG9uIHRoZQoteFVuaXQgYXJjaGl0ZWN0
dXJlLiAgU3VwcG9ydHMgYXV0b21hdGljIHRlc3QgZGlzY292ZXJ5LCBhIHJpY2ggc2V0IG9mCi1h
c3NlcnRpb25zLCB1c2VyLWRlZmluZWQgYXNzZXJ0aW9ucywgZGVhdGggdGVzdHMsIGZhdGFsIGFu
ZCBub24tZmF0YWwKLWZhaWx1cmVzLCB2YXJpb3VzIG9wdGlvbnMgZm9yIHJ1bm5pbmcgdGhlIHRl
c3RzLCBhbmQgWE1MIHRlc3QgcmVwb3J0Ci1nZW5lcmF0aW9uLgotCi1QbGVhc2Ugc2VlIHRoZSBw
cm9qZWN0IHBhZ2UgYWJvdmUgZm9yIG1vcmUgaW5mb3JtYXRpb24gYXMgd2VsbCBhcyB0aGUKLW1h
aWxpbmcgbGlzdCBmb3IgcXVlc3Rpb25zLCBkaXNjdXNzaW9ucywgYW5kIGRldmVsb3BtZW50LiAg
VGhlcmUgaXMKLWFsc28gYW4gSVJDIGNoYW5uZWwgb24gT0ZUQyAoaXJjLm9mdGMubmV0KSAjZ3Rl
c3QgYXZhaWxhYmxlLiAgUGxlYXNlCi1qb2luIHVzIQotCi1SZXF1aXJlbWVudHMgZm9yIEVuZCBV
c2VycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotR29vZ2xlIFRlc3QgaXMgZGVzaWdu
ZWQgdG8gaGF2ZSBmYWlybHkgbWluaW1hbCByZXF1aXJlbWVudHMgdG8gYnVpbGQKLWFuZCB1c2Ug
d2l0aCB5b3VyIHByb2plY3RzLCBidXQgdGhlcmUgYXJlIHNvbWUuICBDdXJyZW50bHksIHdlIHN1
cHBvcnQKLUxpbnV4LCBXaW5kb3dzLCBNYWMgT1MgWCwgYW5kIEN5Z3dpbi4gIFdlIHdpbGwgYWxz
byBtYWtlIG91ciBiZXN0Ci1lZmZvcnQgdG8gc3VwcG9ydCBvdGhlciBwbGF0Zm9ybXMgKGUuZy4g
U29sYXJpcywgQUlYLCBhbmQgei9PUykuCi1Ib3dldmVyLCBzaW5jZSBjb3JlIG1lbWJlcnMgb2Yg
dGhlIEdvb2dsZSBUZXN0IHByb2plY3QgaGF2ZSBubyBhY2Nlc3MKLXRvIHRoZXNlIHBsYXRmb3Jt
cywgR29vZ2xlIFRlc3QgbWF5IGhhdmUgb3V0c3RhbmRpbmcgaXNzdWVzIHRoZXJlLiAgSWYKLXlv
dSBub3RpY2UgYW55IHByb2JsZW1zIG9uIHlvdXIgcGxhdGZvcm0sIHBsZWFzZSBub3RpZnkKLWdv
b2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbS4gIFBhdGNoZXMgZm9yIGZpeGluZyB0
aGVtIGFyZQotZXZlbiBtb3JlIHdlbGNvbWUhCi0KLSMjIyBMaW51eCBSZXF1aXJlbWVudHMgIyMj
Ci0KLVRoZXNlIGFyZSB0aGUgYmFzZSByZXF1aXJlbWVudHMgdG8gYnVpbGQgYW5kIHVzZSBHb29n
bGUgVGVzdCBmcm9tIGEgc291cmNlCi1wYWNrYWdlIChhcyBkZXNjcmliZWQgYmVsb3cpOgotICAq
IEdOVS1jb21wYXRpYmxlIE1ha2Ugb3IgZ21ha2UKLSAgKiBQT1NJWC1zdGFuZGFyZCBzaGVsbAot
ICAqIFBPU0lYKC0yKSBSZWd1bGFyIEV4cHJlc3Npb25zIChyZWdleC5oKQotICAqIEEgQysrOTgt
c3RhbmRhcmQtY29tcGxpYW50IGNvbXBpbGVyCi0KLSMjIyBXaW5kb3dzIFJlcXVpcmVtZW50cyAj
IyMKLQotICAqIE1pY3Jvc29mdCBWaXN1YWwgQysrIDcuMSBvciBuZXdlcgotCi0jIyMgQ3lnd2lu
IFJlcXVpcmVtZW50cyAjIyMKLQotICAqIEN5Z3dpbiAxLjUuMjUtMTQgb3IgbmV3ZXIKLQotIyMj
IE1hYyBPUyBYIFJlcXVpcmVtZW50cyAjIyMKLQotICAqIE1hYyBPUyBYIDEwLjQgVGlnZXIgb3Ig
bmV3ZXIKLSAgKiBEZXZlbG9wZXIgVG9vbHMgSW5zdGFsbGVkCi0KLUFsc28sIHlvdSdsbCBuZWVk
IENNYWtlIDIuNi40IG9yIGhpZ2hlciBpZiB5b3Ugd2FudCB0byBidWlsZCB0aGUKLXNhbXBsZXMg
dXNpbmcgdGhlIHByb3ZpZGVkIENNYWtlIHNjcmlwdCwgcmVnYXJkbGVzcyBvZiB0aGUgcGxhdGZv
cm0uCi0KLVJlcXVpcmVtZW50cyBmb3IgQ29udHJpYnV0b3JzCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotCi1XZSB3ZWxjb21lIHBhdGNoZXMuICBJZiB5b3UgcGxhbiB0byBjb250cmli
dXRlIGEgcGF0Y2gsIHlvdSBuZWVkIHRvCi1idWlsZCBHb29nbGUgVGVzdCBhbmQgaXRzIG93biB0
ZXN0cyBmcm9tIGFuIFNWTiBjaGVja291dCAoZGVzY3JpYmVkCi1iZWxvdyksIHdoaWNoIGhhcyBm
dXJ0aGVyIHJlcXVpcmVtZW50czoKLQotICAqIFB5dGhvbiB2ZXJzaW9uIDIuMyBvciBuZXdlciAo
Zm9yIHJ1bm5pbmcgc29tZSBvZiB0aGUgdGVzdHMgYW5kCi0gICAgcmUtZ2VuZXJhdGluZyBjZXJ0
YWluIHNvdXJjZSBmaWxlcyBmcm9tIHRlbXBsYXRlcykKLSAgKiBDTWFrZSAyLjYuNCBvciBuZXdl
cgotCi1HZXR0aW5nIHRoZSBTb3VyY2UKLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UaGVyZSBhcmUg
dHdvIHByaW1hcnkgd2F5cyBvZiBnZXR0aW5nIEdvb2dsZSBUZXN0J3Mgc291cmNlIGNvZGU6IHlv
dQotY2FuIGRvd25sb2FkIGEgc3RhYmxlIHNvdXJjZSByZWxlYXNlIGluIHlvdXIgcHJlZmVycmVk
IGFyY2hpdmUgZm9ybWF0LAotb3IgZGlyZWN0bHkgY2hlY2sgb3V0IHRoZSBzb3VyY2UgZnJvbSBv
dXIgU3VidmVyc2lvbiAoU1ZOKSByZXBvc2l0YXJ5LgotVGhlIFNWTiBjaGVja291dCByZXF1aXJl
cyBhIGZldyBleHRyYSBzdGVwcyBhbmQgc29tZSBleHRyYSBzb2Z0d2FyZQotcGFja2FnZXMgb24g
eW91ciBzeXN0ZW0sIGJ1dCBsZXRzIHlvdSB0cmFjayB0aGUgbGF0ZXN0IGRldmVsb3BtZW50IGFu
ZAotbWFrZSBwYXRjaGVzIG11Y2ggbW9yZSBlYXNpbHksIHNvIHdlIGhpZ2hseSBlbmNvdXJhZ2Ug
aXQuCi0KLSMjIyBTb3VyY2UgUGFja2FnZSAjIyMKLQotR29vZ2xlIFRlc3QgaXMgcmVsZWFzZWQg
aW4gdmVyc2lvbmVkIHNvdXJjZSBwYWNrYWdlcyB3aGljaCBjYW4gYmUKLWRvd25sb2FkZWQgZnJv
bSB0aGUgZG93bmxvYWQgcGFnZSBbMV0uICBTZXZlcmFsIGRpZmZlcmVudCBhcmNoaXZlCi1mb3Jt
YXRzIGFyZSBwcm92aWRlZCwgYnV0IHRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhlIHRvb2xzIHVz
ZWQgdG8KLW1hbmlwdWxhdGUgdGhlbSwgYW5kIHRoZSBzaXplIG9mIHRoZSByZXN1bHRpbmcgZmls
ZS4gIERvd25sb2FkCi13aGljaGV2ZXIgeW91IGFyZSBtb3N0IGNvbWZvcnRhYmxlIHdpdGguCi0K
LSAgWzFdIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L2Rvd25sb2Fkcy9saXN0
Ci0KLU9uY2UgdGhlIHBhY2thZ2UgaXMgZG93bmxvYWRlZCwgZXhwYW5kIGl0IHVzaW5nIHdoaWNo
ZXZlciB0b29scyB5b3UKLXByZWZlciBmb3IgdGhhdCB0eXBlLiAgVGhpcyB3aWxsIHJlc3VsdCBp
biBhIG5ldyBkaXJlY3Rvcnkgd2l0aCB0aGUKLW5hbWUgImd0ZXN0LVguWS5aIiB3aGljaCBjb250
YWlucyBhbGwgb2YgdGhlIHNvdXJjZSBjb2RlLiAgSGVyZSBhcmUKLXNvbWUgZXhhbXBsZXMgb24g
TGludXg6Ci0KLSAgdGFyIC14dnpmIGd0ZXN0LVguWS5aLnRhci5negotICB0YXIgLXh2amYgZ3Rl
c3QtWC5ZLloudGFyLmJ6MgotICB1bnppcCBndGVzdC1YLlkuWi56aXAKLQotIyMjIFNWTiBDaGVj
a291dCAjIyMKLQotVG8gY2hlY2sgb3V0IHRoZSBtYWluIGJyYW5jaCAoYWxzbyBrbm93biBhcyB0
aGUgInRydW5rIikgb2YgR29vZ2xlCi1UZXN0LCBydW4gdGhlIGZvbGxvd2luZyBTdWJ2ZXJzaW9u
IGNvbW1hbmQ6Ci0KLSAgc3ZuIGNoZWNrb3V0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUu
Y29tL3N2bi90cnVuay8gZ3Rlc3Qtc3ZuCi0KLVNldHRpbmcgdXAgdGhlIEJ1aWxkCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotCi1UbyBidWlsZCBHb29nbGUgVGVzdCBhbmQgeW91ciB0ZXN0cyB0aGF0
IHVzZSBpdCwgeW91IG5lZWQgdG8gdGVsbCB5b3VyCi1idWlsZCBzeXN0ZW0gd2hlcmUgdG8gZmlu
ZCBpdHMgaGVhZGVycyBhbmQgc291cmNlIGZpbGVzLiAgVGhlIGV4YWN0Ci13YXkgdG8gZG8gaXQg
ZGVwZW5kcyBvbiB3aGljaCBidWlsZCBzeXN0ZW0geW91IHVzZSwgYW5kIGlzIHVzdWFsbHkKLXN0
cmFpZ2h0Zm9yd2FyZC4KLQotIyMjIEdlbmVyaWMgQnVpbGQgSW5zdHJ1Y3Rpb25zICMjIwotCi1T
dXBwb3NlIHlvdSBwdXQgR29vZ2xlIFRlc3QgaW4gZGlyZWN0b3J5ICR7R1RFU1RfRElSfS4gIFRv
IGJ1aWxkIGl0LAotY3JlYXRlIGEgbGlicmFyeSBidWlsZCB0YXJnZXQgKG9yIGEgcHJvamVjdCBh
cyBjYWxsZWQgYnkgVmlzdWFsIFN0dWRpbwotYW5kIFhjb2RlKSB0byBjb21waWxlCi0KLSAgJHtH
VEVTVF9ESVJ9L3NyYy9ndGVzdC1hbGwuY2MKLQotd2l0aAotCi0gICR7R1RFU1RfRElSfS9pbmNs
dWRlIGFuZCAke0dURVNUX0RJUn0KLQotaW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0aC4gIEFzc3Vt
aW5nIGEgTGludXgtbGlrZSBzeXN0ZW0gYW5kIGdjYywKLXNvbWV0aGluZyBsaWtlIHRoZSBmb2xs
b3dpbmcgd2lsbCBkbzoKLQotICBnKysgLUkke0dURVNUX0RJUn0vaW5jbHVkZSAtSSR7R1RFU1Rf
RElSfSAtYyAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LWFsbC5jYwotICBhciAtcnYgbGliZ3Rlc3Qu
YSBndGVzdC1hbGwubwotCi1OZXh0LCB5b3Ugc2hvdWxkIGNvbXBpbGUgeW91ciB0ZXN0IHNvdXJj
ZSBmaWxlIHdpdGgKLSR7R1RFU1RfRElSfS9pbmNsdWRlIGluIHRoZSBoZWFkZXIgc2VhcmNoIHBh
dGgsIGFuZCBsaW5rIGl0IHdpdGggZ3Rlc3QKLWFuZCBhbnkgb3RoZXIgbmVjZXNzYXJ5IGxpYnJh
cmllczoKLQotICBnKysgLUkke0dURVNUX0RJUn0vaW5jbHVkZSBwYXRoL3RvL3lvdXJfdGVzdC5j
YyBsaWJndGVzdC5hIC1vIHlvdXJfdGVzdAotCi1BcyBhbiBleGFtcGxlLCB0aGUgbWFrZS8gZGly
ZWN0b3J5IGNvbnRhaW5zIGEgTWFrZWZpbGUgdGhhdCB5b3UgY2FuCi11c2UgdG8gYnVpbGQgR29v
Z2xlIFRlc3Qgb24gc3lzdGVtcyB3aGVyZSBHTlUgbWFrZSBpcyBhdmFpbGFibGUKLShlLmcuIExp
bnV4LCBNYWMgT1MgWCwgYW5kIEN5Z3dpbikuICBJdCBkb2Vzbid0IHRyeSB0byBidWlsZCBHb29n
bGUKLVRlc3QncyBvd24gdGVzdHMuICBJbnN0ZWFkLCBpdCBqdXN0IGJ1aWxkcyB0aGUgR29vZ2xl
IFRlc3QgbGlicmFyeSBhbmQKLWEgc2FtcGxlIHRlc3QuICBZb3UgY2FuIHVzZSBpdCBhcyBhIHN0
YXJ0aW5nIHBvaW50IGZvciB5b3VyIG93biBidWlsZAotc2NyaXB0LgotCi1JZiB0aGUgZGVmYXVs
dCBzZXR0aW5ncyBhcmUgY29ycmVjdCBmb3IgeW91ciBlbnZpcm9ubWVudCwgdGhlCi1mb2xsb3dp
bmcgY29tbWFuZHMgc2hvdWxkIHN1Y2NlZWQ6Ci0KLSAgY2QgJHtHVEVTVF9ESVJ9L21ha2UKLSAg
bWFrZQotICAuL3NhbXBsZTFfdW5pdHRlc3QKLQotSWYgeW91IHNlZSBlcnJvcnMsIHRyeSB0byB0
d2VhayB0aGUgY29udGVudHMgb2YgbWFrZS9NYWtlZmlsZSB0byBtYWtlCi10aGVtIGdvIGF3YXku
ICBUaGVyZSBhcmUgaW5zdHJ1Y3Rpb25zIGluIG1ha2UvTWFrZWZpbGUgb24gaG93IHRvIGRvCi1p
dC4KLQotIyMjIFVzaW5nIENNYWtlICMjIwotCi1Hb29nbGUgVGVzdCBjb21lcyB3aXRoIGEgQ01h
a2UgYnVpbGQgc2NyaXB0IChDTWFrZUxpc3RzLnR4dCkgdGhhdCBjYW4KLWJlIHVzZWQgb24gYSB3
aWRlIHJhbmdlIG9mIHBsYXRmb3JtcyAoIkMiIHN0YW5kcyBmb3IgY3Jvc3MtcGxhdG9mcm0uKS4K
LUlmIHlvdSBkb24ndCBoYXZlIENNYWtlIGluc3RhbGxlZCBhbHJlYWR5LCB5b3UgY2FuIGRvd25s
b2FkIGl0IGZvcgotZnJlZSBmcm9tIGh0dHA6Ly93d3cuY21ha2Uub3JnLy4KLQotQ01ha2Ugd29y
a3MgYnkgZ2VuZXJhdGluZyBuYXRpdmUgbWFrZWZpbGVzIG9yIGJ1aWxkIHByb2plY3RzIHRoYXQg
Y2FuCi1iZSB1c2VkIGluIHRoZSBjb21waWxlciBlbnZpcm9ubWVudCBvZiB5b3VyIGNob2ljZS4g
IFRoZSB0eXBpY2FsCi13b3JrZmxvdyBzdGFydHMgd2l0aDoKLQotICBta2RpciBteWJ1aWxkICAg
ICAgICMgQ3JlYXRlIGEgZGlyZWN0b3J5IHRvIGhvbGQgdGhlIGJ1aWxkIG91dHB1dC4KLSAgY2Qg
bXlidWlsZAotICBjbWFrZSAke0dURVNUX0RJUn0gICMgR2VuZXJhdGUgbmF0aXZlIGJ1aWxkIHNj
cmlwdHMuCi0KLUlmIHlvdSB3YW50IHRvIGJ1aWxkIEdvb2dsZSBUZXN0J3Mgc2FtcGxlcywgeW91
IHNob3VsZCByZXBsYWNlIHRoZQotbGFzdCBjb21tYW5kIHdpdGgKLQotICBjbWFrZSAtRGJ1aWxk
X2d0ZXN0X3NhbXBsZXM9T04gJHtHVEVTVF9ESVJ9Ci0KLUlmIHlvdSBhcmUgb24gYSAqbml4IHN5
c3RlbSwgeW91IHNob3VsZCBub3cgc2VlIGEgTWFrZWZpbGUgaW4gdGhlCi1jdXJyZW50IGRpcmVj
dG9yeS4gIEp1c3QgdHlwZSAnbWFrZScgdG8gYnVpbGQgZ3Rlc3QuCi0KLUlmIHlvdSB1c2UgV2lu
ZG93cyBhbmQgaGF2ZSBWaXN0dWFsIFN0dWRpbyBpbnN0YWxsZWQsIGEgZ3Rlc3Quc2xuIGZpbGUK
LWFuZCBzZXZlcmFsIC52Y3Byb2ogZmlsZXMgd2lsbCBiZSBjcmVhdGVkLiAgWW91IGNhbiB0aGVu
IGJ1aWxkIHRoZW0KLXVzaW5nIFZpc3VhbCBTdHVkaW8uCi0KLU9uIE1hYyBPUyBYIHdpdGggWGNv
ZGUgaW5zdGFsbGVkLCBhIC54Y29kZXByb2ogZmlsZSB3aWxsIGJlIGdlbmVyYXRlZC4KLQotIyMj
IExlZ2FjeSBCdWlsZCBTY3JpcHRzICMjIwotCi1CZWZvcmUgc2V0dGxpbmcgb24gQ01ha2UsIHdl
IGhhdmUgYmVlbiBwcm92aWRpbmcgaGFuZC1tYWludGFpbmVkIGJ1aWxkCi1wcm9qZWN0cy9zY3Jp
cHRzIGZvciBWaXN1YWwgU3R1ZGlvLCBYY29kZSwgYW5kIEF1dG90b29scy4gIFdoaWxlIHdlCi1j
b250aW51ZSB0byBwcm92aWRlIHRoZW0gZm9yIGNvbnZlbmllbmNlLCB0aGV5IGFyZSBub3QgYWN0
aXZlbHkKLW1haW50YWluZWQgYW55IG1vcmUuICBXZSBoaWdobHkgcmVjb21tZW5kIHRoYXQgeW91
IGZvbGxvdyB0aGUKLWluc3RydWN0aW9ucyBpbiB0aGUgcHJldmlvdXMgdHdvIHNlY3Rpb25zIHRv
IGludGVncmF0ZSBHb29nbGUgVGVzdAotd2l0aCB5b3VyIGV4aXN0aW5nIGJ1aWxkIHN5c3RlbS4K
LQotSWYgeW91IHN0aWxsIG5lZWQgdG8gdXNlIHRoZSBsZWdhY3kgYnVpbGQgc2NyaXB0cywgaGVy
ZSdzIGhvdzoKLQotVGhlIG1zdmNcIGZvbGRlciBjb250YWlucyB0d28gc29sdXRpb25zIHdpdGgg
VmlzdWFsIEMrKyBwcm9qZWN0cy4KLU9wZW4gdGhlIGd0ZXN0LnNsbiBvciBndGVzdC1tZC5zbG4g
ZmlsZSB1c2luZyBWaXN1YWwgU3R1ZGlvLCBhbmQgeW91Ci1hcmUgcmVhZHkgdG8gYnVpbGQgR29v
Z2xlIFRlc3QgdGhlIHNhbWUgd2F5IHlvdSBidWlsZCBhbnkgVmlzdWFsCi1TdHVkaW8gcHJvamVj
dC4gIEZpbGVzIHRoYXQgaGF2ZSBuYW1lcyBlbmRpbmcgd2l0aCAtbWQgdXNlIERMTAotdmVyc2lv
bnMgb2YgTWljcm9zb2Z0IHJ1bnRpbWUgbGlicmFyaWVzICh0aGUgL01EIG9yIHRoZSAvTURkIGNv
bXBpbGVyCi1vcHRpb24pLiAgRmlsZXMgd2l0aG91dCB0aGF0IHN1ZmZpeCB1c2Ugc3RhdGljIHZl
cnNpb25zIG9mIHRoZSBydW50aW1lCi1saWJyYXJpZXMgKHRoZSAvTVQgb3IgdGhlIC9NVGQgb3B0
aW9uKS4gIFBsZWFzZSBub3RlIHRoYXQgb25lIG11c3QgdXNlCi10aGUgc2FtZSBvcHRpb24gdG8g
Y29tcGlsZSBib3RoIGd0ZXN0IGFuZCB0aGUgdGVzdCBjb2RlLiAgSWYgeW91IHVzZQotVmlzdWFs
IFN0dWRpbyAyMDA1IG9yIGFib3ZlLCB3ZSByZWNvbW1lbmQgdGhlIC1tZCB2ZXJzaW9uIGFzIC9N
RCBpcwotdGhlIGRlZmF1bHQgZm9yIG5ldyBwcm9qZWN0cyBpbiB0aGVzZSB2ZXJzaW9ucyBvZiBW
aXN1YWwgU3R1ZGlvLgotCi1PbiBNYWMgT1MgWCwgb3BlbiB0aGUgZ3Rlc3QueGNvZGVwcm9qIGlu
IHRoZSB4Y29kZS8gZm9sZGVyIHVzaW5nCi1YY29kZS4gIEJ1aWxkIHRoZSAiZ3Rlc3QiIHRhcmdl
dC4gIFRoZSB1bml2ZXJzYWwgYmluYXJ5IGZyYW1ld29yayB3aWxsCi1lbmQgdXAgaW4geW91ciBz
ZWxlY3RlZCBidWlsZCBkaXJlY3RvcnkgKHNlbGVjdGVkIGluIHRoZSBYY29kZQotIlByZWZlcmVu
Y2VzLi4uIiAtPiAiQnVpbGRpbmciIHBhbmUgYW5kIGRlZmF1bHRzIHRvIHhjb2RlL2J1aWxkKS4K
LUFsdGVybmF0aXZlbHksIGF0IHRoZSBjb21tYW5kIGxpbmUsIGVudGVyOgotCi0gIHhjb2RlYnVp
bGQKLQotVGhpcyB3aWxsIGJ1aWxkIHRoZSAiUmVsZWFzZSIgY29uZmlndXJhdGlvbiBvZiBndGVz
dC5mcmFtZXdvcmsgaW4geW91cgotZGVmYXVsdCBidWlsZCBsb2NhdGlvbi4gIFNlZSB0aGUgInhj
b2RlYnVpbGQiIG1hbiBwYWdlIGZvciBtb3JlCi1pbmZvcm1hdGlvbiBhYm91dCBidWlsZGluZyBk
aWZmZXJlbnQgY29uZmlndXJhdGlvbnMgYW5kIGJ1aWxkaW5nIGluCi1kaWZmZXJlbnQgbG9jYXRp
b25zLgotCi1Ud2Vha2luZyBHb29nbGUgVGVzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotR29v
Z2xlIFRlc3QgY2FuIGJlIHVzZWQgaW4gZGl2ZXJzZSBlbnZpcm9ubWVudHMuICBUaGUgZGVmYXVs
dAotY29uZmlndXJhdGlvbiBtYXkgbm90IHdvcmsgKG9yIG1heSBub3Qgd29yayB3ZWxsKSBvdXQg
b2YgdGhlIGJveCBpbgotc29tZSBlbnZpcm9ubWVudHMuICBIb3dldmVyLCB5b3UgY2FuIGVhc2ls
eSB0d2VhayBHb29nbGUgVGVzdCBieQotZGVmaW5pbmcgY29udHJvbCBtYWNyb3Mgb24gdGhlIGNv
bXBpbGVyIGNvbW1hbmQgbGluZS4gIEdlbmVyYWxseSwKLXRoZXNlIG1hY3JvcyBhcmUgbmFtZWQg
bGlrZSBHVEVTVF9YWVogYW5kIHlvdSBkZWZpbmUgdGhlbSB0byBlaXRoZXIgMQotb3IgMCB0byBl
bmFibGUgb3IgZGlzYWJsZSBhIGNlcnRhaW4gZmVhdHVyZS4KLQotV2UgbGlzdCB0aGUgbW9zdCBm
cmVxdWVudGx5IHVzZWQgbWFjcm9zIGJlbG93LiAgRm9yIGEgY29tcGxldGUgbGlzdCwKLXNlZSBm
aWxlIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oLgotCi0jIyMgQ2hvb3Npbmcg
YSBUUjEgVHVwbGUgTGlicmFyeSAjIyMKLQotU29tZSBHb29nbGUgVGVzdCBmZWF0dXJlcyByZXF1
aXJlIHRoZSBDKysgVGVjaG5pY2FsIFJlcG9ydCAxIChUUjEpCi10dXBsZSBsaWJyYXJ5LCB3aGlj
aCBpcyBub3QgeWV0IGF2YWlsYWJsZSB3aXRoIGFsbCBjb21waWxlcnMuICBUaGUKLWdvb2QgbmV3
cyBpcyB0aGF0IEdvb2dsZSBUZXN0IGltcGxlbWVudHMgYSBzdWJzZXQgb2YgVFIxIHR1cGxlIHRo
YXQncwotZW5vdWdoIGZvciBpdHMgb3duIG5lZWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdXNl
IHRoaXMgd2hlbiB0aGUKLWNvbXBpbGVyIGRvZXNuJ3QgcHJvdmlkZSBUUjEgdHVwbGUuCi0KLVVz
dWFsbHkgeW91IGRvbid0IG5lZWQgdG8gY2FyZSBhYm91dCB3aGljaCB0dXBsZSBsaWJyYXJ5IEdv
b2dsZSBUZXN0Ci11c2VzLiAgSG93ZXZlciwgaWYgeW91ciBwcm9qZWN0IGFscmVhZHkgdXNlcyBU
UjEgdHVwbGUsIHlvdSBuZWVkIHRvCi10ZWxsIEdvb2dsZSBUZXN0IHRvIHVzZSB0aGUgc2FtZSBU
UjEgdHVwbGUgbGlicmFyeSB0aGUgcmVzdCBvZiB5b3VyCi1wcm9qZWN0IHVzZXMsIG9yIHRoZSB0
d28gdHVwbGUgaW1wbGVtZW50YXRpb25zIHdpbGwgY2xhc2guICBUbyBkbwotdGhhdCwgYWRkCi0K
LSAgLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0wCi0KLXRvIHRoZSBjb21waWxlciBmbGFncyB3
aGlsZSBjb21waWxpbmcgR29vZ2xlIFRlc3QgYW5kIHlvdXIgdGVzdHMuICBJZgoteW91IHdhbnQg
dG8gZm9yY2UgR29vZ2xlIFRlc3QgdG8gdXNlIGl0cyBvd24gdHVwbGUgbGlicmFyeSwganVzdCBh
ZGQKLQotICAtREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTEKLQotdG8gdGhlIGNvbXBpbGVyIGZs
YWdzIGluc3RlYWQuCi0KLUlmIHlvdSBkb24ndCB3YW50IEdvb2dsZSBUZXN0IHRvIHVzZSB0dXBs
ZSBhdCBhbGwsIGFkZAotCi0gIC1ER1RFU1RfSEFTX1RSMV9UVVBMRT0wCi0KLWFuZCBhbGwgZmVh
dHVyZXMgdXNpbmcgdHVwbGUgd2lsbCBiZSBkaXNhYmxlZC4KLQotIyMjIE11bHRpLXRocmVhZGVk
IFRlc3RzICMjIwotCi1Hb29nbGUgVGVzdCBpcyB0aHJlYWQtc2FmZSB3aGVyZSB0aGUgcHRocmVh
ZCBsaWJyYXJ5IGlzIGF2YWlsYWJsZS4KLUFmdGVyICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPiwg
eW91IGNhbiBjaGVjayB0aGUgR1RFU1RfSVNfVEhSRUFEU0FGRQotbWFjcm8gdG8gc2VlIHdoZXRo
ZXIgdGhpcyBpcyB0aGUgY2FzZSAoeWVzIGlmIHRoZSBtYWNybyBpcyAjZGVmaW5lZCB0bwotMSwg
bm8gaWYgaXQncyB1bmRlZmluZWQuKS4KLQotSWYgR29vZ2xlIFRlc3QgZG9lc24ndCBjb3JyZWN0
bHkgZGV0ZWN0IHdoZXRoZXIgcHRocmVhZCBpcyBhdmFpbGFibGUKLWluIHlvdXIgZW52aXJvbm1l
bnQsIHlvdSBjYW4gZm9yY2UgaXQgd2l0aAotCi0gIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MQotCi1v
cgotCi0gIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MAotCi1XaGVuIEdvb2dsZSBUZXN0IHVzZXMgcHRo
cmVhZCwgeW91IG1heSBuZWVkIHRvIGFkZCBmbGFncyB0byB5b3VyCi1jb21waWxlciBhbmQvb3Ig
bGlua2VyIHRvIHNlbGVjdCB0aGUgcHRocmVhZCBsaWJyYXJ5LCBvciB5b3UnbGwgZ2V0Ci1saW5r
IGVycm9ycy4gIElmIHlvdSB1c2UgdGhlIENNYWtlIHNjcmlwdCBvciB0aGUgZGVwcmVjYXRlZCBB
dXRvdG9vbHMKLXNjcmlwdCwgdGhpcyBpcyB0YWtlbiBjYXJlIG9mIGZvciB5b3UuICBJZiB5b3Ug
dXNlIHlvdXIgb3duIGJ1aWxkCi1zY3JpcHQsIHlvdSdsbCBuZWVkIHRvIHJlYWQgeW91ciBjb21w
aWxlciBhbmQgbGlua2VyJ3MgbWFudWFsIHRvCi1maWd1cmUgb3V0IHdoYXQgZmxhZ3MgdG8gYWRk
LgotCi0jIyMgQXMgYSBTaGFyZWQgTGlicmFyeSAoRExMKSAjIyMKLQotR29vZ2xlIFRlc3QgaXMg
Y29tcGFjdCwgc28gbW9zdCB1c2VycyBjYW4gYnVpbGQgYW5kIGxpbmsgaXQgYXMgYQotc3RhdGlj
IGxpYnJhcnkgZm9yIHRoZSBzaW1wbGljaXR5LiAgWW91IGNhbiBjaG9vc2UgdG8gdXNlIEdvb2ds
ZSBUZXN0Ci1hcyBhIHNoYXJlZCBsaWJyYXJ5IChrbm93biBhcyBhIERMTCBvbiBXaW5kb3dzKSBp
ZiB5b3UgcHJlZmVyLgotCi1UbyBjb21waWxlIGd0ZXN0IGFzIGEgc2hhcmVkIGxpYnJhcnksIGFk
ZAotCi0gIC1ER1RFU1RfQ1JFQVRFX1NIQVJFRF9MSUJSQVJZPTEKLQotdG8gdGhlIGNvbXBpbGVy
IGZsYWdzLiAgWW91J2xsIGFsc28gbmVlZCB0byB0ZWxsIHRoZSBsaW5rZXIgdG8gcHJvZHVjZQot
YSBzaGFyZWQgbGlicmFyeSBpbnN0ZWFkIC0gY29uc3VsdCB5b3VyIGxpbmtlcidzIG1hbnVhbCBm
b3IgaG93IHRvIGRvCi1pdC4KLQotVG8gY29tcGlsZSB5b3VyIHRlc3RzIHRoYXQgdXNlIHRoZSBn
dGVzdCBzaGFyZWQgbGlicmFyeSwgYWRkCi0KLSAgLURHVEVTVF9MSU5LRURfQVNfU0hBUkVEX0xJ
QlJBUlk9MQotCi10byB0aGUgY29tcGlsZXIgZmxhZ3MuCi0KLSMjIyBBdm9pZGluZyBNYWNybyBO
YW1lIENsYXNoZXMgIyMjCi0KLUluIEMrKywgbWFjcm9zIGRvbid0IG9iZXkgbmFtZXNwYWNlcy4g
IFRoZXJlZm9yZSB0d28gbGlicmFyaWVzIHRoYXQKLWJvdGggZGVmaW5lIGEgbWFjcm8gb2YgdGhl
IHNhbWUgbmFtZSB3aWxsIGNsYXNoIGlmIHlvdSAjaW5jbHVkZSBib3RoCi1kZWZpbml0aW9ucy4g
IEluIGNhc2UgYSBHb29nbGUgVGVzdCBtYWNybyBjbGFzaGVzIHdpdGggYW5vdGhlcgotbGlicmFy
eSwgeW91IGNhbiBmb3JjZSBHb29nbGUgVGVzdCB0byByZW5hbWUgaXRzIG1hY3JvIHRvIGF2b2lk
IHRoZQotY29uZmxpY3QuCi0KLVNwZWNpZmljYWxseSwgaWYgYm90aCBHb29nbGUgVGVzdCBhbmQg
c29tZSBvdGhlciBjb2RlIGRlZmluZSBtYWNybwotRk9PLCB5b3UgY2FuIGFkZAotCi0gIC1ER1RF
U1RfRE9OVF9ERUZJTkVfRk9PPTEKLQotdG8gdGhlIGNvbXBpbGVyIGZsYWdzIHRvIHRlbGwgR29v
Z2xlIFRlc3QgdG8gY2hhbmdlIHRoZSBtYWNybydzIG5hbWUKLWZyb20gRk9PIHRvIEdURVNUX0ZP
Ty4gIEN1cnJlbnRseSBGT08gY2FuIGJlIEZBSUwsIFNVQ0NFRUQsIG9yIFRFU1QuCi1Gb3IgZXhh
bXBsZSwgd2l0aCAtREdURVNUX0RPTlRfREVGSU5FX1RFU1Q9MSwgeW91J2xsIG5lZWQgdG8gd3Jp
dGUKLQotICBHVEVTVF9URVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAuLi4gfQotCi1pbnN0ZWFk
IG9mCi0KLSAgVEVTVChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KLQotaW4gb3JkZXIgdG8g
ZGVmaW5lIGEgdGVzdC4KLQotVXBncmF0aW5nIGZyb20gYW4gRWFybGllciBWZXJzaW9uCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotV2Ugc3RyaXZlIHRvIGtlZXAgR29vZ2xl
IFRlc3QgcmVsZWFzZXMgYmFja3dhcmQgY29tcGF0aWJsZS4KLVNvbWV0aW1lcywgdGhvdWdoLCB3
ZSBoYXZlIHRvIG1ha2Ugc29tZSBicmVha2luZyBjaGFuZ2VzIGZvciB0aGUKLXVzZXJzJyBsb25n
LXRlcm0gYmVuZWZpdHMuICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHdoYXQgeW91J2xsIG5lZWQg
dG8KLWRvIGlmIHlvdSBhcmUgdXBncmFkaW5nIGZyb20gYW4gZWFybGllciB2ZXJzaW9uIG9mIEdv
b2dsZSBUZXN0LgotCi0jIyMgVXBncmFkaW5nIGZyb20gMS4zLjAgb3IgRWFybGllciAjIyMKLQot
WW91IG1heSBuZWVkIHRvIGV4cGxpY2l0bHkgZW5hYmxlIG9yIGRpc2FibGUgR29vZ2xlIFRlc3Qn
cyBvd24gVFIxCi10dXBsZSBsaWJyYXJ5LiAgU2VlIHRoZSBpbnN0cnVjdGlvbnMgaW4gc2VjdGlv
biAiQ2hvb3NpbmcgYSBUUjEgVHVwbGUKLUxpYnJhcnkiLgotCi0jIyMgVXBncmFkaW5nIGZyb20g
MS40LjAgb3IgRWFybGllciAjIyMKLQotVGhlIEF1dG90b29scyBidWlsZCBzY3JpcHQgKGNvbmZp
Z3VyZSArIG1ha2UpIGlzIG5vIGxvbmdlciBvZmZpY2lhbGx5Ci1zdXBwb3J0dGVkLiAgWW91IGFy
ZSBlbmNvdXJhZ2VkIHRvIG1pZ3JhdGUgdG8geW91ciBvd24gYnVpbGQgc3lzdGVtIG9yCi11c2Ug
Q01ha2UuICBJZiB5b3Ugc3RpbGwgbmVlZCB0byB1c2UgQXV0b3Rvb2xzLCB5b3UgY2FuIGZpbmQK
LWluc3RydWN0aW9ucyBpbiB0aGUgUkVBRE1FIGZpbGUgZnJvbSBHb29nbGUgVGVzdCAxLjQuMC4K
LQotT24gcGxhdGZvcm1zIHdoZXJlIHRoZSBwdGhyZWFkIGxpYnJhcnkgaXMgYXZhaWxhYmxlLCBH
b29nbGUgVGVzdCB1c2VzCi1pdCBpbiBvcmRlciB0byBiZSB0aHJlYWQtc2FmZS4gIFNlZSB0aGUg
Ik11bHRpLXRocmVhZGVkIFRlc3RzIiBzZWN0aW9uCi1mb3Igd2hhdCB0aGlzIG1lYW5zIHRvIHlv
dXIgYnVpbGQgc2NyaXB0LgotCi1JZiB5b3UgdXNlIE1pY3Jvc29mdCBWaXN1YWwgQysrIDcuMSB3
aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQsIEdvb2dsZQotVGVzdCB3aWxsIG5vIGxvbmdlciBjb21w
aWxlLiAgVGhpcyBzaG91bGQgYWZmZWN0IHZlcnkgZmV3IHBlb3BsZSwgYXMgYQotbGFyZ2UgcG9y
dGlvbiBvZiBTVEwgKGluY2x1ZGluZyA8c3RyaW5nPikgZG9lc24ndCBjb21waWxlIGluIHRoaXMg
bW9kZQotYW55d2F5LiAgV2UgZGVjaWRlZCB0byBzdG9wIHN1cHBvcnRpbmcgaXQgaW4gb3JkZXIg
dG8gZ3JlYXRseSBzaW1wbGlmeQotR29vZ2xlIFRlc3QncyBpbXBsZW1lbnRhdGlvbi4KLQotRGV2
ZWxvcGluZyBHb29nbGUgVGVzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UaGlzIHNlY3Rp
b24gZGlzY3Vzc2VzIGhvdyB0byBtYWtlIHlvdXIgb3duIGNoYW5nZXMgdG8gR29vZ2xlIFRlc3Qu
Ci0KLSMjIyBUZXN0aW5nIEdvb2dsZSBUZXN0IEl0c2VsZiAjIyMKLQotVG8gbWFrZSBzdXJlIHlv
dXIgY2hhbmdlcyB3b3JrIGFzIGludGVuZGVkIGFuZCBkb24ndCBicmVhayBleGlzdGluZwotZnVu
Y3Rpb25hbGl0eSwgeW91J2xsIHdhbnQgdG8gY29tcGlsZSBhbmQgcnVuIEdvb2dsZSBUZXN0J3Mg
b3duIHRlc3RzLgotRm9yIHRoYXQgeW91IGNhbiB1c2UgQ01ha2U6Ci0KLSAgbWtkaXIgbXlidWls
ZAotICBjZCBteWJ1aWxkCi0gIGNtYWtlIC1EYnVpbGRfYWxsX2d0ZXN0X3Rlc3RzPU9OICR7R1RF
U1RfRElSfQotCi1NYWtlIHN1cmUgeW91IGhhdmUgUHl0aG9uIGluc3RhbGxlZCwgYXMgc29tZSBv
ZiBHb29nbGUgVGVzdCdzIHRlc3RzCi1hcmUgd3JpdHRlbiBpbiBQeXRob24uICBJZiB0aGUgY21h
a2UgY29tbWFuZCBjb21wbGFpbnMgYWJvdXQgbm90IGJlaW5nCi1hYmxlIHRvIGZpbmQgUHl0aG9u
ICgiQ291bGQgTk9UIGZpbmQgUHl0aG9uSW50ZXJwIChtaXNzaW5nOgotUFlUSE9OX0VYRUNVVEFC
TEUpIiksIHRyeSB0ZWxsaW5nIGl0IGV4cGxpY2l0bHkgd2hlcmUgeW91ciBQeXRob24KLWV4ZWN1
dGFibGUgY2FuIGJlIGZvdW5kOgotCi0gIGNtYWtlIC1EUFlUSE9OX0VYRUNVVEFCTEU9cGF0aC90
by9weXRob24gLURidWlsZF9hbGxfZ3Rlc3RfdGVzdHM9T04gXAotICAgICAgJHtHVEVTVF9ESVJ9
Ci0KLU5leHQsIHlvdSBjYW4gYnVpbGQgR29vZ2xlIFRlc3QgYW5kIGFsbCBvZiBpdHMgb3duIHRl
c3RzLiAgT24gKm5peCwKLXRoaXMgaXMgdXN1YWxseSBkb25lIGJ5ICdtYWtlJy4gIFRvIHJ1biB0
aGUgdGVzdHMsIGRvCi0KLSAgbWFrZSB0ZXN0Ci0KLUFsbCB0ZXN0cyBzaG91bGQgcGFzcy4KLQot
IyMjIFJlZ2VuZXJhdGluZyBTb3VyY2UgRmlsZXMgIyMjCi0KLVNvbWUgb2YgR29vZ2xlIFRlc3Qn
cyBzb3VyY2UgZmlsZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRlbXBsYXRlcyAobm90Ci1pbiB0aGUg
QysrIHNlbnNlKSB1c2luZyBhIHNjcmlwdC4gIEEgdGVtcGxhdGUgZmlsZSBpcyBuYW1lZCBGT08u
cHVtcCwKLXdoZXJlIEZPTyBpcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSBpdCB3aWxsIGdlbmVyYXRl
LiAgRm9yIGV4YW1wbGUsIHRoZQotZmlsZSBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5
cGUtdXRpbC5oLnB1bXAgaXMgdXNlZCB0byBnZW5lcmF0ZQotZ3Rlc3QtdHlwZS11dGlsLmggaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgotCi1Ob3JtYWxseSB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBh
Ym91dCByZWdlbmVyYXRpbmcgdGhlIHNvdXJjZSBmaWxlcywKLXVubGVzcyB5b3UgbmVlZCB0byBt
b2RpZnkgdGhlbS4gIEluIHRoYXQgY2FzZSwgeW91IHNob3VsZCBtb2RpZnkgdGhlCi1jb3JyZXNw
b25kaW5nIC5wdW1wIGZpbGVzIGluc3RlYWQgYW5kIHJ1biB0aGUgcHVtcC5weSBQeXRob24gc2Ny
aXB0IHRvCi1yZWdlbmVyYXRlIHRoZW0uICBZb3UgY2FuIGZpbmQgcHVtcC5weSBpbiB0aGUgc2Ny
aXB0cy8gZGlyZWN0b3J5LgotUmVhZCB0aGUgUHVtcCBtYW51YWwgWzJdIGZvciBob3cgdG8gdXNl
IGl0LgotCi0gIFsyXSBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL1B1
bXBNYW51YWwKLQotIyMjIENvbnRyaWJ1dGluZyBhIFBhdGNoICMjIwotCi1XZSB3ZWxjb21lIHBh
dGNoZXMuICBQbGVhc2UgcmVhZCB0aGUgR29vZ2xlIFRlc3QgZGV2ZWxvcGVyJ3MgZ3VpZGUgWzNd
Ci1mb3IgaG93IHlvdSBjYW4gY29udHJpYnV0ZS4gIEluIHBhcnRpY3VsYXIsIG1ha2Ugc3VyZSB5
b3UgaGF2ZSBzaWduZWQKLXRoZSBDb250cmlidXRvciBMaWNlbnNlIEFncmVlbWVudCwgb3Igd2Ug
d29uJ3QgYmUgYWJsZSB0byBhY2NlcHQgdGhlCi1wYXRjaC4KLQotICBbM10gaHR0cDovL2NvZGUu
Z29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvd2lraS9Hb29nbGVUZXN0RGV2R3VpZGUKLQotSGFwcHkg
dGVzdGluZyEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5XZWJL
aXQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9SRUFETUUuV2ViS2l0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2YTMxOGZmNjJlMzI0OWM4ZTY1MzIwOTNmNDBlM2NiNDFjMTVmOWFj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5XZWJLaXQKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCww
IEBACi1HVGVzdCB2LjEuNS4wCi0KLWh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2
bi90YWdzL3JlbGVhc2UtMS41LjAvIAotCi0yMDE2LTAxLTAyIFRpbmctV2VpIExhbiAobGFudHc0
NEBnbWFpbC5jb20pCi0gICAgICBSZW1vdmUgdXNhZ2Ugb2YgZW52aXJvbiBnbG9iYWwgdmFyaWFi
bGUgdG8gZml4IHRoZSBidWlsZCBvbiBGcmVlQlNELgotCi0yMDEyLTAxLTA0IERtaXRyeSBMb21v
diAoZHNsb21vdkBnb29nbGUuY29tKSAgRGF2aWQgS2lsemVyIChkZGtpbHplckBhcHBsZS5jb20p
Ci0gICAgICAtIFdlYktpdCBwb3J0IG9mIGd0ZXN0IHVzZXMgRmFzdE1hbGxvYyAibmV3IiBhbmQg
ImRlbGV0ZSIgb3BlcmF0b3JzIGZyb20gSmF2YVNjcmlwdENvcmUuCi0gICAgICAtIFRoZSBndGVz
dC5mcmFtZXdvcmsgdGFyZ2V0IG5vdyBsaW5rcyB0byBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsu
Ci0KLTIwMTEtMTItMjIgRGF2aWQgS2lsemVyIChkZGtpbHplckBhcHBsZS5jb20pCi0gICAgICBB
ZGRlZCBQcm9kdWN0aW9uIGNvbmZpZ3VyYXRpb24gdG8gZ3Rlc3QgWGNvZGUgcHJvamVjdC4KLQot
MjAxMS0wNS0wNiBEbWl0cnkgTG9tb3YgKGRzbG9tb3ZAZ29vZ2xlLmNvbSkKLSAgICAgIGd0ZXN0
LW1kLnZjcHJvaiB1cGdyYWRlZCB0byBWUyAyMDA1ICg4LjApIGZvcm1hdCB0byBtYXRjaCB0aGUg
cmVzdCBvZiBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURN
RS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGQ0
NDA4MDU0YjMyNDk2YWEwYjQzN2MwMjY0NTIzMjQ1NzU5MGU2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMjgwIEBACisKKyMj
IyBHZW5lcmljIEJ1aWxkIEluc3RydWN0aW9ucyAjIyMKKworIyMjIyBTZXR1cCAjIyMjCisKK1Rv
IGJ1aWxkIEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRlc3RzIHRoYXQgdXNlIGl0LCB5b3UgbmVlZCB0
byB0ZWxsIHlvdXIKK2J1aWxkIHN5c3RlbSB3aGVyZSB0byBmaW5kIGl0cyBoZWFkZXJzIGFuZCBz
b3VyY2UgZmlsZXMuICBUaGUgZXhhY3QKK3dheSB0byBkbyBpdCBkZXBlbmRzIG9uIHdoaWNoIGJ1
aWxkIHN5c3RlbSB5b3UgdXNlLCBhbmQgaXMgdXN1YWxseQorc3RyYWlnaHRmb3J3YXJkLgorCisj
IyMjIEJ1aWxkICMjIyMKKworU3VwcG9zZSB5b3UgcHV0IEdvb2dsZSBUZXN0IGluIGRpcmVjdG9y
eSBgJHtHVEVTVF9ESVJ9YC4gIFRvIGJ1aWxkIGl0LAorY3JlYXRlIGEgbGlicmFyeSBidWlsZCB0
YXJnZXQgKG9yIGEgcHJvamVjdCBhcyBjYWxsZWQgYnkgVmlzdWFsIFN0dWRpbworYW5kIFhjb2Rl
KSB0byBjb21waWxlCisKKyAgICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LWFsbC5jYworCit3aXRo
IGAke0dURVNUX0RJUn0vaW5jbHVkZWAgaW4gdGhlIHN5c3RlbSBoZWFkZXIgc2VhcmNoIHBhdGgg
YW5kIGAke0dURVNUX0RJUn1gCitpbiB0aGUgbm9ybWFsIGhlYWRlciBzZWFyY2ggcGF0aC4gIEFz
c3VtaW5nIGEgTGludXgtbGlrZSBzeXN0ZW0gYW5kIGdjYywKK3NvbWV0aGluZyBsaWtlIHRoZSBm
b2xsb3dpbmcgd2lsbCBkbzoKKworICAgIGcrKyAtaXN5c3RlbSAke0dURVNUX0RJUn0vaW5jbHVk
ZSAtSSR7R1RFU1RfRElSfSBcCisgICAgICAgIC1wdGhyZWFkIC1jICR7R1RFU1RfRElSfS9zcmMv
Z3Rlc3QtYWxsLmNjCisgICAgYXIgLXJ2IGxpYmd0ZXN0LmEgZ3Rlc3QtYWxsLm8KKworKFdlIG5l
ZWQgYC1wdGhyZWFkYCBhcyBHb29nbGUgVGVzdCB1c2VzIHRocmVhZHMuKQorCitOZXh0LCB5b3Ug
c2hvdWxkIGNvbXBpbGUgeW91ciB0ZXN0IHNvdXJjZSBmaWxlIHdpdGgKK2Ake0dURVNUX0RJUn0v
aW5jbHVkZWAgaW4gdGhlIHN5c3RlbSBoZWFkZXIgc2VhcmNoIHBhdGgsIGFuZCBsaW5rIGl0Cit3
aXRoIGd0ZXN0IGFuZCBhbnkgb3RoZXIgbmVjZXNzYXJ5IGxpYnJhcmllczoKKworICAgIGcrKyAt
aXN5c3RlbSAke0dURVNUX0RJUn0vaW5jbHVkZSAtcHRocmVhZCBwYXRoL3RvL3lvdXJfdGVzdC5j
YyBsaWJndGVzdC5hIFwKKyAgICAgICAgLW8geW91cl90ZXN0CisKK0FzIGFuIGV4YW1wbGUsIHRo
ZSBtYWtlLyBkaXJlY3RvcnkgY29udGFpbnMgYSBNYWtlZmlsZSB0aGF0IHlvdSBjYW4KK3VzZSB0
byBidWlsZCBHb29nbGUgVGVzdCBvbiBzeXN0ZW1zIHdoZXJlIEdOVSBtYWtlIGlzIGF2YWlsYWJs
ZQorKGUuZy4gTGludXgsIE1hYyBPUyBYLCBhbmQgQ3lnd2luKS4gIEl0IGRvZXNuJ3QgdHJ5IHRv
IGJ1aWxkIEdvb2dsZQorVGVzdCdzIG93biB0ZXN0cy4gIEluc3RlYWQsIGl0IGp1c3QgYnVpbGRz
IHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5IGFuZAorYSBzYW1wbGUgdGVzdC4gIFlvdSBjYW4gdXNl
IGl0IGFzIGEgc3RhcnRpbmcgcG9pbnQgZm9yIHlvdXIgb3duIGJ1aWxkCitzY3JpcHQuCisKK0lm
IHRoZSBkZWZhdWx0IHNldHRpbmdzIGFyZSBjb3JyZWN0IGZvciB5b3VyIGVudmlyb25tZW50LCB0
aGUKK2ZvbGxvd2luZyBjb21tYW5kcyBzaG91bGQgc3VjY2VlZDoKKworICAgIGNkICR7R1RFU1Rf
RElSfS9tYWtlCisgICAgbWFrZQorICAgIC4vc2FtcGxlMV91bml0dGVzdAorCitJZiB5b3Ugc2Vl
IGVycm9ycywgdHJ5IHRvIHR3ZWFrIHRoZSBjb250ZW50cyBvZiBgbWFrZS9NYWtlZmlsZWAgdG8g
bWFrZQordGhlbSBnbyBhd2F5LiAgVGhlcmUgYXJlIGluc3RydWN0aW9ucyBpbiBgbWFrZS9NYWtl
ZmlsZWAgb24gaG93IHRvIGRvCitpdC4KKworIyMjIFVzaW5nIENNYWtlICMjIworCitHb29nbGUg
VGVzdCBjb21lcyB3aXRoIGEgQ01ha2UgYnVpbGQgc2NyaXB0ICgKK1tDTWFrZUxpc3RzLnR4dF0o
Q01ha2VMaXN0cy50eHQpKSB0aGF0IGNhbiBiZSB1c2VkIG9uIGEgd2lkZSByYW5nZSBvZiBwbGF0
Zm9ybXMgKCJDIiBzdGFuZHMgZm9yCitjcm9zcy1wbGF0Zm9ybS4pLiBJZiB5b3UgZG9uJ3QgaGF2
ZSBDTWFrZSBpbnN0YWxsZWQgYWxyZWFkeSwgeW91IGNhbgorZG93bmxvYWQgaXQgZm9yIGZyZWUg
ZnJvbSA8aHR0cDovL3d3dy5jbWFrZS5vcmcvPi4KKworQ01ha2Ugd29ya3MgYnkgZ2VuZXJhdGlu
ZyBuYXRpdmUgbWFrZWZpbGVzIG9yIGJ1aWxkIHByb2plY3RzIHRoYXQgY2FuCitiZSB1c2VkIGlu
IHRoZSBjb21waWxlciBlbnZpcm9ubWVudCBvZiB5b3VyIGNob2ljZS4gIFRoZSB0eXBpY2FsCit3
b3JrZmxvdyBzdGFydHMgd2l0aDoKKworICAgIG1rZGlyIG15YnVpbGQgICAgICAgIyBDcmVhdGUg
YSBkaXJlY3RvcnkgdG8gaG9sZCB0aGUgYnVpbGQgb3V0cHV0LgorICAgIGNkIG15YnVpbGQKKyAg
ICBjbWFrZSAke0dURVNUX0RJUn0gICMgR2VuZXJhdGUgbmF0aXZlIGJ1aWxkIHNjcmlwdHMuCisK
K0lmIHlvdSB3YW50IHRvIGJ1aWxkIEdvb2dsZSBUZXN0J3Mgc2FtcGxlcywgeW91IHNob3VsZCBy
ZXBsYWNlIHRoZQorbGFzdCBjb21tYW5kIHdpdGgKKworICAgIGNtYWtlIC1EZ3Rlc3RfYnVpbGRf
c2FtcGxlcz1PTiAke0dURVNUX0RJUn0KKworSWYgeW91IGFyZSBvbiBhIFwqbml4IHN5c3RlbSwg
eW91IHNob3VsZCBub3cgc2VlIGEgTWFrZWZpbGUgaW4gdGhlCitjdXJyZW50IGRpcmVjdG9yeS4g
IEp1c3QgdHlwZSAnbWFrZScgdG8gYnVpbGQgZ3Rlc3QuCisKK0lmIHlvdSB1c2UgV2luZG93cyBh
bmQgaGF2ZSBWaXN1YWwgU3R1ZGlvIGluc3RhbGxlZCwgYSBgZ3Rlc3Quc2xuYCBmaWxlCithbmQg
c2V2ZXJhbCBgLnZjcHJvamAgZmlsZXMgd2lsbCBiZSBjcmVhdGVkLiAgWW91IGNhbiB0aGVuIGJ1
aWxkIHRoZW0KK3VzaW5nIFZpc3VhbCBTdHVkaW8uCisKK09uIE1hYyBPUyBYIHdpdGggWGNvZGUg
aW5zdGFsbGVkLCBhIGAueGNvZGVwcm9qYCBmaWxlIHdpbGwgYmUgZ2VuZXJhdGVkLgorCisjIyMg
TGVnYWN5IEJ1aWxkIFNjcmlwdHMgIyMjCisKK0JlZm9yZSBzZXR0bGluZyBvbiBDTWFrZSwgd2Ug
aGF2ZSBiZWVuIHByb3ZpZGluZyBoYW5kLW1haW50YWluZWQgYnVpbGQKK3Byb2plY3RzL3Njcmlw
dHMgZm9yIFZpc3VhbCBTdHVkaW8sIFhjb2RlLCBhbmQgQXV0b3Rvb2xzLiAgV2hpbGUgd2UKK2Nv
bnRpbnVlIHRvIHByb3ZpZGUgdGhlbSBmb3IgY29udmVuaWVuY2UsIHRoZXkgYXJlIG5vdCBhY3Rp
dmVseQorbWFpbnRhaW5lZCBhbnkgbW9yZS4gIFdlIGhpZ2hseSByZWNvbW1lbmQgdGhhdCB5b3Ug
Zm9sbG93IHRoZQoraW5zdHJ1Y3Rpb25zIGluIHRoZSBwcmV2aW91cyB0d28gc2VjdGlvbnMgdG8g
aW50ZWdyYXRlIEdvb2dsZSBUZXN0Cit3aXRoIHlvdXIgZXhpc3RpbmcgYnVpbGQgc3lzdGVtLgor
CitJZiB5b3Ugc3RpbGwgbmVlZCB0byB1c2UgdGhlIGxlZ2FjeSBidWlsZCBzY3JpcHRzLCBoZXJl
J3MgaG93OgorCitUaGUgbXN2Y1wgZm9sZGVyIGNvbnRhaW5zIHR3byBzb2x1dGlvbnMgd2l0aCBW
aXN1YWwgQysrIHByb2plY3RzLgorT3BlbiB0aGUgYGd0ZXN0LnNsbmAgb3IgYGd0ZXN0LW1kLnNs
bmAgZmlsZSB1c2luZyBWaXN1YWwgU3R1ZGlvLCBhbmQgeW91CithcmUgcmVhZHkgdG8gYnVpbGQg
R29vZ2xlIFRlc3QgdGhlIHNhbWUgd2F5IHlvdSBidWlsZCBhbnkgVmlzdWFsCitTdHVkaW8gcHJv
amVjdC4gIEZpbGVzIHRoYXQgaGF2ZSBuYW1lcyBlbmRpbmcgd2l0aCAtbWQgdXNlIERMTAordmVy
c2lvbnMgb2YgTWljcm9zb2Z0IHJ1bnRpbWUgbGlicmFyaWVzICh0aGUgL01EIG9yIHRoZSAvTURk
IGNvbXBpbGVyCitvcHRpb24pLiAgRmlsZXMgd2l0aG91dCB0aGF0IHN1ZmZpeCB1c2Ugc3RhdGlj
IHZlcnNpb25zIG9mIHRoZSBydW50aW1lCitsaWJyYXJpZXMgKHRoZSAvTVQgb3IgdGhlIC9NVGQg
b3B0aW9uKS4gIFBsZWFzZSBub3RlIHRoYXQgb25lIG11c3QgdXNlCit0aGUgc2FtZSBvcHRpb24g
dG8gY29tcGlsZSBib3RoIGd0ZXN0IGFuZCB0aGUgdGVzdCBjb2RlLiAgSWYgeW91IHVzZQorVmlz
dWFsIFN0dWRpbyAyMDA1IG9yIGFib3ZlLCB3ZSByZWNvbW1lbmQgdGhlIC1tZCB2ZXJzaW9uIGFz
IC9NRCBpcwordGhlIGRlZmF1bHQgZm9yIG5ldyBwcm9qZWN0cyBpbiB0aGVzZSB2ZXJzaW9ucyBv
ZiBWaXN1YWwgU3R1ZGlvLgorCitPbiBNYWMgT1MgWCwgb3BlbiB0aGUgYGd0ZXN0Lnhjb2RlcHJv
amAgaW4gdGhlIGB4Y29kZS9gIGZvbGRlciB1c2luZworWGNvZGUuICBCdWlsZCB0aGUgImd0ZXN0
IiB0YXJnZXQuICBUaGUgdW5pdmVyc2FsIGJpbmFyeSBmcmFtZXdvcmsgd2lsbAorZW5kIHVwIGlu
IHlvdXIgc2VsZWN0ZWQgYnVpbGQgZGlyZWN0b3J5IChzZWxlY3RlZCBpbiB0aGUgWGNvZGUKKyJQ
cmVmZXJlbmNlcy4uLiIgLT4gIkJ1aWxkaW5nIiBwYW5lIGFuZCBkZWZhdWx0cyB0byB4Y29kZS9i
dWlsZCkuCitBbHRlcm5hdGl2ZWx5LCBhdCB0aGUgY29tbWFuZCBsaW5lLCBlbnRlcjoKKworICAg
IHhjb2RlYnVpbGQKKworVGhpcyB3aWxsIGJ1aWxkIHRoZSAiUmVsZWFzZSIgY29uZmlndXJhdGlv
biBvZiBndGVzdC5mcmFtZXdvcmsgaW4geW91cgorZGVmYXVsdCBidWlsZCBsb2NhdGlvbi4gIFNl
ZSB0aGUgInhjb2RlYnVpbGQiIG1hbiBwYWdlIGZvciBtb3JlCitpbmZvcm1hdGlvbiBhYm91dCBi
dWlsZGluZyBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgYW5kIGJ1aWxkaW5nIGluCitkaWZmZXJl
bnQgbG9jYXRpb25zLgorCitJZiB5b3Ugd2lzaCB0byB1c2UgdGhlIEdvb2dsZSBUZXN0IFhjb2Rl
IHByb2plY3Qgd2l0aCBYY29kZSA0LnggYW5kCithYm92ZSwgeW91IG5lZWQgdG8gZWl0aGVyOgor
CisgKiB1cGRhdGUgdGhlIFNESyBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4geGNvZGUvQ29uZmln
L0dlbmVyYWwueGNvbmZpZy4KKyAgIENvbW1lbnQgb3B0aW9ucyBgU0RLUk9PVGAsIGBNQUNPU19E
RVBMT1lNRU5UX1RBUkdFVGAsIGFuZCBgR0NDX1ZFUlNJT05gLiBJZgorICAgeW91IGNob29zZSB0
aGlzIHJvdXRlIHlvdSBsb3NlIHRoZSBhYmlsaXR5IHRvIHRhcmdldCBlYXJsaWVyIHZlcnNpb25z
CisgICBvZiBNYWNPUyBYLgorICogSW5zdGFsbCBhbiBTREsgZm9yIGFuIGVhcmxpZXIgdmVyc2lv
bi4gVGhpcyBkb2Vzbid0IGFwcGVhciB0byBiZQorICAgc3VwcG9ydGVkIGJ5IEFwcGxlLCBidXQg
aGFzIGJlZW4gcmVwb3J0ZWQgdG8gd29yaworICAgKGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9x
dWVzdGlvbnMvNTM3ODUxOCkuCisKKyMjIyBUd2Vha2luZyBHb29nbGUgVGVzdCAjIyMKKworR29v
Z2xlIFRlc3QgY2FuIGJlIHVzZWQgaW4gZGl2ZXJzZSBlbnZpcm9ubWVudHMuICBUaGUgZGVmYXVs
dAorY29uZmlndXJhdGlvbiBtYXkgbm90IHdvcmsgKG9yIG1heSBub3Qgd29yayB3ZWxsKSBvdXQg
b2YgdGhlIGJveCBpbgorc29tZSBlbnZpcm9ubWVudHMuICBIb3dldmVyLCB5b3UgY2FuIGVhc2ls
eSB0d2VhayBHb29nbGUgVGVzdCBieQorZGVmaW5pbmcgY29udHJvbCBtYWNyb3Mgb24gdGhlIGNv
bXBpbGVyIGNvbW1hbmQgbGluZS4gIEdlbmVyYWxseSwKK3RoZXNlIG1hY3JvcyBhcmUgbmFtZWQg
bGlrZSBgR1RFU1RfWFlaYCBhbmQgeW91IGRlZmluZSB0aGVtIHRvIGVpdGhlciAxCitvciAwIHRv
IGVuYWJsZSBvciBkaXNhYmxlIGEgY2VydGFpbiBmZWF0dXJlLgorCitXZSBsaXN0IHRoZSBtb3N0
IGZyZXF1ZW50bHkgdXNlZCBtYWNyb3MgYmVsb3cuICBGb3IgYSBjb21wbGV0ZSBsaXN0LAorc2Vl
IGZpbGUgW2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oXShpbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LXBvcnQuaCkuCisKKyMjIyBDaG9vc2luZyBhIFRSMSBUdXBsZSBMaWJy
YXJ5ICMjIworCitTb21lIEdvb2dsZSBUZXN0IGZlYXR1cmVzIHJlcXVpcmUgdGhlIEMrKyBUZWNo
bmljYWwgUmVwb3J0IDEgKFRSMSkKK3R1cGxlIGxpYnJhcnksIHdoaWNoIGlzIG5vdCB5ZXQgYXZh
aWxhYmxlIHdpdGggYWxsIGNvbXBpbGVycy4gIFRoZQorZ29vZCBuZXdzIGlzIHRoYXQgR29vZ2xl
IFRlc3QgaW1wbGVtZW50cyBhIHN1YnNldCBvZiBUUjEgdHVwbGUgdGhhdCdzCitlbm91Z2ggZm9y
IGl0cyBvd24gbmVlZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB1c2UgdGhpcyB3aGVuIHRoZQor
Y29tcGlsZXIgZG9lc24ndCBwcm92aWRlIFRSMSB0dXBsZS4KKworVXN1YWxseSB5b3UgZG9uJ3Qg
bmVlZCB0byBjYXJlIGFib3V0IHdoaWNoIHR1cGxlIGxpYnJhcnkgR29vZ2xlIFRlc3QKK3VzZXMu
ICBIb3dldmVyLCBpZiB5b3VyIHByb2plY3QgYWxyZWFkeSB1c2VzIFRSMSB0dXBsZSwgeW91IG5l
ZWQgdG8KK3RlbGwgR29vZ2xlIFRlc3QgdG8gdXNlIHRoZSBzYW1lIFRSMSB0dXBsZSBsaWJyYXJ5
IHRoZSByZXN0IG9mIHlvdXIKK3Byb2plY3QgdXNlcywgb3IgdGhlIHR3byB0dXBsZSBpbXBsZW1l
bnRhdGlvbnMgd2lsbCBjbGFzaC4gIFRvIGRvCit0aGF0LCBhZGQKKworICAgIC1ER1RFU1RfVVNF
X09XTl9UUjFfVFVQTEU9MAorCit0byB0aGUgY29tcGlsZXIgZmxhZ3Mgd2hpbGUgY29tcGlsaW5n
IEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRlc3RzLiAgSWYKK3lvdSB3YW50IHRvIGZvcmNlIEdvb2ds
ZSBUZXN0IHRvIHVzZSBpdHMgb3duIHR1cGxlIGxpYnJhcnksIGp1c3QgYWRkCisKKyAgICAtREdU
RVNUX1VTRV9PV05fVFIxX1RVUExFPTEKKwordG8gdGhlIGNvbXBpbGVyIGZsYWdzIGluc3RlYWQu
CisKK0lmIHlvdSBkb24ndCB3YW50IEdvb2dsZSBUZXN0IHRvIHVzZSB0dXBsZSBhdCBhbGwsIGFk
ZAorCisgICAgLURHVEVTVF9IQVNfVFIxX1RVUExFPTAKKworYW5kIGFsbCBmZWF0dXJlcyB1c2lu
ZyB0dXBsZSB3aWxsIGJlIGRpc2FibGVkLgorCisjIyMgTXVsdGktdGhyZWFkZWQgVGVzdHMgIyMj
CisKK0dvb2dsZSBUZXN0IGlzIHRocmVhZC1zYWZlIHdoZXJlIHRoZSBwdGhyZWFkIGxpYnJhcnkg
aXMgYXZhaWxhYmxlLgorQWZ0ZXIgYCNpbmNsdWRlICJndGVzdC9ndGVzdC5oImAsIHlvdSBjYW4g
Y2hlY2sgdGhlIGBHVEVTVF9JU19USFJFQURTQUZFYAorbWFjcm8gdG8gc2VlIHdoZXRoZXIgdGhp
cyBpcyB0aGUgY2FzZSAoeWVzIGlmIHRoZSBtYWNybyBpcyBgI2RlZmluZWRgIHRvCisxLCBubyBp
ZiBpdCdzIHVuZGVmaW5lZC4pLgorCitJZiBHb29nbGUgVGVzdCBkb2Vzbid0IGNvcnJlY3RseSBk
ZXRlY3Qgd2hldGhlciBwdGhyZWFkIGlzIGF2YWlsYWJsZQoraW4geW91ciBlbnZpcm9ubWVudCwg
eW91IGNhbiBmb3JjZSBpdCB3aXRoCisKKyAgICAtREdURVNUX0hBU19QVEhSRUFEPTEKKworb3IK
KworICAgIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MAorCitXaGVuIEdvb2dsZSBUZXN0IHVzZXMgcHRo
cmVhZCwgeW91IG1heSBuZWVkIHRvIGFkZCBmbGFncyB0byB5b3VyCitjb21waWxlciBhbmQvb3Ig
bGlua2VyIHRvIHNlbGVjdCB0aGUgcHRocmVhZCBsaWJyYXJ5LCBvciB5b3UnbGwgZ2V0CitsaW5r
IGVycm9ycy4gIElmIHlvdSB1c2UgdGhlIENNYWtlIHNjcmlwdCBvciB0aGUgZGVwcmVjYXRlZCBB
dXRvdG9vbHMKK3NjcmlwdCwgdGhpcyBpcyB0YWtlbiBjYXJlIG9mIGZvciB5b3UuICBJZiB5b3Ug
dXNlIHlvdXIgb3duIGJ1aWxkCitzY3JpcHQsIHlvdSdsbCBuZWVkIHRvIHJlYWQgeW91ciBjb21w
aWxlciBhbmQgbGlua2VyJ3MgbWFudWFsIHRvCitmaWd1cmUgb3V0IHdoYXQgZmxhZ3MgdG8gYWRk
LgorCisjIyMgQXMgYSBTaGFyZWQgTGlicmFyeSAoRExMKSAjIyMKKworR29vZ2xlIFRlc3QgaXMg
Y29tcGFjdCwgc28gbW9zdCB1c2VycyBjYW4gYnVpbGQgYW5kIGxpbmsgaXQgYXMgYQorc3RhdGlj
IGxpYnJhcnkgZm9yIHRoZSBzaW1wbGljaXR5LiAgWW91IGNhbiBjaG9vc2UgdG8gdXNlIEdvb2ds
ZSBUZXN0CithcyBhIHNoYXJlZCBsaWJyYXJ5IChrbm93biBhcyBhIERMTCBvbiBXaW5kb3dzKSBp
ZiB5b3UgcHJlZmVyLgorCitUbyBjb21waWxlICpndGVzdCogYXMgYSBzaGFyZWQgbGlicmFyeSwg
YWRkCisKKyAgICAtREdURVNUX0NSRUFURV9TSEFSRURfTElCUkFSWT0xCisKK3RvIHRoZSBjb21w
aWxlciBmbGFncy4gIFlvdSdsbCBhbHNvIG5lZWQgdG8gdGVsbCB0aGUgbGlua2VyIHRvIHByb2R1
Y2UKK2Egc2hhcmVkIGxpYnJhcnkgaW5zdGVhZCAtIGNvbnN1bHQgeW91ciBsaW5rZXIncyBtYW51
YWwgZm9yIGhvdyB0byBkbworaXQuCisKK1RvIGNvbXBpbGUgeW91ciAqdGVzdHMqIHRoYXQgdXNl
IHRoZSBndGVzdCBzaGFyZWQgbGlicmFyeSwgYWRkCisKKyAgICAtREdURVNUX0xJTktFRF9BU19T
SEFSRURfTElCUkFSWT0xCisKK3RvIHRoZSBjb21waWxlciBmbGFncy4KKworTm90ZTogd2hpbGUg
dGhlIGFib3ZlIHN0ZXBzIGFyZW4ndCB0ZWNobmljYWxseSBuZWNlc3NhcnkgdG9kYXkgd2hlbgor
dXNpbmcgc29tZSBjb21waWxlcnMgKGUuZy4gR0NDKSwgdGhleSBtYXkgYmVjb21lIG5lY2Vzc2Fy
eSBpbiB0aGUKK2Z1dHVyZSwgaWYgd2UgZGVjaWRlIHRvIGltcHJvdmUgdGhlIHNwZWVkIG9mIGxv
YWRpbmcgdGhlIGxpYnJhcnkgKHNlZQorPGh0dHA6Ly9nY2MuZ251Lm9yZy93aWtpL1Zpc2liaWxp
dHk+IGZvciBkZXRhaWxzKS4gIFRoZXJlZm9yZSB5b3UgYXJlCityZWNvbW1lbmRlZCB0byBhbHdh
eXMgYWRkIHRoZSBhYm92ZSBmbGFncyB3aGVuIHVzaW5nIEdvb2dsZSBUZXN0IGFzIGEKK3NoYXJl
ZCBsaWJyYXJ5LiAgT3RoZXJ3aXNlIGEgZnV0dXJlIHJlbGVhc2Ugb2YgR29vZ2xlIFRlc3QgbWF5
IGJyZWFrCit5b3VyIGJ1aWxkIHNjcmlwdC4KKworIyMjIEF2b2lkaW5nIE1hY3JvIE5hbWUgQ2xh
c2hlcyAjIyMKKworSW4gQysrLCBtYWNyb3MgZG9uJ3Qgb2JleSBuYW1lc3BhY2VzLiAgVGhlcmVm
b3JlIHR3byBsaWJyYXJpZXMgdGhhdAorYm90aCBkZWZpbmUgYSBtYWNybyBvZiB0aGUgc2FtZSBu
YW1lIHdpbGwgY2xhc2ggaWYgeW91IGAjaW5jbHVkZWAgYm90aAorZGVmaW5pdGlvbnMuICBJbiBj
YXNlIGEgR29vZ2xlIFRlc3QgbWFjcm8gY2xhc2hlcyB3aXRoIGFub3RoZXIKK2xpYnJhcnksIHlv
dSBjYW4gZm9yY2UgR29vZ2xlIFRlc3QgdG8gcmVuYW1lIGl0cyBtYWNybyB0byBhdm9pZCB0aGUK
K2NvbmZsaWN0LgorCitTcGVjaWZpY2FsbHksIGlmIGJvdGggR29vZ2xlIFRlc3QgYW5kIHNvbWUg
b3RoZXIgY29kZSBkZWZpbmUgbWFjcm8KK0ZPTywgeW91IGNhbiBhZGQKKworICAgIC1ER1RFU1Rf
RE9OVF9ERUZJTkVfRk9PPTEKKwordG8gdGhlIGNvbXBpbGVyIGZsYWdzIHRvIHRlbGwgR29vZ2xl
IFRlc3QgdG8gY2hhbmdlIHRoZSBtYWNybydzIG5hbWUKK2Zyb20gYEZPT2AgdG8gYEdURVNUX0ZP
T2AuICBDdXJyZW50bHkgYEZPT2AgY2FuIGJlIGBGQUlMYCwgYFNVQ0NFRURgLAorb3IgYFRFU1Rg
LiAgRm9yIGV4YW1wbGUsIHdpdGggYC1ER1RFU1RfRE9OVF9ERUZJTkVfVEVTVD0xYCwgeW91J2xs
CituZWVkIHRvIHdyaXRlCisKKyAgICBHVEVTVF9URVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAu
Li4gfQorCitpbnN0ZWFkIG9mCisKKyAgICBURVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAuLi4g
fQorCitpbiBvcmRlciB0byBkZWZpbmUgYSB0ZXN0LgorCisjIyBEZXZlbG9waW5nIEdvb2dsZSBU
ZXN0ICMjCisKK1RoaXMgc2VjdGlvbiBkaXNjdXNzZXMgaG93IHRvIG1ha2UgeW91ciBvd24gY2hh
bmdlcyB0byBHb29nbGUgVGVzdC4KKworIyMjIFRlc3RpbmcgR29vZ2xlIFRlc3QgSXRzZWxmICMj
IworCitUbyBtYWtlIHN1cmUgeW91ciBjaGFuZ2VzIHdvcmsgYXMgaW50ZW5kZWQgYW5kIGRvbid0
IGJyZWFrIGV4aXN0aW5nCitmdW5jdGlvbmFsaXR5LCB5b3UnbGwgd2FudCB0byBjb21waWxlIGFu
ZCBydW4gR29vZ2xlIFRlc3QncyBvd24gdGVzdHMuCitGb3IgdGhhdCB5b3UgY2FuIHVzZSBDTWFr
ZToKKworICAgIG1rZGlyIG15YnVpbGQKKyAgICBjZCBteWJ1aWxkCisgICAgY21ha2UgLURndGVz
dF9idWlsZF90ZXN0cz1PTiAke0dURVNUX0RJUn0KKworTWFrZSBzdXJlIHlvdSBoYXZlIFB5dGhv
biBpbnN0YWxsZWQsIGFzIHNvbWUgb2YgR29vZ2xlIFRlc3QncyB0ZXN0cworYXJlIHdyaXR0ZW4g
aW4gUHl0aG9uLiAgSWYgdGhlIGNtYWtlIGNvbW1hbmQgY29tcGxhaW5zIGFib3V0IG5vdCBiZWlu
ZworYWJsZSB0byBmaW5kIFB5dGhvbiAoYENvdWxkIE5PVCBmaW5kIFB5dGhvbkludGVycCAobWlz
c2luZzoKK1BZVEhPTl9FWEVDVVRBQkxFKWApLCB0cnkgdGVsbGluZyBpdCBleHBsaWNpdGx5IHdo
ZXJlIHlvdXIgUHl0aG9uCitleGVjdXRhYmxlIGNhbiBiZSBmb3VuZDoKKworICAgIGNtYWtlIC1E
UFlUSE9OX0VYRUNVVEFCTEU9cGF0aC90by9weXRob24gLURndGVzdF9idWlsZF90ZXN0cz1PTiAk
e0dURVNUX0RJUn0KKworTmV4dCwgeW91IGNhbiBidWlsZCBHb29nbGUgVGVzdCBhbmQgYWxsIG9m
IGl0cyBvd24gdGVzdHMuICBPbiBcKm5peCwKK3RoaXMgaXMgdXN1YWxseSBkb25lIGJ5ICdtYWtl
Jy4gIFRvIHJ1biB0aGUgdGVzdHMsIGRvCisKKyAgICBtYWtlIHRlc3QKKworQWxsIHRlc3RzIHNo
b3VsZCBwYXNzLgorCitOb3JtYWxseSB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCByZWdl
bmVyYXRpbmcgdGhlIHNvdXJjZSBmaWxlcywKK3VubGVzcyB5b3UgbmVlZCB0byBtb2RpZnkgdGhl
bS4gIEluIHRoYXQgY2FzZSwgeW91IHNob3VsZCBtb2RpZnkgdGhlCitjb3JyZXNwb25kaW5nIC5w
dW1wIGZpbGVzIGluc3RlYWQgYW5kIHJ1biB0aGUgcHVtcC5weSBQeXRob24gc2NyaXB0IHRvCity
ZWdlbmVyYXRlIHRoZW0uICBZb3UgY2FuIGZpbmQgcHVtcC5weSBpbiB0aGUgW3NjcmlwdHMvXShz
Y3JpcHRzLykgZGlyZWN0b3J5LgorUmVhZCB0aGUgW1B1bXAgbWFudWFsXShkb2NzL1B1bXBNYW51
YWwubWQpIGZvciBob3cgdG8gdXNlIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvYnVpbGQtYXV4Ly5rZWVwIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvYnVpbGQtYXV4
Ly5rZWVwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUz
OTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2ludGVybmFsX3V0
aWxzLmNtYWtlIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvaW50ZXJuYWxfdXRpbHMu
Y21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzc3YjkxZWQ0YjhjYWEyMjZlYTU1Y2ZhNjFmZTdlYzQzM2ZmYjQ1
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2ludGVy
bmFsX3V0aWxzLmNtYWtlCkBAIC0wLDAgKzEsMjU0IEBACisjIERlZmluZXMgZnVuY3Rpb25zIGFu
ZCBtYWNyb3MgdXNlZnVsIGZvciBidWlsZGluZyBHb29nbGUgVGVzdCBhbmQKKyMgR29vZ2xlIE1v
Y2suCisjCisjIE5vdGU6CisjCisjIC0gVGhpcyBmaWxlIHdpbGwgYmUgcnVuIHR3aWNlIHdoZW4g
YnVpbGRpbmcgR29vZ2xlIE1vY2sgKG9uY2UgdmlhCisjICAgR29vZ2xlIFRlc3QncyBDTWFrZUxp
c3RzLnR4dCwgYW5kIG9uY2UgdmlhIEdvb2dsZSBNb2NrJ3MpLgorIyAgIFRoZXJlZm9yZSBpdCBz
aG91bGRuJ3QgaGF2ZSBhbnkgc2lkZSBlZmZlY3RzIG90aGVyIHRoYW4gZGVmaW5pbmcKKyMgICB0
aGUgZnVuY3Rpb25zIGFuZCBtYWNyb3MuCisjCisjIC0gVGhlIGZ1bmN0aW9ucy9tYWNyb3MgZGVm
aW5lZCBpbiB0aGlzIGZpbGUgbWF5IGRlcGVuZCBvbiBHb29nbGUKKyMgICBUZXN0IGFuZCBHb29n
bGUgTW9jaydzIG9wdGlvbigpIGRlZmluaXRpb25zLCBhbmQgdGh1cyBtdXN0IGJlCisjICAgY2Fs
bGVkICphZnRlciogdGhlIG9wdGlvbnMgaGF2ZSBiZWVuIGRlZmluZWQuCisKKyMgVHdlYWtzIENN
YWtlJ3MgZGVmYXVsdCBjb21waWxlci9saW5rZXIgc2V0dGluZ3MgdG8gc3VpdCBHb29nbGUgVGVz
dCdzIG5lZWRzLgorIworIyBUaGlzIG11c3QgYmUgYSBtYWNybygpLCBhcyBpbnNpZGUgYSBmdW5j
dGlvbiBzdHJpbmcoKSBjYW4gb25seQorIyB1cGRhdGUgdmFyaWFibGVzIGluIHRoZSBmdW5jdGlv
biBzY29wZS4KK21hY3JvKGZpeF9kZWZhdWx0X2NvbXBpbGVyX3NldHRpbmdzXykKKyAgaWYgKE1T
VkMpCisgICAgIyBGb3IgTVNWQywgQ01ha2Ugc2V0cyBjZXJ0YWluIGZsYWdzIHRvIGRlZmF1bHRz
IHdlIHdhbnQgdG8gb3ZlcnJpZGUuCisgICAgIyBUaGlzIHJlcGxhY2VtZW50IGNvZGUgaXMgdGFr
ZW4gZnJvbSBzYW1wbGUgaW4gdGhlIENNYWtlIFdpa2kgYXQKKyAgICAjIGh0dHA6Ly93d3cuY21h
a2Uub3JnL1dpa2kvQ01ha2VfRkFRI0R5bmFtaWNfUmVwbGFjZS4KKyAgICBmb3JlYWNoIChmbGFn
X3ZhcgorICAgICAgICAgICAgIENNQUtFX0NYWF9GTEFHUyBDTUFLRV9DWFhfRkxBR1NfREVCVUcg
Q01BS0VfQ1hYX0ZMQUdTX1JFTEVBU0UKKyAgICAgICAgICAgICBDTUFLRV9DWFhfRkxBR1NfTUlO
U0laRVJFTCBDTUFLRV9DWFhfRkxBR1NfUkVMV0lUSERFQklORk8pCisgICAgICBpZiAoTk9UIEJV
SUxEX1NIQVJFRF9MSUJTIEFORCBOT1QgZ3Rlc3RfZm9yY2Vfc2hhcmVkX2NydCkKKyAgICAgICAg
IyBXaGVuIEdvb2dsZSBUZXN0IGlzIGJ1aWx0IGFzIGEgc2hhcmVkIGxpYnJhcnksIGl0IHNob3Vs
ZCBhbHNvIHVzZQorICAgICAgICAjIHNoYXJlZCBydW50aW1lIGxpYnJhcmllcy4gIE90aGVyd2lz
ZSwgaXQgbWF5IGVuZCB1cCB3aXRoIG11bHRpcGxlCisgICAgICAgICMgY29waWVzIG9mIHJ1bnRp
bWUgbGlicmFyeSBkYXRhIGluIGRpZmZlcmVudCBtb2R1bGVzLCByZXN1bHRpbmcgaW4KKyAgICAg
ICAgIyBoYXJkLXRvLWZpbmQgY3Jhc2hlcy4gV2hlbiBpdCBpcyBidWlsdCBhcyBhIHN0YXRpYyBs
aWJyYXJ5LCBpdCBpcworICAgICAgICAjIHByZWZlcmFibGUgdG8gdXNlIENSVCBhcyBzdGF0aWMg
bGlicmFyaWVzLCBhcyB3ZSBkb24ndCBoYXZlIHRvIHJlbHkKKyAgICAgICAgIyBvbiBDUlQgRExM
cyBiZWluZyBhdmFpbGFibGUuIENNYWtlIGFsd2F5cyBkZWZhdWx0cyB0byB1c2luZyBzaGFyZWQK
KyAgICAgICAgIyBDUlQgbGlicmFyaWVzLCBzbyB3ZSBvdmVycmlkZSB0aGF0IGRlZmF1bHQgaGVy
ZS4KKyAgICAgICAgc3RyaW5nKFJFUExBQ0UgIi9NRCIgIi1NVCIgJHtmbGFnX3Zhcn0gIiR7JHtm
bGFnX3Zhcn19IikKKyAgICAgIGVuZGlmKCkKKworICAgICAgIyBXZSBwcmVmZXIgbW9yZSBzdHJp
Y3Qgd2FybmluZyBjaGVja2luZyBmb3IgYnVpbGRpbmcgR29vZ2xlIFRlc3QuCisgICAgICAjIFJl
cGxhY2VzIC9XMyB3aXRoIC9XNCBpbiBkZWZhdWx0cy4KKyAgICAgIHN0cmluZyhSRVBMQUNFICIv
VzMiICIvVzQiICR7ZmxhZ192YXJ9ICIkeyR7ZmxhZ192YXJ9fSIpCisgICAgZW5kZm9yZWFjaCgp
CisgIGVuZGlmKCkKK2VuZG1hY3JvKCkKKworIyBEZWZpbmVzIHRoZSBjb21waWxlci9saW5rZXIg
ZmxhZ3MgdXNlZCB0byBidWlsZCBHb29nbGUgVGVzdCBhbmQKKyMgR29vZ2xlIE1vY2suICBZb3Ug
Y2FuIHR3ZWFrIHRoZXNlIGRlZmluaXRpb25zIHRvIHN1aXQgeW91ciBuZWVkLiAgQQorIyB2YXJp
YWJsZSdzIHZhbHVlIGlzIGVtcHR5IGJlZm9yZSBpdCdzIGV4cGxpY2l0bHkgYXNzaWduZWQgdG8u
CittYWNybyhjb25maWdfY29tcGlsZXJfYW5kX2xpbmtlcikKKyAgaWYgKE5PVCBndGVzdF9kaXNh
YmxlX3B0aHJlYWRzKQorICAgICMgRGVmaW5lcyBDTUFLRV9VU0VfUFRIUkVBRFNfSU5JVCBhbmQg
Q01BS0VfVEhSRUFEX0xJQlNfSU5JVC4KKyAgICBmaW5kX3BhY2thZ2UoVGhyZWFkcykKKyAgZW5k
aWYoKQorCisgIGZpeF9kZWZhdWx0X2NvbXBpbGVyX3NldHRpbmdzXygpCisgIGlmIChNU1ZDKQor
ICAgICMgTmV3bGluZXMgaW5zaWRlIGZsYWdzIHZhcmlhYmxlcyBicmVhayBDTWFrZSdzIE5NYWtl
IGdlbmVyYXRvci4KKyAgICAjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEFkZCAtUlRDcyBhbmQg
LVJUQ3UgdG8gZGVidWcgYnVpbGRzLgorICAgIHNldChjeHhfYmFzZV9mbGFncyAiLUdTIC1XNCAt
V1ggLXdkNDI1MSAtd2Q0Mjc1IC1ub2xvZ28gLUogLVppIikKKyAgICBpZiAoTVNWQ19WRVJTSU9O
IExFU1MgMTQwMCkgICMgMTQwMCBpcyBWaXN1YWwgU3R1ZGlvIDIwMDUKKyAgICAgICMgU3VwcHJl
c3Mgc3B1cmlvdXMgd2FybmluZ3MgTVNWQyA3LjEgc29tZXRpbWVzIGlzc3Vlcy4KKyAgICAgICMg
Rm9yY2luZyB2YWx1ZSB0byBib29sLgorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9i
YXNlX2ZsYWdzfSAtd2Q0ODAwIikKKyAgICAgICMgQ29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdu
bWVudCBvcGVyYXRvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkLgorICAgICAgc2V0KGN4eF9iYXNl
X2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtd2Q0NTExIC13ZDQ1MTIiKQorICAgICAgIyBDb21w
YXRpYmlsaXR5IHdhcm5pbmdzIG5vdCBhcHBsaWNhYmxlIHRvIEdvb2dsZSBUZXN0LgorICAgICAg
IyBSZXNvbHZlZCBvdmVybG9hZCB3YXMgZm91bmQgYnkgYXJndW1lbnQtZGVwZW5kZW50IGxvb2t1
cC4KKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLXdkNDY3NSIp
CisgICAgZW5kaWYoKQorICAgIGlmIChNU1ZDX1ZFUlNJT04gTEVTUyAxNTAwKSAgIyAxNTAwIGlz
IFZpc3VhbCBTdHVkaW8gMjAwOAorICAgICAgIyBDb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNv
bnN0YW50LgorICAgICAgIyBXaGVuIGNvbXBpbGluZyB3aXRoIC9XNCwgd2UgZ2V0IHNldmVyYWwg
aW5zdGFuY2VzIG9mIEM0MTI3CisgICAgICAjIChDb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNv
bnN0YW50KS4gSW4gb3VyIGNvZGUsIHdlIGRpc2FibGUgdGhhdAorICAgICAgIyB3YXJuaW5nIG9u
IGEgY2FzZS1ieS1jYXNlIGJhc2lzLiBIb3dldmVyLCBvbiBWaXN1YWwgU3R1ZGlvIDIwMDUsCisg
ICAgICAjIHRoZSB3YXJuaW5nIGZpcmVzIG9uIHN0ZDo6bGlzdC4gVGhlcmVmb3JlIG9uIHRoYXQg
Y29tcGlsZXIgYW5kIGVhcmxpZXIsCisgICAgICAjIHdlIGRpc2FibGUgdGhlIHdhcm5pbmcgcHJv
amVjdC13aWRlLgorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAt
d2Q0MTI3IikKKyAgICBlbmRpZigpCisgICAgaWYgKE5PVCAoTVNWQ19WRVJTSU9OIExFU1MgMTcw
MCkpICAjIDE3MDAgaXMgVmlzdWFsIFN0dWRpbyAyMDEyLgorICAgICAgIyBTdXBwcmVzcyAidW5y
ZWFjaGFibGUgY29kZSIgd2FybmluZyBvbiBWUyAyMDEyIGFuZCBsYXRlci4KKyAgICAgICMgaHR0
cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMjMyNjY5IGV4cGxhaW5zIHRoZSBpc3N1
ZS4KKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLXdkNDcwMiIp
CisgICAgZW5kaWYoKQorICAgIGlmIChOT1QgKE1TVkNfVkVSU0lPTiBHUkVBVEVSIDE5MDApKSAg
IyAxOTAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxNQorICAgICAgIyBCaWdPYmogcmVxdWlyZWQgZm9y
IHRlc3RzLgorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtYmln
b2JqIikKKyAgICBlbmRpZigpCisKKyAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2Vf
ZmxhZ3N9IC1EX1VOSUNPREUgLURVTklDT0RFIC1EV0lOMzIgLURfV0lOMzIiKQorICAgIHNldChj
eHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLURTVFJJQ1QgLURXSU4zMl9MRUFOX0FO
RF9NRUFOIikKKyAgICBzZXQoY3h4X2V4Y2VwdGlvbl9mbGFncyAiLUVIc2MgLURfSEFTX0VYQ0VQ
VElPTlM9MSIpCisgICAgc2V0KGN4eF9ub19leGNlcHRpb25fZmxhZ3MgIi1EX0hBU19FWENFUFRJ
T05TPTAiKQorICAgIHNldChjeHhfbm9fcnR0aV9mbGFncyAiLUdSLSIpCisgIGVsc2VpZiAoQ01B
S0VfQ09NUElMRVJfSVNfR05VQ1hYKQorICAgIHNldChjeHhfYmFzZV9mbGFncyAiLVdhbGwgLVdz
aGFkb3ciKQorICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICItZmV4Y2VwdGlvbnMiKQorICAg
IHNldChjeHhfbm9fZXhjZXB0aW9uX2ZsYWdzICItZm5vLWV4Y2VwdGlvbnMiKQorICAgICMgVW50
aWwgdmVyc2lvbiA0LjMuMiwgR0NDIGRvZXNuJ3QgZGVmaW5lIGEgbWFjcm8gdG8gaW5kaWNhdGUK
KyAgICAjIHdoZXRoZXIgUlRUSSBpcyBlbmFibGVkLiAgVGhlcmVmb3JlIHdlIGRlZmluZSBHVEVT
VF9IQVNfUlRUSQorICAgICMgZXhwbGljaXRseS4KKyAgICBzZXQoY3h4X25vX3J0dGlfZmxhZ3Mg
Ii1mbm8tcnR0aSAtREdURVNUX0hBU19SVFRJPTAiKQorICAgIHNldChjeHhfc3RyaWN0X2ZsYWdz
CisgICAgICAiLVdleHRyYSAtV25vLXVudXNlZC1wYXJhbWV0ZXIgLVduby1taXNzaW5nLWZpZWxk
LWluaXRpYWxpemVycyIpCisgIGVsc2VpZiAoQ01BS0VfQ1hYX0NPTVBJTEVSX0lEIFNUUkVRVUFM
ICJTdW5Qcm8iKQorICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICItZmVhdHVyZXM9ZXhjZXB0
IikKKyAgICAjIFN1biBQcm8gZG9lc24ndCBwcm92aWRlIG1hY3JvcyB0byBpbmRpY2F0ZSB3aGV0
aGVyIGV4Y2VwdGlvbnMgYW5kCisgICAgIyBSVFRJIGFyZSBlbmFibGVkLCBzbyB3ZSBkZWZpbmUg
R1RFU1RfSEFTXyogZXhwbGljaXRseS4KKyAgICBzZXQoY3h4X25vX2V4Y2VwdGlvbl9mbGFncyAi
LWZlYXR1cmVzPW5vJWV4Y2VwdCAtREdURVNUX0hBU19FWENFUFRJT05TPTAiKQorICAgIHNldChj
eHhfbm9fcnR0aV9mbGFncyAiLWZlYXR1cmVzPW5vJXJ0dGkgLURHVEVTVF9IQVNfUlRUST0wIikK
KyAgZWxzZWlmIChDTUFLRV9DWFhfQ09NUElMRVJfSUQgU1RSRVFVQUwgIlZpc3VhbEFnZSIgT1IK
KyAgICAgIENNQUtFX0NYWF9DT01QSUxFUl9JRCBTVFJFUVVBTCAiWEwiKQorICAgICMgQ01ha2Ug
Mi44IGNoYW5nZXMgVmlzdWFsIEFnZSdzIGNvbXBpbGVyIElEIHRvICJYTCIuCisgICAgc2V0KGN4
eF9leGNlcHRpb25fZmxhZ3MgIi1xZWgiKQorICAgIHNldChjeHhfbm9fZXhjZXB0aW9uX2ZsYWdz
ICItcW5vZWgiKQorICAgICMgVW50aWwgdmVyc2lvbiA5LjAsIFZpc3VhbCBBZ2UgZG9lc24ndCBk
ZWZpbmUgYSBtYWNybyB0byBpbmRpY2F0ZQorICAgICMgd2hldGhlciBSVFRJIGlzIGVuYWJsZWQu
ICBUaGVyZWZvcmUgd2UgZGVmaW5lIEdURVNUX0hBU19SVFRJCisgICAgIyBleHBsaWNpdGx5Lgor
ICAgIHNldChjeHhfbm9fcnR0aV9mbGFncyAiLXFub3J0dGkgLURHVEVTVF9IQVNfUlRUST0wIikK
KyAgZWxzZWlmIChDTUFLRV9DWFhfQ09NUElMRVJfSUQgU1RSRVFVQUwgIkhQIikKKyAgICBzZXQo
Y3h4X2Jhc2VfZmxhZ3MgIi1BQSAtbXQiKQorICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICIt
REdURVNUX0hBU19FWENFUFRJT05TPTEiKQorICAgIHNldChjeHhfbm9fZXhjZXB0aW9uX2ZsYWdz
ICIrbm9laCAtREdURVNUX0hBU19FWENFUFRJT05TPTAiKQorICAgICMgUlRUSSBjYW4gbm90IGJl
IGRpc2FibGVkIGluIEhQIGFDQyBjb21waWxlci4KKyAgICBzZXQoY3h4X25vX3J0dGlfZmxhZ3Mg
IiIpCisgIGVuZGlmKCkKKworICBpZiAoQ01BS0VfVVNFX1BUSFJFQURTX0lOSVQpICAjIFRoZSBw
dGhyZWFkcyBsaWJyYXJ5IGlzIGF2YWlsYWJsZSBhbmQgYWxsb3dlZC4KKyAgICBzZXQoY3h4X2Jh
c2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC1ER1RFU1RfSEFTX1BUSFJFQUQ9MSIpCisgIGVs
c2UoKQorICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLURHVEVTVF9I
QVNfUFRIUkVBRD0wIikKKyAgZW5kaWYoKQorCisgICMgRm9yIGJ1aWxkaW5nIGd0ZXN0J3Mgb3du
IHRlc3RzIGFuZCBzYW1wbGVzLgorICBzZXQoY3h4X2V4Y2VwdGlvbiAiJHtDTUFLRV9DWFhfRkxB
R1N9ICR7Y3h4X2Jhc2VfZmxhZ3N9ICR7Y3h4X2V4Y2VwdGlvbl9mbGFnc30iKQorICBzZXQoY3h4
X25vX2V4Y2VwdGlvbgorICAgICIke0NNQUtFX0NYWF9GTEFHU30gJHtjeHhfYmFzZV9mbGFnc30g
JHtjeHhfbm9fZXhjZXB0aW9uX2ZsYWdzfSIpCisgIHNldChjeHhfZGVmYXVsdCAiJHtjeHhfZXhj
ZXB0aW9ufSIpCisgIHNldChjeHhfbm9fcnR0aSAiJHtjeHhfZGVmYXVsdH0gJHtjeHhfbm9fcnR0
aV9mbGFnc30iKQorICBzZXQoY3h4X3VzZV9vd25fdHVwbGUgIiR7Y3h4X2RlZmF1bHR9IC1ER1RF
U1RfVVNFX09XTl9UUjFfVFVQTEU9MSIpCisKKyAgIyBGb3IgYnVpbGRpbmcgdGhlIGd0ZXN0IGxp
YnJhcmllcy4KKyAgc2V0KGN4eF9zdHJpY3QgIiR7Y3h4X2RlZmF1bHR9ICR7Y3h4X3N0cmljdF9m
bGFnc30iKQorZW5kbWFjcm8oKQorCisjIERlZmluZXMgdGhlIGd0ZXN0ICYgZ3Rlc3RfbWFpbiBs
aWJyYXJpZXMuICBVc2VyIHRlc3RzIHNob3VsZCBsaW5rCisjIHdpdGggb25lIG9mIHRoZW0uCitm
dW5jdGlvbihjeHhfbGlicmFyeV93aXRoX3R5cGUgbmFtZSB0eXBlIGN4eF9mbGFncykKKyAgIyB0
eXBlIGNhbiBiZSBlaXRoZXIgU1RBVElDIG9yIFNIQVJFRCB0byBkZW5vdGUgYSBzdGF0aWMgb3Ig
c2hhcmVkIGxpYnJhcnkuCisgICMgQVJHTiByZWZlcnMgdG8gYWRkaXRpb25hbCBhcmd1bWVudHMg
YWZ0ZXIgJ2N4eF9mbGFncycuCisgIGFkZF9saWJyYXJ5KCR7bmFtZX0gJHt0eXBlfSAke0FSR059
KQorICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtuYW1lfQorICAgIFBST1BFUlRJRVMKKyAgICBD
T01QSUxFX0ZMQUdTICIke2N4eF9mbGFnc30iKQorICBpZiAoQlVJTERfU0hBUkVEX0xJQlMgT1Ig
dHlwZSBTVFJFUVVBTCAiU0hBUkVEIikKKyAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtuYW1l
fQorICAgICAgUFJPUEVSVElFUworICAgICAgQ09NUElMRV9ERUZJTklUSU9OUyAiR1RFU1RfQ1JF
QVRFX1NIQVJFRF9MSUJSQVJZPTEiKQorICBlbmRpZigpCisgIGlmIChDTUFLRV9VU0VfUFRIUkVB
RFNfSU5JVCkKKyAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtuYW1lfSAke0NNQUtFX1RIUkVB
RF9MSUJTX0lOSVR9KQorICBlbmRpZigpCitlbmRmdW5jdGlvbigpCisKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworIworIyBIZWxwZXIgZnVuY3Rpb25zIGZvciBjcmVhdGluZyBidWlsZCB0YXJnZXRzLgorCitm
dW5jdGlvbihjeHhfc2hhcmVkX2xpYnJhcnkgbmFtZSBjeHhfZmxhZ3MpCisgIGN4eF9saWJyYXJ5
X3dpdGhfdHlwZSgke25hbWV9IFNIQVJFRCAiJHtjeHhfZmxhZ3N9IiAke0FSR059KQorZW5kZnVu
Y3Rpb24oKQorCitmdW5jdGlvbihjeHhfbGlicmFyeSBuYW1lIGN4eF9mbGFncykKKyAgY3h4X2xp
YnJhcnlfd2l0aF90eXBlKCR7bmFtZX0gIiIgIiR7Y3h4X2ZsYWdzfSIgJHtBUkdOfSkKK2VuZGZ1
bmN0aW9uKCkKKworIyBjeHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzKG5hbWUgY3h4X2ZsYWdzIGxp
YnMgc3Jjcy4uLikKKyMKKyMgY3JlYXRlcyBhIG5hbWVkIEMrKyBleGVjdXRhYmxlIHRoYXQgZGVw
ZW5kcyBvbiB0aGUgZ2l2ZW4gbGlicmFyaWVzIGFuZAorIyBpcyBidWlsdCBmcm9tIHRoZSBnaXZl
biBzb3VyY2UgZmlsZXMgd2l0aCB0aGUgZ2l2ZW4gY29tcGlsZXIgZmxhZ3MuCitmdW5jdGlvbihj
eHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzIG5hbWUgY3h4X2ZsYWdzIGxpYnMpCisgIGFkZF9leGVj
dXRhYmxlKCR7bmFtZX0gJHtBUkdOfSkKKyAgaWYgKGN4eF9mbGFncykKKyAgICBzZXRfdGFyZ2V0
X3Byb3BlcnRpZXMoJHtuYW1lfQorICAgICAgUFJPUEVSVElFUworICAgICAgQ09NUElMRV9GTEFH
UyAiJHtjeHhfZmxhZ3N9IikKKyAgZW5kaWYoKQorICBpZiAoQlVJTERfU0hBUkVEX0xJQlMpCisg
ICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7bmFtZX0KKyAgICAgIFBST1BFUlRJRVMKKyAgICAg
IENPTVBJTEVfREVGSU5JVElPTlMgIkdURVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFSWT0xIikK
KyAgZW5kaWYoKQorICAjIFRvIHN1cHBvcnQgbWl4aW5nIGxpbmtpbmcgaW4gc3RhdGljIGFuZCBk
eW5hbWljIGxpYnJhcmllcywgbGluayBlYWNoCisgICMgbGlicmFyeSBpbiB3aXRoIGFuIGV4dHJh
IGNhbGwgdG8gdGFyZ2V0X2xpbmtfbGlicmFyaWVzLgorICBmb3JlYWNoIChsaWIgIiR7bGlic30i
KQorICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke25hbWV9ICR7bGlifSkKKyAgZW5kZm9yZWFj
aCgpCitlbmRmdW5jdGlvbigpCisKKyMgY3h4X2V4ZWN1dGFibGUobmFtZSBkaXIgbGliIHNyY3Mu
Li4pCisjCisjIGNyZWF0ZXMgYSBuYW1lZCB0YXJnZXQgdGhhdCBkZXBlbmRzIG9uIHRoZSBnaXZl
biBsaWJzIGFuZCBpcyBidWlsdAorIyBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmlsZXMuICBkaXIv
bmFtZS5jYyBpcyBpbXBsaWNpdGx5IGluY2x1ZGVkIGluCisjIHRoZSBzb3VyY2UgZmlsZSBsaXN0
LgorZnVuY3Rpb24oY3h4X2V4ZWN1dGFibGUgbmFtZSBkaXIgbGlicykKKyAgY3h4X2V4ZWN1dGFi
bGVfd2l0aF9mbGFncygKKyAgICAke25hbWV9ICIke2N4eF9kZWZhdWx0fSIgIiR7bGlic30iICIk
e2Rpcn0vJHtuYW1lfS5jYyIgJHtBUkdOfSkKK2VuZGZ1bmN0aW9uKCkKKworIyBTZXRzIFBZVEhP
TklOVEVSUF9GT1VORCBhbmQgUFlUSE9OX0VYRUNVVEFCTEUuCitmaW5kX3BhY2thZ2UoUHl0aG9u
SW50ZXJwKQorCisjIGN4eF90ZXN0X3dpdGhfZmxhZ3MobmFtZSBjeHhfZmxhZ3MgbGlicyBzcmNz
Li4uKQorIworIyBjcmVhdGVzIGEgbmFtZWQgQysrIHRlc3QgdGhhdCBkZXBlbmRzIG9uIHRoZSBn
aXZlbiBsaWJzIGFuZCBpcyBidWlsdAorIyBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmlsZXMgd2l0
aCB0aGUgZ2l2ZW4gY29tcGlsZXIgZmxhZ3MuCitmdW5jdGlvbihjeHhfdGVzdF93aXRoX2ZsYWdz
IG5hbWUgY3h4X2ZsYWdzIGxpYnMpCisgIGN4eF9leGVjdXRhYmxlX3dpdGhfZmxhZ3MoJHtuYW1l
fSAiJHtjeHhfZmxhZ3N9IiAiJHtsaWJzfSIgJHtBUkdOfSkKKyAgYWRkX3Rlc3QoJHtuYW1lfSAk
e25hbWV9KQorZW5kZnVuY3Rpb24oKQorCisjIGN4eF90ZXN0KG5hbWUgbGlicyBzcmNzLi4uKQor
IworIyBjcmVhdGVzIGEgbmFtZWQgdGVzdCB0YXJnZXQgdGhhdCBkZXBlbmRzIG9uIHRoZSBnaXZl
biBsaWJzIGFuZCBpcworIyBidWlsdCBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmlsZXMuICBVbmxp
a2UgY3h4X3Rlc3Rfd2l0aF9mbGFncywKKyMgdGVzdC9uYW1lLmNjIGlzIGFscmVhZHkgaW1wbGlj
aXRseSBpbmNsdWRlZCBpbiB0aGUgc291cmNlIGZpbGUgbGlzdC4KK2Z1bmN0aW9uKGN4eF90ZXN0
IG5hbWUgbGlicykKKyAgY3h4X3Rlc3Rfd2l0aF9mbGFncygiJHtuYW1lfSIgIiR7Y3h4X2RlZmF1
bHR9IiAiJHtsaWJzfSIKKyAgICAidGVzdC8ke25hbWV9LmNjIiAke0FSR059KQorZW5kZnVuY3Rp
b24oKQorCisjIHB5X3Rlc3QobmFtZSkKKyMKKyMgY3JlYXRlcyBhIFB5dGhvbiB0ZXN0IHdpdGgg
dGhlIGdpdmVuIG5hbWUgd2hvc2UgbWFpbiBtb2R1bGUgaXMgaW4KKyMgdGVzdC9uYW1lLnB5LiAg
SXQgZG9lcyBub3RoaW5nIGlmIFB5dGhvbiBpcyBub3QgaW5zdGFsbGVkLgorZnVuY3Rpb24ocHlf
dGVzdCBuYW1lKQorICAjIFdlIGFyZSBub3Qgc3VwcG9ydGluZyBQeXRob24gdGVzdHMgb24gTGlu
dXggeWV0IGFzIHRoZXkgY29uc2lkZXIKKyAgIyBhbGwgTGludXggZW52aXJvbm1lbnRzIHRvIGJl
IGdvb2dsZTMgYW5kIHRyeSB0byB1c2UgZ29vZ2xlMyBmZWF0dXJlcy4KKyAgaWYgKFBZVEhPTklO
VEVSUF9GT1VORCkKKyAgICAjICR7Q01BS0VfQklOQVJZX0RJUn0gaXMga25vd24gYXQgY29uZmln
dXJhdGlvbiB0aW1lLCBzbyB3ZSBjYW4KKyAgICAjIGRpcmVjdGx5IGJpbmQgaXQgZnJvbSBjbWFr
ZS4gJHtDVEVTVF9DT05GSUdVUkFUSU9OX1RZUEV9IGlzIGtub3duCisgICAgIyBvbmx5IGF0IGN0
ZXN0IHJ1bnRpbWUgKGJ5IGNhbGxpbmcgY3Rlc3QgLWMgPENvbmZpZ3VyYXRpb24+KSwgc28KKyAg
ICAjIHdlIGhhdmUgdG8gZXNjYXBlICQgdG8gZGVsYXkgdmFyaWFibGUgc3Vic3RpdHV0aW9uIGhl
cmUuCisgICAgaWYgKCR7Q01BS0VfTUFKT1JfVkVSU0lPTn0uJHtDTUFLRV9NSU5PUl9WRVJTSU9O
fSBHUkVBVEVSIDMuMSkKKyAgICAgIGFkZF90ZXN0KAorICAgICAgICBOQU1FICR7bmFtZX0KKyAg
ICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNF
X0RJUn0vdGVzdC8ke25hbWV9LnB5CisgICAgICAgICAgICAtLWJ1aWxkX2Rpcj0ke0NNQUtFX0NV
UlJFTlRfQklOQVJZX0RJUn0vJDxDT05GSUdVUkFUSU9OPikKKyAgICBlbHNlICgke0NNQUtFX01B
Sk9SX1ZFUlNJT059LiR7Q01BS0VfTUlOT1JfVkVSU0lPTn0gR1JFQVRFUiAzLjEpCisgICAgICBh
ZGRfdGVzdCgKKyAgICAgICAgJHtuYW1lfQorICAgICAgICAke1BZVEhPTl9FWEVDVVRBQkxFfSAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vdGVzdC8ke25hbWV9LnB5CisgICAgICAgICAgLS1i
dWlsZF9kaXI9JHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L1wke0NURVNUX0NPTkZJR1VSQVRJ
T05fVFlQRX0pCisgICAgZW5kaWYgKCR7Q01BS0VfTUFKT1JfVkVSU0lPTn0uJHtDTUFLRV9NSU5P
Ul9WRVJTSU9OfSBHUkVBVEVSIDMuMSkKKyAgZW5kaWYoKQorZW5kZnVuY3Rpb24oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29kZWdlYXIvZ3Rlc3RfYWxsLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29kZWdlYXIvZ3Rlc3RfYWxsLmNjCmluZGV4IGJhN2FkNjhh
ZDFjYWE1ZmIyMDgzOGM3MDA4OTZhNDE4MmJhNTlkOWYuLjEyMWIyZDgwZTgzZWM3Y2QwZmRmN2Rj
NjcxMjcyZGM1NGY2ZTlmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2Nv
ZGVnZWFyL2d0ZXN0X2FsbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vh
ci9ndGVzdF9hbGwuY2MKQEAgLTEsMzggKzEsMzggQEAKLS8vIENvcHlyaWdodCAyMDA5LCBHb29n
bGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IEpvc2ggS2VsbGV5IChqb3Noa2Vs
QGdtYWlsLmNvbSkKLS8vCi0vLyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUg
VGVzdCkKLS8vCi0vLyBDKytCdWlsZGVyJ3MgSURFIGNhbm5vdCBidWlsZCBhIHN0YXRpYyBsaWJy
YXJ5IGZyb20gZmlsZXMgd2l0aCBoeXBoZW5zCi0vLyBpbiB0aGVpciBuYW1lLiAgU2VlIGh0dHA6
Ly9xYy5jb2RlZ2Vhci5jb20vd2MvcWNtYWluLmFzcHg/ZD03MDk3NyAuCi0vLyBUaGlzIGZpbGUg
c2VydmVzIGFzIGEgd29ya2Fyb3VuZC4KLQotI2luY2x1ZGUgInNyYy9ndGVzdC1hbGwuY2MiCisv
LyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4NCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLg0K
Ky8vDQorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0DQorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQ0KKy8vIG1ldDoNCisvLw0KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0DQorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyDQorLy8g
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQ0KKy8vIGRpc3RyaWJ1dGlvbi4NCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzDQorLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKy8v
DQorLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUw0KKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQNCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQorLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
DQorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZDQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KKy8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuDQorLy8NCisvLyBBdXRob3I6IEpvc2ggS2VsbGV5IChqb3Noa2VsQGdtYWls
LmNvbSkNCisvLw0KKy8vIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0
KQ0KKy8vDQorLy8gQysrQnVpbGRlcidzIElERSBjYW5ub3QgYnVpbGQgYSBzdGF0aWMgbGlicmFy
eSBmcm9tIGZpbGVzIHdpdGggaHlwaGVucw0KKy8vIGluIHRoZWlyIG5hbWUuICBTZWUgaHR0cDov
L3FjLmNvZGVnZWFyLmNvbS93Yy9xY21haW4uYXNweD9kPTcwOTc3IC4NCisvLyBUaGlzIGZpbGUg
c2VydmVzIGFzIGEgd29ya2Fyb3VuZC4NCisNCisjaW5jbHVkZSAic3JjL2d0ZXN0LWFsbC5jYyIN
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9saW5r
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29kZWdlYXIvZ3Rlc3RfbGluay5jYwppbmRl
eCBiOTU1ZWJmMmY5MTEwZTYzNTNjNjg3Y2MzOTQyMzQ4ZGE3OTdjYjUwLi45MThlY2NkMTliN2Rh
ZmEzMmI1MjkzODBiNzA5MjM4YzllM2EzNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9saW5rLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2NvZGVnZWFyL2d0ZXN0X2xpbmsuY2MKQEAgLTEsNDAgKzEsNDAgQEAKLS8vIENvcHlyaWdo
dCAyMDA5LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9u
LgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IEpvc2ggS2Vs
bGV5IChqb3Noa2VsQGdtYWlsLmNvbSkKLS8vCi0vLyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3
b3JrIChHb29nbGUgVGVzdCkKLS8vCi0vLyBMaW5rcyBndGVzdC5saWIgYW5kIGd0ZXN0X21haW4u
bGliIGludG8gdGhlIGN1cnJlbnQgcHJvamVjdCBpbiBDKytCdWlsZGVyLgotLy8gVGhpcyBtZWFu
cyB0aGF0IHRoZXNlIGxpYnJhcmllcyBjYW4ndCBiZSByZW5hbWVkLCBidXQgaXQncyB0aGUgb25s
eSB3YXkgdG8KLS8vIGVuc3VyZSB0aGF0IERlYnVnIHZlcnN1cyBSZWxlYXNlIHRlc3QgYnVpbGRz
IGFyZSBsaW5rZWQgYWdhaW5zdCB0aGUKLS8vIGFwcHJvcHJpYXRlIERlYnVnIG9yIFJlbGVhc2Ug
YnVpbGQgb2YgdGhlIGxpYnJhcmllcy4KLQotI3ByYWdtYSBsaW5rICJndGVzdC5saWIiCi0jcHJh
Z21hIGxpbmsgImd0ZXN0X21haW4ubGliIgorLy8gQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMu
DQorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLw0KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKy8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUNCisvLyBtZXQ6DQorLy8NCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlDQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcg0KKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCisvLyBkaXN0cmlidXRpb24uDQorLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cw0KKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tDQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCisvLw0KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMNCisvLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VA0KKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUg0KKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUDQorLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQor
Ly8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVA0KKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0KKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQ0KKy8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQNCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKy8vDQorLy8gQXV0aG9y
OiBKb3NoIEtlbGxleSAoam9zaGtlbEBnbWFpbC5jb20pDQorLy8NCisvLyBHb29nbGUgQysrIFRl
c3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkNCisvLw0KKy8vIExpbmtzIGd0ZXN0LmxpYiBh
bmQgZ3Rlc3RfbWFpbi5saWIgaW50byB0aGUgY3VycmVudCBwcm9qZWN0IGluIEMrK0J1aWxkZXIu
DQorLy8gVGhpcyBtZWFucyB0aGF0IHRoZXNlIGxpYnJhcmllcyBjYW4ndCBiZSByZW5hbWVkLCBi
dXQgaXQncyB0aGUgb25seSB3YXkgdG8NCisvLyBlbnN1cmUgdGhhdCBEZWJ1ZyB2ZXJzdXMgUmVs
ZWFzZSB0ZXN0IGJ1aWxkcyBhcmUgbGlua2VkIGFnYWluc3QgdGhlDQorLy8gYXBwcm9wcmlhdGUg
RGVidWcgb3IgUmVsZWFzZSBidWlsZCBvZiB0aGUgbGlicmFyaWVzLg0KKw0KKyNwcmFnbWEgbGlu
ayAiZ3Rlc3QubGliIg0KKyNwcmFnbWEgbGluayAiZ3Rlc3RfbWFpbi5saWIiDQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29uZmlndXJlLmFjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvY29uZmlndXJlLmFjCmluZGV4IDFiOTEyMzc0NjFlMzlmZjYxYjYzMGYzZTAxOWFk
ZmVlZWI3ODNhZTYuLmNjNTkyZTE1ODMwMmVkNjkzMzNkYjUwZjc1NTE3ZWViZjg4NjQ3ZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NvbmZpZ3VyZS5hYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9jb25maWd1cmUuYWMKQEAgLTUsMTMgKzUsMTQgQEAgbTRfaW5j
bHVkZShtNC9hY3hfcHRocmVhZC5tNCkKICMgIlsxLjAuMV0iKS4gSXQgYWxzbyBhc3VtZXMgdGhh
dCB0aGVyZSB3b24ndCBiZSBhbnkgY2xvc2luZyBwYXJlbnRoZXNpcwogIyBiZXR3ZWVuICJBQ19J
TklUKCIgYW5kIHRoZSBjbG9zaW5nICIpIiBpbmNsdWRpbmcgY29tbWVudHMgYW5kIHN0cmluZ3Mu
CiBBQ19JTklUKFtHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrXSwKLSAgICAgICAgWzEuNS4w
XSwKKyAgICAgICAgWzEuNy4wXSwKICAgICAgICAgW2dvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xl
Z3JvdXBzLmNvbV0sCiAgICAgICAgIFtndGVzdF0pCiAKICMgUHJvdmlkZSB2YXJpb3VzIG9wdGlv
bnMgdG8gaW5pdGlhbGl6ZSB0aGUgQXV0b2NvbmYgYW5kIGNvbmZpZ3VyZSBwcm9jZXNzZXMuCiBB
Q19QUkVSRVEoWzIuNTldKQotQUNfQ09ORklHX1NSQ0RJUihbLi9DT1BZSU5HXSkKK0FDX0NPTkZJ
R19TUkNESVIoWy4vTElDRU5TRV0pCitBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCiBBQ19DT05G
SUdfQVVYX0RJUihbYnVpbGQtYXV4XSkKIEFDX0NPTkZJR19IRUFERVJTKFtidWlsZC1hdXgvY29u
ZmlnLmhdKQogQUNfQ09ORklHX0ZJTEVTKFtNYWtlZmlsZV0pCkBAIC01NCw3ICs1NSw3IEBAIEFT
X0lGKFt0ZXN0ICJ4JHdpdGhfcHRocmVhZHMiICE9ICJ4bm8iXSwKICAgICAgICAgICAgICAgIFtB
Q19NU0dfRkFJTFVSRSgKICAgICAgICAgICAgICAgICAgWy0td2l0aC1wdGhyZWFkcyB3YXMgc3Bl
Y2lmaWVkLCBidXQgdW5hYmxlIHRvIGJlIHVzZWRdKV0pXSkKICAgICAgICBoYXZlX3B0aHJlYWRz
PSIkYWN4X3B0aHJlYWRfb2siXSkKLUFNX0NPTkRJVElPTkFMKFtIQVZFX1BUSFJFQURTXSxbdGVz
dCAieCRoYXZlX3B0aHJlYWRzIiA9PSAieHllcyJdKQorQU1fQ09ORElUSU9OQUwoW0hBVkVfUFRI
UkVBRFNdLFt0ZXN0ICJ4JGhhdmVfcHRocmVhZHMiID0gInh5ZXMiXSkKIEFDX1NVQlNUKFBUSFJF
QURfQ0ZMQUdTKQogQUNfU1VCU1QoUFRIUkVBRF9MSUJTKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9kb2NzL0FkdmFuY2VkR3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9kb2NzL0FkdmFuY2VkR3VpZGUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTNhNjUyMDBkYWRiMGEz
YmQ4MWQ2Mjk5YjgwMGZhMzg5MDhmNmY5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2RvY3MvQWR2YW5jZWRHdWlkZS5tZApAQCAtMCwwICsxLDIxODIgQEAKKwor
CitOb3cgdGhhdCB5b3UgaGF2ZSByZWFkIFtQcmltZXJdKFByaW1lci5tZCkgYW5kIGxlYXJuZWQg
aG93IHRvIHdyaXRlIHRlc3RzCit1c2luZyBHb29nbGUgVGVzdCwgaXQncyB0aW1lIHRvIGxlYXJu
IHNvbWUgbmV3IHRyaWNrcy4gVGhpcyBkb2N1bWVudAord2lsbCBzaG93IHlvdSBtb3JlIGFzc2Vy
dGlvbnMgYXMgd2VsbCBhcyBob3cgdG8gY29uc3RydWN0IGNvbXBsZXgKK2ZhaWx1cmUgbWVzc2Fn
ZXMsIHByb3BhZ2F0ZSBmYXRhbCBmYWlsdXJlcywgcmV1c2UgYW5kIHNwZWVkIHVwIHlvdXIKK3Rl
c3QgZml4dHVyZXMsIGFuZCB1c2UgdmFyaW91cyBmbGFncyB3aXRoIHlvdXIgdGVzdHMuCisKKyMg
TW9yZSBBc3NlcnRpb25zICMKKworVGhpcyBzZWN0aW9uIGNvdmVycyBzb21lIGxlc3MgZnJlcXVl
bnRseSB1c2VkLCBidXQgc3RpbGwgc2lnbmlmaWNhbnQsCithc3NlcnRpb25zLgorCisjIyBFeHBs
aWNpdCBTdWNjZXNzIGFuZCBGYWlsdXJlICMjCisKK1RoZXNlIHRocmVlIGFzc2VydGlvbnMgZG8g
bm90IGFjdHVhbGx5IHRlc3QgYSB2YWx1ZSBvciBleHByZXNzaW9uLiBJbnN0ZWFkLAordGhleSBn
ZW5lcmF0ZSBhIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBkaXJlY3RseS4gTGlrZSB0aGUgbWFjcm9zIHRo
YXQgYWN0dWFsbHkKK3BlcmZvcm0gYSB0ZXN0LCB5b3UgbWF5IHN0cmVhbSBhIGN1c3RvbSBmYWls
dXJlIG1lc3NhZ2UgaW50byB0aGUgdGhlbS4KKworfCBgU1VDQ0VFRCgpO2AgfAorfDotLS0tLS0t
LS0tLS0tfAorCitHZW5lcmF0ZXMgYSBzdWNjZXNzLiBUaGlzIGRvZXMgTk9UIG1ha2UgdGhlIG92
ZXJhbGwgdGVzdCBzdWNjZWVkLiBBIHRlc3QgaXMKK2NvbnNpZGVyZWQgc3VjY2Vzc2Z1bCBvbmx5
IGlmIG5vbmUgb2YgaXRzIGFzc2VydGlvbnMgZmFpbCBkdXJpbmcgaXRzIGV4ZWN1dGlvbi4KKwor
Tm90ZTogYFNVQ0NFRUQoKWAgaXMgcHVyZWx5IGRvY3VtZW50YXJ5IGFuZCBjdXJyZW50bHkgZG9l
c24ndCBnZW5lcmF0ZSBhbnkKK3VzZXItdmlzaWJsZSBvdXRwdXQuIEhvd2V2ZXIsIHdlIG1heSBh
ZGQgYFNVQ0NFRUQoKWAgbWVzc2FnZXMgdG8gR29vZ2xlIFRlc3Qncworb3V0cHV0IGluIHRoZSBm
dXR1cmUuCisKK3wgYEZBSUwoKTtgICB8IGBBRERfRkFJTFVSRSgpO2AgfCBgQUREX0ZBSUxVUkVf
QVQoImBfZmlsZVxfcGF0aF9gIiwgYF9saW5lXF9udW1iZXJfYCk7YCB8Cit8Oi0tLS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfAorCitgRkFJTCgpYCBnZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJl
LCB3aGlsZSBgQUREX0ZBSUxVUkUoKWAgYW5kIGBBRERfRkFJTFVSRV9BVCgpYCBnZW5lcmF0ZSBh
IG5vbmZhdGFsCitmYWlsdXJlLiBUaGVzZSBhcmUgdXNlZnVsIHdoZW4gY29udHJvbCBmbG93LCBy
YXRoZXIgdGhhbiBhIEJvb2xlYW4gZXhwcmVzc2lvbiwKK2RldGVyZW1pbmVzIHRoZSB0ZXN0J3Mg
c3VjY2VzcyBvciBmYWlsdXJlLiBGb3IgZXhhbXBsZSwgeW91IG1pZ2h0IHdhbnQgdG8gd3JpdGUK
K3NvbWV0aGluZyBsaWtlOgorCitgYGAKK3N3aXRjaChleHByZXNzaW9uKSB7CisgIGNhc2UgMTog
Li4uIHNvbWUgY2hlY2tzIC4uLgorICBjYXNlIDI6IC4uLiBzb21lIG90aGVyIGNoZWNrcworICAu
Li4KKyAgZGVmYXVsdDogRkFJTCgpIDw8ICJXZSBzaG91bGRuJ3QgZ2V0IGhlcmUuIjsKK30KK2Bg
YAorCitOb3RlOiB5b3UgY2FuIG9ubHkgdXNlIGBGQUlMKClgIGluIGZ1bmN0aW9ucyB0aGF0IHJl
dHVybiBgdm9pZGAuIFNlZSB0aGUgW0Fzc2VydGlvbiBQbGFjZW1lbnQgc2VjdGlvbl0oI2Fzc2Vy
dGlvbi1wbGFjZW1lbnQpIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCitfQXZhaWxhYmlsaXR5Xzog
TGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgRXhjZXB0aW9uIEFzc2VydGlvbnMgIyMKKworVGhl
c2UgYXJlIGZvciB2ZXJpZnlpbmcgdGhhdCBhIHBpZWNlIG9mIGNvZGUgdGhyb3dzIChvciBkb2Vz
IG5vdAordGhyb3cpIGFuIGV4Y2VwdGlvbiBvZiB0aGUgZ2l2ZW4gdHlwZToKKworfCAqKkZhdGFs
IGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0t
LS0tLXwKK3wgYEFTU0VSVF9USFJPVyhgX3N0YXRlbWVudF8sIF9leGNlcHRpb25cX3R5cGVfYCk7
YCAgfCBgRVhQRUNUX1RIUk9XKGBfc3RhdGVtZW50XywgX2V4Y2VwdGlvblxfdHlwZV9gKTtgICB8
IF9zdGF0ZW1lbnRfIHRocm93cyBhbiBleGNlcHRpb24gb2YgdGhlIGdpdmVuIHR5cGUgIHwKK3wg
YEFTU0VSVF9BTllfVEhST1coYF9zdGF0ZW1lbnRfYCk7YCAgICAgICAgICAgICAgICB8IGBFWFBF
Q1RfQU5ZX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAgfCBfc3RhdGVtZW50
XyB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIGFueSB0eXBlICAgICAgICB8Cit8IGBBU1NFUlRfTk9f
VEhST1coYF9zdGF0ZW1lbnRfYCk7YCAgICAgICAgICAgICAgICAgfCBgRVhQRUNUX05PX1RIUk9X
KGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAgIHwgX3N0YXRlbWVudF8gZG9lc24ndCB0
aHJvdyBhbnkgZXhjZXB0aW9uICAgICAgICAgICAgfAorCitFeGFtcGxlczoKKworYGBgCitBU1NF
UlRfVEhST1coRm9vKDUpLCBiYXJfZXhjZXB0aW9uKTsKKworRVhQRUNUX05PX1RIUk9XKHsKKyAg
aW50IG4gPSA1OworICBCYXIoJm4pOworfSk7CitgYGAKKworX0F2YWlsYWJpbGl0eV86IExpbnV4
LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4xLjAuCisKKyMjIFByZWRpY2F0ZSBBc3Nl
cnRpb25zIGZvciBCZXR0ZXIgRXJyb3IgTWVzc2FnZXMgIyMKKworRXZlbiB0aG91Z2ggR29vZ2xl
IFRlc3QgaGFzIGEgcmljaCBzZXQgb2YgYXNzZXJ0aW9ucywgdGhleSBjYW4gbmV2ZXIgYmUKK2Nv
bXBsZXRlLCBhcyBpdCdzIGltcG9zc2libGUgKG5vciBhIGdvb2QgaWRlYSkgdG8gYW50aWNpcGF0
ZSBhbGwgdGhlIHNjZW5hcmlvcworYSB1c2VyIG1pZ2h0IHJ1biBpbnRvLiBUaGVyZWZvcmUsIHNv
bWV0aW1lcyBhIHVzZXIgaGFzIHRvIHVzZSBgRVhQRUNUX1RSVUUoKWAKK3RvIGNoZWNrIGEgY29t
cGxleCBleHByZXNzaW9uLCBmb3IgbGFjayBvZiBhIGJldHRlciBtYWNyby4gVGhpcyBoYXMgdGhl
IHByb2JsZW0KK29mIG5vdCBzaG93aW5nIHlvdSB0aGUgdmFsdWVzIG9mIHRoZSBwYXJ0cyBvZiB0
aGUgZXhwcmVzc2lvbiwgbWFraW5nIGl0IGhhcmQgdG8KK3VuZGVyc3RhbmQgd2hhdCB3ZW50IHdy
b25nLiBBcyBhIHdvcmthcm91bmQsIHNvbWUgdXNlcnMgY2hvb3NlIHRvIGNvbnN0cnVjdCB0aGUK
K2ZhaWx1cmUgbWVzc2FnZSBieSB0aGVtc2VsdmVzLCBzdHJlYW1pbmcgaXQgaW50byBgRVhQRUNU
X1RSVUUoKWAuIEhvd2V2ZXIsIHRoaXMKK2lzIGF3a3dhcmQgZXNwZWNpYWxseSB3aGVuIHRoZSBl
eHByZXNzaW9uIGhhcyBzaWRlLWVmZmVjdHMgb3IgaXMgZXhwZW5zaXZlIHRvCitldmFsdWF0ZS4K
KworR29vZ2xlIFRlc3QgZ2l2ZXMgeW91IHRocmVlIGRpZmZlcmVudCBvcHRpb25zIHRvIHNvbHZl
IHRoaXMgcHJvYmxlbToKKworIyMjIFVzaW5nIGFuIEV4aXN0aW5nIEJvb2xlYW4gRnVuY3Rpb24g
IyMjCisKK0lmIHlvdSBhbHJlYWR5IGhhdmUgYSBmdW5jdGlvbiBvciBhIGZ1bmN0b3IgdGhhdCBy
ZXR1cm5zIGBib29sYCAob3IgYSB0eXBlCit0aGF0IGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRl
ZCB0byBgYm9vbGApLCB5b3UgY2FuIHVzZSBpdCBpbiBhIF9wcmVkaWNhdGUKK2Fzc2VydGlvbl8g
dG8gZ2V0IHRoZSBmdW5jdGlvbiBhcmd1bWVudHMgcHJpbnRlZCBmb3IgZnJlZToKKworfCAqKkZh
dGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8
Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLXwKK3wgYEFTU0VSVF9QUkVEMShgX3ByZWQxLCB2YWwxX2ApO2AgICAgICAgfCBgRVhQ
RUNUX1BSRUQxKGBfcHJlZDEsIHZhbDFfYCk7YCB8IF9wcmVkMSh2YWwxKV8gcmV0dXJucyB0cnVl
IHwKK3wgYEFTU0VSVF9QUkVEMihgX3ByZWQyLCB2YWwxLCB2YWwyX2ApO2AgfCBgRVhQRUNUX1BS
RUQyKGBfcHJlZDIsIHZhbDEsIHZhbDJfYCk7YCB8ICBfcHJlZDIodmFsMSwgdmFsMilfIHJldHVy
bnMgdHJ1ZSB8Cit8ICAuLi4gICAgICAgICAgICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAg
IHwgLi4uICAgICAgICAgIHwKKworSW4gdGhlIGFib3ZlLCBfcHJlZG5fIGlzIGFuIF9uXy1hcnkg
cHJlZGljYXRlIGZ1bmN0aW9uIG9yIGZ1bmN0b3IsIHdoZXJlCitfdmFsMV8sIF92YWwyXywgLi4u
LCBhbmQgX3ZhbG5fIGFyZSBpdHMgYXJndW1lbnRzLiBUaGUgYXNzZXJ0aW9uIHN1Y2NlZWRzCitp
ZiB0aGUgcHJlZGljYXRlIHJldHVybnMgYHRydWVgIHdoZW4gYXBwbGllZCB0byB0aGUgZ2l2ZW4g
YXJndW1lbnRzLCBhbmQgZmFpbHMKK290aGVyd2lzZS4gV2hlbiB0aGUgYXNzZXJ0aW9uIGZhaWxz
LCBpdCBwcmludHMgdGhlIHZhbHVlIG9mIGVhY2ggYXJndW1lbnQuIEluCitlaXRoZXIgY2FzZSwg
dGhlIGFyZ3VtZW50cyBhcmUgZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4KKworSGVyZSdzIGFuIGV4
YW1wbGUuIEdpdmVuCisKK2BgYAorLy8gUmV0dXJucyB0cnVlIGlmZiBtIGFuZCBuIGhhdmUgbm8g
Y29tbW9uIGRpdmlzb3JzIGV4Y2VwdCAxLgorYm9vbCBNdXR1YWxseVByaW1lKGludCBtLCBpbnQg
bikgeyAuLi4gfQorY29uc3QgaW50IGEgPSAzOworY29uc3QgaW50IGIgPSA0OworY29uc3QgaW50
IGMgPSAxMDsKK2BgYAorCit0aGUgYXNzZXJ0aW9uIGBFWFBFQ1RfUFJFRDIoTXV0dWFsbHlQcmlt
ZSwgYSwgYik7YCB3aWxsIHN1Y2NlZWQsIHdoaWxlIHRoZQorYXNzZXJ0aW9uIGBFWFBFQ1RfUFJF
RDIoTXV0dWFsbHlQcmltZSwgYiwgYyk7YCB3aWxsIGZhaWwgd2l0aCB0aGUgbWVzc2FnZQorCis8
cHJlPgorIU11dHVhbGx5UHJpbWUoYiwgYykgaXMgZmFsc2UsIHdoZXJlPGJyPgorYiBpcyA0PGJy
PgorYyBpcyAxMDxicj4KKzwvcHJlPgorCisqKk5vdGVzOioqCisKKyAgMS4gSWYgeW91IHNlZSBh
IGNvbXBpbGVyIGVycm9yICJubyBtYXRjaGluZyBmdW5jdGlvbiB0byBjYWxsIiB3aGVuIHVzaW5n
IGBBU1NFUlRfUFJFRCpgIG9yIGBFWFBFQ1RfUFJFRCpgLCBwbGVhc2Ugc2VlIFt0aGlzIEZBUV0o
RkFRLm1kI3RoZS1jb21waWxlci1jb21wbGFpbnMtbm8tbWF0Y2hpbmctZnVuY3Rpb24tdG8tY2Fs
bC13aGVuLWktdXNlLWFzc2VydF9wcmVkbi1ob3ctZG8taS1maXgtaXQpIGZvciBob3cgdG8gcmVz
b2x2ZSBpdC4KKyAgMS4gQ3VycmVudGx5IHdlIG9ubHkgcHJvdmlkZSBwcmVkaWNhdGUgYXNzZXJ0
aW9ucyBvZiBhcml0eSA8PSA1LiBJZiB5b3UgbmVlZCBhIGhpZ2hlci1hcml0eSBhc3NlcnRpb24s
IGxldCB1cyBrbm93LgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYworCisj
IyMgVXNpbmcgYSBGdW5jdGlvbiBUaGF0IFJldHVybnMgYW4gQXNzZXJ0aW9uUmVzdWx0ICMjIwor
CitXaGlsZSBgRVhQRUNUX1BSRUQqKClgIGFuZCBmcmllbmRzIGFyZSBoYW5keSBmb3IgYSBxdWlj
ayBqb2IsIHRoZQorc3ludGF4IGlzIG5vdCBzYXRpc2ZhY3Rvcnk6IHlvdSBoYXZlIHRvIHVzZSBk
aWZmZXJlbnQgbWFjcm9zIGZvcgorZGlmZmVyZW50IGFyaXRpZXMsIGFuZCBpdCBmZWVscyBtb3Jl
IGxpa2UgTGlzcCB0aGFuIEMrKy4gIFRoZQorYDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0YCBj
bGFzcyBzb2x2ZXMgdGhpcyBwcm9ibGVtLgorCitBbiBgQXNzZXJ0aW9uUmVzdWx0YCBvYmplY3Qg
cmVwcmVzZW50cyB0aGUgcmVzdWx0IG9mIGFuIGFzc2VydGlvbgorKHdoZXRoZXIgaXQncyBhIHN1
Y2Nlc3Mgb3IgYSBmYWlsdXJlLCBhbmQgYW4gYXNzb2NpYXRlZCBtZXNzYWdlKS4gIFlvdQorY2Fu
IGNyZWF0ZSBhbiBgQXNzZXJ0aW9uUmVzdWx0YCB1c2luZyBvbmUgb2YgdGhlc2UgZmFjdG9yeQor
ZnVuY3Rpb25zOgorCitgYGAKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworLy8gUmV0dXJucyBhbiBB
c3NlcnRpb25SZXN1bHQgb2JqZWN0IHRvIGluZGljYXRlIHRoYXQgYW4gYXNzZXJ0aW9uIGhhcwor
Ly8gc3VjY2VlZGVkLgorQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvblN1Y2Nlc3MoKTsKKworLy8g
UmV0dXJucyBhbiBBc3NlcnRpb25SZXN1bHQgb2JqZWN0IHRvIGluZGljYXRlIHRoYXQgYW4gYXNz
ZXJ0aW9uIGhhcworLy8gZmFpbGVkLgorQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvbkZhaWx1cmUo
KTsKKworfQorYGBgCisKK1lvdSBjYW4gdGhlbiB1c2UgdGhlIGA8PGAgb3BlcmF0b3IgdG8gc3Ry
ZWFtIG1lc3NhZ2VzIHRvIHRoZQorYEFzc2VydGlvblJlc3VsdGAgb2JqZWN0LgorCitUbyBwcm92
aWRlIG1vcmUgcmVhZGFibGUgbWVzc2FnZXMgaW4gQm9vbGVhbiBhc3NlcnRpb25zCisoZS5nLiBg
RVhQRUNUX1RSVUUoKWApLCB3cml0ZSBhIHByZWRpY2F0ZSBmdW5jdGlvbiB0aGF0IHJldHVybnMK
K2BBc3NlcnRpb25SZXN1bHRgIGluc3RlYWQgb2YgYGJvb2xgLiBGb3IgZXhhbXBsZSwgaWYgeW91
IGRlZmluZQorYElzRXZlbigpYCBhczoKKworYGBgCis6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3Vs
dCBJc0V2ZW4oaW50IG4pIHsKKyAgaWYgKChuICUgMikgPT0gMCkKKyAgICByZXR1cm4gOjp0ZXN0
aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CisgIGVsc2UKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjpB
c3NlcnRpb25GYWlsdXJlKCkgPDwgbiA8PCAiIGlzIG9kZCI7Cit9CitgYGAKKworaW5zdGVhZCBv
ZjoKKworYGBgCitib29sIElzRXZlbihpbnQgbikgeworICByZXR1cm4gKG4gJSAyKSA9PSAwOwor
fQorYGBgCisKK3RoZSBmYWlsZWQgYXNzZXJ0aW9uIGBFWFBFQ1RfVFJVRShJc0V2ZW4oRmliKDQp
KSlgIHdpbGwgcHJpbnQ6CisKKzxwcmU+CitWYWx1ZSBvZjogSXNFdmVuKEZpYig0KSk8YnI+CitB
Y3R1YWw6IGZhbHNlICgqMyBpcyBvZGQqKTxicj4KK0V4cGVjdGVkOiB0cnVlPGJyPgorPC9wcmU+
CisKK2luc3RlYWQgb2YgYSBtb3JlIG9wYXF1ZQorCis8cHJlPgorVmFsdWUgb2Y6IElzRXZlbihG
aWIoNCkpPGJyPgorQWN0dWFsOiBmYWxzZTxicj4KK0V4cGVjdGVkOiB0cnVlPGJyPgorPC9wcmU+
CisKK0lmIHlvdSB3YW50IGluZm9ybWF0aXZlIG1lc3NhZ2VzIGluIGBFWFBFQ1RfRkFMU0VgIGFu
ZCBgQVNTRVJUX0ZBTFNFYAorYXMgd2VsbCwgYW5kIGFyZSBmaW5lIHdpdGggbWFraW5nIHRoZSBw
cmVkaWNhdGUgc2xvd2VyIGluIHRoZSBzdWNjZXNzCitjYXNlLCB5b3UgY2FuIHN1cHBseSBhIHN1
Y2Nlc3MgbWVzc2FnZToKKworYGBgCis6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBJc0V2ZW4o
aW50IG4pIHsKKyAgaWYgKChuICUgMikgPT0gMCkKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3Nl
cnRpb25TdWNjZXNzKCkgPDwgbiA8PCAiIGlzIGV2ZW4iOworICBlbHNlCisgICAgcmV0dXJuIDo6
dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG4gPDwgIiBpcyBvZGQiOworfQorYGBgCisK
K1RoZW4gdGhlIHN0YXRlbWVudCBgRVhQRUNUX0ZBTFNFKElzRXZlbihGaWIoNikpKWAgd2lsbCBw
cmludAorCis8cHJlPgorVmFsdWUgb2Y6IElzRXZlbihGaWIoNikpPGJyPgorQWN0dWFsOiB0cnVl
ICg4IGlzIGV2ZW4pPGJyPgorRXhwZWN0ZWQ6IGZhbHNlPGJyPgorPC9wcmU+CisKK19BdmFpbGFi
aWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuNC4xLgorCisjIyMg
VXNpbmcgYSBQcmVkaWNhdGUtRm9ybWF0dGVyICMjIworCitJZiB5b3UgZmluZCB0aGUgZGVmYXVs
dCBtZXNzYWdlIGdlbmVyYXRlZCBieSBgKEFTU0VSVHxFWFBFQ1QpX1BSRUQqYCBhbmQKK2AoQVNT
RVJUfEVYUEVDVClfKFRSVUV8RkFMU0UpYCB1bnNhdGlzZmFjdG9yeSwgb3Igc29tZSBhcmd1bWVu
dHMgdG8geW91cgorcHJlZGljYXRlIGRvIG5vdCBzdXBwb3J0IHN0cmVhbWluZyB0byBgb3N0cmVh
bWAsIHlvdSBjYW4gaW5zdGVhZCB1c2UgdGhlCitmb2xsb3dpbmcgX3ByZWRpY2F0ZS1mb3JtYXR0
ZXIgYXNzZXJ0aW9uc18gdG8gX2Z1bGx5XyBjdXN0b21pemUgaG93IHRoZQorbWVzc2FnZSBpcyBm
b3JtYXR0ZWQ6CisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9u
KiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfUFJFRF9GT1JNQVQxKGBfcHJl
ZFxfZm9ybWF0MSwgdmFsMV9gKTtgICAgICAgICB8IGBFWFBFQ1RfUFJFRF9GT1JNQVQxKGBfcHJl
ZFxfZm9ybWF0MSwgdmFsMV9gKTtgIHwgX3ByZWRcX2Zvcm1hdDEodmFsMSlfIGlzIHN1Y2Nlc3Nm
dWwgfAorfCBgQVNTRVJUX1BSRURfRk9STUFUMihgX3ByZWRcX2Zvcm1hdDIsIHZhbDEsIHZhbDJf
YCk7YCB8IGBFWFBFQ1RfUFJFRF9GT1JNQVQyKGBfcHJlZFxfZm9ybWF0MiwgdmFsMSwgdmFsMl9g
KTtgIHwgX3ByZWRcX2Zvcm1hdDIodmFsMSwgdmFsMilfIGlzIHN1Y2Nlc3NmdWwgfAorfCBgLi4u
YCAgICAgICAgICAgICAgIHwgYC4uLmAgICAgICAgICAgICAgICAgICB8IGAuLi5gICAgICAgICB8
CisKK1RoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBhbmQgdGhlIHByZXZpb3VzIHR3byBncm91
cHMgb2YgbWFjcm9zIGlzIHRoYXQgaW5zdGVhZCBvZgorYSBwcmVkaWNhdGUsIGAoQVNTRVJUfEVY
UEVDVClfUFJFRF9GT1JNQVQqYCB0YWtlIGEgX3ByZWRpY2F0ZS1mb3JtYXR0ZXJfCisoX3ByZWRc
X2Zvcm1hdG5fKSwgd2hpY2ggaXMgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHdpdGggdGhlIHNpZ25h
dHVyZToKKworYDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRpY2F0ZUZvcm1hdHRlcm4o
Y29uc3QgY2hhciogYF9leHByMV9gLCBjb25zdCBjaGFyKiBgX2V4cHIyX2AsIC4uLiBjb25zdCBj
aGFyKiBgX2V4cHJuX2AsIFQxIGBfdmFsMV9gLCBUMiBgX3ZhbDJfYCwgLi4uIFRuIGBfdmFsbl9g
KTtgCisKK3doZXJlIF92YWwxXywgX3ZhbDJfLCAuLi4sIGFuZCBfdmFsbl8gYXJlIHRoZSB2YWx1
ZXMgb2YgdGhlIHByZWRpY2F0ZQorYXJndW1lbnRzLCBhbmQgX2V4cHIxXywgX2V4cHIyXywgLi4u
LCBhbmQgX2V4cHJuXyBhcmUgdGhlIGNvcnJlc3BvbmRpbmcKK2V4cHJlc3Npb25zIGFzIHRoZXkg
YXBwZWFyIGluIHRoZSBzb3VyY2UgY29kZS4gVGhlIHR5cGVzIGBUMWAsIGBUMmAsIC4uLiwgYW5k
CitgVG5gIGNhbiBiZSBlaXRoZXIgdmFsdWUgdHlwZXMgb3IgcmVmZXJlbmNlIHR5cGVzLiBGb3Ig
ZXhhbXBsZSwgaWYgYW4KK2FyZ3VtZW50IGhhcyB0eXBlIGBGb29gLCB5b3UgY2FuIGRlY2xhcmUg
aXQgYXMgZWl0aGVyIGBGb29gIG9yIGBjb25zdCBGb28mYCwKK3doaWNoZXZlciBpcyBhcHByb3By
aWF0ZS4KKworQSBwcmVkaWNhdGUtZm9ybWF0dGVyIHJldHVybnMgYSBgOjp0ZXN0aW5nOjpBc3Nl
cnRpb25SZXN1bHRgIG9iamVjdCB0byBpbmRpY2F0ZQord2hldGhlciB0aGUgYXNzZXJ0aW9uIGhh
cyBzdWNjZWVkZWQgb3Igbm90LiBUaGUgb25seSB3YXkgdG8gY3JlYXRlIHN1Y2ggYW4KK29iamVj
dCBpcyB0byBjYWxsIG9uZSBvZiB0aGVzZSBmYWN0b3J5IGZ1bmN0aW9uczoKKworQXMgYW4gZXhh
bXBsZSwgbGV0J3MgaW1wcm92ZSB0aGUgZmFpbHVyZSBtZXNzYWdlIGluIHRoZSBwcmV2aW91cyBl
eGFtcGxlLCB3aGljaCB1c2VzIGBFWFBFQ1RfUFJFRDIoKWA6CisKK2BgYAorLy8gUmV0dXJucyB0
aGUgc21hbGxlc3QgcHJpbWUgY29tbW9uIGRpdmlzb3Igb2YgbSBhbmQgbiwKKy8vIG9yIDEgd2hl
biBtIGFuZCBuIGFyZSBtdXR1YWxseSBwcmltZS4KK2ludCBTbWFsbGVzdFByaW1lQ29tbW9uRGl2
aXNvcihpbnQgbSwgaW50IG4pIHsgLi4uIH0KKworLy8gQSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZv
ciBhc3NlcnRpbmcgdGhhdCB0d28gaW50ZWdlcnMgYXJlIG11dHVhbGx5IHByaW1lLgorOjp0ZXN0
aW5nOjpBc3NlcnRpb25SZXN1bHQgQXNzZXJ0TXV0dWFsbHlQcmltZShjb25zdCBjaGFyKiBtX2V4
cHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIG5fZXhwciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IG0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBuKSB7CisgIGlmIChNdXR1YWxseVByaW1lKG0sIG4pKQorICAgIHJldHVybiA6OnRl
c3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKKworICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRp
b25GYWlsdXJlKCkKKyAgICAgIDw8IG1fZXhwciA8PCAiIGFuZCAiIDw8IG5fZXhwciA8PCAiICgi
IDw8IG0gPDwgIiBhbmQgIiA8PCBuCisgICAgICA8PCAiKSBhcmUgbm90IG11dHVhbGx5IHByaW1l
LCAiIDw8ICJhcyB0aGV5IGhhdmUgYSBjb21tb24gZGl2aXNvciAiCisgICAgICA8PCBTbWFsbGVz
dFByaW1lQ29tbW9uRGl2aXNvcihtLCBuKTsKK30KK2BgYAorCitXaXRoIHRoaXMgcHJlZGljYXRl
LWZvcm1hdHRlciwgd2UgY2FuIHVzZQorCitgYGAKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoQXNzZXJ0
TXV0dWFsbHlQcmltZSwgYiwgYyk7CitgYGAKKwordG8gZ2VuZXJhdGUgdGhlIG1lc3NhZ2UKKwor
PHByZT4KK2IgYW5kIGMgKDQgYW5kIDEwKSBhcmUgbm90IG11dHVhbGx5IHByaW1lLCBhcyB0aGV5
IGhhdmUgYSBjb21tb24gZGl2aXNvciAyLjxicj4KKzwvcHJlPgorCitBcyB5b3UgbWF5IGhhdmUg
cmVhbGl6ZWQsIG1hbnkgb2YgdGhlIGFzc2VydGlvbnMgd2UgaW50cm9kdWNlZCBlYXJsaWVyIGFy
ZQorc3BlY2lhbCBjYXNlcyBvZiBgKEVYUEVDVHxBU1NFUlQpX1BSRURfRk9STUFUKmAuIEluIGZh
Y3QsIG1vc3Qgb2YgdGhlbSBhcmUKK2luZGVlZCBkZWZpbmVkIHVzaW5nIGAoRVhQRUNUfEFTU0VS
VClfUFJFRF9GT1JNQVQqYC4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKKworIyMgRmxvYXRpbmctUG9pbnQgQ29tcGFyaXNvbiAjIworCitDb21wYXJpbmcgZmxvYXRp
bmctcG9pbnQgbnVtYmVycyBpcyB0cmlja3kuIER1ZSB0byByb3VuZC1vZmYgZXJyb3JzLCBpdCBp
cwordmVyeSB1bmxpa2VseSB0aGF0IHR3byBmbG9hdGluZy1wb2ludHMgd2lsbCBtYXRjaCBleGFj
dGx5LiBUaGVyZWZvcmUsCitgQVNTRVJUX0VRYCAncyBuYWl2ZSBjb21wYXJpc29uIHVzdWFsbHkg
ZG9lc24ndCB3b3JrLiBBbmQgc2luY2UgZmxvYXRpbmctcG9pbnRzCitjYW4gaGF2ZSBhIHdpZGUg
dmFsdWUgcmFuZ2UsIG5vIHNpbmdsZSBmaXhlZCBlcnJvciBib3VuZCB3b3Jrcy4gSXQncyBiZXR0
ZXIgdG8KK2NvbXBhcmUgYnkgYSBmaXhlZCByZWxhdGl2ZSBlcnJvciBib3VuZCwgZXhjZXB0IGZv
ciB2YWx1ZXMgY2xvc2UgdG8gMCBkdWUgdG8KK3RoZSBsb3NzIG9mIHByZWNpc2lvbiB0aGVyZS4K
KworSW4gZ2VuZXJhbCwgZm9yIGZsb2F0aW5nLXBvaW50IGNvbXBhcmlzb24gdG8gbWFrZSBzZW5z
ZSwgdGhlIHVzZXIgbmVlZHMgdG8KK2NhcmVmdWxseSBjaG9vc2UgdGhlIGVycm9yIGJvdW5kLiBJ
ZiB0aGV5IGRvbid0IHdhbnQgb3IgY2FyZSB0bywgY29tcGFyaW5nIGluCit0ZXJtcyBvZiBVbml0
cyBpbiB0aGUgTGFzdCBQbGFjZSAoVUxQcykgaXMgYSBnb29kIGRlZmF1bHQsIGFuZCBHb29nbGUg
VGVzdAorcHJvdmlkZXMgYXNzZXJ0aW9ucyB0byBkbyB0aGlzLiBGdWxsIGRldGFpbHMgYWJvdXQg
VUxQcyBhcmUgcXVpdGUgbG9uZzsgaWYgeW91Cit3YW50IHRvIGxlYXJuIG1vcmUsIHNlZQorW3Ro
aXMgYXJ0aWNsZSBvbiBmbG9hdCBjb21wYXJpc29uXShodHRwOi8vd3d3LmN5Z251cy1zb2Z0d2Fy
ZS5jb20vcGFwZXJzL2NvbXBhcmluZ2Zsb2F0cy9jb21wYXJpbmdmbG9hdHMuaHRtKS4KKworIyMj
IEZsb2F0aW5nLVBvaW50IE1hY3JvcyAjIyMKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipO
b25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9G
TE9BVF9FUShgX3ZhbDEsIHZhbDJfYCk7YCAgfCBgRVhQRUNUX0ZMT0FUX0VRKGBfdmFsMSwgdmFs
Ml9gKTtgIHwgdGhlIHR3byBgZmxvYXRgIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsIHwKK3wgYEFT
U0VSVF9ET1VCTEVfRVEoYF92YWwxLCB2YWwyX2ApO2AgfCBgRVhQRUNUX0RPVUJMRV9FUShgX3Zh
bDEsIHZhbDJfYCk7YCB8IHRoZSB0d28gYGRvdWJsZWAgdmFsdWVzIGFyZSBhbG1vc3QgZXF1YWwg
fAorCitCeSAiYWxtb3N0IGVxdWFsIiwgd2UgbWVhbiB0aGUgdHdvIHZhbHVlcyBhcmUgd2l0aGlu
IDQgVUxQJ3MgZnJvbSBlYWNoCitvdGhlci4KKworVGhlIGZvbGxvd2luZyBhc3NlcnRpb25zIGFs
bG93IHlvdSB0byBjaG9vc2UgdGhlIGFjY2VwdGFibGUgZXJyb3IgYm91bmQ6CisKK3wgKipGYXRh
bCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAor
fDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS18Cit8IGBBU1NFUlRfTkVBUihgX3ZhbDEsIHZhbDIsIGFic1xfZXJyb3JfYCk7YCB8IGBF
WFBFQ1RfTkVBUmBfKHZhbDEsIHZhbDIsIGFic1xfZXJyb3JfYCk7YCB8IHRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gX3ZhbDFfIGFuZCBfdmFsMl8gZG9lc24ndCBleGNlZWQgdGhlIGdpdmVuIGFic29s
dXRlIGVycm9yIHwKKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMj
IyBGbG9hdGluZy1Qb2ludCBQcmVkaWNhdGUtRm9ybWF0IEZ1bmN0aW9ucyAjIyMKKworU29tZSBm
bG9hdGluZy1wb2ludCBvcGVyYXRpb25zIGFyZSB1c2VmdWwsIGJ1dCBub3QgdGhhdCBvZnRlbiB1
c2VkLiBJbiBvcmRlcgordG8gYXZvaWQgYW4gZXhwbG9zaW9uIG9mIG5ldyBtYWNyb3MsIHdlIHBy
b3ZpZGUgdGhlbSBhcyBwcmVkaWNhdGUtZm9ybWF0CitmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNl
ZCBpbiBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3JvcyAoZS5nLgorYEVYUEVDVF9QUkVEX0ZPUk1B
VDJgLCBldGMpLgorCitgYGAKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpGbG9hdExF
LCB2YWwxLCB2YWwyKTsKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpEb3VibGVMRSwg
dmFsMSwgdmFsMik7CitgYGAKKworVmVyaWZpZXMgdGhhdCBfdmFsMV8gaXMgbGVzcyB0aGFuLCBv
ciBhbG1vc3QgZXF1YWwgdG8sIF92YWwyXy4gWW91IGNhbgorcmVwbGFjZSBgRVhQRUNUX1BSRURf
Rk9STUFUMmAgaW4gdGhlIGFib3ZlIHRhYmxlIHdpdGggYEFTU0VSVF9QUkVEX0ZPUk1BVDJgLgor
CitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgV2luZG93cyBIUkVT
VUxUIGFzc2VydGlvbnMgIyMKKworVGhlc2UgYXNzZXJ0aW9ucyB0ZXN0IGZvciBgSFJFU1VMVGAg
c3VjY2VzcyBvciBmYWlsdXJlLgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFs
IGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX0hSRVNVTFRf
U1VDQ0VFREVEKGBfZXhwcmVzc2lvbl9gKTtgIHwgYEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChg
X2V4cHJlc3Npb25fYCk7YCB8IF9leHByZXNzaW9uXyBpcyBhIHN1Y2Nlc3MgYEhSRVNVTFRgIHwK
K3wgYEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChgX2V4cHJlc3Npb25fYCk7YCAgICB8IGBFWFBFQ1Rf
SFJFU1VMVF9GQUlMRUQoYF9leHByZXNzaW9uX2ApO2AgICAgfCBfZXhwcmVzc2lvbl8gaXMgYSBm
YWlsdXJlIGBIUkVTVUxUYCB8CisKK1RoZSBnZW5lcmF0ZWQgb3V0cHV0IGNvbnRhaW5zIHRoZSBo
dW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlCithc3NvY2lhdGVkIHdpdGggdGhlIGBIUkVTVUxU
YCBjb2RlIHJldHVybmVkIGJ5IF9leHByZXNzaW9uXy4KKworWW91IG1pZ2h0IHVzZSB0aGVtIGxp
a2UgdGhpczoKKworYGBgCitDQ29tUHRyIHNoZWxsOworQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVE
KHNoZWxsLkNvQ3JlYXRlSW5zdGFuY2UoTCJTaGVsbC5BcHBsaWNhdGlvbiIpKTsKK0NDb21WYXJp
YW50IGVtcHR5OworQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKHNoZWxsLT5TaGVsbEV4ZWN1dGUo
Q0NvbUJTVFIodXJsKSwgZW1wdHksIGVtcHR5LCBlbXB0eSwgZW1wdHkpKTsKK2BgYAorCitfQXZh
aWxhYmlsaXR5XzogV2luZG93cy4KKworIyMgVHlwZSBBc3NlcnRpb25zICMjCisKK1lvdSBjYW4g
Y2FsbCB0aGUgZnVuY3Rpb24KK2BgYAorOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8VDEs
IFQyPigpOworYGBgCit0byBhc3NlcnQgdGhhdCB0eXBlcyBgVDFgIGFuZCBgVDJgIGFyZSB0aGUg
c2FtZS4gIFRoZSBmdW5jdGlvbiBkb2VzCitub3RoaW5nIGlmIHRoZSBhc3NlcnRpb24gaXMgc2F0
aXNmaWVkLiAgSWYgdGhlIHR5cGVzIGFyZSBkaWZmZXJlbnQsCit0aGUgZnVuY3Rpb24gY2FsbCB3
aWxsIGZhaWwgdG8gY29tcGlsZSwgYW5kIHRoZSBjb21waWxlciBlcnJvciBtZXNzYWdlCit3aWxs
IGxpa2VseSAoZGVwZW5kaW5nIG9uIHRoZSBjb21waWxlcikgc2hvdyB5b3UgdGhlIGFjdHVhbCB2
YWx1ZXMgb2YKK2BUMWAgYW5kIGBUMmAuICBUaGlzIGlzIG1haW5seSB1c2VmdWwgaW5zaWRlIHRl
bXBsYXRlIGNvZGUuCisKK19DYXZlYXQ6XyBXaGVuIHVzZWQgaW5zaWRlIGEgbWVtYmVyIGZ1bmN0
aW9uIG9mIGEgY2xhc3MgdGVtcGxhdGUgb3IgYQorZnVuY3Rpb24gdGVtcGxhdGUsIGBTdGF0aWNB
c3NlcnRUeXBlRXE8VDEsIFQyPigpYCBpcyBlZmZlY3RpdmUgX29ubHkgaWZfCit0aGUgZnVuY3Rp
b24gaXMgaW5zdGFudGlhdGVkLiAgRm9yIGV4YW1wbGUsIGdpdmVuOgorYGBgCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MgRm9vIHsKKyBwdWJsaWM6CisgIHZvaWQgQmFyKCkgeyA6OnRlc3Rp
bmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIFQ+KCk7IH0KK307CitgYGAKK3RoZSBjb2RlOgor
YGBgCit2b2lkIFRlc3QxKCkgeyBGb288Ym9vbD4gZm9vOyB9CitgYGAKK3dpbGwgX25vdF8gZ2Vu
ZXJhdGUgYSBjb21waWxlciBlcnJvciwgYXMgYEZvbzxib29sPjo6QmFyKClgIGlzIG5ldmVyCith
Y3R1YWxseSBpbnN0YW50aWF0ZWQuICBJbnN0ZWFkLCB5b3UgbmVlZDoKK2BgYAordm9pZCBUZXN0
MigpIHsgRm9vPGJvb2w+IGZvbzsgZm9vLkJhcigpOyB9CitgYGAKK3RvIGNhdXNlIGEgY29tcGls
ZXIgZXJyb3IuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2
ZXJzaW9uIDEuMy4wLgorCisjIyBBc3NlcnRpb24gUGxhY2VtZW50ICMjCisKK1lvdSBjYW4gdXNl
IGFzc2VydGlvbnMgaW4gYW55IEMrKyBmdW5jdGlvbi4gSW4gcGFydGljdWxhciwgaXQgZG9lc24n
dAoraGF2ZSB0byBiZSBhIG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLiBUaGUgb25l
IGNvbnN0cmFpbnQgaXMKK3RoYXQgYXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIGEgZmF0YWwgZmFp
bHVyZSAoYEZBSUwqYCBhbmQgYEFTU0VSVF8qYCkKK2NhbiBvbmx5IGJlIHVzZWQgaW4gdm9pZC1y
ZXR1cm5pbmcgZnVuY3Rpb25zLiBUaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2YKK0dvb2dsZSBUZXN0
IG5vdCB1c2luZyBleGNlcHRpb25zLiBCeSBwbGFjaW5nIGl0IGluIGEgbm9uLXZvaWQgZnVuY3Rp
b24KK3lvdSdsbCBnZXQgYSBjb25mdXNpbmcgY29tcGlsZSBlcnJvciBsaWtlCitgImVycm9yOiB2
b2lkIHZhbHVlIG5vdCBpZ25vcmVkIGFzIGl0IG91Z2h0IHRvIGJlImAuCisKK0lmIHlvdSBuZWVk
IHRvIHVzZSBhc3NlcnRpb25zIGluIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIG5vbi12b2lkLCBv
bmUgb3B0aW9uCitpcyB0byBtYWtlIHRoZSBmdW5jdGlvbiByZXR1cm4gdGhlIHZhbHVlIGluIGFu
IG91dCBwYXJhbWV0ZXIgaW5zdGVhZC4gRm9yCitleGFtcGxlLCB5b3UgY2FuIHJld3JpdGUgYFQy
IEZvbyhUMSB4KWAgdG8gYHZvaWQgRm9vKFQxIHgsIFQyKiByZXN1bHQpYC4gWW91CituZWVkIHRv
IG1ha2Ugc3VyZSB0aGF0IGAqcmVzdWx0YCBjb250YWlucyBzb21lIHNlbnNpYmxlIHZhbHVlIGV2
ZW4gd2hlbiB0aGUKK2Z1bmN0aW9uIHJldHVybnMgcHJlbWF0dXJlbHkuIEFzIHRoZSBmdW5jdGlv
biBub3cgcmV0dXJucyBgdm9pZGAsIHlvdSBjYW4gdXNlCithbnkgYXNzZXJ0aW9uIGluc2lkZSBv
ZiBpdC4KKworSWYgY2hhbmdpbmcgdGhlIGZ1bmN0aW9uJ3MgdHlwZSBpcyBub3QgYW4gb3B0aW9u
LCB5b3Ugc2hvdWxkIGp1c3QgdXNlCithc3NlcnRpb25zIHRoYXQgZ2VuZXJhdGUgbm9uLWZhdGFs
IGZhaWx1cmVzLCBzdWNoIGFzIGBBRERfRkFJTFVSRSpgIGFuZAorYEVYUEVDVF8qYC4KKworX05v
dGVfOiBDb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzIGFyZSBub3QgY29uc2lkZXJlZCB2b2lk
LXJldHVybmluZworZnVuY3Rpb25zLCBhY2NvcmRpbmcgdG8gdGhlIEMrKyBsYW5ndWFnZSBzcGVj
aWZpY2F0aW9uLCBhbmQgc28geW91IG1heSBub3QgdXNlCitmYXRhbCBhc3NlcnRpb25zIGluIHRo
ZW0uIFlvdSdsbCBnZXQgYSBjb21waWxhdGlvbiBlcnJvciBpZiB5b3UgdHJ5LiBBIHNpbXBsZQor
d29ya2Fyb3VuZCBpcyB0byB0cmFuc2ZlciB0aGUgZW50aXJlIGJvZHkgb2YgdGhlIGNvbnN0cnVj
dG9yIG9yIGRlc3RydWN0b3IgdG8gYQorcHJpdmF0ZSB2b2lkLXJldHVybmluZyBtZXRob2QuIEhv
d2V2ZXIsIHlvdSBzaG91bGQgYmUgYXdhcmUgdGhhdCBhIGZhdGFsCithc3NlcnRpb24gZmFpbHVy
ZSBpbiBhIGNvbnN0cnVjdG9yIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUgY3VycmVudCB0ZXN0LCBh
cyB5b3VyCitpbnR1aXRpb24gbWlnaHQgc3VnZ2VzdDsgaXQgbWVyZWx5IHJldHVybnMgZnJvbSB0
aGUgY29uc3RydWN0b3IgZWFybHksIHBvc3NpYmx5CitsZWF2aW5nIHlvdXIgb2JqZWN0IGluIGEg
cGFydGlhbGx5LWNvbnN0cnVjdGVkIHN0YXRlLiBMaWtld2lzZSwgYSBmYXRhbAorYXNzZXJ0aW9u
IGZhaWx1cmUgaW4gYSBkZXN0cnVjdG9yIG1heSBsZWF2ZSB5b3VyIG9iamVjdCBpbiBhCitwYXJ0
aWFsbHktZGVzdHJ1Y3RlZCBzdGF0ZS4gVXNlIGFzc2VydGlvbnMgY2FyZWZ1bGx5IGluIHRoZXNl
IHNpdHVhdGlvbnMhCisKKyMgVGVhY2hpbmcgR29vZ2xlIFRlc3QgSG93IHRvIFByaW50IFlvdXIg
VmFsdWVzICMKKworV2hlbiBhIHRlc3QgYXNzZXJ0aW9uIHN1Y2ggYXMgYEVYUEVDVF9FUWAgZmFp
bHMsIEdvb2dsZSBUZXN0IHByaW50cyB0aGUKK2FyZ3VtZW50IHZhbHVlcyB0byBoZWxwIHlvdSBk
ZWJ1Zy4gIEl0IGRvZXMgdGhpcyB1c2luZyBhCit1c2VyLWV4dGVuc2libGUgdmFsdWUgcHJpbnRl
ci4KKworVGhpcyBwcmludGVyIGtub3dzIGhvdyB0byBwcmludCBidWlsdC1pbiBDKysgdHlwZXMs
IG5hdGl2ZSBhcnJheXMsIFNUTAorY29udGFpbmVycywgYW5kIGFueSB0eXBlIHRoYXQgc3VwcG9y
dHMgdGhlIGA8PGAgb3BlcmF0b3IuICBGb3Igb3RoZXIKK3R5cGVzLCBpdCBwcmludHMgdGhlIHJh
dyBieXRlcyBpbiB0aGUgdmFsdWUgYW5kIGhvcGVzIHRoYXQgeW91IHRoZQordXNlciBjYW4gZmln
dXJlIGl0IG91dC4KKworQXMgbWVudGlvbmVkIGVhcmxpZXIsIHRoZSBwcmludGVyIGlzIF9leHRl
bnNpYmxlXy4gIFRoYXQgbWVhbnMKK3lvdSBjYW4gdGVhY2ggaXQgdG8gZG8gYSBiZXR0ZXIgam9i
IGF0IHByaW50aW5nIHlvdXIgcGFydGljdWxhciB0eXBlCit0aGFuIHRvIGR1bXAgdGhlIGJ5dGVz
LiAgVG8gZG8gdGhhdCwgZGVmaW5lIGA8PGAgZm9yIHlvdXIgdHlwZToKKworYGBgCisjaW5jbHVk
ZSA8aW9zdHJlYW0+CisKK25hbWVzcGFjZSBmb28geworCitjbGFzcyBCYXIgeyAuLi4gfTsgIC8v
IFdlIHdhbnQgR29vZ2xlIFRlc3QgdG8gYmUgYWJsZSB0byBwcmludCBpbnN0YW5jZXMgb2YgdGhp
cy4KKworLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB0aGUgPDwgb3BlcmF0b3IgaXMgZGVmaW5lZCBp
biB0aGUgU0FNRQorLy8gbmFtZXNwYWNlIHRoYXQgZGVmaW5lcyBCYXIuICBDKysncyBsb29rLXVw
IHJ1bGVzIHJlbHkgb24gdGhhdC4KKzo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpv
c3RyZWFtJiBvcywgY29uc3QgQmFyJiBiYXIpIHsKKyAgcmV0dXJuIG9zIDw8IGJhci5EZWJ1Z1N0
cmluZygpOyAgLy8gd2hhdGV2ZXIgbmVlZGVkIHRvIHByaW50IGJhciB0byBvcworfQorCit9ICAv
LyBuYW1lc3BhY2UgZm9vCitgYGAKKworU29tZXRpbWVzLCB0aGlzIG1pZ2h0IG5vdCBiZSBhbiBv
cHRpb246IHlvdXIgdGVhbSBtYXkgY29uc2lkZXIgaXQgYmFkCitzdHlsZSB0byBoYXZlIGEgYDw8
YCBvcGVyYXRvciBmb3IgYEJhcmAsIG9yIGBCYXJgIG1heSBhbHJlYWR5IGhhdmUgYQorYDw8YCBv
cGVyYXRvciB0aGF0IGRvZXNuJ3QgZG8gd2hhdCB5b3Ugd2FudCAoYW5kIHlvdSBjYW5ub3QgY2hh
bmdlCitpdCkuICBJZiBzbywgeW91IGNhbiBpbnN0ZWFkIGRlZmluZSBhIGBQcmludFRvKClgIGZ1
bmN0aW9uIGxpa2UgdGhpczoKKworYGBgCisjaW5jbHVkZSA8aW9zdHJlYW0+CisKK25hbWVzcGFj
ZSBmb28geworCitjbGFzcyBCYXIgeyAuLi4gfTsKKworLy8gSXQncyBpbXBvcnRhbnQgdGhhdCBQ
cmludFRvKCkgaXMgZGVmaW5lZCBpbiB0aGUgU0FNRQorLy8gbmFtZXNwYWNlIHRoYXQgZGVmaW5l
cyBCYXIuICBDKysncyBsb29rLXVwIHJ1bGVzIHJlbHkgb24gdGhhdC4KK3ZvaWQgUHJpbnRUbyhj
b25zdCBCYXImIGJhciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCBiYXIuRGVidWdT
dHJpbmcoKTsgIC8vIHdoYXRldmVyIG5lZWRlZCB0byBwcmludCBiYXIgdG8gb3MKK30KKworfSAg
Ly8gbmFtZXNwYWNlIGZvbworYGBgCisKK0lmIHlvdSBoYXZlIGRlZmluZWQgYm90aCBgPDxgIGFu
ZCBgUHJpbnRUbygpYCwgdGhlIGxhdHRlciB3aWxsIGJlIHVzZWQKK3doZW4gR29vZ2xlIFRlc3Qg
aXMgY29uY2VybmVkLiAgVGhpcyBhbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSBob3cgdGhlIHZhbHVl
CithcHBlYXJzIGluIEdvb2dsZSBUZXN0J3Mgb3V0cHV0IHdpdGhvdXQgYWZmZWN0aW5nIGNvZGUg
dGhhdCByZWxpZXMgb24gdGhlCitiZWhhdmlvciBvZiBpdHMgYDw8YCBvcGVyYXRvci4KKworSWYg
eW91IHdhbnQgdG8gcHJpbnQgYSB2YWx1ZSBgeGAgdXNpbmcgR29vZ2xlIFRlc3QncyB2YWx1ZSBw
cmludGVyCit5b3Vyc2VsZiwganVzdCBjYWxsIGA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoYF94
X2ApYCwgd2hpY2gKK3JldHVybnMgYW4gYHN0ZDo6c3RyaW5nYDoKKworYGBgCit2ZWN0b3I8cGFp
cjxCYXIsIGludD4gPiBiYXJfaW50cyA9IEdldEJhckludFZlY3RvcigpOworCitFWFBFQ1RfVFJV
RShJc0NvcnJlY3RCYXJJbnRWZWN0b3IoYmFyX2ludHMpKQorICAgIDw8ICJiYXJfaW50cyA9ICIg
PDwgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGJhcl9pbnRzKTsKK2BgYAorCisjIERlYXRoIFRl
c3RzICMKKworSW4gbWFueSBhcHBsaWNhdGlvbnMsIHRoZXJlIGFyZSBhc3NlcnRpb25zIHRoYXQg
Y2FuIGNhdXNlIGFwcGxpY2F0aW9uIGZhaWx1cmUKK2lmIGEgY29uZGl0aW9uIGlzIG5vdCBtZXQu
IFRoZXNlIHNhbml0eSBjaGVja3MsIHdoaWNoIGVuc3VyZSB0aGF0IHRoZSBwcm9ncmFtCitpcyBp
biBhIGtub3duIGdvb2Qgc3RhdGUsIGFyZSB0aGVyZSB0byBmYWlsIGF0IHRoZSBlYXJsaWVzdCBw
b3NzaWJsZSB0aW1lIGFmdGVyCitzb21lIHByb2dyYW0gc3RhdGUgaXMgY29ycnVwdGVkLiBJZiB0
aGUgYXNzZXJ0aW9uIGNoZWNrcyB0aGUgd3JvbmcgY29uZGl0aW9uLAordGhlbiB0aGUgcHJvZ3Jh
bSBtYXkgcHJvY2VlZCBpbiBhbiBlcnJvbmVvdXMgc3RhdGUsIHdoaWNoIGNvdWxkIGxlYWQgdG8g
bWVtb3J5Citjb3JydXB0aW9uLCBzZWN1cml0eSBob2xlcywgb3Igd29yc2UuIEhlbmNlIGl0IGlz
IHZpdGFsbHkgaW1wb3J0YW50IHRvIHRlc3QKK3RoYXQgc3VjaCBhc3NlcnRpb24gc3RhdGVtZW50
cyB3b3JrIGFzIGV4cGVjdGVkLgorCitTaW5jZSB0aGVzZSBwcmVjb25kaXRpb24gY2hlY2tzIGNh
dXNlIHRoZSBwcm9jZXNzZXMgdG8gZGllLCB3ZSBjYWxsIHN1Y2ggdGVzdHMKK19kZWF0aCB0ZXN0
c18uIE1vcmUgZ2VuZXJhbGx5LCBhbnkgdGVzdCB0aGF0IGNoZWNrcyB0aGF0IGEgcHJvZ3JhbSB0
ZXJtaW5hdGVzCisoZXhjZXB0IGJ5IHRocm93aW5nIGFuIGV4Y2VwdGlvbikgaW4gYW4gZXhwZWN0
ZWQgZmFzaGlvbiBpcyBhbHNvIGEgZGVhdGggdGVzdC4KKworTm90ZSB0aGF0IGlmIGEgcGllY2Ug
b2YgY29kZSB0aHJvd3MgYW4gZXhjZXB0aW9uLCB3ZSBkb24ndCBjb25zaWRlciBpdCAiZGVhdGgi
Citmb3IgdGhlIHB1cnBvc2Ugb2YgZGVhdGggdGVzdHMsIGFzIHRoZSBjYWxsZXIgb2YgdGhlIGNv
ZGUgY291bGQgY2F0Y2ggdGhlIGV4Y2VwdGlvbgorYW5kIGF2b2lkIHRoZSBjcmFzaC4gSWYgeW91
IHdhbnQgdG8gdmVyaWZ5IGV4Y2VwdGlvbnMgdGhyb3duIGJ5IHlvdXIgY29kZSwKK3NlZSBbRXhj
ZXB0aW9uIEFzc2VydGlvbnNdKCNleGNlcHRpb24tYXNzZXJ0aW9ucykuCisKK0lmIHlvdSB3YW50
IHRvIHRlc3QgYEVYUEVDVF8qKCkvQVNTRVJUXyooKWAgZmFpbHVyZXMgaW4geW91ciB0ZXN0IGNv
ZGUsIHNlZSBbQ2F0Y2hpbmcgRmFpbHVyZXNdKCNjYXRjaGluZy1mYWlsdXJlcykuCisKKyMjIEhv
dyB0byBXcml0ZSBhIERlYXRoIFRlc3QgIyMKKworR29vZ2xlIFRlc3QgaGFzIHRoZSBmb2xsb3dp
bmcgbWFjcm9zIHRvIHN1cHBvcnQgZGVhdGggdGVzdHM6CisKK3wgKipGYXRhbCBhc3NlcnRpb24q
KiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0t
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBB
U1NFUlRfREVBVEgoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApO2AgfCBgRVhQRUNUX0RFQVRIKGBfc3Rh
dGVtZW50LCByZWdleF9gKTtgIHwgX3N0YXRlbWVudF8gY3Jhc2hlcyB3aXRoIHRoZSBnaXZlbiBl
cnJvciB8Cit8IGBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKGBfc3RhdGVtZW50LCByZWdleF9g
KTtgIHwgYEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApO2Ag
fCBpZiBkZWF0aCB0ZXN0cyBhcmUgc3VwcG9ydGVkLCB2ZXJpZmllcyB0aGF0IF9zdGF0ZW1lbnRf
IGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3I7IG90aGVyd2lzZSB2ZXJpZmllcyBub3RoaW5n
IHwKK3wgYEFTU0VSVF9FWElUKGBfc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4X2ApO2AgfCBg
RVhQRUNUX0VYSVQoYF9zdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXhfYCk7YCB8X3N0YXRlbWVu
dF8gZXhpdHMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3IgYW5kIGl0cyBleGl0IGNvZGUgbWF0Y2hlcyBf
cHJlZGljYXRlXyB8CisKK3doZXJlIF9zdGF0ZW1lbnRfIGlzIGEgc3RhdGVtZW50IHRoYXQgaXMg
ZXhwZWN0ZWQgdG8gY2F1c2UgdGhlIHByb2Nlc3MgdG8KK2RpZSwgX3ByZWRpY2F0ZV8gaXMgYSBm
dW5jdGlvbiBvciBmdW5jdGlvbiBvYmplY3QgdGhhdCBldmFsdWF0ZXMgYW4gaW50ZWdlcgorZXhp
dCBzdGF0dXMsIGFuZCBfcmVnZXhfIGlzIGEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgdGhlIHN0
ZGVyciBvdXRwdXQgb2YKK19zdGF0ZW1lbnRfIGlzIGV4cGVjdGVkIHRvIG1hdGNoLiBOb3RlIHRo
YXQgX3N0YXRlbWVudF8gY2FuIGJlIF9hbnkgdmFsaWQKK3N0YXRlbWVudF8gKGluY2x1ZGluZyBf
Y29tcG91bmQgc3RhdGVtZW50XykgYW5kIGRvZXNuJ3QgaGF2ZSB0byBiZSBhbgorZXhwcmVzc2lv
bi4KKworQXMgdXN1YWwsIHRoZSBgQVNTRVJUYCB2YXJpYW50cyBhYm9ydCB0aGUgY3VycmVudCB0
ZXN0IGZ1bmN0aW9uLCB3aGlsZSB0aGUKK2BFWFBFQ1RgIHZhcmlhbnRzIGRvIG5vdC4KKworKipO
b3RlOioqIFdlIHVzZSB0aGUgd29yZCAiY3Jhc2giIGhlcmUgdG8gbWVhbiB0aGF0IHRoZSBwcm9j
ZXNzCit0ZXJtaW5hdGVzIHdpdGggYSBfbm9uLXplcm9fIGV4aXQgc3RhdHVzIGNvZGUuICBUaGVy
ZSBhcmUgdHdvCitwb3NzaWJpbGl0aWVzOiBlaXRoZXIgdGhlIHByb2Nlc3MgaGFzIGNhbGxlZCBg
ZXhpdCgpYCBvciBgX2V4aXQoKWAKK3dpdGggYSBub24temVybyB2YWx1ZSwgb3IgaXQgbWF5IGJl
IGtpbGxlZCBieSBhIHNpZ25hbC4KKworVGhpcyBtZWFucyB0aGF0IGlmIF9zdGF0ZW1lbnRfIHRl
cm1pbmF0ZXMgdGhlIHByb2Nlc3Mgd2l0aCBhIDAgZXhpdAorY29kZSwgaXQgaXMgX25vdF8gY29u
c2lkZXJlZCBhIGNyYXNoIGJ5IGBFWFBFQ1RfREVBVEhgLiAgVXNlCitgRVhQRUNUX0VYSVRgIGlu
c3RlYWQgaWYgdGhpcyBpcyB0aGUgY2FzZSwgb3IgaWYgeW91IHdhbnQgdG8gcmVzdHJpY3QKK3Ro
ZSBleGl0IGNvZGUgbW9yZSBwcmVjaXNlbHkuCisKK0EgcHJlZGljYXRlIGhlcmUgbXVzdCBhY2Nl
cHQgYW4gYGludGAgYW5kIHJldHVybiBhIGBib29sYC4gVGhlIGRlYXRoIHRlc3QKK3N1Y2NlZWRz
IG9ubHkgaWYgdGhlIHByZWRpY2F0ZSByZXR1cm5zIGB0cnVlYC4gR29vZ2xlIFRlc3QgZGVmaW5l
cyBhIGZldworcHJlZGljYXRlcyB0aGF0IGhhbmRsZSB0aGUgbW9zdCBjb21tb24gY2FzZXM6CisK
K2BgYAorOjp0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZShleGl0X2NvZGUpCitgYGAKKworVGhpcyBl
eHByZXNzaW9uIGlzIGB0cnVlYCBpZiB0aGUgcHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHkgd2l0aCB0
aGUgZ2l2ZW4gZXhpdAorY29kZS4KKworYGBgCis6OnRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKHNp
Z25hbF9udW1iZXIpICAvLyBOb3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCitgYGAKKworVGhpcyBl
eHByZXNzaW9uIGlzIGB0cnVlYCBpZiB0aGUgcHJvZ3JhbSB3YXMga2lsbGVkIGJ5IHRoZSBnaXZl
biBzaWduYWwuCisKK1RoZSBgKl9ERUFUSGAgbWFjcm9zIGFyZSBjb252ZW5pZW50IHdyYXBwZXJz
IGZvciBgKl9FWElUYCB0aGF0IHVzZSBhIHByZWRpY2F0ZQordGhhdCB2ZXJpZmllcyB0aGUgcHJv
Y2VzcycgZXhpdCBjb2RlIGlzIG5vbi16ZXJvLgorCitOb3RlIHRoYXQgYSBkZWF0aCB0ZXN0IG9u
bHkgY2FyZXMgYWJvdXQgdGhyZWUgdGhpbmdzOgorCisgIDEuIGRvZXMgX3N0YXRlbWVudF8gYWJv
cnQgb3IgZXhpdCB0aGUgcHJvY2Vzcz8KKyAgMS4gKGluIHRoZSBjYXNlIG9mIGBBU1NFUlRfRVhJ
VGAgYW5kIGBFWFBFQ1RfRVhJVGApIGRvZXMgdGhlIGV4aXQgc3RhdHVzIHNhdGlzZnkgX3ByZWRp
Y2F0ZV8/ICBPciAoaW4gdGhlIGNhc2Ugb2YgYEFTU0VSVF9ERUFUSGAgYW5kIGBFWFBFQ1RfREVB
VEhgKSBpcyB0aGUgZXhpdCBzdGF0dXMgbm9uLXplcm8/ICBBbmQKKyAgMS4gZG9lcyB0aGUgc3Rk
ZXJyIG91dHB1dCBtYXRjaCBfcmVnZXhfPworCitJbiBwYXJ0aWN1bGFyLCBpZiBfc3RhdGVtZW50
XyBnZW5lcmF0ZXMgYW4gYEFTU0VSVF8qYCBvciBgRVhQRUNUXypgIGZhaWx1cmUsIGl0IHdpbGwg
Kipub3QqKiBjYXVzZSB0aGUgZGVhdGggdGVzdCB0byBmYWlsLCBhcyBHb29nbGUgVGVzdCBhc3Nl
cnRpb25zIGRvbid0IGFib3J0IHRoZSBwcm9jZXNzLgorCitUbyB3cml0ZSBhIGRlYXRoIHRlc3Qs
IHNpbXBseSB1c2Ugb25lIG9mIHRoZSBhYm92ZSBtYWNyb3MgaW5zaWRlIHlvdXIgdGVzdAorZnVu
Y3Rpb24uIEZvciBleGFtcGxlLAorCitgYGAKK1RFU1QoTXlEZWF0aFRlc3QsIEZvbykgeworICAv
LyBUaGlzIGRlYXRoIHRlc3QgdXNlcyBhIGNvbXBvdW5kIHN0YXRlbWVudC4KKyAgQVNTRVJUX0RF
QVRIKHsgaW50IG4gPSA1OyBGb28oJm4pOyB9LCAiRXJyb3Igb24gbGluZSAuKiBvZiBGb28oKSIp
OworfQorVEVTVChNeURlYXRoVGVzdCwgTm9ybWFsRXhpdCkgeworICBFWFBFQ1RfRVhJVChOb3Jt
YWxFeGl0KCksIDo6dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCksICJTdWNjZXNzIik7Cit9CitU
RVNUKE15RGVhdGhUZXN0LCBLaWxsTXlzZWxmKSB7CisgIEVYUEVDVF9FWElUKEtpbGxNeXNlbGYo
KSwgOjp0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChTSUdLSUxMKSwgIlNlbmRpbmcgbXlzZWxmIHVu
YmxvY2thYmxlIHNpZ25hbCIpOworfQorYGBgCisKK3ZlcmlmaWVzIHRoYXQ6CisKKyAgKiBjYWxs
aW5nIGBGb28oNSlgIGNhdXNlcyB0aGUgcHJvY2VzcyB0byBkaWUgd2l0aCB0aGUgZ2l2ZW4gZXJy
b3IgbWVzc2FnZSwKKyAgKiBjYWxsaW5nIGBOb3JtYWxFeGl0KClgIGNhdXNlcyB0aGUgcHJvY2Vz
cyB0byBwcmludCBgIlN1Y2Nlc3MiYCB0byBzdGRlcnIgYW5kIGV4aXQgd2l0aCBleGl0IGNvZGUg
MCwgYW5kCisgICogY2FsbGluZyBgS2lsbE15c2VsZigpYCBraWxscyB0aGUgcHJvY2VzcyB3aXRo
IHNpZ25hbCBgU0lHS0lMTGAuCisKK1RoZSB0ZXN0IGZ1bmN0aW9uIGJvZHkgbWF5IGNvbnRhaW4g
b3RoZXIgYXNzZXJ0aW9ucyBhbmQgc3RhdGVtZW50cyBhcyB3ZWxsLCBpZgorbmVjZXNzYXJ5Lgor
CitfSW1wb3J0YW50Ol8gV2Ugc3Ryb25nbHkgcmVjb21tZW5kIHlvdSB0byBmb2xsb3cgdGhlIGNv
bnZlbnRpb24gb2YgbmFtaW5nIHlvdXIKK3Rlc3QgY2FzZSAobm90IHRlc3QpIGAqRGVhdGhUZXN0
YCB3aGVuIGl0IGNvbnRhaW5zIGEgZGVhdGggdGVzdCwgYXMKK2RlbW9uc3RyYXRlZCBpbiB0aGUg
YWJvdmUgZXhhbXBsZS4gVGhlIGBEZWF0aCBUZXN0cyBBbmQgVGhyZWFkc2Agc2VjdGlvbiBiZWxv
dworZXhwbGFpbnMgd2h5LgorCitJZiBhIHRlc3QgZml4dHVyZSBjbGFzcyBpcyBzaGFyZWQgYnkg
bm9ybWFsIHRlc3RzIGFuZCBkZWF0aCB0ZXN0cywgeW91CitjYW4gdXNlIHR5cGVkZWYgdG8gaW50
cm9kdWNlIGFuIGFsaWFzIGZvciB0aGUgZml4dHVyZSBjbGFzcyBhbmQgYXZvaWQKK2R1cGxpY2F0
aW5nIGl0cyBjb2RlOgorYGBgCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVz
dCB7IC4uLiB9OworCit0eXBlZGVmIEZvb1Rlc3QgRm9vRGVhdGhUZXN0OworCitURVNUX0YoRm9v
VGVzdCwgRG9lc1RoaXMpIHsKKyAgLy8gbm9ybWFsIHRlc3QKK30KKworVEVTVF9GKEZvb0RlYXRo
VGVzdCwgRG9lc1RoYXQpIHsKKyAgLy8gZGVhdGggdGVzdAorfQorYGBgCisKK19BdmFpbGFiaWxp
dHk6XyBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBDeWd3aW4s
IGFuZCBNYWMgKHRoZSBsYXR0ZXIgdGhyZWUgYXJlIHN1cHBvcnRlZCBzaW5jZSB2MS4zLjApLiAg
YChBU1NFUlR8RVhQRUNUKV9ERUFUSF9JRl9TVVBQT1JURURgIGFyZSBuZXcgaW4gdjEuNC4wLgor
CisjIyBSZWd1bGFyIEV4cHJlc3Npb24gU3ludGF4ICMjCisKK09uIFBPU0lYIHN5c3RlbXMgKGUu
Zy4gTGludXgsIEN5Z3dpbiwgYW5kIE1hYyksIEdvb2dsZSBUZXN0IHVzZXMgdGhlCitbUE9TSVgg
ZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9uXShodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25s
aW5lcHVicy8wMDk2OTUzOTkvYmFzZWRlZnMveGJkX2NoYXAwOS5odG1sI3RhZ18wOV8wNCkKK3N5
bnRheCBpbiBkZWF0aCB0ZXN0cy4gVG8gbGVhcm4gYWJvdXQgdGhpcyBzeW50YXgsIHlvdSBtYXkg
d2FudCB0byByZWFkIHRoaXMgW1dpa2lwZWRpYSBlbnRyeV0oaHR0cDovL2VuLndpa2lwZWRpYS5v
cmcvd2lraS9SZWd1bGFyX2V4cHJlc3Npb24jUE9TSVhfRXh0ZW5kZWRfUmVndWxhcl9FeHByZXNz
aW9ucykuCisKK09uIFdpbmRvd3MsIEdvb2dsZSBUZXN0IHVzZXMgaXRzIG93biBzaW1wbGUgcmVn
dWxhciBleHByZXNzaW9uCitpbXBsZW1lbnRhdGlvbi4gSXQgbGFja3MgbWFueSBmZWF0dXJlcyB5
b3UgY2FuIGZpbmQgaW4gUE9TSVggZXh0ZW5kZWQKK3JlZ3VsYXIgZXhwcmVzc2lvbnMuICBGb3Ig
ZXhhbXBsZSwgd2UgZG9uJ3Qgc3VwcG9ydCB1bmlvbiAoYCJ4fHkiYCksCitncm91cGluZyAoYCIo
eHkpImApLCBicmFja2V0cyAoYCJbeHldImApLCBhbmQgcmVwZXRpdGlvbiBjb3VudAorKGAieHs1
LDd9ImApLCBhbW9uZyBvdGhlcnMuIEJlbG93IGlzIHdoYXQgd2UgZG8gc3VwcG9ydCAoTGV0dGVy
IGBBYCBkZW5vdGVzIGEKK2xpdGVyYWwgY2hhcmFjdGVyLCBwZXJpb2QgKGAuYCksIG9yIGEgc2lu
Z2xlIGBcXGAgZXNjYXBlIHNlcXVlbmNlOyBgeGAKK2FuZCBgeWAgZGVub3RlIHJlZ3VsYXIgZXhw
cmVzc2lvbnMuKToKKworfCBgY2AgfCBtYXRjaGVzIGFueSBsaXRlcmFsIGNoYXJhY3RlciBgY2Ag
fAorfDotLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBgXFxkYCB8
IG1hdGNoZXMgYW55IGRlY2ltYWwgZGlnaXQgICAgICAgICB8Cit8IGBcXERgIHwgbWF0Y2hlcyBh
bnkgY2hhcmFjdGVyIHRoYXQncyBub3QgYSBkZWNpbWFsIGRpZ2l0IHwKK3wgYFxcZmAgfCBtYXRj
aGVzIGBcZmAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFxuYCB8IG1hdGNoZXMgYFxuYCAg
ICAgICAgICAgICAgICAgICAgICB8Cit8IGBcXHJgIHwgbWF0Y2hlcyBgXHJgICAgICAgICAgICAg
ICAgICAgICAgIHwKK3wgYFxcc2AgfCBtYXRjaGVzIGFueSBBU0NJSSB3aGl0ZXNwYWNlLCBpbmNs
dWRpbmcgYFxuYCB8Cit8IGBcXFNgIHwgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIHRoYXQncyBub3Qg
YSB3aGl0ZXNwYWNlIHwKK3wgYFxcdGAgfCBtYXRjaGVzIGBcdGAgICAgICAgICAgICAgICAgICAg
ICAgfAorfCBgXFx2YCB8IG1hdGNoZXMgYFx2YCAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBc
XHdgIHwgbWF0Y2hlcyBhbnkgbGV0dGVyLCBgX2AsIG9yIGRlY2ltYWwgZGlnaXQgfAorfCBgXFxX
YCB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0IGBcXHdgIGRvZXNuJ3QgbWF0Y2ggfAorfCBg
XFxjYCB8IG1hdGNoZXMgYW55IGxpdGVyYWwgY2hhcmFjdGVyIGBjYCwgd2hpY2ggbXVzdCBiZSBh
IHB1bmN0dWF0aW9uIHwKK3wgYFxcLmAgfCBtYXRjaGVzIHRoZSBgLmAgY2hhcmFjdGVyICAgICAg
ICAgfAorfCBgLmAgfCBtYXRjaGVzIGFueSBzaW5nbGUgY2hhcmFjdGVyIGV4Y2VwdCBgXG5gIHwK
K3wgYEE/YCB8IG1hdGNoZXMgMCBvciAxIG9jY3VycmVuY2VzIG9mIGBBYCB8Cit8IGBBKmAgfCBt
YXRjaGVzIDAgb3IgbWFueSBvY2N1cnJlbmNlcyBvZiBgQWAgfAorfCBgQStgIHwgbWF0Y2hlcyAx
IG9yIG1hbnkgb2NjdXJyZW5jZXMgb2YgYEFgIHwKK3wgYF5gIHwgbWF0Y2hlcyB0aGUgYmVnaW5u
aW5nIG9mIGEgc3RyaW5nIChub3QgdGhhdCBvZiBlYWNoIGxpbmUpIHwKK3wgYCRgIHwgbWF0Y2hl
cyB0aGUgZW5kIG9mIGEgc3RyaW5nIChub3QgdGhhdCBvZiBlYWNoIGxpbmUpIHwKK3wgYHh5YCB8
IG1hdGNoZXMgYHhgIGZvbGxvd2VkIGJ5IGB5YCAgICAgICB8CisKK1RvIGhlbHAgeW91IGRldGVy
bWluZSB3aGljaCBjYXBhYmlsaXR5IGlzIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbSwKK0dvb2ds
ZSBUZXN0IGRlZmluZXMgbWFjcm8gYEdURVNUX1VTRVNfUE9TSVhfUkU9MWAgd2hlbiBpdCB1c2Vz
IFBPU0lYCitleHRlbmRlZCByZWd1bGFyIGV4cHJlc3Npb25zLCBvciBgR1RFU1RfVVNFU19TSU1Q
TEVfUkU9MWAgd2hlbiBpdCB1c2VzCit0aGUgc2ltcGxlIHZlcnNpb24uICBJZiB5b3Ugd2FudCB5
b3VyIGRlYXRoIHRlc3RzIHRvIHdvcmsgaW4gYm90aAorY2FzZXMsIHlvdSBjYW4gZWl0aGVyIGAj
aWZgIG9uIHRoZXNlIG1hY3JvcyBvciB1c2UgdGhlIG1vcmUgbGltaXRlZAorc3ludGF4IG9ubHku
CisKKyMjIEhvdyBJdCBXb3JrcyAjIworCitVbmRlciB0aGUgaG9vZCwgYEFTU0VSVF9FWElUKClg
IHNwYXducyBhIG5ldyBwcm9jZXNzIGFuZCBleGVjdXRlcyB0aGUKK2RlYXRoIHRlc3Qgc3RhdGVt
ZW50IGluIHRoYXQgcHJvY2Vzcy4gVGhlIGRldGFpbHMgb2Ygb2YgaG93IHByZWNpc2VseQordGhh
dCBoYXBwZW5zIGRlcGVuZCBvbiB0aGUgcGxhdGZvcm0gYW5kIHRoZSB2YXJpYWJsZQorYDo6dGVz
dGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKWAgKHdoaWNoIGlzIGluaXRpYWxpemVk
IGZyb20gdGhlCitjb21tYW5kLWxpbmUgZmxhZyBgLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlYCku
CisKKyAgKiBPbiBQT1NJWCBzeXN0ZW1zLCBgZm9yaygpYCAob3IgYGNsb25lKClgIG9uIExpbnV4
KSBpcyB1c2VkIHRvIHNwYXduIHRoZSBjaGlsZCwgYWZ0ZXIgd2hpY2g6CisgICAgKiBJZiB0aGUg
dmFyaWFibGUncyB2YWx1ZSBpcyBgImZhc3QiYCwgdGhlIGRlYXRoIHRlc3Qgc3RhdGVtZW50IGlz
IGltbWVkaWF0ZWx5IGV4ZWN1dGVkLgorICAgICogSWYgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgaXMg
YCJ0aHJlYWRzYWZlImAsIHRoZSBjaGlsZCBwcm9jZXNzIHJlLWV4ZWN1dGVzIHRoZSB1bml0IHRl
c3QgYmluYXJ5IGp1c3QgYXMgaXQgd2FzIG9yaWdpbmFsbHkgaW52b2tlZCwgYnV0IHdpdGggc29t
ZSBleHRyYSBmbGFncyB0byBjYXVzZSBqdXN0IHRoZSBzaW5nbGUgZGVhdGggdGVzdCB1bmRlciBj
b25zaWRlcmF0aW9uIHRvIGJlIHJ1bi4KKyAgKiBPbiBXaW5kb3dzLCB0aGUgY2hpbGQgaXMgc3Bh
d25lZCB1c2luZyB0aGUgYENyZWF0ZVByb2Nlc3MoKWAgQVBJLCBhbmQgcmUtZXhlY3V0ZXMgdGhl
IGJpbmFyeSB0byBjYXVzZSBqdXN0IHRoZSBzaW5nbGUgZGVhdGggdGVzdCB1bmRlciBjb25zaWRl
cmF0aW9uIHRvIGJlIHJ1biAtIG11Y2ggbGlrZSB0aGUgYHRocmVhZHNhZmVgIG1vZGUgb24gUE9T
SVguCisKK090aGVyIHZhbHVlcyBmb3IgdGhlIHZhcmlhYmxlIGFyZSBpbGxlZ2FsIGFuZCB3aWxs
IGNhdXNlIHRoZSBkZWF0aCB0ZXN0IHRvCitmYWlsLiBDdXJyZW50bHksIHRoZSBmbGFnJ3MgZGVm
YXVsdCB2YWx1ZSBpcyBgImZhc3QiYC4gSG93ZXZlciwgd2UgcmVzZXJ2ZSB0aGUKK3JpZ2h0IHRv
IGNoYW5nZSBpdCBpbiB0aGUgZnV0dXJlLiBUaGVyZWZvcmUsIHlvdXIgdGVzdHMgc2hvdWxkIG5v
dCBkZXBlbmQgb24KK3RoaXMuCisKK0luIGVpdGhlciBjYXNlLCB0aGUgcGFyZW50IHByb2Nlc3Mg
d2FpdHMgZm9yIHRoZSBjaGlsZCBwcm9jZXNzIHRvIGNvbXBsZXRlLCBhbmQgY2hlY2tzIHRoYXQK
KworICAxLiB0aGUgY2hpbGQncyBleGl0IHN0YXR1cyBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZSwg
YW5kCisgIDEuIHRoZSBjaGlsZCdzIHN0ZGVyciBtYXRjaGVzIHRoZSByZWd1bGFyIGV4cHJlc3Np
b24uCisKK0lmIHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudCBydW5zIHRvIGNvbXBsZXRpb24gd2l0
aG91dCBkeWluZywgdGhlIGNoaWxkCitwcm9jZXNzIHdpbGwgbm9uZXRoZWxlc3MgdGVybWluYXRl
LCBhbmQgdGhlIGFzc2VydGlvbiBmYWlscy4KKworIyMgRGVhdGggVGVzdHMgQW5kIFRocmVhZHMg
IyMKKworVGhlIHJlYXNvbiBmb3IgdGhlIHR3byBkZWF0aCB0ZXN0IHN0eWxlcyBoYXMgdG8gZG8g
d2l0aCB0aHJlYWQgc2FmZXR5LiBEdWUgdG8KK3dlbGwta25vd24gcHJvYmxlbXMgd2l0aCBmb3Jr
aW5nIGluIHRoZSBwcmVzZW5jZSBvZiB0aHJlYWRzLCBkZWF0aCB0ZXN0cyBzaG91bGQKK2JlIHJ1
biBpbiBhIHNpbmdsZS10aHJlYWRlZCBjb250ZXh0LiBTb21ldGltZXMsIGhvd2V2ZXIsIGl0IGlz
bid0IGZlYXNpYmxlIHRvCithcnJhbmdlIHRoYXQga2luZCBvZiBlbnZpcm9ubWVudC4gRm9yIGV4
YW1wbGUsIHN0YXRpY2FsbHktaW5pdGlhbGl6ZWQgbW9kdWxlcworbWF5IHN0YXJ0IHRocmVhZHMg
YmVmb3JlIG1haW4gaXMgZXZlciByZWFjaGVkLiBPbmNlIHRocmVhZHMgaGF2ZSBiZWVuIGNyZWF0
ZWQsCitpdCBtYXkgYmUgZGlmZmljdWx0IG9yIGltcG9zc2libGUgdG8gY2xlYW4gdGhlbSB1cC4K
KworR29vZ2xlIFRlc3QgaGFzIHRocmVlIGZlYXR1cmVzIGludGVuZGVkIHRvIHJhaXNlIGF3YXJl
bmVzcyBvZiB0aHJlYWRpbmcgaXNzdWVzLgorCisgIDEuIEEgd2FybmluZyBpcyBlbWl0dGVkIGlm
IG11bHRpcGxlIHRocmVhZHMgYXJlIHJ1bm5pbmcgd2hlbiBhIGRlYXRoIHRlc3QgaXMgZW5jb3Vu
dGVyZWQuCisgIDEuIFRlc3QgY2FzZXMgd2l0aCBhIG5hbWUgZW5kaW5nIGluICJEZWF0aFRlc3Qi
IGFyZSBydW4gYmVmb3JlIGFsbCBvdGhlciB0ZXN0cy4KKyAgMS4gSXQgdXNlcyBgY2xvbmUoKWAg
aW5zdGVhZCBvZiBgZm9yaygpYCB0byBzcGF3biB0aGUgY2hpbGQgcHJvY2VzcyBvbiBMaW51eCAo
YGNsb25lKClgIGlzIG5vdCBhdmFpbGFibGUgb24gQ3lnd2luIGFuZCBNYWMpLCBhcyBgZm9yaygp
YCBpcyBtb3JlIGxpa2VseSB0byBjYXVzZSB0aGUgY2hpbGQgdG8gaGFuZyB3aGVuIHRoZSBwYXJl
bnQgcHJvY2VzcyBoYXMgbXVsdGlwbGUgdGhyZWFkcy4KKworSXQncyBwZXJmZWN0bHkgZmluZSB0
byBjcmVhdGUgdGhyZWFkcyBpbnNpZGUgYSBkZWF0aCB0ZXN0IHN0YXRlbWVudDsgdGhleSBhcmUK
K2V4ZWN1dGVkIGluIGEgc2VwYXJhdGUgcHJvY2VzcyBhbmQgY2Fubm90IGFmZmVjdCB0aGUgcGFy
ZW50LgorCisjIyBEZWF0aCBUZXN0IFN0eWxlcyAjIworCitUaGUgInRocmVhZHNhZmUiIGRlYXRo
IHRlc3Qgc3R5bGUgd2FzIGludHJvZHVjZWQgaW4gb3JkZXIgdG8gaGVscCBtaXRpZ2F0ZSB0aGUK
K3Jpc2tzIG9mIHRlc3RpbmcgaW4gYSBwb3NzaWJseSBtdWx0aXRocmVhZGVkIGVudmlyb25tZW50
LiBJdCB0cmFkZXMgaW5jcmVhc2VkCit0ZXN0IGV4ZWN1dGlvbiB0aW1lIChwb3RlbnRpYWxseSBk
cmFtYXRpY2FsbHkgc28pIGZvciBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5LgorV2Ugc3VnZ2VzdCB1
c2luZyB0aGUgZmFzdGVyLCBkZWZhdWx0ICJmYXN0IiBzdHlsZSB1bmxlc3MgeW91ciB0ZXN0IGhh
cyBzcGVjaWZpYworcHJvYmxlbXMgd2l0aCBpdC4KKworWW91IGNhbiBjaG9vc2UgYSBwYXJ0aWN1
bGFyIHN0eWxlIG9mIGRlYXRoIHRlc3RzIGJ5IHNldHRpbmcgdGhlIGZsYWcKK3Byb2dyYW1tYXRp
Y2FsbHk6CisKK2BgYAorOjp0ZXN0aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0g
InRocmVhZHNhZmUiOworYGBgCisKK1lvdSBjYW4gZG8gdGhpcyBpbiBgbWFpbigpYCB0byBzZXQg
dGhlIHN0eWxlIGZvciBhbGwgZGVhdGggdGVzdHMgaW4gdGhlCitiaW5hcnksIG9yIGluIGluZGl2
aWR1YWwgdGVzdHMuIFJlY2FsbCB0aGF0IGZsYWdzIGFyZSBzYXZlZCBiZWZvcmUgcnVubmluZyBl
YWNoCit0ZXN0IGFuZCByZXN0b3JlZCBhZnRlcndhcmRzLCBzbyB5b3UgbmVlZCBub3QgZG8gdGhh
dCB5b3Vyc2VsZi4gRm9yIGV4YW1wbGU6CisKK2BgYAorVEVTVChNeURlYXRoVGVzdCwgVGVzdE9u
ZSkgeworICA6OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAidGhyZWFk
c2FmZSI7CisgIC8vIFRoaXMgdGVzdCBpcyBydW4gaW4gdGhlICJ0aHJlYWRzYWZlIiBzdHlsZToK
KyAgQVNTRVJUX0RFQVRIKFRoaXNTaG91bGREaWUoKSwgIiIpOworfQorCitURVNUKE15RGVhdGhU
ZXN0LCBUZXN0VHdvKSB7CisgIC8vIFRoaXMgdGVzdCBpcyBydW4gaW4gdGhlICJmYXN0IiBzdHls
ZToKKyAgQVNTRVJUX0RFQVRIKFRoaXNTaG91bGREaWUoKSwgIiIpOworfQorCitpbnQgbWFpbihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJn
YywgYXJndik7CisgIDo6dGVzdGluZzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJm
YXN0IjsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAorCisjIyBDYXZlYXRzICMj
CisKK1RoZSBfc3RhdGVtZW50XyBhcmd1bWVudCBvZiBgQVNTRVJUX0VYSVQoKWAgY2FuIGJlIGFu
eSB2YWxpZCBDKysgc3RhdGVtZW50LgorSWYgaXQgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9u
IHZpYSBhIGByZXR1cm5gIHN0YXRlbWVudCBvciBieSB0aHJvd2luZyBhbiBleGNlcHRpb24sCit0
aGUgZGVhdGggdGVzdCBpcyBjb25zaWRlcmVkIHRvIGhhdmUgZmFpbGVkLiAgU29tZSBHb29nbGUg
VGVzdCBtYWNyb3MgbWF5IHJldHVybgorZnJvbSB0aGUgY3VycmVudCBmdW5jdGlvbiAoZS5nLiBg
QVNTRVJUX1RSVUUoKWApLCBzbyBiZSBzdXJlIHRvIGF2b2lkIHRoZW0gaW4gX3N0YXRlbWVudF8u
CisKK1NpbmNlIF9zdGF0ZW1lbnRfIHJ1bnMgaW4gdGhlIGNoaWxkIHByb2Nlc3MsIGFueSBpbi1t
ZW1vcnkgc2lkZSBlZmZlY3QgKGUuZy4KK21vZGlmeWluZyBhIHZhcmlhYmxlLCByZWxlYXNpbmcg
bWVtb3J5LCBldGMpIGl0IGNhdXNlcyB3aWxsIF9ub3RfIGJlIG9ic2VydmFibGUKK2luIHRoZSBw
YXJlbnQgcHJvY2Vzcy4gSW4gcGFydGljdWxhciwgaWYgeW91IHJlbGVhc2UgbWVtb3J5IGluIGEg
ZGVhdGggdGVzdCwKK3lvdXIgcHJvZ3JhbSB3aWxsIGZhaWwgdGhlIGhlYXAgY2hlY2sgYXMgdGhl
IHBhcmVudCBwcm9jZXNzIHdpbGwgbmV2ZXIgc2VlIHRoZQorbWVtb3J5IHJlY2xhaW1lZC4gVG8g
c29sdmUgdGhpcyBwcm9ibGVtLCB5b3UgY2FuCisKKyAgMS4gdHJ5IG5vdCB0byBmcmVlIG1lbW9y
eSBpbiBhIGRlYXRoIHRlc3Q7CisgIDEuIGZyZWUgdGhlIG1lbW9yeSBhZ2FpbiBpbiB0aGUgcGFy
ZW50IHByb2Nlc3M7IG9yCisgIDEuIGRvIG5vdCB1c2UgdGhlIGhlYXAgY2hlY2tlciBpbiB5b3Vy
IHByb2dyYW0uCisKK0R1ZSB0byBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIHlvdSBjYW5ub3Qg
cGxhY2UgbXVsdGlwbGUgZGVhdGggdGVzdAorYXNzZXJ0aW9ucyBvbiB0aGUgc2FtZSBsaW5lOyBv
dGhlcndpc2UsIGNvbXBpbGF0aW9uIHdpbGwgZmFpbCB3aXRoIGFuIHVub2J2aW91cworZXJyb3Ig
bWVzc2FnZS4KKworRGVzcGl0ZSB0aGUgaW1wcm92ZWQgdGhyZWFkIHNhZmV0eSBhZmZvcmRlZCBi
eSB0aGUgInRocmVhZHNhZmUiIHN0eWxlIG9mIGRlYXRoCit0ZXN0LCB0aHJlYWQgcHJvYmxlbXMg
c3VjaCBhcyBkZWFkbG9jayBhcmUgc3RpbGwgcG9zc2libGUgaW4gdGhlIHByZXNlbmNlIG9mCito
YW5kbGVycyByZWdpc3RlcmVkIHdpdGggYHB0aHJlYWRfYXRmb3JrKDMpYC4KKworIyBVc2luZyBB
c3NlcnRpb25zIGluIFN1Yi1yb3V0aW5lcyAjCisKKyMjIEFkZGluZyBUcmFjZXMgdG8gQXNzZXJ0
aW9ucyAjIworCitJZiBhIHRlc3Qgc3ViLXJvdXRpbmUgaXMgY2FsbGVkIGZyb20gc2V2ZXJhbCBw
bGFjZXMsIHdoZW4gYW4gYXNzZXJ0aW9uCitpbnNpZGUgaXQgZmFpbHMsIGl0IGNhbiBiZSBoYXJk
IHRvIHRlbGwgd2hpY2ggaW52b2NhdGlvbiBvZiB0aGUKK3N1Yi1yb3V0aW5lIHRoZSBmYWlsdXJl
IGlzIGZyb20uICBZb3UgY2FuIGFsbGV2aWF0ZSB0aGlzIHByb2JsZW0gdXNpbmcKK2V4dHJhIGxv
Z2dpbmcgb3IgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZXMsIGJ1dCB0aGF0IHVzdWFsbHkgY2x1dHRl
cnMgdXAKK3lvdXIgdGVzdHMuIEEgYmV0dGVyIHNvbHV0aW9uIGlzIHRvIHVzZSB0aGUgYFNDT1BF
RF9UUkFDRWAgbWFjcm86CisKK3wgYFNDT1BFRF9UUkFDRShgX21lc3NhZ2VfYCk7YCB8Cit8Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorCit3aGVyZSBfbWVzc2FnZV8gY2FuIGJlIGFu
eXRoaW5nIHN0cmVhbWFibGUgdG8gYHN0ZDo6b3N0cmVhbWAuIFRoaXMKK21hY3JvIHdpbGwgY2F1
c2UgdGhlIGN1cnJlbnQgZmlsZSBuYW1lLCBsaW5lIG51bWJlciwgYW5kIHRoZSBnaXZlbgorbWVz
c2FnZSB0byBiZSBhZGRlZCBpbiBldmVyeSBmYWlsdXJlIG1lc3NhZ2UuIFRoZSBlZmZlY3Qgd2ls
bCBiZQordW5kb25lIHdoZW4gdGhlIGNvbnRyb2wgbGVhdmVzIHRoZSBjdXJyZW50IGxleGljYWwg
c2NvcGUuCisKK0ZvciBleGFtcGxlLAorCitgYGAKKzEwOiB2b2lkIFN1YjEoaW50IG4pIHsKKzEx
OiAgIEVYUEVDVF9FUSgxLCBCYXIobikpOworMTI6ICAgRVhQRUNUX0VRKDIsIEJhcihuICsgMSkp
OworMTM6IH0KKzE0OgorMTU6IFRFU1QoRm9vVGVzdCwgQmFyKSB7CisxNjogICB7CisxNzogICAg
IFNDT1BFRF9UUkFDRSgiQSIpOyAgLy8gVGhpcyB0cmFjZSBwb2ludCB3aWxsIGJlIGluY2x1ZGVk
IGluCisxODogICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXZlcnkgZmFpbHVyZSBpbiB0aGlz
IHNjb3BlLgorMTk6ICAgICBTdWIxKDEpOworMjA6ICAgfQorMjE6ICAgLy8gTm93IGl0IHdvbid0
LgorMjI6ICAgU3ViMSg5KTsKKzIzOiB9CitgYGAKKworY291bGQgcmVzdWx0IGluIG1lc3NhZ2Vz
IGxpa2UgdGhlc2U6CisKK2BgYAorcGF0aC90by9mb29fdGVzdC5jYzoxMTogRmFpbHVyZQorVmFs
dWUgb2Y6IEJhcihuKQorRXhwZWN0ZWQ6IDEKKyAgQWN0dWFsOiAyCisgICBUcmFjZToKK3BhdGgv
dG8vZm9vX3Rlc3QuY2M6MTc6IEEKKworcGF0aC90by9mb29fdGVzdC5jYzoxMjogRmFpbHVyZQor
VmFsdWUgb2Y6IEJhcihuICsgMSkKK0V4cGVjdGVkOiAyCisgIEFjdHVhbDogMworYGBgCisKK1dp
dGhvdXQgdGhlIHRyYWNlLCBpdCB3b3VsZCd2ZSBiZWVuIGRpZmZpY3VsdCB0byBrbm93IHdoaWNo
IGludm9jYXRpb24KK29mIGBTdWIxKClgIHRoZSB0d28gZmFpbHVyZXMgY29tZSBmcm9tIHJlc3Bl
Y3RpdmVseS4gKFlvdSBjb3VsZCBhZGQgYW4KK2V4dHJhIG1lc3NhZ2UgdG8gZWFjaCBhc3NlcnRp
b24gaW4gYFN1YjEoKWAgdG8gaW5kaWNhdGUgdGhlIHZhbHVlIG9mCitgbmAsIGJ1dCB0aGF0J3Mg
dGVkaW91cy4pCisKK1NvbWUgdGlwcyBvbiB1c2luZyBgU0NPUEVEX1RSQUNFYDoKKworICAxLiBX
aXRoIGEgc3VpdGFibGUgbWVzc2FnZSwgaXQncyBvZnRlbiBlbm91Z2ggdG8gdXNlIGBTQ09QRURf
VFJBQ0VgIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBzdWItcm91dGluZSwgaW5zdGVhZCBvZiBhdCBl
YWNoIGNhbGwgc2l0ZS4KKyAgMS4gV2hlbiBjYWxsaW5nIHN1Yi1yb3V0aW5lcyBpbnNpZGUgYSBs
b29wLCBtYWtlIHRoZSBsb29wIGl0ZXJhdG9yIHBhcnQgb2YgdGhlIG1lc3NhZ2UgaW4gYFNDT1BF
RF9UUkFDRWAgc3VjaCB0aGF0IHlvdSBjYW4ga25vdyB3aGljaCBpdGVyYXRpb24gdGhlIGZhaWx1
cmUgaXMgZnJvbS4KKyAgMS4gU29tZXRpbWVzIHRoZSBsaW5lIG51bWJlciBvZiB0aGUgdHJhY2Ug
cG9pbnQgaXMgZW5vdWdoIGZvciBpZGVudGlmeWluZyB0aGUgcGFydGljdWxhciBpbnZvY2F0aW9u
IG9mIGEgc3ViLXJvdXRpbmUuIEluIHRoaXMgY2FzZSwgeW91IGRvbid0IGhhdmUgdG8gY2hvb3Nl
IGEgdW5pcXVlIG1lc3NhZ2UgZm9yIGBTQ09QRURfVFJBQ0VgLiBZb3UgY2FuIHNpbXBseSB1c2Ug
YCIiYC4KKyAgMS4gWW91IGNhbiB1c2UgYFNDT1BFRF9UUkFDRWAgaW4gYW4gaW5uZXIgc2NvcGUg
d2hlbiB0aGVyZSBpcyBvbmUgaW4gdGhlIG91dGVyIHNjb3BlLiBJbiB0aGlzIGNhc2UsIGFsbCBh
Y3RpdmUgdHJhY2UgcG9pbnRzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGZhaWx1cmUgbWVzc2Fn
ZXMsIGluIHJldmVyc2Ugb3JkZXIgdGhleSBhcmUgZW5jb3VudGVyZWQuCisgIDEuIFRoZSB0cmFj
ZSBkdW1wIGlzIGNsaWNrYWJsZSBpbiBFbWFjcycgY29tcGlsYXRpb24gYnVmZmVyIC0gaGl0IHJl
dHVybiBvbiBhIGxpbmUgbnVtYmVyIGFuZCB5b3UnbGwgYmUgdGFrZW4gdG8gdGhhdCBsaW5lIGlu
IHRoZSBzb3VyY2UgZmlsZSEKKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKKyMjIFByb3BhZ2F0aW5nIEZhdGFsIEZhaWx1cmVzICMjCisKK0EgY29tbW9uIHBpdGZhbGwg
d2hlbiB1c2luZyBgQVNTRVJUXypgIGFuZCBgRkFJTCpgIGlzIG5vdCB1bmRlcnN0YW5kaW5nIHRo
YXQKK3doZW4gdGhleSBmYWlsIHRoZXkgb25seSBhYm9ydCB0aGUgX2N1cnJlbnQgZnVuY3Rpb25f
LCBub3QgdGhlIGVudGlyZSB0ZXN0LiBGb3IKK2V4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVzdCB3
aWxsIHNlZ2ZhdWx0OgorYGBgCit2b2lkIFN1YnJvdXRpbmUoKSB7CisgIC8vIEdlbmVyYXRlcyBh
IGZhdGFsIGZhaWx1cmUgYW5kIGFib3J0cyB0aGUgY3VycmVudCBmdW5jdGlvbi4KKyAgQVNTRVJU
X0VRKDEsIDIpOworICAvLyBUaGUgZm9sbG93aW5nIHdvbid0IGJlIGV4ZWN1dGVkLgorICAuLi4K
K30KKworVEVTVChGb29UZXN0LCBCYXIpIHsKKyAgU3Vicm91dGluZSgpOworICAvLyBUaGUgaW50
ZW5kZWQgYmVoYXZpb3IgaXMgZm9yIHRoZSBmYXRhbCBmYWlsdXJlCisgIC8vIGluIFN1YnJvdXRp
bmUoKSB0byBhYm9ydCB0aGUgZW50aXJlIHRlc3QuCisgIC8vIFRoZSBhY3R1YWwgYmVoYXZpb3I6
IHRoZSBmdW5jdGlvbiBnb2VzIG9uIGFmdGVyIFN1YnJvdXRpbmUoKSByZXR1cm5zLgorICBpbnQq
IHAgPSBOVUxMOworICAqcCA9IDM7IC8vIFNlZ2ZhdWx0IQorfQorYGBgCisKK1NpbmNlIHdlIGRv
bid0IHVzZSBleGNlcHRpb25zLCBpdCBpcyB0ZWNobmljYWxseSBpbXBvc3NpYmxlIHRvCitpbXBs
ZW1lbnQgdGhlIGludGVuZGVkIGJlaGF2aW9yIGhlcmUuICBUbyBhbGxldmlhdGUgdGhpcywgR29v
Z2xlIFRlc3QKK3Byb3ZpZGVzIHR3byBzb2x1dGlvbnMuICBZb3UgY291bGQgdXNlIGVpdGhlciB0
aGUKK2AoQVNTRVJUfEVYUEVDVClfTk9fRkFUQUxfRkFJTFVSRWAgYXNzZXJ0aW9ucyBvciB0aGUK
K2BIYXNGYXRhbEZhaWx1cmUoKWAgZnVuY3Rpb24uICBUaGV5IGFyZSBkZXNjcmliZWQgaW4gdGhl
IGZvbGxvd2luZyB0d28KK3N1YnNlY3Rpb25zLgorCisjIyMgQXNzZXJ0aW5nIG9uIFN1YnJvdXRp
bmVzICMjIworCitBcyBzaG93biBhYm92ZSwgaWYgeW91ciB0ZXN0IGNhbGxzIGEgc3Vicm91dGlu
ZSB0aGF0IGhhcyBhbiBgQVNTRVJUXypgCitmYWlsdXJlIGluIGl0LCB0aGUgdGVzdCB3aWxsIGNv
bnRpbnVlIGFmdGVyIHRoZSBzdWJyb3V0aW5lCityZXR1cm5zLiBUaGlzIG1heSBub3QgYmUgd2hh
dCB5b3Ugd2FudC4KKworT2Z0ZW4gcGVvcGxlIHdhbnQgZmF0YWwgZmFpbHVyZXMgdG8gcHJvcGFn
YXRlIGxpa2UgZXhjZXB0aW9ucy4gIEZvcgordGhhdCBHb29nbGUgVGVzdCBvZmZlcnMgdGhlIGZv
bGxvd2luZyBtYWNyb3M6CisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNz
ZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfTk9fRkFUQUxfRkFJ
TFVSRShgX3N0YXRlbWVudF9gKTtgIHwgYEVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKGBfc3RhdGVt
ZW50X2ApO2AgfCBfc3RhdGVtZW50XyBkb2Vzbid0IGdlbmVyYXRlIGFueSBuZXcgZmF0YWwgZmFp
bHVyZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkLiB8CisKK09ubHkgZmFpbHVyZXMgaW4gdGhlIHRo
cmVhZCB0aGF0IGV4ZWN1dGVzIHRoZSBhc3NlcnRpb24gYXJlIGNoZWNrZWQgdG8KK2RldGVybWlu
ZSB0aGUgcmVzdWx0IG9mIHRoaXMgdHlwZSBvZiBhc3NlcnRpb25zLiAgSWYgX3N0YXRlbWVudF8K
K2NyZWF0ZXMgbmV3IHRocmVhZHMsIGZhaWx1cmVzIGluIHRoZXNlIHRocmVhZHMgYXJlIGlnbm9y
ZWQuCisKK0V4YW1wbGVzOgorCitgYGAKK0FTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEZvbygpKTsK
KworaW50IGk7CitFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRSh7CisgIGkgPSBCYXIoKTsKK30pOwor
YGBgCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLiBBc3NlcnRpb25zIGZy
b20gbXVsdGlwbGUgdGhyZWFkcworYXJlIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgorCisjIyMg
Q2hlY2tpbmcgZm9yIEZhaWx1cmVzIGluIHRoZSBDdXJyZW50IFRlc3QgIyMjCisKK2BIYXNGYXRh
bEZhaWx1cmUoKWAgaW4gdGhlIGA6OnRlc3Rpbmc6OlRlc3RgIGNsYXNzIHJldHVybnMgYHRydWVg
IGlmIGFuCithc3NlcnRpb24gaW4gdGhlIGN1cnJlbnQgdGVzdCBoYXMgc3VmZmVyZWQgYSBmYXRh
bCBmYWlsdXJlLiBUaGlzCithbGxvd3MgZnVuY3Rpb25zIHRvIGNhdGNoIGZhdGFsIGZhaWx1cmVz
IGluIGEgc3ViLXJvdXRpbmUgYW5kIHJldHVybgorZWFybHkuCisKK2BgYAorY2xhc3MgVGVzdCB7
CisgcHVibGljOgorICAuLi4KKyAgc3RhdGljIGJvb2wgSGFzRmF0YWxGYWlsdXJlKCk7Cit9Owor
YGBgCisKK1RoZSB0eXBpY2FsIHVzYWdlLCB3aGljaCBiYXNpY2FsbHkgc2ltdWxhdGVzIHRoZSBi
ZWhhdmlvciBvZiBhIHRocm93bgorZXhjZXB0aW9uLCBpczoKKworYGBgCitURVNUKEZvb1Rlc3Qs
IEJhcikgeworICBTdWJyb3V0aW5lKCk7CisgIC8vIEFib3J0cyBpZiBTdWJyb3V0aW5lKCkgaGFk
IGEgZmF0YWwgZmFpbHVyZS4KKyAgaWYgKEhhc0ZhdGFsRmFpbHVyZSgpKQorICAgIHJldHVybjsK
KyAgLy8gVGhlIGZvbGxvd2luZyB3b24ndCBiZSBleGVjdXRlZC4KKyAgLi4uCit9CitgYGAKKwor
SWYgYEhhc0ZhdGFsRmFpbHVyZSgpYCBpcyB1c2VkIG91dHNpZGUgb2YgYFRFU1QoKWAgLCBgVEVT
VF9GKClgICwgb3IgYSB0ZXN0CitmaXh0dXJlLCB5b3UgbXVzdCBhZGQgdGhlIGA6OnRlc3Rpbmc6
OlRlc3Q6OmAgcHJlZml4LCBhcyBpbjoKKworYGBgCitpZiAoOjp0ZXN0aW5nOjpUZXN0OjpIYXNG
YXRhbEZhaWx1cmUoKSkKKyAgcmV0dXJuOworYGBgCisKK1NpbWlsYXJseSwgYEhhc05vbmZhdGFs
RmFpbHVyZSgpYCByZXR1cm5zIGB0cnVlYCBpZiB0aGUgY3VycmVudCB0ZXN0CitoYXMgYXQgbGVh
c3Qgb25lIG5vbi1mYXRhbCBmYWlsdXJlLCBhbmQgYEhhc0ZhaWx1cmUoKWAgcmV0dXJucyBgdHJ1
ZWAKK2lmIHRoZSBjdXJyZW50IHRlc3QgaGFzIGF0IGxlYXN0IG9uZSBmYWlsdXJlIG9mIGVpdGhl
ciBraW5kLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4gIGBIYXNOb25m
YXRhbEZhaWx1cmUoKWAgYW5kCitgSGFzRmFpbHVyZSgpYCBhcmUgYXZhaWxhYmxlIHNpbmNlIHZl
cnNpb24gMS40LjAuCisKKyMgTG9nZ2luZyBBZGRpdGlvbmFsIEluZm9ybWF0aW9uICMKKworSW4g
eW91ciB0ZXN0IGNvZGUsIHlvdSBjYW4gY2FsbCBgUmVjb3JkUHJvcGVydHkoImtleSIsIHZhbHVl
KWAgdG8gbG9nCithZGRpdGlvbmFsIGluZm9ybWF0aW9uLCB3aGVyZSBgdmFsdWVgIGNhbiBiZSBl
aXRoZXIgYSBzdHJpbmcgb3IgYW4gYGludGAuIFRoZSBfbGFzdF8gdmFsdWUgcmVjb3JkZWQgZm9y
IGEga2V5IHdpbGwgYmUgZW1pdHRlZCB0byB0aGUgWE1MIG91dHB1dAoraWYgeW91IHNwZWNpZnkg
b25lLiBGb3IgZXhhbXBsZSwgdGhlIHRlc3QKKworYGBgCitURVNUX0YoV2lkZ2V0VXNhZ2VUZXN0
LCBNaW5BbmRNYXhXaWRnZXRzKSB7CisgIFJlY29yZFByb3BlcnR5KCJNYXhpbXVtV2lkZ2V0cyIs
IENvbXB1dGVNYXhVc2FnZSgpKTsKKyAgUmVjb3JkUHJvcGVydHkoIk1pbmltdW1XaWRnZXRzIiwg
Q29tcHV0ZU1pblVzYWdlKCkpOworfQorYGBgCisKK3dpbGwgb3V0cHV0IFhNTCBsaWtlIHRoaXM6
CisKK2BgYAorLi4uCisgIDx0ZXN0Y2FzZSBuYW1lPSJNaW5BbmRNYXhXaWRnZXRzIiBzdGF0dXM9
InJ1biIgdGltZT0iNiIgY2xhc3NuYW1lPSJXaWRnZXRVc2FnZVRlc3QiCisgICAgICAgICAgICBN
YXhpbXVtV2lkZ2V0cz0iMTIiCisgICAgICAgICAgICBNaW5pbXVtV2lkZ2V0cz0iOSIgLz4KKy4u
LgorYGBgCisKK19Ob3RlXzoKKyAgKiBgUmVjb3JkUHJvcGVydHkoKWAgaXMgYSBzdGF0aWMgbWVt
YmVyIG9mIHRoZSBgVGVzdGAgY2xhc3MuIFRoZXJlZm9yZSBpdCBuZWVkcyB0byBiZSBwcmVmaXhl
ZCB3aXRoIGA6OnRlc3Rpbmc6OlRlc3Q6OmAgaWYgdXNlZCBvdXRzaWRlIG9mIHRoZSBgVEVTVGAg
Ym9keSBhbmQgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4KKyAgKiBga2V5YCBtdXN0IGJlIGEgdmFs
aWQgWE1MIGF0dHJpYnV0ZSBuYW1lLCBhbmQgY2Fubm90IGNvbmZsaWN0IHdpdGggdGhlIG9uZXMg
YWxyZWFkeSB1c2VkIGJ5IEdvb2dsZSBUZXN0IChgbmFtZWAsIGBzdGF0dXNgLCBgdGltZWAsIGBj
bGFzc25hbWVgLCBgdHlwZV9wYXJhbWAsIGFuZCBgdmFsdWVfcGFyYW1gKS4KKyAgKiBDYWxsaW5n
IGBSZWNvcmRQcm9wZXJ0eSgpYCBvdXRzaWRlIG9mIHRoZSBsaWZlc3BhbiBvZiBhIHRlc3QgaXMg
YWxsb3dlZC4gSWYgaXQncyBjYWxsZWQgb3V0c2lkZSBvZiBhIHRlc3QgYnV0IGJldHdlZW4gYSB0
ZXN0IGNhc2UncyBgU2V0VXBUZXN0Q2FzZSgpYCBhbmQgYFRlYXJEb3duVGVzdENhc2UoKWAgbWV0
aG9kcywgaXQgd2lsbCBiZSBhdHRyaWJ1dGVkIHRvIHRoZSBYTUwgZWxlbWVudCBmb3IgdGhlIHRl
c3QgY2FzZS4gSWYgaXQncyBjYWxsZWQgb3V0c2lkZSBvZiBhbGwgdGVzdCBjYXNlcyAoZS5nLiBp
biBhIHRlc3QgZW52aXJvbm1lbnQpLCBpdCB3aWxsIGJlIGF0dHJpYnV0ZWQgdG8gdGhlIHRvcC1s
ZXZlbCBYTUwgZWxlbWVudC4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKKyMgU2hhcmluZyBSZXNvdXJjZXMgQmV0d2VlbiBUZXN0cyBpbiB0aGUgU2FtZSBUZXN0IENh
c2UgIworCisKKworR29vZ2xlIFRlc3QgY3JlYXRlcyBhIG5ldyB0ZXN0IGZpeHR1cmUgb2JqZWN0
IGZvciBlYWNoIHRlc3QgaW4gb3JkZXIgdG8gbWFrZQordGVzdHMgaW5kZXBlbmRlbnQgYW5kIGVh
c2llciB0byBkZWJ1Zy4gSG93ZXZlciwgc29tZXRpbWVzIHRlc3RzIHVzZSByZXNvdXJjZXMKK3Ro
YXQgYXJlIGV4cGVuc2l2ZSB0byBzZXQgdXAsIG1ha2luZyB0aGUgb25lLWNvcHktcGVyLXRlc3Qg
bW9kZWwgcHJvaGliaXRpdmVseQorZXhwZW5zaXZlLgorCitJZiB0aGUgdGVzdHMgZG9uJ3QgY2hh
bmdlIHRoZSByZXNvdXJjZSwgdGhlcmUncyBubyBoYXJtIGluIHRoZW0gc2hhcmluZyBhCitzaW5n
bGUgcmVzb3VyY2UgY29weS4gU28sIGluIGFkZGl0aW9uIHRvIHBlci10ZXN0IHNldC11cC90ZWFy
LWRvd24sIEdvb2dsZSBUZXN0CithbHNvIHN1cHBvcnRzIHBlci10ZXN0LWNhc2Ugc2V0LXVwL3Rl
YXItZG93bi4gVG8gdXNlIGl0OgorCisgIDEuIEluIHlvdXIgdGVzdCBmaXh0dXJlIGNsYXNzIChz
YXkgYEZvb1Rlc3RgICksIGRlZmluZSBhcyBgc3RhdGljYCBzb21lIG1lbWJlciB2YXJpYWJsZXMg
dG8gaG9sZCB0aGUgc2hhcmVkIHJlc291cmNlcy4KKyAgMS4gSW4gdGhlIHNhbWUgdGVzdCBmaXh0
dXJlIGNsYXNzLCBkZWZpbmUgYSBgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpYCBmdW5jdGlv
biAocmVtZW1iZXIgbm90IHRvIHNwZWxsIGl0IGFzICoqYFNldHVwVGVzdENhc2VgKiogd2l0aCBh
IHNtYWxsIGB1YCEpIHRvIHNldCB1cCB0aGUgc2hhcmVkIHJlc291cmNlcyBhbmQgYSBgc3RhdGlj
IHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpYCBmdW5jdGlvbiB0byB0ZWFyIHRoZW0gZG93bi4KKwor
VGhhdCdzIGl0ISBHb29nbGUgVGVzdCBhdXRvbWF0aWNhbGx5IGNhbGxzIGBTZXRVcFRlc3RDYXNl
KClgIGJlZm9yZSBydW5uaW5nIHRoZQorX2ZpcnN0IHRlc3RfIGluIHRoZSBgRm9vVGVzdGAgdGVz
dCBjYXNlIChpLmUuIGJlZm9yZSBjcmVhdGluZyB0aGUgZmlyc3QKK2BGb29UZXN0YCBvYmplY3Qp
LCBhbmQgY2FsbHMgYFRlYXJEb3duVGVzdENhc2UoKWAgYWZ0ZXIgcnVubmluZyB0aGUgX2xhc3Qg
dGVzdF8KK2luIGl0IChpLmUuIGFmdGVyIGRlbGV0aW5nIHRoZSBsYXN0IGBGb29UZXN0YCBvYmpl
Y3QpLiBJbiBiZXR3ZWVuLCB0aGUgdGVzdHMKK2NhbiB1c2UgdGhlIHNoYXJlZCByZXNvdXJjZXMu
CisKK1JlbWVtYmVyIHRoYXQgdGhlIHRlc3Qgb3JkZXIgaXMgdW5kZWZpbmVkLCBzbyB5b3VyIGNv
ZGUgY2FuJ3QgZGVwZW5kIG9uIGEgdGVzdAorcHJlY2VkaW5nIG9yIGZvbGxvd2luZyBhbm90aGVy
LiBBbHNvLCB0aGUgdGVzdHMgbXVzdCBlaXRoZXIgbm90IG1vZGlmeSB0aGUKK3N0YXRlIG9mIGFu
eSBzaGFyZWQgcmVzb3VyY2UsIG9yLCBpZiB0aGV5IGRvIG1vZGlmeSB0aGUgc3RhdGUsIHRoZXkg
bXVzdAorcmVzdG9yZSB0aGUgc3RhdGUgdG8gaXRzIG9yaWdpbmFsIHZhbHVlIGJlZm9yZSBwYXNz
aW5nIGNvbnRyb2wgdG8gdGhlIG5leHQKK3Rlc3QuCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIHBl
ci10ZXN0LWNhc2Ugc2V0LXVwIGFuZCB0ZWFyLWRvd246CitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBw
dWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIC8vIFBlci10ZXN0LWNhc2Ug
c2V0LXVwLgorICAvLyBDYWxsZWQgYmVmb3JlIHRoZSBmaXJzdCB0ZXN0IGluIHRoaXMgdGVzdCBj
YXNlLgorICAvLyBDYW4gYmUgb21pdHRlZCBpZiBub3QgbmVlZGVkLgorICBzdGF0aWMgdm9pZCBT
ZXRVcFRlc3RDYXNlKCkgeworICAgIHNoYXJlZF9yZXNvdXJjZV8gPSBuZXcgLi4uOworICB9CisK
KyAgLy8gUGVyLXRlc3QtY2FzZSB0ZWFyLWRvd24uCisgIC8vIENhbGxlZCBhZnRlciB0aGUgbGFz
dCB0ZXN0IGluIHRoaXMgdGVzdCBjYXNlLgorICAvLyBDYW4gYmUgb21pdHRlZCBpZiBub3QgbmVl
ZGVkLgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIGRlbGV0ZSBzaGFy
ZWRfcmVzb3VyY2VfOworICAgIHNoYXJlZF9yZXNvdXJjZV8gPSBOVUxMOworICB9CisKKyAgLy8g
WW91IGNhbiBkZWZpbmUgcGVyLXRlc3Qgc2V0LXVwIGFuZCB0ZWFyLWRvd24gbG9naWMgYXMgdXN1
YWwuCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsgLi4uIH0KKyAgdmlydHVhbCB2b2lkIFRlYXJE
b3duKCkgeyAuLi4gfQorCisgIC8vIFNvbWUgZXhwZW5zaXZlIHJlc291cmNlIHNoYXJlZCBieSBh
bGwgdGVzdHMuCisgIHN0YXRpYyBUKiBzaGFyZWRfcmVzb3VyY2VfOworfTsKKworVCogRm9vVGVz
dDo6c2hhcmVkX3Jlc291cmNlXyA9IE5VTEw7CisKK1RFU1RfRihGb29UZXN0LCBUZXN0MSkgewor
ICAuLi4geW91IGNhbiByZWZlciB0byBzaGFyZWRfcmVzb3VyY2UgaGVyZSAuLi4KK30KK1RFU1Rf
RihGb29UZXN0LCBUZXN0MikgeworICAuLi4geW91IGNhbiByZWZlciB0byBzaGFyZWRfcmVzb3Vy
Y2UgaGVyZSAuLi4KK30KK2BgYAorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1h
Yy4KKworIyBHbG9iYWwgU2V0LVVwIGFuZCBUZWFyLURvd24gIworCitKdXN0IGFzIHlvdSBjYW4g
ZG8gc2V0LXVwIGFuZCB0ZWFyLWRvd24gYXQgdGhlIHRlc3QgbGV2ZWwgYW5kIHRoZSB0ZXN0IGNh
c2UKK2xldmVsLCB5b3UgY2FuIGFsc28gZG8gaXQgYXQgdGhlIHRlc3QgcHJvZ3JhbSBsZXZlbC4g
SGVyZSdzIGhvdy4KKworRmlyc3QsIHlvdSBzdWJjbGFzcyB0aGUgYDo6dGVzdGluZzo6RW52aXJv
bm1lbnRgIGNsYXNzIHRvIGRlZmluZSBhIHRlc3QKK2Vudmlyb25tZW50LCB3aGljaCBrbm93cyBo
b3cgdG8gc2V0LXVwIGFuZCB0ZWFyLWRvd246CisKK2BgYAorY2xhc3MgRW52aXJvbm1lbnQgewor
IHB1YmxpYzoKKyAgdmlydHVhbCB+RW52aXJvbm1lbnQoKSB7fQorICAvLyBPdmVycmlkZSB0aGlz
IHRvIGRlZmluZSBob3cgdG8gc2V0IHVwIHRoZSBlbnZpcm9ubWVudC4KKyAgdmlydHVhbCB2b2lk
IFNldFVwKCkge30KKyAgLy8gT3ZlcnJpZGUgdGhpcyB0byBkZWZpbmUgaG93IHRvIHRlYXIgZG93
biB0aGUgZW52aXJvbm1lbnQuCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHt9Cit9OworYGBg
CisKK1RoZW4sIHlvdSByZWdpc3RlciBhbiBpbnN0YW5jZSBvZiB5b3VyIGVudmlyb25tZW50IGNs
YXNzIHdpdGggR29vZ2xlIFRlc3QgYnkKK2NhbGxpbmcgdGhlIGA6OnRlc3Rpbmc6OkFkZEdsb2Jh
bFRlc3RFbnZpcm9ubWVudCgpYCBmdW5jdGlvbjoKKworYGBgCitFbnZpcm9ubWVudCogQWRkR2xv
YmFsVGVzdEVudmlyb25tZW50KEVudmlyb25tZW50KiBlbnYpOworYGBgCisKK05vdywgd2hlbiBg
UlVOX0FMTF9URVNUUygpYCBpcyBjYWxsZWQsIGl0IGZpcnN0IGNhbGxzIHRoZSBgU2V0VXAoKWAg
bWV0aG9kIG9mCit0aGUgZW52aXJvbm1lbnQgb2JqZWN0LCB0aGVuIHJ1bnMgdGhlIHRlc3RzIGlm
IHRoZXJlIHdhcyBubyBmYXRhbCBmYWlsdXJlcywgYW5kCitmaW5hbGx5IGNhbGxzIGBUZWFyRG93
bigpYCBvZiB0aGUgZW52aXJvbm1lbnQgb2JqZWN0LgorCitJdCdzIE9LIHRvIHJlZ2lzdGVyIG11
bHRpcGxlIGVudmlyb25tZW50IG9iamVjdHMuIEluIHRoaXMgY2FzZSwgdGhlaXIgYFNldFVwKClg
Cit3aWxsIGJlIGNhbGxlZCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgcmVnaXN0ZXJlZCwgYW5kIHRo
ZWlyIGBUZWFyRG93bigpYCB3aWxsIGJlCitjYWxsZWQgaW4gdGhlIHJldmVyc2Ugb3JkZXIuCisK
K05vdGUgdGhhdCBHb29nbGUgVGVzdCB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHJlZ2lzdGVyZWQg
ZW52aXJvbm1lbnQgb2JqZWN0cy4KK1RoZXJlZm9yZSAqKmRvIG5vdCBkZWxldGUgdGhlbSoqIGJ5
IHlvdXJzZWxmLgorCitZb3Ugc2hvdWxkIGNhbGwgYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgp
YCBiZWZvcmUgYFJVTl9BTExfVEVTVFMoKWAgaXMKK2NhbGxlZCwgcHJvYmFibHkgaW4gYG1haW4o
KWAuIElmIHlvdSB1c2UgYGd0ZXN0X21haW5gLCB5b3UgbmVlZCB0byAgICAgIGNhbGwKK3RoaXMg
YmVmb3JlIGBtYWluKClgIHN0YXJ0cyBmb3IgaXQgdG8gdGFrZSBlZmZlY3QuIE9uZSB3YXkgdG8g
ZG8gdGhpcyBpcyB0bworZGVmaW5lIGEgZ2xvYmFsIHZhcmlhYmxlIGxpa2UgdGhpczoKKworYGBg
Cis6OnRlc3Rpbmc6OkVudmlyb25tZW50KiBjb25zdCBmb29fZW52ID0gOjp0ZXN0aW5nOjpBZGRH
bG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEZvb0Vudmlyb25tZW50KTsKK2BgYAorCitIb3dldmVy
LCB3ZSBzdHJvbmdseSByZWNvbW1lbmQgeW91IHRvIHdyaXRlIHlvdXIgb3duIGBtYWluKClgIGFu
ZCBjYWxsCitgQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KClgIHRoZXJlLCBhcyByZWx5aW5nIG9u
IGluaXRpYWxpemF0aW9uIG9mIGdsb2JhbAordmFyaWFibGVzIG1ha2VzIHRoZSBjb2RlIGhhcmRl
ciB0byByZWFkIGFuZCBtYXkgY2F1c2UgcHJvYmxlbXMgd2hlbiB5b3UKK3JlZ2lzdGVyIG11bHRp
cGxlIGVudmlyb25tZW50cyBmcm9tIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cyBhbmQgdGhl
CitlbnZpcm9ubWVudHMgaGF2ZSBkZXBlbmRlbmNpZXMgYW1vbmcgdGhlbSAocmVtZW1iZXIgdGhh
dCB0aGUgY29tcGlsZXIgZG9lc24ndAorZ3VhcmFudGVlIHRoZSBvcmRlciBpbiB3aGljaCBnbG9i
YWwgdmFyaWFibGVzIGZyb20gZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXRzCithcmUgaW5pdGlh
bGl6ZWQpLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworCisjIFZh
bHVlIFBhcmFtZXRlcml6ZWQgVGVzdHMgIworCitfVmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0c18g
YWxsb3cgeW91IHRvIHRlc3QgeW91ciBjb2RlIHdpdGggZGlmZmVyZW50CitwYXJhbWV0ZXJzIHdp
dGhvdXQgd3JpdGluZyBtdWx0aXBsZSBjb3BpZXMgb2YgdGhlIHNhbWUgdGVzdC4KKworU3VwcG9z
ZSB5b3Ugd3JpdGUgYSB0ZXN0IGZvciB5b3VyIGNvZGUgYW5kIHRoZW4gcmVhbGl6ZSB0aGF0IHlv
dXIgY29kZSBpcyBhZmZlY3RlZCBieSBhIHByZXNlbmNlIG9mIGEgQm9vbGVhbiBjb21tYW5kIGxp
bmUgZmxhZy4KKworYGBgCitURVNUKE15Q29kZVRlc3QsIFRlc3RGb28pIHsKKyAgLy8gQSBjb2Rl
IHRvIHRlc3QgZm9vKCkuCit9CitgYGAKKworVXN1YWxseSBwZW9wbGUgZmFjdG9yIHRoZWlyIHRl
c3QgY29kZSBpbnRvIGEgZnVuY3Rpb24gd2l0aCBhIEJvb2xlYW4gcGFyYW1ldGVyIGluIHN1Y2gg
c2l0dWF0aW9ucy4gVGhlIGZ1bmN0aW9uIHNldHMgdGhlIGZsYWcsIHRoZW4gZXhlY3V0ZXMgdGhl
IHRlc3RpbmcgY29kZS4KKworYGBgCit2b2lkIFRlc3RGb29IZWxwZXIoYm9vbCBmbGFnX3ZhbHVl
KSB7CisgIGZsYWcgPSBmbGFnX3ZhbHVlOworICAvLyBBIGNvZGUgdG8gdGVzdCBmb28oKS4KK30K
KworVEVTVChNeUNvZGVUZXN0LCBUZXN0Rm9vKSB7CisgIFRlc3RGb29IZWxwZXIoZmFsc2UpOwor
ICBUZXN0Rm9vSGVscGVyKHRydWUpOworfQorYGBgCisKK0J1dCB0aGlzIHNldHVwIGhhcyBzZXJp
b3VzIGRyYXdiYWNrcy4gRmlyc3QsIHdoZW4gYSB0ZXN0IGFzc2VydGlvbiBmYWlscyBpbiB5b3Vy
IHRlc3RzLCBpdCBiZWNvbWVzIHVuY2xlYXIgd2hhdCB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyIGNh
dXNlZCBpdCB0byBmYWlsLiBZb3UgY2FuIHN0cmVhbSBhIGNsYXJpZnlpbmcgbWVzc2FnZSBpbnRv
IHlvdXIgYEVYUEVDVGAvYEFTU0VSVGAgc3RhdGVtZW50cywgYnV0IGl0IHlvdSdsbCBoYXZlIHRv
IGRvIGl0IHdpdGggYWxsIG9mIHRoZW0uIFNlY29uZCwgeW91IGhhdmUgdG8gYWRkIG9uZSBzdWNo
IGhlbHBlciBmdW5jdGlvbiBwZXIgdGVzdC4gV2hhdCBpZiB5b3UgaGF2ZSB0ZW4gdGVzdHM/IFR3
ZW50eT8gQSBodW5kcmVkPworCitWYWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIHdpbGwgbGV0IHlv
dSB3cml0ZSB5b3VyIHRlc3Qgb25seSBvbmNlIGFuZCB0aGVuIGVhc2lseSBpbnN0YW50aWF0ZSBh
bmQgcnVuIGl0IHdpdGggYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBwYXJhbWV0ZXIgdmFsdWVzLgor
CitIZXJlIGFyZSBzb21lIG90aGVyIHNpdHVhdGlvbnMgd2hlbiB2YWx1ZS1wYXJhbWV0ZXJpemVk
IHRlc3RzIGNvbWUgaGFuZHk6CisKKyAgKiBZb3Ugd2FudCB0byB0ZXN0IGRpZmZlcmVudCBpbXBs
ZW1lbnRhdGlvbnMgb2YgYW4gT08gaW50ZXJmYWNlLgorICAqIFlvdSB3YW50IHRvIHRlc3QgeW91
ciBjb2RlIG92ZXIgdmFyaW91cyBpbnB1dHMgKGEuay5hLiBkYXRhLWRyaXZlbiB0ZXN0aW5nKS4g
VGhpcyBmZWF0dXJlIGlzIGVhc3kgdG8gYWJ1c2UsIHNvIHBsZWFzZSBleGVyY2lzZSB5b3VyIGdv
b2Qgc2Vuc2Ugd2hlbiBkb2luZyBpdCEKKworIyMgSG93IHRvIFdyaXRlIFZhbHVlLVBhcmFtZXRl
cml6ZWQgVGVzdHMgIyMKKworVG8gd3JpdGUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cywgZmly
c3QgeW91IHNob3VsZCBkZWZpbmUgYSBmaXh0dXJlCitjbGFzcy4gIEl0IG11c3QgYmUgZGVyaXZl
ZCBmcm9tIGJvdGggYDo6dGVzdGluZzo6VGVzdGAgYW5kCitgOjp0ZXN0aW5nOjpXaXRoUGFyYW1J
bnRlcmZhY2U8VD5gICh0aGUgbGF0dGVyIGlzIGEgcHVyZSBpbnRlcmZhY2UpLAord2hlcmUgYFRg
IGlzIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVlcy4gIEZvciBjb252ZW5pZW5jZSwg
eW91CitjYW4ganVzdCBkZXJpdmUgdGhlIGZpeHR1cmUgY2xhc3MgZnJvbSBgOjp0ZXN0aW5nOjpU
ZXN0V2l0aFBhcmFtPFQ+YCwKK3doaWNoIGl0c2VsZiBpcyBkZXJpdmVkIGZyb20gYm90aCBgOjp0
ZXN0aW5nOjpUZXN0YCBhbmQKK2A6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxUPmAuIGBU
YCBjYW4gYmUgYW55IGNvcHlhYmxlIHR5cGUuIElmCitpdCdzIGEgcmF3IHBvaW50ZXIsIHlvdSBh
cmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBsaWZlc3BhbiBvZgordGhlIHBvaW50ZWQg
dmFsdWVzLgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0
aFBhcmFtPGNvbnN0IGNoYXIqPiB7CisgIC8vIFlvdSBjYW4gaW1wbGVtZW50IGFsbCB0aGUgdXN1
YWwgZml4dHVyZSBjbGFzcyBtZW1iZXJzIGhlcmUuCisgIC8vIFRvIGFjY2VzcyB0aGUgdGVzdCBw
YXJhbWV0ZXIsIGNhbGwgR2V0UGFyYW0oKSBmcm9tIGNsYXNzCisgIC8vIFRlc3RXaXRoUGFyYW08
VD4uCit9OworCisvLyBPciwgd2hlbiB5b3Ugd2FudCB0byBhZGQgcGFyYW1ldGVycyB0byBhIHBy
ZS1leGlzdGluZyBmaXh0dXJlIGNsYXNzOgorY2xhc3MgQmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpUZXN0IHsKKyAgLi4uCit9OworY2xhc3MgQmFyVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCwK
KyAgICAgICAgICAgICAgICBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8Y29u
c3QgY2hhcio+IHsKKyAgLi4uCit9OworYGBgCisKK1RoZW4sIHVzZSB0aGUgYFRFU1RfUGAgbWFj
cm8gdG8gZGVmaW5lIGFzIG1hbnkgdGVzdCBwYXR0ZXJucyB1c2luZwordGhpcyBmaXh0dXJlIGFz
IHlvdSB3YW50LiAgVGhlIGBfUGAgc3VmZml4IGlzIGZvciAicGFyYW1ldGVyaXplZCIgb3IKKyJw
YXR0ZXJuIiwgd2hpY2hldmVyIHlvdSBwcmVmZXIgdG8gdGhpbmsuCisKK2BgYAorVEVTVF9QKEZv
b1Rlc3QsIERvZXNCbGFoKSB7CisgIC8vIEluc2lkZSBhIHRlc3QsIGFjY2VzcyB0aGUgdGVzdCBw
YXJhbWV0ZXIgd2l0aCB0aGUgR2V0UGFyYW0oKSBtZXRob2QKKyAgLy8gb2YgdGhlIFRlc3RXaXRo
UGFyYW08VD4gY2xhc3M6CisgIEVYUEVDVF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsKKyAg
Li4uCit9CisKK1RFU1RfUChGb29UZXN0LCBIYXNCbGFoQmxhaCkgeworICAuLi4KK30KK2BgYAor
CitGaW5hbGx5LCB5b3UgY2FuIHVzZSBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIHRvIGluc3Rh
bnRpYXRlIHRoZSB0ZXN0CitjYXNlIHdpdGggYW55IHNldCBvZiBwYXJhbWV0ZXJzIHlvdSB3YW50
LiBHb29nbGUgVGVzdCBkZWZpbmVzIGEgbnVtYmVyIG9mCitmdW5jdGlvbnMgZm9yIGdlbmVyYXRp
bmcgdGVzdCBwYXJhbWV0ZXJzLiBUaGV5IHJldHVybiB3aGF0IHdlIGNhbGwKKyhzdXJwcmlzZSEp
IF9wYXJhbWV0ZXIgZ2VuZXJhdG9yc18uIEhlcmUgaXMgYSBzdW1tYXJ5IG9mIHRoZW0sCit3aGlj
aCBhcmUgYWxsIGluIHRoZSBgdGVzdGluZ2AgbmFtZXNwYWNlOgorCit8IGBSYW5nZShiZWdpbiwg
ZW5kWywgc3RlcF0pYCB8IFlpZWxkcyB2YWx1ZXMgYHtiZWdpbiwgYmVnaW4rc3RlcCwgYmVnaW4r
c3RlcCtzdGVwLCAuLi59YC4gVGhlIHZhbHVlcyBkbyBub3QgaW5jbHVkZSBgZW5kYC4gYHN0ZXBg
IGRlZmF1bHRzIHRvIDEuIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBg
VmFsdWVzKHYxLCB2MiwgLi4uLCB2TilgICAgfCBZaWVsZHMgdmFsdWVzIGB7djEsIHYyLCAuLi4s
IHZOfWAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBWYWx1ZXNJbihjb250YWluZXIpYCBh
bmQgYFZhbHVlc0luKGJlZ2luLCBlbmQpYCB8IFlpZWxkcyB2YWx1ZXMgZnJvbSBhIEMtc3R5bGUg
YXJyYXksIGFuIFNUTC1zdHlsZSBjb250YWluZXIsIG9yIGFuIGl0ZXJhdG9yIHJhbmdlIGBbYmVn
aW4sIGVuZClgLiBgY29udGFpbmVyYCwgYGJlZ2luYCwgYW5kIGBlbmRgIGNhbiBiZSBleHByZXNz
aW9ucyB3aG9zZSB2YWx1ZXMgYXJlIGRldGVybWluZWQgYXQgcnVuIHRpbWUuICB8Cit8IGBCb29s
KClgICAgICAgICAgICAgICAgICAgICB8IFlpZWxkcyBzZXF1ZW5jZSBge2ZhbHNlLCB0cnVlfWAu
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYENvbWJpbmUoZzEsIGcyLCAuLi4sIGdOKWAg
IHwgWWllbGRzIGFsbCBjb21iaW5hdGlvbnMgKHRoZSBDYXJ0ZXNpYW4gcHJvZHVjdCBmb3IgdGhl
IG1hdGggc2F2dnkpIG9mIHRoZSB2YWx1ZXMgZ2VuZXJhdGVkIGJ5IHRoZSBgTmAgZ2VuZXJhdG9y
cy4gVGhpcyBpcyBvbmx5IGF2YWlsYWJsZSBpZiB5b3VyIHN5c3RlbSBwcm92aWRlcyB0aGUgYDx0
cjEvdHVwbGU+YCBoZWFkZXIuIElmIHlvdSBhcmUgc3VyZSB5b3VyIHN5c3RlbSBkb2VzLCBhbmQg
R29vZ2xlIFRlc3QgZGlzYWdyZWVzLCB5b3UgY2FuIG92ZXJyaWRlIGl0IGJ5IGRlZmluaW5nIGBH
VEVTVF9IQVNfVFIxX1RVUExFPTFgLiBTZWUgY29tbWVudHMgaW4gW2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcG9ydC5oXSguLi9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQu
aCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uIHwKKworRm9yIG1vcmUgZGV0YWlscywgc2VlIHRoZSBj
b21tZW50cyBhdCB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlc2UgZnVuY3Rpb25zIGluIHRoZSBbc291
cmNlIGNvZGVdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oKS4KKworVGhlIGZv
bGxvd2luZyBzdGF0ZW1lbnQgd2lsbCBpbnN0YW50aWF0ZSB0ZXN0cyBmcm9tIHRoZSBgRm9vVGVz
dGAgdGVzdCBjYXNlCitlYWNoIHdpdGggcGFyYW1ldGVyIHZhbHVlcyBgIm1lZW55ImAsIGAibWlu
eSJgLCBhbmQgYCJtb2UiYC4KKworYGBgCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChJbnN0YW50
aWF0aW9uTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvb1Rlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygibWVlbnkiLCAibWlueSIsICJtb2UiKSk7
CitgYGAKKworVG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50IGluc3RhbmNlcyBvZiB0aGUgcGF0dGVy
biAoeWVzLCB5b3UgY2FuCitpbnN0YW50aWF0ZSBpdCBtb3JlIHRoYW4gb25jZSksIHRoZSBmaXJz
dCBhcmd1bWVudCB0bworYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCBpcyBhIHByZWZpeCB0aGF0
IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGFjdHVhbAordGVzdCBjYXNlIG5hbWUuIFJlbWVtYmVyIHRv
IHBpY2sgdW5pcXVlIHByZWZpeGVzIGZvciBkaWZmZXJlbnQKK2luc3RhbnRpYXRpb25zLiBUaGUg
dGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhhdmUgdGhlc2UKK25hbWVz
OgorCisgICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMGAgZm9yIGAibWVl
bnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzFgIGZvciBgIm1p
bnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzJgIGZvciBgIm1v
ZSJgCisgICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMGAgZm9yIGAi
bWVlbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzFgIGZv
ciBgIm1pbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzJg
IGZvciBgIm1vZSJgCisKK1lvdSBjYW4gdXNlIHRoZXNlIG5hbWVzIGluIFstLWd0ZXN0XF9maWx0
ZXJdKCNydW5uaW5nLWEtc3Vic2V0LW9mLXRoZS10ZXN0cykuCisKK1RoaXMgc3RhdGVtZW50IHdp
bGwgaW5zdGFudGlhdGUgYWxsIHRlc3RzIGZyb20gYEZvb1Rlc3RgIGFnYWluLCBlYWNoCit3aXRo
IHBhcmFtZXRlciB2YWx1ZXMgYCJjYXQiYCBhbmQgYCJkb2ciYDoKKworYGBgCitjb25zdCBjaGFy
KiBwZXRzW10gPSB7ImNhdCIsICJkb2cifTsKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFub3Ro
ZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6
dGVzdGluZzo6VmFsdWVzSW4ocGV0cykpOworYGBgCisKK1RoZSB0ZXN0cyBmcm9tIHRoZSBpbnN0
YW50aWF0aW9uIGFib3ZlIHdpbGwgaGF2ZSB0aGVzZSBuYW1lczoKKworICAqIGBBbm90aGVySW5z
dGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8wYCBmb3IgYCJjYXQiYAorICAqIGBBbm90
aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8xYCBmb3IgYCJkb2ciYAorICAq
IGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8wYCBmb3IgYCJj
YXQiYAorICAqIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8x
YCBmb3IgYCJkb2ciYAorCitQbGVhc2Ugbm90ZSB0aGF0IGBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UGAgd2lsbCBpbnN0YW50aWF0ZSBfYWxsXwordGVzdHMgaW4gdGhlIGdpdmVuIHRlc3QgY2FzZSwg
d2hldGhlciB0aGVpciBkZWZpbml0aW9ucyBjb21lIGJlZm9yZSBvcgorX2FmdGVyXyB0aGUgYElO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCBzdGF0ZW1lbnQuCisKK1lvdSBjYW4gc2VlCitbdGhlc2Vd
KC4uL3NhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYykKK1tmaWxlc10oLi4vc2FtcGxlcy9zYW1w
bGU4X3VuaXR0ZXN0LmNjKSBmb3IgbW9yZSBleGFtcGxlcy4KKworX0F2YWlsYWJpbGl0eV86IExp
bnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYzsgc2luY2UgdmVy
c2lvbiAxLjIuMC4KKworIyMgQ3JlYXRpbmcgVmFsdWUtUGFyYW1ldGVyaXplZCBBYnN0cmFjdCBU
ZXN0cyAjIworCitJbiB0aGUgYWJvdmUsIHdlIGRlZmluZSBhbmQgaW5zdGFudGlhdGUgYEZvb1Rl
c3RgIGluIHRoZSBzYW1lIHNvdXJjZQorZmlsZS4gU29tZXRpbWVzIHlvdSBtYXkgd2FudCB0byBk
ZWZpbmUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBpbiBhCitsaWJyYXJ5IGFuZCBsZXQgb3Ro
ZXIgcGVvcGxlIGluc3RhbnRpYXRlIHRoZW0gbGF0ZXIuIFRoaXMgcGF0dGVybiBpcwora25vd24g
YXMgPGk+YWJzdHJhY3QgdGVzdHM8L2k+LiBBcyBhbiBleGFtcGxlIG9mIGl0cyBhcHBsaWNhdGlv
biwgd2hlbiB5b3UKK2FyZSBkZXNpZ25pbmcgYW4gaW50ZXJmYWNlIHlvdSBjYW4gd3JpdGUgYSBz
dGFuZGFyZCBzdWl0ZSBvZiBhYnN0cmFjdAordGVzdHMgKHBlcmhhcHMgdXNpbmcgYSBmYWN0b3J5
IGZ1bmN0aW9uIGFzIHRoZSB0ZXN0IHBhcmFtZXRlcikgdGhhdAorYWxsIGltcGxlbWVudGF0aW9u
cyBvZiB0aGUgaW50ZXJmYWNlIGFyZSBleHBlY3RlZCB0byBwYXNzLiBXaGVuCitzb21lb25lIGlt
cGxlbWVudHMgdGhlIGludGVyZmFjZSwgaGUgY2FuIGluc3RhbnRpYXRlIHlvdXIgc3VpdGUgdG8g
Z2V0CithbGwgdGhlIGludGVyZmFjZS1jb25mb3JtYW5jZSB0ZXN0cyBmb3IgZnJlZS4KKworVG8g
ZGVmaW5lIGFic3RyYWN0IHRlc3RzLCB5b3Ugc2hvdWxkIG9yZ2FuaXplIHlvdXIgY29kZSBsaWtl
IHRoaXM6CisKKyAgMS4gUHV0IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBwYXJhbWV0ZXJpemVkIHRl
c3QgZml4dHVyZSBjbGFzcyAoZS5nLiBgRm9vVGVzdGApIGluIGEgaGVhZGVyIGZpbGUsIHNheSBg
Zm9vX3BhcmFtX3Rlc3QuaGAuIFRoaW5rIG9mIHRoaXMgYXMgX2RlY2xhcmluZ18geW91ciBhYnN0
cmFjdCB0ZXN0cy4KKyAgMS4gUHV0IHRoZSBgVEVTVF9QYCBkZWZpbml0aW9ucyBpbiBgZm9vX3Bh
cmFtX3Rlc3QuY2NgLCB3aGljaCBpbmNsdWRlcyBgZm9vX3BhcmFtX3Rlc3QuaGAuIFRoaW5rIG9m
IHRoaXMgYXMgX2ltcGxlbWVudGluZ18geW91ciBhYnN0cmFjdCB0ZXN0cy4KKworT25jZSB0aGV5
IGFyZSBkZWZpbmVkLCB5b3UgY2FuIGluc3RhbnRpYXRlIHRoZW0gYnkgaW5jbHVkaW5nCitgZm9v
X3BhcmFtX3Rlc3QuaGAsIGludm9raW5nIGBJTlNUQU5USUFURV9URVNUX0NBU0VfUCgpYCwgYW5k
IGxpbmtpbmcKK3dpdGggYGZvb19wYXJhbV90ZXN0LmNjYC4gWW91IGNhbiBpbnN0YW50aWF0ZSB0
aGUgc2FtZSBhYnN0cmFjdCB0ZXN0CitjYXNlIG11bHRpcGxlIHRpbWVzLCBwb3NzaWJseSBpbiBk
aWZmZXJlbnQgc291cmNlIGZpbGVzLgorCisjIFR5cGVkIFRlc3RzICMKKworU3VwcG9zZSB5b3Ug
aGF2ZSBtdWx0aXBsZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZAor
d2FudCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb2YgdGhlbSBzYXRpc2Z5IHNvbWUgY29tbW9uIHJl
cXVpcmVtZW50cy4KK09yLCB5b3UgbWF5IGhhdmUgZGVmaW5lZCBzZXZlcmFsIHR5cGVzIHRoYXQg
YXJlIHN1cHBvc2VkIHRvIGNvbmZvcm0gdG8KK3RoZSBzYW1lICJjb25jZXB0IiBhbmQgeW91IHdh
bnQgdG8gdmVyaWZ5IGl0LiAgSW4gYm90aCBjYXNlcywgeW91IHdhbnQKK3RoZSBzYW1lIHRlc3Qg
bG9naWMgcmVwZWF0ZWQgZm9yIGRpZmZlcmVudCB0eXBlcy4KKworV2hpbGUgeW91IGNhbiB3cml0
ZSBvbmUgYFRFU1RgIG9yIGBURVNUX0ZgIGZvciBlYWNoIHR5cGUgeW91IHdhbnQgdG8KK3Rlc3Qg
KGFuZCB5b3UgbWF5IGV2ZW4gZmFjdG9yIHRoZSB0ZXN0IGxvZ2ljIGludG8gYSBmdW5jdGlvbiB0
ZW1wbGF0ZQordGhhdCB5b3UgaW52b2tlIGZyb20gdGhlIGBURVNUYCksIGl0J3MgdGVkaW91cyBh
bmQgZG9lc24ndCBzY2FsZToKK2lmIHlvdSB3YW50IF9tXyB0ZXN0cyBvdmVyIF9uXyB0eXBlcywg
eW91J2xsIGVuZCB1cCB3cml0aW5nIF9tXCpuXworYFRFU1Rgcy4KKworX1R5cGVkIHRlc3RzXyBh
bGxvdyB5b3UgdG8gcmVwZWF0IHRoZSBzYW1lIHRlc3QgbG9naWMgb3ZlciBhIGxpc3Qgb2YKK3R5
cGVzLiAgWW91IG9ubHkgbmVlZCB0byB3cml0ZSB0aGUgdGVzdCBsb2dpYyBvbmNlLCBhbHRob3Vn
aCB5b3UgbXVzdAora25vdyB0aGUgdHlwZSBsaXN0IHdoZW4gd3JpdGluZyB0eXBlZCB0ZXN0cy4g
IEhlcmUncyBob3cgeW91IGRvIGl0OgorCitGaXJzdCwgZGVmaW5lIGEgZml4dHVyZSBjbGFzcyB0
ZW1wbGF0ZS4gIEl0IHNob3VsZCBiZSBwYXJhbWV0ZXJpemVkCitieSBhIHR5cGUuICBSZW1lbWJl
ciB0byBkZXJpdmUgaXQgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0YDoKKworYGBgCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBw
dWJsaWM6CisgIC4uLgorICB0eXBlZGVmIHN0ZDo6bGlzdDxUPiBMaXN0OworICBzdGF0aWMgVCBz
aGFyZWRfOworICBUIHZhbHVlXzsKK307CitgYGAKKworTmV4dCwgYXNzb2NpYXRlIGEgbGlzdCBv
ZiB0eXBlcyB3aXRoIHRoZSB0ZXN0IGNhc2UsIHdoaWNoIHdpbGwgYmUKK3JlcGVhdGVkIGZvciBl
YWNoIHR5cGUgaW4gdGhlIGxpc3Q6CisKK2BgYAordHlwZWRlZiA6OnRlc3Rpbmc6OlR5cGVzPGNo
YXIsIGludCwgdW5zaWduZWQgaW50PiBNeVR5cGVzOworVFlQRURfVEVTVF9DQVNFKEZvb1Rlc3Qs
IE15VHlwZXMpOworYGBgCisKK1RoZSBgdHlwZWRlZmAgaXMgbmVjZXNzYXJ5IGZvciB0aGUgYFRZ
UEVEX1RFU1RfQ0FTRWAgbWFjcm8gdG8gcGFyc2UKK2NvcnJlY3RseS4gIE90aGVyd2lzZSB0aGUg
Y29tcGlsZXIgd2lsbCB0aGluayB0aGF0IGVhY2ggY29tbWEgaW4gdGhlCit0eXBlIGxpc3QgaW50
cm9kdWNlcyBhIG5ldyBtYWNybyBhcmd1bWVudC4KKworVGhlbiwgdXNlIGBUWVBFRF9URVNUKClg
IGluc3RlYWQgb2YgYFRFU1RfRigpYCB0byBkZWZpbmUgYSB0eXBlZCB0ZXN0Citmb3IgdGhpcyB0
ZXN0IGNhc2UuICBZb3UgY2FuIHJlcGVhdCB0aGlzIGFzIG1hbnkgdGltZXMgYXMgeW91IHdhbnQ6
CisKK2BgYAorVFlQRURfVEVTVChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJbnNpZGUgYSB0
ZXN0LCByZWZlciB0byB0aGUgc3BlY2lhbCBuYW1lIFR5cGVQYXJhbSB0byBnZXQgdGhlIHR5cGUK
KyAgLy8gcGFyYW1ldGVyLiAgU2luY2Ugd2UgYXJlIGluc2lkZSBhIGRlcml2ZWQgY2xhc3MgdGVt
cGxhdGUsIEMrKyByZXF1aXJlcworICAvLyB1cyB0byB2aXNpdCB0aGUgbWVtYmVycyBvZiBGb29U
ZXN0IHZpYSAndGhpcycuCisgIFR5cGVQYXJhbSBuID0gdGhpcy0+dmFsdWVfOworCisgIC8vIFRv
IHZpc2l0IHN0YXRpYyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlLCBhZGQgdGhlICdUZXN0Rml4dHVy
ZTo6JworICAvLyBwcmVmaXguCisgIG4gKz0gVGVzdEZpeHR1cmU6OnNoYXJlZF87CisKKyAgLy8g
VG8gcmVmZXIgdG8gdHlwZWRlZnMgaW4gdGhlIGZpeHR1cmUsIGFkZCB0aGUgJ3R5cGVuYW1lIFRl
c3RGaXh0dXJlOjonCisgIC8vIHByZWZpeC4gIFRoZSAndHlwZW5hbWUnIGlzIHJlcXVpcmVkIHRv
IHNhdGlzZnkgdGhlIGNvbXBpbGVyLgorICB0eXBlbmFtZSBUZXN0Rml4dHVyZTo6TGlzdCB2YWx1
ZXM7CisgIHZhbHVlcy5wdXNoX2JhY2sobik7CisgIC4uLgorfQorCitUWVBFRF9URVNUKEZvb1Rl
c3QsIEhhc1Byb3BlcnR5QSkgeyAuLi4gfQorYGBgCisKK1lvdSBjYW4gc2VlIGBzYW1wbGVzL3Nh
bXBsZTZfdW5pdHRlc3QuY2NgIGZvciBhIGNvbXBsZXRlIGV4YW1wbGUuCisKK19BdmFpbGFiaWxp
dHk6XyBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBNYWM7Citz
aW5jZSB2ZXJzaW9uIDEuMS4wLgorCisjIFR5cGUtUGFyYW1ldGVyaXplZCBUZXN0cyAjCisKK19U
eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHNfIGFyZSBsaWtlIHR5cGVkIHRlc3RzLCBleGNlcHQgdGhh
dCB0aGV5Citkb24ndCByZXF1aXJlIHlvdSB0byBrbm93IHRoZSBsaXN0IG9mIHR5cGVzIGFoZWFk
IG9mIHRpbWUuICBJbnN0ZWFkLAoreW91IGNhbiBkZWZpbmUgdGhlIHRlc3QgbG9naWMgZmlyc3Qg
YW5kIGluc3RhbnRpYXRlIGl0IHdpdGggZGlmZmVyZW50Cit0eXBlIGxpc3RzIGxhdGVyLiAgWW91
IGNhbiBldmVuIGluc3RhbnRpYXRlIGl0IG1vcmUgdGhhbiBvbmNlIGluIHRoZQorc2FtZSBwcm9n
cmFtLgorCitJZiB5b3UgYXJlIGRlc2lnbmluZyBhbiBpbnRlcmZhY2Ugb3IgY29uY2VwdCwgeW91
IGNhbiBkZWZpbmUgYSBzdWl0ZQorb2YgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzIHRvIHZlcmlm
eSBwcm9wZXJ0aWVzIHRoYXQgYW55IHZhbGlkCitpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaW50ZXJm
YWNlL2NvbmNlcHQgc2hvdWxkIGhhdmUuICBUaGVuLCB0aGUgYXV0aG9yCitvZiBlYWNoIGltcGxl
bWVudGF0aW9uIGNhbiBqdXN0IGluc3RhbnRpYXRlIHRoZSB0ZXN0IHN1aXRlIHdpdGggaGlzCit0
eXBlIHRvIHZlcmlmeSB0aGF0IGl0IGNvbmZvcm1zIHRvIHRoZSByZXF1aXJlbWVudHMsIHdpdGhv
dXQgaGF2aW5nIHRvCit3cml0ZSBzaW1pbGFyIHRlc3RzIHJlcGVhdGVkbHkuICBIZXJlJ3MgYW4g
ZXhhbXBsZToKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUsIGFzIHdl
IGRpZCB3aXRoIHR5cGVkIHRlc3RzOgorCitgYGAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xh
c3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICAuLi4KK307CitgYGAKKwor
TmV4dCwgZGVjbGFyZSB0aGF0IHlvdSB3aWxsIGRlZmluZSBhIHR5cGUtcGFyYW1ldGVyaXplZCB0
ZXN0IGNhc2U6CisKK2BgYAorVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7CitgYGAKKworVGhl
IGBfUGAgc3VmZml4IGlzIGZvciAicGFyYW1ldGVyaXplZCIgb3IgInBhdHRlcm4iLCB3aGljaGV2
ZXIgeW91CitwcmVmZXIgdG8gdGhpbmsuCisKK1RoZW4sIHVzZSBgVFlQRURfVEVTVF9QKClgIHRv
IGRlZmluZSBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LiAgWW91CitjYW4gcmVwZWF0IHRoaXMg
YXMgbWFueSB0aW1lcyBhcyB5b3Ugd2FudDoKKworYGBgCitUWVBFRF9URVNUX1AoRm9vVGVzdCwg
RG9lc0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIgdG8gVHlwZVBhcmFtIHRvIGdl
dCB0aGUgdHlwZSBwYXJhbWV0ZXIuCisgIFR5cGVQYXJhbSBuID0gMDsKKyAgLi4uCit9CisKK1RZ
UEVEX1RFU1RfUChGb29UZXN0LCBIYXNQcm9wZXJ0eUEpIHsgLi4uIH0KK2BgYAorCitOb3cgdGhl
IHRyaWNreSBwYXJ0OiB5b3UgbmVlZCB0byByZWdpc3RlciBhbGwgdGVzdCBwYXR0ZXJucyB1c2lu
ZyB0aGUKK2BSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUGAgbWFjcm8gYmVmb3JlIHlvdSBjYW4g
aW5zdGFudGlhdGUgdGhlbS4KK1RoZSBmaXJzdCBhcmd1bWVudCBvZiB0aGUgbWFjcm8gaXMgdGhl
IHRlc3QgY2FzZSBuYW1lOyB0aGUgcmVzdCBhcmUKK3RoZSBuYW1lcyBvZiB0aGUgdGVzdHMgaW4g
dGhpcyB0ZXN0IGNhc2U6CisKK2BgYAorUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERvZXNCbGFoLCBIYXNQcm9wZXJ0eUEpOwor
YGBgCisKK0ZpbmFsbHksIHlvdSBhcmUgZnJlZSB0byBpbnN0YW50aWF0ZSB0aGUgcGF0dGVybiB3
aXRoIHRoZSB0eXBlcyB5b3UKK3dhbnQuICBJZiB5b3UgcHV0IHRoZSBhYm92ZSBjb2RlIGluIGEg
aGVhZGVyIGZpbGUsIHlvdSBjYW4gYCNpbmNsdWRlYAoraXQgaW4gbXVsdGlwbGUgQysrIHNvdXJj
ZSBmaWxlcyBhbmQgaW5zdGFudGlhdGUgaXQgbXVsdGlwbGUgdGltZXMuCisKK2BgYAordHlwZWRl
ZiA6OnRlc3Rpbmc6OlR5cGVzPGNoYXIsIGludCwgdW5zaWduZWQgaW50PiBNeVR5cGVzOworSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMpOworYGBgCisK
K1RvIGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4sIHRoZSBm
aXJzdCBhcmd1bWVudAordG8gdGhlIGBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUGAgbWFj
cm8gaXMgYSBwcmVmaXggdGhhdCB3aWxsIGJlCithZGRlZCB0byB0aGUgYWN0dWFsIHRlc3QgY2Fz
ZSBuYW1lLiAgUmVtZW1iZXIgdG8gcGljayB1bmlxdWUgcHJlZml4ZXMKK2ZvciBkaWZmZXJlbnQg
aW5zdGFuY2VzLgorCitJbiB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoZSB0eXBlIGxpc3QgY29u
dGFpbnMgb25seSBvbmUgdHlwZSwgeW91CitjYW4gd3JpdGUgdGhhdCB0eXBlIGRpcmVjdGx5IHdp
dGhvdXQgYDo6dGVzdGluZzo6VHlwZXM8Li4uPmAsIGxpa2UgdGhpczoKKworYGBgCitJTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgaW50KTsKK2BgYAorCitZb3UgY2Fu
IHNlZSBgc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjYCBmb3IgYSBjb21wbGV0ZSBleGFtcGxl
LgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9y
IGFib3ZlKSwgTWFjOworc2luY2UgdmVyc2lvbiAxLjEuMC4KKworIyBUZXN0aW5nIFByaXZhdGUg
Q29kZSAjCisKK0lmIHlvdSBjaGFuZ2UgeW91ciBzb2Z0d2FyZSdzIGludGVybmFsIGltcGxlbWVu
dGF0aW9uLCB5b3VyIHRlc3RzIHNob3VsZCBub3QKK2JyZWFrIGFzIGxvbmcgYXMgdGhlIGNoYW5n
ZSBpcyBub3Qgb2JzZXJ2YWJsZSBieSB1c2Vycy4gVGhlcmVmb3JlLCBwZXIgdGhlCitfYmxhY2st
Ym94IHRlc3RpbmcgcHJpbmNpcGxlXywgbW9zdCBvZiB0aGUgdGltZSB5b3Ugc2hvdWxkIHRlc3Qg
eW91ciBjb2RlCit0aHJvdWdoIGl0cyBwdWJsaWMgaW50ZXJmYWNlcy4KKworSWYgeW91IHN0aWxs
IGZpbmQgeW91cnNlbGYgbmVlZGluZyB0byB0ZXN0IGludGVybmFsIGltcGxlbWVudGF0aW9uIGNv
ZGUsCitjb25zaWRlciBpZiB0aGVyZSdzIGEgYmV0dGVyIGRlc2lnbiB0aGF0IHdvdWxkbid0IHJl
cXVpcmUgeW91IHRvIGRvIHNvLiBJZiB5b3UKK2Fic29sdXRlbHkgaGF2ZSB0byB0ZXN0IG5vbi1w
dWJsaWMgaW50ZXJmYWNlIGNvZGUgdGhvdWdoLCB5b3UgY2FuLiBUaGVyZSBhcmUKK3R3byBjYXNl
cyB0byBjb25zaWRlcjoKKworICAqIFN0YXRpYyBmdW5jdGlvbnMgKF9ub3RfIHRoZSBzYW1lIGFz
IHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zISkgb3IgdW5uYW1lZCBuYW1lc3BhY2VzLCBhbmQKKyAg
KiBQcml2YXRlIG9yIHByb3RlY3RlZCBjbGFzcyBtZW1iZXJzCisKKyMjIFN0YXRpYyBGdW5jdGlv
bnMgIyMKKworQm90aCBzdGF0aWMgZnVuY3Rpb25zIGFuZCBkZWZpbml0aW9ucy9kZWNsYXJhdGlv
bnMgaW4gYW4gdW5uYW1lZCBuYW1lc3BhY2UgYXJlCitvbmx5IHZpc2libGUgd2l0aGluIHRoZSBz
YW1lIHRyYW5zbGF0aW9uIHVuaXQuIFRvIHRlc3QgdGhlbSwgeW91IGNhbiBgI2luY2x1ZGVgCit0
aGUgZW50aXJlIGAuY2NgIGZpbGUgYmVpbmcgdGVzdGVkIGluIHlvdXIgYCpfdGVzdC5jY2AgZmls
ZS4gKGAjaW5jbHVkZWBpbmcgYC5jY2AKK2ZpbGVzIGlzIG5vdCBhIGdvb2Qgd2F5IHRvIHJldXNl
IGNvZGUgLSB5b3Ugc2hvdWxkIG5vdCBkbyB0aGlzIGluIHByb2R1Y3Rpb24KK2NvZGUhKQorCitI
b3dldmVyLCBhIGJldHRlciBhcHByb2FjaCBpcyB0byBtb3ZlIHRoZSBwcml2YXRlIGNvZGUgaW50
byB0aGUKK2Bmb286OmludGVybmFsYCBuYW1lc3BhY2UsIHdoZXJlIGBmb29gIGlzIHRoZSBuYW1l
c3BhY2UgeW91ciBwcm9qZWN0IG5vcm1hbGx5Cit1c2VzLCBhbmQgcHV0IHRoZSBwcml2YXRlIGRl
Y2xhcmF0aW9ucyBpbiBhIGAqLWludGVybmFsLmhgIGZpbGUuIFlvdXIKK3Byb2R1Y3Rpb24gYC5j
Y2AgZmlsZXMgYW5kIHlvdXIgdGVzdHMgYXJlIGFsbG93ZWQgdG8gaW5jbHVkZSB0aGlzIGludGVy
bmFsCitoZWFkZXIsIGJ1dCB5b3VyIGNsaWVudHMgYXJlIG5vdC4gVGhpcyB3YXksIHlvdSBjYW4g
ZnVsbHkgdGVzdCB5b3VyIGludGVybmFsCitpbXBsZW1lbnRhdGlvbiB3aXRob3V0IGxlYWtpbmcg
aXQgdG8geW91ciBjbGllbnRzLgorCisjIyBQcml2YXRlIENsYXNzIE1lbWJlcnMgIyMKKworUHJp
dmF0ZSBjbGFzcyBtZW1iZXJzIGFyZSBvbmx5IGFjY2Vzc2libGUgZnJvbSB3aXRoaW4gdGhlIGNs
YXNzIG9yIGJ5IGZyaWVuZHMuCitUbyBhY2Nlc3MgYSBjbGFzcycgcHJpdmF0ZSBtZW1iZXJzLCB5
b3UgY2FuIGRlY2xhcmUgeW91ciB0ZXN0IGZpeHR1cmUgYXMgYQorZnJpZW5kIHRvIHRoZSBjbGFz
cyBhbmQgZGVmaW5lIGFjY2Vzc29ycyBpbiB5b3VyIGZpeHR1cmUuIFRlc3RzIHVzaW5nIHRoZQor
Zml4dHVyZSBjYW4gdGhlbiBhY2Nlc3MgdGhlIHByaXZhdGUgbWVtYmVycyBvZiB5b3VyIHByb2R1
Y3Rpb24gY2xhc3MgdmlhIHRoZQorYWNjZXNzb3JzIGluIHRoZSBmaXh0dXJlLiBOb3RlIHRoYXQg
ZXZlbiB0aG91Z2ggeW91ciBmaXh0dXJlIGlzIGEgZnJpZW5kIHRvCit5b3VyIHByb2R1Y3Rpb24g
Y2xhc3MsIHlvdXIgdGVzdHMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IGZyaWVuZHMgdG8gaXQsIGFz
IHRoZXkKK2FyZSB0ZWNobmljYWxseSBkZWZpbmVkIGluIHN1Yi1jbGFzc2VzIG9mIHRoZSBmaXh0
dXJlLgorCitBbm90aGVyIHdheSB0byB0ZXN0IHByaXZhdGUgbWVtYmVycyBpcyB0byByZWZhY3Rv
ciB0aGVtIGludG8gYW4gaW1wbGVtZW50YXRpb24KK2NsYXNzLCB3aGljaCBpcyB0aGVuIGRlY2xh
cmVkIGluIGEgYCotaW50ZXJuYWwuaGAgZmlsZS4gWW91ciBjbGllbnRzIGFyZW4ndAorYWxsb3dl
ZCB0byBpbmNsdWRlIHRoaXMgaGVhZGVyIGJ1dCB5b3VyIHRlc3RzIGNhbi4gU3VjaCBpcyBjYWxs
ZWQgdGhlIFBpbXBsCisoUHJpdmF0ZSBJbXBsZW1lbnRhdGlvbikgaWRpb20uCisKK09yLCB5b3Ug
Y2FuIGRlY2xhcmUgYW4gaW5kaXZpZHVhbCB0ZXN0IGFzIGEgZnJpZW5kIG9mIHlvdXIgY2xhc3Mg
YnkgYWRkaW5nIHRoaXMKK2xpbmUgaW4gdGhlIGNsYXNzIGJvZHk6CisKK2BgYAorRlJJRU5EX1RF
U1QoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSk7CitgYGAKKworRm9yIGV4YW1wbGUsCitgYGAKKy8v
IGZvby5oCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3RfcHJvZC5oIgorCisvLyBEZWZpbmVzIEZSSUVO
RF9URVNULgorY2xhc3MgRm9vIHsKKyAgLi4uCisgcHJpdmF0ZToKKyAgRlJJRU5EX1RFU1QoRm9v
VGVzdCwgQmFyUmV0dXJuc1plcm9Pbk51bGwpOworICBpbnQgQmFyKHZvaWQqIHgpOworfTsKKwor
Ly8gZm9vX3Rlc3QuY2MKKy4uLgorVEVTVChGb29UZXN0LCBCYXJSZXR1cm5zWmVyb09uTnVsbCkg
eworICBGb28gZm9vOworICBFWFBFQ1RfRVEoMCwgZm9vLkJhcihOVUxMKSk7CisgIC8vIFVzZXMg
Rm9vJ3MgcHJpdmF0ZSBtZW1iZXIgQmFyKCkuCit9CitgYGAKKworUGF5IHNwZWNpYWwgYXR0ZW50
aW9uIHdoZW4geW91ciBjbGFzcyBpcyBkZWZpbmVkIGluIGEgbmFtZXNwYWNlLCBhcyB5b3Ugc2hv
dWxkCitkZWZpbmUgeW91ciB0ZXN0IGZpeHR1cmVzIGFuZCB0ZXN0cyBpbiB0aGUgc2FtZSBuYW1l
c3BhY2UgaWYgeW91IHdhbnQgdGhlbSB0bworYmUgZnJpZW5kcyBvZiB5b3VyIGNsYXNzLiBGb3Ig
ZXhhbXBsZSwgaWYgdGhlIGNvZGUgdG8gYmUgdGVzdGVkIGxvb2tzIGxpa2U6CisKK2BgYAorbmFt
ZXNwYWNlIG15X25hbWVzcGFjZSB7CisKK2NsYXNzIEZvbyB7CisgIGZyaWVuZCBjbGFzcyBGb29U
ZXN0OworICBGUklFTkRfVEVTVChGb29UZXN0LCBCYXIpOworICBGUklFTkRfVEVTVChGb29UZXN0
LCBCYXopOworICAuLi4KKyAgZGVmaW5pdGlvbiBvZiB0aGUgY2xhc3MgRm9vCisgIC4uLgorfTsK
KworfSAgLy8gbmFtZXNwYWNlIG15X25hbWVzcGFjZQorYGBgCisKK1lvdXIgdGVzdCBjb2RlIHNo
b3VsZCBiZSBzb21ldGhpbmcgbGlrZToKKworYGBgCituYW1lc3BhY2UgbXlfbmFtZXNwYWNlIHsK
K2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6Cisg
IC4uLgorfTsKKworVEVTVF9GKEZvb1Rlc3QsIEJhcikgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3Qs
IEJheikgeyAuLi4gfQorCit9ICAvLyBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlCitgYGAKKworIyBD
YXRjaGluZyBGYWlsdXJlcyAjCisKK0lmIHlvdSBhcmUgYnVpbGRpbmcgYSB0ZXN0aW5nIHV0aWxp
dHkgb24gdG9wIG9mIEdvb2dsZSBUZXN0LCB5b3UnbGwKK3dhbnQgdG8gdGVzdCB5b3VyIHV0aWxp
dHkuICBXaGF0IGZyYW1ld29yayB3b3VsZCB5b3UgdXNlIHRvIHRlc3QgaXQ/CitHb29nbGUgVGVz
dCwgb2YgY291cnNlLgorCitUaGUgY2hhbGxlbmdlIGlzIHRvIHZlcmlmeSB0aGF0IHlvdXIgdGVz
dGluZyB1dGlsaXR5IHJlcG9ydHMgZmFpbHVyZXMKK2NvcnJlY3RseS4gIEluIGZyYW1ld29ya3Mg
dGhhdCByZXBvcnQgYSBmYWlsdXJlIGJ5IHRocm93aW5nIGFuCitleGNlcHRpb24sIHlvdSBjb3Vs
ZCBjYXRjaCB0aGUgZXhjZXB0aW9uIGFuZCBhc3NlcnQgb24gaXQuICBCdXQgR29vZ2xlCitUZXN0
IGRvZXNuJ3QgdXNlIGV4Y2VwdGlvbnMsIHNvIGhvdyBkbyB3ZSB0ZXN0IHRoYXQgYSBwaWVjZSBv
ZiBjb2RlCitnZW5lcmF0ZXMgYW4gZXhwZWN0ZWQgZmFpbHVyZT8KKworYCJndGVzdC9ndGVzdC1z
cGkuaCJgIGNvbnRhaW5zIHNvbWUgY29uc3RydWN0cyB0byBkbyB0aGlzLiAgQWZ0ZXIgCitgI2lu
Y2x1ZGVgaW5nIHRoaXMgaGVhZGVyLCB5b3UgY2FuIHVzZQorCit8IGBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAorfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKwordG8gYXNzZXJ0IHRoYXQgX3N0YXRl
bWVudF8gZ2VuZXJhdGVzIGEgZmF0YWwgKGUuZy4gYEFTU0VSVF8qYCkgZmFpbHVyZQord2hvc2Ug
bWVzc2FnZSBjb250YWlucyB0aGUgZ2l2ZW4gX3N1YnN0cmluZ18sIG9yIHVzZQorCit8IGBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAorfDotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKworaWYg
eW91IGFyZSBleHBlY3RpbmcgYSBub24tZmF0YWwgKGUuZy4gYEVYUEVDVF8qYCkgZmFpbHVyZS4K
KworRm9yIHRlY2huaWNhbCByZWFzb25zLCB0aGVyZSBhcmUgc29tZSBjYXZlYXRzOgorCisgIDEu
IFlvdSBjYW5ub3Qgc3RyZWFtIGEgZmFpbHVyZSBtZXNzYWdlIHRvIGVpdGhlciBtYWNyby4KKyAg
MS4gX3N0YXRlbWVudF8gaW4gYEVYUEVDVF9GQVRBTF9GQUlMVVJFKClgIGNhbm5vdCByZWZlcmVu
Y2UgbG9jYWwgbm9uLXN0YXRpYyB2YXJpYWJsZXMgb3Igbm9uLXN0YXRpYyBtZW1iZXJzIG9mIGB0
aGlzYCBvYmplY3QuCisgIDEuIF9zdGF0ZW1lbnRfIGluIGBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgp
YCBjYW5ub3QgcmV0dXJuIGEgdmFsdWUuCisKK19Ob3RlOl8gR29vZ2xlIFRlc3QgaXMgZGVzaWdu
ZWQgd2l0aCB0aHJlYWRzIGluIG1pbmQuIE9uY2UgdGhlCitzeW5jaHJvbml6YXRpb24gcHJpbWl0
aXZlcyBpbiBgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCJgIGhhdmUKK2JlZW4gaW1wbGVt
ZW50ZWQsIEdvb2dsZSBUZXN0IHdpbGwgYmVjb21lIHRocmVhZC1zYWZlLCBtZWFuaW5nIHRoYXQK
K3lvdSBjYW4gdGhlbiB1c2UgYXNzZXJ0aW9ucyBpbiBtdWx0aXBsZSB0aHJlYWRzIGNvbmN1cnJl
bnRseS4gQmVmb3JlCit0aGF0LCBob3dldmVyLCBHb29nbGUgVGVzdCBvbmx5IHN1cHBvcnRzIHNp
bmdsZS10aHJlYWRlZCB1c2FnZS4gT25jZQordGhyZWFkLXNhZmUsIGBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRSgpYCBhbmQgYEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKClgCit3aWxsIGNhcHR1cmUgZmFp
bHVyZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkIG9ubHkuIElmIF9zdGF0ZW1lbnRfCitjcmVhdGVz
IG5ldyB0aHJlYWRzLCBmYWlsdXJlcyBpbiB0aGVzZSB0aHJlYWRzIHdpbGwgYmUgaWdub3JlZC4g
SWYKK3lvdSB3YW50IHRvIGNhcHR1cmUgZmFpbHVyZXMgZnJvbSBhbGwgdGhyZWFkcyBpbnN0ZWFk
LCB5b3Ugc2hvdWxkIHVzZQordGhlIGZvbGxvd2luZyBtYWNyb3M6CisKK3wgYEVYUEVDVF9GQVRB
TF9GQUlMVVJFX09OX0FMTF9USFJFQURTKGBfc3RhdGVtZW50LCBzdWJzdHJpbmdfYCk7YCB8Cit8
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tfAorfCBgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoYF9z
dGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtgIHwKKworIyBHZXR0aW5nIHRoZSBDdXJyZW50IFRlc3Qn
cyBOYW1lICMKKworU29tZXRpbWVzIGEgZnVuY3Rpb24gbWF5IG5lZWQgdG8ga25vdyB0aGUgbmFt
ZSBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdC4KK0ZvciBleGFtcGxlLCB5b3UgbWF5IGJl
IHVzaW5nIHRoZSBgU2V0VXAoKWAgbWV0aG9kIG9mIHlvdXIgdGVzdCBmaXh0dXJlIHRvIHNldAor
dGhlIGdvbGRlbiBmaWxlIG5hbWUgYmFzZWQgb24gd2hpY2ggdGVzdCBpcyBydW5uaW5nLiBUaGUg
YDo6dGVzdGluZzo6VGVzdEluZm9gCitjbGFzcyBoYXMgdGhpcyBpbmZvcm1hdGlvbjoKKworYGBg
CituYW1lc3BhY2UgdGVzdGluZyB7CisKK2NsYXNzIFRlc3RJbmZvIHsKKyBwdWJsaWM6CisgIC8v
IFJldHVybnMgdGhlIHRlc3QgY2FzZSBuYW1lIGFuZCB0aGUgdGVzdCBuYW1lLCByZXNwZWN0aXZl
bHkuCisgIC8vCisgIC8vIERvIE5PVCBkZWxldGUgb3IgZnJlZSB0aGUgcmV0dXJuIHZhbHVlIC0g
aXQncyBtYW5hZ2VkIGJ5IHRoZQorICAvLyBUZXN0SW5mbyBjbGFzcy4KKyAgY29uc3QgY2hhciog
dGVzdF9jYXNlX25hbWUoKSBjb25zdDsKKyAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0OworfTsK
KworfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKK2BgYAorCisKKz4gVG8gb2J0YWluIGEgYFRlc3RJ
bmZvYCBvYmplY3QgZm9yIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LCBjYWxsCitgY3VycmVu
dF90ZXN0X2luZm8oKWAgb24gdGhlIGBVbml0VGVzdGAgc2luZ2xldG9uIG9iamVjdDoKKworYGBg
CisvLyBHZXRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0Lgor
Ly8gRG8gTk9UIGRlbGV0ZSB0aGUgcmV0dXJuZWQgb2JqZWN0IC0gaXQncyBtYW5hZ2VkIGJ5IHRo
ZSBVbml0VGVzdCBjbGFzcy4KK2NvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3Rf
aW5mbyA9CisgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVz
dF9pbmZvKCk7CitwcmludGYoIldlIGFyZSBpbiB0ZXN0ICVzIG9mIHRlc3QgY2FzZSAlcy5cbiIs
CisgICAgICAgdGVzdF9pbmZvLT5uYW1lKCksIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7
CitgYGAKKworYGN1cnJlbnRfdGVzdF9pbmZvKClgIHJldHVybnMgYSBudWxsIHBvaW50ZXIgaWYg
bm8gdGVzdCBpcyBydW5uaW5nLiBJbgorcGFydGljdWxhciwgeW91IGNhbm5vdCBmaW5kIHRoZSB0
ZXN0IGNhc2UgbmFtZSBpbiBgVGVzdENhc2VTZXRVcCgpYCwKK2BUZXN0Q2FzZVRlYXJEb3duKClg
ICh3aGVyZSB5b3Uga25vdyB0aGUgdGVzdCBjYXNlIG5hbWUgaW1wbGljaXRseSksIG9yCitmdW5j
dGlvbnMgY2FsbGVkIGZyb20gdGhlbS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dz
LCBNYWMuCisKKyMgRXh0ZW5kaW5nIEdvb2dsZSBUZXN0IGJ5IEhhbmRsaW5nIFRlc3QgRXZlbnRz
ICMKKworR29vZ2xlIFRlc3QgcHJvdmlkZXMgYW4gPGI+ZXZlbnQgbGlzdGVuZXIgQVBJPC9iPiB0
byBsZXQgeW91IHJlY2VpdmUKK25vdGlmaWNhdGlvbnMgYWJvdXQgdGhlIHByb2dyZXNzIG9mIGEg
dGVzdCBwcm9ncmFtIGFuZCB0ZXN0CitmYWlsdXJlcy4gVGhlIGV2ZW50cyB5b3UgY2FuIGxpc3Rl
biB0byBpbmNsdWRlIHRoZSBzdGFydCBhbmQgZW5kIG9mCit0aGUgdGVzdCBwcm9ncmFtLCBhIHRl
c3QgY2FzZSwgb3IgYSB0ZXN0IG1ldGhvZCwgYW1vbmcgb3RoZXJzLiBZb3UgbWF5Cit1c2UgdGhp
cyBBUEkgdG8gYXVnbWVudCBvciByZXBsYWNlIHRoZSBzdGFuZGFyZCBjb25zb2xlIG91dHB1dCwK
K3JlcGxhY2UgdGhlIFhNTCBvdXRwdXQsIG9yIHByb3ZpZGUgYSBjb21wbGV0ZWx5IGRpZmZlcmVu
dCBmb3JtIG9mCitvdXRwdXQsIHN1Y2ggYXMgYSBHVUkgb3IgYSBkYXRhYmFzZS4gWW91IGNhbiBh
bHNvIHVzZSB0ZXN0IGV2ZW50cyBhcworY2hlY2twb2ludHMgdG8gaW1wbGVtZW50IGEgcmVzb3Vy
Y2UgbGVhayBjaGVja2VyLCBmb3IgZXhhbXBsZS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBX
aW5kb3dzLCBNYWM7IHNpbmNlIHYxLjQuMC4KKworIyMgRGVmaW5pbmcgRXZlbnQgTGlzdGVuZXJz
ICMjCisKK1RvIGRlZmluZSBhIGV2ZW50IGxpc3RlbmVyLCB5b3Ugc3ViY2xhc3MgZWl0aGVyCitb
dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMOTkx
KQorb3IgW3Rlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXJdKC4uL2luY2x1ZGUvZ3Rlc3Qv
Z3Rlc3QuaCNMMTA0NCkuCitUaGUgZm9ybWVyIGlzIGFuIChhYnN0cmFjdCkgaW50ZXJmYWNlLCB3
aGVyZSA8aT5lYWNoIHB1cmUgdmlydHVhbCBtZXRob2Q8YnI+CitjYW4gYmUgb3ZlcnJpZGRlbiB0
byBoYW5kbGUgYSB0ZXN0IGV2ZW50PC9pPiAoRm9yIGV4YW1wbGUsIHdoZW4gYSB0ZXN0CitzdGFy
dHMsIHRoZSBgT25UZXN0U3RhcnQoKWAgbWV0aG9kIHdpbGwgYmUgY2FsbGVkLikuIFRoZSBsYXR0
ZXIgcHJvdmlkZXMKK2FuIGVtcHR5IGltcGxlbWVudGF0aW9uIG9mIGFsbCBtZXRob2RzIGluIHRo
ZSBpbnRlcmZhY2UsIHN1Y2ggdGhhdCBhCitzdWJjbGFzcyBvbmx5IG5lZWRzIHRvIG92ZXJyaWRl
IHRoZSBtZXRob2RzIGl0IGNhcmVzIGFib3V0LgorCitXaGVuIGFuIGV2ZW50IGlzIGZpcmVkLCBp
dHMgY29udGV4dCBpcyBwYXNzZWQgdG8gdGhlIGhhbmRsZXIgZnVuY3Rpb24KK2FzIGFuIGFyZ3Vt
ZW50LiBUaGUgZm9sbG93aW5nIGFyZ3VtZW50IHR5cGVzIGFyZSB1c2VkOgorICAqIFtVbml0VGVz
dF0oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0wxMTUxKSByZWZsZWN0cyB0aGUgc3RhdGUgb2Yg
dGhlIGVudGlyZSB0ZXN0IHByb2dyYW0sCisgICogW1Rlc3RDYXNlXSguLi9pbmNsdWRlL2d0ZXN0
L2d0ZXN0LmgjTDc3OCkgaGFzIGluZm9ybWF0aW9uIGFib3V0IGEgdGVzdCBjYXNlLCB3aGljaCBj
YW4gY29udGFpbiBvbmUgb3IgbW9yZSB0ZXN0cywKKyAgKiBbVGVzdEluZm9dKC4uL2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QuaCNMNjQ0KSBjb250YWlucyB0aGUgc3RhdGUgb2YgYSB0ZXN0LCBhbmQKKyAg
KiBbVGVzdFBhcnRSZXN1bHRdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgjTDQ3
KSByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYSB0ZXN0IGFzc2VydGlvbi4KKworQW4gZXZlbnQg
aGFuZGxlciBmdW5jdGlvbiBjYW4gZXhhbWluZSB0aGUgYXJndW1lbnQgaXQgcmVjZWl2ZXMgdG8g
ZmluZAorb3V0IGludGVyZXN0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBldmVudCBhbmQgdGhl
IHRlc3QgcHJvZ3JhbSdzCitzdGF0ZS4gIEhlcmUncyBhbiBleGFtcGxlOgorCitgYGAKKyAgY2xh
c3MgTWluaW1hbGlzdFByaW50ZXIgOiBwdWJsaWMgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExp
c3RlbmVyIHsKKyAgICAvLyBDYWxsZWQgYmVmb3JlIGEgdGVzdCBzdGFydHMuCisgICAgdmlydHVh
bCB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8mIHRlc3RfaW5mbykg
eworICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBzdGFydGluZy5cbiIsCisgICAgICAgICAg
ICAgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOworICAgIH0K
KworICAgIC8vIENhbGxlZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRUVEKCkg
aW52b2NhdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJlc3VsdCgKKyAgICAgICAg
Y29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgeworICAg
ICAgcHJpbnRmKCIlcyBpbiAlczolZFxuJXNcbiIsCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jl
c3VsdC5mYWlsZWQoKSA/ICIqKiogRmFpbHVyZSIgOiAiU3VjY2VzcyIsCisgICAgICAgICAgICAg
dGVzdF9wYXJ0X3Jlc3VsdC5maWxlX25hbWUoKSwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVz
dWx0LmxpbmVfbnVtYmVyKCksCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5zdW1tYXJ5
KCkpOworICAgIH0KKworICAgIC8vIENhbGxlZCBhZnRlciBhIHRlc3QgZW5kcy4KKyAgICB2aXJ0
dWFsIHZvaWQgT25UZXN0RW5kKGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8mIHRlc3RfaW5mbykg
eworICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBlbmRpbmcuXG4iLAorICAgICAgICAgICAg
IHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgICB9Cisg
IH07CitgYGAKKworIyMgVXNpbmcgRXZlbnQgTGlzdGVuZXJzICMjCisKK1RvIHVzZSB0aGUgZXZl
bnQgbGlzdGVuZXIgeW91IGhhdmUgZGVmaW5lZCwgYWRkIGFuIGluc3RhbmNlIG9mIGl0IHRvCit0
aGUgR29vZ2xlIFRlc3QgZXZlbnQgbGlzdGVuZXIgbGlzdCAocmVwcmVzZW50ZWQgYnkgY2xhc3MK
K1tUZXN0RXZlbnRMaXN0ZW5lcnNdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMMTA2NCkKKy0g
bm90ZSB0aGUgInMiIGF0IHRoZSBlbmQgb2YgdGhlIG5hbWUpIGluIHlvdXIKK2BtYWluKClgIGZ1
bmN0aW9uLCBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9URVNUUygpYDoKK2BgYAoraW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOworICAvLyBHZXRzIGhvbGQgb2YgdGhlIGV2ZW50IGxpc3RlbmVyIGxpc3QuCisg
IDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMgPQorICAgICAgOjp0ZXN0
aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCk7CisgIC8vIEFkZHMgYSBs
aXN0ZW5lciB0byB0aGUgZW5kLiAgR29vZ2xlIFRlc3QgdGFrZXMgdGhlIG93bmVyc2hpcC4KKyAg
bGlzdGVuZXJzLkFwcGVuZChuZXcgTWluaW1hbGlzdFByaW50ZXIpOworICByZXR1cm4gUlVOX0FM
TF9URVNUUygpOworfQorYGBgCisKK1RoZXJlJ3Mgb25seSBvbmUgcHJvYmxlbTogdGhlIGRlZmF1
bHQgdGVzdCByZXN1bHQgcHJpbnRlciBpcyBzdGlsbCBpbgorZWZmZWN0LCBzbyBpdHMgb3V0cHV0
IHdpbGwgbWluZ2xlIHdpdGggdGhlIG91dHB1dCBmcm9tIHlvdXIgbWluaW1hbGlzdAorcHJpbnRl
ci4gVG8gc3VwcHJlc3MgdGhlIGRlZmF1bHQgcHJpbnRlciwganVzdCByZWxlYXNlIGl0IGZyb20g
dGhlCitldmVudCBsaXN0ZW5lciBsaXN0IGFuZCBkZWxldGUgaXQuIFlvdSBjYW4gZG8gc28gYnkg
YWRkaW5nIG9uZSBsaW5lOgorYGBgCisgIC4uLgorICBkZWxldGUgbGlzdGVuZXJzLlJlbGVhc2Uo
bGlzdGVuZXJzLmRlZmF1bHRfcmVzdWx0X3ByaW50ZXIoKSk7CisgIGxpc3RlbmVycy5BcHBlbmQo
bmV3IE1pbmltYWxpc3RQcmludGVyKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK2BgYAor
CitOb3csIHNpdCBiYWNrIGFuZCBlbmpveSBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IG91dHB1dCBm
cm9tIHlvdXIKK3Rlc3RzLiBGb3IgbW9yZSBkZXRhaWxzLCB5b3UgY2FuIHJlYWQgdGhpcworW3Nh
bXBsZV0oLi4vc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjKS4KKworWW91IG1heSBhcHBlbmQg
bW9yZSB0aGFuIG9uZSBsaXN0ZW5lciB0byB0aGUgbGlzdC4gV2hlbiBhbiBgT24qU3RhcnQoKWAK
K29yIGBPblRlc3RQYXJ0UmVzdWx0KClgIGV2ZW50IGlzIGZpcmVkLCB0aGUgbGlzdGVuZXJzIHdp
bGwgcmVjZWl2ZSBpdCBpbgordGhlIG9yZGVyIHRoZXkgYXBwZWFyIGluIHRoZSBsaXN0IChzaW5j
ZSBuZXcgbGlzdGVuZXJzIGFyZSBhZGRlZCB0bwordGhlIGVuZCBvZiB0aGUgbGlzdCwgdGhlIGRl
ZmF1bHQgdGV4dCBwcmludGVyIGFuZCB0aGUgZGVmYXVsdCBYTUwKK2dlbmVyYXRvciB3aWxsIHJl
Y2VpdmUgdGhlIGV2ZW50IGZpcnN0KS4gQW4gYE9uKkVuZCgpYCBldmVudCB3aWxsIGJlCityZWNl
aXZlZCBieSB0aGUgbGlzdGVuZXJzIGluIHRoZSBfcmV2ZXJzZV8gb3JkZXIuIFRoaXMgYWxsb3dz
IG91dHB1dCBieQorbGlzdGVuZXJzIGFkZGVkIGxhdGVyIHRvIGJlIGZyYW1lZCBieSBvdXRwdXQg
ZnJvbSBsaXN0ZW5lcnMgYWRkZWQKK2VhcmxpZXIuCisKKyMjIEdlbmVyYXRpbmcgRmFpbHVyZXMg
aW4gTGlzdGVuZXJzICMjCisKK1lvdSBtYXkgdXNlIGZhaWx1cmUtcmFpc2luZyBtYWNyb3MgKGBF
WFBFQ1RfKigpYCwgYEFTU0VSVF8qKClgLAorYEZBSUwoKWAsIGV0Yykgd2hlbiBwcm9jZXNzaW5n
IGFuIGV2ZW50LiBUaGVyZSBhcmUgc29tZSByZXN0cmljdGlvbnM6CisKKyAgMS4gWW91IGNhbm5v
dCBnZW5lcmF0ZSBhbnkgZmFpbHVyZSBpbiBgT25UZXN0UGFydFJlc3VsdCgpYCAob3RoZXJ3aXNl
IGl0IHdpbGwgY2F1c2UgYE9uVGVzdFBhcnRSZXN1bHQoKWAgdG8gYmUgY2FsbGVkIHJlY3Vyc2l2
ZWx5KS4KKyAgMS4gQSBsaXN0ZW5lciB0aGF0IGhhbmRsZXMgYE9uVGVzdFBhcnRSZXN1bHQoKWAg
aXMgbm90IGFsbG93ZWQgdG8gZ2VuZXJhdGUgYW55IGZhaWx1cmUuCisKK1doZW4geW91IGFkZCBs
aXN0ZW5lcnMgdG8gdGhlIGxpc3RlbmVyIGxpc3QsIHlvdSBzaG91bGQgcHV0IGxpc3RlbmVycwor
dGhhdCBoYW5kbGUgYE9uVGVzdFBhcnRSZXN1bHQoKWAgX2JlZm9yZV8gbGlzdGVuZXJzIHRoYXQg
Y2FuIGdlbmVyYXRlCitmYWlsdXJlcy4gVGhpcyBlbnN1cmVzIHRoYXQgZmFpbHVyZXMgZ2VuZXJh
dGVkIGJ5IHRoZSBsYXR0ZXIgYXJlCithdHRyaWJ1dGVkIHRvIHRoZSByaWdodCB0ZXN0IGJ5IHRo
ZSBmb3JtZXIuCisKK1dlIGhhdmUgYSBzYW1wbGUgb2YgZmFpbHVyZS1yYWlzaW5nIGxpc3RlbmVy
CitbaGVyZV0oLi4vc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYykuCisKKyMgUnVubmluZyBU
ZXN0IFByb2dyYW1zOiBBZHZhbmNlZCBPcHRpb25zICMKKworR29vZ2xlIFRlc3QgdGVzdCBwcm9n
cmFtcyBhcmUgb3JkaW5hcnkgZXhlY3V0YWJsZXMuIE9uY2UgYnVpbHQsIHlvdSBjYW4gcnVuCit0
aGVtIGRpcmVjdGx5IGFuZCBhZmZlY3QgdGhlaXIgYmVoYXZpb3IgdmlhIHRoZSBmb2xsb3dpbmcg
ZW52aXJvbm1lbnQgdmFyaWFibGVzCithbmQvb3IgY29tbWFuZCBsaW5lIGZsYWdzLiBGb3IgdGhl
IGZsYWdzIHRvIHdvcmssIHlvdXIgcHJvZ3JhbXMgbXVzdCBjYWxsCitgOjp0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdCgpYCBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9URVNUUygpYC4KKworVG8gc2Vl
IGEgbGlzdCBvZiBzdXBwb3J0ZWQgZmxhZ3MgYW5kIHRoZWlyIHVzYWdlLCBwbGVhc2UgcnVuIHlv
dXIgdGVzdAorcHJvZ3JhbSB3aXRoIHRoZSBgLS1oZWxwYCBmbGFnLiAgWW91IGNhbiBhbHNvIHVz
ZSBgLWhgLCBgLT9gLCBvciBgLz9gCitmb3Igc2hvcnQuICBUaGlzIGZlYXR1cmUgaXMgYWRkZWQg
aW4gdmVyc2lvbiAxLjMuMC4KKworSWYgYW4gb3B0aW9uIGlzIHNwZWNpZmllZCBib3RoIGJ5IGFu
IGVudmlyb25tZW50IHZhcmlhYmxlIGFuZCBieSBhCitmbGFnLCB0aGUgbGF0dGVyIHRha2VzIHBy
ZWNlZGVuY2UuICBNb3N0IG9mIHRoZSBvcHRpb25zIGNhbiBhbHNvIGJlCitzZXQvcmVhZCBpbiBj
b2RlOiB0byBhY2Nlc3MgdGhlIHZhbHVlIG9mIGNvbW1hbmQgbGluZSBmbGFnCitgLS1ndGVzdF9m
b29gLCB3cml0ZSBgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKGZvbylgLiAgQSBjb21tb24gcGF0dGVy
biBpcwordG8gc2V0IHRoZSB2YWx1ZSBvZiBhIGZsYWcgYmVmb3JlIGNhbGxpbmcgYDo6dGVzdGlu
Zzo6SW5pdEdvb2dsZVRlc3QoKWAKK3RvIGNoYW5nZSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUg
ZmxhZzoKK2BgYAoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIC8vIERpc2Fi
bGVzIGVsYXBzZWQgdGltZSBieSBkZWZhdWx0LgorICA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcocHJp
bnRfdGltZSkgPSBmYWxzZTsKKworICAvLyBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBvdmVycmlk
ZSB0aGUgZmxhZyBvbiB0aGUgY29tbWFuZCBsaW5lLgorICA6OnRlc3Rpbmc6OkluaXRHb29nbGVU
ZXN0KCZhcmdjLCBhcmd2KTsKKworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQorYGBgCisK
KyMjIFNlbGVjdGluZyBUZXN0cyAjIworCitUaGlzIHNlY3Rpb24gc2hvd3MgdmFyaW91cyBvcHRp
b25zIGZvciBjaG9vc2luZyB3aGljaCB0ZXN0cyB0byBydW4uCisKKyMjIyBMaXN0aW5nIFRlc3Qg
TmFtZXMgIyMjCisKK1NvbWV0aW1lcyBpdCBpcyBuZWNlc3NhcnkgdG8gbGlzdCB0aGUgYXZhaWxh
YmxlIHRlc3RzIGluIGEgcHJvZ3JhbSBiZWZvcmUKK3J1bm5pbmcgdGhlbSBzbyB0aGF0IGEgZmls
dGVyIG1heSBiZSBhcHBsaWVkIGlmIG5lZWRlZC4gSW5jbHVkaW5nIHRoZSBmbGFnCitgLS1ndGVz
dF9saXN0X3Rlc3RzYCBvdmVycmlkZXMgYWxsIG90aGVyIGZsYWdzIGFuZCBsaXN0cyB0ZXN0cyBp
biB0aGUgZm9sbG93aW5nCitmb3JtYXQ6CitgYGAKK1Rlc3RDYXNlMS4KKyAgVGVzdE5hbWUxCisg
IFRlc3ROYW1lMgorVGVzdENhc2UyLgorICBUZXN0TmFtZQorYGBgCisKK05vbmUgb2YgdGhlIHRl
c3RzIGxpc3RlZCBhcmUgYWN0dWFsbHkgcnVuIGlmIHRoZSBmbGFnIGlzIHByb3ZpZGVkLiBUaGVy
ZSBpcyBubworY29ycmVzcG9uZGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgdGhpcyBmbGFn
LgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIFJ1bm5pbmcg
YSBTdWJzZXQgb2YgdGhlIFRlc3RzICMjIworCitCeSBkZWZhdWx0LCBhIEdvb2dsZSBUZXN0IHBy
b2dyYW0gcnVucyBhbGwgdGVzdHMgdGhlIHVzZXIgaGFzIGRlZmluZWQuCitTb21ldGltZXMsIHlv
dSB3YW50IHRvIHJ1biBvbmx5IGEgc3Vic2V0IG9mIHRoZSB0ZXN0cyAoZS5nLiBmb3IgZGVidWdn
aW5nIG9yCitxdWlja2x5IHZlcmlmeWluZyBhIGNoYW5nZSkuIElmIHlvdSBzZXQgdGhlIGBHVEVT
VF9GSUxURVJgIGVudmlyb25tZW50IHZhcmlhYmxlCitvciB0aGUgYC0tZ3Rlc3RfZmlsdGVyYCBm
bGFnIHRvIGEgZmlsdGVyIHN0cmluZywgR29vZ2xlIFRlc3Qgd2lsbCBvbmx5IHJ1biB0aGUKK3Rl
c3RzIHdob3NlIGZ1bGwgbmFtZXMgKGluIHRoZSBmb3JtIG9mIGBUZXN0Q2FzZU5hbWUuVGVzdE5h
bWVgKSBtYXRjaCB0aGUKK2ZpbHRlci4KKworVGhlIGZvcm1hdCBvZiBhIGZpbHRlciBpcyBhICdg
OmAnLXNlcGFyYXRlZCBsaXN0IG9mIHdpbGRjYXJkIHBhdHRlcm5zIChjYWxsZWQKK3RoZSBwb3Np
dGl2ZSBwYXR0ZXJucykgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhICdgLWAnIGFuZCBhbm90aGVy
CisnYDpgJy1zZXBhcmF0ZWQgcGF0dGVybiBsaXN0IChjYWxsZWQgdGhlIG5lZ2F0aXZlIHBhdHRl
cm5zKS4gQSB0ZXN0IG1hdGNoZXMgdGhlCitmaWx0ZXIgaWYgYW5kIG9ubHkgaWYgaXQgbWF0Y2hl
cyBhbnkgb2YgdGhlIHBvc2l0aXZlIHBhdHRlcm5zIGJ1dCBkb2VzIG5vdAorbWF0Y2ggYW55IG9m
IHRoZSBuZWdhdGl2ZSBwYXR0ZXJucy4KKworQSBwYXR0ZXJuIG1heSBjb250YWluIGAnKidgICht
YXRjaGVzIGFueSBzdHJpbmcpIG9yIGAnPydgIChtYXRjaGVzIGFueSBzaW5nbGUKK2NoYXJhY3Rl
cikuIEZvciBjb252ZW5pZW5jZSwgdGhlIGZpbHRlciBgJyotTmVnYXRpdmVQYXR0ZXJucydgIGNh
biBiZSBhbHNvCit3cml0dGVuIGFzIGAnLU5lZ2F0aXZlUGF0dGVybnMnYC4KKworRm9yIGV4YW1w
bGU6CisKKyAgKiBgLi9mb29fdGVzdGAgSGFzIG5vIGZsYWcsIGFuZCB0aHVzIHJ1bnMgYWxsIGl0
cyB0ZXN0cy4KKyAgKiBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj0qYCBBbHNvIHJ1bnMgZXZl
cnl0aGluZywgZHVlIHRvIHRoZSBzaW5nbGUgbWF0Y2gtZXZlcnl0aGluZyBgKmAgdmFsdWUuCisg
ICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Rm9vVGVzdC4qYCBSdW5zIGV2ZXJ5dGhpbmcg
aW4gdGVzdCBjYXNlIGBGb29UZXN0YC4KKyAgKiBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj0q
TnVsbCo6KkNvbnN0cnVjdG9yKmAgUnVucyBhbnkgdGVzdCB3aG9zZSBmdWxsIG5hbWUgY29udGFp
bnMgZWl0aGVyIGAiTnVsbCJgIG9yIGAiQ29uc3RydWN0b3IiYC4KKyAgKiBgLi9mb29fdGVzdCAt
LWd0ZXN0X2ZpbHRlcj0tKkRlYXRoVGVzdC4qYCBSdW5zIGFsbCBub24tZGVhdGggdGVzdHMuCisg
ICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Rm9vVGVzdC4qLUZvb1Rlc3QuQmFyYCBSdW5z
IGV2ZXJ5dGhpbmcgaW4gdGVzdCBjYXNlIGBGb29UZXN0YCBleGNlcHQgYEZvb1Rlc3QuQmFyYC4K
KworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBUZW1wb3Jhcmls
eSBEaXNhYmxpbmcgVGVzdHMgIyMjCisKK0lmIHlvdSBoYXZlIGEgYnJva2VuIHRlc3QgdGhhdCB5
b3UgY2Fubm90IGZpeCByaWdodCBhd2F5LCB5b3UgY2FuIGFkZCB0aGUKK2BESVNBQkxFRF9gIHBy
ZWZpeCB0byBpdHMgbmFtZS4gVGhpcyB3aWxsIGV4Y2x1ZGUgaXQgZnJvbSBleGVjdXRpb24uIFRo
aXMgaXMKK2JldHRlciB0aGFuIGNvbW1lbnRpbmcgb3V0IHRoZSBjb2RlIG9yIHVzaW5nIGAjaWYg
MGAsIGFzIGRpc2FibGVkIHRlc3RzIGFyZQorc3RpbGwgY29tcGlsZWQgKGFuZCB0aHVzIHdvbid0
IHJvdCkuCisKK0lmIHlvdSBuZWVkIHRvIGRpc2FibGUgYWxsIHRlc3RzIGluIGEgdGVzdCBjYXNl
LCB5b3UgY2FuIGVpdGhlciBhZGQgYERJU0FCTEVEX2AKK3RvIHRoZSBmcm9udCBvZiB0aGUgbmFt
ZSBvZiBlYWNoIHRlc3QsIG9yIGFsdGVybmF0aXZlbHkgYWRkIGl0IHRvIHRoZSBmcm9udCBvZgor
dGhlIHRlc3QgY2FzZSBuYW1lLgorCitGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyB0ZXN0cyB3
b24ndCBiZSBydW4gYnkgR29vZ2xlIFRlc3QsIGV2ZW4gdGhvdWdoIHRoZXkKK3dpbGwgc3RpbGwg
YmUgY29tcGlsZWQ6CisKK2BgYAorLy8gVGVzdHMgdGhhdCBGb28gZG9lcyBBYmMuCitURVNUKEZv
b1Rlc3QsIERJU0FCTEVEX0RvZXNBYmMpIHsgLi4uIH0KKworY2xhc3MgRElTQUJMRURfQmFyVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKKworLy8gVGVzdHMgdGhhdCBCYXIg
ZG9lcyBYeXouCitURVNUX0YoRElTQUJMRURfQmFyVGVzdCwgRG9lc1h5eikgeyAuLi4gfQorYGBg
CisKK19Ob3RlOl8gVGhpcyBmZWF0dXJlIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHRlbXBvcmFy
eSBwYWluLXJlbGllZi4gWW91IHN0aWxsCitoYXZlIHRvIGZpeCB0aGUgZGlzYWJsZWQgdGVzdHMg
YXQgYSBsYXRlciBkYXRlLiBBcyBhIHJlbWluZGVyLCBHb29nbGUgVGVzdCB3aWxsCitwcmludCBh
IGJhbm5lciB3YXJuaW5nIHlvdSBpZiBhIHRlc3QgcHJvZ3JhbSBjb250YWlucyBhbnkgZGlzYWJs
ZWQgdGVzdHMuCisKK19UaXA6XyBZb3UgY2FuIGVhc2lseSBjb3VudCB0aGUgbnVtYmVyIG9mIGRp
c2FibGVkIHRlc3RzIHlvdSBoYXZlCit1c2luZyBgZ3JlcGAuIFRoaXMgbnVtYmVyIGNhbiBiZSB1
c2VkIGFzIGEgbWV0cmljIGZvciBpbXByb3ZpbmcgeW91cgordGVzdCBxdWFsaXR5LgorCitfQXZh
aWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIFRlbXBvcmFyaWx5IEVuYWJs
aW5nIERpc2FibGVkIFRlc3RzICMjIworCitUbyBpbmNsdWRlIFtkaXNhYmxlZCB0ZXN0c10oI3Rl
bXBvcmFyaWx5LWRpc2FibGluZy10ZXN0cykgaW4gdGVzdAorZXhlY3V0aW9uLCBqdXN0IGludm9r
ZSB0aGUgdGVzdCBwcm9ncmFtIHdpdGggdGhlCitgLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90
ZXN0c2AgZmxhZyBvciBzZXQgdGhlCitgR1RFU1RfQUxTT19SVU5fRElTQUJMRURfVEVTVFNgIGVu
dmlyb25tZW50IHZhcmlhYmxlIHRvIGEgdmFsdWUgb3RoZXIKK3RoYW4gYDBgLiAgWW91IGNhbiBj
b21iaW5lIHRoaXMgd2l0aCB0aGUKK1stLWd0ZXN0XF9maWx0ZXJdKCNydW5uaW5nLWEtc3Vic2V0
LW9mLXRoZS10ZXN0cykgZmxhZyB0byBmdXJ0aGVyIHNlbGVjdAord2hpY2ggZGlzYWJsZWQgdGVz
dHMgdG8gcnVuLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2Ug
dmVyc2lvbiAxLjMuMC4KKworIyMgUmVwZWF0aW5nIHRoZSBUZXN0cyAjIworCitPbmNlIGluIGEg
d2hpbGUgeW91J2xsIHJ1biBpbnRvIGEgdGVzdCB3aG9zZSByZXN1bHQgaXMgaGl0LW9yLW1pc3Mu
IFBlcmhhcHMgaXQKK3dpbGwgZmFpbCBvbmx5IDElIG9mIHRoZSB0aW1lLCBtYWtpbmcgaXQgcmF0
aGVyIGhhcmQgdG8gcmVwcm9kdWNlIHRoZSBidWcgdW5kZXIKK2EgZGVidWdnZXIuIFRoaXMgY2Fu
IGJlIGEgbWFqb3Igc291cmNlIG9mIGZydXN0cmF0aW9uLgorCitUaGUgYC0tZ3Rlc3RfcmVwZWF0
YCBmbGFnIGFsbG93cyB5b3UgdG8gcmVwZWF0IGFsbCAob3Igc2VsZWN0ZWQpIHRlc3QgbWV0aG9k
cworaW4gYSBwcm9ncmFtIG1hbnkgdGltZXMuIEhvcGVmdWxseSwgYSBmbGFreSB0ZXN0IHdpbGwg
ZXZlbnR1YWxseSBmYWlsIGFuZCBnaXZlCit5b3UgYSBjaGFuY2UgdG8gZGVidWcuIEhlcmUncyBo
b3cgdG8gdXNlIGl0OgorCit8IGAkIGZvb190ZXN0IC0tZ3Rlc3RfcmVwZWF0PTEwMDBgIHwgUmVw
ZWF0IGZvb1xfdGVzdCAxMDAwIHRpbWVzIGFuZCBkb24ndCBzdG9wIGF0IGZhaWx1cmVzLiB8Cit8
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGAkIGZvb190ZXN0IC0tZ3Rl
c3RfcmVwZWF0PS0xYCAgIHwgQSBuZWdhdGl2ZSBjb3VudCBtZWFucyByZXBlYXRpbmcgZm9yZXZl
ci4gICAgICAgICAgICAgICB8Cit8IGAkIGZvb190ZXN0IC0tZ3Rlc3RfcmVwZWF0PTEwMDAgLS1n
dGVzdF9icmVha19vbl9mYWlsdXJlYCB8IFJlcGVhdCBmb29cX3Rlc3QgMTAwMCB0aW1lcywgc3Rv
cHBpbmcgYXQgdGhlIGZpcnN0IGZhaWx1cmUuIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgd2hl
biBydW5uaW5nIHVuZGVyIGEgZGVidWdnZXI6IHdoZW4gdGhlIHRlc3RmYWlscywgaXQgd2lsbCBk
cm9wIGludG8gdGhlIGRlYnVnZ2VyIGFuZCB5b3UgY2FuIHRoZW4gaW5zcGVjdCB2YXJpYWJsZXMg
YW5kIHN0YWNrcy4gfAorfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwIC0tZ3Rlc3Rf
ZmlsdGVyPUZvb0JhcmAgfCBSZXBlYXQgdGhlIHRlc3RzIHdob3NlIG5hbWUgbWF0Y2hlcyB0aGUg
ZmlsdGVyIDEwMDAgdGltZXMuIHwKKworSWYgeW91ciB0ZXN0IHByb2dyYW0gY29udGFpbnMgZ2xv
YmFsIHNldC11cC90ZWFyLWRvd24gY29kZSByZWdpc3RlcmVkCit1c2luZyBgQWRkR2xvYmFsVGVz
dEVudmlyb25tZW50KClgLCBpdCB3aWxsIGJlIHJlcGVhdGVkIGluIGVhY2gKK2l0ZXJhdGlvbiBh
cyB3ZWxsLCBhcyB0aGUgZmxha2luZXNzIG1heSBiZSBpbiBpdC4gWW91IGNhbiBhbHNvIHNwZWNp
ZnkKK3RoZSByZXBlYXQgY291bnQgYnkgc2V0dGluZyB0aGUgYEdURVNUX1JFUEVBVGAgZW52aXJv
bm1lbnQgdmFyaWFibGUuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgor
CisjIyBTaHVmZmxpbmcgdGhlIFRlc3RzICMjCisKK1lvdSBjYW4gc3BlY2lmeSB0aGUgYC0tZ3Rl
c3Rfc2h1ZmZsZWAgZmxhZyAob3Igc2V0IHRoZSBgR1RFU1RfU0hVRkZMRWAKK2Vudmlyb25tZW50
IHZhcmlhYmxlIHRvIGAxYCkgdG8gcnVuIHRoZSB0ZXN0cyBpbiBhIHByb2dyYW0gaW4gYSByYW5k
b20KK29yZGVyLiBUaGlzIGhlbHBzIHRvIHJldmVhbCBiYWQgZGVwZW5kZW5jaWVzIGJldHdlZW4g
dGVzdHMuCisKK0J5IGRlZmF1bHQsIEdvb2dsZSBUZXN0IHVzZXMgYSByYW5kb20gc2VlZCBjYWxj
dWxhdGVkIGZyb20gdGhlIGN1cnJlbnQKK3RpbWUuIFRoZXJlZm9yZSB5b3UnbGwgZ2V0IGEgZGlm
ZmVyZW50IG9yZGVyIGV2ZXJ5IHRpbWUuIFRoZSBjb25zb2xlCitvdXRwdXQgaW5jbHVkZXMgdGhl
IHJhbmRvbSBzZWVkIHZhbHVlLCBzdWNoIHRoYXQgeW91IGNhbiByZXByb2R1Y2UgYW4KK29yZGVy
LXJlbGF0ZWQgdGVzdCBmYWlsdXJlIGxhdGVyLiBUbyBzcGVjaWZ5IHRoZSByYW5kb20gc2VlZAor
ZXhwbGljaXRseSwgdXNlIHRoZSBgLS1ndGVzdF9yYW5kb21fc2VlZD1TRUVEYCBmbGFnIChvciBz
ZXQgdGhlCitgR1RFU1RfUkFORE9NX1NFRURgIGVudmlyb25tZW50IHZhcmlhYmxlKSwgd2hlcmUg
YFNFRURgIGlzIGFuIGludGVnZXIKK2JldHdlZW4gMCBhbmQgOTk5OTkuIFRoZSBzZWVkIHZhbHVl
IDAgaXMgc3BlY2lhbDogaXQgdGVsbHMgR29vZ2xlIFRlc3QKK3RvIGRvIHRoZSBkZWZhdWx0IGJl
aGF2aW9yIG9mIGNhbGN1bGF0aW5nIHRoZSBzZWVkIGZyb20gdGhlIGN1cnJlbnQKK3RpbWUuCisK
K0lmIHlvdSBjb21iaW5lIHRoaXMgd2l0aCBgLS1ndGVzdF9yZXBlYXQ9TmAsIEdvb2dsZSBUZXN0
IHdpbGwgcGljayBhCitkaWZmZXJlbnQgcmFuZG9tIHNlZWQgYW5kIHJlLXNodWZmbGUgdGhlIHRl
c3RzIGluIGVhY2ggaXRlcmF0aW9uLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3Ms
IE1hYzsgc2luY2UgdjEuNC4wLgorCisjIyBDb250cm9sbGluZyBUZXN0IE91dHB1dCAjIworCitU
aGlzIHNlY3Rpb24gdGVhY2hlcyBob3cgdG8gdHdlYWsgdGhlIHdheSB0ZXN0IHJlc3VsdHMgYXJl
IHJlcG9ydGVkLgorCisjIyMgQ29sb3JlZCBUZXJtaW5hbCBPdXRwdXQgIyMjCisKK0dvb2dsZSBU
ZXN0IGNhbiB1c2UgY29sb3JzIGluIGl0cyB0ZXJtaW5hbCBvdXRwdXQgdG8gbWFrZSBpdCBlYXNp
ZXIgdG8gc3BvdAordGhlIHNlcGFyYXRpb24gYmV0d2VlbiB0ZXN0cywgYW5kIHdoZXRoZXIgdGVz
dHMgcGFzc2VkLgorCitZb3UgY2FuIHNldCB0aGUgR1RFU1RcX0NPTE9SIGVudmlyb25tZW50IHZh
cmlhYmxlIG9yIHNldCB0aGUgYC0tZ3Rlc3RfY29sb3JgCitjb21tYW5kIGxpbmUgZmxhZyB0byBg
eWVzYCwgYG5vYCwgb3IgYGF1dG9gICh0aGUgZGVmYXVsdCkgdG8gZW5hYmxlIGNvbG9ycywKK2Rp
c2FibGUgY29sb3JzLCBvciBsZXQgR29vZ2xlIFRlc3QgZGVjaWRlLiBXaGVuIHRoZSB2YWx1ZSBp
cyBgYXV0b2AsIEdvb2dsZQorVGVzdCB3aWxsIHVzZSBjb2xvcnMgaWYgYW5kIG9ubHkgaWYgdGhl
IG91dHB1dCBnb2VzIHRvIGEgdGVybWluYWwgYW5kIChvbgorbm9uLVdpbmRvd3MgcGxhdGZvcm1z
KSB0aGUgYFRFUk1gIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCB0byBgeHRlcm1gIG9yCitg
eHRlcm0tY29sb3JgLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKwor
IyMjIFN1cHByZXNzaW5nIHRoZSBFbGFwc2VkIFRpbWUgIyMjCisKK0J5IGRlZmF1bHQsIEdvb2ds
ZSBUZXN0IHByaW50cyB0aGUgdGltZSBpdCB0YWtlcyB0byBydW4gZWFjaCB0ZXN0LiAgVG8KK3N1
cHByZXNzIHRoYXQsIHJ1biB0aGUgdGVzdCBwcm9ncmFtIHdpdGggdGhlIGAtLWd0ZXN0X3ByaW50
X3RpbWU9MGAKK2NvbW1hbmQgbGluZSBmbGFnLiAgU2V0dGluZyB0aGUgYEdURVNUX1BSSU5UX1RJ
TUVgIGVudmlyb25tZW50Cit2YXJpYWJsZSB0byBgMGAgaGFzIHRoZSBzYW1lIGVmZmVjdC4KKwor
X0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuICAoSW4gR29vZ2xlIFRlc3QgMS4z
LjAgYW5kIGxvd2VyLAordGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdGhhdCB0aGUgZWxhcHNlZCB0
aW1lIGlzICoqbm90KiogcHJpbnRlZC4pCisKKyMjIyBHZW5lcmF0aW5nIGFuIFhNTCBSZXBvcnQg
IyMjCisKK0dvb2dsZSBUZXN0IGNhbiBlbWl0IGEgZGV0YWlsZWQgWE1MIHJlcG9ydCB0byBhIGZp
bGUgaW4gYWRkaXRpb24gdG8gaXRzIG5vcm1hbAordGV4dHVhbCBvdXRwdXQuIFRoZSByZXBvcnQg
Y29udGFpbnMgdGhlIGR1cmF0aW9uIG9mIGVhY2ggdGVzdCwgYW5kIHRodXMgY2FuCitoZWxwIHlv
dSBpZGVudGlmeSBzbG93IHRlc3RzLgorCitUbyBnZW5lcmF0ZSB0aGUgWE1MIHJlcG9ydCwgc2V0
IHRoZSBgR1RFU1RfT1VUUFVUYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUKK2AtLWd0ZXN0
X291dHB1dGAgZmxhZyB0byB0aGUgc3RyaW5nIGAieG1sOl9wYXRoX3RvX291dHB1dF9maWxlXyJg
LCB3aGljaCB3aWxsCitjcmVhdGUgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIGxvY2F0aW9uLiBZb3Ug
Y2FuIGFsc28ganVzdCB1c2UgdGhlIHN0cmluZworYCJ4bWwiYCwgaW4gd2hpY2ggY2FzZSB0aGUg
b3V0cHV0IGNhbiBiZSBmb3VuZCBpbiB0aGUgYHRlc3RfZGV0YWlsLnhtbGAgZmlsZSBpbgordGhl
IGN1cnJlbnQgZGlyZWN0b3J5LgorCitJZiB5b3Ugc3BlY2lmeSBhIGRpcmVjdG9yeSAoZm9yIGV4
YW1wbGUsIGAieG1sOm91dHB1dC9kaXJlY3RvcnkvImAgb24gTGludXggb3IKK2AieG1sOm91dHB1
dFxkaXJlY3RvcnlcImAgb24gV2luZG93cyksIEdvb2dsZSBUZXN0IHdpbGwgY3JlYXRlIHRoZSBY
TUwgZmlsZSBpbgordGhhdCBkaXJlY3RvcnksIG5hbWVkIGFmdGVyIHRoZSB0ZXN0IGV4ZWN1dGFi
bGUgKGUuZy4gYGZvb190ZXN0LnhtbGAgZm9yIHRlc3QKK3Byb2dyYW0gYGZvb190ZXN0YCBvciBg
Zm9vX3Rlc3QuZXhlYCkuIElmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzIChwZXJoYXBzIGxlZnQK
K292ZXIgZnJvbSBhIHByZXZpb3VzIHJ1biksIEdvb2dsZSBUZXN0IHdpbGwgcGljayBhIGRpZmZl
cmVudCBuYW1lIChlLmcuCitgZm9vX3Rlc3RfMS54bWxgKSB0byBhdm9pZCBvdmVyd3JpdGluZyBp
dC4KKworVGhlIHJlcG9ydCB1c2VzIHRoZSBmb3JtYXQgZGVzY3JpYmVkIGhlcmUuICBJdCBpcyBi
YXNlZCBvbiB0aGUKK2BqdW5pdHJlcG9ydGAgQW50IHRhc2sgYW5kIGNhbiBiZSBwYXJzZWQgYnkg
cG9wdWxhciBjb250aW51b3VzIGJ1aWxkCitzeXN0ZW1zIGxpa2UgW0h1ZHNvbl0oaHR0cHM6Ly9o
dWRzb24uZGV2LmphdmEubmV0LykuIFNpbmNlIHRoYXQgZm9ybWF0Cit3YXMgb3JpZ2luYWxseSBp
bnRlbmRlZCBmb3IgSmF2YSwgYSBsaXR0bGUgaW50ZXJwcmV0YXRpb24gaXMgcmVxdWlyZWQKK3Rv
IG1ha2UgaXQgYXBwbHkgdG8gR29vZ2xlIFRlc3QgdGVzdHMsIGFzIHNob3duIGhlcmU6CisKK2Bg
YAorPHRlc3RzdWl0ZXMgbmFtZT0iQWxsVGVzdHMiIC4uLj4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJ0
ZXN0X2Nhc2VfbmFtZSIgLi4uPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJ0ZXN0X25hbWUiIC4uLj4K
KyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiIvPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0i
Li4uIi8+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4KKyAgICA8L3Rlc3RjYXNlPgor
ICA8L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1aXRlcz4KK2BgYAorCisgICogVGhlIHJvb3QgYDx0ZXN0
c3VpdGVzPmAgZWxlbWVudCBjb3JyZXNwb25kcyB0byB0aGUgZW50aXJlIHRlc3QgcHJvZ3JhbS4K
KyAgKiBgPHRlc3RzdWl0ZT5gIGVsZW1lbnRzIGNvcnJlc3BvbmQgdG8gR29vZ2xlIFRlc3QgdGVz
dCBjYXNlcy4KKyAgKiBgPHRlc3RjYXNlPmAgZWxlbWVudHMgY29ycmVzcG9uZCB0byBHb29nbGUg
VGVzdCB0ZXN0IGZ1bmN0aW9ucy4KKworRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIHByb2dy
YW0KKworYGBgCitURVNUKE1hdGhUZXN0LCBBZGRpdGlvbikgeyAuLi4gfQorVEVTVChNYXRoVGVz
dCwgU3VidHJhY3Rpb24pIHsgLi4uIH0KK1RFU1QoTG9naWNUZXN0LCBOb25Db250cmFkaWN0aW9u
KSB7IC4uLiB9CitgYGAKKworY291bGQgZ2VuZXJhdGUgdGhpcyByZXBvcnQ6CisKK2BgYAorPD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIz
IiBmYWlsdXJlcz0iMSIgZXJyb3JzPSIwIiB0aW1lPSIzNSIgbmFtZT0iQWxsVGVzdHMiPgorICA8
dGVzdHN1aXRlIG5hbWU9Ik1hdGhUZXN0IiB0ZXN0cz0iMiIgZmFpbHVyZXM9IjEiIGVycm9ycz0i
MCIgdGltZT0iMTUiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJBZGRpdGlvbiIgc3RhdHVzPSJydW4i
IHRpbWU9IjciIGNsYXNzbmFtZT0iIj4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IlZhbHVlIG9m
OiBhZGQoMSwgMSkmI3gwQTsgQWN0dWFsOiAzJiN4MEE7RXhwZWN0ZWQ6IDIiIHR5cGU9IiIvPgor
ICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IGFkZCgxLCAtMSkmI3gwQTsgQWN0dWFs
OiAxJiN4MEE7RXhwZWN0ZWQ6IDAiIHR5cGU9IiIvPgorICAgIDwvdGVzdGNhc2U+CisgICAgPHRl
c3RjYXNlIG5hbWU9IlN1YnRyYWN0aW9uIiBzdGF0dXM9InJ1biIgdGltZT0iNSIgY2xhc3NuYW1l
PSIiPgorICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorICA8dGVzdHN1aXRlIG5hbWU9
IkxvZ2ljVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBlcnJvcnM9IjAiIHRpbWU9IjUiPgor
ICAgIDx0ZXN0Y2FzZSBuYW1lPSJOb25Db250cmFkaWN0aW9uIiBzdGF0dXM9InJ1biIgdGltZT0i
NSIgY2xhc3NuYW1lPSIiPgorICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0
c3VpdGVzPgorYGBgCisKK1RoaW5ncyB0byBub3RlOgorCisgICogVGhlIGB0ZXN0c2AgYXR0cmli
dXRlIG9mIGEgYDx0ZXN0c3VpdGVzPmAgb3IgYDx0ZXN0c3VpdGU+YCBlbGVtZW50IHRlbGxzIGhv
dyBtYW55IHRlc3QgZnVuY3Rpb25zIHRoZSBHb29nbGUgVGVzdCBwcm9ncmFtIG9yIHRlc3QgY2Fz
ZSBjb250YWlucywgd2hpbGUgdGhlIGBmYWlsdXJlc2AgYXR0cmlidXRlIHRlbGxzIGhvdyBtYW55
IG9mIHRoZW0gZmFpbGVkLgorICAqIFRoZSBgdGltZWAgYXR0cmlidXRlIGV4cHJlc3NlcyB0aGUg
ZHVyYXRpb24gb2YgdGhlIHRlc3QsIHRlc3QgY2FzZSwgb3IgZW50aXJlIHRlc3QgcHJvZ3JhbSBp
biBtaWxsaXNlY29uZHMuCisgICogRWFjaCBgPGZhaWx1cmU+YCBlbGVtZW50IGNvcnJlc3BvbmRz
IHRvIGEgc2luZ2xlIGZhaWxlZCBHb29nbGUgVGVzdCBhc3NlcnRpb24uCisgICogU29tZSBKVW5p
dCBjb25jZXB0cyBkb24ndCBhcHBseSB0byBHb29nbGUgVGVzdCwgeWV0IHdlIGhhdmUgdG8gY29u
Zm9ybSB0byB0aGUgRFRELiBUaGVyZWZvcmUgeW91J2xsIHNlZSBzb21lIGR1bW15IGVsZW1lbnRz
IGFuZCBhdHRyaWJ1dGVzIGluIHRoZSByZXBvcnQuIFlvdSBjYW4gc2FmZWx5IGlnbm9yZSB0aGVz
ZSBwYXJ0cy4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIENv
bnRyb2xsaW5nIEhvdyBGYWlsdXJlcyBBcmUgUmVwb3J0ZWQgIyMKKworIyMjIFR1cm5pbmcgQXNz
ZXJ0aW9uIEZhaWx1cmVzIGludG8gQnJlYWstUG9pbnRzICMjIworCitXaGVuIHJ1bm5pbmcgdGVz
dCBwcm9ncmFtcyB1bmRlciBhIGRlYnVnZ2VyLCBpdCdzIHZlcnkgY29udmVuaWVudCBpZiB0aGUK
K2RlYnVnZ2VyIGNhbiBjYXRjaCBhbiBhc3NlcnRpb24gZmFpbHVyZSBhbmQgYXV0b21hdGljYWxs
eSBkcm9wIGludG8gaW50ZXJhY3RpdmUKK21vZGUuIEdvb2dsZSBUZXN0J3MgX2JyZWFrLW9uLWZh
aWx1cmVfIG1vZGUgc3VwcG9ydHMgdGhpcyBiZWhhdmlvci4KKworVG8gZW5hYmxlIGl0LCBzZXQg
dGhlIGBHVEVTVF9CUkVBS19PTl9GQUlMVVJFYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIHZh
bHVlCitvdGhlciB0aGFuIGAwYCAuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHRoZSBgLS1n
dGVzdF9icmVha19vbl9mYWlsdXJlYAorY29tbWFuZCBsaW5lIGZsYWcuCisKK19BdmFpbGFiaWxp
dHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgRGlzYWJsaW5nIENhdGNoaW5nIFRlc3Qt
VGhyb3duIEV4Y2VwdGlvbnMgIyMjCisKK0dvb2dsZSBUZXN0IGNhbiBiZSB1c2VkIGVpdGhlciB3
aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucyBlbmFibGVkLiAgSWYKK2EgdGVzdCB0aHJvd3MgYSBD
KysgZXhjZXB0aW9uIG9yIChvbiBXaW5kb3dzKSBhIHN0cnVjdHVyZWQgZXhjZXB0aW9uCisoU0VI
KSwgYnkgZGVmYXVsdCBHb29nbGUgVGVzdCBjYXRjaGVzIGl0LCByZXBvcnRzIGl0IGFzIGEgdGVz
dAorZmFpbHVyZSwgYW5kIGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0IHRlc3QgbWV0aG9kLiAgVGhp
cyBtYXhpbWl6ZXMgdGhlCitjb3ZlcmFnZSBvZiBhIHRlc3QgcnVuLiAgQWxzbywgb24gV2luZG93
cyBhbiB1bmNhdWdodCBleGNlcHRpb24gd2lsbAorY2F1c2UgYSBwb3AtdXAgd2luZG93LCBzbyBj
YXRjaGluZyB0aGUgZXhjZXB0aW9ucyBhbGxvd3MgeW91IHRvIHJ1bgordGhlIHRlc3RzIGF1dG9t
YXRpY2FsbHkuCisKK1doZW4gZGVidWdnaW5nIHRoZSB0ZXN0IGZhaWx1cmVzLCBob3dldmVyLCB5
b3UgbWF5IGluc3RlYWQgd2FudCB0aGUKK2V4Y2VwdGlvbnMgdG8gYmUgaGFuZGxlZCBieSB0aGUg
ZGVidWdnZXIsIHN1Y2ggdGhhdCB5b3UgY2FuIGV4YW1pbmUKK3RoZSBjYWxsIHN0YWNrIHdoZW4g
YW4gZXhjZXB0aW9uIGlzIHRocm93bi4gIFRvIGFjaGlldmUgdGhhdCwgc2V0IHRoZQorYEdURVNU
X0NBVENIX0VYQ0VQVElPTlNgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGAwYCwgb3IgdXNlIHRo
ZQorYC0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucz0wYCBmbGFnIHdoZW4gcnVubmluZyB0aGUgdGVz
dHMuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBMZXR0
aW5nIEFub3RoZXIgVGVzdGluZyBGcmFtZXdvcmsgRHJpdmUgIyMjCisKK0lmIHlvdSB3b3JrIG9u
IGEgcHJvamVjdCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gdXNpbmcgYW5vdGhlciB0ZXN0aW5nCitm
cmFtZXdvcmsgYW5kIGlzIG5vdCByZWFkeSB0byBjb21wbGV0ZWx5IHN3aXRjaCB0byBHb29nbGUg
VGVzdCB5ZXQsCit5b3UgY2FuIGdldCBtdWNoIG9mIEdvb2dsZSBUZXN0J3MgYmVuZWZpdCBieSB1
c2luZyBpdHMgYXNzZXJ0aW9ucyBpbgoreW91ciBleGlzdGluZyB0ZXN0cy4gIEp1c3QgY2hhbmdl
IHlvdXIgYG1haW4oKWAgZnVuY3Rpb24gdG8gbG9vaworbGlrZToKKworYGBgCisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIDo6
dGVzdGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9IHRydWU7CisgIC8vIEltcG9y
dGFudDogR29vZ2xlIFRlc3QgbXVzdCBiZSBpbml0aWFsaXplZC4KKyAgOjp0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgLi4uIHdoYXRldmVyIHlvdXIgZXhpc3Rpbmcg
dGVzdGluZyBmcmFtZXdvcmsgcmVxdWlyZXMgLi4uCit9CitgYGAKKworV2l0aCB0aGF0LCB5b3Ug
Y2FuIHVzZSBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGluIGFkZGl0aW9uIHRvIHRoZQorbmF0aXZl
IGFzc2VydGlvbnMgeW91ciB0ZXN0aW5nIGZyYW1ld29yayBwcm92aWRlcywgZm9yIGV4YW1wbGU6
CisKK2BgYAordm9pZCBUZXN0Rm9vRG9lc0JhcigpIHsKKyAgRm9vIGZvbzsKKyAgRVhQRUNUX0xF
KGZvby5CYXIoMSksIDEwMCk7ICAgICAvLyBBIEdvb2dsZSBUZXN0IGFzc2VydGlvbi4KKyAgQ1BQ
VU5JVF9BU1NFUlQoZm9vLklzRW1wdHkoKSk7ICAvLyBBIG5hdGl2ZSBhc3NlcnRpb24uCit9Citg
YGAKKworSWYgYSBHb29nbGUgVGVzdCBhc3NlcnRpb24gZmFpbHMsIGl0IHdpbGwgcHJpbnQgYW4g
ZXJyb3IgbWVzc2FnZSBhbmQKK3Rocm93IGFuIGV4Y2VwdGlvbiwgd2hpY2ggd2lsbCBiZSB0cmVh
dGVkIGFzIGEgZmFpbHVyZSBieSB5b3VyIGhvc3QKK3Rlc3RpbmcgZnJhbWV3b3JrLiAgSWYgeW91
IGNvbXBpbGUgeW91ciBjb2RlIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZCwKK2EgZmFpbGVkIEdv
b2dsZSBUZXN0IGFzc2VydGlvbiB3aWxsIGluc3RlYWQgZXhpdCB5b3VyIHByb2dyYW0gd2l0aCBh
Citub24temVybyBjb2RlLCB3aGljaCB3aWxsIGFsc28gc2lnbmFsIGEgdGVzdCBmYWlsdXJlIHRv
IHlvdXIgdGVzdAorcnVubmVyLgorCitJZiB5b3UgZG9uJ3Qgd3JpdGUgYDo6dGVzdGluZzo6R1RF
U1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9IHRydWU7YCBpbgoreW91ciBgbWFpbigpYCwgeW91
IGNhbiBhbHRlcm5hdGl2ZWx5IGVuYWJsZSB0aGlzIGZlYXR1cmUgYnkgc3BlY2lmeWluZwordGhl
IGAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmVgIGZsYWcgb24gdGhlIGNvbW1hbmQtbGluZSBvciBz
ZXR0aW5nIHRoZQorYEdURVNUX1RIUk9XX09OX0ZBSUxVUkVgIGVudmlyb25tZW50IHZhcmlhYmxl
IHRvIGEgbm9uLXplcm8gdmFsdWUuCisKK0RlYXRoIHRlc3RzIGFyZSBfbm90XyBzdXBwb3J0ZWQg
d2hlbiBvdGhlciB0ZXN0IGZyYW1ld29yayBpcyB1c2VkIHRvIG9yZ2FuaXplIHRlc3RzLgorCitf
QXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdjEuMy4wLgorCisjIyBE
aXN0cmlidXRpbmcgVGVzdCBGdW5jdGlvbnMgdG8gTXVsdGlwbGUgTWFjaGluZXMgIyMKKworSWYg
eW91IGhhdmUgbW9yZSB0aGFuIG9uZSBtYWNoaW5lIHlvdSBjYW4gdXNlIHRvIHJ1biBhIHRlc3Qg
cHJvZ3JhbSwKK3lvdSBtaWdodCB3YW50IHRvIHJ1biB0aGUgdGVzdCBmdW5jdGlvbnMgaW4gcGFy
YWxsZWwgYW5kIGdldCB0aGUKK3Jlc3VsdCBmYXN0ZXIuICBXZSBjYWxsIHRoaXMgdGVjaG5pcXVl
IF9zaGFyZGluZ18sIHdoZXJlIGVhY2ggbWFjaGluZQoraXMgY2FsbGVkIGEgX3NoYXJkXy4KKwor
R29vZ2xlIFRlc3QgaXMgY29tcGF0aWJsZSB3aXRoIHRlc3Qgc2hhcmRpbmcuICBUbyB0YWtlIGFk
dmFudGFnZSBvZgordGhpcyBmZWF0dXJlLCB5b3VyIHRlc3QgcnVubmVyIChub3QgcGFydCBvZiBH
b29nbGUgVGVzdCkgbmVlZHMgdG8gZG8KK3RoZSBmb2xsb3dpbmc6CisKKyAgMS4gQWxsb2NhdGUg
YSBudW1iZXIgb2YgbWFjaGluZXMgKHNoYXJkcykgdG8gcnVuIHRoZSB0ZXN0cy4KKyAgMS4gT24g
ZWFjaCBzaGFyZCwgc2V0IHRoZSBgR1RFU1RfVE9UQUxfU0hBUkRTYCBlbnZpcm9ubWVudCB2YXJp
YWJsZSB0byB0aGUgdG90YWwgbnVtYmVyIG9mIHNoYXJkcy4gIEl0IG11c3QgYmUgdGhlIHNhbWUg
Zm9yIGFsbCBzaGFyZHMuCisgIDEuIE9uIGVhY2ggc2hhcmQsIHNldCB0aGUgYEdURVNUX1NIQVJE
X0lOREVYYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0aGUgaW5kZXggb2YgdGhlIHNoYXJkLiAg
RGlmZmVyZW50IHNoYXJkcyBtdXN0IGJlIGFzc2lnbmVkIGRpZmZlcmVudCBpbmRpY2VzLCB3aGlj
aCBtdXN0IGJlIGluIHRoZSByYW5nZSBgWzAsIEdURVNUX1RPVEFMX1NIQVJEUyAtIDFdYC4KKyAg
MS4gUnVuIHRoZSBzYW1lIHRlc3QgcHJvZ3JhbSBvbiBhbGwgc2hhcmRzLiAgV2hlbiBHb29nbGUg
VGVzdCBzZWVzIHRoZSBhYm92ZSB0d28gZW52aXJvbm1lbnQgdmFyaWFibGVzLCBpdCB3aWxsIHNl
bGVjdCBhIHN1YnNldCBvZiB0aGUgdGVzdCBmdW5jdGlvbnMgdG8gcnVuLiAgQWNyb3NzIGFsbCBz
aGFyZHMsIGVhY2ggdGVzdCBmdW5jdGlvbiBpbiB0aGUgcHJvZ3JhbSB3aWxsIGJlIHJ1biBleGFj
dGx5IG9uY2UuCisgIDEuIFdhaXQgZm9yIGFsbCBzaGFyZHMgdG8gZmluaXNoLCB0aGVuIGNvbGxl
Y3QgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cy4KKworWW91ciBwcm9qZWN0IG1heSBoYXZlIHRlc3Rz
IHRoYXQgd2VyZSB3cml0dGVuIHdpdGhvdXQgR29vZ2xlIFRlc3QgYW5kCit0aHVzIGRvbid0IHVu
ZGVyc3RhbmQgdGhpcyBwcm90b2NvbC4gIEluIG9yZGVyIGZvciB5b3VyIHRlc3QgcnVubmVyIHRv
CitmaWd1cmUgb3V0IHdoaWNoIHRlc3Qgc3VwcG9ydHMgc2hhcmRpbmcsIGl0IGNhbiBzZXQgdGhl
IGVudmlyb25tZW50Cit2YXJpYWJsZSBgR1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEVgIHRvIGEgbm9u
LWV4aXN0ZW50IGZpbGUgcGF0aC4gIElmIGEKK3Rlc3QgcHJvZ3JhbSBzdXBwb3J0cyBzaGFyZGlu
ZywgaXQgd2lsbCBjcmVhdGUgdGhpcyBmaWxlIHRvCithY2tub3dsZWRnZSB0aGUgZmFjdCAodGhl
IGFjdHVhbCBjb250ZW50cyBvZiB0aGUgZmlsZSBhcmUgbm90CitpbXBvcnRhbnQgYXQgdGhpcyB0
aW1lOyBhbHRob3VnaCB3ZSBtYXkgc3RpY2sgc29tZSB1c2VmdWwgaW5mb3JtYXRpb24KK2luIGl0
IGluIHRoZSBmdXR1cmUuKTsgb3RoZXJ3aXNlIGl0IHdpbGwgbm90IGNyZWF0ZSBpdC4KKworSGVy
ZSdzIGFuIGV4YW1wbGUgdG8gbWFrZSBpdCBjbGVhci4gIFN1cHBvc2UgeW91IGhhdmUgYSB0ZXN0
IHByb2dyYW0KK2Bmb29fdGVzdGAgdGhhdCBjb250YWlucyB0aGUgZm9sbG93aW5nIDUgdGVzdCBm
dW5jdGlvbnM6CitgYGAKK1RFU1QoQSwgVikKK1RFU1QoQSwgVykKK1RFU1QoQiwgWCkKK1RFU1Qo
QiwgWSkKK1RFU1QoQiwgWikKK2BgYAorYW5kIHlvdSBoYXZlIDMgbWFjaGluZXMgYXQgeW91ciBk
aXNwb3NhbC4gIFRvIHJ1biB0aGUgdGVzdCBmdW5jdGlvbnMgaW4KK3BhcmFsbGVsLCB5b3Ugd291
bGQgc2V0IGBHVEVTVF9UT1RBTF9TSEFSRFNgIHRvIDMgb24gYWxsIG1hY2hpbmVzLCBhbmQKK3Nl
dCBgR1RFU1RfU0hBUkRfSU5ERVhgIHRvIDAsIDEsIGFuZCAyIG9uIHRoZSBtYWNoaW5lcyByZXNw
ZWN0aXZlbHkuCitUaGVuIHlvdSB3b3VsZCBydW4gdGhlIHNhbWUgYGZvb190ZXN0YCBvbiBlYWNo
IG1hY2hpbmUuCisKK0dvb2dsZSBUZXN0IHJlc2VydmVzIHRoZSByaWdodCB0byBjaGFuZ2UgaG93
IHRoZSB3b3JrIGlzIGRpc3RyaWJ1dGVkCithY3Jvc3MgdGhlIHNoYXJkcywgYnV0IGhlcmUncyBv
bmUgcG9zc2libGUgc2NlbmFyaW86CisKKyAgKiBNYWNoaW5lICMwIHJ1bnMgYEEuVmAgYW5kIGBC
LlhgLgorICAqIE1hY2hpbmUgIzEgcnVucyBgQS5XYCBhbmQgYEIuWWAuCisgICogTWFjaGluZSAj
MiBydW5zIGBCLlpgLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2lu
Y2UgdmVyc2lvbiAxLjMuMC4KKworIyBGdXNpbmcgR29vZ2xlIFRlc3QgU291cmNlIEZpbGVzICMK
KworR29vZ2xlIFRlc3QncyBpbXBsZW1lbnRhdGlvbiBjb25zaXN0cyBvZiB+MzAgZmlsZXMgKGV4
Y2x1ZGluZyBpdHMgb3duCit0ZXN0cykuICBTb21ldGltZXMgeW91IG1heSB3YW50IHRoZW0gdG8g
YmUgcGFja2FnZWQgdXAgaW4gdHdvIGZpbGVzIChhCitgLmhgIGFuZCBhIGAuY2NgKSBpbnN0ZWFk
LCBzdWNoIHRoYXQgeW91IGNhbiBlYXNpbHkgY29weSB0aGVtIHRvIGEgbmV3CittYWNoaW5lIGFu
ZCBzdGFydCBoYWNraW5nIHRoZXJlLiAgRm9yIHRoaXMgd2UgcHJvdmlkZSBhbiBleHBlcmltZW50
YWwKK1B5dGhvbiBzY3JpcHQgYGZ1c2VfZ3Rlc3RfZmlsZXMucHlgIGluIHRoZSBgc2NyaXB0cy9g
IGRpcmVjdG9yeSAoc2luY2UgcmVsZWFzZSAxLjMuMCkuCitBc3N1bWluZyB5b3UgaGF2ZSBQeXRo
b24gMi40IG9yIGFib3ZlIGluc3RhbGxlZCBvbiB5b3VyIG1hY2hpbmUsIGp1c3QKK2dvIHRvIHRo
YXQgZGlyZWN0b3J5IGFuZCBydW4KK2BgYAorcHl0aG9uIGZ1c2VfZ3Rlc3RfZmlsZXMucHkgT1VU
UFVUX0RJUgorYGBgCisKK2FuZCB5b3Ugc2hvdWxkIHNlZSBhbiBgT1VUUFVUX0RJUmAgZGlyZWN0
b3J5IGJlaW5nIGNyZWF0ZWQgd2l0aCBmaWxlcworYGd0ZXN0L2d0ZXN0LmhgIGFuZCBgZ3Rlc3Qv
Z3Rlc3QtYWxsLmNjYCBpbiBpdC4gIFRoZXNlIGZpbGVzIGNvbnRhaW4KK2V2ZXJ5dGhpbmcgeW91
IG5lZWQgdG8gdXNlIEdvb2dsZSBUZXN0LiAgSnVzdCBjb3B5IHRoZW0gdG8gYW55d2hlcmUKK3lv
dSB3YW50IGFuZCB5b3UgYXJlIHJlYWR5IHRvIHdyaXRlIHRlc3RzLiAgWW91IGNhbiB1c2UgdGhl
Citbc2NyaXB0cy90ZXN0L01ha2VmaWxlXSguLi9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUpCitmaWxl
IGFzIGFuIGV4YW1wbGUgb24gaG93IHRvIGNvbXBpbGUgeW91ciB0ZXN0cyBhZ2FpbnN0IHRoZW0u
CisKKyMgV2hlcmUgdG8gR28gZnJvbSBIZXJlICMKKworQ29uZ3JhdHVsYXRpb25zISBZb3UndmUg
bm93IGxlYXJuZWQgbW9yZSBhZHZhbmNlZCBHb29nbGUgVGVzdCB0b29scyBhbmQgYXJlCityZWFk
eSB0byB0YWNrbGUgbW9yZSBjb21wbGV4IHRlc3RpbmcgdGFza3MuIElmIHlvdSB3YW50IHRvIGRp
dmUgZXZlbiBkZWVwZXIsIHlvdQorY2FuIHJlYWQgdGhlIFtGcmVxdWVudGx5LUFza2VkIFF1ZXN0
aW9uc10oRkFRLm1kKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3Mv
RGV2R3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL0Rldkd1aWRlLm1kCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA2NDY3YTMyNzcxZjUzYzRhOWI5NWE2YWExMzRlZGRlM2ZhZGY2MzcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL0Rldkd1aWRlLm1kCkBA
IC0wLDAgKzEsMTI2IEBACisKKworSWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIHVuZGVyc3RhbmRp
bmcgdGhlIGludGVybmFscyBvZiBHb29nbGUgVGVzdCwKK2J1aWxkaW5nIGZyb20gc291cmNlLCBv
ciBjb250cmlidXRpbmcgaWRlYXMgb3IgbW9kaWZpY2F0aW9ucyB0byB0aGUKK3Byb2plY3QsIHRo
ZW4gdGhpcyBkb2N1bWVudCBpcyBmb3IgeW91LgorCisjIEludHJvZHVjdGlvbiAjCisKK0ZpcnN0
LCBsZXQncyBnaXZlIHlvdSBzb21lIGJhY2tncm91bmQgb2YgdGhlIHByb2plY3QuCisKKyMjIExp
Y2Vuc2luZyAjIworCitBbGwgR29vZ2xlIFRlc3Qgc291cmNlIGFuZCBwcmUtYnVpbHQgcGFja2Fn
ZXMgYXJlIHByb3ZpZGVkIHVuZGVyIHRoZSBbTmV3IEJTRCBMaWNlbnNlXShodHRwOi8vd3d3Lm9w
ZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocCkuCisKKyMjIFRoZSBHb29nbGUg
VGVzdCBDb21tdW5pdHkgIyMKKworVGhlIEdvb2dsZSBUZXN0IGNvbW11bml0eSBleGlzdHMgcHJp
bWFyaWx5IHRocm91Z2ggdGhlIFtkaXNjdXNzaW9uIGdyb3VwXShodHRwOi8vZ3JvdXBzLmdvb2ds
ZS5jb20vZ3JvdXAvZ29vZ2xldGVzdGZyYW1ld29yaykgYW5kIHRoZSBHaXRIdWIgcmVwb3NpdG9y
eS4KK1lvdSBhcmUgZGVmaW5pdGVseSBlbmNvdXJhZ2VkIHRvIGNvbnRyaWJ1dGUgdG8gdGhlCitk
aXNjdXNzaW9uIGFuZCB5b3UgY2FuIGFsc28gaGVscCB1cyB0byBrZWVwIHRoZSBlZmZlY3RpdmVu
ZXNzIG9mIHRoZQorZ3JvdXAgaGlnaCBieSBmb2xsb3dpbmcgYW5kIHByb21vdGluZyB0aGUgZ3Vp
ZGVsaW5lcyBsaXN0ZWQgaGVyZS4KKworIyMjIFBsZWFzZSBCZSBGcmllbmRseSAjIyMKKworU2hv
d2luZyBjb3VydGVzeSBhbmQgcmVzcGVjdCB0byBvdGhlcnMgaXMgYSB2aXRhbCBwYXJ0IG9mIHRo
ZSBHb29nbGUKK2N1bHR1cmUsIGFuZCB3ZSBzdHJvbmdseSBlbmNvdXJhZ2UgZXZlcnlvbmUgcGFy
dGljaXBhdGluZyBpbiBHb29nbGUKK1Rlc3QgZGV2ZWxvcG1lbnQgdG8gam9pbiB1cyBpbiBhY2Nl
cHRpbmcgbm90aGluZyBsZXNzLiBPZiBjb3Vyc2UsCitiZWluZyBjb3VydGVvdXMgaXMgbm90IHRo
ZSBzYW1lIGFzIGZhaWxpbmcgdG8gY29uc3RydWN0aXZlbHkgZGlzYWdyZWUKK3dpdGggZWFjaCBv
dGhlciwgYnV0IGl0IGRvZXMgbWVhbiB0aGF0IHdlIHNob3VsZCBiZSByZXNwZWN0ZnVsIG9mIGVh
Y2gKK290aGVyIHdoZW4gZW51bWVyYXRpbmcgdGhlIDQyIHRlY2huaWNhbCByZWFzb25zIHRoYXQg
YSBwYXJ0aWN1bGFyCitwcm9wb3NhbCBtYXkgbm90IGJlIHRoZSBiZXN0IGNob2ljZS4gVGhlcmUn
cyBuZXZlciBhIHJlYXNvbiB0byBiZQorYW50YWdvbmlzdGljIG9yIGRpc21pc3NpdmUgdG93YXJk
IGFueW9uZSB3aG8gaXMgc2luY2VyZWx5IHRyeWluZyB0bworY29udHJpYnV0ZSB0byBhIGRpc2N1
c3Npb24uCisKK1N1cmUsIEMrKyB0ZXN0aW5nIGlzIHNlcmlvdXMgYnVzaW5lc3MgYW5kIGFsbCB0
aGF0LCBidXQgaXQncyBhbHNvCithIGxvdCBvZiBmdW4uIExldCdzIGtlZXAgaXQgdGhhdCB3YXku
IExldCdzIHN0cml2ZSB0byBiZSBvbmUgb2YgdGhlCitmcmllbmRsaWVzdCBjb21tdW5pdGllcyBp
biBhbGwgb2Ygb3BlbiBzb3VyY2UuCisKK0FzIGFsd2F5cywgZGlzY3VzcyBHb29nbGUgVGVzdCBp
biB0aGUgb2ZmaWNpYWwgR29vZ2xlVGVzdCBkaXNjdXNzaW9uIGdyb3VwLgorWW91IGRvbid0IGhh
dmUgdG8gYWN0dWFsbHkgc3VibWl0IGNvZGUgaW4gb3JkZXIgdG8gc2lnbiB1cC4gWW91ciBwYXJ0
aWNpcGF0aW9uCitpdHNlbGYgaXMgYSB2YWx1YWJsZSBjb250cmlidXRpb24uCisKKyMgV29ya2lu
ZyB3aXRoIHRoZSBDb2RlICMKKworSWYgeW91IHdhbnQgdG8gZ2V0IHlvdXIgaGFuZHMgZGlydHkg
d2l0aCB0aGUgY29kZSBpbnNpZGUgR29vZ2xlIFRlc3QsCit0aGlzIGlzIHRoZSBzZWN0aW9uIGZv
ciB5b3UuCisKKyMjIENvbXBpbGluZyBmcm9tIFNvdXJjZSAjIworCitPbmNlIHlvdSBjaGVjayBv
dXQgdGhlIGNvZGUsIHlvdSBjYW4gZmluZCBpbnN0cnVjdGlvbnMgb24gaG93IHRvCitjb21waWxl
IGl0IGluIHRoZSBbUkVBRE1FXSguLi9SRUFETUUubWQpIGZpbGUuCisKKyMjIFRlc3RpbmcgIyMK
KworQSB0ZXN0aW5nIGZyYW1ld29yayBpcyBvZiBubyBnb29kIGlmIGl0c2VsZiBpcyBub3QgdGhv
cm91Z2hseSB0ZXN0ZWQuCitUZXN0cyBzaG91bGQgYmUgd3JpdHRlbiBmb3IgYW55IG5ldyBjb2Rl
LCBhbmQgY2hhbmdlcyBzaG91bGQgYmUKK3ZlcmlmaWVkIHRvIG5vdCBicmVhayBleGlzdGluZyB0
ZXN0cyBiZWZvcmUgdGhleSBhcmUgc3VibWl0dGVkIGZvcgorcmV2aWV3LiBUbyBwZXJmb3JtIHRo
ZSB0ZXN0cywgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgaW4KK1tSRUFETUVdKC4uL1JFQURNRS5t
ZCkgYW5kIHZlcmlmeSB0aGF0IHRoZXJlIGFyZSBubyBmYWlsdXJlcy4KKworIyBDb250cmlidXRp
bmcgQ29kZSAjCisKK1dlIGFyZSBleGNpdGVkIHRoYXQgR29vZ2xlIFRlc3QgaXMgbm93IG9wZW4g
c291cmNlLCBhbmQgaG9wZSB0byBnZXQKK2dyZWF0IHBhdGNoZXMgZnJvbSB0aGUgY29tbXVuaXR5
LiBCZWZvcmUgeW91IGZpcmUgdXAgeW91ciBmYXZvcml0ZSBJREUKK2FuZCBiZWdpbiBoYW1tZXJp
bmcgYXdheSBhdCB0aGF0IG5ldyBmZWF0dXJlLCB0aG91Z2gsIHBsZWFzZSB0YWtlIHRoZQordGlt
ZSB0byByZWFkIHRoaXMgc2VjdGlvbiBhbmQgdW5kZXJzdGFuZCB0aGUgcHJvY2Vzcy4gV2hpbGUg
aXQgc2VlbXMKK3JpZ29yb3VzLCB3ZSB3YW50IHRvIGtlZXAgYSBoaWdoIHN0YW5kYXJkIG9mIHF1
YWxpdHkgaW4gdGhlIGNvZGUKK2Jhc2UuCisKKyMjIENvbnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVt
ZW50cyAjIworCitZb3UgbXVzdCBzaWduIGEgQ29udHJpYnV0b3IgTGljZW5zZSBBZ3JlZW1lbnQg
KENMQSkgYmVmb3JlIHdlIGNhbgorYWNjZXB0IGFueSBjb2RlLiAgVGhlIENMQSBwcm90ZWN0cyB5
b3UgYW5kIHVzLgorCisgICogSWYgeW91IGFyZSBhbiBpbmRpdmlkdWFsIHdyaXRpbmcgb3JpZ2lu
YWwgc291cmNlIGNvZGUgYW5kIHlvdSdyZSBzdXJlIHlvdSBvd24gdGhlIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSwgdGhlbiB5b3UnbGwgbmVlZCB0byBzaWduIGFuIFtpbmRpdmlkdWFsIENMQV0oaHR0
cDovL2NvZGUuZ29vZ2xlLmNvbS9sZWdhbC9pbmRpdmlkdWFsLWNsYS12MS4wLmh0bWwpLgorICAq
IElmIHlvdSB3b3JrIGZvciBhIGNvbXBhbnkgdGhhdCB3YW50cyB0byBhbGxvdyB5b3UgdG8gY29u
dHJpYnV0ZSB5b3VyIHdvcmsgdG8gR29vZ2xlIFRlc3QsIHRoZW4geW91J2xsIG5lZWQgdG8gc2ln
biBhIFtjb3Jwb3JhdGUgQ0xBXShodHRwOi8vY29kZS5nb29nbGUuY29tL2xlZ2FsL2NvcnBvcmF0
ZS1jbGEtdjEuMC5odG1sKS4KKworRm9sbG93IGVpdGhlciBvZiB0aGUgdHdvIGxpbmtzIGFib3Zl
IHRvIGFjY2VzcyB0aGUgYXBwcm9wcmlhdGUgQ0xBIGFuZAoraW5zdHJ1Y3Rpb25zIGZvciBob3cg
dG8gc2lnbiBhbmQgcmV0dXJuIGl0LgorCisjIyBDb2RpbmcgU3R5bGUgIyMKKworVG8ga2VlcCB0
aGUgc291cmNlIGNvbnNpc3RlbnQsIHJlYWRhYmxlLCBkaWZmYWJsZSBhbmQgZWFzeSB0byBtZXJn
ZSwKK3dlIHVzZSBhIGZhaXJseSByaWdpZCBjb2Rpbmcgc3R5bGUsIGFzIGRlZmluZWQgYnkgdGhl
IFtnb29nbGUtc3R5bGVndWlkZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS1zdHls
ZWd1aWRlLykgcHJvamVjdC4gIEFsbCBwYXRjaGVzIHdpbGwgYmUgZXhwZWN0ZWQKK3RvIGNvbmZv
cm0gdG8gdGhlIHN0eWxlIG91dGxpbmVkIFtoZXJlXShodHRwOi8vZ29vZ2xlLXN0eWxlZ3VpZGUu
Z29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2NwcGd1aWRlLnhtbCkuCisKKyMjIFVwZGF0aW5nIEdl
bmVyYXRlZCBDb2RlICMjCisKK1NvbWUgb2YgR29vZ2xlIFRlc3QncyBzb3VyY2UgZmlsZXMgYXJl
IGdlbmVyYXRlZCBieSB0aGUgUHVtcCB0b29sIChhCitQeXRob24gc2NyaXB0KS4gIElmIHlvdSBu
ZWVkIHRvIHVwZGF0ZSBzdWNoIGZpbGVzLCBwbGVhc2UgbW9kaWZ5IHRoZQorc291cmNlIChgZm9v
LmgucHVtcGApIGFuZCByZS1nZW5lcmF0ZSB0aGUgQysrIGZpbGUgdXNpbmcgUHVtcC4gIFlvdQor
Y2FuIHJlYWQgdGhlIFB1bXBNYW51YWwgZm9yIGRldGFpbHMuCisKKyMjIFN1Ym1pdHRpbmcgUGF0
Y2hlcyAjIworCitQbGVhc2UgZG8gc3VibWl0IGNvZGUuIEhlcmUncyB3aGF0IHlvdSBuZWVkIHRv
IGRvOgorCisgIDEuIEEgc3VibWlzc2lvbiBzaG91bGQgYmUgYSBzZXQgb2YgY2hhbmdlcyB0aGF0
IGFkZHJlc3NlcyBvbmUgaXNzdWUgaW4gdGhlIFtpc3N1ZSB0cmFja2VyXShodHRwczovL2dpdGh1
Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvaXNzdWVzKS4gUGxlYXNlIGRvbid0IG1peCBtb3JlIHRo
YW4gb25lIGxvZ2ljYWwgY2hhbmdlIHBlciBzdWJtaXR0YWwsIGJlY2F1c2UgaXQgbWFrZXMgdGhl
IGhpc3RvcnkgaGFyZCB0byBmb2xsb3cuIElmIHlvdSB3YW50IHRvIG1ha2UgYSBjaGFuZ2UgdGhh
dCBkb2Vzbid0IGhhdmUgYSBjb3JyZXNwb25kaW5nIGlzc3VlIGluIHRoZSBpc3N1ZSB0cmFja2Vy
LCBwbGVhc2UgY3JlYXRlIG9uZS4KKyAgMS4gQWxzbywgY29vcmRpbmF0ZSB3aXRoIHRlYW0gbWVt
YmVycyB0aGF0IGFyZSBsaXN0ZWQgb24gdGhlIGlzc3VlIGluIHF1ZXN0aW9uLiBUaGlzIGVuc3Vy
ZXMgdGhhdCB3b3JrIGlzbid0IGJlaW5nIGR1cGxpY2F0ZWQgYW5kIGNvbW11bmljYXRpbmcgeW91
ciBwbGFuIGVhcmx5IGFsc28gZ2VuZXJhbGx5IGxlYWRzIHRvIGJldHRlciBwYXRjaGVzLgorICAx
LiBFbnN1cmUgdGhhdCB5b3VyIGNvZGUgYWRoZXJlcyB0byB0aGUgW0dvb2dsZSBUZXN0IHNvdXJj
ZSBjb2RlIHN0eWxlXSgjQ29kaW5nX1N0eWxlLm1kKS4KKyAgMS4gRW5zdXJlIHRoYXQgdGhlcmUg
YXJlIHVuaXQgdGVzdHMgZm9yIHlvdXIgY29kZS4KKyAgMS4gU2lnbiBhIENvbnRyaWJ1dG9yIExp
Y2Vuc2UgQWdyZWVtZW50LgorICAxLiBDcmVhdGUgYSBQdWxsIFJlcXVlc3QgaW4gdGhlIHVzdWFs
IHdheS4KKworIyMgR29vZ2xlIFRlc3QgQ29tbWl0dGVycyAjIworCitUaGUgY3VycmVudCBtZW1i
ZXJzIG9mIHRoZSBHb29nbGUgVGVzdCBlbmdpbmVlcmluZyB0ZWFtIGFyZSB0aGUgb25seQorY29t
bWl0dGVycyBhdCBwcmVzZW50LiBJbiB0aGUgZ3JlYXQgdHJhZGl0aW9uIG9mIGVhdGluZyBvbmUn
cyBvd24KK2RvZ2Zvb2QsIHdlIHdpbGwgYmUgcmVxdWlyaW5nIGVhY2ggbmV3IEdvb2dsZSBUZXN0
IGVuZ2luZWVyaW5nIHRlYW0KK21lbWJlciB0byBlYXJuIHRoZSByaWdodCB0byBiZWNvbWUgYSBj
b21taXR0ZXIgYnkgZm9sbG93aW5nIHRoZQorcHJvY2VkdXJlcyBpbiB0aGlzIGRvY3VtZW50LCB3
cml0aW5nIGNvbnNpc3RlbnRseSBncmVhdCBjb2RlLCBhbmQKK2RlbW9uc3RyYXRpbmcgcmVwZWF0
ZWRseSB0aGF0IGhlIG9yIHNoZSB0cnVseSBnZXRzIHRoZSB6ZW4gb2YgR29vZ2xlCitUZXN0Lgor
CisjIFJlbGVhc2UgUHJvY2VzcyAjCisKK1dlIGZvbGxvdyBhIHR5cGljYWwgcmVsZWFzZSBwcm9j
ZXNzOgorCisgIDEuIEEgcmVsZWFzZSBicmFuY2ggbmFtZWQgYHJlbGVhc2UtWC5ZYCBpcyBjcmVh
dGVkLgorICAxLiBCdWdzIGFyZSBmaXhlZCBhbmQgZmVhdHVyZXMgYXJlIGFkZGVkIGluIHRydW5r
OyB0aG9zZSBpbmRpdmlkdWFsIHBhdGNoZXMgYXJlIG1lcmdlZCBpbnRvIHRoZSByZWxlYXNlIGJy
YW5jaCB1bnRpbCBpdCdzIHN0YWJsZS4KKyAgMS4gQW4gaW5kaXZpZHVhbCBwb2ludCByZWxlYXNl
ICh0aGUgYFpgIGluIGBYLlkuWmApIGlzIG1hZGUgYnkgY3JlYXRpbmcgYSB0YWcgZnJvbSB0aGUg
YnJhbmNoLgorICAxLiBSZXBlYXQgc3RlcHMgMiBhbmQgMyB0aHJvdWdob3V0IG9uZSByZWxlYXNl
IGN5Y2xlIChhcyBkZXRlcm1pbmVkIGJ5IGZlYXR1cmVzIG9yIHRpbWUpLgorICAxLiBHbyBiYWNr
IHRvIHN0ZXAgMSB0byBjcmVhdGUgYW5vdGhlciByZWxlYXNlIGJyYW5jaCBhbmQgc28gb24uCisK
Ky0tLQorCitUaGlzIHBhZ2UgaXMgYmFzZWQgb24gdGhlIFtNYWtpbmcgR1dUIEJldHRlcl0oaHR0
cDovL2NvZGUuZ29vZ2xlLmNvbS93ZWJ0b29sa2l0L21ha2luZ2d3dGJldHRlci5odG1sKSBndWlk
ZSBmcm9tIHRoZSBbR29vZ2xlIFdlYiBUb29sa2l0XShodHRwOi8vY29kZS5nb29nbGUuY29tL3dl
YnRvb2xraXQvKSBwcm9qZWN0LiAgRXhjZXB0IGFzIG90aGVyd2lzZSBbbm90ZWRdKGh0dHA6Ly9j
b2RlLmdvb2dsZS5jb20vcG9saWNpZXMuaHRtbCNyZXN0cmljdGlvbnMpLCB0aGUgY29udGVudCBv
ZiB0aGlzIHBhZ2UgaXMgbGljZW5zZWQgdW5kZXIgdGhlIFtDcmVhdGl2ZSBDb21tb25zIEF0dHJp
YnV0aW9uIDIuNSBMaWNlbnNlXShodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9i
eS8yLjUvKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvRG9jdW1l
bnRhdGlvbi5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvRG9jdW1lbnRhdGlvbi5t
ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44Y2ExYWFjNzU5OTM3MmUwZDk1MTlhMjEwYzMzNGFlYjM5MzA2MWMwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9Eb2N1bWVudGF0
aW9uLm1kCkBAIC0wLDAgKzEsMTQgQEAKK1RoaXMgcGFnZSBsaXN0cyBhbGwgZG9jdW1lbnRhdGlv
biB3aWtpIHBhZ2VzIGZvciBHb29nbGUgVGVzdCAqKih0aGUgU1ZOIHRydW5rIHZlcnNpb24pKioK
Ky0tICoqaWYgeW91IHVzZSBhIHJlbGVhc2VkIHZlcnNpb24gb2YgR29vZ2xlIFRlc3QsIHBsZWFz
ZSByZWFkIHRoZQorZG9jdW1lbnRhdGlvbiBmb3IgdGhhdCBzcGVjaWZpYyB2ZXJzaW9uIGluc3Rl
YWQuKioKKworICAqIFtQcmltZXJdKFByaW1lci5tZCkgLS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJl
IG5ldyB0byBHb29nbGUgVGVzdC4KKyAgKiBbU2FtcGxlc10oU2FtcGxlcy5tZCkgLS0gbGVhcm4g
ZnJvbSBleGFtcGxlcy4KKyAgKiBbQWR2YW5jZWRHdWlkZV0oQWR2YW5jZWRHdWlkZS5tZCkgLS0g
bGVhcm4gbW9yZSBhYm91dCBHb29nbGUgVGVzdC4KKyAgKiBbWGNvZGVHdWlkZV0oWGNvZGVHdWlk
ZS5tZCkgLS0gaG93IHRvIHVzZSBHb29nbGUgVGVzdCBpbiBYY29kZSBvbiBNYWMuCisgICogW0Zy
ZXF1ZW50bHktQXNrZWQgUXVlc3Rpb25zXShGQVEubWQpIC0tIGNoZWNrIGhlcmUgYmVmb3JlIGFz
a2luZyBhIHF1ZXN0aW9uIG9uIHRoZSBtYWlsaW5nIGxpc3QuCisKK1RvIGNvbnRyaWJ1dGUgY29k
ZSB0byBHb29nbGUgVGVzdCwgcmVhZDoKKworICAqIFtEZXZHdWlkZV0oRGV2R3VpZGUubWQpIC0t
IHJlYWQgdGhpcyBfYmVmb3JlXyB3cml0aW5nIHlvdXIgZmlyc3QgcGF0Y2guCisgICogW1B1bXBN
YW51YWxdKFB1bXBNYW51YWwubWQpIC0tIGhvdyB3ZSBnZW5lcmF0ZSBzb21lIG9mIEdvb2dsZSBU
ZXN0J3Mgc291cmNlIGZpbGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvRkFRLm1kIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvZG9jcy9GQVEubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZkNmNiNzIzOGExOWI3YTcxYTRhOTVh
NjNiZTkzZTE5MjE0NTJkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2RvY3MvRkFRLm1kCkBAIC0wLDAgKzEsMTA4NyBAQAorCisKK0lmIHlvdSBjYW5ub3QgZmlu
ZCB0aGUgYW5zd2VyIHRvIHlvdXIgcXVlc3Rpb24gaGVyZSwgYW5kIHlvdSBoYXZlIHJlYWQKK1tQ
cmltZXJdKFByaW1lci5tZCkgYW5kIFtBZHZhbmNlZEd1aWRlXShBZHZhbmNlZEd1aWRlLm1kKSwg
c2VuZCBpdCB0bworZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tLgorCisjIyBX
aHkgc2hvdWxkIEkgdXNlIEdvb2dsZSBUZXN0IGluc3RlYWQgb2YgbXkgZmF2b3JpdGUgQysrIHRl
c3RpbmcgZnJhbWV3b3JrPyAjIworCitGaXJzdCwgbGV0IHVzIHNheSBjbGVhcmx5IHRoYXQgd2Ug
ZG9uJ3Qgd2FudCB0byBnZXQgaW50byB0aGUgZGViYXRlIG9mCit3aGljaCBDKysgdGVzdGluZyBm
cmFtZXdvcmsgaXMgKip0aGUgYmVzdCoqLiAgVGhlcmUgZXhpc3QgbWFueSBmaW5lCitmcmFtZXdv
cmtzIGZvciB3cml0aW5nIEMrKyB0ZXN0cywgYW5kIHdlIGhhdmUgdHJlbWVuZG91cyByZXNwZWN0
IGZvcgordGhlIGRldmVsb3BlcnMgYW5kIHVzZXJzIG9mIHRoZW0uICBXZSBkb24ndCB0aGluayB0
aGVyZSBpcyAob3Igd2lsbAorYmUpIGEgc2luZ2xlIGJlc3QgZnJhbWV3b3JrIC0geW91IGhhdmUg
dG8gcGljayB0aGUgcmlnaHQgdG9vbCBmb3IgdGhlCitwYXJ0aWN1bGFyIHRhc2sgeW91IGFyZSB0
YWNrbGluZy4KKworV2UgY3JlYXRlZCBHb29nbGUgVGVzdCBiZWNhdXNlIHdlIGNvdWxkbid0IGZp
bmQgdGhlIHJpZ2h0IGNvbWJpbmF0aW9uCitvZiBmZWF0dXJlcyBhbmQgY29udmVuaWVuY2VzIGlu
IGFuIGV4aXN0aW5nIGZyYW1ld29yayB0byBzYXRpc2Z5IF9vdXJfCituZWVkcy4gIFRoZSBmb2xs
b3dpbmcgaXMgYSBsaXN0IG9mIHRoaW5ncyB0aGF0IF93ZV8gbGlrZSBhYm91dCBHb29nbGUKK1Rl
c3QuICBXZSBkb24ndCBjbGFpbSB0aGVtIHRvIGJlIHVuaXF1ZSB0byBHb29nbGUgVGVzdCAtIHJh
dGhlciwgdGhlCitjb21iaW5hdGlvbiBvZiB0aGVtIG1ha2VzIEdvb2dsZSBUZXN0IHRoZSBjaG9p
Y2UgZm9yIHVzLiAgV2UgaG9wZSB0aGlzCitsaXN0IGNhbiBoZWxwIHlvdSBkZWNpZGUgd2hldGhl
ciBpdCBpcyBmb3IgeW91IHRvby4KKworICAqIEdvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHRvIGJl
IHBvcnRhYmxlOiBpdCBkb2Vzbid0IHJlcXVpcmUgZXhjZXB0aW9ucyBvciBSVFRJOyBpdCB3b3Jr
cyBhcm91bmQgdmFyaW91cyBidWdzIGluIHZhcmlvdXMgY29tcGlsZXJzIGFuZCBlbnZpcm9ubWVu
dHM7IGV0Yy4gIEFzIGEgcmVzdWx0LCBpdCB3b3JrcyBvbiBMaW51eCwgTWFjIE9TIFgsIFdpbmRv
d3MgYW5kIHNldmVyYWwgZW1iZWRkZWQgb3BlcmF0aW5nIHN5c3RlbXMuCisgICogTm9uZmF0YWwg
YXNzZXJ0aW9ucyAoYEVYUEVDVF8qYCkgaGF2ZSBwcm92ZW4gdG8gYmUgZ3JlYXQgdGltZSBzYXZl
cnMsIGFzIHRoZXkgYWxsb3cgYSB0ZXN0IHRvIHJlcG9ydCBtdWx0aXBsZSBmYWlsdXJlcyBpbiBh
IHNpbmdsZSBlZGl0LWNvbXBpbGUtdGVzdCBjeWNsZS4KKyAgKiBJdCdzIGVhc3kgdG8gd3JpdGUg
YXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIGluZm9ybWF0aXZlIG1lc3NhZ2VzOiB5b3UganVzdCB1
c2UgdGhlIHN0cmVhbSBzeW50YXggdG8gYXBwZW5kIGFueSBhZGRpdGlvbmFsIGluZm9ybWF0aW9u
LCBlLmcuIGBBU1NFUlRfRVEoNSwgRm9vKGkpKSA8PCAiIHdoZXJlIGkgPSAiIDw8IGk7YC4gIEl0
IGRvZXNuJ3QgcmVxdWlyZSBhIG5ldyBzZXQgb2YgbWFjcm9zIG9yIHNwZWNpYWwgZnVuY3Rpb25z
LgorICAqIEdvb2dsZSBUZXN0IGF1dG9tYXRpY2FsbHkgZGV0ZWN0cyB5b3VyIHRlc3RzIGFuZCBk
b2Vzbid0IHJlcXVpcmUgeW91IHRvIGVudW1lcmF0ZSB0aGVtIGluIG9yZGVyIHRvIHJ1biB0aGVt
LgorICAqIERlYXRoIHRlc3RzIGFyZSBwcmV0dHkgaGFuZHkgZm9yIGVuc3VyaW5nIHRoYXQgeW91
ciBhc3NlcnRzIGluIHByb2R1Y3Rpb24gY29kZSBhcmUgdHJpZ2dlcmVkIGJ5IHRoZSByaWdodCBj
b25kaXRpb25zLgorICAqIGBTQ09QRURfVFJBQ0VgIGhlbHBzIHlvdSB1bmRlcnN0YW5kIHRoZSBj
b250ZXh0IG9mIGFuIGFzc2VydGlvbiBmYWlsdXJlIHdoZW4gaXQgY29tZXMgZnJvbSBpbnNpZGUg
YSBzdWItcm91dGluZSBvciBsb29wLgorICAqIFlvdSBjYW4gZGVjaWRlIHdoaWNoIHRlc3RzIHRv
IHJ1biB1c2luZyBuYW1lIHBhdHRlcm5zLiAgVGhpcyBzYXZlcyB0aW1lIHdoZW4geW91IHdhbnQg
dG8gcXVpY2tseSByZXByb2R1Y2UgYSB0ZXN0IGZhaWx1cmUuCisgICogR29vZ2xlIFRlc3QgY2Fu
IGdlbmVyYXRlIFhNTCB0ZXN0IHJlc3VsdCByZXBvcnRzIHRoYXQgY2FuIGJlIHBhcnNlZCBieSBw
b3B1bGFyIGNvbnRpbnVvdXMgYnVpbGQgc3lzdGVtIGxpa2UgSHVkc29uLgorICAqIFNpbXBsZSB0
aGluZ3MgYXJlIGVhc3kgaW4gR29vZ2xlIFRlc3QsIHdoaWxlIGhhcmQgdGhpbmdzIGFyZSBwb3Nz
aWJsZTogaW4gYWRkaXRpb24gdG8gYWR2YW5jZWQgZmVhdHVyZXMgbGlrZSBbZ2xvYmFsIHRlc3Qg
ZW52aXJvbm1lbnRzXShBZHZhbmNlZEd1aWRlLm1kI2dsb2JhbC1zZXQtdXAtYW5kLXRlYXItZG93
bikgYW5kIHRlc3RzIHBhcmFtZXRlcml6ZWQgYnkgW3ZhbHVlc10oQWR2YW5jZWRHdWlkZS5tZCN2
YWx1ZS1wYXJhbWV0ZXJpemVkLXRlc3RzKSBvciBbdHlwZXNdKGRvY3MvQWR2YW5jZWRHdWlkZS5t
ZCN0eXBlZC10ZXN0cyksIEdvb2dsZSBUZXN0IHN1cHBvcnRzIHZhcmlvdXMgd2F5cyBmb3IgdGhl
IHVzZXIgdG8gZXh0ZW5kIHRoZSBmcmFtZXdvcmsgLS0gaWYgR29vZ2xlIFRlc3QgZG9lc24ndCBk
byBzb21ldGhpbmcgb3V0IG9mIHRoZSBib3gsIGNoYW5jZXMgYXJlIHRoYXQgYSB1c2VyIGNhbiBp
bXBsZW1lbnQgdGhlIGZlYXR1cmUgdXNpbmcgR29vZ2xlIFRlc3QncyBwdWJsaWMgQVBJLCB3aXRo
b3V0IGNoYW5naW5nIEdvb2dsZSBUZXN0IGl0c2VsZi4gIEluIHBhcnRpY3VsYXIsIHlvdSBjYW46
CisgICAgKiBleHBhbmQgeW91ciB0ZXN0aW5nIHZvY2FidWxhcnkgYnkgZGVmaW5pbmcgW2N1c3Rv
bSBwcmVkaWNhdGVzXShBZHZhbmNlZEd1aWRlLm1kI3ByZWRpY2F0ZS1hc3NlcnRpb25zLWZvci1i
ZXR0ZXItZXJyb3ItbWVzc2FnZXMpLAorICAgICogdGVhY2ggR29vZ2xlIFRlc3QgaG93IHRvIFtw
cmludCB5b3VyIHR5cGVzXShBZHZhbmNlZEd1aWRlLm1kI3RlYWNoaW5nLWdvb2dsZS10ZXN0LWhv
dy10by1wcmludC15b3VyLXZhbHVlcyksCisgICAgKiBkZWZpbmUgeW91ciBvd24gdGVzdGluZyBt
YWNyb3Mgb3IgdXRpbGl0aWVzIGFuZCB2ZXJpZnkgdGhlbSB1c2luZyBHb29nbGUgVGVzdCdzIFtT
ZXJ2aWNlIFByb3ZpZGVyIEludGVyZmFjZV0oQWR2YW5jZWRHdWlkZS5tZCNjYXRjaGluZy1mYWls
dXJlcyksIGFuZAorICAgICogcmVmbGVjdCBvbiB0aGUgdGVzdCBjYXNlcyBvciBjaGFuZ2UgdGhl
IHRlc3Qgb3V0cHV0IGZvcm1hdCBieSBpbnRlcmNlcHRpbmcgdGhlIFt0ZXN0IGV2ZW50c10oQWR2
YW5jZWRHdWlkZS5tZCNleHRlbmRpbmctZ29vZ2xlLXRlc3QtYnktaGFuZGxpbmctdGVzdC1ldmVu
dHMpLgorCisjIyBJJ20gZ2V0dGluZyB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZyBHb29nbGUgVGVz
dC4gIFdvdWxkIHlvdSBmaXggdGhlbT8gIyMKKworV2Ugc3RyaXZlIHRvIG1pbmltaXplIGNvbXBp
bGVyIHdhcm5pbmdzIEdvb2dsZSBUZXN0IGdlbmVyYXRlcy4gIEJlZm9yZSByZWxlYXNpbmcgYSBu
ZXcgdmVyc2lvbiwgd2UgdGVzdCB0byBtYWtlIHN1cmUgdGhhdCBpdCBkb2Vzbid0IGdlbmVyYXRl
IHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgdXNpbmcgaXRzIENNYWtlIHNjcmlwdCBvbiBXaW5kb3dz
LCBMaW51eCwgYW5kIE1hYyBPUy4KKworVW5mb3J0dW5hdGVseSwgdGhpcyBkb2Vzbid0IG1lYW4g
eW91IGFyZSBndWFyYW50ZWVkIHRvIHNlZSBubyB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZyBHb29n
bGUgVGVzdCBpbiB5b3VyIGVudmlyb25tZW50OgorCisgICogWW91IG1heSBiZSB1c2luZyBhIGRp
ZmZlcmVudCBjb21waWxlciBhcyB3ZSB1c2UsIG9yIGEgZGlmZmVyZW50IHZlcnNpb24gb2YgdGhl
IHNhbWUgY29tcGlsZXIuICBXZSBjYW5ub3QgcG9zc2libHkgdGVzdCBmb3IgYWxsIGNvbXBpbGVy
cy4KKyAgKiBZb3UgbWF5IGJlIGNvbXBpbGluZyBvbiBhIGRpZmZlcmVudCBwbGF0Zm9ybSBhcyB3
ZSBkby4KKyAgKiBZb3VyIHByb2plY3QgbWF5IGJlIHVzaW5nIGRpZmZlcmVudCBjb21waWxlciBm
bGFncyBhcyB3ZSBkby4KKworSXQgaXMgbm90IGFsd2F5cyBwb3NzaWJsZSB0byBtYWtlIEdvb2ds
ZSBUZXN0IHdhcm5pbmctZnJlZSBmb3IgZXZlcnlvbmUuICBPciwgaXQgbWF5IG5vdCBiZSBkZXNp
cmFibGUgaWYgdGhlIHdhcm5pbmcgaXMgcmFyZWx5IGVuYWJsZWQgYW5kIGZpeGluZyB0aGUgdmlv
bGF0aW9ucyBtYWtlcyB0aGUgY29kZSBtb3JlIGNvbXBsZXguCisKK0lmIHlvdSBzZWUgd2Fybmlu
Z3Mgd2hlbiBjb21waWxpbmcgR29vZ2xlIFRlc3QsIHdlIHN1Z2dlc3QgdGhhdCB5b3UgdXNlIHRo
ZSBgLWlzeXN0ZW1gIGZsYWcgKGFzc3VtaW5nIHlvdXIgYXJlIHVzaW5nIEdDQykgdG8gbWFyayBH
b29nbGUgVGVzdCBoZWFkZXJzIGFzIHN5c3RlbSBoZWFkZXJzLiAgVGhhdCdsbCBzdXBwcmVzcyB3
YXJuaW5ncyBmcm9tIEdvb2dsZSBUZXN0IGhlYWRlcnMuCisKKyMjIFdoeSBzaG91bGQgbm90IHRl
c3QgY2FzZSBuYW1lcyBhbmQgdGVzdCBuYW1lcyBjb250YWluIHVuZGVyc2NvcmU/ICMjCisKK1Vu
ZGVyc2NvcmUgKGBfYCkgaXMgc3BlY2lhbCwgYXMgQysrIHJlc2VydmVzIHRoZSBmb2xsb3dpbmcg
dG8gYmUgdXNlZCBieQordGhlIGNvbXBpbGVyIGFuZCB0aGUgc3RhbmRhcmQgbGlicmFyeToKKwor
ICAxLiBhbnkgaWRlbnRpZmllciB0aGF0IHN0YXJ0cyB3aXRoIGFuIGBfYCBmb2xsb3dlZCBieSBh
biB1cHBlci1jYXNlIGxldHRlciwgYW5kCisgIDEuIGFueSBpZGVudGlmaWVyIHRoYXQgY29udGFp
bmVycyB0d28gY29uc2VjdXRpdmUgdW5kZXJzY29yZXMgKGkuZS4gYF9fYCkgX2FueXdoZXJlXyBp
biBpdHMgbmFtZS4KKworVXNlciBjb2RlIGlzIF9wcm9oaWJpdGVkXyBmcm9tIHVzaW5nIHN1Y2gg
aWRlbnRpZmllcnMuCisKK05vdyBsZXQncyBsb29rIGF0IHdoYXQgdGhpcyBtZWFucyBmb3IgYFRF
U1RgIGFuZCBgVEVTVF9GYC4KKworQ3VycmVudGx5IGBURVNUKFRlc3RDYXNlTmFtZSwgVGVzdE5h
bWUpYCBnZW5lcmF0ZXMgYSBjbGFzcyBuYW1lZAorYFRlc3RDYXNlTmFtZV9UZXN0TmFtZV9UZXN0
YC4gIFdoYXQgaGFwcGVucyBpZiBgVGVzdENhc2VOYW1lYCBvciBgVGVzdE5hbWVgCitjb250YWlu
cyBgX2A/CisKKyAgMS4gSWYgYFRlc3RDYXNlTmFtZWAgc3RhcnRzIHdpdGggYW4gYF9gIGZvbGxv
d2VkIGJ5IGFuIHVwcGVyLWNhc2UgbGV0dGVyIChzYXksIGBfRm9vYCksIHdlIGVuZCB1cCB3aXRo
IGBfRm9vX1Rlc3ROYW1lX1Rlc3RgLCB3aGljaCBpcyByZXNlcnZlZCBhbmQgdGh1cyBpbnZhbGlk
LgorICAxLiBJZiBgVGVzdENhc2VOYW1lYCBlbmRzIHdpdGggYW4gYF9gIChzYXksIGBGb29fYCks
IHdlIGdldCBgRm9vX19UZXN0TmFtZV9UZXN0YCwgd2hpY2ggaXMgaW52YWxpZC4KKyAgMS4gSWYg
YFRlc3ROYW1lYCBzdGFydHMgd2l0aCBhbiBgX2AgKHNheSwgYF9CYXJgKSwgd2UgZ2V0IGBUZXN0
Q2FzZU5hbWVfX0Jhcl9UZXN0YCwgd2hpY2ggaXMgaW52YWxpZC4KKyAgMS4gSWYgYFRlc3ROYW1l
YCBlbmRzIHdpdGggYW4gYF9gIChzYXksIGBCYXJfYCksIHdlIGdldCBgVGVzdENhc2VOYW1lX0Jh
cl9fVGVzdGAsIHdoaWNoIGlzIGludmFsaWQuCisKK1NvIGNsZWFybHkgYFRlc3RDYXNlTmFtZWAg
YW5kIGBUZXN0TmFtZWAgY2Fubm90IHN0YXJ0IG9yIGVuZCB3aXRoIGBfYAorKEFjdHVhbGx5LCBg
VGVzdENhc2VOYW1lYCBjYW4gc3RhcnQgd2l0aCBgX2AgLS0gYXMgbG9uZyBhcyB0aGUgYF9gIGlz
bid0Citmb2xsb3dlZCBieSBhbiB1cHBlci1jYXNlIGxldHRlci4gIEJ1dCB0aGF0J3MgZ2V0dGlu
ZyBjb21wbGljYXRlZC4gIFNvCitmb3Igc2ltcGxpY2l0eSB3ZSBqdXN0IHNheSB0aGF0IGl0IGNh
bm5vdCBzdGFydCB3aXRoIGBfYC4pLgorCitJdCBtYXkgc2VlbSBmaW5lIGZvciBgVGVzdENhc2VO
YW1lYCBhbmQgYFRlc3ROYW1lYCB0byBjb250YWluIGBfYCBpbiB0aGUKK21pZGRsZS4gIEhvd2V2
ZXIsIGNvbnNpZGVyIHRoaXM6CitgYGAgY3BwCitURVNUKFRpbWUsIEZsaWVzX0xpa2VfQW5fQXJy
b3cpIHsgLi4uIH0KK1RFU1QoVGltZV9GbGllcywgTGlrZV9Bbl9BcnJvdykgeyAuLi4gfQorYGBg
CisKK05vdywgdGhlIHR3byBgVEVTVGBzIHdpbGwgYm90aCBnZW5lcmF0ZSB0aGUgc2FtZSBjbGFz
cworKGBUaW1lX0ZpbGVzX0xpa2VfQW5fQXJyb3dfVGVzdGApLiAgVGhhdCdzIG5vdCBnb29kLgor
CitTbyBmb3Igc2ltcGxpY2l0eSwgd2UganVzdCBhc2sgdGhlIHVzZXJzIHRvIGF2b2lkIGBfYCBp
biBgVGVzdENhc2VOYW1lYAorYW5kIGBUZXN0TmFtZWAuICBUaGUgcnVsZSBpcyBtb3JlIGNvbnN0
cmFpbmluZyB0aGFuIG5lY2Vzc2FyeSwgYnV0IGl0J3MKK3NpbXBsZSBhbmQgZWFzeSB0byByZW1l
bWJlci4gIEl0IGFsc28gZ2l2ZXMgR29vZ2xlIFRlc3Qgc29tZSB3aWdnbGUKK3Jvb20gaW4gY2Fz
ZSBpdHMgaW1wbGVtZW50YXRpb24gbmVlZHMgdG8gY2hhbmdlIGluIHRoZSBmdXR1cmUuCisKK0lm
IHlvdSB2aW9sYXRlIHRoZSBydWxlLCB0aGVyZSBtYXkgbm90IGJlIGltbWVkaWF0ZWx5IGNvbnNl
cXVlbmNlcywKK2J1dCB5b3VyIHRlc3QgbWF5IChqdXN0IG1heSkgYnJlYWsgd2l0aCBhIG5ldyBj
b21waWxlciAob3IgYSBuZXcKK3ZlcnNpb24gb2YgdGhlIGNvbXBpbGVyIHlvdSBhcmUgdXNpbmcp
IG9yIHdpdGggYSBuZXcgdmVyc2lvbiBvZiBHb29nbGUKK1Rlc3QuICBUaGVyZWZvcmUgaXQncyBi
ZXN0IHRvIGZvbGxvdyB0aGUgcnVsZS4KKworIyMgV2h5IGlzIGl0IG5vdCByZWNvbW1lbmRlZCB0
byBpbnN0YWxsIGEgcHJlLWNvbXBpbGVkIGNvcHkgb2YgR29vZ2xlIFRlc3QgKGZvciBleGFtcGxl
LCBpbnRvIC91c3IvbG9jYWwpPyAjIworCitJbiB0aGUgZWFybHkgZGF5cywgd2Ugc2FpZCB0aGF0
IHlvdSBjb3VsZCBpbnN0YWxsCitjb21waWxlZCBHb29nbGUgVGVzdCBsaWJyYXJpZXMgb24gYCpg
bml4IHN5c3RlbXMgdXNpbmcgYG1ha2UgaW5zdGFsbGAuCitUaGVuIGV2ZXJ5IHVzZXIgb2YgeW91
ciBtYWNoaW5lIGNhbiB3cml0ZSB0ZXN0cyB3aXRob3V0CityZWNvbXBpbGluZyBHb29nbGUgVGVz
dC4KKworVGhpcyBzZWVtZWQgbGlrZSBhIGdvb2QgaWRlYSwgYnV0IGl0IGhhcyBhCitnb3QtY2hh
OiBldmVyeSB1c2VyIG5lZWRzIHRvIGNvbXBpbGUgaGlzIHRlc3RzIHVzaW5nIHRoZSBfc2FtZV8g
Y29tcGlsZXIKK2ZsYWdzIHVzZWQgdG8gY29tcGlsZSB0aGUgaW5zdGFsbGVkIEdvb2dsZSBUZXN0
IGxpYnJhcmllczsgb3RoZXJ3aXNlCitoZSBtYXkgcnVuIGludG8gdW5kZWZpbmVkIGJlaGF2aW9y
cyAoaS5lLiB0aGUgdGVzdHMgY2FuIGJlaGF2ZQorc3RyYW5nZWx5IGFuZCBtYXkgZXZlbiBjcmFz
aCBmb3Igbm8gb2J2aW91cyByZWFzb25zKS4KKworV2h5PyAgQmVjYXVzZSBDKysgaGFzIHRoaXMg
dGhpbmcgY2FsbGVkIHRoZSBPbmUtRGVmaW5pdGlvbiBSdWxlOiBpZgordHdvIEMrKyBzb3VyY2Ug
ZmlsZXMgY29udGFpbiBkaWZmZXJlbnQgZGVmaW5pdGlvbnMgb2YgdGhlIHNhbWUKK2NsYXNzL2Z1
bmN0aW9uL3ZhcmlhYmxlLCBhbmQgeW91IGxpbmsgdGhlbSB0b2dldGhlciwgeW91IHZpb2xhdGUg
dGhlCitydWxlLiAgVGhlIGxpbmtlciBtYXkgb3IgbWF5IG5vdCBjYXRjaCB0aGUgZXJyb3IgKGlu
IG1hbnkgY2FzZXMgaXQncworbm90IHJlcXVpcmVkIGJ5IHRoZSBDKysgc3RhbmRhcmQgdG8gY2F0
Y2ggdGhlIHZpb2xhdGlvbikuICBJZiBpdAorZG9lc24ndCwgeW91IGdldCBzdHJhbmdlIHJ1bi10
aW1lIGJlaGF2aW9ycyB0aGF0IGFyZSB1bmV4cGVjdGVkIGFuZAoraGFyZCB0byBkZWJ1Zy4KKwor
SWYgeW91IGNvbXBpbGUgR29vZ2xlIFRlc3QgYW5kIHlvdXIgdGVzdCBjb2RlIHVzaW5nIGRpZmZl
cmVudCBjb21waWxlcgorZmxhZ3MsIHRoZXkgbWF5IHNlZSBkaWZmZXJlbnQgZGVmaW5pdGlvbnMg
b2YgdGhlIHNhbWUKK2NsYXNzL2Z1bmN0aW9uL3ZhcmlhYmxlIChlLmcuIGR1ZSB0byB0aGUgdXNl
IG9mIGAjaWZgIGluIEdvb2dsZSBUZXN0KS4KK1RoZXJlZm9yZSwgZm9yIHlvdXIgc2FuaXR5LCB3
ZSByZWNvbW1lbmQgdG8gYXZvaWQgaW5zdGFsbGluZyBwcmUtY29tcGlsZWQKK0dvb2dsZSBUZXN0
IGxpYnJhcmllcy4gIEluc3RlYWQsIGVhY2ggcHJvamVjdCBzaG91bGQgY29tcGlsZQorR29vZ2xl
IFRlc3QgaXRzZWxmIHN1Y2ggdGhhdCBpdCBjYW4gYmUgc3VyZSB0aGF0IHRoZSBzYW1lIGZsYWdz
IGFyZQordXNlZCBmb3IgYm90aCBHb29nbGUgVGVzdCBhbmQgdGhlIHRlc3RzLgorCisjIyBIb3cg
ZG8gSSBnZW5lcmF0ZSA2NC1iaXQgYmluYXJpZXMgb24gV2luZG93cyAodXNpbmcgVmlzdWFsIFN0
dWRpbyAyMDA4KT8gIyMKKworKEFuc3dlcmVkIGJ5IFRyZXZvciBSb2JpbnNvbikKKworTG9hZCB0
aGUgc3VwcGxpZWQgVmlzdWFsIFN0dWRpbyBzb2x1dGlvbiBmaWxlLCBlaXRoZXIgYG1zdmNcZ3Rl
c3QtbWQuc2xuYCBvcgorYG1zdmNcZ3Rlc3Quc2xuYC4gR28gdGhyb3VnaCB0aGUgbWlncmF0aW9u
IHdpemFyZCB0byBtaWdyYXRlIHRoZQorc29sdXRpb24gYW5kIHByb2plY3QgZmlsZXMgdG8gVmlz
dWFsIFN0dWRpbyAyMDA4LiBTZWxlY3QKK2BDb25maWd1cmF0aW9uIE1hbmFnZXIuLi5gIGZyb20g
dGhlIGBCdWlsZGAgbWVudS4gU2VsZWN0IGA8TmV3Li4uPmAgZnJvbQordGhlIGBBY3RpdmUgc29s
dXRpb24gcGxhdGZvcm1gIGRyb3Bkb3duLiAgU2VsZWN0IGB4NjRgIGZyb20gdGhlIG5ldworcGxh
dGZvcm0gZHJvcGRvd24sIGxlYXZlIGBDb3B5IHNldHRpbmdzIGZyb21gIHNldCB0byBgV2luMzJg
IGFuZAorYENyZWF0ZSBuZXcgcHJvamVjdCBwbGF0Zm9ybXNgIGNoZWNrZWQsIHRoZW4gY2xpY2sg
YE9LYC4gWW91IG5vdyBoYXZlCitgV2luMzJgIGFuZCBgeDY0YCBwbGF0Zm9ybSBjb25maWd1cmF0
aW9ucywgc2VsZWN0YWJsZSBmcm9tIHRoZQorYFN0YW5kYXJkYCB0b29sYmFyLCB3aGljaCBhbGxv
dyB5b3UgdG8gdG9nZ2xlIGJldHdlZW4gYnVpbGRpbmcgMzItYml0IG9yCis2NC1iaXQgYmluYXJp
ZXMgKG9yIGJvdGggYXQgb25jZSB1c2luZyBCYXRjaCBCdWlsZCkuCisKK0luIG9yZGVyIHRvIHBy
ZXZlbnQgYnVpbGQgb3V0cHV0IGZpbGVzIGZyb20gb3ZlcndyaXRpbmcgb25lIGFub3RoZXIsCit5
b3UnbGwgbmVlZCB0byBjaGFuZ2UgdGhlIGBJbnRlcm1lZGlhdGUgRGlyZWN0b3J5YCBzZXR0aW5n
cyBmb3IgdGhlCituZXdseSBjcmVhdGVkIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gYWNyb3NzIGFs
bCB0aGUgcHJvamVjdHMuIFRvIGRvCit0aGlzLCBtdWx0aS1zZWxlY3QgKGUuZy4gdXNpbmcgc2hp
ZnQtY2xpY2spIGFsbCBwcm9qZWN0cyAoYnV0IG5vdCB0aGUKK3NvbHV0aW9uKSBpbiB0aGUgYFNv
bHV0aW9uIEV4cGxvcmVyYC4gUmlnaHQtY2xpY2sgb25lIG9mIHRoZW0gYW5kCitzZWxlY3QgYFBy
b3BlcnRpZXNgLiBJbiB0aGUgbGVmdCBwYW5lLCBzZWxlY3QgYENvbmZpZ3VyYXRpb24gUHJvcGVy
dGllc2AsCithbmQgZnJvbSB0aGUgYENvbmZpZ3VyYXRpb25gIGRyb3Bkb3duLCBzZWxlY3QgYEFs
bCBDb25maWd1cmF0aW9uc2AuCitNYWtlIHN1cmUgdGhlIHNlbGVjdGVkIHBsYXRmb3JtIGlzIGB4
NjRgLiBGb3IgdGhlCitgSW50ZXJtZWRpYXRlIERpcmVjdG9yeWAgc2V0dGluZywgY2hhbmdlIHRo
ZSB2YWx1ZSBmcm9tCitgJChQbGF0Zm9ybU5hbWUpXCQoQ29uZmlndXJhdGlvbk5hbWUpYCB0bwor
YCQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWAuIENsaWNrIGBPS2AgYW5kIHRoZW4gYnVpbGQgdGhl
Citzb2x1dGlvbi4gV2hlbiB0aGUgYnVpbGQgaXMgY29tcGxldGUsIHRoZSA2NC1iaXQgYmluYXJp
ZXMgd2lsbCBiZSBpbgordGhlIGBtc3ZjXHg2NFxEZWJ1Z2AgZGlyZWN0b3J5LgorCisjIyBDYW4g
SSB1c2UgR29vZ2xlIFRlc3Qgb24gTWluR1c/ICMjCisKK1dlIGhhdmVuJ3QgdGVzdGVkIHRoaXMg
b3Vyc2VsdmVzLCBidXQgUGVyIEFicmFoYW1zZW4gcmVwb3J0ZWQgdGhhdCBoZQord2FzIGFibGUg
dG8gY29tcGlsZSBhbmQgaW5zdGFsbCBHb29nbGUgVGVzdCBzdWNjZXNzZnVsbHkgd2hlbiB1c2lu
ZworTWluR1cgZnJvbSBDeWd3aW4uICBZb3UnbGwgbmVlZCB0byBjb25maWd1cmUgaXQgd2l0aDoK
KworYFBBVEgvVE8vY29uZmlndXJlIENDPSJnY2MgLW1uby1jeWd3aW4iIENYWD0iZysrIC1tbm8t
Y3lnd2luImAKKworWW91IHNob3VsZCBiZSBhYmxlIHRvIHJlcGxhY2UgdGhlIGAtbW5vLWN5Z3dp
bmAgb3B0aW9uIHdpdGggZGlyZWN0IGxpbmtzCit0byB0aGUgcmVhbCBNaW5HVyBiaW5hcmllcywg
YnV0IHdlIGhhdmVuJ3QgdHJpZWQgdGhhdC4KKworQ2F2ZWF0czoKKworICAqIFRoZXJlIGFyZSBt
YW55IHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nLgorICAqIGBtYWtlIGNoZWNrYCB3aWxsIHByb2R1
Y2Ugc29tZSBlcnJvcnMgYXMgbm90IGFsbCB0ZXN0cyBmb3IgR29vZ2xlIFRlc3QgaXRzZWxmIGFy
ZSBjb21wYXRpYmxlIHdpdGggTWluR1cuCisKK1dlIGFsc28gaGF2ZSByZXBvcnRzIG9uIHN1Y2Nl
c3NmdWwgY3Jvc3MgY29tcGlsYXRpb24gb2YgR29vZ2xlIFRlc3QKK01pbkdXIGJpbmFyaWVzIG9u
IExpbnV4IHVzaW5nCitbdGhlc2UgaW5zdHJ1Y3Rpb25zXShodHRwOi8vd2lraS53eHdpZGdldHMu
b3JnL0Nyb3NzLUNvbXBpbGluZ19VbmRlcl9MaW51eCNDcm9zcy1jb21waWxpbmdfdW5kZXJfTGlu
dXhfZm9yX01TX1dpbmRvd3MpCitvbiB0aGUgV3hXaWRnZXRzIHNpdGUuCisKK1BsZWFzZSBjb250
YWN0IGBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb21gIGlmIHlvdSBhcmUKK2lu
dGVyZXN0ZWQgaW4gaW1wcm92aW5nIHRoZSBzdXBwb3J0IGZvciBNaW5HVy4KKworIyMgV2h5IGRv
ZXMgR29vZ2xlIFRlc3Qgc3VwcG9ydCBFWFBFQ1RcX0VRKE5VTEwsIHB0cikgYW5kIEFTU0VSVFxf
RVEoTlVMTCwgcHRyKSBidXQgbm90IEVYUEVDVFxfTkUoTlVMTCwgcHRyKSBhbmQgQVNTRVJUXF9O
RShOVUxMLCBwdHIpPyAjIworCitEdWUgdG8gc29tZSBwZWN1bGlhcml0eSBvZiBDKyssIGl0IHJl
cXVpcmVzIHNvbWUgbm9uLXRyaXZpYWwgdGVtcGxhdGUKK21ldGEgcHJvZ3JhbW1pbmcgdHJpY2tz
IHRvIHN1cHBvcnQgdXNpbmcgYE5VTExgIGFzIGFuIGFyZ3VtZW50IG9mIHRoZQorYEVYUEVDVF9Y
WCgpYCBhbmQgYEFTU0VSVF9YWCgpYCBtYWNyb3MuIFRoZXJlZm9yZSB3ZSBvbmx5IGRvIGl0IHdo
ZXJlCitpdCdzIG1vc3QgbmVlZGVkIChvdGhlcndpc2Ugd2UgbWFrZSB0aGUgaW1wbGVtZW50YXRp
b24gb2YgR29vZ2xlIFRlc3QKK2hhcmRlciB0byBtYWludGFpbiBhbmQgbW9yZSBlcnJvci1wcm9u
ZSB0aGFuIG5lY2Vzc2FyeSkuCisKK1RoZSBgRVhQRUNUX0VRKClgIG1hY3JvIHRha2VzIHRoZSBf
ZXhwZWN0ZWRfIHZhbHVlIGFzIGl0cyBmaXJzdAorYXJndW1lbnQgYW5kIHRoZSBfYWN0dWFsXyB2
YWx1ZSBhcyB0aGUgc2Vjb25kLiBJdCdzIHJlYXNvbmFibGUgdGhhdAorc29tZW9uZSB3YW50cyB0
byB3cml0ZSBgRVhQRUNUX0VRKE5VTEwsIHNvbWVfZXhwcmVzc2lvbilgLCBhbmQgdGhpcworaW5k
ZWVkIHdhcyByZXF1ZXN0ZWQgc2V2ZXJhbCB0aW1lcy4gVGhlcmVmb3JlIHdlIGltcGxlbWVudGVk
IGl0LgorCitUaGUgbmVlZCBmb3IgYEVYUEVDVF9ORShOVUxMLCBwdHIpYCBpc24ndCBuZWFybHkg
YXMgc3Ryb25nLiBXaGVuIHRoZQorYXNzZXJ0aW9uIGZhaWxzLCB5b3UgYWxyZWFkeSBrbm93IHRo
YXQgYHB0cmAgbXVzdCBiZSBgTlVMTGAsIHNvIGl0Citkb2Vzbid0IGFkZCBhbnkgaW5mb3JtYXRp
b24gdG8gcHJpbnQgcHRyIGluIHRoaXMgY2FzZS4gVGhhdCBtZWFucworYEVYUEVDVF9UUlVFKHB0
ciAhPSBOVUxMKWAgd29ya3MganVzdCBhcyB3ZWxsLgorCitJZiB3ZSB3ZXJlIHRvIHN1cHBvcnQg
YEVYUEVDVF9ORShOVUxMLCBwdHIpYCwgZm9yIGNvbnNpc3RlbmN5IHdlJ2xsCitoYXZlIHRvIHN1
cHBvcnQgYEVYUEVDVF9ORShwdHIsIE5VTEwpYCBhcyB3ZWxsLCBhcyB1bmxpa2UgYEVYUEVDVF9F
UWAsCit3ZSBkb24ndCBoYXZlIGEgY29udmVudGlvbiBvbiB0aGUgb3JkZXIgb2YgdGhlIHR3byBh
cmd1bWVudHMgZm9yCitgRVhQRUNUX05FYC4gVGhpcyBtZWFucyB1c2luZyB0aGUgdGVtcGxhdGUg
bWV0YSBwcm9ncmFtbWluZyB0cmlja3MKK3R3aWNlIGluIHRoZSBpbXBsZW1lbnRhdGlvbiwgbWFr
aW5nIGl0IGV2ZW4gaGFyZGVyIHRvIHVuZGVyc3RhbmQgYW5kCittYWludGFpbi4gV2UgYmVsaWV2
ZSB0aGUgYmVuZWZpdCBkb2Vzbid0IGp1c3RpZnkgdGhlIGNvc3QuCisKK0ZpbmFsbHksIHdpdGgg
dGhlIGdyb3d0aCBvZiBHb29nbGUgTW9jaydzIFttYXRjaGVyXSguLi8uLi9nb29nbGVtb2NrL2Rv
Y3MvQ29va0Jvb2subWQjdXNpbmctbWF0Y2hlcnMtaW4tZ29vZ2xlLXRlc3QtYXNzZXJ0aW9ucykg
bGlicmFyeSwgd2UgYXJlCitlbmNvdXJhZ2luZyBwZW9wbGUgdG8gdXNlIHRoZSB1bmlmaWVkIGBF
WFBFQ1RfVEhBVCh2YWx1ZSwgbWF0Y2hlcilgCitzeW50YXggbW9yZSBvZnRlbiBpbiB0ZXN0cy4g
T25lIHNpZ25pZmljYW50IGFkdmFudGFnZSBvZiB0aGUgbWF0Y2hlcgorYXBwcm9hY2ggaXMgdGhh
dCBtYXRjaGVycyBjYW4gYmUgZWFzaWx5IGNvbWJpbmVkIHRvIGZvcm0gbmV3IG1hdGNoZXJzLAor
d2hpbGUgdGhlIGBFWFBFQ1RfTkVgLCBldGMsIG1hY3JvcyBjYW5ub3QgYmUgZWFzaWx5Citjb21i
aW5lZC4gVGhlcmVmb3JlIHdlIHdhbnQgdG8gaW52ZXN0IG1vcmUgaW4gdGhlIG1hdGNoZXJzIHRo
YW4gaW4gdGhlCitgRVhQRUNUX1hYKClgIG1hY3Jvcy4KKworIyMgRG9lcyBHb29nbGUgVGVzdCBz
dXBwb3J0IHJ1bm5pbmcgdGVzdHMgaW4gcGFyYWxsZWw/ICMjCisKK1Rlc3QgcnVubmVycyB0ZW5k
IHRvIGJlIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBidWlsZC90ZXN0CitlbnZpcm9ubWVudCwg
YW5kIEdvb2dsZSBUZXN0IGRvZXNuJ3QgdHJ5IHRvIHNvbHZlIHRoZSBwcm9ibGVtIG9mCitydW5u
aW5nIHRlc3RzIGluIHBhcmFsbGVsLiAgSW5zdGVhZCwgd2UgdHJpZWQgdG8gbWFrZSBHb29nbGUg
VGVzdCB3b3JrCituaWNlbHkgd2l0aCB0ZXN0IHJ1bm5lcnMuICBGb3IgZXhhbXBsZSwgR29vZ2xl
IFRlc3QncyBYTUwgcmVwb3J0Citjb250YWlucyB0aGUgdGltZSBzcGVudCBvbiBlYWNoIHRlc3Qs
IGFuZCBpdHMgYGd0ZXN0X2xpc3RfdGVzdHNgIGFuZAorYGd0ZXN0X2ZpbHRlcmAgZmxhZ3MgY2Fu
IGJlIHVzZWQgZm9yIHNwbGl0dGluZyB0aGUgZXhlY3V0aW9uIG9mIHRlc3QKK21ldGhvZHMgaW50
byBtdWx0aXBsZSBwcm9jZXNzZXMuICBUaGVzZSBmdW5jdGlvbmFsaXRpZXMgY2FuIGhlbHAgdGhl
Cit0ZXN0IHJ1bm5lciBydW4gdGhlIHRlc3RzIGluIHBhcmFsbGVsLgorCisjIyBXaHkgZG9uJ3Qg
R29vZ2xlIFRlc3QgcnVuIHRoZSB0ZXN0cyBpbiBkaWZmZXJlbnQgdGhyZWFkcyB0byBzcGVlZCB0
aGluZ3MgdXA/ICMjCisKK0l0J3MgZGlmZmljdWx0IHRvIHdyaXRlIHRocmVhZC1zYWZlIGNvZGUu
ICBNb3N0IHRlc3RzIGFyZSBub3Qgd3JpdHRlbgord2l0aCB0aHJlYWQtc2FmZXR5IGluIG1pbmQs
IGFuZCB0aHVzIG1heSBub3Qgd29yayBjb3JyZWN0bHkgaW4gYQorbXVsdGktdGhyZWFkZWQgc2V0
dGluZy4KKworSWYgeW91IHRoaW5rIGFib3V0IGl0LCBpdCdzIGFscmVhZHkgaGFyZCB0byBtYWtl
IHlvdXIgY29kZSB3b3JrIHdoZW4KK3lvdSBrbm93IHdoYXQgb3RoZXIgdGhyZWFkcyBhcmUgZG9p
bmcuICBJdCdzIG11Y2ggaGFyZGVyLCBhbmQKK3NvbWV0aW1lcyBldmVuIGltcG9zc2libGUsIHRv
IG1ha2UgeW91ciBjb2RlIHdvcmsgd2hlbiB5b3UgZG9uJ3Qga25vdword2hhdCBvdGhlciB0aHJl
YWRzIGFyZSBkb2luZyAocmVtZW1iZXIgdGhhdCB0ZXN0IG1ldGhvZHMgY2FuIGJlIGFkZGVkLAor
ZGVsZXRlZCwgb3IgbW9kaWZpZWQgYWZ0ZXIgeW91ciB0ZXN0IHdhcyB3cml0dGVuKS4gIElmIHlv
dSB3YW50IHRvIHJ1bgordGhlIHRlc3RzIGluIHBhcmFsbGVsLCB5b3UnZCBiZXR0ZXIgcnVuIHRo
ZW0gaW4gZGlmZmVyZW50IHByb2Nlc3Nlcy4KKworIyMgV2h5IGFyZW4ndCBHb29nbGUgVGVzdCBh
c3NlcnRpb25zIGltcGxlbWVudGVkIHVzaW5nIGV4Y2VwdGlvbnM/ICMjCisKK091ciBvcmlnaW5h
bCBtb3RpdmF0aW9uIHdhcyB0byBiZSBhYmxlIHRvIHVzZSBHb29nbGUgVGVzdCBpbiBwcm9qZWN0
cwordGhhdCBkaXNhYmxlIGV4Y2VwdGlvbnMuICBMYXRlciB3ZSByZWFsaXplZCBzb21lIGFkZGl0
aW9uYWwgYmVuZWZpdHMKK29mIHRoaXMgYXBwcm9hY2g6CisKKyAgMS4gVGhyb3dpbmcgaW4gYSBk
ZXN0cnVjdG9yIGlzIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBDKysuICBOb3QgdXNpbmcgZXhjZXB0
aW9ucyBtZWFucyBHb29nbGUgVGVzdCdzIGFzc2VydGlvbnMgYXJlIHNhZmUgdG8gdXNlIGluIGRl
c3RydWN0b3JzLgorICAxLiBUaGUgYEVYUEVDVF8qYCBmYW1pbHkgb2YgbWFjcm9zIHdpbGwgY29u
dGludWUgZXZlbiBhZnRlciBhIGZhaWx1cmUsIGFsbG93aW5nIG11bHRpcGxlIGZhaWx1cmVzIGlu
IGEgYFRFU1RgIHRvIGJlIHJlcG9ydGVkIGluIGEgc2luZ2xlIHJ1bi4gVGhpcyBpcyBhIHBvcHVs
YXIgZmVhdHVyZSwgYXMgaW4gQysrIHRoZSBlZGl0LWNvbXBpbGUtdGVzdCBjeWNsZSBpcyB1c3Vh
bGx5IHF1aXRlIGxvbmcgYW5kIGJlaW5nIGFibGUgdG8gZml4aW5nIG1vcmUgdGhhbiBvbmUgdGhp
bmcgYXQgYSB0aW1lIGlzIGEgYmxlc3NpbmcuCisgIDEuIElmIGFzc2VydGlvbnMgYXJlIGltcGxl
bWVudGVkIHVzaW5nIGV4Y2VwdGlvbnMsIGEgdGVzdCBtYXkgZmFsc2VseSBpZ25vcmUgYSBmYWls
dXJlIGlmIGl0J3MgY2F1Z2h0IGJ5IHVzZXIgY29kZToKK2BgYCBjcHAKK3RyeSB7IC4uLiBBU1NF
UlRfVFJVRSguLi4pIC4uLiB9CitjYXRjaCAoLi4uKSB7IC4uLiB9CitgYGAKK1RoZSBhYm92ZSBj
b2RlIHdpbGwgcGFzcyBldmVuIGlmIHRoZSBgQVNTRVJUX1RSVUVgIHRocm93cy4gIFdoaWxlIGl0
J3MgdW5saWtlbHkgZm9yIHNvbWVvbmUgdG8gd3JpdGUgdGhpcyBpbiBhIHRlc3QsIGl0J3MgcG9z
c2libGUgdG8gcnVuIGludG8gdGhpcyBwYXR0ZXJuIHdoZW4geW91IHdyaXRlIGFzc2VydGlvbnMg
aW4gY2FsbGJhY2tzIHRoYXQgYXJlIGNhbGxlZCBieSB0aGUgY29kZSB1bmRlciB0ZXN0LgorCitU
aGUgZG93bnNpZGUgb2Ygbm90IHVzaW5nIGV4Y2VwdGlvbnMgaXMgdGhhdCBgQVNTRVJUXypgIChp
bXBsZW1lbnRlZAordXNpbmcgYHJldHVybmApIHdpbGwgb25seSBhYm9ydCB0aGUgY3VycmVudCBm
dW5jdGlvbiwgbm90IHRoZSBjdXJyZW50CitgVEVTVGAuCisKKyMjIFdoeSBkbyB3ZSB1c2UgdHdv
IGRpZmZlcmVudCBtYWNyb3MgZm9yIHRlc3RzIHdpdGggYW5kIHdpdGhvdXQgZml4dHVyZXM/ICMj
CisKK1VuZm9ydHVuYXRlbHksIEMrKydzIG1hY3JvIHN5c3RlbSBkb2Vzbid0IGFsbG93IHVzIHRv
IHVzZSB0aGUgc2FtZQorbWFjcm8gZm9yIGJvdGggY2FzZXMuICBPbmUgcG9zc2liaWxpdHkgaXMg
dG8gcHJvdmlkZSBvbmx5IG9uZSBtYWNybworZm9yIHRlc3RzIHdpdGggZml4dHVyZXMsIGFuZCBy
ZXF1aXJlIHRoZSB1c2VyIHRvIGRlZmluZSBhbiBlbXB0eQorZml4dHVyZSBzb21ldGltZXM6CisK
K2BgYCBjcHAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCitU
RVNUX0YoRm9vVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KK2BgYAorb3IKK2BgYCBjcHAKK3R5cGVk
ZWYgOjp0ZXN0aW5nOjpUZXN0IEZvb1Rlc3Q7CisKK1RFU1RfRihGb29UZXN0LCBEb2VzVGhhdCkg
eyAuLi4gfQorYGBgCisKK1lldCwgbWFueSBwZW9wbGUgdGhpbmsgdGhpcyBpcyBvbmUgbGluZSB0
b28gbWFueS4gOi0pIE91ciBnb2FsIHdhcyB0bworbWFrZSBpdCByZWFsbHkgZWFzeSB0byB3cml0
ZSB0ZXN0cywgc28gd2UgdHJpZWQgdG8gbWFrZSBzaW1wbGUgdGVzdHMKK3RyaXZpYWwgdG8gY3Jl
YXRlLiAgVGhhdCBtZWFucyB1c2luZyBhIHNlcGFyYXRlIG1hY3JvIGZvciBzdWNoIHRlc3RzLgor
CitXZSB0aGluayBuZWl0aGVyIGFwcHJvYWNoIGlzIGlkZWFsLCB5ZXQgZWl0aGVyIG9mIHRoZW0g
aXMgcmVhc29uYWJsZS4KK0luIHRoZSBlbmQsIGl0IHByb2JhYmx5IGRvZXNuJ3QgbWF0dGVyIG11
Y2ggZWl0aGVyIHdheS4KKworIyMgV2h5IGRvbid0IHdlIHVzZSBzdHJ1Y3RzIGFzIHRlc3QgZml4
dHVyZXM/ICMjCisKK1dlIGxpa2UgdG8gdXNlIHN0cnVjdHMgb25seSB3aGVuIHJlcHJlc2VudGlu
ZyBwYXNzaXZlIGRhdGEuICBUaGlzCitkaXN0aW5jdGlvbiBiZXR3ZWVuIHN0cnVjdHMgYW5kIGNs
YXNzZXMgaXMgZ29vZCBmb3IgZG9jdW1lbnRpbmcgdGhlCitpbnRlbnQgb2YgdGhlIGNvZGUncyBh
dXRob3IuICBTaW5jZSB0ZXN0IGZpeHR1cmVzIGhhdmUgbG9naWMgbGlrZQorYFNldFVwKClgIGFu
ZCBgVGVhckRvd24oKWAsIHRoZXkgYXJlIGJldHRlciBkZWZpbmVkIGFzIGNsYXNzZXMuCisKKyMj
IFdoeSBhcmUgZGVhdGggdGVzdHMgaW1wbGVtZW50ZWQgYXMgYXNzZXJ0aW9ucyBpbnN0ZWFkIG9m
IHVzaW5nIGEgdGVzdCBydW5uZXI/ICMjCisKK091ciBnb2FsIHdhcyB0byBtYWtlIGRlYXRoIHRl
c3RzIGFzIGNvbnZlbmllbnQgZm9yIGEgdXNlciBhcyBDKysKK3Bvc3NpYmx5IGFsbG93cy4gIElu
IHBhcnRpY3VsYXI6CisKKyAgKiBUaGUgcnVubmVyLXN0eWxlIHJlcXVpcmVzIHRvIHNwbGl0IHRo
ZSBpbmZvcm1hdGlvbiBpbnRvIHR3byBwaWVjZXM6IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBkZWF0
aCB0ZXN0IGl0c2VsZiwgYW5kIHRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgcnVubmVyIG9uIGhv
dyB0byBydW4gdGhlIGRlYXRoIHRlc3QgYW5kIHdoYXQgdG8gZXhwZWN0LiAgVGhlIGRlYXRoIHRl
c3Qgd291bGQgYmUgd3JpdHRlbiBpbiBDKyssIHdoaWxlIHRoZSBydW5uZXIgc3BlYyBtYXkgb3Ig
bWF5IG5vdCBiZS4gIEEgdXNlciBuZWVkcyB0byBjYXJlZnVsbHkga2VlcCB0aGUgdHdvIGluIHN5
bmMuIGBBU1NFUlRfREVBVEgoc3RhdGVtZW50LCBleHBlY3RlZF9tZXNzYWdlKWAgc3BlY2lmaWVz
IGFsbCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gaW4gb25lIHBsYWNlLCBpbiBvbmUgbGFuZ3VhZ2Us
IHdpdGhvdXQgYm9pbGVycGxhdGUgY29kZS4gSXQgaXMgdmVyeSBkZWNsYXJhdGl2ZS4KKyAgKiBg
QVNTRVJUX0RFQVRIYCBoYXMgYSBzaW1pbGFyIHN5bnRheCBhbmQgZXJyb3ItcmVwb3J0aW5nIHNl
bWFudGljcyBhcyBvdGhlciBHb29nbGUgVGVzdCBhc3NlcnRpb25zLCBhbmQgdGh1cyBpcyBlYXN5
IHRvIGxlYXJuLgorICAqIGBBU1NFUlRfREVBVEhgIGNhbiBiZSBtaXhlZCB3aXRoIG90aGVyIGFz
c2VydGlvbnMgYW5kIG90aGVyIGxvZ2ljIGF0IHlvdXIgd2lsbC4gIFlvdSBhcmUgbm90IGxpbWl0
ZWQgdG8gb25lIGRlYXRoIHRlc3QgcGVyIHRlc3QgbWV0aG9kLiBGb3IgZXhhbXBsZSwgeW91IGNh
biB3cml0ZSBzb21ldGhpbmcgbGlrZToKK2BgYCBjcHAKKyAgICBpZiAoRm9vQ29uZGl0aW9uKCkp
IHsKKyAgICAgIEFTU0VSVF9ERUFUSChCYXIoKSwgImJsYWgiKTsKKyAgICB9IGVsc2UgeworICAg
ICAgQVNTRVJUX0VRKDUsIEJhcigpKTsKKyAgICB9CitgYGAKK0lmIHlvdSBwcmVmZXIgb25lIGRl
YXRoIHRlc3QgcGVyIHRlc3QgbWV0aG9kLCB5b3UgY2FuIHdyaXRlIHlvdXIgdGVzdHMgaW4gdGhh
dCBzdHlsZSB0b28sIGJ1dCB3ZSBkb24ndCB3YW50IHRvIGltcG9zZSB0aGF0IG9uIHRoZSB1c2Vy
cy4gIFRoZSBmZXdlciBhcnRpZmljaWFsIGxpbWl0YXRpb25zIHRoZSBiZXR0ZXIuCisgICogYEFT
U0VSVF9ERUFUSGAgY2FuIHJlZmVyZW5jZSBsb2NhbCB2YXJpYWJsZXMgaW4gdGhlIGN1cnJlbnQg
ZnVuY3Rpb24sIGFuZCB5b3UgY2FuIGRlY2lkZSBob3cgbWFueSBkZWF0aCB0ZXN0cyB5b3Ugd2Fu
dCBiYXNlZCBvbiBydW4tdGltZSBpbmZvcm1hdGlvbi4gIEZvciBleGFtcGxlLAorYGBgIGNwcAor
ICAgIGNvbnN0IGludCBjb3VudCA9IEdldENvdW50KCk7ICAvLyBPbmx5IGtub3duIGF0IHJ1biB0
aW1lLgorICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGNvdW50OyBpKyspIHsKKyAgICAgIEFTU0VS
VF9ERUFUSCh7CisgICAgICAgIGRvdWJsZSogYnVmZmVyID0gbmV3IGRvdWJsZVtpXTsKKyAgICAg
ICAgLi4uIGluaXRpYWxpemVzIGJ1ZmZlciAuLi4KKyAgICAgICAgRm9vKGJ1ZmZlciwgaSkKKyAg
ICAgIH0sICJibGFoIGJsYWgiKTsKKyAgICB9CitgYGAKK1RoZSBydW5uZXItYmFzZWQgYXBwcm9h
Y2ggdGVuZHMgdG8gYmUgbW9yZSBzdGF0aWMgYW5kIGxlc3MgZmxleGlibGUsIG9yIHJlcXVpcmVz
IG1vcmUgdXNlciBlZmZvcnQgdG8gZ2V0IHRoaXMga2luZCBvZiBmbGV4aWJpbGl0eS4KKworQW5v
dGhlciBpbnRlcmVzdGluZyB0aGluZyBhYm91dCBgQVNTRVJUX0RFQVRIYCBpcyB0aGF0IGl0IGNh
bGxzIGBmb3JrKClgCit0byBjcmVhdGUgYSBjaGlsZCBwcm9jZXNzIHRvIHJ1biB0aGUgZGVhdGgg
dGVzdC4gIFRoaXMgaXMgbGlnaHRlbmluZworZmFzdCwgYXMgYGZvcmsoKWAgdXNlcyBjb3B5LW9u
LXdyaXRlIHBhZ2VzIGFuZCBpbmN1cnMgYWxtb3N0IHplcm8KK292ZXJoZWFkLCBhbmQgdGhlIGNo
aWxkIHByb2Nlc3Mgc3RhcnRzIGZyb20gdGhlIHVzZXItc3VwcGxpZWQKK3N0YXRlbWVudCBkaXJl
Y3RseSwgc2tpcHBpbmcgYWxsIGdsb2JhbCBhbmQgbG9jYWwgaW5pdGlhbGl6YXRpb24gYW5kCith
bnkgY29kZSBsZWFkaW5nIHRvIHRoZSBnaXZlbiBzdGF0ZW1lbnQuICBJZiB5b3UgbGF1bmNoIHRo
ZSBjaGlsZAorcHJvY2VzcyBmcm9tIHNjcmF0Y2gsIGl0IGNhbiB0YWtlIHNlY29uZHMganVzdCB0
byBsb2FkIGV2ZXJ5dGhpbmcgYW5kCitzdGFydCBydW5uaW5nIGlmIHRoZSB0ZXN0IGxpbmtzIHRv
IG1hbnkgbGlicmFyaWVzIGR5bmFtaWNhbGx5LgorCisjIyBNeSBkZWF0aCB0ZXN0IG1vZGlmaWVz
IHNvbWUgc3RhdGUsIGJ1dCB0aGUgY2hhbmdlIHNlZW1zIGxvc3QgYWZ0ZXIgdGhlIGRlYXRoIHRl
c3QgZmluaXNoZXMuIFdoeT8gIyMKKworRGVhdGggdGVzdHMgKGBFWFBFQ1RfREVBVEhgLCBldGMp
IGFyZSBleGVjdXRlZCBpbiBhIHN1Yi1wcm9jZXNzIHMudC4gdGhlCitleHBlY3RlZCBjcmFzaCB3
b24ndCBraWxsIHRoZSB0ZXN0IHByb2dyYW0gKGkuZS4gdGhlIHBhcmVudCBwcm9jZXNzKS4gQXMg
YQorcmVzdWx0LCBhbnkgaW4tbWVtb3J5IHNpZGUgZWZmZWN0cyB0aGV5IGluY3VyIGFyZSBvYnNl
cnZhYmxlIGluIHRoZWlyCityZXNwZWN0aXZlIHN1Yi1wcm9jZXNzZXMsIGJ1dCBub3QgaW4gdGhl
IHBhcmVudCBwcm9jZXNzLiBZb3UgY2FuIHRoaW5rIG9mIHRoZW0KK2FzIHJ1bm5pbmcgaW4gYSBw
YXJhbGxlbCB1bml2ZXJzZSwgbW9yZSBvciBsZXNzLgorCisjIyBUaGUgY29tcGlsZXIgY29tcGxh
aW5zIGFib3V0ICJ1bmRlZmluZWQgcmVmZXJlbmNlcyIgdG8gc29tZSBzdGF0aWMgY29uc3QgbWVt
YmVyIHZhcmlhYmxlcywgYnV0IEkgZGlkIGRlZmluZSB0aGVtIGluIHRoZSBjbGFzcyBib2R5LiBX
aGF0J3Mgd3Jvbmc/ICMjCisKK0lmIHlvdXIgY2xhc3MgaGFzIGEgc3RhdGljIGRhdGEgbWVtYmVy
OgorCitgYGAgY3BwCisvLyBmb28uaAorY2xhc3MgRm9vIHsKKyAgLi4uCisgIHN0YXRpYyBjb25z
dCBpbnQga0JhciA9IDEwMDsKK307CitgYGAKKworWW91IGFsc28gbmVlZCB0byBkZWZpbmUgaXQg
X291dHNpZGVfIG9mIHRoZSBjbGFzcyBib2R5IGluIGBmb28uY2NgOgorCitgYGAgY3BwCitjb25z
dCBpbnQgRm9vOjprQmFyOyAgLy8gTm8gaW5pdGlhbGl6ZXIgaGVyZS4KK2BgYAorCitPdGhlcndp
c2UgeW91ciBjb2RlIGlzICoqaW52YWxpZCBDKysqKiwgYW5kIG1heSBicmVhayBpbiB1bmV4cGVj
dGVkIHdheXMuIEluCitwYXJ0aWN1bGFyLCB1c2luZyBpdCBpbiBHb29nbGUgVGVzdCBjb21wYXJp
c29uIGFzc2VydGlvbnMgKGBFWFBFQ1RfRVFgLCBldGMpCit3aWxsIGdlbmVyYXRlIGFuICJ1bmRl
ZmluZWQgcmVmZXJlbmNlIiBsaW5rZXIgZXJyb3IuCisKKyMjIEkgaGF2ZSBhbiBpbnRlcmZhY2Ug
dGhhdCBoYXMgc2V2ZXJhbCBpbXBsZW1lbnRhdGlvbnMuIENhbiBJIHdyaXRlIGEgc2V0IG9mIHRl
c3RzIG9uY2UgYW5kIHJlcGVhdCB0aGVtIG92ZXIgYWxsIHRoZSBpbXBsZW1lbnRhdGlvbnM/ICMj
CisKK0dvb2dsZSBUZXN0IGRvZXNuJ3QgeWV0IGhhdmUgZ29vZCBzdXBwb3J0IGZvciB0aGlzIGtp
bmQgb2YgdGVzdHMsIG9yCitkYXRhLWRyaXZlbiB0ZXN0cyBpbiBnZW5lcmFsLiBXZSBob3BlIHRv
IGJlIGFibGUgdG8gbWFrZSBpbXByb3ZlbWVudHMgaW4gdGhpcworYXJlYSBzb29uLgorCisjIyBD
YW4gSSBkZXJpdmUgYSB0ZXN0IGZpeHR1cmUgZnJvbSBhbm90aGVyPyAjIworCitZZXMuCisKK0Vh
Y2ggdGVzdCBmaXh0dXJlIGhhcyBhIGNvcnJlc3BvbmRpbmcgYW5kIHNhbWUgbmFtZWQgdGVzdCBj
YXNlLiBUaGlzIG1lYW5zIG9ubHkKK29uZSB0ZXN0IGNhc2UgY2FuIHVzZSBhIHBhcnRpY3VsYXIg
Zml4dHVyZS4gU29tZXRpbWVzLCBob3dldmVyLCBtdWx0aXBsZSB0ZXN0CitjYXNlcyBtYXkgd2Fu
dCB0byB1c2UgdGhlIHNhbWUgb3Igc2xpZ2h0bHkgZGlmZmVyZW50IGZpeHR1cmVzLiBGb3IgZXhh
bXBsZSwgeW91CittYXkgd2FudCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb2YgYSBHVUkgbGlicmFy
eSdzIHRlc3QgY2FzZXMgZG9uJ3QgbGVhaworaW1wb3J0YW50IHN5c3RlbSByZXNvdXJjZXMgbGlr
ZSBmb250cyBhbmQgYnJ1c2hlcy4KKworSW4gR29vZ2xlIFRlc3QsIHlvdSBzaGFyZSBhIGZpeHR1
cmUgYW1vbmcgdGVzdCBjYXNlcyBieSBwdXR0aW5nIHRoZSBzaGFyZWQKK2xvZ2ljIGluIGEgYmFz
ZSB0ZXN0IGZpeHR1cmUsIHRoZW4gZGVyaXZpbmcgZnJvbSB0aGF0IGJhc2UgYSBzZXBhcmF0ZSBm
aXh0dXJlCitmb3IgZWFjaCB0ZXN0IGNhc2UgdGhhdCB3YW50cyB0byB1c2UgdGhpcyBjb21tb24g
bG9naWMuIFlvdSB0aGVuIHVzZSBgVEVTVF9GKClgCit0byB3cml0ZSB0ZXN0cyB1c2luZyBlYWNo
IGRlcml2ZWQgZml4dHVyZS4KKworVHlwaWNhbGx5LCB5b3VyIGNvZGUgbG9va3MgbGlrZSB0aGlz
OgorCitgYGAgY3BwCisvLyBEZWZpbmVzIGEgYmFzZSB0ZXN0IGZpeHR1cmUuCitjbGFzcyBCYXNl
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICBwcm90ZWN0ZWQ6CisgICAuLi4KK307
CisKKy8vIERlcml2ZXMgYSBmaXh0dXJlIEZvb1Rlc3QgZnJvbSBCYXNlVGVzdC4KK2NsYXNzIEZv
b1Rlc3QgOiBwdWJsaWMgQmFzZVRlc3QgeworICBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lk
IFNldFVwKCkgeworICAgICAgQmFzZVRlc3Q6OlNldFVwKCk7ICAvLyBTZXRzIHVwIHRoZSBiYXNl
IGZpeHR1cmUgZmlyc3QuCisgICAgICAuLi4gYWRkaXRpb25hbCBzZXQtdXAgd29yayAuLi4KKyAg
ICB9CisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgICAgLi4uIGNsZWFuLXVwIHdv
cmsgZm9yIEZvb1Rlc3QgLi4uCisgICAgICBCYXNlVGVzdDo6VGVhckRvd24oKTsgIC8vIFJlbWVt
YmVyIHRvIHRlYXIgZG93biB0aGUgYmFzZSBmaXh0dXJlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGFmdGVyIGNsZWFuaW5nIHVwIEZvb1Rlc3QhCisgICAgfQorICAgIC4uLiBmdW5j
dGlvbnMgYW5kIHZhcmlhYmxlcyBmb3IgRm9vVGVzdCAuLi4KK307CisKKy8vIFRlc3RzIHRoYXQg
dXNlIHRoZSBmaXh0dXJlIEZvb1Rlc3QuCitURVNUX0YoRm9vVGVzdCwgQmFyKSB7IC4uLiB9CitU
RVNUX0YoRm9vVGVzdCwgQmF6KSB7IC4uLiB9CisKKy4uLiBhZGRpdGlvbmFsIGZpeHR1cmVzIGRl
cml2ZWQgZnJvbSBCYXNlVGVzdCAuLi4KK2BgYAorCitJZiBuZWNlc3NhcnksIHlvdSBjYW4gY29u
dGludWUgdG8gZGVyaXZlIHRlc3QgZml4dHVyZXMgZnJvbSBhIGRlcml2ZWQgZml4dHVyZS4KK0dv
b2dsZSBUZXN0IGhhcyBubyBsaW1pdCBvbiBob3cgZGVlcCB0aGUgaGllcmFyY2h5IGNhbiBiZS4K
KworRm9yIGEgY29tcGxldGUgZXhhbXBsZSB1c2luZyBkZXJpdmVkIHRlc3QgZml4dHVyZXMsIHNl
ZQorW3NhbXBsZTVdKC4uL3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYykuCisKKyMjIE15IGNv
bXBpbGVyIGNvbXBsYWlucyAidm9pZCB2YWx1ZSBub3QgaWdub3JlZCBhcyBpdCBvdWdodCB0byBi
ZS4iIFdoYXQgZG9lcyB0aGlzIG1lYW4/ICMjCisKK1lvdSdyZSBwcm9iYWJseSB1c2luZyBhbiBg
QVNTRVJUXyooKWAgaW4gYSBmdW5jdGlvbiB0aGF0IGRvZXNuJ3QgcmV0dXJuIGB2b2lkYC4KK2BB
U1NFUlRfKigpYCBjYW4gb25seSBiZSB1c2VkIGluIGB2b2lkYCBmdW5jdGlvbnMuCisKKyMjIE15
IGRlYXRoIHRlc3QgaGFuZ3MgKG9yIHNlZy1mYXVsdHMpLiBIb3cgZG8gSSBmaXggaXQ/ICMjCisK
K0luIEdvb2dsZSBUZXN0LCBkZWF0aCB0ZXN0cyBhcmUgcnVuIGluIGEgY2hpbGQgcHJvY2VzcyBh
bmQgdGhlIHdheSB0aGV5IHdvcmsgaXMKK2RlbGljYXRlLiBUbyB3cml0ZSBkZWF0aCB0ZXN0cyB5
b3UgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhleSB3b3JrLgorUGxlYXNlIG1ha2Ug
c3VyZSB5b3UgaGF2ZSByZWFkIHRoaXMuCisKK0luIHBhcnRpY3VsYXIsIGRlYXRoIHRlc3RzIGRv
bid0IGxpa2UgaGF2aW5nIG11bHRpcGxlIHRocmVhZHMgaW4gdGhlIHBhcmVudAorcHJvY2Vzcy4g
U28gdGhlIGZpcnN0IHRoaW5nIHlvdSBjYW4gdHJ5IGlzIHRvIGVsaW1pbmF0ZSBjcmVhdGluZyB0
aHJlYWRzCitvdXRzaWRlIG9mIGBFWFBFQ1RfREVBVEgoKWAuCisKK1NvbWV0aW1lcyB0aGlzIGlz
IGltcG9zc2libGUgYXMgc29tZSBsaWJyYXJ5IHlvdSBtdXN0IHVzZSBtYXkgYmUgY3JlYXRpbmcK
K3RocmVhZHMgYmVmb3JlIGBtYWluKClgIGlzIGV2ZW4gcmVhY2hlZC4gSW4gdGhpcyBjYXNlLCB5
b3UgY2FuIHRyeSB0byBtaW5pbWl6ZQordGhlIGNoYW5jZSBvZiBjb25mbGljdHMgYnkgZWl0aGVy
IG1vdmluZyBhcyBtYW55IGFjdGl2aXRpZXMgYXMgcG9zc2libGUgaW5zaWRlCitgRVhQRUNUX0RF
QVRIKClgIChpbiB0aGUgZXh0cmVtZSBjYXNlLCB5b3Ugd2FudCB0byBtb3ZlIGV2ZXJ5dGhpbmcg
aW5zaWRlKSwgb3IKK2xlYXZpbmcgYXMgZmV3IHRoaW5ncyBhcyBwb3NzaWJsZSBpbiBpdC4gQWxz
bywgeW91IGNhbiB0cnkgdG8gc2V0IHRoZSBkZWF0aAordGVzdCBzdHlsZSB0byBgInRocmVhZHNh
ZmUiYCwgd2hpY2ggaXMgc2FmZXIgYnV0IHNsb3dlciwgYW5kIHNlZSBpZiBpdCBoZWxwcy4KKwor
SWYgeW91IGdvIHdpdGggdGhyZWFkLXNhZmUgZGVhdGggdGVzdHMsIHJlbWVtYmVyIHRoYXQgdGhl
eSByZXJ1biB0aGUgdGVzdAorcHJvZ3JhbSBmcm9tIHRoZSBiZWdpbm5pbmcgaW4gdGhlIGNoaWxk
IHByb2Nlc3MuIFRoZXJlZm9yZSBtYWtlIHN1cmUgeW91cgorcHJvZ3JhbSBjYW4gcnVuIHNpZGUt
Ynktc2lkZSB3aXRoIGl0c2VsZiBhbmQgaXMgZGV0ZXJtaW5pc3RpYy4KKworSW4gdGhlIGVuZCwg
dGhpcyBib2lscyBkb3duIHRvIGdvb2QgY29uY3VycmVudCBwcm9ncmFtbWluZy4gWW91IGhhdmUg
dG8gbWFrZQorc3VyZSB0aGF0IHRoZXJlIGlzIG5vIHJhY2UgY29uZGl0aW9ucyBvciBkZWFkIGxv
Y2tzIGluIHlvdXIgcHJvZ3JhbS4gTm8gc2lsdmVyCitidWxsZXQgLSBzb3JyeSEKKworIyMgU2hv
dWxkIEkgdXNlIHRoZSBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIG9mIHRoZSB0ZXN0IGZpeHR1cmUg
b3IgdGhlIHNldC11cC90ZWFyLWRvd24gZnVuY3Rpb24/ICMjCisKK1RoZSBmaXJzdCB0aGluZyB0
byByZW1lbWJlciBpcyB0aGF0IEdvb2dsZSBUZXN0IGRvZXMgbm90IHJldXNlIHRoZQorc2FtZSB0
ZXN0IGZpeHR1cmUgb2JqZWN0IGFjcm9zcyBtdWx0aXBsZSB0ZXN0cy4gRm9yIGVhY2ggYFRFU1Rf
RmAsCitHb29nbGUgVGVzdCB3aWxsIGNyZWF0ZSBhIGZyZXNoIHRlc3QgZml4dHVyZSBvYmplY3Qs
IF9pbW1lZGlhdGVseV8KK2NhbGwgYFNldFVwKClgLCBydW4gdGhlIHRlc3QgYm9keSwgY2FsbCBg
VGVhckRvd24oKWAsIGFuZCB0aGVuCitfaW1tZWRpYXRlbHlfIGRlbGV0ZSB0aGUgdGVzdCBmaXh0
dXJlIG9iamVjdC4KKworV2hlbiB5b3UgbmVlZCB0byB3cml0ZSBwZXItdGVzdCBzZXQtdXAgYW5k
IHRlYXItZG93biBsb2dpYywgeW91IGhhdmUKK3RoZSBjaG9pY2UgYmV0d2VlbiB1c2luZyB0aGUg
dGVzdCBmaXh0dXJlIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3Igb3IKK2BTZXRVcCgpL1RlYXJEb3du
KClgLiBUaGUgZm9ybWVyIGlzIHVzdWFsbHkgcHJlZmVycmVkLCBhcyBpdCBoYXMgdGhlCitmb2xs
b3dpbmcgYmVuZWZpdHM6CisKKyAgKiBCeSBpbml0aWFsaXppbmcgYSBtZW1iZXIgdmFyaWFibGUg
aW4gdGhlIGNvbnN0cnVjdG9yLCB3ZSBoYXZlIHRoZSBvcHRpb24gdG8gbWFrZSBpdCBgY29uc3Rg
LCB3aGljaCBoZWxwcyBwcmV2ZW50IGFjY2lkZW50YWwgY2hhbmdlcyB0byBpdHMgdmFsdWUgYW5k
IG1ha2VzIHRoZSB0ZXN0cyBtb3JlIG9idmlvdXNseSBjb3JyZWN0LgorICAqIEluIGNhc2Ugd2Ug
bmVlZCB0byBzdWJjbGFzcyB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLCB0aGUgc3ViY2xhc3MnIGNv
bnN0cnVjdG9yIGlzIGd1YXJhbnRlZWQgdG8gY2FsbCB0aGUgYmFzZSBjbGFzcycgY29uc3RydWN0
b3IgZmlyc3QsIGFuZCB0aGUgc3ViY2xhc3MnIGRlc3RydWN0b3IgaXMgZ3VhcmFudGVlZCB0byBj
YWxsIHRoZSBiYXNlIGNsYXNzJyBkZXN0cnVjdG9yIGFmdGVyd2FyZC4gV2l0aCBgU2V0VXAoKS9U
ZWFyRG93bigpYCwgYSBzdWJjbGFzcyBtYXkgbWFrZSB0aGUgbWlzdGFrZSBvZiBmb3JnZXR0aW5n
IHRvIGNhbGwgdGhlIGJhc2UgY2xhc3MnIGBTZXRVcCgpL1RlYXJEb3duKClgIG9yIGNhbGwgdGhl
bSBhdCB0aGUgd3JvbmcgbW9tZW50LgorCitZb3UgbWF5IHN0aWxsIHdhbnQgdG8gdXNlIGBTZXRV
cCgpL1RlYXJEb3duKClgIGluIHRoZSBmb2xsb3dpbmcgcmFyZSBjYXNlczoKKyAgKiBJZiB0aGUg
dGVhci1kb3duIG9wZXJhdGlvbiBjb3VsZCB0aHJvdyBhbiBleGNlcHRpb24sIHlvdSBtdXN0IHVz
ZSBgVGVhckRvd24oKWAgYXMgb3Bwb3NlZCB0byB0aGUgZGVzdHJ1Y3RvciwgYXMgdGhyb3dpbmcg
aW4gYSBkZXN0cnVjdG9yIGxlYWRzIHRvIHVuZGVmaW5lZCBiZWhhdmlvciBhbmQgdXN1YWxseSB3
aWxsIGtpbGwgeW91ciBwcm9ncmFtIHJpZ2h0IGF3YXkuIE5vdGUgdGhhdCBtYW55IHN0YW5kYXJk
IGxpYnJhcmllcyAobGlrZSBTVEwpIG1heSB0aHJvdyB3aGVuIGV4Y2VwdGlvbnMgYXJlIGVuYWJs
ZWQgaW4gdGhlIGNvbXBpbGVyLiBUaGVyZWZvcmUgeW91IHNob3VsZCBwcmVmZXIgYFRlYXJEb3du
KClgIGlmIHlvdSB3YW50IHRvIHdyaXRlIHBvcnRhYmxlIHRlc3RzIHRoYXQgd29yayB3aXRoIG9y
IHdpdGhvdXQgZXhjZXB0aW9ucy4KKyAgKiBUaGUgYXNzZXJ0aW9uIG1hY3JvcyB0aHJvdyBhbiBl
eGNlcHRpb24gd2hlbiBmbGFnIGAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmVgIGlzIHNwZWNpZmll
ZC4gVGhlcmVmb3JlLCB5b3Ugc2hvdWxkbid0IHVzZSBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGlu
IGEgZGVzdHJ1Y3RvciBpZiB5b3UgcGxhbiB0byBydW4geW91ciB0ZXN0cyB3aXRoIHRoaXMgZmxh
Zy4KKyAgKiBJbiBhIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IsIHlvdSBjYW5ub3QgbWFrZSBh
IHZpcnR1YWwgZnVuY3Rpb24gY2FsbCBvbiB0aGlzIG9iamVjdC4gKFlvdSBjYW4gY2FsbCBhIG1l
dGhvZCBkZWNsYXJlZCBhcyB2aXJ0dWFsLCBidXQgaXQgd2lsbCBiZSBzdGF0aWNhbGx5IGJvdW5k
LikgVGhlcmVmb3JlLCBpZiB5b3UgbmVlZCB0byBjYWxsIGEgbWV0aG9kIHRoYXQgd2lsbCBiZSBv
dmVycmlkZW4gaW4gYSBkZXJpdmVkIGNsYXNzLCB5b3UgaGF2ZSB0byB1c2UgYFNldFVwKCkvVGVh
ckRvd24oKWAuCisKKyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgIm5vIG1hdGNoaW5nIGZ1bmN0
aW9uIHRvIGNhbGwiIHdoZW4gSSB1c2UgQVNTRVJUXF9QUkVEbi4gSG93IGRvIEkgZml4IGl0PyAj
IworCitJZiB0aGUgcHJlZGljYXRlIGZ1bmN0aW9uIHlvdSB1c2UgaW4gYEFTU0VSVF9QUkVEKmAg
b3IgYEVYUEVDVF9QUkVEKmAgaXMKK292ZXJsb2FkZWQgb3IgYSB0ZW1wbGF0ZSwgdGhlIGNvbXBp
bGVyIHdpbGwgaGF2ZSB0cm91YmxlIGZpZ3VyaW5nIG91dCB3aGljaAorb3ZlcmxvYWRlZCB2ZXJz
aW9uIGl0IHNob3VsZCB1c2UuIGBBU1NFUlRfUFJFRF9GT1JNQVQqYCBhbmQKK2BFWFBFQ1RfUFJF
RF9GT1JNQVQqYCBkb24ndCBoYXZlIHRoaXMgcHJvYmxlbS4KKworSWYgeW91IHNlZSB0aGlzIGVy
cm9yLCB5b3UgbWlnaHQgd2FudCB0byBzd2l0Y2ggdG8KK2AoQVNTRVJUfEVYUEVDVClfUFJFRF9G
T1JNQVQqYCwgd2hpY2ggd2lsbCBhbHNvIGdpdmUgeW91IGEgYmV0dGVyIGZhaWx1cmUKK21lc3Nh
Z2UuIElmLCBob3dldmVyLCB0aGF0IGlzIG5vdCBhbiBvcHRpb24sIHlvdSBjYW4gcmVzb2x2ZSB0
aGUgcHJvYmxlbSBieQorZXhwbGljaXRseSB0ZWxsaW5nIHRoZSBjb21waWxlciB3aGljaCB2ZXJz
aW9uIHRvIHBpY2suCisKK0ZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYXZlCisKK2BgYCBjcHAK
K2Jvb2wgSXNQb3NpdGl2ZShpbnQgbikgeworICByZXR1cm4gbiA+IDA7Cit9Citib29sIElzUG9z
aXRpdmUoZG91YmxlIHgpIHsKKyAgcmV0dXJuIHggPiAwOworfQorYGBgCisKK3lvdSB3aWxsIGdl
dCBhIGNvbXBpbGVyIGVycm9yIGlmIHlvdSB3cml0ZQorCitgYGAgY3BwCitFWFBFQ1RfUFJFRDEo
SXNQb3NpdGl2ZSwgNSk7CitgYGAKKworSG93ZXZlciwgdGhpcyB3aWxsIHdvcms6CisKK2BgYCBj
cHAKK0VYUEVDVF9QUkVEMSgqc3RhdGljX2Nhc3Q8Ym9vbCAoKikoaW50KT4qKElzUG9zaXRpdmUp
LCA1KTsKK2BgYAorCisoVGhlIHN0dWZmIGluc2lkZSB0aGUgYW5nbGVkIGJyYWNrZXRzIGZvciB0
aGUgYHN0YXRpY19jYXN0YCBvcGVyYXRvciBpcyB0aGUKK3R5cGUgb2YgdGhlIGZ1bmN0aW9uIHBv
aW50ZXIgZm9yIHRoZSBgaW50YC12ZXJzaW9uIG9mIGBJc1Bvc2l0aXZlKClgLikKKworQXMgYW5v
dGhlciBleGFtcGxlLCB3aGVuIHlvdSBoYXZlIGEgdGVtcGxhdGUgZnVuY3Rpb24KKworYGBgIGNw
cAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citib29sIElzTmVnYXRpdmUoVCB4KSB7CisgIHJldHVy
biB4IDwgMDsKK30KK2BgYAorCit5b3UgY2FuIHVzZSBpdCBpbiBhIHByZWRpY2F0ZSBhc3NlcnRp
b24gbGlrZSB0aGlzOgorCitgYGAgY3BwCitBU1NFUlRfUFJFRDEoSXNOZWdhdGl2ZSo8aW50Pios
IC01KTsKK2BgYAorCitUaGluZ3MgYXJlIG1vcmUgaW50ZXJlc3RpbmcgaWYgeW91ciB0ZW1wbGF0
ZSBoYXMgbW9yZSB0aGFuIG9uZSBwYXJhbWV0ZXJzLiBUaGUKK2ZvbGxvd2luZyB3b24ndCBjb21w
aWxlOgorCitgYGAgY3BwCitBU1NFUlRfUFJFRDIoKkdyZWF0ZXJUaGFuPGludCwgaW50PiosIDUs
IDApOworYGBgCisKKworYXMgdGhlIEMrKyBwcmUtcHJvY2Vzc29yIHRoaW5rcyB5b3UgYXJlIGdp
dmluZyBgQVNTRVJUX1BSRUQyYCA0IGFyZ3VtZW50cywKK3doaWNoIGlzIG9uZSBtb3JlIHRoYW4g
ZXhwZWN0ZWQuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIHdyYXAgdGhlIHByZWRpY2F0ZQorZnVuY3Rp
b24gaW4gcGFyZW50aGVzZXM6CisKK2BgYCBjcHAKK0FTU0VSVF9QUkVEMigqKEdyZWF0ZXJUaGFu
PGludCwgaW50PikqLCA1LCAwKTsKK2BgYAorCisKKyMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyBh
Ym91dCAiaWdub3JpbmcgcmV0dXJuIHZhbHVlIiB3aGVuIEkgY2FsbCBSVU5cX0FMTFxfVEVTVFMo
KS4gV2h5PyAjIworCitTb21lIHBlb3BsZSBoYWQgYmVlbiBpZ25vcmluZyB0aGUgcmV0dXJuIHZh
bHVlIG9mIGBSVU5fQUxMX1RFU1RTKClgLiBUaGF0IGlzLAoraW5zdGVhZCBvZgorCitgYGAgY3Bw
CityZXR1cm4gUlVOX0FMTF9URVNUUygpOworYGBgCisKK3RoZXkgd3JpdGUKKworYGBgIGNwcAor
UlVOX0FMTF9URVNUUygpOworYGBgCisKK1RoaXMgaXMgd3JvbmcgYW5kIGRhbmdlcm91cy4gQSB0
ZXN0IHJ1bm5lciBuZWVkcyB0byBzZWUgdGhlIHJldHVybiB2YWx1ZSBvZgorYFJVTl9BTExfVEVT
VFMoKWAgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGlmIGEgdGVzdCBoYXMgcGFzc2VkLiBJZiB5b3Vy
IGBtYWluKClgCitmdW5jdGlvbiBpZ25vcmVzIGl0LCB5b3VyIHRlc3Qgd2lsbCBiZSBjb25zaWRl
cmVkIHN1Y2Nlc3NmdWwgZXZlbiBpZiBpdCBoYXMgYQorR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIGZh
aWx1cmUuIFZlcnkgYmFkLgorCitUbyBoZWxwIHRoZSB1c2VycyBhdm9pZCB0aGlzIGRhbmdlcm91
cyBidWcsIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgorYFJVTl9BTExfVEVTVFMoKWAgY2F1c2VzIGdj
YyB0byByYWlzZSB0aGlzIHdhcm5pbmcsIHdoZW4gdGhlIHJldHVybiB2YWx1ZSBpcworaWdub3Jl
ZC4gSWYgeW91IHNlZSB0aGlzIHdhcm5pbmcsIHRoZSBmaXggaXMgc2ltcGxlOiBqdXN0IG1ha2Ug
c3VyZSBpdHMgdmFsdWUKK2lzIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZSBvZiBgbWFpbigpYC4K
KworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5zIHRoYXQgYSBjb25zdHJ1Y3RvciAob3IgZGVzdHJ1
Y3RvcikgY2Fubm90IHJldHVybiBhIHZhbHVlLiBXaGF0J3MgZ29pbmcgb24/ICMjCisKK0R1ZSB0
byBhIHBlY3VsaWFyaXR5IG9mIEMrKywgaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGUgc3ludGF4IGZv
ciBzdHJlYW1pbmcKK21lc3NhZ2VzIHRvIGFuIGBBU1NFUlRfKmAsIGUuZy4KKworYGBgIGNwcAor
QVNTRVJUX0VRKDEsIEZvbygpKSA8PCAiYmxhaCBibGFoIiA8PCBmb287CitgYGAKKword2UgaGFk
IHRvIGdpdmUgdXAgdXNpbmcgYEFTU0VSVCpgIGFuZCBgRkFJTCpgIChidXQgbm90IGBFWFBFQ1Qq
YCBhbmQKK2BBRERfRkFJTFVSRSpgKSBpbiBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzLiBU
aGUgd29ya2Fyb3VuZCBpcyB0byBtb3ZlIHRoZQorY29udGVudCBvZiB5b3VyIGNvbnN0cnVjdG9y
L2Rlc3RydWN0b3IgdG8gYSBwcml2YXRlIHZvaWQgbWVtYmVyIGZ1bmN0aW9uLCBvcgorc3dpdGNo
IHRvIGBFWFBFQ1RfKigpYCBpZiB0aGF0IHdvcmtzLiBUaGlzIHNlY3Rpb24gaW4gdGhlIHVzZXIn
cyBndWlkZSBleHBsYWlucworaXQuCisKKyMjIE15IHNldC11cCBmdW5jdGlvbiBpcyBub3QgY2Fs
bGVkLiBXaHk/ICMjCisKK0MrKyBpcyBjYXNlLXNlbnNpdGl2ZS4gSXQgc2hvdWxkIGJlIHNwZWxs
ZWQgYXMgYFNldFVwKClgLiAgRGlkIHlvdQorc3BlbGwgaXQgYXMgYFNldHVwKClgPworCitTaW1p
bGFybHksIHNvbWV0aW1lcyBwZW9wbGUgc3BlbGwgYFNldFVwVGVzdENhc2UoKWAgYXMgYFNldHVw
VGVzdENhc2UoKWAgYW5kCit3b25kZXIgd2h5IGl0J3MgbmV2ZXIgY2FsbGVkLgorCisjIyBIb3cg
ZG8gSSBqdW1wIHRvIHRoZSBsaW5lIG9mIGEgZmFpbHVyZSBpbiBFbWFjcyBkaXJlY3RseT8gIyMK
KworR29vZ2xlIFRlc3QncyBmYWlsdXJlIG1lc3NhZ2UgZm9ybWF0IGlzIHVuZGVyc3Rvb2QgYnkg
RW1hY3MgYW5kIG1hbnkgb3RoZXIKK0lERXMsIGxpa2UgYWNtZSBhbmQgWENvZGUuIElmIGEgR29v
Z2xlIFRlc3QgbWVzc2FnZSBpcyBpbiBhIGNvbXBpbGF0aW9uIGJ1ZmZlcgoraW4gRW1hY3MsIHRo
ZW4gaXQncyBjbGlja2FibGUuIFlvdSBjYW4gbm93IGhpdCBgZW50ZXJgIG9uIGEgbWVzc2FnZSB0
byBqdW1wIHRvCit0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgb3IgdXNlIGBDLXggYGAg
dG8ganVtcCB0byB0aGUgbmV4dCBmYWlsdXJlLgorCisjIyBJIGhhdmUgc2V2ZXJhbCB0ZXN0IGNh
c2VzIHdoaWNoIHNoYXJlIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBsb2dpYywgZG8gSSBoYXZlIHRv
IGRlZmluZSBhIG5ldyB0ZXN0IGZpeHR1cmUgY2xhc3MgZm9yIGVhY2ggb2YgdGhlbT8gVGhpcyBz
ZWVtcyBwcmV0dHkgdGVkaW91cy4gIyMKKworWW91IGRvbid0IGhhdmUgdG8uIEluc3RlYWQgb2YK
KworYGBgIGNwcAorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCB7fTsKKworVEVTVF9G
KEZvb1Rlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQorCitj
bGFzcyBCYXJUZXN0IDogcHVibGljIEJhc2VUZXN0IHt9OworCitURVNUX0YoQmFyVGVzdCwgQWJj
KSB7IC4uLiB9CitURVNUX0YoQmFyVGVzdCwgRGVmKSB7IC4uLiB9CitgYGAKKworeW91IGNhbiBz
aW1wbHkgYHR5cGVkZWZgIHRoZSB0ZXN0IGZpeHR1cmVzOgorYGBgIGNwcAordHlwZWRlZiBCYXNl
VGVzdCBGb29UZXN0OworCitURVNUX0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0YoRm9v
VGVzdCwgRGVmKSB7IC4uLiB9CisKK3R5cGVkZWYgQmFzZVRlc3QgQmFyVGVzdDsKKworVEVTVF9G
KEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIERlZikgeyAuLi4gfQorYGBg
CisKKyMjIFRoZSBHb29nbGUgVGVzdCBvdXRwdXQgaXMgYnVyaWVkIGluIGEgd2hvbGUgYnVuY2gg
b2YgbG9nIG1lc3NhZ2VzLiBXaGF0IGRvIEkgZG8/ICMjCisKK1RoZSBHb29nbGUgVGVzdCBvdXRw
dXQgaXMgbWVhbnQgdG8gYmUgYSBjb25jaXNlIGFuZCBodW1hbi1mcmllbmRseSByZXBvcnQuIElm
Cit5b3VyIHRlc3QgZ2VuZXJhdGVzIHRleHR1YWwgb3V0cHV0IGl0c2VsZiwgaXQgd2lsbCBtaXgg
d2l0aCB0aGUgR29vZ2xlIFRlc3QKK291dHB1dCwgbWFraW5nIGl0IGhhcmQgdG8gcmVhZC4gSG93
ZXZlciwgdGhlcmUgaXMgYW4gZWFzeSBzb2x1dGlvbiB0byB0aGlzCitwcm9ibGVtLgorCitTaW5j
ZSBtb3N0IGxvZyBtZXNzYWdlcyBnbyB0byBzdGRlcnIsIHdlIGRlY2lkZWQgdG8gbGV0IEdvb2ds
ZSBUZXN0IG91dHB1dCBnbwordG8gc3Rkb3V0LiBUaGlzIHdheSwgeW91IGNhbiBlYXNpbHkgc2Vw
YXJhdGUgdGhlIHR3byB1c2luZyByZWRpcmVjdGlvbi4gRm9yCitleGFtcGxlOgorYGBgCisuL215
X3Rlc3QgPiBnb29nbGV0ZXN0X291dHB1dC50eHQKK2BgYAorCisjIyBXaHkgc2hvdWxkIEkgcHJl
ZmVyIHRlc3QgZml4dHVyZXMgb3ZlciBnbG9iYWwgdmFyaWFibGVzPyAjIworCitUaGVyZSBhcmUg
c2V2ZXJhbCBnb29kIHJlYXNvbnM6CisgIDEuIEl0J3MgbGlrZWx5IHlvdXIgdGVzdCBuZWVkcyB0
byBjaGFuZ2UgdGhlIHN0YXRlcyBvZiBpdHMgZ2xvYmFsIHZhcmlhYmxlcy4gVGhpcyBtYWtlcyBp
dCBkaWZmaWN1bHQgdG8ga2VlcCBzaWRlIGVmZmVjdHMgZnJvbSBlc2NhcGluZyBvbmUgdGVzdCBh
bmQgY29udGFtaW5hdGluZyBvdGhlcnMsIG1ha2luZyBkZWJ1Z2dpbmcgZGlmZmljdWx0LiBCeSB1
c2luZyBmaXh0dXJlcywgZWFjaCB0ZXN0IGhhcyBhIGZyZXNoIHNldCBvZiB2YXJpYWJsZXMgdGhh
dCdzIGRpZmZlcmVudCAoYnV0IHdpdGggdGhlIHNhbWUgbmFtZXMpLiBUaHVzLCB0ZXN0cyBhcmUg
a2VwdCBpbmRlcGVuZGVudCBvZiBlYWNoIG90aGVyLgorICAxLiBHbG9iYWwgdmFyaWFibGVzIHBv
bGx1dGUgdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisgIDEuIFRlc3QgZml4dHVyZXMgY2FuIGJlIHJl
dXNlZCB2aWEgc3ViY2xhc3NpbmcsIHdoaWNoIGNhbm5vdCBiZSBkb25lIGVhc2lseSB3aXRoIGds
b2JhbCB2YXJpYWJsZXMuIFRoaXMgaXMgdXNlZnVsIGlmIG1hbnkgdGVzdCBjYXNlcyBoYXZlIHNv
bWV0aGluZyBpbiBjb21tb24uCisKKyMjIEhvdyBkbyBJIHRlc3QgcHJpdmF0ZSBjbGFzcyBtZW1i
ZXJzIHdpdGhvdXQgd3JpdGluZyBGUklFTkRcX1RFU1QoKXM/ICMjCisKK1lvdSBzaG91bGQgdHJ5
IHRvIHdyaXRlIHRlc3RhYmxlIGNvZGUsIHdoaWNoIG1lYW5zIGNsYXNzZXMgc2hvdWxkIGJlIGVh
c2lseQordGVzdGVkIGZyb20gdGhlaXIgcHVibGljIGludGVyZmFjZS4gT25lIHdheSB0byBhY2hp
ZXZlIHRoaXMgaXMgdGhlIFBpbXBsIGlkaW9tOgoreW91IG1vdmUgYWxsIHByaXZhdGUgbWVtYmVy
cyBvZiBhIGNsYXNzIGludG8gYSBoZWxwZXIgY2xhc3MsIGFuZCBtYWtlIGFsbAorbWVtYmVycyBv
ZiB0aGUgaGVscGVyIGNsYXNzIHB1YmxpYy4KKworWW91IGhhdmUgc2V2ZXJhbCBvdGhlciBvcHRp
b25zIHRoYXQgZG9uJ3QgcmVxdWlyZSB1c2luZyBgRlJJRU5EX1RFU1RgOgorICAqIFdyaXRlIHRo
ZSB0ZXN0cyBhcyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlIGNsYXNzOgorYGBgIGNwcAorY2xhc3Mg
Rm9vIHsKKyAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7CisgIC4uLgorfTsKKworY2xhc3MgRm9vVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLi4uCisgIHZvaWQg
VGVzdDEoKSB7Li4ufSAvLyBUaGlzIGFjY2Vzc2VzIHByaXZhdGUgbWVtYmVycyBvZiBjbGFzcyBG
b28uCisgIHZvaWQgVGVzdDIoKSB7Li4ufSAvLyBTbyBkb2VzIHRoaXMgb25lLgorfTsKKworVEVT
VF9GKEZvb1Rlc3QsIFRlc3QxKSB7CisgIFRlc3QxKCk7Cit9CisKK1RFU1RfRihGb29UZXN0LCBU
ZXN0MikgeworICBUZXN0MigpOworfQorYGBgCisgICogSW4gdGhlIGZpeHR1cmUgY2xhc3MsIHdy
aXRlIGFjY2Vzc29ycyBmb3IgdGhlIHRlc3RlZCBjbGFzcycgcHJpdmF0ZSBtZW1iZXJzLCB0aGVu
IHVzZSB0aGUgYWNjZXNzb3JzIGluIHlvdXIgdGVzdHM6CitgYGAgY3BwCitjbGFzcyBGb28gewor
ICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKKyAgLi4uCit9OworCitjbGFzcyBGb29UZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAuLi4KKyAgVDEgZ2V0X3ByaXZh
dGVfbWVtYmVyMShGb28qIG9iaikgeworICAgIHJldHVybiBvYmotPnByaXZhdGVfbWVtYmVyMV87
CisgIH0KK307CisKK1RFU1RfRihGb29UZXN0LCBUZXN0MSkgeworICAuLi4KKyAgZ2V0X3ByaXZh
dGVfbWVtYmVyMSh4KQorICAuLi4KK30KK2BgYAorICAqIElmIHRoZSBtZXRob2RzIGFyZSBkZWNs
YXJlZCAqKnByb3RlY3RlZCoqLCB5b3UgY2FuIGNoYW5nZSB0aGVpciBhY2Nlc3MgbGV2ZWwgaW4g
YSB0ZXN0LW9ubHkgc3ViY2xhc3M6CitgYGAgY3BwCitjbGFzcyBZb3VyQ2xhc3MgeworICAuLi4K
KyBwcm90ZWN0ZWQ6IC8vIHByb3RlY3RlZCBhY2Nlc3MgZm9yIHRlc3RhYmlsaXR5LgorICBpbnQg
RG9Tb21ldGhpbmdSZXR1cm5pbmdJbnQoKTsKKyAgLi4uCit9OworCisvLyBpbiB0aGUgeW91cl9j
bGFzc190ZXN0LmNjIGZpbGU6CitjbGFzcyBUZXN0YWJsZVlvdXJDbGFzcyA6IHB1YmxpYyBZb3Vy
Q2xhc3MgeworICAuLi4KKyBwdWJsaWM6IHVzaW5nIFlvdXJDbGFzczo6RG9Tb21ldGhpbmdSZXR1
cm5pbmdJbnQ7IC8vIGNoYW5nZXMgYWNjZXNzIHJpZ2h0cworICAuLi4KK307CisKK1RFU1RfRihZ
b3VyQ2xhc3NUZXN0LCBEb1NvbWV0aGluZ1Rlc3QpIHsKKyAgVGVzdGFibGVZb3VyQ2xhc3Mgb2Jq
OworICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWRfdmFsdWUsIG9iai5Eb1NvbWV0aGluZ1JldHVybmlu
Z0ludCgpKTsKK30KK2BgYAorCisjIyBIb3cgZG8gSSB0ZXN0IHByaXZhdGUgY2xhc3Mgc3RhdGlj
IG1lbWJlcnMgd2l0aG91dCB3cml0aW5nIEZSSUVORFxfVEVTVCgpcz8gIyMKKworV2UgZmluZCBw
cml2YXRlIHN0YXRpYyBtZXRob2RzIGNsdXR0ZXIgdGhlIGhlYWRlciBmaWxlLiAgVGhleSBhcmUK
K2ltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIGlkZWFsbHkgc2hvdWxkIGJlIGtlcHQgb3V0IG9m
IGEgLmguIFNvIG9mdGVuIEkgbWFrZQordGhlbSBmcmVlIGZ1bmN0aW9ucyBpbnN0ZWFkLgorCitJ
bnN0ZWFkIG9mOgorYGBgIGNwcAorLy8gZm9vLmgKK2NsYXNzIEZvbyB7CisgIC4uLgorIHByaXZh
dGU6CisgIHN0YXRpYyBib29sIEZ1bmMoaW50IG4pOworfTsKKworLy8gZm9vLmNjCitib29sIEZv
bzo6RnVuYyhpbnQgbikgeyAuLi4gfQorCisvLyBmb29fdGVzdC5jYworRVhQRUNUX1RSVUUoRm9v
OjpGdW5jKDEyMzQ1KSk7CitgYGAKKworWW91IHByb2JhYmx5IHNob3VsZCBiZXR0ZXIgd3JpdGU6
CitgYGAgY3BwCisvLyBmb28uaAorY2xhc3MgRm9vIHsKKyAgLi4uCit9OworCisvLyBmb28uY2MK
K25hbWVzcGFjZSBpbnRlcm5hbCB7CisgIGJvb2wgRnVuYyhpbnQgbikgeyAuLi4gfQorfQorCisv
LyBmb29fdGVzdC5jYworbmFtZXNwYWNlIGludGVybmFsIHsKKyAgYm9vbCBGdW5jKGludCBuKTsK
K30KKworRVhQRUNUX1RSVUUoaW50ZXJuYWw6OkZ1bmMoMTIzNDUpKTsKK2BgYAorCisjIyBJIHdv
dWxkIGxpa2UgdG8gcnVuIGEgdGVzdCBzZXZlcmFsIHRpbWVzIHdpdGggZGlmZmVyZW50IHBhcmFt
ZXRlcnMuIERvIEkgbmVlZCB0byB3cml0ZSBzZXZlcmFsIHNpbWlsYXIgY29waWVzIG9mIGl0PyAj
IworCitOby4gWW91IGNhbiB1c2UgYSBmZWF0dXJlIGNhbGxlZCBbdmFsdWUtcGFyYW1ldGVyaXpl
ZCB0ZXN0c10oQWR2YW5jZWRHdWlkZS5tZCNWYWx1ZV9QYXJhbWV0ZXJpemVkX1Rlc3RzKSB3aGlj
aAorbGV0cyB5b3UgcmVwZWF0IHlvdXIgdGVzdHMgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVycywg
d2l0aG91dCBkZWZpbmluZyBpdCBtb3JlIHRoYW4gb25jZS4KKworIyMgSG93IGRvIEkgdGVzdCBh
IGZpbGUgdGhhdCBkZWZpbmVzIG1haW4oKT8gIyMKKworVG8gdGVzdCBhIGBmb28uY2NgIGZpbGUs
IHlvdSBuZWVkIHRvIGNvbXBpbGUgYW5kIGxpbmsgaXQgaW50byB5b3VyIHVuaXQgdGVzdAorcHJv
Z3JhbS4gSG93ZXZlciwgd2hlbiB0aGUgZmlsZSBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIHRo
ZSBgbWFpbigpYAorZnVuY3Rpb24sIGl0IHdpbGwgY2xhc2ggd2l0aCB0aGUgYG1haW4oKWAgb2Yg
eW91ciB1bml0IHRlc3QsIGFuZCB3aWxsIHJlc3VsdCBpbgorYSBidWlsZCBlcnJvci4KKworVGhl
IHJpZ2h0IHNvbHV0aW9uIGlzIHRvIHNwbGl0IGl0IGludG8gdGhyZWUgZmlsZXM6CisgIDEuIGBm
b28uaGAgd2hpY2ggY29udGFpbnMgdGhlIGRlY2xhcmF0aW9ucywKKyAgMS4gYGZvby5jY2Agd2hp
Y2ggY29udGFpbnMgdGhlIGRlZmluaXRpb25zIGV4Y2VwdCBgbWFpbigpYCwgYW5kCisgIDEuIGBm
b29fbWFpbi5jY2Agd2hpY2ggY29udGFpbnMgbm90aGluZyBidXQgdGhlIGRlZmluaXRpb24gb2Yg
YG1haW4oKWAuCisKK1RoZW4gYGZvby5jY2AgY2FuIGJlIGVhc2lseSB0ZXN0ZWQuCisKK0lmIHlv
dSBhcmUgYWRkaW5nIHRlc3RzIHRvIGFuIGV4aXN0aW5nIGZpbGUgYW5kIGRvbid0IHdhbnQgYW4g
aW50cnVzaXZlIGNoYW5nZQorbGlrZSB0aGlzLCB0aGVyZSBpcyBhIGhhY2s6IGp1c3QgaW5jbHVk
ZSB0aGUgZW50aXJlIGBmb28uY2NgIGZpbGUgaW4geW91ciB1bml0Cit0ZXN0LiBGb3IgZXhhbXBs
ZToKK2BgYCBjcHAKKy8vIEZpbGUgZm9vX3VuaXR0ZXN0LmNjCisKKy8vIFRoZSBoZWFkZXJzIHNl
Y3Rpb24KKy4uLgorCisvLyBSZW5hbWVzIG1haW4oKSBpbiBmb28uY2MgdG8gbWFrZSByb29tIGZv
ciB0aGUgdW5pdCB0ZXN0IG1haW4oKQorI2RlZmluZSBtYWluIEZvb01haW4KKworI2luY2x1ZGUg
ImEvYi9mb28uY2MiCisKKy8vIFRoZSB0ZXN0cyBzdGFydCBoZXJlLgorLi4uCitgYGAKKworCitI
b3dldmVyLCBwbGVhc2UgcmVtZW1iZXIgdGhpcyBpcyBhIGhhY2sgYW5kIHNob3VsZCBvbmx5IGJl
IHVzZWQgYXMgdGhlIGxhc3QKK3Jlc29ydC4KKworIyMgV2hhdCBjYW4gdGhlIHN0YXRlbWVudCBh
cmd1bWVudCBpbiBBU1NFUlRcX0RFQVRIKCkgYmU/ICMjCisKK2BBU1NFUlRfREVBVEgoX3N0YXRl
bWVudF8sIF9yZWdleF8pYCAob3IgYW55IGRlYXRoIGFzc2VydGlvbiBtYWNybykgY2FuIGJlIHVz
ZWQKK3doZXJldmVyIGBfc3RhdGVtZW50X2AgaXMgdmFsaWQuIFNvIGJhc2ljYWxseSBgX3N0YXRl
bWVudF9gIGNhbiBiZSBhbnkgQysrCitzdGF0ZW1lbnQgdGhhdCBtYWtlcyBzZW5zZSBpbiB0aGUg
Y3VycmVudCBjb250ZXh0LiBJbiBwYXJ0aWN1bGFyLCBpdCBjYW4KK3JlZmVyZW5jZSBnbG9iYWwg
YW5kL29yIGxvY2FsIHZhcmlhYmxlcywgYW5kIGNhbiBiZToKKyAgKiBhIHNpbXBsZSBmdW5jdGlv
biBjYWxsIChvZnRlbiB0aGUgY2FzZSksCisgICogYSBjb21wbGV4IGV4cHJlc3Npb24sIG9yCisg
ICogYSBjb21wb3VuZCBzdGF0ZW1lbnQuCisKK1NvbWUgZXhhbXBsZXMgYXJlIHNob3duIGhlcmU6
CisKK2BgYCBjcHAKKy8vIEEgZGVhdGggdGVzdCBjYW4gYmUgYSBzaW1wbGUgZnVuY3Rpb24gY2Fs
bC4KK1RFU1QoTXlEZWF0aFRlc3QsIEZ1bmN0aW9uQ2FsbCkgeworICBBU1NFUlRfREVBVEgoWHl6
KDUpLCAiWHl6IGZhaWxlZCIpOworfQorCisvLyBPciBhIGNvbXBsZXggZXhwcmVzc2lvbiB0aGF0
IHJlZmVyZW5jZXMgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMuCitURVNUKE15RGVhdGhUZXN0LCBD
b21wbGV4RXhwcmVzc2lvbikgeworICBjb25zdCBib29sIGMgPSBDb25kaXRpb24oKTsKKyAgQVNT
RVJUX0RFQVRIKChjID8gRnVuYzEoMCkgOiBvYmplY3QyLk1ldGhvZCgidGVzdCIpKSwKKyAgICAg
ICAgICAgICAgICIoRnVuYzF8TWV0aG9kKSBmYWlsZWQiKTsKK30KKworLy8gRGVhdGggYXNzZXJ0
aW9ucyBjYW4gYmUgdXNlZCBhbnkgd2hlcmUgaW4gYSBmdW5jdGlvbi4gSW4KKy8vIHBhcnRpY3Vs
YXIsIHRoZXkgY2FuIGJlIGluc2lkZSBhIGxvb3AuCitURVNUKE15RGVhdGhUZXN0LCBJbnNpZGVM
b29wKSB7CisgIC8vIFZlcmlmaWVzIHRoYXQgRm9vKDApLCBGb28oMSksIC4uLiwgYW5kIEZvbyg0
KSBhbGwgZGllLgorICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgeworICAgIEVYUEVDVF9E
RUFUSF9NKEZvbyhpKSwgIkZvbyBoYXMgXFxkKyBlcnJvcnMiLAorICAgICAgICAgICAgICAgICAg
IDo6dGVzdGluZzo6TWVzc2FnZSgpIDw8ICJ3aGVyZSBpIGlzICIgPDwgaSk7CisgIH0KK30KKwor
Ly8gQSBkZWF0aCBhc3NlcnRpb24gY2FuIGNvbnRhaW4gYSBjb21wb3VuZCBzdGF0ZW1lbnQuCitU
RVNUKE15RGVhdGhUZXN0LCBDb21wb3VuZFN0YXRlbWVudCkgeworICAvLyBWZXJpZmllcyB0aGF0
IGF0IGxlYXNlIG9uZSBvZiBCYXIoMCksIEJhcigxKSwgLi4uLCBhbmQKKyAgLy8gQmFyKDQpIGRp
ZXMuCisgIEFTU0VSVF9ERUFUSCh7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsK
KyAgICAgIEJhcihpKTsKKyAgICB9CisgIH0sCisgICJCYXIgaGFzIFxcZCsgZXJyb3JzIik7fQor
YGBgCisKK2Bnb29nbGV0ZXN0X3VuaXR0ZXN0LmNjYCBjb250YWlucyBtb3JlIGV4YW1wbGVzIGlm
IHlvdSBhcmUgaW50ZXJlc3RlZC4KKworIyMgV2hhdCBzeW50YXggZG9lcyB0aGUgcmVndWxhciBl
eHByZXNzaW9uIGluIEFTU0VSVFxfREVBVEggdXNlPyAjIworCitPbiBQT1NJWCBzeXN0ZW1zLCBH
b29nbGUgVGVzdCB1c2VzIHRoZSBQT1NJWCBFeHRlbmRlZCByZWd1bGFyCitleHByZXNzaW9uIHN5
bnRheAorKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVndWxhcl9leHByZXNzaW9uI1BP
U0lYX0V4dGVuZGVkX1JlZ3VsYXJfRXhwcmVzc2lvbnMpLgorT24gV2luZG93cywgaXQgdXNlcyBh
IGxpbWl0ZWQgdmFyaWFudCBvZiByZWd1bGFyIGV4cHJlc3Npb24KK3N5bnRheC4gRm9yIG1vcmUg
ZGV0YWlscywgc2VlIHRoZQorW3JlZ3VsYXIgZXhwcmVzc2lvbiBzeW50YXhdKEFkdmFuY2VkR3Vp
ZGUubWQjUmVndWxhcl9FeHByZXNzaW9uX1N5bnRheCkuCisKKyMjIEkgaGF2ZSBhIGZpeHR1cmUg
Y2xhc3MgRm9vLCBidXQgVEVTVFxfRihGb28sIEJhcikgZ2l2ZXMgbWUgZXJyb3IgIm5vIG1hdGNo
aW5nIGZ1bmN0aW9uIGZvciBjYWxsIHRvIEZvbzo6Rm9vKCkiLiBXaHk/ICMjCisKK0dvb2dsZSBU
ZXN0IG5lZWRzIHRvIGJlIGFibGUgdG8gY3JlYXRlIG9iamVjdHMgb2YgeW91ciB0ZXN0IGZpeHR1
cmUgY2xhc3MsIHNvCitpdCBtdXN0IGhhdmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLiBOb3JtYWxs
eSB0aGUgY29tcGlsZXIgd2lsbCBkZWZpbmUgb25lIGZvcgoreW91LiBIb3dldmVyLCB0aGVyZSBh
cmUgY2FzZXMgd2hlcmUgeW91IGhhdmUgdG8gZGVmaW5lIHlvdXIgb3duOgorICAqIElmIHlvdSBl
eHBsaWNpdGx5IGRlY2xhcmUgYSBub24tZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgY2xhc3MgYEZv
b2AsIHRoZW4geW91IG5lZWQgdG8gZGVmaW5lIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciwgZXZlbiBp
ZiBpdCB3b3VsZCBiZSBlbXB0eS4KKyAgKiBJZiBgRm9vYCBoYXMgYSBjb25zdCBub24tc3RhdGlj
IGRhdGEgbWVtYmVyLCB0aGVuIHlvdSBoYXZlIHRvIGRlZmluZSB0aGUgZGVmYXVsdCBjb25zdHJ1
Y3RvciBfYW5kXyBpbml0aWFsaXplIHRoZSBjb25zdCBtZW1iZXIgaW4gdGhlIGluaXRpYWxpemVy
IGxpc3Qgb2YgdGhlIGNvbnN0cnVjdG9yLiAoRWFybHkgdmVyc2lvbnMgb2YgYGdjY2AgZG9lc24n
dCBmb3JjZSB5b3UgdG8gaW5pdGlhbGl6ZSB0aGUgY29uc3QgbWVtYmVyLiBJdCdzIGEgYnVnIHRo
YXQgaGFzIGJlZW4gZml4ZWQgaW4gYGdjYyA0YC4pCisKKyMjIFdoeSBkb2VzIEFTU0VSVFxfREVB
VEggY29tcGxhaW4gYWJvdXQgcHJldmlvdXMgdGhyZWFkcyB0aGF0IHdlcmUgYWxyZWFkeSBqb2lu
ZWQ/ICMjCisKK1dpdGggdGhlIExpbnV4IHB0aHJlYWQgbGlicmFyeSwgdGhlcmUgaXMgbm8gdHVy
bmluZyBiYWNrIG9uY2UgeW91IGNyb3NzIHRoZQorbGluZSBmcm9tIHNpbmdsZSB0aHJlYWQgdG8g
bXVsdGlwbGUgdGhyZWFkcy4gVGhlIGZpcnN0IHRpbWUgeW91IGNyZWF0ZSBhCit0aHJlYWQsIGEg
bWFuYWdlciB0aHJlYWQgaXMgY3JlYXRlZCBpbiBhZGRpdGlvbiwgc28geW91IGdldCAzLCBub3Qg
MiwgdGhyZWFkcy4KK0xhdGVyIHdoZW4gdGhlIHRocmVhZCB5b3UgY3JlYXRlIGpvaW5zIHRoZSBt
YWluIHRocmVhZCwgdGhlIHRocmVhZCBjb3VudAorZGVjcmVtZW50cyBieSAxLCBidXQgdGhlIG1h
bmFnZXIgdGhyZWFkIHdpbGwgbmV2ZXIgYmUga2lsbGVkLCBzbyB5b3Ugc3RpbGwgaGF2ZQorMiB0
aHJlYWRzLCB3aGljaCBtZWFucyB5b3UgY2Fubm90IHNhZmVseSBydW4gYSBkZWF0aCB0ZXN0Lgor
CitUaGUgbmV3IE5QVEwgdGhyZWFkIGxpYnJhcnkgZG9lc24ndCBzdWZmZXIgZnJvbSB0aGlzIHBy
b2JsZW0sIGFzIGl0IGRvZXNuJ3QKK2NyZWF0ZSBhIG1hbmFnZXIgdGhyZWFkLiBIb3dldmVyLCBp
ZiB5b3UgZG9uJ3QgY29udHJvbCB3aGljaCBtYWNoaW5lIHlvdXIgdGVzdAorcnVucyBvbiwgeW91
IHNob3VsZG4ndCBkZXBlbmQgb24gdGhpcy4KKworIyMgV2h5IGRvZXMgR29vZ2xlIFRlc3QgcmVx
dWlyZSB0aGUgZW50aXJlIHRlc3QgY2FzZSwgaW5zdGVhZCBvZiBpbmRpdmlkdWFsIHRlc3RzLCB0
byBiZSBuYW1lZCBGT09EZWF0aFRlc3Qgd2hlbiBpdCB1c2VzIEFTU0VSVFxfREVBVEg/ICMjCisK
K0dvb2dsZSBUZXN0IGRvZXMgbm90IGludGVybGVhdmUgdGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVz
dCBjYXNlcy4gVGhhdCBpcywgaXQKK3J1bnMgYWxsIHRlc3RzIGluIG9uZSB0ZXN0IGNhc2UgZmly
c3QsIGFuZCB0aGVuIHJ1bnMgYWxsIHRlc3RzIGluIHRoZSBuZXh0IHRlc3QKK2Nhc2UsIGFuZCBz
byBvbi4gR29vZ2xlIFRlc3QgZG9lcyB0aGlzIGJlY2F1c2UgaXQgbmVlZHMgdG8gc2V0IHVwIGEg
dGVzdCBjYXNlCitiZWZvcmUgdGhlIGZpcnN0IHRlc3QgaW4gaXQgaXMgcnVuLCBhbmQgdGVhciBp
dCBkb3duIGFmdGVyd29yZHMuIFNwbGl0dGluZyB1cAordGhlIHRlc3QgY2FzZSB3b3VsZCByZXF1
aXJlIG11bHRpcGxlIHNldC11cCBhbmQgdGVhci1kb3duIHByb2Nlc3Nlcywgd2hpY2ggaXMKK2lu
ZWZmaWNpZW50IGFuZCBtYWtlcyB0aGUgc2VtYW50aWNzIHVuY2xlYW4uCisKK0lmIHdlIHdlcmUg
dG8gZGV0ZXJtaW5lIHRoZSBvcmRlciBvZiB0ZXN0cyBiYXNlZCBvbiB0ZXN0IG5hbWUgaW5zdGVh
ZCBvZiB0ZXN0CitjYXNlIG5hbWUsIHRoZW4gd2Ugd291bGQgaGF2ZSBhIHByb2JsZW0gd2l0aCB0
aGUgZm9sbG93aW5nIHNpdHVhdGlvbjoKKworYGBgIGNwcAorVEVTVF9GKEZvb1Rlc3QsIEFiY0Rl
YXRoVGVzdCkgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIFV2dykgeyAuLi4gfQorCitURVNUX0Yo
QmFyVGVzdCwgRGVmRGVhdGhUZXN0KSB7IC4uLiB9CitURVNUX0YoQmFyVGVzdCwgWHl6KSB7IC4u
LiB9CitgYGAKKworU2luY2UgYEZvb1Rlc3QuQWJjRGVhdGhUZXN0YCBuZWVkcyB0byBydW4gYmVm
b3JlIGBCYXJUZXN0Llh5emAsIGFuZCB3ZSBkb24ndAoraW50ZXJsZWF2ZSB0ZXN0cyBmcm9tIGRp
ZmZlcmVudCB0ZXN0IGNhc2VzLCB3ZSBuZWVkIHRvIHJ1biBhbGwgdGVzdHMgaW4gdGhlCitgRm9v
VGVzdGAgY2FzZSBiZWZvcmUgcnVubmluZyBhbnkgdGVzdCBpbiB0aGUgYEJhclRlc3RgIGNhc2Uu
IFRoaXMgY29udHJhZGljdHMKK3dpdGggdGhlIHJlcXVpcmVtZW50IHRvIHJ1biBgQmFyVGVzdC5E
ZWZEZWF0aFRlc3RgIGJlZm9yZSBgRm9vVGVzdC5VdndgLgorCisjIyBCdXQgSSBkb24ndCBsaWtl
IGNhbGxpbmcgbXkgZW50aXJlIHRlc3QgY2FzZSBGT09EZWF0aFRlc3Qgd2hlbiBpdCBjb250YWlu
cyBib3RoIGRlYXRoIHRlc3RzIGFuZCBub24tZGVhdGggdGVzdHMuIFdoYXQgZG8gSSBkbz8gIyMK
KworWW91IGRvbid0IGhhdmUgdG8sIGJ1dCBpZiB5b3UgbGlrZSwgeW91IG1heSBzcGxpdCB1cCB0
aGUgdGVzdCBjYXNlIGludG8KK2BGb29UZXN0YCBhbmQgYEZvb0RlYXRoVGVzdGAsIHdoZXJlIHRo
ZSBuYW1lcyBtYWtlIGl0IGNsZWFyIHRoYXQgdGhleSBhcmUKK3JlbGF0ZWQ6CisKK2BgYCBjcHAK
K2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07CisKK1RFU1Rf
RihGb29UZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0KKwor
dHlwZWRlZiBGb29UZXN0IEZvb0RlYXRoVGVzdDsKKworVEVTVF9GKEZvb0RlYXRoVGVzdCwgVXZ3
KSB7IC4uLiBFWFBFQ1RfREVBVEgoLi4uKSAuLi4gfQorVEVTVF9GKEZvb0RlYXRoVGVzdCwgWHl6
KSB7IC4uLiBBU1NFUlRfREVBVEgoLi4uKSAuLi4gfQorYGBgCisKKyMjIFRoZSBjb21waWxlciBj
b21wbGFpbnMgYWJvdXQgIm5vIG1hdGNoIGZvciAnb3BlcmF0b3I8PCciIHdoZW4gSSB1c2UgYW4g
YXNzZXJ0aW9uLiBXaGF0IGdpdmVzPyAjIworCitJZiB5b3UgdXNlIGEgdXNlci1kZWZpbmVkIHR5
cGUgYEZvb1R5cGVgIGluIGFuIGFzc2VydGlvbiwgeW91IG11c3QgbWFrZSBzdXJlCit0aGVyZSBp
cyBhbiBgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYsIGNvbnN0IEZvb1R5
cGUmKWAgZnVuY3Rpb24KK2RlZmluZWQgc3VjaCB0aGF0IHdlIGNhbiBwcmludCBhIHZhbHVlIG9m
IGBGb29UeXBlYC4KKworSW4gYWRkaXRpb24sIGlmIGBGb29UeXBlYCBpcyBkZWNsYXJlZCBpbiBh
IG5hbWUgc3BhY2UsIHRoZSBgPDxgIG9wZXJhdG9yIGFsc28KK25lZWRzIHRvIGJlIGRlZmluZWQg
aW4gdGhlIF9zYW1lXyBuYW1lIHNwYWNlLgorCisjIyBIb3cgZG8gSSBzdXBwcmVzcyB0aGUgbWVt
b3J5IGxlYWsgbWVzc2FnZXMgb24gV2luZG93cz8gIyMKKworU2luY2UgdGhlIHN0YXRpY2FsbHkg
aW5pdGlhbGl6ZWQgR29vZ2xlIFRlc3Qgc2luZ2xldG9uIHJlcXVpcmVzIGFsbG9jYXRpb25zIG9u
Cit0aGUgaGVhcCwgdGhlIFZpc3VhbCBDKysgbWVtb3J5IGxlYWsgZGV0ZWN0b3Igd2lsbCByZXBv
cnQgbWVtb3J5IGxlYWtzIGF0IHRoZQorZW5kIG9mIHRoZSBwcm9ncmFtIHJ1bi4gVGhlIGVhc2ll
c3Qgd2F5IHRvIGF2b2lkIHRoaXMgaXMgdG8gdXNlIHRoZQorYF9DcnRNZW1DaGVja3BvaW50YCBh
bmQgYF9DcnRNZW1EdW1wQWxsT2JqZWN0c1NpbmNlYCBjYWxscyB0byBub3QgcmVwb3J0IGFueQor
c3RhdGljYWxseSBpbml0aWFsaXplZCBoZWFwIG9iamVjdHMuIFNlZSBNU0ROIGZvciBtb3JlIGRl
dGFpbHMgYW5kIGFkZGl0aW9uYWwKK2hlYXAgY2hlY2svZGVidWcgcm91dGluZXMuCisKKyMjIEkg
YW0gYnVpbGRpbmcgbXkgcHJvamVjdCB3aXRoIEdvb2dsZSBUZXN0IGluIFZpc3VhbCBTdHVkaW8g
YW5kIGFsbCBJJ20gZ2V0dGluZyBpcyBhIGJ1bmNoIG9mIGxpbmtlciBlcnJvcnMgKG9yIHdhcm5p
bmdzKS4gSGVscCEgIyMKKworWW91IG1heSBnZXQgYSBudW1iZXIgb2YgdGhlIGZvbGxvd2luZyBs
aW5rZXIgZXJyb3Igb3Igd2FybmluZ3MgaWYgeW91CithdHRlbXB0IHRvIGxpbmsgeW91ciB0ZXN0
IHByb2plY3Qgd2l0aCB0aGUgR29vZ2xlIFRlc3QgbGlicmFyeSB3aGVuCit5b3VyIHByb2plY3Qg
YW5kIHRoZSBhcmUgbm90IGJ1aWx0IHVzaW5nIHRoZSBzYW1lIGNvbXBpbGVyIHNldHRpbmdzLgor
CisgICogTE5LMjAwNTogc3ltYm9sIGFscmVhZHkgZGVmaW5lZCBpbiBvYmplY3QKKyAgKiBMTks0
MjE3OiBsb2NhbGx5IGRlZmluZWQgc3ltYm9sICdzeW1ib2wnIGltcG9ydGVkIGluIGZ1bmN0aW9u
ICdmdW5jdGlvbicKKyAgKiBMTks0MDQ5OiBsb2NhbGx5IGRlZmluZWQgc3ltYm9sICdzeW1ib2wn
IGltcG9ydGVkCisKK1RoZSBHb29nbGUgVGVzdCBwcm9qZWN0IChndGVzdC52Y3Byb2opIGhhcyB0
aGUgUnVudGltZSBMaWJyYXJ5IG9wdGlvbgorc2V0IHRvIC9NVCAodXNlIG11bHRpLXRocmVhZGVk
IHN0YXRpYyBsaWJyYXJpZXMsIC9NVGQgZm9yIGRlYnVnKS4gSWYKK3lvdXIgcHJvamVjdCB1c2Vz
IHNvbWV0aGluZyBlbHNlLCBmb3IgZXhhbXBsZSAvTUQgKHVzZSBtdWx0aS10aHJlYWRlZAorRExM
cywgL01EZCBmb3IgZGVidWcpLCB5b3UgbmVlZCB0byBjaGFuZ2UgdGhlIHNldHRpbmcgaW4gdGhl
IEdvb2dsZQorVGVzdCBwcm9qZWN0IHRvIG1hdGNoIHlvdXIgcHJvamVjdCdzLgorCitUbyB1cGRh
dGUgdGhpcyBzZXR0aW5nIG9wZW4gdGhlIHByb2plY3QgcHJvcGVydGllcyBpbiB0aGUgVmlzdWFs
CitTdHVkaW8gSURFIHRoZW4gc2VsZWN0IHRoZSBicmFuY2ggQ29uZmlndXJhdGlvbiBQcm9wZXJ0
aWVzIHwgQy9DKysgfAorQ29kZSBHZW5lcmF0aW9uIGFuZCBjaGFuZ2UgdGhlIG9wdGlvbiAiUnVu
dGltZSBMaWJyYXJ5Ii4gIFlvdSBtYXkgYWxzbyB0cnkKK3VzaW5nIGd0ZXN0LW1kLnZjcHJvaiBp
bnN0ZWFkIG9mIGd0ZXN0LnZjcHJvai4KKworIyMgSSBwdXQgbXkgdGVzdHMgaW4gYSBsaWJyYXJ5
IGFuZCBHb29nbGUgVGVzdCBkb2Vzbid0IHJ1biB0aGVtLiBXaGF0J3MgaGFwcGVuaW5nPyAjIwor
SGF2ZSB5b3UgcmVhZCBhCitbd2FybmluZ10oUHJpbWVyLm1kI2ltcG9ydGFudC1ub3RlLWZvci12
aXN1YWwtYy11c2Vycykgb24KK3RoZSBHb29nbGUgVGVzdCBQcmltZXIgcGFnZT8KKworIyMgSSB3
YW50IHRvIHVzZSBHb29nbGUgVGVzdCB3aXRoIFZpc3VhbCBTdHVkaW8gYnV0IGRvbid0IGtub3cg
d2hlcmUgdG8gc3RhcnQuICMjCitNYW55IHBlb3BsZSBhcmUgaW4geW91ciBwb3NpdGlvbiBhbmQg
b25lIG9mIHRoZSBwb3N0ZWQgaGlzIHNvbHV0aW9uIHRvCitvdXIgbWFpbGluZyBsaXN0LgorCisj
IyBJIGFtIHNlZWluZyBjb21waWxlIGVycm9ycyBtZW50aW9uaW5nIHN0ZDo6dHlwZVxfdHJhaXRz
IHdoZW4gSSB0cnkgdG8gdXNlIEdvb2dsZSBUZXN0IG9uIFNvbGFyaXMuICMjCitHb29nbGUgVGVz
dCB1c2VzIHBhcnRzIG9mIHRoZSBzdGFuZGFyZCBDKysgbGlicmFyeSB0aGF0IFN1blN0dWRpbyBk
b2VzIG5vdCBzdXBwb3J0LgorT3VyIHVzZXJzIHJlcG9ydGVkIHN1Y2Nlc3MgdXNpbmcgYWx0ZXJu
YXRpdmUgaW1wbGVtZW50YXRpb25zLiBUcnkgcnVubmluZyB0aGUgYnVpbGQgYWZ0ZXIgcnVuaW5n
IHRoaXMgY29tbWFkOgorCitgZXhwb3J0IENDPWNjIENYWD1DQyBDWFhGTEFHUz0nLWxpYnJhcnk9
c3RscG9ydDQnYAorCisjIyBIb3cgY2FuIG15IGNvZGUgZGV0ZWN0IGlmIGl0IGlzIHJ1bm5pbmcg
aW4gYSB0ZXN0PyAjIworCitJZiB5b3Ugd3JpdGUgY29kZSB0aGF0IHNuaWZmcyB3aGV0aGVyIGl0
J3MgcnVubmluZyBpbiBhIHRlc3QgYW5kIGRvZXMKK2RpZmZlcmVudCB0aGluZ3MgYWNjb3JkaW5n
bHksIHlvdSBhcmUgbGVha2luZyB0ZXN0LW9ubHkgbG9naWMgaW50bworcHJvZHVjdGlvbiBjb2Rl
IGFuZCB0aGVyZSBpcyBubyBlYXN5IHdheSB0byBlbnN1cmUgdGhhdCB0aGUgdGVzdC1vbmx5Citj
b2RlIHBhdGhzIGFyZW4ndCBydW4gYnkgbWlzdGFrZSBpbiBwcm9kdWN0aW9uLiAgU3VjaCBjbGV2
ZXJuZXNzIGFsc28KK2xlYWRzIHRvCitbSGVpc2VuYnVnc10oaHR0cDovL2VuLndpa2lwZWRpYS5v
cmcvd2lraS9VbnVzdWFsX3NvZnR3YXJlX2J1ZyNIZWlzZW5idWcpLgorVGhlcmVmb3JlIHdlIHN0
cm9uZ2x5IGFkdmlzZSBhZ2FpbnN0IHRoZSBwcmFjdGljZSwgYW5kIEdvb2dsZSBUZXN0IGRvZXNu
J3QKK3Byb3ZpZGUgYSB3YXkgdG8gZG8gaXQuCisKK0luIGdlbmVyYWwsIHRoZSByZWNvbW1lbmRl
ZCB3YXkgdG8gY2F1c2UgdGhlIGNvZGUgdG8gYmVoYXZlCitkaWZmZXJlbnRseSB1bmRlciB0ZXN0
IGlzIFtkZXBlbmRlbmN5IGluamVjdGlvbl0oaHR0cDovL2phbWVzc2hvcmUuY29tL0Jsb2cvRGVw
ZW5kZW5jeS1JbmplY3Rpb24tRGVteXN0aWZpZWQuaHRtbCkuCitZb3UgY2FuIGluamVjdCBkaWZm
ZXJlbnQgZnVuY3Rpb25hbGl0eSBmcm9tIHRoZSB0ZXN0IGFuZCBmcm9tIHRoZQorcHJvZHVjdGlv
biBjb2RlLiAgU2luY2UgeW91ciBwcm9kdWN0aW9uIGNvZGUgZG9lc24ndCBsaW5rIGluIHRoZQor
Zm9yLXRlc3QgbG9naWMgYXQgYWxsLCB0aGVyZSBpcyBubyBkYW5nZXIgaW4gYWNjaWRlbnRhbGx5
IHJ1bm5pbmcgaXQuCisKK0hvd2V2ZXIsIGlmIHlvdSBfcmVhbGx5XywgX3JlYWxseV8sIF9yZWFs
bHlfIGhhdmUgbm8gY2hvaWNlLCBhbmQgaWYKK3lvdSBmb2xsb3cgdGhlIHJ1bGUgb2YgZW5kaW5n
IHlvdXIgdGVzdCBwcm9ncmFtIG5hbWVzIHdpdGggYF90ZXN0YCwKK3lvdSBjYW4gdXNlIHRoZSBf
aG9ycmlibGVfIGhhY2sgb2Ygc25pZmZpbmcgeW91ciBleGVjdXRhYmxlIG5hbWUKKyhgYXJndlsw
XWAgaW4gYG1haW4oKWApIHRvIGtub3cgd2hldGhlciB0aGUgY29kZSBpcyB1bmRlciB0ZXN0Lgor
CisjIyBHb29nbGUgVGVzdCBkZWZpbmVzIGEgbWFjcm8gdGhhdCBjbGFzaGVzIHdpdGggb25lIGRl
ZmluZWQgYnkgYW5vdGhlciBsaWJyYXJ5LiBIb3cgZG8gSSBkZWFsIHdpdGggdGhhdD8gIyMKKwor
SW4gQysrLCBtYWNyb3MgZG9uJ3Qgb2JleSBuYW1lc3BhY2VzLiAgVGhlcmVmb3JlIHR3byBsaWJy
YXJpZXMgdGhhdAorYm90aCBkZWZpbmUgYSBtYWNybyBvZiB0aGUgc2FtZSBuYW1lIHdpbGwgY2xh
c2ggaWYgeW91IGAjaW5jbHVkZWAgYm90aAorZGVmaW5pdGlvbnMuICBJbiBjYXNlIGEgR29vZ2xl
IFRlc3QgbWFjcm8gY2xhc2hlcyB3aXRoIGFub3RoZXIKK2xpYnJhcnksIHlvdSBjYW4gZm9yY2Ug
R29vZ2xlIFRlc3QgdG8gcmVuYW1lIGl0cyBtYWNybyB0byBhdm9pZCB0aGUKK2NvbmZsaWN0Lgor
CitTcGVjaWZpY2FsbHksIGlmIGJvdGggR29vZ2xlIFRlc3QgYW5kIHNvbWUgb3RoZXIgY29kZSBk
ZWZpbmUgbWFjcm8KK2BGT09gLCB5b3UgY2FuIGFkZAorYGBgCisgIC1ER1RFU1RfRE9OVF9ERUZJ
TkVfRk9PPTEKK2BgYAordG8gdGhlIGNvbXBpbGVyIGZsYWdzIHRvIHRlbGwgR29vZ2xlIFRlc3Qg
dG8gY2hhbmdlIHRoZSBtYWNybydzIG5hbWUKK2Zyb20gYEZPT2AgdG8gYEdURVNUX0ZPT2AuIEZv
ciBleGFtcGxlLCB3aXRoIGAtREdURVNUX0RPTlRfREVGSU5FX1RFU1Q9MWAsIHlvdSdsbCBuZWVk
IHRvIHdyaXRlCitgYGAgY3BwCisgIEdURVNUX1RFU1QoU29tZVRlc3QsIERvZXNUaGlzKSB7IC4u
LiB9CitgYGAKK2luc3RlYWQgb2YKK2BgYCBjcHAKKyAgVEVTVChTb21lVGVzdCwgRG9lc1RoaXMp
IHsgLi4uIH0KK2BgYAoraW4gb3JkZXIgdG8gZGVmaW5lIGEgdGVzdC4KKworQ3VycmVudGx5LCB0
aGUgZm9sbG93aW5nIGBURVNUYCwgYEZBSUxgLCBgU1VDQ0VFRGAsIGFuZCB0aGUgYmFzaWMgY29t
cGFyaXNvbiBhc3NlcnRpb24gbWFjcm9zIGNhbiBoYXZlIGFsdGVybmF0aXZlIG5hbWVzLiBZb3Ug
Y2FuIHNlZSB0aGUgZnVsbCBsaXN0IG9mIGNvdmVyZWQgbWFjcm9zIFtoZXJlXShodHRwOi8vd3d3
Lmdvb2dsZS5jb20vY29kZXNlYXJjaD9xPWlmKyFHVEVTVF9ET05UX0RFRklORV9cdyUyQitwYWNr
YWdlOmh0dHA6Ly9nb29nbGV0ZXN0XC5nb29nbGVjb2RlXC5jb20rZmlsZTovaW5jbHVkZS9ndGVz
dC9ndGVzdC5oKS4gTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gdGhlICJBdm9pZGlu
ZyBNYWNybyBOYW1lIENsYXNoZXMiIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBmaWxlLgorCisKKyMj
IElzIGl0IE9LIGlmIEkgaGF2ZSB0d28gc2VwYXJhdGUgYFRFU1QoRm9vLCBCYXIpYCB0ZXN0IG1l
dGhvZHMgZGVmaW5lZCBpbiBkaWZmZXJlbnQgbmFtZXNwYWNlcz8gIyMKKworWWVzLgorCitUaGUg
cnVsZSBpcyAqKmFsbCB0ZXN0IG1ldGhvZHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNl
IHRoZSBzYW1lIGZpeHR1cmUgY2xhc3MqKi4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcg
aXMgKiphbGxvd2VkKiogYmVjYXVzZSBib3RoIHRlc3RzIHVzZSB0aGUgc2FtZSBmaXh0dXJlIGNs
YXNzIChgOjp0ZXN0aW5nOjpUZXN0YCkuCisKK2BgYCBjcHAKK25hbWVzcGFjZSBmb28geworVEVT
VChDb29sVGVzdCwgRG9Tb21ldGhpbmcpIHsKKyAgU1VDQ0VFRCgpOworfQorfSAgLy8gbmFtZXNw
YWNlIGZvbworCituYW1lc3BhY2UgYmFyIHsKK1RFU1QoQ29vbFRlc3QsIERvU29tZXRoaW5nKSB7
CisgIFNVQ0NFRUQoKTsKK30KK30gIC8vIG5hbWVzcGFjZSBmb28KK2BgYAorCitIb3dldmVyLCB0
aGUgZm9sbG93aW5nIGNvZGUgaXMgKipub3QgYWxsb3dlZCoqIGFuZCB3aWxsIHByb2R1Y2UgYSBy
dW50aW1lIGVycm9yIGZyb20gR29vZ2xlIFRlc3QgYmVjYXVzZSB0aGUgdGVzdCBtZXRob2RzIGFy
ZSB1c2luZyBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMgd2l0aCB0aGUgc2FtZSB0ZXN0
IGNhc2UgbmFtZS4KKworYGBgIGNwcAorbmFtZXNwYWNlIGZvbyB7CitjbGFzcyBDb29sVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307ICAvLyBGaXh0dXJlIGZvbzo6Q29vbFRlc3QKK1RF
U1RfRihDb29sVGVzdCwgRG9Tb21ldGhpbmcpIHsKKyAgU1VDQ0VFRCgpOworfQorfSAgLy8gbmFt
ZXNwYWNlIGZvbworCituYW1lc3BhY2UgYmFyIHsKK2NsYXNzIENvb2xUZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCB7fTsgIC8vIEZpeHR1cmU6IGJhcjo6Q29vbFRlc3QKK1RFU1RfRihDb29s
VGVzdCwgRG9Tb21ldGhpbmcpIHsKKyAgU1VDQ0VFRCgpOworfQorfSAgLy8gbmFtZXNwYWNlIGZv
bworYGBgCisKKyMjIEhvdyBkbyBJIGJ1aWxkIEdvb2dsZSBUZXN0aW5nIEZyYW1ld29yayB3aXRo
IFhjb2RlIDQ/ICMjCisKK0lmIHlvdSB0cnkgdG8gYnVpbGQgR29vZ2xlIFRlc3QncyBYY29kZSBw
cm9qZWN0IHdpdGggWGNvZGUgNC4wIG9yIGxhdGVyLCB5b3UgbWF5IGVuY291bnRlciBhbiBlcnJv
ciBtZXNzYWdlIHRoYXQgbG9va3MgbGlrZQorIk1pc3NpbmcgU0RLIGluIHRhcmdldCBndGVzdFxf
ZnJhbWV3b3JrOiAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrIi4gVGhhdCBtZWFucyB0
aGF0IFhjb2RlIGRvZXMgbm90IHN1cHBvcnQgdGhlIFNESyB0aGUgcHJvamVjdCBpcyB0YXJnZXRp
bmcuIFNlZSB0aGUgWGNvZGUgc2VjdGlvbiBpbiB0aGUgW1JFQURNRV0oLi4vUkVBRE1FLm1kKSBm
aWxlIG9uIGhvdyB0byByZXNvbHZlIHRoaXMuCisKKyMjIE15IHF1ZXN0aW9uIGlzIG5vdCBjb3Zl
cmVkIGluIHlvdXIgRkFRISAjIworCitJZiB5b3UgY2Fubm90IGZpbmQgdGhlIGFuc3dlciB0byB5
b3VyIHF1ZXN0aW9uIGluIHRoaXMgRkFRLCB0aGVyZSBhcmUKK3NvbWUgb3RoZXIgcmVzb3VyY2Vz
IHlvdSBjYW4gdXNlOgorCisgIDEuIHJlYWQgb3RoZXIgW3dpa2kgcGFnZXNdKC4uL2RvY3MpLAor
ICAxLiBzZWFyY2ggdGhlIG1haWxpbmcgbGlzdCBbYXJjaGl2ZV0oaHR0cHM6Ly9ncm91cHMuZ29v
Z2xlLmNvbS9mb3J1bS8jIWZvcnVtL2dvb2dsZXRlc3RmcmFtZXdvcmspLAorICAxLiBhc2sgaXQg
b24gW2dvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbV0obWFpbHRvOmdvb2dsZXRl
c3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbSkgYW5kIHNvbWVvbmUgd2lsbCBhbnN3ZXIgaXQg
KHRvIHByZXZlbnQgc3BhbSwgd2UgcmVxdWlyZSB5b3UgdG8gam9pbiB0aGUgW2Rpc2N1c3Npb24g
Z3JvdXBdKGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGV0ZXN0ZnJhbWV3b3Jr
KSBiZWZvcmUgeW91IGNhbiBwb3N0LikuCisKK1BsZWFzZSBub3RlIHRoYXQgY3JlYXRpbmcgYW4g
aXNzdWUgaW4gdGhlCitbaXNzdWUgdHJhY2tlcl0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9n
b29nbGV0ZXN0L2lzc3VlcykgaXMgX25vdF8KK2EgZ29vZCB3YXkgdG8gZ2V0IHlvdXIgYW5zd2Vy
LCBhcyBpdCBpcyBtb25pdG9yZWQgaW5mcmVxdWVudGx5IGJ5IGEKK3Zlcnkgc21hbGwgbnVtYmVy
IG9mIHBlb3BsZS4KKworV2hlbiBhc2tpbmcgYSBxdWVzdGlvbiwgaXQncyBoZWxwZnVsIHRvIHBy
b3ZpZGUgYXMgbXVjaCBvZiB0aGUKK2ZvbGxvd2luZyBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSAo
cGVvcGxlIGNhbm5vdCBoZWxwIHlvdSBpZiB0aGVyZSdzCitub3QgZW5vdWdoIGluZm9ybWF0aW9u
IGluIHlvdXIgcXVlc3Rpb24pOgorCisgICogdGhlIHZlcnNpb24gKG9yIHRoZSBjb21taXQgaGFz
aCBpZiB5b3UgY2hlY2sgb3V0IGZyb20gR2l0IGRpcmVjdGx5KSBvZiBHb29nbGUgVGVzdCB5b3Ug
dXNlIChHb29nbGUgVGVzdCBpcyB1bmRlciBhY3RpdmUgZGV2ZWxvcG1lbnQsIHNvIGl0J3MgcG9z
c2libGUgdGhhdCB5b3VyIHByb2JsZW0gaGFzIGJlZW4gc29sdmVkIGluIGEgbGF0ZXIgdmVyc2lv
biksCisgICogeW91ciBvcGVyYXRpbmcgc3lzdGVtLAorICAqIHRoZSBuYW1lIGFuZCB2ZXJzaW9u
IG9mIHlvdXIgY29tcGlsZXIsCisgICogdGhlIGNvbXBsZXRlIGNvbW1hbmQgbGluZSBmbGFncyB5
b3UgZ2l2ZSB0byB5b3VyIGNvbXBpbGVyLAorICAqIHRoZSBjb21wbGV0ZSBjb21waWxlciBlcnJv
ciBtZXNzYWdlcyAoaWYgdGhlIHF1ZXN0aW9uIGlzIGFib3V0IGNvbXBpbGF0aW9uKSwKKyAgKiB0
aGUgX2FjdHVhbF8gY29kZSAoaWRlYWxseSwgYSBtaW5pbWFsIGJ1dCBjb21wbGV0ZSBwcm9ncmFt
KSB0aGF0IGhhcyB0aGUgcHJvYmxlbSB5b3UgZW5jb3VudGVyLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9QcmltZXIubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9kb2NzL1ByaW1lci5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzRjMWQyYWI2MzIxOTMyMDJmNWJmYTc5OWVi
ZDY0MmQwYTMwOGE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
ZG9jcy9QcmltZXIubWQKQEAgLTAsMCArMSw1MDIgQEAKKworCisjIEludHJvZHVjdGlvbjogV2h5
IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcms/ICMKKworX0dvb2dsZSBDKysgVGVzdGluZyBG
cmFtZXdvcmtfIGhlbHBzIHlvdSB3cml0ZSBiZXR0ZXIgQysrIHRlc3RzLgorCitObyBtYXR0ZXIg
d2hldGhlciB5b3Ugd29yayBvbiBMaW51eCwgV2luZG93cywgb3IgYSBNYWMsIGlmIHlvdSB3cml0
ZSBDKysgY29kZSwKK0dvb2dsZSBUZXN0IGNhbiBoZWxwIHlvdS4KKworU28gd2hhdCBtYWtlcyBh
IGdvb2QgdGVzdCwgYW5kIGhvdyBkb2VzIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgZml0
IGluPyBXZSBiZWxpZXZlOgorICAxLiBUZXN0cyBzaG91bGQgYmUgX2luZGVwZW5kZW50XyBhbmQg
X3JlcGVhdGFibGVfLiBJdCdzIGEgcGFpbiB0byBkZWJ1ZyBhIHRlc3QgdGhhdCBzdWNjZWVkcyBv
ciBmYWlscyBhcyBhIHJlc3VsdCBvZiBvdGhlciB0ZXN0cy4gIEdvb2dsZSBDKysgVGVzdGluZyBG
cmFtZXdvcmsgaXNvbGF0ZXMgdGhlIHRlc3RzIGJ5IHJ1bm5pbmcgZWFjaCBvZiB0aGVtIG9uIGEg
ZGlmZmVyZW50IG9iamVjdC4gV2hlbiBhIHRlc3QgZmFpbHMsIEdvb2dsZSBDKysgVGVzdGluZyBG
cmFtZXdvcmsgYWxsb3dzIHlvdSB0byBydW4gaXQgaW4gaXNvbGF0aW9uIGZvciBxdWljayBkZWJ1
Z2dpbmcuCisgIDEuIFRlc3RzIHNob3VsZCBiZSB3ZWxsIF9vcmdhbml6ZWRfIGFuZCByZWZsZWN0
IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3RlZCBjb2RlLiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZy
YW1ld29yayBncm91cHMgcmVsYXRlZCB0ZXN0cyBpbnRvIHRlc3QgY2FzZXMgdGhhdCBjYW4gc2hh
cmUgZGF0YSBhbmQgc3Vicm91dGluZXMuIFRoaXMgY29tbW9uIHBhdHRlcm4gaXMgZWFzeSB0byBy
ZWNvZ25pemUgYW5kIG1ha2VzIHRlc3RzIGVhc3kgdG8gbWFpbnRhaW4uIFN1Y2ggY29uc2lzdGVu
Y3kgaXMgZXNwZWNpYWxseSBoZWxwZnVsIHdoZW4gcGVvcGxlIHN3aXRjaCBwcm9qZWN0cyBhbmQg
c3RhcnQgdG8gd29yayBvbiBhIG5ldyBjb2RlIGJhc2UuCisgIDEuIFRlc3RzIHNob3VsZCBiZSBf
cG9ydGFibGVfIGFuZCBfcmV1c2FibGVfLiBUaGUgb3Blbi1zb3VyY2UgY29tbXVuaXR5IGhhcyBh
IGxvdCBvZiBjb2RlIHRoYXQgaXMgcGxhdGZvcm0tbmV1dHJhbCwgaXRzIHRlc3RzIHNob3VsZCBh
bHNvIGJlIHBsYXRmb3JtLW5ldXRyYWwuICBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIHdv
cmtzIG9uIGRpZmZlcmVudCBPU2VzLCB3aXRoIGRpZmZlcmVudCBjb21waWxlcnMgKGdjYywgTVNW
QywgYW5kIG90aGVycyksIHdpdGggb3Igd2l0aG91dCBleGNlcHRpb25zLCBzbyBHb29nbGUgQysr
IFRlc3RpbmcgRnJhbWV3b3JrIHRlc3RzIGNhbiBlYXNpbHkgd29yayB3aXRoIGEgdmFyaWV0eSBv
ZiBjb25maWd1cmF0aW9ucy4gIChOb3RlIHRoYXQgdGhlIGN1cnJlbnQgcmVsZWFzZSBvbmx5IGNv
bnRhaW5zIGJ1aWxkIHNjcmlwdHMgZm9yIExpbnV4IC0gd2UgYXJlIGFjdGl2ZWx5IHdvcmtpbmcg
b24gc2NyaXB0cyBmb3Igb3RoZXIgcGxhdGZvcm1zLikKKyAgMS4gV2hlbiB0ZXN0cyBmYWlsLCB0
aGV5IHNob3VsZCBwcm92aWRlIGFzIG11Y2ggX2luZm9ybWF0aW9uXyBhYm91dCB0aGUgcHJvYmxl
bSBhcyBwb3NzaWJsZS4gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBkb2Vzbid0IHN0b3Ag
YXQgdGhlIGZpcnN0IHRlc3QgZmFpbHVyZS4gSW5zdGVhZCwgaXQgb25seSBzdG9wcyB0aGUgY3Vy
cmVudCB0ZXN0IGFuZCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dC4gWW91IGNhbiBhbHNvIHNldCB1
cCB0ZXN0cyB0aGF0IHJlcG9ydCBub24tZmF0YWwgZmFpbHVyZXMgYWZ0ZXIgd2hpY2ggdGhlIGN1
cnJlbnQgdGVzdCBjb250aW51ZXMuIFRodXMsIHlvdSBjYW4gZGV0ZWN0IGFuZCBmaXggbXVsdGlw
bGUgYnVncyBpbiBhIHNpbmdsZSBydW4tZWRpdC1jb21waWxlIGN5Y2xlLgorICAxLiBUaGUgdGVz
dGluZyBmcmFtZXdvcmsgc2hvdWxkIGxpYmVyYXRlIHRlc3Qgd3JpdGVycyBmcm9tIGhvdXNla2Vl
cGluZyBjaG9yZXMgYW5kIGxldCB0aGVtIGZvY3VzIG9uIHRoZSB0ZXN0IF9jb250ZW50Xy4gIEdv
b2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgYXV0b21hdGljYWxseSBrZWVwcyB0cmFjayBvZiBh
bGwgdGVzdHMgZGVmaW5lZCwgYW5kIGRvZXNuJ3QgcmVxdWlyZSB0aGUgdXNlciB0byBlbnVtZXJh
dGUgdGhlbSBpbiBvcmRlciB0byBydW4gdGhlbS4KKyAgMS4gVGVzdHMgc2hvdWxkIGJlIF9mYXN0
Xy4gV2l0aCBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrLCB5b3UgY2FuIHJldXNlIHNoYXJl
ZCByZXNvdXJjZXMgYWNyb3NzIHRlc3RzIGFuZCBwYXkgZm9yIHRoZSBzZXQtdXAvdGVhci1kb3du
IG9ubHkgb25jZSwgd2l0aG91dCBtYWtpbmcgdGVzdHMgZGVwZW5kIG9uIGVhY2ggb3RoZXIuCisK
K1NpbmNlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgaXMgYmFzZWQgb24gdGhlIHBvcHVs
YXIgeFVuaXQKK2FyY2hpdGVjdHVyZSwgeW91J2xsIGZlZWwgcmlnaHQgYXQgaG9tZSBpZiB5b3Un
dmUgdXNlZCBKVW5pdCBvciBQeVVuaXQgYmVmb3JlLgorSWYgbm90LCBpdCB3aWxsIHRha2UgeW91
IGFib3V0IDEwIG1pbnV0ZXMgdG8gbGVhcm4gdGhlIGJhc2ljcyBhbmQgZ2V0IHN0YXJ0ZWQuCitT
byBsZXQncyBnbyEKKworX05vdGU6XyBXZSBzb21ldGltZXMgcmVmZXIgdG8gR29vZ2xlIEMrKyBU
ZXN0aW5nIEZyYW1ld29yayBpbmZvcm1hbGx5CithcyBfR29vZ2xlIFRlc3RfLgorCisjIFNldHRp
bmcgdXAgYSBOZXcgVGVzdCBQcm9qZWN0ICMKKworVG8gd3JpdGUgYSB0ZXN0IHByb2dyYW0gdXNp
bmcgR29vZ2xlIFRlc3QsIHlvdSBuZWVkIHRvIGNvbXBpbGUgR29vZ2xlCitUZXN0IGludG8gYSBs
aWJyYXJ5IGFuZCBsaW5rIHlvdXIgdGVzdCB3aXRoIGl0LiAgV2UgcHJvdmlkZSBidWlsZAorZmls
ZXMgZm9yIHNvbWUgcG9wdWxhciBidWlsZCBzeXN0ZW1zOiBgbXN2Yy9gIGZvciBWaXN1YWwgU3R1
ZGlvLAorYHhjb2RlL2AgZm9yIE1hYyBYY29kZSwgYG1ha2UvYCBmb3IgR05VIG1ha2UsIGBjb2Rl
Z2Vhci9gIGZvciBCb3JsYW5kCitDKysgQnVpbGRlciwgYW5kIHRoZSBhdXRvdG9vbHMgc2NyaXB0
IChkZXByZWNhdGVkKSBhbmQKK2BDTWFrZUxpc3RzLnR4dGAgZm9yIENNYWtlIChyZWNvbW1lbmRl
ZCkgaW4gdGhlIEdvb2dsZSBUZXN0IHJvb3QKK2RpcmVjdG9yeS4gIElmIHlvdXIgYnVpbGQgc3lz
dGVtIGlzIG5vdCBvbiB0aGlzIGxpc3QsIHlvdSBjYW4gdGFrZSBhCitsb29rIGF0IGBtYWtlL01h
a2VmaWxlYCB0byBsZWFybiBob3cgR29vZ2xlIFRlc3Qgc2hvdWxkIGJlIGNvbXBpbGVkCisoYmFz
aWNhbGx5IHlvdSB3YW50IHRvIGNvbXBpbGUgYHNyYy9ndGVzdC1hbGwuY2NgIHdpdGggYEdURVNU
X1JPT1RgCithbmQgYEdURVNUX1JPT1QvaW5jbHVkZWAgaW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0
aCwgd2hlcmUgYEdURVNUX1JPT1RgCitpcyB0aGUgR29vZ2xlIFRlc3Qgcm9vdCBkaXJlY3Rvcnkp
LgorCitPbmNlIHlvdSBhcmUgYWJsZSB0byBjb21waWxlIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5
LCB5b3Ugc2hvdWxkCitjcmVhdGUgYSBwcm9qZWN0IG9yIGJ1aWxkIHRhcmdldCBmb3IgeW91ciB0
ZXN0IHByb2dyYW0uICBNYWtlIHN1cmUgeW91CitoYXZlIGBHVEVTVF9ST09UL2luY2x1ZGVgIGlu
IHRoZSBoZWFkZXIgc2VhcmNoIHBhdGggc28gdGhhdCB0aGUKK2NvbXBpbGVyIGNhbiBmaW5kIGAi
Z3Rlc3QvZ3Rlc3QuaCJgIHdoZW4gY29tcGlsaW5nIHlvdXIgdGVzdC4gIFNldCB1cAoreW91ciB0
ZXN0IHByb2plY3QgdG8gbGluayB3aXRoIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5IChmb3IgZXhh
bXBsZSwKK2luIFZpc3VhbCBTdHVkaW8sIHRoaXMgaXMgZG9uZSBieSBhZGRpbmcgYSBkZXBlbmRl
bmN5IG9uCitgZ3Rlc3QudmNwcm9qYCkuCisKK0lmIHlvdSBzdGlsbCBoYXZlIHF1ZXN0aW9ucywg
dGFrZSBhIGxvb2sgYXQgaG93IEdvb2dsZSBUZXN0J3Mgb3duCit0ZXN0cyBhcmUgYnVpbHQgYW5k
IHVzZSB0aGVtIGFzIGV4YW1wbGVzLgorCisjIEJhc2ljIENvbmNlcHRzICMKKworV2hlbiB1c2lu
ZyBHb29nbGUgVGVzdCwgeW91IHN0YXJ0IGJ5IHdyaXRpbmcgX2Fzc2VydGlvbnNfLCB3aGljaCBh
cmUgc3RhdGVtZW50cwordGhhdCBjaGVjayB3aGV0aGVyIGEgY29uZGl0aW9uIGlzIHRydWUuIEFu
IGFzc2VydGlvbidzIHJlc3VsdCBjYW4gYmUgX3N1Y2Nlc3NfLAorX25vbmZhdGFsIGZhaWx1cmVf
LCBvciBfZmF0YWwgZmFpbHVyZV8uIElmIGEgZmF0YWwgZmFpbHVyZSBvY2N1cnMsIGl0IGFib3J0
cwordGhlIGN1cnJlbnQgZnVuY3Rpb247IG90aGVyd2lzZSB0aGUgcHJvZ3JhbSBjb250aW51ZXMg
bm9ybWFsbHkuCisKK19UZXN0c18gdXNlIGFzc2VydGlvbnMgdG8gdmVyaWZ5IHRoZSB0ZXN0ZWQg
Y29kZSdzIGJlaGF2aW9yLiBJZiBhIHRlc3QgY3Jhc2hlcworb3IgaGFzIGEgZmFpbGVkIGFzc2Vy
dGlvbiwgdGhlbiBpdCBfZmFpbHNfOyBvdGhlcndpc2UgaXQgX3N1Y2NlZWRzXy4KKworQSBfdGVz
dCBjYXNlXyBjb250YWlucyBvbmUgb3IgbWFueSB0ZXN0cy4gWW91IHNob3VsZCBncm91cCB5b3Vy
IHRlc3RzIGludG8gdGVzdAorY2FzZXMgdGhhdCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhl
IHRlc3RlZCBjb2RlLiBXaGVuIG11bHRpcGxlIHRlc3RzIGluIGEKK3Rlc3QgY2FzZSBuZWVkIHRv
IHNoYXJlIGNvbW1vbiBvYmplY3RzIGFuZCBzdWJyb3V0aW5lcywgeW91IGNhbiBwdXQgdGhlbSBp
bnRvIGEKK190ZXN0IGZpeHR1cmVfIGNsYXNzLgorCitBIF90ZXN0IHByb2dyYW1fIGNhbiBjb250
YWluIG11bHRpcGxlIHRlc3QgY2FzZXMuCisKK1dlJ2xsIG5vdyBleHBsYWluIGhvdyB0byB3cml0
ZSBhIHRlc3QgcHJvZ3JhbSwgc3RhcnRpbmcgYXQgdGhlIGluZGl2aWR1YWwKK2Fzc2VydGlvbiBs
ZXZlbCBhbmQgYnVpbGRpbmcgdXAgdG8gdGVzdHMgYW5kIHRlc3QgY2FzZXMuCisKKyMgQXNzZXJ0
aW9ucyAjCisKK0dvb2dsZSBUZXN0IGFzc2VydGlvbnMgYXJlIG1hY3JvcyB0aGF0IHJlc2VtYmxl
IGZ1bmN0aW9uIGNhbGxzLiBZb3UgdGVzdCBhCitjbGFzcyBvciBmdW5jdGlvbiBieSBtYWtpbmcg
YXNzZXJ0aW9ucyBhYm91dCBpdHMgYmVoYXZpb3IuIFdoZW4gYW4gYXNzZXJ0aW9uCitmYWlscywg
R29vZ2xlIFRlc3QgcHJpbnRzIHRoZSBhc3NlcnRpb24ncyBzb3VyY2UgZmlsZSBhbmQgbGluZSBu
dW1iZXIgbG9jYXRpb24sCithbG9uZyB3aXRoIGEgZmFpbHVyZSBtZXNzYWdlLiBZb3UgbWF5IGFs
c28gc3VwcGx5IGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZQord2hpY2ggd2lsbCBiZSBhcHBlbmRl
ZCB0byBHb29nbGUgVGVzdCdzIG1lc3NhZ2UuCisKK1RoZSBhc3NlcnRpb25zIGNvbWUgaW4gcGFp
cnMgdGhhdCB0ZXN0IHRoZSBzYW1lIHRoaW5nIGJ1dCBoYXZlIGRpZmZlcmVudAorZWZmZWN0cyBv
biB0aGUgY3VycmVudCBmdW5jdGlvbi4gYEFTU0VSVF8qYCB2ZXJzaW9ucyBnZW5lcmF0ZSBmYXRh
bCBmYWlsdXJlcword2hlbiB0aGV5IGZhaWwsIGFuZCAqKmFib3J0IHRoZSBjdXJyZW50IGZ1bmN0
aW9uKiouIGBFWFBFQ1RfKmAgdmVyc2lvbnMgZ2VuZXJhdGUKK25vbmZhdGFsIGZhaWx1cmVzLCB3
aGljaCBkb24ndCBhYm9ydCB0aGUgY3VycmVudCBmdW5jdGlvbi4gVXN1YWxseSBgRVhQRUNUXypg
CithcmUgcHJlZmVycmVkLCBhcyB0aGV5IGFsbG93IG1vcmUgdGhhbiBvbmUgZmFpbHVyZXMgdG8g
YmUgcmVwb3J0ZWQgaW4gYSB0ZXN0LgorSG93ZXZlciwgeW91IHNob3VsZCB1c2UgYEFTU0VSVF8q
YCBpZiBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gY29udGludWUgd2hlbgordGhlIGFzc2VydGlv
biBpbiBxdWVzdGlvbiBmYWlscy4KKworU2luY2UgYSBmYWlsZWQgYEFTU0VSVF8qYCByZXR1cm5z
IGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gaW1tZWRpYXRlbHksCitwb3NzaWJseSBza2lwcGlu
ZyBjbGVhbi11cCBjb2RlIHRoYXQgY29tZXMgYWZ0ZXIgaXQsIGl0IG1heSBjYXVzZSBhIHNwYWNl
IGxlYWsuCitEZXBlbmRpbmcgb24gdGhlIG5hdHVyZSBvZiB0aGUgbGVhaywgaXQgbWF5IG9yIG1h
eSBub3QgYmUgd29ydGggZml4aW5nIC0gc28KK2tlZXAgdGhpcyBpbiBtaW5kIGlmIHlvdSBnZXQg
YSBoZWFwIGNoZWNrZXIgZXJyb3IgaW4gYWRkaXRpb24gdG8gYXNzZXJ0aW9uCitlcnJvcnMuCisK
K1RvIHByb3ZpZGUgYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlLCBzaW1wbHkgc3RyZWFtIGl0IGlu
dG8gdGhlIG1hY3JvIHVzaW5nIHRoZQorYDw8YCBvcGVyYXRvciwgb3IgYSBzZXF1ZW5jZSBvZiBz
dWNoIG9wZXJhdG9ycy4gQW4gZXhhbXBsZToKK2BgYAorQVNTRVJUX0VRKHguc2l6ZSgpLCB5LnNp
emUoKSkgPDwgIlZlY3RvcnMgeCBhbmQgeSBhcmUgb2YgdW5lcXVhbCBsZW5ndGgiOworCitmb3Ig
KGludCBpID0gMDsgaSA8IHguc2l6ZSgpOyArK2kpIHsKKyAgRVhQRUNUX0VRKHhbaV0sIHlbaV0p
IDw8ICJWZWN0b3JzIHggYW5kIHkgZGlmZmVyIGF0IGluZGV4ICIgPDwgaTsKK30KK2BgYAorCitB
bnl0aGluZyB0aGF0IGNhbiBiZSBzdHJlYW1lZCB0byBhbiBgb3N0cmVhbWAgY2FuIGJlIHN0cmVh
bWVkIHRvIGFuIGFzc2VydGlvbgorbWFjcm8tLWluIHBhcnRpY3VsYXIsIEMgc3RyaW5ncyBhbmQg
YHN0cmluZ2Agb2JqZWN0cy4gSWYgYSB3aWRlIHN0cmluZworKGB3Y2hhcl90KmAsIGBUQ0hBUipg
IGluIGBVTklDT0RFYCBtb2RlIG9uIFdpbmRvd3MsIG9yIGBzdGQ6OndzdHJpbmdgKSBpcworc3Ry
ZWFtZWQgdG8gYW4gYXNzZXJ0aW9uLCBpdCB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gVVRGLTggd2hl
biBwcmludGVkLgorCisjIyBCYXNpYyBBc3NlcnRpb25zICMjCisKK1RoZXNlIGFzc2VydGlvbnMg
ZG8gYmFzaWMgdHJ1ZS9mYWxzZSBjb25kaXRpb24gdGVzdGluZy4KKworfCAqKkZhdGFsIGFzc2Vy
dGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwK
K3wgYEFTU0VSVF9UUlVFKGBfY29uZGl0aW9uX2ApYDsgIHwgYEVYUEVDVF9UUlVFKGBfY29uZGl0
aW9uX2ApYDsgICB8IF9jb25kaXRpb25fIGlzIHRydWUgfAorfCBgQVNTRVJUX0ZBTFNFKGBfY29u
ZGl0aW9uX2ApYDsgfCBgRVhQRUNUX0ZBTFNFKGBfY29uZGl0aW9uX2ApYDsgIHwgX2NvbmRpdGlv
bl8gaXMgZmFsc2UgfAorCitSZW1lbWJlciwgd2hlbiB0aGV5IGZhaWwsIGBBU1NFUlRfKmAgeWll
bGRzIGEgZmF0YWwgZmFpbHVyZSBhbmQKK3JldHVybnMgZnJvbSB0aGUgY3VycmVudCBmdW5jdGlv
biwgd2hpbGUgYEVYUEVDVF8qYCB5aWVsZHMgYSBub25mYXRhbAorZmFpbHVyZSwgYWxsb3dpbmcg
dGhlIGZ1bmN0aW9uIHRvIGNvbnRpbnVlIHJ1bm5pbmcuIEluIGVpdGhlciBjYXNlLCBhbgorYXNz
ZXJ0aW9uIGZhaWx1cmUgbWVhbnMgaXRzIGNvbnRhaW5pbmcgdGVzdCBmYWlscy4KKworX0F2YWls
YWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIEJpbmFyeSBDb21wYXJpc29uICMj
CisKK1RoaXMgc2VjdGlvbiBkZXNjcmliZXMgYXNzZXJ0aW9ucyB0aGF0IGNvbXBhcmUgdHdvIHZh
bHVlcy4KKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8
ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3xgQVNTRVJUX0VRKGBfdmFsMV9gLCBgX3ZhbDJfYCk7
YHxgRVhQRUNUX0VRKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YHwgX3ZhbDFfIGA9PWAgX3ZhbDJfIHwK
K3xgQVNTRVJUX05FKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YHxgRVhQRUNUX05FKGBfdmFsMV9gLCBg
X3ZhbDJfYCk7YHwgX3ZhbDFfIGAhPWAgX3ZhbDJfIHwKK3xgQVNTRVJUX0xUKGBfdmFsMV9gLCBg
X3ZhbDJfYCk7YHxgRVhQRUNUX0xUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YHwgX3ZhbDFfIGA8YCBf
dmFsMl8gfAorfGBBU1NFUlRfTEUoYF92YWwxX2AsIGBfdmFsMl9gKTtgfGBFWFBFQ1RfTEUoYF92
YWwxX2AsIGBfdmFsMl9gKTtgfCBfdmFsMV8gYDw9YCBfdmFsMl8gfAorfGBBU1NFUlRfR1QoYF92
YWwxX2AsIGBfdmFsMl9gKTtgfGBFWFBFQ1RfR1QoYF92YWwxX2AsIGBfdmFsMl9gKTtgfCBfdmFs
MV8gYD5gIF92YWwyXyB8Cit8YEFTU0VSVF9HRShgX3ZhbDFfYCwgYF92YWwyX2ApO2B8YEVYUEVD
VF9HRShgX3ZhbDFfYCwgYF92YWwyX2ApO2B8IF92YWwxXyBgPj1gIF92YWwyXyB8CisKK0luIHRo
ZSBldmVudCBvZiBhIGZhaWx1cmUsIEdvb2dsZSBUZXN0IHByaW50cyBib3RoIF92YWwxXyBhbmQg
X3ZhbDJfLgorCitWYWx1ZSBhcmd1bWVudHMgbXVzdCBiZSBjb21wYXJhYmxlIGJ5IHRoZSBhc3Nl
cnRpb24ncyBjb21wYXJpc29uCitvcGVyYXRvciBvciB5b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJy
b3IuICBXZSB1c2VkIHRvIHJlcXVpcmUgdGhlCithcmd1bWVudHMgdG8gc3VwcG9ydCB0aGUgYDw8
YCBvcGVyYXRvciBmb3Igc3RyZWFtaW5nIHRvIGFuIGBvc3RyZWFtYCwKK2J1dCBpdCdzIG5vIGxv
bmdlciBuZWNlc3Nhcnkgc2luY2UgdjEuNi4wIChpZiBgPDxgIGlzIHN1cHBvcnRlZCwgaXQKK3dp
bGwgYmUgY2FsbGVkIHRvIHByaW50IHRoZSBhcmd1bWVudHMgd2hlbiB0aGUgYXNzZXJ0aW9uIGZh
aWxzOworb3RoZXJ3aXNlIEdvb2dsZSBUZXN0IHdpbGwgYXR0ZW1wdCB0byBwcmludCB0aGVtIGlu
IHRoZSBiZXN0IHdheSBpdAorY2FuLiBGb3IgbW9yZSBkZXRhaWxzIGFuZCBob3cgdG8gY3VzdG9t
aXplIHRoZSBwcmludGluZyBvZiB0aGUKK2FyZ3VtZW50cywgc2VlIHRoaXMgR29vZ2xlIE1vY2sg
W3JlY2lwZV0oLi4vLi4vZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3RlYWNoaW5nLWdvb2ds
ZS1tb2NrLWhvdy10by1wcmludC15b3VyLXZhbHVlcykuKS4KKworVGhlc2UgYXNzZXJ0aW9ucyBj
YW4gd29yayB3aXRoIGEgdXNlci1kZWZpbmVkIHR5cGUsIGJ1dCBvbmx5IGlmIHlvdSBkZWZpbmUg
dGhlCitjb3JyZXNwb25kaW5nIGNvbXBhcmlzb24gb3BlcmF0b3IgKGUuZy4gYD09YCwgYDxgLCBl
dGMpLiAgSWYgdGhlIGNvcnJlc3BvbmRpbmcKK29wZXJhdG9yIGlzIGRlZmluZWQsIHByZWZlciB1
c2luZyB0aGUgYEFTU0VSVF8qKClgIG1hY3JvcyBiZWNhdXNlIHRoZXkgd2lsbAorcHJpbnQgb3V0
IG5vdCBvbmx5IHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24sIGJ1dCB0aGUgdHdvIG9wZXJh
bmRzIGFzIHdlbGwuCisKK0FyZ3VtZW50cyBhcmUgYWx3YXlzIGV2YWx1YXRlZCBleGFjdGx5IG9u
Y2UuIFRoZXJlZm9yZSwgaXQncyBPSyBmb3IgdGhlCithcmd1bWVudHMgdG8gaGF2ZSBzaWRlIGVm
ZmVjdHMuIEhvd2V2ZXIsIGFzIHdpdGggYW55IG9yZGluYXJ5IEMvQysrIGZ1bmN0aW9uLAordGhl
IGFyZ3VtZW50cycgZXZhbHVhdGlvbiBvcmRlciBpcyB1bmRlZmluZWQgKGkuZS4gdGhlIGNvbXBp
bGVyIGlzIGZyZWUgdG8KK2Nob29zZSBhbnkgb3JkZXIpIGFuZCB5b3VyIGNvZGUgc2hvdWxkIG5v
dCBkZXBlbmQgb24gYW55IHBhcnRpY3VsYXIgYXJndW1lbnQKK2V2YWx1YXRpb24gb3JkZXIuCisK
K2BBU1NFUlRfRVEoKWAgZG9lcyBwb2ludGVyIGVxdWFsaXR5IG9uIHBvaW50ZXJzLiBJZiB1c2Vk
IG9uIHR3byBDIHN0cmluZ3MsIGl0Cit0ZXN0cyBpZiB0aGV5IGFyZSBpbiB0aGUgc2FtZSBtZW1v
cnkgbG9jYXRpb24sIG5vdCBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgdmFsdWUuCitUaGVyZWZvcmUs
IGlmIHlvdSB3YW50IHRvIGNvbXBhcmUgQyBzdHJpbmdzIChlLmcuIGBjb25zdCBjaGFyKmApIGJ5
IHZhbHVlLCB1c2UKK2BBU1NFUlRfU1RSRVEoKWAgLCB3aGljaCB3aWxsIGJlIGRlc2NyaWJlZCBs
YXRlciBvbi4gSW4gcGFydGljdWxhciwgdG8gYXNzZXJ0Cit0aGF0IGEgQyBzdHJpbmcgaXMgYE5V
TExgLCB1c2UgYEFTU0VSVF9TVFJFUShOVUxMLCBjX3N0cmluZylgIC4gSG93ZXZlciwgdG8KK2Nv
bXBhcmUgdHdvIGBzdHJpbmdgIG9iamVjdHMsIHlvdSBzaG91bGQgdXNlIGBBU1NFUlRfRVFgLgor
CitNYWNyb3MgaW4gdGhpcyBzZWN0aW9uIHdvcmsgd2l0aCBib3RoIG5hcnJvdyBhbmQgd2lkZSBz
dHJpbmcgb2JqZWN0cyAoYHN0cmluZ2AKK2FuZCBgd3N0cmluZ2ApLgorCitfQXZhaWxhYmlsaXR5
XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworX0hpc3RvcmljYWwgbm90ZV86IEJlZm9yZSBGZWJy
dWFyeSAyMDE2IGAqX0VRYCBoYWQgYSBjb252ZW50aW9uIG9mIGNhbGxpbmcgaXQgYXMKK2BBU1NF
UlRfRVEoZXhwZWN0ZWQsIGFjdHVhbClgLCBzbyBsb3RzIG9mIGV4aXN0aW5nIGNvZGUgdXNlcyB0
aGlzIG9yZGVyLgorTm93IGAqX0VRYCB0cmVhdHMgYm90aCBwYXJhbWV0ZXJzIGluIHRoZSBzYW1l
IHdheS4KKworIyMgU3RyaW5nIENvbXBhcmlzb24gIyMKKworVGhlIGFzc2VydGlvbnMgaW4gdGhp
cyBncm91cCBjb21wYXJlIHR3byAqKkMgc3RyaW5ncyoqLiBJZiB5b3Ugd2FudCB0byBjb21wYXJl
Cit0d28gYHN0cmluZ2Agb2JqZWN0cywgdXNlIGBFWFBFQ1RfRVFgLCBgRVhQRUNUX05FYCwgYW5k
IGV0YyBpbnN0ZWFkLgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2Vy
dGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX1NUUkVRKGBfc3RyMV9g
LCBgX3N0cjJfYCk7YCAgICB8IGBFWFBFQ1RfU1RSRVEoYF9zdHIxX2AsIGBfc3RyXzJgKTtgICAg
ICB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUgdGhlIHNhbWUgY29udGVudCB8Cit8IGBBU1NFUlRf
U1RSTkUoYF9zdHIxX2AsIGBfc3RyMl9gKTtgICAgIHwgYEVYUEVDVF9TVFJORShgX3N0cjFfYCwg
YF9zdHIyX2ApO2AgICAgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSBkaWZmZXJlbnQgY29udGVu
dCB8Cit8IGBBU1NFUlRfU1RSQ0FTRUVRKGBfc3RyMV9gLCBgX3N0cjJfYCk7YHwgYEVYUEVDVF9T
VFJDQVNFRVEoYF9zdHIxX2AsIGBfc3RyMl9gKTtgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSB0
aGUgc2FtZSBjb250ZW50LCBpZ25vcmluZyBjYXNlIHwKK3wgYEFTU0VSVF9TVFJDQVNFTkUoYF9z
dHIxX2AsIGBfc3RyMl9gKTtgfCBgRVhQRUNUX1NUUkNBU0VORShgX3N0cjFfYCwgYF9zdHIyX2Ap
O2AgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIGRpZmZlcmVudCBjb250ZW50LCBpZ25vcmluZyBj
YXNlIHwKKworTm90ZSB0aGF0ICJDQVNFIiBpbiBhbiBhc3NlcnRpb24gbmFtZSBtZWFucyB0aGF0
IGNhc2UgaXMgaWdub3JlZC4KKworYCpTVFJFUSpgIGFuZCBgKlNUUk5FKmAgYWxzbyBhY2NlcHQg
d2lkZSBDIHN0cmluZ3MgKGB3Y2hhcl90KmApLiBJZiBhCitjb21wYXJpc29uIG9mIHR3byB3aWRl
IHN0cmluZ3MgZmFpbHMsIHRoZWlyIHZhbHVlcyB3aWxsIGJlIHByaW50ZWQgYXMgVVRGLTgKK25h
cnJvdyBzdHJpbmdzLgorCitBIGBOVUxMYCBwb2ludGVyIGFuZCBhbiBlbXB0eSBzdHJpbmcgYXJl
IGNvbnNpZGVyZWQgX2RpZmZlcmVudF8uCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjLgorCitTZWUgYWxzbzogRm9yIG1vcmUgc3RyaW5nIGNvbXBhcmlzb24gdHJpY2tzIChz
dWJzdHJpbmcsIHByZWZpeCwgc3VmZml4LCBhbmQKK3JlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGlu
ZywgZm9yIGV4YW1wbGUpLCBzZWUgdGhlIFtBZHZhbmNlZCBHb29nbGUgVGVzdCBHdWlkZV0oQWR2
YW5jZWRHdWlkZS5tZCkuCisKKyMgU2ltcGxlIFRlc3RzICMKKworVG8gY3JlYXRlIGEgdGVzdDoK
KyAgMS4gVXNlIHRoZSBgVEVTVCgpYCBtYWNybyB0byBkZWZpbmUgYW5kIG5hbWUgYSB0ZXN0IGZ1
bmN0aW9uLCBUaGVzZSBhcmUgb3JkaW5hcnkgQysrIGZ1bmN0aW9ucyB0aGF0IGRvbid0IHJldHVy
biBhIHZhbHVlLgorICAxLiBJbiB0aGlzIGZ1bmN0aW9uLCBhbG9uZyB3aXRoIGFueSB2YWxpZCBD
Kysgc3RhdGVtZW50cyB5b3Ugd2FudCB0byBpbmNsdWRlLCB1c2UgdGhlIHZhcmlvdXMgR29vZ2xl
IFRlc3QgYXNzZXJ0aW9ucyB0byBjaGVjayB2YWx1ZXMuCisgIDEuIFRoZSB0ZXN0J3MgcmVzdWx0
IGlzIGRldGVybWluZWQgYnkgdGhlIGFzc2VydGlvbnM7IGlmIGFueSBhc3NlcnRpb24gaW4gdGhl
IHRlc3QgZmFpbHMgKGVpdGhlciBmYXRhbGx5IG9yIG5vbi1mYXRhbGx5KSwgb3IgaWYgdGhlIHRl
c3QgY3Jhc2hlcywgdGhlIGVudGlyZSB0ZXN0IGZhaWxzLiBPdGhlcndpc2UsIGl0IHN1Y2NlZWRz
LgorCitgYGAKK1RFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgeworIC4uLiB0ZXN0IGJv
ZHkgLi4uCit9CitgYGAKKworCitgVEVTVCgpYCBhcmd1bWVudHMgZ28gZnJvbSBnZW5lcmFsIHRv
IHNwZWNpZmljLiBUaGUgX2ZpcnN0XyBhcmd1bWVudCBpcyB0aGUKK25hbWUgb2YgdGhlIHRlc3Qg
Y2FzZSwgYW5kIHRoZSBfc2Vjb25kXyBhcmd1bWVudCBpcyB0aGUgdGVzdCdzIG5hbWUgd2l0aGlu
IHRoZQordGVzdCBjYXNlLiBCb3RoIG5hbWVzIG11c3QgYmUgdmFsaWQgQysrIGlkZW50aWZpZXJz
LCBhbmQgdGhleSBzaG91bGQgbm90IGNvbnRhaW4gdW5kZXJzY29yZSAoYF9gKS4gQSB0ZXN0J3Mg
X2Z1bGwgbmFtZV8gY29uc2lzdHMgb2YgaXRzIGNvbnRhaW5pbmcgdGVzdCBjYXNlIGFuZCBpdHMK
K2luZGl2aWR1YWwgbmFtZS4gVGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcyBjYW4gaGF2
ZSB0aGUgc2FtZSBpbmRpdmlkdWFsCituYW1lLgorCitGb3IgZXhhbXBsZSwgbGV0J3MgdGFrZSBh
IHNpbXBsZSBpbnRlZ2VyIGZ1bmN0aW9uOgorYGBgCitpbnQgRmFjdG9yaWFsKGludCBuKTsgLy8g
UmV0dXJucyB0aGUgZmFjdG9yaWFsIG9mIG4KK2BgYAorCitBIHRlc3QgY2FzZSBmb3IgdGhpcyBm
dW5jdGlvbiBtaWdodCBsb29rIGxpa2U6CitgYGAKKy8vIFRlc3RzIGZhY3RvcmlhbCBvZiAwLgor
VEVTVChGYWN0b3JpYWxUZXN0LCBIYW5kbGVzWmVyb0lucHV0KSB7CisgIEVYUEVDVF9FUSgxLCBG
YWN0b3JpYWwoMCkpOworfQorCisvLyBUZXN0cyBmYWN0b3JpYWwgb2YgcG9zaXRpdmUgbnVtYmVy
cy4KK1RFU1QoRmFjdG9yaWFsVGVzdCwgSGFuZGxlc1Bvc2l0aXZlSW5wdXQpIHsKKyAgRVhQRUNU
X0VRKDEsIEZhY3RvcmlhbCgxKSk7CisgIEVYUEVDVF9FUSgyLCBGYWN0b3JpYWwoMikpOworICBF
WFBFQ1RfRVEoNiwgRmFjdG9yaWFsKDMpKTsKKyAgRVhQRUNUX0VRKDQwMzIwLCBGYWN0b3JpYWwo
OCkpOworfQorYGBgCisKK0dvb2dsZSBUZXN0IGdyb3VwcyB0aGUgdGVzdCByZXN1bHRzIGJ5IHRl
c3QgY2FzZXMsIHNvIGxvZ2ljYWxseS1yZWxhdGVkIHRlc3RzCitzaG91bGQgYmUgaW4gdGhlIHNh
bWUgdGVzdCBjYXNlOyBpbiBvdGhlciB3b3JkcywgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZWly
CitgVEVTVCgpYCBzaG91bGQgYmUgdGhlIHNhbWUuIEluIHRoZSBhYm92ZSBleGFtcGxlLCB3ZSBo
YXZlIHR3byB0ZXN0cywKK2BIYW5kbGVzWmVyb0lucHV0YCBhbmQgYEhhbmRsZXNQb3NpdGl2ZUlu
cHV0YCwgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUgdGVzdAorY2FzZSBgRmFjdG9yaWFsVGVzdGAu
CisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIFRlc3QgRml4dHVy
ZXM6IFVzaW5nIHRoZSBTYW1lIERhdGEgQ29uZmlndXJhdGlvbiBmb3IgTXVsdGlwbGUgVGVzdHMg
IworCitJZiB5b3UgZmluZCB5b3Vyc2VsZiB3cml0aW5nIHR3byBvciBtb3JlIHRlc3RzIHRoYXQg
b3BlcmF0ZSBvbiBzaW1pbGFyIGRhdGEsCit5b3UgY2FuIHVzZSBhIF90ZXN0IGZpeHR1cmVfLiBJ
dCBhbGxvd3MgeW91IHRvIHJldXNlIHRoZSBzYW1lIGNvbmZpZ3VyYXRpb24gb2YKK29iamVjdHMg
Zm9yIHNldmVyYWwgZGlmZmVyZW50IHRlc3RzLgorCitUbyBjcmVhdGUgYSBmaXh0dXJlLCBqdXN0
OgorICAxLiBEZXJpdmUgYSBjbGFzcyBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RgIC4gU3RhcnQgaXRz
IGJvZHkgd2l0aCBgcHJvdGVjdGVkOmAgb3IgYHB1YmxpYzpgIGFzIHdlJ2xsIHdhbnQgdG8gYWNj
ZXNzIGZpeHR1cmUgbWVtYmVycyBmcm9tIHN1Yi1jbGFzc2VzLgorICAxLiBJbnNpZGUgdGhlIGNs
YXNzLCBkZWNsYXJlIGFueSBvYmplY3RzIHlvdSBwbGFuIHRvIHVzZS4KKyAgMS4gSWYgbmVjZXNz
YXJ5LCB3cml0ZSBhIGRlZmF1bHQgY29uc3RydWN0b3Igb3IgYFNldFVwKClgIGZ1bmN0aW9uIHRv
IHByZXBhcmUgdGhlIG9iamVjdHMgZm9yIGVhY2ggdGVzdC4gQSBjb21tb24gbWlzdGFrZSBpcyB0
byBzcGVsbCBgU2V0VXAoKWAgYXMgYFNldHVwKClgIHdpdGggYSBzbWFsbCBgdWAgLSBkb24ndCBs
ZXQgdGhhdCBoYXBwZW4gdG8geW91LgorICAxLiBJZiBuZWNlc3NhcnksIHdyaXRlIGEgZGVzdHJ1
Y3RvciBvciBgVGVhckRvd24oKWAgZnVuY3Rpb24gdG8gcmVsZWFzZSBhbnkgcmVzb3VyY2VzIHlv
dSBhbGxvY2F0ZWQgaW4gYFNldFVwKClgIC4gVG8gbGVhcm4gd2hlbiB5b3Ugc2hvdWxkIHVzZSB0
aGUgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBhbmQgd2hlbiB5b3Ugc2hvdWxkIHVzZSBgU2V0VXAo
KS9UZWFyRG93bigpYCwgcmVhZCB0aGlzIFtGQVEgZW50cnldKEZBUS5tZCNzaG91bGQtaS11c2Ut
dGhlLWNvbnN0cnVjdG9yZGVzdHJ1Y3Rvci1vZi10aGUtdGVzdC1maXh0dXJlLW9yLXRoZS1zZXQt
dXB0ZWFyLWRvd24tZnVuY3Rpb24pLgorICAxLiBJZiBuZWVkZWQsIGRlZmluZSBzdWJyb3V0aW5l
cyBmb3IgeW91ciB0ZXN0cyB0byBzaGFyZS4KKworV2hlbiB1c2luZyBhIGZpeHR1cmUsIHVzZSBg
VEVTVF9GKClgIGluc3RlYWQgb2YgYFRFU1QoKWAgYXMgaXQgYWxsb3dzIHlvdSB0bworYWNjZXNz
IG9iamVjdHMgYW5kIHN1YnJvdXRpbmVzIGluIHRoZSB0ZXN0IGZpeHR1cmU6CitgYGAKK1RFU1Rf
Rih0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSB7CisgLi4uIHRlc3QgYm9keSAuLi4KK30KK2Bg
YAorCitMaWtlIGBURVNUKClgLCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIHRlc3QgY2FzZSBu
YW1lLCBidXQgZm9yIGBURVNUX0YoKWAKK3RoaXMgbXVzdCBiZSB0aGUgbmFtZSBvZiB0aGUgdGVz
dCBmaXh0dXJlIGNsYXNzLiBZb3UndmUgcHJvYmFibHkgZ3Vlc3NlZDogYF9GYAoraXMgZm9yIGZp
eHR1cmUuCisKK1VuZm9ydHVuYXRlbHksIHRoZSBDKysgbWFjcm8gc3lzdGVtIGRvZXMgbm90IGFs
bG93IHVzIHRvIGNyZWF0ZSBhIHNpbmdsZSBtYWNybwordGhhdCBjYW4gaGFuZGxlIGJvdGggdHlw
ZXMgb2YgdGVzdHMuIFVzaW5nIHRoZSB3cm9uZyBtYWNybyBjYXVzZXMgYSBjb21waWxlcgorZXJy
b3IuCisKK0Fsc28sIHlvdSBtdXN0IGZpcnN0IGRlZmluZSBhIHRlc3QgZml4dHVyZSBjbGFzcyBi
ZWZvcmUgdXNpbmcgaXQgaW4gYQorYFRFU1RfRigpYCwgb3IgeW91J2xsIGdldCB0aGUgY29tcGls
ZXIgZXJyb3IgImB2aXJ0dWFsIG91dHNpZGUgY2xhc3MKK2RlY2xhcmF0aW9uYCIuCisKK0ZvciBl
YWNoIHRlc3QgZGVmaW5lZCB3aXRoIGBURVNUX0YoKWAsIEdvb2dsZSBUZXN0IHdpbGw6CisgIDEu
IENyZWF0ZSBhIF9mcmVzaF8gdGVzdCBmaXh0dXJlIGF0IHJ1bnRpbWUKKyAgMS4gSW1tZWRpYXRl
bHkgaW5pdGlhbGl6ZSBpdCB2aWEgYFNldFVwKClgICwKKyAgMS4gUnVuIHRoZSB0ZXN0CisgIDEu
IENsZWFuIHVwIGJ5IGNhbGxpbmcgYFRlYXJEb3duKClgCisgIDEuIERlbGV0ZSB0aGUgdGVzdCBm
aXh0dXJlLiAgTm90ZSB0aGF0IGRpZmZlcmVudCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2Ug
aGF2ZSBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIG9iamVjdHMsIGFuZCBHb29nbGUgVGVzdCBhbHdh
eXMgZGVsZXRlcyBhIHRlc3QgZml4dHVyZSBiZWZvcmUgaXQgY3JlYXRlcyB0aGUgbmV4dCBvbmUu
IEdvb2dsZSBUZXN0IGRvZXMgbm90IHJldXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBmb3IgbXVs
dGlwbGUgdGVzdHMuIEFueSBjaGFuZ2VzIG9uZSB0ZXN0IG1ha2VzIHRvIHRoZSBmaXh0dXJlIGRv
IG5vdCBhZmZlY3Qgb3RoZXIgdGVzdHMuCisKK0FzIGFuIGV4YW1wbGUsIGxldCdzIHdyaXRlIHRl
c3RzIGZvciBhIEZJRk8gcXVldWUgY2xhc3MgbmFtZWQgYFF1ZXVlYCwgd2hpY2gKK2hhcyB0aGUg
Zm9sbG93aW5nIGludGVyZmFjZToKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIEU+IC8vIEUgaXMg
dGhlIGVsZW1lbnQgdHlwZS4KK2NsYXNzIFF1ZXVlIHsKKyBwdWJsaWM6CisgIFF1ZXVlKCk7Cisg
IHZvaWQgRW5xdWV1ZShjb25zdCBFJiBlbGVtZW50KTsKKyAgRSogRGVxdWV1ZSgpOyAvLyBSZXR1
cm5zIE5VTEwgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LgorICBzaXplX3Qgc2l6ZSgpIGNvbnN0Owor
ICAuLi4KK307CitgYGAKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MuIEJ5IGNvbnZl
bnRpb24sIHlvdSBzaG91bGQgZ2l2ZSBpdCB0aGUgbmFtZQorYEZvb1Rlc3RgIHdoZXJlIGBGb29g
IGlzIHRoZSBjbGFzcyBiZWluZyB0ZXN0ZWQuCitgYGAKK2NsYXNzIFF1ZXVlVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkg
eworICAgIHExXy5FbnF1ZXVlKDEpOworICAgIHEyXy5FbnF1ZXVlKDIpOworICAgIHEyXy5FbnF1
ZXVlKDMpOworICB9CisKKyAgLy8gdmlydHVhbCB2b2lkIFRlYXJEb3duKCkge30KKworICBRdWV1
ZTxpbnQ+IHEwXzsKKyAgUXVldWU8aW50PiBxMV87CisgIFF1ZXVlPGludD4gcTJfOworfTsKK2Bg
YAorCitJbiB0aGlzIGNhc2UsIGBUZWFyRG93bigpYCBpcyBub3QgbmVlZGVkIHNpbmNlIHdlIGRv
bid0IGhhdmUgdG8gY2xlYW4gdXAgYWZ0ZXIKK2VhY2ggdGVzdCwgb3RoZXIgdGhhbiB3aGF0J3Mg
YWxyZWFkeSBkb25lIGJ5IHRoZSBkZXN0cnVjdG9yLgorCitOb3cgd2UnbGwgd3JpdGUgdGVzdHMg
dXNpbmcgYFRFU1RfRigpYCBhbmQgdGhpcyBmaXh0dXJlLgorYGBgCitURVNUX0YoUXVldWVUZXN0
LCBJc0VtcHR5SW5pdGlhbGx5KSB7CisgIEVYUEVDVF9FUSgwLCBxMF8uc2l6ZSgpKTsKK30KKwor
VEVTVF9GKFF1ZXVlVGVzdCwgRGVxdWV1ZVdvcmtzKSB7CisgIGludCogbiA9IHEwXy5EZXF1ZXVl
KCk7CisgIEVYUEVDVF9FUShOVUxMLCBuKTsKKworICBuID0gcTFfLkRlcXVldWUoKTsKKyAgQVNT
RVJUX1RSVUUobiAhPSBOVUxMKTsKKyAgRVhQRUNUX0VRKDEsICpuKTsKKyAgRVhQRUNUX0VRKDAs
IHExXy5zaXplKCkpOworICBkZWxldGUgbjsKKworICBuID0gcTJfLkRlcXVldWUoKTsKKyAgQVNT
RVJUX1RSVUUobiAhPSBOVUxMKTsKKyAgRVhQRUNUX0VRKDIsICpuKTsKKyAgRVhQRUNUX0VRKDEs
IHEyXy5zaXplKCkpOworICBkZWxldGUgbjsKK30KK2BgYAorCitUaGUgYWJvdmUgdXNlcyBib3Ro
IGBBU1NFUlRfKmAgYW5kIGBFWFBFQ1RfKmAgYXNzZXJ0aW9ucy4gVGhlIHJ1bGUgb2YgdGh1bWIg
aXMKK3RvIHVzZSBgRVhQRUNUXypgIHdoZW4geW91IHdhbnQgdGhlIHRlc3QgdG8gY29udGludWUg
dG8gcmV2ZWFsIG1vcmUgZXJyb3JzCithZnRlciB0aGUgYXNzZXJ0aW9uIGZhaWx1cmUsIGFuZCB1
c2UgYEFTU0VSVF8qYCB3aGVuIGNvbnRpbnVpbmcgYWZ0ZXIgZmFpbHVyZQorZG9lc24ndCBtYWtl
IHNlbnNlLiBGb3IgZXhhbXBsZSwgdGhlIHNlY29uZCBhc3NlcnRpb24gaW4gdGhlIGBEZXF1ZXVl
YCB0ZXN0IGlzCitgQVNTRVJUX1RSVUUobiAhPSBOVUxMKWAsIGFzIHdlIG5lZWQgdG8gZGVyZWZl
cmVuY2UgdGhlIHBvaW50ZXIgYG5gIGxhdGVyLAord2hpY2ggd291bGQgbGVhZCB0byBhIHNlZ2Zh
dWx0IHdoZW4gYG5gIGlzIGBOVUxMYC4KKworV2hlbiB0aGVzZSB0ZXN0cyBydW4sIHRoZSBmb2xs
b3dpbmcgaGFwcGVuczoKKyAgMS4gR29vZ2xlIFRlc3QgY29uc3RydWN0cyBhIGBRdWV1ZVRlc3Rg
IG9iamVjdCAobGV0J3MgY2FsbCBpdCBgdDFgICkuCisgIDEuIGB0MS5TZXRVcCgpYCBpbml0aWFs
aXplcyBgdDFgIC4KKyAgMS4gVGhlIGZpcnN0IHRlc3QgKCBgSXNFbXB0eUluaXRpYWxseWAgKSBy
dW5zIG9uIGB0MWAgLgorICAxLiBgdDEuVGVhckRvd24oKWAgY2xlYW5zIHVwIGFmdGVyIHRoZSB0
ZXN0IGZpbmlzaGVzLgorICAxLiBgdDFgIGlzIGRlc3RydWN0ZWQuCisgIDEuIFRoZSBhYm92ZSBz
dGVwcyBhcmUgcmVwZWF0ZWQgb24gYW5vdGhlciBgUXVldWVUZXN0YCBvYmplY3QsIHRoaXMgdGlt
ZSBydW5uaW5nIHRoZSBgRGVxdWV1ZVdvcmtzYCB0ZXN0LgorCitfQXZhaWxhYmlsaXR5XzogTGlu
dXgsIFdpbmRvd3MsIE1hYy4KKworX05vdGVfOiBHb29nbGUgVGVzdCBhdXRvbWF0aWNhbGx5IHNh
dmVzIGFsbCBfR29vZ2xlIFRlc3RfIGZsYWdzIHdoZW4gYSB0ZXN0CitvYmplY3QgaXMgY29uc3Ry
dWN0ZWQsIGFuZCByZXN0b3JlcyB0aGVtIHdoZW4gaXQgaXMgZGVzdHJ1Y3RlZC4KKworIyBJbnZv
a2luZyB0aGUgVGVzdHMgIworCitgVEVTVCgpYCBhbmQgYFRFU1RfRigpYCBpbXBsaWNpdGx5IHJl
Z2lzdGVyIHRoZWlyIHRlc3RzIHdpdGggR29vZ2xlIFRlc3QuIFNvLCB1bmxpa2Ugd2l0aCBtYW55
IG90aGVyIEMrKyB0ZXN0aW5nIGZyYW1ld29ya3MsIHlvdSBkb24ndCBoYXZlIHRvIHJlLWxpc3Qg
YWxsIHlvdXIgZGVmaW5lZCB0ZXN0cyBpbiBvcmRlciB0byBydW4gdGhlbS4KKworQWZ0ZXIgZGVm
aW5pbmcgeW91ciB0ZXN0cywgeW91IGNhbiBydW4gdGhlbSB3aXRoIGBSVU5fQUxMX1RFU1RTKClg
ICwgd2hpY2ggcmV0dXJucyBgMGAgaWYgYWxsIHRoZSB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3Ig
YDFgIG90aGVyd2lzZS4gTm90ZSB0aGF0IGBSVU5fQUxMX1RFU1RTKClgIHJ1bnMgX2FsbCB0ZXN0
c18gaW4geW91ciBsaW5rIHVuaXQgLS0gdGhleSBjYW4gYmUgZnJvbSBkaWZmZXJlbnQgdGVzdCBj
YXNlcywgb3IgZXZlbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgorCitXaGVuIGludm9rZWQsIHRo
ZSBgUlVOX0FMTF9URVNUUygpYCBtYWNybzoKKyAgMS4gU2F2ZXMgdGhlIHN0YXRlIG9mIGFsbCAg
R29vZ2xlIFRlc3QgZmxhZ3MuCisgIDEuIENyZWF0ZXMgYSB0ZXN0IGZpeHR1cmUgb2JqZWN0IGZv
ciB0aGUgZmlyc3QgdGVzdC4KKyAgMS4gSW5pdGlhbGl6ZXMgaXQgdmlhIGBTZXRVcCgpYC4KKyAg
MS4gUnVucyB0aGUgdGVzdCBvbiB0aGUgZml4dHVyZSBvYmplY3QuCisgIDEuIENsZWFucyB1cCB0
aGUgZml4dHVyZSB2aWEgYFRlYXJEb3duKClgLgorICAxLiBEZWxldGVzIHRoZSBmaXh0dXJlLgor
ICAxLiBSZXN0b3JlcyB0aGUgc3RhdGUgb2YgYWxsIEdvb2dsZSBUZXN0IGZsYWdzLgorICAxLiBS
ZXBlYXRzIHRoZSBhYm92ZSBzdGVwcyBmb3IgdGhlIG5leHQgdGVzdCwgdW50aWwgYWxsIHRlc3Rz
IGhhdmUgcnVuLgorCitJbiBhZGRpdGlvbiwgaWYgdGhlIHRleHQgZml4dHVyZSdzIGNvbnN0cnVj
dG9yIGdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUgaW4KK3N0ZXAgMiwgdGhlcmUgaXMgbm8gcG9p
bnQgZm9yIHN0ZXAgMyAtIDUgYW5kIHRoZXkgYXJlIHRodXMgc2tpcHBlZC4gU2ltaWxhcmx5LAor
aWYgc3RlcCAzIGdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUsIHN0ZXAgNCB3aWxsIGJlIHNraXBw
ZWQuCisKK19JbXBvcnRhbnRfOiBZb3UgbXVzdCBub3QgaWdub3JlIHRoZSByZXR1cm4gdmFsdWUg
b2YgYFJVTl9BTExfVEVTVFMoKWAsIG9yIGBnY2NgCit3aWxsIGdpdmUgeW91IGEgY29tcGlsZXIg
ZXJyb3IuIFRoZSByYXRpb25hbGUgZm9yIHRoaXMgZGVzaWduIGlzIHRoYXQgdGhlCithdXRvbWF0
ZWQgdGVzdGluZyBzZXJ2aWNlIGRldGVybWluZXMgd2hldGhlciBhIHRlc3QgaGFzIHBhc3NlZCBi
YXNlZCBvbiBpdHMKK2V4aXQgY29kZSwgbm90IG9uIGl0cyBzdGRvdXQvc3RkZXJyIG91dHB1dDsg
dGh1cyB5b3VyIGBtYWluKClgIGZ1bmN0aW9uIG11c3QKK3JldHVybiB0aGUgdmFsdWUgb2YgYFJV
Tl9BTExfVEVTVFMoKWAuCisKK0Fsc28sIHlvdSBzaG91bGQgY2FsbCBgUlVOX0FMTF9URVNUUygp
YCBvbmx5ICoqb25jZSoqLiBDYWxsaW5nIGl0IG1vcmUgdGhhbiBvbmNlCitjb25mbGljdHMgd2l0
aCBzb21lIGFkdmFuY2VkIEdvb2dsZSBUZXN0IGZlYXR1cmVzIChlLmcuIHRocmVhZC1zYWZlIGRl
YXRoCit0ZXN0cykgYW5kIHRodXMgaXMgbm90IHN1cHBvcnRlZC4KKworX0F2YWlsYWJpbGl0eV86
IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMgV3JpdGluZyB0aGUgbWFpbigpIEZ1bmN0aW9uICMK
KworWW91IGNhbiBzdGFydCBmcm9tIHRoaXMgYm9pbGVycGxhdGU6CitgYGAKKyNpbmNsdWRlICJ0
aGlzL3BhY2thZ2UvZm9vLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNl
IHsKKworLy8gVGhlIGZpeHR1cmUgZm9yIHRlc3RpbmcgY2xhc3MgRm9vLgorY2xhc3MgRm9vVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLy8gWW91IGNhbiBy
ZW1vdmUgYW55IG9yIGFsbCBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBpZiBpdHMgYm9keQor
ICAvLyBpcyBlbXB0eS4KKworICBGb29UZXN0KCkgeworICAgIC8vIFlvdSBjYW4gZG8gc2V0LXVw
IHdvcmsgZm9yIGVhY2ggdGVzdCBoZXJlLgorICB9CisKKyAgdmlydHVhbCB+Rm9vVGVzdCgpIHsK
KyAgICAvLyBZb3UgY2FuIGRvIGNsZWFuLXVwIHdvcmsgdGhhdCBkb2Vzbid0IHRocm93IGV4Y2Vw
dGlvbnMgaGVyZS4KKyAgfQorCisgIC8vIElmIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3Rv
ciBhcmUgbm90IGVub3VnaCBmb3Igc2V0dGluZyB1cAorICAvLyBhbmQgY2xlYW5pbmcgdXAgZWFj
aCB0ZXN0LCB5b3UgY2FuIGRlZmluZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CisKKyAgdmlydHVh
bCB2b2lkIFNldFVwKCkgeworICAgIC8vIENvZGUgaGVyZSB3aWxsIGJlIGNhbGxlZCBpbW1lZGlh
dGVseSBhZnRlciB0aGUgY29uc3RydWN0b3IgKHJpZ2h0CisgICAgLy8gYmVmb3JlIGVhY2ggdGVz
dCkuCisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgLy8gQ29kZSBoZXJl
IHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIGVhY2ggdGVzdCAocmlnaHQKKyAgICAv
LyBiZWZvcmUgdGhlIGRlc3RydWN0b3IpLgorICB9CisKKyAgLy8gT2JqZWN0cyBkZWNsYXJlZCBo
ZXJlIGNhbiBiZSB1c2VkIGJ5IGFsbCB0ZXN0cyBpbiB0aGUgdGVzdCBjYXNlIGZvciBGb28uCit9
OworCisvLyBUZXN0cyB0aGF0IHRoZSBGb286OkJhcigpIG1ldGhvZCBkb2VzIEFiYy4KK1RFU1Rf
RihGb29UZXN0LCBNZXRob2RCYXJEb2VzQWJjKSB7CisgIGNvbnN0IHN0cmluZyBpbnB1dF9maWxl
cGF0aCA9ICJ0aGlzL3BhY2thZ2UvdGVzdGRhdGEvbXlpbnB1dGZpbGUuZGF0IjsKKyAgY29uc3Qg
c3RyaW5nIG91dHB1dF9maWxlcGF0aCA9ICJ0aGlzL3BhY2thZ2UvdGVzdGRhdGEvbXlvdXRwdXRm
aWxlLmRhdCI7CisgIEZvbyBmOworICBFWFBFQ1RfRVEoMCwgZi5CYXIoaW5wdXRfZmlsZXBhdGgs
IG91dHB1dF9maWxlcGF0aCkpOworfQorCisvLyBUZXN0cyB0aGF0IEZvbyBkb2VzIFh5ei4KK1RF
U1RfRihGb29UZXN0LCBEb2VzWHl6KSB7CisgIC8vIEV4ZXJjaXNlcyB0aGUgWHl6IGZlYXR1cmUg
b2YgRm9vLgorfQorCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg
Kiphcmd2KSB7CisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICBy
ZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQorYGBgCisKK1RoZSBgOjp0ZXN0aW5nOjpJbml0R29v
Z2xlVGVzdCgpYCBmdW5jdGlvbiBwYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IgR29vZ2xlCitU
ZXN0IGZsYWdzLCBhbmQgcmVtb3ZlcyBhbGwgcmVjb2duaXplZCBmbGFncy4gVGhpcyBhbGxvd3Mg
dGhlIHVzZXIgdG8gY29udHJvbCBhCit0ZXN0IHByb2dyYW0ncyBiZWhhdmlvciB2aWEgdmFyaW91
cyBmbGFncywgd2hpY2ggd2UnbGwgY292ZXIgaW4gW0FkdmFuY2VkR3VpZGVdKEFkdmFuY2VkR3Vp
ZGUubWQpLgorWW91IG11c3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGJlZm9yZSBjYWxsaW5nIGBSVU5f
QUxMX1RFU1RTKClgLCBvciB0aGUgZmxhZ3MKK3dvbid0IGJlIHByb3Blcmx5IGluaXRpYWxpemVk
LgorCitPbiBXaW5kb3dzLCBgSW5pdEdvb2dsZVRlc3QoKWAgYWxzbyB3b3JrcyB3aXRoIHdpZGUg
c3RyaW5ncywgc28gaXQgY2FuIGJlIHVzZWQKK2luIHByb2dyYW1zIGNvbXBpbGVkIGluIGBVTklD
T0RFYCBtb2RlIGFzIHdlbGwuCisKK0J1dCBtYXliZSB5b3UgdGhpbmsgdGhhdCB3cml0aW5nIGFs
bCB0aG9zZSBtYWluKCkgZnVuY3Rpb25zIGlzIHRvbyBtdWNoIHdvcms/IFdlIGFncmVlIHdpdGgg
eW91IGNvbXBsZXRlbHkgYW5kIHRoYXQncyB3aHkgR29vZ2xlIFRlc3QgcHJvdmlkZXMgYSBiYXNp
YyBpbXBsZW1lbnRhdGlvbiBvZiBtYWluKCkuIElmIGl0IGZpdHMgeW91ciBuZWVkcywgdGhlbiBq
dXN0IGxpbmsgeW91ciB0ZXN0IHdpdGggZ3Rlc3RcX21haW4gbGlicmFyeSBhbmQgeW91IGFyZSBn
b29kIHRvIGdvLgorCisjIyBJbXBvcnRhbnQgbm90ZSBmb3IgVmlzdWFsIEMrKyB1c2VycyAjIwor
SWYgeW91IHB1dCB5b3VyIHRlc3RzIGludG8gYSBsaWJyYXJ5IGFuZCB5b3VyIGBtYWluKClgIGZ1
bmN0aW9uIGlzIGluIGEgZGlmZmVyZW50IGxpYnJhcnkgb3IgaW4geW91ciAuZXhlIGZpbGUsIHRo
b3NlIHRlc3RzIHdpbGwgbm90IHJ1bi4gVGhlIHJlYXNvbiBpcyBhIFtidWddKGh0dHBzOi8vY29u
bmVjdC5taWNyb3NvZnQuY29tL2ZlZWRiYWNrL3ZpZXdmZWVkYmFjay5hc3B4P0ZlZWRiYWNrSUQ9
MjQ0NDEwJnNpdGVpZD0yMTApIGluIFZpc3VhbCBDKysuIFdoZW4geW91IGRlZmluZSB5b3VyIHRl
c3RzLCBHb29nbGUgVGVzdCBjcmVhdGVzIGNlcnRhaW4gc3RhdGljIG9iamVjdHMgdG8gcmVnaXN0
ZXIgdGhlbS4gVGhlc2Ugb2JqZWN0cyBhcmUgbm90IHJlZmVyZW5jZWQgZnJvbSBlbHNld2hlcmUg
YnV0IHRoZWlyIGNvbnN0cnVjdG9ycyBhcmUgc3RpbGwgc3VwcG9zZWQgdG8gcnVuLiBXaGVuIFZp
c3VhbCBDKysgbGlua2VyIHNlZXMgdGhhdCBub3RoaW5nIGluIHRoZSBsaWJyYXJ5IGlzIHJlZmVy
ZW5jZWQgZnJvbSBvdGhlciBwbGFjZXMgaXQgdGhyb3dzIHRoZSBsaWJyYXJ5IG91dC4gWW91IGhh
dmUgdG8gcmVmZXJlbmNlIHlvdXIgbGlicmFyeSB3aXRoIHRlc3RzIGZyb20geW91ciBtYWluIHBy
b2dyYW0gdG8ga2VlcCB0aGUgbGlua2VyIGZyb20gZGlzY2FyZGluZyBpdC4gSGVyZSBpcyBob3cg
dG8gZG8gaXQuIFNvbWV3aGVyZSBpbiB5b3VyIGxpYnJhcnkgY29kZSBkZWNsYXJlIGEgZnVuY3Rp
b246CitgYGAKK19fZGVjbHNwZWMoZGxsZXhwb3J0KSBpbnQgUHVsbEluTXlMaWJyYXJ5KCkgeyBy
ZXR1cm4gMDsgfQorYGBgCitJZiB5b3UgcHV0IHlvdXIgdGVzdHMgaW4gYSBzdGF0aWMgbGlicmFy
eSAobm90IERMTCkgdGhlbiBgX19kZWNsc3BlYyhkbGxleHBvcnQpYCBpcyBub3QgcmVxdWlyZWQu
IE5vdywgaW4geW91ciBtYWluIHByb2dyYW0sIHdyaXRlIGEgY29kZSB0aGF0IGludm9rZXMgdGhh
dCBmdW5jdGlvbjoKK2BgYAoraW50IFB1bGxJbk15TGlicmFyeSgpOworc3RhdGljIGludCBkdW1t
eSA9IFB1bGxJbk15TGlicmFyeSgpOworYGBgCitUaGlzIHdpbGwga2VlcCB5b3VyIHRlc3RzIHJl
ZmVyZW5jZWQgYW5kIHdpbGwgbWFrZSB0aGVtIHJlZ2lzdGVyIHRoZW1zZWx2ZXMgYXQgc3RhcnR1
cC4KKworSW4gYWRkaXRpb24sIGlmIHlvdSBkZWZpbmUgeW91ciB0ZXN0cyBpbiBhIHN0YXRpYyBs
aWJyYXJ5LCBhZGQgYC9PUFQ6Tk9SRUZgIHRvIHlvdXIgbWFpbiBwcm9ncmFtIGxpbmtlciBvcHRp
b25zLiBJZiB5b3UgdXNlIE1TVkMrKyBJREUsIGdvIHRvIHlvdXIgLmV4ZSBwcm9qZWN0IHByb3Bl
cnRpZXMvQ29uZmlndXJhdGlvbiBQcm9wZXJ0aWVzL0xpbmtlci9PcHRpbWl6YXRpb24gYW5kIHNl
dCBSZWZlcmVuY2VzIHNldHRpbmcgdG8gYEtlZXAgVW5yZWZlcmVuY2VkIERhdGEgKC9PUFQ6Tk9S
RUYpYC4gVGhpcyB3aWxsIGtlZXAgVmlzdWFsIEMrKyBsaW5rZXIgZnJvbSBkaXNjYXJkaW5nIGlu
ZGl2aWR1YWwgc3ltYm9scyBnZW5lcmF0ZWQgYnkgeW91ciB0ZXN0cyBmcm9tIHRoZSBmaW5hbCBl
eGVjdXRhYmxlLgorCitUaGVyZSBpcyBvbmUgbW9yZSBwaXRmYWxsLCB0aG91Z2guIElmIHlvdSB1
c2UgR29vZ2xlIFRlc3QgYXMgYSBzdGF0aWMgbGlicmFyeSAodGhhdCdzIGhvdyBpdCBpcyBkZWZp
bmVkIGluIGd0ZXN0LnZjcHJvaikgeW91ciB0ZXN0cyBtdXN0IGFsc28gcmVzaWRlIGluIGEgc3Rh
dGljIGxpYnJhcnkuIElmIHlvdSBoYXZlIHRvIGhhdmUgdGhlbSBpbiBhIERMTCwgeW91IF9tdXN0
XyBjaGFuZ2UgR29vZ2xlIFRlc3QgdG8gYnVpbGQgaW50byBhIERMTCBhcyB3ZWxsLiBPdGhlcndp
c2UgeW91ciB0ZXN0cyB3aWxsIG5vdCBydW4gY29ycmVjdGx5IG9yIHdpbGwgbm90IHJ1biBhdCBh
bGwuIFRoZSBnZW5lcmFsIGNvbmNsdXNpb24gaGVyZSBpczogbWFrZSB5b3VyIGxpZmUgZWFzaWVy
IC0gZG8gbm90IHdyaXRlIHlvdXIgdGVzdHMgaW4gbGlicmFyaWVzIQorCisjIFdoZXJlIHRvIEdv
IGZyb20gSGVyZSAjCisKK0NvbmdyYXR1bGF0aW9ucyEgWW91J3ZlIGxlYXJuZWQgdGhlIEdvb2ds
ZSBUZXN0IGJhc2ljcy4gWW91IGNhbiBzdGFydCB3cml0aW5nCithbmQgcnVubmluZyBHb29nbGUg
VGVzdCB0ZXN0cywgcmVhZCBzb21lIFtzYW1wbGVzXShTYW1wbGVzLm1kKSwgb3IgY29udGludWUg
d2l0aAorW0FkdmFuY2VkR3VpZGVdKEFkdmFuY2VkR3VpZGUubWQpLCB3aGljaCBkZXNjcmliZXMg
bWFueSBtb3JlIHVzZWZ1bCBHb29nbGUgVGVzdCBmZWF0dXJlcy4KKworIyBLbm93biBMaW1pdGF0
aW9ucyAjCisKK0dvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHRvIGJlIHRocmVhZC1zYWZlLiAgVGhl
IGltcGxlbWVudGF0aW9uIGlzCit0aHJlYWQtc2FmZSBvbiBzeXN0ZW1zIHdoZXJlIHRoZSBgcHRo
cmVhZHNgIGxpYnJhcnkgaXMgYXZhaWxhYmxlLiAgSXQKK2lzIGN1cnJlbnRseSBfdW5zYWZlXyB0
byB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBmcm9tIHR3byB0aHJlYWRzCitjb25jdXJyZW50
bHkgb24gb3RoZXIgc3lzdGVtcyAoZS5nLiBXaW5kb3dzKS4gIEluIG1vc3QgdGVzdHMgdGhpcyBp
cworbm90IGFuIGlzc3VlIGFzIHVzdWFsbHkgdGhlIGFzc2VydGlvbnMgYXJlIGRvbmUgaW4gdGhl
IG1haW4gdGhyZWFkLiBJZgoreW91IHdhbnQgdG8gaGVscCwgeW91IGNhbiB2b2x1bnRlZXIgdG8g
aW1wbGVtZW50IHRoZSBuZWNlc3NhcnkKK3N5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGluIGBn
dGVzdC1wb3J0LmhgIGZvciB5b3VyIHBsYXRmb3JtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvZG9jcy9QdW1wTWFudWFsLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
ZG9jcy9QdW1wTWFudWFsLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxODRmMTUzY2EyZWNhZDdjNjVjYjU4YzI3
ZmIzMWJkNzIzNzVmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9kb2NzL1B1bXBNYW51YWwubWQKQEAgLTAsMCArMSwxNzcgQEAKKworCis8Yj5QPC9iPnVtcCBp
cyA8Yj5VPC9iPnNlZnVsIGZvciA8Yj5NPC9iPmV0YSA8Yj5QPC9iPnJvZ3JhbW1pbmcuCisKKyMg
VGhlIFByb2JsZW0gIworCitUZW1wbGF0ZSBhbmQgbWFjcm8gbGlicmFyaWVzIG9mdGVuIG5lZWQg
dG8gZGVmaW5lIG1hbnkgY2xhc3NlcywKK2Z1bmN0aW9ucywgb3IgbWFjcm9zIHRoYXQgdmFyeSBv
bmx5IChvciBhbG1vc3Qgb25seSkgaW4gdGhlIG51bWJlciBvZgorYXJndW1lbnRzIHRoZXkgdGFr
ZS4gSXQncyBhIGxvdCBvZiByZXBldGl0aXZlLCBtZWNoYW5pY2FsLCBhbmQKK2Vycm9yLXByb25l
IHdvcmsuCisKK1ZhcmlhZGljIHRlbXBsYXRlcyBhbmQgdmFyaWFkaWMgbWFjcm9zIGNhbiBhbGxl
dmlhdGUgdGhlIHByb2JsZW0uCitIb3dldmVyLCB3aGlsZSBib3RoIGFyZSBiZWluZyBjb25zaWRl
cmVkIGJ5IHRoZSBDKysgY29tbWl0dGVlLCBuZWl0aGVyCitpcyBpbiB0aGUgc3RhbmRhcmQgeWV0
IG9yIHdpZGVseSBzdXBwb3J0ZWQgYnkgY29tcGlsZXJzLiAgVGh1cyB0aGV5CithcmUgb2Z0ZW4g
bm90IGEgZ29vZCBjaG9pY2UsIGVzcGVjaWFsbHkgd2hlbiB5b3VyIGNvZGUgbmVlZHMgdG8gYmUK
K3BvcnRhYmxlLiBBbmQgdGhlaXIgY2FwYWJpbGl0aWVzIGFyZSBzdGlsbCBsaW1pdGVkLgorCitB
cyBhIHJlc3VsdCwgYXV0aG9ycyBvZiBzdWNoIGxpYnJhcmllcyBvZnRlbiBoYXZlIHRvIHdyaXRl
IHNjcmlwdHMgdG8KK2dlbmVyYXRlIHRoZWlyIGltcGxlbWVudGF0aW9uLiBIb3dldmVyLCBvdXIg
ZXhwZXJpZW5jZSBpcyB0aGF0IGl0J3MKK3RlZGlvdXMgdG8gd3JpdGUgc3VjaCBzY3JpcHRzLCB3
aGljaCB0ZW5kIHRvIHJlZmxlY3QgdGhlIHN0cnVjdHVyZSBvZgordGhlIGdlbmVyYXRlZCBjb2Rl
IHBvb3JseSBhbmQgYXJlIG9mdGVuIGhhcmQgdG8gcmVhZCBhbmQgZWRpdC4gRm9yCitleGFtcGxl
LCBhIHNtYWxsIGNoYW5nZSBuZWVkZWQgaW4gdGhlIGdlbmVyYXRlZCBjb2RlIG1heSByZXF1aXJl
IHNvbWUKK25vbi1pbnR1aXRpdmUsIG5vbi10cml2aWFsIGNoYW5nZXMgaW4gdGhlIHNjcmlwdC4g
VGhpcyBpcyBlc3BlY2lhbGx5CitwYWluZnVsIHdoZW4gZXhwZXJpbWVudGluZyB3aXRoIHRoZSBj
b2RlLgorCisjIE91ciBTb2x1dGlvbiAjCisKK1B1bXAgKGZvciBQdW1wIGlzIFVzZWZ1bCBmb3Ig
TWV0YSBQcm9ncmFtbWluZywgUHJldHR5IFVzZWZ1bCBmb3IgTWV0YQorUHJvZ3JhbW1pbmcsIG9y
IFByYWN0aWNhbCBVdGlsaXR5IGZvciBNZXRhIFByb2dyYW1taW5nLCB3aGljaGV2ZXIgeW91Citw
cmVmZXIpIGlzIGEgc2ltcGxlIG1ldGEtcHJvZ3JhbW1pbmcgdG9vbCBmb3IgQysrLiBUaGUgaWRl
YSBpcyB0aGF0IGEKK3Byb2dyYW1tZXIgd3JpdGVzIGEgYGZvby5wdW1wYCBmaWxlIHdoaWNoIGNv
bnRhaW5zIEMrKyBjb2RlIHBsdXMgbWV0YQorY29kZSB0aGF0IG1hbmlwdWxhdGVzIHRoZSBDKysg
Y29kZS4gVGhlIG1ldGEgY29kZSBjYW4gaGFuZGxlCitpdGVyYXRpb25zIG92ZXIgYSByYW5nZSwg
bmVzdGVkIGl0ZXJhdGlvbnMsIGxvY2FsIG1ldGEgdmFyaWFibGUKK2RlZmluaXRpb25zLCBzaW1w
bGUgYXJpdGhtZXRpYywgYW5kIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zLiBZb3UgY2FuCit2aWV3
IGl0IGFzIGEgc21hbGwgRG9tYWluLVNwZWNpZmljIExhbmd1YWdlLiBUaGUgbWV0YSBsYW5ndWFn
ZSBpcworZGVzaWduZWQgdG8gYmUgbm9uLWludHJ1c2l2ZSAocy50LiBpdCB3b24ndCBjb25mdXNl
IEVtYWNzJyBDKysgbW9kZSwKK2ZvciBleGFtcGxlKSBhbmQgY29uY2lzZSwgbWFraW5nIFB1bXAg
Y29kZSBpbnR1aXRpdmUgYW5kIGVhc3kgdG8KK21haW50YWluLgorCisjIyBIaWdobGlnaHRzICMj
CisKKyAgKiBUaGUgaW1wbGVtZW50YXRpb24gaXMgaW4gYSBzaW5nbGUgUHl0aG9uIHNjcmlwdCBh
bmQgdGh1cyB1bHRyYSBwb3J0YWJsZTogbm8gYnVpbGQgb3IgaW5zdGFsbGF0aW9uIGlzIG5lZWRl
ZCBhbmQgaXQgd29ya3MgY3Jvc3MgcGxhdGZvcm1zLgorICAqIFB1bXAgdHJpZXMgdG8gYmUgc21h
cnQgd2l0aCByZXNwZWN0IHRvIFtHb29nbGUncyBzdHlsZSBndWlkZV0oaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wL2dvb2dsZS1zdHlsZWd1aWRlLyk6IGl0IGJyZWFrcyBsb25nIGxpbmVzIChlYXN5
IHRvIGhhdmUgd2hlbiB0aGV5IGFyZSBnZW5lcmF0ZWQpIGF0IGFjY2VwdGFibGUgcGxhY2VzIHRv
IGZpdCB3aXRoaW4gODAgY29sdW1ucyBhbmQgaW5kZW50IHRoZSBjb250aW51YXRpb24gbGluZXMg
Y29ycmVjdGx5LgorICAqIFRoZSBmb3JtYXQgaXMgaHVtYW4tcmVhZGFibGUgYW5kIG1vcmUgY29u
Y2lzZSB0aGFuIFhNTC4KKyAgKiBUaGUgZm9ybWF0IHdvcmtzIHJlbGF0aXZlbHkgd2VsbCB3aXRo
IEVtYWNzJyBDKysgbW9kZS4KKworIyMgRXhhbXBsZXMgIyMKKworVGhlIGZvbGxvd2luZyBQdW1w
IGNvZGUgKHdoZXJlIG1ldGEga2V5d29yZHMgc3RhcnQgd2l0aCBgJGAsIGBbW2AgYW5kIGBdXWAg
YXJlIG1ldGEgYnJhY2tldHMsIGFuZCBgJCRgIHN0YXJ0cyBhIG1ldGEgY29tbWVudCB0aGF0IGVu
ZHMgd2l0aCB0aGUgbGluZSk6CisKK2BgYAorJHZhciBuID0gMyAgICAgJCQgRGVmaW5lcyBhIG1l
dGEgdmFyaWFibGUgbi4KKyRyYW5nZSBpIDAuLm4gICQkIERlY2xhcmVzIHRoZSByYW5nZSBvZiBt
ZXRhIGl0ZXJhdG9yIGkgKGluY2x1c2l2ZSkuCiskZm9yIGkgW1sKKyAgICAgICAgICAgICAgICQk
IE1ldGEgbG9vcC4KKy8vIEZvbyRpIGRvZXMgYmxhaCBmb3IgJGktYXJ5IHByZWRpY2F0ZXMuCisk
cmFuZ2UgaiAxLi5pCit0ZW1wbGF0ZSA8c2l6ZV90IE4gJGZvciBqIFtbLCB0eXBlbmFtZSBBJGpd
XT4KK2NsYXNzIEZvbyRpIHsKKyRpZiBpID09IDAgW1sKKyAgYmxhaCBhOworXV0gJGVsaWYgaSA8
PSAyIFtbCisgIGJsYWggYjsKK11dICRlbHNlIFtbCisgIGJsYWggYzsKK11dCit9OworCitdXQor
YGBgCisKK3dpbGwgYmUgdHJhbnNsYXRlZCBieSB0aGUgUHVtcCBjb21waWxlciB0bzoKKworYGBg
CisvLyBGb28wIGRvZXMgYmxhaCBmb3IgMC1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXpl
X3QgTj4KK2NsYXNzIEZvbzAgeworICBibGFoIGE7Cit9OworCisvLyBGb28xIGRvZXMgYmxhaCBm
b3IgMS1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTE+Citj
bGFzcyBGb28xIHsKKyAgYmxhaCBiOworfTsKKworLy8gRm9vMiBkb2VzIGJsYWggZm9yIDItYXJ5
IHByZWRpY2F0ZXMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBB
Mj4KK2NsYXNzIEZvbzIgeworICBibGFoIGI7Cit9OworCisvLyBGb28zIGRvZXMgYmxhaCBmb3Ig
My1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5cGVu
YW1lIEEyLCB0eXBlbmFtZSBBMz4KK2NsYXNzIEZvbzMgeworICBibGFoIGM7Cit9OworYGBgCisK
K0luIGFub3RoZXIgZXhhbXBsZSwKKworYGBgCiskcmFuZ2UgaSAxLi5uCitGdW5jKCRmb3IgaSAr
IFtbYSRpXV0pOworJCQgVGhlIHRleHQgYmV0d2VlbiBpIGFuZCBbWyBpcyB0aGUgc2VwYXJhdG9y
IGJldHdlZW4gaXRlcmF0aW9ucy4KK2BgYAorCit3aWxsIGdlbmVyYXRlIG9uZSBvZiB0aGUgZm9s
bG93aW5nIGxpbmVzICh3aXRob3V0IHRoZSBjb21tZW50cyksIGRlcGVuZGluZyBvbiB0aGUgdmFs
dWUgb2YgYG5gOgorCitgYGAKK0Z1bmMoKTsgICAgICAgICAgICAgIC8vIElmIG4gaXMgMC4KK0Z1
bmMoYTEpOyAgICAgICAgICAgIC8vIElmIG4gaXMgMS4KK0Z1bmMoYTEgKyBhMik7ICAgICAgIC8v
IElmIG4gaXMgMi4KK0Z1bmMoYTEgKyBhMiArIGEzKTsgIC8vIElmIG4gaXMgMy4KKy8vIEFuZCBz
byBvbi4uLgorYGBgCisKKyMjIENvbnN0cnVjdHMgIyMKKworV2Ugc3VwcG9ydCB0aGUgZm9sbG93
aW5nIG1ldGEgcHJvZ3JhbW1pbmcgY29uc3RydWN0czoKKworfCBgJHZhciBpZCA9IGV4cGAgfCBE
ZWZpbmVzIGEgbmFtZWQgY29uc3RhbnQgdmFsdWUuIGAkaWRgIGlzIHZhbGlkIHV0aWwgdGhlIGVu
ZCBvZiB0aGUgY3VycmVudCBtZXRhIGxleGljYWwgYmxvY2suIHwKK3w6LS0tLS0tLS0tLS0tLS0t
LXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGAkcmFuZ2UgaWQg
ZXhwLi5leHBgIHwgU2V0cyB0aGUgcmFuZ2Ugb2YgYW4gaXRlcmF0aW9uIHZhcmlhYmxlLCB3aGlj
aCBjYW4gYmUgcmV1c2VkIGluIG11bHRpcGxlIGxvb3BzIGxhdGVyLiAgICAgICAgICB8Cit8IGAk
Zm9yIGlkIHNlcCBbWyBjb2RlIF1dYCB8IEl0ZXJhdGlvbi4gVGhlIHJhbmdlIG9mIGBpZGAgbXVz
dCBoYXZlIGJlZW4gZGVmaW5lZCBlYXJsaWVyLiBgJGlkYCBpcyB2YWxpZCBpbiBgY29kZWAuICAg
ICAgICAgfAorfCBgJCgkKWAgICAgICAgICAgfCBHZW5lcmF0ZXMgYSBzaW5nbGUgYCRgIGNoYXJh
Y3Rlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKK3wgYCRpZGAgICAgICAgICAgIHwgVmFsdWUgb2YgdGhlIG5hbWVkIGNvbnN0
YW50IG9yIGl0ZXJhdGlvbiB2YXJpYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8Cit8IGAkKGV4cClgICAgICAgICB8IFZhbHVlIG9mIHRoZSBleHByZXNz
aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorfCBgJGlmIGV4cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNoYCB8
IENvbmRpdGlvbmFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgW1sgY29kZSBdXWAg
ICAgfCBNZXRhIGxleGljYWwgYmxvY2suICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYGNwcF9jb2Rl
YCAgICAgIHwgUmF3IEMrKyBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGAkJCBj
b21tZW50YCAgICB8IE1ldGEgY29tbWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCisq
Kk5vdGU6KiogVG8gZ2l2ZSB0aGUgdXNlciBzb21lIGZyZWVkb20gaW4gZm9ybWF0dGluZyB0aGUg
UHVtcCBzb3VyY2UKK2NvZGUsIFB1bXAgaWdub3JlcyBhIG5ldy1saW5lIGNoYXJhY3RlciBpZiBp
dCdzIHJpZ2h0IGFmdGVyIGAkZm9yIGZvb2AKK29yIG5leHQgdG8gYFtbYCBvciBgXV1gLiBXaXRo
b3V0IHRoaXMgcnVsZSB5b3UnbGwgb2Z0ZW4gYmUgZm9yY2VkIHRvIHdyaXRlCit2ZXJ5IGxvbmcg
bGluZXMgdG8gZ2V0IHRoZSBkZXNpcmVkIG91dHB1dC4gVGhlcmVmb3JlIHNvbWV0aW1lcyB5b3Ug
bWF5CituZWVkIHRvIGluc2VydCBhbiBleHRyYSBuZXctbGluZSBpbiBzdWNoIHBsYWNlcyBmb3Ig
YSBuZXctbGluZSB0byBzaG93Cit1cCBpbiB5b3VyIG91dHB1dC4KKworIyMgR3JhbW1hciAjIwor
CitgYGAKK2NvZGUgOjo9IGF0b21pY19jb2RlKgorYXRvbWljX2NvZGUgOjo9ICR2YXIgaWQgPSBl
eHAKKyAgICB8ICR2YXIgaWQgPSBbWyBjb2RlIF1dCisgICAgfCAkcmFuZ2UgaWQgZXhwLi5leHAK
KyAgICB8ICRmb3IgaWQgc2VwIFtbIGNvZGUgXV0KKyAgICB8ICQoJCkKKyAgICB8ICRpZAorICAg
IHwgJChleHApCisgICAgfCAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2gKKyAgICB8IFtb
IGNvZGUgXV0KKyAgICB8IGNwcF9jb2RlCitzZXAgOjo9IGNwcF9jb2RlIHwgZW1wdHlfc3RyaW5n
CitlbHNlX2JyYW5jaCA6Oj0gJGVsc2UgW1sgY29kZSBdXQorICAgIHwgJGVsaWYgZXhwIFtbIGNv
ZGUgXV0gZWxzZV9icmFuY2gKKyAgICB8IGVtcHR5X3N0cmluZworZXhwIDo6PSBzaW1wbGVfZXhw
cmVzc2lvbl9pbl9QeXRob25fc3ludGF4CitgYGAKKworIyMgQ29kZSAjIworCitZb3UgY2FuIGZp
bmQgdGhlIHNvdXJjZSBjb2RlIG9mIFB1bXAgaW4gW3NjcmlwdHMvcHVtcC5weV0oLi4vc2NyaXB0
cy9wdW1wLnB5KS4gSXQgaXMgc3RpbGwKK3ZlcnkgdW5wb2xpc2hlZCBhbmQgbGFja3MgYXV0b21h
dGVkIHRlc3RzLCBhbHRob3VnaCBpdCBoYXMgYmVlbgorc3VjY2Vzc2Z1bGx5IHVzZWQgbWFueSB0
aW1lcy4gSWYgeW91IGZpbmQgYSBjaGFuY2UgdG8gdXNlIGl0IGluIHlvdXIKK3Byb2plY3QsIHBs
ZWFzZSBsZXQgdXMga25vdyB3aGF0IHlvdSB0aGluayEgIFdlIGFsc28gd2VsY29tZSBoZWxwIG9u
CitpbXByb3ZpbmcgUHVtcC4KKworIyMgUmVhbCBFeGFtcGxlcyAjIworCitZb3UgY2FuIGZpbmQg
cmVhbC13b3JsZCBhcHBsaWNhdGlvbnMgb2YgUHVtcCBpbiBbR29vZ2xlIFRlc3RdKGh0dHA6Ly93
d3cuZ29vZ2xlLmNvbS9jb2Rlc2VhcmNoP3E9ZmlsZSUzQVwucHVtcCUyNCtwYWNrYWdlJTNBaHR0
cCUzQSUyRiUyRmdvb2dsZXRlc3RcLmdvb2dsZWNvZGVcLmNvbSkgYW5kIFtHb29nbGUgTW9ja10o
aHR0cDovL3d3dy5nb29nbGUuY29tL2NvZGVzZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3BhY2th
Z2UlM0FodHRwJTNBJTJGJTJGZ29vZ2xlbW9ja1wuZ29vZ2xlY29kZVwuY29tKS4gIFRoZSBzb3Vy
Y2UgZmlsZSBgZm9vLmgucHVtcGAgZ2VuZXJhdGVzIGBmb28uaGAuCisKKyMjIFRpcHMgIyMKKwor
ICAqIElmIGEgbWV0YSB2YXJpYWJsZSBpcyBmb2xsb3dlZCBieSBhIGxldHRlciBvciBkaWdpdCwg
eW91IGNhbiBzZXBhcmF0ZSB0aGVtIHVzaW5nIGBbW11dYCwgd2hpY2ggaW5zZXJ0cyBhbiBlbXB0
eSBzdHJpbmcuIEZvciBleGFtcGxlIGBGb28kaltbXV1IZWxwZXJgIGdlbmVyYXRlIGBGb28xSGVs
cGVyYCB3aGVuIGBqYCBpcyAxLgorICAqIFRvIGF2b2lkIGV4dHJhLWxvbmcgUHVtcCBzb3VyY2Ug
bGluZXMsIHlvdSBjYW4gYnJlYWsgYSBsaW5lIGFueXdoZXJlIHlvdSB3YW50IGJ5IGluc2VydGlu
ZyBgW1tdXWAgZm9sbG93ZWQgYnkgYSBuZXcgbGluZS4gU2luY2UgYW55IG5ldy1saW5lIGNoYXJh
Y3RlciBuZXh0IHRvIGBbW2Agb3IgYF1dYCBpcyBpZ25vcmVkLCB0aGUgZ2VuZXJhdGVkIGNvZGUg
d29uJ3QgY29udGFpbiB0aGlzIG5ldyBsaW5lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvZG9jcy9TYW1wbGVzLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9T
YW1wbGVzLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyMWQyMDA1NjczNTQ1N2Y2ZjQ5YWVjYzYxMjE5ZGFkMjI2
MTJiZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1Nh
bXBsZXMubWQKQEAgLTAsMCArMSwxNCBAQAorSWYgeW91J3JlIGxpa2UgdXMsIHlvdSdkIGxpa2Ug
dG8gbG9vayBhdCBzb21lIEdvb2dsZSBUZXN0IHNhbXBsZSBjb2RlLiAgVGhlCitbc2FtcGxlcyBm
b2xkZXJdKC4uL3NhbXBsZXMpIGhhcyBhIG51bWJlciBvZiB3ZWxsLWNvbW1lbnRlZCBzYW1wbGVz
IHNob3dpbmcgaG93IHRvIHVzZSBhCit2YXJpZXR5IG9mIEdvb2dsZSBUZXN0IGZlYXR1cmVzLgor
CisgICogW1NhbXBsZSAjMV0oLi4vc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjKSBzaG93cyB0
aGUgYmFzaWMgc3RlcHMgb2YgdXNpbmcgR29vZ2xlIFRlc3QgdG8gdGVzdCBDKysgZnVuY3Rpb25z
LgorICAqIFtTYW1wbGUgIzJdKC4uL3NhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYykgc2hvd3Mg
YSBtb3JlIGNvbXBsZXggdW5pdCB0ZXN0IGZvciBhIGNsYXNzIHdpdGggbXVsdGlwbGUgbWVtYmVy
IGZ1bmN0aW9ucy4KKyAgKiBbU2FtcGxlICMzXSguLi9zYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3Qu
Y2MpIHVzZXMgYSB0ZXN0IGZpeHR1cmUuCisgICogW1NhbXBsZSAjNF0oLi4vc2FtcGxlcy9zYW1w
bGU0X3VuaXR0ZXN0LmNjKSBpcyBhbm90aGVyIGJhc2ljIGV4YW1wbGUgb2YgdXNpbmcgR29vZ2xl
IFRlc3QuCisgICogW1NhbXBsZSAjNV0oLi4vc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjKSB0
ZWFjaGVzIGhvdyB0byByZXVzZSBhIHRlc3QgZml4dHVyZSBpbiBtdWx0aXBsZSB0ZXN0IGNhc2Vz
IGJ5IGRlcml2aW5nIHN1Yi1maXh0dXJlcyBmcm9tIGl0LgorICAqIFtTYW1wbGUgIzZdKC4uL3Nh
bXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYykgZGVtb25zdHJhdGVzIHR5cGUtcGFyYW1ldGVyaXpl
ZCB0ZXN0cy4KKyAgKiBbU2FtcGxlICM3XSguLi9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2Mp
IHRlYWNoZXMgdGhlIGJhc2ljcyBvZiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorICAqIFtT
YW1wbGUgIzhdKC4uL3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYykgc2hvd3MgdXNpbmcgYENv
bWJpbmUoKWAgaW4gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKyAgKiBbU2FtcGxlICM5XSgu
Li9zYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MpIHNob3dzIHVzZSBvZiB0aGUgbGlzdGVuZXIg
QVBJIHRvIG1vZGlmeSBHb29nbGUgVGVzdCdzIGNvbnNvbGUgb3V0cHV0IGFuZCB0aGUgdXNlIG9m
IGl0cyByZWZsZWN0aW9uIEFQSSB0byBpbnNwZWN0IHRlc3QgcmVzdWx0cy4KKyAgKiBbU2FtcGxl
ICMxMF0oLi4vc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYykgc2hvd3MgdXNlIG9mIHRoZSBs
aXN0ZW5lciBBUEkgdG8gaW1wbGVtZW50IGEgcHJpbWl0aXZlIG1lbW9yeSBsZWFrIGNoZWNrZXIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzVfQWR2YW5jZWRH
dWlkZS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfNV9BZHZhbmNlZEd1aWRl
Lm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM0ZTE5YzI2ZmRmZjIxOWE1ZDgzOTU5Zjc1ZDMxNjE4OTUxMGIwNDUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzVfQWR2
YW5jZWRHdWlkZS5tZApAQCAtMCwwICsxLDIwOTYgQEAKKworCitOb3cgdGhhdCB5b3UgaGF2ZSBy
ZWFkIFtQcmltZXJdKFYxXzVfUHJpbWVyLm1kKSBhbmQgbGVhcm5lZCBob3cgdG8gd3JpdGUgdGVz
dHMKK3VzaW5nIEdvb2dsZSBUZXN0LCBpdCdzIHRpbWUgdG8gbGVhcm4gc29tZSBuZXcgdHJpY2tz
LiBUaGlzIGRvY3VtZW50Cit3aWxsIHNob3cgeW91IG1vcmUgYXNzZXJ0aW9ucyBhcyB3ZWxsIGFz
IGhvdyB0byBjb25zdHJ1Y3QgY29tcGxleAorZmFpbHVyZSBtZXNzYWdlcywgcHJvcGFnYXRlIGZh
dGFsIGZhaWx1cmVzLCByZXVzZSBhbmQgc3BlZWQgdXAgeW91cgordGVzdCBmaXh0dXJlcywgYW5k
IHVzZSB2YXJpb3VzIGZsYWdzIHdpdGggeW91ciB0ZXN0cy4KKworIyBNb3JlIEFzc2VydGlvbnMg
IworCitUaGlzIHNlY3Rpb24gY292ZXJzIHNvbWUgbGVzcyBmcmVxdWVudGx5IHVzZWQsIGJ1dCBz
dGlsbCBzaWduaWZpY2FudCwKK2Fzc2VydGlvbnMuCisKKyMjIEV4cGxpY2l0IFN1Y2Nlc3MgYW5k
IEZhaWx1cmUgIyMKKworVGhlc2UgdGhyZWUgYXNzZXJ0aW9ucyBkbyBub3QgYWN0dWFsbHkgdGVz
dCBhIHZhbHVlIG9yIGV4cHJlc3Npb24uIEluc3RlYWQsCit0aGV5IGdlbmVyYXRlIGEgc3VjY2Vz
cyBvciBmYWlsdXJlIGRpcmVjdGx5LiBMaWtlIHRoZSBtYWNyb3MgdGhhdCBhY3R1YWxseQorcGVy
Zm9ybSBhIHRlc3QsIHlvdSBtYXkgc3RyZWFtIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSBpbnRv
IHRoZSB0aGVtLgorCit8IGBTVUNDRUVEKCk7YCB8Cit8Oi0tLS0tLS0tLS0tLS18CisKK0dlbmVy
YXRlcyBhIHN1Y2Nlc3MuIFRoaXMgZG9lcyBOT1QgbWFrZSB0aGUgb3ZlcmFsbCB0ZXN0IHN1Y2Nl
ZWQuIEEgdGVzdCBpcworY29uc2lkZXJlZCBzdWNjZXNzZnVsIG9ubHkgaWYgbm9uZSBvZiBpdHMg
YXNzZXJ0aW9ucyBmYWlsIGR1cmluZyBpdHMgZXhlY3V0aW9uLgorCitOb3RlOiBgU1VDQ0VFRCgp
YCBpcyBwdXJlbHkgZG9jdW1lbnRhcnkgYW5kIGN1cnJlbnRseSBkb2Vzbid0IGdlbmVyYXRlIGFu
eQordXNlci12aXNpYmxlIG91dHB1dC4gSG93ZXZlciwgd2UgbWF5IGFkZCBgU1VDQ0VFRCgpYCBt
ZXNzYWdlcyB0byBHb29nbGUgVGVzdCdzCitvdXRwdXQgaW4gdGhlIGZ1dHVyZS4KKworfCBgRkFJ
TCgpO2AgIHwgYEFERF9GQUlMVVJFKCk7YCB8Cit8Oi0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0t
LS0tLXwKKworYEZBSUwqYCBnZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlIHdoaWxlIGBBRERfRkFJ
TFVSRSpgIGdlbmVyYXRlcyBhIG5vbmZhdGFsCitmYWlsdXJlLiBUaGVzZSBhcmUgdXNlZnVsIHdo
ZW4gY29udHJvbCBmbG93LCByYXRoZXIgdGhhbiBhIEJvb2xlYW4gZXhwcmVzc2lvbiwKK2RldGVy
ZW1pbmVzIHRoZSB0ZXN0J3Mgc3VjY2VzcyBvciBmYWlsdXJlLiBGb3IgZXhhbXBsZSwgeW91IG1p
Z2h0IHdhbnQgdG8gd3JpdGUKK3NvbWV0aGluZyBsaWtlOgorCitgYGAKK3N3aXRjaChleHByZXNz
aW9uKSB7CisgIGNhc2UgMTogLi4uIHNvbWUgY2hlY2tzIC4uLgorICBjYXNlIDI6IC4uLiBzb21l
IG90aGVyIGNoZWNrcworICAuLi4KKyAgZGVmYXVsdDogRkFJTCgpIDw8ICJXZSBzaG91bGRuJ3Qg
Z2V0IGhlcmUuIjsKK30KK2BgYAorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1h
Yy4KKworIyMgRXhjZXB0aW9uIEFzc2VydGlvbnMgIyMKKworVGhlc2UgYXJlIGZvciB2ZXJpZnlp
bmcgdGhhdCBhIHBpZWNlIG9mIGNvZGUgdGhyb3dzIChvciBkb2VzIG5vdAordGhyb3cpIGFuIGV4
Y2VwdGlvbiBvZiB0aGUgZ2l2ZW4gdHlwZToKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipO
b25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9U
SFJPVyhgX3N0YXRlbWVudF8sIF9leGNlcHRpb25cX3R5cGVfYCk7YCAgfCBgRVhQRUNUX1RIUk9X
KGBfc3RhdGVtZW50XywgX2V4Y2VwdGlvblxfdHlwZV9gKTtgICB8IF9zdGF0ZW1lbnRfIHRocm93
cyBhbiBleGNlcHRpb24gb2YgdGhlIGdpdmVuIHR5cGUgIHwKK3wgYEFTU0VSVF9BTllfVEhST1co
YF9zdGF0ZW1lbnRfYCk7YCAgICAgICAgICAgICAgICB8IGBFWFBFQ1RfQU5ZX1RIUk9XKGBfc3Rh
dGVtZW50X2ApO2AgICAgICAgICAgICAgICAgfCBfc3RhdGVtZW50XyB0aHJvd3MgYW4gZXhjZXB0
aW9uIG9mIGFueSB0eXBlICAgICAgICB8Cit8IGBBU1NFUlRfTk9fVEhST1coYF9zdGF0ZW1lbnRf
YCk7YCAgICAgICAgICAgICAgICAgfCBgRVhQRUNUX05PX1RIUk9XKGBfc3RhdGVtZW50X2ApO2Ag
ICAgICAgICAgICAgICAgIHwgX3N0YXRlbWVudF8gZG9lc24ndCB0aHJvdyBhbnkgZXhjZXB0aW9u
ICAgICAgICAgICAgfAorCitFeGFtcGxlczoKKworYGBgCitBU1NFUlRfVEhST1coRm9vKDUpLCBi
YXJfZXhjZXB0aW9uKTsKKworRVhQRUNUX05PX1RIUk9XKHsKKyAgaW50IG4gPSA1OworICBCYXIo
Jm4pOworfSk7CitgYGAKKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWM7IHNp
bmNlIHZlcnNpb24gMS4xLjAuCisKKyMjIFByZWRpY2F0ZSBBc3NlcnRpb25zIGZvciBCZXR0ZXIg
RXJyb3IgTWVzc2FnZXMgIyMKKworRXZlbiB0aG91Z2ggR29vZ2xlIFRlc3QgaGFzIGEgcmljaCBz
ZXQgb2YgYXNzZXJ0aW9ucywgdGhleSBjYW4gbmV2ZXIgYmUKK2NvbXBsZXRlLCBhcyBpdCdzIGlt
cG9zc2libGUgKG5vciBhIGdvb2QgaWRlYSkgdG8gYW50aWNpcGF0ZSBhbGwgdGhlIHNjZW5hcmlv
cworYSB1c2VyIG1pZ2h0IHJ1biBpbnRvLiBUaGVyZWZvcmUsIHNvbWV0aW1lcyBhIHVzZXIgaGFz
IHRvIHVzZSBgRVhQRUNUX1RSVUUoKWAKK3RvIGNoZWNrIGEgY29tcGxleCBleHByZXNzaW9uLCBm
b3IgbGFjayBvZiBhIGJldHRlciBtYWNyby4gVGhpcyBoYXMgdGhlIHByb2JsZW0KK29mIG5vdCBz
aG93aW5nIHlvdSB0aGUgdmFsdWVzIG9mIHRoZSBwYXJ0cyBvZiB0aGUgZXhwcmVzc2lvbiwgbWFr
aW5nIGl0IGhhcmQgdG8KK3VuZGVyc3RhbmQgd2hhdCB3ZW50IHdyb25nLiBBcyBhIHdvcmthcm91
bmQsIHNvbWUgdXNlcnMgY2hvb3NlIHRvIGNvbnN0cnVjdCB0aGUKK2ZhaWx1cmUgbWVzc2FnZSBi
eSB0aGVtc2VsdmVzLCBzdHJlYW1pbmcgaXQgaW50byBgRVhQRUNUX1RSVUUoKWAuIEhvd2V2ZXIs
IHRoaXMKK2lzIGF3a3dhcmQgZXNwZWNpYWxseSB3aGVuIHRoZSBleHByZXNzaW9uIGhhcyBzaWRl
LWVmZmVjdHMgb3IgaXMgZXhwZW5zaXZlIHRvCitldmFsdWF0ZS4KKworR29vZ2xlIFRlc3QgZ2l2
ZXMgeW91IHRocmVlIGRpZmZlcmVudCBvcHRpb25zIHRvIHNvbHZlIHRoaXMgcHJvYmxlbToKKwor
IyMjIFVzaW5nIGFuIEV4aXN0aW5nIEJvb2xlYW4gRnVuY3Rpb24gIyMjCisKK0lmIHlvdSBhbHJl
YWR5IGhhdmUgYSBmdW5jdGlvbiBvciBhIGZ1bmN0b3IgdGhhdCByZXR1cm5zIGBib29sYCAob3Ig
YSB0eXBlCit0aGF0IGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBgYm9vbGApLCB5b3Ug
Y2FuIHVzZSBpdCBpbiBhIF9wcmVkaWNhdGUKK2Fzc2VydGlvbl8gdG8gZ2V0IHRoZSBmdW5jdGlv
biBhcmd1bWVudHMgcHJpbnRlZCBmb3IgZnJlZToKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwg
KipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0t
LS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VS
VF9QUkVEMShgX3ByZWQxLCB2YWwxX2ApO2AgICAgICAgfCBgRVhQRUNUX1BSRUQxKGBfcHJlZDEs
IHZhbDFfYCk7YCB8IF9wcmVkMSh2YWwxKV8gcmV0dXJucyB0cnVlIHwKK3wgYEFTU0VSVF9QUkVE
MihgX3ByZWQyLCB2YWwxLCB2YWwyX2ApO2AgfCBgRVhQRUNUX1BSRUQyKGBfcHJlZDIsIHZhbDEs
IHZhbDJfYCk7YCB8ICBfcHJlZDIodmFsMSwgdmFsMilfIHJldHVybnMgdHJ1ZSB8Cit8ICAuLi4g
ICAgICAgICAgICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgIHwgLi4uICAgICAgICAgIHwK
KworSW4gdGhlIGFib3ZlLCBfcHJlZG5fIGlzIGFuIF9uXy1hcnkgcHJlZGljYXRlIGZ1bmN0aW9u
IG9yIGZ1bmN0b3IsIHdoZXJlCitfdmFsMV8sIF92YWwyXywgLi4uLCBhbmQgX3ZhbG5fIGFyZSBp
dHMgYXJndW1lbnRzLiBUaGUgYXNzZXJ0aW9uIHN1Y2NlZWRzCitpZiB0aGUgcHJlZGljYXRlIHJl
dHVybnMgYHRydWVgIHdoZW4gYXBwbGllZCB0byB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBhbmQgZmFp
bHMKK290aGVyd2lzZS4gV2hlbiB0aGUgYXNzZXJ0aW9uIGZhaWxzLCBpdCBwcmludHMgdGhlIHZh
bHVlIG9mIGVhY2ggYXJndW1lbnQuIEluCitlaXRoZXIgY2FzZSwgdGhlIGFyZ3VtZW50cyBhcmUg
ZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4KKworSGVyZSdzIGFuIGV4YW1wbGUuIEdpdmVuCisKK2Bg
YAorLy8gUmV0dXJucyB0cnVlIGlmZiBtIGFuZCBuIGhhdmUgbm8gY29tbW9uIGRpdmlzb3JzIGV4
Y2VwdCAxLgorYm9vbCBNdXR1YWxseVByaW1lKGludCBtLCBpbnQgbikgeyAuLi4gfQorY29uc3Qg
aW50IGEgPSAzOworY29uc3QgaW50IGIgPSA0OworY29uc3QgaW50IGMgPSAxMDsKK2BgYAorCit0
aGUgYXNzZXJ0aW9uIGBFWFBFQ1RfUFJFRDIoTXV0dWFsbHlQcmltZSwgYSwgYik7YCB3aWxsIHN1
Y2NlZWQsIHdoaWxlIHRoZQorYXNzZXJ0aW9uIGBFWFBFQ1RfUFJFRDIoTXV0dWFsbHlQcmltZSwg
YiwgYyk7YCB3aWxsIGZhaWwgd2l0aCB0aGUgbWVzc2FnZQorCis8cHJlPgorIU11dHVhbGx5UHJp
bWUoYiwgYykgaXMgZmFsc2UsIHdoZXJlPGJyPgorYiBpcyA0PGJyPgorYyBpcyAxMDxicj4KKzwv
cHJlPgorCisqKk5vdGVzOioqCisKKyAgMS4gSWYgeW91IHNlZSBhIGNvbXBpbGVyIGVycm9yICJu
byBtYXRjaGluZyBmdW5jdGlvbiB0byBjYWxsIiB3aGVuIHVzaW5nIGBBU1NFUlRfUFJFRCpgIG9y
IGBFWFBFQ1RfUFJFRCpgLCBwbGVhc2Ugc2VlIFt0aGlzXShWMV81X0ZBUS5tZCN0aGUtY29tcGls
ZXItY29tcGxhaW5zLWFib3V0LXVuZGVmaW5lZC1yZWZlcmVuY2VzLXRvLXNvbWUtc3RhdGljLWNv
bnN0LW1lbWJlci12YXJpYWJsZXMtYnV0LWktZGlkLWRlZmluZS10aGVtLWluLXRoZS1jbGFzcy1i
b2R5LXdoYXRzLXdyb25nKSBmb3IgaG93IHRvIHJlc29sdmUgaXQuCisgIDEuIEN1cnJlbnRseSB3
ZSBvbmx5IHByb3ZpZGUgcHJlZGljYXRlIGFzc2VydGlvbnMgb2YgYXJpdHkgPD0gNS4gSWYgeW91
IG5lZWQgYSBoaWdoZXItYXJpdHkgYXNzZXJ0aW9uLCBsZXQgdXMga25vdy4KKworX0F2YWlsYWJp
bGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMKKworIyMjIFVzaW5nIGEgRnVuY3Rpb24gVGhhdCBS
ZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCAjIyMKKworV2hpbGUgYEVYUEVDVF9QUkVEKigpYCBh
bmQgZnJpZW5kcyBhcmUgaGFuZHkgZm9yIGEgcXVpY2sgam9iLCB0aGUKK3N5bnRheCBpcyBub3Qg
c2F0aXNmYWN0b3J5OiB5b3UgaGF2ZSB0byB1c2UgZGlmZmVyZW50IG1hY3JvcyBmb3IKK2RpZmZl
cmVudCBhcml0aWVzLCBhbmQgaXQgZmVlbHMgbW9yZSBsaWtlIExpc3AgdGhhbiBDKysuICBUaGUK
K2A6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdGAgY2xhc3Mgc29sdmVzIHRoaXMgcHJvYmxlbS4K
KworQW4gYEFzc2VydGlvblJlc3VsdGAgb2JqZWN0IHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBh
biBhc3NlcnRpb24KKyh3aGV0aGVyIGl0J3MgYSBzdWNjZXNzIG9yIGEgZmFpbHVyZSwgYW5kIGFu
IGFzc29jaWF0ZWQgbWVzc2FnZSkuICBZb3UKK2NhbiBjcmVhdGUgYW4gYEFzc2VydGlvblJlc3Vs
dGAgdXNpbmcgb25lIG9mIHRoZXNlIGZhY3RvcnkKK2Z1bmN0aW9uczoKKworYGBgCituYW1lc3Bh
Y2UgdGVzdGluZyB7CisKKy8vIFJldHVybnMgYW4gQXNzZXJ0aW9uUmVzdWx0IG9iamVjdCB0byBp
bmRpY2F0ZSB0aGF0IGFuIGFzc2VydGlvbiBoYXMKKy8vIHN1Y2NlZWRlZC4KK0Fzc2VydGlvblJl
c3VsdCBBc3NlcnRpb25TdWNjZXNzKCk7CisKKy8vIFJldHVybnMgYW4gQXNzZXJ0aW9uUmVzdWx0
IG9iamVjdCB0byBpbmRpY2F0ZSB0aGF0IGFuIGFzc2VydGlvbiBoYXMKKy8vIGZhaWxlZC4KK0Fz
c2VydGlvblJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKCk7CisKK30KK2BgYAorCitZb3UgY2FuIHRo
ZW4gdXNlIHRoZSBgPDxgIG9wZXJhdG9yIHRvIHN0cmVhbSBtZXNzYWdlcyB0byB0aGUKK2BBc3Nl
cnRpb25SZXN1bHRgIG9iamVjdC4KKworVG8gcHJvdmlkZSBtb3JlIHJlYWRhYmxlIG1lc3NhZ2Vz
IGluIEJvb2xlYW4gYXNzZXJ0aW9ucworKGUuZy4gYEVYUEVDVF9UUlVFKClgKSwgd3JpdGUgYSBw
cmVkaWNhdGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zCitgQXNzZXJ0aW9uUmVzdWx0YCBpbnN0ZWFk
IG9mIGBib29sYC4gRm9yIGV4YW1wbGUsIGlmIHlvdSBkZWZpbmUKK2BJc0V2ZW4oKWAgYXM6CisK
K2BgYAorOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgSXNFdmVuKGludCBuKSB7CisgIGlmICgo
biAlIDIpID09IDApCisgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwor
ICBlbHNlCisgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG4gPDwg
IiBpcyBvZGQiOworfQorYGBgCisKK2luc3RlYWQgb2Y6CisKK2BgYAorYm9vbCBJc0V2ZW4oaW50
IG4pIHsKKyAgcmV0dXJuIChuICUgMikgPT0gMDsKK30KK2BgYAorCit0aGUgZmFpbGVkIGFzc2Vy
dGlvbiBgRVhQRUNUX1RSVUUoSXNFdmVuKEZpYig0KSkpYCB3aWxsIHByaW50OgorCis8cHJlPgor
VmFsdWUgb2Y6ICFJc0V2ZW4oRmliKDQpKTxicj4KK0FjdHVhbDogZmFsc2UgKCozIGlzIG9kZCop
PGJyPgorRXhwZWN0ZWQ6IHRydWU8YnI+Cis8L3ByZT4KKworaW5zdGVhZCBvZiBhIG1vcmUgb3Bh
cXVlCisKKzxwcmU+CitWYWx1ZSBvZjogIUlzRXZlbihGaWIoNCkpPGJyPgorQWN0dWFsOiBmYWxz
ZTxicj4KK0V4cGVjdGVkOiB0cnVlPGJyPgorPC9wcmU+CisKK0lmIHlvdSB3YW50IGluZm9ybWF0
aXZlIG1lc3NhZ2VzIGluIGBFWFBFQ1RfRkFMU0VgIGFuZCBgQVNTRVJUX0ZBTFNFYAorYXMgd2Vs
bCwgYW5kIGFyZSBmaW5lIHdpdGggbWFraW5nIHRoZSBwcmVkaWNhdGUgc2xvd2VyIGluIHRoZSBz
dWNjZXNzCitjYXNlLCB5b3UgY2FuIHN1cHBseSBhIHN1Y2Nlc3MgbWVzc2FnZToKKworYGBgCis6
OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBJc0V2ZW4oaW50IG4pIHsKKyAgaWYgKChuICUgMikg
PT0gMCkKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCkgPDwgbiA8PCAi
IGlzIGV2ZW4iOworICBlbHNlCisgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVy
ZSgpIDw8IG4gPDwgIiBpcyBvZGQiOworfQorYGBgCisKK1RoZW4gdGhlIHN0YXRlbWVudCBgRVhQ
RUNUX0ZBTFNFKElzRXZlbihGaWIoNikpKWAgd2lsbCBwcmludAorCis8cHJlPgorVmFsdWUgb2Y6
ICFJc0V2ZW4oRmliKDYpKTxicj4KK0FjdHVhbDogdHJ1ZSAoOCBpcyBldmVuKTxicj4KK0V4cGVj
dGVkOiBmYWxzZTxicj4KKzwvcHJlPgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3Ms
IE1hYzsgc2luY2UgdmVyc2lvbiAxLjQuMS4KKworIyMjIFVzaW5nIGEgUHJlZGljYXRlLUZvcm1h
dHRlciAjIyMKKworSWYgeW91IGZpbmQgdGhlIGRlZmF1bHQgbWVzc2FnZSBnZW5lcmF0ZWQgYnkg
YChBU1NFUlR8RVhQRUNUKV9QUkVEKmAgYW5kCitgKEFTU0VSVHxFWFBFQ1QpXyhUUlVFfEZBTFNF
KWAgdW5zYXRpc2ZhY3RvcnksIG9yIHNvbWUgYXJndW1lbnRzIHRvIHlvdXIKK3ByZWRpY2F0ZSBk
byBub3Qgc3VwcG9ydCBzdHJlYW1pbmcgdG8gYG9zdHJlYW1gLCB5b3UgY2FuIGluc3RlYWQgdXNl
IHRoZQorZm9sbG93aW5nIF9wcmVkaWNhdGUtZm9ybWF0dGVyIGFzc2VydGlvbnNfIHRvIF9mdWxs
eV8gY3VzdG9taXplIGhvdyB0aGUKK21lc3NhZ2UgaXMgZm9ybWF0dGVkOgorCit8ICoqRmF0YWwg
YXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6
LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tfAorfCBgQVNTRVJUX1BSRURfRk9STUFUMShgX3ByZWRcX2Zvcm1hdDEsIHZhbDFfYCk7YCAg
ICAgICAgfCBgRVhQRUNUX1BSRURfRk9STUFUMShgX3ByZWRcX2Zvcm1hdDEsIHZhbDFfYCk7IHwg
X3ByZWRcX2Zvcm1hdDEodmFsMSlfIGlzIHN1Y2Nlc3NmdWwgfAorfCBgQVNTRVJUX1BSRURfRk9S
TUFUMihgX3ByZWRcX2Zvcm1hdDIsIHZhbDEsIHZhbDJfYCk7YCB8IGBFWFBFQ1RfUFJFRF9GT1JN
QVQyKGBfcHJlZFxfZm9ybWF0MiwgdmFsMSwgdmFsMl9gKTtgIHwgX3ByZWRcX2Zvcm1hdDIodmFs
MSwgdmFsMilfIGlzIHN1Y2Nlc3NmdWwgfAorfCBgLi4uYCAgICAgICAgICAgICAgIHwgYC4uLmAg
ICAgICAgICAgICAgICAgICB8IGAuLi5gICAgICAgICB8CisKK1RoZSBkaWZmZXJlbmNlIGJldHdl
ZW4gdGhpcyBhbmQgdGhlIHByZXZpb3VzIHR3byBncm91cHMgb2YgbWFjcm9zIGlzIHRoYXQgaW5z
dGVhZCBvZgorYSBwcmVkaWNhdGUsIGAoQVNTRVJUfEVYUEVDVClfUFJFRF9GT1JNQVQqYCB0YWtl
IGEgX3ByZWRpY2F0ZS1mb3JtYXR0ZXJfCisoX3ByZWRcX2Zvcm1hdG5fKSwgd2hpY2ggaXMgYSBm
dW5jdGlvbiBvciBmdW5jdG9yIHdpdGggdGhlIHNpZ25hdHVyZToKKworYDo6dGVzdGluZzo6QXNz
ZXJ0aW9uUmVzdWx0IFByZWRpY2F0ZUZvcm1hdHRlcm4oY29uc3QgY2hhciogYF9leHByMV9gLCBj
b25zdCBjaGFyKiBgX2V4cHIyX2AsIC4uLiBjb25zdCBjaGFyKiBgX2V4cHJuX2AsIFQxIGBfdmFs
MV9gLCBUMiBgX3ZhbDJfYCwgLi4uIFRuIGBfdmFsbl9gKTtgCisKK3doZXJlIF92YWwxXywgX3Zh
bDJfLCAuLi4sIGFuZCBfdmFsbl8gYXJlIHRoZSB2YWx1ZXMgb2YgdGhlIHByZWRpY2F0ZQorYXJn
dW1lbnRzLCBhbmQgX2V4cHIxXywgX2V4cHIyXywgLi4uLCBhbmQgX2V4cHJuXyBhcmUgdGhlIGNv
cnJlc3BvbmRpbmcKK2V4cHJlc3Npb25zIGFzIHRoZXkgYXBwZWFyIGluIHRoZSBzb3VyY2UgY29k
ZS4gVGhlIHR5cGVzIGBUMWAsIGBUMmAsIC4uLiwgYW5kCitgVG5gIGNhbiBiZSBlaXRoZXIgdmFs
dWUgdHlwZXMgb3IgcmVmZXJlbmNlIHR5cGVzLiBGb3IgZXhhbXBsZSwgaWYgYW4KK2FyZ3VtZW50
IGhhcyB0eXBlIGBGb29gLCB5b3UgY2FuIGRlY2xhcmUgaXQgYXMgZWl0aGVyIGBGb29gIG9yIGBj
b25zdCBGb28mYCwKK3doaWNoZXZlciBpcyBhcHByb3ByaWF0ZS4KKworQSBwcmVkaWNhdGUtZm9y
bWF0dGVyIHJldHVybnMgYSBgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHRgIG9iamVjdCB0byBp
bmRpY2F0ZQord2hldGhlciB0aGUgYXNzZXJ0aW9uIGhhcyBzdWNjZWVkZWQgb3Igbm90LiBUaGUg
b25seSB3YXkgdG8gY3JlYXRlIHN1Y2ggYW4KK29iamVjdCBpcyB0byBjYWxsIG9uZSBvZiB0aGVz
ZSBmYWN0b3J5IGZ1bmN0aW9uczoKKworQXMgYW4gZXhhbXBsZSwgbGV0J3MgaW1wcm92ZSB0aGUg
ZmFpbHVyZSBtZXNzYWdlIGluIHRoZSBwcmV2aW91cyBleGFtcGxlLCB3aGljaCB1c2VzIGBFWFBF
Q1RfUFJFRDIoKWA6CisKK2BgYAorLy8gUmV0dXJucyB0aGUgc21hbGxlc3QgcHJpbWUgY29tbW9u
IGRpdmlzb3Igb2YgbSBhbmQgbiwKKy8vIG9yIDEgd2hlbiBtIGFuZCBuIGFyZSBtdXR1YWxseSBw
cmltZS4KK2ludCBTbWFsbGVzdFByaW1lQ29tbW9uRGl2aXNvcihpbnQgbSwgaW50IG4pIHsgLi4u
IH0KKworLy8gQSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZvciBhc3NlcnRpbmcgdGhhdCB0d28gaW50
ZWdlcnMgYXJlIG11dHVhbGx5IHByaW1lLgorOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgQXNz
ZXJ0TXV0dWFsbHlQcmltZShjb25zdCBjaGFyKiBtX2V4cHIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5fZXhwciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuKSB7CisgIGlmIChNdXR1
YWxseVByaW1lKG0sIG4pKQorICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3Mo
KTsKKworICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IG1f
ZXhwciA8PCAiIGFuZCAiIDw8IG5fZXhwciA8PCAiICgiIDw8IG0gPDwgIiBhbmQgIiA8PCBuCisg
ICAgICA8PCAiKSBhcmUgbm90IG11dHVhbGx5IHByaW1lLCAiIDw8ICJhcyB0aGV5IGhhdmUgYSBj
b21tb24gZGl2aXNvciAiCisgICAgICA8PCBTbWFsbGVzdFByaW1lQ29tbW9uRGl2aXNvcihtLCBu
KTsKK30KK2BgYAorCitXaXRoIHRoaXMgcHJlZGljYXRlLWZvcm1hdHRlciwgd2UgY2FuIHVzZQor
CitgYGAKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoQXNzZXJ0TXV0dWFsbHlQcmltZSwgYiwgYyk7Citg
YGAKKwordG8gZ2VuZXJhdGUgdGhlIG1lc3NhZ2UKKworPHByZT4KK2IgYW5kIGMgKDQgYW5kIDEw
KSBhcmUgbm90IG11dHVhbGx5IHByaW1lLCBhcyB0aGV5IGhhdmUgYSBjb21tb24gZGl2aXNvciAy
Ljxicj4KKzwvcHJlPgorCitBcyB5b3UgbWF5IGhhdmUgcmVhbGl6ZWQsIG1hbnkgb2YgdGhlIGFz
c2VydGlvbnMgd2UgaW50cm9kdWNlZCBlYXJsaWVyIGFyZQorc3BlY2lhbCBjYXNlcyBvZiBgKEVY
UEVDVHxBU1NFUlQpX1BSRURfRk9STUFUKmAuIEluIGZhY3QsIG1vc3Qgb2YgdGhlbSBhcmUKK2lu
ZGVlZCBkZWZpbmVkIHVzaW5nIGAoRVhQRUNUfEFTU0VSVClfUFJFRF9GT1JNQVQqYC4KKworX0F2
YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKworIyMgRmxvYXRpbmctUG9pbnQg
Q29tcGFyaXNvbiAjIworCitDb21wYXJpbmcgZmxvYXRpbmctcG9pbnQgbnVtYmVycyBpcyB0cmlj
a3kuIER1ZSB0byByb3VuZC1vZmYgZXJyb3JzLCBpdCBpcwordmVyeSB1bmxpa2VseSB0aGF0IHR3
byBmbG9hdGluZy1wb2ludHMgd2lsbCBtYXRjaCBleGFjdGx5LiBUaGVyZWZvcmUsCitgQVNTRVJU
X0VRYCAncyBuYWl2ZSBjb21wYXJpc29uIHVzdWFsbHkgZG9lc24ndCB3b3JrLiBBbmQgc2luY2Ug
ZmxvYXRpbmctcG9pbnRzCitjYW4gaGF2ZSBhIHdpZGUgdmFsdWUgcmFuZ2UsIG5vIHNpbmdsZSBm
aXhlZCBlcnJvciBib3VuZCB3b3Jrcy4gSXQncyBiZXR0ZXIgdG8KK2NvbXBhcmUgYnkgYSBmaXhl
ZCByZWxhdGl2ZSBlcnJvciBib3VuZCwgZXhjZXB0IGZvciB2YWx1ZXMgY2xvc2UgdG8gMCBkdWUg
dG8KK3RoZSBsb3NzIG9mIHByZWNpc2lvbiB0aGVyZS4KKworSW4gZ2VuZXJhbCwgZm9yIGZsb2F0
aW5nLXBvaW50IGNvbXBhcmlzb24gdG8gbWFrZSBzZW5zZSwgdGhlIHVzZXIgbmVlZHMgdG8KK2Nh
cmVmdWxseSBjaG9vc2UgdGhlIGVycm9yIGJvdW5kLiBJZiB0aGV5IGRvbid0IHdhbnQgb3IgY2Fy
ZSB0bywgY29tcGFyaW5nIGluCit0ZXJtcyBvZiBVbml0cyBpbiB0aGUgTGFzdCBQbGFjZSAoVUxQ
cykgaXMgYSBnb29kIGRlZmF1bHQsIGFuZCBHb29nbGUgVGVzdAorcHJvdmlkZXMgYXNzZXJ0aW9u
cyB0byBkbyB0aGlzLiBGdWxsIGRldGFpbHMgYWJvdXQgVUxQcyBhcmUgcXVpdGUgbG9uZzsgaWYg
eW91Cit3YW50IHRvIGxlYXJuIG1vcmUsIHNlZQorW3RoaXMgYXJ0aWNsZSBvbiBmbG9hdCBjb21w
YXJpc29uXShodHRwOi8vd3d3LmN5Z251cy1zb2Z0d2FyZS5jb20vcGFwZXJzL2NvbXBhcmluZ2Zs
b2F0cy9jb21wYXJpbmdmbG9hdHMuaHRtKS4KKworIyMjIEZsb2F0aW5nLVBvaW50IE1hY3JvcyAj
IyMKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoq
VmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9GTE9BVF9FUShgX2V4cGVjdGVkLCBhY3R1
YWxfYCk7YCAgfCBgRVhQRUNUX0ZMT0FUX0VRKGBfZXhwZWN0ZWQsIGFjdHVhbF9gKTtgIHwgdGhl
IHR3byBgZmxvYXRgIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsIHwKK3wgYEFTU0VSVF9ET1VCTEVf
RVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgfCBgRVhQRUNUX0RPVUJMRV9FUShgX2V4cGVjdGVk
LCBhY3R1YWxfYCk7YCB8IHRoZSB0d28gYGRvdWJsZWAgdmFsdWVzIGFyZSBhbG1vc3QgZXF1YWwg
fAorCitCeSAiYWxtb3N0IGVxdWFsIiwgd2UgbWVhbiB0aGUgdHdvIHZhbHVlcyBhcmUgd2l0aGlu
IDQgVUxQJ3MgZnJvbSBlYWNoCitvdGhlci4KKworVGhlIGZvbGxvd2luZyBhc3NlcnRpb25zIGFs
bG93IHlvdSB0byBjaG9vc2UgdGhlIGFjY2VwdGFibGUgZXJyb3IgYm91bmQ6CisKK3wgKipGYXRh
bCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAor
fDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS18Cit8IGBBU1NFUlRfTkVBUihgX3ZhbDEsIHZhbDIsIGFic1xfZXJyb3JfYCk7YCB8IGBF
WFBFQ1RfTkVBUmBfKHZhbDEsIHZhbDIsIGFic1xfZXJyb3JfYCk7YCB8IHRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gX3ZhbDFfIGFuZCBfdmFsMl8gZG9lc24ndCBleGNlZWQgdGhlIGdpdmVuIGFic29s
dXRlIGVycm9yIHwKKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMj
IyBGbG9hdGluZy1Qb2ludCBQcmVkaWNhdGUtRm9ybWF0IEZ1bmN0aW9ucyAjIyMKKworU29tZSBm
bG9hdGluZy1wb2ludCBvcGVyYXRpb25zIGFyZSB1c2VmdWwsIGJ1dCBub3QgdGhhdCBvZnRlbiB1
c2VkLiBJbiBvcmRlcgordG8gYXZvaWQgYW4gZXhwbG9zaW9uIG9mIG5ldyBtYWNyb3MsIHdlIHBy
b3ZpZGUgdGhlbSBhcyBwcmVkaWNhdGUtZm9ybWF0CitmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNl
ZCBpbiBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3JvcyAoZS5nLgorYEVYUEVDVF9QUkVEX0ZPUk1B
VDJgLCBldGMpLgorCitgYGAKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpGbG9hdExF
LCB2YWwxLCB2YWwyKTsKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpEb3VibGVMRSwg
dmFsMSwgdmFsMik7CitgYGAKKworVmVyaWZpZXMgdGhhdCBfdmFsMV8gaXMgbGVzcyB0aGFuLCBv
ciBhbG1vc3QgZXF1YWwgdG8sIF92YWwyXy4gWW91IGNhbgorcmVwbGFjZSBgRVhQRUNUX1BSRURf
Rk9STUFUMmAgaW4gdGhlIGFib3ZlIHRhYmxlIHdpdGggYEFTU0VSVF9QUkVEX0ZPUk1BVDJgLgor
CitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgV2luZG93cyBIUkVT
VUxUIGFzc2VydGlvbnMgIyMKKworVGhlc2UgYXNzZXJ0aW9ucyB0ZXN0IGZvciBgSFJFU1VMVGAg
c3VjY2VzcyBvciBmYWlsdXJlLgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFs
IGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX0hSRVNVTFRf
U1VDQ0VFREVEKGBfZXhwcmVzc2lvbl9gKTtgIHwgYEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChg
X2V4cHJlc3Npb25fYCk7YCB8IF9leHByZXNzaW9uXyBpcyBhIHN1Y2Nlc3MgYEhSRVNVTFRgIHwK
K3wgYEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChgX2V4cHJlc3Npb25fYCk7YCAgICB8IGBFWFBFQ1Rf
SFJFU1VMVF9GQUlMRUQoYF9leHByZXNzaW9uX2ApO2AgICAgfCBfZXhwcmVzc2lvbl8gaXMgYSBm
YWlsdXJlIGBIUkVTVUxUYCB8CisKK1RoZSBnZW5lcmF0ZWQgb3V0cHV0IGNvbnRhaW5zIHRoZSBo
dW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlCithc3NvY2lhdGVkIHdpdGggdGhlIGBIUkVTVUxU
YCBjb2RlIHJldHVybmVkIGJ5IF9leHByZXNzaW9uXy4KKworWW91IG1pZ2h0IHVzZSB0aGVtIGxp
a2UgdGhpczoKKworYGBgCitDQ29tUHRyIHNoZWxsOworQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVE
KHNoZWxsLkNvQ3JlYXRlSW5zdGFuY2UoTCJTaGVsbC5BcHBsaWNhdGlvbiIpKTsKK0NDb21WYXJp
YW50IGVtcHR5OworQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKHNoZWxsLT5TaGVsbEV4ZWN1dGUo
Q0NvbUJTVFIodXJsKSwgZW1wdHksIGVtcHR5LCBlbXB0eSwgZW1wdHkpKTsKK2BgYAorCitfQXZh
aWxhYmlsaXR5XzogV2luZG93cy4KKworIyMgVHlwZSBBc3NlcnRpb25zICMjCisKK1lvdSBjYW4g
Y2FsbCB0aGUgZnVuY3Rpb24KK2BgYAorOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8VDEs
IFQyPigpOworYGBgCit0byBhc3NlcnQgdGhhdCB0eXBlcyBgVDFgIGFuZCBgVDJgIGFyZSB0aGUg
c2FtZS4gIFRoZSBmdW5jdGlvbiBkb2VzCitub3RoaW5nIGlmIHRoZSBhc3NlcnRpb24gaXMgc2F0
aXNmaWVkLiAgSWYgdGhlIHR5cGVzIGFyZSBkaWZmZXJlbnQsCit0aGUgZnVuY3Rpb24gY2FsbCB3
aWxsIGZhaWwgdG8gY29tcGlsZSwgYW5kIHRoZSBjb21waWxlciBlcnJvciBtZXNzYWdlCit3aWxs
IGxpa2VseSAoZGVwZW5kaW5nIG9uIHRoZSBjb21waWxlcikgc2hvdyB5b3UgdGhlIGFjdHVhbCB2
YWx1ZXMgb2YKK2BUMWAgYW5kIGBUMmAuICBUaGlzIGlzIG1haW5seSB1c2VmdWwgaW5zaWRlIHRl
bXBsYXRlIGNvZGUuCisKK19DYXZlYXQ6XyBXaGVuIHVzZWQgaW5zaWRlIGEgbWVtYmVyIGZ1bmN0
aW9uIG9mIGEgY2xhc3MgdGVtcGxhdGUgb3IgYQorZnVuY3Rpb24gdGVtcGxhdGUsIGBTdGF0aWNB
c3NlcnRUeXBlRXE8VDEsIFQyPigpYCBpcyBlZmZlY3RpdmUgX29ubHkgaWZfCit0aGUgZnVuY3Rp
b24gaXMgaW5zdGFudGlhdGVkLiAgRm9yIGV4YW1wbGUsIGdpdmVuOgorYGBgCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MgRm9vIHsKKyBwdWJsaWM6CisgIHZvaWQgQmFyKCkgeyA6OnRlc3Rp
bmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIFQ+KCk7IH0KK307CitgYGAKK3RoZSBjb2RlOgor
YGBgCit2b2lkIFRlc3QxKCkgeyBGb288Ym9vbD4gZm9vOyB9CitgYGAKK3dpbGwgX25vdF8gZ2Vu
ZXJhdGUgYSBjb21waWxlciBlcnJvciwgYXMgYEZvbzxib29sPjo6QmFyKClgIGlzIG5ldmVyCith
Y3R1YWxseSBpbnN0YW50aWF0ZWQuICBJbnN0ZWFkLCB5b3UgbmVlZDoKK2BgYAordm9pZCBUZXN0
MigpIHsgRm9vPGJvb2w+IGZvbzsgZm9vLkJhcigpOyB9CitgYGAKK3RvIGNhdXNlIGEgY29tcGls
ZXIgZXJyb3IuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2
ZXJzaW9uIDEuMy4wLgorCisjIyBBc3NlcnRpb24gUGxhY2VtZW50ICMjCisKK1lvdSBjYW4gdXNl
IGFzc2VydGlvbnMgaW4gYW55IEMrKyBmdW5jdGlvbi4gSW4gcGFydGljdWxhciwgaXQgZG9lc24n
dAoraGF2ZSB0byBiZSBhIG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLiBUaGUgb25l
IGNvbnN0cmFpbnQgaXMKK3RoYXQgYXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIGEgZmF0YWwgZmFp
bHVyZSAoYEZBSUwqYCBhbmQgYEFTU0VSVF8qYCkKK2NhbiBvbmx5IGJlIHVzZWQgaW4gdm9pZC1y
ZXR1cm5pbmcgZnVuY3Rpb25zLiBUaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2YKK0dvb2dsZSBUZXN0
IG5vdCB1c2luZyBleGNlcHRpb25zLiBCeSBwbGFjaW5nIGl0IGluIGEgbm9uLXZvaWQgZnVuY3Rp
b24KK3lvdSdsbCBnZXQgYSBjb25mdXNpbmcgY29tcGlsZSBlcnJvciBsaWtlCitgImVycm9yOiB2
b2lkIHZhbHVlIG5vdCBpZ25vcmVkIGFzIGl0IG91Z2h0IHRvIGJlImAuCisKK0lmIHlvdSBuZWVk
IHRvIHVzZSBhc3NlcnRpb25zIGluIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIG5vbi12b2lkLCBv
bmUgb3B0aW9uCitpcyB0byBtYWtlIHRoZSBmdW5jdGlvbiByZXR1cm4gdGhlIHZhbHVlIGluIGFu
IG91dCBwYXJhbWV0ZXIgaW5zdGVhZC4gRm9yCitleGFtcGxlLCB5b3UgY2FuIHJld3JpdGUgYFQy
IEZvbyhUMSB4KWAgdG8gYHZvaWQgRm9vKFQxIHgsIFQyKiByZXN1bHQpYC4gWW91CituZWVkIHRv
IG1ha2Ugc3VyZSB0aGF0IGAqcmVzdWx0YCBjb250YWlucyBzb21lIHNlbnNpYmxlIHZhbHVlIGV2
ZW4gd2hlbiB0aGUKK2Z1bmN0aW9uIHJldHVybnMgcHJlbWF0dXJlbHkuIEFzIHRoZSBmdW5jdGlv
biBub3cgcmV0dXJucyBgdm9pZGAsIHlvdSBjYW4gdXNlCithbnkgYXNzZXJ0aW9uIGluc2lkZSBv
ZiBpdC4KKworSWYgY2hhbmdpbmcgdGhlIGZ1bmN0aW9uJ3MgdHlwZSBpcyBub3QgYW4gb3B0aW9u
LCB5b3Ugc2hvdWxkIGp1c3QgdXNlCithc3NlcnRpb25zIHRoYXQgZ2VuZXJhdGUgbm9uLWZhdGFs
IGZhaWx1cmVzLCBzdWNoIGFzIGBBRERfRkFJTFVSRSpgIGFuZAorYEVYUEVDVF8qYC4KKworX05v
dGVfOiBDb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzIGFyZSBub3QgY29uc2lkZXJlZCB2b2lk
LXJldHVybmluZworZnVuY3Rpb25zLCBhY2NvcmRpbmcgdG8gdGhlIEMrKyBsYW5ndWFnZSBzcGVj
aWZpY2F0aW9uLCBhbmQgc28geW91IG1heSBub3QgdXNlCitmYXRhbCBhc3NlcnRpb25zIGluIHRo
ZW0uIFlvdSdsbCBnZXQgYSBjb21waWxhdGlvbiBlcnJvciBpZiB5b3UgdHJ5LiBBIHNpbXBsZQor
d29ya2Fyb3VuZCBpcyB0byB0cmFuc2ZlciB0aGUgZW50aXJlIGJvZHkgb2YgdGhlIGNvbnN0cnVj
dG9yIG9yIGRlc3RydWN0b3IgdG8gYQorcHJpdmF0ZSB2b2lkLXJldHVybmluZyBtZXRob2QuIEhv
d2V2ZXIsIHlvdSBzaG91bGQgYmUgYXdhcmUgdGhhdCBhIGZhdGFsCithc3NlcnRpb24gZmFpbHVy
ZSBpbiBhIGNvbnN0cnVjdG9yIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUgY3VycmVudCB0ZXN0LCBh
cyB5b3VyCitpbnR1aXRpb24gbWlnaHQgc3VnZ2VzdDsgaXQgbWVyZWx5IHJldHVybnMgZnJvbSB0
aGUgY29uc3RydWN0b3IgZWFybHksIHBvc3NpYmx5CitsZWF2aW5nIHlvdXIgb2JqZWN0IGluIGEg
cGFydGlhbGx5LWNvbnN0cnVjdGVkIHN0YXRlLiBMaWtld2lzZSwgYSBmYXRhbAorYXNzZXJ0aW9u
IGZhaWx1cmUgaW4gYSBkZXN0cnVjdG9yIG1heSBsZWF2ZSB5b3VyIG9iamVjdCBpbiBhCitwYXJ0
aWFsbHktZGVzdHJ1Y3RlZCBzdGF0ZS4gVXNlIGFzc2VydGlvbnMgY2FyZWZ1bGx5IGluIHRoZXNl
IHNpdHVhdGlvbnMhCisKKyMgRGVhdGggVGVzdHMgIworCitJbiBtYW55IGFwcGxpY2F0aW9ucywg
dGhlcmUgYXJlIGFzc2VydGlvbnMgdGhhdCBjYW4gY2F1c2UgYXBwbGljYXRpb24gZmFpbHVyZQor
aWYgYSBjb25kaXRpb24gaXMgbm90IG1ldC4gVGhlc2Ugc2FuaXR5IGNoZWNrcywgd2hpY2ggZW5z
dXJlIHRoYXQgdGhlIHByb2dyYW0KK2lzIGluIGEga25vd24gZ29vZCBzdGF0ZSwgYXJlIHRoZXJl
IHRvIGZhaWwgYXQgdGhlIGVhcmxpZXN0IHBvc3NpYmxlIHRpbWUgYWZ0ZXIKK3NvbWUgcHJvZ3Jh
bSBzdGF0ZSBpcyBjb3JydXB0ZWQuIElmIHRoZSBhc3NlcnRpb24gY2hlY2tzIHRoZSB3cm9uZyBj
b25kaXRpb24sCit0aGVuIHRoZSBwcm9ncmFtIG1heSBwcm9jZWVkIGluIGFuIGVycm9uZW91cyBz
dGF0ZSwgd2hpY2ggY291bGQgbGVhZCB0byBtZW1vcnkKK2NvcnJ1cHRpb24sIHNlY3VyaXR5IGhv
bGVzLCBvciB3b3JzZS4gSGVuY2UgaXQgaXMgdml0YWxseSBpbXBvcnRhbnQgdG8gdGVzdAordGhh
dCBzdWNoIGFzc2VydGlvbiBzdGF0ZW1lbnRzIHdvcmsgYXMgZXhwZWN0ZWQuCisKK1NpbmNlIHRo
ZXNlIHByZWNvbmRpdGlvbiBjaGVja3MgY2F1c2UgdGhlIHByb2Nlc3NlcyB0byBkaWUsIHdlIGNh
bGwgc3VjaCB0ZXN0cworX2RlYXRoIHRlc3RzXy4gTW9yZSBnZW5lcmFsbHksIGFueSB0ZXN0IHRo
YXQgY2hlY2tzIHRoYXQgYSBwcm9ncmFtIHRlcm1pbmF0ZXMKK2luIGFuIGV4cGVjdGVkIGZhc2hp
b24gaXMgYWxzbyBhIGRlYXRoIHRlc3QuCisKK0lmIHlvdSB3YW50IHRvIHRlc3QgYEVYUEVDVF8q
KCkvQVNTRVJUXyooKWAgZmFpbHVyZXMgaW4geW91ciB0ZXN0IGNvZGUsIHNlZSBbQ2F0Y2hpbmcg
RmFpbHVyZXNdKCNjYXRjaGluZy1mYWlsdXJlcykuCisKKyMjIEhvdyB0byBXcml0ZSBhIERlYXRo
IFRlc3QgIyMKKworR29vZ2xlIFRlc3QgaGFzIHRoZSBmb2xsb3dpbmcgbWFjcm9zIHRvIHN1cHBv
cnQgZGVhdGggdGVzdHM6CisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNz
ZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfREVBVEgoYF9zdGF0
ZW1lbnQsIHJlZ2V4X2ApOyB8IGBFWFBFQ1RfREVBVEgoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApOyB8
IF9zdGF0ZW1lbnRfIGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3IgfAorfCBgQVNTRVJUX0RF
QVRIX0lGX1NVUFBPUlRFRChgX3N0YXRlbWVudCwgcmVnZXhfYCk7IHwgYEVYUEVDVF9ERUFUSF9J
Rl9TVVBQT1JURUQoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApOyB8IGlmIGRlYXRoIHRlc3RzIGFyZSBz
dXBwb3J0ZWQsIHZlcmlmaWVzIHRoYXQgX3N0YXRlbWVudF8gY3Jhc2hlcyB3aXRoIHRoZSBnaXZl
biBlcnJvcjsgb3RoZXJ3aXNlIHZlcmlmaWVzIG5vdGhpbmcgfAorfCBgQVNTRVJUX0VYSVQoYF9z
dGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXhfYCk7IHwgYEVYUEVDVF9FWElUKGBfc3RhdGVtZW50
LCBwcmVkaWNhdGUsIHJlZ2V4X2ApOyB8X3N0YXRlbWVudF8gZXhpdHMgd2l0aCB0aGUgZ2l2ZW4g
ZXJyb3IgYW5kIGl0cyBleGl0IGNvZGUgbWF0Y2hlcyBfcHJlZGljYXRlXyB8CisKK3doZXJlIF9z
dGF0ZW1lbnRfIGlzIGEgc3RhdGVtZW50IHRoYXQgaXMgZXhwZWN0ZWQgdG8gY2F1c2UgdGhlIHBy
b2Nlc3MgdG8KK2RpZSwgX3ByZWRpY2F0ZV8gaXMgYSBmdW5jdGlvbiBvciBmdW5jdGlvbiBvYmpl
Y3QgdGhhdCBldmFsdWF0ZXMgYW4gaW50ZWdlcgorZXhpdCBzdGF0dXMsIGFuZCBfcmVnZXhfIGlz
IGEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgdGhlIHN0ZGVyciBvdXRwdXQgb2YKK19zdGF0ZW1l
bnRfIGlzIGV4cGVjdGVkIHRvIG1hdGNoLiBOb3RlIHRoYXQgX3N0YXRlbWVudF8gY2FuIGJlIF9h
bnkgdmFsaWQKK3N0YXRlbWVudF8gKGluY2x1ZGluZyBfY29tcG91bmQgc3RhdGVtZW50XykgYW5k
IGRvZXNuJ3QgaGF2ZSB0byBiZSBhbgorZXhwcmVzc2lvbi4KKworQXMgdXN1YWwsIHRoZSBgQVNT
RVJUYCB2YXJpYW50cyBhYm9ydCB0aGUgY3VycmVudCB0ZXN0IGZ1bmN0aW9uLCB3aGlsZSB0aGUK
K2BFWFBFQ1RgIHZhcmlhbnRzIGRvIG5vdC4KKworKipOb3RlOioqIFdlIHVzZSB0aGUgd29yZCAi
Y3Jhc2giIGhlcmUgdG8gbWVhbiB0aGF0IHRoZSBwcm9jZXNzCit0ZXJtaW5hdGVzIHdpdGggYSBf
bm9uLXplcm9fIGV4aXQgc3RhdHVzIGNvZGUuICBUaGVyZSBhcmUgdHdvCitwb3NzaWJpbGl0aWVz
OiBlaXRoZXIgdGhlIHByb2Nlc3MgaGFzIGNhbGxlZCBgZXhpdCgpYCBvciBgX2V4aXQoKWAKK3dp
dGggYSBub24temVybyB2YWx1ZSwgb3IgaXQgbWF5IGJlIGtpbGxlZCBieSBhIHNpZ25hbC4KKwor
VGhpcyBtZWFucyB0aGF0IGlmIF9zdGF0ZW1lbnRfIHRlcm1pbmF0ZXMgdGhlIHByb2Nlc3Mgd2l0
aCBhIDAgZXhpdAorY29kZSwgaXQgaXMgX25vdF8gY29uc2lkZXJlZCBhIGNyYXNoIGJ5IGBFWFBF
Q1RfREVBVEhgLiAgVXNlCitgRVhQRUNUX0VYSVRgIGluc3RlYWQgaWYgdGhpcyBpcyB0aGUgY2Fz
ZSwgb3IgaWYgeW91IHdhbnQgdG8gcmVzdHJpY3QKK3RoZSBleGl0IGNvZGUgbW9yZSBwcmVjaXNl
bHkuCisKK0EgcHJlZGljYXRlIGhlcmUgbXVzdCBhY2NlcHQgYW4gYGludGAgYW5kIHJldHVybiBh
IGBib29sYC4gVGhlIGRlYXRoIHRlc3QKK3N1Y2NlZWRzIG9ubHkgaWYgdGhlIHByZWRpY2F0ZSBy
ZXR1cm5zIGB0cnVlYC4gR29vZ2xlIFRlc3QgZGVmaW5lcyBhIGZldworcHJlZGljYXRlcyB0aGF0
IGhhbmRsZSB0aGUgbW9zdCBjb21tb24gY2FzZXM6CisKK2BgYAorOjp0ZXN0aW5nOjpFeGl0ZWRX
aXRoQ29kZShleGl0X2NvZGUpCitgYGAKKworVGhpcyBleHByZXNzaW9uIGlzIGB0cnVlYCBpZiB0
aGUgcHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHkgd2l0aCB0aGUgZ2l2ZW4gZXhpdAorY29kZS4KKwor
YGBgCis6OnRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKHNpZ25hbF9udW1iZXIpICAvLyBOb3QgYXZh
aWxhYmxlIG9uIFdpbmRvd3MuCitgYGAKKworVGhpcyBleHByZXNzaW9uIGlzIGB0cnVlYCBpZiB0
aGUgcHJvZ3JhbSB3YXMga2lsbGVkIGJ5IHRoZSBnaXZlbiBzaWduYWwuCisKK1RoZSBgKl9ERUFU
SGAgbWFjcm9zIGFyZSBjb252ZW5pZW50IHdyYXBwZXJzIGZvciBgKl9FWElUYCB0aGF0IHVzZSBh
IHByZWRpY2F0ZQordGhhdCB2ZXJpZmllcyB0aGUgcHJvY2VzcycgZXhpdCBjb2RlIGlzIG5vbi16
ZXJvLgorCitOb3RlIHRoYXQgYSBkZWF0aCB0ZXN0IG9ubHkgY2FyZXMgYWJvdXQgdGhyZWUgdGhp
bmdzOgorCisgIDEuIGRvZXMgX3N0YXRlbWVudF8gYWJvcnQgb3IgZXhpdCB0aGUgcHJvY2Vzcz8K
KyAgMS4gKGluIHRoZSBjYXNlIG9mIGBBU1NFUlRfRVhJVGAgYW5kIGBFWFBFQ1RfRVhJVGApIGRv
ZXMgdGhlIGV4aXQgc3RhdHVzIHNhdGlzZnkgX3ByZWRpY2F0ZV8/ICBPciAoaW4gdGhlIGNhc2Ug
b2YgYEFTU0VSVF9ERUFUSGAgYW5kIGBFWFBFQ1RfREVBVEhgKSBpcyB0aGUgZXhpdCBzdGF0dXMg
bm9uLXplcm8/ICBBbmQKKyAgMS4gZG9lcyB0aGUgc3RkZXJyIG91dHB1dCBtYXRjaCBfcmVnZXhf
PworCitJbiBwYXJ0aWN1bGFyLCBpZiBfc3RhdGVtZW50XyBnZW5lcmF0ZXMgYW4gYEFTU0VSVF8q
YCBvciBgRVhQRUNUXypgIGZhaWx1cmUsIGl0IHdpbGwgKipub3QqKiBjYXVzZSB0aGUgZGVhdGgg
dGVzdCB0byBmYWlsLCBhcyBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGRvbid0IGFib3J0IHRoZSBw
cm9jZXNzLgorCitUbyB3cml0ZSBhIGRlYXRoIHRlc3QsIHNpbXBseSB1c2Ugb25lIG9mIHRoZSBh
Ym92ZSBtYWNyb3MgaW5zaWRlIHlvdXIgdGVzdAorZnVuY3Rpb24uIEZvciBleGFtcGxlLAorCitg
YGAKK1RFU1QoTXkqRGVhdGhUZXN0KiwgRm9vKSB7CisgIC8vIFRoaXMgZGVhdGggdGVzdCB1c2Vz
IGEgY29tcG91bmQgc3RhdGVtZW50LgorICBBU1NFUlRfREVBVEgoeyBpbnQgbiA9IDU7IEZvbygm
bik7IH0sICJFcnJvciBvbiBsaW5lIC4qIG9mIEZvbygpIik7Cit9CitURVNUKE15RGVhdGhUZXN0
LCBOb3JtYWxFeGl0KSB7CisgIEVYUEVDVF9FWElUKE5vcm1hbEV4aXQoKSwgOjp0ZXN0aW5nOjpF
eGl0ZWRXaXRoQ29kZSgwKSwgIlN1Y2Nlc3MiKTsKK30KK1RFU1QoTXlEZWF0aFRlc3QsIEtpbGxN
eXNlbGYpIHsKKyAgRVhQRUNUX0VYSVQoS2lsbE15c2VsZigpLCA6OnRlc3Rpbmc6OktpbGxlZEJ5
U2lnbmFsKFNJR0tJTEwpLCAiU2VuZGluZyBteXNlbGYgdW5ibG9ja2FibGUgc2lnbmFsIik7Cit9
CitgYGAKKwordmVyaWZpZXMgdGhhdDoKKworICAqIGNhbGxpbmcgYEZvbyg1KWAgY2F1c2VzIHRo
ZSBwcm9jZXNzIHRvIGRpZSB3aXRoIHRoZSBnaXZlbiBlcnJvciBtZXNzYWdlLAorICAqIGNhbGxp
bmcgYE5vcm1hbEV4aXQoKWAgY2F1c2VzIHRoZSBwcm9jZXNzIHRvIHByaW50IGAiU3VjY2VzcyJg
IHRvIHN0ZGVyciBhbmQgZXhpdCB3aXRoIGV4aXQgY29kZSAwLCBhbmQKKyAgKiBjYWxsaW5nIGBL
aWxsTXlzZWxmKClgIGtpbGxzIHRoZSBwcm9jZXNzIHdpdGggc2lnbmFsIGBTSUdLSUxMYC4KKwor
VGhlIHRlc3QgZnVuY3Rpb24gYm9keSBtYXkgY29udGFpbiBvdGhlciBhc3NlcnRpb25zIGFuZCBz
dGF0ZW1lbnRzIGFzIHdlbGwsIGlmCituZWNlc3NhcnkuCisKK19JbXBvcnRhbnQ6XyBXZSBzdHJv
bmdseSByZWNvbW1lbmQgeW91IHRvIGZvbGxvdyB0aGUgY29udmVudGlvbiBvZiBuYW1pbmcgeW91
cgordGVzdCBjYXNlIChub3QgdGVzdCkgYCpEZWF0aFRlc3RgIHdoZW4gaXQgY29udGFpbnMgYSBk
ZWF0aCB0ZXN0LCBhcworZGVtb25zdHJhdGVkIGluIHRoZSBhYm92ZSBleGFtcGxlLiBUaGUgYERl
YXRoIFRlc3RzIEFuZCBUaHJlYWRzYCBzZWN0aW9uIGJlbG93CitleHBsYWlucyB3aHkuCisKK0lm
IGEgdGVzdCBmaXh0dXJlIGNsYXNzIGlzIHNoYXJlZCBieSBub3JtYWwgdGVzdHMgYW5kIGRlYXRo
IHRlc3RzLCB5b3UKK2NhbiB1c2UgdHlwZWRlZiB0byBpbnRyb2R1Y2UgYW4gYWxpYXMgZm9yIHRo
ZSBmaXh0dXJlIGNsYXNzIGFuZCBhdm9pZAorZHVwbGljYXRpbmcgaXRzIGNvZGU6CitgYGAKK2Ns
YXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07CisKK3R5cGVkZWYg
Rm9vVGVzdCBGb29EZWF0aFRlc3Q7CisKK1RFU1RfRihGb29UZXN0LCBEb2VzVGhpcykgeworICAv
LyBub3JtYWwgdGVzdAorfQorCitURVNUX0YoRm9vRGVhdGhUZXN0LCBEb2VzVGhhdCkgeworICAv
LyBkZWF0aCB0ZXN0Cit9CitgYGAKKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzIChy
ZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIEN5Z3dpbiwgYW5kIE1hYyAodGhlIGxhdHRlciB0
aHJlZSBhcmUgc3VwcG9ydGVkIHNpbmNlIHYxLjMuMCkuICBgKEFTU0VSVHxFWFBFQ1QpX0RFQVRI
X0lGX1NVUFBPUlRFRGAgYXJlIG5ldyBpbiB2MS40LjAuCisKKyMjIFJlZ3VsYXIgRXhwcmVzc2lv
biBTeW50YXggIyMKKworT24gUE9TSVggc3lzdGVtcyAoZS5nLiBMaW51eCwgQ3lnd2luLCBhbmQg
TWFjKSwgR29vZ2xlIFRlc3QgdXNlcyB0aGUKK1tQT1NJWCBleHRlbmRlZCByZWd1bGFyIGV4cHJl
c3Npb25dKGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9iYXNl
ZGVmcy94YmRfY2hhcDA5Lmh0bWwjdGFnXzA5XzA0KQorc3ludGF4IGluIGRlYXRoIHRlc3RzLiBU
byBsZWFybiBhYm91dCB0aGlzIHN5bnRheCwgeW91IG1heSB3YW50IHRvIHJlYWQgdGhpcyBbV2lr
aXBlZGlhIGVudHJ5XShodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlZ3VsYXJfZXhwcmVz
c2lvbiNQT1NJWF9FeHRlbmRlZF9SZWd1bGFyX0V4cHJlc3Npb25zKS4KKworT24gV2luZG93cywg
R29vZ2xlIFRlc3QgdXNlcyBpdHMgb3duIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24KK2ltcGxl
bWVudGF0aW9uLiBJdCBsYWNrcyBtYW55IGZlYXR1cmVzIHlvdSBjYW4gZmluZCBpbiBQT1NJWCBl
eHRlbmRlZAorcmVndWxhciBleHByZXNzaW9ucy4gIEZvciBleGFtcGxlLCB3ZSBkb24ndCBzdXBw
b3J0IHVuaW9uIChgInh8eSJgKSwKK2dyb3VwaW5nIChgIih4eSkiYCksIGJyYWNrZXRzIChgIlt4
eV0iYCksIGFuZCByZXBldGl0aW9uIGNvdW50CisoYCJ4ezUsN30iYCksIGFtb25nIG90aGVycy4g
QmVsb3cgaXMgd2hhdCB3ZSBkbyBzdXBwb3J0IChgQWAgZGVub3RlcyBhCitsaXRlcmFsIGNoYXJh
Y3RlciwgcGVyaW9kIChgLmApLCBvciBhIHNpbmdsZSBgXFxgIGVzY2FwZSBzZXF1ZW5jZTsgYHhg
CithbmQgYHlgIGRlbm90ZSByZWd1bGFyIGV4cHJlc3Npb25zLik6CisKK3wgYGNgIHwgbWF0Y2hl
cyBhbnkgbGl0ZXJhbCBjaGFyYWN0ZXIgYGNgIHwKK3w6LS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXwKK3wgYFxcZGAgfCBtYXRjaGVzIGFueSBkZWNpbWFsIGRpZ2l0ICAg
ICAgICAgfAorfCBgXFxEYCB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgZGVj
aW1hbCBkaWdpdCB8Cit8IGBcXGZgIHwgbWF0Y2hlcyBgXGZgICAgICAgICAgICAgICAgICAgICAg
IHwKK3wgYFxcbmAgfCBtYXRjaGVzIGBcbmAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFxy
YCB8IG1hdGNoZXMgYFxyYCAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBcXHNgIHwgbWF0Y2hl
cyBhbnkgQVNDSUkgd2hpdGVzcGFjZSwgaW5jbHVkaW5nIGBcbmAgfAorfCBgXFxTYCB8IG1hdGNo
ZXMgYW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgd2hpdGVzcGFjZSB8Cit8IGBcXHRgIHwgbWF0
Y2hlcyBgXHRgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYFxcdmAgfCBtYXRjaGVzIGBcdmAg
ICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFx3YCB8IG1hdGNoZXMgYW55IGxldHRlciwgYF9g
LCBvciBkZWNpbWFsIGRpZ2l0IHwKK3wgYFxcV2AgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhh
dCBgXFx3YCBkb2Vzbid0IG1hdGNoIHwKK3wgYFxcY2AgfCBtYXRjaGVzIGFueSBsaXRlcmFsIGNo
YXJhY3RlciBgY2AsIHdoaWNoIG11c3QgYmUgYSBwdW5jdHVhdGlvbiB8Cit8IGAuYCB8IG1hdGNo
ZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIgZXhjZXB0IGBcbmAgfAorfCBgQT9gIHwgbWF0Y2hlcyAw
IG9yIDEgb2NjdXJyZW5jZXMgb2YgYEFgIHwKK3wgYEEqYCB8IG1hdGNoZXMgMCBvciBtYW55IG9j
Y3VycmVuY2VzIG9mIGBBYCB8Cit8IGBBK2AgfCBtYXRjaGVzIDEgb3IgbWFueSBvY2N1cnJlbmNl
cyBvZiBgQWAgfAorfCBgXmAgfCBtYXRjaGVzIHRoZSBiZWdpbm5pbmcgb2YgYSBzdHJpbmcgKG5v
dCB0aGF0IG9mIGVhY2ggbGluZSkgfAorfCBgJGAgfCBtYXRjaGVzIHRoZSBlbmQgb2YgYSBzdHJp
bmcgKG5vdCB0aGF0IG9mIGVhY2ggbGluZSkgfAorfCBgeHlgIHwgbWF0Y2hlcyBgeGAgZm9sbG93
ZWQgYnkgYHlgICAgICAgIHwKKworVG8gaGVscCB5b3UgZGV0ZXJtaW5lIHdoaWNoIGNhcGFiaWxp
dHkgaXMgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtLAorR29vZ2xlIFRlc3QgZGVmaW5lcyBtYWNy
byBgR1RFU1RfVVNFU19QT1NJWF9SRT0xYCB3aGVuIGl0IHVzZXMgUE9TSVgKK2V4dGVuZGVkIHJl
Z3VsYXIgZXhwcmVzc2lvbnMsIG9yIGBHVEVTVF9VU0VTX1NJTVBMRV9SRT0xYCB3aGVuIGl0IHVz
ZXMKK3RoZSBzaW1wbGUgdmVyc2lvbi4gIElmIHlvdSB3YW50IHlvdXIgZGVhdGggdGVzdHMgdG8g
d29yayBpbiBib3RoCitjYXNlcywgeW91IGNhbiBlaXRoZXIgYCNpZmAgb24gdGhlc2UgbWFjcm9z
IG9yIHVzZSB0aGUgbW9yZSBsaW1pdGVkCitzeW50YXggb25seS4KKworIyMgSG93IEl0IFdvcmtz
ICMjCisKK1VuZGVyIHRoZSBob29kLCBgQVNTRVJUX0VYSVQoKWAgc3Bhd25zIGEgbmV3IHByb2Nl
c3MgYW5kIGV4ZWN1dGVzIHRoZQorZGVhdGggdGVzdCBzdGF0ZW1lbnQgaW4gdGhhdCBwcm9jZXNz
LiBUaGUgZGV0YWlscyBvZiBvZiBob3cgcHJlY2lzZWx5Cit0aGF0IGhhcHBlbnMgZGVwZW5kIG9u
IHRoZSBwbGF0Zm9ybSBhbmQgdGhlIHZhcmlhYmxlCitgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKGRl
YXRoX3Rlc3Rfc3R5bGUpYCAod2hpY2ggaXMgaW5pdGlhbGl6ZWQgZnJvbSB0aGUKK2NvbW1hbmQt
bGluZSBmbGFnIGAtLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGVgKS4KKworICAqIE9uIFBPU0lYIHN5
c3RlbXMsIGBmb3JrKClgIChvciBgY2xvbmUoKWAgb24gTGludXgpIGlzIHVzZWQgdG8gc3Bhd24g
dGhlIGNoaWxkLCBhZnRlciB3aGljaDoKKyAgICAqIElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlz
IGAiZmFzdCJgLCB0aGUgZGVhdGggdGVzdCBzdGF0ZW1lbnQgaXMgaW1tZWRpYXRlbHkgZXhlY3V0
ZWQuCisgICAgKiBJZiB0aGUgdmFyaWFibGUncyB2YWx1ZSBpcyBgInRocmVhZHNhZmUiYCwgdGhl
IGNoaWxkIHByb2Nlc3MgcmUtZXhlY3V0ZXMgdGhlIHVuaXQgdGVzdCBiaW5hcnkganVzdCBhcyBp
dCB3YXMgb3JpZ2luYWxseSBpbnZva2VkLCBidXQgd2l0aCBzb21lIGV4dHJhIGZsYWdzIHRvIGNh
dXNlIGp1c3QgdGhlIHNpbmdsZSBkZWF0aCB0ZXN0IHVuZGVyIGNvbnNpZGVyYXRpb24gdG8gYmUg
cnVuLgorICAqIE9uIFdpbmRvd3MsIHRoZSBjaGlsZCBpcyBzcGF3bmVkIHVzaW5nIHRoZSBgQ3Jl
YXRlUHJvY2VzcygpYCBBUEksIGFuZCByZS1leGVjdXRlcyB0aGUgYmluYXJ5IHRvIGNhdXNlIGp1
c3QgdGhlIHNpbmdsZSBkZWF0aCB0ZXN0IHVuZGVyIGNvbnNpZGVyYXRpb24gdG8gYmUgcnVuIC0g
bXVjaCBsaWtlIHRoZSBgdGhyZWFkc2FmZWAgbW9kZSBvbiBQT1NJWC4KKworT3RoZXIgdmFsdWVz
IGZvciB0aGUgdmFyaWFibGUgYXJlIGlsbGVnYWwgYW5kIHdpbGwgY2F1c2UgdGhlIGRlYXRoIHRl
c3QgdG8KK2ZhaWwuIEN1cnJlbnRseSwgdGhlIGZsYWcncyBkZWZhdWx0IHZhbHVlIGlzIGAiZmFz
dCJgLiBIb3dldmVyLCB3ZSByZXNlcnZlIHRoZQorcmlnaHQgdG8gY2hhbmdlIGl0IGluIHRoZSBm
dXR1cmUuIFRoZXJlZm9yZSwgeW91ciB0ZXN0cyBzaG91bGQgbm90IGRlcGVuZCBvbgordGhpcy4K
KworSW4gZWl0aGVyIGNhc2UsIHRoZSBwYXJlbnQgcHJvY2VzcyB3YWl0cyBmb3IgdGhlIGNoaWxk
IHByb2Nlc3MgdG8gY29tcGxldGUsIGFuZCBjaGVja3MgdGhhdAorCisgIDEuIHRoZSBjaGlsZCdz
IGV4aXQgc3RhdHVzIHNhdGlzZmllcyB0aGUgcHJlZGljYXRlLCBhbmQKKyAgMS4gdGhlIGNoaWxk
J3Mgc3RkZXJyIG1hdGNoZXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4KKworSWYgdGhlIGRlYXRo
IHRlc3Qgc3RhdGVtZW50IHJ1bnMgdG8gY29tcGxldGlvbiB3aXRob3V0IGR5aW5nLCB0aGUgY2hp
bGQKK3Byb2Nlc3Mgd2lsbCBub25ldGhlbGVzcyB0ZXJtaW5hdGUsIGFuZCB0aGUgYXNzZXJ0aW9u
IGZhaWxzLgorCisjIyBEZWF0aCBUZXN0cyBBbmQgVGhyZWFkcyAjIworCitUaGUgcmVhc29uIGZv
ciB0aGUgdHdvIGRlYXRoIHRlc3Qgc3R5bGVzIGhhcyB0byBkbyB3aXRoIHRocmVhZCBzYWZldHku
IER1ZSB0bword2VsbC1rbm93biBwcm9ibGVtcyB3aXRoIGZvcmtpbmcgaW4gdGhlIHByZXNlbmNl
IG9mIHRocmVhZHMsIGRlYXRoIHRlc3RzIHNob3VsZAorYmUgcnVuIGluIGEgc2luZ2xlLXRocmVh
ZGVkIGNvbnRleHQuIFNvbWV0aW1lcywgaG93ZXZlciwgaXQgaXNuJ3QgZmVhc2libGUgdG8KK2Fy
cmFuZ2UgdGhhdCBraW5kIG9mIGVudmlyb25tZW50LiBGb3IgZXhhbXBsZSwgc3RhdGljYWxseS1p
bml0aWFsaXplZCBtb2R1bGVzCittYXkgc3RhcnQgdGhyZWFkcyBiZWZvcmUgbWFpbiBpcyBldmVy
IHJlYWNoZWQuIE9uY2UgdGhyZWFkcyBoYXZlIGJlZW4gY3JlYXRlZCwKK2l0IG1heSBiZSBkaWZm
aWN1bHQgb3IgaW1wb3NzaWJsZSB0byBjbGVhbiB0aGVtIHVwLgorCitHb29nbGUgVGVzdCBoYXMg
dGhyZWUgZmVhdHVyZXMgaW50ZW5kZWQgdG8gcmFpc2UgYXdhcmVuZXNzIG9mIHRocmVhZGluZyBp
c3N1ZXMuCisKKyAgMS4gQSB3YXJuaW5nIGlzIGVtaXR0ZWQgaWYgbXVsdGlwbGUgdGhyZWFkcyBh
cmUgcnVubmluZyB3aGVuIGEgZGVhdGggdGVzdCBpcyBlbmNvdW50ZXJlZC4KKyAgMS4gVGVzdCBj
YXNlcyB3aXRoIGEgbmFtZSBlbmRpbmcgaW4gIkRlYXRoVGVzdCIgYXJlIHJ1biBiZWZvcmUgYWxs
IG90aGVyIHRlc3RzLgorICAxLiBJdCB1c2VzIGBjbG9uZSgpYCBpbnN0ZWFkIG9mIGBmb3JrKClg
IHRvIHNwYXduIHRoZSBjaGlsZCBwcm9jZXNzIG9uIExpbnV4IChgY2xvbmUoKWAgaXMgbm90IGF2
YWlsYWJsZSBvbiBDeWd3aW4gYW5kIE1hYyksIGFzIGBmb3JrKClgIGlzIG1vcmUgbGlrZWx5IHRv
IGNhdXNlIHRoZSBjaGlsZCB0byBoYW5nIHdoZW4gdGhlIHBhcmVudCBwcm9jZXNzIGhhcyBtdWx0
aXBsZSB0aHJlYWRzLgorCitJdCdzIHBlcmZlY3RseSBmaW5lIHRvIGNyZWF0ZSB0aHJlYWRzIGlu
c2lkZSBhIGRlYXRoIHRlc3Qgc3RhdGVtZW50OyB0aGV5IGFyZQorZXhlY3V0ZWQgaW4gYSBzZXBh
cmF0ZSBwcm9jZXNzIGFuZCBjYW5ub3QgYWZmZWN0IHRoZSBwYXJlbnQuCisKKyMjIERlYXRoIFRl
c3QgU3R5bGVzICMjCisKK1RoZSAidGhyZWFkc2FmZSIgZGVhdGggdGVzdCBzdHlsZSB3YXMgaW50
cm9kdWNlZCBpbiBvcmRlciB0byBoZWxwIG1pdGlnYXRlIHRoZQorcmlza3Mgb2YgdGVzdGluZyBp
biBhIHBvc3NpYmx5IG11bHRpdGhyZWFkZWQgZW52aXJvbm1lbnQuIEl0IHRyYWRlcyBpbmNyZWFz
ZWQKK3Rlc3QgZXhlY3V0aW9uIHRpbWUgKHBvdGVudGlhbGx5IGRyYW1hdGljYWxseSBzbykgZm9y
IGltcHJvdmVkIHRocmVhZCBzYWZldHkuCitXZSBzdWdnZXN0IHVzaW5nIHRoZSBmYXN0ZXIsIGRl
ZmF1bHQgImZhc3QiIHN0eWxlIHVubGVzcyB5b3VyIHRlc3QgaGFzIHNwZWNpZmljCitwcm9ibGVt
cyB3aXRoIGl0LgorCitZb3UgY2FuIGNob29zZSBhIHBhcnRpY3VsYXIgc3R5bGUgb2YgZGVhdGgg
dGVzdHMgYnkgc2V0dGluZyB0aGUgZmxhZworcHJvZ3JhbW1hdGljYWxseToKKworYGBgCis6OnRl
c3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAidGhyZWFkc2FmZSI7CitgYGAK
KworWW91IGNhbiBkbyB0aGlzIGluIGBtYWluKClgIHRvIHNldCB0aGUgc3R5bGUgZm9yIGFsbCBk
ZWF0aCB0ZXN0cyBpbiB0aGUKK2JpbmFyeSwgb3IgaW4gaW5kaXZpZHVhbCB0ZXN0cy4gUmVjYWxs
IHRoYXQgZmxhZ3MgYXJlIHNhdmVkIGJlZm9yZSBydW5uaW5nIGVhY2gKK3Rlc3QgYW5kIHJlc3Rv
cmVkIGFmdGVyd2FyZHMsIHNvIHlvdSBuZWVkIG5vdCBkbyB0aGF0IHlvdXJzZWxmLiBGb3IgZXhh
bXBsZToKKworYGBgCitURVNUKE15RGVhdGhUZXN0LCBUZXN0T25lKSB7CisgIDo6dGVzdGluZzo6
RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJ0aHJlYWRzYWZlIjsKKyAgLy8gVGhpcyB0
ZXN0IGlzIHJ1biBpbiB0aGUgInRocmVhZHNhZmUiIHN0eWxlOgorICBBU1NFUlRfREVBVEgoVGhp
c1Nob3VsZERpZSgpLCAiIik7Cit9CisKK1RFU1QoTXlEZWF0aFRlc3QsIFRlc3RUd28pIHsKKyAg
Ly8gVGhpcyB0ZXN0IGlzIHJ1biBpbiB0aGUgImZhc3QiIHN0eWxlOgorICBBU1NFUlRfREVBVEgo
VGhpc1Nob3VsZERpZSgpLCAiIik7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJn
dikgeworICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgOjp0ZXN0
aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0gImZhc3QiOworICByZXR1cm4gUlVO
X0FMTF9URVNUUygpOworfQorYGBgCisKKyMjIENhdmVhdHMgIyMKKworVGhlIF9zdGF0ZW1lbnRf
IGFyZ3VtZW50IG9mIGBBU1NFUlRfRVhJVCgpYCBjYW4gYmUgYW55IHZhbGlkIEMrKyBzdGF0ZW1l
bnQKK2V4Y2VwdCB0aGF0IGl0IGNhbiBub3QgcmV0dXJuIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rp
b24uIFRoaXMgbWVhbnMKK19zdGF0ZW1lbnRfIHNob3VsZCBub3QgY29udGFpbiBgcmV0dXJuYCBv
ciBhIG1hY3JvIHRoYXQgbWlnaHQgcmV0dXJuIChlLmcuCitgQVNTRVJUX1RSVUUoKWAgKS4gSWYg
X3N0YXRlbWVudF8gcmV0dXJucyBiZWZvcmUgaXQgY3Jhc2hlcywgR29vZ2xlIFRlc3Qgd2lsbAor
cHJpbnQgYW4gZXJyb3IgbWVzc2FnZSwgYW5kIHRoZSB0ZXN0IHdpbGwgZmFpbC4KKworU2luY2Ug
X3N0YXRlbWVudF8gcnVucyBpbiB0aGUgY2hpbGQgcHJvY2VzcywgYW55IGluLW1lbW9yeSBzaWRl
IGVmZmVjdCAoZS5nLgorbW9kaWZ5aW5nIGEgdmFyaWFibGUsIHJlbGVhc2luZyBtZW1vcnksIGV0
YykgaXQgY2F1c2VzIHdpbGwgX25vdF8gYmUgb2JzZXJ2YWJsZQoraW4gdGhlIHBhcmVudCBwcm9j
ZXNzLiBJbiBwYXJ0aWN1bGFyLCBpZiB5b3UgcmVsZWFzZSBtZW1vcnkgaW4gYSBkZWF0aCB0ZXN0
LAoreW91ciBwcm9ncmFtIHdpbGwgZmFpbCB0aGUgaGVhcCBjaGVjayBhcyB0aGUgcGFyZW50IHBy
b2Nlc3Mgd2lsbCBuZXZlciBzZWUgdGhlCittZW1vcnkgcmVjbGFpbWVkLiBUbyBzb2x2ZSB0aGlz
IHByb2JsZW0sIHlvdSBjYW4KKworICAxLiB0cnkgbm90IHRvIGZyZWUgbWVtb3J5IGluIGEgZGVh
dGggdGVzdDsKKyAgMS4gZnJlZSB0aGUgbWVtb3J5IGFnYWluIGluIHRoZSBwYXJlbnQgcHJvY2Vz
czsgb3IKKyAgMS4gZG8gbm90IHVzZSB0aGUgaGVhcCBjaGVja2VyIGluIHlvdXIgcHJvZ3JhbS4K
KworRHVlIHRvIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCwgeW91IGNhbm5vdCBwbGFjZSBtdWx0
aXBsZSBkZWF0aCB0ZXN0Cithc3NlcnRpb25zIG9uIHRoZSBzYW1lIGxpbmU7IG90aGVyd2lzZSwg
Y29tcGlsYXRpb24gd2lsbCBmYWlsIHdpdGggYW4gdW5vYnZpb3VzCitlcnJvciBtZXNzYWdlLgor
CitEZXNwaXRlIHRoZSBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5IGFmZm9yZGVkIGJ5IHRoZSAidGhy
ZWFkc2FmZSIgc3R5bGUgb2YgZGVhdGgKK3Rlc3QsIHRocmVhZCBwcm9ibGVtcyBzdWNoIGFzIGRl
YWRsb2NrIGFyZSBzdGlsbCBwb3NzaWJsZSBpbiB0aGUgcHJlc2VuY2Ugb2YKK2hhbmRsZXJzIHJl
Z2lzdGVyZWQgd2l0aCBgcHRocmVhZF9hdGZvcmsoMylgLgorCisjIFVzaW5nIEFzc2VydGlvbnMg
aW4gU3ViLXJvdXRpbmVzICMKKworIyMgQWRkaW5nIFRyYWNlcyB0byBBc3NlcnRpb25zICMjCisK
K0lmIGEgdGVzdCBzdWItcm91dGluZSBpcyBjYWxsZWQgZnJvbSBzZXZlcmFsIHBsYWNlcywgd2hl
biBhbiBhc3NlcnRpb24KK2luc2lkZSBpdCBmYWlscywgaXQgY2FuIGJlIGhhcmQgdG8gdGVsbCB3
aGljaCBpbnZvY2F0aW9uIG9mIHRoZQorc3ViLXJvdXRpbmUgdGhlIGZhaWx1cmUgaXMgZnJvbS4g
IFlvdSBjYW4gYWxsZXZpYXRlIHRoaXMgcHJvYmxlbSB1c2luZworZXh0cmEgbG9nZ2luZyBvciBj
dXN0b20gZmFpbHVyZSBtZXNzYWdlcywgYnV0IHRoYXQgdXN1YWxseSBjbHV0dGVycyB1cAoreW91
ciB0ZXN0cy4gQSBiZXR0ZXIgc29sdXRpb24gaXMgdG8gdXNlIHRoZSBgU0NPUEVEX1RSQUNFYCBt
YWNybzoKKworfCBgU0NPUEVEX1RSQUNFKGBfbWVzc2FnZV9gKTtgIHwKK3w6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS18CisKK3doZXJlIF9tZXNzYWdlXyBjYW4gYmUgYW55dGhpbmcgc3Ry
ZWFtYWJsZSB0byBgc3RkOjpvc3RyZWFtYC4gVGhpcworbWFjcm8gd2lsbCBjYXVzZSB0aGUgY3Vy
cmVudCBmaWxlIG5hbWUsIGxpbmUgbnVtYmVyLCBhbmQgdGhlIGdpdmVuCittZXNzYWdlIHRvIGJl
IGFkZGVkIGluIGV2ZXJ5IGZhaWx1cmUgbWVzc2FnZS4gVGhlIGVmZmVjdCB3aWxsIGJlCit1bmRv
bmUgd2hlbiB0aGUgY29udHJvbCBsZWF2ZXMgdGhlIGN1cnJlbnQgbGV4aWNhbCBzY29wZS4KKwor
Rm9yIGV4YW1wbGUsCisKK2BgYAorMTA6IHZvaWQgU3ViMShpbnQgbikgeworMTE6ICAgRVhQRUNU
X0VRKDEsIEJhcihuKSk7CisxMjogICBFWFBFQ1RfRVEoMiwgQmFyKG4gKyAxKSk7CisxMzogfQor
MTQ6CisxNTogVEVTVChGb29UZXN0LCBCYXIpIHsKKzE2OiAgIHsKKzE3OiAgICAgU0NPUEVEX1RS
QUNFKCJBIik7ICAvLyBUaGlzIHRyYWNlIHBvaW50IHdpbGwgYmUgaW5jbHVkZWQgaW4KKzE4OiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVyeSBmYWlsdXJlIGluIHRoaXMgc2NvcGUuCisx
OTogICAgIFN1YjEoMSk7CisyMDogICB9CisyMTogICAvLyBOb3cgaXQgd29uJ3QuCisyMjogICBT
dWIxKDkpOworMjM6IH0KK2BgYAorCitjb3VsZCByZXN1bHQgaW4gbWVzc2FnZXMgbGlrZSB0aGVz
ZToKKworYGBgCitwYXRoL3RvL2Zvb190ZXN0LmNjOjExOiBGYWlsdXJlCitWYWx1ZSBvZjogQmFy
KG4pCitFeHBlY3RlZDogMQorICBBY3R1YWw6IDIKKyAgIFRyYWNlOgorcGF0aC90by9mb29fdGVz
dC5jYzoxNzogQQorCitwYXRoL3RvL2Zvb190ZXN0LmNjOjEyOiBGYWlsdXJlCitWYWx1ZSBvZjog
QmFyKG4gKyAxKQorRXhwZWN0ZWQ6IDIKKyAgQWN0dWFsOiAzCitgYGAKKworV2l0aG91dCB0aGUg
dHJhY2UsIGl0IHdvdWxkJ3ZlIGJlZW4gZGlmZmljdWx0IHRvIGtub3cgd2hpY2ggaW52b2NhdGlv
bgorb2YgYFN1YjEoKWAgdGhlIHR3byBmYWlsdXJlcyBjb21lIGZyb20gcmVzcGVjdGl2ZWx5LiAo
WW91IGNvdWxkIGFkZCBhbgorZXh0cmEgbWVzc2FnZSB0byBlYWNoIGFzc2VydGlvbiBpbiBgU3Vi
MSgpYCB0byBpbmRpY2F0ZSB0aGUgdmFsdWUgb2YKK2BuYCwgYnV0IHRoYXQncyB0ZWRpb3VzLikK
KworU29tZSB0aXBzIG9uIHVzaW5nIGBTQ09QRURfVFJBQ0VgOgorCisgIDEuIFdpdGggYSBzdWl0
YWJsZSBtZXNzYWdlLCBpdCdzIG9mdGVuIGVub3VnaCB0byB1c2UgYFNDT1BFRF9UUkFDRWAgYXQg
dGhlIGJlZ2lubmluZyBvZiBhIHN1Yi1yb3V0aW5lLCBpbnN0ZWFkIG9mIGF0IGVhY2ggY2FsbCBz
aXRlLgorICAxLiBXaGVuIGNhbGxpbmcgc3ViLXJvdXRpbmVzIGluc2lkZSBhIGxvb3AsIG1ha2Ug
dGhlIGxvb3AgaXRlcmF0b3IgcGFydCBvZiB0aGUgbWVzc2FnZSBpbiBgU0NPUEVEX1RSQUNFYCBz
dWNoIHRoYXQgeW91IGNhbiBrbm93IHdoaWNoIGl0ZXJhdGlvbiB0aGUgZmFpbHVyZSBpcyBmcm9t
LgorICAxLiBTb21ldGltZXMgdGhlIGxpbmUgbnVtYmVyIG9mIHRoZSB0cmFjZSBwb2ludCBpcyBl
bm91Z2ggZm9yIGlkZW50aWZ5aW5nIHRoZSBwYXJ0aWN1bGFyIGludm9jYXRpb24gb2YgYSBzdWIt
cm91dGluZS4gSW4gdGhpcyBjYXNlLCB5b3UgZG9uJ3QgaGF2ZSB0byBjaG9vc2UgYSB1bmlxdWUg
bWVzc2FnZSBmb3IgYFNDT1BFRF9UUkFDRWAuIFlvdSBjYW4gc2ltcGx5IHVzZSBgIiJgLgorICAx
LiBZb3UgY2FuIHVzZSBgU0NPUEVEX1RSQUNFYCBpbiBhbiBpbm5lciBzY29wZSB3aGVuIHRoZXJl
IGlzIG9uZSBpbiB0aGUgb3V0ZXIgc2NvcGUuIEluIHRoaXMgY2FzZSwgYWxsIGFjdGl2ZSB0cmFj
ZSBwb2ludHMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZmFpbHVyZSBtZXNzYWdlcywgaW4gcmV2
ZXJzZSBvcmRlciB0aGV5IGFyZSBlbmNvdW50ZXJlZC4KKyAgMS4gVGhlIHRyYWNlIGR1bXAgaXMg
Y2xpY2thYmxlIGluIEVtYWNzJyBjb21waWxhdGlvbiBidWZmZXIgLSBoaXQgcmV0dXJuIG9uIGEg
bGluZSBudW1iZXIgYW5kIHlvdSdsbCBiZSB0YWtlbiB0byB0aGF0IGxpbmUgaW4gdGhlIHNvdXJj
ZSBmaWxlIQorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgUHJv
cGFnYXRpbmcgRmF0YWwgRmFpbHVyZXMgIyMKKworQSBjb21tb24gcGl0ZmFsbCB3aGVuIHVzaW5n
IGBBU1NFUlRfKmAgYW5kIGBGQUlMKmAgaXMgbm90IHVuZGVyc3RhbmRpbmcgdGhhdAord2hlbiB0
aGV5IGZhaWwgdGhleSBvbmx5IGFib3J0IHRoZSBfY3VycmVudCBmdW5jdGlvbl8sIG5vdCB0aGUg
ZW50aXJlIHRlc3QuIEZvcgorZXhhbXBsZSwgdGhlIGZvbGxvd2luZyB0ZXN0IHdpbGwgc2VnZmF1
bHQ6CitgYGAKK3ZvaWQgU3Vicm91dGluZSgpIHsKKyAgLy8gR2VuZXJhdGVzIGEgZmF0YWwgZmFp
bHVyZSBhbmQgYWJvcnRzIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgorICBBU1NFUlRfRVEoMSwgMik7
CisgIC8vIFRoZSBmb2xsb3dpbmcgd29uJ3QgYmUgZXhlY3V0ZWQuCisgIC4uLgorfQorCitURVNU
KEZvb1Rlc3QsIEJhcikgeworICBTdWJyb3V0aW5lKCk7CisgIC8vIFRoZSBpbnRlbmRlZCBiZWhh
dmlvciBpcyBmb3IgdGhlIGZhdGFsIGZhaWx1cmUKKyAgLy8gaW4gU3Vicm91dGluZSgpIHRvIGFi
b3J0IHRoZSBlbnRpcmUgdGVzdC4KKyAgLy8gVGhlIGFjdHVhbCBiZWhhdmlvcjogdGhlIGZ1bmN0
aW9uIGdvZXMgb24gYWZ0ZXIgU3Vicm91dGluZSgpIHJldHVybnMuCisgIGludCogcCA9IE5VTEw7
CisgICpwID0gMzsgLy8gU2VnZmF1bHQhCit9CitgYGAKKworU2luY2Ugd2UgZG9uJ3QgdXNlIGV4
Y2VwdGlvbnMsIGl0IGlzIHRlY2huaWNhbGx5IGltcG9zc2libGUgdG8KK2ltcGxlbWVudCB0aGUg
aW50ZW5kZWQgYmVoYXZpb3IgaGVyZS4gIFRvIGFsbGV2aWF0ZSB0aGlzLCBHb29nbGUgVGVzdAor
cHJvdmlkZXMgdHdvIHNvbHV0aW9ucy4gIFlvdSBjb3VsZCB1c2UgZWl0aGVyIHRoZQorYChBU1NF
UlR8RVhQRUNUKV9OT19GQVRBTF9GQUlMVVJFYCBhc3NlcnRpb25zIG9yIHRoZQorYEhhc0ZhdGFs
RmFpbHVyZSgpYCBmdW5jdGlvbi4gIFRoZXkgYXJlIGRlc2NyaWJlZCBpbiB0aGUgZm9sbG93aW5n
IHR3bworc3Vic2VjdGlvbnMuCisKKworCisjIyMgQXNzZXJ0aW5nIG9uIFN1YnJvdXRpbmVzICMj
IworCitBcyBzaG93biBhYm92ZSwgaWYgeW91ciB0ZXN0IGNhbGxzIGEgc3Vicm91dGluZSB0aGF0
IGhhcyBhbiBgQVNTRVJUXypgCitmYWlsdXJlIGluIGl0LCB0aGUgdGVzdCB3aWxsIGNvbnRpbnVl
IGFmdGVyIHRoZSBzdWJyb3V0aW5lCityZXR1cm5zLiBUaGlzIG1heSBub3QgYmUgd2hhdCB5b3Ug
d2FudC4KKworT2Z0ZW4gcGVvcGxlIHdhbnQgZmF0YWwgZmFpbHVyZXMgdG8gcHJvcGFnYXRlIGxp
a2UgZXhjZXB0aW9ucy4gIEZvcgordGhhdCBHb29nbGUgVGVzdCBvZmZlcnMgdGhlIGZvbGxvd2lu
ZyBtYWNyb3M6CisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9u
KiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShg
X3N0YXRlbWVudF9gKTtgIHwgYEVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50X2Ap
O2AgfCBfc3RhdGVtZW50XyBkb2Vzbid0IGdlbmVyYXRlIGFueSBuZXcgZmF0YWwgZmFpbHVyZXMg
aW4gdGhlIGN1cnJlbnQgdGhyZWFkLiB8CisKK09ubHkgZmFpbHVyZXMgaW4gdGhlIHRocmVhZCB0
aGF0IGV4ZWN1dGVzIHRoZSBhc3NlcnRpb24gYXJlIGNoZWNrZWQgdG8KK2RldGVybWluZSB0aGUg
cmVzdWx0IG9mIHRoaXMgdHlwZSBvZiBhc3NlcnRpb25zLiAgSWYgX3N0YXRlbWVudF8KK2NyZWF0
ZXMgbmV3IHRocmVhZHMsIGZhaWx1cmVzIGluIHRoZXNlIHRocmVhZHMgYXJlIGlnbm9yZWQuCisK
K0V4YW1wbGVzOgorCitgYGAKK0FTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEZvbygpKTsKKworaW50
IGk7CitFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRSh7CisgIGkgPSBCYXIoKTsKK30pOworYGBgCisK
K19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLiBBc3NlcnRpb25zIGZyb20gbXVs
dGlwbGUgdGhyZWFkcworYXJlIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgorCisjIyMgQ2hlY2tp
bmcgZm9yIEZhaWx1cmVzIGluIHRoZSBDdXJyZW50IFRlc3QgIyMjCisKK2BIYXNGYXRhbEZhaWx1
cmUoKWAgaW4gdGhlIGA6OnRlc3Rpbmc6OlRlc3RgIGNsYXNzIHJldHVybnMgYHRydWVgIGlmIGFu
Cithc3NlcnRpb24gaW4gdGhlIGN1cnJlbnQgdGVzdCBoYXMgc3VmZmVyZWQgYSBmYXRhbCBmYWls
dXJlLiBUaGlzCithbGxvd3MgZnVuY3Rpb25zIHRvIGNhdGNoIGZhdGFsIGZhaWx1cmVzIGluIGEg
c3ViLXJvdXRpbmUgYW5kIHJldHVybgorZWFybHkuCisKK2BgYAorY2xhc3MgVGVzdCB7CisgcHVi
bGljOgorICAuLi4KKyAgc3RhdGljIGJvb2wgSGFzRmF0YWxGYWlsdXJlKCk7Cit9OworYGBgCisK
K1RoZSB0eXBpY2FsIHVzYWdlLCB3aGljaCBiYXNpY2FsbHkgc2ltdWxhdGVzIHRoZSBiZWhhdmlv
ciBvZiBhIHRocm93bgorZXhjZXB0aW9uLCBpczoKKworYGBgCitURVNUKEZvb1Rlc3QsIEJhcikg
eworICBTdWJyb3V0aW5lKCk7CisgIC8vIEFib3J0cyBpZiBTdWJyb3V0aW5lKCkgaGFkIGEgZmF0
YWwgZmFpbHVyZS4KKyAgaWYgKEhhc0ZhdGFsRmFpbHVyZSgpKQorICAgIHJldHVybjsKKyAgLy8g
VGhlIGZvbGxvd2luZyB3b24ndCBiZSBleGVjdXRlZC4KKyAgLi4uCit9CitgYGAKKworSWYgYEhh
c0ZhdGFsRmFpbHVyZSgpYCBpcyB1c2VkIG91dHNpZGUgb2YgYFRFU1QoKWAgLCBgVEVTVF9GKClg
ICwgb3IgYSB0ZXN0CitmaXh0dXJlLCB5b3UgbXVzdCBhZGQgdGhlIGA6OnRlc3Rpbmc6OlRlc3Q6
OmAgcHJlZml4LCBhcyBpbjoKKworYGBgCitpZiAoOjp0ZXN0aW5nOjpUZXN0OjpIYXNGYXRhbEZh
aWx1cmUoKSkKKyAgcmV0dXJuOworYGBgCisKK1NpbWlsYXJseSwgYEhhc05vbmZhdGFsRmFpbHVy
ZSgpYCByZXR1cm5zIGB0cnVlYCBpZiB0aGUgY3VycmVudCB0ZXN0CitoYXMgYXQgbGVhc3Qgb25l
IG5vbi1mYXRhbCBmYWlsdXJlLCBhbmQgYEhhc0ZhaWx1cmUoKWAgcmV0dXJucyBgdHJ1ZWAKK2lm
IHRoZSBjdXJyZW50IHRlc3QgaGFzIGF0IGxlYXN0IG9uZSBmYWlsdXJlIG9mIGVpdGhlciBraW5k
LgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4gIGBIYXNOb25mYXRhbEZh
aWx1cmUoKWAgYW5kCitgSGFzRmFpbHVyZSgpYCBhcmUgYXZhaWxhYmxlIHNpbmNlIHZlcnNpb24g
MS40LjAuCisKKyMgTG9nZ2luZyBBZGRpdGlvbmFsIEluZm9ybWF0aW9uICMKKworSW4geW91ciB0
ZXN0IGNvZGUsIHlvdSBjYW4gY2FsbCBgUmVjb3JkUHJvcGVydHkoImtleSIsIHZhbHVlKWAgdG8g
bG9nCithZGRpdGlvbmFsIGluZm9ybWF0aW9uLCB3aGVyZSBgdmFsdWVgIGNhbiBiZSBlaXRoZXIg
YSBDIHN0cmluZyBvciBhIDMyLWJpdAoraW50ZWdlci4gVGhlIF9sYXN0XyB2YWx1ZSByZWNvcmRl
ZCBmb3IgYSBrZXkgd2lsbCBiZSBlbWl0dGVkIHRvIHRoZSBYTUwgb3V0cHV0CitpZiB5b3Ugc3Bl
Y2lmeSBvbmUuIEZvciBleGFtcGxlLCB0aGUgdGVzdAorCitgYGAKK1RFU1RfRihXaWRnZXRVc2Fn
ZVRlc3QsIE1pbkFuZE1heFdpZGdldHMpIHsKKyAgUmVjb3JkUHJvcGVydHkoIk1heGltdW1XaWRn
ZXRzIiwgQ29tcHV0ZU1heFVzYWdlKCkpOworICBSZWNvcmRQcm9wZXJ0eSgiTWluaW11bVdpZGdl
dHMiLCBDb21wdXRlTWluVXNhZ2UoKSk7Cit9CitgYGAKKword2lsbCBvdXRwdXQgWE1MIGxpa2Ug
dGhpczoKKworYGBgCisuLi4KKyAgPHRlc3RjYXNlIG5hbWU9Ik1pbkFuZE1heFdpZGdldHMiIHN0
YXR1cz0icnVuIiB0aW1lPSI2IiBjbGFzc25hbWU9IldpZGdldFVzYWdlVGVzdCIKKyAgICAgICAg
ICAgIE1heGltdW1XaWRnZXRzPSIxMiIKKyAgICAgICAgICAgIE1pbmltdW1XaWRnZXRzPSI5IiAv
PgorLi4uCitgYGAKKworX05vdGVfOgorICAqIGBSZWNvcmRQcm9wZXJ0eSgpYCBpcyBhIHN0YXRp
YyBtZW1iZXIgb2YgdGhlIGBUZXN0YCBjbGFzcy4gVGhlcmVmb3JlIGl0IG5lZWRzIHRvIGJlIHBy
ZWZpeGVkIHdpdGggYDo6dGVzdGluZzo6VGVzdDo6YCBpZiB1c2VkIG91dHNpZGUgb2YgdGhlIGBU
RVNUYCBib2R5IGFuZCB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLgorICAqIGBrZXlgIG11c3QgYmUg
YSB2YWxpZCBYTUwgYXR0cmlidXRlIG5hbWUsIGFuZCBjYW5ub3QgY29uZmxpY3Qgd2l0aCB0aGUg
b25lcyBhbHJlYWR5IHVzZWQgYnkgR29vZ2xlIFRlc3QgKGBuYW1lYCwgYHN0YXR1c2AsICAgICBg
dGltZWAsIGFuZCBgY2xhc3NuYW1lYCkuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjLgorCisjIFNoYXJpbmcgUmVzb3VyY2VzIEJldHdlZW4gVGVzdHMgaW4gdGhlIFNhbWUg
VGVzdCBDYXNlICMKKworCisKK0dvb2dsZSBUZXN0IGNyZWF0ZXMgYSBuZXcgdGVzdCBmaXh0dXJl
IG9iamVjdCBmb3IgZWFjaCB0ZXN0IGluIG9yZGVyIHRvIG1ha2UKK3Rlc3RzIGluZGVwZW5kZW50
IGFuZCBlYXNpZXIgdG8gZGVidWcuIEhvd2V2ZXIsIHNvbWV0aW1lcyB0ZXN0cyB1c2UgcmVzb3Vy
Y2VzCit0aGF0IGFyZSBleHBlbnNpdmUgdG8gc2V0IHVwLCBtYWtpbmcgdGhlIG9uZS1jb3B5LXBl
ci10ZXN0IG1vZGVsIHByb2hpYml0aXZlbHkKK2V4cGVuc2l2ZS4KKworSWYgdGhlIHRlc3RzIGRv
bid0IGNoYW5nZSB0aGUgcmVzb3VyY2UsIHRoZXJlJ3Mgbm8gaGFybSBpbiB0aGVtIHNoYXJpbmcg
YQorc2luZ2xlIHJlc291cmNlIGNvcHkuIFNvLCBpbiBhZGRpdGlvbiB0byBwZXItdGVzdCBzZXQt
dXAvdGVhci1kb3duLCBHb29nbGUgVGVzdAorYWxzbyBzdXBwb3J0cyBwZXItdGVzdC1jYXNlIHNl
dC11cC90ZWFyLWRvd24uIFRvIHVzZSBpdDoKKworICAxLiBJbiB5b3VyIHRlc3QgZml4dHVyZSBj
bGFzcyAoc2F5IGBGb29UZXN0YCApLCBkZWZpbmUgYXMgYHN0YXRpY2Agc29tZSBtZW1iZXIgdmFy
aWFibGVzIHRvIGhvbGQgdGhlIHNoYXJlZCByZXNvdXJjZXMuCisgIDEuIEluIHRoZSBzYW1lIHRl
c3QgZml4dHVyZSBjbGFzcywgZGVmaW5lIGEgYHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKWAg
ZnVuY3Rpb24gKHJlbWVtYmVyIG5vdCB0byBzcGVsbCBpdCBhcyAqKmBTZXR1cFRlc3RDYXNlYCoq
IHdpdGggYSBzbWFsbCBgdWAhKSB0byBzZXQgdXAgdGhlIHNoYXJlZCByZXNvdXJjZXMgYW5kIGEg
YHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKWAgZnVuY3Rpb24gdG8gdGVhciB0aGVtIGRv
d24uCisKK1RoYXQncyBpdCEgR29vZ2xlIFRlc3QgYXV0b21hdGljYWxseSBjYWxscyBgU2V0VXBU
ZXN0Q2FzZSgpYCBiZWZvcmUgcnVubmluZyB0aGUKK19maXJzdCB0ZXN0XyBpbiB0aGUgYEZvb1Rl
c3RgIHRlc3QgY2FzZSAoaS5lLiBiZWZvcmUgY3JlYXRpbmcgdGhlIGZpcnN0CitgRm9vVGVzdGAg
b2JqZWN0KSwgYW5kIGNhbGxzIGBUZWFyRG93blRlc3RDYXNlKClgIGFmdGVyIHJ1bm5pbmcgdGhl
IF9sYXN0IHRlc3RfCitpbiBpdCAoaS5lLiBhZnRlciBkZWxldGluZyB0aGUgbGFzdCBgRm9vVGVz
dGAgb2JqZWN0KS4gSW4gYmV0d2VlbiwgdGhlIHRlc3RzCitjYW4gdXNlIHRoZSBzaGFyZWQgcmVz
b3VyY2VzLgorCitSZW1lbWJlciB0aGF0IHRoZSB0ZXN0IG9yZGVyIGlzIHVuZGVmaW5lZCwgc28g
eW91ciBjb2RlIGNhbid0IGRlcGVuZCBvbiBhIHRlc3QKK3ByZWNlZGluZyBvciBmb2xsb3dpbmcg
YW5vdGhlci4gQWxzbywgdGhlIHRlc3RzIG11c3QgZWl0aGVyIG5vdCBtb2RpZnkgdGhlCitzdGF0
ZSBvZiBhbnkgc2hhcmVkIHJlc291cmNlLCBvciwgaWYgdGhleSBkbyBtb2RpZnkgdGhlIHN0YXRl
LCB0aGV5IG11c3QKK3Jlc3RvcmUgdGhlIHN0YXRlIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZSBiZWZv
cmUgcGFzc2luZyBjb250cm9sIHRvIHRoZSBuZXh0Cit0ZXN0LgorCitIZXJlJ3MgYW4gZXhhbXBs
ZSBvZiBwZXItdGVzdC1jYXNlIHNldC11cCBhbmQgdGVhci1kb3duOgorYGBgCitjbGFzcyBGb29U
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAvLyBQZXItdGVz
dC1jYXNlIHNldC11cC4KKyAgLy8gQ2FsbGVkIGJlZm9yZSB0aGUgZmlyc3QgdGVzdCBpbiB0aGlz
IHRlc3QgY2FzZS4KKyAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90IG5lZWRlZC4KKyAgc3RhdGlj
IHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKKyAgICBzaGFyZWRfcmVzb3VyY2VfID0gbmV3IC4uLjsK
KyAgfQorCisgIC8vIFBlci10ZXN0LWNhc2UgdGVhci1kb3duLgorICAvLyBDYWxsZWQgYWZ0ZXIg
dGhlIGxhc3QgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZS4KKyAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYg
bm90IG5lZWRlZC4KKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBkZWxl
dGUgc2hhcmVkX3Jlc291cmNlXzsKKyAgICBzaGFyZWRfcmVzb3VyY2VfID0gTlVMTDsKKyAgfQor
CisgIC8vIFlvdSBjYW4gZGVmaW5lIHBlci10ZXN0IHNldC11cCBhbmQgdGVhci1kb3duIGxvZ2lj
IGFzIHVzdWFsLgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IC4uLiB9CisgIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsgLi4uIH0KKworICAvLyBTb21lIGV4cGVuc2l2ZSByZXNvdXJjZSBzaGFy
ZWQgYnkgYWxsIHRlc3RzLgorICBzdGF0aWMgVCogc2hhcmVkX3Jlc291cmNlXzsKK307CisKK1Qq
IEZvb1Rlc3Q6OnNoYXJlZF9yZXNvdXJjZV8gPSBOVUxMOworCitURVNUX0YoRm9vVGVzdCwgVGVz
dDEpIHsKKyAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlIGhlcmUgLi4uCit9
CitURVNUX0YoRm9vVGVzdCwgVGVzdDIpIHsKKyAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVk
X3Jlc291cmNlIGhlcmUgLi4uCit9CitgYGAKKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5k
b3dzLCBNYWMuCisKKyMgR2xvYmFsIFNldC1VcCBhbmQgVGVhci1Eb3duICMKKworSnVzdCBhcyB5
b3UgY2FuIGRvIHNldC11cCBhbmQgdGVhci1kb3duIGF0IHRoZSB0ZXN0IGxldmVsIGFuZCB0aGUg
dGVzdCBjYXNlCitsZXZlbCwgeW91IGNhbiBhbHNvIGRvIGl0IGF0IHRoZSB0ZXN0IHByb2dyYW0g
bGV2ZWwuIEhlcmUncyBob3cuCisKK0ZpcnN0LCB5b3Ugc3ViY2xhc3MgdGhlIGA6OnRlc3Rpbmc6
OkVudmlyb25tZW50YCBjbGFzcyB0byBkZWZpbmUgYSB0ZXN0CitlbnZpcm9ubWVudCwgd2hpY2gg
a25vd3MgaG93IHRvIHNldC11cCBhbmQgdGVhci1kb3duOgorCitgYGAKK2NsYXNzIEVudmlyb25t
ZW50IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfkVudmlyb25tZW50KCkge30KKyAgLy8gT3ZlcnJp
ZGUgdGhpcyB0byBkZWZpbmUgaG93IHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQuCisgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHt9CisgIC8vIE92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGhvdyB0byB0
ZWFyIGRvd24gdGhlIGVudmlyb25tZW50LgorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7fQor
fTsKK2BgYAorCitUaGVuLCB5b3UgcmVnaXN0ZXIgYW4gaW5zdGFuY2Ugb2YgeW91ciBlbnZpcm9u
bWVudCBjbGFzcyB3aXRoIEdvb2dsZSBUZXN0IGJ5CitjYWxsaW5nIHRoZSBgOjp0ZXN0aW5nOjpB
ZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgZnVuY3Rpb246CisKK2BgYAorRW52aXJvbm1lbnQq
IEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KTsKK2BgYAorCitOb3cs
IHdoZW4gYFJVTl9BTExfVEVTVFMoKWAgaXMgY2FsbGVkLCBpdCBmaXJzdCBjYWxscyB0aGUgYFNl
dFVwKClgIG1ldGhvZCBvZgordGhlIGVudmlyb25tZW50IG9iamVjdCwgdGhlbiBydW5zIHRoZSB0
ZXN0cyBpZiB0aGVyZSB3YXMgbm8gZmF0YWwgZmFpbHVyZXMsIGFuZAorZmluYWxseSBjYWxscyBg
VGVhckRvd24oKWAgb2YgdGhlIGVudmlyb25tZW50IG9iamVjdC4KKworSXQncyBPSyB0byByZWdp
c3RlciBtdWx0aXBsZSBlbnZpcm9ubWVudCBvYmplY3RzLiBJbiB0aGlzIGNhc2UsIHRoZWlyIGBT
ZXRVcCgpYAord2lsbCBiZSBjYWxsZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIHJlZ2lzdGVyZWQs
IGFuZCB0aGVpciBgVGVhckRvd24oKWAgd2lsbCBiZQorY2FsbGVkIGluIHRoZSByZXZlcnNlIG9y
ZGVyLgorCitOb3RlIHRoYXQgR29vZ2xlIFRlc3QgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSByZWdp
c3RlcmVkIGVudmlyb25tZW50IG9iamVjdHMuCitUaGVyZWZvcmUgKipkbyBub3QgZGVsZXRlIHRo
ZW0qKiBieSB5b3Vyc2VsZi4KKworWW91IHNob3VsZCBjYWxsIGBBZGRHbG9iYWxUZXN0RW52aXJv
bm1lbnQoKWAgYmVmb3JlIGBSVU5fQUxMX1RFU1RTKClgIGlzCitjYWxsZWQsIHByb2JhYmx5IGlu
IGBtYWluKClgLiBJZiB5b3UgdXNlIGBndGVzdF9tYWluYCwgeW91IG5lZWQgdG8gICAgICBjYWxs
Cit0aGlzIGJlZm9yZSBgbWFpbigpYCBzdGFydHMgZm9yIGl0IHRvIHRha2UgZWZmZWN0LiBPbmUg
d2F5IHRvIGRvIHRoaXMgaXMgdG8KK2RlZmluZSBhIGdsb2JhbCB2YXJpYWJsZSBsaWtlIHRoaXM6
CisKK2BgYAorOjp0ZXN0aW5nOjpFbnZpcm9ubWVudCogY29uc3QgZm9vX2VudiA9IDo6dGVzdGlu
Zzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBGb29FbnZpcm9ubWVudCk7CitgYGAKKwor
SG93ZXZlciwgd2Ugc3Ryb25nbHkgcmVjb21tZW5kIHlvdSB0byB3cml0ZSB5b3VyIG93biBgbWFp
bigpYCBhbmQgY2FsbAorYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCB0aGVyZSwgYXMgcmVs
eWluZyBvbiBpbml0aWFsaXphdGlvbiBvZiBnbG9iYWwKK3ZhcmlhYmxlcyBtYWtlcyB0aGUgY29k
ZSBoYXJkZXIgdG8gcmVhZCBhbmQgbWF5IGNhdXNlIHByb2JsZW1zIHdoZW4geW91CityZWdpc3Rl
ciBtdWx0aXBsZSBlbnZpcm9ubWVudHMgZnJvbSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMg
YW5kIHRoZQorZW52aXJvbm1lbnRzIGhhdmUgZGVwZW5kZW5jaWVzIGFtb25nIHRoZW0gKHJlbWVt
YmVyIHRoYXQgdGhlIGNvbXBpbGVyIGRvZXNuJ3QKK2d1YXJhbnRlZSB0aGUgb3JkZXIgaW4gd2hp
Y2ggZ2xvYmFsIHZhcmlhYmxlcyBmcm9tIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cworYXJl
IGluaXRpYWxpemVkKS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisK
KworIyBWYWx1ZSBQYXJhbWV0ZXJpemVkIFRlc3RzICMKKworX1ZhbHVlLXBhcmFtZXRlcml6ZWQg
dGVzdHNfIGFsbG93IHlvdSB0byB0ZXN0IHlvdXIgY29kZSB3aXRoIGRpZmZlcmVudAorcGFyYW1l
dGVycyB3aXRob3V0IHdyaXRpbmcgbXVsdGlwbGUgY29waWVzIG9mIHRoZSBzYW1lIHRlc3QuCisK
K1N1cHBvc2UgeW91IHdyaXRlIGEgdGVzdCBmb3IgeW91ciBjb2RlIGFuZCB0aGVuIHJlYWxpemUg
dGhhdCB5b3VyIGNvZGUgaXMgYWZmZWN0ZWQgYnkgYSBwcmVzZW5jZSBvZiBhIEJvb2xlYW4gY29t
bWFuZCBsaW5lIGZsYWcuCisKK2BgYAorVEVTVChNeUNvZGVUZXN0LCBUZXN0Rm9vKSB7CisgIC8v
IEEgY29kZSB0byB0ZXN0IGZvbygpLgorfQorYGBgCisKK1VzdWFsbHkgcGVvcGxlIGZhY3RvciB0
aGVpciB0ZXN0IGNvZGUgaW50byBhIGZ1bmN0aW9uIHdpdGggYSBCb29sZWFuIHBhcmFtZXRlciBp
biBzdWNoIHNpdHVhdGlvbnMuIFRoZSBmdW5jdGlvbiBzZXRzIHRoZSBmbGFnLCB0aGVuIGV4ZWN1
dGVzIHRoZSB0ZXN0aW5nIGNvZGUuCisKK2BgYAordm9pZCBUZXN0Rm9vSGVscGVyKGJvb2wgZmxh
Z192YWx1ZSkgeworICBmbGFnID0gZmxhZ192YWx1ZTsKKyAgLy8gQSBjb2RlIHRvIHRlc3QgZm9v
KCkuCit9CisKK1RFU1QoTXlDb2RlVGVzdCwgVGVzdEZvb28pIHsKKyAgVGVzdEZvb0hlbHBlcihm
YWxzZSk7CisgIFRlc3RGb29IZWxwZXIodHJ1ZSk7Cit9CitgYGAKKworQnV0IHRoaXMgc2V0dXAg
aGFzIHNlcmlvdXMgZHJhd2JhY2tzLiBGaXJzdCwgd2hlbiBhIHRlc3QgYXNzZXJ0aW9uIGZhaWxz
IGluIHlvdXIgdGVzdHMsIGl0IGJlY29tZXMgdW5jbGVhciB3aGF0IHZhbHVlIG9mIHRoZSBwYXJh
bWV0ZXIgY2F1c2VkIGl0IHRvIGZhaWwuIFlvdSBjYW4gc3RyZWFtIGEgY2xhcmlmeWluZyBtZXNz
YWdlIGludG8geW91ciBgRVhQRUNUYC9gQVNTRVJUYCBzdGF0ZW1lbnRzLCBidXQgaXQgeW91J2xs
IGhhdmUgdG8gZG8gaXQgd2l0aCBhbGwgb2YgdGhlbS4gU2Vjb25kLCB5b3UgaGF2ZSB0byBhZGQg
b25lIHN1Y2ggaGVscGVyIGZ1bmN0aW9uIHBlciB0ZXN0LiBXaGF0IGlmIHlvdSBoYXZlIHRlbiB0
ZXN0cz8gVHdlbnR5PyBBIGh1bmRyZWQ/CisKK1ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgd2ls
bCBsZXQgeW91IHdyaXRlIHlvdXIgdGVzdCBvbmx5IG9uY2UgYW5kIHRoZW4gZWFzaWx5IGluc3Rh
bnRpYXRlIGFuZCBydW4gaXQgd2l0aCBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHBhcmFtZXRlciB2
YWx1ZXMuCisKK0hlcmUgYXJlIHNvbWUgb3RoZXIgc2l0dWF0aW9ucyB3aGVuIHZhbHVlLXBhcmFt
ZXRlcml6ZWQgdGVzdHMgY29tZSBoYW5keToKKworICAqIFlvdSB3YW4gdG8gdGVzdCBkaWZmZXJl
bnQgaW1wbGVtZW50YXRpb25zIG9mIGFuIE9PIGludGVyZmFjZS4KKyAgKiBZb3Ugd2FudCB0byB0
ZXN0IHlvdXIgY29kZSBvdmVyIHZhcmlvdXMgaW5wdXRzIChhLmsuYS4gZGF0YS1kcml2ZW4gdGVz
dGluZykuIFRoaXMgZmVhdHVyZSBpcyBlYXN5IHRvIGFidXNlLCBzbyBwbGVhc2UgZXhlcmNpc2Ug
eW91ciBnb29kIHNlbnNlIHdoZW4gZG9pbmcgaXQhCisKKyMjIEhvdyB0byBXcml0ZSBWYWx1ZS1Q
YXJhbWV0ZXJpemVkIFRlc3RzICMjCisKK1RvIHdyaXRlIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dHMsIGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4dHVyZQorY2xhc3MuIEl0IG11c3QgYmUg
ZGVyaXZlZCBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08VD5gLCB3aGVyZSBgVGAKK2lz
IHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVlcy4gYFRlc3RXaXRoUGFyYW08VD5gIGlz
IGl0c2VsZgorZGVyaXZlZCBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RgLiBgVGAgY2FuIGJlIGFueSBj
b3B5YWJsZSB0eXBlLiBJZiBpdCdzCithIHJhdyBwb2ludGVyLCB5b3UgYXJlIHJlc3BvbnNpYmxl
IGZvciBtYW5hZ2luZyB0aGUgbGlmZXNwYW4gb2YgdGhlCitwb2ludGVkIHZhbHVlcy4KKworYGBg
CitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBj
aGFyKj4geworICAvLyBZb3UgY2FuIGltcGxlbWVudCBhbGwgdGhlIHVzdWFsIGZpeHR1cmUgY2xh
c3MgbWVtYmVycyBoZXJlLgorICAvLyBUbyBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyLCBjYWxs
IEdldFBhcmFtKCkgZnJvbSBjbGFzcworICAvLyBUZXN0V2l0aFBhcmFtPFQ+LgorfTsKK2BgYAor
CitUaGVuLCB1c2UgdGhlIGBURVNUX1BgIG1hY3JvIHRvIGRlZmluZSBhcyBtYW55IHRlc3QgcGF0
dGVybnMgdXNpbmcKK3RoaXMgZml4dHVyZSBhcyB5b3Ugd2FudC4gIFRoZSBgX1BgIHN1ZmZpeCBp
cyBmb3IgInBhcmFtZXRlcml6ZWQiIG9yCisicGF0dGVybiIsIHdoaWNoZXZlciB5b3UgcHJlZmVy
IHRvIHRoaW5rLgorCitgYGAKK1RFU1RfUChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJbnNp
ZGUgYSB0ZXN0LCBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyIHdpdGggdGhlIEdldFBhcmFtKCkg
bWV0aG9kCisgIC8vIG9mIHRoZSBUZXN0V2l0aFBhcmFtPFQ+IGNsYXNzOgorICBFWFBFQ1RfVFJV
RShmb28uQmxhaChHZXRQYXJhbSgpKSk7CisgIC4uLgorfQorCitURVNUX1AoRm9vVGVzdCwgSGFz
QmxhaEJsYWgpIHsKKyAgLi4uCit9CitgYGAKKworRmluYWxseSwgeW91IGNhbiB1c2UgYElOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QYCB0byBpbnN0YW50aWF0ZSB0aGUgdGVzdAorY2FzZSB3aXRoIGFu
eSBzZXQgb2YgcGFyYW1ldGVycyB5b3Ugd2FudC4gR29vZ2xlIFRlc3QgZGVmaW5lcyBhIG51bWJl
ciBvZgorZnVuY3Rpb25zIGZvciBnZW5lcmF0aW5nIHRlc3QgcGFyYW1ldGVycy4gVGhleSByZXR1
cm4gd2hhdCB3ZSBjYWxsCisoc3VycHJpc2UhKSBfcGFyYW1ldGVyIGdlbmVyYXRvcnNfLiBIZXJl
IGlzIGEgc3VtbWFyeSBvZiB0aGVtLAord2hpY2ggYXJlIGFsbCBpbiB0aGUgYHRlc3RpbmdgIG5h
bWVzcGFjZToKKworfCBgUmFuZ2UoYmVnaW4sIGVuZFssIHN0ZXBdKWAgfCBZaWVsZHMgdmFsdWVz
IGB7YmVnaW4sIGJlZ2luK3N0ZXAsIGJlZ2luK3N0ZXArc3RlcCwgLi4ufWAuIFRoZSB2YWx1ZXMg
ZG8gbm90IGluY2x1ZGUgYGVuZGAuIGBzdGVwYCBkZWZhdWx0cyB0byAxLiB8Cit8Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYFZhbHVlcyh2MSwgdjIsIC4uLiwgdk4pYCAgIHwg
WWllbGRzIHZhbHVlcyBge3YxLCB2MiwgLi4uLCB2Tn1gLiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorfCBgVmFsdWVzSW4oY29udGFpbmVyKWAgYW5kIGBWYWx1ZXNJbihiZWdpbiwgZW5kKWAgfCBZ
aWVsZHMgdmFsdWVzIGZyb20gYSBDLXN0eWxlIGFycmF5LCBhbiBTVEwtc3R5bGUgY29udGFpbmVy
LCBvciBhbiBpdGVyYXRvciByYW5nZSBgW2JlZ2luLCBlbmQpYC4gICAgICAgICAgICAgICAgICB8
Cit8IGBCb29sKClgICAgICAgICAgICAgICAgICAgICB8IFlpZWxkcyBzZXF1ZW5jZSBge2ZhbHNl
LCB0cnVlfWAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYENvbWJpbmUoZzEsIGcyLCAu
Li4sIGdOKWAgIHwgWWllbGRzIGFsbCBjb21iaW5hdGlvbnMgKHRoZSBDYXJ0ZXNpYW4gcHJvZHVj
dCBmb3IgdGhlIG1hdGggc2F2dnkpIG9mIHRoZSB2YWx1ZXMgZ2VuZXJhdGVkIGJ5IHRoZSBgTmAg
Z2VuZXJhdG9ycy4gVGhpcyBpcyBvbmx5IGF2YWlsYWJsZSBpZiB5b3VyIHN5c3RlbSBwcm92aWRl
cyB0aGUgYDx0cjEvdHVwbGU+YCBoZWFkZXIuIElmIHlvdSBhcmUgc3VyZSB5b3VyIHN5c3RlbSBk
b2VzLCBhbmQgR29vZ2xlIFRlc3QgZGlzYWdyZWVzLCB5b3UgY2FuIG92ZXJyaWRlIGl0IGJ5IGRl
ZmluaW5nIGBHVEVTVF9IQVNfVFIxX1RVUExFPTFgLiBTZWUgY29tbWVudHMgaW4gW2luY2x1ZGUv
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oXSguLi9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uIHwKKworRm9yIG1vcmUgZGV0YWlscywg
c2VlIHRoZSBjb21tZW50cyBhdCB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlc2UgZnVuY3Rpb25zIGlu
IHRoZSBbc291cmNlIGNvZGVdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oKS4K
KworVGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgd2lsbCBpbnN0YW50aWF0ZSB0ZXN0cyBmcm9tIHRo
ZSBgRm9vVGVzdGAgdGVzdCBjYXNlCitlYWNoIHdpdGggcGFyYW1ldGVyIHZhbHVlcyBgIm1lZW55
ImAsIGAibWlueSJgLCBhbmQgYCJtb2UiYC4KKworYGBgCitJTlNUQU5USUFURV9URVNUX0NBU0Vf
UChJbnN0YW50aWF0aW9uTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvb1Rlc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygibWVlbnkiLCAibWlueSIs
ICJtb2UiKSk7CitgYGAKKworVG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50IGluc3RhbmNlcyBvZiB0
aGUgcGF0dGVybiAoeWVzLCB5b3UgY2FuCitpbnN0YW50aWF0ZSBpdCBtb3JlIHRoYW4gb25jZSks
IHRoZSBmaXJzdCBhcmd1bWVudCB0bworYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCBpcyBhIHBy
ZWZpeCB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGFjdHVhbAordGVzdCBjYXNlIG5hbWUuIFJl
bWVtYmVyIHRvIHBpY2sgdW5pcXVlIHByZWZpeGVzIGZvciBkaWZmZXJlbnQKK2luc3RhbnRpYXRp
b25zLiBUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhhdmUgdGhl
c2UKK25hbWVzOgorCisgICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMGAg
Zm9yIGAibWVlbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzFg
IGZvciBgIm1pbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzJg
IGZvciBgIm1vZSJgCisgICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgv
MGAgZm9yIGAibWVlbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhC
bGFoLzFgIGZvciBgIm1pbnkiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0Js
YWhCbGFoLzJgIGZvciBgIm1vZSJgCisKK1lvdSBjYW4gdXNlIHRoZXNlIG5hbWVzIGluIFstLWd0
ZXN0XC1maWx0ZXJdKCNydW5uaW5nLWEtc3Vic2V0LW9mLXRoZS10ZXN0cykuCisKK1RoaXMgc3Rh
dGVtZW50IHdpbGwgaW5zdGFudGlhdGUgYWxsIHRlc3RzIGZyb20gYEZvb1Rlc3RgIGFnYWluLCBl
YWNoCit3aXRoIHBhcmFtZXRlciB2YWx1ZXMgYCJjYXQiYCBhbmQgYCJkb2ciYDoKKworYGBgCitj
b25zdCBjaGFyKiBwZXRzW10gPSB7ImNhdCIsICJkb2cifTsKK0lOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QKEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIDo6dGVzdGluZzo6VmFsdWVzSW4ocGV0cykpOworYGBgCisKK1RoZSB0ZXN0cyBmcm9t
IHRoZSBpbnN0YW50aWF0aW9uIGFib3ZlIHdpbGwgaGF2ZSB0aGVzZSBuYW1lczoKKworICAqIGBB
bm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8wYCBmb3IgYCJjYXQiYAor
ICAqIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8xYCBmb3IgYCJk
b2ciYAorICAqIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8w
YCBmb3IgYCJjYXQiYAorICAqIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNC
bGFoQmxhaC8xYCBmb3IgYCJkb2ciYAorCitQbGVhc2Ugbm90ZSB0aGF0IGBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUGAgd2lsbCBpbnN0YW50aWF0ZSBfYWxsXwordGVzdHMgaW4gdGhlIGdpdmVuIHRl
c3QgY2FzZSwgd2hldGhlciB0aGVpciBkZWZpbml0aW9ucyBjb21lIGJlZm9yZSBvcgorX2FmdGVy
XyB0aGUgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCBzdGF0ZW1lbnQuCisKK1lvdSBjYW4gc2Vl
CitbdGhlc2VdKC4uL3NhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYykKK1tmaWxlc10oLi4vc2Ft
cGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjKSBmb3IgbW9yZSBleGFtcGxlcy4KKworX0F2YWlsYWJp
bGl0eV86IExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYzsg
c2luY2UgdmVyc2lvbiAxLjIuMC4KKworIyMgQ3JlYXRpbmcgVmFsdWUtUGFyYW1ldGVyaXplZCBB
YnN0cmFjdCBUZXN0cyAjIworCitJbiB0aGUgYWJvdmUsIHdlIGRlZmluZSBhbmQgaW5zdGFudGlh
dGUgYEZvb1Rlc3RgIGluIHRoZSBzYW1lIHNvdXJjZQorZmlsZS4gU29tZXRpbWVzIHlvdSBtYXkg
d2FudCB0byBkZWZpbmUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBpbiBhCitsaWJyYXJ5IGFu
ZCBsZXQgb3RoZXIgcGVvcGxlIGluc3RhbnRpYXRlIHRoZW0gbGF0ZXIuIFRoaXMgcGF0dGVybiBp
cwora25vd24gYXMgPGk+YWJzdHJhY3QgdGVzdHM8L2k+LiBBcyBhbiBleGFtcGxlIG9mIGl0cyBh
cHBsaWNhdGlvbiwgd2hlbiB5b3UKK2FyZSBkZXNpZ25pbmcgYW4gaW50ZXJmYWNlIHlvdSBjYW4g
d3JpdGUgYSBzdGFuZGFyZCBzdWl0ZSBvZiBhYnN0cmFjdAordGVzdHMgKHBlcmhhcHMgdXNpbmcg
YSBmYWN0b3J5IGZ1bmN0aW9uIGFzIHRoZSB0ZXN0IHBhcmFtZXRlcikgdGhhdAorYWxsIGltcGxl
bWVudGF0aW9ucyBvZiB0aGUgaW50ZXJmYWNlIGFyZSBleHBlY3RlZCB0byBwYXNzLiBXaGVuCitz
b21lb25lIGltcGxlbWVudHMgdGhlIGludGVyZmFjZSwgaGUgY2FuIGluc3RhbnRpYXRlIHlvdXIg
c3VpdGUgdG8gZ2V0CithbGwgdGhlIGludGVyZmFjZS1jb25mb3JtYW5jZSB0ZXN0cyBmb3IgZnJl
ZS4KKworVG8gZGVmaW5lIGFic3RyYWN0IHRlc3RzLCB5b3Ugc2hvdWxkIG9yZ2FuaXplIHlvdXIg
Y29kZSBsaWtlIHRoaXM6CisKKyAgMS4gUHV0IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBwYXJhbWV0
ZXJpemVkIHRlc3QgZml4dHVyZSBjbGFzcyAoZS5nLiBgRm9vVGVzdGApIGluIGEgaGVhZGVyIGZp
bGUsIHNheSBgZm9vX3BhcmFtX3Rlc3QuaGAuIFRoaW5rIG9mIHRoaXMgYXMgX2RlY2xhcmluZ18g
eW91ciBhYnN0cmFjdCB0ZXN0cy4KKyAgMS4gUHV0IHRoZSBgVEVTVF9QYCBkZWZpbml0aW9ucyBp
biBgZm9vX3BhcmFtX3Rlc3QuY2NgLCB3aGljaCBpbmNsdWRlcyBgZm9vX3BhcmFtX3Rlc3QuaGAu
IFRoaW5rIG9mIHRoaXMgYXMgX2ltcGxlbWVudGluZ18geW91ciBhYnN0cmFjdCB0ZXN0cy4KKwor
T25jZSB0aGV5IGFyZSBkZWZpbmVkLCB5b3UgY2FuIGluc3RhbnRpYXRlIHRoZW0gYnkgaW5jbHVk
aW5nCitgZm9vX3BhcmFtX3Rlc3QuaGAsIGludm9raW5nIGBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UCgpYCwgYW5kIGxpbmtpbmcKK3dpdGggYGZvb19wYXJhbV90ZXN0LmNjYC4gWW91IGNhbiBpbnN0
YW50aWF0ZSB0aGUgc2FtZSBhYnN0cmFjdCB0ZXN0CitjYXNlIG11bHRpcGxlIHRpbWVzLCBwb3Nz
aWJseSBpbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgorCisjIFR5cGVkIFRlc3RzICMKKworU3Vw
cG9zZSB5b3UgaGF2ZSBtdWx0aXBsZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHNhbWUgaW50ZXJm
YWNlIGFuZAord2FudCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb2YgdGhlbSBzYXRpc2Z5IHNvbWUg
Y29tbW9uIHJlcXVpcmVtZW50cy4KK09yLCB5b3UgbWF5IGhhdmUgZGVmaW5lZCBzZXZlcmFsIHR5
cGVzIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGNvbmZvcm0gdG8KK3RoZSBzYW1lICJjb25jZXB0IiBh
bmQgeW91IHdhbnQgdG8gdmVyaWZ5IGl0LiAgSW4gYm90aCBjYXNlcywgeW91IHdhbnQKK3RoZSBz
YW1lIHRlc3QgbG9naWMgcmVwZWF0ZWQgZm9yIGRpZmZlcmVudCB0eXBlcy4KKworV2hpbGUgeW91
IGNhbiB3cml0ZSBvbmUgYFRFU1RgIG9yIGBURVNUX0ZgIGZvciBlYWNoIHR5cGUgeW91IHdhbnQg
dG8KK3Rlc3QgKGFuZCB5b3UgbWF5IGV2ZW4gZmFjdG9yIHRoZSB0ZXN0IGxvZ2ljIGludG8gYSBm
dW5jdGlvbiB0ZW1wbGF0ZQordGhhdCB5b3UgaW52b2tlIGZyb20gdGhlIGBURVNUYCksIGl0J3Mg
dGVkaW91cyBhbmQgZG9lc24ndCBzY2FsZToKK2lmIHlvdSB3YW50IF9tXyB0ZXN0cyBvdmVyIF9u
XyB0eXBlcywgeW91J2xsIGVuZCB1cCB3cml0aW5nIF9tXCpuXworYFRFU1Rgcy4KKworX1R5cGVk
IHRlc3RzXyBhbGxvdyB5b3UgdG8gcmVwZWF0IHRoZSBzYW1lIHRlc3QgbG9naWMgb3ZlciBhIGxp
c3Qgb2YKK3R5cGVzLiAgWW91IG9ubHkgbmVlZCB0byB3cml0ZSB0aGUgdGVzdCBsb2dpYyBvbmNl
LCBhbHRob3VnaCB5b3UgbXVzdAora25vdyB0aGUgdHlwZSBsaXN0IHdoZW4gd3JpdGluZyB0eXBl
ZCB0ZXN0cy4gIEhlcmUncyBob3cgeW91IGRvIGl0OgorCitGaXJzdCwgZGVmaW5lIGEgZml4dHVy
ZSBjbGFzcyB0ZW1wbGF0ZS4gIEl0IHNob3VsZCBiZSBwYXJhbWV0ZXJpemVkCitieSBhIHR5cGUu
ICBSZW1lbWJlciB0byBkZXJpdmUgaXQgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0YDoKKworYGBgCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHsKKyBwdWJsaWM6CisgIC4uLgorICB0eXBlZGVmIHN0ZDo6bGlzdDxUPiBMaXN0OworICBz
dGF0aWMgVCBzaGFyZWRfOworICBUIHZhbHVlXzsKK307CitgYGAKKworTmV4dCwgYXNzb2NpYXRl
IGEgbGlzdCBvZiB0eXBlcyB3aXRoIHRoZSB0ZXN0IGNhc2UsIHdoaWNoIHdpbGwgYmUKK3JlcGVh
dGVkIGZvciBlYWNoIHR5cGUgaW4gdGhlIGxpc3Q6CisKK2BgYAordHlwZWRlZiA6OnRlc3Rpbmc6
OlR5cGVzPGNoYXIsIGludCwgdW5zaWduZWQgaW50PiBNeVR5cGVzOworVFlQRURfVEVTVF9DQVNF
KEZvb1Rlc3QsIE15VHlwZXMpOworYGBgCisKK1RoZSBgdHlwZWRlZmAgaXMgbmVjZXNzYXJ5IGZv
ciB0aGUgYFRZUEVEX1RFU1RfQ0FTRWAgbWFjcm8gdG8gcGFyc2UKK2NvcnJlY3RseS4gIE90aGVy
d2lzZSB0aGUgY29tcGlsZXIgd2lsbCB0aGluayB0aGF0IGVhY2ggY29tbWEgaW4gdGhlCit0eXBl
IGxpc3QgaW50cm9kdWNlcyBhIG5ldyBtYWNybyBhcmd1bWVudC4KKworVGhlbiwgdXNlIGBUWVBF
RF9URVNUKClgIGluc3RlYWQgb2YgYFRFU1RfRigpYCB0byBkZWZpbmUgYSB0eXBlZCB0ZXN0Citm
b3IgdGhpcyB0ZXN0IGNhc2UuICBZb3UgY2FuIHJlcGVhdCB0aGlzIGFzIG1hbnkgdGltZXMgYXMg
eW91IHdhbnQ6CisKK2BgYAorVFlQRURfVEVTVChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJ
bnNpZGUgYSB0ZXN0LCByZWZlciB0byB0aGUgc3BlY2lhbCBuYW1lIFR5cGVQYXJhbSB0byBnZXQg
dGhlIHR5cGUKKyAgLy8gcGFyYW1ldGVyLiAgU2luY2Ugd2UgYXJlIGluc2lkZSBhIGRlcml2ZWQg
Y2xhc3MgdGVtcGxhdGUsIEMrKyByZXF1aXJlcworICAvLyB1cyB0byB2aXNpdCB0aGUgbWVtYmVy
cyBvZiBGb29UZXN0IHZpYSAndGhpcycuCisgIFR5cGVQYXJhbSBuID0gdGhpcy0+dmFsdWVfOwor
CisgIC8vIFRvIHZpc2l0IHN0YXRpYyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlLCBhZGQgdGhlICdU
ZXN0Rml4dHVyZTo6JworICAvLyBwcmVmaXguCisgIG4gKz0gVGVzdEZpeHR1cmU6OnNoYXJlZF87
CisKKyAgLy8gVG8gcmVmZXIgdG8gdHlwZWRlZnMgaW4gdGhlIGZpeHR1cmUsIGFkZCB0aGUgJ3R5
cGVuYW1lIFRlc3RGaXh0dXJlOjonCisgIC8vIHByZWZpeC4gIFRoZSAndHlwZW5hbWUnIGlzIHJl
cXVpcmVkIHRvIHNhdGlzZnkgdGhlIGNvbXBpbGVyLgorICB0eXBlbmFtZSBUZXN0Rml4dHVyZTo6
TGlzdCB2YWx1ZXM7CisgIHZhbHVlcy5wdXNoX2JhY2sobik7CisgIC4uLgorfQorCitUWVBFRF9U
RVNUKEZvb1Rlc3QsIEhhc1Byb3BlcnR5QSkgeyAuLi4gfQorYGBgCisKK1lvdSBjYW4gc2VlIGBz
YW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2NgIGZvciBhIGNvbXBsZXRlIGV4YW1wbGUuCisKK19B
dmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUp
LCBNYWM7CitzaW5jZSB2ZXJzaW9uIDEuMS4wLgorCisjIFR5cGUtUGFyYW1ldGVyaXplZCBUZXN0
cyAjCisKK19UeXBlLXBhcmFtZXRlcml6ZWQgdGVzdHNfIGFyZSBsaWtlIHR5cGVkIHRlc3RzLCBl
eGNlcHQgdGhhdCB0aGV5Citkb24ndCByZXF1aXJlIHlvdSB0byBrbm93IHRoZSBsaXN0IG9mIHR5
cGVzIGFoZWFkIG9mIHRpbWUuICBJbnN0ZWFkLAoreW91IGNhbiBkZWZpbmUgdGhlIHRlc3QgbG9n
aWMgZmlyc3QgYW5kIGluc3RhbnRpYXRlIGl0IHdpdGggZGlmZmVyZW50Cit0eXBlIGxpc3RzIGxh
dGVyLiAgWW91IGNhbiBldmVuIGluc3RhbnRpYXRlIGl0IG1vcmUgdGhhbiBvbmNlIGluIHRoZQor
c2FtZSBwcm9ncmFtLgorCitJZiB5b3UgYXJlIGRlc2lnbmluZyBhbiBpbnRlcmZhY2Ugb3IgY29u
Y2VwdCwgeW91IGNhbiBkZWZpbmUgYSBzdWl0ZQorb2YgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3Rz
IHRvIHZlcmlmeSBwcm9wZXJ0aWVzIHRoYXQgYW55IHZhbGlkCitpbXBsZW1lbnRhdGlvbiBvZiB0
aGUgaW50ZXJmYWNlL2NvbmNlcHQgc2hvdWxkIGhhdmUuICBUaGVuLCB0aGUgYXV0aG9yCitvZiBl
YWNoIGltcGxlbWVudGF0aW9uIGNhbiBqdXN0IGluc3RhbnRpYXRlIHRoZSB0ZXN0IHN1aXRlIHdp
dGggaGlzCit0eXBlIHRvIHZlcmlmeSB0aGF0IGl0IGNvbmZvcm1zIHRvIHRoZSByZXF1aXJlbWVu
dHMsIHdpdGhvdXQgaGF2aW5nIHRvCit3cml0ZSBzaW1pbGFyIHRlc3RzIHJlcGVhdGVkbHkuICBI
ZXJlJ3MgYW4gZXhhbXBsZToKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxh
dGUsIGFzIHdlIGRpZCB3aXRoIHR5cGVkIHRlc3RzOgorCitgYGAKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICAuLi4KK307
CitgYGAKKworTmV4dCwgZGVjbGFyZSB0aGF0IHlvdSB3aWxsIGRlZmluZSBhIHR5cGUtcGFyYW1l
dGVyaXplZCB0ZXN0IGNhc2U6CisKK2BgYAorVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7Citg
YGAKKworVGhlIGBfUGAgc3VmZml4IGlzIGZvciAicGFyYW1ldGVyaXplZCIgb3IgInBhdHRlcm4i
LCB3aGljaGV2ZXIgeW91CitwcmVmZXIgdG8gdGhpbmsuCisKK1RoZW4sIHVzZSBgVFlQRURfVEVT
VF9QKClgIHRvIGRlZmluZSBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LiAgWW91CitjYW4gcmVw
ZWF0IHRoaXMgYXMgbWFueSB0aW1lcyBhcyB5b3Ugd2FudDoKKworYGBgCitUWVBFRF9URVNUX1Ao
Rm9vVGVzdCwgRG9lc0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIgdG8gVHlwZVBh
cmFtIHRvIGdldCB0aGUgdHlwZSBwYXJhbWV0ZXIuCisgIFR5cGVQYXJhbSBuID0gMDsKKyAgLi4u
Cit9CisKK1RZUEVEX1RFU1RfUChGb29UZXN0LCBIYXNQcm9wZXJ0eUEpIHsgLi4uIH0KK2BgYAor
CitOb3cgdGhlIHRyaWNreSBwYXJ0OiB5b3UgbmVlZCB0byByZWdpc3RlciBhbGwgdGVzdCBwYXR0
ZXJucyB1c2luZyB0aGUKK2BSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUGAgbWFjcm8gYmVmb3Jl
IHlvdSBjYW4gaW5zdGFudGlhdGUgdGhlbS4KK1RoZSBmaXJzdCBhcmd1bWVudCBvZiB0aGUgbWFj
cm8gaXMgdGhlIHRlc3QgY2FzZSBuYW1lOyB0aGUgcmVzdCBhcmUKK3RoZSBuYW1lcyBvZiB0aGUg
dGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2U6CisKK2BgYAorUkVHSVNURVJfVFlQRURfVEVTVF9DQVNF
X1AoRm9vVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERvZXNCbGFoLCBIYXNQcm9w
ZXJ0eUEpOworYGBgCisKK0ZpbmFsbHksIHlvdSBhcmUgZnJlZSB0byBpbnN0YW50aWF0ZSB0aGUg
cGF0dGVybiB3aXRoIHRoZSB0eXBlcyB5b3UKK3dhbnQuICBJZiB5b3UgcHV0IHRoZSBhYm92ZSBj
b2RlIGluIGEgaGVhZGVyIGZpbGUsIHlvdSBjYW4gYCNpbmNsdWRlYAoraXQgaW4gbXVsdGlwbGUg
QysrIHNvdXJjZSBmaWxlcyBhbmQgaW5zdGFudGlhdGUgaXQgbXVsdGlwbGUgdGltZXMuCisKK2Bg
YAordHlwZWRlZiA6OnRlc3Rpbmc6OlR5cGVzPGNoYXIsIGludCwgdW5zaWduZWQgaW50PiBNeVR5
cGVzOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMp
OworYGBgCisKK1RvIGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRl
cm4sIHRoZSBmaXJzdCBhcmd1bWVudAordG8gdGhlIGBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NB
U0VfUGAgbWFjcm8gaXMgYSBwcmVmaXggdGhhdCB3aWxsIGJlCithZGRlZCB0byB0aGUgYWN0dWFs
IHRlc3QgY2FzZSBuYW1lLiAgUmVtZW1iZXIgdG8gcGljayB1bmlxdWUgcHJlZml4ZXMKK2ZvciBk
aWZmZXJlbnQgaW5zdGFuY2VzLgorCitJbiB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoZSB0eXBl
IGxpc3QgY29udGFpbnMgb25seSBvbmUgdHlwZSwgeW91CitjYW4gd3JpdGUgdGhhdCB0eXBlIGRp
cmVjdGx5IHdpdGhvdXQgYDo6dGVzdGluZzo6VHlwZXM8Li4uPmAsIGxpa2UgdGhpczoKKworYGBg
CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgaW50KTsKK2BgYAor
CitZb3UgY2FuIHNlZSBgc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjYCBmb3IgYSBjb21wbGV0
ZSBleGFtcGxlLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1T
VkMgOC4wIG9yIGFib3ZlKSwgTWFjOworc2luY2UgdmVyc2lvbiAxLjEuMC4KKworIyBUZXN0aW5n
IFByaXZhdGUgQ29kZSAjCisKK0lmIHlvdSBjaGFuZ2UgeW91ciBzb2Z0d2FyZSdzIGludGVybmFs
IGltcGxlbWVudGF0aW9uLCB5b3VyIHRlc3RzIHNob3VsZCBub3QKK2JyZWFrIGFzIGxvbmcgYXMg
dGhlIGNoYW5nZSBpcyBub3Qgb2JzZXJ2YWJsZSBieSB1c2Vycy4gVGhlcmVmb3JlLCBwZXIgdGhl
CitfYmxhY2stYm94IHRlc3RpbmcgcHJpbmNpcGxlXywgbW9zdCBvZiB0aGUgdGltZSB5b3Ugc2hv
dWxkIHRlc3QgeW91ciBjb2RlCit0aHJvdWdoIGl0cyBwdWJsaWMgaW50ZXJmYWNlcy4KKworSWYg
eW91IHN0aWxsIGZpbmQgeW91cnNlbGYgbmVlZGluZyB0byB0ZXN0IGludGVybmFsIGltcGxlbWVu
dGF0aW9uIGNvZGUsCitjb25zaWRlciBpZiB0aGVyZSdzIGEgYmV0dGVyIGRlc2lnbiB0aGF0IHdv
dWxkbid0IHJlcXVpcmUgeW91IHRvIGRvIHNvLiBJZiB5b3UKK2Fic29sdXRlbHkgaGF2ZSB0byB0
ZXN0IG5vbi1wdWJsaWMgaW50ZXJmYWNlIGNvZGUgdGhvdWdoLCB5b3UgY2FuLiBUaGVyZSBhcmUK
K3R3byBjYXNlcyB0byBjb25zaWRlcjoKKworICAqIFN0YXRpYyBmdW5jdGlvbnMgKF9ub3RfIHRo
ZSBzYW1lIGFzIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zISkgb3IgdW5uYW1lZCBuYW1lc3BhY2Vz
LCBhbmQKKyAgKiBQcml2YXRlIG9yIHByb3RlY3RlZCBjbGFzcyBtZW1iZXJzCisKKyMjIFN0YXRp
YyBGdW5jdGlvbnMgIyMKKworQm90aCBzdGF0aWMgZnVuY3Rpb25zIGFuZCBkZWZpbml0aW9ucy9k
ZWNsYXJhdGlvbnMgaW4gYW4gdW5uYW1lZCBuYW1lc3BhY2UgYXJlCitvbmx5IHZpc2libGUgd2l0
aGluIHRoZSBzYW1lIHRyYW5zbGF0aW9uIHVuaXQuIFRvIHRlc3QgdGhlbSwgeW91IGNhbiBgI2lu
Y2x1ZGVgCit0aGUgZW50aXJlIGAuY2NgIGZpbGUgYmVpbmcgdGVzdGVkIGluIHlvdXIgYCpfdGVz
dC5jY2AgZmlsZS4gKGAjaW5jbHVkZWBpbmcgYC5jY2AKK2ZpbGVzIGlzIG5vdCBhIGdvb2Qgd2F5
IHRvIHJldXNlIGNvZGUgLSB5b3Ugc2hvdWxkIG5vdCBkbyB0aGlzIGluIHByb2R1Y3Rpb24KK2Nv
ZGUhKQorCitIb3dldmVyLCBhIGJldHRlciBhcHByb2FjaCBpcyB0byBtb3ZlIHRoZSBwcml2YXRl
IGNvZGUgaW50byB0aGUKK2Bmb286OmludGVybmFsYCBuYW1lc3BhY2UsIHdoZXJlIGBmb29gIGlz
IHRoZSBuYW1lc3BhY2UgeW91ciBwcm9qZWN0IG5vcm1hbGx5Cit1c2VzLCBhbmQgcHV0IHRoZSBw
cml2YXRlIGRlY2xhcmF0aW9ucyBpbiBhIGAqLWludGVybmFsLmhgIGZpbGUuIFlvdXIKK3Byb2R1
Y3Rpb24gYC5jY2AgZmlsZXMgYW5kIHlvdXIgdGVzdHMgYXJlIGFsbG93ZWQgdG8gaW5jbHVkZSB0
aGlzIGludGVybmFsCitoZWFkZXIsIGJ1dCB5b3VyIGNsaWVudHMgYXJlIG5vdC4gVGhpcyB3YXks
IHlvdSBjYW4gZnVsbHkgdGVzdCB5b3VyIGludGVybmFsCitpbXBsZW1lbnRhdGlvbiB3aXRob3V0
IGxlYWtpbmcgaXQgdG8geW91ciBjbGllbnRzLgorCisjIyBQcml2YXRlIENsYXNzIE1lbWJlcnMg
IyMKKworUHJpdmF0ZSBjbGFzcyBtZW1iZXJzIGFyZSBvbmx5IGFjY2Vzc2libGUgZnJvbSB3aXRo
aW4gdGhlIGNsYXNzIG9yIGJ5IGZyaWVuZHMuCitUbyBhY2Nlc3MgYSBjbGFzcycgcHJpdmF0ZSBt
ZW1iZXJzLCB5b3UgY2FuIGRlY2xhcmUgeW91ciB0ZXN0IGZpeHR1cmUgYXMgYQorZnJpZW5kIHRv
IHRoZSBjbGFzcyBhbmQgZGVmaW5lIGFjY2Vzc29ycyBpbiB5b3VyIGZpeHR1cmUuIFRlc3RzIHVz
aW5nIHRoZQorZml4dHVyZSBjYW4gdGhlbiBhY2Nlc3MgdGhlIHByaXZhdGUgbWVtYmVycyBvZiB5
b3VyIHByb2R1Y3Rpb24gY2xhc3MgdmlhIHRoZQorYWNjZXNzb3JzIGluIHRoZSBmaXh0dXJlLiBO
b3RlIHRoYXQgZXZlbiB0aG91Z2ggeW91ciBmaXh0dXJlIGlzIGEgZnJpZW5kIHRvCit5b3VyIHBy
b2R1Y3Rpb24gY2xhc3MsIHlvdXIgdGVzdHMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IGZyaWVuZHMg
dG8gaXQsIGFzIHRoZXkKK2FyZSB0ZWNobmljYWxseSBkZWZpbmVkIGluIHN1Yi1jbGFzc2VzIG9m
IHRoZSBmaXh0dXJlLgorCitBbm90aGVyIHdheSB0byB0ZXN0IHByaXZhdGUgbWVtYmVycyBpcyB0
byByZWZhY3RvciB0aGVtIGludG8gYW4gaW1wbGVtZW50YXRpb24KK2NsYXNzLCB3aGljaCBpcyB0
aGVuIGRlY2xhcmVkIGluIGEgYCotaW50ZXJuYWwuaGAgZmlsZS4gWW91ciBjbGllbnRzIGFyZW4n
dAorYWxsb3dlZCB0byBpbmNsdWRlIHRoaXMgaGVhZGVyIGJ1dCB5b3VyIHRlc3RzIGNhbi4gU3Vj
aCBpcyBjYWxsZWQgdGhlIFBpbXBsCisoUHJpdmF0ZSBJbXBsZW1lbnRhdGlvbikgaWRpb20uCisK
K09yLCB5b3UgY2FuIGRlY2xhcmUgYW4gaW5kaXZpZHVhbCB0ZXN0IGFzIGEgZnJpZW5kIG9mIHlv
dXIgY2xhc3MgYnkgYWRkaW5nIHRoaXMKK2xpbmUgaW4gdGhlIGNsYXNzIGJvZHk6CisKK2BgYAor
RlJJRU5EX1RFU1QoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSk7CitgYGAKKworRm9yIGV4YW1wbGUs
CitgYGAKKy8vIGZvby5oCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3RfcHJvZC5oPgorCisvLyBEZWZp
bmVzIEZSSUVORF9URVNULgorY2xhc3MgRm9vIHsKKyAgLi4uCisgcHJpdmF0ZToKKyAgRlJJRU5E
X1RFU1QoRm9vVGVzdCwgQmFyUmV0dXJuc1plcm9Pbk51bGwpOworICBpbnQgQmFyKHZvaWQqIHgp
OworfTsKKworLy8gZm9vX3Rlc3QuY2MKKy4uLgorVEVTVChGb29UZXN0LCBCYXJSZXR1cm5zWmVy
b09uTnVsbCkgeworICBGb28gZm9vOworICBFWFBFQ1RfRVEoMCwgZm9vLkJhcihOVUxMKSk7Cisg
IC8vIFVzZXMgRm9vJ3MgcHJpdmF0ZSBtZW1iZXIgQmFyKCkuCit9CitgYGAKKworUGF5IHNwZWNp
YWwgYXR0ZW50aW9uIHdoZW4geW91ciBjbGFzcyBpcyBkZWZpbmVkIGluIGEgbmFtZXNwYWNlLCBh
cyB5b3Ugc2hvdWxkCitkZWZpbmUgeW91ciB0ZXN0IGZpeHR1cmVzIGFuZCB0ZXN0cyBpbiB0aGUg
c2FtZSBuYW1lc3BhY2UgaWYgeW91IHdhbnQgdGhlbSB0bworYmUgZnJpZW5kcyBvZiB5b3VyIGNs
YXNzLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGNvZGUgdG8gYmUgdGVzdGVkIGxvb2tzIGxpa2U6CisK
K2BgYAorbmFtZXNwYWNlIG15X25hbWVzcGFjZSB7CisKK2NsYXNzIEZvbyB7CisgIGZyaWVuZCBj
bGFzcyBGb29UZXN0OworICBGUklFTkRfVEVTVChGb29UZXN0LCBCYXIpOworICBGUklFTkRfVEVT
VChGb29UZXN0LCBCYXopOworICAuLi4KKyAgZGVmaW5pdGlvbiBvZiB0aGUgY2xhc3MgRm9vCisg
IC4uLgorfTsKKworfSAgLy8gbmFtZXNwYWNlIG15X25hbWVzcGFjZQorYGBgCisKK1lvdXIgdGVz
dCBjb2RlIHNob3VsZCBiZSBzb21ldGhpbmcgbGlrZToKKworYGBgCituYW1lc3BhY2UgbXlfbmFt
ZXNwYWNlIHsKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90
ZWN0ZWQ6CisgIC4uLgorfTsKKworVEVTVF9GKEZvb1Rlc3QsIEJhcikgeyAuLi4gfQorVEVTVF9G
KEZvb1Rlc3QsIEJheikgeyAuLi4gfQorCit9ICAvLyBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlCitg
YGAKKworIyBDYXRjaGluZyBGYWlsdXJlcyAjCisKK0lmIHlvdSBhcmUgYnVpbGRpbmcgYSB0ZXN0
aW5nIHV0aWxpdHkgb24gdG9wIG9mIEdvb2dsZSBUZXN0LCB5b3UnbGwKK3dhbnQgdG8gdGVzdCB5
b3VyIHV0aWxpdHkuICBXaGF0IGZyYW1ld29yayB3b3VsZCB5b3UgdXNlIHRvIHRlc3QgaXQ/CitH
b29nbGUgVGVzdCwgb2YgY291cnNlLgorCitUaGUgY2hhbGxlbmdlIGlzIHRvIHZlcmlmeSB0aGF0
IHlvdXIgdGVzdGluZyB1dGlsaXR5IHJlcG9ydHMgZmFpbHVyZXMKK2NvcnJlY3RseS4gIEluIGZy
YW1ld29ya3MgdGhhdCByZXBvcnQgYSBmYWlsdXJlIGJ5IHRocm93aW5nIGFuCitleGNlcHRpb24s
IHlvdSBjb3VsZCBjYXRjaCB0aGUgZXhjZXB0aW9uIGFuZCBhc3NlcnQgb24gaXQuICBCdXQgR29v
Z2xlCitUZXN0IGRvZXNuJ3QgdXNlIGV4Y2VwdGlvbnMsIHNvIGhvdyBkbyB3ZSB0ZXN0IHRoYXQg
YSBwaWVjZSBvZiBjb2RlCitnZW5lcmF0ZXMgYW4gZXhwZWN0ZWQgZmFpbHVyZT8KKworYDxndGVz
dC9ndGVzdC1zcGkuaD5gIGNvbnRhaW5zIHNvbWUgY29uc3RydWN0cyB0byBkbyB0aGlzLiAgQWZ0
ZXIKK2AjaW5jbHVkZWBpbmcgdGhpcyBoZWFkZXIsIHlvdSBjYW4gdXNlCisKK3wgYEVYUEVDVF9G
QVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50LCBzdWJzdHJpbmdfYCk7YCB8Cit8Oi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorCit0byBhc3NlcnQgdGhh
dCBfc3RhdGVtZW50XyBnZW5lcmF0ZXMgYSBmYXRhbCAoZS5nLiBgQVNTRVJUXypgKSBmYWlsdXJl
Cit3aG9zZSBtZXNzYWdlIGNvbnRhaW5zIHRoZSBnaXZlbiBfc3Vic3RyaW5nXywgb3IgdXNlCisK
K3wgYEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50LCBzdWJzdHJpbmdfYCk7YCB8
Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fAorCitpZiB5b3UgYXJlIGV4cGVjdGluZyBhIG5vbi1mYXRhbCAoZS5nLiBgRVhQRUNUXypgKSBm
YWlsdXJlLgorCitGb3IgdGVjaG5pY2FsIHJlYXNvbnMsIHRoZXJlIGFyZSBzb21lIGNhdmVhdHM6
CisKKyAgMS4gWW91IGNhbm5vdCBzdHJlYW0gYSBmYWlsdXJlIG1lc3NhZ2UgdG8gZWl0aGVyIG1h
Y3JvLgorICAxLiBfc3RhdGVtZW50XyBpbiBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKWAgY2Fubm90
IHJlZmVyZW5jZSBsb2NhbCBub24tc3RhdGljIHZhcmlhYmxlcyBvciBub24tc3RhdGljIG1lbWJl
cnMgb2YgYHRoaXNgIG9iamVjdC4KKyAgMS4gX3N0YXRlbWVudF8gaW4gYEVYUEVDVF9GQVRBTF9G
QUlMVVJFKClgIGNhbm5vdCByZXR1cm4gYSB2YWx1ZS4KKworX05vdGU6XyBHb29nbGUgVGVzdCBp
cyBkZXNpZ25lZCB3aXRoIHRocmVhZHMgaW4gbWluZC4gIE9uY2UgdGhlCitzeW5jaHJvbml6YXRp
b24gcHJpbWl0aXZlcyBpbiBgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD5gIGhhdmUKK2Jl
ZW4gaW1wbGVtZW50ZWQsIEdvb2dsZSBUZXN0IHdpbGwgYmVjb21lIHRocmVhZC1zYWZlLCBtZWFu
aW5nIHRoYXQKK3lvdSBjYW4gdGhlbiB1c2UgYXNzZXJ0aW9ucyBpbiBtdWx0aXBsZSB0aHJlYWRz
IGNvbmN1cnJlbnRseS4gIEJlZm9yZQorCit0aGF0LCBob3dldmVyLCBHb29nbGUgVGVzdCBvbmx5
IHN1cHBvcnRzIHNpbmdsZS10aHJlYWRlZCB1c2FnZS4gIE9uY2UKK3RocmVhZC1zYWZlLCBgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoKWAgYW5kIGBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpYAord2ls
bCBjYXB0dXJlIGZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZCBvbmx5LiBJZiBfc3RhdGVt
ZW50XworY3JlYXRlcyBuZXcgdGhyZWFkcywgZmFpbHVyZXMgaW4gdGhlc2UgdGhyZWFkcyB3aWxs
IGJlIGlnbm9yZWQuICBJZgoreW91IHdhbnQgdG8gY2FwdHVyZSBmYWlsdXJlcyBmcm9tIGFsbCB0
aHJlYWRzIGluc3RlYWQsIHlvdSBzaG91bGQgdXNlCit0aGUgZm9sbG93aW5nIG1hY3JvczoKKwor
fCBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoYF9zdGF0ZW1lbnQsIHN1YnN0
cmluZ19gKTtgIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9B
TExfVEhSRUFEUyhgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAorCisjIEdldHRpbmcgdGhl
IEN1cnJlbnQgVGVzdCdzIE5hbWUgIworCitTb21ldGltZXMgYSBmdW5jdGlvbiBtYXkgbmVlZCB0
byBrbm93IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LgorRm9yIGV4YW1w
bGUsIHlvdSBtYXkgYmUgdXNpbmcgdGhlIGBTZXRVcCgpYCBtZXRob2Qgb2YgeW91ciB0ZXN0IGZp
eHR1cmUgdG8gc2V0Cit0aGUgZ29sZGVuIGZpbGUgbmFtZSBiYXNlZCBvbiB3aGljaCB0ZXN0IGlz
IHJ1bm5pbmcuIFRoZSBgOjp0ZXN0aW5nOjpUZXN0SW5mb2AKK2NsYXNzIGhhcyB0aGlzIGluZm9y
bWF0aW9uOgorCitgYGAKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworY2xhc3MgVGVzdEluZm8gewor
IHB1YmxpYzoKKyAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIG5hbWUgYW5kIHRoZSB0ZXN0IG5h
bWUsIHJlc3BlY3RpdmVseS4KKyAgLy8KKyAgLy8gRG8gTk9UIGRlbGV0ZSBvciBmcmVlIHRoZSBy
ZXR1cm4gdmFsdWUgLSBpdCdzIG1hbmFnZWQgYnkgdGhlCisgIC8vIFRlc3RJbmZvIGNsYXNzLgor
ICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0OworICBjb25zdCBjaGFyKiBuYW1l
KCkgY29uc3Q7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworYGBgCisKKworPiBUbyBv
YnRhaW4gYSBgVGVzdEluZm9gIG9iamVjdCBmb3IgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRlc3Qs
IGNhbGwKK2BjdXJyZW50X3Rlc3RfaW5mbygpYCBvbiB0aGUgYFVuaXRUZXN0YCBzaW5nbGV0b24g
b2JqZWN0OgorCitgYGAKKy8vIEdldHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnRseSBy
dW5uaW5nIHRlc3QuCisvLyBEbyBOT1QgZGVsZXRlIHRoZSByZXR1cm5lZCBvYmplY3QgLSBpdCdz
IG1hbmFnZWQgYnkgdGhlIFVuaXRUZXN0IGNsYXNzLgorY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5m
byogY29uc3QgdGVzdF9pbmZvID0KKyAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2Uo
KS0+Y3VycmVudF90ZXN0X2luZm8oKTsKK3ByaW50ZigiV2UgYXJlIGluIHRlc3QgJXMgb2YgdGVz
dCBjYXNlICVzLlxuIiwKKyAgICAgICB0ZXN0X2luZm8tPm5hbWUoKSwgdGVzdF9pbmZvLT50ZXN0
X2Nhc2VfbmFtZSgpKTsKK2BgYAorCitgY3VycmVudF90ZXN0X2luZm8oKWAgcmV0dXJucyBhIG51
bGwgcG9pbnRlciBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcuIEluCitwYXJ0aWN1bGFyLCB5b3UgY2Fu
bm90IGZpbmQgdGhlIHRlc3QgY2FzZSBuYW1lIGluIGBUZXN0Q2FzZVNldFVwKClgLAorYFRlc3RD
YXNlVGVhckRvd24oKWAgKHdoZXJlIHlvdSBrbm93IHRoZSB0ZXN0IGNhc2UgbmFtZSBpbXBsaWNp
dGx5KSwgb3IKK2Z1bmN0aW9ucyBjYWxsZWQgZnJvbSB0aGVtLgorCitfQXZhaWxhYmlsaXR5Ol8g
TGludXgsIFdpbmRvd3MsIE1hYy4KKworIyBFeHRlbmRpbmcgR29vZ2xlIFRlc3QgYnkgSGFuZGxp
bmcgVGVzdCBFdmVudHMgIworCitHb29nbGUgVGVzdCBwcm92aWRlcyBhbiA8Yj5ldmVudCBsaXN0
ZW5lciBBUEk8L2I+IHRvIGxldCB5b3UgcmVjZWl2ZQorbm90aWZpY2F0aW9ucyBhYm91dCB0aGUg
cHJvZ3Jlc3Mgb2YgYSB0ZXN0IHByb2dyYW0gYW5kIHRlc3QKK2ZhaWx1cmVzLiBUaGUgZXZlbnRz
IHlvdSBjYW4gbGlzdGVuIHRvIGluY2x1ZGUgdGhlIHN0YXJ0IGFuZCBlbmQgb2YKK3RoZSB0ZXN0
IHByb2dyYW0sIGEgdGVzdCBjYXNlLCBvciBhIHRlc3QgbWV0aG9kLCBhbW9uZyBvdGhlcnMuIFlv
dSBtYXkKK3VzZSB0aGlzIEFQSSB0byBhdWdtZW50IG9yIHJlcGxhY2UgdGhlIHN0YW5kYXJkIGNv
bnNvbGUgb3V0cHV0LAorcmVwbGFjZSB0aGUgWE1MIG91dHB1dCwgb3IgcHJvdmlkZSBhIGNvbXBs
ZXRlbHkgZGlmZmVyZW50IGZvcm0gb2YKK291dHB1dCwgc3VjaCBhcyBhIEdVSSBvciBhIGRhdGFi
YXNlLiBZb3UgY2FuIGFsc28gdXNlIHRlc3QgZXZlbnRzIGFzCitjaGVja3BvaW50cyB0byBpbXBs
ZW1lbnQgYSByZXNvdXJjZSBsZWFrIGNoZWNrZXIsIGZvciBleGFtcGxlLgorCitfQXZhaWxhYmls
aXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdjEuNC4wLgorCisjIyBEZWZpbmluZyBF
dmVudCBMaXN0ZW5lcnMgIyMKKworVG8gZGVmaW5lIGEgZXZlbnQgbGlzdGVuZXIsIHlvdSBzdWJj
bGFzcyBlaXRoZXIKK1t0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcl0oLi4vaW5jbHVkZS9ndGVz
dC9ndGVzdC5oI0w4NTUpCitvciBbdGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lcl0oLi4v
aW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w5MDUpLgorVGhlIGZvcm1lciBpcyBhbiAoYWJzdHJhY3Qp
IGludGVyZmFjZSwgd2hlcmUgPGk+ZWFjaCBwdXJlIHZpcnR1YWwgbWV0aG9kPGJyPgorY2FuIGJl
IG92ZXJyaWRkZW4gdG8gaGFuZGxlIGEgdGVzdCBldmVudDwvaT4gKEZvciBleGFtcGxlLCB3aGVu
IGEgdGVzdAorc3RhcnRzLCB0aGUgYE9uVGVzdFN0YXJ0KClgIG1ldGhvZCB3aWxsIGJlIGNhbGxl
ZC4pLiBUaGUgbGF0dGVyIHByb3ZpZGVzCithbiBlbXB0eSBpbXBsZW1lbnRhdGlvbiBvZiBhbGwg
bWV0aG9kcyBpbiB0aGUgaW50ZXJmYWNlLCBzdWNoIHRoYXQgYQorc3ViY2xhc3Mgb25seSBuZWVk
cyB0byBvdmVycmlkZSB0aGUgbWV0aG9kcyBpdCBjYXJlcyBhYm91dC4KKworV2hlbiBhbiBldmVu
dCBpcyBmaXJlZCwgaXRzIGNvbnRleHQgaXMgcGFzc2VkIHRvIHRoZSBoYW5kbGVyIGZ1bmN0aW9u
CithcyBhbiBhcmd1bWVudC4gVGhlIGZvbGxvd2luZyBhcmd1bWVudCB0eXBlcyBhcmUgdXNlZDoK
KyAgKiBbVW5pdFRlc3RdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMMTAwNykgcmVmbGVjdHMg
dGhlIHN0YXRlIG9mIHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFtLAorICAqIFtUZXN0Q2FzZV0oLi4v
aW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w2ODkpIGhhcyBpbmZvcm1hdGlvbiBhYm91dCBhIHRlc3Qg
Y2FzZSwgd2hpY2ggY2FuIGNvbnRhaW4gb25lIG9yIG1vcmUgdGVzdHMsCisgICogW1Rlc3RJbmZv
XSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDU5OSkgY29udGFpbnMgdGhlIHN0YXRlIG9mIGEg
dGVzdCwgYW5kCisgICogW1Rlc3RQYXJ0UmVzdWx0XSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXRl
c3QtcGFydC5oI0w0MikgcmVwcmVzZW50cyB0aGUgcmVzdWx0IG9mIGEgdGVzdCBhc3NlcnRpb24u
CisKK0FuIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb24gY2FuIGV4YW1pbmUgdGhlIGFyZ3VtZW50IGl0
IHJlY2VpdmVzIHRvIGZpbmQKK291dCBpbnRlcmVzdGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUg
ZXZlbnQgYW5kIHRoZSB0ZXN0IHByb2dyYW0ncworc3RhdGUuICBIZXJlJ3MgYW4gZXhhbXBsZToK
KworYGBgCisgIGNsYXNzIE1pbmltYWxpc3RQcmludGVyIDogcHVibGljIDo6dGVzdGluZzo6RW1w
dHlUZXN0RXZlbnRMaXN0ZW5lciB7CisgICAgLy8gQ2FsbGVkIGJlZm9yZSBhIHRlc3Qgc3RhcnRz
LgorICAgIHZpcnR1YWwgdm9pZCBPblRlc3RTdGFydChjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZv
JiB0ZXN0X2luZm8pIHsKKyAgICAgIHByaW50ZigiKioqIFRlc3QgJXMuJXMgc3RhcnRpbmcuXG4i
LAorICAgICAgICAgICAgIHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFt
ZSgpKTsKKyAgICB9CisKKyAgICAvLyBDYWxsZWQgYWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0aW9uIG9y
IGEgU1VDQ0VTUygpLgorICAgIHZpcnR1YWwgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KAorICAgICAg
ICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7Cisg
ICAgICBwcmludGYoIiVzIGluICVzOiVkXG4lc1xuIiwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRf
cmVzdWx0LmZhaWxlZCgpID8gIioqKiBGYWlsdXJlIiA6ICJTdWNjZXNzIiwKKyAgICAgICAgICAg
ICB0ZXN0X3BhcnRfcmVzdWx0LmZpbGVfbmFtZSgpLAorICAgICAgICAgICAgIHRlc3RfcGFydF9y
ZXN1bHQubGluZV9udW1iZXIoKSwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LnN1bW1h
cnkoKSk7CisgICAgfQorCisgICAgLy8gQ2FsbGVkIGFmdGVyIGEgdGVzdCBlbmRzLgorICAgIHZp
cnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyYgdGVzdF9pbmZv
KSB7CisgICAgICBwcmludGYoIioqKiBUZXN0ICVzLiVzIGVuZGluZy5cbiIsCisgICAgICAgICAg
ICAgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOworICAgIH0K
KyAgfTsKK2BgYAorCisjIyBVc2luZyBFdmVudCBMaXN0ZW5lcnMgIyMKKworVG8gdXNlIHRoZSBl
dmVudCBsaXN0ZW5lciB5b3UgaGF2ZSBkZWZpbmVkLCBhZGQgYW4gaW5zdGFuY2Ugb2YgaXQgdG8K
K3RoZSBHb29nbGUgVGVzdCBldmVudCBsaXN0ZW5lciBsaXN0IChyZXByZXNlbnRlZCBieSBjbGFz
cworW1Rlc3RFdmVudExpc3RlbmVyc10oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w5MjkpCist
IG5vdGUgdGhlICJzIiBhdCB0aGUgZW5kIG9mIHRoZSBuYW1lKSBpbiB5b3VyCitgbWFpbigpYCBm
dW5jdGlvbiwgYmVmb3JlIGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWA6CitgYGAKK2ludCBtYWlu
KGludCBhcmdjLCBjaGFyKiogYXJndikgeworICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZh
cmdjLCBhcmd2KTsKKyAgLy8gR2V0cyBob2xkIG9mIHRoZSBldmVudCBsaXN0ZW5lciBsaXN0Lgor
ICA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0KKyAgICAgIDo6dGVz
dGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpOworICAvLyBBZGRzIGEg
bGlzdGVuZXIgdG8gdGhlIGVuZC4gIEdvb2dsZSBUZXN0IHRha2VzIHRoZSBvd25lcnNoaXAuCisg
IGxpc3RlbmVycy5BcHBlbmQobmV3IE1pbmltYWxpc3RQcmludGVyKTsKKyAgcmV0dXJuIFJVTl9B
TExfVEVTVFMoKTsKK30KK2BgYAorCitUaGVyZSdzIG9ubHkgb25lIHByb2JsZW06IHRoZSBkZWZh
dWx0IHRlc3QgcmVzdWx0IHByaW50ZXIgaXMgc3RpbGwgaW4KK2VmZmVjdCwgc28gaXRzIG91dHB1
dCB3aWxsIG1pbmdsZSB3aXRoIHRoZSBvdXRwdXQgZnJvbSB5b3VyIG1pbmltYWxpc3QKK3ByaW50
ZXIuIFRvIHN1cHByZXNzIHRoZSBkZWZhdWx0IHByaW50ZXIsIGp1c3QgcmVsZWFzZSBpdCBmcm9t
IHRoZQorZXZlbnQgbGlzdGVuZXIgbGlzdCBhbmQgZGVsZXRlIGl0LiBZb3UgY2FuIGRvIHNvIGJ5
IGFkZGluZyBvbmUgbGluZToKK2BgYAorICAuLi4KKyAgZGVsZXRlIGxpc3RlbmVycy5SZWxlYXNl
KGxpc3RlbmVycy5kZWZhdWx0X3Jlc3VsdF9wcmludGVyKCkpOworICBsaXN0ZW5lcnMuQXBwZW5k
KG5ldyBNaW5pbWFsaXN0UHJpbnRlcik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CitgYGAK
KworTm93LCBzaXQgYmFjayBhbmQgZW5qb3kgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBvdXRwdXQg
ZnJvbSB5b3VyCit0ZXN0cy4gRm9yIG1vcmUgZGV0YWlscywgeW91IGNhbiByZWFkIHRoaXMKK1tz
YW1wbGVdKC4uL3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYykuCisKK1lvdSBtYXkgYXBwZW5k
IG1vcmUgdGhhbiBvbmUgbGlzdGVuZXIgdG8gdGhlIGxpc3QuIFdoZW4gYW4gYE9uKlN0YXJ0KClg
CitvciBgT25UZXN0UGFydFJlc3VsdCgpYCBldmVudCBpcyBmaXJlZCwgdGhlIGxpc3RlbmVycyB3
aWxsIHJlY2VpdmUgaXQgaW4KK3RoZSBvcmRlciB0aGV5IGFwcGVhciBpbiB0aGUgbGlzdCAoc2lu
Y2UgbmV3IGxpc3RlbmVycyBhcmUgYWRkZWQgdG8KK3RoZSBlbmQgb2YgdGhlIGxpc3QsIHRoZSBk
ZWZhdWx0IHRleHQgcHJpbnRlciBhbmQgdGhlIGRlZmF1bHQgWE1MCitnZW5lcmF0b3Igd2lsbCBy
ZWNlaXZlIHRoZSBldmVudCBmaXJzdCkuIEFuIGBPbipFbmQoKWAgZXZlbnQgd2lsbCBiZQorcmVj
ZWl2ZWQgYnkgdGhlIGxpc3RlbmVycyBpbiB0aGUgX3JldmVyc2VfIG9yZGVyLiBUaGlzIGFsbG93
cyBvdXRwdXQgYnkKK2xpc3RlbmVycyBhZGRlZCBsYXRlciB0byBiZSBmcmFtZWQgYnkgb3V0cHV0
IGZyb20gbGlzdGVuZXJzIGFkZGVkCitlYXJsaWVyLgorCisjIyBHZW5lcmF0aW5nIEZhaWx1cmVz
IGluIExpc3RlbmVycyAjIworCitZb3UgbWF5IHVzZSBmYWlsdXJlLXJhaXNpbmcgbWFjcm9zIChg
RVhQRUNUXyooKWAsIGBBU1NFUlRfKigpYCwKK2BGQUlMKClgLCBldGMpIHdoZW4gcHJvY2Vzc2lu
ZyBhbiBldmVudC4gVGhlcmUgYXJlIHNvbWUgcmVzdHJpY3Rpb25zOgorCisgIDEuIFlvdSBjYW5u
b3QgZ2VuZXJhdGUgYW55IGZhaWx1cmUgaW4gYE9uVGVzdFBhcnRSZXN1bHQoKWAgKG90aGVyd2lz
ZSBpdCB3aWxsIGNhdXNlIGBPblRlc3RQYXJ0UmVzdWx0KClgIHRvIGJlIGNhbGxlZCByZWN1cnNp
dmVseSkuCisgIDEuIEEgbGlzdGVuZXIgdGhhdCBoYW5kbGVzIGBPblRlc3RQYXJ0UmVzdWx0KClg
IGlzIG5vdCBhbGxvd2VkIHRvIGdlbmVyYXRlIGFueSBmYWlsdXJlLgorCitXaGVuIHlvdSBhZGQg
bGlzdGVuZXJzIHRvIHRoZSBsaXN0ZW5lciBsaXN0LCB5b3Ugc2hvdWxkIHB1dCBsaXN0ZW5lcnMK
K3RoYXQgaGFuZGxlIGBPblRlc3RQYXJ0UmVzdWx0KClgIF9iZWZvcmVfIGxpc3RlbmVycyB0aGF0
IGNhbiBnZW5lcmF0ZQorZmFpbHVyZXMuIFRoaXMgZW5zdXJlcyB0aGF0IGZhaWx1cmVzIGdlbmVy
YXRlZCBieSB0aGUgbGF0dGVyIGFyZQorYXR0cmlidXRlZCB0byB0aGUgcmlnaHQgdGVzdCBieSB0
aGUgZm9ybWVyLgorCitXZSBoYXZlIGEgc2FtcGxlIG9mIGZhaWx1cmUtcmFpc2luZyBsaXN0ZW5l
cgorW2hlcmVdKC4uL3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MpLgorCisjIFJ1bm5pbmcg
VGVzdCBQcm9ncmFtczogQWR2YW5jZWQgT3B0aW9ucyAjCisKK0dvb2dsZSBUZXN0IHRlc3QgcHJv
Z3JhbXMgYXJlIG9yZGluYXJ5IGV4ZWN1dGFibGVzLiBPbmNlIGJ1aWx0LCB5b3UgY2FuIHJ1bgor
dGhlbSBkaXJlY3RseSBhbmQgYWZmZWN0IHRoZWlyIGJlaGF2aW9yIHZpYSB0aGUgZm9sbG93aW5n
IGVudmlyb25tZW50IHZhcmlhYmxlcworYW5kL29yIGNvbW1hbmQgbGluZSBmbGFncy4gRm9yIHRo
ZSBmbGFncyB0byB3b3JrLCB5b3VyIHByb2dyYW1zIG11c3QgY2FsbAorYDo6dGVzdGluZzo6SW5p
dEdvb2dsZVRlc3QoKWAgYmVmb3JlIGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWAuCisKK1RvIHNl
ZSBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGZsYWdzIGFuZCB0aGVpciB1c2FnZSwgcGxlYXNlIHJ1biB5
b3VyIHRlc3QKK3Byb2dyYW0gd2l0aCB0aGUgYC0taGVscGAgZmxhZy4gIFlvdSBjYW4gYWxzbyB1
c2UgYC1oYCwgYC0/YCwgb3IgYC8/YAorZm9yIHNob3J0LiAgVGhpcyBmZWF0dXJlIGlzIGFkZGVk
IGluIHZlcnNpb24gMS4zLjAuCisKK0lmIGFuIG9wdGlvbiBpcyBzcGVjaWZpZWQgYm90aCBieSBh
biBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbmQgYnkgYQorZmxhZywgdGhlIGxhdHRlciB0YWtlcyBw
cmVjZWRlbmNlLiAgTW9zdCBvZiB0aGUgb3B0aW9ucyBjYW4gYWxzbyBiZQorc2V0L3JlYWQgaW4g
Y29kZTogdG8gYWNjZXNzIHRoZSB2YWx1ZSBvZiBjb21tYW5kIGxpbmUgZmxhZworYC0tZ3Rlc3Rf
Zm9vYCwgd3JpdGUgYDo6dGVzdGluZzo6R1RFU1RfRkxBRyhmb28pYC4gIEEgY29tbW9uIHBhdHRl
cm4gaXMKK3RvIHNldCB0aGUgdmFsdWUgb2YgYSBmbGFnIGJlZm9yZSBjYWxsaW5nIGA6OnRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0KClgCit0byBjaGFuZ2UgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhl
IGZsYWc6CitgYGAKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICAvLyBEaXNh
YmxlcyBlbGFwc2VkIHRpbWUgYnkgZGVmYXVsdC4KKyAgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHBy
aW50X3RpbWUpID0gZmFsc2U7CisKKyAgLy8gVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gb3ZlcnJp
ZGUgdGhlIGZsYWcgb24gdGhlIGNvbW1hbmQgbGluZS4KKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xl
VGVzdCgmYXJnYywgYXJndik7CisKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAor
CisjIyBTZWxlY3RpbmcgVGVzdHMgIyMKKworVGhpcyBzZWN0aW9uIHNob3dzIHZhcmlvdXMgb3B0
aW9ucyBmb3IgY2hvb3Npbmcgd2hpY2ggdGVzdHMgdG8gcnVuLgorCisjIyMgTGlzdGluZyBUZXN0
IE5hbWVzICMjIworCitTb21ldGltZXMgaXQgaXMgbmVjZXNzYXJ5IHRvIGxpc3QgdGhlIGF2YWls
YWJsZSB0ZXN0cyBpbiBhIHByb2dyYW0gYmVmb3JlCitydW5uaW5nIHRoZW0gc28gdGhhdCBhIGZp
bHRlciBtYXkgYmUgYXBwbGllZCBpZiBuZWVkZWQuIEluY2x1ZGluZyB0aGUgZmxhZworYC0tZ3Rl
c3RfbGlzdF90ZXN0c2Agb3ZlcnJpZGVzIGFsbCBvdGhlciBmbGFncyBhbmQgbGlzdHMgdGVzdHMg
aW4gdGhlIGZvbGxvd2luZworZm9ybWF0OgorYGBgCitUZXN0Q2FzZTEuCisgIFRlc3ROYW1lMQor
ICBUZXN0TmFtZTIKK1Rlc3RDYXNlMi4KKyAgVGVzdE5hbWUKK2BgYAorCitOb25lIG9mIHRoZSB0
ZXN0cyBsaXN0ZWQgYXJlIGFjdHVhbGx5IHJ1biBpZiB0aGUgZmxhZyBpcyBwcm92aWRlZC4gVGhl
cmUgaXMgbm8KK2NvcnJlc3BvbmRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIHRoaXMgZmxh
Zy4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBSdW5uaW5n
IGEgU3Vic2V0IG9mIHRoZSBUZXN0cyAjIyMKKworQnkgZGVmYXVsdCwgYSBHb29nbGUgVGVzdCBw
cm9ncmFtIHJ1bnMgYWxsIHRlc3RzIHRoZSB1c2VyIGhhcyBkZWZpbmVkLgorU29tZXRpbWVzLCB5
b3Ugd2FudCB0byBydW4gb25seSBhIHN1YnNldCBvZiB0aGUgdGVzdHMgKGUuZy4gZm9yIGRlYnVn
Z2luZyBvcgorcXVpY2tseSB2ZXJpZnlpbmcgYSBjaGFuZ2UpLiBJZiB5b3Ugc2V0IHRoZSBgR1RF
U1RfRklMVEVSYCBlbnZpcm9ubWVudCB2YXJpYWJsZQorb3IgdGhlIGAtLWd0ZXN0X2ZpbHRlcmAg
ZmxhZyB0byBhIGZpbHRlciBzdHJpbmcsIEdvb2dsZSBUZXN0IHdpbGwgb25seSBydW4gdGhlCit0
ZXN0cyB3aG9zZSBmdWxsIG5hbWVzIChpbiB0aGUgZm9ybSBvZiBgVGVzdENhc2VOYW1lLlRlc3RO
YW1lYCkgbWF0Y2ggdGhlCitmaWx0ZXIuCisKK1RoZSBmb3JtYXQgb2YgYSBmaWx0ZXIgaXMgYSAn
YDpgJy1zZXBhcmF0ZWQgbGlzdCBvZiB3aWxkY2FyZCBwYXR0ZXJucyAoY2FsbGVkCit0aGUgcG9z
aXRpdmUgcGF0dGVybnMpIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAnYC1gJyBhbmQgYW5vdGhl
cgorJ2A6YCctc2VwYXJhdGVkIHBhdHRlcm4gbGlzdCAoY2FsbGVkIHRoZSBuZWdhdGl2ZSBwYXR0
ZXJucykuIEEgdGVzdCBtYXRjaGVzIHRoZQorZmlsdGVyIGlmIGFuZCBvbmx5IGlmIGl0IG1hdGNo
ZXMgYW55IG9mIHRoZSBwb3NpdGl2ZSBwYXR0ZXJucyBidXQgZG9lcyBub3QKK21hdGNoIGFueSBv
ZiB0aGUgbmVnYXRpdmUgcGF0dGVybnMuCisKK0EgcGF0dGVybiBtYXkgY29udGFpbiBgJyonYCAo
bWF0Y2hlcyBhbnkgc3RyaW5nKSBvciBgJz8nYCAobWF0Y2hlcyBhbnkgc2luZ2xlCitjaGFyYWN0
ZXIpLiBGb3IgY29udmVuaWVuY2UsIHRoZSBmaWx0ZXIgYCcqLU5lZ2F0aXZlUGF0dGVybnMnYCBj
YW4gYmUgYWxzbword3JpdHRlbiBhcyBgJy1OZWdhdGl2ZVBhdHRlcm5zJ2AuCisKK0ZvciBleGFt
cGxlOgorCisgICogYC4vZm9vX3Rlc3RgIEhhcyBubyBmbGFnLCBhbmQgdGh1cyBydW5zIGFsbCBp
dHMgdGVzdHMuCisgICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9KmAgQWxzbyBydW5zIGV2
ZXJ5dGhpbmcsIGR1ZSB0byB0aGUgc2luZ2xlIG1hdGNoLWV2ZXJ5dGhpbmcgYCpgIHZhbHVlLgor
ICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rlc3QuKmAgUnVucyBldmVyeXRoaW5n
IGluIHRlc3QgY2FzZSBgRm9vVGVzdGAuCisgICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9
Kk51bGwqOipDb25zdHJ1Y3RvcipgIFJ1bnMgYW55IHRlc3Qgd2hvc2UgZnVsbCBuYW1lIGNvbnRh
aW5zIGVpdGhlciBgIk51bGwiYCBvciBgIkNvbnN0cnVjdG9yImAuCisgICogYC4vZm9vX3Rlc3Qg
LS1ndGVzdF9maWx0ZXI9LSpEZWF0aFRlc3QuKmAgUnVucyBhbGwgbm9uLWRlYXRoIHRlc3RzLgor
ICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rlc3QuKi1Gb29UZXN0LkJhcmAgUnVu
cyBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBgRm9vVGVzdGAgZXhjZXB0IGBGb29UZXN0LkJhcmAu
CisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgVGVtcG9yYXJp
bHkgRGlzYWJsaW5nIFRlc3RzICMjIworCitJZiB5b3UgaGF2ZSBhIGJyb2tlbiB0ZXN0IHRoYXQg
eW91IGNhbm5vdCBmaXggcmlnaHQgYXdheSwgeW91IGNhbiBhZGQgdGhlCitgRElTQUJMRURfYCBw
cmVmaXggdG8gaXRzIG5hbWUuIFRoaXMgd2lsbCBleGNsdWRlIGl0IGZyb20gZXhlY3V0aW9uLiBU
aGlzIGlzCitiZXR0ZXIgdGhhbiBjb21tZW50aW5nIG91dCB0aGUgY29kZSBvciB1c2luZyBgI2lm
IDBgLCBhcyBkaXNhYmxlZCB0ZXN0cyBhcmUKK3N0aWxsIGNvbXBpbGVkIChhbmQgdGh1cyB3b24n
dCByb3QpLgorCitJZiB5b3UgbmVlZCB0byBkaXNhYmxlIGFsbCB0ZXN0cyBpbiBhIHRlc3QgY2Fz
ZSwgeW91IGNhbiBlaXRoZXIgYWRkIGBESVNBQkxFRF9gCit0byB0aGUgZnJvbnQgb2YgdGhlIG5h
bWUgb2YgZWFjaCB0ZXN0LCBvciBhbHRlcm5hdGl2ZWx5IGFkZCBpdCB0byB0aGUgZnJvbnQgb2YK
K3RoZSB0ZXN0IGNhc2UgbmFtZS4KKworRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVzdHMg
d29uJ3QgYmUgcnVuIGJ5IEdvb2dsZSBUZXN0LCBldmVuIHRob3VnaCB0aGV5Cit3aWxsIHN0aWxs
IGJlIGNvbXBpbGVkOgorCitgYGAKKy8vIFRlc3RzIHRoYXQgRm9vIGRvZXMgQWJjLgorVEVTVChG
b29UZXN0LCBESVNBQkxFRF9Eb2VzQWJjKSB7IC4uLiB9CisKK2NsYXNzIERJU0FCTEVEX0JhclRl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07CisKKy8vIFRlc3RzIHRoYXQgQmFy
IGRvZXMgWHl6LgorVEVTVF9GKERJU0FCTEVEX0JhclRlc3QsIERvZXNYeXopIHsgLi4uIH0KK2Bg
YAorCitfTm90ZTpfIFRoaXMgZmVhdHVyZSBzaG91bGQgb25seSBiZSB1c2VkIGZvciB0ZW1wb3Jh
cnkgcGFpbi1yZWxpZWYuIFlvdSBzdGlsbAoraGF2ZSB0byBmaXggdGhlIGRpc2FibGVkIHRlc3Rz
IGF0IGEgbGF0ZXIgZGF0ZS4gQXMgYSByZW1pbmRlciwgR29vZ2xlIFRlc3Qgd2lsbAorcHJpbnQg
YSBiYW5uZXIgd2FybmluZyB5b3UgaWYgYSB0ZXN0IHByb2dyYW0gY29udGFpbnMgYW55IGRpc2Fi
bGVkIHRlc3RzLgorCitfVGlwOl8gWW91IGNhbiBlYXNpbHkgY291bnQgdGhlIG51bWJlciBvZiBk
aXNhYmxlZCB0ZXN0cyB5b3UgaGF2ZQordXNpbmcgYGdyZXBgLiBUaGlzIG51bWJlciBjYW4gYmUg
dXNlZCBhcyBhIG1ldHJpYyBmb3IgaW1wcm92aW5nIHlvdXIKK3Rlc3QgcXVhbGl0eS4KKworX0F2
YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBUZW1wb3JhcmlseSBFbmFi
bGluZyBEaXNhYmxlZCBUZXN0cyAjIyMKKworVG8gaW5jbHVkZSBbZGlzYWJsZWQgdGVzdHNdKCN0
ZW1wb3JhcmlseS1kaXNhYmxpbmctdGVzdHMpIGluIHRlc3QKK2V4ZWN1dGlvbiwganVzdCBpbnZv
a2UgdGhlIHRlc3QgcHJvZ3JhbSB3aXRoIHRoZQorYC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRf
dGVzdHNgIGZsYWcgb3Igc2V0IHRoZQorYEdURVNUX0FMU09fUlVOX0RJU0FCTEVEX1RFU1RTYCBl
bnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIHZhbHVlIG90aGVyCit0aGFuIGAwYC4gIFlvdSBjYW4g
Y29tYmluZSB0aGlzIHdpdGggdGhlCitbLS1ndGVzdFxfZmlsdGVyXSgjcnVubmluZy1hLXN1YnNl
dC1vZi10aGUtdGVzdHMpIGZsYWcgdG8gZnVydGhlciBzZWxlY3QKK3doaWNoIGRpc2FibGVkIHRl
c3RzIHRvIHJ1bi4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNl
IHZlcnNpb24gMS4zLjAuCisKKyMjIFJlcGVhdGluZyB0aGUgVGVzdHMgIyMKKworT25jZSBpbiBh
IHdoaWxlIHlvdSdsbCBydW4gaW50byBhIHRlc3Qgd2hvc2UgcmVzdWx0IGlzIGhpdC1vci1taXNz
LiBQZXJoYXBzIGl0Cit3aWxsIGZhaWwgb25seSAxJSBvZiB0aGUgdGltZSwgbWFraW5nIGl0IHJh
dGhlciBoYXJkIHRvIHJlcHJvZHVjZSB0aGUgYnVnIHVuZGVyCithIGRlYnVnZ2VyLiBUaGlzIGNh
biBiZSBhIG1ham9yIHNvdXJjZSBvZiBmcnVzdHJhdGlvbi4KKworVGhlIGAtLWd0ZXN0X3JlcGVh
dGAgZmxhZyBhbGxvd3MgeW91IHRvIHJlcGVhdCBhbGwgKG9yIHNlbGVjdGVkKSB0ZXN0IG1ldGhv
ZHMKK2luIGEgcHJvZ3JhbSBtYW55IHRpbWVzLiBIb3BlZnVsbHksIGEgZmxha3kgdGVzdCB3aWxs
IGV2ZW50dWFsbHkgZmFpbCBhbmQgZ2l2ZQoreW91IGEgY2hhbmNlIHRvIGRlYnVnLiBIZXJlJ3Mg
aG93IHRvIHVzZSBpdDoKKworfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwYCB8IFJl
cGVhdCBmb29cX3Rlc3QgMTAwMCB0aW1lcyBhbmQgZG9uJ3Qgc3RvcCBhdCBmYWlsdXJlcy4gfAor
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBgJCBmb29fdGVzdCAtLWd0
ZXN0X3JlcGVhdD0tMWAgICB8IEEgbmVnYXRpdmUgY291bnQgbWVhbnMgcmVwZWF0aW5nIGZvcmV2
ZXIuICAgICAgICAgICAgICAgfAorfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwIC0t
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZWAgfCBSZXBlYXQgZm9vXF90ZXN0IDEwMDAgdGltZXMsIHN0
b3BwaW5nIGF0IHRoZSBmaXJzdCBmYWlsdXJlLiBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIHdo
ZW4gcnVubmluZyB1bmRlciBhIGRlYnVnZ2VyOiB3aGVuIHRoZSB0ZXN0ZmFpbHMsIGl0IHdpbGwg
ZHJvcCBpbnRvIHRoZSBkZWJ1Z2dlciBhbmQgeW91IGNhbiB0aGVuIGluc3BlY3QgdmFyaWFibGVz
IGFuZCBzdGFja3MuIHwKK3wgYCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMCAtLWd0ZXN0
X2ZpbHRlcj1Gb29CYXJgIHwgUmVwZWF0IHRoZSB0ZXN0cyB3aG9zZSBuYW1lIG1hdGNoZXMgdGhl
IGZpbHRlciAxMDAwIHRpbWVzLiB8CisKK0lmIHlvdXIgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIGds
b2JhbCBzZXQtdXAvdGVhci1kb3duIGNvZGUgcmVnaXN0ZXJlZAordXNpbmcgYEFkZEdsb2JhbFRl
c3RFbnZpcm9ubWVudCgpYCwgaXQgd2lsbCBiZSByZXBlYXRlZCBpbiBlYWNoCitpdGVyYXRpb24g
YXMgd2VsbCwgYXMgdGhlIGZsYWtpbmVzcyBtYXkgYmUgaW4gaXQuIFlvdSBjYW4gYWxzbyBzcGVj
aWZ5Cit0aGUgcmVwZWF0IGNvdW50IGJ5IHNldHRpbmcgdGhlIGBHVEVTVF9SRVBFQVRgIGVudmly
b25tZW50IHZhcmlhYmxlLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4K
KworIyMgU2h1ZmZsaW5nIHRoZSBUZXN0cyAjIworCitZb3UgY2FuIHNwZWNpZnkgdGhlIGAtLWd0
ZXN0X3NodWZmbGVgIGZsYWcgKG9yIHNldCB0aGUgYEdURVNUX1NIVUZGTEVgCitlbnZpcm9ubWVu
dCB2YXJpYWJsZSB0byBgMWApIHRvIHJ1biB0aGUgdGVzdHMgaW4gYSBwcm9ncmFtIGluIGEgcmFu
ZG9tCitvcmRlci4gVGhpcyBoZWxwcyB0byByZXZlYWwgYmFkIGRlcGVuZGVuY2llcyBiZXR3ZWVu
IHRlc3RzLgorCitCeSBkZWZhdWx0LCBHb29nbGUgVGVzdCB1c2VzIGEgcmFuZG9tIHNlZWQgY2Fs
Y3VsYXRlZCBmcm9tIHRoZSBjdXJyZW50Cit0aW1lLiBUaGVyZWZvcmUgeW91J2xsIGdldCBhIGRp
ZmZlcmVudCBvcmRlciBldmVyeSB0aW1lLiBUaGUgY29uc29sZQorb3V0cHV0IGluY2x1ZGVzIHRo
ZSByYW5kb20gc2VlZCB2YWx1ZSwgc3VjaCB0aGF0IHlvdSBjYW4gcmVwcm9kdWNlIGFuCitvcmRl
ci1yZWxhdGVkIHRlc3QgZmFpbHVyZSBsYXRlci4gVG8gc3BlY2lmeSB0aGUgcmFuZG9tIHNlZWQK
K2V4cGxpY2l0bHksIHVzZSB0aGUgYC0tZ3Rlc3RfcmFuZG9tX3NlZWQ9U0VFRGAgZmxhZyAob3Ig
c2V0IHRoZQorYEdURVNUX1JBTkRPTV9TRUVEYCBlbnZpcm9ubWVudCB2YXJpYWJsZSksIHdoZXJl
IGBTRUVEYCBpcyBhbiBpbnRlZ2VyCitiZXR3ZWVuIDAgYW5kIDk5OTk5LiBUaGUgc2VlZCB2YWx1
ZSAwIGlzIHNwZWNpYWw6IGl0IHRlbGxzIEdvb2dsZSBUZXN0Cit0byBkbyB0aGUgZGVmYXVsdCBi
ZWhhdmlvciBvZiBjYWxjdWxhdGluZyB0aGUgc2VlZCBmcm9tIHRoZSBjdXJyZW50Cit0aW1lLgor
CitJZiB5b3UgY29tYmluZSB0aGlzIHdpdGggYC0tZ3Rlc3RfcmVwZWF0PU5gLCBHb29nbGUgVGVz
dCB3aWxsIHBpY2sgYQorZGlmZmVyZW50IHJhbmRvbSBzZWVkIGFuZCByZS1zaHVmZmxlIHRoZSB0
ZXN0cyBpbiBlYWNoIGl0ZXJhdGlvbi4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dz
LCBNYWM7IHNpbmNlIHYxLjQuMC4KKworIyMgQ29udHJvbGxpbmcgVGVzdCBPdXRwdXQgIyMKKwor
VGhpcyBzZWN0aW9uIHRlYWNoZXMgaG93IHRvIHR3ZWFrIHRoZSB3YXkgdGVzdCByZXN1bHRzIGFy
ZSByZXBvcnRlZC4KKworIyMjIENvbG9yZWQgVGVybWluYWwgT3V0cHV0ICMjIworCitHb29nbGUg
VGVzdCBjYW4gdXNlIGNvbG9ycyBpbiBpdHMgdGVybWluYWwgb3V0cHV0IHRvIG1ha2UgaXQgZWFz
aWVyIHRvIHNwb3QKK3RoZSBzZXBhcmF0aW9uIGJldHdlZW4gdGVzdHMsIGFuZCB3aGV0aGVyIHRl
c3RzIHBhc3NlZC4KKworWW91IGNhbiBzZXQgdGhlIEdURVNUXF9DT0xPUiBlbnZpcm9ubWVudCB2
YXJpYWJsZSBvciBzZXQgdGhlIGAtLWd0ZXN0X2NvbG9yYAorY29tbWFuZCBsaW5lIGZsYWcgdG8g
YHllc2AsIGBub2AsIG9yIGBhdXRvYCAodGhlIGRlZmF1bHQpIHRvIGVuYWJsZSBjb2xvcnMsCitk
aXNhYmxlIGNvbG9ycywgb3IgbGV0IEdvb2dsZSBUZXN0IGRlY2lkZS4gV2hlbiB0aGUgdmFsdWUg
aXMgYGF1dG9gLCBHb29nbGUKK1Rlc3Qgd2lsbCB1c2UgY29sb3JzIGlmIGFuZCBvbmx5IGlmIHRo
ZSBvdXRwdXQgZ29lcyB0byBhIHRlcm1pbmFsIGFuZCAob24KK25vbi1XaW5kb3dzIHBsYXRmb3Jt
cykgdGhlIGBURVJNYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQgdG8gYHh0ZXJtYCBvcgor
YHh0ZXJtLWNvbG9yYC4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisK
KyMjIyBTdXBwcmVzc2luZyB0aGUgRWxhcHNlZCBUaW1lICMjIworCitCeSBkZWZhdWx0LCBHb29n
bGUgVGVzdCBwcmludHMgdGhlIHRpbWUgaXQgdGFrZXMgdG8gcnVuIGVhY2ggdGVzdC4gIFRvCitz
dXBwcmVzcyB0aGF0LCBydW4gdGhlIHRlc3QgcHJvZ3JhbSB3aXRoIHRoZSBgLS1ndGVzdF9wcmlu
dF90aW1lPTBgCitjb21tYW5kIGxpbmUgZmxhZy4gIFNldHRpbmcgdGhlIGBHVEVTVF9QUklOVF9U
SU1FYCBlbnZpcm9ubWVudAordmFyaWFibGUgdG8gYDBgIGhhcyB0aGUgc2FtZSBlZmZlY3QuCisK
K19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLiAgKEluIEdvb2dsZSBUZXN0IDEu
My4wIGFuZCBsb3dlciwKK3RoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRoYXQgdGhlIGVsYXBzZWQg
dGltZSBpcyAqKm5vdCoqIHByaW50ZWQuKQorCisjIyMgR2VuZXJhdGluZyBhbiBYTUwgUmVwb3J0
ICMjIworCitHb29nbGUgVGVzdCBjYW4gZW1pdCBhIGRldGFpbGVkIFhNTCByZXBvcnQgdG8gYSBm
aWxlIGluIGFkZGl0aW9uIHRvIGl0cyBub3JtYWwKK3RleHR1YWwgb3V0cHV0LiBUaGUgcmVwb3J0
IGNvbnRhaW5zIHRoZSBkdXJhdGlvbiBvZiBlYWNoIHRlc3QsIGFuZCB0aHVzIGNhbgoraGVscCB5
b3UgaWRlbnRpZnkgc2xvdyB0ZXN0cy4KKworVG8gZ2VuZXJhdGUgdGhlIFhNTCByZXBvcnQsIHNl
dCB0aGUgYEdURVNUX09VVFBVVGAgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCitgLS1ndGVz
dF9vdXRwdXRgIGZsYWcgdG8gdGhlIHN0cmluZyBgInhtbDpfcGF0aF90b19vdXRwdXRfZmlsZV8i
YCwgd2hpY2ggd2lsbAorY3JlYXRlIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBsb2NhdGlvbi4gWW91
IGNhbiBhbHNvIGp1c3QgdXNlIHRoZSBzdHJpbmcKK2AieG1sImAsIGluIHdoaWNoIGNhc2UgdGhl
IG91dHB1dCBjYW4gYmUgZm91bmQgaW4gdGhlIGB0ZXN0X2RldGFpbC54bWxgIGZpbGUgaW4KK3Ro
ZSBjdXJyZW50IGRpcmVjdG9yeS4KKworSWYgeW91IHNwZWNpZnkgYSBkaXJlY3RvcnkgKGZvciBl
eGFtcGxlLCBgInhtbDpvdXRwdXQvZGlyZWN0b3J5LyJgIG9uIExpbnV4IG9yCitgInhtbDpvdXRw
dXRcZGlyZWN0b3J5XCJgIG9uIFdpbmRvd3MpLCBHb29nbGUgVGVzdCB3aWxsIGNyZWF0ZSB0aGUg
WE1MIGZpbGUgaW4KK3RoYXQgZGlyZWN0b3J5LCBuYW1lZCBhZnRlciB0aGUgdGVzdCBleGVjdXRh
YmxlIChlLmcuIGBmb29fdGVzdC54bWxgIGZvciB0ZXN0Citwcm9ncmFtIGBmb29fdGVzdGAgb3Ig
YGZvb190ZXN0LmV4ZWApLiBJZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cyAocGVyaGFwcyBsZWZ0
CitvdmVyIGZyb20gYSBwcmV2aW91cyBydW4pLCBHb29nbGUgVGVzdCB3aWxsIHBpY2sgYSBkaWZm
ZXJlbnQgbmFtZSAoZS5nLgorYGZvb190ZXN0XzEueG1sYCkgdG8gYXZvaWQgb3ZlcndyaXRpbmcg
aXQuCisKK1RoZSByZXBvcnQgdXNlcyB0aGUgZm9ybWF0IGRlc2NyaWJlZCBoZXJlLiAgSXQgaXMg
YmFzZWQgb24gdGhlCitganVuaXRyZXBvcnRgIEFudCB0YXNrIGFuZCBjYW4gYmUgcGFyc2VkIGJ5
IHBvcHVsYXIgY29udGludW91cyBidWlsZAorc3lzdGVtcyBsaWtlIFtIdWRzb25dKGh0dHBzOi8v
aHVkc29uLmRldi5qYXZhLm5ldC8pLiBTaW5jZSB0aGF0IGZvcm1hdAord2FzIG9yaWdpbmFsbHkg
aW50ZW5kZWQgZm9yIEphdmEsIGEgbGl0dGxlIGludGVycHJldGF0aW9uIGlzIHJlcXVpcmVkCit0
byBtYWtlIGl0IGFwcGx5IHRvIEdvb2dsZSBUZXN0IHRlc3RzLCBhcyBzaG93biBoZXJlOgorCitg
YGAKKzx0ZXN0c3VpdGVzIG5hbWU9IkFsbFRlc3RzIiAuLi4+CisgIDx0ZXN0c3VpdGUgbmFtZT0i
dGVzdF9jYXNlX25hbWUiIC4uLj4KKyAgICA8dGVzdGNhc2UgbmFtZT0idGVzdF9uYW1lIiAuLi4+
CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9
Ii4uLiIvPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+CisgICAgPC90ZXN0Y2FzZT4K
KyAgPC90ZXN0c3VpdGU+Cis8L3Rlc3RzdWl0ZXM+CitgYGAKKworICAqIFRoZSByb290IGA8dGVz
dHN1aXRlcz5gIGVsZW1lbnQgY29ycmVzcG9uZHMgdG8gdGhlIGVudGlyZSB0ZXN0IHByb2dyYW0u
CisgICogYDx0ZXN0c3VpdGU+YCBlbGVtZW50cyBjb3JyZXNwb25kIHRvIEdvb2dsZSBUZXN0IHRl
c3QgY2FzZXMuCisgICogYDx0ZXN0Y2FzZT5gIGVsZW1lbnRzIGNvcnJlc3BvbmQgdG8gR29vZ2xl
IFRlc3QgdGVzdCBmdW5jdGlvbnMuCisKK0ZvciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBwcm9n
cmFtCisKK2BgYAorVEVTVChNYXRoVGVzdCwgQWRkaXRpb24pIHsgLi4uIH0KK1RFU1QoTWF0aFRl
c3QsIFN1YnRyYWN0aW9uKSB7IC4uLiB9CitURVNUKExvZ2ljVGVzdCwgTm9uQ29udHJhZGljdGlv
bikgeyAuLi4gfQorYGBgCisKK2NvdWxkIGdlbmVyYXRlIHRoaXMgcmVwb3J0OgorCitgYGAKKzw/
eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8dGVzdHN1aXRlcyB0ZXN0cz0i
MyIgZmFpbHVyZXM9IjEiIGVycm9ycz0iMCIgdGltZT0iMzUiIG5hbWU9IkFsbFRlc3RzIj4KKyAg
PHRlc3RzdWl0ZSBuYW1lPSJNYXRoVGVzdCIgdGVzdHM9IjIiIGZhaWx1cmVzPSIxIiogZXJyb3Jz
PSIwIiB0aW1lPSIxNSI+CisgICAgPHRlc3RjYXNlIG5hbWU9IkFkZGl0aW9uIiBzdGF0dXM9InJ1
biIgdGltZT0iNyIgY2xhc3NuYW1lPSIiPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUg
b2Y6IGFkZCgxLCAxKSYjeDBBOyBBY3R1YWw6IDMmI3gwQTtFeHBlY3RlZDogMiIgdHlwZT0iIi8+
CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogYWRkKDEsIC0xKSYjeDBBOyBBY3R1
YWw6IDEmI3gwQTtFeHBlY3RlZDogMCIgdHlwZT0iIi8+CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8
dGVzdGNhc2UgbmFtZT0iU3VidHJhY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSI1IiBjbGFzc25h
bWU9IiI+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFt
ZT0iTG9naWNUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGVycm9ycz0iMCIgdGltZT0iNSI+
CisgICAgPHRlc3RjYXNlIG5hbWU9Ik5vbkNvbnRyYWRpY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1l
PSI1IiBjbGFzc25hbWU9IiI+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rl
c3RzdWl0ZXM+CitgYGAKKworVGhpbmdzIHRvIG5vdGU6CisKKyAgKiBUaGUgYHRlc3RzYCBhdHRy
aWJ1dGUgb2YgYSBgPHRlc3RzdWl0ZXM+YCBvciBgPHRlc3RzdWl0ZT5gIGVsZW1lbnQgdGVsbHMg
aG93IG1hbnkgdGVzdCBmdW5jdGlvbnMgdGhlIEdvb2dsZSBUZXN0IHByb2dyYW0gb3IgdGVzdCBj
YXNlIGNvbnRhaW5zLCB3aGlsZSB0aGUgYGZhaWx1cmVzYCBhdHRyaWJ1dGUgdGVsbHMgaG93IG1h
bnkgb2YgdGhlbSBmYWlsZWQuCisgICogVGhlIGB0aW1lYCBhdHRyaWJ1dGUgZXhwcmVzc2VzIHRo
ZSBkdXJhdGlvbiBvZiB0aGUgdGVzdCwgdGVzdCBjYXNlLCBvciBlbnRpcmUgdGVzdCBwcm9ncmFt
IGluIG1pbGxpc2Vjb25kcy4KKyAgKiBFYWNoIGA8ZmFpbHVyZT5gIGVsZW1lbnQgY29ycmVzcG9u
ZHMgdG8gYSBzaW5nbGUgZmFpbGVkIEdvb2dsZSBUZXN0IGFzc2VydGlvbi4KKyAgKiBTb21lIEpV
bml0IGNvbmNlcHRzIGRvbid0IGFwcGx5IHRvIEdvb2dsZSBUZXN0LCB5ZXQgd2UgaGF2ZSB0byBj
b25mb3JtIHRvIHRoZSBEVEQuIFRoZXJlZm9yZSB5b3UnbGwgc2VlIHNvbWUgZHVtbXkgZWxlbWVu
dHMgYW5kIGF0dHJpYnV0ZXMgaW4gdGhlIHJlcG9ydC4gWW91IGNhbiBzYWZlbHkgaWdub3JlIHRo
ZXNlIHBhcnRzLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMg
Q29udHJvbGxpbmcgSG93IEZhaWx1cmVzIEFyZSBSZXBvcnRlZCAjIworCisjIyMgVHVybmluZyBB
c3NlcnRpb24gRmFpbHVyZXMgaW50byBCcmVhay1Qb2ludHMgIyMjCisKK1doZW4gcnVubmluZyB0
ZXN0IHByb2dyYW1zIHVuZGVyIGEgZGVidWdnZXIsIGl0J3MgdmVyeSBjb252ZW5pZW50IGlmIHRo
ZQorZGVidWdnZXIgY2FuIGNhdGNoIGFuIGFzc2VydGlvbiBmYWlsdXJlIGFuZCBhdXRvbWF0aWNh
bGx5IGRyb3AgaW50byBpbnRlcmFjdGl2ZQorbW9kZS4gR29vZ2xlIFRlc3QncyBfYnJlYWstb24t
ZmFpbHVyZV8gbW9kZSBzdXBwb3J0cyB0aGlzIGJlaGF2aW9yLgorCitUbyBlbmFibGUgaXQsIHNl
dCB0aGUgYEdURVNUX0JSRUFLX09OX0ZBSUxVUkVgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEg
dmFsdWUKK290aGVyIHRoYW4gYDBgIC4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhlIGAt
LWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVgCitjb21tYW5kIGxpbmUgZmxhZy4KKworX0F2YWlsYWJp
bGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBTdXBwcmVzc2luZyBQb3AtdXBzIENh
dXNlZCBieSBFeGNlcHRpb25zICMjIworCitPbiBXaW5kb3dzLCBHb29nbGUgVGVzdCBtYXkgYmUg
dXNlZCB3aXRoIGV4Y2VwdGlvbnMgZW5hYmxlZC4gRXZlbiB3aGVuCitleGNlcHRpb25zIGFyZSBk
aXNhYmxlZCwgYW4gYXBwbGljYXRpb24gY2FuIHN0aWxsIHRocm93IHN0cnVjdHVyZWQgZXhjZXB0
aW9ucworKFNFSCdzKS4gSWYgYSB0ZXN0IHRocm93cyBhbiBleGNlcHRpb24sIGJ5IGRlZmF1bHQg
R29vZ2xlIFRlc3QgZG9lc24ndCB0cnkgdG8KK2NhdGNoIGl0LiBJbnN0ZWFkLCB5b3UnbGwgc2Vl
IGEgcG9wLXVwIGRpYWxvZywgYXQgd2hpY2ggcG9pbnQgeW91IGNhbiBhdHRhY2gKK3RoZSBwcm9j
ZXNzIHRvIGEgZGVidWdnZXIgYW5kIGVhc2lseSBmaW5kIG91dCB3aGF0IHdlbnQgd3JvbmcuCisK
K0hvd2V2ZXIsIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlZSB0aGUgcG9wLXVwcyAoZm9yIGV4YW1w
bGUsIGlmIHlvdSBydW4gdGhlCit0ZXN0cyBpbiBhIGJhdGNoIGpvYiksIHNldCB0aGUgYEdURVNU
X0NBVENIX0VYQ0VQVElPTlNgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvCithIG5vbi0gYDBgIHZh
bHVlLCBvciB1c2UgdGhlIGAtLWd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNgIGZsYWcuIEdvb2dsZSBU
ZXN0IG5vdworY2F0Y2hlcyBhbGwgdGVzdC10aHJvd24gZXhjZXB0aW9ucyBhbmQgbG9ncyB0aGVt
IGFzIGZhaWx1cmVzLgorCitfQXZhaWxhYmlsaXR5Ol8gV2luZG93cy4gYEdURVNUX0NBVENIX0VY
Q0VQVElPTlNgIGFuZAorYC0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc2AgaGF2ZSBubyBlZmZlY3Qg
b24gR29vZ2xlIFRlc3QncyBiZWhhdmlvciBvbiBMaW51eCBvcgorTWFjLCBldmVuIGlmIGV4Y2Vw
dGlvbnMgYXJlIGVuYWJsZWQuIEl0IGlzIHBvc3NpYmxlIHRvIGFkZCBzdXBwb3J0IGZvciBjYXRj
aGluZworZXhjZXB0aW9ucyBvbiB0aGVzZSBwbGF0Zm9ybXMsIGJ1dCBpdCBpcyBub3QgaW1wbGVt
ZW50ZWQgeWV0LgorCisjIyMgTGV0dGluZyBBbm90aGVyIFRlc3RpbmcgRnJhbWV3b3JrIERyaXZl
ICMjIworCitJZiB5b3Ugd29yayBvbiBhIHByb2plY3QgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHVz
aW5nIGFub3RoZXIgdGVzdGluZworZnJhbWV3b3JrIGFuZCBpcyBub3QgcmVhZHkgdG8gY29tcGxl
dGVseSBzd2l0Y2ggdG8gR29vZ2xlIFRlc3QgeWV0LAoreW91IGNhbiBnZXQgbXVjaCBvZiBHb29n
bGUgVGVzdCdzIGJlbmVmaXQgYnkgdXNpbmcgaXRzIGFzc2VydGlvbnMgaW4KK3lvdXIgZXhpc3Rp
bmcgdGVzdHMuICBKdXN0IGNoYW5nZSB5b3VyIGBtYWluKClgIGZ1bmN0aW9uIHRvIGxvb2sKK2xp
a2U6CisKK2BgYAorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK2ludCBtYWluKGludCBhcmdj
LCBjaGFyKiogYXJndikgeworICA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVy
ZSkgPSB0cnVlOworICAvLyBJbXBvcnRhbnQ6IEdvb2dsZSBUZXN0IG11c3QgYmUgaW5pdGlhbGl6
ZWQuCisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIC4uLiB3
aGF0ZXZlciB5b3VyIGV4aXN0aW5nIHRlc3RpbmcgZnJhbWV3b3JrIHJlcXVpcmVzIC4uLgorfQor
YGBgCisKK1dpdGggdGhhdCwgeW91IGNhbiB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBpbiBh
ZGRpdGlvbiB0byB0aGUKK25hdGl2ZSBhc3NlcnRpb25zIHlvdXIgdGVzdGluZyBmcmFtZXdvcmsg
cHJvdmlkZXMsIGZvciBleGFtcGxlOgorCitgYGAKK3ZvaWQgVGVzdEZvb0RvZXNCYXIoKSB7Cisg
IEZvbyBmb287CisgIEVYUEVDVF9MRShmb28uQmFyKDEpLCAxMDApOyAgICAgLy8gQSBHb29nbGUg
VGVzdCBhc3NlcnRpb24uCisgIENQUFVOSVRfQVNTRVJUKGZvby5Jc0VtcHR5KCkpOyAgLy8gQSBu
YXRpdmUgYXNzZXJ0aW9uLgorfQorYGBgCisKK0lmIGEgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIGZh
aWxzLCBpdCB3aWxsIHByaW50IGFuIGVycm9yIG1lc3NhZ2UgYW5kCit0aHJvdyBhbiBleGNlcHRp
b24sIHdoaWNoIHdpbGwgYmUgdHJlYXRlZCBhcyBhIGZhaWx1cmUgYnkgeW91ciBob3N0Cit0ZXN0
aW5nIGZyYW1ld29yay4gIElmIHlvdSBjb21waWxlIHlvdXIgY29kZSB3aXRoIGV4Y2VwdGlvbnMg
ZGlzYWJsZWQsCithIGZhaWxlZCBHb29nbGUgVGVzdCBhc3NlcnRpb24gd2lsbCBpbnN0ZWFkIGV4
aXQgeW91ciBwcm9ncmFtIHdpdGggYQorbm9uLXplcm8gY29kZSwgd2hpY2ggd2lsbCBhbHNvIHNp
Z25hbCBhIHRlc3QgZmFpbHVyZSB0byB5b3VyIHRlc3QKK3J1bm5lci4KKworSWYgeW91IGRvbid0
IHdyaXRlIGA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSB0cnVlO2Ag
aW4KK3lvdXIgYG1haW4oKWAsIHlvdSBjYW4gYWx0ZXJuYXRpdmVseSBlbmFibGUgdGhpcyBmZWF0
dXJlIGJ5IHNwZWNpZnlpbmcKK3RoZSBgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlYCBmbGFnIG9u
IHRoZSBjb21tYW5kLWxpbmUgb3Igc2V0dGluZyB0aGUKK2BHVEVTVF9USFJPV19PTl9GQUlMVVJF
YCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIG5vbi16ZXJvIHZhbHVlLgorCitfQXZhaWxhYmls
aXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdjEuMy4wLgorCisjIyBEaXN0cmlidXRp
bmcgVGVzdCBGdW5jdGlvbnMgdG8gTXVsdGlwbGUgTWFjaGluZXMgIyMKKworSWYgeW91IGhhdmUg
bW9yZSB0aGFuIG9uZSBtYWNoaW5lIHlvdSBjYW4gdXNlIHRvIHJ1biBhIHRlc3QgcHJvZ3JhbSwK
K3lvdSBtaWdodCB3YW50IHRvIHJ1biB0aGUgdGVzdCBmdW5jdGlvbnMgaW4gcGFyYWxsZWwgYW5k
IGdldCB0aGUKK3Jlc3VsdCBmYXN0ZXIuICBXZSBjYWxsIHRoaXMgdGVjaG5pcXVlIF9zaGFyZGlu
Z18sIHdoZXJlIGVhY2ggbWFjaGluZQoraXMgY2FsbGVkIGEgX3NoYXJkXy4KKworR29vZ2xlIFRl
c3QgaXMgY29tcGF0aWJsZSB3aXRoIHRlc3Qgc2hhcmRpbmcuICBUbyB0YWtlIGFkdmFudGFnZSBv
ZgordGhpcyBmZWF0dXJlLCB5b3VyIHRlc3QgcnVubmVyIChub3QgcGFydCBvZiBHb29nbGUgVGVz
dCkgbmVlZHMgdG8gZG8KK3RoZSBmb2xsb3dpbmc6CisKKyAgMS4gQWxsb2NhdGUgYSBudW1iZXIg
b2YgbWFjaGluZXMgKHNoYXJkcykgdG8gcnVuIHRoZSB0ZXN0cy4KKyAgMS4gT24gZWFjaCBzaGFy
ZCwgc2V0IHRoZSBgR1RFU1RfVE9UQUxfU0hBUkRTYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0
aGUgdG90YWwgbnVtYmVyIG9mIHNoYXJkcy4gIEl0IG11c3QgYmUgdGhlIHNhbWUgZm9yIGFsbCBz
aGFyZHMuCisgIDEuIE9uIGVhY2ggc2hhcmQsIHNldCB0aGUgYEdURVNUX1NIQVJEX0lOREVYYCBl
bnZpcm9ubWVudCB2YXJpYWJsZSB0byB0aGUgaW5kZXggb2YgdGhlIHNoYXJkLiAgRGlmZmVyZW50
IHNoYXJkcyBtdXN0IGJlIGFzc2lnbmVkIGRpZmZlcmVudCBpbmRpY2VzLCB3aGljaCBtdXN0IGJl
IGluIHRoZSByYW5nZSBgWzAsIEdURVNUX1RPVEFMX1NIQVJEUyAtIDFdYC4KKyAgMS4gUnVuIHRo
ZSBzYW1lIHRlc3QgcHJvZ3JhbSBvbiBhbGwgc2hhcmRzLiAgV2hlbiBHb29nbGUgVGVzdCBzZWVz
IHRoZSBhYm92ZSB0d28gZW52aXJvbm1lbnQgdmFyaWFibGVzLCBpdCB3aWxsIHNlbGVjdCBhIHN1
YnNldCBvZiB0aGUgdGVzdCBmdW5jdGlvbnMgdG8gcnVuLiAgQWNyb3NzIGFsbCBzaGFyZHMsIGVh
Y2ggdGVzdCBmdW5jdGlvbiBpbiB0aGUgcHJvZ3JhbSB3aWxsIGJlIHJ1biBleGFjdGx5IG9uY2Uu
CisgIDEuIFdhaXQgZm9yIGFsbCBzaGFyZHMgdG8gZmluaXNoLCB0aGVuIGNvbGxlY3QgYW5kIHJl
cG9ydCB0aGUgcmVzdWx0cy4KKworWW91ciBwcm9qZWN0IG1heSBoYXZlIHRlc3RzIHRoYXQgd2Vy
ZSB3cml0dGVuIHdpdGhvdXQgR29vZ2xlIFRlc3QgYW5kCit0aHVzIGRvbid0IHVuZGVyc3RhbmQg
dGhpcyBwcm90b2NvbC4gIEluIG9yZGVyIGZvciB5b3VyIHRlc3QgcnVubmVyIHRvCitmaWd1cmUg
b3V0IHdoaWNoIHRlc3Qgc3VwcG9ydHMgc2hhcmRpbmcsIGl0IGNhbiBzZXQgdGhlIGVudmlyb25t
ZW50Cit2YXJpYWJsZSBgR1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEVgIHRvIGEgbm9uLWV4aXN0ZW50
IGZpbGUgcGF0aC4gIElmIGEKK3Rlc3QgcHJvZ3JhbSBzdXBwb3J0cyBzaGFyZGluZywgaXQgd2ls
bCBjcmVhdGUgdGhpcyBmaWxlIHRvCithY2tub3dsZWRnZSB0aGUgZmFjdCAodGhlIGFjdHVhbCBj
b250ZW50cyBvZiB0aGUgZmlsZSBhcmUgbm90CitpbXBvcnRhbnQgYXQgdGhpcyB0aW1lOyBhbHRo
b3VnaCB3ZSBtYXkgc3RpY2sgc29tZSB1c2VmdWwgaW5mb3JtYXRpb24KK2luIGl0IGluIHRoZSBm
dXR1cmUuKTsgb3RoZXJ3aXNlIGl0IHdpbGwgbm90IGNyZWF0ZSBpdC4KKworSGVyZSdzIGFuIGV4
YW1wbGUgdG8gbWFrZSBpdCBjbGVhci4gIFN1cHBvc2UgeW91IGhhdmUgYSB0ZXN0IHByb2dyYW0K
K2Bmb29fdGVzdGAgdGhhdCBjb250YWlucyB0aGUgZm9sbG93aW5nIDUgdGVzdCBmdW5jdGlvbnM6
CitgYGAKK1RFU1QoQSwgVikKK1RFU1QoQSwgVykKK1RFU1QoQiwgWCkKK1RFU1QoQiwgWSkKK1RF
U1QoQiwgWikKK2BgYAorYW5kIHlvdSBoYXZlIDMgbWFjaGluZXMgYXQgeW91ciBkaXNwb3NhbC4g
IFRvIHJ1biB0aGUgdGVzdCBmdW5jdGlvbnMgaW4KK3BhcmFsbGVsLCB5b3Ugd291bGQgc2V0IGBH
VEVTVF9UT1RBTF9TSEFSRFNgIHRvIDMgb24gYWxsIG1hY2hpbmVzLCBhbmQKK3NldCBgR1RFU1Rf
U0hBUkRfSU5ERVhgIHRvIDAsIDEsIGFuZCAyIG9uIHRoZSBtYWNoaW5lcyByZXNwZWN0aXZlbHku
CitUaGVuIHlvdSB3b3VsZCBydW4gdGhlIHNhbWUgYGZvb190ZXN0YCBvbiBlYWNoIG1hY2hpbmUu
CisKK0dvb2dsZSBUZXN0IHJlc2VydmVzIHRoZSByaWdodCB0byBjaGFuZ2UgaG93IHRoZSB3b3Jr
IGlzIGRpc3RyaWJ1dGVkCithY3Jvc3MgdGhlIHNoYXJkcywgYnV0IGhlcmUncyBvbmUgcG9zc2li
bGUgc2NlbmFyaW86CisKKyAgKiBNYWNoaW5lICMwIHJ1bnMgYEEuVmAgYW5kIGBCLlhgLgorICAq
IE1hY2hpbmUgIzEgcnVucyBgQS5XYCBhbmQgYEIuWWAuCisgICogTWFjaGluZSAjMiBydW5zIGBC
LlpgLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lv
biAxLjMuMC4KKworIyBGdXNpbmcgR29vZ2xlIFRlc3QgU291cmNlIEZpbGVzICMKKworR29vZ2xl
IFRlc3QncyBpbXBsZW1lbnRhdGlvbiBjb25zaXN0cyBvZiB+MzAgZmlsZXMgKGV4Y2x1ZGluZyBp
dHMgb3duCit0ZXN0cykuICBTb21ldGltZXMgeW91IG1heSB3YW50IHRoZW0gdG8gYmUgcGFja2Fn
ZWQgdXAgaW4gdHdvIGZpbGVzIChhCitgLmhgIGFuZCBhIGAuY2NgKSBpbnN0ZWFkLCBzdWNoIHRo
YXQgeW91IGNhbiBlYXNpbHkgY29weSB0aGVtIHRvIGEgbmV3CittYWNoaW5lIGFuZCBzdGFydCBo
YWNraW5nIHRoZXJlLiAgRm9yIHRoaXMgd2UgcHJvdmlkZSBhbiBleHBlcmltZW50YWwKK1B5dGhv
biBzY3JpcHQgYGZ1c2VfZ3Rlc3RfZmlsZXMucHlgIGluIHRoZSBgc2NyaXB0cy9gIGRpcmVjdG9y
eSAoc2luY2UgcmVsZWFzZSAxLjMuMCkuCitBc3N1bWluZyB5b3UgaGF2ZSBQeXRob24gMi40IG9y
IGFib3ZlIGluc3RhbGxlZCBvbiB5b3VyIG1hY2hpbmUsIGp1c3QKK2dvIHRvIHRoYXQgZGlyZWN0
b3J5IGFuZCBydW4KK2BgYAorcHl0aG9uIGZ1c2VfZ3Rlc3RfZmlsZXMucHkgT1VUUFVUX0RJUgor
YGBgCisKK2FuZCB5b3Ugc2hvdWxkIHNlZSBhbiBgT1VUUFVUX0RJUmAgZGlyZWN0b3J5IGJlaW5n
IGNyZWF0ZWQgd2l0aCBmaWxlcworYGd0ZXN0L2d0ZXN0LmhgIGFuZCBgZ3Rlc3QvZ3Rlc3QtYWxs
LmNjYCBpbiBpdC4gIFRoZXNlIGZpbGVzIGNvbnRhaW4KK2V2ZXJ5dGhpbmcgeW91IG5lZWQgdG8g
dXNlIEdvb2dsZSBUZXN0LiAgSnVzdCBjb3B5IHRoZW0gdG8gYW55d2hlcmUKK3lvdSB3YW50IGFu
ZCB5b3UgYXJlIHJlYWR5IHRvIHdyaXRlIHRlc3RzLiAgWW91IGNhbiB1c2UgdGhlCitbc2NycHRz
L3Rlc3QvTWFrZWZpbGVdKC4uL3NjcmlwdHMvdGVzdC9NYWtlZmlsZSkKK2ZpbGUgYXMgYW4gZXhh
bXBsZSBvbiBob3cgdG8gY29tcGlsZSB5b3VyIHRlc3RzIGFnYWluc3QgdGhlbS4KKworIyBXaGVy
ZSB0byBHbyBmcm9tIEhlcmUgIworCitDb25ncmF0dWxhdGlvbnMhIFlvdSd2ZSBub3cgbGVhcm5l
ZCBtb3JlIGFkdmFuY2VkIEdvb2dsZSBUZXN0IHRvb2xzIGFuZCBhcmUKK3JlYWR5IHRvIHRhY2ts
ZSBtb3JlIGNvbXBsZXggdGVzdGluZyB0YXNrcy4gSWYgeW91IHdhbnQgdG8gZGl2ZSBldmVuIGRl
ZXBlciwgeW91CitjYW4gcmVhZCB0aGUgW0ZBUV0oVjFfNV9GQVEubWQpLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV81X0RvY3VtZW50YXRpb24ubWQgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzVfRG9jdW1lbnRhdGlvbi5tZApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NmJiYTJlYzg2ZTZjNmE0ODFiZGJlYWE1YWYxY2ZkYmVlM2FmYTIwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV81X0RvY3VtZW50YXRpb24ubWQK
QEAgLTAsMCArMSwxMiBAQAorVGhpcyBwYWdlIGxpc3RzIGFsbCBvZmZpY2lhbCBkb2N1bWVudGF0
aW9uIHdpa2kgcGFnZXMgZm9yIEdvb2dsZSBUZXN0ICoqMS41LjAqKiAtLSAqKmlmIHlvdSB1c2Ug
YSBkaWZmZXJlbnQgdmVyc2lvbiBvZiBHb29nbGUgVGVzdCwgbWFrZSBzdXJlIHRvIHJlYWQgdGhl
IGRvY3VtZW50YXRpb24gZm9yIHRoYXQgdmVyc2lvbiBpbnN0ZWFkLioqCisKKyAgKiBbUHJpbWVy
XShWMV81X1ByaW1lci5tZCkgLS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJlIG5ldyB0byBHb29nbGUg
VGVzdC4KKyAgKiBbU2FtcGxlc10oU2FtcGxlcy5tZCkgLS0gbGVhcm4gZnJvbSBleGFtcGxlcy4K
KyAgKiBbQWR2YW5jZWRHdWlkZV0oVjFfNV9BZHZhbmNlZEd1aWRlLm1kKSAtLSBsZWFybiBtb3Jl
IGFib3V0IEdvb2dsZSBUZXN0LgorICAqIFtYY29kZUd1aWRlXShWMV81X1hjb2RlR3VpZGUubWQp
IC0tIGhvdyB0byB1c2UgR29vZ2xlIFRlc3QgaW4gWGNvZGUgb24gTWFjLgorICAqIFtGcmVxdWVu
dGx5LUFza2VkIFF1ZXN0aW9uc10oVjFfNV9GQVEubWQpIC0tIGNoZWNrIGhlcmUgYmVmb3JlIGFz
a2luZyBhIHF1ZXN0aW9uIG9uIHRoZSBtYWlsaW5nIGxpc3QuCisKK1RvIGNvbnRyaWJ1dGUgY29k
ZSB0byBHb29nbGUgVGVzdCwgcmVhZDoKKworICAqIERldkd1aWRlIC0tIHJlYWQgdGhpcyBfYmVm
b3JlXyB3cml0aW5nIHlvdXIgZmlyc3QgcGF0Y2guCisgICogW1B1bXBNYW51YWxdKFYxXzVfUHVt
cE1hbnVhbC5tZCkgLS0gaG93IHdlIGdlbmVyYXRlIHNvbWUgb2YgR29vZ2xlIFRlc3QncyBzb3Vy
Y2UgZmlsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV81X0ZBUS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2RvY3MvVjFfNV9GQVEubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg3MGFmZjAwMDdmMmM2YTJjNTNmZmFj
MjFiZTBhZTA1MWQyNDNlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2RvY3MvVjFfNV9GQVEubWQKQEAgLTAsMCArMSw4ODYgQEAKKworCitJZiB5b3UgY2Fubm90
IGZpbmQgdGhlIGFuc3dlciB0byB5b3VyIHF1ZXN0aW9uIGhlcmUsIGFuZCB5b3UgaGF2ZSByZWFk
CitbUHJpbWVyXShWMV81X1ByaW1lci5tZCkgYW5kIFtBZHZhbmNlZEd1aWRlXShWMV81X0FkdmFu
Y2VkR3VpZGUubWQpLCBzZW5kIGl0IHRvCitnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vw
cy5jb20uCisKKyMjIFdoeSBzaG91bGQgSSB1c2UgR29vZ2xlIFRlc3QgaW5zdGVhZCBvZiBteSBm
YXZvcml0ZSBDKysgdGVzdGluZyBmcmFtZXdvcms/ICMjCisKK0ZpcnN0LCBsZXQncyBzYXkgY2xl
YXJseSB0aGF0IHdlIGRvbid0IHdhbnQgdG8gZ2V0IGludG8gdGhlIGRlYmF0ZSBvZgord2hpY2gg
QysrIHRlc3RpbmcgZnJhbWV3b3JrIGlzICoqdGhlIGJlc3QqKi4gIFRoZXJlIGV4aXN0IG1hbnkg
ZmluZQorZnJhbWV3b3JrcyBmb3Igd3JpdGluZyBDKysgdGVzdHMsIGFuZCB3ZSBoYXZlIHRyZW1l
bmRvdXMgcmVzcGVjdCBmb3IKK3RoZSBkZXZlbG9wZXJzIGFuZCB1c2VycyBvZiB0aGVtLiAgV2Ug
ZG9uJ3QgdGhpbmsgdGhlcmUgaXMgKG9yIHdpbGwKK2JlKSBhIHNpbmdsZSBiZXN0IGZyYW1ld29y
ayAtIHlvdSBoYXZlIHRvIHBpY2sgdGhlIHJpZ2h0IHRvb2wgZm9yIHRoZQorcGFydGljdWxhciB0
YXNrIHlvdSBhcmUgdGFja2xpbmcuCisKK1dlIGNyZWF0ZWQgR29vZ2xlIFRlc3QgYmVjYXVzZSB3
ZSBjb3VsZG4ndCBmaW5kIHRoZSByaWdodCBjb21iaW5hdGlvbgorb2YgZmVhdHVyZXMgYW5kIGNv
bnZlbmllbmNlcyBpbiBhbiBleGlzdGluZyBmcmFtZXdvcmsgdG8gc2F0aXNmeSBfb3VyXworbmVl
ZHMuICBUaGUgZm9sbG93aW5nIGlzIGEgbGlzdCBvZiB0aGluZ3MgdGhhdCBfd2VfIGxpa2UgYWJv
dXQgR29vZ2xlCitUZXN0LiAgV2UgZG9uJ3QgY2xhaW0gdGhlbSB0byBiZSB1bmlxdWUgdG8gR29v
Z2xlIFRlc3QgLSByYXRoZXIsIHRoZQorY29tYmluYXRpb24gb2YgdGhlbSBtYWtlcyBHb29nbGUg
VGVzdCB0aGUgY2hvaWNlIGZvciB1cy4gIFdlIGhvcGUgdGhpcworbGlzdCBjYW4gaGVscCB5b3Ug
ZGVjaWRlIHdoZXRoZXIgaXQgaXMgZm9yIHlvdSB0b28uCisKKyAgKiBHb29nbGUgVGVzdCBpcyBk
ZXNpZ25lZCB0byBiZSBwb3J0YWJsZS4gIEl0IHdvcmtzIHdoZXJlIG1hbnkgU1RMIHR5cGVzIChl
LmcuIGBzdGQ6OnN0cmluZ2AgYW5kIGBzdGQ6OnZlY3RvcmApIGRvbid0IGNvbXBpbGUuICBJdCBk
b2Vzbid0IHJlcXVpcmUgZXhjZXB0aW9ucyBvciBSVFRJLiAgQXMgYSByZXN1bHQsIGl0IHJ1bnMg
b24gTGludXgsIE1hYyBPUyBYLCBXaW5kb3dzIGFuZCBzZXZlcmFsIGVtYmVkZGVkIG9wZXJhdGlu
ZyBzeXN0ZW1zLgorICAqIE5vbmZhdGFsIGFzc2VydGlvbnMgKGBFWFBFQ1RfKmApIGhhdmUgcHJv
dmVuIHRvIGJlIGdyZWF0IHRpbWUgc2F2ZXJzLCBhcyB0aGV5IGFsbG93IGEgdGVzdCB0byByZXBv
cnQgbXVsdGlwbGUgZmFpbHVyZXMgaW4gYSBzaW5nbGUgZWRpdC1jb21waWxlLXRlc3QgY3ljbGUu
CisgICogSXQncyBlYXN5IHRvIHdyaXRlIGFzc2VydGlvbnMgdGhhdCBnZW5lcmF0ZSBpbmZvcm1h
dGl2ZSBtZXNzYWdlczogeW91IGp1c3QgdXNlIHRoZSBzdHJlYW0gc3ludGF4IHRvIGFwcGVuZCBh
bnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgZS5nLiBgQVNTRVJUX0VRKDUsIEZvbyhpKSkgPDwg
IiB3aGVyZSBpID0gIiA8PCBpO2AuICBJdCBkb2Vzbid0IHJlcXVpcmUgYSBuZXcgc2V0IG9mIG1h
Y3JvcyBvciBzcGVjaWFsIGZ1bmN0aW9ucy4KKyAgKiBHb29nbGUgVGVzdCBhdXRvbWF0aWNhbGx5
IGRldGVjdHMgeW91ciB0ZXN0cyBhbmQgZG9lc24ndCByZXF1aXJlIHlvdSB0byBlbnVtZXJhdGUg
dGhlbSBpbiBvcmRlciB0byBydW4gdGhlbS4KKyAgKiBObyBmcmFtZXdvcmsgY2FuIGFudGljaXBh
dGUgYWxsIHlvdXIgbmVlZHMsIHNvIEdvb2dsZSBUZXN0IHByb3ZpZGVzIGBFWFBFQ1RfUFJFRCpg
IHRvIG1ha2UgaXQgZWFzeSB0byBleHRlbmQgeW91ciBhc3NlcnRpb24gdm9jYWJ1bGFyeS4gIEZv
ciBhIG5pY2VyIHN5bnRheCwgeW91IGNhbiBkZWZpbmUgeW91ciBvd24gYXNzZXJ0aW9uIG1hY3Jv
cyB0cml2aWFsbHkgaW4gdGVybXMgb2YgYEVYUEVDVF9QUkVEKmAuCisgICogRGVhdGggdGVzdHMg
YXJlIHByZXR0eSBoYW5keSBmb3IgZW5zdXJpbmcgdGhhdCB5b3VyIGFzc2VydHMgaW4gcHJvZHVj
dGlvbiBjb2RlIGFyZSB0cmlnZ2VyZWQgYnkgdGhlIHJpZ2h0IGNvbmRpdGlvbnMuCisgICogYFND
T1BFRF9UUkFDRWAgaGVscHMgeW91IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYW4gYXNzZXJ0
aW9uIGZhaWx1cmUgd2hlbiBpdCBjb21lcyBmcm9tIGluc2lkZSBhIHN1Yi1yb3V0aW5lIG9yIGxv
b3AuCisgICogWW91IGNhbiBkZWNpZGUgd2hpY2ggdGVzdHMgdG8gcnVuIHVzaW5nIG5hbWUgcGF0
dGVybnMuICBUaGlzIHNhdmVzIHRpbWUgd2hlbiB5b3Ugd2FudCB0byBxdWlja2x5IHJlcHJvZHVj
ZSBhIHRlc3QgZmFpbHVyZS4KKworIyMgSG93IGRvIEkgZ2VuZXJhdGUgNjQtYml0IGJpbmFyaWVz
IG9uIFdpbmRvd3MgKHVzaW5nIFZpc3VhbCBTdHVkaW8gMjAwOCk/ICMjCisKKyhBbnN3ZXJlZCBi
eSBUcmV2b3IgUm9iaW5zb24pCisKK0xvYWQgdGhlIHN1cHBsaWVkIFZpc3VhbCBTdHVkaW8gc29s
dXRpb24gZmlsZSwgZWl0aGVyIGBtc3ZjXGd0ZXN0LW1kLnNsbmAgb3IKK2Btc3ZjXGd0ZXN0LnNs
bmAuIEdvIHRocm91Z2ggdGhlIG1pZ3JhdGlvbiB3aXphcmQgdG8gbWlncmF0ZSB0aGUKK3NvbHV0
aW9uIGFuZCBwcm9qZWN0IGZpbGVzIHRvIFZpc3VhbCBTdHVkaW8gMjAwOC4gU2VsZWN0CitgQ29u
ZmlndXJhdGlvbiBNYW5hZ2VyLi4uYCBmcm9tIHRoZSBgQnVpbGRgIG1lbnUuIFNlbGVjdCBgPE5l
dy4uLj5gIGZyb20KK3RoZSBgQWN0aXZlIHNvbHV0aW9uIHBsYXRmb3JtYCBkcm9wZG93bi4gIFNl
bGVjdCBgeDY0YCBmcm9tIHRoZSBuZXcKK3BsYXRmb3JtIGRyb3Bkb3duLCBsZWF2ZSBgQ29weSBz
ZXR0aW5ncyBmcm9tYCBzZXQgdG8gYFdpbjMyYCBhbmQKK2BDcmVhdGUgbmV3IHByb2plY3QgcGxh
dGZvcm1zYCBjaGVja2VkLCB0aGVuIGNsaWNrIGBPS2AuIFlvdSBub3cgaGF2ZQorYFdpbjMyYCBh
bmQgYHg2NGAgcGxhdGZvcm0gY29uZmlndXJhdGlvbnMsIHNlbGVjdGFibGUgZnJvbSB0aGUKK2BT
dGFuZGFyZGAgdG9vbGJhciwgd2hpY2ggYWxsb3cgeW91IHRvIHRvZ2dsZSBiZXR3ZWVuIGJ1aWxk
aW5nIDMyLWJpdCBvcgorNjQtYml0IGJpbmFyaWVzIChvciBib3RoIGF0IG9uY2UgdXNpbmcgQmF0
Y2ggQnVpbGQpLgorCitJbiBvcmRlciB0byBwcmV2ZW50IGJ1aWxkIG91dHB1dCBmaWxlcyBmcm9t
IG92ZXJ3cml0aW5nIG9uZSBhbm90aGVyLAoreW91J2xsIG5lZWQgdG8gY2hhbmdlIHRoZSBgSW50
ZXJtZWRpYXRlIERpcmVjdG9yeWAgc2V0dGluZ3MgZm9yIHRoZQorbmV3bHkgY3JlYXRlZCBwbGF0
Zm9ybSBjb25maWd1cmF0aW9uIGFjcm9zcyBhbGwgdGhlIHByb2plY3RzLiBUbyBkbwordGhpcywg
bXVsdGktc2VsZWN0IChlLmcuIHVzaW5nIHNoaWZ0LWNsaWNrKSBhbGwgcHJvamVjdHMgKGJ1dCBu
b3QgdGhlCitzb2x1dGlvbikgaW4gdGhlIGBTb2x1dGlvbiBFeHBsb3JlcmAuIFJpZ2h0LWNsaWNr
IG9uZSBvZiB0aGVtIGFuZAorc2VsZWN0IGBQcm9wZXJ0aWVzYC4gSW4gdGhlIGxlZnQgcGFuZSwg
c2VsZWN0IGBDb25maWd1cmF0aW9uIFByb3BlcnRpZXNgLAorYW5kIGZyb20gdGhlIGBDb25maWd1
cmF0aW9uYCBkcm9wZG93biwgc2VsZWN0IGBBbGwgQ29uZmlndXJhdGlvbnNgLgorTWFrZSBzdXJl
IHRoZSBzZWxlY3RlZCBwbGF0Zm9ybSBpcyBgeDY0YC4gRm9yIHRoZQorYEludGVybWVkaWF0ZSBE
aXJlY3RvcnlgIHNldHRpbmcsIGNoYW5nZSB0aGUgdmFsdWUgZnJvbQorYCQoUGxhdGZvcm1OYW1l
KVwkKENvbmZpZ3VyYXRpb25OYW1lKWAgdG8KK2AkKE91dERpcilcJChQcm9qZWN0TmFtZSlgLiBD
bGljayBgT0tgIGFuZCB0aGVuIGJ1aWxkIHRoZQorc29sdXRpb24uIFdoZW4gdGhlIGJ1aWxkIGlz
IGNvbXBsZXRlLCB0aGUgNjQtYml0IGJpbmFyaWVzIHdpbGwgYmUgaW4KK3RoZSBgbXN2Y1x4NjRc
RGVidWdgIGRpcmVjdG9yeS4KKworIyMgQ2FuIEkgdXNlIEdvb2dsZSBUZXN0IG9uIE1pbkdXPyAj
IworCitXZSBoYXZlbid0IHRlc3RlZCB0aGlzIG91cnNlbHZlcywgYnV0IFBlciBBYnJhaGFtc2Vu
IHJlcG9ydGVkIHRoYXQgaGUKK3dhcyBhYmxlIHRvIGNvbXBpbGUgYW5kIGluc3RhbGwgR29vZ2xl
IFRlc3Qgc3VjY2Vzc2Z1bGx5IHdoZW4gdXNpbmcKK01pbkdXIGZyb20gQ3lnd2luLiAgWW91J2xs
IG5lZWQgdG8gY29uZmlndXJlIGl0IHdpdGg6CisKK2BQQVRIL1RPL2NvbmZpZ3VyZSBDQz0iZ2Nj
IC1tbm8tY3lnd2luIiBDWFg9ImcrKyAtbW5vLWN5Z3dpbiJgCisKK1lvdSBzaG91bGQgYmUgYWJs
ZSB0byByZXBsYWNlIHRoZSBgLW1uby1jeWd3aW5gIG9wdGlvbiB3aXRoIGRpcmVjdCBsaW5rcwor
dG8gdGhlIHJlYWwgTWluR1cgYmluYXJpZXMsIGJ1dCB3ZSBoYXZlbid0IHRyaWVkIHRoYXQuCisK
K0NhdmVhdHM6CisKKyAgKiBUaGVyZSBhcmUgbWFueSB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZy4K
KyAgKiBgbWFrZSBjaGVja2Agd2lsbCBwcm9kdWNlIHNvbWUgZXJyb3JzIGFzIG5vdCBhbGwgdGVz
dHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZiBhcmUgY29tcGF0aWJsZSB3aXRoIE1pbkdXLgorCitX
ZSBhbHNvIGhhdmUgcmVwb3J0cyBvbiBzdWNjZXNzZnVsIGNyb3NzIGNvbXBpbGF0aW9uIG9mIEdv
b2dsZSBUZXN0IE1pbkdXIGJpbmFyaWVzIG9uIExpbnV4IHVzaW5nIFt0aGVzZSBpbnN0cnVjdGlv
bnNdKGh0dHA6Ly93aWtpLnd4d2lkZ2V0cy5vcmcvQ3Jvc3MtQ29tcGlsaW5nX1VuZGVyX0xpbnV4
I0Nyb3NzLWNvbXBpbGluZ191bmRlcl9MaW51eF9mb3JfTVNfV2luZG93cykgb24gdGhlIFd4V2lk
Z2V0cyBzaXRlLgorCitQbGVhc2UgY29udGFjdCBgZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVn
cm91cHMuY29tYCBpZiB5b3UgYXJlCitpbnRlcmVzdGVkIGluIGltcHJvdmluZyB0aGUgc3VwcG9y
dCBmb3IgTWluR1cuCisKKyMjIFdoeSBkb2VzIEdvb2dsZSBUZXN0IHN1cHBvcnQgRVhQRUNUXF9F
UShOVUxMLCBwdHIpIGFuZCBBU1NFUlRcX0VRKE5VTEwsIHB0cikgYnV0IG5vdCBFWFBFQ1RcX05F
KE5VTEwsIHB0cikgYW5kIEFTU0VSVFxfTkUoTlVMTCwgcHRyKT8gIyMKKworRHVlIHRvIHNvbWUg
cGVjdWxpYXJpdHkgb2YgQysrLCBpdCByZXF1aXJlcyBzb21lIG5vbi10cml2aWFsIHRlbXBsYXRl
CittZXRhIHByb2dyYW1taW5nIHRyaWNrcyB0byBzdXBwb3J0IHVzaW5nIGBOVUxMYCBhcyBhbiBh
cmd1bWVudCBvZiB0aGUKK2BFWFBFQ1RfWFgoKWAgYW5kIGBBU1NFUlRfWFgoKWAgbWFjcm9zLiBU
aGVyZWZvcmUgd2Ugb25seSBkbyBpdCB3aGVyZQoraXQncyBtb3N0IG5lZWRlZCAob3RoZXJ3aXNl
IHdlIG1ha2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIEdvb2dsZSBUZXN0CitoYXJkZXIgdG8gbWFp
bnRhaW4gYW5kIG1vcmUgZXJyb3ItcHJvbmUgdGhhbiBuZWNlc3NhcnkpLgorCitUaGUgYEVYUEVD
VF9FUSgpYCBtYWNybyB0YWtlcyB0aGUgX2V4cGVjdGVkXyB2YWx1ZSBhcyBpdHMgZmlyc3QKK2Fy
Z3VtZW50IGFuZCB0aGUgX2FjdHVhbF8gdmFsdWUgYXMgdGhlIHNlY29uZC4gSXQncyByZWFzb25h
YmxlIHRoYXQKK3NvbWVvbmUgd2FudHMgdG8gd3JpdGUgYEVYUEVDVF9FUShOVUxMLCBzb21lX2V4
cHJlc3Npb24pYCwgYW5kIHRoaXMKK2luZGVlZCB3YXMgcmVxdWVzdGVkIHNldmVyYWwgdGltZXMu
IFRoZXJlZm9yZSB3ZSBpbXBsZW1lbnRlZCBpdC4KKworVGhlIG5lZWQgZm9yIGBFWFBFQ1RfTkUo
TlVMTCwgcHRyKWAgaXNuJ3QgbmVhcmx5IGFzIHN0cm9uZy4gV2hlbiB0aGUKK2Fzc2VydGlvbiBm
YWlscywgeW91IGFscmVhZHkga25vdyB0aGF0IGBwdHJgIG11c3QgYmUgYE5VTExgLCBzbyBpdAor
ZG9lc24ndCBhZGQgYW55IGluZm9ybWF0aW9uIHRvIHByaW50IHB0ciBpbiB0aGlzIGNhc2UuIFRo
YXQgbWVhbnMKK2BFWFBFQ1RfVFJVRShwdHIgISBOVUxMKWAgd29ya3MganVzdCBhcyB3ZWxsLgor
CitJZiB3ZSB3ZXJlIHRvIHN1cHBvcnQgYEVYUEVDVF9ORShOVUxMLCBwdHIpYCwgZm9yIGNvbnNp
c3RlbmN5IHdlJ2xsCitoYXZlIHRvIHN1cHBvcnQgYEVYUEVDVF9ORShwdHIsIE5VTEwpYCBhcyB3
ZWxsLCBhcyB1bmxpa2UgYEVYUEVDVF9FUWAsCit3ZSBkb24ndCBoYXZlIGEgY29udmVudGlvbiBv
biB0aGUgb3JkZXIgb2YgdGhlIHR3byBhcmd1bWVudHMgZm9yCitgRVhQRUNUX05FYC4gVGhpcyBt
ZWFucyB1c2luZyB0aGUgdGVtcGxhdGUgbWV0YSBwcm9ncmFtbWluZyB0cmlja3MKK3R3aWNlIGlu
IHRoZSBpbXBsZW1lbnRhdGlvbiwgbWFraW5nIGl0IGV2ZW4gaGFyZGVyIHRvIHVuZGVyc3RhbmQg
YW5kCittYWludGFpbi4gV2UgYmVsaWV2ZSB0aGUgYmVuZWZpdCBkb2Vzbid0IGp1c3RpZnkgdGhl
IGNvc3QuCisKK0ZpbmFsbHksIHdpdGggdGhlIGdyb3d0aCBvZiBHb29nbGUgTW9jaydzIFttYXRj
aGVyXSguLi8uLi9Db29rQm9vay5tZCN1c2luZy1tYXRjaGVycy1pbi1nb29nbGUtdGVzdC1hc3Nl
cnRpb25zKSBsaWJyYXJ5LCB3ZSBhcmUKK2VuY291cmFnaW5nIHBlb3BsZSB0byB1c2UgdGhlIHVu
aWZpZWQgYEVYUEVDVF9USEFUKHZhbHVlLCBtYXRjaGVyKWAKK3N5bnRheCBtb3JlIG9mdGVuIGlu
IHRlc3RzLiBPbmUgc2lnbmlmaWNhbnQgYWR2YW50YWdlIG9mIHRoZSBtYXRjaGVyCithcHByb2Fj
aCBpcyB0aGF0IG1hdGNoZXJzIGNhbiBiZSBlYXNpbHkgY29tYmluZWQgdG8gZm9ybSBuZXcgbWF0
Y2hlcnMsCit3aGlsZSB0aGUgYEVYUEVDVF9ORWAsIGV0YywgbWFjcm9zIGNhbm5vdCBiZSBlYXNp
bHkKK2NvbWJpbmVkLiBUaGVyZWZvcmUgd2Ugd2FudCB0byBpbnZlc3QgbW9yZSBpbiB0aGUgbWF0
Y2hlcnMgdGhhbiBpbiB0aGUKK2BFWFBFQ1RfWFgoKWAgbWFjcm9zLgorCisjIyBEb2VzIEdvb2ds
ZSBUZXN0IHN1cHBvcnQgcnVubmluZyB0ZXN0cyBpbiBwYXJhbGxlbD8gIyMKKworVGVzdCBydW5u
ZXJzIHRlbmQgdG8gYmUgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIGJ1aWxkL3Rlc3QKK2Vudmly
b25tZW50LCBhbmQgR29vZ2xlIFRlc3QgZG9lc24ndCB0cnkgdG8gc29sdmUgdGhlIHByb2JsZW0g
b2YKK3J1bm5pbmcgdGVzdHMgaW4gcGFyYWxsZWwuICBJbnN0ZWFkLCB3ZSB0cmllZCB0byBtYWtl
IEdvb2dsZSBUZXN0IHdvcmsKK25pY2VseSB3aXRoIHRlc3QgcnVubmVycy4gIEZvciBleGFtcGxl
LCBHb29nbGUgVGVzdCdzIFhNTCByZXBvcnQKK2NvbnRhaW5zIHRoZSB0aW1lIHNwZW50IG9uIGVh
Y2ggdGVzdCwgYW5kIGl0cyBgZ3Rlc3RfbGlzdF90ZXN0c2AgYW5kCitgZ3Rlc3RfZmlsdGVyYCBm
bGFncyBjYW4gYmUgdXNlZCBmb3Igc3BsaXR0aW5nIHRoZSBleGVjdXRpb24gb2YgdGVzdAorbWV0
aG9kcyBpbnRvIG11bHRpcGxlIHByb2Nlc3Nlcy4gIFRoZXNlIGZ1bmN0aW9uYWxpdGllcyBjYW4g
aGVscCB0aGUKK3Rlc3QgcnVubmVyIHJ1biB0aGUgdGVzdHMgaW4gcGFyYWxsZWwuCisKKyMjIFdo
eSBkb24ndCBHb29nbGUgVGVzdCBydW4gdGhlIHRlc3RzIGluIGRpZmZlcmVudCB0aHJlYWRzIHRv
IHNwZWVkIHRoaW5ncyB1cD8gIyMKKworSXQncyBkaWZmaWN1bHQgdG8gd3JpdGUgdGhyZWFkLXNh
ZmUgY29kZS4gIE1vc3QgdGVzdHMgYXJlIG5vdCB3cml0dGVuCit3aXRoIHRocmVhZC1zYWZldHkg
aW4gbWluZCwgYW5kIHRodXMgbWF5IG5vdCB3b3JrIGNvcnJlY3RseSBpbiBhCittdWx0aS10aHJl
YWRlZCBzZXR0aW5nLgorCitJZiB5b3UgdGhpbmsgYWJvdXQgaXQsIGl0J3MgYWxyZWFkeSBoYXJk
IHRvIG1ha2UgeW91ciBjb2RlIHdvcmsgd2hlbgoreW91IGtub3cgd2hhdCBvdGhlciB0aHJlYWRz
IGFyZSBkb2luZy4gIEl0J3MgbXVjaCBoYXJkZXIsIGFuZAorc29tZXRpbWVzIGV2ZW4gaW1wb3Nz
aWJsZSwgdG8gbWFrZSB5b3VyIGNvZGUgd29yayB3aGVuIHlvdSBkb24ndCBrbm93Cit3aGF0IG90
aGVyIHRocmVhZHMgYXJlIGRvaW5nIChyZW1lbWJlciB0aGF0IHRlc3QgbWV0aG9kcyBjYW4gYmUg
YWRkZWQsCitkZWxldGVkLCBvciBtb2RpZmllZCBhZnRlciB5b3VyIHRlc3Qgd2FzIHdyaXR0ZW4p
LiAgSWYgeW91IHdhbnQgdG8gcnVuCit0aGUgdGVzdHMgaW4gcGFyYWxsZWwsIHlvdSdkIGJldHRl
ciBydW4gdGhlbSBpbiBkaWZmZXJlbnQgcHJvY2Vzc2VzLgorCisjIyBXaHkgYXJlbid0IEdvb2ds
ZSBUZXN0IGFzc2VydGlvbnMgaW1wbGVtZW50ZWQgdXNpbmcgZXhjZXB0aW9ucz8gIyMKKworT3Vy
IG9yaWdpbmFsIG1vdGl2YXRpb24gd2FzIHRvIGJlIGFibGUgdG8gdXNlIEdvb2dsZSBUZXN0IGlu
IHByb2plY3RzCit0aGF0IGRpc2FibGUgZXhjZXB0aW9ucy4gIExhdGVyIHdlIHJlYWxpemVkIHNv
bWUgYWRkaXRpb25hbCBiZW5lZml0cworb2YgdGhpcyBhcHByb2FjaDoKKworICAxLiBUaHJvd2lu
ZyBpbiBhIGRlc3RydWN0b3IgaXMgdW5kZWZpbmVkIGJlaGF2aW9yIGluIEMrKy4gIE5vdCB1c2lu
ZyBleGNlcHRpb25zIG1lYW5zIEdvb2dsZSBUZXN0J3MgYXNzZXJ0aW9ucyBhcmUgc2FmZSB0byB1
c2UgaW4gZGVzdHJ1Y3RvcnMuCisgIDEuIFRoZSBgRVhQRUNUXypgIGZhbWlseSBvZiBtYWNyb3Mg
d2lsbCBjb250aW51ZSBldmVuIGFmdGVyIGEgZmFpbHVyZSwgYWxsb3dpbmcgbXVsdGlwbGUgZmFp
bHVyZXMgaW4gYSBgVEVTVGAgdG8gYmUgcmVwb3J0ZWQgaW4gYSBzaW5nbGUgcnVuLiBUaGlzIGlz
IGEgcG9wdWxhciBmZWF0dXJlLCBhcyBpbiBDKysgdGhlIGVkaXQtY29tcGlsZS10ZXN0IGN5Y2xl
IGlzIHVzdWFsbHkgcXVpdGUgbG9uZyBhbmQgYmVpbmcgYWJsZSB0byBmaXhpbmcgbW9yZSB0aGFu
IG9uZSB0aGluZyBhdCBhIHRpbWUgaXMgYSBibGVzc2luZy4KKyAgMS4gSWYgYXNzZXJ0aW9ucyBh
cmUgaW1wbGVtZW50ZWQgdXNpbmcgZXhjZXB0aW9ucywgYSB0ZXN0IG1heSBmYWxzZWx5IGlnbm9y
ZSBhIGZhaWx1cmUgaWYgaXQncyBjYXVnaHQgYnkgdXNlciBjb2RlOgorYGBgCit0cnkgeyAuLi4g
QVNTRVJUX1RSVUUoLi4uKSAuLi4gfQorY2F0Y2ggKC4uLikgeyAuLi4gfQorYGBgCitUaGUgYWJv
dmUgY29kZSB3aWxsIHBhc3MgZXZlbiBpZiB0aGUgYEFTU0VSVF9UUlVFYCB0aHJvd3MuICBXaGls
ZSBpdCdzIHVubGlrZWx5IGZvciBzb21lb25lIHRvIHdyaXRlIHRoaXMgaW4gYSB0ZXN0LCBpdCdz
IHBvc3NpYmxlIHRvIHJ1biBpbnRvIHRoaXMgcGF0dGVybiB3aGVuIHlvdSB3cml0ZSBhc3NlcnRp
b25zIGluIGNhbGxiYWNrcyB0aGF0IGFyZSBjYWxsZWQgYnkgdGhlIGNvZGUgdW5kZXIgdGVzdC4K
KworVGhlIGRvd25zaWRlIG9mIG5vdCB1c2luZyBleGNlcHRpb25zIGlzIHRoYXQgYEFTU0VSVF8q
YCAoaW1wbGVtZW50ZWQKK3VzaW5nIGByZXR1cm5gKSB3aWxsIG9ubHkgYWJvcnQgdGhlIGN1cnJl
bnQgZnVuY3Rpb24sIG5vdCB0aGUgY3VycmVudAorYFRFU1RgLgorCisjIyBXaHkgZG8gd2UgdXNl
IHR3byBkaWZmZXJlbnQgbWFjcm9zIGZvciB0ZXN0cyB3aXRoIGFuZCB3aXRob3V0IGZpeHR1cmVz
PyAjIworCitVbmZvcnR1bmF0ZWx5LCBDKysncyBtYWNybyBzeXN0ZW0gZG9lc24ndCBhbGxvdyB1
cyB0byB1c2UgdGhlIHNhbWUKK21hY3JvIGZvciBib3RoIGNhc2VzLiAgT25lIHBvc3NpYmlsaXR5
IGlzIHRvIHByb3ZpZGUgb25seSBvbmUgbWFjcm8KK2ZvciB0ZXN0cyB3aXRoIGZpeHR1cmVzLCBh
bmQgcmVxdWlyZSB0aGUgdXNlciB0byBkZWZpbmUgYW4gZW1wdHkKK2ZpeHR1cmUgc29tZXRpbWVz
OgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCitU
RVNUX0YoRm9vVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KK2BgYAorb3IKK2BgYAordHlwZWRlZiA6
OnRlc3Rpbmc6OlRlc3QgRm9vVGVzdDsKKworVEVTVF9GKEZvb1Rlc3QsIERvZXNUaGF0KSB7IC4u
LiB9CitgYGAKKworWWV0LCBtYW55IHBlb3BsZSB0aGluayB0aGlzIGlzIG9uZSBsaW5lIHRvbyBt
YW55LiA6LSkgT3VyIGdvYWwgd2FzIHRvCittYWtlIGl0IHJlYWxseSBlYXN5IHRvIHdyaXRlIHRl
c3RzLCBzbyB3ZSB0cmllZCB0byBtYWtlIHNpbXBsZSB0ZXN0cwordHJpdmlhbCB0byBjcmVhdGUu
ICBUaGF0IG1lYW5zIHVzaW5nIGEgc2VwYXJhdGUgbWFjcm8gZm9yIHN1Y2ggdGVzdHMuCisKK1dl
IHRoaW5rIG5laXRoZXIgYXBwcm9hY2ggaXMgaWRlYWwsIHlldCBlaXRoZXIgb2YgdGhlbSBpcyBy
ZWFzb25hYmxlLgorSW4gdGhlIGVuZCwgaXQgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIgbXVjaCBl
aXRoZXIgd2F5LgorCisjIyBXaHkgZG9uJ3Qgd2UgdXNlIHN0cnVjdHMgYXMgdGVzdCBmaXh0dXJl
cz8gIyMKKworV2UgbGlrZSB0byB1c2Ugc3RydWN0cyBvbmx5IHdoZW4gcmVwcmVzZW50aW5nIHBh
c3NpdmUgZGF0YS4gIFRoaXMKK2Rpc3RpbmN0aW9uIGJldHdlZW4gc3RydWN0cyBhbmQgY2xhc3Nl
cyBpcyBnb29kIGZvciBkb2N1bWVudGluZyB0aGUKK2ludGVudCBvZiB0aGUgY29kZSdzIGF1dGhv
ci4gIFNpbmNlIHRlc3QgZml4dHVyZXMgaGF2ZSBsb2dpYyBsaWtlCitgU2V0VXAoKWAgYW5kIGBU
ZWFyRG93bigpYCwgdGhleSBhcmUgYmV0dGVyIGRlZmluZWQgYXMgY2xhc3Nlcy4KKworIyMgV2h5
IGFyZSBkZWF0aCB0ZXN0cyBpbXBsZW1lbnRlZCBhcyBhc3NlcnRpb25zIGluc3RlYWQgb2YgdXNp
bmcgYSB0ZXN0IHJ1bm5lcj8gIyMKKworT3VyIGdvYWwgd2FzIHRvIG1ha2UgZGVhdGggdGVzdHMg
YXMgY29udmVuaWVudCBmb3IgYSB1c2VyIGFzIEMrKworcG9zc2libHkgYWxsb3dzLiAgSW4gcGFy
dGljdWxhcjoKKworICAqIFRoZSBydW5uZXItc3R5bGUgcmVxdWlyZXMgdG8gc3BsaXQgdGhlIGlu
Zm9ybWF0aW9uIGludG8gdHdvIHBpZWNlczogdGhlIGRlZmluaXRpb24gb2YgdGhlIGRlYXRoIHRl
c3QgaXRzZWxmLCBhbmQgdGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBydW5uZXIgb24gaG93IHRv
IHJ1biB0aGUgZGVhdGggdGVzdCBhbmQgd2hhdCB0byBleHBlY3QuICBUaGUgZGVhdGggdGVzdCB3
b3VsZCBiZSB3cml0dGVuIGluIEMrKywgd2hpbGUgdGhlIHJ1bm5lciBzcGVjIG1heSBvciBtYXkg
bm90IGJlLiAgQSB1c2VyIG5lZWRzIHRvIGNhcmVmdWxseSBrZWVwIHRoZSB0d28gaW4gc3luYy4g
YEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIGV4cGVjdGVkX21lc3NhZ2UpYCBzcGVjaWZpZXMgYWxs
IG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBpbiBvbmUgcGxhY2UsIGluIG9uZSBsYW5ndWFnZSwgd2l0
aG91dCBib2lsZXJwbGF0ZSBjb2RlLiBJdCBpcyB2ZXJ5IGRlY2xhcmF0aXZlLgorICAqIGBBU1NF
UlRfREVBVEhgIGhhcyBhIHNpbWlsYXIgc3ludGF4IGFuZCBlcnJvci1yZXBvcnRpbmcgc2VtYW50
aWNzIGFzIG90aGVyIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMsIGFuZCB0aHVzIGlzIGVhc3kgdG8g
bGVhcm4uCisgICogYEFTU0VSVF9ERUFUSGAgY2FuIGJlIG1peGVkIHdpdGggb3RoZXIgYXNzZXJ0
aW9ucyBhbmQgb3RoZXIgbG9naWMgYXQgeW91ciB3aWxsLiAgWW91IGFyZSBub3QgbGltaXRlZCB0
byBvbmUgZGVhdGggdGVzdCBwZXIgdGVzdCBtZXRob2QuIEZvciBleGFtcGxlLCB5b3UgY2FuIHdy
aXRlIHNvbWV0aGluZyBsaWtlOgorYGBgCisgICAgaWYgKEZvb0NvbmRpdGlvbigpKSB7CisgICAg
ICBBU1NFUlRfREVBVEgoQmFyKCksICJibGFoIik7CisgICAgfSBlbHNlIHsKKyAgICAgIEFTU0VS
VF9FUSg1LCBCYXIoKSk7CisgICAgfQorYGBgCitJZiB5b3UgcHJlZmVyIG9uZSBkZWF0aCB0ZXN0
IHBlciB0ZXN0IG1ldGhvZCwgeW91IGNhbiB3cml0ZSB5b3VyIHRlc3RzIGluIHRoYXQgc3R5bGUg
dG9vLCBidXQgd2UgZG9uJ3Qgd2FudCB0byBpbXBvc2UgdGhhdCBvbiB0aGUgdXNlcnMuICBUaGUg
ZmV3ZXIgYXJ0aWZpY2lhbCBsaW1pdGF0aW9ucyB0aGUgYmV0dGVyLgorICAqIGBBU1NFUlRfREVB
VEhgIGNhbiByZWZlcmVuY2UgbG9jYWwgdmFyaWFibGVzIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9u
LCBhbmQgeW91IGNhbiBkZWNpZGUgaG93IG1hbnkgZGVhdGggdGVzdHMgeW91IHdhbnQgYmFzZWQg
b24gcnVuLXRpbWUgaW5mb3JtYXRpb24uICBGb3IgZXhhbXBsZSwKK2BgYAorICAgIGNvbnN0IGlu
dCBjb3VudCA9IEdldENvdW50KCk7ICAvLyBPbmx5IGtub3duIGF0IHJ1biB0aW1lLgorICAgIGZv
ciAoaW50IGkgPSAxOyBpIDw9IGNvdW50OyBpKyspIHsKKyAgICAgIEFTU0VSVF9ERUFUSCh7Cisg
ICAgICAgIGRvdWJsZSogYnVmZmVyID0gbmV3IGRvdWJsZVtpXTsKKyAgICAgICAgLi4uIGluaXRp
YWxpemVzIGJ1ZmZlciAuLi4KKyAgICAgICAgRm9vKGJ1ZmZlciwgaSkKKyAgICAgIH0sICJibGFo
IGJsYWgiKTsKKyAgICB9CitgYGAKK1RoZSBydW5uZXItYmFzZWQgYXBwcm9hY2ggdGVuZHMgdG8g
YmUgbW9yZSBzdGF0aWMgYW5kIGxlc3MgZmxleGlibGUsIG9yIHJlcXVpcmVzIG1vcmUgdXNlciBl
ZmZvcnQgdG8gZ2V0IHRoaXMga2luZCBvZiBmbGV4aWJpbGl0eS4KKworQW5vdGhlciBpbnRlcmVz
dGluZyB0aGluZyBhYm91dCBgQVNTRVJUX0RFQVRIYCBpcyB0aGF0IGl0IGNhbGxzIGBmb3JrKClg
Cit0byBjcmVhdGUgYSBjaGlsZCBwcm9jZXNzIHRvIHJ1biB0aGUgZGVhdGggdGVzdC4gIFRoaXMg
aXMgbGlnaHRlbmluZworZmFzdCwgYXMgYGZvcmsoKWAgdXNlcyBjb3B5LW9uLXdyaXRlIHBhZ2Vz
IGFuZCBpbmN1cnMgYWxtb3N0IHplcm8KK292ZXJoZWFkLCBhbmQgdGhlIGNoaWxkIHByb2Nlc3Mg
c3RhcnRzIGZyb20gdGhlIHVzZXItc3VwcGxpZWQKK3N0YXRlbWVudCBkaXJlY3RseSwgc2tpcHBp
bmcgYWxsIGdsb2JhbCBhbmQgbG9jYWwgaW5pdGlhbGl6YXRpb24gYW5kCithbnkgY29kZSBsZWFk
aW5nIHRvIHRoZSBnaXZlbiBzdGF0ZW1lbnQuICBJZiB5b3UgbGF1bmNoIHRoZSBjaGlsZAorcHJv
Y2VzcyBmcm9tIHNjcmF0Y2gsIGl0IGNhbiB0YWtlIHNlY29uZHMganVzdCB0byBsb2FkIGV2ZXJ5
dGhpbmcgYW5kCitzdGFydCBydW5uaW5nIGlmIHRoZSB0ZXN0IGxpbmtzIHRvIG1hbnkgbGlicmFy
aWVzIGR5bmFtaWNhbGx5LgorCisjIyBNeSBkZWF0aCB0ZXN0IG1vZGlmaWVzIHNvbWUgc3RhdGUs
IGJ1dCB0aGUgY2hhbmdlIHNlZW1zIGxvc3QgYWZ0ZXIgdGhlIGRlYXRoIHRlc3QgZmluaXNoZXMu
IFdoeT8gIyMKKworRGVhdGggdGVzdHMgKGBFWFBFQ1RfREVBVEhgLCBldGMpIGFyZSBleGVjdXRl
ZCBpbiBhIHN1Yi1wcm9jZXNzIHMudC4gdGhlCitleHBlY3RlZCBjcmFzaCB3b24ndCBraWxsIHRo
ZSB0ZXN0IHByb2dyYW0gKGkuZS4gdGhlIHBhcmVudCBwcm9jZXNzKS4gQXMgYQorcmVzdWx0LCBh
bnkgaW4tbWVtb3J5IHNpZGUgZWZmZWN0cyB0aGV5IGluY3VyIGFyZSBvYnNlcnZhYmxlIGluIHRo
ZWlyCityZXNwZWN0aXZlIHN1Yi1wcm9jZXNzZXMsIGJ1dCBub3QgaW4gdGhlIHBhcmVudCBwcm9j
ZXNzLiBZb3UgY2FuIHRoaW5rIG9mIHRoZW0KK2FzIHJ1bm5pbmcgaW4gYSBwYXJhbGxlbCB1bml2
ZXJzZSwgbW9yZSBvciBsZXNzLgorCisjIyBUaGUgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJ1
bmRlZmluZWQgcmVmZXJlbmNlcyIgdG8gc29tZSBzdGF0aWMgY29uc3QgbWVtYmVyIHZhcmlhYmxl
cywgYnV0IEkgZGlkIGRlZmluZSB0aGVtIGluIHRoZSBjbGFzcyBib2R5LiBXaGF0J3Mgd3Jvbmc/
ICMjCisKK0lmIHlvdXIgY2xhc3MgaGFzIGEgc3RhdGljIGRhdGEgbWVtYmVyOgorCitgYGAKKy8v
IGZvby5oCitjbGFzcyBGb28geworICAuLi4KKyAgc3RhdGljIGNvbnN0IGludCBrQmFyID0gMTAw
OworfTsKK2BgYAorCitZb3UgYWxzbyBuZWVkIHRvIGRlZmluZSBpdCBfb3V0c2lkZV8gb2YgdGhl
IGNsYXNzIGJvZHkgaW4gYGZvby5jY2A6CisKK2BgYAorY29uc3QgaW50IEZvbzo6a0JhcjsgIC8v
IE5vIGluaXRpYWxpemVyIGhlcmUuCitgYGAKKworT3RoZXJ3aXNlIHlvdXIgY29kZSBpcyAqKmlu
dmFsaWQgQysrKiosIGFuZCBtYXkgYnJlYWsgaW4gdW5leHBlY3RlZCB3YXlzLiBJbgorcGFydGlj
dWxhciwgdXNpbmcgaXQgaW4gR29vZ2xlIFRlc3QgY29tcGFyaXNvbiBhc3NlcnRpb25zIChgRVhQ
RUNUX0VRYCwgZXRjKQord2lsbCBnZW5lcmF0ZSBhbiAidW5kZWZpbmVkIHJlZmVyZW5jZSIgbGlu
a2VyIGVycm9yLgorCisjIyBJIGhhdmUgYW4gaW50ZXJmYWNlIHRoYXQgaGFzIHNldmVyYWwgaW1w
bGVtZW50YXRpb25zLiBDYW4gSSB3cml0ZSBhIHNldCBvZiB0ZXN0cyBvbmNlIGFuZCByZXBlYXQg
dGhlbSBvdmVyIGFsbCB0aGUgaW1wbGVtZW50YXRpb25zPyAjIworCitHb29nbGUgVGVzdCBkb2Vz
bid0IHlldCBoYXZlIGdvb2Qgc3VwcG9ydCBmb3IgdGhpcyBraW5kIG9mIHRlc3RzLCBvcgorZGF0
YS1kcml2ZW4gdGVzdHMgaW4gZ2VuZXJhbC4gV2UgaG9wZSB0byBiZSBhYmxlIHRvIG1ha2UgaW1w
cm92ZW1lbnRzIGluIHRoaXMKK2FyZWEgc29vbi4KKworIyMgQ2FuIEkgZGVyaXZlIGEgdGVzdCBm
aXh0dXJlIGZyb20gYW5vdGhlcj8gIyMKKworWWVzLgorCitFYWNoIHRlc3QgZml4dHVyZSBoYXMg
YSBjb3JyZXNwb25kaW5nIGFuZCBzYW1lIG5hbWVkIHRlc3QgY2FzZS4gVGhpcyBtZWFucyBvbmx5
CitvbmUgdGVzdCBjYXNlIGNhbiB1c2UgYSBwYXJ0aWN1bGFyIGZpeHR1cmUuIFNvbWV0aW1lcywg
aG93ZXZlciwgbXVsdGlwbGUgdGVzdAorY2FzZXMgbWF5IHdhbnQgdG8gdXNlIHRoZSBzYW1lIG9y
IHNsaWdodGx5IGRpZmZlcmVudCBmaXh0dXJlcy4gRm9yIGV4YW1wbGUsIHlvdQorbWF5IHdhbnQg
dG8gbWFrZSBzdXJlIHRoYXQgYWxsIG9mIGEgR1VJIGxpYnJhcnkncyB0ZXN0IGNhc2VzIGRvbid0
IGxlYWsKK2ltcG9ydGFudCBzeXN0ZW0gcmVzb3VyY2VzIGxpa2UgZm9udHMgYW5kIGJydXNoZXMu
CisKK0luIEdvb2dsZSBUZXN0LCB5b3Ugc2hhcmUgYSBmaXh0dXJlIGFtb25nIHRlc3QgY2FzZXMg
YnkgcHV0dGluZyB0aGUgc2hhcmVkCitsb2dpYyBpbiBhIGJhc2UgdGVzdCBmaXh0dXJlLCB0aGVu
IGRlcml2aW5nIGZyb20gdGhhdCBiYXNlIGEgc2VwYXJhdGUgZml4dHVyZQorZm9yIGVhY2ggdGVz
dCBjYXNlIHRoYXQgd2FudHMgdG8gdXNlIHRoaXMgY29tbW9uIGxvZ2ljLiBZb3UgdGhlbiB1c2Ug
YFRFU1RfRigpYAordG8gd3JpdGUgdGVzdHMgdXNpbmcgZWFjaCBkZXJpdmVkIGZpeHR1cmUuCisK
K1R5cGljYWxseSwgeW91ciBjb2RlIGxvb2tzIGxpa2UgdGhpczoKKworYGBgCisvLyBEZWZpbmVz
IGEgYmFzZSB0ZXN0IGZpeHR1cmUuCitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgeworICBwcm90ZWN0ZWQ6CisgICAuLi4KK307CisKKy8vIERlcml2ZXMgYSBmaXh0dXJl
IEZvb1Rlc3QgZnJvbSBCYXNlVGVzdC4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgQmFzZVRlc3Qg
eworICBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgICAgQmFzZVRl
c3Q6OlNldFVwKCk7ICAvLyBTZXRzIHVwIHRoZSBiYXNlIGZpeHR1cmUgZmlyc3QuCisgICAgICAu
Li4gYWRkaXRpb25hbCBzZXQtdXAgd29yayAuLi4KKyAgICB9CisgICAgdmlydHVhbCB2b2lkIFRl
YXJEb3duKCkgeworICAgICAgLi4uIGNsZWFuLXVwIHdvcmsgZm9yIEZvb1Rlc3QgLi4uCisgICAg
ICBCYXNlVGVzdDo6VGVhckRvd24oKTsgIC8vIFJlbWVtYmVyIHRvIHRlYXIgZG93biB0aGUgYmFz
ZSBmaXh0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFmdGVyIGNsZWFuaW5n
IHVwIEZvb1Rlc3QhCisgICAgfQorICAgIC4uLiBmdW5jdGlvbnMgYW5kIHZhcmlhYmxlcyBmb3Ig
Rm9vVGVzdCAuLi4KK307CisKKy8vIFRlc3RzIHRoYXQgdXNlIHRoZSBmaXh0dXJlIEZvb1Rlc3Qu
CitURVNUX0YoRm9vVGVzdCwgQmFyKSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgQmF6KSB7IC4u
LiB9CisKKy4uLiBhZGRpdGlvbmFsIGZpeHR1cmVzIGRlcml2ZWQgZnJvbSBCYXNlVGVzdCAuLi4K
K2BgYAorCitJZiBuZWNlc3NhcnksIHlvdSBjYW4gY29udGludWUgdG8gZGVyaXZlIHRlc3QgZml4
dHVyZXMgZnJvbSBhIGRlcml2ZWQgZml4dHVyZS4KK0dvb2dsZSBUZXN0IGhhcyBubyBsaW1pdCBv
biBob3cgZGVlcCB0aGUgaGllcmFyY2h5IGNhbiBiZS4KKworRm9yIGEgY29tcGxldGUgZXhhbXBs
ZSB1c2luZyBkZXJpdmVkIHRlc3QgZml4dHVyZXMsIHNlZQorYHNhbXBsZXMvc2FtcGxlNV91bml0
dGVzdC5jY2AuCisKKyMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyAidm9pZCB2YWx1ZSBub3QgaWdu
b3JlZCBhcyBpdCBvdWdodCB0byBiZS4iIFdoYXQgZG9lcyB0aGlzIG1lYW4/ICMjCisKK1lvdSdy
ZSBwcm9iYWJseSB1c2luZyBhbiBgQVNTRVJUXyooKWAgaW4gYSBmdW5jdGlvbiB0aGF0IGRvZXNu
J3QgcmV0dXJuIGB2b2lkYC4KK2BBU1NFUlRfKigpYCBjYW4gb25seSBiZSB1c2VkIGluIGB2b2lk
YCBmdW5jdGlvbnMuCisKKyMjIE15IGRlYXRoIHRlc3QgaGFuZ3MgKG9yIHNlZy1mYXVsdHMpLiBI
b3cgZG8gSSBmaXggaXQ/ICMjCisKK0luIEdvb2dsZSBUZXN0LCBkZWF0aCB0ZXN0cyBhcmUgcnVu
IGluIGEgY2hpbGQgcHJvY2VzcyBhbmQgdGhlIHdheSB0aGV5IHdvcmsgaXMKK2RlbGljYXRlLiBU
byB3cml0ZSBkZWF0aCB0ZXN0cyB5b3UgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhl
eSB3b3JrLgorUGxlYXNlIG1ha2Ugc3VyZSB5b3UgaGF2ZSByZWFkIHRoaXMuCisKK0luIHBhcnRp
Y3VsYXIsIGRlYXRoIHRlc3RzIGRvbid0IGxpa2UgaGF2aW5nIG11bHRpcGxlIHRocmVhZHMgaW4g
dGhlIHBhcmVudAorcHJvY2Vzcy4gU28gdGhlIGZpcnN0IHRoaW5nIHlvdSBjYW4gdHJ5IGlzIHRv
IGVsaW1pbmF0ZSBjcmVhdGluZyB0aHJlYWRzCitvdXRzaWRlIG9mIGBFWFBFQ1RfREVBVEgoKWAu
CisKK1NvbWV0aW1lcyB0aGlzIGlzIGltcG9zc2libGUgYXMgc29tZSBsaWJyYXJ5IHlvdSBtdXN0
IHVzZSBtYXkgYmUgY3JlYXRpbmcKK3RocmVhZHMgYmVmb3JlIGBtYWluKClgIGlzIGV2ZW4gcmVh
Y2hlZC4gSW4gdGhpcyBjYXNlLCB5b3UgY2FuIHRyeSB0byBtaW5pbWl6ZQordGhlIGNoYW5jZSBv
ZiBjb25mbGljdHMgYnkgZWl0aGVyIG1vdmluZyBhcyBtYW55IGFjdGl2aXRpZXMgYXMgcG9zc2li
bGUgaW5zaWRlCitgRVhQRUNUX0RFQVRIKClgIChpbiB0aGUgZXh0cmVtZSBjYXNlLCB5b3Ugd2Fu
dCB0byBtb3ZlIGV2ZXJ5dGhpbmcgaW5zaWRlKSwgb3IKK2xlYXZpbmcgYXMgZmV3IHRoaW5ncyBh
cyBwb3NzaWJsZSBpbiBpdC4gQWxzbywgeW91IGNhbiB0cnkgdG8gc2V0IHRoZSBkZWF0aAordGVz
dCBzdHlsZSB0byBgInRocmVhZHNhZmUiYCwgd2hpY2ggaXMgc2FmZXIgYnV0IHNsb3dlciwgYW5k
IHNlZSBpZiBpdCBoZWxwcy4KKworSWYgeW91IGdvIHdpdGggdGhyZWFkLXNhZmUgZGVhdGggdGVz
dHMsIHJlbWVtYmVyIHRoYXQgdGhleSByZXJ1biB0aGUgdGVzdAorcHJvZ3JhbSBmcm9tIHRoZSBi
ZWdpbm5pbmcgaW4gdGhlIGNoaWxkIHByb2Nlc3MuIFRoZXJlZm9yZSBtYWtlIHN1cmUgeW91cgor
cHJvZ3JhbSBjYW4gcnVuIHNpZGUtYnktc2lkZSB3aXRoIGl0c2VsZiBhbmQgaXMgZGV0ZXJtaW5p
c3RpYy4KKworSW4gdGhlIGVuZCwgdGhpcyBib2lscyBkb3duIHRvIGdvb2QgY29uY3VycmVudCBw
cm9ncmFtbWluZy4gWW91IGhhdmUgdG8gbWFrZQorc3VyZSB0aGF0IHRoZXJlIGlzIG5vIHJhY2Ug
Y29uZGl0aW9ucyBvciBkZWFkIGxvY2tzIGluIHlvdXIgcHJvZ3JhbS4gTm8gc2lsdmVyCitidWxs
ZXQgLSBzb3JyeSEKKworIyMgU2hvdWxkIEkgdXNlIHRoZSBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9y
IG9mIHRoZSB0ZXN0IGZpeHR1cmUgb3IgdGhlIHNldC11cC90ZWFyLWRvd24gZnVuY3Rpb24/ICMj
CisKK1RoZSBmaXJzdCB0aGluZyB0byByZW1lbWJlciBpcyB0aGF0IEdvb2dsZSBUZXN0IGRvZXMg
bm90IHJldXNlIHRoZQorc2FtZSB0ZXN0IGZpeHR1cmUgb2JqZWN0IGFjcm9zcyBtdWx0aXBsZSB0
ZXN0cy4gRm9yIGVhY2ggYFRFU1RfRmAsCitHb29nbGUgVGVzdCB3aWxsIGNyZWF0ZSBhIGZyZXNo
IHRlc3QgZml4dHVyZSBvYmplY3QsIF9pbW1lZGlhdGVseV8KK2NhbGwgYFNldFVwKClgLCBydW4g
dGhlIHRlc3QsIGNhbGwgYFRlYXJEb3duKClgLCBhbmQgdGhlbgorX2ltbWVkaWF0ZWx5XyBkZWxl
dGUgdGhlIHRlc3QgZml4dHVyZSBvYmplY3QuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8KK25lZWQg
dG8gd3JpdGUgYSBgU2V0VXAoKWAgb3IgYFRlYXJEb3duKClgIGZ1bmN0aW9uIGlmIHRoZSBjb25z
dHJ1Y3Rvcgorb3IgZGVzdHJ1Y3RvciBhbHJlYWR5IGRvZXMgdGhlIGpvYi4KKworWW91IG1heSBz
dGlsbCB3YW50IHRvIHVzZSBgU2V0VXAoKS9UZWFyRG93bigpYCBpbiB0aGUgZm9sbG93aW5nIGNh
c2VzOgorICAqIElmIHRoZSB0ZWFyLWRvd24gb3BlcmF0aW9uIGNvdWxkIHRocm93IGFuIGV4Y2Vw
dGlvbiwgeW91IG11c3QgdXNlIGBUZWFyRG93bigpYCBhcyBvcHBvc2VkIHRvIHRoZSBkZXN0cnVj
dG9yLCBhcyB0aHJvd2luZyBpbiBhIGRlc3RydWN0b3IgbGVhZHMgdG8gdW5kZWZpbmVkIGJlaGF2
aW9yIGFuZCB1c3VhbGx5IHdpbGwga2lsbCB5b3VyIHByb2dyYW0gcmlnaHQgYXdheS4gTm90ZSB0
aGF0IG1hbnkgc3RhbmRhcmQgbGlicmFyaWVzIChsaWtlIFNUTCkgbWF5IHRocm93IHdoZW4gZXhj
ZXB0aW9ucyBhcmUgZW5hYmxlZCBpbiB0aGUgY29tcGlsZXIuIFRoZXJlZm9yZSB5b3Ugc2hvdWxk
IHByZWZlciBgVGVhckRvd24oKWAgaWYgeW91IHdhbnQgdG8gd3JpdGUgcG9ydGFibGUgdGVzdHMg
dGhhdCB3b3JrIHdpdGggb3Igd2l0aG91dCBleGNlcHRpb25zLgorICAqIFRoZSBHb29nbGUgVGVz
dCB0ZWFtIGlzIGNvbnNpZGVyaW5nIG1ha2luZyB0aGUgYXNzZXJ0aW9uIG1hY3JvcyB0aHJvdyBv
biBwbGF0Zm9ybXMgd2hlcmUgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCAoZS5nLiBXaW5kb3dzLCBN
YWMgT1MsIGFuZCBMaW51eCBjbGllbnQtc2lkZSksIHdoaWNoIHdpbGwgZWxpbWluYXRlIHRoZSBu
ZWVkIGZvciB0aGUgdXNlciB0byBwcm9wYWdhdGUgZmFpbHVyZXMgZnJvbSBhIHN1YnJvdXRpbmUg
dG8gaXRzIGNhbGxlci4gVGhlcmVmb3JlLCB5b3Ugc2hvdWxkbid0IHVzZSBHb29nbGUgVGVzdCBh
c3NlcnRpb25zIGluIGEgZGVzdHJ1Y3RvciBpZiB5b3VyIGNvZGUgY291bGQgcnVuIG9uIHN1Y2gg
YSBwbGF0Zm9ybS4KKyAgKiBJbiBhIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IsIHlvdSBjYW5u
b3QgbWFrZSBhIHZpcnR1YWwgZnVuY3Rpb24gY2FsbCBvbiB0aGlzIG9iamVjdC4gKFlvdSBjYW4g
Y2FsbCBhIG1ldGhvZCBkZWNsYXJlZCBhcyB2aXJ0dWFsLCBidXQgaXQgd2lsbCBiZSBzdGF0aWNh
bGx5IGJvdW5kLikgVGhlcmVmb3JlLCBpZiB5b3UgbmVlZCB0byBjYWxsIGEgbWV0aG9kIHRoYXQg
d2lsbCBiZSBvdmVycmlkZW4gaW4gYSBkZXJpdmVkIGNsYXNzLCB5b3UgaGF2ZSB0byB1c2UgYFNl
dFVwKCkvVGVhckRvd24oKWAuCisKKyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgIm5vIG1hdGNo
aW5nIGZ1bmN0aW9uIHRvIGNhbGwiIHdoZW4gSSB1c2UgQVNTRVJUXF9QUkVEbi4gSG93IGRvIEkg
Zml4IGl0PyAjIworCitJZiB0aGUgcHJlZGljYXRlIGZ1bmN0aW9uIHlvdSB1c2UgaW4gYEFTU0VS
VF9QUkVEKmAgb3IgYEVYUEVDVF9QUkVEKmAgaXMKK292ZXJsb2FkZWQgb3IgYSB0ZW1wbGF0ZSwg
dGhlIGNvbXBpbGVyIHdpbGwgaGF2ZSB0cm91YmxlIGZpZ3VyaW5nIG91dCB3aGljaAorb3Zlcmxv
YWRlZCB2ZXJzaW9uIGl0IHNob3VsZCB1c2UuIGBBU1NFUlRfUFJFRF9GT1JNQVQqYCBhbmQKK2BF
WFBFQ1RfUFJFRF9GT1JNQVQqYCBkb24ndCBoYXZlIHRoaXMgcHJvYmxlbS4KKworSWYgeW91IHNl
ZSB0aGlzIGVycm9yLCB5b3UgbWlnaHQgd2FudCB0byBzd2l0Y2ggdG8KK2AoQVNTRVJUfEVYUEVD
VClfUFJFRF9GT1JNQVQqYCwgd2hpY2ggd2lsbCBhbHNvIGdpdmUgeW91IGEgYmV0dGVyIGZhaWx1
cmUKK21lc3NhZ2UuIElmLCBob3dldmVyLCB0aGF0IGlzIG5vdCBhbiBvcHRpb24sIHlvdSBjYW4g
cmVzb2x2ZSB0aGUgcHJvYmxlbSBieQorZXhwbGljaXRseSB0ZWxsaW5nIHRoZSBjb21waWxlciB3
aGljaCB2ZXJzaW9uIHRvIHBpY2suCisKK0ZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYXZlCisK
K2BgYAorYm9vbCBJc1Bvc2l0aXZlKGludCBuKSB7CisgIHJldHVybiBuID4gMDsKK30KK2Jvb2wg
SXNQb3NpdGl2ZShkb3VibGUgeCkgeworICByZXR1cm4geCA+IDA7Cit9CitgYGAKKworeW91IHdp
bGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IgaWYgeW91IHdyaXRlCisKK2BgYAorRVhQRUNUX1BSRUQx
KElzUG9zaXRpdmUsIDUpOworYGBgCisKK0hvd2V2ZXIsIHRoaXMgd2lsbCB3b3JrOgorCitgYGAK
K0VYUEVDVF9QUkVEMSgqc3RhdGljX2Nhc3Q8Ym9vbCAoKikoaW50KT4qKElzUG9zaXRpdmUpLCA1
KTsKK2BgYAorCisoVGhlIHN0dWZmIGluc2lkZSB0aGUgYW5nbGVkIGJyYWNrZXRzIGZvciB0aGUg
YHN0YXRpY19jYXN0YCBvcGVyYXRvciBpcyB0aGUKK3R5cGUgb2YgdGhlIGZ1bmN0aW9uIHBvaW50
ZXIgZm9yIHRoZSBgaW50YC12ZXJzaW9uIG9mIGBJc1Bvc2l0aXZlKClgLikKKworQXMgYW5vdGhl
ciBleGFtcGxlLCB3aGVuIHlvdSBoYXZlIGEgdGVtcGxhdGUgZnVuY3Rpb24KKworYGBgCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK2Jvb2wgSXNOZWdhdGl2ZShUIHgpIHsKKyAgcmV0dXJuIHggPCAw
OworfQorYGBgCisKK3lvdSBjYW4gdXNlIGl0IGluIGEgcHJlZGljYXRlIGFzc2VydGlvbiBsaWtl
IHRoaXM6CisKK2BgYAorQVNTRVJUX1BSRUQxKElzTmVnYXRpdmUqPGludD4qLCAtNSk7CitgYGAK
KworVGhpbmdzIGFyZSBtb3JlIGludGVyZXN0aW5nIGlmIHlvdXIgdGVtcGxhdGUgaGFzIG1vcmUg
dGhhbiBvbmUgcGFyYW1ldGVycy4gVGhlCitmb2xsb3dpbmcgd29uJ3QgY29tcGlsZToKKworYGBg
CitBU1NFUlRfUFJFRDIoKkdyZWF0ZXJUaGFuPGludCwgaW50PiosIDUsIDApOworYGBgCisKKwor
YXMgdGhlIEMrKyBwcmUtcHJvY2Vzc29yIHRoaW5rcyB5b3UgYXJlIGdpdmluZyBgQVNTRVJUX1BS
RUQyYCA0IGFyZ3VtZW50cywKK3doaWNoIGlzIG9uZSBtb3JlIHRoYW4gZXhwZWN0ZWQuIFRoZSB3
b3JrYXJvdW5kIGlzIHRvIHdyYXAgdGhlIHByZWRpY2F0ZQorZnVuY3Rpb24gaW4gcGFyZW50aGVz
ZXM6CisKK2BgYAorQVNTRVJUX1BSRUQyKCooR3JlYXRlclRoYW48aW50LCBpbnQ+KSosIDUsIDAp
OworYGBgCisKKworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJpZ25vcmluZyByZXR1
cm4gdmFsdWUiIHdoZW4gSSBjYWxsIFJVTlxfQUxMXF9URVNUUygpLiBXaHk/ICMjCisKK1NvbWUg
cGVvcGxlIGhhZCBiZWVuIGlnbm9yaW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgYFJVTl9BTExfVEVT
VFMoKWAuIFRoYXQgaXMsCitpbnN0ZWFkIG9mCisKK2BgYAorcmV0dXJuIFJVTl9BTExfVEVTVFMo
KTsKK2BgYAorCit0aGV5IHdyaXRlCisKK2BgYAorUlVOX0FMTF9URVNUUygpOworYGBgCisKK1Ro
aXMgaXMgd3JvbmcgYW5kIGRhbmdlcm91cy4gQSB0ZXN0IHJ1bm5lciBuZWVkcyB0byBzZWUgdGhl
IHJldHVybiB2YWx1ZSBvZgorYFJVTl9BTExfVEVTVFMoKWAgaW4gb3JkZXIgdG8gZGV0ZXJtaW5l
IGlmIGEgdGVzdCBoYXMgcGFzc2VkLiBJZiB5b3VyIGBtYWluKClgCitmdW5jdGlvbiBpZ25vcmVz
IGl0LCB5b3VyIHRlc3Qgd2lsbCBiZSBjb25zaWRlcmVkIHN1Y2Nlc3NmdWwgZXZlbiBpZiBpdCBo
YXMgYQorR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIGZhaWx1cmUuIFZlcnkgYmFkLgorCitUbyBoZWxw
IHRoZSB1c2VycyBhdm9pZCB0aGlzIGRhbmdlcm91cyBidWcsIHRoZSBpbXBsZW1lbnRhdGlvbiBv
ZgorYFJVTl9BTExfVEVTVFMoKWAgY2F1c2VzIGdjYyB0byByYWlzZSB0aGlzIHdhcm5pbmcsIHdo
ZW4gdGhlIHJldHVybiB2YWx1ZSBpcworaWdub3JlZC4gSWYgeW91IHNlZSB0aGlzIHdhcm5pbmcs
IHRoZSBmaXggaXMgc2ltcGxlOiBqdXN0IG1ha2Ugc3VyZSBpdHMgdmFsdWUKK2lzIHVzZWQgYXMg
dGhlIHJldHVybiB2YWx1ZSBvZiBgbWFpbigpYC4KKworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5z
IHRoYXQgYSBjb25zdHJ1Y3RvciAob3IgZGVzdHJ1Y3RvcikgY2Fubm90IHJldHVybiBhIHZhbHVl
LiBXaGF0J3MgZ29pbmcgb24/ICMjCisKK0R1ZSB0byBhIHBlY3VsaWFyaXR5IG9mIEMrKywgaW4g
b3JkZXIgdG8gc3VwcG9ydCB0aGUgc3ludGF4IGZvciBzdHJlYW1pbmcKK21lc3NhZ2VzIHRvIGFu
IGBBU1NFUlRfKmAsIGUuZy4KKworYGBgCitBU1NFUlRfRVEoMSwgRm9vKCkpIDw8ICJibGFoIGJs
YWgiIDw8IGZvbzsKK2BgYAorCit3ZSBoYWQgdG8gZ2l2ZSB1cCB1c2luZyBgQVNTRVJUKmAgYW5k
IGBGQUlMKmAgKGJ1dCBub3QgYEVYUEVDVCpgIGFuZAorYEFERF9GQUlMVVJFKmApIGluIGNvbnN0
cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIG1vdmUgdGhlCitj
b250ZW50IG9mIHlvdXIgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciB0byBhIHByaXZhdGUgdm9pZCBt
ZW1iZXIgZnVuY3Rpb24sIG9yCitzd2l0Y2ggdG8gYEVYUEVDVF8qKClgIGlmIHRoYXQgd29ya3Mu
IFRoaXMgc2VjdGlvbiBpbiB0aGUgdXNlcidzIGd1aWRlIGV4cGxhaW5zCitpdC4KKworIyMgTXkg
c2V0LXVwIGZ1bmN0aW9uIGlzIG5vdCBjYWxsZWQuIFdoeT8gIyMKKworQysrIGlzIGNhc2Utc2Vu
c2l0aXZlLiBJdCBzaG91bGQgYmUgc3BlbGxlZCBhcyBgU2V0VXAoKWAuICBEaWQgeW91CitzcGVs
bCBpdCBhcyBgU2V0dXAoKWA/CisKK1NpbWlsYXJseSwgc29tZXRpbWVzIHBlb3BsZSBzcGVsbCBg
U2V0VXBUZXN0Q2FzZSgpYCBhcyBgU2V0dXBUZXN0Q2FzZSgpYCBhbmQKK3dvbmRlciB3aHkgaXQn
cyBuZXZlciBjYWxsZWQuCisKKyMjIEhvdyBkbyBJIGp1bXAgdG8gdGhlIGxpbmUgb2YgYSBmYWls
dXJlIGluIEVtYWNzIGRpcmVjdGx5PyAjIworCitHb29nbGUgVGVzdCdzIGZhaWx1cmUgbWVzc2Fn
ZSBmb3JtYXQgaXMgdW5kZXJzdG9vZCBieSBFbWFjcyBhbmQgbWFueSBvdGhlcgorSURFcywgbGlr
ZSBhY21lIGFuZCBYQ29kZS4gSWYgYSBHb29nbGUgVGVzdCBtZXNzYWdlIGlzIGluIGEgY29tcGls
YXRpb24gYnVmZmVyCitpbiBFbWFjcywgdGhlbiBpdCdzIGNsaWNrYWJsZS4gWW91IGNhbiBub3cg
aGl0IGBlbnRlcmAgb24gYSBtZXNzYWdlIHRvIGp1bXAgdG8KK3RoZSBjb3JyZXNwb25kaW5nIHNv
dXJjZSBjb2RlLCBvciB1c2UgYEMteCBgYCB0byBqdW1wIHRvIHRoZSBuZXh0IGZhaWx1cmUuCisK
KyMjIEkgaGF2ZSBzZXZlcmFsIHRlc3QgY2FzZXMgd2hpY2ggc2hhcmUgdGhlIHNhbWUgdGVzdCBm
aXh0dXJlIGxvZ2ljLCBkbyBJIGhhdmUgdG8gZGVmaW5lIGEgbmV3IHRlc3QgZml4dHVyZSBjbGFz
cyBmb3IgZWFjaCBvZiB0aGVtPyBUaGlzIHNlZW1zIHByZXR0eSB0ZWRpb3VzLiAjIworCitZb3Ug
ZG9uJ3QgaGF2ZSB0by4gSW5zdGVhZCBvZgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMg
QmFzZVRlc3Qge307CisKK1RFU1RfRihGb29UZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihGb29U
ZXN0LCBEZWYpIHsgLi4uIH0KKworY2xhc3MgQmFyVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCB7fTsK
KworVEVTVF9GKEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIERlZikgeyAu
Li4gfQorYGBgCisKK3lvdSBjYW4gc2ltcGx5IGB0eXBlZGVmYCB0aGUgdGVzdCBmaXh0dXJlczoK
K2BgYAordHlwZWRlZiBCYXNlVGVzdCBGb29UZXN0OworCitURVNUX0YoRm9vVGVzdCwgQWJjKSB7
IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9CisKK3R5cGVkZWYgQmFzZVRlc3Qg
QmFyVGVzdDsKKworVEVTVF9GKEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRlc3Qs
IERlZikgeyAuLi4gfQorYGBgCisKKyMjIFRoZSBHb29nbGUgVGVzdCBvdXRwdXQgaXMgYnVyaWVk
IGluIGEgd2hvbGUgYnVuY2ggb2YgbG9nIG1lc3NhZ2VzLiBXaGF0IGRvIEkgZG8/ICMjCisKK1Ro
ZSBHb29nbGUgVGVzdCBvdXRwdXQgaXMgbWVhbnQgdG8gYmUgYSBjb25jaXNlIGFuZCBodW1hbi1m
cmllbmRseSByZXBvcnQuIElmCit5b3VyIHRlc3QgZ2VuZXJhdGVzIHRleHR1YWwgb3V0cHV0IGl0
c2VsZiwgaXQgd2lsbCBtaXggd2l0aCB0aGUgR29vZ2xlIFRlc3QKK291dHB1dCwgbWFraW5nIGl0
IGhhcmQgdG8gcmVhZC4gSG93ZXZlciwgdGhlcmUgaXMgYW4gZWFzeSBzb2x1dGlvbiB0byB0aGlz
Citwcm9ibGVtLgorCitTaW5jZSBtb3N0IGxvZyBtZXNzYWdlcyBnbyB0byBzdGRlcnIsIHdlIGRl
Y2lkZWQgdG8gbGV0IEdvb2dsZSBUZXN0IG91dHB1dCBnbwordG8gc3Rkb3V0LiBUaGlzIHdheSwg
eW91IGNhbiBlYXNpbHkgc2VwYXJhdGUgdGhlIHR3byB1c2luZyByZWRpcmVjdGlvbi4gRm9yCitl
eGFtcGxlOgorYGBgCisuL215X3Rlc3QgPiBnb29nbGV0ZXN0X291dHB1dC50eHQKK2BgYAorCisj
IyBXaHkgc2hvdWxkIEkgcHJlZmVyIHRlc3QgZml4dHVyZXMgb3ZlciBnbG9iYWwgdmFyaWFibGVz
PyAjIworCitUaGVyZSBhcmUgc2V2ZXJhbCBnb29kIHJlYXNvbnM6CisgIDEuIEl0J3MgbGlrZWx5
IHlvdXIgdGVzdCBuZWVkcyB0byBjaGFuZ2UgdGhlIHN0YXRlcyBvZiBpdHMgZ2xvYmFsIHZhcmlh
Ymxlcy4gVGhpcyBtYWtlcyBpdCBkaWZmaWN1bHQgdG8ga2VlcCBzaWRlIGVmZmVjdHMgZnJvbSBl
c2NhcGluZyBvbmUgdGVzdCBhbmQgY29udGFtaW5hdGluZyBvdGhlcnMsIG1ha2luZyBkZWJ1Z2dp
bmcgZGlmZmljdWx0LiBCeSB1c2luZyBmaXh0dXJlcywgZWFjaCB0ZXN0IGhhcyBhIGZyZXNoIHNl
dCBvZiB2YXJpYWJsZXMgdGhhdCdzIGRpZmZlcmVudCAoYnV0IHdpdGggdGhlIHNhbWUgbmFtZXMp
LiBUaHVzLCB0ZXN0cyBhcmUga2VwdCBpbmRlcGVuZGVudCBvZiBlYWNoIG90aGVyLgorICAxLiBH
bG9iYWwgdmFyaWFibGVzIHBvbGx1dGUgdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisgIDEuIFRlc3Qg
Zml4dHVyZXMgY2FuIGJlIHJldXNlZCB2aWEgc3ViY2xhc3NpbmcsIHdoaWNoIGNhbm5vdCBiZSBk
b25lIGVhc2lseSB3aXRoIGdsb2JhbCB2YXJpYWJsZXMuIFRoaXMgaXMgdXNlZnVsIGlmIG1hbnkg
dGVzdCBjYXNlcyBoYXZlIHNvbWV0aGluZyBpbiBjb21tb24uCisKKyMjIEhvdyBkbyBJIHRlc3Qg
cHJpdmF0ZSBjbGFzcyBtZW1iZXJzIHdpdGhvdXQgd3JpdGluZyBGUklFTkRcX1RFU1QoKXM/ICMj
CisKK1lvdSBzaG91bGQgdHJ5IHRvIHdyaXRlIHRlc3RhYmxlIGNvZGUsIHdoaWNoIG1lYW5zIGNs
YXNzZXMgc2hvdWxkIGJlIGVhc2lseQordGVzdGVkIGZyb20gdGhlaXIgcHVibGljIGludGVyZmFj
ZS4gT25lIHdheSB0byBhY2hpZXZlIHRoaXMgaXMgdGhlIFBpbXBsIGlkaW9tOgoreW91IG1vdmUg
YWxsIHByaXZhdGUgbWVtYmVycyBvZiBhIGNsYXNzIGludG8gYSBoZWxwZXIgY2xhc3MsIGFuZCBt
YWtlIGFsbAorbWVtYmVycyBvZiB0aGUgaGVscGVyIGNsYXNzIHB1YmxpYy4KKworWW91IGhhdmUg
c2V2ZXJhbCBvdGhlciBvcHRpb25zIHRoYXQgZG9uJ3QgcmVxdWlyZSB1c2luZyBgRlJJRU5EX1RF
U1RgOgorICAqIFdyaXRlIHRoZSB0ZXN0cyBhcyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlIGNsYXNz
OgorYGBgCitjbGFzcyBGb28geworICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKKyAgLi4uCit9Owor
CitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgor
ICAuLi4KKyAgdm9pZCBUZXN0MSgpIHsuLi59IC8vIFRoaXMgYWNjZXNzZXMgcHJpdmF0ZSBtZW1i
ZXJzIG9mIGNsYXNzIEZvby4KKyAgdm9pZCBUZXN0MigpIHsuLi59IC8vIFNvIGRvZXMgdGhpcyBv
bmUuCit9OworCitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgVGVzdDEoKTsKK30KKworVEVT
VF9GKEZvb1Rlc3QsIFRlc3QyKSB7CisgIFRlc3QyKCk7Cit9CitgYGAKKyAgKiBJbiB0aGUgZml4
dHVyZSBjbGFzcywgd3JpdGUgYWNjZXNzb3JzIGZvciB0aGUgdGVzdGVkIGNsYXNzJyBwcml2YXRl
IG1lbWJlcnMsIHRoZW4gdXNlIHRoZSBhY2Nlc3NvcnMgaW4geW91ciB0ZXN0czoKK2BgYAorY2xh
c3MgRm9vIHsKKyAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7CisgIC4uLgorfTsKKworY2xhc3MgRm9v
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLi4uCisgIFQx
IGdldF9wcml2YXRlX21lbWJlcjEoRm9vKiBvYmopIHsKKyAgICByZXR1cm4gb2JqLT5wcml2YXRl
X21lbWJlcjFfOworICB9Cit9OworCitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgLi4uCisg
IGdldF9wcml2YXRlX21lbWJlcjEoeCkKKyAgLi4uCit9CitgYGAKKyAgKiBJZiB0aGUgbWV0aG9k
cyBhcmUgZGVjbGFyZWQgKipwcm90ZWN0ZWQqKiwgeW91IGNhbiBjaGFuZ2UgdGhlaXIgYWNjZXNz
IGxldmVsIGluIGEgdGVzdC1vbmx5IHN1YmNsYXNzOgorYGBgCitjbGFzcyBZb3VyQ2xhc3Mgewor
ICAuLi4KKyBwcm90ZWN0ZWQ6IC8vIHByb3RlY3RlZCBhY2Nlc3MgZm9yIHRlc3RhYmlsaXR5Lgor
ICBpbnQgRG9Tb21ldGhpbmdSZXR1cm5pbmdJbnQoKTsKKyAgLi4uCit9OworCisvLyBpbiB0aGUg
eW91cl9jbGFzc190ZXN0LmNjIGZpbGU6CitjbGFzcyBUZXN0YWJsZVlvdXJDbGFzcyA6IHB1Ymxp
YyBZb3VyQ2xhc3MgeworICAuLi4KKyBwdWJsaWM6IHVzaW5nIFlvdXJDbGFzczo6RG9Tb21ldGhp
bmdSZXR1cm5pbmdJbnQ7IC8vIGNoYW5nZXMgYWNjZXNzIHJpZ2h0cworICAuLi4KK307CisKK1RF
U1RfRihZb3VyQ2xhc3NUZXN0LCBEb1NvbWV0aGluZ1Rlc3QpIHsKKyAgVGVzdGFibGVZb3VyQ2xh
c3Mgb2JqOworICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWRfdmFsdWUsIG9iai5Eb1NvbWV0aGluZ1Jl
dHVybmluZ0ludCgpKTsKK30KK2BgYAorCisjIyBIb3cgZG8gSSB0ZXN0IHByaXZhdGUgY2xhc3Mg
c3RhdGljIG1lbWJlcnMgd2l0aG91dCB3cml0aW5nIEZSSUVORFxfVEVTVCgpcz8gIyMKKworV2Ug
ZmluZCBwcml2YXRlIHN0YXRpYyBtZXRob2RzIGNsdXR0ZXIgdGhlIGhlYWRlciBmaWxlLiAgVGhl
eSBhcmUKK2ltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIGlkZWFsbHkgc2hvdWxkIGJlIGtlcHQg
b3V0IG9mIGEgLmguIFNvIG9mdGVuIEkgbWFrZQordGhlbSBmcmVlIGZ1bmN0aW9ucyBpbnN0ZWFk
LgorCitJbnN0ZWFkIG9mOgorYGBgCisvLyBmb28uaAorY2xhc3MgRm9vIHsKKyAgLi4uCisgcHJp
dmF0ZToKKyAgc3RhdGljIGJvb2wgRnVuYyhpbnQgbik7Cit9OworCisvLyBmb28uY2MKK2Jvb2wg
Rm9vOjpGdW5jKGludCBuKSB7IC4uLiB9CisKKy8vIGZvb190ZXN0LmNjCitFWFBFQ1RfVFJVRShG
b286OkZ1bmMoMTIzNDUpKTsKK2BgYAorCitZb3UgcHJvYmFibHkgc2hvdWxkIGJldHRlciB3cml0
ZToKK2BgYAorLy8gZm9vLmgKK2NsYXNzIEZvbyB7CisgIC4uLgorfTsKKworLy8gZm9vLmNjCitu
YW1lc3BhY2UgaW50ZXJuYWwgeworICBib29sIEZ1bmMoaW50IG4pIHsgLi4uIH0KK30KKworLy8g
Zm9vX3Rlc3QuY2MKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisgIGJvb2wgRnVuYyhpbnQgbik7Cit9
CisKK0VYUEVDVF9UUlVFKGludGVybmFsOjpGdW5jKDEyMzQ1KSk7CitgYGAKKworIyMgSSB3b3Vs
ZCBsaWtlIHRvIHJ1biBhIHRlc3Qgc2V2ZXJhbCB0aW1lcyB3aXRoIGRpZmZlcmVudCBwYXJhbWV0
ZXJzLiBEbyBJIG5lZWQgdG8gd3JpdGUgc2V2ZXJhbCBzaW1pbGFyIGNvcGllcyBvZiBpdD8gIyMK
KworTm8uIFlvdSBjYW4gdXNlIGEgZmVhdHVyZSBjYWxsZWQgW3ZhbHVlLXBhcmFtZXRlcml6ZWQg
dGVzdHNdKFYxXzVfQWR2YW5jZWRHdWlkZS5tZCNWYWx1ZV9QYXJhbWV0ZXJpemVkX1Rlc3RzKSB3
aGljaAorbGV0cyB5b3UgcmVwZWF0IHlvdXIgdGVzdHMgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVy
cywgd2l0aG91dCBkZWZpbmluZyBpdCBtb3JlIHRoYW4gb25jZS4KKworIyMgSG93IGRvIEkgdGVz
dCBhIGZpbGUgdGhhdCBkZWZpbmVzIG1haW4oKT8gIyMKKworVG8gdGVzdCBhIGBmb28uY2NgIGZp
bGUsIHlvdSBuZWVkIHRvIGNvbXBpbGUgYW5kIGxpbmsgaXQgaW50byB5b3VyIHVuaXQgdGVzdAor
cHJvZ3JhbS4gSG93ZXZlciwgd2hlbiB0aGUgZmlsZSBjb250YWlucyBhIGRlZmluaXRpb24gZm9y
IHRoZSBgbWFpbigpYAorZnVuY3Rpb24sIGl0IHdpbGwgY2xhc2ggd2l0aCB0aGUgYG1haW4oKWAg
b2YgeW91ciB1bml0IHRlc3QsIGFuZCB3aWxsIHJlc3VsdCBpbgorYSBidWlsZCBlcnJvci4KKwor
VGhlIHJpZ2h0IHNvbHV0aW9uIGlzIHRvIHNwbGl0IGl0IGludG8gdGhyZWUgZmlsZXM6CisgIDEu
IGBmb28uaGAgd2hpY2ggY29udGFpbnMgdGhlIGRlY2xhcmF0aW9ucywKKyAgMS4gYGZvby5jY2Ag
d2hpY2ggY29udGFpbnMgdGhlIGRlZmluaXRpb25zIGV4Y2VwdCBgbWFpbigpYCwgYW5kCisgIDEu
IGBmb29fbWFpbi5jY2Agd2hpY2ggY29udGFpbnMgbm90aGluZyBidXQgdGhlIGRlZmluaXRpb24g
b2YgYG1haW4oKWAuCisKK1RoZW4gYGZvby5jY2AgY2FuIGJlIGVhc2lseSB0ZXN0ZWQuCisKK0lm
IHlvdSBhcmUgYWRkaW5nIHRlc3RzIHRvIGFuIGV4aXN0aW5nIGZpbGUgYW5kIGRvbid0IHdhbnQg
YW4gaW50cnVzaXZlIGNoYW5nZQorbGlrZSB0aGlzLCB0aGVyZSBpcyBhIGhhY2s6IGp1c3QgaW5j
bHVkZSB0aGUgZW50aXJlIGBmb28uY2NgIGZpbGUgaW4geW91ciB1bml0Cit0ZXN0LiBGb3IgZXhh
bXBsZToKK2BgYAorLy8gRmlsZSBmb29fdW5pdHRlc3QuY2MKKworLy8gVGhlIGhlYWRlcnMgc2Vj
dGlvbgorLi4uCisKKy8vIFJlbmFtZXMgbWFpbigpIGluIGZvby5jYyB0byBtYWtlIHJvb20gZm9y
IHRoZSB1bml0IHRlc3QgbWFpbigpCisjZGVmaW5lIG1haW4gRm9vTWFpbgorCisjaW5jbHVkZSAi
YS9iL2Zvby5jYyIKKworLy8gVGhlIHRlc3RzIHN0YXJ0IGhlcmUuCisuLi4KK2BgYAorCisKK0hv
d2V2ZXIsIHBsZWFzZSByZW1lbWJlciB0aGlzIGlzIGEgaGFjayBhbmQgc2hvdWxkIG9ubHkgYmUg
dXNlZCBhcyB0aGUgbGFzdAorcmVzb3J0LgorCisjIyBXaGF0IGNhbiB0aGUgc3RhdGVtZW50IGFy
Z3VtZW50IGluIEFTU0VSVFxfREVBVEgoKSBiZT8gIyMKKworYEFTU0VSVF9ERUFUSChfc3RhdGVt
ZW50XywgX3JlZ2V4XylgIChvciBhbnkgZGVhdGggYXNzZXJ0aW9uIG1hY3JvKSBjYW4gYmUgdXNl
ZAord2hlcmV2ZXIgYF9zdGF0ZW1lbnRfYCBpcyB2YWxpZC4gU28gYmFzaWNhbGx5IGBfc3RhdGVt
ZW50X2AgY2FuIGJlIGFueSBDKysKK3N0YXRlbWVudCB0aGF0IG1ha2VzIHNlbnNlIGluIHRoZSBj
dXJyZW50IGNvbnRleHQuIEluIHBhcnRpY3VsYXIsIGl0IGNhbgorcmVmZXJlbmNlIGdsb2JhbCBh
bmQvb3IgbG9jYWwgdmFyaWFibGVzLCBhbmQgY2FuIGJlOgorICAqIGEgc2ltcGxlIGZ1bmN0aW9u
IGNhbGwgKG9mdGVuIHRoZSBjYXNlKSwKKyAgKiBhIGNvbXBsZXggZXhwcmVzc2lvbiwgb3IKKyAg
KiBhIGNvbXBvdW5kIHN0YXRlbWVudC4KKworPiBTb21lIGV4YW1wbGVzIGFyZSBzaG93biBoZXJl
OgorCitgYGAKKy8vIEEgZGVhdGggdGVzdCBjYW4gYmUgYSBzaW1wbGUgZnVuY3Rpb24gY2FsbC4K
K1RFU1QoTXlEZWF0aFRlc3QsIEZ1bmN0aW9uQ2FsbCkgeworICBBU1NFUlRfREVBVEgoWHl6KDUp
LCAiWHl6IGZhaWxlZCIpOworfQorCisvLyBPciBhIGNvbXBsZXggZXhwcmVzc2lvbiB0aGF0IHJl
ZmVyZW5jZXMgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMuCitURVNUKE15RGVhdGhUZXN0LCBDb21w
bGV4RXhwcmVzc2lvbikgeworICBjb25zdCBib29sIGMgPSBDb25kaXRpb24oKTsKKyAgQVNTRVJU
X0RFQVRIKChjID8gRnVuYzEoMCkgOiBvYmplY3QyLk1ldGhvZCgidGVzdCIpKSwKKyAgICAgICAg
ICAgICAgICIoRnVuYzF8TWV0aG9kKSBmYWlsZWQiKTsKK30KKworLy8gRGVhdGggYXNzZXJ0aW9u
cyBjYW4gYmUgdXNlZCBhbnkgd2hlcmUgaW4gYSBmdW5jdGlvbi4gSW4KKy8vIHBhcnRpY3VsYXIs
IHRoZXkgY2FuIGJlIGluc2lkZSBhIGxvb3AuCitURVNUKE15RGVhdGhUZXN0LCBJbnNpZGVMb29w
KSB7CisgIC8vIFZlcmlmaWVzIHRoYXQgRm9vKDApLCBGb28oMSksIC4uLiwgYW5kIEZvbyg0KSBh
bGwgZGllLgorICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgeworICAgIEVYUEVDVF9ERUFU
SF9NKEZvbyhpKSwgIkZvbyBoYXMgXFxkKyBlcnJvcnMiLAorICAgICAgICAgICAgICAgICAgIDo6
dGVzdGluZzo6TWVzc2FnZSgpIDw8ICJ3aGVyZSBpIGlzICIgPDwgaSk7CisgIH0KK30KKworLy8g
QSBkZWF0aCBhc3NlcnRpb24gY2FuIGNvbnRhaW4gYSBjb21wb3VuZCBzdGF0ZW1lbnQuCitURVNU
KE15RGVhdGhUZXN0LCBDb21wb3VuZFN0YXRlbWVudCkgeworICAvLyBWZXJpZmllcyB0aGF0IGF0
IGxlYXNlIG9uZSBvZiBCYXIoMCksIEJhcigxKSwgLi4uLCBhbmQKKyAgLy8gQmFyKDQpIGRpZXMu
CisgIEFTU0VSVF9ERUFUSCh7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAg
ICAgIEJhcihpKTsKKyAgICB9CisgIH0sCisgICJCYXIgaGFzIFxcZCsgZXJyb3JzIik7fQorYGBg
CisKK2Bnb29nbGV0ZXN0X3VuaXR0ZXN0LmNjYCBjb250YWlucyBtb3JlIGV4YW1wbGVzIGlmIHlv
dSBhcmUgaW50ZXJlc3RlZC4KKworIyMgV2hhdCBzeW50YXggZG9lcyB0aGUgcmVndWxhciBleHBy
ZXNzaW9uIGluIEFTU0VSVFxfREVBVEggdXNlPyAjIworCitPbiBQT1NJWCBzeXN0ZW1zLCBHb29n
bGUgVGVzdCB1c2VzIHRoZSBQT1NJWCBFeHRlbmRlZCByZWd1bGFyCitleHByZXNzaW9uIHN5bnRh
eAorKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVndWxhcl9leHByZXNzaW9uI1BPU0lY
X0V4dGVuZGVkX1JlZ3VsYXJfRXhwcmVzc2lvbnMpLiBPbgorV2luZG93cywgaXQgdXNlcyBhIGxp
bWl0ZWQgdmFyaWFudCBvZiByZWd1bGFyIGV4cHJlc3Npb24gc3ludGF4LiBGb3IKK21vcmUgZGV0
YWlscywgc2VlIHRoZSBbcmVndWxhciBleHByZXNzaW9uIHN5bnRheF0oVjFfNV9BZHZhbmNlZEd1
aWRlLm1kI1JlZ3VsYXJfRXhwcmVzc2lvbl9TeW50YXgpLgorCisjIyBJIGhhdmUgYSBmaXh0dXJl
IGNsYXNzIEZvbywgYnV0IFRFU1RcX0YoRm9vLCBCYXIpIGdpdmVzIG1lIGVycm9yICJubyBtYXRj
aGluZyBmdW5jdGlvbiBmb3IgY2FsbCB0byBGb286OkZvbygpIi4gV2h5PyAjIworCitHb29nbGUg
VGVzdCBuZWVkcyB0byBiZSBhYmxlIHRvIGNyZWF0ZSBvYmplY3RzIG9mIHlvdXIgdGVzdCBmaXh0
dXJlIGNsYXNzLCBzbworaXQgbXVzdCBoYXZlIGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4gTm9ybWFs
bHkgdGhlIGNvbXBpbGVyIHdpbGwgZGVmaW5lIG9uZSBmb3IKK3lvdS4gSG93ZXZlciwgdGhlcmUg
YXJlIGNhc2VzIHdoZXJlIHlvdSBoYXZlIHRvIGRlZmluZSB5b3VyIG93bjoKKyAgKiBJZiB5b3Ug
ZXhwbGljaXRseSBkZWNsYXJlIGEgbm9uLWRlZmF1bHQgY29uc3RydWN0b3IgZm9yIGNsYXNzIGBG
b29gLCB0aGVuIHlvdSBuZWVkIHRvIGRlZmluZSBhIGRlZmF1bHQgY29uc3RydWN0b3IsIGV2ZW4g
aWYgaXQgd291bGQgYmUgZW1wdHkuCisgICogSWYgYEZvb2AgaGFzIGEgY29uc3Qgbm9uLXN0YXRp
YyBkYXRhIG1lbWJlciwgdGhlbiB5b3UgaGF2ZSB0byBkZWZpbmUgdGhlIGRlZmF1bHQgY29uc3Ry
dWN0b3IgX2FuZF8gaW5pdGlhbGl6ZSB0aGUgY29uc3QgbWVtYmVyIGluIHRoZSBpbml0aWFsaXpl
ciBsaXN0IG9mIHRoZSBjb25zdHJ1Y3Rvci4gKEVhcmx5IHZlcnNpb25zIG9mIGBnY2NgIGRvZXNu
J3QgZm9yY2UgeW91IHRvIGluaXRpYWxpemUgdGhlIGNvbnN0IG1lbWJlci4gSXQncyBhIGJ1ZyB0
aGF0IGhhcyBiZWVuIGZpeGVkIGluIGBnY2MgNGAuKQorCisjIyBXaHkgZG9lcyBBU1NFUlRcX0RF
QVRIIGNvbXBsYWluIGFib3V0IHByZXZpb3VzIHRocmVhZHMgdGhhdCB3ZXJlIGFscmVhZHkgam9p
bmVkPyAjIworCitXaXRoIHRoZSBMaW51eCBwdGhyZWFkIGxpYnJhcnksIHRoZXJlIGlzIG5vIHR1
cm5pbmcgYmFjayBvbmNlIHlvdSBjcm9zcyB0aGUKK2xpbmUgZnJvbSBzaW5nbGUgdGhyZWFkIHRv
IG11bHRpcGxlIHRocmVhZHMuIFRoZSBmaXJzdCB0aW1lIHlvdSBjcmVhdGUgYQordGhyZWFkLCBh
IG1hbmFnZXIgdGhyZWFkIGlzIGNyZWF0ZWQgaW4gYWRkaXRpb24sIHNvIHlvdSBnZXQgMywgbm90
IDIsIHRocmVhZHMuCitMYXRlciB3aGVuIHRoZSB0aHJlYWQgeW91IGNyZWF0ZSBqb2lucyB0aGUg
bWFpbiB0aHJlYWQsIHRoZSB0aHJlYWQgY291bnQKK2RlY3JlbWVudHMgYnkgMSwgYnV0IHRoZSBt
YW5hZ2VyIHRocmVhZCB3aWxsIG5ldmVyIGJlIGtpbGxlZCwgc28geW91IHN0aWxsIGhhdmUKKzIg
dGhyZWFkcywgd2hpY2ggbWVhbnMgeW91IGNhbm5vdCBzYWZlbHkgcnVuIGEgZGVhdGggdGVzdC4K
KworVGhlIG5ldyBOUFRMIHRocmVhZCBsaWJyYXJ5IGRvZXNuJ3Qgc3VmZmVyIGZyb20gdGhpcyBw
cm9ibGVtLCBhcyBpdCBkb2Vzbid0CitjcmVhdGUgYSBtYW5hZ2VyIHRocmVhZC4gSG93ZXZlciwg
aWYgeW91IGRvbid0IGNvbnRyb2wgd2hpY2ggbWFjaGluZSB5b3VyIHRlc3QKK3J1bnMgb24sIHlv
dSBzaG91bGRuJ3QgZGVwZW5kIG9uIHRoaXMuCisKKyMjIFdoeSBkb2VzIEdvb2dsZSBUZXN0IHJl
cXVpcmUgdGhlIGVudGlyZSB0ZXN0IGNhc2UsIGluc3RlYWQgb2YgaW5kaXZpZHVhbCB0ZXN0cywg
dG8gYmUgbmFtZWQgRk9PRGVhdGhUZXN0IHdoZW4gaXQgdXNlcyBBU1NFUlRcX0RFQVRIPyAjIwor
CitHb29nbGUgVGVzdCBkb2VzIG5vdCBpbnRlcmxlYXZlIHRlc3RzIGZyb20gZGlmZmVyZW50IHRl
c3QgY2FzZXMuIFRoYXQgaXMsIGl0CitydW5zIGFsbCB0ZXN0cyBpbiBvbmUgdGVzdCBjYXNlIGZp
cnN0LCBhbmQgdGhlbiBydW5zIGFsbCB0ZXN0cyBpbiB0aGUgbmV4dCB0ZXN0CitjYXNlLCBhbmQg
c28gb24uIEdvb2dsZSBUZXN0IGRvZXMgdGhpcyBiZWNhdXNlIGl0IG5lZWRzIHRvIHNldCB1cCBh
IHRlc3QgY2FzZQorYmVmb3JlIHRoZSBmaXJzdCB0ZXN0IGluIGl0IGlzIHJ1biwgYW5kIHRlYXIg
aXQgZG93biBhZnRlcndvcmRzLiBTcGxpdHRpbmcgdXAKK3RoZSB0ZXN0IGNhc2Ugd291bGQgcmVx
dWlyZSBtdWx0aXBsZSBzZXQtdXAgYW5kIHRlYXItZG93biBwcm9jZXNzZXMsIHdoaWNoIGlzCitp
bmVmZmljaWVudCBhbmQgbWFrZXMgdGhlIHNlbWFudGljcyB1bmNsZWFuLgorCitJZiB3ZSB3ZXJl
IHRvIGRldGVybWluZSB0aGUgb3JkZXIgb2YgdGVzdHMgYmFzZWQgb24gdGVzdCBuYW1lIGluc3Rl
YWQgb2YgdGVzdAorY2FzZSBuYW1lLCB0aGVuIHdlIHdvdWxkIGhhdmUgYSBwcm9ibGVtIHdpdGgg
dGhlIGZvbGxvd2luZyBzaXR1YXRpb246CisKK2BgYAorVEVTVF9GKEZvb1Rlc3QsIEFiY0RlYXRo
VGVzdCkgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIFV2dykgeyAuLi4gfQorCitURVNUX0YoQmFy
VGVzdCwgRGVmRGVhdGhUZXN0KSB7IC4uLiB9CitURVNUX0YoQmFyVGVzdCwgWHl6KSB7IC4uLiB9
CitgYGAKKworU2luY2UgYEZvb1Rlc3QuQWJjRGVhdGhUZXN0YCBuZWVkcyB0byBydW4gYmVmb3Jl
IGBCYXJUZXN0Llh5emAsIGFuZCB3ZSBkb24ndAoraW50ZXJsZWF2ZSB0ZXN0cyBmcm9tIGRpZmZl
cmVudCB0ZXN0IGNhc2VzLCB3ZSBuZWVkIHRvIHJ1biBhbGwgdGVzdHMgaW4gdGhlCitgRm9vVGVz
dGAgY2FzZSBiZWZvcmUgcnVubmluZyBhbnkgdGVzdCBpbiB0aGUgYEJhclRlc3RgIGNhc2UuIFRo
aXMgY29udHJhZGljdHMKK3dpdGggdGhlIHJlcXVpcmVtZW50IHRvIHJ1biBgQmFyVGVzdC5EZWZE
ZWF0aFRlc3RgIGJlZm9yZSBgRm9vVGVzdC5VdndgLgorCisjIyBCdXQgSSBkb24ndCBsaWtlIGNh
bGxpbmcgbXkgZW50aXJlIHRlc3QgY2FzZSBGT09EZWF0aFRlc3Qgd2hlbiBpdCBjb250YWlucyBi
b3RoIGRlYXRoIHRlc3RzIGFuZCBub24tZGVhdGggdGVzdHMuIFdoYXQgZG8gSSBkbz8gIyMKKwor
WW91IGRvbid0IGhhdmUgdG8sIGJ1dCBpZiB5b3UgbGlrZSwgeW91IG1heSBzcGxpdCB1cCB0aGUg
dGVzdCBjYXNlIGludG8KK2BGb29UZXN0YCBhbmQgYEZvb0RlYXRoVGVzdGAsIHdoZXJlIHRoZSBu
YW1lcyBtYWtlIGl0IGNsZWFyIHRoYXQgdGhleSBhcmUKK3JlbGF0ZWQ6CisKK2BgYAorY2xhc3Mg
Rm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKKworVEVTVF9GKEZvb1Rl
c3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQorCit0eXBlZGVm
IEZvb1Rlc3QgRm9vRGVhdGhUZXN0OworCitURVNUX0YoRm9vRGVhdGhUZXN0LCBVdncpIHsgLi4u
IEVYUEVDVF9ERUFUSCguLi4pIC4uLiB9CitURVNUX0YoRm9vRGVhdGhUZXN0LCBYeXopIHsgLi4u
IEFTU0VSVF9ERUFUSCguLi4pIC4uLiB9CitgYGAKKworIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlu
cyBhYm91dCAibm8gbWF0Y2ggZm9yICdvcGVyYXRvcjw8JyIgd2hlbiBJIHVzZSBhbiBhc3NlcnRp
b24uIFdoYXQgZ2l2ZXM/ICMjCisKK0lmIHlvdSB1c2UgYSB1c2VyLWRlZmluZWQgdHlwZSBgRm9v
VHlwZWAgaW4gYW4gYXNzZXJ0aW9uLCB5b3UgbXVzdCBtYWtlIHN1cmUKK3RoZXJlIGlzIGFuIGBz
dGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiwgY29uc3QgRm9vVHlwZSYpYCBm
dW5jdGlvbgorZGVmaW5lZCBzdWNoIHRoYXQgd2UgY2FuIHByaW50IGEgdmFsdWUgb2YgYEZvb1R5
cGVgLgorCitJbiBhZGRpdGlvbiwgaWYgYEZvb1R5cGVgIGlzIGRlY2xhcmVkIGluIGEgbmFtZSBz
cGFjZSwgdGhlIGA8PGAgb3BlcmF0b3IgYWxzbworbmVlZHMgdG8gYmUgZGVmaW5lZCBpbiB0aGUg
X3NhbWVfIG5hbWUgc3BhY2UuCisKKyMjIEhvdyBkbyBJIHN1cHByZXNzIHRoZSBtZW1vcnkgbGVh
ayBtZXNzYWdlcyBvbiBXaW5kb3dzPyAjIworCitTaW5jZSB0aGUgc3RhdGljYWxseSBpbml0aWFs
aXplZCBHb29nbGUgVGVzdCBzaW5nbGV0b24gcmVxdWlyZXMgYWxsb2NhdGlvbnMgb24KK3RoZSBo
ZWFwLCB0aGUgVmlzdWFsIEMrKyBtZW1vcnkgbGVhayBkZXRlY3RvciB3aWxsIHJlcG9ydCBtZW1v
cnkgbGVha3MgYXQgdGhlCitlbmQgb2YgdGhlIHByb2dyYW0gcnVuLiBUaGUgZWFzaWVzdCB3YXkg
dG8gYXZvaWQgdGhpcyBpcyB0byB1c2UgdGhlCitgX0NydE1lbUNoZWNrcG9pbnRgIGFuZCBgX0Ny
dE1lbUR1bXBBbGxPYmplY3RzU2luY2VgIGNhbGxzIHRvIG5vdCByZXBvcnQgYW55CitzdGF0aWNh
bGx5IGluaXRpYWxpemVkIGhlYXAgb2JqZWN0cy4gU2VlIE1TRE4gZm9yIG1vcmUgZGV0YWlscyBh
bmQgYWRkaXRpb25hbAoraGVhcCBjaGVjay9kZWJ1ZyByb3V0aW5lcy4KKworIyMgSSBhbSBidWls
ZGluZyBteSBwcm9qZWN0IHdpdGggR29vZ2xlIFRlc3QgaW4gVmlzdWFsIFN0dWRpbyBhbmQgYWxs
IEknbSBnZXR0aW5nIGlzIGEgYnVuY2ggb2YgbGlua2VyIGVycm9ycyAob3Igd2FybmluZ3MpLiBI
ZWxwISAjIworCitZb3UgbWF5IGdldCBhIG51bWJlciBvZiB0aGUgZm9sbG93aW5nIGxpbmtlciBl
cnJvciBvciB3YXJuaW5ncyBpZiB5b3UKK2F0dGVtcHQgdG8gbGluayB5b3VyIHRlc3QgcHJvamVj
dCB3aXRoIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5IHdoZW4KK3lvdXIgcHJvamVjdCBhbmQgdGhl
IGFyZSBub3QgYnVpbHQgdXNpbmcgdGhlIHNhbWUgY29tcGlsZXIgc2V0dGluZ3MuCisKKyAgKiBM
TksyMDA1OiBzeW1ib2wgYWxyZWFkeSBkZWZpbmVkIGluIG9iamVjdAorICAqIExOSzQyMTc6IGxv
Y2FsbHkgZGVmaW5lZCBzeW1ib2wgJ3N5bWJvbCcgaW1wb3J0ZWQgaW4gZnVuY3Rpb24gJ2Z1bmN0
aW9uJworICAqIExOSzQwNDk6IGxvY2FsbHkgZGVmaW5lZCBzeW1ib2wgJ3N5bWJvbCcgaW1wb3J0
ZWQKKworVGhlIEdvb2dsZSBUZXN0IHByb2plY3QgKGd0ZXN0LnZjcHJvaikgaGFzIHRoZSBSdW50
aW1lIExpYnJhcnkgb3B0aW9uCitzZXQgdG8gL01UICh1c2UgbXVsdGktdGhyZWFkZWQgc3RhdGlj
IGxpYnJhcmllcywgL01UZCBmb3IgZGVidWcpLiBJZgoreW91ciBwcm9qZWN0IHVzZXMgc29tZXRo
aW5nIGVsc2UsIGZvciBleGFtcGxlIC9NRCAodXNlIG11bHRpLXRocmVhZGVkCitETExzLCAvTURk
IGZvciBkZWJ1ZyksIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgc2V0dGluZyBpbiB0aGUgR29vZ2xl
CitUZXN0IHByb2plY3QgdG8gbWF0Y2ggeW91ciBwcm9qZWN0J3MuCisKK1RvIHVwZGF0ZSB0aGlz
IHNldHRpbmcgb3BlbiB0aGUgcHJvamVjdCBwcm9wZXJ0aWVzIGluIHRoZSBWaXN1YWwKK1N0dWRp
byBJREUgdGhlbiBzZWxlY3QgdGhlIGJyYW5jaCBDb25maWd1cmF0aW9uIFByb3BlcnRpZXMgfCBD
L0MrKyB8CitDb2RlIEdlbmVyYXRpb24gYW5kIGNoYW5nZSB0aGUgb3B0aW9uICJSdW50aW1lIExp
YnJhcnkiLiAgWW91IG1heSBhbHNvIHRyeQordXNpbmcgZ3Rlc3QtbWQudmNwcm9qIGluc3RlYWQg
b2YgZ3Rlc3QudmNwcm9qLgorCisjIyBJIHB1dCBteSB0ZXN0cyBpbiBhIGxpYnJhcnkgYW5kIEdv
b2dsZSBUZXN0IGRvZXNuJ3QgcnVuIHRoZW0uIFdoYXQncyBoYXBwZW5pbmc/ICMjCitIYXZlIHlv
dSByZWFkIGEKK1t3YXJuaW5nXShWMV81X1ByaW1lci5tZCNpbXBvcnRhbnQtbm90ZS1mb3Itdmlz
dWFsLWMtdXNlcnMpIG9uCit0aGUgR29vZ2xlIFRlc3QgUHJpbWVyIHBhZ2U/CisKKyMjIEkgd2Fu
dCB0byB1c2UgR29vZ2xlIFRlc3Qgd2l0aCBWaXN1YWwgU3R1ZGlvIGJ1dCBkb24ndCBrbm93IHdo
ZXJlIHRvIHN0YXJ0LiAjIworTWFueSBwZW9wbGUgYXJlIGluIHlvdXIgcG9zaXRpb24gYW5kIG9u
ZSBvZiB0aGUgcG9zdGVkIGhpcyBzb2x1dGlvbiB0bworb3VyIG1haWxpbmcgbGlzdC4gSGVyZSBp
cyBoaXMgbGluazoKK2h0dHA6Ly9oYXNzYW5qYW1pbGFobWFkLmJsb2dzcG90LmNvbS8yMDA5LzA3
L2d0ZXN0LXN0YXJ0ZXJzLWhlbHAuaHRtbC4KKworIyMgTXkgcXVlc3Rpb24gaXMgbm90IGNvdmVy
ZWQgaW4geW91ciBGQVEhICMjCisKK0lmIHlvdSBjYW5ub3QgZmluZCB0aGUgYW5zd2VyIHRvIHlv
dXIgcXVlc3Rpb24gaW4gdGhpcyBGQVEsIHRoZXJlIGFyZQorc29tZSBvdGhlciByZXNvdXJjZXMg
eW91IGNhbiB1c2U6CisKKyAgMS4gcmVhZCBvdGhlciBbd2lraSBwYWdlc10oaHR0cDovL2NvZGUu
Z29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvdy9saXN0KSwKKyAgMS4gc2VhcmNoIHRoZSBtYWlsaW5n
IGxpc3QgW2FyY2hpdmVdKGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGV0ZXN0
ZnJhbWV3b3JrL3RvcGljcyksCisgIDEuIGFzayBpdCBvbiBbZ29vZ2xldGVzdGZyYW1ld29ya0Bn
b29nbGVncm91cHMuY29tXShtYWlsdG86Z29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMu
Y29tKSBhbmQgc29tZW9uZSB3aWxsIGFuc3dlciBpdCAodG8gcHJldmVudCBzcGFtLCB3ZSByZXF1
aXJlIHlvdSB0byBqb2luIHRoZSBbZGlzY3Vzc2lvbiBncm91cF0oaHR0cDovL2dyb3Vwcy5nb29n
bGUuY29tL2dyb3VwL2dvb2dsZXRlc3RmcmFtZXdvcmspIGJlZm9yZSB5b3UgY2FuIHBvc3QuKS4K
KworUGxlYXNlIG5vdGUgdGhhdCBjcmVhdGluZyBhbiBpc3N1ZSBpbiB0aGUKK1tpc3N1ZSB0cmFj
a2VyXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC9pc3N1ZXMvbGlzdCkgaXMg
X25vdF8KK2EgZ29vZCB3YXkgdG8gZ2V0IHlvdXIgYW5zd2VyLCBhcyBpdCBpcyBtb25pdG9yZWQg
aW5mcmVxdWVudGx5IGJ5IGEKK3Zlcnkgc21hbGwgbnVtYmVyIG9mIHBlb3BsZS4KKworV2hlbiBh
c2tpbmcgYSBxdWVzdGlvbiwgaXQncyBoZWxwZnVsIHRvIHByb3ZpZGUgYXMgbXVjaCBvZiB0aGUK
K2ZvbGxvd2luZyBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSAocGVvcGxlIGNhbm5vdCBoZWxwIHlv
dSBpZiB0aGVyZSdzCitub3QgZW5vdWdoIGluZm9ybWF0aW9uIGluIHlvdXIgcXVlc3Rpb24pOgor
CisgICogdGhlIHZlcnNpb24gKG9yIHRoZSByZXZpc2lvbiBudW1iZXIgaWYgeW91IGNoZWNrIG91
dCBmcm9tIFNWTiBkaXJlY3RseSkgb2YgR29vZ2xlIFRlc3QgeW91IHVzZSAoR29vZ2xlIFRlc3Qg
aXMgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRoYXQgeW91ciBw
cm9ibGVtIGhhcyBiZWVuIHNvbHZlZCBpbiBhIGxhdGVyIHZlcnNpb24pLAorICAqIHlvdXIgb3Bl
cmF0aW5nIHN5c3RlbSwKKyAgKiB0aGUgbmFtZSBhbmQgdmVyc2lvbiBvZiB5b3VyIGNvbXBpbGVy
LAorICAqIHRoZSBjb21wbGV0ZSBjb21tYW5kIGxpbmUgZmxhZ3MgeW91IGdpdmUgdG8geW91ciBj
b21waWxlciwKKyAgKiB0aGUgY29tcGxldGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZXMgKGlmIHRo
ZSBxdWVzdGlvbiBpcyBhYm91dCBjb21waWxhdGlvbiksCisgICogdGhlIF9hY3R1YWxfIGNvZGUg
KGlkZWFsbHksIGEgbWluaW1hbCBidXQgY29tcGxldGUgcHJvZ3JhbSkgdGhhdCBoYXMgdGhlIHBy
b2JsZW0geW91IGVuY291bnRlci7vnIEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2RvY3MvVjFfNV9QcmltZXIubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1Yx
XzVfUHJpbWVyLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5NjBkMmNlNGMzNDRmZDM5MjMxN2JkYjAzOWZkNGIz
YjE4Y2M0MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2Nz
L1YxXzVfUHJpbWVyLm1kCkBAIC0wLDAgKzEsNDk3IEBACisKKworIyBJbnRyb2R1Y3Rpb246IFdo
eSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrPyAjCisKK19Hb29nbGUgQysrIFRlc3Rpbmcg
RnJhbWV3b3JrXyBoZWxwcyB5b3Ugd3JpdGUgYmV0dGVyIEMrKyB0ZXN0cy4KKworTm8gbWF0dGVy
IHdoZXRoZXIgeW91IHdvcmsgb24gTGludXgsIFdpbmRvd3MsIG9yIGEgTWFjLCBpZiB5b3Ugd3Jp
dGUgQysrIGNvZGUsCitHb29nbGUgVGVzdCBjYW4gaGVscCB5b3UuCisKK1NvIHdoYXQgbWFrZXMg
YSBnb29kIHRlc3QsIGFuZCBob3cgZG9lcyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGZp
dCBpbj8gV2UgYmVsaWV2ZToKKyAgMS4gVGVzdHMgc2hvdWxkIGJlIF9pbmRlcGVuZGVudF8gYW5k
IF9yZXBlYXRhYmxlXy4gSXQncyBhIHBhaW4gdG8gZGVidWcgYSB0ZXN0IHRoYXQgc3VjY2VlZHMg
b3IgZmFpbHMgYXMgYSByZXN1bHQgb2Ygb3RoZXIgdGVzdHMuICBHb29nbGUgQysrIFRlc3Rpbmcg
RnJhbWV3b3JrIGlzb2xhdGVzIHRoZSB0ZXN0cyBieSBydW5uaW5nIGVhY2ggb2YgdGhlbSBvbiBh
IGRpZmZlcmVudCBvYmplY3QuIFdoZW4gYSB0ZXN0IGZhaWxzLCBHb29nbGUgQysrIFRlc3Rpbmcg
RnJhbWV3b3JrIGFsbG93cyB5b3UgdG8gcnVuIGl0IGluIGlzb2xhdGlvbiBmb3IgcXVpY2sgZGVi
dWdnaW5nLgorICAxLiBUZXN0cyBzaG91bGQgYmUgd2VsbCBfb3JnYW5pemVkXyBhbmQgcmVmbGVj
dCB0aGUgc3RydWN0dXJlIG9mIHRoZSB0ZXN0ZWQgY29kZS4gIEdvb2dsZSBDKysgVGVzdGluZyBG
cmFtZXdvcmsgZ3JvdXBzIHJlbGF0ZWQgdGVzdHMgaW50byB0ZXN0IGNhc2VzIHRoYXQgY2FuIHNo
YXJlIGRhdGEgYW5kIHN1YnJvdXRpbmVzLiBUaGlzIGNvbW1vbiBwYXR0ZXJuIGlzIGVhc3kgdG8g
cmVjb2duaXplIGFuZCBtYWtlcyB0ZXN0cyBlYXN5IHRvIG1haW50YWluLiBTdWNoIGNvbnNpc3Rl
bmN5IGlzIGVzcGVjaWFsbHkgaGVscGZ1bCB3aGVuIHBlb3BsZSBzd2l0Y2ggcHJvamVjdHMgYW5k
IHN0YXJ0IHRvIHdvcmsgb24gYSBuZXcgY29kZSBiYXNlLgorICAxLiBUZXN0cyBzaG91bGQgYmUg
X3BvcnRhYmxlXyBhbmQgX3JldXNhYmxlXy4gVGhlIG9wZW4tc291cmNlIGNvbW11bml0eSBoYXMg
YSBsb3Qgb2YgY29kZSB0aGF0IGlzIHBsYXRmb3JtLW5ldXRyYWwsIGl0cyB0ZXN0cyBzaG91bGQg
YWxzbyBiZSBwbGF0Zm9ybS1uZXV0cmFsLiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayB3
b3JrcyBvbiBkaWZmZXJlbnQgT1Nlcywgd2l0aCBkaWZmZXJlbnQgY29tcGlsZXJzIChnY2MsIE1T
VkMsIGFuZCBvdGhlcnMpLCB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucywgc28gR29vZ2xlIEMr
KyBUZXN0aW5nIEZyYW1ld29yayB0ZXN0cyBjYW4gZWFzaWx5IHdvcmsgd2l0aCBhIHZhcmlldHkg
b2YgY29uZmlndXJhdGlvbnMuICAoTm90ZSB0aGF0IHRoZSBjdXJyZW50IHJlbGVhc2Ugb25seSBj
b250YWlucyBidWlsZCBzY3JpcHRzIGZvciBMaW51eCAtIHdlIGFyZSBhY3RpdmVseSB3b3JraW5n
IG9uIHNjcmlwdHMgZm9yIG90aGVyIHBsYXRmb3Jtcy4pCisgIDEuIFdoZW4gdGVzdHMgZmFpbCwg
dGhleSBzaG91bGQgcHJvdmlkZSBhcyBtdWNoIF9pbmZvcm1hdGlvbl8gYWJvdXQgdGhlIHByb2Js
ZW0gYXMgcG9zc2libGUuIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgZG9lc24ndCBzdG9w
IGF0IHRoZSBmaXJzdCB0ZXN0IGZhaWx1cmUuIEluc3RlYWQsIGl0IG9ubHkgc3RvcHMgdGhlIGN1
cnJlbnQgdGVzdCBhbmQgY29udGludWVzIHdpdGggdGhlIG5leHQuIFlvdSBjYW4gYWxzbyBzZXQg
dXAgdGVzdHMgdGhhdCByZXBvcnQgbm9uLWZhdGFsIGZhaWx1cmVzIGFmdGVyIHdoaWNoIHRoZSBj
dXJyZW50IHRlc3QgY29udGludWVzLiBUaHVzLCB5b3UgY2FuIGRldGVjdCBhbmQgZml4IG11bHRp
cGxlIGJ1Z3MgaW4gYSBzaW5nbGUgcnVuLWVkaXQtY29tcGlsZSBjeWNsZS4KKyAgMS4gVGhlIHRl
c3RpbmcgZnJhbWV3b3JrIHNob3VsZCBsaWJlcmF0ZSB0ZXN0IHdyaXRlcnMgZnJvbSBob3VzZWtl
ZXBpbmcgY2hvcmVzIGFuZCBsZXQgdGhlbSBmb2N1cyBvbiB0aGUgdGVzdCBfY29udGVudF8uICBH
b29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGF1dG9tYXRpY2FsbHkga2VlcHMgdHJhY2sgb2Yg
YWxsIHRlc3RzIGRlZmluZWQsIGFuZCBkb2Vzbid0IHJlcXVpcmUgdGhlIHVzZXIgdG8gZW51bWVy
YXRlIHRoZW0gaW4gb3JkZXIgdG8gcnVuIHRoZW0uCisgIDEuIFRlc3RzIHNob3VsZCBiZSBfZmFz
dF8uIFdpdGggR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yaywgeW91IGNhbiByZXVzZSBzaGFy
ZWQgcmVzb3VyY2VzIGFjcm9zcyB0ZXN0cyBhbmQgcGF5IGZvciB0aGUgc2V0LXVwL3RlYXItZG93
biBvbmx5IG9uY2UsIHdpdGhvdXQgbWFraW5nIHRlc3RzIGRlcGVuZCBvbiBlYWNoIG90aGVyLgor
CitTaW5jZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGlzIGJhc2VkIG9uIHRoZSBwb3B1
bGFyIHhVbml0CithcmNoaXRlY3R1cmUsIHlvdSdsbCBmZWVsIHJpZ2h0IGF0IGhvbWUgaWYgeW91
J3ZlIHVzZWQgSlVuaXQgb3IgUHlVbml0IGJlZm9yZS4KK0lmIG5vdCwgaXQgd2lsbCB0YWtlIHlv
dSBhYm91dCAxMCBtaW51dGVzIHRvIGxlYXJuIHRoZSBiYXNpY3MgYW5kIGdldCBzdGFydGVkLgor
U28gbGV0J3MgZ28hCisKK19Ob3RlOl8gV2Ugc29tZXRpbWVzIHJlZmVyIHRvIEdvb2dsZSBDKysg
VGVzdGluZyBGcmFtZXdvcmsgaW5mb3JtYWxseQorYXMgX0dvb2dsZSBUZXN0Xy4KKworIyBTZXR0
aW5nIHVwIGEgTmV3IFRlc3QgUHJvamVjdCAjCisKK1RvIHdyaXRlIGEgdGVzdCBwcm9ncmFtIHVz
aW5nIEdvb2dsZSBUZXN0LCB5b3UgbmVlZCB0byBjb21waWxlIEdvb2dsZQorVGVzdCBpbnRvIGEg
bGlicmFyeSBhbmQgbGluayB5b3VyIHRlc3Qgd2l0aCBpdC4gIFdlIHByb3ZpZGUgYnVpbGQKK2Zp
bGVzIGZvciBzb21lIHBvcHVsYXIgYnVpbGQgc3lzdGVtcyAoYG1zdmMvYCBmb3IgVmlzdWFsIFN0
dWRpbywKK2B4Y29kZS9gIGZvciBNYWMgWGNvZGUsIGBtYWtlL2AgZm9yIEdOVSBtYWtlLCBgY29k
ZWdlYXIvYCBmb3IgQm9ybGFuZAorQysrIEJ1aWxkZXIsIGFuZCB0aGUgYXV0b3Rvb2xzIHNjcmlw
dCBpbiB0aGUKK0dvb2dsZSBUZXN0IHJvb3QgZGlyZWN0b3J5KS4gIElmIHlvdXIgYnVpbGQgc3lz
dGVtIGlzIG5vdCBvbiB0aGlzCitsaXN0LCB5b3UgY2FuIHRha2UgYSBsb29rIGF0IGBtYWtlL01h
a2VmaWxlYCB0byBsZWFybiBob3cgR29vZ2xlIFRlc3QKK3Nob3VsZCBiZSBjb21waWxlZCAoYmFz
aWNhbGx5IHlvdSB3YW50IHRvIGNvbXBpbGUgYHNyYy9ndGVzdC1hbGwuY2NgCit3aXRoIGBHVEVT
VF9ST09UYCBhbmQgYEdURVNUX1JPT1QvaW5jbHVkZWAgaW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0
aCwKK3doZXJlIGBHVEVTVF9ST09UYCBpcyB0aGUgR29vZ2xlIFRlc3Qgcm9vdCBkaXJlY3Rvcnkp
LgorCitPbmNlIHlvdSBhcmUgYWJsZSB0byBjb21waWxlIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5
LCB5b3Ugc2hvdWxkCitjcmVhdGUgYSBwcm9qZWN0IG9yIGJ1aWxkIHRhcmdldCBmb3IgeW91ciB0
ZXN0IHByb2dyYW0uICBNYWtlIHN1cmUgeW91CitoYXZlIGBHVEVTVF9ST09UL2luY2x1ZGVgIGlu
IHRoZSBoZWFkZXIgc2VhcmNoIHBhdGggc28gdGhhdCB0aGUKK2NvbXBpbGVyIGNhbiBmaW5kIGA8
Z3Rlc3QvZ3Rlc3QuaD5gIHdoZW4gY29tcGlsaW5nIHlvdXIgdGVzdC4gIFNldCB1cAoreW91ciB0
ZXN0IHByb2plY3QgdG8gbGluayB3aXRoIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5IChmb3IgZXhh
bXBsZSwKK2luIFZpc3VhbCBTdHVkaW8sIHRoaXMgaXMgZG9uZSBieSBhZGRpbmcgYSBkZXBlbmRl
bmN5IG9uCitgZ3Rlc3QudmNwcm9qYCkuCisKK0lmIHlvdSBzdGlsbCBoYXZlIHF1ZXN0aW9ucywg
dGFrZSBhIGxvb2sgYXQgaG93IEdvb2dsZSBUZXN0J3Mgb3duCit0ZXN0cyBhcmUgYnVpbHQgYW5k
IHVzZSB0aGVtIGFzIGV4YW1wbGVzLgorCisjIEJhc2ljIENvbmNlcHRzICMKKworV2hlbiB1c2lu
ZyBHb29nbGUgVGVzdCwgeW91IHN0YXJ0IGJ5IHdyaXRpbmcgX2Fzc2VydGlvbnNfLCB3aGljaCBh
cmUgc3RhdGVtZW50cwordGhhdCBjaGVjayB3aGV0aGVyIGEgY29uZGl0aW9uIGlzIHRydWUuIEFu
IGFzc2VydGlvbidzIHJlc3VsdCBjYW4gYmUgX3N1Y2Nlc3NfLAorX25vbmZhdGFsIGZhaWx1cmVf
LCBvciBfZmF0YWwgZmFpbHVyZV8uIElmIGEgZmF0YWwgZmFpbHVyZSBvY2N1cnMsIGl0IGFib3J0
cwordGhlIGN1cnJlbnQgZnVuY3Rpb247IG90aGVyd2lzZSB0aGUgcHJvZ3JhbSBjb250aW51ZXMg
bm9ybWFsbHkuCisKK19UZXN0c18gdXNlIGFzc2VydGlvbnMgdG8gdmVyaWZ5IHRoZSB0ZXN0ZWQg
Y29kZSdzIGJlaGF2aW9yLiBJZiBhIHRlc3QgY3Jhc2hlcworb3IgaGFzIGEgZmFpbGVkIGFzc2Vy
dGlvbiwgdGhlbiBpdCBfZmFpbHNfOyBvdGhlcndpc2UgaXQgX3N1Y2NlZWRzXy4KKworQSBfdGVz
dCBjYXNlXyBjb250YWlucyBvbmUgb3IgbWFueSB0ZXN0cy4gWW91IHNob3VsZCBncm91cCB5b3Vy
IHRlc3RzIGludG8gdGVzdAorY2FzZXMgdGhhdCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhl
IHRlc3RlZCBjb2RlLiBXaGVuIG11bHRpcGxlIHRlc3RzIGluIGEKK3Rlc3QgY2FzZSBuZWVkIHRv
IHNoYXJlIGNvbW1vbiBvYmplY3RzIGFuZCBzdWJyb3V0aW5lcywgeW91IGNhbiBwdXQgdGhlbSBp
bnRvIGEKK190ZXN0IGZpeHR1cmVfIGNsYXNzLgorCitBIF90ZXN0IHByb2dyYW1fIGNhbiBjb250
YWluIG11bHRpcGxlIHRlc3QgY2FzZXMuCisKK1dlJ2xsIG5vdyBleHBsYWluIGhvdyB0byB3cml0
ZSBhIHRlc3QgcHJvZ3JhbSwgc3RhcnRpbmcgYXQgdGhlIGluZGl2aWR1YWwKK2Fzc2VydGlvbiBs
ZXZlbCBhbmQgYnVpbGRpbmcgdXAgdG8gdGVzdHMgYW5kIHRlc3QgY2FzZXMuCisKKyMgQXNzZXJ0
aW9ucyAjCisKK0dvb2dsZSBUZXN0IGFzc2VydGlvbnMgYXJlIG1hY3JvcyB0aGF0IHJlc2VtYmxl
IGZ1bmN0aW9uIGNhbGxzLiBZb3UgdGVzdCBhCitjbGFzcyBvciBmdW5jdGlvbiBieSBtYWtpbmcg
YXNzZXJ0aW9ucyBhYm91dCBpdHMgYmVoYXZpb3IuIFdoZW4gYW4gYXNzZXJ0aW9uCitmYWlscywg
R29vZ2xlIFRlc3QgcHJpbnRzIHRoZSBhc3NlcnRpb24ncyBzb3VyY2UgZmlsZSBhbmQgbGluZSBu
dW1iZXIgbG9jYXRpb24sCithbG9uZyB3aXRoIGEgZmFpbHVyZSBtZXNzYWdlLiBZb3UgbWF5IGFs
c28gc3VwcGx5IGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZQord2hpY2ggd2lsbCBiZSBhcHBlbmRl
ZCB0byBHb29nbGUgVGVzdCdzIG1lc3NhZ2UuCisKK1RoZSBhc3NlcnRpb25zIGNvbWUgaW4gcGFp
cnMgdGhhdCB0ZXN0IHRoZSBzYW1lIHRoaW5nIGJ1dCBoYXZlIGRpZmZlcmVudAorZWZmZWN0cyBv
biB0aGUgY3VycmVudCBmdW5jdGlvbi4gYEFTU0VSVF8qYCB2ZXJzaW9ucyBnZW5lcmF0ZSBmYXRh
bCBmYWlsdXJlcword2hlbiB0aGV5IGZhaWwsIGFuZCAqKmFib3J0IHRoZSBjdXJyZW50IGZ1bmN0
aW9uKiouIGBFWFBFQ1RfKmAgdmVyc2lvbnMgZ2VuZXJhdGUKK25vbmZhdGFsIGZhaWx1cmVzLCB3
aGljaCBkb24ndCBhYm9ydCB0aGUgY3VycmVudCBmdW5jdGlvbi4gVXN1YWxseSBgRVhQRUNUXypg
CithcmUgcHJlZmVycmVkLCBhcyB0aGV5IGFsbG93IG1vcmUgdGhhbiBvbmUgZmFpbHVyZXMgdG8g
YmUgcmVwb3J0ZWQgaW4gYSB0ZXN0LgorSG93ZXZlciwgeW91IHNob3VsZCB1c2UgYEFTU0VSVF8q
YCBpZiBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gY29udGludWUgd2hlbgordGhlIGFzc2VydGlv
biBpbiBxdWVzdGlvbiBmYWlscy4KKworU2luY2UgYSBmYWlsZWQgYEFTU0VSVF8qYCByZXR1cm5z
IGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gaW1tZWRpYXRlbHksCitwb3NzaWJseSBza2lwcGlu
ZyBjbGVhbi11cCBjb2RlIHRoYXQgY29tZXMgYWZ0ZXIgaXQsIGl0IG1heSBjYXVzZSBhIHNwYWNl
IGxlYWsuCitEZXBlbmRpbmcgb24gdGhlIG5hdHVyZSBvZiB0aGUgbGVhaywgaXQgbWF5IG9yIG1h
eSBub3QgYmUgd29ydGggZml4aW5nIC0gc28KK2tlZXAgdGhpcyBpbiBtaW5kIGlmIHlvdSBnZXQg
YSBoZWFwIGNoZWNrZXIgZXJyb3IgaW4gYWRkaXRpb24gdG8gYXNzZXJ0aW9uCitlcnJvcnMuCisK
K1RvIHByb3ZpZGUgYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlLCBzaW1wbHkgc3RyZWFtIGl0IGlu
dG8gdGhlIG1hY3JvIHVzaW5nIHRoZQorYDw8YCBvcGVyYXRvciwgb3IgYSBzZXF1ZW5jZSBvZiBz
dWNoIG9wZXJhdG9ycy4gQW4gZXhhbXBsZToKK2BgYAorQVNTRVJUX0VRKHguc2l6ZSgpLCB5LnNp
emUoKSkgPDwgIlZlY3RvcnMgeCBhbmQgeSBhcmUgb2YgdW5lcXVhbCBsZW5ndGgiOworCitmb3Ig
KGludCBpID0gMDsgaSA8IHguc2l6ZSgpOyArK2kpIHsKKyAgRVhQRUNUX0VRKHhbaV0sIHlbaV0p
IDw8ICJWZWN0b3JzIHggYW5kIHkgZGlmZmVyIGF0IGluZGV4ICIgPDwgaTsKK30KK2BgYAorCitB
bnl0aGluZyB0aGF0IGNhbiBiZSBzdHJlYW1lZCB0byBhbiBgb3N0cmVhbWAgY2FuIGJlIHN0cmVh
bWVkIHRvIGFuIGFzc2VydGlvbgorbWFjcm8tLWluIHBhcnRpY3VsYXIsIEMgc3RyaW5ncyBhbmQg
YHN0cmluZ2Agb2JqZWN0cy4gSWYgYSB3aWRlIHN0cmluZworKGB3Y2hhcl90KmAsIGBUQ0hBUipg
IGluIGBVTklDT0RFYCBtb2RlIG9uIFdpbmRvd3MsIG9yIGBzdGQ6OndzdHJpbmdgKSBpcworc3Ry
ZWFtZWQgdG8gYW4gYXNzZXJ0aW9uLCBpdCB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gVVRGLTggd2hl
biBwcmludGVkLgorCisjIyBCYXNpYyBBc3NlcnRpb25zICMjCisKK1RoZXNlIGFzc2VydGlvbnMg
ZG8gYmFzaWMgdHJ1ZS9mYWxzZSBjb25kaXRpb24gdGVzdGluZy4KK3wgKipGYXRhbCBhc3NlcnRp
b24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8
IGBBU1NFUlRfVFJVRShgX2NvbmRpdGlvbl9gKWA7ICB8IGBFWFBFQ1RfVFJVRShgX2NvbmRpdGlv
bl9gKWA7ICAgfCBfY29uZGl0aW9uXyBpcyB0cnVlIHwKK3wgYEFTU0VSVF9GQUxTRShgX2NvbmRp
dGlvbl9gKWA7IHwgYEVYUEVDVF9GQUxTRShgX2NvbmRpdGlvbl9gKWA7ICB8IF9jb25kaXRpb25f
IGlzIGZhbHNlIHwKKworUmVtZW1iZXIsIHdoZW4gdGhleSBmYWlsLCBgQVNTRVJUXypgIHlpZWxk
cyBhIGZhdGFsIGZhaWx1cmUgYW5kCityZXR1cm5zIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24s
IHdoaWxlIGBFWFBFQ1RfKmAgeWllbGRzIGEgbm9uZmF0YWwKK2ZhaWx1cmUsIGFsbG93aW5nIHRo
ZSBmdW5jdGlvbiB0byBjb250aW51ZSBydW5uaW5nLiBJbiBlaXRoZXIgY2FzZSwgYW4KK2Fzc2Vy
dGlvbiBmYWlsdXJlIG1lYW5zIGl0cyBjb250YWluaW5nIHRlc3QgZmFpbHMuCisKK19BdmFpbGFi
aWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBCaW5hcnkgQ29tcGFyaXNvbiAjIwor
CitUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGFzc2VydGlvbnMgdGhhdCBjb21wYXJlIHR3byB2YWx1
ZXMuCisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAq
KlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8YEFTU0VSVF9FUShgX2V4cGVjdGVkX2AsIGBfYWN0dWFs
X2ApO2B8YEVYUEVDVF9FUShgX2V4cGVjdGVkX2AsIGBfYWN0dWFsX2ApO2B8IF9leHBlY3RlZF8g
YD09YCBfYWN0dWFsXyB8Cit8YEFTU0VSVF9ORShgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8
YEVYUEVDVF9ORShgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8IF92YWwxXyBgIT1gIF92YWwy
XyB8Cit8YEFTU0VSVF9MVChgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9MVChg
X3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8IF92YWwxXyBgPGAgX3ZhbDJfIHwKK3xgQVNTRVJU
X0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHxgRVhQRUNUX0xFKGBfdmFsMV9gLCBgX3Zh
bDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA8PWAgX3ZhbDJfIHwKK3xgQVNTRVJUX0dUKGBfdmFsMV9g
LCBgX3ZhbDJfYCk7YCAgICAgIHxgRVhQRUNUX0dUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAg
IHwgX3ZhbDFfIGA+YCBfdmFsMl8gfAorfGBBU1NFUlRfR0UoYF92YWwxX2AsIGBfdmFsMl9gKTtg
ICAgICAgfGBFWFBFQ1RfR0UoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfCBfdmFsMV8gYD49
YCBfdmFsMl8gfAorCitJbiB0aGUgZXZlbnQgb2YgYSBmYWlsdXJlLCBHb29nbGUgVGVzdCBwcmlu
dHMgYm90aCBfdmFsMV8gYW5kIF92YWwyXworLiBJbiBgQVNTRVJUX0VRKmAgYW5kIGBFWFBFQ1Rf
RVEqYCAoYW5kIGFsbCBvdGhlciBlcXVhbGl0eSBhc3NlcnRpb25zCit3ZSdsbCBpbnRyb2R1Y2Ug
bGF0ZXIpLCB5b3Ugc2hvdWxkIHB1dCB0aGUgZXhwcmVzc2lvbiB5b3Ugd2FudCB0byB0ZXN0Citp
biB0aGUgcG9zaXRpb24gb2YgX2FjdHVhbF8sIGFuZCBwdXQgaXRzIGV4cGVjdGVkIHZhbHVlIGlu
IF9leHBlY3RlZF8sCithcyBHb29nbGUgVGVzdCdzIGZhaWx1cmUgbWVzc2FnZXMgYXJlIG9wdGlt
aXplZCBmb3IgdGhpcyBjb252ZW50aW9uLgorCitWYWx1ZSBhcmd1bWVudHMgbXVzdCBiZSBjb21w
YXJhYmxlIGJ5IHRoZSBhc3NlcnRpb24ncyBjb21wYXJpc29uIG9wZXJhdG9yIG9yCit5b3UnbGwg
Z2V0IGEgY29tcGlsZXIgZXJyb3IuIFZhbHVlcyBtdXN0IGFsc28gc3VwcG9ydCB0aGUgYDw8YCBv
cGVyYXRvciBmb3IKK3N0cmVhbWluZyB0byBhbiBgb3N0cmVhbWAuIEFsbCBidWlsdC1pbiB0eXBl
cyBzdXBwb3J0IHRoaXMuCisKK1RoZXNlIGFzc2VydGlvbnMgY2FuIHdvcmsgd2l0aCBhIHVzZXIt
ZGVmaW5lZCB0eXBlLCBidXQgb25seSBpZiB5b3UgZGVmaW5lIHRoZQorY29ycmVzcG9uZGluZyBj
b21wYXJpc29uIG9wZXJhdG9yIChlLmcuIGA9PWAsIGA8YCwgZXRjKS4gIElmIHRoZSBjb3JyZXNw
b25kaW5nCitvcGVyYXRvciBpcyBkZWZpbmVkLCBwcmVmZXIgdXNpbmcgdGhlIGBBU1NFUlRfKigp
YCBtYWNyb3MgYmVjYXVzZSB0aGV5IHdpbGwKK3ByaW50IG91dCBub3Qgb25seSB0aGUgcmVzdWx0
IG9mIHRoZSBjb21wYXJpc29uLCBidXQgdGhlIHR3byBvcGVyYW5kcyBhcyB3ZWxsLgorCitBcmd1
bWVudHMgYXJlIGFsd2F5cyBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLiBUaGVyZWZvcmUsIGl0J3Mg
T0sgZm9yIHRoZQorYXJndW1lbnRzIHRvIGhhdmUgc2lkZSBlZmZlY3RzLiBIb3dldmVyLCBhcyB3
aXRoIGFueSBvcmRpbmFyeSBDL0MrKyBmdW5jdGlvbiwKK3RoZSBhcmd1bWVudHMnIGV2YWx1YXRp
b24gb3JkZXIgaXMgdW5kZWZpbmVkIChpLmUuIHRoZSBjb21waWxlciBpcyBmcmVlIHRvCitjaG9v
c2UgYW55IG9yZGVyKSBhbmQgeW91ciBjb2RlIHNob3VsZCBub3QgZGVwZW5kIG9uIGFueSBwYXJ0
aWN1bGFyIGFyZ3VtZW50CitldmFsdWF0aW9uIG9yZGVyLgorCitgQVNTRVJUX0VRKClgIGRvZXMg
cG9pbnRlciBlcXVhbGl0eSBvbiBwb2ludGVycy4gSWYgdXNlZCBvbiB0d28gQyBzdHJpbmdzLCBp
dAordGVzdHMgaWYgdGhleSBhcmUgaW4gdGhlIHNhbWUgbWVtb3J5IGxvY2F0aW9uLCBub3QgaWYg
dGhleSBoYXZlIHRoZSBzYW1lIHZhbHVlLgorVGhlcmVmb3JlLCBpZiB5b3Ugd2FudCB0byBjb21w
YXJlIEMgc3RyaW5ncyAoZS5nLiBgY29uc3QgY2hhcipgKSBieSB2YWx1ZSwgdXNlCitgQVNTRVJU
X1NUUkVRKClgICwgd2hpY2ggd2lsbCBiZSBkZXNjcmliZWQgbGF0ZXIgb24uIEluIHBhcnRpY3Vs
YXIsIHRvIGFzc2VydAordGhhdCBhIEMgc3RyaW5nIGlzIGBOVUxMYCwgdXNlIGBBU1NFUlRfU1RS
RVEoTlVMTCwgY19zdHJpbmcpYCAuIEhvd2V2ZXIsIHRvCitjb21wYXJlIHR3byBgc3RyaW5nYCBv
YmplY3RzLCB5b3Ugc2hvdWxkIHVzZSBgQVNTRVJUX0VRYC4KKworTWFjcm9zIGluIHRoaXMgc2Vj
dGlvbiB3b3JrIHdpdGggYm90aCBuYXJyb3cgYW5kIHdpZGUgc3RyaW5nIG9iamVjdHMgKGBzdHJp
bmdgCithbmQgYHdzdHJpbmdgKS4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBN
YWMuCisKKyMjIFN0cmluZyBDb21wYXJpc29uICMjCisKK1RoZSBhc3NlcnRpb25zIGluIHRoaXMg
Z3JvdXAgY29tcGFyZSB0d28gKipDIHN0cmluZ3MqKi4gSWYgeW91IHdhbnQgdG8gY29tcGFyZQor
dHdvIGBzdHJpbmdgIG9iamVjdHMsIHVzZSBgRVhQRUNUX0VRYCwgYEVYUEVDVF9ORWAsIGFuZCBl
dGMgaW5zdGVhZC4KKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRp
b24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9TVFJFUShgX2V4cGVjdGVk
XF9zdHJfYCwgYF9hY3R1YWxcX3N0cl9gKTtgICAgIHwgYEVYUEVDVF9TVFJFUShgX2V4cGVjdGVk
XF9zdHJfYCwgYF9hY3R1YWxcX3N0cl9gKTtgICAgICB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUg
dGhlIHNhbWUgY29udGVudCB8Cit8IGBBU1NFUlRfU1RSTkUoYF9zdHIxX2AsIGBfc3RyMl9gKTtg
ICAgIHwgYEVYUEVDVF9TVFJORShgX3N0cjFfYCwgYF9zdHIyX2ApO2AgICAgIHwgdGhlIHR3byBD
IHN0cmluZ3MgaGF2ZSBkaWZmZXJlbnQgY29udGVudCB8Cit8IGBBU1NFUlRfU1RSQ0FTRUVRKGBf
ZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2B8IGBFWFBFQ1RfU1RSQ0FTRUVRKGBf
ZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgfCB0aGUgdHdvIEMgc3RyaW5ncyBo
YXZlIHRoZSBzYW1lIGNvbnRlbnQsIGlnbm9yaW5nIGNhc2UgfAorfCBgQVNTRVJUX1NUUkNBU0VO
RShgX3N0cjFfYCwgYF9zdHIyX2ApO2B8IGBFWFBFQ1RfU1RSQ0FTRU5FKGBfc3RyMV9gLCBgX3N0
cjJfYCk7YCB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUgZGlmZmVyZW50IGNvbnRlbnQsIGlnbm9y
aW5nIGNhc2UgfAorCitOb3RlIHRoYXQgIkNBU0UiIGluIGFuIGFzc2VydGlvbiBuYW1lIG1lYW5z
IHRoYXQgY2FzZSBpcyBpZ25vcmVkLgorCitgKlNUUkVRKmAgYW5kIGAqU1RSTkUqYCBhbHNvIGFj
Y2VwdCB3aWRlIEMgc3RyaW5ncyAoYHdjaGFyX3QqYCkuIElmIGEKK2NvbXBhcmlzb24gb2YgdHdv
IHdpZGUgc3RyaW5ncyBmYWlscywgdGhlaXIgdmFsdWVzIHdpbGwgYmUgcHJpbnRlZCBhcyBVVEYt
OAorbmFycm93IHN0cmluZ3MuCisKK0EgYE5VTExgIHBvaW50ZXIgYW5kIGFuIGVtcHR5IHN0cmlu
ZyBhcmUgY29uc2lkZXJlZCBfZGlmZmVyZW50Xy4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBX
aW5kb3dzLCBNYWMuCisKK1NlZSBhbHNvOiBGb3IgbW9yZSBzdHJpbmcgY29tcGFyaXNvbiB0cmlj
a3MgKHN1YnN0cmluZywgcHJlZml4LCBzdWZmaXgsIGFuZAorcmVndWxhciBleHByZXNzaW9uIG1h
dGNoaW5nLCBmb3IgZXhhbXBsZSksIHNlZSB0aGUgW0FkdmFuY2VkR3VpZGUgQWR2YW5jZWQKK0dv
b2dsZSBUZXN0IEd1aWRlXS4KKworIyBTaW1wbGUgVGVzdHMgIworCitUbyBjcmVhdGUgYSB0ZXN0
OgorICAxLiBVc2UgdGhlIGBURVNUKClgIG1hY3JvIHRvIGRlZmluZSBhbmQgbmFtZSBhIHRlc3Qg
ZnVuY3Rpb24sIFRoZXNlIGFyZSBvcmRpbmFyeSBDKysgZnVuY3Rpb25zIHRoYXQgZG9uJ3QgcmV0
dXJuIGEgdmFsdWUuCisgIDEuIEluIHRoaXMgZnVuY3Rpb24sIGFsb25nIHdpdGggYW55IHZhbGlk
IEMrKyBzdGF0ZW1lbnRzIHlvdSB3YW50IHRvIGluY2x1ZGUsIHVzZSB0aGUgdmFyaW91cyBHb29n
bGUgVGVzdCBhc3NlcnRpb25zIHRvIGNoZWNrIHZhbHVlcy4KKyAgMS4gVGhlIHRlc3QncyByZXN1
bHQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgYXNzZXJ0aW9uczsgaWYgYW55IGFzc2VydGlvbiBpbiB0
aGUgdGVzdCBmYWlscyAoZWl0aGVyIGZhdGFsbHkgb3Igbm9uLWZhdGFsbHkpLCBvciBpZiB0aGUg
dGVzdCBjcmFzaGVzLCB0aGUgZW50aXJlIHRlc3QgZmFpbHMuIE90aGVyd2lzZSwgaXQgc3VjY2Vl
ZHMuCisKK2BgYAorVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSB7CisgLi4uIHRlc3Qg
Ym9keSAuLi4KK30KK2BgYAorCisKK2BURVNUKClgIGFyZ3VtZW50cyBnbyBmcm9tIGdlbmVyYWwg
dG8gc3BlY2lmaWMuIFRoZSBfZmlyc3RfIGFyZ3VtZW50IGlzIHRoZQorbmFtZSBvZiB0aGUgdGVz
dCBjYXNlLCBhbmQgdGhlIF9zZWNvbmRfIGFyZ3VtZW50IGlzIHRoZSB0ZXN0J3MgbmFtZSB3aXRo
aW4gdGhlCit0ZXN0IGNhc2UuIFJlbWVtYmVyIHRoYXQgYSB0ZXN0IGNhc2UgY2FuIGNvbnRhaW4g
YW55IG51bWJlciBvZiBpbmRpdmlkdWFsCit0ZXN0cy4gQSB0ZXN0J3MgX2Z1bGwgbmFtZV8gY29u
c2lzdHMgb2YgaXRzIGNvbnRhaW5pbmcgdGVzdCBjYXNlIGFuZCBpdHMKK2luZGl2aWR1YWwgbmFt
ZS4gVGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcyBjYW4gaGF2ZSB0aGUgc2FtZSBpbmRp
dmlkdWFsCituYW1lLgorCitGb3IgZXhhbXBsZSwgbGV0J3MgdGFrZSBhIHNpbXBsZSBpbnRlZ2Vy
IGZ1bmN0aW9uOgorYGBgCitpbnQgRmFjdG9yaWFsKGludCBuKTsgLy8gUmV0dXJucyB0aGUgZmFj
dG9yaWFsIG9mIG4KK2BgYAorCitBIHRlc3QgY2FzZSBmb3IgdGhpcyBmdW5jdGlvbiBtaWdodCBs
b29rIGxpa2U6CitgYGAKKy8vIFRlc3RzIGZhY3RvcmlhbCBvZiAwLgorVEVTVChGYWN0b3JpYWxU
ZXN0LCBIYW5kbGVzWmVyb0lucHV0KSB7CisgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoMCkpOwor
fQorCisvLyBUZXN0cyBmYWN0b3JpYWwgb2YgcG9zaXRpdmUgbnVtYmVycy4KK1RFU1QoRmFjdG9y
aWFsVGVzdCwgSGFuZGxlc1Bvc2l0aXZlSW5wdXQpIHsKKyAgRVhQRUNUX0VRKDEsIEZhY3Rvcmlh
bCgxKSk7CisgIEVYUEVDVF9FUSgyLCBGYWN0b3JpYWwoMikpOworICBFWFBFQ1RfRVEoNiwgRmFj
dG9yaWFsKDMpKTsKKyAgRVhQRUNUX0VRKDQwMzIwLCBGYWN0b3JpYWwoOCkpOworfQorYGBgCisK
K0dvb2dsZSBUZXN0IGdyb3VwcyB0aGUgdGVzdCByZXN1bHRzIGJ5IHRlc3QgY2FzZXMsIHNvIGxv
Z2ljYWxseS1yZWxhdGVkIHRlc3RzCitzaG91bGQgYmUgaW4gdGhlIHNhbWUgdGVzdCBjYXNlOyBp
biBvdGhlciB3b3JkcywgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZWlyCitgVEVTVCgpYCBzaG91
bGQgYmUgdGhlIHNhbWUuIEluIHRoZSBhYm92ZSBleGFtcGxlLCB3ZSBoYXZlIHR3byB0ZXN0cywK
K2BIYW5kbGVzWmVyb0lucHV0YCBhbmQgYEhhbmRsZXNQb3NpdGl2ZUlucHV0YCwgdGhhdCBiZWxv
bmcgdG8gdGhlIHNhbWUgdGVzdAorY2FzZSBgRmFjdG9yaWFsVGVzdGAuCisKK19BdmFpbGFiaWxp
dHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIFRlc3QgRml4dHVyZXM6IFVzaW5nIHRoZSBT
YW1lIERhdGEgQ29uZmlndXJhdGlvbiBmb3IgTXVsdGlwbGUgVGVzdHMgIworCitJZiB5b3UgZmlu
ZCB5b3Vyc2VsZiB3cml0aW5nIHR3byBvciBtb3JlIHRlc3RzIHRoYXQgb3BlcmF0ZSBvbiBzaW1p
bGFyIGRhdGEsCit5b3UgY2FuIHVzZSBhIF90ZXN0IGZpeHR1cmVfLiBJdCBhbGxvd3MgeW91IHRv
IHJldXNlIHRoZSBzYW1lIGNvbmZpZ3VyYXRpb24gb2YKK29iamVjdHMgZm9yIHNldmVyYWwgZGlm
ZmVyZW50IHRlc3RzLgorCitUbyBjcmVhdGUgYSBmaXh0dXJlLCBqdXN0OgorICAxLiBEZXJpdmUg
YSBjbGFzcyBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RgIC4gU3RhcnQgaXRzIGJvZHkgd2l0aCBgcHJv
dGVjdGVkOmAgb3IgYHB1YmxpYzpgIGFzIHdlJ2xsIHdhbnQgdG8gYWNjZXNzIGZpeHR1cmUgbWVt
YmVycyBmcm9tIHN1Yi1jbGFzc2VzLgorICAxLiBJbnNpZGUgdGhlIGNsYXNzLCBkZWNsYXJlIGFu
eSBvYmplY3RzIHlvdSBwbGFuIHRvIHVzZS4KKyAgMS4gSWYgbmVjZXNzYXJ5LCB3cml0ZSBhIGRl
ZmF1bHQgY29uc3RydWN0b3Igb3IgYFNldFVwKClgIGZ1bmN0aW9uIHRvIHByZXBhcmUgdGhlIG9i
amVjdHMgZm9yIGVhY2ggdGVzdC4gQSBjb21tb24gbWlzdGFrZSBpcyB0byBzcGVsbCBgU2V0VXAo
KWAgYXMgYFNldHVwKClgIHdpdGggYSBzbWFsbCBgdWAgLSBkb24ndCBsZXQgdGhhdCBoYXBwZW4g
dG8geW91LgorICAxLiBJZiBuZWNlc3NhcnksIHdyaXRlIGEgZGVzdHJ1Y3RvciBvciBgVGVhckRv
d24oKWAgZnVuY3Rpb24gdG8gcmVsZWFzZSBhbnkgcmVzb3VyY2VzIHlvdSBhbGxvY2F0ZWQgaW4g
YFNldFVwKClgIC4gVG8gbGVhcm4gd2hlbiB5b3Ugc2hvdWxkIHVzZSB0aGUgY29uc3RydWN0b3Iv
ZGVzdHJ1Y3RvciBhbmQgd2hlbiB5b3Ugc2hvdWxkIHVzZSBgU2V0VXAoKS9UZWFyRG93bigpYCwg
cmVhZCB0aGlzIFtGQVEgZW50cnldKFYxXzVfRkFRLm1kI3Nob3VsZC1pLXVzZS10aGUtY29uc3Ry
dWN0b3JkZXN0cnVjdG9yLW9mLXRoZS10ZXN0LWZpeHR1cmUtb3ItdGhlLXNldC11cHRlYXItZG93
bi1mdW5jdGlvbikuCisgIDEuIElmIG5lZWRlZCwgZGVmaW5lIHN1YnJvdXRpbmVzIGZvciB5b3Vy
IHRlc3RzIHRvIHNoYXJlLgorCitXaGVuIHVzaW5nIGEgZml4dHVyZSwgdXNlIGBURVNUX0YoKWAg
aW5zdGVhZCBvZiBgVEVTVCgpYCBhcyBpdCBhbGxvd3MgeW91IHRvCithY2Nlc3Mgb2JqZWN0cyBh
bmQgc3Vicm91dGluZXMgaW4gdGhlIHRlc3QgZml4dHVyZToKK2BgYAorVEVTVF9GKHRlc3RfY2Fz
ZV9uYW1lLCB0ZXN0X25hbWUpIHsKKyAuLi4gdGVzdCBib2R5IC4uLgorfQorYGBgCisKK0xpa2Ug
YFRFU1QoKWAsIHRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgdGVzdCBjYXNlIG5hbWUsIGJ1dCBm
b3IgYFRFU1RfRigpYAordGhpcyBtdXN0IGJlIHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGZpeHR1cmUg
Y2xhc3MuIFlvdSd2ZSBwcm9iYWJseSBndWVzc2VkOiBgX0ZgCitpcyBmb3IgZml4dHVyZS4KKwor
VW5mb3J0dW5hdGVseSwgdGhlIEMrKyBtYWNybyBzeXN0ZW0gZG9lcyBub3QgYWxsb3cgdXMgdG8g
Y3JlYXRlIGEgc2luZ2xlIG1hY3JvCit0aGF0IGNhbiBoYW5kbGUgYm90aCB0eXBlcyBvZiB0ZXN0
cy4gVXNpbmcgdGhlIHdyb25nIG1hY3JvIGNhdXNlcyBhIGNvbXBpbGVyCitlcnJvci4KKworQWxz
bywgeW91IG11c3QgZmlyc3QgZGVmaW5lIGEgdGVzdCBmaXh0dXJlIGNsYXNzIGJlZm9yZSB1c2lu
ZyBpdCBpbiBhCitgVEVTVF9GKClgLCBvciB5b3UnbGwgZ2V0IHRoZSBjb21waWxlciBlcnJvciAi
YHZpcnR1YWwgb3V0c2lkZSBjbGFzcworZGVjbGFyYXRpb25gIi4KKworRm9yIGVhY2ggdGVzdCBk
ZWZpbmVkIHdpdGggYFRFU1RfRigpYCwgR29vZ2xlIFRlc3Qgd2lsbDoKKyAgMS4gQ3JlYXRlIGEg
X2ZyZXNoXyB0ZXN0IGZpeHR1cmUgYXQgcnVudGltZQorICAxLiBJbW1lZGlhdGVseSBpbml0aWFs
aXplIGl0IHZpYSBgU2V0VXAoKWAgLAorICAxLiBSdW4gdGhlIHRlc3QKKyAgMS4gQ2xlYW4gdXAg
YnkgY2FsbGluZyBgVGVhckRvd24oKWAKKyAgMS4gRGVsZXRlIHRoZSB0ZXN0IGZpeHR1cmUuICBO
b3RlIHRoYXQgZGlmZmVyZW50IHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBoYXZlIGRpZmZl
cmVudCB0ZXN0IGZpeHR1cmUgb2JqZWN0cywgYW5kIEdvb2dsZSBUZXN0IGFsd2F5cyBkZWxldGVz
IGEgdGVzdCBmaXh0dXJlIGJlZm9yZSBpdCBjcmVhdGVzIHRoZSBuZXh0IG9uZS4gR29vZ2xlIFRl
c3QgZG9lcyBub3QgcmV1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlIGZvciBtdWx0aXBsZSB0ZXN0
cy4gQW55IGNoYW5nZXMgb25lIHRlc3QgbWFrZXMgdG8gdGhlIGZpeHR1cmUgZG8gbm90IGFmZmVj
dCBvdGhlciB0ZXN0cy4KKworQXMgYW4gZXhhbXBsZSwgbGV0J3Mgd3JpdGUgdGVzdHMgZm9yIGEg
RklGTyBxdWV1ZSBjbGFzcyBuYW1lZCBgUXVldWVgLCB3aGljaAoraGFzIHRoZSBmb2xsb3dpbmcg
aW50ZXJmYWNlOgorYGBgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRT4gLy8gRSBpcyB0aGUgZWxlbWVu
dCB0eXBlLgorY2xhc3MgUXVldWUgeworIHB1YmxpYzoKKyAgUXVldWUoKTsKKyAgdm9pZCBFbnF1
ZXVlKGNvbnN0IEUmIGVsZW1lbnQpOworICBFKiBEZXF1ZXVlKCk7IC8vIFJldHVybnMgTlVMTCBp
ZiB0aGUgcXVldWUgaXMgZW1wdHkuCisgIHNpemVfdCBzaXplKCkgY29uc3Q7CisgIC4uLgorfTsK
K2BgYAorCitGaXJzdCwgZGVmaW5lIGEgZml4dHVyZSBjbGFzcy4gQnkgY29udmVudGlvbiwgeW91
IHNob3VsZCBnaXZlIGl0IHRoZSBuYW1lCitgRm9vVGVzdGAgd2hlcmUgYEZvb2AgaXMgdGhlIGNs
YXNzIGJlaW5nIHRlc3RlZC4KK2BgYAorY2xhc3MgUXVldWVUZXN0IDogcHVibGljIDo6dGVzdGlu
Zzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgcTFf
LkVucXVldWUoMSk7CisgICAgcTJfLkVucXVldWUoMik7CisgICAgcTJfLkVucXVldWUoMyk7Cisg
IH0KKworICAvLyB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7fQorCisgIFF1ZXVlPGludD4gcTBf
OworICBRdWV1ZTxpbnQ+IHExXzsKKyAgUXVldWU8aW50PiBxMl87Cit9OworYGBgCisKK0luIHRo
aXMgY2FzZSwgYFRlYXJEb3duKClgIGlzIG5vdCBuZWVkZWQgc2luY2Ugd2UgZG9uJ3QgaGF2ZSB0
byBjbGVhbiB1cCBhZnRlcgorZWFjaCB0ZXN0LCBvdGhlciB0aGFuIHdoYXQncyBhbHJlYWR5IGRv
bmUgYnkgdGhlIGRlc3RydWN0b3IuCisKK05vdyB3ZSdsbCB3cml0ZSB0ZXN0cyB1c2luZyBgVEVT
VF9GKClgIGFuZCB0aGlzIGZpeHR1cmUuCitgYGAKK1RFU1RfRihRdWV1ZVRlc3QsIElzRW1wdHlJ
bml0aWFsbHkpIHsKKyAgRVhQRUNUX0VRKDAsIHEwXy5zaXplKCkpOworfQorCitURVNUX0YoUXVl
dWVUZXN0LCBEZXF1ZXVlV29ya3MpIHsKKyAgaW50KiBuID0gcTBfLkRlcXVldWUoKTsKKyAgRVhQ
RUNUX0VRKE5VTEwsIG4pOworCisgIG4gPSBxMV8uRGVxdWV1ZSgpOworICBBU1NFUlRfVFJVRShu
ICE9IE5VTEwpOworICBFWFBFQ1RfRVEoMSwgKm4pOworICBFWFBFQ1RfRVEoMCwgcTFfLnNpemUo
KSk7CisgIGRlbGV0ZSBuOworCisgIG4gPSBxMl8uRGVxdWV1ZSgpOworICBBU1NFUlRfVFJVRShu
ICE9IE5VTEwpOworICBFWFBFQ1RfRVEoMiwgKm4pOworICBFWFBFQ1RfRVEoMSwgcTJfLnNpemUo
KSk7CisgIGRlbGV0ZSBuOworfQorYGBgCisKK1RoZSBhYm92ZSB1c2VzIGJvdGggYEFTU0VSVF8q
YCBhbmQgYEVYUEVDVF8qYCBhc3NlcnRpb25zLiBUaGUgcnVsZSBvZiB0aHVtYiBpcwordG8gdXNl
IGBFWFBFQ1RfKmAgd2hlbiB5b3Ugd2FudCB0aGUgdGVzdCB0byBjb250aW51ZSB0byByZXZlYWwg
bW9yZSBlcnJvcnMKK2FmdGVyIHRoZSBhc3NlcnRpb24gZmFpbHVyZSwgYW5kIHVzZSBgQVNTRVJU
XypgIHdoZW4gY29udGludWluZyBhZnRlciBmYWlsdXJlCitkb2Vzbid0IG1ha2Ugc2Vuc2UuIEZv
ciBleGFtcGxlLCB0aGUgc2Vjb25kIGFzc2VydGlvbiBpbiB0aGUgYERlcXVldWVgIHRlc3QgaXMK
K2BBU1NFUlRfVFJVRShuICE9IE5VTEwpYCwgYXMgd2UgbmVlZCB0byBkZXJlZmVyZW5jZSB0aGUg
cG9pbnRlciBgbmAgbGF0ZXIsCit3aGljaCB3b3VsZCBsZWFkIHRvIGEgc2VnZmF1bHQgd2hlbiBg
bmAgaXMgYE5VTExgLgorCitXaGVuIHRoZXNlIHRlc3RzIHJ1biwgdGhlIGZvbGxvd2luZyBoYXBw
ZW5zOgorICAxLiBHb29nbGUgVGVzdCBjb25zdHJ1Y3RzIGEgYFF1ZXVlVGVzdGAgb2JqZWN0IChs
ZXQncyBjYWxsIGl0IGB0MWAgKS4KKyAgMS4gYHQxLlNldFVwKClgIGluaXRpYWxpemVzIGB0MWAg
LgorICAxLiBUaGUgZmlyc3QgdGVzdCAoIGBJc0VtcHR5SW5pdGlhbGx5YCApIHJ1bnMgb24gYHQx
YCAuCisgIDEuIGB0MS5UZWFyRG93bigpYCBjbGVhbnMgdXAgYWZ0ZXIgdGhlIHRlc3QgZmluaXNo
ZXMuCisgIDEuIGB0MWAgaXMgZGVzdHJ1Y3RlZC4KKyAgMS4gVGhlIGFib3ZlIHN0ZXBzIGFyZSBy
ZXBlYXRlZCBvbiBhbm90aGVyIGBRdWV1ZVRlc3RgIG9iamVjdCwgdGhpcyB0aW1lIHJ1bm5pbmcg
dGhlIGBEZXF1ZXVlV29ya3NgIHRlc3QuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjLgorCitfTm90ZV86IEdvb2dsZSBUZXN0IGF1dG9tYXRpY2FsbHkgc2F2ZXMgYWxsIF9H
b29nbGUgVGVzdF8gZmxhZ3Mgd2hlbiBhIHRlc3QKK29iamVjdCBpcyBjb25zdHJ1Y3RlZCwgYW5k
IHJlc3RvcmVzIHRoZW0gd2hlbiBpdCBpcyBkZXN0cnVjdGVkLgorCisjIEludm9raW5nIHRoZSBU
ZXN0cyAjCisKK2BURVNUKClgIGFuZCBgVEVTVF9GKClgIGltcGxpY2l0bHkgcmVnaXN0ZXIgdGhl
aXIgdGVzdHMgd2l0aCBHb29nbGUgVGVzdC4gU28sIHVubGlrZSB3aXRoIG1hbnkgb3RoZXIgQysr
IHRlc3RpbmcgZnJhbWV3b3JrcywgeW91IGRvbid0IGhhdmUgdG8gcmUtbGlzdCBhbGwgeW91ciBk
ZWZpbmVkIHRlc3RzIGluIG9yZGVyIHRvIHJ1biB0aGVtLgorCitBZnRlciBkZWZpbmluZyB5b3Vy
IHRlc3RzLCB5b3UgY2FuIHJ1biB0aGVtIHdpdGggYFJVTl9BTExfVEVTVFMoKWAgLCB3aGljaCBy
ZXR1cm5zIGAwYCBpZiBhbGwgdGhlIHRlc3RzIGFyZSBzdWNjZXNzZnVsLCBvciBgMWAgb3RoZXJ3
aXNlLiBOb3RlIHRoYXQgYFJVTl9BTExfVEVTVFMoKWAgcnVucyBfYWxsIHRlc3RzXyBpbiB5b3Vy
IGxpbmsgdW5pdCAtLSB0aGV5IGNhbiBiZSBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLCBvciBl
dmVuIGRpZmZlcmVudCBzb3VyY2UgZmlsZXMuCisKK1doZW4gaW52b2tlZCwgdGhlIGBSVU5fQUxM
X1RFU1RTKClgIG1hY3JvOgorICAxLiBTYXZlcyB0aGUgc3RhdGUgb2YgYWxsICBHb29nbGUgVGVz
dCBmbGFncy4KKyAgMS4gQ3JlYXRlcyBhIHRlc3QgZml4dHVyZSBvYmplY3QgZm9yIHRoZSBmaXJz
dCB0ZXN0LgorICAxLiBJbml0aWFsaXplcyBpdCB2aWEgYFNldFVwKClgLgorICAxLiBSdW5zIHRo
ZSB0ZXN0IG9uIHRoZSBmaXh0dXJlIG9iamVjdC4KKyAgMS4gQ2xlYW5zIHVwIHRoZSBmaXh0dXJl
IHZpYSBgVGVhckRvd24oKWAuCisgIDEuIERlbGV0ZXMgdGhlIGZpeHR1cmUuCisgIDEuIFJlc3Rv
cmVzIHRoZSBzdGF0ZSBvZiBhbGwgR29vZ2xlIFRlc3QgZmxhZ3MuCisgIDEuIFJlcGVhdHMgdGhl
IGFib3ZlIHN0ZXBzIGZvciB0aGUgbmV4dCB0ZXN0LCB1bnRpbCBhbGwgdGVzdHMgaGF2ZSBydW4u
CisKK0luIGFkZGl0aW9uLCBpZiB0aGUgdGV4dCBmaXh0dXJlJ3MgY29uc3RydWN0b3IgZ2VuZXJh
dGVzIGEgZmF0YWwgZmFpbHVyZSBpbgorc3RlcCAyLCB0aGVyZSBpcyBubyBwb2ludCBmb3Igc3Rl
cCAzIC0gNSBhbmQgdGhleSBhcmUgdGh1cyBza2lwcGVkLiBTaW1pbGFybHksCitpZiBzdGVwIDMg
Z2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSwgc3RlcCA0IHdpbGwgYmUgc2tpcHBlZC4KKworX0lt
cG9ydGFudF86IFlvdSBtdXN0IG5vdCBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBvZiBgUlVOX0FM
TF9URVNUUygpYCwgb3IgYGdjY2AKK3dpbGwgZ2l2ZSB5b3UgYSBjb21waWxlciBlcnJvci4gVGhl
IHJhdGlvbmFsZSBmb3IgdGhpcyBkZXNpZ24gaXMgdGhhdCB0aGUKK2F1dG9tYXRlZCB0ZXN0aW5n
IHNlcnZpY2UgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgdGVzdCBoYXMgcGFzc2VkIGJhc2VkIG9uIGl0
cworZXhpdCBjb2RlLCBub3Qgb24gaXRzIHN0ZG91dC9zdGRlcnIgb3V0cHV0OyB0aHVzIHlvdXIg
YG1haW4oKWAgZnVuY3Rpb24gbXVzdAorcmV0dXJuIHRoZSB2YWx1ZSBvZiBgUlVOX0FMTF9URVNU
UygpYC4KKworQWxzbywgeW91IHNob3VsZCBjYWxsIGBSVU5fQUxMX1RFU1RTKClgIG9ubHkgKipv
bmNlKiouIENhbGxpbmcgaXQgbW9yZSB0aGFuIG9uY2UKK2NvbmZsaWN0cyB3aXRoIHNvbWUgYWR2
YW5jZWQgR29vZ2xlIFRlc3QgZmVhdHVyZXMgKGUuZy4gdGhyZWFkLXNhZmUgZGVhdGgKK3Rlc3Rz
KSBhbmQgdGh1cyBpcyBub3Qgc3VwcG9ydGVkLgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdp
bmRvd3MsIE1hYy4KKworIyBXcml0aW5nIHRoZSBtYWluKCkgRnVuY3Rpb24gIworCitZb3UgY2Fu
IHN0YXJ0IGZyb20gdGhpcyBib2lsZXJwbGF0ZToKK2BgYAorI2luY2x1ZGUgInRoaXMvcGFja2Fn
ZS9mb28uaCIKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCituYW1lc3BhY2UgeworCisvLyBU
aGUgZml4dHVyZSBmb3IgdGVzdGluZyBjbGFzcyBGb28uCitjbGFzcyBGb29UZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAvLyBZb3UgY2FuIHJlbW92ZSBhbnkg
b3IgYWxsIG9mIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGlmIGl0cyBib2R5CisgIC8vIGlzIGVt
cHR5LgorCisgIEZvb1Rlc3QoKSB7CisgICAgLy8gWW91IGNhbiBkbyBzZXQtdXAgd29yayBmb3Ig
ZWFjaCB0ZXN0IGhlcmUuCisgIH0KKworICB2aXJ0dWFsIH5Gb29UZXN0KCkgeworICAgIC8vIFlv
dSBjYW4gZG8gY2xlYW4tdXAgd29yayB0aGF0IGRvZXNuJ3QgdGhyb3cgZXhjZXB0aW9ucyBoZXJl
LgorICB9CisKKyAgLy8gSWYgdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIGFyZSBub3Qg
ZW5vdWdoIGZvciBzZXR0aW5nIHVwCisgIC8vIGFuZCBjbGVhbmluZyB1cCBlYWNoIHRlc3QsIHlv
dSBjYW4gZGVmaW5lIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKKworICB2aXJ0dWFsIHZvaWQgU2V0
VXAoKSB7CisgICAgLy8gQ29kZSBoZXJlIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVy
IHRoZSBjb25zdHJ1Y3RvciAocmlnaHQKKyAgICAvLyBiZWZvcmUgZWFjaCB0ZXN0KS4KKyAgfQor
CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBj
YWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgZWFjaCB0ZXN0IChyaWdodAorICAgIC8vIGJlZm9yZSB0
aGUgZGVzdHJ1Y3RvcikuCisgIH0KKworICAvLyBPYmplY3RzIGRlY2xhcmVkIGhlcmUgY2FuIGJl
IHVzZWQgYnkgYWxsIHRlc3RzIGluIHRoZSB0ZXN0IGNhc2UgZm9yIEZvby4KK307CisKKy8vIFRl
c3RzIHRoYXQgdGhlIEZvbzo6QmFyKCkgbWV0aG9kIGRvZXMgQWJjLgorVEVTVF9GKEZvb1Rlc3Qs
IE1ldGhvZEJhckRvZXNBYmMpIHsKKyAgY29uc3Qgc3RyaW5nIGlucHV0X2ZpbGVwYXRoID0gInRo
aXMvcGFja2FnZS90ZXN0ZGF0YS9teWlucHV0ZmlsZS5kYXQiOworICBjb25zdCBzdHJpbmcgb3V0
cHV0X2ZpbGVwYXRoID0gInRoaXMvcGFja2FnZS90ZXN0ZGF0YS9teW91dHB1dGZpbGUuZGF0IjsK
KyAgRm9vIGY7CisgIEVYUEVDVF9FUSgwLCBmLkJhcihpbnB1dF9maWxlcGF0aCwgb3V0cHV0X2Zp
bGVwYXRoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgRm9vIGRvZXMgWHl6LgorVEVTVF9GKEZvb1Rl
c3QsIERvZXNYeXopIHsKKyAgLy8gRXhlcmNpc2VzIHRoZSBYeXogZmVhdHVyZSBvZiBGb28uCit9
CisKK30gIC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsK
KyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIHJldHVybiBSVU5f
QUxMX1RFU1RTKCk7Cit9CitgYGAKKworVGhlIGA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClg
IGZ1bmN0aW9uIHBhcnNlcyB0aGUgY29tbWFuZCBsaW5lIGZvciBHb29nbGUKK1Rlc3QgZmxhZ3Ms
IGFuZCByZW1vdmVzIGFsbCByZWNvZ25pemVkIGZsYWdzLiBUaGlzIGFsbG93cyB0aGUgdXNlciB0
byBjb250cm9sIGEKK3Rlc3QgcHJvZ3JhbSdzIGJlaGF2aW9yIHZpYSB2YXJpb3VzIGZsYWdzLCB3
aGljaCB3ZSdsbCBjb3ZlciBpbiBbQWR2YW5jZWRHdWlkZV0oVjFfNV9BZHZhbmNlZEd1aWRlLm1k
KS4KK1lvdSBtdXN0IGNhbGwgdGhpcyBmdW5jdGlvbiBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9U
RVNUUygpYCwgb3IgdGhlIGZsYWdzCit3b24ndCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4KKwor
T24gV2luZG93cywgYEluaXRHb29nbGVUZXN0KClgIGFsc28gd29ya3Mgd2l0aCB3aWRlIHN0cmlu
Z3MsIHNvIGl0IGNhbiBiZSB1c2VkCitpbiBwcm9ncmFtcyBjb21waWxlZCBpbiBgVU5JQ09ERWAg
bW9kZSBhcyB3ZWxsLgorCitCdXQgbWF5YmUgeW91IHRoaW5rIHRoYXQgd3JpdGluZyBhbGwgdGhv
c2UgbWFpbigpIGZ1bmN0aW9ucyBpcyB0b28gbXVjaCB3b3JrPyBXZSBhZ3JlZSB3aXRoIHlvdSBj
b21wbGV0ZWx5IGFuZCB0aGF0J3Mgd2h5IEdvb2dsZSBUZXN0IHByb3ZpZGVzIGEgYmFzaWMgaW1w
bGVtZW50YXRpb24gb2YgbWFpbigpLiBJZiBpdCBmaXRzIHlvdXIgbmVlZHMsIHRoZW4ganVzdCBs
aW5rIHlvdXIgdGVzdCB3aXRoIGd0ZXN0XF9tYWluIGxpYnJhcnkgYW5kIHlvdSBhcmUgZ29vZCB0
byBnby4KKworIyMgSW1wb3J0YW50IG5vdGUgZm9yIFZpc3VhbCBDKysgdXNlcnMgIyMKK0lmIHlv
dSBwdXQgeW91ciB0ZXN0cyBpbnRvIGEgbGlicmFyeSBhbmQgeW91ciBgbWFpbigpYCBmdW5jdGlv
biBpcyBpbiBhIGRpZmZlcmVudCBsaWJyYXJ5IG9yIGluIHlvdXIgLmV4ZSBmaWxlLCB0aG9zZSB0
ZXN0cyB3aWxsIG5vdCBydW4uIFRoZSByZWFzb24gaXMgYSBbYnVnXShodHRwczovL2Nvbm5lY3Qu
bWljcm9zb2Z0LmNvbS9mZWVkYmFjay92aWV3ZmVlZGJhY2suYXNweD9GZWVkYmFja0lEPTI0NDQx
MCZzaXRlaWQ9MjEwKSBpbiBWaXN1YWwgQysrLiBXaGVuIHlvdSBkZWZpbmUgeW91ciB0ZXN0cywg
R29vZ2xlIFRlc3QgY3JlYXRlcyBjZXJ0YWluIHN0YXRpYyBvYmplY3RzIHRvIHJlZ2lzdGVyIHRo
ZW0uIFRoZXNlIG9iamVjdHMgYXJlIG5vdCByZWZlcmVuY2VkIGZyb20gZWxzZXdoZXJlIGJ1dCB0
aGVpciBjb25zdHJ1Y3RvcnMgYXJlIHN0aWxsIHN1cHBvc2VkIHRvIHJ1bi4gV2hlbiBWaXN1YWwg
QysrIGxpbmtlciBzZWVzIHRoYXQgbm90aGluZyBpbiB0aGUgbGlicmFyeSBpcyByZWZlcmVuY2Vk
IGZyb20gb3RoZXIgcGxhY2VzIGl0IHRocm93cyB0aGUgbGlicmFyeSBvdXQuIFlvdSBoYXZlIHRv
IHJlZmVyZW5jZSB5b3VyIGxpYnJhcnkgd2l0aCB0ZXN0cyBmcm9tIHlvdXIgbWFpbiBwcm9ncmFt
IHRvIGtlZXAgdGhlIGxpbmtlciBmcm9tIGRpc2NhcmRpbmcgaXQuIEhlcmUgaXMgaG93IHRvIGRv
IGl0LiBTb21ld2hlcmUgaW4geW91ciBsaWJyYXJ5IGNvZGUgZGVjbGFyZSBhIGZ1bmN0aW9uOgor
YGBgCitfX2RlY2xzcGVjKGRsbGV4cG9ydCkgaW50IFB1bGxJbk15TGlicmFyeSgpIHsgcmV0dXJu
IDA7IH0KK2BgYAorSWYgeW91IHB1dCB5b3VyIHRlc3RzIGluIGEgc3RhdGljIGxpYnJhcnkgKG5v
dCBETEwpIHRoZW4gYF9fZGVjbHNwZWMoZGxsZXhwb3J0KWAgaXMgbm90IHJlcXVpcmVkLiBOb3cs
IGluIHlvdXIgbWFpbiBwcm9ncmFtLCB3cml0ZSBhIGNvZGUgdGhhdCBpbnZva2VzIHRoYXQgZnVu
Y3Rpb246CitgYGAKK2ludCBQdWxsSW5NeUxpYnJhcnkoKTsKK3N0YXRpYyBpbnQgZHVtbXkgPSBQ
dWxsSW5NeUxpYnJhcnkoKTsKK2BgYAorVGhpcyB3aWxsIGtlZXAgeW91ciB0ZXN0cyByZWZlcmVu
Y2VkIGFuZCB3aWxsIG1ha2UgdGhlbSByZWdpc3RlciB0aGVtc2VsdmVzIGF0IHN0YXJ0dXAuCisK
K0luIGFkZGl0aW9uLCBpZiB5b3UgZGVmaW5lIHlvdXIgdGVzdHMgaW4gYSBzdGF0aWMgbGlicmFy
eSwgYWRkIGAvT1BUOk5PUkVGYCB0byB5b3VyIG1haW4gcHJvZ3JhbSBsaW5rZXIgb3B0aW9ucy4g
SWYgeW91IHVzZSBNU1ZDKysgSURFLCBnbyB0byB5b3VyIC5leGUgcHJvamVjdCBwcm9wZXJ0aWVz
L0NvbmZpZ3VyYXRpb24gUHJvcGVydGllcy9MaW5rZXIvT3B0aW1pemF0aW9uIGFuZCBzZXQgUmVm
ZXJlbmNlcyBzZXR0aW5nIHRvIGBLZWVwIFVucmVmZXJlbmNlZCBEYXRhICgvT1BUOk5PUkVGKWAu
IFRoaXMgd2lsbCBrZWVwIFZpc3VhbCBDKysgbGlua2VyIGZyb20gZGlzY2FyZGluZyBpbmRpdmlk
dWFsIHN5bWJvbHMgZ2VuZXJhdGVkIGJ5IHlvdXIgdGVzdHMgZnJvbSB0aGUgZmluYWwgZXhlY3V0
YWJsZS4KKworVGhlcmUgaXMgb25lIG1vcmUgcGl0ZmFsbCwgdGhvdWdoLiBJZiB5b3UgdXNlIEdv
b2dsZSBUZXN0IGFzIGEgc3RhdGljIGxpYnJhcnkgKHRoYXQncyBob3cgaXQgaXMgZGVmaW5lZCBp
biBndGVzdC52Y3Byb2opIHlvdXIgdGVzdHMgbXVzdCBhbHNvIHJlc2lkZSBpbiBhIHN0YXRpYyBs
aWJyYXJ5LiBJZiB5b3UgaGF2ZSB0byBoYXZlIHRoZW0gaW4gYSBETEwsIHlvdSBfbXVzdF8gY2hh
bmdlIEdvb2dsZSBUZXN0IHRvIGJ1aWxkIGludG8gYSBETEwgYXMgd2VsbC4gT3RoZXJ3aXNlIHlv
dXIgdGVzdHMgd2lsbCBub3QgcnVuIGNvcnJlY3RseSBvciB3aWxsIG5vdCBydW4gYXQgYWxsLiBU
aGUgZ2VuZXJhbCBjb25jbHVzaW9uIGhlcmUgaXM6IG1ha2UgeW91ciBsaWZlIGVhc2llciAtIGRv
IG5vdCB3cml0ZSB5b3VyIHRlc3RzIGluIGxpYnJhcmllcyEKKworIyBXaGVyZSB0byBHbyBmcm9t
IEhlcmUgIworCitDb25ncmF0dWxhdGlvbnMhIFlvdSd2ZSBsZWFybmVkIHRoZSBHb29nbGUgVGVz
dCBiYXNpY3MuIFlvdSBjYW4gc3RhcnQgd3JpdGluZworYW5kIHJ1bm5pbmcgR29vZ2xlIFRlc3Qg
dGVzdHMsIHJlYWQgc29tZSBbc2FtcGxlc10oU2FtcGxlcy5tZCksIG9yIGNvbnRpbnVlIHdpdGgK
K1tBZHZhbmNlZEd1aWRlXShWMV81X0FkdmFuY2VkR3VpZGUubWQpLCB3aGljaCBkZXNjcmliZXMg
bWFueSBtb3JlIHVzZWZ1bCBHb29nbGUgVGVzdCBmZWF0dXJlcy4KKworIyBLbm93biBMaW1pdGF0
aW9ucyAjCisKK0dvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHRvIGJlIHRocmVhZC1zYWZlLiAgVGhl
IGltcGxlbWVudGF0aW9uIGlzCit0aHJlYWQtc2FmZSBvbiBzeXN0ZW1zIHdoZXJlIHRoZSBgcHRo
cmVhZHNgIGxpYnJhcnkgaXMgYXZhaWxhYmxlLiAgSXQKK2lzIGN1cnJlbnRseSBfdW5zYWZlXyB0
byB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBmcm9tIHR3byB0aHJlYWRzCitjb25jdXJyZW50
bHkgb24gb3RoZXIgc3lzdGVtcyAoZS5nLiBXaW5kb3dzKS4gIEluIG1vc3QgdGVzdHMgdGhpcyBp
cworbm90IGFuIGlzc3VlIGFzIHVzdWFsbHkgdGhlIGFzc2VydGlvbnMgYXJlIGRvbmUgaW4gdGhl
IG1haW4gdGhyZWFkLiBJZgoreW91IHdhbnQgdG8gaGVscCwgeW91IGNhbiB2b2x1bnRlZXIgdG8g
aW1wbGVtZW50IHRoZSBuZWNlc3NhcnkKK3N5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGluIGBn
dGVzdC1wb3J0LmhgIGZvciB5b3VyIHBsYXRmb3JtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvZG9jcy9WMV81X1B1bXBNYW51YWwubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9kb2NzL1YxXzVfUHVtcE1hbnVhbC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTcxMDc4OWRkZDFlZWE1
ZWY1ZTc5M2NhMzUwZTUyZTA0NTU2YTU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvZG9jcy9WMV81X1B1bXBNYW51YWwubWQKQEAgLTAsMCArMSwxNzcgQEAKKwor
Cis8Yj5QPC9iPnVtcCBpcyA8Yj5VPC9iPnNlZnVsIGZvciA8Yj5NPC9iPmV0YSA8Yj5QPC9iPnJv
Z3JhbW1pbmcuCisKKyMgVGhlIFByb2JsZW0gIworCitUZW1wbGF0ZSBhbmQgbWFjcm8gbGlicmFy
aWVzIG9mdGVuIG5lZWQgdG8gZGVmaW5lIG1hbnkgY2xhc3NlcywKK2Z1bmN0aW9ucywgb3IgbWFj
cm9zIHRoYXQgdmFyeSBvbmx5IChvciBhbG1vc3Qgb25seSkgaW4gdGhlIG51bWJlciBvZgorYXJn
dW1lbnRzIHRoZXkgdGFrZS4gSXQncyBhIGxvdCBvZiByZXBldGl0aXZlLCBtZWNoYW5pY2FsLCBh
bmQKK2Vycm9yLXByb25lIHdvcmsuCisKK1ZhcmlhZGljIHRlbXBsYXRlcyBhbmQgdmFyaWFkaWMg
bWFjcm9zIGNhbiBhbGxldmlhdGUgdGhlIHByb2JsZW0uCitIb3dldmVyLCB3aGlsZSBib3RoIGFy
ZSBiZWluZyBjb25zaWRlcmVkIGJ5IHRoZSBDKysgY29tbWl0dGVlLCBuZWl0aGVyCitpcyBpbiB0
aGUgc3RhbmRhcmQgeWV0IG9yIHdpZGVseSBzdXBwb3J0ZWQgYnkgY29tcGlsZXJzLiAgVGh1cyB0
aGV5CithcmUgb2Z0ZW4gbm90IGEgZ29vZCBjaG9pY2UsIGVzcGVjaWFsbHkgd2hlbiB5b3VyIGNv
ZGUgbmVlZHMgdG8gYmUKK3BvcnRhYmxlLiBBbmQgdGhlaXIgY2FwYWJpbGl0aWVzIGFyZSBzdGls
bCBsaW1pdGVkLgorCitBcyBhIHJlc3VsdCwgYXV0aG9ycyBvZiBzdWNoIGxpYnJhcmllcyBvZnRl
biBoYXZlIHRvIHdyaXRlIHNjcmlwdHMgdG8KK2dlbmVyYXRlIHRoZWlyIGltcGxlbWVudGF0aW9u
LiBIb3dldmVyLCBvdXIgZXhwZXJpZW5jZSBpcyB0aGF0IGl0J3MKK3RlZGlvdXMgdG8gd3JpdGUg
c3VjaCBzY3JpcHRzLCB3aGljaCB0ZW5kIHRvIHJlZmxlY3QgdGhlIHN0cnVjdHVyZSBvZgordGhl
IGdlbmVyYXRlZCBjb2RlIHBvb3JseSBhbmQgYXJlIG9mdGVuIGhhcmQgdG8gcmVhZCBhbmQgZWRp
dC4gRm9yCitleGFtcGxlLCBhIHNtYWxsIGNoYW5nZSBuZWVkZWQgaW4gdGhlIGdlbmVyYXRlZCBj
b2RlIG1heSByZXF1aXJlIHNvbWUKK25vbi1pbnR1aXRpdmUsIG5vbi10cml2aWFsIGNoYW5nZXMg
aW4gdGhlIHNjcmlwdC4gVGhpcyBpcyBlc3BlY2lhbGx5CitwYWluZnVsIHdoZW4gZXhwZXJpbWVu
dGluZyB3aXRoIHRoZSBjb2RlLgorCisjIE91ciBTb2x1dGlvbiAjCisKK1B1bXAgKGZvciBQdW1w
IGlzIFVzZWZ1bCBmb3IgTWV0YSBQcm9ncmFtbWluZywgUHJldHR5IFVzZWZ1bCBmb3IgTWV0YQor
UHJvZ3JhbW1pbmcsIG9yIFByYWN0aWNhbCBVdGlsaXR5IGZvciBNZXRhIFByb2dyYW1taW5nLCB3
aGljaGV2ZXIgeW91CitwcmVmZXIpIGlzIGEgc2ltcGxlIG1ldGEtcHJvZ3JhbW1pbmcgdG9vbCBm
b3IgQysrLiBUaGUgaWRlYSBpcyB0aGF0IGEKK3Byb2dyYW1tZXIgd3JpdGVzIGEgYGZvby5wdW1w
YCBmaWxlIHdoaWNoIGNvbnRhaW5zIEMrKyBjb2RlIHBsdXMgbWV0YQorY29kZSB0aGF0IG1hbmlw
dWxhdGVzIHRoZSBDKysgY29kZS4gVGhlIG1ldGEgY29kZSBjYW4gaGFuZGxlCitpdGVyYXRpb25z
IG92ZXIgYSByYW5nZSwgbmVzdGVkIGl0ZXJhdGlvbnMsIGxvY2FsIG1ldGEgdmFyaWFibGUKK2Rl
ZmluaXRpb25zLCBzaW1wbGUgYXJpdGhtZXRpYywgYW5kIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25z
LiBZb3UgY2FuCit2aWV3IGl0IGFzIGEgc21hbGwgRG9tYWluLVNwZWNpZmljIExhbmd1YWdlLiBU
aGUgbWV0YSBsYW5ndWFnZSBpcworZGVzaWduZWQgdG8gYmUgbm9uLWludHJ1c2l2ZSAocy50LiBp
dCB3b24ndCBjb25mdXNlIEVtYWNzJyBDKysgbW9kZSwKK2ZvciBleGFtcGxlKSBhbmQgY29uY2lz
ZSwgbWFraW5nIFB1bXAgY29kZSBpbnR1aXRpdmUgYW5kIGVhc3kgdG8KK21haW50YWluLgorCisj
IyBIaWdobGlnaHRzICMjCisKKyAgKiBUaGUgaW1wbGVtZW50YXRpb24gaXMgaW4gYSBzaW5nbGUg
UHl0aG9uIHNjcmlwdCBhbmQgdGh1cyB1bHRyYSBwb3J0YWJsZTogbm8gYnVpbGQgb3IgaW5zdGFs
bGF0aW9uIGlzIG5lZWRlZCBhbmQgaXQgd29ya3MgY3Jvc3MgcGxhdGZvcm1zLgorICAqIFB1bXAg
dHJpZXMgdG8gYmUgc21hcnQgd2l0aCByZXNwZWN0IHRvIFtHb29nbGUncyBzdHlsZSBndWlkZV0o
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS1zdHlsZWd1aWRlLyk6IGl0IGJyZWFrcyBs
b25nIGxpbmVzIChlYXN5IHRvIGhhdmUgd2hlbiB0aGV5IGFyZSBnZW5lcmF0ZWQpIGF0IGFjY2Vw
dGFibGUgcGxhY2VzIHRvIGZpdCB3aXRoaW4gODAgY29sdW1ucyBhbmQgaW5kZW50IHRoZSBjb250
aW51YXRpb24gbGluZXMgY29ycmVjdGx5LgorICAqIFRoZSBmb3JtYXQgaXMgaHVtYW4tcmVhZGFi
bGUgYW5kIG1vcmUgY29uY2lzZSB0aGFuIFhNTC4KKyAgKiBUaGUgZm9ybWF0IHdvcmtzIHJlbGF0
aXZlbHkgd2VsbCB3aXRoIEVtYWNzJyBDKysgbW9kZS4KKworIyMgRXhhbXBsZXMgIyMKKworVGhl
IGZvbGxvd2luZyBQdW1wIGNvZGUgKHdoZXJlIG1ldGEga2V5d29yZHMgc3RhcnQgd2l0aCBgJGAs
IGBbW2AgYW5kIGBdXWAgYXJlIG1ldGEgYnJhY2tldHMsIGFuZCBgJCRgIHN0YXJ0cyBhIG1ldGEg
Y29tbWVudCB0aGF0IGVuZHMgd2l0aCB0aGUgbGluZSk6CisKK2BgYAorJHZhciBuID0gMyAgICAg
JCQgRGVmaW5lcyBhIG1ldGEgdmFyaWFibGUgbi4KKyRyYW5nZSBpIDAuLm4gICQkIERlY2xhcmVz
IHRoZSByYW5nZSBvZiBtZXRhIGl0ZXJhdG9yIGkgKGluY2x1c2l2ZSkuCiskZm9yIGkgW1sKKyAg
ICAgICAgICAgICAgICQkIE1ldGEgbG9vcC4KKy8vIEZvbyRpIGRvZXMgYmxhaCBmb3IgJGktYXJ5
IHByZWRpY2F0ZXMuCiskcmFuZ2UgaiAxLi5pCit0ZW1wbGF0ZSA8c2l6ZV90IE4gJGZvciBqIFtb
LCB0eXBlbmFtZSBBJGpdXT4KK2NsYXNzIEZvbyRpIHsKKyRpZiBpID09IDAgW1sKKyAgYmxhaCBh
OworXV0gJGVsaWYgaSA8PSAyIFtbCisgIGJsYWggYjsKK11dICRlbHNlIFtbCisgIGJsYWggYzsK
K11dCit9OworCitdXQorYGBgCisKK3dpbGwgYmUgdHJhbnNsYXRlZCBieSB0aGUgUHVtcCBjb21w
aWxlciB0bzoKKworYGBgCisvLyBGb28wIGRvZXMgYmxhaCBmb3IgMC1hcnkgcHJlZGljYXRlcy4K
K3RlbXBsYXRlIDxzaXplX3QgTj4KK2NsYXNzIEZvbzAgeworICBibGFoIGE7Cit9OworCisvLyBG
b28xIGRvZXMgYmxhaCBmb3IgMS1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwg
dHlwZW5hbWUgQTE+CitjbGFzcyBGb28xIHsKKyAgYmxhaCBiOworfTsKKworLy8gRm9vMiBkb2Vz
IGJsYWggZm9yIDItYXJ5IHByZWRpY2F0ZXMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1l
IEExLCB0eXBlbmFtZSBBMj4KK2NsYXNzIEZvbzIgeworICBibGFoIGI7Cit9OworCisvLyBGb28z
IGRvZXMgYmxhaCBmb3IgMy1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlw
ZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMz4KK2NsYXNzIEZvbzMgeworICBibGFo
IGM7Cit9OworYGBgCisKK0luIGFub3RoZXIgZXhhbXBsZSwKKworYGBgCiskcmFuZ2UgaSAxLi5u
CitGdW5jKCRmb3IgaSArIFtbYSRpXV0pOworJCQgVGhlIHRleHQgYmV0d2VlbiBpIGFuZCBbWyBp
cyB0aGUgc2VwYXJhdG9yIGJldHdlZW4gaXRlcmF0aW9ucy4KK2BgYAorCit3aWxsIGdlbmVyYXRl
IG9uZSBvZiB0aGUgZm9sbG93aW5nIGxpbmVzICh3aXRob3V0IHRoZSBjb21tZW50cyksIGRlcGVu
ZGluZyBvbiB0aGUgdmFsdWUgb2YgYG5gOgorCitgYGAKK0Z1bmMoKTsgICAgICAgICAgICAgIC8v
IElmIG4gaXMgMC4KK0Z1bmMoYTEpOyAgICAgICAgICAgIC8vIElmIG4gaXMgMS4KK0Z1bmMoYTEg
KyBhMik7ICAgICAgIC8vIElmIG4gaXMgMi4KK0Z1bmMoYTEgKyBhMiArIGEzKTsgIC8vIElmIG4g
aXMgMy4KKy8vIEFuZCBzbyBvbi4uLgorYGBgCisKKyMjIENvbnN0cnVjdHMgIyMKKworV2Ugc3Vw
cG9ydCB0aGUgZm9sbG93aW5nIG1ldGEgcHJvZ3JhbW1pbmcgY29uc3RydWN0czoKKworfCBgJHZh
ciBpZCA9IGV4cGAgfCBEZWZpbmVzIGEgbmFtZWQgY29uc3RhbnQgdmFsdWUuIGAkaWRgIGlzIHZh
bGlkIHV0aWwgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBtZXRhIGxleGljYWwgYmxvY2suIHwKK3w6
LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18
Cit8ICRyYW5nZSBpZCBleHAuLmV4cCB8IFNldHMgdGhlIHJhbmdlIG9mIGFuIGl0ZXJhdGlvbiB2
YXJpYWJsZSwgd2hpY2ggY2FuIGJlIHJldXNlZCBpbiBtdWx0aXBsZSBsb29wcyBsYXRlci4gICAg
ICAgICAgfAorfCAkZm9yIGlkIHNlcCBbW2NvZGUgXSgubWQpXSB8IEl0ZXJhdGlvbi4gVGhlIHJh
bmdlIG9mIGBpZGAgbXVzdCBoYXZlIGJlZW4gZGVmaW5lZCBlYXJsaWVyLiBgJGlkYCBpcyB2YWxp
ZCBpbiBgY29kZWAuICAgICAgICAgfAorfCBgJCgkKWAgICAgICAgICAgfCBHZW5lcmF0ZXMgYSBz
aW5nbGUgYCRgIGNoYXJhY3Rlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYCRpZGAgICAgICAgICAgIHwgVmFsdWUgb2Yg
dGhlIG5hbWVkIGNvbnN0YW50IG9yIGl0ZXJhdGlvbiB2YXJpYWJsZS4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGAkKGV4cClgICAgICAgICB8IFZhbHVl
IG9mIHRoZSBleHByZXNzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgJGlmIGV4cCBbWyBjb2RlIF1d
IGVsc2VfYnJhbmNoYCB8IENvbmRpdGlvbmFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
fCBgW1sgY29kZSBdXWAgICAgfCBNZXRhIGxleGljYWwgYmxvY2suICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKK3wgYGNwcF9jb2RlYCAgICAgIHwgUmF3IEMrKyBjb2RlLiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8Cit8IGAkJCBjb21tZW50YCAgICB8IE1ldGEgY29tbWVudC4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorCisqKk5vdGU6KiogVG8gZ2l2ZSB0aGUgdXNlciBzb21lIGZyZWVkb20gaW4g
Zm9ybWF0dGluZyB0aGUgUHVtcCBzb3VyY2UKK2NvZGUsIFB1bXAgaWdub3JlcyBhIG5ldy1saW5l
IGNoYXJhY3RlciBpZiBpdCdzIHJpZ2h0IGFmdGVyIGAkZm9yIGZvb2AKK29yIG5leHQgdG8gYFtb
YCBvciBgXV1gLiBXaXRob3V0IHRoaXMgcnVsZSB5b3UnbGwgb2Z0ZW4gYmUgZm9yY2VkIHRvIHdy
aXRlCit2ZXJ5IGxvbmcgbGluZXMgdG8gZ2V0IHRoZSBkZXNpcmVkIG91dHB1dC4gVGhlcmVmb3Jl
IHNvbWV0aW1lcyB5b3UgbWF5CituZWVkIHRvIGluc2VydCBhbiBleHRyYSBuZXctbGluZSBpbiBz
dWNoIHBsYWNlcyBmb3IgYSBuZXctbGluZSB0byBzaG93Cit1cCBpbiB5b3VyIG91dHB1dC4KKwor
IyMgR3JhbW1hciAjIworCitgYGAKK2NvZGUgOjo9IGF0b21pY19jb2RlKgorYXRvbWljX2NvZGUg
Ojo9ICR2YXIgaWQgPSBleHAKKyAgICB8ICR2YXIgaWQgPSBbWyBjb2RlIF1dCisgICAgfCAkcmFu
Z2UgaWQgZXhwLi5leHAKKyAgICB8ICRmb3IgaWQgc2VwIFtbIGNvZGUgXV0KKyAgICB8ICQoJCkK
KyAgICB8ICRpZAorICAgIHwgJChleHApCisgICAgfCAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9i
cmFuY2gKKyAgICB8IFtbIGNvZGUgXV0KKyAgICB8IGNwcF9jb2RlCitzZXAgOjo9IGNwcF9jb2Rl
IHwgZW1wdHlfc3RyaW5nCitlbHNlX2JyYW5jaCA6Oj0gJGVsc2UgW1sgY29kZSBdXQorICAgIHwg
JGVsaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2gKKyAgICB8IGVtcHR5X3N0cmluZworZXhw
IDo6PSBzaW1wbGVfZXhwcmVzc2lvbl9pbl9QeXRob25fc3ludGF4CitgYGAKKworIyMgQ29kZSAj
IworCitZb3UgY2FuIGZpbmQgdGhlIHNvdXJjZSBjb2RlIG9mIFB1bXAgaW4gW3NjcmlwdHMvcHVt
cC5weV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvc291cmNlL2Jyb3dzZS90
cnVuay9zY3JpcHRzL3B1bXAucHkpLiBJdCBpcyBzdGlsbAordmVyeSB1bnBvbGlzaGVkIGFuZCBs
YWNrcyBhdXRvbWF0ZWQgdGVzdHMsIGFsdGhvdWdoIGl0IGhhcyBiZWVuCitzdWNjZXNzZnVsbHkg
dXNlZCBtYW55IHRpbWVzLiBJZiB5b3UgZmluZCBhIGNoYW5jZSB0byB1c2UgaXQgaW4geW91cgor
cHJvamVjdCwgcGxlYXNlIGxldCB1cyBrbm93IHdoYXQgeW91IHRoaW5rISAgV2UgYWxzbyB3ZWxj
b21lIGhlbHAgb24KK2ltcHJvdmluZyBQdW1wLgorCisjIyBSZWFsIEV4YW1wbGVzICMjCisKK1lv
dSBjYW4gZmluZCByZWFsLXdvcmxkIGFwcGxpY2F0aW9ucyBvZiBQdW1wIGluIFtHb29nbGUgVGVz
dF0oaHR0cDovL3d3dy5nb29nbGUuY29tL2NvZGVzZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3Bh
Y2thZ2UlM0FodHRwJTNBJTJGJTJGZ29vZ2xldGVzdFwuZ29vZ2xlY29kZVwuY29tKSBhbmQgW0dv
b2dsZSBNb2NrXShodHRwOi8vd3d3Lmdvb2dsZS5jb20vY29kZXNlYXJjaD9xPWZpbGUlM0FcLnB1
bXAlMjQrcGFja2FnZSUzQWh0dHAlM0ElMkYlMkZnb29nbGVtb2NrXC5nb29nbGVjb2RlXC5jb20p
LiAgVGhlIHNvdXJjZSBmaWxlIGBmb28uaC5wdW1wYCBnZW5lcmF0ZXMgYGZvby5oYC4KKworIyMg
VGlwcyAjIworCisgICogSWYgYSBtZXRhIHZhcmlhYmxlIGlzIGZvbGxvd2VkIGJ5IGEgbGV0dGVy
IG9yIGRpZ2l0LCB5b3UgY2FuIHNlcGFyYXRlIHRoZW0gdXNpbmcgYFtbXV1gLCB3aGljaCBpbnNl
cnRzIGFuIGVtcHR5IHN0cmluZy4gRm9yIGV4YW1wbGUgYEZvbyRqW1tdXUhlbHBlcmAgZ2VuZXJh
dGUgYEZvbzFIZWxwZXJgIHdoZW4gYGpgIGlzIDEuCisgICogVG8gYXZvaWQgZXh0cmEtbG9uZyBQ
dW1wIHNvdXJjZSBsaW5lcywgeW91IGNhbiBicmVhayBhIGxpbmUgYW55d2hlcmUgeW91IHdhbnQg
YnkgaW5zZXJ0aW5nIGBbW11dYCBmb2xsb3dlZCBieSBhIG5ldyBsaW5lLiBTaW5jZSBhbnkgbmV3
LWxpbmUgY2hhcmFjdGVyIG5leHQgdG8gYFtbYCBvciBgXV1gIGlzIGlnbm9yZWQsIHRoZSBnZW5l
cmF0ZWQgY29kZSB3b24ndCBjb250YWluIHRoaXMgbmV3IGxpbmUuClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV81
X1hjb2RlR3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzVfWGNvZGVH
dWlkZS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iZjI0YmY1MWJmYzQ1NDEyZjY1OGJkZGQ1M2EzMzJlMTQ5ZDc3
MzA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV81
X1hjb2RlR3VpZGUubWQKQEAgLTAsMCArMSw5MyBAQAorCisKK1RoaXMgZ3VpZGUgd2lsbCBleHBs
YWluIGhvdyB0byB1c2UgdGhlIEdvb2dsZSBUZXN0aW5nIEZyYW1ld29yayBpbiB5b3VyIFhjb2Rl
IHByb2plY3RzIG9uIE1hYyBPUyBYLiBUaGlzIHR1dG9yaWFsIGJlZ2lucyBieSBxdWlja2x5IGV4
cGxhaW5pbmcgd2hhdCB0byBkbyBmb3IgZXhwZXJpZW5jZWQgdXNlcnMuIEFmdGVyIHRoZSBxdWlj
ayBzdGFydCwgdGhlIGd1aWRlIGdvZXMgcHJvdmlkZXMgYWRkaXRpb25hbCBleHBsYW5hdGlvbiBh
Ym91dCBlYWNoIHN0ZXAuCisKKyMgUXVpY2sgU3RhcnQgIworCitIZXJlIGlzIHRoZSBxdWljayBn
dWlkZSBmb3IgdXNpbmcgR29vZ2xlIFRlc3QgaW4geW91ciBYY29kZSBwcm9qZWN0LgorCisgIDEu
IERvd25sb2FkIHRoZSBzb3VyY2UgZnJvbSB0aGUgW3dlYnNpdGVdKGh0dHA6Ly9jb2RlLmdvb2ds
ZS5jb20vcC9nb29nbGV0ZXN0KSB1c2luZyB0aGlzIGNvbW1hbmQ6IGBzdm4gY2hlY2tvdXQgaHR0
cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rLyBnb29nbGV0ZXN0LXJlYWQt
b25seWAKKyAgMS4gT3BlbiB1cCB0aGUgYGd0ZXN0Lnhjb2RlcHJvamAgaW4gdGhlIGBnb29nbGV0
ZXN0LXJlYWQtb25seS94Y29kZS9gIGRpcmVjdG9yeSBhbmQgYnVpbGQgdGhlIGd0ZXN0LmZyYW1l
d29yay4KKyAgMS4gQ3JlYXRlIGEgbmV3ICJTaGVsbCBUb29sIiB0YXJnZXQgaW4geW91ciBYY29k
ZSBwcm9qZWN0IGNhbGxlZCBzb21ldGhpbmcgbGlrZSAiVW5pdFRlc3RzIgorICAxLiBBZGQgdGhl
IGd0ZXN0LmZyYW1ld29yayB0byB5b3VyIHByb2plY3QgYW5kIGFkZCBpdCB0byB0aGUgIkxpbmsg
QmluYXJ5IHdpdGggTGlicmFyaWVzIiBidWlsZCBwaGFzZSBvZiAiVW5pdFRlc3RzIgorICAxLiBB
ZGQgeW91ciB1bml0IHRlc3Qgc291cmNlIGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJjZXMiIGJ1
aWxkIHBoYXNlIG9mICJVbml0VGVzdHMiCisgIDEuIEVkaXQgdGhlICJVbml0VGVzdHMiIGV4ZWN1
dGFibGUgYW5kIGFkZCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lZCAiRFlMRFxfRlJBTUVX
T1JLXF9QQVRIIiB3aXRoIGEgdmFsdWUgZXF1YWwgdG8gdGhlIHBhdGggdG8gdGhlIGZyYW1ld29y
ayBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsgcmVsYXRpdmUgdG8gdGhlIGNvbXBpbGVk
IGV4ZWN1dGFibGUuCisgIDEuIEJ1aWxkIGFuZCBHbworCitUaGUgZm9sbG93aW5nIHNlY3Rpb25z
IGZ1cnRoZXIgZXhwbGFpbiBlYWNoIG9mIHRoZSBzdGVwcyBsaXN0ZWQgYWJvdmUgaW4gZGVwdGgs
IGRlc2NyaWJpbmcgaW4gbW9yZSBkZXRhaWwgaG93IHRvIGNvbXBsZXRlIGl0IGluY2x1ZGluZyBz
b21lIHZhcmlhdGlvbnMuCisKKyMgR2V0IHRoZSBTb3VyY2UgIworCitDdXJyZW50bHksIHRoZSBn
dGVzdC5mcmFtZXdvcmsgZGlzY3Vzc2VkIGhlcmUgaXNuJ3QgYXZhaWxhYmxlIGluIGEgdGFnZ2Vk
IHJlbGVhc2Ugb2YgR29vZ2xlIFRlc3QsIGl0IGlzIG9ubHkgYXZhaWxhYmxlIGluIHRoZSB0cnVu
ay4gQXMgZXhwbGFpbmVkIGF0IHRoZSBHb29nbGUgVGVzdCBbc2l0ZV0oaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wL2dvb2dsZXRlc3Qvc291cmNlL2NoZWNrb3V0Ij5zdm4pLCB5b3UgY2FuIGdldCB0
aGUgY29kZSBmcm9tIGFub255bW91cyBTVk4gd2l0aCB0aGlzIGNvbW1hbmQ6CisKK2BgYAorc3Zu
IGNoZWNrb3V0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay8gZ29v
Z2xldGVzdC1yZWFkLW9ubHkKK2BgYAorCitBbHRlcm5hdGl2ZWx5LCBpZiB5b3UgYXJlIHdvcmtp
bmcgd2l0aCBTdWJ2ZXJzaW9uIGluIHlvdXIgb3duIGNvZGUgYmFzZSwgeW91IGNhbiBhZGQgR29v
Z2xlIFRlc3QgYXMgYW4gZXh0ZXJuYWwgZGVwZW5kZW5jeSB0byB5b3VyIG93biBTdWJ2ZXJzaW9u
IHJlcG9zaXRvcnkuIEJ5IGZvbGxvd2luZyB0aGlzIGFwcHJvYWNoLCBldmVyeW9uZSB0aGF0IGNo
ZWNrcyBvdXQgeW91ciBzdm4gcmVwb3NpdG9yeSB3aWxsIGFsc28gcmVjZWl2ZSBhIGNvcHkgb2Yg
R29vZ2xlIFRlc3QgKGEgc3BlY2lmaWMgdmVyc2lvbiwgaWYgeW91IHdpc2gpIHdpdGhvdXQgaGF2
aW5nIHRvIGNoZWNrIGl0IG91dCBleHBsaWNpdGx5LiBUaGlzIG1ha2VzIHRoZSBzZXQgdXAgb2Yg
eW91ciBwcm9qZWN0IHNpbXBsZXIgYW5kIHJlZHVjZXMgdGhlIGNvcGllZCBjb2RlIGluIHRoZSBy
ZXBvc2l0b3J5LgorCitUbyB1c2UgYHN2bjpleHRlcm5hbHNgLCBkZWNpZGUgd2hlcmUgeW91IHdv
dWxkIGxpa2UgdG8gaGF2ZSB0aGUgZXh0ZXJuYWwgc291cmNlIHJlc2lkZS4gWW91IG1pZ2h0IGNo
b29zZSB0byBwdXQgdGhlIGV4dGVybmFsIHNvdXJjZSBpbnNpZGUgdGhlIHRydW5rLCBiZWNhdXNl
IHlvdSB3YW50IGl0IHRvIGJlIHBhcnQgb2YgdGhlIGJyYW5jaCB3aGVuIHlvdSBtYWtlIGEgcmVs
ZWFzZS4gSG93ZXZlciwga2VlcGluZyBpdCBvdXRzaWRlIHRoZSB0cnVuayBpbiBhIHZlcnNpb24t
dGFnZ2VkIGRpcmVjdG9yeSBjYWxsZWQgc29tZXRoaW5nIGxpa2UgYHRoaXJkLXBhcnR5L2dvb2ds
ZXRlc3QvMS4wLjFgLCBpcyBhbm90aGVyIG9wdGlvbi4gT25jZSB0aGUgbG9jYXRpb24gaXMgZXN0
YWJsaXNoZWQsIHVzZSBgc3ZuIHByb3BlZGl0IHN2bjpleHRlcm5hbHMgX2RpcmVjdG9yeV9gIHRv
IHNldCB0aGUgc3ZuOmV4dGVybmFscyBwcm9wZXJ0eSBvbiBhIGRpcmVjdG9yeSBpbiB5b3VyIHJl
cG9zaXRvcnkuIFRoaXMgZGlyZWN0b3J5IHdvbid0IGNvbnRhaW4gdGhlIGNvZGUsIGJ1dCBiZSBp
dHMgdmVyc2lvbmVkIHBhcmVudCBkaXJlY3RvcnkuCisKK1RoZSBjb21tYW5kIGBzdm4gcHJvcGVk
aXRgIHdpbGwgYnJpbmcgdXAgeW91ciBTdWJ2ZXJzaW9uIGVkaXRvciwgbWFraW5nIGVkaXRpbmcg
dGhlIGxvbmcsIChwb3RlbnRpYWxseSBtdWx0aS1saW5lKSBwcm9wZXJ0eSBzaW1wbGVyLiBUaGlz
IHNhbWUgbWV0aG9kIGNhbiBiZSB1c2VkIHRvIGNoZWNrIG91dCBhIHRhZ2dlZCBicmFuY2gsIGJ5
IHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBVUkwgKGUuZy4gYGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2ds
ZWNvZGUuY29tL3N2bi90YWdzL3JlbGVhc2UtMS4wLjFgKS4gQWRkaXRpb25hbGx5LCB0aGUgc3Zu
OmV4dGVybmFscyBwcm9wZXJ0eSBhbGxvd3MgdGhlIHNwZWNpZmljYXRpb24gb2YgYSBwYXJ0aWN1
bGFyIHJldmlzaW9uIG9mIHRoZSB0cnVuayB3aXRoIHRoZSBgLXJfIyNfYCBvcHRpb24gKGUuZy4g
YGV4dGVybmFscy9zcmMvZ29vZ2xldGVzdCAtcjYwIGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNv
ZGUuY29tL3N2bi90cnVua2ApLgorCitIZXJlIGlzIGFuIGV4YW1wbGUgb2YgdXNpbmcgdGhlIHN2
bjpleHRlcm5hbHMgcHJvcGVydGllcyBvbiBhIHRydW5rIChyZWFkIHZpYSBgc3ZuIHByb3BnZXRg
KSBvZiBhIHByb2plY3QuIFRoaXMgdmFsdWUgY2hlY2tzIG91dCBhIGNvcHkgb2YgR29vZ2xlIFRl
c3QgaW50byB0aGUgYHRydW5rL2V4dGVybmFscy9zcmMvZ29vZ2xldGVzdC9gIGRpcmVjdG9yeS4K
KworYGBgCitbQ29tcHV0ZXI6c3ZuXSB1c2VyJCBzdm4gcHJvcGdldCBzdm46ZXh0ZXJuYWxzIHRy
dW5rCitleHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QgaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29k
ZS5jb20vc3ZuL3RydW5rCitgYGAKKworIyBBZGQgdGhlIEZyYW1ld29yayB0byBZb3VyIFByb2pl
Y3QgIworCitUaGUgbmV4dCBzdGVwIGlzIHRvIGJ1aWxkIGFuZCBhZGQgdGhlIGd0ZXN0LmZyYW1l
d29yayB0byB5b3VyIG93biBwcm9qZWN0LiBUaGlzIGd1aWRlIGRlc2NyaWJlcyB0d28gY29tbW9u
IHdheXMgYmVsb3cuCisKKyAgKiAqKk9wdGlvbiAxKiogLS0tIFRoZSBzaW1wbGVzdCB3YXkgdG8g
YWRkIEdvb2dsZSBUZXN0IHRvIHlvdXIgb3duIHByb2plY3QsIGlzIHRvIG9wZW4gZ3Rlc3QueGNv
ZGVwcm9qIChmb3VuZCBpbiB0aGUgeGNvZGUvIGRpcmVjdG9yeSBvZiB0aGUgR29vZ2xlIFRlc3Qg
dHJ1bmspIGFuZCBidWlsZCB0aGUgZnJhbWV3b3JrIG1hbnVhbGx5LiBUaGVuLCBhZGQgdGhlIGJ1
aWx0IGZyYW1ld29yayBpbnRvIHlvdXIgcHJvamVjdCB1c2luZyB0aGUgIkFkZC0+RXhpc3Rpbmcg
RnJhbWV3b3JrLi4uIiBmcm9tIHRoZSBjb250ZXh0IG1lbnUgb3IgIlByb2plY3QtPkFkZC4uLiIg
ZnJvbSB0aGUgbWFpbiBtZW51LiBUaGUgZ3Rlc3QuZnJhbWV3b3JrIGlzIHJlbG9jYXRhYmxlIGFu
ZCBjb250YWlucyB0aGUgaGVhZGVycyBhbmQgb2JqZWN0IGNvZGUgdGhhdCB5b3UnbGwgbmVlZCB0
byBtYWtlIHRlc3RzLiBUaGlzIG1ldGhvZCByZXF1aXJlcyByZWJ1aWxkaW5nIGV2ZXJ5IHRpbWUg
eW91IHVwZ3JhZGUgR29vZ2xlIFRlc3QgaW4geW91ciBwcm9qZWN0LgorICAqICoqT3B0aW9uIDIq
KiAtLS0gSWYgeW91IGFyZSBnb2luZyB0byBiZSBsaXZpbmcgb2ZmIHRoZSB0cnVuayBvZiBHb29n
bGUgVGVzdCwgaW5jb3Jwb3JhdGluZyBpdHMgbGF0ZXN0IGZlYXR1cmVzIGludG8geW91ciB1bml0
IHRlc3RzIChvciBhcmUgYSBHb29nbGUgVGVzdCBkZXZlbG9wZXIgeW91cnNlbGYpLiBZb3UnbGwg
d2FudCB0byByZWJ1aWxkIHRoZSBmcmFtZXdvcmsgZXZlcnkgdGltZSB0aGUgc291cmNlIHVwZGF0
ZXMuIHRvIGRvIHRoaXMsIHlvdSdsbCBuZWVkIHRvIGFkZCB0aGUgZ3Rlc3QueGNvZGVwcm9qIGZp
bGUsIG5vdCB0aGUgZnJhbWV3b3JrIGl0c2VsZiwgdG8geW91ciBvd24gWGNvZGUgcHJvamVjdC4g
VGhlbiwgZnJvbSB0aGUgYnVpbGQgcHJvZHVjdHMgdGhhdCBhcmUgcmV2ZWFsZWQgYnkgdGhlIHBy
b2plY3QncyBkaXNjbG9zdXJlIHRyaWFuZ2xlLCB5b3UgY2FuIGZpbmQgdGhlIGd0ZXN0LmZyYW1l
d29yaywgd2hpY2ggY2FuIGJlIGFkZGVkIHRvIHlvdXIgdGFyZ2V0cyAoZGlzY3Vzc2VkIGJlbG93
KS4KKworIyBNYWtlIGEgVGVzdCBUYXJnZXQgIworCitUbyBzdGFydCB3cml0aW5nIHRlc3RzLCBt
YWtlIGEgbmV3ICJTaGVsbCBUb29sIiB0YXJnZXQuIFRoaXMgdGFyZ2V0IHRlbXBsYXRlIGlzIGF2
YWlsYWJsZSB1bmRlciBCU0QsIENvY29hLCBvciBDYXJib24uIEFkZCB5b3VyIHVuaXQgdGVzdCBz
b3VyY2UgY29kZSB0byB0aGUgIkNvbXBpbGUgU291cmNlcyIgYnVpbGQgcGhhc2Ugb2YgdGhlIHRh
cmdldC4KKworTmV4dCwgeW91J2xsIHdhbnQgdG8gYWRkIGd0ZXN0LmZyYW1ld29yayBpbiB0d28g
ZGlmZmVyZW50IHdheXMsIGRlcGVuZGluZyB1cG9uIHdoaWNoIG9wdGlvbiB5b3UgY2hvc2UgYWJv
dmUuCisKKyAgKiAqKk9wdGlvbiAxKiogLS0tIER1cmluZyBjb21waWxhdGlvbiwgWGNvZGUgd2ls
bCBuZWVkIHRvIGtub3cgdGhhdCB5b3UgYXJlIGxpbmtpbmcgYWdhaW5zdCB0aGUgZ3Rlc3QuZnJh
bWV3b3JrLiBBZGQgdGhlIGd0ZXN0LmZyYW1ld29yayB0byB0aGUgIkxpbmsgQmluYXJ5IHdpdGgg
TGlicmFyaWVzIiBidWlsZCBwaGFzZSBvZiB5b3VyIHRlc3QgdGFyZ2V0LiBUaGlzIHdpbGwgaW5j
bHVkZSB0aGUgR29vZ2xlIFRlc3QgaGVhZGVycyBpbiB5b3VyIGhlYWRlciBzZWFyY2ggcGF0aCwg
YW5kIHdpbGwgdGVsbCB0aGUgbGlua2VyIHdoZXJlIHRvIGZpbmQgdGhlIGxpYnJhcnkuCisgICog
KipPcHRpb24gMioqIC0tLSBJZiB5b3VyIHdvcmtpbmcgb3V0IG9mIHRoZSB0cnVuaywgeW91J2xs
IGFsc28gd2FudCB0byBhZGQgZ3Rlc3QuZnJhbWV3b3JrIHRvIHlvdXIgIkxpbmsgQmluYXJ5IHdp
dGggTGlicmFyaWVzIiBidWlsZCBwaGFzZSBvZiB5b3VyIHRlc3QgdGFyZ2V0LiBJbiBhZGRpdGlv
biwgeW91J2xsICB3YW50IHRvIGFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIGFzIGEgZGVwZW5kZW5j
eSB0byB5b3VyIHVuaXQgdGVzdCB0YXJnZXQuIFRoaXMgd2F5LCBYY29kZSB3aWxsIG1ha2Ugc3Vy
ZSB0aGF0IGd0ZXN0LmZyYW1ld29yayBpcyB1cCB0byBkYXRlLCBldmVyeSB0aW1lIHlvdXIgYnVp
bGQgeW91ciB0YXJnZXQuIEZpbmFsbHksIGlmIHlvdSBkb24ndCBzaGFyZSBidWlsZCBkaXJlY3Rv
cmllcyB3aXRoIEdvb2dsZSBUZXN0LCB5b3UnbGwgaGF2ZSB0byBjb3B5IHRoZSBndGVzdC5mcmFt
ZXdvcmsgaW50byB5b3VyIG93biBidWlsZCBwcm9kdWN0cyBkaXJlY3RvcnkgdXNpbmcgYSAiUnVu
IFNjcmlwdCIgYnVpbGQgcGhhc2UuCisKKyMgU2V0IFVwIHRoZSBFeGVjdXRhYmxlIFJ1biBFbnZp
cm9ubWVudCAjCisKK1NpbmNlIHRoZSB1bml0IHRlc3QgZXhlY3V0YWJsZSBpcyBhIHNoZWxsIHRv
b2wsIGl0IGRvZXNuJ3QgaGF2ZSBhIGJ1bmRsZSB3aXRoIGEgYENvbnRlbnRzL0ZyYW1ld29ya3Ng
IGRpcmVjdG9yeSwgaW4gd2hpY2ggdG8gcGxhY2UgZ3Rlc3QuZnJhbWV3b3JrLiBJbnN0ZWFkLCB0
aGUgZHluYW1pYyBsaW5rZXIgbXVzdCBiZSB0b2xkIGF0IHJ1bnRpbWUgdG8gc2VhcmNoIGZvciB0
aGUgZnJhbWV3b3JrIGluIGFub3RoZXIgbG9jYXRpb24uIFRoaXMgY2FuIGJlIGFjY29tcGxpc2hl
ZCBieSBzZXR0aW5nIHRoZSAiRFlMRFxfRlJBTUVXT1JLXF9QQVRIIiBlbnZpcm9ubWVudCB2YXJp
YWJsZSBpbiB0aGUgIkVkaXQgQWN0aXZlIEV4ZWN1dGFibGUgLi4uIiBBcmd1bWVudHMgdGFiLCB1
bmRlciAiVmFyaWFibGVzIHRvIGJlIHNldCBpbiB0aGUgZW52aXJvbm1lbnQ6Ii4gVGhlIHBhdGgg
Zm9yIHRoaXMgdmFsdWUgaXMgdGhlIHBhdGggKHJlbGF0aXZlIG9yIGFic29sdXRlKSBvZiB0aGUg
ZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGd0ZXN0LmZyYW1ld29yay4KKworSWYgeW91IGhhdmVu
J3Qgc2V0IHVwIHRoZSBEWUxEXF9GUkFNRVdPUktcX1BBVEgsIGNvcnJlY3RseSwgeW91IG1pZ2h0
IGdldCBhIG1lc3NhZ2UgbGlrZSB0aGlzOgorCitgYGAKK1tTZXNzaW9uIHN0YXJ0ZWQgYXQgMjAw
OC0wOC0xNSAwNjoyMzo1NyAtMDYwMC5dCisgIGR5bGQ6IExpYnJhcnkgbm90IGxvYWRlZDogQGxv
YWRlcl9wYXRoLy4uL0ZyYW1ld29ya3MvZ3Rlc3QuZnJhbWV3b3JrL1ZlcnNpb25zL0EvZ3Rlc3QK
KyAgICBSZWZlcmVuY2VkIGZyb206IC9Vc2Vycy91c2VybmFtZS9Eb2N1bWVudHMvU2FuZGJveC9n
dGVzdFNhbXBsZS9idWlsZC9EZWJ1Zy9XaWRnZXRGcmFtZXdvcmtUZXN0CisgICAgUmVhc29uOiBp
bWFnZSBub3QgZm91bmQKK2BgYAorCitUbyBjb3JyZWN0IHRoaXMgcHJvYmxlbSwgZ290IHRvIHRo
ZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZXhlY3V0YWJsZSBuYW1lZCBpbiAiUmVmZXJlbmNl
ZCBmcm9tOiIgdmFsdWUgaW4gdGhlIGVycm9yIG1lc3NhZ2UgYWJvdmUuIFRoZW4sIHdpdGggdGhl
IHRlcm1pbmFsIGluIHRoaXMgbG9jYXRpb24sIGZpbmQgdGhlIHJlbGF0aXZlIHBhdGggdG8gdGhl
IGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsuIFRoYXQgaXMgdGhlIHZh
bHVlIHlvdSdsbCBuZWVkIHRvIHNldCBhcyB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRILgorCisj
IEJ1aWxkIGFuZCBHbyAjCisKK05vdywgd2hlbiB5b3UgY2xpY2sgIkJ1aWxkIGFuZCBHbyIsIHRo
ZSB0ZXN0IHdpbGwgYmUgZXhlY3V0ZWQuIER1bXBpbmcgb3V0IHNvbWV0aGluZyBsaWtlIHRoaXM6
CisKK2BgYAorW1Nlc3Npb24gc3RhcnRlZCBhdCAyMDA4LTA4LTA2IDA2OjM2OjEzIC0wNjAwLl0K
K1s9PT09PT09PT09XSBSdW5uaW5nIDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZS4KK1stLS0tLS0t
LS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCitbLS0tLS0tLS0tLV0gMiB0ZXN0
cyBmcm9tIFdpZGdldEluaXRpYWxpemVyVGVzdAorWyBSVU4gICAgICBdIFdpZGdldEluaXRpYWxp
emVyVGVzdC5UZXN0Q29uc3RydWN0b3IKK1sgICAgICAgT0sgXSBXaWRnZXRJbml0aWFsaXplclRl
c3QuVGVzdENvbnN0cnVjdG9yCitbIFJVTiAgICAgIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRl
c3RDb252ZXJzaW9uCitbICAgICAgIE9LIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb252
ZXJzaW9uCitbLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCitb
PT09PT09PT09PV0gMiB0ZXN0cyBmcm9tIDEgdGVzdCBjYXNlIHJhbi4KK1sgIFBBU1NFRCAgXSAy
IHRlc3RzLgorCitUaGUgRGVidWdnZXIgaGFzIGV4aXRlZCB3aXRoIHN0YXR1cyAwLiAgCitgYGAK
KworIyBTdW1tYXJ5ICMKKworVW5pdCB0ZXN0aW5nIGlzIGEgdmFsdWFibGUgd2F5IHRvIGVuc3Vy
ZSB5b3VyIGRhdGEgbW9kZWwgc3RheXMgdmFsaWQgZXZlbiBkdXJpbmcgcmFwaWQgZGV2ZWxvcG1l
bnQgb3IgcmVmYWN0b3JpbmcuIFRoZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaXMgYSBncmVh
dCB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIGZvciBDIGFuZCBDKysgd2hpY2ggaW50ZWdyYXRlcyB3
ZWxsIHdpdGggYW4gWGNvZGUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9W
MV82X0FkdmFuY2VkR3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzZf
QWR2YW5jZWRHdWlkZS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODg2NGIxNjY3YzFjNDA3MzMwMDlkMWExNzBj
YzFhYmIxMDA4Nzg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
ZG9jcy9WMV82X0FkdmFuY2VkR3VpZGUubWQKQEAgLTAsMCArMSwyMTc4IEBACisKKworTm93IHRo
YXQgeW91IGhhdmUgcmVhZCBbUHJpbWVyXShWMV82X1ByaW1lci5tZCkgYW5kIGxlYXJuZWQgaG93
IHRvIHdyaXRlIHRlc3RzCit1c2luZyBHb29nbGUgVGVzdCwgaXQncyB0aW1lIHRvIGxlYXJuIHNv
bWUgbmV3IHRyaWNrcy4gVGhpcyBkb2N1bWVudAord2lsbCBzaG93IHlvdSBtb3JlIGFzc2VydGlv
bnMgYXMgd2VsbCBhcyBob3cgdG8gY29uc3RydWN0IGNvbXBsZXgKK2ZhaWx1cmUgbWVzc2FnZXMs
IHByb3BhZ2F0ZSBmYXRhbCBmYWlsdXJlcywgcmV1c2UgYW5kIHNwZWVkIHVwIHlvdXIKK3Rlc3Qg
Zml4dHVyZXMsIGFuZCB1c2UgdmFyaW91cyBmbGFncyB3aXRoIHlvdXIgdGVzdHMuCisKKyMgTW9y
ZSBBc3NlcnRpb25zICMKKworVGhpcyBzZWN0aW9uIGNvdmVycyBzb21lIGxlc3MgZnJlcXVlbnRs
eSB1c2VkLCBidXQgc3RpbGwgc2lnbmlmaWNhbnQsCithc3NlcnRpb25zLgorCisjIyBFeHBsaWNp
dCBTdWNjZXNzIGFuZCBGYWlsdXJlICMjCisKK1RoZXNlIHRocmVlIGFzc2VydGlvbnMgZG8gbm90
IGFjdHVhbGx5IHRlc3QgYSB2YWx1ZSBvciBleHByZXNzaW9uLiBJbnN0ZWFkLAordGhleSBnZW5l
cmF0ZSBhIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBkaXJlY3RseS4gTGlrZSB0aGUgbWFjcm9zIHRoYXQg
YWN0dWFsbHkKK3BlcmZvcm0gYSB0ZXN0LCB5b3UgbWF5IHN0cmVhbSBhIGN1c3RvbSBmYWlsdXJl
IG1lc3NhZ2UgaW50byB0aGUgdGhlbS4KKworfCBgU1VDQ0VFRCgpO2AgfAorfDotLS0tLS0tLS0t
LS0tfAorCitHZW5lcmF0ZXMgYSBzdWNjZXNzLiBUaGlzIGRvZXMgTk9UIG1ha2UgdGhlIG92ZXJh
bGwgdGVzdCBzdWNjZWVkLiBBIHRlc3QgaXMKK2NvbnNpZGVyZWQgc3VjY2Vzc2Z1bCBvbmx5IGlm
IG5vbmUgb2YgaXRzIGFzc2VydGlvbnMgZmFpbCBkdXJpbmcgaXRzIGV4ZWN1dGlvbi4KKworTm90
ZTogYFNVQ0NFRUQoKWAgaXMgcHVyZWx5IGRvY3VtZW50YXJ5IGFuZCBjdXJyZW50bHkgZG9lc24n
dCBnZW5lcmF0ZSBhbnkKK3VzZXItdmlzaWJsZSBvdXRwdXQuIEhvd2V2ZXIsIHdlIG1heSBhZGQg
YFNVQ0NFRUQoKWAgbWVzc2FnZXMgdG8gR29vZ2xlIFRlc3Qncworb3V0cHV0IGluIHRoZSBmdXR1
cmUuCisKK3wgYEZBSUwoKTtgICB8IGBBRERfRkFJTFVSRSgpO2AgfCBgQUREX0ZBSUxVUkVfQVQo
ImBfZmlsZVxfcGF0aF9gIiwgYF9saW5lXF9udW1iZXJfYCk7YCB8Cit8Oi0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfAorCitgRkFJTCgpYCBnZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlLCB3
aGlsZSBgQUREX0ZBSUxVUkUoKWAgYW5kIGBBRERfRkFJTFVSRV9BVCgpYCBnZW5lcmF0ZSBhIG5v
bmZhdGFsCitmYWlsdXJlLiBUaGVzZSBhcmUgdXNlZnVsIHdoZW4gY29udHJvbCBmbG93LCByYXRo
ZXIgdGhhbiBhIEJvb2xlYW4gZXhwcmVzc2lvbiwKK2RldGVyZW1pbmVzIHRoZSB0ZXN0J3Mgc3Vj
Y2VzcyBvciBmYWlsdXJlLiBGb3IgZXhhbXBsZSwgeW91IG1pZ2h0IHdhbnQgdG8gd3JpdGUKK3Nv
bWV0aGluZyBsaWtlOgorCitgYGAKK3N3aXRjaChleHByZXNzaW9uKSB7CisgIGNhc2UgMTogLi4u
IHNvbWUgY2hlY2tzIC4uLgorICBjYXNlIDI6IC4uLiBzb21lIG90aGVyIGNoZWNrcworICAuLi4K
KyAgZGVmYXVsdDogRkFJTCgpIDw8ICJXZSBzaG91bGRuJ3QgZ2V0IGhlcmUuIjsKK30KK2BgYAor
CitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgRXhjZXB0aW9uIEFz
c2VydGlvbnMgIyMKKworVGhlc2UgYXJlIGZvciB2ZXJpZnlpbmcgdGhhdCBhIHBpZWNlIG9mIGNv
ZGUgdGhyb3dzIChvciBkb2VzIG5vdAordGhyb3cpIGFuIGV4Y2VwdGlvbiBvZiB0aGUgZ2l2ZW4g
dHlwZToKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8
ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9USFJPVyhgX3N0YXRlbWVudF8sIF9l
eGNlcHRpb25cX3R5cGVfYCk7YCAgfCBgRVhQRUNUX1RIUk9XKGBfc3RhdGVtZW50XywgX2V4Y2Vw
dGlvblxfdHlwZV9gKTtgICB8IF9zdGF0ZW1lbnRfIHRocm93cyBhbiBleGNlcHRpb24gb2YgdGhl
IGdpdmVuIHR5cGUgIHwKK3wgYEFTU0VSVF9BTllfVEhST1coYF9zdGF0ZW1lbnRfYCk7YCAgICAg
ICAgICAgICAgICB8IGBFWFBFQ1RfQU5ZX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAg
ICAgICAgfCBfc3RhdGVtZW50XyB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIGFueSB0eXBlICAgICAg
ICB8Cit8IGBBU1NFUlRfTk9fVEhST1coYF9zdGF0ZW1lbnRfYCk7YCAgICAgICAgICAgICAgICAg
fCBgRVhQRUNUX05PX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAgIHwgX3N0
YXRlbWVudF8gZG9lc24ndCB0aHJvdyBhbnkgZXhjZXB0aW9uICAgICAgICAgICAgfAorCitFeGFt
cGxlczoKKworYGBgCitBU1NFUlRfVEhST1coRm9vKDUpLCBiYXJfZXhjZXB0aW9uKTsKKworRVhQ
RUNUX05PX1RIUk9XKHsKKyAgaW50IG4gPSA1OworICBCYXIoJm4pOworfSk7CitgYGAKKworX0F2
YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4xLjAuCisK
KyMjIFByZWRpY2F0ZSBBc3NlcnRpb25zIGZvciBCZXR0ZXIgRXJyb3IgTWVzc2FnZXMgIyMKKwor
RXZlbiB0aG91Z2ggR29vZ2xlIFRlc3QgaGFzIGEgcmljaCBzZXQgb2YgYXNzZXJ0aW9ucywgdGhl
eSBjYW4gbmV2ZXIgYmUKK2NvbXBsZXRlLCBhcyBpdCdzIGltcG9zc2libGUgKG5vciBhIGdvb2Qg
aWRlYSkgdG8gYW50aWNpcGF0ZSBhbGwgdGhlIHNjZW5hcmlvcworYSB1c2VyIG1pZ2h0IHJ1biBp
bnRvLiBUaGVyZWZvcmUsIHNvbWV0aW1lcyBhIHVzZXIgaGFzIHRvIHVzZSBgRVhQRUNUX1RSVUUo
KWAKK3RvIGNoZWNrIGEgY29tcGxleCBleHByZXNzaW9uLCBmb3IgbGFjayBvZiBhIGJldHRlciBt
YWNyby4gVGhpcyBoYXMgdGhlIHByb2JsZW0KK29mIG5vdCBzaG93aW5nIHlvdSB0aGUgdmFsdWVz
IG9mIHRoZSBwYXJ0cyBvZiB0aGUgZXhwcmVzc2lvbiwgbWFraW5nIGl0IGhhcmQgdG8KK3VuZGVy
c3RhbmQgd2hhdCB3ZW50IHdyb25nLiBBcyBhIHdvcmthcm91bmQsIHNvbWUgdXNlcnMgY2hvb3Nl
IHRvIGNvbnN0cnVjdCB0aGUKK2ZhaWx1cmUgbWVzc2FnZSBieSB0aGVtc2VsdmVzLCBzdHJlYW1p
bmcgaXQgaW50byBgRVhQRUNUX1RSVUUoKWAuIEhvd2V2ZXIsIHRoaXMKK2lzIGF3a3dhcmQgZXNw
ZWNpYWxseSB3aGVuIHRoZSBleHByZXNzaW9uIGhhcyBzaWRlLWVmZmVjdHMgb3IgaXMgZXhwZW5z
aXZlIHRvCitldmFsdWF0ZS4KKworR29vZ2xlIFRlc3QgZ2l2ZXMgeW91IHRocmVlIGRpZmZlcmVu
dCBvcHRpb25zIHRvIHNvbHZlIHRoaXMgcHJvYmxlbToKKworIyMjIFVzaW5nIGFuIEV4aXN0aW5n
IEJvb2xlYW4gRnVuY3Rpb24gIyMjCisKK0lmIHlvdSBhbHJlYWR5IGhhdmUgYSBmdW5jdGlvbiBv
ciBhIGZ1bmN0b3IgdGhhdCByZXR1cm5zIGBib29sYCAob3IgYSB0eXBlCit0aGF0IGNhbiBiZSBp
bXBsaWNpdGx5IGNvbnZlcnRlZCB0byBgYm9vbGApLCB5b3UgY2FuIHVzZSBpdCBpbiBhIF9wcmVk
aWNhdGUKK2Fzc2VydGlvbl8gdG8gZ2V0IHRoZSBmdW5jdGlvbiBhcmd1bWVudHMgcHJpbnRlZCBm
b3IgZnJlZToKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24q
KiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9QUkVEMShgX3ByZWQxLCB2YWwx
X2ApO2AgICAgICAgfCBgRVhQRUNUX1BSRUQxKGBfcHJlZDEsIHZhbDFfYCk7YCB8IF9wcmVkMSh2
YWwxKV8gcmV0dXJucyB0cnVlIHwKK3wgYEFTU0VSVF9QUkVEMihgX3ByZWQyLCB2YWwxLCB2YWwy
X2ApO2AgfCBgRVhQRUNUX1BSRUQyKGBfcHJlZDIsIHZhbDEsIHZhbDJfYCk7YCB8ICBfcHJlZDIo
dmFsMSwgdmFsMilfIHJldHVybnMgdHJ1ZSB8Cit8ICAuLi4gICAgICAgICAgICAgICAgfCAuLi4g
ICAgICAgICAgICAgICAgICAgIHwgLi4uICAgICAgICAgIHwKKworSW4gdGhlIGFib3ZlLCBfcHJl
ZG5fIGlzIGFuIF9uXy1hcnkgcHJlZGljYXRlIGZ1bmN0aW9uIG9yIGZ1bmN0b3IsIHdoZXJlCitf
dmFsMV8sIF92YWwyXywgLi4uLCBhbmQgX3ZhbG5fIGFyZSBpdHMgYXJndW1lbnRzLiBUaGUgYXNz
ZXJ0aW9uIHN1Y2NlZWRzCitpZiB0aGUgcHJlZGljYXRlIHJldHVybnMgYHRydWVgIHdoZW4gYXBw
bGllZCB0byB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBhbmQgZmFpbHMKK290aGVyd2lzZS4gV2hlbiB0
aGUgYXNzZXJ0aW9uIGZhaWxzLCBpdCBwcmludHMgdGhlIHZhbHVlIG9mIGVhY2ggYXJndW1lbnQu
IEluCitlaXRoZXIgY2FzZSwgdGhlIGFyZ3VtZW50cyBhcmUgZXZhbHVhdGVkIGV4YWN0bHkgb25j
ZS4KKworSGVyZSdzIGFuIGV4YW1wbGUuIEdpdmVuCisKK2BgYAorLy8gUmV0dXJucyB0cnVlIGlm
ZiBtIGFuZCBuIGhhdmUgbm8gY29tbW9uIGRpdmlzb3JzIGV4Y2VwdCAxLgorYm9vbCBNdXR1YWxs
eVByaW1lKGludCBtLCBpbnQgbikgeyAuLi4gfQorY29uc3QgaW50IGEgPSAzOworY29uc3QgaW50
IGIgPSA0OworY29uc3QgaW50IGMgPSAxMDsKK2BgYAorCit0aGUgYXNzZXJ0aW9uIGBFWFBFQ1Rf
UFJFRDIoTXV0dWFsbHlQcmltZSwgYSwgYik7YCB3aWxsIHN1Y2NlZWQsIHdoaWxlIHRoZQorYXNz
ZXJ0aW9uIGBFWFBFQ1RfUFJFRDIoTXV0dWFsbHlQcmltZSwgYiwgYyk7YCB3aWxsIGZhaWwgd2l0
aCB0aGUgbWVzc2FnZQorCis8cHJlPgorIU11dHVhbGx5UHJpbWUoYiwgYykgaXMgZmFsc2UsIHdo
ZXJlPGJyPgorYiBpcyA0PGJyPgorYyBpcyAxMDxicj4KKzwvcHJlPgorCisqKk5vdGVzOioqCisK
KyAgMS4gSWYgeW91IHNlZSBhIGNvbXBpbGVyIGVycm9yICJubyBtYXRjaGluZyBmdW5jdGlvbiB0
byBjYWxsIiB3aGVuIHVzaW5nIGBBU1NFUlRfUFJFRCpgIG9yIGBFWFBFQ1RfUFJFRCpgLCBwbGVh
c2Ugc2VlIFt0aGlzXSh2MV82X0ZBUS5tZCNpdGhlLWNvbXBpbGVyLWNvbXBsYWlucy1hYm91dC11
bmRlZmluZWQtcmVmZXJlbmNlcy10by1zb21lLXN0YXRpYy1jb25zdC1tZW1iZXItdmFyaWFibGVz
LWJ1dC1pLWRpZC1kZWZpbmUtdGhlbS1pbi10aGUtY2xhc3MtYm9keS13aGF0cy13cm9uZykgZm9y
IGhvdyB0byByZXNvbHZlIGl0LgorICAxLiBDdXJyZW50bHkgd2Ugb25seSBwcm92aWRlIHByZWRp
Y2F0ZSBhc3NlcnRpb25zIG9mIGFyaXR5IDw9IDUuIElmIHlvdSBuZWVkIGEgaGlnaGVyLWFyaXR5
IGFzc2VydGlvbiwgbGV0IHVzIGtub3cuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjCisKKyMjIyBVc2luZyBhIEZ1bmN0aW9uIFRoYXQgUmV0dXJucyBhbiBBc3NlcnRpb25S
ZXN1bHQgIyMjCisKK1doaWxlIGBFWFBFQ1RfUFJFRCooKWAgYW5kIGZyaWVuZHMgYXJlIGhhbmR5
IGZvciBhIHF1aWNrIGpvYiwgdGhlCitzeW50YXggaXMgbm90IHNhdGlzZmFjdG9yeTogeW91IGhh
dmUgdG8gdXNlIGRpZmZlcmVudCBtYWNyb3MgZm9yCitkaWZmZXJlbnQgYXJpdGllcywgYW5kIGl0
IGZlZWxzIG1vcmUgbGlrZSBMaXNwIHRoYW4gQysrLiAgVGhlCitgOjp0ZXN0aW5nOjpBc3NlcnRp
b25SZXN1bHRgIGNsYXNzIHNvbHZlcyB0aGlzIHByb2JsZW0uCisKK0FuIGBBc3NlcnRpb25SZXN1
bHRgIG9iamVjdCByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYW4gYXNzZXJ0aW9uCisod2hldGhl
ciBpdCdzIGEgc3VjY2VzcyBvciBhIGZhaWx1cmUsIGFuZCBhbiBhc3NvY2lhdGVkIG1lc3NhZ2Up
LiAgWW91CitjYW4gY3JlYXRlIGFuIGBBc3NlcnRpb25SZXN1bHRgIHVzaW5nIG9uZSBvZiB0aGVz
ZSBmYWN0b3J5CitmdW5jdGlvbnM6CisKK2BgYAorbmFtZXNwYWNlIHRlc3RpbmcgeworCisvLyBS
ZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBhbiBhc3Nl
cnRpb24gaGFzCisvLyBzdWNjZWVkZWQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uU3VjY2Vz
cygpOworCisvLyBSZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUg
dGhhdCBhbiBhc3NlcnRpb24gaGFzCisvLyBmYWlsZWQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0
aW9uRmFpbHVyZSgpOworCit9CitgYGAKKworWW91IGNhbiB0aGVuIHVzZSB0aGUgYDw8YCBvcGVy
YXRvciB0byBzdHJlYW0gbWVzc2FnZXMgdG8gdGhlCitgQXNzZXJ0aW9uUmVzdWx0YCBvYmplY3Qu
CisKK1RvIHByb3ZpZGUgbW9yZSByZWFkYWJsZSBtZXNzYWdlcyBpbiBCb29sZWFuIGFzc2VydGlv
bnMKKyhlLmcuIGBFWFBFQ1RfVFJVRSgpYCksIHdyaXRlIGEgcHJlZGljYXRlIGZ1bmN0aW9uIHRo
YXQgcmV0dXJucworYEFzc2VydGlvblJlc3VsdGAgaW5zdGVhZCBvZiBgYm9vbGAuIEZvciBleGFt
cGxlLCBpZiB5b3UgZGVmaW5lCitgSXNFdmVuKClgIGFzOgorCitgYGAKKzo6dGVzdGluZzo6QXNz
ZXJ0aW9uUmVzdWx0IElzRXZlbihpbnQgbikgeworICBpZiAoKG4gJSAyKSA9PSAwKQorICAgIHJl
dHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKKyAgZWxzZQorICAgIHJldHVybiA6
OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2RkIjsKK30KK2BgYAor
CitpbnN0ZWFkIG9mOgorCitgYGAKK2Jvb2wgSXNFdmVuKGludCBuKSB7CisgIHJldHVybiAobiAl
IDIpID09IDA7Cit9CitgYGAKKwordGhlIGZhaWxlZCBhc3NlcnRpb24gYEVYUEVDVF9UUlVFKElz
RXZlbihGaWIoNCkpKWAgd2lsbCBwcmludDoKKworPHByZT4KK1ZhbHVlIG9mOiAhSXNFdmVuKEZp
Yig0KSk8YnI+CitBY3R1YWw6IGZhbHNlICgqMyBpcyBvZGQqKTxicj4KK0V4cGVjdGVkOiB0cnVl
PGJyPgorPC9wcmU+CisKK2luc3RlYWQgb2YgYSBtb3JlIG9wYXF1ZQorCis8cHJlPgorVmFsdWUg
b2Y6ICFJc0V2ZW4oRmliKDQpKTxicj4KK0FjdHVhbDogZmFsc2U8YnI+CitFeHBlY3RlZDogdHJ1
ZTxicj4KKzwvcHJlPgorCitJZiB5b3Ugd2FudCBpbmZvcm1hdGl2ZSBtZXNzYWdlcyBpbiBgRVhQ
RUNUX0ZBTFNFYCBhbmQgYEFTU0VSVF9GQUxTRWAKK2FzIHdlbGwsIGFuZCBhcmUgZmluZSB3aXRo
IG1ha2luZyB0aGUgcHJlZGljYXRlIHNsb3dlciBpbiB0aGUgc3VjY2VzcworY2FzZSwgeW91IGNh
biBzdXBwbHkgYSBzdWNjZXNzIG1lc3NhZ2U6CisKK2BgYAorOjp0ZXN0aW5nOjpBc3NlcnRpb25S
ZXN1bHQgSXNFdmVuKGludCBuKSB7CisgIGlmICgobiAlIDIpID09IDApCisgICAgcmV0dXJuIDo6
dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpIDw8IG4gPDwgIiBpcyBldmVuIjsKKyAgZWxzZQor
ICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2Rk
IjsKK30KK2BgYAorCitUaGVuIHRoZSBzdGF0ZW1lbnQgYEVYUEVDVF9GQUxTRShJc0V2ZW4oRmli
KDYpKSlgIHdpbGwgcHJpbnQKKworPHByZT4KK1ZhbHVlIG9mOiAhSXNFdmVuKEZpYig2KSk8YnI+
CitBY3R1YWw6IHRydWUgKDggaXMgZXZlbik8YnI+CitFeHBlY3RlZDogZmFsc2U8YnI+Cis8L3By
ZT4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24g
MS40LjEuCisKKyMjIyBVc2luZyBhIFByZWRpY2F0ZS1Gb3JtYXR0ZXIgIyMjCisKK0lmIHlvdSBm
aW5kIHRoZSBkZWZhdWx0IG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IGAoQVNTRVJUfEVYUEVDVClfUFJF
RCpgIGFuZAorYChBU1NFUlR8RVhQRUNUKV8oVFJVRXxGQUxTRSlgIHVuc2F0aXNmYWN0b3J5LCBv
ciBzb21lIGFyZ3VtZW50cyB0byB5b3VyCitwcmVkaWNhdGUgZG8gbm90IHN1cHBvcnQgc3RyZWFt
aW5nIHRvIGBvc3RyZWFtYCwgeW91IGNhbiBpbnN0ZWFkIHVzZSB0aGUKK2ZvbGxvd2luZyBfcHJl
ZGljYXRlLWZvcm1hdHRlciBhc3NlcnRpb25zXyB0byBfZnVsbHlfIGN1c3RvbWl6ZSBob3cgdGhl
CittZXNzYWdlIGlzIGZvcm1hdHRlZDoKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25m
YXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9QUkVE
X0ZPUk1BVDEoYF9wcmVkXF9mb3JtYXQxLCB2YWwxX2ApO2AgICAgICAgIHwgYEVYUEVDVF9QUkVE
X0ZPUk1BVDEoYF9wcmVkXF9mb3JtYXQxLCB2YWwxX2ApOyB8IF9wcmVkXF9mb3JtYXQxKHZhbDEp
XyBpcyBzdWNjZXNzZnVsIHwKK3wgYEFTU0VSVF9QUkVEX0ZPUk1BVDIoYF9wcmVkXF9mb3JtYXQy
LCB2YWwxLCB2YWwyX2ApO2AgfCBgRVhQRUNUX1BSRURfRk9STUFUMihgX3ByZWRcX2Zvcm1hdDIs
IHZhbDEsIHZhbDJfYCk7YCB8IF9wcmVkXF9mb3JtYXQyKHZhbDEsIHZhbDIpXyBpcyBzdWNjZXNz
ZnVsIHwKK3wgYC4uLmAgICAgICAgICAgICAgICB8IGAuLi5gICAgICAgICAgICAgICAgICAgfCBg
Li4uYCAgICAgICAgfAorCitUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIHRoZSBwcmV2
aW91cyB0d28gZ3JvdXBzIG9mIG1hY3JvcyBpcyB0aGF0IGluc3RlYWQgb2YKK2EgcHJlZGljYXRl
LCBgKEFTU0VSVHxFWFBFQ1QpX1BSRURfRk9STUFUKmAgdGFrZSBhIF9wcmVkaWNhdGUtZm9ybWF0
dGVyXworKF9wcmVkXF9mb3JtYXRuXyksIHdoaWNoIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3RvciB3
aXRoIHRoZSBzaWduYXR1cmU6CisKK2A6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkaWNh
dGVGb3JtYXR0ZXJuKGNvbnN0IGNoYXIqIGBfZXhwcjFfYCwgY29uc3QgY2hhciogYF9leHByMl9g
LCAuLi4gY29uc3QgY2hhciogYF9leHBybl9gLCBUMSBgX3ZhbDFfYCwgVDIgYF92YWwyX2AsIC4u
LiBUbiBgX3ZhbG5fYCk7YAorCit3aGVyZSBfdmFsMV8sIF92YWwyXywgLi4uLCBhbmQgX3ZhbG5f
IGFyZSB0aGUgdmFsdWVzIG9mIHRoZSBwcmVkaWNhdGUKK2FyZ3VtZW50cywgYW5kIF9leHByMV8s
IF9leHByMl8sIC4uLiwgYW5kIF9leHBybl8gYXJlIHRoZSBjb3JyZXNwb25kaW5nCitleHByZXNz
aW9ucyBhcyB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGNvZGUuIFRoZSB0eXBlcyBgVDFgLCBg
VDJgLCAuLi4sIGFuZAorYFRuYCBjYW4gYmUgZWl0aGVyIHZhbHVlIHR5cGVzIG9yIHJlZmVyZW5j
ZSB0eXBlcy4gRm9yIGV4YW1wbGUsIGlmIGFuCithcmd1bWVudCBoYXMgdHlwZSBgRm9vYCwgeW91
IGNhbiBkZWNsYXJlIGl0IGFzIGVpdGhlciBgRm9vYCBvciBgY29uc3QgRm9vJmAsCit3aGljaGV2
ZXIgaXMgYXBwcm9wcmlhdGUuCisKK0EgcHJlZGljYXRlLWZvcm1hdHRlciByZXR1cm5zIGEgYDo6
dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0YCBvYmplY3QgdG8gaW5kaWNhdGUKK3doZXRoZXIgdGhl
IGFzc2VydGlvbiBoYXMgc3VjY2VlZGVkIG9yIG5vdC4gVGhlIG9ubHkgd2F5IHRvIGNyZWF0ZSBz
dWNoIGFuCitvYmplY3QgaXMgdG8gY2FsbCBvbmUgb2YgdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnM6
CisKK0FzIGFuIGV4YW1wbGUsIGxldCdzIGltcHJvdmUgdGhlIGZhaWx1cmUgbWVzc2FnZSBpbiB0
aGUgcHJldmlvdXMgZXhhbXBsZSwgd2hpY2ggdXNlcyBgRVhQRUNUX1BSRUQyKClgOgorCitgYGAK
Ky8vIFJldHVybnMgdGhlIHNtYWxsZXN0IHByaW1lIGNvbW1vbiBkaXZpc29yIG9mIG0gYW5kIG4s
CisvLyBvciAxIHdoZW4gbSBhbmQgbiBhcmUgbXV0dWFsbHkgcHJpbWUuCitpbnQgU21hbGxlc3RQ
cmltZUNvbW1vbkRpdmlzb3IoaW50IG0sIGludCBuKSB7IC4uLiB9CisKKy8vIEEgcHJlZGljYXRl
LWZvcm1hdHRlciBmb3IgYXNzZXJ0aW5nIHRoYXQgdHdvIGludGVnZXJzIGFyZSBtdXR1YWxseSBw
cmltZS4KKzo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IEFzc2VydE11dHVhbGx5UHJpbWUoY29u
c3QgY2hhciogbV9leHByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBuX2V4cHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgbikgeworICBpZiAoTXV0dWFsbHlQcmltZShtLCBuKSkKKyAg
ICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CisKKyAgcmV0dXJuIDo6dGVz
dGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBtX2V4cHIgPDwgIiBhbmQgIiA8PCBu
X2V4cHIgPDwgIiAoIiA8PCBtIDw8ICIgYW5kICIgPDwgbgorICAgICAgPDwgIikgYXJlIG5vdCBt
dXR1YWxseSBwcmltZSwgIiA8PCAiYXMgdGhleSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgIgorICAg
ICAgPDwgU21hbGxlc3RQcmltZUNvbW1vbkRpdmlzb3IobSwgbik7Cit9CitgYGAKKworV2l0aCB0
aGlzIHByZWRpY2F0ZS1mb3JtYXR0ZXIsIHdlIGNhbiB1c2UKKworYGBgCitFWFBFQ1RfUFJFRF9G
T1JNQVQyKEFzc2VydE11dHVhbGx5UHJpbWUsIGIsIGMpOworYGBgCisKK3RvIGdlbmVyYXRlIHRo
ZSBtZXNzYWdlCisKKzxwcmU+CitiIGFuZCBjICg0IGFuZCAxMCkgYXJlIG5vdCBtdXR1YWxseSBw
cmltZSwgYXMgdGhleSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgMi48YnI+Cis8L3ByZT4KKworQXMg
eW91IG1heSBoYXZlIHJlYWxpemVkLCBtYW55IG9mIHRoZSBhc3NlcnRpb25zIHdlIGludHJvZHVj
ZWQgZWFybGllciBhcmUKK3NwZWNpYWwgY2FzZXMgb2YgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZP
Uk1BVCpgLiBJbiBmYWN0LCBtb3N0IG9mIHRoZW0gYXJlCitpbmRlZWQgZGVmaW5lZCB1c2luZyBg
KEVYUEVDVHxBU1NFUlQpX1BSRURfRk9STUFUKmAuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwg
V2luZG93cywgTWFjLgorCisKKyMjIEZsb2F0aW5nLVBvaW50IENvbXBhcmlzb24gIyMKKworQ29t
cGFyaW5nIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgaXMgdHJpY2t5LiBEdWUgdG8gcm91bmQtb2Zm
IGVycm9ycywgaXQgaXMKK3ZlcnkgdW5saWtlbHkgdGhhdCB0d28gZmxvYXRpbmctcG9pbnRzIHdp
bGwgbWF0Y2ggZXhhY3RseS4gVGhlcmVmb3JlLAorYEFTU0VSVF9FUWAgJ3MgbmFpdmUgY29tcGFy
aXNvbiB1c3VhbGx5IGRvZXNuJ3Qgd29yay4gQW5kIHNpbmNlIGZsb2F0aW5nLXBvaW50cworY2Fu
IGhhdmUgYSB3aWRlIHZhbHVlIHJhbmdlLCBubyBzaW5nbGUgZml4ZWQgZXJyb3IgYm91bmQgd29y
a3MuIEl0J3MgYmV0dGVyIHRvCitjb21wYXJlIGJ5IGEgZml4ZWQgcmVsYXRpdmUgZXJyb3IgYm91
bmQsIGV4Y2VwdCBmb3IgdmFsdWVzIGNsb3NlIHRvIDAgZHVlIHRvCit0aGUgbG9zcyBvZiBwcmVj
aXNpb24gdGhlcmUuCisKK0luIGdlbmVyYWwsIGZvciBmbG9hdGluZy1wb2ludCBjb21wYXJpc29u
IHRvIG1ha2Ugc2Vuc2UsIHRoZSB1c2VyIG5lZWRzIHRvCitjYXJlZnVsbHkgY2hvb3NlIHRoZSBl
cnJvciBib3VuZC4gSWYgdGhleSBkb24ndCB3YW50IG9yIGNhcmUgdG8sIGNvbXBhcmluZyBpbgor
dGVybXMgb2YgVW5pdHMgaW4gdGhlIExhc3QgUGxhY2UgKFVMUHMpIGlzIGEgZ29vZCBkZWZhdWx0
LCBhbmQgR29vZ2xlIFRlc3QKK3Byb3ZpZGVzIGFzc2VydGlvbnMgdG8gZG8gdGhpcy4gRnVsbCBk
ZXRhaWxzIGFib3V0IFVMUHMgYXJlIHF1aXRlIGxvbmc7IGlmIHlvdQord2FudCB0byBsZWFybiBt
b3JlLCBzZWUKK1t0aGlzIGFydGljbGUgb24gZmxvYXQgY29tcGFyaXNvbl0oaHR0cDovL3d3dy5j
eWdudXMtc29mdHdhcmUuY29tL3BhcGVycy9jb21wYXJpbmdmbG9hdHMvY29tcGFyaW5nZmxvYXRz
Lmh0bSkuCisKKyMjIyBGbG9hdGluZy1Qb2ludCBNYWNyb3MgIyMjCisKK3wgKipGYXRhbCBhc3Nl
cnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0t
LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18
Cit8IGBBU1NFUlRfRkxPQVRfRVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgIHwgYEVYUEVDVF9G
TE9BVF9FUShgX2V4cGVjdGVkLCBhY3R1YWxfYCk7YCB8IHRoZSB0d28gYGZsb2F0YCB2YWx1ZXMg
YXJlIGFsbW9zdCBlcXVhbCB8Cit8IGBBU1NFUlRfRE9VQkxFX0VRKGBfZXhwZWN0ZWQsIGFjdHVh
bF9gKTtgIHwgYEVYUEVDVF9ET1VCTEVfRVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgfCB0aGUg
dHdvIGBkb3VibGVgIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsIHwKKworQnkgImFsbW9zdCBlcXVh
bCIsIHdlIG1lYW4gdGhlIHR3byB2YWx1ZXMgYXJlIHdpdGhpbiA0IFVMUCdzIGZyb20gZWFjaAor
b3RoZXIuCisKK1RoZSBmb2xsb3dpbmcgYXNzZXJ0aW9ucyBhbGxvdyB5b3UgdG8gY2hvb3NlIHRo
ZSBhY2NlcHRhYmxlIGVycm9yIGJvdW5kOgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5v
bmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0t
LS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX05F
QVIoYF92YWwxLCB2YWwyLCBhYnNcX2Vycm9yX2ApO2AgfCBgRVhQRUNUX05FQVJgXyh2YWwxLCB2
YWwyLCBhYnNcX2Vycm9yX2ApO2AgfCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIF92YWwxXyBhbmQg
X3ZhbDJfIGRvZXNuJ3QgZXhjZWVkIHRoZSBnaXZlbiBhYnNvbHV0ZSBlcnJvciB8CisKK19BdmFp
bGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgRmxvYXRpbmctUG9pbnQgUHJl
ZGljYXRlLUZvcm1hdCBGdW5jdGlvbnMgIyMjCisKK1NvbWUgZmxvYXRpbmctcG9pbnQgb3BlcmF0
aW9ucyBhcmUgdXNlZnVsLCBidXQgbm90IHRoYXQgb2Z0ZW4gdXNlZC4gSW4gb3JkZXIKK3RvIGF2
b2lkIGFuIGV4cGxvc2lvbiBvZiBuZXcgbWFjcm9zLCB3ZSBwcm92aWRlIHRoZW0gYXMgcHJlZGlj
YXRlLWZvcm1hdAorZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgaW4gcHJlZGljYXRlIGFzc2Vy
dGlvbiBtYWNyb3MgKGUuZy4KK2BFWFBFQ1RfUFJFRF9GT1JNQVQyYCwgZXRjKS4KKworYGBgCitF
WFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RmxvYXRMRSwgdmFsMSwgdmFsMik7CitFWFBF
Q1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RG91YmxlTEUsIHZhbDEsIHZhbDIpOworYGBgCisK
K1ZlcmlmaWVzIHRoYXQgX3ZhbDFfIGlzIGxlc3MgdGhhbiwgb3IgYWxtb3N0IGVxdWFsIHRvLCBf
dmFsMl8uIFlvdSBjYW4KK3JlcGxhY2UgYEVYUEVDVF9QUkVEX0ZPUk1BVDJgIGluIHRoZSBhYm92
ZSB0YWJsZSB3aXRoIGBBU1NFUlRfUFJFRF9GT1JNQVQyYC4KKworX0F2YWlsYWJpbGl0eV86IExp
bnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIFdpbmRvd3MgSFJFU1VMVCBhc3NlcnRpb25zICMjCisK
K1RoZXNlIGFzc2VydGlvbnMgdGVzdCBmb3IgYEhSRVNVTFRgIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4K
KworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVy
aWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChgX2V4cHJlc3Np
b25fYCk7YCB8IGBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQoYF9leHByZXNzaW9uX2ApO2AgfCBf
ZXhwcmVzc2lvbl8gaXMgYSBzdWNjZXNzIGBIUkVTVUxUYCB8Cit8IGBBU1NFUlRfSFJFU1VMVF9G
QUlMRUQoYF9leHByZXNzaW9uX2ApO2AgICAgfCBgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKGBfZXhw
cmVzc2lvbl9gKTtgICAgIHwgX2V4cHJlc3Npb25fIGlzIGEgZmFpbHVyZSBgSFJFU1VMVGAgfAor
CitUaGUgZ2VuZXJhdGVkIG91dHB1dCBjb250YWlucyB0aGUgaHVtYW4tcmVhZGFibGUgZXJyb3Ig
bWVzc2FnZQorYXNzb2NpYXRlZCB3aXRoIHRoZSBgSFJFU1VMVGAgY29kZSByZXR1cm5lZCBieSBf
ZXhwcmVzc2lvbl8uCisKK1lvdSBtaWdodCB1c2UgdGhlbSBsaWtlIHRoaXM6CisKK2BgYAorQ0Nv
bVB0ciBzaGVsbDsKK0FTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChzaGVsbC5Db0NyZWF0ZUluc3Rh
bmNlKEwiU2hlbGwuQXBwbGljYXRpb24iKSk7CitDQ29tVmFyaWFudCBlbXB0eTsKK0FTU0VSVF9I
UkVTVUxUX1NVQ0NFRURFRChzaGVsbC0+U2hlbGxFeGVjdXRlKENDb21CU1RSKHVybCksIGVtcHR5
LCBlbXB0eSwgZW1wdHksIGVtcHR5KSk7CitgYGAKKworX0F2YWlsYWJpbGl0eV86IFdpbmRvd3Mu
CisKKyMjIFR5cGUgQXNzZXJ0aW9ucyAjIworCitZb3UgY2FuIGNhbGwgdGhlIGZ1bmN0aW9uCitg
YGAKKzo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4oKTsKK2BgYAordG8gYXNz
ZXJ0IHRoYXQgdHlwZXMgYFQxYCBhbmQgYFQyYCBhcmUgdGhlIHNhbWUuICBUaGUgZnVuY3Rpb24g
ZG9lcworbm90aGluZyBpZiB0aGUgYXNzZXJ0aW9uIGlzIHNhdGlzZmllZC4gIElmIHRoZSB0eXBl
cyBhcmUgZGlmZmVyZW50LAordGhlIGZ1bmN0aW9uIGNhbGwgd2lsbCBmYWlsIHRvIGNvbXBpbGUs
IGFuZCB0aGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZQord2lsbCBsaWtlbHkgKGRlcGVuZGluZyBv
biB0aGUgY29tcGlsZXIpIHNob3cgeW91IHRoZSBhY3R1YWwgdmFsdWVzIG9mCitgVDFgIGFuZCBg
VDJgLiAgVGhpcyBpcyBtYWlubHkgdXNlZnVsIGluc2lkZSB0ZW1wbGF0ZSBjb2RlLgorCitfQ2F2
ZWF0Ol8gV2hlbiB1c2VkIGluc2lkZSBhIG1lbWJlciBmdW5jdGlvbiBvZiBhIGNsYXNzIHRlbXBs
YXRlIG9yIGEKK2Z1bmN0aW9uIHRlbXBsYXRlLCBgU3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4o
KWAgaXMgZWZmZWN0aXZlIF9vbmx5IGlmXwordGhlIGZ1bmN0aW9uIGlzIGluc3RhbnRpYXRlZC4g
IEZvciBleGFtcGxlLCBnaXZlbjoKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZv
byB7CisgcHVibGljOgorICB2b2lkIEJhcigpIHsgOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBl
RXE8aW50LCBUPigpOyB9Cit9OworYGBgCit0aGUgY29kZToKK2BgYAordm9pZCBUZXN0MSgpIHsg
Rm9vPGJvb2w+IGZvbzsgfQorYGBgCit3aWxsIF9ub3RfIGdlbmVyYXRlIGEgY29tcGlsZXIgZXJy
b3IsIGFzIGBGb288Ym9vbD46OkJhcigpYCBpcyBuZXZlcgorYWN0dWFsbHkgaW5zdGFudGlhdGVk
LiAgSW5zdGVhZCwgeW91IG5lZWQ6CitgYGAKK3ZvaWQgVGVzdDIoKSB7IEZvbzxib29sPiBmb287
IGZvby5CYXIoKTsgfQorYGBgCit0byBjYXVzZSBhIGNvbXBpbGVyIGVycm9yLgorCitfQXZhaWxh
YmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lvbiAxLjMuMC4KKworIyMg
QXNzZXJ0aW9uIFBsYWNlbWVudCAjIworCitZb3UgY2FuIHVzZSBhc3NlcnRpb25zIGluIGFueSBD
KysgZnVuY3Rpb24uIEluIHBhcnRpY3VsYXIsIGl0IGRvZXNuJ3QKK2hhdmUgdG8gYmUgYSBtZXRo
b2Qgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4gVGhlIG9uZSBjb25zdHJhaW50IGlzCit0aGF0
IGFzc2VydGlvbnMgdGhhdCBnZW5lcmF0ZSBhIGZhdGFsIGZhaWx1cmUgKGBGQUlMKmAgYW5kIGBB
U1NFUlRfKmApCitjYW4gb25seSBiZSB1c2VkIGluIHZvaWQtcmV0dXJuaW5nIGZ1bmN0aW9ucy4g
VGhpcyBpcyBhIGNvbnNlcXVlbmNlIG9mCitHb29nbGUgVGVzdCBub3QgdXNpbmcgZXhjZXB0aW9u
cy4gQnkgcGxhY2luZyBpdCBpbiBhIG5vbi12b2lkIGZ1bmN0aW9uCit5b3UnbGwgZ2V0IGEgY29u
ZnVzaW5nIGNvbXBpbGUgZXJyb3IgbGlrZQorYCJlcnJvcjogdm9pZCB2YWx1ZSBub3QgaWdub3Jl
ZCBhcyBpdCBvdWdodCB0byBiZSJgLgorCitJZiB5b3UgbmVlZCB0byB1c2UgYXNzZXJ0aW9ucyBp
biBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBub24tdm9pZCwgb25lIG9wdGlvbgoraXMgdG8gbWFr
ZSB0aGUgZnVuY3Rpb24gcmV0dXJuIHRoZSB2YWx1ZSBpbiBhbiBvdXQgcGFyYW1ldGVyIGluc3Rl
YWQuIEZvcgorZXhhbXBsZSwgeW91IGNhbiByZXdyaXRlIGBUMiBGb28oVDEgeClgIHRvIGB2b2lk
IEZvbyhUMSB4LCBUMiogcmVzdWx0KWAuIFlvdQorbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgKnJl
c3VsdGAgY29udGFpbnMgc29tZSBzZW5zaWJsZSB2YWx1ZSBldmVuIHdoZW4gdGhlCitmdW5jdGlv
biByZXR1cm5zIHByZW1hdHVyZWx5LiBBcyB0aGUgZnVuY3Rpb24gbm93IHJldHVybnMgYHZvaWRg
LCB5b3UgY2FuIHVzZQorYW55IGFzc2VydGlvbiBpbnNpZGUgb2YgaXQuCisKK0lmIGNoYW5naW5n
IHRoZSBmdW5jdGlvbidzIHR5cGUgaXMgbm90IGFuIG9wdGlvbiwgeW91IHNob3VsZCBqdXN0IHVz
ZQorYXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIG5vbi1mYXRhbCBmYWlsdXJlcywgc3VjaCBhcyBg
QUREX0ZBSUxVUkUqYCBhbmQKK2BFWFBFQ1RfKmAuCisKK19Ob3RlXzogQ29uc3RydWN0b3JzIGFu
ZCBkZXN0cnVjdG9ycyBhcmUgbm90IGNvbnNpZGVyZWQgdm9pZC1yZXR1cm5pbmcKK2Z1bmN0aW9u
cywgYWNjb3JkaW5nIHRvIHRoZSBDKysgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbiwgYW5kIHNvIHlv
dSBtYXkgbm90IHVzZQorZmF0YWwgYXNzZXJ0aW9ucyBpbiB0aGVtLiBZb3UnbGwgZ2V0IGEgY29t
cGlsYXRpb24gZXJyb3IgaWYgeW91IHRyeS4gQSBzaW1wbGUKK3dvcmthcm91bmQgaXMgdG8gdHJh
bnNmZXIgdGhlIGVudGlyZSBib2R5IG9mIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yIHRv
IGEKK3ByaXZhdGUgdm9pZC1yZXR1cm5pbmcgbWV0aG9kLiBIb3dldmVyLCB5b3Ugc2hvdWxkIGJl
IGF3YXJlIHRoYXQgYSBmYXRhbAorYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYSBjb25zdHJ1Y3RvciBk
b2VzIG5vdCB0ZXJtaW5hdGUgdGhlIGN1cnJlbnQgdGVzdCwgYXMgeW91cgoraW50dWl0aW9uIG1p
Z2h0IHN1Z2dlc3Q7IGl0IG1lcmVseSByZXR1cm5zIGZyb20gdGhlIGNvbnN0cnVjdG9yIGVhcmx5
LCBwb3NzaWJseQorbGVhdmluZyB5b3VyIG9iamVjdCBpbiBhIHBhcnRpYWxseS1jb25zdHJ1Y3Rl
ZCBzdGF0ZS4gTGlrZXdpc2UsIGEgZmF0YWwKK2Fzc2VydGlvbiBmYWlsdXJlIGluIGEgZGVzdHJ1
Y3RvciBtYXkgbGVhdmUgeW91ciBvYmplY3QgaW4gYQorcGFydGlhbGx5LWRlc3RydWN0ZWQgc3Rh
dGUuIFVzZSBhc3NlcnRpb25zIGNhcmVmdWxseSBpbiB0aGVzZSBzaXR1YXRpb25zIQorCisjIFRl
YWNoaW5nIEdvb2dsZSBUZXN0IEhvdyB0byBQcmludCBZb3VyIFZhbHVlcyAjCisKK1doZW4gYSB0
ZXN0IGFzc2VydGlvbiBzdWNoIGFzIGBFWFBFQ1RfRVFgIGZhaWxzLCBHb29nbGUgVGVzdCBwcmlu
dHMgdGhlCithcmd1bWVudCB2YWx1ZXMgdG8gaGVscCB5b3UgZGVidWcuICBJdCBkb2VzIHRoaXMg
dXNpbmcgYQordXNlci1leHRlbnNpYmxlIHZhbHVlIHByaW50ZXIuCisKK1RoaXMgcHJpbnRlciBr
bm93cyBob3cgdG8gcHJpbnQgYnVpbHQtaW4gQysrIHR5cGVzLCBuYXRpdmUgYXJyYXlzLCBTVEwK
K2NvbnRhaW5lcnMsIGFuZCBhbnkgdHlwZSB0aGF0IHN1cHBvcnRzIHRoZSBgPDxgIG9wZXJhdG9y
LiAgRm9yIG90aGVyCit0eXBlcywgaXQgcHJpbnRzIHRoZSByYXcgYnl0ZXMgaW4gdGhlIHZhbHVl
IGFuZCBob3BlcyB0aGF0IHlvdSB0aGUKK3VzZXIgY2FuIGZpZ3VyZSBpdCBvdXQuCisKK0FzIG1l
bnRpb25lZCBlYXJsaWVyLCB0aGUgcHJpbnRlciBpcyBfZXh0ZW5zaWJsZV8uICBUaGF0IG1lYW5z
Cit5b3UgY2FuIHRlYWNoIGl0IHRvIGRvIGEgYmV0dGVyIGpvYiBhdCBwcmludGluZyB5b3VyIHBh
cnRpY3VsYXIgdHlwZQordGhhbiB0byBkdW1wIHRoZSBieXRlcy4gIFRvIGRvIHRoYXQsIGRlZmlu
ZSBgPDxgIGZvciB5b3VyIHR5cGU6CisKK2BgYAorI2luY2x1ZGUgPGlvc3RyZWFtPgorCituYW1l
c3BhY2UgZm9vIHsKKworY2xhc3MgQmFyIHsgLi4uIH07ICAvLyBXZSB3YW50IEdvb2dsZSBUZXN0
IHRvIGJlIGFibGUgdG8gcHJpbnQgaW5zdGFuY2VzIG9mIHRoaXMuCisKKy8vIEl0J3MgaW1wb3J0
YW50IHRoYXQgdGhlIDw8IG9wZXJhdG9yIGlzIGRlZmluZWQgaW4gdGhlIFNBTUUKKy8vIG5hbWVz
cGFjZSB0aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11cCBydWxlcyByZWx5IG9uIHRoYXQu
Cis6OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IEJh
ciYgYmFyKSB7CisgIHJldHVybiBvcyA8PCBiYXIuRGVidWdTdHJpbmcoKTsgIC8vIHdoYXRldmVy
IG5lZWRlZCB0byBwcmludCBiYXIgdG8gb3MKK30KKworfSAgLy8gbmFtZXNwYWNlIGZvbworYGBg
CisKK1NvbWV0aW1lcywgdGhpcyBtaWdodCBub3QgYmUgYW4gb3B0aW9uOiB5b3VyIHRlYW0gbWF5
IGNvbnNpZGVyIGl0IGJhZAorc3R5bGUgdG8gaGF2ZSBhIGA8PGAgb3BlcmF0b3IgZm9yIGBCYXJg
LCBvciBgQmFyYCBtYXkgYWxyZWFkeSBoYXZlIGEKK2A8PGAgb3BlcmF0b3IgdGhhdCBkb2Vzbid0
IGRvIHdoYXQgeW91IHdhbnQgKGFuZCB5b3UgY2Fubm90IGNoYW5nZQoraXQpLiAgSWYgc28sIHlv
dSBjYW4gaW5zdGVhZCBkZWZpbmUgYSBgUHJpbnRUbygpYCBmdW5jdGlvbiBsaWtlIHRoaXM6CisK
K2BgYAorI2luY2x1ZGUgPGlvc3RyZWFtPgorCituYW1lc3BhY2UgZm9vIHsKKworY2xhc3MgQmFy
IHsgLi4uIH07CisKKy8vIEl0J3MgaW1wb3J0YW50IHRoYXQgUHJpbnRUbygpIGlzIGRlZmluZWQg
aW4gdGhlIFNBTUUKKy8vIG5hbWVzcGFjZSB0aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11
cCBydWxlcyByZWx5IG9uIHRoYXQuCit2b2lkIFByaW50VG8oY29uc3QgQmFyJiBiYXIsIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgeworICAqb3MgPDwgYmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3aGF0ZXZl
ciBuZWVkZWQgdG8gcHJpbnQgYmFyIHRvIG9zCit9CisKK30gIC8vIG5hbWVzcGFjZSBmb28KK2Bg
YAorCitJZiB5b3UgaGF2ZSBkZWZpbmVkIGJvdGggYDw8YCBhbmQgYFByaW50VG8oKWAsIHRoZSBs
YXR0ZXIgd2lsbCBiZSB1c2VkCit3aGVuIEdvb2dsZSBUZXN0IGlzIGNvbmNlcm5lZC4gIFRoaXMg
YWxsb3dzIHlvdSB0byBjdXN0b21pemUgaG93IHRoZSB2YWx1ZQorYXBwZWFycyBpbiBHb29nbGUg
VGVzdCdzIG91dHB1dCB3aXRob3V0IGFmZmVjdGluZyBjb2RlIHRoYXQgcmVsaWVzIG9uIHRoZQor
YmVoYXZpb3Igb2YgaXRzIGA8PGAgb3BlcmF0b3IuCisKK0lmIHlvdSB3YW50IHRvIHByaW50IGEg
dmFsdWUgYHhgIHVzaW5nIEdvb2dsZSBUZXN0J3MgdmFsdWUgcHJpbnRlcgoreW91cnNlbGYsIGp1
c3QgY2FsbCBgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGBfeF9gKWAsIHdoaWNoCityZXR1cm5z
IGFuIGBzdGQ6OnN0cmluZ2A6CisKK2BgYAordmVjdG9yPHBhaXI8QmFyLCBpbnQ+ID4gYmFyX2lu
dHMgPSBHZXRCYXJJbnRWZWN0b3IoKTsKKworRVhQRUNUX1RSVUUoSXNDb3JyZWN0QmFySW50VmVj
dG9yKGJhcl9pbnRzKSkKKyAgICA8PCAiYmFyX2ludHMgPSAiIDw8IDo6dGVzdGluZzo6UHJpbnRU
b1N0cmluZyhiYXJfaW50cyk7CitgYGAKKworIyBEZWF0aCBUZXN0cyAjCisKK0luIG1hbnkgYXBw
bGljYXRpb25zLCB0aGVyZSBhcmUgYXNzZXJ0aW9ucyB0aGF0IGNhbiBjYXVzZSBhcHBsaWNhdGlv
biBmYWlsdXJlCitpZiBhIGNvbmRpdGlvbiBpcyBub3QgbWV0LiBUaGVzZSBzYW5pdHkgY2hlY2tz
LCB3aGljaCBlbnN1cmUgdGhhdCB0aGUgcHJvZ3JhbQoraXMgaW4gYSBrbm93biBnb29kIHN0YXRl
LCBhcmUgdGhlcmUgdG8gZmFpbCBhdCB0aGUgZWFybGllc3QgcG9zc2libGUgdGltZSBhZnRlcgor
c29tZSBwcm9ncmFtIHN0YXRlIGlzIGNvcnJ1cHRlZC4gSWYgdGhlIGFzc2VydGlvbiBjaGVja3Mg
dGhlIHdyb25nIGNvbmRpdGlvbiwKK3RoZW4gdGhlIHByb2dyYW0gbWF5IHByb2NlZWQgaW4gYW4g
ZXJyb25lb3VzIHN0YXRlLCB3aGljaCBjb3VsZCBsZWFkIHRvIG1lbW9yeQorY29ycnVwdGlvbiwg
c2VjdXJpdHkgaG9sZXMsIG9yIHdvcnNlLiBIZW5jZSBpdCBpcyB2aXRhbGx5IGltcG9ydGFudCB0
byB0ZXN0Cit0aGF0IHN1Y2ggYXNzZXJ0aW9uIHN0YXRlbWVudHMgd29yayBhcyBleHBlY3RlZC4K
KworU2luY2UgdGhlc2UgcHJlY29uZGl0aW9uIGNoZWNrcyBjYXVzZSB0aGUgcHJvY2Vzc2VzIHRv
IGRpZSwgd2UgY2FsbCBzdWNoIHRlc3RzCitfZGVhdGggdGVzdHNfLiBNb3JlIGdlbmVyYWxseSwg
YW55IHRlc3QgdGhhdCBjaGVja3MgdGhhdCBhIHByb2dyYW0gdGVybWluYXRlcworKGV4Y2VwdCBi
eSB0aHJvd2luZyBhbiBleGNlcHRpb24pIGluIGFuIGV4cGVjdGVkIGZhc2hpb24gaXMgYWxzbyBh
IGRlYXRoIHRlc3QuCisKK05vdGUgdGhhdCBpZiBhIHBpZWNlIG9mIGNvZGUgdGhyb3dzIGFuIGV4
Y2VwdGlvbiwgd2UgZG9uJ3QgY29uc2lkZXIgaXQgImRlYXRoIgorZm9yIHRoZSBwdXJwb3NlIG9m
IGRlYXRoIHRlc3RzLCBhcyB0aGUgY2FsbGVyIG9mIHRoZSBjb2RlIGNvdWxkIGNhdGNoIHRoZSBl
eGNlcHRpb24KK2FuZCBhdm9pZCB0aGUgY3Jhc2guIElmIHlvdSB3YW50IHRvIHZlcmlmeSBleGNl
cHRpb25zIHRocm93biBieSB5b3VyIGNvZGUsCitzZWUgW0V4Y2VwdGlvbiBBc3NlcnRpb25zXSgj
ZXhjZXB0aW9uLWFzc2VydGlvbnMpLgorCitJZiB5b3Ugd2FudCB0byB0ZXN0IGBFWFBFQ1RfKigp
L0FTU0VSVF8qKClgIGZhaWx1cmVzIGluIHlvdXIgdGVzdCBjb2RlLCBzZWUgW0NhdGNoaW5nIEZh
aWx1cmVzXSgjY2F0Y2hpbmctZmFpbHVyZXMpLgorCisjIyBIb3cgdG8gV3JpdGUgYSBEZWF0aCBU
ZXN0ICMjCisKK0dvb2dsZSBUZXN0IGhhcyB0aGUgZm9sbG93aW5nIG1hY3JvcyB0byBzdXBwb3J0
IGRlYXRoIHRlc3RzOgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2Vy
dGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX0RFQVRIKGBfc3RhdGVt
ZW50LCByZWdleF9gKTsgfCBgRVhQRUNUX0RFQVRIKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBf
c3RhdGVtZW50XyBjcmFzaGVzIHdpdGggdGhlIGdpdmVuIGVycm9yIHwKK3wgYEFTU0VSVF9ERUFU
SF9JRl9TVVBQT1JURUQoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApOyB8IGBFWFBFQ1RfREVBVEhfSUZf
U1VQUE9SVEVEKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBpZiBkZWF0aCB0ZXN0cyBhcmUgc3Vw
cG9ydGVkLCB2ZXJpZmllcyB0aGF0IF9zdGF0ZW1lbnRfIGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4g
ZXJyb3I7IG90aGVyd2lzZSB2ZXJpZmllcyBub3RoaW5nIHwKK3wgYEFTU0VSVF9FWElUKGBfc3Rh
dGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4X2ApOyB8IGBFWFBFQ1RfRVhJVChgX3N0YXRlbWVudCwg
cHJlZGljYXRlLCByZWdleF9gKTsgfF9zdGF0ZW1lbnRfIGV4aXRzIHdpdGggdGhlIGdpdmVuIGVy
cm9yIGFuZCBpdHMgZXhpdCBjb2RlIG1hdGNoZXMgX3ByZWRpY2F0ZV8gfAorCit3aGVyZSBfc3Rh
dGVtZW50XyBpcyBhIHN0YXRlbWVudCB0aGF0IGlzIGV4cGVjdGVkIHRvIGNhdXNlIHRoZSBwcm9j
ZXNzIHRvCitkaWUsIF9wcmVkaWNhdGVfIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3Rpb24gb2JqZWN0
IHRoYXQgZXZhbHVhdGVzIGFuIGludGVnZXIKK2V4aXQgc3RhdHVzLCBhbmQgX3JlZ2V4XyBpcyBh
IHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IHRoZSBzdGRlcnIgb3V0cHV0IG9mCitfc3RhdGVtZW50
XyBpcyBleHBlY3RlZCB0byBtYXRjaC4gTm90ZSB0aGF0IF9zdGF0ZW1lbnRfIGNhbiBiZSBfYW55
IHZhbGlkCitzdGF0ZW1lbnRfIChpbmNsdWRpbmcgX2NvbXBvdW5kIHN0YXRlbWVudF8pIGFuZCBk
b2Vzbid0IGhhdmUgdG8gYmUgYW4KK2V4cHJlc3Npb24uCisKK0FzIHVzdWFsLCB0aGUgYEFTU0VS
VGAgdmFyaWFudHMgYWJvcnQgdGhlIGN1cnJlbnQgdGVzdCBmdW5jdGlvbiwgd2hpbGUgdGhlCitg
RVhQRUNUYCB2YXJpYW50cyBkbyBub3QuCisKKyoqTm90ZToqKiBXZSB1c2UgdGhlIHdvcmQgImNy
YXNoIiBoZXJlIHRvIG1lYW4gdGhhdCB0aGUgcHJvY2VzcwordGVybWluYXRlcyB3aXRoIGEgX25v
bi16ZXJvXyBleGl0IHN0YXR1cyBjb2RlLiAgVGhlcmUgYXJlIHR3bworcG9zc2liaWxpdGllczog
ZWl0aGVyIHRoZSBwcm9jZXNzIGhhcyBjYWxsZWQgYGV4aXQoKWAgb3IgYF9leGl0KClgCit3aXRo
IGEgbm9uLXplcm8gdmFsdWUsIG9yIGl0IG1heSBiZSBraWxsZWQgYnkgYSBzaWduYWwuCisKK1Ro
aXMgbWVhbnMgdGhhdCBpZiBfc3RhdGVtZW50XyB0ZXJtaW5hdGVzIHRoZSBwcm9jZXNzIHdpdGgg
YSAwIGV4aXQKK2NvZGUsIGl0IGlzIF9ub3RfIGNvbnNpZGVyZWQgYSBjcmFzaCBieSBgRVhQRUNU
X0RFQVRIYC4gIFVzZQorYEVYUEVDVF9FWElUYCBpbnN0ZWFkIGlmIHRoaXMgaXMgdGhlIGNhc2Us
IG9yIGlmIHlvdSB3YW50IHRvIHJlc3RyaWN0Cit0aGUgZXhpdCBjb2RlIG1vcmUgcHJlY2lzZWx5
LgorCitBIHByZWRpY2F0ZSBoZXJlIG11c3QgYWNjZXB0IGFuIGBpbnRgIGFuZCByZXR1cm4gYSBg
Ym9vbGAuIFRoZSBkZWF0aCB0ZXN0CitzdWNjZWVkcyBvbmx5IGlmIHRoZSBwcmVkaWNhdGUgcmV0
dXJucyBgdHJ1ZWAuIEdvb2dsZSBUZXN0IGRlZmluZXMgYSBmZXcKK3ByZWRpY2F0ZXMgdGhhdCBo
YW5kbGUgdGhlIG1vc3QgY29tbW9uIGNhc2VzOgorCitgYGAKKzo6dGVzdGluZzo6RXhpdGVkV2l0
aENvZGUoZXhpdF9jb2RlKQorYGBgCisKK1RoaXMgZXhwcmVzc2lvbiBpcyBgdHJ1ZWAgaWYgdGhl
IHByb2dyYW0gZXhpdGVkIG5vcm1hbGx5IHdpdGggdGhlIGdpdmVuIGV4aXQKK2NvZGUuCisKK2Bg
YAorOjp0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChzaWduYWxfbnVtYmVyKSAgLy8gTm90IGF2YWls
YWJsZSBvbiBXaW5kb3dzLgorYGBgCisKK1RoaXMgZXhwcmVzc2lvbiBpcyBgdHJ1ZWAgaWYgdGhl
IHByb2dyYW0gd2FzIGtpbGxlZCBieSB0aGUgZ2l2ZW4gc2lnbmFsLgorCitUaGUgYCpfREVBVEhg
IG1hY3JvcyBhcmUgY29udmVuaWVudCB3cmFwcGVycyBmb3IgYCpfRVhJVGAgdGhhdCB1c2UgYSBw
cmVkaWNhdGUKK3RoYXQgdmVyaWZpZXMgdGhlIHByb2Nlc3MnIGV4aXQgY29kZSBpcyBub24temVy
by4KKworTm90ZSB0aGF0IGEgZGVhdGggdGVzdCBvbmx5IGNhcmVzIGFib3V0IHRocmVlIHRoaW5n
czoKKworICAxLiBkb2VzIF9zdGF0ZW1lbnRfIGFib3J0IG9yIGV4aXQgdGhlIHByb2Nlc3M/Cisg
IDEuIChpbiB0aGUgY2FzZSBvZiBgQVNTRVJUX0VYSVRgIGFuZCBgRVhQRUNUX0VYSVRgKSBkb2Vz
IHRoZSBleGl0IHN0YXR1cyBzYXRpc2Z5IF9wcmVkaWNhdGVfPyAgT3IgKGluIHRoZSBjYXNlIG9m
IGBBU1NFUlRfREVBVEhgIGFuZCBgRVhQRUNUX0RFQVRIYCkgaXMgdGhlIGV4aXQgc3RhdHVzIG5v
bi16ZXJvPyAgQW5kCisgIDEuIGRvZXMgdGhlIHN0ZGVyciBvdXRwdXQgbWF0Y2ggX3JlZ2V4Xz8K
KworSW4gcGFydGljdWxhciwgaWYgX3N0YXRlbWVudF8gZ2VuZXJhdGVzIGFuIGBBU1NFUlRfKmAg
b3IgYEVYUEVDVF8qYCBmYWlsdXJlLCBpdCB3aWxsICoqbm90KiogY2F1c2UgdGhlIGRlYXRoIHRl
c3QgdG8gZmFpbCwgYXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBkb24ndCBhYm9ydCB0aGUgcHJv
Y2Vzcy4KKworVG8gd3JpdGUgYSBkZWF0aCB0ZXN0LCBzaW1wbHkgdXNlIG9uZSBvZiB0aGUgYWJv
dmUgbWFjcm9zIGluc2lkZSB5b3VyIHRlc3QKK2Z1bmN0aW9uLiBGb3IgZXhhbXBsZSwKKworYGBg
CitURVNUKE15KkRlYXRoVGVzdCosIEZvbykgeworICAvLyBUaGlzIGRlYXRoIHRlc3QgdXNlcyBh
IGNvbXBvdW5kIHN0YXRlbWVudC4KKyAgQVNTRVJUX0RFQVRIKHsgaW50IG4gPSA1OyBGb28oJm4p
OyB9LCAiRXJyb3Igb24gbGluZSAuKiBvZiBGb28oKSIpOworfQorVEVTVChNeURlYXRoVGVzdCwg
Tm9ybWFsRXhpdCkgeworICBFWFBFQ1RfRVhJVChOb3JtYWxFeGl0KCksIDo6dGVzdGluZzo6RXhp
dGVkV2l0aENvZGUoMCksICJTdWNjZXNzIik7Cit9CitURVNUKE15RGVhdGhUZXN0LCBLaWxsTXlz
ZWxmKSB7CisgIEVYUEVDVF9FWElUKEtpbGxNeXNlbGYoKSwgOjp0ZXN0aW5nOjpLaWxsZWRCeVNp
Z25hbChTSUdLSUxMKSwgIlNlbmRpbmcgbXlzZWxmIHVuYmxvY2thYmxlIHNpZ25hbCIpOworfQor
YGBgCisKK3ZlcmlmaWVzIHRoYXQ6CisKKyAgKiBjYWxsaW5nIGBGb28oNSlgIGNhdXNlcyB0aGUg
cHJvY2VzcyB0byBkaWUgd2l0aCB0aGUgZ2l2ZW4gZXJyb3IgbWVzc2FnZSwKKyAgKiBjYWxsaW5n
IGBOb3JtYWxFeGl0KClgIGNhdXNlcyB0aGUgcHJvY2VzcyB0byBwcmludCBgIlN1Y2Nlc3MiYCB0
byBzdGRlcnIgYW5kIGV4aXQgd2l0aCBleGl0IGNvZGUgMCwgYW5kCisgICogY2FsbGluZyBgS2ls
bE15c2VsZigpYCBraWxscyB0aGUgcHJvY2VzcyB3aXRoIHNpZ25hbCBgU0lHS0lMTGAuCisKK1Ro
ZSB0ZXN0IGZ1bmN0aW9uIGJvZHkgbWF5IGNvbnRhaW4gb3RoZXIgYXNzZXJ0aW9ucyBhbmQgc3Rh
dGVtZW50cyBhcyB3ZWxsLCBpZgorbmVjZXNzYXJ5LgorCitfSW1wb3J0YW50Ol8gV2Ugc3Ryb25n
bHkgcmVjb21tZW5kIHlvdSB0byBmb2xsb3cgdGhlIGNvbnZlbnRpb24gb2YgbmFtaW5nIHlvdXIK
K3Rlc3QgY2FzZSAobm90IHRlc3QpIGAqRGVhdGhUZXN0YCB3aGVuIGl0IGNvbnRhaW5zIGEgZGVh
dGggdGVzdCwgYXMKK2RlbW9uc3RyYXRlZCBpbiB0aGUgYWJvdmUgZXhhbXBsZS4gVGhlIGBEZWF0
aCBUZXN0cyBBbmQgVGhyZWFkc2Agc2VjdGlvbiBiZWxvdworZXhwbGFpbnMgd2h5LgorCitJZiBh
IHRlc3QgZml4dHVyZSBjbGFzcyBpcyBzaGFyZWQgYnkgbm9ybWFsIHRlc3RzIGFuZCBkZWF0aCB0
ZXN0cywgeW91CitjYW4gdXNlIHR5cGVkZWYgdG8gaW50cm9kdWNlIGFuIGFsaWFzIGZvciB0aGUg
Zml4dHVyZSBjbGFzcyBhbmQgYXZvaWQKK2R1cGxpY2F0aW5nIGl0cyBjb2RlOgorYGBgCitjbGFz
cyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OworCit0eXBlZGVmIEZv
b1Rlc3QgRm9vRGVhdGhUZXN0OworCitURVNUX0YoRm9vVGVzdCwgRG9lc1RoaXMpIHsKKyAgLy8g
bm9ybWFsIHRlc3QKK30KKworVEVTVF9GKEZvb0RlYXRoVGVzdCwgRG9lc1RoYXQpIHsKKyAgLy8g
ZGVhdGggdGVzdAorfQorYGBgCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cyAocmVx
dWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBDeWd3aW4sIGFuZCBNYWMgKHRoZSBsYXR0ZXIgdGhy
ZWUgYXJlIHN1cHBvcnRlZCBzaW5jZSB2MS4zLjApLiAgYChBU1NFUlR8RVhQRUNUKV9ERUFUSF9J
Rl9TVVBQT1JURURgIGFyZSBuZXcgaW4gdjEuNC4wLgorCisjIyBSZWd1bGFyIEV4cHJlc3Npb24g
U3ludGF4ICMjCisKK09uIFBPU0lYIHN5c3RlbXMgKGUuZy4gTGludXgsIEN5Z3dpbiwgYW5kIE1h
YyksIEdvb2dsZSBUZXN0IHVzZXMgdGhlCitbUE9TSVggZXh0ZW5kZWQgcmVndWxhciBleHByZXNz
aW9uXShodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvYmFzZWRl
ZnMveGJkX2NoYXAwOS5odG1sI3RhZ18wOV8wNCkKK3N5bnRheCBpbiBkZWF0aCB0ZXN0cy4gVG8g
bGVhcm4gYWJvdXQgdGhpcyBzeW50YXgsIHlvdSBtYXkgd2FudCB0byByZWFkIHRoaXMgW1dpa2lw
ZWRpYSBlbnRyeV0oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWd1bGFyX2V4cHJlc3Np
b24jUE9TSVhfRXh0ZW5kZWRfUmVndWxhcl9FeHByZXNzaW9ucykuCisKK09uIFdpbmRvd3MsIEdv
b2dsZSBUZXN0IHVzZXMgaXRzIG93biBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uCitpbXBsZW1l
bnRhdGlvbi4gSXQgbGFja3MgbWFueSBmZWF0dXJlcyB5b3UgY2FuIGZpbmQgaW4gUE9TSVggZXh0
ZW5kZWQKK3JlZ3VsYXIgZXhwcmVzc2lvbnMuICBGb3IgZXhhbXBsZSwgd2UgZG9uJ3Qgc3VwcG9y
dCB1bmlvbiAoYCJ4fHkiYCksCitncm91cGluZyAoYCIoeHkpImApLCBicmFja2V0cyAoYCJbeHld
ImApLCBhbmQgcmVwZXRpdGlvbiBjb3VudAorKGAieHs1LDd9ImApLCBhbW9uZyBvdGhlcnMuIEJl
bG93IGlzIHdoYXQgd2UgZG8gc3VwcG9ydCAoYEFgIGRlbm90ZXMgYQorbGl0ZXJhbCBjaGFyYWN0
ZXIsIHBlcmlvZCAoYC5gKSwgb3IgYSBzaW5nbGUgYFxcYCBlc2NhcGUgc2VxdWVuY2U7IGB4YAor
YW5kIGB5YCBkZW5vdGUgcmVndWxhciBleHByZXNzaW9ucy4pOgorCit8IGBjYCB8IG1hdGNoZXMg
YW55IGxpdGVyYWwgY2hhcmFjdGVyIGBjYCB8Cit8Oi0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS18Cit8IGBcXGRgIHwgbWF0Y2hlcyBhbnkgZGVjaW1hbCBkaWdpdCAgICAg
ICAgIHwKK3wgYFxcRGAgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBhIGRlY2lt
YWwgZGlnaXQgfAorfCBgXFxmYCB8IG1hdGNoZXMgYFxmYCAgICAgICAgICAgICAgICAgICAgICB8
Cit8IGBcXG5gIHwgbWF0Y2hlcyBgXG5gICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYFxccmAg
fCBtYXRjaGVzIGBccmAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFxzYCB8IG1hdGNoZXMg
YW55IEFTQ0lJIHdoaXRlc3BhY2UsIGluY2x1ZGluZyBgXG5gIHwKK3wgYFxcU2AgfCBtYXRjaGVz
IGFueSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBhIHdoaXRlc3BhY2UgfAorfCBgXFx0YCB8IG1hdGNo
ZXMgYFx0YCAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBcXHZgIHwgbWF0Y2hlcyBgXHZgICAg
ICAgICAgICAgICAgICAgICAgIHwKK3wgYFxcd2AgfCBtYXRjaGVzIGFueSBsZXR0ZXIsIGBfYCwg
b3IgZGVjaW1hbCBkaWdpdCB8Cit8IGBcXFdgIHwgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIHRoYXQg
YFxcd2AgZG9lc24ndCBtYXRjaCB8Cit8IGBcXGNgIHwgbWF0Y2hlcyBhbnkgbGl0ZXJhbCBjaGFy
YWN0ZXIgYGNgLCB3aGljaCBtdXN0IGJlIGEgcHVuY3R1YXRpb24gfAorfCBgLmAgfCBtYXRjaGVz
IGFueSBzaW5nbGUgY2hhcmFjdGVyIGV4Y2VwdCBgXG5gIHwKK3wgYEE/YCB8IG1hdGNoZXMgMCBv
ciAxIG9jY3VycmVuY2VzIG9mIGBBYCB8Cit8IGBBKmAgfCBtYXRjaGVzIDAgb3IgbWFueSBvY2N1
cnJlbmNlcyBvZiBgQWAgfAorfCBgQStgIHwgbWF0Y2hlcyAxIG9yIG1hbnkgb2NjdXJyZW5jZXMg
b2YgYEFgIHwKK3wgYF5gIHwgbWF0Y2hlcyB0aGUgYmVnaW5uaW5nIG9mIGEgc3RyaW5nIChub3Qg
dGhhdCBvZiBlYWNoIGxpbmUpIHwKK3wgYCRgIHwgbWF0Y2hlcyB0aGUgZW5kIG9mIGEgc3RyaW5n
IChub3QgdGhhdCBvZiBlYWNoIGxpbmUpIHwKK3wgYHh5YCB8IG1hdGNoZXMgYHhgIGZvbGxvd2Vk
IGJ5IGB5YCAgICAgICB8CisKK1RvIGhlbHAgeW91IGRldGVybWluZSB3aGljaCBjYXBhYmlsaXR5
IGlzIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbSwKK0dvb2dsZSBUZXN0IGRlZmluZXMgbWFjcm8g
YEdURVNUX1VTRVNfUE9TSVhfUkU9MWAgd2hlbiBpdCB1c2VzIFBPU0lYCitleHRlbmRlZCByZWd1
bGFyIGV4cHJlc3Npb25zLCBvciBgR1RFU1RfVVNFU19TSU1QTEVfUkU9MWAgd2hlbiBpdCB1c2Vz
Cit0aGUgc2ltcGxlIHZlcnNpb24uICBJZiB5b3Ugd2FudCB5b3VyIGRlYXRoIHRlc3RzIHRvIHdv
cmsgaW4gYm90aAorY2FzZXMsIHlvdSBjYW4gZWl0aGVyIGAjaWZgIG9uIHRoZXNlIG1hY3JvcyBv
ciB1c2UgdGhlIG1vcmUgbGltaXRlZAorc3ludGF4IG9ubHkuCisKKyMjIEhvdyBJdCBXb3JrcyAj
IworCitVbmRlciB0aGUgaG9vZCwgYEFTU0VSVF9FWElUKClgIHNwYXducyBhIG5ldyBwcm9jZXNz
IGFuZCBleGVjdXRlcyB0aGUKK2RlYXRoIHRlc3Qgc3RhdGVtZW50IGluIHRoYXQgcHJvY2Vzcy4g
VGhlIGRldGFpbHMgb2Ygb2YgaG93IHByZWNpc2VseQordGhhdCBoYXBwZW5zIGRlcGVuZCBvbiB0
aGUgcGxhdGZvcm0gYW5kIHRoZSB2YXJpYWJsZQorYDo6dGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0
aF90ZXN0X3N0eWxlKWAgKHdoaWNoIGlzIGluaXRpYWxpemVkIGZyb20gdGhlCitjb21tYW5kLWxp
bmUgZmxhZyBgLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlYCkuCisKKyAgKiBPbiBQT1NJWCBzeXN0
ZW1zLCBgZm9yaygpYCAob3IgYGNsb25lKClgIG9uIExpbnV4KSBpcyB1c2VkIHRvIHNwYXduIHRo
ZSBjaGlsZCwgYWZ0ZXIgd2hpY2g6CisgICAgKiBJZiB0aGUgdmFyaWFibGUncyB2YWx1ZSBpcyBg
ImZhc3QiYCwgdGhlIGRlYXRoIHRlc3Qgc3RhdGVtZW50IGlzIGltbWVkaWF0ZWx5IGV4ZWN1dGVk
LgorICAgICogSWYgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgaXMgYCJ0aHJlYWRzYWZlImAsIHRoZSBj
aGlsZCBwcm9jZXNzIHJlLWV4ZWN1dGVzIHRoZSB1bml0IHRlc3QgYmluYXJ5IGp1c3QgYXMgaXQg
d2FzIG9yaWdpbmFsbHkgaW52b2tlZCwgYnV0IHdpdGggc29tZSBleHRyYSBmbGFncyB0byBjYXVz
ZSBqdXN0IHRoZSBzaW5nbGUgZGVhdGggdGVzdCB1bmRlciBjb25zaWRlcmF0aW9uIHRvIGJlIHJ1
bi4KKyAgKiBPbiBXaW5kb3dzLCB0aGUgY2hpbGQgaXMgc3Bhd25lZCB1c2luZyB0aGUgYENyZWF0
ZVByb2Nlc3MoKWAgQVBJLCBhbmQgcmUtZXhlY3V0ZXMgdGhlIGJpbmFyeSB0byBjYXVzZSBqdXN0
IHRoZSBzaW5nbGUgZGVhdGggdGVzdCB1bmRlciBjb25zaWRlcmF0aW9uIHRvIGJlIHJ1biAtIG11
Y2ggbGlrZSB0aGUgYHRocmVhZHNhZmVgIG1vZGUgb24gUE9TSVguCisKK090aGVyIHZhbHVlcyBm
b3IgdGhlIHZhcmlhYmxlIGFyZSBpbGxlZ2FsIGFuZCB3aWxsIGNhdXNlIHRoZSBkZWF0aCB0ZXN0
IHRvCitmYWlsLiBDdXJyZW50bHksIHRoZSBmbGFnJ3MgZGVmYXVsdCB2YWx1ZSBpcyBgImZhc3Qi
YC4gSG93ZXZlciwgd2UgcmVzZXJ2ZSB0aGUKK3JpZ2h0IHRvIGNoYW5nZSBpdCBpbiB0aGUgZnV0
dXJlLiBUaGVyZWZvcmUsIHlvdXIgdGVzdHMgc2hvdWxkIG5vdCBkZXBlbmQgb24KK3RoaXMuCisK
K0luIGVpdGhlciBjYXNlLCB0aGUgcGFyZW50IHByb2Nlc3Mgd2FpdHMgZm9yIHRoZSBjaGlsZCBw
cm9jZXNzIHRvIGNvbXBsZXRlLCBhbmQgY2hlY2tzIHRoYXQKKworICAxLiB0aGUgY2hpbGQncyBl
eGl0IHN0YXR1cyBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZSwgYW5kCisgIDEuIHRoZSBjaGlsZCdz
IHN0ZGVyciBtYXRjaGVzIHRoZSByZWd1bGFyIGV4cHJlc3Npb24uCisKK0lmIHRoZSBkZWF0aCB0
ZXN0IHN0YXRlbWVudCBydW5zIHRvIGNvbXBsZXRpb24gd2l0aG91dCBkeWluZywgdGhlIGNoaWxk
Citwcm9jZXNzIHdpbGwgbm9uZXRoZWxlc3MgdGVybWluYXRlLCBhbmQgdGhlIGFzc2VydGlvbiBm
YWlscy4KKworIyMgRGVhdGggVGVzdHMgQW5kIFRocmVhZHMgIyMKKworVGhlIHJlYXNvbiBmb3Ig
dGhlIHR3byBkZWF0aCB0ZXN0IHN0eWxlcyBoYXMgdG8gZG8gd2l0aCB0aHJlYWQgc2FmZXR5LiBE
dWUgdG8KK3dlbGwta25vd24gcHJvYmxlbXMgd2l0aCBmb3JraW5nIGluIHRoZSBwcmVzZW5jZSBv
ZiB0aHJlYWRzLCBkZWF0aCB0ZXN0cyBzaG91bGQKK2JlIHJ1biBpbiBhIHNpbmdsZS10aHJlYWRl
ZCBjb250ZXh0LiBTb21ldGltZXMsIGhvd2V2ZXIsIGl0IGlzbid0IGZlYXNpYmxlIHRvCithcnJh
bmdlIHRoYXQga2luZCBvZiBlbnZpcm9ubWVudC4gRm9yIGV4YW1wbGUsIHN0YXRpY2FsbHktaW5p
dGlhbGl6ZWQgbW9kdWxlcworbWF5IHN0YXJ0IHRocmVhZHMgYmVmb3JlIG1haW4gaXMgZXZlciBy
ZWFjaGVkLiBPbmNlIHRocmVhZHMgaGF2ZSBiZWVuIGNyZWF0ZWQsCitpdCBtYXkgYmUgZGlmZmlj
dWx0IG9yIGltcG9zc2libGUgdG8gY2xlYW4gdGhlbSB1cC4KKworR29vZ2xlIFRlc3QgaGFzIHRo
cmVlIGZlYXR1cmVzIGludGVuZGVkIHRvIHJhaXNlIGF3YXJlbmVzcyBvZiB0aHJlYWRpbmcgaXNz
dWVzLgorCisgIDEuIEEgd2FybmluZyBpcyBlbWl0dGVkIGlmIG11bHRpcGxlIHRocmVhZHMgYXJl
IHJ1bm5pbmcgd2hlbiBhIGRlYXRoIHRlc3QgaXMgZW5jb3VudGVyZWQuCisgIDEuIFRlc3QgY2Fz
ZXMgd2l0aCBhIG5hbWUgZW5kaW5nIGluICJEZWF0aFRlc3QiIGFyZSBydW4gYmVmb3JlIGFsbCBv
dGhlciB0ZXN0cy4KKyAgMS4gSXQgdXNlcyBgY2xvbmUoKWAgaW5zdGVhZCBvZiBgZm9yaygpYCB0
byBzcGF3biB0aGUgY2hpbGQgcHJvY2VzcyBvbiBMaW51eCAoYGNsb25lKClgIGlzIG5vdCBhdmFp
bGFibGUgb24gQ3lnd2luIGFuZCBNYWMpLCBhcyBgZm9yaygpYCBpcyBtb3JlIGxpa2VseSB0byBj
YXVzZSB0aGUgY2hpbGQgdG8gaGFuZyB3aGVuIHRoZSBwYXJlbnQgcHJvY2VzcyBoYXMgbXVsdGlw
bGUgdGhyZWFkcy4KKworSXQncyBwZXJmZWN0bHkgZmluZSB0byBjcmVhdGUgdGhyZWFkcyBpbnNp
ZGUgYSBkZWF0aCB0ZXN0IHN0YXRlbWVudDsgdGhleSBhcmUKK2V4ZWN1dGVkIGluIGEgc2VwYXJh
dGUgcHJvY2VzcyBhbmQgY2Fubm90IGFmZmVjdCB0aGUgcGFyZW50LgorCisjIyBEZWF0aCBUZXN0
IFN0eWxlcyAjIworCitUaGUgInRocmVhZHNhZmUiIGRlYXRoIHRlc3Qgc3R5bGUgd2FzIGludHJv
ZHVjZWQgaW4gb3JkZXIgdG8gaGVscCBtaXRpZ2F0ZSB0aGUKK3Jpc2tzIG9mIHRlc3RpbmcgaW4g
YSBwb3NzaWJseSBtdWx0aXRocmVhZGVkIGVudmlyb25tZW50LiBJdCB0cmFkZXMgaW5jcmVhc2Vk
Cit0ZXN0IGV4ZWN1dGlvbiB0aW1lIChwb3RlbnRpYWxseSBkcmFtYXRpY2FsbHkgc28pIGZvciBp
bXByb3ZlZCB0aHJlYWQgc2FmZXR5LgorV2Ugc3VnZ2VzdCB1c2luZyB0aGUgZmFzdGVyLCBkZWZh
dWx0ICJmYXN0IiBzdHlsZSB1bmxlc3MgeW91ciB0ZXN0IGhhcyBzcGVjaWZpYworcHJvYmxlbXMg
d2l0aCBpdC4KKworWW91IGNhbiBjaG9vc2UgYSBwYXJ0aWN1bGFyIHN0eWxlIG9mIGRlYXRoIHRl
c3RzIGJ5IHNldHRpbmcgdGhlIGZsYWcKK3Byb2dyYW1tYXRpY2FsbHk6CisKK2BgYAorOjp0ZXN0
aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0gInRocmVhZHNhZmUiOworYGBgCisK
K1lvdSBjYW4gZG8gdGhpcyBpbiBgbWFpbigpYCB0byBzZXQgdGhlIHN0eWxlIGZvciBhbGwgZGVh
dGggdGVzdHMgaW4gdGhlCitiaW5hcnksIG9yIGluIGluZGl2aWR1YWwgdGVzdHMuIFJlY2FsbCB0
aGF0IGZsYWdzIGFyZSBzYXZlZCBiZWZvcmUgcnVubmluZyBlYWNoCit0ZXN0IGFuZCByZXN0b3Jl
ZCBhZnRlcndhcmRzLCBzbyB5b3UgbmVlZCBub3QgZG8gdGhhdCB5b3Vyc2VsZi4gRm9yIGV4YW1w
bGU6CisKK2BgYAorVEVTVChNeURlYXRoVGVzdCwgVGVzdE9uZSkgeworICA6OnRlc3Rpbmc6OkZM
QUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAidGhyZWFkc2FmZSI7CisgIC8vIFRoaXMgdGVz
dCBpcyBydW4gaW4gdGhlICJ0aHJlYWRzYWZlIiBzdHlsZToKKyAgQVNTRVJUX0RFQVRIKFRoaXNT
aG91bGREaWUoKSwgIiIpOworfQorCitURVNUKE15RGVhdGhUZXN0LCBUZXN0VHdvKSB7CisgIC8v
IFRoaXMgdGVzdCBpcyBydW4gaW4gdGhlICJmYXN0IiBzdHlsZToKKyAgQVNTRVJUX0RFQVRIKFRo
aXNTaG91bGREaWUoKSwgIiIpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3Yp
IHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIDo6dGVzdGlu
Zzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJmYXN0IjsKKyAgcmV0dXJuIFJVTl9B
TExfVEVTVFMoKTsKK30KK2BgYAorCisjIyBDYXZlYXRzICMjCisKK1RoZSBfc3RhdGVtZW50XyBh
cmd1bWVudCBvZiBgQVNTRVJUX0VYSVQoKWAgY2FuIGJlIGFueSB2YWxpZCBDKysgc3RhdGVtZW50
LgorSWYgaXQgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9uIHZpYSBhIGByZXR1cm5gIHN0YXRl
bWVudCBvciBieSB0aHJvd2luZyBhbiBleGNlcHRpb24sCit0aGUgZGVhdGggdGVzdCBpcyBjb25z
aWRlcmVkIHRvIGhhdmUgZmFpbGVkLiAgU29tZSBHb29nbGUgVGVzdCBtYWNyb3MgbWF5IHJldHVy
bgorZnJvbSB0aGUgY3VycmVudCBmdW5jdGlvbiAoZS5nLiBgQVNTRVJUX1RSVUUoKWApLCBzbyBi
ZSBzdXJlIHRvIGF2b2lkIHRoZW0gaW4gX3N0YXRlbWVudF8uCisKK1NpbmNlIF9zdGF0ZW1lbnRf
IHJ1bnMgaW4gdGhlIGNoaWxkIHByb2Nlc3MsIGFueSBpbi1tZW1vcnkgc2lkZSBlZmZlY3QgKGUu
Zy4KK21vZGlmeWluZyBhIHZhcmlhYmxlLCByZWxlYXNpbmcgbWVtb3J5LCBldGMpIGl0IGNhdXNl
cyB3aWxsIF9ub3RfIGJlIG9ic2VydmFibGUKK2luIHRoZSBwYXJlbnQgcHJvY2Vzcy4gSW4gcGFy
dGljdWxhciwgaWYgeW91IHJlbGVhc2UgbWVtb3J5IGluIGEgZGVhdGggdGVzdCwKK3lvdXIgcHJv
Z3JhbSB3aWxsIGZhaWwgdGhlIGhlYXAgY2hlY2sgYXMgdGhlIHBhcmVudCBwcm9jZXNzIHdpbGwg
bmV2ZXIgc2VlIHRoZQorbWVtb3J5IHJlY2xhaW1lZC4gVG8gc29sdmUgdGhpcyBwcm9ibGVtLCB5
b3UgY2FuCisKKyAgMS4gdHJ5IG5vdCB0byBmcmVlIG1lbW9yeSBpbiBhIGRlYXRoIHRlc3Q7Cisg
IDEuIGZyZWUgdGhlIG1lbW9yeSBhZ2FpbiBpbiB0aGUgcGFyZW50IHByb2Nlc3M7IG9yCisgIDEu
IGRvIG5vdCB1c2UgdGhlIGhlYXAgY2hlY2tlciBpbiB5b3VyIHByb2dyYW0uCisKK0R1ZSB0byBh
biBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIHlvdSBjYW5ub3QgcGxhY2UgbXVsdGlwbGUgZGVhdGgg
dGVzdAorYXNzZXJ0aW9ucyBvbiB0aGUgc2FtZSBsaW5lOyBvdGhlcndpc2UsIGNvbXBpbGF0aW9u
IHdpbGwgZmFpbCB3aXRoIGFuIHVub2J2aW91cworZXJyb3IgbWVzc2FnZS4KKworRGVzcGl0ZSB0
aGUgaW1wcm92ZWQgdGhyZWFkIHNhZmV0eSBhZmZvcmRlZCBieSB0aGUgInRocmVhZHNhZmUiIHN0
eWxlIG9mIGRlYXRoCit0ZXN0LCB0aHJlYWQgcHJvYmxlbXMgc3VjaCBhcyBkZWFkbG9jayBhcmUg
c3RpbGwgcG9zc2libGUgaW4gdGhlIHByZXNlbmNlIG9mCitoYW5kbGVycyByZWdpc3RlcmVkIHdp
dGggYHB0aHJlYWRfYXRmb3JrKDMpYC4KKworIyBVc2luZyBBc3NlcnRpb25zIGluIFN1Yi1yb3V0
aW5lcyAjCisKKyMjIEFkZGluZyBUcmFjZXMgdG8gQXNzZXJ0aW9ucyAjIworCitJZiBhIHRlc3Qg
c3ViLXJvdXRpbmUgaXMgY2FsbGVkIGZyb20gc2V2ZXJhbCBwbGFjZXMsIHdoZW4gYW4gYXNzZXJ0
aW9uCitpbnNpZGUgaXQgZmFpbHMsIGl0IGNhbiBiZSBoYXJkIHRvIHRlbGwgd2hpY2ggaW52b2Nh
dGlvbiBvZiB0aGUKK3N1Yi1yb3V0aW5lIHRoZSBmYWlsdXJlIGlzIGZyb20uICBZb3UgY2FuIGFs
bGV2aWF0ZSB0aGlzIHByb2JsZW0gdXNpbmcKK2V4dHJhIGxvZ2dpbmcgb3IgY3VzdG9tIGZhaWx1
cmUgbWVzc2FnZXMsIGJ1dCB0aGF0IHVzdWFsbHkgY2x1dHRlcnMgdXAKK3lvdXIgdGVzdHMuIEEg
YmV0dGVyIHNvbHV0aW9uIGlzIHRvIHVzZSB0aGUgYFNDT1BFRF9UUkFDRWAgbWFjcm86CisKK3wg
YFNDT1BFRF9UUkFDRShgX21lc3NhZ2VfYCk7YCB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfAorCit3aGVyZSBfbWVzc2FnZV8gY2FuIGJlIGFueXRoaW5nIHN0cmVhbWFibGUgdG8g
YHN0ZDo6b3N0cmVhbWAuIFRoaXMKK21hY3JvIHdpbGwgY2F1c2UgdGhlIGN1cnJlbnQgZmlsZSBu
YW1lLCBsaW5lIG51bWJlciwgYW5kIHRoZSBnaXZlbgorbWVzc2FnZSB0byBiZSBhZGRlZCBpbiBl
dmVyeSBmYWlsdXJlIG1lc3NhZ2UuIFRoZSBlZmZlY3Qgd2lsbCBiZQordW5kb25lIHdoZW4gdGhl
IGNvbnRyb2wgbGVhdmVzIHRoZSBjdXJyZW50IGxleGljYWwgc2NvcGUuCisKK0ZvciBleGFtcGxl
LAorCitgYGAKKzEwOiB2b2lkIFN1YjEoaW50IG4pIHsKKzExOiAgIEVYUEVDVF9FUSgxLCBCYXIo
bikpOworMTI6ICAgRVhQRUNUX0VRKDIsIEJhcihuICsgMSkpOworMTM6IH0KKzE0OgorMTU6IFRF
U1QoRm9vVGVzdCwgQmFyKSB7CisxNjogICB7CisxNzogICAgIFNDT1BFRF9UUkFDRSgiQSIpOyAg
Ly8gVGhpcyB0cmFjZSBwb2ludCB3aWxsIGJlIGluY2x1ZGVkIGluCisxODogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZXZlcnkgZmFpbHVyZSBpbiB0aGlzIHNjb3BlLgorMTk6ICAgICBTdWIx
KDEpOworMjA6ICAgfQorMjE6ICAgLy8gTm93IGl0IHdvbid0LgorMjI6ICAgU3ViMSg5KTsKKzIz
OiB9CitgYGAKKworY291bGQgcmVzdWx0IGluIG1lc3NhZ2VzIGxpa2UgdGhlc2U6CisKK2BgYAor
cGF0aC90by9mb29fdGVzdC5jYzoxMTogRmFpbHVyZQorVmFsdWUgb2Y6IEJhcihuKQorRXhwZWN0
ZWQ6IDEKKyAgQWN0dWFsOiAyCisgICBUcmFjZToKK3BhdGgvdG8vZm9vX3Rlc3QuY2M6MTc6IEEK
KworcGF0aC90by9mb29fdGVzdC5jYzoxMjogRmFpbHVyZQorVmFsdWUgb2Y6IEJhcihuICsgMSkK
K0V4cGVjdGVkOiAyCisgIEFjdHVhbDogMworYGBgCisKK1dpdGhvdXQgdGhlIHRyYWNlLCBpdCB3
b3VsZCd2ZSBiZWVuIGRpZmZpY3VsdCB0byBrbm93IHdoaWNoIGludm9jYXRpb24KK29mIGBTdWIx
KClgIHRoZSB0d28gZmFpbHVyZXMgY29tZSBmcm9tIHJlc3BlY3RpdmVseS4gKFlvdSBjb3VsZCBh
ZGQgYW4KK2V4dHJhIG1lc3NhZ2UgdG8gZWFjaCBhc3NlcnRpb24gaW4gYFN1YjEoKWAgdG8gaW5k
aWNhdGUgdGhlIHZhbHVlIG9mCitgbmAsIGJ1dCB0aGF0J3MgdGVkaW91cy4pCisKK1NvbWUgdGlw
cyBvbiB1c2luZyBgU0NPUEVEX1RSQUNFYDoKKworICAxLiBXaXRoIGEgc3VpdGFibGUgbWVzc2Fn
ZSwgaXQncyBvZnRlbiBlbm91Z2ggdG8gdXNlIGBTQ09QRURfVFJBQ0VgIGF0IHRoZSBiZWdpbm5p
bmcgb2YgYSBzdWItcm91dGluZSwgaW5zdGVhZCBvZiBhdCBlYWNoIGNhbGwgc2l0ZS4KKyAgMS4g
V2hlbiBjYWxsaW5nIHN1Yi1yb3V0aW5lcyBpbnNpZGUgYSBsb29wLCBtYWtlIHRoZSBsb29wIGl0
ZXJhdG9yIHBhcnQgb2YgdGhlIG1lc3NhZ2UgaW4gYFNDT1BFRF9UUkFDRWAgc3VjaCB0aGF0IHlv
dSBjYW4ga25vdyB3aGljaCBpdGVyYXRpb24gdGhlIGZhaWx1cmUgaXMgZnJvbS4KKyAgMS4gU29t
ZXRpbWVzIHRoZSBsaW5lIG51bWJlciBvZiB0aGUgdHJhY2UgcG9pbnQgaXMgZW5vdWdoIGZvciBp
ZGVudGlmeWluZyB0aGUgcGFydGljdWxhciBpbnZvY2F0aW9uIG9mIGEgc3ViLXJvdXRpbmUuIElu
IHRoaXMgY2FzZSwgeW91IGRvbid0IGhhdmUgdG8gY2hvb3NlIGEgdW5pcXVlIG1lc3NhZ2UgZm9y
IGBTQ09QRURfVFJBQ0VgLiBZb3UgY2FuIHNpbXBseSB1c2UgYCIiYC4KKyAgMS4gWW91IGNhbiB1
c2UgYFNDT1BFRF9UUkFDRWAgaW4gYW4gaW5uZXIgc2NvcGUgd2hlbiB0aGVyZSBpcyBvbmUgaW4g
dGhlIG91dGVyIHNjb3BlLiBJbiB0aGlzIGNhc2UsIGFsbCBhY3RpdmUgdHJhY2UgcG9pbnRzIHdp
bGwgYmUgaW5jbHVkZWQgaW4gdGhlIGZhaWx1cmUgbWVzc2FnZXMsIGluIHJldmVyc2Ugb3JkZXIg
dGhleSBhcmUgZW5jb3VudGVyZWQuCisgIDEuIFRoZSB0cmFjZSBkdW1wIGlzIGNsaWNrYWJsZSBp
biBFbWFjcycgY29tcGlsYXRpb24gYnVmZmVyIC0gaGl0IHJldHVybiBvbiBhIGxpbmUgbnVtYmVy
IGFuZCB5b3UnbGwgYmUgdGFrZW4gdG8gdGhhdCBsaW5lIGluIHRoZSBzb3VyY2UgZmlsZSEKKwor
X0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIFByb3BhZ2F0aW5nIEZh
dGFsIEZhaWx1cmVzICMjCisKK0EgY29tbW9uIHBpdGZhbGwgd2hlbiB1c2luZyBgQVNTRVJUXypg
IGFuZCBgRkFJTCpgIGlzIG5vdCB1bmRlcnN0YW5kaW5nIHRoYXQKK3doZW4gdGhleSBmYWlsIHRo
ZXkgb25seSBhYm9ydCB0aGUgX2N1cnJlbnQgZnVuY3Rpb25fLCBub3QgdGhlIGVudGlyZSB0ZXN0
LiBGb3IKK2V4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVzdCB3aWxsIHNlZ2ZhdWx0OgorYGBgCit2
b2lkIFN1YnJvdXRpbmUoKSB7CisgIC8vIEdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUgYW5kIGFi
b3J0cyB0aGUgY3VycmVudCBmdW5jdGlvbi4KKyAgQVNTRVJUX0VRKDEsIDIpOworICAvLyBUaGUg
Zm9sbG93aW5nIHdvbid0IGJlIGV4ZWN1dGVkLgorICAuLi4KK30KKworVEVTVChGb29UZXN0LCBC
YXIpIHsKKyAgU3Vicm91dGluZSgpOworICAvLyBUaGUgaW50ZW5kZWQgYmVoYXZpb3IgaXMgZm9y
IHRoZSBmYXRhbCBmYWlsdXJlCisgIC8vIGluIFN1YnJvdXRpbmUoKSB0byBhYm9ydCB0aGUgZW50
aXJlIHRlc3QuCisgIC8vIFRoZSBhY3R1YWwgYmVoYXZpb3I6IHRoZSBmdW5jdGlvbiBnb2VzIG9u
IGFmdGVyIFN1YnJvdXRpbmUoKSByZXR1cm5zLgorICBpbnQqIHAgPSBOVUxMOworICAqcCA9IDM7
IC8vIFNlZ2ZhdWx0IQorfQorYGBgCisKK1NpbmNlIHdlIGRvbid0IHVzZSBleGNlcHRpb25zLCBp
dCBpcyB0ZWNobmljYWxseSBpbXBvc3NpYmxlIHRvCitpbXBsZW1lbnQgdGhlIGludGVuZGVkIGJl
aGF2aW9yIGhlcmUuICBUbyBhbGxldmlhdGUgdGhpcywgR29vZ2xlIFRlc3QKK3Byb3ZpZGVzIHR3
byBzb2x1dGlvbnMuICBZb3UgY291bGQgdXNlIGVpdGhlciB0aGUKK2AoQVNTRVJUfEVYUEVDVClf
Tk9fRkFUQUxfRkFJTFVSRWAgYXNzZXJ0aW9ucyBvciB0aGUKK2BIYXNGYXRhbEZhaWx1cmUoKWAg
ZnVuY3Rpb24uICBUaGV5IGFyZSBkZXNjcmliZWQgaW4gdGhlIGZvbGxvd2luZyB0d28KK3N1YnNl
Y3Rpb25zLgorCisjIyMgQXNzZXJ0aW5nIG9uIFN1YnJvdXRpbmVzICMjIworCitBcyBzaG93biBh
Ym92ZSwgaWYgeW91ciB0ZXN0IGNhbGxzIGEgc3Vicm91dGluZSB0aGF0IGhhcyBhbiBgQVNTRVJU
XypgCitmYWlsdXJlIGluIGl0LCB0aGUgdGVzdCB3aWxsIGNvbnRpbnVlIGFmdGVyIHRoZSBzdWJy
b3V0aW5lCityZXR1cm5zLiBUaGlzIG1heSBub3QgYmUgd2hhdCB5b3Ugd2FudC4KKworT2Z0ZW4g
cGVvcGxlIHdhbnQgZmF0YWwgZmFpbHVyZXMgdG8gcHJvcGFnYXRlIGxpa2UgZXhjZXB0aW9ucy4g
IEZvcgordGhhdCBHb29nbGUgVGVzdCBvZmZlcnMgdGhlIGZvbGxvd2luZyBtYWNyb3M6CisKK3wg
KipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVz
KiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShgX3N0YXRlbWVudF9gKTtg
IHwgYEVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50X2ApO2AgfCBfc3RhdGVtZW50
XyBkb2Vzbid0IGdlbmVyYXRlIGFueSBuZXcgZmF0YWwgZmFpbHVyZXMgaW4gdGhlIGN1cnJlbnQg
dGhyZWFkLiB8CisKK09ubHkgZmFpbHVyZXMgaW4gdGhlIHRocmVhZCB0aGF0IGV4ZWN1dGVzIHRo
ZSBhc3NlcnRpb24gYXJlIGNoZWNrZWQgdG8KK2RldGVybWluZSB0aGUgcmVzdWx0IG9mIHRoaXMg
dHlwZSBvZiBhc3NlcnRpb25zLiAgSWYgX3N0YXRlbWVudF8KK2NyZWF0ZXMgbmV3IHRocmVhZHMs
IGZhaWx1cmVzIGluIHRoZXNlIHRocmVhZHMgYXJlIGlnbm9yZWQuCisKK0V4YW1wbGVzOgorCitg
YGAKK0FTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEZvbygpKTsKKworaW50IGk7CitFWFBFQ1RfTk9f
RkFUQUxfRkFJTFVSRSh7CisgIGkgPSBCYXIoKTsKK30pOworYGBgCisKK19BdmFpbGFiaWxpdHk6
XyBMaW51eCwgV2luZG93cywgTWFjLiBBc3NlcnRpb25zIGZyb20gbXVsdGlwbGUgdGhyZWFkcwor
YXJlIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgorCisjIyMgQ2hlY2tpbmcgZm9yIEZhaWx1cmVz
IGluIHRoZSBDdXJyZW50IFRlc3QgIyMjCisKK2BIYXNGYXRhbEZhaWx1cmUoKWAgaW4gdGhlIGA6
OnRlc3Rpbmc6OlRlc3RgIGNsYXNzIHJldHVybnMgYHRydWVgIGlmIGFuCithc3NlcnRpb24gaW4g
dGhlIGN1cnJlbnQgdGVzdCBoYXMgc3VmZmVyZWQgYSBmYXRhbCBmYWlsdXJlLiBUaGlzCithbGxv
d3MgZnVuY3Rpb25zIHRvIGNhdGNoIGZhdGFsIGZhaWx1cmVzIGluIGEgc3ViLXJvdXRpbmUgYW5k
IHJldHVybgorZWFybHkuCisKK2BgYAorY2xhc3MgVGVzdCB7CisgcHVibGljOgorICAuLi4KKyAg
c3RhdGljIGJvb2wgSGFzRmF0YWxGYWlsdXJlKCk7Cit9OworYGBgCisKK1RoZSB0eXBpY2FsIHVz
YWdlLCB3aGljaCBiYXNpY2FsbHkgc2ltdWxhdGVzIHRoZSBiZWhhdmlvciBvZiBhIHRocm93bgor
ZXhjZXB0aW9uLCBpczoKKworYGBgCitURVNUKEZvb1Rlc3QsIEJhcikgeworICBTdWJyb3V0aW5l
KCk7CisgIC8vIEFib3J0cyBpZiBTdWJyb3V0aW5lKCkgaGFkIGEgZmF0YWwgZmFpbHVyZS4KKyAg
aWYgKEhhc0ZhdGFsRmFpbHVyZSgpKQorICAgIHJldHVybjsKKyAgLy8gVGhlIGZvbGxvd2luZyB3
b24ndCBiZSBleGVjdXRlZC4KKyAgLi4uCit9CitgYGAKKworSWYgYEhhc0ZhdGFsRmFpbHVyZSgp
YCBpcyB1c2VkIG91dHNpZGUgb2YgYFRFU1QoKWAgLCBgVEVTVF9GKClgICwgb3IgYSB0ZXN0Citm
aXh0dXJlLCB5b3UgbXVzdCBhZGQgdGhlIGA6OnRlc3Rpbmc6OlRlc3Q6OmAgcHJlZml4LCBhcyBp
bjoKKworYGBgCitpZiAoOjp0ZXN0aW5nOjpUZXN0OjpIYXNGYXRhbEZhaWx1cmUoKSkKKyAgcmV0
dXJuOworYGBgCisKK1NpbWlsYXJseSwgYEhhc05vbmZhdGFsRmFpbHVyZSgpYCByZXR1cm5zIGB0
cnVlYCBpZiB0aGUgY3VycmVudCB0ZXN0CitoYXMgYXQgbGVhc3Qgb25lIG5vbi1mYXRhbCBmYWls
dXJlLCBhbmQgYEhhc0ZhaWx1cmUoKWAgcmV0dXJucyBgdHJ1ZWAKK2lmIHRoZSBjdXJyZW50IHRl
c3QgaGFzIGF0IGxlYXN0IG9uZSBmYWlsdXJlIG9mIGVpdGhlciBraW5kLgorCitfQXZhaWxhYmls
aXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4gIGBIYXNOb25mYXRhbEZhaWx1cmUoKWAgYW5kCitg
SGFzRmFpbHVyZSgpYCBhcmUgYXZhaWxhYmxlIHNpbmNlIHZlcnNpb24gMS40LjAuCisKKyMgTG9n
Z2luZyBBZGRpdGlvbmFsIEluZm9ybWF0aW9uICMKKworSW4geW91ciB0ZXN0IGNvZGUsIHlvdSBj
YW4gY2FsbCBgUmVjb3JkUHJvcGVydHkoImtleSIsIHZhbHVlKWAgdG8gbG9nCithZGRpdGlvbmFs
IGluZm9ybWF0aW9uLCB3aGVyZSBgdmFsdWVgIGNhbiBiZSBlaXRoZXIgYSBDIHN0cmluZyBvciBh
IDMyLWJpdAoraW50ZWdlci4gVGhlIF9sYXN0XyB2YWx1ZSByZWNvcmRlZCBmb3IgYSBrZXkgd2ls
bCBiZSBlbWl0dGVkIHRvIHRoZSBYTUwgb3V0cHV0CitpZiB5b3Ugc3BlY2lmeSBvbmUuIEZvciBl
eGFtcGxlLCB0aGUgdGVzdAorCitgYGAKK1RFU1RfRihXaWRnZXRVc2FnZVRlc3QsIE1pbkFuZE1h
eFdpZGdldHMpIHsKKyAgUmVjb3JkUHJvcGVydHkoIk1heGltdW1XaWRnZXRzIiwgQ29tcHV0ZU1h
eFVzYWdlKCkpOworICBSZWNvcmRQcm9wZXJ0eSgiTWluaW11bVdpZGdldHMiLCBDb21wdXRlTWlu
VXNhZ2UoKSk7Cit9CitgYGAKKword2lsbCBvdXRwdXQgWE1MIGxpa2UgdGhpczoKKworYGBgCisu
Li4KKyAgPHRlc3RjYXNlIG5hbWU9Ik1pbkFuZE1heFdpZGdldHMiIHN0YXR1cz0icnVuIiB0aW1l
PSI2IiBjbGFzc25hbWU9IldpZGdldFVzYWdlVGVzdCIKKyAgICAgICAgICAgIE1heGltdW1XaWRn
ZXRzPSIxMiIKKyAgICAgICAgICAgIE1pbmltdW1XaWRnZXRzPSI5IiAvPgorLi4uCitgYGAKKwor
X05vdGVfOgorICAqIGBSZWNvcmRQcm9wZXJ0eSgpYCBpcyBhIHN0YXRpYyBtZW1iZXIgb2YgdGhl
IGBUZXN0YCBjbGFzcy4gVGhlcmVmb3JlIGl0IG5lZWRzIHRvIGJlIHByZWZpeGVkIHdpdGggYDo6
dGVzdGluZzo6VGVzdDo6YCBpZiB1c2VkIG91dHNpZGUgb2YgdGhlIGBURVNUYCBib2R5IGFuZCB0
aGUgdGVzdCBmaXh0dXJlIGNsYXNzLgorICAqIGBrZXlgIG11c3QgYmUgYSB2YWxpZCBYTUwgYXR0
cmlidXRlIG5hbWUsIGFuZCBjYW5ub3QgY29uZmxpY3Qgd2l0aCB0aGUgb25lcyBhbHJlYWR5IHVz
ZWQgYnkgR29vZ2xlIFRlc3QgKGBuYW1lYCwgYHN0YXR1c2AsICAgICBgdGltZWAsIGFuZCBgY2xh
c3NuYW1lYCkuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIFNo
YXJpbmcgUmVzb3VyY2VzIEJldHdlZW4gVGVzdHMgaW4gdGhlIFNhbWUgVGVzdCBDYXNlICMKKwor
CisKK0dvb2dsZSBUZXN0IGNyZWF0ZXMgYSBuZXcgdGVzdCBmaXh0dXJlIG9iamVjdCBmb3IgZWFj
aCB0ZXN0IGluIG9yZGVyIHRvIG1ha2UKK3Rlc3RzIGluZGVwZW5kZW50IGFuZCBlYXNpZXIgdG8g
ZGVidWcuIEhvd2V2ZXIsIHNvbWV0aW1lcyB0ZXN0cyB1c2UgcmVzb3VyY2VzCit0aGF0IGFyZSBl
eHBlbnNpdmUgdG8gc2V0IHVwLCBtYWtpbmcgdGhlIG9uZS1jb3B5LXBlci10ZXN0IG1vZGVsIHBy
b2hpYml0aXZlbHkKK2V4cGVuc2l2ZS4KKworSWYgdGhlIHRlc3RzIGRvbid0IGNoYW5nZSB0aGUg
cmVzb3VyY2UsIHRoZXJlJ3Mgbm8gaGFybSBpbiB0aGVtIHNoYXJpbmcgYQorc2luZ2xlIHJlc291
cmNlIGNvcHkuIFNvLCBpbiBhZGRpdGlvbiB0byBwZXItdGVzdCBzZXQtdXAvdGVhci1kb3duLCBH
b29nbGUgVGVzdAorYWxzbyBzdXBwb3J0cyBwZXItdGVzdC1jYXNlIHNldC11cC90ZWFyLWRvd24u
IFRvIHVzZSBpdDoKKworICAxLiBJbiB5b3VyIHRlc3QgZml4dHVyZSBjbGFzcyAoc2F5IGBGb29U
ZXN0YCApLCBkZWZpbmUgYXMgYHN0YXRpY2Agc29tZSBtZW1iZXIgdmFyaWFibGVzIHRvIGhvbGQg
dGhlIHNoYXJlZCByZXNvdXJjZXMuCisgIDEuIEluIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBjbGFz
cywgZGVmaW5lIGEgYHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKWAgZnVuY3Rpb24gKHJlbWVt
YmVyIG5vdCB0byBzcGVsbCBpdCBhcyAqKmBTZXR1cFRlc3RDYXNlYCoqIHdpdGggYSBzbWFsbCBg
dWAhKSB0byBzZXQgdXAgdGhlIHNoYXJlZCByZXNvdXJjZXMgYW5kIGEgYHN0YXRpYyB2b2lkIFRl
YXJEb3duVGVzdENhc2UoKWAgZnVuY3Rpb24gdG8gdGVhciB0aGVtIGRvd24uCisKK1RoYXQncyBp
dCEgR29vZ2xlIFRlc3QgYXV0b21hdGljYWxseSBjYWxscyBgU2V0VXBUZXN0Q2FzZSgpYCBiZWZv
cmUgcnVubmluZyB0aGUKK19maXJzdCB0ZXN0XyBpbiB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZSAo
aS5lLiBiZWZvcmUgY3JlYXRpbmcgdGhlIGZpcnN0CitgRm9vVGVzdGAgb2JqZWN0KSwgYW5kIGNh
bGxzIGBUZWFyRG93blRlc3RDYXNlKClgIGFmdGVyIHJ1bm5pbmcgdGhlIF9sYXN0IHRlc3RfCitp
biBpdCAoaS5lLiBhZnRlciBkZWxldGluZyB0aGUgbGFzdCBgRm9vVGVzdGAgb2JqZWN0KS4gSW4g
YmV0d2VlbiwgdGhlIHRlc3RzCitjYW4gdXNlIHRoZSBzaGFyZWQgcmVzb3VyY2VzLgorCitSZW1l
bWJlciB0aGF0IHRoZSB0ZXN0IG9yZGVyIGlzIHVuZGVmaW5lZCwgc28geW91ciBjb2RlIGNhbid0
IGRlcGVuZCBvbiBhIHRlc3QKK3ByZWNlZGluZyBvciBmb2xsb3dpbmcgYW5vdGhlci4gQWxzbywg
dGhlIHRlc3RzIG11c3QgZWl0aGVyIG5vdCBtb2RpZnkgdGhlCitzdGF0ZSBvZiBhbnkgc2hhcmVk
IHJlc291cmNlLCBvciwgaWYgdGhleSBkbyBtb2RpZnkgdGhlIHN0YXRlLCB0aGV5IG11c3QKK3Jl
c3RvcmUgdGhlIHN0YXRlIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZSBiZWZvcmUgcGFzc2luZyBjb250
cm9sIHRvIHRoZSBuZXh0Cit0ZXN0LgorCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBwZXItdGVzdC1j
YXNlIHNldC11cCBhbmQgdGVhci1kb3duOgorYGBgCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAvLyBQZXItdGVzdC1jYXNlIHNldC11cC4K
KyAgLy8gQ2FsbGVkIGJlZm9yZSB0aGUgZmlyc3QgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZS4KKyAg
Ly8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90IG5lZWRlZC4KKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0
Q2FzZSgpIHsKKyAgICBzaGFyZWRfcmVzb3VyY2VfID0gbmV3IC4uLjsKKyAgfQorCisgIC8vIFBl
ci10ZXN0LWNhc2UgdGVhci1kb3duLgorICAvLyBDYWxsZWQgYWZ0ZXIgdGhlIGxhc3QgdGVzdCBp
biB0aGlzIHRlc3QgY2FzZS4KKyAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90IG5lZWRlZC4KKyAg
c3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBkZWxldGUgc2hhcmVkX3Jlc291
cmNlXzsKKyAgICBzaGFyZWRfcmVzb3VyY2VfID0gTlVMTDsKKyAgfQorCisgIC8vIFlvdSBjYW4g
ZGVmaW5lIHBlci10ZXN0IHNldC11cCBhbmQgdGVhci1kb3duIGxvZ2ljIGFzIHVzdWFsLgorICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IC4uLiB9CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsg
Li4uIH0KKworICAvLyBTb21lIGV4cGVuc2l2ZSByZXNvdXJjZSBzaGFyZWQgYnkgYWxsIHRlc3Rz
LgorICBzdGF0aWMgVCogc2hhcmVkX3Jlc291cmNlXzsKK307CisKK1QqIEZvb1Rlc3Q6OnNoYXJl
ZF9yZXNvdXJjZV8gPSBOVUxMOworCitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgLi4uIHlv
dSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlIGhlcmUgLi4uCit9CitURVNUX0YoRm9vVGVz
dCwgVGVzdDIpIHsKKyAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlIGhlcmUg
Li4uCit9CitgYGAKKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMg
R2xvYmFsIFNldC1VcCBhbmQgVGVhci1Eb3duICMKKworSnVzdCBhcyB5b3UgY2FuIGRvIHNldC11
cCBhbmQgdGVhci1kb3duIGF0IHRoZSB0ZXN0IGxldmVsIGFuZCB0aGUgdGVzdCBjYXNlCitsZXZl
bCwgeW91IGNhbiBhbHNvIGRvIGl0IGF0IHRoZSB0ZXN0IHByb2dyYW0gbGV2ZWwuIEhlcmUncyBo
b3cuCisKK0ZpcnN0LCB5b3Ugc3ViY2xhc3MgdGhlIGA6OnRlc3Rpbmc6OkVudmlyb25tZW50YCBj
bGFzcyB0byBkZWZpbmUgYSB0ZXN0CitlbnZpcm9ubWVudCwgd2hpY2gga25vd3MgaG93IHRvIHNl
dC11cCBhbmQgdGVhci1kb3duOgorCitgYGAKK2NsYXNzIEVudmlyb25tZW50IHsKKyBwdWJsaWM6
CisgIHZpcnR1YWwgfkVudmlyb25tZW50KCkge30KKyAgLy8gT3ZlcnJpZGUgdGhpcyB0byBkZWZp
bmUgaG93IHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQuCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgp
IHt9CisgIC8vIE92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGhvdyB0byB0ZWFyIGRvd24gdGhlIGVu
dmlyb25tZW50LgorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7fQorfTsKK2BgYAorCitUaGVu
LCB5b3UgcmVnaXN0ZXIgYW4gaW5zdGFuY2Ugb2YgeW91ciBlbnZpcm9ubWVudCBjbGFzcyB3aXRo
IEdvb2dsZSBUZXN0IGJ5CitjYWxsaW5nIHRoZSBgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52
aXJvbm1lbnQoKWAgZnVuY3Rpb246CisKK2BgYAorRW52aXJvbm1lbnQqIEFkZEdsb2JhbFRlc3RF
bnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KTsKK2BgYAorCitOb3csIHdoZW4gYFJVTl9BTExf
VEVTVFMoKWAgaXMgY2FsbGVkLCBpdCBmaXJzdCBjYWxscyB0aGUgYFNldFVwKClgIG1ldGhvZCBv
ZgordGhlIGVudmlyb25tZW50IG9iamVjdCwgdGhlbiBydW5zIHRoZSB0ZXN0cyBpZiB0aGVyZSB3
YXMgbm8gZmF0YWwgZmFpbHVyZXMsIGFuZAorZmluYWxseSBjYWxscyBgVGVhckRvd24oKWAgb2Yg
dGhlIGVudmlyb25tZW50IG9iamVjdC4KKworSXQncyBPSyB0byByZWdpc3RlciBtdWx0aXBsZSBl
bnZpcm9ubWVudCBvYmplY3RzLiBJbiB0aGlzIGNhc2UsIHRoZWlyIGBTZXRVcCgpYAord2lsbCBi
ZSBjYWxsZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIHJlZ2lzdGVyZWQsIGFuZCB0aGVpciBgVGVh
ckRvd24oKWAgd2lsbCBiZQorY2FsbGVkIGluIHRoZSByZXZlcnNlIG9yZGVyLgorCitOb3RlIHRo
YXQgR29vZ2xlIFRlc3QgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSByZWdpc3RlcmVkIGVudmlyb25t
ZW50IG9iamVjdHMuCitUaGVyZWZvcmUgKipkbyBub3QgZGVsZXRlIHRoZW0qKiBieSB5b3Vyc2Vs
Zi4KKworWW91IHNob3VsZCBjYWxsIGBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgYmVmb3Jl
IGBSVU5fQUxMX1RFU1RTKClgIGlzCitjYWxsZWQsIHByb2JhYmx5IGluIGBtYWluKClgLiBJZiB5
b3UgdXNlIGBndGVzdF9tYWluYCwgeW91IG5lZWQgdG8gICAgICBjYWxsCit0aGlzIGJlZm9yZSBg
bWFpbigpYCBzdGFydHMgZm9yIGl0IHRvIHRha2UgZWZmZWN0LiBPbmUgd2F5IHRvIGRvIHRoaXMg
aXMgdG8KK2RlZmluZSBhIGdsb2JhbCB2YXJpYWJsZSBsaWtlIHRoaXM6CisKK2BgYAorOjp0ZXN0
aW5nOjpFbnZpcm9ubWVudCogY29uc3QgZm9vX2VudiA9IDo6dGVzdGluZzo6QWRkR2xvYmFsVGVz
dEVudmlyb25tZW50KG5ldyBGb29FbnZpcm9ubWVudCk7CitgYGAKKworSG93ZXZlciwgd2Ugc3Ry
b25nbHkgcmVjb21tZW5kIHlvdSB0byB3cml0ZSB5b3VyIG93biBgbWFpbigpYCBhbmQgY2FsbAor
YEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCB0aGVyZSwgYXMgcmVseWluZyBvbiBpbml0aWFs
aXphdGlvbiBvZiBnbG9iYWwKK3ZhcmlhYmxlcyBtYWtlcyB0aGUgY29kZSBoYXJkZXIgdG8gcmVh
ZCBhbmQgbWF5IGNhdXNlIHByb2JsZW1zIHdoZW4geW91CityZWdpc3RlciBtdWx0aXBsZSBlbnZp
cm9ubWVudHMgZnJvbSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMgYW5kIHRoZQorZW52aXJv
bm1lbnRzIGhhdmUgZGVwZW5kZW5jaWVzIGFtb25nIHRoZW0gKHJlbWVtYmVyIHRoYXQgdGhlIGNv
bXBpbGVyIGRvZXNuJ3QKK2d1YXJhbnRlZSB0aGUgb3JkZXIgaW4gd2hpY2ggZ2xvYmFsIHZhcmlh
YmxlcyBmcm9tIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cworYXJlIGluaXRpYWxpemVkKS4K
KworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKworIyBWYWx1ZSBQYXJh
bWV0ZXJpemVkIFRlc3RzICMKKworX1ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHNfIGFsbG93IHlv
dSB0byB0ZXN0IHlvdXIgY29kZSB3aXRoIGRpZmZlcmVudAorcGFyYW1ldGVycyB3aXRob3V0IHdy
aXRpbmcgbXVsdGlwbGUgY29waWVzIG9mIHRoZSBzYW1lIHRlc3QuCisKK1N1cHBvc2UgeW91IHdy
aXRlIGEgdGVzdCBmb3IgeW91ciBjb2RlIGFuZCB0aGVuIHJlYWxpemUgdGhhdCB5b3VyIGNvZGUg
aXMgYWZmZWN0ZWQgYnkgYSBwcmVzZW5jZSBvZiBhIEJvb2xlYW4gY29tbWFuZCBsaW5lIGZsYWcu
CisKK2BgYAorVEVTVChNeUNvZGVUZXN0LCBUZXN0Rm9vKSB7CisgIC8vIEEgY29kZSB0byB0ZXN0
IGZvbygpLgorfQorYGBgCisKK1VzdWFsbHkgcGVvcGxlIGZhY3RvciB0aGVpciB0ZXN0IGNvZGUg
aW50byBhIGZ1bmN0aW9uIHdpdGggYSBCb29sZWFuIHBhcmFtZXRlciBpbiBzdWNoIHNpdHVhdGlv
bnMuIFRoZSBmdW5jdGlvbiBzZXRzIHRoZSBmbGFnLCB0aGVuIGV4ZWN1dGVzIHRoZSB0ZXN0aW5n
IGNvZGUuCisKK2BgYAordm9pZCBUZXN0Rm9vSGVscGVyKGJvb2wgZmxhZ192YWx1ZSkgeworICBm
bGFnID0gZmxhZ192YWx1ZTsKKyAgLy8gQSBjb2RlIHRvIHRlc3QgZm9vKCkuCit9CisKK1RFU1Qo
TXlDb2RlVGVzdCwgVGVzdEZvb28pIHsKKyAgVGVzdEZvb0hlbHBlcihmYWxzZSk7CisgIFRlc3RG
b29IZWxwZXIodHJ1ZSk7Cit9CitgYGAKKworQnV0IHRoaXMgc2V0dXAgaGFzIHNlcmlvdXMgZHJh
d2JhY2tzLiBGaXJzdCwgd2hlbiBhIHRlc3QgYXNzZXJ0aW9uIGZhaWxzIGluIHlvdXIgdGVzdHMs
IGl0IGJlY29tZXMgdW5jbGVhciB3aGF0IHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgY2F1c2VkIGl0
IHRvIGZhaWwuIFlvdSBjYW4gc3RyZWFtIGEgY2xhcmlmeWluZyBtZXNzYWdlIGludG8geW91ciBg
RVhQRUNUYC9gQVNTRVJUYCBzdGF0ZW1lbnRzLCBidXQgaXQgeW91J2xsIGhhdmUgdG8gZG8gaXQg
d2l0aCBhbGwgb2YgdGhlbS4gU2Vjb25kLCB5b3UgaGF2ZSB0byBhZGQgb25lIHN1Y2ggaGVscGVy
IGZ1bmN0aW9uIHBlciB0ZXN0LiBXaGF0IGlmIHlvdSBoYXZlIHRlbiB0ZXN0cz8gVHdlbnR5PyBB
IGh1bmRyZWQ/CisKK1ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgd2lsbCBsZXQgeW91IHdyaXRl
IHlvdXIgdGVzdCBvbmx5IG9uY2UgYW5kIHRoZW4gZWFzaWx5IGluc3RhbnRpYXRlIGFuZCBydW4g
aXQgd2l0aCBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHBhcmFtZXRlciB2YWx1ZXMuCisKK0hlcmUg
YXJlIHNvbWUgb3RoZXIgc2l0dWF0aW9ucyB3aGVuIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMg
Y29tZSBoYW5keToKKworICAqIFlvdSB3YW50IHRvIHRlc3QgZGlmZmVyZW50IGltcGxlbWVudGF0
aW9ucyBvZiBhbiBPTyBpbnRlcmZhY2UuCisgICogWW91IHdhbnQgdG8gdGVzdCB5b3VyIGNvZGUg
b3ZlciB2YXJpb3VzIGlucHV0cyAoYS5rLmEuIGRhdGEtZHJpdmVuIHRlc3RpbmcpLiBUaGlzIGZl
YXR1cmUgaXMgZWFzeSB0byBhYnVzZSwgc28gcGxlYXNlIGV4ZXJjaXNlIHlvdXIgZ29vZCBzZW5z
ZSB3aGVuIGRvaW5nIGl0IQorCisjIyBIb3cgdG8gV3JpdGUgVmFsdWUtUGFyYW1ldGVyaXplZCBU
ZXN0cyAjIworCitUbyB3cml0ZSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLCBmaXJzdCB5b3Ug
c2hvdWxkIGRlZmluZSBhIGZpeHR1cmUKK2NsYXNzLiAgSXQgbXVzdCBiZSBkZXJpdmVkIGZyb20g
Ym90aCBgOjp0ZXN0aW5nOjpUZXN0YCBhbmQKK2A6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFj
ZTxUPmAgKHRoZSBsYXR0ZXIgaXMgYSBwdXJlIGludGVyZmFjZSksCit3aGVyZSBgVGAgaXMgdGhl
IHR5cGUgb2YgeW91ciBwYXJhbWV0ZXIgdmFsdWVzLiAgRm9yIGNvbnZlbmllbmNlLCB5b3UKK2Nh
biBqdXN0IGRlcml2ZSB0aGUgZml4dHVyZSBjbGFzcyBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RXaXRo
UGFyYW08VD5gLAord2hpY2ggaXRzZWxmIGlzIGRlcml2ZWQgZnJvbSBib3RoIGA6OnRlc3Rpbmc6
OlRlc3RgIGFuZAorYDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPFQ+YC4gYFRgIGNhbiBi
ZSBhbnkgY29weWFibGUgdHlwZS4gSWYKK2l0J3MgYSByYXcgcG9pbnRlciwgeW91IGFyZSByZXNw
b25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIGxpZmVzcGFuIG9mCit0aGUgcG9pbnRlZCB2YWx1ZXMu
CisKK2BgYAorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08
Y29uc3QgY2hhcio+IHsKKyAgLy8gWW91IGNhbiBpbXBsZW1lbnQgYWxsIHRoZSB1c3VhbCBmaXh0
dXJlIGNsYXNzIG1lbWJlcnMgaGVyZS4KKyAgLy8gVG8gYWNjZXNzIHRoZSB0ZXN0IHBhcmFtZXRl
ciwgY2FsbCBHZXRQYXJhbSgpIGZyb20gY2xhc3MKKyAgLy8gVGVzdFdpdGhQYXJhbTxUPi4KK307
CisKKy8vIE9yLCB3aGVuIHlvdSB3YW50IHRvIGFkZCBwYXJhbWV0ZXJzIHRvIGEgcHJlLWV4aXN0
aW5nIGZpeHR1cmUgY2xhc3M6CitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3QgeworICAuLi4KK307CitjbGFzcyBCYXJUZXN0IDogcHVibGljIEJhc2VUZXN0LAorICAgICAg
ICAgICAgICAgIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxjb25zdCBjaGFy
Kj4geworICAuLi4KK307CitgYGAKKworVGhlbiwgdXNlIHRoZSBgVEVTVF9QYCBtYWNybyB0byBk
ZWZpbmUgYXMgbWFueSB0ZXN0IHBhdHRlcm5zIHVzaW5nCit0aGlzIGZpeHR1cmUgYXMgeW91IHdh
bnQuICBUaGUgYF9QYCBzdWZmaXggaXMgZm9yICJwYXJhbWV0ZXJpemVkIiBvcgorInBhdHRlcm4i
LCB3aGljaGV2ZXIgeW91IHByZWZlciB0byB0aGluay4KKworYGBgCitURVNUX1AoRm9vVGVzdCwg
RG9lc0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgYWNjZXNzIHRoZSB0ZXN0IHBhcmFtZXRl
ciB3aXRoIHRoZSBHZXRQYXJhbSgpIG1ldGhvZAorICAvLyBvZiB0aGUgVGVzdFdpdGhQYXJhbTxU
PiBjbGFzczoKKyAgRVhQRUNUX1RSVUUoZm9vLkJsYWgoR2V0UGFyYW0oKSkpOworICAuLi4KK30K
KworVEVTVF9QKEZvb1Rlc3QsIEhhc0JsYWhCbGFoKSB7CisgIC4uLgorfQorYGBgCisKK0ZpbmFs
bHksIHlvdSBjYW4gdXNlIGBJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgdG8gaW5zdGFudGlhdGUg
dGhlIHRlc3QKK2Nhc2Ugd2l0aCBhbnkgc2V0IG9mIHBhcmFtZXRlcnMgeW91IHdhbnQuIEdvb2ds
ZSBUZXN0IGRlZmluZXMgYSBudW1iZXIgb2YKK2Z1bmN0aW9ucyBmb3IgZ2VuZXJhdGluZyB0ZXN0
IHBhcmFtZXRlcnMuIFRoZXkgcmV0dXJuIHdoYXQgd2UgY2FsbAorKHN1cnByaXNlISkgX3BhcmFt
ZXRlciBnZW5lcmF0b3JzXy4gSGVyZSBpcyBhIHN1bW1hcnkgb2YgdGhlbSwKK3doaWNoIGFyZSBh
bGwgaW4gdGhlIGB0ZXN0aW5nYCBuYW1lc3BhY2U6CisKK3wgYFJhbmdlKGJlZ2luLCBlbmRbLCBz
dGVwXSlgIHwgWWllbGRzIHZhbHVlcyBge2JlZ2luLCBiZWdpbitzdGVwLCBiZWdpbitzdGVwK3N0
ZXAsIC4uLn1gLiBUaGUgdmFsdWVzIGRvIG5vdCBpbmNsdWRlIGBlbmRgLiBgc3RlcGAgZGVmYXVs
dHMgdG8gMS4gfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGBWYWx1ZXMo
djEsIHYyLCAuLi4sIHZOKWAgICB8IFlpZWxkcyB2YWx1ZXMgYHt2MSwgdjIsIC4uLiwgdk59YC4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYFZhbHVlc0luKGNvbnRhaW5lcilgIGFuZCBgVmFs
dWVzSW4oYmVnaW4sIGVuZClgIHwgWWllbGRzIHZhbHVlcyBmcm9tIGEgQy1zdHlsZSBhcnJheSwg
YW4gU1RMLXN0eWxlIGNvbnRhaW5lciwgb3IgYW4gaXRlcmF0b3IgcmFuZ2UgYFtiZWdpbiwgZW5k
KWAuIGBjb250YWluZXJgLCBgYmVnaW5gLCBhbmQgYGVuZGAgY2FuIGJlIGV4cHJlc3Npb25zIHdo
b3NlIHZhbHVlcyBhcmUgZGV0ZXJtaW5lZCBhdCBydW4gdGltZS4gIHwKK3wgYEJvb2woKWAgICAg
ICAgICAgICAgICAgICAgIHwgWWllbGRzIHNlcXVlbmNlIGB7ZmFsc2UsIHRydWV9YC4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorfCBgQ29tYmluZShnMSwgZzIsIC4uLiwgZ04pYCAgfCBZaWVs
ZHMgYWxsIGNvbWJpbmF0aW9ucyAodGhlIENhcnRlc2lhbiBwcm9kdWN0IGZvciB0aGUgbWF0aCBz
YXZ2eSkgb2YgdGhlIHZhbHVlcyBnZW5lcmF0ZWQgYnkgdGhlIGBOYCBnZW5lcmF0b3JzLiBUaGlz
IGlzIG9ubHkgYXZhaWxhYmxlIGlmIHlvdXIgc3lzdGVtIHByb3ZpZGVzIHRoZSBgPHRyMS90dXBs
ZT5gIGhlYWRlci4gSWYgeW91IGFyZSBzdXJlIHlvdXIgc3lzdGVtIGRvZXMsIGFuZCBHb29nbGUg
VGVzdCBkaXNhZ3JlZXMsIHlvdSBjYW4gb3ZlcnJpZGUgaXQgYnkgZGVmaW5pbmcgYEdURVNUX0hB
U19UUjFfVFVQTEU9MWAuIFNlZSBjb21tZW50cyBpbiBbaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9n
dGVzdC1wb3J0LmhdKC4uL2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oKSBmb3Ig
bW9yZSBpbmZvcm1hdGlvbi4gfAorCitGb3IgbW9yZSBkZXRhaWxzLCBzZWUgdGhlIGNvbW1lbnRz
IGF0IHRoZSBkZWZpbml0aW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMgaW4gdGhlIFtzb3VyY2UgY29k
ZV0oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgpLgorCitUaGUgZm9sbG93aW5n
IHN0YXRlbWVudCB3aWxsIGluc3RhbnRpYXRlIHRlc3RzIGZyb20gdGhlIGBGb29UZXN0YCB0ZXN0
IGNhc2UKK2VhY2ggd2l0aCBwYXJhbWV0ZXIgdmFsdWVzIGAibWVlbnkiYCwgYCJtaW55ImAsIGFu
ZCBgIm1vZSJgLgorCitgYGAKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEluc3RhbnRpYXRpb25O
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgRm9vVGVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKCJtZWVueSIsICJtaW55IiwgIm1vZSIpKTsKK2BgYAor
CitUbyBkaXN0aW5ndWlzaCBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIHRoZSBwYXR0ZXJuICh5ZXMs
IHlvdSBjYW4KK2luc3RhbnRpYXRlIGl0IG1vcmUgdGhhbiBvbmNlKSwgdGhlIGZpcnN0IGFyZ3Vt
ZW50IHRvCitgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIGlzIGEgcHJlZml4IHRoYXQgd2lsbCBi
ZSBhZGRlZCB0byB0aGUgYWN0dWFsCit0ZXN0IGNhc2UgbmFtZS4gUmVtZW1iZXIgdG8gcGljayB1
bmlxdWUgcHJlZml4ZXMgZm9yIGRpZmZlcmVudAoraW5zdGFudGlhdGlvbnMuIFRoZSB0ZXN0cyBm
cm9tIHRoZSBpbnN0YW50aWF0aW9uIGFib3ZlIHdpbGwgaGF2ZSB0aGVzZQorbmFtZXM6CisKKyAg
KiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8wYCBmb3IgYCJtZWVueSJgCisg
ICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMWAgZm9yIGAibWlueSJgCisg
ICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMmAgZm9yIGAibW9lImAKKyAg
KiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8wYCBmb3IgYCJtZWVueSJg
CisgICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMWAgZm9yIGAibWlu
eSJgCisgICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMmAgZm9yIGAi
bW9lImAKKworWW91IGNhbiB1c2UgdGhlc2UgbmFtZXMgaW4gWy0tZ3Rlc3RcLWZpbHRlcl0oI3J1
bm5pbmctYS1zdWJzZXQtb2YtdGhlLXRlc3RzKS4KKworVGhpcyBzdGF0ZW1lbnQgd2lsbCBpbnN0
YW50aWF0ZSBhbGwgdGVzdHMgZnJvbSBgRm9vVGVzdGAgYWdhaW4sIGVhY2gKK3dpdGggcGFyYW1l
dGVyIHZhbHVlcyBgImNhdCJgIGFuZCBgImRvZyJgOgorCitgYGAKK2NvbnN0IGNoYXIqIHBldHNb
XSA9IHsiY2F0IiwgImRvZyJ9OworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQW5vdGhlckluc3Rh
bnRpYXRpb25OYW1lLCBGb29UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5n
OjpWYWx1ZXNJbihwZXRzKSk7CitgYGAKKworVGhlIHRlc3RzIGZyb20gdGhlIGluc3RhbnRpYXRp
b24gYWJvdmUgd2lsbCBoYXZlIHRoZXNlIG5hbWVzOgorCisgICogYEFub3RoZXJJbnN0YW50aWF0
aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzBgIGZvciBgImNhdCJgCisgICogYEFub3RoZXJJbnN0
YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzFgIGZvciBgImRvZyJgCisgICogYEFub3Ro
ZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzBgIGZvciBgImNhdCJgCisg
ICogYEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzFgIGZvciBg
ImRvZyJgCisKK1BsZWFzZSBub3RlIHRoYXQgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCB3aWxs
IGluc3RhbnRpYXRlIF9hbGxfCit0ZXN0cyBpbiB0aGUgZ2l2ZW4gdGVzdCBjYXNlLCB3aGV0aGVy
IHRoZWlyIGRlZmluaXRpb25zIGNvbWUgYmVmb3JlIG9yCitfYWZ0ZXJfIHRoZSBgSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1BgIHN0YXRlbWVudC4KKworWW91IGNhbiBzZWUKK1t0aGVzZV0oLi4vc2Ft
cGxlcy9zYW1wbGU3X3VuaXR0ZXN0LmNjKQorW2ZpbGVzXSguLi9zYW1wbGVzL3NhbXBsZThfdW5p
dHRlc3QuY2MpIGZvciBtb3JlIGV4YW1wbGVzLgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdp
bmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFjOyBzaW5jZSB2ZXJzaW9uIDEu
Mi4wLgorCisjIyBDcmVhdGluZyBWYWx1ZS1QYXJhbWV0ZXJpemVkIEFic3RyYWN0IFRlc3RzICMj
CisKK0luIHRoZSBhYm92ZSwgd2UgZGVmaW5lIGFuZCBpbnN0YW50aWF0ZSBgRm9vVGVzdGAgaW4g
dGhlIHNhbWUgc291cmNlCitmaWxlLiBTb21ldGltZXMgeW91IG1heSB3YW50IHRvIGRlZmluZSB2
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGluIGEKK2xpYnJhcnkgYW5kIGxldCBvdGhlciBwZW9w
bGUgaW5zdGFudGlhdGUgdGhlbSBsYXRlci4gVGhpcyBwYXR0ZXJuIGlzCitrbm93biBhcyA8aT5h
YnN0cmFjdCB0ZXN0czwvaT4uIEFzIGFuIGV4YW1wbGUgb2YgaXRzIGFwcGxpY2F0aW9uLCB3aGVu
IHlvdQorYXJlIGRlc2lnbmluZyBhbiBpbnRlcmZhY2UgeW91IGNhbiB3cml0ZSBhIHN0YW5kYXJk
IHN1aXRlIG9mIGFic3RyYWN0Cit0ZXN0cyAocGVyaGFwcyB1c2luZyBhIGZhY3RvcnkgZnVuY3Rp
b24gYXMgdGhlIHRlc3QgcGFyYW1ldGVyKSB0aGF0CithbGwgaW1wbGVtZW50YXRpb25zIG9mIHRo
ZSBpbnRlcmZhY2UgYXJlIGV4cGVjdGVkIHRvIHBhc3MuIFdoZW4KK3NvbWVvbmUgaW1wbGVtZW50
cyB0aGUgaW50ZXJmYWNlLCBoZSBjYW4gaW5zdGFudGlhdGUgeW91ciBzdWl0ZSB0byBnZXQKK2Fs
bCB0aGUgaW50ZXJmYWNlLWNvbmZvcm1hbmNlIHRlc3RzIGZvciBmcmVlLgorCitUbyBkZWZpbmUg
YWJzdHJhY3QgdGVzdHMsIHlvdSBzaG91bGQgb3JnYW5pemUgeW91ciBjb2RlIGxpa2UgdGhpczoK
KworICAxLiBQdXQgdGhlIGRlZmluaXRpb24gb2YgdGhlIHBhcmFtZXRlcml6ZWQgdGVzdCBmaXh0
dXJlIGNsYXNzIChlLmcuIGBGb29UZXN0YCkgaW4gYSBoZWFkZXIgZmlsZSwgc2F5IGBmb29fcGFy
YW1fdGVzdC5oYC4gVGhpbmsgb2YgdGhpcyBhcyBfZGVjbGFyaW5nXyB5b3VyIGFic3RyYWN0IHRl
c3RzLgorICAxLiBQdXQgdGhlIGBURVNUX1BgIGRlZmluaXRpb25zIGluIGBmb29fcGFyYW1fdGVz
dC5jY2AsIHdoaWNoIGluY2x1ZGVzIGBmb29fcGFyYW1fdGVzdC5oYC4gVGhpbmsgb2YgdGhpcyBh
cyBfaW1wbGVtZW50aW5nXyB5b3VyIGFic3RyYWN0IHRlc3RzLgorCitPbmNlIHRoZXkgYXJlIGRl
ZmluZWQsIHlvdSBjYW4gaW5zdGFudGlhdGUgdGhlbSBieSBpbmNsdWRpbmcKK2Bmb29fcGFyYW1f
dGVzdC5oYCwgaW52b2tpbmcgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKClgLCBhbmQgbGlua2lu
Zword2l0aCBgZm9vX3BhcmFtX3Rlc3QuY2NgLiBZb3UgY2FuIGluc3RhbnRpYXRlIHRoZSBzYW1l
IGFic3RyYWN0IHRlc3QKK2Nhc2UgbXVsdGlwbGUgdGltZXMsIHBvc3NpYmx5IGluIGRpZmZlcmVu
dCBzb3VyY2UgZmlsZXMuCisKKyMgVHlwZWQgVGVzdHMgIworCitTdXBwb3NlIHlvdSBoYXZlIG11
bHRpcGxlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kCit3YW50IHRv
IG1ha2Ugc3VyZSB0aGF0IGFsbCBvZiB0aGVtIHNhdGlzZnkgc29tZSBjb21tb24gcmVxdWlyZW1l
bnRzLgorT3IsIHlvdSBtYXkgaGF2ZSBkZWZpbmVkIHNldmVyYWwgdHlwZXMgdGhhdCBhcmUgc3Vw
cG9zZWQgdG8gY29uZm9ybSB0bwordGhlIHNhbWUgImNvbmNlcHQiIGFuZCB5b3Ugd2FudCB0byB2
ZXJpZnkgaXQuICBJbiBib3RoIGNhc2VzLCB5b3Ugd2FudAordGhlIHNhbWUgdGVzdCBsb2dpYyBy
ZXBlYXRlZCBmb3IgZGlmZmVyZW50IHR5cGVzLgorCitXaGlsZSB5b3UgY2FuIHdyaXRlIG9uZSBg
VEVTVGAgb3IgYFRFU1RfRmAgZm9yIGVhY2ggdHlwZSB5b3Ugd2FudCB0bwordGVzdCAoYW5kIHlv
dSBtYXkgZXZlbiBmYWN0b3IgdGhlIHRlc3QgbG9naWMgaW50byBhIGZ1bmN0aW9uIHRlbXBsYXRl
Cit0aGF0IHlvdSBpbnZva2UgZnJvbSB0aGUgYFRFU1RgKSwgaXQncyB0ZWRpb3VzIGFuZCBkb2Vz
bid0IHNjYWxlOgoraWYgeW91IHdhbnQgX21fIHRlc3RzIG92ZXIgX25fIHR5cGVzLCB5b3UnbGwg
ZW5kIHVwIHdyaXRpbmcgX21cKm5fCitgVEVTVGBzLgorCitfVHlwZWQgdGVzdHNfIGFsbG93IHlv
dSB0byByZXBlYXQgdGhlIHNhbWUgdGVzdCBsb2dpYyBvdmVyIGEgbGlzdCBvZgordHlwZXMuICBZ
b3Ugb25seSBuZWVkIHRvIHdyaXRlIHRoZSB0ZXN0IGxvZ2ljIG9uY2UsIGFsdGhvdWdoIHlvdSBt
dXN0Citrbm93IHRoZSB0eXBlIGxpc3Qgd2hlbiB3cml0aW5nIHR5cGVkIHRlc3RzLiAgSGVyZSdz
IGhvdyB5b3UgZG8gaXQ6CisKK0ZpcnN0LCBkZWZpbmUgYSBmaXh0dXJlIGNsYXNzIHRlbXBsYXRl
LiAgSXQgc2hvdWxkIGJlIHBhcmFtZXRlcml6ZWQKK2J5IGEgdHlwZS4gIFJlbWVtYmVyIHRvIGRl
cml2ZSBpdCBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RgOgorCitgYGAKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHB1YmxpYzoK
KyAgLi4uCisgIHR5cGVkZWYgc3RkOjpsaXN0PFQ+IExpc3Q7CisgIHN0YXRpYyBUIHNoYXJlZF87
CisgIFQgdmFsdWVfOworfTsKK2BgYAorCitOZXh0LCBhc3NvY2lhdGUgYSBsaXN0IG9mIHR5cGVz
IHdpdGggdGhlIHRlc3QgY2FzZSwgd2hpY2ggd2lsbCBiZQorcmVwZWF0ZWQgZm9yIGVhY2ggdHlw
ZSBpbiB0aGUgbGlzdDoKKworYGBgCit0eXBlZGVmIDo6dGVzdGluZzo6VHlwZXM8Y2hhciwgaW50
LCB1bnNpZ25lZCBpbnQ+IE15VHlwZXM7CitUWVBFRF9URVNUX0NBU0UoRm9vVGVzdCwgTXlUeXBl
cyk7CitgYGAKKworVGhlIGB0eXBlZGVmYCBpcyBuZWNlc3NhcnkgZm9yIHRoZSBgVFlQRURfVEVT
VF9DQVNFYCBtYWNybyB0byBwYXJzZQorY29ycmVjdGx5LiAgT3RoZXJ3aXNlIHRoZSBjb21waWxl
ciB3aWxsIHRoaW5rIHRoYXQgZWFjaCBjb21tYSBpbiB0aGUKK3R5cGUgbGlzdCBpbnRyb2R1Y2Vz
IGEgbmV3IG1hY3JvIGFyZ3VtZW50LgorCitUaGVuLCB1c2UgYFRZUEVEX1RFU1QoKWAgaW5zdGVh
ZCBvZiBgVEVTVF9GKClgIHRvIGRlZmluZSBhIHR5cGVkIHRlc3QKK2ZvciB0aGlzIHRlc3QgY2Fz
ZS4gIFlvdSBjYW4gcmVwZWF0IHRoaXMgYXMgbWFueSB0aW1lcyBhcyB5b3Ugd2FudDoKKworYGBg
CitUWVBFRF9URVNUKEZvb1Rlc3QsIERvZXNCbGFoKSB7CisgIC8vIEluc2lkZSBhIHRlc3QsIHJl
ZmVyIHRvIHRoZSBzcGVjaWFsIG5hbWUgVHlwZVBhcmFtIHRvIGdldCB0aGUgdHlwZQorICAvLyBw
YXJhbWV0ZXIuICBTaW5jZSB3ZSBhcmUgaW5zaWRlIGEgZGVyaXZlZCBjbGFzcyB0ZW1wbGF0ZSwg
QysrIHJlcXVpcmVzCisgIC8vIHVzIHRvIHZpc2l0IHRoZSBtZW1iZXJzIG9mIEZvb1Rlc3Qgdmlh
ICd0aGlzJy4KKyAgVHlwZVBhcmFtIG4gPSB0aGlzLT52YWx1ZV87CisKKyAgLy8gVG8gdmlzaXQg
c3RhdGljIG1lbWJlcnMgb2YgdGhlIGZpeHR1cmUsIGFkZCB0aGUgJ1Rlc3RGaXh0dXJlOjonCisg
IC8vIHByZWZpeC4KKyAgbiArPSBUZXN0Rml4dHVyZTo6c2hhcmVkXzsKKworICAvLyBUbyByZWZl
ciB0byB0eXBlZGVmcyBpbiB0aGUgZml4dHVyZSwgYWRkIHRoZSAndHlwZW5hbWUgVGVzdEZpeHR1
cmU6OicKKyAgLy8gcHJlZml4LiAgVGhlICd0eXBlbmFtZScgaXMgcmVxdWlyZWQgdG8gc2F0aXNm
eSB0aGUgY29tcGlsZXIuCisgIHR5cGVuYW1lIFRlc3RGaXh0dXJlOjpMaXN0IHZhbHVlczsKKyAg
dmFsdWVzLnB1c2hfYmFjayhuKTsKKyAgLi4uCit9CisKK1RZUEVEX1RFU1QoRm9vVGVzdCwgSGFz
UHJvcGVydHlBKSB7IC4uLiB9CitgYGAKKworWW91IGNhbiBzZWUgYHNhbXBsZXMvc2FtcGxlNl91
bml0dGVzdC5jY2AgZm9yIGEgY29tcGxldGUgZXhhbXBsZS4KKworX0F2YWlsYWJpbGl0eTpfIExp
bnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYzsKK3NpbmNlIHZl
cnNpb24gMS4xLjAuCisKKyMgVHlwZS1QYXJhbWV0ZXJpemVkIFRlc3RzICMKKworX1R5cGUtcGFy
YW1ldGVyaXplZCB0ZXN0c18gYXJlIGxpa2UgdHlwZWQgdGVzdHMsIGV4Y2VwdCB0aGF0IHRoZXkK
K2Rvbid0IHJlcXVpcmUgeW91IHRvIGtub3cgdGhlIGxpc3Qgb2YgdHlwZXMgYWhlYWQgb2YgdGlt
ZS4gIEluc3RlYWQsCit5b3UgY2FuIGRlZmluZSB0aGUgdGVzdCBsb2dpYyBmaXJzdCBhbmQgaW5z
dGFudGlhdGUgaXQgd2l0aCBkaWZmZXJlbnQKK3R5cGUgbGlzdHMgbGF0ZXIuICBZb3UgY2FuIGV2
ZW4gaW5zdGFudGlhdGUgaXQgbW9yZSB0aGFuIG9uY2UgaW4gdGhlCitzYW1lIHByb2dyYW0uCisK
K0lmIHlvdSBhcmUgZGVzaWduaW5nIGFuIGludGVyZmFjZSBvciBjb25jZXB0LCB5b3UgY2FuIGRl
ZmluZSBhIHN1aXRlCitvZiB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMgdG8gdmVyaWZ5IHByb3Bl
cnRpZXMgdGhhdCBhbnkgdmFsaWQKK2ltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnRlcmZhY2UvY29u
Y2VwdCBzaG91bGQgaGF2ZS4gIFRoZW4sIHRoZSBhdXRob3IKK29mIGVhY2ggaW1wbGVtZW50YXRp
b24gY2FuIGp1c3QgaW5zdGFudGlhdGUgdGhlIHRlc3Qgc3VpdGUgd2l0aCBoaXMKK3R5cGUgdG8g
dmVyaWZ5IHRoYXQgaXQgY29uZm9ybXMgdG8gdGhlIHJlcXVpcmVtZW50cywgd2l0aG91dCBoYXZp
bmcgdG8KK3dyaXRlIHNpbWlsYXIgdGVzdHMgcmVwZWF0ZWRseS4gIEhlcmUncyBhbiBleGFtcGxl
OgorCitGaXJzdCwgZGVmaW5lIGEgZml4dHVyZSBjbGFzcyB0ZW1wbGF0ZSwgYXMgd2UgZGlkIHdp
dGggdHlwZWQgdGVzdHM6CisKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBGb29U
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgIC4uLgorfTsKK2BgYAorCitOZXh0LCBk
ZWNsYXJlIHRoYXQgeW91IHdpbGwgZGVmaW5lIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2Fz
ZToKKworYGBgCitUWVBFRF9URVNUX0NBU0VfUChGb29UZXN0KTsKK2BgYAorCitUaGUgYF9QYCBz
dWZmaXggaXMgZm9yICJwYXJhbWV0ZXJpemVkIiBvciAicGF0dGVybiIsIHdoaWNoZXZlciB5b3UK
K3ByZWZlciB0byB0aGluay4KKworVGhlbiwgdXNlIGBUWVBFRF9URVNUX1AoKWAgdG8gZGVmaW5l
IGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuICBZb3UKK2NhbiByZXBlYXQgdGhpcyBhcyBtYW55
IHRpbWVzIGFzIHlvdSB3YW50OgorCitgYGAKK1RZUEVEX1RFU1RfUChGb29UZXN0LCBEb2VzQmxh
aCkgeworICAvLyBJbnNpZGUgYSB0ZXN0LCByZWZlciB0byBUeXBlUGFyYW0gdG8gZ2V0IHRoZSB0
eXBlIHBhcmFtZXRlci4KKyAgVHlwZVBhcmFtIG4gPSAwOworICAuLi4KK30KKworVFlQRURfVEVT
VF9QKEZvb1Rlc3QsIEhhc1Byb3BlcnR5QSkgeyAuLi4gfQorYGBgCisKK05vdyB0aGUgdHJpY2t5
IHBhcnQ6IHlvdSBuZWVkIHRvIHJlZ2lzdGVyIGFsbCB0ZXN0IHBhdHRlcm5zIHVzaW5nIHRoZQor
YFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QYCBtYWNybyBiZWZvcmUgeW91IGNhbiBpbnN0YW50
aWF0ZSB0aGVtLgorVGhlIGZpcnN0IGFyZ3VtZW50IG9mIHRoZSBtYWNybyBpcyB0aGUgdGVzdCBj
YXNlIG5hbWU7IHRoZSByZXN0IGFyZQordGhlIG5hbWVzIG9mIHRoZSB0ZXN0cyBpbiB0aGlzIHRl
c3QgY2FzZToKKworYGBgCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRG9lc0JsYWgsIEhhc1Byb3BlcnR5QSk7CitgYGAKKwor
RmluYWxseSwgeW91IGFyZSBmcmVlIHRvIGluc3RhbnRpYXRlIHRoZSBwYXR0ZXJuIHdpdGggdGhl
IHR5cGVzIHlvdQord2FudC4gIElmIHlvdSBwdXQgdGhlIGFib3ZlIGNvZGUgaW4gYSBoZWFkZXIg
ZmlsZSwgeW91IGNhbiBgI2luY2x1ZGVgCitpdCBpbiBtdWx0aXBsZSBDKysgc291cmNlIGZpbGVz
IGFuZCBpbnN0YW50aWF0ZSBpdCBtdWx0aXBsZSB0aW1lcy4KKworYGBgCit0eXBlZGVmIDo6dGVz
dGluZzo6VHlwZXM8Y2hhciwgaW50LCB1bnNpZ25lZCBpbnQ+IE15VHlwZXM7CitJTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcyk7CitgYGAKKworVG8gZGlz
dGluZ3Vpc2ggZGlmZmVyZW50IGluc3RhbmNlcyBvZiB0aGUgcGF0dGVybiwgdGhlIGZpcnN0IGFy
Z3VtZW50Cit0byB0aGUgYElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QYCBtYWNybyBpcyBh
IHByZWZpeCB0aGF0IHdpbGwgYmUKK2FkZGVkIHRvIHRoZSBhY3R1YWwgdGVzdCBjYXNlIG5hbWUu
ICBSZW1lbWJlciB0byBwaWNrIHVuaXF1ZSBwcmVmaXhlcworZm9yIGRpZmZlcmVudCBpbnN0YW5j
ZXMuCisKK0luIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhlIHR5cGUgbGlzdCBjb250YWlucyBv
bmx5IG9uZSB0eXBlLCB5b3UKK2NhbiB3cml0ZSB0aGF0IHR5cGUgZGlyZWN0bHkgd2l0aG91dCBg
Ojp0ZXN0aW5nOjpUeXBlczwuLi4+YCwgbGlrZSB0aGlzOgorCitgYGAKK0lOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBpbnQpOworYGBgCisKK1lvdSBjYW4gc2VlIGBz
YW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2NgIGZvciBhIGNvbXBsZXRlIGV4YW1wbGUuCisKK19B
dmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUp
LCBNYWM7CitzaW5jZSB2ZXJzaW9uIDEuMS4wLgorCisjIFRlc3RpbmcgUHJpdmF0ZSBDb2RlICMK
KworSWYgeW91IGNoYW5nZSB5b3VyIHNvZnR3YXJlJ3MgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24s
IHlvdXIgdGVzdHMgc2hvdWxkIG5vdAorYnJlYWsgYXMgbG9uZyBhcyB0aGUgY2hhbmdlIGlzIG5v
dCBvYnNlcnZhYmxlIGJ5IHVzZXJzLiBUaGVyZWZvcmUsIHBlciB0aGUKK19ibGFjay1ib3ggdGVz
dGluZyBwcmluY2lwbGVfLCBtb3N0IG9mIHRoZSB0aW1lIHlvdSBzaG91bGQgdGVzdCB5b3VyIGNv
ZGUKK3Rocm91Z2ggaXRzIHB1YmxpYyBpbnRlcmZhY2VzLgorCitJZiB5b3Ugc3RpbGwgZmluZCB5
b3Vyc2VsZiBuZWVkaW5nIHRvIHRlc3QgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gY29kZSwKK2Nv
bnNpZGVyIGlmIHRoZXJlJ3MgYSBiZXR0ZXIgZGVzaWduIHRoYXQgd291bGRuJ3QgcmVxdWlyZSB5
b3UgdG8gZG8gc28uIElmIHlvdQorYWJzb2x1dGVseSBoYXZlIHRvIHRlc3Qgbm9uLXB1YmxpYyBp
bnRlcmZhY2UgY29kZSB0aG91Z2gsIHlvdSBjYW4uIFRoZXJlIGFyZQordHdvIGNhc2VzIHRvIGNv
bnNpZGVyOgorCisgICogU3RhdGljIGZ1bmN0aW9ucyAoX25vdF8gdGhlIHNhbWUgYXMgc3RhdGlj
IG1lbWJlciBmdW5jdGlvbnMhKSBvciB1bm5hbWVkIG5hbWVzcGFjZXMsIGFuZAorICAqIFByaXZh
dGUgb3IgcHJvdGVjdGVkIGNsYXNzIG1lbWJlcnMKKworIyMgU3RhdGljIEZ1bmN0aW9ucyAjIwor
CitCb3RoIHN0YXRpYyBmdW5jdGlvbnMgYW5kIGRlZmluaXRpb25zL2RlY2xhcmF0aW9ucyBpbiBh
biB1bm5hbWVkIG5hbWVzcGFjZSBhcmUKK29ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIHNhbWUgdHJh
bnNsYXRpb24gdW5pdC4gVG8gdGVzdCB0aGVtLCB5b3UgY2FuIGAjaW5jbHVkZWAKK3RoZSBlbnRp
cmUgYC5jY2AgZmlsZSBiZWluZyB0ZXN0ZWQgaW4geW91ciBgKl90ZXN0LmNjYCBmaWxlLiAoYCNp
bmNsdWRlYGluZyBgLmNjYAorZmlsZXMgaXMgbm90IGEgZ29vZCB3YXkgdG8gcmV1c2UgY29kZSAt
IHlvdSBzaG91bGQgbm90IGRvIHRoaXMgaW4gcHJvZHVjdGlvbgorY29kZSEpCisKK0hvd2V2ZXIs
IGEgYmV0dGVyIGFwcHJvYWNoIGlzIHRvIG1vdmUgdGhlIHByaXZhdGUgY29kZSBpbnRvIHRoZQor
YGZvbzo6aW50ZXJuYWxgIG5hbWVzcGFjZSwgd2hlcmUgYGZvb2AgaXMgdGhlIG5hbWVzcGFjZSB5
b3VyIHByb2plY3Qgbm9ybWFsbHkKK3VzZXMsIGFuZCBwdXQgdGhlIHByaXZhdGUgZGVjbGFyYXRp
b25zIGluIGEgYCotaW50ZXJuYWwuaGAgZmlsZS4gWW91cgorcHJvZHVjdGlvbiBgLmNjYCBmaWxl
cyBhbmQgeW91ciB0ZXN0cyBhcmUgYWxsb3dlZCB0byBpbmNsdWRlIHRoaXMgaW50ZXJuYWwKK2hl
YWRlciwgYnV0IHlvdXIgY2xpZW50cyBhcmUgbm90LiBUaGlzIHdheSwgeW91IGNhbiBmdWxseSB0
ZXN0IHlvdXIgaW50ZXJuYWwKK2ltcGxlbWVudGF0aW9uIHdpdGhvdXQgbGVha2luZyBpdCB0byB5
b3VyIGNsaWVudHMuCisKKyMjIFByaXZhdGUgQ2xhc3MgTWVtYmVycyAjIworCitQcml2YXRlIGNs
YXNzIG1lbWJlcnMgYXJlIG9ubHkgYWNjZXNzaWJsZSBmcm9tIHdpdGhpbiB0aGUgY2xhc3Mgb3Ig
YnkgZnJpZW5kcy4KK1RvIGFjY2VzcyBhIGNsYXNzJyBwcml2YXRlIG1lbWJlcnMsIHlvdSBjYW4g
ZGVjbGFyZSB5b3VyIHRlc3QgZml4dHVyZSBhcyBhCitmcmllbmQgdG8gdGhlIGNsYXNzIGFuZCBk
ZWZpbmUgYWNjZXNzb3JzIGluIHlvdXIgZml4dHVyZS4gVGVzdHMgdXNpbmcgdGhlCitmaXh0dXJl
IGNhbiB0aGVuIGFjY2VzcyB0aGUgcHJpdmF0ZSBtZW1iZXJzIG9mIHlvdXIgcHJvZHVjdGlvbiBj
bGFzcyB2aWEgdGhlCithY2Nlc3NvcnMgaW4gdGhlIGZpeHR1cmUuIE5vdGUgdGhhdCBldmVuIHRo
b3VnaCB5b3VyIGZpeHR1cmUgaXMgYSBmcmllbmQgdG8KK3lvdXIgcHJvZHVjdGlvbiBjbGFzcywg
eW91ciB0ZXN0cyBhcmUgbm90IGF1dG9tYXRpY2FsbHkgZnJpZW5kcyB0byBpdCwgYXMgdGhleQor
YXJlIHRlY2huaWNhbGx5IGRlZmluZWQgaW4gc3ViLWNsYXNzZXMgb2YgdGhlIGZpeHR1cmUuCisK
K0Fub3RoZXIgd2F5IHRvIHRlc3QgcHJpdmF0ZSBtZW1iZXJzIGlzIHRvIHJlZmFjdG9yIHRoZW0g
aW50byBhbiBpbXBsZW1lbnRhdGlvbgorY2xhc3MsIHdoaWNoIGlzIHRoZW4gZGVjbGFyZWQgaW4g
YSBgKi1pbnRlcm5hbC5oYCBmaWxlLiBZb3VyIGNsaWVudHMgYXJlbid0CithbGxvd2VkIHRvIGlu
Y2x1ZGUgdGhpcyBoZWFkZXIgYnV0IHlvdXIgdGVzdHMgY2FuLiBTdWNoIGlzIGNhbGxlZCB0aGUg
UGltcGwKKyhQcml2YXRlIEltcGxlbWVudGF0aW9uKSBpZGlvbS4KKworT3IsIHlvdSBjYW4gZGVj
bGFyZSBhbiBpbmRpdmlkdWFsIHRlc3QgYXMgYSBmcmllbmQgb2YgeW91ciBjbGFzcyBieSBhZGRp
bmcgdGhpcworbGluZSBpbiB0aGUgY2xhc3MgYm9keToKKworYGBgCitGUklFTkRfVEVTVChUZXN0
Q2FzZU5hbWUsIFRlc3ROYW1lKTsKK2BgYAorCitGb3IgZXhhbXBsZSwKK2BgYAorLy8gZm9vLmgK
KyNpbmNsdWRlICJndGVzdC9ndGVzdF9wcm9kLmgiCisKKy8vIERlZmluZXMgRlJJRU5EX1RFU1Qu
CitjbGFzcyBGb28geworICAuLi4KKyBwcml2YXRlOgorICBGUklFTkRfVEVTVChGb29UZXN0LCBC
YXJSZXR1cm5zWmVyb09uTnVsbCk7CisgIGludCBCYXIodm9pZCogeCk7Cit9OworCisvLyBmb29f
dGVzdC5jYworLi4uCitURVNUKEZvb1Rlc3QsIEJhclJldHVybnNaZXJvT25OdWxsKSB7CisgIEZv
byBmb287CisgIEVYUEVDVF9FUSgwLCBmb28uQmFyKE5VTEwpKTsKKyAgLy8gVXNlcyBGb28ncyBw
cml2YXRlIG1lbWJlciBCYXIoKS4KK30KK2BgYAorCitQYXkgc3BlY2lhbCBhdHRlbnRpb24gd2hl
biB5b3VyIGNsYXNzIGlzIGRlZmluZWQgaW4gYSBuYW1lc3BhY2UsIGFzIHlvdSBzaG91bGQKK2Rl
ZmluZSB5b3VyIHRlc3QgZml4dHVyZXMgYW5kIHRlc3RzIGluIHRoZSBzYW1lIG5hbWVzcGFjZSBp
ZiB5b3Ugd2FudCB0aGVtIHRvCitiZSBmcmllbmRzIG9mIHlvdXIgY2xhc3MuIEZvciBleGFtcGxl
LCBpZiB0aGUgY29kZSB0byBiZSB0ZXN0ZWQgbG9va3MgbGlrZToKKworYGBgCituYW1lc3BhY2Ug
bXlfbmFtZXNwYWNlIHsKKworY2xhc3MgRm9vIHsKKyAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7Cisg
IEZSSUVORF9URVNUKEZvb1Rlc3QsIEJhcik7CisgIEZSSUVORF9URVNUKEZvb1Rlc3QsIEJheik7
CisgIC4uLgorICBkZWZpbml0aW9uIG9mIHRoZSBjbGFzcyBGb28KKyAgLi4uCit9OworCit9ICAv
LyBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlCitgYGAKKworWW91ciB0ZXN0IGNvZGUgc2hvdWxkIGJl
IHNvbWV0aGluZyBsaWtlOgorCitgYGAKK25hbWVzcGFjZSBteV9uYW1lc3BhY2UgeworY2xhc3Mg
Rm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLi4uCit9
OworCitURVNUX0YoRm9vVGVzdCwgQmFyKSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgQmF6KSB7
IC4uLiB9CisKK30gIC8vIG5hbWVzcGFjZSBteV9uYW1lc3BhY2UKK2BgYAorCisjIENhdGNoaW5n
IEZhaWx1cmVzICMKKworSWYgeW91IGFyZSBidWlsZGluZyBhIHRlc3RpbmcgdXRpbGl0eSBvbiB0
b3Agb2YgR29vZ2xlIFRlc3QsIHlvdSdsbAord2FudCB0byB0ZXN0IHlvdXIgdXRpbGl0eS4gIFdo
YXQgZnJhbWV3b3JrIHdvdWxkIHlvdSB1c2UgdG8gdGVzdCBpdD8KK0dvb2dsZSBUZXN0LCBvZiBj
b3Vyc2UuCisKK1RoZSBjaGFsbGVuZ2UgaXMgdG8gdmVyaWZ5IHRoYXQgeW91ciB0ZXN0aW5nIHV0
aWxpdHkgcmVwb3J0cyBmYWlsdXJlcworY29ycmVjdGx5LiAgSW4gZnJhbWV3b3JrcyB0aGF0IHJl
cG9ydCBhIGZhaWx1cmUgYnkgdGhyb3dpbmcgYW4KK2V4Y2VwdGlvbiwgeW91IGNvdWxkIGNhdGNo
IHRoZSBleGNlcHRpb24gYW5kIGFzc2VydCBvbiBpdC4gIEJ1dCBHb29nbGUKK1Rlc3QgZG9lc24n
dCB1c2UgZXhjZXB0aW9ucywgc28gaG93IGRvIHdlIHRlc3QgdGhhdCBhIHBpZWNlIG9mIGNvZGUK
K2dlbmVyYXRlcyBhbiBleHBlY3RlZCBmYWlsdXJlPworCitgImd0ZXN0L2d0ZXN0LXNwaS5oImAg
Y29udGFpbnMgc29tZSBjb25zdHJ1Y3RzIHRvIGRvIHRoaXMuICBBZnRlcgorYCNpbmNsdWRlYGlu
ZyB0aGlzIGhlYWRlciwgeW91IGNhbiB1c2UKKworfCBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoYF9z
dGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtgIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisKK3RvIGFzc2VydCB0aGF0IF9zdGF0ZW1lbnRfIGdl
bmVyYXRlcyBhIGZhdGFsIChlLmcuIGBBU1NFUlRfKmApIGZhaWx1cmUKK3dob3NlIG1lc3NhZ2Ug
Y29udGFpbnMgdGhlIGdpdmVuIF9zdWJzdHJpbmdfLCBvciB1c2UKKworfCBgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoYF9zdGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtgIHwKK3w6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisKK2lmIHlvdSBhcmUg
ZXhwZWN0aW5nIGEgbm9uLWZhdGFsIChlLmcuIGBFWFBFQ1RfKmApIGZhaWx1cmUuCisKK0ZvciB0
ZWNobmljYWwgcmVhc29ucywgdGhlcmUgYXJlIHNvbWUgY2F2ZWF0czoKKworICAxLiBZb3UgY2Fu
bm90IHN0cmVhbSBhIGZhaWx1cmUgbWVzc2FnZSB0byBlaXRoZXIgbWFjcm8uCisgIDEuIF9zdGF0
ZW1lbnRfIGluIGBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpYCBjYW5ub3QgcmVmZXJlbmNlIGxvY2Fs
IG5vbi1zdGF0aWMgdmFyaWFibGVzIG9yIG5vbi1zdGF0aWMgbWVtYmVycyBvZiBgdGhpc2Agb2Jq
ZWN0LgorICAxLiBfc3RhdGVtZW50XyBpbiBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKWAgY2Fubm90
IHJldHVybiBhIHZhbHVlLgorCitfTm90ZTpfIEdvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHdpdGgg
dGhyZWFkcyBpbiBtaW5kLiAgT25jZSB0aGUKK3N5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGlu
IGAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oImAgaGF2ZQorYmVlbiBpbXBsZW1lbnRlZCwg
R29vZ2xlIFRlc3Qgd2lsbCBiZWNvbWUgdGhyZWFkLXNhZmUsIG1lYW5pbmcgdGhhdAoreW91IGNh
biB0aGVuIHVzZSBhc3NlcnRpb25zIGluIG11bHRpcGxlIHRocmVhZHMgY29uY3VycmVudGx5LiAg
QmVmb3JlCisKK3RoYXQsIGhvd2V2ZXIsIEdvb2dsZSBUZXN0IG9ubHkgc3VwcG9ydHMgc2luZ2xl
LXRocmVhZGVkIHVzYWdlLiAgT25jZQordGhyZWFkLXNhZmUsIGBFWFBFQ1RfRkFUQUxfRkFJTFVS
RSgpYCBhbmQgYEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKClgCit3aWxsIGNhcHR1cmUgZmFpbHVy
ZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkIG9ubHkuIElmIF9zdGF0ZW1lbnRfCitjcmVhdGVzIG5l
dyB0aHJlYWRzLCBmYWlsdXJlcyBpbiB0aGVzZSB0aHJlYWRzIHdpbGwgYmUgaWdub3JlZC4gIElm
Cit5b3Ugd2FudCB0byBjYXB0dXJlIGZhaWx1cmVzIGZyb20gYWxsIHRocmVhZHMgaW5zdGVhZCwg
eW91IHNob3VsZCB1c2UKK3RoZSBmb2xsb3dpbmcgbWFjcm9zOgorCit8IGBFWFBFQ1RfRkFUQUxf
RkFJTFVSRV9PTl9BTExfVEhSRUFEUyhgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAorfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXwKK3wgYEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKGBfc3Rh
dGVtZW50LCBzdWJzdHJpbmdfYCk7YCB8CisKKyMgR2V0dGluZyB0aGUgQ3VycmVudCBUZXN0J3Mg
TmFtZSAjCisKK1NvbWV0aW1lcyBhIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGtub3cgdGhlIG5hbWUg
b2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRlc3QuCitGb3IgZXhhbXBsZSwgeW91IG1heSBiZSB1
c2luZyB0aGUgYFNldFVwKClgIG1ldGhvZCBvZiB5b3VyIHRlc3QgZml4dHVyZSB0byBzZXQKK3Ro
ZSBnb2xkZW4gZmlsZSBuYW1lIGJhc2VkIG9uIHdoaWNoIHRlc3QgaXMgcnVubmluZy4gVGhlIGA6
OnRlc3Rpbmc6OlRlc3RJbmZvYAorY2xhc3MgaGFzIHRoaXMgaW5mb3JtYXRpb246CisKK2BgYAor
bmFtZXNwYWNlIHRlc3RpbmcgeworCitjbGFzcyBUZXN0SW5mbyB7CisgcHVibGljOgorICAvLyBS
ZXR1cm5zIHRoZSB0ZXN0IGNhc2UgbmFtZSBhbmQgdGhlIHRlc3QgbmFtZSwgcmVzcGVjdGl2ZWx5
LgorICAvLworICAvLyBEbyBOT1QgZGVsZXRlIG9yIGZyZWUgdGhlIHJldHVybiB2YWx1ZSAtIGl0
J3MgbWFuYWdlZCBieSB0aGUKKyAgLy8gVGVzdEluZm8gY2xhc3MuCisgIGNvbnN0IGNoYXIqIHRl
c3RfY2FzZV9uYW1lKCkgY29uc3Q7CisgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKK307CisK
K30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCitgYGAKKworCis+IFRvIG9idGFpbiBhIGBUZXN0SW5m
b2Agb2JqZWN0IGZvciB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdCwgY2FsbAorYGN1cnJlbnRf
dGVzdF9pbmZvKClgIG9uIHRoZSBgVW5pdFRlc3RgIHNpbmdsZXRvbiBvYmplY3Q6CisKK2BgYAor
Ly8gR2V0cyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdC4KKy8v
IERvIE5PVCBkZWxldGUgdGhlIHJldHVybmVkIG9iamVjdCAtIGl0J3MgbWFuYWdlZCBieSB0aGUg
VW5pdFRlc3QgY2xhc3MuCitjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2lu
Zm8gPQorICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3Rf
aW5mbygpOworcHJpbnRmKCJXZSBhcmUgaW4gdGVzdCAlcyBvZiB0ZXN0IGNhc2UgJXMuXG4iLAor
ICAgICAgIHRlc3RfaW5mby0+bmFtZSgpLCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOwor
YGBgCisKK2BjdXJyZW50X3Rlc3RfaW5mbygpYCByZXR1cm5zIGEgbnVsbCBwb2ludGVyIGlmIG5v
IHRlc3QgaXMgcnVubmluZy4gSW4KK3BhcnRpY3VsYXIsIHlvdSBjYW5ub3QgZmluZCB0aGUgdGVz
dCBjYXNlIG5hbWUgaW4gYFRlc3RDYXNlU2V0VXAoKWAsCitgVGVzdENhc2VUZWFyRG93bigpYCAo
d2hlcmUgeW91IGtub3cgdGhlIHRlc3QgY2FzZSBuYW1lIGltcGxpY2l0bHkpLCBvcgorZnVuY3Rp
b25zIGNhbGxlZCBmcm9tIHRoZW0uCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywg
TWFjLgorCisjIEV4dGVuZGluZyBHb29nbGUgVGVzdCBieSBIYW5kbGluZyBUZXN0IEV2ZW50cyAj
CisKK0dvb2dsZSBUZXN0IHByb3ZpZGVzIGFuIDxiPmV2ZW50IGxpc3RlbmVyIEFQSTwvYj4gdG8g
bGV0IHlvdSByZWNlaXZlCitub3RpZmljYXRpb25zIGFib3V0IHRoZSBwcm9ncmVzcyBvZiBhIHRl
c3QgcHJvZ3JhbSBhbmQgdGVzdAorZmFpbHVyZXMuIFRoZSBldmVudHMgeW91IGNhbiBsaXN0ZW4g
dG8gaW5jbHVkZSB0aGUgc3RhcnQgYW5kIGVuZCBvZgordGhlIHRlc3QgcHJvZ3JhbSwgYSB0ZXN0
IGNhc2UsIG9yIGEgdGVzdCBtZXRob2QsIGFtb25nIG90aGVycy4gWW91IG1heQordXNlIHRoaXMg
QVBJIHRvIGF1Z21lbnQgb3IgcmVwbGFjZSB0aGUgc3RhbmRhcmQgY29uc29sZSBvdXRwdXQsCity
ZXBsYWNlIHRoZSBYTUwgb3V0cHV0LCBvciBwcm92aWRlIGEgY29tcGxldGVseSBkaWZmZXJlbnQg
Zm9ybSBvZgorb3V0cHV0LCBzdWNoIGFzIGEgR1VJIG9yIGEgZGF0YWJhc2UuIFlvdSBjYW4gYWxz
byB1c2UgdGVzdCBldmVudHMgYXMKK2NoZWNrcG9pbnRzIHRvIGltcGxlbWVudCBhIHJlc291cmNl
IGxlYWsgY2hlY2tlciwgZm9yIGV4YW1wbGUuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2lu
ZG93cywgTWFjOyBzaW5jZSB2MS40LjAuCisKKyMjIERlZmluaW5nIEV2ZW50IExpc3RlbmVycyAj
IworCitUbyBkZWZpbmUgYSBldmVudCBsaXN0ZW5lciwgeW91IHN1YmNsYXNzIGVpdGhlcgorW3Rl
c3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDg1NSkK
K29yIFt0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyXSguLi9pbmNsdWRlL2d0ZXN0L2d0
ZXN0LmgjTDkwNSkuCitUaGUgZm9ybWVyIGlzIGFuIChhYnN0cmFjdCkgaW50ZXJmYWNlLCB3aGVy
ZSA8aT5lYWNoIHB1cmUgdmlydHVhbCBtZXRob2Q8YnI+CitjYW4gYmUgb3ZlcnJpZGRlbiB0byBo
YW5kbGUgYSB0ZXN0IGV2ZW50PC9pPiAoRm9yIGV4YW1wbGUsIHdoZW4gYSB0ZXN0CitzdGFydHMs
IHRoZSBgT25UZXN0U3RhcnQoKWAgbWV0aG9kIHdpbGwgYmUgY2FsbGVkLikuIFRoZSBsYXR0ZXIg
cHJvdmlkZXMKK2FuIGVtcHR5IGltcGxlbWVudGF0aW9uIG9mIGFsbCBtZXRob2RzIGluIHRoZSBp
bnRlcmZhY2UsIHN1Y2ggdGhhdCBhCitzdWJjbGFzcyBvbmx5IG5lZWRzIHRvIG92ZXJyaWRlIHRo
ZSBtZXRob2RzIGl0IGNhcmVzIGFib3V0LgorCitXaGVuIGFuIGV2ZW50IGlzIGZpcmVkLCBpdHMg
Y29udGV4dCBpcyBwYXNzZWQgdG8gdGhlIGhhbmRsZXIgZnVuY3Rpb24KK2FzIGFuIGFyZ3VtZW50
LiBUaGUgZm9sbG93aW5nIGFyZ3VtZW50IHR5cGVzIGFyZSB1c2VkOgorICAqIFtVbml0VGVzdF0o
Li4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0wxMDA3KSByZWZsZWN0cyB0aGUgc3RhdGUgb2YgdGhl
IGVudGlyZSB0ZXN0IHByb2dyYW0sCisgICogW1Rlc3RDYXNlXSguLi9pbmNsdWRlL2d0ZXN0L2d0
ZXN0LmgjTDY4OSkgaGFzIGluZm9ybWF0aW9uIGFib3V0IGEgdGVzdCBjYXNlLCB3aGljaCBjYW4g
Y29udGFpbiBvbmUgb3IgbW9yZSB0ZXN0cywKKyAgKiBbVGVzdEluZm9dKC4uL2luY2x1ZGUvZ3Rl
c3QvZ3Rlc3QuaCNMNTk5KSBjb250YWlucyB0aGUgc3RhdGUgb2YgYSB0ZXN0LCBhbmQKKyAgKiBb
VGVzdFBhcnRSZXN1bHRdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgjTDQyKSBy
ZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYSB0ZXN0IGFzc2VydGlvbi4KKworQW4gZXZlbnQgaGFu
ZGxlciBmdW5jdGlvbiBjYW4gZXhhbWluZSB0aGUgYXJndW1lbnQgaXQgcmVjZWl2ZXMgdG8gZmlu
ZAorb3V0IGludGVyZXN0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBldmVudCBhbmQgdGhlIHRl
c3QgcHJvZ3JhbSdzCitzdGF0ZS4gIEhlcmUncyBhbiBleGFtcGxlOgorCitgYGAKKyAgY2xhc3Mg
TWluaW1hbGlzdFByaW50ZXIgOiBwdWJsaWMgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3Rl
bmVyIHsKKyAgICAvLyBDYWxsZWQgYmVmb3JlIGEgdGVzdCBzdGFydHMuCisgICAgdmlydHVhbCB2
b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8mIHRlc3RfaW5mbykgewor
ICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBzdGFydGluZy5cbiIsCisgICAgICAgICAgICAg
dGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOworICAgIH0KKwor
ICAgIC8vIENhbGxlZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRUVEKCkgaW52
b2NhdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJlc3VsdCgKKyAgICAgICAgY29u
c3QgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgeworICAgICAg
cHJpbnRmKCIlcyBpbiAlczolZFxuJXNcbiIsCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3Vs
dC5mYWlsZWQoKSA/ICIqKiogRmFpbHVyZSIgOiAiU3VjY2VzcyIsCisgICAgICAgICAgICAgdGVz
dF9wYXJ0X3Jlc3VsdC5maWxlX25hbWUoKSwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0
LmxpbmVfbnVtYmVyKCksCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5zdW1tYXJ5KCkp
OworICAgIH0KKworICAgIC8vIENhbGxlZCBhZnRlciBhIHRlc3QgZW5kcy4KKyAgICB2aXJ0dWFs
IHZvaWQgT25UZXN0RW5kKGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8mIHRlc3RfaW5mbykgewor
ICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBlbmRpbmcuXG4iLAorICAgICAgICAgICAgIHRl
c3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgICB9CisgIH07
CitgYGAKKworIyMgVXNpbmcgRXZlbnQgTGlzdGVuZXJzICMjCisKK1RvIHVzZSB0aGUgZXZlbnQg
bGlzdGVuZXIgeW91IGhhdmUgZGVmaW5lZCwgYWRkIGFuIGluc3RhbmNlIG9mIGl0IHRvCit0aGUg
R29vZ2xlIFRlc3QgZXZlbnQgbGlzdGVuZXIgbGlzdCAocmVwcmVzZW50ZWQgYnkgY2xhc3MKK1tU
ZXN0RXZlbnRMaXN0ZW5lcnNdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMOTI5KQorLSBub3Rl
IHRoZSAicyIgYXQgdGhlIGVuZCBvZiB0aGUgbmFtZSkgaW4geW91cgorYG1haW4oKWAgZnVuY3Rp
b24sIGJlZm9yZSBjYWxsaW5nIGBSVU5fQUxMX1RFU1RTKClgOgorYGBgCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywg
YXJndik7CisgIC8vIEdldHMgaG9sZCBvZiB0aGUgZXZlbnQgbGlzdGVuZXIgbGlzdC4KKyAgOjp0
ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnMmIGxpc3RlbmVycyA9CisgICAgICA6OnRlc3Rpbmc6
OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKTsKKyAgLy8gQWRkcyBhIGxpc3Rl
bmVyIHRvIHRoZSBlbmQuICBHb29nbGUgVGVzdCB0YWtlcyB0aGUgb3duZXJzaGlwLgorICBsaXN0
ZW5lcnMuQXBwZW5kKG5ldyBNaW5pbWFsaXN0UHJpbnRlcik7CisgIHJldHVybiBSVU5fQUxMX1RF
U1RTKCk7Cit9CitgYGAKKworVGhlcmUncyBvbmx5IG9uZSBwcm9ibGVtOiB0aGUgZGVmYXVsdCB0
ZXN0IHJlc3VsdCBwcmludGVyIGlzIHN0aWxsIGluCitlZmZlY3QsIHNvIGl0cyBvdXRwdXQgd2ls
bCBtaW5nbGUgd2l0aCB0aGUgb3V0cHV0IGZyb20geW91ciBtaW5pbWFsaXN0CitwcmludGVyLiBU
byBzdXBwcmVzcyB0aGUgZGVmYXVsdCBwcmludGVyLCBqdXN0IHJlbGVhc2UgaXQgZnJvbSB0aGUK
K2V2ZW50IGxpc3RlbmVyIGxpc3QgYW5kIGRlbGV0ZSBpdC4gWW91IGNhbiBkbyBzbyBieSBhZGRp
bmcgb25lIGxpbmU6CitgYGAKKyAgLi4uCisgIGRlbGV0ZSBsaXN0ZW5lcnMuUmVsZWFzZShsaXN0
ZW5lcnMuZGVmYXVsdF9yZXN1bHRfcHJpbnRlcigpKTsKKyAgbGlzdGVuZXJzLkFwcGVuZChuZXcg
TWluaW1hbGlzdFByaW50ZXIpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworYGBgCisKK05v
dywgc2l0IGJhY2sgYW5kIGVuam95IGEgY29tcGxldGVseSBkaWZmZXJlbnQgb3V0cHV0IGZyb20g
eW91cgordGVzdHMuIEZvciBtb3JlIGRldGFpbHMsIHlvdSBjYW4gcmVhZCB0aGlzCitbc2FtcGxl
XSguLi9zYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MpLgorCitZb3UgbWF5IGFwcGVuZCBtb3Jl
IHRoYW4gb25lIGxpc3RlbmVyIHRvIHRoZSBsaXN0LiBXaGVuIGFuIGBPbipTdGFydCgpYAorb3Ig
YE9uVGVzdFBhcnRSZXN1bHQoKWAgZXZlbnQgaXMgZmlyZWQsIHRoZSBsaXN0ZW5lcnMgd2lsbCBy
ZWNlaXZlIGl0IGluCit0aGUgb3JkZXIgdGhleSBhcHBlYXIgaW4gdGhlIGxpc3QgKHNpbmNlIG5l
dyBsaXN0ZW5lcnMgYXJlIGFkZGVkIHRvCit0aGUgZW5kIG9mIHRoZSBsaXN0LCB0aGUgZGVmYXVs
dCB0ZXh0IHByaW50ZXIgYW5kIHRoZSBkZWZhdWx0IFhNTAorZ2VuZXJhdG9yIHdpbGwgcmVjZWl2
ZSB0aGUgZXZlbnQgZmlyc3QpLiBBbiBgT24qRW5kKClgIGV2ZW50IHdpbGwgYmUKK3JlY2VpdmVk
IGJ5IHRoZSBsaXN0ZW5lcnMgaW4gdGhlIF9yZXZlcnNlXyBvcmRlci4gVGhpcyBhbGxvd3Mgb3V0
cHV0IGJ5CitsaXN0ZW5lcnMgYWRkZWQgbGF0ZXIgdG8gYmUgZnJhbWVkIGJ5IG91dHB1dCBmcm9t
IGxpc3RlbmVycyBhZGRlZAorZWFybGllci4KKworIyMgR2VuZXJhdGluZyBGYWlsdXJlcyBpbiBM
aXN0ZW5lcnMgIyMKKworWW91IG1heSB1c2UgZmFpbHVyZS1yYWlzaW5nIG1hY3JvcyAoYEVYUEVD
VF8qKClgLCBgQVNTRVJUXyooKWAsCitgRkFJTCgpYCwgZXRjKSB3aGVuIHByb2Nlc3NpbmcgYW4g
ZXZlbnQuIFRoZXJlIGFyZSBzb21lIHJlc3RyaWN0aW9uczoKKworICAxLiBZb3UgY2Fubm90IGdl
bmVyYXRlIGFueSBmYWlsdXJlIGluIGBPblRlc3RQYXJ0UmVzdWx0KClgIChvdGhlcndpc2UgaXQg
d2lsbCBjYXVzZSBgT25UZXN0UGFydFJlc3VsdCgpYCB0byBiZSBjYWxsZWQgcmVjdXJzaXZlbHkp
LgorICAxLiBBIGxpc3RlbmVyIHRoYXQgaGFuZGxlcyBgT25UZXN0UGFydFJlc3VsdCgpYCBpcyBu
b3QgYWxsb3dlZCB0byBnZW5lcmF0ZSBhbnkgZmFpbHVyZS4KKworV2hlbiB5b3UgYWRkIGxpc3Rl
bmVycyB0byB0aGUgbGlzdGVuZXIgbGlzdCwgeW91IHNob3VsZCBwdXQgbGlzdGVuZXJzCit0aGF0
IGhhbmRsZSBgT25UZXN0UGFydFJlc3VsdCgpYCBfYmVmb3JlXyBsaXN0ZW5lcnMgdGhhdCBjYW4g
Z2VuZXJhdGUKK2ZhaWx1cmVzLiBUaGlzIGVuc3VyZXMgdGhhdCBmYWlsdXJlcyBnZW5lcmF0ZWQg
YnkgdGhlIGxhdHRlciBhcmUKK2F0dHJpYnV0ZWQgdG8gdGhlIHJpZ2h0IHRlc3QgYnkgdGhlIGZv
cm1lci4KKworV2UgaGF2ZSBhIHNhbXBsZSBvZiBmYWlsdXJlLXJhaXNpbmcgbGlzdGVuZXIKK1to
ZXJlXSguLi9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjKS4KKworIyBSdW5uaW5nIFRlc3Qg
UHJvZ3JhbXM6IEFkdmFuY2VkIE9wdGlvbnMgIworCitHb29nbGUgVGVzdCB0ZXN0IHByb2dyYW1z
IGFyZSBvcmRpbmFyeSBleGVjdXRhYmxlcy4gT25jZSBidWlsdCwgeW91IGNhbiBydW4KK3RoZW0g
ZGlyZWN0bHkgYW5kIGFmZmVjdCB0aGVpciBiZWhhdmlvciB2aWEgdGhlIGZvbGxvd2luZyBlbnZp
cm9ubWVudCB2YXJpYWJsZXMKK2FuZC9vciBjb21tYW5kIGxpbmUgZmxhZ3MuIEZvciB0aGUgZmxh
Z3MgdG8gd29yaywgeW91ciBwcm9ncmFtcyBtdXN0IGNhbGwKK2A6OnRlc3Rpbmc6OkluaXRHb29n
bGVUZXN0KClgIGJlZm9yZSBjYWxsaW5nIGBSVU5fQUxMX1RFU1RTKClgLgorCitUbyBzZWUgYSBs
aXN0IG9mIHN1cHBvcnRlZCBmbGFncyBhbmQgdGhlaXIgdXNhZ2UsIHBsZWFzZSBydW4geW91ciB0
ZXN0Citwcm9ncmFtIHdpdGggdGhlIGAtLWhlbHBgIGZsYWcuICBZb3UgY2FuIGFsc28gdXNlIGAt
aGAsIGAtP2AsIG9yIGAvP2AKK2ZvciBzaG9ydC4gIFRoaXMgZmVhdHVyZSBpcyBhZGRlZCBpbiB2
ZXJzaW9uIDEuMy4wLgorCitJZiBhbiBvcHRpb24gaXMgc3BlY2lmaWVkIGJvdGggYnkgYW4gZW52
aXJvbm1lbnQgdmFyaWFibGUgYW5kIGJ5IGEKK2ZsYWcsIHRoZSBsYXR0ZXIgdGFrZXMgcHJlY2Vk
ZW5jZS4gIE1vc3Qgb2YgdGhlIG9wdGlvbnMgY2FuIGFsc28gYmUKK3NldC9yZWFkIGluIGNvZGU6
IHRvIGFjY2VzcyB0aGUgdmFsdWUgb2YgY29tbWFuZCBsaW5lIGZsYWcKK2AtLWd0ZXN0X2Zvb2As
IHdyaXRlIGA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcoZm9vKWAuICBBIGNvbW1vbiBwYXR0ZXJuIGlz
Cit0byBzZXQgdGhlIHZhbHVlIG9mIGEgZmxhZyBiZWZvcmUgY2FsbGluZyBgOjp0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdCgpYAordG8gY2hhbmdlIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBmbGFn
OgorYGBgCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgLy8gRGlzYWJsZXMg
ZWxhcHNlZCB0aW1lIGJ5IGRlZmF1bHQuCisgIDo6dGVzdGluZzo6R1RFU1RfRkxBRyhwcmludF90
aW1lKSA9IGZhbHNlOworCisgIC8vIFRoaXMgYWxsb3dzIHRoZSB1c2VyIHRvIG92ZXJyaWRlIHRo
ZSBmbGFnIG9uIHRoZSBjb21tYW5kIGxpbmUuCisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Qo
JmFyZ2MsIGFyZ3YpOworCisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CitgYGAKKworIyMg
U2VsZWN0aW5nIFRlc3RzICMjCisKK1RoaXMgc2VjdGlvbiBzaG93cyB2YXJpb3VzIG9wdGlvbnMg
Zm9yIGNob29zaW5nIHdoaWNoIHRlc3RzIHRvIHJ1bi4KKworIyMjIExpc3RpbmcgVGVzdCBOYW1l
cyAjIyMKKworU29tZXRpbWVzIGl0IGlzIG5lY2Vzc2FyeSB0byBsaXN0IHRoZSBhdmFpbGFibGUg
dGVzdHMgaW4gYSBwcm9ncmFtIGJlZm9yZQorcnVubmluZyB0aGVtIHNvIHRoYXQgYSBmaWx0ZXIg
bWF5IGJlIGFwcGxpZWQgaWYgbmVlZGVkLiBJbmNsdWRpbmcgdGhlIGZsYWcKK2AtLWd0ZXN0X2xp
c3RfdGVzdHNgIG92ZXJyaWRlcyBhbGwgb3RoZXIgZmxhZ3MgYW5kIGxpc3RzIHRlc3RzIGluIHRo
ZSBmb2xsb3dpbmcKK2Zvcm1hdDoKK2BgYAorVGVzdENhc2UxLgorICBUZXN0TmFtZTEKKyAgVGVz
dE5hbWUyCitUZXN0Q2FzZTIuCisgIFRlc3ROYW1lCitgYGAKKworTm9uZSBvZiB0aGUgdGVzdHMg
bGlzdGVkIGFyZSBhY3R1YWxseSBydW4gaWYgdGhlIGZsYWcgaXMgcHJvdmlkZWQuIFRoZXJlIGlz
IG5vCitjb3JyZXNwb25kaW5nIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciB0aGlzIGZsYWcuCisK
K19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgUnVubmluZyBhIFN1
YnNldCBvZiB0aGUgVGVzdHMgIyMjCisKK0J5IGRlZmF1bHQsIGEgR29vZ2xlIFRlc3QgcHJvZ3Jh
bSBydW5zIGFsbCB0ZXN0cyB0aGUgdXNlciBoYXMgZGVmaW5lZC4KK1NvbWV0aW1lcywgeW91IHdh
bnQgdG8gcnVuIG9ubHkgYSBzdWJzZXQgb2YgdGhlIHRlc3RzIChlLmcuIGZvciBkZWJ1Z2dpbmcg
b3IKK3F1aWNrbHkgdmVyaWZ5aW5nIGEgY2hhbmdlKS4gSWYgeW91IHNldCB0aGUgYEdURVNUX0ZJ
TFRFUmAgZW52aXJvbm1lbnQgdmFyaWFibGUKK29yIHRoZSBgLS1ndGVzdF9maWx0ZXJgIGZsYWcg
dG8gYSBmaWx0ZXIgc3RyaW5nLCBHb29nbGUgVGVzdCB3aWxsIG9ubHkgcnVuIHRoZQordGVzdHMg
d2hvc2UgZnVsbCBuYW1lcyAoaW4gdGhlIGZvcm0gb2YgYFRlc3RDYXNlTmFtZS5UZXN0TmFtZWAp
IG1hdGNoIHRoZQorZmlsdGVyLgorCitUaGUgZm9ybWF0IG9mIGEgZmlsdGVyIGlzIGEgJ2A6YCct
c2VwYXJhdGVkIGxpc3Qgb2Ygd2lsZGNhcmQgcGF0dGVybnMgKGNhbGxlZAordGhlIHBvc2l0aXZl
IHBhdHRlcm5zKSBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgJ2AtYCcgYW5kIGFub3RoZXIKKydg
OmAnLXNlcGFyYXRlZCBwYXR0ZXJuIGxpc3QgKGNhbGxlZCB0aGUgbmVnYXRpdmUgcGF0dGVybnMp
LiBBIHRlc3QgbWF0Y2hlcyB0aGUKK2ZpbHRlciBpZiBhbmQgb25seSBpZiBpdCBtYXRjaGVzIGFu
eSBvZiB0aGUgcG9zaXRpdmUgcGF0dGVybnMgYnV0IGRvZXMgbm90CittYXRjaCBhbnkgb2YgdGhl
IG5lZ2F0aXZlIHBhdHRlcm5zLgorCitBIHBhdHRlcm4gbWF5IGNvbnRhaW4gYCcqJ2AgKG1hdGNo
ZXMgYW55IHN0cmluZykgb3IgYCc/J2AgKG1hdGNoZXMgYW55IHNpbmdsZQorY2hhcmFjdGVyKS4g
Rm9yIGNvbnZlbmllbmNlLCB0aGUgZmlsdGVyIGAnKi1OZWdhdGl2ZVBhdHRlcm5zJ2AgY2FuIGJl
IGFsc28KK3dyaXR0ZW4gYXMgYCctTmVnYXRpdmVQYXR0ZXJucydgLgorCitGb3IgZXhhbXBsZToK
KworICAqIGAuL2Zvb190ZXN0YCBIYXMgbm8gZmxhZywgYW5kIHRodXMgcnVucyBhbGwgaXRzIHRl
c3RzLgorICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPSpgIEFsc28gcnVucyBldmVyeXRo
aW5nLCBkdWUgdG8gdGhlIHNpbmdsZSBtYXRjaC1ldmVyeXRoaW5nIGAqYCB2YWx1ZS4KKyAgKiBg
Li9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj1Gb29UZXN0LipgIFJ1bnMgZXZlcnl0aGluZyBpbiB0
ZXN0IGNhc2UgYEZvb1Rlc3RgLgorICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPSpOdWxs
KjoqQ29uc3RydWN0b3IqYCBSdW5zIGFueSB0ZXN0IHdob3NlIGZ1bGwgbmFtZSBjb250YWlucyBl
aXRoZXIgYCJOdWxsImAgb3IgYCJDb25zdHJ1Y3RvciJgLgorICAqIGAuL2Zvb190ZXN0IC0tZ3Rl
c3RfZmlsdGVyPS0qRGVhdGhUZXN0LipgIFJ1bnMgYWxsIG5vbi1kZWF0aCB0ZXN0cy4KKyAgKiBg
Li9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj1Gb29UZXN0LiotRm9vVGVzdC5CYXJgIFJ1bnMgZXZl
cnl0aGluZyBpbiB0ZXN0IGNhc2UgYEZvb1Rlc3RgIGV4Y2VwdCBgRm9vVGVzdC5CYXJgLgorCitf
QXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIFRlbXBvcmFyaWx5IERp
c2FibGluZyBUZXN0cyAjIyMKKworSWYgeW91IGhhdmUgYSBicm9rZW4gdGVzdCB0aGF0IHlvdSBj
YW5ub3QgZml4IHJpZ2h0IGF3YXksIHlvdSBjYW4gYWRkIHRoZQorYERJU0FCTEVEX2AgcHJlZml4
IHRvIGl0cyBuYW1lLiBUaGlzIHdpbGwgZXhjbHVkZSBpdCBmcm9tIGV4ZWN1dGlvbi4gVGhpcyBp
cworYmV0dGVyIHRoYW4gY29tbWVudGluZyBvdXQgdGhlIGNvZGUgb3IgdXNpbmcgYCNpZiAwYCwg
YXMgZGlzYWJsZWQgdGVzdHMgYXJlCitzdGlsbCBjb21waWxlZCAoYW5kIHRodXMgd29uJ3Qgcm90
KS4KKworSWYgeW91IG5lZWQgdG8gZGlzYWJsZSBhbGwgdGVzdHMgaW4gYSB0ZXN0IGNhc2UsIHlv
dSBjYW4gZWl0aGVyIGFkZCBgRElTQUJMRURfYAordG8gdGhlIGZyb250IG9mIHRoZSBuYW1lIG9m
IGVhY2ggdGVzdCwgb3IgYWx0ZXJuYXRpdmVseSBhZGQgaXQgdG8gdGhlIGZyb250IG9mCit0aGUg
dGVzdCBjYXNlIG5hbWUuCisKK0ZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHRlc3RzIHdvbid0
IGJlIHJ1biBieSBHb29nbGUgVGVzdCwgZXZlbiB0aG91Z2ggdGhleQord2lsbCBzdGlsbCBiZSBj
b21waWxlZDoKKworYGBgCisvLyBUZXN0cyB0aGF0IEZvbyBkb2VzIEFiYy4KK1RFU1QoRm9vVGVz
dCwgRElTQUJMRURfRG9lc0FiYykgeyAuLi4gfQorCitjbGFzcyBESVNBQkxFRF9CYXJUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OworCisvLyBUZXN0cyB0aGF0IEJhciBkb2Vz
IFh5ei4KK1RFU1RfRihESVNBQkxFRF9CYXJUZXN0LCBEb2VzWHl6KSB7IC4uLiB9CitgYGAKKwor
X05vdGU6XyBUaGlzIGZlYXR1cmUgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgdGVtcG9yYXJ5IHBh
aW4tcmVsaWVmLiBZb3Ugc3RpbGwKK2hhdmUgdG8gZml4IHRoZSBkaXNhYmxlZCB0ZXN0cyBhdCBh
IGxhdGVyIGRhdGUuIEFzIGEgcmVtaW5kZXIsIEdvb2dsZSBUZXN0IHdpbGwKK3ByaW50IGEgYmFu
bmVyIHdhcm5pbmcgeW91IGlmIGEgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIGFueSBkaXNhYmxlZCB0
ZXN0cy4KKworX1RpcDpfIFlvdSBjYW4gZWFzaWx5IGNvdW50IHRoZSBudW1iZXIgb2YgZGlzYWJs
ZWQgdGVzdHMgeW91IGhhdmUKK3VzaW5nIGBncmVwYC4gVGhpcyBudW1iZXIgY2FuIGJlIHVzZWQg
YXMgYSBtZXRyaWMgZm9yIGltcHJvdmluZyB5b3VyCit0ZXN0IHF1YWxpdHkuCisKK19BdmFpbGFi
aWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgVGVtcG9yYXJpbHkgRW5hYmxpbmcg
RGlzYWJsZWQgVGVzdHMgIyMjCisKK1RvIGluY2x1ZGUgW2Rpc2FibGVkIHRlc3RzXSgjdGVtcG9y
YXJpbHktZGlzYWJsaW5nLXRlc3RzKSBpbiB0ZXN0CitleGVjdXRpb24sIGp1c3QgaW52b2tlIHRo
ZSB0ZXN0IHByb2dyYW0gd2l0aCB0aGUKK2AtLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3Rz
YCBmbGFnIG9yIHNldCB0aGUKK2BHVEVTVF9BTFNPX1JVTl9ESVNBQkxFRF9URVNUU2AgZW52aXJv
bm1lbnQgdmFyaWFibGUgdG8gYSB2YWx1ZSBvdGhlcgordGhhbiBgMGAuICBZb3UgY2FuIGNvbWJp
bmUgdGhpcyB3aXRoIHRoZQorWy0tZ3Rlc3RcLWZpbHRlcl0oI3J1bm5pbmctYS1zdWJzZXQtb2Yt
dGhlX3Rlc3RzKSBmbGFnIHRvIGZ1cnRoZXIgc2VsZWN0Cit3aGljaCBkaXNhYmxlZCB0ZXN0cyB0
byBydW4uCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJz
aW9uIDEuMy4wLgorCisjIyBSZXBlYXRpbmcgdGhlIFRlc3RzICMjCisKK09uY2UgaW4gYSB3aGls
ZSB5b3UnbGwgcnVuIGludG8gYSB0ZXN0IHdob3NlIHJlc3VsdCBpcyBoaXQtb3ItbWlzcy4gUGVy
aGFwcyBpdAord2lsbCBmYWlsIG9ubHkgMSUgb2YgdGhlIHRpbWUsIG1ha2luZyBpdCByYXRoZXIg
aGFyZCB0byByZXByb2R1Y2UgdGhlIGJ1ZyB1bmRlcgorYSBkZWJ1Z2dlci4gVGhpcyBjYW4gYmUg
YSBtYWpvciBzb3VyY2Ugb2YgZnJ1c3RyYXRpb24uCisKK1RoZSBgLS1ndGVzdF9yZXBlYXRgIGZs
YWcgYWxsb3dzIHlvdSB0byByZXBlYXQgYWxsIChvciBzZWxlY3RlZCkgdGVzdCBtZXRob2RzCitp
biBhIHByb2dyYW0gbWFueSB0aW1lcy4gSG9wZWZ1bGx5LCBhIGZsYWt5IHRlc3Qgd2lsbCBldmVu
dHVhbGx5IGZhaWwgYW5kIGdpdmUKK3lvdSBhIGNoYW5jZSB0byBkZWJ1Zy4gSGVyZSdzIGhvdyB0
byB1c2UgaXQ6CisKK3wgYCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMGAgfCBSZXBlYXQg
Zm9vXF90ZXN0IDEwMDAgdGltZXMgYW5kIGRvbid0IHN0b3AgYXQgZmFpbHVyZXMuIHwKK3w6LS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYCQgZm9vX3Rlc3QgLS1ndGVzdF9y
ZXBlYXQ9LTFgICAgfCBBIG5lZ2F0aXZlIGNvdW50IG1lYW5zIHJlcGVhdGluZyBmb3JldmVyLiAg
ICAgICAgICAgICAgIHwKK3wgYCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMCAtLWd0ZXN0
X2JyZWFrX29uX2ZhaWx1cmVgIHwgUmVwZWF0IGZvb1xfdGVzdCAxMDAwIHRpbWVzLCBzdG9wcGlu
ZyBhdCB0aGUgZmlyc3QgZmFpbHVyZS4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB3aGVuIHJ1
bm5pbmcgdW5kZXIgYSBkZWJ1Z2dlcjogd2hlbiB0aGUgdGVzdGZhaWxzLCBpdCB3aWxsIGRyb3Ag
aW50byB0aGUgZGVidWdnZXIgYW5kIHlvdSBjYW4gdGhlbiBpbnNwZWN0IHZhcmlhYmxlcyBhbmQg
c3RhY2tzLiB8Cit8IGAkIGZvb190ZXN0IC0tZ3Rlc3RfcmVwZWF0PTEwMDAgLS1ndGVzdF9maWx0
ZXI9Rm9vQmFyYCB8IFJlcGVhdCB0aGUgdGVzdHMgd2hvc2UgbmFtZSBtYXRjaGVzIHRoZSBmaWx0
ZXIgMTAwMCB0aW1lcy4gfAorCitJZiB5b3VyIHRlc3QgcHJvZ3JhbSBjb250YWlucyBnbG9iYWwg
c2V0LXVwL3RlYXItZG93biBjb2RlIHJlZ2lzdGVyZWQKK3VzaW5nIGBBZGRHbG9iYWxUZXN0RW52
aXJvbm1lbnQoKWAsIGl0IHdpbGwgYmUgcmVwZWF0ZWQgaW4gZWFjaAoraXRlcmF0aW9uIGFzIHdl
bGwsIGFzIHRoZSBmbGFraW5lc3MgbWF5IGJlIGluIGl0LiBZb3UgY2FuIGFsc28gc3BlY2lmeQor
dGhlIHJlcGVhdCBjb3VudCBieSBzZXR0aW5nIHRoZSBgR1RFU1RfUkVQRUFUYCBlbnZpcm9ubWVu
dCB2YXJpYWJsZS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMj
IFNodWZmbGluZyB0aGUgVGVzdHMgIyMKKworWW91IGNhbiBzcGVjaWZ5IHRoZSBgLS1ndGVzdF9z
aHVmZmxlYCBmbGFnIChvciBzZXQgdGhlIGBHVEVTVF9TSFVGRkxFYAorZW52aXJvbm1lbnQgdmFy
aWFibGUgdG8gYDFgKSB0byBydW4gdGhlIHRlc3RzIGluIGEgcHJvZ3JhbSBpbiBhIHJhbmRvbQor
b3JkZXIuIFRoaXMgaGVscHMgdG8gcmV2ZWFsIGJhZCBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0ZXN0
cy4KKworQnkgZGVmYXVsdCwgR29vZ2xlIFRlc3QgdXNlcyBhIHJhbmRvbSBzZWVkIGNhbGN1bGF0
ZWQgZnJvbSB0aGUgY3VycmVudAordGltZS4gVGhlcmVmb3JlIHlvdSdsbCBnZXQgYSBkaWZmZXJl
bnQgb3JkZXIgZXZlcnkgdGltZS4gVGhlIGNvbnNvbGUKK291dHB1dCBpbmNsdWRlcyB0aGUgcmFu
ZG9tIHNlZWQgdmFsdWUsIHN1Y2ggdGhhdCB5b3UgY2FuIHJlcHJvZHVjZSBhbgorb3JkZXItcmVs
YXRlZCB0ZXN0IGZhaWx1cmUgbGF0ZXIuIFRvIHNwZWNpZnkgdGhlIHJhbmRvbSBzZWVkCitleHBs
aWNpdGx5LCB1c2UgdGhlIGAtLWd0ZXN0X3JhbmRvbV9zZWVkPVNFRURgIGZsYWcgKG9yIHNldCB0
aGUKK2BHVEVTVF9SQU5ET01fU0VFRGAgZW52aXJvbm1lbnQgdmFyaWFibGUpLCB3aGVyZSBgU0VF
RGAgaXMgYW4gaW50ZWdlcgorYmV0d2VlbiAwIGFuZCA5OTk5OS4gVGhlIHNlZWQgdmFsdWUgMCBp
cyBzcGVjaWFsOiBpdCB0ZWxscyBHb29nbGUgVGVzdAordG8gZG8gdGhlIGRlZmF1bHQgYmVoYXZp
b3Igb2YgY2FsY3VsYXRpbmcgdGhlIHNlZWQgZnJvbSB0aGUgY3VycmVudAordGltZS4KKworSWYg
eW91IGNvbWJpbmUgdGhpcyB3aXRoIGAtLWd0ZXN0X3JlcGVhdD1OYCwgR29vZ2xlIFRlc3Qgd2ls
bCBwaWNrIGEKK2RpZmZlcmVudCByYW5kb20gc2VlZCBhbmQgcmUtc2h1ZmZsZSB0aGUgdGVzdHMg
aW4gZWFjaCBpdGVyYXRpb24uCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFj
OyBzaW5jZSB2MS40LjAuCisKKyMjIENvbnRyb2xsaW5nIFRlc3QgT3V0cHV0ICMjCisKK1RoaXMg
c2VjdGlvbiB0ZWFjaGVzIGhvdyB0byB0d2VhayB0aGUgd2F5IHRlc3QgcmVzdWx0cyBhcmUgcmVw
b3J0ZWQuCisKKyMjIyBDb2xvcmVkIFRlcm1pbmFsIE91dHB1dCAjIyMKKworR29vZ2xlIFRlc3Qg
Y2FuIHVzZSBjb2xvcnMgaW4gaXRzIHRlcm1pbmFsIG91dHB1dCB0byBtYWtlIGl0IGVhc2llciB0
byBzcG90Cit0aGUgc2VwYXJhdGlvbiBiZXR3ZWVuIHRlc3RzLCBhbmQgd2hldGhlciB0ZXN0cyBw
YXNzZWQuCisKK1lvdSBjYW4gc2V0IHRoZSBHVEVTVFxfQ09MT1IgZW52aXJvbm1lbnQgdmFyaWFi
bGUgb3Igc2V0IHRoZSBgLS1ndGVzdF9jb2xvcmAKK2NvbW1hbmQgbGluZSBmbGFnIHRvIGB5ZXNg
LCBgbm9gLCBvciBgYXV0b2AgKHRoZSBkZWZhdWx0KSB0byBlbmFibGUgY29sb3JzLAorZGlzYWJs
ZSBjb2xvcnMsIG9yIGxldCBHb29nbGUgVGVzdCBkZWNpZGUuIFdoZW4gdGhlIHZhbHVlIGlzIGBh
dXRvYCwgR29vZ2xlCitUZXN0IHdpbGwgdXNlIGNvbG9ycyBpZiBhbmQgb25seSBpZiB0aGUgb3V0
cHV0IGdvZXMgdG8gYSB0ZXJtaW5hbCBhbmQgKG9uCitub24tV2luZG93cyBwbGF0Zm9ybXMpIHRo
ZSBgVEVSTWAgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0IHRvIGB4dGVybWAgb3IKK2B4dGVy
bS1jb2xvcmAuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMg
U3VwcHJlc3NpbmcgdGhlIEVsYXBzZWQgVGltZSAjIyMKKworQnkgZGVmYXVsdCwgR29vZ2xlIFRl
c3QgcHJpbnRzIHRoZSB0aW1lIGl0IHRha2VzIHRvIHJ1biBlYWNoIHRlc3QuICBUbworc3VwcHJl
c3MgdGhhdCwgcnVuIHRoZSB0ZXN0IHByb2dyYW0gd2l0aCB0aGUgYC0tZ3Rlc3RfcHJpbnRfdGlt
ZT0wYAorY29tbWFuZCBsaW5lIGZsYWcuICBTZXR0aW5nIHRoZSBgR1RFU1RfUFJJTlRfVElNRWAg
ZW52aXJvbm1lbnQKK3ZhcmlhYmxlIHRvIGAwYCBoYXMgdGhlIHNhbWUgZWZmZWN0LgorCitfQXZh
aWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4gIChJbiBHb29nbGUgVGVzdCAxLjMuMCBh
bmQgbG93ZXIsCit0aGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0aGF0IHRoZSBlbGFwc2VkIHRpbWUg
aXMgKipub3QqKiBwcmludGVkLikKKworIyMjIEdlbmVyYXRpbmcgYW4gWE1MIFJlcG9ydCAjIyMK
KworR29vZ2xlIFRlc3QgY2FuIGVtaXQgYSBkZXRhaWxlZCBYTUwgcmVwb3J0IHRvIGEgZmlsZSBp
biBhZGRpdGlvbiB0byBpdHMgbm9ybWFsCit0ZXh0dWFsIG91dHB1dC4gVGhlIHJlcG9ydCBjb250
YWlucyB0aGUgZHVyYXRpb24gb2YgZWFjaCB0ZXN0LCBhbmQgdGh1cyBjYW4KK2hlbHAgeW91IGlk
ZW50aWZ5IHNsb3cgdGVzdHMuCisKK1RvIGdlbmVyYXRlIHRoZSBYTUwgcmVwb3J0LCBzZXQgdGhl
IGBHVEVTVF9PVVRQVVRgIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQorYC0tZ3Rlc3Rfb3V0
cHV0YCBmbGFnIHRvIHRoZSBzdHJpbmcgYCJ4bWw6X3BhdGhfdG9fb3V0cHV0X2ZpbGVfImAsIHdo
aWNoIHdpbGwKK2NyZWF0ZSB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24uIFlvdSBjYW4g
YWxzbyBqdXN0IHVzZSB0aGUgc3RyaW5nCitgInhtbCJgLCBpbiB3aGljaCBjYXNlIHRoZSBvdXRw
dXQgY2FuIGJlIGZvdW5kIGluIHRoZSBgdGVzdF9kZXRhaWwueG1sYCBmaWxlIGluCit0aGUgY3Vy
cmVudCBkaXJlY3RvcnkuCisKK0lmIHlvdSBzcGVjaWZ5IGEgZGlyZWN0b3J5IChmb3IgZXhhbXBs
ZSwgYCJ4bWw6b3V0cHV0L2RpcmVjdG9yeS8iYCBvbiBMaW51eCBvcgorYCJ4bWw6b3V0cHV0XGRp
cmVjdG9yeVwiYCBvbiBXaW5kb3dzKSwgR29vZ2xlIFRlc3Qgd2lsbCBjcmVhdGUgdGhlIFhNTCBm
aWxlIGluCit0aGF0IGRpcmVjdG9yeSwgbmFtZWQgYWZ0ZXIgdGhlIHRlc3QgZXhlY3V0YWJsZSAo
ZS5nLiBgZm9vX3Rlc3QueG1sYCBmb3IgdGVzdAorcHJvZ3JhbSBgZm9vX3Rlc3RgIG9yIGBmb29f
dGVzdC5leGVgKS4gSWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMgKHBlcmhhcHMgbGVmdAorb3Zl
ciBmcm9tIGEgcHJldmlvdXMgcnVuKSwgR29vZ2xlIFRlc3Qgd2lsbCBwaWNrIGEgZGlmZmVyZW50
IG5hbWUgKGUuZy4KK2Bmb29fdGVzdF8xLnhtbGApIHRvIGF2b2lkIG92ZXJ3cml0aW5nIGl0Lgor
CitUaGUgcmVwb3J0IHVzZXMgdGhlIGZvcm1hdCBkZXNjcmliZWQgaGVyZS4gIEl0IGlzIGJhc2Vk
IG9uIHRoZQorYGp1bml0cmVwb3J0YCBBbnQgdGFzayBhbmQgY2FuIGJlIHBhcnNlZCBieSBwb3B1
bGFyIGNvbnRpbnVvdXMgYnVpbGQKK3N5c3RlbXMgbGlrZSBbSHVkc29uXShodHRwczovL2h1ZHNv
bi5kZXYuamF2YS5uZXQvKS4gU2luY2UgdGhhdCBmb3JtYXQKK3dhcyBvcmlnaW5hbGx5IGludGVu
ZGVkIGZvciBKYXZhLCBhIGxpdHRsZSBpbnRlcnByZXRhdGlvbiBpcyByZXF1aXJlZAordG8gbWFr
ZSBpdCBhcHBseSB0byBHb29nbGUgVGVzdCB0ZXN0cywgYXMgc2hvd24gaGVyZToKKworYGBgCis8
dGVzdHN1aXRlcyBuYW1lPSJBbGxUZXN0cyIgLi4uPgorICA8dGVzdHN1aXRlIG5hbWU9InRlc3Rf
Y2FzZV9uYW1lIiAuLi4+CisgICAgPHRlc3RjYXNlIG5hbWU9InRlc3RfbmFtZSIgLi4uPgorICAg
ICAgPGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4i
Lz4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiIvPgorICAgIDwvdGVzdGNhc2U+CisgIDwv
dGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPgorYGBgCisKKyAgKiBUaGUgcm9vdCBgPHRlc3RzdWl0
ZXM+YCBlbGVtZW50IGNvcnJlc3BvbmRzIHRvIHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFtLgorICAq
IGA8dGVzdHN1aXRlPmAgZWxlbWVudHMgY29ycmVzcG9uZCB0byBHb29nbGUgVGVzdCB0ZXN0IGNh
c2VzLgorICAqIGA8dGVzdGNhc2U+YCBlbGVtZW50cyBjb3JyZXNwb25kIHRvIEdvb2dsZSBUZXN0
IHRlc3QgZnVuY3Rpb25zLgorCitGb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgcHJvZ3JhbQor
CitgYGAKK1RFU1QoTWF0aFRlc3QsIEFkZGl0aW9uKSB7IC4uLiB9CitURVNUKE1hdGhUZXN0LCBT
dWJ0cmFjdGlvbikgeyAuLi4gfQorVEVTVChMb2dpY1Rlc3QsIE5vbkNvbnRyYWRpY3Rpb24pIHsg
Li4uIH0KK2BgYAorCitjb3VsZCBnZW5lcmF0ZSB0aGlzIHJlcG9ydDoKKworYGBgCis8P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHRlc3RzdWl0ZXMgdGVzdHM9IjMiIGZh
aWx1cmVzPSIxIiBlcnJvcnM9IjAiIHRpbWU9IjM1IiBuYW1lPSJBbGxUZXN0cyI+CisgIDx0ZXN0
c3VpdGUgbmFtZT0iTWF0aFRlc3QiIHRlc3RzPSIyIiBmYWlsdXJlcz0iMSIgZXJyb3JzPSIwIiB0
aW1lPSIxNSI+CisgICAgPHRlc3RjYXNlIG5hbWU9IkFkZGl0aW9uIiBzdGF0dXM9InJ1biIgdGlt
ZT0iNyIgY2xhc3NuYW1lPSIiPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IGFk
ZCgxLCAxKSYjeDBBOyBBY3R1YWw6IDMmI3gwQTtFeHBlY3RlZDogMiIgdHlwZT0iIi8+CisgICAg
ICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogYWRkKDEsIC0xKSYjeDBBOyBBY3R1YWw6IDEm
I3gwQTtFeHBlY3RlZDogMCIgdHlwZT0iIi8+CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8dGVzdGNh
c2UgbmFtZT0iU3VidHJhY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSI1IiBjbGFzc25hbWU9IiI+
CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iTG9n
aWNUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGVycm9ycz0iMCIgdGltZT0iNSI+CisgICAg
PHRlc3RjYXNlIG5hbWU9Ik5vbkNvbnRyYWRpY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSI1IiBj
bGFzc25hbWU9IiI+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rlc3RzdWl0
ZXM+CitgYGAKKworVGhpbmdzIHRvIG5vdGU6CisKKyAgKiBUaGUgYHRlc3RzYCBhdHRyaWJ1dGUg
b2YgYSBgPHRlc3RzdWl0ZXM+YCBvciBgPHRlc3RzdWl0ZT5gIGVsZW1lbnQgdGVsbHMgaG93IG1h
bnkgdGVzdCBmdW5jdGlvbnMgdGhlIEdvb2dsZSBUZXN0IHByb2dyYW0gb3IgdGVzdCBjYXNlIGNv
bnRhaW5zLCB3aGlsZSB0aGUgYGZhaWx1cmVzYCBhdHRyaWJ1dGUgdGVsbHMgaG93IG1hbnkgb2Yg
dGhlbSBmYWlsZWQuCisgICogVGhlIGB0aW1lYCBhdHRyaWJ1dGUgZXhwcmVzc2VzIHRoZSBkdXJh
dGlvbiBvZiB0aGUgdGVzdCwgdGVzdCBjYXNlLCBvciBlbnRpcmUgdGVzdCBwcm9ncmFtIGluIG1p
bGxpc2Vjb25kcy4KKyAgKiBFYWNoIGA8ZmFpbHVyZT5gIGVsZW1lbnQgY29ycmVzcG9uZHMgdG8g
YSBzaW5nbGUgZmFpbGVkIEdvb2dsZSBUZXN0IGFzc2VydGlvbi4KKyAgKiBTb21lIEpVbml0IGNv
bmNlcHRzIGRvbid0IGFwcGx5IHRvIEdvb2dsZSBUZXN0LCB5ZXQgd2UgaGF2ZSB0byBjb25mb3Jt
IHRvIHRoZSBEVEQuIFRoZXJlZm9yZSB5b3UnbGwgc2VlIHNvbWUgZHVtbXkgZWxlbWVudHMgYW5k
IGF0dHJpYnV0ZXMgaW4gdGhlIHJlcG9ydC4gWW91IGNhbiBzYWZlbHkgaWdub3JlIHRoZXNlIHBh
cnRzLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgQ29udHJv
bGxpbmcgSG93IEZhaWx1cmVzIEFyZSBSZXBvcnRlZCAjIworCisjIyMgVHVybmluZyBBc3NlcnRp
b24gRmFpbHVyZXMgaW50byBCcmVhay1Qb2ludHMgIyMjCisKK1doZW4gcnVubmluZyB0ZXN0IHBy
b2dyYW1zIHVuZGVyIGEgZGVidWdnZXIsIGl0J3MgdmVyeSBjb252ZW5pZW50IGlmIHRoZQorZGVi
dWdnZXIgY2FuIGNhdGNoIGFuIGFzc2VydGlvbiBmYWlsdXJlIGFuZCBhdXRvbWF0aWNhbGx5IGRy
b3AgaW50byBpbnRlcmFjdGl2ZQorbW9kZS4gR29vZ2xlIFRlc3QncyBfYnJlYWstb24tZmFpbHVy
ZV8gbW9kZSBzdXBwb3J0cyB0aGlzIGJlaGF2aW9yLgorCitUbyBlbmFibGUgaXQsIHNldCB0aGUg
YEdURVNUX0JSRUFLX09OX0ZBSUxVUkVgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEgdmFsdWUK
K290aGVyIHRoYW4gYDBgIC4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhlIGAtLWd0ZXN0
X2JyZWFrX29uX2ZhaWx1cmVgCitjb21tYW5kIGxpbmUgZmxhZy4KKworX0F2YWlsYWJpbGl0eTpf
IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBEaXNhYmxpbmcgQ2F0Y2hpbmcgVGVzdC1UaHJv
d24gRXhjZXB0aW9ucyAjIyMKKworR29vZ2xlIFRlc3QgY2FuIGJlIHVzZWQgZWl0aGVyIHdpdGgg
b3Igd2l0aG91dCBleGNlcHRpb25zIGVuYWJsZWQuICBJZgorYSB0ZXN0IHRocm93cyBhIEMrKyBl
eGNlcHRpb24gb3IgKG9uIFdpbmRvd3MpIGEgc3RydWN0dXJlZCBleGNlcHRpb24KKyhTRUgpLCBi
eSBkZWZhdWx0IEdvb2dsZSBUZXN0IGNhdGNoZXMgaXQsIHJlcG9ydHMgaXQgYXMgYSB0ZXN0Citm
YWlsdXJlLCBhbmQgY29udGludWVzIHdpdGggdGhlIG5leHQgdGVzdCBtZXRob2QuICBUaGlzIG1h
eGltaXplcyB0aGUKK2NvdmVyYWdlIG9mIGEgdGVzdCBydW4uICBBbHNvLCBvbiBXaW5kb3dzIGFu
IHVuY2F1Z2h0IGV4Y2VwdGlvbiB3aWxsCitjYXVzZSBhIHBvcC11cCB3aW5kb3csIHNvIGNhdGNo
aW5nIHRoZSBleGNlcHRpb25zIGFsbG93cyB5b3UgdG8gcnVuCit0aGUgdGVzdHMgYXV0b21hdGlj
YWxseS4KKworV2hlbiBkZWJ1Z2dpbmcgdGhlIHRlc3QgZmFpbHVyZXMsIGhvd2V2ZXIsIHlvdSBt
YXkgaW5zdGVhZCB3YW50IHRoZQorZXhjZXB0aW9ucyB0byBiZSBoYW5kbGVkIGJ5IHRoZSBkZWJ1
Z2dlciwgc3VjaCB0aGF0IHlvdSBjYW4gZXhhbWluZQordGhlIGNhbGwgc3RhY2sgd2hlbiBhbiBl
eGNlcHRpb24gaXMgdGhyb3duLiAgVG8gYWNoaWV2ZSB0aGF0LCBzZXQgdGhlCitgR1RFU1RfQ0FU
Q0hfRVhDRVBUSU9OU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYDBgLCBvciB1c2UgdGhlCitg
LS1ndGVzdF9jYXRjaF9leGNlcHRpb25zPTBgIGZsYWcgd2hlbiBydW5uaW5nIHRoZSB0ZXN0cy4K
KworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIExldHRpbmcg
QW5vdGhlciBUZXN0aW5nIEZyYW1ld29yayBEcml2ZSAjIyMKKworSWYgeW91IHdvcmsgb24gYSBw
cm9qZWN0IHRoYXQgaGFzIGFscmVhZHkgYmVlbiB1c2luZyBhbm90aGVyIHRlc3RpbmcKK2ZyYW1l
d29yayBhbmQgaXMgbm90IHJlYWR5IHRvIGNvbXBsZXRlbHkgc3dpdGNoIHRvIEdvb2dsZSBUZXN0
IHlldCwKK3lvdSBjYW4gZ2V0IG11Y2ggb2YgR29vZ2xlIFRlc3QncyBiZW5lZml0IGJ5IHVzaW5n
IGl0cyBhc3NlcnRpb25zIGluCit5b3VyIGV4aXN0aW5nIHRlc3RzLiAgSnVzdCBjaGFuZ2UgeW91
ciBgbWFpbigpYCBmdW5jdGlvbiB0byBsb29rCitsaWtlOgorCitgYGAKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgOjp0ZXN0
aW5nOjpHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1ZTsKKyAgLy8gSW1wb3J0YW50
OiBHb29nbGUgVGVzdCBtdXN0IGJlIGluaXRpYWxpemVkLgorICA6OnRlc3Rpbmc6OkluaXRHb29n
bGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICAuLi4gd2hhdGV2ZXIgeW91ciBleGlzdGluZyB0ZXN0
aW5nIGZyYW1ld29yayByZXF1aXJlcyAuLi4KK30KK2BgYAorCitXaXRoIHRoYXQsIHlvdSBjYW4g
dXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW4gYWRkaXRpb24gdG8gdGhlCituYXRpdmUgYXNz
ZXJ0aW9ucyB5b3VyIHRlc3RpbmcgZnJhbWV3b3JrIHByb3ZpZGVzLCBmb3IgZXhhbXBsZToKKwor
YGBgCit2b2lkIFRlc3RGb29Eb2VzQmFyKCkgeworICBGb28gZm9vOworICBFWFBFQ1RfTEUoZm9v
LkJhcigxKSwgMTAwKTsgICAgIC8vIEEgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uLgorICBDUFBVTklU
X0FTU0VSVChmb28uSXNFbXB0eSgpKTsgIC8vIEEgbmF0aXZlIGFzc2VydGlvbi4KK30KK2BgYAor
CitJZiBhIEdvb2dsZSBUZXN0IGFzc2VydGlvbiBmYWlscywgaXQgd2lsbCBwcmludCBhbiBlcnJv
ciBtZXNzYWdlIGFuZAordGhyb3cgYW4gZXhjZXB0aW9uLCB3aGljaCB3aWxsIGJlIHRyZWF0ZWQg
YXMgYSBmYWlsdXJlIGJ5IHlvdXIgaG9zdAordGVzdGluZyBmcmFtZXdvcmsuICBJZiB5b3UgY29t
cGlsZSB5b3VyIGNvZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLAorYSBmYWlsZWQgR29vZ2xl
IFRlc3QgYXNzZXJ0aW9uIHdpbGwgaW5zdGVhZCBleGl0IHlvdXIgcHJvZ3JhbSB3aXRoIGEKK25v
bi16ZXJvIGNvZGUsIHdoaWNoIHdpbGwgYWxzbyBzaWduYWwgYSB0ZXN0IGZhaWx1cmUgdG8geW91
ciB0ZXN0CitydW5uZXIuCisKK0lmIHlvdSBkb24ndCB3cml0ZSBgOjp0ZXN0aW5nOjpHVEVTVF9G
TEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1ZTtgIGluCit5b3VyIGBtYWluKClgLCB5b3UgY2Fu
IGFsdGVybmF0aXZlbHkgZW5hYmxlIHRoaXMgZmVhdHVyZSBieSBzcGVjaWZ5aW5nCit0aGUgYC0t
Z3Rlc3RfdGhyb3dfb25fZmFpbHVyZWAgZmxhZyBvbiB0aGUgY29tbWFuZC1saW5lIG9yIHNldHRp
bmcgdGhlCitgR1RFU1RfVEhST1dfT05fRkFJTFVSRWAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8g
YSBub24temVybyB2YWx1ZS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7
IHNpbmNlIHYxLjMuMC4KKworIyMgRGlzdHJpYnV0aW5nIFRlc3QgRnVuY3Rpb25zIHRvIE11bHRp
cGxlIE1hY2hpbmVzICMjCisKK0lmIHlvdSBoYXZlIG1vcmUgdGhhbiBvbmUgbWFjaGluZSB5b3Ug
Y2FuIHVzZSB0byBydW4gYSB0ZXN0IHByb2dyYW0sCit5b3UgbWlnaHQgd2FudCB0byBydW4gdGhl
IHRlc3QgZnVuY3Rpb25zIGluIHBhcmFsbGVsIGFuZCBnZXQgdGhlCityZXN1bHQgZmFzdGVyLiAg
V2UgY2FsbCB0aGlzIHRlY2huaXF1ZSBfc2hhcmRpbmdfLCB3aGVyZSBlYWNoIG1hY2hpbmUKK2lz
IGNhbGxlZCBhIF9zaGFyZF8uCisKK0dvb2dsZSBUZXN0IGlzIGNvbXBhdGlibGUgd2l0aCB0ZXN0
IHNoYXJkaW5nLiAgVG8gdGFrZSBhZHZhbnRhZ2Ugb2YKK3RoaXMgZmVhdHVyZSwgeW91ciB0ZXN0
IHJ1bm5lciAobm90IHBhcnQgb2YgR29vZ2xlIFRlc3QpIG5lZWRzIHRvIGRvCit0aGUgZm9sbG93
aW5nOgorCisgIDEuIEFsbG9jYXRlIGEgbnVtYmVyIG9mIG1hY2hpbmVzIChzaGFyZHMpIHRvIHJ1
biB0aGUgdGVzdHMuCisgIDEuIE9uIGVhY2ggc2hhcmQsIHNldCB0aGUgYEdURVNUX1RPVEFMX1NI
QVJEU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhlIHRvdGFsIG51bWJlciBvZiBzaGFyZHMu
ICBJdCBtdXN0IGJlIHRoZSBzYW1lIGZvciBhbGwgc2hhcmRzLgorICAxLiBPbiBlYWNoIHNoYXJk
LCBzZXQgdGhlIGBHVEVTVF9TSEFSRF9JTkRFWGAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhl
IGluZGV4IG9mIHRoZSBzaGFyZC4gIERpZmZlcmVudCBzaGFyZHMgbXVzdCBiZSBhc3NpZ25lZCBk
aWZmZXJlbnQgaW5kaWNlcywgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcmFuZ2UgYFswLCBHVEVTVF9U
T1RBTF9TSEFSRFMgLSAxXWAuCisgIDEuIFJ1biB0aGUgc2FtZSB0ZXN0IHByb2dyYW0gb24gYWxs
IHNoYXJkcy4gIFdoZW4gR29vZ2xlIFRlc3Qgc2VlcyB0aGUgYWJvdmUgdHdvIGVudmlyb25tZW50
IHZhcmlhYmxlcywgaXQgd2lsbCBzZWxlY3QgYSBzdWJzZXQgb2YgdGhlIHRlc3QgZnVuY3Rpb25z
IHRvIHJ1bi4gIEFjcm9zcyBhbGwgc2hhcmRzLCBlYWNoIHRlc3QgZnVuY3Rpb24gaW4gdGhlIHBy
b2dyYW0gd2lsbCBiZSBydW4gZXhhY3RseSBvbmNlLgorICAxLiBXYWl0IGZvciBhbGwgc2hhcmRz
IHRvIGZpbmlzaCwgdGhlbiBjb2xsZWN0IGFuZCByZXBvcnQgdGhlIHJlc3VsdHMuCisKK1lvdXIg
cHJvamVjdCBtYXkgaGF2ZSB0ZXN0cyB0aGF0IHdlcmUgd3JpdHRlbiB3aXRob3V0IEdvb2dsZSBU
ZXN0IGFuZAordGh1cyBkb24ndCB1bmRlcnN0YW5kIHRoaXMgcHJvdG9jb2wuICBJbiBvcmRlciBm
b3IgeW91ciB0ZXN0IHJ1bm5lciB0bworZmlndXJlIG91dCB3aGljaCB0ZXN0IHN1cHBvcnRzIHNo
YXJkaW5nLCBpdCBjYW4gc2V0IHRoZSBlbnZpcm9ubWVudAordmFyaWFibGUgYEdURVNUX1NIQVJE
X1NUQVRVU19GSUxFYCB0byBhIG5vbi1leGlzdGVudCBmaWxlIHBhdGguICBJZiBhCit0ZXN0IHBy
b2dyYW0gc3VwcG9ydHMgc2hhcmRpbmcsIGl0IHdpbGwgY3JlYXRlIHRoaXMgZmlsZSB0bworYWNr
bm93bGVkZ2UgdGhlIGZhY3QgKHRoZSBhY3R1YWwgY29udGVudHMgb2YgdGhlIGZpbGUgYXJlIG5v
dAoraW1wb3J0YW50IGF0IHRoaXMgdGltZTsgYWx0aG91Z2ggd2UgbWF5IHN0aWNrIHNvbWUgdXNl
ZnVsIGluZm9ybWF0aW9uCitpbiBpdCBpbiB0aGUgZnV0dXJlLik7IG90aGVyd2lzZSBpdCB3aWxs
IG5vdCBjcmVhdGUgaXQuCisKK0hlcmUncyBhbiBleGFtcGxlIHRvIG1ha2UgaXQgY2xlYXIuICBT
dXBwb3NlIHlvdSBoYXZlIGEgdGVzdCBwcm9ncmFtCitgZm9vX3Rlc3RgIHRoYXQgY29udGFpbnMg
dGhlIGZvbGxvd2luZyA1IHRlc3QgZnVuY3Rpb25zOgorYGBgCitURVNUKEEsIFYpCitURVNUKEEs
IFcpCitURVNUKEIsIFgpCitURVNUKEIsIFkpCitURVNUKEIsIFopCitgYGAKK2FuZCB5b3UgaGF2
ZSAzIG1hY2hpbmVzIGF0IHlvdXIgZGlzcG9zYWwuICBUbyBydW4gdGhlIHRlc3QgZnVuY3Rpb25z
IGluCitwYXJhbGxlbCwgeW91IHdvdWxkIHNldCBgR1RFU1RfVE9UQUxfU0hBUkRTYCB0byAzIG9u
IGFsbCBtYWNoaW5lcywgYW5kCitzZXQgYEdURVNUX1NIQVJEX0lOREVYYCB0byAwLCAxLCBhbmQg
MiBvbiB0aGUgbWFjaGluZXMgcmVzcGVjdGl2ZWx5LgorVGhlbiB5b3Ugd291bGQgcnVuIHRoZSBz
YW1lIGBmb29fdGVzdGAgb24gZWFjaCBtYWNoaW5lLgorCitHb29nbGUgVGVzdCByZXNlcnZlcyB0
aGUgcmlnaHQgdG8gY2hhbmdlIGhvdyB0aGUgd29yayBpcyBkaXN0cmlidXRlZAorYWNyb3NzIHRo
ZSBzaGFyZHMsIGJ1dCBoZXJlJ3Mgb25lIHBvc3NpYmxlIHNjZW5hcmlvOgorCisgICogTWFjaGlu
ZSAjMCBydW5zIGBBLlZgIGFuZCBgQi5YYC4KKyAgKiBNYWNoaW5lICMxIHJ1bnMgYEEuV2AgYW5k
IGBCLllgLgorICAqIE1hY2hpbmUgIzIgcnVucyBgQi5aYC4KKworX0F2YWlsYWJpbGl0eTpfIExp
bnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4zLjAuCisKKyMgRnVzaW5nIEdvb2ds
ZSBUZXN0IFNvdXJjZSBGaWxlcyAjCisKK0dvb2dsZSBUZXN0J3MgaW1wbGVtZW50YXRpb24gY29u
c2lzdHMgb2YgfjMwIGZpbGVzIChleGNsdWRpbmcgaXRzIG93bgordGVzdHMpLiAgU29tZXRpbWVz
IHlvdSBtYXkgd2FudCB0aGVtIHRvIGJlIHBhY2thZ2VkIHVwIGluIHR3byBmaWxlcyAoYQorYC5o
YCBhbmQgYSBgLmNjYCkgaW5zdGVhZCwgc3VjaCB0aGF0IHlvdSBjYW4gZWFzaWx5IGNvcHkgdGhl
bSB0byBhIG5ldworbWFjaGluZSBhbmQgc3RhcnQgaGFja2luZyB0aGVyZS4gIEZvciB0aGlzIHdl
IHByb3ZpZGUgYW4gZXhwZXJpbWVudGFsCitQeXRob24gc2NyaXB0IGBmdXNlX2d0ZXN0X2ZpbGVz
LnB5YCBpbiB0aGUgYHNjcmlwdHMvYCBkaXJlY3RvcnkgKHNpbmNlIHJlbGVhc2UgMS4zLjApLgor
QXNzdW1pbmcgeW91IGhhdmUgUHl0aG9uIDIuNCBvciBhYm92ZSBpbnN0YWxsZWQgb24geW91ciBt
YWNoaW5lLCBqdXN0CitnbyB0byB0aGF0IGRpcmVjdG9yeSBhbmQgcnVuCitgYGAKK3B5dGhvbiBm
dXNlX2d0ZXN0X2ZpbGVzLnB5IE9VVFBVVF9ESVIKK2BgYAorCithbmQgeW91IHNob3VsZCBzZWUg
YW4gYE9VVFBVVF9ESVJgIGRpcmVjdG9yeSBiZWluZyBjcmVhdGVkIHdpdGggZmlsZXMKK2BndGVz
dC9ndGVzdC5oYCBhbmQgYGd0ZXN0L2d0ZXN0LWFsbC5jY2AgaW4gaXQuICBUaGVzZSBmaWxlcyBj
b250YWluCitldmVyeXRoaW5nIHlvdSBuZWVkIHRvIHVzZSBHb29nbGUgVGVzdC4gIEp1c3QgY29w
eSB0aGVtIHRvIGFueXdoZXJlCit5b3Ugd2FudCBhbmQgeW91IGFyZSByZWFkeSB0byB3cml0ZSB0
ZXN0cy4gIFlvdSBjYW4gdXNlIHRoZQorW3NjcmlwdHMvdGVzdC9NYWtlZmlsZV0oLi4vc2NyaXB0
cy90ZXN0L01ha2VmaWxlKQorZmlsZSBhcyBhbiBleGFtcGxlIG9uIGhvdyB0byBjb21waWxlIHlv
dXIgdGVzdHMgYWdhaW5zdCB0aGVtLgorCisjIFdoZXJlIHRvIEdvIGZyb20gSGVyZSAjCisKK0Nv
bmdyYXR1bGF0aW9ucyEgWW91J3ZlIG5vdyBsZWFybmVkIG1vcmUgYWR2YW5jZWQgR29vZ2xlIFRl
c3QgdG9vbHMgYW5kIGFyZQorcmVhZHkgdG8gdGFja2xlIG1vcmUgY29tcGxleCB0ZXN0aW5nIHRh
c2tzLiBJZiB5b3Ugd2FudCB0byBkaXZlIGV2ZW4gZGVlcGVyLCB5b3UKK2NhbiByZWFkIHRoZSBb
RnJlcXVlbnRseS1Bc2tlZCBRdWVzdGlvbnNdKFYxXzZfRkFRLm1kKS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfNl9Eb2N1bWVudGF0aW9uLm1kIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV82X0RvY3VtZW50YXRpb24ubWQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2E5MjQ2NjBhM2RjMDYwM2Y4MTM3NDM4OThjY2Q2YzNjOTIwNzk3NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfNl9Eb2N1bWVudGF0aW9uLm1kCkBA
IC0wLDAgKzEsMTQgQEAKK1RoaXMgcGFnZSBsaXN0cyBhbGwgZG9jdW1lbnRhdGlvbiB3aWtpIHBh
Z2VzIGZvciBHb29nbGUgVGVzdCAqKjEuNioqCistLSAqKmlmIHlvdSB1c2UgYSByZWxlYXNlZCB2
ZXJzaW9uIG9mIEdvb2dsZSBUZXN0LCBwbGVhc2UgcmVhZCB0aGUKK2RvY3VtZW50YXRpb24gZm9y
IHRoYXQgc3BlY2lmaWMgdmVyc2lvbiBpbnN0ZWFkLioqCisKKyAgKiBbUHJpbWVyXShWMV82X1By
aW1lci5tZCkgLS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJlIG5ldyB0byBHb29nbGUgVGVzdC4KKyAg
KiBbU2FtcGxlc10oVjFfNl9TYW1wbGVzLm1kKSAtLSBsZWFybiBmcm9tIGV4YW1wbGVzLgorICAq
IFtBZHZhbmNlZEd1aWRlXShWMV82X0FkdmFuY2VkR3VpZGUubWQpIC0tIGxlYXJuIG1vcmUgYWJv
dXQgR29vZ2xlIFRlc3QuCisgICogW1hjb2RlR3VpZGVdKFYxXzZfWGNvZGVHdWlkZS5tZCkgLS0g
aG93IHRvIHVzZSBHb29nbGUgVGVzdCBpbiBYY29kZSBvbiBNYWMuCisgICogW0ZyZXF1ZW50bHkt
QXNrZWQgUXVlc3Rpb25zXShWMV82X0ZBUS5tZCkgLS0gY2hlY2sgaGVyZSBiZWZvcmUgYXNraW5n
IGEgcXVlc3Rpb24gb24gdGhlIG1haWxpbmcgbGlzdC4KKworVG8gY29udHJpYnV0ZSBjb2RlIHRv
IEdvb2dsZSBUZXN0LCByZWFkOgorCisgICogW0Rldkd1aWRlXShEZXZHdWlkZS5tZCkgLS0gcmVh
ZCB0aGlzIF9iZWZvcmVfIHdyaXRpbmcgeW91ciBmaXJzdCBwYXRjaC4KKyAgKiBbUHVtcE1hbnVh
bF0oVjFfNl9QdW1wTWFudWFsLm1kKSAtLSBob3cgd2UgZ2VuZXJhdGUgc29tZSBvZiBHb29nbGUg
VGVzdCdzIHNvdXJjZSBmaWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzZfRkFRLm1kIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV82X0ZBUS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjdmNzg0MDc3MjJl
MWU1ZTdhODZjNjcxMzU5OGU1Nzk2MDdiNzgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV82X0ZBUS5tZApAQCAtMCwwICsxLDEwMzggQEAKKworCitJ
ZiB5b3UgY2Fubm90IGZpbmQgdGhlIGFuc3dlciB0byB5b3VyIHF1ZXN0aW9uIGhlcmUsIGFuZCB5
b3UgaGF2ZSByZWFkCitbUHJpbWVyXShWMV82X1ByaW1lci5tZCkgYW5kIFtBZHZhbmNlZEd1aWRl
XShWMV82X0FkdmFuY2VkR3VpZGUubWQpLCBzZW5kIGl0IHRvCitnb29nbGV0ZXN0ZnJhbWV3b3Jr
QGdvb2dsZWdyb3Vwcy5jb20uCisKKyMjIFdoeSBzaG91bGQgSSB1c2UgR29vZ2xlIFRlc3QgaW5z
dGVhZCBvZiBteSBmYXZvcml0ZSBDKysgdGVzdGluZyBmcmFtZXdvcms/ICMjCisKK0ZpcnN0LCBs
ZXQgdXMgc2F5IGNsZWFybHkgdGhhdCB3ZSBkb24ndCB3YW50IHRvIGdldCBpbnRvIHRoZSBkZWJh
dGUgb2YKK3doaWNoIEMrKyB0ZXN0aW5nIGZyYW1ld29yayBpcyAqKnRoZSBiZXN0KiouICBUaGVy
ZSBleGlzdCBtYW55IGZpbmUKK2ZyYW1ld29ya3MgZm9yIHdyaXRpbmcgQysrIHRlc3RzLCBhbmQg
d2UgaGF2ZSB0cmVtZW5kb3VzIHJlc3BlY3QgZm9yCit0aGUgZGV2ZWxvcGVycyBhbmQgdXNlcnMg
b2YgdGhlbS4gIFdlIGRvbid0IHRoaW5rIHRoZXJlIGlzIChvciB3aWxsCitiZSkgYSBzaW5nbGUg
YmVzdCBmcmFtZXdvcmsgLSB5b3UgaGF2ZSB0byBwaWNrIHRoZSByaWdodCB0b29sIGZvciB0aGUK
K3BhcnRpY3VsYXIgdGFzayB5b3UgYXJlIHRhY2tsaW5nLgorCitXZSBjcmVhdGVkIEdvb2dsZSBU
ZXN0IGJlY2F1c2Ugd2UgY291bGRuJ3QgZmluZCB0aGUgcmlnaHQgY29tYmluYXRpb24KK29mIGZl
YXR1cmVzIGFuZCBjb252ZW5pZW5jZXMgaW4gYW4gZXhpc3RpbmcgZnJhbWV3b3JrIHRvIHNhdGlz
ZnkgX291cl8KK25lZWRzLiAgVGhlIGZvbGxvd2luZyBpcyBhIGxpc3Qgb2YgdGhpbmdzIHRoYXQg
X3dlXyBsaWtlIGFib3V0IEdvb2dsZQorVGVzdC4gIFdlIGRvbid0IGNsYWltIHRoZW0gdG8gYmUg
dW5pcXVlIHRvIEdvb2dsZSBUZXN0IC0gcmF0aGVyLCB0aGUKK2NvbWJpbmF0aW9uIG9mIHRoZW0g
bWFrZXMgR29vZ2xlIFRlc3QgdGhlIGNob2ljZSBmb3IgdXMuICBXZSBob3BlIHRoaXMKK2xpc3Qg
Y2FuIGhlbHAgeW91IGRlY2lkZSB3aGV0aGVyIGl0IGlzIGZvciB5b3UgdG9vLgorCisgICogR29v
Z2xlIFRlc3QgaXMgZGVzaWduZWQgdG8gYmUgcG9ydGFibGU6IGl0IGRvZXNuJ3QgcmVxdWlyZSBl
eGNlcHRpb25zIG9yIFJUVEk7IGl0IHdvcmtzIGFyb3VuZCB2YXJpb3VzIGJ1Z3MgaW4gdmFyaW91
cyBjb21waWxlcnMgYW5kIGVudmlyb25tZW50czsgZXRjLiAgQXMgYSByZXN1bHQsIGl0IHdvcmtz
IG9uIExpbnV4LCBNYWMgT1MgWCwgV2luZG93cyBhbmQgc2V2ZXJhbCBlbWJlZGRlZCBvcGVyYXRp
bmcgc3lzdGVtcy4KKyAgKiBOb25mYXRhbCBhc3NlcnRpb25zIChgRVhQRUNUXypgKSBoYXZlIHBy
b3ZlbiB0byBiZSBncmVhdCB0aW1lIHNhdmVycywgYXMgdGhleSBhbGxvdyBhIHRlc3QgdG8gcmVw
b3J0IG11bHRpcGxlIGZhaWx1cmVzIGluIGEgc2luZ2xlIGVkaXQtY29tcGlsZS10ZXN0IGN5Y2xl
LgorICAqIEl0J3MgZWFzeSB0byB3cml0ZSBhc3NlcnRpb25zIHRoYXQgZ2VuZXJhdGUgaW5mb3Jt
YXRpdmUgbWVzc2FnZXM6IHlvdSBqdXN0IHVzZSB0aGUgc3RyZWFtIHN5bnRheCB0byBhcHBlbmQg
YW55IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24sIGUuZy4gYEFTU0VSVF9FUSg1LCBGb28oaSkpIDw8
ICIgd2hlcmUgaSA9ICIgPDwgaTtgLiAgSXQgZG9lc24ndCByZXF1aXJlIGEgbmV3IHNldCBvZiBt
YWNyb3Mgb3Igc3BlY2lhbCBmdW5jdGlvbnMuCisgICogR29vZ2xlIFRlc3QgYXV0b21hdGljYWxs
eSBkZXRlY3RzIHlvdXIgdGVzdHMgYW5kIGRvZXNuJ3QgcmVxdWlyZSB5b3UgdG8gZW51bWVyYXRl
IHRoZW0gaW4gb3JkZXIgdG8gcnVuIHRoZW0uCisgICogRGVhdGggdGVzdHMgYXJlIHByZXR0eSBo
YW5keSBmb3IgZW5zdXJpbmcgdGhhdCB5b3VyIGFzc2VydHMgaW4gcHJvZHVjdGlvbiBjb2RlIGFy
ZSB0cmlnZ2VyZWQgYnkgdGhlIHJpZ2h0IGNvbmRpdGlvbnMuCisgICogYFNDT1BFRF9UUkFDRWAg
aGVscHMgeW91IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYW4gYXNzZXJ0aW9uIGZhaWx1cmUg
d2hlbiBpdCBjb21lcyBmcm9tIGluc2lkZSBhIHN1Yi1yb3V0aW5lIG9yIGxvb3AuCisgICogWW91
IGNhbiBkZWNpZGUgd2hpY2ggdGVzdHMgdG8gcnVuIHVzaW5nIG5hbWUgcGF0dGVybnMuICBUaGlz
IHNhdmVzIHRpbWUgd2hlbiB5b3Ugd2FudCB0byBxdWlja2x5IHJlcHJvZHVjZSBhIHRlc3QgZmFp
bHVyZS4KKyAgKiBHb29nbGUgVGVzdCBjYW4gZ2VuZXJhdGUgWE1MIHRlc3QgcmVzdWx0IHJlcG9y
dHMgdGhhdCBjYW4gYmUgcGFyc2VkIGJ5IHBvcHVsYXIgY29udGludW91cyBidWlsZCBzeXN0ZW0g
bGlrZSBIdWRzb24uCisgICogU2ltcGxlIHRoaW5ncyBhcmUgZWFzeSBpbiBHb29nbGUgVGVzdCwg
d2hpbGUgaGFyZCB0aGluZ3MgYXJlIHBvc3NpYmxlOiBpbiBhZGRpdGlvbiB0byBhZHZhbmNlZCBm
ZWF0dXJlcyBsaWtlIFtnbG9iYWwgdGVzdCBlbnZpcm9ubWVudHNdKFYxXzZfQWR2YW5jZWRHdWlk
ZS5tZCNHbG9iYWxfU2V0LVVwX2FuZF9UZWFyLURvd24pIGFuZCB0ZXN0cyBwYXJhbWV0ZXJpemVk
IGJ5IFt2YWx1ZXNdKFYxXzZfQWR2YW5jZWRHdWlkZS5tZCN2YWx1ZS1wYXJhbWV0ZXJpemVkLXRl
c3RzKSBvciBbdHlwZXNdKFYxXzZfQWR2YW5jZWRHdWlkZS5tZCN0eXBlZC10ZXN0cyksIEdvb2ds
ZSBUZXN0IHN1cHBvcnRzIHZhcmlvdXMgd2F5cyBmb3IgdGhlIHVzZXIgdG8gZXh0ZW5kIHRoZSBm
cmFtZXdvcmsgLS0gaWYgR29vZ2xlIFRlc3QgZG9lc24ndCBkbyBzb21ldGhpbmcgb3V0IG9mIHRo
ZSBib3gsIGNoYW5jZXMgYXJlIHRoYXQgYSB1c2VyIGNhbiBpbXBsZW1lbnQgdGhlIGZlYXR1cmUg
dXNpbmcgR29vZ2xlIFRlc3QncyBwdWJsaWMgQVBJLCB3aXRob3V0IGNoYW5naW5nIEdvb2dsZSBU
ZXN0IGl0c2VsZi4gIEluIHBhcnRpY3VsYXIsIHlvdSBjYW46CisgICAgKiBleHBhbmQgeW91ciB0
ZXN0aW5nIHZvY2FidWxhcnkgYnkgZGVmaW5pbmcgW2N1c3RvbSBwcmVkaWNhdGVzXShWMV82X0Fk
dmFuY2VkR3VpZGUubWQjcHJlZGljYXRlLWFzc2VydGlvbnMtZm9yLWJldHRlci1lcnJvci1tZXNz
YWdlcyksCisgICAgKiB0ZWFjaCBHb29nbGUgVGVzdCBob3cgdG8gW3ByaW50IHlvdXIgdHlwZXNd
KFYxXzZfQWR2YW5jZWRHdWlkZS5tZCN0ZWFjaGluZy1nb29nbGUtdGVzdC1ob3ctdG8tcHJpbnQt
eW91ci12YWx1ZXMpLAorICAgICogZGVmaW5lIHlvdXIgb3duIHRlc3RpbmcgbWFjcm9zIG9yIHV0
aWxpdGllcyBhbmQgdmVyaWZ5IHRoZW0gdXNpbmcgR29vZ2xlIFRlc3QncyBbU2VydmljZSBQcm92
aWRlciBJbnRlcmZhY2VdKFYxXzZfQWR2YW5jZWRHdWlkZS5tZCNjYXRjaGluZy1mYWlsdXJlcyks
IGFuZAorICAgICogcmVmbGVjdCBvbiB0aGUgdGVzdCBjYXNlcyBvciBjaGFuZ2UgdGhlIHRlc3Qg
b3V0cHV0IGZvcm1hdCBieSBpbnRlcmNlcHRpbmcgdGhlIFt0ZXN0IGV2ZW50c10oVjFfNl9BZHZh
bmNlZEd1aWRlLm1kI2V4dGVuZGluZy1nb29nbGUtdGVzdC1ieS1oYW5kbGluZy10ZXN0LWV2ZW50
cykuCisKKyMjIEknbSBnZXR0aW5nIHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nIEdvb2dsZSBUZXN0
LiAgV291bGQgeW91IGZpeCB0aGVtPyAjIworCitXZSBzdHJpdmUgdG8gbWluaW1pemUgY29tcGls
ZXIgd2FybmluZ3MgR29vZ2xlIFRlc3QgZ2VuZXJhdGVzLiAgQmVmb3JlIHJlbGVhc2luZyBhIG5l
dyB2ZXJzaW9uLCB3ZSB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IGl0IGRvZXNuJ3QgZ2VuZXJhdGUg
d2FybmluZ3Mgd2hlbiBjb21waWxlZCB1c2luZyBpdHMgQ01ha2Ugc2NyaXB0IG9uIFdpbmRvd3Ms
IExpbnV4LCBhbmQgTWFjIE9TLgorCitVbmZvcnR1bmF0ZWx5LCB0aGlzIGRvZXNuJ3QgbWVhbiB5
b3UgYXJlIGd1YXJhbnRlZWQgdG8gc2VlIG5vIHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nIEdvb2ds
ZSBUZXN0IGluIHlvdXIgZW52aXJvbm1lbnQ6CisKKyAgKiBZb3UgbWF5IGJlIHVzaW5nIGEgZGlm
ZmVyZW50IGNvbXBpbGVyIGFzIHdlIHVzZSwgb3IgYSBkaWZmZXJlbnQgdmVyc2lvbiBvZiB0aGUg
c2FtZSBjb21waWxlci4gIFdlIGNhbm5vdCBwb3NzaWJseSB0ZXN0IGZvciBhbGwgY29tcGlsZXJz
LgorICAqIFlvdSBtYXkgYmUgY29tcGlsaW5nIG9uIGEgZGlmZmVyZW50IHBsYXRmb3JtIGFzIHdl
IGRvLgorICAqIFlvdXIgcHJvamVjdCBtYXkgYmUgdXNpbmcgZGlmZmVyZW50IGNvbXBpbGVyIGZs
YWdzIGFzIHdlIGRvLgorCitJdCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIG1ha2UgR29vZ2xl
IFRlc3Qgd2FybmluZy1mcmVlIGZvciBldmVyeW9uZS4gIE9yLCBpdCBtYXkgbm90IGJlIGRlc2ly
YWJsZSBpZiB0aGUgd2FybmluZyBpcyByYXJlbHkgZW5hYmxlZCBhbmQgZml4aW5nIHRoZSB2aW9s
YXRpb25zIG1ha2VzIHRoZSBjb2RlIG1vcmUgY29tcGxleC4KKworSWYgeW91IHNlZSB3YXJuaW5n
cyB3aGVuIGNvbXBpbGluZyBHb29nbGUgVGVzdCwgd2Ugc3VnZ2VzdCB0aGF0IHlvdSB1c2UgdGhl
IGAtaXN5c3RlbWAgZmxhZyAoYXNzdW1pbmcgeW91ciBhcmUgdXNpbmcgR0NDKSB0byBtYXJrIEdv
b2dsZSBUZXN0IGhlYWRlcnMgYXMgc3lzdGVtIGhlYWRlcnMuICBUaGF0J2xsIHN1cHByZXNzIHdh
cm5pbmdzIGZyb20gR29vZ2xlIFRlc3QgaGVhZGVycy4KKworIyMgV2h5IHNob3VsZCBub3QgdGVz
dCBjYXNlIG5hbWVzIGFuZCB0ZXN0IG5hbWVzIGNvbnRhaW4gdW5kZXJzY29yZT8gIyMKKworVW5k
ZXJzY29yZSAoYF9gKSBpcyBzcGVjaWFsLCBhcyBDKysgcmVzZXJ2ZXMgdGhlIGZvbGxvd2luZyB0
byBiZSB1c2VkIGJ5Cit0aGUgY29tcGlsZXIgYW5kIHRoZSBzdGFuZGFyZCBsaWJyYXJ5OgorCisg
IDEuIGFueSBpZGVudGlmaWVyIHRoYXQgc3RhcnRzIHdpdGggYW4gYF9gIGZvbGxvd2VkIGJ5IGFu
IHVwcGVyLWNhc2UgbGV0dGVyLCBhbmQKKyAgMS4gYW55IGlkZW50aWZpZXIgdGhhdCBjb250YWlu
ZXJzIHR3byBjb25zZWN1dGl2ZSB1bmRlcnNjb3JlcyAoaS5lLiBgX19gKSBfYW55d2hlcmVfIGlu
IGl0cyBuYW1lLgorCitVc2VyIGNvZGUgaXMgX3Byb2hpYml0ZWRfIGZyb20gdXNpbmcgc3VjaCBp
ZGVudGlmaWVycy4KKworTm93IGxldCdzIGxvb2sgYXQgd2hhdCB0aGlzIG1lYW5zIGZvciBgVEVT
VGAgYW5kIGBURVNUX0ZgLgorCitDdXJyZW50bHkgYFRFU1QoVGVzdENhc2VOYW1lLCBUZXN0TmFt
ZSlgIGdlbmVyYXRlcyBhIGNsYXNzIG5hbWVkCitgVGVzdENhc2VOYW1lX1Rlc3ROYW1lX1Rlc3Rg
LiAgV2hhdCBoYXBwZW5zIGlmIGBUZXN0Q2FzZU5hbWVgIG9yIGBUZXN0TmFtZWAKK2NvbnRhaW5z
IGBfYD8KKworICAxLiBJZiBgVGVzdENhc2VOYW1lYCBzdGFydHMgd2l0aCBhbiBgX2AgZm9sbG93
ZWQgYnkgYW4gdXBwZXItY2FzZSBsZXR0ZXIgKHNheSwgYF9Gb29gKSwgd2UgZW5kIHVwIHdpdGgg
YF9Gb29fVGVzdE5hbWVfVGVzdGAsIHdoaWNoIGlzIHJlc2VydmVkIGFuZCB0aHVzIGludmFsaWQu
CisgIDEuIElmIGBUZXN0Q2FzZU5hbWVgIGVuZHMgd2l0aCBhbiBgX2AgKHNheSwgYEZvb19gKSwg
d2UgZ2V0IGBGb29fX1Rlc3ROYW1lX1Rlc3RgLCB3aGljaCBpcyBpbnZhbGlkLgorICAxLiBJZiBg
VGVzdE5hbWVgIHN0YXJ0cyB3aXRoIGFuIGBfYCAoc2F5LCBgX0JhcmApLCB3ZSBnZXQgYFRlc3RD
YXNlTmFtZV9fQmFyX1Rlc3RgLCB3aGljaCBpcyBpbnZhbGlkLgorICAxLiBJZiBgVGVzdE5hbWVg
IGVuZHMgd2l0aCBhbiBgX2AgKHNheSwgYEJhcl9gKSwgd2UgZ2V0IGBUZXN0Q2FzZU5hbWVfQmFy
X19UZXN0YCwgd2hpY2ggaXMgaW52YWxpZC4KKworU28gY2xlYXJseSBgVGVzdENhc2VOYW1lYCBh
bmQgYFRlc3ROYW1lYCBjYW5ub3Qgc3RhcnQgb3IgZW5kIHdpdGggYF9gCisoQWN0dWFsbHksIGBU
ZXN0Q2FzZU5hbWVgIGNhbiBzdGFydCB3aXRoIGBfYCAtLSBhcyBsb25nIGFzIHRoZSBgX2AgaXNu
J3QKK2ZvbGxvd2VkIGJ5IGFuIHVwcGVyLWNhc2UgbGV0dGVyLiAgQnV0IHRoYXQncyBnZXR0aW5n
IGNvbXBsaWNhdGVkLiAgU28KK2ZvciBzaW1wbGljaXR5IHdlIGp1c3Qgc2F5IHRoYXQgaXQgY2Fu
bm90IHN0YXJ0IHdpdGggYF9gLikuCisKK0l0IG1heSBzZWVtIGZpbmUgZm9yIGBUZXN0Q2FzZU5h
bWVgIGFuZCBgVGVzdE5hbWVgIHRvIGNvbnRhaW4gYF9gIGluIHRoZQorbWlkZGxlLiAgSG93ZXZl
ciwgY29uc2lkZXIgdGhpczoKK2BgYAorVEVTVChUaW1lLCBGbGllc19MaWtlX0FuX0Fycm93KSB7
IC4uLiB9CitURVNUKFRpbWVfRmxpZXMsIExpa2VfQW5fQXJyb3cpIHsgLi4uIH0KK2BgYAorCitO
b3csIHRoZSB0d28gYFRFU1RgcyB3aWxsIGJvdGggZ2VuZXJhdGUgdGhlIHNhbWUgY2xhc3MKKyhg
VGltZV9GaWxlc19MaWtlX0FuX0Fycm93X1Rlc3RgKS4gIFRoYXQncyBub3QgZ29vZC4KKworU28g
Zm9yIHNpbXBsaWNpdHksIHdlIGp1c3QgYXNrIHRoZSB1c2VycyB0byBhdm9pZCBgX2AgaW4gYFRl
c3RDYXNlTmFtZWAKK2FuZCBgVGVzdE5hbWVgLiAgVGhlIHJ1bGUgaXMgbW9yZSBjb25zdHJhaW5p
bmcgdGhhbiBuZWNlc3NhcnksIGJ1dCBpdCdzCitzaW1wbGUgYW5kIGVhc3kgdG8gcmVtZW1iZXIu
ICBJdCBhbHNvIGdpdmVzIEdvb2dsZSBUZXN0IHNvbWUgd2lnZ2xlCityb29tIGluIGNhc2UgaXRz
IGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIGNoYW5nZSBpbiB0aGUgZnV0dXJlLgorCitJZiB5b3Ug
dmlvbGF0ZSB0aGUgcnVsZSwgdGhlcmUgbWF5IG5vdCBiZSBpbW1lZGlhdGVseSBjb25zZXF1ZW5j
ZXMsCitidXQgeW91ciB0ZXN0IG1heSAoanVzdCBtYXkpIGJyZWFrIHdpdGggYSBuZXcgY29tcGls
ZXIgKG9yIGEgbmV3Cit2ZXJzaW9uIG9mIHRoZSBjb21waWxlciB5b3UgYXJlIHVzaW5nKSBvciB3
aXRoIGEgbmV3IHZlcnNpb24gb2YgR29vZ2xlCitUZXN0LiAgVGhlcmVmb3JlIGl0J3MgYmVzdCB0
byBmb2xsb3cgdGhlIHJ1bGUuCisKKyMjIFdoeSBpcyBpdCBub3QgcmVjb21tZW5kZWQgdG8gaW5z
dGFsbCBhIHByZS1jb21waWxlZCBjb3B5IG9mIEdvb2dsZSBUZXN0IChmb3IgZXhhbXBsZSwgaW50
byAvdXNyL2xvY2FsKT8gIyMKKworSW4gdGhlIGVhcmx5IGRheXMsIHdlIHNhaWQgdGhhdCB5b3Ug
Y291bGQgaW5zdGFsbAorY29tcGlsZWQgR29vZ2xlIFRlc3QgbGlicmFyaWVzIG9uIGAqYG5peCBz
eXN0ZW1zIHVzaW5nIGBtYWtlIGluc3RhbGxgLgorVGhlbiBldmVyeSB1c2VyIG9mIHlvdXIgbWFj
aGluZSBjYW4gd3JpdGUgdGVzdHMgd2l0aG91dAorcmVjb21waWxpbmcgR29vZ2xlIFRlc3QuCisK
K1RoaXMgc2VlbWVkIGxpa2UgYSBnb29kIGlkZWEsIGJ1dCBpdCBoYXMgYQorZ290LWNoYTogZXZl
cnkgdXNlciBuZWVkcyB0byBjb21waWxlIGhpcyB0ZXN0cyB1c2luZyB0aGUgX3NhbWVfIGNvbXBp
bGVyCitmbGFncyB1c2VkIHRvIGNvbXBpbGUgdGhlIGluc3RhbGxlZCBHb29nbGUgVGVzdCBsaWJy
YXJpZXM7IG90aGVyd2lzZQoraGUgbWF5IHJ1biBpbnRvIHVuZGVmaW5lZCBiZWhhdmlvcnMgKGku
ZS4gdGhlIHRlc3RzIGNhbiBiZWhhdmUKK3N0cmFuZ2VseSBhbmQgbWF5IGV2ZW4gY3Jhc2ggZm9y
IG5vIG9idmlvdXMgcmVhc29ucykuCisKK1doeT8gIEJlY2F1c2UgQysrIGhhcyB0aGlzIHRoaW5n
IGNhbGxlZCB0aGUgT25lLURlZmluaXRpb24gUnVsZTogaWYKK3R3byBDKysgc291cmNlIGZpbGVz
IGNvbnRhaW4gZGlmZmVyZW50IGRlZmluaXRpb25zIG9mIHRoZSBzYW1lCitjbGFzcy9mdW5jdGlv
bi92YXJpYWJsZSwgYW5kIHlvdSBsaW5rIHRoZW0gdG9nZXRoZXIsIHlvdSB2aW9sYXRlIHRoZQor
cnVsZS4gIFRoZSBsaW5rZXIgbWF5IG9yIG1heSBub3QgY2F0Y2ggdGhlIGVycm9yIChpbiBtYW55
IGNhc2VzIGl0J3MKK25vdCByZXF1aXJlZCBieSB0aGUgQysrIHN0YW5kYXJkIHRvIGNhdGNoIHRo
ZSB2aW9sYXRpb24pLiAgSWYgaXQKK2RvZXNuJ3QsIHlvdSBnZXQgc3RyYW5nZSBydW4tdGltZSBi
ZWhhdmlvcnMgdGhhdCBhcmUgdW5leHBlY3RlZCBhbmQKK2hhcmQgdG8gZGVidWcuCisKK0lmIHlv
dSBjb21waWxlIEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRlc3QgY29kZSB1c2luZyBkaWZmZXJlbnQg
Y29tcGlsZXIKK2ZsYWdzLCB0aGV5IG1heSBzZWUgZGlmZmVyZW50IGRlZmluaXRpb25zIG9mIHRo
ZSBzYW1lCitjbGFzcy9mdW5jdGlvbi92YXJpYWJsZSAoZS5nLiBkdWUgdG8gdGhlIHVzZSBvZiBg
I2lmYCBpbiBHb29nbGUgVGVzdCkuCitUaGVyZWZvcmUsIGZvciB5b3VyIHNhbml0eSwgd2UgcmVj
b21tZW5kIHRvIGF2b2lkIGluc3RhbGxpbmcgcHJlLWNvbXBpbGVkCitHb29nbGUgVGVzdCBsaWJy
YXJpZXMuICBJbnN0ZWFkLCBlYWNoIHByb2plY3Qgc2hvdWxkIGNvbXBpbGUKK0dvb2dsZSBUZXN0
IGl0c2VsZiBzdWNoIHRoYXQgaXQgY2FuIGJlIHN1cmUgdGhhdCB0aGUgc2FtZSBmbGFncyBhcmUK
K3VzZWQgZm9yIGJvdGggR29vZ2xlIFRlc3QgYW5kIHRoZSB0ZXN0cy4KKworIyMgSG93IGRvIEkg
Z2VuZXJhdGUgNjQtYml0IGJpbmFyaWVzIG9uIFdpbmRvd3MgKHVzaW5nIFZpc3VhbCBTdHVkaW8g
MjAwOCk/ICMjCisKKyhBbnN3ZXJlZCBieSBUcmV2b3IgUm9iaW5zb24pCisKK0xvYWQgdGhlIHN1
cHBsaWVkIFZpc3VhbCBTdHVkaW8gc29sdXRpb24gZmlsZSwgZWl0aGVyIGBtc3ZjXGd0ZXN0LW1k
LnNsbmAgb3IKK2Btc3ZjXGd0ZXN0LnNsbmAuIEdvIHRocm91Z2ggdGhlIG1pZ3JhdGlvbiB3aXph
cmQgdG8gbWlncmF0ZSB0aGUKK3NvbHV0aW9uIGFuZCBwcm9qZWN0IGZpbGVzIHRvIFZpc3VhbCBT
dHVkaW8gMjAwOC4gU2VsZWN0CitgQ29uZmlndXJhdGlvbiBNYW5hZ2VyLi4uYCBmcm9tIHRoZSBg
QnVpbGRgIG1lbnUuIFNlbGVjdCBgPE5ldy4uLj5gIGZyb20KK3RoZSBgQWN0aXZlIHNvbHV0aW9u
IHBsYXRmb3JtYCBkcm9wZG93bi4gIFNlbGVjdCBgeDY0YCBmcm9tIHRoZSBuZXcKK3BsYXRmb3Jt
IGRyb3Bkb3duLCBsZWF2ZSBgQ29weSBzZXR0aW5ncyBmcm9tYCBzZXQgdG8gYFdpbjMyYCBhbmQK
K2BDcmVhdGUgbmV3IHByb2plY3QgcGxhdGZvcm1zYCBjaGVja2VkLCB0aGVuIGNsaWNrIGBPS2Au
IFlvdSBub3cgaGF2ZQorYFdpbjMyYCBhbmQgYHg2NGAgcGxhdGZvcm0gY29uZmlndXJhdGlvbnMs
IHNlbGVjdGFibGUgZnJvbSB0aGUKK2BTdGFuZGFyZGAgdG9vbGJhciwgd2hpY2ggYWxsb3cgeW91
IHRvIHRvZ2dsZSBiZXR3ZWVuIGJ1aWxkaW5nIDMyLWJpdCBvcgorNjQtYml0IGJpbmFyaWVzIChv
ciBib3RoIGF0IG9uY2UgdXNpbmcgQmF0Y2ggQnVpbGQpLgorCitJbiBvcmRlciB0byBwcmV2ZW50
IGJ1aWxkIG91dHB1dCBmaWxlcyBmcm9tIG92ZXJ3cml0aW5nIG9uZSBhbm90aGVyLAoreW91J2xs
IG5lZWQgdG8gY2hhbmdlIHRoZSBgSW50ZXJtZWRpYXRlIERpcmVjdG9yeWAgc2V0dGluZ3MgZm9y
IHRoZQorbmV3bHkgY3JlYXRlZCBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIGFjcm9zcyBhbGwgdGhl
IHByb2plY3RzLiBUbyBkbwordGhpcywgbXVsdGktc2VsZWN0IChlLmcuIHVzaW5nIHNoaWZ0LWNs
aWNrKSBhbGwgcHJvamVjdHMgKGJ1dCBub3QgdGhlCitzb2x1dGlvbikgaW4gdGhlIGBTb2x1dGlv
biBFeHBsb3JlcmAuIFJpZ2h0LWNsaWNrIG9uZSBvZiB0aGVtIGFuZAorc2VsZWN0IGBQcm9wZXJ0
aWVzYC4gSW4gdGhlIGxlZnQgcGFuZSwgc2VsZWN0IGBDb25maWd1cmF0aW9uIFByb3BlcnRpZXNg
LAorYW5kIGZyb20gdGhlIGBDb25maWd1cmF0aW9uYCBkcm9wZG93biwgc2VsZWN0IGBBbGwgQ29u
ZmlndXJhdGlvbnNgLgorTWFrZSBzdXJlIHRoZSBzZWxlY3RlZCBwbGF0Zm9ybSBpcyBgeDY0YC4g
Rm9yIHRoZQorYEludGVybWVkaWF0ZSBEaXJlY3RvcnlgIHNldHRpbmcsIGNoYW5nZSB0aGUgdmFs
dWUgZnJvbQorYCQoUGxhdGZvcm1OYW1lKVwkKENvbmZpZ3VyYXRpb25OYW1lKWAgdG8KK2AkKE91
dERpcilcJChQcm9qZWN0TmFtZSlgLiBDbGljayBgT0tgIGFuZCB0aGVuIGJ1aWxkIHRoZQorc29s
dXRpb24uIFdoZW4gdGhlIGJ1aWxkIGlzIGNvbXBsZXRlLCB0aGUgNjQtYml0IGJpbmFyaWVzIHdp
bGwgYmUgaW4KK3RoZSBgbXN2Y1x4NjRcRGVidWdgIGRpcmVjdG9yeS4KKworIyMgQ2FuIEkgdXNl
IEdvb2dsZSBUZXN0IG9uIE1pbkdXPyAjIworCitXZSBoYXZlbid0IHRlc3RlZCB0aGlzIG91cnNl
bHZlcywgYnV0IFBlciBBYnJhaGFtc2VuIHJlcG9ydGVkIHRoYXQgaGUKK3dhcyBhYmxlIHRvIGNv
bXBpbGUgYW5kIGluc3RhbGwgR29vZ2xlIFRlc3Qgc3VjY2Vzc2Z1bGx5IHdoZW4gdXNpbmcKK01p
bkdXIGZyb20gQ3lnd2luLiAgWW91J2xsIG5lZWQgdG8gY29uZmlndXJlIGl0IHdpdGg6CisKK2BQ
QVRIL1RPL2NvbmZpZ3VyZSBDQz0iZ2NjIC1tbm8tY3lnd2luIiBDWFg9ImcrKyAtbW5vLWN5Z3dp
biJgCisKK1lvdSBzaG91bGQgYmUgYWJsZSB0byByZXBsYWNlIHRoZSBgLW1uby1jeWd3aW5gIG9w
dGlvbiB3aXRoIGRpcmVjdCBsaW5rcwordG8gdGhlIHJlYWwgTWluR1cgYmluYXJpZXMsIGJ1dCB3
ZSBoYXZlbid0IHRyaWVkIHRoYXQuCisKK0NhdmVhdHM6CisKKyAgKiBUaGVyZSBhcmUgbWFueSB3
YXJuaW5ncyB3aGVuIGNvbXBpbGluZy4KKyAgKiBgbWFrZSBjaGVja2Agd2lsbCBwcm9kdWNlIHNv
bWUgZXJyb3JzIGFzIG5vdCBhbGwgdGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZiBhcmUgY29t
cGF0aWJsZSB3aXRoIE1pbkdXLgorCitXZSBhbHNvIGhhdmUgcmVwb3J0cyBvbiBzdWNjZXNzZnVs
IGNyb3NzIGNvbXBpbGF0aW9uIG9mIEdvb2dsZSBUZXN0CitNaW5HVyBiaW5hcmllcyBvbiBMaW51
eCB1c2luZworW3RoZXNlIGluc3RydWN0aW9uc10oaHR0cDovL3dpa2kud3h3aWRnZXRzLm9yZy9D
cm9zcy1Db21waWxpbmdfVW5kZXJfTGludXgjQ3Jvc3MtY29tcGlsaW5nX3VuZGVyX0xpbnV4X2Zv
cl9NU19XaW5kb3dzKQorb24gdGhlIFd4V2lkZ2V0cyBzaXRlLgorCitQbGVhc2UgY29udGFjdCBg
Z29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tYCBpZiB5b3UgYXJlCitpbnRlcmVz
dGVkIGluIGltcHJvdmluZyB0aGUgc3VwcG9ydCBmb3IgTWluR1cuCisKKyMjIFdoeSBkb2VzIEdv
b2dsZSBUZXN0IHN1cHBvcnQgRVhQRUNUXF9FUShOVUxMLCBwdHIpIGFuZCBBU1NFUlRcX0VRKE5V
TEwsIHB0cikgYnV0IG5vdCBFWFBFQ1RcX05FKE5VTEwsIHB0cikgYW5kIEFTU0VSVFxfTkUoTlVM
TCwgcHRyKT8gIyMKKworRHVlIHRvIHNvbWUgcGVjdWxpYXJpdHkgb2YgQysrLCBpdCByZXF1aXJl
cyBzb21lIG5vbi10cml2aWFsIHRlbXBsYXRlCittZXRhIHByb2dyYW1taW5nIHRyaWNrcyB0byBz
dXBwb3J0IHVzaW5nIGBOVUxMYCBhcyBhbiBhcmd1bWVudCBvZiB0aGUKK2BFWFBFQ1RfWFgoKWAg
YW5kIGBBU1NFUlRfWFgoKWAgbWFjcm9zLiBUaGVyZWZvcmUgd2Ugb25seSBkbyBpdCB3aGVyZQor
aXQncyBtb3N0IG5lZWRlZCAob3RoZXJ3aXNlIHdlIG1ha2UgdGhlIGltcGxlbWVudGF0aW9uIG9m
IEdvb2dsZSBUZXN0CitoYXJkZXIgdG8gbWFpbnRhaW4gYW5kIG1vcmUgZXJyb3ItcHJvbmUgdGhh
biBuZWNlc3NhcnkpLgorCitUaGUgYEVYUEVDVF9FUSgpYCBtYWNybyB0YWtlcyB0aGUgX2V4cGVj
dGVkXyB2YWx1ZSBhcyBpdHMgZmlyc3QKK2FyZ3VtZW50IGFuZCB0aGUgX2FjdHVhbF8gdmFsdWUg
YXMgdGhlIHNlY29uZC4gSXQncyByZWFzb25hYmxlIHRoYXQKK3NvbWVvbmUgd2FudHMgdG8gd3Jp
dGUgYEVYUEVDVF9FUShOVUxMLCBzb21lX2V4cHJlc3Npb24pYCwgYW5kIHRoaXMKK2luZGVlZCB3
YXMgcmVxdWVzdGVkIHNldmVyYWwgdGltZXMuIFRoZXJlZm9yZSB3ZSBpbXBsZW1lbnRlZCBpdC4K
KworVGhlIG5lZWQgZm9yIGBFWFBFQ1RfTkUoTlVMTCwgcHRyKWAgaXNuJ3QgbmVhcmx5IGFzIHN0
cm9uZy4gV2hlbiB0aGUKK2Fzc2VydGlvbiBmYWlscywgeW91IGFscmVhZHkga25vdyB0aGF0IGBw
dHJgIG11c3QgYmUgYE5VTExgLCBzbyBpdAorZG9lc24ndCBhZGQgYW55IGluZm9ybWF0aW9uIHRv
IHByaW50IHB0ciBpbiB0aGlzIGNhc2UuIFRoYXQgbWVhbnMKK2BFWFBFQ1RfVFJVRShwdHIgISBO
VUxMKWAgd29ya3MganVzdCBhcyB3ZWxsLgorCitJZiB3ZSB3ZXJlIHRvIHN1cHBvcnQgYEVYUEVD
VF9ORShOVUxMLCBwdHIpYCwgZm9yIGNvbnNpc3RlbmN5IHdlJ2xsCitoYXZlIHRvIHN1cHBvcnQg
YEVYUEVDVF9ORShwdHIsIE5VTEwpYCBhcyB3ZWxsLCBhcyB1bmxpa2UgYEVYUEVDVF9FUWAsCit3
ZSBkb24ndCBoYXZlIGEgY29udmVudGlvbiBvbiB0aGUgb3JkZXIgb2YgdGhlIHR3byBhcmd1bWVu
dHMgZm9yCitgRVhQRUNUX05FYC4gVGhpcyBtZWFucyB1c2luZyB0aGUgdGVtcGxhdGUgbWV0YSBw
cm9ncmFtbWluZyB0cmlja3MKK3R3aWNlIGluIHRoZSBpbXBsZW1lbnRhdGlvbiwgbWFraW5nIGl0
IGV2ZW4gaGFyZGVyIHRvIHVuZGVyc3RhbmQgYW5kCittYWludGFpbi4gV2UgYmVsaWV2ZSB0aGUg
YmVuZWZpdCBkb2Vzbid0IGp1c3RpZnkgdGhlIGNvc3QuCisKK0ZpbmFsbHksIHdpdGggdGhlIGdy
b3d0aCBvZiBHb29nbGUgTW9jaydzIFttYXRjaGVyXSguLi8uLi9Db29rQm9vay5tZCN1c2luZy1t
YXRjaGVycy1pbi1nb29nbGUtdGVzdC1hc3NlcnRpb25zKSBsaWJyYXJ5LCB3ZSBhcmUKK2VuY291
cmFnaW5nIHBlb3BsZSB0byB1c2UgdGhlIHVuaWZpZWQgYEVYUEVDVF9USEFUKHZhbHVlLCBtYXRj
aGVyKWAKK3N5bnRheCBtb3JlIG9mdGVuIGluIHRlc3RzLiBPbmUgc2lnbmlmaWNhbnQgYWR2YW50
YWdlIG9mIHRoZSBtYXRjaGVyCithcHByb2FjaCBpcyB0aGF0IG1hdGNoZXJzIGNhbiBiZSBlYXNp
bHkgY29tYmluZWQgdG8gZm9ybSBuZXcgbWF0Y2hlcnMsCit3aGlsZSB0aGUgYEVYUEVDVF9ORWAs
IGV0YywgbWFjcm9zIGNhbm5vdCBiZSBlYXNpbHkKK2NvbWJpbmVkLiBUaGVyZWZvcmUgd2Ugd2Fu
dCB0byBpbnZlc3QgbW9yZSBpbiB0aGUgbWF0Y2hlcnMgdGhhbiBpbiB0aGUKK2BFWFBFQ1RfWFgo
KWAgbWFjcm9zLgorCisjIyBEb2VzIEdvb2dsZSBUZXN0IHN1cHBvcnQgcnVubmluZyB0ZXN0cyBp
biBwYXJhbGxlbD8gIyMKKworVGVzdCBydW5uZXJzIHRlbmQgdG8gYmUgdGlnaHRseSBjb3VwbGVk
IHdpdGggdGhlIGJ1aWxkL3Rlc3QKK2Vudmlyb25tZW50LCBhbmQgR29vZ2xlIFRlc3QgZG9lc24n
dCB0cnkgdG8gc29sdmUgdGhlIHByb2JsZW0gb2YKK3J1bm5pbmcgdGVzdHMgaW4gcGFyYWxsZWwu
ICBJbnN0ZWFkLCB3ZSB0cmllZCB0byBtYWtlIEdvb2dsZSBUZXN0IHdvcmsKK25pY2VseSB3aXRo
IHRlc3QgcnVubmVycy4gIEZvciBleGFtcGxlLCBHb29nbGUgVGVzdCdzIFhNTCByZXBvcnQKK2Nv
bnRhaW5zIHRoZSB0aW1lIHNwZW50IG9uIGVhY2ggdGVzdCwgYW5kIGl0cyBgZ3Rlc3RfbGlzdF90
ZXN0c2AgYW5kCitgZ3Rlc3RfZmlsdGVyYCBmbGFncyBjYW4gYmUgdXNlZCBmb3Igc3BsaXR0aW5n
IHRoZSBleGVjdXRpb24gb2YgdGVzdAorbWV0aG9kcyBpbnRvIG11bHRpcGxlIHByb2Nlc3Nlcy4g
IFRoZXNlIGZ1bmN0aW9uYWxpdGllcyBjYW4gaGVscCB0aGUKK3Rlc3QgcnVubmVyIHJ1biB0aGUg
dGVzdHMgaW4gcGFyYWxsZWwuCisKKyMjIFdoeSBkb24ndCBHb29nbGUgVGVzdCBydW4gdGhlIHRl
c3RzIGluIGRpZmZlcmVudCB0aHJlYWRzIHRvIHNwZWVkIHRoaW5ncyB1cD8gIyMKKworSXQncyBk
aWZmaWN1bHQgdG8gd3JpdGUgdGhyZWFkLXNhZmUgY29kZS4gIE1vc3QgdGVzdHMgYXJlIG5vdCB3
cml0dGVuCit3aXRoIHRocmVhZC1zYWZldHkgaW4gbWluZCwgYW5kIHRodXMgbWF5IG5vdCB3b3Jr
IGNvcnJlY3RseSBpbiBhCittdWx0aS10aHJlYWRlZCBzZXR0aW5nLgorCitJZiB5b3UgdGhpbmsg
YWJvdXQgaXQsIGl0J3MgYWxyZWFkeSBoYXJkIHRvIG1ha2UgeW91ciBjb2RlIHdvcmsgd2hlbgor
eW91IGtub3cgd2hhdCBvdGhlciB0aHJlYWRzIGFyZSBkb2luZy4gIEl0J3MgbXVjaCBoYXJkZXIs
IGFuZAorc29tZXRpbWVzIGV2ZW4gaW1wb3NzaWJsZSwgdG8gbWFrZSB5b3VyIGNvZGUgd29yayB3
aGVuIHlvdSBkb24ndCBrbm93Cit3aGF0IG90aGVyIHRocmVhZHMgYXJlIGRvaW5nIChyZW1lbWJl
ciB0aGF0IHRlc3QgbWV0aG9kcyBjYW4gYmUgYWRkZWQsCitkZWxldGVkLCBvciBtb2RpZmllZCBh
ZnRlciB5b3VyIHRlc3Qgd2FzIHdyaXR0ZW4pLiAgSWYgeW91IHdhbnQgdG8gcnVuCit0aGUgdGVz
dHMgaW4gcGFyYWxsZWwsIHlvdSdkIGJldHRlciBydW4gdGhlbSBpbiBkaWZmZXJlbnQgcHJvY2Vz
c2VzLgorCisjIyBXaHkgYXJlbid0IEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW1wbGVtZW50ZWQg
dXNpbmcgZXhjZXB0aW9ucz8gIyMKKworT3VyIG9yaWdpbmFsIG1vdGl2YXRpb24gd2FzIHRvIGJl
IGFibGUgdG8gdXNlIEdvb2dsZSBUZXN0IGluIHByb2plY3RzCit0aGF0IGRpc2FibGUgZXhjZXB0
aW9ucy4gIExhdGVyIHdlIHJlYWxpemVkIHNvbWUgYWRkaXRpb25hbCBiZW5lZml0cworb2YgdGhp
cyBhcHByb2FjaDoKKworICAxLiBUaHJvd2luZyBpbiBhIGRlc3RydWN0b3IgaXMgdW5kZWZpbmVk
IGJlaGF2aW9yIGluIEMrKy4gIE5vdCB1c2luZyBleGNlcHRpb25zIG1lYW5zIEdvb2dsZSBUZXN0
J3MgYXNzZXJ0aW9ucyBhcmUgc2FmZSB0byB1c2UgaW4gZGVzdHJ1Y3RvcnMuCisgIDEuIFRoZSBg
RVhQRUNUXypgIGZhbWlseSBvZiBtYWNyb3Mgd2lsbCBjb250aW51ZSBldmVuIGFmdGVyIGEgZmFp
bHVyZSwgYWxsb3dpbmcgbXVsdGlwbGUgZmFpbHVyZXMgaW4gYSBgVEVTVGAgdG8gYmUgcmVwb3J0
ZWQgaW4gYSBzaW5nbGUgcnVuLiBUaGlzIGlzIGEgcG9wdWxhciBmZWF0dXJlLCBhcyBpbiBDKysg
dGhlIGVkaXQtY29tcGlsZS10ZXN0IGN5Y2xlIGlzIHVzdWFsbHkgcXVpdGUgbG9uZyBhbmQgYmVp
bmcgYWJsZSB0byBmaXhpbmcgbW9yZSB0aGFuIG9uZSB0aGluZyBhdCBhIHRpbWUgaXMgYSBibGVz
c2luZy4KKyAgMS4gSWYgYXNzZXJ0aW9ucyBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgZXhjZXB0aW9u
cywgYSB0ZXN0IG1heSBmYWxzZWx5IGlnbm9yZSBhIGZhaWx1cmUgaWYgaXQncyBjYXVnaHQgYnkg
dXNlciBjb2RlOgorYGBgCit0cnkgeyAuLi4gQVNTRVJUX1RSVUUoLi4uKSAuLi4gfQorY2F0Y2gg
KC4uLikgeyAuLi4gfQorYGBgCitUaGUgYWJvdmUgY29kZSB3aWxsIHBhc3MgZXZlbiBpZiB0aGUg
YEFTU0VSVF9UUlVFYCB0aHJvd3MuICBXaGlsZSBpdCdzIHVubGlrZWx5IGZvciBzb21lb25lIHRv
IHdyaXRlIHRoaXMgaW4gYSB0ZXN0LCBpdCdzIHBvc3NpYmxlIHRvIHJ1biBpbnRvIHRoaXMgcGF0
dGVybiB3aGVuIHlvdSB3cml0ZSBhc3NlcnRpb25zIGluIGNhbGxiYWNrcyB0aGF0IGFyZSBjYWxs
ZWQgYnkgdGhlIGNvZGUgdW5kZXIgdGVzdC4KKworVGhlIGRvd25zaWRlIG9mIG5vdCB1c2luZyBl
eGNlcHRpb25zIGlzIHRoYXQgYEFTU0VSVF8qYCAoaW1wbGVtZW50ZWQKK3VzaW5nIGByZXR1cm5g
KSB3aWxsIG9ubHkgYWJvcnQgdGhlIGN1cnJlbnQgZnVuY3Rpb24sIG5vdCB0aGUgY3VycmVudAor
YFRFU1RgLgorCisjIyBXaHkgZG8gd2UgdXNlIHR3byBkaWZmZXJlbnQgbWFjcm9zIGZvciB0ZXN0
cyB3aXRoIGFuZCB3aXRob3V0IGZpeHR1cmVzPyAjIworCitVbmZvcnR1bmF0ZWx5LCBDKysncyBt
YWNybyBzeXN0ZW0gZG9lc24ndCBhbGxvdyB1cyB0byB1c2UgdGhlIHNhbWUKK21hY3JvIGZvciBi
b3RoIGNhc2VzLiAgT25lIHBvc3NpYmlsaXR5IGlzIHRvIHByb3ZpZGUgb25seSBvbmUgbWFjcm8K
K2ZvciB0ZXN0cyB3aXRoIGZpeHR1cmVzLCBhbmQgcmVxdWlyZSB0aGUgdXNlciB0byBkZWZpbmUg
YW4gZW1wdHkKK2ZpeHR1cmUgc29tZXRpbWVzOgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCitURVNUX0YoRm9vVGVzdCwgRG9lc1RoaXMpIHsgLi4u
IH0KK2BgYAorb3IKK2BgYAordHlwZWRlZiA6OnRlc3Rpbmc6OlRlc3QgRm9vVGVzdDsKKworVEVT
VF9GKEZvb1Rlc3QsIERvZXNUaGF0KSB7IC4uLiB9CitgYGAKKworWWV0LCBtYW55IHBlb3BsZSB0
aGluayB0aGlzIGlzIG9uZSBsaW5lIHRvbyBtYW55LiA6LSkgT3VyIGdvYWwgd2FzIHRvCittYWtl
IGl0IHJlYWxseSBlYXN5IHRvIHdyaXRlIHRlc3RzLCBzbyB3ZSB0cmllZCB0byBtYWtlIHNpbXBs
ZSB0ZXN0cwordHJpdmlhbCB0byBjcmVhdGUuICBUaGF0IG1lYW5zIHVzaW5nIGEgc2VwYXJhdGUg
bWFjcm8gZm9yIHN1Y2ggdGVzdHMuCisKK1dlIHRoaW5rIG5laXRoZXIgYXBwcm9hY2ggaXMgaWRl
YWwsIHlldCBlaXRoZXIgb2YgdGhlbSBpcyByZWFzb25hYmxlLgorSW4gdGhlIGVuZCwgaXQgcHJv
YmFibHkgZG9lc24ndCBtYXR0ZXIgbXVjaCBlaXRoZXIgd2F5LgorCisjIyBXaHkgZG9uJ3Qgd2Ug
dXNlIHN0cnVjdHMgYXMgdGVzdCBmaXh0dXJlcz8gIyMKKworV2UgbGlrZSB0byB1c2Ugc3RydWN0
cyBvbmx5IHdoZW4gcmVwcmVzZW50aW5nIHBhc3NpdmUgZGF0YS4gIFRoaXMKK2Rpc3RpbmN0aW9u
IGJldHdlZW4gc3RydWN0cyBhbmQgY2xhc3NlcyBpcyBnb29kIGZvciBkb2N1bWVudGluZyB0aGUK
K2ludGVudCBvZiB0aGUgY29kZSdzIGF1dGhvci4gIFNpbmNlIHRlc3QgZml4dHVyZXMgaGF2ZSBs
b2dpYyBsaWtlCitgU2V0VXAoKWAgYW5kIGBUZWFyRG93bigpYCwgdGhleSBhcmUgYmV0dGVyIGRl
ZmluZWQgYXMgY2xhc3Nlcy4KKworIyMgV2h5IGFyZSBkZWF0aCB0ZXN0cyBpbXBsZW1lbnRlZCBh
cyBhc3NlcnRpb25zIGluc3RlYWQgb2YgdXNpbmcgYSB0ZXN0IHJ1bm5lcj8gIyMKKworT3VyIGdv
YWwgd2FzIHRvIG1ha2UgZGVhdGggdGVzdHMgYXMgY29udmVuaWVudCBmb3IgYSB1c2VyIGFzIEMr
KworcG9zc2libHkgYWxsb3dzLiAgSW4gcGFydGljdWxhcjoKKworICAqIFRoZSBydW5uZXItc3R5
bGUgcmVxdWlyZXMgdG8gc3BsaXQgdGhlIGluZm9ybWF0aW9uIGludG8gdHdvIHBpZWNlczogdGhl
IGRlZmluaXRpb24gb2YgdGhlIGRlYXRoIHRlc3QgaXRzZWxmLCBhbmQgdGhlIHNwZWNpZmljYXRp
b24gZm9yIHRoZSBydW5uZXIgb24gaG93IHRvIHJ1biB0aGUgZGVhdGggdGVzdCBhbmQgd2hhdCB0
byBleHBlY3QuICBUaGUgZGVhdGggdGVzdCB3b3VsZCBiZSB3cml0dGVuIGluIEMrKywgd2hpbGUg
dGhlIHJ1bm5lciBzcGVjIG1heSBvciBtYXkgbm90IGJlLiAgQSB1c2VyIG5lZWRzIHRvIGNhcmVm
dWxseSBrZWVwIHRoZSB0d28gaW4gc3luYy4gYEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIGV4cGVj
dGVkX21lc3NhZ2UpYCBzcGVjaWZpZXMgYWxsIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBpbiBvbmUg
cGxhY2UsIGluIG9uZSBsYW5ndWFnZSwgd2l0aG91dCBib2lsZXJwbGF0ZSBjb2RlLiBJdCBpcyB2
ZXJ5IGRlY2xhcmF0aXZlLgorICAqIGBBU1NFUlRfREVBVEhgIGhhcyBhIHNpbWlsYXIgc3ludGF4
IGFuZCBlcnJvci1yZXBvcnRpbmcgc2VtYW50aWNzIGFzIG90aGVyIEdvb2dsZSBUZXN0IGFzc2Vy
dGlvbnMsIGFuZCB0aHVzIGlzIGVhc3kgdG8gbGVhcm4uCisgICogYEFTU0VSVF9ERUFUSGAgY2Fu
IGJlIG1peGVkIHdpdGggb3RoZXIgYXNzZXJ0aW9ucyBhbmQgb3RoZXIgbG9naWMgYXQgeW91ciB3
aWxsLiAgWW91IGFyZSBub3QgbGltaXRlZCB0byBvbmUgZGVhdGggdGVzdCBwZXIgdGVzdCBtZXRo
b2QuIEZvciBleGFtcGxlLCB5b3UgY2FuIHdyaXRlIHNvbWV0aGluZyBsaWtlOgorYGBgCisgICAg
aWYgKEZvb0NvbmRpdGlvbigpKSB7CisgICAgICBBU1NFUlRfREVBVEgoQmFyKCksICJibGFoIik7
CisgICAgfSBlbHNlIHsKKyAgICAgIEFTU0VSVF9FUSg1LCBCYXIoKSk7CisgICAgfQorYGBgCitJ
ZiB5b3UgcHJlZmVyIG9uZSBkZWF0aCB0ZXN0IHBlciB0ZXN0IG1ldGhvZCwgeW91IGNhbiB3cml0
ZSB5b3VyIHRlc3RzIGluIHRoYXQgc3R5bGUgdG9vLCBidXQgd2UgZG9uJ3Qgd2FudCB0byBpbXBv
c2UgdGhhdCBvbiB0aGUgdXNlcnMuICBUaGUgZmV3ZXIgYXJ0aWZpY2lhbCBsaW1pdGF0aW9ucyB0
aGUgYmV0dGVyLgorICAqIGBBU1NFUlRfREVBVEhgIGNhbiByZWZlcmVuY2UgbG9jYWwgdmFyaWFi
bGVzIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uLCBhbmQgeW91IGNhbiBkZWNpZGUgaG93IG1hbnkg
ZGVhdGggdGVzdHMgeW91IHdhbnQgYmFzZWQgb24gcnVuLXRpbWUgaW5mb3JtYXRpb24uICBGb3Ig
ZXhhbXBsZSwKK2BgYAorICAgIGNvbnN0IGludCBjb3VudCA9IEdldENvdW50KCk7ICAvLyBPbmx5
IGtub3duIGF0IHJ1biB0aW1lLgorICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGNvdW50OyBpKysp
IHsKKyAgICAgIEFTU0VSVF9ERUFUSCh7CisgICAgICAgIGRvdWJsZSogYnVmZmVyID0gbmV3IGRv
dWJsZVtpXTsKKyAgICAgICAgLi4uIGluaXRpYWxpemVzIGJ1ZmZlciAuLi4KKyAgICAgICAgRm9v
KGJ1ZmZlciwgaSkKKyAgICAgIH0sICJibGFoIGJsYWgiKTsKKyAgICB9CitgYGAKK1RoZSBydW5u
ZXItYmFzZWQgYXBwcm9hY2ggdGVuZHMgdG8gYmUgbW9yZSBzdGF0aWMgYW5kIGxlc3MgZmxleGli
bGUsIG9yIHJlcXVpcmVzIG1vcmUgdXNlciBlZmZvcnQgdG8gZ2V0IHRoaXMga2luZCBvZiBmbGV4
aWJpbGl0eS4KKworQW5vdGhlciBpbnRlcmVzdGluZyB0aGluZyBhYm91dCBgQVNTRVJUX0RFQVRI
YCBpcyB0aGF0IGl0IGNhbGxzIGBmb3JrKClgCit0byBjcmVhdGUgYSBjaGlsZCBwcm9jZXNzIHRv
IHJ1biB0aGUgZGVhdGggdGVzdC4gIFRoaXMgaXMgbGlnaHRlbmluZworZmFzdCwgYXMgYGZvcmso
KWAgdXNlcyBjb3B5LW9uLXdyaXRlIHBhZ2VzIGFuZCBpbmN1cnMgYWxtb3N0IHplcm8KK292ZXJo
ZWFkLCBhbmQgdGhlIGNoaWxkIHByb2Nlc3Mgc3RhcnRzIGZyb20gdGhlIHVzZXItc3VwcGxpZWQK
K3N0YXRlbWVudCBkaXJlY3RseSwgc2tpcHBpbmcgYWxsIGdsb2JhbCBhbmQgbG9jYWwgaW5pdGlh
bGl6YXRpb24gYW5kCithbnkgY29kZSBsZWFkaW5nIHRvIHRoZSBnaXZlbiBzdGF0ZW1lbnQuICBJ
ZiB5b3UgbGF1bmNoIHRoZSBjaGlsZAorcHJvY2VzcyBmcm9tIHNjcmF0Y2gsIGl0IGNhbiB0YWtl
IHNlY29uZHMganVzdCB0byBsb2FkIGV2ZXJ5dGhpbmcgYW5kCitzdGFydCBydW5uaW5nIGlmIHRo
ZSB0ZXN0IGxpbmtzIHRvIG1hbnkgbGlicmFyaWVzIGR5bmFtaWNhbGx5LgorCisjIyBNeSBkZWF0
aCB0ZXN0IG1vZGlmaWVzIHNvbWUgc3RhdGUsIGJ1dCB0aGUgY2hhbmdlIHNlZW1zIGxvc3QgYWZ0
ZXIgdGhlIGRlYXRoIHRlc3QgZmluaXNoZXMuIFdoeT8gIyMKKworRGVhdGggdGVzdHMgKGBFWFBF
Q1RfREVBVEhgLCBldGMpIGFyZSBleGVjdXRlZCBpbiBhIHN1Yi1wcm9jZXNzIHMudC4gdGhlCitl
eHBlY3RlZCBjcmFzaCB3b24ndCBraWxsIHRoZSB0ZXN0IHByb2dyYW0gKGkuZS4gdGhlIHBhcmVu
dCBwcm9jZXNzKS4gQXMgYQorcmVzdWx0LCBhbnkgaW4tbWVtb3J5IHNpZGUgZWZmZWN0cyB0aGV5
IGluY3VyIGFyZSBvYnNlcnZhYmxlIGluIHRoZWlyCityZXNwZWN0aXZlIHN1Yi1wcm9jZXNzZXMs
IGJ1dCBub3QgaW4gdGhlIHBhcmVudCBwcm9jZXNzLiBZb3UgY2FuIHRoaW5rIG9mIHRoZW0KK2Fz
IHJ1bm5pbmcgaW4gYSBwYXJhbGxlbCB1bml2ZXJzZSwgbW9yZSBvciBsZXNzLgorCisjIyBUaGUg
Y29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJ1bmRlZmluZWQgcmVmZXJlbmNlcyIgdG8gc29tZSBz
dGF0aWMgY29uc3QgbWVtYmVyIHZhcmlhYmxlcywgYnV0IEkgZGlkIGRlZmluZSB0aGVtIGluIHRo
ZSBjbGFzcyBib2R5LiBXaGF0J3Mgd3Jvbmc/ICMjCisKK0lmIHlvdXIgY2xhc3MgaGFzIGEgc3Rh
dGljIGRhdGEgbWVtYmVyOgorCitgYGAKKy8vIGZvby5oCitjbGFzcyBGb28geworICAuLi4KKyAg
c3RhdGljIGNvbnN0IGludCBrQmFyID0gMTAwOworfTsKK2BgYAorCitZb3UgYWxzbyBuZWVkIHRv
IGRlZmluZSBpdCBfb3V0c2lkZV8gb2YgdGhlIGNsYXNzIGJvZHkgaW4gYGZvby5jY2A6CisKK2Bg
YAorY29uc3QgaW50IEZvbzo6a0JhcjsgIC8vIE5vIGluaXRpYWxpemVyIGhlcmUuCitgYGAKKwor
T3RoZXJ3aXNlIHlvdXIgY29kZSBpcyAqKmludmFsaWQgQysrKiosIGFuZCBtYXkgYnJlYWsgaW4g
dW5leHBlY3RlZCB3YXlzLiBJbgorcGFydGljdWxhciwgdXNpbmcgaXQgaW4gR29vZ2xlIFRlc3Qg
Y29tcGFyaXNvbiBhc3NlcnRpb25zIChgRVhQRUNUX0VRYCwgZXRjKQord2lsbCBnZW5lcmF0ZSBh
biAidW5kZWZpbmVkIHJlZmVyZW5jZSIgbGlua2VyIGVycm9yLgorCisjIyBJIGhhdmUgYW4gaW50
ZXJmYWNlIHRoYXQgaGFzIHNldmVyYWwgaW1wbGVtZW50YXRpb25zLiBDYW4gSSB3cml0ZSBhIHNl
dCBvZiB0ZXN0cyBvbmNlIGFuZCByZXBlYXQgdGhlbSBvdmVyIGFsbCB0aGUgaW1wbGVtZW50YXRp
b25zPyAjIworCitHb29nbGUgVGVzdCBkb2Vzbid0IHlldCBoYXZlIGdvb2Qgc3VwcG9ydCBmb3Ig
dGhpcyBraW5kIG9mIHRlc3RzLCBvcgorZGF0YS1kcml2ZW4gdGVzdHMgaW4gZ2VuZXJhbC4gV2Ug
aG9wZSB0byBiZSBhYmxlIHRvIG1ha2UgaW1wcm92ZW1lbnRzIGluIHRoaXMKK2FyZWEgc29vbi4K
KworIyMgQ2FuIEkgZGVyaXZlIGEgdGVzdCBmaXh0dXJlIGZyb20gYW5vdGhlcj8gIyMKKworWWVz
LgorCitFYWNoIHRlc3QgZml4dHVyZSBoYXMgYSBjb3JyZXNwb25kaW5nIGFuZCBzYW1lIG5hbWVk
IHRlc3QgY2FzZS4gVGhpcyBtZWFucyBvbmx5CitvbmUgdGVzdCBjYXNlIGNhbiB1c2UgYSBwYXJ0
aWN1bGFyIGZpeHR1cmUuIFNvbWV0aW1lcywgaG93ZXZlciwgbXVsdGlwbGUgdGVzdAorY2FzZXMg
bWF5IHdhbnQgdG8gdXNlIHRoZSBzYW1lIG9yIHNsaWdodGx5IGRpZmZlcmVudCBmaXh0dXJlcy4g
Rm9yIGV4YW1wbGUsIHlvdQorbWF5IHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIG9mIGEgR1VJ
IGxpYnJhcnkncyB0ZXN0IGNhc2VzIGRvbid0IGxlYWsKK2ltcG9ydGFudCBzeXN0ZW0gcmVzb3Vy
Y2VzIGxpa2UgZm9udHMgYW5kIGJydXNoZXMuCisKK0luIEdvb2dsZSBUZXN0LCB5b3Ugc2hhcmUg
YSBmaXh0dXJlIGFtb25nIHRlc3QgY2FzZXMgYnkgcHV0dGluZyB0aGUgc2hhcmVkCitsb2dpYyBp
biBhIGJhc2UgdGVzdCBmaXh0dXJlLCB0aGVuIGRlcml2aW5nIGZyb20gdGhhdCBiYXNlIGEgc2Vw
YXJhdGUgZml4dHVyZQorZm9yIGVhY2ggdGVzdCBjYXNlIHRoYXQgd2FudHMgdG8gdXNlIHRoaXMg
Y29tbW9uIGxvZ2ljLiBZb3UgdGhlbiB1c2UgYFRFU1RfRigpYAordG8gd3JpdGUgdGVzdHMgdXNp
bmcgZWFjaCBkZXJpdmVkIGZpeHR1cmUuCisKK1R5cGljYWxseSwgeW91ciBjb2RlIGxvb2tzIGxp
a2UgdGhpczoKKworYGBgCisvLyBEZWZpbmVzIGEgYmFzZSB0ZXN0IGZpeHR1cmUuCitjbGFzcyBC
YXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICBwcm90ZWN0ZWQ6CisgICAuLi4K
K307CisKKy8vIERlcml2ZXMgYSBmaXh0dXJlIEZvb1Rlc3QgZnJvbSBCYXNlVGVzdC4KK2NsYXNz
IEZvb1Rlc3QgOiBwdWJsaWMgQmFzZVRlc3QgeworICBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2
b2lkIFNldFVwKCkgeworICAgICAgQmFzZVRlc3Q6OlNldFVwKCk7ICAvLyBTZXRzIHVwIHRoZSBi
YXNlIGZpeHR1cmUgZmlyc3QuCisgICAgICAuLi4gYWRkaXRpb25hbCBzZXQtdXAgd29yayAuLi4K
KyAgICB9CisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgICAgLi4uIGNsZWFuLXVw
IHdvcmsgZm9yIEZvb1Rlc3QgLi4uCisgICAgICBCYXNlVGVzdDo6VGVhckRvd24oKTsgIC8vIFJl
bWVtYmVyIHRvIHRlYXIgZG93biB0aGUgYmFzZSBmaXh0dXJlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGFmdGVyIGNsZWFuaW5nIHVwIEZvb1Rlc3QhCisgICAgfQorICAgIC4uLiBm
dW5jdGlvbnMgYW5kIHZhcmlhYmxlcyBmb3IgRm9vVGVzdCAuLi4KK307CisKKy8vIFRlc3RzIHRo
YXQgdXNlIHRoZSBmaXh0dXJlIEZvb1Rlc3QuCitURVNUX0YoRm9vVGVzdCwgQmFyKSB7IC4uLiB9
CitURVNUX0YoRm9vVGVzdCwgQmF6KSB7IC4uLiB9CisKKy4uLiBhZGRpdGlvbmFsIGZpeHR1cmVz
IGRlcml2ZWQgZnJvbSBCYXNlVGVzdCAuLi4KK2BgYAorCitJZiBuZWNlc3NhcnksIHlvdSBjYW4g
Y29udGludWUgdG8gZGVyaXZlIHRlc3QgZml4dHVyZXMgZnJvbSBhIGRlcml2ZWQgZml4dHVyZS4K
K0dvb2dsZSBUZXN0IGhhcyBubyBsaW1pdCBvbiBob3cgZGVlcCB0aGUgaGllcmFyY2h5IGNhbiBi
ZS4KKworRm9yIGEgY29tcGxldGUgZXhhbXBsZSB1c2luZyBkZXJpdmVkIHRlc3QgZml4dHVyZXMs
IHNlZQorW3NhbXBsZTVdKC4uL3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYykuCisKKyMjIE15
IGNvbXBpbGVyIGNvbXBsYWlucyAidm9pZCB2YWx1ZSBub3QgaWdub3JlZCBhcyBpdCBvdWdodCB0
byBiZS4iIFdoYXQgZG9lcyB0aGlzIG1lYW4/ICMjCisKK1lvdSdyZSBwcm9iYWJseSB1c2luZyBh
biBgQVNTRVJUXyooKWAgaW4gYSBmdW5jdGlvbiB0aGF0IGRvZXNuJ3QgcmV0dXJuIGB2b2lkYC4K
K2BBU1NFUlRfKigpYCBjYW4gb25seSBiZSB1c2VkIGluIGB2b2lkYCBmdW5jdGlvbnMuCisKKyMj
IE15IGRlYXRoIHRlc3QgaGFuZ3MgKG9yIHNlZy1mYXVsdHMpLiBIb3cgZG8gSSBmaXggaXQ/ICMj
CisKK0luIEdvb2dsZSBUZXN0LCBkZWF0aCB0ZXN0cyBhcmUgcnVuIGluIGEgY2hpbGQgcHJvY2Vz
cyBhbmQgdGhlIHdheSB0aGV5IHdvcmsgaXMKK2RlbGljYXRlLiBUbyB3cml0ZSBkZWF0aCB0ZXN0
cyB5b3UgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhleSB3b3JrLgorUGxlYXNlIG1h
a2Ugc3VyZSB5b3UgaGF2ZSByZWFkIHRoaXMuCisKK0luIHBhcnRpY3VsYXIsIGRlYXRoIHRlc3Rz
IGRvbid0IGxpa2UgaGF2aW5nIG11bHRpcGxlIHRocmVhZHMgaW4gdGhlIHBhcmVudAorcHJvY2Vz
cy4gU28gdGhlIGZpcnN0IHRoaW5nIHlvdSBjYW4gdHJ5IGlzIHRvIGVsaW1pbmF0ZSBjcmVhdGlu
ZyB0aHJlYWRzCitvdXRzaWRlIG9mIGBFWFBFQ1RfREVBVEgoKWAuCisKK1NvbWV0aW1lcyB0aGlz
IGlzIGltcG9zc2libGUgYXMgc29tZSBsaWJyYXJ5IHlvdSBtdXN0IHVzZSBtYXkgYmUgY3JlYXRp
bmcKK3RocmVhZHMgYmVmb3JlIGBtYWluKClgIGlzIGV2ZW4gcmVhY2hlZC4gSW4gdGhpcyBjYXNl
LCB5b3UgY2FuIHRyeSB0byBtaW5pbWl6ZQordGhlIGNoYW5jZSBvZiBjb25mbGljdHMgYnkgZWl0
aGVyIG1vdmluZyBhcyBtYW55IGFjdGl2aXRpZXMgYXMgcG9zc2libGUgaW5zaWRlCitgRVhQRUNU
X0RFQVRIKClgIChpbiB0aGUgZXh0cmVtZSBjYXNlLCB5b3Ugd2FudCB0byBtb3ZlIGV2ZXJ5dGhp
bmcgaW5zaWRlKSwgb3IKK2xlYXZpbmcgYXMgZmV3IHRoaW5ncyBhcyBwb3NzaWJsZSBpbiBpdC4g
QWxzbywgeW91IGNhbiB0cnkgdG8gc2V0IHRoZSBkZWF0aAordGVzdCBzdHlsZSB0byBgInRocmVh
ZHNhZmUiYCwgd2hpY2ggaXMgc2FmZXIgYnV0IHNsb3dlciwgYW5kIHNlZSBpZiBpdCBoZWxwcy4K
KworSWYgeW91IGdvIHdpdGggdGhyZWFkLXNhZmUgZGVhdGggdGVzdHMsIHJlbWVtYmVyIHRoYXQg
dGhleSByZXJ1biB0aGUgdGVzdAorcHJvZ3JhbSBmcm9tIHRoZSBiZWdpbm5pbmcgaW4gdGhlIGNo
aWxkIHByb2Nlc3MuIFRoZXJlZm9yZSBtYWtlIHN1cmUgeW91cgorcHJvZ3JhbSBjYW4gcnVuIHNp
ZGUtYnktc2lkZSB3aXRoIGl0c2VsZiBhbmQgaXMgZGV0ZXJtaW5pc3RpYy4KKworSW4gdGhlIGVu
ZCwgdGhpcyBib2lscyBkb3duIHRvIGdvb2QgY29uY3VycmVudCBwcm9ncmFtbWluZy4gWW91IGhh
dmUgdG8gbWFrZQorc3VyZSB0aGF0IHRoZXJlIGlzIG5vIHJhY2UgY29uZGl0aW9ucyBvciBkZWFk
IGxvY2tzIGluIHlvdXIgcHJvZ3JhbS4gTm8gc2lsdmVyCitidWxsZXQgLSBzb3JyeSEKKworIyMg
U2hvdWxkIEkgdXNlIHRoZSBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIG9mIHRoZSB0ZXN0IGZpeHR1
cmUgb3IgdGhlIHNldC11cC90ZWFyLWRvd24gZnVuY3Rpb24/ICMjCisKK1RoZSBmaXJzdCB0aGlu
ZyB0byByZW1lbWJlciBpcyB0aGF0IEdvb2dsZSBUZXN0IGRvZXMgbm90IHJldXNlIHRoZQorc2Ft
ZSB0ZXN0IGZpeHR1cmUgb2JqZWN0IGFjcm9zcyBtdWx0aXBsZSB0ZXN0cy4gRm9yIGVhY2ggYFRF
U1RfRmAsCitHb29nbGUgVGVzdCB3aWxsIGNyZWF0ZSBhIGZyZXNoIHRlc3QgZml4dHVyZSBvYmpl
Y3QsIF9pbW1lZGlhdGVseV8KK2NhbGwgYFNldFVwKClgLCBydW4gdGhlIHRlc3QsIGNhbGwgYFRl
YXJEb3duKClgLCBhbmQgdGhlbgorX2ltbWVkaWF0ZWx5XyBkZWxldGUgdGhlIHRlc3QgZml4dHVy
ZSBvYmplY3QuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8KK25lZWQgdG8gd3JpdGUgYSBgU2V0VXAo
KWAgb3IgYFRlYXJEb3duKClgIGZ1bmN0aW9uIGlmIHRoZSBjb25zdHJ1Y3Rvcgorb3IgZGVzdHJ1
Y3RvciBhbHJlYWR5IGRvZXMgdGhlIGpvYi4KKworWW91IG1heSBzdGlsbCB3YW50IHRvIHVzZSBg
U2V0VXAoKS9UZWFyRG93bigpYCBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOgorICAqIElmIHRoZSB0
ZWFyLWRvd24gb3BlcmF0aW9uIGNvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiwgeW91IG11c3QgdXNl
IGBUZWFyRG93bigpYCBhcyBvcHBvc2VkIHRvIHRoZSBkZXN0cnVjdG9yLCBhcyB0aHJvd2luZyBp
biBhIGRlc3RydWN0b3IgbGVhZHMgdG8gdW5kZWZpbmVkIGJlaGF2aW9yIGFuZCB1c3VhbGx5IHdp
bGwga2lsbCB5b3VyIHByb2dyYW0gcmlnaHQgYXdheS4gTm90ZSB0aGF0IG1hbnkgc3RhbmRhcmQg
bGlicmFyaWVzIChsaWtlIFNUTCkgbWF5IHRocm93IHdoZW4gZXhjZXB0aW9ucyBhcmUgZW5hYmxl
ZCBpbiB0aGUgY29tcGlsZXIuIFRoZXJlZm9yZSB5b3Ugc2hvdWxkIHByZWZlciBgVGVhckRvd24o
KWAgaWYgeW91IHdhbnQgdG8gd3JpdGUgcG9ydGFibGUgdGVzdHMgdGhhdCB3b3JrIHdpdGggb3Ig
d2l0aG91dCBleGNlcHRpb25zLgorICAqIFRoZSBHb29nbGUgVGVzdCB0ZWFtIGlzIGNvbnNpZGVy
aW5nIG1ha2luZyB0aGUgYXNzZXJ0aW9uIG1hY3JvcyB0aHJvdyBvbiBwbGF0Zm9ybXMgd2hlcmUg
ZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCAoZS5nLiBXaW5kb3dzLCBNYWMgT1MsIGFuZCBMaW51eCBj
bGllbnQtc2lkZSksIHdoaWNoIHdpbGwgZWxpbWluYXRlIHRoZSBuZWVkIGZvciB0aGUgdXNlciB0
byBwcm9wYWdhdGUgZmFpbHVyZXMgZnJvbSBhIHN1YnJvdXRpbmUgdG8gaXRzIGNhbGxlci4gVGhl
cmVmb3JlLCB5b3Ugc2hvdWxkbid0IHVzZSBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGluIGEgZGVz
dHJ1Y3RvciBpZiB5b3VyIGNvZGUgY291bGQgcnVuIG9uIHN1Y2ggYSBwbGF0Zm9ybS4KKyAgKiBJ
biBhIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IsIHlvdSBjYW5ub3QgbWFrZSBhIHZpcnR1YWwg
ZnVuY3Rpb24gY2FsbCBvbiB0aGlzIG9iamVjdC4gKFlvdSBjYW4gY2FsbCBhIG1ldGhvZCBkZWNs
YXJlZCBhcyB2aXJ0dWFsLCBidXQgaXQgd2lsbCBiZSBzdGF0aWNhbGx5IGJvdW5kLikgVGhlcmVm
b3JlLCBpZiB5b3UgbmVlZCB0byBjYWxsIGEgbWV0aG9kIHRoYXQgd2lsbCBiZSBvdmVycmlkZW4g
aW4gYSBkZXJpdmVkIGNsYXNzLCB5b3UgaGF2ZSB0byB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAu
CisKKyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgIm5vIG1hdGNoaW5nIGZ1bmN0aW9uIHRvIGNh
bGwiIHdoZW4gSSB1c2UgQVNTRVJUXF9QUkVEbi4gSG93IGRvIEkgZml4IGl0PyAjIworCitJZiB0
aGUgcHJlZGljYXRlIGZ1bmN0aW9uIHlvdSB1c2UgaW4gYEFTU0VSVF9QUkVEKmAgb3IgYEVYUEVD
VF9QUkVEKmAgaXMKK292ZXJsb2FkZWQgb3IgYSB0ZW1wbGF0ZSwgdGhlIGNvbXBpbGVyIHdpbGwg
aGF2ZSB0cm91YmxlIGZpZ3VyaW5nIG91dCB3aGljaAorb3ZlcmxvYWRlZCB2ZXJzaW9uIGl0IHNo
b3VsZCB1c2UuIGBBU1NFUlRfUFJFRF9GT1JNQVQqYCBhbmQKK2BFWFBFQ1RfUFJFRF9GT1JNQVQq
YCBkb24ndCBoYXZlIHRoaXMgcHJvYmxlbS4KKworSWYgeW91IHNlZSB0aGlzIGVycm9yLCB5b3Ug
bWlnaHQgd2FudCB0byBzd2l0Y2ggdG8KK2AoQVNTRVJUfEVYUEVDVClfUFJFRF9GT1JNQVQqYCwg
d2hpY2ggd2lsbCBhbHNvIGdpdmUgeW91IGEgYmV0dGVyIGZhaWx1cmUKK21lc3NhZ2UuIElmLCBo
b3dldmVyLCB0aGF0IGlzIG5vdCBhbiBvcHRpb24sIHlvdSBjYW4gcmVzb2x2ZSB0aGUgcHJvYmxl
bSBieQorZXhwbGljaXRseSB0ZWxsaW5nIHRoZSBjb21waWxlciB3aGljaCB2ZXJzaW9uIHRvIHBp
Y2suCisKK0ZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYXZlCisKK2BgYAorYm9vbCBJc1Bvc2l0
aXZlKGludCBuKSB7CisgIHJldHVybiBuID4gMDsKK30KK2Jvb2wgSXNQb3NpdGl2ZShkb3VibGUg
eCkgeworICByZXR1cm4geCA+IDA7Cit9CitgYGAKKworeW91IHdpbGwgZ2V0IGEgY29tcGlsZXIg
ZXJyb3IgaWYgeW91IHdyaXRlCisKK2BgYAorRVhQRUNUX1BSRUQxKElzUG9zaXRpdmUsIDUpOwor
YGBgCisKK0hvd2V2ZXIsIHRoaXMgd2lsbCB3b3JrOgorCitgYGAKK0VYUEVDVF9QUkVEMSgqc3Rh
dGljX2Nhc3Q8Ym9vbCAoKikoaW50KT4qKElzUG9zaXRpdmUpLCA1KTsKK2BgYAorCisoVGhlIHN0
dWZmIGluc2lkZSB0aGUgYW5nbGVkIGJyYWNrZXRzIGZvciB0aGUgYHN0YXRpY19jYXN0YCBvcGVy
YXRvciBpcyB0aGUKK3R5cGUgb2YgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgZm9yIHRoZSBgaW50YC12
ZXJzaW9uIG9mIGBJc1Bvc2l0aXZlKClgLikKKworQXMgYW5vdGhlciBleGFtcGxlLCB3aGVuIHlv
dSBoYXZlIGEgdGVtcGxhdGUgZnVuY3Rpb24KKworYGBgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2Jvb2wgSXNOZWdhdGl2ZShUIHgpIHsKKyAgcmV0dXJuIHggPCAwOworfQorYGBgCisKK3lvdSBj
YW4gdXNlIGl0IGluIGEgcHJlZGljYXRlIGFzc2VydGlvbiBsaWtlIHRoaXM6CisKK2BgYAorQVNT
RVJUX1BSRUQxKElzTmVnYXRpdmUqPGludD4qLCAtNSk7CitgYGAKKworVGhpbmdzIGFyZSBtb3Jl
IGludGVyZXN0aW5nIGlmIHlvdXIgdGVtcGxhdGUgaGFzIG1vcmUgdGhhbiBvbmUgcGFyYW1ldGVy
cy4gVGhlCitmb2xsb3dpbmcgd29uJ3QgY29tcGlsZToKKworYGBgCitBU1NFUlRfUFJFRDIoKkdy
ZWF0ZXJUaGFuPGludCwgaW50PiosIDUsIDApOworYGBgCisKKworYXMgdGhlIEMrKyBwcmUtcHJv
Y2Vzc29yIHRoaW5rcyB5b3UgYXJlIGdpdmluZyBgQVNTRVJUX1BSRUQyYCA0IGFyZ3VtZW50cywK
K3doaWNoIGlzIG9uZSBtb3JlIHRoYW4gZXhwZWN0ZWQuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIHdy
YXAgdGhlIHByZWRpY2F0ZQorZnVuY3Rpb24gaW4gcGFyZW50aGVzZXM6CisKK2BgYAorQVNTRVJU
X1BSRUQyKCooR3JlYXRlclRoYW48aW50LCBpbnQ+KSosIDUsIDApOworYGBgCisKKworIyMgTXkg
Y29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJpZ25vcmluZyByZXR1cm4gdmFsdWUiIHdoZW4gSSBj
YWxsIFJVTlxfQUxMXF9URVNUUygpLiBXaHk/ICMjCisKK1NvbWUgcGVvcGxlIGhhZCBiZWVuIGln
bm9yaW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAuIFRoYXQgaXMsCitp
bnN0ZWFkIG9mCisKK2BgYAorcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK2BgYAorCit0aGV5IHdy
aXRlCisKK2BgYAorUlVOX0FMTF9URVNUUygpOworYGBgCisKK1RoaXMgaXMgd3JvbmcgYW5kIGRh
bmdlcm91cy4gQSB0ZXN0IHJ1bm5lciBuZWVkcyB0byBzZWUgdGhlIHJldHVybiB2YWx1ZSBvZgor
YFJVTl9BTExfVEVTVFMoKWAgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGlmIGEgdGVzdCBoYXMgcGFz
c2VkLiBJZiB5b3VyIGBtYWluKClgCitmdW5jdGlvbiBpZ25vcmVzIGl0LCB5b3VyIHRlc3Qgd2ls
bCBiZSBjb25zaWRlcmVkIHN1Y2Nlc3NmdWwgZXZlbiBpZiBpdCBoYXMgYQorR29vZ2xlIFRlc3Qg
YXNzZXJ0aW9uIGZhaWx1cmUuIFZlcnkgYmFkLgorCitUbyBoZWxwIHRoZSB1c2VycyBhdm9pZCB0
aGlzIGRhbmdlcm91cyBidWcsIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgorYFJVTl9BTExfVEVTVFMo
KWAgY2F1c2VzIGdjYyB0byByYWlzZSB0aGlzIHdhcm5pbmcsIHdoZW4gdGhlIHJldHVybiB2YWx1
ZSBpcworaWdub3JlZC4gSWYgeW91IHNlZSB0aGlzIHdhcm5pbmcsIHRoZSBmaXggaXMgc2ltcGxl
OiBqdXN0IG1ha2Ugc3VyZSBpdHMgdmFsdWUKK2lzIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZSBv
ZiBgbWFpbigpYC4KKworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5zIHRoYXQgYSBjb25zdHJ1Y3Rv
ciAob3IgZGVzdHJ1Y3RvcikgY2Fubm90IHJldHVybiBhIHZhbHVlLiBXaGF0J3MgZ29pbmcgb24/
ICMjCisKK0R1ZSB0byBhIHBlY3VsaWFyaXR5IG9mIEMrKywgaW4gb3JkZXIgdG8gc3VwcG9ydCB0
aGUgc3ludGF4IGZvciBzdHJlYW1pbmcKK21lc3NhZ2VzIHRvIGFuIGBBU1NFUlRfKmAsIGUuZy4K
KworYGBgCitBU1NFUlRfRVEoMSwgRm9vKCkpIDw8ICJibGFoIGJsYWgiIDw8IGZvbzsKK2BgYAor
Cit3ZSBoYWQgdG8gZ2l2ZSB1cCB1c2luZyBgQVNTRVJUKmAgYW5kIGBGQUlMKmAgKGJ1dCBub3Qg
YEVYUEVDVCpgIGFuZAorYEFERF9GQUlMVVJFKmApIGluIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1
Y3RvcnMuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIG1vdmUgdGhlCitjb250ZW50IG9mIHlvdXIgY29u
c3RydWN0b3IvZGVzdHJ1Y3RvciB0byBhIHByaXZhdGUgdm9pZCBtZW1iZXIgZnVuY3Rpb24sIG9y
Citzd2l0Y2ggdG8gYEVYUEVDVF8qKClgIGlmIHRoYXQgd29ya3MuIFRoaXMgc2VjdGlvbiBpbiB0
aGUgdXNlcidzIGd1aWRlIGV4cGxhaW5zCitpdC4KKworIyMgTXkgc2V0LXVwIGZ1bmN0aW9uIGlz
IG5vdCBjYWxsZWQuIFdoeT8gIyMKKworQysrIGlzIGNhc2Utc2Vuc2l0aXZlLiBJdCBzaG91bGQg
YmUgc3BlbGxlZCBhcyBgU2V0VXAoKWAuICBEaWQgeW91CitzcGVsbCBpdCBhcyBgU2V0dXAoKWA/
CisKK1NpbWlsYXJseSwgc29tZXRpbWVzIHBlb3BsZSBzcGVsbCBgU2V0VXBUZXN0Q2FzZSgpYCBh
cyBgU2V0dXBUZXN0Q2FzZSgpYCBhbmQKK3dvbmRlciB3aHkgaXQncyBuZXZlciBjYWxsZWQuCisK
KyMjIEhvdyBkbyBJIGp1bXAgdG8gdGhlIGxpbmUgb2YgYSBmYWlsdXJlIGluIEVtYWNzIGRpcmVj
dGx5PyAjIworCitHb29nbGUgVGVzdCdzIGZhaWx1cmUgbWVzc2FnZSBmb3JtYXQgaXMgdW5kZXJz
dG9vZCBieSBFbWFjcyBhbmQgbWFueSBvdGhlcgorSURFcywgbGlrZSBhY21lIGFuZCBYQ29kZS4g
SWYgYSBHb29nbGUgVGVzdCBtZXNzYWdlIGlzIGluIGEgY29tcGlsYXRpb24gYnVmZmVyCitpbiBF
bWFjcywgdGhlbiBpdCdzIGNsaWNrYWJsZS4gWW91IGNhbiBub3cgaGl0IGBlbnRlcmAgb24gYSBt
ZXNzYWdlIHRvIGp1bXAgdG8KK3RoZSBjb3JyZXNwb25kaW5nIHNvdXJjZSBjb2RlLCBvciB1c2Ug
YEMteCBgYCB0byBqdW1wIHRvIHRoZSBuZXh0IGZhaWx1cmUuCisKKyMjIEkgaGF2ZSBzZXZlcmFs
IHRlc3QgY2FzZXMgd2hpY2ggc2hhcmUgdGhlIHNhbWUgdGVzdCBmaXh0dXJlIGxvZ2ljLCBkbyBJ
IGhhdmUgdG8gZGVmaW5lIGEgbmV3IHRlc3QgZml4dHVyZSBjbGFzcyBmb3IgZWFjaCBvZiB0aGVt
PyBUaGlzIHNlZW1zIHByZXR0eSB0ZWRpb3VzLiAjIworCitZb3UgZG9uJ3QgaGF2ZSB0by4gSW5z
dGVhZCBvZgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgQmFzZVRlc3Qge307CisKK1RF
U1RfRihGb29UZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0K
KworY2xhc3MgQmFyVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCB7fTsKKworVEVTVF9GKEJhclRlc3Qs
IEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIERlZikgeyAuLi4gfQorYGBgCisKK3lvdSBj
YW4gc2ltcGx5IGB0eXBlZGVmYCB0aGUgdGVzdCBmaXh0dXJlczoKK2BgYAordHlwZWRlZiBCYXNl
VGVzdCBGb29UZXN0OworCitURVNUX0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0YoRm9v
VGVzdCwgRGVmKSB7IC4uLiB9CisKK3R5cGVkZWYgQmFzZVRlc3QgQmFyVGVzdDsKKworVEVTVF9G
KEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIERlZikgeyAuLi4gfQorYGBg
CisKKyMjIFRoZSBHb29nbGUgVGVzdCBvdXRwdXQgaXMgYnVyaWVkIGluIGEgd2hvbGUgYnVuY2gg
b2YgbG9nIG1lc3NhZ2VzLiBXaGF0IGRvIEkgZG8/ICMjCisKK1RoZSBHb29nbGUgVGVzdCBvdXRw
dXQgaXMgbWVhbnQgdG8gYmUgYSBjb25jaXNlIGFuZCBodW1hbi1mcmllbmRseSByZXBvcnQuIElm
Cit5b3VyIHRlc3QgZ2VuZXJhdGVzIHRleHR1YWwgb3V0cHV0IGl0c2VsZiwgaXQgd2lsbCBtaXgg
d2l0aCB0aGUgR29vZ2xlIFRlc3QKK291dHB1dCwgbWFraW5nIGl0IGhhcmQgdG8gcmVhZC4gSG93
ZXZlciwgdGhlcmUgaXMgYW4gZWFzeSBzb2x1dGlvbiB0byB0aGlzCitwcm9ibGVtLgorCitTaW5j
ZSBtb3N0IGxvZyBtZXNzYWdlcyBnbyB0byBzdGRlcnIsIHdlIGRlY2lkZWQgdG8gbGV0IEdvb2ds
ZSBUZXN0IG91dHB1dCBnbwordG8gc3Rkb3V0LiBUaGlzIHdheSwgeW91IGNhbiBlYXNpbHkgc2Vw
YXJhdGUgdGhlIHR3byB1c2luZyByZWRpcmVjdGlvbi4gRm9yCitleGFtcGxlOgorYGBgCisuL215
X3Rlc3QgPiBnb29nbGV0ZXN0X291dHB1dC50eHQKK2BgYAorCisjIyBXaHkgc2hvdWxkIEkgcHJl
ZmVyIHRlc3QgZml4dHVyZXMgb3ZlciBnbG9iYWwgdmFyaWFibGVzPyAjIworCitUaGVyZSBhcmUg
c2V2ZXJhbCBnb29kIHJlYXNvbnM6CisgIDEuIEl0J3MgbGlrZWx5IHlvdXIgdGVzdCBuZWVkcyB0
byBjaGFuZ2UgdGhlIHN0YXRlcyBvZiBpdHMgZ2xvYmFsIHZhcmlhYmxlcy4gVGhpcyBtYWtlcyBp
dCBkaWZmaWN1bHQgdG8ga2VlcCBzaWRlIGVmZmVjdHMgZnJvbSBlc2NhcGluZyBvbmUgdGVzdCBh
bmQgY29udGFtaW5hdGluZyBvdGhlcnMsIG1ha2luZyBkZWJ1Z2dpbmcgZGlmZmljdWx0LiBCeSB1
c2luZyBmaXh0dXJlcywgZWFjaCB0ZXN0IGhhcyBhIGZyZXNoIHNldCBvZiB2YXJpYWJsZXMgdGhh
dCdzIGRpZmZlcmVudCAoYnV0IHdpdGggdGhlIHNhbWUgbmFtZXMpLiBUaHVzLCB0ZXN0cyBhcmUg
a2VwdCBpbmRlcGVuZGVudCBvZiBlYWNoIG90aGVyLgorICAxLiBHbG9iYWwgdmFyaWFibGVzIHBv
bGx1dGUgdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisgIDEuIFRlc3QgZml4dHVyZXMgY2FuIGJlIHJl
dXNlZCB2aWEgc3ViY2xhc3NpbmcsIHdoaWNoIGNhbm5vdCBiZSBkb25lIGVhc2lseSB3aXRoIGds
b2JhbCB2YXJpYWJsZXMuIFRoaXMgaXMgdXNlZnVsIGlmIG1hbnkgdGVzdCBjYXNlcyBoYXZlIHNv
bWV0aGluZyBpbiBjb21tb24uCisKKyMjIEhvdyBkbyBJIHRlc3QgcHJpdmF0ZSBjbGFzcyBtZW1i
ZXJzIHdpdGhvdXQgd3JpdGluZyBGUklFTkRcX1RFU1QoKXM/ICMjCisKK1lvdSBzaG91bGQgdHJ5
IHRvIHdyaXRlIHRlc3RhYmxlIGNvZGUsIHdoaWNoIG1lYW5zIGNsYXNzZXMgc2hvdWxkIGJlIGVh
c2lseQordGVzdGVkIGZyb20gdGhlaXIgcHVibGljIGludGVyZmFjZS4gT25lIHdheSB0byBhY2hp
ZXZlIHRoaXMgaXMgdGhlIFBpbXBsIGlkaW9tOgoreW91IG1vdmUgYWxsIHByaXZhdGUgbWVtYmVy
cyBvZiBhIGNsYXNzIGludG8gYSBoZWxwZXIgY2xhc3MsIGFuZCBtYWtlIGFsbAorbWVtYmVycyBv
ZiB0aGUgaGVscGVyIGNsYXNzIHB1YmxpYy4KKworWW91IGhhdmUgc2V2ZXJhbCBvdGhlciBvcHRp
b25zIHRoYXQgZG9uJ3QgcmVxdWlyZSB1c2luZyBgRlJJRU5EX1RFU1RgOgorICAqIFdyaXRlIHRo
ZSB0ZXN0cyBhcyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlIGNsYXNzOgorYGBgCitjbGFzcyBGb28g
eworICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKKyAgLi4uCit9OworCitjbGFzcyBGb29UZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAuLi4KKyAgdm9pZCBUZXN0
MSgpIHsuLi59IC8vIFRoaXMgYWNjZXNzZXMgcHJpdmF0ZSBtZW1iZXJzIG9mIGNsYXNzIEZvby4K
KyAgdm9pZCBUZXN0MigpIHsuLi59IC8vIFNvIGRvZXMgdGhpcyBvbmUuCit9OworCitURVNUX0Yo
Rm9vVGVzdCwgVGVzdDEpIHsKKyAgVGVzdDEoKTsKK30KKworVEVTVF9GKEZvb1Rlc3QsIFRlc3Qy
KSB7CisgIFRlc3QyKCk7Cit9CitgYGAKKyAgKiBJbiB0aGUgZml4dHVyZSBjbGFzcywgd3JpdGUg
YWNjZXNzb3JzIGZvciB0aGUgdGVzdGVkIGNsYXNzJyBwcml2YXRlIG1lbWJlcnMsIHRoZW4gdXNl
IHRoZSBhY2Nlc3NvcnMgaW4geW91ciB0ZXN0czoKK2BgYAorY2xhc3MgRm9vIHsKKyAgZnJpZW5k
IGNsYXNzIEZvb1Rlc3Q7CisgIC4uLgorfTsKKworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLi4uCisgIFQxIGdldF9wcml2YXRlX21lbWJl
cjEoRm9vKiBvYmopIHsKKyAgICByZXR1cm4gb2JqLT5wcml2YXRlX21lbWJlcjFfOworICB9Cit9
OworCitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgLi4uCisgIGdldF9wcml2YXRlX21lbWJl
cjEoeCkKKyAgLi4uCit9CitgYGAKKyAgKiBJZiB0aGUgbWV0aG9kcyBhcmUgZGVjbGFyZWQgKipw
cm90ZWN0ZWQqKiwgeW91IGNhbiBjaGFuZ2UgdGhlaXIgYWNjZXNzIGxldmVsIGluIGEgdGVzdC1v
bmx5IHN1YmNsYXNzOgorYGBgCitjbGFzcyBZb3VyQ2xhc3MgeworICAuLi4KKyBwcm90ZWN0ZWQ6
IC8vIHByb3RlY3RlZCBhY2Nlc3MgZm9yIHRlc3RhYmlsaXR5LgorICBpbnQgRG9Tb21ldGhpbmdS
ZXR1cm5pbmdJbnQoKTsKKyAgLi4uCit9OworCisvLyBpbiB0aGUgeW91cl9jbGFzc190ZXN0LmNj
IGZpbGU6CitjbGFzcyBUZXN0YWJsZVlvdXJDbGFzcyA6IHB1YmxpYyBZb3VyQ2xhc3MgeworICAu
Li4KKyBwdWJsaWM6IHVzaW5nIFlvdXJDbGFzczo6RG9Tb21ldGhpbmdSZXR1cm5pbmdJbnQ7IC8v
IGNoYW5nZXMgYWNjZXNzIHJpZ2h0cworICAuLi4KK307CisKK1RFU1RfRihZb3VyQ2xhc3NUZXN0
LCBEb1NvbWV0aGluZ1Rlc3QpIHsKKyAgVGVzdGFibGVZb3VyQ2xhc3Mgb2JqOworICBhc3NlcnRF
cXVhbHMoZXhwZWN0ZWRfdmFsdWUsIG9iai5Eb1NvbWV0aGluZ1JldHVybmluZ0ludCgpKTsKK30K
K2BgYAorCisjIyBIb3cgZG8gSSB0ZXN0IHByaXZhdGUgY2xhc3Mgc3RhdGljIG1lbWJlcnMgd2l0
aG91dCB3cml0aW5nIEZSSUVORFxfVEVTVCgpcz8gIyMKKworV2UgZmluZCBwcml2YXRlIHN0YXRp
YyBtZXRob2RzIGNsdXR0ZXIgdGhlIGhlYWRlciBmaWxlLiAgVGhleSBhcmUKK2ltcGxlbWVudGF0
aW9uIGRldGFpbHMgYW5kIGlkZWFsbHkgc2hvdWxkIGJlIGtlcHQgb3V0IG9mIGEgLmguIFNvIG9m
dGVuIEkgbWFrZQordGhlbSBmcmVlIGZ1bmN0aW9ucyBpbnN0ZWFkLgorCitJbnN0ZWFkIG9mOgor
YGBgCisvLyBmb28uaAorY2xhc3MgRm9vIHsKKyAgLi4uCisgcHJpdmF0ZToKKyAgc3RhdGljIGJv
b2wgRnVuYyhpbnQgbik7Cit9OworCisvLyBmb28uY2MKK2Jvb2wgRm9vOjpGdW5jKGludCBuKSB7
IC4uLiB9CisKKy8vIGZvb190ZXN0LmNjCitFWFBFQ1RfVFJVRShGb286OkZ1bmMoMTIzNDUpKTsK
K2BgYAorCitZb3UgcHJvYmFibHkgc2hvdWxkIGJldHRlciB3cml0ZToKK2BgYAorLy8gZm9vLmgK
K2NsYXNzIEZvbyB7CisgIC4uLgorfTsKKworLy8gZm9vLmNjCituYW1lc3BhY2UgaW50ZXJuYWwg
eworICBib29sIEZ1bmMoaW50IG4pIHsgLi4uIH0KK30KKworLy8gZm9vX3Rlc3QuY2MKK25hbWVz
cGFjZSBpbnRlcm5hbCB7CisgIGJvb2wgRnVuYyhpbnQgbik7Cit9CisKK0VYUEVDVF9UUlVFKGlu
dGVybmFsOjpGdW5jKDEyMzQ1KSk7CitgYGAKKworIyMgSSB3b3VsZCBsaWtlIHRvIHJ1biBhIHRl
c3Qgc2V2ZXJhbCB0aW1lcyB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzLiBEbyBJIG5lZWQgdG8g
d3JpdGUgc2V2ZXJhbCBzaW1pbGFyIGNvcGllcyBvZiBpdD8gIyMKKworTm8uIFlvdSBjYW4gdXNl
IGEgZmVhdHVyZSBjYWxsZWQgW3ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHNdKFYxXzZfQWR2YW5j
ZWRHdWlkZS5tZCNWYWx1ZV9QYXJhbWV0ZXJpemVkX1Rlc3RzKSB3aGljaAorbGV0cyB5b3UgcmVw
ZWF0IHlvdXIgdGVzdHMgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVycywgd2l0aG91dCBkZWZpbmlu
ZyBpdCBtb3JlIHRoYW4gb25jZS4KKworIyMgSG93IGRvIEkgdGVzdCBhIGZpbGUgdGhhdCBkZWZp
bmVzIG1haW4oKT8gIyMKKworVG8gdGVzdCBhIGBmb28uY2NgIGZpbGUsIHlvdSBuZWVkIHRvIGNv
bXBpbGUgYW5kIGxpbmsgaXQgaW50byB5b3VyIHVuaXQgdGVzdAorcHJvZ3JhbS4gSG93ZXZlciwg
d2hlbiB0aGUgZmlsZSBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIHRoZSBgbWFpbigpYAorZnVu
Y3Rpb24sIGl0IHdpbGwgY2xhc2ggd2l0aCB0aGUgYG1haW4oKWAgb2YgeW91ciB1bml0IHRlc3Qs
IGFuZCB3aWxsIHJlc3VsdCBpbgorYSBidWlsZCBlcnJvci4KKworVGhlIHJpZ2h0IHNvbHV0aW9u
IGlzIHRvIHNwbGl0IGl0IGludG8gdGhyZWUgZmlsZXM6CisgIDEuIGBmb28uaGAgd2hpY2ggY29u
dGFpbnMgdGhlIGRlY2xhcmF0aW9ucywKKyAgMS4gYGZvby5jY2Agd2hpY2ggY29udGFpbnMgdGhl
IGRlZmluaXRpb25zIGV4Y2VwdCBgbWFpbigpYCwgYW5kCisgIDEuIGBmb29fbWFpbi5jY2Agd2hp
Y2ggY29udGFpbnMgbm90aGluZyBidXQgdGhlIGRlZmluaXRpb24gb2YgYG1haW4oKWAuCisKK1Ro
ZW4gYGZvby5jY2AgY2FuIGJlIGVhc2lseSB0ZXN0ZWQuCisKK0lmIHlvdSBhcmUgYWRkaW5nIHRl
c3RzIHRvIGFuIGV4aXN0aW5nIGZpbGUgYW5kIGRvbid0IHdhbnQgYW4gaW50cnVzaXZlIGNoYW5n
ZQorbGlrZSB0aGlzLCB0aGVyZSBpcyBhIGhhY2s6IGp1c3QgaW5jbHVkZSB0aGUgZW50aXJlIGBm
b28uY2NgIGZpbGUgaW4geW91ciB1bml0Cit0ZXN0LiBGb3IgZXhhbXBsZToKK2BgYAorLy8gRmls
ZSBmb29fdW5pdHRlc3QuY2MKKworLy8gVGhlIGhlYWRlcnMgc2VjdGlvbgorLi4uCisKKy8vIFJl
bmFtZXMgbWFpbigpIGluIGZvby5jYyB0byBtYWtlIHJvb20gZm9yIHRoZSB1bml0IHRlc3QgbWFp
bigpCisjZGVmaW5lIG1haW4gRm9vTWFpbgorCisjaW5jbHVkZSAiYS9iL2Zvby5jYyIKKworLy8g
VGhlIHRlc3RzIHN0YXJ0IGhlcmUuCisuLi4KK2BgYAorCisKK0hvd2V2ZXIsIHBsZWFzZSByZW1l
bWJlciB0aGlzIGlzIGEgaGFjayBhbmQgc2hvdWxkIG9ubHkgYmUgdXNlZCBhcyB0aGUgbGFzdAor
cmVzb3J0LgorCisjIyBXaGF0IGNhbiB0aGUgc3RhdGVtZW50IGFyZ3VtZW50IGluIEFTU0VSVFxf
REVBVEgoKSBiZT8gIyMKKworYEFTU0VSVF9ERUFUSChfc3RhdGVtZW50XywgX3JlZ2V4XylgIChv
ciBhbnkgZGVhdGggYXNzZXJ0aW9uIG1hY3JvKSBjYW4gYmUgdXNlZAord2hlcmV2ZXIgYF9zdGF0
ZW1lbnRfYCBpcyB2YWxpZC4gU28gYmFzaWNhbGx5IGBfc3RhdGVtZW50X2AgY2FuIGJlIGFueSBD
KysKK3N0YXRlbWVudCB0aGF0IG1ha2VzIHNlbnNlIGluIHRoZSBjdXJyZW50IGNvbnRleHQuIElu
IHBhcnRpY3VsYXIsIGl0IGNhbgorcmVmZXJlbmNlIGdsb2JhbCBhbmQvb3IgbG9jYWwgdmFyaWFi
bGVzLCBhbmQgY2FuIGJlOgorICAqIGEgc2ltcGxlIGZ1bmN0aW9uIGNhbGwgKG9mdGVuIHRoZSBj
YXNlKSwKKyAgKiBhIGNvbXBsZXggZXhwcmVzc2lvbiwgb3IKKyAgKiBhIGNvbXBvdW5kIHN0YXRl
bWVudC4KKworPiBTb21lIGV4YW1wbGVzIGFyZSBzaG93biBoZXJlOgorCitgYGAKKy8vIEEgZGVh
dGggdGVzdCBjYW4gYmUgYSBzaW1wbGUgZnVuY3Rpb24gY2FsbC4KK1RFU1QoTXlEZWF0aFRlc3Qs
IEZ1bmN0aW9uQ2FsbCkgeworICBBU1NFUlRfREVBVEgoWHl6KDUpLCAiWHl6IGZhaWxlZCIpOwor
fQorCisvLyBPciBhIGNvbXBsZXggZXhwcmVzc2lvbiB0aGF0IHJlZmVyZW5jZXMgdmFyaWFibGVz
IGFuZCBmdW5jdGlvbnMuCitURVNUKE15RGVhdGhUZXN0LCBDb21wbGV4RXhwcmVzc2lvbikgewor
ICBjb25zdCBib29sIGMgPSBDb25kaXRpb24oKTsKKyAgQVNTRVJUX0RFQVRIKChjID8gRnVuYzEo
MCkgOiBvYmplY3QyLk1ldGhvZCgidGVzdCIpKSwKKyAgICAgICAgICAgICAgICIoRnVuYzF8TWV0
aG9kKSBmYWlsZWQiKTsKK30KKworLy8gRGVhdGggYXNzZXJ0aW9ucyBjYW4gYmUgdXNlZCBhbnkg
d2hlcmUgaW4gYSBmdW5jdGlvbi4gSW4KKy8vIHBhcnRpY3VsYXIsIHRoZXkgY2FuIGJlIGluc2lk
ZSBhIGxvb3AuCitURVNUKE15RGVhdGhUZXN0LCBJbnNpZGVMb29wKSB7CisgIC8vIFZlcmlmaWVz
IHRoYXQgRm9vKDApLCBGb28oMSksIC4uLiwgYW5kIEZvbyg0KSBhbGwgZGllLgorICBmb3IgKGlu
dCBpID0gMDsgaSA8IDU7IGkrKykgeworICAgIEVYUEVDVF9ERUFUSF9NKEZvbyhpKSwgIkZvbyBo
YXMgXFxkKyBlcnJvcnMiLAorICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6TWVzc2FnZSgp
IDw8ICJ3aGVyZSBpIGlzICIgPDwgaSk7CisgIH0KK30KKworLy8gQSBkZWF0aCBhc3NlcnRpb24g
Y2FuIGNvbnRhaW4gYSBjb21wb3VuZCBzdGF0ZW1lbnQuCitURVNUKE15RGVhdGhUZXN0LCBDb21w
b3VuZFN0YXRlbWVudCkgeworICAvLyBWZXJpZmllcyB0aGF0IGF0IGxlYXNlIG9uZSBvZiBCYXIo
MCksIEJhcigxKSwgLi4uLCBhbmQKKyAgLy8gQmFyKDQpIGRpZXMuCisgIEFTU0VSVF9ERUFUSCh7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICAgIEJhcihpKTsKKyAgICB9
CisgIH0sCisgICJCYXIgaGFzIFxcZCsgZXJyb3JzIik7fQorYGBgCisKK2Bnb29nbGV0ZXN0X3Vu
aXR0ZXN0LmNjYCBjb250YWlucyBtb3JlIGV4YW1wbGVzIGlmIHlvdSBhcmUgaW50ZXJlc3RlZC4K
KworIyMgV2hhdCBzeW50YXggZG9lcyB0aGUgcmVndWxhciBleHByZXNzaW9uIGluIEFTU0VSVFxf
REVBVEggdXNlPyAjIworCitPbiBQT1NJWCBzeXN0ZW1zLCBHb29nbGUgVGVzdCB1c2VzIHRoZSBQ
T1NJWCBFeHRlbmRlZCByZWd1bGFyCitleHByZXNzaW9uIHN5bnRheAorKGh0dHA6Ly9lbi53aWtp
cGVkaWEub3JnL3dpa2kvUmVndWxhcl9leHByZXNzaW9uI1BPU0lYX0V4dGVuZGVkX1JlZ3VsYXJf
RXhwcmVzc2lvbnMpLgorT24gV2luZG93cywgaXQgdXNlcyBhIGxpbWl0ZWQgdmFyaWFudCBvZiBy
ZWd1bGFyIGV4cHJlc3Npb24KK3N5bnRheC4gRm9yIG1vcmUgZGV0YWlscywgc2VlIHRoZQorW3Jl
Z3VsYXIgZXhwcmVzc2lvbiBzeW50YXhdKFYxXzZfQWR2YW5jZWRHdWlkZS5tZCNSZWd1bGFyX0V4
cHJlc3Npb25fU3ludGF4KS4KKworIyMgSSBoYXZlIGEgZml4dHVyZSBjbGFzcyBGb28sIGJ1dCBU
RVNUXF9GKEZvbywgQmFyKSBnaXZlcyBtZSBlcnJvciAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gZm9y
IGNhbGwgdG8gRm9vOjpGb28oKSIuIFdoeT8gIyMKKworR29vZ2xlIFRlc3QgbmVlZHMgdG8gYmUg
YWJsZSB0byBjcmVhdGUgb2JqZWN0cyBvZiB5b3VyIHRlc3QgZml4dHVyZSBjbGFzcywgc28KK2l0
IG11c3QgaGF2ZSBhIGRlZmF1bHQgY29uc3RydWN0b3IuIE5vcm1hbGx5IHRoZSBjb21waWxlciB3
aWxsIGRlZmluZSBvbmUgZm9yCit5b3UuIEhvd2V2ZXIsIHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB5
b3UgaGF2ZSB0byBkZWZpbmUgeW91ciBvd246CisgICogSWYgeW91IGV4cGxpY2l0bHkgZGVjbGFy
ZSBhIG5vbi1kZWZhdWx0IGNvbnN0cnVjdG9yIGZvciBjbGFzcyBgRm9vYCwgdGhlbiB5b3UgbmVl
ZCB0byBkZWZpbmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLCBldmVuIGlmIGl0IHdvdWxkIGJlIGVt
cHR5LgorICAqIElmIGBGb29gIGhhcyBhIGNvbnN0IG5vbi1zdGF0aWMgZGF0YSBtZW1iZXIsIHRo
ZW4geW91IGhhdmUgdG8gZGVmaW5lIHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIF9hbmRfIGluaXRp
YWxpemUgdGhlIGNvbnN0IG1lbWJlciBpbiB0aGUgaW5pdGlhbGl6ZXIgbGlzdCBvZiB0aGUgY29u
c3RydWN0b3IuIChFYXJseSB2ZXJzaW9ucyBvZiBgZ2NjYCBkb2Vzbid0IGZvcmNlIHlvdSB0byBp
bml0aWFsaXplIHRoZSBjb25zdCBtZW1iZXIuIEl0J3MgYSBidWcgdGhhdCBoYXMgYmVlbiBmaXhl
ZCBpbiBgZ2NjIDRgLikKKworIyMgV2h5IGRvZXMgQVNTRVJUXF9ERUFUSCBjb21wbGFpbiBhYm91
dCBwcmV2aW91cyB0aHJlYWRzIHRoYXQgd2VyZSBhbHJlYWR5IGpvaW5lZD8gIyMKKworV2l0aCB0
aGUgTGludXggcHRocmVhZCBsaWJyYXJ5LCB0aGVyZSBpcyBubyB0dXJuaW5nIGJhY2sgb25jZSB5
b3UgY3Jvc3MgdGhlCitsaW5lIGZyb20gc2luZ2xlIHRocmVhZCB0byBtdWx0aXBsZSB0aHJlYWRz
LiBUaGUgZmlyc3QgdGltZSB5b3UgY3JlYXRlIGEKK3RocmVhZCwgYSBtYW5hZ2VyIHRocmVhZCBp
cyBjcmVhdGVkIGluIGFkZGl0aW9uLCBzbyB5b3UgZ2V0IDMsIG5vdCAyLCB0aHJlYWRzLgorTGF0
ZXIgd2hlbiB0aGUgdGhyZWFkIHlvdSBjcmVhdGUgam9pbnMgdGhlIG1haW4gdGhyZWFkLCB0aGUg
dGhyZWFkIGNvdW50CitkZWNyZW1lbnRzIGJ5IDEsIGJ1dCB0aGUgbWFuYWdlciB0aHJlYWQgd2ls
bCBuZXZlciBiZSBraWxsZWQsIHNvIHlvdSBzdGlsbCBoYXZlCisyIHRocmVhZHMsIHdoaWNoIG1l
YW5zIHlvdSBjYW5ub3Qgc2FmZWx5IHJ1biBhIGRlYXRoIHRlc3QuCisKK1RoZSBuZXcgTlBUTCB0
aHJlYWQgbGlicmFyeSBkb2Vzbid0IHN1ZmZlciBmcm9tIHRoaXMgcHJvYmxlbSwgYXMgaXQgZG9l
c24ndAorY3JlYXRlIGEgbWFuYWdlciB0aHJlYWQuIEhvd2V2ZXIsIGlmIHlvdSBkb24ndCBjb250
cm9sIHdoaWNoIG1hY2hpbmUgeW91ciB0ZXN0CitydW5zIG9uLCB5b3Ugc2hvdWxkbid0IGRlcGVu
ZCBvbiB0aGlzLgorCisjIyBXaHkgZG9lcyBHb29nbGUgVGVzdCByZXF1aXJlIHRoZSBlbnRpcmUg
dGVzdCBjYXNlLCBpbnN0ZWFkIG9mIGluZGl2aWR1YWwgdGVzdHMsIHRvIGJlIG5hbWVkIEZPT0Rl
YXRoVGVzdCB3aGVuIGl0IHVzZXMgQVNTRVJUXF9ERUFUSD8gIyMKKworR29vZ2xlIFRlc3QgZG9l
cyBub3QgaW50ZXJsZWF2ZSB0ZXN0cyBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLiBUaGF0IGlz
LCBpdAorcnVucyBhbGwgdGVzdHMgaW4gb25lIHRlc3QgY2FzZSBmaXJzdCwgYW5kIHRoZW4gcnVu
cyBhbGwgdGVzdHMgaW4gdGhlIG5leHQgdGVzdAorY2FzZSwgYW5kIHNvIG9uLiBHb29nbGUgVGVz
dCBkb2VzIHRoaXMgYmVjYXVzZSBpdCBuZWVkcyB0byBzZXQgdXAgYSB0ZXN0IGNhc2UKK2JlZm9y
ZSB0aGUgZmlyc3QgdGVzdCBpbiBpdCBpcyBydW4sIGFuZCB0ZWFyIGl0IGRvd24gYWZ0ZXJ3b3Jk
cy4gU3BsaXR0aW5nIHVwCit0aGUgdGVzdCBjYXNlIHdvdWxkIHJlcXVpcmUgbXVsdGlwbGUgc2V0
LXVwIGFuZCB0ZWFyLWRvd24gcHJvY2Vzc2VzLCB3aGljaCBpcworaW5lZmZpY2llbnQgYW5kIG1h
a2VzIHRoZSBzZW1hbnRpY3MgdW5jbGVhbi4KKworSWYgd2Ugd2VyZSB0byBkZXRlcm1pbmUgdGhl
IG9yZGVyIG9mIHRlc3RzIGJhc2VkIG9uIHRlc3QgbmFtZSBpbnN0ZWFkIG9mIHRlc3QKK2Nhc2Ug
bmFtZSwgdGhlbiB3ZSB3b3VsZCBoYXZlIGEgcHJvYmxlbSB3aXRoIHRoZSBmb2xsb3dpbmcgc2l0
dWF0aW9uOgorCitgYGAKK1RFU1RfRihGb29UZXN0LCBBYmNEZWF0aFRlc3QpIHsgLi4uIH0KK1RF
U1RfRihGb29UZXN0LCBVdncpIHsgLi4uIH0KKworVEVTVF9GKEJhclRlc3QsIERlZkRlYXRoVGVz
dCkgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIFh5eikgeyAuLi4gfQorYGBgCisKK1NpbmNlIGBG
b29UZXN0LkFiY0RlYXRoVGVzdGAgbmVlZHMgdG8gcnVuIGJlZm9yZSBgQmFyVGVzdC5YeXpgLCBh
bmQgd2UgZG9uJ3QKK2ludGVybGVhdmUgdGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcywg
d2UgbmVlZCB0byBydW4gYWxsIHRlc3RzIGluIHRoZQorYEZvb1Rlc3RgIGNhc2UgYmVmb3JlIHJ1
bm5pbmcgYW55IHRlc3QgaW4gdGhlIGBCYXJUZXN0YCBjYXNlLiBUaGlzIGNvbnRyYWRpY3RzCit3
aXRoIHRoZSByZXF1aXJlbWVudCB0byBydW4gYEJhclRlc3QuRGVmRGVhdGhUZXN0YCBiZWZvcmUg
YEZvb1Rlc3QuVXZ3YC4KKworIyMgQnV0IEkgZG9uJ3QgbGlrZSBjYWxsaW5nIG15IGVudGlyZSB0
ZXN0IGNhc2UgRk9PRGVhdGhUZXN0IHdoZW4gaXQgY29udGFpbnMgYm90aCBkZWF0aCB0ZXN0cyBh
bmQgbm9uLWRlYXRoIHRlc3RzLiBXaGF0IGRvIEkgZG8/ICMjCisKK1lvdSBkb24ndCBoYXZlIHRv
LCBidXQgaWYgeW91IGxpa2UsIHlvdSBtYXkgc3BsaXQgdXAgdGhlIHRlc3QgY2FzZSBpbnRvCitg
Rm9vVGVzdGAgYW5kIGBGb29EZWF0aFRlc3RgLCB3aGVyZSB0aGUgbmFtZXMgbWFrZSBpdCBjbGVh
ciB0aGF0IHRoZXkgYXJlCityZWxhdGVkOgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07CisKK1RFU1RfRihGb29UZXN0LCBBYmMpIHsgLi4uIH0K
K1RFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0KKwordHlwZWRlZiBGb29UZXN0IEZvb0RlYXRo
VGVzdDsKKworVEVTVF9GKEZvb0RlYXRoVGVzdCwgVXZ3KSB7IC4uLiBFWFBFQ1RfREVBVEgoLi4u
KSAuLi4gfQorVEVTVF9GKEZvb0RlYXRoVGVzdCwgWHl6KSB7IC4uLiBBU1NFUlRfREVBVEgoLi4u
KSAuLi4gfQorYGBgCisKKyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgIm5vIG1hdGNo
IGZvciAnb3BlcmF0b3I8PCciIHdoZW4gSSB1c2UgYW4gYXNzZXJ0aW9uLiBXaGF0IGdpdmVzPyAj
IworCitJZiB5b3UgdXNlIGEgdXNlci1kZWZpbmVkIHR5cGUgYEZvb1R5cGVgIGluIGFuIGFzc2Vy
dGlvbiwgeW91IG11c3QgbWFrZSBzdXJlCit0aGVyZSBpcyBhbiBgc3RkOjpvc3RyZWFtJiBvcGVy
YXRvcjw8KHN0ZDo6b3N0cmVhbSYsIGNvbnN0IEZvb1R5cGUmKWAgZnVuY3Rpb24KK2RlZmluZWQg
c3VjaCB0aGF0IHdlIGNhbiBwcmludCBhIHZhbHVlIG9mIGBGb29UeXBlYC4KKworSW4gYWRkaXRp
b24sIGlmIGBGb29UeXBlYCBpcyBkZWNsYXJlZCBpbiBhIG5hbWUgc3BhY2UsIHRoZSBgPDxgIG9w
ZXJhdG9yIGFsc28KK25lZWRzIHRvIGJlIGRlZmluZWQgaW4gdGhlIF9zYW1lXyBuYW1lIHNwYWNl
LgorCisjIyBIb3cgZG8gSSBzdXBwcmVzcyB0aGUgbWVtb3J5IGxlYWsgbWVzc2FnZXMgb24gV2lu
ZG93cz8gIyMKKworU2luY2UgdGhlIHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQgR29vZ2xlIFRlc3Qg
c2luZ2xldG9uIHJlcXVpcmVzIGFsbG9jYXRpb25zIG9uCit0aGUgaGVhcCwgdGhlIFZpc3VhbCBD
KysgbWVtb3J5IGxlYWsgZGV0ZWN0b3Igd2lsbCByZXBvcnQgbWVtb3J5IGxlYWtzIGF0IHRoZQor
ZW5kIG9mIHRoZSBwcm9ncmFtIHJ1bi4gVGhlIGVhc2llc3Qgd2F5IHRvIGF2b2lkIHRoaXMgaXMg
dG8gdXNlIHRoZQorYF9DcnRNZW1DaGVja3BvaW50YCBhbmQgYF9DcnRNZW1EdW1wQWxsT2JqZWN0
c1NpbmNlYCBjYWxscyB0byBub3QgcmVwb3J0IGFueQorc3RhdGljYWxseSBpbml0aWFsaXplZCBo
ZWFwIG9iamVjdHMuIFNlZSBNU0ROIGZvciBtb3JlIGRldGFpbHMgYW5kIGFkZGl0aW9uYWwKK2hl
YXAgY2hlY2svZGVidWcgcm91dGluZXMuCisKKyMjIEkgYW0gYnVpbGRpbmcgbXkgcHJvamVjdCB3
aXRoIEdvb2dsZSBUZXN0IGluIFZpc3VhbCBTdHVkaW8gYW5kIGFsbCBJJ20gZ2V0dGluZyBpcyBh
IGJ1bmNoIG9mIGxpbmtlciBlcnJvcnMgKG9yIHdhcm5pbmdzKS4gSGVscCEgIyMKKworWW91IG1h
eSBnZXQgYSBudW1iZXIgb2YgdGhlIGZvbGxvd2luZyBsaW5rZXIgZXJyb3Igb3Igd2FybmluZ3Mg
aWYgeW91CithdHRlbXB0IHRvIGxpbmsgeW91ciB0ZXN0IHByb2plY3Qgd2l0aCB0aGUgR29vZ2xl
IFRlc3QgbGlicmFyeSB3aGVuCit5b3VyIHByb2plY3QgYW5kIHRoZSBhcmUgbm90IGJ1aWx0IHVz
aW5nIHRoZSBzYW1lIGNvbXBpbGVyIHNldHRpbmdzLgorCisgICogTE5LMjAwNTogc3ltYm9sIGFs
cmVhZHkgZGVmaW5lZCBpbiBvYmplY3QKKyAgKiBMTks0MjE3OiBsb2NhbGx5IGRlZmluZWQgc3lt
Ym9sICdzeW1ib2wnIGltcG9ydGVkIGluIGZ1bmN0aW9uICdmdW5jdGlvbicKKyAgKiBMTks0MDQ5
OiBsb2NhbGx5IGRlZmluZWQgc3ltYm9sICdzeW1ib2wnIGltcG9ydGVkCisKK1RoZSBHb29nbGUg
VGVzdCBwcm9qZWN0IChndGVzdC52Y3Byb2opIGhhcyB0aGUgUnVudGltZSBMaWJyYXJ5IG9wdGlv
bgorc2V0IHRvIC9NVCAodXNlIG11bHRpLXRocmVhZGVkIHN0YXRpYyBsaWJyYXJpZXMsIC9NVGQg
Zm9yIGRlYnVnKS4gSWYKK3lvdXIgcHJvamVjdCB1c2VzIHNvbWV0aGluZyBlbHNlLCBmb3IgZXhh
bXBsZSAvTUQgKHVzZSBtdWx0aS10aHJlYWRlZAorRExMcywgL01EZCBmb3IgZGVidWcpLCB5b3Ug
bmVlZCB0byBjaGFuZ2UgdGhlIHNldHRpbmcgaW4gdGhlIEdvb2dsZQorVGVzdCBwcm9qZWN0IHRv
IG1hdGNoIHlvdXIgcHJvamVjdCdzLgorCitUbyB1cGRhdGUgdGhpcyBzZXR0aW5nIG9wZW4gdGhl
IHByb2plY3QgcHJvcGVydGllcyBpbiB0aGUgVmlzdWFsCitTdHVkaW8gSURFIHRoZW4gc2VsZWN0
IHRoZSBicmFuY2ggQ29uZmlndXJhdGlvbiBQcm9wZXJ0aWVzIHwgQy9DKysgfAorQ29kZSBHZW5l
cmF0aW9uIGFuZCBjaGFuZ2UgdGhlIG9wdGlvbiAiUnVudGltZSBMaWJyYXJ5Ii4gIFlvdSBtYXkg
YWxzbyB0cnkKK3VzaW5nIGd0ZXN0LW1kLnZjcHJvaiBpbnN0ZWFkIG9mIGd0ZXN0LnZjcHJvai4K
KworIyMgSSBwdXQgbXkgdGVzdHMgaW4gYSBsaWJyYXJ5IGFuZCBHb29nbGUgVGVzdCBkb2Vzbid0
IHJ1biB0aGVtLiBXaGF0J3MgaGFwcGVuaW5nPyAjIworSGF2ZSB5b3UgcmVhZCBhCitbd2Fybmlu
Z10oVjFfNl9QcmltZXIubWQjaW1wb3J0YW50LW5vdGUtZm9yLXZpc3VhbC1jLXVzZXJzKSBvbgor
dGhlIEdvb2dsZSBUZXN0IFByaW1lciBwYWdlPworCisjIyBJIHdhbnQgdG8gdXNlIEdvb2dsZSBU
ZXN0IHdpdGggVmlzdWFsIFN0dWRpbyBidXQgZG9uJ3Qga25vdyB3aGVyZSB0byBzdGFydC4gIyMK
K01hbnkgcGVvcGxlIGFyZSBpbiB5b3VyIHBvc2l0aW9uIGFuZCBvbmUgb2YgdGhlIHBvc3RlZCBo
aXMgc29sdXRpb24gdG8KK291ciBtYWlsaW5nIGxpc3QuIEhlcmUgaXMgaGlzIGxpbms6CitodHRw
Oi8vaGFzc2FuamFtaWxhaG1hZC5ibG9nc3BvdC5jb20vMjAwOS8wNy9ndGVzdC1zdGFydGVycy1o
ZWxwLmh0bWwuCisKKyMjIEkgYW0gc2VlaW5nIGNvbXBpbGUgZXJyb3JzIG1lbnRpb25pbmcgc3Rk
Ojp0eXBlXF90cmFpdHMgd2hlbiBJIHRyeSB0byB1c2UgR29vZ2xlIFRlc3Qgb24gU29sYXJpcy4g
IyMKK0dvb2dsZSBUZXN0IHVzZXMgcGFydHMgb2YgdGhlIHN0YW5kYXJkIEMrKyBsaWJyYXJ5IHRo
YXQgU3VuU3R1ZGlvIGRvZXMgbm90IHN1cHBvcnQuCitPdXIgdXNlcnMgcmVwb3J0ZWQgc3VjY2Vz
cyB1c2luZyBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbnMuIFRyeSBydW5uaW5nIHRoZSBidWls
ZCBhZnRlciBydW5pbmcgdGhpcyBjb21tYWQ6CisKK2BleHBvcnQgQ0M9Y2MgQ1hYPUNDIENYWEZM
QUdTPSctbGlicmFyeT1zdGxwb3J0NCdgCisKKyMjIEhvdyBjYW4gbXkgY29kZSBkZXRlY3QgaWYg
aXQgaXMgcnVubmluZyBpbiBhIHRlc3Q/ICMjCisKK0lmIHlvdSB3cml0ZSBjb2RlIHRoYXQgc25p
ZmZzIHdoZXRoZXIgaXQncyBydW5uaW5nIGluIGEgdGVzdCBhbmQgZG9lcworZGlmZmVyZW50IHRo
aW5ncyBhY2NvcmRpbmdseSwgeW91IGFyZSBsZWFraW5nIHRlc3Qtb25seSBsb2dpYyBpbnRvCitw
cm9kdWN0aW9uIGNvZGUgYW5kIHRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIGVuc3VyZSB0aGF0IHRo
ZSB0ZXN0LW9ubHkKK2NvZGUgcGF0aHMgYXJlbid0IHJ1biBieSBtaXN0YWtlIGluIHByb2R1Y3Rp
b24uICBTdWNoIGNsZXZlcm5lc3MgYWxzbworbGVhZHMgdG8KK1tIZWlzZW5idWdzXShodHRwOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL1VudXN1YWxfc29mdHdhcmVfYnVnI0hlaXNlbmJ1ZykuCitU
aGVyZWZvcmUgd2Ugc3Ryb25nbHkgYWR2aXNlIGFnYWluc3QgdGhlIHByYWN0aWNlLCBhbmQgR29v
Z2xlIFRlc3QgZG9lc24ndAorcHJvdmlkZSBhIHdheSB0byBkbyBpdC4KKworSW4gZ2VuZXJhbCwg
dGhlIHJlY29tbWVuZGVkIHdheSB0byBjYXVzZSB0aGUgY29kZSB0byBiZWhhdmUKK2RpZmZlcmVu
dGx5IHVuZGVyIHRlc3QgaXMgW2RlcGVuZGVuY3kgaW5qZWN0aW9uXShodHRwOi8vamFtZXNzaG9y
ZS5jb20vQmxvZy9EZXBlbmRlbmN5LUluamVjdGlvbi1EZW15c3RpZmllZC5odG1sKS4KK1lvdSBj
YW4gaW5qZWN0IGRpZmZlcmVudCBmdW5jdGlvbmFsaXR5IGZyb20gdGhlIHRlc3QgYW5kIGZyb20g
dGhlCitwcm9kdWN0aW9uIGNvZGUuICBTaW5jZSB5b3VyIHByb2R1Y3Rpb24gY29kZSBkb2Vzbid0
IGxpbmsgaW4gdGhlCitmb3ItdGVzdCBsb2dpYyBhdCBhbGwsIHRoZXJlIGlzIG5vIGRhbmdlciBp
biBhY2NpZGVudGFsbHkgcnVubmluZyBpdC4KKworSG93ZXZlciwgaWYgeW91IF9yZWFsbHlfLCBf
cmVhbGx5XywgX3JlYWxseV8gaGF2ZSBubyBjaG9pY2UsIGFuZCBpZgoreW91IGZvbGxvdyB0aGUg
cnVsZSBvZiBlbmRpbmcgeW91ciB0ZXN0IHByb2dyYW0gbmFtZXMgd2l0aCBgX3Rlc3RgLAoreW91
IGNhbiB1c2UgdGhlIF9ob3JyaWJsZV8gaGFjayBvZiBzbmlmZmluZyB5b3VyIGV4ZWN1dGFibGUg
bmFtZQorKGBhcmd2WzBdYCBpbiBgbWFpbigpYCkgdG8ga25vdyB3aGV0aGVyIHRoZSBjb2RlIGlz
IHVuZGVyIHRlc3QuCisKKyMjIEdvb2dsZSBUZXN0IGRlZmluZXMgYSBtYWNybyB0aGF0IGNsYXNo
ZXMgd2l0aCBvbmUgZGVmaW5lZCBieSBhbm90aGVyIGxpYnJhcnkuIEhvdyBkbyBJIGRlYWwgd2l0
aCB0aGF0PyAjIworCitJbiBDKyssIG1hY3JvcyBkb24ndCBvYmV5IG5hbWVzcGFjZXMuICBUaGVy
ZWZvcmUgdHdvIGxpYnJhcmllcyB0aGF0Citib3RoIGRlZmluZSBhIG1hY3JvIG9mIHRoZSBzYW1l
IG5hbWUgd2lsbCBjbGFzaCBpZiB5b3UgYCNpbmNsdWRlYCBib3RoCitkZWZpbml0aW9ucy4gIElu
IGNhc2UgYSBHb29nbGUgVGVzdCBtYWNybyBjbGFzaGVzIHdpdGggYW5vdGhlcgorbGlicmFyeSwg
eW91IGNhbiBmb3JjZSBHb29nbGUgVGVzdCB0byByZW5hbWUgaXRzIG1hY3JvIHRvIGF2b2lkIHRo
ZQorY29uZmxpY3QuCisKK1NwZWNpZmljYWxseSwgaWYgYm90aCBHb29nbGUgVGVzdCBhbmQgc29t
ZSBvdGhlciBjb2RlIGRlZmluZSBtYWNybworYEZPT2AsIHlvdSBjYW4gYWRkCitgYGAKKyAgLURH
VEVTVF9ET05UX0RFRklORV9GT089MQorYGBgCit0byB0aGUgY29tcGlsZXIgZmxhZ3MgdG8gdGVs
bCBHb29nbGUgVGVzdCB0byBjaGFuZ2UgdGhlIG1hY3JvJ3MgbmFtZQorZnJvbSBgRk9PYCB0byBg
R1RFU1RfRk9PYC4gRm9yIGV4YW1wbGUsIHdpdGggYC1ER1RFU1RfRE9OVF9ERUZJTkVfVEVTVD0x
YCwgeW91J2xsIG5lZWQgdG8gd3JpdGUKK2BgYAorICBHVEVTVF9URVNUKFNvbWVUZXN0LCBEb2Vz
VGhpcykgeyAuLi4gfQorYGBgCitpbnN0ZWFkIG9mCitgYGAKKyAgVEVTVChTb21lVGVzdCwgRG9l
c1RoaXMpIHsgLi4uIH0KK2BgYAoraW4gb3JkZXIgdG8gZGVmaW5lIGEgdGVzdC4KKworQ3VycmVu
dGx5LCB0aGUgZm9sbG93aW5nIGBURVNUYCwgYEZBSUxgLCBgU1VDQ0VFRGAsIGFuZCB0aGUgYmFz
aWMgY29tcGFyaXNvbiBhc3NlcnRpb24gbWFjcm9zIGNhbiBoYXZlIGFsdGVybmF0aXZlIG5hbWVz
LiBZb3UgY2FuIHNlZSB0aGUgZnVsbCBsaXN0IG9mIGNvdmVyZWQgbWFjcm9zIFtoZXJlXShodHRw
Oi8vd3d3Lmdvb2dsZS5jb20vY29kZXNlYXJjaD9xPWlmKyFHVEVTVF9ET05UX0RFRklORV9cdyUy
QitwYWNrYWdlOmh0dHA6Ly9nb29nbGV0ZXN0XC5nb29nbGVjb2RlXC5jb20rZmlsZTovaW5jbHVk
ZS9ndGVzdC9ndGVzdC5oKS4gTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gdGhlICJB
dm9pZGluZyBNYWNybyBOYW1lIENsYXNoZXMiIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBmaWxlLgor
CisjIyBNeSBxdWVzdGlvbiBpcyBub3QgY292ZXJlZCBpbiB5b3VyIEZBUSEgIyMKKworSWYgeW91
IGNhbm5vdCBmaW5kIHRoZSBhbnN3ZXIgdG8geW91ciBxdWVzdGlvbiBpbiB0aGlzIEZBUSwgdGhl
cmUgYXJlCitzb21lIG90aGVyIHJlc291cmNlcyB5b3UgY2FuIHVzZToKKworICAxLiByZWFkIG90
aGVyIFt3aWtpIHBhZ2VzXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC93L2xp
c3QpLAorICAxLiBzZWFyY2ggdGhlIG1haWxpbmcgbGlzdCBbYXJjaGl2ZV0oaHR0cDovL2dyb3Vw
cy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZXRlc3RmcmFtZXdvcmsvdG9waWNzKSwKKyAgMS4gYXNr
IGl0IG9uIFtnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb21dKG1haWx0bzpnb29n
bGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20pIGFuZCBzb21lb25lIHdpbGwgYW5zd2Vy
IGl0ICh0byBwcmV2ZW50IHNwYW0sIHdlIHJlcXVpcmUgeW91IHRvIGpvaW4gdGhlIFtkaXNjdXNz
aW9uIGdyb3VwXShodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xldGVzdGZyYW1l
d29yaykgYmVmb3JlIHlvdSBjYW4gcG9zdC4pLgorCitQbGVhc2Ugbm90ZSB0aGF0IGNyZWF0aW5n
IGFuIGlzc3VlIGluIHRoZQorW2lzc3VlIHRyYWNrZXJdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20v
cC9nb29nbGV0ZXN0L2lzc3Vlcy9saXN0KSBpcyBfbm90XworYSBnb29kIHdheSB0byBnZXQgeW91
ciBhbnN3ZXIsIGFzIGl0IGlzIG1vbml0b3JlZCBpbmZyZXF1ZW50bHkgYnkgYQordmVyeSBzbWFs
bCBudW1iZXIgb2YgcGVvcGxlLgorCitXaGVuIGFza2luZyBhIHF1ZXN0aW9uLCBpdCdzIGhlbHBm
dWwgdG8gcHJvdmlkZSBhcyBtdWNoIG9mIHRoZQorZm9sbG93aW5nIGluZm9ybWF0aW9uIGFzIHBv
c3NpYmxlIChwZW9wbGUgY2Fubm90IGhlbHAgeW91IGlmIHRoZXJlJ3MKK25vdCBlbm91Z2ggaW5m
b3JtYXRpb24gaW4geW91ciBxdWVzdGlvbik6CisKKyAgKiB0aGUgdmVyc2lvbiAob3IgdGhlIHJl
dmlzaW9uIG51bWJlciBpZiB5b3UgY2hlY2sgb3V0IGZyb20gU1ZOIGRpcmVjdGx5KSBvZiBHb29n
bGUgVGVzdCB5b3UgdXNlIChHb29nbGUgVGVzdCBpcyB1bmRlciBhY3RpdmUgZGV2ZWxvcG1lbnQs
IHNvIGl0J3MgcG9zc2libGUgdGhhdCB5b3VyIHByb2JsZW0gaGFzIGJlZW4gc29sdmVkIGluIGEg
bGF0ZXIgdmVyc2lvbiksCisgICogeW91ciBvcGVyYXRpbmcgc3lzdGVtLAorICAqIHRoZSBuYW1l
IGFuZCB2ZXJzaW9uIG9mIHlvdXIgY29tcGlsZXIsCisgICogdGhlIGNvbXBsZXRlIGNvbW1hbmQg
bGluZSBmbGFncyB5b3UgZ2l2ZSB0byB5b3VyIGNvbXBpbGVyLAorICAqIHRoZSBjb21wbGV0ZSBj
b21waWxlciBlcnJvciBtZXNzYWdlcyAoaWYgdGhlIHF1ZXN0aW9uIGlzIGFib3V0IGNvbXBpbGF0
aW9uKSwKKyAgKiB0aGUgX2FjdHVhbF8gY29kZSAoaWRlYWxseSwgYSBtaW5pbWFsIGJ1dCBjb21w
bGV0ZSBwcm9ncmFtKSB0aGF0IGhhcyB0aGUgcHJvYmxlbSB5b3UgZW5jb3VudGVyLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV82X1ByaW1lci5tZCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfNl9QcmltZXIubWQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQ4NDBl
ZjQ1YjljYTU3ZjE1YjA5NzQ0ZjNiODBhYTE3ZjA5NjQ2YQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfNl9QcmltZXIubWQKQEAgLTAsMCArMSw1MDEg
QEAKKworCisjIEludHJvZHVjdGlvbjogV2h5IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcms/
ICMKKworX0dvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmtfIGhlbHBzIHlvdSB3cml0ZSBiZXR0
ZXIgQysrIHRlc3RzLgorCitObyBtYXR0ZXIgd2hldGhlciB5b3Ugd29yayBvbiBMaW51eCwgV2lu
ZG93cywgb3IgYSBNYWMsIGlmIHlvdSB3cml0ZSBDKysgY29kZSwKK0dvb2dsZSBUZXN0IGNhbiBo
ZWxwIHlvdS4KKworU28gd2hhdCBtYWtlcyBhIGdvb2QgdGVzdCwgYW5kIGhvdyBkb2VzIEdvb2ds
ZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgZml0IGluPyBXZSBiZWxpZXZlOgorICAxLiBUZXN0cyBz
aG91bGQgYmUgX2luZGVwZW5kZW50XyBhbmQgX3JlcGVhdGFibGVfLiBJdCdzIGEgcGFpbiB0byBk
ZWJ1ZyBhIHRlc3QgdGhhdCBzdWNjZWVkcyBvciBmYWlscyBhcyBhIHJlc3VsdCBvZiBvdGhlciB0
ZXN0cy4gIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgaXNvbGF0ZXMgdGhlIHRlc3RzIGJ5
IHJ1bm5pbmcgZWFjaCBvZiB0aGVtIG9uIGEgZGlmZmVyZW50IG9iamVjdC4gV2hlbiBhIHRlc3Qg
ZmFpbHMsIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgYWxsb3dzIHlvdSB0byBydW4gaXQg
aW4gaXNvbGF0aW9uIGZvciBxdWljayBkZWJ1Z2dpbmcuCisgIDEuIFRlc3RzIHNob3VsZCBiZSB3
ZWxsIF9vcmdhbml6ZWRfIGFuZCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3RlZCBj
b2RlLiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBncm91cHMgcmVsYXRlZCB0ZXN0cyBp
bnRvIHRlc3QgY2FzZXMgdGhhdCBjYW4gc2hhcmUgZGF0YSBhbmQgc3Vicm91dGluZXMuIFRoaXMg
Y29tbW9uIHBhdHRlcm4gaXMgZWFzeSB0byByZWNvZ25pemUgYW5kIG1ha2VzIHRlc3RzIGVhc3kg
dG8gbWFpbnRhaW4uIFN1Y2ggY29uc2lzdGVuY3kgaXMgZXNwZWNpYWxseSBoZWxwZnVsIHdoZW4g
cGVvcGxlIHN3aXRjaCBwcm9qZWN0cyBhbmQgc3RhcnQgdG8gd29yayBvbiBhIG5ldyBjb2RlIGJh
c2UuCisgIDEuIFRlc3RzIHNob3VsZCBiZSBfcG9ydGFibGVfIGFuZCBfcmV1c2FibGVfLiBUaGUg
b3Blbi1zb3VyY2UgY29tbXVuaXR5IGhhcyBhIGxvdCBvZiBjb2RlIHRoYXQgaXMgcGxhdGZvcm0t
bmV1dHJhbCwgaXRzIHRlc3RzIHNob3VsZCBhbHNvIGJlIHBsYXRmb3JtLW5ldXRyYWwuICBHb29n
bGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIHdvcmtzIG9uIGRpZmZlcmVudCBPU2VzLCB3aXRoIGRp
ZmZlcmVudCBjb21waWxlcnMgKGdjYywgTVNWQywgYW5kIG90aGVycyksIHdpdGggb3Igd2l0aG91
dCBleGNlcHRpb25zLCBzbyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIHRlc3RzIGNhbiBl
YXNpbHkgd29yayB3aXRoIGEgdmFyaWV0eSBvZiBjb25maWd1cmF0aW9ucy4gIChOb3RlIHRoYXQg
dGhlIGN1cnJlbnQgcmVsZWFzZSBvbmx5IGNvbnRhaW5zIGJ1aWxkIHNjcmlwdHMgZm9yIExpbnV4
IC0gd2UgYXJlIGFjdGl2ZWx5IHdvcmtpbmcgb24gc2NyaXB0cyBmb3Igb3RoZXIgcGxhdGZvcm1z
LikKKyAgMS4gV2hlbiB0ZXN0cyBmYWlsLCB0aGV5IHNob3VsZCBwcm92aWRlIGFzIG11Y2ggX2lu
Zm9ybWF0aW9uXyBhYm91dCB0aGUgcHJvYmxlbSBhcyBwb3NzaWJsZS4gR29vZ2xlIEMrKyBUZXN0
aW5nIEZyYW1ld29yayBkb2Vzbid0IHN0b3AgYXQgdGhlIGZpcnN0IHRlc3QgZmFpbHVyZS4gSW5z
dGVhZCwgaXQgb25seSBzdG9wcyB0aGUgY3VycmVudCB0ZXN0IGFuZCBjb250aW51ZXMgd2l0aCB0
aGUgbmV4dC4gWW91IGNhbiBhbHNvIHNldCB1cCB0ZXN0cyB0aGF0IHJlcG9ydCBub24tZmF0YWwg
ZmFpbHVyZXMgYWZ0ZXIgd2hpY2ggdGhlIGN1cnJlbnQgdGVzdCBjb250aW51ZXMuIFRodXMsIHlv
dSBjYW4gZGV0ZWN0IGFuZCBmaXggbXVsdGlwbGUgYnVncyBpbiBhIHNpbmdsZSBydW4tZWRpdC1j
b21waWxlIGN5Y2xlLgorICAxLiBUaGUgdGVzdGluZyBmcmFtZXdvcmsgc2hvdWxkIGxpYmVyYXRl
IHRlc3Qgd3JpdGVycyBmcm9tIGhvdXNla2VlcGluZyBjaG9yZXMgYW5kIGxldCB0aGVtIGZvY3Vz
IG9uIHRoZSB0ZXN0IF9jb250ZW50Xy4gIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgYXV0
b21hdGljYWxseSBrZWVwcyB0cmFjayBvZiBhbGwgdGVzdHMgZGVmaW5lZCwgYW5kIGRvZXNuJ3Qg
cmVxdWlyZSB0aGUgdXNlciB0byBlbnVtZXJhdGUgdGhlbSBpbiBvcmRlciB0byBydW4gdGhlbS4K
KyAgMS4gVGVzdHMgc2hvdWxkIGJlIF9mYXN0Xy4gV2l0aCBHb29nbGUgQysrIFRlc3RpbmcgRnJh
bWV3b3JrLCB5b3UgY2FuIHJldXNlIHNoYXJlZCByZXNvdXJjZXMgYWNyb3NzIHRlc3RzIGFuZCBw
YXkgZm9yIHRoZSBzZXQtdXAvdGVhci1kb3duIG9ubHkgb25jZSwgd2l0aG91dCBtYWtpbmcgdGVz
dHMgZGVwZW5kIG9uIGVhY2ggb3RoZXIuCisKK1NpbmNlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFt
ZXdvcmsgaXMgYmFzZWQgb24gdGhlIHBvcHVsYXIgeFVuaXQKK2FyY2hpdGVjdHVyZSwgeW91J2xs
IGZlZWwgcmlnaHQgYXQgaG9tZSBpZiB5b3UndmUgdXNlZCBKVW5pdCBvciBQeVVuaXQgYmVmb3Jl
LgorSWYgbm90LCBpdCB3aWxsIHRha2UgeW91IGFib3V0IDEwIG1pbnV0ZXMgdG8gbGVhcm4gdGhl
IGJhc2ljcyBhbmQgZ2V0IHN0YXJ0ZWQuCitTbyBsZXQncyBnbyEKKworX05vdGU6XyBXZSBzb21l
dGltZXMgcmVmZXIgdG8gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBpbmZvcm1hbGx5Cith
cyBfR29vZ2xlIFRlc3RfLgorCisjIFNldHRpbmcgdXAgYSBOZXcgVGVzdCBQcm9qZWN0ICMKKwor
VG8gd3JpdGUgYSB0ZXN0IHByb2dyYW0gdXNpbmcgR29vZ2xlIFRlc3QsIHlvdSBuZWVkIHRvIGNv
bXBpbGUgR29vZ2xlCitUZXN0IGludG8gYSBsaWJyYXJ5IGFuZCBsaW5rIHlvdXIgdGVzdCB3aXRo
IGl0LiAgV2UgcHJvdmlkZSBidWlsZAorZmlsZXMgZm9yIHNvbWUgcG9wdWxhciBidWlsZCBzeXN0
ZW1zOiBgbXN2Yy9gIGZvciBWaXN1YWwgU3R1ZGlvLAorYHhjb2RlL2AgZm9yIE1hYyBYY29kZSwg
YG1ha2UvYCBmb3IgR05VIG1ha2UsIGBjb2RlZ2Vhci9gIGZvciBCb3JsYW5kCitDKysgQnVpbGRl
ciwgYW5kIHRoZSBhdXRvdG9vbHMgc2NyaXB0IChkZXByZWNhdGVkKSBhbmQKK2BDTWFrZUxpc3Rz
LnR4dGAgZm9yIENNYWtlIChyZWNvbW1lbmRlZCkgaW4gdGhlIEdvb2dsZSBUZXN0IHJvb3QKK2Rp
cmVjdG9yeS4gIElmIHlvdXIgYnVpbGQgc3lzdGVtIGlzIG5vdCBvbiB0aGlzIGxpc3QsIHlvdSBj
YW4gdGFrZSBhCitsb29rIGF0IGBtYWtlL01ha2VmaWxlYCB0byBsZWFybiBob3cgR29vZ2xlIFRl
c3Qgc2hvdWxkIGJlIGNvbXBpbGVkCisoYmFzaWNhbGx5IHlvdSB3YW50IHRvIGNvbXBpbGUgYHNy
Yy9ndGVzdC1hbGwuY2NgIHdpdGggYEdURVNUX1JPT1RgCithbmQgYEdURVNUX1JPT1QvaW5jbHVk
ZWAgaW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0aCwgd2hlcmUgYEdURVNUX1JPT1RgCitpcyB0aGUg
R29vZ2xlIFRlc3Qgcm9vdCBkaXJlY3RvcnkpLgorCitPbmNlIHlvdSBhcmUgYWJsZSB0byBjb21w
aWxlIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5LCB5b3Ugc2hvdWxkCitjcmVhdGUgYSBwcm9qZWN0
IG9yIGJ1aWxkIHRhcmdldCBmb3IgeW91ciB0ZXN0IHByb2dyYW0uICBNYWtlIHN1cmUgeW91Cito
YXZlIGBHVEVTVF9ST09UL2luY2x1ZGVgIGluIHRoZSBoZWFkZXIgc2VhcmNoIHBhdGggc28gdGhh
dCB0aGUKK2NvbXBpbGVyIGNhbiBmaW5kIGAiZ3Rlc3QvZ3Rlc3QuaCJgIHdoZW4gY29tcGlsaW5n
IHlvdXIgdGVzdC4gIFNldCB1cAoreW91ciB0ZXN0IHByb2plY3QgdG8gbGluayB3aXRoIHRoZSBH
b29nbGUgVGVzdCBsaWJyYXJ5IChmb3IgZXhhbXBsZSwKK2luIFZpc3VhbCBTdHVkaW8sIHRoaXMg
aXMgZG9uZSBieSBhZGRpbmcgYSBkZXBlbmRlbmN5IG9uCitgZ3Rlc3QudmNwcm9qYCkuCisKK0lm
IHlvdSBzdGlsbCBoYXZlIHF1ZXN0aW9ucywgdGFrZSBhIGxvb2sgYXQgaG93IEdvb2dsZSBUZXN0
J3Mgb3duCit0ZXN0cyBhcmUgYnVpbHQgYW5kIHVzZSB0aGVtIGFzIGV4YW1wbGVzLgorCisjIEJh
c2ljIENvbmNlcHRzICMKKworV2hlbiB1c2luZyBHb29nbGUgVGVzdCwgeW91IHN0YXJ0IGJ5IHdy
aXRpbmcgX2Fzc2VydGlvbnNfLCB3aGljaCBhcmUgc3RhdGVtZW50cwordGhhdCBjaGVjayB3aGV0
aGVyIGEgY29uZGl0aW9uIGlzIHRydWUuIEFuIGFzc2VydGlvbidzIHJlc3VsdCBjYW4gYmUgX3N1
Y2Nlc3NfLAorX25vbmZhdGFsIGZhaWx1cmVfLCBvciBfZmF0YWwgZmFpbHVyZV8uIElmIGEgZmF0
YWwgZmFpbHVyZSBvY2N1cnMsIGl0IGFib3J0cwordGhlIGN1cnJlbnQgZnVuY3Rpb247IG90aGVy
d2lzZSB0aGUgcHJvZ3JhbSBjb250aW51ZXMgbm9ybWFsbHkuCisKK19UZXN0c18gdXNlIGFzc2Vy
dGlvbnMgdG8gdmVyaWZ5IHRoZSB0ZXN0ZWQgY29kZSdzIGJlaGF2aW9yLiBJZiBhIHRlc3QgY3Jh
c2hlcworb3IgaGFzIGEgZmFpbGVkIGFzc2VydGlvbiwgdGhlbiBpdCBfZmFpbHNfOyBvdGhlcndp
c2UgaXQgX3N1Y2NlZWRzXy4KKworQSBfdGVzdCBjYXNlXyBjb250YWlucyBvbmUgb3IgbWFueSB0
ZXN0cy4gWW91IHNob3VsZCBncm91cCB5b3VyIHRlc3RzIGludG8gdGVzdAorY2FzZXMgdGhhdCBy
ZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3RlZCBjb2RlLiBXaGVuIG11bHRpcGxlIHRl
c3RzIGluIGEKK3Rlc3QgY2FzZSBuZWVkIHRvIHNoYXJlIGNvbW1vbiBvYmplY3RzIGFuZCBzdWJy
b3V0aW5lcywgeW91IGNhbiBwdXQgdGhlbSBpbnRvIGEKK190ZXN0IGZpeHR1cmVfIGNsYXNzLgor
CitBIF90ZXN0IHByb2dyYW1fIGNhbiBjb250YWluIG11bHRpcGxlIHRlc3QgY2FzZXMuCisKK1dl
J2xsIG5vdyBleHBsYWluIGhvdyB0byB3cml0ZSBhIHRlc3QgcHJvZ3JhbSwgc3RhcnRpbmcgYXQg
dGhlIGluZGl2aWR1YWwKK2Fzc2VydGlvbiBsZXZlbCBhbmQgYnVpbGRpbmcgdXAgdG8gdGVzdHMg
YW5kIHRlc3QgY2FzZXMuCisKKyMgQXNzZXJ0aW9ucyAjCisKK0dvb2dsZSBUZXN0IGFzc2VydGlv
bnMgYXJlIG1hY3JvcyB0aGF0IHJlc2VtYmxlIGZ1bmN0aW9uIGNhbGxzLiBZb3UgdGVzdCBhCitj
bGFzcyBvciBmdW5jdGlvbiBieSBtYWtpbmcgYXNzZXJ0aW9ucyBhYm91dCBpdHMgYmVoYXZpb3Iu
IFdoZW4gYW4gYXNzZXJ0aW9uCitmYWlscywgR29vZ2xlIFRlc3QgcHJpbnRzIHRoZSBhc3NlcnRp
b24ncyBzb3VyY2UgZmlsZSBhbmQgbGluZSBudW1iZXIgbG9jYXRpb24sCithbG9uZyB3aXRoIGEg
ZmFpbHVyZSBtZXNzYWdlLiBZb3UgbWF5IGFsc28gc3VwcGx5IGEgY3VzdG9tIGZhaWx1cmUgbWVz
c2FnZQord2hpY2ggd2lsbCBiZSBhcHBlbmRlZCB0byBHb29nbGUgVGVzdCdzIG1lc3NhZ2UuCisK
K1RoZSBhc3NlcnRpb25zIGNvbWUgaW4gcGFpcnMgdGhhdCB0ZXN0IHRoZSBzYW1lIHRoaW5nIGJ1
dCBoYXZlIGRpZmZlcmVudAorZWZmZWN0cyBvbiB0aGUgY3VycmVudCBmdW5jdGlvbi4gYEFTU0VS
VF8qYCB2ZXJzaW9ucyBnZW5lcmF0ZSBmYXRhbCBmYWlsdXJlcword2hlbiB0aGV5IGZhaWwsIGFu
ZCAqKmFib3J0IHRoZSBjdXJyZW50IGZ1bmN0aW9uKiouIGBFWFBFQ1RfKmAgdmVyc2lvbnMgZ2Vu
ZXJhdGUKK25vbmZhdGFsIGZhaWx1cmVzLCB3aGljaCBkb24ndCBhYm9ydCB0aGUgY3VycmVudCBm
dW5jdGlvbi4gVXN1YWxseSBgRVhQRUNUXypgCithcmUgcHJlZmVycmVkLCBhcyB0aGV5IGFsbG93
IG1vcmUgdGhhbiBvbmUgZmFpbHVyZXMgdG8gYmUgcmVwb3J0ZWQgaW4gYSB0ZXN0LgorSG93ZXZl
ciwgeW91IHNob3VsZCB1c2UgYEFTU0VSVF8qYCBpZiBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8g
Y29udGludWUgd2hlbgordGhlIGFzc2VydGlvbiBpbiBxdWVzdGlvbiBmYWlscy4KKworU2luY2Ug
YSBmYWlsZWQgYEFTU0VSVF8qYCByZXR1cm5zIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gaW1t
ZWRpYXRlbHksCitwb3NzaWJseSBza2lwcGluZyBjbGVhbi11cCBjb2RlIHRoYXQgY29tZXMgYWZ0
ZXIgaXQsIGl0IG1heSBjYXVzZSBhIHNwYWNlIGxlYWsuCitEZXBlbmRpbmcgb24gdGhlIG5hdHVy
ZSBvZiB0aGUgbGVhaywgaXQgbWF5IG9yIG1heSBub3QgYmUgd29ydGggZml4aW5nIC0gc28KK2tl
ZXAgdGhpcyBpbiBtaW5kIGlmIHlvdSBnZXQgYSBoZWFwIGNoZWNrZXIgZXJyb3IgaW4gYWRkaXRp
b24gdG8gYXNzZXJ0aW9uCitlcnJvcnMuCisKK1RvIHByb3ZpZGUgYSBjdXN0b20gZmFpbHVyZSBt
ZXNzYWdlLCBzaW1wbHkgc3RyZWFtIGl0IGludG8gdGhlIG1hY3JvIHVzaW5nIHRoZQorYDw8YCBv
cGVyYXRvciwgb3IgYSBzZXF1ZW5jZSBvZiBzdWNoIG9wZXJhdG9ycy4gQW4gZXhhbXBsZToKK2Bg
YAorQVNTRVJUX0VRKHguc2l6ZSgpLCB5LnNpemUoKSkgPDwgIlZlY3RvcnMgeCBhbmQgeSBhcmUg
b2YgdW5lcXVhbCBsZW5ndGgiOworCitmb3IgKGludCBpID0gMDsgaSA8IHguc2l6ZSgpOyArK2kp
IHsKKyAgRVhQRUNUX0VRKHhbaV0sIHlbaV0pIDw8ICJWZWN0b3JzIHggYW5kIHkgZGlmZmVyIGF0
IGluZGV4ICIgPDwgaTsKK30KK2BgYAorCitBbnl0aGluZyB0aGF0IGNhbiBiZSBzdHJlYW1lZCB0
byBhbiBgb3N0cmVhbWAgY2FuIGJlIHN0cmVhbWVkIHRvIGFuIGFzc2VydGlvbgorbWFjcm8tLWlu
IHBhcnRpY3VsYXIsIEMgc3RyaW5ncyBhbmQgYHN0cmluZ2Agb2JqZWN0cy4gSWYgYSB3aWRlIHN0
cmluZworKGB3Y2hhcl90KmAsIGBUQ0hBUipgIGluIGBVTklDT0RFYCBtb2RlIG9uIFdpbmRvd3Ms
IG9yIGBzdGQ6OndzdHJpbmdgKSBpcworc3RyZWFtZWQgdG8gYW4gYXNzZXJ0aW9uLCBpdCB3aWxs
IGJlIHRyYW5zbGF0ZWQgdG8gVVRGLTggd2hlbiBwcmludGVkLgorCisjIyBCYXNpYyBBc3NlcnRp
b25zICMjCisKK1RoZXNlIGFzc2VydGlvbnMgZG8gYmFzaWMgdHJ1ZS9mYWxzZSBjb25kaXRpb24g
dGVzdGluZy4KK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiog
fCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfVFJVRShgX2NvbmRpdGlvbl9gKWA7
ICB8IGBFWFBFQ1RfVFJVRShgX2NvbmRpdGlvbl9gKWA7ICAgfCBfY29uZGl0aW9uXyBpcyB0cnVl
IHwKK3wgYEFTU0VSVF9GQUxTRShgX2NvbmRpdGlvbl9gKWA7IHwgYEVYUEVDVF9GQUxTRShgX2Nv
bmRpdGlvbl9gKWA7ICB8IF9jb25kaXRpb25fIGlzIGZhbHNlIHwKKworUmVtZW1iZXIsIHdoZW4g
dGhleSBmYWlsLCBgQVNTRVJUXypgIHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUgYW5kCityZXR1cm5z
IGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24sIHdoaWxlIGBFWFBFQ1RfKmAgeWllbGRzIGEgbm9u
ZmF0YWwKK2ZhaWx1cmUsIGFsbG93aW5nIHRoZSBmdW5jdGlvbiB0byBjb250aW51ZSBydW5uaW5n
LiBJbiBlaXRoZXIgY2FzZSwgYW4KK2Fzc2VydGlvbiBmYWlsdXJlIG1lYW5zIGl0cyBjb250YWlu
aW5nIHRlc3QgZmFpbHMuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgor
CisjIyBCaW5hcnkgQ29tcGFyaXNvbiAjIworCitUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGFzc2Vy
dGlvbnMgdGhhdCBjb21wYXJlIHR3byB2YWx1ZXMuCisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8
ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8YEFTU0VS
VF9FUShgX2V4cGVjdGVkX2AsIGBfYWN0dWFsX2ApO2B8YEVYUEVDVF9FUShgX2V4cGVjdGVkX2As
IGBfYWN0dWFsX2ApO2B8IF9leHBlY3RlZF8gYD09YCBfYWN0dWFsXyB8Cit8YEFTU0VSVF9ORShg
X3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9ORShgX3ZhbDFfYCwgYF92YWwyX2Ap
O2AgICAgICB8IF92YWwxXyBgIT1gIF92YWwyXyB8Cit8YEFTU0VSVF9MVChgX3ZhbDFfYCwgYF92
YWwyX2ApO2AgICAgICB8YEVYUEVDVF9MVChgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8IF92
YWwxXyBgPGAgX3ZhbDJfIHwKK3xgQVNTRVJUX0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAg
IHxgRVhQRUNUX0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA8PWAgX3Zh
bDJfIHwKK3xgQVNTRVJUX0dUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHxgRVhQRUNUX0dU
KGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA+YCBfdmFsMl8gfAorfGBBU1NF
UlRfR0UoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfGBFWFBFQ1RfR0UoYF92YWwxX2AsIGBf
dmFsMl9gKTtgICAgICAgfCBfdmFsMV8gYD49YCBfdmFsMl8gfAorCitJbiB0aGUgZXZlbnQgb2Yg
YSBmYWlsdXJlLCBHb29nbGUgVGVzdCBwcmludHMgYm90aCBfdmFsMV8gYW5kIF92YWwyXworLiBJ
biBgQVNTRVJUX0VRKmAgYW5kIGBFWFBFQ1RfRVEqYCAoYW5kIGFsbCBvdGhlciBlcXVhbGl0eSBh
c3NlcnRpb25zCit3ZSdsbCBpbnRyb2R1Y2UgbGF0ZXIpLCB5b3Ugc2hvdWxkIHB1dCB0aGUgZXhw
cmVzc2lvbiB5b3Ugd2FudCB0byB0ZXN0CitpbiB0aGUgcG9zaXRpb24gb2YgX2FjdHVhbF8sIGFu
ZCBwdXQgaXRzIGV4cGVjdGVkIHZhbHVlIGluIF9leHBlY3RlZF8sCithcyBHb29nbGUgVGVzdCdz
IGZhaWx1cmUgbWVzc2FnZXMgYXJlIG9wdGltaXplZCBmb3IgdGhpcyBjb252ZW50aW9uLgorCitW
YWx1ZSBhcmd1bWVudHMgbXVzdCBiZSBjb21wYXJhYmxlIGJ5IHRoZSBhc3NlcnRpb24ncyBjb21w
YXJpc29uCitvcGVyYXRvciBvciB5b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IuICBXZSB1c2Vk
IHRvIHJlcXVpcmUgdGhlCithcmd1bWVudHMgdG8gc3VwcG9ydCB0aGUgYDw8YCBvcGVyYXRvciBm
b3Igc3RyZWFtaW5nIHRvIGFuIGBvc3RyZWFtYCwKK2J1dCBpdCdzIG5vIGxvbmdlciBuZWNlc3Nh
cnkgc2luY2UgdjEuNi4wIChpZiBgPDxgIGlzIHN1cHBvcnRlZCwgaXQKK3dpbGwgYmUgY2FsbGVk
IHRvIHByaW50IHRoZSBhcmd1bWVudHMgd2hlbiB0aGUgYXNzZXJ0aW9uIGZhaWxzOworb3RoZXJ3
aXNlIEdvb2dsZSBUZXN0IHdpbGwgYXR0ZW1wdCB0byBwcmludCB0aGVtIGluIHRoZSBiZXN0IHdh
eSBpdAorY2FuLiBGb3IgbW9yZSBkZXRhaWxzIGFuZCBob3cgdG8gY3VzdG9taXplIHRoZSBwcmlu
dGluZyBvZiB0aGUKK2FyZ3VtZW50cywgc2VlIHRoaXMgR29vZ2xlIE1vY2sgW3JlY2lwZV0oLi4v
Li4vZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3RlYWNoaW5nLWdvb2dsZS1tb2NrLWhvdy10
by1wcmludC15b3VyLXZhbHVlcykuKS4KKworVGhlc2UgYXNzZXJ0aW9ucyBjYW4gd29yayB3aXRo
IGEgdXNlci1kZWZpbmVkIHR5cGUsIGJ1dCBvbmx5IGlmIHlvdSBkZWZpbmUgdGhlCitjb3JyZXNw
b25kaW5nIGNvbXBhcmlzb24gb3BlcmF0b3IgKGUuZy4gYD09YCwgYDxgLCBldGMpLiAgSWYgdGhl
IGNvcnJlc3BvbmRpbmcKK29wZXJhdG9yIGlzIGRlZmluZWQsIHByZWZlciB1c2luZyB0aGUgYEFT
U0VSVF8qKClgIG1hY3JvcyBiZWNhdXNlIHRoZXkgd2lsbAorcHJpbnQgb3V0IG5vdCBvbmx5IHRo
ZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24sIGJ1dCB0aGUgdHdvIG9wZXJhbmRzIGFzIHdlbGwu
CisKK0FyZ3VtZW50cyBhcmUgYWx3YXlzIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuIFRoZXJlZm9y
ZSwgaXQncyBPSyBmb3IgdGhlCithcmd1bWVudHMgdG8gaGF2ZSBzaWRlIGVmZmVjdHMuIEhvd2V2
ZXIsIGFzIHdpdGggYW55IG9yZGluYXJ5IEMvQysrIGZ1bmN0aW9uLAordGhlIGFyZ3VtZW50cycg
ZXZhbHVhdGlvbiBvcmRlciBpcyB1bmRlZmluZWQgKGkuZS4gdGhlIGNvbXBpbGVyIGlzIGZyZWUg
dG8KK2Nob29zZSBhbnkgb3JkZXIpIGFuZCB5b3VyIGNvZGUgc2hvdWxkIG5vdCBkZXBlbmQgb24g
YW55IHBhcnRpY3VsYXIgYXJndW1lbnQKK2V2YWx1YXRpb24gb3JkZXIuCisKK2BBU1NFUlRfRVEo
KWAgZG9lcyBwb2ludGVyIGVxdWFsaXR5IG9uIHBvaW50ZXJzLiBJZiB1c2VkIG9uIHR3byBDIHN0
cmluZ3MsIGl0Cit0ZXN0cyBpZiB0aGV5IGFyZSBpbiB0aGUgc2FtZSBtZW1vcnkgbG9jYXRpb24s
IG5vdCBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgdmFsdWUuCitUaGVyZWZvcmUsIGlmIHlvdSB3YW50
IHRvIGNvbXBhcmUgQyBzdHJpbmdzIChlLmcuIGBjb25zdCBjaGFyKmApIGJ5IHZhbHVlLCB1c2UK
K2BBU1NFUlRfU1RSRVEoKWAgLCB3aGljaCB3aWxsIGJlIGRlc2NyaWJlZCBsYXRlciBvbi4gSW4g
cGFydGljdWxhciwgdG8gYXNzZXJ0Cit0aGF0IGEgQyBzdHJpbmcgaXMgYE5VTExgLCB1c2UgYEFT
U0VSVF9TVFJFUShOVUxMLCBjX3N0cmluZylgIC4gSG93ZXZlciwgdG8KK2NvbXBhcmUgdHdvIGBz
dHJpbmdgIG9iamVjdHMsIHlvdSBzaG91bGQgdXNlIGBBU1NFUlRfRVFgLgorCitNYWNyb3MgaW4g
dGhpcyBzZWN0aW9uIHdvcmsgd2l0aCBib3RoIG5hcnJvdyBhbmQgd2lkZSBzdHJpbmcgb2JqZWN0
cyAoYHN0cmluZ2AKK2FuZCBgd3N0cmluZ2ApLgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdp
bmRvd3MsIE1hYy4KKworIyMgU3RyaW5nIENvbXBhcmlzb24gIyMKKworVGhlIGFzc2VydGlvbnMg
aW4gdGhpcyBncm91cCBjb21wYXJlIHR3byAqKkMgc3RyaW5ncyoqLiBJZiB5b3Ugd2FudCB0byBj
b21wYXJlCit0d28gYHN0cmluZ2Agb2JqZWN0cywgdXNlIGBFWFBFQ1RfRVFgLCBgRVhQRUNUX05F
YCwgYW5kIGV0YyBpbnN0ZWFkLgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFs
IGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX1NUUkVRKGBf
ZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgICAgfCBgRVhQRUNUX1NUUkVRKGBf
ZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgICAgIHwgdGhlIHR3byBDIHN0cmlu
Z3MgaGF2ZSB0aGUgc2FtZSBjb250ZW50IHwKK3wgYEFTU0VSVF9TVFJORShgX3N0cjFfYCwgYF9z
dHIyX2ApO2AgICAgfCBgRVhQRUNUX1NUUk5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YCAgICAgfCB0
aGUgdHdvIEMgc3RyaW5ncyBoYXZlIGRpZmZlcmVudCBjb250ZW50IHwKK3wgYEFTU0VSVF9TVFJD
QVNFRVEoYF9leHBlY3RlZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YHwgYEVYUEVDVF9TVFJD
QVNFRVEoYF9leHBlY3RlZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YCB8IHRoZSB0d28gQyBz
dHJpbmdzIGhhdmUgdGhlIHNhbWUgY29udGVudCwgaWdub3JpbmcgY2FzZSB8Cit8IGBBU1NFUlRf
U1RSQ0FTRU5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YHwgYEVYUEVDVF9TVFJDQVNFTkUoYF9zdHIx
X2AsIGBfc3RyMl9gKTtgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSBkaWZmZXJlbnQgY29udGVu
dCwgaWdub3JpbmcgY2FzZSB8CisKK05vdGUgdGhhdCAiQ0FTRSIgaW4gYW4gYXNzZXJ0aW9uIG5h
bWUgbWVhbnMgdGhhdCBjYXNlIGlzIGlnbm9yZWQuCisKK2AqU1RSRVEqYCBhbmQgYCpTVFJORSpg
IGFsc28gYWNjZXB0IHdpZGUgQyBzdHJpbmdzIChgd2NoYXJfdCpgKS4gSWYgYQorY29tcGFyaXNv
biBvZiB0d28gd2lkZSBzdHJpbmdzIGZhaWxzLCB0aGVpciB2YWx1ZXMgd2lsbCBiZSBwcmludGVk
IGFzIFVURi04CituYXJyb3cgc3RyaW5ncy4KKworQSBgTlVMTGAgcG9pbnRlciBhbmQgYW4gZW1w
dHkgc3RyaW5nIGFyZSBjb25zaWRlcmVkIF9kaWZmZXJlbnRfLgorCitfQXZhaWxhYmlsaXR5Xzog
TGludXgsIFdpbmRvd3MsIE1hYy4KKworU2VlIGFsc286IEZvciBtb3JlIHN0cmluZyBjb21wYXJp
c29uIHRyaWNrcyAoc3Vic3RyaW5nLCBwcmVmaXgsIHN1ZmZpeCwgYW5kCityZWd1bGFyIGV4cHJl
c3Npb24gbWF0Y2hpbmcsIGZvciBleGFtcGxlKSwgc2VlIHRoZSBbQWR2YW5jZWQgR29vZ2xlIFRl
c3QgR3VpZGVdKFYxXzZfQWR2YW5jZWRHdWlkZS5tZCkuCisKKyMgU2ltcGxlIFRlc3RzICMKKwor
VG8gY3JlYXRlIGEgdGVzdDoKKyAgMS4gVXNlIHRoZSBgVEVTVCgpYCBtYWNybyB0byBkZWZpbmUg
YW5kIG5hbWUgYSB0ZXN0IGZ1bmN0aW9uLCBUaGVzZSBhcmUgb3JkaW5hcnkgQysrIGZ1bmN0aW9u
cyB0aGF0IGRvbid0IHJldHVybiBhIHZhbHVlLgorICAxLiBJbiB0aGlzIGZ1bmN0aW9uLCBhbG9u
ZyB3aXRoIGFueSB2YWxpZCBDKysgc3RhdGVtZW50cyB5b3Ugd2FudCB0byBpbmNsdWRlLCB1c2Ug
dGhlIHZhcmlvdXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyB0byBjaGVjayB2YWx1ZXMuCisgIDEu
IFRoZSB0ZXN0J3MgcmVzdWx0IGlzIGRldGVybWluZWQgYnkgdGhlIGFzc2VydGlvbnM7IGlmIGFu
eSBhc3NlcnRpb24gaW4gdGhlIHRlc3QgZmFpbHMgKGVpdGhlciBmYXRhbGx5IG9yIG5vbi1mYXRh
bGx5KSwgb3IgaWYgdGhlIHRlc3QgY3Jhc2hlcywgdGhlIGVudGlyZSB0ZXN0IGZhaWxzLiBPdGhl
cndpc2UsIGl0IHN1Y2NlZWRzLgorCitgYGAKK1RFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFt
ZSkgeworIC4uLiB0ZXN0IGJvZHkgLi4uCit9CitgYGAKKworCitgVEVTVCgpYCBhcmd1bWVudHMg
Z28gZnJvbSBnZW5lcmFsIHRvIHNwZWNpZmljLiBUaGUgX2ZpcnN0XyBhcmd1bWVudCBpcyB0aGUK
K25hbWUgb2YgdGhlIHRlc3QgY2FzZSwgYW5kIHRoZSBfc2Vjb25kXyBhcmd1bWVudCBpcyB0aGUg
dGVzdCdzIG5hbWUgd2l0aGluIHRoZQordGVzdCBjYXNlLiBCb3RoIG5hbWVzIG11c3QgYmUgdmFs
aWQgQysrIGlkZW50aWZpZXJzLCBhbmQgdGhleSBzaG91bGQgbm90IGNvbnRhaW4gdW5kZXJzY29y
ZSAoYF9gKS4gQSB0ZXN0J3MgX2Z1bGwgbmFtZV8gY29uc2lzdHMgb2YgaXRzIGNvbnRhaW5pbmcg
dGVzdCBjYXNlIGFuZCBpdHMKK2luZGl2aWR1YWwgbmFtZS4gVGVzdHMgZnJvbSBkaWZmZXJlbnQg
dGVzdCBjYXNlcyBjYW4gaGF2ZSB0aGUgc2FtZSBpbmRpdmlkdWFsCituYW1lLgorCitGb3IgZXhh
bXBsZSwgbGV0J3MgdGFrZSBhIHNpbXBsZSBpbnRlZ2VyIGZ1bmN0aW9uOgorYGBgCitpbnQgRmFj
dG9yaWFsKGludCBuKTsgLy8gUmV0dXJucyB0aGUgZmFjdG9yaWFsIG9mIG4KK2BgYAorCitBIHRl
c3QgY2FzZSBmb3IgdGhpcyBmdW5jdGlvbiBtaWdodCBsb29rIGxpa2U6CitgYGAKKy8vIFRlc3Rz
IGZhY3RvcmlhbCBvZiAwLgorVEVTVChGYWN0b3JpYWxUZXN0LCBIYW5kbGVzWmVyb0lucHV0KSB7
CisgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoMCkpOworfQorCisvLyBUZXN0cyBmYWN0b3JpYWwg
b2YgcG9zaXRpdmUgbnVtYmVycy4KK1RFU1QoRmFjdG9yaWFsVGVzdCwgSGFuZGxlc1Bvc2l0aXZl
SW5wdXQpIHsKKyAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgxKSk7CisgIEVYUEVDVF9FUSgyLCBG
YWN0b3JpYWwoMikpOworICBFWFBFQ1RfRVEoNiwgRmFjdG9yaWFsKDMpKTsKKyAgRVhQRUNUX0VR
KDQwMzIwLCBGYWN0b3JpYWwoOCkpOworfQorYGBgCisKK0dvb2dsZSBUZXN0IGdyb3VwcyB0aGUg
dGVzdCByZXN1bHRzIGJ5IHRlc3QgY2FzZXMsIHNvIGxvZ2ljYWxseS1yZWxhdGVkIHRlc3RzCitz
aG91bGQgYmUgaW4gdGhlIHNhbWUgdGVzdCBjYXNlOyBpbiBvdGhlciB3b3JkcywgdGhlIGZpcnN0
IGFyZ3VtZW50IHRvIHRoZWlyCitgVEVTVCgpYCBzaG91bGQgYmUgdGhlIHNhbWUuIEluIHRoZSBh
Ym92ZSBleGFtcGxlLCB3ZSBoYXZlIHR3byB0ZXN0cywKK2BIYW5kbGVzWmVyb0lucHV0YCBhbmQg
YEhhbmRsZXNQb3NpdGl2ZUlucHV0YCwgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUgdGVzdAorY2Fz
ZSBgRmFjdG9yaWFsVGVzdGAuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFj
LgorCisjIFRlc3QgRml4dHVyZXM6IFVzaW5nIHRoZSBTYW1lIERhdGEgQ29uZmlndXJhdGlvbiBm
b3IgTXVsdGlwbGUgVGVzdHMgIworCitJZiB5b3UgZmluZCB5b3Vyc2VsZiB3cml0aW5nIHR3byBv
ciBtb3JlIHRlc3RzIHRoYXQgb3BlcmF0ZSBvbiBzaW1pbGFyIGRhdGEsCit5b3UgY2FuIHVzZSBh
IF90ZXN0IGZpeHR1cmVfLiBJdCBhbGxvd3MgeW91IHRvIHJldXNlIHRoZSBzYW1lIGNvbmZpZ3Vy
YXRpb24gb2YKK29iamVjdHMgZm9yIHNldmVyYWwgZGlmZmVyZW50IHRlc3RzLgorCitUbyBjcmVh
dGUgYSBmaXh0dXJlLCBqdXN0OgorICAxLiBEZXJpdmUgYSBjbGFzcyBmcm9tIGA6OnRlc3Rpbmc6
OlRlc3RgIC4gU3RhcnQgaXRzIGJvZHkgd2l0aCBgcHJvdGVjdGVkOmAgb3IgYHB1YmxpYzpgIGFz
IHdlJ2xsIHdhbnQgdG8gYWNjZXNzIGZpeHR1cmUgbWVtYmVycyBmcm9tIHN1Yi1jbGFzc2VzLgor
ICAxLiBJbnNpZGUgdGhlIGNsYXNzLCBkZWNsYXJlIGFueSBvYmplY3RzIHlvdSBwbGFuIHRvIHVz
ZS4KKyAgMS4gSWYgbmVjZXNzYXJ5LCB3cml0ZSBhIGRlZmF1bHQgY29uc3RydWN0b3Igb3IgYFNl
dFVwKClgIGZ1bmN0aW9uIHRvIHByZXBhcmUgdGhlIG9iamVjdHMgZm9yIGVhY2ggdGVzdC4gQSBj
b21tb24gbWlzdGFrZSBpcyB0byBzcGVsbCBgU2V0VXAoKWAgYXMgYFNldHVwKClgIHdpdGggYSBz
bWFsbCBgdWAgLSBkb24ndCBsZXQgdGhhdCBoYXBwZW4gdG8geW91LgorICAxLiBJZiBuZWNlc3Nh
cnksIHdyaXRlIGEgZGVzdHJ1Y3RvciBvciBgVGVhckRvd24oKWAgZnVuY3Rpb24gdG8gcmVsZWFz
ZSBhbnkgcmVzb3VyY2VzIHlvdSBhbGxvY2F0ZWQgaW4gYFNldFVwKClgIC4gVG8gbGVhcm4gd2hl
biB5b3Ugc2hvdWxkIHVzZSB0aGUgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBhbmQgd2hlbiB5b3Ug
c2hvdWxkIHVzZSBgU2V0VXAoKS9UZWFyRG93bigpYCwgcmVhZCB0aGlzIFtGQVEgZW50cnldKFYx
XzZfRkFRLm1kI3Nob3VsZC1pLXVzZS10aGUtY29uc3RydWN0b3JkZXN0cnVjdG9yLW9mLXRoZS10
ZXN0LWZpeHR1cmUtb3ItdGhlLXNldC11cHRlYXItZG93bi1mdW5jdGlvbikuCisgIDEuIElmIG5l
ZWRlZCwgZGVmaW5lIHN1YnJvdXRpbmVzIGZvciB5b3VyIHRlc3RzIHRvIHNoYXJlLgorCitXaGVu
IHVzaW5nIGEgZml4dHVyZSwgdXNlIGBURVNUX0YoKWAgaW5zdGVhZCBvZiBgVEVTVCgpYCBhcyBp
dCBhbGxvd3MgeW91IHRvCithY2Nlc3Mgb2JqZWN0cyBhbmQgc3Vicm91dGluZXMgaW4gdGhlIHRl
c3QgZml4dHVyZToKK2BgYAorVEVTVF9GKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIHsKKyAu
Li4gdGVzdCBib2R5IC4uLgorfQorYGBgCisKK0xpa2UgYFRFU1QoKWAsIHRoZSBmaXJzdCBhcmd1
bWVudCBpcyB0aGUgdGVzdCBjYXNlIG5hbWUsIGJ1dCBmb3IgYFRFU1RfRigpYAordGhpcyBtdXN0
IGJlIHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuIFlvdSd2ZSBwcm9iYWJseSBn
dWVzc2VkOiBgX0ZgCitpcyBmb3IgZml4dHVyZS4KKworVW5mb3J0dW5hdGVseSwgdGhlIEMrKyBt
YWNybyBzeXN0ZW0gZG9lcyBub3QgYWxsb3cgdXMgdG8gY3JlYXRlIGEgc2luZ2xlIG1hY3JvCit0
aGF0IGNhbiBoYW5kbGUgYm90aCB0eXBlcyBvZiB0ZXN0cy4gVXNpbmcgdGhlIHdyb25nIG1hY3Jv
IGNhdXNlcyBhIGNvbXBpbGVyCitlcnJvci4KKworQWxzbywgeW91IG11c3QgZmlyc3QgZGVmaW5l
IGEgdGVzdCBmaXh0dXJlIGNsYXNzIGJlZm9yZSB1c2luZyBpdCBpbiBhCitgVEVTVF9GKClgLCBv
ciB5b3UnbGwgZ2V0IHRoZSBjb21waWxlciBlcnJvciAiYHZpcnR1YWwgb3V0c2lkZSBjbGFzcwor
ZGVjbGFyYXRpb25gIi4KKworRm9yIGVhY2ggdGVzdCBkZWZpbmVkIHdpdGggYFRFU1RfRigpYCwg
R29vZ2xlIFRlc3Qgd2lsbDoKKyAgMS4gQ3JlYXRlIGEgX2ZyZXNoXyB0ZXN0IGZpeHR1cmUgYXQg
cnVudGltZQorICAxLiBJbW1lZGlhdGVseSBpbml0aWFsaXplIGl0IHZpYSBgU2V0VXAoKWAgLAor
ICAxLiBSdW4gdGhlIHRlc3QKKyAgMS4gQ2xlYW4gdXAgYnkgY2FsbGluZyBgVGVhckRvd24oKWAK
KyAgMS4gRGVsZXRlIHRoZSB0ZXN0IGZpeHR1cmUuICBOb3RlIHRoYXQgZGlmZmVyZW50IHRlc3Rz
IGluIHRoZSBzYW1lIHRlc3QgY2FzZSBoYXZlIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgb2JqZWN0
cywgYW5kIEdvb2dsZSBUZXN0IGFsd2F5cyBkZWxldGVzIGEgdGVzdCBmaXh0dXJlIGJlZm9yZSBp
dCBjcmVhdGVzIHRoZSBuZXh0IG9uZS4gR29vZ2xlIFRlc3QgZG9lcyBub3QgcmV1c2UgdGhlIHNh
bWUgdGVzdCBmaXh0dXJlIGZvciBtdWx0aXBsZSB0ZXN0cy4gQW55IGNoYW5nZXMgb25lIHRlc3Qg
bWFrZXMgdG8gdGhlIGZpeHR1cmUgZG8gbm90IGFmZmVjdCBvdGhlciB0ZXN0cy4KKworQXMgYW4g
ZXhhbXBsZSwgbGV0J3Mgd3JpdGUgdGVzdHMgZm9yIGEgRklGTyBxdWV1ZSBjbGFzcyBuYW1lZCBg
UXVldWVgLCB3aGljaAoraGFzIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlOgorYGBgCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgRT4gLy8gRSBpcyB0aGUgZWxlbWVudCB0eXBlLgorY2xhc3MgUXVldWUgewor
IHB1YmxpYzoKKyAgUXVldWUoKTsKKyAgdm9pZCBFbnF1ZXVlKGNvbnN0IEUmIGVsZW1lbnQpOwor
ICBFKiBEZXF1ZXVlKCk7IC8vIFJldHVybnMgTlVMTCBpZiB0aGUgcXVldWUgaXMgZW1wdHkuCisg
IHNpemVfdCBzaXplKCkgY29uc3Q7CisgIC4uLgorfTsKK2BgYAorCitGaXJzdCwgZGVmaW5lIGEg
Zml4dHVyZSBjbGFzcy4gQnkgY29udmVudGlvbiwgeW91IHNob3VsZCBnaXZlIGl0IHRoZSBuYW1l
CitgRm9vVGVzdGAgd2hlcmUgYEZvb2AgaXMgdGhlIGNsYXNzIGJlaW5nIHRlc3RlZC4KK2BgYAor
Y2xhc3MgUXVldWVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgor
ICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgcTFfLkVucXVldWUoMSk7CisgICAgcTJfLkVu
cXVldWUoMik7CisgICAgcTJfLkVucXVldWUoMyk7CisgIH0KKworICAvLyB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKSB7fQorCisgIFF1ZXVlPGludD4gcTBfOworICBRdWV1ZTxpbnQ+IHExXzsKKyAg
UXVldWU8aW50PiBxMl87Cit9OworYGBgCisKK0luIHRoaXMgY2FzZSwgYFRlYXJEb3duKClgIGlz
IG5vdCBuZWVkZWQgc2luY2Ugd2UgZG9uJ3QgaGF2ZSB0byBjbGVhbiB1cCBhZnRlcgorZWFjaCB0
ZXN0LCBvdGhlciB0aGFuIHdoYXQncyBhbHJlYWR5IGRvbmUgYnkgdGhlIGRlc3RydWN0b3IuCisK
K05vdyB3ZSdsbCB3cml0ZSB0ZXN0cyB1c2luZyBgVEVTVF9GKClgIGFuZCB0aGlzIGZpeHR1cmUu
CitgYGAKK1RFU1RfRihRdWV1ZVRlc3QsIElzRW1wdHlJbml0aWFsbHkpIHsKKyAgRVhQRUNUX0VR
KDAsIHEwXy5zaXplKCkpOworfQorCitURVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVlV29ya3MpIHsK
KyAgaW50KiBuID0gcTBfLkRlcXVldWUoKTsKKyAgRVhQRUNUX0VRKE5VTEwsIG4pOworCisgIG4g
PSBxMV8uRGVxdWV1ZSgpOworICBBU1NFUlRfVFJVRShuICE9IE5VTEwpOworICBFWFBFQ1RfRVEo
MSwgKm4pOworICBFWFBFQ1RfRVEoMCwgcTFfLnNpemUoKSk7CisgIGRlbGV0ZSBuOworCisgIG4g
PSBxMl8uRGVxdWV1ZSgpOworICBBU1NFUlRfVFJVRShuICE9IE5VTEwpOworICBFWFBFQ1RfRVEo
MiwgKm4pOworICBFWFBFQ1RfRVEoMSwgcTJfLnNpemUoKSk7CisgIGRlbGV0ZSBuOworfQorYGBg
CisKK1RoZSBhYm92ZSB1c2VzIGJvdGggYEFTU0VSVF8qYCBhbmQgYEVYUEVDVF8qYCBhc3NlcnRp
b25zLiBUaGUgcnVsZSBvZiB0aHVtYiBpcwordG8gdXNlIGBFWFBFQ1RfKmAgd2hlbiB5b3Ugd2Fu
dCB0aGUgdGVzdCB0byBjb250aW51ZSB0byByZXZlYWwgbW9yZSBlcnJvcnMKK2FmdGVyIHRoZSBh
c3NlcnRpb24gZmFpbHVyZSwgYW5kIHVzZSBgQVNTRVJUXypgIHdoZW4gY29udGludWluZyBhZnRl
ciBmYWlsdXJlCitkb2Vzbid0IG1ha2Ugc2Vuc2UuIEZvciBleGFtcGxlLCB0aGUgc2Vjb25kIGFz
c2VydGlvbiBpbiB0aGUgYERlcXVldWVgIHRlc3QgaXMKK2BBU1NFUlRfVFJVRShuICE9IE5VTEwp
YCwgYXMgd2UgbmVlZCB0byBkZXJlZmVyZW5jZSB0aGUgcG9pbnRlciBgbmAgbGF0ZXIsCit3aGlj
aCB3b3VsZCBsZWFkIHRvIGEgc2VnZmF1bHQgd2hlbiBgbmAgaXMgYE5VTExgLgorCitXaGVuIHRo
ZXNlIHRlc3RzIHJ1biwgdGhlIGZvbGxvd2luZyBoYXBwZW5zOgorICAxLiBHb29nbGUgVGVzdCBj
b25zdHJ1Y3RzIGEgYFF1ZXVlVGVzdGAgb2JqZWN0IChsZXQncyBjYWxsIGl0IGB0MWAgKS4KKyAg
MS4gYHQxLlNldFVwKClgIGluaXRpYWxpemVzIGB0MWAgLgorICAxLiBUaGUgZmlyc3QgdGVzdCAo
IGBJc0VtcHR5SW5pdGlhbGx5YCApIHJ1bnMgb24gYHQxYCAuCisgIDEuIGB0MS5UZWFyRG93bigp
YCBjbGVhbnMgdXAgYWZ0ZXIgdGhlIHRlc3QgZmluaXNoZXMuCisgIDEuIGB0MWAgaXMgZGVzdHJ1
Y3RlZC4KKyAgMS4gVGhlIGFib3ZlIHN0ZXBzIGFyZSByZXBlYXRlZCBvbiBhbm90aGVyIGBRdWV1
ZVRlc3RgIG9iamVjdCwgdGhpcyB0aW1lIHJ1bm5pbmcgdGhlIGBEZXF1ZXVlV29ya3NgIHRlc3Qu
CisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCitfTm90ZV86IEdvb2ds
ZSBUZXN0IGF1dG9tYXRpY2FsbHkgc2F2ZXMgYWxsIF9Hb29nbGUgVGVzdF8gZmxhZ3Mgd2hlbiBh
IHRlc3QKK29iamVjdCBpcyBjb25zdHJ1Y3RlZCwgYW5kIHJlc3RvcmVzIHRoZW0gd2hlbiBpdCBp
cyBkZXN0cnVjdGVkLgorCisjIEludm9raW5nIHRoZSBUZXN0cyAjCisKK2BURVNUKClgIGFuZCBg
VEVTVF9GKClgIGltcGxpY2l0bHkgcmVnaXN0ZXIgdGhlaXIgdGVzdHMgd2l0aCBHb29nbGUgVGVz
dC4gU28sIHVubGlrZSB3aXRoIG1hbnkgb3RoZXIgQysrIHRlc3RpbmcgZnJhbWV3b3JrcywgeW91
IGRvbid0IGhhdmUgdG8gcmUtbGlzdCBhbGwgeW91ciBkZWZpbmVkIHRlc3RzIGluIG9yZGVyIHRv
IHJ1biB0aGVtLgorCitBZnRlciBkZWZpbmluZyB5b3VyIHRlc3RzLCB5b3UgY2FuIHJ1biB0aGVt
IHdpdGggYFJVTl9BTExfVEVTVFMoKWAgLCB3aGljaCByZXR1cm5zIGAwYCBpZiBhbGwgdGhlIHRl
c3RzIGFyZSBzdWNjZXNzZnVsLCBvciBgMWAgb3RoZXJ3aXNlLiBOb3RlIHRoYXQgYFJVTl9BTExf
VEVTVFMoKWAgcnVucyBfYWxsIHRlc3RzXyBpbiB5b3VyIGxpbmsgdW5pdCAtLSB0aGV5IGNhbiBi
ZSBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLCBvciBldmVuIGRpZmZlcmVudCBzb3VyY2UgZmls
ZXMuCisKK1doZW4gaW52b2tlZCwgdGhlIGBSVU5fQUxMX1RFU1RTKClgIG1hY3JvOgorICAxLiBT
YXZlcyB0aGUgc3RhdGUgb2YgYWxsICBHb29nbGUgVGVzdCBmbGFncy4KKyAgMS4gQ3JlYXRlcyBh
IHRlc3QgZml4dHVyZSBvYmplY3QgZm9yIHRoZSBmaXJzdCB0ZXN0LgorICAxLiBJbml0aWFsaXpl
cyBpdCB2aWEgYFNldFVwKClgLgorICAxLiBSdW5zIHRoZSB0ZXN0IG9uIHRoZSBmaXh0dXJlIG9i
amVjdC4KKyAgMS4gQ2xlYW5zIHVwIHRoZSBmaXh0dXJlIHZpYSBgVGVhckRvd24oKWAuCisgIDEu
IERlbGV0ZXMgdGhlIGZpeHR1cmUuCisgIDEuIFJlc3RvcmVzIHRoZSBzdGF0ZSBvZiBhbGwgR29v
Z2xlIFRlc3QgZmxhZ3MuCisgIDEuIFJlcGVhdHMgdGhlIGFib3ZlIHN0ZXBzIGZvciB0aGUgbmV4
dCB0ZXN0LCB1bnRpbCBhbGwgdGVzdHMgaGF2ZSBydW4uCisKK0luIGFkZGl0aW9uLCBpZiB0aGUg
dGV4dCBmaXh0dXJlJ3MgY29uc3RydWN0b3IgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSBpbgor
c3RlcCAyLCB0aGVyZSBpcyBubyBwb2ludCBmb3Igc3RlcCAzIC0gNSBhbmQgdGhleSBhcmUgdGh1
cyBza2lwcGVkLiBTaW1pbGFybHksCitpZiBzdGVwIDMgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVy
ZSwgc3RlcCA0IHdpbGwgYmUgc2tpcHBlZC4KKworX0ltcG9ydGFudF86IFlvdSBtdXN0IG5vdCBp
Z25vcmUgdGhlIHJldHVybiB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYCwgb3IgYGdjY2AKK3dp
bGwgZ2l2ZSB5b3UgYSBjb21waWxlciBlcnJvci4gVGhlIHJhdGlvbmFsZSBmb3IgdGhpcyBkZXNp
Z24gaXMgdGhhdCB0aGUKK2F1dG9tYXRlZCB0ZXN0aW5nIHNlcnZpY2UgZGV0ZXJtaW5lcyB3aGV0
aGVyIGEgdGVzdCBoYXMgcGFzc2VkIGJhc2VkIG9uIGl0cworZXhpdCBjb2RlLCBub3Qgb24gaXRz
IHN0ZG91dC9zdGRlcnIgb3V0cHV0OyB0aHVzIHlvdXIgYG1haW4oKWAgZnVuY3Rpb24gbXVzdAor
cmV0dXJuIHRoZSB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYC4KKworQWxzbywgeW91IHNob3Vs
ZCBjYWxsIGBSVU5fQUxMX1RFU1RTKClgIG9ubHkgKipvbmNlKiouIENhbGxpbmcgaXQgbW9yZSB0
aGFuIG9uY2UKK2NvbmZsaWN0cyB3aXRoIHNvbWUgYWR2YW5jZWQgR29vZ2xlIFRlc3QgZmVhdHVy
ZXMgKGUuZy4gdGhyZWFkLXNhZmUgZGVhdGgKK3Rlc3RzKSBhbmQgdGh1cyBpcyBub3Qgc3VwcG9y
dGVkLgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyBXcml0aW5n
IHRoZSBtYWluKCkgRnVuY3Rpb24gIworCitZb3UgY2FuIHN0YXJ0IGZyb20gdGhpcyBib2lsZXJw
bGF0ZToKK2BgYAorI2luY2x1ZGUgInRoaXMvcGFja2FnZS9mb28uaCIKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCisvLyBUaGUgZml4dHVyZSBmb3IgdGVzdGluZyBj
bGFzcyBGb28uCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJv
dGVjdGVkOgorICAvLyBZb3UgY2FuIHJlbW92ZSBhbnkgb3IgYWxsIG9mIHRoZSBmb2xsb3dpbmcg
ZnVuY3Rpb25zIGlmIGl0cyBib2R5CisgIC8vIGlzIGVtcHR5LgorCisgIEZvb1Rlc3QoKSB7Cisg
ICAgLy8gWW91IGNhbiBkbyBzZXQtdXAgd29yayBmb3IgZWFjaCB0ZXN0IGhlcmUuCisgIH0KKwor
ICB2aXJ0dWFsIH5Gb29UZXN0KCkgeworICAgIC8vIFlvdSBjYW4gZG8gY2xlYW4tdXAgd29yayB0
aGF0IGRvZXNuJ3QgdGhyb3cgZXhjZXB0aW9ucyBoZXJlLgorICB9CisKKyAgLy8gSWYgdGhlIGNv
bnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIGFyZSBub3QgZW5vdWdoIGZvciBzZXR0aW5nIHVwCisg
IC8vIGFuZCBjbGVhbmluZyB1cCBlYWNoIHRlc3QsIHlvdSBjYW4gZGVmaW5lIHRoZSBmb2xsb3dp
bmcgbWV0aG9kczoKKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgLy8gQ29kZSBoZXJl
IHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjb25zdHJ1Y3RvciAocmlnaHQK
KyAgICAvLyBiZWZvcmUgZWFjaCB0ZXN0KS4KKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93
bigpIHsKKyAgICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIg
ZWFjaCB0ZXN0IChyaWdodAorICAgIC8vIGJlZm9yZSB0aGUgZGVzdHJ1Y3RvcikuCisgIH0KKwor
ICAvLyBPYmplY3RzIGRlY2xhcmVkIGhlcmUgY2FuIGJlIHVzZWQgYnkgYWxsIHRlc3RzIGluIHRo
ZSB0ZXN0IGNhc2UgZm9yIEZvby4KK307CisKKy8vIFRlc3RzIHRoYXQgdGhlIEZvbzo6QmFyKCkg
bWV0aG9kIGRvZXMgQWJjLgorVEVTVF9GKEZvb1Rlc3QsIE1ldGhvZEJhckRvZXNBYmMpIHsKKyAg
Y29uc3Qgc3RyaW5nIGlucHV0X2ZpbGVwYXRoID0gInRoaXMvcGFja2FnZS90ZXN0ZGF0YS9teWlu
cHV0ZmlsZS5kYXQiOworICBjb25zdCBzdHJpbmcgb3V0cHV0X2ZpbGVwYXRoID0gInRoaXMvcGFj
a2FnZS90ZXN0ZGF0YS9teW91dHB1dGZpbGUuZGF0IjsKKyAgRm9vIGY7CisgIEVYUEVDVF9FUSgw
LCBmLkJhcihpbnB1dF9maWxlcGF0aCwgb3V0cHV0X2ZpbGVwYXRoKSk7Cit9CisKKy8vIFRlc3Rz
IHRoYXQgRm9vIGRvZXMgWHl6LgorVEVTVF9GKEZvb1Rlc3QsIERvZXNYeXopIHsKKyAgLy8gRXhl
cmNpc2VzIHRoZSBYeXogZmVhdHVyZSBvZiBGb28uCit9CisKK30gIC8vIG5hbWVzcGFjZQorCitp
bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xl
VGVzdCgmYXJnYywgYXJndik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CitgYGAKKwor
VGhlIGA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClgIGZ1bmN0aW9uIHBhcnNlcyB0aGUgY29t
bWFuZCBsaW5lIGZvciBHb29nbGUKK1Rlc3QgZmxhZ3MsIGFuZCByZW1vdmVzIGFsbCByZWNvZ25p
emVkIGZsYWdzLiBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBjb250cm9sIGEKK3Rlc3QgcHJvZ3Jh
bSdzIGJlaGF2aW9yIHZpYSB2YXJpb3VzIGZsYWdzLCB3aGljaCB3ZSdsbCBjb3ZlciBpbiBbQWR2
YW5jZWRHdWlkZV0oVjFfNl9BZHZhbmNlZEd1aWRlLm1kKS4KK1lvdSBtdXN0IGNhbGwgdGhpcyBm
dW5jdGlvbiBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9URVNUUygpYCwgb3IgdGhlIGZsYWdzCit3
b24ndCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4KKworT24gV2luZG93cywgYEluaXRHb29nbGVU
ZXN0KClgIGFsc28gd29ya3Mgd2l0aCB3aWRlIHN0cmluZ3MsIHNvIGl0IGNhbiBiZSB1c2VkCitp
biBwcm9ncmFtcyBjb21waWxlZCBpbiBgVU5JQ09ERWAgbW9kZSBhcyB3ZWxsLgorCitCdXQgbWF5
YmUgeW91IHRoaW5rIHRoYXQgd3JpdGluZyBhbGwgdGhvc2UgbWFpbigpIGZ1bmN0aW9ucyBpcyB0
b28gbXVjaCB3b3JrPyBXZSBhZ3JlZSB3aXRoIHlvdSBjb21wbGV0ZWx5IGFuZCB0aGF0J3Mgd2h5
IEdvb2dsZSBUZXN0IHByb3ZpZGVzIGEgYmFzaWMgaW1wbGVtZW50YXRpb24gb2YgbWFpbigpLiBJ
ZiBpdCBmaXRzIHlvdXIgbmVlZHMsIHRoZW4ganVzdCBsaW5rIHlvdXIgdGVzdCB3aXRoIGd0ZXN0
XF9tYWluIGxpYnJhcnkgYW5kIHlvdSBhcmUgZ29vZCB0byBnby4KKworIyMgSW1wb3J0YW50IG5v
dGUgZm9yIFZpc3VhbCBDKysgdXNlcnMgIyMKK0lmIHlvdSBwdXQgeW91ciB0ZXN0cyBpbnRvIGEg
bGlicmFyeSBhbmQgeW91ciBgbWFpbigpYCBmdW5jdGlvbiBpcyBpbiBhIGRpZmZlcmVudCBsaWJy
YXJ5IG9yIGluIHlvdXIgLmV4ZSBmaWxlLCB0aG9zZSB0ZXN0cyB3aWxsIG5vdCBydW4uIFRoZSBy
ZWFzb24gaXMgYSBbYnVnXShodHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNvbS9mZWVkYmFjay92
aWV3ZmVlZGJhY2suYXNweD9GZWVkYmFja0lEPTI0NDQxMCZzaXRlaWQ9MjEwKSBpbiBWaXN1YWwg
QysrLiBXaGVuIHlvdSBkZWZpbmUgeW91ciB0ZXN0cywgR29vZ2xlIFRlc3QgY3JlYXRlcyBjZXJ0
YWluIHN0YXRpYyBvYmplY3RzIHRvIHJlZ2lzdGVyIHRoZW0uIFRoZXNlIG9iamVjdHMgYXJlIG5v
dCByZWZlcmVuY2VkIGZyb20gZWxzZXdoZXJlIGJ1dCB0aGVpciBjb25zdHJ1Y3RvcnMgYXJlIHN0
aWxsIHN1cHBvc2VkIHRvIHJ1bi4gV2hlbiBWaXN1YWwgQysrIGxpbmtlciBzZWVzIHRoYXQgbm90
aGluZyBpbiB0aGUgbGlicmFyeSBpcyByZWZlcmVuY2VkIGZyb20gb3RoZXIgcGxhY2VzIGl0IHRo
cm93cyB0aGUgbGlicmFyeSBvdXQuIFlvdSBoYXZlIHRvIHJlZmVyZW5jZSB5b3VyIGxpYnJhcnkg
d2l0aCB0ZXN0cyBmcm9tIHlvdXIgbWFpbiBwcm9ncmFtIHRvIGtlZXAgdGhlIGxpbmtlciBmcm9t
IGRpc2NhcmRpbmcgaXQuIEhlcmUgaXMgaG93IHRvIGRvIGl0LiBTb21ld2hlcmUgaW4geW91ciBs
aWJyYXJ5IGNvZGUgZGVjbGFyZSBhIGZ1bmN0aW9uOgorYGBgCitfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgaW50IFB1bGxJbk15TGlicmFyeSgpIHsgcmV0dXJuIDA7IH0KK2BgYAorSWYgeW91IHB1dCB5
b3VyIHRlc3RzIGluIGEgc3RhdGljIGxpYnJhcnkgKG5vdCBETEwpIHRoZW4gYF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KWAgaXMgbm90IHJlcXVpcmVkLiBOb3csIGluIHlvdXIgbWFpbiBwcm9ncmFtLCB3
cml0ZSBhIGNvZGUgdGhhdCBpbnZva2VzIHRoYXQgZnVuY3Rpb246CitgYGAKK2ludCBQdWxsSW5N
eUxpYnJhcnkoKTsKK3N0YXRpYyBpbnQgZHVtbXkgPSBQdWxsSW5NeUxpYnJhcnkoKTsKK2BgYAor
VGhpcyB3aWxsIGtlZXAgeW91ciB0ZXN0cyByZWZlcmVuY2VkIGFuZCB3aWxsIG1ha2UgdGhlbSBy
ZWdpc3RlciB0aGVtc2VsdmVzIGF0IHN0YXJ0dXAuCisKK0luIGFkZGl0aW9uLCBpZiB5b3UgZGVm
aW5lIHlvdXIgdGVzdHMgaW4gYSBzdGF0aWMgbGlicmFyeSwgYWRkIGAvT1BUOk5PUkVGYCB0byB5
b3VyIG1haW4gcHJvZ3JhbSBsaW5rZXIgb3B0aW9ucy4gSWYgeW91IHVzZSBNU1ZDKysgSURFLCBn
byB0byB5b3VyIC5leGUgcHJvamVjdCBwcm9wZXJ0aWVzL0NvbmZpZ3VyYXRpb24gUHJvcGVydGll
cy9MaW5rZXIvT3B0aW1pemF0aW9uIGFuZCBzZXQgUmVmZXJlbmNlcyBzZXR0aW5nIHRvIGBLZWVw
IFVucmVmZXJlbmNlZCBEYXRhICgvT1BUOk5PUkVGKWAuIFRoaXMgd2lsbCBrZWVwIFZpc3VhbCBD
KysgbGlua2VyIGZyb20gZGlzY2FyZGluZyBpbmRpdmlkdWFsIHN5bWJvbHMgZ2VuZXJhdGVkIGJ5
IHlvdXIgdGVzdHMgZnJvbSB0aGUgZmluYWwgZXhlY3V0YWJsZS4KKworVGhlcmUgaXMgb25lIG1v
cmUgcGl0ZmFsbCwgdGhvdWdoLiBJZiB5b3UgdXNlIEdvb2dsZSBUZXN0IGFzIGEgc3RhdGljIGxp
YnJhcnkgKHRoYXQncyBob3cgaXQgaXMgZGVmaW5lZCBpbiBndGVzdC52Y3Byb2opIHlvdXIgdGVz
dHMgbXVzdCBhbHNvIHJlc2lkZSBpbiBhIHN0YXRpYyBsaWJyYXJ5LiBJZiB5b3UgaGF2ZSB0byBo
YXZlIHRoZW0gaW4gYSBETEwsIHlvdSBfbXVzdF8gY2hhbmdlIEdvb2dsZSBUZXN0IHRvIGJ1aWxk
IGludG8gYSBETEwgYXMgd2VsbC4gT3RoZXJ3aXNlIHlvdXIgdGVzdHMgd2lsbCBub3QgcnVuIGNv
cnJlY3RseSBvciB3aWxsIG5vdCBydW4gYXQgYWxsLiBUaGUgZ2VuZXJhbCBjb25jbHVzaW9uIGhl
cmUgaXM6IG1ha2UgeW91ciBsaWZlIGVhc2llciAtIGRvIG5vdCB3cml0ZSB5b3VyIHRlc3RzIGlu
IGxpYnJhcmllcyEKKworIyBXaGVyZSB0byBHbyBmcm9tIEhlcmUgIworCitDb25ncmF0dWxhdGlv
bnMhIFlvdSd2ZSBsZWFybmVkIHRoZSBHb29nbGUgVGVzdCBiYXNpY3MuIFlvdSBjYW4gc3RhcnQg
d3JpdGluZworYW5kIHJ1bm5pbmcgR29vZ2xlIFRlc3QgdGVzdHMsIHJlYWQgc29tZSBbc2FtcGxl
c10oVjFfNl9TYW1wbGVzLm1kKSwgb3IgY29udGludWUgd2l0aAorW0FkdmFuY2VkR3VpZGVdKFYx
XzZfQWR2YW5jZWRHdWlkZS5tZCksIHdoaWNoIGRlc2NyaWJlcyBtYW55IG1vcmUgdXNlZnVsIEdv
b2dsZSBUZXN0IGZlYXR1cmVzLgorCisjIEtub3duIExpbWl0YXRpb25zICMKKworR29vZ2xlIFRl
c3QgaXMgZGVzaWduZWQgdG8gYmUgdGhyZWFkLXNhZmUuICBUaGUgaW1wbGVtZW50YXRpb24gaXMK
K3RocmVhZC1zYWZlIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGBwdGhyZWFkc2AgbGlicmFyeSBpcyBh
dmFpbGFibGUuICBJdAoraXMgY3VycmVudGx5IF91bnNhZmVfIHRvIHVzZSBHb29nbGUgVGVzdCBh
c3NlcnRpb25zIGZyb20gdHdvIHRocmVhZHMKK2NvbmN1cnJlbnRseSBvbiBvdGhlciBzeXN0ZW1z
IChlLmcuIFdpbmRvd3MpLiAgSW4gbW9zdCB0ZXN0cyB0aGlzIGlzCitub3QgYW4gaXNzdWUgYXMg
dXN1YWxseSB0aGUgYXNzZXJ0aW9ucyBhcmUgZG9uZSBpbiB0aGUgbWFpbiB0aHJlYWQuIElmCit5
b3Ugd2FudCB0byBoZWxwLCB5b3UgY2FuIHZvbHVudGVlciB0byBpbXBsZW1lbnQgdGhlIG5lY2Vz
c2FyeQorc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYGd0ZXN0LXBvcnQuaGAgZm9yIHlv
dXIgcGxhdGZvcm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1Yx
XzZfUHVtcE1hbnVhbC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfNl9QdW1w
TWFudWFsLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxODRmMTUzY2EyZWNhZDdjNjVjYjU4YzI3ZmIzMWJkNzIz
NzVmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1Yx
XzZfUHVtcE1hbnVhbC5tZApAQCAtMCwwICsxLDE3NyBAQAorCisKKzxiPlA8L2I+dW1wIGlzIDxi
PlU8L2I+c2VmdWwgZm9yIDxiPk08L2I+ZXRhIDxiPlA8L2I+cm9ncmFtbWluZy4KKworIyBUaGUg
UHJvYmxlbSAjCisKK1RlbXBsYXRlIGFuZCBtYWNybyBsaWJyYXJpZXMgb2Z0ZW4gbmVlZCB0byBk
ZWZpbmUgbWFueSBjbGFzc2VzLAorZnVuY3Rpb25zLCBvciBtYWNyb3MgdGhhdCB2YXJ5IG9ubHkg
KG9yIGFsbW9zdCBvbmx5KSBpbiB0aGUgbnVtYmVyIG9mCithcmd1bWVudHMgdGhleSB0YWtlLiBJ
dCdzIGEgbG90IG9mIHJlcGV0aXRpdmUsIG1lY2hhbmljYWwsIGFuZAorZXJyb3ItcHJvbmUgd29y
ay4KKworVmFyaWFkaWMgdGVtcGxhdGVzIGFuZCB2YXJpYWRpYyBtYWNyb3MgY2FuIGFsbGV2aWF0
ZSB0aGUgcHJvYmxlbS4KK0hvd2V2ZXIsIHdoaWxlIGJvdGggYXJlIGJlaW5nIGNvbnNpZGVyZWQg
YnkgdGhlIEMrKyBjb21taXR0ZWUsIG5laXRoZXIKK2lzIGluIHRoZSBzdGFuZGFyZCB5ZXQgb3Ig
d2lkZWx5IHN1cHBvcnRlZCBieSBjb21waWxlcnMuICBUaHVzIHRoZXkKK2FyZSBvZnRlbiBub3Qg
YSBnb29kIGNob2ljZSwgZXNwZWNpYWxseSB3aGVuIHlvdXIgY29kZSBuZWVkcyB0byBiZQorcG9y
dGFibGUuIEFuZCB0aGVpciBjYXBhYmlsaXRpZXMgYXJlIHN0aWxsIGxpbWl0ZWQuCisKK0FzIGEg
cmVzdWx0LCBhdXRob3JzIG9mIHN1Y2ggbGlicmFyaWVzIG9mdGVuIGhhdmUgdG8gd3JpdGUgc2Ny
aXB0cyB0bworZ2VuZXJhdGUgdGhlaXIgaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIsIG91ciBleHBl
cmllbmNlIGlzIHRoYXQgaXQncwordGVkaW91cyB0byB3cml0ZSBzdWNoIHNjcmlwdHMsIHdoaWNo
IHRlbmQgdG8gcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mCit0aGUgZ2VuZXJhdGVkIGNvZGUgcG9v
cmx5IGFuZCBhcmUgb2Z0ZW4gaGFyZCB0byByZWFkIGFuZCBlZGl0LiBGb3IKK2V4YW1wbGUsIGEg
c21hbGwgY2hhbmdlIG5lZWRlZCBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUgbWF5IHJlcXVpcmUgc29t
ZQorbm9uLWludHVpdGl2ZSwgbm9uLXRyaXZpYWwgY2hhbmdlcyBpbiB0aGUgc2NyaXB0LiBUaGlz
IGlzIGVzcGVjaWFsbHkKK3BhaW5mdWwgd2hlbiBleHBlcmltZW50aW5nIHdpdGggdGhlIGNvZGUu
CisKKyMgT3VyIFNvbHV0aW9uICMKKworUHVtcCAoZm9yIFB1bXAgaXMgVXNlZnVsIGZvciBNZXRh
IFByb2dyYW1taW5nLCBQcmV0dHkgVXNlZnVsIGZvciBNZXRhCitQcm9ncmFtbWluZywgb3IgUHJh
Y3RpY2FsIFV0aWxpdHkgZm9yIE1ldGEgUHJvZ3JhbW1pbmcsIHdoaWNoZXZlciB5b3UKK3ByZWZl
cikgaXMgYSBzaW1wbGUgbWV0YS1wcm9ncmFtbWluZyB0b29sIGZvciBDKysuIFRoZSBpZGVhIGlz
IHRoYXQgYQorcHJvZ3JhbW1lciB3cml0ZXMgYSBgZm9vLnB1bXBgIGZpbGUgd2hpY2ggY29udGFp
bnMgQysrIGNvZGUgcGx1cyBtZXRhCitjb2RlIHRoYXQgbWFuaXB1bGF0ZXMgdGhlIEMrKyBjb2Rl
LiBUaGUgbWV0YSBjb2RlIGNhbiBoYW5kbGUKK2l0ZXJhdGlvbnMgb3ZlciBhIHJhbmdlLCBuZXN0
ZWQgaXRlcmF0aW9ucywgbG9jYWwgbWV0YSB2YXJpYWJsZQorZGVmaW5pdGlvbnMsIHNpbXBsZSBh
cml0aG1ldGljLCBhbmQgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMuIFlvdSBjYW4KK3ZpZXcgaXQg
YXMgYSBzbWFsbCBEb21haW4tU3BlY2lmaWMgTGFuZ3VhZ2UuIFRoZSBtZXRhIGxhbmd1YWdlIGlz
CitkZXNpZ25lZCB0byBiZSBub24taW50cnVzaXZlIChzLnQuIGl0IHdvbid0IGNvbmZ1c2UgRW1h
Y3MnIEMrKyBtb2RlLAorZm9yIGV4YW1wbGUpIGFuZCBjb25jaXNlLCBtYWtpbmcgUHVtcCBjb2Rl
IGludHVpdGl2ZSBhbmQgZWFzeSB0bworbWFpbnRhaW4uCisKKyMjIEhpZ2hsaWdodHMgIyMKKwor
ICAqIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBpbiBhIHNpbmdsZSBQeXRob24gc2NyaXB0IGFuZCB0
aHVzIHVsdHJhIHBvcnRhYmxlOiBubyBidWlsZCBvciBpbnN0YWxsYXRpb24gaXMgbmVlZGVkIGFu
ZCBpdCB3b3JrcyBjcm9zcyBwbGF0Zm9ybXMuCisgICogUHVtcCB0cmllcyB0byBiZSBzbWFydCB3
aXRoIHJlc3BlY3QgdG8gW0dvb2dsZSdzIHN0eWxlIGd1aWRlXShodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvZ29vZ2xlLXN0eWxlZ3VpZGUvKTogaXQgYnJlYWtzIGxvbmcgbGluZXMgKGVhc3kgdG8g
aGF2ZSB3aGVuIHRoZXkgYXJlIGdlbmVyYXRlZCkgYXQgYWNjZXB0YWJsZSBwbGFjZXMgdG8gZml0
IHdpdGhpbiA4MCBjb2x1bW5zIGFuZCBpbmRlbnQgdGhlIGNvbnRpbnVhdGlvbiBsaW5lcyBjb3Jy
ZWN0bHkuCisgICogVGhlIGZvcm1hdCBpcyBodW1hbi1yZWFkYWJsZSBhbmQgbW9yZSBjb25jaXNl
IHRoYW4gWE1MLgorICAqIFRoZSBmb3JtYXQgd29ya3MgcmVsYXRpdmVseSB3ZWxsIHdpdGggRW1h
Y3MnIEMrKyBtb2RlLgorCisjIyBFeGFtcGxlcyAjIworCitUaGUgZm9sbG93aW5nIFB1bXAgY29k
ZSAod2hlcmUgbWV0YSBrZXl3b3JkcyBzdGFydCB3aXRoIGAkYCwgYFtbYCBhbmQgYF1dYCBhcmUg
bWV0YSBicmFja2V0cywgYW5kIGAkJGAgc3RhcnRzIGEgbWV0YSBjb21tZW50IHRoYXQgZW5kcyB3
aXRoIHRoZSBsaW5lKToKKworYGBgCiskdmFyIG4gPSAzICAgICAkJCBEZWZpbmVzIGEgbWV0YSB2
YXJpYWJsZSBuLgorJHJhbmdlIGkgMC4ubiAgJCQgRGVjbGFyZXMgdGhlIHJhbmdlIG9mIG1ldGEg
aXRlcmF0b3IgaSAoaW5jbHVzaXZlKS4KKyRmb3IgaSBbWworICAgICAgICAgICAgICAgJCQgTWV0
YSBsb29wLgorLy8gRm9vJGkgZG9lcyBibGFoIGZvciAkaS1hcnkgcHJlZGljYXRlcy4KKyRyYW5n
ZSBqIDEuLmkKK3RlbXBsYXRlIDxzaXplX3QgTiAkZm9yIGogW1ssIHR5cGVuYW1lIEEkal1dPgor
Y2xhc3MgRm9vJGkgeworJGlmIGkgPT0gMCBbWworICBibGFoIGE7CitdXSAkZWxpZiBpIDw9IDIg
W1sKKyAgYmxhaCBiOworXV0gJGVsc2UgW1sKKyAgYmxhaCBjOworXV0KK307CisKK11dCitgYGAK
Kword2lsbCBiZSB0cmFuc2xhdGVkIGJ5IHRoZSBQdW1wIGNvbXBpbGVyIHRvOgorCitgYGAKKy8v
IEZvbzAgZG9lcyBibGFoIGZvciAwLWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBO
PgorY2xhc3MgRm9vMCB7CisgIGJsYWggYTsKK307CisKKy8vIEZvbzEgZG9lcyBibGFoIGZvciAx
LWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBBMT4KK2NsYXNz
IEZvbzEgeworICBibGFoIGI7Cit9OworCisvLyBGb28yIGRvZXMgYmxhaCBmb3IgMi1hcnkgcHJl
ZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgor
Y2xhc3MgRm9vMiB7CisgIGJsYWggYjsKK307CisKKy8vIEZvbzMgZG9lcyBibGFoIGZvciAzLWFy
eSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUg
QTIsIHR5cGVuYW1lIEEzPgorY2xhc3MgRm9vMyB7CisgIGJsYWggYzsKK307CitgYGAKKworSW4g
YW5vdGhlciBleGFtcGxlLAorCitgYGAKKyRyYW5nZSBpIDEuLm4KK0Z1bmMoJGZvciBpICsgW1th
JGldXSk7CiskJCBUaGUgdGV4dCBiZXR3ZWVuIGkgYW5kIFtbIGlzIHRoZSBzZXBhcmF0b3IgYmV0
d2VlbiBpdGVyYXRpb25zLgorYGBgCisKK3dpbGwgZ2VuZXJhdGUgb25lIG9mIHRoZSBmb2xsb3dp
bmcgbGluZXMgKHdpdGhvdXQgdGhlIGNvbW1lbnRzKSwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBv
ZiBgbmA6CisKK2BgYAorRnVuYygpOyAgICAgICAgICAgICAgLy8gSWYgbiBpcyAwLgorRnVuYyhh
MSk7ICAgICAgICAgICAgLy8gSWYgbiBpcyAxLgorRnVuYyhhMSArIGEyKTsgICAgICAgLy8gSWYg
biBpcyAyLgorRnVuYyhhMSArIGEyICsgYTMpOyAgLy8gSWYgbiBpcyAzLgorLy8gQW5kIHNvIG9u
Li4uCitgYGAKKworIyMgQ29uc3RydWN0cyAjIworCitXZSBzdXBwb3J0IHRoZSBmb2xsb3dpbmcg
bWV0YSBwcm9ncmFtbWluZyBjb25zdHJ1Y3RzOgorCit8IGAkdmFyIGlkID0gZXhwYCB8IERlZmlu
ZXMgYSBuYW1lZCBjb25zdGFudCB2YWx1ZS4gYCRpZGAgaXMgdmFsaWQgdXRpbCB0aGUgZW5kIG9m
IHRoZSBjdXJyZW50IG1ldGEgbGV4aWNhbCBibG9jay4gfAorfDotLS0tLS0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYCRyYW5nZSBpZCBleHAu
LmV4cGAgfCBTZXRzIHRoZSByYW5nZSBvZiBhbiBpdGVyYXRpb24gdmFyaWFibGUsIHdoaWNoIGNh
biBiZSByZXVzZWQgaW4gbXVsdGlwbGUgbG9vcHMgbGF0ZXIuICAgICAgICAgIHwKK3wgYCRmb3Ig
aWQgc2VwIFtbIGNvZGUgXV1gIHwgSXRlcmF0aW9uLiBUaGUgcmFuZ2Ugb2YgYGlkYCBtdXN0IGhh
dmUgYmVlbiBkZWZpbmVkIGVhcmxpZXIuIGAkaWRgIGlzIHZhbGlkIGluIGBjb2RlYC4gICAgICAg
ICB8Cit8IGAkKCQpYCAgICAgICAgICB8IEdlbmVyYXRlcyBhIHNpbmdsZSBgJGAgY2hhcmFjdGVy
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorfCBgJGlkYCAgICAgICAgICAgfCBWYWx1ZSBvZiB0aGUgbmFtZWQgY29uc3RhbnQg
b3IgaXRlcmF0aW9uIHZhcmlhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKK3wgYCQoZXhwKWAgICAgICAgIHwgVmFsdWUgb2YgdGhlIGV4cHJlc3Npb24u
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8Cit8IGAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2hgIHwgQ29u
ZGl0aW9uYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBbWyBjb2RlIF1dYCAgICB8
IE1ldGEgbGV4aWNhbCBibG9jay4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgY3BwX2NvZGVgICAg
ICAgfCBSYXcgQysrIGNvZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYCQkIGNvbW1l
bnRgICAgIHwgTWV0YSBjb21tZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisKKyoqTm90
ZToqKiBUbyBnaXZlIHRoZSB1c2VyIHNvbWUgZnJlZWRvbSBpbiBmb3JtYXR0aW5nIHRoZSBQdW1w
IHNvdXJjZQorY29kZSwgUHVtcCBpZ25vcmVzIGEgbmV3LWxpbmUgY2hhcmFjdGVyIGlmIGl0J3Mg
cmlnaHQgYWZ0ZXIgYCRmb3IgZm9vYAorb3IgbmV4dCB0byBgW1tgIG9yIGBdXWAuIFdpdGhvdXQg
dGhpcyBydWxlIHlvdSdsbCBvZnRlbiBiZSBmb3JjZWQgdG8gd3JpdGUKK3ZlcnkgbG9uZyBsaW5l
cyB0byBnZXQgdGhlIGRlc2lyZWQgb3V0cHV0LiBUaGVyZWZvcmUgc29tZXRpbWVzIHlvdSBtYXkK
K25lZWQgdG8gaW5zZXJ0IGFuIGV4dHJhIG5ldy1saW5lIGluIHN1Y2ggcGxhY2VzIGZvciBhIG5l
dy1saW5lIHRvIHNob3cKK3VwIGluIHlvdXIgb3V0cHV0LgorCisjIyBHcmFtbWFyICMjCisKK2Bg
YAorY29kZSA6Oj0gYXRvbWljX2NvZGUqCithdG9taWNfY29kZSA6Oj0gJHZhciBpZCA9IGV4cAor
ICAgIHwgJHZhciBpZCA9IFtbIGNvZGUgXV0KKyAgICB8ICRyYW5nZSBpZCBleHAuLmV4cAorICAg
IHwgJGZvciBpZCBzZXAgW1sgY29kZSBdXQorICAgIHwgJCgkKQorICAgIHwgJGlkCisgICAgfCAk
KGV4cCkKKyAgICB8ICRpZiBleHAgW1sgY29kZSBdXSBlbHNlX2JyYW5jaAorICAgIHwgW1sgY29k
ZSBdXQorICAgIHwgY3BwX2NvZGUKK3NlcCA6Oj0gY3BwX2NvZGUgfCBlbXB0eV9zdHJpbmcKK2Vs
c2VfYnJhbmNoIDo6PSAkZWxzZSBbWyBjb2RlIF1dCisgICAgfCAkZWxpZiBleHAgW1sgY29kZSBd
XSBlbHNlX2JyYW5jaAorICAgIHwgZW1wdHlfc3RyaW5nCitleHAgOjo9IHNpbXBsZV9leHByZXNz
aW9uX2luX1B5dGhvbl9zeW50YXgKK2BgYAorCisjIyBDb2RlICMjCisKK1lvdSBjYW4gZmluZCB0
aGUgc291cmNlIGNvZGUgb2YgUHVtcCBpbiBbc2NyaXB0cy9wdW1wLnB5XSguLi9zY3JpcHRzL3B1
bXAucHkpLiBJdCBpcyBzdGlsbAordmVyeSB1bnBvbGlzaGVkIGFuZCBsYWNrcyBhdXRvbWF0ZWQg
dGVzdHMsIGFsdGhvdWdoIGl0IGhhcyBiZWVuCitzdWNjZXNzZnVsbHkgdXNlZCBtYW55IHRpbWVz
LiBJZiB5b3UgZmluZCBhIGNoYW5jZSB0byB1c2UgaXQgaW4geW91cgorcHJvamVjdCwgcGxlYXNl
IGxldCB1cyBrbm93IHdoYXQgeW91IHRoaW5rISAgV2UgYWxzbyB3ZWxjb21lIGhlbHAgb24KK2lt
cHJvdmluZyBQdW1wLgorCisjIyBSZWFsIEV4YW1wbGVzICMjCisKK1lvdSBjYW4gZmluZCByZWFs
LXdvcmxkIGFwcGxpY2F0aW9ucyBvZiBQdW1wIGluIFtHb29nbGUgVGVzdF0oaHR0cDovL3d3dy5n
b29nbGUuY29tL2NvZGVzZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3BhY2thZ2UlM0FodHRwJTNB
JTJGJTJGZ29vZ2xldGVzdFwuZ29vZ2xlY29kZVwuY29tKSBhbmQgW0dvb2dsZSBNb2NrXShodHRw
Oi8vd3d3Lmdvb2dsZS5jb20vY29kZXNlYXJjaD9xPWZpbGUlM0FcLnB1bXAlMjQrcGFja2FnZSUz
QWh0dHAlM0ElMkYlMkZnb29nbGVtb2NrXC5nb29nbGVjb2RlXC5jb20pLiAgVGhlIHNvdXJjZSBm
aWxlIGBmb28uaC5wdW1wYCBnZW5lcmF0ZXMgYGZvby5oYC4KKworIyMgVGlwcyAjIworCisgICog
SWYgYSBtZXRhIHZhcmlhYmxlIGlzIGZvbGxvd2VkIGJ5IGEgbGV0dGVyIG9yIGRpZ2l0LCB5b3Ug
Y2FuIHNlcGFyYXRlIHRoZW0gdXNpbmcgYFtbXV1gLCB3aGljaCBpbnNlcnRzIGFuIGVtcHR5IHN0
cmluZy4gRm9yIGV4YW1wbGUgYEZvbyRqW1tdXUhlbHBlcmAgZ2VuZXJhdGUgYEZvbzFIZWxwZXJg
IHdoZW4gYGpgIGlzIDEuCisgICogVG8gYXZvaWQgZXh0cmEtbG9uZyBQdW1wIHNvdXJjZSBsaW5l
cywgeW91IGNhbiBicmVhayBhIGxpbmUgYW55d2hlcmUgeW91IHdhbnQgYnkgaW5zZXJ0aW5nIGBb
W11dYCBmb2xsb3dlZCBieSBhIG5ldyBsaW5lLiBTaW5jZSBhbnkgbmV3LWxpbmUgY2hhcmFjdGVy
IG5leHQgdG8gYFtbYCBvciBgXV1gIGlzIGlnbm9yZWQsIHRoZSBnZW5lcmF0ZWQgY29kZSB3b24n
dCBjb250YWluIHRoaXMgbmV3IGxpbmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9kb2NzL1YxXzZfU2FtcGxlcy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3Mv
VjFfNl9TYW1wbGVzLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyMWQyMDA1NjczNTQ1N2Y2ZjQ5YWVjYzYxMjE5
ZGFkMjI2MTJiZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9k
b2NzL1YxXzZfU2FtcGxlcy5tZApAQCAtMCwwICsxLDE0IEBACitJZiB5b3UncmUgbGlrZSB1cywg
eW91J2QgbGlrZSB0byBsb29rIGF0IHNvbWUgR29vZ2xlIFRlc3Qgc2FtcGxlIGNvZGUuICBUaGUK
K1tzYW1wbGVzIGZvbGRlcl0oLi4vc2FtcGxlcykgaGFzIGEgbnVtYmVyIG9mIHdlbGwtY29tbWVu
dGVkIHNhbXBsZXMgc2hvd2luZyBob3cgdG8gdXNlIGEKK3ZhcmlldHkgb2YgR29vZ2xlIFRlc3Qg
ZmVhdHVyZXMuCisKKyAgKiBbU2FtcGxlICMxXSguLi9zYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3Qu
Y2MpIHNob3dzIHRoZSBiYXNpYyBzdGVwcyBvZiB1c2luZyBHb29nbGUgVGVzdCB0byB0ZXN0IEMr
KyBmdW5jdGlvbnMuCisgICogW1NhbXBsZSAjMl0oLi4vc2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0
LmNjKSBzaG93cyBhIG1vcmUgY29tcGxleCB1bml0IHRlc3QgZm9yIGEgY2xhc3Mgd2l0aCBtdWx0
aXBsZSBtZW1iZXIgZnVuY3Rpb25zLgorICAqIFtTYW1wbGUgIzNdKC4uL3NhbXBsZXMvc2FtcGxl
M191bml0dGVzdC5jYykgdXNlcyBhIHRlc3QgZml4dHVyZS4KKyAgKiBbU2FtcGxlICM0XSguLi9z
YW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QuY2MpIGlzIGFub3RoZXIgYmFzaWMgZXhhbXBsZSBvZiB1
c2luZyBHb29nbGUgVGVzdC4KKyAgKiBbU2FtcGxlICM1XSguLi9zYW1wbGVzL3NhbXBsZTVfdW5p
dHRlc3QuY2MpIHRlYWNoZXMgaG93IHRvIHJldXNlIGEgdGVzdCBmaXh0dXJlIGluIG11bHRpcGxl
IHRlc3QgY2FzZXMgYnkgZGVyaXZpbmcgc3ViLWZpeHR1cmVzIGZyb20gaXQuCisgICogW1NhbXBs
ZSAjNl0oLi4vc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjKSBkZW1vbnN0cmF0ZXMgdHlwZS1w
YXJhbWV0ZXJpemVkIHRlc3RzLgorICAqIFtTYW1wbGUgIzddKC4uL3NhbXBsZXMvc2FtcGxlN191
bml0dGVzdC5jYykgdGVhY2hlcyB0aGUgYmFzaWNzIG9mIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dHMuCisgICogW1NhbXBsZSAjOF0oLi4vc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjKSBzaG93
cyB1c2luZyBgQ29tYmluZSgpYCBpbiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorICAqIFtT
YW1wbGUgIzldKC4uL3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYykgc2hvd3MgdXNlIG9mIHRo
ZSBsaXN0ZW5lciBBUEkgdG8gbW9kaWZ5IEdvb2dsZSBUZXN0J3MgY29uc29sZSBvdXRwdXQgYW5k
IHRoZSB1c2Ugb2YgaXRzIHJlZmxlY3Rpb24gQVBJIHRvIGluc3BlY3QgdGVzdCByZXN1bHRzLgor
ICAqIFtTYW1wbGUgIzEwXSguLi9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjKSBzaG93cyB1
c2Ugb2YgdGhlIGxpc3RlbmVyIEFQSSB0byBpbXBsZW1lbnQgYSBwcmltaXRpdmUgbWVtb3J5IGxl
YWsgY2hlY2tlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFf
Nl9YY29kZUd1aWRlLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV82X1hjb2Rl
R3VpZGUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmYyNGJmNTFiZmM0NTQxMmY2NThiZGRkNTNhMzMyZTE0OWQ3
NzMwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFf
Nl9YY29kZUd1aWRlLm1kCkBAIC0wLDAgKzEsOTMgQEAKKworCitUaGlzIGd1aWRlIHdpbGwgZXhw
bGFpbiBob3cgdG8gdXNlIHRoZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaW4geW91ciBYY29k
ZSBwcm9qZWN0cyBvbiBNYWMgT1MgWC4gVGhpcyB0dXRvcmlhbCBiZWdpbnMgYnkgcXVpY2tseSBl
eHBsYWluaW5nIHdoYXQgdG8gZG8gZm9yIGV4cGVyaWVuY2VkIHVzZXJzLiBBZnRlciB0aGUgcXVp
Y2sgc3RhcnQsIHRoZSBndWlkZSBnb2VzIHByb3ZpZGVzIGFkZGl0aW9uYWwgZXhwbGFuYXRpb24g
YWJvdXQgZWFjaCBzdGVwLgorCisjIFF1aWNrIFN0YXJ0ICMKKworSGVyZSBpcyB0aGUgcXVpY2sg
Z3VpZGUgZm9yIHVzaW5nIEdvb2dsZSBUZXN0IGluIHlvdXIgWGNvZGUgcHJvamVjdC4KKworICAx
LiBEb3dubG9hZCB0aGUgc291cmNlIGZyb20gdGhlIFt3ZWJzaXRlXShodHRwOi8vY29kZS5nb29n
bGUuY29tL3AvZ29vZ2xldGVzdCkgdXNpbmcgdGhpcyBjb21tYW5kOiBgc3ZuIGNoZWNrb3V0IGh0
dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay8gZ29vZ2xldGVzdC1yZWFk
LW9ubHlgCisgIDEuIE9wZW4gdXAgdGhlIGBndGVzdC54Y29kZXByb2pgIGluIHRoZSBgZ29vZ2xl
dGVzdC1yZWFkLW9ubHkveGNvZGUvYCBkaXJlY3RvcnkgYW5kIGJ1aWxkIHRoZSBndGVzdC5mcmFt
ZXdvcmsuCisgIDEuIENyZWF0ZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0IGluIHlvdXIgWGNv
ZGUgcHJvamVjdCBjYWxsZWQgc29tZXRoaW5nIGxpa2UgIlVuaXRUZXN0cyIKKyAgMS4gQWRkIHRo
ZSBndGVzdC5mcmFtZXdvcmsgdG8geW91ciBwcm9qZWN0IGFuZCBhZGQgaXQgdG8gdGhlICJMaW5r
IEJpbmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgIlVuaXRUZXN0cyIKKyAgMS4g
QWRkIHlvdXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRvIHRoZSAiQ29tcGlsZSBTb3VyY2VzIiBi
dWlsZCBwaGFzZSBvZiAiVW5pdFRlc3RzIgorICAxLiBFZGl0IHRoZSAiVW5pdFRlc3RzIiBleGVj
dXRhYmxlIGFuZCBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZWQgIkRZTERcX0ZSQU1F
V09SS1xfUEFUSCIgd2l0aCBhIHZhbHVlIGVxdWFsIHRvIHRoZSBwYXRoIHRvIHRoZSBmcmFtZXdv
cmsgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHJlbGF0aXZlIHRvIHRoZSBjb21waWxl
ZCBleGVjdXRhYmxlLgorICAxLiBCdWlsZCBhbmQgR28KKworVGhlIGZvbGxvd2luZyBzZWN0aW9u
cyBmdXJ0aGVyIGV4cGxhaW4gZWFjaCBvZiB0aGUgc3RlcHMgbGlzdGVkIGFib3ZlIGluIGRlcHRo
LCBkZXNjcmliaW5nIGluIG1vcmUgZGV0YWlsIGhvdyB0byBjb21wbGV0ZSBpdCBpbmNsdWRpbmcg
c29tZSB2YXJpYXRpb25zLgorCisjIEdldCB0aGUgU291cmNlICMKKworQ3VycmVudGx5LCB0aGUg
Z3Rlc3QuZnJhbWV3b3JrIGRpc2N1c3NlZCBoZXJlIGlzbid0IGF2YWlsYWJsZSBpbiBhIHRhZ2dl
ZCByZWxlYXNlIG9mIEdvb2dsZSBUZXN0LCBpdCBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgdHJ1
bmsuIEFzIGV4cGxhaW5lZCBhdCB0aGUgR29vZ2xlIFRlc3QgW3NpdGVdKGh0dHA6Ly9jb2RlLmdv
b2dsZS5jb20vcC9nb29nbGV0ZXN0L3NvdXJjZS9jaGVja291dCI+c3ZuKSwgeW91IGNhbiBnZXQg
dGhlIGNvZGUgZnJvbSBhbm9ueW1vdXMgU1ZOIHdpdGggdGhpcyBjb21tYW5kOgorCitgYGAKK3N2
biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvIGdv
b2dsZXRlc3QtcmVhZC1vbmx5CitgYGAKKworQWx0ZXJuYXRpdmVseSwgaWYgeW91IGFyZSB3b3Jr
aW5nIHdpdGggU3VidmVyc2lvbiBpbiB5b3VyIG93biBjb2RlIGJhc2UsIHlvdSBjYW4gYWRkIEdv
b2dsZSBUZXN0IGFzIGFuIGV4dGVybmFsIGRlcGVuZGVuY3kgdG8geW91ciBvd24gU3VidmVyc2lv
biByZXBvc2l0b3J5LiBCeSBmb2xsb3dpbmcgdGhpcyBhcHByb2FjaCwgZXZlcnlvbmUgdGhhdCBj
aGVja3Mgb3V0IHlvdXIgc3ZuIHJlcG9zaXRvcnkgd2lsbCBhbHNvIHJlY2VpdmUgYSBjb3B5IG9m
IEdvb2dsZSBUZXN0IChhIHNwZWNpZmljIHZlcnNpb24sIGlmIHlvdSB3aXNoKSB3aXRob3V0IGhh
dmluZyB0byBjaGVjayBpdCBvdXQgZXhwbGljaXRseS4gVGhpcyBtYWtlcyB0aGUgc2V0IHVwIG9m
IHlvdXIgcHJvamVjdCBzaW1wbGVyIGFuZCByZWR1Y2VzIHRoZSBjb3BpZWQgY29kZSBpbiB0aGUg
cmVwb3NpdG9yeS4KKworVG8gdXNlIGBzdm46ZXh0ZXJuYWxzYCwgZGVjaWRlIHdoZXJlIHlvdSB3
b3VsZCBsaWtlIHRvIGhhdmUgdGhlIGV4dGVybmFsIHNvdXJjZSByZXNpZGUuIFlvdSBtaWdodCBj
aG9vc2UgdG8gcHV0IHRoZSBleHRlcm5hbCBzb3VyY2UgaW5zaWRlIHRoZSB0cnVuaywgYmVjYXVz
ZSB5b3Ugd2FudCBpdCB0byBiZSBwYXJ0IG9mIHRoZSBicmFuY2ggd2hlbiB5b3UgbWFrZSBhIHJl
bGVhc2UuIEhvd2V2ZXIsIGtlZXBpbmcgaXQgb3V0c2lkZSB0aGUgdHJ1bmsgaW4gYSB2ZXJzaW9u
LXRhZ2dlZCBkaXJlY3RvcnkgY2FsbGVkIHNvbWV0aGluZyBsaWtlIGB0aGlyZC1wYXJ0eS9nb29n
bGV0ZXN0LzEuMC4xYCwgaXMgYW5vdGhlciBvcHRpb24uIE9uY2UgdGhlIGxvY2F0aW9uIGlzIGVz
dGFibGlzaGVkLCB1c2UgYHN2biBwcm9wZWRpdCBzdm46ZXh0ZXJuYWxzIF9kaXJlY3RvcnlfYCB0
byBzZXQgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgb24gYSBkaXJlY3RvcnkgaW4geW91ciBy
ZXBvc2l0b3J5LiBUaGlzIGRpcmVjdG9yeSB3b24ndCBjb250YWluIHRoZSBjb2RlLCBidXQgYmUg
aXRzIHZlcnNpb25lZCBwYXJlbnQgZGlyZWN0b3J5LgorCitUaGUgY29tbWFuZCBgc3ZuIHByb3Bl
ZGl0YCB3aWxsIGJyaW5nIHVwIHlvdXIgU3VidmVyc2lvbiBlZGl0b3IsIG1ha2luZyBlZGl0aW5n
IHRoZSBsb25nLCAocG90ZW50aWFsbHkgbXVsdGktbGluZSkgcHJvcGVydHkgc2ltcGxlci4gVGhp
cyBzYW1lIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjaGVjayBvdXQgYSB0YWdnZWQgYnJhbmNoLCBi
eSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgVVJMIChlLmcuIGBodHRwOi8vZ29vZ2xldGVzdC5nb29n
bGVjb2RlLmNvbS9zdm4vdGFncy9yZWxlYXNlLTEuMC4xYCkuIEFkZGl0aW9uYWxseSwgdGhlIHN2
bjpleHRlcm5hbHMgcHJvcGVydHkgYWxsb3dzIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgcGFydGlj
dWxhciByZXZpc2lvbiBvZiB0aGUgdHJ1bmsgd2l0aCB0aGUgYC1yXyMjX2Agb3B0aW9uIChlLmcu
IGBleHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QgLXI2MCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVj
b2RlLmNvbS9zdm4vdHJ1bmtgKS4KKworSGVyZSBpcyBhbiBleGFtcGxlIG9mIHVzaW5nIHRoZSBz
dm46ZXh0ZXJuYWxzIHByb3BlcnRpZXMgb24gYSB0cnVuayAocmVhZCB2aWEgYHN2biBwcm9wZ2V0
YCkgb2YgYSBwcm9qZWN0LiBUaGlzIHZhbHVlIGNoZWNrcyBvdXQgYSBjb3B5IG9mIEdvb2dsZSBU
ZXN0IGludG8gdGhlIGB0cnVuay9leHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QvYCBkaXJlY3Rvcnku
CisKK2BgYAorW0NvbXB1dGVyOnN2bl0gdXNlciQgc3ZuIHByb3BnZXQgc3ZuOmV4dGVybmFscyB0
cnVuaworZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNv
ZGUuY29tL3N2bi90cnVuaworYGBgCisKKyMgQWRkIHRoZSBGcmFtZXdvcmsgdG8gWW91ciBQcm9q
ZWN0ICMKKworVGhlIG5leHQgc3RlcCBpcyB0byBidWlsZCBhbmQgYWRkIHRoZSBndGVzdC5mcmFt
ZXdvcmsgdG8geW91ciBvd24gcHJvamVjdC4gVGhpcyBndWlkZSBkZXNjcmliZXMgdHdvIGNvbW1v
biB3YXlzIGJlbG93LgorCisgICogKipPcHRpb24gMSoqIC0tLSBUaGUgc2ltcGxlc3Qgd2F5IHRv
IGFkZCBHb29nbGUgVGVzdCB0byB5b3VyIG93biBwcm9qZWN0LCBpcyB0byBvcGVuIGd0ZXN0Lnhj
b2RlcHJvaiAoZm91bmQgaW4gdGhlIHhjb2RlLyBkaXJlY3Rvcnkgb2YgdGhlIEdvb2dsZSBUZXN0
IHRydW5rKSBhbmQgYnVpbGQgdGhlIGZyYW1ld29yayBtYW51YWxseS4gVGhlbiwgYWRkIHRoZSBi
dWlsdCBmcmFtZXdvcmsgaW50byB5b3VyIHByb2plY3QgdXNpbmcgdGhlICJBZGQtPkV4aXN0aW5n
IEZyYW1ld29yay4uLiIgZnJvbSB0aGUgY29udGV4dCBtZW51IG9yICJQcm9qZWN0LT5BZGQuLi4i
IGZyb20gdGhlIG1haW4gbWVudS4gVGhlIGd0ZXN0LmZyYW1ld29yayBpcyByZWxvY2F0YWJsZSBh
bmQgY29udGFpbnMgdGhlIGhlYWRlcnMgYW5kIG9iamVjdCBjb2RlIHRoYXQgeW91J2xsIG5lZWQg
dG8gbWFrZSB0ZXN0cy4gVGhpcyBtZXRob2QgcmVxdWlyZXMgcmVidWlsZGluZyBldmVyeSB0aW1l
IHlvdSB1cGdyYWRlIEdvb2dsZSBUZXN0IGluIHlvdXIgcHJvamVjdC4KKyAgKiAqKk9wdGlvbiAy
KiogLS0tIElmIHlvdSBhcmUgZ29pbmcgdG8gYmUgbGl2aW5nIG9mZiB0aGUgdHJ1bmsgb2YgR29v
Z2xlIFRlc3QsIGluY29ycG9yYXRpbmcgaXRzIGxhdGVzdCBmZWF0dXJlcyBpbnRvIHlvdXIgdW5p
dCB0ZXN0cyAob3IgYXJlIGEgR29vZ2xlIFRlc3QgZGV2ZWxvcGVyIHlvdXJzZWxmKS4gWW91J2xs
IHdhbnQgdG8gcmVidWlsZCB0aGUgZnJhbWV3b3JrIGV2ZXJ5IHRpbWUgdGhlIHNvdXJjZSB1cGRh
dGVzLiB0byBkbyB0aGlzLCB5b3UnbGwgbmVlZCB0byBhZGQgdGhlIGd0ZXN0Lnhjb2RlcHJvaiBm
aWxlLCBub3QgdGhlIGZyYW1ld29yayBpdHNlbGYsIHRvIHlvdXIgb3duIFhjb2RlIHByb2plY3Qu
IFRoZW4sIGZyb20gdGhlIGJ1aWxkIHByb2R1Y3RzIHRoYXQgYXJlIHJldmVhbGVkIGJ5IHRoZSBw
cm9qZWN0J3MgZGlzY2xvc3VyZSB0cmlhbmdsZSwgeW91IGNhbiBmaW5kIHRoZSBndGVzdC5mcmFt
ZXdvcmssIHdoaWNoIGNhbiBiZSBhZGRlZCB0byB5b3VyIHRhcmdldHMgKGRpc2N1c3NlZCBiZWxv
dykuCisKKyMgTWFrZSBhIFRlc3QgVGFyZ2V0ICMKKworVG8gc3RhcnQgd3JpdGluZyB0ZXN0cywg
bWFrZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0LiBUaGlzIHRhcmdldCB0ZW1wbGF0ZSBpcyBh
dmFpbGFibGUgdW5kZXIgQlNELCBDb2NvYSwgb3IgQ2FyYm9uLiBBZGQgeW91ciB1bml0IHRlc3Qg
c291cmNlIGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJjZXMiIGJ1aWxkIHBoYXNlIG9mIHRoZSB0
YXJnZXQuCisKK05leHQsIHlvdSdsbCB3YW50IHRvIGFkZCBndGVzdC5mcmFtZXdvcmsgaW4gdHdv
IGRpZmZlcmVudCB3YXlzLCBkZXBlbmRpbmcgdXBvbiB3aGljaCBvcHRpb24geW91IGNob3NlIGFi
b3ZlLgorCisgICogKipPcHRpb24gMSoqIC0tLSBEdXJpbmcgY29tcGlsYXRpb24sIFhjb2RlIHdp
bGwgbmVlZCB0byBrbm93IHRoYXQgeW91IGFyZSBsaW5raW5nIGFnYWluc3QgdGhlIGd0ZXN0LmZy
YW1ld29yay4gQWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8gdGhlICJMaW5rIEJpbmFyeSB3aXRo
IExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gVGhpcyB3aWxsIGlu
Y2x1ZGUgdGhlIEdvb2dsZSBUZXN0IGhlYWRlcnMgaW4geW91ciBoZWFkZXIgc2VhcmNoIHBhdGgs
IGFuZCB3aWxsIHRlbGwgdGhlIGxpbmtlciB3aGVyZSB0byBmaW5kIHRoZSBsaWJyYXJ5LgorICAq
ICoqT3B0aW9uIDIqKiAtLS0gSWYgeW91ciB3b3JraW5nIG91dCBvZiB0aGUgdHJ1bmssIHlvdSds
bCBhbHNvIHdhbnQgdG8gYWRkIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyICJMaW5rIEJpbmFyeSB3
aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gSW4gYWRkaXRp
b24sIHlvdSdsbCAgd2FudCB0byBhZGQgdGhlIGd0ZXN0LmZyYW1ld29yayBhcyBhIGRlcGVuZGVu
Y3kgdG8geW91ciB1bml0IHRlc3QgdGFyZ2V0LiBUaGlzIHdheSwgWGNvZGUgd2lsbCBtYWtlIHN1
cmUgdGhhdCBndGVzdC5mcmFtZXdvcmsgaXMgdXAgdG8gZGF0ZSwgZXZlcnkgdGltZSB5b3VyIGJ1
aWxkIHlvdXIgdGFyZ2V0LiBGaW5hbGx5LCBpZiB5b3UgZG9uJ3Qgc2hhcmUgYnVpbGQgZGlyZWN0
b3JpZXMgd2l0aCBHb29nbGUgVGVzdCwgeW91J2xsIGhhdmUgdG8gY29weSB0aGUgZ3Rlc3QuZnJh
bWV3b3JrIGludG8geW91ciBvd24gYnVpbGQgcHJvZHVjdHMgZGlyZWN0b3J5IHVzaW5nIGEgIlJ1
biBTY3JpcHQiIGJ1aWxkIHBoYXNlLgorCisjIFNldCBVcCB0aGUgRXhlY3V0YWJsZSBSdW4gRW52
aXJvbm1lbnQgIworCitTaW5jZSB0aGUgdW5pdCB0ZXN0IGV4ZWN1dGFibGUgaXMgYSBzaGVsbCB0
b29sLCBpdCBkb2Vzbid0IGhhdmUgYSBidW5kbGUgd2l0aCBhIGBDb250ZW50cy9GcmFtZXdvcmtz
YCBkaXJlY3RvcnksIGluIHdoaWNoIHRvIHBsYWNlIGd0ZXN0LmZyYW1ld29yay4gSW5zdGVhZCwg
dGhlIGR5bmFtaWMgbGlua2VyIG11c3QgYmUgdG9sZCBhdCBydW50aW1lIHRvIHNlYXJjaCBmb3Ig
dGhlIGZyYW1ld29yayBpbiBhbm90aGVyIGxvY2F0aW9uLiBUaGlzIGNhbiBiZSBhY2NvbXBsaXNo
ZWQgYnkgc2V0dGluZyB0aGUgIkRZTERcX0ZSQU1FV09SS1xfUEFUSCIgZW52aXJvbm1lbnQgdmFy
aWFibGUgaW4gdGhlICJFZGl0IEFjdGl2ZSBFeGVjdXRhYmxlIC4uLiIgQXJndW1lbnRzIHRhYiwg
dW5kZXIgIlZhcmlhYmxlcyB0byBiZSBzZXQgaW4gdGhlIGVudmlyb25tZW50OiIuIFRoZSBwYXRo
IGZvciB0aGlzIHZhbHVlIGlzIHRoZSBwYXRoIChyZWxhdGl2ZSBvciBhYnNvbHV0ZSkgb2YgdGhl
IGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsuCisKK0lmIHlvdSBoYXZl
bid0IHNldCB1cCB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRILCBjb3JyZWN0bHksIHlvdSBtaWdo
dCBnZXQgYSBtZXNzYWdlIGxpa2UgdGhpczoKKworYGBgCitbU2Vzc2lvbiBzdGFydGVkIGF0IDIw
MDgtMDgtMTUgMDY6MjM6NTcgLTA2MDAuXQorICBkeWxkOiBMaWJyYXJ5IG5vdCBsb2FkZWQ6IEBs
b2FkZXJfcGF0aC8uLi9GcmFtZXdvcmtzL2d0ZXN0LmZyYW1ld29yay9WZXJzaW9ucy9BL2d0ZXN0
CisgICAgUmVmZXJlbmNlZCBmcm9tOiAvVXNlcnMvdXNlcm5hbWUvRG9jdW1lbnRzL1NhbmRib3gv
Z3Rlc3RTYW1wbGUvYnVpbGQvRGVidWcvV2lkZ2V0RnJhbWV3b3JrVGVzdAorICAgIFJlYXNvbjog
aW1hZ2Ugbm90IGZvdW5kCitgYGAKKworVG8gY29ycmVjdCB0aGlzIHByb2JsZW0sIGdvdCB0byB0
aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGV4ZWN1dGFibGUgbmFtZWQgaW4gIlJlZmVyZW5j
ZWQgZnJvbToiIHZhbHVlIGluIHRoZSBlcnJvciBtZXNzYWdlIGFib3ZlLiBUaGVuLCB3aXRoIHRo
ZSB0ZXJtaW5hbCBpbiB0aGlzIGxvY2F0aW9uLCBmaW5kIHRoZSByZWxhdGl2ZSBwYXRoIHRvIHRo
ZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrLiBUaGF0IGlzIHRoZSB2
YWx1ZSB5b3UnbGwgbmVlZCB0byBzZXQgYXMgdGhlIERZTERcX0ZSQU1FV09SS1xfUEFUSC4KKwor
IyBCdWlsZCBhbmQgR28gIworCitOb3csIHdoZW4geW91IGNsaWNrICJCdWlsZCBhbmQgR28iLCB0
aGUgdGVzdCB3aWxsIGJlIGV4ZWN1dGVkLiBEdW1waW5nIG91dCBzb21ldGhpbmcgbGlrZSB0aGlz
OgorCitgYGAKK1tTZXNzaW9uIHN0YXJ0ZWQgYXQgMjAwOC0wOC0wNiAwNjozNjoxMyAtMDYwMC5d
CitbPT09PT09PT09PV0gUnVubmluZyAyIHRlc3RzIGZyb20gMSB0ZXN0IGNhc2UuCitbLS0tLS0t
LS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgorWy0tLS0tLS0tLS1dIDIgdGVz
dHMgZnJvbSBXaWRnZXRJbml0aWFsaXplclRlc3QKK1sgUlVOICAgICAgXSBXaWRnZXRJbml0aWFs
aXplclRlc3QuVGVzdENvbnN0cnVjdG9yCitbICAgICAgIE9LIF0gV2lkZ2V0SW5pdGlhbGl6ZXJU
ZXN0LlRlc3RDb25zdHJ1Y3RvcgorWyBSVU4gICAgICBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5U
ZXN0Q29udmVyc2lvbgorWyAgICAgICBPSyBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29u
dmVyc2lvbgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgor
Wz09PT09PT09PT1dIDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZSByYW4uCitbICBQQVNTRUQgIF0g
MiB0ZXN0cy4KKworVGhlIERlYnVnZ2VyIGhhcyBleGl0ZWQgd2l0aCBzdGF0dXMgMC4gIAorYGBg
CisKKyMgU3VtbWFyeSAjCisKK1VuaXQgdGVzdGluZyBpcyBhIHZhbHVhYmxlIHdheSB0byBlbnN1
cmUgeW91ciBkYXRhIG1vZGVsIHN0YXlzIHZhbGlkIGV2ZW4gZHVyaW5nIHJhcGlkIGRldmVsb3Bt
ZW50IG9yIHJlZmFjdG9yaW5nLiBUaGUgR29vZ2xlIFRlc3RpbmcgRnJhbWV3b3JrIGlzIGEgZ3Jl
YXQgdW5pdCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBhbmQgQysrIHdoaWNoIGludGVncmF0ZXMg
d2VsbCB3aXRoIGFuIFhjb2RlIGRldmVsb3BtZW50IGVudmlyb25tZW50LgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3Mv
VjFfN19BZHZhbmNlZEd1aWRlLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV83
X0FkdmFuY2VkR3VpZGUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ0YWY4ZjM2NmFhNmFjYTgxNDQwZGJkNjY1
OWI1NGJlYWUzMTk5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2RvY3MvVjFfN19BZHZhbmNlZEd1aWRlLm1kCkBAIC0wLDAgKzEsMjE4MSBAQAorCisKK05vdyB0
aGF0IHlvdSBoYXZlIHJlYWQgW1ByaW1lcl0oVjFfN19QcmltZXIubWQpIGFuZCBsZWFybmVkIGhv
dyB0byB3cml0ZSB0ZXN0cwordXNpbmcgR29vZ2xlIFRlc3QsIGl0J3MgdGltZSB0byBsZWFybiBz
b21lIG5ldyB0cmlja3MuIFRoaXMgZG9jdW1lbnQKK3dpbGwgc2hvdyB5b3UgbW9yZSBhc3NlcnRp
b25zIGFzIHdlbGwgYXMgaG93IHRvIGNvbnN0cnVjdCBjb21wbGV4CitmYWlsdXJlIG1lc3NhZ2Vz
LCBwcm9wYWdhdGUgZmF0YWwgZmFpbHVyZXMsIHJldXNlIGFuZCBzcGVlZCB1cCB5b3VyCit0ZXN0
IGZpeHR1cmVzLCBhbmQgdXNlIHZhcmlvdXMgZmxhZ3Mgd2l0aCB5b3VyIHRlc3RzLgorCisjIE1v
cmUgQXNzZXJ0aW9ucyAjCisKK1RoaXMgc2VjdGlvbiBjb3ZlcnMgc29tZSBsZXNzIGZyZXF1ZW50
bHkgdXNlZCwgYnV0IHN0aWxsIHNpZ25pZmljYW50LAorYXNzZXJ0aW9ucy4KKworIyMgRXhwbGlj
aXQgU3VjY2VzcyBhbmQgRmFpbHVyZSAjIworCitUaGVzZSB0aHJlZSBhc3NlcnRpb25zIGRvIG5v
dCBhY3R1YWxseSB0ZXN0IGEgdmFsdWUgb3IgZXhwcmVzc2lvbi4gSW5zdGVhZCwKK3RoZXkgZ2Vu
ZXJhdGUgYSBzdWNjZXNzIG9yIGZhaWx1cmUgZGlyZWN0bHkuIExpa2UgdGhlIG1hY3JvcyB0aGF0
IGFjdHVhbGx5CitwZXJmb3JtIGEgdGVzdCwgeW91IG1heSBzdHJlYW0gYSBjdXN0b20gZmFpbHVy
ZSBtZXNzYWdlIGludG8gdGhlIHRoZW0uCisKK3wgYFNVQ0NFRUQoKTtgIHwKK3w6LS0tLS0tLS0t
LS0tLXwKKworR2VuZXJhdGVzIGEgc3VjY2Vzcy4gVGhpcyBkb2VzIE5PVCBtYWtlIHRoZSBvdmVy
YWxsIHRlc3Qgc3VjY2VlZC4gQSB0ZXN0IGlzCitjb25zaWRlcmVkIHN1Y2Nlc3NmdWwgb25seSBp
ZiBub25lIG9mIGl0cyBhc3NlcnRpb25zIGZhaWwgZHVyaW5nIGl0cyBleGVjdXRpb24uCisKK05v
dGU6IGBTVUNDRUVEKClgIGlzIHB1cmVseSBkb2N1bWVudGFyeSBhbmQgY3VycmVudGx5IGRvZXNu
J3QgZ2VuZXJhdGUgYW55Cit1c2VyLXZpc2libGUgb3V0cHV0LiBIb3dldmVyLCB3ZSBtYXkgYWRk
IGBTVUNDRUVEKClgIG1lc3NhZ2VzIHRvIEdvb2dsZSBUZXN0J3MKK291dHB1dCBpbiB0aGUgZnV0
dXJlLgorCit8IGBGQUlMKCk7YCAgfCBgQUREX0ZBSUxVUkUoKTtgIHwgYEFERF9GQUlMVVJFX0FU
KCJgX2ZpbGVcX3BhdGhfYCIsIGBfbGluZVxfbnVtYmVyX2ApO2AgfAorfDotLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXwKKworYEZBSUwoKWAgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSwg
d2hpbGUgYEFERF9GQUlMVVJFKClgIGFuZCBgQUREX0ZBSUxVUkVfQVQoKWAgZ2VuZXJhdGUgYSBu
b25mYXRhbAorZmFpbHVyZS4gVGhlc2UgYXJlIHVzZWZ1bCB3aGVuIGNvbnRyb2wgZmxvdywgcmF0
aGVyIHRoYW4gYSBCb29sZWFuIGV4cHJlc3Npb24sCitkZXRlcmVtaW5lcyB0aGUgdGVzdCdzIHN1
Y2Nlc3Mgb3IgZmFpbHVyZS4gRm9yIGV4YW1wbGUsIHlvdSBtaWdodCB3YW50IHRvIHdyaXRlCitz
b21ldGhpbmcgbGlrZToKKworYGBgCitzd2l0Y2goZXhwcmVzc2lvbikgeworICBjYXNlIDE6IC4u
LiBzb21lIGNoZWNrcyAuLi4KKyAgY2FzZSAyOiAuLi4gc29tZSBvdGhlciBjaGVja3MKKyAgLi4u
CisgIGRlZmF1bHQ6IEZBSUwoKSA8PCAiV2Ugc2hvdWxkbid0IGdldCBoZXJlLiI7Cit9CitgYGAK
KworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIEV4Y2VwdGlvbiBB
c3NlcnRpb25zICMjCisKK1RoZXNlIGFyZSBmb3IgdmVyaWZ5aW5nIHRoYXQgYSBwaWVjZSBvZiBj
b2RlIHRocm93cyAob3IgZG9lcyBub3QKK3Rocm93KSBhbiBleGNlcHRpb24gb2YgdGhlIGdpdmVu
IHR5cGU6CisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiog
fCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfVEhST1coYF9zdGF0ZW1lbnRfLCBf
ZXhjZXB0aW9uXF90eXBlX2ApO2AgIHwgYEVYUEVDVF9USFJPVyhgX3N0YXRlbWVudF8sIF9leGNl
cHRpb25cX3R5cGVfYCk7YCAgfCBfc3RhdGVtZW50XyB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHRo
ZSBnaXZlbiB0eXBlICB8Cit8IGBBU1NFUlRfQU5ZX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAg
ICAgICAgICAgICAgfCBgRVhQRUNUX0FOWV9USFJPVyhgX3N0YXRlbWVudF9gKTtgICAgICAgICAg
ICAgICAgIHwgX3N0YXRlbWVudF8gdGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiBhbnkgdHlwZSAgICAg
ICAgfAorfCBgQVNTRVJUX05PX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAg
IHwgYEVYUEVDVF9OT19USFJPVyhgX3N0YXRlbWVudF9gKTtgICAgICAgICAgICAgICAgICB8IF9z
dGF0ZW1lbnRfIGRvZXNuJ3QgdGhyb3cgYW55IGV4Y2VwdGlvbiAgICAgICAgICAgIHwKKworRXhh
bXBsZXM6CisKK2BgYAorQVNTRVJUX1RIUk9XKEZvbyg1KSwgYmFyX2V4Y2VwdGlvbik7CisKK0VY
UEVDVF9OT19USFJPVyh7CisgIGludCBuID0gNTsKKyAgQmFyKCZuKTsKK30pOworYGBgCisKK19B
dmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuMS4wLgor
CisjIyBQcmVkaWNhdGUgQXNzZXJ0aW9ucyBmb3IgQmV0dGVyIEVycm9yIE1lc3NhZ2VzICMjCisK
K0V2ZW4gdGhvdWdoIEdvb2dsZSBUZXN0IGhhcyBhIHJpY2ggc2V0IG9mIGFzc2VydGlvbnMsIHRo
ZXkgY2FuIG5ldmVyIGJlCitjb21wbGV0ZSwgYXMgaXQncyBpbXBvc3NpYmxlIChub3IgYSBnb29k
IGlkZWEpIHRvIGFudGljaXBhdGUgYWxsIHRoZSBzY2VuYXJpb3MKK2EgdXNlciBtaWdodCBydW4g
aW50by4gVGhlcmVmb3JlLCBzb21ldGltZXMgYSB1c2VyIGhhcyB0byB1c2UgYEVYUEVDVF9UUlVF
KClgCit0byBjaGVjayBhIGNvbXBsZXggZXhwcmVzc2lvbiwgZm9yIGxhY2sgb2YgYSBiZXR0ZXIg
bWFjcm8uIFRoaXMgaGFzIHRoZSBwcm9ibGVtCitvZiBub3Qgc2hvd2luZyB5b3UgdGhlIHZhbHVl
cyBvZiB0aGUgcGFydHMgb2YgdGhlIGV4cHJlc3Npb24sIG1ha2luZyBpdCBoYXJkIHRvCit1bmRl
cnN0YW5kIHdoYXQgd2VudCB3cm9uZy4gQXMgYSB3b3JrYXJvdW5kLCBzb21lIHVzZXJzIGNob29z
ZSB0byBjb25zdHJ1Y3QgdGhlCitmYWlsdXJlIG1lc3NhZ2UgYnkgdGhlbXNlbHZlcywgc3RyZWFt
aW5nIGl0IGludG8gYEVYUEVDVF9UUlVFKClgLiBIb3dldmVyLCB0aGlzCitpcyBhd2t3YXJkIGVz
cGVjaWFsbHkgd2hlbiB0aGUgZXhwcmVzc2lvbiBoYXMgc2lkZS1lZmZlY3RzIG9yIGlzIGV4cGVu
c2l2ZSB0bworZXZhbHVhdGUuCisKK0dvb2dsZSBUZXN0IGdpdmVzIHlvdSB0aHJlZSBkaWZmZXJl
bnQgb3B0aW9ucyB0byBzb2x2ZSB0aGlzIHByb2JsZW06CisKKyMjIyBVc2luZyBhbiBFeGlzdGlu
ZyBCb29sZWFuIEZ1bmN0aW9uICMjIworCitJZiB5b3UgYWxyZWFkeSBoYXZlIGEgZnVuY3Rpb24g
b3IgYSBmdW5jdG9yIHRoYXQgcmV0dXJucyBgYm9vbGAgKG9yIGEgdHlwZQordGhhdCBjYW4gYmUg
aW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYGJvb2xgKSwgeW91IGNhbiB1c2UgaXQgaW4gYSBfcHJl
ZGljYXRlCithc3NlcnRpb25fIHRvIGdldCB0aGUgZnVuY3Rpb24gYXJndW1lbnRzIHByaW50ZWQg
Zm9yIGZyZWU6CisKK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9u
KiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfUFJFRDEoYF9wcmVkMSwgdmFs
MV9gKTtgICAgICAgIHwgYEVYUEVDVF9QUkVEMShgX3ByZWQxLCB2YWwxX2ApO2AgfCBfcHJlZDEo
dmFsMSlfIHJldHVybnMgdHJ1ZSB8Cit8IGBBU1NFUlRfUFJFRDIoYF9wcmVkMiwgdmFsMSwgdmFs
Ml9gKTtgIHwgYEVYUEVDVF9QUkVEMihgX3ByZWQyLCB2YWwxLCB2YWwyX2ApO2AgfCAgX3ByZWQy
KHZhbDEsIHZhbDIpXyByZXR1cm5zIHRydWUgfAorfCAgLi4uICAgICAgICAgICAgICAgIHwgLi4u
ICAgICAgICAgICAgICAgICAgICB8IC4uLiAgICAgICAgICB8CisKK0luIHRoZSBhYm92ZSwgX3By
ZWRuXyBpcyBhbiBfbl8tYXJ5IHByZWRpY2F0ZSBmdW5jdGlvbiBvciBmdW5jdG9yLCB3aGVyZQor
X3ZhbDFfLCBfdmFsMl8sIC4uLiwgYW5kIF92YWxuXyBhcmUgaXRzIGFyZ3VtZW50cy4gVGhlIGFz
c2VydGlvbiBzdWNjZWVkcworaWYgdGhlIHByZWRpY2F0ZSByZXR1cm5zIGB0cnVlYCB3aGVuIGFw
cGxpZWQgdG8gdGhlIGdpdmVuIGFyZ3VtZW50cywgYW5kIGZhaWxzCitvdGhlcndpc2UuIFdoZW4g
dGhlIGFzc2VydGlvbiBmYWlscywgaXQgcHJpbnRzIHRoZSB2YWx1ZSBvZiBlYWNoIGFyZ3VtZW50
LiBJbgorZWl0aGVyIGNhc2UsIHRoZSBhcmd1bWVudHMgYXJlIGV2YWx1YXRlZCBleGFjdGx5IG9u
Y2UuCisKK0hlcmUncyBhbiBleGFtcGxlLiBHaXZlbgorCitgYGAKKy8vIFJldHVybnMgdHJ1ZSBp
ZmYgbSBhbmQgbiBoYXZlIG5vIGNvbW1vbiBkaXZpc29ycyBleGNlcHQgMS4KK2Jvb2wgTXV0dWFs
bHlQcmltZShpbnQgbSwgaW50IG4pIHsgLi4uIH0KK2NvbnN0IGludCBhID0gMzsKK2NvbnN0IGlu
dCBiID0gNDsKK2NvbnN0IGludCBjID0gMTA7CitgYGAKKwordGhlIGFzc2VydGlvbiBgRVhQRUNU
X1BSRUQyKE11dHVhbGx5UHJpbWUsIGEsIGIpO2Agd2lsbCBzdWNjZWVkLCB3aGlsZSB0aGUKK2Fz
c2VydGlvbiBgRVhQRUNUX1BSRUQyKE11dHVhbGx5UHJpbWUsIGIsIGMpO2Agd2lsbCBmYWlsIHdp
dGggdGhlIG1lc3NhZ2UKKworPHByZT4KKyFNdXR1YWxseVByaW1lKGIsIGMpIGlzIGZhbHNlLCB3
aGVyZTxicj4KK2IgaXMgNDxicj4KK2MgaXMgMTA8YnI+Cis8L3ByZT4KKworKipOb3RlczoqKgor
CisgIDEuIElmIHlvdSBzZWUgYSBjb21waWxlciBlcnJvciAibm8gbWF0Y2hpbmcgZnVuY3Rpb24g
dG8gY2FsbCIgd2hlbiB1c2luZyBgQVNTRVJUX1BSRUQqYCBvciBgRVhQRUNUX1BSRUQqYCwgcGxl
YXNlIHNlZSBbdGhpc10oVjFfN19GQVEubWQjdGhlLWNvbXBpbGVyLWNvbXBsYWlucy1hYm91dC11
bmRlZmluZWQtcmVmZXJlbmNlcy10by1zb21lLXN0YXRpYy1jb25zdC1tZW1iZXItdmFyaWFibGVz
LWJ1dC1pLWRpZC1kZWZpbmUtdGhlbS1pbi10aGUtY2xhc3MtYm9keS13aGF0cy13cm9uZykgZm9y
IGhvdyB0byByZXNvbHZlIGl0LgorICAxLiBDdXJyZW50bHkgd2Ugb25seSBwcm92aWRlIHByZWRp
Y2F0ZSBhc3NlcnRpb25zIG9mIGFyaXR5IDw9IDUuIElmIHlvdSBuZWVkIGEgaGlnaGVyLWFyaXR5
IGFzc2VydGlvbiwgbGV0IHVzIGtub3cuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjCisKKyMjIyBVc2luZyBhIEZ1bmN0aW9uIFRoYXQgUmV0dXJucyBhbiBBc3NlcnRpb25S
ZXN1bHQgIyMjCisKK1doaWxlIGBFWFBFQ1RfUFJFRCooKWAgYW5kIGZyaWVuZHMgYXJlIGhhbmR5
IGZvciBhIHF1aWNrIGpvYiwgdGhlCitzeW50YXggaXMgbm90IHNhdGlzZmFjdG9yeTogeW91IGhh
dmUgdG8gdXNlIGRpZmZlcmVudCBtYWNyb3MgZm9yCitkaWZmZXJlbnQgYXJpdGllcywgYW5kIGl0
IGZlZWxzIG1vcmUgbGlrZSBMaXNwIHRoYW4gQysrLiAgVGhlCitgOjp0ZXN0aW5nOjpBc3NlcnRp
b25SZXN1bHRgIGNsYXNzIHNvbHZlcyB0aGlzIHByb2JsZW0uCisKK0FuIGBBc3NlcnRpb25SZXN1
bHRgIG9iamVjdCByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYW4gYXNzZXJ0aW9uCisod2hldGhl
ciBpdCdzIGEgc3VjY2VzcyBvciBhIGZhaWx1cmUsIGFuZCBhbiBhc3NvY2lhdGVkIG1lc3NhZ2Up
LiAgWW91CitjYW4gY3JlYXRlIGFuIGBBc3NlcnRpb25SZXN1bHRgIHVzaW5nIG9uZSBvZiB0aGVz
ZSBmYWN0b3J5CitmdW5jdGlvbnM6CisKK2BgYAorbmFtZXNwYWNlIHRlc3RpbmcgeworCisvLyBS
ZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBhbiBhc3Nl
cnRpb24gaGFzCisvLyBzdWNjZWVkZWQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uU3VjY2Vz
cygpOworCisvLyBSZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUg
dGhhdCBhbiBhc3NlcnRpb24gaGFzCisvLyBmYWlsZWQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0
aW9uRmFpbHVyZSgpOworCit9CitgYGAKKworWW91IGNhbiB0aGVuIHVzZSB0aGUgYDw8YCBvcGVy
YXRvciB0byBzdHJlYW0gbWVzc2FnZXMgdG8gdGhlCitgQXNzZXJ0aW9uUmVzdWx0YCBvYmplY3Qu
CisKK1RvIHByb3ZpZGUgbW9yZSByZWFkYWJsZSBtZXNzYWdlcyBpbiBCb29sZWFuIGFzc2VydGlv
bnMKKyhlLmcuIGBFWFBFQ1RfVFJVRSgpYCksIHdyaXRlIGEgcHJlZGljYXRlIGZ1bmN0aW9uIHRo
YXQgcmV0dXJucworYEFzc2VydGlvblJlc3VsdGAgaW5zdGVhZCBvZiBgYm9vbGAuIEZvciBleGFt
cGxlLCBpZiB5b3UgZGVmaW5lCitgSXNFdmVuKClgIGFzOgorCitgYGAKKzo6dGVzdGluZzo6QXNz
ZXJ0aW9uUmVzdWx0IElzRXZlbihpbnQgbikgeworICBpZiAoKG4gJSAyKSA9PSAwKQorICAgIHJl
dHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKKyAgZWxzZQorICAgIHJldHVybiA6
OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2RkIjsKK30KK2BgYAor
CitpbnN0ZWFkIG9mOgorCitgYGAKK2Jvb2wgSXNFdmVuKGludCBuKSB7CisgIHJldHVybiAobiAl
IDIpID09IDA7Cit9CitgYGAKKwordGhlIGZhaWxlZCBhc3NlcnRpb24gYEVYUEVDVF9UUlVFKElz
RXZlbihGaWIoNCkpKWAgd2lsbCBwcmludDoKKworPHByZT4KK1ZhbHVlIG9mOiBJc0V2ZW4oRmli
KDQpKTxicj4KK0FjdHVhbDogZmFsc2UgKCozIGlzIG9kZCopPGJyPgorRXhwZWN0ZWQ6IHRydWU8
YnI+Cis8L3ByZT4KKworaW5zdGVhZCBvZiBhIG1vcmUgb3BhcXVlCisKKzxwcmU+CitWYWx1ZSBv
ZjogSXNFdmVuKEZpYig0KSk8YnI+CitBY3R1YWw6IGZhbHNlPGJyPgorRXhwZWN0ZWQ6IHRydWU8
YnI+Cis8L3ByZT4KKworSWYgeW91IHdhbnQgaW5mb3JtYXRpdmUgbWVzc2FnZXMgaW4gYEVYUEVD
VF9GQUxTRWAgYW5kIGBBU1NFUlRfRkFMU0VgCithcyB3ZWxsLCBhbmQgYXJlIGZpbmUgd2l0aCBt
YWtpbmcgdGhlIHByZWRpY2F0ZSBzbG93ZXIgaW4gdGhlIHN1Y2Nlc3MKK2Nhc2UsIHlvdSBjYW4g
c3VwcGx5IGEgc3VjY2VzcyBtZXNzYWdlOgorCitgYGAKKzo6dGVzdGluZzo6QXNzZXJ0aW9uUmVz
dWx0IElzRXZlbihpbnQgbikgeworICBpZiAoKG4gJSAyKSA9PSAwKQorICAgIHJldHVybiA6OnRl
c3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKSA8PCBuIDw8ICIgaXMgZXZlbiI7CisgIGVsc2UKKyAg
ICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgbiA8PCAiIGlzIG9kZCI7
Cit9CitgYGAKKworVGhlbiB0aGUgc3RhdGVtZW50IGBFWFBFQ1RfRkFMU0UoSXNFdmVuKEZpYig2
KSkpYCB3aWxsIHByaW50CisKKzxwcmU+CitWYWx1ZSBvZjogSXNFdmVuKEZpYig2KSk8YnI+CitB
Y3R1YWw6IHRydWUgKDggaXMgZXZlbik8YnI+CitFeHBlY3RlZDogZmFsc2U8YnI+Cis8L3ByZT4K
KworX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS40
LjEuCisKKyMjIyBVc2luZyBhIFByZWRpY2F0ZS1Gb3JtYXR0ZXIgIyMjCisKK0lmIHlvdSBmaW5k
IHRoZSBkZWZhdWx0IG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IGAoQVNTRVJUfEVYUEVDVClfUFJFRCpg
IGFuZAorYChBU1NFUlR8RVhQRUNUKV8oVFJVRXxGQUxTRSlgIHVuc2F0aXNmYWN0b3J5LCBvciBz
b21lIGFyZ3VtZW50cyB0byB5b3VyCitwcmVkaWNhdGUgZG8gbm90IHN1cHBvcnQgc3RyZWFtaW5n
IHRvIGBvc3RyZWFtYCwgeW91IGNhbiBpbnN0ZWFkIHVzZSB0aGUKK2ZvbGxvd2luZyBfcHJlZGlj
YXRlLWZvcm1hdHRlciBhc3NlcnRpb25zXyB0byBfZnVsbHlfIGN1c3RvbWl6ZSBob3cgdGhlCitt
ZXNzYWdlIGlzIGZvcm1hdHRlZDoKKworfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRh
bCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9QUkVEX0ZP
Uk1BVDEoYF9wcmVkXF9mb3JtYXQxLCB2YWwxX2ApO2AgICAgICAgIHwgYEVYUEVDVF9QUkVEX0ZP
Uk1BVDEoYF9wcmVkXF9mb3JtYXQxLCB2YWwxX2ApOyB8IF9wcmVkXF9mb3JtYXQxKHZhbDEpXyBp
cyBzdWNjZXNzZnVsIHwKK3wgYEFTU0VSVF9QUkVEX0ZPUk1BVDIoYF9wcmVkXF9mb3JtYXQyLCB2
YWwxLCB2YWwyX2ApO2AgfCBgRVhQRUNUX1BSRURfRk9STUFUMihgX3ByZWRcX2Zvcm1hdDIsIHZh
bDEsIHZhbDJfYCk7YCB8IF9wcmVkXF9mb3JtYXQyKHZhbDEsIHZhbDIpXyBpcyBzdWNjZXNzZnVs
IHwKK3wgYC4uLmAgICAgICAgICAgICAgICB8IGAuLi5gICAgICAgICAgICAgICAgICAgfCBgLi4u
YCAgICAgICAgfAorCitUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIHRoZSBwcmV2aW91
cyB0d28gZ3JvdXBzIG9mIG1hY3JvcyBpcyB0aGF0IGluc3RlYWQgb2YKK2EgcHJlZGljYXRlLCBg
KEFTU0VSVHxFWFBFQ1QpX1BSRURfRk9STUFUKmAgdGFrZSBhIF9wcmVkaWNhdGUtZm9ybWF0dGVy
XworKF9wcmVkXF9mb3JtYXRuXyksIHdoaWNoIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3RvciB3aXRo
IHRoZSBzaWduYXR1cmU6CisKK2A6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkaWNhdGVG
b3JtYXR0ZXJuKGNvbnN0IGNoYXIqIGBfZXhwcjFfYCwgY29uc3QgY2hhciogYF9leHByMl9gLCAu
Li4gY29uc3QgY2hhciogYF9leHBybl9gLCBUMSBgX3ZhbDFfYCwgVDIgYF92YWwyX2AsIC4uLiBU
biBgX3ZhbG5fYCk7YAorCit3aGVyZSBfdmFsMV8sIF92YWwyXywgLi4uLCBhbmQgX3ZhbG5fIGFy
ZSB0aGUgdmFsdWVzIG9mIHRoZSBwcmVkaWNhdGUKK2FyZ3VtZW50cywgYW5kIF9leHByMV8sIF9l
eHByMl8sIC4uLiwgYW5kIF9leHBybl8gYXJlIHRoZSBjb3JyZXNwb25kaW5nCitleHByZXNzaW9u
cyBhcyB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGNvZGUuIFRoZSB0eXBlcyBgVDFgLCBgVDJg
LCAuLi4sIGFuZAorYFRuYCBjYW4gYmUgZWl0aGVyIHZhbHVlIHR5cGVzIG9yIHJlZmVyZW5jZSB0
eXBlcy4gRm9yIGV4YW1wbGUsIGlmIGFuCithcmd1bWVudCBoYXMgdHlwZSBgRm9vYCwgeW91IGNh
biBkZWNsYXJlIGl0IGFzIGVpdGhlciBgRm9vYCBvciBgY29uc3QgRm9vJmAsCit3aGljaGV2ZXIg
aXMgYXBwcm9wcmlhdGUuCisKK0EgcHJlZGljYXRlLWZvcm1hdHRlciByZXR1cm5zIGEgYDo6dGVz
dGluZzo6QXNzZXJ0aW9uUmVzdWx0YCBvYmplY3QgdG8gaW5kaWNhdGUKK3doZXRoZXIgdGhlIGFz
c2VydGlvbiBoYXMgc3VjY2VlZGVkIG9yIG5vdC4gVGhlIG9ubHkgd2F5IHRvIGNyZWF0ZSBzdWNo
IGFuCitvYmplY3QgaXMgdG8gY2FsbCBvbmUgb2YgdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnM6CisK
K0FzIGFuIGV4YW1wbGUsIGxldCdzIGltcHJvdmUgdGhlIGZhaWx1cmUgbWVzc2FnZSBpbiB0aGUg
cHJldmlvdXMgZXhhbXBsZSwgd2hpY2ggdXNlcyBgRVhQRUNUX1BSRUQyKClgOgorCitgYGAKKy8v
IFJldHVybnMgdGhlIHNtYWxsZXN0IHByaW1lIGNvbW1vbiBkaXZpc29yIG9mIG0gYW5kIG4sCisv
LyBvciAxIHdoZW4gbSBhbmQgbiBhcmUgbXV0dWFsbHkgcHJpbWUuCitpbnQgU21hbGxlc3RQcmlt
ZUNvbW1vbkRpdmlzb3IoaW50IG0sIGludCBuKSB7IC4uLiB9CisKKy8vIEEgcHJlZGljYXRlLWZv
cm1hdHRlciBmb3IgYXNzZXJ0aW5nIHRoYXQgdHdvIGludGVnZXJzIGFyZSBtdXR1YWxseSBwcmlt
ZS4KKzo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IEFzc2VydE11dHVhbGx5UHJpbWUoY29uc3Qg
Y2hhciogbV9leHByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBuX2V4cHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgbikgeworICBpZiAoTXV0dWFsbHlQcmltZShtLCBuKSkKKyAgICBy
ZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CisKKyAgcmV0dXJuIDo6dGVzdGlu
Zzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBtX2V4cHIgPDwgIiBhbmQgIiA8PCBuX2V4
cHIgPDwgIiAoIiA8PCBtIDw8ICIgYW5kICIgPDwgbgorICAgICAgPDwgIikgYXJlIG5vdCBtdXR1
YWxseSBwcmltZSwgIiA8PCAiYXMgdGhleSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgIgorICAgICAg
PDwgU21hbGxlc3RQcmltZUNvbW1vbkRpdmlzb3IobSwgbik7Cit9CitgYGAKKworV2l0aCB0aGlz
IHByZWRpY2F0ZS1mb3JtYXR0ZXIsIHdlIGNhbiB1c2UKKworYGBgCitFWFBFQ1RfUFJFRF9GT1JN
QVQyKEFzc2VydE11dHVhbGx5UHJpbWUsIGIsIGMpOworYGBgCisKK3RvIGdlbmVyYXRlIHRoZSBt
ZXNzYWdlCisKKzxwcmU+CitiIGFuZCBjICg0IGFuZCAxMCkgYXJlIG5vdCBtdXR1YWxseSBwcmlt
ZSwgYXMgdGhleSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgMi48YnI+Cis8L3ByZT4KKworQXMgeW91
IG1heSBoYXZlIHJlYWxpemVkLCBtYW55IG9mIHRoZSBhc3NlcnRpb25zIHdlIGludHJvZHVjZWQg
ZWFybGllciBhcmUKK3NwZWNpYWwgY2FzZXMgb2YgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZPUk1B
VCpgLiBJbiBmYWN0LCBtb3N0IG9mIHRoZW0gYXJlCitpbmRlZWQgZGVmaW5lZCB1c2luZyBgKEVY
UEVDVHxBU1NFUlQpX1BSRURfRk9STUFUKmAuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2lu
ZG93cywgTWFjLgorCisKKyMjIEZsb2F0aW5nLVBvaW50IENvbXBhcmlzb24gIyMKKworQ29tcGFy
aW5nIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgaXMgdHJpY2t5LiBEdWUgdG8gcm91bmQtb2ZmIGVy
cm9ycywgaXQgaXMKK3ZlcnkgdW5saWtlbHkgdGhhdCB0d28gZmxvYXRpbmctcG9pbnRzIHdpbGwg
bWF0Y2ggZXhhY3RseS4gVGhlcmVmb3JlLAorYEFTU0VSVF9FUWAgJ3MgbmFpdmUgY29tcGFyaXNv
biB1c3VhbGx5IGRvZXNuJ3Qgd29yay4gQW5kIHNpbmNlIGZsb2F0aW5nLXBvaW50cworY2FuIGhh
dmUgYSB3aWRlIHZhbHVlIHJhbmdlLCBubyBzaW5nbGUgZml4ZWQgZXJyb3IgYm91bmQgd29ya3Mu
IEl0J3MgYmV0dGVyIHRvCitjb21wYXJlIGJ5IGEgZml4ZWQgcmVsYXRpdmUgZXJyb3IgYm91bmQs
IGV4Y2VwdCBmb3IgdmFsdWVzIGNsb3NlIHRvIDAgZHVlIHRvCit0aGUgbG9zcyBvZiBwcmVjaXNp
b24gdGhlcmUuCisKK0luIGdlbmVyYWwsIGZvciBmbG9hdGluZy1wb2ludCBjb21wYXJpc29uIHRv
IG1ha2Ugc2Vuc2UsIHRoZSB1c2VyIG5lZWRzIHRvCitjYXJlZnVsbHkgY2hvb3NlIHRoZSBlcnJv
ciBib3VuZC4gSWYgdGhleSBkb24ndCB3YW50IG9yIGNhcmUgdG8sIGNvbXBhcmluZyBpbgordGVy
bXMgb2YgVW5pdHMgaW4gdGhlIExhc3QgUGxhY2UgKFVMUHMpIGlzIGEgZ29vZCBkZWZhdWx0LCBh
bmQgR29vZ2xlIFRlc3QKK3Byb3ZpZGVzIGFzc2VydGlvbnMgdG8gZG8gdGhpcy4gRnVsbCBkZXRh
aWxzIGFib3V0IFVMUHMgYXJlIHF1aXRlIGxvbmc7IGlmIHlvdQord2FudCB0byBsZWFybiBtb3Jl
LCBzZWUKK1t0aGlzIGFydGljbGUgb24gZmxvYXQgY29tcGFyaXNvbl0oaHR0cDovL3d3dy5jeWdu
dXMtc29mdHdhcmUuY29tL3BhcGVycy9jb21wYXJpbmdmbG9hdHMvY29tcGFyaW5nZmxvYXRzLmh0
bSkuCisKKyMjIyBGbG9hdGluZy1Qb2ludCBNYWNyb3MgIyMjCisKK3wgKipGYXRhbCBhc3NlcnRp
b24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8
IGBBU1NFUlRfRkxPQVRfRVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgIHwgYEVYUEVDVF9GTE9B
VF9FUShgX2V4cGVjdGVkLCBhY3R1YWxfYCk7YCB8IHRoZSB0d28gYGZsb2F0YCB2YWx1ZXMgYXJl
IGFsbW9zdCBlcXVhbCB8Cit8IGBBU1NFUlRfRE9VQkxFX0VRKGBfZXhwZWN0ZWQsIGFjdHVhbF9g
KTtgIHwgYEVYUEVDVF9ET1VCTEVfRVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgfCB0aGUgdHdv
IGBkb3VibGVgIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsIHwKKworQnkgImFsbW9zdCBlcXVhbCIs
IHdlIG1lYW4gdGhlIHR3byB2YWx1ZXMgYXJlIHdpdGhpbiA0IFVMUCdzIGZyb20gZWFjaAorb3Ro
ZXIuCisKK1RoZSBmb2xsb3dpbmcgYXNzZXJ0aW9ucyBhbGxvdyB5b3UgdG8gY2hvb3NlIHRoZSBh
Y2NlcHRhYmxlIGVycm9yIGJvdW5kOgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZh
dGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX05FQVIo
YF92YWwxLCB2YWwyLCBhYnNcX2Vycm9yX2ApO2AgfCBgRVhQRUNUX05FQVJgXyh2YWwxLCB2YWwy
LCBhYnNcX2Vycm9yX2ApO2AgfCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIF92YWwxXyBhbmQgX3Zh
bDJfIGRvZXNuJ3QgZXhjZWVkIHRoZSBnaXZlbiBhYnNvbHV0ZSBlcnJvciB8CisKK19BdmFpbGFi
aWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgRmxvYXRpbmctUG9pbnQgUHJlZGlj
YXRlLUZvcm1hdCBGdW5jdGlvbnMgIyMjCisKK1NvbWUgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9u
cyBhcmUgdXNlZnVsLCBidXQgbm90IHRoYXQgb2Z0ZW4gdXNlZC4gSW4gb3JkZXIKK3RvIGF2b2lk
IGFuIGV4cGxvc2lvbiBvZiBuZXcgbWFjcm9zLCB3ZSBwcm92aWRlIHRoZW0gYXMgcHJlZGljYXRl
LWZvcm1hdAorZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgaW4gcHJlZGljYXRlIGFzc2VydGlv
biBtYWNyb3MgKGUuZy4KK2BFWFBFQ1RfUFJFRF9GT1JNQVQyYCwgZXRjKS4KKworYGBgCitFWFBF
Q1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RmxvYXRMRSwgdmFsMSwgdmFsMik7CitFWFBFQ1Rf
UFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RG91YmxlTEUsIHZhbDEsIHZhbDIpOworYGBgCisKK1Zl
cmlmaWVzIHRoYXQgX3ZhbDFfIGlzIGxlc3MgdGhhbiwgb3IgYWxtb3N0IGVxdWFsIHRvLCBfdmFs
Ml8uIFlvdSBjYW4KK3JlcGxhY2UgYEVYUEVDVF9QUkVEX0ZPUk1BVDJgIGluIHRoZSBhYm92ZSB0
YWJsZSB3aXRoIGBBU1NFUlRfUFJFRF9GT1JNQVQyYC4KKworX0F2YWlsYWJpbGl0eV86IExpbnV4
LCBXaW5kb3dzLCBNYWMuCisKKyMjIFdpbmRvd3MgSFJFU1VMVCBhc3NlcnRpb25zICMjCisKK1Ro
ZXNlIGFzc2VydGlvbnMgdGVzdCBmb3IgYEhSRVNVTFRgIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4KKwor
fCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZp
ZXMqKiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLXwKK3wgYEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChgX2V4cHJlc3Npb25f
YCk7YCB8IGBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQoYF9leHByZXNzaW9uX2ApO2AgfCBfZXhw
cmVzc2lvbl8gaXMgYSBzdWNjZXNzIGBIUkVTVUxUYCB8Cit8IGBBU1NFUlRfSFJFU1VMVF9GQUlM
RUQoYF9leHByZXNzaW9uX2ApO2AgICAgfCBgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKGBfZXhwcmVz
c2lvbl9gKTtgICAgIHwgX2V4cHJlc3Npb25fIGlzIGEgZmFpbHVyZSBgSFJFU1VMVGAgfAorCitU
aGUgZ2VuZXJhdGVkIG91dHB1dCBjb250YWlucyB0aGUgaHVtYW4tcmVhZGFibGUgZXJyb3IgbWVz
c2FnZQorYXNzb2NpYXRlZCB3aXRoIHRoZSBgSFJFU1VMVGAgY29kZSByZXR1cm5lZCBieSBfZXhw
cmVzc2lvbl8uCisKK1lvdSBtaWdodCB1c2UgdGhlbSBsaWtlIHRoaXM6CisKK2BgYAorQ0NvbVB0
ciBzaGVsbDsKK0FTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChzaGVsbC5Db0NyZWF0ZUluc3RhbmNl
KEwiU2hlbGwuQXBwbGljYXRpb24iKSk7CitDQ29tVmFyaWFudCBlbXB0eTsKK0FTU0VSVF9IUkVT
VUxUX1NVQ0NFRURFRChzaGVsbC0+U2hlbGxFeGVjdXRlKENDb21CU1RSKHVybCksIGVtcHR5LCBl
bXB0eSwgZW1wdHksIGVtcHR5KSk7CitgYGAKKworX0F2YWlsYWJpbGl0eV86IFdpbmRvd3MuCisK
KyMjIFR5cGUgQXNzZXJ0aW9ucyAjIworCitZb3UgY2FuIGNhbGwgdGhlIGZ1bmN0aW9uCitgYGAK
Kzo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4oKTsKK2BgYAordG8gYXNzZXJ0
IHRoYXQgdHlwZXMgYFQxYCBhbmQgYFQyYCBhcmUgdGhlIHNhbWUuICBUaGUgZnVuY3Rpb24gZG9l
cworbm90aGluZyBpZiB0aGUgYXNzZXJ0aW9uIGlzIHNhdGlzZmllZC4gIElmIHRoZSB0eXBlcyBh
cmUgZGlmZmVyZW50LAordGhlIGZ1bmN0aW9uIGNhbGwgd2lsbCBmYWlsIHRvIGNvbXBpbGUsIGFu
ZCB0aGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZQord2lsbCBsaWtlbHkgKGRlcGVuZGluZyBvbiB0
aGUgY29tcGlsZXIpIHNob3cgeW91IHRoZSBhY3R1YWwgdmFsdWVzIG9mCitgVDFgIGFuZCBgVDJg
LiAgVGhpcyBpcyBtYWlubHkgdXNlZnVsIGluc2lkZSB0ZW1wbGF0ZSBjb2RlLgorCitfQ2F2ZWF0
Ol8gV2hlbiB1c2VkIGluc2lkZSBhIG1lbWJlciBmdW5jdGlvbiBvZiBhIGNsYXNzIHRlbXBsYXRl
IG9yIGEKK2Z1bmN0aW9uIHRlbXBsYXRlLCBgU3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4oKWAg
aXMgZWZmZWN0aXZlIF9vbmx5IGlmXwordGhlIGZ1bmN0aW9uIGlzIGluc3RhbnRpYXRlZC4gIEZv
ciBleGFtcGxlLCBnaXZlbjoKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbyB7
CisgcHVibGljOgorICB2b2lkIEJhcigpIHsgOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8
aW50LCBUPigpOyB9Cit9OworYGBgCit0aGUgY29kZToKK2BgYAordm9pZCBUZXN0MSgpIHsgRm9v
PGJvb2w+IGZvbzsgfQorYGBgCit3aWxsIF9ub3RfIGdlbmVyYXRlIGEgY29tcGlsZXIgZXJyb3Is
IGFzIGBGb288Ym9vbD46OkJhcigpYCBpcyBuZXZlcgorYWN0dWFsbHkgaW5zdGFudGlhdGVkLiAg
SW5zdGVhZCwgeW91IG5lZWQ6CitgYGAKK3ZvaWQgVGVzdDIoKSB7IEZvbzxib29sPiBmb287IGZv
by5CYXIoKTsgfQorYGBgCit0byBjYXVzZSBhIGNvbXBpbGVyIGVycm9yLgorCitfQXZhaWxhYmls
aXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lvbiAxLjMuMC4KKworIyMgQXNz
ZXJ0aW9uIFBsYWNlbWVudCAjIworCitZb3UgY2FuIHVzZSBhc3NlcnRpb25zIGluIGFueSBDKysg
ZnVuY3Rpb24uIEluIHBhcnRpY3VsYXIsIGl0IGRvZXNuJ3QKK2hhdmUgdG8gYmUgYSBtZXRob2Qg
b2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4gVGhlIG9uZSBjb25zdHJhaW50IGlzCit0aGF0IGFz
c2VydGlvbnMgdGhhdCBnZW5lcmF0ZSBhIGZhdGFsIGZhaWx1cmUgKGBGQUlMKmAgYW5kIGBBU1NF
UlRfKmApCitjYW4gb25seSBiZSB1c2VkIGluIHZvaWQtcmV0dXJuaW5nIGZ1bmN0aW9ucy4gVGhp
cyBpcyBhIGNvbnNlcXVlbmNlIG9mCitHb29nbGUgVGVzdCBub3QgdXNpbmcgZXhjZXB0aW9ucy4g
QnkgcGxhY2luZyBpdCBpbiBhIG5vbi12b2lkIGZ1bmN0aW9uCit5b3UnbGwgZ2V0IGEgY29uZnVz
aW5nIGNvbXBpbGUgZXJyb3IgbGlrZQorYCJlcnJvcjogdm9pZCB2YWx1ZSBub3QgaWdub3JlZCBh
cyBpdCBvdWdodCB0byBiZSJgLgorCitJZiB5b3UgbmVlZCB0byB1c2UgYXNzZXJ0aW9ucyBpbiBh
IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBub24tdm9pZCwgb25lIG9wdGlvbgoraXMgdG8gbWFrZSB0
aGUgZnVuY3Rpb24gcmV0dXJuIHRoZSB2YWx1ZSBpbiBhbiBvdXQgcGFyYW1ldGVyIGluc3RlYWQu
IEZvcgorZXhhbXBsZSwgeW91IGNhbiByZXdyaXRlIGBUMiBGb28oVDEgeClgIHRvIGB2b2lkIEZv
byhUMSB4LCBUMiogcmVzdWx0KWAuIFlvdQorbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgKnJlc3Vs
dGAgY29udGFpbnMgc29tZSBzZW5zaWJsZSB2YWx1ZSBldmVuIHdoZW4gdGhlCitmdW5jdGlvbiBy
ZXR1cm5zIHByZW1hdHVyZWx5LiBBcyB0aGUgZnVuY3Rpb24gbm93IHJldHVybnMgYHZvaWRgLCB5
b3UgY2FuIHVzZQorYW55IGFzc2VydGlvbiBpbnNpZGUgb2YgaXQuCisKK0lmIGNoYW5naW5nIHRo
ZSBmdW5jdGlvbidzIHR5cGUgaXMgbm90IGFuIG9wdGlvbiwgeW91IHNob3VsZCBqdXN0IHVzZQor
YXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIG5vbi1mYXRhbCBmYWlsdXJlcywgc3VjaCBhcyBgQURE
X0ZBSUxVUkUqYCBhbmQKK2BFWFBFQ1RfKmAuCisKK19Ob3RlXzogQ29uc3RydWN0b3JzIGFuZCBk
ZXN0cnVjdG9ycyBhcmUgbm90IGNvbnNpZGVyZWQgdm9pZC1yZXR1cm5pbmcKK2Z1bmN0aW9ucywg
YWNjb3JkaW5nIHRvIHRoZSBDKysgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbiwgYW5kIHNvIHlvdSBt
YXkgbm90IHVzZQorZmF0YWwgYXNzZXJ0aW9ucyBpbiB0aGVtLiBZb3UnbGwgZ2V0IGEgY29tcGls
YXRpb24gZXJyb3IgaWYgeW91IHRyeS4gQSBzaW1wbGUKK3dvcmthcm91bmQgaXMgdG8gdHJhbnNm
ZXIgdGhlIGVudGlyZSBib2R5IG9mIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yIHRvIGEK
K3ByaXZhdGUgdm9pZC1yZXR1cm5pbmcgbWV0aG9kLiBIb3dldmVyLCB5b3Ugc2hvdWxkIGJlIGF3
YXJlIHRoYXQgYSBmYXRhbAorYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYSBjb25zdHJ1Y3RvciBkb2Vz
IG5vdCB0ZXJtaW5hdGUgdGhlIGN1cnJlbnQgdGVzdCwgYXMgeW91cgoraW50dWl0aW9uIG1pZ2h0
IHN1Z2dlc3Q7IGl0IG1lcmVseSByZXR1cm5zIGZyb20gdGhlIGNvbnN0cnVjdG9yIGVhcmx5LCBw
b3NzaWJseQorbGVhdmluZyB5b3VyIG9iamVjdCBpbiBhIHBhcnRpYWxseS1jb25zdHJ1Y3RlZCBz
dGF0ZS4gTGlrZXdpc2UsIGEgZmF0YWwKK2Fzc2VydGlvbiBmYWlsdXJlIGluIGEgZGVzdHJ1Y3Rv
ciBtYXkgbGVhdmUgeW91ciBvYmplY3QgaW4gYQorcGFydGlhbGx5LWRlc3RydWN0ZWQgc3RhdGUu
IFVzZSBhc3NlcnRpb25zIGNhcmVmdWxseSBpbiB0aGVzZSBzaXR1YXRpb25zIQorCisjIFRlYWNo
aW5nIEdvb2dsZSBUZXN0IEhvdyB0byBQcmludCBZb3VyIFZhbHVlcyAjCisKK1doZW4gYSB0ZXN0
IGFzc2VydGlvbiBzdWNoIGFzIGBFWFBFQ1RfRVFgIGZhaWxzLCBHb29nbGUgVGVzdCBwcmludHMg
dGhlCithcmd1bWVudCB2YWx1ZXMgdG8gaGVscCB5b3UgZGVidWcuICBJdCBkb2VzIHRoaXMgdXNp
bmcgYQordXNlci1leHRlbnNpYmxlIHZhbHVlIHByaW50ZXIuCisKK1RoaXMgcHJpbnRlciBrbm93
cyBob3cgdG8gcHJpbnQgYnVpbHQtaW4gQysrIHR5cGVzLCBuYXRpdmUgYXJyYXlzLCBTVEwKK2Nv
bnRhaW5lcnMsIGFuZCBhbnkgdHlwZSB0aGF0IHN1cHBvcnRzIHRoZSBgPDxgIG9wZXJhdG9yLiAg
Rm9yIG90aGVyCit0eXBlcywgaXQgcHJpbnRzIHRoZSByYXcgYnl0ZXMgaW4gdGhlIHZhbHVlIGFu
ZCBob3BlcyB0aGF0IHlvdSB0aGUKK3VzZXIgY2FuIGZpZ3VyZSBpdCBvdXQuCisKK0FzIG1lbnRp
b25lZCBlYXJsaWVyLCB0aGUgcHJpbnRlciBpcyBfZXh0ZW5zaWJsZV8uICBUaGF0IG1lYW5zCit5
b3UgY2FuIHRlYWNoIGl0IHRvIGRvIGEgYmV0dGVyIGpvYiBhdCBwcmludGluZyB5b3VyIHBhcnRp
Y3VsYXIgdHlwZQordGhhbiB0byBkdW1wIHRoZSBieXRlcy4gIFRvIGRvIHRoYXQsIGRlZmluZSBg
PDxgIGZvciB5b3VyIHR5cGU6CisKK2BgYAorI2luY2x1ZGUgPGlvc3RyZWFtPgorCituYW1lc3Bh
Y2UgZm9vIHsKKworY2xhc3MgQmFyIHsgLi4uIH07ICAvLyBXZSB3YW50IEdvb2dsZSBUZXN0IHRv
IGJlIGFibGUgdG8gcHJpbnQgaW5zdGFuY2VzIG9mIHRoaXMuCisKKy8vIEl0J3MgaW1wb3J0YW50
IHRoYXQgdGhlIDw8IG9wZXJhdG9yIGlzIGRlZmluZWQgaW4gdGhlIFNBTUUKKy8vIG5hbWVzcGFj
ZSB0aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11cCBydWxlcyByZWx5IG9uIHRoYXQuCis6
OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IEJhciYg
YmFyKSB7CisgIHJldHVybiBvcyA8PCBiYXIuRGVidWdTdHJpbmcoKTsgIC8vIHdoYXRldmVyIG5l
ZWRlZCB0byBwcmludCBiYXIgdG8gb3MKK30KKworfSAgLy8gbmFtZXNwYWNlIGZvbworYGBgCisK
K1NvbWV0aW1lcywgdGhpcyBtaWdodCBub3QgYmUgYW4gb3B0aW9uOiB5b3VyIHRlYW0gbWF5IGNv
bnNpZGVyIGl0IGJhZAorc3R5bGUgdG8gaGF2ZSBhIGA8PGAgb3BlcmF0b3IgZm9yIGBCYXJgLCBv
ciBgQmFyYCBtYXkgYWxyZWFkeSBoYXZlIGEKK2A8PGAgb3BlcmF0b3IgdGhhdCBkb2Vzbid0IGRv
IHdoYXQgeW91IHdhbnQgKGFuZCB5b3UgY2Fubm90IGNoYW5nZQoraXQpLiAgSWYgc28sIHlvdSBj
YW4gaW5zdGVhZCBkZWZpbmUgYSBgUHJpbnRUbygpYCBmdW5jdGlvbiBsaWtlIHRoaXM6CisKK2Bg
YAorI2luY2x1ZGUgPGlvc3RyZWFtPgorCituYW1lc3BhY2UgZm9vIHsKKworY2xhc3MgQmFyIHsg
Li4uIH07CisKKy8vIEl0J3MgaW1wb3J0YW50IHRoYXQgUHJpbnRUbygpIGlzIGRlZmluZWQgaW4g
dGhlIFNBTUUKKy8vIG5hbWVzcGFjZSB0aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11cCBy
dWxlcyByZWx5IG9uIHRoYXQuCit2b2lkIFByaW50VG8oY29uc3QgQmFyJiBiYXIsIDo6c3RkOjpv
c3RyZWFtKiBvcykgeworICAqb3MgPDwgYmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3aGF0ZXZlciBu
ZWVkZWQgdG8gcHJpbnQgYmFyIHRvIG9zCit9CisKK30gIC8vIG5hbWVzcGFjZSBmb28KK2BgYAor
CitJZiB5b3UgaGF2ZSBkZWZpbmVkIGJvdGggYDw8YCBhbmQgYFByaW50VG8oKWAsIHRoZSBsYXR0
ZXIgd2lsbCBiZSB1c2VkCit3aGVuIEdvb2dsZSBUZXN0IGlzIGNvbmNlcm5lZC4gIFRoaXMgYWxs
b3dzIHlvdSB0byBjdXN0b21pemUgaG93IHRoZSB2YWx1ZQorYXBwZWFycyBpbiBHb29nbGUgVGVz
dCdzIG91dHB1dCB3aXRob3V0IGFmZmVjdGluZyBjb2RlIHRoYXQgcmVsaWVzIG9uIHRoZQorYmVo
YXZpb3Igb2YgaXRzIGA8PGAgb3BlcmF0b3IuCisKK0lmIHlvdSB3YW50IHRvIHByaW50IGEgdmFs
dWUgYHhgIHVzaW5nIEdvb2dsZSBUZXN0J3MgdmFsdWUgcHJpbnRlcgoreW91cnNlbGYsIGp1c3Qg
Y2FsbCBgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGBfeF9gKWAsIHdoaWNoCityZXR1cm5zIGFu
IGBzdGQ6OnN0cmluZ2A6CisKK2BgYAordmVjdG9yPHBhaXI8QmFyLCBpbnQ+ID4gYmFyX2ludHMg
PSBHZXRCYXJJbnRWZWN0b3IoKTsKKworRVhQRUNUX1RSVUUoSXNDb3JyZWN0QmFySW50VmVjdG9y
KGJhcl9pbnRzKSkKKyAgICA8PCAiYmFyX2ludHMgPSAiIDw8IDo6dGVzdGluZzo6UHJpbnRUb1N0
cmluZyhiYXJfaW50cyk7CitgYGAKKworIyBEZWF0aCBUZXN0cyAjCisKK0luIG1hbnkgYXBwbGlj
YXRpb25zLCB0aGVyZSBhcmUgYXNzZXJ0aW9ucyB0aGF0IGNhbiBjYXVzZSBhcHBsaWNhdGlvbiBm
YWlsdXJlCitpZiBhIGNvbmRpdGlvbiBpcyBub3QgbWV0LiBUaGVzZSBzYW5pdHkgY2hlY2tzLCB3
aGljaCBlbnN1cmUgdGhhdCB0aGUgcHJvZ3JhbQoraXMgaW4gYSBrbm93biBnb29kIHN0YXRlLCBh
cmUgdGhlcmUgdG8gZmFpbCBhdCB0aGUgZWFybGllc3QgcG9zc2libGUgdGltZSBhZnRlcgorc29t
ZSBwcm9ncmFtIHN0YXRlIGlzIGNvcnJ1cHRlZC4gSWYgdGhlIGFzc2VydGlvbiBjaGVja3MgdGhl
IHdyb25nIGNvbmRpdGlvbiwKK3RoZW4gdGhlIHByb2dyYW0gbWF5IHByb2NlZWQgaW4gYW4gZXJy
b25lb3VzIHN0YXRlLCB3aGljaCBjb3VsZCBsZWFkIHRvIG1lbW9yeQorY29ycnVwdGlvbiwgc2Vj
dXJpdHkgaG9sZXMsIG9yIHdvcnNlLiBIZW5jZSBpdCBpcyB2aXRhbGx5IGltcG9ydGFudCB0byB0
ZXN0Cit0aGF0IHN1Y2ggYXNzZXJ0aW9uIHN0YXRlbWVudHMgd29yayBhcyBleHBlY3RlZC4KKwor
U2luY2UgdGhlc2UgcHJlY29uZGl0aW9uIGNoZWNrcyBjYXVzZSB0aGUgcHJvY2Vzc2VzIHRvIGRp
ZSwgd2UgY2FsbCBzdWNoIHRlc3RzCitfZGVhdGggdGVzdHNfLiBNb3JlIGdlbmVyYWxseSwgYW55
IHRlc3QgdGhhdCBjaGVja3MgdGhhdCBhIHByb2dyYW0gdGVybWluYXRlcworKGV4Y2VwdCBieSB0
aHJvd2luZyBhbiBleGNlcHRpb24pIGluIGFuIGV4cGVjdGVkIGZhc2hpb24gaXMgYWxzbyBhIGRl
YXRoIHRlc3QuCisKK05vdGUgdGhhdCBpZiBhIHBpZWNlIG9mIGNvZGUgdGhyb3dzIGFuIGV4Y2Vw
dGlvbiwgd2UgZG9uJ3QgY29uc2lkZXIgaXQgImRlYXRoIgorZm9yIHRoZSBwdXJwb3NlIG9mIGRl
YXRoIHRlc3RzLCBhcyB0aGUgY2FsbGVyIG9mIHRoZSBjb2RlIGNvdWxkIGNhdGNoIHRoZSBleGNl
cHRpb24KK2FuZCBhdm9pZCB0aGUgY3Jhc2guIElmIHlvdSB3YW50IHRvIHZlcmlmeSBleGNlcHRp
b25zIHRocm93biBieSB5b3VyIGNvZGUsCitzZWUgW0V4Y2VwdGlvbiBBc3NlcnRpb25zXSgjZXhj
ZXB0aW9uLWFzc2VydGlvbnMpLgorCitJZiB5b3Ugd2FudCB0byB0ZXN0IGBFWFBFQ1RfKigpL0FT
U0VSVF8qKClgIGZhaWx1cmVzIGluIHlvdXIgdGVzdCBjb2RlLCBzZWUgW0NhdGNoaW5nIEZhaWx1
cmVzXSgjY2F0Y2hpbmctZmFpbHVyZXMpLgorCisjIyBIb3cgdG8gV3JpdGUgYSBEZWF0aCBUZXN0
ICMjCisKK0dvb2dsZSBUZXN0IGhhcyB0aGUgZm9sbG93aW5nIG1hY3JvcyB0byBzdXBwb3J0IGRl
YXRoIHRlc3RzOgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlv
bioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX0RFQVRIKGBfc3RhdGVtZW50
LCByZWdleF9gKTsgfCBgRVhQRUNUX0RFQVRIKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBfc3Rh
dGVtZW50XyBjcmFzaGVzIHdpdGggdGhlIGdpdmVuIGVycm9yIHwKK3wgYEFTU0VSVF9ERUFUSF9J
Rl9TVVBQT1JURUQoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApOyB8IGBFWFBFQ1RfREVBVEhfSUZfU1VQ
UE9SVEVEKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBpZiBkZWF0aCB0ZXN0cyBhcmUgc3VwcG9y
dGVkLCB2ZXJpZmllcyB0aGF0IF9zdGF0ZW1lbnRfIGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4gZXJy
b3I7IG90aGVyd2lzZSB2ZXJpZmllcyBub3RoaW5nIHwKK3wgYEFTU0VSVF9FWElUKGBfc3RhdGVt
ZW50LCBwcmVkaWNhdGUsIHJlZ2V4X2ApOyB8IGBFWFBFQ1RfRVhJVChgX3N0YXRlbWVudCwgcHJl
ZGljYXRlLCByZWdleF9gKTsgfF9zdGF0ZW1lbnRfIGV4aXRzIHdpdGggdGhlIGdpdmVuIGVycm9y
IGFuZCBpdHMgZXhpdCBjb2RlIG1hdGNoZXMgX3ByZWRpY2F0ZV8gfAorCit3aGVyZSBfc3RhdGVt
ZW50XyBpcyBhIHN0YXRlbWVudCB0aGF0IGlzIGV4cGVjdGVkIHRvIGNhdXNlIHRoZSBwcm9jZXNz
IHRvCitkaWUsIF9wcmVkaWNhdGVfIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3Rpb24gb2JqZWN0IHRo
YXQgZXZhbHVhdGVzIGFuIGludGVnZXIKK2V4aXQgc3RhdHVzLCBhbmQgX3JlZ2V4XyBpcyBhIHJl
Z3VsYXIgZXhwcmVzc2lvbiB0aGF0IHRoZSBzdGRlcnIgb3V0cHV0IG9mCitfc3RhdGVtZW50XyBp
cyBleHBlY3RlZCB0byBtYXRjaC4gTm90ZSB0aGF0IF9zdGF0ZW1lbnRfIGNhbiBiZSBfYW55IHZh
bGlkCitzdGF0ZW1lbnRfIChpbmNsdWRpbmcgX2NvbXBvdW5kIHN0YXRlbWVudF8pIGFuZCBkb2Vz
bid0IGhhdmUgdG8gYmUgYW4KK2V4cHJlc3Npb24uCisKK0FzIHVzdWFsLCB0aGUgYEFTU0VSVGAg
dmFyaWFudHMgYWJvcnQgdGhlIGN1cnJlbnQgdGVzdCBmdW5jdGlvbiwgd2hpbGUgdGhlCitgRVhQ
RUNUYCB2YXJpYW50cyBkbyBub3QuCisKKyoqTm90ZToqKiBXZSB1c2UgdGhlIHdvcmQgImNyYXNo
IiBoZXJlIHRvIG1lYW4gdGhhdCB0aGUgcHJvY2VzcwordGVybWluYXRlcyB3aXRoIGEgX25vbi16
ZXJvXyBleGl0IHN0YXR1cyBjb2RlLiAgVGhlcmUgYXJlIHR3bworcG9zc2liaWxpdGllczogZWl0
aGVyIHRoZSBwcm9jZXNzIGhhcyBjYWxsZWQgYGV4aXQoKWAgb3IgYF9leGl0KClgCit3aXRoIGEg
bm9uLXplcm8gdmFsdWUsIG9yIGl0IG1heSBiZSBraWxsZWQgYnkgYSBzaWduYWwuCisKK1RoaXMg
bWVhbnMgdGhhdCBpZiBfc3RhdGVtZW50XyB0ZXJtaW5hdGVzIHRoZSBwcm9jZXNzIHdpdGggYSAw
IGV4aXQKK2NvZGUsIGl0IGlzIF9ub3RfIGNvbnNpZGVyZWQgYSBjcmFzaCBieSBgRVhQRUNUX0RF
QVRIYC4gIFVzZQorYEVYUEVDVF9FWElUYCBpbnN0ZWFkIGlmIHRoaXMgaXMgdGhlIGNhc2UsIG9y
IGlmIHlvdSB3YW50IHRvIHJlc3RyaWN0Cit0aGUgZXhpdCBjb2RlIG1vcmUgcHJlY2lzZWx5Lgor
CitBIHByZWRpY2F0ZSBoZXJlIG11c3QgYWNjZXB0IGFuIGBpbnRgIGFuZCByZXR1cm4gYSBgYm9v
bGAuIFRoZSBkZWF0aCB0ZXN0CitzdWNjZWVkcyBvbmx5IGlmIHRoZSBwcmVkaWNhdGUgcmV0dXJu
cyBgdHJ1ZWAuIEdvb2dsZSBUZXN0IGRlZmluZXMgYSBmZXcKK3ByZWRpY2F0ZXMgdGhhdCBoYW5k
bGUgdGhlIG1vc3QgY29tbW9uIGNhc2VzOgorCitgYGAKKzo6dGVzdGluZzo6RXhpdGVkV2l0aENv
ZGUoZXhpdF9jb2RlKQorYGBgCisKK1RoaXMgZXhwcmVzc2lvbiBpcyBgdHJ1ZWAgaWYgdGhlIHBy
b2dyYW0gZXhpdGVkIG5vcm1hbGx5IHdpdGggdGhlIGdpdmVuIGV4aXQKK2NvZGUuCisKK2BgYAor
Ojp0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChzaWduYWxfbnVtYmVyKSAgLy8gTm90IGF2YWlsYWJs
ZSBvbiBXaW5kb3dzLgorYGBgCisKK1RoaXMgZXhwcmVzc2lvbiBpcyBgdHJ1ZWAgaWYgdGhlIHBy
b2dyYW0gd2FzIGtpbGxlZCBieSB0aGUgZ2l2ZW4gc2lnbmFsLgorCitUaGUgYCpfREVBVEhgIG1h
Y3JvcyBhcmUgY29udmVuaWVudCB3cmFwcGVycyBmb3IgYCpfRVhJVGAgdGhhdCB1c2UgYSBwcmVk
aWNhdGUKK3RoYXQgdmVyaWZpZXMgdGhlIHByb2Nlc3MnIGV4aXQgY29kZSBpcyBub24temVyby4K
KworTm90ZSB0aGF0IGEgZGVhdGggdGVzdCBvbmx5IGNhcmVzIGFib3V0IHRocmVlIHRoaW5nczoK
KworICAxLiBkb2VzIF9zdGF0ZW1lbnRfIGFib3J0IG9yIGV4aXQgdGhlIHByb2Nlc3M/CisgIDEu
IChpbiB0aGUgY2FzZSBvZiBgQVNTRVJUX0VYSVRgIGFuZCBgRVhQRUNUX0VYSVRgKSBkb2VzIHRo
ZSBleGl0IHN0YXR1cyBzYXRpc2Z5IF9wcmVkaWNhdGVfPyAgT3IgKGluIHRoZSBjYXNlIG9mIGBB
U1NFUlRfREVBVEhgIGFuZCBgRVhQRUNUX0RFQVRIYCkgaXMgdGhlIGV4aXQgc3RhdHVzIG5vbi16
ZXJvPyAgQW5kCisgIDEuIGRvZXMgdGhlIHN0ZGVyciBvdXRwdXQgbWF0Y2ggX3JlZ2V4Xz8KKwor
SW4gcGFydGljdWxhciwgaWYgX3N0YXRlbWVudF8gZ2VuZXJhdGVzIGFuIGBBU1NFUlRfKmAgb3Ig
YEVYUEVDVF8qYCBmYWlsdXJlLCBpdCB3aWxsICoqbm90KiogY2F1c2UgdGhlIGRlYXRoIHRlc3Qg
dG8gZmFpbCwgYXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBkb24ndCBhYm9ydCB0aGUgcHJvY2Vz
cy4KKworVG8gd3JpdGUgYSBkZWF0aCB0ZXN0LCBzaW1wbHkgdXNlIG9uZSBvZiB0aGUgYWJvdmUg
bWFjcm9zIGluc2lkZSB5b3VyIHRlc3QKK2Z1bmN0aW9uLiBGb3IgZXhhbXBsZSwKKworYGBgCitU
RVNUKE15RGVhdGhUZXN0LCBGb28pIHsKKyAgLy8gVGhpcyBkZWF0aCB0ZXN0IHVzZXMgYSBjb21w
b3VuZCBzdGF0ZW1lbnQuCisgIEFTU0VSVF9ERUFUSCh7IGludCBuID0gNTsgRm9vKCZuKTsgfSwg
IkVycm9yIG9uIGxpbmUgLiogb2YgRm9vKCkiKTsKK30KK1RFU1QoTXlEZWF0aFRlc3QsIE5vcm1h
bEV4aXQpIHsKKyAgRVhQRUNUX0VYSVQoTm9ybWFsRXhpdCgpLCA6OnRlc3Rpbmc6OkV4aXRlZFdp
dGhDb2RlKDApLCAiU3VjY2VzcyIpOworfQorVEVTVChNeURlYXRoVGVzdCwgS2lsbE15c2VsZikg
eworICBFWFBFQ1RfRVhJVChLaWxsTXlzZWxmKCksIDo6dGVzdGluZzo6S2lsbGVkQnlTaWduYWwo
U0lHS0lMTCksICJTZW5kaW5nIG15c2VsZiB1bmJsb2NrYWJsZSBzaWduYWwiKTsKK30KK2BgYAor
Cit2ZXJpZmllcyB0aGF0OgorCisgICogY2FsbGluZyBgRm9vKDUpYCBjYXVzZXMgdGhlIHByb2Nl
c3MgdG8gZGllIHdpdGggdGhlIGdpdmVuIGVycm9yIG1lc3NhZ2UsCisgICogY2FsbGluZyBgTm9y
bWFsRXhpdCgpYCBjYXVzZXMgdGhlIHByb2Nlc3MgdG8gcHJpbnQgYCJTdWNjZXNzImAgdG8gc3Rk
ZXJyIGFuZCBleGl0IHdpdGggZXhpdCBjb2RlIDAsIGFuZAorICAqIGNhbGxpbmcgYEtpbGxNeXNl
bGYoKWAga2lsbHMgdGhlIHByb2Nlc3Mgd2l0aCBzaWduYWwgYFNJR0tJTExgLgorCitUaGUgdGVz
dCBmdW5jdGlvbiBib2R5IG1heSBjb250YWluIG90aGVyIGFzc2VydGlvbnMgYW5kIHN0YXRlbWVu
dHMgYXMgd2VsbCwgaWYKK25lY2Vzc2FyeS4KKworX0ltcG9ydGFudDpfIFdlIHN0cm9uZ2x5IHJl
Y29tbWVuZCB5b3UgdG8gZm9sbG93IHRoZSBjb252ZW50aW9uIG9mIG5hbWluZyB5b3VyCit0ZXN0
IGNhc2UgKG5vdCB0ZXN0KSBgKkRlYXRoVGVzdGAgd2hlbiBpdCBjb250YWlucyBhIGRlYXRoIHRl
c3QsIGFzCitkZW1vbnN0cmF0ZWQgaW4gdGhlIGFib3ZlIGV4YW1wbGUuIFRoZSBgRGVhdGggVGVz
dHMgQW5kIFRocmVhZHNgIHNlY3Rpb24gYmVsb3cKK2V4cGxhaW5zIHdoeS4KKworSWYgYSB0ZXN0
IGZpeHR1cmUgY2xhc3MgaXMgc2hhcmVkIGJ5IG5vcm1hbCB0ZXN0cyBhbmQgZGVhdGggdGVzdHMs
IHlvdQorY2FuIHVzZSB0eXBlZGVmIHRvIGludHJvZHVjZSBhbiBhbGlhcyBmb3IgdGhlIGZpeHR1
cmUgY2xhc3MgYW5kIGF2b2lkCitkdXBsaWNhdGluZyBpdHMgY29kZToKK2BgYAorY2xhc3MgRm9v
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKKwordHlwZWRlZiBGb29UZXN0
IEZvb0RlYXRoVGVzdDsKKworVEVTVF9GKEZvb1Rlc3QsIERvZXNUaGlzKSB7CisgIC8vIG5vcm1h
bCB0ZXN0Cit9CisKK1RFU1RfRihGb29EZWF0aFRlc3QsIERvZXNUaGF0KSB7CisgIC8vIGRlYXRo
IHRlc3QKK30KK2BgYAorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVz
IE1TVkMgOC4wIG9yIGFib3ZlKSwgQ3lnd2luLCBhbmQgTWFjICh0aGUgbGF0dGVyIHRocmVlIGFy
ZSBzdXBwb3J0ZWQgc2luY2UgdjEuMy4wKS4gIGAoQVNTRVJUfEVYUEVDVClfREVBVEhfSUZfU1VQ
UE9SVEVEYCBhcmUgbmV3IGluIHYxLjQuMC4KKworIyMgUmVndWxhciBFeHByZXNzaW9uIFN5bnRh
eCAjIworCitPbiBQT1NJWCBzeXN0ZW1zIChlLmcuIExpbnV4LCBDeWd3aW4sIGFuZCBNYWMpLCBH
b29nbGUgVGVzdCB1c2VzIHRoZQorW1BPU0lYIGV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbl0o
aHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Jhc2VkZWZzL3hi
ZF9jaGFwMDkuaHRtbCN0YWdfMDlfMDQpCitzeW50YXggaW4gZGVhdGggdGVzdHMuIFRvIGxlYXJu
IGFib3V0IHRoaXMgc3ludGF4LCB5b3UgbWF5IHdhbnQgdG8gcmVhZCB0aGlzIFtXaWtpcGVkaWEg
ZW50cnldKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVndWxhcl9leHByZXNzaW9uI1BP
U0lYX0V4dGVuZGVkX1JlZ3VsYXJfRXhwcmVzc2lvbnMpLgorCitPbiBXaW5kb3dzLCBHb29nbGUg
VGVzdCB1c2VzIGl0cyBvd24gc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbgoraW1wbGVtZW50YXRp
b24uIEl0IGxhY2tzIG1hbnkgZmVhdHVyZXMgeW91IGNhbiBmaW5kIGluIFBPU0lYIGV4dGVuZGVk
CityZWd1bGFyIGV4cHJlc3Npb25zLiAgRm9yIGV4YW1wbGUsIHdlIGRvbid0IHN1cHBvcnQgdW5p
b24gKGAieHx5ImApLAorZ3JvdXBpbmcgKGAiKHh5KSJgKSwgYnJhY2tldHMgKGAiW3h5XSJgKSwg
YW5kIHJlcGV0aXRpb24gY291bnQKKyhgInh7NSw3fSJgKSwgYW1vbmcgb3RoZXJzLiBCZWxvdyBp
cyB3aGF0IHdlIGRvIHN1cHBvcnQgKExldHRlciBgQWAgZGVub3RlcyBhCitsaXRlcmFsIGNoYXJh
Y3RlciwgcGVyaW9kIChgLmApLCBvciBhIHNpbmdsZSBgXFxgIGVzY2FwZSBzZXF1ZW5jZTsgYHhg
CithbmQgYHlgIGRlbm90ZSByZWd1bGFyIGV4cHJlc3Npb25zLik6CisKK3wgYGNgIHwgbWF0Y2hl
cyBhbnkgbGl0ZXJhbCBjaGFyYWN0ZXIgYGNgIHwKK3w6LS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXwKK3wgYFxcZGAgfCBtYXRjaGVzIGFueSBkZWNpbWFsIGRpZ2l0ICAg
ICAgICAgfAorfCBgXFxEYCB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgZGVj
aW1hbCBkaWdpdCB8Cit8IGBcXGZgIHwgbWF0Y2hlcyBgXGZgICAgICAgICAgICAgICAgICAgICAg
IHwKK3wgYFxcbmAgfCBtYXRjaGVzIGBcbmAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFxy
YCB8IG1hdGNoZXMgYFxyYCAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBcXHNgIHwgbWF0Y2hl
cyBhbnkgQVNDSUkgd2hpdGVzcGFjZSwgaW5jbHVkaW5nIGBcbmAgfAorfCBgXFxTYCB8IG1hdGNo
ZXMgYW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgd2hpdGVzcGFjZSB8Cit8IGBcXHRgIHwgbWF0
Y2hlcyBgXHRgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYFxcdmAgfCBtYXRjaGVzIGBcdmAg
ICAgICAgICAgICAgICAgICAgICAgfAorfCBgXFx3YCB8IG1hdGNoZXMgYW55IGxldHRlciwgYF9g
LCBvciBkZWNpbWFsIGRpZ2l0IHwKK3wgYFxcV2AgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhh
dCBgXFx3YCBkb2Vzbid0IG1hdGNoIHwKK3wgYFxcY2AgfCBtYXRjaGVzIGFueSBsaXRlcmFsIGNo
YXJhY3RlciBgY2AsIHdoaWNoIG11c3QgYmUgYSBwdW5jdHVhdGlvbiB8Cit8IGBcXC5gIHwgbWF0
Y2hlcyB0aGUgYC5gIGNoYXJhY3RlciAgICAgICAgIHwKK3wgYC5gIHwgbWF0Y2hlcyBhbnkgc2lu
Z2xlIGNoYXJhY3RlciBleGNlcHQgYFxuYCB8Cit8IGBBP2AgfCBtYXRjaGVzIDAgb3IgMSBvY2N1
cnJlbmNlcyBvZiBgQWAgfAorfCBgQSpgIHwgbWF0Y2hlcyAwIG9yIG1hbnkgb2NjdXJyZW5jZXMg
b2YgYEFgIHwKK3wgYEErYCB8IG1hdGNoZXMgMSBvciBtYW55IG9jY3VycmVuY2VzIG9mIGBBYCB8
Cit8IGBeYCB8IG1hdGNoZXMgdGhlIGJlZ2lubmluZyBvZiBhIHN0cmluZyAobm90IHRoYXQgb2Yg
ZWFjaCBsaW5lKSB8Cit8IGAkYCB8IG1hdGNoZXMgdGhlIGVuZCBvZiBhIHN0cmluZyAobm90IHRo
YXQgb2YgZWFjaCBsaW5lKSB8Cit8IGB4eWAgfCBtYXRjaGVzIGB4YCBmb2xsb3dlZCBieSBgeWAg
ICAgICAgfAorCitUbyBoZWxwIHlvdSBkZXRlcm1pbmUgd2hpY2ggY2FwYWJpbGl0eSBpcyBhdmFp
bGFibGUgb24geW91ciBzeXN0ZW0sCitHb29nbGUgVGVzdCBkZWZpbmVzIG1hY3JvIGBHVEVTVF9V
U0VTX1BPU0lYX1JFPTFgIHdoZW4gaXQgdXNlcyBQT1NJWAorZXh0ZW5kZWQgcmVndWxhciBleHBy
ZXNzaW9ucywgb3IgYEdURVNUX1VTRVNfU0lNUExFX1JFPTFgIHdoZW4gaXQgdXNlcwordGhlIHNp
bXBsZSB2ZXJzaW9uLiAgSWYgeW91IHdhbnQgeW91ciBkZWF0aCB0ZXN0cyB0byB3b3JrIGluIGJv
dGgKK2Nhc2VzLCB5b3UgY2FuIGVpdGhlciBgI2lmYCBvbiB0aGVzZSBtYWNyb3Mgb3IgdXNlIHRo
ZSBtb3JlIGxpbWl0ZWQKK3N5bnRheCBvbmx5LgorCisjIyBIb3cgSXQgV29ya3MgIyMKKworVW5k
ZXIgdGhlIGhvb2QsIGBBU1NFUlRfRVhJVCgpYCBzcGF3bnMgYSBuZXcgcHJvY2VzcyBhbmQgZXhl
Y3V0ZXMgdGhlCitkZWF0aCB0ZXN0IHN0YXRlbWVudCBpbiB0aGF0IHByb2Nlc3MuIFRoZSBkZXRh
aWxzIG9mIG9mIGhvdyBwcmVjaXNlbHkKK3RoYXQgaGFwcGVucyBkZXBlbmQgb24gdGhlIHBsYXRm
b3JtIGFuZCB0aGUgdmFyaWFibGUKK2A6OnRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9z
dHlsZSlgICh3aGljaCBpcyBpbml0aWFsaXplZCBmcm9tIHRoZQorY29tbWFuZC1saW5lIGZsYWcg
YC0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZWApLgorCisgICogT24gUE9TSVggc3lzdGVtcywgYGZv
cmsoKWAgKG9yIGBjbG9uZSgpYCBvbiBMaW51eCkgaXMgdXNlZCB0byBzcGF3biB0aGUgY2hpbGQs
IGFmdGVyIHdoaWNoOgorICAgICogSWYgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgaXMgYCJmYXN0ImAs
IHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudCBpcyBpbW1lZGlhdGVseSBleGVjdXRlZC4KKyAgICAq
IElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlzIGAidGhyZWFkc2FmZSJgLCB0aGUgY2hpbGQgcHJv
Y2VzcyByZS1leGVjdXRlcyB0aGUgdW5pdCB0ZXN0IGJpbmFyeSBqdXN0IGFzIGl0IHdhcyBvcmln
aW5hbGx5IGludm9rZWQsIGJ1dCB3aXRoIHNvbWUgZXh0cmEgZmxhZ3MgdG8gY2F1c2UganVzdCB0
aGUgc2luZ2xlIGRlYXRoIHRlc3QgdW5kZXIgY29uc2lkZXJhdGlvbiB0byBiZSBydW4uCisgICog
T24gV2luZG93cywgdGhlIGNoaWxkIGlzIHNwYXduZWQgdXNpbmcgdGhlIGBDcmVhdGVQcm9jZXNz
KClgIEFQSSwgYW5kIHJlLWV4ZWN1dGVzIHRoZSBiaW5hcnkgdG8gY2F1c2UganVzdCB0aGUgc2lu
Z2xlIGRlYXRoIHRlc3QgdW5kZXIgY29uc2lkZXJhdGlvbiB0byBiZSBydW4gLSBtdWNoIGxpa2Ug
dGhlIGB0aHJlYWRzYWZlYCBtb2RlIG9uIFBPU0lYLgorCitPdGhlciB2YWx1ZXMgZm9yIHRoZSB2
YXJpYWJsZSBhcmUgaWxsZWdhbCBhbmQgd2lsbCBjYXVzZSB0aGUgZGVhdGggdGVzdCB0bworZmFp
bC4gQ3VycmVudGx5LCB0aGUgZmxhZydzIGRlZmF1bHQgdmFsdWUgaXMgYCJmYXN0ImAuIEhvd2V2
ZXIsIHdlIHJlc2VydmUgdGhlCityaWdodCB0byBjaGFuZ2UgaXQgaW4gdGhlIGZ1dHVyZS4gVGhl
cmVmb3JlLCB5b3VyIHRlc3RzIHNob3VsZCBub3QgZGVwZW5kIG9uCit0aGlzLgorCitJbiBlaXRo
ZXIgY2FzZSwgdGhlIHBhcmVudCBwcm9jZXNzIHdhaXRzIGZvciB0aGUgY2hpbGQgcHJvY2VzcyB0
byBjb21wbGV0ZSwgYW5kIGNoZWNrcyB0aGF0CisKKyAgMS4gdGhlIGNoaWxkJ3MgZXhpdCBzdGF0
dXMgc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUsIGFuZAorICAxLiB0aGUgY2hpbGQncyBzdGRlcnIg
bWF0Y2hlcyB0aGUgcmVndWxhciBleHByZXNzaW9uLgorCitJZiB0aGUgZGVhdGggdGVzdCBzdGF0
ZW1lbnQgcnVucyB0byBjb21wbGV0aW9uIHdpdGhvdXQgZHlpbmcsIHRoZSBjaGlsZAorcHJvY2Vz
cyB3aWxsIG5vbmV0aGVsZXNzIHRlcm1pbmF0ZSwgYW5kIHRoZSBhc3NlcnRpb24gZmFpbHMuCisK
KyMjIERlYXRoIFRlc3RzIEFuZCBUaHJlYWRzICMjCisKK1RoZSByZWFzb24gZm9yIHRoZSB0d28g
ZGVhdGggdGVzdCBzdHlsZXMgaGFzIHRvIGRvIHdpdGggdGhyZWFkIHNhZmV0eS4gRHVlIHRvCit3
ZWxsLWtub3duIHByb2JsZW1zIHdpdGggZm9ya2luZyBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhyZWFk
cywgZGVhdGggdGVzdHMgc2hvdWxkCitiZSBydW4gaW4gYSBzaW5nbGUtdGhyZWFkZWQgY29udGV4
dC4gU29tZXRpbWVzLCBob3dldmVyLCBpdCBpc24ndCBmZWFzaWJsZSB0bworYXJyYW5nZSB0aGF0
IGtpbmQgb2YgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBzdGF0aWNhbGx5LWluaXRpYWxpemVk
IG1vZHVsZXMKK21heSBzdGFydCB0aHJlYWRzIGJlZm9yZSBtYWluIGlzIGV2ZXIgcmVhY2hlZC4g
T25jZSB0aHJlYWRzIGhhdmUgYmVlbiBjcmVhdGVkLAoraXQgbWF5IGJlIGRpZmZpY3VsdCBvciBp
bXBvc3NpYmxlIHRvIGNsZWFuIHRoZW0gdXAuCisKK0dvb2dsZSBUZXN0IGhhcyB0aHJlZSBmZWF0
dXJlcyBpbnRlbmRlZCB0byByYWlzZSBhd2FyZW5lc3Mgb2YgdGhyZWFkaW5nIGlzc3Vlcy4KKwor
ICAxLiBBIHdhcm5pbmcgaXMgZW1pdHRlZCBpZiBtdWx0aXBsZSB0aHJlYWRzIGFyZSBydW5uaW5n
IHdoZW4gYSBkZWF0aCB0ZXN0IGlzIGVuY291bnRlcmVkLgorICAxLiBUZXN0IGNhc2VzIHdpdGgg
YSBuYW1lIGVuZGluZyBpbiAiRGVhdGhUZXN0IiBhcmUgcnVuIGJlZm9yZSBhbGwgb3RoZXIgdGVz
dHMuCisgIDEuIEl0IHVzZXMgYGNsb25lKClgIGluc3RlYWQgb2YgYGZvcmsoKWAgdG8gc3Bhd24g
dGhlIGNoaWxkIHByb2Nlc3Mgb24gTGludXggKGBjbG9uZSgpYCBpcyBub3QgYXZhaWxhYmxlIG9u
IEN5Z3dpbiBhbmQgTWFjKSwgYXMgYGZvcmsoKWAgaXMgbW9yZSBsaWtlbHkgdG8gY2F1c2UgdGhl
IGNoaWxkIHRvIGhhbmcgd2hlbiB0aGUgcGFyZW50IHByb2Nlc3MgaGFzIG11bHRpcGxlIHRocmVh
ZHMuCisKK0l0J3MgcGVyZmVjdGx5IGZpbmUgdG8gY3JlYXRlIHRocmVhZHMgaW5zaWRlIGEgZGVh
dGggdGVzdCBzdGF0ZW1lbnQ7IHRoZXkgYXJlCitleGVjdXRlZCBpbiBhIHNlcGFyYXRlIHByb2Nl
c3MgYW5kIGNhbm5vdCBhZmZlY3QgdGhlIHBhcmVudC4KKworIyMgRGVhdGggVGVzdCBTdHlsZXMg
IyMKKworVGhlICJ0aHJlYWRzYWZlIiBkZWF0aCB0ZXN0IHN0eWxlIHdhcyBpbnRyb2R1Y2VkIGlu
IG9yZGVyIHRvIGhlbHAgbWl0aWdhdGUgdGhlCityaXNrcyBvZiB0ZXN0aW5nIGluIGEgcG9zc2li
bHkgbXVsdGl0aHJlYWRlZCBlbnZpcm9ubWVudC4gSXQgdHJhZGVzIGluY3JlYXNlZAordGVzdCBl
eGVjdXRpb24gdGltZSAocG90ZW50aWFsbHkgZHJhbWF0aWNhbGx5IHNvKSBmb3IgaW1wcm92ZWQg
dGhyZWFkIHNhZmV0eS4KK1dlIHN1Z2dlc3QgdXNpbmcgdGhlIGZhc3RlciwgZGVmYXVsdCAiZmFz
dCIgc3R5bGUgdW5sZXNzIHlvdXIgdGVzdCBoYXMgc3BlY2lmaWMKK3Byb2JsZW1zIHdpdGggaXQu
CisKK1lvdSBjYW4gY2hvb3NlIGEgcGFydGljdWxhciBzdHlsZSBvZiBkZWF0aCB0ZXN0cyBieSBz
ZXR0aW5nIHRoZSBmbGFnCitwcm9ncmFtbWF0aWNhbGx5OgorCitgYGAKKzo6dGVzdGluZzo6RkxB
R1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJ0aHJlYWRzYWZlIjsKK2BgYAorCitZb3UgY2Fu
IGRvIHRoaXMgaW4gYG1haW4oKWAgdG8gc2V0IHRoZSBzdHlsZSBmb3IgYWxsIGRlYXRoIHRlc3Rz
IGluIHRoZQorYmluYXJ5LCBvciBpbiBpbmRpdmlkdWFsIHRlc3RzLiBSZWNhbGwgdGhhdCBmbGFn
cyBhcmUgc2F2ZWQgYmVmb3JlIHJ1bm5pbmcgZWFjaAordGVzdCBhbmQgcmVzdG9yZWQgYWZ0ZXJ3
YXJkcywgc28geW91IG5lZWQgbm90IGRvIHRoYXQgeW91cnNlbGYuIEZvciBleGFtcGxlOgorCitg
YGAKK1RFU1QoTXlEZWF0aFRlc3QsIFRlc3RPbmUpIHsKKyAgOjp0ZXN0aW5nOjpGTEFHU19ndGVz
dF9kZWF0aF90ZXN0X3N0eWxlID0gInRocmVhZHNhZmUiOworICAvLyBUaGlzIHRlc3QgaXMgcnVu
IGluIHRoZSAidGhyZWFkc2FmZSIgc3R5bGU6CisgIEFTU0VSVF9ERUFUSChUaGlzU2hvdWxkRGll
KCksICIiKTsKK30KKworVEVTVChNeURlYXRoVGVzdCwgVGVzdFR3bykgeworICAvLyBUaGlzIHRl
c3QgaXMgcnVuIGluIHRoZSAiZmFzdCIgc3R5bGU6CisgIEFTU0VSVF9ERUFUSChUaGlzU2hvdWxk
RGllKCksICIiKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIDo6
dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICA6OnRlc3Rpbmc6OkZMQUdT
X2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAiZmFzdCI7CisgIHJldHVybiBSVU5fQUxMX1RFU1RT
KCk7Cit9CitgYGAKKworIyMgQ2F2ZWF0cyAjIworCitUaGUgX3N0YXRlbWVudF8gYXJndW1lbnQg
b2YgYEFTU0VSVF9FWElUKClgIGNhbiBiZSBhbnkgdmFsaWQgQysrIHN0YXRlbWVudC4KK0lmIGl0
IGxlYXZlcyB0aGUgY3VycmVudCBmdW5jdGlvbiB2aWEgYSBgcmV0dXJuYCBzdGF0ZW1lbnQgb3Ig
YnkgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLAordGhlIGRlYXRoIHRlc3QgaXMgY29uc2lkZXJlZCB0
byBoYXZlIGZhaWxlZC4gIFNvbWUgR29vZ2xlIFRlc3QgbWFjcm9zIG1heSByZXR1cm4KK2Zyb20g
dGhlIGN1cnJlbnQgZnVuY3Rpb24gKGUuZy4gYEFTU0VSVF9UUlVFKClgKSwgc28gYmUgc3VyZSB0
byBhdm9pZCB0aGVtIGluIF9zdGF0ZW1lbnRfLgorCitTaW5jZSBfc3RhdGVtZW50XyBydW5zIGlu
IHRoZSBjaGlsZCBwcm9jZXNzLCBhbnkgaW4tbWVtb3J5IHNpZGUgZWZmZWN0IChlLmcuCittb2Rp
ZnlpbmcgYSB2YXJpYWJsZSwgcmVsZWFzaW5nIG1lbW9yeSwgZXRjKSBpdCBjYXVzZXMgd2lsbCBf
bm90XyBiZSBvYnNlcnZhYmxlCitpbiB0aGUgcGFyZW50IHByb2Nlc3MuIEluIHBhcnRpY3VsYXIs
IGlmIHlvdSByZWxlYXNlIG1lbW9yeSBpbiBhIGRlYXRoIHRlc3QsCit5b3VyIHByb2dyYW0gd2ls
bCBmYWlsIHRoZSBoZWFwIGNoZWNrIGFzIHRoZSBwYXJlbnQgcHJvY2VzcyB3aWxsIG5ldmVyIHNl
ZSB0aGUKK21lbW9yeSByZWNsYWltZWQuIFRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgeW91IGNhbgor
CisgIDEuIHRyeSBub3QgdG8gZnJlZSBtZW1vcnkgaW4gYSBkZWF0aCB0ZXN0OworICAxLiBmcmVl
IHRoZSBtZW1vcnkgYWdhaW4gaW4gdGhlIHBhcmVudCBwcm9jZXNzOyBvcgorICAxLiBkbyBub3Qg
dXNlIHRoZSBoZWFwIGNoZWNrZXIgaW4geW91ciBwcm9ncmFtLgorCitEdWUgdG8gYW4gaW1wbGVt
ZW50YXRpb24gZGV0YWlsLCB5b3UgY2Fubm90IHBsYWNlIG11bHRpcGxlIGRlYXRoIHRlc3QKK2Fz
c2VydGlvbnMgb24gdGhlIHNhbWUgbGluZTsgb3RoZXJ3aXNlLCBjb21waWxhdGlvbiB3aWxsIGZh
aWwgd2l0aCBhbiB1bm9idmlvdXMKK2Vycm9yIG1lc3NhZ2UuCisKK0Rlc3BpdGUgdGhlIGltcHJv
dmVkIHRocmVhZCBzYWZldHkgYWZmb3JkZWQgYnkgdGhlICJ0aHJlYWRzYWZlIiBzdHlsZSBvZiBk
ZWF0aAordGVzdCwgdGhyZWFkIHByb2JsZW1zIHN1Y2ggYXMgZGVhZGxvY2sgYXJlIHN0aWxsIHBv
c3NpYmxlIGluIHRoZSBwcmVzZW5jZSBvZgoraGFuZGxlcnMgcmVnaXN0ZXJlZCB3aXRoIGBwdGhy
ZWFkX2F0Zm9yaygzKWAuCisKKyMgVXNpbmcgQXNzZXJ0aW9ucyBpbiBTdWItcm91dGluZXMgIwor
CisjIyBBZGRpbmcgVHJhY2VzIHRvIEFzc2VydGlvbnMgIyMKKworSWYgYSB0ZXN0IHN1Yi1yb3V0
aW5lIGlzIGNhbGxlZCBmcm9tIHNldmVyYWwgcGxhY2VzLCB3aGVuIGFuIGFzc2VydGlvbgoraW5z
aWRlIGl0IGZhaWxzLCBpdCBjYW4gYmUgaGFyZCB0byB0ZWxsIHdoaWNoIGludm9jYXRpb24gb2Yg
dGhlCitzdWItcm91dGluZSB0aGUgZmFpbHVyZSBpcyBmcm9tLiAgWW91IGNhbiBhbGxldmlhdGUg
dGhpcyBwcm9ibGVtIHVzaW5nCitleHRyYSBsb2dnaW5nIG9yIGN1c3RvbSBmYWlsdXJlIG1lc3Nh
Z2VzLCBidXQgdGhhdCB1c3VhbGx5IGNsdXR0ZXJzIHVwCit5b3VyIHRlc3RzLiBBIGJldHRlciBz
b2x1dGlvbiBpcyB0byB1c2UgdGhlIGBTQ09QRURfVFJBQ0VgIG1hY3JvOgorCit8IGBTQ09QRURf
VFJBQ0UoYF9tZXNzYWdlX2ApO2AgfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwK
Kword2hlcmUgX21lc3NhZ2VfIGNhbiBiZSBhbnl0aGluZyBzdHJlYW1hYmxlIHRvIGBzdGQ6Om9z
dHJlYW1gLiBUaGlzCittYWNybyB3aWxsIGNhdXNlIHRoZSBjdXJyZW50IGZpbGUgbmFtZSwgbGlu
ZSBudW1iZXIsIGFuZCB0aGUgZ2l2ZW4KK21lc3NhZ2UgdG8gYmUgYWRkZWQgaW4gZXZlcnkgZmFp
bHVyZSBtZXNzYWdlLiBUaGUgZWZmZWN0IHdpbGwgYmUKK3VuZG9uZSB3aGVuIHRoZSBjb250cm9s
IGxlYXZlcyB0aGUgY3VycmVudCBsZXhpY2FsIHNjb3BlLgorCitGb3IgZXhhbXBsZSwKKworYGBg
CisxMDogdm9pZCBTdWIxKGludCBuKSB7CisxMTogICBFWFBFQ1RfRVEoMSwgQmFyKG4pKTsKKzEy
OiAgIEVYUEVDVF9FUSgyLCBCYXIobiArIDEpKTsKKzEzOiB9CisxNDoKKzE1OiBURVNUKEZvb1Rl
c3QsIEJhcikgeworMTY6ICAgeworMTc6ICAgICBTQ09QRURfVFJBQ0UoIkEiKTsgIC8vIFRoaXMg
dHJhY2UgcG9pbnQgd2lsbCBiZSBpbmNsdWRlZCBpbgorMTg6ICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGV2ZXJ5IGZhaWx1cmUgaW4gdGhpcyBzY29wZS4KKzE5OiAgICAgU3ViMSgxKTsKKzIw
OiAgIH0KKzIxOiAgIC8vIE5vdyBpdCB3b24ndC4KKzIyOiAgIFN1YjEoOSk7CisyMzogfQorYGBg
CisKK2NvdWxkIHJlc3VsdCBpbiBtZXNzYWdlcyBsaWtlIHRoZXNlOgorCitgYGAKK3BhdGgvdG8v
Zm9vX3Rlc3QuY2M6MTE6IEZhaWx1cmUKK1ZhbHVlIG9mOiBCYXIobikKK0V4cGVjdGVkOiAxCisg
IEFjdHVhbDogMgorICAgVHJhY2U6CitwYXRoL3RvL2Zvb190ZXN0LmNjOjE3OiBBCisKK3BhdGgv
dG8vZm9vX3Rlc3QuY2M6MTI6IEZhaWx1cmUKK1ZhbHVlIG9mOiBCYXIobiArIDEpCitFeHBlY3Rl
ZDogMgorICBBY3R1YWw6IDMKK2BgYAorCitXaXRob3V0IHRoZSB0cmFjZSwgaXQgd291bGQndmUg
YmVlbiBkaWZmaWN1bHQgdG8ga25vdyB3aGljaCBpbnZvY2F0aW9uCitvZiBgU3ViMSgpYCB0aGUg
dHdvIGZhaWx1cmVzIGNvbWUgZnJvbSByZXNwZWN0aXZlbHkuIChZb3UgY291bGQgYWRkIGFuCitl
eHRyYSBtZXNzYWdlIHRvIGVhY2ggYXNzZXJ0aW9uIGluIGBTdWIxKClgIHRvIGluZGljYXRlIHRo
ZSB2YWx1ZSBvZgorYG5gLCBidXQgdGhhdCdzIHRlZGlvdXMuKQorCitTb21lIHRpcHMgb24gdXNp
bmcgYFNDT1BFRF9UUkFDRWA6CisKKyAgMS4gV2l0aCBhIHN1aXRhYmxlIG1lc3NhZ2UsIGl0J3Mg
b2Z0ZW4gZW5vdWdoIHRvIHVzZSBgU0NPUEVEX1RSQUNFYCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEg
c3ViLXJvdXRpbmUsIGluc3RlYWQgb2YgYXQgZWFjaCBjYWxsIHNpdGUuCisgIDEuIFdoZW4gY2Fs
bGluZyBzdWItcm91dGluZXMgaW5zaWRlIGEgbG9vcCwgbWFrZSB0aGUgbG9vcCBpdGVyYXRvciBw
YXJ0IG9mIHRoZSBtZXNzYWdlIGluIGBTQ09QRURfVFJBQ0VgIHN1Y2ggdGhhdCB5b3UgY2FuIGtu
b3cgd2hpY2ggaXRlcmF0aW9uIHRoZSBmYWlsdXJlIGlzIGZyb20uCisgIDEuIFNvbWV0aW1lcyB0
aGUgbGluZSBudW1iZXIgb2YgdGhlIHRyYWNlIHBvaW50IGlzIGVub3VnaCBmb3IgaWRlbnRpZnlp
bmcgdGhlIHBhcnRpY3VsYXIgaW52b2NhdGlvbiBvZiBhIHN1Yi1yb3V0aW5lLiBJbiB0aGlzIGNh
c2UsIHlvdSBkb24ndCBoYXZlIHRvIGNob29zZSBhIHVuaXF1ZSBtZXNzYWdlIGZvciBgU0NPUEVE
X1RSQUNFYC4gWW91IGNhbiBzaW1wbHkgdXNlIGAiImAuCisgIDEuIFlvdSBjYW4gdXNlIGBTQ09Q
RURfVFJBQ0VgIGluIGFuIGlubmVyIHNjb3BlIHdoZW4gdGhlcmUgaXMgb25lIGluIHRoZSBvdXRl
ciBzY29wZS4gSW4gdGhpcyBjYXNlLCBhbGwgYWN0aXZlIHRyYWNlIHBvaW50cyB3aWxsIGJlIGlu
Y2x1ZGVkIGluIHRoZSBmYWlsdXJlIG1lc3NhZ2VzLCBpbiByZXZlcnNlIG9yZGVyIHRoZXkgYXJl
IGVuY291bnRlcmVkLgorICAxLiBUaGUgdHJhY2UgZHVtcCBpcyBjbGlja2FibGUgaW4gRW1hY3Mn
IGNvbXBpbGF0aW9uIGJ1ZmZlciAtIGhpdCByZXR1cm4gb24gYSBsaW5lIG51bWJlciBhbmQgeW91
J2xsIGJlIHRha2VuIHRvIHRoYXQgbGluZSBpbiB0aGUgc291cmNlIGZpbGUhCisKK19BdmFpbGFi
aWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBQcm9wYWdhdGluZyBGYXRhbCBGYWls
dXJlcyAjIworCitBIGNvbW1vbiBwaXRmYWxsIHdoZW4gdXNpbmcgYEFTU0VSVF8qYCBhbmQgYEZB
SUwqYCBpcyBub3QgdW5kZXJzdGFuZGluZyB0aGF0Cit3aGVuIHRoZXkgZmFpbCB0aGV5IG9ubHkg
YWJvcnQgdGhlIF9jdXJyZW50IGZ1bmN0aW9uXywgbm90IHRoZSBlbnRpcmUgdGVzdC4gRm9yCitl
eGFtcGxlLCB0aGUgZm9sbG93aW5nIHRlc3Qgd2lsbCBzZWdmYXVsdDoKK2BgYAordm9pZCBTdWJy
b3V0aW5lKCkgeworICAvLyBHZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlIGFuZCBhYm9ydHMgdGhl
IGN1cnJlbnQgZnVuY3Rpb24uCisgIEFTU0VSVF9FUSgxLCAyKTsKKyAgLy8gVGhlIGZvbGxvd2lu
ZyB3b24ndCBiZSBleGVjdXRlZC4KKyAgLi4uCit9CisKK1RFU1QoRm9vVGVzdCwgQmFyKSB7Cisg
IFN1YnJvdXRpbmUoKTsKKyAgLy8gVGhlIGludGVuZGVkIGJlaGF2aW9yIGlzIGZvciB0aGUgZmF0
YWwgZmFpbHVyZQorICAvLyBpbiBTdWJyb3V0aW5lKCkgdG8gYWJvcnQgdGhlIGVudGlyZSB0ZXN0
LgorICAvLyBUaGUgYWN0dWFsIGJlaGF2aW9yOiB0aGUgZnVuY3Rpb24gZ29lcyBvbiBhZnRlciBT
dWJyb3V0aW5lKCkgcmV0dXJucy4KKyAgaW50KiBwID0gTlVMTDsKKyAgKnAgPSAzOyAvLyBTZWdm
YXVsdCEKK30KK2BgYAorCitTaW5jZSB3ZSBkb24ndCB1c2UgZXhjZXB0aW9ucywgaXQgaXMgdGVj
aG5pY2FsbHkgaW1wb3NzaWJsZSB0bworaW1wbGVtZW50IHRoZSBpbnRlbmRlZCBiZWhhdmlvciBo
ZXJlLiAgVG8gYWxsZXZpYXRlIHRoaXMsIEdvb2dsZSBUZXN0Citwcm92aWRlcyB0d28gc29sdXRp
b25zLiAgWW91IGNvdWxkIHVzZSBlaXRoZXIgdGhlCitgKEFTU0VSVHxFWFBFQ1QpX05PX0ZBVEFM
X0ZBSUxVUkVgIGFzc2VydGlvbnMgb3IgdGhlCitgSGFzRmF0YWxGYWlsdXJlKClgIGZ1bmN0aW9u
LiAgVGhleSBhcmUgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgdHdvCitzdWJzZWN0aW9ucy4K
KworIyMjIEFzc2VydGluZyBvbiBTdWJyb3V0aW5lcyAjIyMKKworQXMgc2hvd24gYWJvdmUsIGlm
IHlvdXIgdGVzdCBjYWxscyBhIHN1YnJvdXRpbmUgdGhhdCBoYXMgYW4gYEFTU0VSVF8qYAorZmFp
bHVyZSBpbiBpdCwgdGhlIHRlc3Qgd2lsbCBjb250aW51ZSBhZnRlciB0aGUgc3Vicm91dGluZQor
cmV0dXJucy4gVGhpcyBtYXkgbm90IGJlIHdoYXQgeW91IHdhbnQuCisKK09mdGVuIHBlb3BsZSB3
YW50IGZhdGFsIGZhaWx1cmVzIHRvIHByb3BhZ2F0ZSBsaWtlIGV4Y2VwdGlvbnMuICBGb3IKK3Ro
YXQgR29vZ2xlIFRlc3Qgb2ZmZXJzIHRoZSBmb2xsb3dpbmcgbWFjcm9zOgorCit8ICoqRmF0YWwg
YXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6
LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tfAorfCBgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoYF9zdGF0ZW1lbnRfYCk7YCB8IGBFWFBF
Q1RfTk9fRkFUQUxfRkFJTFVSRShgX3N0YXRlbWVudF9gKTtgIHwgX3N0YXRlbWVudF8gZG9lc24n
dCBnZW5lcmF0ZSBhbnkgbmV3IGZhdGFsIGZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZC4g
fAorCitPbmx5IGZhaWx1cmVzIGluIHRoZSB0aHJlYWQgdGhhdCBleGVjdXRlcyB0aGUgYXNzZXJ0
aW9uIGFyZSBjaGVja2VkIHRvCitkZXRlcm1pbmUgdGhlIHJlc3VsdCBvZiB0aGlzIHR5cGUgb2Yg
YXNzZXJ0aW9ucy4gIElmIF9zdGF0ZW1lbnRfCitjcmVhdGVzIG5ldyB0aHJlYWRzLCBmYWlsdXJl
cyBpbiB0aGVzZSB0aHJlYWRzIGFyZSBpZ25vcmVkLgorCitFeGFtcGxlczoKKworYGBgCitBU1NF
UlRfTk9fRkFUQUxfRkFJTFVSRShGb28oKSk7CisKK2ludCBpOworRVhQRUNUX05PX0ZBVEFMX0ZB
SUxVUkUoeworICBpID0gQmFyKCk7Cit9KTsKK2BgYAorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgs
IFdpbmRvd3MsIE1hYy4gQXNzZXJ0aW9ucyBmcm9tIG11bHRpcGxlIHRocmVhZHMKK2FyZSBjdXJy
ZW50bHkgbm90IHN1cHBvcnRlZC4KKworIyMjIENoZWNraW5nIGZvciBGYWlsdXJlcyBpbiB0aGUg
Q3VycmVudCBUZXN0ICMjIworCitgSGFzRmF0YWxGYWlsdXJlKClgIGluIHRoZSBgOjp0ZXN0aW5n
OjpUZXN0YCBjbGFzcyByZXR1cm5zIGB0cnVlYCBpZiBhbgorYXNzZXJ0aW9uIGluIHRoZSBjdXJy
ZW50IHRlc3QgaGFzIHN1ZmZlcmVkIGEgZmF0YWwgZmFpbHVyZS4gVGhpcworYWxsb3dzIGZ1bmN0
aW9ucyB0byBjYXRjaCBmYXRhbCBmYWlsdXJlcyBpbiBhIHN1Yi1yb3V0aW5lIGFuZCByZXR1cm4K
K2Vhcmx5LgorCitgYGAKK2NsYXNzIFRlc3QgeworIHB1YmxpYzoKKyAgLi4uCisgIHN0YXRpYyBi
b29sIEhhc0ZhdGFsRmFpbHVyZSgpOworfTsKK2BgYAorCitUaGUgdHlwaWNhbCB1c2FnZSwgd2hp
Y2ggYmFzaWNhbGx5IHNpbXVsYXRlcyB0aGUgYmVoYXZpb3Igb2YgYSB0aHJvd24KK2V4Y2VwdGlv
biwgaXM6CisKK2BgYAorVEVTVChGb29UZXN0LCBCYXIpIHsKKyAgU3Vicm91dGluZSgpOworICAv
LyBBYm9ydHMgaWYgU3Vicm91dGluZSgpIGhhZCBhIGZhdGFsIGZhaWx1cmUuCisgIGlmIChIYXNG
YXRhbEZhaWx1cmUoKSkKKyAgICByZXR1cm47CisgIC8vIFRoZSBmb2xsb3dpbmcgd29uJ3QgYmUg
ZXhlY3V0ZWQuCisgIC4uLgorfQorYGBgCisKK0lmIGBIYXNGYXRhbEZhaWx1cmUoKWAgaXMgdXNl
ZCBvdXRzaWRlIG9mIGBURVNUKClgICwgYFRFU1RfRigpYCAsIG9yIGEgdGVzdAorZml4dHVyZSwg
eW91IG11c3QgYWRkIHRoZSBgOjp0ZXN0aW5nOjpUZXN0OjpgIHByZWZpeCwgYXMgaW46CisKK2Bg
YAoraWYgKDo6dGVzdGluZzo6VGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkpCisgIHJldHVybjsKK2Bg
YAorCitTaW1pbGFybHksIGBIYXNOb25mYXRhbEZhaWx1cmUoKWAgcmV0dXJucyBgdHJ1ZWAgaWYg
dGhlIGN1cnJlbnQgdGVzdAoraGFzIGF0IGxlYXN0IG9uZSBub24tZmF0YWwgZmFpbHVyZSwgYW5k
IGBIYXNGYWlsdXJlKClgIHJldHVybnMgYHRydWVgCitpZiB0aGUgY3VycmVudCB0ZXN0IGhhcyBh
dCBsZWFzdCBvbmUgZmFpbHVyZSBvZiBlaXRoZXIga2luZC4KKworX0F2YWlsYWJpbGl0eTpfIExp
bnV4LCBXaW5kb3dzLCBNYWMuICBgSGFzTm9uZmF0YWxGYWlsdXJlKClgIGFuZAorYEhhc0ZhaWx1
cmUoKWAgYXJlIGF2YWlsYWJsZSBzaW5jZSB2ZXJzaW9uIDEuNC4wLgorCisjIExvZ2dpbmcgQWRk
aXRpb25hbCBJbmZvcm1hdGlvbiAjCisKK0luIHlvdXIgdGVzdCBjb2RlLCB5b3UgY2FuIGNhbGwg
YFJlY29yZFByb3BlcnR5KCJrZXkiLCB2YWx1ZSlgIHRvIGxvZworYWRkaXRpb25hbCBpbmZvcm1h
dGlvbiwgd2hlcmUgYHZhbHVlYCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIGBpbnRgLiBU
aGUgX2xhc3RfIHZhbHVlIHJlY29yZGVkIGZvciBhIGtleSB3aWxsIGJlIGVtaXR0ZWQgdG8gdGhl
IFhNTCBvdXRwdXQKK2lmIHlvdSBzcGVjaWZ5IG9uZS4gRm9yIGV4YW1wbGUsIHRoZSB0ZXN0CisK
K2BgYAorVEVTVF9GKFdpZGdldFVzYWdlVGVzdCwgTWluQW5kTWF4V2lkZ2V0cykgeworICBSZWNv
cmRQcm9wZXJ0eSgiTWF4aW11bVdpZGdldHMiLCBDb21wdXRlTWF4VXNhZ2UoKSk7CisgIFJlY29y
ZFByb3BlcnR5KCJNaW5pbXVtV2lkZ2V0cyIsIENvbXB1dGVNaW5Vc2FnZSgpKTsKK30KK2BgYAor
Cit3aWxsIG91dHB1dCBYTUwgbGlrZSB0aGlzOgorCitgYGAKKy4uLgorICA8dGVzdGNhc2UgbmFt
ZT0iTWluQW5kTWF4V2lkZ2V0cyIgc3RhdHVzPSJydW4iIHRpbWU9IjYiIGNsYXNzbmFtZT0iV2lk
Z2V0VXNhZ2VUZXN0IgorICAgICAgICAgICAgTWF4aW11bVdpZGdldHM9IjEyIgorICAgICAgICAg
ICAgTWluaW11bVdpZGdldHM9IjkiIC8+CisuLi4KK2BgYAorCitfTm90ZV86CisgICogYFJlY29y
ZFByb3BlcnR5KClgIGlzIGEgc3RhdGljIG1lbWJlciBvZiB0aGUgYFRlc3RgIGNsYXNzLiBUaGVy
ZWZvcmUgaXQgbmVlZHMgdG8gYmUgcHJlZml4ZWQgd2l0aCBgOjp0ZXN0aW5nOjpUZXN0OjpgIGlm
IHVzZWQgb3V0c2lkZSBvZiB0aGUgYFRFU1RgIGJvZHkgYW5kIHRoZSB0ZXN0IGZpeHR1cmUgY2xh
c3MuCisgICogYGtleWAgbXVzdCBiZSBhIHZhbGlkIFhNTCBhdHRyaWJ1dGUgbmFtZSwgYW5kIGNh
bm5vdCBjb25mbGljdCB3aXRoIHRoZSBvbmVzIGFscmVhZHkgdXNlZCBieSBHb29nbGUgVGVzdCAo
YG5hbWVgLCBgc3RhdHVzYCwgYHRpbWVgLCBgY2xhc3NuYW1lYCwgYHR5cGVfcGFyYW1gLCBhbmQg
YHZhbHVlX3BhcmFtYCkuCisgICogQ2FsbGluZyBgUmVjb3JkUHJvcGVydHkoKWAgb3V0c2lkZSBv
ZiB0aGUgbGlmZXNwYW4gb2YgYSB0ZXN0IGlzIGFsbG93ZWQuIElmIGl0J3MgY2FsbGVkIG91dHNp
ZGUgb2YgYSB0ZXN0IGJ1dCBiZXR3ZWVuIGEgdGVzdCBjYXNlJ3MgYFNldFVwVGVzdENhc2UoKWAg
YW5kIGBUZWFyRG93blRlc3RDYXNlKClgIG1ldGhvZHMsIGl0IHdpbGwgYmUgYXR0cmlidXRlZCB0
byB0aGUgWE1MIGVsZW1lbnQgZm9yIHRoZSB0ZXN0IGNhc2UuIElmIGl0J3MgY2FsbGVkIG91dHNp
ZGUgb2YgYWxsIHRlc3QgY2FzZXMgKGUuZy4gaW4gYSB0ZXN0IGVudmlyb25tZW50KSwgaXQgd2ls
bCBiZSBhdHRyaWJ1dGVkIHRvIHRoZSB0b3AtbGV2ZWwgWE1MIGVsZW1lbnQuCisKK19BdmFpbGFi
aWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIFNoYXJpbmcgUmVzb3VyY2VzIEJldHdl
ZW4gVGVzdHMgaW4gdGhlIFNhbWUgVGVzdCBDYXNlICMKKworCisKK0dvb2dsZSBUZXN0IGNyZWF0
ZXMgYSBuZXcgdGVzdCBmaXh0dXJlIG9iamVjdCBmb3IgZWFjaCB0ZXN0IGluIG9yZGVyIHRvIG1h
a2UKK3Rlc3RzIGluZGVwZW5kZW50IGFuZCBlYXNpZXIgdG8gZGVidWcuIEhvd2V2ZXIsIHNvbWV0
aW1lcyB0ZXN0cyB1c2UgcmVzb3VyY2VzCit0aGF0IGFyZSBleHBlbnNpdmUgdG8gc2V0IHVwLCBt
YWtpbmcgdGhlIG9uZS1jb3B5LXBlci10ZXN0IG1vZGVsIHByb2hpYml0aXZlbHkKK2V4cGVuc2l2
ZS4KKworSWYgdGhlIHRlc3RzIGRvbid0IGNoYW5nZSB0aGUgcmVzb3VyY2UsIHRoZXJlJ3Mgbm8g
aGFybSBpbiB0aGVtIHNoYXJpbmcgYQorc2luZ2xlIHJlc291cmNlIGNvcHkuIFNvLCBpbiBhZGRp
dGlvbiB0byBwZXItdGVzdCBzZXQtdXAvdGVhci1kb3duLCBHb29nbGUgVGVzdAorYWxzbyBzdXBw
b3J0cyBwZXItdGVzdC1jYXNlIHNldC11cC90ZWFyLWRvd24uIFRvIHVzZSBpdDoKKworICAxLiBJ
biB5b3VyIHRlc3QgZml4dHVyZSBjbGFzcyAoc2F5IGBGb29UZXN0YCApLCBkZWZpbmUgYXMgYHN0
YXRpY2Agc29tZSBtZW1iZXIgdmFyaWFibGVzIHRvIGhvbGQgdGhlIHNoYXJlZCByZXNvdXJjZXMu
CisgIDEuIEluIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBjbGFzcywgZGVmaW5lIGEgYHN0YXRpYyB2
b2lkIFNldFVwVGVzdENhc2UoKWAgZnVuY3Rpb24gKHJlbWVtYmVyIG5vdCB0byBzcGVsbCBpdCBh
cyAqKmBTZXR1cFRlc3RDYXNlYCoqIHdpdGggYSBzbWFsbCBgdWAhKSB0byBzZXQgdXAgdGhlIHNo
YXJlZCByZXNvdXJjZXMgYW5kIGEgYHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKWAgZnVu
Y3Rpb24gdG8gdGVhciB0aGVtIGRvd24uCisKK1RoYXQncyBpdCEgR29vZ2xlIFRlc3QgYXV0b21h
dGljYWxseSBjYWxscyBgU2V0VXBUZXN0Q2FzZSgpYCBiZWZvcmUgcnVubmluZyB0aGUKK19maXJz
dCB0ZXN0XyBpbiB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZSAoaS5lLiBiZWZvcmUgY3JlYXRpbmcg
dGhlIGZpcnN0CitgRm9vVGVzdGAgb2JqZWN0KSwgYW5kIGNhbGxzIGBUZWFyRG93blRlc3RDYXNl
KClgIGFmdGVyIHJ1bm5pbmcgdGhlIF9sYXN0IHRlc3RfCitpbiBpdCAoaS5lLiBhZnRlciBkZWxl
dGluZyB0aGUgbGFzdCBgRm9vVGVzdGAgb2JqZWN0KS4gSW4gYmV0d2VlbiwgdGhlIHRlc3RzCitj
YW4gdXNlIHRoZSBzaGFyZWQgcmVzb3VyY2VzLgorCitSZW1lbWJlciB0aGF0IHRoZSB0ZXN0IG9y
ZGVyIGlzIHVuZGVmaW5lZCwgc28geW91ciBjb2RlIGNhbid0IGRlcGVuZCBvbiBhIHRlc3QKK3By
ZWNlZGluZyBvciBmb2xsb3dpbmcgYW5vdGhlci4gQWxzbywgdGhlIHRlc3RzIG11c3QgZWl0aGVy
IG5vdCBtb2RpZnkgdGhlCitzdGF0ZSBvZiBhbnkgc2hhcmVkIHJlc291cmNlLCBvciwgaWYgdGhl
eSBkbyBtb2RpZnkgdGhlIHN0YXRlLCB0aGV5IG11c3QKK3Jlc3RvcmUgdGhlIHN0YXRlIHRvIGl0
cyBvcmlnaW5hbCB2YWx1ZSBiZWZvcmUgcGFzc2luZyBjb250cm9sIHRvIHRoZSBuZXh0Cit0ZXN0
LgorCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBwZXItdGVzdC1jYXNlIHNldC11cCBhbmQgdGVhci1k
b3duOgorYGBgCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJv
dGVjdGVkOgorICAvLyBQZXItdGVzdC1jYXNlIHNldC11cC4KKyAgLy8gQ2FsbGVkIGJlZm9yZSB0
aGUgZmlyc3QgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZS4KKyAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYg
bm90IG5lZWRlZC4KKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKKyAgICBzaGFyZWRf
cmVzb3VyY2VfID0gbmV3IC4uLjsKKyAgfQorCisgIC8vIFBlci10ZXN0LWNhc2UgdGVhci1kb3du
LgorICAvLyBDYWxsZWQgYWZ0ZXIgdGhlIGxhc3QgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZS4KKyAg
Ly8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90IG5lZWRlZC4KKyAgc3RhdGljIHZvaWQgVGVhckRvd25U
ZXN0Q2FzZSgpIHsKKyAgICBkZWxldGUgc2hhcmVkX3Jlc291cmNlXzsKKyAgICBzaGFyZWRfcmVz
b3VyY2VfID0gTlVMTDsKKyAgfQorCisgIC8vIFlvdSBjYW4gZGVmaW5lIHBlci10ZXN0IHNldC11
cCBhbmQgdGVhci1kb3duIGxvZ2ljIGFzIHVzdWFsLgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7
IC4uLiB9CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsgLi4uIH0KKworICAvLyBTb21lIGV4
cGVuc2l2ZSByZXNvdXJjZSBzaGFyZWQgYnkgYWxsIHRlc3RzLgorICBzdGF0aWMgVCogc2hhcmVk
X3Jlc291cmNlXzsKK307CisKK1QqIEZvb1Rlc3Q6OnNoYXJlZF9yZXNvdXJjZV8gPSBOVUxMOwor
CitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVk
X3Jlc291cmNlIGhlcmUgLi4uCit9CitURVNUX0YoRm9vVGVzdCwgVGVzdDIpIHsKKyAgLi4uIHlv
dSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlIGhlcmUgLi4uCit9CitgYGAKKworX0F2YWls
YWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMgR2xvYmFsIFNldC1VcCBhbmQgVGVh
ci1Eb3duICMKKworSnVzdCBhcyB5b3UgY2FuIGRvIHNldC11cCBhbmQgdGVhci1kb3duIGF0IHRo
ZSB0ZXN0IGxldmVsIGFuZCB0aGUgdGVzdCBjYXNlCitsZXZlbCwgeW91IGNhbiBhbHNvIGRvIGl0
IGF0IHRoZSB0ZXN0IHByb2dyYW0gbGV2ZWwuIEhlcmUncyBob3cuCisKK0ZpcnN0LCB5b3Ugc3Vi
Y2xhc3MgdGhlIGA6OnRlc3Rpbmc6OkVudmlyb25tZW50YCBjbGFzcyB0byBkZWZpbmUgYSB0ZXN0
CitlbnZpcm9ubWVudCwgd2hpY2gga25vd3MgaG93IHRvIHNldC11cCBhbmQgdGVhci1kb3duOgor
CitgYGAKK2NsYXNzIEVudmlyb25tZW50IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfkVudmlyb25t
ZW50KCkge30KKyAgLy8gT3ZlcnJpZGUgdGhpcyB0byBkZWZpbmUgaG93IHRvIHNldCB1cCB0aGUg
ZW52aXJvbm1lbnQuCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHt9CisgIC8vIE92ZXJyaWRlIHRo
aXMgdG8gZGVmaW5lIGhvdyB0byB0ZWFyIGRvd24gdGhlIGVudmlyb25tZW50LgorICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7fQorfTsKK2BgYAorCitUaGVuLCB5b3UgcmVnaXN0ZXIgYW4gaW5z
dGFuY2Ugb2YgeW91ciBlbnZpcm9ubWVudCBjbGFzcyB3aXRoIEdvb2dsZSBUZXN0IGJ5CitjYWxs
aW5nIHRoZSBgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgZnVuY3Rpb246
CisKK2BgYAorRW52aXJvbm1lbnQqIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChFbnZpcm9ubWVu
dCogZW52KTsKK2BgYAorCitOb3csIHdoZW4gYFJVTl9BTExfVEVTVFMoKWAgaXMgY2FsbGVkLCBp
dCBmaXJzdCBjYWxscyB0aGUgYFNldFVwKClgIG1ldGhvZCBvZgordGhlIGVudmlyb25tZW50IG9i
amVjdCwgdGhlbiBydW5zIHRoZSB0ZXN0cyBpZiB0aGVyZSB3YXMgbm8gZmF0YWwgZmFpbHVyZXMs
IGFuZAorZmluYWxseSBjYWxscyBgVGVhckRvd24oKWAgb2YgdGhlIGVudmlyb25tZW50IG9iamVj
dC4KKworSXQncyBPSyB0byByZWdpc3RlciBtdWx0aXBsZSBlbnZpcm9ubWVudCBvYmplY3RzLiBJ
biB0aGlzIGNhc2UsIHRoZWlyIGBTZXRVcCgpYAord2lsbCBiZSBjYWxsZWQgaW4gdGhlIG9yZGVy
IHRoZXkgYXJlIHJlZ2lzdGVyZWQsIGFuZCB0aGVpciBgVGVhckRvd24oKWAgd2lsbCBiZQorY2Fs
bGVkIGluIHRoZSByZXZlcnNlIG9yZGVyLgorCitOb3RlIHRoYXQgR29vZ2xlIFRlc3QgdGFrZXMg
b3duZXJzaGlwIG9mIHRoZSByZWdpc3RlcmVkIGVudmlyb25tZW50IG9iamVjdHMuCitUaGVyZWZv
cmUgKipkbyBub3QgZGVsZXRlIHRoZW0qKiBieSB5b3Vyc2VsZi4KKworWW91IHNob3VsZCBjYWxs
IGBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgYmVmb3JlIGBSVU5fQUxMX1RFU1RTKClgIGlz
CitjYWxsZWQsIHByb2JhYmx5IGluIGBtYWluKClgLiBJZiB5b3UgdXNlIGBndGVzdF9tYWluYCwg
eW91IG5lZWQgdG8gICAgICBjYWxsCit0aGlzIGJlZm9yZSBgbWFpbigpYCBzdGFydHMgZm9yIGl0
IHRvIHRha2UgZWZmZWN0LiBPbmUgd2F5IHRvIGRvIHRoaXMgaXMgdG8KK2RlZmluZSBhIGdsb2Jh
bCB2YXJpYWJsZSBsaWtlIHRoaXM6CisKK2BgYAorOjp0ZXN0aW5nOjpFbnZpcm9ubWVudCogY29u
c3QgZm9vX2VudiA9IDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBGb29F
bnZpcm9ubWVudCk7CitgYGAKKworSG93ZXZlciwgd2Ugc3Ryb25nbHkgcmVjb21tZW5kIHlvdSB0
byB3cml0ZSB5b3VyIG93biBgbWFpbigpYCBhbmQgY2FsbAorYEFkZEdsb2JhbFRlc3RFbnZpcm9u
bWVudCgpYCB0aGVyZSwgYXMgcmVseWluZyBvbiBpbml0aWFsaXphdGlvbiBvZiBnbG9iYWwKK3Zh
cmlhYmxlcyBtYWtlcyB0aGUgY29kZSBoYXJkZXIgdG8gcmVhZCBhbmQgbWF5IGNhdXNlIHByb2Js
ZW1zIHdoZW4geW91CityZWdpc3RlciBtdWx0aXBsZSBlbnZpcm9ubWVudHMgZnJvbSBkaWZmZXJl
bnQgdHJhbnNsYXRpb24gdW5pdHMgYW5kIHRoZQorZW52aXJvbm1lbnRzIGhhdmUgZGVwZW5kZW5j
aWVzIGFtb25nIHRoZW0gKHJlbWVtYmVyIHRoYXQgdGhlIGNvbXBpbGVyIGRvZXNuJ3QKK2d1YXJh
bnRlZSB0aGUgb3JkZXIgaW4gd2hpY2ggZ2xvYmFsIHZhcmlhYmxlcyBmcm9tIGRpZmZlcmVudCB0
cmFuc2xhdGlvbiB1bml0cworYXJlIGluaXRpYWxpemVkKS4KKworX0F2YWlsYWJpbGl0eTpfIExp
bnV4LCBXaW5kb3dzLCBNYWMuCisKKworIyBWYWx1ZSBQYXJhbWV0ZXJpemVkIFRlc3RzICMKKwor
X1ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHNfIGFsbG93IHlvdSB0byB0ZXN0IHlvdXIgY29kZSB3
aXRoIGRpZmZlcmVudAorcGFyYW1ldGVycyB3aXRob3V0IHdyaXRpbmcgbXVsdGlwbGUgY29waWVz
IG9mIHRoZSBzYW1lIHRlc3QuCisKK1N1cHBvc2UgeW91IHdyaXRlIGEgdGVzdCBmb3IgeW91ciBj
b2RlIGFuZCB0aGVuIHJlYWxpemUgdGhhdCB5b3VyIGNvZGUgaXMgYWZmZWN0ZWQgYnkgYSBwcmVz
ZW5jZSBvZiBhIEJvb2xlYW4gY29tbWFuZCBsaW5lIGZsYWcuCisKK2BgYAorVEVTVChNeUNvZGVU
ZXN0LCBUZXN0Rm9vKSB7CisgIC8vIEEgY29kZSB0byB0ZXN0IGZvbygpLgorfQorYGBgCisKK1Vz
dWFsbHkgcGVvcGxlIGZhY3RvciB0aGVpciB0ZXN0IGNvZGUgaW50byBhIGZ1bmN0aW9uIHdpdGgg
YSBCb29sZWFuIHBhcmFtZXRlciBpbiBzdWNoIHNpdHVhdGlvbnMuIFRoZSBmdW5jdGlvbiBzZXRz
IHRoZSBmbGFnLCB0aGVuIGV4ZWN1dGVzIHRoZSB0ZXN0aW5nIGNvZGUuCisKK2BgYAordm9pZCBU
ZXN0Rm9vSGVscGVyKGJvb2wgZmxhZ192YWx1ZSkgeworICBmbGFnID0gZmxhZ192YWx1ZTsKKyAg
Ly8gQSBjb2RlIHRvIHRlc3QgZm9vKCkuCit9CisKK1RFU1QoTXlDb2RlVGVzdCwgVGVzdEZvbykg
eworICBUZXN0Rm9vSGVscGVyKGZhbHNlKTsKKyAgVGVzdEZvb0hlbHBlcih0cnVlKTsKK30KK2Bg
YAorCitCdXQgdGhpcyBzZXR1cCBoYXMgc2VyaW91cyBkcmF3YmFja3MuIEZpcnN0LCB3aGVuIGEg
dGVzdCBhc3NlcnRpb24gZmFpbHMgaW4geW91ciB0ZXN0cywgaXQgYmVjb21lcyB1bmNsZWFyIHdo
YXQgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciBjYXVzZWQgaXQgdG8gZmFpbC4gWW91IGNhbiBzdHJl
YW0gYSBjbGFyaWZ5aW5nIG1lc3NhZ2UgaW50byB5b3VyIGBFWFBFQ1RgL2BBU1NFUlRgIHN0YXRl
bWVudHMsIGJ1dCBpdCB5b3UnbGwgaGF2ZSB0byBkbyBpdCB3aXRoIGFsbCBvZiB0aGVtLiBTZWNv
bmQsIHlvdSBoYXZlIHRvIGFkZCBvbmUgc3VjaCBoZWxwZXIgZnVuY3Rpb24gcGVyIHRlc3QuIFdo
YXQgaWYgeW91IGhhdmUgdGVuIHRlc3RzPyBUd2VudHk/IEEgaHVuZHJlZD8KKworVmFsdWUtcGFy
YW1ldGVyaXplZCB0ZXN0cyB3aWxsIGxldCB5b3Ugd3JpdGUgeW91ciB0ZXN0IG9ubHkgb25jZSBh
bmQgdGhlbiBlYXNpbHkgaW5zdGFudGlhdGUgYW5kIHJ1biBpdCB3aXRoIGFuIGFyYml0cmFyeSBu
dW1iZXIgb2YgcGFyYW1ldGVyIHZhbHVlcy4KKworSGVyZSBhcmUgc29tZSBvdGhlciBzaXR1YXRp
b25zIHdoZW4gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBjb21lIGhhbmR5OgorCisgICogWW91
IHdhbnQgdG8gdGVzdCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIG9mIGFuIE9PIGludGVyZmFj
ZS4KKyAgKiBZb3Ugd2FudCB0byB0ZXN0IHlvdXIgY29kZSBvdmVyIHZhcmlvdXMgaW5wdXRzIChh
LmsuYS4gZGF0YS1kcml2ZW4gdGVzdGluZykuIFRoaXMgZmVhdHVyZSBpcyBlYXN5IHRvIGFidXNl
LCBzbyBwbGVhc2UgZXhlcmNpc2UgeW91ciBnb29kIHNlbnNlIHdoZW4gZG9pbmcgaXQhCisKKyMj
IEhvdyB0byBXcml0ZSBWYWx1ZS1QYXJhbWV0ZXJpemVkIFRlc3RzICMjCisKK1RvIHdyaXRlIHZh
bHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4dHVy
ZQorY2xhc3MuICBJdCBtdXN0IGJlIGRlcml2ZWQgZnJvbSBib3RoIGA6OnRlc3Rpbmc6OlRlc3Rg
IGFuZAorYDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPFQ+YCAodGhlIGxhdHRlciBpcyBh
IHB1cmUgaW50ZXJmYWNlKSwKK3doZXJlIGBUYCBpcyB0aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRl
ciB2YWx1ZXMuICBGb3IgY29udmVuaWVuY2UsIHlvdQorY2FuIGp1c3QgZGVyaXZlIHRoZSBmaXh0
dXJlIGNsYXNzIGZyb20gYDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxUPmAsCit3aGljaCBpdHNl
bGYgaXMgZGVyaXZlZCBmcm9tIGJvdGggYDo6dGVzdGluZzo6VGVzdGAgYW5kCitgOjp0ZXN0aW5n
OjpXaXRoUGFyYW1JbnRlcmZhY2U8VD5gLiBgVGAgY2FuIGJlIGFueSBjb3B5YWJsZSB0eXBlLiBJ
ZgoraXQncyBhIHJhdyBwb2ludGVyLCB5b3UgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0
aGUgbGlmZXNwYW4gb2YKK3RoZSBwb2ludGVkIHZhbHVlcy4KKworYGBgCitjbGFzcyBGb29UZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBjaGFyKj4geworICAvLyBZ
b3UgY2FuIGltcGxlbWVudCBhbGwgdGhlIHVzdWFsIGZpeHR1cmUgY2xhc3MgbWVtYmVycyBoZXJl
LgorICAvLyBUbyBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyLCBjYWxsIEdldFBhcmFtKCkgZnJv
bSBjbGFzcworICAvLyBUZXN0V2l0aFBhcmFtPFQ+LgorfTsKKworLy8gT3IsIHdoZW4geW91IHdh
bnQgdG8gYWRkIHBhcmFtZXRlcnMgdG8gYSBwcmUtZXhpc3RpbmcgZml4dHVyZSBjbGFzczoKK2Ns
YXNzIEJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgIC4uLgorfTsKK2NsYXNz
IEJhclRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsCisgICAgICAgICAgICAgICAgcHVibGljIDo6dGVz
dGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPGNvbnN0IGNoYXIqPiB7CisgIC4uLgorfTsKK2BgYAor
CitUaGVuLCB1c2UgdGhlIGBURVNUX1BgIG1hY3JvIHRvIGRlZmluZSBhcyBtYW55IHRlc3QgcGF0
dGVybnMgdXNpbmcKK3RoaXMgZml4dHVyZSBhcyB5b3Ugd2FudC4gIFRoZSBgX1BgIHN1ZmZpeCBp
cyBmb3IgInBhcmFtZXRlcml6ZWQiIG9yCisicGF0dGVybiIsIHdoaWNoZXZlciB5b3UgcHJlZmVy
IHRvIHRoaW5rLgorCitgYGAKK1RFU1RfUChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJbnNp
ZGUgYSB0ZXN0LCBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyIHdpdGggdGhlIEdldFBhcmFtKCkg
bWV0aG9kCisgIC8vIG9mIHRoZSBUZXN0V2l0aFBhcmFtPFQ+IGNsYXNzOgorICBFWFBFQ1RfVFJV
RShmb28uQmxhaChHZXRQYXJhbSgpKSk7CisgIC4uLgorfQorCitURVNUX1AoRm9vVGVzdCwgSGFz
QmxhaEJsYWgpIHsKKyAgLi4uCit9CitgYGAKKworRmluYWxseSwgeW91IGNhbiB1c2UgYElOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QYCB0byBpbnN0YW50aWF0ZSB0aGUgdGVzdAorY2FzZSB3aXRoIGFu
eSBzZXQgb2YgcGFyYW1ldGVycyB5b3Ugd2FudC4gR29vZ2xlIFRlc3QgZGVmaW5lcyBhIG51bWJl
ciBvZgorZnVuY3Rpb25zIGZvciBnZW5lcmF0aW5nIHRlc3QgcGFyYW1ldGVycy4gVGhleSByZXR1
cm4gd2hhdCB3ZSBjYWxsCisoc3VycHJpc2UhKSBfcGFyYW1ldGVyIGdlbmVyYXRvcnNfLiBIZXJl
IGlzIGEgc3VtbWFyeSBvZiB0aGVtLAord2hpY2ggYXJlIGFsbCBpbiB0aGUgYHRlc3RpbmdgIG5h
bWVzcGFjZToKKworfCBgUmFuZ2UoYmVnaW4sIGVuZFssIHN0ZXBdKWAgfCBZaWVsZHMgdmFsdWVz
IGB7YmVnaW4sIGJlZ2luK3N0ZXAsIGJlZ2luK3N0ZXArc3RlcCwgLi4ufWAuIFRoZSB2YWx1ZXMg
ZG8gbm90IGluY2x1ZGUgYGVuZGAuIGBzdGVwYCBkZWZhdWx0cyB0byAxLiB8Cit8Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYFZhbHVlcyh2MSwgdjIsIC4uLiwgdk4pYCAgIHwg
WWllbGRzIHZhbHVlcyBge3YxLCB2MiwgLi4uLCB2Tn1gLiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorfCBgVmFsdWVzSW4oY29udGFpbmVyKWAgYW5kIGBWYWx1ZXNJbihiZWdpbiwgZW5kKWAgfCBZ
aWVsZHMgdmFsdWVzIGZyb20gYSBDLXN0eWxlIGFycmF5LCBhbiBTVEwtc3R5bGUgY29udGFpbmVy
LCBvciBhbiBpdGVyYXRvciByYW5nZSBgW2JlZ2luLCBlbmQpYC4gYGNvbnRhaW5lcmAsIGBiZWdp
bmAsIGFuZCBgZW5kYCBjYW4gYmUgZXhwcmVzc2lvbnMgd2hvc2UgdmFsdWVzIGFyZSBkZXRlcm1p
bmVkIGF0IHJ1biB0aW1lLiAgfAorfCBgQm9vbCgpYCAgICAgICAgICAgICAgICAgICAgfCBZaWVs
ZHMgc2VxdWVuY2UgYHtmYWxzZSwgdHJ1ZX1gLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8
IGBDb21iaW5lKGcxLCBnMiwgLi4uLCBnTilgICB8IFlpZWxkcyBhbGwgY29tYmluYXRpb25zICh0
aGUgQ2FydGVzaWFuIHByb2R1Y3QgZm9yIHRoZSBtYXRoIHNhdnZ5KSBvZiB0aGUgdmFsdWVzIGdl
bmVyYXRlZCBieSB0aGUgYE5gIGdlbmVyYXRvcnMuIFRoaXMgaXMgb25seSBhdmFpbGFibGUgaWYg
eW91ciBzeXN0ZW0gcHJvdmlkZXMgdGhlIGA8dHIxL3R1cGxlPmAgaGVhZGVyLiBJZiB5b3UgYXJl
IHN1cmUgeW91ciBzeXN0ZW0gZG9lcywgYW5kIEdvb2dsZSBUZXN0IGRpc2FncmVlcywgeW91IGNh
biBvdmVycmlkZSBpdCBieSBkZWZpbmluZyBgR1RFU1RfSEFTX1RSMV9UVVBMRT0xYC4gU2VlIGNv
bW1lbnRzIGluIFtpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaF0oLi4vaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgpIGZvciBtb3JlIGluZm9ybWF0aW9uLiB8CisK
K0ZvciBtb3JlIGRldGFpbHMsIHNlZSB0aGUgY29tbWVudHMgYXQgdGhlIGRlZmluaXRpb25zIG9m
IHRoZXNlIGZ1bmN0aW9ucyBpbiB0aGUgW3NvdXJjZSBjb2RlXSguLi9pbmNsdWRlL2d0ZXN0L2d0
ZXN0LXBhcmFtLXRlc3QuaCkuCisKK1RoZSBmb2xsb3dpbmcgc3RhdGVtZW50IHdpbGwgaW5zdGFu
dGlhdGUgdGVzdHMgZnJvbSB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZQorZWFjaCB3aXRoIHBhcmFt
ZXRlciB2YWx1ZXMgYCJtZWVueSJgLCBgIm1pbnkiYCwgYW5kIGAibW9lImAuCisKK2BgYAorSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoSW5zdGFudGlhdGlvbk5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICBGb29UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1
ZXMoIm1lZW55IiwgIm1pbnkiLCAibW9lIikpOworYGBgCisKK1RvIGRpc3Rpbmd1aXNoIGRpZmZl
cmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4gKHllcywgeW91IGNhbgoraW5zdGFudGlhdGUg
aXQgbW9yZSB0aGFuIG9uY2UpLCB0aGUgZmlyc3QgYXJndW1lbnQgdG8KK2BJTlNUQU5USUFURV9U
RVNUX0NBU0VfUGAgaXMgYSBwcmVmaXggdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBhY3R1YWwK
K3Rlc3QgY2FzZSBuYW1lLiBSZW1lbWJlciB0byBwaWNrIHVuaXF1ZSBwcmVmaXhlcyBmb3IgZGlm
ZmVyZW50CitpbnN0YW50aWF0aW9ucy4gVGhlIHRlc3RzIGZyb20gdGhlIGluc3RhbnRpYXRpb24g
YWJvdmUgd2lsbCBoYXZlIHRoZXNlCituYW1lczoKKworICAqIGBJbnN0YW50aWF0aW9uTmFtZS9G
b29UZXN0LkRvZXNCbGFoLzBgIGZvciBgIm1lZW55ImAKKyAgKiBgSW5zdGFudGlhdGlvbk5hbWUv
Rm9vVGVzdC5Eb2VzQmxhaC8xYCBmb3IgYCJtaW55ImAKKyAgKiBgSW5zdGFudGlhdGlvbk5hbWUv
Rm9vVGVzdC5Eb2VzQmxhaC8yYCBmb3IgYCJtb2UiYAorICAqIGBJbnN0YW50aWF0aW9uTmFtZS9G
b29UZXN0Lkhhc0JsYWhCbGFoLzBgIGZvciBgIm1lZW55ImAKKyAgKiBgSW5zdGFudGlhdGlvbk5h
bWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8xYCBmb3IgYCJtaW55ImAKKyAgKiBgSW5zdGFudGlhdGlv
bk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8yYCBmb3IgYCJtb2UiYAorCitZb3UgY2FuIHVzZSB0
aGVzZSBuYW1lcyBpbiBbLS1ndGVzdFxfZmlsdGVyXSgjcnVubmluZy1hLXN1YnNldC1vZi10aGUt
dGVzdHMpLgorCitUaGlzIHN0YXRlbWVudCB3aWxsIGluc3RhbnRpYXRlIGFsbCB0ZXN0cyBmcm9t
IGBGb29UZXN0YCBhZ2FpbiwgZWFjaAord2l0aCBwYXJhbWV0ZXIgdmFsdWVzIGAiY2F0ImAgYW5k
IGAiZG9nImA6CisKK2BgYAorY29uc3QgY2hhciogcGV0c1tdID0geyJjYXQiLCAiZG9nIn07CitJ
TlNUQU5USUFURV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFudGlhdGlvbk5hbWUsIEZvb1Rlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlc0luKHBldHMpKTsKK2Bg
YAorCitUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhhdmUgdGhl
c2UgbmFtZXM6CisKKyAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0Js
YWgvMGAgZm9yIGAiY2F0ImAKKyAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3Qu
RG9lc0JsYWgvMWAgZm9yIGAiZG9nImAKKyAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zv
b1Rlc3QuSGFzQmxhaEJsYWgvMGAgZm9yIGAiY2F0ImAKKyAgKiBgQW5vdGhlckluc3RhbnRpYXRp
b25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMWAgZm9yIGAiZG9nImAKKworUGxlYXNlIG5vdGUg
dGhhdCBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIHdpbGwgaW5zdGFudGlhdGUgX2FsbF8KK3Rl
c3RzIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UsIHdoZXRoZXIgdGhlaXIgZGVmaW5pdGlvbnMgY29t
ZSBiZWZvcmUgb3IKK19hZnRlcl8gdGhlIGBJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgc3RhdGVt
ZW50LgorCitZb3UgY2FuIHNlZQorW3RoZXNlXSguLi9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3Qu
Y2MpCitbZmlsZXNdKC4uL3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYykgZm9yIG1vcmUgZXhh
bXBsZXMuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4
LjAgb3IgYWJvdmUpLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4yLjAuCisKKyMjIENyZWF0aW5nIFZh
bHVlLVBhcmFtZXRlcml6ZWQgQWJzdHJhY3QgVGVzdHMgIyMKKworSW4gdGhlIGFib3ZlLCB3ZSBk
ZWZpbmUgYW5kIGluc3RhbnRpYXRlIGBGb29UZXN0YCBpbiB0aGUgc2FtZSBzb3VyY2UKK2ZpbGUu
IFNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gZGVmaW5lIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dHMgaW4gYQorbGlicmFyeSBhbmQgbGV0IG90aGVyIHBlb3BsZSBpbnN0YW50aWF0ZSB0aGVtIGxh
dGVyLiBUaGlzIHBhdHRlcm4gaXMKK2tub3duIGFzIDxpPmFic3RyYWN0IHRlc3RzPC9pPi4gQXMg
YW4gZXhhbXBsZSBvZiBpdHMgYXBwbGljYXRpb24sIHdoZW4geW91CithcmUgZGVzaWduaW5nIGFu
IGludGVyZmFjZSB5b3UgY2FuIHdyaXRlIGEgc3RhbmRhcmQgc3VpdGUgb2YgYWJzdHJhY3QKK3Rl
c3RzIChwZXJoYXBzIHVzaW5nIGEgZmFjdG9yeSBmdW5jdGlvbiBhcyB0aGUgdGVzdCBwYXJhbWV0
ZXIpIHRoYXQKK2FsbCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGludGVyZmFjZSBhcmUgZXhwZWN0
ZWQgdG8gcGFzcy4gV2hlbgorc29tZW9uZSBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UsIGhlIGNh
biBpbnN0YW50aWF0ZSB5b3VyIHN1aXRlIHRvIGdldAorYWxsIHRoZSBpbnRlcmZhY2UtY29uZm9y
bWFuY2UgdGVzdHMgZm9yIGZyZWUuCisKK1RvIGRlZmluZSBhYnN0cmFjdCB0ZXN0cywgeW91IHNo
b3VsZCBvcmdhbml6ZSB5b3VyIGNvZGUgbGlrZSB0aGlzOgorCisgIDEuIFB1dCB0aGUgZGVmaW5p
dGlvbiBvZiB0aGUgcGFyYW1ldGVyaXplZCB0ZXN0IGZpeHR1cmUgY2xhc3MgKGUuZy4gYEZvb1Rl
c3RgKSBpbiBhIGhlYWRlciBmaWxlLCBzYXkgYGZvb19wYXJhbV90ZXN0LmhgLiBUaGluayBvZiB0
aGlzIGFzIF9kZWNsYXJpbmdfIHlvdXIgYWJzdHJhY3QgdGVzdHMuCisgIDEuIFB1dCB0aGUgYFRF
U1RfUGAgZGVmaW5pdGlvbnMgaW4gYGZvb19wYXJhbV90ZXN0LmNjYCwgd2hpY2ggaW5jbHVkZXMg
YGZvb19wYXJhbV90ZXN0LmhgLiBUaGluayBvZiB0aGlzIGFzIF9pbXBsZW1lbnRpbmdfIHlvdXIg
YWJzdHJhY3QgdGVzdHMuCisKK09uY2UgdGhleSBhcmUgZGVmaW5lZCwgeW91IGNhbiBpbnN0YW50
aWF0ZSB0aGVtIGJ5IGluY2x1ZGluZworYGZvb19wYXJhbV90ZXN0LmhgLCBpbnZva2luZyBgSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoKWAsIGFuZCBsaW5raW5nCit3aXRoIGBmb29fcGFyYW1fdGVz
dC5jY2AuIFlvdSBjYW4gaW5zdGFudGlhdGUgdGhlIHNhbWUgYWJzdHJhY3QgdGVzdAorY2FzZSBt
dWx0aXBsZSB0aW1lcywgcG9zc2libHkgaW4gZGlmZmVyZW50IHNvdXJjZSBmaWxlcy4KKworIyBU
eXBlZCBUZXN0cyAjCisKK1N1cHBvc2UgeW91IGhhdmUgbXVsdGlwbGUgaW1wbGVtZW50YXRpb25z
IG9mIHRoZSBzYW1lIGludGVyZmFjZSBhbmQKK3dhbnQgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIG9m
IHRoZW0gc2F0aXNmeSBzb21lIGNvbW1vbiByZXF1aXJlbWVudHMuCitPciwgeW91IG1heSBoYXZl
IGRlZmluZWQgc2V2ZXJhbCB0eXBlcyB0aGF0IGFyZSBzdXBwb3NlZCB0byBjb25mb3JtIHRvCit0
aGUgc2FtZSAiY29uY2VwdCIgYW5kIHlvdSB3YW50IHRvIHZlcmlmeSBpdC4gIEluIGJvdGggY2Fz
ZXMsIHlvdSB3YW50Cit0aGUgc2FtZSB0ZXN0IGxvZ2ljIHJlcGVhdGVkIGZvciBkaWZmZXJlbnQg
dHlwZXMuCisKK1doaWxlIHlvdSBjYW4gd3JpdGUgb25lIGBURVNUYCBvciBgVEVTVF9GYCBmb3Ig
ZWFjaCB0eXBlIHlvdSB3YW50IHRvCit0ZXN0IChhbmQgeW91IG1heSBldmVuIGZhY3RvciB0aGUg
dGVzdCBsb2dpYyBpbnRvIGEgZnVuY3Rpb24gdGVtcGxhdGUKK3RoYXQgeW91IGludm9rZSBmcm9t
IHRoZSBgVEVTVGApLCBpdCdzIHRlZGlvdXMgYW5kIGRvZXNuJ3Qgc2NhbGU6CitpZiB5b3Ugd2Fu
dCBfbV8gdGVzdHMgb3ZlciBfbl8gdHlwZXMsIHlvdSdsbCBlbmQgdXAgd3JpdGluZyBfbVwqbl8K
K2BURVNUYHMuCisKK19UeXBlZCB0ZXN0c18gYWxsb3cgeW91IHRvIHJlcGVhdCB0aGUgc2FtZSB0
ZXN0IGxvZ2ljIG92ZXIgYSBsaXN0IG9mCit0eXBlcy4gIFlvdSBvbmx5IG5lZWQgdG8gd3JpdGUg
dGhlIHRlc3QgbG9naWMgb25jZSwgYWx0aG91Z2ggeW91IG11c3QKK2tub3cgdGhlIHR5cGUgbGlz
dCB3aGVuIHdyaXRpbmcgdHlwZWQgdGVzdHMuICBIZXJlJ3MgaG93IHlvdSBkbyBpdDoKKworRmly
c3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUuICBJdCBzaG91bGQgYmUgcGFyYW1l
dGVyaXplZAorYnkgYSB0eXBlLiAgUmVtZW1iZXIgdG8gZGVyaXZlIGl0IGZyb20gYDo6dGVzdGlu
Zzo6VGVzdGA6CisKK2BgYAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBGb29UZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHVibGljOgorICAuLi4KKyAgdHlwZWRlZiBzdGQ6
Omxpc3Q8VD4gTGlzdDsKKyAgc3RhdGljIFQgc2hhcmVkXzsKKyAgVCB2YWx1ZV87Cit9OworYGBg
CisKK05leHQsIGFzc29jaWF0ZSBhIGxpc3Qgb2YgdHlwZXMgd2l0aCB0aGUgdGVzdCBjYXNlLCB3
aGljaCB3aWxsIGJlCityZXBlYXRlZCBmb3IgZWFjaCB0eXBlIGluIHRoZSBsaXN0OgorCitgYGAK
K3R5cGVkZWYgOjp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQsIHVuc2lnbmVkIGludD4gTXlUeXBl
czsKK1RZUEVEX1RFU1RfQ0FTRShGb29UZXN0LCBNeVR5cGVzKTsKK2BgYAorCitUaGUgYHR5cGVk
ZWZgIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIGBUWVBFRF9URVNUX0NBU0VgIG1hY3JvIHRvIHBhcnNl
Citjb3JyZWN0bHkuICBPdGhlcndpc2UgdGhlIGNvbXBpbGVyIHdpbGwgdGhpbmsgdGhhdCBlYWNo
IGNvbW1hIGluIHRoZQordHlwZSBsaXN0IGludHJvZHVjZXMgYSBuZXcgbWFjcm8gYXJndW1lbnQu
CisKK1RoZW4sIHVzZSBgVFlQRURfVEVTVCgpYCBpbnN0ZWFkIG9mIGBURVNUX0YoKWAgdG8gZGVm
aW5lIGEgdHlwZWQgdGVzdAorZm9yIHRoaXMgdGVzdCBjYXNlLiAgWW91IGNhbiByZXBlYXQgdGhp
cyBhcyBtYW55IHRpbWVzIGFzIHlvdSB3YW50OgorCitgYGAKK1RZUEVEX1RFU1QoRm9vVGVzdCwg
RG9lc0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIgdG8gdGhlIHNwZWNpYWwgbmFt
ZSBUeXBlUGFyYW0gdG8gZ2V0IHRoZSB0eXBlCisgIC8vIHBhcmFtZXRlci4gIFNpbmNlIHdlIGFy
ZSBpbnNpZGUgYSBkZXJpdmVkIGNsYXNzIHRlbXBsYXRlLCBDKysgcmVxdWlyZXMKKyAgLy8gdXMg
dG8gdmlzaXQgdGhlIG1lbWJlcnMgb2YgRm9vVGVzdCB2aWEgJ3RoaXMnLgorICBUeXBlUGFyYW0g
biA9IHRoaXMtPnZhbHVlXzsKKworICAvLyBUbyB2aXNpdCBzdGF0aWMgbWVtYmVycyBvZiB0aGUg
Zml4dHVyZSwgYWRkIHRoZSAnVGVzdEZpeHR1cmU6OicKKyAgLy8gcHJlZml4LgorICBuICs9IFRl
c3RGaXh0dXJlOjpzaGFyZWRfOworCisgIC8vIFRvIHJlZmVyIHRvIHR5cGVkZWZzIGluIHRoZSBm
aXh0dXJlLCBhZGQgdGhlICd0eXBlbmFtZSBUZXN0Rml4dHVyZTo6JworICAvLyBwcmVmaXguICBU
aGUgJ3R5cGVuYW1lJyBpcyByZXF1aXJlZCB0byBzYXRpc2Z5IHRoZSBjb21waWxlci4KKyAgdHlw
ZW5hbWUgVGVzdEZpeHR1cmU6Okxpc3QgdmFsdWVzOworICB2YWx1ZXMucHVzaF9iYWNrKG4pOwor
ICAuLi4KK30KKworVFlQRURfVEVTVChGb29UZXN0LCBIYXNQcm9wZXJ0eUEpIHsgLi4uIH0KK2Bg
YAorCitZb3UgY2FuIHNlZSBgc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjYCBmb3IgYSBjb21w
bGV0ZSBleGFtcGxlLgorCitfQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVz
IE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFjOworc2luY2UgdmVyc2lvbiAxLjEuMC4KKworIyBUeXBl
LVBhcmFtZXRlcml6ZWQgVGVzdHMgIworCitfVHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzXyBhcmUg
bGlrZSB0eXBlZCB0ZXN0cywgZXhjZXB0IHRoYXQgdGhleQorZG9uJ3QgcmVxdWlyZSB5b3UgdG8g
a25vdyB0aGUgbGlzdCBvZiB0eXBlcyBhaGVhZCBvZiB0aW1lLiAgSW5zdGVhZCwKK3lvdSBjYW4g
ZGVmaW5lIHRoZSB0ZXN0IGxvZ2ljIGZpcnN0IGFuZCBpbnN0YW50aWF0ZSBpdCB3aXRoIGRpZmZl
cmVudAordHlwZSBsaXN0cyBsYXRlci4gIFlvdSBjYW4gZXZlbiBpbnN0YW50aWF0ZSBpdCBtb3Jl
IHRoYW4gb25jZSBpbiB0aGUKK3NhbWUgcHJvZ3JhbS4KKworSWYgeW91IGFyZSBkZXNpZ25pbmcg
YW4gaW50ZXJmYWNlIG9yIGNvbmNlcHQsIHlvdSBjYW4gZGVmaW5lIGEgc3VpdGUKK29mIHR5cGUt
cGFyYW1ldGVyaXplZCB0ZXN0cyB0byB2ZXJpZnkgcHJvcGVydGllcyB0aGF0IGFueSB2YWxpZAor
aW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVyZmFjZS9jb25jZXB0IHNob3VsZCBoYXZlLiAgVGhl
biwgdGhlIGF1dGhvcgorb2YgZWFjaCBpbXBsZW1lbnRhdGlvbiBjYW4ganVzdCBpbnN0YW50aWF0
ZSB0aGUgdGVzdCBzdWl0ZSB3aXRoIGhpcwordHlwZSB0byB2ZXJpZnkgdGhhdCBpdCBjb25mb3Jt
cyB0byB0aGUgcmVxdWlyZW1lbnRzLCB3aXRob3V0IGhhdmluZyB0bword3JpdGUgc2ltaWxhciB0
ZXN0cyByZXBlYXRlZGx5LiAgSGVyZSdzIGFuIGV4YW1wbGU6CisKK0ZpcnN0LCBkZWZpbmUgYSBm
aXh0dXJlIGNsYXNzIHRlbXBsYXRlLCBhcyB3ZSBkaWQgd2l0aCB0eXBlZCB0ZXN0czoKKworYGBg
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0IHsKKyAgLi4uCit9OworYGBgCisKK05leHQsIGRlY2xhcmUgdGhhdCB5b3Ugd2lsbCBk
ZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlOgorCitgYGAKK1RZUEVEX1RFU1Rf
Q0FTRV9QKEZvb1Rlc3QpOworYGBgCisKK1RoZSBgX1BgIHN1ZmZpeCBpcyBmb3IgInBhcmFtZXRl
cml6ZWQiIG9yICJwYXR0ZXJuIiwgd2hpY2hldmVyIHlvdQorcHJlZmVyIHRvIHRoaW5rLgorCitU
aGVuLCB1c2UgYFRZUEVEX1RFU1RfUCgpYCB0byBkZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQg
dGVzdC4gIFlvdQorY2FuIHJlcGVhdCB0aGlzIGFzIG1hbnkgdGltZXMgYXMgeW91IHdhbnQ6CisK
K2BgYAorVFlQRURfVEVTVF9QKEZvb1Rlc3QsIERvZXNCbGFoKSB7CisgIC8vIEluc2lkZSBhIHRl
c3QsIHJlZmVyIHRvIFR5cGVQYXJhbSB0byBnZXQgdGhlIHR5cGUgcGFyYW1ldGVyLgorICBUeXBl
UGFyYW0gbiA9IDA7CisgIC4uLgorfQorCitUWVBFRF9URVNUX1AoRm9vVGVzdCwgSGFzUHJvcGVy
dHlBKSB7IC4uLiB9CitgYGAKKworTm93IHRoZSB0cmlja3kgcGFydDogeW91IG5lZWQgdG8gcmVn
aXN0ZXIgYWxsIHRlc3QgcGF0dGVybnMgdXNpbmcgdGhlCitgUkVHSVNURVJfVFlQRURfVEVTVF9D
QVNFX1BgIG1hY3JvIGJlZm9yZSB5b3UgY2FuIGluc3RhbnRpYXRlIHRoZW0uCitUaGUgZmlyc3Qg
YXJndW1lbnQgb2YgdGhlIG1hY3JvIGlzIHRoZSB0ZXN0IGNhc2UgbmFtZTsgdGhlIHJlc3QgYXJl
Cit0aGUgbmFtZXMgb2YgdGhlIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlOgorCitgYGAKK1JFR0lT
VEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEb2VzQmxhaCwgSGFzUHJvcGVydHlBKTsKK2BgYAorCitGaW5hbGx5LCB5b3UgYXJlIGZyZWUg
dG8gaW5zdGFudGlhdGUgdGhlIHBhdHRlcm4gd2l0aCB0aGUgdHlwZXMgeW91Cit3YW50LiAgSWYg
eW91IHB1dCB0aGUgYWJvdmUgY29kZSBpbiBhIGhlYWRlciBmaWxlLCB5b3UgY2FuIGAjaW5jbHVk
ZWAKK2l0IGluIG11bHRpcGxlIEMrKyBzb3VyY2UgZmlsZXMgYW5kIGluc3RhbnRpYXRlIGl0IG11
bHRpcGxlIHRpbWVzLgorCitgYGAKK3R5cGVkZWYgOjp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQs
IHVuc2lnbmVkIGludD4gTXlUeXBlczsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15
LCBGb29UZXN0LCBNeVR5cGVzKTsKK2BgYAorCitUbyBkaXN0aW5ndWlzaCBkaWZmZXJlbnQgaW5z
dGFuY2VzIG9mIHRoZSBwYXR0ZXJuLCB0aGUgZmlyc3QgYXJndW1lbnQKK3RvIHRoZSBgSU5TVEFO
VElBVEVfVFlQRURfVEVTVF9DQVNFX1BgIG1hY3JvIGlzIGEgcHJlZml4IHRoYXQgd2lsbCBiZQor
YWRkZWQgdG8gdGhlIGFjdHVhbCB0ZXN0IGNhc2UgbmFtZS4gIFJlbWVtYmVyIHRvIHBpY2sgdW5p
cXVlIHByZWZpeGVzCitmb3IgZGlmZmVyZW50IGluc3RhbmNlcy4KKworSW4gdGhlIHNwZWNpYWwg
Y2FzZSB3aGVyZSB0aGUgdHlwZSBsaXN0IGNvbnRhaW5zIG9ubHkgb25lIHR5cGUsIHlvdQorY2Fu
IHdyaXRlIHRoYXQgdHlwZSBkaXJlY3RseSB3aXRob3V0IGA6OnRlc3Rpbmc6OlR5cGVzPC4uLj5g
LCBsaWtlIHRoaXM6CisKK2BgYAorSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZv
b1Rlc3QsIGludCk7CitgYGAKKworWW91IGNhbiBzZWUgYHNhbXBsZXMvc2FtcGxlNl91bml0dGVz
dC5jY2AgZm9yIGEgY29tcGxldGUgZXhhbXBsZS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBX
aW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYzsKK3NpbmNlIHZlcnNpb24g
MS4xLjAuCisKKyMgVGVzdGluZyBQcml2YXRlIENvZGUgIworCitJZiB5b3UgY2hhbmdlIHlvdXIg
c29mdHdhcmUncyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiwgeW91ciB0ZXN0cyBzaG91bGQgbm90
CiticmVhayBhcyBsb25nIGFzIHRoZSBjaGFuZ2UgaXMgbm90IG9ic2VydmFibGUgYnkgdXNlcnMu
IFRoZXJlZm9yZSwgcGVyIHRoZQorX2JsYWNrLWJveCB0ZXN0aW5nIHByaW5jaXBsZV8sIG1vc3Qg
b2YgdGhlIHRpbWUgeW91IHNob3VsZCB0ZXN0IHlvdXIgY29kZQordGhyb3VnaCBpdHMgcHVibGlj
IGludGVyZmFjZXMuCisKK0lmIHlvdSBzdGlsbCBmaW5kIHlvdXJzZWxmIG5lZWRpbmcgdG8gdGVz
dCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBjb2RlLAorY29uc2lkZXIgaWYgdGhlcmUncyBhIGJl
dHRlciBkZXNpZ24gdGhhdCB3b3VsZG4ndCByZXF1aXJlIHlvdSB0byBkbyBzby4gSWYgeW91Cith
YnNvbHV0ZWx5IGhhdmUgdG8gdGVzdCBub24tcHVibGljIGludGVyZmFjZSBjb2RlIHRob3VnaCwg
eW91IGNhbi4gVGhlcmUgYXJlCit0d28gY2FzZXMgdG8gY29uc2lkZXI6CisKKyAgKiBTdGF0aWMg
ZnVuY3Rpb25zIChfbm90XyB0aGUgc2FtZSBhcyBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucyEpIG9y
IHVubmFtZWQgbmFtZXNwYWNlcywgYW5kCisgICogUHJpdmF0ZSBvciBwcm90ZWN0ZWQgY2xhc3Mg
bWVtYmVycworCisjIyBTdGF0aWMgRnVuY3Rpb25zICMjCisKK0JvdGggc3RhdGljIGZ1bmN0aW9u
cyBhbmQgZGVmaW5pdGlvbnMvZGVjbGFyYXRpb25zIGluIGFuIHVubmFtZWQgbmFtZXNwYWNlIGFy
ZQorb25seSB2aXNpYmxlIHdpdGhpbiB0aGUgc2FtZSB0cmFuc2xhdGlvbiB1bml0LiBUbyB0ZXN0
IHRoZW0sIHlvdSBjYW4gYCNpbmNsdWRlYAordGhlIGVudGlyZSBgLmNjYCBmaWxlIGJlaW5nIHRl
c3RlZCBpbiB5b3VyIGAqX3Rlc3QuY2NgIGZpbGUuIChgI2luY2x1ZGVgaW5nIGAuY2NgCitmaWxl
cyBpcyBub3QgYSBnb29kIHdheSB0byByZXVzZSBjb2RlIC0geW91IHNob3VsZCBub3QgZG8gdGhp
cyBpbiBwcm9kdWN0aW9uCitjb2RlISkKKworSG93ZXZlciwgYSBiZXR0ZXIgYXBwcm9hY2ggaXMg
dG8gbW92ZSB0aGUgcHJpdmF0ZSBjb2RlIGludG8gdGhlCitgZm9vOjppbnRlcm5hbGAgbmFtZXNw
YWNlLCB3aGVyZSBgZm9vYCBpcyB0aGUgbmFtZXNwYWNlIHlvdXIgcHJvamVjdCBub3JtYWxseQor
dXNlcywgYW5kIHB1dCB0aGUgcHJpdmF0ZSBkZWNsYXJhdGlvbnMgaW4gYSBgKi1pbnRlcm5hbC5o
YCBmaWxlLiBZb3VyCitwcm9kdWN0aW9uIGAuY2NgIGZpbGVzIGFuZCB5b3VyIHRlc3RzIGFyZSBh
bGxvd2VkIHRvIGluY2x1ZGUgdGhpcyBpbnRlcm5hbAoraGVhZGVyLCBidXQgeW91ciBjbGllbnRz
IGFyZSBub3QuIFRoaXMgd2F5LCB5b3UgY2FuIGZ1bGx5IHRlc3QgeW91ciBpbnRlcm5hbAoraW1w
bGVtZW50YXRpb24gd2l0aG91dCBsZWFraW5nIGl0IHRvIHlvdXIgY2xpZW50cy4KKworIyMgUHJp
dmF0ZSBDbGFzcyBNZW1iZXJzICMjCisKK1ByaXZhdGUgY2xhc3MgbWVtYmVycyBhcmUgb25seSBh
Y2Nlc3NpYmxlIGZyb20gd2l0aGluIHRoZSBjbGFzcyBvciBieSBmcmllbmRzLgorVG8gYWNjZXNz
IGEgY2xhc3MnIHByaXZhdGUgbWVtYmVycywgeW91IGNhbiBkZWNsYXJlIHlvdXIgdGVzdCBmaXh0
dXJlIGFzIGEKK2ZyaWVuZCB0byB0aGUgY2xhc3MgYW5kIGRlZmluZSBhY2Nlc3NvcnMgaW4geW91
ciBmaXh0dXJlLiBUZXN0cyB1c2luZyB0aGUKK2ZpeHR1cmUgY2FuIHRoZW4gYWNjZXNzIHRoZSBw
cml2YXRlIG1lbWJlcnMgb2YgeW91ciBwcm9kdWN0aW9uIGNsYXNzIHZpYSB0aGUKK2FjY2Vzc29y
cyBpbiB0aGUgZml4dHVyZS4gTm90ZSB0aGF0IGV2ZW4gdGhvdWdoIHlvdXIgZml4dHVyZSBpcyBh
IGZyaWVuZCB0bworeW91ciBwcm9kdWN0aW9uIGNsYXNzLCB5b3VyIHRlc3RzIGFyZSBub3QgYXV0
b21hdGljYWxseSBmcmllbmRzIHRvIGl0LCBhcyB0aGV5CithcmUgdGVjaG5pY2FsbHkgZGVmaW5l
ZCBpbiBzdWItY2xhc3NlcyBvZiB0aGUgZml4dHVyZS4KKworQW5vdGhlciB3YXkgdG8gdGVzdCBw
cml2YXRlIG1lbWJlcnMgaXMgdG8gcmVmYWN0b3IgdGhlbSBpbnRvIGFuIGltcGxlbWVudGF0aW9u
CitjbGFzcywgd2hpY2ggaXMgdGhlbiBkZWNsYXJlZCBpbiBhIGAqLWludGVybmFsLmhgIGZpbGUu
IFlvdXIgY2xpZW50cyBhcmVuJ3QKK2FsbG93ZWQgdG8gaW5jbHVkZSB0aGlzIGhlYWRlciBidXQg
eW91ciB0ZXN0cyBjYW4uIFN1Y2ggaXMgY2FsbGVkIHRoZSBQaW1wbAorKFByaXZhdGUgSW1wbGVt
ZW50YXRpb24pIGlkaW9tLgorCitPciwgeW91IGNhbiBkZWNsYXJlIGFuIGluZGl2aWR1YWwgdGVz
dCBhcyBhIGZyaWVuZCBvZiB5b3VyIGNsYXNzIGJ5IGFkZGluZyB0aGlzCitsaW5lIGluIHRoZSBj
bGFzcyBib2R5OgorCitgYGAKK0ZSSUVORF9URVNUKFRlc3RDYXNlTmFtZSwgVGVzdE5hbWUpOwor
YGBgCisKK0ZvciBleGFtcGxlLAorYGBgCisvLyBmb28uaAorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
X3Byb2QuaCIKKworLy8gRGVmaW5lcyBGUklFTkRfVEVTVC4KK2NsYXNzIEZvbyB7CisgIC4uLgor
IHByaXZhdGU6CisgIEZSSUVORF9URVNUKEZvb1Rlc3QsIEJhclJldHVybnNaZXJvT25OdWxsKTsK
KyAgaW50IEJhcih2b2lkKiB4KTsKK307CisKKy8vIGZvb190ZXN0LmNjCisuLi4KK1RFU1QoRm9v
VGVzdCwgQmFyUmV0dXJuc1plcm9Pbk51bGwpIHsKKyAgRm9vIGZvbzsKKyAgRVhQRUNUX0VRKDAs
IGZvby5CYXIoTlVMTCkpOworICAvLyBVc2VzIEZvbydzIHByaXZhdGUgbWVtYmVyIEJhcigpLgor
fQorYGBgCisKK1BheSBzcGVjaWFsIGF0dGVudGlvbiB3aGVuIHlvdXIgY2xhc3MgaXMgZGVmaW5l
ZCBpbiBhIG5hbWVzcGFjZSwgYXMgeW91IHNob3VsZAorZGVmaW5lIHlvdXIgdGVzdCBmaXh0dXJl
cyBhbmQgdGVzdHMgaW4gdGhlIHNhbWUgbmFtZXNwYWNlIGlmIHlvdSB3YW50IHRoZW0gdG8KK2Jl
IGZyaWVuZHMgb2YgeW91ciBjbGFzcy4gRm9yIGV4YW1wbGUsIGlmIHRoZSBjb2RlIHRvIGJlIHRl
c3RlZCBsb29rcyBsaWtlOgorCitgYGAKK25hbWVzcGFjZSBteV9uYW1lc3BhY2UgeworCitjbGFz
cyBGb28geworICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKKyAgRlJJRU5EX1RFU1QoRm9vVGVzdCwg
QmFyKTsKKyAgRlJJRU5EX1RFU1QoRm9vVGVzdCwgQmF6KTsKKyAgLi4uCisgIGRlZmluaXRpb24g
b2YgdGhlIGNsYXNzIEZvbworICAuLi4KK307CisKK30gIC8vIG5hbWVzcGFjZSBteV9uYW1lc3Bh
Y2UKK2BgYAorCitZb3VyIHRlc3QgY29kZSBzaG91bGQgYmUgc29tZXRoaW5nIGxpa2U6CisKK2Bg
YAorbmFtZXNwYWNlIG15X25hbWVzcGFjZSB7CitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVz
dGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAuLi4KK307CisKK1RFU1RfRihGb29UZXN0LCBC
YXIpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBCYXopIHsgLi4uIH0KKworfSAgLy8gbmFtZXNw
YWNlIG15X25hbWVzcGFjZQorYGBgCisKKyMgQ2F0Y2hpbmcgRmFpbHVyZXMgIworCitJZiB5b3Ug
YXJlIGJ1aWxkaW5nIGEgdGVzdGluZyB1dGlsaXR5IG9uIHRvcCBvZiBHb29nbGUgVGVzdCwgeW91
J2xsCit3YW50IHRvIHRlc3QgeW91ciB1dGlsaXR5LiAgV2hhdCBmcmFtZXdvcmsgd291bGQgeW91
IHVzZSB0byB0ZXN0IGl0PworR29vZ2xlIFRlc3QsIG9mIGNvdXJzZS4KKworVGhlIGNoYWxsZW5n
ZSBpcyB0byB2ZXJpZnkgdGhhdCB5b3VyIHRlc3RpbmcgdXRpbGl0eSByZXBvcnRzIGZhaWx1cmVz
Citjb3JyZWN0bHkuICBJbiBmcmFtZXdvcmtzIHRoYXQgcmVwb3J0IGEgZmFpbHVyZSBieSB0aHJv
d2luZyBhbgorZXhjZXB0aW9uLCB5b3UgY291bGQgY2F0Y2ggdGhlIGV4Y2VwdGlvbiBhbmQgYXNz
ZXJ0IG9uIGl0LiAgQnV0IEdvb2dsZQorVGVzdCBkb2Vzbid0IHVzZSBleGNlcHRpb25zLCBzbyBo
b3cgZG8gd2UgdGVzdCB0aGF0IGEgcGllY2Ugb2YgY29kZQorZ2VuZXJhdGVzIGFuIGV4cGVjdGVk
IGZhaWx1cmU/CisKK2AiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiYCBjb250YWlucyBzb21lIGNvbnN0cnVj
dHMgdG8gZG8gdGhpcy4gIEFmdGVyCitgI2luY2x1ZGVgaW5nIHRoaXMgaGVhZGVyLCB5b3UgY2Fu
IHVzZQorCit8IGBFWFBFQ1RfRkFUQUxfRkFJTFVSRShgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2Ap
O2AgfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LXwKKwordG8gYXNzZXJ0IHRoYXQgX3N0YXRlbWVudF8gZ2VuZXJhdGVzIGEgZmF0YWwgKGUuZy4g
YEFTU0VSVF8qYCkgZmFpbHVyZQord2hvc2UgbWVzc2FnZSBjb250YWlucyB0aGUgZ2l2ZW4gX3N1
YnN0cmluZ18sIG9yIHVzZQorCit8IGBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShgX3N0YXRlbWVu
dCwgc3Vic3RyaW5nX2ApO2AgfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLXwKKworaWYgeW91IGFyZSBleHBlY3RpbmcgYSBub24tZmF0YWwg
KGUuZy4gYEVYUEVDVF8qYCkgZmFpbHVyZS4KKworRm9yIHRlY2huaWNhbCByZWFzb25zLCB0aGVy
ZSBhcmUgc29tZSBjYXZlYXRzOgorCisgIDEuIFlvdSBjYW5ub3Qgc3RyZWFtIGEgZmFpbHVyZSBt
ZXNzYWdlIHRvIGVpdGhlciBtYWNyby4KKyAgMS4gX3N0YXRlbWVudF8gaW4gYEVYUEVDVF9GQVRB
TF9GQUlMVVJFKClgIGNhbm5vdCByZWZlcmVuY2UgbG9jYWwgbm9uLXN0YXRpYyB2YXJpYWJsZXMg
b3Igbm9uLXN0YXRpYyBtZW1iZXJzIG9mIGB0aGlzYCBvYmplY3QuCisgIDEuIF9zdGF0ZW1lbnRf
IGluIGBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpYCBjYW5ub3QgcmV0dXJuIGEgdmFsdWUuCisKK19O
b3RlOl8gR29vZ2xlIFRlc3QgaXMgZGVzaWduZWQgd2l0aCB0aHJlYWRzIGluIG1pbmQuICBPbmNl
IHRoZQorc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYCJndGVzdC9pbnRlcm5hbC9ndGVz
dC1wb3J0LmgiYCBoYXZlCitiZWVuIGltcGxlbWVudGVkLCBHb29nbGUgVGVzdCB3aWxsIGJlY29t
ZSB0aHJlYWQtc2FmZSwgbWVhbmluZyB0aGF0Cit5b3UgY2FuIHRoZW4gdXNlIGFzc2VydGlvbnMg
aW4gbXVsdGlwbGUgdGhyZWFkcyBjb25jdXJyZW50bHkuICBCZWZvcmUKKwordGhhdCwgaG93ZXZl
ciwgR29vZ2xlIFRlc3Qgb25seSBzdXBwb3J0cyBzaW5nbGUtdGhyZWFkZWQgdXNhZ2UuICBPbmNl
Cit0aHJlYWQtc2FmZSwgYEVYUEVDVF9GQVRBTF9GQUlMVVJFKClgIGFuZCBgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoKWAKK3dpbGwgY2FwdHVyZSBmYWlsdXJlcyBpbiB0aGUgY3VycmVudCB0aHJl
YWQgb25seS4gSWYgX3N0YXRlbWVudF8KK2NyZWF0ZXMgbmV3IHRocmVhZHMsIGZhaWx1cmVzIGlu
IHRoZXNlIHRocmVhZHMgd2lsbCBiZSBpZ25vcmVkLiAgSWYKK3lvdSB3YW50IHRvIGNhcHR1cmUg
ZmFpbHVyZXMgZnJvbSBhbGwgdGhyZWFkcyBpbnN0ZWFkLCB5b3Ugc2hvdWxkIHVzZQordGhlIGZv
bGxvd2luZyBtYWNyb3M6CisKK3wgYEVYUEVDVF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURT
KGBfc3RhdGVtZW50LCBzdWJzdHJpbmdfYCk7YCB8Cit8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoYF9zdGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtg
IHwKKworIyBHZXR0aW5nIHRoZSBDdXJyZW50IFRlc3QncyBOYW1lICMKKworU29tZXRpbWVzIGEg
ZnVuY3Rpb24gbWF5IG5lZWQgdG8ga25vdyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IHJ1bm5p
bmcgdGVzdC4KK0ZvciBleGFtcGxlLCB5b3UgbWF5IGJlIHVzaW5nIHRoZSBgU2V0VXAoKWAgbWV0
aG9kIG9mIHlvdXIgdGVzdCBmaXh0dXJlIHRvIHNldAordGhlIGdvbGRlbiBmaWxlIG5hbWUgYmFz
ZWQgb24gd2hpY2ggdGVzdCBpcyBydW5uaW5nLiBUaGUgYDo6dGVzdGluZzo6VGVzdEluZm9gCitj
bGFzcyBoYXMgdGhpcyBpbmZvcm1hdGlvbjoKKworYGBgCituYW1lc3BhY2UgdGVzdGluZyB7CisK
K2NsYXNzIFRlc3RJbmZvIHsKKyBwdWJsaWM6CisgIC8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBu
YW1lIGFuZCB0aGUgdGVzdCBuYW1lLCByZXNwZWN0aXZlbHkuCisgIC8vCisgIC8vIERvIE5PVCBk
ZWxldGUgb3IgZnJlZSB0aGUgcmV0dXJuIHZhbHVlIC0gaXQncyBtYW5hZ2VkIGJ5IHRoZQorICAv
LyBUZXN0SW5mbyBjbGFzcy4KKyAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUoKSBjb25zdDsK
KyAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0OworfTsKKworfSAgLy8gbmFtZXNwYWNlIHRlc3Rp
bmcKK2BgYAorCisKKz4gVG8gb2J0YWluIGEgYFRlc3RJbmZvYCBvYmplY3QgZm9yIHRoZSBjdXJy
ZW50bHkgcnVubmluZyB0ZXN0LCBjYWxsCitgY3VycmVudF90ZXN0X2luZm8oKWAgb24gdGhlIGBV
bml0VGVzdGAgc2luZ2xldG9uIG9iamVjdDoKKworYGBgCisvLyBHZXRzIGluZm9ybWF0aW9uIGFi
b3V0IHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LgorLy8gRG8gTk9UIGRlbGV0ZSB0aGUgcmV0
dXJuZWQgb2JqZWN0IC0gaXQncyBtYW5hZ2VkIGJ5IHRoZSBVbml0VGVzdCBjbGFzcy4KK2NvbnN0
IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgIDo6dGVzdGluZzo6VW5p
dFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CitwcmludGYoIldlIGFy
ZSBpbiB0ZXN0ICVzIG9mIHRlc3QgY2FzZSAlcy5cbiIsCisgICAgICAgdGVzdF9pbmZvLT5uYW1l
KCksIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7CitgYGAKKworYGN1cnJlbnRfdGVzdF9p
bmZvKClgIHJldHVybnMgYSBudWxsIHBvaW50ZXIgaWYgbm8gdGVzdCBpcyBydW5uaW5nLiBJbgor
cGFydGljdWxhciwgeW91IGNhbm5vdCBmaW5kIHRoZSB0ZXN0IGNhc2UgbmFtZSBpbiBgVGVzdENh
c2VTZXRVcCgpYCwKK2BUZXN0Q2FzZVRlYXJEb3duKClgICh3aGVyZSB5b3Uga25vdyB0aGUgdGVz
dCBjYXNlIG5hbWUgaW1wbGljaXRseSksIG9yCitmdW5jdGlvbnMgY2FsbGVkIGZyb20gdGhlbS4K
KworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMgRXh0ZW5kaW5nIEdv
b2dsZSBUZXN0IGJ5IEhhbmRsaW5nIFRlc3QgRXZlbnRzICMKKworR29vZ2xlIFRlc3QgcHJvdmlk
ZXMgYW4gPGI+ZXZlbnQgbGlzdGVuZXIgQVBJPC9iPiB0byBsZXQgeW91IHJlY2VpdmUKK25vdGlm
aWNhdGlvbnMgYWJvdXQgdGhlIHByb2dyZXNzIG9mIGEgdGVzdCBwcm9ncmFtIGFuZCB0ZXN0Citm
YWlsdXJlcy4gVGhlIGV2ZW50cyB5b3UgY2FuIGxpc3RlbiB0byBpbmNsdWRlIHRoZSBzdGFydCBh
bmQgZW5kIG9mCit0aGUgdGVzdCBwcm9ncmFtLCBhIHRlc3QgY2FzZSwgb3IgYSB0ZXN0IG1ldGhv
ZCwgYW1vbmcgb3RoZXJzLiBZb3UgbWF5Cit1c2UgdGhpcyBBUEkgdG8gYXVnbWVudCBvciByZXBs
YWNlIHRoZSBzdGFuZGFyZCBjb25zb2xlIG91dHB1dCwKK3JlcGxhY2UgdGhlIFhNTCBvdXRwdXQs
IG9yIHByb3ZpZGUgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBmb3JtIG9mCitvdXRwdXQsIHN1Y2gg
YXMgYSBHVUkgb3IgYSBkYXRhYmFzZS4gWW91IGNhbiBhbHNvIHVzZSB0ZXN0IGV2ZW50cyBhcwor
Y2hlY2twb2ludHMgdG8gaW1wbGVtZW50IGEgcmVzb3VyY2UgbGVhayBjaGVja2VyLCBmb3IgZXhh
bXBsZS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHYxLjQu
MC4KKworIyMgRGVmaW5pbmcgRXZlbnQgTGlzdGVuZXJzICMjCisKK1RvIGRlZmluZSBhIGV2ZW50
IGxpc3RlbmVyLCB5b3Ugc3ViY2xhc3MgZWl0aGVyCitbdGVzdGluZzo6VGVzdEV2ZW50TGlzdGVu
ZXJdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMODU1KQorb3IgW3Rlc3Rpbmc6OkVtcHR5VGVz
dEV2ZW50TGlzdGVuZXJdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMOTA1KS4KK1RoZSBmb3Jt
ZXIgaXMgYW4gKGFic3RyYWN0KSBpbnRlcmZhY2UsIHdoZXJlIDxpPmVhY2ggcHVyZSB2aXJ0dWFs
IG1ldGhvZDxicj4KK2NhbiBiZSBvdmVycmlkZGVuIHRvIGhhbmRsZSBhIHRlc3QgZXZlbnQ8L2k+
IChGb3IgZXhhbXBsZSwgd2hlbiBhIHRlc3QKK3N0YXJ0cywgdGhlIGBPblRlc3RTdGFydCgpYCBt
ZXRob2Qgd2lsbCBiZSBjYWxsZWQuKS4gVGhlIGxhdHRlciBwcm92aWRlcworYW4gZW1wdHkgaW1w
bGVtZW50YXRpb24gb2YgYWxsIG1ldGhvZHMgaW4gdGhlIGludGVyZmFjZSwgc3VjaCB0aGF0IGEK
K3N1YmNsYXNzIG9ubHkgbmVlZHMgdG8gb3ZlcnJpZGUgdGhlIG1ldGhvZHMgaXQgY2FyZXMgYWJv
dXQuCisKK1doZW4gYW4gZXZlbnQgaXMgZmlyZWQsIGl0cyBjb250ZXh0IGlzIHBhc3NlZCB0byB0
aGUgaGFuZGxlciBmdW5jdGlvbgorYXMgYW4gYXJndW1lbnQuIFRoZSBmb2xsb3dpbmcgYXJndW1l
bnQgdHlwZXMgYXJlIHVzZWQ6CisgICogW1VuaXRUZXN0XSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0
LmgjTDEwMDcpIHJlZmxlY3RzIHRoZSBzdGF0ZSBvZiB0aGUgZW50aXJlIHRlc3QgcHJvZ3JhbSwK
KyAgKiBbVGVzdENhc2VdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMNjg5KSBoYXMgaW5mb3Jt
YXRpb24gYWJvdXQgYSB0ZXN0IGNhc2UsIHdoaWNoIGNhbiBjb250YWluIG9uZSBvciBtb3JlIHRl
c3RzLAorICAqIFtUZXN0SW5mb10oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w1OTkpIGNvbnRh
aW5zIHRoZSBzdGF0ZSBvZiBhIHRlc3QsIGFuZAorICAqIFtUZXN0UGFydFJlc3VsdF0oLi4vaW5j
bHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBhcnQuaCNMNDIpIHJlcHJlc2VudHMgdGhlIHJlc3VsdCBv
ZiBhIHRlc3QgYXNzZXJ0aW9uLgorCitBbiBldmVudCBoYW5kbGVyIGZ1bmN0aW9uIGNhbiBleGFt
aW5lIHRoZSBhcmd1bWVudCBpdCByZWNlaXZlcyB0byBmaW5kCitvdXQgaW50ZXJlc3RpbmcgaW5m
b3JtYXRpb24gYWJvdXQgdGhlIGV2ZW50IGFuZCB0aGUgdGVzdCBwcm9ncmFtJ3MKK3N0YXRlLiAg
SGVyZSdzIGFuIGV4YW1wbGU6CisKK2BgYAorICBjbGFzcyBNaW5pbWFsaXN0UHJpbnRlciA6IHB1
YmxpYyA6OnRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgeworICAgIC8vIENhbGxlZCBi
ZWZvcmUgYSB0ZXN0IHN0YXJ0cy4KKyAgICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3Qg
Ojp0ZXN0aW5nOjpUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CisgICAgICBwcmludGYoIioqKiBUZXN0
ICVzLiVzIHN0YXJ0aW5nLlxuIiwKKyAgICAgICAgICAgICB0ZXN0X2luZm8udGVzdF9jYXNlX25h
bWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7CisgICAgfQorCisgICAgLy8gQ2FsbGVkIGFmdGVyIGEg
ZmFpbGVkIGFzc2VydGlvbiBvciBhIFNVQ0NFRUQoKSBpbnZvY2F0aW9uLgorICAgIHZpcnR1YWwg
dm9pZCBPblRlc3RQYXJ0UmVzdWx0KAorICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJ0
UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7CisgICAgICBwcmludGYoIiVzIGluICVzOiVkXG4l
c1xuIiwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LmZhaWxlZCgpID8gIioqKiBGYWls
dXJlIiA6ICJTdWNjZXNzIiwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LmZpbGVfbmFt
ZSgpLAorICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQubGluZV9udW1iZXIoKSwKKyAgICAg
ICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LnN1bW1hcnkoKSk7CisgICAgfQorCisgICAgLy8gQ2Fs
bGVkIGFmdGVyIGEgdGVzdCBlbmRzLgorICAgIHZpcnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3Qg
Ojp0ZXN0aW5nOjpUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CisgICAgICBwcmludGYoIioqKiBUZXN0
ICVzLiVzIGVuZGluZy5cbiIsCisgICAgICAgICAgICAgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1l
KCksIHRlc3RfaW5mby5uYW1lKCkpOworICAgIH0KKyAgfTsKK2BgYAorCisjIyBVc2luZyBFdmVu
dCBMaXN0ZW5lcnMgIyMKKworVG8gdXNlIHRoZSBldmVudCBsaXN0ZW5lciB5b3UgaGF2ZSBkZWZp
bmVkLCBhZGQgYW4gaW5zdGFuY2Ugb2YgaXQgdG8KK3RoZSBHb29nbGUgVGVzdCBldmVudCBsaXN0
ZW5lciBsaXN0IChyZXByZXNlbnRlZCBieSBjbGFzcworW1Rlc3RFdmVudExpc3RlbmVyc10oLi4v
aW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w5MjkpCistIG5vdGUgdGhlICJzIiBhdCB0aGUgZW5kIG9m
IHRoZSBuYW1lKSBpbiB5b3VyCitgbWFpbigpYCBmdW5jdGlvbiwgYmVmb3JlIGNhbGxpbmcgYFJV
Tl9BTExfVEVTVFMoKWA6CitgYGAKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewor
ICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgLy8gR2V0cyBob2xk
IG9mIHRoZSBldmVudCBsaXN0ZW5lciBsaXN0LgorICA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3Rl
bmVycyYgbGlzdGVuZXJzID0KKyAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPmxpc3RlbmVycygpOworICAvLyBBZGRzIGEgbGlzdGVuZXIgdG8gdGhlIGVuZC4gIEdvb2ds
ZSBUZXN0IHRha2VzIHRoZSBvd25lcnNoaXAuCisgIGxpc3RlbmVycy5BcHBlbmQobmV3IE1pbmlt
YWxpc3RQcmludGVyKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAorCitUaGVy
ZSdzIG9ubHkgb25lIHByb2JsZW06IHRoZSBkZWZhdWx0IHRlc3QgcmVzdWx0IHByaW50ZXIgaXMg
c3RpbGwgaW4KK2VmZmVjdCwgc28gaXRzIG91dHB1dCB3aWxsIG1pbmdsZSB3aXRoIHRoZSBvdXRw
dXQgZnJvbSB5b3VyIG1pbmltYWxpc3QKK3ByaW50ZXIuIFRvIHN1cHByZXNzIHRoZSBkZWZhdWx0
IHByaW50ZXIsIGp1c3QgcmVsZWFzZSBpdCBmcm9tIHRoZQorZXZlbnQgbGlzdGVuZXIgbGlzdCBh
bmQgZGVsZXRlIGl0LiBZb3UgY2FuIGRvIHNvIGJ5IGFkZGluZyBvbmUgbGluZToKK2BgYAorICAu
Li4KKyAgZGVsZXRlIGxpc3RlbmVycy5SZWxlYXNlKGxpc3RlbmVycy5kZWZhdWx0X3Jlc3VsdF9w
cmludGVyKCkpOworICBsaXN0ZW5lcnMuQXBwZW5kKG5ldyBNaW5pbWFsaXN0UHJpbnRlcik7Cisg
IHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CitgYGAKKworTm93LCBzaXQgYmFjayBhbmQgZW5qb3kg
YSBjb21wbGV0ZWx5IGRpZmZlcmVudCBvdXRwdXQgZnJvbSB5b3VyCit0ZXN0cy4gRm9yIG1vcmUg
ZGV0YWlscywgeW91IGNhbiByZWFkIHRoaXMKK1tzYW1wbGVdKC4uL3NhbXBsZXMvc2FtcGxlOV91
bml0dGVzdC5jYykuCisKK1lvdSBtYXkgYXBwZW5kIG1vcmUgdGhhbiBvbmUgbGlzdGVuZXIgdG8g
dGhlIGxpc3QuIFdoZW4gYW4gYE9uKlN0YXJ0KClgCitvciBgT25UZXN0UGFydFJlc3VsdCgpYCBl
dmVudCBpcyBmaXJlZCwgdGhlIGxpc3RlbmVycyB3aWxsIHJlY2VpdmUgaXQgaW4KK3RoZSBvcmRl
ciB0aGV5IGFwcGVhciBpbiB0aGUgbGlzdCAoc2luY2UgbmV3IGxpc3RlbmVycyBhcmUgYWRkZWQg
dG8KK3RoZSBlbmQgb2YgdGhlIGxpc3QsIHRoZSBkZWZhdWx0IHRleHQgcHJpbnRlciBhbmQgdGhl
IGRlZmF1bHQgWE1MCitnZW5lcmF0b3Igd2lsbCByZWNlaXZlIHRoZSBldmVudCBmaXJzdCkuIEFu
IGBPbipFbmQoKWAgZXZlbnQgd2lsbCBiZQorcmVjZWl2ZWQgYnkgdGhlIGxpc3RlbmVycyBpbiB0
aGUgX3JldmVyc2VfIG9yZGVyLiBUaGlzIGFsbG93cyBvdXRwdXQgYnkKK2xpc3RlbmVycyBhZGRl
ZCBsYXRlciB0byBiZSBmcmFtZWQgYnkgb3V0cHV0IGZyb20gbGlzdGVuZXJzIGFkZGVkCitlYXJs
aWVyLgorCisjIyBHZW5lcmF0aW5nIEZhaWx1cmVzIGluIExpc3RlbmVycyAjIworCitZb3UgbWF5
IHVzZSBmYWlsdXJlLXJhaXNpbmcgbWFjcm9zIChgRVhQRUNUXyooKWAsIGBBU1NFUlRfKigpYCwK
K2BGQUlMKClgLCBldGMpIHdoZW4gcHJvY2Vzc2luZyBhbiBldmVudC4gVGhlcmUgYXJlIHNvbWUg
cmVzdHJpY3Rpb25zOgorCisgIDEuIFlvdSBjYW5ub3QgZ2VuZXJhdGUgYW55IGZhaWx1cmUgaW4g
YE9uVGVzdFBhcnRSZXN1bHQoKWAgKG90aGVyd2lzZSBpdCB3aWxsIGNhdXNlIGBPblRlc3RQYXJ0
UmVzdWx0KClgIHRvIGJlIGNhbGxlZCByZWN1cnNpdmVseSkuCisgIDEuIEEgbGlzdGVuZXIgdGhh
dCBoYW5kbGVzIGBPblRlc3RQYXJ0UmVzdWx0KClgIGlzIG5vdCBhbGxvd2VkIHRvIGdlbmVyYXRl
IGFueSBmYWlsdXJlLgorCitXaGVuIHlvdSBhZGQgbGlzdGVuZXJzIHRvIHRoZSBsaXN0ZW5lciBs
aXN0LCB5b3Ugc2hvdWxkIHB1dCBsaXN0ZW5lcnMKK3RoYXQgaGFuZGxlIGBPblRlc3RQYXJ0UmVz
dWx0KClgIF9iZWZvcmVfIGxpc3RlbmVycyB0aGF0IGNhbiBnZW5lcmF0ZQorZmFpbHVyZXMuIFRo
aXMgZW5zdXJlcyB0aGF0IGZhaWx1cmVzIGdlbmVyYXRlZCBieSB0aGUgbGF0dGVyIGFyZQorYXR0
cmlidXRlZCB0byB0aGUgcmlnaHQgdGVzdCBieSB0aGUgZm9ybWVyLgorCitXZSBoYXZlIGEgc2Ft
cGxlIG9mIGZhaWx1cmUtcmFpc2luZyBsaXN0ZW5lcgorW2hlcmVdKC4uL3NhbXBsZXMvc2FtcGxl
MTBfdW5pdHRlc3QuY2MpLgorCisjIFJ1bm5pbmcgVGVzdCBQcm9ncmFtczogQWR2YW5jZWQgT3B0
aW9ucyAjCisKK0dvb2dsZSBUZXN0IHRlc3QgcHJvZ3JhbXMgYXJlIG9yZGluYXJ5IGV4ZWN1dGFi
bGVzLiBPbmNlIGJ1aWx0LCB5b3UgY2FuIHJ1bgordGhlbSBkaXJlY3RseSBhbmQgYWZmZWN0IHRo
ZWlyIGJlaGF2aW9yIHZpYSB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcworYW5k
L29yIGNvbW1hbmQgbGluZSBmbGFncy4gRm9yIHRoZSBmbGFncyB0byB3b3JrLCB5b3VyIHByb2dy
YW1zIG11c3QgY2FsbAorYDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKWAgYmVmb3JlIGNhbGxp
bmcgYFJVTl9BTExfVEVTVFMoKWAuCisKK1RvIHNlZSBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGZsYWdz
IGFuZCB0aGVpciB1c2FnZSwgcGxlYXNlIHJ1biB5b3VyIHRlc3QKK3Byb2dyYW0gd2l0aCB0aGUg
YC0taGVscGAgZmxhZy4gIFlvdSBjYW4gYWxzbyB1c2UgYC1oYCwgYC0/YCwgb3IgYC8/YAorZm9y
IHNob3J0LiAgVGhpcyBmZWF0dXJlIGlzIGFkZGVkIGluIHZlcnNpb24gMS4zLjAuCisKK0lmIGFu
IG9wdGlvbiBpcyBzcGVjaWZpZWQgYm90aCBieSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbmQg
YnkgYQorZmxhZywgdGhlIGxhdHRlciB0YWtlcyBwcmVjZWRlbmNlLiAgTW9zdCBvZiB0aGUgb3B0
aW9ucyBjYW4gYWxzbyBiZQorc2V0L3JlYWQgaW4gY29kZTogdG8gYWNjZXNzIHRoZSB2YWx1ZSBv
ZiBjb21tYW5kIGxpbmUgZmxhZworYC0tZ3Rlc3RfZm9vYCwgd3JpdGUgYDo6dGVzdGluZzo6R1RF
U1RfRkxBRyhmb28pYC4gIEEgY29tbW9uIHBhdHRlcm4gaXMKK3RvIHNldCB0aGUgdmFsdWUgb2Yg
YSBmbGFnIGJlZm9yZSBjYWxsaW5nIGA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClgCit0byBj
aGFuZ2UgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGZsYWc6CitgYGAKK2ludCBtYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikgeworICAvLyBEaXNhYmxlcyBlbGFwc2VkIHRpbWUgYnkgZGVmYXVs
dC4KKyAgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHByaW50X3RpbWUpID0gZmFsc2U7CisKKyAgLy8g
VGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gb3ZlcnJpZGUgdGhlIGZsYWcgb24gdGhlIGNvbW1hbmQg
bGluZS4KKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgcmV0
dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAorCisjIyBTZWxlY3RpbmcgVGVzdHMgIyMKKwor
VGhpcyBzZWN0aW9uIHNob3dzIHZhcmlvdXMgb3B0aW9ucyBmb3IgY2hvb3Npbmcgd2hpY2ggdGVz
dHMgdG8gcnVuLgorCisjIyMgTGlzdGluZyBUZXN0IE5hbWVzICMjIworCitTb21ldGltZXMgaXQg
aXMgbmVjZXNzYXJ5IHRvIGxpc3QgdGhlIGF2YWlsYWJsZSB0ZXN0cyBpbiBhIHByb2dyYW0gYmVm
b3JlCitydW5uaW5nIHRoZW0gc28gdGhhdCBhIGZpbHRlciBtYXkgYmUgYXBwbGllZCBpZiBuZWVk
ZWQuIEluY2x1ZGluZyB0aGUgZmxhZworYC0tZ3Rlc3RfbGlzdF90ZXN0c2Agb3ZlcnJpZGVzIGFs
bCBvdGhlciBmbGFncyBhbmQgbGlzdHMgdGVzdHMgaW4gdGhlIGZvbGxvd2luZworZm9ybWF0Ogor
YGBgCitUZXN0Q2FzZTEuCisgIFRlc3ROYW1lMQorICBUZXN0TmFtZTIKK1Rlc3RDYXNlMi4KKyAg
VGVzdE5hbWUKK2BgYAorCitOb25lIG9mIHRoZSB0ZXN0cyBsaXN0ZWQgYXJlIGFjdHVhbGx5IHJ1
biBpZiB0aGUgZmxhZyBpcyBwcm92aWRlZC4gVGhlcmUgaXMgbm8KK2NvcnJlc3BvbmRpbmcgZW52
aXJvbm1lbnQgdmFyaWFibGUgZm9yIHRoaXMgZmxhZy4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4
LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBSdW5uaW5nIGEgU3Vic2V0IG9mIHRoZSBUZXN0cyAjIyMK
KworQnkgZGVmYXVsdCwgYSBHb29nbGUgVGVzdCBwcm9ncmFtIHJ1bnMgYWxsIHRlc3RzIHRoZSB1
c2VyIGhhcyBkZWZpbmVkLgorU29tZXRpbWVzLCB5b3Ugd2FudCB0byBydW4gb25seSBhIHN1YnNl
dCBvZiB0aGUgdGVzdHMgKGUuZy4gZm9yIGRlYnVnZ2luZyBvcgorcXVpY2tseSB2ZXJpZnlpbmcg
YSBjaGFuZ2UpLiBJZiB5b3Ugc2V0IHRoZSBgR1RFU1RfRklMVEVSYCBlbnZpcm9ubWVudCB2YXJp
YWJsZQorb3IgdGhlIGAtLWd0ZXN0X2ZpbHRlcmAgZmxhZyB0byBhIGZpbHRlciBzdHJpbmcsIEdv
b2dsZSBUZXN0IHdpbGwgb25seSBydW4gdGhlCit0ZXN0cyB3aG9zZSBmdWxsIG5hbWVzIChpbiB0
aGUgZm9ybSBvZiBgVGVzdENhc2VOYW1lLlRlc3ROYW1lYCkgbWF0Y2ggdGhlCitmaWx0ZXIuCisK
K1RoZSBmb3JtYXQgb2YgYSBmaWx0ZXIgaXMgYSAnYDpgJy1zZXBhcmF0ZWQgbGlzdCBvZiB3aWxk
Y2FyZCBwYXR0ZXJucyAoY2FsbGVkCit0aGUgcG9zaXRpdmUgcGF0dGVybnMpIG9wdGlvbmFsbHkg
Zm9sbG93ZWQgYnkgYSAnYC1gJyBhbmQgYW5vdGhlcgorJ2A6YCctc2VwYXJhdGVkIHBhdHRlcm4g
bGlzdCAoY2FsbGVkIHRoZSBuZWdhdGl2ZSBwYXR0ZXJucykuIEEgdGVzdCBtYXRjaGVzIHRoZQor
ZmlsdGVyIGlmIGFuZCBvbmx5IGlmIGl0IG1hdGNoZXMgYW55IG9mIHRoZSBwb3NpdGl2ZSBwYXR0
ZXJucyBidXQgZG9lcyBub3QKK21hdGNoIGFueSBvZiB0aGUgbmVnYXRpdmUgcGF0dGVybnMuCisK
K0EgcGF0dGVybiBtYXkgY29udGFpbiBgJyonYCAobWF0Y2hlcyBhbnkgc3RyaW5nKSBvciBgJz8n
YCAobWF0Y2hlcyBhbnkgc2luZ2xlCitjaGFyYWN0ZXIpLiBGb3IgY29udmVuaWVuY2UsIHRoZSBm
aWx0ZXIgYCcqLU5lZ2F0aXZlUGF0dGVybnMnYCBjYW4gYmUgYWxzbword3JpdHRlbiBhcyBgJy1O
ZWdhdGl2ZVBhdHRlcm5zJ2AuCisKK0ZvciBleGFtcGxlOgorCisgICogYC4vZm9vX3Rlc3RgIEhh
cyBubyBmbGFnLCBhbmQgdGh1cyBydW5zIGFsbCBpdHMgdGVzdHMuCisgICogYC4vZm9vX3Rlc3Qg
LS1ndGVzdF9maWx0ZXI9KmAgQWxzbyBydW5zIGV2ZXJ5dGhpbmcsIGR1ZSB0byB0aGUgc2luZ2xl
IG1hdGNoLWV2ZXJ5dGhpbmcgYCpgIHZhbHVlLgorICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmls
dGVyPUZvb1Rlc3QuKmAgUnVucyBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBgRm9vVGVzdGAuCisg
ICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Kk51bGwqOipDb25zdHJ1Y3RvcipgIFJ1bnMg
YW55IHRlc3Qgd2hvc2UgZnVsbCBuYW1lIGNvbnRhaW5zIGVpdGhlciBgIk51bGwiYCBvciBgIkNv
bnN0cnVjdG9yImAuCisgICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9LSpEZWF0aFRlc3Qu
KmAgUnVucyBhbGwgbm9uLWRlYXRoIHRlc3RzLgorICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmls
dGVyPUZvb1Rlc3QuKi1Gb29UZXN0LkJhcmAgUnVucyBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBg
Rm9vVGVzdGAgZXhjZXB0IGBGb29UZXN0LkJhcmAuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwg
V2luZG93cywgTWFjLgorCisjIyMgVGVtcG9yYXJpbHkgRGlzYWJsaW5nIFRlc3RzICMjIworCitJ
ZiB5b3UgaGF2ZSBhIGJyb2tlbiB0ZXN0IHRoYXQgeW91IGNhbm5vdCBmaXggcmlnaHQgYXdheSwg
eW91IGNhbiBhZGQgdGhlCitgRElTQUJMRURfYCBwcmVmaXggdG8gaXRzIG5hbWUuIFRoaXMgd2ls
bCBleGNsdWRlIGl0IGZyb20gZXhlY3V0aW9uLiBUaGlzIGlzCitiZXR0ZXIgdGhhbiBjb21tZW50
aW5nIG91dCB0aGUgY29kZSBvciB1c2luZyBgI2lmIDBgLCBhcyBkaXNhYmxlZCB0ZXN0cyBhcmUK
K3N0aWxsIGNvbXBpbGVkIChhbmQgdGh1cyB3b24ndCByb3QpLgorCitJZiB5b3UgbmVlZCB0byBk
aXNhYmxlIGFsbCB0ZXN0cyBpbiBhIHRlc3QgY2FzZSwgeW91IGNhbiBlaXRoZXIgYWRkIGBESVNB
QkxFRF9gCit0byB0aGUgZnJvbnQgb2YgdGhlIG5hbWUgb2YgZWFjaCB0ZXN0LCBvciBhbHRlcm5h
dGl2ZWx5IGFkZCBpdCB0byB0aGUgZnJvbnQgb2YKK3RoZSB0ZXN0IGNhc2UgbmFtZS4KKworRm9y
IGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVzdHMgd29uJ3QgYmUgcnVuIGJ5IEdvb2dsZSBUZXN0
LCBldmVuIHRob3VnaCB0aGV5Cit3aWxsIHN0aWxsIGJlIGNvbXBpbGVkOgorCitgYGAKKy8vIFRl
c3RzIHRoYXQgRm9vIGRvZXMgQWJjLgorVEVTVChGb29UZXN0LCBESVNBQkxFRF9Eb2VzQWJjKSB7
IC4uLiB9CisKK2NsYXNzIERJU0FCTEVEX0JhclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHsgLi4uIH07CisKKy8vIFRlc3RzIHRoYXQgQmFyIGRvZXMgWHl6LgorVEVTVF9GKERJU0FCTEVE
X0JhclRlc3QsIERvZXNYeXopIHsgLi4uIH0KK2BgYAorCitfTm90ZTpfIFRoaXMgZmVhdHVyZSBz
aG91bGQgb25seSBiZSB1c2VkIGZvciB0ZW1wb3JhcnkgcGFpbi1yZWxpZWYuIFlvdSBzdGlsbAor
aGF2ZSB0byBmaXggdGhlIGRpc2FibGVkIHRlc3RzIGF0IGEgbGF0ZXIgZGF0ZS4gQXMgYSByZW1p
bmRlciwgR29vZ2xlIFRlc3Qgd2lsbAorcHJpbnQgYSBiYW5uZXIgd2FybmluZyB5b3UgaWYgYSB0
ZXN0IHByb2dyYW0gY29udGFpbnMgYW55IGRpc2FibGVkIHRlc3RzLgorCitfVGlwOl8gWW91IGNh
biBlYXNpbHkgY291bnQgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB5b3UgaGF2ZQordXNp
bmcgYGdyZXBgLiBUaGlzIG51bWJlciBjYW4gYmUgdXNlZCBhcyBhIG1ldHJpYyBmb3IgaW1wcm92
aW5nIHlvdXIKK3Rlc3QgcXVhbGl0eS4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dz
LCBNYWMuCisKKyMjIyBUZW1wb3JhcmlseSBFbmFibGluZyBEaXNhYmxlZCBUZXN0cyAjIyMKKwor
VG8gaW5jbHVkZSBbZGlzYWJsZWQgdGVzdHNdKCN0ZW1wb3JhcmlseS1kaXNhYmxpbmctdGVzdHMp
IGluIHRlc3QKK2V4ZWN1dGlvbiwganVzdCBpbnZva2UgdGhlIHRlc3QgcHJvZ3JhbSB3aXRoIHRo
ZQorYC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHNgIGZsYWcgb3Igc2V0IHRoZQorYEdU
RVNUX0FMU09fUlVOX0RJU0FCTEVEX1RFU1RTYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIHZh
bHVlIG90aGVyCit0aGFuIGAwYC4gIFlvdSBjYW4gY29tYmluZSB0aGlzIHdpdGggdGhlCitbLS1n
dGVzdFxfZmlsdGVyXSgjcnVubmluZy1hLXN1YnNldC1vZi10aGUtdGVzdHMpIGZsYWcgdG8gZnVy
dGhlciBzZWxlY3QKK3doaWNoIGRpc2FibGVkIHRlc3RzIHRvIHJ1bi4KKworX0F2YWlsYWJpbGl0
eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4zLjAuCisKKyMjIFJlcGVh
dGluZyB0aGUgVGVzdHMgIyMKKworT25jZSBpbiBhIHdoaWxlIHlvdSdsbCBydW4gaW50byBhIHRl
c3Qgd2hvc2UgcmVzdWx0IGlzIGhpdC1vci1taXNzLiBQZXJoYXBzIGl0Cit3aWxsIGZhaWwgb25s
eSAxJSBvZiB0aGUgdGltZSwgbWFraW5nIGl0IHJhdGhlciBoYXJkIHRvIHJlcHJvZHVjZSB0aGUg
YnVnIHVuZGVyCithIGRlYnVnZ2VyLiBUaGlzIGNhbiBiZSBhIG1ham9yIHNvdXJjZSBvZiBmcnVz
dHJhdGlvbi4KKworVGhlIGAtLWd0ZXN0X3JlcGVhdGAgZmxhZyBhbGxvd3MgeW91IHRvIHJlcGVh
dCBhbGwgKG9yIHNlbGVjdGVkKSB0ZXN0IG1ldGhvZHMKK2luIGEgcHJvZ3JhbSBtYW55IHRpbWVz
LiBIb3BlZnVsbHksIGEgZmxha3kgdGVzdCB3aWxsIGV2ZW50dWFsbHkgZmFpbCBhbmQgZ2l2ZQor
eW91IGEgY2hhbmNlIHRvIGRlYnVnLiBIZXJlJ3MgaG93IHRvIHVzZSBpdDoKKworfCBgJCBmb29f
dGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwYCB8IFJlcGVhdCBmb29cX3Rlc3QgMTAwMCB0aW1lcyBh
bmQgZG9uJ3Qgc3RvcCBhdCBmYWlsdXJlcy4gfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tfAorfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0tMWAgICB8IEEgbmVnYXRp
dmUgY291bnQgbWVhbnMgcmVwZWF0aW5nIGZvcmV2ZXIuICAgICAgICAgICAgICAgfAorfCBgJCBm
b29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZWAgfCBS
ZXBlYXQgZm9vXF90ZXN0IDEwMDAgdGltZXMsIHN0b3BwaW5nIGF0IHRoZSBmaXJzdCBmYWlsdXJl
LiBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIHdoZW4gcnVubmluZyB1bmRlciBhIGRlYnVnZ2Vy
OiB3aGVuIHRoZSB0ZXN0ZmFpbHMsIGl0IHdpbGwgZHJvcCBpbnRvIHRoZSBkZWJ1Z2dlciBhbmQg
eW91IGNhbiB0aGVuIGluc3BlY3QgdmFyaWFibGVzIGFuZCBzdGFja3MuIHwKK3wgYCQgZm9vX3Rl
c3QgLS1ndGVzdF9yZXBlYXQ9MTAwMCAtLWd0ZXN0X2ZpbHRlcj1Gb29CYXJgIHwgUmVwZWF0IHRo
ZSB0ZXN0cyB3aG9zZSBuYW1lIG1hdGNoZXMgdGhlIGZpbHRlciAxMDAwIHRpbWVzLiB8CisKK0lm
IHlvdXIgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIGdsb2JhbCBzZXQtdXAvdGVhci1kb3duIGNvZGUg
cmVnaXN0ZXJlZAordXNpbmcgYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCwgaXQgd2lsbCBi
ZSByZXBlYXRlZCBpbiBlYWNoCitpdGVyYXRpb24gYXMgd2VsbCwgYXMgdGhlIGZsYWtpbmVzcyBt
YXkgYmUgaW4gaXQuIFlvdSBjYW4gYWxzbyBzcGVjaWZ5Cit0aGUgcmVwZWF0IGNvdW50IGJ5IHNl
dHRpbmcgdGhlIGBHVEVTVF9SRVBFQVRgIGVudmlyb25tZW50IHZhcmlhYmxlLgorCitfQXZhaWxh
YmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgU2h1ZmZsaW5nIHRoZSBUZXN0cyAj
IworCitZb3UgY2FuIHNwZWNpZnkgdGhlIGAtLWd0ZXN0X3NodWZmbGVgIGZsYWcgKG9yIHNldCB0
aGUgYEdURVNUX1NIVUZGTEVgCitlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBgMWApIHRvIHJ1biB0
aGUgdGVzdHMgaW4gYSBwcm9ncmFtIGluIGEgcmFuZG9tCitvcmRlci4gVGhpcyBoZWxwcyB0byBy
ZXZlYWwgYmFkIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRlc3RzLgorCitCeSBkZWZhdWx0LCBHb29n
bGUgVGVzdCB1c2VzIGEgcmFuZG9tIHNlZWQgY2FsY3VsYXRlZCBmcm9tIHRoZSBjdXJyZW50Cit0
aW1lLiBUaGVyZWZvcmUgeW91J2xsIGdldCBhIGRpZmZlcmVudCBvcmRlciBldmVyeSB0aW1lLiBU
aGUgY29uc29sZQorb3V0cHV0IGluY2x1ZGVzIHRoZSByYW5kb20gc2VlZCB2YWx1ZSwgc3VjaCB0
aGF0IHlvdSBjYW4gcmVwcm9kdWNlIGFuCitvcmRlci1yZWxhdGVkIHRlc3QgZmFpbHVyZSBsYXRl
ci4gVG8gc3BlY2lmeSB0aGUgcmFuZG9tIHNlZWQKK2V4cGxpY2l0bHksIHVzZSB0aGUgYC0tZ3Rl
c3RfcmFuZG9tX3NlZWQ9U0VFRGAgZmxhZyAob3Igc2V0IHRoZQorYEdURVNUX1JBTkRPTV9TRUVE
YCBlbnZpcm9ubWVudCB2YXJpYWJsZSksIHdoZXJlIGBTRUVEYCBpcyBhbiBpbnRlZ2VyCitiZXR3
ZWVuIDAgYW5kIDk5OTk5LiBUaGUgc2VlZCB2YWx1ZSAwIGlzIHNwZWNpYWw6IGl0IHRlbGxzIEdv
b2dsZSBUZXN0Cit0byBkbyB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBjYWxjdWxhdGluZyB0aGUg
c2VlZCBmcm9tIHRoZSBjdXJyZW50Cit0aW1lLgorCitJZiB5b3UgY29tYmluZSB0aGlzIHdpdGgg
YC0tZ3Rlc3RfcmVwZWF0PU5gLCBHb29nbGUgVGVzdCB3aWxsIHBpY2sgYQorZGlmZmVyZW50IHJh
bmRvbSBzZWVkIGFuZCByZS1zaHVmZmxlIHRoZSB0ZXN0cyBpbiBlYWNoIGl0ZXJhdGlvbi4KKwor
X0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHYxLjQuMC4KKworIyMg
Q29udHJvbGxpbmcgVGVzdCBPdXRwdXQgIyMKKworVGhpcyBzZWN0aW9uIHRlYWNoZXMgaG93IHRv
IHR3ZWFrIHRoZSB3YXkgdGVzdCByZXN1bHRzIGFyZSByZXBvcnRlZC4KKworIyMjIENvbG9yZWQg
VGVybWluYWwgT3V0cHV0ICMjIworCitHb29nbGUgVGVzdCBjYW4gdXNlIGNvbG9ycyBpbiBpdHMg
dGVybWluYWwgb3V0cHV0IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNwb3QKK3RoZSBzZXBhcmF0aW9u
IGJldHdlZW4gdGVzdHMsIGFuZCB3aGV0aGVyIHRlc3RzIHBhc3NlZC4KKworWW91IGNhbiBzZXQg
dGhlIEdURVNUXF9DT0xPUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciBzZXQgdGhlIGAtLWd0ZXN0
X2NvbG9yYAorY29tbWFuZCBsaW5lIGZsYWcgdG8gYHllc2AsIGBub2AsIG9yIGBhdXRvYCAodGhl
IGRlZmF1bHQpIHRvIGVuYWJsZSBjb2xvcnMsCitkaXNhYmxlIGNvbG9ycywgb3IgbGV0IEdvb2ds
ZSBUZXN0IGRlY2lkZS4gV2hlbiB0aGUgdmFsdWUgaXMgYGF1dG9gLCBHb29nbGUKK1Rlc3Qgd2ls
bCB1c2UgY29sb3JzIGlmIGFuZCBvbmx5IGlmIHRoZSBvdXRwdXQgZ29lcyB0byBhIHRlcm1pbmFs
IGFuZCAob24KK25vbi1XaW5kb3dzIHBsYXRmb3JtcykgdGhlIGBURVJNYCBlbnZpcm9ubWVudCB2
YXJpYWJsZSBpcyBzZXQgdG8gYHh0ZXJtYCBvcgorYHh0ZXJtLWNvbG9yYC4KKworX0F2YWlsYWJp
bGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBTdXBwcmVzc2luZyB0aGUgRWxhcHNl
ZCBUaW1lICMjIworCitCeSBkZWZhdWx0LCBHb29nbGUgVGVzdCBwcmludHMgdGhlIHRpbWUgaXQg
dGFrZXMgdG8gcnVuIGVhY2ggdGVzdC4gIFRvCitzdXBwcmVzcyB0aGF0LCBydW4gdGhlIHRlc3Qg
cHJvZ3JhbSB3aXRoIHRoZSBgLS1ndGVzdF9wcmludF90aW1lPTBgCitjb21tYW5kIGxpbmUgZmxh
Zy4gIFNldHRpbmcgdGhlIGBHVEVTVF9QUklOVF9USU1FYCBlbnZpcm9ubWVudAordmFyaWFibGUg
dG8gYDBgIGhhcyB0aGUgc2FtZSBlZmZlY3QuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2lu
ZG93cywgTWFjLiAgKEluIEdvb2dsZSBUZXN0IDEuMy4wIGFuZCBsb3dlciwKK3RoZSBkZWZhdWx0
IGJlaGF2aW9yIGlzIHRoYXQgdGhlIGVsYXBzZWQgdGltZSBpcyAqKm5vdCoqIHByaW50ZWQuKQor
CisjIyMgR2VuZXJhdGluZyBhbiBYTUwgUmVwb3J0ICMjIworCitHb29nbGUgVGVzdCBjYW4gZW1p
dCBhIGRldGFpbGVkIFhNTCByZXBvcnQgdG8gYSBmaWxlIGluIGFkZGl0aW9uIHRvIGl0cyBub3Jt
YWwKK3RleHR1YWwgb3V0cHV0LiBUaGUgcmVwb3J0IGNvbnRhaW5zIHRoZSBkdXJhdGlvbiBvZiBl
YWNoIHRlc3QsIGFuZCB0aHVzIGNhbgoraGVscCB5b3UgaWRlbnRpZnkgc2xvdyB0ZXN0cy4KKwor
VG8gZ2VuZXJhdGUgdGhlIFhNTCByZXBvcnQsIHNldCB0aGUgYEdURVNUX09VVFBVVGAgZW52aXJv
bm1lbnQgdmFyaWFibGUgb3IgdGhlCitgLS1ndGVzdF9vdXRwdXRgIGZsYWcgdG8gdGhlIHN0cmlu
ZyBgInhtbDpfcGF0aF90b19vdXRwdXRfZmlsZV8iYCwgd2hpY2ggd2lsbAorY3JlYXRlIHRoZSBm
aWxlIGF0IHRoZSBnaXZlbiBsb2NhdGlvbi4gWW91IGNhbiBhbHNvIGp1c3QgdXNlIHRoZSBzdHJp
bmcKK2AieG1sImAsIGluIHdoaWNoIGNhc2UgdGhlIG91dHB1dCBjYW4gYmUgZm91bmQgaW4gdGhl
IGB0ZXN0X2RldGFpbC54bWxgIGZpbGUgaW4KK3RoZSBjdXJyZW50IGRpcmVjdG9yeS4KKworSWYg
eW91IHNwZWNpZnkgYSBkaXJlY3RvcnkgKGZvciBleGFtcGxlLCBgInhtbDpvdXRwdXQvZGlyZWN0
b3J5LyJgIG9uIExpbnV4IG9yCitgInhtbDpvdXRwdXRcZGlyZWN0b3J5XCJgIG9uIFdpbmRvd3Mp
LCBHb29nbGUgVGVzdCB3aWxsIGNyZWF0ZSB0aGUgWE1MIGZpbGUgaW4KK3RoYXQgZGlyZWN0b3J5
LCBuYW1lZCBhZnRlciB0aGUgdGVzdCBleGVjdXRhYmxlIChlLmcuIGBmb29fdGVzdC54bWxgIGZv
ciB0ZXN0Citwcm9ncmFtIGBmb29fdGVzdGAgb3IgYGZvb190ZXN0LmV4ZWApLiBJZiB0aGUgZmls
ZSBhbHJlYWR5IGV4aXN0cyAocGVyaGFwcyBsZWZ0CitvdmVyIGZyb20gYSBwcmV2aW91cyBydW4p
LCBHb29nbGUgVGVzdCB3aWxsIHBpY2sgYSBkaWZmZXJlbnQgbmFtZSAoZS5nLgorYGZvb190ZXN0
XzEueG1sYCkgdG8gYXZvaWQgb3ZlcndyaXRpbmcgaXQuCisKK1RoZSByZXBvcnQgdXNlcyB0aGUg
Zm9ybWF0IGRlc2NyaWJlZCBoZXJlLiAgSXQgaXMgYmFzZWQgb24gdGhlCitganVuaXRyZXBvcnRg
IEFudCB0YXNrIGFuZCBjYW4gYmUgcGFyc2VkIGJ5IHBvcHVsYXIgY29udGludW91cyBidWlsZAor
c3lzdGVtcyBsaWtlIFtKZW5raW5zXShodHRwOi8vamVua2lucy1jaS5vcmcvKS4gU2luY2UgdGhh
dCBmb3JtYXQKK3dhcyBvcmlnaW5hbGx5IGludGVuZGVkIGZvciBKYXZhLCBhIGxpdHRsZSBpbnRl
cnByZXRhdGlvbiBpcyByZXF1aXJlZAordG8gbWFrZSBpdCBhcHBseSB0byBHb29nbGUgVGVzdCB0
ZXN0cywgYXMgc2hvd24gaGVyZToKKworYGBgCis8dGVzdHN1aXRlcyBuYW1lPSJBbGxUZXN0cyIg
Li4uPgorICA8dGVzdHN1aXRlIG5hbWU9InRlc3RfY2FzZV9uYW1lIiAuLi4+CisgICAgPHRlc3Rj
YXNlIG5hbWU9InRlc3RfbmFtZSIgLi4uPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+
CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9
Ii4uLiIvPgorICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPgor
YGBgCisKKyAgKiBUaGUgcm9vdCBgPHRlc3RzdWl0ZXM+YCBlbGVtZW50IGNvcnJlc3BvbmRzIHRv
IHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFtLgorICAqIGA8dGVzdHN1aXRlPmAgZWxlbWVudHMgY29y
cmVzcG9uZCB0byBHb29nbGUgVGVzdCB0ZXN0IGNhc2VzLgorICAqIGA8dGVzdGNhc2U+YCBlbGVt
ZW50cyBjb3JyZXNwb25kIHRvIEdvb2dsZSBUZXN0IHRlc3QgZnVuY3Rpb25zLgorCitGb3IgaW5z
dGFuY2UsIHRoZSBmb2xsb3dpbmcgcHJvZ3JhbQorCitgYGAKK1RFU1QoTWF0aFRlc3QsIEFkZGl0
aW9uKSB7IC4uLiB9CitURVNUKE1hdGhUZXN0LCBTdWJ0cmFjdGlvbikgeyAuLi4gfQorVEVTVChM
b2dpY1Rlc3QsIE5vbkNvbnRyYWRpY3Rpb24pIHsgLi4uIH0KK2BgYAorCitjb3VsZCBnZW5lcmF0
ZSB0aGlzIHJlcG9ydDoKKworYGBgCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYt
OCI/PgorPHRlc3RzdWl0ZXMgdGVzdHM9IjMiIGZhaWx1cmVzPSIxIiBlcnJvcnM9IjAiIHRpbWU9
IjM1IiBuYW1lPSJBbGxUZXN0cyI+CisgIDx0ZXN0c3VpdGUgbmFtZT0iTWF0aFRlc3QiIHRlc3Rz
PSIyIiBmYWlsdXJlcz0iMSIgZXJyb3JzPSIwIiB0aW1lPSIxNSI+CisgICAgPHRlc3RjYXNlIG5h
bWU9IkFkZGl0aW9uIiBzdGF0dXM9InJ1biIgdGltZT0iNyIgY2xhc3NuYW1lPSIiPgorICAgICAg
PGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IGFkZCgxLCAxKSYjeDBBOyBBY3R1YWw6IDMmI3gw
QTtFeHBlY3RlZDogMiIgdHlwZT0iIi8+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBv
ZjogYWRkKDEsIC0xKSYjeDBBOyBBY3R1YWw6IDEmI3gwQTtFeHBlY3RlZDogMCIgdHlwZT0iIi8+
CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8dGVzdGNhc2UgbmFtZT0iU3VidHJhY3Rpb24iIHN0YXR1
cz0icnVuIiB0aW1lPSI1IiBjbGFzc25hbWU9IiI+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0
c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iTG9naWNUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9
IjAiIGVycm9ycz0iMCIgdGltZT0iNSI+CisgICAgPHRlc3RjYXNlIG5hbWU9Ik5vbkNvbnRyYWRp
Y3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSI1IiBjbGFzc25hbWU9IiI+CisgICAgPC90ZXN0Y2Fz
ZT4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rlc3RzdWl0ZXM+CitgYGAKKworVGhpbmdzIHRvIG5vdGU6
CisKKyAgKiBUaGUgYHRlc3RzYCBhdHRyaWJ1dGUgb2YgYSBgPHRlc3RzdWl0ZXM+YCBvciBgPHRl
c3RzdWl0ZT5gIGVsZW1lbnQgdGVsbHMgaG93IG1hbnkgdGVzdCBmdW5jdGlvbnMgdGhlIEdvb2ds
ZSBUZXN0IHByb2dyYW0gb3IgdGVzdCBjYXNlIGNvbnRhaW5zLCB3aGlsZSB0aGUgYGZhaWx1cmVz
YCBhdHRyaWJ1dGUgdGVsbHMgaG93IG1hbnkgb2YgdGhlbSBmYWlsZWQuCisgICogVGhlIGB0aW1l
YCBhdHRyaWJ1dGUgZXhwcmVzc2VzIHRoZSBkdXJhdGlvbiBvZiB0aGUgdGVzdCwgdGVzdCBjYXNl
LCBvciBlbnRpcmUgdGVzdCBwcm9ncmFtIGluIG1pbGxpc2Vjb25kcy4KKyAgKiBFYWNoIGA8ZmFp
bHVyZT5gIGVsZW1lbnQgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgZmFpbGVkIEdvb2dsZSBUZXN0
IGFzc2VydGlvbi4KKyAgKiBTb21lIEpVbml0IGNvbmNlcHRzIGRvbid0IGFwcGx5IHRvIEdvb2ds
ZSBUZXN0LCB5ZXQgd2UgaGF2ZSB0byBjb25mb3JtIHRvIHRoZSBEVEQuIFRoZXJlZm9yZSB5b3Un
bGwgc2VlIHNvbWUgZHVtbXkgZWxlbWVudHMgYW5kIGF0dHJpYnV0ZXMgaW4gdGhlIHJlcG9ydC4g
WW91IGNhbiBzYWZlbHkgaWdub3JlIHRoZXNlIHBhcnRzLgorCitfQXZhaWxhYmlsaXR5Ol8gTGlu
dXgsIFdpbmRvd3MsIE1hYy4KKworIyMgQ29udHJvbGxpbmcgSG93IEZhaWx1cmVzIEFyZSBSZXBv
cnRlZCAjIworCisjIyMgVHVybmluZyBBc3NlcnRpb24gRmFpbHVyZXMgaW50byBCcmVhay1Qb2lu
dHMgIyMjCisKK1doZW4gcnVubmluZyB0ZXN0IHByb2dyYW1zIHVuZGVyIGEgZGVidWdnZXIsIGl0
J3MgdmVyeSBjb252ZW5pZW50IGlmIHRoZQorZGVidWdnZXIgY2FuIGNhdGNoIGFuIGFzc2VydGlv
biBmYWlsdXJlIGFuZCBhdXRvbWF0aWNhbGx5IGRyb3AgaW50byBpbnRlcmFjdGl2ZQorbW9kZS4g
R29vZ2xlIFRlc3QncyBfYnJlYWstb24tZmFpbHVyZV8gbW9kZSBzdXBwb3J0cyB0aGlzIGJlaGF2
aW9yLgorCitUbyBlbmFibGUgaXQsIHNldCB0aGUgYEdURVNUX0JSRUFLX09OX0ZBSUxVUkVgIGVu
dmlyb25tZW50IHZhcmlhYmxlIHRvIGEgdmFsdWUKK290aGVyIHRoYW4gYDBgIC4gQWx0ZXJuYXRp
dmVseSwgeW91IGNhbiB1c2UgdGhlIGAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVgCitjb21tYW5k
IGxpbmUgZmxhZy4KKworX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMj
IyBEaXNhYmxpbmcgQ2F0Y2hpbmcgVGVzdC1UaHJvd24gRXhjZXB0aW9ucyAjIyMKKworR29vZ2xl
IFRlc3QgY2FuIGJlIHVzZWQgZWl0aGVyIHdpdGggb3Igd2l0aG91dCBleGNlcHRpb25zIGVuYWJs
ZWQuICBJZgorYSB0ZXN0IHRocm93cyBhIEMrKyBleGNlcHRpb24gb3IgKG9uIFdpbmRvd3MpIGEg
c3RydWN0dXJlZCBleGNlcHRpb24KKyhTRUgpLCBieSBkZWZhdWx0IEdvb2dsZSBUZXN0IGNhdGNo
ZXMgaXQsIHJlcG9ydHMgaXQgYXMgYSB0ZXN0CitmYWlsdXJlLCBhbmQgY29udGludWVzIHdpdGgg
dGhlIG5leHQgdGVzdCBtZXRob2QuICBUaGlzIG1heGltaXplcyB0aGUKK2NvdmVyYWdlIG9mIGEg
dGVzdCBydW4uICBBbHNvLCBvbiBXaW5kb3dzIGFuIHVuY2F1Z2h0IGV4Y2VwdGlvbiB3aWxsCitj
YXVzZSBhIHBvcC11cCB3aW5kb3csIHNvIGNhdGNoaW5nIHRoZSBleGNlcHRpb25zIGFsbG93cyB5
b3UgdG8gcnVuCit0aGUgdGVzdHMgYXV0b21hdGljYWxseS4KKworV2hlbiBkZWJ1Z2dpbmcgdGhl
IHRlc3QgZmFpbHVyZXMsIGhvd2V2ZXIsIHlvdSBtYXkgaW5zdGVhZCB3YW50IHRoZQorZXhjZXB0
aW9ucyB0byBiZSBoYW5kbGVkIGJ5IHRoZSBkZWJ1Z2dlciwgc3VjaCB0aGF0IHlvdSBjYW4gZXhh
bWluZQordGhlIGNhbGwgc3RhY2sgd2hlbiBhbiBleGNlcHRpb24gaXMgdGhyb3duLiAgVG8gYWNo
aWV2ZSB0aGF0LCBzZXQgdGhlCitgR1RFU1RfQ0FUQ0hfRVhDRVBUSU9OU2AgZW52aXJvbm1lbnQg
dmFyaWFibGUgdG8gYDBgLCBvciB1c2UgdGhlCitgLS1ndGVzdF9jYXRjaF9leGNlcHRpb25zPTBg
IGZsYWcgd2hlbiBydW5uaW5nIHRoZSB0ZXN0cy4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgs
IFdpbmRvd3MsIE1hYy4KKworIyMjIExldHRpbmcgQW5vdGhlciBUZXN0aW5nIEZyYW1ld29yayBE
cml2ZSAjIyMKKworSWYgeW91IHdvcmsgb24gYSBwcm9qZWN0IHRoYXQgaGFzIGFscmVhZHkgYmVl
biB1c2luZyBhbm90aGVyIHRlc3RpbmcKK2ZyYW1ld29yayBhbmQgaXMgbm90IHJlYWR5IHRvIGNv
bXBsZXRlbHkgc3dpdGNoIHRvIEdvb2dsZSBUZXN0IHlldCwKK3lvdSBjYW4gZ2V0IG11Y2ggb2Yg
R29vZ2xlIFRlc3QncyBiZW5lZml0IGJ5IHVzaW5nIGl0cyBhc3NlcnRpb25zIGluCit5b3VyIGV4
aXN0aW5nIHRlc3RzLiAgSnVzdCBjaGFuZ2UgeW91ciBgbWFpbigpYCBmdW5jdGlvbiB0byBsb29r
CitsaWtlOgorCitgYGAKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHRocm93X29uX2Zh
aWx1cmUpID0gdHJ1ZTsKKyAgLy8gSW1wb3J0YW50OiBHb29nbGUgVGVzdCBtdXN0IGJlIGluaXRp
YWxpemVkLgorICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICAu
Li4gd2hhdGV2ZXIgeW91ciBleGlzdGluZyB0ZXN0aW5nIGZyYW1ld29yayByZXF1aXJlcyAuLi4K
K30KK2BgYAorCitXaXRoIHRoYXQsIHlvdSBjYW4gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMg
aW4gYWRkaXRpb24gdG8gdGhlCituYXRpdmUgYXNzZXJ0aW9ucyB5b3VyIHRlc3RpbmcgZnJhbWV3
b3JrIHByb3ZpZGVzLCBmb3IgZXhhbXBsZToKKworYGBgCit2b2lkIFRlc3RGb29Eb2VzQmFyKCkg
eworICBGb28gZm9vOworICBFWFBFQ1RfTEUoZm9vLkJhcigxKSwgMTAwKTsgICAgIC8vIEEgR29v
Z2xlIFRlc3QgYXNzZXJ0aW9uLgorICBDUFBVTklUX0FTU0VSVChmb28uSXNFbXB0eSgpKTsgIC8v
IEEgbmF0aXZlIGFzc2VydGlvbi4KK30KK2BgYAorCitJZiBhIEdvb2dsZSBUZXN0IGFzc2VydGlv
biBmYWlscywgaXQgd2lsbCBwcmludCBhbiBlcnJvciBtZXNzYWdlIGFuZAordGhyb3cgYW4gZXhj
ZXB0aW9uLCB3aGljaCB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBmYWlsdXJlIGJ5IHlvdXIgaG9zdAor
dGVzdGluZyBmcmFtZXdvcmsuICBJZiB5b3UgY29tcGlsZSB5b3VyIGNvZGUgd2l0aCBleGNlcHRp
b25zIGRpc2FibGVkLAorYSBmYWlsZWQgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIHdpbGwgaW5zdGVh
ZCBleGl0IHlvdXIgcHJvZ3JhbSB3aXRoIGEKK25vbi16ZXJvIGNvZGUsIHdoaWNoIHdpbGwgYWxz
byBzaWduYWwgYSB0ZXN0IGZhaWx1cmUgdG8geW91ciB0ZXN0CitydW5uZXIuCisKK0lmIHlvdSBk
b24ndCB3cml0ZSBgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1
ZTtgIGluCit5b3VyIGBtYWluKClgLCB5b3UgY2FuIGFsdGVybmF0aXZlbHkgZW5hYmxlIHRoaXMg
ZmVhdHVyZSBieSBzcGVjaWZ5aW5nCit0aGUgYC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZWAgZmxh
ZyBvbiB0aGUgY29tbWFuZC1saW5lIG9yIHNldHRpbmcgdGhlCitgR1RFU1RfVEhST1dfT05fRkFJ
TFVSRWAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSBub24temVybyB2YWx1ZS4KKworRGVhdGgg
dGVzdHMgYXJlIF9ub3RfIHN1cHBvcnRlZCB3aGVuIG90aGVyIHRlc3QgZnJhbWV3b3JrIGlzIHVz
ZWQgdG8gb3JnYW5pemUgdGVzdHMuCisKK19BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywg
TWFjOyBzaW5jZSB2MS4zLjAuCisKKyMjIERpc3RyaWJ1dGluZyBUZXN0IEZ1bmN0aW9ucyB0byBN
dWx0aXBsZSBNYWNoaW5lcyAjIworCitJZiB5b3UgaGF2ZSBtb3JlIHRoYW4gb25lIG1hY2hpbmUg
eW91IGNhbiB1c2UgdG8gcnVuIGEgdGVzdCBwcm9ncmFtLAoreW91IG1pZ2h0IHdhbnQgdG8gcnVu
IHRoZSB0ZXN0IGZ1bmN0aW9ucyBpbiBwYXJhbGxlbCBhbmQgZ2V0IHRoZQorcmVzdWx0IGZhc3Rl
ci4gIFdlIGNhbGwgdGhpcyB0ZWNobmlxdWUgX3NoYXJkaW5nXywgd2hlcmUgZWFjaCBtYWNoaW5l
CitpcyBjYWxsZWQgYSBfc2hhcmRfLgorCitHb29nbGUgVGVzdCBpcyBjb21wYXRpYmxlIHdpdGgg
dGVzdCBzaGFyZGluZy4gIFRvIHRha2UgYWR2YW50YWdlIG9mCit0aGlzIGZlYXR1cmUsIHlvdXIg
dGVzdCBydW5uZXIgKG5vdCBwYXJ0IG9mIEdvb2dsZSBUZXN0KSBuZWVkcyB0byBkbwordGhlIGZv
bGxvd2luZzoKKworICAxLiBBbGxvY2F0ZSBhIG51bWJlciBvZiBtYWNoaW5lcyAoc2hhcmRzKSB0
byBydW4gdGhlIHRlc3RzLgorICAxLiBPbiBlYWNoIHNoYXJkLCBzZXQgdGhlIGBHVEVTVF9UT1RB
TF9TSEFSRFNgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2hh
cmRzLiAgSXQgbXVzdCBiZSB0aGUgc2FtZSBmb3IgYWxsIHNoYXJkcy4KKyAgMS4gT24gZWFjaCBz
aGFyZCwgc2V0IHRoZSBgR1RFU1RfU0hBUkRfSU5ERVhgIGVudmlyb25tZW50IHZhcmlhYmxlIHRv
IHRoZSBpbmRleCBvZiB0aGUgc2hhcmQuICBEaWZmZXJlbnQgc2hhcmRzIG11c3QgYmUgYXNzaWdu
ZWQgZGlmZmVyZW50IGluZGljZXMsIHdoaWNoIG11c3QgYmUgaW4gdGhlIHJhbmdlIGBbMCwgR1RF
U1RfVE9UQUxfU0hBUkRTIC0gMV1gLgorICAxLiBSdW4gdGhlIHNhbWUgdGVzdCBwcm9ncmFtIG9u
IGFsbCBzaGFyZHMuICBXaGVuIEdvb2dsZSBUZXN0IHNlZXMgdGhlIGFib3ZlIHR3byBlbnZpcm9u
bWVudCB2YXJpYWJsZXMsIGl0IHdpbGwgc2VsZWN0IGEgc3Vic2V0IG9mIHRoZSB0ZXN0IGZ1bmN0
aW9ucyB0byBydW4uICBBY3Jvc3MgYWxsIHNoYXJkcywgZWFjaCB0ZXN0IGZ1bmN0aW9uIGluIHRo
ZSBwcm9ncmFtIHdpbGwgYmUgcnVuIGV4YWN0bHkgb25jZS4KKyAgMS4gV2FpdCBmb3IgYWxsIHNo
YXJkcyB0byBmaW5pc2gsIHRoZW4gY29sbGVjdCBhbmQgcmVwb3J0IHRoZSByZXN1bHRzLgorCitZ
b3VyIHByb2plY3QgbWF5IGhhdmUgdGVzdHMgdGhhdCB3ZXJlIHdyaXR0ZW4gd2l0aG91dCBHb29n
bGUgVGVzdCBhbmQKK3RodXMgZG9uJ3QgdW5kZXJzdGFuZCB0aGlzIHByb3RvY29sLiAgSW4gb3Jk
ZXIgZm9yIHlvdXIgdGVzdCBydW5uZXIgdG8KK2ZpZ3VyZSBvdXQgd2hpY2ggdGVzdCBzdXBwb3J0
cyBzaGFyZGluZywgaXQgY2FuIHNldCB0aGUgZW52aXJvbm1lbnQKK3ZhcmlhYmxlIGBHVEVTVF9T
SEFSRF9TVEFUVVNfRklMRWAgdG8gYSBub24tZXhpc3RlbnQgZmlsZSBwYXRoLiAgSWYgYQordGVz
dCBwcm9ncmFtIHN1cHBvcnRzIHNoYXJkaW5nLCBpdCB3aWxsIGNyZWF0ZSB0aGlzIGZpbGUgdG8K
K2Fja25vd2xlZGdlIHRoZSBmYWN0ICh0aGUgYWN0dWFsIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGFy
ZSBub3QKK2ltcG9ydGFudCBhdCB0aGlzIHRpbWU7IGFsdGhvdWdoIHdlIG1heSBzdGljayBzb21l
IHVzZWZ1bCBpbmZvcm1hdGlvbgoraW4gaXQgaW4gdGhlIGZ1dHVyZS4pOyBvdGhlcndpc2UgaXQg
d2lsbCBub3QgY3JlYXRlIGl0LgorCitIZXJlJ3MgYW4gZXhhbXBsZSB0byBtYWtlIGl0IGNsZWFy
LiAgU3VwcG9zZSB5b3UgaGF2ZSBhIHRlc3QgcHJvZ3JhbQorYGZvb190ZXN0YCB0aGF0IGNvbnRh
aW5zIHRoZSBmb2xsb3dpbmcgNSB0ZXN0IGZ1bmN0aW9uczoKK2BgYAorVEVTVChBLCBWKQorVEVT
VChBLCBXKQorVEVTVChCLCBYKQorVEVTVChCLCBZKQorVEVTVChCLCBaKQorYGBgCithbmQgeW91
IGhhdmUgMyBtYWNoaW5lcyBhdCB5b3VyIGRpc3Bvc2FsLiAgVG8gcnVuIHRoZSB0ZXN0IGZ1bmN0
aW9ucyBpbgorcGFyYWxsZWwsIHlvdSB3b3VsZCBzZXQgYEdURVNUX1RPVEFMX1NIQVJEU2AgdG8g
MyBvbiBhbGwgbWFjaGluZXMsIGFuZAorc2V0IGBHVEVTVF9TSEFSRF9JTkRFWGAgdG8gMCwgMSwg
YW5kIDIgb24gdGhlIG1hY2hpbmVzIHJlc3BlY3RpdmVseS4KK1RoZW4geW91IHdvdWxkIHJ1biB0
aGUgc2FtZSBgZm9vX3Rlc3RgIG9uIGVhY2ggbWFjaGluZS4KKworR29vZ2xlIFRlc3QgcmVzZXJ2
ZXMgdGhlIHJpZ2h0IHRvIGNoYW5nZSBob3cgdGhlIHdvcmsgaXMgZGlzdHJpYnV0ZWQKK2Fjcm9z
cyB0aGUgc2hhcmRzLCBidXQgaGVyZSdzIG9uZSBwb3NzaWJsZSBzY2VuYXJpbzoKKworICAqIE1h
Y2hpbmUgIzAgcnVucyBgQS5WYCBhbmQgYEIuWGAuCisgICogTWFjaGluZSAjMSBydW5zIGBBLldg
IGFuZCBgQi5ZYC4KKyAgKiBNYWNoaW5lICMyIHJ1bnMgYEIuWmAuCisKK19BdmFpbGFiaWxpdHk6
XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuMy4wLgorCisjIEZ1c2luZyBH
b29nbGUgVGVzdCBTb3VyY2UgRmlsZXMgIworCitHb29nbGUgVGVzdCdzIGltcGxlbWVudGF0aW9u
IGNvbnNpc3RzIG9mIH4zMCBmaWxlcyAoZXhjbHVkaW5nIGl0cyBvd24KK3Rlc3RzKS4gIFNvbWV0
aW1lcyB5b3UgbWF5IHdhbnQgdGhlbSB0byBiZSBwYWNrYWdlZCB1cCBpbiB0d28gZmlsZXMgKGEK
K2AuaGAgYW5kIGEgYC5jY2ApIGluc3RlYWQsIHN1Y2ggdGhhdCB5b3UgY2FuIGVhc2lseSBjb3B5
IHRoZW0gdG8gYSBuZXcKK21hY2hpbmUgYW5kIHN0YXJ0IGhhY2tpbmcgdGhlcmUuICBGb3IgdGhp
cyB3ZSBwcm92aWRlIGFuIGV4cGVyaW1lbnRhbAorUHl0aG9uIHNjcmlwdCBgZnVzZV9ndGVzdF9m
aWxlcy5weWAgaW4gdGhlIGBzY3JpcHRzL2AgZGlyZWN0b3J5IChzaW5jZSByZWxlYXNlIDEuMy4w
KS4KK0Fzc3VtaW5nIHlvdSBoYXZlIFB5dGhvbiAyLjQgb3IgYWJvdmUgaW5zdGFsbGVkIG9uIHlv
dXIgbWFjaGluZSwganVzdAorZ28gdG8gdGhhdCBkaXJlY3RvcnkgYW5kIHJ1bgorYGBgCitweXRo
b24gZnVzZV9ndGVzdF9maWxlcy5weSBPVVRQVVRfRElSCitgYGAKKworYW5kIHlvdSBzaG91bGQg
c2VlIGFuIGBPVVRQVVRfRElSYCBkaXJlY3RvcnkgYmVpbmcgY3JlYXRlZCB3aXRoIGZpbGVzCitg
Z3Rlc3QvZ3Rlc3QuaGAgYW5kIGBndGVzdC9ndGVzdC1hbGwuY2NgIGluIGl0LiAgVGhlc2UgZmls
ZXMgY29udGFpbgorZXZlcnl0aGluZyB5b3UgbmVlZCB0byB1c2UgR29vZ2xlIFRlc3QuICBKdXN0
IGNvcHkgdGhlbSB0byBhbnl3aGVyZQoreW91IHdhbnQgYW5kIHlvdSBhcmUgcmVhZHkgdG8gd3Jp
dGUgdGVzdHMuICBZb3UgY2FuIHVzZSB0aGUKK1tzY3JpcHRzL3Rlc3QvTWFrZWZpbGVdKC4uL3Nj
cmlwdHMvdGVzdC9NYWtlZmlsZSkKK2ZpbGUgYXMgYW4gZXhhbXBsZSBvbiBob3cgdG8gY29tcGls
ZSB5b3VyIHRlc3RzIGFnYWluc3QgdGhlbS4KKworIyBXaGVyZSB0byBHbyBmcm9tIEhlcmUgIwor
CitDb25ncmF0dWxhdGlvbnMhIFlvdSd2ZSBub3cgbGVhcm5lZCBtb3JlIGFkdmFuY2VkIEdvb2ds
ZSBUZXN0IHRvb2xzIGFuZCBhcmUKK3JlYWR5IHRvIHRhY2tsZSBtb3JlIGNvbXBsZXggdGVzdGlu
ZyB0YXNrcy4gSWYgeW91IHdhbnQgdG8gZGl2ZSBldmVuIGRlZXBlciwgeW91CitjYW4gcmVhZCB0
aGUgW0ZyZXF1ZW50bHktQXNrZWQgUXVlc3Rpb25zXShWMV83X0ZBUS5tZCkuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzdfRG9jdW1lbnRhdGlvbi5tZCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfN19Eb2N1bWVudGF0aW9uLm1kCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI4MjY5N2E1MGI5YWFhZDFkMDRmYjRhZTNmZjkwY2E3MTA0MmJhYTMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1YxXzdfRG9jdW1lbnRhdGlvbi5t
ZApAQCAtMCwwICsxLDE0IEBACitUaGlzIHBhZ2UgbGlzdHMgYWxsIGRvY3VtZW50YXRpb24gd2lr
aSBwYWdlcyBmb3IgR29vZ2xlIFRlc3QgKioodGhlIFNWTiB0cnVuayB2ZXJzaW9uKSoqCistLSAq
KmlmIHlvdSB1c2UgYSByZWxlYXNlZCB2ZXJzaW9uIG9mIEdvb2dsZSBUZXN0LCBwbGVhc2UgcmVh
ZCB0aGUKK2RvY3VtZW50YXRpb24gZm9yIHRoYXQgc3BlY2lmaWMgdmVyc2lvbiBpbnN0ZWFkLioq
CisKKyAgKiBbUHJpbWVyXShWMV83X1ByaW1lci5tZCkgLS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJl
IG5ldyB0byBHb29nbGUgVGVzdC4KKyAgKiBbU2FtcGxlc10oVjFfN19TYW1wbGVzLm1kKSAtLSBs
ZWFybiBmcm9tIGV4YW1wbGVzLgorICAqIFtBZHZhbmNlZEd1aWRlXShWMV83X0FkdmFuY2VkR3Vp
ZGUubWQpIC0tIGxlYXJuIG1vcmUgYWJvdXQgR29vZ2xlIFRlc3QuCisgICogW1hjb2RlR3VpZGVd
KFYxXzdfWGNvZGVHdWlkZS5tZCkgLS0gaG93IHRvIHVzZSBHb29nbGUgVGVzdCBpbiBYY29kZSBv
biBNYWMuCisgICogW0ZyZXF1ZW50bHktQXNrZWQgUXVlc3Rpb25zXShWMV83X0ZBUS5tZCkgLS0g
Y2hlY2sgaGVyZSBiZWZvcmUgYXNraW5nIGEgcXVlc3Rpb24gb24gdGhlIG1haWxpbmcgbGlzdC4K
KworVG8gY29udHJpYnV0ZSBjb2RlIHRvIEdvb2dsZSBUZXN0LCByZWFkOgorCisgICogW0Rldkd1
aWRlXShEZXZHdWlkZS5tZCkgLS0gcmVhZCB0aGlzIF9iZWZvcmVfIHdyaXRpbmcgeW91ciBmaXJz
dCBwYXRjaC4KKyAgKiBbUHVtcE1hbnVhbF0oVjFfN19QdW1wTWFudWFsLm1kKSAtLSBob3cgd2Ug
Z2VuZXJhdGUgc29tZSBvZiBHb29nbGUgVGVzdCdzIHNvdXJjZSBmaWxlcy4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2Nz
L1YxXzdfRkFRLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV83X0ZBUS5tZApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zZGQ5MTRkY2YxNmFlMzQyMDhlMDkwOGQxNmNiOTMzMjQxMzIwNmYwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV83X0ZBUS5tZApA
QCAtMCwwICsxLDEwODIgQEAKKworCitJZiB5b3UgY2Fubm90IGZpbmQgdGhlIGFuc3dlciB0byB5
b3VyIHF1ZXN0aW9uIGhlcmUsIGFuZCB5b3UgaGF2ZSByZWFkCitbUHJpbWVyXShWMV83X1ByaW1l
ci5tZCkgYW5kIFtBZHZhbmNlZEd1aWRlXShWMV83X0FkdmFuY2VkR3VpZGUubWQpLCBzZW5kIGl0
IHRvCitnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20uCisKKyMjIFdoeSBzaG91
bGQgSSB1c2UgR29vZ2xlIFRlc3QgaW5zdGVhZCBvZiBteSBmYXZvcml0ZSBDKysgdGVzdGluZyBm
cmFtZXdvcms/ICMjCisKK0ZpcnN0LCBsZXQgdXMgc2F5IGNsZWFybHkgdGhhdCB3ZSBkb24ndCB3
YW50IHRvIGdldCBpbnRvIHRoZSBkZWJhdGUgb2YKK3doaWNoIEMrKyB0ZXN0aW5nIGZyYW1ld29y
ayBpcyAqKnRoZSBiZXN0KiouICBUaGVyZSBleGlzdCBtYW55IGZpbmUKK2ZyYW1ld29ya3MgZm9y
IHdyaXRpbmcgQysrIHRlc3RzLCBhbmQgd2UgaGF2ZSB0cmVtZW5kb3VzIHJlc3BlY3QgZm9yCit0
aGUgZGV2ZWxvcGVycyBhbmQgdXNlcnMgb2YgdGhlbS4gIFdlIGRvbid0IHRoaW5rIHRoZXJlIGlz
IChvciB3aWxsCitiZSkgYSBzaW5nbGUgYmVzdCBmcmFtZXdvcmsgLSB5b3UgaGF2ZSB0byBwaWNr
IHRoZSByaWdodCB0b29sIGZvciB0aGUKK3BhcnRpY3VsYXIgdGFzayB5b3UgYXJlIHRhY2tsaW5n
LgorCitXZSBjcmVhdGVkIEdvb2dsZSBUZXN0IGJlY2F1c2Ugd2UgY291bGRuJ3QgZmluZCB0aGUg
cmlnaHQgY29tYmluYXRpb24KK29mIGZlYXR1cmVzIGFuZCBjb252ZW5pZW5jZXMgaW4gYW4gZXhp
c3RpbmcgZnJhbWV3b3JrIHRvIHNhdGlzZnkgX291cl8KK25lZWRzLiAgVGhlIGZvbGxvd2luZyBp
cyBhIGxpc3Qgb2YgdGhpbmdzIHRoYXQgX3dlXyBsaWtlIGFib3V0IEdvb2dsZQorVGVzdC4gIFdl
IGRvbid0IGNsYWltIHRoZW0gdG8gYmUgdW5pcXVlIHRvIEdvb2dsZSBUZXN0IC0gcmF0aGVyLCB0
aGUKK2NvbWJpbmF0aW9uIG9mIHRoZW0gbWFrZXMgR29vZ2xlIFRlc3QgdGhlIGNob2ljZSBmb3Ig
dXMuICBXZSBob3BlIHRoaXMKK2xpc3QgY2FuIGhlbHAgeW91IGRlY2lkZSB3aGV0aGVyIGl0IGlz
IGZvciB5b3UgdG9vLgorCisgICogR29vZ2xlIFRlc3QgaXMgZGVzaWduZWQgdG8gYmUgcG9ydGFi
bGU6IGl0IGRvZXNuJ3QgcmVxdWlyZSBleGNlcHRpb25zIG9yIFJUVEk7IGl0IHdvcmtzIGFyb3Vu
ZCB2YXJpb3VzIGJ1Z3MgaW4gdmFyaW91cyBjb21waWxlcnMgYW5kIGVudmlyb25tZW50czsgZXRj
LiAgQXMgYSByZXN1bHQsIGl0IHdvcmtzIG9uIExpbnV4LCBNYWMgT1MgWCwgV2luZG93cyBhbmQg
c2V2ZXJhbCBlbWJlZGRlZCBvcGVyYXRpbmcgc3lzdGVtcy4KKyAgKiBOb25mYXRhbCBhc3NlcnRp
b25zIChgRVhQRUNUXypgKSBoYXZlIHByb3ZlbiB0byBiZSBncmVhdCB0aW1lIHNhdmVycywgYXMg
dGhleSBhbGxvdyBhIHRlc3QgdG8gcmVwb3J0IG11bHRpcGxlIGZhaWx1cmVzIGluIGEgc2luZ2xl
IGVkaXQtY29tcGlsZS10ZXN0IGN5Y2xlLgorICAqIEl0J3MgZWFzeSB0byB3cml0ZSBhc3NlcnRp
b25zIHRoYXQgZ2VuZXJhdGUgaW5mb3JtYXRpdmUgbWVzc2FnZXM6IHlvdSBqdXN0IHVzZSB0aGUg
c3RyZWFtIHN5bnRheCB0byBhcHBlbmQgYW55IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24sIGUuZy4g
YEFTU0VSVF9FUSg1LCBGb28oaSkpIDw8ICIgd2hlcmUgaSA9ICIgPDwgaTtgLiAgSXQgZG9lc24n
dCByZXF1aXJlIGEgbmV3IHNldCBvZiBtYWNyb3Mgb3Igc3BlY2lhbCBmdW5jdGlvbnMuCisgICog
R29vZ2xlIFRlc3QgYXV0b21hdGljYWxseSBkZXRlY3RzIHlvdXIgdGVzdHMgYW5kIGRvZXNuJ3Qg
cmVxdWlyZSB5b3UgdG8gZW51bWVyYXRlIHRoZW0gaW4gb3JkZXIgdG8gcnVuIHRoZW0uCisgICog
RGVhdGggdGVzdHMgYXJlIHByZXR0eSBoYW5keSBmb3IgZW5zdXJpbmcgdGhhdCB5b3VyIGFzc2Vy
dHMgaW4gcHJvZHVjdGlvbiBjb2RlIGFyZSB0cmlnZ2VyZWQgYnkgdGhlIHJpZ2h0IGNvbmRpdGlv
bnMuCisgICogYFNDT1BFRF9UUkFDRWAgaGVscHMgeW91IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQg
b2YgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgd2hlbiBpdCBjb21lcyBmcm9tIGluc2lkZSBhIHN1Yi1y
b3V0aW5lIG9yIGxvb3AuCisgICogWW91IGNhbiBkZWNpZGUgd2hpY2ggdGVzdHMgdG8gcnVuIHVz
aW5nIG5hbWUgcGF0dGVybnMuICBUaGlzIHNhdmVzIHRpbWUgd2hlbiB5b3Ugd2FudCB0byBxdWlj
a2x5IHJlcHJvZHVjZSBhIHRlc3QgZmFpbHVyZS4KKyAgKiBHb29nbGUgVGVzdCBjYW4gZ2VuZXJh
dGUgWE1MIHRlc3QgcmVzdWx0IHJlcG9ydHMgdGhhdCBjYW4gYmUgcGFyc2VkIGJ5IHBvcHVsYXIg
Y29udGludW91cyBidWlsZCBzeXN0ZW0gbGlrZSBIdWRzb24uCisgICogU2ltcGxlIHRoaW5ncyBh
cmUgZWFzeSBpbiBHb29nbGUgVGVzdCwgd2hpbGUgaGFyZCB0aGluZ3MgYXJlIHBvc3NpYmxlOiBp
biBhZGRpdGlvbiB0byBhZHZhbmNlZCBmZWF0dXJlcyBsaWtlIFtnbG9iYWwgdGVzdCBlbnZpcm9u
bWVudHNdKFYxXzdfQWR2YW5jZWRHdWlkZS5tZCNnbG9iYWwtc2V0LXVwLWFuZC10ZWFyLWRvd24p
IGFuZCB0ZXN0cyBwYXJhbWV0ZXJpemVkIGJ5IFt2YWx1ZXNdKFYxXzdfQWR2YW5jZWRHdWlkZS5t
ZCN2YWx1ZS1wYXJhbWV0ZXJpemVkLXRlc3RzKSBvciBbdHlwZXNdKFYxXzdfQWR2YW5jZWRHdWlk
ZS5tZCN0eXBlZC10ZXN0cyksIEdvb2dsZSBUZXN0IHN1cHBvcnRzIHZhcmlvdXMgd2F5cyBmb3Ig
dGhlIHVzZXIgdG8gZXh0ZW5kIHRoZSBmcmFtZXdvcmsgLS0gaWYgR29vZ2xlIFRlc3QgZG9lc24n
dCBkbyBzb21ldGhpbmcgb3V0IG9mIHRoZSBib3gsIGNoYW5jZXMgYXJlIHRoYXQgYSB1c2VyIGNh
biBpbXBsZW1lbnQgdGhlIGZlYXR1cmUgdXNpbmcgR29vZ2xlIFRlc3QncyBwdWJsaWMgQVBJLCB3
aXRob3V0IGNoYW5naW5nIEdvb2dsZSBUZXN0IGl0c2VsZi4gIEluIHBhcnRpY3VsYXIsIHlvdSBj
YW46CisgICAgKiBleHBhbmQgeW91ciB0ZXN0aW5nIHZvY2FidWxhcnkgYnkgZGVmaW5pbmcgW2N1
c3RvbSBwcmVkaWNhdGVzXShWMV83X0FkdmFuY2VkR3VpZGUubWQjcHJlZGljYXRlLWFzc2VydGlv
bnMtZm9yLWJldHRlci1lcnJvci1tZXNzYWdlcyksCisgICAgKiB0ZWFjaCBHb29nbGUgVGVzdCBo
b3cgdG8gW3ByaW50IHlvdXIgdHlwZXNdKFYxXzdfQWR2YW5jZWRHdWlkZS5tZCN0ZWFjaGluZy1n
b29nbGUtdGVzdC1ob3ctdG8tcHJpbnQteW91ci12YWx1ZXMpLAorICAgICogZGVmaW5lIHlvdXIg
b3duIHRlc3RpbmcgbWFjcm9zIG9yIHV0aWxpdGllcyBhbmQgdmVyaWZ5IHRoZW0gdXNpbmcgR29v
Z2xlIFRlc3QncyBbU2VydmljZSBQcm92aWRlciBJbnRlcmZhY2VdKFYxXzdfQWR2YW5jZWRHdWlk
ZS5tZCNjYXRjaGluZy1mYWlsdXJlcyksIGFuZAorICAgICogcmVmbGVjdCBvbiB0aGUgdGVzdCBj
YXNlcyBvciBjaGFuZ2UgdGhlIHRlc3Qgb3V0cHV0IGZvcm1hdCBieSBpbnRlcmNlcHRpbmcgdGhl
IFt0ZXN0IGV2ZW50c10oVjFfN19BZHZhbmNlZEd1aWRlLm1kI2V4dGVuZGluZy1nb29nbGUtdGVz
dC1ieS1oYW5kbGluZy10ZXN0LWV2ZW50cykuCisKKyMjIEknbSBnZXR0aW5nIHdhcm5pbmdzIHdo
ZW4gY29tcGlsaW5nIEdvb2dsZSBUZXN0LiAgV291bGQgeW91IGZpeCB0aGVtPyAjIworCitXZSBz
dHJpdmUgdG8gbWluaW1pemUgY29tcGlsZXIgd2FybmluZ3MgR29vZ2xlIFRlc3QgZ2VuZXJhdGVz
LiAgQmVmb3JlIHJlbGVhc2luZyBhIG5ldyB2ZXJzaW9uLCB3ZSB0ZXN0IHRvIG1ha2Ugc3VyZSB0
aGF0IGl0IGRvZXNuJ3QgZ2VuZXJhdGUgd2FybmluZ3Mgd2hlbiBjb21waWxlZCB1c2luZyBpdHMg
Q01ha2Ugc2NyaXB0IG9uIFdpbmRvd3MsIExpbnV4LCBhbmQgTWFjIE9TLgorCitVbmZvcnR1bmF0
ZWx5LCB0aGlzIGRvZXNuJ3QgbWVhbiB5b3UgYXJlIGd1YXJhbnRlZWQgdG8gc2VlIG5vIHdhcm5p
bmdzIHdoZW4gY29tcGlsaW5nIEdvb2dsZSBUZXN0IGluIHlvdXIgZW52aXJvbm1lbnQ6CisKKyAg
KiBZb3UgbWF5IGJlIHVzaW5nIGEgZGlmZmVyZW50IGNvbXBpbGVyIGFzIHdlIHVzZSwgb3IgYSBk
aWZmZXJlbnQgdmVyc2lvbiBvZiB0aGUgc2FtZSBjb21waWxlci4gIFdlIGNhbm5vdCBwb3NzaWJs
eSB0ZXN0IGZvciBhbGwgY29tcGlsZXJzLgorICAqIFlvdSBtYXkgYmUgY29tcGlsaW5nIG9uIGEg
ZGlmZmVyZW50IHBsYXRmb3JtIGFzIHdlIGRvLgorICAqIFlvdXIgcHJvamVjdCBtYXkgYmUgdXNp
bmcgZGlmZmVyZW50IGNvbXBpbGVyIGZsYWdzIGFzIHdlIGRvLgorCitJdCBpcyBub3QgYWx3YXlz
IHBvc3NpYmxlIHRvIG1ha2UgR29vZ2xlIFRlc3Qgd2FybmluZy1mcmVlIGZvciBldmVyeW9uZS4g
IE9yLCBpdCBtYXkgbm90IGJlIGRlc2lyYWJsZSBpZiB0aGUgd2FybmluZyBpcyByYXJlbHkgZW5h
YmxlZCBhbmQgZml4aW5nIHRoZSB2aW9sYXRpb25zIG1ha2VzIHRoZSBjb2RlIG1vcmUgY29tcGxl
eC4KKworSWYgeW91IHNlZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZyBHb29nbGUgVGVzdCwgd2Ug
c3VnZ2VzdCB0aGF0IHlvdSB1c2UgdGhlIGAtaXN5c3RlbWAgZmxhZyAoYXNzdW1pbmcgeW91ciBh
cmUgdXNpbmcgR0NDKSB0byBtYXJrIEdvb2dsZSBUZXN0IGhlYWRlcnMgYXMgc3lzdGVtIGhlYWRl
cnMuICBUaGF0J2xsIHN1cHByZXNzIHdhcm5pbmdzIGZyb20gR29vZ2xlIFRlc3QgaGVhZGVycy4K
KworIyMgV2h5IHNob3VsZCBub3QgdGVzdCBjYXNlIG5hbWVzIGFuZCB0ZXN0IG5hbWVzIGNvbnRh
aW4gdW5kZXJzY29yZT8gIyMKKworVW5kZXJzY29yZSAoYF9gKSBpcyBzcGVjaWFsLCBhcyBDKysg
cmVzZXJ2ZXMgdGhlIGZvbGxvd2luZyB0byBiZSB1c2VkIGJ5Cit0aGUgY29tcGlsZXIgYW5kIHRo
ZSBzdGFuZGFyZCBsaWJyYXJ5OgorCisgIDEuIGFueSBpZGVudGlmaWVyIHRoYXQgc3RhcnRzIHdp
dGggYW4gYF9gIGZvbGxvd2VkIGJ5IGFuIHVwcGVyLWNhc2UgbGV0dGVyLCBhbmQKKyAgMS4gYW55
IGlkZW50aWZpZXIgdGhhdCBjb250YWluZXJzIHR3byBjb25zZWN1dGl2ZSB1bmRlcnNjb3JlcyAo
aS5lLiBgX19gKSBfYW55d2hlcmVfIGluIGl0cyBuYW1lLgorCitVc2VyIGNvZGUgaXMgX3Byb2hp
Yml0ZWRfIGZyb20gdXNpbmcgc3VjaCBpZGVudGlmaWVycy4KKworTm93IGxldCdzIGxvb2sgYXQg
d2hhdCB0aGlzIG1lYW5zIGZvciBgVEVTVGAgYW5kIGBURVNUX0ZgLgorCitDdXJyZW50bHkgYFRF
U1QoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSlgIGdlbmVyYXRlcyBhIGNsYXNzIG5hbWVkCitgVGVz
dENhc2VOYW1lX1Rlc3ROYW1lX1Rlc3RgLiAgV2hhdCBoYXBwZW5zIGlmIGBUZXN0Q2FzZU5hbWVg
IG9yIGBUZXN0TmFtZWAKK2NvbnRhaW5zIGBfYD8KKworICAxLiBJZiBgVGVzdENhc2VOYW1lYCBz
dGFydHMgd2l0aCBhbiBgX2AgZm9sbG93ZWQgYnkgYW4gdXBwZXItY2FzZSBsZXR0ZXIgKHNheSwg
YF9Gb29gKSwgd2UgZW5kIHVwIHdpdGggYF9Gb29fVGVzdE5hbWVfVGVzdGAsIHdoaWNoIGlzIHJl
c2VydmVkIGFuZCB0aHVzIGludmFsaWQuCisgIDEuIElmIGBUZXN0Q2FzZU5hbWVgIGVuZHMgd2l0
aCBhbiBgX2AgKHNheSwgYEZvb19gKSwgd2UgZ2V0IGBGb29fX1Rlc3ROYW1lX1Rlc3RgLCB3aGlj
aCBpcyBpbnZhbGlkLgorICAxLiBJZiBgVGVzdE5hbWVgIHN0YXJ0cyB3aXRoIGFuIGBfYCAoc2F5
LCBgX0JhcmApLCB3ZSBnZXQgYFRlc3RDYXNlTmFtZV9fQmFyX1Rlc3RgLCB3aGljaCBpcyBpbnZh
bGlkLgorICAxLiBJZiBgVGVzdE5hbWVgIGVuZHMgd2l0aCBhbiBgX2AgKHNheSwgYEJhcl9gKSwg
d2UgZ2V0IGBUZXN0Q2FzZU5hbWVfQmFyX19UZXN0YCwgd2hpY2ggaXMgaW52YWxpZC4KKworU28g
Y2xlYXJseSBgVGVzdENhc2VOYW1lYCBhbmQgYFRlc3ROYW1lYCBjYW5ub3Qgc3RhcnQgb3IgZW5k
IHdpdGggYF9gCisoQWN0dWFsbHksIGBUZXN0Q2FzZU5hbWVgIGNhbiBzdGFydCB3aXRoIGBfYCAt
LSBhcyBsb25nIGFzIHRoZSBgX2AgaXNuJ3QKK2ZvbGxvd2VkIGJ5IGFuIHVwcGVyLWNhc2UgbGV0
dGVyLiAgQnV0IHRoYXQncyBnZXR0aW5nIGNvbXBsaWNhdGVkLiAgU28KK2ZvciBzaW1wbGljaXR5
IHdlIGp1c3Qgc2F5IHRoYXQgaXQgY2Fubm90IHN0YXJ0IHdpdGggYF9gLikuCisKK0l0IG1heSBz
ZWVtIGZpbmUgZm9yIGBUZXN0Q2FzZU5hbWVgIGFuZCBgVGVzdE5hbWVgIHRvIGNvbnRhaW4gYF9g
IGluIHRoZQorbWlkZGxlLiAgSG93ZXZlciwgY29uc2lkZXIgdGhpczoKK2BgYAorVEVTVChUaW1l
LCBGbGllc19MaWtlX0FuX0Fycm93KSB7IC4uLiB9CitURVNUKFRpbWVfRmxpZXMsIExpa2VfQW5f
QXJyb3cpIHsgLi4uIH0KK2BgYAorCitOb3csIHRoZSB0d28gYFRFU1RgcyB3aWxsIGJvdGggZ2Vu
ZXJhdGUgdGhlIHNhbWUgY2xhc3MKKyhgVGltZV9GaWxlc19MaWtlX0FuX0Fycm93X1Rlc3RgKS4g
IFRoYXQncyBub3QgZ29vZC4KKworU28gZm9yIHNpbXBsaWNpdHksIHdlIGp1c3QgYXNrIHRoZSB1
c2VycyB0byBhdm9pZCBgX2AgaW4gYFRlc3RDYXNlTmFtZWAKK2FuZCBgVGVzdE5hbWVgLiAgVGhl
IHJ1bGUgaXMgbW9yZSBjb25zdHJhaW5pbmcgdGhhbiBuZWNlc3NhcnksIGJ1dCBpdCdzCitzaW1w
bGUgYW5kIGVhc3kgdG8gcmVtZW1iZXIuICBJdCBhbHNvIGdpdmVzIEdvb2dsZSBUZXN0IHNvbWUg
d2lnZ2xlCityb29tIGluIGNhc2UgaXRzIGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIGNoYW5nZSBp
biB0aGUgZnV0dXJlLgorCitJZiB5b3UgdmlvbGF0ZSB0aGUgcnVsZSwgdGhlcmUgbWF5IG5vdCBi
ZSBpbW1lZGlhdGVseSBjb25zZXF1ZW5jZXMsCitidXQgeW91ciB0ZXN0IG1heSAoanVzdCBtYXkp
IGJyZWFrIHdpdGggYSBuZXcgY29tcGlsZXIgKG9yIGEgbmV3Cit2ZXJzaW9uIG9mIHRoZSBjb21w
aWxlciB5b3UgYXJlIHVzaW5nKSBvciB3aXRoIGEgbmV3IHZlcnNpb24gb2YgR29vZ2xlCitUZXN0
LiAgVGhlcmVmb3JlIGl0J3MgYmVzdCB0byBmb2xsb3cgdGhlIHJ1bGUuCisKKyMjIFdoeSBpcyBp
dCBub3QgcmVjb21tZW5kZWQgdG8gaW5zdGFsbCBhIHByZS1jb21waWxlZCBjb3B5IG9mIEdvb2ds
ZSBUZXN0IChmb3IgZXhhbXBsZSwgaW50byAvdXNyL2xvY2FsKT8gIyMKKworSW4gdGhlIGVhcmx5
IGRheXMsIHdlIHNhaWQgdGhhdCB5b3UgY291bGQgaW5zdGFsbAorY29tcGlsZWQgR29vZ2xlIFRl
c3QgbGlicmFyaWVzIG9uIGAqYG5peCBzeXN0ZW1zIHVzaW5nIGBtYWtlIGluc3RhbGxgLgorVGhl
biBldmVyeSB1c2VyIG9mIHlvdXIgbWFjaGluZSBjYW4gd3JpdGUgdGVzdHMgd2l0aG91dAorcmVj
b21waWxpbmcgR29vZ2xlIFRlc3QuCisKK1RoaXMgc2VlbWVkIGxpa2UgYSBnb29kIGlkZWEsIGJ1
dCBpdCBoYXMgYQorZ290LWNoYTogZXZlcnkgdXNlciBuZWVkcyB0byBjb21waWxlIGhpcyB0ZXN0
cyB1c2luZyB0aGUgX3NhbWVfIGNvbXBpbGVyCitmbGFncyB1c2VkIHRvIGNvbXBpbGUgdGhlIGlu
c3RhbGxlZCBHb29nbGUgVGVzdCBsaWJyYXJpZXM7IG90aGVyd2lzZQoraGUgbWF5IHJ1biBpbnRv
IHVuZGVmaW5lZCBiZWhhdmlvcnMgKGkuZS4gdGhlIHRlc3RzIGNhbiBiZWhhdmUKK3N0cmFuZ2Vs
eSBhbmQgbWF5IGV2ZW4gY3Jhc2ggZm9yIG5vIG9idmlvdXMgcmVhc29ucykuCisKK1doeT8gIEJl
Y2F1c2UgQysrIGhhcyB0aGlzIHRoaW5nIGNhbGxlZCB0aGUgT25lLURlZmluaXRpb24gUnVsZTog
aWYKK3R3byBDKysgc291cmNlIGZpbGVzIGNvbnRhaW4gZGlmZmVyZW50IGRlZmluaXRpb25zIG9m
IHRoZSBzYW1lCitjbGFzcy9mdW5jdGlvbi92YXJpYWJsZSwgYW5kIHlvdSBsaW5rIHRoZW0gdG9n
ZXRoZXIsIHlvdSB2aW9sYXRlIHRoZQorcnVsZS4gIFRoZSBsaW5rZXIgbWF5IG9yIG1heSBub3Qg
Y2F0Y2ggdGhlIGVycm9yIChpbiBtYW55IGNhc2VzIGl0J3MKK25vdCByZXF1aXJlZCBieSB0aGUg
QysrIHN0YW5kYXJkIHRvIGNhdGNoIHRoZSB2aW9sYXRpb24pLiAgSWYgaXQKK2RvZXNuJ3QsIHlv
dSBnZXQgc3RyYW5nZSBydW4tdGltZSBiZWhhdmlvcnMgdGhhdCBhcmUgdW5leHBlY3RlZCBhbmQK
K2hhcmQgdG8gZGVidWcuCisKK0lmIHlvdSBjb21waWxlIEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRl
c3QgY29kZSB1c2luZyBkaWZmZXJlbnQgY29tcGlsZXIKK2ZsYWdzLCB0aGV5IG1heSBzZWUgZGlm
ZmVyZW50IGRlZmluaXRpb25zIG9mIHRoZSBzYW1lCitjbGFzcy9mdW5jdGlvbi92YXJpYWJsZSAo
ZS5nLiBkdWUgdG8gdGhlIHVzZSBvZiBgI2lmYCBpbiBHb29nbGUgVGVzdCkuCitUaGVyZWZvcmUs
IGZvciB5b3VyIHNhbml0eSwgd2UgcmVjb21tZW5kIHRvIGF2b2lkIGluc3RhbGxpbmcgcHJlLWNv
bXBpbGVkCitHb29nbGUgVGVzdCBsaWJyYXJpZXMuICBJbnN0ZWFkLCBlYWNoIHByb2plY3Qgc2hv
dWxkIGNvbXBpbGUKK0dvb2dsZSBUZXN0IGl0c2VsZiBzdWNoIHRoYXQgaXQgY2FuIGJlIHN1cmUg
dGhhdCB0aGUgc2FtZSBmbGFncyBhcmUKK3VzZWQgZm9yIGJvdGggR29vZ2xlIFRlc3QgYW5kIHRo
ZSB0ZXN0cy4KKworIyMgSG93IGRvIEkgZ2VuZXJhdGUgNjQtYml0IGJpbmFyaWVzIG9uIFdpbmRv
d3MgKHVzaW5nIFZpc3VhbCBTdHVkaW8gMjAwOCk/ICMjCisKKyhBbnN3ZXJlZCBieSBUcmV2b3Ig
Um9iaW5zb24pCisKK0xvYWQgdGhlIHN1cHBsaWVkIFZpc3VhbCBTdHVkaW8gc29sdXRpb24gZmls
ZSwgZWl0aGVyIGBtc3ZjXGd0ZXN0LW1kLnNsbmAgb3IKK2Btc3ZjXGd0ZXN0LnNsbmAuIEdvIHRo
cm91Z2ggdGhlIG1pZ3JhdGlvbiB3aXphcmQgdG8gbWlncmF0ZSB0aGUKK3NvbHV0aW9uIGFuZCBw
cm9qZWN0IGZpbGVzIHRvIFZpc3VhbCBTdHVkaW8gMjAwOC4gU2VsZWN0CitgQ29uZmlndXJhdGlv
biBNYW5hZ2VyLi4uYCBmcm9tIHRoZSBgQnVpbGRgIG1lbnUuIFNlbGVjdCBgPE5ldy4uLj5gIGZy
b20KK3RoZSBgQWN0aXZlIHNvbHV0aW9uIHBsYXRmb3JtYCBkcm9wZG93bi4gIFNlbGVjdCBgeDY0
YCBmcm9tIHRoZSBuZXcKK3BsYXRmb3JtIGRyb3Bkb3duLCBsZWF2ZSBgQ29weSBzZXR0aW5ncyBm
cm9tYCBzZXQgdG8gYFdpbjMyYCBhbmQKK2BDcmVhdGUgbmV3IHByb2plY3QgcGxhdGZvcm1zYCBj
aGVja2VkLCB0aGVuIGNsaWNrIGBPS2AuIFlvdSBub3cgaGF2ZQorYFdpbjMyYCBhbmQgYHg2NGAg
cGxhdGZvcm0gY29uZmlndXJhdGlvbnMsIHNlbGVjdGFibGUgZnJvbSB0aGUKK2BTdGFuZGFyZGAg
dG9vbGJhciwgd2hpY2ggYWxsb3cgeW91IHRvIHRvZ2dsZSBiZXR3ZWVuIGJ1aWxkaW5nIDMyLWJp
dCBvcgorNjQtYml0IGJpbmFyaWVzIChvciBib3RoIGF0IG9uY2UgdXNpbmcgQmF0Y2ggQnVpbGQp
LgorCitJbiBvcmRlciB0byBwcmV2ZW50IGJ1aWxkIG91dHB1dCBmaWxlcyBmcm9tIG92ZXJ3cml0
aW5nIG9uZSBhbm90aGVyLAoreW91J2xsIG5lZWQgdG8gY2hhbmdlIHRoZSBgSW50ZXJtZWRpYXRl
IERpcmVjdG9yeWAgc2V0dGluZ3MgZm9yIHRoZQorbmV3bHkgY3JlYXRlZCBwbGF0Zm9ybSBjb25m
aWd1cmF0aW9uIGFjcm9zcyBhbGwgdGhlIHByb2plY3RzLiBUbyBkbwordGhpcywgbXVsdGktc2Vs
ZWN0IChlLmcuIHVzaW5nIHNoaWZ0LWNsaWNrKSBhbGwgcHJvamVjdHMgKGJ1dCBub3QgdGhlCitz
b2x1dGlvbikgaW4gdGhlIGBTb2x1dGlvbiBFeHBsb3JlcmAuIFJpZ2h0LWNsaWNrIG9uZSBvZiB0
aGVtIGFuZAorc2VsZWN0IGBQcm9wZXJ0aWVzYC4gSW4gdGhlIGxlZnQgcGFuZSwgc2VsZWN0IGBD
b25maWd1cmF0aW9uIFByb3BlcnRpZXNgLAorYW5kIGZyb20gdGhlIGBDb25maWd1cmF0aW9uYCBk
cm9wZG93biwgc2VsZWN0IGBBbGwgQ29uZmlndXJhdGlvbnNgLgorTWFrZSBzdXJlIHRoZSBzZWxl
Y3RlZCBwbGF0Zm9ybSBpcyBgeDY0YC4gRm9yIHRoZQorYEludGVybWVkaWF0ZSBEaXJlY3Rvcnlg
IHNldHRpbmcsIGNoYW5nZSB0aGUgdmFsdWUgZnJvbQorYCQoUGxhdGZvcm1OYW1lKVwkKENvbmZp
Z3VyYXRpb25OYW1lKWAgdG8KK2AkKE91dERpcilcJChQcm9qZWN0TmFtZSlgLiBDbGljayBgT0tg
IGFuZCB0aGVuIGJ1aWxkIHRoZQorc29sdXRpb24uIFdoZW4gdGhlIGJ1aWxkIGlzIGNvbXBsZXRl
LCB0aGUgNjQtYml0IGJpbmFyaWVzIHdpbGwgYmUgaW4KK3RoZSBgbXN2Y1x4NjRcRGVidWdgIGRp
cmVjdG9yeS4KKworIyMgQ2FuIEkgdXNlIEdvb2dsZSBUZXN0IG9uIE1pbkdXPyAjIworCitXZSBo
YXZlbid0IHRlc3RlZCB0aGlzIG91cnNlbHZlcywgYnV0IFBlciBBYnJhaGFtc2VuIHJlcG9ydGVk
IHRoYXQgaGUKK3dhcyBhYmxlIHRvIGNvbXBpbGUgYW5kIGluc3RhbGwgR29vZ2xlIFRlc3Qgc3Vj
Y2Vzc2Z1bGx5IHdoZW4gdXNpbmcKK01pbkdXIGZyb20gQ3lnd2luLiAgWW91J2xsIG5lZWQgdG8g
Y29uZmlndXJlIGl0IHdpdGg6CisKK2BQQVRIL1RPL2NvbmZpZ3VyZSBDQz0iZ2NjIC1tbm8tY3ln
d2luIiBDWFg9ImcrKyAtbW5vLWN5Z3dpbiJgCisKK1lvdSBzaG91bGQgYmUgYWJsZSB0byByZXBs
YWNlIHRoZSBgLW1uby1jeWd3aW5gIG9wdGlvbiB3aXRoIGRpcmVjdCBsaW5rcwordG8gdGhlIHJl
YWwgTWluR1cgYmluYXJpZXMsIGJ1dCB3ZSBoYXZlbid0IHRyaWVkIHRoYXQuCisKK0NhdmVhdHM6
CisKKyAgKiBUaGVyZSBhcmUgbWFueSB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZy4KKyAgKiBgbWFr
ZSBjaGVja2Agd2lsbCBwcm9kdWNlIHNvbWUgZXJyb3JzIGFzIG5vdCBhbGwgdGVzdHMgZm9yIEdv
b2dsZSBUZXN0IGl0c2VsZiBhcmUgY29tcGF0aWJsZSB3aXRoIE1pbkdXLgorCitXZSBhbHNvIGhh
dmUgcmVwb3J0cyBvbiBzdWNjZXNzZnVsIGNyb3NzIGNvbXBpbGF0aW9uIG9mIEdvb2dsZSBUZXN0
CitNaW5HVyBiaW5hcmllcyBvbiBMaW51eCB1c2luZworW3RoZXNlIGluc3RydWN0aW9uc10oaHR0
cDovL3dpa2kud3h3aWRnZXRzLm9yZy9Dcm9zcy1Db21waWxpbmdfVW5kZXJfTGludXgjQ3Jvc3Mt
Y29tcGlsaW5nX3VuZGVyX0xpbnV4X2Zvcl9NU19XaW5kb3dzKQorb24gdGhlIFd4V2lkZ2V0cyBz
aXRlLgorCitQbGVhc2UgY29udGFjdCBgZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMu
Y29tYCBpZiB5b3UgYXJlCitpbnRlcmVzdGVkIGluIGltcHJvdmluZyB0aGUgc3VwcG9ydCBmb3Ig
TWluR1cuCisKKyMjIFdoeSBkb2VzIEdvb2dsZSBUZXN0IHN1cHBvcnQgRVhQRUNUXF9FUShOVUxM
LCBwdHIpIGFuZCBBU1NFUlRcX0VRKE5VTEwsIHB0cikgYnV0IG5vdCBFWFBFQ1RcX05FKE5VTEws
IHB0cikgYW5kIEFTU0VSVFxfTkUoTlVMTCwgcHRyKT8gIyMKKworRHVlIHRvIHNvbWUgcGVjdWxp
YXJpdHkgb2YgQysrLCBpdCByZXF1aXJlcyBzb21lIG5vbi10cml2aWFsIHRlbXBsYXRlCittZXRh
IHByb2dyYW1taW5nIHRyaWNrcyB0byBzdXBwb3J0IHVzaW5nIGBOVUxMYCBhcyBhbiBhcmd1bWVu
dCBvZiB0aGUKK2BFWFBFQ1RfWFgoKWAgYW5kIGBBU1NFUlRfWFgoKWAgbWFjcm9zLiBUaGVyZWZv
cmUgd2Ugb25seSBkbyBpdCB3aGVyZQoraXQncyBtb3N0IG5lZWRlZCAob3RoZXJ3aXNlIHdlIG1h
a2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIEdvb2dsZSBUZXN0CitoYXJkZXIgdG8gbWFpbnRhaW4g
YW5kIG1vcmUgZXJyb3ItcHJvbmUgdGhhbiBuZWNlc3NhcnkpLgorCitUaGUgYEVYUEVDVF9FUSgp
YCBtYWNybyB0YWtlcyB0aGUgX2V4cGVjdGVkXyB2YWx1ZSBhcyBpdHMgZmlyc3QKK2FyZ3VtZW50
IGFuZCB0aGUgX2FjdHVhbF8gdmFsdWUgYXMgdGhlIHNlY29uZC4gSXQncyByZWFzb25hYmxlIHRo
YXQKK3NvbWVvbmUgd2FudHMgdG8gd3JpdGUgYEVYUEVDVF9FUShOVUxMLCBzb21lX2V4cHJlc3Np
b24pYCwgYW5kIHRoaXMKK2luZGVlZCB3YXMgcmVxdWVzdGVkIHNldmVyYWwgdGltZXMuIFRoZXJl
Zm9yZSB3ZSBpbXBsZW1lbnRlZCBpdC4KKworVGhlIG5lZWQgZm9yIGBFWFBFQ1RfTkUoTlVMTCwg
cHRyKWAgaXNuJ3QgbmVhcmx5IGFzIHN0cm9uZy4gV2hlbiB0aGUKK2Fzc2VydGlvbiBmYWlscywg
eW91IGFscmVhZHkga25vdyB0aGF0IGBwdHJgIG11c3QgYmUgYE5VTExgLCBzbyBpdAorZG9lc24n
dCBhZGQgYW55IGluZm9ybWF0aW9uIHRvIHByaW50IHB0ciBpbiB0aGlzIGNhc2UuIFRoYXQgbWVh
bnMKK2BFWFBFQ1RfVFJVRShwdHIgIT0gTlVMTClgIHdvcmtzIGp1c3QgYXMgd2VsbC4KKworSWYg
d2Ugd2VyZSB0byBzdXBwb3J0IGBFWFBFQ1RfTkUoTlVMTCwgcHRyKWAsIGZvciBjb25zaXN0ZW5j
eSB3ZSdsbAoraGF2ZSB0byBzdXBwb3J0IGBFWFBFQ1RfTkUocHRyLCBOVUxMKWAgYXMgd2VsbCwg
YXMgdW5saWtlIGBFWFBFQ1RfRVFgLAord2UgZG9uJ3QgaGF2ZSBhIGNvbnZlbnRpb24gb24gdGhl
IG9yZGVyIG9mIHRoZSB0d28gYXJndW1lbnRzIGZvcgorYEVYUEVDVF9ORWAuIFRoaXMgbWVhbnMg
dXNpbmcgdGhlIHRlbXBsYXRlIG1ldGEgcHJvZ3JhbW1pbmcgdHJpY2tzCit0d2ljZSBpbiB0aGUg
aW1wbGVtZW50YXRpb24sIG1ha2luZyBpdCBldmVuIGhhcmRlciB0byB1bmRlcnN0YW5kIGFuZAor
bWFpbnRhaW4uIFdlIGJlbGlldmUgdGhlIGJlbmVmaXQgZG9lc24ndCBqdXN0aWZ5IHRoZSBjb3N0
LgorCitGaW5hbGx5LCB3aXRoIHRoZSBncm93dGggb2YgR29vZ2xlIE1vY2sncyBbbWF0Y2hlcl0o
Li4vLi4vQ29va0Jvb2subWQjdXNpbmctbWF0Y2hlcnMtaW4tZ29vZ2xlLXRlc3QtYXNzZXJ0aW9u
cykgbGlicmFyeSwgd2UgYXJlCitlbmNvdXJhZ2luZyBwZW9wbGUgdG8gdXNlIHRoZSB1bmlmaWVk
IGBFWFBFQ1RfVEhBVCh2YWx1ZSwgbWF0Y2hlcilgCitzeW50YXggbW9yZSBvZnRlbiBpbiB0ZXN0
cy4gT25lIHNpZ25pZmljYW50IGFkdmFudGFnZSBvZiB0aGUgbWF0Y2hlcgorYXBwcm9hY2ggaXMg
dGhhdCBtYXRjaGVycyBjYW4gYmUgZWFzaWx5IGNvbWJpbmVkIHRvIGZvcm0gbmV3IG1hdGNoZXJz
LAord2hpbGUgdGhlIGBFWFBFQ1RfTkVgLCBldGMsIG1hY3JvcyBjYW5ub3QgYmUgZWFzaWx5Citj
b21iaW5lZC4gVGhlcmVmb3JlIHdlIHdhbnQgdG8gaW52ZXN0IG1vcmUgaW4gdGhlIG1hdGNoZXJz
IHRoYW4gaW4gdGhlCitgRVhQRUNUX1hYKClgIG1hY3Jvcy4KKworIyMgRG9lcyBHb29nbGUgVGVz
dCBzdXBwb3J0IHJ1bm5pbmcgdGVzdHMgaW4gcGFyYWxsZWw/ICMjCisKK1Rlc3QgcnVubmVycyB0
ZW5kIHRvIGJlIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBidWlsZC90ZXN0CitlbnZpcm9ubWVu
dCwgYW5kIEdvb2dsZSBUZXN0IGRvZXNuJ3QgdHJ5IHRvIHNvbHZlIHRoZSBwcm9ibGVtIG9mCity
dW5uaW5nIHRlc3RzIGluIHBhcmFsbGVsLiAgSW5zdGVhZCwgd2UgdHJpZWQgdG8gbWFrZSBHb29n
bGUgVGVzdCB3b3JrCituaWNlbHkgd2l0aCB0ZXN0IHJ1bm5lcnMuICBGb3IgZXhhbXBsZSwgR29v
Z2xlIFRlc3QncyBYTUwgcmVwb3J0Citjb250YWlucyB0aGUgdGltZSBzcGVudCBvbiBlYWNoIHRl
c3QsIGFuZCBpdHMgYGd0ZXN0X2xpc3RfdGVzdHNgIGFuZAorYGd0ZXN0X2ZpbHRlcmAgZmxhZ3Mg
Y2FuIGJlIHVzZWQgZm9yIHNwbGl0dGluZyB0aGUgZXhlY3V0aW9uIG9mIHRlc3QKK21ldGhvZHMg
aW50byBtdWx0aXBsZSBwcm9jZXNzZXMuICBUaGVzZSBmdW5jdGlvbmFsaXRpZXMgY2FuIGhlbHAg
dGhlCit0ZXN0IHJ1bm5lciBydW4gdGhlIHRlc3RzIGluIHBhcmFsbGVsLgorCisjIyBXaHkgZG9u
J3QgR29vZ2xlIFRlc3QgcnVuIHRoZSB0ZXN0cyBpbiBkaWZmZXJlbnQgdGhyZWFkcyB0byBzcGVl
ZCB0aGluZ3MgdXA/ICMjCisKK0l0J3MgZGlmZmljdWx0IHRvIHdyaXRlIHRocmVhZC1zYWZlIGNv
ZGUuICBNb3N0IHRlc3RzIGFyZSBub3Qgd3JpdHRlbgord2l0aCB0aHJlYWQtc2FmZXR5IGluIG1p
bmQsIGFuZCB0aHVzIG1heSBub3Qgd29yayBjb3JyZWN0bHkgaW4gYQorbXVsdGktdGhyZWFkZWQg
c2V0dGluZy4KKworSWYgeW91IHRoaW5rIGFib3V0IGl0LCBpdCdzIGFscmVhZHkgaGFyZCB0byBt
YWtlIHlvdXIgY29kZSB3b3JrIHdoZW4KK3lvdSBrbm93IHdoYXQgb3RoZXIgdGhyZWFkcyBhcmUg
ZG9pbmcuICBJdCdzIG11Y2ggaGFyZGVyLCBhbmQKK3NvbWV0aW1lcyBldmVuIGltcG9zc2libGUs
IHRvIG1ha2UgeW91ciBjb2RlIHdvcmsgd2hlbiB5b3UgZG9uJ3Qga25vdword2hhdCBvdGhlciB0
aHJlYWRzIGFyZSBkb2luZyAocmVtZW1iZXIgdGhhdCB0ZXN0IG1ldGhvZHMgY2FuIGJlIGFkZGVk
LAorZGVsZXRlZCwgb3IgbW9kaWZpZWQgYWZ0ZXIgeW91ciB0ZXN0IHdhcyB3cml0dGVuKS4gIElm
IHlvdSB3YW50IHRvIHJ1bgordGhlIHRlc3RzIGluIHBhcmFsbGVsLCB5b3UnZCBiZXR0ZXIgcnVu
IHRoZW0gaW4gZGlmZmVyZW50IHByb2Nlc3Nlcy4KKworIyMgV2h5IGFyZW4ndCBHb29nbGUgVGVz
dCBhc3NlcnRpb25zIGltcGxlbWVudGVkIHVzaW5nIGV4Y2VwdGlvbnM/ICMjCisKK091ciBvcmln
aW5hbCBtb3RpdmF0aW9uIHdhcyB0byBiZSBhYmxlIHRvIHVzZSBHb29nbGUgVGVzdCBpbiBwcm9q
ZWN0cwordGhhdCBkaXNhYmxlIGV4Y2VwdGlvbnMuICBMYXRlciB3ZSByZWFsaXplZCBzb21lIGFk
ZGl0aW9uYWwgYmVuZWZpdHMKK29mIHRoaXMgYXBwcm9hY2g6CisKKyAgMS4gVGhyb3dpbmcgaW4g
YSBkZXN0cnVjdG9yIGlzIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBDKysuICBOb3QgdXNpbmcgZXhj
ZXB0aW9ucyBtZWFucyBHb29nbGUgVGVzdCdzIGFzc2VydGlvbnMgYXJlIHNhZmUgdG8gdXNlIGlu
IGRlc3RydWN0b3JzLgorICAxLiBUaGUgYEVYUEVDVF8qYCBmYW1pbHkgb2YgbWFjcm9zIHdpbGwg
Y29udGludWUgZXZlbiBhZnRlciBhIGZhaWx1cmUsIGFsbG93aW5nIG11bHRpcGxlIGZhaWx1cmVz
IGluIGEgYFRFU1RgIHRvIGJlIHJlcG9ydGVkIGluIGEgc2luZ2xlIHJ1bi4gVGhpcyBpcyBhIHBv
cHVsYXIgZmVhdHVyZSwgYXMgaW4gQysrIHRoZSBlZGl0LWNvbXBpbGUtdGVzdCBjeWNsZSBpcyB1
c3VhbGx5IHF1aXRlIGxvbmcgYW5kIGJlaW5nIGFibGUgdG8gZml4aW5nIG1vcmUgdGhhbiBvbmUg
dGhpbmcgYXQgYSB0aW1lIGlzIGEgYmxlc3NpbmcuCisgIDEuIElmIGFzc2VydGlvbnMgYXJlIGlt
cGxlbWVudGVkIHVzaW5nIGV4Y2VwdGlvbnMsIGEgdGVzdCBtYXkgZmFsc2VseSBpZ25vcmUgYSBm
YWlsdXJlIGlmIGl0J3MgY2F1Z2h0IGJ5IHVzZXIgY29kZToKK2BgYAordHJ5IHsgLi4uIEFTU0VS
VF9UUlVFKC4uLikgLi4uIH0KK2NhdGNoICguLi4pIHsgLi4uIH0KK2BgYAorVGhlIGFib3ZlIGNv
ZGUgd2lsbCBwYXNzIGV2ZW4gaWYgdGhlIGBBU1NFUlRfVFJVRWAgdGhyb3dzLiAgV2hpbGUgaXQn
cyB1bmxpa2VseSBmb3Igc29tZW9uZSB0byB3cml0ZSB0aGlzIGluIGEgdGVzdCwgaXQncyBwb3Nz
aWJsZSB0byBydW4gaW50byB0aGlzIHBhdHRlcm4gd2hlbiB5b3Ugd3JpdGUgYXNzZXJ0aW9ucyBp
biBjYWxsYmFja3MgdGhhdCBhcmUgY2FsbGVkIGJ5IHRoZSBjb2RlIHVuZGVyIHRlc3QuCisKK1Ro
ZSBkb3duc2lkZSBvZiBub3QgdXNpbmcgZXhjZXB0aW9ucyBpcyB0aGF0IGBBU1NFUlRfKmAgKGlt
cGxlbWVudGVkCit1c2luZyBgcmV0dXJuYCkgd2lsbCBvbmx5IGFib3J0IHRoZSBjdXJyZW50IGZ1
bmN0aW9uLCBub3QgdGhlIGN1cnJlbnQKK2BURVNUYC4KKworIyMgV2h5IGRvIHdlIHVzZSB0d28g
ZGlmZmVyZW50IG1hY3JvcyBmb3IgdGVzdHMgd2l0aCBhbmQgd2l0aG91dCBmaXh0dXJlcz8gIyMK
KworVW5mb3J0dW5hdGVseSwgQysrJ3MgbWFjcm8gc3lzdGVtIGRvZXNuJ3QgYWxsb3cgdXMgdG8g
dXNlIHRoZSBzYW1lCittYWNybyBmb3IgYm90aCBjYXNlcy4gIE9uZSBwb3NzaWJpbGl0eSBpcyB0
byBwcm92aWRlIG9ubHkgb25lIG1hY3JvCitmb3IgdGVzdHMgd2l0aCBmaXh0dXJlcywgYW5kIHJl
cXVpcmUgdGhlIHVzZXIgdG8gZGVmaW5lIGFuIGVtcHR5CitmaXh0dXJlIHNvbWV0aW1lczoKKwor
YGBgCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKworVEVTVF9G
KEZvb1Rlc3QsIERvZXNUaGlzKSB7IC4uLiB9CitgYGAKK29yCitgYGAKK3R5cGVkZWYgOjp0ZXN0
aW5nOjpUZXN0IEZvb1Rlc3Q7CisKK1RFU1RfRihGb29UZXN0LCBEb2VzVGhhdCkgeyAuLi4gfQor
YGBgCisKK1lldCwgbWFueSBwZW9wbGUgdGhpbmsgdGhpcyBpcyBvbmUgbGluZSB0b28gbWFueS4g
Oi0pIE91ciBnb2FsIHdhcyB0bworbWFrZSBpdCByZWFsbHkgZWFzeSB0byB3cml0ZSB0ZXN0cywg
c28gd2UgdHJpZWQgdG8gbWFrZSBzaW1wbGUgdGVzdHMKK3RyaXZpYWwgdG8gY3JlYXRlLiAgVGhh
dCBtZWFucyB1c2luZyBhIHNlcGFyYXRlIG1hY3JvIGZvciBzdWNoIHRlc3RzLgorCitXZSB0aGlu
ayBuZWl0aGVyIGFwcHJvYWNoIGlzIGlkZWFsLCB5ZXQgZWl0aGVyIG9mIHRoZW0gaXMgcmVhc29u
YWJsZS4KK0luIHRoZSBlbmQsIGl0IHByb2JhYmx5IGRvZXNuJ3QgbWF0dGVyIG11Y2ggZWl0aGVy
IHdheS4KKworIyMgV2h5IGRvbid0IHdlIHVzZSBzdHJ1Y3RzIGFzIHRlc3QgZml4dHVyZXM/ICMj
CisKK1dlIGxpa2UgdG8gdXNlIHN0cnVjdHMgb25seSB3aGVuIHJlcHJlc2VudGluZyBwYXNzaXZl
IGRhdGEuICBUaGlzCitkaXN0aW5jdGlvbiBiZXR3ZWVuIHN0cnVjdHMgYW5kIGNsYXNzZXMgaXMg
Z29vZCBmb3IgZG9jdW1lbnRpbmcgdGhlCitpbnRlbnQgb2YgdGhlIGNvZGUncyBhdXRob3IuICBT
aW5jZSB0ZXN0IGZpeHR1cmVzIGhhdmUgbG9naWMgbGlrZQorYFNldFVwKClgIGFuZCBgVGVhckRv
d24oKWAsIHRoZXkgYXJlIGJldHRlciBkZWZpbmVkIGFzIGNsYXNzZXMuCisKKyMjIFdoeSBhcmUg
ZGVhdGggdGVzdHMgaW1wbGVtZW50ZWQgYXMgYXNzZXJ0aW9ucyBpbnN0ZWFkIG9mIHVzaW5nIGEg
dGVzdCBydW5uZXI/ICMjCisKK091ciBnb2FsIHdhcyB0byBtYWtlIGRlYXRoIHRlc3RzIGFzIGNv
bnZlbmllbnQgZm9yIGEgdXNlciBhcyBDKysKK3Bvc3NpYmx5IGFsbG93cy4gIEluIHBhcnRpY3Vs
YXI6CisKKyAgKiBUaGUgcnVubmVyLXN0eWxlIHJlcXVpcmVzIHRvIHNwbGl0IHRoZSBpbmZvcm1h
dGlvbiBpbnRvIHR3byBwaWVjZXM6IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBkZWF0aCB0ZXN0IGl0
c2VsZiwgYW5kIHRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgcnVubmVyIG9uIGhvdyB0byBydW4g
dGhlIGRlYXRoIHRlc3QgYW5kIHdoYXQgdG8gZXhwZWN0LiAgVGhlIGRlYXRoIHRlc3Qgd291bGQg
YmUgd3JpdHRlbiBpbiBDKyssIHdoaWxlIHRoZSBydW5uZXIgc3BlYyBtYXkgb3IgbWF5IG5vdCBi
ZS4gIEEgdXNlciBuZWVkcyB0byBjYXJlZnVsbHkga2VlcCB0aGUgdHdvIGluIHN5bmMuIGBBU1NF
UlRfREVBVEgoc3RhdGVtZW50LCBleHBlY3RlZF9tZXNzYWdlKWAgc3BlY2lmaWVzIGFsbCBuZWNl
c3NhcnkgaW5mb3JtYXRpb24gaW4gb25lIHBsYWNlLCBpbiBvbmUgbGFuZ3VhZ2UsIHdpdGhvdXQg
Ym9pbGVycGxhdGUgY29kZS4gSXQgaXMgdmVyeSBkZWNsYXJhdGl2ZS4KKyAgKiBgQVNTRVJUX0RF
QVRIYCBoYXMgYSBzaW1pbGFyIHN5bnRheCBhbmQgZXJyb3ItcmVwb3J0aW5nIHNlbWFudGljcyBh
cyBvdGhlciBHb29nbGUgVGVzdCBhc3NlcnRpb25zLCBhbmQgdGh1cyBpcyBlYXN5IHRvIGxlYXJu
LgorICAqIGBBU1NFUlRfREVBVEhgIGNhbiBiZSBtaXhlZCB3aXRoIG90aGVyIGFzc2VydGlvbnMg
YW5kIG90aGVyIGxvZ2ljIGF0IHlvdXIgd2lsbC4gIFlvdSBhcmUgbm90IGxpbWl0ZWQgdG8gb25l
IGRlYXRoIHRlc3QgcGVyIHRlc3QgbWV0aG9kLiBGb3IgZXhhbXBsZSwgeW91IGNhbiB3cml0ZSBz
b21ldGhpbmcgbGlrZToKK2BgYAorICAgIGlmIChGb29Db25kaXRpb24oKSkgeworICAgICAgQVNT
RVJUX0RFQVRIKEJhcigpLCAiYmxhaCIpOworICAgIH0gZWxzZSB7CisgICAgICBBU1NFUlRfRVEo
NSwgQmFyKCkpOworICAgIH0KK2BgYAorSWYgeW91IHByZWZlciBvbmUgZGVhdGggdGVzdCBwZXIg
dGVzdCBtZXRob2QsIHlvdSBjYW4gd3JpdGUgeW91ciB0ZXN0cyBpbiB0aGF0IHN0eWxlIHRvbywg
YnV0IHdlIGRvbid0IHdhbnQgdG8gaW1wb3NlIHRoYXQgb24gdGhlIHVzZXJzLiAgVGhlIGZld2Vy
IGFydGlmaWNpYWwgbGltaXRhdGlvbnMgdGhlIGJldHRlci4KKyAgKiBgQVNTRVJUX0RFQVRIYCBj
YW4gcmVmZXJlbmNlIGxvY2FsIHZhcmlhYmxlcyBpbiB0aGUgY3VycmVudCBmdW5jdGlvbiwgYW5k
IHlvdSBjYW4gZGVjaWRlIGhvdyBtYW55IGRlYXRoIHRlc3RzIHlvdSB3YW50IGJhc2VkIG9uIHJ1
bi10aW1lIGluZm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsCitgYGAKKyAgICBjb25zdCBpbnQgY291
bnQgPSBHZXRDb3VudCgpOyAgLy8gT25seSBrbm93biBhdCBydW4gdGltZS4KKyAgICBmb3IgKGlu
dCBpID0gMTsgaSA8PSBjb3VudDsgaSsrKSB7CisgICAgICBBU1NFUlRfREVBVEgoeworICAgICAg
ICBkb3VibGUqIGJ1ZmZlciA9IG5ldyBkb3VibGVbaV07CisgICAgICAgIC4uLiBpbml0aWFsaXpl
cyBidWZmZXIgLi4uCisgICAgICAgIEZvbyhidWZmZXIsIGkpCisgICAgICB9LCAiYmxhaCBibGFo
Iik7CisgICAgfQorYGBgCitUaGUgcnVubmVyLWJhc2VkIGFwcHJvYWNoIHRlbmRzIHRvIGJlIG1v
cmUgc3RhdGljIGFuZCBsZXNzIGZsZXhpYmxlLCBvciByZXF1aXJlcyBtb3JlIHVzZXIgZWZmb3J0
IHRvIGdldCB0aGlzIGtpbmQgb2YgZmxleGliaWxpdHkuCisKK0Fub3RoZXIgaW50ZXJlc3Rpbmcg
dGhpbmcgYWJvdXQgYEFTU0VSVF9ERUFUSGAgaXMgdGhhdCBpdCBjYWxscyBgZm9yaygpYAordG8g
Y3JlYXRlIGEgY2hpbGQgcHJvY2VzcyB0byBydW4gdGhlIGRlYXRoIHRlc3QuICBUaGlzIGlzIGxp
Z2h0ZW5pbmcKK2Zhc3QsIGFzIGBmb3JrKClgIHVzZXMgY29weS1vbi13cml0ZSBwYWdlcyBhbmQg
aW5jdXJzIGFsbW9zdCB6ZXJvCitvdmVyaGVhZCwgYW5kIHRoZSBjaGlsZCBwcm9jZXNzIHN0YXJ0
cyBmcm9tIHRoZSB1c2VyLXN1cHBsaWVkCitzdGF0ZW1lbnQgZGlyZWN0bHksIHNraXBwaW5nIGFs
bCBnbG9iYWwgYW5kIGxvY2FsIGluaXRpYWxpemF0aW9uIGFuZAorYW55IGNvZGUgbGVhZGluZyB0
byB0aGUgZ2l2ZW4gc3RhdGVtZW50LiAgSWYgeW91IGxhdW5jaCB0aGUgY2hpbGQKK3Byb2Nlc3Mg
ZnJvbSBzY3JhdGNoLCBpdCBjYW4gdGFrZSBzZWNvbmRzIGp1c3QgdG8gbG9hZCBldmVyeXRoaW5n
IGFuZAorc3RhcnQgcnVubmluZyBpZiB0aGUgdGVzdCBsaW5rcyB0byBtYW55IGxpYnJhcmllcyBk
eW5hbWljYWxseS4KKworIyMgTXkgZGVhdGggdGVzdCBtb2RpZmllcyBzb21lIHN0YXRlLCBidXQg
dGhlIGNoYW5nZSBzZWVtcyBsb3N0IGFmdGVyIHRoZSBkZWF0aCB0ZXN0IGZpbmlzaGVzLiBXaHk/
ICMjCisKK0RlYXRoIHRlc3RzIChgRVhQRUNUX0RFQVRIYCwgZXRjKSBhcmUgZXhlY3V0ZWQgaW4g
YSBzdWItcHJvY2VzcyBzLnQuIHRoZQorZXhwZWN0ZWQgY3Jhc2ggd29uJ3Qga2lsbCB0aGUgdGVz
dCBwcm9ncmFtIChpLmUuIHRoZSBwYXJlbnQgcHJvY2VzcykuIEFzIGEKK3Jlc3VsdCwgYW55IGlu
LW1lbW9yeSBzaWRlIGVmZmVjdHMgdGhleSBpbmN1ciBhcmUgb2JzZXJ2YWJsZSBpbiB0aGVpcgor
cmVzcGVjdGl2ZSBzdWItcHJvY2Vzc2VzLCBidXQgbm90IGluIHRoZSBwYXJlbnQgcHJvY2Vzcy4g
WW91IGNhbiB0aGluayBvZiB0aGVtCithcyBydW5uaW5nIGluIGEgcGFyYWxsZWwgdW5pdmVyc2Us
IG1vcmUgb3IgbGVzcy4KKworIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCAidW5kZWZp
bmVkIHJlZmVyZW5jZXMiIHRvIHNvbWUgc3RhdGljIGNvbnN0IG1lbWJlciB2YXJpYWJsZXMsIGJ1
dCBJIGRpZCBkZWZpbmUgdGhlbSBpbiB0aGUgY2xhc3MgYm9keS4gV2hhdCdzIHdyb25nPyAjIwor
CitJZiB5b3VyIGNsYXNzIGhhcyBhIHN0YXRpYyBkYXRhIG1lbWJlcjoKKworYGBgCisvLyBmb28u
aAorY2xhc3MgRm9vIHsKKyAgLi4uCisgIHN0YXRpYyBjb25zdCBpbnQga0JhciA9IDEwMDsKK307
CitgYGAKKworWW91IGFsc28gbmVlZCB0byBkZWZpbmUgaXQgX291dHNpZGVfIG9mIHRoZSBjbGFz
cyBib2R5IGluIGBmb28uY2NgOgorCitgYGAKK2NvbnN0IGludCBGb286OmtCYXI7ICAvLyBObyBp
bml0aWFsaXplciBoZXJlLgorYGBgCisKK090aGVyd2lzZSB5b3VyIGNvZGUgaXMgKippbnZhbGlk
IEMrKyoqLCBhbmQgbWF5IGJyZWFrIGluIHVuZXhwZWN0ZWQgd2F5cy4gSW4KK3BhcnRpY3VsYXIs
IHVzaW5nIGl0IGluIEdvb2dsZSBUZXN0IGNvbXBhcmlzb24gYXNzZXJ0aW9ucyAoYEVYUEVDVF9F
UWAsIGV0YykKK3dpbGwgZ2VuZXJhdGUgYW4gInVuZGVmaW5lZCByZWZlcmVuY2UiIGxpbmtlciBl
cnJvci4KKworIyMgSSBoYXZlIGFuIGludGVyZmFjZSB0aGF0IGhhcyBzZXZlcmFsIGltcGxlbWVu
dGF0aW9ucy4gQ2FuIEkgd3JpdGUgYSBzZXQgb2YgdGVzdHMgb25jZSBhbmQgcmVwZWF0IHRoZW0g
b3ZlciBhbGwgdGhlIGltcGxlbWVudGF0aW9ucz8gIyMKKworR29vZ2xlIFRlc3QgZG9lc24ndCB5
ZXQgaGF2ZSBnb29kIHN1cHBvcnQgZm9yIHRoaXMga2luZCBvZiB0ZXN0cywgb3IKK2RhdGEtZHJp
dmVuIHRlc3RzIGluIGdlbmVyYWwuIFdlIGhvcGUgdG8gYmUgYWJsZSB0byBtYWtlIGltcHJvdmVt
ZW50cyBpbiB0aGlzCithcmVhIHNvb24uCisKKyMjIENhbiBJIGRlcml2ZSBhIHRlc3QgZml4dHVy
ZSBmcm9tIGFub3RoZXI/ICMjCisKK1llcy4KKworRWFjaCB0ZXN0IGZpeHR1cmUgaGFzIGEgY29y
cmVzcG9uZGluZyBhbmQgc2FtZSBuYW1lZCB0ZXN0IGNhc2UuIFRoaXMgbWVhbnMgb25seQorb25l
IHRlc3QgY2FzZSBjYW4gdXNlIGEgcGFydGljdWxhciBmaXh0dXJlLiBTb21ldGltZXMsIGhvd2V2
ZXIsIG11bHRpcGxlIHRlc3QKK2Nhc2VzIG1heSB3YW50IHRvIHVzZSB0aGUgc2FtZSBvciBzbGln
aHRseSBkaWZmZXJlbnQgZml4dHVyZXMuIEZvciBleGFtcGxlLCB5b3UKK21heSB3YW50IHRvIG1h
a2Ugc3VyZSB0aGF0IGFsbCBvZiBhIEdVSSBsaWJyYXJ5J3MgdGVzdCBjYXNlcyBkb24ndCBsZWFr
CitpbXBvcnRhbnQgc3lzdGVtIHJlc291cmNlcyBsaWtlIGZvbnRzIGFuZCBicnVzaGVzLgorCitJ
biBHb29nbGUgVGVzdCwgeW91IHNoYXJlIGEgZml4dHVyZSBhbW9uZyB0ZXN0IGNhc2VzIGJ5IHB1
dHRpbmcgdGhlIHNoYXJlZAorbG9naWMgaW4gYSBiYXNlIHRlc3QgZml4dHVyZSwgdGhlbiBkZXJp
dmluZyBmcm9tIHRoYXQgYmFzZSBhIHNlcGFyYXRlIGZpeHR1cmUKK2ZvciBlYWNoIHRlc3QgY2Fz
ZSB0aGF0IHdhbnRzIHRvIHVzZSB0aGlzIGNvbW1vbiBsb2dpYy4gWW91IHRoZW4gdXNlIGBURVNU
X0YoKWAKK3RvIHdyaXRlIHRlc3RzIHVzaW5nIGVhY2ggZGVyaXZlZCBmaXh0dXJlLgorCitUeXBp
Y2FsbHksIHlvdXIgY29kZSBsb29rcyBsaWtlIHRoaXM6CisKK2BgYAorLy8gRGVmaW5lcyBhIGJh
c2UgdGVzdCBmaXh0dXJlLgorY2xhc3MgQmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHsKKyAgcHJvdGVjdGVkOgorICAgLi4uCit9OworCisvLyBEZXJpdmVzIGEgZml4dHVyZSBGb29U
ZXN0IGZyb20gQmFzZVRlc3QuCitjbGFzcyBGb29UZXN0IDogcHVibGljIEJhc2VUZXN0IHsKKyAg
cHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICAgIEJhc2VUZXN0OjpT
ZXRVcCgpOyAgLy8gU2V0cyB1cCB0aGUgYmFzZSBmaXh0dXJlIGZpcnN0LgorICAgICAgLi4uIGFk
ZGl0aW9uYWwgc2V0LXVwIHdvcmsgLi4uCisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93
bigpIHsKKyAgICAgIC4uLiBjbGVhbi11cCB3b3JrIGZvciBGb29UZXN0IC4uLgorICAgICAgQmFz
ZVRlc3Q6OlRlYXJEb3duKCk7ICAvLyBSZW1lbWJlciB0byB0ZWFyIGRvd24gdGhlIGJhc2UgZml4
dHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciBjbGVhbmluZyB1cCBG
b29UZXN0IQorICAgIH0KKyAgICAuLi4gZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMgZm9yIEZvb1Rl
c3QgLi4uCit9OworCisvLyBUZXN0cyB0aGF0IHVzZSB0aGUgZml4dHVyZSBGb29UZXN0LgorVEVT
VF9GKEZvb1Rlc3QsIEJhcikgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIEJheikgeyAuLi4gfQor
CisuLi4gYWRkaXRpb25hbCBmaXh0dXJlcyBkZXJpdmVkIGZyb20gQmFzZVRlc3QgLi4uCitgYGAK
KworSWYgbmVjZXNzYXJ5LCB5b3UgY2FuIGNvbnRpbnVlIHRvIGRlcml2ZSB0ZXN0IGZpeHR1cmVz
IGZyb20gYSBkZXJpdmVkIGZpeHR1cmUuCitHb29nbGUgVGVzdCBoYXMgbm8gbGltaXQgb24gaG93
IGRlZXAgdGhlIGhpZXJhcmNoeSBjYW4gYmUuCisKK0ZvciBhIGNvbXBsZXRlIGV4YW1wbGUgdXNp
bmcgZGVyaXZlZCB0ZXN0IGZpeHR1cmVzLCBzZWUKK1tzYW1wbGU1XSguLi9zYW1wbGVzL3NhbXBs
ZTVfdW5pdHRlc3QuY2MpLgorCisjIyBNeSBjb21waWxlciBjb21wbGFpbnMgInZvaWQgdmFsdWUg
bm90IGlnbm9yZWQgYXMgaXQgb3VnaHQgdG8gYmUuIiBXaGF0IGRvZXMgdGhpcyBtZWFuPyAjIwor
CitZb3UncmUgcHJvYmFibHkgdXNpbmcgYW4gYEFTU0VSVF8qKClgIGluIGEgZnVuY3Rpb24gdGhh
dCBkb2Vzbid0IHJldHVybiBgdm9pZGAuCitgQVNTRVJUXyooKWAgY2FuIG9ubHkgYmUgdXNlZCBp
biBgdm9pZGAgZnVuY3Rpb25zLgorCisjIyBNeSBkZWF0aCB0ZXN0IGhhbmdzIChvciBzZWctZmF1
bHRzKS4gSG93IGRvIEkgZml4IGl0PyAjIworCitJbiBHb29nbGUgVGVzdCwgZGVhdGggdGVzdHMg
YXJlIHJ1biBpbiBhIGNoaWxkIHByb2Nlc3MgYW5kIHRoZSB3YXkgdGhleSB3b3JrIGlzCitkZWxp
Y2F0ZS4gVG8gd3JpdGUgZGVhdGggdGVzdHMgeW91IHJlYWxseSBuZWVkIHRvIHVuZGVyc3RhbmQg
aG93IHRoZXkgd29yay4KK1BsZWFzZSBtYWtlIHN1cmUgeW91IGhhdmUgcmVhZCB0aGlzLgorCitJ
biBwYXJ0aWN1bGFyLCBkZWF0aCB0ZXN0cyBkb24ndCBsaWtlIGhhdmluZyBtdWx0aXBsZSB0aHJl
YWRzIGluIHRoZSBwYXJlbnQKK3Byb2Nlc3MuIFNvIHRoZSBmaXJzdCB0aGluZyB5b3UgY2FuIHRy
eSBpcyB0byBlbGltaW5hdGUgY3JlYXRpbmcgdGhyZWFkcworb3V0c2lkZSBvZiBgRVhQRUNUX0RF
QVRIKClgLgorCitTb21ldGltZXMgdGhpcyBpcyBpbXBvc3NpYmxlIGFzIHNvbWUgbGlicmFyeSB5
b3UgbXVzdCB1c2UgbWF5IGJlIGNyZWF0aW5nCit0aHJlYWRzIGJlZm9yZSBgbWFpbigpYCBpcyBl
dmVuIHJlYWNoZWQuIEluIHRoaXMgY2FzZSwgeW91IGNhbiB0cnkgdG8gbWluaW1pemUKK3RoZSBj
aGFuY2Ugb2YgY29uZmxpY3RzIGJ5IGVpdGhlciBtb3ZpbmcgYXMgbWFueSBhY3Rpdml0aWVzIGFz
IHBvc3NpYmxlIGluc2lkZQorYEVYUEVDVF9ERUFUSCgpYCAoaW4gdGhlIGV4dHJlbWUgY2FzZSwg
eW91IHdhbnQgdG8gbW92ZSBldmVyeXRoaW5nIGluc2lkZSksIG9yCitsZWF2aW5nIGFzIGZldyB0
aGluZ3MgYXMgcG9zc2libGUgaW4gaXQuIEFsc28sIHlvdSBjYW4gdHJ5IHRvIHNldCB0aGUgZGVh
dGgKK3Rlc3Qgc3R5bGUgdG8gYCJ0aHJlYWRzYWZlImAsIHdoaWNoIGlzIHNhZmVyIGJ1dCBzbG93
ZXIsIGFuZCBzZWUgaWYgaXQgaGVscHMuCisKK0lmIHlvdSBnbyB3aXRoIHRocmVhZC1zYWZlIGRl
YXRoIHRlc3RzLCByZW1lbWJlciB0aGF0IHRoZXkgcmVydW4gdGhlIHRlc3QKK3Byb2dyYW0gZnJv
bSB0aGUgYmVnaW5uaW5nIGluIHRoZSBjaGlsZCBwcm9jZXNzLiBUaGVyZWZvcmUgbWFrZSBzdXJl
IHlvdXIKK3Byb2dyYW0gY2FuIHJ1biBzaWRlLWJ5LXNpZGUgd2l0aCBpdHNlbGYgYW5kIGlzIGRl
dGVybWluaXN0aWMuCisKK0luIHRoZSBlbmQsIHRoaXMgYm9pbHMgZG93biB0byBnb29kIGNvbmN1
cnJlbnQgcHJvZ3JhbW1pbmcuIFlvdSBoYXZlIHRvIG1ha2UKK3N1cmUgdGhhdCB0aGVyZSBpcyBu
byByYWNlIGNvbmRpdGlvbnMgb3IgZGVhZCBsb2NrcyBpbiB5b3VyIHByb2dyYW0uIE5vIHNpbHZl
cgorYnVsbGV0IC0gc29ycnkhCisKKyMjIFNob3VsZCBJIHVzZSB0aGUgY29uc3RydWN0b3IvZGVz
dHJ1Y3RvciBvZiB0aGUgdGVzdCBmaXh0dXJlIG9yIHRoZSBzZXQtdXAvdGVhci1kb3duIGZ1bmN0
aW9uPyAjIworCitUaGUgZmlyc3QgdGhpbmcgdG8gcmVtZW1iZXIgaXMgdGhhdCBHb29nbGUgVGVz
dCBkb2VzIG5vdCByZXVzZSB0aGUKK3NhbWUgdGVzdCBmaXh0dXJlIG9iamVjdCBhY3Jvc3MgbXVs
dGlwbGUgdGVzdHMuIEZvciBlYWNoIGBURVNUX0ZgLAorR29vZ2xlIFRlc3Qgd2lsbCBjcmVhdGUg
YSBmcmVzaCB0ZXN0IGZpeHR1cmUgb2JqZWN0LCBfaW1tZWRpYXRlbHlfCitjYWxsIGBTZXRVcCgp
YCwgcnVuIHRoZSB0ZXN0LCBjYWxsIGBUZWFyRG93bigpYCwgYW5kIHRoZW4KK19pbW1lZGlhdGVs
eV8gZGVsZXRlIHRoZSB0ZXN0IGZpeHR1cmUgb2JqZWN0LiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5v
CituZWVkIHRvIHdyaXRlIGEgYFNldFVwKClgIG9yIGBUZWFyRG93bigpYCBmdW5jdGlvbiBpZiB0
aGUgY29uc3RydWN0b3IKK29yIGRlc3RydWN0b3IgYWxyZWFkeSBkb2VzIHRoZSBqb2IuCisKK1lv
dSBtYXkgc3RpbGwgd2FudCB0byB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAgaW4gdGhlIGZvbGxv
d2luZyBjYXNlczoKKyAgKiBJZiB0aGUgdGVhci1kb3duIG9wZXJhdGlvbiBjb3VsZCB0aHJvdyBh
biBleGNlcHRpb24sIHlvdSBtdXN0IHVzZSBgVGVhckRvd24oKWAgYXMgb3Bwb3NlZCB0byB0aGUg
ZGVzdHJ1Y3RvciwgYXMgdGhyb3dpbmcgaW4gYSBkZXN0cnVjdG9yIGxlYWRzIHRvIHVuZGVmaW5l
ZCBiZWhhdmlvciBhbmQgdXN1YWxseSB3aWxsIGtpbGwgeW91ciBwcm9ncmFtIHJpZ2h0IGF3YXku
IE5vdGUgdGhhdCBtYW55IHN0YW5kYXJkIGxpYnJhcmllcyAobGlrZSBTVEwpIG1heSB0aHJvdyB3
aGVuIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQgaW4gdGhlIGNvbXBpbGVyLiBUaGVyZWZvcmUgeW91
IHNob3VsZCBwcmVmZXIgYFRlYXJEb3duKClgIGlmIHlvdSB3YW50IHRvIHdyaXRlIHBvcnRhYmxl
IHRlc3RzIHRoYXQgd29yayB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucy4KKyAgKiBUaGUgYXNz
ZXJ0aW9uIG1hY3JvcyB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBmbGFnIGAtLWd0ZXN0X3Rocm93
X29uX2ZhaWx1cmVgIGlzIHNwZWNpZmllZC4gVGhlcmVmb3JlLCB5b3Ugc2hvdWxkbid0IHVzZSBH
b29nbGUgVGVzdCBhc3NlcnRpb25zIGluIGEgZGVzdHJ1Y3RvciBpZiB5b3UgcGxhbiB0byBydW4g
eW91ciB0ZXN0cyB3aXRoIHRoaXMgZmxhZy4KKyAgKiBJbiBhIGNvbnN0cnVjdG9yIG9yIGRlc3Ry
dWN0b3IsIHlvdSBjYW5ub3QgbWFrZSBhIHZpcnR1YWwgZnVuY3Rpb24gY2FsbCBvbiB0aGlzIG9i
amVjdC4gKFlvdSBjYW4gY2FsbCBhIG1ldGhvZCBkZWNsYXJlZCBhcyB2aXJ0dWFsLCBidXQgaXQg
d2lsbCBiZSBzdGF0aWNhbGx5IGJvdW5kLikgVGhlcmVmb3JlLCBpZiB5b3UgbmVlZCB0byBjYWxs
IGEgbWV0aG9kIHRoYXQgd2lsbCBiZSBvdmVycmlkZW4gaW4gYSBkZXJpdmVkIGNsYXNzLCB5b3Ug
aGF2ZSB0byB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAuCisKKyMjIFRoZSBjb21waWxlciBjb21w
bGFpbnMgIm5vIG1hdGNoaW5nIGZ1bmN0aW9uIHRvIGNhbGwiIHdoZW4gSSB1c2UgQVNTRVJUXF9Q
UkVEbi4gSG93IGRvIEkgZml4IGl0PyAjIworCitJZiB0aGUgcHJlZGljYXRlIGZ1bmN0aW9uIHlv
dSB1c2UgaW4gYEFTU0VSVF9QUkVEKmAgb3IgYEVYUEVDVF9QUkVEKmAgaXMKK292ZXJsb2FkZWQg
b3IgYSB0ZW1wbGF0ZSwgdGhlIGNvbXBpbGVyIHdpbGwgaGF2ZSB0cm91YmxlIGZpZ3VyaW5nIG91
dCB3aGljaAorb3ZlcmxvYWRlZCB2ZXJzaW9uIGl0IHNob3VsZCB1c2UuIGBBU1NFUlRfUFJFRF9G
T1JNQVQqYCBhbmQKK2BFWFBFQ1RfUFJFRF9GT1JNQVQqYCBkb24ndCBoYXZlIHRoaXMgcHJvYmxl
bS4KKworSWYgeW91IHNlZSB0aGlzIGVycm9yLCB5b3UgbWlnaHQgd2FudCB0byBzd2l0Y2ggdG8K
K2AoQVNTRVJUfEVYUEVDVClfUFJFRF9GT1JNQVQqYCwgd2hpY2ggd2lsbCBhbHNvIGdpdmUgeW91
IGEgYmV0dGVyIGZhaWx1cmUKK21lc3NhZ2UuIElmLCBob3dldmVyLCB0aGF0IGlzIG5vdCBhbiBv
cHRpb24sIHlvdSBjYW4gcmVzb2x2ZSB0aGUgcHJvYmxlbSBieQorZXhwbGljaXRseSB0ZWxsaW5n
IHRoZSBjb21waWxlciB3aGljaCB2ZXJzaW9uIHRvIHBpY2suCisKK0ZvciBleGFtcGxlLCBzdXBw
b3NlIHlvdSBoYXZlCisKK2BgYAorYm9vbCBJc1Bvc2l0aXZlKGludCBuKSB7CisgIHJldHVybiBu
ID4gMDsKK30KK2Jvb2wgSXNQb3NpdGl2ZShkb3VibGUgeCkgeworICByZXR1cm4geCA+IDA7Cit9
CitgYGAKKworeW91IHdpbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IgaWYgeW91IHdyaXRlCisKK2Bg
YAorRVhQRUNUX1BSRUQxKElzUG9zaXRpdmUsIDUpOworYGBgCisKK0hvd2V2ZXIsIHRoaXMgd2ls
bCB3b3JrOgorCitgYGAKK0VYUEVDVF9QUkVEMSgqc3RhdGljX2Nhc3Q8Ym9vbCAoKikoaW50KT4q
KElzUG9zaXRpdmUpLCA1KTsKK2BgYAorCisoVGhlIHN0dWZmIGluc2lkZSB0aGUgYW5nbGVkIGJy
YWNrZXRzIGZvciB0aGUgYHN0YXRpY19jYXN0YCBvcGVyYXRvciBpcyB0aGUKK3R5cGUgb2YgdGhl
IGZ1bmN0aW9uIHBvaW50ZXIgZm9yIHRoZSBgaW50YC12ZXJzaW9uIG9mIGBJc1Bvc2l0aXZlKClg
LikKKworQXMgYW5vdGhlciBleGFtcGxlLCB3aGVuIHlvdSBoYXZlIGEgdGVtcGxhdGUgZnVuY3Rp
b24KKworYGBgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Jvb2wgSXNOZWdhdGl2ZShUIHgpIHsK
KyAgcmV0dXJuIHggPCAwOworfQorYGBgCisKK3lvdSBjYW4gdXNlIGl0IGluIGEgcHJlZGljYXRl
IGFzc2VydGlvbiBsaWtlIHRoaXM6CisKK2BgYAorQVNTRVJUX1BSRUQxKElzTmVnYXRpdmUqPGlu
dD4qLCAtNSk7CitgYGAKKworVGhpbmdzIGFyZSBtb3JlIGludGVyZXN0aW5nIGlmIHlvdXIgdGVt
cGxhdGUgaGFzIG1vcmUgdGhhbiBvbmUgcGFyYW1ldGVycy4gVGhlCitmb2xsb3dpbmcgd29uJ3Qg
Y29tcGlsZToKKworYGBgCitBU1NFUlRfUFJFRDIoKkdyZWF0ZXJUaGFuPGludCwgaW50PiosIDUs
IDApOworYGBgCisKKworYXMgdGhlIEMrKyBwcmUtcHJvY2Vzc29yIHRoaW5rcyB5b3UgYXJlIGdp
dmluZyBgQVNTRVJUX1BSRUQyYCA0IGFyZ3VtZW50cywKK3doaWNoIGlzIG9uZSBtb3JlIHRoYW4g
ZXhwZWN0ZWQuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIHdyYXAgdGhlIHByZWRpY2F0ZQorZnVuY3Rp
b24gaW4gcGFyZW50aGVzZXM6CisKK2BgYAorQVNTRVJUX1BSRUQyKCooR3JlYXRlclRoYW48aW50
LCBpbnQ+KSosIDUsIDApOworYGBgCisKKworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0
ICJpZ25vcmluZyByZXR1cm4gdmFsdWUiIHdoZW4gSSBjYWxsIFJVTlxfQUxMXF9URVNUUygpLiBX
aHk/ICMjCisKK1NvbWUgcGVvcGxlIGhhZCBiZWVuIGlnbm9yaW5nIHRoZSByZXR1cm4gdmFsdWUg
b2YgYFJVTl9BTExfVEVTVFMoKWAuIFRoYXQgaXMsCitpbnN0ZWFkIG9mCisKK2BgYAorcmV0dXJu
IFJVTl9BTExfVEVTVFMoKTsKK2BgYAorCit0aGV5IHdyaXRlCisKK2BgYAorUlVOX0FMTF9URVNU
UygpOworYGBgCisKK1RoaXMgaXMgd3JvbmcgYW5kIGRhbmdlcm91cy4gQSB0ZXN0IHJ1bm5lciBu
ZWVkcyB0byBzZWUgdGhlIHJldHVybiB2YWx1ZSBvZgorYFJVTl9BTExfVEVTVFMoKWAgaW4gb3Jk
ZXIgdG8gZGV0ZXJtaW5lIGlmIGEgdGVzdCBoYXMgcGFzc2VkLiBJZiB5b3VyIGBtYWluKClgCitm
dW5jdGlvbiBpZ25vcmVzIGl0LCB5b3VyIHRlc3Qgd2lsbCBiZSBjb25zaWRlcmVkIHN1Y2Nlc3Nm
dWwgZXZlbiBpZiBpdCBoYXMgYQorR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIGZhaWx1cmUuIFZlcnkg
YmFkLgorCitUbyBoZWxwIHRoZSB1c2VycyBhdm9pZCB0aGlzIGRhbmdlcm91cyBidWcsIHRoZSBp
bXBsZW1lbnRhdGlvbiBvZgorYFJVTl9BTExfVEVTVFMoKWAgY2F1c2VzIGdjYyB0byByYWlzZSB0
aGlzIHdhcm5pbmcsIHdoZW4gdGhlIHJldHVybiB2YWx1ZSBpcworaWdub3JlZC4gSWYgeW91IHNl
ZSB0aGlzIHdhcm5pbmcsIHRoZSBmaXggaXMgc2ltcGxlOiBqdXN0IG1ha2Ugc3VyZSBpdHMgdmFs
dWUKK2lzIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZSBvZiBgbWFpbigpYC4KKworIyMgTXkgY29t
cGlsZXIgY29tcGxhaW5zIHRoYXQgYSBjb25zdHJ1Y3RvciAob3IgZGVzdHJ1Y3RvcikgY2Fubm90
IHJldHVybiBhIHZhbHVlLiBXaGF0J3MgZ29pbmcgb24/ICMjCisKK0R1ZSB0byBhIHBlY3VsaWFy
aXR5IG9mIEMrKywgaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGUgc3ludGF4IGZvciBzdHJlYW1pbmcK
K21lc3NhZ2VzIHRvIGFuIGBBU1NFUlRfKmAsIGUuZy4KKworYGBgCitBU1NFUlRfRVEoMSwgRm9v
KCkpIDw8ICJibGFoIGJsYWgiIDw8IGZvbzsKK2BgYAorCit3ZSBoYWQgdG8gZ2l2ZSB1cCB1c2lu
ZyBgQVNTRVJUKmAgYW5kIGBGQUlMKmAgKGJ1dCBub3QgYEVYUEVDVCpgIGFuZAorYEFERF9GQUlM
VVJFKmApIGluIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMuIFRoZSB3b3JrYXJvdW5kIGlz
IHRvIG1vdmUgdGhlCitjb250ZW50IG9mIHlvdXIgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciB0byBh
IHByaXZhdGUgdm9pZCBtZW1iZXIgZnVuY3Rpb24sIG9yCitzd2l0Y2ggdG8gYEVYUEVDVF8qKClg
IGlmIHRoYXQgd29ya3MuIFRoaXMgc2VjdGlvbiBpbiB0aGUgdXNlcidzIGd1aWRlIGV4cGxhaW5z
CitpdC4KKworIyMgTXkgc2V0LXVwIGZ1bmN0aW9uIGlzIG5vdCBjYWxsZWQuIFdoeT8gIyMKKwor
QysrIGlzIGNhc2Utc2Vuc2l0aXZlLiBJdCBzaG91bGQgYmUgc3BlbGxlZCBhcyBgU2V0VXAoKWAu
ICBEaWQgeW91CitzcGVsbCBpdCBhcyBgU2V0dXAoKWA/CisKK1NpbWlsYXJseSwgc29tZXRpbWVz
IHBlb3BsZSBzcGVsbCBgU2V0VXBUZXN0Q2FzZSgpYCBhcyBgU2V0dXBUZXN0Q2FzZSgpYCBhbmQK
K3dvbmRlciB3aHkgaXQncyBuZXZlciBjYWxsZWQuCisKKyMjIEhvdyBkbyBJIGp1bXAgdG8gdGhl
IGxpbmUgb2YgYSBmYWlsdXJlIGluIEVtYWNzIGRpcmVjdGx5PyAjIworCitHb29nbGUgVGVzdCdz
IGZhaWx1cmUgbWVzc2FnZSBmb3JtYXQgaXMgdW5kZXJzdG9vZCBieSBFbWFjcyBhbmQgbWFueSBv
dGhlcgorSURFcywgbGlrZSBhY21lIGFuZCBYQ29kZS4gSWYgYSBHb29nbGUgVGVzdCBtZXNzYWdl
IGlzIGluIGEgY29tcGlsYXRpb24gYnVmZmVyCitpbiBFbWFjcywgdGhlbiBpdCdzIGNsaWNrYWJs
ZS4gWW91IGNhbiBub3cgaGl0IGBlbnRlcmAgb24gYSBtZXNzYWdlIHRvIGp1bXAgdG8KK3RoZSBj
b3JyZXNwb25kaW5nIHNvdXJjZSBjb2RlLCBvciB1c2UgYEMteCBgYCB0byBqdW1wIHRvIHRoZSBu
ZXh0IGZhaWx1cmUuCisKKyMjIEkgaGF2ZSBzZXZlcmFsIHRlc3QgY2FzZXMgd2hpY2ggc2hhcmUg
dGhlIHNhbWUgdGVzdCBmaXh0dXJlIGxvZ2ljLCBkbyBJIGhhdmUgdG8gZGVmaW5lIGEgbmV3IHRl
c3QgZml4dHVyZSBjbGFzcyBmb3IgZWFjaCBvZiB0aGVtPyBUaGlzIHNlZW1zIHByZXR0eSB0ZWRp
b3VzLiAjIworCitZb3UgZG9uJ3QgaGF2ZSB0by4gSW5zdGVhZCBvZgorCitgYGAKK2NsYXNzIEZv
b1Rlc3QgOiBwdWJsaWMgQmFzZVRlc3Qge307CisKK1RFU1RfRihGb29UZXN0LCBBYmMpIHsgLi4u
IH0KK1RFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0KKworY2xhc3MgQmFyVGVzdCA6IHB1Ymxp
YyBCYXNlVGVzdCB7fTsKKworVEVTVF9GKEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJh
clRlc3QsIERlZikgeyAuLi4gfQorYGBgCisKK3lvdSBjYW4gc2ltcGx5IGB0eXBlZGVmYCB0aGUg
dGVzdCBmaXh0dXJlczoKK2BgYAordHlwZWRlZiBCYXNlVGVzdCBGb29UZXN0OworCitURVNUX0Yo
Rm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9CisKK3R5
cGVkZWYgQmFzZVRlc3QgQmFyVGVzdDsKKworVEVTVF9GKEJhclRlc3QsIEFiYykgeyAuLi4gfQor
VEVTVF9GKEJhclRlc3QsIERlZikgeyAuLi4gfQorYGBgCisKKyMjIFRoZSBHb29nbGUgVGVzdCBv
dXRwdXQgaXMgYnVyaWVkIGluIGEgd2hvbGUgYnVuY2ggb2YgbG9nIG1lc3NhZ2VzLiBXaGF0IGRv
IEkgZG8/ICMjCisKK1RoZSBHb29nbGUgVGVzdCBvdXRwdXQgaXMgbWVhbnQgdG8gYmUgYSBjb25j
aXNlIGFuZCBodW1hbi1mcmllbmRseSByZXBvcnQuIElmCit5b3VyIHRlc3QgZ2VuZXJhdGVzIHRl
eHR1YWwgb3V0cHV0IGl0c2VsZiwgaXQgd2lsbCBtaXggd2l0aCB0aGUgR29vZ2xlIFRlc3QKK291
dHB1dCwgbWFraW5nIGl0IGhhcmQgdG8gcmVhZC4gSG93ZXZlciwgdGhlcmUgaXMgYW4gZWFzeSBz
b2x1dGlvbiB0byB0aGlzCitwcm9ibGVtLgorCitTaW5jZSBtb3N0IGxvZyBtZXNzYWdlcyBnbyB0
byBzdGRlcnIsIHdlIGRlY2lkZWQgdG8gbGV0IEdvb2dsZSBUZXN0IG91dHB1dCBnbwordG8gc3Rk
b3V0LiBUaGlzIHdheSwgeW91IGNhbiBlYXNpbHkgc2VwYXJhdGUgdGhlIHR3byB1c2luZyByZWRp
cmVjdGlvbi4gRm9yCitleGFtcGxlOgorYGBgCisuL215X3Rlc3QgPiBnb29nbGV0ZXN0X291dHB1
dC50eHQKK2BgYAorCisjIyBXaHkgc2hvdWxkIEkgcHJlZmVyIHRlc3QgZml4dHVyZXMgb3ZlciBn
bG9iYWwgdmFyaWFibGVzPyAjIworCitUaGVyZSBhcmUgc2V2ZXJhbCBnb29kIHJlYXNvbnM6Cisg
IDEuIEl0J3MgbGlrZWx5IHlvdXIgdGVzdCBuZWVkcyB0byBjaGFuZ2UgdGhlIHN0YXRlcyBvZiBp
dHMgZ2xvYmFsIHZhcmlhYmxlcy4gVGhpcyBtYWtlcyBpdCBkaWZmaWN1bHQgdG8ga2VlcCBzaWRl
IGVmZmVjdHMgZnJvbSBlc2NhcGluZyBvbmUgdGVzdCBhbmQgY29udGFtaW5hdGluZyBvdGhlcnMs
IG1ha2luZyBkZWJ1Z2dpbmcgZGlmZmljdWx0LiBCeSB1c2luZyBmaXh0dXJlcywgZWFjaCB0ZXN0
IGhhcyBhIGZyZXNoIHNldCBvZiB2YXJpYWJsZXMgdGhhdCdzIGRpZmZlcmVudCAoYnV0IHdpdGgg
dGhlIHNhbWUgbmFtZXMpLiBUaHVzLCB0ZXN0cyBhcmUga2VwdCBpbmRlcGVuZGVudCBvZiBlYWNo
IG90aGVyLgorICAxLiBHbG9iYWwgdmFyaWFibGVzIHBvbGx1dGUgdGhlIGdsb2JhbCBuYW1lc3Bh
Y2UuCisgIDEuIFRlc3QgZml4dHVyZXMgY2FuIGJlIHJldXNlZCB2aWEgc3ViY2xhc3NpbmcsIHdo
aWNoIGNhbm5vdCBiZSBkb25lIGVhc2lseSB3aXRoIGdsb2JhbCB2YXJpYWJsZXMuIFRoaXMgaXMg
dXNlZnVsIGlmIG1hbnkgdGVzdCBjYXNlcyBoYXZlIHNvbWV0aGluZyBpbiBjb21tb24uCisKKyMj
IEhvdyBkbyBJIHRlc3QgcHJpdmF0ZSBjbGFzcyBtZW1iZXJzIHdpdGhvdXQgd3JpdGluZyBGUklF
TkRcX1RFU1QoKXM/ICMjCisKK1lvdSBzaG91bGQgdHJ5IHRvIHdyaXRlIHRlc3RhYmxlIGNvZGUs
IHdoaWNoIG1lYW5zIGNsYXNzZXMgc2hvdWxkIGJlIGVhc2lseQordGVzdGVkIGZyb20gdGhlaXIg
cHVibGljIGludGVyZmFjZS4gT25lIHdheSB0byBhY2hpZXZlIHRoaXMgaXMgdGhlIFBpbXBsIGlk
aW9tOgoreW91IG1vdmUgYWxsIHByaXZhdGUgbWVtYmVycyBvZiBhIGNsYXNzIGludG8gYSBoZWxw
ZXIgY2xhc3MsIGFuZCBtYWtlIGFsbAorbWVtYmVycyBvZiB0aGUgaGVscGVyIGNsYXNzIHB1Ymxp
Yy4KKworWW91IGhhdmUgc2V2ZXJhbCBvdGhlciBvcHRpb25zIHRoYXQgZG9uJ3QgcmVxdWlyZSB1
c2luZyBgRlJJRU5EX1RFU1RgOgorICAqIFdyaXRlIHRoZSB0ZXN0cyBhcyBtZW1iZXJzIG9mIHRo
ZSBmaXh0dXJlIGNsYXNzOgorYGBgCitjbGFzcyBGb28geworICBmcmllbmQgY2xhc3MgRm9vVGVz
dDsKKyAgLi4uCit9OworCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
CisgcHJvdGVjdGVkOgorICAuLi4KKyAgdm9pZCBUZXN0MSgpIHsuLi59IC8vIFRoaXMgYWNjZXNz
ZXMgcHJpdmF0ZSBtZW1iZXJzIG9mIGNsYXNzIEZvby4KKyAgdm9pZCBUZXN0MigpIHsuLi59IC8v
IFNvIGRvZXMgdGhpcyBvbmUuCit9OworCitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgVGVz
dDEoKTsKK30KKworVEVTVF9GKEZvb1Rlc3QsIFRlc3QyKSB7CisgIFRlc3QyKCk7Cit9CitgYGAK
KyAgKiBJbiB0aGUgZml4dHVyZSBjbGFzcywgd3JpdGUgYWNjZXNzb3JzIGZvciB0aGUgdGVzdGVk
IGNsYXNzJyBwcml2YXRlIG1lbWJlcnMsIHRoZW4gdXNlIHRoZSBhY2Nlc3NvcnMgaW4geW91ciB0
ZXN0czoKK2BgYAorY2xhc3MgRm9vIHsKKyAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7CisgIC4uLgor
fTsKKworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3Rl
ZDoKKyAgLi4uCisgIFQxIGdldF9wcml2YXRlX21lbWJlcjEoRm9vKiBvYmopIHsKKyAgICByZXR1
cm4gb2JqLT5wcml2YXRlX21lbWJlcjFfOworICB9Cit9OworCitURVNUX0YoRm9vVGVzdCwgVGVz
dDEpIHsKKyAgLi4uCisgIGdldF9wcml2YXRlX21lbWJlcjEoeCkKKyAgLi4uCit9CitgYGAKKyAg
KiBJZiB0aGUgbWV0aG9kcyBhcmUgZGVjbGFyZWQgKipwcm90ZWN0ZWQqKiwgeW91IGNhbiBjaGFu
Z2UgdGhlaXIgYWNjZXNzIGxldmVsIGluIGEgdGVzdC1vbmx5IHN1YmNsYXNzOgorYGBgCitjbGFz
cyBZb3VyQ2xhc3MgeworICAuLi4KKyBwcm90ZWN0ZWQ6IC8vIHByb3RlY3RlZCBhY2Nlc3MgZm9y
IHRlc3RhYmlsaXR5LgorICBpbnQgRG9Tb21ldGhpbmdSZXR1cm5pbmdJbnQoKTsKKyAgLi4uCit9
OworCisvLyBpbiB0aGUgeW91cl9jbGFzc190ZXN0LmNjIGZpbGU6CitjbGFzcyBUZXN0YWJsZVlv
dXJDbGFzcyA6IHB1YmxpYyBZb3VyQ2xhc3MgeworICAuLi4KKyBwdWJsaWM6IHVzaW5nIFlvdXJD
bGFzczo6RG9Tb21ldGhpbmdSZXR1cm5pbmdJbnQ7IC8vIGNoYW5nZXMgYWNjZXNzIHJpZ2h0cwor
ICAuLi4KK307CisKK1RFU1RfRihZb3VyQ2xhc3NUZXN0LCBEb1NvbWV0aGluZ1Rlc3QpIHsKKyAg
VGVzdGFibGVZb3VyQ2xhc3Mgb2JqOworICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWRfdmFsdWUsIG9i
ai5Eb1NvbWV0aGluZ1JldHVybmluZ0ludCgpKTsKK30KK2BgYAorCisjIyBIb3cgZG8gSSB0ZXN0
IHByaXZhdGUgY2xhc3Mgc3RhdGljIG1lbWJlcnMgd2l0aG91dCB3cml0aW5nIEZSSUVORFxfVEVT
VCgpcz8gIyMKKworV2UgZmluZCBwcml2YXRlIHN0YXRpYyBtZXRob2RzIGNsdXR0ZXIgdGhlIGhl
YWRlciBmaWxlLiAgVGhleSBhcmUKK2ltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIGlkZWFsbHkg
c2hvdWxkIGJlIGtlcHQgb3V0IG9mIGEgLmguIFNvIG9mdGVuIEkgbWFrZQordGhlbSBmcmVlIGZ1
bmN0aW9ucyBpbnN0ZWFkLgorCitJbnN0ZWFkIG9mOgorYGBgCisvLyBmb28uaAorY2xhc3MgRm9v
IHsKKyAgLi4uCisgcHJpdmF0ZToKKyAgc3RhdGljIGJvb2wgRnVuYyhpbnQgbik7Cit9OworCisv
LyBmb28uY2MKK2Jvb2wgRm9vOjpGdW5jKGludCBuKSB7IC4uLiB9CisKKy8vIGZvb190ZXN0LmNj
CitFWFBFQ1RfVFJVRShGb286OkZ1bmMoMTIzNDUpKTsKK2BgYAorCitZb3UgcHJvYmFibHkgc2hv
dWxkIGJldHRlciB3cml0ZToKK2BgYAorLy8gZm9vLmgKK2NsYXNzIEZvbyB7CisgIC4uLgorfTsK
KworLy8gZm9vLmNjCituYW1lc3BhY2UgaW50ZXJuYWwgeworICBib29sIEZ1bmMoaW50IG4pIHsg
Li4uIH0KK30KKworLy8gZm9vX3Rlc3QuY2MKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisgIGJvb2wg
RnVuYyhpbnQgbik7Cit9CisKK0VYUEVDVF9UUlVFKGludGVybmFsOjpGdW5jKDEyMzQ1KSk7Citg
YGAKKworIyMgSSB3b3VsZCBsaWtlIHRvIHJ1biBhIHRlc3Qgc2V2ZXJhbCB0aW1lcyB3aXRoIGRp
ZmZlcmVudCBwYXJhbWV0ZXJzLiBEbyBJIG5lZWQgdG8gd3JpdGUgc2V2ZXJhbCBzaW1pbGFyIGNv
cGllcyBvZiBpdD8gIyMKKworTm8uIFlvdSBjYW4gdXNlIGEgZmVhdHVyZSBjYWxsZWQgW3ZhbHVl
LXBhcmFtZXRlcml6ZWQgdGVzdHNdKFYxXzdfQWR2YW5jZWRHdWlkZS5tZCNWYWx1ZV9QYXJhbWV0
ZXJpemVkX1Rlc3RzKSB3aGljaAorbGV0cyB5b3UgcmVwZWF0IHlvdXIgdGVzdHMgd2l0aCBkaWZm
ZXJlbnQgcGFyYW1ldGVycywgd2l0aG91dCBkZWZpbmluZyBpdCBtb3JlIHRoYW4gb25jZS4KKwor
IyMgSG93IGRvIEkgdGVzdCBhIGZpbGUgdGhhdCBkZWZpbmVzIG1haW4oKT8gIyMKKworVG8gdGVz
dCBhIGBmb28uY2NgIGZpbGUsIHlvdSBuZWVkIHRvIGNvbXBpbGUgYW5kIGxpbmsgaXQgaW50byB5
b3VyIHVuaXQgdGVzdAorcHJvZ3JhbS4gSG93ZXZlciwgd2hlbiB0aGUgZmlsZSBjb250YWlucyBh
IGRlZmluaXRpb24gZm9yIHRoZSBgbWFpbigpYAorZnVuY3Rpb24sIGl0IHdpbGwgY2xhc2ggd2l0
aCB0aGUgYG1haW4oKWAgb2YgeW91ciB1bml0IHRlc3QsIGFuZCB3aWxsIHJlc3VsdCBpbgorYSBi
dWlsZCBlcnJvci4KKworVGhlIHJpZ2h0IHNvbHV0aW9uIGlzIHRvIHNwbGl0IGl0IGludG8gdGhy
ZWUgZmlsZXM6CisgIDEuIGBmb28uaGAgd2hpY2ggY29udGFpbnMgdGhlIGRlY2xhcmF0aW9ucywK
KyAgMS4gYGZvby5jY2Agd2hpY2ggY29udGFpbnMgdGhlIGRlZmluaXRpb25zIGV4Y2VwdCBgbWFp
bigpYCwgYW5kCisgIDEuIGBmb29fbWFpbi5jY2Agd2hpY2ggY29udGFpbnMgbm90aGluZyBidXQg
dGhlIGRlZmluaXRpb24gb2YgYG1haW4oKWAuCisKK1RoZW4gYGZvby5jY2AgY2FuIGJlIGVhc2ls
eSB0ZXN0ZWQuCisKK0lmIHlvdSBhcmUgYWRkaW5nIHRlc3RzIHRvIGFuIGV4aXN0aW5nIGZpbGUg
YW5kIGRvbid0IHdhbnQgYW4gaW50cnVzaXZlIGNoYW5nZQorbGlrZSB0aGlzLCB0aGVyZSBpcyBh
IGhhY2s6IGp1c3QgaW5jbHVkZSB0aGUgZW50aXJlIGBmb28uY2NgIGZpbGUgaW4geW91ciB1bml0
Cit0ZXN0LiBGb3IgZXhhbXBsZToKK2BgYAorLy8gRmlsZSBmb29fdW5pdHRlc3QuY2MKKworLy8g
VGhlIGhlYWRlcnMgc2VjdGlvbgorLi4uCisKKy8vIFJlbmFtZXMgbWFpbigpIGluIGZvby5jYyB0
byBtYWtlIHJvb20gZm9yIHRoZSB1bml0IHRlc3QgbWFpbigpCisjZGVmaW5lIG1haW4gRm9vTWFp
bgorCisjaW5jbHVkZSAiYS9iL2Zvby5jYyIKKworLy8gVGhlIHRlc3RzIHN0YXJ0IGhlcmUuCisu
Li4KK2BgYAorCisKK0hvd2V2ZXIsIHBsZWFzZSByZW1lbWJlciB0aGlzIGlzIGEgaGFjayBhbmQg
c2hvdWxkIG9ubHkgYmUgdXNlZCBhcyB0aGUgbGFzdAorcmVzb3J0LgorCisjIyBXaGF0IGNhbiB0
aGUgc3RhdGVtZW50IGFyZ3VtZW50IGluIEFTU0VSVFxfREVBVEgoKSBiZT8gIyMKKworYEFTU0VS
VF9ERUFUSChfc3RhdGVtZW50XywgX3JlZ2V4XylgIChvciBhbnkgZGVhdGggYXNzZXJ0aW9uIG1h
Y3JvKSBjYW4gYmUgdXNlZAord2hlcmV2ZXIgYF9zdGF0ZW1lbnRfYCBpcyB2YWxpZC4gU28gYmFz
aWNhbGx5IGBfc3RhdGVtZW50X2AgY2FuIGJlIGFueSBDKysKK3N0YXRlbWVudCB0aGF0IG1ha2Vz
IHNlbnNlIGluIHRoZSBjdXJyZW50IGNvbnRleHQuIEluIHBhcnRpY3VsYXIsIGl0IGNhbgorcmVm
ZXJlbmNlIGdsb2JhbCBhbmQvb3IgbG9jYWwgdmFyaWFibGVzLCBhbmQgY2FuIGJlOgorICAqIGEg
c2ltcGxlIGZ1bmN0aW9uIGNhbGwgKG9mdGVuIHRoZSBjYXNlKSwKKyAgKiBhIGNvbXBsZXggZXhw
cmVzc2lvbiwgb3IKKyAgKiBhIGNvbXBvdW5kIHN0YXRlbWVudC4KKworPiBTb21lIGV4YW1wbGVz
IGFyZSBzaG93biBoZXJlOgorCitgYGAKKy8vIEEgZGVhdGggdGVzdCBjYW4gYmUgYSBzaW1wbGUg
ZnVuY3Rpb24gY2FsbC4KK1RFU1QoTXlEZWF0aFRlc3QsIEZ1bmN0aW9uQ2FsbCkgeworICBBU1NF
UlRfREVBVEgoWHl6KDUpLCAiWHl6IGZhaWxlZCIpOworfQorCisvLyBPciBhIGNvbXBsZXggZXhw
cmVzc2lvbiB0aGF0IHJlZmVyZW5jZXMgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMuCitURVNUKE15
RGVhdGhUZXN0LCBDb21wbGV4RXhwcmVzc2lvbikgeworICBjb25zdCBib29sIGMgPSBDb25kaXRp
b24oKTsKKyAgQVNTRVJUX0RFQVRIKChjID8gRnVuYzEoMCkgOiBvYmplY3QyLk1ldGhvZCgidGVz
dCIpKSwKKyAgICAgICAgICAgICAgICIoRnVuYzF8TWV0aG9kKSBmYWlsZWQiKTsKK30KKworLy8g
RGVhdGggYXNzZXJ0aW9ucyBjYW4gYmUgdXNlZCBhbnkgd2hlcmUgaW4gYSBmdW5jdGlvbi4gSW4K
Ky8vIHBhcnRpY3VsYXIsIHRoZXkgY2FuIGJlIGluc2lkZSBhIGxvb3AuCitURVNUKE15RGVhdGhU
ZXN0LCBJbnNpZGVMb29wKSB7CisgIC8vIFZlcmlmaWVzIHRoYXQgRm9vKDApLCBGb28oMSksIC4u
LiwgYW5kIEZvbyg0KSBhbGwgZGllLgorICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgewor
ICAgIEVYUEVDVF9ERUFUSF9NKEZvbyhpKSwgIkZvbyBoYXMgXFxkKyBlcnJvcnMiLAorICAgICAg
ICAgICAgICAgICAgIDo6dGVzdGluZzo6TWVzc2FnZSgpIDw8ICJ3aGVyZSBpIGlzICIgPDwgaSk7
CisgIH0KK30KKworLy8gQSBkZWF0aCBhc3NlcnRpb24gY2FuIGNvbnRhaW4gYSBjb21wb3VuZCBz
dGF0ZW1lbnQuCitURVNUKE15RGVhdGhUZXN0LCBDb21wb3VuZFN0YXRlbWVudCkgeworICAvLyBW
ZXJpZmllcyB0aGF0IGF0IGxlYXNlIG9uZSBvZiBCYXIoMCksIEJhcigxKSwgLi4uLCBhbmQKKyAg
Ly8gQmFyKDQpIGRpZXMuCisgIEFTU0VSVF9ERUFUSCh7CisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCA1OyBpKyspIHsKKyAgICAgIEJhcihpKTsKKyAgICB9CisgIH0sCisgICJCYXIgaGFzIFxcZCsg
ZXJyb3JzIik7fQorYGBgCisKK2Bnb29nbGV0ZXN0X3VuaXR0ZXN0LmNjYCBjb250YWlucyBtb3Jl
IGV4YW1wbGVzIGlmIHlvdSBhcmUgaW50ZXJlc3RlZC4KKworIyMgV2hhdCBzeW50YXggZG9lcyB0
aGUgcmVndWxhciBleHByZXNzaW9uIGluIEFTU0VSVFxfREVBVEggdXNlPyAjIworCitPbiBQT1NJ
WCBzeXN0ZW1zLCBHb29nbGUgVGVzdCB1c2VzIHRoZSBQT1NJWCBFeHRlbmRlZCByZWd1bGFyCitl
eHByZXNzaW9uIHN5bnRheAorKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVndWxhcl9l
eHByZXNzaW9uI1BPU0lYX0V4dGVuZGVkX1JlZ3VsYXJfRXhwcmVzc2lvbnMpLgorT24gV2luZG93
cywgaXQgdXNlcyBhIGxpbWl0ZWQgdmFyaWFudCBvZiByZWd1bGFyIGV4cHJlc3Npb24KK3N5bnRh
eC4gRm9yIG1vcmUgZGV0YWlscywgc2VlIHRoZQorW3JlZ3VsYXIgZXhwcmVzc2lvbiBzeW50YXhd
KFYxXzdfQWR2YW5jZWRHdWlkZS5tZCNSZWd1bGFyX0V4cHJlc3Npb25fU3ludGF4KS4KKworIyMg
SSBoYXZlIGEgZml4dHVyZSBjbGFzcyBGb28sIGJ1dCBURVNUXF9GKEZvbywgQmFyKSBnaXZlcyBt
ZSBlcnJvciAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gZm9yIGNhbGwgdG8gRm9vOjpGb28oKSIuIFdo
eT8gIyMKKworR29vZ2xlIFRlc3QgbmVlZHMgdG8gYmUgYWJsZSB0byBjcmVhdGUgb2JqZWN0cyBv
ZiB5b3VyIHRlc3QgZml4dHVyZSBjbGFzcywgc28KK2l0IG11c3QgaGF2ZSBhIGRlZmF1bHQgY29u
c3RydWN0b3IuIE5vcm1hbGx5IHRoZSBjb21waWxlciB3aWxsIGRlZmluZSBvbmUgZm9yCit5b3Uu
IEhvd2V2ZXIsIHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB5b3UgaGF2ZSB0byBkZWZpbmUgeW91ciBv
d246CisgICogSWYgeW91IGV4cGxpY2l0bHkgZGVjbGFyZSBhIG5vbi1kZWZhdWx0IGNvbnN0cnVj
dG9yIGZvciBjbGFzcyBgRm9vYCwgdGhlbiB5b3UgbmVlZCB0byBkZWZpbmUgYSBkZWZhdWx0IGNv
bnN0cnVjdG9yLCBldmVuIGlmIGl0IHdvdWxkIGJlIGVtcHR5LgorICAqIElmIGBGb29gIGhhcyBh
IGNvbnN0IG5vbi1zdGF0aWMgZGF0YSBtZW1iZXIsIHRoZW4geW91IGhhdmUgdG8gZGVmaW5lIHRo
ZSBkZWZhdWx0IGNvbnN0cnVjdG9yIF9hbmRfIGluaXRpYWxpemUgdGhlIGNvbnN0IG1lbWJlciBp
biB0aGUgaW5pdGlhbGl6ZXIgbGlzdCBvZiB0aGUgY29uc3RydWN0b3IuIChFYXJseSB2ZXJzaW9u
cyBvZiBgZ2NjYCBkb2Vzbid0IGZvcmNlIHlvdSB0byBpbml0aWFsaXplIHRoZSBjb25zdCBtZW1i
ZXIuIEl0J3MgYSBidWcgdGhhdCBoYXMgYmVlbiBmaXhlZCBpbiBgZ2NjIDRgLikKKworIyMgV2h5
IGRvZXMgQVNTRVJUXF9ERUFUSCBjb21wbGFpbiBhYm91dCBwcmV2aW91cyB0aHJlYWRzIHRoYXQg
d2VyZSBhbHJlYWR5IGpvaW5lZD8gIyMKKworV2l0aCB0aGUgTGludXggcHRocmVhZCBsaWJyYXJ5
LCB0aGVyZSBpcyBubyB0dXJuaW5nIGJhY2sgb25jZSB5b3UgY3Jvc3MgdGhlCitsaW5lIGZyb20g
c2luZ2xlIHRocmVhZCB0byBtdWx0aXBsZSB0aHJlYWRzLiBUaGUgZmlyc3QgdGltZSB5b3UgY3Jl
YXRlIGEKK3RocmVhZCwgYSBtYW5hZ2VyIHRocmVhZCBpcyBjcmVhdGVkIGluIGFkZGl0aW9uLCBz
byB5b3UgZ2V0IDMsIG5vdCAyLCB0aHJlYWRzLgorTGF0ZXIgd2hlbiB0aGUgdGhyZWFkIHlvdSBj
cmVhdGUgam9pbnMgdGhlIG1haW4gdGhyZWFkLCB0aGUgdGhyZWFkIGNvdW50CitkZWNyZW1lbnRz
IGJ5IDEsIGJ1dCB0aGUgbWFuYWdlciB0aHJlYWQgd2lsbCBuZXZlciBiZSBraWxsZWQsIHNvIHlv
dSBzdGlsbCBoYXZlCisyIHRocmVhZHMsIHdoaWNoIG1lYW5zIHlvdSBjYW5ub3Qgc2FmZWx5IHJ1
biBhIGRlYXRoIHRlc3QuCisKK1RoZSBuZXcgTlBUTCB0aHJlYWQgbGlicmFyeSBkb2Vzbid0IHN1
ZmZlciBmcm9tIHRoaXMgcHJvYmxlbSwgYXMgaXQgZG9lc24ndAorY3JlYXRlIGEgbWFuYWdlciB0
aHJlYWQuIEhvd2V2ZXIsIGlmIHlvdSBkb24ndCBjb250cm9sIHdoaWNoIG1hY2hpbmUgeW91ciB0
ZXN0CitydW5zIG9uLCB5b3Ugc2hvdWxkbid0IGRlcGVuZCBvbiB0aGlzLgorCisjIyBXaHkgZG9l
cyBHb29nbGUgVGVzdCByZXF1aXJlIHRoZSBlbnRpcmUgdGVzdCBjYXNlLCBpbnN0ZWFkIG9mIGlu
ZGl2aWR1YWwgdGVzdHMsIHRvIGJlIG5hbWVkIEZPT0RlYXRoVGVzdCB3aGVuIGl0IHVzZXMgQVNT
RVJUXF9ERUFUSD8gIyMKKworR29vZ2xlIFRlc3QgZG9lcyBub3QgaW50ZXJsZWF2ZSB0ZXN0cyBm
cm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLiBUaGF0IGlzLCBpdAorcnVucyBhbGwgdGVzdHMgaW4g
b25lIHRlc3QgY2FzZSBmaXJzdCwgYW5kIHRoZW4gcnVucyBhbGwgdGVzdHMgaW4gdGhlIG5leHQg
dGVzdAorY2FzZSwgYW5kIHNvIG9uLiBHb29nbGUgVGVzdCBkb2VzIHRoaXMgYmVjYXVzZSBpdCBu
ZWVkcyB0byBzZXQgdXAgYSB0ZXN0IGNhc2UKK2JlZm9yZSB0aGUgZmlyc3QgdGVzdCBpbiBpdCBp
cyBydW4sIGFuZCB0ZWFyIGl0IGRvd24gYWZ0ZXJ3b3Jkcy4gU3BsaXR0aW5nIHVwCit0aGUgdGVz
dCBjYXNlIHdvdWxkIHJlcXVpcmUgbXVsdGlwbGUgc2V0LXVwIGFuZCB0ZWFyLWRvd24gcHJvY2Vz
c2VzLCB3aGljaCBpcworaW5lZmZpY2llbnQgYW5kIG1ha2VzIHRoZSBzZW1hbnRpY3MgdW5jbGVh
bi4KKworSWYgd2Ugd2VyZSB0byBkZXRlcm1pbmUgdGhlIG9yZGVyIG9mIHRlc3RzIGJhc2VkIG9u
IHRlc3QgbmFtZSBpbnN0ZWFkIG9mIHRlc3QKK2Nhc2UgbmFtZSwgdGhlbiB3ZSB3b3VsZCBoYXZl
IGEgcHJvYmxlbSB3aXRoIHRoZSBmb2xsb3dpbmcgc2l0dWF0aW9uOgorCitgYGAKK1RFU1RfRihG
b29UZXN0LCBBYmNEZWF0aFRlc3QpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBVdncpIHsgLi4u
IH0KKworVEVTVF9GKEJhclRlc3QsIERlZkRlYXRoVGVzdCkgeyAuLi4gfQorVEVTVF9GKEJhclRl
c3QsIFh5eikgeyAuLi4gfQorYGBgCisKK1NpbmNlIGBGb29UZXN0LkFiY0RlYXRoVGVzdGAgbmVl
ZHMgdG8gcnVuIGJlZm9yZSBgQmFyVGVzdC5YeXpgLCBhbmQgd2UgZG9uJ3QKK2ludGVybGVhdmUg
dGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcywgd2UgbmVlZCB0byBydW4gYWxsIHRlc3Rz
IGluIHRoZQorYEZvb1Rlc3RgIGNhc2UgYmVmb3JlIHJ1bm5pbmcgYW55IHRlc3QgaW4gdGhlIGBC
YXJUZXN0YCBjYXNlLiBUaGlzIGNvbnRyYWRpY3RzCit3aXRoIHRoZSByZXF1aXJlbWVudCB0byBy
dW4gYEJhclRlc3QuRGVmRGVhdGhUZXN0YCBiZWZvcmUgYEZvb1Rlc3QuVXZ3YC4KKworIyMgQnV0
IEkgZG9uJ3QgbGlrZSBjYWxsaW5nIG15IGVudGlyZSB0ZXN0IGNhc2UgRk9PRGVhdGhUZXN0IHdo
ZW4gaXQgY29udGFpbnMgYm90aCBkZWF0aCB0ZXN0cyBhbmQgbm9uLWRlYXRoIHRlc3RzLiBXaGF0
IGRvIEkgZG8/ICMjCisKK1lvdSBkb24ndCBoYXZlIHRvLCBidXQgaWYgeW91IGxpa2UsIHlvdSBt
YXkgc3BsaXQgdXAgdGhlIHRlc3QgY2FzZSBpbnRvCitgRm9vVGVzdGAgYW5kIGBGb29EZWF0aFRl
c3RgLCB3aGVyZSB0aGUgbmFtZXMgbWFrZSBpdCBjbGVhciB0aGF0IHRoZXkgYXJlCityZWxhdGVk
OgorCitgYGAKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07
CisKK1RFU1RfRihGb29UZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBEZWYpIHsg
Li4uIH0KKwordHlwZWRlZiBGb29UZXN0IEZvb0RlYXRoVGVzdDsKKworVEVTVF9GKEZvb0RlYXRo
VGVzdCwgVXZ3KSB7IC4uLiBFWFBFQ1RfREVBVEgoLi4uKSAuLi4gfQorVEVTVF9GKEZvb0RlYXRo
VGVzdCwgWHl6KSB7IC4uLiBBU1NFUlRfREVBVEgoLi4uKSAuLi4gfQorYGBgCisKKyMjIFRoZSBj
b21waWxlciBjb21wbGFpbnMgYWJvdXQgIm5vIG1hdGNoIGZvciAnb3BlcmF0b3I8PCciIHdoZW4g
SSB1c2UgYW4gYXNzZXJ0aW9uLiBXaGF0IGdpdmVzPyAjIworCitJZiB5b3UgdXNlIGEgdXNlci1k
ZWZpbmVkIHR5cGUgYEZvb1R5cGVgIGluIGFuIGFzc2VydGlvbiwgeW91IG11c3QgbWFrZSBzdXJl
Cit0aGVyZSBpcyBhbiBgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYsIGNv
bnN0IEZvb1R5cGUmKWAgZnVuY3Rpb24KK2RlZmluZWQgc3VjaCB0aGF0IHdlIGNhbiBwcmludCBh
IHZhbHVlIG9mIGBGb29UeXBlYC4KKworSW4gYWRkaXRpb24sIGlmIGBGb29UeXBlYCBpcyBkZWNs
YXJlZCBpbiBhIG5hbWUgc3BhY2UsIHRoZSBgPDxgIG9wZXJhdG9yIGFsc28KK25lZWRzIHRvIGJl
IGRlZmluZWQgaW4gdGhlIF9zYW1lXyBuYW1lIHNwYWNlLgorCisjIyBIb3cgZG8gSSBzdXBwcmVz
cyB0aGUgbWVtb3J5IGxlYWsgbWVzc2FnZXMgb24gV2luZG93cz8gIyMKKworU2luY2UgdGhlIHN0
YXRpY2FsbHkgaW5pdGlhbGl6ZWQgR29vZ2xlIFRlc3Qgc2luZ2xldG9uIHJlcXVpcmVzIGFsbG9j
YXRpb25zIG9uCit0aGUgaGVhcCwgdGhlIFZpc3VhbCBDKysgbWVtb3J5IGxlYWsgZGV0ZWN0b3Ig
d2lsbCByZXBvcnQgbWVtb3J5IGxlYWtzIGF0IHRoZQorZW5kIG9mIHRoZSBwcm9ncmFtIHJ1bi4g
VGhlIGVhc2llc3Qgd2F5IHRvIGF2b2lkIHRoaXMgaXMgdG8gdXNlIHRoZQorYF9DcnRNZW1DaGVj
a3BvaW50YCBhbmQgYF9DcnRNZW1EdW1wQWxsT2JqZWN0c1NpbmNlYCBjYWxscyB0byBub3QgcmVw
b3J0IGFueQorc3RhdGljYWxseSBpbml0aWFsaXplZCBoZWFwIG9iamVjdHMuIFNlZSBNU0ROIGZv
ciBtb3JlIGRldGFpbHMgYW5kIGFkZGl0aW9uYWwKK2hlYXAgY2hlY2svZGVidWcgcm91dGluZXMu
CisKKyMjIEkgYW0gYnVpbGRpbmcgbXkgcHJvamVjdCB3aXRoIEdvb2dsZSBUZXN0IGluIFZpc3Vh
bCBTdHVkaW8gYW5kIGFsbCBJJ20gZ2V0dGluZyBpcyBhIGJ1bmNoIG9mIGxpbmtlciBlcnJvcnMg
KG9yIHdhcm5pbmdzKS4gSGVscCEgIyMKKworWW91IG1heSBnZXQgYSBudW1iZXIgb2YgdGhlIGZv
bGxvd2luZyBsaW5rZXIgZXJyb3Igb3Igd2FybmluZ3MgaWYgeW91CithdHRlbXB0IHRvIGxpbmsg
eW91ciB0ZXN0IHByb2plY3Qgd2l0aCB0aGUgR29vZ2xlIFRlc3QgbGlicmFyeSB3aGVuCit5b3Vy
IHByb2plY3QgYW5kIHRoZSBhcmUgbm90IGJ1aWx0IHVzaW5nIHRoZSBzYW1lIGNvbXBpbGVyIHNl
dHRpbmdzLgorCisgICogTE5LMjAwNTogc3ltYm9sIGFscmVhZHkgZGVmaW5lZCBpbiBvYmplY3QK
KyAgKiBMTks0MjE3OiBsb2NhbGx5IGRlZmluZWQgc3ltYm9sICdzeW1ib2wnIGltcG9ydGVkIGlu
IGZ1bmN0aW9uICdmdW5jdGlvbicKKyAgKiBMTks0MDQ5OiBsb2NhbGx5IGRlZmluZWQgc3ltYm9s
ICdzeW1ib2wnIGltcG9ydGVkCisKK1RoZSBHb29nbGUgVGVzdCBwcm9qZWN0IChndGVzdC52Y3By
b2opIGhhcyB0aGUgUnVudGltZSBMaWJyYXJ5IG9wdGlvbgorc2V0IHRvIC9NVCAodXNlIG11bHRp
LXRocmVhZGVkIHN0YXRpYyBsaWJyYXJpZXMsIC9NVGQgZm9yIGRlYnVnKS4gSWYKK3lvdXIgcHJv
amVjdCB1c2VzIHNvbWV0aGluZyBlbHNlLCBmb3IgZXhhbXBsZSAvTUQgKHVzZSBtdWx0aS10aHJl
YWRlZAorRExMcywgL01EZCBmb3IgZGVidWcpLCB5b3UgbmVlZCB0byBjaGFuZ2UgdGhlIHNldHRp
bmcgaW4gdGhlIEdvb2dsZQorVGVzdCBwcm9qZWN0IHRvIG1hdGNoIHlvdXIgcHJvamVjdCdzLgor
CitUbyB1cGRhdGUgdGhpcyBzZXR0aW5nIG9wZW4gdGhlIHByb2plY3QgcHJvcGVydGllcyBpbiB0
aGUgVmlzdWFsCitTdHVkaW8gSURFIHRoZW4gc2VsZWN0IHRoZSBicmFuY2ggQ29uZmlndXJhdGlv
biBQcm9wZXJ0aWVzIHwgQy9DKysgfAorQ29kZSBHZW5lcmF0aW9uIGFuZCBjaGFuZ2UgdGhlIG9w
dGlvbiAiUnVudGltZSBMaWJyYXJ5Ii4gIFlvdSBtYXkgYWxzbyB0cnkKK3VzaW5nIGd0ZXN0LW1k
LnZjcHJvaiBpbnN0ZWFkIG9mIGd0ZXN0LnZjcHJvai4KKworIyMgSSBwdXQgbXkgdGVzdHMgaW4g
YSBsaWJyYXJ5IGFuZCBHb29nbGUgVGVzdCBkb2Vzbid0IHJ1biB0aGVtLiBXaGF0J3MgaGFwcGVu
aW5nPyAjIworSGF2ZSB5b3UgcmVhZCBhCitbd2FybmluZ10oVjFfN19QcmltZXIubWQjaW1wb3J0
YW50LW5vdGUtZm9yLXZpc3VhbC1jLXVzZXJzKSBvbgordGhlIEdvb2dsZSBUZXN0IFByaW1lciBw
YWdlPworCisjIyBJIHdhbnQgdG8gdXNlIEdvb2dsZSBUZXN0IHdpdGggVmlzdWFsIFN0dWRpbyBi
dXQgZG9uJ3Qga25vdyB3aGVyZSB0byBzdGFydC4gIyMKK01hbnkgcGVvcGxlIGFyZSBpbiB5b3Vy
IHBvc2l0aW9uIGFuZCBvbmUgb2YgdGhlIHBvc3RlZCBoaXMgc29sdXRpb24gdG8KK291ciBtYWls
aW5nIGxpc3QuIEhlcmUgaXMgaGlzIGxpbms6CitodHRwOi8vaGFzc2FuamFtaWxhaG1hZC5ibG9n
c3BvdC5jb20vMjAwOS8wNy9ndGVzdC1zdGFydGVycy1oZWxwLmh0bWwuCisKKyMjIEkgYW0gc2Vl
aW5nIGNvbXBpbGUgZXJyb3JzIG1lbnRpb25pbmcgc3RkOjp0eXBlXF90cmFpdHMgd2hlbiBJIHRy
eSB0byB1c2UgR29vZ2xlIFRlc3Qgb24gU29sYXJpcy4gIyMKK0dvb2dsZSBUZXN0IHVzZXMgcGFy
dHMgb2YgdGhlIHN0YW5kYXJkIEMrKyBsaWJyYXJ5IHRoYXQgU3VuU3R1ZGlvIGRvZXMgbm90IHN1
cHBvcnQuCitPdXIgdXNlcnMgcmVwb3J0ZWQgc3VjY2VzcyB1c2luZyBhbHRlcm5hdGl2ZSBpbXBs
ZW1lbnRhdGlvbnMuIFRyeSBydW5uaW5nIHRoZSBidWlsZCBhZnRlciBydW5pbmcgdGhpcyBjb21t
YWQ6CisKK2BleHBvcnQgQ0M9Y2MgQ1hYPUNDIENYWEZMQUdTPSctbGlicmFyeT1zdGxwb3J0NCdg
CisKKyMjIEhvdyBjYW4gbXkgY29kZSBkZXRlY3QgaWYgaXQgaXMgcnVubmluZyBpbiBhIHRlc3Q/
ICMjCisKK0lmIHlvdSB3cml0ZSBjb2RlIHRoYXQgc25pZmZzIHdoZXRoZXIgaXQncyBydW5uaW5n
IGluIGEgdGVzdCBhbmQgZG9lcworZGlmZmVyZW50IHRoaW5ncyBhY2NvcmRpbmdseSwgeW91IGFy
ZSBsZWFraW5nIHRlc3Qtb25seSBsb2dpYyBpbnRvCitwcm9kdWN0aW9uIGNvZGUgYW5kIHRoZXJl
IGlzIG5vIGVhc3kgd2F5IHRvIGVuc3VyZSB0aGF0IHRoZSB0ZXN0LW9ubHkKK2NvZGUgcGF0aHMg
YXJlbid0IHJ1biBieSBtaXN0YWtlIGluIHByb2R1Y3Rpb24uICBTdWNoIGNsZXZlcm5lc3MgYWxz
bworbGVhZHMgdG8KK1tIZWlzZW5idWdzXShodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Vu
dXN1YWxfc29mdHdhcmVfYnVnI0hlaXNlbmJ1ZykuCitUaGVyZWZvcmUgd2Ugc3Ryb25nbHkgYWR2
aXNlIGFnYWluc3QgdGhlIHByYWN0aWNlLCBhbmQgR29vZ2xlIFRlc3QgZG9lc24ndAorcHJvdmlk
ZSBhIHdheSB0byBkbyBpdC4KKworSW4gZ2VuZXJhbCwgdGhlIHJlY29tbWVuZGVkIHdheSB0byBj
YXVzZSB0aGUgY29kZSB0byBiZWhhdmUKK2RpZmZlcmVudGx5IHVuZGVyIHRlc3QgaXMgW2RlcGVu
ZGVuY3kgaW5qZWN0aW9uXShodHRwOi8vamFtZXNzaG9yZS5jb20vQmxvZy9EZXBlbmRlbmN5LUlu
amVjdGlvbi1EZW15c3RpZmllZC5odG1sKS4KK1lvdSBjYW4gaW5qZWN0IGRpZmZlcmVudCBmdW5j
dGlvbmFsaXR5IGZyb20gdGhlIHRlc3QgYW5kIGZyb20gdGhlCitwcm9kdWN0aW9uIGNvZGUuICBT
aW5jZSB5b3VyIHByb2R1Y3Rpb24gY29kZSBkb2Vzbid0IGxpbmsgaW4gdGhlCitmb3ItdGVzdCBs
b2dpYyBhdCBhbGwsIHRoZXJlIGlzIG5vIGRhbmdlciBpbiBhY2NpZGVudGFsbHkgcnVubmluZyBp
dC4KKworSG93ZXZlciwgaWYgeW91IF9yZWFsbHlfLCBfcmVhbGx5XywgX3JlYWxseV8gaGF2ZSBu
byBjaG9pY2UsIGFuZCBpZgoreW91IGZvbGxvdyB0aGUgcnVsZSBvZiBlbmRpbmcgeW91ciB0ZXN0
IHByb2dyYW0gbmFtZXMgd2l0aCBgX3Rlc3RgLAoreW91IGNhbiB1c2UgdGhlIF9ob3JyaWJsZV8g
aGFjayBvZiBzbmlmZmluZyB5b3VyIGV4ZWN1dGFibGUgbmFtZQorKGBhcmd2WzBdYCBpbiBgbWFp
bigpYCkgdG8ga25vdyB3aGV0aGVyIHRoZSBjb2RlIGlzIHVuZGVyIHRlc3QuCisKKyMjIEdvb2ds
ZSBUZXN0IGRlZmluZXMgYSBtYWNybyB0aGF0IGNsYXNoZXMgd2l0aCBvbmUgZGVmaW5lZCBieSBh
bm90aGVyIGxpYnJhcnkuIEhvdyBkbyBJIGRlYWwgd2l0aCB0aGF0PyAjIworCitJbiBDKyssIG1h
Y3JvcyBkb24ndCBvYmV5IG5hbWVzcGFjZXMuICBUaGVyZWZvcmUgdHdvIGxpYnJhcmllcyB0aGF0
Citib3RoIGRlZmluZSBhIG1hY3JvIG9mIHRoZSBzYW1lIG5hbWUgd2lsbCBjbGFzaCBpZiB5b3Ug
YCNpbmNsdWRlYCBib3RoCitkZWZpbml0aW9ucy4gIEluIGNhc2UgYSBHb29nbGUgVGVzdCBtYWNy
byBjbGFzaGVzIHdpdGggYW5vdGhlcgorbGlicmFyeSwgeW91IGNhbiBmb3JjZSBHb29nbGUgVGVz
dCB0byByZW5hbWUgaXRzIG1hY3JvIHRvIGF2b2lkIHRoZQorY29uZmxpY3QuCisKK1NwZWNpZmlj
YWxseSwgaWYgYm90aCBHb29nbGUgVGVzdCBhbmQgc29tZSBvdGhlciBjb2RlIGRlZmluZSBtYWNy
bworYEZPT2AsIHlvdSBjYW4gYWRkCitgYGAKKyAgLURHVEVTVF9ET05UX0RFRklORV9GT089MQor
YGBgCit0byB0aGUgY29tcGlsZXIgZmxhZ3MgdG8gdGVsbCBHb29nbGUgVGVzdCB0byBjaGFuZ2Ug
dGhlIG1hY3JvJ3MgbmFtZQorZnJvbSBgRk9PYCB0byBgR1RFU1RfRk9PYC4gRm9yIGV4YW1wbGUs
IHdpdGggYC1ER1RFU1RfRE9OVF9ERUZJTkVfVEVTVD0xYCwgeW91J2xsIG5lZWQgdG8gd3JpdGUK
K2BgYAorICBHVEVTVF9URVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAuLi4gfQorYGBgCitpbnN0
ZWFkIG9mCitgYGAKKyAgVEVTVChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KK2BgYAoraW4g
b3JkZXIgdG8gZGVmaW5lIGEgdGVzdC4KKworQ3VycmVudGx5LCB0aGUgZm9sbG93aW5nIGBURVNU
YCwgYEZBSUxgLCBgU1VDQ0VFRGAsIGFuZCB0aGUgYmFzaWMgY29tcGFyaXNvbiBhc3NlcnRpb24g
bWFjcm9zIGNhbiBoYXZlIGFsdGVybmF0aXZlIG5hbWVzLiBZb3UgY2FuIHNlZSB0aGUgZnVsbCBs
aXN0IG9mIGNvdmVyZWQgbWFjcm9zIFtoZXJlXShodHRwOi8vd3d3Lmdvb2dsZS5jb20vY29kZXNl
YXJjaD9xPWlmKyFHVEVTVF9ET05UX0RFRklORV9cdyUyQitwYWNrYWdlOmh0dHA6Ly9nb29nbGV0
ZXN0XC5nb29nbGVjb2RlXC5jb20rZmlsZTovaW5jbHVkZS9ndGVzdC9ndGVzdC5oKS4gTW9yZSBp
bmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gdGhlICJBdm9pZGluZyBNYWNybyBOYW1lIENsYXNo
ZXMiIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBmaWxlLgorCisKKyMjIElzIGl0IE9LIGlmIEkgaGF2
ZSB0d28gc2VwYXJhdGUgYFRFU1QoRm9vLCBCYXIpYCB0ZXN0IG1ldGhvZHMgZGVmaW5lZCBpbiBk
aWZmZXJlbnQgbmFtZXNwYWNlcz8gIyMKKworWWVzLgorCitUaGUgcnVsZSBpcyAqKmFsbCB0ZXN0
IG1ldGhvZHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIGZpeHR1cmUg
Y2xhc3MqKi4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgaXMgKiphbGxvd2VkKiogYmVj
YXVzZSBib3RoIHRlc3RzIHVzZSB0aGUgc2FtZSBmaXh0dXJlIGNsYXNzIChgOjp0ZXN0aW5nOjpU
ZXN0YCkuCisKK2BgYAorbmFtZXNwYWNlIGZvbyB7CitURVNUKENvb2xUZXN0LCBEb1NvbWV0aGlu
ZykgeworICBTVUNDRUVEKCk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgZm9vCisKK25hbWVzcGFjZSBi
YXIgeworVEVTVChDb29sVGVzdCwgRG9Tb21ldGhpbmcpIHsKKyAgU1VDQ0VFRCgpOworfQorfSAg
Ly8gbmFtZXNwYWNlIGZvbworYGBgCisKK0hvd2V2ZXIsIHRoZSBmb2xsb3dpbmcgY29kZSBpcyAq
Km5vdCBhbGxvd2VkKiogYW5kIHdpbGwgcHJvZHVjZSBhIHJ1bnRpbWUgZXJyb3IgZnJvbSBHb29n
bGUgVGVzdCBiZWNhdXNlIHRoZSB0ZXN0IG1ldGhvZHMgYXJlIHVzaW5nIGRpZmZlcmVudCB0ZXN0
IGZpeHR1cmUgY2xhc3NlcyB3aXRoIHRoZSBzYW1lIHRlc3QgY2FzZSBuYW1lLgorCitgYGAKK25h
bWVzcGFjZSBmb28geworY2xhc3MgQ29vbFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9
OyAgLy8gRml4dHVyZSBmb286OkNvb2xUZXN0CitURVNUX0YoQ29vbFRlc3QsIERvU29tZXRoaW5n
KSB7CisgIFNVQ0NFRUQoKTsKK30KK30gIC8vIG5hbWVzcGFjZSBmb28KKworbmFtZXNwYWNlIGJh
ciB7CitjbGFzcyBDb29sVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307ICAvLyBGaXh0
dXJlOiBiYXI6OkNvb2xUZXN0CitURVNUX0YoQ29vbFRlc3QsIERvU29tZXRoaW5nKSB7CisgIFNV
Q0NFRUQoKTsKK30KK30gIC8vIG5hbWVzcGFjZSBmb28KK2BgYAorCisjIyBIb3cgZG8gSSBidWls
ZCBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgd2l0aCBYY29kZSA0PyAjIworCitJZiB5b3UgdHJ5
IHRvIGJ1aWxkIEdvb2dsZSBUZXN0J3MgWGNvZGUgcHJvamVjdCB3aXRoIFhjb2RlIDQuMCBvciBs
YXRlciwgeW91IG1heSBlbmNvdW50ZXIgYW4gZXJyb3IgbWVzc2FnZSB0aGF0IGxvb2tzIGxpa2UK
KyJNaXNzaW5nIFNESyBpbiB0YXJnZXQgZ3Rlc3RcX2ZyYW1ld29yazogL0RldmVsb3Blci9TREtz
L01hY09TWDEwLjR1LnNkayIuIFRoYXQgbWVhbnMgdGhhdCBYY29kZSBkb2VzIG5vdCBzdXBwb3J0
IHRoZSBTREsgdGhlIHByb2plY3QgaXMgdGFyZ2V0aW5nLiBTZWUgdGhlIFhjb2RlIHNlY3Rpb24g
aW4gdGhlIFtSRUFETUVdKC4uLy4uL1JFQURNRS5NRCkgZmlsZSBvbiBob3cgdG8gcmVzb2x2ZSB0
aGlzLgorCisjIyBNeSBxdWVzdGlvbiBpcyBub3QgY292ZXJlZCBpbiB5b3VyIEZBUSEgIyMKKwor
SWYgeW91IGNhbm5vdCBmaW5kIHRoZSBhbnN3ZXIgdG8geW91ciBxdWVzdGlvbiBpbiB0aGlzIEZB
USwgdGhlcmUgYXJlCitzb21lIG90aGVyIHJlc291cmNlcyB5b3UgY2FuIHVzZToKKworICAxLiBy
ZWFkIG90aGVyIFt3aWtpIHBhZ2VzXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVz
dC93L2xpc3QpLAorICAxLiBzZWFyY2ggdGhlIG1haWxpbmcgbGlzdCBbYXJjaGl2ZV0oaHR0cDov
L2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZXRlc3RmcmFtZXdvcmsvdG9waWNzKSwKKyAg
MS4gYXNrIGl0IG9uIFtnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb21dKG1haWx0
bzpnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20pIGFuZCBzb21lb25lIHdpbGwg
YW5zd2VyIGl0ICh0byBwcmV2ZW50IHNwYW0sIHdlIHJlcXVpcmUgeW91IHRvIGpvaW4gdGhlIFtk
aXNjdXNzaW9uIGdyb3VwXShodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xldGVz
dGZyYW1ld29yaykgYmVmb3JlIHlvdSBjYW4gcG9zdC4pLgorCitQbGVhc2Ugbm90ZSB0aGF0IGNy
ZWF0aW5nIGFuIGlzc3VlIGluIHRoZQorW2lzc3VlIHRyYWNrZXJdKGh0dHA6Ly9jb2RlLmdvb2ds
ZS5jb20vcC9nb29nbGV0ZXN0L2lzc3Vlcy9saXN0KSBpcyBfbm90XworYSBnb29kIHdheSB0byBn
ZXQgeW91ciBhbnN3ZXIsIGFzIGl0IGlzIG1vbml0b3JlZCBpbmZyZXF1ZW50bHkgYnkgYQordmVy
eSBzbWFsbCBudW1iZXIgb2YgcGVvcGxlLgorCitXaGVuIGFza2luZyBhIHF1ZXN0aW9uLCBpdCdz
IGhlbHBmdWwgdG8gcHJvdmlkZSBhcyBtdWNoIG9mIHRoZQorZm9sbG93aW5nIGluZm9ybWF0aW9u
IGFzIHBvc3NpYmxlIChwZW9wbGUgY2Fubm90IGhlbHAgeW91IGlmIHRoZXJlJ3MKK25vdCBlbm91
Z2ggaW5mb3JtYXRpb24gaW4geW91ciBxdWVzdGlvbik6CisKKyAgKiB0aGUgdmVyc2lvbiAob3Ig
dGhlIHJldmlzaW9uIG51bWJlciBpZiB5b3UgY2hlY2sgb3V0IGZyb20gU1ZOIGRpcmVjdGx5KSBv
ZiBHb29nbGUgVGVzdCB5b3UgdXNlIChHb29nbGUgVGVzdCBpcyB1bmRlciBhY3RpdmUgZGV2ZWxv
cG1lbnQsIHNvIGl0J3MgcG9zc2libGUgdGhhdCB5b3VyIHByb2JsZW0gaGFzIGJlZW4gc29sdmVk
IGluIGEgbGF0ZXIgdmVyc2lvbiksCisgICogeW91ciBvcGVyYXRpbmcgc3lzdGVtLAorICAqIHRo
ZSBuYW1lIGFuZCB2ZXJzaW9uIG9mIHlvdXIgY29tcGlsZXIsCisgICogdGhlIGNvbXBsZXRlIGNv
bW1hbmQgbGluZSBmbGFncyB5b3UgZ2l2ZSB0byB5b3VyIGNvbXBpbGVyLAorICAqIHRoZSBjb21w
bGV0ZSBjb21waWxlciBlcnJvciBtZXNzYWdlcyAoaWYgdGhlIHF1ZXN0aW9uIGlzIGFib3V0IGNv
bXBpbGF0aW9uKSwKKyAgKiB0aGUgX2FjdHVhbF8gY29kZSAoaWRlYWxseSwgYSBtaW5pbWFsIGJ1
dCBjb21wbGV0ZSBwcm9ncmFtKSB0aGF0IGhhcyB0aGUgcHJvYmxlbSB5b3UgZW5jb3VudGVyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV83X1ByaW1lci5tZCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfN19QcmltZXIubWQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjE4MjdjNzM1NTgxM2FkOTQxODAzNDkxM2JjYzM5ZGY0MThkYWY2NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFfN19QcmltZXIubWQKQEAgLTAsMCAr
MSw1MDEgQEAKKworCisjIEludHJvZHVjdGlvbjogV2h5IEdvb2dsZSBDKysgVGVzdGluZyBGcmFt
ZXdvcms/ICMKKworX0dvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmtfIGhlbHBzIHlvdSB3cml0
ZSBiZXR0ZXIgQysrIHRlc3RzLgorCitObyBtYXR0ZXIgd2hldGhlciB5b3Ugd29yayBvbiBMaW51
eCwgV2luZG93cywgb3IgYSBNYWMsIGlmIHlvdSB3cml0ZSBDKysgY29kZSwKK0dvb2dsZSBUZXN0
IGNhbiBoZWxwIHlvdS4KKworU28gd2hhdCBtYWtlcyBhIGdvb2QgdGVzdCwgYW5kIGhvdyBkb2Vz
IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgZml0IGluPyBXZSBiZWxpZXZlOgorICAxLiBU
ZXN0cyBzaG91bGQgYmUgX2luZGVwZW5kZW50XyBhbmQgX3JlcGVhdGFibGVfLiBJdCdzIGEgcGFp
biB0byBkZWJ1ZyBhIHRlc3QgdGhhdCBzdWNjZWVkcyBvciBmYWlscyBhcyBhIHJlc3VsdCBvZiBv
dGhlciB0ZXN0cy4gIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgaXNvbGF0ZXMgdGhlIHRl
c3RzIGJ5IHJ1bm5pbmcgZWFjaCBvZiB0aGVtIG9uIGEgZGlmZmVyZW50IG9iamVjdC4gV2hlbiBh
IHRlc3QgZmFpbHMsIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgYWxsb3dzIHlvdSB0byBy
dW4gaXQgaW4gaXNvbGF0aW9uIGZvciBxdWljayBkZWJ1Z2dpbmcuCisgIDEuIFRlc3RzIHNob3Vs
ZCBiZSB3ZWxsIF9vcmdhbml6ZWRfIGFuZCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRl
c3RlZCBjb2RlLiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBncm91cHMgcmVsYXRlZCB0
ZXN0cyBpbnRvIHRlc3QgY2FzZXMgdGhhdCBjYW4gc2hhcmUgZGF0YSBhbmQgc3Vicm91dGluZXMu
IFRoaXMgY29tbW9uIHBhdHRlcm4gaXMgZWFzeSB0byByZWNvZ25pemUgYW5kIG1ha2VzIHRlc3Rz
IGVhc3kgdG8gbWFpbnRhaW4uIFN1Y2ggY29uc2lzdGVuY3kgaXMgZXNwZWNpYWxseSBoZWxwZnVs
IHdoZW4gcGVvcGxlIHN3aXRjaCBwcm9qZWN0cyBhbmQgc3RhcnQgdG8gd29yayBvbiBhIG5ldyBj
b2RlIGJhc2UuCisgIDEuIFRlc3RzIHNob3VsZCBiZSBfcG9ydGFibGVfIGFuZCBfcmV1c2FibGVf
LiBUaGUgb3Blbi1zb3VyY2UgY29tbXVuaXR5IGhhcyBhIGxvdCBvZiBjb2RlIHRoYXQgaXMgcGxh
dGZvcm0tbmV1dHJhbCwgaXRzIHRlc3RzIHNob3VsZCBhbHNvIGJlIHBsYXRmb3JtLW5ldXRyYWwu
ICBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIHdvcmtzIG9uIGRpZmZlcmVudCBPU2VzLCB3
aXRoIGRpZmZlcmVudCBjb21waWxlcnMgKGdjYywgTVNWQywgYW5kIG90aGVycyksIHdpdGggb3Ig
d2l0aG91dCBleGNlcHRpb25zLCBzbyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIHRlc3Rz
IGNhbiBlYXNpbHkgd29yayB3aXRoIGEgdmFyaWV0eSBvZiBjb25maWd1cmF0aW9ucy4gIChOb3Rl
IHRoYXQgdGhlIGN1cnJlbnQgcmVsZWFzZSBvbmx5IGNvbnRhaW5zIGJ1aWxkIHNjcmlwdHMgZm9y
IExpbnV4IC0gd2UgYXJlIGFjdGl2ZWx5IHdvcmtpbmcgb24gc2NyaXB0cyBmb3Igb3RoZXIgcGxh
dGZvcm1zLikKKyAgMS4gV2hlbiB0ZXN0cyBmYWlsLCB0aGV5IHNob3VsZCBwcm92aWRlIGFzIG11
Y2ggX2luZm9ybWF0aW9uXyBhYm91dCB0aGUgcHJvYmxlbSBhcyBwb3NzaWJsZS4gR29vZ2xlIEMr
KyBUZXN0aW5nIEZyYW1ld29yayBkb2Vzbid0IHN0b3AgYXQgdGhlIGZpcnN0IHRlc3QgZmFpbHVy
ZS4gSW5zdGVhZCwgaXQgb25seSBzdG9wcyB0aGUgY3VycmVudCB0ZXN0IGFuZCBjb250aW51ZXMg
d2l0aCB0aGUgbmV4dC4gWW91IGNhbiBhbHNvIHNldCB1cCB0ZXN0cyB0aGF0IHJlcG9ydCBub24t
ZmF0YWwgZmFpbHVyZXMgYWZ0ZXIgd2hpY2ggdGhlIGN1cnJlbnQgdGVzdCBjb250aW51ZXMuIFRo
dXMsIHlvdSBjYW4gZGV0ZWN0IGFuZCBmaXggbXVsdGlwbGUgYnVncyBpbiBhIHNpbmdsZSBydW4t
ZWRpdC1jb21waWxlIGN5Y2xlLgorICAxLiBUaGUgdGVzdGluZyBmcmFtZXdvcmsgc2hvdWxkIGxp
YmVyYXRlIHRlc3Qgd3JpdGVycyBmcm9tIGhvdXNla2VlcGluZyBjaG9yZXMgYW5kIGxldCB0aGVt
IGZvY3VzIG9uIHRoZSB0ZXN0IF9jb250ZW50Xy4gIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdv
cmsgYXV0b21hdGljYWxseSBrZWVwcyB0cmFjayBvZiBhbGwgdGVzdHMgZGVmaW5lZCwgYW5kIGRv
ZXNuJ3QgcmVxdWlyZSB0aGUgdXNlciB0byBlbnVtZXJhdGUgdGhlbSBpbiBvcmRlciB0byBydW4g
dGhlbS4KKyAgMS4gVGVzdHMgc2hvdWxkIGJlIF9mYXN0Xy4gV2l0aCBHb29nbGUgQysrIFRlc3Rp
bmcgRnJhbWV3b3JrLCB5b3UgY2FuIHJldXNlIHNoYXJlZCByZXNvdXJjZXMgYWNyb3NzIHRlc3Rz
IGFuZCBwYXkgZm9yIHRoZSBzZXQtdXAvdGVhci1kb3duIG9ubHkgb25jZSwgd2l0aG91dCBtYWtp
bmcgdGVzdHMgZGVwZW5kIG9uIGVhY2ggb3RoZXIuCisKK1NpbmNlIEdvb2dsZSBDKysgVGVzdGlu
ZyBGcmFtZXdvcmsgaXMgYmFzZWQgb24gdGhlIHBvcHVsYXIgeFVuaXQKK2FyY2hpdGVjdHVyZSwg
eW91J2xsIGZlZWwgcmlnaHQgYXQgaG9tZSBpZiB5b3UndmUgdXNlZCBKVW5pdCBvciBQeVVuaXQg
YmVmb3JlLgorSWYgbm90LCBpdCB3aWxsIHRha2UgeW91IGFib3V0IDEwIG1pbnV0ZXMgdG8gbGVh
cm4gdGhlIGJhc2ljcyBhbmQgZ2V0IHN0YXJ0ZWQuCitTbyBsZXQncyBnbyEKKworX05vdGU6XyBX
ZSBzb21ldGltZXMgcmVmZXIgdG8gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBpbmZvcm1h
bGx5CithcyBfR29vZ2xlIFRlc3RfLgorCisjIFNldHRpbmcgdXAgYSBOZXcgVGVzdCBQcm9qZWN0
ICMKKworVG8gd3JpdGUgYSB0ZXN0IHByb2dyYW0gdXNpbmcgR29vZ2xlIFRlc3QsIHlvdSBuZWVk
IHRvIGNvbXBpbGUgR29vZ2xlCitUZXN0IGludG8gYSBsaWJyYXJ5IGFuZCBsaW5rIHlvdXIgdGVz
dCB3aXRoIGl0LiAgV2UgcHJvdmlkZSBidWlsZAorZmlsZXMgZm9yIHNvbWUgcG9wdWxhciBidWls
ZCBzeXN0ZW1zOiBgbXN2Yy9gIGZvciBWaXN1YWwgU3R1ZGlvLAorYHhjb2RlL2AgZm9yIE1hYyBY
Y29kZSwgYG1ha2UvYCBmb3IgR05VIG1ha2UsIGBjb2RlZ2Vhci9gIGZvciBCb3JsYW5kCitDKysg
QnVpbGRlciwgYW5kIHRoZSBhdXRvdG9vbHMgc2NyaXB0IChkZXByZWNhdGVkKSBhbmQKK2BDTWFr
ZUxpc3RzLnR4dGAgZm9yIENNYWtlIChyZWNvbW1lbmRlZCkgaW4gdGhlIEdvb2dsZSBUZXN0IHJv
b3QKK2RpcmVjdG9yeS4gIElmIHlvdXIgYnVpbGQgc3lzdGVtIGlzIG5vdCBvbiB0aGlzIGxpc3Qs
IHlvdSBjYW4gdGFrZSBhCitsb29rIGF0IGBtYWtlL01ha2VmaWxlYCB0byBsZWFybiBob3cgR29v
Z2xlIFRlc3Qgc2hvdWxkIGJlIGNvbXBpbGVkCisoYmFzaWNhbGx5IHlvdSB3YW50IHRvIGNvbXBp
bGUgYHNyYy9ndGVzdC1hbGwuY2NgIHdpdGggYEdURVNUX1JPT1RgCithbmQgYEdURVNUX1JPT1Qv
aW5jbHVkZWAgaW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0aCwgd2hlcmUgYEdURVNUX1JPT1RgCitp
cyB0aGUgR29vZ2xlIFRlc3Qgcm9vdCBkaXJlY3RvcnkpLgorCitPbmNlIHlvdSBhcmUgYWJsZSB0
byBjb21waWxlIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5LCB5b3Ugc2hvdWxkCitjcmVhdGUgYSBw
cm9qZWN0IG9yIGJ1aWxkIHRhcmdldCBmb3IgeW91ciB0ZXN0IHByb2dyYW0uICBNYWtlIHN1cmUg
eW91CitoYXZlIGBHVEVTVF9ST09UL2luY2x1ZGVgIGluIHRoZSBoZWFkZXIgc2VhcmNoIHBhdGgg
c28gdGhhdCB0aGUKK2NvbXBpbGVyIGNhbiBmaW5kIGAiZ3Rlc3QvZ3Rlc3QuaCJgIHdoZW4gY29t
cGlsaW5nIHlvdXIgdGVzdC4gIFNldCB1cAoreW91ciB0ZXN0IHByb2plY3QgdG8gbGluayB3aXRo
IHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5IChmb3IgZXhhbXBsZSwKK2luIFZpc3VhbCBTdHVkaW8s
IHRoaXMgaXMgZG9uZSBieSBhZGRpbmcgYSBkZXBlbmRlbmN5IG9uCitgZ3Rlc3QudmNwcm9qYCku
CisKK0lmIHlvdSBzdGlsbCBoYXZlIHF1ZXN0aW9ucywgdGFrZSBhIGxvb2sgYXQgaG93IEdvb2ds
ZSBUZXN0J3Mgb3duCit0ZXN0cyBhcmUgYnVpbHQgYW5kIHVzZSB0aGVtIGFzIGV4YW1wbGVzLgor
CisjIEJhc2ljIENvbmNlcHRzICMKKworV2hlbiB1c2luZyBHb29nbGUgVGVzdCwgeW91IHN0YXJ0
IGJ5IHdyaXRpbmcgX2Fzc2VydGlvbnNfLCB3aGljaCBhcmUgc3RhdGVtZW50cwordGhhdCBjaGVj
ayB3aGV0aGVyIGEgY29uZGl0aW9uIGlzIHRydWUuIEFuIGFzc2VydGlvbidzIHJlc3VsdCBjYW4g
YmUgX3N1Y2Nlc3NfLAorX25vbmZhdGFsIGZhaWx1cmVfLCBvciBfZmF0YWwgZmFpbHVyZV8uIElm
IGEgZmF0YWwgZmFpbHVyZSBvY2N1cnMsIGl0IGFib3J0cwordGhlIGN1cnJlbnQgZnVuY3Rpb247
IG90aGVyd2lzZSB0aGUgcHJvZ3JhbSBjb250aW51ZXMgbm9ybWFsbHkuCisKK19UZXN0c18gdXNl
IGFzc2VydGlvbnMgdG8gdmVyaWZ5IHRoZSB0ZXN0ZWQgY29kZSdzIGJlaGF2aW9yLiBJZiBhIHRl
c3QgY3Jhc2hlcworb3IgaGFzIGEgZmFpbGVkIGFzc2VydGlvbiwgdGhlbiBpdCBfZmFpbHNfOyBv
dGhlcndpc2UgaXQgX3N1Y2NlZWRzXy4KKworQSBfdGVzdCBjYXNlXyBjb250YWlucyBvbmUgb3Ig
bWFueSB0ZXN0cy4gWW91IHNob3VsZCBncm91cCB5b3VyIHRlc3RzIGludG8gdGVzdAorY2FzZXMg
dGhhdCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3RlZCBjb2RlLiBXaGVuIG11bHRp
cGxlIHRlc3RzIGluIGEKK3Rlc3QgY2FzZSBuZWVkIHRvIHNoYXJlIGNvbW1vbiBvYmplY3RzIGFu
ZCBzdWJyb3V0aW5lcywgeW91IGNhbiBwdXQgdGhlbSBpbnRvIGEKK190ZXN0IGZpeHR1cmVfIGNs
YXNzLgorCitBIF90ZXN0IHByb2dyYW1fIGNhbiBjb250YWluIG11bHRpcGxlIHRlc3QgY2FzZXMu
CisKK1dlJ2xsIG5vdyBleHBsYWluIGhvdyB0byB3cml0ZSBhIHRlc3QgcHJvZ3JhbSwgc3RhcnRp
bmcgYXQgdGhlIGluZGl2aWR1YWwKK2Fzc2VydGlvbiBsZXZlbCBhbmQgYnVpbGRpbmcgdXAgdG8g
dGVzdHMgYW5kIHRlc3QgY2FzZXMuCisKKyMgQXNzZXJ0aW9ucyAjCisKK0dvb2dsZSBUZXN0IGFz
c2VydGlvbnMgYXJlIG1hY3JvcyB0aGF0IHJlc2VtYmxlIGZ1bmN0aW9uIGNhbGxzLiBZb3UgdGVz
dCBhCitjbGFzcyBvciBmdW5jdGlvbiBieSBtYWtpbmcgYXNzZXJ0aW9ucyBhYm91dCBpdHMgYmVo
YXZpb3IuIFdoZW4gYW4gYXNzZXJ0aW9uCitmYWlscywgR29vZ2xlIFRlc3QgcHJpbnRzIHRoZSBh
c3NlcnRpb24ncyBzb3VyY2UgZmlsZSBhbmQgbGluZSBudW1iZXIgbG9jYXRpb24sCithbG9uZyB3
aXRoIGEgZmFpbHVyZSBtZXNzYWdlLiBZb3UgbWF5IGFsc28gc3VwcGx5IGEgY3VzdG9tIGZhaWx1
cmUgbWVzc2FnZQord2hpY2ggd2lsbCBiZSBhcHBlbmRlZCB0byBHb29nbGUgVGVzdCdzIG1lc3Nh
Z2UuCisKK1RoZSBhc3NlcnRpb25zIGNvbWUgaW4gcGFpcnMgdGhhdCB0ZXN0IHRoZSBzYW1lIHRo
aW5nIGJ1dCBoYXZlIGRpZmZlcmVudAorZWZmZWN0cyBvbiB0aGUgY3VycmVudCBmdW5jdGlvbi4g
YEFTU0VSVF8qYCB2ZXJzaW9ucyBnZW5lcmF0ZSBmYXRhbCBmYWlsdXJlcword2hlbiB0aGV5IGZh
aWwsIGFuZCAqKmFib3J0IHRoZSBjdXJyZW50IGZ1bmN0aW9uKiouIGBFWFBFQ1RfKmAgdmVyc2lv
bnMgZ2VuZXJhdGUKK25vbmZhdGFsIGZhaWx1cmVzLCB3aGljaCBkb24ndCBhYm9ydCB0aGUgY3Vy
cmVudCBmdW5jdGlvbi4gVXN1YWxseSBgRVhQRUNUXypgCithcmUgcHJlZmVycmVkLCBhcyB0aGV5
IGFsbG93IG1vcmUgdGhhbiBvbmUgZmFpbHVyZXMgdG8gYmUgcmVwb3J0ZWQgaW4gYSB0ZXN0Lgor
SG93ZXZlciwgeW91IHNob3VsZCB1c2UgYEFTU0VSVF8qYCBpZiBpdCBkb2Vzbid0IG1ha2Ugc2Vu
c2UgdG8gY29udGludWUgd2hlbgordGhlIGFzc2VydGlvbiBpbiBxdWVzdGlvbiBmYWlscy4KKwor
U2luY2UgYSBmYWlsZWQgYEFTU0VSVF8qYCByZXR1cm5zIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rp
b24gaW1tZWRpYXRlbHksCitwb3NzaWJseSBza2lwcGluZyBjbGVhbi11cCBjb2RlIHRoYXQgY29t
ZXMgYWZ0ZXIgaXQsIGl0IG1heSBjYXVzZSBhIHNwYWNlIGxlYWsuCitEZXBlbmRpbmcgb24gdGhl
IG5hdHVyZSBvZiB0aGUgbGVhaywgaXQgbWF5IG9yIG1heSBub3QgYmUgd29ydGggZml4aW5nIC0g
c28KK2tlZXAgdGhpcyBpbiBtaW5kIGlmIHlvdSBnZXQgYSBoZWFwIGNoZWNrZXIgZXJyb3IgaW4g
YWRkaXRpb24gdG8gYXNzZXJ0aW9uCitlcnJvcnMuCisKK1RvIHByb3ZpZGUgYSBjdXN0b20gZmFp
bHVyZSBtZXNzYWdlLCBzaW1wbHkgc3RyZWFtIGl0IGludG8gdGhlIG1hY3JvIHVzaW5nIHRoZQor
YDw8YCBvcGVyYXRvciwgb3IgYSBzZXF1ZW5jZSBvZiBzdWNoIG9wZXJhdG9ycy4gQW4gZXhhbXBs
ZToKK2BgYAorQVNTRVJUX0VRKHguc2l6ZSgpLCB5LnNpemUoKSkgPDwgIlZlY3RvcnMgeCBhbmQg
eSBhcmUgb2YgdW5lcXVhbCBsZW5ndGgiOworCitmb3IgKGludCBpID0gMDsgaSA8IHguc2l6ZSgp
OyArK2kpIHsKKyAgRVhQRUNUX0VRKHhbaV0sIHlbaV0pIDw8ICJWZWN0b3JzIHggYW5kIHkgZGlm
ZmVyIGF0IGluZGV4ICIgPDwgaTsKK30KK2BgYAorCitBbnl0aGluZyB0aGF0IGNhbiBiZSBzdHJl
YW1lZCB0byBhbiBgb3N0cmVhbWAgY2FuIGJlIHN0cmVhbWVkIHRvIGFuIGFzc2VydGlvbgorbWFj
cm8tLWluIHBhcnRpY3VsYXIsIEMgc3RyaW5ncyBhbmQgYHN0cmluZ2Agb2JqZWN0cy4gSWYgYSB3
aWRlIHN0cmluZworKGB3Y2hhcl90KmAsIGBUQ0hBUipgIGluIGBVTklDT0RFYCBtb2RlIG9uIFdp
bmRvd3MsIG9yIGBzdGQ6OndzdHJpbmdgKSBpcworc3RyZWFtZWQgdG8gYW4gYXNzZXJ0aW9uLCBp
dCB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gVVRGLTggd2hlbiBwcmludGVkLgorCisjIyBCYXNpYyBB
c3NlcnRpb25zICMjCisKK1RoZXNlIGFzc2VydGlvbnMgZG8gYmFzaWMgdHJ1ZS9mYWxzZSBjb25k
aXRpb24gdGVzdGluZy4KK3wgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0
aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8IGBBU1NFUlRfVFJVRShgX2NvbmRpdGlv
bl9gKWA7ICB8IGBFWFBFQ1RfVFJVRShgX2NvbmRpdGlvbl9gKWA7ICAgfCBfY29uZGl0aW9uXyBp
cyB0cnVlIHwKK3wgYEFTU0VSVF9GQUxTRShgX2NvbmRpdGlvbl9gKWA7IHwgYEVYUEVDVF9GQUxT
RShgX2NvbmRpdGlvbl9gKWA7ICB8IF9jb25kaXRpb25fIGlzIGZhbHNlIHwKKworUmVtZW1iZXIs
IHdoZW4gdGhleSBmYWlsLCBgQVNTRVJUXypgIHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUgYW5kCity
ZXR1cm5zIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24sIHdoaWxlIGBFWFBFQ1RfKmAgeWllbGRz
IGEgbm9uZmF0YWwKK2ZhaWx1cmUsIGFsbG93aW5nIHRoZSBmdW5jdGlvbiB0byBjb250aW51ZSBy
dW5uaW5nLiBJbiBlaXRoZXIgY2FzZSwgYW4KK2Fzc2VydGlvbiBmYWlsdXJlIG1lYW5zIGl0cyBj
b250YWluaW5nIHRlc3QgZmFpbHMuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywg
TWFjLgorCisjIyBCaW5hcnkgQ29tcGFyaXNvbiAjIworCitUaGlzIHNlY3Rpb24gZGVzY3JpYmVz
IGFzc2VydGlvbnMgdGhhdCBjb21wYXJlIHR3byB2YWx1ZXMuCisKK3wgKipGYXRhbCBhc3NlcnRp
b24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAorfDotLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Cit8
YEFTU0VSVF9FUShgX2V4cGVjdGVkX2AsIGBfYWN0dWFsX2ApO2B8YEVYUEVDVF9FUShgX2V4cGVj
dGVkX2AsIGBfYWN0dWFsX2ApO2B8IF9leHBlY3RlZF8gYD09YCBfYWN0dWFsXyB8Cit8YEFTU0VS
VF9ORShgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9ORShgX3ZhbDFfYCwgYF92
YWwyX2ApO2AgICAgICB8IF92YWwxXyBgIT1gIF92YWwyXyB8Cit8YEFTU0VSVF9MVChgX3ZhbDFf
YCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9MVChgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAg
ICB8IF92YWwxXyBgPGAgX3ZhbDJfIHwKK3xgQVNTRVJUX0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7
YCAgICAgIHxgRVhQRUNUX0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA8
PWAgX3ZhbDJfIHwKK3xgQVNTRVJUX0dUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHxgRVhQ
RUNUX0dUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA+YCBfdmFsMl8gfAor
fGBBU1NFUlRfR0UoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfGBFWFBFQ1RfR0UoYF92YWwx
X2AsIGBfdmFsMl9gKTtgICAgICAgfCBfdmFsMV8gYD49YCBfdmFsMl8gfAorCitJbiB0aGUgZXZl
bnQgb2YgYSBmYWlsdXJlLCBHb29nbGUgVGVzdCBwcmludHMgYm90aCBfdmFsMV8gYW5kIF92YWwy
XworLiBJbiBgQVNTRVJUX0VRKmAgYW5kIGBFWFBFQ1RfRVEqYCAoYW5kIGFsbCBvdGhlciBlcXVh
bGl0eSBhc3NlcnRpb25zCit3ZSdsbCBpbnRyb2R1Y2UgbGF0ZXIpLCB5b3Ugc2hvdWxkIHB1dCB0
aGUgZXhwcmVzc2lvbiB5b3Ugd2FudCB0byB0ZXN0CitpbiB0aGUgcG9zaXRpb24gb2YgX2FjdHVh
bF8sIGFuZCBwdXQgaXRzIGV4cGVjdGVkIHZhbHVlIGluIF9leHBlY3RlZF8sCithcyBHb29nbGUg
VGVzdCdzIGZhaWx1cmUgbWVzc2FnZXMgYXJlIG9wdGltaXplZCBmb3IgdGhpcyBjb252ZW50aW9u
LgorCitWYWx1ZSBhcmd1bWVudHMgbXVzdCBiZSBjb21wYXJhYmxlIGJ5IHRoZSBhc3NlcnRpb24n
cyBjb21wYXJpc29uCitvcGVyYXRvciBvciB5b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IuICBX
ZSB1c2VkIHRvIHJlcXVpcmUgdGhlCithcmd1bWVudHMgdG8gc3VwcG9ydCB0aGUgYDw8YCBvcGVy
YXRvciBmb3Igc3RyZWFtaW5nIHRvIGFuIGBvc3RyZWFtYCwKK2J1dCBpdCdzIG5vIGxvbmdlciBu
ZWNlc3Nhcnkgc2luY2UgdjEuNi4wIChpZiBgPDxgIGlzIHN1cHBvcnRlZCwgaXQKK3dpbGwgYmUg
Y2FsbGVkIHRvIHByaW50IHRoZSBhcmd1bWVudHMgd2hlbiB0aGUgYXNzZXJ0aW9uIGZhaWxzOwor
b3RoZXJ3aXNlIEdvb2dsZSBUZXN0IHdpbGwgYXR0ZW1wdCB0byBwcmludCB0aGVtIGluIHRoZSBi
ZXN0IHdheSBpdAorY2FuLiBGb3IgbW9yZSBkZXRhaWxzIGFuZCBob3cgdG8gY3VzdG9taXplIHRo
ZSBwcmludGluZyBvZiB0aGUKK2FyZ3VtZW50cywgc2VlIHRoaXMgR29vZ2xlIE1vY2sgW3JlY2lw
ZV0oLi4vLi4vZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3RlYWNoaW5nLWdvb2dsZS1tb2Nr
LWhvdy10by1wcmludC15b3VyLXZhbHVlcykuKS4KKworVGhlc2UgYXNzZXJ0aW9ucyBjYW4gd29y
ayB3aXRoIGEgdXNlci1kZWZpbmVkIHR5cGUsIGJ1dCBvbmx5IGlmIHlvdSBkZWZpbmUgdGhlCitj
b3JyZXNwb25kaW5nIGNvbXBhcmlzb24gb3BlcmF0b3IgKGUuZy4gYD09YCwgYDxgLCBldGMpLiAg
SWYgdGhlIGNvcnJlc3BvbmRpbmcKK29wZXJhdG9yIGlzIGRlZmluZWQsIHByZWZlciB1c2luZyB0
aGUgYEFTU0VSVF8qKClgIG1hY3JvcyBiZWNhdXNlIHRoZXkgd2lsbAorcHJpbnQgb3V0IG5vdCBv
bmx5IHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24sIGJ1dCB0aGUgdHdvIG9wZXJhbmRzIGFz
IHdlbGwuCisKK0FyZ3VtZW50cyBhcmUgYWx3YXlzIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuIFRo
ZXJlZm9yZSwgaXQncyBPSyBmb3IgdGhlCithcmd1bWVudHMgdG8gaGF2ZSBzaWRlIGVmZmVjdHMu
IEhvd2V2ZXIsIGFzIHdpdGggYW55IG9yZGluYXJ5IEMvQysrIGZ1bmN0aW9uLAordGhlIGFyZ3Vt
ZW50cycgZXZhbHVhdGlvbiBvcmRlciBpcyB1bmRlZmluZWQgKGkuZS4gdGhlIGNvbXBpbGVyIGlz
IGZyZWUgdG8KK2Nob29zZSBhbnkgb3JkZXIpIGFuZCB5b3VyIGNvZGUgc2hvdWxkIG5vdCBkZXBl
bmQgb24gYW55IHBhcnRpY3VsYXIgYXJndW1lbnQKK2V2YWx1YXRpb24gb3JkZXIuCisKK2BBU1NF
UlRfRVEoKWAgZG9lcyBwb2ludGVyIGVxdWFsaXR5IG9uIHBvaW50ZXJzLiBJZiB1c2VkIG9uIHR3
byBDIHN0cmluZ3MsIGl0Cit0ZXN0cyBpZiB0aGV5IGFyZSBpbiB0aGUgc2FtZSBtZW1vcnkgbG9j
YXRpb24sIG5vdCBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgdmFsdWUuCitUaGVyZWZvcmUsIGlmIHlv
dSB3YW50IHRvIGNvbXBhcmUgQyBzdHJpbmdzIChlLmcuIGBjb25zdCBjaGFyKmApIGJ5IHZhbHVl
LCB1c2UKK2BBU1NFUlRfU1RSRVEoKWAgLCB3aGljaCB3aWxsIGJlIGRlc2NyaWJlZCBsYXRlciBv
bi4gSW4gcGFydGljdWxhciwgdG8gYXNzZXJ0Cit0aGF0IGEgQyBzdHJpbmcgaXMgYE5VTExgLCB1
c2UgYEFTU0VSVF9TVFJFUShOVUxMLCBjX3N0cmluZylgIC4gSG93ZXZlciwgdG8KK2NvbXBhcmUg
dHdvIGBzdHJpbmdgIG9iamVjdHMsIHlvdSBzaG91bGQgdXNlIGBBU1NFUlRfRVFgLgorCitNYWNy
b3MgaW4gdGhpcyBzZWN0aW9uIHdvcmsgd2l0aCBib3RoIG5hcnJvdyBhbmQgd2lkZSBzdHJpbmcg
b2JqZWN0cyAoYHN0cmluZ2AKK2FuZCBgd3N0cmluZ2ApLgorCitfQXZhaWxhYmlsaXR5XzogTGlu
dXgsIFdpbmRvd3MsIE1hYy4KKworIyMgU3RyaW5nIENvbXBhcmlzb24gIyMKKworVGhlIGFzc2Vy
dGlvbnMgaW4gdGhpcyBncm91cCBjb21wYXJlIHR3byAqKkMgc3RyaW5ncyoqLiBJZiB5b3Ugd2Fu
dCB0byBjb21wYXJlCit0d28gYHN0cmluZ2Agb2JqZWN0cywgdXNlIGBFWFBFQ1RfRVFgLCBgRVhQ
RUNUX05FYCwgYW5kIGV0YyBpbnN0ZWFkLgorCit8ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5v
bmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKK3w6LS0tLS0tLS0tLS0tLS0tLS0t
LS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAorfCBgQVNTRVJUX1NU
UkVRKGBfZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgICAgfCBgRVhQRUNUX1NU
UkVRKGBfZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgICAgIHwgdGhlIHR3byBD
IHN0cmluZ3MgaGF2ZSB0aGUgc2FtZSBjb250ZW50IHwKK3wgYEFTU0VSVF9TVFJORShgX3N0cjFf
YCwgYF9zdHIyX2ApO2AgICAgfCBgRVhQRUNUX1NUUk5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YCAg
ICAgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIGRpZmZlcmVudCBjb250ZW50IHwKK3wgYEFTU0VS
VF9TVFJDQVNFRVEoYF9leHBlY3RlZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YHwgYEVYUEVD
VF9TVFJDQVNFRVEoYF9leHBlY3RlZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YCB8IHRoZSB0
d28gQyBzdHJpbmdzIGhhdmUgdGhlIHNhbWUgY29udGVudCwgaWdub3JpbmcgY2FzZSB8Cit8IGBB
U1NFUlRfU1RSQ0FTRU5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YHwgYEVYUEVDVF9TVFJDQVNFTkUo
YF9zdHIxX2AsIGBfc3RyMl9gKTtgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSBkaWZmZXJlbnQg
Y29udGVudCwgaWdub3JpbmcgY2FzZSB8CisKK05vdGUgdGhhdCAiQ0FTRSIgaW4gYW4gYXNzZXJ0
aW9uIG5hbWUgbWVhbnMgdGhhdCBjYXNlIGlzIGlnbm9yZWQuCisKK2AqU1RSRVEqYCBhbmQgYCpT
VFJORSpgIGFsc28gYWNjZXB0IHdpZGUgQyBzdHJpbmdzIChgd2NoYXJfdCpgKS4gSWYgYQorY29t
cGFyaXNvbiBvZiB0d28gd2lkZSBzdHJpbmdzIGZhaWxzLCB0aGVpciB2YWx1ZXMgd2lsbCBiZSBw
cmludGVkIGFzIFVURi04CituYXJyb3cgc3RyaW5ncy4KKworQSBgTlVMTGAgcG9pbnRlciBhbmQg
YW4gZW1wdHkgc3RyaW5nIGFyZSBjb25zaWRlcmVkIF9kaWZmZXJlbnRfLgorCitfQXZhaWxhYmls
aXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworU2VlIGFsc286IEZvciBtb3JlIHN0cmluZyBj
b21wYXJpc29uIHRyaWNrcyAoc3Vic3RyaW5nLCBwcmVmaXgsIHN1ZmZpeCwgYW5kCityZWd1bGFy
IGV4cHJlc3Npb24gbWF0Y2hpbmcsIGZvciBleGFtcGxlKSwgc2VlIHRoZSBbQWR2YW5jZWQgR29v
Z2xlIFRlc3QgR3VpZGVdKFYxXzdfQWR2YW5jZWRHdWlkZS5tZCkuCisKKyMgU2ltcGxlIFRlc3Rz
ICMKKworVG8gY3JlYXRlIGEgdGVzdDoKKyAgMS4gVXNlIHRoZSBgVEVTVCgpYCBtYWNybyB0byBk
ZWZpbmUgYW5kIG5hbWUgYSB0ZXN0IGZ1bmN0aW9uLCBUaGVzZSBhcmUgb3JkaW5hcnkgQysrIGZ1
bmN0aW9ucyB0aGF0IGRvbid0IHJldHVybiBhIHZhbHVlLgorICAxLiBJbiB0aGlzIGZ1bmN0aW9u
LCBhbG9uZyB3aXRoIGFueSB2YWxpZCBDKysgc3RhdGVtZW50cyB5b3Ugd2FudCB0byBpbmNsdWRl
LCB1c2UgdGhlIHZhcmlvdXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyB0byBjaGVjayB2YWx1ZXMu
CisgIDEuIFRoZSB0ZXN0J3MgcmVzdWx0IGlzIGRldGVybWluZWQgYnkgdGhlIGFzc2VydGlvbnM7
IGlmIGFueSBhc3NlcnRpb24gaW4gdGhlIHRlc3QgZmFpbHMgKGVpdGhlciBmYXRhbGx5IG9yIG5v
bi1mYXRhbGx5KSwgb3IgaWYgdGhlIHRlc3QgY3Jhc2hlcywgdGhlIGVudGlyZSB0ZXN0IGZhaWxz
LiBPdGhlcndpc2UsIGl0IHN1Y2NlZWRzLgorCitgYGAKK1RFU1QodGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSkgeworIC4uLiB0ZXN0IGJvZHkgLi4uCit9CitgYGAKKworCitgVEVTVCgpYCBhcmd1
bWVudHMgZ28gZnJvbSBnZW5lcmFsIHRvIHNwZWNpZmljLiBUaGUgX2ZpcnN0XyBhcmd1bWVudCBp
cyB0aGUKK25hbWUgb2YgdGhlIHRlc3QgY2FzZSwgYW5kIHRoZSBfc2Vjb25kXyBhcmd1bWVudCBp
cyB0aGUgdGVzdCdzIG5hbWUgd2l0aGluIHRoZQordGVzdCBjYXNlLiBCb3RoIG5hbWVzIG11c3Qg
YmUgdmFsaWQgQysrIGlkZW50aWZpZXJzLCBhbmQgdGhleSBzaG91bGQgbm90IGNvbnRhaW4gdW5k
ZXJzY29yZSAoYF9gKS4gQSB0ZXN0J3MgX2Z1bGwgbmFtZV8gY29uc2lzdHMgb2YgaXRzIGNvbnRh
aW5pbmcgdGVzdCBjYXNlIGFuZCBpdHMKK2luZGl2aWR1YWwgbmFtZS4gVGVzdHMgZnJvbSBkaWZm
ZXJlbnQgdGVzdCBjYXNlcyBjYW4gaGF2ZSB0aGUgc2FtZSBpbmRpdmlkdWFsCituYW1lLgorCitG
b3IgZXhhbXBsZSwgbGV0J3MgdGFrZSBhIHNpbXBsZSBpbnRlZ2VyIGZ1bmN0aW9uOgorYGBgCitp
bnQgRmFjdG9yaWFsKGludCBuKTsgLy8gUmV0dXJucyB0aGUgZmFjdG9yaWFsIG9mIG4KK2BgYAor
CitBIHRlc3QgY2FzZSBmb3IgdGhpcyBmdW5jdGlvbiBtaWdodCBsb29rIGxpa2U6CitgYGAKKy8v
IFRlc3RzIGZhY3RvcmlhbCBvZiAwLgorVEVTVChGYWN0b3JpYWxUZXN0LCBIYW5kbGVzWmVyb0lu
cHV0KSB7CisgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoMCkpOworfQorCisvLyBUZXN0cyBmYWN0
b3JpYWwgb2YgcG9zaXRpdmUgbnVtYmVycy4KK1RFU1QoRmFjdG9yaWFsVGVzdCwgSGFuZGxlc1Bv
c2l0aXZlSW5wdXQpIHsKKyAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgxKSk7CisgIEVYUEVDVF9F
USgyLCBGYWN0b3JpYWwoMikpOworICBFWFBFQ1RfRVEoNiwgRmFjdG9yaWFsKDMpKTsKKyAgRVhQ
RUNUX0VRKDQwMzIwLCBGYWN0b3JpYWwoOCkpOworfQorYGBgCisKK0dvb2dsZSBUZXN0IGdyb3Vw
cyB0aGUgdGVzdCByZXN1bHRzIGJ5IHRlc3QgY2FzZXMsIHNvIGxvZ2ljYWxseS1yZWxhdGVkIHRl
c3RzCitzaG91bGQgYmUgaW4gdGhlIHNhbWUgdGVzdCBjYXNlOyBpbiBvdGhlciB3b3JkcywgdGhl
IGZpcnN0IGFyZ3VtZW50IHRvIHRoZWlyCitgVEVTVCgpYCBzaG91bGQgYmUgdGhlIHNhbWUuIElu
IHRoZSBhYm92ZSBleGFtcGxlLCB3ZSBoYXZlIHR3byB0ZXN0cywKK2BIYW5kbGVzWmVyb0lucHV0
YCBhbmQgYEhhbmRsZXNQb3NpdGl2ZUlucHV0YCwgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUgdGVz
dAorY2FzZSBgRmFjdG9yaWFsVGVzdGAuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjLgorCisjIFRlc3QgRml4dHVyZXM6IFVzaW5nIHRoZSBTYW1lIERhdGEgQ29uZmlndXJh
dGlvbiBmb3IgTXVsdGlwbGUgVGVzdHMgIworCitJZiB5b3UgZmluZCB5b3Vyc2VsZiB3cml0aW5n
IHR3byBvciBtb3JlIHRlc3RzIHRoYXQgb3BlcmF0ZSBvbiBzaW1pbGFyIGRhdGEsCit5b3UgY2Fu
IHVzZSBhIF90ZXN0IGZpeHR1cmVfLiBJdCBhbGxvd3MgeW91IHRvIHJldXNlIHRoZSBzYW1lIGNv
bmZpZ3VyYXRpb24gb2YKK29iamVjdHMgZm9yIHNldmVyYWwgZGlmZmVyZW50IHRlc3RzLgorCitU
byBjcmVhdGUgYSBmaXh0dXJlLCBqdXN0OgorICAxLiBEZXJpdmUgYSBjbGFzcyBmcm9tIGA6OnRl
c3Rpbmc6OlRlc3RgIC4gU3RhcnQgaXRzIGJvZHkgd2l0aCBgcHJvdGVjdGVkOmAgb3IgYHB1Ymxp
YzpgIGFzIHdlJ2xsIHdhbnQgdG8gYWNjZXNzIGZpeHR1cmUgbWVtYmVycyBmcm9tIHN1Yi1jbGFz
c2VzLgorICAxLiBJbnNpZGUgdGhlIGNsYXNzLCBkZWNsYXJlIGFueSBvYmplY3RzIHlvdSBwbGFu
IHRvIHVzZS4KKyAgMS4gSWYgbmVjZXNzYXJ5LCB3cml0ZSBhIGRlZmF1bHQgY29uc3RydWN0b3Ig
b3IgYFNldFVwKClgIGZ1bmN0aW9uIHRvIHByZXBhcmUgdGhlIG9iamVjdHMgZm9yIGVhY2ggdGVz
dC4gQSBjb21tb24gbWlzdGFrZSBpcyB0byBzcGVsbCBgU2V0VXAoKWAgYXMgYFNldHVwKClgIHdp
dGggYSBzbWFsbCBgdWAgLSBkb24ndCBsZXQgdGhhdCBoYXBwZW4gdG8geW91LgorICAxLiBJZiBu
ZWNlc3NhcnksIHdyaXRlIGEgZGVzdHJ1Y3RvciBvciBgVGVhckRvd24oKWAgZnVuY3Rpb24gdG8g
cmVsZWFzZSBhbnkgcmVzb3VyY2VzIHlvdSBhbGxvY2F0ZWQgaW4gYFNldFVwKClgIC4gVG8gbGVh
cm4gd2hlbiB5b3Ugc2hvdWxkIHVzZSB0aGUgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBhbmQgd2hl
biB5b3Ugc2hvdWxkIHVzZSBgU2V0VXAoKS9UZWFyRG93bigpYCwgcmVhZCB0aGlzIFtGQVEgZW50
cnldKFYxXzdfRkFRLm1kI3Nob3VsZC1pLXVzZS10aGUtY29uc3RydWN0b3JkZXN0cnVjdG9yLW9m
LXRoZS10ZXN0LWZpeHR1cmUtb3ItdGhlLXNldC11cHRlYXItZG93bi1mdW5jdGlvbikuCisgIDEu
IElmIG5lZWRlZCwgZGVmaW5lIHN1YnJvdXRpbmVzIGZvciB5b3VyIHRlc3RzIHRvIHNoYXJlLgor
CitXaGVuIHVzaW5nIGEgZml4dHVyZSwgdXNlIGBURVNUX0YoKWAgaW5zdGVhZCBvZiBgVEVTVCgp
YCBhcyBpdCBhbGxvd3MgeW91IHRvCithY2Nlc3Mgb2JqZWN0cyBhbmQgc3Vicm91dGluZXMgaW4g
dGhlIHRlc3QgZml4dHVyZToKK2BgYAorVEVTVF9GKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUp
IHsKKyAuLi4gdGVzdCBib2R5IC4uLgorfQorYGBgCisKK0xpa2UgYFRFU1QoKWAsIHRoZSBmaXJz
dCBhcmd1bWVudCBpcyB0aGUgdGVzdCBjYXNlIG5hbWUsIGJ1dCBmb3IgYFRFU1RfRigpYAordGhp
cyBtdXN0IGJlIHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuIFlvdSd2ZSBwcm9i
YWJseSBndWVzc2VkOiBgX0ZgCitpcyBmb3IgZml4dHVyZS4KKworVW5mb3J0dW5hdGVseSwgdGhl
IEMrKyBtYWNybyBzeXN0ZW0gZG9lcyBub3QgYWxsb3cgdXMgdG8gY3JlYXRlIGEgc2luZ2xlIG1h
Y3JvCit0aGF0IGNhbiBoYW5kbGUgYm90aCB0eXBlcyBvZiB0ZXN0cy4gVXNpbmcgdGhlIHdyb25n
IG1hY3JvIGNhdXNlcyBhIGNvbXBpbGVyCitlcnJvci4KKworQWxzbywgeW91IG11c3QgZmlyc3Qg
ZGVmaW5lIGEgdGVzdCBmaXh0dXJlIGNsYXNzIGJlZm9yZSB1c2luZyBpdCBpbiBhCitgVEVTVF9G
KClgLCBvciB5b3UnbGwgZ2V0IHRoZSBjb21waWxlciBlcnJvciAiYHZpcnR1YWwgb3V0c2lkZSBj
bGFzcworZGVjbGFyYXRpb25gIi4KKworRm9yIGVhY2ggdGVzdCBkZWZpbmVkIHdpdGggYFRFU1Rf
RigpYCwgR29vZ2xlIFRlc3Qgd2lsbDoKKyAgMS4gQ3JlYXRlIGEgX2ZyZXNoXyB0ZXN0IGZpeHR1
cmUgYXQgcnVudGltZQorICAxLiBJbW1lZGlhdGVseSBpbml0aWFsaXplIGl0IHZpYSBgU2V0VXAo
KWAgLAorICAxLiBSdW4gdGhlIHRlc3QKKyAgMS4gQ2xlYW4gdXAgYnkgY2FsbGluZyBgVGVhckRv
d24oKWAKKyAgMS4gRGVsZXRlIHRoZSB0ZXN0IGZpeHR1cmUuICBOb3RlIHRoYXQgZGlmZmVyZW50
IHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBoYXZlIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUg
b2JqZWN0cywgYW5kIEdvb2dsZSBUZXN0IGFsd2F5cyBkZWxldGVzIGEgdGVzdCBmaXh0dXJlIGJl
Zm9yZSBpdCBjcmVhdGVzIHRoZSBuZXh0IG9uZS4gR29vZ2xlIFRlc3QgZG9lcyBub3QgcmV1c2Ug
dGhlIHNhbWUgdGVzdCBmaXh0dXJlIGZvciBtdWx0aXBsZSB0ZXN0cy4gQW55IGNoYW5nZXMgb25l
IHRlc3QgbWFrZXMgdG8gdGhlIGZpeHR1cmUgZG8gbm90IGFmZmVjdCBvdGhlciB0ZXN0cy4KKwor
QXMgYW4gZXhhbXBsZSwgbGV0J3Mgd3JpdGUgdGVzdHMgZm9yIGEgRklGTyBxdWV1ZSBjbGFzcyBu
YW1lZCBgUXVldWVgLCB3aGljaAoraGFzIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlOgorYGBgCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRT4gLy8gRSBpcyB0aGUgZWxlbWVudCB0eXBlLgorY2xhc3MgUXVl
dWUgeworIHB1YmxpYzoKKyAgUXVldWUoKTsKKyAgdm9pZCBFbnF1ZXVlKGNvbnN0IEUmIGVsZW1l
bnQpOworICBFKiBEZXF1ZXVlKCk7IC8vIFJldHVybnMgTlVMTCBpZiB0aGUgcXVldWUgaXMgZW1w
dHkuCisgIHNpemVfdCBzaXplKCkgY29uc3Q7CisgIC4uLgorfTsKK2BgYAorCitGaXJzdCwgZGVm
aW5lIGEgZml4dHVyZSBjbGFzcy4gQnkgY29udmVudGlvbiwgeW91IHNob3VsZCBnaXZlIGl0IHRo
ZSBuYW1lCitgRm9vVGVzdGAgd2hlcmUgYEZvb2AgaXMgdGhlIGNsYXNzIGJlaW5nIHRlc3RlZC4K
K2BgYAorY2xhc3MgUXVldWVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVj
dGVkOgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgcTFfLkVucXVldWUoMSk7CisgICAg
cTJfLkVucXVldWUoMik7CisgICAgcTJfLkVucXVldWUoMyk7CisgIH0KKworICAvLyB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7fQorCisgIFF1ZXVlPGludD4gcTBfOworICBRdWV1ZTxpbnQ+IHEx
XzsKKyAgUXVldWU8aW50PiBxMl87Cit9OworYGBgCisKK0luIHRoaXMgY2FzZSwgYFRlYXJEb3du
KClgIGlzIG5vdCBuZWVkZWQgc2luY2Ugd2UgZG9uJ3QgaGF2ZSB0byBjbGVhbiB1cCBhZnRlcgor
ZWFjaCB0ZXN0LCBvdGhlciB0aGFuIHdoYXQncyBhbHJlYWR5IGRvbmUgYnkgdGhlIGRlc3RydWN0
b3IuCisKK05vdyB3ZSdsbCB3cml0ZSB0ZXN0cyB1c2luZyBgVEVTVF9GKClgIGFuZCB0aGlzIGZp
eHR1cmUuCitgYGAKK1RFU1RfRihRdWV1ZVRlc3QsIElzRW1wdHlJbml0aWFsbHkpIHsKKyAgRVhQ
RUNUX0VRKDAsIHEwXy5zaXplKCkpOworfQorCitURVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVlV29y
a3MpIHsKKyAgaW50KiBuID0gcTBfLkRlcXVldWUoKTsKKyAgRVhQRUNUX0VRKE5VTEwsIG4pOwor
CisgIG4gPSBxMV8uRGVxdWV1ZSgpOworICBBU1NFUlRfVFJVRShuICE9IE5VTEwpOworICBFWFBF
Q1RfRVEoMSwgKm4pOworICBFWFBFQ1RfRVEoMCwgcTFfLnNpemUoKSk7CisgIGRlbGV0ZSBuOwor
CisgIG4gPSBxMl8uRGVxdWV1ZSgpOworICBBU1NFUlRfVFJVRShuICE9IE5VTEwpOworICBFWFBF
Q1RfRVEoMiwgKm4pOworICBFWFBFQ1RfRVEoMSwgcTJfLnNpemUoKSk7CisgIGRlbGV0ZSBuOwor
fQorYGBgCisKK1RoZSBhYm92ZSB1c2VzIGJvdGggYEFTU0VSVF8qYCBhbmQgYEVYUEVDVF8qYCBh
c3NlcnRpb25zLiBUaGUgcnVsZSBvZiB0aHVtYiBpcwordG8gdXNlIGBFWFBFQ1RfKmAgd2hlbiB5
b3Ugd2FudCB0aGUgdGVzdCB0byBjb250aW51ZSB0byByZXZlYWwgbW9yZSBlcnJvcnMKK2FmdGVy
IHRoZSBhc3NlcnRpb24gZmFpbHVyZSwgYW5kIHVzZSBgQVNTRVJUXypgIHdoZW4gY29udGludWlu
ZyBhZnRlciBmYWlsdXJlCitkb2Vzbid0IG1ha2Ugc2Vuc2UuIEZvciBleGFtcGxlLCB0aGUgc2Vj
b25kIGFzc2VydGlvbiBpbiB0aGUgYERlcXVldWVgIHRlc3QgaXMKK2BBU1NFUlRfVFJVRShuICE9
IE5VTEwpYCwgYXMgd2UgbmVlZCB0byBkZXJlZmVyZW5jZSB0aGUgcG9pbnRlciBgbmAgbGF0ZXIs
Cit3aGljaCB3b3VsZCBsZWFkIHRvIGEgc2VnZmF1bHQgd2hlbiBgbmAgaXMgYE5VTExgLgorCitX
aGVuIHRoZXNlIHRlc3RzIHJ1biwgdGhlIGZvbGxvd2luZyBoYXBwZW5zOgorICAxLiBHb29nbGUg
VGVzdCBjb25zdHJ1Y3RzIGEgYFF1ZXVlVGVzdGAgb2JqZWN0IChsZXQncyBjYWxsIGl0IGB0MWAg
KS4KKyAgMS4gYHQxLlNldFVwKClgIGluaXRpYWxpemVzIGB0MWAgLgorICAxLiBUaGUgZmlyc3Qg
dGVzdCAoIGBJc0VtcHR5SW5pdGlhbGx5YCApIHJ1bnMgb24gYHQxYCAuCisgIDEuIGB0MS5UZWFy
RG93bigpYCBjbGVhbnMgdXAgYWZ0ZXIgdGhlIHRlc3QgZmluaXNoZXMuCisgIDEuIGB0MWAgaXMg
ZGVzdHJ1Y3RlZC4KKyAgMS4gVGhlIGFib3ZlIHN0ZXBzIGFyZSByZXBlYXRlZCBvbiBhbm90aGVy
IGBRdWV1ZVRlc3RgIG9iamVjdCwgdGhpcyB0aW1lIHJ1bm5pbmcgdGhlIGBEZXF1ZXVlV29ya3Ng
IHRlc3QuCisKK19BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgorCitfTm90ZV86
IEdvb2dsZSBUZXN0IGF1dG9tYXRpY2FsbHkgc2F2ZXMgYWxsIF9Hb29nbGUgVGVzdF8gZmxhZ3Mg
d2hlbiBhIHRlc3QKK29iamVjdCBpcyBjb25zdHJ1Y3RlZCwgYW5kIHJlc3RvcmVzIHRoZW0gd2hl
biBpdCBpcyBkZXN0cnVjdGVkLgorCisjIEludm9raW5nIHRoZSBUZXN0cyAjCisKK2BURVNUKClg
IGFuZCBgVEVTVF9GKClgIGltcGxpY2l0bHkgcmVnaXN0ZXIgdGhlaXIgdGVzdHMgd2l0aCBHb29n
bGUgVGVzdC4gU28sIHVubGlrZSB3aXRoIG1hbnkgb3RoZXIgQysrIHRlc3RpbmcgZnJhbWV3b3Jr
cywgeW91IGRvbid0IGhhdmUgdG8gcmUtbGlzdCBhbGwgeW91ciBkZWZpbmVkIHRlc3RzIGluIG9y
ZGVyIHRvIHJ1biB0aGVtLgorCitBZnRlciBkZWZpbmluZyB5b3VyIHRlc3RzLCB5b3UgY2FuIHJ1
biB0aGVtIHdpdGggYFJVTl9BTExfVEVTVFMoKWAgLCB3aGljaCByZXR1cm5zIGAwYCBpZiBhbGwg
dGhlIHRlc3RzIGFyZSBzdWNjZXNzZnVsLCBvciBgMWAgb3RoZXJ3aXNlLiBOb3RlIHRoYXQgYFJV
Tl9BTExfVEVTVFMoKWAgcnVucyBfYWxsIHRlc3RzXyBpbiB5b3VyIGxpbmsgdW5pdCAtLSB0aGV5
IGNhbiBiZSBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLCBvciBldmVuIGRpZmZlcmVudCBzb3Vy
Y2UgZmlsZXMuCisKK1doZW4gaW52b2tlZCwgdGhlIGBSVU5fQUxMX1RFU1RTKClgIG1hY3JvOgor
ICAxLiBTYXZlcyB0aGUgc3RhdGUgb2YgYWxsICBHb29nbGUgVGVzdCBmbGFncy4KKyAgMS4gQ3Jl
YXRlcyBhIHRlc3QgZml4dHVyZSBvYmplY3QgZm9yIHRoZSBmaXJzdCB0ZXN0LgorICAxLiBJbml0
aWFsaXplcyBpdCB2aWEgYFNldFVwKClgLgorICAxLiBSdW5zIHRoZSB0ZXN0IG9uIHRoZSBmaXh0
dXJlIG9iamVjdC4KKyAgMS4gQ2xlYW5zIHVwIHRoZSBmaXh0dXJlIHZpYSBgVGVhckRvd24oKWAu
CisgIDEuIERlbGV0ZXMgdGhlIGZpeHR1cmUuCisgIDEuIFJlc3RvcmVzIHRoZSBzdGF0ZSBvZiBh
bGwgR29vZ2xlIFRlc3QgZmxhZ3MuCisgIDEuIFJlcGVhdHMgdGhlIGFib3ZlIHN0ZXBzIGZvciB0
aGUgbmV4dCB0ZXN0LCB1bnRpbCBhbGwgdGVzdHMgaGF2ZSBydW4uCisKK0luIGFkZGl0aW9uLCBp
ZiB0aGUgdGV4dCBmaXh0dXJlJ3MgY29uc3RydWN0b3IgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVy
ZSBpbgorc3RlcCAyLCB0aGVyZSBpcyBubyBwb2ludCBmb3Igc3RlcCAzIC0gNSBhbmQgdGhleSBh
cmUgdGh1cyBza2lwcGVkLiBTaW1pbGFybHksCitpZiBzdGVwIDMgZ2VuZXJhdGVzIGEgZmF0YWwg
ZmFpbHVyZSwgc3RlcCA0IHdpbGwgYmUgc2tpcHBlZC4KKworX0ltcG9ydGFudF86IFlvdSBtdXN0
IG5vdCBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYCwgb3IgYGdj
Y2AKK3dpbGwgZ2l2ZSB5b3UgYSBjb21waWxlciBlcnJvci4gVGhlIHJhdGlvbmFsZSBmb3IgdGhp
cyBkZXNpZ24gaXMgdGhhdCB0aGUKK2F1dG9tYXRlZCB0ZXN0aW5nIHNlcnZpY2UgZGV0ZXJtaW5l
cyB3aGV0aGVyIGEgdGVzdCBoYXMgcGFzc2VkIGJhc2VkIG9uIGl0cworZXhpdCBjb2RlLCBub3Qg
b24gaXRzIHN0ZG91dC9zdGRlcnIgb3V0cHV0OyB0aHVzIHlvdXIgYG1haW4oKWAgZnVuY3Rpb24g
bXVzdAorcmV0dXJuIHRoZSB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYC4KKworQWxzbywgeW91
IHNob3VsZCBjYWxsIGBSVU5fQUxMX1RFU1RTKClgIG9ubHkgKipvbmNlKiouIENhbGxpbmcgaXQg
bW9yZSB0aGFuIG9uY2UKK2NvbmZsaWN0cyB3aXRoIHNvbWUgYWR2YW5jZWQgR29vZ2xlIFRlc3Qg
ZmVhdHVyZXMgKGUuZy4gdGhyZWFkLXNhZmUgZGVhdGgKK3Rlc3RzKSBhbmQgdGh1cyBpcyBub3Qg
c3VwcG9ydGVkLgorCitfQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyBX
cml0aW5nIHRoZSBtYWluKCkgRnVuY3Rpb24gIworCitZb3UgY2FuIHN0YXJ0IGZyb20gdGhpcyBi
b2lsZXJwbGF0ZToKK2BgYAorI2luY2x1ZGUgInRoaXMvcGFja2FnZS9mb28uaCIKKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCisvLyBUaGUgZml4dHVyZSBmb3IgdGVz
dGluZyBjbGFzcyBGb28uCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
CisgcHJvdGVjdGVkOgorICAvLyBZb3UgY2FuIHJlbW92ZSBhbnkgb3IgYWxsIG9mIHRoZSBmb2xs
b3dpbmcgZnVuY3Rpb25zIGlmIGl0cyBib2R5CisgIC8vIGlzIGVtcHR5LgorCisgIEZvb1Rlc3Qo
KSB7CisgICAgLy8gWW91IGNhbiBkbyBzZXQtdXAgd29yayBmb3IgZWFjaCB0ZXN0IGhlcmUuCisg
IH0KKworICB2aXJ0dWFsIH5Gb29UZXN0KCkgeworICAgIC8vIFlvdSBjYW4gZG8gY2xlYW4tdXAg
d29yayB0aGF0IGRvZXNuJ3QgdGhyb3cgZXhjZXB0aW9ucyBoZXJlLgorICB9CisKKyAgLy8gSWYg
dGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIGFyZSBub3QgZW5vdWdoIGZvciBzZXR0aW5n
IHVwCisgIC8vIGFuZCBjbGVhbmluZyB1cCBlYWNoIHRlc3QsIHlvdSBjYW4gZGVmaW5lIHRoZSBm
b2xsb3dpbmcgbWV0aG9kczoKKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgLy8gQ29k
ZSBoZXJlIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjb25zdHJ1Y3RvciAo
cmlnaHQKKyAgICAvLyBiZWZvcmUgZWFjaCB0ZXN0KS4KKyAgfQorCisgIHZpcnR1YWwgdm9pZCBU
ZWFyRG93bigpIHsKKyAgICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkg
YWZ0ZXIgZWFjaCB0ZXN0IChyaWdodAorICAgIC8vIGJlZm9yZSB0aGUgZGVzdHJ1Y3RvcikuCisg
IH0KKworICAvLyBPYmplY3RzIGRlY2xhcmVkIGhlcmUgY2FuIGJlIHVzZWQgYnkgYWxsIHRlc3Rz
IGluIHRoZSB0ZXN0IGNhc2UgZm9yIEZvby4KK307CisKKy8vIFRlc3RzIHRoYXQgdGhlIEZvbzo6
QmFyKCkgbWV0aG9kIGRvZXMgQWJjLgorVEVTVF9GKEZvb1Rlc3QsIE1ldGhvZEJhckRvZXNBYmMp
IHsKKyAgY29uc3Qgc3RyaW5nIGlucHV0X2ZpbGVwYXRoID0gInRoaXMvcGFja2FnZS90ZXN0ZGF0
YS9teWlucHV0ZmlsZS5kYXQiOworICBjb25zdCBzdHJpbmcgb3V0cHV0X2ZpbGVwYXRoID0gInRo
aXMvcGFja2FnZS90ZXN0ZGF0YS9teW91dHB1dGZpbGUuZGF0IjsKKyAgRm9vIGY7CisgIEVYUEVD
VF9FUSgwLCBmLkJhcihpbnB1dF9maWxlcGF0aCwgb3V0cHV0X2ZpbGVwYXRoKSk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgRm9vIGRvZXMgWHl6LgorVEVTVF9GKEZvb1Rlc3QsIERvZXNYeXopIHsKKyAg
Ly8gRXhlcmNpc2VzIHRoZSBYeXogZmVhdHVyZSBvZiBGb28uCit9CisKK30gIC8vIG5hbWVzcGFj
ZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9Citg
YGAKKworVGhlIGA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClgIGZ1bmN0aW9uIHBhcnNlcyB0
aGUgY29tbWFuZCBsaW5lIGZvciBHb29nbGUKK1Rlc3QgZmxhZ3MsIGFuZCByZW1vdmVzIGFsbCBy
ZWNvZ25pemVkIGZsYWdzLiBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBjb250cm9sIGEKK3Rlc3Qg
cHJvZ3JhbSdzIGJlaGF2aW9yIHZpYSB2YXJpb3VzIGZsYWdzLCB3aGljaCB3ZSdsbCBjb3ZlciBp
biBbQWR2YW5jZWRHdWlkZV0oVjFfN19BZHZhbmNlZEd1aWRlLm1kKS4KK1lvdSBtdXN0IGNhbGwg
dGhpcyBmdW5jdGlvbiBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9URVNUUygpYCwgb3IgdGhlIGZs
YWdzCit3b24ndCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4KKworT24gV2luZG93cywgYEluaXRH
b29nbGVUZXN0KClgIGFsc28gd29ya3Mgd2l0aCB3aWRlIHN0cmluZ3MsIHNvIGl0IGNhbiBiZSB1
c2VkCitpbiBwcm9ncmFtcyBjb21waWxlZCBpbiBgVU5JQ09ERWAgbW9kZSBhcyB3ZWxsLgorCitC
dXQgbWF5YmUgeW91IHRoaW5rIHRoYXQgd3JpdGluZyBhbGwgdGhvc2UgbWFpbigpIGZ1bmN0aW9u
cyBpcyB0b28gbXVjaCB3b3JrPyBXZSBhZ3JlZSB3aXRoIHlvdSBjb21wbGV0ZWx5IGFuZCB0aGF0
J3Mgd2h5IEdvb2dsZSBUZXN0IHByb3ZpZGVzIGEgYmFzaWMgaW1wbGVtZW50YXRpb24gb2YgbWFp
bigpLiBJZiBpdCBmaXRzIHlvdXIgbmVlZHMsIHRoZW4ganVzdCBsaW5rIHlvdXIgdGVzdCB3aXRo
IGd0ZXN0XF9tYWluIGxpYnJhcnkgYW5kIHlvdSBhcmUgZ29vZCB0byBnby4KKworIyMgSW1wb3J0
YW50IG5vdGUgZm9yIFZpc3VhbCBDKysgdXNlcnMgIyMKK0lmIHlvdSBwdXQgeW91ciB0ZXN0cyBp
bnRvIGEgbGlicmFyeSBhbmQgeW91ciBgbWFpbigpYCBmdW5jdGlvbiBpcyBpbiBhIGRpZmZlcmVu
dCBsaWJyYXJ5IG9yIGluIHlvdXIgLmV4ZSBmaWxlLCB0aG9zZSB0ZXN0cyB3aWxsIG5vdCBydW4u
IFRoZSByZWFzb24gaXMgYSBbYnVnXShodHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNvbS9mZWVk
YmFjay92aWV3ZmVlZGJhY2suYXNweD9GZWVkYmFja0lEPTI0NDQxMCZzaXRlaWQ9MjEwKSBpbiBW
aXN1YWwgQysrLiBXaGVuIHlvdSBkZWZpbmUgeW91ciB0ZXN0cywgR29vZ2xlIFRlc3QgY3JlYXRl
cyBjZXJ0YWluIHN0YXRpYyBvYmplY3RzIHRvIHJlZ2lzdGVyIHRoZW0uIFRoZXNlIG9iamVjdHMg
YXJlIG5vdCByZWZlcmVuY2VkIGZyb20gZWxzZXdoZXJlIGJ1dCB0aGVpciBjb25zdHJ1Y3RvcnMg
YXJlIHN0aWxsIHN1cHBvc2VkIHRvIHJ1bi4gV2hlbiBWaXN1YWwgQysrIGxpbmtlciBzZWVzIHRo
YXQgbm90aGluZyBpbiB0aGUgbGlicmFyeSBpcyByZWZlcmVuY2VkIGZyb20gb3RoZXIgcGxhY2Vz
IGl0IHRocm93cyB0aGUgbGlicmFyeSBvdXQuIFlvdSBoYXZlIHRvIHJlZmVyZW5jZSB5b3VyIGxp
YnJhcnkgd2l0aCB0ZXN0cyBmcm9tIHlvdXIgbWFpbiBwcm9ncmFtIHRvIGtlZXAgdGhlIGxpbmtl
ciBmcm9tIGRpc2NhcmRpbmcgaXQuIEhlcmUgaXMgaG93IHRvIGRvIGl0LiBTb21ld2hlcmUgaW4g
eW91ciBsaWJyYXJ5IGNvZGUgZGVjbGFyZSBhIGZ1bmN0aW9uOgorYGBgCitfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgaW50IFB1bGxJbk15TGlicmFyeSgpIHsgcmV0dXJuIDA7IH0KK2BgYAorSWYgeW91
IHB1dCB5b3VyIHRlc3RzIGluIGEgc3RhdGljIGxpYnJhcnkgKG5vdCBETEwpIHRoZW4gYF9fZGVj
bHNwZWMoZGxsZXhwb3J0KWAgaXMgbm90IHJlcXVpcmVkLiBOb3csIGluIHlvdXIgbWFpbiBwcm9n
cmFtLCB3cml0ZSBhIGNvZGUgdGhhdCBpbnZva2VzIHRoYXQgZnVuY3Rpb246CitgYGAKK2ludCBQ
dWxsSW5NeUxpYnJhcnkoKTsKK3N0YXRpYyBpbnQgZHVtbXkgPSBQdWxsSW5NeUxpYnJhcnkoKTsK
K2BgYAorVGhpcyB3aWxsIGtlZXAgeW91ciB0ZXN0cyByZWZlcmVuY2VkIGFuZCB3aWxsIG1ha2Ug
dGhlbSByZWdpc3RlciB0aGVtc2VsdmVzIGF0IHN0YXJ0dXAuCisKK0luIGFkZGl0aW9uLCBpZiB5
b3UgZGVmaW5lIHlvdXIgdGVzdHMgaW4gYSBzdGF0aWMgbGlicmFyeSwgYWRkIGAvT1BUOk5PUkVG
YCB0byB5b3VyIG1haW4gcHJvZ3JhbSBsaW5rZXIgb3B0aW9ucy4gSWYgeW91IHVzZSBNU1ZDKysg
SURFLCBnbyB0byB5b3VyIC5leGUgcHJvamVjdCBwcm9wZXJ0aWVzL0NvbmZpZ3VyYXRpb24gUHJv
cGVydGllcy9MaW5rZXIvT3B0aW1pemF0aW9uIGFuZCBzZXQgUmVmZXJlbmNlcyBzZXR0aW5nIHRv
IGBLZWVwIFVucmVmZXJlbmNlZCBEYXRhICgvT1BUOk5PUkVGKWAuIFRoaXMgd2lsbCBrZWVwIFZp
c3VhbCBDKysgbGlua2VyIGZyb20gZGlzY2FyZGluZyBpbmRpdmlkdWFsIHN5bWJvbHMgZ2VuZXJh
dGVkIGJ5IHlvdXIgdGVzdHMgZnJvbSB0aGUgZmluYWwgZXhlY3V0YWJsZS4KKworVGhlcmUgaXMg
b25lIG1vcmUgcGl0ZmFsbCwgdGhvdWdoLiBJZiB5b3UgdXNlIEdvb2dsZSBUZXN0IGFzIGEgc3Rh
dGljIGxpYnJhcnkgKHRoYXQncyBob3cgaXQgaXMgZGVmaW5lZCBpbiBndGVzdC52Y3Byb2opIHlv
dXIgdGVzdHMgbXVzdCBhbHNvIHJlc2lkZSBpbiBhIHN0YXRpYyBsaWJyYXJ5LiBJZiB5b3UgaGF2
ZSB0byBoYXZlIHRoZW0gaW4gYSBETEwsIHlvdSBfbXVzdF8gY2hhbmdlIEdvb2dsZSBUZXN0IHRv
IGJ1aWxkIGludG8gYSBETEwgYXMgd2VsbC4gT3RoZXJ3aXNlIHlvdXIgdGVzdHMgd2lsbCBub3Qg
cnVuIGNvcnJlY3RseSBvciB3aWxsIG5vdCBydW4gYXQgYWxsLiBUaGUgZ2VuZXJhbCBjb25jbHVz
aW9uIGhlcmUgaXM6IG1ha2UgeW91ciBsaWZlIGVhc2llciAtIGRvIG5vdCB3cml0ZSB5b3VyIHRl
c3RzIGluIGxpYnJhcmllcyEKKworIyBXaGVyZSB0byBHbyBmcm9tIEhlcmUgIworCitDb25ncmF0
dWxhdGlvbnMhIFlvdSd2ZSBsZWFybmVkIHRoZSBHb29nbGUgVGVzdCBiYXNpY3MuIFlvdSBjYW4g
c3RhcnQgd3JpdGluZworYW5kIHJ1bm5pbmcgR29vZ2xlIFRlc3QgdGVzdHMsIHJlYWQgc29tZSBb
c2FtcGxlc10oVjFfN19TYW1wbGVzLm1kKSwgb3IgY29udGludWUgd2l0aAorW0FkdmFuY2VkR3Vp
ZGVdKFYxXzdfQWR2YW5jZWRHdWlkZS5tZCksIHdoaWNoIGRlc2NyaWJlcyBtYW55IG1vcmUgdXNl
ZnVsIEdvb2dsZSBUZXN0IGZlYXR1cmVzLgorCisjIEtub3duIExpbWl0YXRpb25zICMKKworR29v
Z2xlIFRlc3QgaXMgZGVzaWduZWQgdG8gYmUgdGhyZWFkLXNhZmUuICBUaGUgaW1wbGVtZW50YXRp
b24gaXMKK3RocmVhZC1zYWZlIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGBwdGhyZWFkc2AgbGlicmFy
eSBpcyBhdmFpbGFibGUuICBJdAoraXMgY3VycmVudGx5IF91bnNhZmVfIHRvIHVzZSBHb29nbGUg
VGVzdCBhc3NlcnRpb25zIGZyb20gdHdvIHRocmVhZHMKK2NvbmN1cnJlbnRseSBvbiBvdGhlciBz
eXN0ZW1zIChlLmcuIFdpbmRvd3MpLiAgSW4gbW9zdCB0ZXN0cyB0aGlzIGlzCitub3QgYW4gaXNz
dWUgYXMgdXN1YWxseSB0aGUgYXNzZXJ0aW9ucyBhcmUgZG9uZSBpbiB0aGUgbWFpbiB0aHJlYWQu
IElmCit5b3Ugd2FudCB0byBoZWxwLCB5b3UgY2FuIHZvbHVudGVlciB0byBpbXBsZW1lbnQgdGhl
IG5lY2Vzc2FyeQorc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYGd0ZXN0LXBvcnQuaGAg
Zm9yIHlvdXIgcGxhdGZvcm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9k
b2NzL1YxXzdfUHVtcE1hbnVhbC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvVjFf
N19QdW1wTWFudWFsLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxODRmMTUzY2EyZWNhZDdjNjVjYjU4YzI3ZmIz
MWJkNzIzNzVmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9k
b2NzL1YxXzdfUHVtcE1hbnVhbC5tZApAQCAtMCwwICsxLDE3NyBAQAorCisKKzxiPlA8L2I+dW1w
IGlzIDxiPlU8L2I+c2VmdWwgZm9yIDxiPk08L2I+ZXRhIDxiPlA8L2I+cm9ncmFtbWluZy4KKwor
IyBUaGUgUHJvYmxlbSAjCisKK1RlbXBsYXRlIGFuZCBtYWNybyBsaWJyYXJpZXMgb2Z0ZW4gbmVl
ZCB0byBkZWZpbmUgbWFueSBjbGFzc2VzLAorZnVuY3Rpb25zLCBvciBtYWNyb3MgdGhhdCB2YXJ5
IG9ubHkgKG9yIGFsbW9zdCBvbmx5KSBpbiB0aGUgbnVtYmVyIG9mCithcmd1bWVudHMgdGhleSB0
YWtlLiBJdCdzIGEgbG90IG9mIHJlcGV0aXRpdmUsIG1lY2hhbmljYWwsIGFuZAorZXJyb3ItcHJv
bmUgd29yay4KKworVmFyaWFkaWMgdGVtcGxhdGVzIGFuZCB2YXJpYWRpYyBtYWNyb3MgY2FuIGFs
bGV2aWF0ZSB0aGUgcHJvYmxlbS4KK0hvd2V2ZXIsIHdoaWxlIGJvdGggYXJlIGJlaW5nIGNvbnNp
ZGVyZWQgYnkgdGhlIEMrKyBjb21taXR0ZWUsIG5laXRoZXIKK2lzIGluIHRoZSBzdGFuZGFyZCB5
ZXQgb3Igd2lkZWx5IHN1cHBvcnRlZCBieSBjb21waWxlcnMuICBUaHVzIHRoZXkKK2FyZSBvZnRl
biBub3QgYSBnb29kIGNob2ljZSwgZXNwZWNpYWxseSB3aGVuIHlvdXIgY29kZSBuZWVkcyB0byBi
ZQorcG9ydGFibGUuIEFuZCB0aGVpciBjYXBhYmlsaXRpZXMgYXJlIHN0aWxsIGxpbWl0ZWQuCisK
K0FzIGEgcmVzdWx0LCBhdXRob3JzIG9mIHN1Y2ggbGlicmFyaWVzIG9mdGVuIGhhdmUgdG8gd3Jp
dGUgc2NyaXB0cyB0bworZ2VuZXJhdGUgdGhlaXIgaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIsIG91
ciBleHBlcmllbmNlIGlzIHRoYXQgaXQncwordGVkaW91cyB0byB3cml0ZSBzdWNoIHNjcmlwdHMs
IHdoaWNoIHRlbmQgdG8gcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mCit0aGUgZ2VuZXJhdGVkIGNv
ZGUgcG9vcmx5IGFuZCBhcmUgb2Z0ZW4gaGFyZCB0byByZWFkIGFuZCBlZGl0LiBGb3IKK2V4YW1w
bGUsIGEgc21hbGwgY2hhbmdlIG5lZWRlZCBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUgbWF5IHJlcXVp
cmUgc29tZQorbm9uLWludHVpdGl2ZSwgbm9uLXRyaXZpYWwgY2hhbmdlcyBpbiB0aGUgc2NyaXB0
LiBUaGlzIGlzIGVzcGVjaWFsbHkKK3BhaW5mdWwgd2hlbiBleHBlcmltZW50aW5nIHdpdGggdGhl
IGNvZGUuCisKKyMgT3VyIFNvbHV0aW9uICMKKworUHVtcCAoZm9yIFB1bXAgaXMgVXNlZnVsIGZv
ciBNZXRhIFByb2dyYW1taW5nLCBQcmV0dHkgVXNlZnVsIGZvciBNZXRhCitQcm9ncmFtbWluZywg
b3IgUHJhY3RpY2FsIFV0aWxpdHkgZm9yIE1ldGEgUHJvZ3JhbW1pbmcsIHdoaWNoZXZlciB5b3UK
K3ByZWZlcikgaXMgYSBzaW1wbGUgbWV0YS1wcm9ncmFtbWluZyB0b29sIGZvciBDKysuIFRoZSBp
ZGVhIGlzIHRoYXQgYQorcHJvZ3JhbW1lciB3cml0ZXMgYSBgZm9vLnB1bXBgIGZpbGUgd2hpY2gg
Y29udGFpbnMgQysrIGNvZGUgcGx1cyBtZXRhCitjb2RlIHRoYXQgbWFuaXB1bGF0ZXMgdGhlIEMr
KyBjb2RlLiBUaGUgbWV0YSBjb2RlIGNhbiBoYW5kbGUKK2l0ZXJhdGlvbnMgb3ZlciBhIHJhbmdl
LCBuZXN0ZWQgaXRlcmF0aW9ucywgbG9jYWwgbWV0YSB2YXJpYWJsZQorZGVmaW5pdGlvbnMsIHNp
bXBsZSBhcml0aG1ldGljLCBhbmQgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMuIFlvdSBjYW4KK3Zp
ZXcgaXQgYXMgYSBzbWFsbCBEb21haW4tU3BlY2lmaWMgTGFuZ3VhZ2UuIFRoZSBtZXRhIGxhbmd1
YWdlIGlzCitkZXNpZ25lZCB0byBiZSBub24taW50cnVzaXZlIChzLnQuIGl0IHdvbid0IGNvbmZ1
c2UgRW1hY3MnIEMrKyBtb2RlLAorZm9yIGV4YW1wbGUpIGFuZCBjb25jaXNlLCBtYWtpbmcgUHVt
cCBjb2RlIGludHVpdGl2ZSBhbmQgZWFzeSB0bworbWFpbnRhaW4uCisKKyMjIEhpZ2hsaWdodHMg
IyMKKworICAqIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBpbiBhIHNpbmdsZSBQeXRob24gc2NyaXB0
IGFuZCB0aHVzIHVsdHJhIHBvcnRhYmxlOiBubyBidWlsZCBvciBpbnN0YWxsYXRpb24gaXMgbmVl
ZGVkIGFuZCBpdCB3b3JrcyBjcm9zcyBwbGF0Zm9ybXMuCisgICogUHVtcCB0cmllcyB0byBiZSBz
bWFydCB3aXRoIHJlc3BlY3QgdG8gW0dvb2dsZSdzIHN0eWxlIGd1aWRlXShodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xlLXN0eWxlZ3VpZGUvKTogaXQgYnJlYWtzIGxvbmcgbGluZXMgKGVh
c3kgdG8gaGF2ZSB3aGVuIHRoZXkgYXJlIGdlbmVyYXRlZCkgYXQgYWNjZXB0YWJsZSBwbGFjZXMg
dG8gZml0IHdpdGhpbiA4MCBjb2x1bW5zIGFuZCBpbmRlbnQgdGhlIGNvbnRpbnVhdGlvbiBsaW5l
cyBjb3JyZWN0bHkuCisgICogVGhlIGZvcm1hdCBpcyBodW1hbi1yZWFkYWJsZSBhbmQgbW9yZSBj
b25jaXNlIHRoYW4gWE1MLgorICAqIFRoZSBmb3JtYXQgd29ya3MgcmVsYXRpdmVseSB3ZWxsIHdp
dGggRW1hY3MnIEMrKyBtb2RlLgorCisjIyBFeGFtcGxlcyAjIworCitUaGUgZm9sbG93aW5nIFB1
bXAgY29kZSAod2hlcmUgbWV0YSBrZXl3b3JkcyBzdGFydCB3aXRoIGAkYCwgYFtbYCBhbmQgYF1d
YCBhcmUgbWV0YSBicmFja2V0cywgYW5kIGAkJGAgc3RhcnRzIGEgbWV0YSBjb21tZW50IHRoYXQg
ZW5kcyB3aXRoIHRoZSBsaW5lKToKKworYGBgCiskdmFyIG4gPSAzICAgICAkJCBEZWZpbmVzIGEg
bWV0YSB2YXJpYWJsZSBuLgorJHJhbmdlIGkgMC4ubiAgJCQgRGVjbGFyZXMgdGhlIHJhbmdlIG9m
IG1ldGEgaXRlcmF0b3IgaSAoaW5jbHVzaXZlKS4KKyRmb3IgaSBbWworICAgICAgICAgICAgICAg
JCQgTWV0YSBsb29wLgorLy8gRm9vJGkgZG9lcyBibGFoIGZvciAkaS1hcnkgcHJlZGljYXRlcy4K
KyRyYW5nZSBqIDEuLmkKK3RlbXBsYXRlIDxzaXplX3QgTiAkZm9yIGogW1ssIHR5cGVuYW1lIEEk
al1dPgorY2xhc3MgRm9vJGkgeworJGlmIGkgPT0gMCBbWworICBibGFoIGE7CitdXSAkZWxpZiBp
IDw9IDIgW1sKKyAgYmxhaCBiOworXV0gJGVsc2UgW1sKKyAgYmxhaCBjOworXV0KK307CisKK11d
CitgYGAKKword2lsbCBiZSB0cmFuc2xhdGVkIGJ5IHRoZSBQdW1wIGNvbXBpbGVyIHRvOgorCitg
YGAKKy8vIEZvbzAgZG9lcyBibGFoIGZvciAwLWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNp
emVfdCBOPgorY2xhc3MgRm9vMCB7CisgIGJsYWggYTsKK307CisKKy8vIEZvbzEgZG9lcyBibGFo
IGZvciAxLWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBBMT4K
K2NsYXNzIEZvbzEgeworICBibGFoIGI7Cit9OworCisvLyBGb28yIGRvZXMgYmxhaCBmb3IgMi1h
cnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1l
IEEyPgorY2xhc3MgRm9vMiB7CisgIGJsYWggYjsKK307CisKKy8vIEZvbzMgZG9lcyBibGFoIGZv
ciAzLWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBBMSwgdHlw
ZW5hbWUgQTIsIHR5cGVuYW1lIEEzPgorY2xhc3MgRm9vMyB7CisgIGJsYWggYzsKK307CitgYGAK
KworSW4gYW5vdGhlciBleGFtcGxlLAorCitgYGAKKyRyYW5nZSBpIDEuLm4KK0Z1bmMoJGZvciBp
ICsgW1thJGldXSk7CiskJCBUaGUgdGV4dCBiZXR3ZWVuIGkgYW5kIFtbIGlzIHRoZSBzZXBhcmF0
b3IgYmV0d2VlbiBpdGVyYXRpb25zLgorYGBgCisKK3dpbGwgZ2VuZXJhdGUgb25lIG9mIHRoZSBm
b2xsb3dpbmcgbGluZXMgKHdpdGhvdXQgdGhlIGNvbW1lbnRzKSwgZGVwZW5kaW5nIG9uIHRoZSB2
YWx1ZSBvZiBgbmA6CisKK2BgYAorRnVuYygpOyAgICAgICAgICAgICAgLy8gSWYgbiBpcyAwLgor
RnVuYyhhMSk7ICAgICAgICAgICAgLy8gSWYgbiBpcyAxLgorRnVuYyhhMSArIGEyKTsgICAgICAg
Ly8gSWYgbiBpcyAyLgorRnVuYyhhMSArIGEyICsgYTMpOyAgLy8gSWYgbiBpcyAzLgorLy8gQW5k
IHNvIG9uLi4uCitgYGAKKworIyMgQ29uc3RydWN0cyAjIworCitXZSBzdXBwb3J0IHRoZSBmb2xs
b3dpbmcgbWV0YSBwcm9ncmFtbWluZyBjb25zdHJ1Y3RzOgorCit8IGAkdmFyIGlkID0gZXhwYCB8
IERlZmluZXMgYSBuYW1lZCBjb25zdGFudCB2YWx1ZS4gYCRpZGAgaXMgdmFsaWQgdXRpbCB0aGUg
ZW5kIG9mIHRoZSBjdXJyZW50IG1ldGEgbGV4aWNhbCBibG9jay4gfAorfDotLS0tLS0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYCRyYW5nZSBp
ZCBleHAuLmV4cGAgfCBTZXRzIHRoZSByYW5nZSBvZiBhbiBpdGVyYXRpb24gdmFyaWFibGUsIHdo
aWNoIGNhbiBiZSByZXVzZWQgaW4gbXVsdGlwbGUgbG9vcHMgbGF0ZXIuICAgICAgICAgIHwKK3wg
YCRmb3IgaWQgc2VwIFtbIGNvZGUgXV1gIHwgSXRlcmF0aW9uLiBUaGUgcmFuZ2Ugb2YgYGlkYCBt
dXN0IGhhdmUgYmVlbiBkZWZpbmVkIGVhcmxpZXIuIGAkaWRgIGlzIHZhbGlkIGluIGBjb2RlYC4g
ICAgICAgICB8Cit8IGAkKCQpYCAgICAgICAgICB8IEdlbmVyYXRlcyBhIHNpbmdsZSBgJGAgY2hh
cmFjdGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorfCBgJGlkYCAgICAgICAgICAgfCBWYWx1ZSBvZiB0aGUgbmFtZWQgY29u
c3RhbnQgb3IgaXRlcmF0aW9uIHZhcmlhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKK3wgYCQoZXhwKWAgICAgICAgIHwgVmFsdWUgb2YgdGhlIGV4cHJl
c3Npb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8Cit8IGAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2hg
IHwgQ29uZGl0aW9uYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBbWyBjb2RlIF1d
YCAgICB8IE1ldGEgbGV4aWNhbCBibG9jay4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgY3BwX2Nv
ZGVgICAgICAgfCBSYXcgQysrIGNvZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYCQk
IGNvbW1lbnRgICAgIHwgTWV0YSBjb21tZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisK
KyoqTm90ZToqKiBUbyBnaXZlIHRoZSB1c2VyIHNvbWUgZnJlZWRvbSBpbiBmb3JtYXR0aW5nIHRo
ZSBQdW1wIHNvdXJjZQorY29kZSwgUHVtcCBpZ25vcmVzIGEgbmV3LWxpbmUgY2hhcmFjdGVyIGlm
IGl0J3MgcmlnaHQgYWZ0ZXIgYCRmb3IgZm9vYAorb3IgbmV4dCB0byBgW1tgIG9yIGBdXWAuIFdp
dGhvdXQgdGhpcyBydWxlIHlvdSdsbCBvZnRlbiBiZSBmb3JjZWQgdG8gd3JpdGUKK3ZlcnkgbG9u
ZyBsaW5lcyB0byBnZXQgdGhlIGRlc2lyZWQgb3V0cHV0LiBUaGVyZWZvcmUgc29tZXRpbWVzIHlv
dSBtYXkKK25lZWQgdG8gaW5zZXJ0IGFuIGV4dHJhIG5ldy1saW5lIGluIHN1Y2ggcGxhY2VzIGZv
ciBhIG5ldy1saW5lIHRvIHNob3cKK3VwIGluIHlvdXIgb3V0cHV0LgorCisjIyBHcmFtbWFyICMj
CisKK2BgYAorY29kZSA6Oj0gYXRvbWljX2NvZGUqCithdG9taWNfY29kZSA6Oj0gJHZhciBpZCA9
IGV4cAorICAgIHwgJHZhciBpZCA9IFtbIGNvZGUgXV0KKyAgICB8ICRyYW5nZSBpZCBleHAuLmV4
cAorICAgIHwgJGZvciBpZCBzZXAgW1sgY29kZSBdXQorICAgIHwgJCgkKQorICAgIHwgJGlkCisg
ICAgfCAkKGV4cCkKKyAgICB8ICRpZiBleHAgW1sgY29kZSBdXSBlbHNlX2JyYW5jaAorICAgIHwg
W1sgY29kZSBdXQorICAgIHwgY3BwX2NvZGUKK3NlcCA6Oj0gY3BwX2NvZGUgfCBlbXB0eV9zdHJp
bmcKK2Vsc2VfYnJhbmNoIDo6PSAkZWxzZSBbWyBjb2RlIF1dCisgICAgfCAkZWxpZiBleHAgW1sg
Y29kZSBdXSBlbHNlX2JyYW5jaAorICAgIHwgZW1wdHlfc3RyaW5nCitleHAgOjo9IHNpbXBsZV9l
eHByZXNzaW9uX2luX1B5dGhvbl9zeW50YXgKK2BgYAorCisjIyBDb2RlICMjCisKK1lvdSBjYW4g
ZmluZCB0aGUgc291cmNlIGNvZGUgb2YgUHVtcCBpbiBbc2NyaXB0cy9wdW1wLnB5XSguLi9zY3Jp
cHRzL3B1bXAucHkpLiBJdCBpcyBzdGlsbAordmVyeSB1bnBvbGlzaGVkIGFuZCBsYWNrcyBhdXRv
bWF0ZWQgdGVzdHMsIGFsdGhvdWdoIGl0IGhhcyBiZWVuCitzdWNjZXNzZnVsbHkgdXNlZCBtYW55
IHRpbWVzLiBJZiB5b3UgZmluZCBhIGNoYW5jZSB0byB1c2UgaXQgaW4geW91cgorcHJvamVjdCwg
cGxlYXNlIGxldCB1cyBrbm93IHdoYXQgeW91IHRoaW5rISAgV2UgYWxzbyB3ZWxjb21lIGhlbHAg
b24KK2ltcHJvdmluZyBQdW1wLgorCisjIyBSZWFsIEV4YW1wbGVzICMjCisKK1lvdSBjYW4gZmlu
ZCByZWFsLXdvcmxkIGFwcGxpY2F0aW9ucyBvZiBQdW1wIGluIFtHb29nbGUgVGVzdF0oaHR0cDov
L3d3dy5nb29nbGUuY29tL2NvZGVzZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3BhY2thZ2UlM0Fo
dHRwJTNBJTJGJTJGZ29vZ2xldGVzdFwuZ29vZ2xlY29kZVwuY29tKSBhbmQgW0dvb2dsZSBNb2Nr
XShodHRwOi8vd3d3Lmdvb2dsZS5jb20vY29kZXNlYXJjaD9xPWZpbGUlM0FcLnB1bXAlMjQrcGFj
a2FnZSUzQWh0dHAlM0ElMkYlMkZnb29nbGVtb2NrXC5nb29nbGVjb2RlXC5jb20pLiAgVGhlIHNv
dXJjZSBmaWxlIGBmb28uaC5wdW1wYCBnZW5lcmF0ZXMgYGZvby5oYC4KKworIyMgVGlwcyAjIwor
CisgICogSWYgYSBtZXRhIHZhcmlhYmxlIGlzIGZvbGxvd2VkIGJ5IGEgbGV0dGVyIG9yIGRpZ2l0
LCB5b3UgY2FuIHNlcGFyYXRlIHRoZW0gdXNpbmcgYFtbXV1gLCB3aGljaCBpbnNlcnRzIGFuIGVt
cHR5IHN0cmluZy4gRm9yIGV4YW1wbGUgYEZvbyRqW1tdXUhlbHBlcmAgZ2VuZXJhdGUgYEZvbzFI
ZWxwZXJgIHdoZW4gYGpgIGlzIDEuCisgICogVG8gYXZvaWQgZXh0cmEtbG9uZyBQdW1wIHNvdXJj
ZSBsaW5lcywgeW91IGNhbiBicmVhayBhIGxpbmUgYW55d2hlcmUgeW91IHdhbnQgYnkgaW5zZXJ0
aW5nIGBbW11dYCBmb2xsb3dlZCBieSBhIG5ldyBsaW5lLiBTaW5jZSBhbnkgbmV3LWxpbmUgY2hh
cmFjdGVyIG5leHQgdG8gYFtbYCBvciBgXV1gIGlzIGlnbm9yZWQsIHRoZSBnZW5lcmF0ZWQgY29k
ZSB3b24ndCBjb250YWluIHRoaXMgbmV3IGxpbmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9kb2NzL1YxXzdfU2FtcGxlcy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2RvY3MvVjFfN19TYW1wbGVzLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyMWQyMDA1NjczNTQ1N2Y2ZjQ5YWVj
YzYxMjE5ZGFkMjI2MTJiZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9kb2NzL1YxXzdfU2FtcGxlcy5tZApAQCAtMCwwICsxLDE0IEBACitJZiB5b3UncmUgbGlr
ZSB1cywgeW91J2QgbGlrZSB0byBsb29rIGF0IHNvbWUgR29vZ2xlIFRlc3Qgc2FtcGxlIGNvZGUu
ICBUaGUKK1tzYW1wbGVzIGZvbGRlcl0oLi4vc2FtcGxlcykgaGFzIGEgbnVtYmVyIG9mIHdlbGwt
Y29tbWVudGVkIHNhbXBsZXMgc2hvd2luZyBob3cgdG8gdXNlIGEKK3ZhcmlldHkgb2YgR29vZ2xl
IFRlc3QgZmVhdHVyZXMuCisKKyAgKiBbU2FtcGxlICMxXSguLi9zYW1wbGVzL3NhbXBsZTFfdW5p
dHRlc3QuY2MpIHNob3dzIHRoZSBiYXNpYyBzdGVwcyBvZiB1c2luZyBHb29nbGUgVGVzdCB0byB0
ZXN0IEMrKyBmdW5jdGlvbnMuCisgICogW1NhbXBsZSAjMl0oLi4vc2FtcGxlcy9zYW1wbGUyX3Vu
aXR0ZXN0LmNjKSBzaG93cyBhIG1vcmUgY29tcGxleCB1bml0IHRlc3QgZm9yIGEgY2xhc3Mgd2l0
aCBtdWx0aXBsZSBtZW1iZXIgZnVuY3Rpb25zLgorICAqIFtTYW1wbGUgIzNdKC4uL3NhbXBsZXMv
c2FtcGxlM191bml0dGVzdC5jYykgdXNlcyBhIHRlc3QgZml4dHVyZS4KKyAgKiBbU2FtcGxlICM0
XSguLi9zYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QuY2MpIGlzIGFub3RoZXIgYmFzaWMgZXhhbXBs
ZSBvZiB1c2luZyBHb29nbGUgVGVzdC4KKyAgKiBbU2FtcGxlICM1XSguLi9zYW1wbGVzL3NhbXBs
ZTVfdW5pdHRlc3QuY2MpIHRlYWNoZXMgaG93IHRvIHJldXNlIGEgdGVzdCBmaXh0dXJlIGluIG11
bHRpcGxlIHRlc3QgY2FzZXMgYnkgZGVyaXZpbmcgc3ViLWZpeHR1cmVzIGZyb20gaXQuCisgICog
W1NhbXBsZSAjNl0oLi4vc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjKSBkZW1vbnN0cmF0ZXMg
dHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorICAqIFtTYW1wbGUgIzddKC4uL3NhbXBsZXMvc2Ft
cGxlN191bml0dGVzdC5jYykgdGVhY2hlcyB0aGUgYmFzaWNzIG9mIHZhbHVlLXBhcmFtZXRlcml6
ZWQgdGVzdHMuCisgICogW1NhbXBsZSAjOF0oLi4vc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNj
KSBzaG93cyB1c2luZyBgQ29tYmluZSgpYCBpbiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgor
ICAqIFtTYW1wbGUgIzldKC4uL3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYykgc2hvd3MgdXNl
IG9mIHRoZSBsaXN0ZW5lciBBUEkgdG8gbW9kaWZ5IEdvb2dsZSBUZXN0J3MgY29uc29sZSBvdXRw
dXQgYW5kIHRoZSB1c2Ugb2YgaXRzIHJlZmxlY3Rpb24gQVBJIHRvIGluc3BlY3QgdGVzdCByZXN1
bHRzLgorICAqIFtTYW1wbGUgIzEwXSguLi9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjKSBz
aG93cyB1c2Ugb2YgdGhlIGxpc3RlbmVyIEFQSSB0byBpbXBsZW1lbnQgYSBwcmltaXRpdmUgbWVt
b3J5IGxlYWsgY2hlY2tlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2Rv
Y3MvVjFfN19YY29kZUd1aWRlLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9WMV83
X1hjb2RlR3VpZGUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmYyNGJmNTFiZmM0NTQxMmY2NThiZGRkNTNhMzMy
ZTE0OWQ3NzMwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2Rv
Y3MvVjFfN19YY29kZUd1aWRlLm1kCkBAIC0wLDAgKzEsOTMgQEAKKworCitUaGlzIGd1aWRlIHdp
bGwgZXhwbGFpbiBob3cgdG8gdXNlIHRoZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaW4geW91
ciBYY29kZSBwcm9qZWN0cyBvbiBNYWMgT1MgWC4gVGhpcyB0dXRvcmlhbCBiZWdpbnMgYnkgcXVp
Y2tseSBleHBsYWluaW5nIHdoYXQgdG8gZG8gZm9yIGV4cGVyaWVuY2VkIHVzZXJzLiBBZnRlciB0
aGUgcXVpY2sgc3RhcnQsIHRoZSBndWlkZSBnb2VzIHByb3ZpZGVzIGFkZGl0aW9uYWwgZXhwbGFu
YXRpb24gYWJvdXQgZWFjaCBzdGVwLgorCisjIFF1aWNrIFN0YXJ0ICMKKworSGVyZSBpcyB0aGUg
cXVpY2sgZ3VpZGUgZm9yIHVzaW5nIEdvb2dsZSBUZXN0IGluIHlvdXIgWGNvZGUgcHJvamVjdC4K
KworICAxLiBEb3dubG9hZCB0aGUgc291cmNlIGZyb20gdGhlIFt3ZWJzaXRlXShodHRwOi8vY29k
ZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdCkgdXNpbmcgdGhpcyBjb21tYW5kOiBgc3ZuIGNoZWNr
b3V0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay8gZ29vZ2xldGVz
dC1yZWFkLW9ubHlgCisgIDEuIE9wZW4gdXAgdGhlIGBndGVzdC54Y29kZXByb2pgIGluIHRoZSBg
Z29vZ2xldGVzdC1yZWFkLW9ubHkveGNvZGUvYCBkaXJlY3RvcnkgYW5kIGJ1aWxkIHRoZSBndGVz
dC5mcmFtZXdvcmsuCisgIDEuIENyZWF0ZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0IGluIHlv
dXIgWGNvZGUgcHJvamVjdCBjYWxsZWQgc29tZXRoaW5nIGxpa2UgIlVuaXRUZXN0cyIKKyAgMS4g
QWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8geW91ciBwcm9qZWN0IGFuZCBhZGQgaXQgdG8gdGhl
ICJMaW5rIEJpbmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgIlVuaXRUZXN0cyIK
KyAgMS4gQWRkIHlvdXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRvIHRoZSAiQ29tcGlsZSBTb3Vy
Y2VzIiBidWlsZCBwaGFzZSBvZiAiVW5pdFRlc3RzIgorICAxLiBFZGl0IHRoZSAiVW5pdFRlc3Rz
IiBleGVjdXRhYmxlIGFuZCBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZWQgIkRZTERc
X0ZSQU1FV09SS1xfUEFUSCIgd2l0aCBhIHZhbHVlIGVxdWFsIHRvIHRoZSBwYXRoIHRvIHRoZSBm
cmFtZXdvcmsgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHJlbGF0aXZlIHRvIHRoZSBj
b21waWxlZCBleGVjdXRhYmxlLgorICAxLiBCdWlsZCBhbmQgR28KKworVGhlIGZvbGxvd2luZyBz
ZWN0aW9ucyBmdXJ0aGVyIGV4cGxhaW4gZWFjaCBvZiB0aGUgc3RlcHMgbGlzdGVkIGFib3ZlIGlu
IGRlcHRoLCBkZXNjcmliaW5nIGluIG1vcmUgZGV0YWlsIGhvdyB0byBjb21wbGV0ZSBpdCBpbmNs
dWRpbmcgc29tZSB2YXJpYXRpb25zLgorCisjIEdldCB0aGUgU291cmNlICMKKworQ3VycmVudGx5
LCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIGRpc2N1c3NlZCBoZXJlIGlzbid0IGF2YWlsYWJsZSBpbiBh
IHRhZ2dlZCByZWxlYXNlIG9mIEdvb2dsZSBUZXN0LCBpdCBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0
aGUgdHJ1bmsuIEFzIGV4cGxhaW5lZCBhdCB0aGUgR29vZ2xlIFRlc3QgW3NpdGVdKGh0dHA6Ly9j
b2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L3NvdXJjZS9jaGVja291dCI+c3ZuKSwgeW91IGNh
biBnZXQgdGhlIGNvZGUgZnJvbSBhbm9ueW1vdXMgU1ZOIHdpdGggdGhpcyBjb21tYW5kOgorCitg
YGAKK3N2biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1
bmsvIGdvb2dsZXRlc3QtcmVhZC1vbmx5CitgYGAKKworQWx0ZXJuYXRpdmVseSwgaWYgeW91IGFy
ZSB3b3JraW5nIHdpdGggU3VidmVyc2lvbiBpbiB5b3VyIG93biBjb2RlIGJhc2UsIHlvdSBjYW4g
YWRkIEdvb2dsZSBUZXN0IGFzIGFuIGV4dGVybmFsIGRlcGVuZGVuY3kgdG8geW91ciBvd24gU3Vi
dmVyc2lvbiByZXBvc2l0b3J5LiBCeSBmb2xsb3dpbmcgdGhpcyBhcHByb2FjaCwgZXZlcnlvbmUg
dGhhdCBjaGVja3Mgb3V0IHlvdXIgc3ZuIHJlcG9zaXRvcnkgd2lsbCBhbHNvIHJlY2VpdmUgYSBj
b3B5IG9mIEdvb2dsZSBUZXN0IChhIHNwZWNpZmljIHZlcnNpb24sIGlmIHlvdSB3aXNoKSB3aXRo
b3V0IGhhdmluZyB0byBjaGVjayBpdCBvdXQgZXhwbGljaXRseS4gVGhpcyBtYWtlcyB0aGUgc2V0
IHVwIG9mIHlvdXIgcHJvamVjdCBzaW1wbGVyIGFuZCByZWR1Y2VzIHRoZSBjb3BpZWQgY29kZSBp
biB0aGUgcmVwb3NpdG9yeS4KKworVG8gdXNlIGBzdm46ZXh0ZXJuYWxzYCwgZGVjaWRlIHdoZXJl
IHlvdSB3b3VsZCBsaWtlIHRvIGhhdmUgdGhlIGV4dGVybmFsIHNvdXJjZSByZXNpZGUuIFlvdSBt
aWdodCBjaG9vc2UgdG8gcHV0IHRoZSBleHRlcm5hbCBzb3VyY2UgaW5zaWRlIHRoZSB0cnVuaywg
YmVjYXVzZSB5b3Ugd2FudCBpdCB0byBiZSBwYXJ0IG9mIHRoZSBicmFuY2ggd2hlbiB5b3UgbWFr
ZSBhIHJlbGVhc2UuIEhvd2V2ZXIsIGtlZXBpbmcgaXQgb3V0c2lkZSB0aGUgdHJ1bmsgaW4gYSB2
ZXJzaW9uLXRhZ2dlZCBkaXJlY3RvcnkgY2FsbGVkIHNvbWV0aGluZyBsaWtlIGB0aGlyZC1wYXJ0
eS9nb29nbGV0ZXN0LzEuMC4xYCwgaXMgYW5vdGhlciBvcHRpb24uIE9uY2UgdGhlIGxvY2F0aW9u
IGlzIGVzdGFibGlzaGVkLCB1c2UgYHN2biBwcm9wZWRpdCBzdm46ZXh0ZXJuYWxzIF9kaXJlY3Rv
cnlfYCB0byBzZXQgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgb24gYSBkaXJlY3RvcnkgaW4g
eW91ciByZXBvc2l0b3J5LiBUaGlzIGRpcmVjdG9yeSB3b24ndCBjb250YWluIHRoZSBjb2RlLCBi
dXQgYmUgaXRzIHZlcnNpb25lZCBwYXJlbnQgZGlyZWN0b3J5LgorCitUaGUgY29tbWFuZCBgc3Zu
IHByb3BlZGl0YCB3aWxsIGJyaW5nIHVwIHlvdXIgU3VidmVyc2lvbiBlZGl0b3IsIG1ha2luZyBl
ZGl0aW5nIHRoZSBsb25nLCAocG90ZW50aWFsbHkgbXVsdGktbGluZSkgcHJvcGVydHkgc2ltcGxl
ci4gVGhpcyBzYW1lIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjaGVjayBvdXQgYSB0YWdnZWQgYnJh
bmNoLCBieSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgVVJMIChlLmcuIGBodHRwOi8vZ29vZ2xldGVz
dC5nb29nbGVjb2RlLmNvbS9zdm4vdGFncy9yZWxlYXNlLTEuMC4xYCkuIEFkZGl0aW9uYWxseSwg
dGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgYWxsb3dzIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEg
cGFydGljdWxhciByZXZpc2lvbiBvZiB0aGUgdHJ1bmsgd2l0aCB0aGUgYC1yXyMjX2Agb3B0aW9u
IChlLmcuIGBleHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QgLXI2MCBodHRwOi8vZ29vZ2xldGVzdC5n
b29nbGVjb2RlLmNvbS9zdm4vdHJ1bmtgKS4KKworSGVyZSBpcyBhbiBleGFtcGxlIG9mIHVzaW5n
IHRoZSBzdm46ZXh0ZXJuYWxzIHByb3BlcnRpZXMgb24gYSB0cnVuayAocmVhZCB2aWEgYHN2biBw
cm9wZ2V0YCkgb2YgYSBwcm9qZWN0LiBUaGlzIHZhbHVlIGNoZWNrcyBvdXQgYSBjb3B5IG9mIEdv
b2dsZSBUZXN0IGludG8gdGhlIGB0cnVuay9leHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QvYCBkaXJl
Y3RvcnkuCisKK2BgYAorW0NvbXB1dGVyOnN2bl0gdXNlciQgc3ZuIHByb3BnZXQgc3ZuOmV4dGVy
bmFscyB0cnVuaworZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdv
b2dsZWNvZGUuY29tL3N2bi90cnVuaworYGBgCisKKyMgQWRkIHRoZSBGcmFtZXdvcmsgdG8gWW91
ciBQcm9qZWN0ICMKKworVGhlIG5leHQgc3RlcCBpcyB0byBidWlsZCBhbmQgYWRkIHRoZSBndGVz
dC5mcmFtZXdvcmsgdG8geW91ciBvd24gcHJvamVjdC4gVGhpcyBndWlkZSBkZXNjcmliZXMgdHdv
IGNvbW1vbiB3YXlzIGJlbG93LgorCisgICogKipPcHRpb24gMSoqIC0tLSBUaGUgc2ltcGxlc3Qg
d2F5IHRvIGFkZCBHb29nbGUgVGVzdCB0byB5b3VyIG93biBwcm9qZWN0LCBpcyB0byBvcGVuIGd0
ZXN0Lnhjb2RlcHJvaiAoZm91bmQgaW4gdGhlIHhjb2RlLyBkaXJlY3Rvcnkgb2YgdGhlIEdvb2ds
ZSBUZXN0IHRydW5rKSBhbmQgYnVpbGQgdGhlIGZyYW1ld29yayBtYW51YWxseS4gVGhlbiwgYWRk
IHRoZSBidWlsdCBmcmFtZXdvcmsgaW50byB5b3VyIHByb2plY3QgdXNpbmcgdGhlICJBZGQtPkV4
aXN0aW5nIEZyYW1ld29yay4uLiIgZnJvbSB0aGUgY29udGV4dCBtZW51IG9yICJQcm9qZWN0LT5B
ZGQuLi4iIGZyb20gdGhlIG1haW4gbWVudS4gVGhlIGd0ZXN0LmZyYW1ld29yayBpcyByZWxvY2F0
YWJsZSBhbmQgY29udGFpbnMgdGhlIGhlYWRlcnMgYW5kIG9iamVjdCBjb2RlIHRoYXQgeW91J2xs
IG5lZWQgdG8gbWFrZSB0ZXN0cy4gVGhpcyBtZXRob2QgcmVxdWlyZXMgcmVidWlsZGluZyBldmVy
eSB0aW1lIHlvdSB1cGdyYWRlIEdvb2dsZSBUZXN0IGluIHlvdXIgcHJvamVjdC4KKyAgKiAqKk9w
dGlvbiAyKiogLS0tIElmIHlvdSBhcmUgZ29pbmcgdG8gYmUgbGl2aW5nIG9mZiB0aGUgdHJ1bmsg
b2YgR29vZ2xlIFRlc3QsIGluY29ycG9yYXRpbmcgaXRzIGxhdGVzdCBmZWF0dXJlcyBpbnRvIHlv
dXIgdW5pdCB0ZXN0cyAob3IgYXJlIGEgR29vZ2xlIFRlc3QgZGV2ZWxvcGVyIHlvdXJzZWxmKS4g
WW91J2xsIHdhbnQgdG8gcmVidWlsZCB0aGUgZnJhbWV3b3JrIGV2ZXJ5IHRpbWUgdGhlIHNvdXJj
ZSB1cGRhdGVzLiB0byBkbyB0aGlzLCB5b3UnbGwgbmVlZCB0byBhZGQgdGhlIGd0ZXN0Lnhjb2Rl
cHJvaiBmaWxlLCBub3QgdGhlIGZyYW1ld29yayBpdHNlbGYsIHRvIHlvdXIgb3duIFhjb2RlIHBy
b2plY3QuIFRoZW4sIGZyb20gdGhlIGJ1aWxkIHByb2R1Y3RzIHRoYXQgYXJlIHJldmVhbGVkIGJ5
IHRoZSBwcm9qZWN0J3MgZGlzY2xvc3VyZSB0cmlhbmdsZSwgeW91IGNhbiBmaW5kIHRoZSBndGVz
dC5mcmFtZXdvcmssIHdoaWNoIGNhbiBiZSBhZGRlZCB0byB5b3VyIHRhcmdldHMgKGRpc2N1c3Nl
ZCBiZWxvdykuCisKKyMgTWFrZSBhIFRlc3QgVGFyZ2V0ICMKKworVG8gc3RhcnQgd3JpdGluZyB0
ZXN0cywgbWFrZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0LiBUaGlzIHRhcmdldCB0ZW1wbGF0
ZSBpcyBhdmFpbGFibGUgdW5kZXIgQlNELCBDb2NvYSwgb3IgQ2FyYm9uLiBBZGQgeW91ciB1bml0
IHRlc3Qgc291cmNlIGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJjZXMiIGJ1aWxkIHBoYXNlIG9m
IHRoZSB0YXJnZXQuCisKK05leHQsIHlvdSdsbCB3YW50IHRvIGFkZCBndGVzdC5mcmFtZXdvcmsg
aW4gdHdvIGRpZmZlcmVudCB3YXlzLCBkZXBlbmRpbmcgdXBvbiB3aGljaCBvcHRpb24geW91IGNo
b3NlIGFib3ZlLgorCisgICogKipPcHRpb24gMSoqIC0tLSBEdXJpbmcgY29tcGlsYXRpb24sIFhj
b2RlIHdpbGwgbmVlZCB0byBrbm93IHRoYXQgeW91IGFyZSBsaW5raW5nIGFnYWluc3QgdGhlIGd0
ZXN0LmZyYW1ld29yay4gQWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8gdGhlICJMaW5rIEJpbmFy
eSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gVGhpcyB3
aWxsIGluY2x1ZGUgdGhlIEdvb2dsZSBUZXN0IGhlYWRlcnMgaW4geW91ciBoZWFkZXIgc2VhcmNo
IHBhdGgsIGFuZCB3aWxsIHRlbGwgdGhlIGxpbmtlciB3aGVyZSB0byBmaW5kIHRoZSBsaWJyYXJ5
LgorICAqICoqT3B0aW9uIDIqKiAtLS0gSWYgeW91ciB3b3JraW5nIG91dCBvZiB0aGUgdHJ1bmss
IHlvdSdsbCBhbHNvIHdhbnQgdG8gYWRkIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyICJMaW5rIEJp
bmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gSW4g
YWRkaXRpb24sIHlvdSdsbCAgd2FudCB0byBhZGQgdGhlIGd0ZXN0LmZyYW1ld29yayBhcyBhIGRl
cGVuZGVuY3kgdG8geW91ciB1bml0IHRlc3QgdGFyZ2V0LiBUaGlzIHdheSwgWGNvZGUgd2lsbCBt
YWtlIHN1cmUgdGhhdCBndGVzdC5mcmFtZXdvcmsgaXMgdXAgdG8gZGF0ZSwgZXZlcnkgdGltZSB5
b3VyIGJ1aWxkIHlvdXIgdGFyZ2V0LiBGaW5hbGx5LCBpZiB5b3UgZG9uJ3Qgc2hhcmUgYnVpbGQg
ZGlyZWN0b3JpZXMgd2l0aCBHb29nbGUgVGVzdCwgeW91J2xsIGhhdmUgdG8gY29weSB0aGUgZ3Rl
c3QuZnJhbWV3b3JrIGludG8geW91ciBvd24gYnVpbGQgcHJvZHVjdHMgZGlyZWN0b3J5IHVzaW5n
IGEgIlJ1biBTY3JpcHQiIGJ1aWxkIHBoYXNlLgorCisjIFNldCBVcCB0aGUgRXhlY3V0YWJsZSBS
dW4gRW52aXJvbm1lbnQgIworCitTaW5jZSB0aGUgdW5pdCB0ZXN0IGV4ZWN1dGFibGUgaXMgYSBz
aGVsbCB0b29sLCBpdCBkb2Vzbid0IGhhdmUgYSBidW5kbGUgd2l0aCBhIGBDb250ZW50cy9GcmFt
ZXdvcmtzYCBkaXJlY3RvcnksIGluIHdoaWNoIHRvIHBsYWNlIGd0ZXN0LmZyYW1ld29yay4gSW5z
dGVhZCwgdGhlIGR5bmFtaWMgbGlua2VyIG11c3QgYmUgdG9sZCBhdCBydW50aW1lIHRvIHNlYXJj
aCBmb3IgdGhlIGZyYW1ld29yayBpbiBhbm90aGVyIGxvY2F0aW9uLiBUaGlzIGNhbiBiZSBhY2Nv
bXBsaXNoZWQgYnkgc2V0dGluZyB0aGUgIkRZTERcX0ZSQU1FV09SS1xfUEFUSCIgZW52aXJvbm1l
bnQgdmFyaWFibGUgaW4gdGhlICJFZGl0IEFjdGl2ZSBFeGVjdXRhYmxlIC4uLiIgQXJndW1lbnRz
IHRhYiwgdW5kZXIgIlZhcmlhYmxlcyB0byBiZSBzZXQgaW4gdGhlIGVudmlyb25tZW50OiIuIFRo
ZSBwYXRoIGZvciB0aGlzIHZhbHVlIGlzIHRoZSBwYXRoIChyZWxhdGl2ZSBvciBhYnNvbHV0ZSkg
b2YgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsuCisKK0lmIHlv
dSBoYXZlbid0IHNldCB1cCB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRILCBjb3JyZWN0bHksIHlv
dSBtaWdodCBnZXQgYSBtZXNzYWdlIGxpa2UgdGhpczoKKworYGBgCitbU2Vzc2lvbiBzdGFydGVk
IGF0IDIwMDgtMDgtMTUgMDY6MjM6NTcgLTA2MDAuXQorICBkeWxkOiBMaWJyYXJ5IG5vdCBsb2Fk
ZWQ6IEBsb2FkZXJfcGF0aC8uLi9GcmFtZXdvcmtzL2d0ZXN0LmZyYW1ld29yay9WZXJzaW9ucy9B
L2d0ZXN0CisgICAgUmVmZXJlbmNlZCBmcm9tOiAvVXNlcnMvdXNlcm5hbWUvRG9jdW1lbnRzL1Nh
bmRib3gvZ3Rlc3RTYW1wbGUvYnVpbGQvRGVidWcvV2lkZ2V0RnJhbWV3b3JrVGVzdAorICAgIFJl
YXNvbjogaW1hZ2Ugbm90IGZvdW5kCitgYGAKKworVG8gY29ycmVjdCB0aGlzIHByb2JsZW0sIGdv
dCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGV4ZWN1dGFibGUgbmFtZWQgaW4gIlJl
ZmVyZW5jZWQgZnJvbToiIHZhbHVlIGluIHRoZSBlcnJvciBtZXNzYWdlIGFib3ZlLiBUaGVuLCB3
aXRoIHRoZSB0ZXJtaW5hbCBpbiB0aGlzIGxvY2F0aW9uLCBmaW5kIHRoZSByZWxhdGl2ZSBwYXRo
IHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrLiBUaGF0IGlz
IHRoZSB2YWx1ZSB5b3UnbGwgbmVlZCB0byBzZXQgYXMgdGhlIERZTERcX0ZSQU1FV09SS1xfUEFU
SC4KKworIyBCdWlsZCBhbmQgR28gIworCitOb3csIHdoZW4geW91IGNsaWNrICJCdWlsZCBhbmQg
R28iLCB0aGUgdGVzdCB3aWxsIGJlIGV4ZWN1dGVkLiBEdW1waW5nIG91dCBzb21ldGhpbmcgbGlr
ZSB0aGlzOgorCitgYGAKK1tTZXNzaW9uIHN0YXJ0ZWQgYXQgMjAwOC0wOC0wNiAwNjozNjoxMyAt
MDYwMC5dCitbPT09PT09PT09PV0gUnVubmluZyAyIHRlc3RzIGZyb20gMSB0ZXN0IGNhc2UuCitb
LS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgorWy0tLS0tLS0tLS1d
IDIgdGVzdHMgZnJvbSBXaWRnZXRJbml0aWFsaXplclRlc3QKK1sgUlVOICAgICAgXSBXaWRnZXRJ
bml0aWFsaXplclRlc3QuVGVzdENvbnN0cnVjdG9yCitbICAgICAgIE9LIF0gV2lkZ2V0SW5pdGlh
bGl6ZXJUZXN0LlRlc3RDb25zdHJ1Y3RvcgorWyBSVU4gICAgICBdIFdpZGdldEluaXRpYWxpemVy
VGVzdC5UZXN0Q29udmVyc2lvbgorWyAgICAgICBPSyBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5U
ZXN0Q29udmVyc2lvbgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXIt
ZG93bgorWz09PT09PT09PT1dIDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZSByYW4uCitbICBQQVNT
RUQgIF0gMiB0ZXN0cy4KKworVGhlIERlYnVnZ2VyIGhhcyBleGl0ZWQgd2l0aCBzdGF0dXMgMC4g
IAorYGBgCisKKyMgU3VtbWFyeSAjCisKK1VuaXQgdGVzdGluZyBpcyBhIHZhbHVhYmxlIHdheSB0
byBlbnN1cmUgeW91ciBkYXRhIG1vZGVsIHN0YXlzIHZhbGlkIGV2ZW4gZHVyaW5nIHJhcGlkIGRl
dmVsb3BtZW50IG9yIHJlZmFjdG9yaW5nLiBUaGUgR29vZ2xlIFRlc3RpbmcgRnJhbWV3b3JrIGlz
IGEgZ3JlYXQgdW5pdCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBhbmQgQysrIHdoaWNoIGludGVn
cmF0ZXMgd2VsbCB3aXRoIGFuIFhjb2RlIGRldmVsb3BtZW50IGVudmlyb25tZW50LgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2RvY3MvWGNvZGVHdWlkZS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvWGNvZGVH
dWlkZS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iZjI0YmY1MWJmYzQ1NDEyZjY1OGJkZGQ1M2EzMzJlMTQ5ZDc3
MzA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9YY29k
ZUd1aWRlLm1kCkBAIC0wLDAgKzEsOTMgQEAKKworCitUaGlzIGd1aWRlIHdpbGwgZXhwbGFpbiBo
b3cgdG8gdXNlIHRoZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaW4geW91ciBYY29kZSBwcm9q
ZWN0cyBvbiBNYWMgT1MgWC4gVGhpcyB0dXRvcmlhbCBiZWdpbnMgYnkgcXVpY2tseSBleHBsYWlu
aW5nIHdoYXQgdG8gZG8gZm9yIGV4cGVyaWVuY2VkIHVzZXJzLiBBZnRlciB0aGUgcXVpY2sgc3Rh
cnQsIHRoZSBndWlkZSBnb2VzIHByb3ZpZGVzIGFkZGl0aW9uYWwgZXhwbGFuYXRpb24gYWJvdXQg
ZWFjaCBzdGVwLgorCisjIFF1aWNrIFN0YXJ0ICMKKworSGVyZSBpcyB0aGUgcXVpY2sgZ3VpZGUg
Zm9yIHVzaW5nIEdvb2dsZSBUZXN0IGluIHlvdXIgWGNvZGUgcHJvamVjdC4KKworICAxLiBEb3du
bG9hZCB0aGUgc291cmNlIGZyb20gdGhlIFt3ZWJzaXRlXShodHRwOi8vY29kZS5nb29nbGUuY29t
L3AvZ29vZ2xldGVzdCkgdXNpbmcgdGhpcyBjb21tYW5kOiBgc3ZuIGNoZWNrb3V0IGh0dHA6Ly9n
b29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay8gZ29vZ2xldGVzdC1yZWFkLW9ubHlg
CisgIDEuIE9wZW4gdXAgdGhlIGBndGVzdC54Y29kZXByb2pgIGluIHRoZSBgZ29vZ2xldGVzdC1y
ZWFkLW9ubHkveGNvZGUvYCBkaXJlY3RvcnkgYW5kIGJ1aWxkIHRoZSBndGVzdC5mcmFtZXdvcmsu
CisgIDEuIENyZWF0ZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0IGluIHlvdXIgWGNvZGUgcHJv
amVjdCBjYWxsZWQgc29tZXRoaW5nIGxpa2UgIlVuaXRUZXN0cyIKKyAgMS4gQWRkIHRoZSBndGVz
dC5mcmFtZXdvcmsgdG8geW91ciBwcm9qZWN0IGFuZCBhZGQgaXQgdG8gdGhlICJMaW5rIEJpbmFy
eSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgIlVuaXRUZXN0cyIKKyAgMS4gQWRkIHlv
dXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRvIHRoZSAiQ29tcGlsZSBTb3VyY2VzIiBidWlsZCBw
aGFzZSBvZiAiVW5pdFRlc3RzIgorICAxLiBFZGl0IHRoZSAiVW5pdFRlc3RzIiBleGVjdXRhYmxl
IGFuZCBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZWQgIkRZTERcX0ZSQU1FV09SS1xf
UEFUSCIgd2l0aCBhIHZhbHVlIGVxdWFsIHRvIHRoZSBwYXRoIHRvIHRoZSBmcmFtZXdvcmsgY29u
dGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHJlbGF0aXZlIHRvIHRoZSBjb21waWxlZCBleGVj
dXRhYmxlLgorICAxLiBCdWlsZCBhbmQgR28KKworVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBmdXJ0
aGVyIGV4cGxhaW4gZWFjaCBvZiB0aGUgc3RlcHMgbGlzdGVkIGFib3ZlIGluIGRlcHRoLCBkZXNj
cmliaW5nIGluIG1vcmUgZGV0YWlsIGhvdyB0byBjb21wbGV0ZSBpdCBpbmNsdWRpbmcgc29tZSB2
YXJpYXRpb25zLgorCisjIEdldCB0aGUgU291cmNlICMKKworQ3VycmVudGx5LCB0aGUgZ3Rlc3Qu
ZnJhbWV3b3JrIGRpc2N1c3NlZCBoZXJlIGlzbid0IGF2YWlsYWJsZSBpbiBhIHRhZ2dlZCByZWxl
YXNlIG9mIEdvb2dsZSBUZXN0LCBpdCBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgdHJ1bmsuIEFz
IGV4cGxhaW5lZCBhdCB0aGUgR29vZ2xlIFRlc3QgW3NpdGVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9nb29nbGV0ZXN0L3NvdXJjZS9jaGVja291dCI+c3ZuKSwgeW91IGNhbiBnZXQgdGhlIGNv
ZGUgZnJvbSBhbm9ueW1vdXMgU1ZOIHdpdGggdGhpcyBjb21tYW5kOgorCitgYGAKK3N2biBjaGVj
a291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvIGdvb2dsZXRl
c3QtcmVhZC1vbmx5CitgYGAKKworQWx0ZXJuYXRpdmVseSwgaWYgeW91IGFyZSB3b3JraW5nIHdp
dGggU3VidmVyc2lvbiBpbiB5b3VyIG93biBjb2RlIGJhc2UsIHlvdSBjYW4gYWRkIEdvb2dsZSBU
ZXN0IGFzIGFuIGV4dGVybmFsIGRlcGVuZGVuY3kgdG8geW91ciBvd24gU3VidmVyc2lvbiByZXBv
c2l0b3J5LiBCeSBmb2xsb3dpbmcgdGhpcyBhcHByb2FjaCwgZXZlcnlvbmUgdGhhdCBjaGVja3Mg
b3V0IHlvdXIgc3ZuIHJlcG9zaXRvcnkgd2lsbCBhbHNvIHJlY2VpdmUgYSBjb3B5IG9mIEdvb2ds
ZSBUZXN0IChhIHNwZWNpZmljIHZlcnNpb24sIGlmIHlvdSB3aXNoKSB3aXRob3V0IGhhdmluZyB0
byBjaGVjayBpdCBvdXQgZXhwbGljaXRseS4gVGhpcyBtYWtlcyB0aGUgc2V0IHVwIG9mIHlvdXIg
cHJvamVjdCBzaW1wbGVyIGFuZCByZWR1Y2VzIHRoZSBjb3BpZWQgY29kZSBpbiB0aGUgcmVwb3Np
dG9yeS4KKworVG8gdXNlIGBzdm46ZXh0ZXJuYWxzYCwgZGVjaWRlIHdoZXJlIHlvdSB3b3VsZCBs
aWtlIHRvIGhhdmUgdGhlIGV4dGVybmFsIHNvdXJjZSByZXNpZGUuIFlvdSBtaWdodCBjaG9vc2Ug
dG8gcHV0IHRoZSBleHRlcm5hbCBzb3VyY2UgaW5zaWRlIHRoZSB0cnVuaywgYmVjYXVzZSB5b3Ug
d2FudCBpdCB0byBiZSBwYXJ0IG9mIHRoZSBicmFuY2ggd2hlbiB5b3UgbWFrZSBhIHJlbGVhc2Uu
IEhvd2V2ZXIsIGtlZXBpbmcgaXQgb3V0c2lkZSB0aGUgdHJ1bmsgaW4gYSB2ZXJzaW9uLXRhZ2dl
ZCBkaXJlY3RvcnkgY2FsbGVkIHNvbWV0aGluZyBsaWtlIGB0aGlyZC1wYXJ0eS9nb29nbGV0ZXN0
LzEuMC4xYCwgaXMgYW5vdGhlciBvcHRpb24uIE9uY2UgdGhlIGxvY2F0aW9uIGlzIGVzdGFibGlz
aGVkLCB1c2UgYHN2biBwcm9wZWRpdCBzdm46ZXh0ZXJuYWxzIF9kaXJlY3RvcnlfYCB0byBzZXQg
dGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgb24gYSBkaXJlY3RvcnkgaW4geW91ciByZXBvc2l0
b3J5LiBUaGlzIGRpcmVjdG9yeSB3b24ndCBjb250YWluIHRoZSBjb2RlLCBidXQgYmUgaXRzIHZl
cnNpb25lZCBwYXJlbnQgZGlyZWN0b3J5LgorCitUaGUgY29tbWFuZCBgc3ZuIHByb3BlZGl0YCB3
aWxsIGJyaW5nIHVwIHlvdXIgU3VidmVyc2lvbiBlZGl0b3IsIG1ha2luZyBlZGl0aW5nIHRoZSBs
b25nLCAocG90ZW50aWFsbHkgbXVsdGktbGluZSkgcHJvcGVydHkgc2ltcGxlci4gVGhpcyBzYW1l
IG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjaGVjayBvdXQgYSB0YWdnZWQgYnJhbmNoLCBieSB1c2lu
ZyB0aGUgYXBwcm9wcmlhdGUgVVJMIChlLmcuIGBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2Rl
LmNvbS9zdm4vdGFncy9yZWxlYXNlLTEuMC4xYCkuIEFkZGl0aW9uYWxseSwgdGhlIHN2bjpleHRl
cm5hbHMgcHJvcGVydHkgYWxsb3dzIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgcGFydGljdWxhciBy
ZXZpc2lvbiBvZiB0aGUgdHJ1bmsgd2l0aCB0aGUgYC1yXyMjX2Agb3B0aW9uIChlLmcuIGBleHRl
cm5hbHMvc3JjL2dvb2dsZXRlc3QgLXI2MCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNv
bS9zdm4vdHJ1bmtgKS4KKworSGVyZSBpcyBhbiBleGFtcGxlIG9mIHVzaW5nIHRoZSBzdm46ZXh0
ZXJuYWxzIHByb3BlcnRpZXMgb24gYSB0cnVuayAocmVhZCB2aWEgYHN2biBwcm9wZ2V0YCkgb2Yg
YSBwcm9qZWN0LiBUaGlzIHZhbHVlIGNoZWNrcyBvdXQgYSBjb3B5IG9mIEdvb2dsZSBUZXN0IGlu
dG8gdGhlIGB0cnVuay9leHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QvYCBkaXJlY3RvcnkuCisKK2Bg
YAorW0NvbXB1dGVyOnN2bl0gdXNlciQgc3ZuIHByb3BnZXQgc3ZuOmV4dGVybmFscyB0cnVuawor
ZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29t
L3N2bi90cnVuaworYGBgCisKKyMgQWRkIHRoZSBGcmFtZXdvcmsgdG8gWW91ciBQcm9qZWN0ICMK
KworVGhlIG5leHQgc3RlcCBpcyB0byBidWlsZCBhbmQgYWRkIHRoZSBndGVzdC5mcmFtZXdvcmsg
dG8geW91ciBvd24gcHJvamVjdC4gVGhpcyBndWlkZSBkZXNjcmliZXMgdHdvIGNvbW1vbiB3YXlz
IGJlbG93LgorCisgICogKipPcHRpb24gMSoqIC0tLSBUaGUgc2ltcGxlc3Qgd2F5IHRvIGFkZCBH
b29nbGUgVGVzdCB0byB5b3VyIG93biBwcm9qZWN0LCBpcyB0byBvcGVuIGd0ZXN0Lnhjb2RlcHJv
aiAoZm91bmQgaW4gdGhlIHhjb2RlLyBkaXJlY3Rvcnkgb2YgdGhlIEdvb2dsZSBUZXN0IHRydW5r
KSBhbmQgYnVpbGQgdGhlIGZyYW1ld29yayBtYW51YWxseS4gVGhlbiwgYWRkIHRoZSBidWlsdCBm
cmFtZXdvcmsgaW50byB5b3VyIHByb2plY3QgdXNpbmcgdGhlICJBZGQtPkV4aXN0aW5nIEZyYW1l
d29yay4uLiIgZnJvbSB0aGUgY29udGV4dCBtZW51IG9yICJQcm9qZWN0LT5BZGQuLi4iIGZyb20g
dGhlIG1haW4gbWVudS4gVGhlIGd0ZXN0LmZyYW1ld29yayBpcyByZWxvY2F0YWJsZSBhbmQgY29u
dGFpbnMgdGhlIGhlYWRlcnMgYW5kIG9iamVjdCBjb2RlIHRoYXQgeW91J2xsIG5lZWQgdG8gbWFr
ZSB0ZXN0cy4gVGhpcyBtZXRob2QgcmVxdWlyZXMgcmVidWlsZGluZyBldmVyeSB0aW1lIHlvdSB1
cGdyYWRlIEdvb2dsZSBUZXN0IGluIHlvdXIgcHJvamVjdC4KKyAgKiAqKk9wdGlvbiAyKiogLS0t
IElmIHlvdSBhcmUgZ29pbmcgdG8gYmUgbGl2aW5nIG9mZiB0aGUgdHJ1bmsgb2YgR29vZ2xlIFRl
c3QsIGluY29ycG9yYXRpbmcgaXRzIGxhdGVzdCBmZWF0dXJlcyBpbnRvIHlvdXIgdW5pdCB0ZXN0
cyAob3IgYXJlIGEgR29vZ2xlIFRlc3QgZGV2ZWxvcGVyIHlvdXJzZWxmKS4gWW91J2xsIHdhbnQg
dG8gcmVidWlsZCB0aGUgZnJhbWV3b3JrIGV2ZXJ5IHRpbWUgdGhlIHNvdXJjZSB1cGRhdGVzLiB0
byBkbyB0aGlzLCB5b3UnbGwgbmVlZCB0byBhZGQgdGhlIGd0ZXN0Lnhjb2RlcHJvaiBmaWxlLCBu
b3QgdGhlIGZyYW1ld29yayBpdHNlbGYsIHRvIHlvdXIgb3duIFhjb2RlIHByb2plY3QuIFRoZW4s
IGZyb20gdGhlIGJ1aWxkIHByb2R1Y3RzIHRoYXQgYXJlIHJldmVhbGVkIGJ5IHRoZSBwcm9qZWN0
J3MgZGlzY2xvc3VyZSB0cmlhbmdsZSwgeW91IGNhbiBmaW5kIHRoZSBndGVzdC5mcmFtZXdvcmss
IHdoaWNoIGNhbiBiZSBhZGRlZCB0byB5b3VyIHRhcmdldHMgKGRpc2N1c3NlZCBiZWxvdykuCisK
KyMgTWFrZSBhIFRlc3QgVGFyZ2V0ICMKKworVG8gc3RhcnQgd3JpdGluZyB0ZXN0cywgbWFrZSBh
IG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0LiBUaGlzIHRhcmdldCB0ZW1wbGF0ZSBpcyBhdmFpbGFi
bGUgdW5kZXIgQlNELCBDb2NvYSwgb3IgQ2FyYm9uLiBBZGQgeW91ciB1bml0IHRlc3Qgc291cmNl
IGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJjZXMiIGJ1aWxkIHBoYXNlIG9mIHRoZSB0YXJnZXQu
CisKK05leHQsIHlvdSdsbCB3YW50IHRvIGFkZCBndGVzdC5mcmFtZXdvcmsgaW4gdHdvIGRpZmZl
cmVudCB3YXlzLCBkZXBlbmRpbmcgdXBvbiB3aGljaCBvcHRpb24geW91IGNob3NlIGFib3ZlLgor
CisgICogKipPcHRpb24gMSoqIC0tLSBEdXJpbmcgY29tcGlsYXRpb24sIFhjb2RlIHdpbGwgbmVl
ZCB0byBrbm93IHRoYXQgeW91IGFyZSBsaW5raW5nIGFnYWluc3QgdGhlIGd0ZXN0LmZyYW1ld29y
ay4gQWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8gdGhlICJMaW5rIEJpbmFyeSB3aXRoIExpYnJh
cmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gVGhpcyB3aWxsIGluY2x1ZGUg
dGhlIEdvb2dsZSBUZXN0IGhlYWRlcnMgaW4geW91ciBoZWFkZXIgc2VhcmNoIHBhdGgsIGFuZCB3
aWxsIHRlbGwgdGhlIGxpbmtlciB3aGVyZSB0byBmaW5kIHRoZSBsaWJyYXJ5LgorICAqICoqT3B0
aW9uIDIqKiAtLS0gSWYgeW91ciB3b3JraW5nIG91dCBvZiB0aGUgdHJ1bmssIHlvdSdsbCBhbHNv
IHdhbnQgdG8gYWRkIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyICJMaW5rIEJpbmFyeSB3aXRoIExp
YnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gSW4gYWRkaXRpb24sIHlv
dSdsbCAgd2FudCB0byBhZGQgdGhlIGd0ZXN0LmZyYW1ld29yayBhcyBhIGRlcGVuZGVuY3kgdG8g
eW91ciB1bml0IHRlc3QgdGFyZ2V0LiBUaGlzIHdheSwgWGNvZGUgd2lsbCBtYWtlIHN1cmUgdGhh
dCBndGVzdC5mcmFtZXdvcmsgaXMgdXAgdG8gZGF0ZSwgZXZlcnkgdGltZSB5b3VyIGJ1aWxkIHlv
dXIgdGFyZ2V0LiBGaW5hbGx5LCBpZiB5b3UgZG9uJ3Qgc2hhcmUgYnVpbGQgZGlyZWN0b3JpZXMg
d2l0aCBHb29nbGUgVGVzdCwgeW91J2xsIGhhdmUgdG8gY29weSB0aGUgZ3Rlc3QuZnJhbWV3b3Jr
IGludG8geW91ciBvd24gYnVpbGQgcHJvZHVjdHMgZGlyZWN0b3J5IHVzaW5nIGEgIlJ1biBTY3Jp
cHQiIGJ1aWxkIHBoYXNlLgorCisjIFNldCBVcCB0aGUgRXhlY3V0YWJsZSBSdW4gRW52aXJvbm1l
bnQgIworCitTaW5jZSB0aGUgdW5pdCB0ZXN0IGV4ZWN1dGFibGUgaXMgYSBzaGVsbCB0b29sLCBp
dCBkb2Vzbid0IGhhdmUgYSBidW5kbGUgd2l0aCBhIGBDb250ZW50cy9GcmFtZXdvcmtzYCBkaXJl
Y3RvcnksIGluIHdoaWNoIHRvIHBsYWNlIGd0ZXN0LmZyYW1ld29yay4gSW5zdGVhZCwgdGhlIGR5
bmFtaWMgbGlua2VyIG11c3QgYmUgdG9sZCBhdCBydW50aW1lIHRvIHNlYXJjaCBmb3IgdGhlIGZy
YW1ld29yayBpbiBhbm90aGVyIGxvY2F0aW9uLiBUaGlzIGNhbiBiZSBhY2NvbXBsaXNoZWQgYnkg
c2V0dGluZyB0aGUgIkRZTERcX0ZSQU1FV09SS1xfUEFUSCIgZW52aXJvbm1lbnQgdmFyaWFibGUg
aW4gdGhlICJFZGl0IEFjdGl2ZSBFeGVjdXRhYmxlIC4uLiIgQXJndW1lbnRzIHRhYiwgdW5kZXIg
IlZhcmlhYmxlcyB0byBiZSBzZXQgaW4gdGhlIGVudmlyb25tZW50OiIuIFRoZSBwYXRoIGZvciB0
aGlzIHZhbHVlIGlzIHRoZSBwYXRoIChyZWxhdGl2ZSBvciBhYnNvbHV0ZSkgb2YgdGhlIGRpcmVj
dG9yeSBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsuCisKK0lmIHlvdSBoYXZlbid0IHNl
dCB1cCB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRILCBjb3JyZWN0bHksIHlvdSBtaWdodCBnZXQg
YSBtZXNzYWdlIGxpa2UgdGhpczoKKworYGBgCitbU2Vzc2lvbiBzdGFydGVkIGF0IDIwMDgtMDgt
MTUgMDY6MjM6NTcgLTA2MDAuXQorICBkeWxkOiBMaWJyYXJ5IG5vdCBsb2FkZWQ6IEBsb2FkZXJf
cGF0aC8uLi9GcmFtZXdvcmtzL2d0ZXN0LmZyYW1ld29yay9WZXJzaW9ucy9BL2d0ZXN0CisgICAg
UmVmZXJlbmNlZCBmcm9tOiAvVXNlcnMvdXNlcm5hbWUvRG9jdW1lbnRzL1NhbmRib3gvZ3Rlc3RT
YW1wbGUvYnVpbGQvRGVidWcvV2lkZ2V0RnJhbWV3b3JrVGVzdAorICAgIFJlYXNvbjogaW1hZ2Ug
bm90IGZvdW5kCitgYGAKKworVG8gY29ycmVjdCB0aGlzIHByb2JsZW0sIGdvdCB0byB0aGUgZGly
ZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGV4ZWN1dGFibGUgbmFtZWQgaW4gIlJlZmVyZW5jZWQgZnJv
bToiIHZhbHVlIGluIHRoZSBlcnJvciBtZXNzYWdlIGFib3ZlLiBUaGVuLCB3aXRoIHRoZSB0ZXJt
aW5hbCBpbiB0aGlzIGxvY2F0aW9uLCBmaW5kIHRoZSByZWxhdGl2ZSBwYXRoIHRvIHRoZSBkaXJl
Y3RvcnkgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrLiBUaGF0IGlzIHRoZSB2YWx1ZSB5
b3UnbGwgbmVlZCB0byBzZXQgYXMgdGhlIERZTERcX0ZSQU1FV09SS1xfUEFUSC4KKworIyBCdWls
ZCBhbmQgR28gIworCitOb3csIHdoZW4geW91IGNsaWNrICJCdWlsZCBhbmQgR28iLCB0aGUgdGVz
dCB3aWxsIGJlIGV4ZWN1dGVkLiBEdW1waW5nIG91dCBzb21ldGhpbmcgbGlrZSB0aGlzOgorCitg
YGAKK1tTZXNzaW9uIHN0YXJ0ZWQgYXQgMjAwOC0wOC0wNiAwNjozNjoxMyAtMDYwMC5dCitbPT09
PT09PT09PV0gUnVubmluZyAyIHRlc3RzIGZyb20gMSB0ZXN0IGNhc2UuCitbLS0tLS0tLS0tLV0g
R2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgorWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJv
bSBXaWRnZXRJbml0aWFsaXplclRlc3QKK1sgUlVOICAgICAgXSBXaWRnZXRJbml0aWFsaXplclRl
c3QuVGVzdENvbnN0cnVjdG9yCitbICAgICAgIE9LIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRl
c3RDb25zdHJ1Y3RvcgorWyBSVU4gICAgICBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29u
dmVyc2lvbgorWyAgICAgICBPSyBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29udmVyc2lv
bgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgorWz09PT09
PT09PT1dIDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZSByYW4uCitbICBQQVNTRUQgIF0gMiB0ZXN0
cy4KKworVGhlIERlYnVnZ2VyIGhhcyBleGl0ZWQgd2l0aCBzdGF0dXMgMC4gIAorYGBgCisKKyMg
U3VtbWFyeSAjCisKK1VuaXQgdGVzdGluZyBpcyBhIHZhbHVhYmxlIHdheSB0byBlbnN1cmUgeW91
ciBkYXRhIG1vZGVsIHN0YXlzIHZhbGlkIGV2ZW4gZHVyaW5nIHJhcGlkIGRldmVsb3BtZW50IG9y
IHJlZmFjdG9yaW5nLiBUaGUgR29vZ2xlIFRlc3RpbmcgRnJhbWV3b3JrIGlzIGEgZ3JlYXQgdW5p
dCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBhbmQgQysrIHdoaWNoIGludGVncmF0ZXMgd2VsbCB3
aXRoIGFuIFhjb2RlIGRldmVsb3BtZW50IGVudmlyb25tZW50LgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgKaW5kZXggMTIxZGMxZmI1YWM1ZDU5YTMzZDUzMDM0MDU4
ZWVlOTFjMjEyYTIwOC4uOTU3YTY5YzZhOWU3YmVkN2Q1N2ViZDc4NzJmYjA0N2Y5NzE3NWZjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1k
ZWF0aC10ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9n
dGVzdC1kZWF0aC10ZXN0LmgKQEAgLTM4LDcgKzM4LDcgQEAKICNpZm5kZWYgR1RFU1RfSU5DTFVE
RV9HVEVTVF9HVEVTVF9ERUFUSF9URVNUX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1Rf
R1RFU1RfREVBVEhfVEVTVF9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZGVh
dGgtdGVzdC1pbnRlcm5hbC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRo
LXRlc3QtaW50ZXJuYWwuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC01MSw2ICs1MSwx
NyBAQCBHVEVTVF9ERUNMQVJFX3N0cmluZ18oZGVhdGhfdGVzdF9zdHlsZSk7CiAKICNpZiBHVEVT
VF9IQVNfREVBVEhfVEVTVAogCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBSZXR1cm5zIGEg
Qm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNhbGxlciBpcyBjdXJyZW50bHkK
Ky8vIGV4ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiB0aGUgZGVhdGggdGVzdCBjaGlsZCBwcm9j
ZXNzLiAgVG9vbHMgc3VjaCBhcworLy8gVmFsZ3JpbmQgaGVhcCBjaGVja2VycyBtYXkgbmVlZCB0
aGlzIHRvIG1vZGlmeSB0aGVpciBiZWhhdmlvciBpbiBkZWF0aAorLy8gdGVzdHMuICBJTVBPUlRB
TlQ6IFRoaXMgaXMgYW4gaW50ZXJuYWwgdXRpbGl0eS4gIFVzaW5nIGl0IG1heSBicmVhayB0aGUK
Ky8vIGltcGxlbWVudGF0aW9uIG9mIGRlYXRoIHRlc3RzLiAgVXNlciBjb2RlIE1VU1QgTk9UIHVz
ZSBpdC4KK0dURVNUX0FQSV8gYm9vbCBJbkRlYXRoVGVzdENoaWxkKCk7CisKK30gIC8vIG5hbWVz
cGFjZSBpbnRlcm5hbAorCiAvLyBUaGUgZm9sbG93aW5nIG1hY3JvcyBhcmUgdXNlZnVsIGZvciB3
cml0aW5nIGRlYXRoIHRlc3RzLgogCiAvLyBIZXJlJ3Mgd2hhdCBoYXBwZW5zIHdoZW4gYW4gQVNT
RVJUX0RFQVRIKiBvciBFWFBFQ1RfREVBVEgqIGlzCkBAIC03NSw3ICs4Niw3IEBAIEdURVNUX0RF
Q0xBUkVfc3RyaW5nXyhkZWF0aF90ZXN0X3N0eWxlKTsKIC8vICAgZm9yIChpbnQgaSA9IDA7IGkg
PCA1OyBpKyspIHsKIC8vICAgICBFWFBFQ1RfREVBVEgoc2VydmVyLlByb2Nlc3NSZXF1ZXN0KGkp
LAogLy8gICAgICAgICAgICAgICAgICAiSW52YWxpZCByZXF1ZXN0IC4qIGluIFByb2Nlc3NSZXF1
ZXN0KCkiKQotLy8gICAgICAgICA8PCAiRmFpbGVkIHRvIGRpZSBvbiByZXF1ZXN0ICIgPDwgaSk7
CisvLyAgICAgICAgICAgICAgICAgIDw8ICJGYWlsZWQgdG8gZGllIG9uIHJlcXVlc3QgIiA8PCBp
OwogLy8gICB9CiAvLwogLy8gICBBU1NFUlRfRVhJVChzZXJ2ZXIuRXhpdE5vdygpLCA6OnRlc3Rp
bmc6OkV4aXRlZFdpdGhDb2RlKDApLCAiRXhpdGluZyIpOwpAQCAtMTU0LDI0ICsxNjUsMjQgQEAg
R1RFU1RfREVDTEFSRV9zdHJpbmdfKGRlYXRoX3Rlc3Rfc3R5bGUpOwogLy8gQXNzZXJ0cyB0aGF0
IGEgZ2l2ZW4gc3RhdGVtZW50IGNhdXNlcyB0aGUgcHJvZ3JhbSB0byBleGl0LCB3aXRoIGFuCiAv
LyBpbnRlZ2VyIGV4aXQgc3RhdHVzIHRoYXQgc2F0aXNmaWVzIHByZWRpY2F0ZSwgYW5kIGVtaXR0
aW5nIGVycm9yIG91dHB1dAogLy8gdGhhdCBtYXRjaGVzIHJlZ2V4LgotI2RlZmluZSBBU1NFUlRf
RVhJVChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpIFwKLSAgR1RFU1RfREVBVEhfVEVTVF8o
c3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4LCBHVEVTVF9GQVRBTF9GQUlMVVJFXykKKyMgZGVm
aW5lIEFTU0VSVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCkgXAorICAgIEdURVNU
X0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgR1RFU1RfRkFUQUxfRkFJ
TFVSRV8pCiAKIC8vIExpa2UgQVNTRVJUX0VYSVQsIGJ1dCBjb250aW51ZXMgb24gdG8gc3VjY2Vz
c2l2ZSB0ZXN0cyBpbiB0aGUKIC8vIHRlc3QgY2FzZSwgaWYgYW55OgotI2RlZmluZSBFWFBFQ1Rf
RVhJVChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpIFwKLSAgR1RFU1RfREVBVEhfVEVTVF8o
c3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4LCBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXykKKyMg
ZGVmaW5lIEVYUEVDVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCkgXAorICAgIEdU
RVNUX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgR1RFU1RfTk9ORkFU
QUxfRkFJTFVSRV8pCiAKIC8vIEFzc2VydHMgdGhhdCBhIGdpdmVuIHN0YXRlbWVudCBjYXVzZXMg
dGhlIHByb2dyYW0gdG8gZXhpdCwgZWl0aGVyIGJ5CiAvLyBleHBsaWNpdGx5IGV4aXRpbmcgd2l0
aCBhIG5vbnplcm8gZXhpdCBjb2RlIG9yIGJlaW5nIGtpbGxlZCBieSBhCiAvLyBzaWduYWwsIGFu
ZCBlbWl0dGluZyBlcnJvciBvdXRwdXQgdGhhdCBtYXRjaGVzIHJlZ2V4LgotI2RlZmluZSBBU1NF
UlRfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAotICBBU1NFUlRfRVhJVChzdGF0ZW1lbnQsIDo6
dGVzdGluZzo6aW50ZXJuYWw6OkV4aXRlZFVuc3VjY2Vzc2Z1bGx5LCByZWdleCkKKyMgZGVmaW5l
IEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgICAgQVNTRVJUX0VYSVQoc3RhdGVt
ZW50LCA6OnRlc3Rpbmc6OmludGVybmFsOjpFeGl0ZWRVbnN1Y2Nlc3NmdWxseSwgcmVnZXgpCiAK
IC8vIExpa2UgQVNTRVJUX0RFQVRILCBidXQgY29udGludWVzIG9uIHRvIHN1Y2Nlc3NpdmUgdGVz
dHMgaW4gdGhlCiAvLyB0ZXN0IGNhc2UsIGlmIGFueToKLSNkZWZpbmUgRVhQRUNUX0RFQVRIKHN0
YXRlbWVudCwgcmVnZXgpIFwKLSAgRVhQRUNUX0VYSVQoc3RhdGVtZW50LCA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpFeGl0ZWRVbnN1Y2Nlc3NmdWxseSwgcmVnZXgpCisjIGRlZmluZSBFWFBFQ1RfREVB
VEgoc3RhdGVtZW50LCByZWdleCkgXAorICAgIEVYUEVDVF9FWElUKHN0YXRlbWVudCwgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6RXhpdGVkVW5zdWNjZXNzZnVsbHksIHJlZ2V4KQogCiAvLyBUd28gcHJl
ZGljYXRlIGNsYXNzZXMgdGhhdCBjYW4gYmUgdXNlZCBpbiB7QVNTRVJULEVYUEVDVH1fRVhJVCo6
CiAKQEAgLTE4Nyw3ICsxOTgsNyBAQCBjbGFzcyBHVEVTVF9BUElfIEV4aXRlZFdpdGhDb2RlIHsK
ICAgY29uc3QgaW50IGV4aXRfY29kZV87CiB9OwogCi0jaWYgIUdURVNUX09TX1dJTkRPV1MKKyMg
aWYgIUdURVNUX09TX1dJTkRPV1MKIC8vIFRlc3RzIHRoYXQgYW4gZXhpdCBjb2RlIGRlc2NyaWJl
cyBhbiBleGl0IGR1ZSB0byB0ZXJtaW5hdGlvbiBieSBhCiAvLyBnaXZlbiBzaWduYWwuCiBjbGFz
cyBHVEVTVF9BUElfIEtpbGxlZEJ5U2lnbmFsIHsKQEAgLTE5Nyw3ICsyMDgsNyBAQCBjbGFzcyBH
VEVTVF9BUElfIEtpbGxlZEJ5U2lnbmFsIHsKICBwcml2YXRlOgogICBjb25zdCBpbnQgc2lnbnVt
XzsKIH07Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyAhR1RFU1Rf
T1NfV0lORE9XUwogCiAvLyBFWFBFQ1RfREVCVUdfREVBVEggYXNzZXJ0cyB0aGF0IHRoZSBnaXZl
biBzdGF0ZW1lbnRzIGRpZSBpbiBkZWJ1ZyBtb2RlLgogLy8gVGhlIGRlYXRoIHRlc3RpbmcgZnJh
bWV3b3JrIGNhdXNlcyB0aGlzIHRvIGhhdmUgaW50ZXJlc3Rpbmcgc2VtYW50aWNzLApAQCAtMjQy
LDIzICsyNTMsMjMgQEAgY2xhc3MgR1RFU1RfQVBJXyBLaWxsZWRCeVNpZ25hbCB7CiAvLyAgIEVY
UEVDVF9FUSgxMiwgRGllSW5EZWJ1Z09yMTIoJnNpZGVlZmZlY3QpKTsKIC8vIH0sICJkZWF0aCIp
OwogLy8KLSNpZmRlZiBOREVCVUcKKyMgaWZkZWYgTkRFQlVHCiAKLSNkZWZpbmUgRVhQRUNUX0RF
QlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKLSAgZG8geyBzdGF0ZW1lbnQ7IH0gd2hpbGUg
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCisjICBkZWZpbmUgRVhQRUNUX0RF
QlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKKyAgR1RFU1RfRVhFQ1VURV9TVEFURU1FTlRf
KHN0YXRlbWVudCwgcmVnZXgpCiAKLSNkZWZpbmUgQVNTRVJUX0RFQlVHX0RFQVRIKHN0YXRlbWVu
dCwgcmVnZXgpIFwKLSAgZG8geyBzdGF0ZW1lbnQ7IH0gd2hpbGUgKDo6dGVzdGluZzo6aW50ZXJu
YWw6OkFsd2F5c0ZhbHNlKCkpCisjICBkZWZpbmUgQVNTRVJUX0RFQlVHX0RFQVRIKHN0YXRlbWVu
dCwgcmVnZXgpIFwKKyAgR1RFU1RfRVhFQ1VURV9TVEFURU1FTlRfKHN0YXRlbWVudCwgcmVnZXgp
CiAKLSNlbHNlCisjIGVsc2UKIAotI2RlZmluZSBFWFBFQ1RfREVCVUdfREVBVEgoc3RhdGVtZW50
LCByZWdleCkgXAorIyAgZGVmaW5lIEVYUEVDVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4
KSBcCiAgIEVYUEVDVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KQogCi0jZGVmaW5lIEFTU0VSVF9E
RUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisjICBkZWZpbmUgQVNTRVJUX0RFQlVHX0RF
QVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKICAgQVNTRVJUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgp
CiAKLSNlbmRpZiAgLy8gTkRFQlVHIGZvciBFWFBFQ1RfREVCVUdfREVBVEgKKyMgZW5kaWYgIC8v
IE5ERUJVRyBmb3IgRVhQRUNUX0RFQlVHX0RFQVRICiAjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFU
SF9URVNUCiAKIC8vIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkg
YW5kCkBAIC0yNjcsMTQgKzI3OCwxNCBAQCBjbGFzcyBHVEVTVF9BUElfIEtpbGxlZEJ5U2lnbmFs
IHsKIC8vIHVzZWZ1bCB3aGVuIHlvdSBhcmUgY29tYmluaW5nIGRlYXRoIHRlc3QgYXNzZXJ0aW9u
cyB3aXRoIG5vcm1hbCB0ZXN0CiAvLyBhc3NlcnRpb25zIGluIG9uZSB0ZXN0LgogI2lmIEdURVNU
X0hBU19ERUFUSF9URVNUCi0jZGVmaW5lIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVt
ZW50LCByZWdleCkgXAorIyBkZWZpbmUgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1l
bnQsIHJlZ2V4KSBcCiAgICAgRVhQRUNUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpCi0jZGVmaW5l
IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAorIyBkZWZpbmUg
QVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCiAgICAgQVNTRVJU
X0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpCiAjZWxzZQotI2RlZmluZSBFWFBFQ1RfREVBVEhfSUZf
U1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKKyMgZGVmaW5lIEVYUEVDVF9ERUFUSF9JRl9T
VVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAogICAgIEdURVNUX1VOU1VQUE9SVEVEX0RFQVRI
X1RFU1RfKHN0YXRlbWVudCwgcmVnZXgsICkKLSNkZWZpbmUgQVNTRVJUX0RFQVRIX0lGX1NVUFBP
UlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisjIGRlZmluZSBBU1NFUlRfREVBVEhfSUZfU1VQUE9S
VEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKICAgICBHVEVTVF9VTlNVUFBPUlRFRF9ERUFUSF9URVNU
XyhzdGF0ZW1lbnQsIHJlZ2V4LCByZXR1cm4pCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaAppbmRleCBmMTM1
YjY5NDI3ZmU5ZWJlMjM3YzRjZGE3YTljMmYwZDc4ZGQ3NjhlLi5mZTg3OWJjYTc5MjdhZmFlMjQ5
OWE2MTM3YWIyNmY0OTkxZmJiYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaApAQCAtNDgsOCArNDgsMTEgQEAKIAog
I2luY2x1ZGUgPGxpbWl0cz4KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmlu
Zy5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg+CisjaW5jbHVk
ZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorCisvLyBFbnN1cmVzIHRoYXQgdGhlcmUg
aXMgYXQgbGVhc3Qgb25lIG9wZXJhdG9yPDwgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisvLyBT
ZWUgTWVzc2FnZSYgb3BlcmF0b3I8PCguLi4pIGJlbG93IGZvciB3aHkuCit2b2lkIG9wZXJhdG9y
PDwoY29uc3QgdGVzdGluZzo6aW50ZXJuYWw6OlNlY3JldCYsIGludCk7CiAKIG5hbWVzcGFjZSB0
ZXN0aW5nIHsKIApAQCAtNTgsNyArNjEsNyBAQCBuYW1lc3BhY2UgdGVzdGluZyB7CiAvLyBUeXBp
Y2FsIHVzYWdlOgogLy8KIC8vICAgMS4gWW91IHN0cmVhbSBhIGJ1bmNoIG9mIHZhbHVlcyB0byBh
IE1lc3NhZ2Ugb2JqZWN0LgotLy8gICAgICBJdCB3aWxsIHJlbWVtYmVyIHRoZSB0ZXh0IGluIGEg
U3RyU3RyZWFtLgorLy8gICAgICBJdCB3aWxsIHJlbWVtYmVyIHRoZSB0ZXh0IGluIGEgc3RyaW5n
c3RyZWFtLgogLy8gICAyLiBUaGVuIHlvdSBzdHJlYW0gdGhlIE1lc3NhZ2Ugb2JqZWN0IHRvIGFu
IG9zdHJlYW0uCiAvLyAgICAgIFRoaXMgY2F1c2VzIHRoZSB0ZXh0IGluIHRoZSBNZXNzYWdlIHRv
IGJlIHN0cmVhbWVkCiAvLyAgICAgIHRvIHRoZSBvc3RyZWFtLgpAQCAtNzQsNyArNzcsNyBAQCBu
YW1lc3BhY2UgdGVzdGluZyB7CiAvLyBNZXNzYWdlIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBpbmhl
cml0ZWQgZnJvbS4gIEluIHBhcnRpY3VsYXIsIGl0cwogLy8gZGVzdHJ1Y3RvciBpcyBub3Qgdmly
dHVhbC4KIC8vCi0vLyBOb3RlIHRoYXQgU3RyU3RyZWFtIGJlaGF2ZXMgZGlmZmVyZW50bHkgaW4g
Z2NjIGFuZCBpbiBNU1ZDLiAgWW91CisvLyBOb3RlIHRoYXQgc3RyaW5nc3RyZWFtIGJlaGF2ZXMg
ZGlmZmVyZW50bHkgaW4gZ2NjIGFuZCBpbiBNU1ZDLiAgWW91CiAvLyBjYW4gc3RyZWFtIGEgTlVM
TCBjaGFyIHBvaW50ZXIgdG8gaXQgaW4gdGhlIGZvcm1lciwgYnV0IG5vdCBpbiB0aGUKIC8vIGxh
dHRlciAoaXQgY2F1c2VzIGFuIGFjY2VzcyB2aW9sYXRpb24gaWYgeW91IGRvKS4gIFRoZSBNZXNz
YWdlCiAvLyBjbGFzcyBoaWRlcyB0aGlzIGRpZmZlcmVuY2UgYnkgdHJlYXRpbmcgYSBOVUxMIGNo
YXIgcG9pbnRlciBhcwpAQCAtODcsMjcgKzkwLDE4IEBAIGNsYXNzIEdURVNUX0FQSV8gTWVzc2Fn
ZSB7CiAKICBwdWJsaWM6CiAgIC8vIENvbnN0cnVjdHMgYW4gZW1wdHkgTWVzc2FnZS4KLSAgLy8g
V2UgYWxsb2NhdGUgdGhlIFN0clN0cmVhbSBzZXBhcmF0ZWx5IGJlY2F1c2UgaXQgb3RoZXJ3aXNl
IGVhY2ggdXNlIG9mCi0gIC8vIEFTU0VSVC9FWFBFQ1QgaW4gYSBwcm9jZWR1cmUgYWRkcyBvdmVy
IDIwMCBieXRlcyB0byB0aGUgcHJvY2VkdXJlJ3MKLSAgLy8gc3RhY2sgZnJhbWUgbGVhZGluZyB0
byBodWdlIHN0YWNrIGZyYW1lcyBpbiBzb21lIGNhc2VzOyBnY2MgZG9lcyBub3QgcmV1c2UKLSAg
Ly8gdGhlIHN0YWNrIHNwYWNlLgotICBNZXNzYWdlKCkgOiBzc18obmV3IGludGVybmFsOjpTdHJT
dHJlYW0pIHsKLSAgICAvLyBCeSBkZWZhdWx0LCB3ZSB3YW50IHRoZXJlIHRvIGJlIGVub3VnaCBw
cmVjaXNpb24gd2hlbiBwcmludGluZwotICAgIC8vIGEgZG91YmxlIHRvIGEgTWVzc2FnZS4KLSAg
ICAqc3NfIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
ZGlnaXRzMTAgKyAyKTsKLSAgfQorICBNZXNzYWdlKCk7CiAKICAgLy8gQ29weSBjb25zdHJ1Y3Rv
ci4KLSAgTWVzc2FnZShjb25zdCBNZXNzYWdlJiBtc2cpIDogc3NfKG5ldyBpbnRlcm5hbDo6U3Ry
U3RyZWFtKSB7ICAvLyBOT0xJTlQKKyAgTWVzc2FnZShjb25zdCBNZXNzYWdlJiBtc2cpIDogc3Nf
KG5ldyA6OnN0ZDo6c3RyaW5nc3RyZWFtKSB7ICAvLyBOT0xJTlQKICAgICAqc3NfIDw8IG1zZy5H
ZXRTdHJpbmcoKTsKICAgfQogCiAgIC8vIENvbnN0cnVjdHMgYSBNZXNzYWdlIGZyb20gYSBDLXN0
cmluZy4KLSAgZXhwbGljaXQgTWVzc2FnZShjb25zdCBjaGFyKiBzdHIpIDogc3NfKG5ldyBpbnRl
cm5hbDo6U3RyU3RyZWFtKSB7CisgIGV4cGxpY2l0IE1lc3NhZ2UoY29uc3QgY2hhciogc3RyKSA6
IHNzXyhuZXcgOjpzdGQ6OnN0cmluZ3N0cmVhbSkgewogICAgICpzc18gPDwgc3RyOwogICB9CiAK
LSAgfk1lc3NhZ2UoKSB7IGRlbGV0ZSBzc187IH0KICNpZiBHVEVTVF9PU19TWU1CSUFOCiAgIC8v
IFN0cmVhbXMgYSB2YWx1ZSAoZWl0aGVyIGEgcG9pbnRlciBvciBub3QpIHRvIHRoaXMgb2JqZWN0
LgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTExOSw3ICsxMTMsMjIgQEAgY2xhc3MgR1RF
U1RfQVBJXyBNZXNzYWdlIHsKICAgLy8gU3RyZWFtcyBhIG5vbi1wb2ludGVyIHZhbHVlIHRvIHRo
aXMgb2JqZWN0LgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgaW5saW5lIE1lc3NhZ2UmIG9w
ZXJhdG9yIDw8KGNvbnN0IFQmIHZhbCkgewotICAgIDo6R1Rlc3RTdHJlYW1Ub0hlbHBlcihzc18s
IHZhbCk7CisgICAgLy8gU29tZSBsaWJyYXJpZXMgb3ZlcmxvYWQgPDwgZm9yIFNUTCBjb250YWlu
ZXJzLiAgVGhlc2UKKyAgICAvLyBvdmVybG9hZHMgYXJlIGRlZmluZWQgaW4gdGhlIGdsb2JhbCBu
YW1lc3BhY2UgaW5zdGVhZCBvZiA6OnN0ZC4KKyAgICAvLworICAgIC8vIEMrKydzIHN5bWJvbCBs
b29rdXAgcnVsZSAoaS5lLiBLb2VuaWcgbG9va3VwKSBzYXlzIHRoYXQgdGhlc2UKKyAgICAvLyBv
dmVybG9hZHMgYXJlIHZpc2libGUgaW4gZWl0aGVyIHRoZSBzdGQgbmFtZXNwYWNlIG9yIHRoZSBn
bG9iYWwKKyAgICAvLyBuYW1lc3BhY2UsIGJ1dCBub3Qgb3RoZXIgbmFtZXNwYWNlcywgaW5jbHVk
aW5nIHRoZSB0ZXN0aW5nCisgICAgLy8gbmFtZXNwYWNlIHdoaWNoIEdvb2dsZSBUZXN0J3MgTWVz
c2FnZSBjbGFzcyBpcyBpbi4KKyAgICAvLworICAgIC8vIFRvIGFsbG93IFNUTCBjb250YWluZXJz
IChhbmQgb3RoZXIgdHlwZXMgdGhhdCBoYXMgYSA8PCBvcGVyYXRvcgorICAgIC8vIGRlZmluZWQg
aW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UpIHRvIGJlIHVzZWQgaW4gR29vZ2xlIFRlc3QKKyAgICAv
LyBhc3NlcnRpb25zLCB0ZXN0aW5nOjpNZXNzYWdlIG11c3QgYWNjZXNzIHRoZSBjdXN0b20gPDwg
b3BlcmF0b3IKKyAgICAvLyBmcm9tIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAgV2l0aCB0aGlzIHVz
aW5nIGRlY2xhcmF0aW9uLAorICAgIC8vIG92ZXJsb2FkcyBvZiA8PCBkZWZpbmVkIGluIHRoZSBn
bG9iYWwgbmFtZXNwYWNlIGFuZCB0aG9zZQorICAgIC8vIHZpc2libGUgdmlhIEtvZW5pZyBsb29r
dXAgYXJlIGJvdGggZXhwb3NlZCBpbiB0aGlzIGZ1bmN0aW9uLgorICAgIHVzaW5nIDo6b3BlcmF0
b3IgPDw7CisgICAgKnNzXyA8PCB2YWw7CiAgICAgcmV0dXJuICp0aGlzOwogICB9CiAKQEAgLTE0
MSw3ICsxNTAsNyBAQCBjbGFzcyBHVEVTVF9BUElfIE1lc3NhZ2UgewogICAgIGlmIChwb2ludGVy
ID09IE5VTEwpIHsKICAgICAgICpzc18gPDwgIihudWxsKSI7CiAgICAgfSBlbHNlIHsKLSAgICAg
IDo6R1Rlc3RTdHJlYW1Ub0hlbHBlcihzc18sIHBvaW50ZXIpOworICAgICAgKnNzXyA8PCBwb2lu
dGVyOwogICAgIH0KICAgICByZXR1cm4gKnRoaXM7CiAgIH0KQEAgLTE2NSwxMiArMTc0LDggQEAg
Y2xhc3MgR1RFU1RfQVBJXyBNZXNzYWdlIHsKIAogICAvLyBUaGVzZSB0d28gb3ZlcmxvYWRzIGFs
bG93IHN0cmVhbWluZyBhIHdpZGUgQyBzdHJpbmcgdG8gYSBNZXNzYWdlCiAgIC8vIHVzaW5nIHRo
ZSBVVEYtOCBlbmNvZGluZy4KLSAgTWVzc2FnZSYgb3BlcmF0b3IgPDwoY29uc3Qgd2NoYXJfdCog
d2lkZV9jX3N0cikgewotICAgIHJldHVybiAqdGhpcyA8PCBpbnRlcm5hbDo6U3RyaW5nOjpTaG93
V2lkZUNTdHJpbmcod2lkZV9jX3N0cik7Ci0gIH0KLSAgTWVzc2FnZSYgb3BlcmF0b3IgPDwod2No
YXJfdCogd2lkZV9jX3N0cikgewotICAgIHJldHVybiAqdGhpcyA8PCBpbnRlcm5hbDo6U3RyaW5n
OjpTaG93V2lkZUNTdHJpbmcod2lkZV9jX3N0cik7Ci0gIH0KKyAgTWVzc2FnZSYgb3BlcmF0b3Ig
PDwoY29uc3Qgd2NoYXJfdCogd2lkZV9jX3N0cik7CisgIE1lc3NhZ2UmIG9wZXJhdG9yIDw8KHdj
aGFyX3QqIHdpZGVfY19zdHIpOwogCiAjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCiAgIC8vIENv
bnZlcnRzIHRoZSBnaXZlbiB3aWRlIHN0cmluZyB0byBhIG5hcnJvdyBzdHJpbmcgdXNpbmcgdGhl
IFVURi04CkBAIC0xODQsMzYgKzE4OSwzOSBAQCBjbGFzcyBHVEVTVF9BUElfIE1lc3NhZ2Ugewog
ICBNZXNzYWdlJiBvcGVyYXRvciA8PChjb25zdCA6OndzdHJpbmcmIHdzdHIpOwogI2VuZGlmICAv
LyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKIAotICAvLyBHZXRzIHRoZSB0ZXh0IHN0cmVhbWVk
IHRvIHRoaXMgb2JqZWN0IHNvIGZhciBhcyBhIFN0cmluZy4KKyAgLy8gR2V0cyB0aGUgdGV4dCBz
dHJlYW1lZCB0byB0aGlzIG9iamVjdCBzbyBmYXIgYXMgYW4gc3RkOjpzdHJpbmcuCiAgIC8vIEVh
Y2ggJ1wwJyBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlciBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgog
ICAvLwogICAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VS
IFBST0dSQU0uCi0gIGludGVybmFsOjpTdHJpbmcgR2V0U3RyaW5nKCkgY29uc3QgewotICAgIHJl
dHVybiBpbnRlcm5hbDo6U3RyU3RyZWFtVG9TdHJpbmcoc3NfKTsKLSAgfQorICBzdGQ6OnN0cmlu
ZyBHZXRTdHJpbmcoKSBjb25zdDsKIAogIHByaXZhdGU6CisKICNpZiBHVEVTVF9PU19TWU1CSUFO
CiAgIC8vIFRoZXNlIGFyZSBuZWVkZWQgYXMgdGhlIE5va2lhIFN5bWJpYW4gQ29tcGlsZXIgY2Fu
bm90IGRlY2lkZSBiZXR3ZWVuCiAgIC8vIGNvbnN0IFQmIGFuZCBjb25zdCBUKiBpbiBhIGZ1bmN0
aW9uIHRlbXBsYXRlLiBUaGUgTm9raWEgY29tcGlsZXIgX2Nhbl8KICAgLy8gZGVjaWRlIGJldHdl
ZW4gY2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIGZvciBUIGFuZCBUKiwgc28gYQogICAv
LyB0cjE6OnR5cGVfdHJhaXRzLWxpa2UgaXNfcG9pbnRlciB3b3JrcywgYW5kIHdlIGNhbiBvdmVy
bG9hZCBvbiB0aGF0LgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgaW5saW5lIHZvaWQgU3Ry
ZWFtSGVscGVyKGludGVybmFsOjp0cnVlX3R5cGUgLypkdW1teSovLCBUKiBwb2ludGVyKSB7Cisg
IGlubGluZSB2b2lkIFN0cmVhbUhlbHBlcihpbnRlcm5hbDo6dHJ1ZV90eXBlIC8qaXNfcG9pbnRl
ciovLCBUKiBwb2ludGVyKSB7CiAgICAgaWYgKHBvaW50ZXIgPT0gTlVMTCkgewogICAgICAgKnNz
XyA8PCAiKG51bGwpIjsKICAgICB9IGVsc2UgewotICAgICAgOjpHVGVzdFN0cmVhbVRvSGVscGVy
KHNzXywgcG9pbnRlcik7CisgICAgICAqc3NfIDw8IHBvaW50ZXI7CiAgICAgfQogICB9CiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotICBpbmxpbmUgdm9pZCBTdHJlYW1IZWxwZXIoaW50ZXJuYWw6
OmZhbHNlX3R5cGUgLypkdW1teSovLCBjb25zdCBUJiB2YWx1ZSkgewotICAgIDo6R1Rlc3RTdHJl
YW1Ub0hlbHBlcihzc18sIHZhbHVlKTsKKyAgaW5saW5lIHZvaWQgU3RyZWFtSGVscGVyKGludGVy
bmFsOjpmYWxzZV90eXBlIC8qaXNfcG9pbnRlciovLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVCYgdmFsdWUpIHsKKyAgICAvLyBTZWUgdGhlIGNvbW1lbnRzIGluIE1lc3NhZ2Um
IG9wZXJhdG9yIDw8KGNvbnN0IFQmKSBhYm92ZSBmb3Igd2h5CisgICAgLy8gd2UgbmVlZCB0aGlz
IHVzaW5nIHN0YXRlbWVudC4KKyAgICB1c2luZyA6Om9wZXJhdG9yIDw8OworICAgICpzc18gPDwg
dmFsdWU7CiAgIH0KICNlbmRpZiAgLy8gR1RFU1RfT1NfU1lNQklBTgogCiAgIC8vIFdlJ2xsIGhv
bGQgdGhlIHRleHQgc3RyZWFtZWQgdG8gdGhpcyBvYmplY3QgaGVyZS4KLSAgaW50ZXJuYWw6OlN0
clN0cmVhbSogY29uc3Qgc3NfOworICBjb25zdCBpbnRlcm5hbDo6c2NvcGVkX3B0cjwgOjpzdGQ6
OnN0cmluZ3N0cmVhbT4gc3NfOwogCiAgIC8vIFdlIGRlY2xhcmUgKGJ1dCBkb24ndCBpbXBsZW1l
bnQpIHRoaXMgdG8gcHJldmVudCB0aGUgY29tcGlsZXIKICAgLy8gZnJvbSBpbXBsZW1lbnRpbmcg
dGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCkBAIC0yMjUsNiArMjMzLDE4IEBAIGlubGluZSBzdGQ6
Om9zdHJlYW0mIG9wZXJhdG9yIDw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IE1lc3NhZ2UmIHNi
KSB7CiAgIHJldHVybiBvcyA8PCBzYi5HZXRTdHJpbmcoKTsKIH0KIAorbmFtZXNwYWNlIGludGVy
bmFsIHsKKworLy8gQ29udmVydHMgYSBzdHJlYW1hYmxlIHZhbHVlIHRvIGFuIHN0ZDo6c3RyaW5n
LiAgQSBOVUxMIHBvaW50ZXIgaXMKKy8vIGNvbnZlcnRlZCB0byAiKG51bGwpIi4gIFdoZW4gdGhl
IGlucHV0IHZhbHVlIGlzIGEgOjpzdHJpbmcsCisvLyA6OnN0ZDo6c3RyaW5nLCA6OndzdHJpbmcs
IG9yIDo6c3RkOjp3c3RyaW5nIG9iamVjdCwgZWFjaCBOVUwKKy8vIGNoYXJhY3RlciBpbiBpdCBp
cyByZXBsYWNlZCB3aXRoICJcXDAiLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGQ6OnN0cmlu
ZyBTdHJlYW1hYmxlVG9TdHJpbmcoY29uc3QgVCYgc3RyZWFtYWJsZSkgeworICByZXR1cm4gKE1l
c3NhZ2UoKSA8PCBzdHJlYW1hYmxlKS5HZXRTdHJpbmcoKTsKK30KKworfSAgLy8gbmFtZXNwYWNl
IGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCiAjZW5kaWYgIC8vIEdURVNUX0lO
Q0xVREVfR1RFU1RfR1RFU1RfTUVTU0FHRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaAppbmRleCA4MTAwNjk2
NDRkMjNhZDM1NTk3M2NiNTNmY2ViMGE4NTZiMGEwMDZjLi4wMzhmOWJhNzllYjMwMzc3ZjE2NWQ4
YTAyMDBkNDc1MGQzNDliOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9p
bmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaApAQCAtMSw0ICsxLDYgQEAKLS8v
IFRoaXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5IGEgc2NyaXB0LiAgRE8gTk9UIEVESVQgQlkgSEFO
RCEhIQorLy8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgY29tbWFuZDoKKy8vICAgICBwdW1w
LnB5IGd0ZXN0LXBhcmFtLXRlc3QuaC5wdW1wCisvLyBETyBOT1QgRURJVCBCWSBIQU5EISEhCiAK
IC8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgogLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
QEAgLTQ4LDEwICs1MCwxMiBAQAogI2lmIDAKIAogLy8gVG8gd3JpdGUgdmFsdWUtcGFyYW1ldGVy
aXplZCB0ZXN0cywgZmlyc3QgeW91IHNob3VsZCBkZWZpbmUgYSBmaXh0dXJlCi0vLyBjbGFzcy4g
SXQgbXVzdCBiZSBkZXJpdmVkIGZyb20gdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxUPiwgd2hlcmUg
VCBpcwotLy8gdGhlIHR5cGUgb2YgeW91ciBwYXJhbWV0ZXIgdmFsdWVzLiBUZXN0V2l0aFBhcmFt
PFQ+IGlzIGl0c2VsZiBkZXJpdmVkCi0vLyBmcm9tIHRlc3Rpbmc6OlRlc3QuIFQgY2FuIGJlIGFu
eSBjb3B5YWJsZSB0eXBlLiBJZiBpdCdzIGEgcmF3IHBvaW50ZXIsCi0vLyB5b3UgYXJlIHJlc3Bv
bnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgbGlmZXNwYW4gb2YgdGhlIHBvaW50ZWQgdmFsdWVzLgor
Ly8gY2xhc3MuIEl0IGlzIHVzdWFsbHkgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08VD4gKHNlZSBiZWxvdyBmb3IKKy8vIGFub3RoZXIgaW5oZXJpdGFuY2Ugc2NoZW1lIHRoYXQn
cyBzb21ldGltZXMgdXNlZnVsIGluIG1vcmUgY29tcGxpY2F0ZWQKKy8vIGNsYXNzIGhpZXJhcmNo
aWVzKSwgd2hlcmUgdGhlIHR5cGUgb2YgeW91ciBwYXJhbWV0ZXIgdmFsdWVzLgorLy8gVGVzdFdp
dGhQYXJhbTxUPiBpcyBpdHNlbGYgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3QuIFQgY2FuIGJl
IGFueQorLy8gY29weWFibGUgdHlwZS4gSWYgaXQncyBhIHJhdyBwb2ludGVyLCB5b3UgYXJlIHJl
c3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUKKy8vIGxpZmVzcGFuIG9mIHRoZSBwb2ludGVkIHZh
bHVlcy4KIAogY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08
Y29uc3QgY2hhcio+IHsKICAgLy8gWW91IGNhbiBpbXBsZW1lbnQgYWxsIHRoZSB1c3VhbCBjbGFz
cyBmaXh0dXJlIG1lbWJlcnMgaGVyZS4KQEAgLTE0NiwyMSArMTUwLDQ3IEBAIElOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwgVmFsdWVzSW4o
cGV0cykpOwogLy8gSW4gdGhlIGZ1dHVyZSwgd2UgcGxhbiB0byBwdWJsaXNoIHRoZSBBUEkgZm9y
IGRlZmluaW5nIG5ldyBwYXJhbWV0ZXIKIC8vIGdlbmVyYXRvcnMuIEJ1dCBmb3Igbm93IHRoaXMg
aW50ZXJmYWNlIHJlbWFpbnMgcGFydCBvZiB0aGUgaW50ZXJuYWwKIC8vIGltcGxlbWVudGF0aW9u
IGFuZCBpcyBzdWJqZWN0IHRvIGNoYW5nZS4KKy8vCisvLworLy8gQSBwYXJhbWV0ZXJpemVkIHRl
c3QgZml4dHVyZSBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0IGFuZCBmcm9tCisv
LyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD4sIHdoZXJlIFQgaXMgdGhlIHR5cGUgb2Yg
dGhlIHBhcmFtZXRlcgorLy8gdmFsdWVzLiBJbmhlcml0aW5nIGZyb20gVGVzdFdpdGhQYXJhbTxU
PiBzYXRpc2ZpZXMgdGhhdCByZXF1aXJlbWVudCBiZWNhdXNlCisvLyBUZXN0V2l0aFBhcmFtPFQ+
IGluaGVyaXRzIGZyb20gYm90aCBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UuIEluIG1vcmUK
Ky8vIGNvbXBsaWNhdGVkIGhpZXJhcmNoaWVzLCBob3dldmVyLCBpdCBpcyBvY2Nhc2lvbmFsbHkg
dXNlZnVsIHRvIGluaGVyaXQKKy8vIHNlcGFyYXRlbHkgZnJvbSBUZXN0IGFuZCBXaXRoUGFyYW1J
bnRlcmZhY2UuIEZvciBleGFtcGxlOgorCitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3QgeworICAvLyBZb3UgY2FuIGluaGVyaXQgYWxsIHRoZSB1c3VhbCBtZW1iZXJzIGZv
ciBhIG5vbi1wYXJhbWV0ZXJpemVkIHRlc3QKKyAgLy8gZml4dHVyZSBoZXJlLgorfTsKKworY2xh
c3MgRGVyaXZlZFRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQ
YXJhbUludGVyZmFjZTxpbnQ+IHsKKyAgLy8gVGhlIHVzdWFsIHRlc3QgZml4dHVyZSBtZW1iZXJz
IGdvIGhlcmUgdG9vLgorfTsKKworVEVTVF9GKEJhc2VUZXN0LCBIYXNGb28pIHsKKyAgLy8gVGhp
cyBpcyBhbiBvcmRpbmFyeSBub24tcGFyYW1ldGVyaXplZCB0ZXN0LgorfQorCitURVNUX1AoRGVy
aXZlZFRlc3QsIERvZXNCbGFoKSB7CisgIC8vIEdldFBhcmFtIHdvcmtzIGp1c3QgdGhlIHNhbWUg
aGVyZSBhcyBpZiB5b3UgaW5oZXJpdCBmcm9tIFRlc3RXaXRoUGFyYW0uCisgIEVYUEVDVF9UUlVF
KGZvby5CbGFoKEdldFBhcmFtKCkpKTsKK30KIAogI2VuZGlmICAvLyAwCiAKLSNpbmNsdWRlIDxn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oIgogCiAjaWYgIUdURVNUX09TX1NZTUJJQU4KLSNpbmNsdWRlIDx1dGlsaXR5Pgor
IyBpbmNsdWRlIDx1dGlsaXR5PgogI2VuZGlmCiAKIC8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBk
ZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKIC8vICp1bmNvbmRp
dGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKIC8v
IGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJh
bS11dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5l
cmF0ZWQuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaCIKKyNpbmNsdWRlICJndGVz
dC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIgogCiAjaWYgR1RFU1RfSEFT
X1BBUkFNX1RFU1QKIApAQCAtMjc2LDExICszMDYsMTAgQEAgaW50ZXJuYWw6OlBhcmFtR2VuZXJh
dG9yPFQ+IFJhbmdlKFQgc3RhcnQsIFQgZW5kKSB7CiAvLwogdGVtcGxhdGUgPHR5cGVuYW1lIEZv
cndhcmRJdGVyYXRvcj4KIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjwKLSAgICB0eXBlbmFtZSA6
OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+IFZhbHVl
c0luKAotICBGb3J3YXJkSXRlcmF0b3IgYmVnaW4sCi0gIEZvcndhcmRJdGVyYXRvciBlbmQpIHsK
LSAgdHlwZWRlZiB0eXBlbmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRv
cj46OnZhbHVlX3R5cGUKLSAgICAgIFBhcmFtVHlwZTsKKyAgdHlwZW5hbWUgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4KK1Zh
bHVlc0luKEZvcndhcmRJdGVyYXRvciBiZWdpbiwgRm9yd2FyZEl0ZXJhdG9yIGVuZCkgeworICB0
eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJhaXRzPEZvcndh
cmRJdGVyYXRvcj4KKyAgICAgIDo6dmFsdWVfdHlwZSBQYXJhbVR5cGU7CiAgIHJldHVybiBpbnRl
cm5hbDo6UGFyYW1HZW5lcmF0b3I8UGFyYW1UeXBlPigKICAgICAgIG5ldyBpbnRlcm5hbDo6VmFs
dWVzSW5JdGVyYXRvclJhbmdlR2VuZXJhdG9yPFBhcmFtVHlwZT4oYmVnaW4sIGVuZCkpOwogfQpA
QCAtMTE5Miw3ICsxMjIxLDcgQEAgaW5saW5lIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxib29s
PiBCb29sKCkgewogICByZXR1cm4gVmFsdWVzKGZhbHNlLCB0cnVlKTsKIH0KIAotI2lmIEdURVNU
X0hBU19DT01CSU5FCisjIGlmIEdURVNUX0hBU19DT01CSU5FCiAvLyBDb21iaW5lKCkgYWxsb3dz
IHRoZSB1c2VyIHRvIGNvbWJpbmUgdHdvIG9yIG1vcmUgc2VxdWVuY2VzIHRvIHByb2R1Y2UKIC8v
IHZhbHVlcyBvZiBhIENhcnRlc2lhbiBwcm9kdWN0IG9mIHRob3NlIHNlcXVlbmNlcycgZWxlbWVu
dHMuCiAvLwpAQCAtMTIyOCw3ICsxMjU3LDcgQEAgaW5saW5lIGludGVybmFsOjpQYXJhbUdlbmVy
YXRvcjxib29sPiBCb29sKCkgewogLy8gQm9vbGVhbiBmbGFnczoKIC8vCiAvLyBjbGFzcyBGbGFn
RGVwZW5kZW50VGVzdAotLy8gICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08dHVw
bGUoYm9vbCwgYm9vbCk+ID4geworLy8gICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08dHVwbGU8Ym9vbCwgYm9vbD4gPiB7CiAvLyAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKIC8v
ICAgICAvLyBBc3NpZ25zIGV4dGVybmFsX2ZsYWdfMSBhbmQgZXh0ZXJuYWxfZmxhZ18yIHZhbHVl
cyBmcm9tIHRoZSB0dXBsZS4KIC8vICAgICB0aWUoZXh0ZXJuYWxfZmxhZ18xLCBleHRlcm5hbF9m
bGFnXzIpID0gR2V0UGFyYW0oKTsKQEAgLTEzNDQsMTEgKzEzNzMsMTEgQEAgaW50ZXJuYWw6OkNh
cnRlc2lhblByb2R1Y3RIb2xkZXIxMDxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0b3Iz
LAogICAgICAgR2VuZXJhdG9yMTA+KAogICAgICAgZzEsIGcyLCBnMywgZzQsIGc1LCBnNiwgZzcs
IGc4LCBnOSwgZzEwKTsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKKyMgZW5kaWYg
IC8vIEdURVNUX0hBU19DT01CSU5FCiAKIAogCi0jZGVmaW5lIFRFU1RfUCh0ZXN0X2Nhc2VfbmFt
ZSwgdGVzdF9uYW1lKSBcCisjIGRlZmluZSBURVNUX1AodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFt
ZSkgXAogICBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0
X25hbWUpIFwKICAgICAgIDogcHVibGljIHRlc3RfY2FzZV9uYW1lIHsgXAogICAgcHVibGljOiBc
CkBAIC0xMzU4LDE0ICsxMzg3LDE3IEBAIGludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVy
MTA8R2VuZXJhdG9yMSwgR2VuZXJhdG9yMiwgR2VuZXJhdG9yMywKICAgICBzdGF0aWMgaW50IEFk
ZFRvUmVnaXN0cnkoKSB7IFwKICAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpLiBcCiAgICAgICAgICAgR2V0VGVzdENh
c2VQYXR0ZXJuSG9sZGVyPHRlc3RfY2FzZV9uYW1lPihcCi0gICAgICAgICAgICAgICN0ZXN0X2Nh
c2VfbmFtZSwgX19GSUxFX18sIF9fTElORV9fKS0+QWRkVGVzdFBhdHRlcm4oXAotICAgICAgICAg
ICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCi0gICAgICAgICAgICAgICAgICAjdGVzdF9uYW1l
LCBcCi0gICAgICAgICAgICAgICAgICBuZXcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdE1ldGFG
YWN0b3J5PCBcCi0gICAgICAgICAgICAgICAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0
ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKT4oKSk7IFwKKyAgICAgICAgICAgICAgI3Rlc3RfY2Fz
ZV9uYW1lLCBcCisgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlv
bihcCisgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pKS0+QWRkVGVzdFBhdHRl
cm4oXAorICAgICAgICAgICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgXAorICAgICAgICAg
ICAgICAgICAgICAgICN0ZXN0X25hbWUsIFwKKyAgICAgICAgICAgICAgICAgICAgICBuZXcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6VGVzdE1ldGFGYWN0b3J5PCBcCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8oXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSk+KCkpOyBcCiAgICAgICByZXR1cm4gMDsg
XAogICAgIH0gXAotICAgIHN0YXRpYyBpbnQgZ3Rlc3RfcmVnaXN0ZXJpbmdfZHVtbXlfOyBcCisg
ICAgc3RhdGljIGludCBndGVzdF9yZWdpc3RlcmluZ19kdW1teV8gR1RFU1RfQVRUUklCVVRFX1VO
VVNFRF87IFwKICAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFwKICAgICAgICAg
R1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSk7IFwKICAg
fTsgXApAQCAtMTM3NCwxNiArMTQwNiwzNiBAQCBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhv
bGRlcjEwPEdlbmVyYXRvcjEsIEdlbmVyYXRvcjIsIEdlbmVyYXRvcjMsCiAgICAgICBHVEVTVF9U
RVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpOjpBZGRUb1JlZ2lzdHJ5
KCk7IFwKICAgdm9pZCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0
X25hbWUpOjpUZXN0Qm9keSgpCiAKLSNkZWZpbmUgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AocHJl
Zml4LCB0ZXN0X2Nhc2VfbmFtZSwgZ2VuZXJhdG9yKSBcCisvLyBUaGUgb3B0aW9uYWwgbGFzdCBh
cmd1bWVudCB0byBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBhbGxvd3MgdGhlIHVzZXIKKy8vIHRv
IHNwZWNpZnkgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHRoYXQgZ2VuZXJhdGVzIGN1c3RvbSB0ZXN0
IG5hbWUgc3VmZml4ZXMKKy8vIGJhc2VkIG9uIHRoZSB0ZXN0IHBhcmFtZXRlcnMuIFRoZSBmdW5j
dGlvbiBzaG91bGQgYWNjZXB0IG9uZSBhcmd1bWVudCBvZgorLy8gdHlwZSB0ZXN0aW5nOjpUZXN0
UGFyYW1JbmZvPGNsYXNzIFBhcmFtVHlwZT4sIGFuZCByZXR1cm4gc3RkOjpzdHJpbmcuCisvLwor
Ly8gdGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSBpcyBhIGJ1aWx0aW4gdGVzdCBzdWZm
aXggZ2VuZXJhdG9yIHRoYXQKKy8vIHJldHVybnMgdGhlIHZhbHVlIG9mIHRlc3Rpbmc6OlByaW50
VG9TdHJpbmcoR2V0UGFyYW0oKSkuIEl0IGRvZXMgbm90IHdvcmsKKy8vIGZvciBzdGQ6OnN0cmlu
ZyBvciBDIHN0cmluZ3MuCisvLworLy8gTm90ZTogdGVzdCBuYW1lcyBtdXN0IGJlIG5vbi1lbXB0
eSwgdW5pcXVlLCBhbmQgbWF5IG9ubHkgY29udGFpbiBBU0NJSQorLy8gYWxwaGFudW1lcmljIGNo
YXJhY3RlcnMgb3IgdW5kZXJzY29yZS4KKworIyBkZWZpbmUgSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AocHJlZml4LCB0ZXN0X2Nhc2VfbmFtZSwgZ2VuZXJhdG9yLCAuLi4pIFwKICAgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlwZT4gXAog
ICAgICAgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRvcl8oKSB7
IHJldHVybiBnZW5lcmF0b3I7IH0gXAotICBpbnQgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9u
YW1lIyNfZHVtbXlfID0gXAorICA6OnN0ZDo6c3RyaW5nIGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nh
c2VfbmFtZSMjX0V2YWxHZW5lcmF0ZU5hbWVfKCBcCisgICAgICBjb25zdCA6OnRlc3Rpbmc6OlRl
c3RQYXJhbUluZm88dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlwZT4mIGluZm8pIHsgXAorICAgIHJl
dHVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpHZXRQYXJhbU5hbWVHZW48dGVzdF9jYXNlX25hbWU6
OlBhcmFtVHlwZT4gXAorICAgICAgICAoX19WQV9BUkdTX18pKGluZm8pOyBcCisgIH0gXAorICBp
bnQgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfZHVtbXlfIEdURVNUX0FUVFJJQlVU
RV9VTlVTRURfID0gXAogICAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+
cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkuIFwKICAgICAgICAgICBHZXRUZXN0Q2FzZVBh
dHRlcm5Ib2xkZXI8dGVzdF9jYXNlX25hbWU+KFwKLSAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9u
YW1lLCBfX0ZJTEVfXywgX19MSU5FX18pLT5BZGRUZXN0Q2FzZUluc3RhbnRpYXRpb24oXAotICAg
ICAgICAgICAgICAgICAgI3ByZWZpeCwgXAotICAgICAgICAgICAgICAgICAgJmd0ZXN0XyMjcHJl
Zml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0b3JfLCBcCi0gICAgICAgICAgICAgICAg
ICBfX0ZJTEVfXywgX19MSU5FX18pCisgICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgXAor
ICAgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpDb2RlTG9jYXRpb24oXAorICAgICAg
ICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKSktPkFkZFRlc3RDYXNlSW5zdGFudGlhdGlv
bihcCisgICAgICAgICAgICAgICAgICAgICAgI3ByZWZpeCwgXAorICAgICAgICAgICAgICAgICAg
ICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdG9yXywgXAor
ICAgICAgICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19F
dmFsR2VuZXJhdGVOYW1lXywgXAorICAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJ
TkVfXykKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1
bXAKaW5kZXggYTIzMTE4ODI3ZjFkNDgwZmJiYjgyNTJmMzQwZjBlYmVkYTM0NmUyNS4uMzA3OGQ2
ZDJhMTlkNzkxOGVkM2M3NTZhYmNmY2I0OTkzN2UxNmViMSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3Qu
aC5wdW1wCkBAIC00OSwxMCArNDksMTIgQEAgJHZhciBtYXh0dXBsZSA9IDEwICAkJCBNYXhpbXVt
IG51bWJlciBvZiBDb21iaW5lIGFyZ3VtZW50cyB3ZSB3YW50IHRvIHN1cHBvcnQuCiAjaWYgMAog
CiAvLyBUbyB3cml0ZSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLCBmaXJzdCB5b3Ugc2hvdWxk
IGRlZmluZSBhIGZpeHR1cmUKLS8vIGNsYXNzLiBJdCBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0
aW5nOjpUZXN0V2l0aFBhcmFtPFQ+LCB3aGVyZSBUIGlzCi0vLyB0aGUgdHlwZSBvZiB5b3VyIHBh
cmFtZXRlciB2YWx1ZXMuIFRlc3RXaXRoUGFyYW08VD4gaXMgaXRzZWxmIGRlcml2ZWQKLS8vIGZy
b20gdGVzdGluZzo6VGVzdC4gVCBjYW4gYmUgYW55IGNvcHlhYmxlIHR5cGUuIElmIGl0J3MgYSBy
YXcgcG9pbnRlciwKLS8vIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBsaWZl
c3BhbiBvZiB0aGUgcG9pbnRlZCB2YWx1ZXMuCisvLyBjbGFzcy4gSXQgaXMgdXN1YWxseSBkZXJp
dmVkIGZyb20gdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxUPiAoc2VlIGJlbG93IGZvcgorLy8gYW5v
dGhlciBpbmhlcml0YW5jZSBzY2hlbWUgdGhhdCdzIHNvbWV0aW1lcyB1c2VmdWwgaW4gbW9yZSBj
b21wbGljYXRlZAorLy8gY2xhc3MgaGllcmFyY2hpZXMpLCB3aGVyZSB0aGUgdHlwZSBvZiB5b3Vy
IHBhcmFtZXRlciB2YWx1ZXMuCisvLyBUZXN0V2l0aFBhcmFtPFQ+IGlzIGl0c2VsZiBkZXJpdmVk
IGZyb20gdGVzdGluZzo6VGVzdC4gVCBjYW4gYmUgYW55CisvLyBjb3B5YWJsZSB0eXBlLiBJZiBp
dCdzIGEgcmF3IHBvaW50ZXIsIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZQor
Ly8gbGlmZXNwYW4gb2YgdGhlIHBvaW50ZWQgdmFsdWVzLgogCiBjbGFzcyBGb29UZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBjaGFyKj4gewogICAvLyBZb3UgY2Fu
IGltcGxlbWVudCBhbGwgdGhlIHVzdWFsIGNsYXNzIGZpeHR1cmUgbWVtYmVycyBoZXJlLgpAQCAt
MTM0LDkgKzEzNiwxMiBAQCBJTlNUQU5USUFURV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFudGlh
dGlvbk5hbWUsIEZvb1Rlc3QsIFZhbHVlc0luKHBldHMpKTsKIC8vIGluIHRoZSBnaXZlbiB0ZXN0
IGNhc2UsIHdoZXRoZXIgdGhlaXIgZGVmaW5pdGlvbnMgY29tZSBiZWZvcmUgb3IKIC8vIEFGVEVS
IHRoZSBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBzdGF0ZW1lbnQuCiAvLwotLy8gUGxlYXNlIGFs
c28gbm90ZSB0aGF0IGdlbmVyYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIGluCi0vLyBS
VU5fQUxMX1RFU1RTKCksIGFmdGVyIG1haW4oKSBoYXMgc3RhcnRlZC4gVGhpcyBhbGxvd3MgZXZh
bHVhdGlvbiBvZgotLy8gcGFyYW1ldGVyIGxpc3QgYmFzZWQgb24gY29tbWFuZCBsaW5lIHBhcmFt
ZXRlcnMuCisvLyBQbGVhc2UgYWxzbyBub3RlIHRoYXQgZ2VuZXJhdG9yIGV4cHJlc3Npb25zIChp
bmNsdWRpbmcgcGFyYW1ldGVycyB0byB0aGUKKy8vIGdlbmVyYXRvcnMpIGFyZSBldmFsdWF0ZWQg
aW4gSW5pdEdvb2dsZVRlc3QoKSwgYWZ0ZXIgbWFpbigpIGhhcyBzdGFydGVkLgorLy8gVGhpcyBh
bGxvd3MgdGhlIHVzZXIgb24gb25lIGhhbmQsIHRvIGFkanVzdCBnZW5lcmF0b3IgcGFyYW1ldGVy
cyBpbiBvcmRlcgorLy8gdG8gZHluYW1pY2FsbHkgZGV0ZXJtaW5lIGEgc2V0IG9mIHRlc3RzIHRv
IHJ1biBhbmQgb24gdGhlIG90aGVyIGhhbmQsCisvLyBnaXZlIHRoZSB1c2VyIGEgY2hhbmNlIHRv
IGluc3BlY3QgdGhlIGdlbmVyYXRlZCB0ZXN0cyB3aXRoIEdvb2dsZSBUZXN0CisvLyByZWZsZWN0
aW9uIEFQSSBiZWZvcmUgUlVOX0FMTF9URVNUUygpIGlzIGV4ZWN1dGVkLgogLy8KIC8vIFlvdSBj
YW4gc2VlIHNhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYyBhbmQgc2FtcGxlcy9zYW1wbGU4X3Vu
aXR0ZXN0LmNjCiAvLyBmb3IgbW9yZSBleGFtcGxlcy4KQEAgLTE0NCwyMSArMTQ5LDQ3IEBAIElO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwg
VmFsdWVzSW4ocGV0cykpOwogLy8gSW4gdGhlIGZ1dHVyZSwgd2UgcGxhbiB0byBwdWJsaXNoIHRo
ZSBBUEkgZm9yIGRlZmluaW5nIG5ldyBwYXJhbWV0ZXIKIC8vIGdlbmVyYXRvcnMuIEJ1dCBmb3Ig
bm93IHRoaXMgaW50ZXJmYWNlIHJlbWFpbnMgcGFydCBvZiB0aGUgaW50ZXJuYWwKIC8vIGltcGxl
bWVudGF0aW9uIGFuZCBpcyBzdWJqZWN0IHRvIGNoYW5nZS4KKy8vCisvLworLy8gQSBwYXJhbWV0
ZXJpemVkIHRlc3QgZml4dHVyZSBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0IGFu
ZCBmcm9tCisvLyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD4sIHdoZXJlIFQgaXMgdGhl
IHR5cGUgb2YgdGhlIHBhcmFtZXRlcgorLy8gdmFsdWVzLiBJbmhlcml0aW5nIGZyb20gVGVzdFdp
dGhQYXJhbTxUPiBzYXRpc2ZpZXMgdGhhdCByZXF1aXJlbWVudCBiZWNhdXNlCisvLyBUZXN0V2l0
aFBhcmFtPFQ+IGluaGVyaXRzIGZyb20gYm90aCBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2Uu
IEluIG1vcmUKKy8vIGNvbXBsaWNhdGVkIGhpZXJhcmNoaWVzLCBob3dldmVyLCBpdCBpcyBvY2Nh
c2lvbmFsbHkgdXNlZnVsIHRvIGluaGVyaXQKKy8vIHNlcGFyYXRlbHkgZnJvbSBUZXN0IGFuZCBX
aXRoUGFyYW1JbnRlcmZhY2UuIEZvciBleGFtcGxlOgorCitjbGFzcyBCYXNlVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgeworICAvLyBZb3UgY2FuIGluaGVyaXQgYWxsIHRoZSB1c3VhbCBt
ZW1iZXJzIGZvciBhIG5vbi1wYXJhbWV0ZXJpemVkIHRlc3QKKyAgLy8gZml4dHVyZSBoZXJlLgor
fTsKKworY2xhc3MgRGVyaXZlZFRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsIHB1YmxpYyA6OnRlc3Rp
bmc6OldpdGhQYXJhbUludGVyZmFjZTxpbnQ+IHsKKyAgLy8gVGhlIHVzdWFsIHRlc3QgZml4dHVy
ZSBtZW1iZXJzIGdvIGhlcmUgdG9vLgorfTsKKworVEVTVF9GKEJhc2VUZXN0LCBIYXNGb28pIHsK
KyAgLy8gVGhpcyBpcyBhbiBvcmRpbmFyeSBub24tcGFyYW1ldGVyaXplZCB0ZXN0LgorfQorCitU
RVNUX1AoRGVyaXZlZFRlc3QsIERvZXNCbGFoKSB7CisgIC8vIEdldFBhcmFtIHdvcmtzIGp1c3Qg
dGhlIHNhbWUgaGVyZSBhcyBpZiB5b3UgaW5oZXJpdCBmcm9tIFRlc3RXaXRoUGFyYW0uCisgIEVY
UEVDVF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsKK30KIAogI2VuZGlmICAvLyAwCiAKLSNp
bmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAjaWYgIUdURVNUX09TX1NZTUJJQU4KLSNpbmNsdWRlIDx1
dGlsaXR5PgorIyBpbmNsdWRlIDx1dGlsaXR5PgogI2VuZGlmCiAKIC8vIHNjcmlwdHMvZnVzZV9n
dGVzdC5weSBkZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKIC8v
ICp1bmNvbmRpdGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUg
bW92ZWQKIC8vIGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9n
dGVzdC1wYXJhbS11dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC1nZW5lcmF0ZWQuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5h
bC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaCIKKyNpbmNs
dWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIgogCiAjaWYg
R1RFU1RfSEFTX1BBUkFNX1RFU1QKIApAQCAtMjc0LDExICszMDUsMTAgQEAgaW50ZXJuYWw6OlBh
cmFtR2VuZXJhdG9yPFQ+IFJhbmdlKFQgc3RhcnQsIFQgZW5kKSB7CiAvLwogdGVtcGxhdGUgPHR5
cGVuYW1lIEZvcndhcmRJdGVyYXRvcj4KIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjwKLSAgICB0
eXBlbmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5
cGU+IFZhbHVlc0luKAotICBGb3J3YXJkSXRlcmF0b3IgYmVnaW4sCi0gIEZvcndhcmRJdGVyYXRv
ciBlbmQpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndh
cmRJdGVyYXRvcj46OnZhbHVlX3R5cGUKLSAgICAgIFBhcmFtVHlwZTsKKyAgdHlwZW5hbWUgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVf
dHlwZT4KK1ZhbHVlc0luKEZvcndhcmRJdGVyYXRvciBiZWdpbiwgRm9yd2FyZEl0ZXJhdG9yIGVu
ZCkgeworICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJh
aXRzPEZvcndhcmRJdGVyYXRvcj4KKyAgICAgIDo6dmFsdWVfdHlwZSBQYXJhbVR5cGU7CiAgIHJl
dHVybiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8UGFyYW1UeXBlPigKICAgICAgIG5ldyBpbnRl
cm5hbDo6VmFsdWVzSW5JdGVyYXRvclJhbmdlR2VuZXJhdG9yPFBhcmFtVHlwZT4oYmVnaW4sIGVu
ZCkpOwogfQpAQCAtMzQ4LDcgKzM3OCw3IEBAIGlubGluZSBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0
b3I8Ym9vbD4gQm9vbCgpIHsKICAgcmV0dXJuIFZhbHVlcyhmYWxzZSwgdHJ1ZSk7CiB9CiAKLSNp
ZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNfQ09NQklORQogLy8gQ29tYmluZSgp
IGFsbG93cyB0aGUgdXNlciB0byBjb21iaW5lIHR3byBvciBtb3JlIHNlcXVlbmNlcyB0byBwcm9k
dWNlCiAvLyB2YWx1ZXMgb2YgYSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB0aG9zZSBzZXF1ZW5jZXMn
IGVsZW1lbnRzLgogLy8KQEAgLTM4NCw3ICs0MTQsNyBAQCBpbmxpbmUgaW50ZXJuYWw6OlBhcmFt
R2VuZXJhdG9yPGJvb2w+IEJvb2woKSB7CiAvLyBCb29sZWFuIGZsYWdzOgogLy8KIC8vIGNsYXNz
IEZsYWdEZXBlbmRlbnRUZXN0Ci0vLyAgICAgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJh
bTx0dXBsZShib29sLCBib29sKT4gPiB7CisvLyAgICAgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdp
dGhQYXJhbTx0dXBsZTxib29sLCBib29sPiA+IHsKIC8vICAgdmlydHVhbCB2b2lkIFNldFVwKCkg
ewogLy8gICAgIC8vIEFzc2lnbnMgZXh0ZXJuYWxfZmxhZ18xIGFuZCBleHRlcm5hbF9mbGFnXzIg
dmFsdWVzIGZyb20gdGhlIHR1cGxlLgogLy8gICAgIHRpZShleHRlcm5hbF9mbGFnXzEsIGV4dGVy
bmFsX2ZsYWdfMikgPSBHZXRQYXJhbSgpOwpAQCAtNDA5LDExICs0MzksMTEgQEAgaW50ZXJuYWw6
OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIkaTwkZm9yIGosIFtbR2VuZXJhdG9yJGpdXT4gQ29tYmlu
ZSgKIH0KIAogXV0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKKyMgZW5kaWYgIC8vIEdU
RVNUX0hBU19DT01CSU5FCiAKIAogCi0jZGVmaW5lIFRFU1RfUCh0ZXN0X2Nhc2VfbmFtZSwgdGVz
dF9uYW1lKSBcCisjIGRlZmluZSBURVNUX1AodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXAog
ICBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUp
IFwKICAgICAgIDogcHVibGljIHRlc3RfY2FzZV9uYW1lIHsgXAogICAgcHVibGljOiBcCkBAIC00
MjMsMTQgKzQ1MywxNyBAQCBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlciRpPCRmb3Ig
aiwgW1tHZW5lcmF0b3Ikal1dPiBDb21iaW5lKAogICAgIHN0YXRpYyBpbnQgQWRkVG9SZWdpc3Ry
eSgpIHsgXAogICAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+cGFyYW1l
dGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkuIFwKICAgICAgICAgICBHZXRUZXN0Q2FzZVBhdHRlcm5I
b2xkZXI8dGVzdF9jYXNlX25hbWU+KFwKLSAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBf
X0ZJTEVfXywgX19MSU5FX18pLT5BZGRUZXN0UGF0dGVybihcCi0gICAgICAgICAgICAgICAgICAj
dGVzdF9jYXNlX25hbWUsIFwKLSAgICAgICAgICAgICAgICAgICN0ZXN0X25hbWUsIFwKLSAgICAg
ICAgICAgICAgICAgIG5ldyA6OnRlc3Rpbmc6OmludGVybmFsOjpUZXN0TWV0YUZhY3Rvcnk8IFwK
LSAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9u
YW1lLCB0ZXN0X25hbWUpPigpKTsgXAorICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIFwK
KyAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKFwKKyAgICAg
ICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykpLT5BZGRUZXN0UGF0dGVybihcCisgICAg
ICAgICAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCisgICAgICAgICAgICAgICAgICAg
ICAgI3Rlc3RfbmFtZSwgXAorICAgICAgICAgICAgICAgICAgICAgIG5ldyA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpUZXN0TWV0YUZhY3Rvcnk8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR1RF
U1RfVEVTVF9DTEFTU19OQU1FXyhcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKT4oKSk7IFwKICAgICAgIHJldHVybiAwOyBcCiAgICAgfSBc
Ci0gICAgc3RhdGljIGludCBndGVzdF9yZWdpc3RlcmluZ19kdW1teV87IFwKKyAgICBzdGF0aWMg
aW50IGd0ZXN0X3JlZ2lzdGVyaW5nX2R1bW15XyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXzsgXAog
ICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oXAogICAgICAgICBHVEVTVF9URVNU
X0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpKTsgXAogICB9OyBcCkBAIC00
MzksMTYgKzQ3MiwzNiBAQCBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlciRpPCRmb3Ig
aiwgW1tHZW5lcmF0b3Ikal1dPiBDb21iaW5lKAogICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1F
Xyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKTo6QWRkVG9SZWdpc3RyeSgpOyBcCiAgIHZvaWQg
R1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKTo6VGVzdEJv
ZHkoKQogCi0jZGVmaW5lIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKHByZWZpeCwgdGVzdF9jYXNl
X25hbWUsIGdlbmVyYXRvcikgXAorLy8gVGhlIG9wdGlvbmFsIGxhc3QgYXJndW1lbnQgdG8gSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AgYWxsb3dzIHRoZSB1c2VyCisvLyB0byBzcGVjaWZ5IGEgZnVu
Y3Rpb24gb3IgZnVuY3RvciB0aGF0IGdlbmVyYXRlcyBjdXN0b20gdGVzdCBuYW1lIHN1ZmZpeGVz
CisvLyBiYXNlZCBvbiB0aGUgdGVzdCBwYXJhbWV0ZXJzLiBUaGUgZnVuY3Rpb24gc2hvdWxkIGFj
Y2VwdCBvbmUgYXJndW1lbnQgb2YKKy8vIHR5cGUgdGVzdGluZzo6VGVzdFBhcmFtSW5mbzxjbGFz
cyBQYXJhbVR5cGU+LCBhbmQgcmV0dXJuIHN0ZDo6c3RyaW5nLgorLy8KKy8vIHRlc3Rpbmc6OlBy
aW50VG9TdHJpbmdQYXJhbU5hbWUgaXMgYSBidWlsdGluIHRlc3Qgc3VmZml4IGdlbmVyYXRvciB0
aGF0CisvLyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0ZXN0aW5nOjpQcmludFRvU3RyaW5nKEdldFBh
cmFtKCkpLgorLy8KKy8vIE5vdGU6IHRlc3QgbmFtZXMgbXVzdCBiZSBub24tZW1wdHksIHVuaXF1
ZSwgYW5kIG1heSBvbmx5IGNvbnRhaW4gQVNDSUkKKy8vIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJz
IG9yIHVuZGVyc2NvcmUuIEJlY2F1c2UgUHJpbnRUb1N0cmluZyBhZGRzIHF1b3RlcworLy8gdG8g
c3RkOjpzdHJpbmcgYW5kIEMgc3RyaW5ncywgaXQgd29uJ3Qgd29yayBmb3IgdGhlc2UgdHlwZXMu
CisKKyMgZGVmaW5lIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKHByZWZpeCwgdGVzdF9jYXNlX25h
bWUsIGdlbmVyYXRvciwgLi4uKSBcCiAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJh
dG9yPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+IFwKICAgICAgIGd0ZXN0XyMjcHJlZml4IyN0
ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0b3JfKCkgeyByZXR1cm4gZ2VuZXJhdG9yOyB9IFwK
LSAgaW50IGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX2R1bW15XyA9IFwKKyAgOjpz
dGQ6OnN0cmluZyBndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdGVO
YW1lXyggXAorICAgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHRlc3RfY2FzZV9u
YW1lOjpQYXJhbVR5cGU+JiBpbmZvKSB7IFwKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5h
bDo6R2V0UGFyYW1OYW1lR2VuPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+IFwKKyAgICAgICAg
KF9fVkFfQVJHU19fKShpbmZvKTsgXAorICB9IFwKKyAgaW50IGd0ZXN0XyMjcHJlZml4IyN0ZXN0
X2Nhc2VfbmFtZSMjX2R1bW15XyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9IFwKICAgICAgIDo6
dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdp
c3RyeSgpLiBcCiAgICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVyPHRlc3RfY2FzZV9u
YW1lPihcCi0gICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgX19GSUxFX18sIF9fTElORV9f
KS0+QWRkVGVzdENhc2VJbnN0YW50aWF0aW9uKFwKLSAgICAgICAgICAgICAgICAgICNwcmVmaXgs
IFwKLSAgICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19F
dmFsR2VuZXJhdG9yXywgXAotICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKQor
ICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIFwKKyAgICAgICAgICAgICAgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKFwKKyAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBf
X0xJTkVfXykpLT5BZGRUZXN0Q2FzZUluc3RhbnRpYXRpb24oXAorICAgICAgICAgICAgICAgICAg
ICAgICNwcmVmaXgsIFwKKyAgICAgICAgICAgICAgICAgICAgICAmZ3Rlc3RfIyNwcmVmaXgjI3Rl
c3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRvcl8sIFwKKyAgICAgICAgICAgICAgICAgICAgICAm
Z3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRlTmFtZV8sIFwKKyAg
ICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pCiAKIH0gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTMzMTY0Y2IzOGFiNTA1OTYyZjc1
YjE1NzY1NGFlZWU1NDU5ZjNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wcmludGVycy5oCkBAIC0wLDAgKzEsOTkzIEBACisv
LyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRp
c3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
Ky8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9y
OiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisvLyBHb29nbGUgVGVzdCAtIFRoZSBH
b29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrCisvLworLy8gVGhpcyBmaWxlIGltcGxlbWVudHMg
YSB1bml2ZXJzYWwgdmFsdWUgcHJpbnRlciB0aGF0IGNhbiBwcmludCBhCisvLyB2YWx1ZSBvZiBh
bnkgdHlwZSBUOgorLy8KKy8vICAgdm9pZCA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxQ
cmludGVyPFQ+OjpQcmludCh2YWx1ZSwgb3N0cmVhbV9wdHIpOworLy8KKy8vIEEgdXNlciBjYW4g
dGVhY2ggdGhpcyBmdW5jdGlvbiBob3cgdG8gcHJpbnQgYSBjbGFzcyB0eXBlIFQgYnkKKy8vIGRl
ZmluaW5nIGVpdGhlciBvcGVyYXRvcjw8KCkgb3IgUHJpbnRUbygpIGluIHRoZSBuYW1lc3BhY2Ug
dGhhdAorLy8gZGVmaW5lcyBULiAgTW9yZSBzcGVjaWZpY2FsbHksIHRoZSBGSVJTVCBkZWZpbmVk
IGZ1bmN0aW9uIGluIHRoZQorLy8gZm9sbG93aW5nIGxpc3Qgd2lsbCBiZSB1c2VkIChhc3N1bWlu
ZyBUIGlzIGRlZmluZWQgaW4gbmFtZXNwYWNlCisvLyBmb28pOgorLy8KKy8vICAgMS4gZm9vOjpQ
cmludFRvKGNvbnN0IFQmLCBvc3RyZWFtKikKKy8vICAgMi4gb3BlcmF0b3I8PChvc3RyZWFtJiwg
Y29uc3QgVCYpIGRlZmluZWQgaW4gZWl0aGVyIGZvbyBvciB0aGUKKy8vICAgICAgZ2xvYmFsIG5h
bWVzcGFjZS4KKy8vCisvLyBJZiBub25lIG9mIHRoZSBhYm92ZSBpcyBkZWZpbmVkLCBpdCB3aWxs
IHByaW50IHRoZSBkZWJ1ZyBzdHJpbmcgb2YKKy8vIHRoZSB2YWx1ZSBpZiBpdCBpcyBhIHByb3Rv
Y29sIGJ1ZmZlciwgb3IgcHJpbnQgdGhlIHJhdyBieXRlcyBpbiB0aGUKKy8vIHZhbHVlIG90aGVy
d2lzZS4KKy8vCisvLyBUbyBhaWQgZGVidWdnaW5nOiB3aGVuIFQgaXMgYSByZWZlcmVuY2UgdHlw
ZSwgdGhlIGFkZHJlc3Mgb2YgdGhlCisvLyB2YWx1ZSBpcyBhbHNvIHByaW50ZWQ7IHdoZW4gVCBp
cyBhIChjb25zdCkgY2hhciBwb2ludGVyLCBib3RoIHRoZQorLy8gcG9pbnRlciB2YWx1ZSBhbmQg
dGhlIE5VTC10ZXJtaW5hdGVkIHN0cmluZyBpdCBwb2ludHMgdG8gYXJlCisvLyBwcmludGVkLgor
Ly8KKy8vIFdlIGFsc28gcHJvdmlkZSBzb21lIGNvbnZlbmllbnQgd3JhcHBlcnM6CisvLworLy8g
ICAvLyBQcmludHMgYSB2YWx1ZSB0byBhIHN0cmluZy4gIEZvciBhIChjb25zdCBvciBub3QpIGNo
YXIKKy8vICAgLy8gcG9pbnRlciwgdGhlIE5VTC10ZXJtaW5hdGVkIHN0cmluZyAoYnV0IG5vdCB0
aGUgcG9pbnRlcikgaXMKKy8vICAgLy8gcHJpbnRlZC4KKy8vICAgc3RkOjpzdHJpbmcgOjp0ZXN0
aW5nOjpQcmludFRvU3RyaW5nKGNvbnN0IFQmIHZhbHVlKTsKKy8vCisvLyAgIC8vIFByaW50cyBh
IHZhbHVlIHRlcnNlbHk6IGZvciBhIHJlZmVyZW5jZSB0eXBlLCB0aGUgcmVmZXJlbmNlZAorLy8g
ICAvLyB2YWx1ZSAoYnV0IG5vdCB0aGUgYWRkcmVzcykgaXMgcHJpbnRlZDsgZm9yIGEgKGNvbnN0
IG9yIG5vdCkgY2hhcgorLy8gICAvLyBwb2ludGVyLCB0aGUgTlVMLXRlcm1pbmF0ZWQgc3RyaW5n
IChidXQgbm90IHRoZSBwb2ludGVyKSBpcworLy8gICAvLyBwcmludGVkLgorLy8gICB2b2lkIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnQoY29uc3QgVCYgdmFsdWUsIG9z
dHJlYW0qKTsKKy8vCisvLyAgIC8vIFByaW50cyB2YWx1ZSB1c2luZyB0aGUgdHlwZSBpbmZlcnJl
ZCBieSB0aGUgY29tcGlsZXIuICBUaGUgZGlmZmVyZW5jZQorLy8gICAvLyBmcm9tIFVuaXZlcnNh
bFRlcnNlUHJpbnQoKSBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gcHJpbnRzIGJvdGggdGhlCisvLyAg
IC8vIHBvaW50ZXIgYW5kIHRoZSBOVUwtdGVybWluYXRlZCBzdHJpbmcgZm9yIGEgKGNvbnN0IG9y
IG5vdCkgY2hhciBwb2ludGVyLgorLy8gICB2b2lkIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZl
cnNhbFByaW50KGNvbnN0IFQmIHZhbHVlLCBvc3RyZWFtKik7CisvLworLy8gICAvLyBQcmludHMg
dGhlIGZpZWxkcyBvZiBhIHR1cGxlIHRlcnNlbHkgdG8gYSBzdHJpbmcgdmVjdG9yLCBvbmUKKy8v
ICAgLy8gZWxlbWVudCBmb3IgZWFjaCBmaWVsZC4gVHVwbGUgc3VwcG9ydCBtdXN0IGJlIGVuYWJs
ZWQgaW4KKy8vICAgLy8gZ3Rlc3QtcG9ydC5oLgorLy8gICBzdGQ6OnZlY3RvcjxzdHJpbmc+IFVu
aXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKKy8vICAgICAgIGNvbnN0IFR1
cGxlJiB2YWx1ZSk7CisvLworLy8gS25vd24gbGltaXRhdGlvbjoKKy8vCisvLyBUaGUgcHJpbnQg
cHJpbWl0aXZlcyBwcmludCB0aGUgZWxlbWVudHMgb2YgYW4gU1RMLXN0eWxlIGNvbnRhaW5lcgor
Ly8gdXNpbmcgdGhlIGNvbXBpbGVyLWluZmVycmVkIHR5cGUgb2YgKml0ZXIgd2hlcmUgaXRlciBp
cyBhCisvLyBjb25zdF9pdGVyYXRvciBvZiB0aGUgY29udGFpbmVyLiAgV2hlbiBjb25zdF9pdGVy
YXRvciBpcyBhbiBpbnB1dAorLy8gaXRlcmF0b3IgYnV0IG5vdCBhIGZvcndhcmQgaXRlcmF0b3Is
IHRoaXMgaW5mZXJyZWQgdHlwZSBtYXkgbm90CisvLyBtYXRjaCB2YWx1ZV90eXBlLCBhbmQgdGhl
IHByaW50IG91dHB1dCBtYXkgYmUgaW5jb3JyZWN0LiAgSW4KKy8vIHByYWN0aWNlLCB0aGlzIGlz
IHJhcmVseSBhIHByb2JsZW0gYXMgZm9yIG1vc3QgY29udGFpbmVycworLy8gY29uc3RfaXRlcmF0
b3IgaXMgYSBmb3J3YXJkIGl0ZXJhdG9yLiAgV2UnbGwgZml4IHRoaXMgaWYgdGhlcmUncyBhbgor
Ly8gYWN0dWFsIG5lZWQgZm9yIGl0LiAgTm90ZSB0aGF0IHRoaXMgZml4IGNhbm5vdCByZWx5IG9u
IHZhbHVlX3R5cGUKKy8vIGJlaW5nIGRlZmluZWQgYXMgbWFueSB1c2VyLWRlZmluZWQgY29udGFp
bmVyIHR5cGVzIGRvbid0IGhhdmUKKy8vIHZhbHVlX3R5cGUuCisKKyNpZm5kZWYgR1RFU1RfSU5D
TFVERV9HVEVTVF9HVEVTVF9QUklOVEVSU19IXworI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNU
X0dURVNUX1BSSU5URVJTX0hfCisKKyNpbmNsdWRlIDxvc3RyZWFtPiAgLy8gTk9MSU5UCisjaW5j
bHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNp
bmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgor
I2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgiCisKKyNpZiBHVEVTVF9I
QVNfU1REX1RVUExFXworIyBpbmNsdWRlIDx0dXBsZT4KKyNlbmRpZgorCituYW1lc3BhY2UgdGVz
dGluZyB7CisKKy8vIERlZmluaXRpb25zIGluIHRoZSAnaW50ZXJuYWwnIGFuZCAnaW50ZXJuYWwy
JyBuYW1lIHNwYWNlcyBhcmUKKy8vIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLiAg
RE8gTk9UIFVTRSBUSEVNIElOIFVTRVIgQ09ERSEKK25hbWVzcGFjZSBpbnRlcm5hbDIgeworCisv
LyBQcmludHMgdGhlIGdpdmVuIG51bWJlciBvZiBieXRlcyBpbiB0aGUgZ2l2ZW4gb2JqZWN0IHRv
IHRoZSBnaXZlbgorLy8gb3N0cmVhbS4KK0dURVNUX0FQSV8gdm9pZCBQcmludEJ5dGVzSW5PYmpl
Y3RUbyhjb25zdCB1bnNpZ25lZCBjaGFyKiBvYmpfYnl0ZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDo6c3RkOjpvc3RyZWFtKiBvcyk7CisKKy8vIEZvciBzZWxlY3Rpbmcgd2hp
Y2ggcHJpbnRlciB0byB1c2Ugd2hlbiBhIGdpdmVuIHR5cGUgaGFzIG5laXRoZXIgPDwKKy8vIG5v
ciBQcmludFRvKCkuCitlbnVtIFR5cGVLaW5kIHsKKyAga1Byb3RvYnVmLCAgICAgICAgICAgICAg
Ly8gYSBwcm90b2J1ZiB0eXBlCisgIGtDb252ZXJ0aWJsZVRvSW50ZWdlciwgIC8vIGEgdHlwZSBp
bXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRvIEJpZ2dlc3RJbnQKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gKGUuZy4gYSBuYW1lZCBvciB1bm5hbWVkIGVudW0gdHlwZSkKKyAga090aGVyVHlw
ZSAgICAgICAgICAgICAgLy8gYW55dGhpbmcgZWxzZQorfTsKKworLy8gVHlwZVdpdGhvdXRGb3Jt
YXR0ZXI8VCwga1R5cGVLaW5kPjo6UHJpbnRWYWx1ZSh2YWx1ZSwgb3MpIGlzIGNhbGxlZAorLy8g
YnkgdGhlIHVuaXZlcnNhbCBwcmludGVyIHRvIHByaW50IGEgdmFsdWUgb2YgdHlwZSBUIHdoZW4g
bmVpdGhlcgorLy8gb3BlcmF0b3I8PCBub3IgUHJpbnRUbygpIGlzIGRlZmluZWQgZm9yIFQsIHdo
ZXJlIGtUeXBlS2luZCBpcyB0aGUKKy8vICJraW5kIiBvZiBUIGFzIGRlZmluZWQgYnkgZW51bSBU
eXBlS2luZC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBUeXBlS2luZCBrVHlwZUtpbmQ+CitjbGFz
cyBUeXBlV2l0aG91dEZvcm1hdHRlciB7CisgcHVibGljOgorICAvLyBUaGlzIGRlZmF1bHQgdmVy
c2lvbiBpcyBjYWxsZWQgd2hlbiBrVHlwZUtpbmQgaXMga090aGVyVHlwZS4KKyAgc3RhdGljIHZv
aWQgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAg
UHJpbnRCeXRlc0luT2JqZWN0VG8ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
Kj4oJnZhbHVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodmFsdWUpLCBvcyk7
CisgIH0KK307CisKKy8vIFdlIHByaW50IGEgcHJvdG9idWYgdXNpbmcgaXRzIFNob3J0RGVidWdT
dHJpbmcoKSB3aGVuIHRoZSBzdHJpbmcKKy8vIGRvZXNuJ3QgZXhjZWVkIHRoaXMgbWFueSBjaGFy
YWN0ZXJzOyBvdGhlcndpc2Ugd2UgcHJpbnQgaXQgdXNpbmcKKy8vIERlYnVnU3RyaW5nKCkgZm9y
IGJldHRlciByZWFkYWJpbGl0eS4KK2NvbnN0IHNpemVfdCBrUHJvdG9idWZPbmVMaW5lck1heExl
bmd0aCA9IDUwOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVXaXRob3V0Rm9y
bWF0dGVyPFQsIGtQcm90b2J1Zj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnRWYWx1
ZShjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgY29uc3QgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6c3RyaW5nIHNob3J0X3N0ciA9IHZhbHVlLlNob3J0RGVidWdTdHJpbmco
KTsKKyAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmcgcHJldHR5X3N0ciA9Cisg
ICAgICAgIHNob3J0X3N0ci5sZW5ndGgoKSA8PSBrUHJvdG9idWZPbmVMaW5lck1heExlbmd0aCA/
CisgICAgICAgIHNob3J0X3N0ciA6ICgiXG4iICsgdmFsdWUuRGVidWdTdHJpbmcoKSk7CisgICAg
Km9zIDw8ICgiPCIgKyBwcmV0dHlfc3RyICsgIj4iKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitjbGFzcyBUeXBlV2l0aG91dEZvcm1hdHRlcjxULCBrQ29udmVydGlibGVUb0lu
dGVnZXI+IHsKKyBwdWJsaWM6CisgIC8vIFNpbmNlIFQgaGFzIG5vIDw8IG9wZXJhdG9yIG9yIFBy
aW50VG8oKSBidXQgY2FuIGJlIGltcGxpY2l0bHkKKyAgLy8gY29udmVydGVkIHRvIEJpZ2dlc3RJ
bnQsIHdlIHByaW50IGl0IGFzIGEgQmlnZ2VzdEludC4KKyAgLy8KKyAgLy8gTW9zdCBsaWtlbHkg
VCBpcyBhbiBlbnVtIHR5cGUgKGVpdGhlciBuYW1lZCBvciB1bm5hbWVkKSwgaW4gd2hpY2gKKyAg
Ly8gY2FzZSBwcmludGluZyBpdCBhcyBhbiBpbnRlZ2VyIGlzIHRoZSBkZXNpcmVkIGJlaGF2aW9y
LiAgSW4gY2FzZQorICAvLyBUIGlzIG5vdCBhbiBlbnVtLCBwcmludGluZyBpdCBhcyBhbiBpbnRl
Z2VyIGlzIHRoZSBiZXN0IHdlIGNhbiBkbworICAvLyBnaXZlbiB0aGF0IGl0IGhhcyBubyB1c2Vy
LWRlZmluZWQgcHJpbnRlci4KKyAgc3RhdGljIHZvaWQgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1
ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgY29uc3QgaW50ZXJuYWw6OkJpZ2dlc3RJbnQg
a0JpZ0ludCA9IHZhbHVlOworICAgICpvcyA8PCBrQmlnSW50OworICB9Cit9OworCisvLyBQcmlu
dHMgdGhlIGdpdmVuIHZhbHVlIHRvIHRoZSBnaXZlbiBvc3RyZWFtLiAgSWYgdGhlIHZhbHVlIGlz
IGEKKy8vIHByb3RvY29sIG1lc3NhZ2UsIGl0cyBkZWJ1ZyBzdHJpbmcgaXMgcHJpbnRlZDsgaWYg
aXQncyBhbiBlbnVtIG9yCisvLyBvZiBhIHR5cGUgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0byBC
aWdnZXN0SW50LCBpdCdzIHByaW50ZWQgYXMgYW4KKy8vIGludGVnZXI7IG90aGVyd2lzZSB0aGUg
Ynl0ZXMgaW4gdGhlIHZhbHVlIGFyZSBwcmludGVkLiAgVGhpcyBpcworLy8gd2hhdCBVbml2ZXJz
YWxQcmludGVyPFQ+OjpQcmludCgpIGRvZXMgd2hlbiBpdCBrbm93cyBub3RoaW5nIGFib3V0Cisv
LyB0eXBlIFQgYW5kIFQgaGFzIG5laXRoZXIgPDwgb3BlcmF0b3Igbm9yIFByaW50VG8oKS4KKy8v
CisvLyBBIHVzZXIgY2FuIG92ZXJyaWRlIHRoaXMgYmVoYXZpb3IgZm9yIGEgY2xhc3MgdHlwZSBG
b28gYnkgZGVmaW5pbmcKKy8vIGEgPDwgb3BlcmF0b3IgaW4gdGhlIG5hbWVzcGFjZSB3aGVyZSBG
b28gaXMgZGVmaW5lZC4KKy8vCisvLyBXZSBwdXQgdGhpcyBvcGVyYXRvciBpbiBuYW1lc3BhY2Ug
J2ludGVybmFsMicgaW5zdGVhZCBvZiAnaW50ZXJuYWwnCisvLyB0byBzaW1wbGlmeSB0aGUgaW1w
bGVtZW50YXRpb24sIGFzIG11Y2ggY29kZSBpbiAnaW50ZXJuYWwnIG5lZWRzIHRvCisvLyB1c2Ug
PDwgaW4gU1RMLCB3aGljaCB3b3VsZCBjb25mbGljdCB3aXRoIG91ciBvd24gPDwgd2VyZSBpdCBk
ZWZpbmVkCisvLyBpbiAnaW50ZXJuYWwnLgorLy8KKy8vIE5vdGUgdGhhdCB0aGlzIG9wZXJhdG9y
PDwgdGFrZXMgYSBnZW5lcmljIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLAorLy8gQ2hhclRyYWl0
cz4gdHlwZSBpbnN0ZWFkIG9mIHRoZSBtb3JlIHJlc3RyaWN0ZWQgc3RkOjpvc3RyZWFtLiAgSWYK
Ky8vIHdlIGRlZmluZSBpdCB0byB0YWtlIGFuIHN0ZDo6b3N0cmVhbSBpbnN0ZWFkLCB3ZSdsbCBn
ZXQgYW4KKy8vICJhbWJpZ3VvdXMgb3ZlcmxvYWRzIiBjb21waWxlciBlcnJvciB3aGVuIHRyeWlu
ZyB0byBwcmludCBhIHR5cGUKKy8vIEZvbyB0aGF0IHN1cHBvcnRzIHN0cmVhbWluZyB0byBzdGQ6
OmJhc2ljX29zdHJlYW08Q2hhciwKKy8vIENoYXJUcmFpdHM+LCBhcyB0aGUgY29tcGlsZXIgY2Fu
bm90IHRlbGwgd2hldGhlcgorLy8gb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mLCBjb25zdCBUJikg
b3IKKy8vIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4sIGNv
bnN0IEZvbyYpIGlzIG1vcmUKKy8vIHNwZWNpZmljLgordGVtcGxhdGUgPHR5cGVuYW1lIENoYXIs
IHR5cGVuYW1lIENoYXJUcmFpdHMsIHR5cGVuYW1lIFQ+Cis6OnN0ZDo6YmFzaWNfb3N0cmVhbTxD
aGFyLCBDaGFyVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICA6OnN0ZDo6YmFzaWNfb3N0cmVhbTxD
aGFyLCBDaGFyVHJhaXRzPiYgb3MsIGNvbnN0IFQmIHgpIHsKKyAgVHlwZVdpdGhvdXRGb3JtYXR0
ZXI8VCwKKyAgICAgIChpbnRlcm5hbDo6SXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZSA/IGtQ
cm90b2J1ZiA6CisgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTxjb25zdCBU
JiwgaW50ZXJuYWw6OkJpZ2dlc3RJbnQ+Ojp2YWx1ZSA/CisgICAgICAga0NvbnZlcnRpYmxlVG9J
bnRlZ2VyIDoga090aGVyVHlwZSk+OjpQcmludFZhbHVlKHgsICZvcyk7CisgIHJldHVybiBvczsK
K30KKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsMgorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcK
KworLy8gVGhpcyBuYW1lc3BhY2UgTVVTVCBOT1QgQkUgTkVTVEVEIElOIDo6dGVzdGluZywgb3Ig
dGhlIG5hbWUgbG9vay11cAorLy8gbWFnaWMgbmVlZGVkIGZvciBpbXBsZW1lbnRpbmcgVW5pdmVy
c2FsUHJpbnRlciB3b24ndCB3b3JrLgorbmFtZXNwYWNlIHRlc3RpbmdfaW50ZXJuYWwgeworCisv
LyBVc2VkIHRvIHByaW50IGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gU1RMLXN0eWxlIGNvbnRhaW5l
ciB3aGVuIHRoZQorLy8gdXNlciBkb2Vzbid0IGRlZmluZSBQcmludFRvKCkgZm9yIGl0LgordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIERlZmF1bHRQcmludE5vbkNvbnRhaW5lclRvKGNvbnN0
IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgLy8gV2l0aCB0aGUgZm9sbG93aW5n
IHN0YXRlbWVudCwgZHVyaW5nIHVucXVhbGlmaWVkIG5hbWUgbG9va3VwLAorICAvLyB0ZXN0aW5n
OjppbnRlcm5hbDI6Om9wZXJhdG9yPDwgYXBwZWFycyBhcyBpZiBpdCB3YXMgZGVjbGFyZWQgaW4K
KyAgLy8gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSB0aGF0IGNvbnRhaW5zIGJvdGgK
KyAgLy8gOjp0ZXN0aW5nX2ludGVybmFsIGFuZCA6OnRlc3Rpbmc6OmludGVybmFsMiwgaS5lLiB0
aGUgZ2xvYmFsCisgIC8vIG5hbWVzcGFjZS4gIEZvciBtb3JlIGRldGFpbHMsIHJlZmVyIHRvIHRo
ZSBDKysgU3RhbmRhcmQgc2VjdGlvbgorICAvLyA3LjMuNC0xIFtuYW1lc3BhY2UudWRpcl0uICBU
aGlzIGFsbG93cyB1cyB0byBmYWxsIGJhY2sgb250bworICAvLyB0ZXN0aW5nOjppbnRlcm5hbDI6
Om9wZXJhdG9yPDwgaW4gY2FzZSBUIGRvZXNuJ3QgY29tZSB3aXRoIGEgPDwKKyAgLy8gb3BlcmF0
b3IuCisgIC8vCisgIC8vIFdlIGNhbm5vdCB3cml0ZSAndXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5h
bDI6Om9wZXJhdG9yPDw7Jywgd2hpY2gKKyAgLy8gZ2NjIDMuMyBmYWlscyB0byBjb21waWxlIGR1
ZSB0byBhIGNvbXBpbGVyIGJ1Zy4KKyAgdXNpbmcgbmFtZXNwYWNlIDo6dGVzdGluZzo6aW50ZXJu
YWwyOyAgLy8gTk9MSU5UCisKKyAgLy8gQXNzdW1pbmcgVCBpcyBkZWZpbmVkIGluIG5hbWVzcGFj
ZSBmb28sIGluIHRoZSBuZXh0IHN0YXRlbWVudCwKKyAgLy8gdGhlIGNvbXBpbGVyIHdpbGwgY29u
c2lkZXIgYWxsIG9mOgorICAvLworICAvLyAgIDEuIGZvbzo6b3BlcmF0b3I8PCAodGhhbmtzIHRv
IEtvZW5pZyBsb29rLXVwKSwKKyAgLy8gICAyLiA6Om9wZXJhdG9yPDwgKGFzIHRoZSBjdXJyZW50
IG5hbWVzcGFjZSBpcyBlbmNsb3NlZCBpbiA6OiksCisgIC8vICAgMy4gdGVzdGluZzo6aW50ZXJu
YWwyOjpvcGVyYXRvcjw8ICh0aGFua3MgdG8gdGhlIHVzaW5nIHN0YXRlbWVudCBhYm92ZSkuCisg
IC8vCisgIC8vIFRoZSBvcGVyYXRvcjw8IHdob3NlIHR5cGUgbWF0Y2hlcyBUIGJlc3Qgd2lsbCBi
ZSBwaWNrZWQuCisgIC8vCisgIC8vIFdlIGRlbGliZXJhdGVseSBhbGxvdyAjMiB0byBiZSBhIGNh
bmRpZGF0ZSwgYXMgc29tZXRpbWVzIGl0J3MKKyAgLy8gaW1wb3NzaWJsZSB0byBkZWZpbmUgIzEg
KGUuZy4gd2hlbiBmb28gaXMgOjpzdGQsIGRlZmluaW5nCisgIC8vIGFueXRoaW5nIGluIGl0IGlz
IHVuZGVmaW5lZCBiZWhhdmlvciB1bmxlc3MgeW91IGFyZSBhIGNvbXBpbGVyCisgIC8vIHZlbmRv
ci4pLgorICAqb3MgPDwgdmFsdWU7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nX2ludGVy
bmFsCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIEZv
cm1hdEZvckNvbXBhcmlzb248VG9QcmludCwgT3RoZXJPcGVyYW5kPjo6Rm9ybWF0KHZhbHVlKSBm
b3JtYXRzIGEKKy8vIHZhbHVlIG9mIHR5cGUgVG9QcmludCB0aGF0IGlzIGFuIG9wZXJhbmQgb2Yg
YSBjb21wYXJpc29uIGFzc2VydGlvbgorLy8gKGUuZy4gQVNTRVJUX0VRKS4gIE90aGVyT3BlcmFu
ZCBpcyB0aGUgdHlwZSBvZiB0aGUgb3RoZXIgb3BlcmFuZCBpbgorLy8gdGhlIGNvbXBhcmlzb24s
IGFuZCBpcyB1c2VkIHRvIGhlbHAgZGV0ZXJtaW5lIHRoZSBiZXN0IHdheSB0bworLy8gZm9ybWF0
IHRoZSB2YWx1ZS4gIEluIHBhcnRpY3VsYXIsIHdoZW4gdGhlIHZhbHVlIGlzIGEgQyBzdHJpbmcK
Ky8vIChjaGFyIHBvaW50ZXIpIGFuZCB0aGUgb3RoZXIgb3BlcmFuZCBpcyBhbiBTVEwgc3RyaW5n
IG9iamVjdCwgd2UKKy8vIHdhbnQgdG8gZm9ybWF0IHRoZSBDIHN0cmluZyBhcyBhIHN0cmluZywg
c2luY2Ugd2Uga25vdyBpdCBpcworLy8gY29tcGFyZWQgYnkgdmFsdWUgd2l0aCB0aGUgc3RyaW5n
IG9iamVjdC4gIElmIHRoZSB2YWx1ZSBpcyBhIGNoYXIKKy8vIHBvaW50ZXIgYnV0IHRoZSBvdGhl
ciBvcGVyYW5kIGlzIG5vdCBhbiBTVEwgc3RyaW5nIG9iamVjdCwgd2UgZG9uJ3QKKy8vIGtub3cg
d2hldGhlciB0aGUgcG9pbnRlciBpcyBzdXBwb3NlZCB0byBwb2ludCB0byBhIE5VTC10ZXJtaW5h
dGVkCisvLyBzdHJpbmcsIGFuZCB0aHVzIHdhbnQgdG8gcHJpbnQgaXQgYXMgYSBwb2ludGVyIHRv
IGJlIHNhZmUuCisvLworLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElO
IEEgVVNFUiBQUk9HUkFNLgorCisvLyBUaGUgZGVmYXVsdCBjYXNlLgordGVtcGxhdGUgPHR5cGVu
YW1lIFRvUHJpbnQsIHR5cGVuYW1lIE90aGVyT3BlcmFuZD4KK2NsYXNzIEZvcm1hdEZvckNvbXBh
cmlzb24geworIHB1YmxpYzoKKyAgc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9ybWF0KGNvbnN0IFRv
UHJpbnQmIHZhbHVlKSB7CisgICAgcmV0dXJuIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyh2YWx1
ZSk7CisgIH0KK307CisKKy8vIEFycmF5LgordGVtcGxhdGUgPHR5cGVuYW1lIFRvUHJpbnQsIHNp
emVfdCBOLCB0eXBlbmFtZSBPdGhlck9wZXJhbmQ+CitjbGFzcyBGb3JtYXRGb3JDb21wYXJpc29u
PFRvUHJpbnRbTl0sIE90aGVyT3BlcmFuZD4geworIHB1YmxpYzoKKyAgc3RhdGljIDo6c3RkOjpz
dHJpbmcgRm9ybWF0KGNvbnN0IFRvUHJpbnQqIHZhbHVlKSB7CisgICAgcmV0dXJuIEZvcm1hdEZv
ckNvbXBhcmlzb248Y29uc3QgVG9QcmludCosIE90aGVyT3BlcmFuZD46OkZvcm1hdCh2YWx1ZSk7
CisgIH0KK307CisKKy8vIEJ5IGRlZmF1bHQsIHByaW50IEMgc3RyaW5nIGFzIHBvaW50ZXJzIHRv
IGJlIHNhZmUsIGFzIHdlIGRvbid0IGtub3cKKy8vIHdoZXRoZXIgdGhleSBhY3R1YWxseSBwb2lu
dCB0byBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZy4KKworI2RlZmluZSBHVEVTVF9JTVBMX0ZPUk1B
VF9DX1NUUklOR19BU19QT0lOVEVSXyhDaGFyVHlwZSkgICAgICAgICAgICAgICAgXAorICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgT3RoZXJPcGVyYW5kPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICBjbGFzcyBGb3JtYXRGb3JDb21wYXJpc29uPENoYXJUeXBlKiwgT3RoZXJP
cGVyYW5kPiB7ICAgICAgICAgICAgICAgICAgXAorICAgcHVibGljOiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRp
YyA6OnN0ZDo6c3RyaW5nIEZvcm1hdChDaGFyVHlwZSogdmFsdWUpIHsgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgcmV0dXJuIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhzdGF0aWNfY2Fz
dDxjb25zdCB2b2lkKj4odmFsdWUpKTsgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKK0dURVNU
X0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1BPSU5URVJfKGNoYXIpOworR1RFU1RfSU1QTF9GT1JN
QVRfQ19TVFJJTkdfQVNfUE9JTlRFUl8oY29uc3QgY2hhcik7CitHVEVTVF9JTVBMX0ZPUk1BVF9D
X1NUUklOR19BU19QT0lOVEVSXyh3Y2hhcl90KTsKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5H
X0FTX1BPSU5URVJfKGNvbnN0IHdjaGFyX3QpOworCisjdW5kZWYgR1RFU1RfSU1QTF9GT1JNQVRf
Q19TVFJJTkdfQVNfUE9JTlRFUl8KKworLy8gSWYgYSBDIHN0cmluZyBpcyBjb21wYXJlZCB3aXRo
IGFuIFNUTCBzdHJpbmcgb2JqZWN0LCB3ZSBrbm93IGl0J3MgbWVhbnQKKy8vIHRvIHBvaW50IHRv
IGEgTlVMLXRlcm1pbmF0ZWQgc3RyaW5nLCBhbmQgdGh1cyBjYW4gcHJpbnQgaXQgYXMgYSBzdHJp
bmcuCisKKyNkZWZpbmUgR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhDaGFy
VHlwZSwgT3RoZXJTdHJpbmdUeXBlKSBcCisgIHRlbXBsYXRlIDw+ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGNsYXNzIEZvcm1h
dEZvckNvbXBhcmlzb248Q2hhclR5cGUqLCBPdGhlclN0cmluZ1R5cGU+IHsgICAgICAgICAgICAg
ICBcCisgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9ybWF0KENo
YXJUeXBlKiB2YWx1ZSkgeyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICByZXR1cm4gOjp0
ZXN0aW5nOjpQcmludFRvU3RyaW5nKHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgIH0KKworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNf
U1RSSU5HXyhjaGFyLCA6OnN0ZDo6c3RyaW5nKTsKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5H
X0FTX1NUUklOR18oY29uc3QgY2hhciwgOjpzdGQ6OnN0cmluZyk7CisKKyNpZiBHVEVTVF9IQVNf
R0xPQkFMX1NUUklORworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjaGFy
LCA6OnN0cmluZyk7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNvbnN0
IGNoYXIsIDo6c3RyaW5nKTsKKyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5H
CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKHdjaGFyX3QsIDo6d3N0cmlu
Zyk7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNvbnN0IHdjaGFyX3Qs
IDo6d3N0cmluZyk7CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORworR1RFU1Rf
SU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyh3Y2hhcl90LCA6OnN0ZDo6d3N0cmluZyk7
CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNvbnN0IHdjaGFyX3QsIDo6
c3RkOjp3c3RyaW5nKTsKKyNlbmRpZgorCisjdW5kZWYgR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJ
TkdfQVNfU1RSSU5HXworCisvLyBGb3JtYXRzIGEgY29tcGFyaXNvbiBhc3NlcnRpb24gKGUuZy4g
QVNTRVJUX0VRLCBFWFBFQ1RfTFQsIGFuZCBldGMpCisvLyBvcGVyYW5kIHRvIGJlIHVzZWQgaW4g
YSBmYWlsdXJlIG1lc3NhZ2UuICBUaGUgdHlwZSAoYnV0IG5vdCB2YWx1ZSkKKy8vIG9mIHRoZSBv
dGhlciBvcGVyYW5kIG1heSBhZmZlY3QgdGhlIGZvcm1hdC4gIFRoaXMgYWxsb3dzIHVzIHRvCisv
LyBwcmludCBhIGNoYXIqIGFzIGEgcmF3IHBvaW50ZXIgd2hlbiBpdCBpcyBjb21wYXJlZCBhZ2Fp
bnN0IGFub3RoZXIKKy8vIGNoYXIqIG9yIHZvaWQqLCBhbmQgcHJpbnQgaXQgYXMgYSBDIHN0cmlu
ZyB3aGVuIGl0IGlzIGNvbXBhcmVkCisvLyBhZ2FpbnN0IGFuIHN0ZDo6c3RyaW5nIG9iamVjdCwg
Zm9yIGV4YW1wbGUuCisvLworLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNF
IElOIEEgVVNFUiBQUk9HUkFNLgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4K
K3N0ZDo6c3RyaW5nIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSgKKyAgICBjb25z
dCBUMSYgdmFsdWUsIGNvbnN0IFQyJiAvKiBvdGhlcl9vcGVyYW5kICovKSB7CisgIHJldHVybiBG
b3JtYXRGb3JDb21wYXJpc29uPFQxLCBUMj46OkZvcm1hdCh2YWx1ZSk7Cit9CisKKy8vIFVuaXZl
cnNhbFByaW50ZXI8VD46OlByaW50KHZhbHVlLCBvc3RyZWFtX3B0cikgcHJpbnRzIHRoZSBnaXZl
bgorLy8gdmFsdWUgdG8gdGhlIGdpdmVuIG9zdHJlYW0uICBUaGUgY2FsbGVyIG11c3QgZW5zdXJl
IHRoYXQKKy8vICdvc3RyZWFtX3B0cicgaXMgbm90IE5VTEwsIG9yIHRoZSBiZWhhdmlvciBpcyB1
bmRlZmluZWQuCisvLworLy8gV2UgZGVmaW5lIFVuaXZlcnNhbFByaW50ZXIgYXMgYSBjbGFzcyB0
ZW1wbGF0ZSAoYXMgb3Bwb3NlZCB0byBhCisvLyBmdW5jdGlvbiB0ZW1wbGF0ZSksIGFzIHdlIG5l
ZWQgdG8gcGFydGlhbGx5IHNwZWNpYWxpemUgaXQgZm9yCisvLyByZWZlcmVuY2UgdHlwZXMsIHdo
aWNoIGNhbm5vdCBiZSBkb25lIHdpdGggZnVuY3Rpb24gdGVtcGxhdGVzLgordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitjbGFzcyBVbml2ZXJzYWxQcmludGVyOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK3ZvaWQgVW5pdmVyc2FsUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBv
cyk7CisKKy8vIFVzZWQgdG8gcHJpbnQgYW4gU1RMLXN0eWxlIGNvbnRhaW5lciB3aGVuIHRoZSB1
c2VyIGRvZXNuJ3QgZGVmaW5lCisvLyBhIFByaW50VG8oKSBmb3IgaXQuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQz4KK3ZvaWQgRGVmYXVsdFByaW50VG8oSXNDb250YWluZXIgLyogZHVtbXkgKi8sCisg
ICAgICAgICAgICAgICAgICAgIGZhbHNlX3R5cGUgLyogaXMgbm90IGEgcG9pbnRlciAqLywKKyAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQyYgY29udGFpbmVyLCA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgY29uc3Qgc2l6ZV90IGtNYXhDb3VudCA9IDMyOyAgLy8gVGhlIG1heGltdW0gbnVtYmVy
IG9mIGVsZW1lbnRzIHRvIHByaW50LgorICAqb3MgPDwgJ3snOworICBzaXplX3QgY291bnQgPSAw
OworICBmb3IgKHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29udGFpbmVyLmJlZ2lu
KCk7CisgICAgICAgaXQgIT0gY29udGFpbmVyLmVuZCgpOyArK2l0LCArK2NvdW50KSB7CisgICAg
aWYgKGNvdW50ID4gMCkgeworICAgICAgKm9zIDw8ICcsJzsKKyAgICAgIGlmIChjb3VudCA9PSBr
TWF4Q291bnQpIHsgIC8vIEVub3VnaCBoYXMgYmVlbiBwcmludGVkLgorICAgICAgICAqb3MgPDwg
IiAuLi4iOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgKm9zIDw8ICcgJzsK
KyAgICAvLyBXZSBjYW5ub3QgY2FsbCBQcmludFRvKCppdCwgb3MpIGhlcmUgYXMgUHJpbnRUbygp
IGRvZXNuJ3QKKyAgICAvLyBoYW5kbGUgKml0IGJlaW5nIGEgbmF0aXZlIGFycmF5LgorICAgIGlu
dGVybmFsOjpVbml2ZXJzYWxQcmludCgqaXQsIG9zKTsKKyAgfQorCisgIGlmIChjb3VudCA+IDAp
IHsKKyAgICAqb3MgPDwgJyAnOworICB9CisgICpvcyA8PCAnfSc7Cit9CisKKy8vIFVzZWQgdG8g
cHJpbnQgYSBwb2ludGVyIHRoYXQgaXMgbmVpdGhlciBhIGNoYXIgcG9pbnRlciBub3IgYSBtZW1i
ZXIKKy8vIHBvaW50ZXIsIHdoZW4gdGhlIHVzZXIgZG9lc24ndCBkZWZpbmUgUHJpbnRUbygpIGZv
ciBpdC4gIChBIG1lbWJlcgorLy8gdmFyaWFibGUgcG9pbnRlciBvciBtZW1iZXIgZnVuY3Rpb24g
cG9pbnRlciBkb2Vzbid0IHJlYWxseSBwb2ludCB0bworLy8gYSBsb2NhdGlvbiBpbiB0aGUgYWRk
cmVzcyBzcGFjZS4gIFRoZWlyIHJlcHJlc2VudGF0aW9uIGlzCisvLyBpbXBsZW1lbnRhdGlvbi1k
ZWZpbmVkLiAgVGhlcmVmb3JlIHRoZXkgd2lsbCBiZSBwcmludGVkIGFzIHJhdworLy8gYnl0ZXMu
KQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIERlZmF1bHRQcmludFRvKElzTm90Q29udGFp
bmVyIC8qIGR1bW15ICovLAorICAgICAgICAgICAgICAgICAgICB0cnVlX3R5cGUgLyogaXMgYSBw
b2ludGVyICovLAorICAgICAgICAgICAgICAgICAgICBUKiBwLCA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgaWYgKHAgPT0gTlVMTCkgeworICAgICpvcyA8PCAiTlVMTCI7CisgIH0gZWxzZSB7Cisg
ICAgLy8gQysrIGRvZXNuJ3QgYWxsb3cgY2FzdGluZyBmcm9tIGEgZnVuY3Rpb24gcG9pbnRlciB0
byBhbnkgb2JqZWN0CisgICAgLy8gcG9pbnRlci4KKyAgICAvLworICAgIC8vIElzVHJ1ZSgpIHNp
bGVuY2VzIHdhcm5pbmdzOiAiQ29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlIiwKKyAgICAvLyAidW5y
ZWFjaGFibGUgY29kZSIuCisgICAgaWYgKElzVHJ1ZShJbXBsaWNpdGx5Q29udmVydGlibGU8VCos
IGNvbnN0IHZvaWQqPjo6dmFsdWUpKSB7CisgICAgICAvLyBUIGlzIG5vdCBhIGZ1bmN0aW9uIHR5
cGUuICBXZSBqdXN0IGNhbGwgPDwgdG8gcHJpbnQgcCwKKyAgICAgIC8vIHJlbHlpbmcgb24gQURM
IHRvIHBpY2sgdXAgdXNlci1kZWZpbmVkIDw8IGZvciB0aGVpciBwb2ludGVyCisgICAgICAvLyB0
eXBlcywgaWYgYW55LgorICAgICAgKm9zIDw8IHA7CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIFQg
aXMgYSBmdW5jdGlvbiB0eXBlLCBzbyAnKm9zIDw8IHAnIGRvZXNuJ3QgZG8gd2hhdCB3ZSB3YW50
CisgICAgICAvLyAoaXQganVzdCBwcmludHMgcCBhcyBib29sKS4gIFdlIHdhbnQgdG8gcHJpbnQg
cCBhcyBhIGNvbnN0CisgICAgICAvLyB2b2lkKi4gIEhvd2V2ZXIsIHdlIGNhbm5vdCBjYXN0IGl0
IHRvIGNvbnN0IHZvaWQqIGRpcmVjdGx5LAorICAgICAgLy8gZXZlbiB1c2luZyByZWludGVycHJl
dF9jYXN0LCBhcyBlYXJsaWVyIHZlcnNpb25zIG9mIGdjYworICAgICAgLy8gKGUuZy4gMy40LjUp
IGNhbm5vdCBjb21waWxlIHRoZSBjYXN0IHdoZW4gcCBpcyBhIGZ1bmN0aW9uCisgICAgICAvLyBw
b2ludGVyLiAgQ2FzdGluZyB0byBVSW50NjQgZmlyc3Qgc29sdmVzIHRoZSBwcm9ibGVtLgorICAg
ICAgKm9zIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KAorICAgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8aW50ZXJuYWw6OlVJbnQ2ND4ocCkpOworICAgIH0KKyAgfQorfQorCisvLyBV
c2VkIHRvIHByaW50IGEgbm9uLWNvbnRhaW5lciwgbm9uLXBvaW50ZXIgdmFsdWUgd2hlbiB0aGUg
dXNlcgorLy8gZG9lc24ndCBkZWZpbmUgUHJpbnRUbygpIGZvciBpdC4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgordm9pZCBEZWZhdWx0UHJpbnRUbyhJc05vdENvbnRhaW5lciAvKiBkdW1teSAqLywK
KyAgICAgICAgICAgICAgICAgICAgZmFsc2VfdHlwZSAvKiBpcyBub3QgYSBwb2ludGVyICovLAor
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7
CisgIDo6dGVzdGluZ19pbnRlcm5hbDo6RGVmYXVsdFByaW50Tm9uQ29udGFpbmVyVG8odmFsdWUs
IG9zKTsKK30KKworLy8gUHJpbnRzIHRoZSBnaXZlbiB2YWx1ZSB1c2luZyB0aGUgPDwgb3BlcmF0
b3IgaWYgaXQgaGFzIG9uZTsKKy8vIG90aGVyd2lzZSBwcmludHMgdGhlIGJ5dGVzIGluIGl0LiAg
VGhpcyBpcyB3aGF0CisvLyBVbml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCgpIGRvZXMgd2hlbiBQ
cmludFRvKCkgaXMgbm90IHNwZWNpYWxpemVkCisvLyBvciBvdmVybG9hZGVkIGZvciB0eXBlIFQu
CisvLworLy8gQSB1c2VyIGNhbiBvdmVycmlkZSB0aGlzIGJlaGF2aW9yIGZvciBhIGNsYXNzIHR5
cGUgRm9vIGJ5IGRlZmluaW5nCisvLyBhbiBvdmVybG9hZCBvZiBQcmludFRvKCkgaW4gdGhlIG5h
bWVzcGFjZSB3aGVyZSBGb28gaXMgZGVmaW5lZC4gIFdlCisvLyBnaXZlIHRoZSB1c2VyIHRoaXMg
b3B0aW9uIGFzIHNvbWV0aW1lcyBkZWZpbmluZyBhIDw8IG9wZXJhdG9yIGZvcgorLy8gRm9vIGlz
IG5vdCBkZXNpcmFibGUgKGUuZy4gdGhlIGNvZGluZyBzdHlsZSBtYXkgcHJldmVudCBkb2luZyBp
dCwKKy8vIG9yIHRoZXJlIGlzIGFscmVhZHkgYSA8PCBvcGVyYXRvciBidXQgaXQgZG9lc24ndCBk
byB3aGF0IHRoZSB1c2VyCisvLyB3YW50cykuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQg
UHJpbnRUbyhjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIC8vIERlZmF1
bHRQcmludFRvKCkgaXMgb3ZlcmxvYWRlZC4gIFRoZSB0eXBlIG9mIGl0cyBmaXJzdCB0d28KKyAg
Ly8gYXJndW1lbnRzIGRldGVybWluZSB3aGljaCB2ZXJzaW9uIHdpbGwgYmUgcGlja2VkLiAgSWYg
VCBpcyBhbgorICAvLyBTVEwtc3R5bGUgY29udGFpbmVyLCB0aGUgdmVyc2lvbiBmb3IgY29udGFp
bmVyIHdpbGwgYmUgY2FsbGVkOyBpZgorICAvLyBUIGlzIGEgcG9pbnRlciwgdGhlIHBvaW50ZXIg
dmVyc2lvbiB3aWxsIGJlIGNhbGxlZDsgb3RoZXJ3aXNlIHRoZQorICAvLyBnZW5lcmljIHZlcnNp
b24gd2lsbCBiZSBjYWxsZWQuCisgIC8vCisgIC8vIE5vdGUgdGhhdCB3ZSBjaGVjayBmb3IgY29u
dGFpbmVyIHR5cGVzIGhlcmUsIHByaW9yIHRvIHdlIGNoZWNrCisgIC8vIGZvciBwcm90b2NvbCBt
ZXNzYWdlIHR5cGVzIGluIG91ciBvcGVyYXRvcjw8LiAgVGhlIHJhdGlvbmFsZSBpczoKKyAgLy8K
KyAgLy8gRm9yIHByb3RvY29sIG1lc3NhZ2VzLCB3ZSB3YW50IHRvIGdpdmUgcGVvcGxlIGEgY2hh
bmNlIHRvCisgIC8vIG92ZXJyaWRlIEdvb2dsZSBNb2NrJ3MgZm9ybWF0IGJ5IGRlZmluaW5nIGEg
UHJpbnRUbygpIG9yCisgIC8vIG9wZXJhdG9yPDwuICBGb3IgU1RMIGNvbnRhaW5lcnMsIG90aGVy
IGZvcm1hdHMgY2FuIGJlCisgIC8vIGluY29tcGF0aWJsZSB3aXRoIEdvb2dsZSBNb2NrJ3MgZm9y
bWF0IGZvciB0aGUgY29udGFpbmVyCisgIC8vIGVsZW1lbnRzOyB0aGVyZWZvcmUgd2UgY2hlY2sg
Zm9yIGNvbnRhaW5lciB0eXBlcyBoZXJlIHRvIGVuc3VyZQorICAvLyB0aGF0IG91ciBmb3JtYXQg
aXMgdXNlZC4KKyAgLy8KKyAgLy8gVGhlIHNlY29uZCBhcmd1bWVudCBvZiBEZWZhdWx0UHJpbnRU
bygpIGlzIG5lZWRlZCB0byBieXBhc3MgYSBidWcKKyAgLy8gaW4gU3ltYmlhbidzIEMrKyBjb21w
aWxlciB0aGF0IHByZXZlbnRzIGl0IGZyb20gcGlja2luZyB0aGUgcmlnaHQKKyAgLy8gb3Zlcmxv
YWQgYmV0d2VlbjoKKyAgLy8KKyAgLy8gICBQcmludFRvKGNvbnN0IFQmIHgsIC4uLik7CisgIC8v
ICAgUHJpbnRUbyhUKiB4LCAuLi4pOworICBEZWZhdWx0UHJpbnRUbyhJc0NvbnRhaW5lclRlc3Q8
VD4oMCksIGlzX3BvaW50ZXI8VD4oKSwgdmFsdWUsIG9zKTsKK30KKworLy8gVGhlIGZvbGxvd2lu
ZyBsaXN0IG9mIFByaW50VG8oKSBvdmVybG9hZHMgdGVsbHMKKy8vIFVuaXZlcnNhbFByaW50ZXI8
VD46OlByaW50KCkgaG93IHRvIHByaW50IHN0YW5kYXJkIHR5cGVzIChidWlsdC1pbgorLy8gdHlw
ZXMsIHN0cmluZ3MsIHBsYWluIGFycmF5cywgYW5kIHBvaW50ZXJzKS4KKworLy8gT3ZlcmxvYWRz
IGZvciB2YXJpb3VzIGNoYXIgdHlwZXMuCitHVEVTVF9BUElfIHZvaWQgUHJpbnRUbyh1bnNpZ25l
ZCBjaGFyIGMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7CitHVEVTVF9BUElfIHZvaWQgUHJpbnRUbyhz
aWduZWQgY2hhciBjLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhj
aGFyIGMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAvLyBXaGVuIHByaW50aW5nIGEgcGxhaW4g
Y2hhciwgd2UgYWx3YXlzIHRyZWF0IGl0IGFzIHVuc2lnbmVkLiAgVGhpcworICAvLyB3YXksIHRo
ZSBvdXRwdXQgd29uJ3QgYmUgYWZmZWN0ZWQgYnkgd2hldGhlciB0aGUgY29tcGlsZXIgdGhpbmtz
CisgIC8vIGNoYXIgaXMgc2lnbmVkIG9yIG5vdC4KKyAgUHJpbnRUbyhzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyPihjKSwgb3MpOworfQorCisvLyBPdmVybG9hZHMgZm9yIG90aGVyIHNpbXBsZSBi
dWlsdC1pbiB0eXBlcy4KK2lubGluZSB2b2lkIFByaW50VG8oYm9vbCB4LCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgKm9zIDw8ICh4ID8gInRydWUiIDogImZhbHNlIik7Cit9CisKKy8vIE92ZXJs
b2FkIGZvciB3Y2hhcl90IHR5cGUuCisvLyBQcmludHMgYSB3Y2hhcl90IGFzIGEgc3ltYm9sIGlm
IGl0IGlzIHByaW50YWJsZSBvciBhcyBpdHMgaW50ZXJuYWwKKy8vIGNvZGUgb3RoZXJ3aXNlIGFu
ZCBhbHNvIGFzIGl0cyBkZWNpbWFsIGNvZGUgKGV4Y2VwdCBmb3IgTCdcMCcpLgorLy8gVGhlIEwn
XDAnIGNoYXIgaXMgcHJpbnRlZCBhcyAiTCdcXDAnIi4gVGhlIGRlY2ltYWwgY29kZSBpcyBwcmlu
dGVkCisvLyBhcyBzaWduZWQgaW50ZWdlciB3aGVuIHdjaGFyX3QgaXMgaW1wbGVtZW50ZWQgYnkg
dGhlIGNvbXBpbGVyCisvLyBhcyBhIHNpZ25lZCB0eXBlIGFuZCBpcyBwcmludGVkIGFzIGFuIHVu
c2lnbmVkIGludGVnZXIgd2hlbiB3Y2hhcl90CisvLyBpcyBpbXBsZW1lbnRlZCBhcyBhbiB1bnNp
Z25lZCB0eXBlLgorR1RFU1RfQVBJXyB2b2lkIFByaW50VG8od2NoYXJfdCB3YywgOjpzdGQ6Om9z
dHJlYW0qIG9zKTsKKworLy8gT3ZlcmxvYWRzIGZvciBDIHN0cmluZ3MuCitHVEVTVF9BUElfIHZv
aWQgUHJpbnRUbyhjb25zdCBjaGFyKiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZv
aWQgUHJpbnRUbyhjaGFyKiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUbyhJbXBs
aWNpdENhc3RfPGNvbnN0IGNoYXIqPihzKSwgb3MpOworfQorCisvLyBzaWduZWQvdW5zaWduZWQg
Y2hhciBpcyBvZnRlbiB1c2VkIGZvciByZXByZXNlbnRpbmcgYmluYXJ5IGRhdGEsIHNvCisvLyB3
ZSBwcmludCBwb2ludGVycyB0byBpdCBhcyB2b2lkKiB0byBiZSBzYWZlLgoraW5saW5lIHZvaWQg
UHJpbnRUbyhjb25zdCBzaWduZWQgY2hhciogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFBy
aW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocyksIG9zKTsKK30KK2lubGluZSB2b2lk
IFByaW50VG8oc2lnbmVkIGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFRv
KEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMpLCBvcyk7Cit9CitpbmxpbmUgdm9pZCBQcmlu
dFRvKGNvbnN0IHVuc2lnbmVkIGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmlu
dFRvKEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMpLCBvcyk7Cit9CitpbmxpbmUgdm9pZCBQ
cmludFRvKHVuc2lnbmVkIGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFRv
KEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMpLCBvcyk7Cit9CisKKy8vIE1TVkMgY2FuIGJl
IGNvbmZpZ3VyZWQgdG8gZGVmaW5lIHdjaGFyX3QgYXMgYSB0eXBlZGVmIG9mIHVuc2lnbmVkCisv
LyBzaG9ydC4gIEl0IGRlZmluZXMgX05BVElWRV9XQ0hBUl9UX0RFRklORUQgd2hlbiB3Y2hhcl90
IGlzIGEgbmF0aXZlCisvLyB0eXBlLiAgV2hlbiB3Y2hhcl90IGlzIGEgdHlwZWRlZiwgZGVmaW5p
bmcgYW4gb3ZlcmxvYWQgZm9yIGNvbnN0CisvLyB3Y2hhcl90KiB3b3VsZCBjYXVzZSB1bnNpZ25l
ZCBzaG9ydCogYmUgcHJpbnRlZCBhcyBhIHdpZGUgc3RyaW5nLAorLy8gcG9zc2libHkgY2F1c2lu
ZyBpbnZhbGlkIG1lbW9yeSBhY2Nlc3Nlcy4KKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVm
aW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkKKy8vIE92ZXJsb2FkcyBmb3Igd2lkZSBDIHN0
cmluZ3MKK0dURVNUX0FQSV8gdm9pZCBQcmludFRvKGNvbnN0IHdjaGFyX3QqIHMsIDo6c3RkOjpv
c3RyZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRvKHdjaGFyX3QqIHMsIDo6c3RkOjpvc3Ry
ZWFtKiBvcykgeworICBQcmludFRvKEltcGxpY2l0Q2FzdF88Y29uc3Qgd2NoYXJfdCo+KHMpLCBv
cyk7Cit9CisjZW5kaWYKKworLy8gT3ZlcmxvYWQgZm9yIEMgYXJyYXlzLiAgTXVsdGktZGltZW5z
aW9uYWwgYXJyYXlzIGFyZSBwcmludGVkCisvLyBwcm9wZXJseS4KKworLy8gUHJpbnRzIHRoZSBn
aXZlbiBudW1iZXIgb2YgZWxlbWVudHMgaW4gYW4gYXJyYXksIHdpdGhvdXQgcHJpbnRpbmcKKy8v
IHRoZSBjdXJseSBicmFjZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgUHJpbnRSYXdB
cnJheVRvKGNvbnN0IFQgYVtdLCBzaXplX3QgY291bnQsIDo6c3RkOjpvc3RyZWFtKiBvcykgewor
ICBVbml2ZXJzYWxQcmludChhWzBdLCBvcyk7CisgIGZvciAoc2l6ZV90IGkgPSAxOyBpICE9IGNv
dW50OyBpKyspIHsKKyAgICAqb3MgPDwgIiwgIjsKKyAgICBVbml2ZXJzYWxQcmludChhW2ldLCBv
cyk7CisgIH0KK30KKworLy8gT3ZlcmxvYWRzIGZvciA6OnN0cmluZyBhbmQgOjpzdGQ6OnN0cmlu
Zy4KKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworR1RFU1RfQVBJXyB2b2lkIFByaW50U3Ry
aW5nVG8oY29uc3QgOjpzdHJpbmcmcywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKK2lubGluZSB2b2lk
IFByaW50VG8oY29uc3QgOjpzdHJpbmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmlu
dFN0cmluZ1RvKHMsIG9zKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcK
KworR1RFU1RfQVBJXyB2b2lkIFByaW50U3RyaW5nVG8oY29uc3QgOjpzdGQ6OnN0cmluZyZzLCA6
OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6c3Ry
aW5nJiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRTdHJpbmdUbyhzLCBvcyk7Cit9
CisKKy8vIE92ZXJsb2FkcyBmb3IgOjp3c3RyaW5nIGFuZCA6OnN0ZDo6d3N0cmluZy4KKyNpZiBH
VEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKK0dURVNUX0FQSV8gdm9pZCBQcmludFdpZGVTdHJpbmdU
byhjb25zdCA6OndzdHJpbmcmcywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKK2lubGluZSB2b2lkIFBy
aW50VG8oY29uc3QgOjp3c3RyaW5nJiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRX
aWRlU3RyaW5nVG8ocywgb3MpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJ
TkcKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORworR1RFU1RfQVBJXyB2b2lkIFByaW50V2lk
ZVN0cmluZ1RvKGNvbnN0IDo6c3RkOjp3c3RyaW5nJnMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7Citp
bmxpbmUgdm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp3c3RyaW5nJiBzLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgUHJpbnRXaWRlU3RyaW5nVG8ocywgb3MpOworfQorI2VuZGlmICAvLyBHVEVT
VF9IQVNfU1REX1dTVFJJTkcKKworI2lmIEdURVNUX0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFT
X1NURF9UVVBMRV8KKy8vIEhlbHBlciBmdW5jdGlvbiBmb3IgcHJpbnRpbmcgYSB0dXBsZS4gIFQg
bXVzdCBiZSBpbnN0YW50aWF0ZWQgd2l0aAorLy8gYSB0dXBsZSB0eXBlLgordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Cit2b2lkIFByaW50VHVwbGVUbyhjb25zdCBUJiB0LCA6OnN0ZDo6b3N0cmVhbSog
b3MpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfVFIxX1RVUExFIHx8IEdURVNUX0hBU19TVERfVFVQ
TEVfCisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCisvLyBPdmVybG9hZCBmb3IgOjpzdGQ6OnRy
MTo6dHVwbGUuICBOZWVkZWQgZm9yIHByaW50aW5nIGZ1bmN0aW9uIGFyZ3VtZW50cywKKy8vIHdo
aWNoIGFyZSBwYWNrZWQgYXMgdHVwbGVzLgorCisvLyBPdmVybG9hZGVkIFByaW50VG8oKSBmb3Ig
dHVwbGVzIG9mIHZhcmlvdXMgYXJpdGllcy4gIFdlIHN1cHBvcnQKKy8vIHR1cGxlcyBvZiB1cC10
byAxMCBmaWVsZHMuICBUaGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIHdvcmtzCisvLyByZWdh
cmRsZXNzIG9mIHdoZXRoZXIgdHIxOjp0dXBsZSBpcyBpbXBsZW1lbnRlZCB1c2luZyB0aGUKKy8v
IG5vbi1zdGFuZGFyZCB2YXJpYWRpYyB0ZW1wbGF0ZSBmZWF0dXJlIG9yIG5vdC4KKworaW5saW5l
IHZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTw+JiB0LCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQxPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxPiYgdCwgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6
dHVwbGU8VDEsIFQyPiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0
LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDM+JiB0
LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0
Pgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiYg
dCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
NCwgdHlwZW5hbWUgVDU+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEs
IFQyLCBUMywgVDQsIFQ1PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsK
KyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAg
ICB0eXBlbmFtZSBUNj4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAg
ICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6
OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+JiB0LAorICAgICAgICAgICAg
IDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFR1cGxlVG8odCwgb3MpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQs
IHR5cGVuYW1lIFQ1LAorICAgICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5h
bWUgVDg+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwgVDcsIFQ4PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAg
ICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOT4K
K3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDgsIFQ5PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsK
KyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAg
ICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlw
ZW5hbWUgVDEwPgordm9pZCBQcmludFRvKAorICAgIGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD4mIHQsCisgICAgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNU
X0hBU19UUjFfVFVQTEUKKworI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUuLi4gVHlwZXM+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnR1cGxlPFR5cGVzLi4u
PiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9Cisj
ZW5kaWYgIC8vIEdURVNUX0hBU19TVERfVFVQTEVfCisKKy8vIE92ZXJsb2FkIGZvciBzdGQ6OnBh
aXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgordm9pZCBQcmludFRvKGNv
bnN0IDo6c3RkOjpwYWlyPFQxLCBUMj4mIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAg
Km9zIDw8ICcoJzsKKyAgLy8gV2UgY2Fubm90IHVzZSBVbml2ZXJzYWxQcmludCh2YWx1ZS5maXJz
dCwgb3MpIGhlcmUsIGFzIFQxIG1heSBiZQorICAvLyBhIHJlZmVyZW5jZSB0eXBlLiAgVGhlIHNh
bWUgZm9yIHByaW50aW5nIHZhbHVlLnNlY29uZC4KKyAgVW5pdmVyc2FsUHJpbnRlcjxUMT46OlBy
aW50KHZhbHVlLmZpcnN0LCBvcyk7CisgICpvcyA8PCAiLCAiOworICBVbml2ZXJzYWxQcmludGVy
PFQyPjo6UHJpbnQodmFsdWUuc2Vjb25kLCBvcyk7CisgICpvcyA8PCAnKSc7Cit9CisKKy8vIElt
cGxlbWVudHMgcHJpbnRpbmcgYSBub24tcmVmZXJlbmNlIHR5cGUgVCBieSBsZXR0aW5nIHRoZSBj
b21waWxlcgorLy8gcGljayB0aGUgcmlnaHQgb3ZlcmxvYWQgb2YgUHJpbnRUbygpIGZvciBULgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbml2ZXJzYWxQcmludGVyIHsKKyBwdWJsaWM6
CisgIC8vIE1TVkMgd2FybnMgYWJvdXQgYWRkaW5nIGNvbnN0IHRvIGEgZnVuY3Rpb24gdHlwZSwg
c28gd2Ugd2FudCB0bworICAvLyBkaXNhYmxlIHRoZSB3YXJuaW5nLgorICBHVEVTVF9ESVNBQkxF
X01TQ19XQVJOSU5HU19QVVNIXyg0MTgwKQorCisgIC8vIE5vdGU6IHdlIGRlbGliZXJhdGVseSBk
b24ndCBjYWxsIHRoaXMgUHJpbnRUbygpLCBhcyB0aGF0IG5hbWUKKyAgLy8gY29uZmxpY3RzIHdp
dGggOjp0ZXN0aW5nOjppbnRlcm5hbDo6UHJpbnRUbyBpbiB0aGUgYm9keSBvZiB0aGUKKyAgLy8g
ZnVuY3Rpb24uCisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0
cmVhbSogb3MpIHsKKyAgICAvLyBCeSBkZWZhdWx0LCA6OnRlc3Rpbmc6OmludGVybmFsOjpQcmlu
dFRvKCkgaXMgdXNlZCBmb3IgcHJpbnRpbmcKKyAgICAvLyB0aGUgdmFsdWUuCisgICAgLy8KKyAg
ICAvLyBUaGFua3MgdG8gS29lbmlnIGxvb2stdXAsIGlmIFQgaXMgYSBjbGFzcyBhbmQgaGFzIGl0
cyBvd24KKyAgICAvLyBQcmludFRvKCkgZnVuY3Rpb24gZGVmaW5lZCBpbiBpdHMgbmFtZXNwYWNl
LCB0aGF0IGZ1bmN0aW9uIHdpbGwKKyAgICAvLyBiZSB2aXNpYmxlIGhlcmUuICBTaW5jZSBpdCBp
cyBtb3JlIHNwZWNpZmljIHRoYW4gdGhlIGdlbmVyaWMgb25lcworICAgIC8vIGluIDo6dGVzdGlu
Zzo6aW50ZXJuYWwsIGl0IHdpbGwgYmUgcGlja2VkIGJ5IHRoZSBjb21waWxlciBpbiB0aGUKKyAg
ICAvLyBmb2xsb3dpbmcgc3RhdGVtZW50IC0gZXhhY3RseSB3aGF0IHdlIHdhbnQuCisgICAgUHJp
bnRUbyh2YWx1ZSwgb3MpOworICB9CisKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9Q
XygpCit9OworCisvLyBVbml2ZXJzYWxQcmludEFycmF5KGJlZ2luLCBsZW4sIG9zKSBwcmludHMg
YW4gYXJyYXkgb2YgJ2xlbicKKy8vIGVsZW1lbnRzLCBzdGFydGluZyBhdCBhZGRyZXNzICdiZWdp
bicuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVW5pdmVyc2FsUHJpbnRBcnJheShjb25z
dCBUKiBiZWdpbiwgc2l6ZV90IGxlbiwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIGlmIChsZW4g
PT0gMCkgeworICAgICpvcyA8PCAie30iOworICB9IGVsc2UgeworICAgICpvcyA8PCAieyAiOwor
ICAgIGNvbnN0IHNpemVfdCBrVGhyZXNob2xkID0gMTg7CisgICAgY29uc3Qgc2l6ZV90IGtDaHVu
a1NpemUgPSA4OworICAgIC8vIElmIHRoZSBhcnJheSBoYXMgbW9yZSB0aGFuIGtUaHJlc2hvbGQg
ZWxlbWVudHMsIHdlJ2xsIGhhdmUgdG8KKyAgICAvLyBvbWl0IHNvbWUgZGV0YWlscyBieSBwcmlu
dGluZyBvbmx5IHRoZSBmaXJzdCBhbmQgdGhlIGxhc3QKKyAgICAvLyBrQ2h1bmtTaXplIGVsZW1l
bnRzLgorICAgIC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBsZXQgdGhlIHVzZXIgY29udHJvbCB0
aGUgdGhyZXNob2xkIHVzaW5nIGEgZmxhZy4KKyAgICBpZiAobGVuIDw9IGtUaHJlc2hvbGQpIHsK
KyAgICAgIFByaW50UmF3QXJyYXlUbyhiZWdpbiwgbGVuLCBvcyk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIFByaW50UmF3QXJyYXlUbyhiZWdpbiwga0NodW5rU2l6ZSwgb3MpOworICAgICAgKm9zIDw8
ICIsIC4uLiwgIjsKKyAgICAgIFByaW50UmF3QXJyYXlUbyhiZWdpbiArIGxlbiAtIGtDaHVua1Np
emUsIGtDaHVua1NpemUsIG9zKTsKKyAgICB9CisgICAgKm9zIDw8ICIgfSI7CisgIH0KK30KKy8v
IFRoaXMgb3ZlcmxvYWQgcHJpbnRzIGEgKGNvbnN0KSBjaGFyIGFycmF5IGNvbXBhY3RseS4KK0dU
RVNUX0FQSV8gdm9pZCBVbml2ZXJzYWxQcmludEFycmF5KAorICAgIGNvbnN0IGNoYXIqIGJlZ2lu
LCBzaXplX3QgbGVuLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworCisvLyBUaGlzIG92ZXJsb2FkIHBy
aW50cyBhIChjb25zdCkgd2NoYXJfdCBhcnJheSBjb21wYWN0bHkuCitHVEVTVF9BUElfIHZvaWQg
VW5pdmVyc2FsUHJpbnRBcnJheSgKKyAgICBjb25zdCB3Y2hhcl90KiBiZWdpbiwgc2l6ZV90IGxl
biwgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKKworLy8gSW1wbGVtZW50cyBwcmludGluZyBhbiBhcnJh
eSB0eXBlIFRbTl0uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitjbGFzcyBVbml2
ZXJzYWxQcmludGVyPFRbTl0+IHsKKyBwdWJsaWM6CisgIC8vIFByaW50cyB0aGUgZ2l2ZW4gYXJy
YXksIG9taXR0aW5nIHNvbWUgZWxlbWVudHMgd2hlbiB0aGVyZSBhcmUgdG9vCisgIC8vIG1hbnku
CisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQgKCZhKVtOXSwgOjpzdGQ6Om9zdHJlYW0qIG9z
KSB7CisgICAgVW5pdmVyc2FsUHJpbnRBcnJheShhLCBOLCBvcyk7CisgIH0KK307CisKKy8vIElt
cGxlbWVudHMgcHJpbnRpbmcgYSByZWZlcmVuY2UgdHlwZSBUJi4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgVW5pdmVyc2FsUHJpbnRlcjxUJj4geworIHB1YmxpYzoKKyAgLy8gTVNWQyB3
YXJucyBhYm91dCBhZGRpbmcgY29uc3QgdG8gYSBmdW5jdGlvbiB0eXBlLCBzbyB3ZSB3YW50IHRv
CisgIC8vIGRpc2FibGUgdGhlIHdhcm5pbmcuCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdT
X1BVU0hfKDQxODApCisKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgeworICAgIC8vIFByaW50cyB0aGUgYWRkcmVzcyBvZiB0aGUgdmFsdWUu
ICBXZSB1c2UgcmVpbnRlcnByZXRfY2FzdCBoZXJlCisgICAgLy8gYXMgc3RhdGljX2Nhc3QgZG9l
c24ndCBjb21waWxlIHdoZW4gVCBpcyBhIGZ1bmN0aW9uIHR5cGUuCisgICAgKm9zIDw8ICJAIiA8
PCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigmdmFsdWUpIDw8ICIgIjsKKworICAgIC8v
IFRoZW4gcHJpbnRzIHRoZSB2YWx1ZSBpdHNlbGYuCisgICAgVW5pdmVyc2FsUHJpbnQodmFsdWUs
IG9zKTsKKyAgfQorCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQorfTsKKwor
Ly8gUHJpbnRzIGEgdmFsdWUgdGVyc2VseTogZm9yIGEgcmVmZXJlbmNlIHR5cGUsIHRoZSByZWZl
cmVuY2VkIHZhbHVlCisvLyAoYnV0IG5vdCB0aGUgYWRkcmVzcykgaXMgcHJpbnRlZDsgZm9yIGEg
KGNvbnN0KSBjaGFyIHBvaW50ZXIsIHRoZQorLy8gTlVMLXRlcm1pbmF0ZWQgc3RyaW5nIChidXQg
bm90IHRoZSBwb2ludGVyKSBpcyBwcmludGVkLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlciB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBQcmlu
dChjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVW5pdmVyc2FsUHJp
bnQodmFsdWUsIG9zKTsKKyAgfQorfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVW5p
dmVyc2FsVGVyc2VQcmludGVyPFQmPiB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBQcmludChj
b25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVW5pdmVyc2FsUHJpbnQo
dmFsdWUsIG9zKTsKKyAgfQorfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KK2Ns
YXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxUW05dPiB7CisgcHVibGljOgorICBzdGF0aWMgdm9p
ZCBQcmludChjb25zdCBUICgmdmFsdWUpW05dLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBV
bml2ZXJzYWxQcmludGVyPFRbTl0+OjpQcmludCh2YWx1ZSwgb3MpOworICB9Cit9OwordGVtcGxh
dGUgPD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjb25zdCBjaGFyKj4geworIHB1Ymxp
YzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgY2hhciogc3RyLCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICpvcyA8PCAiTlVMTCI7CisgICAg
fSBlbHNlIHsKKyAgICAgIFVuaXZlcnNhbFByaW50KHN0cmluZyhzdHIpLCBvcyk7CisgICAgfQor
ICB9Cit9OwordGVtcGxhdGUgPD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjaGFyKj4g
eworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY2hhciogc3RyLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgICBVbml2ZXJzYWxUZXJzZVByaW50ZXI8Y29uc3QgY2hhcio+OjpQcmludChz
dHIsIG9zKTsKKyAgfQorfTsKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORwordGVtcGxhdGUg
PD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjb25zdCB3Y2hhcl90Kj4geworIHB1Ymxp
YzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3Qgd2NoYXJfdCogc3RyLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICpvcyA8PCAiTlVMTCI7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIFVuaXZlcnNhbFByaW50KDo6c3RkOjp3c3RyaW5nKHN0ciksIG9z
KTsKKyAgICB9CisgIH0KK307CisjZW5kaWYKKwordGVtcGxhdGUgPD4KK2NsYXNzIFVuaXZlcnNh
bFRlcnNlUHJpbnRlcjx3Y2hhcl90Kj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQo
d2NoYXJfdCogc3RyLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBVbml2ZXJzYWxUZXJzZVBy
aW50ZXI8Y29uc3Qgd2NoYXJfdCo+OjpQcmludChzdHIsIG9zKTsKKyAgfQorfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFRlcnNlUHJpbnQoY29uc3QgVCYgdmFsdWUs
IDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBVbml2ZXJzYWxUZXJzZVByaW50ZXI8VD46OlByaW50
KHZhbHVlLCBvcyk7Cit9CisKKy8vIFByaW50cyBhIHZhbHVlIHVzaW5nIHRoZSB0eXBlIGluZmVy
cmVkIGJ5IHRoZSBjb21waWxlci4gIFRoZQorLy8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5k
IFVuaXZlcnNhbFRlcnNlUHJpbnQoKSBpcyB0aGF0IGZvciBhCisvLyAoY29uc3QpIGNoYXIgcG9p
bnRlciwgdGhpcyBwcmludHMgYm90aCB0aGUgcG9pbnRlciBhbmQgdGhlCisvLyBOVUwtdGVybWlu
YXRlZCBzdHJpbmcuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVW5pdmVyc2FsUHJpbnQo
Y29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAvLyBBIHdvcmthcm9uZCBm
b3IgdGhlIGJ1ZyBpbiBWQysrIDcuMSB0aGF0IHByZXZlbnRzIHVzIGZyb20gaW5zdGFudGlhdGlu
ZworICAvLyBVbml2ZXJzYWxQcmludGVyIHdpdGggVCBkaXJlY3RseS4KKyAgdHlwZWRlZiBUIFQx
OworICBVbml2ZXJzYWxQcmludGVyPFQxPjo6UHJpbnQodmFsdWUsIG9zKTsKK30KKwordHlwZWRl
ZiA6OnN0ZDo6dmVjdG9yPHN0cmluZz4gU3RyaW5nczsKKworLy8gVHVwbGVQb2xpY3k8VHVwbGVU
PiBtdXN0IHByb3ZpZGU6CisvLyAtIHR1cGxlX3NpemUKKy8vICAgICBzaXplIG9mIHR1cGxlIFR1
cGxlVC4KKy8vIC0gZ2V0PHNpemVfdCBJPihjb25zdCBUdXBsZVQmIHQpCisvLyAgICAgc3RhdGlj
IGZ1bmN0aW9uIGV4dHJhY3RpbmcgZWxlbWVudCBJIG9mIHR1cGxlIFR1cGxlVC4KKy8vIC0gdHVw
bGVfZWxlbWVudDxzaXplX3QgST46OnR5cGUKKy8vICAgICB0eXBlIG9mIGVsZW1lbnQgSSBvZiB0
dXBsZSBUdXBsZVQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGVUPgorc3RydWN0IFR1cGxlUG9s
aWN5OworCisjaWYgR1RFU1RfSEFTX1RSMV9UVVBMRQordGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxl
VD4KK3N0cnVjdCBUdXBsZVBvbGljeSB7CisgIHR5cGVkZWYgVHVwbGVUIFR1cGxlOworICBzdGF0
aWMgY29uc3Qgc2l6ZV90IHR1cGxlX3NpemUgPSA6OnN0ZDo6dHIxOjp0dXBsZV9zaXplPFR1cGxl
Pjo6dmFsdWU7CisKKyAgdGVtcGxhdGUgPHNpemVfdCBJPgorICBzdHJ1Y3QgdHVwbGVfZWxlbWVu
dCA6IDo6c3RkOjp0cjE6OnR1cGxlX2VsZW1lbnQ8SSwgVHVwbGU+IHt9OworCisgIHRlbXBsYXRl
IDxzaXplX3QgST4KKyAgc3RhdGljIHR5cGVuYW1lIEFkZFJlZmVyZW5jZTwKKyAgICAgIGNvbnN0
IHR5cGVuYW1lIDo6c3RkOjp0cjE6OnR1cGxlX2VsZW1lbnQ8SSwgVHVwbGU+Ojp0eXBlPjo6dHlw
ZSBnZXQoCisgICAgICBjb25zdCBUdXBsZSYgdHVwbGUpIHsKKyAgICByZXR1cm4gOjpzdGQ6OnRy
MTo6Z2V0PEk+KHR1cGxlKTsKKyAgfQorfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZVQ+Citj
b25zdCBzaXplX3QgVHVwbGVQb2xpY3k8VHVwbGVUPjo6dHVwbGVfc2l6ZTsKKyNlbmRpZiAgLy8g
R1RFU1RfSEFTX1RSMV9UVVBMRQorCisjaWYgR1RFU1RfSEFTX1NURF9UVVBMRV8KK3RlbXBsYXRl
IDx0eXBlbmFtZS4uLiBUeXBlcz4KK3N0cnVjdCBUdXBsZVBvbGljeTwgOjpzdGQ6OnR1cGxlPFR5
cGVzLi4uPiA+IHsKKyAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8VHlwZXMuLi4+IFR1cGxlOworICBz
dGF0aWMgY29uc3Qgc2l6ZV90IHR1cGxlX3NpemUgPSA6OnN0ZDo6dHVwbGVfc2l6ZTxUdXBsZT46
OnZhbHVlOworCisgIHRlbXBsYXRlIDxzaXplX3QgST4KKyAgc3RydWN0IHR1cGxlX2VsZW1lbnQg
OiA6OnN0ZDo6dHVwbGVfZWxlbWVudDxJLCBUdXBsZT4ge307CisKKyAgdGVtcGxhdGUgPHNpemVf
dCBJPgorICBzdGF0aWMgY29uc3QgdHlwZW5hbWUgOjpzdGQ6OnR1cGxlX2VsZW1lbnQ8SSwgVHVw
bGU+Ojp0eXBlJiBnZXQoCisgICAgICBjb25zdCBUdXBsZSYgdHVwbGUpIHsKKyAgICByZXR1cm4g
OjpzdGQ6OmdldDxJPih0dXBsZSk7CisgIH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHlw
ZXM+Citjb25zdCBzaXplX3QgVHVwbGVQb2xpY3k8IDo6c3RkOjp0dXBsZTxUeXBlcy4uLj4gPjo6
dHVwbGVfc2l6ZTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9UVVBMRV8KKworI2lmIEdURVNU
X0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8KKy8vIFRoaXMgaGVscGVyIHRl
bXBsYXRlIGFsbG93cyBQcmludFRvKCkgZm9yIHR1cGxlcyBhbmQKKy8vIFVuaXZlcnNhbFRlcnNl
UHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygpIHRvIGJlIGRlZmluZWQgYnkKKy8vIGluZHVjdGlv
biBvbiB0aGUgbnVtYmVyIG9mIHR1cGxlIGZpZWxkcy4gIFRoZSBpZGVhIGlzIHRoYXQKKy8vIFR1
cGxlUHJlZml4UHJpbnRlcjxOPjo6UHJpbnRQcmVmaXhUbyh0LCBvcykgcHJpbnRzIHRoZSBmaXJz
dCBOCisvLyBmaWVsZHMgaW4gdHVwbGUgdCwgYW5kIGNhbiBiZSBkZWZpbmVkIGluIHRlcm1zIG9m
CisvLyBUdXBsZVByZWZpeFByaW50ZXI8TiAtIDE+LgorLy8KKy8vIFRoZSBpbmR1Y3RpdmUgY2Fz
ZS4KK3RlbXBsYXRlIDxzaXplX3QgTj4KK3N0cnVjdCBUdXBsZVByZWZpeFByaW50ZXIgeworICAv
LyBQcmludHMgdGhlIGZpcnN0IE4gZmllbGRzIG9mIGEgdHVwbGUuCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUdXBsZT4KKyAgc3RhdGljIHZvaWQgUHJpbnRQcmVmaXhUbyhjb25zdCBUdXBsZSYgdCwg
OjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVHVwbGVQcmVmaXhQcmludGVyPE4gLSAxPjo6UHJp
bnRQcmVmaXhUbyh0LCBvcyk7CisgICAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QVVNI
XygpCisgICAgaWYgKE4gPiAxKSB7CisgICAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9Q
T1BfKCkKKyAgICAgICpvcyA8PCAiLCAiOworICAgIH0KKyAgICBVbml2ZXJzYWxQcmludGVyPAor
ICAgICAgICB0eXBlbmFtZSBUdXBsZVBvbGljeTxUdXBsZT46OnRlbXBsYXRlIHR1cGxlX2VsZW1l
bnQ8TiAtIDE+Ojp0eXBlPgorICAgICAgICA6OlByaW50KFR1cGxlUG9saWN5PFR1cGxlPjo6dGVt
cGxhdGUgZ2V0PE4gLSAxPih0KSwgb3MpOworICB9CisKKyAgLy8gVGVyc2VseSBwcmludHMgdGhl
IGZpcnN0IE4gZmllbGRzIG9mIGEgdHVwbGUgdG8gYSBzdHJpbmcgdmVjdG9yLAorICAvLyBvbmUg
ZWxlbWVudCBmb3IgZWFjaCBmaWVsZC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPgorICBz
dGF0aWMgdm9pZCBUZXJzZVByaW50UHJlZml4VG9TdHJpbmdzKGNvbnN0IFR1cGxlJiB0LCBTdHJp
bmdzKiBzdHJpbmdzKSB7CisgICAgVHVwbGVQcmVmaXhQcmludGVyPE4gLSAxPjo6VGVyc2VQcmlu
dFByZWZpeFRvU3RyaW5ncyh0LCBzdHJpbmdzKTsKKyAgICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNz
OworICAgIFVuaXZlcnNhbFRlcnNlUHJpbnQoVHVwbGVQb2xpY3k8VHVwbGU+Ojp0ZW1wbGF0ZSBn
ZXQ8TiAtIDE+KHQpLCAmc3MpOworICAgIHN0cmluZ3MtPnB1c2hfYmFjayhzcy5zdHIoKSk7Cisg
IH0KK307CisKKy8vIEJhc2UgY2FzZS4KK3RlbXBsYXRlIDw+CitzdHJ1Y3QgVHVwbGVQcmVmaXhQ
cmludGVyPDA+IHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPgorICBzdGF0aWMgdm9pZCBQ
cmludFByZWZpeFRvKGNvbnN0IFR1cGxlJiwgOjpzdGQ6Om9zdHJlYW0qKSB7fQorCisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUdXBsZT4KKyAgc3RhdGljIHZvaWQgVGVyc2VQcmludFByZWZpeFRvU3Ry
aW5ncyhjb25zdCBUdXBsZSYsIFN0cmluZ3MqKSB7fQorfTsKKworLy8gSGVscGVyIGZ1bmN0aW9u
IGZvciBwcmludGluZyBhIHR1cGxlLgorLy8gVHVwbGUgbXVzdCBiZSBlaXRoZXIgc3RkOjp0cjE6
OnR1cGxlIG9yIHN0ZDo6dHVwbGUgdHlwZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4KK3Zv
aWQgUHJpbnRUdXBsZVRvKGNvbnN0IFR1cGxlJiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAg
Km9zIDw8ICIoIjsKKyAgVHVwbGVQcmVmaXhQcmludGVyPFR1cGxlUG9saWN5PFR1cGxlPjo6dHVw
bGVfc2l6ZT46OlByaW50UHJlZml4VG8odCwgb3MpOworICAqb3MgPDwgIikiOworfQorCisvLyBQ
cmludHMgdGhlIGZpZWxkcyBvZiBhIHR1cGxlIHRlcnNlbHkgdG8gYSBzdHJpbmcgdmVjdG9yLCBv
bmUKKy8vIGVsZW1lbnQgZm9yIGVhY2ggZmllbGQuICBTZWUgdGhlIGNvbW1lbnQgYmVmb3JlCisv
LyBVbml2ZXJzYWxUZXJzZVByaW50KCkgZm9yIGhvdyB3ZSBkZWZpbmUgInRlcnNlbHkiLgordGVt
cGxhdGUgPHR5cGVuYW1lIFR1cGxlPgorU3RyaW5ncyBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVG
aWVsZHNUb1N0cmluZ3MoY29uc3QgVHVwbGUmIHZhbHVlKSB7CisgIFN0cmluZ3MgcmVzdWx0Owor
ICBUdXBsZVByZWZpeFByaW50ZXI8VHVwbGVQb2xpY3k8VHVwbGU+Ojp0dXBsZV9zaXplPjo6Cisg
ICAgICBUZXJzZVByaW50UHJlZml4VG9TdHJpbmdzKHZhbHVlLCAmcmVzdWx0KTsKKyAgcmV0dXJu
IHJlc3VsdDsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRSB8fCBHVEVTVF9IQVNf
U1REX1RVUExFXworCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Cis6OnN0ZDo6c3RyaW5nIFByaW50VG9TdHJpbmcoY29uc3QgVCYgdmFsdWUpIHsKKyAg
OjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgaW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnRl
cjxUPjo6UHJpbnQodmFsdWUsICZzcyk7CisgIHJldHVybiBzcy5zdHIoKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIHRlc3RpbmcKKworLy8gSW5jbHVkZSBhbnkgY3VzdG9tIHByaW50ZXIgYWRkZWQg
YnkgdGhlIGxvY2FsIGluc3RhbGxhdGlvbi4KKy8vIFdlIG11c3QgaW5jbHVkZSB0aGlzIGhlYWRl
ciBhdCB0aGUgZW5kIHRvIG1ha2Ugc3VyZSBpdCBjYW4gdXNlIHRoZQorLy8gZGVjbGFyYXRpb25z
IGZyb20gdGhpcyBmaWxlLgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1w
cmludGVycy5oIgorCisjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJJTlRF
UlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
Z3Rlc3Qtc3BpLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0
LXNwaS5oCmluZGV4IGM0MWRhNDg0NDc2MDNlOTY1ZmI3NzJhYmNhMmYxNDVlZTgyYTYwNmYuLmY2
M2ZhOWExYjJhODc1MDgxZGEzNjA2ZmM0NTc4ZWU1YTk0YWJiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qtc3BpLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1zcGkuaApAQCAtMzUsNyArMzUs
NyBAQAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1NQSV9IXwogI2RlZmluZSBH
VEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1NQSV9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKQEAg
LTk4LDEyICs5OCwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIFNpbmdsZUZhaWx1cmVDaGVja2VyIHsK
ICAgLy8gVGhlIGNvbnN0cnVjdG9yIHJlbWVtYmVycyB0aGUgYXJndW1lbnRzLgogICBTaW5nbGVG
YWlsdXJlQ2hlY2tlcihjb25zdCBUZXN0UGFydFJlc3VsdEFycmF5KiByZXN1bHRzLAogICAgICAg
ICAgICAgICAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBzdWJzdHIpOworICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdHJpbmcmIHN1YnN0cik7CiAgIH5TaW5nbGVGYWlsdXJlQ2hlY2tlcigpOwogIHByaXZh
dGU6CiAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0QXJyYXkqIGNvbnN0IHJlc3VsdHNfOwogICBjb25z
dCBUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlXzsKLSAgY29uc3QgU3RyaW5nIHN1YnN0cl87Cisg
IGNvbnN0IHN0cmluZyBzdWJzdHJfOwogCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oU2luZ2xlRmFpbHVyZUNoZWNrZXIpOwogfTsKQEAgLTIyMyw3ICsyMjMsNyBAQCBjbGFzcyBH
VEVTVF9BUElfIFNpbmdsZUZhaWx1cmVDaGVja2VyIHsKICAgICAgICAgKHN1YnN0cikpO1wKICAg
ICB7XAogICAgICAgOjp0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlciBn
dGVzdF9yZXBvcnRlcihcCi0gICAgICAgICAgOjp0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlcjo6SU5URVJDRVBUX0FMTF9USFJFQURTLFwKKyAgICAgICAgICA6OnRlc3Rp
bmc6OlNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpJTlRFUkNFUFRfQUxMX1RIUkVB
RFMsIFwKICAgICAgICAgICAmZ3Rlc3RfZmFpbHVyZXMpO1wKICAgICAgIGlmICg6OnRlc3Rpbmc6
OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgc3RhdGVtZW50OyB9XAogICAgIH1cCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXRlc3QtcGFy
dC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBh
cnQuaAppbmRleCBmNzE0NzU5MDY3NjM5ZjFlYTRlYzBhMTI2MzQ3ZGVjMTIwNDgyNDM5Li43N2Vi
ODQ0ODM5ZDg5MjdhMjkzZDI1NzA0ZGY5YjE3MDdhNDI3M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgKQEAg
LTM1LDggKzM1LDggQEAKIAogI2luY2x1ZGUgPGlvc2Z3ZD4KICNpbmNsdWRlIDx2ZWN0b3I+Ci0j
aW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNsdWRlIDxndGVz
dC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVz
dC1pbnRlcm5hbC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgog
CiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgR1RFU1RfQVBJ
XyBUZXN0UGFydFJlc3VsdCB7CiAgICAgICAgICAgICAgICAgIGludCBhX2xpbmVfbnVtYmVyLAog
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX21lc3NhZ2UpCiAgICAgICA6IHR5cGVfKGFf
dHlwZSksCi0gICAgICAgIGZpbGVfbmFtZV8oYV9maWxlX25hbWUpLAorICAgICAgICBmaWxlX25h
bWVfKGFfZmlsZV9uYW1lID09IE5VTEwgPyAiIiA6IGFfZmlsZV9uYW1lKSwKICAgICAgICAgbGlu
ZV9udW1iZXJfKGFfbGluZV9udW1iZXIpLAogICAgICAgICBzdW1tYXJ5XyhFeHRyYWN0U3VtbWFy
eShhX21lc3NhZ2UpKSwKICAgICAgICAgbWVzc2FnZV8oYV9tZXNzYWdlKSB7CkBAIC03Myw3ICs3
Myw5IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFBhcnRSZXN1bHQgewogCiAgIC8vIEdldHMgdGhl
IG5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRoZSB0ZXN0IHBhcnQgdG9vayBwbGFjZSwg
b3IKICAgLy8gTlVMTCBpZiBpdCdzIHVua25vd24uCi0gIGNvbnN0IGNoYXIqIGZpbGVfbmFtZSgp
IGNvbnN0IHsgcmV0dXJuIGZpbGVfbmFtZV8uY19zdHIoKTsgfQorICBjb25zdCBjaGFyKiBmaWxl
X25hbWUoKSBjb25zdCB7CisgICAgcmV0dXJuIGZpbGVfbmFtZV8uZW1wdHkoKSA/IE5VTEwgOiBm
aWxlX25hbWVfLmNfc3RyKCk7CisgIH0KIAogICAvLyBHZXRzIHRoZSBsaW5lIGluIHRoZSBzb3Vy
Y2UgZmlsZSB3aGVyZSB0aGUgdGVzdCBwYXJ0IHRvb2sgcGxhY2UsCiAgIC8vIG9yIC0xIGlmIGl0
J3MgdW5rbm93bi4KQEAgLTk2LDIxICs5OCwyMiBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RQYXJ0
UmVzdWx0IHsKIAogICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB0ZXN0IHBhcnQgZmF0YWxseSBm
YWlsZWQuCiAgIGJvb2wgZmF0YWxseV9mYWlsZWQoKSBjb25zdCB7IHJldHVybiB0eXBlXyA9PSBr
RmF0YWxGYWlsdXJlOyB9CisKICBwcml2YXRlOgogICBUeXBlIHR5cGVfOwogCiAgIC8vIEdldHMg
dGhlIHN1bW1hcnkgb2YgdGhlIGZhaWx1cmUgbWVzc2FnZSBieSBvbWl0dGluZyB0aGUgc3RhY2sK
ICAgLy8gdHJhY2UgaW4gaXQuCi0gIHN0YXRpYyBpbnRlcm5hbDo6U3RyaW5nIEV4dHJhY3RTdW1t
YXJ5KGNvbnN0IGNoYXIqIG1lc3NhZ2UpOworICBzdGF0aWMgc3RkOjpzdHJpbmcgRXh0cmFjdFN1
bW1hcnkoY29uc3QgY2hhciogbWVzc2FnZSk7CiAKICAgLy8gVGhlIG5hbWUgb2YgdGhlIHNvdXJj
ZSBmaWxlIHdoZXJlIHRoZSB0ZXN0IHBhcnQgdG9vayBwbGFjZSwgb3IKLSAgLy8gTlVMTCBpZiB0
aGUgc291cmNlIGZpbGUgaXMgdW5rbm93bi4KLSAgaW50ZXJuYWw6OlN0cmluZyBmaWxlX25hbWVf
OworICAvLyAiIiBpZiB0aGUgc291cmNlIGZpbGUgaXMgdW5rbm93bi4KKyAgc3RkOjpzdHJpbmcg
ZmlsZV9uYW1lXzsKICAgLy8gVGhlIGxpbmUgaW4gdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRoZSB0
ZXN0IHBhcnQgdG9vayBwbGFjZSwgb3IgLTEKICAgLy8gaWYgdGhlIGxpbmUgbnVtYmVyIGlzIHVu
a25vd24uCiAgIGludCBsaW5lX251bWJlcl87Ci0gIGludGVybmFsOjpTdHJpbmcgc3VtbWFyeV87
ICAvLyBUaGUgdGVzdCBmYWlsdXJlIHN1bW1hcnkuCi0gIGludGVybmFsOjpTdHJpbmcgbWVzc2Fn
ZV87ICAvLyBUaGUgdGVzdCBmYWlsdXJlIG1lc3NhZ2UuCisgIHN0ZDo6c3RyaW5nIHN1bW1hcnlf
OyAgLy8gVGhlIHRlc3QgZmFpbHVyZSBzdW1tYXJ5LgorICBzdGQ6OnN0cmluZyBtZXNzYWdlXzsg
IC8vIFRoZSB0ZXN0IGZhaWx1cmUgbWVzc2FnZS4KIH07CiAKIC8vIFByaW50cyBhIFRlc3RQYXJ0
UmVzdWx0IG9iamVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9ndGVzdC10eXBlZC10ZXN0LmgKaW5kZXggMWVjOGViOGQzMDkzOThkNTJiZDQ5
NjM4NGNmNDc0ODNhZTExNTJlZS4uNWY2OWQ1Njc4ZWFmMzRhNjAwY2E0NWY4Y2Y5MzQwODMxNjJm
YWZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9n
dGVzdC10eXBlZC10ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdC10eXBlZC10ZXN0LmgKQEAgLTE0Niw4ICsxNDYsOCBAQCBJTlNUQU5USUFURV9U
WVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcyk7CiAKICNlbmRpZiAgLy8gMAog
Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgotI2luY2x1ZGUgPGd0ZXN0
L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCIK
IAogLy8gSW1wbGVtZW50cyB0eXBlZCB0ZXN0cy4KIApAQCAtMTU3LDE2ICsxNTcsMTYgQEAgSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMpOwogLy8KIC8v
IEV4cGFuZHMgdG8gdGhlIG5hbWUgb2YgdGhlIHR5cGVkZWYgZm9yIHRoZSB0eXBlIHBhcmFtZXRl
cnMgb2YgdGhlCiAvLyBnaXZlbiB0ZXN0IGNhc2UuCi0jZGVmaW5lIEdURVNUX1RZUEVfUEFSQU1T
XyhUZXN0Q2FzZU5hbWUpIGd0ZXN0X3R5cGVfcGFyYW1zXyMjVGVzdENhc2VOYW1lIyNfCisjIGRl
ZmluZSBHVEVTVF9UWVBFX1BBUkFNU18oVGVzdENhc2VOYW1lKSBndGVzdF90eXBlX3BhcmFtc18j
I1Rlc3RDYXNlTmFtZSMjXwogCiAvLyBUaGUgJ1R5cGVzJyB0ZW1wbGF0ZSBhcmd1bWVudCBiZWxv
dyBtdXN0IGhhdmUgc3BhY2VzIGFyb3VuZCBpdAogLy8gc2luY2Ugc29tZSBjb21waWxlcnMgbWF5
IGNob2tlIG9uICc+Picgd2hlbiBwYXNzaW5nIGEgdGVtcGxhdGUKIC8vIGluc3RhbmNlIChlLmcu
IFR5cGVzPGludD4pCi0jZGVmaW5lIFRZUEVEX1RFU1RfQ0FTRShDYXNlTmFtZSwgVHlwZXMpIFwK
KyMgZGVmaW5lIFRZUEVEX1RFU1RfQ0FTRShDYXNlTmFtZSwgVHlwZXMpIFwKICAgdHlwZWRlZiA6
OnRlc3Rpbmc6OmludGVybmFsOjpUeXBlTGlzdDwgVHlwZXMgPjo6dHlwZSBcCiAgICAgICBHVEVT
VF9UWVBFX1BBUkFNU18oQ2FzZU5hbWUpCiAKLSNkZWZpbmUgVFlQRURfVEVTVChDYXNlTmFtZSwg
VGVzdE5hbWUpIFwKKyMgZGVmaW5lIFRZUEVEX1RFU1QoQ2FzZU5hbWUsIFRlc3ROYW1lKSBcCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiBcCiAgIGNsYXNzIEdURVNUX1RF
U1RfQ0xBU1NfTkFNRV8oQ2FzZU5hbWUsIFRlc3ROYW1lKSBcCiAgICAgICA6IHB1YmxpYyBDYXNl
TmFtZTxndGVzdF9UeXBlUGFyYW1fPiB7IFwKQEAgLTE3NSwxMyArMTc1LDE0IEBAIElOU1RBTlRJ
QVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsKICAgICB0eXBlZGVm
IGd0ZXN0X1R5cGVQYXJhbV8gVHlwZVBhcmFtOyBcCiAgICAgdmlydHVhbCB2b2lkIFRlc3RCb2R5
KCk7IFwKICAgfTsgXAotICBib29sIGd0ZXN0XyMjQ2FzZU5hbWUjI18jI1Rlc3ROYW1lIyNfcmVn
aXN0ZXJlZF8gPSBcCisgIGJvb2wgZ3Rlc3RfIyNDYXNlTmFtZSMjXyMjVGVzdE5hbWUjI19yZWdp
c3RlcmVkXyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9IFwKICAgICAgIDo6dGVzdGluZzo6aW50
ZXJuYWw6OlR5cGVQYXJhbWV0ZXJpemVkVGVzdDwgXAogICAgICAgICAgIENhc2VOYW1lLCBcCiAg
ICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVtcGxhdGVTZWw8IFwKICAgICAgICAgICAg
ICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyhDYXNlTmFtZSwgVGVzdE5hbWUpPiwgXAogICAgICAg
ICAgIEdURVNUX1RZUEVfUEFSQU1TXyhDYXNlTmFtZSk+OjpSZWdpc3RlcihcCi0gICAgICAgICAg
ICAgICIiLCAjQ2FzZU5hbWUsICNUZXN0TmFtZSwgMCk7IFwKKyAgICAgICAgICAgICAgIiIsIDo6
dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihfX0ZJTEVfXywgX19MSU5FX18pLCBcCisg
ICAgICAgICAgICAgICNDYXNlTmFtZSwgI1Rlc3ROYW1lLCAwKTsgXAogICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgZ3Rlc3RfVHlwZVBhcmFtXz4gXAogICB2b2lkIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8o
Q2FzZU5hbWUsIFRlc3ROYW1lKTxndGVzdF9UeXBlUGFyYW1fPjo6VGVzdEJvZHkoKQogCkBAIC0x
OTYsMzEgKzE5NywzMSBAQCBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVz
dCwgTXlUeXBlcyk7CiAvLyBFeHBhbmRzIHRvIHRoZSBuYW1lc3BhY2UgbmFtZSB0aGF0IHRoZSB0
eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMgZm9yCiAvLyB0aGUgZ2l2ZW4gdHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3QgY2FzZSBhcmUgZGVmaW5lZCBpbi4gIFRoZSBleGFjdAogLy8gbmFtZSBvZiB0aGUg
bmFtZXNwYWNlIGlzIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotI2RlZmluZSBH
VEVTVF9DQVNFX05BTUVTUEFDRV8oVGVzdENhc2VOYW1lKSBcCisjIGRlZmluZSBHVEVTVF9DQVNF
X05BTUVTUEFDRV8oVGVzdENhc2VOYW1lKSBcCiAgIGd0ZXN0X2Nhc2VfIyNUZXN0Q2FzZU5hbWUj
I18KIAogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09E
RS4KIC8vCiAvLyBFeHBhbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSB1c2VkIHRvIHJl
bWVtYmVyIHRoZSBuYW1lcyBvZgogLy8gdGhlIGRlZmluZWQgdGVzdHMgaW4gdGhlIGdpdmVuIHRl
c3QgY2FzZS4KLSNkZWZpbmUgR1RFU1RfVFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKFRlc3RDYXNl
TmFtZSkgXAorIyBkZWZpbmUgR1RFU1RfVFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKFRlc3RDYXNl
TmFtZSkgXAogICBndGVzdF90eXBlZF90ZXN0X2Nhc2VfcF9zdGF0ZV8jI1Rlc3RDYXNlTmFtZSMj
XwogCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RF
IERJUkVDVExZLgogLy8KIC8vIEV4cGFuZHMgdG8gdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIHVz
ZWQgdG8gcmVtZW1iZXIgdGhlIG5hbWVzIG9mCiAvLyB0aGUgcmVnaXN0ZXJlZCB0ZXN0cyBpbiB0
aGUgZ2l2ZW4gdGVzdCBjYXNlLgotI2RlZmluZSBHVEVTVF9SRUdJU1RFUkVEX1RFU1RfTkFNRVNf
KFRlc3RDYXNlTmFtZSkgXAorIyBkZWZpbmUgR1RFU1RfUkVHSVNURVJFRF9URVNUX05BTUVTXyhU
ZXN0Q2FzZU5hbWUpIFwKICAgZ3Rlc3RfcmVnaXN0ZXJlZF90ZXN0X25hbWVzXyMjVGVzdENhc2VO
YW1lIyNfCiAKIC8vIFRoZSB2YXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgdHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3QgbWFjcm9zIGFyZQogLy8gc3RhdGljIGFzIHR5cGljYWxseSB0aGVzZSBtYWNyb3Mg
YXJlIHVzZWQgaW4gYSAuaCBmaWxlIHRoYXQgY2FuIGJlCiAvLyAjaW5jbHVkZWQgaW4gbXVsdGlw
bGUgdHJhbnNsYXRpb24gdW5pdHMgbGlua2VkIHRvZ2V0aGVyLgotI2RlZmluZSBUWVBFRF9URVNU
X0NBU0VfUChDYXNlTmFtZSkgXAorIyBkZWZpbmUgVFlQRURfVEVTVF9DQVNFX1AoQ2FzZU5hbWUp
IFwKICAgc3RhdGljIDo6dGVzdGluZzo6aW50ZXJuYWw6OlR5cGVkVGVzdENhc2VQU3RhdGUgXAog
ICAgICAgR1RFU1RfVFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKENhc2VOYW1lKQogCi0jZGVmaW5l
IFRZUEVEX1RFU1RfUChDYXNlTmFtZSwgVGVzdE5hbWUpIFwKKyMgZGVmaW5lIFRZUEVEX1RFU1Rf
UChDYXNlTmFtZSwgVGVzdE5hbWUpIFwKICAgbmFtZXNwYWNlIEdURVNUX0NBU0VfTkFNRVNQQUNF
XyhDYXNlTmFtZSkgeyBcCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiBc
CiAgIGNsYXNzIFRlc3ROYW1lIDogcHVibGljIENhc2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IHsg
XApAQCAtMjI5LDE0ICsyMzAsMTQgQEAgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXks
IEZvb1Rlc3QsIE15VHlwZXMpOwogICAgIHR5cGVkZWYgZ3Rlc3RfVHlwZVBhcmFtXyBUeXBlUGFy
YW07IFwKICAgICB2aXJ0dWFsIHZvaWQgVGVzdEJvZHkoKTsgXAogICB9OyBcCi0gIHN0YXRpYyBi
b29sIGd0ZXN0XyMjVGVzdE5hbWUjI19kZWZpbmVkXyA9IFwKKyAgc3RhdGljIGJvb2wgZ3Rlc3Rf
IyNUZXN0TmFtZSMjX2RlZmluZWRfIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gXAogICAgICAg
R1RFU1RfVFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKENhc2VOYW1lKS5BZGRUZXN0TmFtZShcCiAg
ICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCAjQ2FzZU5hbWUsICNUZXN0TmFtZSk7IFwKICAg
fSBcCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiBcCiAgIHZvaWQgR1RF
U1RfQ0FTRV9OQU1FU1BBQ0VfKENhc2VOYW1lKTo6VGVzdE5hbWU8Z3Rlc3RfVHlwZVBhcmFtXz46
OlRlc3RCb2R5KCkKIAotI2RlZmluZSBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChDYXNlTmFt
ZSwgLi4uKSBcCisjIGRlZmluZSBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChDYXNlTmFtZSwg
Li4uKSBcCiAgIG5hbWVzcGFjZSBHVEVTVF9DQVNFX05BTUVTUEFDRV8oQ2FzZU5hbWUpIHsgXAog
ICB0eXBlZGVmIDo6dGVzdGluZzo6aW50ZXJuYWw6OlRlbXBsYXRlczxfX1ZBX0FSR1NfXz46OnR5
cGUgZ3Rlc3RfQWxsVGVzdHNfOyBcCiAgIH0gXApAQCAtMjQ3LDEyICsyNDgsMTUgQEAgSU5TVEFO
VElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMpOwogLy8gVGhlICdU
eXBlcycgdGVtcGxhdGUgYXJndW1lbnQgYmVsb3cgbXVzdCBoYXZlIHNwYWNlcyBhcm91bmQgaXQK
IC8vIHNpbmNlIHNvbWUgY29tcGlsZXJzIG1heSBjaG9rZSBvbiAnPj4nIHdoZW4gcGFzc2luZyBh
IHRlbXBsYXRlCiAvLyBpbnN0YW5jZSAoZS5nLiBUeXBlczxpbnQ+KQotI2RlZmluZSBJTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChQcmVmaXgsIENhc2VOYW1lLCBUeXBlcykgXAotICBib29s
IGd0ZXN0XyMjUHJlZml4IyNfIyNDYXNlTmFtZSA9IFwKKyMgZGVmaW5lIElOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QKFByZWZpeCwgQ2FzZU5hbWUsIFR5cGVzKSBcCisgIGJvb2wgZ3Rlc3Rf
IyNQcmVmaXgjI18jI0Nhc2VOYW1lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gXAogICAgICAg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTxDYXNlTmFtZSwg
XAogICAgICAgICAgIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhDYXNlTmFtZSk6Omd0ZXN0X0FsbFRl
c3RzXywgXAogICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlR5cGVMaXN0PCBUeXBlcyA+
Ojp0eXBlPjo6UmVnaXN0ZXIoXAotICAgICAgICAgICAgICAjUHJlZml4LCAjQ2FzZU5hbWUsIEdU
RVNUX1JFR0lTVEVSRURfVEVTVF9OQU1FU18oQ2FzZU5hbWUpKQorICAgICAgICAgICAgICAjUHJl
Zml4LCBcCisgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihf
X0ZJTEVfXywgX19MSU5FX18pLCBcCisgICAgICAgICAgICAgICZHVEVTVF9UWVBFRF9URVNUX0NB
U0VfUF9TVEFURV8oQ2FzZU5hbWUpLCBcCisgICAgICAgICAgICAgICNDYXNlTmFtZSwgR1RFU1Rf
UkVHSVNURVJFRF9URVNUX05BTUVTXyhDYXNlTmFtZSkpCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFT
X1RZUEVEX1RFU1RfUAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2d0ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2d0ZXN0LmgKaW5kZXggOTIxZmFkMTFmY2M4ZjI0YzBkZDIyMzk0YTQ4NjdhYjI0YjZlYTBjMy4u
Zjg0NmM1YmQ2Njk2NDk3N2ZhOTFlZmY5MDU5N2RkZDBiZGNkY2U4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaApAQCAtNTIsMzAgKzUyLDMyIEBA
CiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KIAogI2luY2x1ZGUgPGxpbWl0
cz4KKyNpbmNsdWRlIDxvc3RyZWFtPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgPGd0
ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwv
Z3Rlc3Qtc3RyaW5nLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oPgotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1wYXJh
bS10ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3RfcHJvZC5oPgotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0LXRlc3QtcGFydC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaD4K
KyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oIgorI2luY2x1ZGUgImd0
ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LWRlYXRo
LXRlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1tZXNzYWdlLmgiCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QtcGFyYW0tdGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXByaW50ZXJzLmgi
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3RfcHJvZC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXRl
c3QtcGFydC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaCIKIAogLy8gRGVw
ZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSwgZGlmZmVyZW50IHN0cmluZyBjbGFzc2VzIGFyZSBhdmFp
bGFibGUuCiAvLyBPbiBMaW51eCwgaW4gYWRkaXRpb24gdG8gOjpzdGQ6OnN0cmluZywgR29vZ2xl
IGFsc28gbWFrZXMgdXNlIG9mCiAvLyBjbGFzcyA6OnN0cmluZywgd2hpY2ggaGFzIHRoZSBzYW1l
IGludGVyZmFjZSBhcyA6OnN0ZDo6c3RyaW5nLCBidXQKIC8vIGhhcyBhIGRpZmZlcmVudCBpbXBs
ZW1lbnRhdGlvbi4KIC8vCi0vLyBUaGUgdXNlciBjYW4gZGVmaW5lIEdURVNUX0hBU19HTE9CQUxf
U1RSSU5HIHRvIDEgdG8gaW5kaWNhdGUgdGhhdAorLy8gWW91IGNhbiBkZWZpbmUgR1RFU1RfSEFT
X0dMT0JBTF9TVFJJTkcgdG8gMSB0byBpbmRpY2F0ZSB0aGF0CiAvLyA6OnN0cmluZyBpcyBhdmFp
bGFibGUgQU5EIGlzIGEgZGlzdGluY3QgdHlwZSB0byA6OnN0ZDo6c3RyaW5nLCBvcgogLy8gZGVm
aW5lIGl0IHRvIDAgdG8gaW5kaWNhdGUgb3RoZXJ3aXNlLgogLy8KLS8vIElmIHRoZSB1c2VyJ3Mg
OjpzdGQ6OnN0cmluZyBhbmQgOjpzdHJpbmcgYXJlIHRoZSBzYW1lIGNsYXNzIGR1ZSB0bwotLy8g
YWxpYXNpbmcsIGhlIHNob3VsZCBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgdG8gMC4K
Ky8vIElmIDo6c3RkOjpzdHJpbmcgYW5kIDo6c3RyaW5nIGFyZSB0aGUgc2FtZSBjbGFzcyBvbiB5
b3VyIHBsYXRmb3JtCisvLyBkdWUgdG8gYWxpYXNpbmcsIHlvdSBzaG91bGQgZGVmaW5lIEdURVNU
X0hBU19HTE9CQUxfU1RSSU5HIHRvIDAuCiAvLwotLy8gSWYgdGhlIHVzZXIgZG9lc24ndCBkZWZp
bmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcsIGl0IGlzIGRlZmluZWQKKy8vIElmIHlvdSBkbyBu
b3QgZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HLCBpdCBpcyBkZWZpbmVkCiAvLyBoZXVy
aXN0aWNhbGx5LgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CkBAIC0xMzYsNiArMTM4LDExIEBAIEdU
RVNUX0RFQ0xBUkVfaW50MzJfKHN0YWNrX3RyYWNlX2RlcHRoKTsKIC8vIG5vbi16ZXJvIGNvZGUg
b3RoZXJ3aXNlLgogR1RFU1RfREVDTEFSRV9ib29sXyh0aHJvd19vbl9mYWlsdXJlKTsKIAorLy8g
V2hlbiB0aGlzIGZsYWcgaXMgc2V0IHdpdGggYSAiaG9zdDpwb3J0IiBzdHJpbmcsIG9uIHN1cHBv
cnRlZAorLy8gcGxhdGZvcm1zIHRlc3QgcmVzdWx0cyBhcmUgc3RyZWFtZWQgdG8gdGhlIHNwZWNp
ZmllZCBwb3J0IG9uCisvLyB0aGUgc3BlY2lmaWVkIGhvc3QgbWFjaGluZS4KK0dURVNUX0RFQ0xB
UkVfc3RyaW5nXyhzdHJlYW1fcmVzdWx0X3RvKTsKKwogLy8gVGhlIHVwcGVyIGxpbWl0IGZvciB2
YWxpZCBzdGFjayB0cmFjZSBkZXB0aHMuCiBjb25zdCBpbnQga01heFN0YWNrVHJhY2VEZXB0aCA9
IDEwMDsKIApAQCAtMTQ3LDMxICsxNTQsMjYgQEAgY2xhc3MgRXhlY0RlYXRoVGVzdDsKIGNsYXNz
IE5vRXhlY0RlYXRoVGVzdDsKIGNsYXNzIEZpbmFsU3VjY2Vzc0NoZWNrZXI7CiBjbGFzcyBHVGVz
dEZsYWdTYXZlcjsKLWNsYXNzIFRlc3RJbmZvSW1wbDsKK2NsYXNzIFN0cmVhbWluZ0xpc3RlbmVy
VGVzdDsKIGNsYXNzIFRlc3RSZXN1bHRBY2Nlc3NvcjsKIGNsYXNzIFRlc3RFdmVudExpc3RlbmVy
c0FjY2Vzc29yOwogY2xhc3MgVGVzdEV2ZW50UmVwZWF0ZXI7CitjbGFzcyBVbml0VGVzdFJlY29y
ZFByb3BlcnR5VGVzdEhlbHBlcjsKIGNsYXNzIFdpbmRvd3NEZWF0aFRlc3Q7CiBjbGFzcyBVbml0
VGVzdEltcGwqIEdldFVuaXRUZXN0SW1wbCgpOwogdm9pZCBSZXBvcnRGYWlsdXJlSW5Vbmtub3du
TG9jYXRpb24oVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotY2xhc3MgUHJl
dHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOwotY2xhc3MgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVy
OwotCi0vLyBDb252ZXJ0cyBhIHN0cmVhbWFibGUgdmFsdWUgdG8gYSBTdHJpbmcuICBBIE5VTEwg
cG9pbnRlciBpcwotLy8gY29udmVydGVkIHRvICIobnVsbCkiLiAgV2hlbiB0aGUgaW5wdXQgdmFs
dWUgaXMgYSA6OnN0cmluZywKLS8vIDo6c3RkOjpzdHJpbmcsIDo6d3N0cmluZywgb3IgOjpzdGQ6
OndzdHJpbmcgb2JqZWN0LCBlYWNoIE5VTAotLy8gY2hhcmFjdGVyIGluIGl0IGlzIHJlcGxhY2Vk
IHdpdGggIlxcMCIuCi0vLyBEZWNsYXJlZCBpbiBndGVzdC1pbnRlcm5hbC5oIGJ1dCBkZWZpbmVk
IGhlcmUsIHNvIHRoYXQgaXQgaGFzIGFjY2VzcwotLy8gdG8gdGhlIGRlZmluaXRpb24gb2YgdGhl
IE1lc3NhZ2UgY2xhc3MsIHJlcXVpcmVkIGJ5IHRoZSBBUk0KLS8vIGNvbXBpbGVyLgotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1TdHJpbmcgU3RyZWFtYWJsZVRvU3RyaW5nKGNvbnN0IFQmIHN0cmVh
bWFibGUpIHsKLSAgcmV0dXJuIChNZXNzYWdlKCkgPDwgc3RyZWFtYWJsZSkuR2V0U3RyaW5nKCk7
Ci19CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbWVzc2FnZSk7CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogCisvLyBUaGUgZnJpZW5k
IHJlbGF0aW9uc2hpcCBvZiBzb21lIG9mIHRoZXNlIGNsYXNzZXMgaXMgY3ljbGljLgorLy8gSWYg
d2UgZG9uJ3QgZm9yd2FyZCBkZWNsYXJlIHRoZW0gdGhlIGNvbXBpbGVyIG1pZ2h0IGNvbmZ1c2Ug
dGhlIGNsYXNzZXMKKy8vIGluIGZyaWVuZHNoaXAgY2xhdXNlcyB3aXRoIHNhbWUgbmFtZWQgY2xh
c3NlcyBvbiB0aGUgc2NvcGUuCitjbGFzcyBUZXN0OworY2xhc3MgVGVzdENhc2U7CitjbGFzcyBU
ZXN0SW5mbzsKK2NsYXNzIFVuaXRUZXN0OworCiAvLyBBIGNsYXNzIGZvciBpbmRpY2F0aW5nIHdo
ZXRoZXIgYW4gYXNzZXJ0aW9uIHdhcyBzdWNjZXNzZnVsLiAgV2hlbgogLy8gdGhlIGFzc2VydGlv
biB3YXNuJ3Qgc3VjY2Vzc2Z1bCwgdGhlIEFzc2VydGlvblJlc3VsdCBvYmplY3QKIC8vIHJlbWVt
YmVycyBhIG5vbi1lbXB0eSBtZXNzYWdlIHRoYXQgZGVzY3JpYmVzIGhvdyBpdCBmYWlsZWQuCkBA
IC0yNTYsOCArMjU4LDMxIEBAIGNsYXNzIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IHsKICAg
Ly8gQ29weSBjb25zdHJ1Y3Rvci4KICAgLy8gVXNlZCBpbiBFWFBFQ1RfVFJVRS9GQUxTRShhc3Nl
cnRpb25fcmVzdWx0KS4KICAgQXNzZXJ0aW9uUmVzdWx0KGNvbnN0IEFzc2VydGlvblJlc3VsdCYg
b3RoZXIpOworCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQ4MDAgLyogZm9y
Y2luZyB2YWx1ZSB0byBib29sICovKQorCiAgIC8vIFVzZWQgaW4gdGhlIEVYUEVDVF9UUlVFL0ZB
TFNFKGJvb2xfZXhwcmVzc2lvbikuCi0gIGV4cGxpY2l0IEFzc2VydGlvblJlc3VsdChib29sIHN1
Y2Nlc3MpIDogc3VjY2Vzc18oc3VjY2Vzcykge30KKyAgLy8KKyAgLy8gVCBtdXN0IGJlIGNvbnRl
eHR1YWxseSBjb252ZXJ0aWJsZSB0byBib29sLgorICAvLworICAvLyBUaGUgc2Vjb25kIHBhcmFt
ZXRlciBwcmV2ZW50cyB0aGlzIG92ZXJsb2FkIGZyb20gYmVpbmcgY29uc2lkZXJlZCBpZgorICAv
LyB0aGUgYXJndW1lbnQgaXMgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0byBBc3NlcnRpb25SZXN1
bHQuIEluIHRoYXQgY2FzZQorICAvLyB3ZSB3YW50IEFzc2VydGlvblJlc3VsdCdzIGNvcHkgY29u
c3RydWN0b3IgdG8gYmUgdXNlZC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIGV4cGxpY2l0
IEFzc2VydGlvblJlc3VsdCgKKyAgICAgIGNvbnN0IFQmIHN1Y2Nlc3MsCisgICAgICB0eXBlbmFt
ZSBpbnRlcm5hbDo6RW5hYmxlSWY8CisgICAgICAgICAgIWludGVybmFsOjpJbXBsaWNpdGx5Q29u
dmVydGlibGU8VCwgQXNzZXJ0aW9uUmVzdWx0Pjo6dmFsdWU+Ojp0eXBlKgorICAgICAgICAgIC8q
ZW5hYmxlciovID0gTlVMTCkKKyAgICAgIDogc3VjY2Vzc18oc3VjY2Vzcykge30KKworICBHVEVT
VF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKworICAvLyBBc3NpZ25tZW50IG9wZXJhdG9y
LgorICBBc3NlcnRpb25SZXN1bHQmIG9wZXJhdG9yPShBc3NlcnRpb25SZXN1bHQgb3RoZXIpIHsK
KyAgICBzd2FwKG90aGVyKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KIAogICAvLyBSZXR1cm5z
IHRydWUgaWZmIHRoZSBhc3NlcnRpb24gc3VjY2VlZGVkLgogICBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gc3VjY2Vzc187IH0gIC8vIE5PTElOVApAQCAtMjcwLDIwICsyOTUsMzYgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgewogICAvLyBhc3NlcnRpb24ncyBleHBl
Y3RhdGlvbikuIFdoZW4gbm90aGluZyBoYXMgYmVlbiBzdHJlYW1lZCBpbnRvIHRoZQogICAvLyBv
YmplY3QsIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLgogICBjb25zdCBjaGFyKiBtZXNzYWdlKCkg
Y29uc3QgewotICAgIHJldHVybiBtZXNzYWdlXy5nZXQoKSAhPSBOVUxMICYmIG1lc3NhZ2VfLT5j
X3N0cigpICE9IE5VTEwgPwotICAgICAgICAgICBtZXNzYWdlXy0+Y19zdHIoKSA6ICIiOworICAg
IHJldHVybiBtZXNzYWdlXy5nZXQoKSAhPSBOVUxMID8gIG1lc3NhZ2VfLT5jX3N0cigpIDogIiI7
CiAgIH0KICAgLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogUmVtb3ZlIHRoaXMgYWZ0ZXIgbWFr
aW5nIHN1cmUgbm8gY2xpZW50cyB1c2UgaXQuCiAgIC8vIERlcHJlY2F0ZWQ7IHBsZWFzZSB1c2Ug
bWVzc2FnZSgpIGluc3RlYWQuCiAgIGNvbnN0IGNoYXIqIGZhaWx1cmVfbWVzc2FnZSgpIGNvbnN0
IHsgcmV0dXJuIG1lc3NhZ2UoKTsgfQogCiAgIC8vIFN0cmVhbXMgYSBjdXN0b20gZmFpbHVyZSBt
ZXNzYWdlIGludG8gdGhpcyBvYmplY3QuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBBc3NlcnRp
b25SZXN1bHQmIG9wZXJhdG9yPDwoY29uc3QgVCYgdmFsdWUpOworICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gQXNzZXJ0aW9uUmVzdWx0JiBvcGVyYXRvcjw8KGNvbnN0IFQmIHZhbHVlKSB7CisgICAg
QXBwZW5kTWVzc2FnZShNZXNzYWdlKCkgPDwgdmFsdWUpOworICAgIHJldHVybiAqdGhpczsKKyAg
fQorCisgIC8vIEFsbG93cyBzdHJlYW1pbmcgYmFzaWMgb3V0cHV0IG1hbmlwdWxhdG9ycyBzdWNo
IGFzIGVuZGwgb3IgZmx1c2ggaW50bworICAvLyB0aGlzIG9iamVjdC4KKyAgQXNzZXJ0aW9uUmVz
dWx0JiBvcGVyYXRvcjw8KAorICAgICAgOjpzdGQ6Om9zdHJlYW0mICgqYmFzaWNfbWFuaXB1bGF0
b3IpKDo6c3RkOjpvc3RyZWFtJiBzdHJlYW0pKSB7CisgICAgQXBwZW5kTWVzc2FnZShNZXNzYWdl
KCkgPDwgYmFzaWNfbWFuaXB1bGF0b3IpOworICAgIHJldHVybiAqdGhpczsKKyAgfQogCiAgcHJp
dmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSB3ZSB3YW50IEFzc2VydGlvblJlc3VsdCB0
byBiZQotICAvLyBjb3B5LWNvbnN0cnVjdGlibGUgYnV0IG5vdCBhc3NpZ25hYmxlLgotICB2b2lk
IG9wZXJhdG9yPShjb25zdCBBc3NlcnRpb25SZXN1bHQmIG90aGVyKTsKKyAgLy8gQXBwZW5kcyB0
aGUgY29udGVudHMgb2YgbWVzc2FnZSB0byBtZXNzYWdlXy4KKyAgdm9pZCBBcHBlbmRNZXNzYWdl
KGNvbnN0IE1lc3NhZ2UmIGFfbWVzc2FnZSkgeworICAgIGlmIChtZXNzYWdlXy5nZXQoKSA9PSBO
VUxMKQorICAgICAgbWVzc2FnZV8ucmVzZXQobmV3IDo6c3RkOjpzdHJpbmcpOworICAgIG1lc3Nh
Z2VfLT5hcHBlbmQoYV9tZXNzYWdlLkdldFN0cmluZygpLmNfc3RyKCkpOworICB9CisKKyAgLy8g
U3dhcCB0aGUgY29udGVudHMgb2YgdGhpcyBBc3NlcnRpb25SZXN1bHQgd2l0aCBvdGhlci4KKyAg
dm9pZCBzd2FwKEFzc2VydGlvblJlc3VsdCYgb3RoZXIpOwogCiAgIC8vIFN0b3JlcyByZXN1bHQg
b2YgdGhlIGFzc2VydGlvbiBwcmVkaWNhdGUuCiAgIGJvb2wgc3VjY2Vzc187CkBAIC0yOTEsMTkg
KzMzMiw4IEBAIGNsYXNzIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IHsKICAgLy8gY29uc3Ry
dWN0IGlzIG5vdCBzYXRpc2ZpZWQgd2l0aCB0aGUgcHJlZGljYXRlJ3Mgb3V0Y29tZS4KICAgLy8g
UmVmZXJlbmNlZCB2aWEgYSBwb2ludGVyIHRvIGF2b2lkIHRha2luZyB0b28gbXVjaCBzdGFjayBm
cmFtZSBzcGFjZQogICAvLyB3aXRoIHRlc3QgYXNzZXJ0aW9ucy4KLSAgaW50ZXJuYWw6OnNjb3Bl
ZF9wdHI8aW50ZXJuYWw6OlN0cmluZz4gbWVzc2FnZV87Ci19OyAgLy8gY2xhc3MgQXNzZXJ0aW9u
UmVzdWx0Ci0KLS8vIFN0cmVhbXMgYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlIGludG8gdGhpcyBv
YmplY3QuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFzc2VydGlvblJlc3VsdCYgQXNzZXJ0aW9u
UmVzdWx0OjpvcGVyYXRvcjw8KGNvbnN0IFQmIHZhbHVlKSB7Ci0gIE1lc3NhZ2UgbXNnOwotICBp
ZiAobWVzc2FnZV8uZ2V0KCkgIT0gTlVMTCkKLSAgICBtc2cgPDwgKm1lc3NhZ2VfOwotICBtc2cg
PDwgdmFsdWU7Ci0gIG1lc3NhZ2VfLnJlc2V0KG5ldyBpbnRlcm5hbDo6U3RyaW5nKG1zZy5HZXRT
dHJpbmcoKSkpOwotICByZXR1cm4gKnRoaXM7Ci19CisgIGludGVybmFsOjpzY29wZWRfcHRyPCA6
OnN0ZDo6c3RyaW5nPiBtZXNzYWdlXzsKK307CiAKIC8vIE1ha2VzIGEgc3VjY2Vzc2Z1bCBhc3Nl
cnRpb24gcmVzdWx0LgogR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uU3VjY2Vz
cygpOwpAQCAtMzI5LDggKzM1OSw4IEBAIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IEFzc2Vy
dGlvbkZhaWx1cmUoY29uc3QgTWVzc2FnZSYgbXNnKTsKIC8vCiAvLyAgIGNsYXNzIEZvb1Rlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAvLyAgICBwcm90ZWN0ZWQ6Ci0vLyAgICAgdmlydHVh
bCB2b2lkIFNldFVwKCkgeyAuLi4gfQotLy8gICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsg
Li4uIH0KKy8vICAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUgeyAuLi4gfQorLy8gICAgIHZvaWQg
VGVhckRvd24oKSBvdmVycmlkZSB7IC4uLiB9CiAvLyAgICAgLi4uCiAvLyAgIH07CiAvLwpAQCAt
MzQwLDcgKzM3MCw3IEBAIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvbkZhaWx1
cmUoY29uc3QgTWVzc2FnZSYgbXNnKTsKIC8vIFRlc3QgaXMgbm90IGNvcHlhYmxlLgogY2xhc3Mg
R1RFU1RfQVBJXyBUZXN0IHsKICBwdWJsaWM6Ci0gIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VGVz
dEluZm9JbXBsOworICBmcmllbmQgY2xhc3MgVGVzdEluZm87CiAKICAgLy8gRGVmaW5lcyB0eXBl
cyBmb3IgcG9pbnRlcnMgdG8gZnVuY3Rpb25zIHRoYXQgc2V0IHVwIGFuZCB0ZWFyIGRvd24KICAg
Ly8gYSB0ZXN0IGNhc2UuCkBAIC0zNzYsMjAgKzQwNiwyMSBAQCBjbGFzcyBHVEVTVF9BUElfIFRl
c3QgewogICAvLyBub24tZmF0YWwpIGZhaWx1cmUuCiAgIHN0YXRpYyBib29sIEhhc0ZhaWx1cmUo
KSB7IHJldHVybiBIYXNGYXRhbEZhaWx1cmUoKSB8fCBIYXNOb25mYXRhbEZhaWx1cmUoKTsgfQog
Ci0gIC8vIExvZ3MgYSBwcm9wZXJ0eSBmb3IgdGhlIGN1cnJlbnQgdGVzdC4gIE9ubHkgdGhlIGxh
c3QgdmFsdWUgZm9yIGEgZ2l2ZW4KLSAgLy8ga2V5IGlzIHJlbWVtYmVyZWQuCi0gIC8vIFRoZXNl
IGFyZSBwdWJsaWMgc3RhdGljIHNvIHRoZXkgY2FuIGJlIGNhbGxlZCBmcm9tIHV0aWxpdHkgZnVu
Y3Rpb25zCi0gIC8vIHRoYXQgYXJlIG5vdCBtZW1iZXJzIG9mIHRoZSB0ZXN0IGZpeHR1cmUuCi0g
IC8vIFRoZSBhcmd1bWVudHMgYXJlIGNvbnN0IGNoYXIqIGluc3RlYWQgc3RyaW5ncywgYXMgR29v
Z2xlIFRlc3QgaXMgdXNlZAotICAvLyBvbiBwbGF0Zm9ybXMgd2hlcmUgc3RyaW5nIGRvZXNuJ3Qg
Y29tcGlsZS4KLSAgLy8KLSAgLy8gTm90ZSB0aGF0IGEgZHJpdmluZyBjb25zaWRlcmF0aW9uIGZv
ciB0aGVzZSBSZWNvcmRQcm9wZXJ0eSBtZXRob2RzCi0gIC8vIHdhcyB0byBwcm9kdWNlIHhtbCBv
dXRwdXQgc3VpdGVkIHRvIHRoZSBHcmVlbnNwYW4gY2hhcnRpbmcgdXRpbGl0eSwKLSAgLy8gd2hp
Y2ggYXQgcHJlc2VudCB3aWxsIG9ubHkgY2hhcnQgdmFsdWVzIHRoYXQgZml0IGluIGEgMzItYml0
IGludC4gSXQKLSAgLy8gaXMgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0eSB0byByZXN0cmljdCB0
aGVpciB2YWx1ZXMgdG8gMzItYml0IGludHMKLSAgLy8gaWYgdGhleSBpbnRlbmQgdGhlbSB0byBi
ZSB1c2VkIHdpdGggR3JlZW5zcGFuLgotICBzdGF0aWMgdm9pZCBSZWNvcmRQcm9wZXJ0eShjb25z
dCBjaGFyKiBrZXksIGNvbnN0IGNoYXIqIHZhbHVlKTsKLSAgc3RhdGljIHZvaWQgUmVjb3JkUHJv
cGVydHkoY29uc3QgY2hhcioga2V5LCBpbnQgdmFsdWUpOworICAvLyBMb2dzIGEgcHJvcGVydHkg
Zm9yIHRoZSBjdXJyZW50IHRlc3QsIHRlc3QgY2FzZSwgb3IgZm9yIHRoZSBlbnRpcmUKKyAgLy8g
aW52b2NhdGlvbiBvZiB0aGUgdGVzdCBwcm9ncmFtIHdoZW4gdXNlZCBvdXRzaWRlIG9mIHRoZSBj
b250ZXh0IG9mIGEKKyAgLy8gdGVzdCBjYXNlLiAgT25seSB0aGUgbGFzdCB2YWx1ZSBmb3IgYSBn
aXZlbiBrZXkgaXMgcmVtZW1iZXJlZC4gIFRoZXNlCisgIC8vIGFyZSBwdWJsaWMgc3RhdGljIHNv
IHRoZXkgY2FuIGJlIGNhbGxlZCBmcm9tIHV0aWxpdHkgZnVuY3Rpb25zIHRoYXQgYXJlCisgIC8v
IG5vdCBtZW1iZXJzIG9mIHRoZSB0ZXN0IGZpeHR1cmUuICBDYWxscyB0byBSZWNvcmRQcm9wZXJ0
eSBtYWRlIGR1cmluZworICAvLyBsaWZlc3BhbiBvZiB0aGUgdGVzdCAoZnJvbSB0aGUgbW9tZW50
IGl0cyBjb25zdHJ1Y3RvciBzdGFydHMgdG8gdGhlCisgIC8vIG1vbWVudCBpdHMgZGVzdHJ1Y3Rv
ciBmaW5pc2hlcykgd2lsbCBiZSBvdXRwdXQgaW4gWE1MIGFzIGF0dHJpYnV0ZXMgb2YKKyAgLy8g
dGhlIDx0ZXN0Y2FzZT4gZWxlbWVudC4gIFByb3BlcnRpZXMgcmVjb3JkZWQgZnJvbSBmaXh0dXJl
J3MKKyAgLy8gU2V0VXBUZXN0Q2FzZSBvciBUZWFyRG93blRlc3RDYXNlIGFyZSBsb2dnZWQgYXMg
YXR0cmlidXRlcyBvZiB0aGUKKyAgLy8gY29ycmVzcG9uZGluZyA8dGVzdHN1aXRlPiBlbGVtZW50
LiAgQ2FsbHMgdG8gUmVjb3JkUHJvcGVydHkgbWFkZSBpbiB0aGUKKyAgLy8gZ2xvYmFsIGNvbnRl
eHQgKGJlZm9yZSBvciBhZnRlciBpbnZvY2F0aW9uIG9mIFJVTl9BTExfVEVTVFMgYW5kIGZyb20K
KyAgLy8gU2V0VXAvVGVhckRvd24gbWV0aG9kIG9mIEVudmlyb25tZW50IG9iamVjdHMgcmVnaXN0
ZXJlZCB3aXRoIEdvb2dsZQorICAvLyBUZXN0KSB3aWxsIGJlIG91dHB1dCBhcyBhdHRyaWJ1dGVz
IG9mIHRoZSA8dGVzdHN1aXRlcz4gZWxlbWVudC4KKyAgc3RhdGljIHZvaWQgUmVjb3JkUHJvcGVy
dHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKTsKKyAg
c3RhdGljIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwgaW50IHZh
bHVlKTsKIAogIHByb3RlY3RlZDoKICAgLy8gQ3JlYXRlcyBhIFRlc3Qgb2JqZWN0LgpAQCAtNDE3
LDIwICs0NDgsMjMgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0IHsKICAgLy8gU2V0cyB1cCwgZXhl
Y3V0ZXMsIGFuZCB0ZWFycyBkb3duIHRoZSB0ZXN0LgogICB2b2lkIFJ1bigpOwogCi0gIC8vIFVz
ZXMgYSBHVGVzdEZsYWdTYXZlciB0byBzYXZlIGFuZCByZXN0b3JlIGFsbCBHb29nbGUgVGVzdCBm
bGFncy4KLSAgY29uc3QgaW50ZXJuYWw6OkdUZXN0RmxhZ1NhdmVyKiBjb25zdCBndGVzdF9mbGFn
X3NhdmVyXzsKKyAgLy8gRGVsZXRlcyBzZWxmLiAgV2UgZGVsaWJlcmF0ZWx5IHBpY2sgYW4gdW51
c3VhbCBuYW1lIGZvciB0aGlzCisgIC8vIGludGVybmFsIG1ldGhvZCB0byBhdm9pZCBjbGFzaGlu
ZyB3aXRoIG5hbWVzIHVzZWQgaW4gdXNlciBURVNUcy4KKyAgdm9pZCBEZWxldGVTZWxmXygpIHsg
ZGVsZXRlIHRoaXM7IH0KKworICBjb25zdCBpbnRlcm5hbDo6c2NvcGVkX3B0cjwgR1RFU1RfRkxB
R19TQVZFUl8gPiBndGVzdF9mbGFnX3NhdmVyXzsKIAotICAvLyBPZnRlbiBhIHVzZXIgbWlzLXNw
ZWxscyBTZXRVcCgpIGFzIFNldHVwKCkgYW5kIHNwZW5kcyBhIGxvbmcgdGltZQorICAvLyBPZnRl
biBhIHVzZXIgbWlzc3BlbGxzIFNldFVwKCkgYXMgU2V0dXAoKSBhbmQgc3BlbmRzIGEgbG9uZyB0
aW1lCiAgIC8vIHdvbmRlcmluZyB3aHkgaXQgaXMgbmV2ZXIgY2FsbGVkIGJ5IEdvb2dsZSBUZXN0
LiAgVGhlIGRlY2xhcmF0aW9uIG9mCiAgIC8vIHRoZSBmb2xsb3dpbmcgbWV0aG9kIGlzIHNvbGVs
eSBmb3IgY2F0Y2hpbmcgc3VjaCBhbiBlcnJvciBhdAogICAvLyBjb21waWxlIHRpbWU6CiAgIC8v
CiAgIC8vICAgLSBUaGUgcmV0dXJuIHR5cGUgaXMgZGVsaWJlcmF0ZWx5IGNob3NlbiB0byBiZSBu
b3Qgdm9pZCwgc28gaXQKLSAgLy8gICB3aWxsIGJlIGEgY29uZmxpY3QgaWYgYSB1c2VyIGRlY2xh
cmVzIHZvaWQgU2V0dXAoKSBpbiBoaXMgdGVzdAotICAvLyAgIGZpeHR1cmUuCisgIC8vICAgd2ls
bCBiZSBhIGNvbmZsaWN0IGlmIHZvaWQgU2V0dXAoKSBpcyBkZWNsYXJlZCBpbiB0aGUgdXNlcidz
CisgIC8vICAgdGVzdCBmaXh0dXJlLgogICAvLwogICAvLyAgIC0gVGhpcyBtZXRob2QgaXMgcHJp
dmF0ZSwgc28gaXQgd2lsbCBiZSBhbm90aGVyIGNvbXBpbGVyIGVycm9yCi0gIC8vICAgaWYgYSB1
c2VyIGNhbGxzIGl0IGZyb20gaGlzIHRlc3QgZml4dHVyZS4KKyAgLy8gICBpZiB0aGUgbWV0aG9k
IGlzIGNhbGxlZCBmcm9tIHRoZSB1c2VyJ3MgdGVzdCBmaXh0dXJlLgogICAvLwogICAvLyBETyBO
T1QgT1ZFUlJJREUgVEhJUyBGVU5DVElPTi4KICAgLy8KQEAgLTQ1NCw3ICs0ODgsNyBAQCBjbGFz
cyBUZXN0UHJvcGVydHkgewogICAvLyBDJ3Rvci4gIFRlc3RQcm9wZXJ0eSBkb2VzIE5PVCBoYXZl
IGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KICAgLy8gQWx3YXlzIHVzZSB0aGlzIGNvbnN0cnVjdG9y
ICh3aXRoIHBhcmFtZXRlcnMpIHRvIGNyZWF0ZSBhCiAgIC8vIFRlc3RQcm9wZXJ0eSBvYmplY3Qu
Ci0gIFRlc3RQcm9wZXJ0eShjb25zdCBjaGFyKiBhX2tleSwgY29uc3QgY2hhciogYV92YWx1ZSkg
OgorICBUZXN0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGFfa2V5LCBjb25zdCBzdGQ6OnN0
cmluZyYgYV92YWx1ZSkgOgogICAgIGtleV8oYV9rZXkpLCB2YWx1ZV8oYV92YWx1ZSkgewogICB9
CiAKQEAgLTQ2OSwxNSArNTAzLDE1IEBAIGNsYXNzIFRlc3RQcm9wZXJ0eSB7CiAgIH0KIAogICAv
LyBTZXRzIGEgbmV3IHZhbHVlLCBvdmVycmlkaW5nIHRoZSBvbmUgc3VwcGxpZWQgaW4gdGhlIGNv
bnN0cnVjdG9yLgotICB2b2lkIFNldFZhbHVlKGNvbnN0IGNoYXIqIG5ld192YWx1ZSkgeworICB2
b2lkIFNldFZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBuZXdfdmFsdWUpIHsKICAgICB2YWx1ZV8g
PSBuZXdfdmFsdWU7CiAgIH0KIAogIHByaXZhdGU6CiAgIC8vIFRoZSBrZXkgc3VwcGxpZWQgYnkg
dGhlIHVzZXIuCi0gIGludGVybmFsOjpTdHJpbmcga2V5XzsKKyAgc3RkOjpzdHJpbmcga2V5XzsK
ICAgLy8gVGhlIHZhbHVlIHN1cHBsaWVkIGJ5IHRoZSB1c2VyLgotICBpbnRlcm5hbDo6U3RyaW5n
IHZhbHVlXzsKKyAgc3RkOjpzdHJpbmcgdmFsdWVfOwogfTsKIAogLy8gVGhlIHJlc3VsdCBvZiBh
IHNpbmdsZSBUZXN0LiAgVGhpcyBpbmNsdWRlcyBhIGxpc3Qgb2YKQEAgLTUyOCwxMCArNTYyLDEw
IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFJlc3VsdCB7CiAKICBwcml2YXRlOgogICBmcmllbmQg
Y2xhc3MgVGVzdEluZm87CisgIGZyaWVuZCBjbGFzcyBUZXN0Q2FzZTsKICAgZnJpZW5kIGNsYXNz
IFVuaXRUZXN0OwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkRlZmF1bHRHbG9iYWxUZXN0UGFy
dFJlc3VsdFJlcG9ydGVyOwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkV4ZWNEZWF0aFRlc3Q7
Ci0gIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VGVzdEluZm9JbXBsOwogICBmcmllbmQgY2xhc3Mg
aW50ZXJuYWw6OlRlc3RSZXN1bHRBY2Nlc3NvcjsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpV
bml0VGVzdEltcGw7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6V2luZG93c0RlYXRoVGVzdDsK
QEAgLTU1MywxMyArNTg3LDE2IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFJlc3VsdCB7CiAgIC8v
IGEgbm9uLWZhdGFsIGZhaWx1cmUgaWYgaW52YWxpZCAoZS5nLiwgaWYgaXQgY29uZmxpY3RzIHdp
dGggcmVzZXJ2ZWQKICAgLy8ga2V5IG5hbWVzKS4gSWYgYSBwcm9wZXJ0eSBpcyBhbHJlYWR5IHJl
Y29yZGVkIGZvciB0aGUgc2FtZSBrZXksIHRoZQogICAvLyB2YWx1ZSB3aWxsIGJlIHVwZGF0ZWQs
IHJhdGhlciB0aGFuIHN0b3JpbmcgbXVsdGlwbGUgdmFsdWVzIGZvciB0aGUgc2FtZQotICAvLyBr
ZXkuCi0gIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3Bl
cnR5KTsKKyAgLy8ga2V5LiAgeG1sX2VsZW1lbnQgc3BlY2lmaWVzIHRoZSBlbGVtZW50IGZvciB3
aGljaCB0aGUgcHJvcGVydHkgaXMgYmVpbmcKKyAgLy8gcmVjb3JkZWQgYW5kIGlzIHVzZWQgZm9y
IHZhbGlkYXRpb24uCisgIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHht
bF9lbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVz
dF9wcm9wZXJ0eSk7CiAKICAgLy8gQWRkcyBhIGZhaWx1cmUgaWYgdGhlIGtleSBpcyBhIHJlc2Vy
dmVkIGF0dHJpYnV0ZSBvZiBHb29nbGUgVGVzdAogICAvLyB0ZXN0Y2FzZSB0YWdzLiAgUmV0dXJu
cyB0cnVlIGlmIHRoZSBwcm9wZXJ0eSBpcyB2YWxpZC4KICAgLy8gVE9ETyhydXNzcik6IFZhbGlk
YXRlIGF0dHJpYnV0ZSBuYW1lcyBhcmUgbGVnYWwgYW5kIGh1bWFuIHJlYWRhYmxlLgotICBzdGF0
aWMgYm9vbCBWYWxpZGF0ZVRlc3RQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJv
cGVydHkpOworICBzdGF0aWMgYm9vbCBWYWxpZGF0ZVRlc3RQcm9wZXJ0eShjb25zdCBzdGQ6OnN0
cmluZyYgeG1sX2VsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSk7CiAKICAgLy8gQWRkcyBhIHRlc3QgcGFy
dCByZXN1bHQgdG8gdGhlIGxpc3QuCiAgIHZvaWQgQWRkVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVz
dFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpOwpAQCAtNjExLDIwICs2NDgsMzYgQEAgY2xh
c3MgR1RFU1RfQVBJXyBUZXN0SW5mbyB7CiAgIH5UZXN0SW5mbygpOwogCiAgIC8vIFJldHVybnMg
dGhlIHRlc3QgY2FzZSBuYW1lLgotICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0
OworICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRlc3RfY2Fz
ZV9uYW1lXy5jX3N0cigpOyB9CiAKICAgLy8gUmV0dXJucyB0aGUgdGVzdCBuYW1lLgotICBjb25z
dCBjaGFyKiBuYW1lKCkgY29uc3Q7CisgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7IHJldHVy
biBuYW1lXy5jX3N0cigpOyB9CisKKyAgLy8gUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgcGFyYW1l
dGVyIHR5cGUsIG9yIE5VTEwgaWYgdGhpcyBpcyBub3QgYSB0eXBlZAorICAvLyBvciBhIHR5cGUt
cGFyYW1ldGVyaXplZCB0ZXN0LgorICBjb25zdCBjaGFyKiB0eXBlX3BhcmFtKCkgY29uc3Qgewor
ICAgIGlmICh0eXBlX3BhcmFtXy5nZXQoKSAhPSBOVUxMKQorICAgICAgcmV0dXJuIHR5cGVfcGFy
YW1fLT5jX3N0cigpOworICAgIHJldHVybiBOVUxMOworICB9CiAKLSAgLy8gUmV0dXJucyB0aGUg
dGVzdCBjYXNlIGNvbW1lbnQuCi0gIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9jb21tZW50KCkgY29u
c3Q7CisgIC8vIFJldHVybnMgdGhlIHRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZhbHVlIHBh
cmFtZXRlciwgb3IgTlVMTCBpZiB0aGlzCisgIC8vIGlzIG5vdCBhIHZhbHVlLXBhcmFtZXRlcml6
ZWQgdGVzdC4KKyAgY29uc3QgY2hhciogdmFsdWVfcGFyYW0oKSBjb25zdCB7CisgICAgaWYgKHZh
bHVlX3BhcmFtXy5nZXQoKSAhPSBOVUxMKQorICAgICAgcmV0dXJuIHZhbHVlX3BhcmFtXy0+Y19z
dHIoKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIC8vIFJldHVybnMgdGhlIGZpbGUgbmFt
ZSB3aGVyZSB0aGlzIHRlc3QgaXMgZGVmaW5lZC4KKyAgY29uc3QgY2hhciogZmlsZSgpIGNvbnN0
IHsgcmV0dXJuIGxvY2F0aW9uXy5maWxlLmNfc3RyKCk7IH0KIAotICAvLyBSZXR1cm5zIHRoZSB0
ZXN0IGNvbW1lbnQuCi0gIGNvbnN0IGNoYXIqIGNvbW1lbnQoKSBjb25zdDsKKyAgLy8gUmV0dXJu
cyB0aGUgbGluZSB3aGVyZSB0aGlzIHRlc3QgaXMgZGVmaW5lZC4KKyAgaW50IGxpbmUoKSBjb25z
dCB7IHJldHVybiBsb2NhdGlvbl8ubGluZTsgfQogCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlz
IHRlc3Qgc2hvdWxkIHJ1biwgdGhhdCBpcyBpZiB0aGUgdGVzdCBpcyBub3QgZGlzYWJsZWQKLSAg
Ly8gKG9yIGl0IGlzIGRpc2FibGVkIGJ1dCB0aGUgYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxh
ZyBoYXMgYmVlbiBzcGVjaWZpZWQpCi0gIC8vIGFuZCBpdHMgZnVsbCBuYW1lIG1hdGNoZXMgdGhl
IHVzZXItc3BlY2lmaWVkIGZpbHRlci4KKyAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBz
aG91bGQgcnVuLCB0aGF0IGlzIGlmIHRoZSB0ZXN0IGlzIG5vdAorICAvLyBkaXNhYmxlZCAob3Ig
aXQgaXMgZGlzYWJsZWQgYnV0IHRoZSBhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnIGhhcwor
ICAvLyBiZWVuIHNwZWNpZmllZCkgYW5kIGl0cyBmdWxsIG5hbWUgbWF0Y2hlcyB0aGUgdXNlci1z
cGVjaWZpZWQgZmlsdGVyLgogICAvLwogICAvLyBHb29nbGUgVGVzdCBhbGxvd3MgdGhlIHVzZXIg
dG8gZmlsdGVyIHRoZSB0ZXN0cyBieSB0aGVpciBmdWxsIG5hbWVzLgogICAvLyBUaGUgZnVsbCBu
YW1lIG9mIGEgdGVzdCBCYXIgaW4gdGVzdCBjYXNlIEZvbyBpcyBkZWZpbmVkIGFzCkBAIC02Mzgs
MTAgKzY5MSwxOCBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RJbmZvIHsKICAgLy8KICAgLy8gRm9y
IGV4YW1wbGUsICpBKjpGb28uKiBpcyBhIGZpbHRlciB0aGF0IG1hdGNoZXMgYW55IHN0cmluZyB0
aGF0CiAgIC8vIGNvbnRhaW5zIHRoZSBjaGFyYWN0ZXIgJ0EnIG9yIHN0YXJ0cyB3aXRoICJGb28u
Ii4KLSAgYm9vbCBzaG91bGRfcnVuKCkgY29uc3Q7CisgIGJvb2wgc2hvdWxkX3J1bigpIGNvbnN0
IHsgcmV0dXJuIHNob3VsZF9ydW5fOyB9CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIHRl
c3Qgd2lsbCBhcHBlYXIgaW4gdGhlIFhNTCByZXBvcnQuCisgIGJvb2wgaXNfcmVwb3J0YWJsZSgp
IGNvbnN0IHsKKyAgICAvLyBGb3Igbm93LCB0aGUgWE1MIHJlcG9ydCBpbmNsdWRlcyBhbGwgdGVz
dHMgbWF0Y2hpbmcgdGhlIGZpbHRlci4KKyAgICAvLyBJbiB0aGUgZnV0dXJlLCB3ZSBtYXkgdHJp
bSB0ZXN0cyB0aGF0IGFyZSBleGNsdWRlZCBiZWNhdXNlIG9mCisgICAgLy8gc2hhcmRpbmcuCisg
ICAgcmV0dXJuIG1hdGNoZXNfZmlsdGVyXzsKKyAgfQogCiAgIC8vIFJldHVybnMgdGhlIHJlc3Vs
dCBvZiB0aGUgdGVzdC4KLSAgY29uc3QgVGVzdFJlc3VsdCogcmVzdWx0KCkgY29uc3Q7CisgIGNv
bnN0IFRlc3RSZXN1bHQqIHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuICZyZXN1bHRfOyB9CiAKICBw
cml2YXRlOgogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCkBAIC02NDksMzYgKzcxMCw2NCBAQCBj
bGFzcyBHVEVTVF9BUElfIFRlc3RJbmZvIHsKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RF
U1QKICAgZnJpZW5kIGNsYXNzIFRlc3Q7CiAgIGZyaWVuZCBjbGFzcyBUZXN0Q2FzZTsKLSAgZnJp
ZW5kIGNsYXNzIGludGVybmFsOjpUZXN0SW5mb0ltcGw7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5h
bDo6VW5pdFRlc3RJbXBsOworICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlN0cmVhbWluZ0xpc3Rl
bmVyVGVzdDsKICAgZnJpZW5kIFRlc3RJbmZvKiBpbnRlcm5hbDo6TWFrZUFuZFJlZ2lzdGVyVGVz
dEluZm8oCi0gICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwgY29uc3QgY2hhciogbmFt
ZSwKLSAgICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9jb21tZW50LCBjb25zdCBjaGFyKiBjb21t
ZW50LAorICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCisgICAgICBjb25zdCBjaGFy
KiBuYW1lLAorICAgICAgY29uc3QgY2hhciogdHlwZV9wYXJhbSwKKyAgICAgIGNvbnN0IGNoYXIq
IHZhbHVlX3BhcmFtLAorICAgICAgaW50ZXJuYWw6OkNvZGVMb2NhdGlvbiBjb2RlX2xvY2F0aW9u
LAogICAgICAgaW50ZXJuYWw6OlR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkLAogICAgICAgVGVzdDo6
U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAgICAgVGVzdDo6VGVhckRvd25UZXN0Q2Fz
ZUZ1bmMgdGVhcl9kb3duX3RjLAogICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFj
dG9yeSk7CiAKLSAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBtYXRjaGVzIHRoZSB1c2Vy
LXNwZWNpZmllZCBmaWx0ZXIuCi0gIGJvb2wgbWF0Y2hlc19maWx0ZXIoKSBjb25zdDsKKyAgLy8g
Q29uc3RydWN0cyBhIFRlc3RJbmZvIG9iamVjdC4gVGhlIG5ld2x5IGNvbnN0cnVjdGVkIGluc3Rh
bmNlIGFzc3VtZXMKKyAgLy8gb3duZXJzaGlwIG9mIHRoZSBmYWN0b3J5IG9iamVjdC4KKyAgVGVz
dEluZm8oY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RfY2FzZV9uYW1lLAorICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgbmFtZSwKKyAgICAgICAgICAgY29uc3QgY2hhciogYV90eXBlX3BhcmFt
LCAgIC8vIE5VTEwgaWYgbm90IGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QKKyAgICAgICAgICAg
Y29uc3QgY2hhciogYV92YWx1ZV9wYXJhbSwgIC8vIE5VTEwgaWYgbm90IGEgdmFsdWUtcGFyYW1l
dGVyaXplZCB0ZXN0CisgICAgICAgICAgIGludGVybmFsOjpDb2RlTG9jYXRpb24gYV9jb2RlX2xv
Y2F0aW9uLAorICAgICAgICAgICBpbnRlcm5hbDo6VHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCisg
ICAgICAgICAgIGludGVybmFsOjpUZXN0RmFjdG9yeUJhc2UqIGZhY3RvcnkpOwogCiAgIC8vIElu
Y3JlbWVudHMgdGhlIG51bWJlciBvZiBkZWF0aCB0ZXN0cyBlbmNvdW50ZXJlZCBpbiB0aGlzIHRl
c3Qgc28KICAgLy8gZmFyLgotICBpbnQgaW5jcmVtZW50X2RlYXRoX3Rlc3RfY291bnQoKTsKKyAg
aW50IGluY3JlbWVudF9kZWF0aF90ZXN0X2NvdW50KCkgeworICAgIHJldHVybiByZXN1bHRfLmlu
Y3JlbWVudF9kZWF0aF90ZXN0X2NvdW50KCk7CisgIH0KIAotICAvLyBBY2Nlc3NvcnMgZm9yIHRo
ZSBpbXBsZW1lbnRhdGlvbiBvYmplY3QuCi0gIGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGltcGwo
KSB7IHJldHVybiBpbXBsXzsgfQotICBjb25zdCBpbnRlcm5hbDo6VGVzdEluZm9JbXBsKiBpbXBs
KCkgY29uc3QgeyByZXR1cm4gaW1wbF87IH0KKyAgLy8gQ3JlYXRlcyB0aGUgdGVzdCBvYmplY3Qs
IHJ1bnMgaXQsIHJlY29yZHMgaXRzIHJlc3VsdCwgYW5kIHRoZW4KKyAgLy8gZGVsZXRlcyBpdC4K
KyAgdm9pZCBSdW4oKTsKIAotICAvLyBDb25zdHJ1Y3RzIGEgVGVzdEluZm8gb2JqZWN0LiBUaGUg
bmV3bHkgY29uc3RydWN0ZWQgaW5zdGFuY2UgYXNzdW1lcwotICAvLyBvd25lcnNoaXAgb2YgdGhl
IGZhY3Rvcnkgb2JqZWN0LgotICBUZXN0SW5mbyhjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwg
Y29uc3QgY2hhciogbmFtZSwKLSAgICAgICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX2NvbW1l
bnQsIGNvbnN0IGNoYXIqIGNvbW1lbnQsCi0gICAgICAgICAgIGludGVybmFsOjpUeXBlSWQgZml4
dHVyZV9jbGFzc19pZCwKLSAgICAgICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFj
dG9yeSk7CisgIHN0YXRpYyB2b2lkIENsZWFyVGVzdFJlc3VsdChUZXN0SW5mbyogdGVzdF9pbmZv
KSB7CisgICAgdGVzdF9pbmZvLT5yZXN1bHRfLkNsZWFyKCk7CisgIH0KIAotICAvLyBBbiBvcGFx
dWUgaW1wbGVtZW50YXRpb24gb2JqZWN0LgotICBpbnRlcm5hbDo6VGVzdEluZm9JbXBsKiBpbXBs
XzsKKyAgLy8gVGhlc2UgZmllbGRzIGFyZSBpbW11dGFibGUgcHJvcGVydGllcyBvZiB0aGUgdGVz
dC4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdF9jYXNlX25hbWVfOyAgICAgLy8gVGVzdCBjYXNl
IG5hbWUKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZV87ICAgICAgICAgICAgICAgLy8gVGVzdCBu
YW1lCisgIC8vIE5hbWUgb2YgdGhlIHBhcmFtZXRlciB0eXBlLCBvciBOVUxMIGlmIHRoaXMgaXMg
bm90IGEgdHlwZWQgb3IgYQorICAvLyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKyAgY29uc3Qg
aW50ZXJuYWw6OnNjb3BlZF9wdHI8Y29uc3QgOjpzdGQ6OnN0cmluZz4gdHlwZV9wYXJhbV87Cisg
IC8vIFRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZhbHVlIHBhcmFtZXRlciwgb3IgTlVMTCBp
ZiB0aGlzIGlzIG5vdCBhCisgIC8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKyAgY29uc3Qg
aW50ZXJuYWw6OnNjb3BlZF9wdHI8Y29uc3QgOjpzdGQ6OnN0cmluZz4gdmFsdWVfcGFyYW1fOwor
ICBpbnRlcm5hbDo6Q29kZUxvY2F0aW9uIGxvY2F0aW9uXzsKKyAgY29uc3QgaW50ZXJuYWw6OlR5
cGVJZCBmaXh0dXJlX2NsYXNzX2lkXzsgICAvLyBJRCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNz
CisgIGJvb2wgc2hvdWxkX3J1bl87ICAgICAgICAgICAgICAgICAvLyBUcnVlIGlmZiB0aGlzIHRl
c3Qgc2hvdWxkIHJ1bgorICBib29sIGlzX2Rpc2FibGVkXzsgICAgICAgICAgICAgICAgLy8gVHJ1
ZSBpZmYgdGhpcyB0ZXN0IGlzIGRpc2FibGVkCisgIGJvb2wgbWF0Y2hlc19maWx0ZXJfOyAgICAg
ICAgICAgICAvLyBUcnVlIGlmIHRoaXMgdGVzdCBtYXRjaGVzIHRoZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gdXNlci1zcGVjaWZpZWQgZmlsdGVyLgorICBpbnRlcm5h
bDo6VGVzdEZhY3RvcnlCYXNlKiBjb25zdCBmYWN0b3J5XzsgIC8vIFRoZSBmYWN0b3J5IHRoYXQg
Y3JlYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHRoZSB0ZXN0IG9iamVjdAorCisgIC8vIFRoaXMgZmllbGQgaXMgbXV0YWJsZSBhbmQgbmVlZHMg
dG8gYmUgcmVzZXQgYmVmb3JlIHJ1bm5pbmcgdGhlCisgIC8vIHRlc3QgZm9yIHRoZSBzZWNvbmQg
dGltZS4KKyAgVGVzdFJlc3VsdCByZXN1bHRfOwogCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8oVGVzdEluZm8pOwogfTsKQEAgLTY5Niw5ICs3ODUsMTEgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBUZXN0Q2FzZSB7CiAgIC8vIEFyZ3VtZW50czoKICAgLy8KICAgLy8gICBuYW1lOiAgICAg
ICAgIG5hbWUgb2YgdGhlIHRlc3QgY2FzZQorICAvLyAgIGFfdHlwZV9wYXJhbTogdGhlIG5hbWUg
b2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorICAvLyAgICAgICAgICAg
ICAgICAgdGhpcyBpcyBub3QgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KICAgLy8gICBzZXRf
dXBfdGM6ICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBj
YXNlCiAgIC8vICAgdGVhcl9kb3duX3RjOiBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRl
YXJzIGRvd24gdGhlIHRlc3QgY2FzZQotICBUZXN0Q2FzZShjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBjaGFyKiBjb21tZW50LAorICBUZXN0Q2FzZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFy
KiBhX3R5cGVfcGFyYW0sCiAgICAgICAgICAgIFRlc3Q6OlNldFVwVGVzdENhc2VGdW5jIHNldF91
cF90YywKICAgICAgICAgICAgVGVzdDo6VGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3Rj
KTsKIApAQCAtNzA4LDggKzc5OSwxMyBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RDYXNlIHsKICAg
Ly8gR2V0cyB0aGUgbmFtZSBvZiB0aGUgVGVzdENhc2UuCiAgIGNvbnN0IGNoYXIqIG5hbWUoKSBj
b25zdCB7IHJldHVybiBuYW1lXy5jX3N0cigpOyB9CiAKLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBj
YXNlIGNvbW1lbnQuCi0gIGNvbnN0IGNoYXIqIGNvbW1lbnQoKSBjb25zdCB7IHJldHVybiBjb21t
ZW50Xy5jX3N0cigpOyB9CisgIC8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB0
eXBlLCBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEKKyAgLy8gdHlwZS1wYXJhbWV0ZXJpemVkIHRl
c3QgY2FzZS4KKyAgY29uc3QgY2hhciogdHlwZV9wYXJhbSgpIGNvbnN0IHsKKyAgICBpZiAodHlw
ZV9wYXJhbV8uZ2V0KCkgIT0gTlVMTCkKKyAgICAgIHJldHVybiB0eXBlX3BhcmFtXy0+Y19zdHIo
KTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgdGVz
dCBpbiB0aGlzIHRlc3QgY2FzZSBzaG91bGQgcnVuLgogICBib29sIHNob3VsZF9ydW4oKSBjb25z
dCB7IHJldHVybiBzaG91bGRfcnVuXzsgfQpAQCAtNzIwLDkgKzgxNiwxNSBAQCBjbGFzcyBHVEVT
VF9BUElfIFRlc3RDYXNlIHsKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cyBp
biB0aGlzIHRlc3QgY2FzZS4KICAgaW50IGZhaWxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CiAKKyAg
Ly8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHRoYXQgd2lsbCBiZSByZXBvcnRl
ZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3Vu
dCgpIGNvbnN0OworCiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyBpbiB0
aGlzIHRlc3QgY2FzZS4KICAgaW50IGRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAv
LyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJlcG9y
dC4KKyAgaW50IHJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8vIEdldCB0aGUg
bnVtYmVyIG9mIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlIHRoYXQgc2hvdWxkIHJ1bi4KICAgaW50
IHRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3Q7CiAKQEAgLTc0Miw2ICs4NDQsMTAgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIHRvdGFsX3Rlc3RfY291bnQoKSAtIDEuIElmIGkg
aXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVMTC4KICAgY29uc3QgVGVzdEluZm8qIEdl
dFRlc3RJbmZvKGludCBpKSBjb25zdDsKIAorICAvLyBSZXR1cm5zIHRoZSBUZXN0UmVzdWx0IHRo
YXQgaG9sZHMgdGVzdCBwcm9wZXJ0aWVzIHJlY29yZGVkIGR1cmluZworICAvLyBleGVjdXRpb24g
b2YgU2V0VXBUZXN0Q2FzZSBhbmQgVGVhckRvd25UZXN0Q2FzZS4KKyAgY29uc3QgVGVzdFJlc3Vs
dCYgYWRfaG9jX3Rlc3RfcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gYWRfaG9jX3Rlc3RfcmVzdWx0
XzsgfQorCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNsYXNzIFRlc3Q7CiAgIGZyaWVuZCBjbGFzcyBp
bnRlcm5hbDo6VW5pdFRlc3RJbXBsOwpAQCAtNzc2LDE3ICs4ODIsNDQgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBUZXN0Q2FzZSB7CiAgIC8vIFJ1bnMgZXZlcnkgdGVzdCBpbiB0aGlzIFRlc3RDYXNlLgog
ICB2b2lkIFJ1bigpOwogCisgIC8vIFJ1bnMgU2V0VXBUZXN0Q2FzZSgpIGZvciB0aGlzIFRlc3RD
YXNlLiAgVGhpcyB3cmFwcGVyIGlzIG5lZWRlZAorICAvLyBmb3IgY2F0Y2hpbmcgZXhjZXB0aW9u
cyB0aHJvd24gZnJvbSBTZXRVcFRlc3RDYXNlKCkuCisgIHZvaWQgUnVuU2V0VXBUZXN0Q2FzZSgp
IHsgKCpzZXRfdXBfdGNfKSgpOyB9CisKKyAgLy8gUnVucyBUZWFyRG93blRlc3RDYXNlKCkgZm9y
IHRoaXMgVGVzdENhc2UuICBUaGlzIHdyYXBwZXIgaXMKKyAgLy8gbmVlZGVkIGZvciBjYXRjaGlu
ZyBleGNlcHRpb25zIHRocm93biBmcm9tIFRlYXJEb3duVGVzdENhc2UoKS4KKyAgdm9pZCBSdW5U
ZWFyRG93blRlc3RDYXNlKCkgeyAoKnRlYXJfZG93bl90Y18pKCk7IH0KKwogICAvLyBSZXR1cm5z
IHRydWUgaWZmIHRlc3QgcGFzc2VkLgotICBzdGF0aWMgYm9vbCBUZXN0UGFzc2VkKGNvbnN0IFRl
c3RJbmZvICogdGVzdF9pbmZvKTsKKyAgc3RhdGljIGJvb2wgVGVzdFBhc3NlZChjb25zdCBUZXN0
SW5mbyogdGVzdF9pbmZvKSB7CisgICAgcmV0dXJuIHRlc3RfaW5mby0+c2hvdWxkX3J1bigpICYm
IHRlc3RfaW5mby0+cmVzdWx0KCktPlBhc3NlZCgpOworICB9CiAKICAgLy8gUmV0dXJucyB0cnVl
IGlmZiB0ZXN0IGZhaWxlZC4KLSAgc3RhdGljIGJvb2wgVGVzdEZhaWxlZChjb25zdCBUZXN0SW5m
byAqIHRlc3RfaW5mbyk7CisgIHN0YXRpYyBib29sIFRlc3RGYWlsZWQoY29uc3QgVGVzdEluZm8q
IHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPnNob3VsZF9ydW4oKSAmJiB0ZXN0
X2luZm8tPnJlc3VsdCgpLT5GYWlsZWQoKTsKKyAgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYg
dGhlIHRlc3QgaXMgZGlzYWJsZWQgYW5kIHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhNTAorICAv
LyByZXBvcnQuCisgIHN0YXRpYyBib29sIFRlc3RSZXBvcnRhYmxlRGlzYWJsZWQoY29uc3QgVGVz
dEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPmlzX3JlcG9ydGFibGUo
KSAmJiB0ZXN0X2luZm8tPmlzX2Rpc2FibGVkXzsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBp
ZmYgdGVzdCBpcyBkaXNhYmxlZC4KLSAgc3RhdGljIGJvb2wgVGVzdERpc2FibGVkKGNvbnN0IFRl
c3RJbmZvICogdGVzdF9pbmZvKTsKKyAgc3RhdGljIGJvb2wgVGVzdERpc2FibGVkKGNvbnN0IFRl
c3RJbmZvKiB0ZXN0X2luZm8pIHsKKyAgICByZXR1cm4gdGVzdF9pbmZvLT5pc19kaXNhYmxlZF87
CisgIH0KKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgdGVzdCB3aWxsIGFwcGVhciBpbiB0
aGUgWE1MIHJlcG9ydC4KKyAgc3RhdGljIGJvb2wgVGVzdFJlcG9ydGFibGUoY29uc3QgVGVzdElu
Zm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPmlzX3JlcG9ydGFibGUoKTsK
KyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdGVzdCBzaG91bGQgcnVuLgot
ICBzdGF0aWMgYm9vbCBTaG91bGRSdW5UZXN0KGNvbnN0IFRlc3RJbmZvICp0ZXN0X2luZm8pOwor
ICBzdGF0aWMgYm9vbCBTaG91bGRSdW5UZXN0KGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsK
KyAgICByZXR1cm4gdGVzdF9pbmZvLT5zaG91bGRfcnVuKCk7CisgIH0KIAogICAvLyBTaHVmZmxl
cyB0aGUgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCiAgIHZvaWQgU2h1ZmZsZVRlc3RzKGludGVy
bmFsOjpSYW5kb20qIHJhbmRvbSk7CkBAIC03OTUsOSArOTI4LDEwIEBAIGNsYXNzIEdURVNUX0FQ
SV8gVGVzdENhc2UgewogICB2b2lkIFVuc2h1ZmZsZVRlc3RzKCk7CiAKICAgLy8gTmFtZSBvZiB0
aGUgdGVzdCBjYXNlLgotICBpbnRlcm5hbDo6U3RyaW5nIG5hbWVfOwotICAvLyBDb21tZW50IG9u
IHRoZSB0ZXN0IGNhc2UuCi0gIGludGVybmFsOjpTdHJpbmcgY29tbWVudF87CisgIHN0ZDo6c3Ry
aW5nIG5hbWVfOworICAvLyBOYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdHlwZSwgb3IgTlVMTCBpZiB0
aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEKKyAgLy8gdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisg
IGNvbnN0IGludGVybmFsOjpzY29wZWRfcHRyPGNvbnN0IDo6c3RkOjpzdHJpbmc+IHR5cGVfcGFy
YW1fOwogICAvLyBUaGUgdmVjdG9yIG9mIFRlc3RJbmZvcyBpbiB0aGVpciBvcmlnaW5hbCBvcmRl
ci4gIEl0IG93bnMgdGhlCiAgIC8vIGVsZW1lbnRzIGluIHRoZSB2ZWN0b3IuCiAgIHN0ZDo6dmVj
dG9yPFRlc3RJbmZvKj4gdGVzdF9pbmZvX2xpc3RfOwpAQCAtODEzLDEzICs5NDcsMTYgQEAgY2xh
c3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIGJvb2wgc2hvdWxkX3J1bl87CiAgIC8vIEVsYXBz
ZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5NaWxsaXMgZWxhcHNlZF90aW1lXzsK
KyAgLy8gSG9sZHMgdGVzdCBwcm9wZXJ0aWVzIHJlY29yZGVkIGR1cmluZyBleGVjdXRpb24gb2Yg
U2V0VXBUZXN0Q2FzZSBhbmQKKyAgLy8gVGVhckRvd25UZXN0Q2FzZS4KKyAgVGVzdFJlc3VsdCBh
ZF9ob2NfdGVzdF9yZXN1bHRfOwogCiAgIC8vIFdlIGRpc2FsbG93IGNvcHlpbmcgVGVzdENhc2Vz
LgogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRlc3RDYXNlKTsKIH07CiAKIC8v
IEFuIEVudmlyb25tZW50IG9iamVjdCBpcyBjYXBhYmxlIG9mIHNldHRpbmcgdXAgYW5kIHRlYXJp
bmcgZG93biBhbgotLy8gZW52aXJvbm1lbnQuICBUaGUgdXNlciBzaG91bGQgc3ViY2xhc3MgdGhp
cyB0byBkZWZpbmUgaGlzIG93bgorLy8gZW52aXJvbm1lbnQuICBZb3Ugc2hvdWxkIHN1YmNsYXNz
IHRoaXMgdG8gZGVmaW5lIHlvdXIgb3duCiAvLyBlbnZpcm9ubWVudChzKS4KIC8vCiAvLyBBbiBF
bnZpcm9ubWVudCBvYmplY3QgZG9lcyB0aGUgc2V0LXVwIGFuZCB0ZWFyLWRvd24gaW4gdmlydHVh
bApAQCAtODc2LDcgKzEwMTMsNyBAQCBjbGFzcyBUZXN0RXZlbnRMaXN0ZW5lciB7CiAgIC8vIEZp
cmVkIGJlZm9yZSB0aGUgdGVzdCBzdGFydHMuCiAgIHZpcnR1YWwgdm9pZCBPblRlc3RTdGFydChj
b25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSA9IDA7CiAKLSAgLy8gRmlyZWQgYWZ0ZXIgYSBmYWls
ZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VTUygpLgorICAvLyBGaXJlZCBhZnRlciBhIGZhaWxlZCBh
c3NlcnRpb24gb3IgYSBTVUNDRUVEKCkgaW52b2NhdGlvbi4KICAgdmlydHVhbCB2b2lkIE9uVGVz
dFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpID0gMDsK
IAogICAvLyBGaXJlZCBhZnRlciB0aGUgdGVzdCBlbmRzLgpAQCAtOTYxLDEwICsxMDk4LDEwIEBA
IGNsYXNzIEdURVNUX0FQSV8gVGVzdEV2ZW50TGlzdGVuZXJzIHsKIAogIHByaXZhdGU6CiAgIGZy
aWVuZCBjbGFzcyBUZXN0Q2FzZTsKKyAgZnJpZW5kIGNsYXNzIFRlc3RJbmZvOwogICBmcmllbmQg
Y2xhc3MgaW50ZXJuYWw6OkRlZmF1bHRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyOwogICBm
cmllbmQgY2xhc3MgaW50ZXJuYWw6Ok5vRXhlY0RlYXRoVGVzdDsKICAgZnJpZW5kIGNsYXNzIGlu
dGVybmFsOjpUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3NvcjsKLSAgZnJpZW5kIGNsYXNzIGludGVy
bmFsOjpUZXN0SW5mb0ltcGw7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VW5pdFRlc3RJbXBs
OwogCiAgIC8vIFJldHVybnMgcmVwZWF0ZXIgdGhhdCBicm9hZGNhc3RzIHRoZSBUZXN0RXZlbnRM
aXN0ZW5lciBldmVudHMgdG8gYWxsCkBAIC0xMDMyLDExICsxMTY5LDEzIEBAIGNsYXNzIEdURVNU
X0FQSV8gVW5pdFRlc3QgewogCiAgIC8vIFJldHVybnMgdGhlIFRlc3RDYXNlIG9iamVjdCBmb3Ig
dGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLAogICAvLyBvciBOVUxMIGlmIG5vIHRl
c3QgaXMgcnVubmluZy4KLSAgY29uc3QgVGVzdENhc2UqIGN1cnJlbnRfdGVzdF9jYXNlKCkgY29u
c3Q7CisgIGNvbnN0IFRlc3RDYXNlKiBjdXJyZW50X3Rlc3RfY2FzZSgpIGNvbnN0CisgICAgICBH
VEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCiAgIC8vIFJldHVybnMgdGhlIFRlc3RJbmZv
IG9iamVjdCBmb3IgdGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLAogICAvLyBvciBO
VUxMIGlmIG5vIHRlc3QgaXMgcnVubmluZy4KLSAgY29uc3QgVGVzdEluZm8qIGN1cnJlbnRfdGVz
dF9pbmZvKCkgY29uc3Q7CisgIGNvbnN0IFRlc3RJbmZvKiBjdXJyZW50X3Rlc3RfaW5mbygpIGNv
bnN0CisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCiAgIC8vIFJldHVybnMg
dGhlIHJhbmRvbSBzZWVkIHVzZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50IHRlc3QgcnVu
LgogICBpbnQgcmFuZG9tX3NlZWQoKSBjb25zdDsKQEAgLTEwNDYsNyArMTE4NSw4IEBAIGNsYXNz
IEdURVNUX0FQSV8gVW5pdFRlc3QgewogICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFu
ZCBpbnN0YW50aWF0ZSBhbmQgcmVnaXN0ZXIgdGhlbS4KICAgLy8KICAgLy8gSU5URVJOQUwgSU1Q
TEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotICBpbnRlcm5hbDo6
UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkmIHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3Ry
eSgpOworICBpbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkmIHBhcmFtZXRl
cml6ZWRfdGVzdF9yZWdpc3RyeSgpCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8p
OwogI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogCiAgIC8vIEdldHMgdGhlIG51bWJl
ciBvZiBzdWNjZXNzZnVsIHRlc3QgY2FzZXMuCkBAIC0xMDY4LDE1ICsxMjA4LDI1IEBAIGNsYXNz
IEdURVNUX0FQSV8gVW5pdFRlc3QgewogICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZmFpbGVkIHRl
c3RzLgogICBpbnQgZmFpbGVkX3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAvLyBHZXRzIHRoZSBu
dW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwg
cmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CisK
ICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzLgogICBpbnQgZGlzYWJsZWRf
dGVzdF9jb3VudCgpIGNvbnN0OwogCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0cyB0byBi
ZSBwcmludGVkIGluIHRoZSBYTUwgcmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV90ZXN0X2NvdW50
KCkgY29uc3Q7CisKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0cy4KICAgaW50IHRv
dGFsX3Rlc3RfY291bnQoKSBjb25zdDsKIAogICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMg
dGhhdCBzaG91bGQgcnVuLgogICBpbnQgdGVzdF90b19ydW5fY291bnQoKSBjb25zdDsKIAorICAv
LyBHZXRzIHRoZSB0aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0gc3RhcnQsIGluIG1zIGZyb20gdGhl
IHN0YXJ0IG9mIHRoZQorICAvLyBVTklYIGVwb2NoLgorICBUaW1lSW5NaWxsaXMgc3RhcnRfdGlt
ZXN0YW1wKCkgY29uc3Q7CisKICAgLy8gR2V0cyB0aGUgZWxhcHNlZCB0aW1lLCBpbiBtaWxsaXNl
Y29uZHMuCiAgIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3RpbWUoKSBjb25zdDsKIApAQCAtMTA5MSw2
ICsxMjQxLDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3QgewogICAvLyB0b3RhbF90ZXN0
X2Nhc2VfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVM
TC4KICAgY29uc3QgVGVzdENhc2UqIEdldFRlc3RDYXNlKGludCBpKSBjb25zdDsKIAorICAvLyBS
ZXR1cm5zIHRoZSBUZXN0UmVzdWx0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gb24gdGVzdCBmYWls
dXJlcyBhbmQKKyAgLy8gcHJvcGVydGllcyBsb2dnZWQgb3V0c2lkZSBvZiBpbmRpdmlkdWFsIHRl
c3QgY2FzZXMuCisgIGNvbnN0IFRlc3RSZXN1bHQmIGFkX2hvY190ZXN0X3Jlc3VsdCgpIGNvbnN0
OworCiAgIC8vIFJldHVybnMgdGhlIGxpc3Qgb2YgZXZlbnQgbGlzdGVuZXJzIHRoYXQgY2FuIGJl
IHVzZWQgdG8gdHJhY2sgZXZlbnRzCiAgIC8vIGluc2lkZSBHb29nbGUgVGVzdC4KICAgVGVzdEV2
ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMoKTsKQEAgLTExMTQsMTIgKzEyNjgsMTYgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBVbml0VGVzdCB7CiAgIHZvaWQgQWRkVGVzdFBhcnRSZXN1bHQoVGVzdFBhcnRS
ZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogZmlsZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lX251bWJl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnRlcm5hbDo6U3RyaW5nJiBtZXNz
YWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludGVybmFsOjpTdHJpbmcmIG9z
X3N0YWNrX3RyYWNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
b3Nfc3RhY2tfdHJhY2UpCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCi0g
IC8vIEFkZHMgYSBUZXN0UHJvcGVydHkgdG8gdGhlIGN1cnJlbnQgVGVzdFJlc3VsdCBvYmplY3Qu
IElmIHRoZSByZXN1bHQgYWxyZWFkeQotICAvLyBjb250YWlucyBhIHByb3BlcnR5IHdpdGggdGhl
IHNhbWUga2V5LCB0aGUgdmFsdWUgd2lsbCBiZSB1cGRhdGVkLgotICB2b2lkIFJlY29yZFByb3Bl
cnR5Rm9yQ3VycmVudFRlc3QoY29uc3QgY2hhcioga2V5LCBjb25zdCBjaGFyKiB2YWx1ZSk7Cisg
IC8vIEFkZHMgYSBUZXN0UHJvcGVydHkgdG8gdGhlIGN1cnJlbnQgVGVzdFJlc3VsdCBvYmplY3Qg
d2hlbiBpbnZva2VkIGZyb20KKyAgLy8gaW5zaWRlIGEgdGVzdCwgdG8gY3VycmVudCBUZXN0Q2Fz
ZSdzIGFkX2hvY190ZXN0X3Jlc3VsdF8gd2hlbiBpbnZva2VkCisgIC8vIGZyb20gU2V0VXBUZXN0
Q2FzZSBvciBUZWFyRG93blRlc3RDYXNlLCBvciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNldAor
ICAvLyB3aGVuIGludm9rZWQgZWxzZXdoZXJlLiAgSWYgdGhlIHJlc3VsdCBhbHJlYWR5IGNvbnRh
aW5zIGEgcHJvcGVydHkgd2l0aAorICAvLyB0aGUgc2FtZSBrZXksIHRoZSB2YWx1ZSB3aWxsIGJl
IHVwZGF0ZWQuCisgIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwg
Y29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKTsKIAogICAvLyBHZXRzIHRoZSBpLXRoIHRlc3QgY2Fz
ZSBhbW9uZyBhbGwgdGhlIHRlc3QgY2FzZXMuIGkgY2FuIHJhbmdlIGZyb20gMCB0bwogICAvLyB0
b3RhbF90ZXN0X2Nhc2VfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJl
dHVybnMgTlVMTC4KQEAgLTExMzQsMTEgKzEyOTIsMTMgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0
VGVzdCB7CiAgIGZyaWVuZCBjbGFzcyBUZXN0OwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkFz
c2VydEhlbHBlcjsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpTY29wZWRUcmFjZTsKKyAgZnJp
ZW5kIGNsYXNzIGludGVybmFsOjpTdHJlYW1pbmdMaXN0ZW5lclRlc3Q7CisgIGZyaWVuZCBjbGFz
cyBpbnRlcm5hbDo6VW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3RIZWxwZXI7CiAgIGZyaWVuZCBF
bnZpcm9ubWVudCogQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KEVudmlyb25tZW50KiBlbnYpOwog
ICBmcmllbmQgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCogaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1w
bCgpOwogICBmcmllbmQgdm9pZCBpbnRlcm5hbDo6UmVwb3J0RmFpbHVyZUluVW5rbm93bkxvY2F0
aW9uKAogICAgICAgVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCi0gICAgICBjb25z
dCBpbnRlcm5hbDo6U3RyaW5nJiBtZXNzYWdlKTsKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBt
ZXNzYWdlKTsKIAogICAvLyBDcmVhdGVzIGFuIGVtcHR5IFVuaXRUZXN0LgogICBVbml0VGVzdCgp
OwpAQCAtMTE0OCwxMCArMTMwOCwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0IHsKIAog
ICAvLyBQdXNoZXMgYSB0cmFjZSBkZWZpbmVkIGJ5IFNDT1BFRF9UUkFDRSgpIG9uIHRvIHRoZSBw
ZXItdGhyZWFkCiAgIC8vIEdvb2dsZSBUZXN0IHRyYWNlIHN0YWNrLgotICB2b2lkIFB1c2hHVGVz
dFRyYWNlKGNvbnN0IGludGVybmFsOjpUcmFjZUluZm8mIHRyYWNlKTsKKyAgdm9pZCBQdXNoR1Rl
c3RUcmFjZShjb25zdCBpbnRlcm5hbDo6VHJhY2VJbmZvJiB0cmFjZSkKKyAgICAgIEdURVNUX0xP
Q0tfRVhDTFVERURfKG11dGV4Xyk7CiAKICAgLy8gUG9wcyBhIHRyYWNlIGZyb20gdGhlIHBlci10
aHJlYWQgR29vZ2xlIFRlc3QgdHJhY2Ugc3RhY2suCi0gIHZvaWQgUG9wR1Rlc3RUcmFjZSgpOwor
ICB2b2lkIFBvcEdUZXN0VHJhY2UoKQorICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhf
KTsKIAogICAvLyBQcm90ZWN0cyBtdXRhYmxlIHN0YXRlIGluICppbXBsXy4gIFRoaXMgaXMgbXV0
YWJsZSBhcyBzb21lIGNvbnN0CiAgIC8vIG1ldGhvZHMgbmVlZCB0byBsb2NrIGl0IHRvby4KQEAg
LTEyMDYsODIgKzEzNjgsNDIgQEAgR1RFU1RfQVBJXyB2b2lkIEluaXRHb29nbGVUZXN0KGludCog
YXJnYywgd2NoYXJfdCoqIGFyZ3YpOwogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCi0vLyBUaGVz
ZSBvdmVybG9hZGVkIHZlcnNpb25zIGhhbmRsZSA6OnN0ZDo6c3RyaW5nIGFuZCA6OnN0ZDo6d3N0
cmluZy4KLUdURVNUX0FQSV8gaW5saW5lIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShj
b25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIpIHsKLSAgcmV0dXJuIChNZXNzYWdlKCkgPDwgJyInIDw8
IHN0ciA8PCAnIicpLkdldFN0cmluZygpOwotfQotCi0jaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5H
Ci1HVEVTVF9BUElfIGlubGluZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3Qg
OjpzdGQ6OndzdHJpbmcmIHdzdHIpIHsKLSAgcmV0dXJuIChNZXNzYWdlKCkgPDwgIkxcIiIgPDwg
d3N0ciA8PCAnIicpLkdldFN0cmluZygpOwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dT
VFJJTkcKLQotLy8gVGhlc2Ugb3ZlcmxvYWRlZCB2ZXJzaW9ucyBoYW5kbGUgOjpzdHJpbmcgYW5k
IDo6d3N0cmluZy4KLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotR1RFU1RfQVBJXyBpbmxp
bmUgU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKGNvbnN0IDo6c3RyaW5nJiBzdHIpIHsK
LSAgcmV0dXJuIChNZXNzYWdlKCkgPDwgJyInIDw8IHN0ciA8PCAnIicpLkdldFN0cmluZygpOwot
fQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotCi0jaWYgR1RFU1RfSEFTX0dM
T0JBTF9XU1RSSU5HCi1HVEVTVF9BUElfIGlubGluZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1l
c3NhZ2UoY29uc3QgOjp3c3RyaW5nJiB3c3RyKSB7Ci0gIHJldHVybiAoTWVzc2FnZSgpIDw8ICJM
XCIiIDw8IHdzdHIgPDwgJyInKS5HZXRTdHJpbmcoKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X0dMT0JBTF9XU1RSSU5HCi0KLS8vIEZvcm1hdHMgYSBjb21wYXJpc29uIGFzc2VydGlvbiAoZS5n
LiBBU1NFUlRfRVEsIEVYUEVDVF9MVCwgYW5kIGV0YykKLS8vIG9wZXJhbmQgdG8gYmUgdXNlZCBp
biBhIGZhaWx1cmUgbWVzc2FnZS4gIFRoZSB0eXBlIChidXQgbm90IHZhbHVlKQotLy8gb2YgdGhl
IG90aGVyIG9wZXJhbmQgbWF5IGFmZmVjdCB0aGUgZm9ybWF0LiAgVGhpcyBhbGxvd3MgdXMgdG8K
LS8vIHByaW50IGEgY2hhciogYXMgYSByYXcgcG9pbnRlciB3aGVuIGl0IGlzIGNvbXBhcmVkIGFn
YWluc3QgYW5vdGhlcgotLy8gY2hhciosIGFuZCBwcmludCBpdCBhcyBhIEMgc3RyaW5nIHdoZW4g
aXQgaXMgY29tcGFyZWQgYWdhaW5zdCBhbgotLy8gc3RkOjpzdHJpbmcgb2JqZWN0LCBmb3IgZXhh
bXBsZS4KLS8vCi0vLyBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpZ25vcmVzIHRoZSB0eXBl
IG9mIHRoZSBvdGhlciBvcGVyYW5kLgotLy8gU29tZSBzcGVjaWFsaXplZCB2ZXJzaW9ucyBhcmUg
dXNlZCB0byBoYW5kbGUgZm9ybWF0dGluZyB3aWRlIG9yCi0vLyBuYXJyb3cgQyBzdHJpbmdzLgot
Ly8KLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJP
R1JBTS4KKy8vIFNlcGFyYXRlIHRoZSBlcnJvciBnZW5lcmF0aW5nIGNvZGUgZnJvbSB0aGUgY29k
ZSBwYXRoIHRvIHJlZHVjZSB0aGUgc3RhY2sKKy8vIGZyYW1lIHNpemUgb2YgQ21wSGVscGVyRVEu
IFRoaXMgaGVscHMgcmVkdWNlIHRoZSBvdmVyaGVhZCBvZiBzb21lIHNhbml0aXplcnMKKy8vIHdo
ZW4gY2FsbGluZyBFWFBFQ1RfKiBpbiBhIHRpZ2h0IGxvb3AuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyPgotU3RyaW5nIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2Fn
ZShjb25zdCBUMSYgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFQyJiAvKiBvdGhlcl9vcGVyYW5kICovKSB7Ci0gIHJldHVybiBGb3JtYXRGb3JG
YWlsdXJlTWVzc2FnZSh2YWx1ZSk7CitBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRVFGYWlsdXJl
KGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVDEmIGxocywgY29uc3QgVDImIHJocykgeworICByZXR1cm4g
RXFGYWlsdXJlKGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIHJoc19leHByZXNz
aW9uLAorICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2Fn
ZShsaHMsIHJocyksCisgICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1
cmVNZXNzYWdlKHJocywgbGhzKSwKKyAgICAgICAgICAgICAgICAgICBmYWxzZSk7CiB9CiAKIC8v
IFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9FUS4KIHRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRVEoY29u
c3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUMSYgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVDImIGFjdHVhbCkgewotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkg
ICAgICAgICAgLy8gU2F2ZXMgdGhlIGN1cnJlbnQgd2FybmluZyBzdGF0ZS4KLSNwcmFnbWEgd2Fy
bmluZyhkaXNhYmxlOjQzODkpICAvLyBUZW1wb3JhcmlseSBkaXNhYmxlcyB3YXJuaW5nIG9uCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2lnbmVkL3Vuc2lnbmVkIG1pc21hdGNo
LgotI2VuZGlmCi0KLSAgaWYgKGV4cGVjdGVkID09IGFjdHVhbCkgeworQXNzZXJ0aW9uUmVzdWx0
IENtcEhlbHBlckVRKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFQxJiBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVDImIHJocykgeworR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDM4OSAv
KiBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2ggKi8pCisgIGlmIChsaHMgPT0gcmhzKSB7CiAgICAg
cmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklO
R1NfUE9QXygpCiAKLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHBvcCkgICAgICAg
ICAgLy8gUmVzdG9yZXMgdGhlIHdhcm5pbmcgc3RhdGUuCi0jZW5kaWYKLQotICByZXR1cm4gRXFG
YWlsdXJlKGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgYWN0dWFsX2V4
cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVN
ZXNzYWdlKGV4cGVjdGVkLCBhY3R1YWwpLAotICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNv
bXBhcmlzb25GYWlsdXJlTWVzc2FnZShhY3R1YWwsIGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAg
ICAgICBmYWxzZSk7CisgIHJldHVybiBDbXBIZWxwZXJFUUZhaWx1cmUobGhzX2V4cHJlc3Npb24s
IHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7CiB9CiAKIC8vIFdpdGggdGhpcyBvdmVybG9hZGVk
IHZlcnNpb24sIHdlIGFsbG93IGFub255bW91cyBlbnVtcyB0byBiZSB1c2VkCiAvLyBpbiB7QVNT
RVJUfEVYUEVDVH1fRVEgd2hlbiBjb21waWxlZCB3aXRoIGdjYyA0LCBhcyBhbm9ueW1vdXMgZW51
bXMKIC8vIGNhbiBiZSBpbXBsaWNpdGx5IGNhc3QgdG8gQmlnZ2VzdEludC4KLUdURVNUX0FQSV8g
QXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBh
Y3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEJpZ2dlc3RJbnQgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBCaWdnZXN0SW50IGFjdHVhbCk7CitHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBI
ZWxwZXJFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBsaHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IHJocyk7CiAKIC8vIFRoZSBo
ZWxwZXIgY2xhc3MgZm9yIHtBU1NFUlR8RVhQRUNUfV9FUS4gIFRoZSB0ZW1wbGF0ZSBhcmd1bWVu
dAogLy8gbGhzX2lzX251bGxfbGl0ZXJhbCBpcyB0cnVlIGlmZiB0aGUgZmlyc3QgYXJndW1lbnQg
dG8gQVNTRVJUX0VRKCkKQEAgLTEyOTIsMTIgKzE0MTQsMTEgQEAgY2xhc3MgRXFIZWxwZXIgewog
IHB1YmxpYzoKICAgLy8gVGhpcyB0ZW1wbGF0aXplZCB2ZXJzaW9uIGlzIGZvciB0aGUgZ2VuZXJh
bCBjYXNlLgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICBzdGF0aWMg
QXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHBy
ZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGV4cGVj
dGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDImIGFjdHVhbCkg
ewotICAgIHJldHVybiBDbXBIZWxwZXJFUShleHBlY3RlZF9leHByZXNzaW9uLCBhY3R1YWxfZXhw
cmVzc2lvbiwgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbCk7CisgIHN0
YXRpYyBBc3NlcnRpb25SZXN1bHQgQ29tcGFyZShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNz
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGxocywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiByaHMpIHsKKyAgICByZXR1
cm4gQ21wSGVscGVyRVEobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7
CiAgIH0KIAogICAvLyBXaXRoIHRoaXMgb3ZlcmxvYWRlZCB2ZXJzaW9uLCB3ZSBhbGxvdyBhbm9u
eW1vdXMgZW51bXMgdG8gYmUgdXNlZApAQCAtMTMwNiwxNyArMTQyNywxNiBAQCBjbGFzcyBFcUhl
bHBlciB7CiAgIC8vCiAgIC8vIEV2ZW4gdGhvdWdoIGl0cyBib2R5IGxvb2tzIHRoZSBzYW1lIGFz
IHRoZSBhYm92ZSB2ZXJzaW9uLCB3ZQogICAvLyBjYW5ub3QgbWVyZ2UgdGhlIHR3bywgYXMgaXQg
d2lsbCBtYWtlIGFub255bW91cyBlbnVtcyB1bmhhcHB5LgotICBzdGF0aWMgQXNzZXJ0aW9uUmVz
dWx0IENvbXBhcmUoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBleHBlY3RlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgYWN0dWFsKSB7Ci0gICAgcmV0
dXJuIENtcEhlbHBlckVRKGV4cGVjdGVkX2V4cHJlc3Npb24sIGFjdHVhbF9leHByZXNzaW9uLCBl
eHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsKTsKKyAgc3RhdGljIEFzc2Vy
dGlvblJlc3VsdCBDb21wYXJlKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGxocywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgcmhzKSB7CisgICAgcmV0dXJuIENtcEhl
bHBlckVRKGxoc19leHByZXNzaW9uLCByaHNfZXhwcmVzc2lvbiwgbGhzLCByaHMpOwogICB9CiB9
OwogCiAvLyBUaGlzIHNwZWNpYWxpemF0aW9uIGlzIHVzZWQgd2hlbiB0aGUgZmlyc3QgYXJndW1l
bnQgdG8gQVNTRVJUX0VRKCkKLS8vIGlzIGEgbnVsbCBwb2ludGVyIGxpdGVyYWwuCisvLyBpcyBh
IG51bGwgcG9pbnRlciBsaXRlcmFsLCBsaWtlIE5VTEwsIGZhbHNlLCBvciAwLgogdGVtcGxhdGUg
PD4KIGNsYXNzIEVxSGVscGVyPHRydWU+IHsKICBwdWJsaWM6CkBAIC0xMzI1LDI3ICsxNDQ1LDUz
IEBAIGNsYXNzIEVxSGVscGVyPHRydWU+IHsKICAgLy8gTk9UIGEgcG9pbnRlciwgZS5nLiBBU1NF
UlRfRVEoMCwgQW5JbnRGdW5jdGlvbigpKSBvcgogICAvLyBFWFBFQ1RfRVEoZmFsc2UsIGFfYm9v
bCkuCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gIHN0YXRpYyBBc3Nl
cnRpb25SZXN1bHQgQ29tcGFyZShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgZXhwZWN0ZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgYWN0dWFsKSB7Ci0g
ICAgcmV0dXJuIENtcEhlbHBlckVRKGV4cGVjdGVkX2V4cHJlc3Npb24sIGFjdHVhbF9leHByZXNz
aW9uLCBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsKTsKKyAgc3RhdGlj
IEFzc2VydGlvblJlc3VsdCBDb21wYXJlKAorICAgICAgY29uc3QgY2hhciogbGhzX2V4cHJlc3Np
b24sCisgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgIGNvbnN0IFQxJiBs
aHMsCisgICAgICBjb25zdCBUMiYgcmhzLAorICAgICAgLy8gVGhlIGZvbGxvd2luZyBsaW5lIHBy
ZXZlbnRzIHRoaXMgb3ZlcmxvYWQgZnJvbSBiZWluZyBjb25zaWRlcmVkIGlmIFQyCisgICAgICAv
LyBpcyBub3QgYSBwb2ludGVyIHR5cGUuICBXZSBuZWVkIHRoaXMgYmVjYXVzZSBBU1NFUlRfRVEo
TlVMTCwgbXlfcHRyKQorICAgICAgLy8gZXhwYW5kcyB0byBDb21wYXJlKCIiLCAiIiwgTlVMTCwg
bXlfcHRyKSwgd2hpY2ggcmVxdWlyZXMgYSBjb252ZXJzaW9uCisgICAgICAvLyB0byBtYXRjaCB0
aGUgU2VjcmV0KiBpbiB0aGUgb3RoZXIgb3ZlcmxvYWQsIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBt
YWtlCisgICAgICAvLyB0aGlzIHRlbXBsYXRlIG1hdGNoIGJldHRlci4KKyAgICAgIHR5cGVuYW1l
IEVuYWJsZUlmPCFpc19wb2ludGVyPFQyPjo6dmFsdWU+Ojp0eXBlKiA9IDApIHsKKyAgICByZXR1
cm4gQ21wSGVscGVyRVEobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7
CiAgIH0KIAotICAvLyBUaGlzIHZlcnNpb24gd2lsbCBiZSBwaWNrZWQgd2hlbiB0aGUgc2Vjb25k
IGFyZ3VtZW50IHRvCi0gIC8vIEFTU0VSVF9FUSgpIGlzIGEgcG9pbnRlciwgZS5nLiBBU1NFUlRf
RVEoTlVMTCwgYV9wb2ludGVyKS4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
Mj4KLSAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBDb21wYXJlKGNvbnN0IGNoYXIqIGV4cGVjdGVk
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFQxJiAvKiBleHBlY3RlZCAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFQyKiBhY3R1YWwpIHsKLSAgICAvLyBXZSBhbHJlYWR5IGtub3cgdGhhdCAnZXhwZWN0ZWQnIGlz
IGEgbnVsbCBwb2ludGVyLgotICAgIHJldHVybiBDbXBIZWxwZXJFUShleHBlY3RlZF9leHByZXNz
aW9uLCBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8VDIqPihOVUxMKSwgYWN0dWFsKTsKKyAgLy8gVGhpcyB2ZXJzaW9uIHdpbGwgYmUgcGlja2Vk
IHdoZW4gdGhlIHNlY29uZCBhcmd1bWVudCB0byBBU1NFUlRfRVEoKSBpcyBhCisgIC8vIHBvaW50
ZXIsIGUuZy4gQVNTRVJUX0VRKE5VTEwsIGFfcG9pbnRlcikuCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUoCisgICAgICBjb25zdCBjaGFy
KiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAg
ICAgLy8gV2UgdXNlZCB0byBoYXZlIGEgc2Vjb25kIHRlbXBsYXRlIHBhcmFtZXRlciBpbnN0ZWFk
IG9mIFNlY3JldCouICBUaGF0CisgICAgICAvLyB0ZW1wbGF0ZSBwYXJhbWV0ZXIgd291bGQgZGVk
dWNlIHRvICdsb25nJywgbWFraW5nIHRoaXMgYSBiZXR0ZXIgbWF0Y2gKKyAgICAgIC8vIHRoYW4g
dGhlIGZpcnN0IG92ZXJsb2FkIGV2ZW4gd2l0aG91dCB0aGUgZmlyc3Qgb3ZlcmxvYWQncyBFbmFi
bGVJZi4KKyAgICAgIC8vIFVuZm9ydHVuYXRlbHksIGdjYyB3aXRoIC1XY29udmVyc2lvbi1udWxs
IHdhcm5zIHdoZW4gInBhc3NpbmcgTlVMTCB0bworICAgICAgLy8gbm9uLXBvaW50ZXIgYXJndW1l
bnQiIChldmVuIGEgZGVkdWNlZCBpbnRlZ3JhbCBhcmd1bWVudCksIHNvIHRoZSBvbGQKKyAgICAg
IC8vIGltcGxlbWVudGF0aW9uIGNhdXNlZCB3YXJuaW5ncyBpbiB1c2VyIGNvZGUuCisgICAgICBT
ZWNyZXQqIC8qIGxocyAoTlVMTCkgKi8sCisgICAgICBUKiByaHMpIHsKKyAgICAvLyBXZSBhbHJl
YWR5IGtub3cgdGhhdCAnbGhzJyBpcyBhIG51bGwgcG9pbnRlci4KKyAgICByZXR1cm4gQ21wSGVs
cGVyRVEobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxUKj4oTlVMTCksIHJocyk7CiAgIH0KIH07CiAKKy8vIFNlcGFyYXRl
IHRoZSBlcnJvciBnZW5lcmF0aW5nIGNvZGUgZnJvbSB0aGUgY29kZSBwYXRoIHRvIHJlZHVjZSB0
aGUgc3RhY2sKKy8vIGZyYW1lIHNpemUgb2YgQ21wSGVscGVyT1AuIFRoaXMgaGVscHMgcmVkdWNl
IHRoZSBvdmVyaGVhZCBvZiBzb21lIHNhbml0aXplcnMKKy8vIHdoZW4gY2FsbGluZyBFWFBFQ1Rf
T1AgaW4gYSB0aWdodCBsb29wLgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4K
K0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJPcEZhaWx1cmUoY29uc3QgY2hhciogZXhwcjEsIGNv
bnN0IGNoYXIqIGV4cHIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUMSYgdmFsMSwgY29uc3QgVDImIHZhbDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIG9wKSB7CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkKKyAg
ICAgICAgIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgIiA8PCBvcCA8PCAiICgiIDw8
IGV4cHIyCisgICAgICAgICA8PCAiKSwgYWN0dWFsOiAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZSh2YWwxLCB2YWwyKQorICAgICAgICAgPDwgIiB2cyAiIDw8IEZvcm1hdEZv
ckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSh2YWwyLCB2YWwxKTsKK30KKwogLy8gQSBtYWNybyBm
b3IgaW1wbGVtZW50aW5nIHRoZSBoZWxwZXIgZnVuY3Rpb25zIG5lZWRlZCB0byBpbXBsZW1lbnQK
IC8vIEFTU0VSVF8/PyBhbmQgRVhQRUNUXz8/LiAgSXQgaXMgaGVyZSBqdXN0IHRvIGF2b2lkIGNv
cHktYW5kLXBhc3RlCiAvLyBvZiBzaW1pbGFyIGNvZGUuCkBAIC0xMzU2LDYgKzE1MDIsNyBAQCBj
bGFzcyBFcUhlbHBlcjx0cnVlPiB7CiAvLyB3aXRoIGdjYyA0LgogLy8KIC8vIElOVEVSTkFMIElN
UExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KKwogI2RlZmluZSBH
VEVTVF9JTVBMX0NNUF9IRUxQRVJfKG9wX25hbWUsIG9wKVwKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
MSwgdHlwZW5hbWUgVDI+XAogQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlciMjb3BfbmFtZShjb25z
dCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIsIFwKQEAgLTEzNjMsMTEgKzE1MTAsNyBA
QCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyIyNvcF9uYW1lKGNvbnN0IGNoYXIqIGV4cHIxLCBj
b25zdCBjaGFyKiBleHByMiwgXAogICBpZiAodmFsMSBvcCB2YWwyKSB7XAogICAgIHJldHVybiBB
c3NlcnRpb25TdWNjZXNzKCk7XAogICB9IGVsc2Uge1wKLSAgICBNZXNzYWdlIG1zZztcCi0gICAg
bXNnIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgIiAjb3AgIiAoIiA8PCBleHByMlwK
LSAgICAgICAgPDwgIiksIGFjdHVhbDogIiA8PCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2UodmFsMSwgdmFsMilcCi0gICAgICAgIDw8ICIgdnMgIiA8PCBGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2UodmFsMiwgdmFsMSk7XAotICAgIHJldHVybiBBc3NlcnRpb25GYWls
dXJlKG1zZyk7XAorICAgIHJldHVybiBDbXBIZWxwZXJPcEZhaWx1cmUoZXhwcjEsIGV4cHIyLCB2
YWwxLCB2YWwyLCAjb3ApO1wKICAgfVwKIH1cCiBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBD
bXBIZWxwZXIjI29wX25hbWUoXApAQCAtMTM4MCwyOSArMTUyMywyOSBAQCBHVEVTVF9JTVBMX0NN
UF9IRUxQRVJfKE5FLCAhPSk7CiAvLyBJbXBsZW1lbnRzIHRoZSBoZWxwZXIgZnVuY3Rpb24gZm9y
IHtBU1NFUlR8RVhQRUNUfV9MRQogR1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhMRSwgPD0pOwogLy8g
SW1wbGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fTFQKLUdU
RVNUX0lNUExfQ01QX0hFTFBFUl8oTFQsIDwgKTsKK0dURVNUX0lNUExfQ01QX0hFTFBFUl8oTFQs
IDwpOwogLy8gSW1wbGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVD
VH1fR0UKIEdURVNUX0lNUExfQ01QX0hFTFBFUl8oR0UsID49KTsKIC8vIEltcGxlbWVudHMgdGhl
IGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X0dUCi1HVEVTVF9JTVBMX0NNUF9I
RUxQRVJfKEdULCA+ICk7CitHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKEdULCA+KTsKIAogI3VuZGVm
IEdURVNUX0lNUExfQ01QX0hFTFBFUl8KIAogLy8gVGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FT
U0VSVHxFWFBFQ1R9X1NUUkVRLgogLy8KIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8g
Tk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KLUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENt
cEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVz
c2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogYWN0dWFsKTsKK0dURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBl
clNUUkVRKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMl9leHByZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMik7CiAKIC8v
IFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9TVFJDQVNFRVEuCiAvLwog
Ly8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFN
LgotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSQ0FTRUVRKGNvbnN0IGNo
YXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogYWN0dWFsKTsKK0dURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VF
UShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMyX2V4cHJlc3Npb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczIp
OwogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fU1RSTkUuCiAv
LwpAQCAtMTQyNCwxMCArMTU2NywxMCBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBI
ZWxwZXJTVFJDQVNFTkUoY29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKIC8vIEhlbHBlciBmdW5j
dGlvbiBmb3IgKl9TVFJFUSBvbiB3aWRlIHN0cmluZ3MuCiAvLwogLy8gSU5URVJOQUwgSU1QTEVN
RU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotR1RFU1RfQVBJXyBBc3Nl
cnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgd2NoYXJfdCogZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiBhY3R1YWwpOworR1RFU1RfQVBJXyBBc3Nl
cnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMyX2V4
cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB3Y2hhcl90KiBzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHdjaGFyX3QqIHMyKTsKIAogLy8gSGVscGVyIGZ1bmN0aW9uIGZvciAqX1NUUk5FIG9u
IHdpZGUgc3RyaW5ncy4KIC8vCkBAIC0xNDg1LDI4ICsxNjI4LDI4IEBAIG5hbWVzcGFjZSBpbnRl
cm5hbCB7CiAvLwogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEg
VVNFUiBQUk9HUkFNLgogdGVtcGxhdGUgPHR5cGVuYW1lIFJhd1R5cGU+Ci1Bc3NlcnRpb25SZXN1
bHQgQ21wSGVscGVyRmxvYXRpbmdQb2ludEVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSYXdUeXBlIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSYXdUeXBlIGFjdHVhbCkgewotICBjb25zdCBGbG9hdGluZ1BvaW50PFJhd1R5cGU+
IGxocyhleHBlY3RlZCksIHJocyhhY3R1YWwpOworQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckZs
b2F0aW5nUG9pbnRFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhd1R5cGUgbGhzX3ZhbHVl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdUeXBlIHJoc192
YWx1ZSkgeworICBjb25zdCBGbG9hdGluZ1BvaW50PFJhd1R5cGU+IGxocyhsaHNfdmFsdWUpLCBy
aHMocmhzX3ZhbHVlKTsKIAogICBpZiAobGhzLkFsbW9zdEVxdWFscyhyaHMpKSB7CiAgICAgcmV0
dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQogCi0gIFN0clN0cmVhbSBleHBlY3RlZF9zczsK
LSAgZXhwZWN0ZWRfc3MgPDwgc3RkOjpzZXRwcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxS
YXdUeXBlPjo6ZGlnaXRzMTAgKyAyKQotICAgICAgICAgICAgICA8PCBleHBlY3RlZDsKKyAgOjpz
dGQ6OnN0cmluZ3N0cmVhbSBsaHNfc3M7CisgIGxoc19zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihz
dGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+OjpkaWdpdHMxMCArIDIpCisgICAgICAgICA8PCBs
aHNfdmFsdWU7CiAKLSAgU3RyU3RyZWFtIGFjdHVhbF9zczsKLSAgYWN0dWFsX3NzIDw8IHN0ZDo6
c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8UmF3VHlwZT46OmRpZ2l0czEwICsgMikK
LSAgICAgICAgICAgIDw8IGFjdHVhbDsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSByaHNfc3M7Cisg
IHJoc19zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+
OjpkaWdpdHMxMCArIDIpCisgICAgICAgICA8PCByaHNfdmFsdWU7CiAKLSAgcmV0dXJuIEVxRmFp
bHVyZShleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIGFjdHVhbF9leHBy
ZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIFN0clN0cmVhbVRvU3RyaW5nKCZleHBlY3RlZF9z
cyksCi0gICAgICAgICAgICAgICAgICAgU3RyU3RyZWFtVG9TdHJpbmcoJmFjdHVhbF9zcyksCisg
IHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgcmhz
X2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJmxo
c19zcyksCisgICAgICAgICAgICAgICAgICAgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnJoc19zcyks
CiAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwogfQogCkBAIC0xNTQ4LDkgKzE2OTEsOSBAQCBj
bGFzcyBHVEVTVF9BUElfIEFzc2VydEhlbHBlciB7CiAgICAgICAgIDogdHlwZSh0KSwgZmlsZShz
cmNmaWxlKSwgbGluZShsaW5lX251bSksIG1lc3NhZ2UobXNnKSB7IH0KIAogICAgIFRlc3RQYXJ0
UmVzdWx0OjpUeXBlIGNvbnN0IHR5cGU7Ci0gICAgY29uc3QgY2hhciogICAgICAgIGNvbnN0IGZp
bGU7Ci0gICAgaW50ICAgICAgICAgICAgICAgIGNvbnN0IGxpbmU7Ci0gICAgU3RyaW5nICAgICAg
ICAgICAgIGNvbnN0IG1lc3NhZ2U7CisgICAgY29uc3QgY2hhciogY29uc3QgZmlsZTsKKyAgICBp
bnQgY29uc3QgbGluZTsKKyAgICBzdGQ6OnN0cmluZyBjb25zdCBtZXNzYWdlOwogCiAgICBwcml2
YXRlOgogICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQXNzZXJ0SGVscGVyRGF0
YSk7CkBAIC0xNTY0LDkgKzE3MDcsMTMgQEAgY2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRIZWxwZXIg
ewogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiAKICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAot
Ly8gVGhlIGFic3RyYWN0IGJhc2UgY2xhc3MgdGhhdCBhbGwgdmFsdWUtcGFyYW1ldGVyaXplZCB0
ZXN0cyBpbmhlcml0IGZyb20uCisvLyBUaGUgcHVyZSBpbnRlcmZhY2UgY2xhc3MgdGhhdCBhbGwg
dmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBpbmhlcml0IGZyb20uCisvLyBBIHZhbHVlLXBhcmFt
ZXRlcml6ZWQgY2xhc3MgbXVzdCBpbmhlcml0IGZyb20gYm90aCA6OnRlc3Rpbmc6OlRlc3QgYW5k
CisvLyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZS4gSW4gbW9zdCBjYXNlcyB0aGF0IGp1
c3QgbWVhbnMgaW5oZXJpdGluZworLy8gZnJvbSA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW0sIGJ1
dCBtb3JlIGNvbXBsaWNhdGVkIHRlc3QgaGllcmFyY2hpZXMKKy8vIG1heSBuZWVkIHRvIGluaGVy
aXQgZnJvbSBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UgYXQgZGlmZmVyZW50IGxldmVscy4K
IC8vCi0vLyBUaGlzIGNsYXNzIGFkZHMgc3VwcG9ydCBmb3IgYWNjZXNzaW5nIHRoZSB0ZXN0IHBh
cmFtZXRlciB2YWx1ZSB2aWEKKy8vIFRoaXMgaW50ZXJmYWNlIGhhcyBzdXBwb3J0IGZvciBhY2Nl
c3NpbmcgdGhlIHRlc3QgcGFyYW1ldGVyIHZhbHVlIHZpYQogLy8gdGhlIEdldFBhcmFtKCkgbWV0
aG9kLgogLy8KIC8vIFVzZSBpdCB3aXRoIG9uZSBvZiB0aGUgcGFyYW1ldGVyIGdlbmVyYXRvciBk
ZWZpbmluZyBmdW5jdGlvbnMsIGxpa2UgUmFuZ2UoKSwKQEAgLTE1OTUsMTMgKzE3NDIsMjIgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRIZWxwZXIgewogLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoT25lVG9UZW5SYW5nZSwgRm9vVGVzdCwgOjp0ZXN0aW5nOjpSYW5nZSgxLCAxMCkpOwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFRlc3RXaXRoUGFyYW0gOiBwdWJsaWMgVGVzdCB7
CitjbGFzcyBXaXRoUGFyYW1JbnRlcmZhY2UgewogIHB1YmxpYzoKICAgdHlwZWRlZiBUIFBhcmFt
VHlwZTsKKyAgdmlydHVhbCB+V2l0aFBhcmFtSW50ZXJmYWNlKCkge30KIAogICAvLyBUaGUgY3Vy
cmVudCBwYXJhbWV0ZXIgdmFsdWUuIElzIGFsc28gYXZhaWxhYmxlIGluIHRoZSB0ZXN0IGZpeHR1
cmUncwotICAvLyBjb25zdHJ1Y3Rvci4KLSAgY29uc3QgUGFyYW1UeXBlJiBHZXRQYXJhbSgpIGNv
bnN0IHsgcmV0dXJuICpwYXJhbWV0ZXJfOyB9CisgIC8vIGNvbnN0cnVjdG9yLiBUaGlzIG1lbWJl
ciBmdW5jdGlvbiBpcyBub24tc3RhdGljLCBldmVuIHRob3VnaCBpdCBvbmx5CisgIC8vIHJlZmVy
ZW5jZXMgc3RhdGljIGRhdGEsIHRvIHJlZHVjZSB0aGUgb3Bwb3J0dW5pdHkgZm9yIGluY29ycmVj
dCB1c2VzCisgIC8vIGxpa2Ugd3JpdGluZyAnV2l0aFBhcmFtSW50ZXJmYWNlPGJvb2w+OjpHZXRQ
YXJhbSgpJyBmb3IgYSB0ZXN0IHRoYXQKKyAgLy8gdXNlcyBhIGZpeHR1cmUgd2hvc2UgcGFyYW1l
dGVyIHR5cGUgaXMgaW50LgorICBjb25zdCBQYXJhbVR5cGUmIEdldFBhcmFtKCkgY29uc3Qgewor
ICAgIEdURVNUX0NIRUNLXyhwYXJhbWV0ZXJfICE9IE5VTEwpCisgICAgICAgIDw8ICJHZXRQYXJh
bSgpIGNhbiBvbmx5IGJlIGNhbGxlZCBpbnNpZGUgYSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3Qg
IgorICAgICAgICA8PCAiLS0gZGlkIHlvdSBpbnRlbmQgdG8gd3JpdGUgVEVTVF9QIGluc3RlYWQg
b2YgVEVTVF9GPyI7CisgICAgcmV0dXJuICpwYXJhbWV0ZXJfOworICB9CiAKICBwcml2YXRlOgog
ICAvLyBTZXRzIHBhcmFtZXRlciB2YWx1ZS4gVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3Ig
bWFraW5nIHN1cmUgdGhlIHZhbHVlCkBAIC0xNjEzLDEyICsxNzY5LDE5IEBAIGNsYXNzIFRlc3RX
aXRoUGFyYW0gOiBwdWJsaWMgVGVzdCB7CiAgIC8vIFN0YXRpYyB2YWx1ZSB1c2VkIGZvciBhY2Nl
c3NpbmcgcGFyYW1ldGVyIGR1cmluZyBhIHRlc3QgbGlmZXRpbWUuCiAgIHN0YXRpYyBjb25zdCBQ
YXJhbVR5cGUqIHBhcmFtZXRlcl87CiAKLSAgLy8gVGVzdENsYXNzIG11c3QgYmUgYSBzdWJjbGFz
cyBvZiBUZXN0V2l0aFBhcmFtPFQ+LgorICAvLyBUZXN0Q2xhc3MgbXVzdCBiZSBhIHN1YmNsYXNz
IG9mIFdpdGhQYXJhbUludGVyZmFjZTxUPiBhbmQgVGVzdC4KICAgdGVtcGxhdGUgPGNsYXNzIFRl
c3RDbGFzcz4gZnJpZW5kIGNsYXNzIGludGVybmFsOjpQYXJhbWV0ZXJpemVkVGVzdEZhY3Rvcnk7
CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46
OnBhcmFtZXRlcl8gPSBOVUxMOworY29uc3QgVCogV2l0aFBhcmFtSW50ZXJmYWNlPFQ+OjpwYXJh
bWV0ZXJfID0gTlVMTDsKKworLy8gTW9zdCB2YWx1ZS1wYXJhbWV0ZXJpemVkIGNsYXNzZXMgY2Fu
IGlnbm9yZSB0aGUgZXhpc3RlbmNlIG9mCisvLyBXaXRoUGFyYW1JbnRlcmZhY2UsIGFuZCBjYW4g
anVzdCBpbmhlcml0IGZyb20gOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtLgorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK2NsYXNzIFRlc3RXaXRoUGFyYW0gOiBwdWJsaWMgVGVzdCwgcHVibGljIFdp
dGhQYXJhbUludGVyZmFjZTxUPiB7Cit9OwogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9U
RVNUCiAKQEAgLTE2NDAsMjMgKzE4MDMsMjMgQEAgY29uc3QgVCogVGVzdFdpdGhQYXJhbTxUPjo6
cGFyYW1ldGVyXyA9IE5VTEw7CiAvLyB1c3VhbGx5IHdhbnQgdGhlIGZhaWwtZmFzdCBiZWhhdmlv
ciBvZiBGQUlMIGFuZCBBU1NFUlRfKiwgYnV0IHRob3NlCiAvLyB3cml0aW5nIGRhdGEtZHJpdmVu
IHRlc3RzIG9mdGVuIGZpbmQgdGhlbXNlbHZlcyB1c2luZyBBRERfRkFJTFVSRQogLy8gYW5kIEVY
UEVDVF8qIG1vcmUuCi0vLwotLy8gRXhhbXBsZXM6Ci0vLwotLy8gICBFWFBFQ1RfVFJVRShzZXJ2
ZXIuU3RhdHVzSXNPSygpKTsKLS8vICAgQVNTRVJUX0ZBTFNFKHNlcnZlci5IYXNQZW5kaW5nUmVx
dWVzdChwb3J0KSkKLS8vICAgICAgIDw8ICJUaGVyZSBhcmUgc3RpbGwgcGVuZGluZyByZXF1ZXN0
cyAiIDw8ICJvbiBwb3J0ICIgPDwgcG9ydDsKIAogLy8gR2VuZXJhdGVzIGEgbm9uZmF0YWwgZmFp
bHVyZSB3aXRoIGEgZ2VuZXJpYyBtZXNzYWdlLgogI2RlZmluZSBBRERfRkFJTFVSRSgpIEdURVNU
X05PTkZBVEFMX0ZBSUxVUkVfKCJGYWlsZWQiKQogCisvLyBHZW5lcmF0ZXMgYSBub25mYXRhbCBm
YWlsdXJlIGF0IHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlvbiB3aXRoCisvLyBhIGdlbmVy
aWMgbWVzc2FnZS4KKyNkZWZpbmUgQUREX0ZBSUxVUkVfQVQoZmlsZSwgbGluZSkgXAorICBHVEVT
VF9NRVNTQUdFX0FUXyhmaWxlLCBsaW5lLCAiRmFpbGVkIiwgXAorICAgICAgICAgICAgICAgICAg
ICA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlKQorCiAvLyBHZW5l
cmF0ZXMgYSBmYXRhbCBmYWlsdXJlIHdpdGggYSBnZW5lcmljIG1lc3NhZ2UuCiAjZGVmaW5lIEdU
RVNUX0ZBSUwoKSBHVEVTVF9GQVRBTF9GQUlMVVJFXygiRmFpbGVkIikKIAogLy8gRGVmaW5lIHRo
aXMgbWFjcm8gdG8gMSB0byBvbWl0IHRoZSBkZWZpbml0aW9uIG9mIEZBSUwoKSwgd2hpY2ggaXMg
YQogLy8gZ2VuZXJpYyBuYW1lIGFuZCBjbGFzaGVzIHdpdGggc29tZSBvdGhlciBsaWJyYXJpZXMu
CiAjaWYgIUdURVNUX0RPTlRfREVGSU5FX0ZBSUwKLSNkZWZpbmUgRkFJTCgpIEdURVNUX0ZBSUwo
KQorIyBkZWZpbmUgRkFJTCgpIEdURVNUX0ZBSUwoKQogI2VuZGlmCiAKIC8vIEdlbmVyYXRlcyBh
IHN1Y2Nlc3Mgd2l0aCBhIGdlbmVyaWMgbWVzc2FnZS4KQEAgLTE2NjUsNyArMTgyOCw3IEBAIGNv
bnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogLy8gRGVmaW5lIHRo
aXMgbWFjcm8gdG8gMSB0byBvbWl0IHRoZSBkZWZpbml0aW9uIG9mIFNVQ0NFRUQoKSwgd2hpY2gK
IC8vIGlzIGEgZ2VuZXJpYyBuYW1lIGFuZCBjbGFzaGVzIHdpdGggc29tZSBvdGhlciBsaWJyYXJp
ZXMuCiAjaWYgIUdURVNUX0RPTlRfREVGSU5FX1NVQ0NFRUQKLSNkZWZpbmUgU1VDQ0VFRCgpIEdU
RVNUX1NVQ0NFRUQoKQorIyBkZWZpbmUgU1VDQ0VFRCgpIEdURVNUX1NVQ0NFRUQoKQogI2VuZGlm
CiAKIC8vIE1hY3JvcyBmb3IgdGVzdGluZyBleGNlcHRpb25zLgpAQCAtMTY5NCwxMyArMTg1Nywx
MyBAQCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIC8vIEFz
c2VydGlvblJlc3VsdC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSBBc3NlcnRp
b25SZXN1bHQgd2l0aAogLy8gdGhlc2UgbWFjcm9zIHNlZSBjb21tZW50cyBvbiB0aGF0IGNsYXNz
LgogI2RlZmluZSBFWFBFQ1RfVFJVRShjb25kaXRpb24pIFwKLSAgR1RFU1RfVEVTVF9CT09MRUFO
Xyhjb25kaXRpb24sICNjb25kaXRpb24sIGZhbHNlLCB0cnVlLCBcCisgIEdURVNUX1RFU1RfQk9P
TEVBTl8oKGNvbmRpdGlvbiksICNjb25kaXRpb24sIGZhbHNlLCB0cnVlLCBcCiAgICAgICAgICAg
ICAgICAgICAgICAgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8pCiAjZGVmaW5lIEVYUEVDVF9GQUxT
RShjb25kaXRpb24pIFwKICAgR1RFU1RfVEVTVF9CT09MRUFOXyghKGNvbmRpdGlvbiksICNjb25k
aXRpb24sIHRydWUsIGZhbHNlLCBcCiAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfTk9ORkFU
QUxfRkFJTFVSRV8pCiAjZGVmaW5lIEFTU0VSVF9UUlVFKGNvbmRpdGlvbikgXAotICBHVEVTVF9U
RVNUX0JPT0xFQU5fKGNvbmRpdGlvbiwgI2NvbmRpdGlvbiwgZmFsc2UsIHRydWUsIFwKKyAgR1RF
U1RfVEVTVF9CT09MRUFOXygoY29uZGl0aW9uKSwgI2NvbmRpdGlvbiwgZmFsc2UsIHRydWUsIFwK
ICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9GQVRBTF9GQUlMVVJFXykKICNkZWZpbmUgQVNT
RVJUX0ZBTFNFKGNvbmRpdGlvbikgXAogICBHVEVTVF9URVNUX0JPT0xFQU5fKCEoY29uZGl0aW9u
KSwgI2NvbmRpdGlvbiwgdHJ1ZSwgZmFsc2UsIFwKQEAgLTE3MDgsMTYgKzE4NzEsMTYgQEAgY29u
c3QgVCogVGVzdFdpdGhQYXJhbTxUPjo6cGFyYW1ldGVyXyA9IE5VTEw7CiAKIC8vIEluY2x1ZGVz
IHRoZSBhdXRvLWdlbmVyYXRlZCBoZWFkZXIgdGhhdCBpbXBsZW1lbnRzIGEgZmFtaWx5IG9mCiAv
LyBnZW5lcmljIHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9zLgotI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0X3ByZWRfaW1wbC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIgogCiAv
LyBNYWNyb3MgZm9yIHRlc3RpbmcgZXF1YWxpdGllcyBhbmQgaW5lcXVhbGl0aWVzLgogLy8KLS8v
ICAgICoge0FTU0VSVHxFWFBFQ1R9X0VRKGV4cGVjdGVkLCBhY3R1YWwpOiBUZXN0cyB0aGF0IGV4
cGVjdGVkID09IGFjdHVhbAotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTkUodjEsIHYyKTogICAg
ICAgICAgIFRlc3RzIHRoYXQgdjEgIT0gdjIKLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0xUKHYx
LCB2Mik6ICAgICAgICAgICBUZXN0cyB0aGF0IHYxIDwgdjIKLS8vICAgICoge0FTU0VSVHxFWFBF
Q1R9X0xFKHYxLCB2Mik6ICAgICAgICAgICBUZXN0cyB0aGF0IHYxIDw9IHYyCi0vLyAgICAqIHtB
U1NFUlR8RVhQRUNUfV9HVCh2MSwgdjIpOiAgICAgICAgICAgVGVzdHMgdGhhdCB2MSA+IHYyCi0v
LyAgICAqIHtBU1NFUlR8RVhQRUNUfV9HRSh2MSwgdjIpOiAgICAgICAgICAgVGVzdHMgdGhhdCB2
MSA+PSB2MgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fRVEodjEsIHYyKTogVGVzdHMgdGhhdCB2
MSA9PSB2MgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTkUodjEsIHYyKTogVGVzdHMgdGhhdCB2
MSAhPSB2MgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTFQodjEsIHYyKTogVGVzdHMgdGhhdCB2
MSA8IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9MRSh2MSwgdjIpOiBUZXN0cyB0aGF0IHYx
IDw9IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9HVCh2MSwgdjIpOiBUZXN0cyB0aGF0IHYx
ID4gdjIKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0dFKHYxLCB2Mik6IFRlc3RzIHRoYXQgdjEg
Pj0gdjIKIC8vCiAvLyBXaGVuIHRoZXkgYXJlIG5vdCwgR29vZ2xlIFRlc3QgcHJpbnRzIGJvdGgg
dGhlIHRlc3RlZCBleHByZXNzaW9ucyBhbmQKIC8vIHRoZWlyIGFjdHVhbCB2YWx1ZXMuICBUaGUg
dmFsdWVzIG11c3QgYmUgY29tcGF0aWJsZSBidWlsdC1pbiB0eXBlcywKQEAgLTE3MzksOCArMTkw
Miw4IEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogLy8g
ICBhcmUgcmVsYXRlZCwgbm90IGhvdyB0aGVpciBjb250ZW50IGlzIHJlbGF0ZWQuICBUbyBjb21w
YXJlIHR3byBDCiAvLyAgIHN0cmluZ3MgYnkgY29udGVudCwgdXNlIHtBU1NFUlR8RVhQRUNUfV9T
VFIqKCkuCiAvLwotLy8gICAzLiB7QVNTRVJUfEVYUEVDVH1fRVEoZXhwZWN0ZWQsIGFjdHVhbCkg
aXMgcHJlZmVycmVkIHRvCi0vLyAgIHtBU1NFUlR8RVhQRUNUfV9UUlVFKGV4cGVjdGVkID09IGFj
dHVhbCksIGFzIHRoZSBmb3JtZXIgdGVsbHMgeW91CisvLyAgIDMuIHtBU1NFUlR8RVhQRUNUfV9F
USh2MSwgdjIpIGlzIHByZWZlcnJlZCB0bworLy8gICB7QVNTRVJUfEVYUEVDVH1fVFJVRSh2MSA9
PSB2MiksIGFzIHRoZSBmb3JtZXIgdGVsbHMgeW91CiAvLyAgIHdoYXQgdGhlIGFjdHVhbCB2YWx1
ZSBpcyB3aGVuIGl0IGZhaWxzLCBhbmQgc2ltaWxhcmx5IGZvciB0aGUKIC8vICAgb3RoZXIgY29t
cGFyaXNvbnMuCiAvLwpAQCAtMTc1NiwxMiArMTkxOSwxMiBAQCBjb25zdCBUKiBUZXN0V2l0aFBh
cmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIC8vICAgQVNTRVJUX0xUKGksIGFycmF5X3NpemUp
OwogLy8gICBBU1NFUlRfR1QocmVjb3Jkcy5zaXplKCksIDApIDw8ICJUaGVyZSBpcyBubyByZWNv
cmQgbGVmdC4iOwogCi0jZGVmaW5lIEVYUEVDVF9FUShleHBlY3RlZCwgYWN0dWFsKSBcCisjZGVm
aW5lIEVYUEVDVF9FUSh2YWwxLCB2YWwyKSBcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0
aW5nOjppbnRlcm5hbDo6IFwKLSAgICAgICAgICAgICAgICAgICAgICBFcUhlbHBlcjxHVEVTVF9J
U19OVUxMX0xJVEVSQUxfKGV4cGVjdGVkKT46OkNvbXBhcmUsIFwKLSAgICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZCwgYWN0dWFsKQotI2RlZmluZSBFWFBFQ1RfTkUoZXhwZWN0ZWQsIGFjdHVh
bCkgXAotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBl
ck5FLCBleHBlY3RlZCwgYWN0dWFsKQorICAgICAgICAgICAgICAgICAgICAgIEVxSGVscGVyPEdU
RVNUX0lTX05VTExfTElURVJBTF8odmFsMSk+OjpDb21wYXJlLCBcCisgICAgICAgICAgICAgICAg
ICAgICAgdmFsMSwgdmFsMikKKyNkZWZpbmUgRVhQRUNUX05FKHZhbDEsIHZhbDIpIFwKKyAgRVhQ
RUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJORSwgdmFsMSwg
dmFsMikKICNkZWZpbmUgRVhQRUNUX0xFKHZhbDEsIHZhbDIpIFwKICAgRVhQRUNUX1BSRURfRk9S
TUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJMRSwgdmFsMSwgdmFsMikKICNkZWZp
bmUgRVhQRUNUX0xUKHZhbDEsIHZhbDIpIFwKQEAgLTE3NzEsMjIgKzE5MzQsNDkgQEAgY29uc3Qg
VCogVGVzdFdpdGhQYXJhbTxUPjo6cGFyYW1ldGVyXyA9IE5VTEw7CiAjZGVmaW5lIEVYUEVDVF9H
VCh2YWwxLCB2YWwyKSBcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q21wSGVscGVyR1QsIHZhbDEsIHZhbDIpCiAKLSNkZWZpbmUgQVNTRVJUX0VRKGV4cGVjdGVk
LCBhY3R1YWwpIFwKKyNkZWZpbmUgR1RFU1RfQVNTRVJUX0VRKHZhbDEsIHZhbDIpIFwKICAgQVNT
RVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjogXAotICAgICAgICAgICAgICAg
ICAgICAgIEVxSGVscGVyPEdURVNUX0lTX05VTExfTElURVJBTF8oZXhwZWN0ZWQpPjo6Q29tcGFy
ZSwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLCBhY3R1YWwpCi0jZGVmaW5lIEFT
U0VSVF9ORSh2YWwxLCB2YWwyKSBcCisgICAgICAgICAgICAgICAgICAgICAgRXFIZWxwZXI8R1RF
U1RfSVNfTlVMTF9MSVRFUkFMXyh2YWwxKT46OkNvbXBhcmUsIFwKKyAgICAgICAgICAgICAgICAg
ICAgICB2YWwxLCB2YWwyKQorI2RlZmluZSBHVEVTVF9BU1NFUlRfTkUodmFsMSwgdmFsMikgXAog
ICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlck5FLCB2
YWwxLCB2YWwyKQotI2RlZmluZSBBU1NFUlRfTEUodmFsMSwgdmFsMikgXAorI2RlZmluZSBHVEVT
VF9BU1NFUlRfTEUodmFsMSwgdmFsMikgXAogICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkNtcEhlbHBlckxFLCB2YWwxLCB2YWwyKQotI2RlZmluZSBBU1NFUlRfTFQo
dmFsMSwgdmFsMikgXAorI2RlZmluZSBHVEVTVF9BU1NFUlRfTFQodmFsMSwgdmFsMikgXAogICBB
U1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckxULCB2YWwx
LCB2YWwyKQotI2RlZmluZSBBU1NFUlRfR0UodmFsMSwgdmFsMikgXAorI2RlZmluZSBHVEVTVF9B
U1NFUlRfR0UodmFsMSwgdmFsMikgXAogICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6
aW50ZXJuYWw6OkNtcEhlbHBlckdFLCB2YWwxLCB2YWwyKQotI2RlZmluZSBBU1NFUlRfR1QodmFs
MSwgdmFsMikgXAorI2RlZmluZSBHVEVTVF9BU1NFUlRfR1QodmFsMSwgdmFsMikgXAogICBBU1NF
UlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckdULCB2YWwxLCB2
YWwyKQogCi0vLyBDIFN0cmluZyBDb21wYXJpc29ucy4gIEFsbCB0ZXN0cyB0cmVhdCBOVUxMIGFu
ZCBhbnkgbm9uLU5VTEwgc3RyaW5nCisvLyBEZWZpbmUgbWFjcm8gR1RFU1RfRE9OVF9ERUZJTkVf
QVNTRVJUX1hZIHRvIDEgdG8gb21pdCB0aGUgZGVmaW5pdGlvbiBvZgorLy8gQVNTRVJUX1hZKCks
IHdoaWNoIGNsYXNoZXMgd2l0aCBzb21lIHVzZXJzJyBvd24gY29kZS4KKworI2lmICFHVEVTVF9E
T05UX0RFRklORV9BU1NFUlRfRVEKKyMgZGVmaW5lIEFTU0VSVF9FUSh2YWwxLCB2YWwyKSBHVEVT
VF9BU1NFUlRfRVEodmFsMSwgdmFsMikKKyNlbmRpZgorCisjaWYgIUdURVNUX0RPTlRfREVGSU5F
X0FTU0VSVF9ORQorIyBkZWZpbmUgQVNTRVJUX05FKHZhbDEsIHZhbDIpIEdURVNUX0FTU0VSVF9O
RSh2YWwxLCB2YWwyKQorI2VuZGlmCisKKyNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX0xF
CisjIGRlZmluZSBBU1NFUlRfTEUodmFsMSwgdmFsMikgR1RFU1RfQVNTRVJUX0xFKHZhbDEsIHZh
bDIpCisjZW5kaWYKKworI2lmICFHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfTFQKKyMgZGVmaW5l
IEFTU0VSVF9MVCh2YWwxLCB2YWwyKSBHVEVTVF9BU1NFUlRfTFQodmFsMSwgdmFsMikKKyNlbmRp
ZgorCisjaWYgIUdURVNUX0RPTlRfREVGSU5FX0FTU0VSVF9HRQorIyBkZWZpbmUgQVNTRVJUX0dF
KHZhbDEsIHZhbDIpIEdURVNUX0FTU0VSVF9HRSh2YWwxLCB2YWwyKQorI2VuZGlmCisKKyNpZiAh
R1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX0dUCisjIGRlZmluZSBBU1NFUlRfR1QodmFsMSwgdmFs
MikgR1RFU1RfQVNTRVJUX0dUKHZhbDEsIHZhbDIpCisjZW5kaWYKKworLy8gQy1zdHJpbmcgQ29t
cGFyaXNvbnMuICBBbGwgdGVzdHMgdHJlYXQgTlVMTCBhbmQgYW55IG5vbi1OVUxMIHN0cmluZwog
Ly8gYXMgZGlmZmVyZW50LiAgVHdvIE5VTExzIGFyZSBlcXVhbC4KIC8vCiAvLyAgICAqIHtBU1NF
UlR8RVhQRUNUfV9TVFJFUShzMSwgczIpOiAgICAgVGVzdHMgdGhhdCBzMSA9PSBzMgpAQCAtMTgw
MiwyOSArMTk5MiwyOSBAQCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0g
TlVMTDsKIC8vCiAvLyBUaGVzZSBtYWNyb3MgZXZhbHVhdGUgdGhlaXIgYXJndW1lbnRzIGV4YWN0
bHkgb25jZS4KIAotI2RlZmluZSBFWFBFQ1RfU1RSRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAotICBF
WFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkVRLCBl
eHBlY3RlZCwgYWN0dWFsKQorI2RlZmluZSBFWFBFQ1RfU1RSRVEoczEsIHMyKSBcCisgIEVYUEVD
VF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSRVEsIHMxLCBz
MikKICNkZWZpbmUgRVhQRUNUX1NUUk5FKHMxLCBzMikgXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUk5FLCBzMSwgczIpCi0jZGVmaW5lIEVY
UEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAotICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkNBU0VFUSwgZXhwZWN0ZWQsIGFjdHVh
bCkKKyNkZWZpbmUgRVhQRUNUX1NUUkNBU0VFUShzMSwgczIpIFwKKyAgRVhQRUNUX1BSRURfRk9S
TUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJDQVNFRVEsIHMxLCBzMikKICNk
ZWZpbmUgRVhQRUNUX1NUUkNBU0VORShzMSwgczIpXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6
dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkNBU0VORSwgczEsIHMyKQogCi0jZGVmaW5l
IEFTU0VSVF9TVFJFUShleHBlY3RlZCwgYWN0dWFsKSBcCi0gIEFTU0VSVF9QUkVEX0ZPUk1BVDIo
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSRVEsIGV4cGVjdGVkLCBhY3R1YWwpCisj
ZGVmaW5lIEFTU0VSVF9TVFJFUShzMSwgczIpIFwKKyAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRl
c3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJFUSwgczEsIHMyKQogI2RlZmluZSBBU1NFUlRf
U1RSTkUoczEsIHMyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q21wSGVscGVyU1RSTkUsIHMxLCBzMikKLSNkZWZpbmUgQVNTRVJUX1NUUkNBU0VFUShleHBl
Y3RlZCwgYWN0dWFsKSBcCi0gIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q21wSGVscGVyU1RSQ0FTRUVRLCBleHBlY3RlZCwgYWN0dWFsKQorI2RlZmluZSBBU1NFUlRf
U1RSQ0FTRUVRKHMxLCBzMikgXAorICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkNtcEhlbHBlclNUUkNBU0VFUSwgczEsIHMyKQogI2RlZmluZSBBU1NFUlRfU1RSQ0FT
RU5FKHMxLCBzMilcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
Q21wSGVscGVyU1RSQ0FTRU5FLCBzMSwgczIpCiAKIC8vIE1hY3JvcyBmb3IgY29tcGFyaW5nIGZs
b2F0aW5nLXBvaW50IG51bWJlcnMuCiAvLwotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fRkxPQVRf
RVEoZXhwZWN0ZWQsIGFjdHVhbCk6CisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9GTE9BVF9FUSh2
YWwxLCB2YWwyKToKIC8vICAgICAgICAgVGVzdHMgdGhhdCB0d28gZmxvYXQgdmFsdWVzIGFyZSBh
bG1vc3QgZXF1YWwuCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9ET1VCTEVfRVEoZXhwZWN0ZWQs
IGFjdHVhbCk6CisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9ET1VCTEVfRVEodmFsMSwgdmFsMik6
CiAvLyAgICAgICAgIFRlc3RzIHRoYXQgdHdvIGRvdWJsZSB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVh
bC4KIC8vICAgICoge0FTU0VSVHxFWFBFQ1R9X05FQVIodjEsIHYyLCBhYnNfZXJyb3IpOgogLy8g
ICAgICAgICBUZXN0cyB0aGF0IHYxIGFuZCB2MiBhcmUgd2l0aGluIHRoZSBnaXZlbiBkaXN0YW5j
ZSB0byBlYWNoIG90aGVyLgpAQCAtMTgzNCwyMSArMjAyNCwyMSBAQCBjb25zdCBUKiBUZXN0V2l0
aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIC8vIEZsb2F0aW5nUG9pbnQgdGVtcGxhdGUg
Y2xhc3MgaW4gZ3Rlc3QtaW50ZXJuYWwuaCBpZiB5b3UgYXJlCiAvLyBpbnRlcmVzdGVkIGluIHRo
ZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgogCi0jZGVmaW5lIEVYUEVDVF9GTE9BVF9FUShleHBl
Y3RlZCwgYWN0dWFsKVwKKyNkZWZpbmUgRVhQRUNUX0ZMT0FUX0VRKHZhbDEsIHZhbDIpXAogICBF
WFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckZsb2F0aW5n
UG9pbnRFUTxmbG9hdD4sIFwKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwgYWN0dWFs
KQorICAgICAgICAgICAgICAgICAgICAgIHZhbDEsIHZhbDIpCiAKLSNkZWZpbmUgRVhQRUNUX0RP
VUJMRV9FUShleHBlY3RlZCwgYWN0dWFsKVwKKyNkZWZpbmUgRVhQRUNUX0RPVUJMRV9FUSh2YWwx
LCB2YWwyKVwKICAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBI
ZWxwZXJGbG9hdGluZ1BvaW50RVE8ZG91YmxlPiwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4
cGVjdGVkLCBhY3R1YWwpCisgICAgICAgICAgICAgICAgICAgICAgdmFsMSwgdmFsMikKIAotI2Rl
ZmluZSBBU1NFUlRfRkxPQVRfRVEoZXhwZWN0ZWQsIGFjdHVhbClcCisjZGVmaW5lIEFTU0VSVF9G
TE9BVF9FUSh2YWwxLCB2YWwyKVwKICAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6Omlu
dGVybmFsOjpDbXBIZWxwZXJGbG9hdGluZ1BvaW50RVE8ZmxvYXQ+LCBcCi0gICAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0ZWQsIGFjdHVhbCkKKyAgICAgICAgICAgICAgICAgICAgICB2YWwxLCB2
YWwyKQogCi0jZGVmaW5lIEFTU0VSVF9ET1VCTEVfRVEoZXhwZWN0ZWQsIGFjdHVhbClcCisjZGVm
aW5lIEFTU0VSVF9ET1VCTEVfRVEodmFsMSwgdmFsMilcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIo
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyRmxvYXRpbmdQb2ludEVRPGRvdWJsZT4sIFwK
LSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwgYWN0dWFsKQorICAgICAgICAgICAgICAg
ICAgICAgIHZhbDEsIHZhbDIpCiAKICNkZWZpbmUgRVhQRUNUX05FQVIodmFsMSwgdmFsMiwgYWJz
X2Vycm9yKVwKICAgRVhQRUNUX1BSRURfRk9STUFUMyg6OnRlc3Rpbmc6OmludGVybmFsOjpEb3Vi
bGVOZWFyUHJlZEZvcm1hdCwgXApAQCAtMTg4MiwxNiArMjA3MiwxNiBAQCBHVEVTVF9BUElfIEFz
c2VydGlvblJlc3VsdCBEb3VibGVMRShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhw
cjIsCiAvLyBleHBlY3RlZCByZXN1bHQgYW5kIHRoZSBhY3R1YWwgcmVzdWx0IHdpdGggYm90aCBh
IGh1bWFuLXJlYWRhYmxlCiAvLyBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGVycm9yLCBp
ZiBhdmFpbGFibGUsIGFzIHdlbGwgYXMgdGhlCiAvLyBoZXggcmVzdWx0IGNvZGUuCi0jZGVmaW5l
IEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChleHByKSBcCisjIGRlZmluZSBFWFBFQ1RfSFJFU1VM
VF9TVUNDRUVERUQoZXhwcikgXAogICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDEoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6SXNIUkVTVUxUU3VjY2VzcywgKGV4cHIpKQogCi0jZGVmaW5lIEFTU0VSVF9IUkVT
VUxUX1NVQ0NFRURFRChleHByKSBcCisjIGRlZmluZSBBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQo
ZXhwcikgXAogICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDEoOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXNI
UkVTVUxUU3VjY2VzcywgKGV4cHIpKQogCi0jZGVmaW5lIEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChl
eHByKSBcCisjIGRlZmluZSBFWFBFQ1RfSFJFU1VMVF9GQUlMRUQoZXhwcikgXAogICAgIEVYUEVD
VF9QUkVEX0ZPUk1BVDEoOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXNIUkVTVUxURmFpbHVyZSwgKGV4
cHIpKQogCi0jZGVmaW5lIEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChleHByKSBcCisjIGRlZmluZSBB
U1NFUlRfSFJFU1VMVF9GQUlMRUQoZXhwcikgXAogICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDEoOjp0
ZXN0aW5nOjppbnRlcm5hbDo6SXNIUkVTVUxURmFpbHVyZSwgKGV4cHIpKQogCiAjZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1MKQEAgLTE5MjYsMTcgKzIxMTYsNiBAQCBHVEVTVF9BUElfIEFzc2Vy
dGlvblJlc3VsdCBEb3VibGVMRShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIs
CiAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlNjb3BlZFRyYWNlIEdURVNUX0NPTkNBVF9UT0tFTl8o
Z3Rlc3RfdHJhY2VfLCBfX0xJTkVfXykoXAogICAgIF9fRklMRV9fLCBfX0xJTkVfXywgOjp0ZXN0
aW5nOjpNZXNzYWdlKCkgPDwgKG1lc3NhZ2UpKQogCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0v
LyBUaGlzIHRlbXBsYXRlIGlzIGRlY2xhcmVkLCBidXQgaW50ZW50aW9uYWxseSB1bmRlZmluZWQu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotc3RydWN0IFN0YXRpY0Fzc2Vy
dFR5cGVFcUhlbHBlcjsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgU3RhdGljQXNz
ZXJ0VHlwZUVxSGVscGVyPFQsIFQ+IHt9OwotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQog
Ly8gQ29tcGlsZS10aW1lIGFzc2VydGlvbiBmb3IgdHlwZSBlcXVhbGl0eS4KIC8vIFN0YXRpY0Fz
c2VydFR5cGVFcTx0eXBlMSwgdHlwZTI+KCkgY29tcGlsZXMgaWZmIHR5cGUxIGFuZCB0eXBlMiBh
cmUKIC8vIHRoZSBzYW1lIHR5cGUuICBUaGUgdmFsdWUgaXQgcmV0dXJucyBpcyBub3QgaW50ZXJl
c3RpbmcuCkBAIC0xOTY5LDcgKzIxNDgsNyBAQCBzdHJ1Y3QgU3RhdGljQXNzZXJ0VHlwZUVxSGVs
cGVyPFQsIFQ+IHt9OwogLy8gdG8gY2F1c2UgYSBjb21waWxlciBlcnJvci4KIHRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CiBib29sIFN0YXRpY0Fzc2VydFR5cGVFcSgpIHsKLSAg
aW50ZXJuYWw6OlN0YXRpY0Fzc2VydFR5cGVFcUhlbHBlcjxUMSwgVDI+KCk7CisgICh2b2lkKWlu
dGVybmFsOjpTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI8VDEsIFQyPigpOwogICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMTk4MSw4ICsyMTYwLDggQEAgYm9vbCBTdGF0aWNBc3NlcnRUeXBlRXEoKSB7
CiAvLyBUaGUgY29udmVudGlvbiBpcyB0byBlbmQgdGhlIHRlc3QgY2FzZSBuYW1lIHdpdGggIlRl
c3QiLiAgRm9yCiAvLyBleGFtcGxlLCBhIHRlc3QgY2FzZSBmb3IgdGhlIEZvbyBjbGFzcyBjYW4g
YmUgbmFtZWQgRm9vVGVzdC4KIC8vCi0vLyBUaGUgdXNlciBzaG91bGQgcHV0IGhpcyB0ZXN0IGNv
ZGUgYmV0d2VlbiBicmFjZXMgYWZ0ZXIgdXNpbmcgdGhpcwotLy8gbWFjcm8uICBFeGFtcGxlOgor
Ly8gVGVzdCBjb2RlIHNob3VsZCBhcHBlYXIgYmV0d2VlbiBicmFjZXMgYWZ0ZXIgYW4gaW52b2Nh
dGlvbiBvZgorLy8gdGhpcyBtYWNyby4gIEV4YW1wbGU6CiAvLwogLy8gICBURVNUKEZvb1Rlc3Qs
IEluaXRpYWxpemVzQ29ycmVjdGx5KSB7CiAvLyAgICAgRm9vIGZvbzsKQEAgLTIwMDUsNyArMjE4
NCw3IEBAIGJvb2wgU3RhdGljQXNzZXJ0VHlwZUVxKCkgewogLy8gRGVmaW5lIHRoaXMgbWFjcm8g
dG8gMSB0byBvbWl0IHRoZSBkZWZpbml0aW9uIG9mIFRFU1QoKSwgd2hpY2gKIC8vIGlzIGEgZ2Vu
ZXJpYyBuYW1lIGFuZCBjbGFzaGVzIHdpdGggc29tZSBvdGhlciBsaWJyYXJpZXMuCiAjaWYgIUdU
RVNUX0RPTlRfREVGSU5FX1RFU1QKLSNkZWZpbmUgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9u
YW1lKSBHVEVTVF9URVNUKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpCisjIGRlZmluZSBURVNU
KHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIEdURVNUX1RFU1QodGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSkKICNlbmRpZgogCiAvLyBEZWZpbmVzIGEgdGVzdCB0aGF0IHVzZXMgYSB0ZXN0IGZp
eHR1cmUuCkBAIC0yMDM4LDE1ICsyMjE3LDIwIEBAIGJvb2wgU3RhdGljQXNzZXJ0VHlwZUVxKCkg
ewogICBHVEVTVF9URVNUXyh0ZXN0X2ZpeHR1cmUsIHRlc3RfbmFtZSwgdGVzdF9maXh0dXJlLCBc
CiAgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkdldFR5cGVJZDx0ZXN0X2ZpeHR1
cmU+KCkpCiAKLS8vIFVzZSB0aGlzIG1hY3JvIGluIG1haW4oKSB0byBydW4gYWxsIHRlc3RzLiAg
SXQgcmV0dXJucyAwIGlmIGFsbAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKworLy8gVXNlIHRo
aXMgZnVuY3Rpb24gaW4gbWFpbigpIHRvIHJ1biBhbGwgdGVzdHMuICBJdCByZXR1cm5zIDAgaWYg
YWxsCiAvLyB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3IgMSBvdGhlcndpc2UuCiAvLwogLy8gUlVO
X0FMTF9URVNUUygpIHNob3VsZCBiZSBpbnZva2VkIGFmdGVyIHRoZSBjb21tYW5kIGxpbmUgaGFz
IGJlZW4KIC8vIHBhcnNlZCBieSBJbml0R29vZ2xlVGVzdCgpLgorLy8KKy8vIFRoaXMgZnVuY3Rp
b24gd2FzIGZvcm1lcmx5IGEgbWFjcm87IHRodXMsIGl0IGlzIGluIHRoZSBnbG9iYWwKKy8vIG5h
bWVzcGFjZSBhbmQgaGFzIGFuIGFsbC1jYXBzIG5hbWUuCitpbnQgUlVOX0FMTF9URVNUUygpIEdU
RVNUX01VU1RfVVNFX1JFU1VMVF87CiAKLSNkZWZpbmUgUlVOX0FMTF9URVNUUygpXAotICAoOjp0
ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+UnVuKCkpCi0KLX0gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCitpbmxpbmUgaW50IFJVTl9BTExfVEVTVFMoKSB7CisgIHJldHVybiA6OnRlc3Rp
bmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5SdW4oKTsKK30KIAogI2VuZGlmICAvLyBHVEVT
VF9JTkNMVURFX0dURVNUX0dURVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcmVkX2ltcGwuaAppbmRleCBlMWUyZjhjNGM4ODdh
OGRlZmNiNzU4Y2EwY2FhYjNiN2NlYjlkNDFhLi4zMGFlNzEyZjUwZWQzZDhlODQ0NmU0NDk1YWY5
YjFhYmVjYWIyZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmgKQEAgLTI3LDcgKzI3LDcgQEAKIC8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotLy8gVGhpcyBmaWxlIGlzIEFVVE9NQVRJQ0FMTFkg
R0VORVJBVEVEIG9uIDEwLzAyLzIwMDggYnkgY29tbWFuZAorLy8gVGhpcyBmaWxlIGlzIEFVVE9N
QVRJQ0FMTFkgR0VORVJBVEVEIG9uIDEwLzMxLzIwMTEgYnkgY29tbWFuZAogLy8gJ2dlbl9ndGVz
dF9wcmVkX2ltcGwucHkgNScuICBETyBOT1QgRURJVCBCWSBIQU5EIQogLy8KIC8vIEltcGxlbWVu
dHMgYSBmYW1pbHkgb2YgZ2VuZXJpYyBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3Jvcy4KQEAgLTM3
LDcgKzM3LDcgQEAKIAogLy8gTWFrZXMgc3VyZSB0aGlzIGhlYWRlciBpcyBub3QgaW5jbHVkZWQg
YmVmb3JlIGd0ZXN0LmguCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KLSNl
cnJvciBEbyBub3QgaW5jbHVkZSBndGVzdF9wcmVkX2ltcGwuaCBkaXJlY3RseS4gIEluY2x1ZGUg
Z3Rlc3QuaCBpbnN0ZWFkLgorIyBlcnJvciBEbyBub3QgaW5jbHVkZSBndGVzdF9wcmVkX2ltcGwu
aCBkaXJlY3RseS4gIEluY2x1ZGUgZ3Rlc3QuaCBpbnN0ZWFkLgogI2VuZGlmICAvLyBHVEVTVF9J
TkNMVURFX0dURVNUX0dURVNUX0hfCiAKIC8vIFRoaXMgaGVhZGVyIGltcGxlbWVudHMgYSBmYW1p
bHkgb2YgZ2VuZXJpYyBwcmVkaWNhdGUgYXNzZXJ0aW9uCkBAIC05MCwxNyArOTAsMTUgQEAgQXNz
ZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQxSGVscGVyKGNvbnN0IGNoYXIqIHByZWRfdGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgdjEpIHsKICAgaWYgKHBy
ZWQodjEpKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIE1lc3NhZ2UgbXNnOwotICBt
c2cgPDwgcHJlZF90ZXh0IDw8ICIoIgotICAgICAgPDwgZTEgPDwgIikgZXZhbHVhdGVzIHRvIGZh
bHNlLCB3aGVyZSIKLSAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2
MTsKLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgcmV0dXJuIEFzc2VydGlvbkZh
aWx1cmUoKSA8PCBwcmVkX3RleHQgPDwgIigiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PDwgZTEgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjE7CiB9CiAK
IC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRURf
Rk9STUFUMS4KIC8vIERvbid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KICNkZWZpbmUgR1RFU1Rf
UFJFRF9GT1JNQVQxXyhwcmVkX2Zvcm1hdCwgdjEsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NF
UlRfKHByZWRfZm9ybWF0KCN2MSwgdjEpLFwKKyAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgj
djEsIHYxKSwgXAogICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVybmFsIG1h
Y3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQxLiAgRG9uJ3QgdXNlCkBA
IC0xMzYsMTkgKzEzNCwxNyBAQCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDJIZWxwZXIoY29u
c3QgY2hhciogcHJlZF90ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFQyJiB2MikgewogICBpZiAocHJlZCh2MSwgdjIpKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2Vz
cygpOwogCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgcHJlZF90ZXh0IDw8ICIoIgotICAgICAg
PDwgZTEgPDwgIiwgIgotICAgICAgPDwgZTIgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVy
ZSIKLSAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MQotICAgICAg
PDwgIlxuIiA8PCBlMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYyOwotICByZXR1cm4gQXNzZXJ0
aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4
dCA8PCAiKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMSA8PCAiLCAiCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTIgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3
aGVyZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZh
bHVhdGVzIHRvICIgPDwgdjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8
IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjI7CiB9CiAKIC8vIEludGVybmFsIG1hY3JvIGZv
ciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRURfRk9STUFUMi4KIC8vIERvbid0IHVz
ZSB0aGlzIGluIHlvdXIgY29kZS4KICNkZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQyXyhwcmVkX2Zv
cm1hdCwgdjEsIHYyLCBvbl9mYWlsdXJlKVwKLSAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgj
djEsICN2MiwgdjEsIHYyKSxcCisgIEdURVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoI3YxLCAjdjIs
IHYxLCB2MiksIFwKICAgICAgICAgICAgICAgICBvbl9mYWlsdXJlKQogCiAvLyBJbnRlcm5hbCBt
YWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEMi4gIERvbid0IHVzZQpA
QCAtMTg5LDIxICsxODUsMTkgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQzSGVscGVyKGNv
bnN0IGNoYXIqIHByZWRfdGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUMyYgdjMpIHsKICAgaWYgKHByZWQodjEsIHYyLCB2MykpIHJldHVybiBBc3NlcnRpb25T
dWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBwcmVkX3RleHQgPDwgIigiCi0g
ICAgICA8PCBlMSA8PCAiLCAiCi0gICAgICA8PCBlMiA8PCAiLCAiCi0gICAgICA8PCBlMyA8PCAi
KSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2
YWx1YXRlcyB0byAiIDw8IHYxCi0gICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRv
ICIgPDwgdjIKLSAgICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MzsK
LSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1
cmUoKSA8PCBwcmVkX3RleHQgPDwgIigiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
ZTEgPDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUyIDw8ICIsICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMyA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2Us
IHdoZXJlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBl
dmFsdWF0ZXMgdG8gIiA8PCB2MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIg
PDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MzsKIH0KIAogLy8gSW50
ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQz
LgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZP
Uk1BVDNfKHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCBvbl9mYWlsdXJlKVwKLSAgR1RFU1RfQVNT
RVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3YzLCB2MSwgdjIsIHYzKSxcCisgIEdURVNUX0FT
U0VSVF8ocHJlZF9mb3JtYXQoI3YxLCAjdjIsICN2MywgdjEsIHYyLCB2MyksIFwKICAgICAgICAg
ICAgICAgICBvbl9mYWlsdXJlKQogCiAvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5n
IHtFWFBFQ1R8QVNTRVJUfV9QUkVEMy4gIERvbid0IHVzZQpAQCAtMjQ5LDIzICsyNDMsMjEgQEAg
QXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQ0SGVscGVyKGNvbnN0IGNoYXIqIHByZWRfdGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUNCYgdjQpIHsKICAgaWYg
KHByZWQodjEsIHYyLCB2MywgdjQpKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIE1l
c3NhZ2UgbXNnOwotICBtc2cgPDwgcHJlZF90ZXh0IDw8ICIoIgotICAgICAgPDwgZTEgPDwgIiwg
IgotICAgICAgPDwgZTIgPDwgIiwgIgotICAgICAgPDwgZTMgPDwgIiwgIgotICAgICAgPDwgZTQg
PDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKLSAgICAgIDw8ICJcbiIgPDwgZTEgPDwg
IiBldmFsdWF0ZXMgdG8gIiA8PCB2MQotICAgICAgPDwgIlxuIiA8PCBlMiA8PCAiIGV2YWx1YXRl
cyB0byAiIDw8IHYyCi0gICAgICA8PCAiXG4iIDw8IGUzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwg
djMKLSAgICAgIDw8ICJcbiIgPDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NDsKLSAgcmV0
dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8
PCBwcmVkX3RleHQgPDwgIigiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTEgPDwg
IiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUyIDw8ICIsICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCBlMyA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgZTQgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjEK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVz
IHRvICIgPDwgdjIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUzIDw8
ICIgZXZhbHVhdGVzIHRvICIgPDwgdjMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAi
XG4iIDw8IGU0IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjQ7CiB9CiAKIC8vIEludGVybmFsIG1h
Y3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRURfRk9STUFUNC4KIC8vIERv
bid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KICNkZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQ0Xyhw
cmVkX2Zvcm1hdCwgdjEsIHYyLCB2MywgdjQsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NFUlRf
KHByZWRfZm9ybWF0KCN2MSwgI3YyLCAjdjMsICN2NCwgdjEsIHYyLCB2MywgdjQpLFwKKyAgR1RF
U1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3YzLCAjdjQsIHYxLCB2MiwgdjMsIHY0
KSwgXAogICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVybmFsIG1hY3JvIGZv
ciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQ0LiAgRG9uJ3QgdXNlCkBAIC0zMTYs
MjUgKzMwOCwyMyBAQCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDVIZWxwZXIoY29uc3QgY2hh
ciogcHJlZF90ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQ1
JiB2NSkgewogICBpZiAocHJlZCh2MSwgdjIsIHYzLCB2NCwgdjUpKSByZXR1cm4gQXNzZXJ0aW9u
U3VjY2VzcygpOwogCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgcHJlZF90ZXh0IDw8ICIoIgot
ICAgICAgPDwgZTEgPDwgIiwgIgotICAgICAgPDwgZTIgPDwgIiwgIgotICAgICAgPDwgZTMgPDwg
IiwgIgotICAgICAgPDwgZTQgPDwgIiwgIgotICAgICAgPDwgZTUgPDwgIikgZXZhbHVhdGVzIHRv
IGZhbHNlLCB3aGVyZSIKLSAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8
PCB2MQotICAgICAgPDwgIlxuIiA8PCBlMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYyCi0gICAg
ICA8PCAiXG4iIDw8IGUzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjMKLSAgICAgIDw8ICJcbiIg
PDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NAotICAgICAgPDwgIlxuIiA8PCBlNSA8PCAi
IGV2YWx1YXRlcyB0byAiIDw8IHY1OwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwor
ICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCBlMSA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgZTIgPDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUzIDw8
ICIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlNCA8PCAiLCAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgZTUgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVy
ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVh
dGVzIHRvICIgPDwgdjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUy
IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
PCAiXG4iIDw8IGUzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiXG4iIDw8IGU0IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjQKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGU1IDw8ICIgZXZhbHVhdGVzIHRvICIg
PDwgdjU7CiB9CiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxB
U1NFUlR9X1BSRURfRk9STUFUNS4KIC8vIERvbid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KICNk
ZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQ1XyhwcmVkX2Zvcm1hdCwgdjEsIHYyLCB2MywgdjQsIHY1
LCBvbl9mYWlsdXJlKVwKLSAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3Yz
LCAjdjQsICN2NSwgdjEsIHYyLCB2MywgdjQsIHY1KSxcCisgIEdURVNUX0FTU0VSVF8ocHJlZF9m
b3JtYXQoI3YxLCAjdjIsICN2MywgI3Y0LCAjdjUsIHYxLCB2MiwgdjMsIHY0LCB2NSksIFwKICAg
ICAgICAgICAgICAgICBvbl9mYWlsdXJlKQogCiAvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVt
ZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVENS4gIERvbid0IHVzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3Qt
cG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9j
dXN0b20vZ3Rlc3QtcG9ydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlNzQ0YmQzYmIzOGMzYTIxYjc1MjA3OGI3
YTIxZWIzZDYyMjM3ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmgKQEAgLTAsMCArMSw2
OSBAQAorLy8gQ29weXJpZ2h0IDIwMTUsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8v
IEluamVjdGlvbiBwb2ludCBmb3IgY3VzdG9tIHVzZXIgY29uZmlndXJhdGlvbnMuCisvLyBUaGUg
Zm9sbG93aW5nIG1hY3JvcyBjYW4gYmUgZGVmaW5lZDoKKy8vCisvLyAgIEZsYWcgcmVsYXRlZCBt
YWNyb3M6CisvLyAgICAgR1RFU1RfRkxBRyhmbGFnX25hbWUpCisvLyAgICAgR1RFU1RfVVNFX09X
Tl9GTEFHRklMRV9GTEFHXyAgLSBEZWZpbmUgdG8gMCB3aGVuIHRoZSBzeXN0ZW0gcHJvdmlkZXMg
aXRzCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd24gZmxhZ2ZpbGUg
ZmxhZyBwYXJzaW5nLgorLy8gICAgIEdURVNUX0RFQ0xBUkVfYm9vbF8obmFtZSkKKy8vICAgICBH
VEVTVF9ERUNMQVJFX2ludDMyXyhuYW1lKQorLy8gICAgIEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhu
YW1lKQorLy8gICAgIEdURVNUX0RFRklORV9ib29sXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKQor
Ly8gICAgIEdURVNUX0RFRklORV9pbnQzMl8obmFtZSwgZGVmYXVsdF92YWwsIGRvYykKKy8vICAg
ICBHVEVTVF9ERUZJTkVfc3RyaW5nXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKQorLy8KKy8vICAg
VGVzdCBmaWx0ZXJpbmc6CisvLyAgICAgR1RFU1RfVEVTVF9GSUxURVJfRU5WX1ZBUl8gLSBUaGUg
bmFtZSBvZiBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0aGF0CisvLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aWxsIGJlIHVzZWQgaWYgLS1HVEVTVF9GTEFHKHRlc3RfZmlsdGVy
KQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgbm90IHByb3ZpZGVkLgor
Ly8KKy8vICAgTG9nZ2luZzoKKy8vICAgICBHVEVTVF9MT0dfKHNldmVyaXR5KQorLy8gICAgIEdU
RVNUX0NIRUNLXyhjb25kaXRpb24pCisvLyAgICAgRnVuY3Rpb25zIExvZ1RvU3RkZXJyKCkgYW5k
IEZsdXNoSW5mb0xvZygpIGhhdmUgdG8gYmUgcHJvdmlkZWQgdG9vLgorLy8KKy8vICAgVGhyZWFk
aW5nOgorLy8gICAgIEdURVNUX0hBU19OT1RJRklDQVRJT05fIC0gRW5hYmxlZCBpZiBOb3RpZmlj
YXRpb24gaXMgYWxyZWFkeSBwcm92aWRlZC4KKy8vICAgICBHVEVTVF9IQVNfTVVURVhfQU5EX1RI
UkVBRF9MT0NBTF8gLSBFbmFibGVkIGlmIE11dGV4IGFuZCBUaHJlYWRMb2NhbCBhcmUKKy8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IHByb3ZpZGVkLgor
Ly8gICAgIE11c3QgYWxzbyBwcm92aWRlIEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRl
eCkgYW5kCisvLyAgICAgR1RFU1RfREVGSU5FX1NUQVRJQ19NVVRFWF8obXV0ZXgpCisvLworLy8g
ICAgIEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhsb2NrcykKKy8vICAgICBHVEVTVF9M
T0NLX0VYQ0xVREVEXyhsb2NrcykKKy8vCisvLyAqKiBDdXN0b20gaW1wbGVtZW50YXRpb24gc3Rh
cnRzIGhlcmUgKioKKworI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0NVU1RP
TV9HVEVTVF9QT1JUX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VT
VE9NX0dURVNUX1BPUlRfSF8KKworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVS
TkFMX0NVU1RPTV9HVEVTVF9QT1JUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wcmludGVycy5oIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3Qt
cHJpbnRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGMxZWEwNTBiNjFlOTNiZmNmMTQ2ZTYxMTFiZmE1MDMx
NWM4MmVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcHJpbnRlcnMuaApAQCAtMCwwICsxLDQyIEBA
CisvLyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8v
IGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gVGhp
cyBmaWxlIHByb3ZpZGVzIGFuIGluamVjdGlvbiBwb2ludCBmb3IgY3VzdG9tIHByaW50ZXJzIGlu
IGEgbG9jYWwKKy8vIGluc3RhbGxhdGlvbiBvZiBnVGVzdC4KKy8vIEl0IHdpbGwgYmUgaW5jbHVk
ZWQgZnJvbSBndGVzdC1wcmludGVycy5oIGFuZCB0aGUgb3ZlcnJpZGVzIGluIHRoaXMgZmlsZQor
Ly8gd2lsbCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lLgorLy8gU2VlIGRvY3VtZW50YXRpb24gYXQg
Z3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCBmb3IgZGV0YWlscyBvbiBob3cgdG8gZGVmaW5lIGEKKy8v
IGN1c3RvbSBwcmludGVyLgorLy8KKy8vICoqIEN1c3RvbSBpbXBsZW1lbnRhdGlvbiBzdGFydHMg
aGVyZSAqKgorCisjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dU
RVNUX1BSSU5URVJTX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VT
VE9NX0dURVNUX1BSSU5URVJTX0hfCisKKyNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9J
TlRFUk5BTF9DVVNUT01fR1RFU1RfUFJJTlRFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmMyNzQxMmE4OTgxODQ0ZDkyMTcxYWJlNTU4YzFkNjg5ODlkMDE1ZmMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2N1c3RvbS9ndGVzdC5oCkBAIC0wLDAgKzEsNDEgQEAKKy8vIENvcHlyaWdodCAyMDE1
LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBJbmplY3Rpb24gcG9pbnQgZm9yIGN1
c3RvbSB1c2VyIGNvbmZpZ3VyYXRpb25zLgorLy8gVGhlIGZvbGxvd2luZyBtYWNyb3MgY2FuIGJl
IGRlZmluZWQ6CisvLworLy8gR1RFU1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVSXyAgLSBUaGUgbmFt
ZSBvZiBhbiBpbXBsZW1lbnRhdGlvbiBvZgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UuCisvLworLy8gKiogQ3VzdG9tIGltcGxl
bWVudGF0aW9uIHN0YXJ0cyBoZXJlICoqCisKKyNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9J
TlRFUk5BTF9DVVNUT01fR1RFU1RfSF8KKyNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRF
Uk5BTF9DVVNUT01fR1RFU1RfSF8KKworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lO
VEVSTkFMX0NVU1RPTV9HVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRo
LXRlc3QtaW50ZXJuYWwuaAppbmRleCBlNDMzMDg0OGQ0ZWFlNTcwZjI4MGRhYzU3Y2YwMGIyOTcy
MmM3ZDBjLi4yYjNhNzhmNWJmODYzMjhmYzFiZjU4ZjE2ODJjOWVlNDRhNTA1N2MyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0
LWRlYXRoLXRlc3QtaW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaApAQCAtMzcsNyAr
MzcsOSBAQAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0RFQVRI
X1RFU1RfSU5URVJOQUxfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9H
VEVTVF9ERUFUSF9URVNUX0lOVEVSTkFMX0hfCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9n
dGVzdC1pbnRlcm5hbC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFs
LmgiCisKKyNpbmNsdWRlIDxzdGRpby5oPgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiBuYW1lc3Bh
Y2UgaW50ZXJuYWwgewpAQCAtOTYsOCArOTgsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBEZWF0aFRl
c3QgewogICAvLyB0ZXN0LCB0aGVuIHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlLgogICBlbnVtIFRl
c3RSb2xlIHsgT1ZFUlNFRV9URVNULCBFWEVDVVRFX1RFU1QgfTsKIAotICAvLyBBbiBlbnVtZXJh
dGlvbiBvZiB0aGUgdHdvIHJlYXNvbnMgdGhhdCBhIHRlc3QgbWlnaHQgYmUgYWJvcnRlZC4KLSAg
ZW51bSBBYm9ydFJlYXNvbiB7IFRFU1RfRU5DT1VOVEVSRURfUkVUVVJOX1NUQVRFTUVOVCwgVEVT
VF9ESURfTk9UX0RJRSB9OworICAvLyBBbiBlbnVtZXJhdGlvbiBvZiB0aGUgdGhyZWUgcmVhc29u
cyB0aGF0IGEgdGVzdCBtaWdodCBiZSBhYm9ydGVkLgorICBlbnVtIEFib3J0UmVhc29uIHsKKyAg
ICBURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQsCisgICAgVEVTVF9USFJFV19FWENF
UFRJT04sCisgICAgVEVTVF9ESURfTk9UX0RJRQorICB9OwogCiAgIC8vIEFzc3VtZXMgb25lIG9m
IHRoZSBhYm92ZSByb2xlcy4KICAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCkgPSAwOwpA
QCAtMTIxLDExICsxMjcsMTEgQEAgY2xhc3MgR1RFU1RfQVBJXyBEZWF0aFRlc3QgewogICAvLyB0
aGUgbGFzdCBkZWF0aCB0ZXN0LgogICBzdGF0aWMgY29uc3QgY2hhciogTGFzdE1lc3NhZ2UoKTsK
IAotICBzdGF0aWMgdm9pZCBzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKKyAgc3RhdGljIHZvaWQgc2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKGNv
bnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKTsKIAogIHByaXZhdGU6CiAgIC8vIEEgc3RyaW5nIGNv
bnRhaW5pbmcgYSBkZXNjcmlwdGlvbiBvZiB0aGUgb3V0Y29tZSBvZiB0aGUgbGFzdCBkZWF0aCB0
ZXN0LgotICBzdGF0aWMgU3RyaW5nIGxhc3RfZGVhdGhfdGVzdF9tZXNzYWdlXzsKKyAgc3RhdGlj
IHN0ZDo6c3RyaW5nIGxhc3RfZGVhdGhfdGVzdF9tZXNzYWdlXzsKIAogICBHVEVTVF9ESVNBTExP
V19DT1BZX0FORF9BU1NJR05fKERlYXRoVGVzdCk7CiB9OwpAQCAtMTQ5LDkgKzE1NSwzNCBAQCBj
bGFzcyBEZWZhdWx0RGVhdGhUZXN0RmFjdG9yeSA6IHB1YmxpYyBEZWF0aFRlc3RGYWN0b3J5IHsK
IC8vIGJ5IGEgc2lnbmFsLCBvciBleGl0ZWQgbm9ybWFsbHkgd2l0aCBhIG5vbnplcm8gZXhpdCBj
b2RlLgogR1RFU1RfQVBJXyBib29sIEV4aXRlZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1
cyk7CiAKKy8vIFRyYXBzIEMrKyBleGNlcHRpb25zIGVzY2FwaW5nIHN0YXRlbWVudCBhbmQgcmVw
b3J0cyB0aGVtIGFzIHRlc3QKKy8vIGZhaWx1cmVzLiBOb3RlIHRoYXQgdHJhcHBpbmcgU0VIIGV4
Y2VwdGlvbnMgaXMgbm90IGltcGxlbWVudGVkIGhlcmUuCisjIGlmIEdURVNUX0hBU19FWENFUFRJ
T05TCisjICBkZWZpbmUgR1RFU1RfRVhFQ1VURV9ERUFUSF9URVNUX1NUQVRFTUVOVF8oc3RhdGVt
ZW50LCBkZWF0aF90ZXN0KSBcCisgIHRyeSB7IFwKKyAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNI
QUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKKyAgfSBjYXRjaCAoY29uc3Qg
OjpzdGQ6OmV4Y2VwdGlvbiYgZ3Rlc3RfZXhjZXB0aW9uKSB7IFwKKyAgICBmcHJpbnRmKFwKKyAg
ICAgICAgc3RkZXJyLCBcCisgICAgICAgICJcbiVzOiBDYXVnaHQgc3RkOjpleGNlcHRpb24tZGVy
aXZlZCBleGNlcHRpb24gZXNjYXBpbmcgdGhlICIgXAorICAgICAgICAiZGVhdGggdGVzdCBzdGF0
ZW1lbnQuIEV4Y2VwdGlvbiBtZXNzYWdlOiAlc1xuIiwgXAorICAgICAgICA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpGb3JtYXRGaWxlTG9jYXRpb24oX19GSUxFX18sIF9fTElORV9fKS5jX3N0cigpLCBc
CisgICAgICAgIGd0ZXN0X2V4Y2VwdGlvbi53aGF0KCkpOyBcCisgICAgZmZsdXNoKHN0ZGVycik7
IFwKKyAgICBkZWF0aF90ZXN0LT5BYm9ydCg6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q6
OlRFU1RfVEhSRVdfRVhDRVBUSU9OKTsgXAorICB9IGNhdGNoICguLi4pIHsgXAorICAgIGRlYXRo
X3Rlc3QtPkFib3J0KDo6dGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVzdDo6VEVTVF9USFJFV19F
WENFUFRJT04pOyBcCisgIH0KKworIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfRVhFQ1VURV9ERUFU
SF9URVNUX1NUQVRFTUVOVF8oc3RhdGVtZW50LCBkZWF0aF90ZXN0KSBcCisgIEdURVNUX1NVUFBS
RVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KQorCisjIGVuZGlm
CisKIC8vIFRoaXMgbWFjcm8gaXMgZm9yIGltcGxlbWVudGluZyBBU1NFUlRfREVBVEgqLCBFWFBF
Q1RfREVBVEgqLAogLy8gQVNTRVJUX0VYSVQqLCBhbmQgRVhQRUNUX0VYSVQqLgotI2RlZmluZSBH
VEVTVF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIGZhaWwpIFwKKyMg
ZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgZmFp
bCkgXAogICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCiAgIGlmICg6OnRlc3Rpbmc6
OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAogICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJu
YWw6OlJFJiBndGVzdF9yZWdleCA9IChyZWdleCk7IFwKQEAgLTE3MiwxMCArMjAzLDEyIEBAIEdU
RVNUX0FQSV8gYm9vbCBFeGl0ZWRVbnN1Y2Nlc3NmdWxseShpbnQgZXhpdF9zdGF0dXMpOwogICAg
ICAgICBjYXNlIDo6dGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVzdDo6RVhFQ1VURV9URVNUOiB7
IFwKICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OlJldHVyblNlbnRp
bmVsIFwKICAgICAgICAgICAgICAgZ3Rlc3Rfc2VudGluZWwoZ3Rlc3RfZHQpOyBcCi0gICAgICAg
ICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1l
bnQpOyBcCisgICAgICAgICAgR1RFU1RfRVhFQ1VURV9ERUFUSF9URVNUX1NUQVRFTUVOVF8oc3Rh
dGVtZW50LCBndGVzdF9kdCk7IFwKICAgICAgICAgICBndGVzdF9kdC0+QWJvcnQoOjp0ZXN0aW5n
OjppbnRlcm5hbDo6RGVhdGhUZXN0OjpURVNUX0RJRF9OT1RfRElFKTsgXAogICAgICAgICAgIGJy
ZWFrOyBcCiAgICAgICAgIH0gXAorICAgICAgICBkZWZhdWx0OiBcCisgICAgICAgICAgYnJlYWs7
IFwKICAgICAgIH0gXAogICAgIH0gXAogICB9IGVsc2UgXApAQCAtMTg0LDEyICsyMTcsMjMgQEAg
R1RFU1RfQVBJXyBib29sIEV4aXRlZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1cyk7CiAv
LyBUaGUgc3ltYm9sICJmYWlsIiBoZXJlIGV4cGFuZHMgdG8gc29tZXRoaW5nIGludG8gd2hpY2gg
YSBtZXNzYWdlCiAvLyBjYW4gYmUgc3RyZWFtZWQuCiAKKy8vIFRoaXMgbWFjcm8gaXMgZm9yIGlt
cGxlbWVudGluZyBBU1NFUlQvRVhQRUNUX0RFQlVHX0RFQVRIIHdoZW4gY29tcGlsZWQgaW4KKy8v
IE5ERUJVRyBtb2RlLiBJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0aGUgc3RhdGVtZW50cyB0byBiZSBl
eGVjdXRlZCwgdGhlIHJlZ2V4IGlzCisvLyBpZ25vcmVkLCBhbmQgdGhlIG1hY3JvIG11c3QgYWNj
ZXB0IGEgc3RyZWFtZWQgbWVzc2FnZSBldmVuIHRob3VnaCB0aGUgbWVzc2FnZQorLy8gaXMgbmV2
ZXIgcHJpbnRlZC4KKyMgZGVmaW5lIEdURVNUX0VYRUNVVEVfU1RBVEVNRU5UXyhzdGF0ZW1lbnQs
IHJlZ2V4KSBcCisgIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKKyAgaWYgKDo6dGVz
dGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBcCisgICAgIEdURVNUX1NVUFBSRVNTX1VO
UkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KTsgXAorICB9IGVsc2UgXAor
ICAgIDo6dGVzdGluZzo6TWVzc2FnZSgpCisKIC8vIEEgY2xhc3MgcmVwcmVzZW50aW5nIHRoZSBw
YXJzZWQgY29udGVudHMgb2YgdGhlCiAvLyAtLWd0ZXN0X2ludGVybmFsX3J1bl9kZWF0aF90ZXN0
IGZsYWcsIGFzIGl0IGV4aXN0ZWQgd2hlbgogLy8gUlVOX0FMTF9URVNUUyB3YXMgY2FsbGVkLgog
Y2xhc3MgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnIHsKICBwdWJsaWM6Ci0gIEludGVybmFsUnVu
RGVhdGhUZXN0RmxhZyhjb25zdCBTdHJpbmcmIGFfZmlsZSwKKyAgSW50ZXJuYWxSdW5EZWF0aFRl
c3RGbGFnKGNvbnN0IHN0ZDo6c3RyaW5nJiBhX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgYV9saW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFuX2luZGV4
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFfd3JpdGVfZmQpCkBAIC0yMDEsMTMg
KzI0NSwxMyBAQCBjbGFzcyBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcgewogICAgICAgcG9zaXg6
OkNsb3NlKHdyaXRlX2ZkXyk7CiAgIH0KIAotICBTdHJpbmcgZmlsZSgpIGNvbnN0IHsgcmV0dXJu
IGZpbGVfOyB9CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlKCkgY29uc3QgeyByZXR1cm4gZmls
ZV87IH0KICAgaW50IGxpbmUoKSBjb25zdCB7IHJldHVybiBsaW5lXzsgfQogICBpbnQgaW5kZXgo
KSBjb25zdCB7IHJldHVybiBpbmRleF87IH0KICAgaW50IHdyaXRlX2ZkKCkgY29uc3QgeyByZXR1
cm4gd3JpdGVfZmRfOyB9CiAKICBwcml2YXRlOgotICBTdHJpbmcgZmlsZV87CisgIHN0ZDo6c3Ry
aW5nIGZpbGVfOwogICBpbnQgbGluZV87CiAgIGludCBpbmRleF87CiAgIGludCB3cml0ZV9mZF87
CkBAIC0yNTQsNyArMjk4LDcgQEAgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBQYXJzZUludGVy
bmFsUnVuRGVhdGhUZXN0RmxhZygpOwogLy8gIHN0YXRlbWVudCB1bmNvbmRpdGlvbmFsbHkgcmV0
dXJucyBvciB0aHJvd3MuIFRoZSBNZXNzYWdlIGNvbnN0cnVjdG9yIGF0CiAvLyAgdGhlIGVuZCBh
bGxvd3MgdGhlIHN5bnRheCBvZiBzdHJlYW1pbmcgYWRkaXRpb25hbCBtZXNzYWdlcyBpbnRvIHRo
ZQogLy8gIG1hY3JvLCBmb3IgY29tcGlsYXRpb25hbCBjb21wYXRpYmlsaXR5IHdpdGggRVhQRUNU
X0RFQVRIL0FTU0VSVF9ERUFUSC4KLSNkZWZpbmUgR1RFU1RfVU5TVVBQT1JURURfREVBVEhfVEVT
VF8oc3RhdGVtZW50LCByZWdleCwgdGVybWluYXRvcikgXAorIyBkZWZpbmUgR1RFU1RfVU5TVVBQ
T1JURURfREVBVEhfVEVTVF8oc3RhdGVtZW50LCByZWdleCwgdGVybWluYXRvcikgXAogICAgIEdU
RVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKICAgICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6QWx3YXlzVHJ1ZSgpKSB7IFwKICAgICAgIEdURVNUX0xPR18oV0FSTklORykgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC1maWxlcGF0aC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC1maWxlcGF0aC5oCmluZGV4IDRiNzZkNzk1MDZiMDI2YWJhMzcxNjQ3MmZjNDNj
ZWZjMWE3ZTM4OGEuLjdhMTNiNGIwZGU2MDgzYmJmZTY5NjNmOGMwZWQxNmUyN2RlNzcwMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtZmlsZXBhdGguaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgKQEAgLTQwLDcgKzQwLDcgQEAKICNpZm5kZWYg
R1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9GSUxFUEFUSF9IXwogI2RlZmluZSBH
VEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0ZJTEVQQVRIX0hfCiAKLSNpbmNsdWRl
IDxndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5h
bC9ndGVzdC1zdHJpbmcuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVy
bmFsIHsKQEAgLTYxLDExICs2MSw3IEBAIGNsYXNzIEdURVNUX0FQSV8gRmlsZVBhdGggewogICBG
aWxlUGF0aCgpIDogcGF0aG5hbWVfKCIiKSB7IH0KICAgRmlsZVBhdGgoY29uc3QgRmlsZVBhdGgm
IHJocykgOiBwYXRobmFtZV8ocmhzLnBhdGhuYW1lXykgeyB9CiAKLSAgZXhwbGljaXQgRmlsZVBh
dGgoY29uc3QgY2hhciogcGF0aG5hbWUpIDogcGF0aG5hbWVfKHBhdGhuYW1lKSB7Ci0gICAgTm9y
bWFsaXplKCk7Ci0gIH0KLQotICBleHBsaWNpdCBGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGhu
YW1lKSA6IHBhdGhuYW1lXyhwYXRobmFtZSkgeworICBleHBsaWNpdCBGaWxlUGF0aChjb25zdCBz
dGQ6OnN0cmluZyYgcGF0aG5hbWUpIDogcGF0aG5hbWVfKHBhdGhuYW1lKSB7CiAgICAgTm9ybWFs
aXplKCk7CiAgIH0KIApAQCAtNzgsNyArNzQsNyBAQCBjbGFzcyBHVEVTVF9BUElfIEZpbGVQYXRo
IHsKICAgICBwYXRobmFtZV8gPSByaHMucGF0aG5hbWVfOwogICB9CiAKLSAgU3RyaW5nIFRvU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gcGF0aG5hbWVfOyB9CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBz
dHJpbmcoKSBjb25zdCB7IHJldHVybiBwYXRobmFtZV87IH0KICAgY29uc3QgY2hhciogY19zdHIo
KSBjb25zdCB7IHJldHVybiBwYXRobmFtZV8uY19zdHIoKTsgfQogCiAgIC8vIFJldHVybnMgdGhl
IGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksIG9yICIiIGlmIHVuc3VjY2Vzc2Z1bC4KQEAgLTEx
MSw4ICsxMDcsOCBAQCBjbGFzcyBHVEVTVF9BUElfIEZpbGVQYXRoIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmlsZVBhdGgmIGJhc2VfbmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0ZW5z
aW9uKTsKIAotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBwYXRoIGlzIE5VTEwgb3IgIiIuCi0g
IGJvb2wgSXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIGNfc3RyKCkgPT0gTlVMTCB8fCAqY19zdHIo
KSA9PSAnXDAnOyB9CisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHBhdGggaXMgIiIuCisgIGJv
b2wgSXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHBhdGhuYW1lXy5lbXB0eSgpOyB9CiAKICAgLy8g
SWYgaW5wdXQgbmFtZSBoYXMgYSB0cmFpbGluZyBzZXBhcmF0b3IgY2hhcmFjdGVyLCByZW1vdmVz
IGl0IGFuZCByZXR1cm5zCiAgIC8vIHRoZSBuYW1lLCBvdGhlcndpc2UgcmV0dXJuIHRoZSBuYW1l
IHN0cmluZyB1bm1vZGlmaWVkLgpAQCAtMjAxLDcgKzE5Nyw3IEBAIGNsYXNzIEdURVNUX0FQSV8g
RmlsZVBhdGggewogICAvLyBzZXBhcmF0b3JzLiBSZXR1cm5zIE5VTEwgaWYgbm8gcGF0aCBzZXBh
cmF0b3Igd2FzIGZvdW5kLgogICBjb25zdCBjaGFyKiBGaW5kTGFzdFBhdGhTZXBhcmF0b3IoKSBj
b25zdDsKIAotICBTdHJpbmcgcGF0aG5hbWVfOworICBzdGQ6OnN0cmluZyBwYXRobmFtZV87CiB9
OyAgLy8gY2xhc3MgRmlsZVBhdGgKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0
LWludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVy
bmFsL2d0ZXN0LWludGVybmFsLmgKaW5kZXggMzFhNjZlOTlkM2M0ODIxNTFlNDBmYzM1YTQwMjcw
MDY5MDMyYTFkNS4uZWJkMWNmNjE1ZGUwN2Q5YjVhYjBlNjBjNzEwMDgyNjFlZmU1NDIxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9n
dGVzdC1pbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaApAQCAtMzcsMjQgKzM3LDMzIEBACiAjaWZuZGVm
IEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfSU5URVJOQUxfSF8KICNkZWZpbmUg
R1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9JTlRFUk5BTF9IXwogCi0jaW5jbHVk
ZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFs
L2d0ZXN0LXBvcnQuaCIKIAogI2lmIEdURVNUX09TX0xJTlVYCi0jaW5jbHVkZSA8c3RkbGliLmg+
Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3dhaXQuaD4KLSNpbmNsdWRl
IDx1bmlzdGQuaD4KKyMgaW5jbHVkZSA8c3RkbGliLmg+CisjIGluY2x1ZGUgPHN5cy90eXBlcy5o
PgorIyBpbmNsdWRlIDxzeXMvd2FpdC5oPgorIyBpbmNsdWRlIDx1bmlzdGQuaD4KICNlbmRpZiAg
Ly8gR1RFU1RfT1NfTElOVVgKIAorI2lmIEdURVNUX0hBU19FWENFUFRJT05TCisjIGluY2x1ZGUg
PHN0ZGV4Y2VwdD4KKyNlbmRpZgorCiAjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxmbG9h
dC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGlvbWFuaXA+CiAjaW5jbHVkZSA8
bGltaXRzPgorI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxzZXQ+CisjaW5jbHVkZSA8c3RyaW5n
PgorI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0
cmluZy5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmg+Ci0jaW5j
bHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmg+CisjaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3QtbWVzc2FnZS5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5o
IgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgiCisjaW5jbHVkZSAi
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgiCiAKIC8vIER1ZSB0byBDKysgcHJlcHJv
Y2Vzc29yIHdlaXJkbmVzcywgd2UgbmVlZCBkb3VibGUgaW5kaXJlY3Rpb24gdG8KIC8vIGNvbmNh
dGVuYXRlIHR3byB0b2tlbnMgd2hlbiBvbmUgb2YgdGhlbSBpcyBfX0xJTkVfXy4gIFdyaXRpbmcK
QEAgLTY3LDM5ICs3NiwxMiBAQAogI2RlZmluZSBHVEVTVF9DT05DQVRfVE9LRU5fKGZvbywgYmFy
KSBHVEVTVF9DT05DQVRfVE9LRU5fSU1QTF8oZm9vLCBiYXIpCiAjZGVmaW5lIEdURVNUX0NPTkNB
VF9UT0tFTl9JTVBMXyhmb28sIGJhcikgZm9vICMjIGJhcgogCi0vLyBHb29nbGUgVGVzdCBkZWZp
bmVzIHRoZSB0ZXN0aW5nOjpNZXNzYWdlIGNsYXNzIHRvIGFsbG93IGNvbnN0cnVjdGlvbiBvZgot
Ly8gdGVzdCBtZXNzYWdlcyB2aWEgdGhlIDw8IG9wZXJhdG9yLiAgVGhlIGlkZWEgaXMgdGhhdCBh
bnl0aGluZwotLy8gc3RyZWFtYWJsZSB0byBzdGQ6Om9zdHJlYW0gY2FuIGJlIHN0cmVhbWVkIHRv
IGEgdGVzdGluZzo6TWVzc2FnZS4KLS8vIFRoaXMgYWxsb3dzIGEgdXNlciB0byB1c2UgaGlzIG93
biB0eXBlcyBpbiBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGJ5Ci0vLyBvdmVybG9hZGluZyB0aGUg
PDwgb3BlcmF0b3IuCi0vLwotLy8gdXRpbC9ndGwvc3RsX2xvZ2dpbmctaW5sLmggb3ZlcmxvYWRz
IDw8IGZvciBTVEwgY29udGFpbmVycy4gIFRoZXNlCi0vLyBvdmVybG9hZHMgY2Fubm90IGJlIGRl
ZmluZWQgaW4gdGhlIHN0ZCBuYW1lc3BhY2UsIGFzIHRoYXQgd2lsbCBiZQotLy8gdW5kZWZpbmVk
IGJlaGF2aW9yLiAgVGhlcmVmb3JlLCB0aGV5IGFyZSBkZWZpbmVkIGluIHRoZSBnbG9iYWwKLS8v
IG5hbWVzcGFjZSBpbnN0ZWFkLgotLy8KLS8vIEMrKydzIHN5bWJvbCBsb29rdXAgcnVsZSAoaS5l
LiBLb2VuaWcgbG9va3VwKSBzYXlzIHRoYXQgdGhlc2UKLS8vIG92ZXJsb2FkcyBhcmUgdmlzaWJs
ZSBpbiBlaXRoZXIgdGhlIHN0ZCBuYW1lc3BhY2Ugb3IgdGhlIGdsb2JhbAotLy8gbmFtZXNwYWNl
LCBidXQgbm90IG90aGVyIG5hbWVzcGFjZXMsIGluY2x1ZGluZyB0aGUgdGVzdGluZwotLy8gbmFt
ZXNwYWNlIHdoaWNoIEdvb2dsZSBUZXN0J3MgTWVzc2FnZSBjbGFzcyBpcyBpbi4KLS8vCi0vLyBU
byBhbGxvdyBTVEwgY29udGFpbmVycyAoYW5kIG90aGVyIHR5cGVzIHRoYXQgaGFzIGEgPDwgb3Bl
cmF0b3IKLS8vIGRlZmluZWQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UpIHRvIGJlIHVzZWQgaW4g
R29vZ2xlIFRlc3QgYXNzZXJ0aW9ucywKLS8vIHRlc3Rpbmc6Ok1lc3NhZ2UgbXVzdCBhY2Nlc3Mg
dGhlIGN1c3RvbSA8PCBvcGVyYXRvciBmcm9tIHRoZSBnbG9iYWwKLS8vIG5hbWVzcGFjZS4gIEhl
bmNlIHRoaXMgaGVscGVyIGZ1bmN0aW9uLgotLy8KLS8vIE5vdGU6IEplZmZyZXkgWWFzc2tpbiBz
dWdnZXN0ZWQgYW4gYWx0ZXJuYXRpdmUgZml4IGJ5ICJ1c2luZwotLy8gOjpvcGVyYXRvcjw8OyIg
aW4gdGhlIGRlZmluaXRpb24gb2YgTWVzc2FnZSdzIG9wZXJhdG9yPDwuICBUaGF0IGZpeAotLy8g
ZG9lc24ndCByZXF1aXJlIGEgaGVscGVyIGZ1bmN0aW9uLCBidXQgdW5mb3J0dW5hdGVseSBkb2Vz
bid0Ci0vLyBjb21waWxlIHdpdGggTVNWQy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5l
IHZvaWQgR1Rlc3RTdHJlYW1Ub0hlbHBlcihzdGQ6Om9zdHJlYW0qIG9zLCBjb25zdCBUJiB2YWwp
IHsKLSAgKm9zIDw8IHZhbDsKLX0KK2NsYXNzIFByb3RvY29sTWVzc2FnZTsKK25hbWVzcGFjZSBw
cm90bzIgeyBjbGFzcyBNZXNzYWdlOyB9CiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIAotLy8gRm9y
d2FyZCBkZWNsYXJhdGlvbiBvZiBjbGFzc2VzLgorLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMuCiAK
IGNsYXNzIEFzc2VydGlvblJlc3VsdDsgICAgICAgICAgICAgICAgIC8vIFJlc3VsdCBvZiBhbiBh
c3NlcnRpb24uCiBjbGFzcyBNZXNzYWdlOyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXBy
ZXNlbnRzIGEgZmFpbHVyZSBtZXNzYWdlLgpAQCAtMTA4LDYgKzkwLDkgQEAgY2xhc3MgVGVzdElu
Zm87ICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5mb3JtYXRpb24gYWJvdXQgYSB0ZXN0Lgog
Y2xhc3MgVGVzdFBhcnRSZXN1bHQ7ICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0IG9mIGEgdGVz
dCBwYXJ0LgogY2xhc3MgVW5pdFRlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSBjb2xs
ZWN0aW9uIG9mIHRlc3QgY2FzZXMuCiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorOjpzdGQ6OnN0
cmluZyBQcmludFRvU3RyaW5nKGNvbnN0IFQmIHZhbHVlKTsKKwogbmFtZXNwYWNlIGludGVybmFs
IHsKIAogc3RydWN0IFRyYWNlSW5mbzsgICAgICAgICAgICAgICAgICAgICAgLy8gSW5mb3JtYXRp
b24gYWJvdXQgYSB0cmFjZSBwb2ludC4KQEAgLTExNSwxOCArMTAwLDEwIEBAIGNsYXNzIFNjb3Bl
ZFRyYWNlOyAgICAgICAgICAgICAgICAgICAgIC8vIEltcGxlbWVudHMgc2NvcGVkIHRyYWNlLgog
Y2xhc3MgVGVzdEluZm9JbXBsOyAgICAgICAgICAgICAgICAgICAgLy8gT3BhcXVlIGltcGxlbWVu
dGF0aW9uIG9mIFRlc3RJbmZvCiBjbGFzcyBVbml0VGVzdEltcGw7ICAgICAgICAgICAgICAgICAg
ICAvLyBPcGFxdWUgaW1wbGVtZW50YXRpb24gb2YgVW5pdFRlc3QKIAotLy8gSG93IG1hbnkgdGlt
ZXMgSW5pdEdvb2dsZVRlc3QoKSBoYXMgYmVlbiBjYWxsZWQuCi1leHRlcm4gaW50IGdfaW5pdF9n
dGVzdF9jb3VudDsKLQogLy8gVGhlIHRleHQgdXNlZCBpbiBmYWlsdXJlIG1lc3NhZ2VzIHRvIGlu
ZGljYXRlIHRoZSBzdGFydCBvZiB0aGUKIC8vIHN0YWNrIHRyYWNlLgogR1RFU1RfQVBJXyBleHRl
cm4gY29uc3QgY2hhciBrU3RhY2tUcmFjZU1hcmtlcltdOwogCi0vLyBBIHNlY3JldCB0eXBlIHRo
YXQgR29vZ2xlIFRlc3QgdXNlcnMgZG9uJ3Qga25vdyBhYm91dC4gIEl0IGhhcyBubwotLy8gZGVm
aW5pdGlvbiBvbiBwdXJwb3NlLiAgVGhlcmVmb3JlIGl0J3MgaW1wb3NzaWJsZSB0byBjcmVhdGUg
YQotLy8gU2VjcmV0IG9iamVjdCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LgotY2xhc3MgU2VjcmV0
OwotCiAvLyBUd28gb3ZlcmxvYWRlZCBoZWxwZXJzIGZvciBjaGVja2luZyBhdCBjb21waWxlIHRp
bWUgd2hldGhlciBhbgogLy8gZXhwcmVzc2lvbiBpcyBhIG51bGwgcG9pbnRlciBsaXRlcmFsIChp
LmUuIE5VTEwgb3IgYW55IDAtdmFsdWVkCiAvLyBjb21waWxlLXRpbWUgaW50ZWdyYWwgY29uc3Rh
bnQpLiAgVGhlaXIgcmV0dXJuIHZhbHVlcyBoYXZlCkBAIC0xNTAsMTUgKzEyNywzMCBAQCBjaGFy
ICgmSXNOdWxsTGl0ZXJhbEhlbHBlciguLi4pKVsyXTsgIC8vIE5PTElOVAogI2lmZGVmIEdURVNU
X0VMTElQU0lTX05FRURTX1BPRF8KIC8vIFdlIGxvc2Ugc3VwcG9ydCBmb3IgTlVMTCBkZXRlY3Rp
b24gd2hlcmUgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZQogLy8gcGFzc2luZyBub24tUE9EIGNs
YXNzZXMgdGhyb3VnaCBlbGxpcHNpcyAoLi4uKS4KLSNkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRF
UkFMXyh4KSBmYWxzZQorIyBkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBmYWxzZQog
I2Vsc2UKLSNkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBcCisjIGRlZmluZSBHVEVT
VF9JU19OVUxMX0xJVEVSQUxfKHgpIFwKICAgICAoc2l6ZW9mKDo6dGVzdGluZzo6aW50ZXJuYWw6
OklzTnVsbExpdGVyYWxIZWxwZXIoeCkpID09IDEpCiAjZW5kaWYgIC8vIEdURVNUX0VMTElQU0lT
X05FRURTX1BPRF8KIAogLy8gQXBwZW5kcyB0aGUgdXNlci1zdXBwbGllZCBtZXNzYWdlIHRvIHRo
ZSBHb29nbGUtVGVzdC1nZW5lcmF0ZWQgbWVzc2FnZS4KLUdURVNUX0FQSV8gU3RyaW5nIEFwcGVu
ZFVzZXJNZXNzYWdlKGNvbnN0IFN0cmluZyYgZ3Rlc3RfbXNnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgTWVzc2FnZSYgdXNlcl9tc2cpOworR1RFU1RfQVBJXyBz
dGQ6OnN0cmluZyBBcHBlbmRVc2VyTWVzc2FnZSgKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZ3Rl
c3RfbXNnLCBjb25zdCBNZXNzYWdlJiB1c2VyX21zZyk7CisKKyNpZiBHVEVTVF9IQVNfRVhDRVBU
SU9OUworCisvLyBUaGlzIGV4Y2VwdGlvbiBpcyB0aHJvd24gYnkgKGFuZCBvbmx5IGJ5KSBhIGZh
aWxlZCBHb29nbGUgVGVzdAorLy8gYXNzZXJ0aW9uIHdoZW4gR1RFU1RfRkxBRyh0aHJvd19vbl9m
YWlsdXJlKSBpcyB0cnVlIChpZiBleGNlcHRpb25zCisvLyBhcmUgZW5hYmxlZCkuICBXZSBkZXJp
dmUgaXQgZnJvbSBzdGQ6OnJ1bnRpbWVfZXJyb3IsIHdoaWNoIGlzIGZvcgorLy8gZXJyb3JzIHBy
ZXN1bWFibHkgZGV0ZWN0YWJsZSBvbmx5IGF0IHJ1biB0aW1lLiAgU2luY2UKKy8vIHN0ZDo6cnVu
dGltZV9lcnJvciBpbmhlcml0cyBmcm9tIHN0ZDo6ZXhjZXB0aW9uLCBtYW55IHRlc3RpbmcKKy8v
IGZyYW1ld29ya3Mga25vdyBob3cgdG8gZXh0cmFjdCBhbmQgcHJpbnQgdGhlIG1lc3NhZ2UgaW5z
aWRlIGl0LgorY2xhc3MgR1RFU1RfQVBJXyBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbiA6IHB1
YmxpYyA6OnN0ZDo6cnVudGltZV9lcnJvciB7CisgcHVibGljOgorICBleHBsaWNpdCBHb29nbGVU
ZXN0RmFpbHVyZUV4Y2VwdGlvbihjb25zdCBUZXN0UGFydFJlc3VsdCYgZmFpbHVyZSk7Cit9Owor
CisjZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCiAKIC8vIEEgaGVscGVyIGNsYXNzIGZv
ciBjcmVhdGluZyBzY29wZWQgdHJhY2VzIGluIHVzZXIgcHJvZ3JhbXMuCiBjbGFzcyBHVEVTVF9B
UElfIFNjb3BlZFRyYWNlIHsKQEAgLTE3OSw5OCArMTcxLDM1IEBAIGNsYXNzIEdURVNUX0FQSV8g
U2NvcGVkVHJhY2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGMndG9yIGFuZCBk
J3Rvci4gIFRoZXJlZm9yZSBpdCBkb2Vzbid0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gbmVlZCB0byBiZSB1c2VkIG90aGVyd2lzZS4KIAotLy8gQ29udmVydHMgYSBzdHJlYW1hYmxl
IHZhbHVlIHRvIGEgU3RyaW5nLiAgQSBOVUxMIHBvaW50ZXIgaXMKLS8vIGNvbnZlcnRlZCB0byAi
KG51bGwpIi4gIFdoZW4gdGhlIGlucHV0IHZhbHVlIGlzIGEgOjpzdHJpbmcsCi0vLyA6OnN0ZDo6
c3RyaW5nLCA6OndzdHJpbmcsIG9yIDo6c3RkOjp3c3RyaW5nIG9iamVjdCwgZWFjaCBOVUwKLS8v
IGNoYXJhY3RlciBpbiBpdCBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgotLy8gRGVjbGFyZWQgaGVy
ZSBidXQgZGVmaW5lZCBpbiBndGVzdC5oLCBzbyB0aGF0IGl0IGhhcyBhY2Nlc3MKLS8vIHRvIHRo
ZSBkZWZpbml0aW9uIG9mIHRoZSBNZXNzYWdlIGNsYXNzLCByZXF1aXJlZCBieSB0aGUgQVJNCi0v
LyBjb21waWxlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotU3RyaW5nIFN0cmVhbWFibGVUb1N0
cmluZyhjb25zdCBUJiBzdHJlYW1hYmxlKTsKLQotLy8gRm9ybWF0cyBhIHZhbHVlIHRvIGJlIHVz
ZWQgaW4gYSBmYWlsdXJlIG1lc3NhZ2UuCi0KLSNpZmRlZiBHVEVTVF9ORUVEU19JU19QT0lOVEVS
XwotCi0vLyBUaGVzZSBhcmUgbmVlZGVkIGFzIHRoZSBOb2tpYSBTeW1iaWFuIGFuZCBJQk0gWEwg
Qy9DKysgY29tcGlsZXJzCi0vLyBjYW5ub3QgZGVjaWRlIGJldHdlZW4gY29uc3QgVCYgYW5kIGNv
bnN0IFQqIGluIGEgZnVuY3Rpb24gdGVtcGxhdGUuCi0vLyBUaGVzZSBjb21waWxlcnMgX2Nhbl8g
ZGVjaWRlIGJldHdlZW4gY2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zCi0vLyBmb3IgVCBh
bmQgVCosIHNvIGEgdHIxOjp0eXBlX3RyYWl0cy1saWtlIGlzX3BvaW50ZXIgd29ya3MsIGFuZCB3
ZQotLy8gY2FuIG92ZXJsb2FkIG9uIHRoYXQuCi0KLS8vIFRoaXMgb3ZlcmxvYWQgbWFrZXMgc3Vy
ZSB0aGF0IGFsbCBwb2ludGVycyAoaW5jbHVkaW5nCi0vLyB0aG9zZSB0byBjaGFyIG9yIHdjaGFy
X3QpIGFyZSBwcmludGVkIGFzIHJhdyBwb2ludGVycy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
aW5saW5lIFN0cmluZyBGb3JtYXRWYWx1ZUZvckZhaWx1cmVNZXNzYWdlKGludGVybmFsOjp0cnVl
X3R5cGUgLypkdW1teSovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFQqIHBvaW50ZXIpIHsKLSAgcmV0dXJuIFN0cmVhbWFibGVUb1N0cmluZyhzdGF0aWNfY2Fz
dDxjb25zdCB2b2lkKj4ocG9pbnRlcikpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlu
bGluZSBTdHJpbmcgRm9ybWF0VmFsdWVGb3JGYWlsdXJlTWVzc2FnZShpbnRlcm5hbDo6ZmFsc2Vf
dHlwZSAvKmR1bW15Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVCYgdmFsdWUpIHsKLSAgcmV0dXJuIFN0cmVhbWFibGVUb1N0cmluZyh2YWx1ZSk7
Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFN0cmluZyBGb3JtYXRGb3JGYWls
dXJlTWVzc2FnZShjb25zdCBUJiB2YWx1ZSkgewotICByZXR1cm4gRm9ybWF0VmFsdWVGb3JGYWls
dXJlTWVzc2FnZSgKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjppc19wb2ludGVyPFQ+Ojp0eXBl
KCksIHZhbHVlKTsKLX0KLQotI2Vsc2UKLQotLy8gVGhlc2UgYXJlIG5lZWRlZCBhcyB0aGUgYWJv
dmUgc29sdXRpb24gdXNpbmcgaXNfcG9pbnRlciBoYXMgdGhlCi0vLyBsaW1pdGF0aW9uIHRoYXQg
VCBjYW5ub3QgYmUgYSB0eXBlIHdpdGhvdXQgZXh0ZXJuYWwgbGlua2FnZSwgd2hlbgotLy8gY29t
cGlsZWQgdXNpbmcgTVNWQy4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgU3RyaW5n
IEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKGNvbnN0IFQmIHZhbHVlKSB7Ci0gIHJldHVybiBTdHJl
YW1hYmxlVG9TdHJpbmcodmFsdWUpOwotfQotCi0vLyBUaGlzIG92ZXJsb2FkIG1ha2VzIHN1cmUg
dGhhdCBhbGwgcG9pbnRlcnMgKGluY2x1ZGluZwotLy8gdGhvc2UgdG8gY2hhciBvciB3Y2hhcl90
KSBhcmUgcHJpbnRlZCBhcyByYXcgcG9pbnRlcnMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlu
bGluZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoVCogcG9pbnRlcikgewotICByZXR1
cm4gU3RyZWFtYWJsZVRvU3RyaW5nKHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihwb2ludGVyKSk7
Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfTkVFRFNfSVNfUE9JTlRFUl8KLQotLy8gVGhlc2Ugb3Zl
cmxvYWRlZCB2ZXJzaW9ucyBoYW5kbGUgbmFycm93IGFuZCB3aWRlIGNoYXJhY3RlcnMuCi1HVEVT
VF9BUElfIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjaGFyIGNoKTsKLUdURVNUX0FQ
SV8gU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKHdjaGFyX3Qgd2NoYXIpOwotCi0vLyBX
aGVuIHRoaXMgb3BlcmFuZCBpcyBhIGNvbnN0IGNoYXIqIG9yIGNoYXIqLCBhbmQgdGhlIG90aGVy
IG9wZXJhbmQKLS8vIGlzIGEgOjpzdGQ6OnN0cmluZyBvciA6OnN0cmluZywgd2UgcHJpbnQgdGhp
cyBvcGVyYW5kIGFzIGEgQyBzdHJpbmcKLS8vIHJhdGhlciB0aGFuIGEgcG9pbnRlci4gIFdlIGRv
IHRoZSBzYW1lIGZvciB3aWRlIHN0cmluZ3MuCi0KLS8vIFRoaXMgaW50ZXJuYWwgbWFjcm8gaXMg
dXNlZCB0byBhdm9pZCBkdXBsaWNhdGVkIGNvZGUuCi0jZGVmaW5lIEdURVNUX0ZPUk1BVF9JTVBM
XyhvcGVyYW5kMl90eXBlLCBvcGVyYW5kMV9wcmludGVyKVwKLWlubGluZSBTdHJpbmcgRm9ybWF0
Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKFwKLSAgICBvcGVyYW5kMl90eXBlOjp2YWx1ZV90
eXBlKiBzdHIsIGNvbnN0IG9wZXJhbmQyX3R5cGUmIC8qb3BlcmFuZDIqLykge1wKLSAgcmV0dXJu
IG9wZXJhbmQxX3ByaW50ZXIoc3RyKTtcCi19XAotaW5saW5lIFN0cmluZyBGb3JtYXRGb3JDb21w
YXJpc29uRmFpbHVyZU1lc3NhZ2UoXAotICAgIGNvbnN0IG9wZXJhbmQyX3R5cGU6OnZhbHVlX3R5
cGUqIHN0ciwgY29uc3Qgb3BlcmFuZDJfdHlwZSYgLypvcGVyYW5kMiovKSB7XAotICByZXR1cm4g
b3BlcmFuZDFfcHJpbnRlcihzdHIpO1wKLX0KLQotR1RFU1RfRk9STUFUX0lNUExfKDo6c3RkOjpz
dHJpbmcsIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQpCi0jaWYgR1RFU1RfSEFTX1NURF9XU1RS
SU5HCi1HVEVTVF9GT1JNQVRfSU1QTF8oOjpzdGQ6OndzdHJpbmcsIFN0cmluZzo6U2hvd1dpZGVD
U3RyaW5nUXVvdGVkKQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKLQotI2lmIEdU
RVNUX0hBU19HTE9CQUxfU1RSSU5HCi1HVEVTVF9GT1JNQVRfSU1QTF8oOjpzdHJpbmcsIFN0cmlu
Zzo6U2hvd0NTdHJpbmdRdW90ZWQpCi0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5H
Ci0jaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCi1HVEVTVF9GT1JNQVRfSU1QTF8oOjp3c3Ry
aW5nLCBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZCkKLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X0dMT0JBTF9XU1RSSU5HCi0KLSN1bmRlZiBHVEVTVF9GT1JNQVRfSU1QTF8KK25hbWVzcGFjZSBl
ZGl0X2Rpc3RhbmNlIHsKKy8vIFJldHVybnMgdGhlIG9wdGltYWwgZWRpdHMgdG8gZ28gZnJvbSAn
bGVmdCcgdG8gJ3JpZ2h0Jy4KKy8vIEFsbCBlZGl0cyBjb3N0IHRoZSBzYW1lLCB3aXRoIHJlcGxh
Y2UgaGF2aW5nIGxvd2VyIHByaW9yaXR5IHRoYW4KKy8vIGFkZC9yZW1vdmUuCisvLyBTaW1wbGUg
aW1wbGVtZW50YXRpb24gb2YgdGhlIFdhZ25lcuKAk0Zpc2NoZXIgYWxnb3JpdGhtLgorLy8gU2Vl
IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2FnbmVyLUZpc2NoZXJfYWxnb3JpdGhtCitl
bnVtIEVkaXRUeXBlIHsga01hdGNoLCBrQWRkLCBrUmVtb3ZlLCBrUmVwbGFjZSB9OworR1RFU1Rf
QVBJXyBzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKAorICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIGxlZnQsIGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4m
IHJpZ2h0KTsKKworLy8gU2FtZSBhcyBhYm92ZSwgYnV0IHRoZSBpbnB1dCBpcyByZXByZXNlbnRl
ZCBhcyBzdHJpbmdzLgorR1RFU1RfQVBJXyBzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gQ2FsY3VsYXRl
T3B0aW1hbEVkaXRzKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgbGVmdCwK
KyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHJpZ2h0KTsKKworLy8gQ3JlYXRl
IGEgZGlmZiBvZiB0aGUgaW5wdXQgc3RyaW5ncyBpbiBVbmlmaWVkIGRpZmYgZm9ybWF0LgorR1RF
U1RfQVBJXyBzdGQ6OnN0cmluZyBDcmVhdGVVbmlmaWVkRGlmZihjb25zdCBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4mIGxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgcmlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb250ZXh0ID0gMik7CisKK30gIC8v
IG5hbWVzcGFjZSBlZGl0X2Rpc3RhbmNlCisKKy8vIENhbGN1bGF0ZSB0aGUgZGlmZiBiZXR3ZWVu
ICdsZWZ0JyBhbmQgJ3JpZ2h0JyBhbmQgcmV0dXJuIGl0IGluIHVuaWZpZWQgZGlmZgorLy8gZm9y
bWF0LgorLy8gSWYgbm90IG51bGwsIHN0b3JlcyBpbiAndG90YWxfbGluZV9jb3VudCcgdGhlIHRv
dGFsIG51bWJlciBvZiBsaW5lcyBmb3VuZAorLy8gaW4gbGVmdCArIHJpZ2h0LgorR1RFU1RfQVBJ
XyBzdGQ6OnN0cmluZyBEaWZmU3RyaW5ncyhjb25zdCBzdGQ6OnN0cmluZyYgbGVmdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHJpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIHRvdGFsX2xpbmVfY291
bnQpOwogCiAvLyBDb25zdHJ1Y3RzIGFuZCByZXR1cm5zIHRoZSBtZXNzYWdlIGZvciBhbiBlcXVh
bGl0eSBhc3NlcnRpb24KIC8vIChlLmcuIEFTU0VSVF9FUSwgRVhQRUNUX1NUUkVRLCBldGMpIGZh
aWx1cmUuCkBAIC0yODksMTIgKzIxOCwxMiBAQCBHVEVTVF9GT1JNQVRfSU1QTF8oOjp3c3RyaW5n
LCBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZCkKIC8vIGJlIGluc2VydGVkIGludG8gdGhl
IG1lc3NhZ2UuCiBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBFcUZhaWx1cmUoY29uc3QgY2hh
ciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4cGVjdGVkX3ZhbHVlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgYWN0dWFsX3ZhbHVlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBl
eHBlY3RlZF92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgYWN0dWFsX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaWdub3JpbmdfY2FzZSk7CiAKIC8vIENvbnN0cnVjdHMgYSBmYWlsdXJl
IG1lc3NhZ2UgZm9yIEJvb2xlYW4gYXNzZXJ0aW9ucyBzdWNoIGFzIEVYUEVDVF9UUlVFLgotR1RF
U1RfQVBJXyBTdHJpbmcgR2V0Qm9vbEFzc2VydGlvbkZhaWx1cmVNZXNzYWdlKAorR1RFU1RfQVBJ
XyBzdGQ6OnN0cmluZyBHZXRCb29sQXNzZXJ0aW9uRmFpbHVyZU1lc3NhZ2UoCiAgICAgY29uc3Qg
QXNzZXJ0aW9uUmVzdWx0JiBhc3NlcnRpb25fcmVzdWx0LAogICAgIGNvbnN0IGNoYXIqIGV4cHJl
c3Npb25fdGV4dCwKICAgICBjb25zdCBjaGFyKiBhY3R1YWxfcHJlZGljYXRlX3ZhbHVlLApAQCAt
MzY5LDcgKzI5OCw3IEBAIGNsYXNzIEZsb2F0aW5nUG9pbnQgewogICAvLyBiaXRzLiAgVGhlcmVm
b3JlLCA0IHNob3VsZCBiZSBlbm91Z2ggZm9yIG9yZGluYXJ5IHVzZS4KICAgLy8KICAgLy8gU2Vl
IHRoZSBmb2xsb3dpbmcgYXJ0aWNsZSBmb3IgbW9yZSBkZXRhaWxzIG9uIFVMUDoKLSAgLy8gaHR0
cDovL3d3dy5jeWdudXMtc29mdHdhcmUuY29tL3BhcGVycy9jb21wYXJpbmdmbG9hdHMvY29tcGFy
aW5nZmxvYXRzLmh0bS4KKyAgLy8gaHR0cDovL3JhbmRvbWFzY2lpLndvcmRwcmVzcy5jb20vMjAx
Mi8wMi8yNS9jb21wYXJpbmctZmxvYXRpbmctcG9pbnQtbnVtYmVycy0yMDEyLWVkaXRpb24vCiAg
IHN0YXRpYyBjb25zdCBzaXplX3Qga01heFVscHMgPSA0OwogCiAgIC8vIENvbnN0cnVjdHMgYSBG
bG9hdGluZ1BvaW50IGZyb20gYSByYXcgZmxvYXRpbmctcG9pbnQgbnVtYmVyLgpAQCAtMzk2LDYg
KzMyNSw5IEBAIGNsYXNzIEZsb2F0aW5nUG9pbnQgewogICAgIHJldHVybiBSZWludGVycHJldEJp
dHMoa0V4cG9uZW50Qml0TWFzayk7CiAgIH0KIAorICAvLyBSZXR1cm5zIHRoZSBtYXhpbXVtIHJl
cHJlc2VudGFibGUgZmluaXRlIGZsb2F0aW5nLXBvaW50IG51bWJlci4KKyAgc3RhdGljIFJhd1R5
cGUgTWF4KCk7CisKICAgLy8gTm9uLXN0YXRpYyBtZXRob2RzCiAKICAgLy8gUmV0dXJucyB0aGUg
Yml0cyB0aGF0IHJlcHJlc2VudHMgdGhpcyBudW1iZXIuCkBAIC00NzYsNiArNDA4LDEzIEBAIGNs
YXNzIEZsb2F0aW5nUG9pbnQgewogICBGbG9hdGluZ1BvaW50VW5pb24gdV87CiB9OwogCisvLyBX
ZSBjYW5ub3QgdXNlIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpIGFzIGl0IGNsYXNoZXMg
d2l0aCB0aGUgbWF4KCkKKy8vIG1hY3JvIGRlZmluZWQgYnkgPHdpbmRvd3MuaD4uCit0ZW1wbGF0
ZSA8PgoraW5saW5lIGZsb2F0IEZsb2F0aW5nUG9pbnQ8ZmxvYXQ+OjpNYXgoKSB7IHJldHVybiBG
TFRfTUFYOyB9Cit0ZW1wbGF0ZSA8PgoraW5saW5lIGRvdWJsZSBGbG9hdGluZ1BvaW50PGRvdWJs
ZT46Ok1heCgpIHsgcmV0dXJuIERCTF9NQVg7IH0KKwogLy8gVHlwZWRlZnMgdGhlIGluc3RhbmNl
cyBvZiB0aGUgRmxvYXRpbmdQb2ludCB0ZW1wbGF0ZSBjbGFzcyB0aGF0IHdlCiAvLyBjYXJlIHRv
IHVzZS4KIHR5cGVkZWYgRmxvYXRpbmdQb2ludDxmbG9hdD4gRmxvYXQ7CkBAIC01NTgsMjQgKzQ5
NywxNyBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBJc0hSRVNVTFRGYWlsdXJlKGNvbnN0
IGNoYXIqIGV4cHIsCiAKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCi0vLyBGb3JtYXRz
IGEgc291cmNlIGZpbGUgcGF0aCBhbmQgYSBsaW5lIG51bWJlciBhcyB0aGV5IHdvdWxkIGFwcGVh
cgotLy8gaW4gYSBjb21waWxlciBlcnJvciBtZXNzYWdlLgotaW5saW5lIFN0cmluZyBGb3JtYXRG
aWxlTG9jYXRpb24oY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpIHsKLSAgY29uc3QgY2hhciog
Y29uc3QgZmlsZV9uYW1lID0gZmlsZSA9PSBOVUxMID8gInVua25vd24gZmlsZSIgOiBmaWxlOwot
ICBpZiAobGluZSA8IDApIHsKLSAgICByZXR1cm4gU3RyaW5nOjpGb3JtYXQoIiVzOiIsIGZpbGVf
bmFtZSk7Ci0gIH0KLSNpZmRlZiBfTVNDX1ZFUgotICByZXR1cm4gU3RyaW5nOjpGb3JtYXQoIiVz
KCVkKToiLCBmaWxlX25hbWUsIGxpbmUpOwotI2Vsc2UKLSAgcmV0dXJuIFN0cmluZzo6Rm9ybWF0
KCIlczolZDoiLCBmaWxlX25hbWUsIGxpbmUpOwotI2VuZGlmICAvLyBfTVNDX1ZFUgotfQotCiAv
LyBUeXBlcyBvZiBTZXRVcFRlc3RDYXNlKCkgYW5kIFRlYXJEb3duVGVzdENhc2UoKSBmdW5jdGlv
bnMuCiB0eXBlZGVmIHZvaWQgKCpTZXRVcFRlc3RDYXNlRnVuYykoKTsKIHR5cGVkZWYgdm9pZCAo
KlRlYXJEb3duVGVzdENhc2VGdW5jKSgpOwogCitzdHJ1Y3QgQ29kZUxvY2F0aW9uIHsKKyAgQ29k
ZUxvY2F0aW9uKGNvbnN0IHN0cmluZyYgYV9maWxlLCBpbnQgYV9saW5lKSA6IGZpbGUoYV9maWxl
KSwgbGluZShhX2xpbmUpIHt9CisKKyAgc3RyaW5nIGZpbGU7CisgIGludCBsaW5lOworfTsKKwog
Ly8gQ3JlYXRlcyBhIG5ldyBUZXN0SW5mbyBvYmplY3QgYW5kIHJlZ2lzdGVycyBpdCB3aXRoIEdv
b2dsZSBUZXN0OwogLy8gcmV0dXJucyB0aGUgY3JlYXRlZCBvYmplY3QuCiAvLwpAQCAtNTgzLDEw
ICs1MTUsMTEgQEAgdHlwZWRlZiB2b2lkICgqVGVhckRvd25UZXN0Q2FzZUZ1bmMpKCk7CiAvLwog
Ly8gICB0ZXN0X2Nhc2VfbmFtZTogICBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UKIC8vICAgbmFtZTog
ICAgICAgICAgICAgbmFtZSBvZiB0aGUgdGVzdAotLy8gICB0ZXN0X2Nhc2VfY29tbWVudDogYSBj
b21tZW50IG9uIHRoZSB0ZXN0IGNhc2UgdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluCi0vLyAgICAg
ICAgICAgICAgICAgICAgICB0aGUgdGVzdCBvdXRwdXQKLS8vICAgY29tbWVudDogICAgICAgICAg
YSBjb21tZW50IG9uIHRoZSB0ZXN0IHRoYXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKLS8vICAg
ICAgICAgICAgICAgICAgICAgdGVzdCBvdXRwdXQKKy8vICAgdHlwZV9wYXJhbSAgICAgICAgdGhl
IG5hbWUgb2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorLy8gICAgICAg
ICAgICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVk
IHRlc3QuCisvLyAgIHZhbHVlX3BhcmFtICAgICAgIHRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhl
IHRlc3QncyB2YWx1ZSBwYXJhbWV0ZXIsCisvLyAgICAgICAgICAgICAgICAgICAgIG9yIE5VTEwg
aWYgdGhpcyBpcyBub3QgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKy8vICAgY29kZV9sb2Nh
dGlvbjogICAgY29kZSBsb2NhdGlvbiB3aGVyZSB0aGUgdGVzdCBpcyBkZWZpbmVkCiAvLyAgIGZp
eHR1cmVfY2xhc3NfaWQ6IElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKIC8vICAgc2V0X3Vw
X3RjOiAgICAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSB0ZXN0
IGNhc2UKIC8vICAgdGVhcl9kb3duX3RjOiAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhh
dCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UKQEAgLTU5NCw4ICs1MjcsMTEgQEAgdHlwZWRlZiB2
b2lkICgqVGVhckRvd25UZXN0Q2FzZUZ1bmMpKCk7CiAvLyAgICAgICAgICAgICAgICAgICAgIFRo
ZSBuZXdseSBjcmVhdGVkIFRlc3RJbmZvIGluc3RhbmNlIHdpbGwgYXNzdW1lCiAvLyAgICAgICAg
ICAgICAgICAgICAgIG93bmVyc2hpcCBvZiB0aGUgZmFjdG9yeSBvYmplY3QuCiBHVEVTVF9BUElf
IFRlc3RJbmZvKiBNYWtlQW5kUmVnaXN0ZXJUZXN0SW5mbygKLSAgICBjb25zdCBjaGFyKiB0ZXN0
X2Nhc2VfbmFtZSwgY29uc3QgY2hhciogbmFtZSwKLSAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2Vf
Y29tbWVudCwgY29uc3QgY2hhciogY29tbWVudCwKKyAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2Vf
bmFtZSwKKyAgICBjb25zdCBjaGFyKiBuYW1lLAorICAgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0s
CisgICAgY29uc3QgY2hhciogdmFsdWVfcGFyYW0sCisgICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9j
YXRpb24sCiAgICAgVHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCiAgICAgU2V0VXBUZXN0Q2FzZUZ1
bmMgc2V0X3VwX3RjLAogICAgIFRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YywKQEAg
LTYwNCw3ICs1NDAsNyBAQCBHVEVTVF9BUElfIFRlc3RJbmZvKiBNYWtlQW5kUmVnaXN0ZXJUZXN0
SW5mbygKIC8vIElmICpwc3RyIHN0YXJ0cyB3aXRoIHRoZSBnaXZlbiBwcmVmaXgsIG1vZGlmaWVz
ICpwc3RyIHRvIGJlIHJpZ2h0CiAvLyBwYXN0IHRoZSBwcmVmaXggYW5kIHJldHVybnMgdHJ1ZTsg
b3RoZXJ3aXNlIGxlYXZlcyAqcHN0ciB1bmNoYW5nZWQKIC8vIGFuZCByZXR1cm5zIGZhbHNlLiAg
Tm9uZSBvZiBwc3RyLCAqcHN0ciwgYW5kIHByZWZpeCBjYW4gYmUgTlVMTC4KLWJvb2wgU2tpcFBy
ZWZpeChjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IGNoYXIqKiBwc3RyKTsKK0dURVNUX0FQSV8g
Ym9vbCBTa2lwUHJlZml4KGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgY2hhcioqIHBzdHIpOwog
CiAjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAogCkBA
IC02MjUsMTAgKzU2MSwyMSBAQCBjbGFzcyBHVEVTVF9BUElfIFR5cGVkVGVzdENhc2VQU3RhdGUg
ewogICAgICAgZmZsdXNoKHN0ZGVycik7CiAgICAgICBwb3NpeDo6QWJvcnQoKTsKICAgICB9Ci0g
ICAgZGVmaW5lZF90ZXN0X25hbWVzXy5pbnNlcnQodGVzdF9uYW1lKTsKKyAgICByZWdpc3RlcmVk
X3Rlc3RzXy5pbnNlcnQoCisgICAgICAgIDo6c3RkOjptYWtlX3BhaXIodGVzdF9uYW1lLCBDb2Rl
TG9jYXRpb24oZmlsZSwgbGluZSkpKTsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQogCisgIGJvb2wg
VGVzdEV4aXN0cyhjb25zdCBzdGQ6OnN0cmluZyYgdGVzdF9uYW1lKSBjb25zdCB7CisgICAgcmV0
dXJuIHJlZ2lzdGVyZWRfdGVzdHNfLmNvdW50KHRlc3RfbmFtZSkgPiAwOworICB9CisKKyAgY29u
c3QgQ29kZUxvY2F0aW9uJiBHZXRDb2RlTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3Rf
bmFtZSkgY29uc3QgeworICAgIFJlZ2lzdGVyZWRUZXN0c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSByZWdpc3RlcmVkX3Rlc3RzXy5maW5kKHRlc3RfbmFtZSk7CisgICAgR1RFU1RfQ0hFQ0tfKGl0
ICE9IHJlZ2lzdGVyZWRfdGVzdHNfLmVuZCgpKTsKKyAgICByZXR1cm4gaXQtPnNlY29uZDsKKyAg
fQorCiAgIC8vIFZlcmlmaWVzIHRoYXQgcmVnaXN0ZXJlZF90ZXN0cyBtYXRjaCB0aGUgdGVzdCBu
YW1lcyBpbgogICAvLyBkZWZpbmVkX3Rlc3RfbmFtZXNfOyByZXR1cm5zIHJlZ2lzdGVyZWRfdGVz
dHMgaWYgc3VjY2Vzc2Z1bCwgb3IKICAgLy8gYWJvcnRzIHRoZSBwcm9ncmFtIG90aGVyd2lzZS4K
QEAgLTYzNiw4ICs1ODMsMTAgQEAgY2xhc3MgR1RFU1RfQVBJXyBUeXBlZFRlc3RDYXNlUFN0YXRl
IHsKICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiByZWdpc3Rl
cmVkX3Rlc3RzKTsKIAogIHByaXZhdGU6CisgIHR5cGVkZWYgOjpzdGQ6Om1hcDxzdGQ6OnN0cmlu
ZywgQ29kZUxvY2F0aW9uPiBSZWdpc3RlcmVkVGVzdHNNYXA7CisKICAgYm9vbCByZWdpc3RlcmVk
XzsKLSAgOjpzdGQ6OnNldDxjb25zdCBjaGFyKj4gZGVmaW5lZF90ZXN0X25hbWVzXzsKKyAgUmVn
aXN0ZXJlZFRlc3RzTWFwIHJlZ2lzdGVyZWRfdGVzdHNfOwogfTsKIAogLy8gU2tpcHMgdG8gdGhl
IGZpcnN0IG5vbi1zcGFjZSBjaGFyIGFmdGVyIHRoZSBmaXJzdCBjb21tYSBpbiAnc3RyJzsKQEAg
LTY0NywxNyArNTk2LDIyIEBAIGlubGluZSBjb25zdCBjaGFyKiBTa2lwQ29tbWEoY29uc3QgY2hh
ciogc3RyKSB7CiAgIGlmIChjb21tYSA9PSBOVUxMKSB7CiAgICAgcmV0dXJuIE5VTEw7CiAgIH0K
LSAgd2hpbGUgKGlzc3BhY2UoKigrK2NvbW1hKSkpIHt9CisgIHdoaWxlIChJc1NwYWNlKCooKytj
b21tYSkpKSB7fQogICByZXR1cm4gY29tbWE7CiB9CiAKIC8vIFJldHVybnMgdGhlIHByZWZpeCBv
ZiAnc3RyJyBiZWZvcmUgdGhlIGZpcnN0IGNvbW1hIGluIGl0OyByZXR1cm5zCiAvLyB0aGUgZW50
aXJlIHN0cmluZyBpZiBpdCBjb250YWlucyBubyBjb21tYS4KLWlubGluZSBTdHJpbmcgR2V0UHJl
Zml4VW50aWxDb21tYShjb25zdCBjaGFyKiBzdHIpIHsKK2lubGluZSBzdGQ6OnN0cmluZyBHZXRQ
cmVmaXhVbnRpbENvbW1hKGNvbnN0IGNoYXIqIHN0cikgewogICBjb25zdCBjaGFyKiBjb21tYSA9
IHN0cmNocihzdHIsICcsJyk7Ci0gIHJldHVybiBjb21tYSA9PSBOVUxMID8gU3RyaW5nKHN0cikg
OiBTdHJpbmcoc3RyLCBjb21tYSAtIHN0cik7CisgIHJldHVybiBjb21tYSA9PSBOVUxMID8gc3Ry
IDogc3RkOjpzdHJpbmcoc3RyLCBjb21tYSk7CiB9CiAKKy8vIFNwbGl0cyBhIGdpdmVuIHN0cmlu
ZyBvbiBhIGdpdmVuIGRlbGltaXRlciwgcG9wdWxhdGluZyBhIGdpdmVuCisvLyB2ZWN0b3Igd2l0
aCB0aGUgZmllbGRzLgordm9pZCBTcGxpdFN0cmluZyhjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIs
IGNoYXIgZGVsaW1pdGVyLAorICAgICAgICAgICAgICAgICA6OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6
c3RyaW5nPiogZGVzdCk7CisKIC8vIFR5cGVQYXJhbWV0ZXJpemVkVGVzdDxGaXh0dXJlLCBUZXN0
U2VsLCBUeXBlcz46OlJlZ2lzdGVyKCkKIC8vIHJlZ2lzdGVycyBhIGxpc3Qgb2YgdHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3RzIHdpdGggR29vZ2xlIFRlc3QuICBUaGUKIC8vIHJldHVybiB2YWx1ZSBp
cyBpbnNpZ25pZmljYW50IC0gd2UganVzdCBuZWVkIHRvIHJldHVybiBzb21ldGhpbmcKQEAgLTY3
Miw4ICs2MjYsMTAgQEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0IHsKICAgLy8gc3BlY2lm
aWVkIGluIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFByZWZpeCwgVGVzdENhc2UsCiAg
IC8vIFR5cGVzKS4gIFZhbGlkIHZhbHVlcyBmb3IgJ2luZGV4JyBhcmUgWzAsIE4gLSAxXSB3aGVy
ZSBOIGlzIHRoZQogICAvLyBsZW5ndGggb2YgVHlwZXMuCi0gIHN0YXRpYyBib29sIFJlZ2lzdGVy
KGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgY2hhciogY2FzZV9uYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiB0ZXN0X25hbWVzLCBpbnQgaW5kZXgpIHsKKyAgc3RhdGlj
IGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAg
ICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogY2FzZV9uYW1lLCBjb25zdCBjaGFyKiB0ZXN0X25hbWVzLAorICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaW5kZXgpIHsKICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjpIZWFk
IFR5cGU7CiAgICAgdHlwZWRlZiBGaXh0dXJlPFR5cGU+IEZpeHR1cmVDbGFzczsKICAgICB0eXBl
ZGVmIHR5cGVuYW1lIEdURVNUX0JJTkRfKFRlc3RTZWwsIFR5cGUpIFRlc3RDbGFzczsKQEAgLTY4
MSwxMSArNjM3LDEyIEBAIGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVkVGVzdCB7CiAgICAgLy8gRmly
c3QsIHJlZ2lzdGVycyB0aGUgZmlyc3QgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgaW4gdGhlIHR5
cGUKICAgICAvLyBsaXN0LgogICAgIE1ha2VBbmRSZWdpc3RlclRlc3RJbmZvKAotICAgICAgICBT
dHJpbmc6OkZvcm1hdCgiJXMlcyVzLyVkIiwgcHJlZml4LCBwcmVmaXhbMF0gPT0gJ1wwJyA/ICIi
IDogIi8iLAotICAgICAgICAgICAgICAgICAgICAgICBjYXNlX25hbWUsIGluZGV4KS5jX3N0cigp
LAotICAgICAgICBHZXRQcmVmaXhVbnRpbENvbW1hKHRlc3RfbmFtZXMpLmNfc3RyKCksCi0gICAg
ICAgIFN0cmluZzo6Rm9ybWF0KCJUeXBlUGFyYW0gPSAlcyIsIEdldFR5cGVOYW1lPFR5cGU+KCku
Y19zdHIoKSkuY19zdHIoKSwKLSAgICAgICAgIiIsCisgICAgICAgIChzdGQ6OnN0cmluZyhwcmVm
aXgpICsgKHByZWZpeFswXSA9PSAnXDAnID8gIiIgOiAiLyIpICsgY2FzZV9uYW1lICsgIi8iCisg
ICAgICAgICArIFN0cmVhbWFibGVUb1N0cmluZyhpbmRleCkpLmNfc3RyKCksCisgICAgICAgIFN0
cmlwVHJhaWxpbmdTcGFjZXMoR2V0UHJlZml4VW50aWxDb21tYSh0ZXN0X25hbWVzKSkuY19zdHIo
KSwKKyAgICAgICAgR2V0VHlwZU5hbWU8VHlwZT4oKS5jX3N0cigpLAorICAgICAgICBOVUxMLCAg
Ly8gTm8gdmFsdWUgcGFyYW1ldGVyLgorICAgICAgICBjb2RlX2xvY2F0aW9uLAogICAgICAgICBH
ZXRUeXBlSWQ8Rml4dHVyZUNsYXNzPigpLAogICAgICAgICBUZXN0Q2xhc3M6OlNldFVwVGVzdENh
c2UsCiAgICAgICAgIFRlc3RDbGFzczo6VGVhckRvd25UZXN0Q2FzZSwKQEAgLTY5Myw3ICs2NTAs
NyBAQCBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3QgewogCiAgICAgLy8gTmV4dCwgcmVjdXJz
ZXMgKGF0IGNvbXBpbGUgdGltZSkgd2l0aCB0aGUgdGFpbCBvZiB0aGUgdHlwZSBsaXN0LgogICAg
IHJldHVybiBUeXBlUGFyYW1ldGVyaXplZFRlc3Q8Rml4dHVyZSwgVGVzdFNlbCwgdHlwZW5hbWUg
VHlwZXM6OlRhaWw+Ci0gICAgICAgIDo6UmVnaXN0ZXIocHJlZml4LCBjYXNlX25hbWUsIHRlc3Rf
bmFtZXMsIGluZGV4ICsgMSk7CisgICAgICAgIDo6UmVnaXN0ZXIocHJlZml4LCBjb2RlX2xvY2F0
aW9uLCBjYXNlX25hbWUsIHRlc3RfbmFtZXMsIGluZGV4ICsgMSk7CiAgIH0KIH07CiAKQEAgLTcw
MSw4ICs2NTgsOSBAQCBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3QgewogdGVtcGxhdGUgPEdU
RVNUX1RFTVBMQVRFXyBGaXh0dXJlLCBjbGFzcyBUZXN0U2VsPgogY2xhc3MgVHlwZVBhcmFtZXRl
cml6ZWRUZXN0PEZpeHR1cmUsIFRlc3RTZWwsIFR5cGVzMD4gewogIHB1YmxpYzoKLSAgc3RhdGlj
IGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogLypwcmVmaXgqLywgY29uc3QgY2hhciogLypjYXNl
X25hbWUqLywKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLyp0ZXN0X25hbWVz
Ki8sIGludCAvKmluZGV4Ki8pIHsKKyAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciog
LypwcmVmaXgqLywgQ29kZUxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiAvKmNhc2VfbmFtZSovLCBjb25zdCBjaGFyKiAvKnRlc3RfbmFtZXMqLywKKyAgICAgICAg
ICAgICAgICAgICAgICAgaW50IC8qaW5kZXgqLykgewogICAgIHJldHVybiB0cnVlOwogICB9CiB9
OwpAQCAtNzE0LDE3ICs2NzIsMzEgQEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1
cmUsIFRlc3RTZWwsIFR5cGVzMD4gewogdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBGaXh0dXJl
LCB0eXBlbmFtZSBUZXN0cywgdHlwZW5hbWUgVHlwZXM+CiBjbGFzcyBUeXBlUGFyYW1ldGVyaXpl
ZFRlc3RDYXNlIHsKICBwdWJsaWM6Ci0gIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIq
IHByZWZpeCwgY29uc3QgY2hhciogY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiB0ZXN0X25hbWVzKSB7CisgIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNo
YXIqIHByZWZpeCwgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFR5cGVkVGVzdENhc2VQU3RhdGUqIHN0YXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBjYXNlX25hbWUsIGNvbnN0IGNoYXIqIHRlc3RfbmFtZXMpIHsK
KyAgICBzdGQ6OnN0cmluZyB0ZXN0X25hbWUgPSBTdHJpcFRyYWlsaW5nU3BhY2VzKAorICAgICAg
ICBHZXRQcmVmaXhVbnRpbENvbW1hKHRlc3RfbmFtZXMpKTsKKyAgICBpZiAoIXN0YXRlLT5UZXN0
RXhpc3RzKHRlc3RfbmFtZSkpIHsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdl
dCBjb2RlIGxvY2F0aW9uIGZvciB0ZXN0ICVzLiVzIGF0ICVzLiIsCisgICAgICAgICAgICAgIGNh
c2VfbmFtZSwgdGVzdF9uYW1lLmNfc3RyKCksCisgICAgICAgICAgICAgIEZvcm1hdEZpbGVMb2Nh
dGlvbihjb2RlX2xvY2F0aW9uLmZpbGUuY19zdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvZGVfbG9jYXRpb24ubGluZSkuY19zdHIoKSk7CisgICAgICBmZmx1c2goc3Rk
ZXJyKTsKKyAgICAgIHBvc2l4OjpBYm9ydCgpOworICAgIH0KKyAgICBjb25zdCBDb2RlTG9jYXRp
b24mIHRlc3RfbG9jYXRpb24gPSBzdGF0ZS0+R2V0Q29kZUxvY2F0aW9uKHRlc3RfbmFtZSk7CisK
ICAgICB0eXBlZGVmIHR5cGVuYW1lIFRlc3RzOjpIZWFkIEhlYWQ7CiAKICAgICAvLyBGaXJzdCwg
cmVnaXN0ZXIgdGhlIGZpcnN0IHRlc3QgaW4gJ1Rlc3QnIGZvciBlYWNoIHR5cGUgaW4gJ1R5cGVz
Jy4KICAgICBUeXBlUGFyYW1ldGVyaXplZFRlc3Q8Rml4dHVyZSwgSGVhZCwgVHlwZXM+OjpSZWdp
c3RlcigKLSAgICAgICAgcHJlZml4LCBjYXNlX25hbWUsIHRlc3RfbmFtZXMsIDApOworICAgICAg
ICBwcmVmaXgsIHRlc3RfbG9jYXRpb24sIGNhc2VfbmFtZSwgdGVzdF9uYW1lcywgMCk7CiAKICAg
ICAvLyBOZXh0LCByZWN1cnNlcyAoYXQgY29tcGlsZSB0aW1lKSB3aXRoIHRoZSB0YWlsIG9mIHRo
ZSB0ZXN0IGxpc3QuCiAgICAgcmV0dXJuIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2U8Rml4dHVy
ZSwgdHlwZW5hbWUgVGVzdHM6OlRhaWwsIFR5cGVzPgotICAgICAgICA6OlJlZ2lzdGVyKHByZWZp
eCwgY2FzZV9uYW1lLCBTa2lwQ29tbWEodGVzdF9uYW1lcykpOworICAgICAgICA6OlJlZ2lzdGVy
KHByZWZpeCwgY29kZV9sb2NhdGlvbiwgc3RhdGUsCisgICAgICAgICAgICAgICAgICAgY2FzZV9u
YW1lLCBTa2lwQ29tbWEodGVzdF9uYW1lcykpOwogICB9CiB9OwogCkBAIC03MzIsMTUgKzcwNCwx
NiBAQCBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlIHsKIHRlbXBsYXRlIDxHVEVTVF9U
RU1QTEFURV8gRml4dHVyZSwgdHlwZW5hbWUgVHlwZXM+CiBjbGFzcyBUeXBlUGFyYW1ldGVyaXpl
ZFRlc3RDYXNlPEZpeHR1cmUsIFRlbXBsYXRlczAsIFR5cGVzPiB7CiAgcHVibGljOgotICBzdGF0
aWMgYm9vbCBSZWdpc3Rlcihjb25zdCBjaGFyKiAvKnByZWZpeCovLCBjb25zdCBjaGFyKiAvKmNh
c2VfbmFtZSovLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKnRlc3RfbmFt
ZXMqLykgeworICBzdGF0aWMgYm9vbCBSZWdpc3Rlcihjb25zdCBjaGFyKiAvKnByZWZpeCovLCBD
b2RlTG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR5cGVkVGVzdENhc2VQ
U3RhdGUqIC8qc3RhdGUqLywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLypj
YXNlX25hbWUqLywgY29uc3QgY2hhciogLyp0ZXN0X25hbWVzKi8pIHsKICAgICByZXR1cm4gdHJ1
ZTsKICAgfQogfTsKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9I
QVNfVFlQRURfVEVTVF9QCiAKLS8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2Ug
YXMgYSBTdHJpbmcuCisvLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFzIGFu
IHN0ZDo6c3RyaW5nLgogLy8KIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMg
dG8gYmUgaW5jbHVkZWQgaXMgc3BlY2lmaWVkIGJ5CiAvLyB0aGUgZ3Rlc3Rfc3RhY2tfdHJhY2Vf
ZGVwdGggZmxhZy4gIFRoZSBza2lwX2NvdW50IHBhcmFtZXRlcgpAQCAtNzUwLDggKzcyMyw4IEBA
IGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2U8Rml4dHVyZSwgVGVtcGxhdGVzMCwgVHlw
ZXM+IHsKIC8vIEZvciBleGFtcGxlLCBpZiBGb28oKSBjYWxscyBCYXIoKSwgd2hpY2ggaW4gdHVy
biBjYWxscwogLy8gR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCguLi4sIDEpLCBGb28o
KSB3aWxsIGJlIGluY2x1ZGVkIGluCiAvLyB0aGUgdHJhY2UgYnV0IEJhcigpIGFuZCBHZXRDdXJy
ZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKCkgd29uJ3QuCi1HVEVTVF9BUElfIFN0cmluZyBHZXRD
dXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKFVuaXRUZXN0KiB1bml0X3Rlc3QsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBza2lwX2NvdW50
KTsKK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRv
cCgKKyAgICBVbml0VGVzdCogdW5pdF90ZXN0LCBpbnQgc2tpcF9jb3VudCk7CiAKIC8vIEhlbHBl
cnMgZm9yIHN1cHByZXNzaW5nIHdhcm5pbmdzIG9uIHVucmVhY2hhYmxlIGNvZGUgb3IgY29uc3Rh
bnQKIC8vIGNvbmRpdGlvbi4KQEAgLTc2Miw2ICs3MzUsMTUgQEAgR1RFU1RfQVBJXyBib29sIEFs
d2F5c1RydWUoKTsKIC8vIEFsd2F5cyByZXR1cm5zIGZhbHNlLgogaW5saW5lIGJvb2wgQWx3YXlz
RmFsc2UoKSB7IHJldHVybiAhQWx3YXlzVHJ1ZSgpOyB9CiAKKy8vIEhlbHBlciBmb3Igc3VwcHJl
c3NpbmcgZmFsc2Ugd2FybmluZyBmcm9tIENsYW5nIG9uIGEgY29uc3QgY2hhcioKKy8vIHZhcmlh
YmxlIGRlY2xhcmVkIGluIGEgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBhbHdheXMgYmVpbmcgTlVM
TCBpbgorLy8gdGhlIGVsc2UgYnJhbmNoLgorc3RydWN0IEdURVNUX0FQSV8gQ29uc3RDaGFyUHRy
IHsKKyAgQ29uc3RDaGFyUHRyKGNvbnN0IGNoYXIqIHN0cikgOiB2YWx1ZShzdHIpIHt9CisgIG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgIGNvbnN0IGNoYXIqIHZhbHVl
OworfTsKKwogLy8gQSBzaW1wbGUgTGluZWFyIENvbmdydWVudGlhbCBHZW5lcmF0b3IgZm9yIGdl
bmVyYXRpbmcgcmFuZG9tCiAvLyBudW1iZXJzIHdpdGggYSB1bmlmb3JtIGRpc3RyaWJ1dGlvbi4g
IFVubGlrZSByYW5kKCkgYW5kIHNyYW5kKCksIGl0CiAvLyBkb2Vzbid0IHVzZSBnbG9iYWwgc3Rh
dGUgKGFuZCB0aGVyZWZvcmUgY2FuJ3QgaW50ZXJmZXJlIHdpdGggdXNlcgpAQCAtNzg0LDEzICs3
NjYsMzQ2IEBAIGNsYXNzIEdURVNUX0FQSV8gUmFuZG9tIHsKICAgR1RFU1RfRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOXyhSYW5kb20pOwogfTsKIAorLy8gRGVmaW5pbmcgYSB2YXJpYWJsZSBvZiB0
eXBlIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBUMj4gd2lsbCBjYXVzZSBhCisvLyBjb21w
aWxlciBlcnJvciBpZmYgVDEgYW5kIFQyIGFyZSBkaWZmZXJlbnQgdHlwZXMuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorc3RydWN0IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFs
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBDb21waWxlQXNzZXJ0VHlwZXNFcXVh
bDxULCBUPiB7Cit9OworCisvLyBSZW1vdmVzIHRoZSByZWZlcmVuY2UgZnJvbSBhIHR5cGUgaWYg
aXQgaXMgYSByZWZlcmVuY2UgdHlwZSwKKy8vIG90aGVyd2lzZSBsZWF2ZXMgaXQgdW5jaGFuZ2Vk
LiAgVGhpcyBpcyB0aGUgc2FtZSBhcworLy8gdHIxOjpyZW1vdmVfcmVmZXJlbmNlLCB3aGljaCBp
cyBub3Qgd2lkZWx5IGF2YWlsYWJsZSB5ZXQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVj
dCBSZW1vdmVSZWZlcmVuY2UgeyB0eXBlZGVmIFQgdHlwZTsgfTsgIC8vIE5PTElOVAordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUmVtb3ZlUmVmZXJlbmNlPFQmPiB7IHR5cGVkZWYgVCB0
eXBlOyB9OyAgLy8gTk9MSU5UCisKKy8vIEEgaGFuZHkgd3JhcHBlciBhcm91bmQgUmVtb3ZlUmVm
ZXJlbmNlIHRoYXQgd29ya3Mgd2hlbiB0aGUgYXJndW1lbnQKKy8vIFQgZGVwZW5kcyBvbiB0ZW1w
bGF0ZSBwYXJhbWV0ZXJzLgorI2RlZmluZSBHVEVTVF9SRU1PVkVfUkVGRVJFTkNFXyhUKSBcCisg
ICAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UmVtb3ZlUmVmZXJlbmNlPFQ+Ojp0eXBl
CisKKy8vIFJlbW92ZXMgY29uc3QgZnJvbSBhIHR5cGUgaWYgaXQgaXMgYSBjb25zdCB0eXBlLCBv
dGhlcndpc2UgbGVhdmVzCisvLyBpdCB1bmNoYW5nZWQuICBUaGlzIGlzIHRoZSBzYW1lIGFzIHRy
MTo6cmVtb3ZlX2NvbnN0LCB3aGljaCBpcyBub3QKKy8vIHdpZGVseSBhdmFpbGFibGUgeWV0Lgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUmVtb3ZlQ29uc3QgeyB0eXBlZGVmIFQgdHlw
ZTsgfTsgIC8vIE5PTElOVAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUmVtb3ZlQ29u
c3Q8Y29uc3QgVD4geyB0eXBlZGVmIFQgdHlwZTsgfTsgIC8vIE5PTElOVAorCisvLyBNU1ZDIDgu
MCwgU3VuIEMrKywgYW5kIElCTSBYTCBDKysgaGF2ZSBhIGJ1ZyB3aGljaCBjYXVzZXMgdGhlIGFi
b3ZlCisvLyBkZWZpbml0aW9uIHRvIGZhaWwgdG8gcmVtb3ZlIHRoZSBjb25zdCBpbiAnY29uc3Qg
aW50WzNdJyBhbmQgJ2NvbnN0CisvLyBjaGFyWzNdWzRdJy4gIFRoZSBmb2xsb3dpbmcgc3BlY2lh
bGl6YXRpb24gd29ya3MgYXJvdW5kIHRoZSBidWcuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6
ZV90IE4+CitzdHJ1Y3QgUmVtb3ZlQ29uc3Q8Y29uc3QgVFtOXT4geworICB0eXBlZGVmIHR5cGVu
YW1lIFJlbW92ZUNvbnN0PFQ+Ojp0eXBlIHR5cGVbTl07Cit9OworCisjaWYgZGVmaW5lZChfTVND
X1ZFUikgJiYgX01TQ19WRVIgPCAxNDAwCisvLyBUaGlzIGlzIHRoZSBvbmx5IHNwZWNpYWxpemF0
aW9uIHRoYXQgYWxsb3dzIFZDKysgNy4xIHRvIHJlbW92ZSBjb25zdCBpbgorLy8gJ2NvbnN0IGlu
dFszXSBhbmQgJ2NvbnN0IGludFszXVs0XScuICBIb3dldmVyLCBpdCBjYXVzZXMgdHJvdWJsZSB3
aXRoIEdDQworLy8gYW5kIHRodXMgbmVlZHMgdG8gYmUgY29uZGl0aW9uYWxseSBjb21waWxlZC4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KK3N0cnVjdCBSZW1vdmVDb25zdDxUW05d
PiB7CisgIHR5cGVkZWYgdHlwZW5hbWUgUmVtb3ZlQ29uc3Q8VD46OnR5cGUgdHlwZVtOXTsKK307
CisjZW5kaWYKKworLy8gQSBoYW5keSB3cmFwcGVyIGFyb3VuZCBSZW1vdmVDb25zdCB0aGF0IHdv
cmtzIHdoZW4gdGhlIGFyZ3VtZW50CisvLyBUIGRlcGVuZHMgb24gdGVtcGxhdGUgcGFyYW1ldGVy
cy4KKyNkZWZpbmUgR1RFU1RfUkVNT1ZFX0NPTlNUXyhUKSBcCisgICAgdHlwZW5hbWUgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6UmVtb3ZlQ29uc3Q8VD46OnR5cGUKKworLy8gVHVybnMgY29uc3QgVSYs
IFUmLCBjb25zdCBVLCBhbmQgVSBhbGwgaW50byBVLgorI2RlZmluZSBHVEVTVF9SRU1PVkVfUkVG
RVJFTkNFX0FORF9DT05TVF8oVCkgXAorICAgIEdURVNUX1JFTU9WRV9DT05TVF8oR1RFU1RfUkVN
T1ZFX1JFRkVSRU5DRV8oVCkpCisKKy8vIEFkZHMgcmVmZXJlbmNlIHRvIGEgdHlwZSBpZiBpdCBp
cyBub3QgYSByZWZlcmVuY2UgdHlwZSwKKy8vIG90aGVyd2lzZSBsZWF2ZXMgaXQgdW5jaGFuZ2Vk
LiAgVGhpcyBpcyB0aGUgc2FtZSBhcworLy8gdHIxOjphZGRfcmVmZXJlbmNlLCB3aGljaCBpcyBu
b3Qgd2lkZWx5IGF2YWlsYWJsZSB5ZXQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBB
ZGRSZWZlcmVuY2UgeyB0eXBlZGVmIFQmIHR5cGU7IH07ICAvLyBOT0xJTlQKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorc3RydWN0IEFkZFJlZmVyZW5jZTxUJj4geyB0eXBlZGVmIFQmIHR5cGU7IH07
ICAvLyBOT0xJTlQKKworLy8gQSBoYW5keSB3cmFwcGVyIGFyb3VuZCBBZGRSZWZlcmVuY2UgdGhh
dCB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudCBUCisvLyBkZXBlbmRzIG9uIHRlbXBsYXRlIHBhcmFt
ZXRlcnMuCisjZGVmaW5lIEdURVNUX0FERF9SRUZFUkVOQ0VfKFQpIFwKKyAgICB0eXBlbmFtZSA6
OnRlc3Rpbmc6OmludGVybmFsOjpBZGRSZWZlcmVuY2U8VD46OnR5cGUKKworLy8gQWRkcyBhIHJl
ZmVyZW5jZSB0byBjb25zdCBvbiB0b3Agb2YgVCBhcyBuZWNlc3NhcnkuICBGb3IgZXhhbXBsZSwK
Ky8vIGl0IHRyYW5zZm9ybXMKKy8vCisvLyAgIGNoYXIgICAgICAgICA9PT4gY29uc3QgY2hhciYK
Ky8vICAgY29uc3QgY2hhciAgID09PiBjb25zdCBjaGFyJgorLy8gICBjaGFyJiAgICAgICAgPT0+
IGNvbnN0IGNoYXImCisvLyAgIGNvbnN0IGNoYXImICA9PT4gY29uc3QgY2hhciYKKy8vCisvLyBU
aGUgYXJndW1lbnQgVCBtdXN0IGRlcGVuZCBvbiBzb21lIHRlbXBsYXRlIHBhcmFtZXRlcnMuCisj
ZGVmaW5lIEdURVNUX1JFRkVSRU5DRV9UT19DT05TVF8oVCkgXAorICAgIEdURVNUX0FERF9SRUZF
UkVOQ0VfKGNvbnN0IEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfKFQpKQorCisvLyBJbXBsaWNpdGx5
Q29udmVydGlibGU8RnJvbSwgVG8+Ojp2YWx1ZSBpcyBhIGNvbXBpbGUtdGltZSBib29sCisvLyBj
b25zdGFudCB0aGF0J3MgdHJ1ZSBpZmYgdHlwZSBGcm9tIGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZl
cnRlZCB0bworLy8gdHlwZSBUby4KK3RlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBU
bz4KK2NsYXNzIEltcGxpY2l0bHlDb252ZXJ0aWJsZSB7CisgcHJpdmF0ZToKKyAgLy8gV2UgbmVl
ZCB0aGUgZm9sbG93aW5nIGhlbHBlciBmdW5jdGlvbnMgb25seSBmb3IgdGhlaXIgdHlwZXMuCisg
IC8vIFRoZXkgaGF2ZSBubyBpbXBsZW1lbnRhdGlvbnMuCisKKyAgLy8gTWFrZUZyb20oKSBpcyBh
biBleHByZXNzaW9uIHdob3NlIHR5cGUgaXMgRnJvbS4gIFdlIGNhbm5vdCBzaW1wbHkKKyAgLy8g
dXNlIEZyb20oKSwgYXMgdGhlIHR5cGUgRnJvbSBtYXkgbm90IGhhdmUgYSBwdWJsaWMgZGVmYXVs
dAorICAvLyBjb25zdHJ1Y3Rvci4KKyAgc3RhdGljIHR5cGVuYW1lIEFkZFJlZmVyZW5jZTxGcm9t
Pjo6dHlwZSBNYWtlRnJvbSgpOworCisgIC8vIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIG92ZXJs
b2FkZWQuICBHaXZlbiBhbiBleHByZXNzaW9uCisgIC8vIEhlbHBlcih4KSwgdGhlIGNvbXBpbGVy
IHdpbGwgcGljayB0aGUgZmlyc3QgdmVyc2lvbiBpZiB4IGNhbiBiZQorICAvLyBpbXBsaWNpdGx5
IGNvbnZlcnRlZCB0byB0eXBlIFRvOyBvdGhlcndpc2UgaXQgd2lsbCBwaWNrIHRoZQorICAvLyBz
ZWNvbmQgdmVyc2lvbi4KKyAgLy8KKyAgLy8gVGhlIGZpcnN0IHZlcnNpb24gcmV0dXJucyBhIHZh
bHVlIG9mIHNpemUgMSwgYW5kIHRoZSBzZWNvbmQKKyAgLy8gdmVyc2lvbiByZXR1cm5zIGEgdmFs
dWUgb2Ygc2l6ZSAyLiAgVGhlcmVmb3JlLCBieSBjaGVja2luZyB0aGUKKyAgLy8gc2l6ZSBvZiBI
ZWxwZXIoeCksIHdoaWNoIGNhbiBiZSBkb25lIGF0IGNvbXBpbGUgdGltZSwgd2UgY2FuIHRlbGwK
KyAgLy8gd2hpY2ggdmVyc2lvbiBvZiBIZWxwZXIoKSBpcyB1c2VkLCBhbmQgaGVuY2Ugd2hldGhl
ciB4IGNhbiBiZQorICAvLyBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0eXBlIFRvLgorICBzdGF0
aWMgY2hhciBIZWxwZXIoVG8pOworICBzdGF0aWMgY2hhciAoJkhlbHBlciguLi4pKVsyXTsgIC8v
IE5PTElOVAorCisgIC8vIFdlIGhhdmUgdG8gcHV0IHRoZSAncHVibGljJyBzZWN0aW9uIGFmdGVy
IHRoZSAncHJpdmF0ZScgc2VjdGlvbiwKKyAgLy8gb3IgTVNWQyByZWZ1c2VzIHRvIGNvbXBpbGUg
dGhlIGNvZGUuCisgcHVibGljOgorI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKQorICAvLyBDKytC
dWlsZGVyIGNhbm5vdCB1c2UgbWVtYmVyIG92ZXJsb2FkIHJlc29sdXRpb24gZHVyaW5nIHRlbXBs
YXRlCisgIC8vIGluc3RhbnRpYXRpb24uICBUaGUgc2ltcGxlc3Qgd29ya2Fyb3VuZCBpcyB0byB1
c2UgaXRzIEMrKzB4IHR5cGUgdHJhaXRzCisgIC8vIGZ1bmN0aW9ucyAoQysrQnVpbGRlciAyMDA5
IGFuZCBhYm92ZSBvbmx5KS4KKyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBfX2lzX2NvbnZl
cnRpYmxlKEZyb20sIFRvKTsKKyNlbHNlCisgIC8vIE1TVkMgd2FybnMgYWJvdXQgaW1wbGljaXRs
eSBjb252ZXJ0aW5nIGZyb20gZG91YmxlIHRvIGludCBmb3IKKyAgLy8gcG9zc2libGUgbG9zcyBv
ZiBkYXRhLCBzbyB3ZSBuZWVkIHRvIHRlbXBvcmFyaWx5IGRpc2FibGUgdGhlCisgIC8vIHdhcm5p
bmcuCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQyNDQpCisgIHN0YXRpYyBj
b25zdCBib29sIHZhbHVlID0KKyAgICAgIHNpemVvZihIZWxwZXIoSW1wbGljaXRseUNvbnZlcnRp
YmxlOjpNYWtlRnJvbSgpKSkgPT0gMTsKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9Q
XygpCisjZW5kaWYgIC8vIF9fQk9STEFORENfXworfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBGcm9t
LCB0eXBlbmFtZSBUbz4KK2NvbnN0IGJvb2wgSW1wbGljaXRseUNvbnZlcnRpYmxlPEZyb20sIFRv
Pjo6dmFsdWU7CisKKy8vIElzQVByb3RvY29sTWVzc2FnZTxUPjo6dmFsdWUgaXMgYSBjb21waWxl
LXRpbWUgYm9vbCBjb25zdGFudCB0aGF0J3MKKy8vIHRydWUgaWZmIFQgaXMgdHlwZSBQcm90b2Nv
bE1lc3NhZ2UsIHByb3RvMjo6TWVzc2FnZSwgb3IgYSBzdWJjbGFzcworLy8gb2YgdGhvc2UuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBJc0FQcm90b2NvbE1lc3NhZ2UKKyAgICA6IHB1
YmxpYyBib29sX2NvbnN0YW50PAorICBJbXBsaWNpdGx5Q29udmVydGlibGU8Y29uc3QgVCosIGNv
bnN0IDo6UHJvdG9jb2xNZXNzYWdlKj46OnZhbHVlIHx8CisgIEltcGxpY2l0bHlDb252ZXJ0aWJs
ZTxjb25zdCBUKiwgY29uc3QgOjpwcm90bzI6Ok1lc3NhZ2UqPjo6dmFsdWU+IHsKK307CisKKy8v
IFdoZW4gdGhlIGNvbXBpbGVyIHNlZXMgZXhwcmVzc2lvbiBJc0NvbnRhaW5lclRlc3Q8Qz4oMCks
IGlmIEMgaXMgYW4KKy8vIFNUTC1zdHlsZSBjb250YWluZXIgY2xhc3MsIHRoZSBmaXJzdCBvdmVy
bG9hZCBvZiBJc0NvbnRhaW5lclRlc3QKKy8vIHdpbGwgYmUgdmlhYmxlIChzaW5jZSBib3RoIEM6
Oml0ZXJhdG9yKiBhbmQgQzo6Y29uc3RfaXRlcmF0b3IqIGFyZQorLy8gdmFsaWQgdHlwZXMgYW5k
IE5VTEwgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIHRoZW0pLiAgSXQgd2lsbAorLy8g
YmUgcGlja2VkIG92ZXIgdGhlIHNlY29uZCBvdmVybG9hZCBhcyAnaW50JyBpcyBhIHBlcmZlY3Qg
bWF0Y2ggZm9yCisvLyB0aGUgdHlwZSBvZiBhcmd1bWVudCAwLiAgSWYgQzo6aXRlcmF0b3Igb3Ig
Qzo6Y29uc3RfaXRlcmF0b3IgaXMgbm90CisvLyBhIHZhbGlkIHR5cGUsIHRoZSBmaXJzdCBvdmVy
bG9hZCBpcyBub3QgdmlhYmxlLCBhbmQgdGhlIHNlY29uZAorLy8gb3ZlcmxvYWQgd2lsbCBiZSBw
aWNrZWQuICBUaGVyZWZvcmUsIHdlIGNhbiBkZXRlcm1pbmUgd2hldGhlciBDIGlzCisvLyBhIGNv
bnRhaW5lciBjbGFzcyBieSBjaGVja2luZyB0aGUgdHlwZSBvZiBJc0NvbnRhaW5lclRlc3Q8Qz4o
MCkuCisvLyBUaGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaXMgaW5zaWduaWZpY2FudC4KKy8v
CisvLyBOb3RlIHRoYXQgd2UgbG9vayBmb3IgYm90aCBDOjppdGVyYXRvciBhbmQgQzo6Y29uc3Rf
aXRlcmF0b3IuICBUaGUKKy8vIHJlYXNvbiBpcyB0aGF0IEMrKyBpbmplY3RzIHRoZSBuYW1lIG9m
IGEgY2xhc3MgYXMgYSBtZW1iZXIgb2YgdGhlCisvLyBjbGFzcyBpdHNlbGYgKGUuZy4geW91IGNh
biByZWZlciB0byBjbGFzcyBpdGVyYXRvciBhcyBlaXRoZXIKKy8vICdpdGVyYXRvcicgb3IgJ2l0
ZXJhdG9yOjppdGVyYXRvcicpLiAgSWYgd2UgbG9vayBmb3IgQzo6aXRlcmF0b3IKKy8vIG9ubHks
IGZvciBleGFtcGxlLCB3ZSB3b3VsZCBtaXN0YWtlbmx5IHRoaW5rIHRoYXQgYSBjbGFzcyBuYW1l
ZAorLy8gaXRlcmF0b3IgaXMgYW4gU1RMIGNvbnRhaW5lci4KKy8vCisvLyBBbHNvIG5vdGUgdGhh
dCB0aGUgc2ltcGxlciBhcHByb2FjaCBvZiBvdmVybG9hZGluZworLy8gSXNDb250YWluZXJUZXN0
KHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yKikgYW5kCisvLyBJc0NvbnRhaW5lclRlc3QoLi4u
KSBkb2Vzbid0IHdvcmsgd2l0aCBWaXN1YWwgQWdlIEMrKyBhbmQgU3VuIEMrKy4KK3R5cGVkZWYg
aW50IElzQ29udGFpbmVyOwordGVtcGxhdGUgPGNsYXNzIEM+CitJc0NvbnRhaW5lciBJc0NvbnRh
aW5lclRlc3QoaW50IC8qIGR1bW15ICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVuYW1lIEM6Oml0ZXJhdG9yKiAvKiBpdCAqLyA9IE5VTEwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZW5hbWUgQzo6Y29uc3RfaXRlcmF0b3IqIC8qIGNvbnN0X2l0ICovID0gTlVM
TCkgeworICByZXR1cm4gMDsKK30KKwordHlwZWRlZiBjaGFyIElzTm90Q29udGFpbmVyOwordGVt
cGxhdGUgPGNsYXNzIEM+CitJc05vdENvbnRhaW5lciBJc0NvbnRhaW5lclRlc3QobG9uZyAvKiBk
dW1teSAqLykgeyByZXR1cm4gJ1wwJzsgfQorCisvLyBFbmFibGVJZjxjb25kaXRpb24+Ojp0eXBl
IGlzIHZvaWQgd2hlbiAnQ29uZCcgaXMgdHJ1ZSwgYW5kCisvLyB1bmRlZmluZWQgd2hlbiAnQ29u
ZCcgaXMgZmFsc2UuICBUbyB1c2UgU0ZJTkFFIHRvIG1ha2UgYSBmdW5jdGlvbgorLy8gb3Zlcmxv
YWQgb25seSBhcHBseSB3aGVuIGEgcGFydGljdWxhciBleHByZXNzaW9uIGlzIHRydWUsIGFkZAor
Ly8gInR5cGVuYW1lIEVuYWJsZUlmPGV4cHJlc3Npb24+Ojp0eXBlKiA9IDAiIGFzIHRoZSBsYXN0
IHBhcmFtZXRlci4KK3RlbXBsYXRlPGJvb2w+IHN0cnVjdCBFbmFibGVJZjsKK3RlbXBsYXRlPD4g
c3RydWN0IEVuYWJsZUlmPHRydWU+IHsgdHlwZWRlZiB2b2lkIHR5cGU7IH07ICAvLyBOT0xJTlQK
KworLy8gVXRpbGl0aWVzIGZvciBuYXRpdmUgYXJyYXlzLgorCisvLyBBcnJheUVxKCkgY29tcGFy
ZXMgdHdvIGstZGltZW5zaW9uYWwgbmF0aXZlIGFycmF5cyB1c2luZyB0aGUKKy8vIGVsZW1lbnRz
JyBvcGVyYXRvcj09LCB3aGVyZSBrIGNhbiBiZSBhbnkgaW50ZWdlciA+PSAwLiAgV2hlbiBrIGlz
CisvLyAwLCBBcnJheUVxKCkgZGVnZW5lcmF0ZXMgaW50byBjb21wYXJpbmcgYSBzaW5nbGUgcGFp
ciBvZiB2YWx1ZXMuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorYm9vbCBB
cnJheUVxKGNvbnN0IFQqIGxocywgc2l6ZV90IHNpemUsIGNvbnN0IFUqIHJocyk7CisKKy8vIFRo
aXMgZ2VuZXJpYyB2ZXJzaW9uIGlzIHVzZWQgd2hlbiBrIGlzIDAuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4KK2lubGluZSBib29sIEFycmF5RXEoY29uc3QgVCYgbGhzLCBjb25z
dCBVJiByaHMpIHsgcmV0dXJuIGxocyA9PSByaHM7IH0KKworLy8gVGhpcyBvdmVybG9hZCBpcyB1
c2VkIHdoZW4gayA+PSAxLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVf
dCBOPgoraW5saW5lIGJvb2wgQXJyYXlFcShjb25zdCBUKCZsaHMpW05dLCBjb25zdCBVKCZyaHMp
W05dKSB7CisgIHJldHVybiBpbnRlcm5hbDo6QXJyYXlFcShsaHMsIE4sIHJocyk7Cit9CisKKy8v
IFRoaXMgaGVscGVyIHJlZHVjZXMgY29kZSBibG9hdC4gIElmIHdlIGluc3RlYWQgcHV0IGl0cyBs
b2dpYyBpbnNpZGUKKy8vIHRoZSBwcmV2aW91cyBBcnJheUVxKCkgZnVuY3Rpb24sIGFycmF5cyB3
aXRoIGRpZmZlcmVudCBzaXplcyB3b3VsZAorLy8gbGVhZCB0byBkaWZmZXJlbnQgY29waWVzIG9m
IHRoZSB0ZW1wbGF0ZSBjb2RlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Citi
b29sIEFycmF5RXEoY29uc3QgVCogbGhzLCBzaXplX3Qgc2l6ZSwgY29uc3QgVSogcmhzKSB7Cisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHNpemU7IGkrKykgeworICAgIGlmICghaW50ZXJuYWw6
OkFycmF5RXEobGhzW2ldLCByaHNbaV0pKQorICAgICAgcmV0dXJuIGZhbHNlOworICB9CisgIHJl
dHVybiB0cnVlOworfQorCisvLyBGaW5kcyB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgaXRlcmF0
b3IgcmFuZ2UgW2JlZ2luLCBlbmQpIHRoYXQKKy8vIGVxdWFscyBlbGVtLiAgRWxlbWVudCBtYXkg
YmUgYSBuYXRpdmUgYXJyYXkgdHlwZSBpdHNlbGYuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlciwg
dHlwZW5hbWUgRWxlbWVudD4KK0l0ZXIgQXJyYXlBd2FyZUZpbmQoSXRlciBiZWdpbiwgSXRlciBl
bmQsIGNvbnN0IEVsZW1lbnQmIGVsZW0pIHsKKyAgZm9yIChJdGVyIGl0ID0gYmVnaW47IGl0ICE9
IGVuZDsgKytpdCkgeworICAgIGlmIChpbnRlcm5hbDo6QXJyYXlFcSgqaXQsIGVsZW0pKQorICAg
ICAgcmV0dXJuIGl0OworICB9CisgIHJldHVybiBlbmQ7Cit9CisKKy8vIENvcHlBcnJheSgpIGNv
cGllcyBhIGstZGltZW5zaW9uYWwgbmF0aXZlIGFycmF5IHVzaW5nIHRoZSBlbGVtZW50cycKKy8v
IG9wZXJhdG9yPSwgd2hlcmUgayBjYW4gYmUgYW55IGludGVnZXIgPj0gMC4gIFdoZW4gayBpcyAw
LAorLy8gQ29weUFycmF5KCkgZGVnZW5lcmF0ZXMgaW50byBjb3B5aW5nIGEgc2luZ2xlIHZhbHVl
LgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3ZvaWQgQ29weUFycmF5KGNv
bnN0IFQqIGZyb20sIHNpemVfdCBzaXplLCBVKiB0byk7CisKKy8vIFRoaXMgZ2VuZXJpYyB2ZXJz
aW9uIGlzIHVzZWQgd2hlbiBrIGlzIDAuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4KK2lubGluZSB2b2lkIENvcHlBcnJheShjb25zdCBUJiBmcm9tLCBVKiB0bykgeyAqdG8gPSBm
cm9tOyB9CisKKy8vIFRoaXMgb3ZlcmxvYWQgaXMgdXNlZCB3aGVuIGsgPj0gMS4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgTj4KK2lubGluZSB2b2lkIENvcHlBcnJh
eShjb25zdCBUKCZmcm9tKVtOXSwgVSgqdG8pW05dKSB7CisgIGludGVybmFsOjpDb3B5QXJyYXko
ZnJvbSwgTiwgKnRvKTsKK30KKworLy8gVGhpcyBoZWxwZXIgcmVkdWNlcyBjb2RlIGJsb2F0LiAg
SWYgd2UgaW5zdGVhZCBwdXQgaXRzIGxvZ2ljIGluc2lkZQorLy8gdGhlIHByZXZpb3VzIENvcHlB
cnJheSgpIGZ1bmN0aW9uLCBhcnJheXMgd2l0aCBkaWZmZXJlbnQgc2l6ZXMKKy8vIHdvdWxkIGxl
YWQgdG8gZGlmZmVyZW50IGNvcGllcyBvZiB0aGUgdGVtcGxhdGUgY29kZS4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgordm9pZCBDb3B5QXJyYXkoY29uc3QgVCogZnJvbSwgc2l6
ZV90IHNpemUsIFUqIHRvKSB7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHNpemU7IGkrKykg
eworICAgIGludGVybmFsOjpDb3B5QXJyYXkoZnJvbVtpXSwgdG8gKyBpKTsKKyAgfQorfQorCisv
LyBUaGUgcmVsYXRpb24gYmV0d2VlbiBhbiBOYXRpdmVBcnJheSBvYmplY3QgKHNlZSBiZWxvdykg
YW5kIHRoZQorLy8gbmF0aXZlIGFycmF5IGl0IHJlcHJlc2VudHMuCisvLyBXZSB1c2UgMiBkaWZm
ZXJlbnQgc3RydWN0cyB0byBhbGxvdyBub24tY29weWFibGUgdHlwZXMgdG8gYmUgdXNlZCwgYXMg
bG9uZworLy8gYXMgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgpIGlzIHBhc3NlZC4KK3N0cnVj
dCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlIHt9Oworc3RydWN0IFJlbGF0aW9uVG9Tb3VyY2VD
b3B5IHt9OworCisvLyBBZGFwdHMgYSBuYXRpdmUgYXJyYXkgdG8gYSByZWFkLW9ubHkgU1RMLXN0
eWxlIGNvbnRhaW5lci4gIEluc3RlYWQKKy8vIG9mIHRoZSBjb21wbGV0ZSBTVEwgY29udGFpbmVy
IGNvbmNlcHQsIHRoaXMgYWRhcHRvciBvbmx5IGltcGxlbWVudHMKKy8vIG1lbWJlcnMgdXNlZnVs
IGZvciBHb29nbGUgTW9jaydzIGNvbnRhaW5lciBtYXRjaGVycy4gIE5ldyBtZW1iZXJzCisvLyBz
aG91bGQgYmUgYWRkZWQgYXMgbmVlZGVkLiAgVG8gc2ltcGxpZnkgdGhlIGltcGxlbWVudGF0aW9u
LCB3ZSBvbmx5CisvLyBzdXBwb3J0IEVsZW1lbnQgYmVpbmcgYSByYXcgdHlwZSAoaS5lLiBoYXZp
bmcgbm8gdG9wLWxldmVsIGNvbnN0IG9yCisvLyByZWZlcmVuY2UgbW9kaWZpZXIpLiAgSXQncyB0
aGUgY2xpZW50J3MgcmVzcG9uc2liaWxpdHkgdG8gc2F0aXNmeQorLy8gdGhpcyByZXF1aXJlbWVu
dC4gIEVsZW1lbnQgY2FuIGJlIGFuIGFycmF5IHR5cGUgaXRzZWxmIChoZW5jZQorLy8gbXVsdGkt
ZGltZW5zaW9uYWwgYXJyYXlzIGFyZSBzdXBwb3J0ZWQpLgordGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnQ+CitjbGFzcyBOYXRpdmVBcnJheSB7CisgcHVibGljOgorICAvLyBTVEwtc3R5bGUgY29u
dGFpbmVyIHR5cGVkZWZzLgorICB0eXBlZGVmIEVsZW1lbnQgdmFsdWVfdHlwZTsKKyAgdHlwZWRl
ZiBFbGVtZW50KiBpdGVyYXRvcjsKKyAgdHlwZWRlZiBjb25zdCBFbGVtZW50KiBjb25zdF9pdGVy
YXRvcjsKKworICAvLyBDb25zdHJ1Y3RzIGZyb20gYSBuYXRpdmUgYXJyYXkuIFJlZmVyZW5jZXMg
dGhlIHNvdXJjZS4KKyAgTmF0aXZlQXJyYXkoY29uc3QgRWxlbWVudCogYXJyYXksIHNpemVfdCBj
b3VudCwgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSkgeworICAgIEluaXRSZWYoYXJyYXksIGNv
dW50KTsKKyAgfQorCisgIC8vIENvbnN0cnVjdHMgZnJvbSBhIG5hdGl2ZSBhcnJheS4gQ29waWVz
IHRoZSBzb3VyY2UuCisgIE5hdGl2ZUFycmF5KGNvbnN0IEVsZW1lbnQqIGFycmF5LCBzaXplX3Qg
Y291bnQsIFJlbGF0aW9uVG9Tb3VyY2VDb3B5KSB7CisgICAgSW5pdENvcHkoYXJyYXksIGNvdW50
KTsKKyAgfQorCisgIC8vIENvcHkgY29uc3RydWN0b3IuCisgIE5hdGl2ZUFycmF5KGNvbnN0IE5h
dGl2ZUFycmF5JiByaHMpIHsKKyAgICAodGhpcy0+KnJocy5jbG9uZV8pKHJocy5hcnJheV8sIHJo
cy5zaXplXyk7CisgIH0KKworICB+TmF0aXZlQXJyYXkoKSB7CisgICAgaWYgKGNsb25lXyAhPSAm
TmF0aXZlQXJyYXk6OkluaXRSZWYpCisgICAgICBkZWxldGVbXSBhcnJheV87CisgIH0KKworICAv
LyBTVEwtc3R5bGUgY29udGFpbmVyIG1ldGhvZHMuCisgIHNpemVfdCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gc2l6ZV87IH0KKyAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBh
cnJheV87IH0KKyAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gYXJyYXlfICsg
c2l6ZV87IH0KKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5hdGl2ZUFycmF5JiByaHMpIGNvbnN0
IHsKKyAgICByZXR1cm4gc2l6ZSgpID09IHJocy5zaXplKCkgJiYKKyAgICAgICAgQXJyYXlFcShi
ZWdpbigpLCBzaXplKCksIHJocy5iZWdpbigpKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgZW51bSB7
CisgICAga0NoZWNrVHlwZUlzTm90Q29uc3RPckFSZWZlcmVuY2UgPSBTdGF0aWNBc3NlcnRUeXBl
RXFIZWxwZXI8CisgICAgICAgIEVsZW1lbnQsIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NP
TlNUXyhFbGVtZW50KT46OnZhbHVlLAorICB9OworCisgIC8vIEluaXRpYWxpemVzIHRoaXMgb2Jq
ZWN0IHdpdGggYSBjb3B5IG9mIHRoZSBpbnB1dC4KKyAgdm9pZCBJbml0Q29weShjb25zdCBFbGVt
ZW50KiBhcnJheSwgc2l6ZV90IGFfc2l6ZSkgeworICAgIEVsZW1lbnQqIGNvbnN0IGNvcHkgPSBu
ZXcgRWxlbWVudFthX3NpemVdOworICAgIENvcHlBcnJheShhcnJheSwgYV9zaXplLCBjb3B5KTsK
KyAgICBhcnJheV8gPSBjb3B5OworICAgIHNpemVfID0gYV9zaXplOworICAgIGNsb25lXyA9ICZO
YXRpdmVBcnJheTo6SW5pdENvcHk7CisgIH0KKworICAvLyBJbml0aWFsaXplcyB0aGlzIG9iamVj
dCB3aXRoIGEgcmVmZXJlbmNlIG9mIHRoZSBpbnB1dC4KKyAgdm9pZCBJbml0UmVmKGNvbnN0IEVs
ZW1lbnQqIGFycmF5LCBzaXplX3QgYV9zaXplKSB7CisgICAgYXJyYXlfID0gYXJyYXk7CisgICAg
c2l6ZV8gPSBhX3NpemU7CisgICAgY2xvbmVfID0gJk5hdGl2ZUFycmF5OjpJbml0UmVmOworICB9
CisKKyAgY29uc3QgRWxlbWVudCogYXJyYXlfOworICBzaXplX3Qgc2l6ZV87CisgIHZvaWQgKE5h
dGl2ZUFycmF5OjoqY2xvbmVfKShjb25zdCBFbGVtZW50Kiwgc2l6ZV90KTsKKworICBHVEVTVF9E
SVNBTExPV19BU1NJR05fKE5hdGl2ZUFycmF5KTsKK307CisKIH0gIC8vIG5hbWVzcGFjZSBpbnRl
cm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotI2RlZmluZSBHVEVTVF9NRVNTQUdFXyht
ZXNzYWdlLCByZXN1bHRfdHlwZSkgXAotICA6OnRlc3Rpbmc6OmludGVybmFsOjpBc3NlcnRIZWxw
ZXIocmVzdWx0X3R5cGUsIF9fRklMRV9fLCBfX0xJTkVfXywgbWVzc2FnZSkgXAorI2RlZmluZSBH
VEVTVF9NRVNTQUdFX0FUXyhmaWxlLCBsaW5lLCBtZXNzYWdlLCByZXN1bHRfdHlwZSkgXAorICA6
OnRlc3Rpbmc6OmludGVybmFsOjpBc3NlcnRIZWxwZXIocmVzdWx0X3R5cGUsIGZpbGUsIGxpbmUs
IG1lc3NhZ2UpIFwKICAgICA9IDo6dGVzdGluZzo6TWVzc2FnZSgpCiAKKyNkZWZpbmUgR1RFU1Rf
TUVTU0FHRV8obWVzc2FnZSwgcmVzdWx0X3R5cGUpIFwKKyAgR1RFU1RfTUVTU0FHRV9BVF8oX19G
SUxFX18sIF9fTElORV9fLCBtZXNzYWdlLCByZXN1bHRfdHlwZSkKKwogI2RlZmluZSBHVEVTVF9G
QVRBTF9GQUlMVVJFXyhtZXNzYWdlKSBcCiAgIHJldHVybiBHVEVTVF9NRVNTQUdFXyhtZXNzYWdl
LCA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlKQogCkBAIC04MDgsNyAr
MTEyMyw3IEBAIGNsYXNzIEdURVNUX0FQSV8gUmFuZG9tIHsKIAogI2RlZmluZSBHVEVTVF9URVNU
X1RIUk9XXyhzdGF0ZW1lbnQsIGV4cGVjdGVkX2V4Y2VwdGlvbiwgZmFpbCkgXAogICBHVEVTVF9B
TUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0gIGlmIChjb25zdCBjaGFyKiBndGVzdF9tc2cgPSAi
IikgeyBcCisgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpDb25zdENoYXJQdHIgZ3Rlc3RfbXNn
ID0gIiIpIHsgXAogICAgIGJvb2wgZ3Rlc3RfY2F1Z2h0X2V4cGVjdGVkID0gZmFsc2U7IFwKICAg
ICB0cnkgeyBcCiAgICAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdf
QkVMT1dfKHN0YXRlbWVudCk7IFwKQEAgLTgxNywzOCArMTEzMiwzOCBAQCBjbGFzcyBHVEVTVF9B
UElfIFJhbmRvbSB7CiAgICAgICBndGVzdF9jYXVnaHRfZXhwZWN0ZWQgPSB0cnVlOyBcCiAgICAg
fSBcCiAgICAgY2F0Y2ggKC4uLikgeyBcCi0gICAgICBndGVzdF9tc2cgPSAiRXhwZWN0ZWQ6ICIg
I3N0YXRlbWVudCAiIHRocm93cyBhbiBleGNlcHRpb24gb2YgdHlwZSAiIFwKLSAgICAgICAgICAg
ICAgICAgICNleHBlY3RlZF9leGNlcHRpb24gIi5cbiAgQWN0dWFsOiBpdCB0aHJvd3MgYSBkaWZm
ZXJlbnQgIiBcCi0gICAgICAgICAgICAgICAgICAidHlwZS4iOyBcCisgICAgICBndGVzdF9tc2cu
dmFsdWUgPSBcCisgICAgICAgICAgIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4g
ZXhjZXB0aW9uIG9mIHR5cGUgIiBcCisgICAgICAgICAgI2V4cGVjdGVkX2V4Y2VwdGlvbiAiLlxu
ICBBY3R1YWw6IGl0IHRocm93cyBhIGRpZmZlcmVudCB0eXBlLiI7IFwKICAgICAgIGdvdG8gR1RF
U1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0dGhyb3dfLCBfX0xJTkVfXyk7IFwKICAg
ICB9IFwKICAgICBpZiAoIWd0ZXN0X2NhdWdodF9leHBlY3RlZCkgeyBcCi0gICAgICBndGVzdF9t
c2cgPSAiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIHRocm93cyBhbiBleGNlcHRpb24gb2YgdHlw
ZSAiIFwKLSAgICAgICAgICAgICAgICAgICNleHBlY3RlZF9leGNlcHRpb24gIi5cbiAgQWN0dWFs
OiBpdCB0aHJvd3Mgbm90aGluZy4iOyBcCisgICAgICBndGVzdF9tc2cudmFsdWUgPSBcCisgICAg
ICAgICAgIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5
cGUgIiBcCisgICAgICAgICAgI2V4cGVjdGVkX2V4Y2VwdGlvbiAiLlxuICBBY3R1YWw6IGl0IHRo
cm93cyBub3RoaW5nLiI7IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9s
YWJlbF90ZXN0dGhyb3dfLCBfX0xJTkVfXyk7IFwKICAgICB9IFwKICAgfSBlbHNlIFwKICAgICBH
VEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3R0aHJvd18sIF9fTElORV9fKTogXAot
ICAgICAgZmFpbChndGVzdF9tc2cpCisgICAgICBmYWlsKGd0ZXN0X21zZy52YWx1ZSkKIAogI2Rl
ZmluZSBHVEVTVF9URVNUX05PX1RIUk9XXyhzdGF0ZW1lbnQsIGZhaWwpIFwKICAgR1RFU1RfQU1C
SUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAotICBpZiAoY29uc3QgY2hhciogZ3Rlc3RfbXNnID0gIiIp
IHsgXAorICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKICAgICB0
cnkgeyBcCiAgICAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVM
T1dfKHN0YXRlbWVudCk7IFwKICAgICB9IFwKICAgICBjYXRjaCAoLi4uKSB7IFwKLSAgICAgIGd0
ZXN0X21zZyA9ICJFeHBlY3RlZDogIiAjc3RhdGVtZW50ICIgZG9lc24ndCB0aHJvdyBhbiBleGNl
cHRpb24uXG4iIFwKLSAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogaXQgdGhyb3dzLiI7IFwK
ICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0bm90aHJvd18s
IF9fTElORV9fKTsgXAogICAgIH0gXAogICB9IGVsc2UgXAogICAgIEdURVNUX0NPTkNBVF9UT0tF
Tl8oZ3Rlc3RfbGFiZWxfdGVzdG5vdGhyb3dfLCBfX0xJTkVfXyk6IFwKLSAgICAgIGZhaWwoZ3Rl
c3RfbXNnKQorICAgICAgZmFpbCgiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgdGhy
b3cgYW4gZXhjZXB0aW9uLlxuIiBcCisgICAgICAgICAgICIgIEFjdHVhbDogaXQgdGhyb3dzLiIp
CiAKICNkZWZpbmUgR1RFU1RfVEVTVF9BTllfVEhST1dfKHN0YXRlbWVudCwgZmFpbCkgXAogICBH
VEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0gIGlmIChjb25zdCBjaGFyKiBndGVzdF9t
c2cgPSAiIikgeyBcCisgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsg
XAogICAgIGJvb2wgZ3Rlc3RfY2F1Z2h0X2FueSA9IGZhbHNlOyBcCiAgICAgdHJ5IHsgXAogICAg
ICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1l
bnQpOyBcCkBAIC04NTcsMTMgKzExNzIsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBSYW5kb20gewog
ICAgICAgZ3Rlc3RfY2F1Z2h0X2FueSA9IHRydWU7IFwKICAgICB9IFwKICAgICBpZiAoIWd0ZXN0
X2NhdWdodF9hbnkpIHsgXAotICAgICAgZ3Rlc3RfbXNnID0gIkV4cGVjdGVkOiAiICNzdGF0ZW1l
bnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuIiBcCi0gICAgICAgICAgICAgICAgICAiICBBY3R1
YWw6IGl0IGRvZXNuJ3QuIjsgXAogICAgICAgZ290byBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0
X2xhYmVsX3Rlc3Rhbnl0aHJvd18sIF9fTElORV9fKTsgXAogICAgIH0gXAogICB9IGVsc2UgXAog
ICAgIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdGFueXRocm93XywgX19MSU5F
X18pOiBcCi0gICAgICBmYWlsKGd0ZXN0X21zZykKKyAgICAgIGZhaWwoIkV4cGVjdGVkOiAiICNz
dGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuIiBcCisgICAgICAgICAgICIgIEFjdHVh
bDogaXQgZG9lc24ndC4iKQogCiAKIC8vIEltcGxlbWVudHMgQm9vbGVhbiB0ZXN0IGFzc2VydGlv
bnMgc3VjaCBhcyBFWFBFQ1RfVFJVRS4gZXhwcmVzc2lvbiBjYW4gYmUKQEAgLTg4MCwxOCArMTE5
NCwxNyBAQCBjbGFzcyBHVEVTVF9BUElfIFJhbmRvbSB7CiAKICNkZWZpbmUgR1RFU1RfVEVTVF9O
T19GQVRBTF9GQUlMVVJFXyhzdGF0ZW1lbnQsIGZhaWwpIFwKICAgR1RFU1RfQU1CSUdVT1VTX0VM
U0VfQkxPQ0tFUl8gXAotICBpZiAoY29uc3QgY2hhciogZ3Rlc3RfbXNnID0gIiIpIHsgXAorICBp
ZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKICAgICA6OnRlc3Rpbmc6
OmludGVybmFsOjpIYXNOZXdGYXRhbEZhaWx1cmVIZWxwZXIgZ3Rlc3RfZmF0YWxfZmFpbHVyZV9j
aGVja2VyOyBcCiAgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JF
TE9XXyhzdGF0ZW1lbnQpOyBcCiAgICAgaWYgKGd0ZXN0X2ZhdGFsX2ZhaWx1cmVfY2hlY2tlci5o
YXNfbmV3X2ZhdGFsX2ZhaWx1cmUoKSkgeyBcCi0gICAgICBndGVzdF9tc2cgPSAiRXhwZWN0ZWQ6
ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgZ2VuZXJhdGUgbmV3IGZhdGFsICIgXAotICAgICAgICAg
ICAgICAgICAgImZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZC5cbiIgXAotICAgICAgICAg
ICAgICAgICAgIiAgQWN0dWFsOiBpdCBkb2VzLiI7IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FU
X1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0bm9mYXRhbF8sIF9fTElORV9fKTsgXAogICAgIH0gXAog
ICB9IGVsc2UgXAogICAgIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdG5vZmF0
YWxfLCBfX0xJTkVfXyk6IFwKLSAgICAgIGZhaWwoZ3Rlc3RfbXNnKQorICAgICAgZmFpbCgiRXhw
ZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgZ2VuZXJhdGUgbmV3IGZhdGFsICIgXAorICAg
ICAgICAgICAiZmFpbHVyZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkLlxuIiBcCisgICAgICAgICAg
ICIgIEFjdHVhbDogaXQgZG9lcy4iKQogCiAvLyBFeHBhbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSBj
bGFzcyB0aGF0IGltcGxlbWVudHMgdGhlIGdpdmVuIHRlc3QuCiAjZGVmaW5lIEdURVNUX1RFU1Rf
Q0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXApAQCAtOTA0LDcgKzEyMTcs
NyBAQCBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25h
bWUpIDogcHVibGljIHBhcmVudF9jbGFzcyB7XAogICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRl
c3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpKCkge31cCiAgcHJpdmF0ZTpcCiAgIHZpcnR1YWwgdm9p
ZCBUZXN0Qm9keSgpO1wKLSAgc3RhdGljIDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3Rf
aW5mb187XAorICBzdGF0aWMgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvXyBH
VEVTVF9BVFRSSUJVVEVfVU5VU0VEXztcCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oXAogICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9u
YW1lKSk7XAogfTtcCkBAIC05MTIsNyArMTIyNSw4IEBAIGNsYXNzIEdURVNUX1RFU1RfQ0xBU1Nf
TkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgOiBwdWJsaWMgcGFyZW50X2NsYXNzIHtc
CiA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3Rf
Y2FzZV9uYW1lLCB0ZXN0X25hbWUpXAogICA6OnRlc3RfaW5mb18gPVwKICAgICA6OnRlc3Rpbmc6
OmludGVybmFsOjpNYWtlQW5kUmVnaXN0ZXJUZXN0SW5mbyhcCi0gICAgICAgICN0ZXN0X2Nhc2Vf
bmFtZSwgI3Rlc3RfbmFtZSwgIiIsICIiLCBcCisgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgI3Rl
c3RfbmFtZSwgTlVMTCwgTlVMTCwgXAorICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpDb2Rl
TG9jYXRpb24oX19GSUxFX18sIF9fTElORV9fKSwgXAogICAgICAgICAocGFyZW50X2lkKSwgXAog
ICAgICAgICBwYXJlbnRfY2xhc3M6OlNldFVwVGVzdENhc2UsIFwKICAgICAgICAgcGFyZW50X2Ns
YXNzOjpUZWFyRG93blRlc3RDYXNlLCBcCkBAIC05MjEsMyArMTIzNSw0IEBAIDo6dGVzdGluZzo6
VGVzdEluZm8qIGNvbnN0IEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSlcCiB2b2lkIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSk6OlRlc3RCb2R5KCkKIAogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lO
VEVSTkFMX0dURVNUX0lOVEVSTkFMX0hfCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRy
LmgKaW5kZXggNTQwZWY0Y2Q0NGU3MmI1NTg2NTcwODFhNWYwN2EwZjI4YjNlNDBlMy4uMzYwMjk0
MjIxNzRmMjE1ODQ4NjgxZGIxMTEwYmNkYjIzNTM4YTEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRyLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC1saW5rZWRfcHRyLmgKQEAgLTcxLDcgKzcxLDcgQEAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNp
bmNsdWRlIDxhc3NlcnQuaD4KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQu
aD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKIG5hbWVzcGFjZSB0
ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CkBAIC0xMDUsMjUgKzEwNSwzNSBAQCBjbGFz
cyBsaW5rZWRfcHRyX2ludGVybmFsIHsKICAgLy8gZnJhbWV3b3JrLgogCiAgIC8vIEpvaW4gYW4g
ZXhpc3RpbmcgY2lyY2xlLgotICAvLyBMIDwgZ19saW5rZWRfcHRyX211dGV4Ci0gIHZvaWQgam9p
bihsaW5rZWRfcHRyX2ludGVybmFsIGNvbnN0KiBwdHIpIHsKKyAgdm9pZCBqb2luKGxpbmtlZF9w
dHJfaW50ZXJuYWwgY29uc3QqIHB0cikKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGdfbGlu
a2VkX3B0cl9tdXRleCkgewogICAgIE11dGV4TG9jayBsb2NrKCZnX2xpbmtlZF9wdHJfbXV0ZXgp
OwogCiAgICAgbGlua2VkX3B0cl9pbnRlcm5hbCBjb25zdCogcCA9IHB0cjsKLSAgICB3aGlsZSAo
cC0+bmV4dF8gIT0gcHRyKSBwID0gcC0+bmV4dF87CisgICAgd2hpbGUgKHAtPm5leHRfICE9IHB0
cikgeworICAgICAgYXNzZXJ0KHAtPm5leHRfICE9IHRoaXMgJiYKKyAgICAgICAgICAgICAiVHJ5
aW5nIHRvIGpvaW4oKSBhIGxpbmtlZCByaW5nIHdlIGFyZSBhbHJlYWR5IGluLiAiCisgICAgICAg
ICAgICAgIklzIEdNb2NrIHRocmVhZCBzYWZldHkgZW5hYmxlZD8iKTsKKyAgICAgIHAgPSBwLT5u
ZXh0XzsKKyAgICB9CiAgICAgcC0+bmV4dF8gPSB0aGlzOwogICAgIG5leHRfID0gcHRyOwogICB9
CiAKICAgLy8gTGVhdmUgd2hhdGV2ZXIgY2lyY2xlIHdlJ3JlIHBhcnQgb2YuICBSZXR1cm5zIHRy
dWUgaWYgd2Ugd2VyZSB0aGUKICAgLy8gbGFzdCBtZW1iZXIgb2YgdGhlIGNpcmNsZS4gIE9uY2Ug
dGhpcyBpcyBkb25lLCB5b3UgY2FuIGpvaW4oKSBhbm90aGVyLgotICAvLyBMIDwgZ19saW5rZWRf
cHRyX211dGV4Ci0gIGJvb2wgZGVwYXJ0KCkgeworICBib29sIGRlcGFydCgpCisgICAgICBHVEVT
VF9MT0NLX0VYQ0xVREVEXyhnX2xpbmtlZF9wdHJfbXV0ZXgpIHsKICAgICBNdXRleExvY2sgbG9j
aygmZ19saW5rZWRfcHRyX211dGV4KTsKIAogICAgIGlmIChuZXh0XyA9PSB0aGlzKSByZXR1cm4g
dHJ1ZTsKICAgICBsaW5rZWRfcHRyX2ludGVybmFsIGNvbnN0KiBwID0gbmV4dF87Ci0gICAgd2hp
bGUgKHAtPm5leHRfICE9IHRoaXMpIHAgPSBwLT5uZXh0XzsKKyAgICB3aGlsZSAocC0+bmV4dF8g
IT0gdGhpcykgeworICAgICAgYXNzZXJ0KHAtPm5leHRfICE9IG5leHRfICYmCisgICAgICAgICAg
ICAgIlRyeWluZyB0byBkZXBhcnQoKSBhIGxpbmtlZCByaW5nIHdlIGFyZSBub3QgaW4uICIKKyAg
ICAgICAgICAgICAiSXMgR01vY2sgdGhyZWFkIHNhZmV0eSBlbmFibGVkPyIpOworICAgICAgcCA9
IHAtPm5leHRfOworICAgIH0KICAgICBwLT5uZXh0XyA9IG5leHRfOwogICAgIHJldHVybiBmYWxz
ZTsKICAgfQpAQCAtMTcyLDE1ICsxODIsNiBAQCBjbGFzcyBsaW5rZWRfcHRyIHsKICAgVCogZ2V0
KCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CiAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiB2YWx1ZV87IH0KICAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKnZhbHVlXzsg
fQotICAvLyBSZWxlYXNlIG93bmVyc2hpcCBvZiB0aGUgcG9pbnRlZCBvYmplY3QgYW5kIHJldHVy
bnMgaXQuCi0gIC8vIFNvbGUgb3duZXJzaGlwIGJ5IHRoaXMgbGlua2VkX3B0ciBvYmplY3QgaXMg
cmVxdWlyZWQuCi0gIFQqIHJlbGVhc2UoKSB7Ci0gICAgYm9vbCBsYXN0ID0gbGlua18uZGVwYXJ0
KCk7Ci0gICAgYXNzZXJ0KGxhc3QpOwotICAgIFQqIHYgPSB2YWx1ZV87Ci0gICAgdmFsdWVfID0g
TlVMTDsKLSAgICByZXR1cm4gdjsKLSAgfQogCiAgIGJvb2wgb3BlcmF0b3I9PShUKiBwKSBjb25z
dCB7IHJldHVybiB2YWx1ZV8gPT0gcDsgfQogICBib29sIG9wZXJhdG9yIT0oVCogcCkgY29uc3Qg
eyByZXR1cm4gdmFsdWVfICE9IHA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFy
YW0tdXRpbC1nZW5lcmF0ZWQuaAppbmRleCBhYjRhYjU2NjI1NjQyZDI1NThmZDM4YjE4Y2VkMDZk
MDM1MWVjMWY0Li40ZDFkODFkMjBmZmNhMzJiYThmOTU3N2ZmNWJkMDZiZmUyZGU3NDYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oCkBAIC0x
LDQgKzEsNiBAQAotLy8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgYSBzY3JpcHQuICBETyBO
T1QgRURJVCBCWSBIQU5EISEhCisvLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBjb21tYW5k
OgorLy8gICAgIHB1bXAucHkgZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCisvLyBE
TyBOT1QgRURJVCBCWSBIQU5EISEhCiAKIC8vIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJbmMuCiAv
LyBBbGwgUmlnaHRzIFJlc2VydmVkLgpAQCAtMzgsNyArNDAsNyBAQAogLy8gYW5kIGF0IG1vc3Qg
MTAgYXJndW1lbnRzIGluIENvbWJpbmUuIFBsZWFzZSBjb250YWN0CiAvLyBnb29nbGV0ZXN0ZnJh
bWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20gaWYgeW91IG5lZWQgbW9yZS4KIC8vIFBsZWFzZSBub3Rl
IHRoYXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgdG8gQ29tYmluZSBpcyBsaW1pdGVkCi0vLyBi
eSB0aGUgbWF4aW11bSBhcml0eSBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdHIxOjp0dXBsZSB3
aGljaCBpcworLy8gYnkgdGhlIG1heGltdW0gYXJpdHkgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9m
IHR1cGxlIHdoaWNoIGlzCiAvLyBjdXJyZW50bHkgc2V0IGF0IDEwLgogCiAjaWZuZGVmIEdURVNU
X0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFURURfSF8KQEAg
LTQ3LDggKzQ5LDggQEAKIC8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBkZXBlbmRzIG9uIGd0ZXN0
J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKIC8vICp1bmNvbmRpdGlvbmFsbHkqLiAgVGhl
cmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKIC8vIGluc2lkZSAjaWYgR1RF
U1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KKyNpbmNsdWRl
ICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKIApAQCAtNTgs
OCArNjAsOCBAQCBuYW1lc3BhY2UgdGVzdGluZyB7CiAvLyBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXBh
cmFtLXRlc3QuaC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+CiBpbnRlcm5h
bDo6UGFyYW1HZW5lcmF0b3I8Ci0gICAgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxG
b3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKLSAgICAgICAgRm9yd2FyZEl0
ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKTsKKyAgdHlwZW5hbWUgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4K
K1ZhbHVlc0luKEZvcndhcmRJdGVyYXRvciBiZWdpbiwgRm9yd2FyZEl0ZXJhdG9yIGVuZCk7CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KIGludGVybmFsOjpQYXJhbUdlbmVyYXRv
cjxUPiBWYWx1ZXNJbihjb25zdCBUICgmYXJyYXkpW05dKTsKQEAgLTc3LDcgKzc5LDEwIEBAIGNs
YXNzIFZhbHVlQXJyYXkxIHsKICAgZXhwbGljaXQgVmFsdWVBcnJheTEoVDEgdjEpIDogdjFfKHYx
KSB7fQogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsgcmV0dXJuIFZhbHVlc0luKCZ2MV8sICZ2MV8gKyAxKTsgfQorICBvcGVy
YXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7
c3RhdGljX2Nhc3Q8VD4odjFfKX07CisgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKKyAgfQog
CiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3Vw
cG9ydGVkLgpAQCAtOTMsNyArOTgsNyBAQCBjbGFzcyBWYWx1ZUFycmF5MiB7CiAKICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qgewot
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyX307CisgICAgY29uc3QgVCBhcnJheVtdID0g
e3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyl9OwogICAgIHJldHVybiBW
YWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTEyLDcgKzExNyw4IEBAIGNsYXNzIFZhbHVlQXJy
YXkzIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M199Owor
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxU
Pih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pfTsKICAgICByZXR1cm4gVmFsdWVz
SW4oYXJyYXkpOwogICB9CiAKQEAgLTEzMyw3ICsxMzksOCBAQCBjbGFzcyBWYWx1ZUFycmF5NCB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF99Owor
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxU
Pih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8p
fTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTE1NSw3ICsxNjIsOCBA
QCBjbGFzcyBWYWx1ZUFycmF5NSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJh
dG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2
MV8sIHYyXywgdjNfLCB2NF8sIHY1X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19j
YXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyl9OwogICAgIHJl
dHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTc5LDcgKzE4Nyw5IEBAIGNsYXNzIFZh
bHVlQXJyYXk2IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1H
ZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2
M18sIHY0XywgdjVfLCB2Nl99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxU
Pih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18p
LCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2Nl8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAg
LTIwNCw3ICsyMTQsOSBAQCBjbGFzcyBWYWx1ZUFycmF5NyB7CiAKICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N199OworICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0
aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2Fz
dDxUPih2N18pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTIzMSw3
ICsyNDMsOSBAQCBjbGFzcyBWYWx1ZUFycmF5OCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJy
YXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4X307CisgICAgY29u
c3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRp
Y19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0
PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJh
eSk7CiAgIH0KIApAQCAtMjU5LDcgKzI3MywxMCBAQCBjbGFzcyBWYWx1ZUFycmF5OSB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4o
djFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwg
c3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5
KTsKICAgfQogCkBAIC0yODgsNyArMzA1LDEwIEBAIGNsYXNzIFZhbHVlQXJyYXkxMCB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlfLCB2MTBffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nh
c3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4o
djhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyl9
OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMzE5LDcgKzMzOSwxMCBA
QCBjbGFzcyBWYWx1ZUFycmF5MTEgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVy
YXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7
djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExX307
CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0
PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0
XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0
YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKX07
CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0zNTEsOCArMzc0LDExIEBA
IGNsYXNzIFZhbHVlQXJyYXkxMiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJh
dG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2
MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAot
ICAgICAgICB2MTJffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKX07CiAgICAgcmV0dXJu
IFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0zODYsOCArNDEyLDExIEBAIGNsYXNzIFZhbHVl
QXJyYXkxMyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNf
LCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJf
LCB2MTNffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3Rh
dGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nh
c3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+
KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEz
Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtNDIyLDggKzQ1MSwx
MSBAQCBjbGFzcyBWYWx1ZUFycmF5MTQgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKX07CiAgICAgcmV0
dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC00NTksOCArNDkxLDEyIEBAIGNsYXNzIFZh
bHVlQXJyYXkxNSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFt
R2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywg
djNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2
MTJfLCB2MTNfLCB2MTRfLCB2MTVffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nh
c3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4o
djhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyks
IHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3Rh
dGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MTVfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC00
OTksOCArNTM1LDEyIEBAIGNsYXNzIFZhbHVlQXJyYXkxNiB7CiAKICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywgdjlf
LCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZffTsKKyAg
ICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19j
YXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8
VD4odjE2Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtNTQwLDgg
KzU4MCwxMiBAQCBjbGFzcyBWYWx1ZUFycmF5MTcgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFy
cmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEw
XywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3X307Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNf
Y2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0
PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCkBAIC01ODIsOCArNjI2LDEzIEBAIGNsYXNzIFZhbHVlQXJyYXkxOCB7CiAK
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkg
Y29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1Xywg
djZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRf
LCB2MTVfLCB2MTZfLCB2MTdfLCB2MThffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGlj
X2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8
VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEw
XyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwg
c3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYx
N18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKX07CiAgICAgcmV0dXJuIFZhbHVlc0lu
KGFycmF5KTsKICAgfQogCkBAIC02MjUsOCArNjc0LDEzIEBAIGNsYXNzIFZhbHVlQXJyYXkxOSB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2
MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlffTsKKyAgICBjb25zdCBUIGFycmF5W10g
PSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nh
c3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19j
YXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8
VD4odjE5Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtNjcwLDgg
KzcyNCwxMyBAQCBjbGFzcyBWYWx1ZUFycmF5MjAgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFy
cmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEw
XywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4
XywgdjE5XywgdjIwX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYx
XyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0
YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNf
Y2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0
PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC03MTcs
OCArNzc2LDE0IEBAIGNsYXNzIFZhbHVlQXJyYXkyMSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2
MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2
MThfLCB2MTlfLCB2MjBfLCB2MjFffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nh
c3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4o
djhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyks
IHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3Rh
dGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0
YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC03NjUsOCArODMwLDE0IEBAIGNsYXNz
IFZhbHVlQXJyYXkyMiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYy
XywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAg
ICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2
MjFfLCB2MjJffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0
PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4o
djEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVf
KSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+
KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIy
Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtODE1LDkgKzg4Niwx
NCBAQCBjbGFzcyBWYWx1ZUFycmF5MjMgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5
XywgdjIwXywgdjIxXywgdjIyXywKLSAgICAgICAgdjIzX307CisgICAgY29uc3QgVCBhcnJheVtd
ID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0
YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19j
YXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0
PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC04NjcsOSArOTQzLDE1IEBAIGNsYXNz
IFZhbHVlQXJyYXkyNCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYy
XywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAg
ICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2
MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7
c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGlj
X2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8
VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0
PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4o
djE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjRfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQog
CkBAIC05MjAsOSArMTAwMiwxNSBAQCBjbGFzcyBWYWx1ZUFycmF5MjUgewogCiAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAg
ICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2
OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2
XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0
XywgdjI1X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYx
M18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyks
IHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2
MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8p
LCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0
YXRpY19jYXN0PFQ+KHYyNV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAK
QEAgLTk3NSw5ICsxMDYzLDE1IEBAIGNsYXNzIFZhbHVlQXJyYXkyNiB7CiAKICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4
XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZf
LCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRf
LCB2MjVfLCB2MjZffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8
VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0
PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pfTsKICAgICByZXR1
cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTEwMzIsOSArMTEyNiwxNiBAQCBjbGFzcyBW
YWx1ZUFycmF5MjcgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8s
IHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAg
djEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIx
XywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3X307CisgICAgY29u
c3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRp
Y19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0
PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5
XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxU
Pih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYx
Nl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4Xyks
IHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2
MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8p
LCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3Xyl9Owog
ICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTA5MCw5ICsxMTkxLDE2IEBA
IGNsYXNzIFZhbHVlQXJyYXkyOCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJh
dG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2
MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAot
ICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2
MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2
MjhffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyks
IHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0
YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihh
cnJheSk7CiAgIH0KIApAQCAtMTE0OSw5ICsxMjU3LDE2IEBAIGNsYXNzIFZhbHVlQXJyYXkyOSB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2
MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNf
LAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlffTsKKyAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+
KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2
XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwg
c3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYy
M18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pfTsKICAgICByZXR1cm4gVmFs
dWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTEyMTAsOSArMTMyNSwxNyBAQCBjbGFzcyBWYWx1ZUFy
cmF5MzAgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywg
djRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywg
djEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIy
XywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMw
X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19j
YXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+
KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2Xyks
IHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBz
dGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRp
Y19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0
aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19j
YXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7
CiAgIH0KIApAQCAtMTI3Myw5ICsxMzk2LDE3IEBAIGNsYXNzIFZhbHVlQXJyYXkzMSB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2
MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAg
ICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFffTsKKyAg
ICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19j
YXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8
VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0
PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Mjdf
KSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyl9OwogICAgIHJldHVybiBW
YWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTMzNyw5ICsxNDY4LDE3IEBAIGNsYXNzIFZhbHVl
QXJyYXkzMiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNf
LCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJf
LCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2
MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2
MzBfLCB2MzFfLCB2MzJffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4o
djFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwg
c3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRp
Y19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nh
c3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19j
YXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0
PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4o
djMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkp
OwogICB9CiAKQEAgLTE0MDMsOSArMTU0MiwxOCBAQCBjbGFzcyBWYWx1ZUFycmF5MzMgewogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2
XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0Xywg
djE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAg
ICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMy
XywgdjMzX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYx
M18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyks
IHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2
MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8p
LCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0
YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2Mjlf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBz
dGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyl9OwogICAg
IHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTQ3MCw5ICsxNjE4LDE4IEBAIGNs
YXNzIFZhbHVlQXJyYXkzNCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8s
IHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAg
ICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBf
LCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2Mjhf
LCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRffTsKKyAgICBjb25zdCBUIGFycmF5
W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRp
Y19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nh
c3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19j
YXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8
VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0Xyl9OwogICAgIHJldHVy
biBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTUzOCwxMCArMTY5NSwxOCBAQCBjbGFzcyBW
YWx1ZUFycmF5MzUgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8s
IHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAg
djEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIx
XywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5
XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywKLSAgICAgICAgdjM1X307CisgICAgY29u
c3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRp
Y19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0
PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5
XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxU
Pih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYx
Nl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4Xyks
IHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2
MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8p
LCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0
YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBz
dGF0aWNfY2FzdDxUPih2MzVfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQog
CkBAIC0xNjA5LDEwICsxNzc0LDE5IEBAIGNsYXNzIFZhbHVlQXJyYXkzNiB7CiAKICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qgewot
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18s
IHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2
MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2
MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNf
LCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3Rh
dGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nh
c3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4o
djEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJf
KSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+
KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5
XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYy
Nl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3Rh
dGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCkBAIC0xNjgyLDEwICsxODU2LDE5IEBAIGNsYXNzIFZhbHVlQXJyYXkzNyB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2
MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNf
LAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFf
LCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdffTsKKyAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+
KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2
XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwg
c3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYy
M18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0
YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjM3Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAt
MTc1NiwxMCArMTkzOSwxOSBAQCBjbGFzcyBWYWx1ZUFycmF5MzggewogCiAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBj
b25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8s
IHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2Xywg
djE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0Xywg
djI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0
XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4X307CisgICAgY29uc3QgVCBhcnJheVtd
ID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0
YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19j
YXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0
PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+
KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMw
XyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxU
Pih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYz
N18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
ICAgfQogCkBAIC0xODMxLDEwICsyMDIzLDIwIEBAIGNsYXNzIFZhbHVlQXJyYXkzOSB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2
MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAg
ICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJf
LCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlffTsKKyAg
ICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19j
YXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8
VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0
PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Mjdf
KSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+
KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0
XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwg
c3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzlfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBA
IC0xOTA4LDEwICsyMTEwLDIwIEBAIGNsYXNzIFZhbHVlQXJyYXk0MCB7CiAKICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4
XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZf
LCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRf
LCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2
MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBffTsKKyAgICBj
b25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3Rh
dGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nh
c3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0
PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4o
djE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThf
KSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+
KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1
XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYz
Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0Xyks
IHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyl9OwogICAgIHJldHVybiBWYWx1ZXNJ
bihhcnJheSk7CiAgIH0KIApAQCAtMTk4NywxMCArMjE5OSwyMCBAQCBjbGFzcyBWYWx1ZUFycmF5
NDEgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRf
LCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEz
XywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywg
djIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywg
djMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4Xywg
djM5XywgdjQwXywgdjQxX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+
KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyks
IHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0
aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19j
YXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0
PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2Fz
dDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+
KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMz
XyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxU
Pih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0
MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
ICAgfQogCkBAIC0yMDY3LDEwICsyMjg5LDIxIEBAIGNsYXNzIFZhbHVlQXJyYXk0MiB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2
MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAg
ICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJf
LCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBf
LCB2NDFfLCB2NDJffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8
VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0
PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+
KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMx
XyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwg
c3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYz
OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyks
IHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKX07CiAg
ICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0yMTQ4LDEwICsyMzgxLDIxIEBA
IGNsYXNzIFZhbHVlQXJyYXk0MyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJh
dG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2
MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAot
ICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2
MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2
MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2
MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJfLCB2NDNffTsKKyAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+
KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2
XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwg
c3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYy
M18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0
YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyl9OwogICAg
IHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjIzMSwxMCArMjQ3NSwyMSBAQCBj
bGFzcyBWYWx1ZUFycmF5NDQgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFf
LCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAg
ICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIw
XywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4
XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2
XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0X307CisgICAg
Y29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYy
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0
YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19j
YXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2Fz
dDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+
KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4
XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYy
NV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2
MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8p
LCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0
YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBz
dGF0aWNfY2FzdDxUPih2NDRfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQog
CkBAIC0yMzE1LDEwICsyNTcwLDIyIEBAIGNsYXNzIFZhbHVlQXJyYXk0NSB7CiAKICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qgewot
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18s
IHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2
MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2
MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNf
LCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFf
LCB2NDJfLCB2NDNfLCB2NDRfLCB2NDVffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGlj
X2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8
VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEw
XyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwg
c3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYx
N18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5Xyks
IHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3Rh
dGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0
YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGlj
X2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRp
Y19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nh
c3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2NDVfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
ICAgfQogCkBAIC0yNDAxLDEwICsyNjY4LDIyIEBAIGNsYXNzIFZhbHVlQXJyYXk0NiB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2
MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAg
ICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJf
LCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBf
LCB2NDFfLCB2NDJfLCB2NDNfLCB2NDRfLCB2NDVfLCB2NDZffTsKKyAgICBjb25zdCBUIGFycmF5
W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRp
Y19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nh
c3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19j
YXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8
VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0
PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4o
djM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Mzlf
KSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+
KHY0NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDVfKSwgc3RhdGljX2Nhc3Q8VD4odjQ2
Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjQ4OSwxMSArMjc2
OCwyMiBAQCBjbGFzcyBWYWx1ZUFycmF5NDcgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
ICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5
W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywg
djExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4Xywg
djE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2Xywg
djI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAg
ICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0
XywgdjQ1XywgdjQ2XywKLSAgICAgICAgdjQ3X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYx
OV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyks
IHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2
MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8p
LCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0
YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBz
dGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRp
Y19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBzdGF0
aWNfY2FzdDxUPih2NDdfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBA
IC0yNTc5LDExICsyODY5LDIzIEBAIGNsYXNzIFZhbHVlQXJyYXk0OCB7CiAKICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4
XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZf
LCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRf
LCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2
MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFfLCB2
NDJfLCB2NDNfLCB2NDRfLCB2NDVfLCB2NDZfLCB2NDdfLAotICAgICAgICB2NDhffTsKKyAgICBj
b25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3Rh
dGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nh
c3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0
PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4o
djE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThf
KSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+
KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1
XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYz
Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0Xyks
IHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0
YXRpY19jYXN0PFQ+KHY0NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDVfKSwgc3RhdGlj
X2Nhc3Q8VD4odjQ2XyksIHN0YXRpY19jYXN0PFQ+KHY0N18pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2NDhfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0yNjcw
LDExICsyOTcyLDIzIEBAIGNsYXNzIFZhbHVlQXJyYXk0OSB7CiAKICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywgdjlf
LCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdf
LCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVf
LCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2
MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJfLCB2
NDNfLCB2NDRfLCB2NDVfLCB2NDZfLCB2NDdfLAotICAgICAgICB2NDhfLCB2NDlffTsKKyAgICBj
b25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3Rh
dGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nh
c3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0
PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4o
djE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThf
KSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+
KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1
XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYz
Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0Xyks
IHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0
YXRpY19jYXN0PFQ+KHY0NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDVfKSwgc3RhdGlj
X2Nhc3Q8VD4odjQ2XyksIHN0YXRpY19jYXN0PFQ+KHY0N18pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2NDhfKSwgc3RhdGljX2Nhc3Q8VD4odjQ5Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihh
cnJheSk7CiAgIH0KIApAQCAtMjc2MiwxMSArMzA3NiwyMyBAQCBjbGFzcyBWYWx1ZUFycmF5NTAg
ewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2
NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywg
djE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIz
XywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMx
XywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5
XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0XywgdjQ1XywgdjQ2XywgdjQ3XywKLSAgICAg
ICAgdjQ4XywgdjQ5XywgdjUwX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0
PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
XyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBz
dGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRp
Y19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0
aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19j
YXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNf
Y2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0
PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2Fz
dDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+
KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQy
XyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBzdGF0aWNfY2FzdDxU
Pih2NDdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ4XyksIHN0YXRpY19jYXN0PFQ+KHY0
OV8pLCBzdGF0aWNfY2FzdDxUPih2NTBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
ICAgfQogCkBAIC0yODI2LDcgKzMxNTIsNyBAQCBjbGFzcyBWYWx1ZUFycmF5NTAgewogICBjb25z
dCBUNTAgdjUwXzsKIH07CiAKLSNpZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNf
Q09NQklORQogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIg
Q09ERS4KIC8vCiAvLyBHZW5lcmF0ZXMgdmFsdWVzIGZyb20gdGhlIENhcnRlc2lhbiBwcm9kdWN0
IG9mIHZhbHVlcyBwcm9kdWNlZApAQCAtMjgzNCw5ICszMTYwLDkgQEAgY2xhc3MgVmFsdWVBcnJh
eTUwIHsKIC8vCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgogY2xhc3MgQ2Fy
dGVzaWFuUHJvZHVjdEdlbmVyYXRvcjIKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVy
ZmFjZTwgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyPiA+IHsKKyAgICA6IHB1YmxpYyBQYXJhbUdl
bmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDI+ID4gewogIHB1YmxpYzoK
LSAgdHlwZWRlZiA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDI+IFBhcmFtVHlwZTsKKyAgdHlwZWRl
ZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMj4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1
Y3RHZW5lcmF0b3IyKGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUMj4mIGcyKQpAQCAtMjk0OSw5ICszMjc1LDkgQEAgY2xhc3MgQ2FydGVz
aWFuUHJvZHVjdEdlbmVyYXRvcjIKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDM+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMwotICAgIDog
cHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIs
IFQzPiA+IHsKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5n
Ojp0dXBsZTxUMSwgVDIsIFQzPiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnRyMTo6
dHVwbGU8VDEsIFQyLCBUMz4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8
VDEsIFQyLCBUMz4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IzKGNv
bnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxU
Mj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczKQpAQCAtMzA4MSw5ICszNDA3LDkg
QEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjMKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0PgogY2xhc3MgQ2FydGVz
aWFuUHJvZHVjdEdlbmVyYXRvcjQKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFj
ZTwgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+ID4geworICAgIDogcHVibGljIFBh
cmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiA+
IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+
IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiBQ
YXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQoY29uc3QgUGFyYW1HZW5l
cmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBAIC0zMjMyLDkgKzM1NTgsOSBAQCBjbGFzcyBDYXJ0
ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNAogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1PgogY2xhc3MgQ2FydGVz
aWFuUHJvZHVjdEdlbmVyYXRvcjUKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFj
ZTwgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiA+IHsKKyAgICA6IHB1Ymxp
YyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBU
NCwgVDU+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIs
IFQzLCBUNCwgVDU+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBU
MiwgVDMsIFQ0LCBUNT4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1
KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLApAQCAtMzQwMCwxMCArMzcy
NiwxMCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNQogdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NSwKICAgICB0eXBlbmFtZSBUNj4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2Ci0g
ICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6c3RkOjp0cjE6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwg
Ojp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsCiAgICAgICAgIFQ2PiA+IHsKICBw
dWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
Nj4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNj4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2KGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4m
IGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLApAQCAtMzU4NiwxMCArMzkxMiwxMCBA
QCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNgogdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAg
ICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJh
dG9yNwotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHIxOjp0
dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAorICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9y
SW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCiAgICAg
ICAgIFQ3PiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDc+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjcoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMs
CkBAIC0zNzg5LDEwICs0MTE1LDEwIEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5h
bWUgVDg+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOAotICAgIDogcHVibGljIFBh
cmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LAorICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6
OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCiAgICAgICAgIFQ3LCBUOD4gPiB7CiAgcHVi
bGljOgotICB0eXBlZGVmIDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOD4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdl
bmVyYXRvcjgoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFt
R2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBAIC00MDEx
LDEwICs0MzM3LDEwIEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4CiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LAogICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5
cGVuYW1lIFQ5PgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjkKLSAgICA6IHB1Ymxp
YyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0
aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAogICAgICAgICBUNywgVDgsIFQ5PiA+
IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4LCBUOT4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVw
bGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4gUGFyYW1UeXBlOwogCiAgIENh
cnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAg
ICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxU
Mz4mIGczLApAQCAtNDI1MCwxMCArNDU3NiwxMCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2Vu
ZXJhdG9yOQogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMs
IHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcs
IHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgogY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjEwCi0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8
IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCisgICAgOiBwdWJsaWMg
UGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwKICAgICAgICAgVDcsIFQ4LCBUOSwgVDEwPiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVk
ZWYgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwPiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTA+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yMTAoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBA
IC00NTE1LDggKzQ4NDEsOCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMiB7CiBDYXJ0
ZXNpYW5Qcm9kdWN0SG9sZGVyMihjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9y
MiYgZzIpCiAgICAgICA6IGcxXyhnMSksIGcyXyhnMikge30KICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMj4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0cjE6
OnR1cGxlPFQxLCBUMj4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6
c3RkOjp0cjE6OnR1cGxlPFQxLCBUMj4gPigKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6
dGVzdGluZzo6dHVwbGU8VDEsIFQyPiA+KCkgY29uc3QgeworICAgIHJldHVybiBQYXJhbUdlbmVy
YXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDI+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Q
cm9kdWN0R2VuZXJhdG9yMjxUMSwgVDI+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVy
YXRvcjxUMT4gPihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4g
PihnMl8pKSk7CkBAIC00NTM3LDggKzQ4NjMsOCBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMyhj
b25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgY29uc3QgR2Vu
ZXJhdG9yMyYgZzMpCiAgICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhnMykge30KICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci0gIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzPiA+KCkgY29uc3Qg
ewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBU
Mz4gPigKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQy
LCBUMz4gPigpIGNvbnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6
dHVwbGU8VDEsIFQyLCBUMz4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0
b3IzPFQxLCBUMiwgVDM+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4g
PihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pLApA
QCAtNDU2Miw4ICs0ODg4LDggQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjQoY29uc3QgR2VuZXJh
dG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICAgIGNvbnN0IEdlbmVyYXRvcjMmIGcz
LCBjb25zdCBHZW5lcmF0b3I0JiBnNCkKICAgICAgIDogZzFfKGcxKSwgZzJfKGcyKSwgZzNfKGcz
KSwgZzRfKGc0KSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6
dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1H
ZW5lcmF0b3I8IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiA+KAorICBvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPigpIGNv
bnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQy
LCBUMywgVDQ+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNDxUMSwg
VDIsIFQzLCBUND4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcx
XyksCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyksCkBAIC00
NTg5LDggKzQ5MTUsOCBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNShjb25zdCBHZW5lcmF0b3Ix
JiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgY29uc3QgR2VuZXJhdG9yMyYgZzMsIGNv
bnN0IEdlbmVyYXRvcjQmIGc0LCBjb25zdCBHZW5lcmF0b3I1JiBnNSkKICAgICAgIDogZzFfKGcx
KSwgZzJfKGcyKSwgZzNfKGczKSwgZzRfKGc0KSwgZzVfKGc1KSB7fQogICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1l
IFQ1PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQy
LCBUMywgVDQsIFQ1PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpz
dGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiA+KAorICBvcGVyYXRvciBQYXJhbUdl
bmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+ID4oKSBjb25zdCB7
CisgICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0LCBUNT4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1PFQxLCBU
MiwgVDMsIFQ0LCBUNT4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+
KGcxXyksCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyksCkBA
IC00NjIwLDggKzQ5NDYsOCBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNihjb25zdCBHZW5lcmF0
b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgICA6IGcxXyhnMSksIGcyXyhnMiks
IGczXyhnMyksIGc0XyhnNCksIGc1XyhnNSksIGc2XyhnNikge30KICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NSwKICAgICAgIHR5cGVuYW1lIFQ2PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6
OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4gPigpIGNvbnN0IHsKLSAgICByZXR1
cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDY+ID4oCisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDY+ID4oKSBjb25zdCB7CisgICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9y
PCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+ID4oCiAgICAgICAgIG5l
dyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PigKICAg
ICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKICAgICAgICAgc3Rh
dGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwKQEAgLTQ2NTMsOSArNDk3OSw5IEBA
IENhcnRlc2lhblByb2R1Y3RIb2xkZXI3KGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5l
cmF0b3IyJiBnMiwKICAgICAgIDogZzFfKGcxKSwgZzJfKGcyKSwgZzNfKGczKSwgZzRfKGc0KSwg
ZzVfKGc1KSwgZzZfKGc2KSwgZzdfKGc3KSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgICAg
dHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpz
dGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKKyAgb3BlcmF0b3IgUGFyYW1H
ZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKICAgICAg
IFQ3PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnRyMTo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+ID4oCisgICAgcmV0dXJuIFBhcmFtR2Vu
ZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PiA+KAog
ICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjc8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDc+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8p
LAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pLApAQCAtNDY5
MSw5ICs1MDE3LDkgQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjgoY29uc3QgR2VuZXJhdG9yMSYg
ZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICAgICAgICAgIGc4XyhnOCkge30KICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0
eXBlbmFtZSBUNSwKICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+
Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsCiAgICAgICBUOD4gPigpIGNvbnN0IHsK
LSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOD4gPigKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVz
dGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiA+KAogICAgICAgICBu
ZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjg8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4PigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKICAg
ICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwKQEAgLTQ3MzIsOSAr
NTA1OCw5IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXI5KGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBj
b25zdCBHZW5lcmF0b3IyJiBnMiwKICAgICAgICAgICBnOV8oZzkpIHt9CiAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDUsCiAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBl
bmFtZSBUOT4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0cjE6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8
IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LAogICAgICAg
VDk+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0
dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsCisgICAgcmV0dXJuIFBhcmFtR2Vu
ZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwK
ICAgICAgICAgVDk+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOTxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PigKICAgICAgICAgc3RhdGljX2Nhc3Q8
UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKQEAgLTQ3NzYsMTAgKzUxMDIsMTAgQEAgQ2FydGVz
aWFuUHJvZHVjdEhvbGRlcjEwKGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3Iy
JiBnMiwKICAgICAgICAgICBnOV8oZzkpLCBnMTBfKGcxMCkge30KICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NSwKICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1l
IFQ5LCB0eXBlbmFtZSBUMTA+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIx
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsCi0gICAgICBUOSwgVDEwPiA+
KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnRyMTo6dHVwbGU8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LAotICAgICAgICBUOSwgVDEwPiA+KAorICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LAorICAgICAgVDEwPiA+KCkgY29uc3QgeworICAgIHJldHVybiBQ
YXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LAorICAgICAgICBUMTA+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0
R2VuZXJhdG9yMTA8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwKICAgICAgICAg
ICAgIFQxMD4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcxXyks
CkBAIC00ODEwLDcgKzUxMzYsNyBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMTAoY29uc3QgR2Vu
ZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICBjb25zdCBHZW5lcmF0b3IxMCBn
MTBfOwogfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXIxMAogCi0jZW5kaWYgIC8v
IEdURVNUX0hBU19DT01CSU5FCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQogCiB9ICAv
LyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBh
cmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCmluZGV4
IGJhZWRmYmMyZDdlODM0MWI1YjU1OWQ5Y2UzM2I4ZDg3NDUzZGVkNDIuLjVjN2M0N2FmMGJiMWU4
ODk4NDkyZTA1NDI1ZTQwMzk3YTRkMTJmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQu
aC5wdW1wCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCkBAIC0zOSw3ICszOSw3IEBAICR2
YXIgbWF4dHVwbGUgPSAxMCAgJCQgTWF4aW11bSBudW1iZXIgb2YgQ29tYmluZSBhcmd1bWVudHMg
d2Ugd2FudCB0byBzdXBwb3J0LgogLy8gYW5kIGF0IG1vc3QgJG1heHR1cGxlIGFyZ3VtZW50cyBp
biBDb21iaW5lLiBQbGVhc2UgY29udGFjdAogLy8gZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVn
cm91cHMuY29tIGlmIHlvdSBuZWVkIG1vcmUuCiAvLyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBudW1i
ZXIgb2YgYXJndW1lbnRzIHRvIENvbWJpbmUgaXMgbGltaXRlZAotLy8gYnkgdGhlIG1heGltdW0g
YXJpdHkgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRyMTo6dHVwbGUgd2hpY2ggaXMKKy8vIGJ5
IHRoZSBtYXhpbXVtIGFyaXR5IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0dXBsZSB3aGljaCBp
cwogLy8gY3VycmVudGx5IHNldCBhdCAkbWF4dHVwbGUuCiAKICNpZm5kZWYgR1RFU1RfSU5DTFVE
RV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0dFTkVSQVRFRF9IXwpAQCAtNDgsOCAr
NDgsOCBAQCAkdmFyIG1heHR1cGxlID0gMTAgICQkIE1heGltdW0gbnVtYmVyIG9mIENvbWJpbmUg
YXJndW1lbnRzIHdlIHdhbnQgdG8gc3VwcG9ydC4KIC8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBk
ZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKIC8vICp1bmNvbmRp
dGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKIC8v
IGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcGFyYW0tdXRpbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAjaWYgR1RFU1RfSEFTX1BBUkFN
X1RFU1QKIApAQCAtNTksOCArNTksOCBAQCBuYW1lc3BhY2UgdGVzdGluZyB7CiAvLyBpbmNsdWRl
L2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRl
cmF0b3I+CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ci0gICAgdHlwZW5hbWUgOjpzdGQ6Oml0
ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKLSAg
ICAgICAgRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKTsKKyAgdHlw
ZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0ZXJhdG9y
Pjo6dmFsdWVfdHlwZT4KK1ZhbHVlc0luKEZvcndhcmRJdGVyYXRvciBiZWdpbiwgRm9yd2FyZEl0
ZXJhdG9yIGVuZCk7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KIGludGVybmFs
OjpQYXJhbUdlbmVyYXRvcjxUPiBWYWx1ZXNJbihjb25zdCBUICgmYXJyYXkpW05dKTsKQEAgLTcy
LDMzICs3MiwxOCBAQCBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dHlwZW5hbWUgQ29udGFpbmVy
Ojp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIC8vIFVzZWQg
aW4gdGhlIFZhbHVlcygpIGZ1bmN0aW9uIHRvIHByb3ZpZGUgcG9seW1vcnBoaWMgY2FwYWJpbGl0
aWVzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxPgotY2xhc3MgVmFsdWVBcnJheTEgewotIHB1Ymxp
YzoKLSAgZXhwbGljaXQgVmFsdWVBcnJheTEoVDEgdjEpIDogdjFfKHYxKSB7fQotCi0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsg
cmV0dXJuIFZhbHVlc0luKCZ2MV8sICZ2MV8gKyAxKTsgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8g
aW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJh
dG9yPShjb25zdCBWYWx1ZUFycmF5MSYgb3RoZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsKLX07Ci0K
LSRyYW5nZSBpIDIuLm4KKyRyYW5nZSBpIDEuLm4KICRmb3IgaSBbWwogJHJhbmdlIGogMS4uaQog
CiB0ZW1wbGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIFQkal1dPgogY2xhc3MgVmFsdWVBcnJheSRp
IHsKICBwdWJsaWM6Ci0gIFZhbHVlQXJyYXkkaSgkZm9yIGosIFtbVCRqIHYkal1dKSA6ICRmb3Ig
aiwgW1t2JChqKV8odiRqKV1dIHt9CisgICRpZiBpPT0xIFtbZXhwbGljaXQgXV1WYWx1ZUFycmF5
JGkoJGZvciBqLCBbW1QkaiB2JGpdXSkgOiAkZm9yIGosIFtbdiQoailfKHYkaildXSB7fQogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7JGZvciBqLCBbW3YkKGopX11dfTsKKyAgICBj
b25zdCBUIGFycmF5W10gPSB7JGZvciBqLCBbW3N0YXRpY19jYXN0PFQ+KHYkKGopXyldXX07CiAg
ICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0xMTUsNyArMTAwLDcgQEAgJGZv
ciBqIFtbCiAKIF1dCiAKLSNpZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNfQ09N
QklORQogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09E
RS4KIC8vCiAvLyBHZW5lcmF0ZXMgdmFsdWVzIGZyb20gdGhlIENhcnRlc2lhbiBwcm9kdWN0IG9m
IHZhbHVlcyBwcm9kdWNlZApAQCAtMTI4LDkgKzExMyw5IEBAICRyYW5nZSBrIDIuLmkKIAogdGVt
cGxhdGUgPCRmb3IgaiwgW1t0eXBlbmFtZSBUJGpdXT4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RH
ZW5lcmF0b3IkaQotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6
dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4geworICAgIDogcHVibGljIFBhcmFtR2VuZXJh
dG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4gPiB7CiAgcHVi
bGljOgotICB0eXBlZGVmIDo6c3RkOjp0cjE6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4gUGFyYW1U
eXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8JGZvciBqLCBbW1Qkal1dPiBQYXJhbVR5
cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpKCRmb3IgaiwgW1tjb25zdCBQYXJh
bUdlbmVyYXRvcjxUJGo+JiBnJGpdXSkKICAgICAgIDogJGZvciBqLCBbW2ckKGopXyhnJGopXV0g
e30KQEAgLTI2OSw4ICsyNTQsOCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyJGkgewog
Q2FydGVzaWFuUHJvZHVjdEhvbGRlciRpKCRmb3IgaiwgW1tjb25zdCBHZW5lcmF0b3IkaiYgZyRq
XV0pCiAgICAgICA6ICRmb3IgaiwgW1tnJChqKV8oZyRqKV1dIHt9CiAgIHRlbXBsYXRlIDwkZm9y
IGosIFtbdHlwZW5hbWUgVCRqXV0+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6
dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFt
R2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4oCisgIG9wZXJh
dG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4gPigp
IGNvbnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8JGZv
ciBqLCBbW1Qkal1dPiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRp
PCRmb3IgaiwgW1tUJGpdXT4oCiAkZm9yIGosW1sKIApAQCAtMjkxLDcgKzI3Niw3IEBAICRmb3Ig
aiBbWwogCiBdXQogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCisjIGVuZGlmICAvLyBH
VEVTVF9IQVNfQ09NQklORQogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVz
cGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oCmluZGV4IDBjYmI1
OGMyMWI3Yjg5Y2Q0OGE4ZDFjNWNiNTIwZjMxMTM3NGNkZTIuLjgyY2FiOWIwMjAxYjE5YjdhZmJh
MzkxOTdmN2VhN2Y4YTRhMGIxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5o
CkBAIC0zNCwyMCArMzQsNDUgQEAKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5B
TF9HVEVTVF9QQVJBTV9VVElMX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJO
QUxfR1RFU1RfUEFSQU1fVVRJTF9IXwogCisjaW5jbHVkZSA8Y3R5cGUuaD4KKwogI2luY2x1ZGUg
PGl0ZXJhdG9yPgorI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUg
PHZlY3Rvcj4KIAogLy8gc2NyaXB0cy9mdXNlX2d0ZXN0LnB5IGRlcGVuZHMgb24gZ3Rlc3QncyBv
d24gaGVhZGVyIGJlaW5nICNpbmNsdWRlZAogLy8gKnVuY29uZGl0aW9uYWxseSouICBUaGVyZWZv
cmUgdGhlc2UgI2luY2x1ZGVzIGNhbm5vdCBiZSBtb3ZlZAogLy8gaW5zaWRlICNpZiBHVEVTVF9I
QVNfUEFSQU1fVEVTVC4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5o
PgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaD4KLSNpbmNsdWRl
IDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRf
cHRyLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LXByaW50ZXJzLmgiCiAKICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAogCiBu
YW1lc3BhY2UgdGVzdGluZyB7CisKKy8vIElucHV0IHRvIGEgcGFyYW1ldGVyaXplZCB0ZXN0IG5h
bWUgZ2VuZXJhdG9yLCBkZXNjcmliaW5nIGEgdGVzdCBwYXJhbWV0ZXIuCisvLyBDb25zaXN0cyBv
ZiB0aGUgcGFyYW1ldGVyIHZhbHVlIGFuZCB0aGUgaW50ZWdlciBwYXJhbWV0ZXIgaW5kZXguCit0
ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgorc3RydWN0IFRlc3RQYXJhbUluZm8geworICBUZXN0
UGFyYW1JbmZvKGNvbnN0IFBhcmFtVHlwZSYgYV9wYXJhbSwgc2l6ZV90IGFuX2luZGV4KSA6Cisg
ICAgcGFyYW0oYV9wYXJhbSksCisgICAgaW5kZXgoYW5faW5kZXgpIHt9CisgIFBhcmFtVHlwZSBw
YXJhbTsKKyAgc2l6ZV90IGluZGV4OworfTsKKworLy8gQSBidWlsdGluIHBhcmFtZXRlcml6ZWQg
dGVzdCBuYW1lIGdlbmVyYXRvciB3aGljaCByZXR1cm5zIHRoZSByZXN1bHQgb2YKKy8vIHRlc3Rp
bmc6OlByaW50VG9TdHJpbmcuCitzdHJ1Y3QgUHJpbnRUb1N0cmluZ1BhcmFtTmFtZSB7CisgIHRl
bXBsYXRlIDxjbGFzcyBQYXJhbVR5cGU+CisgIHN0ZDo6c3RyaW5nIG9wZXJhdG9yKCkoY29uc3Qg
VGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+JiBpbmZvKSBjb25zdCB7CisgICAgcmV0dXJuIFByaW50
VG9TdHJpbmcoaW5mby5wYXJhbSk7CisgIH0KK307CisKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAK
IC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCkBA
IC01Nyw3ICs4Miw3IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLyBURVNUX1AgbWFjcm8gaXMg
dXNlZCB0byBkZWZpbmUgdHdvIHRlc3RzIHdpdGggdGhlIHNhbWUgbmFtZQogLy8gYnV0IGluIGRp
ZmZlcmVudCBuYW1lc3BhY2VzLgogR1RFU1RfQVBJXyB2b2lkIFJlcG9ydEludmFsaWRUZXN0Q2Fz
ZVR5cGUoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb24gY29kZV9sb2Nh
dGlvbik7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZT4gY2xhc3MgUGFyYW1HZW5lcmF0b3JJbnRlcmZh
Y2U7CiB0ZW1wbGF0ZSA8dHlwZW5hbWU+IGNsYXNzIFBhcmFtR2VuZXJhdG9yOwpAQCAtMTcxLDcg
KzE5Niw3IEBAIGNsYXNzIFBhcmFtR2VuZXJhdG9yIHsKICAgaXRlcmF0b3IgZW5kKCkgY29uc3Qg
eyByZXR1cm4gaXRlcmF0b3IoaW1wbF8tPkVuZCgpKTsgfQogCiAgcHJpdmF0ZToKLSAgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjxjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxU
PiA+IGltcGxfOworICBsaW5rZWRfcHRyPGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+
ID4gaW1wbF87CiB9OwogCiAvLyBHZW5lcmF0ZXMgdmFsdWVzIGZyb20gYSByYW5nZSBvZiB0d28g
Y29tcGFyYWJsZSB2YWx1ZXMuIENhbiBiZSB1c2VkIHRvCkBAIC0yMDUsNyArMjMwLDcgQEAgY2xh
c3MgUmFuZ2VHZW5lcmF0b3IgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4gewog
ICAgICAgcmV0dXJuIGJhc2VfOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgQWR2YW5jZSgpIHsK
LSAgICAgIHZhbHVlXyA9IHZhbHVlXyArIHN0ZXBfOworICAgICAgdmFsdWVfID0gc3RhdGljX2Nh
c3Q8VD4odmFsdWVfICsgc3RlcF8pOwogICAgICAgaW5kZXhfKys7CiAgICAgfQogICAgIHZpcnR1
YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxUPiogQ2xvbmUoKSBjb25zdCB7CkBAIC0yNDIsNyAr
MjY3LDcgQEAgY2xhc3MgUmFuZ2VHZW5lcmF0b3IgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRl
cmZhY2U8VD4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQmIGVuZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbmNyZW1lbnRUJiBzdGVwKSB7
CiAgICAgaW50IGVuZF9pbmRleCA9IDA7Ci0gICAgZm9yIChUIGkgPSBiZWdpbjsgaSA8IGVuZDsg
aSA9IGkgKyBzdGVwKQorICAgIGZvciAoVCBpID0gYmVnaW47IGkgPCBlbmQ7IGkgPSBzdGF0aWNf
Y2FzdDxUPihpICsgc3RlcCkpCiAgICAgICBlbmRfaW5kZXgrKzsKICAgICByZXR1cm4gZW5kX2lu
ZGV4OwogICB9CkBAIC0yODUsNyArMzEwLDcgQEAgY2xhc3MgVmFsdWVzSW5JdGVyYXRvclJhbmdl
R2VuZXJhdG9yIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+IHsKICAgIHB1Ymxp
YzoKICAgICBJdGVyYXRvcihjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiogYmFzZSwK
ICAgICAgICAgICAgICB0eXBlbmFtZSBDb250YWluZXJUeXBlOjpjb25zdF9pdGVyYXRvciBpdGVy
YXRvcikKLSAgICAgICAgOiAgYmFzZV8oYmFzZSksIGl0ZXJhdG9yXyhpdGVyYXRvcikge30KKyAg
ICAgICAgOiBiYXNlXyhiYXNlKSwgaXRlcmF0b3JfKGl0ZXJhdG9yKSB7fQogICAgIHZpcnR1YWwg
fkl0ZXJhdG9yKCkge30KIAogICAgIHZpcnR1YWwgY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZh
Y2U8VD4qIEJhc2VHZW5lcmF0b3IoKSBjb25zdCB7CkBAIC0zNDYsNiArMzcxLDM3IEBAIGNsYXNz
IFZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvciA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvcklu
dGVyZmFjZTxUPiB7CiAKIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJ
TiBVU0VSIENPREUuCiAvLworLy8gRGVmYXVsdCBwYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSBnZW5l
cmF0b3IsIHJldHVybnMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUKKy8vIGludGVnZXIgdGVzdCBw
YXJhbWV0ZXIgaW5kZXguCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgorc3RkOjpzdHJpbmcg
RGVmYXVsdFBhcmFtTmFtZShjb25zdCBUZXN0UGFyYW1JbmZvPFBhcmFtVHlwZT4mIGluZm8pIHsK
KyAgTWVzc2FnZSBuYW1lX3N0cmVhbTsKKyAgbmFtZV9zdHJlYW0gPDwgaW5mby5pbmRleDsKKyAg
cmV0dXJuIG5hbWVfc3RyZWFtLkdldFN0cmluZygpOworfQorCisvLyBJTlRFUk5BTCBJTVBMRU1F
TlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgorLy8KKy8vIFBhcmFtZXRlcml6ZWQg
dGVzdCBuYW1lIG92ZXJsb2FkIGhlbHBlcnMsIHdoaWNoIGhlbHAgdGhlCisvLyBJTlNUQU5USUFU
RV9URVNUX0NBU0VfUCBtYWNybyBjaG9vc2UgYmV0d2VlbiB0aGUgZGVmYXVsdCBwYXJhbWV0ZXJp
emVkCisvLyB0ZXN0IG5hbWUgZ2VuZXJhdG9yIGFuZCB1c2VyIHBhcmFtIG5hbWUgZ2VuZXJhdG9y
LgordGVtcGxhdGUgPGNsYXNzIFBhcmFtVHlwZSwgY2xhc3MgUGFyYW1OYW1lR2VuRnVuY3Rvcj4K
K1BhcmFtTmFtZUdlbkZ1bmN0b3IgR2V0UGFyYW1OYW1lR2VuKFBhcmFtTmFtZUdlbkZ1bmN0b3Ig
ZnVuYykgeworICByZXR1cm4gZnVuYzsKK30KKwordGVtcGxhdGUgPGNsYXNzIFBhcmFtVHlwZT4K
K3N0cnVjdCBQYXJhbU5hbWVHZW5GdW5jIHsKKyAgdHlwZWRlZiBzdGQ6OnN0cmluZyBUeXBlKGNv
bnN0IFRlc3RQYXJhbUluZm88UGFyYW1UeXBlPiYpOworfTsKKwordGVtcGxhdGUgPGNsYXNzIFBh
cmFtVHlwZT4KK3R5cGVuYW1lIFBhcmFtTmFtZUdlbkZ1bmM8UGFyYW1UeXBlPjo6VHlwZSAqR2V0
UGFyYW1OYW1lR2VuKCkgeworICByZXR1cm4gRGVmYXVsdFBhcmFtTmFtZTsKK30KKworLy8gSU5U
RVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KKy8vCiAvLyBT
dG9yZXMgYSBwYXJhbWV0ZXIgdmFsdWUgYW5kIGxhdGVyIGNyZWF0ZXMgdGVzdHMgcGFyYW1ldGVy
aXplZCB3aXRoIHRoYXQKIC8vIHZhbHVlLgogdGVtcGxhdGUgPGNsYXNzIFRlc3RDbGFzcz4KQEAg
LTQxNiw3ICs0NzIsNyBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvQmFzZSB7CiAg
IHZpcnR1YWwgflBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9CYXNlKCkge30KIAogICAvLyBCYXNl
IHBhcnQgb2YgdGVzdCBjYXNlIG5hbWUgZm9yIGRpc3BsYXkgcHVycG9zZXMuCi0gIHZpcnR1YWwg
Y29uc3QgU3RyaW5nJiBHZXRUZXN0Q2FzZU5hbWUoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgY29u
c3Qgc3RyaW5nJiBHZXRUZXN0Q2FzZU5hbWUoKSBjb25zdCA9IDA7CiAgIC8vIFRlc3QgY2FzZSBp
ZCB0byB2ZXJpZnkgaWRlbnRpdHkuCiAgIHZpcnR1YWwgVHlwZUlkIEdldFRlc3RDYXNlVHlwZUlk
KCkgY29uc3QgPSAwOwogICAvLyBVbml0VGVzdCBjbGFzcyBpbnZva2VzIHRoaXMgbWV0aG9kIHRv
IHJlZ2lzdGVyIHRlc3RzIGluIHRoaXMKQEAgLTQ0OCwxMiArNTA0LDE0IEBAIGNsYXNzIFBhcmFt
ZXRlcml6ZWRUZXN0Q2FzZUluZm8gOiBwdWJsaWMgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jh
c2UgewogICB0eXBlZGVmIHR5cGVuYW1lIFRlc3RDYXNlOjpQYXJhbVR5cGUgUGFyYW1UeXBlOwog
ICAvLyBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBhcHByb3ByaWF0ZSBn
ZW5lcmF0b3IgdHlwZS4KICAgdHlwZWRlZiBQYXJhbUdlbmVyYXRvcjxQYXJhbVR5cGU+KEdlbmVy
YXRvckNyZWF0aW9uRnVuYykoKTsKKyAgdHlwZWRlZiB0eXBlbmFtZSBQYXJhbU5hbWVHZW5GdW5j
PFBhcmFtVHlwZT46OlR5cGUgUGFyYW1OYW1lR2VuZXJhdG9yRnVuYzsKIAotICBleHBsaWNpdCBQ
YXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvKGNvbnN0IGNoYXIqIG5hbWUpCi0gICAgICA6IHRlc3Rf
Y2FzZV9uYW1lXyhuYW1lKSB7fQorICBleHBsaWNpdCBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZv
KAorICAgICAgY29uc3QgY2hhciogbmFtZSwgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24pCisg
ICAgICA6IHRlc3RfY2FzZV9uYW1lXyhuYW1lKSwgY29kZV9sb2NhdGlvbl8oY29kZV9sb2NhdGlv
bikge30KIAogICAvLyBUZXN0IGNhc2UgYmFzZSBuYW1lIGZvciBkaXNwbGF5IHB1cnBvc2VzLgot
ICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgR2V0VGVzdENhc2VOYW1lKCkgY29uc3QgeyByZXR1cm4g
dGVzdF9jYXNlX25hbWVfOyB9CisgIHZpcnR1YWwgY29uc3Qgc3RyaW5nJiBHZXRUZXN0Q2FzZU5h
bWUoKSBjb25zdCB7IHJldHVybiB0ZXN0X2Nhc2VfbmFtZV87IH0KICAgLy8gVGVzdCBjYXNlIGlk
IHRvIHZlcmlmeSBpZGVudGl0eS4KICAgdmlydHVhbCBUeXBlSWQgR2V0VGVzdENhc2VUeXBlSWQo
KSBjb25zdCB7IHJldHVybiBHZXRUeXBlSWQ8VGVzdENhc2U+KCk7IH0KICAgLy8gVEVTVF9QIG1h
Y3JvIHVzZXMgQWRkVGVzdFBhdHRlcm4oKSB0byByZWNvcmQgaW5mb3JtYXRpb24KQEAgLTQ3MSwx
MSArNTI5LDEzIEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8gOiBwdWJsaWMgUGFy
YW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UgewogICB9CiAgIC8vIElOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QIG1hY3JvIHVzZXMgQWRkR2VuZXJhdG9yKCkgdG8gcmVjb3JkIGluZm9ybWF0aW9uCiAg
IC8vIGFib3V0IGEgZ2VuZXJhdG9yLgotICBpbnQgQWRkVGVzdENhc2VJbnN0YW50aWF0aW9uKGNv
bnN0IGNoYXIqIGluc3RhbnRpYXRpb25fbmFtZSwKKyAgaW50IEFkZFRlc3RDYXNlSW5zdGFudGlh
dGlvbihjb25zdCBzdHJpbmcmIGluc3RhbnRpYXRpb25fbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHZW5lcmF0b3JDcmVhdGlvbkZ1bmMqIGZ1bmMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLyogZmlsZSAqLywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgLyogbGluZSAqLykgewotICAgIGluc3RhbnRpYXRpb25zXy5w
dXNoX2JhY2soOjpzdGQ6Om1ha2VfcGFpcihpbnN0YW50aWF0aW9uX25hbWUsIGZ1bmMpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbU5hbWVHZW5lcmF0b3JGdW5jKiBuYW1l
X2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZSkgeworICAgIGluc3RhbnRp
YXRpb25zXy5wdXNoX2JhY2soCisgICAgICAgIEluc3RhbnRpYXRpb25JbmZvKGluc3RhbnRpYXRp
b25fbmFtZSwgZnVuYywgbmFtZV9mdW5jLCBmaWxlLCBsaW5lKSk7CiAgICAgcmV0dXJuIDA7ICAv
LyBSZXR1cm4gdmFsdWUgdXNlZCBvbmx5IHRvIHJ1biB0aGlzIG1ldGhvZCBpbiBuYW1lc3BhY2Ug
c2NvcGUuCiAgIH0KICAgLy8gVW5pdFRlc3QgY2xhc3MgaW52b2tlcyB0aGlzIG1ldGhvZCB0byBy
ZWdpc3RlciB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZQpAQCAtNDkwLDI2ICs1NTAsNDUgQEAgY2xh
c3MgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbyA6IHB1YmxpYyBQYXJhbWV0ZXJpemVkVGVzdENh
c2VJbmZvQmFzZSB7CiAgICAgICBmb3IgKHR5cGVuYW1lIEluc3RhbnRpYXRpb25Db250YWluZXI6
Oml0ZXJhdG9yIGdlbl9pdCA9CiAgICAgICAgICAgICAgICBpbnN0YW50aWF0aW9uc18uYmVnaW4o
KTsgZ2VuX2l0ICE9IGluc3RhbnRpYXRpb25zXy5lbmQoKTsKICAgICAgICAgICAgICAgICsrZ2Vu
X2l0KSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgaW5zdGFudGlhdGlvbl9uYW1lID0gZ2VuX2l0
LT5maXJzdDsKLSAgICAgICAgUGFyYW1HZW5lcmF0b3I8UGFyYW1UeXBlPiBnZW5lcmF0b3IoKCpn
ZW5faXQtPnNlY29uZCkoKSk7CisgICAgICAgIGNvbnN0IHN0cmluZyYgaW5zdGFudGlhdGlvbl9u
YW1lID0gZ2VuX2l0LT5uYW1lOworICAgICAgICBQYXJhbUdlbmVyYXRvcjxQYXJhbVR5cGU+IGdl
bmVyYXRvcigoKmdlbl9pdC0+Z2VuZXJhdG9yKSgpKTsKKyAgICAgICAgUGFyYW1OYW1lR2VuZXJh
dG9yRnVuYyogbmFtZV9mdW5jID0gZ2VuX2l0LT5uYW1lX2Z1bmM7CisgICAgICAgIGNvbnN0IGNo
YXIqIGZpbGUgPSBnZW5faXQtPmZpbGU7CisgICAgICAgIGludCBsaW5lID0gZ2VuX2l0LT5saW5l
OwogCi0gICAgICAgIE1lc3NhZ2UgdGVzdF9jYXNlX25hbWVfc3RyZWFtOworICAgICAgICBzdHJp
bmcgdGVzdF9jYXNlX25hbWU7CiAgICAgICAgIGlmICggIWluc3RhbnRpYXRpb25fbmFtZS5lbXB0
eSgpICkKLSAgICAgICAgICB0ZXN0X2Nhc2VfbmFtZV9zdHJlYW0gPDwgaW5zdGFudGlhdGlvbl9u
YW1lLmNfc3RyKCkgPDwgIi8iOwotICAgICAgICB0ZXN0X2Nhc2VfbmFtZV9zdHJlYW0gPDwgdGVz
dF9pbmZvLT50ZXN0X2Nhc2VfYmFzZV9uYW1lLmNfc3RyKCk7CisgICAgICAgICAgdGVzdF9jYXNl
X25hbWUgPSBpbnN0YW50aWF0aW9uX25hbWUgKyAiLyI7CisgICAgICAgIHRlc3RfY2FzZV9uYW1l
ICs9IHRlc3RfaW5mby0+dGVzdF9jYXNlX2Jhc2VfbmFtZTsKIAotICAgICAgICBpbnQgaSA9IDA7
CisgICAgICAgIHNpemVfdCBpID0gMDsKKyAgICAgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IHRl
c3RfcGFyYW1fbmFtZXM7CiAgICAgICAgIGZvciAodHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8UGFy
YW1UeXBlPjo6aXRlcmF0b3IgcGFyYW1faXQgPQogICAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
YmVnaW4oKTsKICAgICAgICAgICAgICBwYXJhbV9pdCAhPSBnZW5lcmF0b3IuZW5kKCk7ICsrcGFy
YW1faXQsICsraSkgewogICAgICAgICAgIE1lc3NhZ2UgdGVzdF9uYW1lX3N0cmVhbTsKLSAgICAg
ICAgICB0ZXN0X25hbWVfc3RyZWFtIDw8IHRlc3RfaW5mby0+dGVzdF9iYXNlX25hbWUuY19zdHIo
KSA8PCAiLyIgPDwgaTsKLSAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpNYWtlQW5kUmVn
aXN0ZXJUZXN0SW5mbygKLSAgICAgICAgICAgICAgdGVzdF9jYXNlX25hbWVfc3RyZWFtLkdldFN0
cmluZygpLmNfc3RyKCksCisKKyAgICAgICAgICBzdGQ6OnN0cmluZyBwYXJhbV9uYW1lID0gbmFt
ZV9mdW5jKAorICAgICAgICAgICAgICBUZXN0UGFyYW1JbmZvPFBhcmFtVHlwZT4oKnBhcmFtX2l0
LCBpKSk7CisKKyAgICAgICAgICBHVEVTVF9DSEVDS18oSXNWYWxpZFBhcmFtTmFtZShwYXJhbV9u
YW1lKSkKKyAgICAgICAgICAgICAgPDwgIlBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lICciIDw8IHBh
cmFtX25hbWUKKyAgICAgICAgICAgICAgPDwgIicgaXMgaW52YWxpZCwgaW4gIiA8PCBmaWxlCisg
ICAgICAgICAgICAgIDw8ICIgbGluZSAiIDw8IGxpbmUgPDwgc3RkOjplbmRsOworCisgICAgICAg
ICAgR1RFU1RfQ0hFQ0tfKHRlc3RfcGFyYW1fbmFtZXMuY291bnQocGFyYW1fbmFtZSkgPT0gMCkK
KyAgICAgICAgICAgICAgPDwgIkR1cGxpY2F0ZSBwYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSAnIiA8
PCBwYXJhbV9uYW1lCisgICAgICAgICAgICAgIDw8ICInLCBpbiAiIDw8IGZpbGUgPDwgIiBsaW5l
ICIgPDwgbGluZSA8PCBzdGQ6OmVuZGw7CisKKyAgICAgICAgICB0ZXN0X3BhcmFtX25hbWVzLmlu
c2VydChwYXJhbV9uYW1lKTsKKworICAgICAgICAgIHRlc3RfbmFtZV9zdHJlYW0gPDwgdGVzdF9p
bmZvLT50ZXN0X2Jhc2VfbmFtZSA8PCAiLyIgPDwgcGFyYW1fbmFtZTsKKyAgICAgICAgICBNYWtl
QW5kUmVnaXN0ZXJUZXN0SW5mbygKKyAgICAgICAgICAgICAgdGVzdF9jYXNlX25hbWUuY19zdHIo
KSwKICAgICAgICAgICAgICAgdGVzdF9uYW1lX3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0cigpLAot
ICAgICAgICAgICAgICAiIiwgIC8vIHRlc3RfY2FzZV9jb21tZW50Ci0gICAgICAgICAgICAgICIi
LCAgLy8gY29tbWVudDsgVE9ETyh2bGFkbEBnb29nbGUuY29tKTogcHJvdmlkZSBwYXJhbWV0ZXIg
dmFsdWUKLSAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXByZXNlbnRhdGlvbi4KKyAgICAgICAgICAgICAgTlVMTCwgIC8vIE5vIHR5cGUgcGFy
YW1ldGVyLgorICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKCpwYXJhbV9pdCkuY19zdHIoKSwK
KyAgICAgICAgICAgICAgY29kZV9sb2NhdGlvbl8sCiAgICAgICAgICAgICAgIEdldFRlc3RDYXNl
VHlwZUlkKCksCiAgICAgICAgICAgICAgIFRlc3RDYXNlOjpTZXRVcFRlc3RDYXNlLAogICAgICAg
ICAgICAgICBUZXN0Q2FzZTo6VGVhckRvd25UZXN0Q2FzZSwKQEAgLTUzMCwxNyArNjA5LDUwIEBA
IGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8gOiBwdWJsaWMgUGFyYW1ldGVyaXplZFRl
c3RDYXNlSW5mb0Jhc2UgewogICAgICAgICB0ZXN0X2Jhc2VfbmFtZShhX3Rlc3RfYmFzZV9uYW1l
KSwKICAgICAgICAgdGVzdF9tZXRhX2ZhY3RvcnkoYV90ZXN0X21ldGFfZmFjdG9yeSkge30KIAot
ICAgIGNvbnN0IFN0cmluZyB0ZXN0X2Nhc2VfYmFzZV9uYW1lOwotICAgIGNvbnN0IFN0cmluZyB0
ZXN0X2Jhc2VfbmFtZTsKKyAgICBjb25zdCBzdHJpbmcgdGVzdF9jYXNlX2Jhc2VfbmFtZTsKKyAg
ICBjb25zdCBzdHJpbmcgdGVzdF9iYXNlX25hbWU7CiAgICAgY29uc3Qgc2NvcGVkX3B0cjxUZXN0
TWV0YUZhY3RvcnlCYXNlPFBhcmFtVHlwZT4gPiB0ZXN0X21ldGFfZmFjdG9yeTsKICAgfTsKICAg
dHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGxpbmtlZF9wdHI8VGVzdEluZm8+ID4gVGVzdEluZm9Db250
YWluZXI7Ci0gIC8vIEtlZXBzIHBhaXJzIG9mIDxJbnN0YW50aWF0aW9uIG5hbWUsIFNlcXVlbmNl
IGdlbmVyYXRvciBjcmVhdGlvbiBmdW5jdGlvbj4KLSAgLy8gcmVjZWl2ZWQgZnJvbSBJTlNUQU5U
SUFURV9URVNUX0NBU0VfUCBtYWNyb3MuCi0gIHR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBHZW5lcmF0b3JDcmVhdGlvbkZ1bmMqPiA+Ci0gICAgICBJbnN0YW50aWF0aW9u
Q29udGFpbmVyOworICAvLyBSZWNvcmRzIGRhdGEgcmVjZWl2ZWQgZnJvbSBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUCBtYWNyb3M6CisgIC8vICA8SW5zdGFudGlhdGlvbiBuYW1lLCBTZXF1ZW5jZSBn
ZW5lcmF0b3IgY3JlYXRpb24gZnVuY3Rpb24sCisgIC8vICAgICBOYW1lIGdlbmVyYXRvciBmdW5j
dGlvbiwgU291cmNlIGZpbGUsIFNvdXJjZSBsaW5lPgorICBzdHJ1Y3QgSW5zdGFudGlhdGlvbklu
Zm8geworICAgICAgSW5zdGFudGlhdGlvbkluZm8oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWVfaW4s
CisgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3JDcmVhdGlvbkZ1bmMqIGdlbmVyYXRv
cl9pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtTmFtZUdlbmVyYXRvckZ1bmMqIG5h
bWVfZnVuY19pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGVfaW4s
CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZV9pbikKKyAgICAgICAgICA6IG5hbWUo
bmFtZV9pbiksCisgICAgICAgICAgICBnZW5lcmF0b3IoZ2VuZXJhdG9yX2luKSwKKyAgICAgICAg
ICAgIG5hbWVfZnVuYyhuYW1lX2Z1bmNfaW4pLAorICAgICAgICAgICAgZmlsZShmaWxlX2luKSwK
KyAgICAgICAgICAgIGxpbmUobGluZV9pbikge30KKworICAgICAgc3RkOjpzdHJpbmcgbmFtZTsK
KyAgICAgIEdlbmVyYXRvckNyZWF0aW9uRnVuYyogZ2VuZXJhdG9yOworICAgICAgUGFyYW1OYW1l
R2VuZXJhdG9yRnVuYyogbmFtZV9mdW5jOworICAgICAgY29uc3QgY2hhciogZmlsZTsKKyAgICAg
IGludCBsaW5lOworICB9OworICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8SW5zdGFudGlhdGlvbklu
Zm8+IEluc3RhbnRpYXRpb25Db250YWluZXI7CisKKyAgc3RhdGljIGJvb2wgSXNWYWxpZFBhcmFt
TmFtZShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkgeworICAgIC8vIENoZWNrIGZvciBlbXB0eSBz
dHJpbmcKKyAgICBpZiAobmFtZS5lbXB0eSgpKQorICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gQ2hlY2sgZm9yIGludmFsaWQgY2hhcmFjdGVycworICAgIGZvciAoc3RkOjpzdHJpbmc6OnNp
emVfdHlwZSBpbmRleCA9IDA7IGluZGV4IDwgbmFtZS5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAg
IGlmICghaXNhbG51bShuYW1lW2luZGV4XSkgJiYgbmFtZVtpbmRleF0gIT0gJ18nKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7CisgIH0KIAotICBjb25z
dCBTdHJpbmcgdGVzdF9jYXNlX25hbWVfOworICBjb25zdCBzdHJpbmcgdGVzdF9jYXNlX25hbWVf
OworICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbl87CiAgIFRlc3RJbmZvQ29udGFpbmVyIHRl
c3RzXzsKICAgSW5zdGFudGlhdGlvbkNvbnRhaW5lciBpbnN0YW50aWF0aW9uc187CiAKQEAgLTU2
OCw4ICs2ODAsNyBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSB7CiAgIHRl
bXBsYXRlIDxjbGFzcyBUZXN0Q2FzZT4KICAgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbzxUZXN0
Q2FzZT4qIEdldFRlc3RDYXNlUGF0dGVybkhvbGRlcigKICAgICAgIGNvbnN0IGNoYXIqIHRlc3Rf
Y2FzZV9uYW1lLAotICAgICAgY29uc3QgY2hhciogZmlsZSwKLSAgICAgIGludCBsaW5lKSB7Cisg
ICAgICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbikgewogICAgIFBhcmFtZXRlcml6ZWRUZXN0
Q2FzZUluZm88VGVzdENhc2U+KiB0eXBlZF90ZXN0X2luZm8gPSBOVUxMOwogICAgIGZvciAoVGVz
dENhc2VJbmZvQ29udGFpbmVyOjppdGVyYXRvciBpdCA9IHRlc3RfY2FzZV9pbmZvc18uYmVnaW4o
KTsKICAgICAgICAgIGl0ICE9IHRlc3RfY2FzZV9pbmZvc18uZW5kKCk7ICsraXQpIHsKQEAgLTU3
OCw4ICs2ODksOCBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSB7CiAgICAg
ICAgICAgLy8gQ29tcGxhaW4gYWJvdXQgaW5jb3JyZWN0IHVzYWdlIG9mIEdvb2dsZSBUZXN0IGZh
Y2lsaXRpZXMKICAgICAgICAgICAvLyBhbmQgdGVybWluYXRlIHRoZSBwcm9ncmFtIHNpbmNlIHdl
IGNhbm5vdCBndWFyYW50eSBjb3JyZWN0CiAgICAgICAgICAgLy8gdGVzdCBjYXNlIHNldHVwIGFu
ZCB0ZWFyLWRvd24gaW4gdGhpcyBjYXNlLgotICAgICAgICAgIFJlcG9ydEludmFsaWRUZXN0Q2Fz
ZVR5cGUodGVzdF9jYXNlX25hbWUsICBmaWxlLCBsaW5lKTsKLSAgICAgICAgICBhYm9ydCgpOwor
ICAgICAgICAgIFJlcG9ydEludmFsaWRUZXN0Q2FzZVR5cGUodGVzdF9jYXNlX25hbWUsIGNvZGVf
bG9jYXRpb24pOworICAgICAgICAgIHBvc2l4OjpBYm9ydCgpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UgYXJlIHN1cmUgdGhhdCB0aGUgb2JqZWN0IHdl
IGZvdW5kIGlzIG9mIHRoZSBzYW1lCiAgICAgICAgICAgLy8gdHlwZSB3ZSBhcmUgbG9va2luZyBm
b3IsIHNvIHdlIGRvd25jYXN0IGl0IHRvIHRoYXQgdHlwZQpAQCAtNTkxLDcgKzcwMiw4IEBAIGNs
YXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IHsKICAgICAgIH0KICAgICB9CiAgICAg
aWYgKHR5cGVkX3Rlc3RfaW5mbyA9PSBOVUxMKSB7Ci0gICAgICB0eXBlZF90ZXN0X2luZm8gPSBu
ZXcgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbzxUZXN0Q2FzZT4odGVzdF9jYXNlX25hbWUpOwor
ICAgICAgdHlwZWRfdGVzdF9pbmZvID0gbmV3IFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm88VGVz
dENhc2U+KAorICAgICAgICAgIHRlc3RfY2FzZV9uYW1lLCBjb2RlX2xvY2F0aW9uKTsKICAgICAg
IHRlc3RfY2FzZV9pbmZvc18ucHVzaF9iYWNrKHR5cGVkX3Rlc3RfaW5mbyk7CiAgICAgfQogICAg
IHJldHVybiB0eXBlZF90ZXN0X2luZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LWFyY2guaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43NGFiOTQ5MDU3YzczNGZhNDkxODhlOGQ2YmM0ZTc0YmU5MTBkYzBkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC1wb3J0LWFyY2guaApAQCAtMCwwICsxLDkzIEBACisvLyBDb3B5cmlnaHQgMjAx
NSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gVGhlIEdvb2dsZSBDKysgVGVzdGlu
ZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8KKy8vIFRoaXMgaGVhZGVyIGZpbGUgZGVmaW5l
cyB0aGUgR1RFU1RfT1NfKiBtYWNyby4KKy8vIEl0IGlzIHNlcGFyYXRlIGZyb20gZ3Rlc3QtcG9y
dC5oIHNvIHRoYXQgY3VzdG9tL2d0ZXN0LXBvcnQuaCBjYW4gaW5jbHVkZSBpdC4KKworI2lmbmRl
ZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRfQVJDSF9IXworI2RlZmlu
ZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRfQVJDSF9IXworCisvLyBE
ZXRlcm1pbmVzIHRoZSBwbGF0Zm9ybSBvbiB3aGljaCBHb29nbGUgVGVzdCBpcyBjb21waWxlZC4K
KyNpZmRlZiBfX0NZR1dJTl9fCisjIGRlZmluZSBHVEVTVF9PU19DWUdXSU4gMQorI2VsaWYgZGVm
aW5lZCBfX1NZTUJJQU4zMl9fCisjIGRlZmluZSBHVEVTVF9PU19TWU1CSUFOIDEKKyNlbGlmIGRl
ZmluZWQgX1dJTjMyCisjIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTIDEKKyMgaWZkZWYgX1dJTjMy
X1dDRQorIyAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIDEKKyMgZWxpZiBkZWZpbmVk
KF9fTUlOR1dfXykgfHwgZGVmaW5lZChfX01JTkdXMzJfXykKKyMgIGRlZmluZSBHVEVTVF9PU19X
SU5ET1dTX01JTkdXIDEKKyMgZWxpZiBkZWZpbmVkKFdJTkFQSV9GQU1JTFkpCisjICBpbmNsdWRl
IDx3aW5hcGlmYW1pbHkuaD4KKyMgIGlmIFdJTkFQSV9GQU1JTFlfUEFSVElUSU9OKFdJTkFQSV9Q
QVJUSVRJT05fREVTS1RPUCkKKyMgICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19ERVNLVE9QIDEK
KyMgIGVsaWYgV0lOQVBJX0ZBTUlMWV9QQVJUSVRJT04oV0lOQVBJX1BBUlRJVElPTl9QSE9ORV9B
UFApCisjICAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfUEhPTkUgMQorIyAgZWxpZiBXSU5BUElf
RkFNSUxZX1BBUlRJVElPTihXSU5BUElfUEFSVElUSU9OX0FQUCkKKyMgICBkZWZpbmUgR1RFU1Rf
T1NfV0lORE9XU19SVCAxCisjICBlbHNlCisgICAgLy8gV0lOQVBJX0ZBTUlMWSBkZWZpbmVkIGJ1
dCBubyBrbm93biBwYXJ0aXRpb24gbWF0Y2hlZC4KKyAgICAvLyBEZWZhdWx0IHRvIGRlc2t0b3Au
CisjICAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfREVTS1RPUCAxCisjICBlbmRpZgorIyBlbHNl
CisjICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19ERVNLVE9QIDEKKyMgZW5kaWYgIC8vIF9XSU4z
Ml9XQ0UKKyNlbGlmIGRlZmluZWQgX19BUFBMRV9fCisjIGRlZmluZSBHVEVTVF9PU19NQUMgMQor
IyBpZiBUQVJHRVRfT1NfSVBIT05FCisjICBkZWZpbmUgR1RFU1RfT1NfSU9TIDEKKyMgZW5kaWYK
KyNlbGlmIGRlZmluZWQgX19GcmVlQlNEX18KKyMgZGVmaW5lIEdURVNUX09TX0ZSRUVCU0QgMQor
I2VsaWYgZGVmaW5lZCBfX2xpbnV4X18KKyMgZGVmaW5lIEdURVNUX09TX0xJTlVYIDEKKyMgaWYg
ZGVmaW5lZCBfX0FORFJPSURfXworIyAgZGVmaW5lIEdURVNUX09TX0xJTlVYX0FORFJPSUQgMQor
IyBlbmRpZgorI2VsaWYgZGVmaW5lZCBfX01WU19fCisjIGRlZmluZSBHVEVTVF9PU19aT1MgMQor
I2VsaWYgZGVmaW5lZChfX3N1bikgJiYgZGVmaW5lZChfX1NWUjQpCisjIGRlZmluZSBHVEVTVF9P
U19TT0xBUklTIDEKKyNlbGlmIGRlZmluZWQoX0FJWCkKKyMgZGVmaW5lIEdURVNUX09TX0FJWCAx
CisjZWxpZiBkZWZpbmVkKF9faHB1eCkKKyMgZGVmaW5lIEdURVNUX09TX0hQVVggMQorI2VsaWYg
ZGVmaW5lZCBfX25hdGl2ZV9jbGllbnRfXworIyBkZWZpbmUgR1RFU1RfT1NfTkFDTCAxCisjZWxp
ZiBkZWZpbmVkIF9fT3BlbkJTRF9fCisjIGRlZmluZSBHVEVTVF9PU19PUEVOQlNEIDEKKyNlbGlm
IGRlZmluZWQgX19RTlhfXworIyBkZWZpbmUgR1RFU1RfT1NfUU5YIDEKKyNlbmRpZiAgLy8gX19D
WUdXSU5fXworCisjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1Rf
UE9SVF9BUkNIX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oCmluZGV4IGUyOWZkZTE0MWEzZGQzMjc4
NDVkODEzZWY3YTI1MDA4YzY4OTJkZWEuLjAwOTRlZDUwNzdlNjlhNTlhZmMzZjUzNWM5ZGNmYzQw
M2IzMWZiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oCkBAIC0zMCwxNSArMzAsNDMgQEAKIC8v
IEF1dGhvcnM6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAvLwogLy8gTG93LWxldmVs
IHR5cGVzIGFuZCB1dGlsaXRpZXMgZm9yIHBvcnRpbmcgR29vZ2xlIFRlc3QgdG8gdmFyaW91cwot
Ly8gcGxhdGZvcm1zLiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2Uu
ICBETyBOT1QgVVNFCi0vLyBUSEVNIElOIFVTRVIgQ09ERS4KKy8vIHBsYXRmb3Jtcy4gIEFsbCBt
YWNyb3MgZW5kaW5nIHdpdGggXyBhbmQgc3ltYm9scyBkZWZpbmVkIGluIGFuCisvLyBpbnRlcm5h
bCBuYW1lc3BhY2UgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLiAgQ29kZQor
Ly8gb3V0c2lkZSBHb29nbGUgVGVzdCBNVVNUIE5PVCBVU0UgVEhFTSBESVJFQ1RMWS4gIE1hY3Jv
cyB0aGF0IGRvbid0CisvLyBlbmQgd2l0aCBfIGFyZSBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MgcHVi
bGljIEFQSSBhbmQgY2FuIGJlIHVzZWQgYnkKKy8vIGNvZGUgb3V0c2lkZSBHb29nbGUgVGVzdC4K
Ky8vCisvLyBUaGlzIGZpbGUgaXMgZnVuZGFtZW50YWwgdG8gR29vZ2xlIFRlc3QuICBBbGwgb3Ro
ZXIgR29vZ2xlIFRlc3Qgc291cmNlCisvLyBmaWxlcyBhcmUgZXhwZWN0ZWQgdG8gI2luY2x1ZGUg
dGhpcy4gIFRoZXJlZm9yZSwgaXQgY2Fubm90ICNpbmNsdWRlCisvLyBhbnkgb3RoZXIgR29vZ2xl
IFRlc3QgaGVhZGVyLgogCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RF
U1RfUE9SVF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BP
UlRfSF8KIAotLy8gVGhlIHVzZXIgY2FuIGRlZmluZSB0aGUgZm9sbG93aW5nIG1hY3JvcyBpbiB0
aGUgYnVpbGQgc2NyaXB0IHRvCi0vLyBjb250cm9sIEdvb2dsZSBUZXN0J3MgYmVoYXZpb3IuICBJ
ZiB0aGUgdXNlciBkb2Vzbid0IGRlZmluZSBhIG1hY3JvCi0vLyBpbiB0aGlzIGxpc3QsIEdvb2ds
ZSBUZXN0IHdpbGwgZGVmaW5lIGl0LgorLy8gRW52aXJvbm1lbnQtZGVzY3JpYmluZyBtYWNyb3MK
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gR29vZ2xlIFRlc3QgY2Fu
IGJlIHVzZWQgaW4gbWFueSBkaWZmZXJlbnQgZW52aXJvbm1lbnRzLiAgTWFjcm9zIGluCisvLyB0
aGlzIHNlY3Rpb24gdGVsbCBHb29nbGUgVGVzdCB3aGF0IGtpbmQgb2YgZW52aXJvbm1lbnQgaXQg
aXMgYmVpbmcKKy8vIHVzZWQgaW4sIHN1Y2ggdGhhdCBHb29nbGUgVGVzdCBjYW4gcHJvdmlkZSBl
bnZpcm9ubWVudC1zcGVjaWZpYworLy8gZmVhdHVyZXMgYW5kIGltcGxlbWVudGF0aW9ucy4KKy8v
CisvLyBHb29nbGUgVGVzdCB0cmllcyB0byBhdXRvbWF0aWNhbGx5IGRldGVjdCB0aGUgcHJvcGVy
dGllcyBvZiBpdHMKKy8vIGVudmlyb25tZW50LCBzbyB1c2VycyB1c3VhbGx5IGRvbid0IG5lZWQg
dG8gd29ycnkgYWJvdXQgdGhlc2UKKy8vIG1hY3Jvcy4gIEhvd2V2ZXIsIHRoZSBhdXRvbWF0aWMg
ZGV0ZWN0aW9uIGlzIG5vdCBwZXJmZWN0LgorLy8gU29tZXRpbWVzIGl0J3MgbmVjZXNzYXJ5IGZv
ciBhIHVzZXIgdG8gZGVmaW5lIHNvbWUgb2YgdGhlIGZvbGxvd2luZworLy8gbWFjcm9zIGluIHRo
ZSBidWlsZCBzY3JpcHQgdG8gb3ZlcnJpZGUgR29vZ2xlIFRlc3QncyBkZWNpc2lvbnMuCisvLwor
Ly8gSWYgdGhlIHVzZXIgZG9lc24ndCBkZWZpbmUgYSBtYWNybyBpbiB0aGUgbGlzdCwgR29vZ2xl
IFRlc3Qgd2lsbAorLy8gcHJvdmlkZSBhIGRlZmF1bHQgZGVmaW5pdGlvbi4gIEFmdGVyIHRoaXMg
aGVhZGVyIGlzICNpbmNsdWRlZCwgYWxsCisvLyBtYWNyb3MgaW4gdGhpcyBsaXN0IHdpbGwgYmUg
ZGVmaW5lZCB0byBlaXRoZXIgMSBvciAwLgorLy8KKy8vIE5vdGVzIHRvIG1haW50YWluZXJzOgor
Ly8gICAtIEVhY2ggbWFjcm8gaGVyZSBpcyBhIHVzZXItdHdlYWthYmxlIGtub2I7IGRvIG5vdCBn
cm93IHRoZSBsaXN0CisvLyAgICAgbGlnaHRseS4KKy8vICAgLSBVc2UgI2lmIHRvIGtleSBvZmYg
dGhlc2UgbWFjcm9zLiAgRG9uJ3QgdXNlICNpZmRlZiBvciAiI2lmCisvLyAgICAgZGVmaW5lZCgu
Li4pIiwgd2hpY2ggd2lsbCBub3Qgd29yayBhcyB0aGVzZSBtYWNyb3MgYXJlIEFMV0FZUworLy8g
ICAgIGRlZmluZWQuCiAvLwogLy8gICBHVEVTVF9IQVNfQ0xPTkUgICAgICAgICAgLSBEZWZpbmUg
aXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgY2xvbmUoMikKIC8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlLgpAQCAtNTAsNiArNzgsOCBAQAogLy8gICBH
VEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRo
YXQgOjpzdHJpbmcKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZh
aWxhYmxlIChzb21lIHN5c3RlbXMgZGVmaW5lCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDo6d3N0cmluZywgd2hpY2ggaXMgZGlmZmVyZW50IHRvIHN0ZDo6d3N0cmluZykuCisvLyAg
IEdURVNUX0hBU19QT1NJWF9SRSAgICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUg
dGhhdCBQT1NJWCByZWd1bGFyCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJl
c3Npb25zIGFyZS9hcmVuJ3QgYXZhaWxhYmxlLgogLy8gICBHVEVTVF9IQVNfUFRIUkVBRCAgICAg
ICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgPHB0aHJlYWQuaD4KIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlLgogLy8gICBHVEVT
VF9IQVNfUlRUSSAgICAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQg
UlRUSSBpcy9pc24ndApAQCAtNjIsMTAgKzkyLDE2IEBACiAvLyAgIEdURVNUX0hBU19TRUggICAg
ICAgICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUKIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIgc3VwcG9ydHMgTWljcm9zb2Z0J3Mg
IlN0cnVjdHVyZWQKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uIEhh
bmRsaW5nIi4KKy8vICAgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgorLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHdoZXRoZXIg
dGhlCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtIHN1cHBvcnRzIEkv
TyBzdHJlYW0gcmVkaXJlY3Rpb24gdXNpbmcKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZHVwKCkgYW5kIGR1cDIoKS4KIC8vICAgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgIC0gRGVm
aW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB3aGV0aGVyIEdvb2dsZQogLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXN0J3Mgb3duIHRyMSB0dXBsZSBpbXBsZW1lbnRhdGlvbiBzaG91
bGQgYmUKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZC4gIFVudXNlZCB3aGVu
IHRoZSB1c2VyIHNldHMKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfSEFT
X1RSMV9UVVBMRSB0byAwLgorLy8gICBHVEVTVF9MQU5HX0NYWDExICAgICAgICAgLSBEZWZpbmUg
aXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgR29vZ2xlIFRlc3QKKy8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaXMgYnVpbGRpbmcgaW4gQysrMTEvQysrOTggbW9kZS4KIC8vICAgR1RF
U1RfTElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtIERlZmluZSB0byAxIHdoZW4gY29tcGlsaW5nIHRlc3RzIHRoYXQgdXNlCiAvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdvb2dsZSBUZXN0IGFzIGEgc2hhcmVkIGxpYnJhcnkgKGtu
b3duIGFzCkBAIC03NCwyMiArMTEwLDM0IEBACiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtIERlZmluZSB0byAxIHdoZW4gY29tcGlsaW5nIEdvb2dsZSBUZXN0IGl0c2VsZgogLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBhIHNoYXJlZCBsaWJyYXJ5LgogCi0vLyBUaGlz
IGhlYWRlciBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgdXRpbGl0aWVzOgorLy8gUGxhdGZvcm0taW5k
aWNhdGluZyBtYWNyb3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWFj
cm9zIGluZGljYXRpbmcgdGhlIHBsYXRmb3JtIG9uIHdoaWNoIEdvb2dsZSBUZXN0IGlzIGJlaW5n
IHVzZWQKKy8vIChhIG1hY3JvIGlzIGRlZmluZWQgdG8gMSBpZiBjb21waWxlZCBvbiB0aGUgZ2l2
ZW4gcGxhdGZvcm07CisvLyBvdGhlcndpc2UgVU5ERUZJTkVEIC0tIGl0J3MgbmV2ZXIgZGVmaW5l
ZCB0byAwLikuICBHb29nbGUgVGVzdAorLy8gZGVmaW5lcyB0aGVzZSBtYWNyb3MgYXV0b21hdGlj
YWxseS4gIENvZGUgb3V0c2lkZSBHb29nbGUgVGVzdCBNVVNUCisvLyBOT1QgZGVmaW5lIHRoZW0u
CiAvLwotLy8gTWFjcm9zIGluZGljYXRpbmcgdGhlIGN1cnJlbnQgcGxhdGZvcm0gKGRlZmluZWQg
dG8gMSBpZiBjb21waWxlZCBvbgotLy8gdGhlIGdpdmVuIHBsYXRmb3JtOyBvdGhlcndpc2UgdW5k
ZWZpbmVkKToKIC8vICAgR1RFU1RfT1NfQUlYICAgICAgLSBJQk0gQUlYCiAvLyAgIEdURVNUX09T
X0NZR1dJTiAgIC0gQ3lnd2luCi0vLyAgIEdURVNUX09TX0xJTlVYICAgIC0gTGludXgKIC8vICAg
R1RFU1RfT1NfRlJFRUJTRCAgLSBGcmVlQlNECi0vLyAgIEdURVNUX09TX0hVUkQgICAgIC0gR05V
L0h1cmQKKy8vICAgR1RFU1RfT1NfSFBVWCAgICAgLSBIUC1VWAorLy8gICBHVEVTVF9PU19MSU5V
WCAgICAtIExpbnV4CisvLyAgICAgR1RFU1RfT1NfTElOVVhfQU5EUk9JRCAtIEdvb2dsZSBBbmRy
b2lkCiAvLyAgIEdURVNUX09TX01BQyAgICAgIC0gTWFjIE9TIFgKKy8vICAgICBHVEVTVF9PU19J
T1MgICAgLSBpT1MKKy8vICAgR1RFU1RfT1NfTkFDTCAgICAgLSBHb29nbGUgTmF0aXZlIENsaWVu
dCAoTmFDbCkKKy8vICAgR1RFU1RfT1NfT1BFTkJTRCAgLSBPcGVuQlNECisvLyAgIEdURVNUX09T
X1FOWCAgICAgIC0gUU5YCiAvLyAgIEdURVNUX09TX1NPTEFSSVMgIC0gU3VuIFNvbGFyaXMKIC8v
ICAgR1RFU1RfT1NfU1lNQklBTiAgLSBTeW1iaWFuCiAvLyAgIEdURVNUX09TX1dJTkRPV1MgIC0g
V2luZG93cyAoRGVza3RvcCwgTWluR1csIG9yIE1vYmlsZSkKIC8vICAgICBHVEVTVF9PU19XSU5E
T1dTX0RFU0tUT1AgIC0gV2luZG93cyBEZXNrdG9wCiAvLyAgICAgR1RFU1RfT1NfV0lORE9XU19N
SU5HVyAgICAtIE1pbkdXCiAvLyAgICAgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgICAtIFdpbmRv
d3MgTW9iaWxlCisvLyAgICAgR1RFU1RfT1NfV0lORE9XU19QSE9ORSAgICAtIFdpbmRvd3MgUGhv
bmUKKy8vICAgICBHVEVTVF9PU19XSU5ET1dTX1JUICAgICAgIC0gV2luZG93cyBTdG9yZSBBcHAv
V2luUlQKIC8vICAgR1RFU1RfT1NfWk9TICAgICAgLSB6L09TCiAvLwogLy8gQW1vbmcgdGhlIHBs
YXRmb3JtcywgQ3lnd2luLCBMaW51eCwgTWF4IE9TIFgsIGFuZCBXaW5kb3dzIGhhdmUgdGhlCkBA
IC05OSwyMCArMTQ3LDUwIEBACiAvLyBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5j
b20gKHBhdGNoZXMgZm9yIGZpeGluZyB0aGVtIGFyZQogLy8gZXZlbiBtb3JlIHdlbGNvbWUhKS4K
IC8vCi0vLyBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgdGhhdCBub25lIG9mIHRoZSBHVEVTVF9P
U18qIG1hY3JvcyBhcmUgZGVmaW5lZC4KKy8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgbm9uZSBvZiB0
aGUgR1RFU1RfT1NfKiBtYWNyb3MgYXJlIGRlZmluZWQuCisKKy8vIEZlYXR1cmUtaW5kaWNhdGlu
ZyBtYWNyb3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNYWNyb3MgaW5k
aWNhdGluZyB3aGljaCBHb29nbGUgVGVzdCBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlIChhIG1hY3Jv
CisvLyBpcyBkZWZpbmVkIHRvIDEgaWYgdGhlIGNvcnJlc3BvbmRpbmcgZmVhdHVyZSBpcyBzdXBw
b3J0ZWQ7CisvLyBvdGhlcndpc2UgVU5ERUZJTkVEIC0tIGl0J3MgbmV2ZXIgZGVmaW5lZCB0byAw
LikuICBHb29nbGUgVGVzdAorLy8gZGVmaW5lcyB0aGVzZSBtYWNyb3MgYXV0b21hdGljYWxseS4g
IENvZGUgb3V0c2lkZSBHb29nbGUgVGVzdCBNVVNUCisvLyBOT1QgZGVmaW5lIHRoZW0uCisvLwor
Ly8gVGhlc2UgbWFjcm9zIGFyZSBwdWJsaWMgc28gdGhhdCBwb3J0YWJsZSB0ZXN0cyBjYW4gYmUg
d3JpdHRlbi4KKy8vIFN1Y2ggdGVzdHMgdHlwaWNhbGx5IHN1cnJvdW5kIGNvZGUgdXNpbmcgYSBm
ZWF0dXJlIHdpdGggYW4gI2lmCisvLyB3aGljaCBjb250cm9scyB0aGF0IGNvZGUuICBGb3IgZXhh
bXBsZToKKy8vCisvLyAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKy8vICAgRVhQRUNUX0RFQVRI
KERvU29tZXRoaW5nRGVhZGx5KCkpOworLy8gI2VuZGlmCiAvLwotLy8gTWFjcm9zIGluZGljYXRp
bmcgYXZhaWxhYmxlIEdvb2dsZSBUZXN0IGZlYXR1cmVzIChkZWZpbmVkIHRvIDEgaWYKLS8vIHRo
ZSBjb3JyZXNwb25kaW5nIGZlYXR1cmUgaXMgc3VwcG9ydGVkOyBvdGhlcndpc2UgdW5kZWZpbmVk
KToKIC8vICAgR1RFU1RfSEFTX0NPTUJJTkUgICAgICAtIHRoZSBDb21iaW5lKCkgZnVuY3Rpb24g
KGZvciB2YWx1ZS1wYXJhbWV0ZXJpemVkCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0cykKIC8vICAgR1RFU1RfSEFTX0RFQVRIX1RFU1QgICAtIGRlYXRoIHRlc3RzCiAvLyAgIEdU
RVNUX0hBU19QQVJBTV9URVNUICAgLSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzCiAvLyAgIEdU
RVNUX0hBU19UWVBFRF9URVNUICAgLSB0eXBlZCB0ZXN0cwogLy8gICBHVEVTVF9IQVNfVFlQRURf
VEVTVF9QIC0gdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzCi0vLyAgIEdURVNUX1VTRVNfUE9TSVhf
UkUgICAgLSBlbmhhbmNlZCBQT1NJWCByZWdleCBpcyB1c2VkLgorLy8gICBHVEVTVF9JU19USFJF
QURTQUZFICAgIC0gR29vZ2xlIFRlc3QgaXMgdGhyZWFkLXNhZmUuCisvLyAgIEdURVNUX1VTRVNf
UE9TSVhfUkUgICAgLSBlbmhhbmNlZCBQT1NJWCByZWdleCBpcyB1c2VkLiBEbyBub3QgY29uZnVz
ZSB3aXRoCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9IQVNfUE9TSVhfUkUg
KHNlZSBhYm92ZSkgd2hpY2ggdXNlcnMgY2FuCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWZpbmUgdGhlbXNlbHZlcy4KIC8vICAgR1RFU1RfVVNFU19TSU1QTEVfUkUgICAtIG91ciBv
d24gc2ltcGxlIHJlZ2V4IGlzIHVzZWQ7CiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGUgYWJvdmUgdHdvIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCiAvLyAgIEdURVNUX0NBTl9DT01Q
QVJFX05VTEwgLSBhY2NlcHRzIHVudHlwZWQgTlVMTCBpbiBFWFBFQ1RfRVEoKS4KKworLy8gTWlz
YyBwdWJsaWMgbWFjcm9zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyAgIEdURVNUX0ZM
QUcoZmxhZ19uYW1lKSAgLSByZWZlcmVuY2VzIHRoZSB2YXJpYWJsZSBjb3JyZXNwb25kaW5nIHRv
CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZ2l2ZW4gR29vZ2xlIFRlc3QgZmxh
Zy4KKworLy8gSW50ZXJuYWwgdXRpbGl0aWVzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisv
LyBUaGUgZm9sbG93aW5nIG1hY3JvcyBhbmQgdXRpbGl0aWVzIGFyZSBmb3IgR29vZ2xlIFRlc3Qn
cyBJTlRFUk5BTAorLy8gdXNlIG9ubHkuICBDb2RlIG91dHNpZGUgR29vZ2xlIFRlc3QgTVVTVCBO
T1QgVVNFIFRIRU0gRElSRUNUTFkuCiAvLwogLy8gTWFjcm9zIGZvciBiYXNpYyBDKysgY29kaW5n
OgogLy8gICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyAtIGZvciBkaXNhYmxpbmcgYSBn
Y2Mgd2FybmluZy4KQEAgLTEyMSwyNCArMTk5LDMyIEBACiAvLyAgIEdURVNUX0RJU0FMTE9XX0FT
U0lHTl8gICAtIGRpc2FibGVzIG9wZXJhdG9yPS4KIC8vICAgR1RFU1RfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOXyAtIGRpc2FibGVzIGNvcHkgY3RvciBhbmQgb3BlcmF0b3I9LgogLy8gICBHVEVT
VF9NVVNUX1VTRV9SRVNVTFRfICAgLSBkZWNsYXJlcyB0aGF0IGEgZnVuY3Rpb24ncyByZXN1bHQg
bXVzdCBiZSB1c2VkLgorLy8gICBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BVU0hfIC0g
c3RhcnQgY29kZSBzZWN0aW9uIHdoZXJlIE1TVkMgQzQxMjcgaXMKKy8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzZWQgKGNvbnN0YW50IGNvbmRpdGlvbmFs
KS4KKy8vICAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QT1BfICAtIGZpbmlzaCBjb2Rl
IHNlY3Rpb24gd2hlcmUgTVNWQyBDNDEyNworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXMgc3VwcHJlc3NlZC4KKy8vCisvLyBDKysxMSBmZWF0dXJlIHdyYXBwZXJz
OgorLy8KKy8vICAgdGVzdGluZzo6aW50ZXJuYWw6Om1vdmUgIC0gcG9ydGFiaWxpdHkgd3JhcHBl
ciBmb3Igc3RkOjptb3ZlLgogLy8KIC8vIFN5bmNocm9uaXphdGlvbjoKIC8vICAgTXV0ZXgsIE11
dGV4TG9jaywgVGhyZWFkTG9jYWwsIEdldFRocmVhZENvdW50KCkKLS8vICAgICAgICAgICAgICAg
ICAgLSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcy4KLS8vICAgR1RFU1RfSVNfVEhSRUFEU0FG
RSAtIGRlZmluZWQgdG8gMSB0byBpbmRpY2F0ZSB0aGF0IHRoZSBhYm92ZQotLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaGF2ZSByZWFsIGltcGxl
bWVudGF0aW9ucwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIEdvb2dsZSBUZXN0IGlz
IHRocmVhZC1zYWZlOyBvciAwIG90aGVyd2lzZS4KKy8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC0gc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMuCiAvLwogLy8gVGVtcGxhdGUgbWV0YSBw
cm9ncmFtbWluZzoKIC8vICAgaXNfcG9pbnRlciAgICAgLSBhcyBpbiBUUjE7IG5lZWRlZCBvbiBT
eW1iaWFuIGFuZCBJQk0gWEwgQy9DKysgb25seS4KKy8vICAgSXRlcmF0b3JUcmFpdHMgLSBwYXJ0
aWFsIGltcGxlbWVudGF0aW9uIG9mIHN0ZDo6aXRlcmF0b3JfdHJhaXRzLCB3aGljaAorLy8gICAg
ICAgICAgICAgICAgICAgIGlzIG5vdCBhdmFpbGFibGUgaW4gbGliQ3N0ZCB3aGVuIGNvbXBpbGVk
IHdpdGggU3VuIEMrKy4KIC8vCiAvLyBTbWFydCBwb2ludGVyczoKIC8vICAgc2NvcGVkX3B0ciAg
ICAgLSBhcyBpbiBUUjIuCiAvLwogLy8gUmVndWxhciBleHByZXNzaW9uczoKIC8vICAgUkUgICAg
ICAgICAgICAgLSBhIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24gY2xhc3MgdXNpbmcgdGhlIFBP
U0lYCi0vLyAgICAgICAgICAgICAgICAgICAgRXh0ZW5kZWQgUmVndWxhciBFeHByZXNzaW9uIHN5
bnRheC4gIE5vdCBhdmFpbGFibGUgb24KLS8vICAgICAgICAgICAgICAgICAgICBXaW5kb3dzLgor
Ly8gICAgICAgICAgICAgICAgICAgIEV4dGVuZGVkIFJlZ3VsYXIgRXhwcmVzc2lvbiBzeW50YXgg
b24gVU5JWC1saWtlCisvLyAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm1zLCBvciBhIHJlZHVj
ZWQgcmVndWxhciBleGNlcHRpb24gc3ludGF4IG9uCisvLyAgICAgICAgICAgICAgICAgICAgb3Ro
ZXIgcGxhdGZvcm1zLCBpbmNsdWRpbmcgV2luZG93cy4KIC8vCiAvLyBMb2dnaW5nOgogLy8gICBH
VEVTVF9MT0dfKCkgICAtIGxvZ3MgbWVzc2FnZXMgYXQgdGhlIHNwZWNpZmllZCBzZXZlcml0eSBs
ZXZlbC4KQEAgLTE2MCwxMCArMjQ2LDkgQEAKIC8vICAgQmlnZ2VzdEludCAgICAgLSB0aGUgYmln
Z2VzdCBzaWduZWQgaW50ZWdlciB0eXBlLgogLy8KIC8vIENvbW1hbmQtbGluZSB1dGlsaXRpZXM6
Ci0vLyAgIEdURVNUX0ZMQUcoKSAgICAgICAtIHJlZmVyZW5jZXMgYSBmbGFnLgogLy8gICBHVEVT
VF9ERUNMQVJFXyooKSAgLSBkZWNsYXJlcyBhIGZsYWcuCiAvLyAgIEdURVNUX0RFRklORV8qKCkg
ICAtIGRlZmluZXMgYSBmbGFnLgotLy8gICBHZXRBcmd2cygpICAgICAgICAgLSByZXR1cm5zIHRo
ZSBjb21tYW5kIGxpbmUgYXMgYSB2ZWN0b3Igb2Ygc3RyaW5ncy4KKy8vICAgR2V0SW5qZWN0YWJs
ZUFyZ3ZzKCkgLSByZXR1cm5zIHRoZSBjb21tYW5kIGxpbmUgYXMgYSB2ZWN0b3Igb2Ygc3RyaW5n
cy4KIC8vCiAvLyBFbnZpcm9ubWVudCB2YXJpYWJsZSB1dGlsaXRpZXM6CiAvLyAgIEdldEVudigp
ICAgICAgICAgICAgIC0gZ2V0cyB0aGUgdmFsdWUgb2YgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUu
CkBAIC0xNzEsMTUxICsyNTYsMjU2IEBACiAvLyAgIEludDMyRnJvbUdUZXN0RW52KCkgIC0gcGFy
c2VzIGFuIEludDMyIGVudmlyb25tZW50IHZhcmlhYmxlLgogLy8gICBTdHJpbmdGcm9tR1Rlc3RF
bnYoKSAtIHBhcnNlcyBhIHN0cmluZyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KIAotI2luY2x1ZGUg
PHN0ZGRlZi5oPiAgLy8gRm9yIHB0cmRpZmZfdAorI2luY2x1ZGUgPGN0eXBlLmg+ICAgLy8gZm9y
IGlzc3BhY2UsIGV0YworI2luY2x1ZGUgPHN0ZGRlZi5oPiAgLy8gZm9yIHB0cmRpZmZfdAogI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+
CiAjaWZuZGVmIF9XSU4zMl9XQ0UKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgorIyBpbmNsdWRlIDxz
eXMvdHlwZXMuaD4KKyMgaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNlbmRpZiAgLy8gIV9XSU4zMl9X
Q0UKIAotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgotI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNy
b3MuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTRXhwb3J0TWFjcm9zLmg+Ci0jaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2lmIGRlZmluZWQg
X19BUFBMRV9fCisjIGluY2x1ZGUgPEF2YWlsYWJpbGl0eU1hY3Jvcy5oPgorIyBpbmNsdWRlIDxU
YXJnZXRDb25kaXRpb25hbHMuaD4KKyNlbmRpZgogCisjaW5jbHVkZSA8YWxnb3JpdGhtPiAgLy8g
Tk9MSU5UCiAjaW5jbHVkZSA8aW9zdHJlYW0+ICAvLyBOT0xJTlQKICNpbmNsdWRlIDxzc3RyZWFt
PiAgLy8gTk9MSU5UCiAjaW5jbHVkZSA8c3RyaW5nPiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8dXRp
bGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+ICAvLyBOT0xJTlQKKworI2luY2x1ZGUgImd0ZXN0L2lu
dGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2N1c3Rv
bS9ndGVzdC1wb3J0LmgiCiAKLSNkZWZpbmUgR1RFU1RfREVWX0VNQUlMXyAiZ29vZ2xldGVzdGZy
YW1ld29ya0BAZ29vZ2xlZ3JvdXBzLmNvbSIKLSNkZWZpbmUgR1RFU1RfRkxBR19QUkVGSVhfICJn
dGVzdF8iCi0jZGVmaW5lIEdURVNUX0ZMQUdfUFJFRklYX0RBU0hfICJndGVzdC0iCi0jZGVmaW5l
IEdURVNUX0ZMQUdfUFJFRklYX1VQUEVSXyAiR1RFU1RfIgotI2RlZmluZSBHVEVTVF9OQU1FXyAi
R29vZ2xlIFRlc3QiCi0jZGVmaW5lIEdURVNUX1BST0pFQ1RfVVJMXyAiaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wL2dvb2dsZXRlc3QvIgorI2lmICFkZWZpbmVkKEdURVNUX0RFVl9FTUFJTF8pCisj
IGRlZmluZSBHVEVTVF9ERVZfRU1BSUxfICJnb29nbGV0ZXN0ZnJhbWV3b3JrQEBnb29nbGVncm91
cHMuY29tIgorIyBkZWZpbmUgR1RFU1RfRkxBR19QUkVGSVhfICJndGVzdF8iCisjIGRlZmluZSBH
VEVTVF9GTEFHX1BSRUZJWF9EQVNIXyAiZ3Rlc3QtIgorIyBkZWZpbmUgR1RFU1RfRkxBR19QUkVG
SVhfVVBQRVJfICJHVEVTVF8iCisjIGRlZmluZSBHVEVTVF9OQU1FXyAiR29vZ2xlIFRlc3QiCisj
IGRlZmluZSBHVEVTVF9QUk9KRUNUX1VSTF8gImh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29v
Z2xldGVzdC8iCisjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0RFVl9FTUFJTF8pCisKKyNpZiAh
ZGVmaW5lZChHVEVTVF9JTklUX0dPT0dMRV9URVNUX05BTUVfKQorIyBkZWZpbmUgR1RFU1RfSU5J
VF9HT09HTEVfVEVTVF9OQU1FXyAidGVzdGluZzo6SW5pdEdvb2dsZVRlc3QiCisjZW5kaWYgIC8v
ICFkZWZpbmVkKEdURVNUX0lOSVRfR09PR0xFX1RFU1RfTkFNRV8pCiAKIC8vIERldGVybWluZXMg
dGhlIHZlcnNpb24gb2YgZ2NjIHRoYXQgaXMgdXNlZCB0byBjb21waWxlIHRoaXMuCiAjaWZkZWYg
X19HTlVDX18KIC8vIDQwMzAyIG1lYW5zIHZlcnNpb24gNC4zLjIuCi0jZGVmaW5lIEdURVNUX0dD
Q19WRVJfIFwKKyMgZGVmaW5lIEdURVNUX0dDQ19WRVJfIFwKICAgICAoX19HTlVDX18qMTAwMDAg
KyBfX0dOVUNfTUlOT1JfXyoxMDAgKyBfX0dOVUNfUEFUQ0hMRVZFTF9fKQogI2VuZGlmICAvLyBf
X0dOVUNfXwogCi0vLyBEZXRlcm1pbmVzIHRoZSBwbGF0Zm9ybSBvbiB3aGljaCBHb29nbGUgVGVz
dCBpcyBjb21waWxlZC4KLSNpZmRlZiBfX0NZR1dJTl9fCi0jZGVmaW5lIEdURVNUX09TX0NZR1dJ
TiAxCi0jZWxpZiBkZWZpbmVkIF9fU1lNQklBTjMyX18KLSNkZWZpbmUgR1RFU1RfT1NfU1lNQklB
TiAxCi0jZWxpZiBkZWZpbmVkIF9XSU4zMgotI2RlZmluZSBHVEVTVF9PU19XSU5ET1dTIDEKLSNp
ZmRlZiBfV0lOMzJfV0NFCi0jZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIDEKLSNlbGlm
IGRlZmluZWQoX19NSU5HV19fKSB8fCBkZWZpbmVkKF9fTUlOR1czMl9fKQotI2RlZmluZSBHVEVT
VF9PU19XSU5ET1dTX01JTkdXIDEKKy8vIE1hY3JvcyBmb3IgZGlzYWJsaW5nIE1pY3Jvc29mdCBW
aXN1YWwgQysrIHdhcm5pbmdzLgorLy8KKy8vICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1Nf
UFVTSF8oNDgwMCA0Mzg1KQorLy8gICAvKiBjb2RlIHRoYXQgdHJpZ2dlcnMgd2FybmluZ3MgQzQ4
MDAgYW5kIEM0Mzg1ICovCisvLyAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQor
I2lmIF9NU0NfVkVSID49IDE1MDAKKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdT
X1BVU0hfKHdhcm5pbmdzKSBcCisgICAgX19wcmFnbWEod2FybmluZyhwdXNoKSkgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgX19wcmFnbWEod2FybmluZyhkaXNhYmxlOiB3YXJuaW5ncykp
CisjIGRlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkgICAgICAgICAgXAor
ICAgIF9fcHJhZ21hKHdhcm5pbmcocG9wKSkKKyNlbHNlCisvLyBPbGRlciB2ZXJzaW9ucyBvZiBN
U1ZDIGRvbid0IGhhdmUgX19wcmFnbWEuCisjIGRlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19XQVJO
SU5HU19QVVNIXyh3YXJuaW5ncykKKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdT
X1BPUF8oKQorI2VuZGlmCisKKyNpZm5kZWYgR1RFU1RfTEFOR19DWFgxMQorLy8gZ2NjIGFuZCBj
bGFuZyBkZWZpbmUgX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18gd2hlbgorLy8gLXN0ZD17Yyxn
bnV9Kyt7MHgsMTF9IGlzIHBhc3NlZC4gIFRoZSBDKysxMSBzdGFuZGFyZCBzcGVjaWZpZXMgYQor
Ly8gdmFsdWUgZm9yIF9fY3BsdXNwbHVzLCBhbmQgcmVjZW50IHZlcnNpb25zIG9mIGNsYW5nLCBn
Y2MsIGFuZAorLy8gcHJvYmFibHkgb3RoZXIgY29tcGlsZXJzIHNldCB0aGF0IHRvbyBpbiBDKysx
MSBtb2RlLgorIyBpZiBfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXyB8fCBfX2NwbHVzcGx1cyA+
PSAyMDExMDNMCisvLyBDb21waWxpbmcgaW4gYXQgbGVhc3QgQysrMTEgbW9kZS4KKyMgIGRlZmlu
ZSBHVEVTVF9MQU5HX0NYWDExIDEKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0xBTkdfQ1hYMTEg
MAorIyBlbmRpZgorI2VuZGlmCisKKy8vIERpc3RpbmN0IGZyb20gQysrMTEgbGFuZ3VhZ2Ugc3Vw
cG9ydCwgc29tZSBlbnZpcm9ubWVudHMgZG9uJ3QgcHJvdmlkZQorLy8gcHJvcGVyIEMrKzExIGxp
YnJhcnkgc3VwcG9ydC4gTm90YWJseSwgaXQncyBwb3NzaWJsZSB0byBidWlsZCBpbgorLy8gQysr
MTEgbW9kZSB3aGVuIHRhcmdldGluZyBNYWMgT1MgWCAxMC42LCB3aGljaCBoYXMgYW4gb2xkIGxp
YnN0ZGMrKworLy8gd2l0aCBubyBDKysxMSBzdXBwb3J0LgorLy8KKy8vIGxpYnN0ZGMrKyBoYXMg
c3VmZmljaWVudCBDKysxMSBzdXBwb3J0IGFzIG9mIEdDQyA0LjYuMCwgX19HTElCQ1hYX18KKy8v
IDIwMTEwMzI1LCBidXQgbWFpbnRlbmFuY2UgcmVsZWFzZXMgaW4gdGhlIDQuNCBhbmQgNC41IHNl
cmllcyBmb2xsb3dlZAorLy8gdGhpcyBkYXRlLCBzbyBjaGVjayBmb3IgdGhvc2UgdmVyc2lvbnMg
YnkgdGhlaXIgZGF0ZSBzdGFtcHMuCisvLyBodHRwczovL2djYy5nbnUub3JnL29ubGluZWRvY3Mv
bGlic3RkYysrL21hbnVhbC9hYmkuaHRtbCNhYmkudmVyc2lvbmluZworI2lmIEdURVNUX0xBTkdf
Q1hYMTEgJiYgXAorICAgICghZGVmaW5lZChfX0dMSUJDWFhfXykgfHwgKCBcCisgICAgICAgIF9f
R0xJQkNYWF9fID49IDIwMTEwMzI1dWwgJiYgIC8qIEdDQyA+PSA0LjYuMCAqLyBcCisgICAgICAg
IC8qIEJsYWNrbGlzdCBvZiBwYXRjaCByZWxlYXNlcyBvZiBvbGRlciBicmFuY2hlczogKi8gXAor
ICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDExMDQxNnVsICYmICAvKiBHQ0MgNC40LjYgKi8gXAor
ICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDEyMDMxM3VsICYmICAvKiBHQ0MgNC40LjcgKi8gXAor
ICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDExMDQyOHVsICYmICAvKiBHQ0MgNC41LjMgKi8gXAor
ICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDEyMDcwMnVsKSkgICAvKiBHQ0MgNC41LjQgKi8KKyMg
ZGVmaW5lIEdURVNUX1NURExJQl9DWFgxMSAxCisjZW5kaWYKKworLy8gT25seSB1c2UgQysrMTEg
bGlicmFyeSBmZWF0dXJlcyBpZiB0aGUgbGlicmFyeSBwcm92aWRlcyB0aGVtLgorI2lmIEdURVNU
X1NURExJQl9DWFgxMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9CRUdJTl9BTkRfRU5EXyAxCisj
IGRlZmluZSBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8gMQorIyBkZWZpbmUgR1RFU1RfSEFT
X1NURF9GVU5DVElPTl8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9JTklUSUFMSVpFUl9MSVNU
XyAxCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX01PVkVfIDEKKyMgZGVmaW5lIEdURVNUX0hBU19T
VERfU0hBUkVEX1BUUl8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9UWVBFX1RSQUlUU18gMQor
IyBkZWZpbmUgR1RFU1RfSEFTX1NURF9VTklRVUVfUFRSXyAxCisjZW5kaWYKKworLy8gQysrMTEg
c3BlY2lmaWVzIHRoYXQgPHR1cGxlPiBwcm92aWRlcyBzdGQ6OnR1cGxlLgorLy8gU29tZSBwbGF0
Zm9ybXMgc3RpbGwgbWlnaHQgbm90IGhhdmUgaXQsIGhvd2V2ZXIuCisjaWYgR1RFU1RfTEFOR19D
WFgxMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9UVVBMRV8gMQorIyBpZiBkZWZpbmVkKF9fY2xh
bmdfXykKKy8vIEluc3BpcmVkIGJ5IGh0dHA6Ly9jbGFuZy5sbHZtLm9yZy9kb2NzL0xhbmd1YWdl
RXh0ZW5zaW9ucy5odG1sI19faGFzX2luY2x1ZGUKKyMgIGlmIGRlZmluZWQoX19oYXNfaW5jbHVk
ZSkgJiYgIV9faGFzX2luY2x1ZGUoPHR1cGxlPikKKyMgICB1bmRlZiBHVEVTVF9IQVNfU1REX1RV
UExFXworIyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorLy8gSW5zcGlyZWQgYnkg
Ym9vc3QvY29uZmlnL3N0ZGxpYi9kaW5rdW13YXJlLmhwcAorIyAgaWYgZGVmaW5lZChfQ1BQTElC
X1ZFUikgJiYgX0NQUExJQl9WRVIgPCA1MjAKKyMgICB1bmRlZiBHVEVTVF9IQVNfU1REX1RVUExF
XworIyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9fR0xJQkNYWF9fKQorLy8gSW5zcGlyZWQgYnkg
Ym9vc3QvY29uZmlnL3N0ZGxpYi9saWJzdGRjcHAzLmhwcCwKKy8vIGh0dHA6Ly9nY2MuZ251Lm9y
Zy9nY2MtNC4yL2NoYW5nZXMuaHRtbCBhbmQKKy8vIGh0dHA6Ly9nY2MuZ251Lm9yZy9vbmxpbmVk
b2NzL2xpYnN0ZGMrKy9tYW51YWwvYmswMXB0MDFjaDAxLmh0bWwjbWFudWFsLmludHJvLnN0YXR1
cy5zdGFuZGFyZC4yMDB4CisjICBpZiBfX0dOVUNfXyA8IDQgfHwgKF9fR05VQ19fID09IDQgJiYg
X19HTlVDX01JTk9SX18gPCAyKQorIyAgIHVuZGVmIEdURVNUX0hBU19TVERfVFVQTEVfCisjICBl
bmRpZgorIyBlbmRpZgorI2VuZGlmCisKKy8vIEJyaW5ncyBpbiBkZWZpbml0aW9ucyBmb3IgZnVu
Y3Rpb25zIHVzZWQgaW4gdGhlIHRlc3Rpbmc6OmludGVybmFsOjpwb3NpeAorLy8gbmFtZXNwYWNl
IChyZWFkLCB3cml0ZSwgY2xvc2UsIGNoZGlyLCBpc2F0dHksIHN0YXQpLiBXZSBkbyBub3QgY3Vy
cmVudGx5CisvLyB1c2UgdGhlbSBvbiBXaW5kb3dzIE1vYmlsZS4KKyNpZiBHVEVTVF9PU19XSU5E
T1dTCisjIGlmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyAgaW5jbHVkZSA8ZGlyZWN0Lmg+
CisjICBpbmNsdWRlIDxpby5oPgorIyBlbmRpZgorLy8gSW4gb3JkZXIgdG8gYXZvaWQgaGF2aW5n
IHRvIGluY2x1ZGUgPHdpbmRvd3MuaD4sIHVzZSBmb3J3YXJkIGRlY2xhcmF0aW9uCisvLyBhc3N1
bWluZyBDUklUSUNBTF9TRUNUSU9OIGlzIGEgdHlwZWRlZiBvZiBfUlRMX0NSSVRJQ0FMX1NFQ1RJ
T04uCisvLyBUaGlzIGFzc3VtcHRpb24gaXMgdmVyaWZpZWQgYnkKKy8vIFdpbmRvd3NUeXBlc1Rl
c3QuQ1JJVElDQUxfU0VDVElPTklzX1JUTF9DUklUSUNBTF9TRUNUSU9OLgorc3RydWN0IF9SVExf
Q1JJVElDQUxfU0VDVElPTjsKICNlbHNlCi0jZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfREVTS1RP
UCAxCi0jZW5kaWYgIC8vIF9XSU4zMl9XQ0UKLSNlbGlmIGRlZmluZWQgX19BUFBMRV9fCi0jZGVm
aW5lIEdURVNUX09TX01BQyAxCi0jZWxpZiBkZWZpbmVkIF9fbGludXhfXwotI2RlZmluZSBHVEVT
VF9PU19MSU5VWCAxCi0jZWxpZiBkZWZpbmVkIF9fR05VX18KLSNkZWZpbmUgR1RFU1RfT1NfSFVS
RCAxCi0jZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18p
IHx8IGRlZmluZWQoX19GcmVlQlNEX2tlcm5lbF9fKQotI2RlZmluZSBHVEVTVF9PU19GUkVFQlNE
IDEKLSNlbGlmIGRlZmluZWQgX19NVlNfXwotI2RlZmluZSBHVEVTVF9PU19aT1MgMQotI2VsaWYg
ZGVmaW5lZChfX3N1bikgJiYgZGVmaW5lZChfX1NWUjQpCi0jZGVmaW5lIEdURVNUX09TX1NPTEFS
SVMgMQotI2VsaWYgZGVmaW5lZChfQUlYKQotI2RlZmluZSBHVEVTVF9PU19BSVggMQotI2VuZGlm
ICAvLyBfX0NZR1dJTl9fCi0KLSNpZiBHVEVTVF9PU19DWUdXSU4gfHwgR1RFU1RfT1NfTElOVVgg
fHwgR1RFU1RfT1NfTUFDIHx8IEdURVNUX09TX1NZTUJJQU4gfHwgXAotICAgIEdURVNUX09TX1NP
TEFSSVMgfHwgR1RFU1RfT1NfQUlYIHx8IEdURVNUX09TX0ZSRUVCU0QgfHwgR1RFU1RfT1NfSFVS
RAorLy8gVGhpcyBhc3N1bWVzIHRoYXQgbm9uLVdpbmRvd3MgT1NlcyBwcm92aWRlIHVuaXN0ZC5o
LiBGb3IgT1NlcyB3aGVyZSB0aGlzCisvLyBpcyBub3QgdGhlIGNhc2UsIHdlIG5lZWQgdG8gaW5j
bHVkZSBoZWFkZXJzIHRoYXQgcHJvdmlkZSB0aGUgZnVuY3Rpb25zCisvLyBtZW50aW9uZWQgYWJv
dmUuCisjIGluY2x1ZGUgPHVuaXN0ZC5oPgorIyBpbmNsdWRlIDxzdHJpbmdzLmg+CisjZW5kaWYg
IC8vIEdURVNUX09TX1dJTkRPV1MKKworI2lmIEdURVNUX09TX0xJTlVYX0FORFJPSUQKKy8vIFVz
ZWQgdG8gZGVmaW5lIF9fQU5EUk9JRF9BUElfXyBtYXRjaGluZyB0aGUgdGFyZ2V0IE5ESyBBUEkg
bGV2ZWwuCisjICBpbmNsdWRlIDxhbmRyb2lkL2FwaS1sZXZlbC5oPiAgLy8gTk9MSU5UCisjZW5k
aWYKKworLy8gRGVmaW5lcyB0aGlzIHRvIHRydWUgaWZmIEdvb2dsZSBUZXN0IGNhbiB1c2UgUE9T
SVggcmVndWxhciBleHByZXNzaW9ucy4KKyNpZm5kZWYgR1RFU1RfSEFTX1BPU0lYX1JFCisjIGlm
IEdURVNUX09TX0xJTlVYX0FORFJPSUQKKy8vIE9uIEFuZHJvaWQsIDxyZWdleC5oPiBpcyBvbmx5
IGF2YWlsYWJsZSBzdGFydGluZyB3aXRoIEdpbmdlcmJyZWFkLgorIyAgZGVmaW5lIEdURVNUX0hB
U19QT1NJWF9SRSAoX19BTkRST0lEX0FQSV9fID49IDkpCisjIGVsc2UKKyMgIGRlZmluZSBHVEVT
VF9IQVNfUE9TSVhfUkUgKCFHVEVTVF9PU19XSU5ET1dTKQorIyBlbmRpZgorI2VuZGlmCisKKyNp
ZiBHVEVTVF9VU0VTX1BDUkUKKy8vIFRoZSBhcHByb3ByaWF0ZSBoZWFkZXJzIGhhdmUgYWxyZWFk
eSBiZWVuIGluY2x1ZGVkLgorCisjZWxpZiBHVEVTVF9IQVNfUE9TSVhfUkUKIAogLy8gT24gc29t
ZSBwbGF0Zm9ybXMsIDxyZWdleC5oPiBuZWVkcyBzb21lb25lIHRvIGRlZmluZSBzaXplX3QsIGFu
ZAogLy8gd29uJ3QgY29tcGlsZSBvdGhlcndpc2UuICBXZSBjYW4gI2luY2x1ZGUgaXQgaGVyZSBh
cyB3ZSBhbHJlYWR5CiAvLyBpbmNsdWRlZCA8c3RkbGliLmg+LCB3aGljaCBpcyBndWFyYW50ZWVk
IHRvIGRlZmluZSBzaXplX3QgdGhyb3VnaAogLy8gPHN0ZGRlZi5oPi4KLSNpZiBIQVZFKFJFR0VY
X0gpCi0jaW5jbHVkZSA8cmVnZXguaD4gIC8vIE5PTElOVAotI2RlZmluZSBHVEVTVF9VU0VTX1BP
U0lYX1JFIDEKLSNlbHNlCi0jZGVmaW5lIEdURVNUX1VTRVNfU0lNUExFX1JFIDEKLSNlbmRpZgot
I2luY2x1ZGUgPHN0cmluZ3MuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPiAg
Ly8gTk9MSU5UCi0jaW5jbHVkZSA8dGltZS5oPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8dW5pc3Rk
Lmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8cmVnZXguaD4gIC8vIE5PTElOVAogCisjIGRlZmlu
ZSBHVEVTVF9VU0VTX1BPU0lYX1JFIDEKIAogI2VsaWYgR1RFU1RfT1NfV0lORE9XUwogCi0jaWYg
IUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0jaW5jbHVkZSA8ZGlyZWN0Lmg+ICAvLyBOT0xJTlQK
LSNpbmNsdWRlIDxpby5oPiAgLy8gTk9MSU5UCi0jZW5kaWYKLQogLy8gPHJlZ2V4Lmg+IGlzIG5v
dCBhdmFpbGFibGUgb24gV2luZG93cy4gIFVzZSBvdXIgb3duIHNpbXBsZSByZWdleAogLy8gaW1w
bGVtZW50YXRpb24gaW5zdGVhZC4KLSNkZWZpbmUgR1RFU1RfVVNFU19TSU1QTEVfUkUgMQorIyBk
ZWZpbmUgR1RFU1RfVVNFU19TSU1QTEVfUkUgMQogCiAjZWxzZQogCiAvLyA8cmVnZXguaD4gbWF5
IG5vdCBiZSBhdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybS4gIFVzZSBvdXIgb3duCiAvLyBzaW1w
bGUgcmVnZXggaW1wbGVtZW50YXRpb24gaW5zdGVhZC4KLSNkZWZpbmUgR1RFU1RfVVNFU19TSU1Q
TEVfUkUgMQorIyBkZWZpbmUgR1RFU1RfVVNFU19TSU1QTEVfUkUgMQogCi0jZW5kaWYgIC8vIEdU
RVNUX09TX0NZR1dJTiB8fCBHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19NQUMgfHwKLSAgICAg
ICAgLy8gR1RFU1RfT1NfU1lNQklBTiB8fCBHVEVTVF9PU19TT0xBUklTIHx8IEdURVNUX09TX0FJ
WCB8fAotICAgICAgICAvLyBHVEVTVF9PU19GUkVFQlNEIHx8IEdURVNUX09TX0hVUkQKKyNlbmRp
ZiAgLy8gR1RFU1RfVVNFU19QQ1JFCiAKICNpZm5kZWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKIC8v
IFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIHdoZXRoZXIgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCwg
c28gd2UgbmVlZAogLy8gdG8gZmlndXJlIGl0IG91dC4KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSB8
fCBkZWZpbmVkKF9fQk9STEFORENfXykKKyMgaWYgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5l
ZChfX0JPUkxBTkRDX18pCiAvLyBNU1ZDJ3MgYW5kIEMrK0J1aWxkZXIncyBpbXBsZW1lbnRhdGlv
bnMgb2YgdGhlIFNUTCB1c2UgdGhlIF9IQVNfRVhDRVBUSU9OUwogLy8gbWFjcm8gdG8gZW5hYmxl
IGV4Y2VwdGlvbnMsIHNvIHdlJ2xsIGRvIHRoZSBzYW1lLgogLy8gQXNzdW1lcyB0aGF0IGV4Y2Vw
dGlvbnMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdC4KLSNpZm5kZWYgX0hBU19FWENFUFRJT05TCi0j
ZGVmaW5lIF9IQVNfRVhDRVBUSU9OUyAxCi0jZW5kaWYgIC8vIF9IQVNfRVhDRVBUSU9OUwotI2Rl
ZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyBfSEFTX0VYQ0VQVElPTlMKLSNlbGlmIGRlZmluZWQo
X19HTlVDX18pICYmIF9fRVhDRVBUSU9OUworIyAgaWZuZGVmIF9IQVNfRVhDRVBUSU9OUworIyAg
IGRlZmluZSBfSEFTX0VYQ0VQVElPTlMgMQorIyAgZW5kaWYgIC8vIF9IQVNfRVhDRVBUSU9OUwor
IyAgZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIF9IQVNfRVhDRVBUSU9OUworIyBlbGlmIGRl
ZmluZWQoX19jbGFuZ19fKQorLy8gY2xhbmcgZGVmaW5lcyBfX0VYQ0VQVElPTlMgaWZmIGV4Y2Vw
dGlvbnMgYXJlIGVuYWJsZWQgYmVmb3JlIGNsYW5nIDIyMDcxNCwKKy8vIGJ1dCBpZmYgY2xlYW51
cHMgYXJlIGVuYWJsZWQgYWZ0ZXIgdGhhdC4gSW4gT2JqLUMrKyBmaWxlcywgdGhlcmUgY2FuIGJl
CisvLyBjbGVhbnVwcyBmb3IgT2JqQyBleGNlcHRpb25zIHdoaWNoIGFsc28gbmVlZCBjbGVhbnVw
cywgZXZlbiBpZiBDKysgZXhjZXB0aW9ucworLy8gYXJlIGRpc2FibGVkLiBjbGFuZyBoYXMgX19o
YXNfZmVhdHVyZShjeHhfZXhjZXB0aW9ucykgd2hpY2ggY2hlY2tzIGZvciBDKysKKy8vIGV4Y2Vw
dGlvbnMgc3RhcnRpbmcgYXQgY2xhbmcgcjIwNjM1MiwgYnV0IHdoaWNoIGNoZWNrZWQgZm9yIGNs
ZWFudXBzIHByaW9yIHRvCisvLyB0aGF0LiBUbyByZWxpYWJseSBjaGVjayBmb3IgQysrIGV4Y2Vw
dGlvbiBhdmFpbGFiaWxpdHkgd2l0aCBjbGFuZywgY2hlY2sgZm9yCisvLyBfX0VYQ0VQVElPTlMg
JiYgX19oYXNfZmVhdHVyZShjeHhfZXhjZXB0aW9ucykuCisjICBkZWZpbmUgR1RFU1RfSEFTX0VY
Q0VQVElPTlMgKF9fRVhDRVBUSU9OUyAmJiBfX2hhc19mZWF0dXJlKGN4eF9leGNlcHRpb25zKSkK
KyMgZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0VYQ0VQVElPTlMKIC8vIGdjYyBkZWZpbmVz
IF9fRVhDRVBUSU9OUyB0byAxIGlmZiBleGNlcHRpb25zIGFyZSBlbmFibGVkLgotI2RlZmluZSBH
VEVTVF9IQVNfRVhDRVBUSU9OUyAxCi0jZWxpZiBkZWZpbmVkKF9fU1VOUFJPX0NDKQorIyAgZGVm
aW5lIEdURVNUX0hBU19FWENFUFRJT05TIDEKKyMgZWxpZiBkZWZpbmVkKF9fU1VOUFJPX0NDKQog
Ly8gU3VuIFBybyBDQyBzdXBwb3J0cyBleGNlcHRpb25zLiAgSG93ZXZlciwgdGhlcmUgaXMgbm8g
Y29tcGlsZS10aW1lIHdheSBvZgogLy8gZGV0ZWN0aW5nIHdoZXRoZXIgdGhleSBhcmUgZW5hYmxl
ZCBvciBub3QuICBUaGVyZWZvcmUsIHdlIGFzc3VtZSB0aGF0CiAvLyB0aGV5IGFyZSBlbmFibGVk
IHVubGVzcyB0aGUgdXNlciB0ZWxscyB1cyBvdGhlcndpc2UuCi0jZGVmaW5lIEdURVNUX0hBU19F
WENFUFRJT05TIDEKLSNlbGlmIGRlZmluZWQoX19JQk1DUFBfXykgJiYgX19FWENFUFRJT05TCisj
ICBkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMQorIyBlbGlmIGRlZmluZWQoX19JQk1DUFBf
XykgJiYgX19FWENFUFRJT05TCiAvLyB4bEMgZGVmaW5lcyBfX0VYQ0VQVElPTlMgdG8gMSBpZmYg
ZXhjZXB0aW9ucyBhcmUgZW5hYmxlZC4KLSNkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMQot
I2Vsc2UKKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCisjIGVsaWYgZGVmaW5lZChf
X0hQX2FDQykKKy8vIEV4Y2VwdGlvbiBoYW5kbGluZyBpcyBpbiBlZmZlY3QgYnkgZGVmYXVsdCBp
biBIUCBhQ0MgY29tcGlsZXIuIEl0IGhhcyB0bworLy8gYmUgdHVybmVkIG9mIGJ5ICtub2VoIGNv
bXBpbGVyIG9wdGlvbiBpZiBkZXNpcmVkLgorIyAgZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05T
IDEKKyMgZWxzZQogLy8gRm9yIG90aGVyIGNvbXBpbGVycywgd2UgYXNzdW1lIGV4Y2VwdGlvbnMg
YXJlIGRpc2FibGVkIHRvIGJlCiAvLyBjb25zZXJ2YXRpdmUuCi0jZGVmaW5lIEdURVNUX0hBU19F
WENFUFRJT05TIDAKLSNlbmRpZiAgLy8gZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX0JP
UkxBTkRDX18pCisjICBkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMAorIyBlbmRpZiAgLy8g
ZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pCiAjZW5kaWYgIC8vIEdU
RVNUX0hBU19FWENFUFRJT05TCiAKICNpZiAhZGVmaW5lZChHVEVTVF9IQVNfU1REX1NUUklORykK
IC8vIEV2ZW4gdGhvdWdoIHdlIGRvbid0IHVzZSB0aGlzIG1hY3JvIGFueSBsb25nZXIsIHdlIGtl
ZXAgaXQgaW4gY2FzZQogLy8gc29tZSBjbGllbnRzIHN0aWxsIGRlcGVuZCBvbiBpdC4KLSNkZWZp
bmUgR1RFU1RfSEFTX1NURF9TVFJJTkcgMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9TVFJJTkcg
MQogI2VsaWYgIUdURVNUX0hBU19TVERfU1RSSU5HCiAvLyBUaGUgdXNlciB0b2xkIHVzIHRoYXQg
OjpzdGQ6OnN0cmluZyBpc24ndCBhdmFpbGFibGUuCi0jZXJyb3IgIkdvb2dsZSBUZXN0IGNhbm5v
dCBiZSB1c2VkIHdoZXJlIDo6c3RkOjpzdHJpbmcgaXNuJ3QgYXZhaWxhYmxlLiIKKyMgZXJyb3Ig
Ikdvb2dsZSBUZXN0IGNhbm5vdCBiZSB1c2VkIHdoZXJlIDo6c3RkOjpzdHJpbmcgaXNuJ3QgYXZh
aWxhYmxlLiIKICNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfSEFTX1NURF9TVFJJTkcpCiAKICNp
Zm5kZWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVz
IHdoZXRoZXIgOjpzdHJpbmcgaXMgYXZhaWxhYmxlLCBzbyB3ZSBuZWVkCiAvLyB0byBmaWd1cmUg
aXQgb3V0LgogCi0jZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HIDAKKyMgZGVmaW5lIEdU
RVNUX0hBU19HTE9CQUxfU1RSSU5HIDAKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NU
UklORwogCkBAIC0zMjUsMTcgKzUxNSwxOCBAQAogLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHVz
ZXMgYXV0b2NvbmYgdG8gZGV0ZWN0IHdoZXRoZXIgOjpzdGQ6OndzdHJpbmcKIC8vICAgaXMgYXZh
aWxhYmxlLgogCi0vLyBDeWd3aW4gMS41IGFuZCBiZWxvdyBkb2Vzbid0IHN1cHBvcnQgOjpzdGQ6
OndzdHJpbmcuCi0vLyBDeWd3aW4gMS43IG1pZ2h0IGFkZCB3c3RyaW5nIHN1cHBvcnQ7IHRoaXMg
c2hvdWxkIGJlIHVwZGF0ZWQgd2hlbiBjbGVhci4KLS8vIFNvbGFyaXMnIGxpYmMrKyBkb2Vzbid0
IHN1cHBvcnQgaXQgZWl0aGVyLgotI2RlZmluZSBHVEVTVF9IQVNfU1REX1dTVFJJTkcgKCEoR1RF
U1RfT1NfQ1lHV0lOIHx8IEdURVNUX09TX1NPTEFSSVMpKQorLy8gQ3lnd2luIDEuNyBhbmQgYmVs
b3cgZG9lc24ndCBzdXBwb3J0IDo6c3RkOjp3c3RyaW5nLgorLy8gU29sYXJpcycgbGliYysrIGRv
ZXNuJ3Qgc3VwcG9ydCBpdCBlaXRoZXIuICBBbmRyb2lkIGhhcworLy8gbm8gc3VwcG9ydCBmb3Ig
aXQgYXQgbGVhc3QgYXMgcmVjZW50IGFzIEZyb3lvICgyLjIpLgorIyBkZWZpbmUgR1RFU1RfSEFT
X1NURF9XU1RSSU5HIFwKKyAgICAoIShHVEVTVF9PU19MSU5VWF9BTkRST0lEIHx8IEdURVNUX09T
X0NZR1dJTiB8fCBHVEVTVF9PU19TT0xBUklTKSkKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RE
X1dTVFJJTkcKIAogI2lmbmRlZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKIC8vIFRoZSB1c2Vy
IGRpZG4ndCB0ZWxsIHVzIHdoZXRoZXIgOjp3c3RyaW5nIGlzIGF2YWlsYWJsZSwgc28gd2UgbmVl
ZAogLy8gdG8gZmlndXJlIGl0IG91dC4KLSNkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5H
IFwKKyMgZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfV1NUUklORyBcCiAgICAgKEdURVNUX0hBU19T
VERfV1NUUklORyAmJiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORykKICNlbmRpZiAgLy8gR1RFU1Rf
SEFTX0dMT0JBTF9XU1RSSU5HCiAKQEAgLTM0NCw2NCArNTM1LDEwNCBAQAogLy8gVGhlIHVzZXIg
ZGlkbid0IHRlbGwgdXMgd2hldGhlciBSVFRJIGlzIGVuYWJsZWQsIHNvIHdlIG5lZWQgdG8KIC8v
IGZpZ3VyZSBpdCBvdXQuCiAKLSNpZmRlZiBfTVNDX1ZFUgorIyBpZmRlZiBfTVNDX1ZFUgogCi0j
aWZkZWYgX0NQUFJUVEkgIC8vIE1TVkMgZGVmaW5lcyB0aGlzIG1hY3JvIGlmZiBSVFRJIGlzIGVu
YWJsZWQuCi0jZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKLSNlbHNlCi0jZGVmaW5lIEdURVNUX0hB
U19SVFRJIDAKLSNlbmRpZgorIyAgaWZkZWYgX0NQUFJUVEkgIC8vIE1TVkMgZGVmaW5lcyB0aGlz
IG1hY3JvIGlmZiBSVFRJIGlzIGVuYWJsZWQuCisjICAgZGVmaW5lIEdURVNUX0hBU19SVFRJIDEK
KyMgIGVsc2UKKyMgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAorIyAgZW5kaWYKIAogLy8gU3Rh
cnRpbmcgd2l0aCB2ZXJzaW9uIDQuMy4yLCBnY2MgZGVmaW5lcyBfX0dYWF9SVFRJIGlmZiBSVFRJ
IGlzIGVuYWJsZWQuCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoR1RFU1RfR0NDX1ZFUl8g
Pj0gNDAzMDIpCi0KLSNpZmRlZiBfX0dYWF9SVFRJCi0jZGVmaW5lIEdURVNUX0hBU19SVFRJIDEK
LSNlbHNlCi0jZGVmaW5lIEdURVNUX0hBU19SVFRJIDAKLSNlbmRpZiAgLy8gX19HWFhfUlRUSQor
IyBlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSA0MDMwMikKKwor
IyAgaWZkZWYgX19HWFhfUlRUSQorLy8gV2hlbiBidWlsZGluZyBhZ2FpbnN0IFNUTHBvcnQgd2l0
aCB0aGUgQW5kcm9pZCBOREsgYW5kIHdpdGgKKy8vIC1mcnR0aSAtZm5vLWV4Y2VwdGlvbnMsIHRo
ZSBidWlsZCBmYWlscyBhdCBsaW5rIHRpbWUgd2l0aCB1bmRlZmluZWQKKy8vIHJlZmVyZW5jZXMg
dG8gX19jeGFfYmFkX3R5cGVpZC4gTm90ZSBzdXJlIGlmIFNUTCBvciB0b29sY2hhaW4gYnVnLAor
Ly8gc28gZGlzYWJsZSBSVFRJIHdoZW4gZGV0ZWN0ZWQuCisjICAgaWYgR1RFU1RfT1NfTElOVVhf
QU5EUk9JRCAmJiBkZWZpbmVkKF9TVExQT1JUX01BSk9SKSAmJiBcCisgICAgICAgIWRlZmluZWQo
X19FWENFUFRJT05TKQorIyAgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAorIyAgIGVsc2UKKyMg
ICAgZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKKyMgICBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVhf
QU5EUk9JRCAmJiBfX1NUTFBPUlRfTUFKT1IgJiYgIV9fRVhDRVBUSU9OUworIyAgZWxzZQorIyAg
IGRlZmluZSBHVEVTVF9IQVNfUlRUSSAwCisjICBlbmRpZiAgLy8gX19HWFhfUlRUSQorCisvLyBD
bGFuZyBkZWZpbmVzIF9fR1hYX1JUVEkgc3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDMuMCwgYnV0IGl0
cyBtYW51YWwgcmVjb21tZW5kcworLy8gdXNpbmcgaGFzX2ZlYXR1cmUgaW5zdGVhZC4gaGFzX2Zl
YXR1cmUoY3h4X3J0dGkpIGlzIHN1cHBvcnRlZCBzaW5jZSAyLjcsIHRoZQorLy8gZmlyc3QgdmVy
c2lvbiB3aXRoIEMrKyBzdXBwb3J0LgorIyBlbGlmIGRlZmluZWQoX19jbGFuZ19fKQorCisjICBk
ZWZpbmUgR1RFU1RfSEFTX1JUVEkgX19oYXNfZmVhdHVyZShjeHhfcnR0aSkKIAogLy8gU3RhcnRp
bmcgd2l0aCB2ZXJzaW9uIDkuMCBJQk0gVmlzdWFsIEFnZSBkZWZpbmVzIF9fUlRUSV9BTExfXyB0
byAxIGlmCiAvLyBib3RoIHRoZSB0eXBlaWQgYW5kIGR5bmFtaWNfY2FzdCBmZWF0dXJlcyBhcmUg
cHJlc2VudC4KLSNlbGlmIGRlZmluZWQoX19JQk1DUFBfXykgJiYgKF9fSUJNQ1BQX18gPj0gOTAw
KQorIyBlbGlmIGRlZmluZWQoX19JQk1DUFBfXykgJiYgKF9fSUJNQ1BQX18gPj0gOTAwKQogCi0j
aWZkZWYgX19SVFRJX0FMTF9fCi0jZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKLSNlbHNlCi0jZGVm
aW5lIEdURVNUX0hBU19SVFRJIDAKLSNlbmRpZgorIyAgaWZkZWYgX19SVFRJX0FMTF9fCisjICAg
ZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKKyMgIGVsc2UKKyMgICBkZWZpbmUgR1RFU1RfSEFTX1JU
VEkgMAorIyAgZW5kaWYKIAotI2Vsc2UKKyMgZWxzZQogCiAvLyBGb3IgYWxsIG90aGVyIGNvbXBp
bGVycywgd2UgYXNzdW1lIFJUVEkgaXMgZW5hYmxlZC4KLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkg
MQorIyAgZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKIAotI2VuZGlmICAvLyBfTVNDX1ZFUgorIyBl
bmRpZiAgLy8gX01TQ19WRVIKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfUlRUSQogCiAvLyBJdCdz
IHRoaXMgaGVhZGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gI2luY2x1ZGUgPHR5cGVpbmZvPiB3aGVu
IFJUVEkKIC8vIGlzIGVuYWJsZWQuCiAjaWYgR1RFU1RfSEFTX1JUVEkKLSNpbmNsdWRlIDx0eXBl
aW5mbz4KKyMgaW5jbHVkZSA8dHlwZWluZm8+CiAjZW5kaWYKIAogLy8gRGV0ZXJtaW5lcyB3aGV0
aGVyIEdvb2dsZSBUZXN0IGNhbiB1c2UgdGhlIHB0aHJlYWRzIGxpYnJhcnkuCiAjaWZuZGVmIEdU
RVNUX0hBU19QVEhSRUFECi0vLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cyBleHBsaWNpdGx5LCBz
byB3ZSBhc3N1bWUgcHRocmVhZHMgc3VwcG9ydCBpcwotLy8gYXZhaWxhYmxlIG9uIExpbnV4IGFu
ZCBNYWMuCisvLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cyBleHBsaWNpdGx5LCBzbyB3ZSBtYWtl
IHJlYXNvbmFibGUgYXNzdW1wdGlvbnMgYWJvdXQKKy8vIHdoaWNoIHBsYXRmb3JtcyBoYXZlIHB0
aHJlYWRzIHN1cHBvcnQuCiAvLwogLy8gVG8gZGlzYWJsZSB0aHJlYWRpbmcgc3VwcG9ydCBpbiBH
b29nbGUgVGVzdCwgYWRkIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MAogLy8gdG8geW91ciBjb21waWxl
ciBmbGFncy4KLSNkZWZpbmUgR1RFU1RfSEFTX1BUSFJFQUQgKEdURVNUX09TX0xJTlVYIHx8IEdU
RVNUX09TX0ZSRUVCU0QgfHwgR1RFU1RfT1NfSFVSRCB8fCBHVEVTVF9PU19NQUMpCisjIGRlZmlu
ZSBHVEVTVF9IQVNfUFRIUkVBRCAoR1RFU1RfT1NfTElOVVggfHwgR1RFU1RfT1NfTUFDIHx8IEdU
RVNUX09TX0hQVVggXAorICAgIHx8IEdURVNUX09TX1FOWCB8fCBHVEVTVF9PU19GUkVFQlNEIHx8
IEdURVNUX09TX05BQ0wpCiAjZW5kaWYgIC8vIEdURVNUX0hBU19QVEhSRUFECiAKKyNpZiBHVEVT
VF9IQVNfUFRIUkVBRAorLy8gZ3Rlc3QtcG9ydC5oIGd1YXJhbnRlZXMgdG8gI2luY2x1ZGUgPHB0
aHJlYWQuaD4gd2hlbiBHVEVTVF9IQVNfUFRIUkVBRCBpcworLy8gdHJ1ZS4KKyMgaW5jbHVkZSA8
cHRocmVhZC5oPiAgLy8gTk9MSU5UCisKKy8vIEZvciB0aW1lc3BlYyBhbmQgbmFub3NsZWVwLCB1
c2VkIGJlbG93LgorIyBpbmNsdWRlIDx0aW1lLmg+ICAvLyBOT0xJTlQKKyNlbmRpZgorCisvLyBE
ZXRlcm1pbmVzIGlmIGhhc2hfbWFwL2hhc2hfc2V0IGFyZSBhdmFpbGFibGUuCisvLyBPbmx5IHVz
ZWQgZm9yIHRlc3RpbmcgYWdhaW5zdCB0aG9zZSBjb250YWluZXJzLgorI2lmICFkZWZpbmVkKEdU
RVNUX0hBU19IQVNIX01BUF8pCisjIGlmIF9NU0NfVkVSCisjICBkZWZpbmUgR1RFU1RfSEFTX0hB
U0hfTUFQXyAxICAvLyBJbmRpY2F0ZXMgdGhhdCBoYXNoX21hcCBpcyBhdmFpbGFibGUuCisjICBk
ZWZpbmUgR1RFU1RfSEFTX0hBU0hfU0VUXyAxICAvLyBJbmRpY2F0ZXMgdGhhdCBoYXNoX3NldCBp
cyBhdmFpbGFibGUuCisjIGVuZGlmICAvLyBfTVNDX1ZFUgorI2VuZGlmICAvLyAhZGVmaW5lZChH
VEVTVF9IQVNfSEFTSF9NQVBfKQorCiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgR29vZ2xlIFRlc3Qg
Y2FuIHVzZSB0cjEvdHVwbGUuICBZb3UgY2FuIGRlZmluZQogLy8gdGhpcyBtYWNybyB0byAwIHRv
IHByZXZlbnQgR29vZ2xlIFRlc3QgZnJvbSB1c2luZyB0dXBsZSAoYW55CiAvLyBmZWF0dXJlIGRl
cGVuZGluZyBvbiB0dXBsZSB3aXRoIGJlIGRpc2FibGVkIGluIHRoaXMgbW9kZSkuCiAjaWZuZGVm
IEdURVNUX0hBU19UUjFfVFVQTEUKKyMgaWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRCAmJiBkZWZp
bmVkKF9TVExQT1JUX01BSk9SKQorLy8gU1RMcG9ydCwgcHJvdmlkZWQgd2l0aCB0aGUgQW5kcm9p
ZCBOREssIGhhcyBuZWl0aGVyIDx0cjEvdHVwbGU+IG9yIDx0dXBsZT4uCisjICBkZWZpbmUgR1RF
U1RfSEFTX1RSMV9UVVBMRSAwCisjIGVsc2UKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIG5v
dCB0byBkbyBpdCwgc28gd2UgYXNzdW1lIGl0J3MgT0suCi0jZGVmaW5lIEdURVNUX0hBU19UUjFf
VFVQTEUgMQorIyAgZGVmaW5lIEdURVNUX0hBU19UUjFfVFVQTEUgMQorIyBlbmRpZgogI2VuZGlm
ICAvLyBHVEVTVF9IQVNfVFIxX1RVUExFCiAKIC8vIERldGVybWluZXMgd2hldGhlciBHb29nbGUg
VGVzdCdzIG93biB0cjEgdHVwbGUgaW1wbGVtZW50YXRpb24KQEAgLTQxMCw2NyArNjQxLDEwNyBA
QAogLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMsIHNvIHdlIG5lZWQgdG8gZmlndXJlIGl0IG91
dC4KIAogLy8gV2UgdXNlIG91ciBvd24gVFIxIHR1cGxlIGlmIHdlIGFyZW4ndCBzdXJlIHRoZSB1
c2VyIGhhcyBhbgotLy8gaW1wbGVtZW50YXRpb24gb2YgaXQgYWxyZWFkeS4gIEF0IHRoaXMgdGlt
ZSwgR0NDIDQuMC4wKyBhbmQgTVNWQwotLy8gMjAxMCBhcmUgdGhlIG9ubHkgbWFpbnN0cmVhbSBj
b21waWxlcnMgdGhhdCBjb21lIHdpdGggYSBUUjEgdHVwbGUKLS8vIGltcGxlbWVudGF0aW9uLiAg
TlZJRElBJ3MgQ1VEQSBOVkNDIGNvbXBpbGVyIHByZXRlbmRzIHRvIGJlIEdDQyBieQotLy8gZGVm
aW5pbmcgX19HTlVDX18gYW5kIGZyaWVuZHMsIGJ1dCBjYW5ub3QgY29tcGlsZSBHQ0MncyB0dXBs
ZQotLy8gaW1wbGVtZW50YXRpb24uICBNU1ZDIDIwMDggKDkuMCkgcHJvdmlkZXMgVFIxIHR1cGxl
IGluIGEgMzIzIE1CCi0vLyBGZWF0dXJlIFBhY2sgZG93bmxvYWQsIHdoaWNoIHdlIGNhbm5vdCBh
c3N1bWUgdGhlIHVzZXIgaGFzLgotI2lmIChkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChf
X0NVREFDQ19fKSAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0gNDAwMDApKSBcCi0gICAgfHwgX01TQ19W
RVIgPj0gMTYwMAotI2RlZmluZSBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSAwCi0jZWxzZQotI2Rl
ZmluZSBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSAxCi0jZW5kaWYKKy8vIGltcGxlbWVudGF0aW9u
IG9mIGl0IGFscmVhZHkuICBBdCB0aGlzIHRpbWUsIGxpYnN0ZGMrKyA0LjAuMCsgYW5kCisvLyBN
U1ZDIDIwMTAgYXJlIHRoZSBvbmx5IG1haW5zdHJlYW0gc3RhbmRhcmQgbGlicmFyaWVzIHRoYXQg
Y29tZQorLy8gd2l0aCBhIFRSMSB0dXBsZSBpbXBsZW1lbnRhdGlvbi4gIE5WSURJQSdzIENVREEg
TlZDQyBjb21waWxlcgorLy8gcHJldGVuZHMgdG8gYmUgR0NDIGJ5IGRlZmluaW5nIF9fR05VQ19f
IGFuZCBmcmllbmRzLCBidXQgY2Fubm90CisvLyBjb21waWxlIEdDQydzIHR1cGxlIGltcGxlbWVu
dGF0aW9uLiAgTVNWQyAyMDA4ICg5LjApIHByb3ZpZGVzIFRSMQorLy8gdHVwbGUgaW4gYSAzMjMg
TUIgRmVhdHVyZSBQYWNrIGRvd25sb2FkLCB3aGljaCB3ZSBjYW5ub3QgYXNzdW1lIHRoZQorLy8g
dXNlciBoYXMuICBRTlgncyBRQ0MgY29tcGlsZXIgaXMgYSBtb2RpZmllZCBHQ0MgYnV0IGl0IGRv
ZXNuJ3QKKy8vIHN1cHBvcnQgVFIxIHR1cGxlLiAgbGliYysrIG9ubHkgcHJvdmlkZXMgc3RkOjp0
dXBsZSwgaW4gQysrMTEgbW9kZSwKKy8vIGFuZCBpdCBjYW4gYmUgdXNlZCB3aXRoIHNvbWUgY29t
cGlsZXJzIHRoYXQgZGVmaW5lIF9fR05VQ19fLgorIyBpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYg
IWRlZmluZWQoX19DVURBQ0NfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMDAwKSBcCisgICAg
ICAmJiAhR1RFU1RfT1NfUU5YICYmICFkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikpIHx8IF9NU0Nf
VkVSID49IDE2MDAKKyMgIGRlZmluZSBHVEVTVF9FTlZfSEFTX1RSMV9UVVBMRV8gMQorIyBlbmRp
ZgorCisvLyBDKysxMSBzcGVjaWZpZXMgdGhhdCA8dHVwbGU+IHByb3ZpZGVzIHN0ZDo6dHVwbGUu
IFVzZSB0aGF0IGlmIGd0ZXN0IGlzIHVzZWQKKy8vIGluIEMrKzExIG1vZGUgYW5kIGxpYnN0ZGMr
KyBpc24ndCB2ZXJ5IG9sZCAoYmluYXJpZXMgdGFyZ2V0aW5nIE9TIFggMTAuNgorLy8gY2FuIGJ1
aWxkIHdpdGggY2xhbmcgYnV0IG5lZWQgdG8gdXNlIGdjYzQuMidzIGxpYnN0ZGMrKykuCisjIGlm
IEdURVNUX0xBTkdfQ1hYMTEgJiYgKCFkZWZpbmVkKF9fR0xJQkNYWF9fKSB8fCBfX0dMSUJDWFhf
XyA+IDIwMTEwMzI1KQorIyAgZGVmaW5lIEdURVNUX0VOVl9IQVNfU1REX1RVUExFXyAxCisjIGVu
ZGlmCisKKyMgaWYgR1RFU1RfRU5WX0hBU19UUjFfVFVQTEVfIHx8IEdURVNUX0VOVl9IQVNfU1RE
X1RVUExFXworIyAgZGVmaW5lIEdURVNUX1VTRV9PV05fVFIxX1RVUExFIDAKKyMgZWxzZQorIyAg
ZGVmaW5lIEdURVNUX1VTRV9PV05fVFIxX1RVUExFIDEKKyMgZW5kaWYKIAogI2VuZGlmICAvLyBH
VEVTVF9VU0VfT1dOX1RSMV9UVVBMRQogCiAvLyBUbyBhdm9pZCBjb25kaXRpb25hbCBjb21waWxh
dGlvbiBldmVyeXdoZXJlLCB3ZSBtYWtlIGl0CiAvLyBndGVzdC1wb3J0LmgncyByZXNwb25zaWJp
bGl0eSB0byAjaW5jbHVkZSB0aGUgaGVhZGVyIGltcGxlbWVudGluZwotLy8gdHIxL3R1cGxlLgor
Ly8gdHVwbGUuCisjaWYgR1RFU1RfSEFTX1NURF9UVVBMRV8KKyMgaW5jbHVkZSA8dHVwbGU+ICAv
LyBJV1lVIHByYWdtYTogZXhwb3J0CisjIGRlZmluZSBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfIDo6
c3RkCisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfVFVQTEVfCisKKy8vIFdlIGluY2x1ZGUgdHIx
Ojp0dXBsZSBldmVuIGlmIHN0ZDo6dHVwbGUgaXMgYXZhaWxhYmxlIHRvIGRlZmluZSBwcmludGVy
cyBmb3IKKy8vIHRoZW0uCiAjaWYgR1RFU1RfSEFTX1RSMV9UVVBMRQorIyBpZm5kZWYgR1RFU1Rf
VFVQTEVfTkFNRVNQQUNFXworIyAgZGVmaW5lIEdURVNUX1RVUExFX05BTUVTUEFDRV8gOjpzdGQ6
OnRyMQorIyBlbmRpZiAgLy8gR1RFU1RfVFVQTEVfTkFNRVNQQUNFXworCisjIGlmIEdURVNUX1VT
RV9PV05fVFIxX1RVUExFCisjICBpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5o
IiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydCAgLy8gTk9MSU5UCisjIGVsaWYgR1RFU1RfRU5WX0hB
U19TVERfVFVQTEVfCisjICBpbmNsdWRlIDx0dXBsZT4KKy8vIEMrKzExIHB1dHMgaXRzIHR1cGxl
IGludG8gdGhlIDo6c3RkIG5hbWVzcGFjZSByYXRoZXIgdGhhbgorLy8gOjpzdGQ6OnRyMS4gIGd0
ZXN0IGV4cGVjdHMgdHVwbGUgdG8gbGl2ZSBpbiA6OnN0ZDo6dHIxLCBzbyBwdXQgaXQgdGhlcmUu
CisvLyBUaGlzIGNhdXNlcyB1bmRlZmluZWQgYmVoYXZpb3IsIGJ1dCBzdXBwb3J0ZWQgY29tcGls
ZXJzIHJlYWN0IGluCisvLyB0aGUgd2F5IHdlIGludGVuZC4KK25hbWVzcGFjZSBzdGQgeworbmFt
ZXNwYWNlIHRyMSB7Cit1c2luZyA6OnN0ZDo6Z2V0OwordXNpbmcgOjpzdGQ6Om1ha2VfdHVwbGU7
Cit1c2luZyA6OnN0ZDo6dHVwbGU7Cit1c2luZyA6OnN0ZDo6dHVwbGVfZWxlbWVudDsKK3VzaW5n
IDo6c3RkOjp0dXBsZV9zaXplOworfQorfQogCi0jaWYgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUK
LSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oPgotI2VsaWYgR1RFU1RfT1Nf
U1lNQklBTgorIyBlbGlmIEdURVNUX09TX1NZTUJJQU4KIAogLy8gT24gU3ltYmlhbiwgQk9PU1Rf
SEFTX1RSMV9UVVBMRSBjYXVzZXMgQm9vc3QncyBUUjEgdHVwbGUgbGlicmFyeSB0bwogLy8gdXNl
IFNUTHBvcnQncyB0dXBsZSBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggdW5mb3J0dW5hdGVseSBkb2Vz
bid0CiAvLyB3b3JrIGFzIHRoZSBjb3B5IG9mIFNUTHBvcnQgZGlzdHJpYnV0ZWQgd2l0aCBTeW1i
aWFuIGlzIGluY29tcGxldGUuCiAvLyBCeSBtYWtpbmcgc3VyZSBCT09TVF9IQVNfVFIxX1RVUExF
IGlzIHVuZGVmaW5lZCwgd2UgZm9yY2UgQm9vc3QgdG8KIC8vIHVzZSBpdHMgb3duIHR1cGxlIGlt
cGxlbWVudGF0aW9uLgotI2lmZGVmIEJPT1NUX0hBU19UUjFfVFVQTEUKLSN1bmRlZiBCT09TVF9I
QVNfVFIxX1RVUExFCi0jZW5kaWYgIC8vIEJPT1NUX0hBU19UUjFfVFVQTEUKKyMgIGlmZGVmIEJP
T1NUX0hBU19UUjFfVFVQTEUKKyMgICB1bmRlZiBCT09TVF9IQVNfVFIxX1RVUExFCisjICBlbmRp
ZiAgLy8gQk9PU1RfSEFTX1RSMV9UVVBMRQogCiAvLyBUaGlzIHByZXZlbnRzIDxib29zdC90cjEv
ZGV0YWlsL2NvbmZpZy5ocHA+LCB3aGljaCBkZWZpbmVzCiAvLyBCT09TVF9IQVNfVFIxX1RVUExF
LCBmcm9tIGJlaW5nICNpbmNsdWRlZCBieSBCb29zdCdzIDx0dXBsZT4uCi0jZGVmaW5lIEJPT1NU
X1RSMV9ERVRBSUxfQ09ORklHX0hQUF9JTkNMVURFRAotI2luY2x1ZGUgPHR1cGxlPgorIyAgZGVm
aW5lIEJPT1NUX1RSMV9ERVRBSUxfQ09ORklHX0hQUF9JTkNMVURFRAorIyAgaW5jbHVkZSA8dHVw
bGU+ICAvLyBJV1lVIHByYWdtYTogZXhwb3J0ICAvLyBOT0xJTlQKIAotI2VsaWYgZGVmaW5lZChf
X0dOVUNfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMDAwKQorIyBlbGlmIGRlZmluZWQoX19H
TlVDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSA0MDAwMCkKIC8vIEdDQyA0LjArIGltcGxlbWVu
dHMgdHIxL3R1cGxlIGluIHRoZSA8dHIxL3R1cGxlPiBoZWFkZXIuICBUaGlzIGRvZXMKIC8vIG5v
dCBjb25mb3JtIHRvIHRoZSBUUjEgc3BlYywgd2hpY2ggcmVxdWlyZXMgdGhlIGhlYWRlciB0byBi
ZSA8dHVwbGU+LgogCi0jaWYgIUdURVNUX0hBU19SVFRJICYmIEdURVNUX0dDQ19WRVJfIDwgNDAz
MDIKKyMgIGlmICFHVEVTVF9IQVNfUlRUSSAmJiBHVEVTVF9HQ0NfVkVSXyA8IDQwMzAyCiAvLyBV
bnRpbCB2ZXJzaW9uIDQuMy4yLCBnY2MgaGFzIGEgYnVnIHRoYXQgY2F1c2VzIDx0cjEvZnVuY3Rp
b25hbD4sCiAvLyB3aGljaCBpcyAjaW5jbHVkZWQgYnkgPHRyMS90dXBsZT4sIHRvIG5vdCBjb21w
aWxlIHdoZW4gUlRUSSBpcwogLy8gZGlzYWJsZWQuICBfVFIxX0ZVTkNUSU9OQUwgaXMgdGhlIGhl
YWRlciBndWFyZCBmb3IKIC8vIDx0cjEvZnVuY3Rpb25hbD4uICBIZW5jZSB0aGUgZm9sbG93aW5n
ICNkZWZpbmUgaXMgYSBoYWNrIHRvIHByZXZlbnQKIC8vIDx0cjEvZnVuY3Rpb25hbD4gZnJvbSBi
ZWluZyBpbmNsdWRlZC4KLSNkZWZpbmUgX1RSMV9GVU5DVElPTkFMIDEKLSNpbmNsdWRlIDx0cjEv
dHVwbGU+Ci0jdW5kZWYgX1RSMV9GVU5DVElPTkFMICAvLyBBbGxvd3MgdGhlIHVzZXIgdG8gI2lu
Y2x1ZGUKKyMgICBkZWZpbmUgX1RSMV9GVU5DVElPTkFMIDEKKyMgICBpbmNsdWRlIDx0cjEvdHVw
bGU+CisjICAgdW5kZWYgX1RSMV9GVU5DVElPTkFMICAvLyBBbGxvd3MgdGhlIHVzZXIgdG8gI2lu
Y2x1ZGUKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDx0cjEvZnVuY3Rpb25hbD4gaWYgaGUg
Y2hvb3NlcyB0by4KLSNlbHNlCi0jaW5jbHVkZSA8dHIxL3R1cGxlPiAgLy8gTk9MSU5UCi0jZW5k
aWYgIC8vICFHVEVTVF9IQVNfUlRUSSAmJiBHVEVTVF9HQ0NfVkVSXyA8IDQwMzAyCisjICBlbHNl
CisjICAgaW5jbHVkZSA8dHIxL3R1cGxlPiAgLy8gTk9MSU5UCisjICBlbmRpZiAgLy8gIUdURVNU
X0hBU19SVFRJICYmIEdURVNUX0dDQ19WRVJfIDwgNDAzMDIKIAotI2Vsc2UKKyMgZWxzZQogLy8g
SWYgdGhlIGNvbXBpbGVyIGlzIG5vdCBHQ0MgNC4wKywgd2UgYXNzdW1lIHRoZSB1c2VyIGlzIHVz
aW5nIGEKIC8vIHNwZWMtY29uZm9ybWluZyBUUjEgaW1wbGVtZW50YXRpb24uCi0jaW5jbHVkZSA8
dHVwbGU+ICAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUKKyMg
IGluY2x1ZGUgPHR1cGxlPiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydCAgLy8gTk9MSU5UCisjIGVu
ZGlmICAvLyBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRQogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19U
UjFfVFVQTEUKIApAQCAtNDgxLDMwICs3NTIsNDYgQEAKICNpZm5kZWYgR1RFU1RfSEFTX0NMT05F
CiAvLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cywgc28gd2UgbmVlZCB0byBmaWd1cmUgaXQgb3V0
LgogCi0jaWYgR1RFU1RfT1NfTElOVVggJiYgIWRlZmluZWQoX19pYTY0X18pCi0jZGVmaW5lIEdU
RVNUX0hBU19DTE9ORSAxCi0jZWxzZQotI2RlZmluZSBHVEVTVF9IQVNfQ0xPTkUgMAotI2VuZGlm
ICAvLyBHVEVTVF9PU19MSU5VWCAmJiAhZGVmaW5lZChfX2lhNjRfXykKKyMgaWYgR1RFU1RfT1Nf
TElOVVggJiYgIWRlZmluZWQoX19pYTY0X18pCisjICBpZiBHVEVTVF9PU19MSU5VWF9BTkRST0lE
CisvLyBPbiBBbmRyb2lkLCBjbG9uZSgpIGlzIG9ubHkgYXZhaWxhYmxlIG9uIEFSTSBzdGFydGlu
ZyB3aXRoIEdpbmdlcmJyZWFkLgorIyAgICBpZiBkZWZpbmVkKF9fYXJtX18pICYmIF9fQU5EUk9J
RF9BUElfXyA+PSA5CisjICAgICBkZWZpbmUgR1RFU1RfSEFTX0NMT05FIDEKKyMgICAgZWxzZQor
IyAgICAgZGVmaW5lIEdURVNUX0hBU19DTE9ORSAwCisjICAgIGVuZGlmCisjICBlbHNlCisjICAg
ZGVmaW5lIEdURVNUX0hBU19DTE9ORSAxCisjICBlbmRpZgorIyBlbHNlCisjICBkZWZpbmUgR1RF
U1RfSEFTX0NMT05FIDAKKyMgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYICYmICFkZWZpbmVkKF9f
aWE2NF9fKQogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORQogCiAvLyBEZXRlcm1pbmVzIHdo
ZXRoZXIgdG8gc3VwcG9ydCBzdHJlYW0gcmVkaXJlY3Rpb24uIFRoaXMgaXMgdXNlZCB0byB0ZXN0
CiAvLyBvdXRwdXQgY29ycmVjdG5lc3MgYW5kIHRvIGltcGxlbWVudCBkZWF0aCB0ZXN0cy4KLSNp
ZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZTUJJQU4KLSNkZWZpbmUg
R1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8gMQotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZTUJJQU4KKyNpZm5kZWYgR1RFU1RfSEFTX1NUUkVB
TV9SRURJUkVDVElPTgorLy8gQnkgZGVmYXVsdCwgd2UgYXNzdW1lIHRoYXQgc3RyZWFtIHJlZGly
ZWN0aW9uIGlzIHN1cHBvcnRlZCBvbiBhbGwKKy8vIHBsYXRmb3JtcyBleGNlcHQga25vd24gbW9i
aWxlIG9uZXMuCisjIGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNUX09TX1NZTUJJ
QU4gfHwgXAorICAgIEdURVNUX09TX1dJTkRPV1NfUEhPTkUgfHwgR1RFU1RfT1NfV0lORE9XU19S
VAorIyAgZGVmaW5lIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04gMAorIyBlbHNlCisjICBk
ZWZpbmUgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTiAxCisjIGVuZGlmICAvLyAhR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZTUJJQU4KKyNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1NUUkVBTV9SRURJUkVDVElPTgogCiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc3VwcG9y
dCBkZWF0aCB0ZXN0cy4KIC8vIEdvb2dsZSBUZXN0IGRvZXMgbm90IHN1cHBvcnQgZGVhdGggdGVz
dHMgZm9yIFZDIDcuMSBhbmQgZWFybGllciBhcwogLy8gYWJvcnQoKSBpbiBhIFZDIDcuMSBhcHBs
aWNhdGlvbiBjb21waWxlZCBhcyBHVUkgaW4gZGVidWcgY29uZmlnCiAvLyBwb3BzIHVwIGEgZGlh
bG9nIHdpbmRvdyB0aGF0IGNhbm5vdCBiZSBzdXBwcmVzc2VkIHByb2dyYW1tYXRpY2FsbHkuCi0j
aWYgKEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX0ZSRUVCU0QgfHwgR1RFU1RfT1NfSFVSRCB8
fCBcCi0gICAgIEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19DWUdXSU4gfHwgR1RFU1RfT1NfU09M
QVJJUyB8fCBcCisjaWYgKEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX0NZR1dJTiB8fCBHVEVT
VF9PU19TT0xBUklTIHx8IFwKKyAgICAgKEdURVNUX09TX01BQyAmJiAhR1RFU1RfT1NfSU9TKSB8
fCBcCiAgICAgIChHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1AgJiYgX01TQ19WRVIgPj0gMTQwMCkg
fHwgXAotICAgICBHVEVTVF9PU19XSU5ET1dTX01JTkdXIHx8IEdURVNUX09TX0FJWCkKLSNkZWZp
bmUgR1RFU1RfSEFTX0RFQVRIX1RFU1QgMQotI2luY2x1ZGUgPHZlY3Rvcj4gIC8vIE5PTElOVAor
ICAgICBHVEVTVF9PU19XSU5ET1dTX01JTkdXIHx8IEdURVNUX09TX0FJWCB8fCBHVEVTVF9PU19I
UFVYIHx8IFwKKyAgICAgR1RFU1RfT1NfT1BFTkJTRCB8fCBHVEVTVF9PU19RTlggfHwgR1RFU1Rf
T1NfRlJFRUJTRCkKKyMgZGVmaW5lIEdURVNUX0hBU19ERUFUSF9URVNUIDEKICNlbmRpZgogCiAv
LyBXZSBkb24ndCBzdXBwb3J0IE1TVkMgNy4xIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZCBub3cu
ICBUaGVyZWZvcmUKQEAgLTUxNSwxMSArODAyLDExIEBACiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIg
dG8gc3VwcG9ydCB0eXBlLWRyaXZlbiB0ZXN0cy4KIAogLy8gVHlwZWQgdGVzdHMgbmVlZCA8dHlw
ZWluZm8+IGFuZCB2YXJpYWRpYyBtYWNyb3MsIHdoaWNoIEdDQywgVkMrKyA4LjAsCi0vLyBTdW4g
UHJvIENDLCBhbmQgSUJNIFZpc3VhbCBBZ2Ugc3VwcG9ydC4KKy8vIFN1biBQcm8gQ0MsIElCTSBW
aXN1YWwgQWdlLCBhbmQgSFAgYUNDIHN1cHBvcnQuCiAjaWYgZGVmaW5lZChfX0dOVUNfXykgfHwg
KF9NU0NfVkVSID49IDE0MDApIHx8IGRlZmluZWQoX19TVU5QUk9fQ0MpIHx8IFwKLSAgICBkZWZp
bmVkKF9fSUJNQ1BQX18pCi0jZGVmaW5lIEdURVNUX0hBU19UWVBFRF9URVNUIDEKLSNkZWZpbmUg
R1RFU1RfSEFTX1RZUEVEX1RFU1RfUCAxCisgICAgZGVmaW5lZChfX0lCTUNQUF9fKSB8fCBkZWZp
bmVkKF9fSFBfYUNDKQorIyBkZWZpbmUgR1RFU1RfSEFTX1RZUEVEX1RFU1QgMQorIyBkZWZpbmUg
R1RFU1RfSEFTX1RZUEVEX1RFU1RfUCAxCiAjZW5kaWYKIAogLy8gRGV0ZXJtaW5lcyB3aGV0aGVy
IHRvIHN1cHBvcnQgQ29tYmluZSgpLiBUaGlzIG9ubHkgbWFrZXMgc2Vuc2Ugd2hlbgpAQCAtNTI3
LDEzICs4MTQsMTggQEAKIC8vIHdvcmsgb24gU3VuIFN0dWRpbyBzaW5jZSBpdCBkb2Vzbid0IHVu
ZGVyc3RhbmQgdGVtcGxhdGVkIGNvbnZlcnNpb24KIC8vIG9wZXJhdG9ycy4KICNpZiBHVEVTVF9I
QVNfUEFSQU1fVEVTVCAmJiBHVEVTVF9IQVNfVFIxX1RVUExFICYmICFkZWZpbmVkKF9fU1VOUFJP
X0NDKQotI2RlZmluZSBHVEVTVF9IQVNfQ09NQklORSAxCisjIGRlZmluZSBHVEVTVF9IQVNfQ09N
QklORSAxCiAjZW5kaWYKIAogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzeXN0ZW0gY29tcGls
ZXIgdXNlcyBVVEYtMTYgZm9yIGVuY29kaW5nIHdpZGUgc3RyaW5ncy4KICNkZWZpbmUgR1RFU1Rf
V0lERV9TVFJJTkdfVVNFU19VVEYxNl8gXAogICAgIChHVEVTVF9PU19XSU5ET1dTIHx8IEdURVNU
X09TX0NZR1dJTiB8fCBHVEVTVF9PU19TWU1CSUFOIHx8IEdURVNUX09TX0FJWCkKIAorLy8gRGV0
ZXJtaW5lcyB3aGV0aGVyIHRlc3QgcmVzdWx0cyBjYW4gYmUgc3RyZWFtZWQgdG8gYSBzb2NrZXQu
CisjaWYgR1RFU1RfT1NfTElOVVgKKyMgZGVmaW5lIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18g
MQorI2VuZGlmCisKIC8vIERlZmluZXMgc29tZSB1dGlsaXR5IG1hY3Jvcy4KIAogLy8gVGhlIEdO
VSBjb21waWxlciBlbWl0cyBhIHdhcm5pbmcgaWYgbmVzdGVkICJpZiIgc3RhdGVtZW50cyBhcmUg
Zm9sbG93ZWQgYnkKQEAgLTU0NSw5ICs4MzcsOSBAQAogLy8KIC8vIFRoZSAic3dpdGNoICgwKSBj
YXNlIDA6IiBpZGlvbSBpcyB1c2VkIHRvIHN1cHByZXNzIHRoaXMuCiAjaWZkZWYgX19JTlRFTF9D
T01QSUxFUgotI2RlZmluZSBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXworIyBkZWZpbmUg
R1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8KICNlbHNlCi0jZGVmaW5lIEdURVNUX0FNQklH
VU9VU19FTFNFX0JMT0NLRVJfIHN3aXRjaCAoMCkgY2FzZSAwOiAgLy8gTk9MSU5UCisjIGRlZmlu
ZSBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBzd2l0Y2ggKDApIGNhc2UgMDogZGVmYXVs
dDogIC8vIE5PTElOVAogI2VuZGlmCiAKIC8vIFVzZSB0aGlzIGFubm90YXRpb24gYXQgdGhlIGVu
ZCBvZiBhIHN0cnVjdC9jbGFzcyBkZWZpbml0aW9uIHRvCkBAIC01NjIsOSArODU0LDE0IEBACiAv
LyBBbHNvIHVzZSBpdCBhZnRlciBhIHZhcmlhYmxlIG9yIHBhcmFtZXRlciBkZWNsYXJhdGlvbiB0
byB0ZWxsIHRoZQogLy8gY29tcGlsZXIgdGhlIHZhcmlhYmxlL3BhcmFtZXRlciBkb2VzIG5vdCBo
YXZlIHRvIGJlIHVzZWQuCiAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoQ09NUElM
RVJfSUNDKQotI2RlZmluZSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyBfX2F0dHJpYnV0ZV9fICgo
dW51c2VkKSkKLSNlbHNlCi0jZGVmaW5lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfCisjIGRlZmlu
ZSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKKyNlbGlm
IGRlZmluZWQoX19jbGFuZ19fKQorIyBpZiBfX2hhc19hdHRyaWJ1dGUodW51c2VkKQorIyAgZGVm
aW5lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQorIyBl
bmRpZgorI2VuZGlmCisjaWZuZGVmIEdURVNUX0FUVFJJQlVURV9VTlVTRURfCisjIGRlZmluZSBH
VEVTVF9BVFRSSUJVVEVfVU5VU0VEXwogI2VuZGlmCiAKIC8vIEEgbWFjcm8gdG8gZGlzYWxsb3cg
b3BlcmF0b3I9CkBAIC01ODQsNzIgKzg4MSwyMjcgQEAKIC8vCiAvLyAgIFNwcm9ja2V0KiBBbGxv
Y2F0ZVNwcm9ja2V0KCkgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXzsKICNpZiBkZWZpbmVkKF9fR05V
Q19fKSAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0gMzA0MDApICYmICFkZWZpbmVkKENPTVBJTEVSX0lD
QykKLSNkZWZpbmUgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXyBfX2F0dHJpYnV0ZV9fICgod2Fybl91
bnVzZWRfcmVzdWx0KSkKKyMgZGVmaW5lIEdURVNUX01VU1RfVVNFX1JFU1VMVF8gX19hdHRyaWJ1
dGVfXyAoKHdhcm5fdW51c2VkX3Jlc3VsdCkpCiAjZWxzZQotI2RlZmluZSBHVEVTVF9NVVNUX1VT
RV9SRVNVTFRfCisjIGRlZmluZSBHVEVTVF9NVVNUX1VTRV9SRVNVTFRfCiAjZW5kaWYgIC8vIF9f
R05VQ19fICYmIChHVEVTVF9HQ0NfVkVSXyA+PSAzMDQwMCkgJiYgIUNPTVBJTEVSX0lDQwogCisv
LyBNUyBDKysgY29tcGlsZXIgZW1pdHMgd2FybmluZyB3aGVuIGEgY29uZGl0aW9uYWwgZXhwcmVz
c2lvbiBpcyBjb21waWxlIHRpbWUKKy8vIGNvbnN0YW50LiBJbiBzb21lIGNvbnRleHRzIHRoaXMg
d2FybmluZyBpcyBmYWxzZSBwb3NpdGl2ZSBhbmQgbmVlZHMgdG8gYmUKKy8vIHN1cHByZXNzZWQu
IFVzZSB0aGUgZm9sbG93aW5nIHR3byBtYWNyb3MgaW4gc3VjaCBjYXNlczoKKy8vCisvLyBHVEVT
VF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BVU0hfKCkKKy8vIHdoaWxlICh0cnVlKSB7CisvLyBH
VEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BPUF8oKQorLy8gfQorIyBkZWZpbmUgR1RFU1Rf
SU5URU5USU9OQUxfQ09OU1RfQ09ORF9QVVNIXygpIFwKKyAgICBHVEVTVF9ESVNBQkxFX01TQ19X
QVJOSU5HU19QVVNIXyg0MTI3KQorIyBkZWZpbmUgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09O
RF9QT1BfKCkgXAorICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQorCiAvLyBE
ZXRlcm1pbmUgd2hldGhlciB0aGUgY29tcGlsZXIgc3VwcG9ydHMgTWljcm9zb2Z0J3MgU3RydWN0
dXJlZCBFeGNlcHRpb24KIC8vIEhhbmRsaW5nLiAgVGhpcyBpcyBzdXBwb3J0ZWQgYnkgc2V2ZXJh
bCBXaW5kb3dzIGNvbXBpbGVycyBidXQgZ2VuZXJhbGx5CiAvLyBkb2VzIG5vdCBleGlzdCBvbiBh
bnkgb3RoZXIgc3lzdGVtLgogI2lmbmRlZiBHVEVTVF9IQVNfU0VICiAvLyBUaGUgdXNlciBkaWRu
J3QgdGVsbCB1cywgc28gd2UgbmVlZCB0byBmaWd1cmUgaXQgb3V0LgogCi0jaWYgZGVmaW5lZChf
TVNDX1ZFUikgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pCisjIGlmIGRlZmluZWQoX01TQ19WRVIp
IHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQogLy8gVGhlc2UgdHdvIGNvbXBpbGVycyBhcmUga25v
d24gdG8gc3VwcG9ydCBTRUguCi0jZGVmaW5lIEdURVNUX0hBU19TRUggMQotI2Vsc2UKKyMgIGRl
ZmluZSBHVEVTVF9IQVNfU0VIIDEKKyMgZWxzZQogLy8gQXNzdW1lIG5vIFNFSC4KLSNkZWZpbmUg
R1RFU1RfSEFTX1NFSCAwCi0jZW5kaWYKKyMgIGRlZmluZSBHVEVTVF9IQVNfU0VIIDAKKyMgZW5k
aWYKKworI2RlZmluZSBHVEVTVF9JU19USFJFQURTQUZFIFwKKyAgICAoR1RFU1RfSEFTX01VVEVY
X0FORF9USFJFQURfTE9DQUxfIFwKKyAgICAgfHwgKEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNU
X09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQpIFwKKyAgICAgfHwgR1RF
U1RfSEFTX1BUSFJFQUQpCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAogCiAjaWZkZWYgX01T
Q19WRVIKKyMgaWYgR1RFU1RfTElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZCisjICBkZWZpbmUgR1RF
U1RfQVBJXyBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyMgZWxpZiBHVEVTVF9DUkVBVEVfU0hBUkVE
X0xJQlJBUlkKKyMgIGRlZmluZSBHVEVTVF9BUElfIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorIyBl
bmRpZgorI2VsaWYgX19HTlVDX18gPj0gNCB8fCBkZWZpbmVkKF9fY2xhbmdfXykKKyMgZGVmaW5l
IEdURVNUX0FQSV8gX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCisjZW5k
aWYgLy8gX01TQ19WRVIKIAotI2lmIEdURVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFSWQotI2Rl
ZmluZSBHVEVTVF9BUElfIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotI2VsaWYgR1RFU1RfQ1JFQVRF
X1NIQVJFRF9MSUJSQVJZCi0jZGVmaW5lIEdURVNUX0FQSV8gX19kZWNsc3BlYyhkbGxleHBvcnQp
CisjaWZuZGVmIEdURVNUX0FQSV8KKyMgZGVmaW5lIEdURVNUX0FQSV8KICNlbmRpZgogCi0jZW5k
aWYgIC8vIF9NU0NfVkVSCisjaWZkZWYgX19HTlVDX18KKy8vIEFzayB0aGUgY29tcGlsZXIgdG8g
bmV2ZXIgaW5saW5lIGEgZ2l2ZW4gZnVuY3Rpb24uCisjIGRlZmluZSBHVEVTVF9OT19JTkxJTkVf
IF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKKyNlbHNlCisjIGRlZmluZSBHVEVTVF9OT19JTkxJ
TkVfCisjZW5kaWYKIAotI2lmbmRlZiBHVEVTVF9BUElfCi0jZGVmaW5lIEdURVNUX0FQSV8KKy8v
IF9MSUJDUFBfVkVSU0lPTiBpcyBkZWZpbmVkIGJ5IHRoZSBsaWJjKysgbGlicmFyeSBmcm9tIHRo
ZSBMTFZNIHByb2plY3QuCisjaWYgZGVmaW5lZChfX0dMSUJDWFhfXykgfHwgZGVmaW5lZChfTElC
Q1BQX1ZFUlNJT04pCisjIGRlZmluZSBHVEVTVF9IQVNfQ1hYQUJJX0hfIDEKKyNlbHNlCisjIGRl
ZmluZSBHVEVTVF9IQVNfQ1hYQUJJX0hfIDAKICNlbmRpZgogCisvLyBBIGZ1bmN0aW9uIGxldmVs
IGF0dHJpYnV0ZSB0byBkaXNhYmxlIGNoZWNraW5nIGZvciB1c2Ugb2YgdW5pbml0aWFsaXplZAor
Ly8gbWVtb3J5IHdoZW4gYnVpbHQgd2l0aCBNZW1vcnlTYW5pdGl6ZXIuCisjaWYgZGVmaW5lZChf
X2NsYW5nX18pCisjIGlmIF9faGFzX2ZlYXR1cmUobWVtb3J5X3Nhbml0aXplcikKKyMgIGRlZmlu
ZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfTUVNT1JZXyBcCisgICAgICAgX19hdHRyaWJ1
dGVfXygobm9fc2FuaXRpemVfbWVtb3J5KSkKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0FUVFJJ
QlVURV9OT19TQU5JVElaRV9NRU1PUllfCisjIGVuZGlmICAvLyBfX2hhc19mZWF0dXJlKG1lbW9y
eV9zYW5pdGl6ZXIpCisjZWxzZQorIyBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpF
X01FTU9SWV8KKyNlbmRpZiAgLy8gX19jbGFuZ19fCisKKy8vIEEgZnVuY3Rpb24gbGV2ZWwgYXR0
cmlidXRlIHRvIGRpc2FibGUgQWRkcmVzc1Nhbml0aXplciBpbnN0cnVtZW50YXRpb24uCisjaWYg
ZGVmaW5lZChfX2NsYW5nX18pCisjIGlmIF9faGFzX2ZlYXR1cmUoYWRkcmVzc19zYW5pdGl6ZXIp
CisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX0FERFJFU1NfIFwKKyAgICAg
ICBfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV9hZGRyZXNzKSkKKyMgZWxzZQorIyAgZGVmaW5l
IEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTXworIyBlbmRpZiAgLy8gX19oYXNf
ZmVhdHVyZShhZGRyZXNzX3Nhbml0aXplcikKKyNlbHNlCisjIGRlZmluZSBHVEVTVF9BVFRSSUJV
VEVfTk9fU0FOSVRJWkVfQUREUkVTU18KKyNlbmRpZiAgLy8gX19jbGFuZ19fCisKKy8vIEEgZnVu
Y3Rpb24gbGV2ZWwgYXR0cmlidXRlIHRvIGRpc2FibGUgVGhyZWFkU2FuaXRpemVyIGluc3RydW1l
bnRhdGlvbi4KKyNpZiBkZWZpbmVkKF9fY2xhbmdfXykKKyMgaWYgX19oYXNfZmVhdHVyZSh0aHJl
YWRfc2FuaXRpemVyKQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9USFJF
QURfIFwKKyAgICAgICBfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV90aHJlYWQpKQorIyBlbHNl
CisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KKyMgZW5kaWYg
IC8vIF9faGFzX2ZlYXR1cmUodGhyZWFkX3Nhbml0aXplcikKKyNlbHNlCisjIGRlZmluZSBHVEVT
VF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXworI2VuZGlmICAvLyBfX2NsYW5nX18KKwog
bmFtZXNwYWNlIHRlc3RpbmcgewogCiBjbGFzcyBNZXNzYWdlOwogCisjaWYgZGVmaW5lZChHVEVT
VF9UVVBMRV9OQU1FU1BBQ0VfKQorLy8gSW1wb3J0IHR1cGxlIGFuZCBmcmllbmRzIGludG8gdGhl
IDo6dGVzdGluZyBuYW1lc3BhY2UuCisvLyBJdCBpcyBwYXJ0IG9mIG91ciBpbnRlcmZhY2UsIGhh
dmluZyB0aGVtIGluIDo6dGVzdGluZyBhbGxvd3MgdXMgdG8gY2hhbmdlCisvLyB0aGVpciB0eXBl
cyBhcyBuZWVkZWQuCit1c2luZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjpnZXQ7Cit1c2luZyBH
VEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjptYWtlX3R1cGxlOwordXNpbmcgR1RFU1RfVFVQTEVfTkFN
RVNQQUNFXzo6dHVwbGU7Cit1c2luZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjp0dXBsZV9zaXpl
OwordXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXzo6dHVwbGVfZWxlbWVudDsKKyNlbmRpZiAg
Ly8gZGVmaW5lZChHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfKQorCiBuYW1lc3BhY2UgaW50ZXJuYWwg
ewogCi1jbGFzcyBTdHJpbmc7CisvLyBBIHNlY3JldCB0eXBlIHRoYXQgR29vZ2xlIFRlc3QgdXNl
cnMgZG9uJ3Qga25vdyBhYm91dC4gIEl0IGhhcyBubworLy8gZGVmaW5pdGlvbiBvbiBwdXJwb3Nl
LiAgVGhlcmVmb3JlIGl0J3MgaW1wb3NzaWJsZSB0byBjcmVhdGUgYQorLy8gU2VjcmV0IG9iamVj
dCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LgorY2xhc3MgU2VjcmV0OwogCi1jbGFzcyBTdHJTdHJl
YW0gOiBwdWJsaWMgOjpzdGQ6OnN0cmluZ3N0cmVhbSB7Ci0gcHVibGljOgotICB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9Ci0gIHZvaWQqIG9wZXJhdG9y
IG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfQorLy8gVGhlIEdURVNUX0NPTVBJ
TEVfQVNTRVJUXyBtYWNybyBjYW4gYmUgdXNlZCB0byB2ZXJpZnkgdGhhdCBhIGNvbXBpbGUgdGlt
ZQorLy8gZXhwcmVzc2lvbiBpcyB0cnVlLiBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIHVzZSBpdCB0
byB2ZXJpZnkgdGhlCisvLyBzaXplIG9mIGEgc3RhdGljIGFycmF5OgorLy8KKy8vICAgR1RFU1Rf
Q09NUElMRV9BU1NFUlRfKEdURVNUX0FSUkFZX1NJWkVfKG5hbWVzKSA9PSBOVU1fTkFNRVMsCisv
LyAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc19pbmNvcnJlY3Rfc2l6ZSk7CisvLworLy8g
b3IgdG8gbWFrZSBzdXJlIGEgc3RydWN0IGlzIHNtYWxsZXIgdGhhbiBhIGNlcnRhaW4gc2l6ZToK
Ky8vCisvLyAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhzaXplb2YoZm9vKSA8IDEyOCwgZm9vX3Rv
b19sYXJnZSk7CisvLworLy8gVGhlIHNlY29uZCBhcmd1bWVudCB0byB0aGUgbWFjcm8gaXMgdGhl
IG5hbWUgb2YgdGhlIHZhcmlhYmxlLiBJZgorLy8gdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UsIG1v
c3QgY29tcGlsZXJzIHdpbGwgaXNzdWUgYSB3YXJuaW5nL2Vycm9yCisvLyBjb250YWluaW5nIHRo
ZSBuYW1lIG9mIHRoZSB2YXJpYWJsZS4KKworI2lmIEdURVNUX0xBTkdfQ1hYMTEKKyMgZGVmaW5l
IEdURVNUX0NPTVBJTEVfQVNTRVJUXyhleHByLCBtc2cpIHN0YXRpY19hc3NlcnQoZXhwciwgI21z
ZykKKyNlbHNlICAvLyAhR1RFU1RfTEFOR19DWFgxMQordGVtcGxhdGUgPGJvb2w+CisgIHN0cnVj
dCBDb21waWxlQXNzZXJ0IHsKK307CiAKLSAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXpl
KSB7Ci0gICAgcmV0dXJuIG1hbGxvYyhzaXplKTsKLSAgfQorIyBkZWZpbmUgR1RFU1RfQ09NUElM
RV9BU1NFUlRfKGV4cHIsIG1zZykgXAorICB0eXBlZGVmIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNv
bXBpbGVBc3NlcnQ8KHN0YXRpY19jYXN0PGJvb2w+KGV4cHIpKT4gXAorICAgICAgbXNnW3N0YXRp
Y19jYXN0PGJvb2w+KGV4cHIpID8gMSA6IC0xXSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXworI2Vu
ZGlmICAvLyAhR1RFU1RfTEFOR19DWFgxMQogCi0gIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQq
IHApIHsKLSAgICBmcmVlKHApOwotICB9CisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIEdU
RVNUX0NPTVBJTEVfQVNTRVJUXzoKKy8vCisvLyAoSW4gQysrMTEsIHdlIHNpbXBseSB1c2Ugc3Rh
dGljX2Fzc2VydCBpbnN0ZWFkIG9mIHRoZSBmb2xsb3dpbmcpCisvLworLy8gLSBHVEVTVF9DT01Q
SUxFX0FTU0VSVF8gd29ya3MgYnkgZGVmaW5pbmcgYW4gYXJyYXkgdHlwZSB0aGF0IGhhcyAtMQor
Ly8gICBlbGVtZW50cyAoYW5kIHRodXMgaXMgaW52YWxpZCkgd2hlbiB0aGUgZXhwcmVzc2lvbiBp
cyBmYWxzZS4KKy8vCisvLyAtIFRoZSBzaW1wbGVyIGRlZmluaXRpb24KKy8vCisvLyAgICAjZGVm
aW5lIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhleHByLCBtc2cpIHR5cGVkZWYgY2hhciBtc2dbKGV4
cHIpID8gMSA6IC0xXQorLy8KKy8vICAgZG9lcyBub3Qgd29yaywgYXMgZ2NjIHN1cHBvcnRzIHZh
cmlhYmxlLWxlbmd0aCBhcnJheXMgd2hvc2Ugc2l6ZXMKKy8vICAgYXJlIGRldGVybWluZWQgYXQg
cnVuLXRpbWUgKHRoaXMgaXMgZ2NjJ3MgZXh0ZW5zaW9uIGFuZCBub3QgcGFydAorLy8gICBvZiB0
aGUgQysrIHN0YW5kYXJkKS4gIEFzIGEgcmVzdWx0LCBnY2MgZmFpbHMgdG8gcmVqZWN0IHRoZQor
Ly8gICBmb2xsb3dpbmcgY29kZSB3aXRoIHRoZSBzaW1wbGUgZGVmaW5pdGlvbjoKKy8vCisvLyAg
ICAgaW50IGZvbzsKKy8vICAgICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oZm9vLCBtc2cpOyAvLyBu
b3Qgc3VwcG9zZWQgdG8gY29tcGlsZSBhcyBmb28gaXMKKy8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBub3QgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuCisvLworLy8g
LSBCeSB1c2luZyB0aGUgdHlwZSBDb21waWxlQXNzZXJ0PChib29sKGV4cHIpKT4sIHdlIGVuc3Vy
ZXMgdGhhdAorLy8gICBleHByIGlzIGEgY29tcGlsZS10aW1lIGNvbnN0YW50LiAgKFRlbXBsYXRl
IGFyZ3VtZW50cyBtdXN0IGJlCisvLyAgIGRldGVybWluZWQgYXQgY29tcGlsZS10aW1lLikKKy8v
CisvLyAtIFRoZSBvdXR0ZXIgcGFyZW50aGVzZXMgaW4gQ29tcGlsZUFzc2VydDwoYm9vbChleHBy
KSk+IGFyZSBuZWNlc3NhcnkKKy8vICAgdG8gd29yayBhcm91bmQgYSBidWcgaW4gZ2NjIDMuNC40
IGFuZCA0LjAuMS4gIElmIHdlIGhhZCB3cml0dGVuCisvLworLy8gICAgIENvbXBpbGVBc3NlcnQ8
Ym9vbChleHByKT4KKy8vCisvLyAgIGluc3RlYWQsIHRoZXNlIGNvbXBpbGVycyB3aWxsIHJlZnVz
ZSB0byBjb21waWxlCisvLworLy8gICAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyg1ID4gMCwgc29t
ZV9tZXNzYWdlKTsKKy8vCisvLyAgIChUaGV5IHNlZW0gdG8gdGhpbmsgdGhlICI+IiBpbiAiNSA+
IDAiIG1hcmtzIHRoZSBlbmQgb2YgdGhlCisvLyAgIHRlbXBsYXRlIGFyZ3VtZW50IGxpc3QuKQor
Ly8KKy8vIC0gVGhlIGFycmF5IHNpemUgaXMgKGJvb2woZXhwcikgPyAxIDogLTEpLCBpbnN0ZWFk
IG9mIHNpbXBseQorLy8KKy8vICAgICAoKGV4cHIpID8gMSA6IC0xKS4KKy8vCisvLyAgIFRoaXMg
aXMgdG8gYXZvaWQgcnVubmluZyBpbnRvIGEgYnVnIGluIE1TIFZDIDcuMSwgd2hpY2gKKy8vICAg
Y2F1c2VzICgoMC4wKSA/IDEgOiAtMSkgdG8gaW5jb3JyZWN0bHkgZXZhbHVhdGUgdG8gMS4KIAot
ICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgewotICAgIHJldHVybiBtYWxsb2Mo
c2l6ZSk7Ci0gIH0KKy8vIFN0YXRpY0Fzc2VydFR5cGVFcUhlbHBlciBpcyB1c2VkIGJ5IFN0YXRp
Y0Fzc2VydFR5cGVFcSBkZWZpbmVkIGluIGd0ZXN0LmguCisvLworLy8gVGhpcyB0ZW1wbGF0ZSBp
cyBkZWNsYXJlZCwgYnV0IGludGVudGlvbmFsbHkgdW5kZWZpbmVkLgordGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMj4KK3N0cnVjdCBTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI7CiAK
LSAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7Ci0gICAgZnJlZShwKTsKLSAgfQor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgU3RhdGljQXNzZXJ0VHlwZUVxSGVscGVyPFQs
IFQ+IHsKKyAgZW51bSB7IHZhbHVlID0gdHJ1ZSB9OwogfTsKIAorLy8gRXZhbHVhdGVzIHRvIHRo
ZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gJ2FycmF5Jy4KKyNkZWZpbmUgR1RFU1RfQVJSQVlfU0la
RV8oYXJyYXkpIChzaXplb2YoYXJyYXkpIC8gc2l6ZW9mKGFycmF5WzBdKSkKIAorI2lmIEdURVNU
X0hBU19HTE9CQUxfU1RSSU5HCit0eXBlZGVmIDo6c3RyaW5nIHN0cmluZzsKKyNlbHNlCit0eXBl
ZGVmIDo6c3RkOjpzdHJpbmcgc3RyaW5nOworI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NU
UklORworCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCit0eXBlZGVmIDo6d3N0cmluZyB3
c3RyaW5nOworI2VsaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCit0eXBlZGVmIDo6c3RkOjp3c3Ry
aW5nIHdzdHJpbmc7CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwogCiAvLyBB
IGhlbHBlciBmb3Igc3VwcHJlc3Npbmcgd2FybmluZ3Mgb24gY29uc3RhbnQgY29uZGl0aW9uLiAg
SXQganVzdAogLy8gcmV0dXJucyAnY29uZGl0aW9uJy4KQEAgLTY4NSw2ICsxMTM3LDEyIEBAIGNs
YXNzIHNjb3BlZF9wdHIgewogICAgICAgcHRyXyA9IHA7CiAgICAgfQogICB9CisKKyAgZnJpZW5k
IHZvaWQgc3dhcChzY29wZWRfcHRyJiBhLCBzY29wZWRfcHRyJiBiKSB7CisgICAgdXNpbmcgc3Rk
Ojpzd2FwOworICAgIHN3YXAoYS5wdHJfLCBiLnB0cl8pOworICB9CisKICBwcml2YXRlOgogICBU
KiBwdHJfOwogCkBAIC03MDUsNyArMTE2Myw5IEBAIGNsYXNzIEdURVNUX0FQSV8gUkUgewogICBS
RShjb25zdCA6OnN0ZDo6c3RyaW5nJiByZWdleCkgeyBJbml0KHJlZ2V4LmNfc3RyKCkpOyB9ICAv
LyBOT0xJTlQKIAogI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKICAgUkUoY29uc3QgOjpz
dHJpbmcmIHJlZ2V4KSB7IEluaXQocmVnZXguY19zdHIoKSk7IH0gIC8vIE5PTElOVAorCiAjZW5k
aWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCiAKICAgUkUoY29uc3QgY2hhciogcmVnZXgp
IHsgSW5pdChyZWdleCk7IH0gIC8vIE5PTElOVApAQCAtNzI5LDEyICsxMTg5LDE0IEBAIGNsYXNz
IEdURVNUX0FQSV8gUkUgewogICB9CiAKICNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCiAg
IHN0YXRpYyBib29sIEZ1bGxNYXRjaChjb25zdCA6OnN0cmluZyYgc3RyLCBjb25zdCBSRSYgcmUp
IHsKICAgICByZXR1cm4gRnVsbE1hdGNoKHN0ci5jX3N0cigpLCByZSk7CiAgIH0KICAgc3RhdGlj
IGJvb2wgUGFydGlhbE1hdGNoKGNvbnN0IDo6c3RyaW5nJiBzdHIsIGNvbnN0IFJFJiByZSkgewog
ICAgIHJldHVybiBQYXJ0aWFsTWF0Y2goc3RyLmNfc3RyKCksIHJlKTsKICAgfQorCiAjZW5kaWYg
IC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCiAKICAgc3RhdGljIGJvb2wgRnVsbE1hdGNoKGNv
bnN0IGNoYXIqIHN0ciwgY29uc3QgUkUmIHJlKTsKQEAgLTc0MywyMiArMTIwNSwzNiBAQCBjbGFz
cyBHVEVTVF9BUElfIFJFIHsKICBwcml2YXRlOgogICB2b2lkIEluaXQoY29uc3QgY2hhciogcmVn
ZXgpOwogCi0gIC8vIFdlIHVzZSBhIGNvbnN0IGNoYXIqIGluc3RlYWQgb2YgYSBzdHJpbmcsIGFz
IEdvb2dsZSBUZXN0IG1heSBiZSB1c2VkCi0gIC8vIHdoZXJlIHN0cmluZyBpcyBub3QgYXZhaWxh
YmxlLiAgV2UgYWxzbyBkbyBub3QgdXNlIEdvb2dsZSBUZXN0J3Mgb3duCi0gIC8vIFN0cmluZyB0
eXBlIGhlcmUsIGluIG9yZGVyIHRvIHNpbXBsaWZ5IGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZQot
ICAvLyBmaWxlcy4KKyAgLy8gV2UgdXNlIGEgY29uc3QgY2hhciogaW5zdGVhZCBvZiBhbiBzdGQ6
OnN0cmluZywgYXMgR29vZ2xlIFRlc3QgdXNlZCB0byBiZQorICAvLyB1c2VkIHdoZXJlIHN0ZDo6
c3RyaW5nIGlzIG5vdCBhdmFpbGFibGUuICBUT0RPKHdhbkBnb29nbGUuY29tKTogY2hhbmdlIHRv
CisgIC8vIHN0ZDo6c3RyaW5nLgogICBjb25zdCBjaGFyKiBwYXR0ZXJuXzsKICAgYm9vbCBpc192
YWxpZF87CisKICNpZiBHVEVTVF9VU0VTX1BPU0lYX1JFCisKICAgcmVnZXhfdCBmdWxsX3JlZ2V4
XzsgICAgIC8vIEZvciBGdWxsTWF0Y2goKS4KICAgcmVnZXhfdCBwYXJ0aWFsX3JlZ2V4XzsgIC8v
IEZvciBQYXJ0aWFsTWF0Y2goKS4KKwogI2Vsc2UgIC8vIEdURVNUX1VTRVNfU0lNUExFX1JFCisK
ICAgY29uc3QgY2hhciogZnVsbF9wYXR0ZXJuXzsgIC8vIEZvciBGdWxsTWF0Y2goKTsKKwogI2Vu
ZGlmCiAKICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhSRSk7CiB9OwogCisvLyBGb3JtYXRzIGEg
c291cmNlIGZpbGUgcGF0aCBhbmQgYSBsaW5lIG51bWJlciBhcyB0aGV5IHdvdWxkIGFwcGVhcgor
Ly8gaW4gYW4gZXJyb3IgbWVzc2FnZSBmcm9tIHRoZSBjb21waWxlciB1c2VkIHRvIGNvbXBpbGUg
dGhpcyBjb2RlLgorR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEZvcm1hdEZpbGVMb2NhdGlvbihj
b25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7CisKKy8vIEZvcm1hdHMgYSBmaWxlIGxvY2F0aW9u
IGZvciBjb21waWxlci1pbmRlcGVuZGVudCBYTUwgb3V0cHV0LgorLy8gQWx0aG91Z2ggdGhpcyBm
dW5jdGlvbiBpcyBub3QgcGxhdGZvcm0gZGVwZW5kZW50LCB3ZSBwdXQgaXQgbmV4dCB0bworLy8g
Rm9ybWF0RmlsZUxvY2F0aW9uIGluIG9yZGVyIHRvIGNvbnRyYXN0IHRoZSB0d28gZnVuY3Rpb25z
LgorR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxl
TG9jYXRpb24oY29uc3QgY2hhciogZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lKTsKKwogLy8gRGVmaW5l
cyBsb2dnaW5nIHV0aWxpdGllczoKIC8vICAgR1RFU1RfTE9HXyhzZXZlcml0eSkgLSBsb2dzIG1l
c3NhZ2VzIGF0IHRoZSBzcGVjaWZpZWQgc2V2ZXJpdHkgbGV2ZWwuIFRoZQogLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgaXRzZWxmIGlzIHN0cmVhbWVkIGludG8gdGhlIG1hY3Jv
LgpAQCAtNzkwLDEzICsxMjY2LDE4IEBAIGNsYXNzIEdURVNUX0FQSV8gR1Rlc3RMb2cgewogICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEdUZXN0TG9nKTsKIH07CiAKLSNkZWZpbmUg
R1RFU1RfTE9HXyhzZXZlcml0eSkgXAorI2lmICFkZWZpbmVkKEdURVNUX0xPR18pCisKKyMgZGVm
aW5lIEdURVNUX0xPR18oc2V2ZXJpdHkpIFwKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpHVGVz
dExvZyg6OnRlc3Rpbmc6OmludGVybmFsOjpHVEVTVF8jI3NldmVyaXR5LCBcCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKS5HZXRTdHJlYW0oKQog
CiBpbmxpbmUgdm9pZCBMb2dUb1N0ZGVycigpIHt9CiBpbmxpbmUgdm9pZCBGbHVzaEluZm9Mb2co
KSB7IGZmbHVzaChOVUxMKTsgfQogCisjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0xPR18pCisK
KyNpZiAhZGVmaW5lZChHVEVTVF9DSEVDS18pCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAt
IERPIE5PVCBVU0UuCiAvLwogLy8gR1RFU1RfQ0hFQ0tfIGlzIGFuIGFsbC1tb2RlIGFzc2VydC4g
SXQgYWJvcnRzIHRoZSBwcm9ncmFtIGlmIHRoZSBjb25kaXRpb24KQEAgLTgxMSwxMiArMTI5Miwx
MyBAQCBpbmxpbmUgdm9pZCBGbHVzaEluZm9Mb2coKSB7IGZmbHVzaChOVUxMKTsgfQogLy8gICAg
Y29uZGl0aW9uIGl0c2VsZiwgcGx1cyBhZGRpdGlvbmFsIG1lc3NhZ2Ugc3RyZWFtZWQgaW50byBp
dCwgaWYgYW55LAogLy8gICAgYW5kIHRoZW4gaXQgYWJvcnRzIHRoZSBwcm9ncmFtLiBJdCBhYm9y
dHMgdGhlIHByb2dyYW0gaXJyZXNwZWN0aXZlIG9mCiAvLyAgICB3aGV0aGVyIGl0IGlzIGJ1aWx0
IGluIHRoZSBkZWJ1ZyBtb2RlIG9yIG5vdC4KLSNkZWZpbmUgR1RFU1RfQ0hFQ0tfKGNvbmRpdGlv
bikgXAorIyBkZWZpbmUgR1RFU1RfQ0hFQ0tfKGNvbmRpdGlvbikgXAogICAgIEdURVNUX0FNQklH
VU9VU19FTFNFX0JMT0NLRVJfIFwKICAgICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXNUcnVl
KGNvbmRpdGlvbikpIFwKICAgICAgIDsgXAogICAgIGVsc2UgXAogICAgICAgR1RFU1RfTE9HXyhG
QVRBTCkgPDwgIkNvbmRpdGlvbiAiICNjb25kaXRpb24gIiBmYWlsZWQuICIKKyNlbmRpZiAgLy8g
IWRlZmluZWQoR1RFU1RfQ0hFQ0tfKQogCiAvLyBBbiBhbGwtbW9kZSBhc3NlcnQgdG8gdmVyaWZ5
IHRoYXQgdGhlIGdpdmVuIFBPU0lYLXN0eWxlIGZ1bmN0aW9uCiAvLyBjYWxsIHJldHVybnMgMCAo
aW5kaWNhdGluZyBzdWNjZXNzKS4gIEtub3duIGxpbWl0YXRpb246IHRoaXMKQEAgLTgyOCw4ICsx
MzEwLDc5IEBAIGlubGluZSB2b2lkIEZsdXNoSW5mb0xvZygpIHsgZmZsdXNoKE5VTEwpOyB9CiAg
ICAgR1RFU1RfTE9HXyhGQVRBTCkgPDwgI3Bvc2l4X2NhbGwgPDwgImZhaWxlZCB3aXRoIGVycm9y
ICIgXAogICAgICAgICAgICAgICAgICAgICAgIDw8IGd0ZXN0X2Vycm9yCiAKKyNpZiBHVEVTVF9I
QVNfU1REX01PVkVfCit1c2luZyBzdGQ6Om1vdmU7CisjZWxzZSAgLy8gR1RFU1RfSEFTX1NURF9N
T1ZFXwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25zdCBUJiBtb3ZlKGNvbnN0IFQmIHQpIHsK
KyAgcmV0dXJuIHQ7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfTU9WRV8KKwogLy8gSU5U
RVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KIC8vCisvLyBV
c2UgSW1wbGljaXRDYXN0XyBhcyBhIHNhZmUgdmVyc2lvbiBvZiBzdGF0aWNfY2FzdCBmb3IgdXBj
YXN0aW5nIGluCisvLyB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4gY2FzdGluZyBhIEZvbyogdG8g
YSBTdXBlcmNsYXNzT2ZGb28qIG9yIGEKKy8vIGNvbnN0IEZvbyopLiAgV2hlbiB5b3UgdXNlIElt
cGxpY2l0Q2FzdF8sIHRoZSBjb21waWxlciBjaGVja3MgdGhhdAorLy8gdGhlIGNhc3QgaXMgc2Fm
ZS4gIFN1Y2ggZXhwbGljaXQgSW1wbGljaXRDYXN0X3MgYXJlIG5lY2Vzc2FyeSBpbgorLy8gc3Vy
cHJpc2luZ2x5IG1hbnkgc2l0dWF0aW9ucyB3aGVyZSBDKysgZGVtYW5kcyBhbiBleGFjdCB0eXBl
IG1hdGNoCisvLyBpbnN0ZWFkIG9mIGFuIGFyZ3VtZW50IHR5cGUgY29udmVydGFibGUgdG8gYSB0
YXJnZXQgdHlwZS4KKy8vCisvLyBUaGUgc3ludGF4IGZvciB1c2luZyBJbXBsaWNpdENhc3RfIGlz
IHRoZSBzYW1lIGFzIGZvciBzdGF0aWNfY2FzdDoKKy8vCisvLyAgIEltcGxpY2l0Q2FzdF88VG9U
eXBlPihleHByKQorLy8KKy8vIEltcGxpY2l0Q2FzdF8gd291bGQgaGF2ZSBiZWVuIHBhcnQgb2Yg
dGhlIEMrKyBzdGFuZGFyZCBsaWJyYXJ5LAorLy8gYnV0IHRoZSBwcm9wb3NhbCB3YXMgc3VibWl0
dGVkIHRvbyBsYXRlLiAgSXQgd2lsbCBwcm9iYWJseSBtYWtlCisvLyBpdHMgd2F5IGludG8gdGhl
IGxhbmd1YWdlIGluIHRoZSBmdXR1cmUuCisvLworLy8gVGhpcyByZWxhdGl2ZWx5IHVnbHkgbmFt
ZSBpcyBpbnRlbnRpb25hbC4gSXQgcHJldmVudHMgY2xhc2hlcyB3aXRoCisvLyBzaW1pbGFyIGZ1
bmN0aW9ucyB1c2VycyBtYXkgaGF2ZSAoZS5nLiwgaW1wbGljaXRfY2FzdCkuIFRoZSBpbnRlcm5h
bAorLy8gbmFtZXNwYWNlIGFsb25lIGlzIG5vdCBlbm91Z2ggYmVjYXVzZSB0aGUgZnVuY3Rpb24g
Y2FuIGJlIGZvdW5kIGJ5IEFETC4KK3RlbXBsYXRlPHR5cGVuYW1lIFRvPgoraW5saW5lIFRvIElt
cGxpY2l0Q2FzdF8oVG8geCkgeyByZXR1cm4geDsgfQorCisvLyBXaGVuIHlvdSB1cGNhc3QgKHRo
YXQgaXMsIGNhc3QgYSBwb2ludGVyIGZyb20gdHlwZSBGb28gdG8gdHlwZQorLy8gU3VwZXJjbGFz
c09mRm9vKSwgaXQncyBmaW5lIHRvIHVzZSBJbXBsaWNpdENhc3RfPD4sIHNpbmNlIHVwY2FzdHMK
Ky8vIGFsd2F5cyBzdWNjZWVkLiAgV2hlbiB5b3UgZG93bmNhc3QgKHRoYXQgaXMsIGNhc3QgYSBw
b2ludGVyIGZyb20KKy8vIHR5cGUgRm9vIHRvIHR5cGUgU3ViY2xhc3NPZkZvbyksIHN0YXRpY19j
YXN0PD4gaXNuJ3Qgc2FmZSwgYmVjYXVzZQorLy8gaG93IGRvIHlvdSBrbm93IHRoZSBwb2ludGVy
IGlzIHJlYWxseSBvZiB0eXBlIFN1YmNsYXNzT2ZGb28/ICBJdAorLy8gY291bGQgYmUgYSBiYXJl
IEZvbywgb3Igb2YgdHlwZSBEaWZmZXJlbnRTdWJjbGFzc09mRm9vLiAgVGh1cywKKy8vIHdoZW4g
eW91IGRvd25jYXN0LCB5b3Ugc2hvdWxkIHVzZSB0aGlzIG1hY3JvLiAgSW4gZGVidWcgbW9kZSwg
d2UKKy8vIHVzZSBkeW5hbWljX2Nhc3Q8PiB0byBkb3VibGUtY2hlY2sgdGhlIGRvd25jYXN0IGlz
IGxlZ2FsICh3ZSBkaWUKKy8vIGlmIGl0J3Mgbm90KS4gIEluIG5vcm1hbCBtb2RlLCB3ZSBkbyB0
aGUgZWZmaWNpZW50IHN0YXRpY19jYXN0PD4KKy8vIGluc3RlYWQuICBUaHVzLCBpdCdzIGltcG9y
dGFudCB0byB0ZXN0IGluIGRlYnVnIG1vZGUgdG8gbWFrZSBzdXJlCisvLyB0aGUgY2FzdCBpcyBs
ZWdhbCEKKy8vICAgIFRoaXMgaXMgdGhlIG9ubHkgcGxhY2UgaW4gdGhlIGNvZGUgd2Ugc2hvdWxk
IHVzZSBkeW5hbWljX2Nhc3Q8Pi4KKy8vIEluIHBhcnRpY3VsYXIsIHlvdSBTSE9VTEROJ1QgYmUg
dXNpbmcgZHluYW1pY19jYXN0PD4gaW4gb3JkZXIgdG8KKy8vIGRvIFJUVEkgKGVnIGNvZGUgbGlr
ZSB0aGlzOgorLy8gICAgaWYgKGR5bmFtaWNfY2FzdDxTdWJjbGFzczE+KGZvbykpIEhhbmRsZUFT
dWJjbGFzczFPYmplY3QoZm9vKTsKKy8vICAgIGlmIChkeW5hbWljX2Nhc3Q8U3ViY2xhc3MyPihm
b28pKSBIYW5kbGVBU3ViY2xhc3MyT2JqZWN0KGZvbyk7CisvLyBZb3Ugc2hvdWxkIGRlc2lnbiB0
aGUgY29kZSBzb21lIG90aGVyIHdheSBub3QgdG8gbmVlZCB0aGlzLgorLy8KKy8vIFRoaXMgcmVs
YXRpdmVseSB1Z2x5IG5hbWUgaXMgaW50ZW50aW9uYWwuIEl0IHByZXZlbnRzIGNsYXNoZXMgd2l0
aAorLy8gc2ltaWxhciBmdW5jdGlvbnMgdXNlcnMgbWF5IGhhdmUgKGUuZy4sIGRvd25fY2FzdCku
IFRoZSBpbnRlcm5hbAorLy8gbmFtZXNwYWNlIGFsb25lIGlzIG5vdCBlbm91Z2ggYmVjYXVzZSB0
aGUgZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGJ5IEFETC4KK3RlbXBsYXRlPHR5cGVuYW1lIFRvLCB0
eXBlbmFtZSBGcm9tPiAgLy8gdXNlIGxpa2UgdGhpczogRG93bkNhc3RfPFQqPihmb28pOworaW5s
aW5lIFRvIERvd25DYXN0XyhGcm9tKiBmKSB7ICAvLyBzbyB3ZSBvbmx5IGFjY2VwdCBwb2ludGVy
cworICAvLyBFbnN1cmVzIHRoYXQgVG8gaXMgYSBzdWItdHlwZSBvZiBGcm9tICouICBUaGlzIHRl
c3QgaXMgaGVyZSBvbmx5CisgIC8vIGZvciBjb21waWxlLXRpbWUgdHlwZSBjaGVja2luZywgYW5k
IGhhcyBubyBvdmVyaGVhZCBpbiBhbgorICAvLyBvcHRpbWl6ZWQgYnVpbGQgYXQgcnVuLXRpbWUs
IGFzIGl0IHdpbGwgYmUgb3B0aW1pemVkIGF3YXkKKyAgLy8gY29tcGxldGVseS4KKyAgR1RFU1Rf
SU5URU5USU9OQUxfQ09OU1RfQ09ORF9QVVNIXygpCisgIGlmIChmYWxzZSkgeworICBHVEVTVF9J
TlRFTlRJT05BTF9DT05TVF9DT05EX1BPUF8oKQorICAgIGNvbnN0IFRvIHRvID0gTlVMTDsKKyAg
ICA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEZyb20qPih0byk7CisgIH0KKwor
I2lmIEdURVNUX0hBU19SVFRJCisgIC8vIFJUVEk6IGRlYnVnIG1vZGUgb25seSEKKyAgR1RFU1Rf
Q0hFQ0tfKGYgPT0gTlVMTCB8fCBkeW5hbWljX2Nhc3Q8VG8+KGYpICE9IE5VTEwpOworI2VuZGlm
CisgIHJldHVybiBzdGF0aWNfY2FzdDxUbz4oZik7Cit9CisKIC8vIERvd25jYXN0cyB0aGUgcG9p
bnRlciBvZiB0eXBlIEJhc2UgdG8gRGVyaXZlZC4KIC8vIERlcml2ZWQgbXVzdCBiZSBhIHN1YmNs
YXNzIG9mIEJhc2UuIFRoZSBwYXJhbWV0ZXIgTVVTVAogLy8gcG9pbnQgdG8gYSBjbGFzcyBvZiB0
eXBlIERlcml2ZWQsIG5vdCBhbnkgc3ViY2xhc3Mgb2YgaXQuCkBAIC04MzksMTMgKzEzOTIsMTgg
QEAgdGVtcGxhdGUgPGNsYXNzIERlcml2ZWQsIGNsYXNzIEJhc2U+CiBEZXJpdmVkKiBDaGVja2Vk
RG93bmNhc3RUb0FjdHVhbFR5cGUoQmFzZSogYmFzZSkgewogI2lmIEdURVNUX0hBU19SVFRJCiAg
IEdURVNUX0NIRUNLXyh0eXBlaWQoKmJhc2UpID09IHR5cGVpZChEZXJpdmVkKSk7CisjZW5kaWYK
KworI2lmIEdURVNUX0hBU19ET1dOQ0FTVF8KKyAgcmV0dXJuIDo6ZG93bl9jYXN0PERlcml2ZWQq
PihiYXNlKTsKKyNlbGlmIEdURVNUX0hBU19SVFRJCiAgIHJldHVybiBkeW5hbWljX2Nhc3Q8RGVy
aXZlZCo+KGJhc2UpOyAgLy8gTk9MSU5UCiAjZWxzZQogICByZXR1cm4gc3RhdGljX2Nhc3Q8RGVy
aXZlZCo+KGJhc2UpOyAgLy8gUG9vciBtYW4ncyBkb3duY2FzdC4KICNlbmRpZgogfQogCi0jaWYg
R1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElS
RUNUSU9OCiAKIC8vIERlZmluZXMgdGhlIHN0ZGVyciBjYXB0dXJlcjoKIC8vICAgQ2FwdHVyZVN0
ZG91dCAgICAgLSBzdGFydHMgY2FwdHVyaW5nIHN0ZG91dC4KQEAgLTg1NCwzMCArMTQxMiwzOSBA
QCBEZXJpdmVkKiBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGUoQmFzZSogYmFzZSkgewogLy8g
ICBHZXRDYXB0dXJlZFN0ZGVyciAtIHN0b3BzIGNhcHR1cmluZyBzdGRlcnIgYW5kIHJldHVybnMg
dGhlIGNhcHR1cmVkIHN0cmluZy4KIC8vCiBHVEVTVF9BUElfIHZvaWQgQ2FwdHVyZVN0ZG91dCgp
OwotR1RFU1RfQVBJXyBTdHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKTsKK0dURVNUX0FQSV8gc3Rk
OjpzdHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKTsKIEdURVNUX0FQSV8gdm9pZCBDYXB0dXJlU3Rk
ZXJyKCk7Ci1HVEVTVF9BUElfIFN0cmluZyBHZXRDYXB0dXJlZFN0ZGVycigpOworR1RFU1RfQVBJ
XyBzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0ZGVycigpOworCisjZW5kaWYgIC8vIEdURVNUX0hB
U19TVFJFQU1fUkVESVJFQ1RJT04KIAotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElS
RUNUSU9OXworLy8gUmV0dXJucyBhIHBhdGggdG8gdGVtcG9yYXJ5IGRpcmVjdG9yeS4KK0dURVNU
X0FQSV8gc3RkOjpzdHJpbmcgVGVtcERpcigpOwogCisvLyBSZXR1cm5zIHRoZSBzaXplIChpbiBi
eXRlcykgb2YgYSBmaWxlLgorR1RFU1RfQVBJXyBzaXplX3QgR2V0RmlsZVNpemUoRklMRSogZmls
ZSk7CisKKy8vIFJlYWRzIHRoZSBlbnRpcmUgY29udGVudCBvZiBhIGZpbGUgYXMgYSBzdHJpbmcu
CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFJlYWRFbnRpcmVGaWxlKEZJTEUqIGZpbGUpOworCisv
LyBBbGwgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KK0dURVNUX0FQSV8gY29uc3QgOjpzdGQ6OnZl
Y3Rvcjx0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nPiYgR2V0QXJndnMoKTsKIAogI2lmIEdURVNU
X0hBU19ERUFUSF9URVNUCiAKLS8vIEEgY29weSBvZiBhbGwgY29tbWFuZCBsaW5lIGFyZ3VtZW50
cy4gIFNldCBieSBJbml0R29vZ2xlVGVzdCgpLgotZXh0ZXJuIDo6c3RkOjp2ZWN0b3I8U3RyaW5n
PiBnX2FyZ3ZzOworY29uc3QgOjpzdGQ6OnZlY3Rvcjx0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5n
PiYgR2V0SW5qZWN0YWJsZUFyZ3ZzKCk7Cit2b2lkIFNldEluamVjdGFibGVBcmd2cyhjb25zdCA6
OnN0ZDo6dmVjdG9yPHRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmc+KgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuZXdfYXJndnMpOwogCi0vLyBHVEVTVF9IQVNfREVBVEhfVEVTVCBpbXBs
aWVzIHdlIGhhdmUgOjpzdGQ6OnN0cmluZy4KLWNvbnN0IDo6c3RkOjp2ZWN0b3I8U3RyaW5nPiYg
R2V0QXJndnMoKTsKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCiAvLyBEZWZp
bmVzIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzLgotCi0jaWYgR1RFU1RfSEFTX1BUSFJFQUQK
LQotLy8gU2xlZXBzIGZvciAocm91Z2hseSkgbiBtaWxsaS1zZWNvbmRzLiAgVGhpcyBmdW5jdGlv
biBpcyBvbmx5IGZvcgotLy8gdGVzdGluZyBHb29nbGUgVGVzdCdzIG93biBjb25zdHJ1Y3RzLiAg
RG9uJ3QgdXNlIGl0IGluIHVzZXIgdGVzdHMsCi0vLyBlaXRoZXIgZGlyZWN0bHkgb3IgaW5kaXJl
Y3RseS4KKyNpZiBHVEVTVF9JU19USFJFQURTQUZFCisjIGlmIEdURVNUX0hBU19QVEhSRUFECisv
LyBTbGVlcHMgZm9yIChyb3VnaGx5KSBuIG1pbGxpc2Vjb25kcy4gIFRoaXMgZnVuY3Rpb24gaXMg
b25seSBmb3IgdGVzdGluZworLy8gR29vZ2xlIFRlc3QncyBvd24gY29uc3RydWN0cy4gIERvbid0
IHVzZSBpdCBpbiB1c2VyIHRlc3RzLCBlaXRoZXIKKy8vIGRpcmVjdGx5IG9yIGluZGlyZWN0bHku
CiBpbmxpbmUgdm9pZCBTbGVlcE1pbGxpc2Vjb25kcyhpbnQgbikgewogICBjb25zdCB0aW1lc3Bl
YyB0aW1lID0gewogICAgIDAsICAgICAgICAgICAgICAgICAgLy8gMCBzZWNvbmRzLgpAQCAtODg1
LDcgKzE0NTIsMTMgQEAgaW5saW5lIHZvaWQgU2xlZXBNaWxsaXNlY29uZHMoaW50IG4pIHsKICAg
fTsKICAgbmFub3NsZWVwKCZ0aW1lLCBOVUxMKTsKIH0KKyMgZW5kaWYgIC8vIEdURVNUX0hBU19Q
VEhSRUFECiAKKyMgaWYgR1RFU1RfSEFTX05PVElGSUNBVElPTl8KKy8vIE5vdGlmaWNhdGlvbiBo
YXMgYWxyZWFkeSBiZWVuIGltcG9ydGVkIGludG8gdGhlIG5hbWVzcGFjZS4KKy8vIE5vdGhpbmcg
dG8gZG8gaGVyZS4KKworIyBlbGlmIEdURVNUX0hBU19QVEhSRUFECiAvLyBBbGxvd3MgYSBjb250
cm9sbGVyIHRocmVhZCB0byBwYXVzZSBleGVjdXRpb24gb2YgbmV3bHkgY3JlYXRlZAogLy8gdGhy
ZWFkcyB1bnRpbCBub3RpZmllZC4gIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIG11c3QgYmUgY3Jl
YXRlZAogLy8gYW5kIGRlc3Ryb3llZCBpbiB0aGUgY29udHJvbGxlciB0aHJlYWQuCkBAIC04OTQs
MjYgKzE0NjcsOTcgQEAgaW5saW5lIHZvaWQgU2xlZXBNaWxsaXNlY29uZHMoaW50IG4pIHsKIC8v
IHVzZSBpdCBpbiB1c2VyIHRlc3RzLCBlaXRoZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseS4KIGNs
YXNzIE5vdGlmaWNhdGlvbiB7CiAgcHVibGljOgotICBOb3RpZmljYXRpb24oKSA6IG5vdGlmaWVk
XyhmYWxzZSkge30KKyAgTm90aWZpY2F0aW9uKCkgOiBub3RpZmllZF8oZmFsc2UpIHsKKyAgICBH
VEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4X2luaXQoJm11dGV4XywgTlVM
TCkpOworICB9CisgIH5Ob3RpZmljYXRpb24oKSB7CisgICAgcHRocmVhZF9tdXRleF9kZXN0cm95
KCZtdXRleF8pOworICB9CiAKICAgLy8gTm90aWZpZXMgYWxsIHRocmVhZHMgY3JlYXRlZCB3aXRo
IHRoaXMgbm90aWZpY2F0aW9uIHRvIHN0YXJ0LiBNdXN0CiAgIC8vIGJlIGNhbGxlZCBmcm9tIHRo
ZSBjb250cm9sbGVyIHRocmVhZC4KLSAgdm9pZCBOb3RpZnkoKSB7IG5vdGlmaWVkXyA9IHRydWU7
IH0KKyAgdm9pZCBOb3RpZnkoKSB7CisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZtdXRleF8pOwor
ICAgIG5vdGlmaWVkXyA9IHRydWU7CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4Xyk7
CisgIH0KIAogICAvLyBCbG9ja3MgdW50aWwgdGhlIGNvbnRyb2xsZXIgdGhyZWFkIG5vdGlmaWVz
LiBNdXN0IGJlIGNhbGxlZCBmcm9tIGEgdGVzdAogICAvLyB0aHJlYWQuCiAgIHZvaWQgV2FpdEZv
ck5vdGlmaWNhdGlvbigpIHsKLSAgICB3aGlsZSghbm90aWZpZWRfKSB7CisgICAgZm9yICg7Oykg
eworICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZtdXRleF8pOworICAgICAgY29uc3QgYm9vbCBu
b3RpZmllZCA9IG5vdGlmaWVkXzsKKyAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleF8p
OworICAgICAgaWYgKG5vdGlmaWVkKQorICAgICAgICBicmVhazsKICAgICAgIFNsZWVwTWlsbGlz
ZWNvbmRzKDEwKTsKICAgICB9CiAgIH0KIAogIHByaXZhdGU6Ci0gIHZvbGF0aWxlIGJvb2wgbm90
aWZpZWRfOworICBwdGhyZWFkX211dGV4X3QgbXV0ZXhfOworICBib29sIG5vdGlmaWVkXzsKIAog
ICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE5vdGlmaWNhdGlvbik7CiB9OwogCisj
IGVsaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RF
U1RfT1NfV0lORE9XU19SVAorCitHVEVTVF9BUElfIHZvaWQgU2xlZXBNaWxsaXNlY29uZHMoaW50
IG4pOworCisvLyBQcm92aWRlcyBsZWFrLXNhZmUgV2luZG93cyBrZXJuZWwgaGFuZGxlIG93bmVy
c2hpcC4KKy8vIFVzZWQgaW4gZGVhdGggdGVzdHMgYW5kIGluIHRocmVhZGluZyBzdXBwb3J0Lgor
Y2xhc3MgR1RFU1RfQVBJXyBBdXRvSGFuZGxlIHsKKyBwdWJsaWM6CisgIC8vIEFzc3VtZSB0aGF0
IFdpbjMyIEhBTkRMRSB0eXBlIGlzIGVxdWl2YWxlbnQgdG8gdm9pZCouIERvaW5nIHNvIGFsbG93
cyB1cyB0bworICAvLyBhdm9pZCBpbmNsdWRpbmcgPHdpbmRvd3MuaD4gaW4gdGhpcyBoZWFkZXIg
ZmlsZS4gSW5jbHVkaW5nIDx3aW5kb3dzLmg+IGlzCisgIC8vIHVuZGVzaXJhYmxlIGJlY2F1c2Ug
aXQgZGVmaW5lcyBhIGxvdCBvZiBzeW1ib2xzIGFuZCBtYWNyb3MgdGhhdCB0ZW5kIHRvCisgIC8v
IGNvbmZsaWN0IHdpdGggY2xpZW50IGNvZGUuIFRoaXMgYXNzdW1wdGlvbiBpcyB2ZXJpZmllZCBi
eQorICAvLyBXaW5kb3dzVHlwZXNUZXN0LkhBTkRMRUlzVm9pZFN0YXIuCisgIHR5cGVkZWYgdm9p
ZCogSGFuZGxlOworICBBdXRvSGFuZGxlKCk7CisgIGV4cGxpY2l0IEF1dG9IYW5kbGUoSGFuZGxl
IGhhbmRsZSk7CisKKyAgfkF1dG9IYW5kbGUoKTsKKworICBIYW5kbGUgR2V0KCkgY29uc3Q7Cisg
IHZvaWQgUmVzZXQoKTsKKyAgdm9pZCBSZXNldChIYW5kbGUgaGFuZGxlKTsKKworIHByaXZhdGU6
CisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGhhbmRsZSBpcyBhIHZhbGlkIGhhbmRsZSBvYmpl
Y3QgdGhhdCBjYW4gYmUgY2xvc2VkLgorICBib29sIElzQ2xvc2VhYmxlKCkgY29uc3Q7CisKKyAg
SGFuZGxlIGhhbmRsZV87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhBdXRv
SGFuZGxlKTsKK307CisKKy8vIEFsbG93cyBhIGNvbnRyb2xsZXIgdGhyZWFkIHRvIHBhdXNlIGV4
ZWN1dGlvbiBvZiBuZXdseSBjcmVhdGVkCisvLyB0aHJlYWRzIHVudGlsIG5vdGlmaWVkLiAgSW5z
dGFuY2VzIG9mIHRoaXMgY2xhc3MgbXVzdCBiZSBjcmVhdGVkCisvLyBhbmQgZGVzdHJveWVkIGlu
IHRoZSBjb250cm9sbGVyIHRocmVhZC4KKy8vCisvLyBUaGlzIGNsYXNzIGlzIG9ubHkgZm9yIHRl
c3RpbmcgR29vZ2xlIFRlc3QncyBvd24gY29uc3RydWN0cy4gRG8gbm90CisvLyB1c2UgaXQgaW4g
dXNlciB0ZXN0cywgZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCitjbGFzcyBHVEVTVF9B
UElfIE5vdGlmaWNhdGlvbiB7CisgcHVibGljOgorICBOb3RpZmljYXRpb24oKTsKKyAgdm9pZCBO
b3RpZnkoKTsKKyAgdm9pZCBXYWl0Rm9yTm90aWZpY2F0aW9uKCk7CisKKyBwcml2YXRlOgorICBB
dXRvSGFuZGxlIGV2ZW50XzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE5v
dGlmaWNhdGlvbik7Cit9OworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX05PVElGSUNBVElPTl8KKwor
Ly8gT24gTWluR1csIHdlIGNhbiBoYXZlIGJvdGggR1RFU1RfT1NfV0lORE9XUyBhbmQgR1RFU1Rf
SEFTX1BUSFJFQUQKKy8vIGRlZmluZWQsIGJ1dCB3ZSBkb24ndCB3YW50IHRvIHVzZSBNaW5HVydz
IHB0aHJlYWRzIGltcGxlbWVudGF0aW9uLCB3aGljaAorLy8gaGFzIGNvbmZvcm1hbmNlIHByb2Js
ZW1zIHdpdGggc29tZSB2ZXJzaW9ucyBvZiB0aGUgUE9TSVggc3RhbmRhcmQuCisjIGlmIEdURVNU
X0hBU19QVEhSRUFEICYmICFHVEVTVF9PU19XSU5ET1dTX01JTkdXCisKIC8vIEFzIGEgQy1mdW5j
dGlvbiwgVGhyZWFkRnVuY1dpdGhDTGlua2FnZSBjYW5ub3QgYmUgdGVtcGxhdGVkIGl0c2VsZi4K
IC8vIENvbnNlcXVlbnRseSwgaXQgY2Fubm90IHNlbGVjdCBhIGNvcnJlY3QgaW5zdGFudGlhdGlv
biBvZiBUaHJlYWRXaXRoUGFyYW0KIC8vIGluIG9yZGVyIHRvIGNhbGwgaXRzIFJ1bigpLiBJbnRy
b2R1Y2luZyBUaHJlYWRXaXRoUGFyYW1CYXNlIGFzIGEKQEAgLTk1MSwxMCArMTU5NSw5IEBAIGV4
dGVybiAiQyIgaW5saW5lIHZvaWQqIFRocmVhZEZ1bmNXaXRoQ0xpbmthZ2Uodm9pZCogdGhyZWFk
KSB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNsYXNzIFRocmVhZFdpdGhQYXJhbSA6IHB1Ymxp
YyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgdm9pZCAoKlVzZXJU
aHJlYWRGdW5jKShUKTsKKyAgdHlwZWRlZiB2b2lkIFVzZXJUaHJlYWRGdW5jKFQpOwogCi0gIFRo
cmVhZFdpdGhQYXJhbSgKLSAgICAgIFVzZXJUaHJlYWRGdW5jIGZ1bmMsIFQgcGFyYW0sIE5vdGlm
aWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydCkKKyAgVGhyZWFkV2l0aFBhcmFtKFVzZXJUaHJlYWRG
dW5jKiBmdW5jLCBUIHBhcmFtLCBOb3RpZmljYXRpb24qIHRocmVhZF9jYW5fc3RhcnQpCiAgICAg
ICA6IGZ1bmNfKGZ1bmMpLAogICAgICAgICBwYXJhbV8ocGFyYW0pLAogICAgICAgICB0aHJlYWRf
Y2FuX3N0YXJ0Xyh0aHJlYWRfY2FuX3N0YXJ0KSwKQEAgLTk4MSw3ICsxNjI0LDcgQEAgY2xhc3Mg
VGhyZWFkV2l0aFBhcmFtIDogcHVibGljIFRocmVhZFdpdGhQYXJhbUJhc2UgewogICB9CiAKICBw
cml2YXRlOgotICBjb25zdCBVc2VyVGhyZWFkRnVuYyBmdW5jXzsgIC8vIFVzZXItc3VwcGxpZWQg
dGhyZWFkIGZ1bmN0aW9uLgorICBVc2VyVGhyZWFkRnVuYyogY29uc3QgZnVuY187ICAvLyBVc2Vy
LXN1cHBsaWVkIHRocmVhZCBmdW5jdGlvbi4KICAgY29uc3QgVCBwYXJhbV87ICAvLyBVc2VyLXN1
cHBsaWVkIHBhcmFtZXRlciB0byB0aGUgdGhyZWFkIGZ1bmN0aW9uLgogICAvLyBXaGVuIG5vbi1O
VUxMLCB1c2VkIHRvIGJsb2NrIGV4ZWN1dGlvbiB1bnRpbCB0aGUgY29udHJvbGxlciB0aHJlYWQK
ICAgLy8gbm90aWZpZXMuCkBAIC05OTEsNTEgKzE2MzQsMzE2IEBAIGNsYXNzIFRocmVhZFdpdGhQ
YXJhbSA6IHB1YmxpYyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKIAogICBHVEVTVF9ESVNBTExPV19D
T1BZX0FORF9BU1NJR05fKFRocmVhZFdpdGhQYXJhbSk7CiB9OworIyBlbmRpZiAgLy8gIUdURVNU
X09TX1dJTkRPV1MgJiYgR1RFU1RfSEFTX1BUSFJFQUQgfHwKKyAgICAgICAgIC8vIEdURVNUX0hB
U19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMXwogCi0vLyBndGVzdC1wb3J0LmggZ3VhcmFudGVlcyB0
byAjaW5jbHVkZSA8cHRocmVhZC5oPiB3aGVuIEdURVNUX0hBU19QVEhSRUFEIGlzCi0vLyB0cnVl
LgotI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyMgaWYgR1RFU1RfSEFTX01VVEVYX0FORF9USFJFQURf
TE9DQUxfCisvLyBNdXRleCBhbmQgVGhyZWFkTG9jYWwgaGF2ZSBhbHJlYWR5IGJlZW4gaW1wb3J0
ZWQgaW50byB0aGUgbmFtZXNwYWNlLgorLy8gTm90aGluZyB0byBkbyBoZXJlLgogCi0vLyBNdXRl
eEJhc2UgYW5kIE11dGV4IGltcGxlbWVudCBtdXRleCBvbiBwdGhyZWFkcy1iYXNlZCBwbGF0Zm9y
bXMuIFRoZXkKLS8vIGFyZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggY2xhc3MgTXV0ZXhMb2Nr
OgorIyBlbGlmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfUEhPTkUgJiYg
IUdURVNUX09TX1dJTkRPV1NfUlQKKworLy8gTXV0ZXggaW1wbGVtZW50cyBtdXRleCBvbiBXaW5k
b3dzIHBsYXRmb3Jtcy4gIEl0IGlzIHVzZWQgaW4gY29uanVuY3Rpb24KKy8vIHdpdGggY2xhc3Mg
TXV0ZXhMb2NrOgogLy8KIC8vICAgTXV0ZXggbXV0ZXg7CiAvLyAgIC4uLgotLy8gICBNdXRleExv
Y2sgbG9jaygmbXV0ZXgpOyAgLy8gQWNxdWlyZXMgdGhlIG11dGV4IGFuZCByZWxlYXNlcyBpdCBh
dCB0aGUgZW5kCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiB0aGUgY3VycmVu
dCBzY29wZS4KLS8vCi0vLyBNdXRleEJhc2UgaW1wbGVtZW50cyBiZWhhdmlvciBmb3IgYm90aCBz
dGF0aWNhbGx5IGFuZCBkeW5hbWljYWxseQotLy8gYWxsb2NhdGVkIG11dGV4ZXMuICBEbyBub3Qg
dXNlIE11dGV4QmFzZSBkaXJlY3RseS4gIEluc3RlYWQsIHdyaXRlCi0vLyB0aGUgZm9sbG93aW5n
IHRvIGRlZmluZSBhIHN0YXRpYyBtdXRleDoKKy8vICAgTXV0ZXhMb2NrIGxvY2soJm11dGV4KTsg
IC8vIEFjcXVpcmVzIHRoZSBtdXRleCBhbmQgcmVsZWFzZXMgaXQgYXQgdGhlCisvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBlbmQgb2YgdGhlIGN1cnJlbnQgc2NvcGUuCiAvLworLy8g
QSBzdGF0aWMgTXV0ZXggKm11c3QqIGJlIGRlZmluZWQgb3IgZGVjbGFyZWQgdXNpbmcgb25lIG9m
IHRoZSBmb2xsb3dpbmcKKy8vIG1hY3JvczoKIC8vICAgR1RFU1RfREVGSU5FX1NUQVRJQ19NVVRF
WF8oZ19zb21lX211dGV4KTsKKy8vICAgR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVURVhfKGdfc29t
ZV9tdXRleCk7CiAvLwotLy8gWW91IGNhbiBmb3J3YXJkIGRlY2xhcmUgYSBzdGF0aWMgbXV0ZXgg
bGlrZSB0aGlzOgorLy8gKEEgbm9uLXN0YXRpYyBNdXRleCBpcyBkZWZpbmVkL2RlY2xhcmVkIGlu
IHRoZSB1c3VhbCB3YXkpLgorY2xhc3MgR1RFU1RfQVBJXyBNdXRleCB7CisgcHVibGljOgorICBl
bnVtIE11dGV4VHlwZSB7IGtTdGF0aWMgPSAwLCBrRHluYW1pYyA9IDEgfTsKKyAgLy8gV2UgcmVs
eSBvbiBrU3RhdGljTXV0ZXggYmVpbmcgMCBhcyBpdCBpcyB0byB3aGF0IHRoZSBsaW5rZXIgaW5p
dGlhbGl6ZXMKKyAgLy8gdHlwZV8gaW4gc3RhdGljIG11dGV4ZXMuICBjcml0aWNhbF9zZWN0aW9u
XyB3aWxsIGJlIGluaXRpYWxpemVkIGxhemlseQorICAvLyBpbiBUaHJlYWRTYWZlTGF6eUluaXQo
KS4KKyAgZW51bSBTdGF0aWNDb25zdHJ1Y3RvclNlbGVjdG9yIHsga1N0YXRpY011dGV4ID0gMCB9
OworCisgIC8vIFRoaXMgY29uc3RydWN0b3IgaW50ZW50aW9uYWxseSBkb2VzIG5vdGhpbmcuICBJ
dCByZWxpZXMgb24gdHlwZV8gYmVpbmcKKyAgLy8gc3RhdGljYWxseSBpbml0aWFsaXplZCB0byAw
IChlZmZlY3RpdmVseSBzZXR0aW5nIGl0IHRvIGtTdGF0aWMpIGFuZCBvbgorICAvLyBUaHJlYWRT
YWZlTGF6eUluaXQoKSB0byBsYXppbHkgaW5pdGlhbGl6ZSB0aGUgcmVzdCBvZiB0aGUgbWVtYmVy
cy4KKyAgZXhwbGljaXQgTXV0ZXgoU3RhdGljQ29uc3RydWN0b3JTZWxlY3RvciAvKmR1bW15Ki8p
IHt9CisKKyAgTXV0ZXgoKTsKKyAgfk11dGV4KCk7CisKKyAgdm9pZCBMb2NrKCk7CisKKyAgdm9p
ZCBVbmxvY2soKTsKKworICAvLyBEb2VzIG5vdGhpbmcgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGhv
bGRzIHRoZSBtdXRleC4gT3RoZXJ3aXNlLCBjcmFzaGVzCisgIC8vIHdpdGggaGlnaCBwcm9iYWJp
bGl0eS4KKyAgdm9pZCBBc3NlcnRIZWxkKCk7CisKKyBwcml2YXRlOgorICAvLyBJbml0aWFsaXpl
cyBvd25lcl90aHJlYWRfaWRfIGFuZCBjcml0aWNhbF9zZWN0aW9uXyBpbiBzdGF0aWMgbXV0ZXhl
cy4KKyAgdm9pZCBUaHJlYWRTYWZlTGF6eUluaXQoKTsKKworICAvLyBQZXIgaHR0cDovL2Jsb2dz
Lm1zZG4uY29tL2Ivb2xkbmV3dGhpbmcvYXJjaGl2ZS8yMDA0LzAyLzIzLzc4Mzk1LmFzcHgsCisg
IC8vIHdlIGFzc3VtZSB0aGF0IDAgaXMgYW4gaW52YWxpZCB2YWx1ZSBmb3IgdGhyZWFkIElEcy4K
KyAgdW5zaWduZWQgaW50IG93bmVyX3RocmVhZF9pZF87CisKKyAgLy8gRm9yIHN0YXRpYyBtdXRl
eGVzLCB3ZSByZWx5IG9uIHRoZXNlIG1lbWJlcnMgYmVpbmcgaW5pdGlhbGl6ZWQgdG8gemVyb3MK
KyAgLy8gYnkgdGhlIGxpbmtlci4KKyAgTXV0ZXhUeXBlIHR5cGVfOworICBsb25nIGNyaXRpY2Fs
X3NlY3Rpb25faW5pdF9waGFzZV87ICAvLyBOT0xJTlQKKyAgX1JUTF9DUklUSUNBTF9TRUNUSU9O
KiBjcml0aWNhbF9zZWN0aW9uXzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05f
KE11dGV4KTsKK307CisKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRl
eCkgXAorICAgIGV4dGVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpNdXRleCBtdXRleAorCisjIGRl
ZmluZSBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhtdXRleCkgXAorICAgIDo6dGVzdGluZzo6
aW50ZXJuYWw6Ok11dGV4IG11dGV4KDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4OjprU3RhdGlj
TXV0ZXgpCisKKy8vIFdlIGNhbm5vdCBuYW1lIHRoaXMgY2xhc3MgTXV0ZXhMb2NrIGJlY2F1c2Ug
dGhlIGN0b3IgZGVjbGFyYXRpb24gd291bGQKKy8vIGNvbmZsaWN0IHdpdGggYSBtYWNybyBuYW1l
ZCBNdXRleExvY2ssIHdoaWNoIGlzIGRlZmluZWQgb24gc29tZQorLy8gcGxhdGZvcm1zLiBUaGF0
IG1hY3JvIGlzIHVzZWQgYXMgYSBkZWZlbnNpdmUgbWVhc3VyZSB0byBwcmV2ZW50IGFnYWluc3QK
Ky8vIGluYWR2ZXJ0ZW50IG1pc3VzZXMgb2YgTXV0ZXhMb2NrIGxpa2UgIk11dGV4TG9jaygmbXUp
IiByYXRoZXIgdGhhbgorLy8gIk11dGV4TG9jayBsKCZtdSkiLiAgSGVuY2UgdGhlIHR5cGVkZWYg
dHJpY2sgYmVsb3cuCitjbGFzcyBHVGVzdE11dGV4TG9jayB7CisgcHVibGljOgorICBleHBsaWNp
dCBHVGVzdE11dGV4TG9jayhNdXRleCogbXV0ZXgpCisgICAgICA6IG11dGV4XyhtdXRleCkgeyBt
dXRleF8tPkxvY2soKTsgfQorCisgIH5HVGVzdE11dGV4TG9jaygpIHsgbXV0ZXhfLT5VbmxvY2so
KTsgfQorCisgcHJpdmF0ZToKKyAgTXV0ZXgqIGNvbnN0IG11dGV4XzsKKworICBHVEVTVF9ESVNB
TExPV19DT1BZX0FORF9BU1NJR05fKEdUZXN0TXV0ZXhMb2NrKTsKK307CisKK3R5cGVkZWYgR1Rl
c3RNdXRleExvY2sgTXV0ZXhMb2NrOworCisvLyBCYXNlIGNsYXNzIGZvciBWYWx1ZUhvbGRlcjxU
Pi4gIEFsbG93cyBhIGNhbGxlciB0byBob2xkIGFuZCBkZWxldGUgYSB2YWx1ZQorLy8gd2l0aG91
dCBrbm93aW5nIGl0cyB0eXBlLgorY2xhc3MgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2Ugewor
IHB1YmxpYzoKKyAgdmlydHVhbCB+VGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UoKSB7fQorfTsK
KworLy8gUHJvdmlkZXMgYSB3YXkgZm9yIGEgdGhyZWFkIHRvIHNlbmQgbm90aWZpY2F0aW9ucyB0
byBhIFRocmVhZExvY2FsCisvLyByZWdhcmRsZXNzIG9mIGl0cyBwYXJhbWV0ZXIgdHlwZS4KK2Ns
YXNzIFRocmVhZExvY2FsQmFzZSB7CisgcHVibGljOgorICAvLyBDcmVhdGVzIGEgbmV3IFZhbHVl
SG9sZGVyPFQ+IG9iamVjdCBob2xkaW5nIGEgZGVmYXVsdCB2YWx1ZSBwYXNzZWQgdG8KKyAgLy8g
dGhpcyBUaHJlYWRMb2NhbDxUPidzIGNvbnN0cnVjdG9yIGFuZCByZXR1cm5zIGl0LiAgSXQgaXMg
dGhlIGNhbGxlcidzCisgIC8vIHJlc3BvbnNpYmlsaXR5IG5vdCB0byBjYWxsIHRoaXMgd2hlbiB0
aGUgVGhyZWFkTG9jYWw8VD4gaW5zdGFuY2UgYWxyZWFkeQorICAvLyBoYXMgYSB2YWx1ZSBvbiB0
aGUgY3VycmVudCB0aHJlYWQuCisgIHZpcnR1YWwgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2Uq
IE5ld1ZhbHVlRm9yQ3VycmVudFRocmVhZCgpIGNvbnN0ID0gMDsKKworIHByb3RlY3RlZDoKKyAg
VGhyZWFkTG9jYWxCYXNlKCkge30KKyAgdmlydHVhbCB+VGhyZWFkTG9jYWxCYXNlKCkge30KKwor
IHByaXZhdGU6CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkTG9jYWxC
YXNlKTsKK307CisKKy8vIE1hcHMgYSB0aHJlYWQgdG8gYSBzZXQgb2YgVGhyZWFkTG9jYWxzIHRo
YXQgaGF2ZSB2YWx1ZXMgaW5zdGFudGlhdGVkIG9uIHRoYXQKKy8vIHRocmVhZCBhbmQgbm90aWZp
ZXMgdGhlbSB3aGVuIHRoZSB0aHJlYWQgZXhpdHMuICBBIFRocmVhZExvY2FsIGluc3RhbmNlIGlz
CisvLyBleHBlY3RlZCB0byBwZXJzaXN0IHVudGlsIGFsbCB0aHJlYWRzIGl0IGhhcyB2YWx1ZXMg
b24gaGF2ZSB0ZXJtaW5hdGVkLgorY2xhc3MgR1RFU1RfQVBJXyBUaHJlYWRMb2NhbFJlZ2lzdHJ5
IHsKKyBwdWJsaWM6CisgIC8vIFJlZ2lzdGVycyB0aHJlYWRfbG9jYWxfaW5zdGFuY2UgYXMgaGF2
aW5nIHZhbHVlIG9uIHRoZSBjdXJyZW50IHRocmVhZC4KKyAgLy8gUmV0dXJucyBhIHZhbHVlIHRo
YXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHRocmVhZCBmcm9tIG90aGVyIHRocmVhZHMu
CisgIHN0YXRpYyBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogR2V0VmFsdWVPbkN1cnJlbnRU
aHJlYWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9pbnN0YW5j
ZSk7CisKKyAgLy8gSW52b2tlZCB3aGVuIGEgVGhyZWFkTG9jYWwgaW5zdGFuY2UgaXMgZGVzdHJv
eWVkLgorICBzdGF0aWMgdm9pZCBPblRocmVhZExvY2FsRGVzdHJveWVkKAorICAgICAgY29uc3Qg
VGhyZWFkTG9jYWxCYXNlKiB0aHJlYWRfbG9jYWxfaW5zdGFuY2UpOworfTsKKworY2xhc3MgR1RF
U1RfQVBJXyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKKyBwdWJsaWM6CisgIHZvaWQgSm9pbigpOwor
CisgcHJvdGVjdGVkOgorICBjbGFzcyBSdW5uYWJsZSB7CisgICBwdWJsaWM6CisgICAgdmlydHVh
bCB+UnVubmFibGUoKSB7fQorICAgIHZpcnR1YWwgdm9pZCBSdW4oKSA9IDA7CisgIH07CisKKyAg
VGhyZWFkV2l0aFBhcmFtQmFzZShSdW5uYWJsZSAqcnVubmFibGUsIE5vdGlmaWNhdGlvbiogdGhy
ZWFkX2Nhbl9zdGFydCk7CisgIHZpcnR1YWwgflRocmVhZFdpdGhQYXJhbUJhc2UoKTsKKworIHBy
aXZhdGU6CisgIEF1dG9IYW5kbGUgdGhyZWFkXzsKK307CisKKy8vIEhlbHBlciBjbGFzcyBmb3Ig
dGVzdGluZyBHb29nbGUgVGVzdCdzIG11bHRpLXRocmVhZGluZyBjb25zdHJ1Y3RzLgordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUaHJlYWRXaXRoUGFyYW0gOiBwdWJsaWMgVGhyZWFkV2l0
aFBhcmFtQmFzZSB7CisgcHVibGljOgorICB0eXBlZGVmIHZvaWQgVXNlclRocmVhZEZ1bmMoVCk7
CisKKyAgVGhyZWFkV2l0aFBhcmFtKFVzZXJUaHJlYWRGdW5jKiBmdW5jLCBUIHBhcmFtLCBOb3Rp
ZmljYXRpb24qIHRocmVhZF9jYW5fc3RhcnQpCisgICAgICA6IFRocmVhZFdpdGhQYXJhbUJhc2Uo
bmV3IFJ1bm5hYmxlSW1wbChmdW5jLCBwYXJhbSksIHRocmVhZF9jYW5fc3RhcnQpIHsKKyAgfQor
ICB2aXJ0dWFsIH5UaHJlYWRXaXRoUGFyYW0oKSB7fQorCisgcHJpdmF0ZToKKyAgY2xhc3MgUnVu
bmFibGVJbXBsIDogcHVibGljIFJ1bm5hYmxlIHsKKyAgIHB1YmxpYzoKKyAgICBSdW5uYWJsZUlt
cGwoVXNlclRocmVhZEZ1bmMqIGZ1bmMsIFQgcGFyYW0pCisgICAgICAgIDogZnVuY18oZnVuYyks
CisgICAgICAgICAgcGFyYW1fKHBhcmFtKSB7CisgICAgfQorICAgIHZpcnR1YWwgflJ1bm5hYmxl
SW1wbCgpIHt9CisgICAgdmlydHVhbCB2b2lkIFJ1bigpIHsKKyAgICAgIGZ1bmNfKHBhcmFtXyk7
CisgICAgfQorCisgICBwcml2YXRlOgorICAgIFVzZXJUaHJlYWRGdW5jKiBjb25zdCBmdW5jXzsK
KyAgICBjb25zdCBUIHBhcmFtXzsKKworICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oUnVubmFibGVJbXBsKTsKKyAgfTsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJ
R05fKFRocmVhZFdpdGhQYXJhbSk7Cit9OworCisvLyBJbXBsZW1lbnRzIHRocmVhZC1sb2NhbCBz
dG9yYWdlIG9uIFdpbmRvd3Mgc3lzdGVtcy4KIC8vCi0vLyAgIEdURVNUX0RFQ0xBUkVfU1RBVElD
X01VVEVYXyhnX3NvbWVfbXV0ZXgpOworLy8gICAvLyBUaHJlYWQgMQorLy8gICBUaHJlYWRMb2Nh
bDxpbnQ+IHRsKDEwMCk7ICAvLyAxMDAgaXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIGVhY2ggdGhy
ZWFkLgogLy8KLS8vIFRvIGNyZWF0ZSBhIGR5bmFtaWMgbXV0ZXgsIGp1c3QgZGVmaW5lIGFuIG9i
amVjdCBvZiB0eXBlIE11dGV4LgorLy8gICAvLyBUaHJlYWQgMgorLy8gICB0bC5zZXQoMTUwKTsg
IC8vIENoYW5nZXMgdGhlIHZhbHVlIGZvciB0aHJlYWQgMiBvbmx5LgorLy8gICBFWFBFQ1RfRVEo
MTUwLCB0bC5nZXQoKSk7CisvLworLy8gICAvLyBUaHJlYWQgMQorLy8gICBFWFBFQ1RfRVEoMTAw
LCB0bC5nZXQoKSk7ICAvLyBJbiB0aHJlYWQgMSwgdGwgaGFzIHRoZSBvcmlnaW5hbCB2YWx1ZS4K
Ky8vICAgdGwuc2V0KDIwMCk7CisvLyAgIEVYUEVDVF9FUSgyMDAsIHRsLmdldCgpKTsKKy8vCisv
LyBUaGUgdGVtcGxhdGUgdHlwZSBhcmd1bWVudCBUIG11c3QgaGF2ZSBhIHB1YmxpYyBjb3B5IGNv
bnN0cnVjdG9yLgorLy8gSW4gYWRkaXRpb24sIHRoZSBkZWZhdWx0IFRocmVhZExvY2FsIGNvbnN0
cnVjdG9yIHJlcXVpcmVzIFQgdG8gaGF2ZQorLy8gYSBwdWJsaWMgZGVmYXVsdCBjb25zdHJ1Y3Rv
ci4KKy8vCisvLyBUaGUgdXNlcnMgb2YgYSBUaGVhZExvY2FsIGluc3RhbmNlIGhhdmUgdG8gbWFr
ZSBzdXJlIHRoYXQgYWxsIGJ1dCBvbmUKKy8vIHRocmVhZHMgKGluY2x1ZGluZyB0aGUgbWFpbiBv
bmUpIHVzaW5nIHRoYXQgaW5zdGFuY2UgaGF2ZSBleGl0ZWQgYmVmb3JlCisvLyBkZXN0cm95aW5n
IGl0LiBPdGhlcndpc2UsIHRoZSBwZXItdGhyZWFkIG9iamVjdHMgbWFuYWdlZCBmb3IgdGhlbSBi
eSB0aGUKKy8vIFRocmVhZExvY2FsIGluc3RhbmNlIGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSBk
ZXN0cm95ZWQgb24gYWxsIHBsYXRmb3Jtcy4KKy8vCisvLyBHb29nbGUgVGVzdCBvbmx5IHVzZXMg
Z2xvYmFsIFRocmVhZExvY2FsIG9iamVjdHMuICBUaGF0IG1lYW5zIHRoZXkKKy8vIHdpbGwgZGll
IGFmdGVyIG1haW4oKSBoYXMgcmV0dXJuZWQuICBUaGVyZWZvcmUsIG5vIHBlci10aHJlYWQKKy8v
IG9iamVjdCBtYW5hZ2VkIGJ5IEdvb2dsZSBUZXN0IHdpbGwgYmUgbGVha2VkIGFzIGxvbmcgYXMg
YWxsIHRocmVhZHMKKy8vIHVzaW5nIEdvb2dsZSBUZXN0IGhhdmUgZXhpdGVkIHdoZW4gbWFpbigp
IHJldHVybnMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFRocmVhZExvY2FsIDogcHVi
bGljIFRocmVhZExvY2FsQmFzZSB7CisgcHVibGljOgorICBUaHJlYWRMb2NhbCgpIDogZGVmYXVs
dF9mYWN0b3J5XyhuZXcgRGVmYXVsdFZhbHVlSG9sZGVyRmFjdG9yeSgpKSB7fQorICBleHBsaWNp
dCBUaHJlYWRMb2NhbChjb25zdCBUJiB2YWx1ZSkKKyAgICAgIDogZGVmYXVsdF9mYWN0b3J5Xyhu
ZXcgSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkodmFsdWUpKSB7fQorCisgIH5UaHJlYWRMb2Nh
bCgpIHsgVGhyZWFkTG9jYWxSZWdpc3RyeTo6T25UaHJlYWRMb2NhbERlc3Ryb3llZCh0aGlzKTsg
fQorCisgIFQqIHBvaW50ZXIoKSB7IHJldHVybiBHZXRPckNyZWF0ZVZhbHVlKCk7IH0KKyAgY29u
c3QgVCogcG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIEdldE9yQ3JlYXRlVmFsdWUoKTsgfQorICBj
b25zdCBUJiBnZXQoKSBjb25zdCB7IHJldHVybiAqcG9pbnRlcigpOyB9CisgIHZvaWQgc2V0KGNv
bnN0IFQmIHZhbHVlKSB7ICpwb2ludGVyKCkgPSB2YWx1ZTsgfQorCisgcHJpdmF0ZToKKyAgLy8g
SG9sZHMgYSB2YWx1ZSBvZiBULiAgQ2FuIGJlIGRlbGV0ZWQgdmlhIGl0cyBiYXNlIGNsYXNzIHdp
dGhvdXQgdGhlIGNhbGxlcgorICAvLyBrbm93aW5nIHRoZSB0eXBlIG9mIFQuCisgIGNsYXNzIFZh
bHVlSG9sZGVyIDogcHVibGljIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlIHsKKyAgIHB1Ymxp
YzoKKyAgICBWYWx1ZUhvbGRlcigpIDogdmFsdWVfKCkge30KKyAgICBleHBsaWNpdCBWYWx1ZUhv
bGRlcihjb25zdCBUJiB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9CisKKyAgICBUKiBwb2ludGVy
KCkgeyByZXR1cm4gJnZhbHVlXzsgfQorCisgICBwcml2YXRlOgorICAgIFQgdmFsdWVfOworICAg
IEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVmFsdWVIb2xkZXIpOworICB9OworCisK
KyAgVCogR2V0T3JDcmVhdGVWYWx1ZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VmFsdWVIb2xkZXIqPigKKyAgICAgICAgVGhyZWFkTG9jYWxSZWdpc3RyeTo6R2V0VmFsdWVPbkN1
cnJlbnRUaHJlYWQodGhpcykpLT5wb2ludGVyKCk7CisgIH0KKworICB2aXJ0dWFsIFRocmVhZExv
Y2FsVmFsdWVIb2xkZXJCYXNlKiBOZXdWYWx1ZUZvckN1cnJlbnRUaHJlYWQoKSBjb25zdCB7Cisg
ICAgcmV0dXJuIGRlZmF1bHRfZmFjdG9yeV8tPk1ha2VOZXdIb2xkZXIoKTsKKyAgfQorCisgIGNs
YXNzIFZhbHVlSG9sZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAgVmFsdWVIb2xkZXJGYWN0
b3J5KCkge30KKyAgICB2aXJ0dWFsIH5WYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1
YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCA9IDA7CisKKyAgIHByaXZhdGU6
CisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhWYWx1ZUhvbGRlckZhY3Rvcnkp
OworICB9OworCisgIGNsYXNzIERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkgOiBwdWJsaWMgVmFs
dWVIb2xkZXJGYWN0b3J5IHsKKyAgIHB1YmxpYzoKKyAgICBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0
b3J5KCkge30KKyAgICB2aXJ0dWFsIFZhbHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkgY29uc3Qg
eyByZXR1cm4gbmV3IFZhbHVlSG9sZGVyKCk7IH0KKworICAgcHJpdmF0ZToKKyAgICBHVEVTVF9E
SVNBTExPV19DT1BZX0FORF9BU1NJR05fKERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9
OworCisgIGNsYXNzIEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5IDogcHVibGljIFZhbHVlSG9s
ZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAgZXhwbGljaXQgSW5zdGFuY2VWYWx1ZUhvbGRl
ckZhY3RvcnkoY29uc3QgVCYgdmFsdWUpIDogdmFsdWVfKHZhbHVlKSB7fQorICAgIHZpcnR1YWwg
VmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCB7CisgICAgICByZXR1cm4gbmV3IFZh
bHVlSG9sZGVyKHZhbHVlXyk7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGNvbnN0IFQgdmFs
dWVfOyAgLy8gVGhlIHZhbHVlIGZvciBlYWNoIHRocmVhZC4KKworICAgIEdURVNUX0RJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTl8oSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9OworCisg
IHNjb3BlZF9wdHI8VmFsdWVIb2xkZXJGYWN0b3J5PiBkZWZhdWx0X2ZhY3RvcnlfOworCisgIEdU
RVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkTG9jYWwpOworfTsKKworIyBlbGlm
IEdURVNUX0hBU19QVEhSRUFECisKKy8vIE11dGV4QmFzZSBhbmQgTXV0ZXggaW1wbGVtZW50IG11
dGV4IG9uIHB0aHJlYWRzLWJhc2VkIHBsYXRmb3Jtcy4KIGNsYXNzIE11dGV4QmFzZSB7CiAgcHVi
bGljOgogICAvLyBBY3F1aXJlcyB0aGlzIG11dGV4LgogICB2b2lkIExvY2soKSB7CiAgICAgR1RF
U1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9sb2NrKCZtdXRleF8pKTsKICAg
ICBvd25lcl8gPSBwdGhyZWFkX3NlbGYoKTsKKyAgICBoYXNfb3duZXJfID0gdHJ1ZTsKICAgfQog
CiAgIC8vIFJlbGVhc2VzIHRoaXMgbXV0ZXguCiAgIHZvaWQgVW5sb2NrKCkgewotICAgIC8vIFdl
IGRvbid0IHByb3RlY3Qgd3JpdGluZyB0byBvd25lcl8gaGVyZSwgYXMgaXQncyB0aGUgY2FsbGVy
J3MKLSAgICAvLyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCB0aGUgY3VycmVudCB0aHJl
YWQgaG9sZHMgdGhlCisgICAgLy8gU2luY2UgdGhlIGxvY2sgaXMgYmVpbmcgcmVsZWFzZWQgdGhl
IG93bmVyXyBmaWVsZCBzaG91bGQgbm8gbG9uZ2VyIGJlCisgICAgLy8gY29uc2lkZXJlZCB2YWxp
ZC4gV2UgZG9uJ3QgcHJvdGVjdCB3cml0aW5nIHRvIGhhc19vd25lcl8gaGVyZSwgYXMgaXQncwor
ICAgIC8vIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCB0aGUgY3Vy
cmVudCB0aHJlYWQgaG9sZHMgdGhlCiAgICAgLy8gbXV0ZXggd2hlbiB0aGlzIGlzIGNhbGxlZC4K
LSAgICBvd25lcl8gPSAwOworICAgIGhhc19vd25lcl8gPSBmYWxzZTsKICAgICBHVEVTVF9DSEVD
S19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXhfKSk7CiAgIH0KIAog
ICAvLyBEb2VzIG5vdGhpbmcgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGhvbGRzIHRoZSBtdXRleC4g
T3RoZXJ3aXNlLCBjcmFzaGVzCiAgIC8vIHdpdGggaGlnaCBwcm9iYWJpbGl0eS4KICAgdm9pZCBB
c3NlcnRIZWxkKCkgY29uc3QgewotICAgIEdURVNUX0NIRUNLXyhvd25lcl8gPT0gcHRocmVhZF9z
ZWxmKCkpCisgICAgR1RFU1RfQ0hFQ0tfKGhhc19vd25lcl8gJiYgcHRocmVhZF9lcXVhbChvd25l
cl8sIHB0aHJlYWRfc2VsZigpKSkKICAgICAgICAgPDwgIlRoZSBjdXJyZW50IHRocmVhZCBpcyBu
b3QgaG9sZGluZyB0aGUgbXV0ZXggQCIgPDwgdGhpczsKICAgfQogCkBAIC0xMDQ2LDE2ICsxOTU0
LDIzIEBAIGNsYXNzIE11dGV4QmFzZSB7CiAgIC8vIGhhdmUgdG8gYmUgcHVibGljLgogIHB1Ymxp
YzoKICAgcHRocmVhZF9tdXRleF90IG11dGV4XzsgIC8vIFRoZSB1bmRlcmx5aW5nIHB0aHJlYWQg
bXV0ZXguCi0gIHB0aHJlYWRfdCBvd25lcl87ICAvLyBUaGUgdGhyZWFkIGhvbGRpbmcgdGhlIG11
dGV4OyAwIG1lYW5zIG5vIG9uZSBob2xkcyBpdC4KKyAgLy8gaGFzX293bmVyXyBpbmRpY2F0ZXMg
d2hldGhlciB0aGUgb3duZXJfIGZpZWxkIGJlbG93IGNvbnRhaW5zIGEgdmFsaWQgdGhyZWFkCisg
IC8vIElEIGFuZCBpcyB0aGVyZWZvcmUgc2FmZSB0byBpbnNwZWN0IChlLmcuLCB0byB1c2UgaW4g
cHRocmVhZF9lcXVhbCgpKS4gQWxsCisgIC8vIGFjY2Vzc2VzIHRvIHRoZSBvd25lcl8gZmllbGQg
c2hvdWxkIGJlIHByb3RlY3RlZCBieSBhIGNoZWNrIG9mIHRoaXMgZmllbGQuCisgIC8vIEFuIGFs
dGVybmF0aXZlIG1pZ2h0IGJlIHRvIG1lbXNldCgpIG93bmVyXyB0byBhbGwgemVyb3MsIGJ1dCB0
aGVyZSdzIG5vCisgIC8vIGd1YXJhbnRlZSB0aGF0IGEgemVybydkIHB0aHJlYWRfdCBpcyBuZWNl
c3NhcmlseSBpbnZhbGlkIG9yIGV2ZW4gZGlmZmVyZW50CisgIC8vIGZyb20gcHRocmVhZF9zZWxm
KCkuCisgIGJvb2wgaGFzX293bmVyXzsKKyAgcHRocmVhZF90IG93bmVyXzsgIC8vIFRoZSB0aHJl
YWQgaG9sZGluZyB0aGUgbXV0ZXguCiB9OwogCiAvLyBGb3J3YXJkLWRlY2xhcmVzIGEgc3RhdGlj
IG11dGV4LgotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRFWF8obXV0ZXgpIFwKLSAg
ICBleHRlcm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXhCYXNlIG11dGV4CisjICBkZWZpbmUg
R1RFU1RfREVDTEFSRV9TVEFUSUNfTVVURVhfKG11dGV4KSBcCisgICAgIGV4dGVybiA6OnRlc3Rp
bmc6OmludGVybmFsOjpNdXRleEJhc2UgbXV0ZXgKIAogLy8gRGVmaW5lcyBhbmQgc3RhdGljYWxs
eSAoaS5lLiBhdCBsaW5rIHRpbWUpIGluaXRpYWxpemVzIGEgc3RhdGljIG11dGV4LgotI2RlZmlu
ZSBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhtdXRleCkgXAotICAgIDo6dGVzdGluZzo6aW50
ZXJuYWw6Ok11dGV4QmFzZSBtdXRleCA9IHsgUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUiwgMCB9
CisjICBkZWZpbmUgR1RFU1RfREVGSU5FX1NUQVRJQ19NVVRFWF8obXV0ZXgpIFwKKyAgICAgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXhCYXNlIG11dGV4ID0geyBQVEhSRUFEX01VVEVYX0lOSVRJ
QUxJWkVSLCBmYWxzZSwgcHRocmVhZF90KCkgfQogCiAvLyBUaGUgTXV0ZXggY2xhc3MgY2FuIG9u
bHkgYmUgdXNlZCBmb3IgbXV0ZXhlcyBjcmVhdGVkIGF0IHJ1bnRpbWUuIEl0CiAvLyBzaGFyZXMg
aXRzIEFQSSB3aXRoIE11dGV4QmFzZSBvdGhlcndpc2UuCkBAIC0xMDYzLDcgKzE5NzgsNyBAQCBj
bGFzcyBNdXRleCA6IHB1YmxpYyBNdXRleEJhc2UgewogIHB1YmxpYzoKICAgTXV0ZXgoKSB7CiAg
ICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9pbml0KCZtdXRleF8s
IE5VTEwpKTsKLSAgICBvd25lcl8gPSAwOworICAgIGhhc19vd25lcl8gPSBmYWxzZTsKICAgfQog
ICB+TXV0ZXgoKSB7CiAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRl
eF9kZXN0cm95KCZtdXRleF8pKTsKQEAgLTEwNzMsOSArMTk4OCwxMSBAQCBjbGFzcyBNdXRleCA6
IHB1YmxpYyBNdXRleEJhc2UgewogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE11
dGV4KTsKIH07CiAKLS8vIFdlIGNhbm5vdCBuYW1lIHRoaXMgY2xhc3MgTXV0ZXhMb2NrIGFzIHRo
ZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCisvLyBXZSBjYW5ub3QgbmFtZSB0aGlzIGNsYXNzIE11
dGV4TG9jayBiZWNhdXNlIHRoZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCiAvLyBjb25mbGljdCB3
aXRoIGEgbWFjcm8gbmFtZWQgTXV0ZXhMb2NrLCB3aGljaCBpcyBkZWZpbmVkIG9uIHNvbWUKLS8v
IHBsYXRmb3Jtcy4gIEhlbmNlIHRoZSB0eXBlZGVmIHRyaWNrIGJlbG93LgorLy8gcGxhdGZvcm1z
LiBUaGF0IG1hY3JvIGlzIHVzZWQgYXMgYSBkZWZlbnNpdmUgbWVhc3VyZSB0byBwcmV2ZW50IGFn
YWluc3QKKy8vIGluYWR2ZXJ0ZW50IG1pc3VzZXMgb2YgTXV0ZXhMb2NrIGxpa2UgIk11dGV4TG9j
aygmbXUpIiByYXRoZXIgdGhhbgorLy8gIk11dGV4TG9jayBsKCZtdSkiLiAgSGVuY2UgdGhlIHR5
cGVkZWYgdHJpY2sgYmVsb3cuCiBjbGFzcyBHVGVzdE11dGV4TG9jayB7CiAgcHVibGljOgogICBl
eHBsaWNpdCBHVGVzdE11dGV4TG9jayhNdXRleEJhc2UqIG11dGV4KQpAQCAtMTEwOSw0MSArMjAy
NiwxNCBAQCBleHRlcm4gIkMiIGlubGluZSB2b2lkIERlbGV0ZVRocmVhZExvY2FsVmFsdWUodm9p
ZCogdmFsdWVfaG9sZGVyKSB7CiB9CiAKIC8vIEltcGxlbWVudHMgdGhyZWFkLWxvY2FsIHN0b3Jh
Z2Ugb24gcHRocmVhZHMtYmFzZWQgc3lzdGVtcy4KLS8vCi0vLyAgIC8vIFRocmVhZCAxCi0vLyAg
IFRocmVhZExvY2FsPGludD4gdGwoMTAwKTsgIC8vIDEwMCBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBm
b3IgZWFjaCB0aHJlYWQuCi0vLwotLy8gICAvLyBUaHJlYWQgMgotLy8gICB0bC5zZXQoMTUwKTsg
IC8vIENoYW5nZXMgdGhlIHZhbHVlIGZvciB0aHJlYWQgMiBvbmx5LgotLy8gICBFWFBFQ1RfRVEo
MTUwLCB0bC5nZXQoKSk7Ci0vLwotLy8gICAvLyBUaHJlYWQgMQotLy8gICBFWFBFQ1RfRVEoMTAw
LCB0bC5nZXQoKSk7ICAvLyBJbiB0aHJlYWQgMSwgdGwgaGFzIHRoZSBvcmlnaW5hbCB2YWx1ZS4K
LS8vICAgdGwuc2V0KDIwMCk7Ci0vLyAgIEVYUEVDVF9FUSgyMDAsIHRsLmdldCgpKTsKLS8vCi0v
LyBUaGUgdGVtcGxhdGUgdHlwZSBhcmd1bWVudCBUIG11c3QgaGF2ZSBhIHB1YmxpYyBjb3B5IGNv
bnN0cnVjdG9yLgotLy8gSW4gYWRkaXRpb24sIHRoZSBkZWZhdWx0IFRocmVhZExvY2FsIGNvbnN0
cnVjdG9yIHJlcXVpcmVzIFQgdG8gaGF2ZQotLy8gYSBwdWJsaWMgZGVmYXVsdCBjb25zdHJ1Y3Rv
ci4KLS8vCi0vLyBBbiBvYmplY3QgbWFuYWdlZCBmb3IgYSB0aHJlYWQgYnkgYSBUaHJlYWRMb2Nh
bCBpbnN0YW5jZSBpcyBkZWxldGVkCi0vLyB3aGVuIHRoZSB0aHJlYWQgZXhpdHMuICBPciwgaWYg
dGhlIFRocmVhZExvY2FsIGluc3RhbmNlIGRpZXMgaW4KLS8vIHRoYXQgdGhyZWFkLCB3aGVuIHRo
ZSBUaHJlYWRMb2NhbCBkaWVzLiAgSXQncyB0aGUgdXNlcidzCi0vLyByZXNwb25zaWJpbGl0eSB0
byBlbnN1cmUgdGhhdCBhbGwgb3RoZXIgdGhyZWFkcyB1c2luZyBhIFRocmVhZExvY2FsCi0vLyBo
YXZlIGV4aXRlZCB3aGVuIGl0IGRpZXMsIG9yIHRoZSBwZXItdGhyZWFkIG9iamVjdHMgZm9yIHRo
b3NlCi0vLyB0aHJlYWRzIHdpbGwgbm90IGJlIGRlbGV0ZWQuCi0vLwotLy8gR29vZ2xlIFRlc3Qg
b25seSB1c2VzIGdsb2JhbCBUaHJlYWRMb2NhbCBvYmplY3RzLiAgVGhhdCBtZWFucyB0aGV5Ci0v
LyB3aWxsIGRpZSBhZnRlciBtYWluKCkgaGFzIHJldHVybmVkLiAgVGhlcmVmb3JlLCBubyBwZXIt
dGhyZWFkCi0vLyBvYmplY3QgbWFuYWdlZCBieSBHb29nbGUgVGVzdCB3aWxsIGJlIGxlYWtlZCBh
cyBsb25nIGFzIGFsbCB0aHJlYWRzCi0vLyB1c2luZyBHb29nbGUgVGVzdCBoYXZlIGV4aXRlZCB3
aGVuIG1haW4oKSByZXR1cm5zLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBUaHJlYWRM
b2NhbCB7CiAgcHVibGljOgotICBUaHJlYWRMb2NhbCgpIDoga2V5XyhDcmVhdGVLZXkoKSksCi0g
ICAgICAgICAgICAgICAgICBkZWZhdWx0XygpIHt9Ci0gIGV4cGxpY2l0IFRocmVhZExvY2FsKGNv
bnN0IFQmIHZhbHVlKSA6IGtleV8oQ3JlYXRlS2V5KCkpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Xyh2YWx1ZSkge30KKyAgVGhyZWFkTG9jYWwoKQor
ICAgICAgOiBrZXlfKENyZWF0ZUtleSgpKSwgZGVmYXVsdF9mYWN0b3J5XyhuZXcgRGVmYXVsdFZh
bHVlSG9sZGVyRmFjdG9yeSgpKSB7fQorICBleHBsaWNpdCBUaHJlYWRMb2NhbChjb25zdCBUJiB2
YWx1ZSkKKyAgICAgIDoga2V5XyhDcmVhdGVLZXkoKSksCisgICAgICAgIGRlZmF1bHRfZmFjdG9y
eV8obmV3IEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5KHZhbHVlKSkge30KIAogICB+VGhyZWFk
TG9jYWwoKSB7CiAgICAgLy8gRGVzdHJveXMgdGhlIG1hbmFnZWQgb2JqZWN0IGZvciB0aGUgY3Vy
cmVudCB0aHJlYWQsIGlmIGFueS4KQEAgLTExNjMsNiArMjA1Myw3IEBAIGNsYXNzIFRocmVhZExv
Y2FsIHsKICAgLy8gSG9sZHMgYSB2YWx1ZSBvZiB0eXBlIFQuCiAgIGNsYXNzIFZhbHVlSG9sZGVy
IDogcHVibGljIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlIHsKICAgIHB1YmxpYzoKKyAgICBW
YWx1ZUhvbGRlcigpIDogdmFsdWVfKCkge30KICAgICBleHBsaWNpdCBWYWx1ZUhvbGRlcihjb25z
dCBUJiB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9CiAKICAgICBUKiBwb2ludGVyKCkgeyByZXR1
cm4gJnZhbHVlXzsgfQpAQCAtMTE4OCwyMiArMjA3OSw1NCBAQCBjbGFzcyBUaHJlYWRMb2NhbCB7
CiAgICAgICByZXR1cm4gQ2hlY2tlZERvd25jYXN0VG9BY3R1YWxUeXBlPFZhbHVlSG9sZGVyPiho
b2xkZXIpLT5wb2ludGVyKCk7CiAgICAgfQogCi0gICAgVmFsdWVIb2xkZXIqIGNvbnN0IG5ld19o
b2xkZXIgPSBuZXcgVmFsdWVIb2xkZXIoZGVmYXVsdF8pOworICAgIFZhbHVlSG9sZGVyKiBjb25z
dCBuZXdfaG9sZGVyID0gZGVmYXVsdF9mYWN0b3J5Xy0+TWFrZU5ld0hvbGRlcigpOwogICAgIFRo
cmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlKiBjb25zdCBob2xkZXJfYmFzZSA9IG5ld19ob2xkZXI7
CiAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9zZXRzcGVjaWZpYyhrZXlf
LCBob2xkZXJfYmFzZSkpOwogICAgIHJldHVybiBuZXdfaG9sZGVyLT5wb2ludGVyKCk7CiAgIH0K
IAorICBjbGFzcyBWYWx1ZUhvbGRlckZhY3RvcnkgeworICAgcHVibGljOgorICAgIFZhbHVlSG9s
ZGVyRmFjdG9yeSgpIHt9CisgICAgdmlydHVhbCB+VmFsdWVIb2xkZXJGYWN0b3J5KCkge30KKyAg
ICB2aXJ0dWFsIFZhbHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkgY29uc3QgPSAwOworCisgICBw
cml2YXRlOgorICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVmFsdWVIb2xkZXJG
YWN0b3J5KTsKKyAgfTsKKworICBjbGFzcyBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5IDogcHVi
bGljIFZhbHVlSG9sZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAgRGVmYXVsdFZhbHVlSG9s
ZGVyRmFjdG9yeSgpIHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRlciogTWFrZU5ld0hvbGRlcigp
IGNvbnN0IHsgcmV0dXJuIG5ldyBWYWx1ZUhvbGRlcigpOyB9CisKKyAgIHByaXZhdGU6CisgICAg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5
KTsKKyAgfTsKKworICBjbGFzcyBJbnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeSA6IHB1YmxpYyBW
YWx1ZUhvbGRlckZhY3RvcnkgeworICAgcHVibGljOgorICAgIGV4cGxpY2l0IEluc3RhbmNlVmFs
dWVIb2xkZXJGYWN0b3J5KGNvbnN0IFQmIHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KKyAgICB2
aXJ0dWFsIFZhbHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkgY29uc3QgeworICAgICAgcmV0dXJu
IG5ldyBWYWx1ZUhvbGRlcih2YWx1ZV8pOworICAgIH0KKworICAgcHJpdmF0ZToKKyAgICBjb25z
dCBUIHZhbHVlXzsgIC8vIFRoZSB2YWx1ZSBmb3IgZWFjaCB0aHJlYWQuCisKKyAgICBHVEVTVF9E
SVNBTExPV19DT1BZX0FORF9BU1NJR05fKEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5KTsKKyAg
fTsKKwogICAvLyBBIGtleSBwdGhyZWFkcyB1c2VzIGZvciBsb29raW5nIHVwIHBlci10aHJlYWQg
dmFsdWVzLgogICBjb25zdCBwdGhyZWFkX2tleV90IGtleV87Ci0gIGNvbnN0IFQgZGVmYXVsdF87
ICAvLyBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgZWFjaCB0aHJlYWQuCisgIHNjb3BlZF9wdHI8VmFs
dWVIb2xkZXJGYWN0b3J5PiBkZWZhdWx0X2ZhY3RvcnlfOwogCiAgIEdURVNUX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTl8oVGhyZWFkTG9jYWwpOwogfTsKIAotI2RlZmluZSBHVEVTVF9JU19USFJF
QURTQUZFIDEKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMXwog
Ci0jZWxzZSAgLy8gR1RFU1RfSEFTX1BUSFJFQUQKKyNlbHNlICAvLyBHVEVTVF9JU19USFJFQURT
QUZFCiAKIC8vIEEgZHVtbXkgaW1wbGVtZW50YXRpb24gb2Ygc3luY2hyb25pemF0aW9uIHByaW1p
dGl2ZXMgKG11dGV4LCBsb2NrLAogLy8gYW5kIHRocmVhZC1sb2NhbCB2YXJpYWJsZSkuICBOZWNl
c3NhcnkgZm9yIGNvbXBpbGluZyBHb29nbGUgVGVzdCB3aGVyZQpAQCAtMTIxMywxNCArMjEzNiwy
MSBAQCBjbGFzcyBUaHJlYWRMb2NhbCB7CiBjbGFzcyBNdXRleCB7CiAgcHVibGljOgogICBNdXRl
eCgpIHt9CisgIHZvaWQgTG9jaygpIHt9CisgIHZvaWQgVW5sb2NrKCkge30KICAgdm9pZCBBc3Nl
cnRIZWxkKCkgY29uc3Qge30KIH07CiAKLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVU
RVhfKG11dGV4KSBcCisjIGRlZmluZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRFWF8obXV0ZXgp
IFwKICAgZXh0ZXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4IG11dGV4CiAKLSNkZWZpbmUg
R1RFU1RfREVGSU5FX1NUQVRJQ19NVVRFWF8obXV0ZXgpIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11
dGV4IG11dGV4CisjIGRlZmluZSBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhtdXRleCkgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXggbXV0ZXgKIAorLy8gV2UgY2Fubm90IG5hbWUgdGhpcyBj
bGFzcyBNdXRleExvY2sgYmVjYXVzZSB0aGUgY3RvciBkZWNsYXJhdGlvbiB3b3VsZAorLy8gY29u
ZmxpY3Qgd2l0aCBhIG1hY3JvIG5hbWVkIE11dGV4TG9jaywgd2hpY2ggaXMgZGVmaW5lZCBvbiBz
b21lCisvLyBwbGF0Zm9ybXMuIFRoYXQgbWFjcm8gaXMgdXNlZCBhcyBhIGRlZmVuc2l2ZSBtZWFz
dXJlIHRvIHByZXZlbnQgYWdhaW5zdAorLy8gaW5hZHZlcnRlbnQgbWlzdXNlcyBvZiBNdXRleExv
Y2sgbGlrZSAiTXV0ZXhMb2NrKCZtdSkiIHJhdGhlciB0aGFuCisvLyAiTXV0ZXhMb2NrIGwoJm11
KSIuICBIZW5jZSB0aGUgdHlwZWRlZiB0cmljayBiZWxvdy4KIGNsYXNzIEdUZXN0TXV0ZXhMb2Nr
IHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0IEdUZXN0TXV0ZXhMb2NrKE11dGV4Kikge30gIC8vIE5P
TElOVApAQCAtMTI0MSwxMSArMjE3MSw3IEBAIGNsYXNzIFRocmVhZExvY2FsIHsKICAgVCB2YWx1
ZV87CiB9OwogCi0vLyBUaGUgYWJvdmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaGF2ZSBk
dW1teSBpbXBsZW1lbnRhdGlvbnMuCi0vLyBUaGVyZWZvcmUgR29vZ2xlIFRlc3QgaXMgbm90IHRo
cmVhZC1zYWZlLgotI2RlZmluZSBHVEVTVF9JU19USFJFQURTQUZFIDAKLQotI2VuZGlmICAvLyBH
VEVTVF9IQVNfUFRIUkVBRAorI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCiAKIC8vIFJl
dHVybnMgdGhlIG51bWJlciBvZiB0aHJlYWRzIHJ1bm5pbmcgaW4gdGhlIHByb2Nlc3MsIG9yIDAg
dG8gaW5kaWNhdGUgdGhhdAogLy8gd2UgY2Fubm90IGRldGVjdCBpdC4KQEAgLTEyNjAsOSArMjE4
Niw5IEBAIEdURVNUX0FQSV8gc2l6ZV90IEdldFRocmVhZENvdW50KCk7CiAjaWYgZGVmaW5lZChf
X1NZTUJJQU4zMl9fKSB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pIHx8IGRlZmluZWQoX19TVU5QUk9f
Q0MpCiAvLyBXZSBsb3NlIHN1cHBvcnQgZm9yIE5VTEwgZGV0ZWN0aW9uIHdoZXJlIHRoZSBjb21w
aWxlciBkb2Vzbid0IGxpa2UKIC8vIHBhc3Npbmcgbm9uLVBPRCBjbGFzc2VzIHRocm91Z2ggZWxs
aXBzaXMgKC4uLikuCi0jZGVmaW5lIEdURVNUX0VMTElQU0lTX05FRURTX1BPRF8gMQorIyBkZWZp
bmUgR1RFU1RfRUxMSVBTSVNfTkVFRFNfUE9EXyAxCiAjZWxzZQotI2RlZmluZSBHVEVTVF9DQU5f
Q09NUEFSRV9OVUxMIDEKKyMgZGVmaW5lIEdURVNUX0NBTl9DT01QQVJFX05VTEwgMQogI2VuZGlm
CiAKIC8vIFRoZSBOb2tpYSBTeW1iaWFuIGFuZCBJQk0gWEwgQy9DKysgY29tcGlsZXJzIGNhbm5v
dCBkZWNpZGUgYmV0d2VlbgpAQCAtMTI3MCw3ICsyMTk2LDcgQEAgR1RFU1RfQVBJXyBzaXplX3Qg
R2V0VGhyZWFkQ291bnQoKTsKIC8vIF9jYW5fIGRlY2lkZSBiZXR3ZWVuIGNsYXNzIHRlbXBsYXRl
IHNwZWNpYWxpemF0aW9ucyBmb3IgVCBhbmQgVCosCiAvLyBzbyBhIHRyMTo6dHlwZV90cmFpdHMt
bGlrZSBpc19wb2ludGVyIHdvcmtzLgogI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgfHwgZGVm
aW5lZChfX0lCTUNQUF9fKQotI2RlZmluZSBHVEVTVF9ORUVEU19JU19QT0lOVEVSXyAxCisjIGRl
ZmluZSBHVEVTVF9ORUVEU19JU19QT0lOVEVSXyAxCiAjZW5kaWYKIAogdGVtcGxhdGUgPGJvb2wg
Ym9vbF92YWx1ZT4KQEAgLTEyODksMTcgKzIyMTUsNzkgQEAgc3RydWN0IGlzX3BvaW50ZXIgOiBw
dWJsaWMgZmFsc2VfdHlwZSB7fTsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RydWN0IGlzX3Bv
aW50ZXI8VCo+IDogcHVibGljIHRydWVfdHlwZSB7fTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIEl0
ZXJhdG9yPgorc3RydWN0IEl0ZXJhdG9yVHJhaXRzIHsKKyAgdHlwZWRlZiB0eXBlbmFtZSBJdGVy
YXRvcjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitzdHJ1Y3QgSXRlcmF0b3JUcmFpdHM8VCo+IHsKKyAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Cit9
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBJdGVyYXRvclRyYWl0czxjb25zdCBU
Kj4geworICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKK307CisKICNpZiBHVEVTVF9PU19XSU5ET1dT
Ci0jZGVmaW5lIEdURVNUX1BBVEhfU0VQXyAiXFwiCi0jZGVmaW5lIEdURVNUX0hBU19BTFRfUEFU
SF9TRVBfIDEKKyMgZGVmaW5lIEdURVNUX1BBVEhfU0VQXyAiXFwiCisjIGRlZmluZSBHVEVTVF9I
QVNfQUxUX1BBVEhfU0VQXyAxCiAvLyBUaGUgYmlnZ2VzdCBzaWduZWQgaW50ZWdlciB0eXBlIHRo
ZSBjb21waWxlciBzdXBwb3J0cy4KIHR5cGVkZWYgX19pbnQ2NCBCaWdnZXN0SW50OwogI2Vsc2UK
LSNkZWZpbmUgR1RFU1RfUEFUSF9TRVBfICIvIgotI2RlZmluZSBHVEVTVF9IQVNfQUxUX1BBVEhf
U0VQXyAwCisjIGRlZmluZSBHVEVTVF9QQVRIX1NFUF8gIi8iCisjIGRlZmluZSBHVEVTVF9IQVNf
QUxUX1BBVEhfU0VQXyAwCiB0eXBlZGVmIGxvbmcgbG9uZyBCaWdnZXN0SW50OyAgLy8gTk9MSU5U
CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAorLy8gVXRpbGl0aWVzIGZvciBjaGFyLgor
CisvLyBpc3NwYWNlKGludCBjaCkgYW5kIGZyaWVuZHMgYWNjZXB0IGFuIHVuc2lnbmVkIGNoYXIg
b3IgRU9GLiAgY2hhcgorLy8gbWF5IGJlIHNpZ25lZCwgZGVwZW5kaW5nIG9uIHRoZSBjb21waWxl
ciAob3IgY29tcGlsZXIgZmxhZ3MpLgorLy8gVGhlcmVmb3JlIHdlIG5lZWQgdG8gY2FzdCBhIGNo
YXIgdG8gdW5zaWduZWQgY2hhciBiZWZvcmUgY2FsbGluZworLy8gaXNzcGFjZSgpLCBldGMuCisK
K2lubGluZSBib29sIElzQWxwaGEoY2hhciBjaCkgeworICByZXR1cm4gaXNhbHBoYShzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpICE9IDA7Cit9CitpbmxpbmUgYm9vbCBJc0FsTnVtKGNo
YXIgY2gpIHsKKyAgcmV0dXJuIGlzYWxudW0oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gp
KSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNEaWdpdChjaGFyIGNoKSB7CisgIHJldHVybiBpc2Rp
Z2l0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKK30KK2lubGluZSBib29s
IElzTG93ZXIoY2hhciBjaCkgeworICByZXR1cm4gaXNsb3dlcihzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPihjaCkpICE9IDA7Cit9CitpbmxpbmUgYm9vbCBJc1NwYWNlKGNoYXIgY2gpIHsKKyAg
cmV0dXJuIGlzc3BhY2Uoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOworfQor
aW5saW5lIGJvb2wgSXNVcHBlcihjaGFyIGNoKSB7CisgIHJldHVybiBpc3VwcGVyKHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKK30KK2lubGluZSBib29sIElzWERpZ2l0KGNo
YXIgY2gpIHsKKyAgcmV0dXJuIGlzeGRpZ2l0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNo
KSkgIT0gMDsKK30KK2lubGluZSBib29sIElzWERpZ2l0KHdjaGFyX3QgY2gpIHsKKyAgY29uc3Qg
dW5zaWduZWQgY2hhciBsb3dfYnl0ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKTsK
KyAgcmV0dXJuIGNoID09IGxvd19ieXRlICYmIGlzeGRpZ2l0KGxvd19ieXRlKSAhPSAwOworfQor
CitpbmxpbmUgY2hhciBUb0xvd2VyKGNoYXIgY2gpIHsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PGNo
YXI+KHRvbG93ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSk7Cit9CitpbmxpbmUg
Y2hhciBUb1VwcGVyKGNoYXIgY2gpIHsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXI+KHRvdXBw
ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSk7Cit9CisKK2lubGluZSBzdGQ6OnN0
cmluZyBTdHJpcFRyYWlsaW5nU3BhY2VzKHN0ZDo6c3RyaW5nIHN0cikgeworICBzdGQ6OnN0cmlu
Zzo6aXRlcmF0b3IgaXQgPSBzdHIuZW5kKCk7CisgIHdoaWxlIChpdCAhPSBzdHIuYmVnaW4oKSAm
JiBJc1NwYWNlKCotLWl0KSkKKyAgICBpdCA9IHN0ci5lcmFzZShpdCk7CisgIHJldHVybiBzdHI7
Cit9CisKIC8vIFRoZSB0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXggbmFtZXNwYWNlIGhvbGRzIHdy
YXBwZXJzIGZvciBjb21tb24KIC8vIFBPU0lYIGZ1bmN0aW9ucy4gIFRoZXNlIHdyYXBwZXJzIGhp
ZGUgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4KIC8vIFdpbmRvd3MvTVNWQyBhbmQgUE9TSVggc3lz
dGVtcy4gIFNpbmNlIHNvbWUgY29tcGlsZXJzIGRlZmluZSB0aGVzZQpAQCAtMTMxNCwzNiArMjMw
MiwzNiBAQCBuYW1lc3BhY2UgcG9zaXggewogCiB0eXBlZGVmIHN0cnVjdCBfc3RhdCBTdGF0U3Ry
dWN0OwogCi0jaWZkZWYgX19CT1JMQU5EQ19fCisjIGlmZGVmIF9fQk9STEFORENfXwogaW5saW5l
IGludCBJc0FUVFkoaW50IGZkKSB7IHJldHVybiBpc2F0dHkoZmQpOyB9CiBpbmxpbmUgaW50IFN0
ckNhc2VDbXAoY29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyKSB7CiAgIHJldHVybiBzdHJp
Y21wKHMxLCBzMik7CiB9CiBpbmxpbmUgY2hhciogU3RyRHVwKGNvbnN0IGNoYXIqIHNyYykgeyBy
ZXR1cm4gc3RyZHVwKHNyYyk7IH0KLSNlbHNlICAvLyAhX19CT1JMQU5EQ19fCi0jaWYgR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKKyMgZWxzZSAgLy8gIV9fQk9STEFORENfXworIyAgaWYgR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKIGlubGluZSBpbnQgSXNBVFRZKGludCAvKiBmZCAqLykgeyByZXR1
cm4gMDsgfQotI2Vsc2UKKyMgIGVsc2UKIGlubGluZSBpbnQgSXNBVFRZKGludCBmZCkgeyByZXR1
cm4gX2lzYXR0eShmZCk7IH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMg
IGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogaW5saW5lIGludCBTdHJDYXNlQ21w
KGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMikgewogICByZXR1cm4gX3N0cmljbXAoczEs
IHMyKTsKIH0KIGlubGluZSBjaGFyKiBTdHJEdXAoY29uc3QgY2hhciogc3JjKSB7IHJldHVybiBf
c3RyZHVwKHNyYyk7IH0KLSNlbmRpZiAgLy8gX19CT1JMQU5EQ19fCisjIGVuZGlmICAvLyBfX0JP
UkxBTkRDX18KIAotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGlmIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCiBpbmxpbmUgaW50IEZpbGVObyhGSUxFKiBmaWxlKSB7IHJldHVybiByZWlu
dGVycHJldF9jYXN0PGludD4oX2ZpbGVubyhmaWxlKSk7IH0KIC8vIFN0YXQoKSwgUm1EaXIoKSwg
YW5kIElzRGlyKCkgYXJlIG5vdCBuZWVkZWQgb24gV2luZG93cyBDRSBhdCB0aGlzCiAvLyB0aW1l
IGFuZCB0aHVzIG5vdCBkZWZpbmVkIHRoZXJlLgotI2Vsc2UKKyMgZWxzZQogaW5saW5lIGludCBG
aWxlTm8oRklMRSogZmlsZSkgeyByZXR1cm4gX2ZpbGVubyhmaWxlKTsgfQogaW5saW5lIGludCBT
dGF0KGNvbnN0IGNoYXIqIHBhdGgsIFN0YXRTdHJ1Y3QqIGJ1ZikgeyByZXR1cm4gX3N0YXQocGF0
aCwgYnVmKTsgfQogaW5saW5lIGludCBSbURpcihjb25zdCBjaGFyKiBkaXIpIHsgcmV0dXJuIF9y
bWRpcihkaXIpOyB9CiBpbmxpbmUgYm9vbCBJc0Rpcihjb25zdCBTdGF0U3RydWN0JiBzdCkgewog
ICByZXR1cm4gKF9TX0lGRElSICYgc3Quc3RfbW9kZSkgIT0gMDsKIH0KLSNlbmRpZiAgLy8gR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxF
CiAKICNlbHNlCiAKQEAgLTEzNjMsMTEgKzIzNTEsNyBAQCBpbmxpbmUgYm9vbCBJc0Rpcihjb25z
dCBTdGF0U3RydWN0JiBzdCkgeyByZXR1cm4gU19JU0RJUihzdC5zdF9tb2RlKTsgfQogCiAvLyBG
dW5jdGlvbnMgZGVwcmVjYXRlZCBieSBNU1ZDIDguMC4KIAotI2lmZGVmIF9NU0NfVkVSCi0vLyBU
ZW1wb3JhcmlseSBkaXNhYmxlIHdhcm5pbmcgNDk5NiAoZGVwcmVjYXRlZCBmdW5jdGlvbikuCi0j
cHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5OTYpCi0jZW5k
aWYKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQ5OTYgLyogZGVwcmVjYXRlZCBm
dW5jdGlvbiAqLykKIAogaW5saW5lIGNvbnN0IGNoYXIqIFN0ck5DcHkoY2hhciogZGVzdCwgY29u
c3QgY2hhciogc3JjLCBzaXplX3QgbikgewogICByZXR1cm4gc3RybmNweShkZXN0LCBzcmMsIG4p
OwpAQCAtMTM3Nyw3ICsyMzYxLDcgQEAgaW5saW5lIGNvbnN0IGNoYXIqIFN0ck5DcHkoY2hhciog
ZGVzdCwgY29uc3QgY2hhciogc3JjLCBzaXplX3QgbikgewogLy8gU3RyRXJyb3IoKSBhcmVuJ3Qg
bmVlZGVkIG9uIFdpbmRvd3MgQ0UgYXQgdGhpcyB0aW1lIGFuZCB0aHVzIG5vdAogLy8gZGVmaW5l
ZCB0aGVyZS4KIAotI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorI2lmICFHVEVTVF9PU19X
SU5ET1dTX01PQklMRSAmJiAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lO
RE9XU19SVAogaW5saW5lIGludCBDaERpcihjb25zdCBjaGFyKiBkaXIpIHsgcmV0dXJuIGNoZGly
KGRpcik7IH0KICNlbmRpZgogaW5saW5lIEZJTEUqIEZPcGVuKGNvbnN0IGNoYXIqIHBhdGgsIGNv
bnN0IGNoYXIqIG1vZGUpIHsKQEAgLTE0MDEsOCArMjM4NSw5IEBAIGlubGluZSBpbnQgQ2xvc2Uo
aW50IGZkKSB7IHJldHVybiBjbG9zZShmZCk7IH0KIGlubGluZSBjb25zdCBjaGFyKiBTdHJFcnJv
cihpbnQgZXJybnVtKSB7IHJldHVybiBzdHJlcnJvcihlcnJudW0pOyB9CiAjZW5kaWYKIGlubGlu
ZSBjb25zdCBjaGFyKiBHZXRFbnYoY29uc3QgY2hhciogbmFtZSkgewotI2lmIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCisjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgfHwgR1RFU1RfT1NfV0lO
RE9XU19QSE9ORSB8IEdURVNUX09TX1dJTkRPV1NfUlQKICAgLy8gV2UgYXJlIG9uIFdpbmRvd3Mg
Q0UsIHdoaWNoIGhhcyBubyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCisgIHN0YXRpY19jYXN0PHZv
aWQ+KG5hbWUpOyAgLy8gVG8gcHJldmVudCAndW51c2VkIGFyZ3VtZW50JyB3YXJuaW5nLgogICBy
ZXR1cm4gTlVMTDsKICNlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCBkZWZpbmVkKF9fU3Vu
T1NfNV84KSB8fCBkZWZpbmVkKF9fU3VuT1NfNV85KQogICAvLyBFbnZpcm9ubWVudCB2YXJpYWJs
ZXMgd2hpY2ggd2UgcHJvZ3JhbW1hdGljYWxseSBjbGVhciB3aWxsIGJlIHNldCB0byB0aGUKQEAg
LTE0MTQsOSArMjM5OSw3IEBAIGlubGluZSBjb25zdCBjaGFyKiBHZXRFbnYoY29uc3QgY2hhciog
bmFtZSkgewogI2VuZGlmCiB9CiAKLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHBv
cCkgIC8vIFJlc3RvcmVzIHRoZSB3YXJuaW5nIHN0YXRlLgotI2VuZGlmCitHVEVTVF9ESVNBQkxF
X01TQ19XQVJOSU5HU19QT1BfKCkKIAogI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAvLyBX
aW5kb3dzIENFIGhhcyBubyBDIGxpYnJhcnkuIFRoZSBhYm9ydCgpIGZ1bmN0aW9uIGlzIHVzZWQg
aW4KQEAgLTE0MjksNiArMjQxMiwyMyBAQCBpbmxpbmUgdm9pZCBBYm9ydCgpIHsgYWJvcnQoKTsg
fQogCiB9ICAvLyBuYW1lc3BhY2UgcG9zaXgKIAorLy8gTVNWQyAiZGVwcmVjYXRlcyIgc25wcmlu
dGYgYW5kIGlzc3VlcyB3YXJuaW5ncyB3aGVyZXZlciBpdCBpcyB1c2VkLiAgSW4KKy8vIG9yZGVy
IHRvIGF2b2lkIHRoZXNlIHdhcm5pbmdzLCB3ZSBuZWVkIHRvIHVzZSBfc25wcmludGYgb3IgX3Nu
cHJpbnRmX3Mgb24KKy8vIE1TVkMtYmFzZWQgcGxhdGZvcm1zLiAgV2UgbWFwIHRoZSBHVEVTVF9T
TlBSSU5URl8gbWFjcm8gdG8gdGhlIGFwcHJvcHJpYXRlCisvLyBmdW5jdGlvbiBpbiBvcmRlciB0
byBhY2hpZXZlIHRoYXQuICBXZSB1c2UgbWFjcm8gZGVmaW5pdGlvbiBoZXJlIGJlY2F1c2UKKy8v
IHNucHJpbnRmIGlzIGEgdmFyaWFkaWMgZnVuY3Rpb24uCisjaWYgX01TQ19WRVIgPj0gMTQwMCAm
JiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKy8vIE1TVkMgMjAwNSBhbmQgYWJvdmUgc3VwcG9y
dCB2YXJpYWRpYyBtYWNyb3MuCisjIGRlZmluZSBHVEVTVF9TTlBSSU5URl8oYnVmZmVyLCBzaXpl
LCBmb3JtYXQsIC4uLikgXAorICAgICBfc25wcmludGZfcyhidWZmZXIsIHNpemUsIHNpemUsIGZv
cm1hdCwgX19WQV9BUkdTX18pCisjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorLy8gV2luZG93cyBD
RSBkb2VzIG5vdCBkZWZpbmUgX3NucHJpbnRmX3MgYW5kIE1TVkMgcHJpb3IgdG8gMjAwNSBkb2Vz
bid0CisvLyBjb21wbGFpbiBhYm91dCBfc25wcmludGYuCisjIGRlZmluZSBHVEVTVF9TTlBSSU5U
Rl8gX3NucHJpbnRmCisjZWxzZQorIyBkZWZpbmUgR1RFU1RfU05QUklOVEZfIHNucHJpbnRmCisj
ZW5kaWYKKwogLy8gVGhlIG1heGltdW0gbnVtYmVyIGEgQmlnZ2VzdEludCBjYW4gcmVwcmVzZW50
LiAgVGhpcyBkZWZpbml0aW9uCiAvLyB3b3JrcyBubyBtYXR0ZXIgQmlnZ2VzdEludCBpcyByZXBy
ZXNlbnRlZCBpbiBvbmUncyBjb21wbGVtZW50IG9yCiAvLyB0d28ncyBjb21wbGVtZW50LgpAQCAt
MTUwMCwxNCArMjUwMCwyMyBAQCB0eXBlZGVmIFR5cGVXaXRoU2l6ZTw4Pjo6SW50IFRpbWVJbk1p
bGxpczsgIC8vIFJlcHJlc2VudHMgdGltZSBpbiBtaWxsaXNlY29uZHMuCiAvLyBVdGlsaXRpZXMg
Zm9yIGNvbW1hbmQgbGluZSBmbGFncyBhbmQgZW52aXJvbm1lbnQgdmFyaWFibGVzLgogCiAvLyBN
YWNybyBmb3IgcmVmZXJlbmNpbmcgZmxhZ3MuCi0jZGVmaW5lIEdURVNUX0ZMQUcobmFtZSkgRkxB
R1NfZ3Rlc3RfIyNuYW1lCisjaWYgIWRlZmluZWQoR1RFU1RfRkxBRykKKyMgZGVmaW5lIEdURVNU
X0ZMQUcobmFtZSkgRkxBR1NfZ3Rlc3RfIyNuYW1lCisjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNU
X0ZMQUcpCisKKyNpZiAhZGVmaW5lZChHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfKQorIyBk
ZWZpbmUgR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXyAxCisjZW5kaWYgIC8vICFkZWZpbmVk
KEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18pCisKKyNpZiAhZGVmaW5lZChHVEVTVF9ERUNM
QVJFX2Jvb2xfKQorIyBkZWZpbmUgR1RFU1RfRkxBR19TQVZFUl8gOjp0ZXN0aW5nOjppbnRlcm5h
bDo6R1Rlc3RGbGFnU2F2ZXIKIAogLy8gTWFjcm9zIGZvciBkZWNsYXJpbmcgZmxhZ3MuCi0jZGVm
aW5lIEdURVNUX0RFQ0xBUkVfYm9vbF8obmFtZSkgR1RFU1RfQVBJXyBleHRlcm4gYm9vbCBHVEVT
VF9GTEFHKG5hbWUpCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVfaW50MzJfKG5hbWUpIFwKKyMgZGVm
aW5lIEdURVNUX0RFQ0xBUkVfYm9vbF8obmFtZSkgR1RFU1RfQVBJXyBleHRlcm4gYm9vbCBHVEVT
VF9GTEFHKG5hbWUpCisjIGRlZmluZSBHVEVTVF9ERUNMQVJFX2ludDMyXyhuYW1lKSBcCiAgICAg
R1RFU1RfQVBJXyBleHRlcm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW50MzIgR1RFU1RfRkxBRyhu
YW1lKQogI2RlZmluZSBHVEVTVF9ERUNMQVJFX3N0cmluZ18obmFtZSkgXAotICAgIEdURVNUX0FQ
SV8gZXh0ZXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZyBHVEVTVF9GTEFHKG5hbWUpCisg
ICAgR1RFU1RfQVBJXyBleHRlcm4gOjpzdGQ6OnN0cmluZyBHVEVTVF9GTEFHKG5hbWUpCiAKIC8v
IE1hY3JvcyBmb3IgZGVmaW5pbmcgZmxhZ3MuCiAjZGVmaW5lIEdURVNUX0RFRklORV9ib29sXyhu
YW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCkBAIC0xNTE1LDcgKzI1MjQsMTUgQEAgdHlwZWRlZiBU
eXBlV2l0aFNpemU8OD46OkludCBUaW1lSW5NaWxsaXM7ICAvLyBSZXByZXNlbnRzIHRpbWUgaW4g
bWlsbGlzZWNvbmRzLgogI2RlZmluZSBHVEVTVF9ERUZJTkVfaW50MzJfKG5hbWUsIGRlZmF1bHRf
dmFsLCBkb2MpIFwKICAgICBHVEVTVF9BUElfIDo6dGVzdGluZzo6aW50ZXJuYWw6OkludDMyIEdU
RVNUX0ZMQUcobmFtZSkgPSAoZGVmYXVsdF92YWwpCiAjZGVmaW5lIEdURVNUX0RFRklORV9zdHJp
bmdfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpIFwKLSAgICBHVEVTVF9BUElfIDo6dGVzdGluZzo6
aW50ZXJuYWw6OlN0cmluZyBHVEVTVF9GTEFHKG5hbWUpID0gKGRlZmF1bHRfdmFsKQorICAgIEdU
RVNUX0FQSV8gOjpzdGQ6OnN0cmluZyBHVEVTVF9GTEFHKG5hbWUpID0gKGRlZmF1bHRfdmFsKQor
CisjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0RFQ0xBUkVfYm9vbF8pCisKKy8vIFRocmVhZCBh
bm5vdGF0aW9ucworI2lmICFkZWZpbmVkKEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXykK
KyMgZGVmaW5lIEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhsb2NrcykKKyMgZGVmaW5l
IEdURVNUX0xPQ0tfRVhDTFVERURfKGxvY2tzKQorI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9F
WENMVVNJVkVfTE9DS19SRVFVSVJFRF8pCiAKIC8vIFBhcnNlcyAnc3RyJyBmb3IgYSAzMi1iaXQg
c2lnbmVkIGludGVnZXIuICBJZiBzdWNjZXNzZnVsLCB3cml0ZXMgdGhlIHJlc3VsdAogLy8gdG8g
KnZhbHVlIGFuZCByZXR1cm5zIHRydWU7IG90aGVyd2lzZSBsZWF2ZXMgKnZhbHVlIHVuY2hhbmdl
ZCBhbmQgcmV0dXJucwpAQCAtMTUyOSw3ICsyNTQ2LDcgQEAgYm9vbCBQYXJzZUludDMyKGNvbnN0
IE1lc3NhZ2UmIHNyY190ZXh0LCBjb25zdCBjaGFyKiBzdHIsIEludDMyKiB2YWx1ZSk7CiAvLyBj
b3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBHb29nbGUgVGVzdCBmbGFnLgogYm9vbCBCb29sRnJv
bUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIGJvb2wgZGVmYXVsdF92YWwpOwogR1RFU1RfQVBJ
XyBJbnQzMiBJbnQzMkZyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBJbnQzMiBkZWZhdWx0
X3ZhbCk7Ci1jb25zdCBjaGFyKiBTdHJpbmdGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywg
Y29uc3QgY2hhciogZGVmYXVsdF92YWwpOworc3RkOjpzdHJpbmcgU3RyaW5nRnJvbUdUZXN0RW52
KGNvbnN0IGNoYXIqIGZsYWcsIGNvbnN0IGNoYXIqIGRlZmF1bHRfdmFsKTsKIAogfSAgLy8gbmFt
ZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
c3RyaW5nLmgKaW5kZXggYWZmMDkzZGVjOGRiMzk5MDc0ZWEzYjcxYmI3MjI3ZGE3ZTk2NzMwYS4u
OTdmMWE3ZmRkMmMwY2M0NGMzYTE0OGYwZjFlY2RjYmRmZTliYWM2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXN0cmluZy5oCkBAIC00Myw1NCArNDMsMjIgQEAKIAogI2lmZGVmIF9fQk9STEFORENfXwog
Ly8gc3RyaW5nLmggaXMgbm90IGd1YXJhbnRlZWQgdG8gcHJvdmlkZSBzdHJjcHkgb24gQysrIEJ1
aWxkZXIuCi0jaW5jbHVkZSA8bWVtLmg+CisjIGluY2x1ZGUgPG1lbS5oPgogI2VuZGlmCiAKICNp
bmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+
Ci0KICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1w
b3J0LmgiCisKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKLS8v
IFN0cmluZyAtIGEgVVRGLTggc3RyaW5nIGNsYXNzLgotLy8KLS8vIEZvciBoaXN0b3JpYyByZWFz
b25zLCB3ZSBkb24ndCB1c2Ugc3RkOjpzdHJpbmcuCi0vLwotLy8gVE9ETyh3YW5AZ29vZ2xlLmNv
bSk6IHJlcGxhY2UgdGhpcyBjbGFzcyB3aXRoIHN0ZDo6c3RyaW5nIG9yCi0vLyBpbXBsZW1lbnQg
aXQgaW4gdGVybXMgb2YgdGhlIGxhdHRlci4KLS8vCi0vLyBOb3RlIHRoYXQgU3RyaW5nIGNhbiBy
ZXByZXNlbnQgYm90aCBOVUxMIGFuZCB0aGUgZW1wdHkgc3RyaW5nLAotLy8gd2hpbGUgc3RkOjpz
dHJpbmcgY2Fubm90IHJlcHJlc2VudCBOVUxMLgotLy8KLS8vIE5VTEwgYW5kIHRoZSBlbXB0eSBz
dHJpbmcgYXJlIGNvbnNpZGVyZWQgZGlmZmVyZW50LiAgTlVMTCBpcyBsZXNzCi0vLyB0aGFuIGFu
eXRoaW5nIChpbmNsdWRpbmcgdGhlIGVtcHR5IHN0cmluZykgZXhjZXB0IGl0c2VsZi4KLS8vCi0v
LyBUaGlzIGNsYXNzIG9ubHkgcHJvdmlkZXMgbWluaW11bSBmdW5jdGlvbmFsaXR5IG5lY2Vzc2Fy
eSBmb3IKLS8vIGltcGxlbWVudGluZyBHb29nbGUgVGVzdC4gIFdlIGRvIG5vdCBpbnRlbmQgdG8g
aW1wbGVtZW50IGEgZnVsbC1mbGVkZ2VkCi0vLyBzdHJpbmcgY2xhc3MgaGVyZS4KLS8vCi0vLyBT
aW5jZSB0aGUgcHVycG9zZSBvZiB0aGlzIGNsYXNzIGlzIHRvIHByb3ZpZGUgYSBzdWJzdGl0dXRl
IGZvcgotLy8gc3RkOjpzdHJpbmcgb24gcGxhdGZvcm1zIHdoZXJlIGl0IGNhbm5vdCBiZSB1c2Vk
LCB3ZSBkZWZpbmUgYSBjb3B5Ci0vLyBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVyYXRv
cnMgc3VjaCB0aGF0IHdlIGRvbid0IG5lZWQKLS8vIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGlu
IGEgbG90IG9mIHBsYWNlcy4KLS8vCi0vLyBJbiBvcmRlciB0byBtYWtlIHRoZSByZXByZXNlbnRh
dGlvbiBlZmZpY2llbnQsIHRoZSBkJ3RvciBvZiBTdHJpbmcKLS8vIGlzIG5vdCB2aXJ0dWFsLiAg
VGhlcmVmb3JlIERPIE5PVCBJTkhFUklUIEZST00gU3RyaW5nLgorLy8gU3RyaW5nIC0gYW4gYWJz
dHJhY3QgY2xhc3MgaG9sZGluZyBzdGF0aWMgc3RyaW5nIHV0aWxpdGllcy4KIGNsYXNzIEdURVNU
X0FQSV8gU3RyaW5nIHsKICBwdWJsaWM6CiAgIC8vIFN0YXRpYyB1dGlsaXR5IG1ldGhvZHMKIAot
ICAvLyBSZXR1cm5zIHRoZSBpbnB1dCBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzIGlmIGl0J3Mg
bm90IE5VTEw7Ci0gIC8vIG90aGVyd2lzZSByZXR1cm5zICIobnVsbCkiLiAgRm9yIGV4YW1wbGUs
ICJcIkhlbGxvXCIiIGlzIHJldHVybmVkCi0gIC8vIGZvciBpbnB1dCAiSGVsbG8iLgotICAvLwot
ICAvLyBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJpbnRpbmcgYSBDIHN0cmluZyBpbiB0aGUgc3ludGF4
IG9mIGEgbGl0ZXJhbC4KLSAgLy8KLSAgLy8gS25vd24gaXNzdWU6IGVzY2FwZSBzZXF1ZW5jZXMg
YXJlIG5vdCBoYW5kbGVkIHlldC4KLSAgc3RhdGljIFN0cmluZyBTaG93Q1N0cmluZ1F1b3RlZChj
b25zdCBjaGFyKiBjX3N0cik7Ci0KICAgLy8gQ2xvbmVzIGEgMC10ZXJtaW5hdGVkIEMgc3RyaW5n
LCBhbGxvY2F0aW5nIG1lbW9yeSB1c2luZyBuZXcuICBUaGUKICAgLy8gY2FsbGVyIGlzIHJlc3Bv
bnNpYmxlIGZvciBkZWxldGluZyB0aGUgcmV0dXJuIHZhbHVlIHVzaW5nCiAgIC8vIGRlbGV0ZVtd
LiAgUmV0dXJucyB0aGUgY2xvbmVkIHN0cmluZywgb3IgTlVMTCBpZiB0aGUgaW5wdXQgaXMKQEAg
LTEzNywxMSArMTA1LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBTdHJpbmcgewogICAvLyBOVUxMIHdp
bGwgYmUgY29udmVydGVkIHRvICIobnVsbCkiLiAgSWYgYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5n
CiAgIC8vIHRoZSBjb252ZXJzaW9uLCAiKGZhaWxlZCB0byBjb252ZXJ0IGZyb20gd2lkZSBzdHJp
bmcpIiBpcwogICAvLyByZXR1cm5lZC4KLSAgc3RhdGljIFN0cmluZyBTaG93V2lkZUNTdHJpbmco
Y29uc3Qgd2NoYXJfdCogd2lkZV9jX3N0cik7Ci0KLSAgLy8gU2ltaWxhciB0byBTaG93V2lkZUNT
dHJpbmcoKSwgZXhjZXB0IHRoYXQgdGhpcyBmdW5jdGlvbiBlbmNsb3NlcwotICAvLyB0aGUgY29u
dmVydGVkIHN0cmluZyBpbiBkb3VibGUgcXVvdGVzLgotICBzdGF0aWMgU3RyaW5nIFNob3dXaWRl
Q1N0cmluZ1F1b3RlZChjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKTsKKyAgc3RhdGljIHN0ZDo6
c3RyaW5nIFNob3dXaWRlQ1N0cmluZyhjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKTsKIAogICAv
LyBDb21wYXJlcyB0d28gd2lkZSBDIHN0cmluZ3MuICBSZXR1cm5zIHRydWUgaWZmIHRoZXkgaGF2
ZSB0aGUgc2FtZQogICAvLyBjb250ZW50LgpAQCAtMTc1LDE3NCArMTM5LDI3IEBAIGNsYXNzIEdU
RVNUX0FQSV8gU3RyaW5nIHsKICAgc3RhdGljIGJvb2wgQ2FzZUluc2Vuc2l0aXZlV2lkZUNTdHJp
bmdFcXVhbHMoY29uc3Qgd2NoYXJfdCogbGhzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiByaHMpOwogCi0gIC8vIEZvcm1hdHMg
YSBsaXN0IG9mIGFyZ3VtZW50cyB0byBhIFN0cmluZywgdXNpbmcgdGhlIHNhbWUgZm9ybWF0Ci0g
IC8vIHNwZWMgc3RyaW5nIGFzIGZvciBwcmludGYuCi0gIC8vCi0gIC8vIFdlIGRvIG5vdCB1c2Ug
dGhlIFN0cmluZ1ByaW50ZiBjbGFzcyBhcyBpdCBpcyBub3QgdW5pdmVyc2FsbHkKLSAgLy8gYXZh
aWxhYmxlLgotICAvLwotICAvLyBUaGUgcmVzdWx0IGlzIGxpbWl0ZWQgdG8gNDA5NiBjaGFyYWN0
ZXJzIChpbmNsdWRpbmcgdGhlIHRhaWxpbmcKLSAgLy8gMCkuICBJZiA0MDk2IGNoYXJhY3RlcnMg
YXJlIG5vdCBlbm91Z2ggdG8gZm9ybWF0IHRoZSBpbnB1dCwKLSAgLy8gIjxidWZmZXIgZXhjZWVk
ZWQ+IiBpcyByZXR1cm5lZC4KLSAgc3RhdGljIFN0cmluZyBGb3JtYXQoY29uc3QgY2hhciogZm9y
bWF0LCAuLi4pOwotCi0gIC8vIEMndG9ycwotCi0gIC8vIFRoZSBkZWZhdWx0IGMndG9yIGNvbnN0
cnVjdHMgYSBOVUxMIHN0cmluZy4KLSAgU3RyaW5nKCkgOiBjX3N0cl8oTlVMTCksIGxlbmd0aF8o
MCkge30KLQotICAvLyBDb25zdHJ1Y3RzIGEgU3RyaW5nIGJ5IGNsb25pbmcgYSAwLXRlcm1pbmF0
ZWQgQyBzdHJpbmcuCi0gIFN0cmluZyhjb25zdCBjaGFyKiBhX2Nfc3RyKSB7ICAvLyBOT0xJTlQK
LSAgICBpZiAoYV9jX3N0ciA9PSBOVUxMKSB7Ci0gICAgICBjX3N0cl8gPSBOVUxMOwotICAgICAg
bGVuZ3RoXyA9IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgIENvbnN0cnVjdE5vbk51bGwoYV9jX3N0
ciwgc3RybGVuKGFfY19zdHIpKTsKLSAgICB9Ci0gIH0KLQotICAvLyBDb25zdHJ1Y3RzIGEgU3Ry
aW5nIGJ5IGNvcHlpbmcgYSBnaXZlbiBudW1iZXIgb2YgY2hhcnMgZnJvbSBhCi0gIC8vIGJ1ZmZl
ci4gIEUuZy4gU3RyaW5nKCJoZWxsbyIsIDMpIGNyZWF0ZXMgdGhlIHN0cmluZyAiaGVsIiwKLSAg
Ly8gU3RyaW5nKCJhXDBiY2QiLCA0KSBjcmVhdGVzICJhXDBiYyIsIFN0cmluZyhOVUxMLCAwKSBj
cmVhdGVzICIiLAotICAvLyBhbmQgU3RyaW5nKE5VTEwsIDEpIHJlc3VsdHMgaW4gYWNjZXNzIHZp
b2xhdGlvbi4KLSAgU3RyaW5nKGNvbnN0IGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGFfbGVuZ3RoKSB7
Ci0gICAgQ29uc3RydWN0Tm9uTnVsbChidWZmZXIsIGFfbGVuZ3RoKTsKLSAgfQorICAvLyBSZXR1
cm5zIHRydWUgaWZmIHRoZSBnaXZlbiBzdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXgs
IGlnbm9yaW5nCisgIC8vIGNhc2UuIEFueSBzdHJpbmcgaXMgY29uc2lkZXJlZCB0byBlbmQgd2l0
aCBhbiBlbXB0eSBzdWZmaXguCisgIHN0YXRpYyBib29sIEVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZl
KAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0ciwgY29uc3Qgc3RkOjpzdHJpbmcmIHN1ZmZp
eCk7CiAKLSAgLy8gVGhlIGNvcHkgYyd0b3IgY3JlYXRlcyBhIG5ldyBjb3B5IG9mIHRoZSBzdHJp
bmcuICBUaGUgdHdvCi0gIC8vIFN0cmluZyBvYmplY3RzIGRvIG5vdCBzaGFyZSBjb250ZW50Lgot
ICBTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHIpIDogY19zdHJfKE5VTEwpLCBsZW5ndGhfKDApIHsg
KnRoaXMgPSBzdHI7IH0KKyAgLy8gRm9ybWF0cyBhbiBpbnQgdmFsdWUgYXMgIiUwMmQiLgorICBz
dGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0SW50V2lkdGgyKGludCB2YWx1ZSk7ICAvLyAiJTAyZCIg
Zm9yIHdpZHRoID09IDIKIAotICAvLyBEJ3Rvci4gIFN0cmluZyBpcyBpbnRlbmRlZCB0byBiZSBh
IGZpbmFsIGNsYXNzLCBzbyB0aGUgZCd0b3IKLSAgLy8gZG9lc24ndCBuZWVkIHRvIGJlIHZpcnR1
YWwuCi0gIH5TdHJpbmcoKSB7IGRlbGV0ZVtdIGNfc3RyXzsgfQorICAvLyBGb3JtYXRzIGFuIGlu
dCB2YWx1ZSBhcyAiJVgiLgorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0SGV4SW50KGludCB2
YWx1ZSk7CiAKLSAgLy8gQWxsb3dzIGEgU3RyaW5nIHRvIGJlIGltcGxpY2l0bHkgY29udmVydGVk
IHRvIGFuIDo6c3RkOjpzdHJpbmcgb3IKLSAgLy8gOjpzdHJpbmcsIGFuZCB2aWNlIHZlcnNhLiAg
Q29udmVydGluZyBhIFN0cmluZyBjb250YWluaW5nIGEgTlVMTAotICAvLyBwb2ludGVyIHRvIDo6
c3RkOjpzdHJpbmcgb3IgOjpzdHJpbmcgaXMgdW5kZWZpbmVkIGJlaGF2aW9yLgotICAvLyBDb252
ZXJ0aW5nIGEgOjpzdGQ6OnN0cmluZyBvciA6OnN0cmluZyBjb250YWluaW5nIGFuIGVtYmVkZGVk
IE5VTAotICAvLyBjaGFyYWN0ZXIgdG8gYSBTdHJpbmcgd2lsbCByZXN1bHQgaW4gdGhlIHByZWZp
eCB1cCB0byB0aGUgZmlyc3QKLSAgLy8gTlVMIGNoYXJhY3Rlci4KLSAgU3RyaW5nKGNvbnN0IDo6
c3RkOjpzdHJpbmcmIHN0cikgewotICAgIENvbnN0cnVjdE5vbk51bGwoc3RyLmNfc3RyKCksIHN0
ci5sZW5ndGgoKSk7Ci0gIH0KLQotICBvcGVyYXRvciA6OnN0ZDo6c3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gOjpzdGQ6OnN0cmluZyhjX3N0cigpLCBsZW5ndGgoKSk7IH0KLQotI2lmIEdURVNUX0hB
U19HTE9CQUxfU1RSSU5HCi0gIFN0cmluZyhjb25zdCA6OnN0cmluZyYgc3RyKSB7Ci0gICAgQ29u
c3RydWN0Tm9uTnVsbChzdHIuY19zdHIoKSwgc3RyLmxlbmd0aCgpKTsKLSAgfQotCi0gIG9wZXJh
dG9yIDo6c3RyaW5nKCkgY29uc3QgeyByZXR1cm4gOjpzdHJpbmcoY19zdHIoKSwgbGVuZ3RoKCkp
OyB9Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0KLSAgLy8gUmV0dXJucyB0
cnVlIGlmZiB0aGlzIGlzIGFuIGVtcHR5IHN0cmluZyAoaS5lLiAiIikuCi0gIGJvb2wgZW1wdHko
KSBjb25zdCB7IHJldHVybiAoY19zdHIoKSAhPSBOVUxMKSAmJiAobGVuZ3RoKCkgPT0gMCk7IH0K
LQotICAvLyBDb21wYXJlcyB0aGlzIHdpdGggYW5vdGhlciBTdHJpbmcuCi0gIC8vIFJldHVybnMg
PCAwIGlmIHRoaXMgaXMgbGVzcyB0aGFuIHJocywgMCBpZiB0aGlzIGlzIGVxdWFsIHRvIHJocywg
b3IgPiAwCi0gIC8vIGlmIHRoaXMgaXMgZ3JlYXRlciB0aGFuIHJocy4KLSAgaW50IENvbXBhcmUo
Y29uc3QgU3RyaW5nJiByaHMpIGNvbnN0OwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBT
dHJpbmcgZXF1YWxzIHRoZSBnaXZlbiBDIHN0cmluZy4gIEEgTlVMTAotICAvLyBzdHJpbmcgYW5k
IGEgbm9uLU5VTEwgc3RyaW5nIGFyZSBjb25zaWRlcmVkIG5vdCBlcXVhbC4KLSAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IGNoYXIqIGFfY19zdHIpIGNvbnN0IHsgcmV0dXJuIENvbXBhcmUoYV9jX3N0
cikgPT0gMDsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBTdHJpbmcgaXMgbGVzcyB0
aGFuIHRoZSBnaXZlbiBTdHJpbmcuICBBCi0gIC8vIE5VTEwgc3RyaW5nIGlzIGNvbnNpZGVyZWQg
bGVzcyB0aGFuICIiLgotICBib29sIG9wZXJhdG9yPChjb25zdCBTdHJpbmcmIHJocykgY29uc3Qg
eyByZXR1cm4gQ29tcGFyZShyaHMpIDwgMDsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhp
cyBTdHJpbmcgZG9lc24ndCBlcXVhbCB0aGUgZ2l2ZW4gQyBzdHJpbmcuICBBIE5VTEwKLSAgLy8g
c3RyaW5nIGFuZCBhIG5vbi1OVUxMIHN0cmluZyBhcmUgY29uc2lkZXJlZCBub3QgZXF1YWwuCi0g
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBjaGFyKiBhX2Nfc3RyKSBjb25zdCB7IHJldHVybiAhKCp0
aGlzID09IGFfY19zdHIpOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIFN0cmluZyBl
bmRzIHdpdGggdGhlIGdpdmVuIHN1ZmZpeC4gICpBbnkqCi0gIC8vIFN0cmluZyBpcyBjb25zaWRl
cmVkIHRvIGVuZCB3aXRoIGEgTlVMTCBvciBlbXB0eSBzdWZmaXguCi0gIGJvb2wgRW5kc1dpdGgo
Y29uc3QgY2hhciogc3VmZml4KSBjb25zdDsKLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMg
U3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LCBub3QgY29uc2lkZXJpbmcKLSAgLy8g
Y2FzZS4gQW55IFN0cmluZyBpcyBjb25zaWRlcmVkIHRvIGVuZCB3aXRoIGEgTlVMTCBvciBlbXB0
eSBzdWZmaXguCi0gIGJvb2wgRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoY29uc3QgY2hhciogc3Vm
Zml4KSBjb25zdDsKLQotICAvLyBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIGVuY2Fwc3VsYXRl
ZCBzdHJpbmcsIG9yIDAgaWYgdGhlCi0gIC8vIHN0cmluZyBpcyBOVUxMLgotICBzaXplX3QgbGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbGVuZ3RoXzsgfQotCi0gIC8vIEdldHMgdGhlIDAtdGVybWlu
YXRlZCBDIHN0cmluZyB0aGlzIFN0cmluZyBvYmplY3QgcmVwcmVzZW50cy4KLSAgLy8gVGhlIFN0
cmluZyBvYmplY3Qgc3RpbGwgb3ducyB0aGUgc3RyaW5nLiAgVGhlcmVmb3JlIHRoZSBjYWxsZXIK
LSAgLy8gc2hvdWxkIE5PVCBkZWxldGUgdGhlIHJldHVybiB2YWx1ZS4KLSAgY29uc3QgY2hhciog
Y19zdHIoKSBjb25zdCB7IHJldHVybiBjX3N0cl87IH0KLQotICAvLyBBc3NpZ25zIGEgQyBzdHJp
bmcgdG8gdGhpcyBvYmplY3QuICBTZWxmLWFzc2lnbm1lbnQgd29ya3MuCi0gIGNvbnN0IFN0cmlu
ZyYgb3BlcmF0b3I9KGNvbnN0IGNoYXIqIGFfY19zdHIpIHsKLSAgICByZXR1cm4gKnRoaXMgPSBT
dHJpbmcoYV9jX3N0cik7Ci0gIH0KLQotICAvLyBBc3NpZ25zIGEgU3RyaW5nIG9iamVjdCB0byB0
aGlzIG9iamVjdC4gIFNlbGYtYXNzaWdubWVudCB3b3Jrcy4KLSAgY29uc3QgU3RyaW5nJiBvcGVy
YXRvcj0oY29uc3QgU3RyaW5nJiByaHMpIHsKLSAgICBpZiAodGhpcyAhPSAmcmhzKSB7Ci0gICAg
ICBkZWxldGVbXSBjX3N0cl87Ci0gICAgICBpZiAocmhzLmNfc3RyKCkgPT0gTlVMTCkgewotICAg
ICAgICBjX3N0cl8gPSBOVUxMOwotICAgICAgICBsZW5ndGhfID0gMDsKLSAgICAgIH0gZWxzZSB7
Ci0gICAgICAgIENvbnN0cnVjdE5vbk51bGwocmhzLmNfc3RyKCksIHJocy5sZW5ndGgoKSk7Ci0g
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuICp0aGlzOwotICB9CisgIC8vIEZvcm1hdHMgYSBi
eXRlIGFzICIlMDJYIi4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdEJ5dGUodW5zaWduZWQg
Y2hhciB2YWx1ZSk7CiAKICBwcml2YXRlOgotICAvLyBDb25zdHJ1Y3RzIGEgbm9uLU5VTEwgU3Ry
aW5nIGZyb20gdGhlIGdpdmVuIGNvbnRlbnQuICBUaGlzCi0gIC8vIGZ1bmN0aW9uIGNhbiBvbmx5
IGJlIGNhbGxlZCB3aGVuIGRhdGFfIGhhcyBub3QgYmVlbiBhbGxvY2F0ZWQuCi0gIC8vIENvbnN0
cnVjdE5vbk51bGwoTlVMTCwgMCkgcmVzdWx0cyBpbiBhbiBlbXB0eSBzdHJpbmcgKCIiKS4KLSAg
Ly8gQ29uc3RydWN0Tm9uTnVsbChOVUxMLCBub25femVybykgaXMgdW5kZWZpbmVkIGJlaGF2aW9y
LgotICB2b2lkIENvbnN0cnVjdE5vbk51bGwoY29uc3QgY2hhciogYnVmZmVyLCBzaXplX3QgYV9s
ZW5ndGgpIHsKLSAgICBjaGFyKiBjb25zdCBzdHIgPSBuZXcgY2hhclthX2xlbmd0aCArIDFdOwot
ICAgIG1lbWNweShzdHIsIGJ1ZmZlciwgYV9sZW5ndGgpOwotICAgIHN0clthX2xlbmd0aF0gPSAn
XDAnOwotICAgIGNfc3RyXyA9IHN0cjsKLSAgICBsZW5ndGhfID0gYV9sZW5ndGg7Ci0gIH0KLQot
ICBjb25zdCBjaGFyKiBjX3N0cl87Ci0gIHNpemVfdCBsZW5ndGhfOworICBTdHJpbmcoKTsgIC8v
IE5vdCBtZWFudCB0byBiZSBpbnN0YW50aWF0ZWQuCiB9OyAgLy8gY2xhc3MgU3RyaW5nCiAKLS8v
IFN0cmVhbXMgYSBTdHJpbmcgdG8gYW4gb3N0cmVhbS4gIEVhY2ggJ1wwJyBjaGFyYWN0ZXIgaW4g
dGhlIFN0cmluZwotLy8gaXMgcmVwbGFjZWQgd2l0aCAiXFwwIi4KLWlubGluZSA6OnN0ZDo6b3N0
cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFN0cmluZyYgc3RyKSB7
Ci0gIGlmIChzdHIuY19zdHIoKSA9PSBOVUxMKSB7Ci0gICAgb3MgPDwgIihudWxsKSI7Ci0gIH0g
ZWxzZSB7Ci0gICAgY29uc3QgY2hhciogY29uc3QgY19zdHIgPSBzdHIuY19zdHIoKTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSAhPSBzdHIubGVuZ3RoKCk7IGkrKykgewotICAgICAgaWYgKGNf
c3RyW2ldID09ICdcMCcpIHsKLSAgICAgICAgb3MgPDwgIlxcMCI7Ci0gICAgICB9IGVsc2Ugewot
ICAgICAgICBvcyA8PCBjX3N0cltpXTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgcmV0dXJuIG9z
OwotfQotCi0vLyBHZXRzIHRoZSBjb250ZW50IG9mIHRoZSBTdHJTdHJlYW0ncyBidWZmZXIgYXMg
YSBTdHJpbmcuICBFYWNoICdcMCcKKy8vIEdldHMgdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZ3N0
cmVhbSdzIGJ1ZmZlciBhcyBhbiBzdGQ6OnN0cmluZy4gIEVhY2ggJ1wwJwogLy8gY2hhcmFjdGVy
IGluIHRoZSBidWZmZXIgaXMgcmVwbGFjZWQgd2l0aCAiXFwwIi4KLUdURVNUX0FQSV8gU3RyaW5n
IFN0clN0cmVhbVRvU3RyaW5nKFN0clN0cmVhbSogc3RyZWFtKTsKLQotLy8gQ29udmVydHMgYSBz
dHJlYW1hYmxlIHZhbHVlIHRvIGEgU3RyaW5nLiAgQSBOVUxMIHBvaW50ZXIgaXMKLS8vIGNvbnZl
cnRlZCB0byAiKG51bGwpIi4gIFdoZW4gdGhlIGlucHV0IHZhbHVlIGlzIGEgOjpzdHJpbmcsCi0v
LyA6OnN0ZDo6c3RyaW5nLCA6OndzdHJpbmcsIG9yIDo6c3RkOjp3c3RyaW5nIG9iamVjdCwgZWFj
aCBOVUwKLS8vIGNoYXJhY3RlciBpbiBpdCBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgotCi0vLyBE
ZWNsYXJlZCBoZXJlIGJ1dCBkZWZpbmVkIGluIGd0ZXN0LmgsIHNvIHRoYXQgaXQgaGFzIGFjY2Vz
cwotLy8gdG8gdGhlIGRlZmluaXRpb24gb2YgdGhlIE1lc3NhZ2UgY2xhc3MsIHJlcXVpcmVkIGJ5
IHRoZSBBUk0KLS8vIGNvbXBpbGVyLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1TdHJpbmcgU3Ry
ZWFtYWJsZVRvU3RyaW5nKGNvbnN0IFQmIHN0cmVhbWFibGUpOworR1RFU1RfQVBJXyBzdGQ6OnN0
cmluZyBTdHJpbmdTdHJlYW1Ub1N0cmluZyg6OnN0ZDo6c3RyaW5nc3RyZWFtKiBzdHJlYW0pOwog
CiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXR1cGxlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVy
bmFsL2d0ZXN0LXR1cGxlLmgKaW5kZXggMTYxNzhmYzA3YWYxMjlhZjE1NDg3MWNjMmQ5YjNhOThk
MWQ5NGFiNC4uZTliNDA1MzQwYTg1NWY2MDI1OGIxMzQwMjZiZTdiMTM2MTJlYmUxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC10dXBsZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtdHVwbGUuaApAQCAtMSw0ICsxLDYgQEAKLS8vIFRoaXMgZmlsZSB3YXMgR0VO
RVJBVEVEIGJ5IGEgc2NyaXB0LiAgRE8gTk9UIEVESVQgQlkgSEFORCEhIQorLy8gVGhpcyBmaWxl
IHdhcyBHRU5FUkFURUQgYnkgY29tbWFuZDoKKy8vICAgICBwdW1wLnB5IGd0ZXN0LXR1cGxlLmgu
cHVtcAorLy8gRE8gTk9UIEVESVQgQlkgSEFORCEhIQogCiAvLyBDb3B5cmlnaHQgMjAwOSBHb29n
bGUgSW5jLgogLy8gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KQEAgLTQ0LDEzICs0NiwyMSBAQAogLy8g
cHJpdmF0ZSBhcyBwdWJsaWMuCiAvLyBTdW4gU3R1ZGlvIHZlcnNpb25zIDwgMTIgYWxzbyBoYXZl
IHRoZSBhYm92ZSBidWcuCiAjaWYgZGVmaW5lZChfX1NZTUJJQU4zMl9fKSB8fCAoZGVmaW5lZChf
X1NVTlBST19DQykgJiYgX19TVU5QUk9fQ0MgPCAweDU5MCkKLSNkZWZpbmUgR1RFU1RfREVDTEFS
RV9UVVBMRV9BU19GUklFTkRfIHB1YmxpYzoKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVf
QVNfRlJJRU5EXyBwdWJsaWM6CiAjZWxzZQotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FT
X0ZSSUVORF8gXAorIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIFwKICAg
ICB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhVKT4gZnJpZW5kIGNsYXNzIHR1cGxlOyBc
CiAgICBwcml2YXRlOgogI2VuZGlmCiAKKy8vIFZpc3VhbCBTdHVkaW8gMjAxMCwgMjAxMiwgYW5k
IDIwMTMgZGVmaW5lIHN5bWJvbHMgaW4gc3RkOjp0cjEgdGhhdCBjb25mbGljdAorLy8gd2l0aCBv
dXIgb3duIGRlZmluaXRpb25zLiBUaGVyZWZvcmUgdXNpbmcgb3VyIG93biB0dXBsZSBkb2VzIG5v
dCB3b3JrIG9uCisvLyB0aG9zZSBjb21waWxlcnMuCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYg
X01TQ19WRVIgPj0gMTYwMCAgLyogMTYwMCBpcyBWaXN1YWwgU3R1ZGlvIDIwMTAgKi8KKyMgZXJy
b3IgImd0ZXN0J3MgdHVwbGUgZG9lc24ndCBjb21waWxlIG9uIFZpc3VhbCBTdHVkaW8gMjAxMCBv
ciBsYXRlci4gXAorR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgbXVzdCBiZSBzZXQgdG8gMCBvbiB0
aG9zZSBjb21waWxlcnMuIgorI2VuZGlmCisKIC8vIEdURVNUX25fVFVQTEVfKFQpIGlzIHRoZSB0
eXBlIG9mIGFuIG4tdHVwbGUuCiAjZGVmaW5lIEdURVNUXzBfVFVQTEVfKFQpIHR1cGxlPD4KICNk
ZWZpbmUgR1RFU1RfMV9UVVBMRV8oVCkgdHVwbGU8VCMjMCwgdm9pZCwgdm9pZCwgdm9pZCwgdm9p
ZCwgdm9pZCwgdm9pZCwgXApAQCAtMTQwLDM0ICsxNTAsNTQgQEAgdGVtcGxhdGUgPGJvb2wga0lu
ZGV4VmFsaWQsIGludCBrSW5kZXgsIGNsYXNzIFR1cGxlPgogc3RydWN0IFR1cGxlRWxlbWVudDsK
IAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50
PHRydWUsIDAsIEdURVNUXzEwX1RVUExFXyhUKT4geyB0eXBlZGVmIFQwIHR5cGU7IH07CitzdHJ1
Y3QgVHVwbGVFbGVtZW50PHRydWUsIDAsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRl
ZiBUMCB0eXBlOworfTsKIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1
Y3QgVHVwbGVFbGVtZW50PHRydWUsIDEsIEdURVNUXzEwX1RVUExFXyhUKT4geyB0eXBlZGVmIFQx
IHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDEsIEdURVNUXzEwX1RVUExFXyhU
KSA+IHsKKyAgdHlwZWRlZiBUMSB0eXBlOworfTsKIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVO
QU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDIsIEdURVNUXzEwX1RVUExFXyhU
KT4geyB0eXBlZGVmIFQyIHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDIsIEdU
RVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUMiB0eXBlOworfTsKIAogdGVtcGxhdGUg
PEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDMsIEdU
RVNUXzEwX1RVUExFXyhUKT4geyB0eXBlZGVmIFQzIHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVFbGVt
ZW50PHRydWUsIDMsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUMyB0eXBlOwor
fTsKIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVt
ZW50PHRydWUsIDQsIEdURVNUXzEwX1RVUExFXyhUKT4geyB0eXBlZGVmIFQ0IHR5cGU7IH07Citz
dHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDQsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlw
ZWRlZiBUNCB0eXBlOworfTsKIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1z
dHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDUsIEdURVNUXzEwX1RVUExFXyhUKT4geyB0eXBlZGVm
IFQ1IHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDUsIEdURVNUXzEwX1RVUExF
XyhUKSA+IHsKKyAgdHlwZWRlZiBUNSB0eXBlOworfTsKIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZ
UEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDYsIEdURVNUXzEwX1RVUExF
XyhUKT4geyB0eXBlZGVmIFQ2IHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDYs
IEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUNiB0eXBlOworfTsKIAogdGVtcGxh
dGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDcs
IEdURVNUXzEwX1RVUExFXyhUKT4geyB0eXBlZGVmIFQ3IHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVF
bGVtZW50PHRydWUsIDcsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUNyB0eXBl
OworfTsKIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVF
bGVtZW50PHRydWUsIDgsIEdURVNUXzEwX1RVUExFXyhUKT4geyB0eXBlZGVmIFQ4IHR5cGU7IH07
CitzdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDgsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAg
dHlwZWRlZiBUOCB0eXBlOworfTsKIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+
Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDksIEdURVNUXzEwX1RVUExFXyhUKT4geyB0eXBl
ZGVmIFQ5IHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDksIEdURVNUXzEwX1RV
UExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUOSB0eXBlOworfTsKIAogfSAgLy8gbmFtZXNwYWNlIGd0
ZXN0X2ludGVybmFsCiAKQEAgLTcwOCwzNyArNzM4LDU5IEBAIGlubGluZSBHVEVTVF8xMF9UVVBM
RV8oVCkgbWFrZV90dXBsZShjb25zdCBUMCYgZjAsIGNvbnN0IFQxJiBmMSwgY29uc3QgVDImIGYy
LAogdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPiBzdHJ1Y3QgdHVwbGVfc2l6ZTsKIAogdGVtcGxh
dGUgPEdURVNUXzBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzBfVFVQ
TEVfKFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAwOyB9Oworc3RydWN0IHR1cGxlX3Np
emU8R1RFU1RfMF9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAwOwor
fTsKIAogdGVtcGxhdGUgPEdURVNUXzFfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXpl
PEdURVNUXzFfVFVQTEVfKFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAxOyB9Oworc3Ry
dWN0IHR1cGxlX3NpemU8R1RFU1RfMV9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQg
dmFsdWUgPSAxOworfTsKIAogdGVtcGxhdGUgPEdURVNUXzJfVFlQRU5BTUVTXyhUKT4KLXN0cnVj
dCB0dXBsZV9zaXplPEdURVNUXzJfVFVQTEVfKFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUg
PSAyOyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfMl9UVVBMRV8oVCkgPiB7CisgIHN0YXRp
YyBjb25zdCBpbnQgdmFsdWUgPSAyOworfTsKIAogdGVtcGxhdGUgPEdURVNUXzNfVFlQRU5BTUVT
XyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzNfVFVQTEVfKFQpPiB7IHN0YXRpYyBjb25z
dCBpbnQgdmFsdWUgPSAzOyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfM19UVVBMRV8oVCkg
PiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAzOworfTsKIAogdGVtcGxhdGUgPEdURVNU
XzRfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzRfVFVQTEVfKFQpPiB7
IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA0OyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1Rf
NF9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA0OworfTsKIAogdGVt
cGxhdGUgPEdURVNUXzVfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzVf
VFVQTEVfKFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA1OyB9Oworc3RydWN0IHR1cGxl
X3NpemU8R1RFU1RfNV9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA1
OworfTsKIAogdGVtcGxhdGUgPEdURVNUXzZfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9z
aXplPEdURVNUXzZfVFVQTEVfKFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA2OyB9Owor
c3RydWN0IHR1cGxlX3NpemU8R1RFU1RfNl9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBp
bnQgdmFsdWUgPSA2OworfTsKIAogdGVtcGxhdGUgPEdURVNUXzdfVFlQRU5BTUVTXyhUKT4KLXN0
cnVjdCB0dXBsZV9zaXplPEdURVNUXzdfVFVQTEVfKFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFs
dWUgPSA3OyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfN19UVVBMRV8oVCkgPiB7CisgIHN0
YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA3OworfTsKIAogdGVtcGxhdGUgPEdURVNUXzhfVFlQRU5B
TUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzhfVFVQTEVfKFQpPiB7IHN0YXRpYyBj
b25zdCBpbnQgdmFsdWUgPSA4OyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfOF9UVVBMRV8o
VCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA4OworfTsKIAogdGVtcGxhdGUgPEdU
RVNUXzlfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzlfVFVQTEVfKFQp
PiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA5OyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RF
U1RfOV9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA5OworfTsKIAog
dGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVT
VF8xMF9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDEwOyB9Oworc3RydWN0
IHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZh
bHVlID0gMTA7Cit9OwogCiB0ZW1wbGF0ZSA8aW50IGssIGNsYXNzIFR1cGxlPgogc3RydWN0IHR1
cGxlX2VsZW1lbnQgewpAQCAtOTIyLDggKzk3NCw4IEBAIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBF
TkFNRVNfKFQpLCBHVEVTVF8xMF9UWVBFTkFNRVNfKFUpPgogaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBHVEVTVF8xMF9UVVBMRV8oVCkmIHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdURVNUXzEwX1RVUExFXyhVKSYgdSkgewogICByZXR1cm4gZ3Rlc3RfaW50ZXJuYWw6OlNh
bWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9yPAotICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8xMF9U
VVBMRV8oVCk+Ojp2YWx1ZSwKLSAgICAgIHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFUpPjo6
dmFsdWU+OjpFcSh0LCB1KTsKKyAgICAgIHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFQpID46
OnZhbHVlLAorICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8xMF9UVVBMRV8oVSkgPjo6dmFsdWU+OjpF
cSh0LCB1KTsKIH0KIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCksIEdURVNUXzEw
X1RZUEVOQU1FU18oVSk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1wCmluZGV4IDg1
ZWJjODA2MmVlMTA0NDczN2IzNmU4YTQwODVkMjY3ZjE4ZGMyMDUuLjQyOWRkZmVlY2FhNzRlNzFh
OWQ4OWVjNTY4ZTk4NTgxYjc2NjJiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1wCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5w
dW1wCkBAIC00NSwxMyArNDUsMjEgQEAgJCQgVGhpcyBtZXRhIGNvbW1lbnQgZml4ZXMgYXV0by1p
bmRlbnRhdGlvbiBpbiBFbWFjcy4gfX0KIC8vIHByaXZhdGUgYXMgcHVibGljLgogLy8gU3VuIFN0
dWRpbyB2ZXJzaW9ucyA8IDEyIGFsc28gaGF2ZSB0aGUgYWJvdmUgYnVnLgogI2lmIGRlZmluZWQo
X19TWU1CSUFOMzJfXykgfHwgKGRlZmluZWQoX19TVU5QUk9fQ0MpICYmIF9fU1VOUFJPX0NDIDwg
MHg1OTApCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBwdWJsaWM6Cisj
IGRlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8gcHVibGljOgogI2Vsc2UKLSNk
ZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIFwKKyMgZGVmaW5lIEdURVNUX0RF
Q0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBcCiAgICAgdGVtcGxhdGUgPEdURVNUXyQobilfVFlQRU5B
TUVTXyhVKT4gZnJpZW5kIGNsYXNzIHR1cGxlOyBcCiAgICBwcml2YXRlOgogI2VuZGlmCiAKKy8v
IFZpc3VhbCBTdHVkaW8gMjAxMCwgMjAxMiwgYW5kIDIwMTMgZGVmaW5lIHN5bWJvbHMgaW4gc3Rk
Ojp0cjEgdGhhdCBjb25mbGljdAorLy8gd2l0aCBvdXIgb3duIGRlZmluaXRpb25zLiBUaGVyZWZv
cmUgdXNpbmcgb3VyIG93biB0dXBsZSBkb2VzIG5vdCB3b3JrIG9uCisvLyB0aG9zZSBjb21waWxl
cnMuCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTYwMCAgLyogMTYwMCBp
cyBWaXN1YWwgU3R1ZGlvIDIwMTAgKi8KKyMgZXJyb3IgImd0ZXN0J3MgdHVwbGUgZG9lc24ndCBj
b21waWxlIG9uIFZpc3VhbCBTdHVkaW8gMjAxMCBvciBsYXRlci4gXAorR1RFU1RfVVNFX09XTl9U
UjFfVFVQTEUgbXVzdCBiZSBzZXQgdG8gMCBvbiB0aG9zZSBjb21waWxlcnMuIgorI2VuZGlmCisK
IAogJHJhbmdlIGkgMC4ubi0xCiAkcmFuZ2UgaiAwLi5uCkBAIC0xMTgsOCArMTI2LDkgQEAgc3Ry
dWN0IFR1cGxlRWxlbWVudDsKIAogJGZvciBpIFtbCiB0ZW1wbGF0ZSA8R1RFU1RfJChuKV9UWVBF
TkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAkaSwgR1RFU1RfJChuKV9UVVBM
RV8oVCk+IFtbXV0KLXsgdHlwZWRlZiBUJGkgdHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8
dHJ1ZSwgJGksIEdURVNUXyQobilfVFVQTEVfKFQpID4geworICB0eXBlZGVmIFQkaSB0eXBlOwor
fTsKIAogCiBdXQpAQCAtMjIwLDcgKzIyOSw5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4g
c3RydWN0IHR1cGxlX3NpemU7CiAKICRmb3IgaiBbWwogdGVtcGxhdGUgPEdURVNUXyQoailfVFlQ
RU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXyQoailfVFVQTEVfKFQpPiB7IHN0
YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAkajsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXyQo
ailfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gJGo7Cit9OwogCiAK
IF1dCkBAIC0zMDIsOCArMzEzLDggQEAgdGVtcGxhdGUgPEdURVNUXyQobilfVFlQRU5BTUVTXyhU
KSwgR1RFU1RfJChuKV9UWVBFTkFNRVNfKFUpPgogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBHVEVTVF8kKG4pX1RVUExFXyhUKSYgdCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R1RFU1RfJChuKV9UVVBMRV8oVSkmIHUpIHsKICAgcmV0dXJuIGd0ZXN0X2ludGVybmFsOjpTYW1l
U2l6ZVR1cGxlUHJlZml4Q29tcGFyYXRvcjwKLSAgICAgIHR1cGxlX3NpemU8R1RFU1RfJChuKV9U
VVBMRV8oVCk+Ojp2YWx1ZSwKLSAgICAgIHR1cGxlX3NpemU8R1RFU1RfJChuKV9UVVBMRV8oVSk+
Ojp2YWx1ZT46OkVxKHQsIHUpOworICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8kKG4pX1RVUExFXyhU
KSA+Ojp2YWx1ZSwKKyAgICAgIHR1cGxlX3NpemU8R1RFU1RfJChuKV9UVVBMRV8oVSkgPjo6dmFs
dWU+OjpFcSh0LCB1KTsKIH0KIAogdGVtcGxhdGUgPEdURVNUXyQobilfVFlQRU5BTUVTXyhUKSwg
R1RFU1RfJChuKV9UWVBFTkFNRVNfKFUpPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgK
aW5kZXggMDkzZWVlNmYwMTk2MzU1NjlmNDA0YWU2MzU3YjhkZTQ4YjcxOGU4MS4uZTQ2ZjdjZmNi
NDgzYTk1NTFjMjBhZGEyM2I3N2Y5ODgwNDA1ZjRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5
cGUtdXRpbC5oCkBAIC00NCw1NSArNDQsNjMgQEAKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVT
VF9JTlRFUk5BTF9HVEVTVF9UWVBFX1VUSUxfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVT
VF9JTlRFUk5BTF9HVEVTVF9UWVBFX1VUSUxfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFs
L2d0ZXN0LXBvcnQuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4K
LQotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AKKyNp
bmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKIC8vICNpZmRlZiBfX0dOVUNf
XyBpcyB0b28gZ2VuZXJhbCBoZXJlLiAgSXQgaXMgcG9zc2libGUgdG8gdXNlIGdjYyB3aXRob3V0
IHVzaW5nCiAvLyBsaWJzdGRjKysgKHdoaWNoIGlzIHdoZXJlIGN4eGFiaS5oIGNvbWVzIGZyb20p
LgotI2lmZGVmIF9fR0xJQkNYWF9fCi0jaW5jbHVkZSA8Y3h4YWJpLmg+Ci0jZW5kaWYgIC8vIF9f
R0xJQkNYWF9fCisjIGlmIEdURVNUX0hBU19DWFhBQklfSF8KKyMgIGluY2x1ZGUgPGN4eGFiaS5o
PgorIyBlbGlmIGRlZmluZWQoX19IUF9hQ0MpCisjICBpbmNsdWRlIDxhY3h4X2RlbWFuZ2xlLmg+
CisjIGVuZGlmICAvLyBHVEVTVF9IQVNIX0NYWEFCSV9IXwogCiBuYW1lc3BhY2UgdGVzdGluZyB7
CiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCi0vLyBBc3NlcnR5VHlwZUVxPFQxLCBUMj46OnR5cGUg
aXMgZGVmaW5lZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQotLy8gdHlwZS4gIFRoaXMgY2Fu
IGJlIHVzZWQgYXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0aGF0Ci0vLyB0
d28gdHlwZXMgYXJlIGVxdWFsLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
Pgotc3RydWN0IEFzc2VydFR5cGVFcTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qg
QXNzZXJ0VHlwZUVxPFQsIFQ+IHsKLSAgdHlwZWRlZiBib29sIHR5cGU7Ci19OwotCiAvLyBHZXRU
eXBlTmFtZTxUPigpIHJldHVybnMgYSBodW1hbi1yZWFkYWJsZSBuYW1lIG9mIHR5cGUgVC4KKy8v
IE5COiBUaGlzIGZ1bmN0aW9uIGlzIGFsc28gdXNlZCBpbiBHb29nbGUgTW9jaywgc28gZG9uJ3Qg
bW92ZSBpdCBpbnNpZGUgb2YKKy8vIHRoZSB0eXBlZC10ZXN0LW9ubHkgc2VjdGlvbiBiZWxvdy4K
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotU3RyaW5nIEdldFR5cGVOYW1lKCkgewotI2lmIEdURVNU
X0hBU19SVFRJCitzdGQ6OnN0cmluZyBHZXRUeXBlTmFtZSgpIHsKKyMgaWYgR1RFU1RfSEFTX1JU
VEkKIAogICBjb25zdCBjaGFyKiBjb25zdCBuYW1lID0gdHlwZWlkKFQpLm5hbWUoKTsKLSNpZmRl
ZiBfX0dMSUJDWFhfXworIyAgaWYgR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBkZWZpbmVkKF9fSFBf
YUNDKQogICBpbnQgc3RhdHVzID0gMDsKICAgLy8gZ2NjJ3MgaW1wbGVtZW50YXRpb24gb2YgdHlw
ZWlkKFQpLm5hbWUoKSBtYW5nbGVzIHRoZSB0eXBlIG5hbWUsCiAgIC8vIHNvIHdlIGhhdmUgdG8g
ZGVtYW5nbGUgaXQuCi0gIGNoYXIqIGNvbnN0IHJlYWRhYmxlX25hbWUgPSBhYmk6Ol9fY3hhX2Rl
bWFuZ2xlKG5hbWUsIDAsIDAsICZzdGF0dXMpOwotICBjb25zdCBTdHJpbmcgbmFtZV9zdHIoc3Rh
dHVzID09IDAgPyByZWFkYWJsZV9uYW1lIDogbmFtZSk7CisjICAgaWYgR1RFU1RfSEFTX0NYWEFC
SV9IXworICB1c2luZyBhYmk6Ol9fY3hhX2RlbWFuZ2xlOworIyAgIGVuZGlmICAvLyBHVEVTVF9I
QVNfQ1hYQUJJX0hfCisgIGNoYXIqIGNvbnN0IHJlYWRhYmxlX25hbWUgPSBfX2N4YV9kZW1hbmds
ZShuYW1lLCAwLCAwLCAmc3RhdHVzKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZV9zdHIoc3Rh
dHVzID09IDAgPyByZWFkYWJsZV9uYW1lIDogbmFtZSk7CiAgIGZyZWUocmVhZGFibGVfbmFtZSk7
CiAgIHJldHVybiBuYW1lX3N0cjsKLSNlbHNlCisjICBlbHNlCiAgIHJldHVybiBuYW1lOwotI2Vu
ZGlmICAvLyBfX0dMSUJDWFhfXworIyAgZW5kaWYgIC8vIEdURVNUX0hBU19DWFhBQklfSF8gfHwg
X19IUF9hQ0MKKworIyBlbHNlCiAKLSNlbHNlCiAgIHJldHVybiAiPHR5cGU+IjsKLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1JUVEkKKworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX1JUVEkKIH0KIAorI2lm
IEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AKKworLy8gQXNz
ZXJ0eVR5cGVFcTxUMSwgVDI+Ojp0eXBlIGlzIGRlZmluZWQgaWZmIFQxIGFuZCBUMiBhcmUgdGhl
IHNhbWUKKy8vIHR5cGUuICBUaGlzIGNhbiBiZSB1c2VkIGFzIGEgY29tcGlsZS10aW1lIGFzc2Vy
dGlvbiB0byBlbnN1cmUgdGhhdAorLy8gdHdvIHR5cGVzIGFyZSBlcXVhbC4KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3N0cnVjdCBBc3NlcnRUeXBlRXE7CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEFzc2VydFR5cGVFcTxULCBUPiB7CisgIHR5cGVkZWYg
Ym9vbCB0eXBlOworfTsKKwogLy8gQSB1bmlxdWUgdHlwZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHZh
bHVlIGZvciB0aGUgYXJndW1lbnRzIG9mIGNsYXNzCiAvLyB0ZW1wbGF0ZSBUeXBlcy4gIFRoaXMg
YWxsb3dzIHVzIHRvIHNpbXVsYXRlIHZhcmlhZGljIHRlbXBsYXRlcwogLy8gKGUuZy4gVHlwZXM8
aW50PiwgVHlwZTxpbnQsIGRvdWJsZT4sIGFuZCBldGMpLCB3aGljaCBDKysgZG9lc24ndApAQCAt
MTYxMSw3ICsxNjE5LDcgQEAgc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3
LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCiAKIG5hbWVzcGFjZSBpbnRl
cm5hbCB7CiAKLSNkZWZpbmUgR1RFU1RfVEVNUExBVEVfIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBj
bGFzcworIyBkZWZpbmUgR1RFU1RfVEVNUExBVEVfIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFz
cwogCiAvLyBUaGUgdGVtcGxhdGUgInNlbGVjdG9yIiBzdHJ1Y3QgVGVtcGxhdGVTZWw8VG1wbD4g
aXMgdXNlZCB0bwogLy8gcmVwcmVzZW50IFRtcGwsIHdoaWNoIG11c3QgYmUgYSBjbGFzcyB0ZW1w
bGF0ZSB3aXRoIG9uZSB0eXBlCkBAIC0xNjI5LDcgKzE2MzcsNyBAQCBzdHJ1Y3QgVGVtcGxhdGVT
ZWwgewogICB9OwogfTsKIAotI2RlZmluZSBHVEVTVF9CSU5EXyhUbXBsU2VsLCBUKSBcCisjIGRl
ZmluZSBHVEVTVF9CSU5EXyhUbXBsU2VsLCBUKSBcCiAgIFRtcGxTZWw6OnRlbXBsYXRlIEJpbmQ8
VD46OnR5cGUKIAogLy8gQSB1bmlxdWUgc3RydWN0IHRlbXBsYXRlIHVzZWQgYXMgdGhlIGRlZmF1
bHQgdmFsdWUgZm9yIHRoZQpAQCAtMzI5MSw3ICszMjk5LDkgQEAgc3RydWN0IFRlbXBsYXRlczxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQx
NCwKIC8vIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKCkuCiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotc3RydWN0IFR5cGVMaXN0IHsgdHlwZWRlZiBUeXBlczE8VD4gdHlwZTsgfTsKK3N0
cnVjdCBUeXBlTGlzdCB7CisgIHR5cGVkZWYgVHlwZXMxPFQ+IHR5cGU7Cit9OwogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LAogICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5
cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCkBAIC0zMzEzLDkgKzMzMjMsOSBAQCBzdHJ1Y3QgVHlw
ZUxpc3Q8VHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEs
IFQxMiwgVDEzLAogICAgICAgVDQxLCBUNDIsIFQ0MywgVDQ0LCBUNDUsIFQ0NiwgVDQ3LCBUNDgs
IFQ0OSwgVDUwPjo6dHlwZSB0eXBlOwogfTsKIAorI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURf
VEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5h
bAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURf
VEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KICNlbmRpZiAgLy8gR1RFU1RfSU5DTFVE
RV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UWVBFX1VUSUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgu
cHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtdHlwZS11dGlsLmgucHVtcAppbmRleCA1YWVkMWU1NTQ0ZmEyZGExNTg5NzM0Y2JjM2I0MTQx
YjU4N2ExZjMyLi4yNTFmZGYwMjViMmM1MzExZmFmOTVlODZlMzMwZmU5MjFjNjBkYWRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXR5cGUtdXRpbC5oLnB1bXAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wCkBAIC00Miw1NSArNDIsNjMg
QEAgJHZhciBuID0gNTAgICQkIE1heGltdW0gbGVuZ3RoIG9mIHR5cGUgbGlzdHMgd2Ugd2FudCB0
byBzdXBwb3J0LgogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RZ
UEVfVVRJTF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RZ
UEVfVVRJTF9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgotI2lu
Y2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oPgotCi0jaWYgR1RFU1RfSEFTX1RZ
UEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorI2luY2x1ZGUgImd0ZXN0L2ludGVy
bmFsL2d0ZXN0LXBvcnQuaCIKIAogLy8gI2lmZGVmIF9fR05VQ19fIGlzIHRvbyBnZW5lcmFsIGhl
cmUuICBJdCBpcyBwb3NzaWJsZSB0byB1c2UgZ2NjIHdpdGhvdXQgdXNpbmcKIC8vIGxpYnN0ZGMr
KyAod2hpY2ggaXMgd2hlcmUgY3h4YWJpLmggY29tZXMgZnJvbSkuCi0jaWZkZWYgX19HTElCQ1hY
X18KLSNpbmNsdWRlIDxjeHhhYmkuaD4KLSNlbmRpZiAgLy8gX19HTElCQ1hYX18KKyMgaWYgR1RF
U1RfSEFTX0NYWEFCSV9IXworIyAgaW5jbHVkZSA8Y3h4YWJpLmg+CisjIGVsaWYgZGVmaW5lZChf
X0hQX2FDQykKKyMgIGluY2x1ZGUgPGFjeHhfZGVtYW5nbGUuaD4KKyMgZW5kaWYgIC8vIEdURVNU
X0hBU0hfQ1hYQUJJX0hfCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5h
bCB7CiAKLS8vIEFzc2VydHlUeXBlRXE8VDEsIFQyPjo6dHlwZSBpcyBkZWZpbmVkIGlmZiBUMSBh
bmQgVDIgYXJlIHRoZSBzYW1lCi0vLyB0eXBlLiAgVGhpcyBjYW4gYmUgdXNlZCBhcyBhIGNvbXBp
bGUtdGltZSBhc3NlcnRpb24gdG8gZW5zdXJlIHRoYXQKLS8vIHR3byB0eXBlcyBhcmUgZXF1YWwu
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1zdHJ1Y3QgQXNzZXJ0VHlw
ZUVxOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBBc3NlcnRUeXBlRXE8VCwgVD4g
ewotICB0eXBlZGVmIGJvb2wgdHlwZTsKLX07Ci0KIC8vIEdldFR5cGVOYW1lPFQ+KCkgcmV0dXJu
cyBhIGh1bWFuLXJlYWRhYmxlIG5hbWUgb2YgdHlwZSBULgorLy8gTkI6IFRoaXMgZnVuY3Rpb24g
aXMgYWxzbyB1c2VkIGluIEdvb2dsZSBNb2NrLCBzbyBkb24ndCBtb3ZlIGl0IGluc2lkZSBvZgor
Ly8gdGhlIHR5cGVkLXRlc3Qtb25seSBzZWN0aW9uIGJlbG93LgogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1TdHJpbmcgR2V0VHlwZU5hbWUoKSB7Ci0jaWYgR1RFU1RfSEFTX1JUVEkKK3N0ZDo6c3Ry
aW5nIEdldFR5cGVOYW1lKCkgeworIyBpZiBHVEVTVF9IQVNfUlRUSQogCiAgIGNvbnN0IGNoYXIq
IGNvbnN0IG5hbWUgPSB0eXBlaWQoVCkubmFtZSgpOwotI2lmZGVmIF9fR0xJQkNYWF9fCisjICBp
ZiBHVEVTVF9IQVNfQ1hYQUJJX0hfIHx8IGRlZmluZWQoX19IUF9hQ0MpCiAgIGludCBzdGF0dXMg
PSAwOwogICAvLyBnY2MncyBpbXBsZW1lbnRhdGlvbiBvZiB0eXBlaWQoVCkubmFtZSgpIG1hbmds
ZXMgdGhlIHR5cGUgbmFtZSwKICAgLy8gc28gd2UgaGF2ZSB0byBkZW1hbmdsZSBpdC4KLSAgY2hh
ciogY29uc3QgcmVhZGFibGVfbmFtZSA9IGFiaTo6X19jeGFfZGVtYW5nbGUobmFtZSwgMCwgMCwg
JnN0YXR1cyk7Ci0gIGNvbnN0IFN0cmluZyBuYW1lX3N0cihzdGF0dXMgPT0gMCA/IHJlYWRhYmxl
X25hbWUgOiBuYW1lKTsKKyMgICBpZiBHVEVTVF9IQVNfQ1hYQUJJX0hfCisgIHVzaW5nIGFiaTo6
X19jeGFfZGVtYW5nbGU7CisjICAgZW5kaWYgIC8vIEdURVNUX0hBU19DWFhBQklfSF8KKyAgY2hh
ciogY29uc3QgcmVhZGFibGVfbmFtZSA9IF9fY3hhX2RlbWFuZ2xlKG5hbWUsIDAsIDAsICZzdGF0
dXMpOworICBjb25zdCBzdGQ6OnN0cmluZyBuYW1lX3N0cihzdGF0dXMgPT0gMCA/IHJlYWRhYmxl
X25hbWUgOiBuYW1lKTsKICAgZnJlZShyZWFkYWJsZV9uYW1lKTsKICAgcmV0dXJuIG5hbWVfc3Ry
OwotI2Vsc2UKKyMgIGVsc2UKICAgcmV0dXJuIG5hbWU7Ci0jZW5kaWYgIC8vIF9fR0xJQkNYWF9f
CisjICBlbmRpZiAgLy8gR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBfX0hQX2FDQworCisjIGVsc2UK
IAotI2Vsc2UKICAgcmV0dXJuICI8dHlwZT4iOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUlRUSQor
CisjIGVuZGlmICAvLyBHVEVTVF9IQVNfUlRUSQogfQogCisjaWYgR1RFU1RfSEFTX1RZUEVEX1RF
U1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorCisvLyBBc3NlcnR5VHlwZUVxPFQxLCBUMj46
OnR5cGUgaXMgZGVmaW5lZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQorLy8gdHlwZS4gIFRo
aXMgY2FuIGJlIHVzZWQgYXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0aGF0
CisvLyB0d28gdHlwZXMgYXJlIGVxdWFsLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyPgorc3RydWN0IEFzc2VydFR5cGVFcTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citz
dHJ1Y3QgQXNzZXJ0VHlwZUVxPFQsIFQ+IHsKKyAgdHlwZWRlZiBib29sIHR5cGU7Cit9OworCiAv
LyBBIHVuaXF1ZSB0eXBlIHVzZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBhcmd1bWVu
dHMgb2YgY2xhc3MKIC8vIHRlbXBsYXRlIFR5cGVzLiAgVGhpcyBhbGxvd3MgdXMgdG8gc2ltdWxh
dGUgdmFyaWFkaWMgdGVtcGxhdGVzCiAvLyAoZS5nLiBUeXBlczxpbnQ+LCBUeXBlPGludCwgZG91
YmxlPiwgYW5kIGV0YyksIHdoaWNoIEMrKyBkb2Vzbid0CkBAIC0xNjksNyArMTc3LDcgQEAgc3Ry
dWN0IFR5cGVzPCRmb3IgaiwgW1tUJGpdXSRmb3Iga1tbLCBpbnRlcm5hbDo6Tm9uZV1dPiB7CiAK
IG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKLSNkZWZpbmUgR1RFU1RfVEVNUExBVEVfIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcworIyBkZWZpbmUgR1RFU1RfVEVNUExBVEVfIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcwogCiAvLyBUaGUgdGVtcGxhdGUgInNlbGVjdG9yIiBzdHJ1Y3QgVGVt
cGxhdGVTZWw8VG1wbD4gaXMgdXNlZCB0bwogLy8gcmVwcmVzZW50IFRtcGwsIHdoaWNoIG11c3Qg
YmUgYSBjbGFzcyB0ZW1wbGF0ZSB3aXRoIG9uZSB0eXBlCkBAIC0xODcsNyArMTk1LDcgQEAgc3Ry
dWN0IFRlbXBsYXRlU2VsIHsKICAgfTsKIH07CiAKLSNkZWZpbmUgR1RFU1RfQklORF8oVG1wbFNl
bCwgVCkgXAorIyBkZWZpbmUgR1RFU1RfQklORF8oVG1wbFNlbCwgVCkgXAogICBUbXBsU2VsOjp0
ZW1wbGF0ZSBCaW5kPFQ+Ojp0eXBlCiAKIC8vIEEgdW5pcXVlIHN0cnVjdCB0ZW1wbGF0ZSB1c2Vk
IGFzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUKQEAgLTI3MCw3ICsyNzgsOSBAQCBzdHJ1Y3Qg
VGVtcGxhdGVzPCRmb3IgaiwgW1tUJGpdXSRmb3Iga1tbLCBOb25lVF1dPiB7CiAvLyBJTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUCgpLgogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVj
dCBUeXBlTGlzdCB7IHR5cGVkZWYgVHlwZXMxPFQ+IHR5cGU7IH07CitzdHJ1Y3QgVHlwZUxpc3Qg
eworICB0eXBlZGVmIFR5cGVzMTxUPiB0eXBlOworfTsKIAogCiAkcmFuZ2UgaSAxLi5uCkBAIC0y
NzksOSArMjg5LDkgQEAgc3RydWN0IFR5cGVMaXN0PFR5cGVzPCRmb3IgaSwgW1tUJGldXT4gPiB7
CiAgIHR5cGVkZWYgdHlwZW5hbWUgVHlwZXM8JGZvciBpLCBbW1QkaV1dPjo6dHlwZSB0eXBlOwog
fTsKIAorI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURf
VEVTVF9QCisKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3Rp
bmcKIAotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURf
VEVTVF9QCi0KICNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9U
WVBFX1VUSUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21ha2UvTWFr
ZWZpbGUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tYWtlL01ha2VmaWxlCmluZGV4IDViMjdi
NmEyY2JiMTNlMzgwZWU3NWQxODZmNTUzYmZiNWZhMTQ0YjUuLjlhYzc0NDkzYmE1NTI0NjU5N2U5
MGI4OThmYWU4NDdhZTM1OGVhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L21ha2UvTWFrZWZpbGUKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbWFrZS9NYWtlZmls
ZQpAQCAtMjAsMTAgKzIwLDEyIEBAIEdURVNUX0RJUiA9IC4uCiBVU0VSX0RJUiA9IC4uL3NhbXBs
ZXMKIAogIyBGbGFncyBwYXNzZWQgdG8gdGhlIHByZXByb2Nlc3Nvci4KLUNQUEZMQUdTICs9IC1J
JChHVEVTVF9ESVIpL2luY2x1ZGUKKyMgU2V0IEdvb2dsZSBUZXN0J3MgaGVhZGVyIGRpcmVjdG9y
eSBhcyBhIHN5c3RlbSBkaXJlY3RvcnksIHN1Y2ggdGhhdAorIyB0aGUgY29tcGlsZXIgZG9lc24n
dCBnZW5lcmF0ZSB3YXJuaW5ncyBpbiBHb29nbGUgVGVzdCBoZWFkZXJzLgorQ1BQRkxBR1MgKz0g
LWlzeXN0ZW0gJChHVEVTVF9ESVIpL2luY2x1ZGUKIAogIyBGbGFncyBwYXNzZWQgdG8gdGhlIEMr
KyBjb21waWxlci4KLUNYWEZMQUdTICs9IC1nIC1XYWxsIC1XZXh0cmEKK0NYWEZMQUdTICs9IC1n
IC1XYWxsIC1XZXh0cmEgLXB0aHJlYWQKIAogIyBBbGwgdGVzdHMgcHJvZHVjZWQgYnkgdGhpcyBN
YWtlZmlsZS4gIFJlbWVtYmVyIHRvIGFkZCBuZXcgdGVzdHMgeW91CiAjIGNyZWF0ZWQgdG8gdGhl
IGxpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0LW1k
LnNsbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQuc2xuCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjgyOWI0MDE5YWUzYWU1MWZkMDA2MDNlOTM0NzkzYzRkYjgzODUwY2UKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0LW1kLnNsbgpAQCAtMCww
ICsxLDQ1IEBACitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQg
VmVyc2lvbiA4LjAwCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJD
OTQyfSIpID0gImd0ZXN0LW1kIiwgImd0ZXN0LW1kLnZjcHJvaiIsICJ7QzhGNkMxNzItNTZGMi00
RTc2LUI1RkEtQzNCNDIzQjMxQkU4fSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5j
aWVzKSA9IHBvc3RQcm9qZWN0CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2pl
Y3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3RfbWFp
bi1tZCIsICJndGVzdF9tYWluLW1kLnZjcHJvaiIsICJ7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDct
RjY4RUQ5ODYyMDMzfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBv
c3RQcm9qZWN0CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5
Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3RfcHJvZF90ZXN0LW1k
IiwgImd0ZXN0X3Byb2RfdGVzdC1tZC52Y3Byb2oiLCAiezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlE
LUVBNEQ0OUJDM0VDQn0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBw
b3N0UHJvamVjdAorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJD
OUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0X3VuaXR0ZXN0LW1k
IiwgImd0ZXN0X3VuaXR0ZXN0LW1kLnZjcHJvaiIsICJ7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0Mt
RjRFRTBFRDQ4MUEyfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBv
c3RQcm9qZWN0CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK0dsb2JhbAorCUdsb2Jh
bFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uKSA9IHByZVNvbHV0aW9uCisJCURlYnVnID0g
RGVidWcKKwkJUmVsZWFzZSA9IFJlbGVhc2UKKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2Vj
dGlvbihQcm9qZWN0Q29uZmlndXJhdGlvbikgPSBwb3N0U29sdXRpb24KKwkJe0M4RjZDMTcyLTU2
RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIK
KwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uRGVidWcuQnVpbGQuMCA9
IERlYnVnfFdpbjMyCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LlJl
bGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1
RkEtQzNCNDIzQjMxQkU4fS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXszQUY1
NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVn
fFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LkRlYnVnLkJ1
aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYy
MDMzfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezNBRjU0QzhBLTEwQkYt
NDMzMi05MTQ3LUY2OEVEOTg2MjAzM30uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgor
CQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5EZWJ1Zy5BY3RpdmVDZmcg
PSBEZWJ1Z3xXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5E
ZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVB
NEQ0OUJDM0VDQn0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXsyNDg0ODU1
MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0J9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8
V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uRGVidWcuQWN0
aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0
ODFBMn0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzkt
ODIzQy1GNEVFMEVENDgxQTJ9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7
NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfS5SZWxlYXNlLkJ1aWxkLjAgPSBS
ZWxlYXNlfFdpbjMyCisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oRXh0ZW5zaWJp
bGl0eUdsb2JhbHMpID0gcG9zdFNvbHV0aW9uCisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNl
Y3Rpb24oRXh0ZW5zaWJpbGl0eUFkZElucykgPSBwb3N0U29sdXRpb24KKwlFbmRHbG9iYWxTZWN0
aW9uCitFbmRHbG9iYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMv
Z3Rlc3QtbWQudmNwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52
Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWMxNDk2Y2NiZjBjOTY2ZTc5NTgzYzBmYzc0YTg5OWMxNzUwOWZm
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3Qt
bWQudmNwcm9qCkBAIC0wLDAgKzEsMTI2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZp
c3VhbCBDKysiCisJVmVyc2lvbj0iNy4xMCIKKwlOYW1lPSJndGVzdC1tZCIKKwlQcm9qZWN0R1VJ
RD0ie0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0iCisJS2V5d29yZD0iV2lu
MzJQcm9qIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJ
PC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFt
ZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25OYW1lKS8kKENv
bmZpZ3VyYXRpb25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChPdXREaXIpLyQo
UHJvamVjdE5hbWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiCisJCQlDaGFyYWN0ZXJTZXQ9
IjIiCisJCQlSZWZlcmVuY2VzUGF0aD0iIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM9IldJTjMyO19ERUJVRztfTElCIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJCUJh
c2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlVc2VQcmVj
b21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQ
b3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0
Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvZ3Rl
c3RkLmxpYiIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZD
UHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRU
b29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJ
CTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8
VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJ
TmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFt
ZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1
cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91
dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJ
SW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCisJCQlDb25m
aWd1cmF0aW9uVHlwZT0iNCIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCVJlZmVyZW5jZXNQYXRo
PSImcXVvdDsuLlxpbmNsdWRlJnF1b3Q7OyZxdW90Oy4uJnF1b3Q7Ij4KKwkJCTxUb29sCisJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lO
MzI7TkRFQlVHO19MSUIiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJVXNlUHJlY29tcGls
ZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFi
aWxpdHlQcm9ibGVtcz0iRkFMU0UiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlO
YW1lPSJWQ0xpYnJhcmlhblRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2d0ZXN0Lmxp
YiIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5h
bWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVp
bGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29s
CisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0i
VkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNB
dXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9u
PgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxG
aWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJRmlsdGVyPSJjcHA7
YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCIKKwkJCVVuaXF1ZUlkZW50aWZpZXI9
Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ij4KKwkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxzcmNcZ3Rlc3QtYWxsLmNjIj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90
Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4K
KwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1
b3Q7Ii8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+
CisJCTxGaWx0ZXIKKwkJCU5hbWU9IkhlYWRlciBGaWxlcyIKKwkJCUZpbHRlcj0iaDtocHA7aHh4
O2htO2lubDtpbmM7eHNkIgorCQkJVW5pcXVlSWRlbnRpZmllcj0iezkzOTk1MzgwLTg5QkQtNGIw
NC04OEVCLTYyNUZCRTUyRUJGQn0iPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxz
PgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4cHJvaiBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4cHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMTAwNzhlNGFhYjY5MTcxMmExMDNjMmViNjNlZTdkYWMxZWY0OTliZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9tc3ZjL2d0ZXN0LW1kLnZjeHByb2oKKysrIC9kZXYvbnVsbApAQCAtMSwzNjAgKzAsMCBA
QAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERl
ZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSIxNC4wIiB4bWxucz0iaHR0cDovL3Nj
aGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEl0ZW1Hcm91
cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRp
b24gSW5jbHVkZT0iRGVidWdTdWZmaXh8V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVi
dWdTdWZmaXg8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3Jt
PgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9u
IEluY2x1ZGU9IkRlYnVnU3VmZml4fHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Z1N1
ZmZpeDwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAg
IDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IkRlYnVnX1dpbkNhaXJvfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnX1dp
bkNhaXJvPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4K
LSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJ
bmNsdWRlPSJEZWJ1Z19XaW5DYWlyb3x4NjQiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWdf
V2luQ2Fpcm88L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4K
LSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJ
bmNsdWRlPSJEZWJ1Z3xXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmln
dXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0
Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8
eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgotICAgICAg
PFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAg
ICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUHJvZHVjdGlvbnxXaW4zMiI+Ci0gICAg
ICA8Q29uZmlndXJhdGlvbj5Qcm9kdWN0aW9uPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRm
b3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQcm9kdWN0aW9ufHg2NCI+Ci0gICAgICA8Q29u
ZmlndXJhdGlvbj5Qcm9kdWN0aW9uPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2
NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENv
bmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiI+Ci0gICAgICA8Q29u
ZmlndXJhdGlvbj5SZWxlYXNlX1dpbkNhaXJvPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRm
b3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlX1dpbkNhaXJvfHg2NCI+Ci0gICAg
ICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlX1dpbkNhaXJvPC9Db25maWd1cmF0aW9uPgotICAgICAg
PFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAg
ICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+Ci0gICAgICA8
Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldp
bjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0
Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlv
bj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+
Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxQcm9wZXJ0
eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KLSAgICA8UHJvamVjdEd1aWQ+e0M4RjZDMTcyLTU2RjIt
NEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH08L1Byb2plY3RHdWlkPgotICAgIDxSb290TmFtZXNwYWNl
Pmd0ZXN0LW1kPC9Sb290TmFtZXNwYWNlPgotICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29y
ZD4KLSAgICA8V2luZG93c1RhcmdldFBsYXRmb3JtVmVyc2lvbj44LjE8L1dpbmRvd3NUYXJnZXRQ
bGF0Zm9ybVZlcnNpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIk
KFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3Bl
cnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlw
ZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11
bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZv
cm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0i
Q29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0Nv
bmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJT
ZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJv
cGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3Vy
YXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0
aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAg
IDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3Jv
dXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0g
ICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgot
ICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3Jt
VG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFBy
b3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQ
cm9kdWN0aW9ufFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0
aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVy
U2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwv
UGxhdGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQn
IiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xp
YnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9D
aGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+
Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0
aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlv
blR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8
UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3Vw
PgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJh
dGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3Rl
clNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8
L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJv
fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5T
dGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRp
Qnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1U
b29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyIgTGFi
ZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5
PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFj
dGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8
L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIiBMYWJlbD0iQ29uZmlndXJh
dGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRp
b25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAg
PFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91
cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENv
bmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxD
aGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNl
dD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEltcG9ydCBQ
cm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+Ci0gIDxJbXBv
cnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgotICA8L0ltcG9ydEdyb3VwPgotICA8
SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIg
Q29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPElt
cG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnBy
b3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0
eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2Fs
QXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFy
aWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAg
PEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPElt
cG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVz
ZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3Bw
LiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAv
PgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3Bz
XGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4
NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249
ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnBy
b3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2pl
Y3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0g
IDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVl
dHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4k
KFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilc
TWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERh
dGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylc
dG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBv
cnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1
Y3Rpb258eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9
IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29u
ZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9y
dCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3Bz
IiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNo
ZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3Bw
LiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBw
RGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVz
KVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPElt
cG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0
aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQ
cm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAv
PgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciIExhYmVsPSJQcm9w
ZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJS
b290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9Ikxv
Y2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGli
cmFyaWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4K
LSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWdfV2luQ2Fpcm98eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1w
b3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+
Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNc
Y29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMici
IExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhp
c3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMn
KSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0i
JChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgICA8
SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xkZWJ1Z3N1
ZmZpeC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyIgTGFi
ZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMo
JyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBM
YWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdl
YktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICAgIDxJbXBv
cnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGRlYnVnc3VmZml4
LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNl
ck1hY3JvcyIgLz4KLSAgPFByb3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+
MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxPdXREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAg
ICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98
eDY0JyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxs
aWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+JChD
b25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGly
PgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWly
b3xXaW4zMiciPiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj4kKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERpciBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2lu
MzInIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
PC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmd0ZXN0
JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmd0ZXN0JChEZWJ1
Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+Z3Rlc3Qk
KERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+Z3Rl
c3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj5ndGVz
dCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj5ndGVzdCQo
RGVidWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5ndGVzdCQoRGVidWdT
dWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwv
VGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+Z3Rlc3QkKERlYnVnU3VmZml4
KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPmd0ZXN0JChEZWJ1Z1N1ZmZp
eCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPmd0ZXN0JChEZWJ1Z1N1ZmZp
eCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj5ndGVzdCQoRGVidWdTdWZmaXgp
PC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1p
emF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGly
KS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNs
dWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGlu
Y2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEph
dmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjsl
KFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAg
ICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAg
PEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+
Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYj4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGly
KWd0ZXN0JChEZWJ1Z1N1ZmZpeCkubGliPC9PdXRwdXRGaWxlPgotICAgIDwvTGliPgotICA8L0l0
ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPENsQ29tcGls
ZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIp
Li5cSW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChD
b25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
PgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFByZWNvbXBpbGVkSGVh
ZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVj
a3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgIDwvQ2xDb21waWxl
PgotICAgIDxMaWI+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilndGVzdCQoRGVidWdTdWZm
aXgpLmxpYjwvT3V0cHV0RmlsZT4KLSAgICA8L0xpYj4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3Vw
PgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAg
ICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5j
bHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdI
ZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAg
ICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRp
VGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgot
ICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5h
YmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgIDwvQ2xDb21waWxlPgotICAg
IDxMaWI+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilndGVzdC5saWI8L091dHB1dEZpbGU+
Ci0gICAgPC9MaWI+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9u
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19X
aW5DYWlyb3x4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNh
YmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVk
ZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxp
YnJhcnk+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVh
ZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1
bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYj4KLSAgICAgIDxPdXRwdXRG
aWxlPiQoT3V0RGlyKWd0ZXN0LmxpYjwvT3V0cHV0RmlsZT4KLSAgICA8L0xpYj4KLSAgPC9JdGVt
RGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+Ci0gICAgPENs
Q29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAg
ICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2pl
Y3REaXIpLi5cSW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3Jl
XEZvcndhcmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZh
dGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29y
ZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNz
b3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxCYXNpY1J1bnRp
bWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgIDwvQ2xD
b21waWxlPgotICAgIDxMaWI+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilndGVzdCQoRGVi
dWdTdWZmaXgpLmxpYjwvT3V0cHV0RmlsZT4KLSAgICA8L0xpYj4KLSAgPC9JdGVtRGVmaW5pdGlv
bkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0g
ICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXElu
Y2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAg
ICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4K
LSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVu
YWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAg
ICA8TGliPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpZ3Rlc3QkKERlYnVnU3VmZml4KS5s
aWI8L091dHB1dEZpbGU+Ci0gICAgPC9MaWI+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAg
PEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5j
bHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdI
ZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAg
ICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAg
IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMp
PC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliIC8+
Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAg
IDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2pl
Y3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZh
dGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAg
IDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJ
QjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0g
ICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYiAvPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0g
IDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAg
ICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0
RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRl
OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFk
ZXI+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRl
ZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0g
ICAgPExpYiAvPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9X
aW5DYWlyb3x4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChD
b25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlY29t
cGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFByZXByb2Nl
c3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAgPC9JdGVt
RGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj4KLSAgICA8Q2xD
b21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGly
KS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNs
dWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGlu
Y2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEph
dmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1By
ZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwv
Q2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRl
bURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1Byb2R1Y3Rpb258eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVk
ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9Q
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliIC8+Ci0g
IDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHNyY1xndGVzdC1kZWF0aC10ZXN0LmNjIiAvPgotICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cc3JjXGd0ZXN0LWZpbGVwYXRoLmNjIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cc3JjXGd0ZXN0LXBvcnQuY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxz
cmNcZ3Rlc3QtdGVzdC1wYXJ0LmNjIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3Jj
XGd0ZXN0LXR5cGVkLXRlc3QuY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNc
Z3Rlc3QuY2MiIC8+Ci0gIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1kZWF0aC10ZXN0LWlu
dGVybmFsLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0
ZXN0LWRlYXRoLXRlc3QuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVc
Z3Rlc3RcaW50ZXJuYWxcZ3Rlc3QtZmlsZXBhdGguaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHNyY1xndGVzdC1pbnRlcm5hbC1pbmwuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rlc3QtaW50ZXJuYWwuaCIgLz4KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtbWVzc2FnZS5oIiAvPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1w
b3J0LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0
LXNwaS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRl
cm5hbFxndGVzdC1zdHJpbmcuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1
ZGVcZ3Rlc3RcZ3Rlc3QuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVc
Z3Rlc3RcZ3Rlc3RfcHJlZF9pbXBsLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxp
bmNsdWRlXGd0ZXN0XGd0ZXN0X3Byb2QuaCIgLz4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJbXBvcnQg
UHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+Ci0gIDxJ
bXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci08
L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0
LW1kLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3Qt
bWQudmN4cHJvai5maWx0ZXJzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzdkMWM5
YjRkY2E2YTE0ZWM3MDZiYzRhOGMxMzFmNmI1YzgzODAwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rl
c3QtbWQudmN4cHJvai5maWx0ZXJzCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAot77u/
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IFRvb2xzVmVy
c2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIv
bXNidWlsZC8yMDAzIj4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJj
ZSBGaWxlcyI+Ci0gICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEw
NjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KLSAgICAgIDxFeHRlbnNpb25zPmNw
cDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgotICAgIDwv
RmlsdGVyPgotICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KLSAgICAgIDxVbmlx
dWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9Vbmlx
dWVJZGVudGlmaWVyPgotICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNk
PC9FeHRlbnNpb25zPgotICAgIDwvRmlsdGVyPgotICA8L0l0ZW1Hcm91cD4KLSAgPEl0ZW1Hcm91
cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC1kZWF0aC10ZXN0LmNjIj4K
LSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0g
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QtZmlsZXBhdGguY2MiPgotICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC1wb3J0LmNjIj4KLSAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxzcmNcZ3Rlc3QtdGVzdC1wYXJ0LmNjIj4KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZp
bGVzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxzcmNcZ3Rlc3QtdHlwZWQtdGVzdC5jYyI+Ci0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwv
RmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3Jj
XGd0ZXN0LmNjIj4KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9D
bENvbXBpbGU+Ci0gIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1kZWF0aC10ZXN0LWludGVy
bmFsLmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5j
bHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtZGVh
dGgtdGVzdC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9D
bEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVy
bmFsXGd0ZXN0LWZpbGVwYXRoLmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHNyY1xndGVz
dC1pbnRlcm5hbC1pbmwuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgot
ICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVz
dFxpbnRlcm5hbFxndGVzdC1pbnRlcm5hbC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
PC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxp
bmNsdWRlXGd0ZXN0XGd0ZXN0LW1lc3NhZ2UuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1wb3J0LmgiPgotICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3Qtc3BpLmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rlc3Qtc3RyaW5nLmgiPgotICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdF9wcmVkX2ltcGwuaCI+Ci0gICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdF9wcm9kLmgiPgotICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgPC9JdGVtR3JvdXA+Ci08L1By
b2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC5zbG4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9t
c3ZjL2d0ZXN0LnNsbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWIyOTI5NjQ5ZmY2OWExMDllZWE1YjRiN2Y2ZGNj
NzFjNTFjZDRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2
Yy9ndGVzdC5zbG4KQEAgLTAsMCArMSw0NSBAQAorTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29s
dXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gOC4wMAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEt
MTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdCIsICJndGVzdC52Y3Byb2oiLCAie0M4
RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30iCisJUHJvamVjdFNlY3Rpb24oUHJv
amVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQ
cm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIp
ID0gImd0ZXN0X21haW4iLCAiZ3Rlc3RfbWFpbi52Y3Byb2oiLCAiezNBRjU0QzhBLTEwQkYtNDMz
Mi05MTQ3LUY2OEVEOTg2MjAzMn0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2ll
cykgPSBwb3N0UHJvamVjdAorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0
KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0X3VuaXR0
ZXN0IiwgImd0ZXN0X3VuaXR0ZXN0LnZjcHJvaiIsICJ7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0Mt
RjRFRTBFRDQ4MUExfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBv
c3RQcm9qZWN0CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5
Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3RfcHJvZF90ZXN0Iiwg
Imd0ZXN0X3Byb2RfdGVzdC52Y3Byb2oiLCAiezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0
OUJDM0VDQX0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJv
amVjdAorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitHbG9iYWwKKwlHbG9iYWxTZWN0
aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvbikgPSBwcmVTb2x1dGlvbgorCQlEZWJ1ZyA9IERlYnVn
CisJCVJlbGVhc2UgPSBSZWxlYXNlCisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24o
UHJvamVjdENvbmZpZ3VyYXRpb24pID0gcG9zdFNvbHV0aW9uCisJCXtDOEY2QzE3Mi01NkYyLTRF
NzYtQjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtD
OEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1
Z3xXaW4zMgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fS5SZWxlYXNl
LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMz
QjQyM0IzMUJFN30uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7M0FGNTRDOEEt
MTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4z
MgorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5EZWJ1Zy5CdWlsZC4w
ID0gRGVidWd8V2luMzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0u
UmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzIt
OTE0Ny1GNjhFRDk4NjIwMzJ9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezRE
OUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uRGVidWcuQWN0aXZlQ2ZnID0gRGVi
dWd8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uRGVidWcu
QnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVE
NDgxQTF9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7NEQ5RkRGQjUtOTg2
QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUExfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMy
CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LkRlYnVnLkFjdGl2ZUNm
ZyA9IERlYnVnfFdpbjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9
LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQt
RUE0RDQ5QkMzRUNBfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezI0ODQ4
NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQX0uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFz
ZXxXaW4zMgorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKEV4dGVuc2liaWxpdHlH
bG9iYWxzKSA9IHBvc3RTb2x1dGlvbgorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9u
KEV4dGVuc2liaWxpdHlBZGRJbnMpID0gcG9zdFNvbHV0aW9uCisJRW5kR2xvYmFsU2VjdGlvbgor
RW5kR2xvYmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0
LnZjcHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QudmNwcm9qCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ0OWU3ZTA5ZWE3ZThhOTEwNGQ5YjQ1MjIxOTRiMjRiM2ZiOGU4OTMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0LnZjcHJvagpAQCAt
MCwwICsxLDEyNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUy
Ij8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZl
cnNpb249IjcuMTAiCisJTmFtZT0iZ3Rlc3QiCisJUHJvamVjdEdVSUQ9IntDOEY2QzE3Mi01NkYy
LTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9IgorCUtleXdvcmQ9IldpbjMyUHJvaiI+CisJPFBsYXRm
b3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxhdGZvcm1zPgorCTxD
b25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgor
CQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uTmFtZSkvJChDb25maWd1cmF0aW9uTmFtZSki
CisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKSIKKwkJ
CUNvbmZpZ3VyYXRpb25UeXBlPSI0IgorCQkJQ2hhcmFjdGVyU2V0PSIyIgorCQkJUmVmZXJlbmNl
c1BhdGg9IiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0
aW1pemF0aW9uPSIwIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7
X0xJQiIKKwkJCQlNaW5pbWFsUmVidWlsZD0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9
IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAi
CisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVt
cz0iRkFMU0UiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIvPgorCQkJPFRvb2wKKwkJ
CQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpYnJh
cmlhblRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2d0ZXN0ZC5saWIiLz4KKwkJCTxU
b29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RC
dWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29s
Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wK
KwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9
IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJW
Q1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdy
YXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFu
YWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZp
Z3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQo
U29sdXRpb25OYW1lKS8kKENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVj
dG9yeT0iJChPdXREaXIpLyQoUHJvamVjdE5hbWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjQi
CisJCQlDaGFyYWN0ZXJTZXQ9IjIiCisJCQlSZWZlcmVuY2VzUGF0aD0iJnF1b3Q7Li5caW5jbHVk
ZSZxdW90OzsmcXVvdDsuLiZxdW90OyI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfTElCIgor
CQkJCVJ1bnRpbWVMaWJyYXJ5PSI0IgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJ
CVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZB
TFNFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4KKwkJCTxUb29sCisJCQkJTmFt
ZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5U
b29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9ndGVzdC5saWIiLz4KKwkJCTxUb29sCisJ
CQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2
ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJ
CQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlO
YW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2Vi
U2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERh
dGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJH
ZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdy
YXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRp
b25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIK
KwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRs
O2hwajtiYXQ7YXNtO2FzbXgiCisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00
Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
c3JjXGd0ZXN0LWFsbC5jYyI+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRl
YnVnfFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsu
LlxpbmNsdWRlJnF1b3Q7Ii8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlO
YW1lPSJIZWFkZXIgRmlsZXMiCisJCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jO3hzZCIK
KwkJCVVuaXF1ZUlkZW50aWZpZXI9Ins5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVC
RkJ9Ij4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8
L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9tc3ZjL2d0ZXN0X21haW4tbWQudmNwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2
Yy9ndGVzdF9tYWluLW1kLnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDA5NTZjZDNkMjZiMDgyYTIzMDUy
NzljYzlhNzhjZTdmNzZiMTJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvbXN2Yy9ndGVzdF9tYWluLW1kLnZjcHJvagpAQCAtMCwwICsxLDEyOSBAQAorPD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJv
amVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjcuMTAiCisJTmFtZT0i
Z3Rlc3RfbWFpbi1tZCIKKwlQcm9qZWN0R1VJRD0iezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2
OEVEOTg2MjAzM30iCisJS2V5d29yZD0iV2luMzJQcm9qIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxh
dGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25z
PgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJl
Y3Rvcnk9IiQoU29sdXRpb25OYW1lKS8kKENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJCUludGVybWVk
aWF0ZURpcmVjdG9yeT0iJChPdXREaXIpLyQoUHJvamVjdE5hbWUpIgorCQkJQ29uZmlndXJhdGlv
blR5cGU9IjQiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiCisJCQlSZWZlcmVuY2VzUGF0aD0iIj4KKwkJ
CTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAi
CisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfTElCIgorCQkJCU1p
bmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50
aW1lTGlicmFyeT0iMyIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5n
TGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKKwkJ
CQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3Vz
dG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKKwkJ
CQlPdXRwdXRGaWxlPSIkKE91dERpcikvJChQcm9qZWN0TmFtZSlkLmxpYiIvPgorCQkJPFRvb2wK
KwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxk
RXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4K
KwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJ
CU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNX
ZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1M
RGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBl
ckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2Vk
V3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJh
dGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iJChTb2x1
dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5
PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCIKKwkJ
CUNoYXJhY3RlclNldD0iMiIKKwkJCVJlZmVyZW5jZXNQYXRoPSImcXVvdDsuLlxpbmNsdWRlJnF1
b3Q7OyZxdW90Oy4uJnF1b3Q7Ij4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19MSUIiCisJCQkJ
UnVudGltZUxpYnJhcnk9IjIiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2Fy
bmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0Ui
CisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJW
Q0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wi
CisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpLyQoUHJvamVjdE5hbWUpLmxpYiIvPgorCQkJPFRv
b2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1
aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wi
Lz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0i
VkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZD
WE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3Jh
cHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5h
Z2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmln
dXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJCTxQcm9qZWN0UmVmZXJlbmNlCisJCQlSZWZlcmVu
Y2VkUHJvamVjdElkZW50aWZpZXI9IntDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFC
RTh9IgorCQkJTmFtZT0iZ3Rlc3QtbWQiLz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8
RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7
b2RsO2lkbDtocGo7YmF0O2FzbTthc214IgorCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0Yx
LUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn0iPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHNyY1xndGVzdF9tYWluLmNjIj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iRGVidWd8V2luMzIiPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4uJnF1b3Q7
OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4KKwkJCQkJPFRv
b2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1b3Q7Ii8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0
ZXIKKwkJCU5hbWU9IkhlYWRlciBGaWxlcyIKKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtp
bmM7eHNkIgorCQkJVW5pcXVlSWRlbnRpZmllcj0iezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYy
NUZCRTUyRUJGQn0iPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xv
YmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L21zdmMvZ3Rlc3RfbWFpbi52Y3Byb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9tc3ZjL2d0ZXN0X21haW4udmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3ZTlmNDE3Njg1ZmYzNzU4NDIw
MDAxZGE5NDMyZDQwMzcxZmJjYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9tc3ZjL2d0ZXN0X21haW4udmNwcm9qCkBAIC0wLDAgKzEsMTI5IEBACis8P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9q
ZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4xMCIKKwlOYW1lPSJn
dGVzdF9tYWluIgorCVByb2plY3RHVUlEPSJ7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5
ODYyMDMyfSIKKwlLZXl3b3JkPSJXaW4zMlByb2oiPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9y
bQorCQkJTmFtZT0iV2luMzIiLz4KKwk8L1BsYXRmb3Jtcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJ
CTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9y
eT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJSW50ZXJtZWRpYXRl
RGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCisJCQlDb25maWd1cmF0aW9uVHlw
ZT0iNCIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCVJlZmVyZW5jZXNQYXRoPSIiPgorCQkJPFRv
b2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJ
CQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19MSUIiCisJCQkJTWluaW1h
bFJlYnVpbGQ9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVM
aWJyYXJ5PSI1IgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZl
bD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZBTFNFIgorCQkJCURl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21C
dWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIgorCQkJCU91
dHB1dEZpbGU9IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKWQubGliIi8+CisJCQk8VG9vbAorCQkJ
CU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVu
dFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFt
ZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNl
cnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRh
R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2Vu
ZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFw
cGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9u
CisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9u
TmFtZSkvJChDb25maWd1cmF0aW9uTmFtZSkiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQo
T3V0RGlyKS8kKFByb2plY3ROYW1lKSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0IgorCQkJQ2hh
cmFjdGVyU2V0PSIyIgorCQkJUmVmZXJlbmNlc1BhdGg9IiZxdW90Oy4uXGluY2x1ZGUmcXVvdDs7
JnF1b3Q7Li4mcXVvdDsiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0xJQiIKKwkJCQlSdW50
aW1lTGlicmFyeT0iNCIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5n
TGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKKwkJ
CQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3Vz
dG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKKwkJ
CQlPdXRwdXRGaWxlPSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkubGliIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRF
dmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJ
TmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dl
YlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxE
YXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVy
R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRX
cmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0
aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwkJPFByb2plY3RSZWZlcmVuY2UKKwkJCVJlZmVyZW5jZWRQ
cm9qZWN0SWRlbnRpZmllcj0ie0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30i
CisJCQlOYW1lPSJndGVzdCIvPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIK
KwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRs
O2hwajtiYXQ7YXNtO2FzbXgiCisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00
Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
c3JjXGd0ZXN0X21haW4uY2MiPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJE
ZWJ1Z3xXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7
Li5caW5jbHVkZSZxdW90OyIvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiPgorCQkJCQk8VG9vbAorCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiLz4KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJ
TmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYzt4c2Qi
CisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJF
QkZCfSI+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgor
PC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvbXN2Yy9ndGVzdF9wcm9kX3Rlc3QtbWQudmNwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvbXN2Yy9ndGVzdF9wcm9kX3Rlc3QtbWQudmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwNzFkMjhmZWQw
MWNjZmE5MzMwOTFjNzExN2YyYTU4NDAxYmZlMDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3Byb2oKQEAgLTAsMCAr
MSwxNjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pgor
PFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9u
PSI3LjEwIgorCU5hbWU9Imd0ZXN0X3Byb2RfdGVzdC1tZCIKKwlQcm9qZWN0R1VJRD0iezI0ODQ4
NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0iCisJS2V5d29yZD0iV2luMzJQcm9qIj4K
Kwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9y
bXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8
V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25OYW1lKS8kKENvbmZpZ3VyYXRp
b25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChPdXREaXIpLyQoUHJvamVjdE5h
bWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIK
KwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19DT05TT0xFIgorCQkJ
CU1pbmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlS
dW50aW1lTGlicmFyeT0iMyIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMyIKKwkJCQlXYXJu
aW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIK
KwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZD
Q3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJ
CQlPdXRwdXRGaWxlPSIkKE91dERpcikvZ3Rlc3RfcHJvZF90ZXN0LmV4ZSIKKwkJCQlMaW5rSW5j
cmVtZW50YWw9IjIiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVBy
b2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9ndGVzdF9wcm9kX3Rlc3QucGRiIgorCQkJCVN1
YlN5c3RlbT0iMSIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9
IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wi
Lz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wK
KwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNS
ZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQ
cm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJh
dG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJ
CQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8
VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+
CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8
V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25OYW1lKS8kKENvbmZpZ3VyYXRp
b25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChPdXREaXIpLyQoUHJvamVjdE5h
bWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmlu
aXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJ
CQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjMiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURl
dGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiCisJCQkJRGVidWdJbmZvcm1hdGlv
bkZvcm1hdD0iMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXRE
aXIpL2d0ZXN0X3Byb2RfdGVzdC5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCUdl
bmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJT3B0
aW1pemVSZWZlcmVuY2VzPSIyIgorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiCisJCQkJVGFy
Z2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8
VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5h
bWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5r
RXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wi
Lz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29s
CisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJW
Q01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1
eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+
CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwkJPFByb2plY3RSZWZlcmVuY2UK
KwkJCVJlZmVyZW5jZWRQcm9qZWN0SWRlbnRpZmllcj0iezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3
LUY2OEVEOTg2MjAzM30iCisJCQlOYW1lPSJndGVzdF9tYWluLW1kIi8+CisJPC9SZWZlcmVuY2Vz
PgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJRmlsdGVy
PSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCIKKwkJCVVuaXF1ZUlkZW50
aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ij4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlx0ZXN0XGd0ZXN0X3Byb2RfdGVzdC5jYyI+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1b3Q7IgorCQkJCQkJVXNl
UHJlY29tcGlsZWRIZWFkZXI9IjAiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1b3Q7IgorCQkJCQkJ
VXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHRlc3RccHJvZHVjdGlvbi5j
YyI+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIj4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1b3Q7
IgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4K
KwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1
b3Q7IgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iSGVh
ZGVyIEZpbGVzIgorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYzt4c2QiCisJCQlVbmlx
dWVJZGVudGlmaWVyPSJ7OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfSI+CisJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cdGVzdFxwcm9kdWN0aW9uLmgiPgorCQkJPC9G
aWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwv
VmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L21zdmMvZ3Rlc3RfcHJvZF90ZXN0LnZjcHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21z
dmMvZ3Rlc3RfcHJvZF90ZXN0LnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OThjNzU4MDhhMTYyNGU2NzQ0
YTJiMjE3OTYwYzA2ZTIxMWZhZmY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvbXN2Yy9ndGVzdF9wcm9kX3Rlc3QudmNwcm9qCkBAIC0wLDAgKzEsMTY0IEBACis8
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVk
aW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4xMCIKKwlO
YW1lPSJndGVzdF9wcm9kX3Rlc3QiCisJUHJvamVjdEdVSUQ9InsyNDg0ODU1MS1FRjRGLTQ3RTgt
OUE5RC1FQTRENDlCQzNFQ0F9IgorCUtleXdvcmQ9IldpbjMyUHJvaiI+CisJPFBsYXRmb3Jtcz4K
KwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxhdGZvcm1zPgorCTxDb25maWd1
cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJT3V0
cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uTmFtZSkvJChDb25maWd1cmF0aW9uTmFtZSkiCisJCQlJ
bnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKSIKKwkJCUNvbmZp
Z3VyYXRpb25UeXBlPSIxIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSIKKwkJCQlNaW5pbWFsUmVidWls
ZD0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9
IjUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjMiCisJCQkJV2FybmluZ0xldmVsPSIzIgor
CQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiCisJCQkJRGVidWdJbmZv
cm1hdGlvbkZvcm1hdD0iNCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9v
bCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0i
JChPdXREaXIpL2d0ZXN0X3Byb2RfdGVzdC5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIyIgor
CQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VG
aWxlPSIkKE91dERpcikvZ3Rlc3RfcHJvZF90ZXN0LnBkYiIKKwkJCQlTdWJTeXN0ZW09IjEiCisJ
CQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQ
cmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxl
clRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JU
b29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJ
CTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlO
YW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1l
PSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3Vy
YXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJT3V0
cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uTmFtZSkvJChDb25maWd1cmF0aW9uTmFtZSkiCisJCQlJ
bnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKSIKKwkJCUNvbmZp
Z3VyYXRpb25UeXBlPSIxIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7
TkRFQlVHO19DT05TT0xFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSI0IgorCQkJCVVzZVByZWNvbXBp
bGVkSGVhZGVyPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRh
YmlsaXR5UHJvYmxlbXM9IkZBTFNFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4K
KwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJ
TmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9ndGVzdF9wcm9k
X3Rlc3QuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5m
b3JtYXRpb249IlRSVUUiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCU9wdGltaXplUmVmZXJlbmNl
cz0iMiIKKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIgorCQkJCVRhcmdldE1hY2hpbmU9IjEi
Lz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1l
PSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxk
RXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJ
CQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZD
V2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBl
ckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2Vk
V3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJh
dGlvbnM+CisJPFJlZmVyZW5jZXM+CisJCTxQcm9qZWN0UmVmZXJlbmNlCisJCQlSZWZlcmVuY2Vk
UHJvamVjdElkZW50aWZpZXI9InszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzJ9
IgorCQkJTmFtZT0iZ3Rlc3RfbWFpbiIvPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxG
aWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtv
ZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXgiCisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEt
QzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cdGVzdFxndGVzdF9wcm9kX3Rlc3QuY2MiPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4m
cXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIKKwkJCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVy
PSIwIi8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7
Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIKKwkJCQkJCVVzZVByZWNvbXBpbGVkSGVh
ZGVyPSIwIi8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlx0ZXN0XHByb2R1Y3Rpb24uY2MiPgorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIKKwkJCQkJCVVzZVByZWNv
bXBpbGVkSGVhZGVyPSIwIi8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIKKwkJCQkJCVVzZVBy
ZWNvbXBpbGVkSGVhZGVyPSIwIi8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmls
ZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IkhlYWRlciBGaWxlcyIKKwkJCUZp
bHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmM7eHNkIgorCQkJVW5pcXVlSWRlbnRpZmllcj0iezkz
OTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn0iPgorCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHRlc3RccHJvZHVjdGlvbi5oIj4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+
CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2pl
Y3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0X3VuaXR0
ZXN0LW1kLnZjcHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3RfdW5pdHRl
c3QtbWQudmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1MjU5Mzk3NTBkNzQ3YzdiNDhhYzQ0ODM4NjljZjY3
NjVhNmVhY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3Zj
L2d0ZXN0X3VuaXR0ZXN0LW1kLnZjcHJvagpAQCAtMCwwICsxLDE0NyBAQAorPD94bWwgdmVyc2lv
bj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAor
CVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjcuMTAiCisJTmFtZT0iZ3Rlc3Rf
dW5pdHRlc3QtbWQiCisJUHJvamVjdEdVSUQ9Ins0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVF
MEVENDgxQTJ9IgorCUtleXdvcmQ9IldpbjMyUHJvaiI+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRm
b3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxhdGZvcm1zPgorCTxDb25maWd1cmF0aW9ucz4K
KwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0
b3J5PSIkKFNvbHV0aW9uTmFtZSkvJChDb25maWd1cmF0aW9uTmFtZSkiCisJCQlJbnRlcm1lZGlh
dGVEaXJlY3Rvcnk9IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKSIKKwkJCUNvbmZpZ3VyYXRpb25U
eXBlPSIxIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSIKKwkJCQlNaW5pbWFsUmVidWlsZD0iVFJVRSIK
KwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkJ
VXNlUHJlY29tcGlsZWRIZWFkZXI9IjMiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVj
dDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZv
cm1hdD0iNCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIp
L2d0ZXN0X3VuaXR0ZXN0LmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiCisJCQkJR2VuZXJh
dGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0
RGlyKS9ndGVzdF91bml0dGVzdC5wZGIiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCVRhcmdldE1h
Y2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wK
KwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJW
Q1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50
VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJ
CQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJ
CU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5h
Z2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlh
cnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8
Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9y
eT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJSW50ZXJtZWRpYXRl
RGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCisJCQlDb25maWd1cmF0aW9uVHlw
ZT0iMSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09O
U09MRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0i
MyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2Js
ZW1zPSJGQUxTRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQk8VG9vbAor
CQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlu
a2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvZ3Rlc3RfdW5pdHRlc3QuZXhlIgor
CQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRS
VUUiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiIKKwkJCQlF
bmFibGVDT01EQVRGb2xkaW5nPSIyIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29s
CisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWls
ZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJ
CQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZD
V2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hN
TERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVu
dFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRv
b2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVy
YXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJl
ZmVyZW5jZXM+CisJCTxQcm9qZWN0UmVmZXJlbmNlCisJCQlSZWZlcmVuY2VkUHJvamVjdElkZW50
aWZpZXI9InszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9IgorCQkJTmFtZT0i
Z3Rlc3RfbWFpbi1tZCIvPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJ
CU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hw
ajtiYXQ7YXNtO2FzbXgiCisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00Mzc2
LUEwNjYtMkEzMkQ3NTJBMkZGfSI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cdGVz
dFxndGVzdF91bml0dGVzdC5jYyI+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9
IkRlYnVnfFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCQlPcHRpbWl6YXRpb249IjEiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1b3Q7IgorCQkJCQkJQmFzaWNS
dW50aW1lQ2hlY2tzPSIwIgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJCQlE
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIKKwkJ
CQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIi8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IkhlYWRlciBGaWxl
cyIKKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmM7eHNkIgorCQkJVW5pcXVlSWRlbnRp
Zmllcj0iezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn0iPgorCQk8L0ZpbHRl
cj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJv
amVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3RfdW5p
dHRlc3QudmNwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdF91bml0dGVz
dC52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmIyZDc0MzQ1NzEwNDhmYTA1MzdhODg0ZWJhNzhiNjg4Nzc1
ODE2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rl
c3RfdW5pdHRlc3QudmNwcm9qCkBAIC0wLDAgKzEsMTQ3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVj
dFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4xMCIKKwlOYW1lPSJndGVzdF91bml0dGVz
dCIKKwlQcm9qZWN0R1VJRD0iezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0i
CisJS2V5d29yZD0iV2luMzJQcm9qIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5h
bWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmln
dXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29s
dXRpb25OYW1lKS8kKENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9y
eT0iJChPdXREaXIpLyQoUHJvamVjdE5hbWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJ
CQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lO
MzI7X0RFQlVHO19DT05TT0xFIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJCUJhc2lj
UnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iNSIKKwkJCQlVc2VQcmVjb21w
aWxlZEhlYWRlcj0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0
YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+
CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJ
CU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvZ3Rlc3RfdW5p
dHRlc3QuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiIKKwkJCQlHZW5lcmF0ZURlYnVnSW5m
b3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL2d0ZXN0
X3VuaXR0ZXN0LnBkYiIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIv
PgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9
IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRF
dmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJ
CQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJ
CQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJ
CU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNX
ZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVy
R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRX
cmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0
aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0
aW9uTmFtZSkvJChDb25maWd1cmF0aW9uTmFtZSkiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9
IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJ
Q2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIgorCQkJ
CVJ1bnRpbWVMaWJyYXJ5PSI0IgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIzIgorCQkJCVdh
cm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZBTFNF
IgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0i
VkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgor
CQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9ndGVzdF91bml0dGVzdC5leGUiCisJCQkJTGlua0lu
Y3JlbWVudGFsPSIxIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlT
dWJTeXN0ZW09IjEiCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIgorCQkJCUVuYWJsZUNPTURB
VEZvbGRpbmc9IjIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1l
PSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29s
Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29s
CisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZD
UmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNl
UHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVy
YXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgor
CQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJ
PFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIv
PgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4K
KwkJPFByb2plY3RSZWZlcmVuY2UKKwkJCVJlZmVyZW5jZWRQcm9qZWN0SWRlbnRpZmllcj0iezNB
RjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0iCisJCQlOYW1lPSJndGVzdF9tYWlu
Ii8+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNl
IEZpbGVzIgorCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNt
eCIKKwkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1
MkEyRkZ9Ij4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx0ZXN0XGd0ZXN0X3VuaXR0
ZXN0LmNjIj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIi
PgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCU9wdGlt
aXphdGlvbj0iMSIKKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4u
JnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiCisJCQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9
IjAiCisJCQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQkJCURlYnVnSW5mb3JtYXRp
b25Gb3JtYXQ9IjMiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
PSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1b3Q7IgorCQkJCQkJVXNlUHJlY29t
cGlsZWRIZWFkZXI9IjAiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgor
CQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJRmlsdGVy
PSJoO2hwcDtoeHg7aG07aW5sO2luYzt4c2QiCisJCQlVbmlxdWVJZGVudGlmaWVyPSJ7OTM5OTUz
ODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfSI+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+
CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvcnVuX3Rlc3RzLnB5IGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvcnVuX3Rlc3RzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBl
MTA4NDA1NmUyM2JkZDVjZmNmNDRmMDY3NmMxZDYyOGFlNjNkNzYxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3J1
bl90ZXN0cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLSMhL3Vzci9iaW4vZW52
IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3Ry
aWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlJ1bnMgdGhlIHNwZWNpZmllZCB0ZXN0cyBm
b3IgR29vZ2xlIFRlc3QuCi0KLVRoaXMgc2NyaXB0IHJlcXVpcmVzIFB5dGhvbiAyLjMgb3IgaGln
aGVyLiAgVG8gbGVhcm4gdGhlIHVzYWdlLCBydW4gaXQKLXdpdGggLWguCi0iIiIKLQotaW1wb3J0
IG9zCi1pbXBvcnQgc3lzCi0KLVNDUklQVF9ESVIgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18p
IG9yICcuJwotCi1zeXMucGF0aC5hcHBlbmQob3MucGF0aC5qb2luKFNDUklQVF9ESVIsICd0ZXN0
JykpCi1pbXBvcnQgcnVuX3Rlc3RzX3V0aWwKLQotCi1kZWYgX01haW4oKToKLSAgIiIiUnVucyBh
bGwgdGVzdHMgZm9yIEdvb2dsZSBUZXN0LiIiIgotCi0gIG9wdGlvbnMsIGFyZ3MgPSBydW5fdGVz
dHNfdXRpbC5QYXJzZUFyZ3MoJ2d0ZXN0JykKLSAgdGVzdF9ydW5uZXIgPSBydW5fdGVzdHNfdXRp
bC5UZXN0UnVubmVyKHNjcmlwdF9kaXI9U0NSSVBUX0RJUikKLSAgdGVzdHMgPSB0ZXN0X3J1bm5l
ci5HZXRUZXN0c1RvUnVuKGFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcHRpb25zLmNvbmZpZ3VyYXRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW9ucy5idWlsdF9jb25maWd1cmF0aW9ucykKLSAgaWYgbm90IHRlc3RzOgotICAg
IHN5cy5leGl0KDEpICAjIEluY29ycmVjdCBwYXJhbWV0ZXJzIGdpdmVuLCBhYm9ydCBleGVjdXRp
b24uCi0KLSAgc3lzLmV4aXQodGVzdF9ydW5uZXIuUnVuVGVzdHModGVzdHNbMF0sIHRlc3RzWzFd
KSkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgX01haW4oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MKaW5kZXgg
M2FkNmZkNjUzODI2MTdmN2Q2YjQwMWY0ZDFiZDgzZmM4NmVkODRmZS4uMDA1MWNkNWRjZDcxNTJl
Njg3YWE3ZWExMzkxMWI1ZGJiOWZhNjhhMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjCkBAIC0zNCw3ICszNCw3IEBACiAj
aW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KIAotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogdXNpbmcgOjp0ZXN0aW5nOjpF
bXB0eVRlc3RFdmVudExpc3RlbmVyOwogdXNpbmcgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdDsK
QEAgLTg5LDggKzg5LDcgQEAgY2xhc3MgTGVha0NoZWNrZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZl
bnRMaXN0ZW5lciB7CiAgICAgLy8gWW91IGNhbiBnZW5lcmF0ZSBhIGZhaWx1cmUgaW4gYW55IGV2
ZW50IGhhbmRsZXIgZXhjZXB0CiAgICAgLy8gT25UZXN0UGFydFJlc3VsdC4gSnVzdCB1c2UgYW4g
YXBwcm9wcmlhdGUgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIHRvIGRvCiAgICAgLy8gaXQuCi0gICAg
RVhQRUNUX1RSVUUoZGlmZmVyZW5jZSA8PSAwKQotICAgICAgICA8PCAiTGVha2VkICIgPDwgZGlm
ZmVyZW5jZSA8PCAiIHVuaXQocykgb2YgV2F0ZXIhIjsKKyAgICBFWFBFQ1RfTEUoZGlmZmVyZW5j
ZSwgMCkgPDwgIkxlYWtlZCAiIDw8IGRpZmZlcmVuY2UgPDwgIiB1bml0KHMpIG9mIFdhdGVyISI7
CiAgIH0KIAogICBpbnQgaW5pdGlhbGx5X2FsbG9jYXRlZF87CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QuY2MKaW5kZXggMDFlYjU0NjJm
ODFhZDU0YjM4YWM1ZWU2MzM3OTcyZWFhMDRkN2FkZS4uYWVmYzRmMWQ4NjZlODA5MzMyYTQ1Zjlh
MGUyMTkzYzZmNDViYWRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ft
cGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nh
bXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYwpAQCAtNDUsNyArNDUsNyBAQAogCiAjaW5jbHVkZSA8
bGltaXRzLmg+CiAjaW5jbHVkZSAic2FtcGxlMS5oIgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogCiAvLyBTdGVwIDIuIFVzZSB0aGUgVEVTVCBt
YWNybyB0byBkZWZpbmUgeW91ciB0ZXN0cy4KQEAgLTgxLDcgKzgxLDcgQEAgVEVTVChGYWN0b3Jp
YWxUZXN0LCBOZWdhdGl2ZSkgewogICAvLyB0ZXN0IGNhc2UuCiAgIEVYUEVDVF9FUSgxLCBGYWN0
b3JpYWwoLTUpKTsKICAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgtMSkpOwotICBFWFBFQ1RfVFJV
RShGYWN0b3JpYWwoLTEwKSA+IDApOworICBFWFBFQ1RfR1QoRmFjdG9yaWFsKC0xMCksIDApOwog
CiAgIC8vIDxUZWNobmljYWxEZXRhaWxzPgogICAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9z
YW1wbGVzL3NhbXBsZTIuaAppbmRleCA1YjU3ZTYwODJmYTRmNmI3MjRiZmI1ODI2ODdiZmUwYTYz
MTlmMmE3Li5jYjQ4NWM3MGZiMzNhZDdkODQwNWY2NmE4YTI3NDQxMmRlMDQ4NTI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTIuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTIuaApAQCAtNDQsNyArNDQsNiBAQCBj
bGFzcyBNeVN0cmluZyB7CiAgIGNvbnN0IE15U3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgTXlTdHJp
bmcmIHJocyk7CiAKICBwdWJsaWM6Ci0KICAgLy8gQ2xvbmVzIGEgMC10ZXJtaW5hdGVkIEMgc3Ry
aW5nLCBhbGxvY2F0aW5nIG1lbW9yeSB1c2luZyBuZXcuCiAgIHN0YXRpYyBjb25zdCBjaGFyKiBD
bG9uZUNTdHJpbmcoY29uc3QgY2hhciogYV9jX3N0cmluZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYwppbmRleCAzMjIzMmQ5
OGMwYmQyNTQ4MjFjOGY2OTFhNmI4NTVmMWYxNjE2ZmI4Li40ZmExOWI3MWM3OTJhNGM2YzlkNjkw
MzExNjEwMDI4M2IwMTIwYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9z
YW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0LmNjCkBAIC00MSw3ICs0MSw3IEBACiAvLyBuZWVkZWQu
CiAKICNpbmNsdWRlICJzYW1wbGUyLmgiCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgogCiAvLyBJbiB0aGlzIGV4YW1wbGUsIHdlIHRlc3QgdGhlIE15
U3RyaW5nIGNsYXNzIChhIHNpbXBsZSBzdHJpbmcpLgogCkBAIC03OSw3ICs3OSw3IEBAIGNvbnN0
IGNoYXIga0hlbGxvU3RyaW5nW10gPSAiSGVsbG8sIHdvcmxkISI7CiAvLyBUZXN0cyB0aGUgYyd0
b3IgdGhhdCBhY2NlcHRzIGEgQyBzdHJpbmcuCiBURVNUKE15U3RyaW5nLCBDb25zdHJ1Y3RvckZy
b21DU3RyaW5nKSB7CiAgIGNvbnN0IE15U3RyaW5nIHMoa0hlbGxvU3RyaW5nKTsKLSAgRVhQRUNU
X1RSVUUoc3RyY21wKHMuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSA9PSAwKTsKKyAgRVhQRUNU
X0VRKDAsIHN0cmNtcChzLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykpOwogICBFWFBFQ1RfRVEo
c2l6ZW9mKGtIZWxsb1N0cmluZykvc2l6ZW9mKGtIZWxsb1N0cmluZ1swXSkgLSAxLAogICAgICAg
ICAgICAgcy5MZW5ndGgoKSk7CiB9CkBAIC04OCw3ICs4OCw3IEBAIFRFU1QoTXlTdHJpbmcsIENv
bnN0cnVjdG9yRnJvbUNTdHJpbmcpIHsKIFRFU1QoTXlTdHJpbmcsIENvcHlDb25zdHJ1Y3Rvcikg
ewogICBjb25zdCBNeVN0cmluZyBzMShrSGVsbG9TdHJpbmcpOwogICBjb25zdCBNeVN0cmluZyBz
MiA9IHMxOwotICBFWFBFQ1RfVFJVRShzdHJjbXAoczIuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5n
KSA9PSAwKTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzMi5jX3N0cmluZygpLCBrSGVsbG9TdHJp
bmcpKTsKIH0KIAogLy8gVGVzdHMgdGhlIFNldCBtZXRob2QuCkBAIC05NiwxMiArOTYsMTIgQEAg
VEVTVChNeVN0cmluZywgU2V0KSB7CiAgIE15U3RyaW5nIHM7CiAKICAgcy5TZXQoa0hlbGxvU3Ry
aW5nKTsKLSAgRVhQRUNUX1RSVUUoc3RyY21wKHMuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSA9
PSAwKTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykp
OwogCiAgIC8vIFNldCBzaG91bGQgd29yayB3aGVuIHRoZSBpbnB1dCBwb2ludGVyIGlzIHRoZSBz
YW1lIGFzIHRoZSBvbmUKICAgLy8gYWxyZWFkeSBpbiB0aGUgTXlTdHJpbmcgb2JqZWN0LgogICBz
LlNldChzLmNfc3RyaW5nKCkpOwotICBFWFBFQ1RfVFJVRShzdHJjbXAocy5jX3N0cmluZygpLCBr
SGVsbG9TdHJpbmcpID09IDApOworICBFWFBFQ1RfRVEoMCwgc3RyY21wKHMuY19zdHJpbmcoKSwg
a0hlbGxvU3RyaW5nKSk7CiAKICAgLy8gQ2FuIHdlIHNldCB0aGUgTXlTdHJpbmcgdG8gTlVMTD8K
ICAgcy5TZXQoTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1w
bGVzL3NhbXBsZTMtaW5sLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBs
ZTMtaW5sLmgKaW5kZXggNDYzNjlhMDc2ZDg1YzQxMTQyM2FjYWE5OGRkNDU1ZTU1OWVkMzAwYS4u
N2UzMDg0ZDYzODVkZjg5N2ZlNTkyNDhmNDk2YmJjOTFhMTc2ODk1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzLWlubC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMy1pbmwuaApAQCAtNjAsNyArNjAsNyBAQCBj
bGFzcyBRdWV1ZU5vZGUgewogIHByaXZhdGU6CiAgIC8vIENyZWF0ZXMgYSBub2RlIHdpdGggYSBn
aXZlbiBlbGVtZW50IHZhbHVlLiAgVGhlIG5leHQgcG9pbnRlciBpcwogICAvLyBzZXQgdG8gTlVM
TC4KLSAgUXVldWVOb2RlKGNvbnN0IEUmIGFuX2VsZW1lbnQpIDogZWxlbWVudF8oYW5fZWxlbWVu
dCksIG5leHRfKE5VTEwpIHt9CisgIGV4cGxpY2l0IFF1ZXVlTm9kZShjb25zdCBFJiBhbl9lbGVt
ZW50KSA6IGVsZW1lbnRfKGFuX2VsZW1lbnQpLCBuZXh0XyhOVUxMKSB7fQogCiAgIC8vIFdlIGRp
c2FibGUgdGhlIGRlZmF1bHQgYXNzaWdubWVudCBvcGVyYXRvciBhbmQgY29weSBjJ3Rvci4KICAg
Y29uc3QgUXVldWVOb2RlJiBvcGVyYXRvciA9IChjb25zdCBRdWV1ZU5vZGUmKTsKQEAgLTcyLDgg
KzcyLDcgQEAgY2xhc3MgUXVldWVOb2RlIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEU+ICAvLyBF
IGlzIHRoZSBlbGVtZW50IHR5cGUuCiBjbGFzcyBRdWV1ZSB7Ci1wdWJsaWM6Ci0KKyBwdWJsaWM6
CiAgIC8vIENyZWF0ZXMgYW4gZW1wdHkgcXVldWUuCiAgIFF1ZXVlKCkgOiBoZWFkXyhOVUxMKSwg
bGFzdF8oTlVMTCksIHNpemVfKDApIHt9CiAKQEAgLTE2OCw2ICsxNjcsNiBAQCBjbGFzcyBRdWV1
ZSB7CiAgIC8vIFdlIGRpc2FsbG93IGNvcHlpbmcgYSBxdWV1ZS4KICAgUXVldWUoY29uc3QgUXVl
dWUmKTsKICAgY29uc3QgUXVldWUmIG9wZXJhdG9yID0gKGNvbnN0IFF1ZXVlJik7Ci0gfTsKK307
CiAKICNlbmRpZiAgLy8gR1RFU1RfU0FNUExFU19TQU1QTEUzX0lOTF9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjCmluZGV4IDM0
YzFjYTg2NTZlYWI1NjQxODE1NjBkYmYxNDlkMGEyYWE5MmNjMWQuLmJmMzg3N2QwMTMyMzQ1YjE4
OWVkNWViYTczZDIwMWJlYzU2ZjhkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MKQEAgLTY0LDcgKzY0LDcgQEAKIC8vIDwv
VGVjaG5pY2FsRGV0YWlscz4KIAogI2luY2x1ZGUgInNhbXBsZTMtaW5sLmgiCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAvLyBUbyB1c2UgYSB0
ZXN0IGZpeHR1cmUsIGRlcml2ZSBhIGNsYXNzIGZyb20gdGVzdGluZzo6VGVzdC4KIGNsYXNzIFF1
ZXVlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNF91bml0dGVzdC5jYwppbmRleCBiNGZiMzczNmFiYmZm
ODNmNzlhZjQ0N2NhNGJjNmI5MTA1ODY5MzJlLi5mYTVhZmM3ZDVhMTY4NmIwOTg4OWJmMDdiY2Fj
ZjU4MTY3NzEwMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVz
L3NhbXBsZTRfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxl
cy9zYW1wbGU0X3VuaXR0ZXN0LmNjCkBAIC0yOSw3ICsyOSw3IEBACiAvLwogLy8gQXV0aG9yOiB3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
KyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgInNhbXBsZTQuaCIKIAogLy8gVGVz
dHMgdGhlIEluY3JlbWVudCgpIG1ldGhvZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYwppbmRleCA0OWRhZTdjNjlmYTc2ZThhNDg2
MDc3MDZiNGExNjJjNjQyZjBhMDg1Li40M2Q4ZTU3Nzc1ODNlYzRiZTAxMDg5Yzk5Nzk1YjkwYjcz
ZWY0ZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBs
ZTVfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1w
bGU1X3VuaXR0ZXN0LmNjCkBAIC00Nyw3ICs0Nyw3IEBACiAjaW5jbHVkZSA8bGltaXRzLmg+CiAj
aW5jbHVkZSA8dGltZS5oPgogI2luY2x1ZGUgInNhbXBsZTMtaW5sLmgiCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgInNhbXBsZTEu
aCIKIAogLy8gSW4gdGhpcyBzYW1wbGUsIHdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgZXZlcnkgdGVz
dCBmaW5pc2hlcyB3aXRoaW4KQEAgLTEwMSw3ICsxMDEsNyBAQCBURVNUX0YoSW50ZWdlckZ1bmN0
aW9uVGVzdCwgRmFjdG9yaWFsKSB7CiAgIC8vIFRlc3RzIGZhY3RvcmlhbCBvZiBuZWdhdGl2ZSBu
dW1iZXJzLgogICBFWFBFQ1RfRVEoMSwgRmFjdG9yaWFsKC01KSk7CiAgIEVYUEVDVF9FUSgxLCBG
YWN0b3JpYWwoLTEpKTsKLSAgRVhQRUNUX1RSVUUoRmFjdG9yaWFsKC0xMCkgPiAwKTsKKyAgRVhQ
RUNUX0dUKEZhY3RvcmlhbCgtMTApLCAwKTsKIAogICAvLyBUZXN0cyBmYWN0b3JpYWwgb2YgMC4K
ICAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgwKSk7CkBAIC0xMTcsMjAgKzExNywyMCBAQCBURVNU
X0YoSW50ZWdlckZ1bmN0aW9uVGVzdCwgRmFjdG9yaWFsKSB7CiAvLyBUZXN0cyBJc1ByaW1lKCkK
IFRFU1RfRihJbnRlZ2VyRnVuY3Rpb25UZXN0LCBJc1ByaW1lKSB7CiAgIC8vIFRlc3RzIG5lZ2F0
aXZlIGlucHV0LgotICBFWFBFQ1RfVFJVRSghSXNQcmltZSgtMSkpOwotICBFWFBFQ1RfVFJVRSgh
SXNQcmltZSgtMikpOwotICBFWFBFQ1RfVFJVRSghSXNQcmltZShJTlRfTUlOKSk7CisgIEVYUEVD
VF9GQUxTRShJc1ByaW1lKC0xKSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKC0yKSk7CisgIEVY
UEVDVF9GQUxTRShJc1ByaW1lKElOVF9NSU4pKTsKIAogICAvLyBUZXN0cyBzb21lIHRyaXZpYWwg
Y2FzZXMuCi0gIEVYUEVDVF9UUlVFKCFJc1ByaW1lKDApKTsKLSAgRVhQRUNUX1RSVUUoIUlzUHJp
bWUoMSkpOworICBFWFBFQ1RfRkFMU0UoSXNQcmltZSgwKSk7CisgIEVYUEVDVF9GQUxTRShJc1By
aW1lKDEpKTsKICAgRVhQRUNUX1RSVUUoSXNQcmltZSgyKSk7CiAgIEVYUEVDVF9UUlVFKElzUHJp
bWUoMykpOwogCiAgIC8vIFRlc3RzIHBvc2l0aXZlIGlucHV0LgotICBFWFBFQ1RfVFJVRSghSXNQ
cmltZSg0KSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKDQpKTsKICAgRVhQRUNUX1RSVUUoSXNQ
cmltZSg1KSk7Ci0gIEVYUEVDVF9UUlVFKCFJc1ByaW1lKDYpKTsKKyAgRVhQRUNUX0ZBTFNFKElz
UHJpbWUoNikpOwogICBFWFBFQ1RfVFJVRShJc1ByaW1lKDIzKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYwppbmRleCBk
ZDBkZjMxZjBiYjdjYmYyNjE2MDczNDJlODY0MDRkNzVhODUzNDNlLi44ZjIwMzZhNTE2MDgwYmE3
MzkwNGFlMzZkYmYyYWU2MDU1M2E2ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjCkBAIC0zNSw3ICszNSw3IEBACiAvLyBU
aGUgaW50ZXJmYWNlIGFuZCBpdHMgaW1wbGVtZW50YXRpb25zIGFyZSBpbiB0aGlzIGhlYWRlci4K
ICNpbmNsdWRlICJwcmltZV90YWJsZXMuaCIKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Cisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogLy8gRmlyc3QsIHdlIGRlZmluZSBzb21lIGZhY3Rv
cnkgZnVuY3Rpb25zIGZvciBjcmVhdGluZyBpbnN0YW5jZXMgb2YKIC8vIHRoZSBpbXBsZW1lbnRh
dGlvbnMuICBZb3UgbWF5IGJlIGFibGUgdG8gc2tpcCB0aGlzIHN0ZXAgaWYgYWxsIHlvdXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlN191bml0dGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlN191bml0dGVzdC5j
YwppbmRleCBmNDU1MjgyN2VkOWI4MzA2Y2RkMzE5YWE1N2YzZWQwNjc2MmI0ZjVmLi4xYjY1MWEy
MWQ2NDkyZjAyZWM2YzMwMGNmNmE3ZWFkZDVkNDdmYzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU3X3VuaXR0ZXN0LmNjCkBAIC0zOCwxOSArMzgs
MTggQEAKIC8vIFRoZSBpbnRlcmZhY2UgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbnMgYXJlIGluIHRo
aXMgaGVhZGVyLgogI2luY2x1ZGUgInByaW1lX3RhYmxlcy5oIgogCi0jaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAjaWYgR1RFU1RfSEFTX1BBUkFN
X1RFU1QKIAogdXNpbmcgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtOwogdXNpbmcgOjp0ZXN0aW5n
OjpWYWx1ZXM7CiAKLS8vIEFzIGEgZ2VuZXJhbCBydWxlLCB0ZXN0ZWQgb2JqZWN0cyBzaG91bGQg
bm90IGJlIHJldXNlZCBiZXR3ZWVuIHRlc3RzLgotLy8gQWxzbywgdGhlaXIgY29uc3RydWN0b3Jz
IGFuZCBkZXN0cnVjdG9ycyBvZiB0ZXN0ZWQgb2JqZWN0cyBjYW4gaGF2ZQotLy8gc2lkZSBlZmZl
Y3RzLiBUaHVzIHlvdSBzaG91bGQgY3JlYXRlIGFuZCBkZXN0cm95IHRoZW0gZm9yIGVhY2ggdGVz
dC4KLS8vIEluIHRoaXMgc2FtcGxlIHdlIHdpbGwgZGVmaW5lIGEgc2ltcGxlIGZhY3RvcnkgZnVu
Y3Rpb24gZm9yIFByaW1lVGFibGUKLS8vIG9iamVjdHMuIFdlIHdpbGwgaW5zdGFudGlhdGUgb2Jq
ZWN0cyBpbiB0ZXN0J3MgU2V0VXAoKSBtZXRob2QgYW5kCi0vLyBkZWxldGUgdGhlbSBpbiBUZWFy
RG93bigpIG1ldGhvZC4KKy8vIEFzIGEgZ2VuZXJhbCBydWxlLCB0byBwcmV2ZW50IGEgdGVzdCBm
cm9tIGFmZmVjdGluZyB0aGUgdGVzdHMgdGhhdCBjb21lCisvLyBhZnRlciBpdCwgeW91IHNob3Vs
ZCBjcmVhdGUgYW5kIGRlc3Ryb3kgdGhlIHRlc3RlZCBvYmplY3RzIGZvciBlYWNoIHRlc3QKKy8v
IGluc3RlYWQgb2YgcmV1c2luZyB0aGVtLiAgSW4gdGhpcyBzYW1wbGUgd2Ugd2lsbCBkZWZpbmUg
YSBzaW1wbGUgZmFjdG9yeQorLy8gZnVuY3Rpb24gZm9yIFByaW1lVGFibGUgb2JqZWN0cy4gIFdl
IHdpbGwgaW5zdGFudGlhdGUgb2JqZWN0cyBpbiB0ZXN0J3MKKy8vIFNldFVwKCkgbWV0aG9kIGFu
ZCBkZWxldGUgdGhlbSBpbiBUZWFyRG93bigpIG1ldGhvZC4KIHR5cGVkZWYgUHJpbWVUYWJsZSog
Q3JlYXRlUHJpbWVUYWJsZUZ1bmMoKTsKIAogUHJpbWVUYWJsZSogQ3JlYXRlT25UaGVGbHlQcmlt
ZVRhYmxlKCkgewpAQCAtNjIsMTEgKzYxLDEwIEBAIFByaW1lVGFibGUqIENyZWF0ZVByZUNhbGN1
bGF0ZWRQcmltZVRhYmxlKCkgewogICByZXR1cm4gbmV3IFByZUNhbGN1bGF0ZWRQcmltZVRhYmxl
KG1heF9wcmVjYWxjdWxhdGVkKTsKIH0KIAotLy8gSW5zaWRlIHRoZSB0ZXN0IGJvZHksIGZpeHR1
cmUgY29uc3RydWN0b3IsIFNldFVwKCksIGFuZCBUZWFyRG93bigpCi0vLyB5b3UgY2FuIHJlZmVy
IHRvIHRoZSB0ZXN0IHBhcmFtZXRlciBieSBHZXRQYXJhbSgpLgotLy8gSW4gdGhpcyBjYXNlLCB0
aGUgdGVzdCBwYXJhbWV0ZXIgaXMgYSBQcmltZVRhYmxlRmFjdG9yeSBpbnRlcmZhY2UgcG9pbnRl
cgotLy8gd2hpY2ggd2UgdXNlIGluIGZpeHR1cmUncyBTZXRVcCgpIHRvIGNyZWF0ZSBhbmQgc3Rv
cmUgYW4gaW5zdGFuY2Ugb2YKLS8vIFByaW1lVGFibGUuCisvLyBJbnNpZGUgdGhlIHRlc3QgYm9k
eSwgZml4dHVyZSBjb25zdHJ1Y3RvciwgU2V0VXAoKSwgYW5kIFRlYXJEb3duKCkgeW91CisvLyBj
YW4gcmVmZXIgdG8gdGhlIHRlc3QgcGFyYW1ldGVyIGJ5IEdldFBhcmFtKCkuICBJbiB0aGlzIGNh
c2UsIHRoZSB0ZXN0CisvLyBwYXJhbWV0ZXIgaXMgYSBmYWN0b3J5IGZ1bmN0aW9uIHdoaWNoIHdl
IGNhbGwgaW4gZml4dHVyZSdzIFNldFVwKCkgdG8KKy8vIGNyZWF0ZSBhbmQgc3RvcmUgYW4gaW5z
dGFuY2Ugb2YgUHJpbWVUYWJsZS4KIGNsYXNzIFByaW1lVGFibGVUZXN0IDogcHVibGljIFRlc3RX
aXRoUGFyYW08Q3JlYXRlUHJpbWVUYWJsZUZ1bmMqPiB7CiAgcHVibGljOgogICB2aXJ0dWFsIH5Q
cmltZVRhYmxlVGVzdCgpIHsgZGVsZXRlIHRhYmxlXzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjCmluZGV4IGNjZjYxZDkyYjg1
YzMxMmY3ZjJlYzJmNmQ4YTY3M2RmZjRiMDJkNjYuLjcyNzQzMzQwNjc0ODg4NTEyZmMzODYwOGMx
MzhhNDBmOWFhMzJkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBs
ZXMvc2FtcGxlOF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1w
bGVzL3NhbXBsZThfdW5pdHRlc3QuY2MKQEAgLTM2LDcgKzM2LDcgQEAKIC8vIFVzZSBjbGFzcyBk
ZWZpbml0aW9ucyB0byB0ZXN0IGZyb20gdGhpcyBoZWFkZXIuCiAjaW5jbHVkZSAicHJpbWVfdGFi
bGVzLmgiCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCiAKICNpZiBHVEVTVF9IQVNfQ09NQklORQogCkBAIC05MCw3ICs5MCw3IEBAIHVzaW5nIDo6
dGVzdGluZzo6Q29tYmluZTsKIC8vIFByZUNhbGN1bGF0ZWRQcmltZVRhYmxlIGRpc2FibGVkLiBX
ZSBkbyB0aGlzIGJ5IGRlZmluaW5nIGZpeHR1cmUgd2hpY2ggd2lsbAogLy8gYWNjZXB0IGRpZmZl
cmVudCBjb21iaW5hdGlvbnMgb2YgcGFyYW1ldGVycyBmb3IgaW5zdGFudGlhdGluZyBhCiAvLyBI
eWJyaWRQcmltZVRhYmxlIGluc3RhbmNlLgotY2xhc3MgUHJpbWVUYWJsZVRlc3QgOiBwdWJsaWMg
VGVzdFdpdGhQYXJhbTwgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50PiA+IHsKK2NsYXNzIFBy
aW1lVGFibGVUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08IDo6dGVzdGluZzo6dHVwbGU8Ym9v
bCwgaW50PiA+IHsKICBwcm90ZWN0ZWQ6CiAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKICAgICAv
LyBUaGlzIGNhbiBiZSB3cml0dGVuIGFzCkBAIC0xMDEsOCArMTAxLDggQEAgY2xhc3MgUHJpbWVU
YWJsZVRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTwgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwg
aW50PiA+IHsKICAgICAvLwogICAgIC8vIG9uY2UgdGhlIEdvb2dsZSBDKysgU3R5bGUgR3VpZGUg
YWxsb3dzIHVzZSBvZiA6OnN0ZDo6dHIxOjp0aWUuCiAgICAgLy8KLSAgICBib29sIGZvcmNlX29u
X3RoZV9mbHkgPSA6OnN0ZDo6dHIxOjpnZXQ8MD4oR2V0UGFyYW0oKSk7Ci0gICAgaW50IG1heF9w
cmVjYWxjdWxhdGVkID0gOjpzdGQ6OnRyMTo6Z2V0PDE+KEdldFBhcmFtKCkpOworICAgIGJvb2wg
Zm9yY2Vfb25fdGhlX2ZseSA9IDo6dGVzdGluZzo6Z2V0PDA+KEdldFBhcmFtKCkpOworICAgIGlu
dCBtYXhfcHJlY2FsY3VsYXRlZCA9IDo6dGVzdGluZzo6Z2V0PDE+KEdldFBhcmFtKCkpOwogICAg
IHRhYmxlXyA9IG5ldyBIeWJyaWRQcmltZVRhYmxlKGZvcmNlX29uX3RoZV9mbHksIG1heF9wcmVj
YWxjdWxhdGVkKTsKICAgfQogICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MKaW5kZXgg
ZDgyOGVmNGQ4NmI3NDZiMjU2OTdiZGQ0NmQyMTAwYTQ0NjE0MmQzMS4uYjJlMjA3OWJmM2IzZGUy
YjA0NWI5YTgwZDdlN2M3YmRhYjljODlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYwpAQCAtMzQsNyArMzQsNyBAQAogCiAj
aW5jbHVkZSA8c3RkaW8uaD4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKIAogdXNpbmcgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVy
OwogdXNpbmcgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdDsKQEAgLTY5LDcgKzY5LDcgQEAgY2xh
c3MgVGVyc2VQcmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewogICAgIGZm
bHVzaChzdGRvdXQpOwogICB9CiAKLSAgLy8gQ2FsbGVkIGFmdGVyIGEgZmFpbGVkIGFzc2VydGlv
biBvciBhIFNVQ0NFU1MoKS4KKyAgLy8gQ2FsbGVkIGFmdGVyIGEgZmFpbGVkIGFzc2VydGlvbiBv
ciBhIFNVQ0NFRUQoKSBpbnZvY2F0aW9uLgogICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJlc3Vs
dChjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgewogICAgIGZwcmludGYo
c3Rkb3V0LAogICAgICAgICAgICAgIiVzIGluICVzOiVkXG4lc1xuIiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvY29tbW9uLnB5IGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc2NyaXB0cy9jb21tb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MwMzQ3YTc1YmRmZjMxODgw
OTc3NDUwMTVhNTgwMzc2NGFkNzQxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3NjcmlwdHMvY29tbW9uLnB5CkBAIC0wLDAgKzEsODMgQEAKKyMgQ29weXJpZ2h0
IDIwMTMgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyIiIlNoYXJlZCB1dGlsaXRpZXMgZm9yIHdyaXRpbmcgc2NyaXB0cyBmb3IgR29vZ2xlIFRl
c3QvTW9jay4iIiIKKworX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KScKKworCitpbXBvcnQgb3MKK2ltcG9ydCByZQorCisKKyMgTWF0Y2hlcyB0aGUgbGluZSBmcm9t
ICdzdm4gaW5mbyAuJyBvdXRwdXQgdGhhdCBkZXNjcmliZXMgd2hhdCBTVk4KKyMgcGF0aCB0aGUg
Y3VycmVudCBsb2NhbCBkaXJlY3RvcnkgY29ycmVzcG9uZHMgdG8uICBGb3IgZXhhbXBsZSwgaW4K
KyMgYSBnb29nbGV0ZXN0IFNWTiB3b3Jrc3BhY2UncyB0cnVuay90ZXN0IGRpcmVjdG9yeSwgdGhl
IG91dHB1dCB3aWxsIGJlOgorIworIyBVUkw6IGh0dHBzOi8vZ29vZ2xldGVzdC5nb29nbGVjb2Rl
LmNvbS9zdm4vdHJ1bmsvdGVzdAorX1NWTl9JTkZPX1VSTF9SRSA9IHJlLmNvbXBpbGUocideVVJM
OiBodHRwczovLyhcdyspXC5nb29nbGVjb2RlXC5jb20vc3ZuKC4qKScpCisKKworZGVmIEdldENv
bW1hbmRPdXRwdXQoY29tbWFuZCk6CisgICIiIlJ1bnMgdGhlIHNoZWxsIGNvbW1hbmQgYW5kIHJl
dHVybnMgaXRzIHN0ZG91dCBhcyBhIGxpc3Qgb2YgbGluZXMuIiIiCisKKyAgZiA9IG9zLnBvcGVu
KGNvbW1hbmQsICdyJykKKyAgbGluZXMgPSBbbGluZS5zdHJpcCgpIGZvciBsaW5lIGluIGYucmVh
ZGxpbmVzKCldCisgIGYuY2xvc2UoKQorICByZXR1cm4gbGluZXMKKworCitkZWYgR2V0U3ZuSW5m
bygpOgorICAiIiJSZXR1cm5zIHRoZSBwcm9qZWN0IG5hbWUgYW5kIHRoZSBjdXJyZW50IFNWTiB3
b3Jrc3BhY2UncyByb290IHBhdGguIiIiCisKKyAgZm9yIGxpbmUgaW4gR2V0Q29tbWFuZE91dHB1
dCgnc3ZuIGluZm8gLicpOgorICAgIG0gPSBfU1ZOX0lORk9fVVJMX1JFLm1hdGNoKGxpbmUpCisg
ICAgaWYgbToKKyAgICAgIHByb2plY3QgPSBtLmdyb3VwKDEpICAjIGdvb2dsZXRlc3Qgb3IgZ29v
Z2xlbW9jaworICAgICAgcmVsX3BhdGggPSBtLmdyb3VwKDIpCisgICAgICByb290ID0gb3MucGF0
aC5yZWFscGF0aChyZWxfcGF0aC5jb3VudCgnLycpICogJy4uLycpCisgICAgICByZXR1cm4gcHJv
amVjdCwgcm9vdAorCisgIHJldHVybiBOb25lLCBOb25lCisKKworZGVmIEdldFN2blRydW5rKCk6
CisgICIiIlJldHVybnMgdGhlIGN1cnJlbnQgU1ZOIHdvcmtzcGFjZSdzIHRydW5rIHJvb3QgcGF0
aC4iIiIKKworICBfLCByb290ID0gR2V0U3ZuSW5mbygpCisgIHJldHVybiByb290ICsgJy90cnVu
aycgaWYgcm9vdCBlbHNlIE5vbmUKKworCitkZWYgSXNJbkdUZXN0U3ZuKCk6CisgIHByb2plY3Qs
IF8gPSBHZXRTdm5JbmZvKCkKKyAgcmV0dXJuIHByb2plY3QgPT0gJ2dvb2dsZXRlc3QnCisKKwor
ZGVmIElzSW5HTW9ja1N2bigpOgorICBwcm9qZWN0LCBfID0gR2V0U3ZuSW5mbygpCisgIHJldHVy
biBwcm9qZWN0ID09ICdnb29nbGVtb2NrJwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2NyaXB0cy9mdXNlX2d0ZXN0X2ZpbGVzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2NyaXB0cy9mdXNlX2d0ZXN0X2ZpbGVzLnB5CmluZGV4IDE0ODQ0NGNhNzExYjFlZGFhYWZl
YThkNzgyNmQzY2ZkNGMwMWRlMGIuLjNmM2U5ZjM2ZDYxYjNiN2NhNzJmZTY5M2U1NTA4MTA2Yjdj
YmY3NjIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvZnVzZV9n
dGVzdF9maWxlcy5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2Z1c2Vf
Z3Rlc3RfZmlsZXMucHkKQEAgLTYwLDE1ICs2MCwxOCBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCBy
ZQotaW1wb3J0IHNldHMKK3RyeToKKyAgZnJvbSBzZXRzIGltcG9ydCBTZXQgYXMgc2V0ICAjIEZv
ciBQeXRob24gMi4zIGNvbXBhdGliaWxpdHkKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgcGFzcwog
aW1wb3J0IHN5cwogCiAjIFdlIGFzc3VtZSB0aGF0IHRoaXMgZmlsZSBpcyBpbiB0aGUgc2NyaXB0
cy8gZGlyZWN0b3J5IGluIHRoZSBHb29nbGUKICMgVGVzdCByb290IGRpcmVjdG9yeS4KIERFRkFV
TFRfR1RFU1RfUk9PVF9ESVIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9f
KSwgJy4uJykKIAotIyBSZWdleCBmb3IgbWF0Y2hpbmcgJyNpbmNsdWRlIDxndGVzdC8uLi4+Jy4K
LUlOQ0xVREVfR1RFU1RfRklMRV9SRUdFWCA9IHJlLmNvbXBpbGUocideXHMqI1xzKmluY2x1ZGVc
cyo8KGd0ZXN0Ly4rKT4nKQorIyBSZWdleCBmb3IgbWF0Y2hpbmcgJyNpbmNsdWRlICJndGVzdC8u
Li4iJy4KK0lOQ0xVREVfR1RFU1RfRklMRV9SRUdFWCA9IHJlLmNvbXBpbGUocideXHMqI1xzKmlu
Y2x1ZGVccyoiKGd0ZXN0Ly4rKSInKQogCiAjIFJlZ2V4IGZvciBtYXRjaGluZyAnI2luY2x1ZGUg
InNyYy8uLi4iJy4KIElOQ0xVREVfU1JDX0ZJTEVfUkVHRVggPSByZS5jb21waWxlKHInXlxzKiNc
cyppbmNsdWRlXHMqIihzcmMvLispIicpCkBAIC05MCwxMCArOTMsMTAgQEAgZGVmIFZlcmlmeUZp
bGVFeGlzdHMoZGlyZWN0b3J5LCByZWxhdGl2ZV9wYXRoKToKICAgIiIiCiAKICAgaWYgbm90IG9z
LnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkaXJlY3RvcnksIHJlbGF0aXZlX3BhdGgpKToKLSAg
ICBwcmludCAnRVJST1I6IENhbm5vdCBmaW5kICVzIGluIGRpcmVjdG9yeSAlcy4nICUgKHJlbGF0
aXZlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaXJlY3RvcnkpCi0gICAgcHJpbnQgKCdQbGVhc2UgZWl0aGVyIHNwZWNpZnkgYSB2
YWxpZCBwcm9qZWN0IHJvb3QgZGlyZWN0b3J5ICcKLSAgICAgICAgICAgJ29yIG9taXQgaXQgb24g
dGhlIGNvbW1hbmQgbGluZS4nKQorICAgIHByaW50KCdFUlJPUjogQ2Fubm90IGZpbmQgJXMgaW4g
ZGlyZWN0b3J5ICVzLicgJSAocmVsYXRpdmVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSkpCisgICAgcHJpbnQoJ1Bs
ZWFzZSBlaXRoZXIgc3BlY2lmeSBhIHZhbGlkIHByb2plY3Qgcm9vdCBkaXJlY3RvcnkgJworICAg
ICAgICAgICdvciBvbWl0IGl0IG9uIHRoZSBjb21tYW5kIGxpbmUuJykKICAgICBzeXMuZXhpdCgx
KQogCiAKQEAgLTExOSwxMSArMTIyLDExIEBAIGRlZiBWZXJpZnlPdXRwdXRGaWxlKG91dHB1dF9k
aXIsIHJlbGF0aXZlX3BhdGgpOgogICAgICMgVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IFRoZSBmb2xs
b3dpbmcgdXNlci1pbnRlcmFjdGlvbiBkb2Vzbid0CiAgICAgIyB3b3JrIHdpdGggYXV0b21hdGVk
IHByb2Nlc3Nlcy4gIFdlIHNob3VsZCBwcm92aWRlIGEgd2F5IGZvciB0aGUKICAgICAjIE1ha2Vm
aWxlIHRvIGZvcmNlIG92ZXJ3cml0aW5nIHRoZSBmaWxlcy4KLSAgICBwcmludCAoJyVzIGFscmVh
ZHkgZXhpc3RzIGluIGRpcmVjdG9yeSAlcyAtIG92ZXJ3cml0ZSBpdD8gKHkvTikgJyAlCi0gICAg
ICAgICAgIChyZWxhdGl2ZV9wYXRoLCBvdXRwdXRfZGlyKSkKKyAgICBwcmludCgnJXMgYWxyZWFk
eSBleGlzdHMgaW4gZGlyZWN0b3J5ICVzIC0gb3ZlcndyaXRlIGl0PyAoeS9OKSAnICUKKyAgICAg
ICAgICAocmVsYXRpdmVfcGF0aCwgb3V0cHV0X2RpcikpCiAgICAgYW5zd2VyID0gc3lzLnN0ZGlu
LnJlYWRsaW5lKCkuc3RyaXAoKQogICAgIGlmIGFuc3dlciBub3QgaW4gWyd5JywgJ1knXToKLSAg
ICAgIHByaW50ICdBQk9SVEVELicKKyAgICAgIHByaW50KCdBQk9SVEVELicpCiAgICAgICBzeXMu
ZXhpdCgxKQogCiAgICMgTWFrZXMgc3VyZSB0aGUgZGlyZWN0b3J5IGhvbGRpbmcgdGhlIG91dHB1
dCBmaWxlIGV4aXN0czsgY3JlYXRlcwpAQCAtMTQ2LDggKzE0OSw4IEBAIGRlZiBWYWxpZGF0ZU91
dHB1dERpcihvdXRwdXRfZGlyKToKIGRlZiBGdXNlR1Rlc3RIKGd0ZXN0X3Jvb3QsIG91dHB1dF9k
aXIpOgogICAiIiJTY2FucyBmb2xkZXIgZ3Rlc3Rfcm9vdCB0byBnZW5lcmF0ZSBndGVzdC9ndGVz
dC5oIGluIG91dHB1dF9kaXIuIiIiCiAKLSAgb3V0cHV0X2ZpbGUgPSBmaWxlKG9zLnBhdGguam9p
bihvdXRwdXRfZGlyLCBHVEVTVF9IX09VVFBVVCksICd3JykKLSAgcHJvY2Vzc2VkX2ZpbGVzID0g
c2V0cy5TZXQoKSAgIyBIb2xkcyBhbGwgZ3Rlc3QgaGVhZGVycyB3ZSd2ZSBwcm9jZXNzZWQuCisg
IG91dHB1dF9maWxlID0gb3Blbihvcy5wYXRoLmpvaW4ob3V0cHV0X2RpciwgR1RFU1RfSF9PVVRQ
VVQpLCAndycpCisgIHByb2Nlc3NlZF9maWxlcyA9IHNldCgpICAjIEhvbGRzIGFsbCBndGVzdCBo
ZWFkZXJzIHdlJ3ZlIHByb2Nlc3NlZC4KIAogICBkZWYgUHJvY2Vzc0ZpbGUoZ3Rlc3RfaGVhZGVy
X3BhdGgpOgogICAgICIiIlByb2Nlc3NlcyB0aGUgZ2l2ZW4gZ3Rlc3QgaGVhZGVyIGZpbGUuIiIi
CkBAIC0xNTksMTAgKzE2MiwxMCBAQCBkZWYgUHJvY2Vzc0ZpbGUoZ3Rlc3RfaGVhZGVyX3BhdGgp
OgogICAgIHByb2Nlc3NlZF9maWxlcy5hZGQoZ3Rlc3RfaGVhZGVyX3BhdGgpCiAKICAgICAjIFJl
YWRzIGVhY2ggbGluZSBpbiB0aGUgZ2l2ZW4gZ3Rlc3QgaGVhZGVyLgotICAgIGZvciBsaW5lIGlu
IGZpbGUob3MucGF0aC5qb2luKGd0ZXN0X3Jvb3QsIGd0ZXN0X2hlYWRlcl9wYXRoKSwgJ3InKToK
KyAgICBmb3IgbGluZSBpbiBvcGVuKG9zLnBhdGguam9pbihndGVzdF9yb290LCBndGVzdF9oZWFk
ZXJfcGF0aCksICdyJyk6CiAgICAgICBtID0gSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VYLm1hdGNo
KGxpbmUpCiAgICAgICBpZiBtOgotICAgICAgICAjIEl0J3MgJyNpbmNsdWRlIDxndGVzdC8uLi4+
JyAtIGxldCdzIHByb2Nlc3MgaXQgcmVjdXJzaXZlbHkuCisgICAgICAgICMgSXQncyAnI2luY2x1
ZGUgImd0ZXN0Ly4uLiInIC0gbGV0J3MgcHJvY2VzcyBpdCByZWN1cnNpdmVseS4KICAgICAgICAg
UHJvY2Vzc0ZpbGUoJ2luY2x1ZGUvJyArIG0uZ3JvdXAoMSkpCiAgICAgICBlbHNlOgogICAgICAg
ICAjIE90aGVyd2lzZSB3ZSBjb3B5IHRoZSBsaW5lIHVuY2hhbmdlZCB0byB0aGUgb3V0cHV0IGZp
bGUuCkBAIC0xNzUsNyArMTc4LDcgQEAgZGVmIFByb2Nlc3NGaWxlKGd0ZXN0X2hlYWRlcl9wYXRo
KToKIGRlZiBGdXNlR1Rlc3RBbGxDY1RvRmlsZShndGVzdF9yb290LCBvdXRwdXRfZmlsZSk6CiAg
ICIiIlNjYW5zIGZvbGRlciBndGVzdF9yb290IHRvIGdlbmVyYXRlIGd0ZXN0L2d0ZXN0LWFsbC5j
YyBpbiBvdXRwdXRfZmlsZS4iIiIKIAotICBwcm9jZXNzZWRfZmlsZXMgPSBzZXRzLlNldCgpCisg
IHByb2Nlc3NlZF9maWxlcyA9IHNldCgpCiAKICAgZGVmIFByb2Nlc3NGaWxlKGd0ZXN0X3NvdXJj
ZV9maWxlKToKICAgICAiIiJQcm9jZXNzZXMgdGhlIGdpdmVuIGd0ZXN0IHNvdXJjZSBmaWxlLiIi
IgpAQCAtMTg3LDIzICsxOTAsMjMgQEAgZGVmIFByb2Nlc3NGaWxlKGd0ZXN0X3NvdXJjZV9maWxl
KToKICAgICBwcm9jZXNzZWRfZmlsZXMuYWRkKGd0ZXN0X3NvdXJjZV9maWxlKQogCiAgICAgIyBS
ZWFkcyBlYWNoIGxpbmUgaW4gdGhlIGdpdmVuIGd0ZXN0IHNvdXJjZSBmaWxlLgotICAgIGZvciBs
aW5lIGluIGZpbGUob3MucGF0aC5qb2luKGd0ZXN0X3Jvb3QsIGd0ZXN0X3NvdXJjZV9maWxlKSwg
J3InKToKKyAgICBmb3IgbGluZSBpbiBvcGVuKG9zLnBhdGguam9pbihndGVzdF9yb290LCBndGVz
dF9zb3VyY2VfZmlsZSksICdyJyk6CiAgICAgICBtID0gSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VY
Lm1hdGNoKGxpbmUpCiAgICAgICBpZiBtOgogICAgICAgICBpZiAnaW5jbHVkZS8nICsgbS5ncm91
cCgxKSA9PSBHVEVTVF9TUElfSF9TRUVEOgotICAgICAgICAgICMgSXQncyAnI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0LXNwaS5oPicuICBUaGlzIGZpbGUgaXMgbm90Ci0gICAgICAgICAgIyAjaW5jbHVk
ZWQgYnkgPGd0ZXN0L2d0ZXN0Lmg+LCBzbyB3ZSBuZWVkIHRvIHByb2Nlc3MgaXQuCisgICAgICAg
ICAgIyBJdCdzICcjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiJy4gIFRoaXMgZmlsZSBpcyBu
b3QKKyAgICAgICAgICAjICNpbmNsdWRlZCBieSAiZ3Rlc3QvZ3Rlc3QuaCIsIHNvIHdlIG5lZWQg
dG8gcHJvY2VzcyBpdC4KICAgICAgICAgICBQcm9jZXNzRmlsZShHVEVTVF9TUElfSF9TRUVEKQog
ICAgICAgICBlbHNlOgotICAgICAgICAgICMgSXQncyAnI2luY2x1ZGUgPGd0ZXN0L2Zvby5oPicg
d2hlcmUgZm9vIGlzIG5vdCBndGVzdC1zcGkuCi0gICAgICAgICAgIyBXZSB0cmVhdCBpdCBhcyAn
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+JywgYXMgYWxsIG90aGVyCisgICAgICAgICAgIyBJdCdz
ICcjaW5jbHVkZSAiZ3Rlc3QvZm9vLmgiJyB3aGVyZSBmb28gaXMgbm90IGd0ZXN0LXNwaS4KKyAg
ICAgICAgICAjIFdlIHRyZWF0IGl0IGFzICcjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCInLCBhcyBh
bGwgb3RoZXIKICAgICAgICAgICAjIGd0ZXN0IGhlYWRlcnMgYXJlIGJlaW5nIGZ1c2VkIGludG8g
Z3Rlc3QuaCBhbmQgY2Fubm90IGJlCiAgICAgICAgICAgIyAjaW5jbHVkZWQgZGlyZWN0bHkuCiAK
LSAgICAgICAgICAjIFRoZXJlIGlzIG5vIG5lZWQgdG8gI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
IG1vcmUgdGhhbiBvbmNlLgorICAgICAgICAgICMgVGhlcmUgaXMgbm8gbmVlZCB0byAjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIgbW9yZSB0aGFuIG9uY2UuCiAgICAgICAgICAgaWYgbm90IEdURVNU
X0hfU0VFRCBpbiBwcm9jZXNzZWRfZmlsZXM6CiAgICAgICAgICAgICBwcm9jZXNzZWRfZmlsZXMu
YWRkKEdURVNUX0hfU0VFRCkKLSAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKCcjaW5jbHVk
ZSA8JXM+XG4nICUgKEdURVNUX0hfT1VUUFVULCkpCisgICAgICAgICAgICBvdXRwdXRfZmlsZS53
cml0ZSgnI2luY2x1ZGUgIiVzIlxuJyAlIChHVEVTVF9IX09VVFBVVCwpKQogICAgICAgZWxzZToK
ICAgICAgICAgbSA9IElOQ0xVREVfU1JDX0ZJTEVfUkVHRVgubWF0Y2gobGluZSkKICAgICAgICAg
aWYgbToKQEAgLTIxOCw3ICsyMjEsNyBAQCBkZWYgUHJvY2Vzc0ZpbGUoZ3Rlc3Rfc291cmNlX2Zp
bGUpOgogZGVmIEZ1c2VHVGVzdEFsbENjKGd0ZXN0X3Jvb3QsIG91dHB1dF9kaXIpOgogICAiIiJT
Y2FucyBmb2xkZXIgZ3Rlc3Rfcm9vdCB0byBnZW5lcmF0ZSBndGVzdC9ndGVzdC1hbGwuY2MgaW4g
b3V0cHV0X2Rpci4iIiIKIAotICBvdXRwdXRfZmlsZSA9IGZpbGUob3MucGF0aC5qb2luKG91dHB1
dF9kaXIsIEdURVNUX0FMTF9DQ19PVVRQVVQpLCAndycpCisgIG91dHB1dF9maWxlID0gb3Blbihv
cy5wYXRoLmpvaW4ob3V0cHV0X2RpciwgR1RFU1RfQUxMX0NDX09VVFBVVCksICd3JykKICAgRnVz
ZUdUZXN0QWxsQ2NUb0ZpbGUoZ3Rlc3Rfcm9vdCwgb3V0cHV0X2ZpbGUpCiAgIG91dHB1dF9maWxl
LmNsb3NlKCkKIApAQCAtMjQyLDcgKzI0NSw3IEBAIGRlZiBtYWluKCk6CiAgICAgIyBmdXNlX2d0
ZXN0X2ZpbGVzLnB5IEdURVNUX1JPT1RfRElSIE9VVFBVVF9ESVIKICAgICBGdXNlR1Rlc3Qoc3lz
LmFyZ3ZbMV0sIHN5cy5hcmd2WzJdKQogICBlbHNlOgotICAgIHByaW50IF9fZG9jX18KKyAgICBw
cmludChfX2RvY19fKQogICAgIHN5cy5leGl0KDEpCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9nZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5IGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9nZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5CmluZGV4IDgzMDcx
MzRhZGFmNGRhMmJlOGZhMjMzMjI5MTUyMGQzOWM5NGJiMTIuLjNlN2FiMDQyZWFjYmExMzhhMmIy
YTE3ODFhNzBiNzU0YTdhYzI1YzkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NjcmlwdHMvZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zY3JpcHRzL2dlbl9ndGVzdF9wcmVkX2ltcGwucHkKQEAgLTExNyw3ICsxMTcsNyBAQCBk
ZWYgSGVhZGVyUHJlYW1ibGUobik6CiAKIC8vIE1ha2VzIHN1cmUgdGhpcyBoZWFkZXIgaXMgbm90
IGluY2x1ZGVkIGJlZm9yZSBndGVzdC5oLgogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dU
RVNUX0hfCi0jZXJyb3IgRG8gbm90IGluY2x1ZGUgZ3Rlc3RfcHJlZF9pbXBsLmggZGlyZWN0bHku
ICBJbmNsdWRlIGd0ZXN0LmggaW5zdGVhZC4KKyMgZXJyb3IgRG8gbm90IGluY2x1ZGUgZ3Rlc3Rf
cHJlZF9pbXBsLmggZGlyZWN0bHkuICBJbmNsdWRlIGd0ZXN0LmggaW5zdGVhZC4KICNlbmRpZiAg
Ly8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9IXwogCiAvLyBUaGlzIGhlYWRlciBpbXBsZW1l
bnRzIGEgZmFtaWx5IG9mIGdlbmVyaWMgcHJlZGljYXRlIGFzc2VydGlvbgpAQCAtMjM4LDI3ICsy
MzgsMjUgQEAgZGVmIEltcGxlbWVudGF0aW9uRm9yQXJpdHkobik6CiAgIGltcGwgKz0gIiIiKSB7
CiAgIGlmIChwcmVkKCUodnMpcykpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgTWVz
c2FnZSBtc2c7CiAiIiIgJSBERUZTCiAKLSAgaW1wbCArPSAnICBtc2cgPDwgcHJlZF90ZXh0IDw8
ICIoIicKKyAgaW1wbCArPSAnICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4
dCA8PCAiKCInCiAKICAgaW1wbCArPSBJdGVyKG4sICIiIgotICAgICAgPDwgZSVzIiIiLCBzZXA9
JyA8PCAiLCAiJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlJXMiIiIsIHNlcD0n
IDw8ICIsICInKQogCiAgIGltcGwgKz0gJyA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJl
IicKIAogICBpbXBsICs9IEl0ZXIobiwgIiIiCi0gICAgICA8PCAiXFxuIiA8PCBlJXMgPDwgIiBl
dmFsdWF0ZXMgdG8gIiA8PCB2JXMiIiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
IlxcbiIgPDwgZSVzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdiVzIiIiKQogCiAgIGltcGwgKz0g
IiIiOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogCiAvLyBJbnRlcm5hbCBt
YWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEX0ZPUk1BVCUobilzLgog
Ly8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1B
VCUobilzXyhwcmVkX2Zvcm1hdCwgJSh2cylzLCBvbl9mYWlsdXJlKVxcCi0gIEdURVNUX0FTU0VS
VF8ocHJlZF9mb3JtYXQoJSh2dHMpcywgJSh2cylzKSxcXAorICBHVEVTVF9BU1NFUlRfKHByZWRf
Zm9ybWF0KCUodnRzKXMsICUodnMpcyksIFxcCiAgICAgICAgICAgICAgICAgb25fZmFpbHVyZSkK
IAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJF
RCUobilzLiAgRG9uJ3QgdXNlCkBAIC0zODYsOCArMzg0LDggQEAgZGVmIFVuaXRUZXN0UHJlYW1i
bGUoKToKIAogI2luY2x1ZGUgPGlvc3RyZWFtPgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
LSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGkuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgogCiAvLyBBIHVzZXItZGVmaW5lZCBkYXRhIHR5
cGUuCiBzdHJ1Y3QgQm9vbCB7CkBAIC00NzgsMTUgKzQ3NiwxNCBAQCBkZWYgVGVzdHNGb3JBcml0
eShuKToKICAgaWYgKFByZWRGdW5jdGlvbiUobilzKCUodnMpcykpCiAgICAgcmV0dXJuIHRlc3Rp
bmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5nOjpNZXNzYWdlIG1zZzsKLSAgbXNn
IDw8ICIiIiAlIERFRlMKKyAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAg
ICAgPDwgIiIiICUgREVGUwogCiAgIHRlc3RzICs9IEl0ZXIobiwgJ2UlcycsIHNlcD0nIDw8ICIg
KyAiIDw8ICcpCiAKICAgdGVzdHMgKz0gIiIiCiAgICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJl
IHBvc2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKICAgICAgIDw8ICUodl9zdW0pcyA8PCAiLiI7
Ci0gIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAiIiIgJSBERUZT
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvZ3Rlc3QtY29u
ZmlnLmluIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9ndGVzdC1jb25maWcuaW4K
aW5kZXggOWM3MjYzODU0YjlmODYzYjYxOGM3MDhkZTFlZmUwZThiMWY3MjgwYS4uNzgwZjg0MzJl
ZmNjMWFlZWFhYWQwNzA2MDg2ZDNmZjY0MTI4NWI2OCAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc2NyaXB0cy9ndGVzdC1jb25maWcuaW4KKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc2NyaXB0cy9ndGVzdC1jb25maWcuaW4KQEAgLTIwOSw3ICsyMDksNyBAQCBpZiB0
ZXN0ICIke3RoaXNfYmluZGlyfSIgPSAiJHt0aGlzX2JpbmRpciUke2JpbmRpcn19IjsgdGhlbgog
ICAjIFRoZSBwYXRoIHRvIHRoZSBzY3JpcHQgZG9lc24ndCBlbmQgaW4gdGhlIGJpbmRpciBzZXF1
ZW5jZSBmcm9tIEF1dG9jb25mLAogICAjIGFzc3VtZSB0aGF0IHdlIGFyZSBpbiBhIGJ1aWxkIHRy
ZWUuCiAgIGJ1aWxkX2Rpcj1gZGlybmFtZSAke3RoaXNfYmluZGlyfWAKLSAgc3JjX2Rpcj1gY2Qg
JHt0aGlzX2JpbmRpcn0vQHRvcF9zcmNkaXJAOyBwd2QgLVBgCisgIHNyY19kaXI9YGNkICR7dGhp
c19iaW5kaXJ9OyBjZCBAdG9wX3NyY2RpckA7IHB3ZCAtUGAKIAogICAjIFRPRE8oY2hhbmRsZXJj
QGdvb2dsZS5jb20pOiBUaGlzIGlzIGEgZGFuZ2Vyb3VzIGRlcGVuZGVuY3kgb24gbGlidG9vbCwg
d2UKICAgIyBzaG91bGQgd29yayB0byByZW1vdmUgaXQsIGFuZC9vciByZW1vdmUgbGlidG9vbCBh
bHRvZ2V0aGVyLCByZXBsYWNpbmcgaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NjcmlwdHMvcHVtcC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcHVt
cC5weQppbmRleCBmMTVjMWI2Y2ViNGI4YjFiYjBiZjRlODNlM2VhOTNiMzhjNzg1ODAwLi41ZWZi
NjUzYzIwN2QxZjFjMmFlY2M0ZDY5MGJmNzMyZTNjMWQ3MWFiIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3B1bXAucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2NyaXB0cy9wdW1wLnB5CkBAIC0yOSw3ICsyOSw3IEBACiAjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCi0iIiJwdW1wIHYwLjEgLSBQcmV0dHkgVXNlZnVsIGZvciBNZXRhIFBy
b2dyYW1taW5nLgorIiIicHVtcCB2MC4yLjAgLSBQcmV0dHkgVXNlZnVsIGZvciBNZXRhIFByb2dy
YW1taW5nLgogCiBBIHRvb2wgZm9yIHByZXByb2Nlc3NvciBtZXRhIHByb2dyYW1taW5nLiAgVXNl
ZnVsIGZvciBnZW5lcmF0aW5nCiByZXBldGl0aXZlIGJvaWxlcnBsYXRlIGNvZGUuICBFc3BlY2lh
bGx5IHVzZWZ1bCBmb3Igd3JpdGluZyBDKysKQEAgLTc4LDcgKzc4LDYgQEAKICAgICAocmUuY29t
cGlsZShyJ1wkcmFuZ2VccysnKSwgJyRyYW5nZScpLAogICAgIChyZS5jb21waWxlKHInXCRbX0Et
WmEtel1cdyonKSwgJyRpZCcpLAogICAgIChyZS5jb21waWxlKHInXCRcKFwkXCknKSwgJyQoJCkn
KSwKLSAgICAocmUuY29tcGlsZShyJ1wkXCQuKicpLCAnJCQnKSwKICAgICAocmUuY29tcGlsZShy
J1wkJyksICckJyksCiAgICAgKHJlLmNvbXBpbGUocidcW1xbXG4/JyksICdbWycpLAogICAgIChy
ZS5jb21waWxlKHInXF1cXVxuPycpLCAnXV0nKSwKQEAgLTIyNCw2ICsyMjMsMTcgQEAgZGVmIFN1
YlN0cmluZyhsaW5lcywgc3RhcnQsIGVuZCk6CiAgIHJldHVybiAnJy5qb2luKHJlc3VsdF9saW5l
cykKIAogCitkZWYgU3RyaXBNZXRhQ29tbWVudHMoc3RyKToKKyAgIiIiU3RyaXAgbWV0YSBjb21t
ZW50cyBmcm9tIGVhY2ggbGluZSBpbiB0aGUgZ2l2ZW4gc3RyaW5nLiIiIgorCisgICMgRmlyc3Qs
IGNvbXBsZXRlbHkgcmVtb3ZlIGxpbmVzIGNvbnRhaW5pbmcgbm90aGluZyBidXQgYSBtZXRhCisg
ICMgY29tbWVudCwgaW5jbHVkaW5nIHRoZSB0cmFpbGluZyBcbi4KKyAgc3RyID0gcmUuc3ViKHIn
XlxzKlwkXCQuKlxuJywgJycsIHN0cikKKworICAjIFRoZW4sIHJlbW92ZSBtZXRhIGNvbW1lbnRz
IGZyb20gY29udGVudGZ1bCBsaW5lcy4KKyAgcmV0dXJuIHJlLnN1YihyJ1xzKlwkXCQuKicsICcn
LCBzdHIpCisKKwogZGVmIE1ha2VUb2tlbihsaW5lcywgc3RhcnQsIGVuZCwgdG9rZW5fdHlwZSk6
CiAgICIiIkNyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgVG9rZW4uIiIiCiAKQEAgLTMxMSwxMSAr
MzIxLDcgQEAgZGVmIFRva2VuaXplTGluZXMobGluZXMsIHBvcyk6CiAgICAgICBwcmV2X3Rva2Vu
ID0gTWFrZVRva2VuKGxpbmVzLCBwb3MsIGZvdW5kLnN0YXJ0LCAnY29kZScpCiAgICAgICBwcmV2
X3Rva2VuX3JzdHJpcHBlZCA9IFJTdHJpcE5ld0xpbmVGcm9tVG9rZW4ocHJldl90b2tlbikKIAot
ICAgIGlmIGZvdW5kLnRva2VuX3R5cGUgPT0gJyQkJzogICMgQSBtZXRhIGNvbW1lbnQuCi0gICAg
ICBpZiBwcmV2X3Rva2VuX3JzdHJpcHBlZDoKLSAgICAgICAgeWllbGQgcHJldl90b2tlbl9yc3Ry
aXBwZWQKLSAgICAgIHBvcyA9IEN1cnNvcihmb3VuZC5lbmQubGluZSArIDEsIDApCi0gICAgZWxp
ZiBmb3VuZC50b2tlbl90eXBlID09ICckdmFyJzoKKyAgICBpZiBmb3VuZC50b2tlbl90eXBlID09
ICckdmFyJzoKICAgICAgIGlmIHByZXZfdG9rZW5fcnN0cmlwcGVkOgogICAgICAgICB5aWVsZCBw
cmV2X3Rva2VuX3JzdHJpcHBlZAogICAgICAgeWllbGQgZm91bmQKQEAgLTM3NCw4ICszODAsMTEg
QEAgZGVmIFRva2VuaXplTGluZXMobGluZXMsIHBvcyk6CiAKIAogZGVmIFRva2VuaXplKHMpOgot
ICBsaW5lcyA9IHMuc3BsaXRsaW5lcyhUcnVlKQotICByZXR1cm4gVG9rZW5pemVMaW5lcyhsaW5l
cywgQ3Vyc29yKDAsIDApKQorICAiIiJBIGdlbmVyYXRvciB0aGF0IHlpZWxkcyB0aGUgdG9rZW5z
IGluIHRoZSBnaXZlbiBzdHJpbmcuIiIiCisgIGlmIHMgIT0gJyc6CisgICAgbGluZXMgPSBzLnNw
bGl0bGluZXMoVHJ1ZSkKKyAgICBmb3IgdG9rZW4gaW4gVG9rZW5pemVMaW5lcyhsaW5lcywgQ3Vy
c29yKDAsIDApKToKKyAgICAgIHlpZWxkIHRva2VuCiAKIAogY2xhc3MgQ29kZU5vZGU6CkBAIC01
NjUsMTEgKzU3NCw5IEBAIGRlZiBQYXJzZUNvZGVOb2RlKHRva2Vucyk6CiAgIHJldHVybiBDb2Rl
Tm9kZShhdG9taWNfY29kZV9saXN0KQogCiAKLWRlZiBDb252ZXJ0KGZpbGVfcGF0aCk6Ci0gIHMg
PSBmaWxlKGZpbGVfcGF0aCwgJ3InKS5yZWFkKCkKLSAgdG9rZW5zID0gW10KLSAgZm9yIHRva2Vu
IGluIFRva2VuaXplKHMpOgotICAgIHRva2Vucy5hcHBlbmQodG9rZW4pCitkZWYgUGFyc2VUb0FT
VChwdW1wX3NyY190ZXh0KToKKyAgIiIiQ29udmVydCB0aGUgZ2l2ZW4gUHVtcCBzb3VyY2UgdGV4
dCBpbnRvIGFuIEFTVC4iIiIKKyAgdG9rZW5zID0gbGlzdChUb2tlbml6ZShwdW1wX3NyY190ZXh0
KSkKICAgY29kZV9ub2RlID0gUGFyc2VDb2RlTm9kZSh0b2tlbnMpCiAgIHJldHVybiBjb2RlX25v
ZGUKIApAQCAtNjk3LDE0ICs3MDQsMTQgQEAgZGVmIFJ1bkNvZGUoZW52LCBjb2RlX25vZGUsIG91
dHB1dCk6CiAgICAgUnVuQXRvbWljQ29kZShlbnYsIGF0b21pY19jb2RlLCBvdXRwdXQpCiAKIAot
ZGVmIElzQ29tbWVudChjdXJfbGluZSk6CitkZWYgSXNTaW5nbGVMaW5lQ29tbWVudChjdXJfbGlu
ZSk6CiAgIHJldHVybiAnLy8nIGluIGN1cl9saW5lCiAKIAotZGVmIElzSW5QcmVwcm9jZXNzb3JE
aXJldmF0aXZlKHByZXZfbGluZXMsIGN1cl9saW5lKToKK2RlZiBJc0luUHJlcHJvY2Vzc29yRGly
ZWN0aXZlKHByZXZfbGluZXMsIGN1cl9saW5lKToKICAgaWYgY3VyX2xpbmUubHN0cmlwKCkuc3Rh
cnRzd2l0aCgnIycpOgogICAgIHJldHVybiBUcnVlCi0gIHJldHVybiBwcmV2X2xpbmVzICE9IFtd
IGFuZCBwcmV2X2xpbmVzWy0xXS5lbmRzd2l0aCgnXFwnKQorICByZXR1cm4gcHJldl9saW5lcyBh
bmQgcHJldl9saW5lc1stMV0uZW5kc3dpdGgoJ1xcJykKIAogCiBkZWYgV3JhcENvbW1lbnQobGlu
ZSwgb3V0cHV0KToKQEAgLTc2MSw3ICs3NjgsNyBAQCBkZWYgV3JhcENvZGUobGluZSwgbGluZV9j
b25jYXQsIG91dHB1dCk6CiAgICAgb3V0cHV0LmFwcGVuZChwcmVmaXggKyBjdXJfbGluZS5zdHJp
cCgpKQogCiAKLWRlZiBXcmFwUHJlcHJvY2Vzc29yRGlyZXZhdGl2ZShsaW5lLCBvdXRwdXQpOgor
ZGVmIFdyYXBQcmVwcm9jZXNzb3JEaXJlY3RpdmUobGluZSwgb3V0cHV0KToKICAgV3JhcENvZGUo
bGluZSwgJyBcXCcsIG91dHB1dCkKIAogCkBAIC03NjksMjkgKzc3NiwzNyBAQCBkZWYgV3JhcFBs
YWluQ29kZShsaW5lLCBvdXRwdXQpOgogICBXcmFwQ29kZShsaW5lLCAnJywgb3V0cHV0KQogCiAK
LWRlZiBJc0hlYWRlckd1YXJkT3JJbmNsdWRlKGxpbmUpOgorZGVmIElzTXVsdGlMaW5lSVdZVVBy
YWdtYShsaW5lKToKKyAgcmV0dXJuIHJlLnNlYXJjaChyJy9cKiBJV1lVIHByYWdtYTogJywgbGlu
ZSkKKworCitkZWYgSXNIZWFkZXJHdWFyZEluY2x1ZGVPck9uZUxpbmVJV1lVUHJhZ21hKGxpbmUp
OgogICByZXR1cm4gKHJlLm1hdGNoKHInXiMoaWZuZGVmfGRlZmluZXxlbmRpZlxzKi8vKVxzKltc
d19dK1xzKiQnLCBsaW5lKSBvcgotICAgICAgICAgIHJlLm1hdGNoKHInXiNpbmNsdWRlXHMnLCBs
aW5lKSkKKyAgICAgICAgICByZS5tYXRjaChyJ14jaW5jbHVkZVxzJywgbGluZSkgb3IKKyAgICAg
ICAgICAjIERvbid0IGJyZWFrIElXWVUgcHJhZ21hcywgZWl0aGVyOyB0aGF0IGNhdXNlcyBpd3l1
LnB5IHByb2JsZW1zLgorICAgICAgICAgIHJlLnNlYXJjaChyJy8vIElXWVUgcHJhZ21hOiAnLCBs
aW5lKSkKIAogCiBkZWYgV3JhcExvbmdMaW5lKGxpbmUsIG91dHB1dCk6CiAgIGxpbmUgPSBsaW5l
LnJzdHJpcCgpCiAgIGlmIGxlbihsaW5lKSA8PSA4MDoKICAgICBvdXRwdXQuYXBwZW5kKGxpbmUp
Ci0gIGVsaWYgSXNDb21tZW50KGxpbmUpOgotICAgIGlmIElzSGVhZGVyR3VhcmRPckluY2x1ZGUo
bGluZSk6Ci0gICAgICAjIFRoZSBzdHlsZSBndWlkZSBtYWRlIGFuIGV4Y2VwdGlvbiB0byBhbGxv
dyBsb25nIGhlYWRlciBndWFyZCBsaW5lcwotICAgICAgIyBhbmQgaW5jbHVkZXMuCisgIGVsaWYg
SXNTaW5nbGVMaW5lQ29tbWVudChsaW5lKToKKyAgICBpZiBJc0hlYWRlckd1YXJkSW5jbHVkZU9y
T25lTGluZUlXWVVQcmFnbWEobGluZSk6CisgICAgICAjIFRoZSBzdHlsZSBndWlkZSBtYWRlIGFu
IGV4Y2VwdGlvbiB0byBhbGxvdyBsb25nIGhlYWRlciBndWFyZCBsaW5lcywKKyAgICAgICMgaW5j
bHVkZXMgYW5kIElXWVUgcHJhZ21hcy4KICAgICAgIG91dHB1dC5hcHBlbmQobGluZSkKICAgICBl
bHNlOgogICAgICAgV3JhcENvbW1lbnQobGluZSwgb3V0cHV0KQotICBlbGlmIElzSW5QcmVwcm9j
ZXNzb3JEaXJldmF0aXZlKG91dHB1dCwgbGluZSk6Ci0gICAgaWYgSXNIZWFkZXJHdWFyZE9ySW5j
bHVkZShsaW5lKToKLSAgICAgICMgVGhlIHN0eWxlIGd1aWRlIG1hZGUgYW4gZXhjZXB0aW9uIHRv
IGFsbG93IGxvbmcgaGVhZGVyIGd1YXJkIGxpbmVzCi0gICAgICAjIGFuZCBpbmNsdWRlcy4KKyAg
ZWxpZiBJc0luUHJlcHJvY2Vzc29yRGlyZWN0aXZlKG91dHB1dCwgbGluZSk6CisgICAgaWYgSXNI
ZWFkZXJHdWFyZEluY2x1ZGVPck9uZUxpbmVJV1lVUHJhZ21hKGxpbmUpOgorICAgICAgIyBUaGUg
c3R5bGUgZ3VpZGUgbWFkZSBhbiBleGNlcHRpb24gdG8gYWxsb3cgbG9uZyBoZWFkZXIgZ3VhcmQg
bGluZXMsCisgICAgICAjIGluY2x1ZGVzIGFuZCBJV1lVIHByYWdtYXMuCiAgICAgICBvdXRwdXQu
YXBwZW5kKGxpbmUpCiAgICAgZWxzZToKLSAgICAgIFdyYXBQcmVwcm9jZXNzb3JEaXJldmF0aXZl
KGxpbmUsIG91dHB1dCkKKyAgICAgIFdyYXBQcmVwcm9jZXNzb3JEaXJlY3RpdmUobGluZSwgb3V0
cHV0KQorICBlbGlmIElzTXVsdGlMaW5lSVdZVVByYWdtYShsaW5lKToKKyAgICBvdXRwdXQuYXBw
ZW5kKGxpbmUpCiAgIGVsc2U6CiAgICAgV3JhcFBsYWluQ29kZShsaW5lLCBvdXRwdXQpCiAKQEAg
LTgwNSwxNiArODIwLDIxIEBAIGRlZiBCZWF1dGlmeUNvZGUoc3RyaW5nKToKICAgcmV0dXJuICdc
bicuam9pbihvdXRwdXQyKSArICdcbicKIAogCitkZWYgQ29udmVydEZyb21QdW1wU291cmNlKHNy
Y190ZXh0KToKKyAgIiIiUmV0dXJuIHRoZSB0ZXh0IGdlbmVyYXRlZCBmcm9tIHRoZSBnaXZlbiBQ
dW1wIHNvdXJjZSB0ZXh0LiIiIgorICBhc3QgPSBQYXJzZVRvQVNUKFN0cmlwTWV0YUNvbW1lbnRz
KHNyY190ZXh0KSkKKyAgb3V0cHV0ID0gT3V0cHV0KCkKKyAgUnVuQ29kZShFbnYoKSwgYXN0LCBv
dXRwdXQpCisgIHJldHVybiBCZWF1dGlmeUNvZGUob3V0cHV0LnN0cmluZykKKworCiBkZWYgbWFp
bihhcmd2KToKICAgaWYgbGVuKGFyZ3YpID09IDE6CiAgICAgcHJpbnQgX19kb2NfXwogICAgIHN5
cy5leGl0KDEpCiAKICAgZmlsZV9wYXRoID0gYXJndlstMV0KLSAgYXN0ID0gQ29udmVydChmaWxl
X3BhdGgpCi0gIG91dHB1dCA9IE91dHB1dCgpCi0gIFJ1bkNvZGUoRW52KCksIGFzdCwgb3V0cHV0
KQotICBvdXRwdXRfc3RyID0gQmVhdXRpZnlDb2RlKG91dHB1dC5zdHJpbmcpCisgIG91dHB1dF9z
dHIgPSBDb252ZXJ0RnJvbVB1bXBTb3VyY2UoZmlsZShmaWxlX3BhdGgsICdyJykucmVhZCgpKQog
ICBpZiBmaWxlX3BhdGguZW5kc3dpdGgoJy5wdW1wJyk6CiAgICAgb3V0cHV0X2ZpbGVfcGF0aCA9
IGZpbGVfcGF0aFs6LTVdCiAgIGVsc2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zY3JpcHRzL3JlbGVhc2VfZG9jcy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nj
cmlwdHMvcmVsZWFzZV9kb2NzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyOTEzNDdmNjc0YWZkN2FmODQ5NjE1
YTc1YjEzOGQ1MjkzZjljZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zY3JpcHRzL3JlbGVhc2VfZG9jcy5weQpAQCAtMCwwICsxLDE1OCBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDEzIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJTY3JpcHQgZm9yIGJyYW5jaGluZyBH
b29nbGUgVGVzdC9Nb2NrIHdpa2kgcGFnZXMgZm9yIGEgbmV3IHZlcnNpb24uCisKK1NZTk9QU0lT
CisgICAgICAgcmVsZWFzZV9kb2NzLnB5IE5FV19SRUxFQVNFX1ZFUlNJT04KKworICAgICAgIEdv
b2dsZSBUZXN0IGFuZCBHb29nbGUgTW9jaydzIGV4dGVybmFsIHVzZXIgZG9jdW1lbnRhdGlvbiBp
cyBpbgorICAgICAgIGludGVybGlua2VkIHdpa2kgZmlsZXMuICBXaGVuIHdlIHJlbGVhc2UgYSBu
ZXcgdmVyc2lvbiBvZgorICAgICAgIEdvb2dsZSBUZXN0IG9yIEdvb2dsZSBNb2NrLCB3ZSBuZWVk
IHRvIGJyYW5jaCB0aGUgd2lraSBmaWxlcworICAgICAgIHN1Y2ggdGhhdCB1c2VycyBvZiBhIHNw
ZWNpZmljIHZlcnNpb24gb2YgR29vZ2xlIFRlc3QvTW9jayBjYW4KKyAgICAgICBsb29rIHVwIGRv
Y3VtZW5hdGlvbiByZWxldmFudCBmb3IgdGhhdCB2ZXJzaW9uLiAgVGhpcyBzY3JpcHQKKyAgICAg
ICBhdXRvbWF0ZXMgdGhhdCBwcm9jZXNzIGJ5OgorCisgICAgICAgICAtIGJyYW5jaGluZyB0aGUg
Y3VycmVudCB3aWtpIHBhZ2VzICh3aGljaCBkb2N1bWVudCB0aGUKKyAgICAgICAgICAgYmVoYXZp
b3Igb2YgdGhlIFNWTiB0cnVuayBoZWFkKSB0byBwYWdlcyBmb3IgdGhlIHNwZWNpZmllZAorICAg
ICAgICAgICB2ZXJzaW9uIChlLmcuIGJyYW5jaGluZyBGQVEud2lraSB0byBWMl82X0ZBUS53aWtp
IHdoZW4KKyAgICAgICAgICAgTkVXX1JFTEVBU0VfVkVSU0lPTiBpcyAyLjYpOworICAgICAgICAg
LSB1cGRhdGluZyB0aGUgbGlua3MgaW4gdGhlIGJyYW5jaGVkIGZpbGVzIHRvIHBvaW50IHRvIHRo
ZSBicmFuY2hlZAorICAgICAgICAgICB2ZXJzaW9uIChlLmcuIGEgbGluayBpbiBWMl82X0ZBUS53
aWtpIHRoYXQgcG9pbnRlZCB0bworICAgICAgICAgICBQcmltZXIud2lraSNBbmNob3Igd2lsbCBu
b3cgcG9pbnQgdG8gVjJfNl9QcmltZXIud2lraSNBbmNob3IpLgorCisgICAgICAgTk9URTogTkVX
X1JFTEVBU0VfVkVSU0lPTiBtdXN0IGJlIGEgTkVXIHZlcnNpb24gbnVtYmVyIGZvcgorICAgICAg
IHdoaWNoIHRoZSB3aWtpIHBhZ2VzIGRvbid0IHlldCBleGlzdDsgb3RoZXJ3aXNlIHlvdSdsbCBn
ZXQgU1ZOCisgICAgICAgZXJyb3JzIGxpa2UgInN2bjogUGF0aCAnVjFfN19QdW1wTWFudWFsLndp
a2knIGlzIG5vdCBhCisgICAgICAgZGlyZWN0b3J5IiB3aGVuIHJ1bm5pbmcgdGhlIHNjcmlwdC4K
KworRVhBTVBMRQorICAgICAgICQgY2QgUEFUSC9UTy9HVEVTVF9TVk5fV09SS1NQQUNFL3RydW5r
CisgICAgICAgJCBzY3JpcHRzL3JlbGVhc2VfZG9jcy5weSAyLjYgICMgY3JlYXRlIHdpa2kgcGFn
ZXMgZm9yIHYyLjYKKyAgICAgICAkIHN2biBzdGF0dXMgICAgICAgICAgICAgICAgICAgIyB2ZXJp
ZnkgdGhlIGZpbGUgbGlzdAorICAgICAgICQgc3ZuIGRpZmYgICAgICAgICAgICAgICAgICAgICAj
IHZlcmlmeSB0aGUgZmlsZSBjb250ZW50cworICAgICAgICQgc3ZuIGNvbW1pdCAtbSAicmVsZWFz
ZSB3aWtpIHBhZ2VzIGZvciB2Mi42IgorIiIiCisKK19fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbiknCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCisK
K2ltcG9ydCBjb21tb24KKworCisjIFdpa2kgcGFnZXMgdGhhdCBzaG91bGRuJ3QgYmUgYnJhbmNo
ZWQgZm9yIGV2ZXJ5IGd0ZXN0L2dtb2NrIHJlbGVhc2UuCitHVEVTVF9VTlZFUlNJT05FRF9XSUtJ
UyA9IFsnRGV2R3VpZGUud2lraSddCitHTU9DS19VTlZFUlNJT05FRF9XSUtJUyA9IFsKKyAgICAn
RGVzaWduRG9jLndpa2knLAorICAgICdEZXZHdWlkZS53aWtpJywKKyAgICAnS25vd25Jc3N1ZXMu
d2lraScKKyAgICBdCisKKworZGVmIERyb3BXaWtpU3VmZml4KHdpa2lfZmlsZW5hbWUpOgorICAi
IiJSZW1vdmVzIHRoZSAud2lraSBzdWZmaXggKGlmIGFueSkgZnJvbSB0aGUgZ2l2ZW4gZmlsZW5h
bWUuIiIiCisKKyAgcmV0dXJuICh3aWtpX2ZpbGVuYW1lWzotbGVuKCcud2lraScpXSBpZiB3aWtp
X2ZpbGVuYW1lLmVuZHN3aXRoKCcud2lraScpCisgICAgICAgICAgZWxzZSB3aWtpX2ZpbGVuYW1l
KQorCisKK2NsYXNzIFdpa2lCcmFuY2hlcihvYmplY3QpOgorICAiIiJCcmFuY2hlcyAuLi4iIiIK
KworICBkZWYgX19pbml0X18oc2VsZiwgZG90X3ZlcnNpb24pOgorICAgIHNlbGYucHJvamVjdCwg
c3ZuX3Jvb3RfcGF0aCA9IGNvbW1vbi5HZXRTdm5JbmZvKCkKKyAgICBpZiBzZWxmLnByb2plY3Qg
bm90IGluICgnZ29vZ2xldGVzdCcsICdnb29nbGVtb2NrJyk6CisgICAgICBzeXMuZXhpdCgnVGhp
cyBzY3JpcHQgbXVzdCBiZSBydW4gaW4gYSBndGVzdCBvciBnbW9jayBTVk4gd29ya3NwYWNlLicp
CisgICAgc2VsZi53aWtpX2RpciA9IHN2bl9yb290X3BhdGggKyAnL3dpa2knCisgICAgIyBUdXJu
ICcyLjYnIHRvICdWMl82XycuCisgICAgc2VsZi52ZXJzaW9uX3ByZWZpeCA9ICdWJyArIGRvdF92
ZXJzaW9uLnJlcGxhY2UoJy4nLCAnXycpICsgJ18nCisgICAgc2VsZi5maWxlc190b19icmFuY2gg
PSBzZWxmLkdldEZpbGVzVG9CcmFuY2goKQorICAgIHBhZ2VfbmFtZXMgPSBbRHJvcFdpa2lTdWZm
aXgoZikgZm9yIGYgaW4gc2VsZi5maWxlc190b19icmFuY2hdCisgICAgIyBBIGxpbmsgdG8gRm9v
Lndpa2kgaXMgaW4gb25lIG9mIHRoZSBmb2xsb3dpbmcgZm9ybXM6CisgICAgIyAgIFtGb28gd29y
ZHNdCisgICAgIyAgIFtGb28jQW5jaG9yIHdvcmRzXQorICAgICMgICBbaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS8uLi4vd2lraS9Gb28gd29yZHNdCisgICAgIyAgIFtodHRwOi8vY29kZS5nb29nbGUu
Y29tLy4uLi93aWtpL0ZvbyNBbmNob3Igd29yZHNdCisgICAgIyBXZSB3YW50IHRvIHJlcGxhY2Ug
J0Zvbycgd2l0aCAnVjJfNl9Gb28nIGluIHRoZSBhYm92ZSBjYXNlcy4KKyAgICBzZWxmLnNlYXJj
aF9mb3JfcmUgPSByZS5jb21waWxlKAorICAgICAgICAjIFRoaXMgcmVnZXggbWF0Y2hlcyBlaXRo
ZXIKKyAgICAgICAgIyAgIFtGb28KKyAgICAgICAgIyBvcgorICAgICAgICAjICAgL3dpa2kvRm9v
CisgICAgICAgICMgZm9sbG93ZWQgYnkgYSBzcGFjZSBvciBhICMsIHdoZXJlIEZvbyBpcyB0aGUg
bmFtZSBvZiBhbgorICAgICAgICAjIHVudmVyc2lvbmVkIHdpa2kgcGFnZS4KKyAgICAgICAgcico
XFt8L3dpa2kvKSglcykoWyAjXSknICUgJ3wnLmpvaW4ocGFnZV9uYW1lcykpCisgICAgc2VsZi5y
ZXBsYWNlX3dpdGggPSByJ1wxJXNcMlwzJyAlIChzZWxmLnZlcnNpb25fcHJlZml4LCkKKworICBk
ZWYgR2V0RmlsZXNUb0JyYW5jaChzZWxmKToKKyAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiAud2lr
aSBmaWxlIG5hbWVzIHRoYXQgbmVlZCB0byBiZSBicmFuY2hlZC4iIiIKKworICAgIHVudmVyc2lv
bmVkX3dpa2lzID0gKEdURVNUX1VOVkVSU0lPTkVEX1dJS0lTIGlmIHNlbGYucHJvamVjdCA9PSAn
Z29vZ2xldGVzdCcKKyAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEdNT0NLX1VOVkVSU0lP
TkVEX1dJS0lTKQorICAgIHJldHVybiBbZiBmb3IgZiBpbiBvcy5saXN0ZGlyKHNlbGYud2lraV9k
aXIpCisgICAgICAgICAgICBpZiAoZi5lbmRzd2l0aCgnLndpa2knKSBhbmQKKyAgICAgICAgICAg
ICAgICBub3QgcmUubWF0Y2gocideVlxkJywgZikgYW5kICAjIEV4Y2x1ZGVkIHZlcnNpb25lZCAu
d2lraSBmaWxlcy4KKyAgICAgICAgICAgICAgICBmIG5vdCBpbiB1bnZlcnNpb25lZF93aWtpcyld
CisKKyAgZGVmIEJyYW5jaEZpbGVzKHNlbGYpOgorICAgICIiIkJyYW5jaGVzIHRoZSAud2lraSBm
aWxlcyBuZWVkZWQgdG8gYmUgYnJhbmNoZWQuIiIiCisKKyAgICBwcmludCAnQnJhbmNoaW5nICVk
IC53aWtpIGZpbGVzOicgJSAobGVuKHNlbGYuZmlsZXNfdG9fYnJhbmNoKSwpCisgICAgb3MuY2hk
aXIoc2VsZi53aWtpX2RpcikKKyAgICBmb3IgZiBpbiBzZWxmLmZpbGVzX3RvX2JyYW5jaDoKKyAg
ICAgIGNvbW1hbmQgPSAnc3ZuIGNwICVzICVzJXMnICUgKGYsIHNlbGYudmVyc2lvbl9wcmVmaXgs
IGYpCisgICAgICBwcmludCBjb21tYW5kCisgICAgICBvcy5zeXN0ZW0oY29tbWFuZCkKKworICBk
ZWYgVXBkYXRlTGlua3NJbkJyYW5jaGVkRmlsZXMoc2VsZik6CisKKyAgICBmb3IgZiBpbiBzZWxm
LmZpbGVzX3RvX2JyYW5jaDoKKyAgICAgIHNvdXJjZV9maWxlID0gb3MucGF0aC5qb2luKHNlbGYu
d2lraV9kaXIsIGYpCisgICAgICB2ZXJzaW9uZWRfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndp
a2lfZGlyLCBzZWxmLnZlcnNpb25fcHJlZml4ICsgZikKKyAgICAgIHByaW50ICdVcGRhdGluZyBs
aW5rcyBpbiAlcy4nICUgKHZlcnNpb25lZF9maWxlLCkKKyAgICAgIHRleHQgPSBmaWxlKHNvdXJj
ZV9maWxlLCAncicpLnJlYWQoKQorICAgICAgbmV3X3RleHQgPSBzZWxmLnNlYXJjaF9mb3JfcmUu
c3ViKHNlbGYucmVwbGFjZV93aXRoLCB0ZXh0KQorICAgICAgZmlsZSh2ZXJzaW9uZWRfZmlsZSwg
J3cnKS53cml0ZShuZXdfdGV4dCkKKworCitkZWYgbWFpbigpOgorICBpZiBsZW4oc3lzLmFyZ3Yp
ICE9IDI6CisgICAgc3lzLmV4aXQoX19kb2NfXykKKworICBicmFuY2hlciA9IFdpa2lCcmFuY2hl
cihzeXMuYXJndlsxXSkKKyAgYnJhbmNoZXIuQnJhbmNoRmlsZXMoKQorICBicmFuY2hlci5VcGRh
dGVMaW5rc0luQnJhbmNoZWRGaWxlcygpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
KyAgbWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3Rl
c3QvTWFrZWZpbGUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3Rlc3QvTWFrZWZp
bGUKaW5kZXggZmZjMGM5MGFkOTk1NzJkZjk0YWZiNWI2NDEzNmE5YzI5NDg4YWUwNi4uY2RmZjU4
NDYzN2I3YTZlOWRmMWZhNDNjZThmNTg4YzQzODE1ZTU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy90ZXN0L01ha2VmaWxlCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3NjcmlwdHMvdGVzdC9NYWtlZmlsZQpAQCAtMjEsNyArMjEsOSBAQCBTQU1QTEVf
RElSID0gLi4vLi4vc2FtcGxlcwogR1RFU1RfTUFJTl9DQyA9IC4uLy4uL3NyYy9ndGVzdF9tYWlu
LmNjCiAKICMgRmxhZ3MgcGFzc2VkIHRvIHRoZSBwcmVwcm9jZXNzb3IuCi1DUFBGTEFHUyArPSAt
SSQoRlVTRURfR1RFU1RfRElSKQorIyBXZSBoYXZlIG5vIGlkZWEgaGVyZSB3aGV0aGVyIHB0aHJl
YWRzIGlzIGF2YWlsYWJsZSBpbiB0aGUgc3lzdGVtLCBzbworIyBkaXNhYmxlIGl0cyB1c2UuCitD
UFBGTEFHUyArPSAtSSQoRlVTRURfR1RFU1RfRElSKSAtREdURVNUX0hBU19QVEhSRUFEPTAKIAog
IyBGbGFncyBwYXNzZWQgdG8gdGhlIEMrKyBjb21waWxlci4KIENYWEZMQUdTICs9IC1nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtYWxsLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWFsbC5jYwppbmRleCBmZTM0NzY1ZmI2NzIxOGE1
NmNiNWUyNTJhNzBlNjhhMzZiYzg4ZDA3Li4wYTljZWU1MjIzMzMyOGIxYmFmZGM0YmM0MDI2OTlm
YTE0MDM4ZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3Qt
YWxsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1hbGwuY2MKQEAg
LTM2LDEyICszNiwxMyBAQAogCiAvLyBUaGlzIGxpbmUgZW5zdXJlcyB0aGF0IGd0ZXN0LmggY2Fu
IGJlIGNvbXBpbGVkIG9uIGl0cyBvd24sIGV2ZW4KIC8vIHdoZW4gaXQncyBmdXNlZC4KLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIC8vIFRoZSBm
b2xsb3dpbmcgbGluZXMgcHVsbCBpbiB0aGUgcmVhbCBndGVzdCAqLmNjIGZpbGVzLgogI2luY2x1
ZGUgInNyYy9ndGVzdC5jYyIKICNpbmNsdWRlICJzcmMvZ3Rlc3QtZGVhdGgtdGVzdC5jYyIKICNp
bmNsdWRlICJzcmMvZ3Rlc3QtZmlsZXBhdGguY2MiCiAjaW5jbHVkZSAic3JjL2d0ZXN0LXBvcnQu
Y2MiCisjaW5jbHVkZSAic3JjL2d0ZXN0LXByaW50ZXJzLmNjIgogI2luY2x1ZGUgInNyYy9ndGVz
dC10ZXN0LXBhcnQuY2MiCiAjaW5jbHVkZSAic3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtZGVhdGgtdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1kZWF0aC10ZXN0LmNjCmluZGV4IDBj
Zjc4MjViY2FjNzlmYTM1ZDBhMTI0OGUyMzA4YTI0YWE2MjdiOGEuLmEwMWEzNjk4MzA4NzgyODIx
ZTRmOTBmNDEyODUxMjhiNzVjOGUzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NyYy9ndGVzdC1kZWF0aC10ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NyYy9ndGVzdC1kZWF0aC10ZXN0LmNjCkBAIC0zMSwzNyArMzEsNDcgQEAKIC8vCiAvLyBUaGlz
IGZpbGUgaW1wbGVtZW50cyBkZWF0aCB0ZXN0cy4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LWRl
YXRoLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFs
L2d0ZXN0LXBvcnQuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QuaCIK
IAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCiAKLSNpZiBHVEVTVF9PU19NQUMKLSNpbmNsdWRl
IDxjcnRfZXh0ZXJucy5oPgotI2VuZGlmICAvLyBHVEVTVF9PU19NQUMKKyMgaWYgR1RFU1RfT1Nf
TUFDCisjICBpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgorIyBlbmRpZiAgLy8gR1RFU1RfT1NfTUFD
CiAKLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8bGlt
aXRzLmg+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+CisjIGluY2x1ZGUgPGVycm5vLmg+CisjIGluY2x1
ZGUgPGZjbnRsLmg+CisjIGluY2x1ZGUgPGxpbWl0cy5oPgogCi0jaWYgR1RFU1RfT1NfV0lORE9X
UwotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbHNlCi0jaW5jbHVkZSA8c3lzL21tYW4uaD4KLSNp
bmNsdWRlIDxzeXMvd2FpdC5oPgotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdU
RVNUX09TX0xJTlVYCisjICBpbmNsdWRlIDxzaWduYWwuaD4KKyMgZW5kaWYgIC8vIEdURVNUX09T
X0xJTlVYCisKKyMgaW5jbHVkZSA8c3RkYXJnLmg+CisKKyMgaWYgR1RFU1RfT1NfV0lORE9XUwor
IyAgaW5jbHVkZSA8d2luZG93cy5oPgorIyBlbHNlCisjICBpbmNsdWRlIDxzeXMvbW1hbi5oPgor
IyAgaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKwor
IyBpZiBHVEVTVF9PU19RTlgKKyMgIGluY2x1ZGUgPHNwYXduLmg+CisjIGVuZGlmICAvLyBHVEVT
VF9PU19RTlgKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0
cmluZy5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCIKKyNpbmNsdWRlICJndGVz
dC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKIAogLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFu
c2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwogLy8gaW1wbGVtZW50YXRpb24u
ICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRl
ZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwot
Ly8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVy
bmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KKy8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJl
IGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGV4aXN0cyB0bworLy8gcHJldmVudCB0aGUg
YWNjaWRlbnRhbCBpbmNsdXNpb24gb2YgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4gdGhlCisvLyB1
c2VyJ3MgY29kZS4KICNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKICNpbmNsdWRlICJz
cmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCiAjdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCkBA
IC0xMDAsMzYgKzExMCw3OSBAQCBHVEVTVF9ERUZJTkVfc3RyaW5nXygKICAgICAiSW5kaWNhdGVz
IHRoZSBmaWxlLCBsaW5lIG51bWJlciwgdGVtcG9yYWwgaW5kZXggb2YgIgogICAgICJ0aGUgc2lu
Z2xlIGRlYXRoIHRlc3QgdG8gcnVuLCBhbmQgYSBmaWxlIGRlc2NyaXB0b3IgdG8gIgogICAgICJ3
aGljaCBhIHN1Y2Nlc3MgY29kZSBtYXkgYmUgc2VudCwgYWxsIHNlcGFyYXRlZCBieSAiCi0gICAg
ImNvbG9ucy4gIFRoaXMgZmxhZyBpcyBzcGVjaWZpZWQgaWYgYW5kIG9ubHkgaWYgdGhlIGN1cnJl
bnQgIgorICAgICJ0aGUgJ3wnIGNoYXJhY3RlcnMuICBUaGlzIGZsYWcgaXMgc3BlY2lmaWVkIGlm
IGFuZCBvbmx5IGlmIHRoZSBjdXJyZW50ICIKICAgICAicHJvY2VzcyBpcyBhIHN1Yi1wcm9jZXNz
IGxhdW5jaGVkIGZvciBydW5uaW5nIGEgdGhyZWFkLXNhZmUgIgogICAgICJkZWF0aCB0ZXN0LiAg
Rk9SIElOVEVSTkFMIFVTRSBPTkxZLiIpOwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiAKICNp
ZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBWYWxp
ZCBvbmx5IGZvciBmYXN0IGRlYXRoIHRlc3RzLiBJbmRpY2F0ZXMgdGhlIGNvZGUgaXMgcnVubmlu
ZyBpbiB0aGUKKy8vIGNoaWxkIHByb2Nlc3Mgb2YgYSBmYXN0IHN0eWxlIGRlYXRoIHRlc3QuCisj
IGlmICFHVEVTVF9PU19XSU5ET1dTCitzdGF0aWMgYm9vbCBnX2luX2Zhc3RfZGVhdGhfdGVzdF9j
aGlsZCA9IGZhbHNlOworIyBlbmRpZgorCisvLyBSZXR1cm5zIGEgQm9vbGVhbiB2YWx1ZSBpbmRp
Y2F0aW5nIHdoZXRoZXIgdGhlIGNhbGxlciBpcyBjdXJyZW50bHkKKy8vIGV4ZWN1dGluZyBpbiB0
aGUgY29udGV4dCBvZiB0aGUgZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzLiAgVG9vbHMgc3VjaCBh
cworLy8gVmFsZ3JpbmQgaGVhcCBjaGVja2VycyBtYXkgbmVlZCB0aGlzIHRvIG1vZGlmeSB0aGVp
ciBiZWhhdmlvciBpbiBkZWF0aAorLy8gdGVzdHMuICBJTVBPUlRBTlQ6IFRoaXMgaXMgYW4gaW50
ZXJuYWwgdXRpbGl0eS4gIFVzaW5nIGl0IG1heSBicmVhayB0aGUKKy8vIGltcGxlbWVudGF0aW9u
IG9mIGRlYXRoIHRlc3RzLiAgVXNlciBjb2RlIE1VU1QgTk9UIHVzZSBpdC4KK2Jvb2wgSW5EZWF0
aFRlc3RDaGlsZCgpIHsKKyMgaWYgR1RFU1RfT1NfV0lORE9XUworCisgIC8vIE9uIFdpbmRvd3Ms
IGRlYXRoIHRlc3RzIGFyZSB0aHJlYWQtc2FmZSByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiB0
aGUKKyAgLy8gZGVhdGhfdGVzdF9zdHlsZSBmbGFnLgorICByZXR1cm4gIUdURVNUX0ZMQUcoaW50
ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpLmVtcHR5KCk7CisKKyMgZWxzZQorCisgIGlmIChHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZlIikKKyAgICByZXR1cm4gIUdURVNU
X0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpLmVtcHR5KCk7CisgIGVsc2UKKyAgICByZXR1
cm4gZ19pbl9mYXN0X2RlYXRoX3Rlc3RfY2hpbGQ7CisjZW5kaWYKK30KKworfSAgLy8gbmFtZXNw
YWNlIGludGVybmFsCisKIC8vIEV4aXRlZFdpdGhDb2RlIGNvbnN0cnVjdG9yLgogRXhpdGVkV2l0
aENvZGU6OkV4aXRlZFdpdGhDb2RlKGludCBleGl0X2NvZGUpIDogZXhpdF9jb2RlXyhleGl0X2Nv
ZGUpIHsKIH0KIAogLy8gRXhpdGVkV2l0aENvZGUgZnVuY3Rpb24tY2FsbCBvcGVyYXRvci4KIGJv
b2wgRXhpdGVkV2l0aENvZGU6Om9wZXJhdG9yKCkoaW50IGV4aXRfc3RhdHVzKSBjb25zdCB7Ci0j
aWYgR1RFU1RfT1NfV0lORE9XUworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisKICAgcmV0dXJuIGV4
aXRfc3RhdHVzID09IGV4aXRfY29kZV87Ci0jZWxzZQorCisjIGVsc2UKKwogICByZXR1cm4gV0lG
RVhJVEVEKGV4aXRfc3RhdHVzKSAmJiBXRVhJVFNUQVRVUyhleGl0X3N0YXR1cykgPT0gZXhpdF9j
b2RlXzsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjIGVuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCiB9CiAKLSNpZiAhR1RFU1RfT1NfV0lORE9XUworIyBpZiAhR1RFU1RfT1NfV0lO
RE9XUwogLy8gS2lsbGVkQnlTaWduYWwgY29uc3RydWN0b3IuCiBLaWxsZWRCeVNpZ25hbDo6S2ls
bGVkQnlTaWduYWwoaW50IHNpZ251bSkgOiBzaWdudW1fKHNpZ251bSkgewogfQogCiAvLyBLaWxs
ZWRCeVNpZ25hbCBmdW5jdGlvbi1jYWxsIG9wZXJhdG9yLgogYm9vbCBLaWxsZWRCeVNpZ25hbDo6
b3BlcmF0b3IoKShpbnQgZXhpdF9zdGF0dXMpIGNvbnN0IHsKKyMgIGlmIGRlZmluZWQoR1RFU1Rf
S0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8pCisgIHsKKyAgICBib29sIHJlc3VsdDsKKyAgICBp
ZiAoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8oc2lnbnVtXywgZXhpdF9zdGF0dXMs
ICZyZXN1bHQpKSB7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgfQorIyAgZW5kaWYg
IC8vIGRlZmluZWQoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8pCiAgIHJldHVybiBX
SUZTSUdOQUxFRChleGl0X3N0YXR1cykgJiYgV1RFUk1TSUcoZXhpdF9zdGF0dXMpID09IHNpZ251
bV87CiB9Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyAhR1RFU1Rf
T1NfV0lORE9XUwogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCkBAIC0xMzcsMjIgKzE5MCwyNyBA
QCBuYW1lc3BhY2UgaW50ZXJuYWwgewogCiAvLyBHZW5lcmF0ZXMgYSB0ZXh0dWFsIGRlc2NyaXB0
aW9uIG9mIGEgZ2l2ZW4gZXhpdCBjb2RlLCBpbiB0aGUgZm9ybWF0CiAvLyBzcGVjaWZpZWQgYnkg
d2FpdCgyKS4KLXN0YXRpYyBTdHJpbmcgRXhpdFN1bW1hcnkoaW50IGV4aXRfY29kZSkgeworc3Rh
dGljIHN0ZDo6c3RyaW5nIEV4aXRTdW1tYXJ5KGludCBleGl0X2NvZGUpIHsKICAgTWVzc2FnZSBt
OwotI2lmIEdURVNUX09TX1dJTkRPV1MKKworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisKICAgbSA8
PCAiRXhpdGVkIHdpdGggZXhpdCBzdGF0dXMgIiA8PCBleGl0X2NvZGU7Ci0jZWxzZQorCisjIGVs
c2UKKwogICBpZiAoV0lGRVhJVEVEKGV4aXRfY29kZSkpIHsKICAgICBtIDw8ICJFeGl0ZWQgd2l0
aCBleGl0IHN0YXR1cyAiIDw8IFdFWElUU1RBVFVTKGV4aXRfY29kZSk7CiAgIH0gZWxzZSBpZiAo
V0lGU0lHTkFMRUQoZXhpdF9jb2RlKSkgewogICAgIG0gPDwgIlRlcm1pbmF0ZWQgYnkgc2lnbmFs
ICIgPDwgV1RFUk1TSUcoZXhpdF9jb2RlKTsKICAgfQotI2lmZGVmIFdDT1JFRFVNUAorIyAgaWZk
ZWYgV0NPUkVEVU1QCiAgIGlmIChXQ09SRURVTVAoZXhpdF9jb2RlKSkgewogICAgIG0gPDwgIiAo
Y29yZSBkdW1wZWQpIjsKICAgfQotI2VuZGlmCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MK
KyMgIGVuZGlmCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKICAgcmV0dXJuIG0uR2V0
U3RyaW5nKCk7CiB9CiAKQEAgLTE2MiwxMiArMjIwLDEyIEBAIGJvb2wgRXhpdGVkVW5zdWNjZXNz
ZnVsbHkoaW50IGV4aXRfc3RhdHVzKSB7CiAgIHJldHVybiAhRXhpdGVkV2l0aENvZGUoMCkoZXhp
dF9zdGF0dXMpOwogfQogCi0jaWYgIUdURVNUX09TX1dJTkRPV1MKKyMgaWYgIUdURVNUX09TX1dJ
TkRPV1MKIC8vIEdlbmVyYXRlcyBhIHRleHR1YWwgZmFpbHVyZSBtZXNzYWdlIHdoZW4gYSBkZWF0
aCB0ZXN0IGZpbmRzIG1vcmUgdGhhbgogLy8gb25lIHRocmVhZCBydW5uaW5nLCBvciBjYW5ub3Qg
ZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgdGhyZWFkcywgcHJpb3IKIC8vIHRvIGV4ZWN1dGluZyB0
aGUgZ2l2ZW4gc3RhdGVtZW50LiAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZQogLy8g
Y2FsbGVyIG5vdCB0byBwYXNzIGEgdGhyZWFkX2NvdW50IG9mIDEuCi1zdGF0aWMgU3RyaW5nIERl
YXRoVGVzdFRocmVhZFdhcm5pbmcoc2l6ZV90IHRocmVhZF9jb3VudCkgeworc3RhdGljIHN0ZDo6
c3RyaW5nIERlYXRoVGVzdFRocmVhZFdhcm5pbmcoc2l6ZV90IHRocmVhZF9jb3VudCkgewogICBN
ZXNzYWdlIG1zZzsKICAgbXNnIDw8ICJEZWF0aCB0ZXN0cyB1c2UgZm9yaygpLCB3aGljaCBpcyB1
bnNhZmUgcGFydGljdWxhcmx5IgogICAgICAgPDwgIiBpbiBhIHRocmVhZGVkIGNvbnRleHQuIEZv
ciB0aGlzIHRlc3QsICIgPDwgR1RFU1RfTkFNRV8gPDwgIiAiOwpAQCAtMTc3LDI3ICsyMzUsMzEg
QEAgc3RhdGljIFN0cmluZyBEZWF0aFRlc3RUaHJlYWRXYXJuaW5nKHNpemVfdCB0aHJlYWRfY291
bnQpIHsKICAgICBtc2cgPDwgImRldGVjdGVkICIgPDwgdGhyZWFkX2NvdW50IDw8ICIgdGhyZWFk
cy4iOwogICByZXR1cm4gbXNnLkdldFN0cmluZygpOwogfQotI2VuZGlmICAvLyAhR1RFU1RfT1Nf
V0lORE9XUworIyBlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1MKIAogLy8gRmxhZyBjaGFyYWN0
ZXJzIGZvciByZXBvcnRpbmcgYSBkZWF0aCB0ZXN0IHRoYXQgZGlkIG5vdCBkaWUuCiBzdGF0aWMg
Y29uc3QgY2hhciBrRGVhdGhUZXN0TGl2ZWQgPSAnTCc7CiBzdGF0aWMgY29uc3QgY2hhciBrRGVh
dGhUZXN0UmV0dXJuZWQgPSAnUic7CitzdGF0aWMgY29uc3QgY2hhciBrRGVhdGhUZXN0VGhyZXcg
PSAnVCc7CiBzdGF0aWMgY29uc3QgY2hhciBrRGVhdGhUZXN0SW50ZXJuYWxFcnJvciA9ICdJJzsK
IAotLy8gQW4gZW51bWVyYXRpb24gZGVzY3JpYmluZyBhbGwgb2YgdGhlIHBvc3NpYmxlIHdheXMg
dGhhdCBhIGRlYXRoIHRlc3QKLS8vIGNhbiBjb25jbHVkZS4gIERJRUQgbWVhbnMgdGhhdCB0aGUg
cHJvY2VzcyBkaWVkIHdoaWxlIGV4ZWN1dGluZyB0aGUKLS8vIHRlc3QgY29kZTsgTElWRUQgbWVh
bnMgdGhhdCBwcm9jZXNzIGxpdmVkIGJleW9uZCB0aGUgZW5kIG9mIHRoZSB0ZXN0Ci0vLyBjb2Rl
OyBhbmQgUkVUVVJORUQgbWVhbnMgdGhhdCB0aGUgdGVzdCBzdGF0ZW1lbnQgYXR0ZW1wdGVkIGEg
InJldHVybiwiCi0vLyB3aGljaCBpcyBub3QgYWxsb3dlZC4gIElOX1BST0dSRVNTIG1lYW5zIHRo
ZSB0ZXN0IGhhcyBub3QgeWV0Ci0vLyBjb25jbHVkZWQuCi1lbnVtIERlYXRoVGVzdE91dGNvbWUg
eyBJTl9QUk9HUkVTUywgRElFRCwgTElWRUQsIFJFVFVSTkVEIH07CisvLyBBbiBlbnVtZXJhdGlv
biBkZXNjcmliaW5nIGFsbCBvZiB0aGUgcG9zc2libGUgd2F5cyB0aGF0IGEgZGVhdGggdGVzdCBj
YW4KKy8vIGNvbmNsdWRlLiAgRElFRCBtZWFucyB0aGF0IHRoZSBwcm9jZXNzIGRpZWQgd2hpbGUg
ZXhlY3V0aW5nIHRoZSB0ZXN0CisvLyBjb2RlOyBMSVZFRCBtZWFucyB0aGF0IHByb2Nlc3MgbGl2
ZWQgYmV5b25kIHRoZSBlbmQgb2YgdGhlIHRlc3QgY29kZTsKKy8vIFJFVFVSTkVEIG1lYW5zIHRo
YXQgdGhlIHRlc3Qgc3RhdGVtZW50IGF0dGVtcHRlZCB0byBleGVjdXRlIGEgcmV0dXJuCisvLyBz
dGF0ZW1lbnQsIHdoaWNoIGlzIG5vdCBhbGxvd2VkOyBUSFJFVyBtZWFucyB0aGF0IHRoZSB0ZXN0
IHN0YXRlbWVudAorLy8gcmV0dXJuZWQgY29udHJvbCBieSB0aHJvd2luZyBhbiBleGNlcHRpb24u
ICBJTl9QUk9HUkVTUyBtZWFucyB0aGUgdGVzdAorLy8gaGFzIG5vdCB5ZXQgY29uY2x1ZGVkLgor
Ly8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogVW5pZnkgbmFtZXMgYW5kIHBvc3NpYmx5IHZhbHVl
cyBmb3IKKy8vIEFib3J0UmVhc29uLCBEZWF0aFRlc3RPdXRjb21lLCBhbmQgZmxhZyBjaGFyYWN0
ZXJzIGFib3ZlLgorZW51bSBEZWF0aFRlc3RPdXRjb21lIHsgSU5fUFJPR1JFU1MsIERJRUQsIExJ
VkVELCBSRVRVUk5FRCwgVEhSRVcgfTsKIAogLy8gUm91dGluZSBmb3IgYWJvcnRpbmcgdGhlIHBy
b2dyYW0gd2hpY2ggaXMgc2FmZSB0byBjYWxsIGZyb20gYW4KIC8vIGV4ZWMtc3R5bGUgZGVhdGgg
dGVzdCBjaGlsZCBwcm9jZXNzLCBpbiB3aGljaCBjYXNlIHRoZSBlcnJvcgogLy8gbWVzc2FnZSBp
cyBwcm9wYWdhdGVkIGJhY2sgdG8gdGhlIHBhcmVudCBwcm9jZXNzLiAgT3RoZXJ3aXNlLCB0aGUK
IC8vIG1lc3NhZ2UgaXMgc2ltcGx5IHByaW50ZWQgdG8gc3RkZXJyLiAgSW4gZWl0aGVyIGNhc2Us
IHRoZSBwcm9ncmFtCiAvLyB0aGVuIGV4aXRzIHdpdGggc3RhdHVzIDEuCi12b2lkIERlYXRoVGVz
dEFib3J0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewordm9pZCBEZWF0aFRlc3RBYm9ydChjb25z
dCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgewogICAvLyBPbiBhIFBPU0lYIHN5c3RlbSwgdGhpcyBm
dW5jdGlvbiBtYXkgYmUgY2FsbGVkIGZyb20gYSB0aHJlYWRzYWZlLXN0eWxlCiAgIC8vIGRlYXRo
IHRlc3QgY2hpbGQgcHJvY2Vzcywgd2hpY2ggb3BlcmF0ZXMgb24gYSB2ZXJ5IHNtYWxsIHN0YWNr
LiAgVXNlCiAgIC8vIHRoZSBoZWFwIGZvciBhbnkgYWRkaXRpb25hbCBub24tbWludXNjdWxlIG1l
bW9yeSByZXF1aXJlbWVudHMuCkBAIC0yMTIsMTggKzI3NCwxOSBAQCB2b2lkIERlYXRoVGVzdEFi
b3J0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewogICB9IGVsc2UgewogICAgIGZwcmludGYoc3Rk
ZXJyLCAiJXMiLCBtZXNzYWdlLmNfc3RyKCkpOwogICAgIGZmbHVzaChzdGRlcnIpOwotICAgIGFi
b3J0KCk7CisgICAgcG9zaXg6OkFib3J0KCk7CiAgIH0KIH0KIAogLy8gQSByZXBsYWNlbWVudCBm
b3IgQ0hFQ0sgdGhhdCBjYWxscyBEZWF0aFRlc3RBYm9ydCBpZiB0aGUgYXNzZXJ0aW9uCiAvLyBm
YWlscy4KLSNkZWZpbmUgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oZXhwcmVzc2lvbikgXAorIyBk
ZWZpbmUgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oZXhwcmVzc2lvbikgXAogICBkbyB7IFwKICAg
ICBpZiAoITo6dGVzdGluZzo6aW50ZXJuYWw6OklzVHJ1ZShleHByZXNzaW9uKSkgeyBcCi0gICAg
ICBEZWF0aFRlc3RBYm9ydCg6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmc6OkZvcm1hdCggXAot
ICAgICAgICAgICJDSEVDSyBmYWlsZWQ6IEZpbGUgJXMsIGxpbmUgJWQ6ICVzIiwgXAotICAgICAg
ICAgIF9fRklMRV9fLCBfX0xJTkVfXywgI2V4cHJlc3Npb24pKTsgXAorICAgICAgRGVhdGhUZXN0
QWJvcnQoIFwKKyAgICAgICAgICA6OnN0ZDo6c3RyaW5nKCJDSEVDSyBmYWlsZWQ6IEZpbGUgIikg
KyBfX0ZJTEVfXyArICAiLCBsaW5lICIgXAorICAgICAgICAgICsgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6U3RyZWFtYWJsZVRvU3RyaW5nKF9fTElORV9fKSArICI6ICIgXAorICAgICAgICAgICsgI2V4
cHJlc3Npb24pOyBcCiAgICAgfSBcCiAgIH0gd2hpbGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFs
d2F5c0ZhbHNlKCkpCiAKQEAgLTIzNCwyMiArMjk3LDIzIEBAIHZvaWQgRGVhdGhUZXN0QWJvcnQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7CiAvLyBldmFsdWF0ZXMgdGhlIGV4cHJlc3Npb24gYXMg
bG9uZyBhcyBpdCBldmFsdWF0ZXMgdG8gLTEgYW5kIHNldHMKIC8vIGVycm5vIHRvIEVJTlRSLiAg
SWYgdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIC0xIGJ1dCBlcnJubyBpcwogLy8gc29tZXRo
aW5nIG90aGVyIHRoYW4gRUlOVFIsIERlYXRoVGVzdEFib3J0IGlzIGNhbGxlZC4KLSNkZWZpbmUg
R1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhleHByZXNzaW9uKSBcCisjIGRlZmluZSBH
VEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGV4cHJlc3Npb24pIFwKICAgZG8geyBcCiAg
ICAgaW50IGd0ZXN0X3JldHZhbDsgXAogICAgIGRvIHsgXAogICAgICAgZ3Rlc3RfcmV0dmFsID0g
KGV4cHJlc3Npb24pOyBcCiAgICAgfSB3aGlsZSAoZ3Rlc3RfcmV0dmFsID09IC0xICYmIGVycm5v
ID09IEVJTlRSKTsgXAogICAgIGlmIChndGVzdF9yZXR2YWwgPT0gLTEpIHsgXAotICAgICAgRGVh
dGhUZXN0QWJvcnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOjpGb3JtYXQoIFwKLSAgICAg
ICAgICAiQ0hFQ0sgZmFpbGVkOiBGaWxlICVzLCBsaW5lICVkOiAlcyAhPSAtMSIsIFwKLSAgICAg
ICAgICBfX0ZJTEVfXywgX19MSU5FX18sICNleHByZXNzaW9uKSk7IFwKKyAgICAgIERlYXRoVGVz
dEFib3J0KCBcCisgICAgICAgICAgOjpzdGQ6OnN0cmluZygiQ0hFQ0sgZmFpbGVkOiBGaWxlICIp
ICsgX19GSUxFX18gKyAiLCBsaW5lICIgXAorICAgICAgICAgICsgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6U3RyZWFtYWJsZVRvU3RyaW5nKF9fTElORV9fKSArICI6ICIgXAorICAgICAgICAgICsgI2V4
cHJlc3Npb24gKyAiICE9IC0xIik7IFwKICAgICB9IFwKICAgfSB3aGlsZSAoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6QWx3YXlzRmFsc2UoKSkKIAogLy8gUmV0dXJucyB0aGUgbWVzc2FnZSBkZXNjcmli
aW5nIHRoZSBsYXN0IHN5c3RlbSBlcnJvciBpbiBlcnJuby4KLVN0cmluZyBHZXRMYXN0RXJybm9E
ZXNjcmlwdGlvbigpIHsKLSAgICByZXR1cm4gU3RyaW5nKGVycm5vID09IDAgPyAiIiA6IHBvc2l4
OjpTdHJFcnJvcihlcnJubykpOworc3RkOjpzdHJpbmcgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24o
KSB7CisgICAgcmV0dXJuIGVycm5vID09IDAgPyAiIiA6IHBvc2l4OjpTdHJFcnJvcihlcnJubyk7
CiB9CiAKIC8vIFRoaXMgaXMgY2FsbGVkIGZyb20gYSBkZWF0aCB0ZXN0IHBhcmVudCBwcm9jZXNz
IHRvIHJlYWQgYSBmYWlsdXJlCkBAIC0yOTksMTEgKzM2MywxMSBAQCBjb25zdCBjaGFyKiBEZWF0
aFRlc3Q6Okxhc3RNZXNzYWdlKCkgewogICByZXR1cm4gbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2Vf
LmNfc3RyKCk7CiB9CiAKLXZvaWQgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3Nh
Z2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7Cit2b2lkIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVh
dGhfdGVzdF9tZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7CiAgIGxhc3RfZGVh
dGhfdGVzdF9tZXNzYWdlXyA9IG1lc3NhZ2U7CiB9CiAKLVN0cmluZyBEZWF0aFRlc3Q6Omxhc3Rf
ZGVhdGhfdGVzdF9tZXNzYWdlXzsKK3N0ZDo6c3RyaW5nIERlYXRoVGVzdDo6bGFzdF9kZWF0aF90
ZXN0X21lc3NhZ2VfOwogCiAvLyBQcm92aWRlcyBjcm9zcyBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlv
biBmb3Igc29tZSBkZWF0aCBmdW5jdGlvbmFsaXR5LgogY2xhc3MgRGVhdGhUZXN0SW1wbCA6IHB1
YmxpYyBEZWF0aFRlc3QgewpAQCAtMzg4LDYgKzQ1Miw5IEBAIHZvaWQgRGVhdGhUZXN0SW1wbDo6
UmVhZEFuZEludGVycHJldFN0YXR1c0J5dGUoKSB7CiAgICAgICBjYXNlIGtEZWF0aFRlc3RSZXR1
cm5lZDoKICAgICAgICAgc2V0X291dGNvbWUoUkVUVVJORUQpOwogICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2Uga0RlYXRoVGVzdFRocmV3OgorICAgICAgICBzZXRfb3V0Y29tZShUSFJFVyk7Cisg
ICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBrRGVhdGhUZXN0TGl2ZWQ6CiAgICAgICAgIHNldF9v
dXRjb21lKExJVkVEKTsKICAgICAgICAgYnJlYWs7CkBAIC00MTYsMTkgKzQ4Myw0NiBAQCB2b2lk
IERlYXRoVGVzdEltcGw6OkFib3J0KEFib3J0UmVhc29uIHJlYXNvbikgewogICAvLyBpdCBmaW5k
cyBhbnkgZGF0YSBpbiBvdXIgcGlwZS4gIFNvLCBoZXJlIHdlIHdyaXRlIGEgc2luZ2xlIGZsYWcg
Ynl0ZQogICAvLyB0byB0aGUgcGlwZSwgdGhlbiBleGl0LgogICBjb25zdCBjaGFyIHN0YXR1c19j
aCA9Ci0gICAgICByZWFzb24gPT0gVEVTVF9ESURfTk9UX0RJRSA/IGtEZWF0aFRlc3RMaXZlZCA6
IGtEZWF0aFRlc3RSZXR1cm5lZDsKKyAgICAgIHJlYXNvbiA9PSBURVNUX0RJRF9OT1RfRElFID8g
a0RlYXRoVGVzdExpdmVkIDoKKyAgICAgIHJlYXNvbiA9PSBURVNUX1RIUkVXX0VYQ0VQVElPTiA/
IGtEZWF0aFRlc3RUaHJldyA6IGtEZWF0aFRlc3RSZXR1cm5lZDsKKwogICBHVEVTVF9ERUFUSF9U
RVNUX0NIRUNLX1NZU0NBTExfKHBvc2l4OjpXcml0ZSh3cml0ZV9mZCgpLCAmc3RhdHVzX2NoLCAx
KSk7Ci0gIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8ocG9zaXg6OkNsb3NlKHdyaXRl
X2ZkKCkpKTsKKyAgLy8gV2UgYXJlIGxlYWtpbmcgdGhlIGRlc2NyaXB0b3IgaGVyZSBiZWNhdXNl
IG9uIHNvbWUgcGxhdGZvcm1zIChpLmUuLAorICAvLyB3aGVuIGJ1aWx0IGFzIFdpbmRvd3MgRExM
KSwgZGVzdHJ1Y3RvcnMgb2YgZ2xvYmFsIG9iamVjdHMgd2lsbCBzdGlsbAorICAvLyBydW4gYWZ0
ZXIgY2FsbGluZyBfZXhpdCgpLiBPbiBzdWNoIHN5c3RlbXMsIHdyaXRlX2ZkXyB3aWxsIGJlCisg
IC8vIGluZGlyZWN0bHkgY2xvc2VkIGZyb20gdGhlIGRlc3RydWN0b3Igb2YgVW5pdFRlc3RJbXBs
LCBjYXVzaW5nIGRvdWJsZQorICAvLyBjbG9zZSBpZiBpdCBpcyBhbHNvIGNsb3NlZCBoZXJlLiBP
biBkZWJ1ZyBjb25maWd1cmF0aW9ucywgZG91YmxlIGNsb3NlCisgIC8vIG1heSBhc3NlcnQuIEFz
IHRoZXJlIGFyZSBubyBpbi1wcm9jZXNzIGJ1ZmZlcnMgdG8gZmx1c2ggaGVyZSwgd2UgYXJlCisg
IC8vIHJlbHlpbmcgb24gdGhlIE9TIHRvIGNsb3NlIHRoZSBkZXNjcmlwdG9yIGFmdGVyIHRoZSBw
cm9jZXNzIHRlcm1pbmF0ZXMKKyAgLy8gd2hlbiB0aGUgZGVzdHJ1Y3RvcnMgYXJlIG5vdCBydW4u
CiAgIF9leGl0KDEpOyAgLy8gRXhpdHMgdy9vIGFueSBub3JtYWwgZXhpdCBob29rcyAod2Ugd2Vy
ZSBzdXBwb3NlZCB0byBjcmFzaCkKIH0KIAorLy8gUmV0dXJucyBhbiBpbmRlbnRlZCBjb3B5IG9m
IHN0ZGVyciBvdXRwdXQgZm9yIGEgZGVhdGggdGVzdC4KKy8vIFRoaXMgbWFrZXMgZGlzdGluZ3Vp
c2hpbmcgZGVhdGggdGVzdCBvdXRwdXQgbGluZXMgZnJvbSByZWd1bGFyIGxvZyBsaW5lcworLy8g
bXVjaCBlYXNpZXIuCitzdGF0aWMgOjpzdGQ6OnN0cmluZyBGb3JtYXREZWF0aFRlc3RPdXRwdXQo
Y29uc3QgOjpzdGQ6OnN0cmluZyYgb3V0cHV0KSB7CisgIDo6c3RkOjpzdHJpbmcgcmV0OworICBm
b3IgKHNpemVfdCBhdCA9IDA7IDsgKSB7CisgICAgY29uc3Qgc2l6ZV90IGxpbmVfZW5kID0gb3V0
cHV0LmZpbmQoJ1xuJywgYXQpOworICAgIHJldCArPSAiWyAgREVBVEggICBdICI7CisgICAgaWYg
KGxpbmVfZW5kID09IDo6c3RkOjpzdHJpbmc6Om5wb3MpIHsKKyAgICAgIHJldCArPSBvdXRwdXQu
c3Vic3RyKGF0KTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXQgKz0gb3V0cHV0LnN1YnN0
cihhdCwgbGluZV9lbmQgKyAxIC0gYXQpOworICAgIGF0ID0gbGluZV9lbmQgKyAxOworICB9Cisg
IHJldHVybiByZXQ7Cit9CisKIC8vIEFzc2Vzc2VzIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2Yg
YSBkZWF0aCB0ZXN0LCB1c2luZyBib3RoIHByaXZhdGUKIC8vIG1lbWJlcnMgd2hpY2ggaGF2ZSBw
cmV2aW91c2x5IGJlZW4gc2V0LCBhbmQgb25lIGFyZ3VtZW50OgogLy8KIC8vIFByaXZhdGUgZGF0
YSBtZW1iZXJzOgogLy8gICBvdXRjb21lOiAgQW4gZW51bWVyYXRpb24gZGVzY3JpYmluZyBob3cg
dGhlIGRlYXRoIHRlc3QKLS8vICAgICAgICAgICAgIGNvbmNsdWRlZDogRElFRCwgTElWRUQsIG9y
IFJFVFVSTkVELiAgVGhlIGRlYXRoIHRlc3QgZmFpbHMKLS8vICAgICAgICAgICAgIGluIHRoZSBs
YXR0ZXIgdHdvIGNhc2VzLgorLy8gICAgICAgICAgICAgY29uY2x1ZGVkOiBESUVELCBMSVZFRCwg
VEhSRVcsIG9yIFJFVFVSTkVELiAgVGhlIGRlYXRoIHRlc3QKKy8vICAgICAgICAgICAgIGZhaWxz
IGluIHRoZSBsYXR0ZXIgdGhyZWUgY2FzZXMuCiAvLyAgIHN0YXR1czogICBUaGUgZXhpdCBzdGF0
dXMgb2YgdGhlIGNoaWxkIHByb2Nlc3MuIE9uICpuaXgsIGl0IGlzIGluIHRoZQogLy8gICAgICAg
ICAgICAgaW4gdGhlIGZvcm1hdCBzcGVjaWZpZWQgYnkgd2FpdCgyKS4gT24gV2luZG93cywgdGhp
cyBpcyB0aGUKIC8vICAgICAgICAgICAgIHZhbHVlIHN1cHBsaWVkIHRvIHRoZSBFeGl0UHJvY2Vz
cygpIEFQSSBvciBhIG51bWVyaWMgY29kZQpAQCAtNDQ4LDcgKzU0Miw3IEBAIGJvb2wgRGVhdGhU
ZXN0SW1wbDo6UGFzc2VkKGJvb2wgc3RhdHVzX29rKSB7CiAgIGlmICghc3Bhd25lZCgpKQogICAg
IHJldHVybiBmYWxzZTsKIAotICBjb25zdCBTdHJpbmcgZXJyb3JfbWVzc2FnZSA9IEdldENhcHR1
cmVkU3RkZXJyKCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGVycm9yX21lc3NhZ2UgPSBHZXRDYXB0
dXJlZFN0ZGVycigpOwogCiAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICBNZXNzYWdlIGJ1ZmZl
cjsKQEAgLTQ1NywxMSArNTUxLDE1IEBAIGJvb2wgRGVhdGhUZXN0SW1wbDo6UGFzc2VkKGJvb2wg
c3RhdHVzX29rKSB7CiAgIHN3aXRjaCAob3V0Y29tZSgpKSB7CiAgICAgY2FzZSBMSVZFRDoKICAg
ICAgIGJ1ZmZlciA8PCAiICAgIFJlc3VsdDogZmFpbGVkIHRvIGRpZS5cbiIKLSAgICAgICAgICAg
ICA8PCAiIEVycm9yIG1zZzogIiA8PCBlcnJvcl9tZXNzYWdlOworICAgICAgICAgICAgIDw8ICIg
RXJyb3IgbXNnOlxuIiA8PCBGb3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2FnZSk7Cisg
ICAgICBicmVhazsKKyAgICBjYXNlIFRIUkVXOgorICAgICAgYnVmZmVyIDw8ICIgICAgUmVzdWx0
OiB0aHJldyBhbiBleGNlcHRpb24uXG4iCisgICAgICAgICAgICAgPDwgIiBFcnJvciBtc2c6XG4i
IDw8IEZvcm1hdERlYXRoVGVzdE91dHB1dChlcnJvcl9tZXNzYWdlKTsKICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgUkVUVVJORUQ6CiAgICAgICBidWZmZXIgPDwgIiAgICBSZXN1bHQ6IGlsbGVnYWwg
cmV0dXJuIGluIHRlc3Qgc3RhdGVtZW50LlxuIgotICAgICAgICAgICAgIDw8ICIgRXJyb3IgbXNn
OiAiIDw8IGVycm9yX21lc3NhZ2U7CisgICAgICAgICAgICAgPDwgIiBFcnJvciBtc2c6XG4iIDw8
IEZvcm1hdERlYXRoVGVzdE91dHB1dChlcnJvcl9tZXNzYWdlKTsKICAgICAgIGJyZWFrOwogICAg
IGNhc2UgRElFRDoKICAgICAgIGlmIChzdGF0dXNfb2spIHsKQEAgLTQ3MSwxMSArNTY5LDEyIEBA
IGJvb2wgRGVhdGhUZXN0SW1wbDo6UGFzc2VkKGJvb2wgc3RhdHVzX29rKSB7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgYnVmZmVyIDw8ICIgICAgUmVzdWx0OiBkaWVkIGJ1dCBub3Qgd2l0
aCBleHBlY3RlZCBlcnJvci5cbiIKICAgICAgICAgICAgICAgICAgPDwgIiAgRXhwZWN0ZWQ6ICIg
PDwgcmVnZXgoKS0+cGF0dGVybigpIDw8ICJcbiIKLSAgICAgICAgICAgICAgICAgPDwgIkFjdHVh
bCBtc2c6ICIgPDwgZXJyb3JfbWVzc2FnZTsKKyAgICAgICAgICAgICAgICAgPDwgIkFjdHVhbCBt
c2c6XG4iIDw8IEZvcm1hdERlYXRoVGVzdE91dHB1dChlcnJvcl9tZXNzYWdlKTsKICAgICAgICAg
fQogICAgICAgfSBlbHNlIHsKICAgICAgICAgYnVmZmVyIDw8ICIgICAgUmVzdWx0OiBkaWVkIGJ1
dCBub3Qgd2l0aCBleHBlY3RlZCBleGl0IGNvZGU6XG4iCi0gICAgICAgICAgICAgICA8PCAiICAg
ICAgICAgICAgIiA8PCBFeGl0U3VtbWFyeShzdGF0dXMoKSkgPDwgIlxuIjsKKyAgICAgICAgICAg
ICAgIDw8ICIgICAgICAgICAgICAiIDw8IEV4aXRTdW1tYXJ5KHN0YXR1cygpKSA8PCAiXG4iCisg
ICAgICAgICAgICAgICA8PCAiQWN0dWFsIG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0
KGVycm9yX21lc3NhZ2UpOwogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTl9QUk9H
UkVTUzoKQEAgLTQ4OCw3ICs1ODcsNyBAQCBib29sIERlYXRoVGVzdEltcGw6OlBhc3NlZChib29s
IHN0YXR1c19vaykgewogICByZXR1cm4gc3VjY2VzczsKIH0KIAotI2lmIEdURVNUX09TX1dJTkRP
V1MKKyMgaWYgR1RFU1RfT1NfV0lORE9XUwogLy8gV2luZG93c0RlYXRoVGVzdCBpbXBsZW1lbnRz
IGRlYXRoIHRlc3RzIG9uIFdpbmRvd3MuIER1ZSB0byB0aGUKIC8vIHNwZWNpZmljcyBvZiBzdGFy
dGluZyBuZXcgcHJvY2Vzc2VzIG9uIFdpbmRvd3MsIGRlYXRoIHRlc3RzIHRoZXJlIGFyZQogLy8g
YWx3YXlzIHRocmVhZHNhZmUsIGFuZCBHb29nbGUgVGVzdCBjb25zaWRlcnMgdGhlCkBAIC01MTks
MTEgKzYxOCwxMSBAQCBib29sIERlYXRoVGVzdEltcGw6OlBhc3NlZChib29sIHN0YXR1c19vaykg
ewogLy8KIGNsYXNzIFdpbmRvd3NEZWF0aFRlc3QgOiBwdWJsaWMgRGVhdGhUZXN0SW1wbCB7CiAg
cHVibGljOgotICBXaW5kb3dzRGVhdGhUZXN0KGNvbnN0IGNoYXIqIHN0YXRlbWVudCwKLSAgICAg
ICAgICAgICAgICAgICBjb25zdCBSRSogcmVnZXgsCisgIFdpbmRvd3NEZWF0aFRlc3QoY29uc3Qg
Y2hhciogYV9zdGF0ZW1lbnQsCisgICAgICAgICAgICAgICAgICAgY29uc3QgUkUqIGFfcmVnZXgs
CiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwKICAgICAgICAgICAgICAgICAg
ICBpbnQgbGluZSkKLSAgICAgIDogRGVhdGhUZXN0SW1wbChzdGF0ZW1lbnQsIHJlZ2V4KSwgZmls
ZV8oZmlsZSksIGxpbmVfKGxpbmUpIHt9CisgICAgICA6IERlYXRoVGVzdEltcGwoYV9zdGF0ZW1l
bnQsIGFfcmVnZXgpLCBmaWxlXyhmaWxlKSwgbGluZV8obGluZSkge30KIAogICAvLyBBbGwgb2Yg
dGhlc2UgdmlydHVhbCBmdW5jdGlvbnMgYXJlIGluaGVyaXRlZCBmcm9tIERlYXRoVGVzdC4KICAg
dmlydHVhbCBpbnQgV2FpdCgpOwpAQCAtNTgwLDEyICs2NzksMTIgQEAgaW50IFdpbmRvd3NEZWF0
aFRlc3Q6OldhaXQoKSB7CiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKAogICAgICAgV0FJVF9P
QkpFQ1RfMCA9PSA6OldhaXRGb3JTaW5nbGVPYmplY3QoY2hpbGRfaGFuZGxlXy5HZXQoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElORklOSVRFKSk7Ci0g
IERXT1JEIHN0YXR1czsKLSAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oOjpHZXRFeGl0Q29kZVBy
b2Nlc3MoY2hpbGRfaGFuZGxlXy5HZXQoKSwgJnN0YXR1cykKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIT0gRkFMU0UpOworICBEV09SRCBzdGF0dXNfY29kZTsKKyAgR1RFU1RfREVBVEhfVEVT
VF9DSEVDS18oCisgICAgICA6OkdldEV4aXRDb2RlUHJvY2VzcyhjaGlsZF9oYW5kbGVfLkdldCgp
LCAmc3RhdHVzX2NvZGUpICE9IEZBTFNFKTsKICAgY2hpbGRfaGFuZGxlXy5SZXNldCgpOwotICBz
ZXRfc3RhdHVzKHN0YXRpY19jYXN0PGludD4oc3RhdHVzKSk7Ci0gIHJldHVybiB0aGlzLT5zdGF0
dXMoKTsKKyAgc2V0X3N0YXR1cyhzdGF0aWNfY2FzdDxpbnQ+KHN0YXR1c19jb2RlKSk7CisgIHJl
dHVybiBzdGF0dXMoKTsKIH0KIAogLy8gVGhlIEFzc3VtZVJvbGUgcHJvY2VzcyBmb3IgYSBXaW5k
b3dzIGRlYXRoIHRlc3QuICBJdCBjcmVhdGVzIGEgY2hpbGQKQEAgLTYyNSwyMiArNzI0LDE5IEBA
IERlYXRoVGVzdDo6VGVzdFJvbGUgV2luZG93c0RlYXRoVGVzdDo6QXNzdW1lUm9sZSgpIHsKICAg
ICAgIEZBTFNFLCAgIC8vIFRoZSBpbml0aWFsIHN0YXRlIGlzIG5vbi1zaWduYWxsZWQuCiAgICAg
ICBOVUxMKSk7ICAvLyBUaGUgZXZlbiBpcyB1bm5hbWVkLgogICBHVEVTVF9ERUFUSF9URVNUX0NI
RUNLXyhldmVudF9oYW5kbGVfLkdldCgpICE9IE5VTEwpOwotICBjb25zdCBTdHJpbmcgZmlsdGVy
X2ZsYWcgPSBTdHJpbmc6OkZvcm1hdCgiLS0lcyVzPSVzLiVzIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfRkxBR19QUkVGSVhfLCBrRmlsdGVyRmxh
ZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+dGVz
dF9jYXNlX25hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5mby0+bmFtZSgpKTsKLSAgY29uc3QgU3RyaW5nIGludGVybmFsX2ZsYWcgPSBTdHJpbmc6
OkZvcm1hdCgKLSAgICAiLS0lcyVzPSVzfCVkfCVkfCV1fCVJdXwlSXUiLAotICAgICAgR1RFU1Rf
RkxBR19QUkVGSVhfLAotICAgICAga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZywKLSAgICAgIGZp
bGVfLCBsaW5lXywKLSAgICAgIGRlYXRoX3Rlc3RfaW5kZXgsCi0gICAgICBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBpbnQ+KDo6R2V0Q3VycmVudFByb2Nlc3NJZCgpKSwKLSAgICAgIC8vIHNpemVfdCBo
YXMgdGhlIHNhbWUgd2l0aCBhcyBwb2ludGVycyBvbiBib3RoIDMyLWJpdCBhbmQgNjQtYml0Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGZpbHRlcl9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIp
ICsgR1RFU1RfRkxBR19QUkVGSVhfICsga0ZpbHRlckZsYWcgKyAiPSIgKworICAgICAgaW5mby0+
dGVzdF9jYXNlX25hbWUoKSArICIuIiArIGluZm8tPm5hbWUoKTsKKyAgY29uc3Qgc3RkOjpzdHJp
bmcgaW50ZXJuYWxfZmxhZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0iKSArIEdURVNUX0ZMQUdf
UFJFRklYXyArIGtJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcgKworICAgICAgIj0iICsgZmlsZV8g
KyAifCIgKyBTdHJlYW1hYmxlVG9TdHJpbmcobGluZV8pICsgInwiICsKKyAgICAgIFN0cmVhbWFi
bGVUb1N0cmluZyhkZWF0aF90ZXN0X2luZGV4KSArICJ8IiArCisgICAgICBTdHJlYW1hYmxlVG9T
dHJpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pig6OkdldEN1cnJlbnRQcm9jZXNzSWQoKSkp
ICsKKyAgICAgIC8vIHNpemVfdCBoYXMgdGhlIHNhbWUgd2lkdGggYXMgcG9pbnRlcnMgb24gYm90
aCAzMi1iaXQgYW5kIDY0LWJpdAogICAgICAgLy8gV2luZG93cyBwbGF0Zm9ybXMuCiAgICAgICAv
LyBTZWUgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3RjeGYxZHc2LmFz
cHguCi0gICAgICByZWludGVycHJldF9jYXN0PHNpemVfdD4od3JpdGVfaGFuZGxlKSwKLSAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihldmVudF9oYW5kbGVfLkdldCgpKSk7CisgICAgICAi
fCIgKyBTdHJlYW1hYmxlVG9TdHJpbmcocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KHdyaXRlX2hh
bmRsZSkpICsKKyAgICAgICJ8IiArIFN0cmVhbWFibGVUb1N0cmluZyhyZWludGVycHJldF9jYXN0
PHNpemVfdD4oZXZlbnRfaGFuZGxlXy5HZXQoKSkpOwogCiAgIGNoYXIgZXhlY3V0YWJsZV9wYXRo
W19NQVhfUEFUSCArIDFdOyAgLy8gTk9MSU5UCiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKApA
QCAtNjQ4LDEwICs3NDQsOSBAQCBEZWF0aFRlc3Q6OlRlc3RSb2xlIFdpbmRvd3NEZWF0aFRlc3Q6
OkFzc3VtZVJvbGUoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4ZWN1dGFibGVfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX01BWF9QQVRIKSk7CiAKLSAgU3RyaW5nIGNvbW1hbmRfbGluZSA9IFN0cmluZzo6
Rm9ybWF0KCIlcyAlcyBcIiVzXCIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOjpHZXRDb21tYW5kTGluZUEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbHRlcl9mbGFnLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnRlcm5hbF9mbGFnLmNfc3RyKCkpOworICBzdGQ6OnN0cmluZyBjb21t
YW5kX2xpbmUgPQorICAgICAgc3RkOjpzdHJpbmcoOjpHZXRDb21tYW5kTGluZUEoKSkgKyAiICIg
KyBmaWx0ZXJfZmxhZyArICIgXCIiICsKKyAgICAgIGludGVybmFsX2ZsYWcgKyAiXCIiOwogCiAg
IERlYXRoVGVzdDo6c2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKCIiKTsKIApAQCAtNjg0LDcg
Kzc3OSw3IEBAIERlYXRoVGVzdDo6VGVzdFJvbGUgV2luZG93c0RlYXRoVGVzdDo6QXNzdW1lUm9s
ZSgpIHsKICAgc2V0X3NwYXduZWQodHJ1ZSk7CiAgIHJldHVybiBPVkVSU0VFX1RFU1Q7CiB9Ci0j
ZWxzZSAgLy8gV2UgYXJlIG5vdCBvbiBXaW5kb3dzLgorIyBlbHNlICAvLyBXZSBhcmUgbm90IG9u
IFdpbmRvd3MuCiAKIC8vIEZvcmtpbmdEZWF0aFRlc3QgcHJvdmlkZXMgaW1wbGVtZW50YXRpb25z
IGZvciBtb3N0IG9mIHRoZSBhYnN0cmFjdAogLy8gbWV0aG9kcyBvZiB0aGUgRGVhdGhUZXN0IGlu
dGVyZmFjZS4gIE9ubHkgdGhlIEFzc3VtZVJvbGUgbWV0aG9kIGlzCkBAIC03NjgsNiArODYzLDcg
QEAgRGVhdGhUZXN0OjpUZXN0Um9sZSBOb0V4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAg
ICAgLy8gRXZlbnQgZm9yd2FyZGluZyB0byB0aGUgbGlzdGVuZXJzIG9mIGV2ZW50IGxpc3RlbmVy
IEFQSSBtdXNoIGJlIHNodXQKICAgICAvLyBkb3duIGluIGRlYXRoIHRlc3Qgc3VicHJvY2Vzc2Vz
LgogICAgIEdldFVuaXRUZXN0SW1wbCgpLT5saXN0ZW5lcnMoKS0+U3VwcHJlc3NFdmVudEZvcndh
cmRpbmcoKTsKKyAgICBnX2luX2Zhc3RfZGVhdGhfdGVzdF9jaGlsZCA9IHRydWU7CiAgICAgcmV0
dXJuIEVYRUNVVEVfVEVTVDsKICAgfSBlbHNlIHsKICAgICBHVEVTVF9ERUFUSF9URVNUX0NIRUNL
X1NZU0NBTExfKGNsb3NlKHBpcGVfZmRbMV0pKTsKQEAgLTc4Nyw2ICs4ODMsMTYgQEAgY2xhc3Mg
RXhlY0RlYXRoVGVzdCA6IHB1YmxpYyBGb3JraW5nRGVhdGhUZXN0IHsKICAgICAgIEZvcmtpbmdE
ZWF0aFRlc3QoYV9zdGF0ZW1lbnQsIGFfcmVnZXgpLCBmaWxlXyhmaWxlKSwgbGluZV8obGluZSkg
eyB9CiAgIHZpcnR1YWwgVGVzdFJvbGUgQXNzdW1lUm9sZSgpOwogIHByaXZhdGU6CisgIHN0YXRp
YyA6OnN0ZDo6dmVjdG9yPHRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmc+CisgIEdldEFyZ3ZzRm9y
RGVhdGhUZXN0Q2hpbGRQcm9jZXNzKCkgeworICAgIDo6c3RkOjp2ZWN0b3I8dGVzdGluZzo6aW50
ZXJuYWw6OnN0cmluZz4gYXJncyA9IEdldEluamVjdGFibGVBcmd2cygpOworIyAgaWYgZGVmaW5l
ZChHVEVTVF9FWFRSQV9ERUFUSF9URVNUX0NPTU1BTkRfTElORV9BUkdTXykKKyAgICA6OnN0ZDo6
dmVjdG9yPHRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmc+IGV4dHJhX2FyZ3MgPQorICAgICAgICBH
VEVTVF9FWFRSQV9ERUFUSF9URVNUX0NPTU1BTkRfTElORV9BUkdTXygpOworICAgIGFyZ3MuaW5z
ZXJ0KGFyZ3MuZW5kKCksIGV4dHJhX2FyZ3MuYmVnaW4oKSwgZXh0cmFfYXJncy5lbmQoKSk7Cisj
ICBlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9FWFRSQV9ERUFUSF9URVNUX0NPTU1BTkRfTElORV9B
UkdTXykKKyAgICByZXR1cm4gYXJnczsKKyAgfQogICAvLyBUaGUgbmFtZSBvZiB0aGUgZmlsZSBp
biB3aGljaCB0aGUgZGVhdGggdGVzdCBpcyBsb2NhdGVkLgogICBjb25zdCBjaGFyKiBjb25zdCBm
aWxlXzsKICAgLy8gVGhlIGxpbmUgbnVtYmVyIG9uIHdoaWNoIHRoZSBkZWF0aCB0ZXN0IGlzIGxv
Y2F0ZWQuCkBAIC04MjEsNiArOTI3LDcgQEAgY2xhc3MgQXJndW1lbnRzIHsKICAgY2hhciogY29u
c3QqIEFyZ3YoKSB7CiAgICAgcmV0dXJuICZhcmdzX1swXTsKICAgfQorCiAgcHJpdmF0ZToKICAg
c3RkOjp2ZWN0b3I8Y2hhcio+IGFyZ3NfOwogfTsKQEAgLTgzMiw2ICs5MzksMjEgQEAgc3RydWN0
IEV4ZWNEZWF0aFRlc3RBcmdzIHsKICAgaW50IGNsb3NlX2ZkOyAgICAgICAvLyBGaWxlIGRlc2Ny
aXB0b3IgdG8gY2xvc2U7IHRoZSByZWFkIGVuZCBvZiBhIHBpcGUKIH07CiAKKyMgIGlmIEdURVNU
X09TX01BQworaW5saW5lIGNoYXIqKiBHZXRFbnZpcm9uKCkgeworICAvLyBXaGVuIEdvb2dsZSBU
ZXN0IGlzIGJ1aWx0IGFzIGEgZnJhbWV3b3JrIG9uIE1hY09TIFgsIHRoZSBlbnZpcm9uIHZhcmlh
YmxlCisgIC8vIGlzIHVuYXZhaWxhYmxlLiBBcHBsZSdzIGRvY3VtZW50YXRpb24gKG1hbiBlbnZp
cm9uKSByZWNvbW1lbmRzIHVzaW5nCisgIC8vIF9OU0dldEVudmlyb24oKSBpbnN0ZWFkLgorICBy
ZXR1cm4gKl9OU0dldEVudmlyb24oKTsKK30KKyMgIGVsc2UKKy8vIFNvbWUgUE9TSVggcGxhdGZv
cm1zIGV4cGVjdCB5b3UgdG8gZGVjbGFyZSBlbnZpcm9uLiBleHRlcm4gIkMiIG1ha2VzCisvLyBp
dCByZXNpZGUgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCitleHRlcm4gIkMiIGNoYXIqKiBlbnZp
cm9uOworaW5saW5lIGNoYXIqKiBHZXRFbnZpcm9uKCkgeyByZXR1cm4gZW52aXJvbjsgfQorIyAg
ZW5kaWYgIC8vIEdURVNUX09TX01BQworCisjICBpZiAhR1RFU1RfT1NfUU5YCiAvLyBUaGUgbWFp
biBmdW5jdGlvbiBmb3IgYSB0aHJlYWRzYWZlLXN0eWxlIGRlYXRoIHRlc3QgY2hpbGQgcHJvY2Vz
cy4KIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIGEgY2xvbmUoKS1lZCBwcm9jZXNzIGFu
ZCB0aHVzIG11c3QgYXZvaWQKIC8vIGFueSBwb3RlbnRpYWxseSB1bnNhZmUgb3BlcmF0aW9ucyBs
aWtlIG1hbGxvYyBvciBsaWJjIGZ1bmN0aW9ucy4KQEAgLTg0Niw5ICs5NjgsOCBAQCBzdGF0aWMg
aW50IEV4ZWNEZWF0aFRlc3RDaGlsZE1haW4odm9pZCogY2hpbGRfYXJnKSB7CiAgICAgICBVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+b3JpZ2luYWxfd29ya2luZ19kaXIoKTsKICAgLy8gV2UgY2Fu
IHNhZmVseSBjYWxsIGNoZGlyKCkgYXMgaXQncyBhIGRpcmVjdCBzeXN0ZW0gY2FsbC4KICAgaWYg
KGNoZGlyKG9yaWdpbmFsX2RpcikgIT0gMCkgewotICAgIERlYXRoVGVzdEFib3J0KFN0cmluZzo6
Rm9ybWF0KCJjaGRpcihcIiVzXCIpIGZhaWxlZDogJXMiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9yaWdpbmFsX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpLmNfc3RyKCkpKTsKKyAgICBEZWF0aFRlc3RB
Ym9ydChzdGQ6OnN0cmluZygiY2hkaXIoXCIiKSArIG9yaWdpbmFsX2RpciArICJcIikgZmFpbGVk
OiAiICsKKyAgICAgICAgICAgICAgICAgICBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpKTsKICAg
ICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICB9CiAKQEAgLTg1Nyw0MCArOTc4LDk0IEBAIHN0YXRp
YyBpbnQgRXhlY0RlYXRoVGVzdENoaWxkTWFpbih2b2lkKiBjaGlsZF9hcmcpIHsKICAgLy8gdW5z
YWZlLiAgU2luY2UgZXhlY3ZlKCkgZG9lc24ndCBzZWFyY2ggdGhlIFBBVEgsIHRoZSB1c2VyIG11
c3QKICAgLy8gaW52b2tlIHRoZSB0ZXN0IHByb2dyYW0gdmlhIGEgdmFsaWQgcGF0aCB0aGF0IGNv
bnRhaW5zIGF0IGxlYXN0CiAgIC8vIG9uZSBwYXRoIHNlcGFyYXRvci4KLSAgLy8gV2UgaGF2ZSBy
ZXBsYWNlZCBleGVjdmUoKSB3aXRoIGV4ZWN2KCkgZm9yIFdlYktpdCB0byBhdm9pZCB1c2luZwot
ICAvLyBlbnZpcm9uLiBJdCBzaG91bGQgYmUgc2FmZSBiZWNhdXNlIGV4ZWN2KCkgaXMganVzdCBh
IHNpbXBsZSB3cmFwcGVyCi0gIC8vIG9mIGV4ZWN2ZSgpLgotICBleGVjdihhcmdzLT5hcmd2WzBd
LCBhcmdzLT5hcmd2KTsKLSAgRGVhdGhUZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQoImV4ZWN2KCVz
LCAuLi4pIGluICVzIGZhaWxlZDogJXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhcmdzLT5hcmd2WzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5h
bF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2Ny
aXB0aW9uKCkuY19zdHIoKSkpOworICBleGVjdmUoYXJncy0+YXJndlswXSwgYXJncy0+YXJndiwg
R2V0RW52aXJvbigpKTsKKyAgRGVhdGhUZXN0QWJvcnQoc3RkOjpzdHJpbmcoImV4ZWN2ZSgiKSAr
IGFyZ3MtPmFyZ3ZbMF0gKyAiLCAuLi4pIGluICIgKworICAgICAgICAgICAgICAgICBvcmlnaW5h
bF9kaXIgKyAiIGZhaWxlZDogIiArCisgICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2Ny
aXB0aW9uKCkpOwogICByZXR1cm4gRVhJVF9GQUlMVVJFOwogfQorIyAgZW5kaWYgIC8vICFHVEVT
VF9PU19RTlgKIAogLy8gVHdvIHV0aWxpdHkgcm91dGluZXMgdGhhdCB0b2dldGhlciBkZXRlcm1p
bmUgdGhlIGRpcmVjdGlvbiB0aGUgc3RhY2sKIC8vIGdyb3dzLgogLy8gVGhpcyBjb3VsZCBiZSBh
Y2NvbXBsaXNoZWQgbW9yZSBlbGVnYW50bHkgYnkgYSBzaW5nbGUgcmVjdXJzaXZlCiAvLyBmdW5j
dGlvbiwgYnV0IHdlIHdhbnQgdG8gZ3VhcmQgYWdhaW5zdCB0aGUgdW5saWtlbHkgcG9zc2liaWxp
dHkgb2YKIC8vIGEgc21hcnQgY29tcGlsZXIgb3B0aW1pemluZyB0aGUgcmVjdXJzaW9uIGF3YXku
Ci1ib29sIFN0YWNrTG93ZXJUaGFuQWRkcmVzcyhjb25zdCB2b2lkKiBwdHIpIHsKKy8vCisvLyBH
VEVTVF9OT19JTkxJTkVfIGlzIHJlcXVpcmVkIHRvIHByZXZlbnQgR0NDIDQuNiBmcm9tIGlubGlu
aW5nCisvLyBTdGFja0xvd2VyVGhhbkFkZHJlc3MgaW50byBTdGFja0dyb3dzRG93biwgd2hpY2gg
dGhlbiBkb2Vzbid0IGdpdmUKKy8vIGNvcnJlY3QgYW5zd2VyLgordm9pZCBTdGFja0xvd2VyVGhh
bkFkZHJlc3MoY29uc3Qgdm9pZCogcHRyLCBib29sKiByZXN1bHQpIEdURVNUX05PX0lOTElORV87
Cit2b2lkIFN0YWNrTG93ZXJUaGFuQWRkcmVzcyhjb25zdCB2b2lkKiBwdHIsIGJvb2wqIHJlc3Vs
dCkgewogICBpbnQgZHVtbXk7Ci0gIHJldHVybiAmZHVtbXkgPCBwdHI7CisgICpyZXN1bHQgPSAo
JmR1bW15IDwgcHRyKTsKIH0KIAorLy8gTWFrZSBzdXJlIEFkZHJlc3NTYW5pdGl6ZXIgZG9lcyBu
b3QgdGFtcGVyIHdpdGggdGhlIHN0YWNrIGhlcmUuCitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJ
WkVfQUREUkVTU18KIGJvb2wgU3RhY2tHcm93c0Rvd24oKSB7CiAgIGludCBkdW1teTsKLSAgcmV0
dXJuIFN0YWNrTG93ZXJUaGFuQWRkcmVzcygmZHVtbXkpOworICBib29sIHJlc3VsdDsKKyAgU3Rh
Y2tMb3dlclRoYW5BZGRyZXNzKCZkdW1teSwgJnJlc3VsdCk7CisgIHJldHVybiByZXN1bHQ7CiB9
CiAKLS8vIEEgdGhyZWFkc2FmZSBpbXBsZW1lbnRhdGlvbiBvZiBmb3JrKDIpIGZvciB0aHJlYWRz
YWZlLXN0eWxlIGRlYXRoIHRlc3RzCi0vLyB0aGF0IHVzZXMgY2xvbmUoMikuICBJdCBkaWVzIHdp
dGggYW4gZXJyb3IgbWVzc2FnZSBpZiBhbnl0aGluZyBnb2VzCi0vLyB3cm9uZy4KLXN0YXRpYyBw
aWRfdCBFeGVjRGVhdGhUZXN0Rm9yayhjaGFyKiBjb25zdCogYXJndiwgaW50IGNsb3NlX2ZkKSB7
CisvLyBTcGF3bnMgYSBjaGlsZCBwcm9jZXNzIHdpdGggdGhlIHNhbWUgZXhlY3V0YWJsZSBhcyB0
aGUgY3VycmVudCBwcm9jZXNzIGluCisvLyBhIHRocmVhZC1zYWZlIG1hbm5lciBhbmQgaW5zdHJ1
Y3RzIGl0IHRvIHJ1biB0aGUgZGVhdGggdGVzdC4gIFRoZQorLy8gaW1wbGVtZW50YXRpb24gdXNl
cyBmb3JrKDIpICsgZXhlYy4gIE9uIHN5c3RlbXMgd2hlcmUgY2xvbmUoMikgaXMKKy8vIGF2YWls
YWJsZSwgaXQgaXMgdXNlZCBpbnN0ZWFkLCBiZWluZyBzbGlnaHRseSBtb3JlIHRocmVhZC1zYWZl
LiAgT24gUU5YLAorLy8gZm9yayBzdXBwb3J0cyBvbmx5IHNpbmdsZS10aHJlYWRlZCBlbnZpcm9u
bWVudHMsIHNvIHRoaXMgZnVuY3Rpb24gdXNlcworLy8gc3Bhd24oMikgdGhlcmUgaW5zdGVhZC4g
IFRoZSBmdW5jdGlvbiBkaWVzIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpZgorLy8gYW55dGhpbmcg
Z29lcyB3cm9uZy4KK3N0YXRpYyBwaWRfdCBFeGVjRGVhdGhUZXN0U3Bhd25DaGlsZChjaGFyKiBj
b25zdCogYXJndiwgaW50IGNsb3NlX2ZkKSB7CiAgIEV4ZWNEZWF0aFRlc3RBcmdzIGFyZ3MgPSB7
IGFyZ3YsIGNsb3NlX2ZkIH07CiAgIHBpZF90IGNoaWxkX3BpZCA9IC0xOwogCi0jaWYgR1RFU1Rf
SEFTX0NMT05FCisjICBpZiBHVEVTVF9PU19RTlgKKyAgLy8gT2J0YWlucyB0aGUgY3VycmVudCBk
aXJlY3RvcnkgYW5kIHNldHMgaXQgdG8gYmUgY2xvc2VkIGluIHRoZSBjaGlsZAorICAvLyBwcm9j
ZXNzLgorICBjb25zdCBpbnQgY3dkX2ZkID0gb3BlbigiLiIsIE9fUkRPTkxZKTsKKyAgR1RFU1Rf
REVBVEhfVEVTVF9DSEVDS18oY3dkX2ZkICE9IC0xKTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVD
S19TWVNDQUxMXyhmY250bChjd2RfZmQsIEZfU0VURkQsIEZEX0NMT0VYRUMpKTsKKyAgLy8gV2Ug
bmVlZCB0byBleGVjdXRlIHRoZSB0ZXN0IHByb2dyYW0gaW4gdGhlIHNhbWUgZW52aXJvbm1lbnQg
d2hlcmUKKyAgLy8gaXQgd2FzIG9yaWdpbmFsbHkgaW52b2tlZC4gIFRoZXJlZm9yZSB3ZSBjaGFu
Z2UgdG8gdGhlIG9yaWdpbmFsCisgIC8vIHdvcmtpbmcgZGlyZWN0b3J5IGZpcnN0LgorICBjb25z
dCBjaGFyKiBjb25zdCBvcmlnaW5hbF9kaXIgPQorICAgICAgVW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPm9yaWdpbmFsX3dvcmtpbmdfZGlyKCk7CisgIC8vIFdlIGNhbiBzYWZlbHkgY2FsbCBjaGRp
cigpIGFzIGl0J3MgYSBkaXJlY3Qgc3lzdGVtIGNhbGwuCisgIGlmIChjaGRpcihvcmlnaW5hbF9k
aXIpICE9IDApIHsKKyAgICBEZWF0aFRlc3RBYm9ydChzdGQ6OnN0cmluZygiY2hkaXIoXCIiKSAr
IG9yaWdpbmFsX2RpciArICJcIikgZmFpbGVkOiAiICsKKyAgICAgICAgICAgICAgICAgICBHZXRM
YXN0RXJybm9EZXNjcmlwdGlvbigpKTsKKyAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICB9CisK
KyAgaW50IGZkX2ZsYWdzOworICAvLyBTZXQgY2xvc2VfZmQgdG8gYmUgY2xvc2VkIGFmdGVyIHNw
YXduLgorICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGZkX2ZsYWdzID0gZmNudGwo
Y2xvc2VfZmQsIEZfR0VURkQpKTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhm
Y250bChjbG9zZV9mZCwgRl9TRVRGRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmZF9mbGFncyB8IEZEX0NMT0VYRUMpKTsKKyAgc3RydWN0IGluaGVyaXRhbmNlIGlu
aGVyaXQgPSB7MH07CisgIC8vIHNwYXduIGlzIGEgc3lzdGVtIGNhbGwuCisgIGNoaWxkX3BpZCA9
IHNwYXduKGFyZ3MuYXJndlswXSwgMCwgTlVMTCwgJmluaGVyaXQsIGFyZ3MuYXJndiwgR2V0RW52
aXJvbigpKTsKKyAgLy8gUmVzdG9yZXMgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCisg
IEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGZjaGRpcihjd2RfZmQpICE9IC0xKTsKKyAgR1RFU1Rf
REVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhjbG9zZShjd2RfZmQpKTsKKworIyAgZWxzZSAgIC8v
IEdURVNUX09TX1FOWAorIyAgIGlmIEdURVNUX09TX0xJTlVYCisgIC8vIFdoZW4gYSBTSUdQUk9G
IHNpZ25hbCBpcyByZWNlaXZlZCB3aGlsZSBmb3JrKCkgb3IgY2xvbmUoKSBhcmUgZXhlY3V0aW5n
LAorICAvLyB0aGUgcHJvY2VzcyBtYXkgaGFuZy4gVG8gYXZvaWQgdGhpcywgd2UgaWdub3JlIFNJ
R1BST0YgaGVyZSBhbmQgcmUtZW5hYmxlCisgIC8vIGl0IGFmdGVyIHRoZSBjYWxsIHRvIGZvcmso
KS9jbG9uZSgpIGlzIGNvbXBsZXRlLgorICBzdHJ1Y3Qgc2lnYWN0aW9uIHNhdmVkX3NpZ3Byb2Zf
YWN0aW9uOworICBzdHJ1Y3Qgc2lnYWN0aW9uIGlnbm9yZV9zaWdwcm9mX2FjdGlvbjsKKyAgbWVt
c2V0KCZpZ25vcmVfc2lncHJvZl9hY3Rpb24sIDAsIHNpemVvZihpZ25vcmVfc2lncHJvZl9hY3Rp
b24pKTsKKyAgc2lnZW1wdHlzZXQoJmlnbm9yZV9zaWdwcm9mX2FjdGlvbi5zYV9tYXNrKTsKKyAg
aWdub3JlX3NpZ3Byb2ZfYWN0aW9uLnNhX2hhbmRsZXIgPSBTSUdfSUdOOworICBHVEVTVF9ERUFU
SF9URVNUX0NIRUNLX1NZU0NBTExfKHNpZ2FjdGlvbigKKyAgICAgIFNJR1BST0YsICZpZ25vcmVf
c2lncHJvZl9hY3Rpb24sICZzYXZlZF9zaWdwcm9mX2FjdGlvbikpOworIyAgIGVuZGlmICAvLyBH
VEVTVF9PU19MSU5VWAorCisjICAgaWYgR1RFU1RfSEFTX0NMT05FCiAgIGNvbnN0IGJvb2wgdXNl
X2ZvcmsgPSBHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspOwogCiAgIGlmICghdXNlX2Zv
cmspIHsKQEAgLTkwMCwyMSArMTA3NSwzNyBAQCBzdGF0aWMgcGlkX3QgRXhlY0RlYXRoVGVzdEZv
cmsoY2hhciogY29uc3QqIGFyZ3YsIGludCBjbG9zZV9mZCkgewogICAgIHZvaWQqIGNvbnN0IHN0
YWNrID0gbW1hcChOVUxMLCBzdGFja19zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBNQVBfQU5PTiB8IE1BUF9QUklWQVRFLCAtMSwgMCk7
CiAgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhY2sgIT0gTUFQX0ZBSUxFRCk7CisKKyAg
ICAvLyBNYXhpbXVtIHN0YWNrIGFsaWdubWVudCBpbiBieXRlczogIEZvciBhIGRvd253YXJkLWdy
b3dpbmcgc3RhY2ssIHRoaXMKKyAgICAvLyBhbW91bnQgaXMgc3VidHJhY3RlZCBmcm9tIHNpemUg
b2YgdGhlIHN0YWNrIHNwYWNlIHRvIGdldCBhbiBhZGRyZXNzCisgICAgLy8gdGhhdCBpcyB3aXRo
aW4gdGhlIHN0YWNrIHNwYWNlIGFuZCBpcyBhbGlnbmVkIG9uIGFsbCBzeXN0ZW1zIHdlIGNhcmUK
KyAgICAvLyBhYm91dC4gIEFzIGZhciBhcyBJIGtub3cgdGhlcmUgaXMgbm8gQUJJIHdpdGggc3Rh
Y2sgYWxpZ25tZW50IGdyZWF0ZXIKKyAgICAvLyB0aGFuIDY0LiAgV2UgYXNzdW1lIHN0YWNrIGFu
ZCBzdGFja19zaXplIGFscmVhZHkgaGF2ZSBhbGlnbm1lbnQgb2YKKyAgICAvLyBrTWF4U3RhY2tB
bGlnbm1lbnQuCisgICAgY29uc3Qgc2l6ZV90IGtNYXhTdGFja0FsaWdubWVudCA9IDY0OwogICAg
IHZvaWQqIGNvbnN0IHN0YWNrX3RvcCA9Ci0gICAgICAgIHN0YXRpY19jYXN0PGNoYXIqPihzdGFj
aykgKyAoc3RhY2tfZ3Jvd3NfZG93biA/IHN0YWNrX3NpemUgOiAwKTsKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8Y2hhcio+KHN0YWNrKSArCisgICAgICAgICAgICAoc3RhY2tfZ3Jvd3NfZG93biA/IHN0
YWNrX3NpemUgLSBrTWF4U3RhY2tBbGlnbm1lbnQgOiAwKTsKKyAgICBHVEVTVF9ERUFUSF9URVNU
X0NIRUNLXyhzdGFja19zaXplID4ga01heFN0YWNrQWxpZ25tZW50ICYmCisgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHN0YWNrX3RvcCkgJSBrTWF4U3RhY2tBbGlnbm1lbnQgPT0g
MCk7CiAKICAgICBjaGlsZF9waWQgPSBjbG9uZSgmRXhlY0RlYXRoVGVzdENoaWxkTWFpbiwgc3Rh
Y2tfdG9wLCBTSUdDSExELCAmYXJncyk7CiAKICAgICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyht
dW5tYXAoc3RhY2ssIHN0YWNrX3NpemUpICE9IC0xKTsKICAgfQotI2Vsc2UKKyMgICBlbHNlCiAg
IGNvbnN0IGJvb2wgdXNlX2ZvcmsgPSB0cnVlOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUK
KyMgICBlbmRpZiAgLy8gR1RFU1RfSEFTX0NMT05FCiAKICAgaWYgKHVzZV9mb3JrICYmIChjaGls
ZF9waWQgPSBmb3JrKCkpID09IDApIHsKICAgICAgIEV4ZWNEZWF0aFRlc3RDaGlsZE1haW4oJmFy
Z3MpOwogICAgICAgX2V4aXQoMCk7CiAgIH0KKyMgIGVuZGlmICAvLyBHVEVTVF9PU19RTlgKKyMg
IGlmIEdURVNUX09TX0xJTlVYCisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oCisg
ICAgICBzaWdhY3Rpb24oU0lHUFJPRiwgJnNhdmVkX3NpZ3Byb2ZfYWN0aW9uLCBOVUxMKSk7Cisj
ICBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKIAogICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhj
aGlsZF9waWQgIT0gLTEpOwogICByZXR1cm4gY2hpbGRfcGlkOwpAQCAtOTQyLDE2ICsxMTMzLDE2
IEBAIERlYXRoVGVzdDo6VGVzdFJvbGUgRXhlY0RlYXRoVGVzdDo6QXNzdW1lUm9sZSgpIHsKICAg
Ly8gaXQgYmUgY2xvc2VkIHdoZW4gdGhlIGNoaWxkIHByb2Nlc3MgZG9lcyBhbiBleGVjOgogICBH
VEVTVF9ERUFUSF9URVNUX0NIRUNLXyhmY250bChwaXBlX2ZkWzFdLCBGX1NFVEZELCAwKSAhPSAt
MSk7CiAKLSAgY29uc3QgU3RyaW5nIGZpbHRlcl9mbGFnID0KLSAgICAgIFN0cmluZzo6Rm9ybWF0
KCItLSVzJXM9JXMuJXMiLAotICAgICAgICAgICAgICAgICAgICAgR1RFU1RfRkxBR19QUkVGSVhf
LCBrRmlsdGVyRmxhZywKLSAgICAgICAgICAgICAgICAgICAgIGluZm8tPnRlc3RfY2FzZV9uYW1l
KCksIGluZm8tPm5hbWUoKSk7Ci0gIGNvbnN0IFN0cmluZyBpbnRlcm5hbF9mbGFnID0KLSAgICAg
IFN0cmluZzo6Rm9ybWF0KCItLSVzJXM9JXN8JWR8JWR8JWQiLAotICAgICAgICAgICAgICAgICAg
ICAgR1RFU1RfRkxBR19QUkVGSVhfLCBrSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnLAotICAgICAg
ICAgICAgICAgICAgICAgZmlsZV8sIGxpbmVfLCBkZWF0aF90ZXN0X2luZGV4LCBwaXBlX2ZkWzFd
KTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsdGVyX2ZsYWcgPQorICAgICAgc3RkOjpzdHJpbmco
Ii0tIikgKyBHVEVTVF9GTEFHX1BSRUZJWF8gKyBrRmlsdGVyRmxhZyArICI9IgorICAgICAgKyBp
bmZvLT50ZXN0X2Nhc2VfbmFtZSgpICsgIi4iICsgaW5mby0+bmFtZSgpOworICBjb25zdCBzdGQ6
OnN0cmluZyBpbnRlcm5hbF9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIpICsgR1RFU1Rf
RkxBR19QUkVGSVhfICsga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZyArICI9IgorICAgICAgKyBm
aWxlXyArICJ8IiArIFN0cmVhbWFibGVUb1N0cmluZyhsaW5lXykgKyAifCIKKyAgICAgICsgU3Ry
ZWFtYWJsZVRvU3RyaW5nKGRlYXRoX3Rlc3RfaW5kZXgpICsgInwiCisgICAgICArIFN0cmVhbWFi
bGVUb1N0cmluZyhwaXBlX2ZkWzFdKTsKICAgQXJndW1lbnRzIGFyZ3M7Ci0gIGFyZ3MuQWRkQXJn
dW1lbnRzKEdldEFyZ3ZzKCkpOworICBhcmdzLkFkZEFyZ3VtZW50cyhHZXRBcmd2c0ZvckRlYXRo
VGVzdENoaWxkUHJvY2VzcygpKTsKICAgYXJncy5BZGRBcmd1bWVudChmaWx0ZXJfZmxhZy5jX3N0
cigpKTsKICAgYXJncy5BZGRBcmd1bWVudChpbnRlcm5hbF9mbGFnLmNfc3RyKCkpOwogCkBAIC05
NjIsNyArMTE1Myw3IEBAIERlYXRoVGVzdDo6VGVzdFJvbGUgRXhlY0RlYXRoVGVzdDo6QXNzdW1l
Um9sZSgpIHsKICAgLy8gaXMgbmVjZXNzYXJ5LgogICBGbHVzaEluZm9Mb2coKTsKIAotICBjb25z
dCBwaWRfdCBjaGlsZF9waWQgPSBFeGVjRGVhdGhUZXN0Rm9yayhhcmdzLkFyZ3YoKSwgcGlwZV9m
ZFswXSk7CisgIGNvbnN0IHBpZF90IGNoaWxkX3BpZCA9IEV4ZWNEZWF0aFRlc3RTcGF3bkNoaWxk
KGFyZ3MuQXJndigpLCBwaXBlX2ZkWzBdKTsKICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVND
QUxMXyhjbG9zZShwaXBlX2ZkWzFdKSk7CiAgIHNldF9jaGlsZF9waWQoY2hpbGRfcGlkKTsKICAg
c2V0X3JlYWRfZmQocGlwZV9mZFswXSk7CkBAIC05NzAsNyArMTE2MSw3IEBAIERlYXRoVGVzdDo6
VGVzdFJvbGUgRXhlY0RlYXRoVGVzdDo6QXNzdW1lUm9sZSgpIHsKICAgcmV0dXJuIE9WRVJTRUVf
VEVTVDsKIH0KIAotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gIUdU
RVNUX09TX1dJTkRPV1MKIAogLy8gQ3JlYXRlcyBhIGNvbmNyZXRlIERlYXRoVGVzdC1kZXJpdmVk
IGNsYXNzIHRoYXQgZGVwZW5kcyBvbiB0aGUKIC8vIC0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSBm
bGFnLCBhbmQgc2V0cyB0aGUgcG9pbnRlciBwb2ludGVkIHRvCkBAIC05ODgsOSArMTE3OSwxMCBA
QCBib29sIERlZmF1bHREZWF0aFRlc3RGYWN0b3J5OjpDcmVhdGUoY29uc3QgY2hhciogc3RhdGVt
ZW50LCBjb25zdCBSRSogcmVnZXgsCiAKICAgaWYgKGZsYWcgIT0gTlVMTCkgewogICAgIGlmIChk
ZWF0aF90ZXN0X2luZGV4ID4gZmxhZy0+aW5kZXgoKSkgewotICAgICAgRGVhdGhUZXN0OjpzZXRf
bGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICAgIkRlYXRo
IHRlc3QgY291bnQgKCVkKSBzb21laG93IGV4Y2VlZGVkIGV4cGVjdGVkIG1heGltdW0gKCVkKSIs
Ci0gICAgICAgICAgZGVhdGhfdGVzdF9pbmRleCwgZmxhZy0+aW5kZXgoKSkpOworICAgICAgRGVh
dGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoCisgICAgICAgICAgIkRlYXRoIHRl
c3QgY291bnQgKCIgKyBTdHJlYW1hYmxlVG9TdHJpbmcoZGVhdGhfdGVzdF9pbmRleCkKKyAgICAg
ICAgICArICIpIHNvbWVob3cgZXhjZWVkZWQgZXhwZWN0ZWQgbWF4aW11bSAoIgorICAgICAgICAg
ICsgU3RyZWFtYWJsZVRvU3RyaW5nKGZsYWctPmluZGV4KCkpICsgIikiKTsKICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTEwMDEsNDkgKzExOTMsMzQgQEAgYm9vbCBEZWZhdWx0RGVh
dGhUZXN0RmFjdG9yeTo6Q3JlYXRlKGNvbnN0IGNoYXIqIHN0YXRlbWVudCwgY29uc3QgUkUqIHJl
Z2V4LAogICAgIH0KICAgfQogCi0jaWYgR1RFU1RfT1NfV0lORE9XUworIyBpZiBHVEVTVF9PU19X
SU5ET1dTCisKICAgaWYgKEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPT0gInRocmVhZHNh
ZmUiIHx8CiAgICAgICBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJmYXN0Iikgewog
ICAgICp0ZXN0ID0gbmV3IFdpbmRvd3NEZWF0aFRlc3Qoc3RhdGVtZW50LCByZWdleCwgZmlsZSwg
bGluZSk7CiAgIH0KLSNlbHNlCisKKyMgZWxzZQorCiAgIGlmIChHVEVTVF9GTEFHKGRlYXRoX3Rl
c3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZlIikgewogICAgICp0ZXN0ID0gbmV3IEV4ZWNEZWF0aFRl
c3Qoc3RhdGVtZW50LCByZWdleCwgZmlsZSwgbGluZSk7CiAgIH0gZWxzZSBpZiAoR1RFU1RfRkxB
RyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAiZmFzdCIpIHsKICAgICAqdGVzdCA9IG5ldyBOb0V4ZWNE
ZWF0aFRlc3Qoc3RhdGVtZW50LCByZWdleCk7CiAgIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lO
RE9XUworCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKICAgZWxzZSB7ICAvLyBOT0xJ
TlQgLSB0aGlzIGlzIG1vcmUgcmVhZGFibGUgdGhhbiB1bmJhbGFuY2VkIGJyYWNrZXRzIGluc2lk
ZSAjaWYuCi0gICAgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoU3RyaW5n
OjpGb3JtYXQoCi0gICAgICAgICJVbmtub3duIGRlYXRoIHRlc3Qgc3R5bGUgXCIlc1wiIGVuY291
bnRlcmVkIiwKLSAgICAgICAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKS5jX3N0cigpKSk7
CisgICAgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoCisgICAgICAgICJV
bmtub3duIGRlYXRoIHRlc3Qgc3R5bGUgXCIiICsgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxl
KQorICAgICAgICArICJcIiBlbmNvdW50ZXJlZCIpOwogICAgIHJldHVybiBmYWxzZTsKICAgfQog
CiAgIHJldHVybiB0cnVlOwogfQogCi0vLyBTcGxpdHMgYSBnaXZlbiBzdHJpbmcgb24gYSBnaXZl
biBkZWxpbWl0ZXIsIHBvcHVsYXRpbmcgYSBnaXZlbgotLy8gdmVjdG9yIHdpdGggdGhlIGZpZWxk
cy4gIEdURVNUX0hBU19ERUFUSF9URVNUIGltcGxpZXMgdGhhdCB3ZSBoYXZlCi0vLyA6OnN0ZDo6
c3RyaW5nLCBzbyB3ZSBjYW4gdXNlIGl0IGhlcmUuCi1zdGF0aWMgdm9pZCBTcGxpdFN0cmluZyhj
b25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIsIGNoYXIgZGVsaW1pdGVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4qIGRlc3QpIHsKLSAgOjpzdGQ6
OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4gcGFyc2VkOwotICA6OnN0ZDo6c3RyaW5nOjpzaXplX3R5
cGUgcG9zID0gMDsKLSAgd2hpbGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkg
ewotICAgIGNvbnN0IDo6c3RkOjpzdHJpbmc6OnNpemVfdHlwZSBjb2xvbiA9IHN0ci5maW5kKGRl
bGltaXRlciwgcG9zKTsKLSAgICBpZiAoY29sb24gPT0gOjpzdGQ6OnN0cmluZzo6bnBvcykgewot
ICAgICAgcGFyc2VkLnB1c2hfYmFjayhzdHIuc3Vic3RyKHBvcykpOwotICAgICAgYnJlYWs7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgIHBhcnNlZC5wdXNoX2JhY2soc3RyLnN1YnN0cihwb3MsIGNvbG9u
IC0gcG9zKSk7Ci0gICAgICBwb3MgPSBjb2xvbiArIDE7Ci0gICAgfQotICB9Ci0gIGRlc3QtPnN3
YXAocGFyc2VkKTsKLX0KLQotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lO
RE9XUwogLy8gUmVjcmVhdGVzIHRoZSBwaXBlIGFuZCBldmVudCBoYW5kbGVzIGZyb20gdGhlIHBy
b3ZpZGVkIHBhcmFtZXRlcnMsCiAvLyBzaWduYWxzIHRoZSBldmVudCwgYW5kIHJldHVybnMgYSBm
aWxlIGRlc2NyaXB0b3Igd3JhcHBlZCBhcm91bmQgdGhlIHBpcGUKIC8vIGhhbmRsZS4gVGhpcyBm
dW5jdGlvbiBpcyBjYWxsZWQgaW4gdGhlIGNoaWxkIHByb2Nlc3Mgb25seS4KQEAgLTEwNTQsOCAr
MTIzMSw4IEBAIGludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBpbnQgcGFyZW50
X3Byb2Nlc3NfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGQUxTRSwgIC8vIE5vbi1pbmhlcml0YWJsZS4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudF9wcm9jZXNzX2lkKSk7CiAgIGlm
IChwYXJlbnRfcHJvY2Vzc19oYW5kbGUuR2V0KCkgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsK
LSAgICBEZWF0aFRlc3RBYm9ydChTdHJpbmc6OkZvcm1hdCgiVW5hYmxlIHRvIG9wZW4gcGFyZW50
IHByb2Nlc3MgJXUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudF9w
cm9jZXNzX2lkKSk7CisgICAgRGVhdGhUZXN0QWJvcnQoIlVuYWJsZSB0byBvcGVuIHBhcmVudCBw
cm9jZXNzICIgKworICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhwYXJlbnRf
cHJvY2Vzc19pZCkpOwogICB9CiAKICAgLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogUmVwbGFj
ZSB0aGUgZm9sbG93aW5nIGNoZWNrIHdpdGggYQpAQCAtMTA3NSw5ICsxMjUyLDEwIEBAIGludCBH
ZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBpbnQgcGFyZW50X3Byb2Nlc3NfaWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEVVBMSUNBVEVfU0FNRV9BQ0NFU1Mg
aXMgdXNlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwgIC8vIFJlcXVlc3Qgbm9u
LWluaGVyaXRhYmxlIGhhbmRsZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgRFVQTElDQVRF
X1NBTUVfQUNDRVNTKSkgewotICAgIERlYXRoVGVzdEFib3J0KFN0cmluZzo6Rm9ybWF0KAotICAg
ICAgICAiVW5hYmxlIHRvIGR1cGxpY2F0ZSB0aGUgcGlwZSBoYW5kbGUgJUl1IGZyb20gdGhlIHBh
cmVudCBwcm9jZXNzICV1IiwKLSAgICAgICAgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCwgcGFyZW50
X3Byb2Nlc3NfaWQpKTsKKyAgICBEZWF0aFRlc3RBYm9ydCgiVW5hYmxlIHRvIGR1cGxpY2F0ZSB0
aGUgcGlwZSBoYW5kbGUgIiArCisgICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5n
KHdyaXRlX2hhbmRsZV9hc19zaXplX3QpICsKKyAgICAgICAgICAgICAgICAgICAiIGZyb20gdGhl
IHBhcmVudCBwcm9jZXNzICIgKworICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmlu
ZyhwYXJlbnRfcHJvY2Vzc19pZCkpOwogICB9CiAKICAgY29uc3QgSEFORExFIGV2ZW50X2hhbmRs
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPihldmVudF9oYW5kbGVfYXNfc2l6ZV90KTsKQEAg
LTEwODgsMTcgKzEyNjYsMTggQEAgaW50IEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9yKHVuc2lnbmVk
IGludCBwYXJlbnRfcHJvY2Vzc19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
RFVQTElDQVRFX1NBTUVfQUNDRVNTKSkgewotICAgIERlYXRoVGVzdEFib3J0KFN0cmluZzo6Rm9y
bWF0KAotICAgICAgICAiVW5hYmxlIHRvIGR1cGxpY2F0ZSB0aGUgZXZlbnQgaGFuZGxlICVJdSBm
cm9tIHRoZSBwYXJlbnQgcHJvY2VzcyAldSIsCi0gICAgICAgIGV2ZW50X2hhbmRsZV9hc19zaXpl
X3QsIHBhcmVudF9wcm9jZXNzX2lkKSk7CisgICAgRGVhdGhUZXN0QWJvcnQoIlVuYWJsZSB0byBk
dXBsaWNhdGUgdGhlIGV2ZW50IGhhbmRsZSAiICsKKyAgICAgICAgICAgICAgICAgICBTdHJlYW1h
YmxlVG9TdHJpbmcoZXZlbnRfaGFuZGxlX2FzX3NpemVfdCkgKworICAgICAgICAgICAgICAgICAg
ICIgZnJvbSB0aGUgcGFyZW50IHByb2Nlc3MgIiArCisgICAgICAgICAgICAgICAgICAgU3RyZWFt
YWJsZVRvU3RyaW5nKHBhcmVudF9wcm9jZXNzX2lkKSk7CiAgIH0KIAogICBjb25zdCBpbnQgd3Jp
dGVfZmQgPQogICAgICAgOjpfb3Blbl9vc2ZoYW5kbGUocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJf
dD4oZHVwX3dyaXRlX2hhbmRsZSksIE9fQVBQRU5EKTsKICAgaWYgKHdyaXRlX2ZkID09IC0xKSB7
Ci0gICAgRGVhdGhUZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICJVbmFibGUgdG8g
Y29udmVydCBwaXBlIGhhbmRsZSAlSXUgdG8gYSBmaWxlIGRlc2NyaXB0b3IiLAotICAgICAgICB3
cml0ZV9oYW5kbGVfYXNfc2l6ZV90KSk7CisgICAgRGVhdGhUZXN0QWJvcnQoIlVuYWJsZSB0byBj
b252ZXJ0IHBpcGUgaGFuZGxlICIgKworICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0
cmluZyh3cml0ZV9oYW5kbGVfYXNfc2l6ZV90KSArCisgICAgICAgICAgICAgICAgICAgIiB0byBh
IGZpbGUgZGVzY3JpcHRvciIpOwogICB9CiAKICAgLy8gU2lnbmFscyB0aGUgcGFyZW50IHRoYXQg
dGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlwZSBoYXMgYmVlbiBhY3F1aXJlZApAQCAtMTEwNyw3ICsx
Mjg2LDcgQEAgaW50IEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9yKHVuc2lnbmVkIGludCBwYXJlbnRf
cHJvY2Vzc19pZCwKIAogICByZXR1cm4gd3JpdGVfZmQ7CiB9Ci0jZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAogLy8gUmV0dXJucyBhIG5l
d2x5IGNyZWF0ZWQgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnIG9iamVjdCB3aXRoIGZpZWxkcwog
Ly8gaW5pdGlhbGl6ZWQgZnJvbSB0aGUgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVz
dCkgZmxhZyBpZgpAQCAtMTEyMyw3ICsxMzAyLDggQEAgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFn
KiBQYXJzZUludGVybmFsUnVuRGVhdGhUZXN0RmxhZygpIHsKICAgU3BsaXRTdHJpbmcoR1RFU1Rf
RkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkuY19zdHIoKSwgJ3wnLCAmZmllbGRzKTsKICAg
aW50IHdyaXRlX2ZkID0gLTE7CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09T
X1dJTkRPV1MKKwogICB1bnNpZ25lZCBpbnQgcGFyZW50X3Byb2Nlc3NfaWQgPSAwOwogICBzaXpl
X3Qgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCA9IDA7CiAgIHNpemVfdCBldmVudF9oYW5kbGVfYXNf
c2l6ZV90ID0gMDsKQEAgLTExMzQsMjMgKzEzMTQsMjQgQEAgSW50ZXJuYWxSdW5EZWF0aFRlc3RG
bGFnKiBQYXJzZUludGVybmFsUnVuRGVhdGhUZXN0RmxhZygpIHsKICAgICAgIHx8ICFQYXJzZU5h
dHVyYWxOdW1iZXIoZmllbGRzWzNdLCAmcGFyZW50X3Byb2Nlc3NfaWQpCiAgICAgICB8fCAhUGFy
c2VOYXR1cmFsTnVtYmVyKGZpZWxkc1s0XSwgJndyaXRlX2hhbmRsZV9hc19zaXplX3QpCiAgICAg
ICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1s1XSwgJmV2ZW50X2hhbmRsZV9hc19zaXpl
X3QpKSB7Ci0gICAgRGVhdGhUZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICJCYWQg
LS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFnOiAlcyIsCi0gICAgICAgIEdURVNU
X0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpLmNfc3RyKCkpKTsKKyAgICBEZWF0aFRlc3RB
Ym9ydCgiQmFkIC0tZ3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QgZmxhZzogIiArCisgICAg
ICAgICAgICAgICAgICAgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkpOwogICB9
CiAgIHdyaXRlX2ZkID0gR2V0U3RhdHVzRmlsZURlc2NyaXB0b3IocGFyZW50X3Byb2Nlc3NfaWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVfaGFuZGxlX2FzX3Np
emVfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudF9oYW5kbGVf
YXNfc2l6ZV90KTsKLSNlbHNlCisjIGVsc2UKKwogICBpZiAoZmllbGRzLnNpemUoKSAhPSA0CiAg
ICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1sxXSwgJmxpbmUpCiAgICAgICB8fCAh
UGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1syXSwgJmluZGV4KQogICAgICAgfHwgIVBhcnNlTmF0
dXJhbE51bWJlcihmaWVsZHNbM10sICZ3cml0ZV9mZCkpIHsKLSAgICBEZWF0aFRlc3RBYm9ydChT
dHJpbmc6OkZvcm1hdCgKLSAgICAgICAgIkJhZCAtLWd0ZXN0X2ludGVybmFsX3J1bl9kZWF0aF90
ZXN0IGZsYWc6ICVzIiwKLSAgICAgICAgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVz
dCkuY19zdHIoKSkpOworICAgIERlYXRoVGVzdEFib3J0KCJCYWQgLS1ndGVzdF9pbnRlcm5hbF9y
dW5fZGVhdGhfdGVzdCBmbGFnOiAiCisgICAgICAgICsgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5f
ZGVhdGhfdGVzdCkpOwogICB9Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworIyBlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCiAgIHJldHVybiBuZXcgSW50ZXJuYWxSdW5EZWF0aFRl
c3RGbGFnKGZpZWxkc1swXSwgbGluZSwgaW5kZXgsIHdyaXRlX2ZkKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWZpbGVwYXRoLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWZpbGVwYXRoLmNjCmluZGV4IGMxZWY5MTg4YWQ4
NWFiOGEwNDdhMzNiZjk5NDVlMWNkMGNjNzNlZmYuLjAyOTJkYzExOTU3ZWFhMjE4YjM1OGYxZjc2
MWNhNGE1Y2IyZmFlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9n
dGVzdC1maWxlcGF0aC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3Qt
ZmlsZXBhdGguY2MKQEAgLTI5LDM1ICsyOSwzNiBAQAogLy8KIC8vIEF1dGhvcnM6IGtlaXRoLnJh
eUBnbWFpbC5jb20gKEtlaXRoIFJheSkKIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0
LWZpbGVwYXRoLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9n
dGVzdC1maWxlcGF0aC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIK
IAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCiAjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSNp
bmNsdWRlIDx3aW5kb3dzLmg+CisjIGluY2x1ZGUgPHdpbmRvd3MuaD4KICNlbGlmIEdURVNUX09T
X1dJTkRPV1MKLSNpbmNsdWRlIDxkaXJlY3QuaD4KLSNpbmNsdWRlIDxpby5oPgorIyBpbmNsdWRl
IDxkaXJlY3QuaD4KKyMgaW5jbHVkZSA8aW8uaD4KICNlbGlmIEdURVNUX09TX1NZTUJJQU4KIC8v
IFN5bWJpYW4gT3BlbkMgaGFzIFBBVEhfTUFYIGluIHN5cy9zeXNsaW1pdHMuaAotI2luY2x1ZGUg
PHN5cy9zeXNsaW1pdHMuaD4KKyMgaW5jbHVkZSA8c3lzL3N5c2xpbWl0cy5oPgogI2Vsc2UKLSNp
bmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxjbGltaXRzPiAgLy8gU29tZSBMaW51eCBkaXN0
cmlidXRpb25zIGRlZmluZSBQQVRIX01BWCBoZXJlLgorIyBpbmNsdWRlIDxsaW1pdHMuaD4KKyMg
aW5jbHVkZSA8Y2xpbWl0cz4gIC8vIFNvbWUgTGludXggZGlzdHJpYnV0aW9ucyBkZWZpbmUgUEFU
SF9NQVggaGVyZS4KICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIAogI2lmIEdU
RVNUX09TX1dJTkRPV1MKLSNkZWZpbmUgR1RFU1RfUEFUSF9NQVhfIF9NQVhfUEFUSAorIyBkZWZp
bmUgR1RFU1RfUEFUSF9NQVhfIF9NQVhfUEFUSAogI2VsaWYgZGVmaW5lZChQQVRIX01BWCkKLSNk
ZWZpbmUgR1RFU1RfUEFUSF9NQVhfIFBBVEhfTUFYCisjIGRlZmluZSBHVEVTVF9QQVRIX01BWF8g
UEFUSF9NQVgKICNlbGlmIGRlZmluZWQoX1hPUEVOX1BBVEhfTUFYKQotI2RlZmluZSBHVEVTVF9Q
QVRIX01BWF8gX1hPUEVOX1BBVEhfTUFYCisjIGRlZmluZSBHVEVTVF9QQVRIX01BWF8gX1hPUEVO
X1BBVEhfTUFYCiAjZWxzZQotI2RlZmluZSBHVEVTVF9QQVRIX01BWF8gX1BPU0lYX1BBVEhfTUFY
CisjIGRlZmluZSBHVEVTVF9QQVRIX01BWF8gX1BPU0lYX1BBVEhfTUFYCiAjZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MKIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5o
PgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgogCiBuYW1lc3BhY2Ug
dGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewpAQCAtNjksMjEgKzcwLDE5IEBAIG5hbWVz
cGFjZSBpbnRlcm5hbCB7CiAvLyBvZiB0aGVtLgogY29uc3QgY2hhciBrUGF0aFNlcGFyYXRvciA9
ICdcXCc7CiBjb25zdCBjaGFyIGtBbHRlcm5hdGVQYXRoU2VwYXJhdG9yID0gJy8nOwotY29uc3Qg
Y2hhciBrUGF0aFNlcGFyYXRvclN0cmluZ1tdID0gIlxcIjsKIGNvbnN0IGNoYXIga0FsdGVybmF0
ZVBhdGhTZXBhcmF0b3JTdHJpbmdbXSA9ICIvIjsKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklM
RQorIyBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogLy8gV2luZG93cyBDRSBkb2Vzbid0IGhh
dmUgYSBjdXJyZW50IGRpcmVjdG9yeS4gWW91IHNob3VsZCBub3QgdXNlCiAvLyB0aGUgY3VycmVu
dCBkaXJlY3RvcnkgaW4gdGVzdHMgb24gV2luZG93cyBDRSwgYnV0IHRoaXMgYXQgbGVhc3QKIC8v
IHByb3ZpZGVzIGEgcmVhc29uYWJsZSBmYWxsYmFjay4KIGNvbnN0IGNoYXIga0N1cnJlbnREaXJl
Y3RvcnlTdHJpbmdbXSA9ICJcXCI7CiAvLyBXaW5kb3dzIENFIGRvZXNuJ3QgZGVmaW5lIElOVkFM
SURfRklMRV9BVFRSSUJVVEVTCiBjb25zdCBEV09SRCBrSW52YWxpZEZpbGVBdHRyaWJ1dGVzID0g
MHhmZmZmZmZmZjsKLSNlbHNlCisjIGVsc2UKIGNvbnN0IGNoYXIga0N1cnJlbnREaXJlY3RvcnlT
dHJpbmdbXSA9ICIuXFwiOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBl
bmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKICNlbHNlCiBjb25zdCBjaGFyIGtQYXRo
U2VwYXJhdG9yID0gJy8nOwotY29uc3QgY2hhciBrUGF0aFNlcGFyYXRvclN0cmluZ1tdID0gIi8i
OwogY29uc3QgY2hhciBrQ3VycmVudERpcmVjdG9yeVN0cmluZ1tdID0gIi4vIjsKICNlbmRpZiAg
Ly8gR1RFU1RfT1NfV0lORE9XUwogCkBAIC05OCw3ICs5Nyw3IEBAIHN0YXRpYyBib29sIElzUGF0
aFNlcGFyYXRvcihjaGFyIGMpIHsKIAogLy8gUmV0dXJucyB0aGUgY3VycmVudCB3b3JraW5nIGRp
cmVjdG9yeSwgb3IgIiIgaWYgdW5zdWNjZXNzZnVsLgogRmlsZVBhdGggRmlsZVBhdGg6OkdldEN1
cnJlbnREaXIoKSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyNpZiBHVEVTVF9PU19X
SU5ET1dTX01PQklMRSB8fCBHVEVTVF9PU19XSU5ET1dTX1BIT05FIHx8IEdURVNUX09TX1dJTkRP
V1NfUlQKICAgLy8gV2luZG93cyBDRSBkb2Vzbid0IGhhdmUgYSBjdXJyZW50IGRpcmVjdG9yeSwg
c28gd2UganVzdCByZXR1cm4KICAgLy8gc29tZXRoaW5nIHJlYXNvbmFibGUuCiAgIHJldHVybiBG
aWxlUGF0aChrQ3VycmVudERpcmVjdG9yeVN0cmluZyk7CkBAIC0xMDcsNyArMTA2LDE0IEBAIEZp
bGVQYXRoIEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkgewogICByZXR1cm4gRmlsZVBhdGgoX2dl
dGN3ZChjd2QsIHNpemVvZihjd2QpKSA9PSBOVUxMID8gIiIgOiBjd2QpOwogI2Vsc2UKICAgY2hh
ciBjd2RbR1RFU1RfUEFUSF9NQVhfICsgMV0gPSB7ICdcMCcgfTsKLSAgcmV0dXJuIEZpbGVQYXRo
KGdldGN3ZChjd2QsIHNpemVvZihjd2QpKSA9PSBOVUxMID8gIiIgOiBjd2QpOworICBjaGFyKiBy
ZXN1bHQgPSBnZXRjd2QoY3dkLCBzaXplb2YoY3dkKSk7CisjIGlmIEdURVNUX09TX05BQ0wKKyAg
Ly8gZ2V0Y3dkIHdpbGwgbGlrZWx5IGZhaWwgaW4gTmFDbCBkdWUgdG8gdGhlIHNhbmRib3gsIHNv
IHJldHVybiBzb21ldGhpbmcKKyAgLy8gcmVhc29uYWJsZS4gVGhlIHVzZXIgbWF5IGhhdmUgcHJv
dmlkZWQgYSBzaGltIGltcGxlbWVudGF0aW9uIGZvciBnZXRjd2QsCisgIC8vIGhvd2V2ZXIsIHNv
IGZhbGxiYWNrIG9ubHkgd2hlbiBmYWlsdXJlIGlzIGRldGVjdGVkLgorICByZXR1cm4gRmlsZVBh
dGgocmVzdWx0ID09IE5VTEwgPyBrQ3VycmVudERpcmVjdG9yeVN0cmluZyA6IGN3ZCk7CisjIGVu
ZGlmICAvLyBHVEVTVF9PU19OQUNMCisgIHJldHVybiBGaWxlUGF0aChyZXN1bHQgPT0gTlVMTCA/
ICIiIDogY3dkKTsKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIH0KIApAQCAt
MTE2LDkgKzEyMiwxMCBAQCBGaWxlUGF0aCBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpIHsKIC8v
IEZpbGVQYXRoKCJkaXIvZmlsZSIpLiBJZiBhIGNhc2UtaW5zZW5zaXRpdmUgZXh0ZW5zaW9uIGlz
IG5vdAogLy8gZm91bmQsIHJldHVybnMgYSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBGaWxlUGF0aC4K
IEZpbGVQYXRoIEZpbGVQYXRoOjpSZW1vdmVFeHRlbnNpb24oY29uc3QgY2hhciogZXh0ZW5zaW9u
KSBjb25zdCB7Ci0gIFN0cmluZyBkb3RfZXh0ZW5zaW9uKFN0cmluZzo6Rm9ybWF0KCIuJXMiLCBl
eHRlbnNpb24pKTsKLSAgaWYgKHBhdGhuYW1lXy5FbmRzV2l0aENhc2VJbnNlbnNpdGl2ZShkb3Rf
ZXh0ZW5zaW9uLmNfc3RyKCkpKSB7Ci0gICAgcmV0dXJuIEZpbGVQYXRoKFN0cmluZyhwYXRobmFt
ZV8uY19zdHIoKSwgcGF0aG5hbWVfLmxlbmd0aCgpIC0gNCkpOworICBjb25zdCBzdGQ6OnN0cmlu
ZyBkb3RfZXh0ZW5zaW9uID0gc3RkOjpzdHJpbmcoIi4iKSArIGV4dGVuc2lvbjsKKyAgaWYgKFN0
cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUocGF0aG5hbWVfLCBkb3RfZXh0ZW5zaW9uKSkg
eworICAgIHJldHVybiBGaWxlUGF0aChwYXRobmFtZV8uc3Vic3RyKAorICAgICAgICAwLCBwYXRo
bmFtZV8ubGVuZ3RoKCkgLSBkb3RfZXh0ZW5zaW9uLmxlbmd0aCgpKSk7CiAgIH0KICAgcmV0dXJu
ICp0aGlzOwogfQpAQCAtMTQ3LDcgKzE1NCw3IEBAIGNvbnN0IGNoYXIqIEZpbGVQYXRoOjpGaW5k
TGFzdFBhdGhTZXBhcmF0b3IoKSBjb25zdCB7CiAvLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCAnXCcg
aXMgdGhlIHBhdGggc2VwYXJhdG9yLCBvdGhlcndpc2UgaXQgaXMgJy8nLgogRmlsZVBhdGggRmls
ZVBhdGg6OlJlbW92ZURpcmVjdG9yeU5hbWUoKSBjb25zdCB7CiAgIGNvbnN0IGNoYXIqIGNvbnN0
IGxhc3Rfc2VwID0gRmluZExhc3RQYXRoU2VwYXJhdG9yKCk7Ci0gIHJldHVybiBsYXN0X3NlcCA/
IEZpbGVQYXRoKFN0cmluZyhsYXN0X3NlcCArIDEpKSA6ICp0aGlzOworICByZXR1cm4gbGFzdF9z
ZXAgPyBGaWxlUGF0aChsYXN0X3NlcCArIDEpIDogKnRoaXM7CiB9CiAKIC8vIFJlbW92ZUZpbGVO
YW1lIHJldHVybnMgdGhlIGRpcmVjdG9yeSBwYXRoIHdpdGggdGhlIGZpbGVuYW1lIHJlbW92ZWQu
CkBAIC0xNTgsOSArMTY1LDkgQEAgRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZURpcmVjdG9yeU5h
bWUoKSBjb25zdCB7CiAvLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCAnXCcgaXMgdGhlIHBhdGggc2Vw
YXJhdG9yLCBvdGhlcndpc2UgaXQgaXMgJy8nLgogRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZUZp
bGVOYW1lKCkgY29uc3QgewogICBjb25zdCBjaGFyKiBjb25zdCBsYXN0X3NlcCA9IEZpbmRMYXN0
UGF0aFNlcGFyYXRvcigpOwotICBTdHJpbmcgZGlyOworICBzdGQ6OnN0cmluZyBkaXI7CiAgIGlm
IChsYXN0X3NlcCkgewotICAgIGRpciA9IFN0cmluZyhjX3N0cigpLCBsYXN0X3NlcCArIDEgLSBj
X3N0cigpKTsKKyAgICBkaXIgPSBzdGQ6OnN0cmluZyhjX3N0cigpLCBsYXN0X3NlcCArIDEgLSBj
X3N0cigpKTsKICAgfSBlbHNlIHsKICAgICBkaXIgPSBrQ3VycmVudERpcmVjdG9yeVN0cmluZzsK
ICAgfQpAQCAtMTc3LDExICsxODQsMTIgQEAgRmlsZVBhdGggRmlsZVBhdGg6Ok1ha2VGaWxlTmFt
ZShjb25zdCBGaWxlUGF0aCYgZGlyZWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBGaWxlUGF0aCYgYmFzZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgbnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBleHRlbnNpb24pIHsKLSAgU3RyaW5nIGZpbGU7CisgIHN0ZDo6c3RyaW5nIGZpbGU7
CiAgIGlmIChudW1iZXIgPT0gMCkgewotICAgIGZpbGUgPSBTdHJpbmc6OkZvcm1hdCgiJXMuJXMi
LCBiYXNlX25hbWUuY19zdHIoKSwgZXh0ZW5zaW9uKTsKKyAgICBmaWxlID0gYmFzZV9uYW1lLnN0
cmluZygpICsgIi4iICsgZXh0ZW5zaW9uOwogICB9IGVsc2UgewotICAgIGZpbGUgPSBTdHJpbmc6
OkZvcm1hdCgiJXNfJWQuJXMiLCBiYXNlX25hbWUuY19zdHIoKSwgbnVtYmVyLCBleHRlbnNpb24p
OworICAgIGZpbGUgPSBiYXNlX25hbWUuc3RyaW5nKCkgKyAiXyIgKyBTdHJlYW1hYmxlVG9TdHJp
bmcobnVtYmVyKQorICAgICAgICArICIuIiArIGV4dGVuc2lvbjsKICAgfQogICByZXR1cm4gQ29u
Y2F0UGF0aHMoZGlyZWN0b3J5LCBGaWxlUGF0aChmaWxlKSk7CiB9CkBAIC0xOTMsOCArMjAxLDcg
QEAgRmlsZVBhdGggRmlsZVBhdGg6OkNvbmNhdFBhdGhzKGNvbnN0IEZpbGVQYXRoJiBkaXJlY3Rv
cnksCiAgIGlmIChkaXJlY3RvcnkuSXNFbXB0eSgpKQogICAgIHJldHVybiByZWxhdGl2ZV9wYXRo
OwogICBjb25zdCBGaWxlUGF0aCBkaXIoZGlyZWN0b3J5LlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFy
YXRvcigpKTsKLSAgcmV0dXJuIEZpbGVQYXRoKFN0cmluZzo6Rm9ybWF0KCIlcyVjJXMiLCBkaXIu
Y19zdHIoKSwga1BhdGhTZXBhcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWxhdGl2ZV9wYXRoLmNfc3RyKCkpKTsKKyAgcmV0dXJuIEZpbGVQYXRoKGRpci5zdHJpbmco
KSArIGtQYXRoU2VwYXJhdG9yICsgcmVsYXRpdmVfcGF0aC5zdHJpbmcoKSk7CiB9CiAKIC8vIFJl
dHVybnMgdHJ1ZSBpZiBwYXRobmFtZSBkZXNjcmliZXMgc29tZXRoaW5nIGZpbmRhYmxlIGluIHRo
ZSBmaWxlLXN5c3RlbSwKQEAgLTMzOCw3ICszNDUsNyBAQCBib29sIEZpbGVQYXRoOjpDcmVhdGVG
b2xkZXIoKSBjb25zdCB7CiAvLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCB1c2VzIFwgYXMgdGhlIHNl
cGFyYXRvciwgb3RoZXIgcGxhdGZvcm1zIHVzZSAvLgogRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92
ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpIGNvbnN0IHsKICAgcmV0dXJuIElzRGlyZWN0b3J5KCkK
LSAgICAgID8gRmlsZVBhdGgoU3RyaW5nKHBhdGhuYW1lXy5jX3N0cigpLCBwYXRobmFtZV8ubGVu
Z3RoKCkgLSAxKSkKKyAgICAgID8gRmlsZVBhdGgocGF0aG5hbWVfLnN1YnN0cigwLCBwYXRobmFt
ZV8ubGVuZ3RoKCkgLSAxKSkKICAgICAgIDogKnRoaXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaAppbmRleCAwMTQxNWY3ZDk1OWRj
YTA3MDlmYWMxNzY2MTBkYjczODhmNjA0NTU5Li5lZDhhNjgyYTk2NGYwNzBjYTA2YTlkOGU5YTc3
ZWE1NjhkYjBmZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rl
c3QtaW50ZXJuYWwtaW5sLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0
LWludGVybmFsLWlubC5oCkBAIC00MCwxMyArNDAsMTMgQEAKIC8vIEdURVNUX0lNUExFTUVOVEFU
SU9OXyBpcyBkZWZpbmVkIHRvIDEgaWZmIHRoZSBjdXJyZW50IHRyYW5zbGF0aW9uIHVuaXQgaXMK
IC8vIHBhcnQgb2YgR29vZ2xlIFRlc3QncyBpbXBsZW1lbnRhdGlvbjsgb3RoZXJ3aXNlIGl0J3Mg
dW5kZWZpbmVkLgogI2lmICFHVEVTVF9JTVBMRU1FTlRBVElPTl8KLS8vIEEgdXNlciBpcyB0cnlp
bmcgdG8gaW5jbHVkZSB0aGlzIGZyb20gaGlzIGNvZGUgLSBqdXN0IHNheSBuby4KLSNlcnJvciAi
Z3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzIGludGVybmFsIGlt
cGxlbWVudGF0aW9uLiIKLSNlcnJvciAiSXQgbXVzdCBub3QgYmUgaW5jbHVkZWQgZXhjZXB0IGJ5
IEdvb2dsZSBUZXN0IGl0c2VsZi4iCisvLyBJZiB0aGlzIGZpbGUgaXMgaW5jbHVkZWQgZnJvbSB0
aGUgdXNlcidzIGNvZGUsIGp1c3Qgc2F5IG5vLgorIyBlcnJvciAiZ3Rlc3QtaW50ZXJuYWwtaW5s
LmggaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzIGludGVybmFsIGltcGxlbWVudGF0aW9uLiIKKyMg
ZXJyb3IgIkl0IG11c3Qgbm90IGJlIGluY2x1ZGVkIGV4Y2VwdCBieSBHb29nbGUgVGVzdCBpdHNl
bGYuIgogI2VuZGlmICAvLyBHVEVTVF9JTVBMRU1FTlRBVElPTl8KIAogI2lmbmRlZiBfV0lOMzJf
V0NFCi0jaW5jbHVkZSA8ZXJybm8uaD4KKyMgaW5jbHVkZSA8ZXJybm8uaD4KICNlbmRpZiAgLy8g
IV9XSU4zMl9XQ0UKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4gIC8v
IEZvciBzdHJ0b2xsL19zdHJ0b3VsNjQvbWFsbG9jL2ZyZWUuCkBAIC01NiwxNCArNTYsMTkgQEAK
ICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSA8Z3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaCIKKworI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKyMgaW5jbHVkZSA8YXJwYS9p
bmV0Lmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8bmV0ZGIuaD4gIC8vIE5PTElOVAorI2VuZGlm
CiAKICNpZiBHVEVTVF9PU19XSU5ET1dTCi0jaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gRm9yIERX
T1JELgorIyBpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBOT0xJTlQKICNlbmRpZiAgLy8gR1RFU1Rf
T1NfV0lORE9XUwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4gIC8vIE5PTElOVAotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiICAvLyBOT0xJ
TlQKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKIAogbmFtZXNwYWNlIHRlc3Rpbmcgewog
CkBAIC05Myw3ICs5OCw5IEBAIGNvbnN0IGNoYXIga1JhbmRvbVNlZWRGbGFnW10gPSAicmFuZG9t
X3NlZWQiOwogY29uc3QgY2hhciBrUmVwZWF0RmxhZ1tdID0gInJlcGVhdCI7CiBjb25zdCBjaGFy
IGtTaHVmZmxlRmxhZ1tdID0gInNodWZmbGUiOwogY29uc3QgY2hhciBrU3RhY2tUcmFjZURlcHRo
RmxhZ1tdID0gInN0YWNrX3RyYWNlX2RlcHRoIjsKK2NvbnN0IGNoYXIga1N0cmVhbVJlc3VsdFRv
RmxhZ1tdID0gInN0cmVhbV9yZXN1bHRfdG8iOwogY29uc3QgY2hhciBrVGhyb3dPbkZhaWx1cmVG
bGFnW10gPSAidGhyb3dfb25fZmFpbHVyZSI7Citjb25zdCBjaGFyIGtGbGFnZmlsZUZsYWdbXSA9
ICJmbGFnZmlsZSI7CiAKIC8vIEEgdmFsaWQgcmFuZG9tIHNlZWQgbXVzdCBiZSBpbiBbMSwga01h
eFJhbmRvbVNlZWRdLgogY29uc3QgaW50IGtNYXhSYW5kb21TZWVkID0gOTk5OTk7CkBAIC0xMTEs
NiArMTE4LDEyIEBAIEdURVNUX0FQSV8gYm9vbCBTaG91bGRVc2VDb2xvcihib29sIHN0ZG91dF9p
c190dHkpOwogLy8gRm9ybWF0cyB0aGUgZ2l2ZW4gdGltZSBpbiBtaWxsaXNlY29uZHMgYXMgc2Vj
b25kcy4KIEdURVNUX0FQSV8gc3RkOjpzdHJpbmcgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRz
KFRpbWVJbk1pbGxpcyBtcyk7CiAKKy8vIENvbnZlcnRzIHRoZSBnaXZlbiB0aW1lIGluIG1pbGxp
c2Vjb25kcyB0byBhIGRhdGUgc3RyaW5nIGluIHRoZSBJU08gODYwMQorLy8gZm9ybWF0LCB3aXRo
b3V0IHRoZSB0aW1lem9uZSBpbmZvcm1hdGlvbi4gIE4uQi46IGR1ZSB0byB0aGUgdXNlIHRoZQor
Ly8gbm9uLXJlZW50cmFudCBsb2NhbHRpbWUoKSBmdW5jdGlvbiwgdGhpcyBmdW5jdGlvbiBpcyBu
b3QgdGhyZWFkIHNhZmUuICBEbworLy8gbm90IHVzZSBpdCBpbiBhbnkgY29kZSB0aGF0IGNhbiBi
ZSBjYWxsZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBG
b3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMShUaW1lSW5NaWxsaXMgbXMpOworCiAvLyBQ
YXJzZXMgYSBzdHJpbmcgZm9yIGFuIEludDMyIGZsYWcsIGluIHRoZSBmb3JtIG9mICItLWZsYWc9
dmFsdWUiLgogLy8KIC8vIE9uIHN1Y2Nlc3MsIHN0b3JlcyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcg
aW4gKnZhbHVlLCBhbmQgcmV0dXJucwpAQCAtMTY1LDYgKzE3OCw3IEBAIGNsYXNzIEdUZXN0Rmxh
Z1NhdmVyIHsKICAgICByZXBlYXRfID0gR1RFU1RfRkxBRyhyZXBlYXQpOwogICAgIHNodWZmbGVf
ID0gR1RFU1RfRkxBRyhzaHVmZmxlKTsKICAgICBzdGFja190cmFjZV9kZXB0aF8gPSBHVEVTVF9G
TEFHKHN0YWNrX3RyYWNlX2RlcHRoKTsKKyAgICBzdHJlYW1fcmVzdWx0X3RvXyA9IEdURVNUX0ZM
QUcoc3RyZWFtX3Jlc3VsdF90byk7CiAgICAgdGhyb3dfb25fZmFpbHVyZV8gPSBHVEVTVF9GTEFH
KHRocm93X29uX2ZhaWx1cmUpOwogICB9CiAKQEAgLTE4NSwzNyArMTk5LDM4IEBAIGNsYXNzIEdU
ZXN0RmxhZ1NhdmVyIHsKICAgICBHVEVTVF9GTEFHKHJlcGVhdCkgPSByZXBlYXRfOwogICAgIEdU
RVNUX0ZMQUcoc2h1ZmZsZSkgPSBzaHVmZmxlXzsKICAgICBHVEVTVF9GTEFHKHN0YWNrX3RyYWNl
X2RlcHRoKSA9IHN0YWNrX3RyYWNlX2RlcHRoXzsKKyAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1
bHRfdG8pID0gc3RyZWFtX3Jlc3VsdF90b187CiAgICAgR1RFU1RfRkxBRyh0aHJvd19vbl9mYWls
dXJlKSA9IHRocm93X29uX2ZhaWx1cmVfOwogICB9CisKICBwcml2YXRlOgogICAvLyBGaWVsZHMg
Zm9yIHNhdmluZyB0aGUgb3JpZ2luYWwgdmFsdWVzIG9mIGZsYWdzLgogICBib29sIGFsc29fcnVu
X2Rpc2FibGVkX3Rlc3RzXzsKICAgYm9vbCBicmVha19vbl9mYWlsdXJlXzsKICAgYm9vbCBjYXRj
aF9leGNlcHRpb25zXzsKLSAgU3RyaW5nIGNvbG9yXzsKLSAgU3RyaW5nIGRlYXRoX3Rlc3Rfc3R5
bGVfOworICBzdGQ6OnN0cmluZyBjb2xvcl87CisgIHN0ZDo6c3RyaW5nIGRlYXRoX3Rlc3Rfc3R5
bGVfOwogICBib29sIGRlYXRoX3Rlc3RfdXNlX2ZvcmtfOwotICBTdHJpbmcgZmlsdGVyXzsKLSAg
U3RyaW5nIGludGVybmFsX3J1bl9kZWF0aF90ZXN0XzsKKyAgc3RkOjpzdHJpbmcgZmlsdGVyXzsK
KyAgc3RkOjpzdHJpbmcgaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfOwogICBib29sIGxpc3RfdGVz
dHNfOwotICBTdHJpbmcgb3V0cHV0XzsKKyAgc3RkOjpzdHJpbmcgb3V0cHV0XzsKICAgYm9vbCBw
cmludF90aW1lXzsKICAgaW50ZXJuYWw6OkludDMyIHJhbmRvbV9zZWVkXzsKICAgaW50ZXJuYWw6
OkludDMyIHJlcGVhdF87CiAgIGJvb2wgc2h1ZmZsZV87CiAgIGludGVybmFsOjpJbnQzMiBzdGFj
a190cmFjZV9kZXB0aF87CisgIHN0ZDo6c3RyaW5nIHN0cmVhbV9yZXN1bHRfdG9fOwogICBib29s
IHRocm93X29uX2ZhaWx1cmVfOwogfSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXzsKIAogLy8gQ29u
dmVydHMgYSBVbmljb2RlIGNvZGUgcG9pbnQgdG8gYSBuYXJyb3cgc3RyaW5nIGluIFVURi04IGVu
Y29kaW5nLgogLy8gY29kZV9wb2ludCBwYXJhbWV0ZXIgaXMgb2YgdHlwZSBVSW50MzIgYmVjYXVz
ZSB3Y2hhcl90IG1heSBub3QgYmUKIC8vIHdpZGUgZW5vdWdoIHRvIGNvbnRhaW4gYSBjb2RlIHBv
aW50LgotLy8gVGhlIG91dHB1dCBidWZmZXIgc3RyIG11c3QgY29udGFpbnQgYXQgbGVhc3QgMzIg
Y2hhcmFjdGVycy4KLS8vIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBhZGRyZXNzIG9mIHRoZSBv
dXRwdXQgYnVmZmVyLgogLy8gSWYgdGhlIGNvZGVfcG9pbnQgaXMgbm90IGEgdmFsaWQgVW5pY29k
ZSBjb2RlIHBvaW50Ci0vLyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNvZGUgcmFuZ2UgVSswIHRvIFUr
MTBGRkZGKSBpdCB3aWxsIGJlIG91dHB1dAotLy8gYXMgJyhJbnZhbGlkIFVuaWNvZGUgMHhYWFhY
WFhYWCknLgotR1RFU1RfQVBJXyBjaGFyKiBDb2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9p
bnQsIGNoYXIqIHN0cik7CisvLyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNvZGUgcmFuZ2UgVSswIHRv
IFUrMTBGRkZGKSBpdCB3aWxsIGJlIGNvbnZlcnRlZAorLy8gdG8gIihJbnZhbGlkIFVuaWNvZGUg
MHhYWFhYWFhYWCkiLgorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBDb2RlUG9pbnRUb1V0ZjgoVUlu
dDMyIGNvZGVfcG9pbnQpOwogCiAvLyBDb252ZXJ0cyBhIHdpZGUgc3RyaW5nIHRvIGEgbmFycm93
IHN0cmluZyBpbiBVVEYtOCBlbmNvZGluZy4KIC8vIFRoZSB3aWRlIHN0cmluZyBpcyBhc3N1bWVk
IHRvIGhhdmUgdGhlIGZvbGxvd2luZyBlbmNvZGluZzoKQEAgLTIzMCw3ICsyNDUsNyBAQCBHVEVT
VF9BUElfIGNoYXIqIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9wb2ludCwgY2hhciogc3Ry
KTsKIC8vIGFzICcoSW52YWxpZCBVbmljb2RlIDB4WFhYWFhYWFgpJy4gSWYgdGhlIHN0cmluZyBp
cyBpbiBVVEYxNiBlbmNvZGluZwogLy8gYW5kIGNvbnRhaW5zIGludmFsaWQgVVRGLTE2IHN1cnJv
Z2F0ZSBwYWlycywgdmFsdWVzIGluIHRob3NlIHBhaXJzCiAvLyB3aWxsIGJlIGVuY29kZWQgYXMg
aW5kaXZpZHVhbCBVbmljb2RlIGNoYXJhY3RlcnMgZnJvbSBCYXNpYyBOb3JtYWwgUGxhbmUuCi1H
VEVTVF9BUElfIFN0cmluZyBXaWRlU3RyaW5nVG9VdGY4KGNvbnN0IHdjaGFyX3QqIHN0ciwgaW50
IG51bV9jaGFycyk7CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFdpZGVTdHJpbmdUb1V0ZjgoY29u
c3Qgd2NoYXJfdCogc3RyLCBpbnQgbnVtX2NoYXJzKTsKIAogLy8gUmVhZHMgdGhlIEdURVNUX1NI
QVJEX1NUQVRVU19GSUxFIGVudmlyb25tZW50IHZhcmlhYmxlLCBhbmQgY3JlYXRlcyB0aGUgZmls
ZQogLy8gaWYgdGhlIHZhcmlhYmxlIGlzIHByZXNlbnQuIElmIGEgZmlsZSBhbHJlYWR5IGV4aXN0
cyBhdCB0aGlzIGxvY2F0aW9uLCB0aGlzCkBAIC0yNjYsNyArMjgxLDE0IEBAIEdURVNUX0FQSV8g
Ym9vbCBTaG91bGRSdW5UZXN0T25TaGFyZCgKIC8vIHRoZSBnaXZlbiBwcmVkaWNhdGUuCiB0ZW1w
bGF0ZSA8Y2xhc3MgQ29udGFpbmVyLCB0eXBlbmFtZSBQcmVkaWNhdGU+CiBpbmxpbmUgaW50IENv
dW50SWYoY29uc3QgQ29udGFpbmVyJiBjLCBQcmVkaWNhdGUgcHJlZGljYXRlKSB7Ci0gIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6Y291bnRfaWYoYy5iZWdpbigpLCBjLmVuZCgpLCBwcmVk
aWNhdGUpKTsKKyAgLy8gSW1wbGVtZW50ZWQgYXMgYW4gZXhwbGljaXQgbG9vcCBzaW5jZSBzdGQ6
OmNvdW50X2lmKCkgaW4gbGliQ3N0ZCBvbgorICAvLyBTb2xhcmlzIGhhcyBhIG5vbi1zdGFuZGFy
ZCBzaWduYXR1cmUuCisgIGludCBjb3VudCA9IDA7CisgIGZvciAodHlwZW5hbWUgQ29udGFpbmVy
Ojpjb25zdF9pdGVyYXRvciBpdCA9IGMuYmVnaW4oKTsgaXQgIT0gYy5lbmQoKTsgKytpdCkgewor
ICAgIGlmIChwcmVkaWNhdGUoKml0KSkKKyAgICAgICsrY291bnQ7CisgIH0KKyAgcmV0dXJuIGNv
dW50OwogfQogCiAvLyBBcHBsaWVzIGEgZnVuY3Rpb24vZnVuY3RvciB0byBlYWNoIGVsZW1lbnQg
aW4gdGhlIGNvbnRhaW5lci4KQEAgLTMyNyw5NSArMzQ5LDE1IEBAIGNsYXNzIFRlc3RQcm9wZXJ0
eUtleUlzIHsKICAgLy8gQ29uc3RydWN0b3IuCiAgIC8vCiAgIC8vIFRlc3RQcm9wZXJ0eUtleUlz
IGhhcyBOTyBkZWZhdWx0IGNvbnN0cnVjdG9yLgotICBleHBsaWNpdCBUZXN0UHJvcGVydHlLZXlJ
cyhjb25zdCBjaGFyKiBrZXkpCi0gICAgICA6IGtleV8oa2V5KSB7fQorICBleHBsaWNpdCBUZXN0
UHJvcGVydHlLZXlJcyhjb25zdCBzdGQ6OnN0cmluZyYga2V5KSA6IGtleV8oa2V5KSB7fQogCiAg
IC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgbmFtZSBvZiB0ZXN0IHByb3BlcnR5IG1hdGNo
ZXMgb24ga2V5Xy4KICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9w
cm9wZXJ0eSkgY29uc3QgewotICAgIHJldHVybiBTdHJpbmcodGVzdF9wcm9wZXJ0eS5rZXkoKSku
Q29tcGFyZShrZXlfKSA9PSAwOworICAgIHJldHVybiB0ZXN0X3Byb3BlcnR5LmtleSgpID09IGtl
eV87CiAgIH0KIAogIHByaXZhdGU6Ci0gIFN0cmluZyBrZXlfOwotfTsKLQotY2xhc3MgVGVzdElu
Zm9JbXBsIHsKLSBwdWJsaWM6Ci0gIFRlc3RJbmZvSW1wbChUZXN0SW5mbyogcGFyZW50LCBjb25z
dCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUs
IGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9jb21tZW50LAotICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogY29tbWVudCwgVHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCi0gICAgICAgICAgICAgICBpbnRl
cm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5KTsKLSAgflRlc3RJbmZvSW1wbCgpOwotCi0g
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRlc3Qgc2hvdWxkIHJ1bi4KLSAgYm9vbCBzaG91bGRf
cnVuKCkgY29uc3QgeyByZXR1cm4gc2hvdWxkX3J1bl87IH0KLQotICAvLyBTZXRzIHRoZSBzaG91
bGRfcnVuIG1lbWJlci4KLSAgdm9pZCBzZXRfc2hvdWxkX3J1bihib29sIHNob3VsZCkgeyBzaG91
bGRfcnVuXyA9IHNob3VsZDsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRlc3QgaXMg
ZGlzYWJsZWQuIERpc2FibGVkIHRlc3RzIGFyZSBub3QgcnVuLgotICBib29sIGlzX2Rpc2FibGVk
KCkgY29uc3QgeyByZXR1cm4gaXNfZGlzYWJsZWRfOyB9Ci0KLSAgLy8gU2V0cyB0aGUgaXNfZGlz
YWJsZWQgbWVtYmVyLgotICB2b2lkIHNldF9pc19kaXNhYmxlZChib29sIGlzKSB7IGlzX2Rpc2Fi
bGVkXyA9IGlzOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBtYXRjaGVzIHRo
ZSBmaWx0ZXIgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLgotICBib29sIG1hdGNoZXNfZmlsdGVyKCkg
Y29uc3QgeyByZXR1cm4gbWF0Y2hlc19maWx0ZXJfOyB9Ci0KLSAgLy8gU2V0cyB0aGUgbWF0Y2hl
c19maWx0ZXIgbWVtYmVyLgotICB2b2lkIHNldF9tYXRjaGVzX2ZpbHRlcihib29sIG1hdGNoZXMp
IHsgbWF0Y2hlc19maWx0ZXJfID0gbWF0Y2hlczsgfQotCi0gIC8vIFJldHVybnMgdGhlIHRlc3Qg
Y2FzZSBuYW1lLgotICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0IHsgcmV0dXJu
IHRlc3RfY2FzZV9uYW1lXy5jX3N0cigpOyB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBuYW1l
LgotICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbmFtZV8uY19zdHIoKTsgfQot
Ci0gIC8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBjb21tZW50LgotICBjb25zdCBjaGFyKiB0ZXN0
X2Nhc2VfY29tbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRlc3RfY2FzZV9jb21tZW50Xy5jX3N0cigp
OyB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBjb21tZW50LgotICBjb25zdCBjaGFyKiBjb21t
ZW50KCkgY29uc3QgeyByZXR1cm4gY29tbWVudF8uY19zdHIoKTsgfQotCi0gIC8vIFJldHVybnMg
dGhlIElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuCi0gIFR5cGVJZCBmaXh0dXJlX2NsYXNz
X2lkKCkgY29uc3QgeyByZXR1cm4gZml4dHVyZV9jbGFzc19pZF87IH0KLQotICAvLyBSZXR1cm5z
IHRoZSB0ZXN0IHJlc3VsdC4KLSAgVGVzdFJlc3VsdCogcmVzdWx0KCkgeyByZXR1cm4gJnJlc3Vs
dF87IH0KLSAgY29uc3QgVGVzdFJlc3VsdCogcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gJnJlc3Vs
dF87IH0KLQotICAvLyBDcmVhdGVzIHRoZSB0ZXN0IG9iamVjdCwgcnVucyBpdCwgcmVjb3JkcyBp
dHMgcmVzdWx0LCBhbmQgdGhlbgotICAvLyBkZWxldGVzIGl0LgotICB2b2lkIFJ1bigpOwotCi0g
IC8vIENsZWFycyB0aGUgdGVzdCByZXN1bHQuCi0gIHZvaWQgQ2xlYXJSZXN1bHQoKSB7IHJlc3Vs
dF8uQ2xlYXIoKTsgfQotCi0gIC8vIENsZWFycyB0aGUgdGVzdCByZXN1bHQgaW4gdGhlIGdpdmVu
IFRlc3RJbmZvIG9iamVjdC4KLSAgc3RhdGljIHZvaWQgQ2xlYXJUZXN0UmVzdWx0KFRlc3RJbmZv
ICogdGVzdF9pbmZvKSB7Ci0gICAgdGVzdF9pbmZvLT5pbXBsKCktPkNsZWFyUmVzdWx0KCk7Ci0g
IH0KLQotIHByaXZhdGU6Ci0gIC8vIFRoZXNlIGZpZWxkcyBhcmUgaW1tdXRhYmxlIHByb3BlcnRp
ZXMgb2YgdGhlIHRlc3QuCi0gIFRlc3RJbmZvKiBjb25zdCBwYXJlbnRfOyAgICAgICAgICAvLyBU
aGUgb3duZXIgb2YgdGhpcyBvYmplY3QKLSAgY29uc3QgU3RyaW5nIHRlc3RfY2FzZV9uYW1lXzsg
ICAgIC8vIFRlc3QgY2FzZSBuYW1lCi0gIGNvbnN0IFN0cmluZyBuYW1lXzsgICAgICAgICAgICAg
ICAvLyBUZXN0IG5hbWUKLSAgY29uc3QgU3RyaW5nIHRlc3RfY2FzZV9jb21tZW50XzsgIC8vIFRl
c3QgY2FzZSBjb21tZW50Ci0gIGNvbnN0IFN0cmluZyBjb21tZW50XzsgICAgICAgICAgICAvLyBU
ZXN0IGNvbW1lbnQKLSAgY29uc3QgVHlwZUlkIGZpeHR1cmVfY2xhc3NfaWRfOyAgIC8vIElEIG9m
IHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKLSAgYm9vbCBzaG91bGRfcnVuXzsgICAgICAgICAgICAg
ICAgIC8vIFRydWUgaWZmIHRoaXMgdGVzdCBzaG91bGQgcnVuCi0gIGJvb2wgaXNfZGlzYWJsZWRf
OyAgICAgICAgICAgICAgICAvLyBUcnVlIGlmZiB0aGlzIHRlc3QgaXMgZGlzYWJsZWQKLSAgYm9v
bCBtYXRjaGVzX2ZpbHRlcl87ICAgICAgICAgICAgIC8vIFRydWUgaWYgdGhpcyB0ZXN0IG1hdGNo
ZXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VyLXNwZWNp
ZmllZCBmaWx0ZXIuCi0gIGludGVybmFsOjpUZXN0RmFjdG9yeUJhc2UqIGNvbnN0IGZhY3Rvcnlf
OyAgLy8gVGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHRlc3Qgb2JqZWN0Ci0KLSAgLy8gVGhpcyBmaWVs
ZCBpcyBtdXRhYmxlIGFuZCBuZWVkcyB0byBiZSByZXNldCBiZWZvcmUgcnVubmluZyB0aGUKLSAg
Ly8gdGVzdCBmb3IgdGhlIHNlY29uZCB0aW1lLgotICBUZXN0UmVzdWx0IHJlc3VsdF87Ci0KLSAg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0SW5mb0ltcGwpOworICBzdGQ6OnN0
cmluZyBrZXlfOwogfTsKIAogLy8gQ2xhc3MgVW5pdFRlc3RPcHRpb25zLgpAQCAtNDMzLDEyICsz
NzUsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdE9wdGlvbnMgewogICAvLyBGdW5jdGlv
bnMgZm9yIHByb2Nlc3NpbmcgdGhlIGd0ZXN0X291dHB1dCBmbGFnLgogCiAgIC8vIFJldHVybnMg
dGhlIG91dHB1dCBmb3JtYXQsIG9yICIiIGZvciBub3JtYWwgcHJpbnRlZCBvdXRwdXQuCi0gIHN0
YXRpYyBTdHJpbmcgR2V0T3V0cHV0Rm9ybWF0KCk7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBHZXRP
dXRwdXRGb3JtYXQoKTsKIAogICAvLyBSZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBy
ZXF1ZXN0ZWQgb3V0cHV0IGZpbGUsIG9yIHRoZQogICAvLyBkZWZhdWx0ICh0ZXN0X2RldGFpbC54
bWwgaW4gdGhlIG9yaWdpbmFsIHdvcmtpbmcgZGlyZWN0b3J5KSBpZgogICAvLyBub25lIHdhcyBl
eHBsaWNpdGx5IHNwZWNpZmllZC4KLSAgc3RhdGljIFN0cmluZyBHZXRBYnNvbHV0ZVBhdGhUb091
dHB1dEZpbGUoKTsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldEFic29sdXRlUGF0aFRvT3V0cHV0
RmlsZSgpOwogCiAgIC8vIEZ1bmN0aW9ucyBmb3IgcHJvY2Vzc2luZyB0aGUgZ3Rlc3RfZmlsdGVy
IGZsYWcuCiAKQEAgLTQ1MSw4ICszOTMsOCBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0T3B0
aW9ucyB7CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdXNlci1zcGVjaWZpZWQgZmlsdGVy
IG1hdGNoZXMgdGhlIHRlc3QgY2FzZQogICAvLyBuYW1lIGFuZCB0aGUgdGVzdCBuYW1lLgotICBz
dGF0aWMgYm9vbCBGaWx0ZXJNYXRjaGVzVGVzdChjb25zdCBTdHJpbmcgJnRlc3RfY2FzZV9uYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcgJnRlc3RfbmFt
ZSk7CisgIHN0YXRpYyBib29sIEZpbHRlck1hdGNoZXNUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0
ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnRlc3RfbmFtZSk7CiAKICNpZiBHVEVTVF9PU19XSU5ET1dTCiAgIC8vIEZ1bmN0
aW9uIGZvciBzdXBwb3J0aW5nIHRoZSBndGVzdF9jYXRjaF9leGNlcHRpb24gZmxhZy4KQEAgLTQ2
NSw3ICs0MDcsNyBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0T3B0aW9ucyB7CiAKICAgLy8g
UmV0dXJucyB0cnVlIGlmICJuYW1lIiBtYXRjaGVzIHRoZSAnOicgc2VwYXJhdGVkIGxpc3Qgb2Yg
Z2xvYi1zdHlsZQogICAvLyBmaWx0ZXJzIGluICJmaWx0ZXIiLgotICBzdGF0aWMgYm9vbCBNYXRj
aGVzRmlsdGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgY2hhciogZmlsdGVyKTsKKyAgc3Rh
dGljIGJvb2wgTWF0Y2hlc0ZpbHRlcihjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgY29uc3QgY2hh
ciogZmlsdGVyKTsKIH07CiAKIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24ncyBu
YW1lLCByZW1vdmluZyBkaXJlY3RvcnkgcGF0aCBpZiB0aGF0CkBAIC00NzgsMTkgKzQyMCwyMyBA
QCBjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UgewogICBPc1N0YWNrVHJhY2VHZXR0
ZXJJbnRlcmZhY2UoKSB7fQogICB2aXJ0dWFsIH5Pc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2Uo
KSB7fQogCi0gIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYSBTdHJp
bmcuICBQYXJhbWV0ZXJzOgorICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNl
IGFzIGFuIHN0ZDo6c3RyaW5nLiAgUGFyYW1ldGVyczoKICAgLy8KICAgLy8gICBtYXhfZGVwdGgg
IC0gdGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZAogICAv
LyAgICAgICAgICAgICAgICBpbiB0aGUgdHJhY2UuCiAgIC8vICAgc2tpcF9jb3VudCAtIHRoZSBu
dW1iZXIgb2YgdG9wIGZyYW1lcyB0byBiZSBza2lwcGVkOyBkb2Vzbid0IGNvdW50CiAgIC8vICAg
ICAgICAgICAgICAgIGFnYWluc3QgbWF4X2RlcHRoLgotICB2aXJ0dWFsIFN0cmluZyBDdXJyZW50
U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCkgPSAwOworICB2aXJ0dWFs
IHN0cmluZyBDdXJyZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCkg
PSAwOwogCiAgIC8vIFVwb25MZWF2aW5nR1Rlc3QoKSBzaG91bGQgYmUgY2FsbGVkIGltbWVkaWF0
ZWx5IGJlZm9yZSBHb29nbGUgVGVzdCBjYWxscwogICAvLyB1c2VyIGNvZGUuIEl0IHNhdmVzIHNv
bWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgc3RhY2sgdGhhdAogICAvLyBDdXJyZW50
U3RhY2tUcmFjZSgpIHdpbGwgdXNlIHRvIGZpbmQgYW5kIGhpZGUgR29vZ2xlIFRlc3Qgc3RhY2sg
ZnJhbWVzLgogICB2aXJ0dWFsIHZvaWQgVXBvbkxlYXZpbmdHVGVzdCgpID0gMDsKIAorICAvLyBU
aGlzIHN0cmluZyBpcyBpbnNlcnRlZCBpbiBwbGFjZSBvZiBzdGFjayBmcmFtZXMgdGhhdCBhcmUg
cGFydCBvZgorICAvLyBHb29nbGUgVGVzdCdzIGltcGxlbWVudGF0aW9uLgorICBzdGF0aWMgY29u
c3QgY2hhciogY29uc3Qga0VsaWRlZEZyYW1lc01hcmtlcjsKKwogIHByaXZhdGU6CiAgIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlKTsK
IH07CkBAIC00OTgsMjMgKzQ0NCwxMiBAQCBjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZh
Y2UgewogLy8gQSB3b3JraW5nIGltcGxlbWVudGF0aW9uIG9mIHRoZSBPc1N0YWNrVHJhY2VHZXR0
ZXJJbnRlcmZhY2UgaW50ZXJmYWNlLgogY2xhc3MgT3NTdGFja1RyYWNlR2V0dGVyIDogcHVibGlj
IE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSB7CiAgcHVibGljOgotICBPc1N0YWNrVHJhY2VH
ZXR0ZXIoKSA6IGNhbGxlcl9mcmFtZV8oTlVMTCkge30KLSAgdmlydHVhbCBTdHJpbmcgQ3VycmVu
dFN0YWNrVHJhY2UoaW50IG1heF9kZXB0aCwgaW50IHNraXBfY291bnQpOwotICB2aXJ0dWFsIHZv
aWQgVXBvbkxlYXZpbmdHVGVzdCgpOworICBPc1N0YWNrVHJhY2VHZXR0ZXIoKSB7fQogCi0gIC8v
IFRoaXMgc3RyaW5nIGlzIGluc2VydGVkIGluIHBsYWNlIG9mIHN0YWNrIGZyYW1lcyB0aGF0IGFy
ZSBwYXJ0IG9mCi0gIC8vIEdvb2dsZSBUZXN0J3MgaW1wbGVtZW50YXRpb24uCi0gIHN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCBrRWxpZGVkRnJhbWVzTWFya2VyOworICB2aXJ0dWFsIHN0cmluZyBD
dXJyZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCk7CisgIHZpcnR1
YWwgdm9pZCBVcG9uTGVhdmluZ0dUZXN0KCk7CiAKICBwcml2YXRlOgotICBNdXRleCBtdXRleF87
ICAvLyBwcm90ZWN0cyBhbGwgaW50ZXJuYWwgc3RhdGUKLQotICAvLyBXZSBzYXZlIHRoZSBzdGFj
ayBmcmFtZSBiZWxvdyB0aGUgZnJhbWUgdGhhdCBjYWxscyB1c2VyIGNvZGUuCi0gIC8vIFdlIGRv
IHRoaXMgYmVjYXVzZSB0aGUgYWRkcmVzcyBvZiB0aGUgZnJhbWUgaW1tZWRpYXRlbHkgYmVsb3cK
LSAgLy8gdGhlIHVzZXIgY29kZSBjaGFuZ2VzIGJldHdlZW4gdGhlIGNhbGwgdG8gVXBvbkxlYXZp
bmdHVGVzdCgpCi0gIC8vIGFuZCBhbnkgY2FsbHMgdG8gQ3VycmVudFN0YWNrVHJhY2UoKSBmcm9t
IHdpdGhpbiB0aGUgdXNlciBjb2RlLgotICB2b2lkKiBjYWxsZXJfZnJhbWVfOwotCiAgIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oT3NTdGFja1RyYWNlR2V0dGVyKTsKIH07CiAKQEAg
LTUyMiw3ICs0NTcsNyBAQCBjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXIgOiBwdWJsaWMgT3NTdGFj
a1RyYWNlR2V0dGVySW50ZXJmYWNlIHsKIHN0cnVjdCBUcmFjZUluZm8gewogICBjb25zdCBjaGFy
KiBmaWxlOwogICBpbnQgbGluZTsKLSAgU3RyaW5nIG1lc3NhZ2U7CisgIHN0ZDo6c3RyaW5nIG1l
c3NhZ2U7CiB9OwogCiAvLyBUaGlzIGlzIHRoZSBkZWZhdWx0IGdsb2JhbCB0ZXN0IHBhcnQgcmVz
dWx0IHJlcG9ydGVyIHVzZWQgaW4gVW5pdFRlc3RJbXBsLgpAQCAtNjA2LDE1ICs1NDEsMjUgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBHZXRzIHRoZSBudW1iZXIgb2Yg
ZmFpbGVkIHRlc3RzLgogICBpbnQgZmFpbGVkX3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAvLyBH
ZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGlu
IHRoZSBYTUwgcmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkg
Y29uc3Q7CisKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzLgogICBpbnQg
ZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0OwogCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiB0
ZXN0cyB0byBiZSBwcmludGVkIGluIHRoZSBYTUwgcmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV90
ZXN0X2NvdW50KCkgY29uc3Q7CisKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0cy4K
ICAgaW50IHRvdGFsX3Rlc3RfY291bnQoKSBjb25zdDsKIAogICAvLyBHZXRzIHRoZSBudW1iZXIg
b2YgdGVzdHMgdGhhdCBzaG91bGQgcnVuLgogICBpbnQgdGVzdF90b19ydW5fY291bnQoKSBjb25z
dDsKIAorICAvLyBHZXRzIHRoZSB0aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0gc3RhcnQsIGluIG1z
IGZyb20gdGhlIHN0YXJ0IG9mIHRoZQorICAvLyBVTklYIGVwb2NoLgorICBUaW1lSW5NaWxsaXMg
c3RhcnRfdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gc3RhcnRfdGltZXN0YW1wXzsgfQorCiAg
IC8vIEdldHMgdGhlIGVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5NaWxs
aXMgZWxhcHNlZF90aW1lKCkgY29uc3QgeyByZXR1cm4gZWxhcHNlZF90aW1lXzsgfQogCkBAIC02
NjMsNyArNjA4LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBnZXR0
ZXIsIGFuZCByZXR1cm5zIGl0LgogICBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UqIG9zX3N0
YWNrX3RyYWNlX2dldHRlcigpOwogCi0gIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sg
dHJhY2UgYXMgYSBTdHJpbmcuCisgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJh
Y2UgYXMgYW4gc3RkOjpzdHJpbmcuCiAgIC8vCiAgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBz
dGFjayBmcmFtZXMgdG8gYmUgaW5jbHVkZWQgaXMgc3BlY2lmaWVkIGJ5CiAgIC8vIHRoZSBndGVz
dF9zdGFja190cmFjZV9kZXB0aCBmbGFnLiAgVGhlIHNraXBfY291bnQgcGFyYW1ldGVyCkBAIC02
NzMsNyArNjE4LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBGb3Ig
ZXhhbXBsZSwgaWYgRm9vKCkgY2FsbHMgQmFyKCksIHdoaWNoIGluIHR1cm4gY2FsbHMKICAgLy8g
Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgxKSwgRm9vKCkgd2lsbCBiZSBpbmNsdWRlZCBp
biB0aGUKICAgLy8gdHJhY2UgYnV0IEJhcigpIGFuZCBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0
VG9wKCkgd29uJ3QuCi0gIFN0cmluZyBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKGludCBz
a2lwX2NvdW50KTsKKyAgc3RkOjpzdHJpbmcgQ3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcChp
bnQgc2tpcF9jb3VudCkgR1RFU1RfTk9fSU5MSU5FXzsKIAogICAvLyBGaW5kcyBhbmQgcmV0dXJu
cyBhIFRlc3RDYXNlIHdpdGggdGhlIGdpdmVuIG5hbWUuICBJZiBvbmUgZG9lc24ndAogICAvLyBl
eGlzdCwgY3JlYXRlcyBvbmUgYW5kIHJldHVybnMgaXQuCkBAIC02ODEsMTAgKzYyNiwxMiBAQCBj
bGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vIEFyZ3VtZW50czoKICAgLy8KICAg
Ly8gICB0ZXN0X2Nhc2VfbmFtZTogbmFtZSBvZiB0aGUgdGVzdCBjYXNlCisgIC8vICAgdHlwZV9w
YXJhbTogICAgIHRoZSBuYW1lIG9mIHRoZSB0ZXN0J3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwg
aWYKKyAgLy8gICAgICAgICAgICAgICAgICAgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhIHR5cGUt
cGFyYW1ldGVyaXplZCB0ZXN0LgogICAvLyAgIHNldF91cF90YzogICAgICBwb2ludGVyIHRvIHRo
ZSBmdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIHRlc3QgY2FzZQogICAvLyAgIHRlYXJfZG93bl90
YzogICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2Fz
ZQogICBUZXN0Q2FzZSogR2V0VGVzdENhc2UoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb21tZW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogdHlwZV9wYXJhbSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIFRlc3Q6OlNldFVwVGVzdENhc2VGdW5jIHNldF91cF90YywKICAgICAgICAgICAgICAgICAg
ICAgICAgIFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90Yyk7CiAKQEAgLTY5
Nyw3ICs2NDQsNyBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vICAgdGVz
dF9pbmZvOiAgICB0aGUgVGVzdEluZm8gb2JqZWN0CiAgIHZvaWQgQWRkVGVzdEluZm8oVGVzdDo6
U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAgICAgICAgICAgICAgICAgIFRlc3Q6OlRl
YXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YywKLSAgICAgICAgICAgICAgICAgICBUZXN0
SW5mbyAqIHRlc3RfaW5mbykgeworICAgICAgICAgICAgICAgICAgIFRlc3RJbmZvKiB0ZXN0X2lu
Zm8pIHsKICAgICAvLyBJbiBvcmRlciB0byBzdXBwb3J0IHRocmVhZC1zYWZlIGRlYXRoIHRlc3Rz
LCB3ZSBuZWVkIHRvCiAgICAgLy8gcmVtZW1iZXIgdGhlIG9yaWdpbmFsIHdvcmtpbmcgZGlyZWN0
b3J5IHdoZW4gdGhlIHRlc3QgcHJvZ3JhbQogICAgIC8vIHdhcyBmaXJzdCBpbnZva2VkLiAgV2Ug
Y2Fubm90IGRvIHRoaXMgaW4gUlVOX0FMTF9URVNUUygpLCBhcwpAQCAtNzEyLDcgKzY1OSw3IEBA
IGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgICB9CiAKICAgICBHZXRUZXN0Q2Fz
ZSh0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCksCi0gICAgICAgICAgICAgICAgdGVzdF9pbmZv
LT50ZXN0X2Nhc2VfY29tbWVudCgpLAorICAgICAgICAgICAgICAgIHRlc3RfaW5mby0+dHlwZV9w
YXJhbSgpLAogICAgICAgICAgICAgICAgIHNldF91cF90YywKICAgICAgICAgICAgICAgICB0ZWFy
X2Rvd25fdGMpLT5BZGRUZXN0SW5mbyh0ZXN0X2luZm8pOwogICB9CkBAIC03MzgsMjcgKzY4NSwz
NSBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIH0KIAogICAvLyBSZWdpc3Rl
cnMgYWxsIHBhcmFtZXRlcml6ZWQgdGVzdHMgZGVmaW5lZCB1c2luZyBURVNUX1AgYW5kCi0gIC8v
IElOU1RBTlRJQVRFX1RFU1RfUCwgY3JlYXRpbmcgcmVndWxhciB0ZXN0cyBmb3IgZWFjaCB0ZXN0
L3BhcmFtZXRlcgotICAvLyBjb21iaW5hdGlvbi4gVGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCBt
b3JlIHRoZW4gb25jZTsgaXQgaGFzCi0gIC8vIGd1YXJkcyBwcm90ZWN0aW5nIGZyb20gcmVnaXN0
ZXJpbmcgdGhlIHRlc3RzIG1vcmUgdGhlbiBvbmNlLgotICAvLyBJZiB2YWx1ZS1wYXJhbWV0ZXJp
emVkIHRlc3RzIGFyZSBkaXNhYmxlZCwgUmVnaXN0ZXJQYXJhbWV0ZXJpemVkVGVzdHMKLSAgLy8g
aXMgcHJlc2VudCBidXQgZG9lcyBub3RoaW5nLgorICAvLyBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UCwgY3JlYXRpbmcgcmVndWxhciB0ZXN0cyBmb3IgZWFjaCB0ZXN0L3BhcmFtZXRlcgorICAvLyBj
b21iaW5hdGlvbi4gVGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCBtb3JlIHRoZW4gb25jZTsgaXQg
aGFzIGd1YXJkcworICAvLyBwcm90ZWN0aW5nIGZyb20gcmVnaXN0ZXJpbmcgdGhlIHRlc3RzIG1v
cmUgdGhlbiBvbmNlLiAgSWYKKyAgLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZGlz
YWJsZWQsIFJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzIGlzCisgIC8vIHByZXNlbnQgYnV0IGRv
ZXMgbm90aGluZy4KICAgdm9pZCBSZWdpc3RlclBhcmFtZXRlcml6ZWRUZXN0cygpOwogCiAgIC8v
IFJ1bnMgYWxsIHRlc3RzIGluIHRoaXMgVW5pdFRlc3Qgb2JqZWN0LCBwcmludHMgdGhlIHJlc3Vs
dCwgYW5kCi0gIC8vIHJldHVybnMgMCBpZiBhbGwgdGVzdHMgYXJlIHN1Y2Nlc3NmdWwsIG9yIDEg
b3RoZXJ3aXNlLiAgSWYgYW55Ci0gIC8vIGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIGEgdGVz
dCBvbiBXaW5kb3dzLCB0aGlzIHRlc3QgaXMKLSAgLy8gY29uc2lkZXJlZCB0byBiZSBmYWlsZWQs
IGJ1dCB0aGUgcmVzdCBvZiB0aGUgdGVzdHMgd2lsbCBzdGlsbCBiZQotICAvLyBydW4uICAoV2Ug
ZGlzYWJsZSBleGNlcHRpb25zIG9uIExpbnV4IGFuZCBNYWMgT1MgWCwgc28gdGhlIGlzc3VlCi0g
IC8vIGRvZXNuJ3QgYXBwbHkgdGhlcmUuKQotICBpbnQgUnVuQWxsVGVzdHMoKTsKLQotICAvLyBD
bGVhcnMgdGhlIHJlc3VsdHMgb2YgYWxsIHRlc3RzLCBpbmNsdWRpbmcgdGhlIGFkIGhvYyB0ZXN0
LgotICB2b2lkIENsZWFyUmVzdWx0KCkgeworICAvLyByZXR1cm5zIHRydWUgaWYgYWxsIHRlc3Rz
IGFyZSBzdWNjZXNzZnVsLiAgSWYgYW55IGV4Y2VwdGlvbiBpcworICAvLyB0aHJvd24gZHVyaW5n
IGEgdGVzdCwgdGhpcyB0ZXN0IGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFpbGVkLCBidXQKKyAgLy8g
dGhlIHJlc3Qgb2YgdGhlIHRlc3RzIHdpbGwgc3RpbGwgYmUgcnVuLgorICBib29sIFJ1bkFsbFRl
c3RzKCk7CisKKyAgLy8gQ2xlYXJzIHRoZSByZXN1bHRzIG9mIGFsbCB0ZXN0cywgZXhjZXB0IHRo
ZSBhZCBob2MgdGVzdHMuCisgIHZvaWQgQ2xlYXJOb25BZEhvY1Rlc3RSZXN1bHQoKSB7CiAgICAg
Rm9yRWFjaCh0ZXN0X2Nhc2VzXywgVGVzdENhc2U6OkNsZWFyVGVzdENhc2VSZXN1bHQpOworICB9
CisKKyAgLy8gQ2xlYXJzIHRoZSByZXN1bHRzIG9mIGFkLWhvYyB0ZXN0IGFzc2VydGlvbnMuCisg
IHZvaWQgQ2xlYXJBZEhvY1Rlc3RSZXN1bHQoKSB7CiAgICAgYWRfaG9jX3Rlc3RfcmVzdWx0Xy5D
bGVhcigpOwogICB9CiAKKyAgLy8gQWRkcyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUgY3VycmVudCBU
ZXN0UmVzdWx0IG9iamVjdCB3aGVuIGludm9rZWQgaW4gYQorICAvLyBjb250ZXh0IG9mIGEgdGVz
dCBvciBhIHRlc3QgY2FzZSwgb3IgdG8gdGhlIGdsb2JhbCBwcm9wZXJ0eSBzZXQuIElmIHRoZQor
ICAvLyByZXN1bHQgYWxyZWFkeSBjb250YWlucyBhIHByb3BlcnR5IHdpdGggdGhlIHNhbWUga2V5
LCB0aGUgdmFsdWUgd2lsbCBiZQorICAvLyB1cGRhdGVkLgorICB2b2lkIFJlY29yZFByb3BlcnR5
KGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSk7CisKICAgZW51bSBSZWFjdGlvblRv
U2hhcmRpbmcgewogICAgIEhPTk9SX1NIQVJESU5HX1BST1RPQ09MLAogICAgIElHTk9SRV9TSEFS
RElOR19QUk9UT0NPTApAQCAtODE3LDYgKzc3MiwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRU
ZXN0SW1wbCB7CiAgIC8vIFVuaXRUZXN0T3B0aW9ucy4gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9y
ZSBJbml0R29vZ2xlVGVzdC4KICAgdm9pZCBDb25maWd1cmVYbWxPdXRwdXQoKTsKIAorI2lmIEdU
RVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKyAgLy8gSW5pdGlhbGl6ZXMgdGhlIGV2ZW50IGxpc3Rl
bmVyIGZvciBzdHJlYW1pbmcgdGVzdCByZXN1bHRzIHRvIGEgc29ja2V0LgorICAvLyBNdXN0IG5v
dCBiZSBjYWxsZWQgYmVmb3JlIEluaXRHb29nbGVUZXN0LgorICB2b2lkIENvbmZpZ3VyZVN0cmVh
bWluZ091dHB1dCgpOworI2VuZGlmCisKICAgLy8gUGVyZm9ybXMgaW5pdGlhbGl6YXRpb24gZGVw
ZW5kZW50IHVwb24gZmxhZyB2YWx1ZXMgb2J0YWluZWQgaW4KICAgLy8gUGFyc2VHb29nbGVUZXN0
RmxhZ3NPbmx5LiAgSXMgY2FsbGVkIGZyb20gSW5pdEdvb2dsZVRlc3QgYWZ0ZXIgdGhlIGNhbGwg
dG8KICAgLy8gUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5LiAgSW4gY2FzZSBhIHVzZXIgbmVnbGVj
dHMgdG8gY2FsbCBJbml0R29vZ2xlVGVzdApAQCAtODM3LDkgKzc5OCwxNyBAQCBjbGFzcyBHVEVT
VF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vIFJlc3RvcmVzIHRoZSB0ZXN0IGNhc2VzIGFuZCB0
ZXN0cyB0byB0aGVpciBvcmRlciBiZWZvcmUgdGhlIGZpcnN0IHNodWZmbGUuCiAgIHZvaWQgVW5z
aHVmZmxlVGVzdHMoKTsKIAorICAvLyBSZXR1cm5zIHRoZSB2YWx1ZSBvZiBHVEVTVF9GTEFHKGNh
dGNoX2V4Y2VwdGlvbnMpIGF0IHRoZSBtb21lbnQKKyAgLy8gVW5pdFRlc3Q6OlJ1bigpIHN0YXJ0
cy4KKyAgYm9vbCBjYXRjaF9leGNlcHRpb25zKCkgY29uc3QgeyByZXR1cm4gY2F0Y2hfZXhjZXB0
aW9uc187IH0KKwogIHByaXZhdGU6CiAgIGZyaWVuZCBjbGFzcyA6OnRlc3Rpbmc6OlVuaXRUZXN0
OwogCisgIC8vIFVzZWQgYnkgVW5pdFRlc3Q6OlJ1bigpIHRvIGNhcHR1cmUgdGhlIHN0YXRlIG9m
CisgIC8vIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgYXQgdGhlIG1vbWVudCBpdCBzdGFy
dHMuCisgIHZvaWQgc2V0X2NhdGNoX2V4Y2VwdGlvbnMoYm9vbCB2YWx1ZSkgeyBjYXRjaF9leGNl
cHRpb25zXyA9IHZhbHVlOyB9CisKICAgLy8gVGhlIFVuaXRUZXN0IG9iamVjdCB0aGF0IG93bnMg
dGhpcyBpbXBsZW1lbnRhdGlvbiBvYmplY3QuCiAgIFVuaXRUZXN0KiBjb25zdCBwYXJlbnRfOwog
CkBAIC05MjksNiArODk4LDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAg
Ly8gT3VyIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLgogICBpbnRlcm5hbDo6UmFuZG9tIHJhbmRv
bV87CiAKKyAgLy8gVGhlIHRpbWUgb2YgdGhlIHRlc3QgcHJvZ3JhbSBzdGFydCwgaW4gbXMgZnJv
bSB0aGUgc3RhcnQgb2YgdGhlCisgIC8vIFVOSVggZXBvY2guCisgIFRpbWVJbk1pbGxpcyBzdGFy
dF90aW1lc3RhbXBfOworCiAgIC8vIEhvdyBsb25nIHRoZSB0ZXN0IHRvb2sgdG8gcnVuLCBpbiBt
aWxsaXNlY29uZHMuCiAgIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3RpbWVfOwogCkBAIC05NDIsNiAr
OTE1LDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gQSBwZXItdGhy
ZWFkIHN0YWNrIG9mIHRyYWNlcyBjcmVhdGVkIGJ5IHRoZSBTQ09QRURfVFJBQ0UoKSBtYWNyby4K
ICAgaW50ZXJuYWw6OlRocmVhZExvY2FsPHN0ZDo6dmVjdG9yPFRyYWNlSW5mbz4gPiBndGVzdF90
cmFjZV9zdGFja187CiAKKyAgLy8gVGhlIHZhbHVlIG9mIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0
aW9ucykgYXQgdGhlIG1vbWVudCBSdW5BbGxUZXN0cygpCisgIC8vIHN0YXJ0cy4KKyAgYm9vbCBj
YXRjaF9leGNlcHRpb25zXzsKKwogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFVu
aXRUZXN0SW1wbCk7CiB9OyAgLy8gY2xhc3MgVW5pdFRlc3RJbXBsCiAKQEAgLTk1MSwxNCArOTI4
LDE2IEBAIGlubGluZSBVbml0VGVzdEltcGwqIEdldFVuaXRUZXN0SW1wbCgpIHsKICAgcmV0dXJu
IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5pbXBsKCk7CiB9CiAKKyNpZiBHVEVTVF9VU0VTX1NJ
TVBMRV9SRQorCiAvLyBJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zIGZvciBpbXBsZW1lbnRpbmcg
dGhlIHNpbXBsZSByZWd1bGFyCiAvLyBleHByZXNzaW9uIG1hdGNoZXIuCiBHVEVTVF9BUElfIGJv
b2wgSXNJblNldChjaGFyIGNoLCBjb25zdCBjaGFyKiBzdHIpOwotR1RFU1RfQVBJXyBib29sIElz
RGlnaXQoY2hhciBjaCk7Ci1HVEVTVF9BUElfIGJvb2wgSXNQdW5jdChjaGFyIGNoKTsKK0dURVNU
X0FQSV8gYm9vbCBJc0FzY2lpRGlnaXQoY2hhciBjaCk7CitHVEVTVF9BUElfIGJvb2wgSXNBc2Np
aVB1bmN0KGNoYXIgY2gpOwogR1RFU1RfQVBJXyBib29sIElzUmVwZWF0KGNoYXIgY2gpOwotR1RF
U1RfQVBJXyBib29sIElzV2hpdGVTcGFjZShjaGFyIGNoKTsKLUdURVNUX0FQSV8gYm9vbCBJc1dv
cmRDaGFyKGNoYXIgY2gpOworR1RFU1RfQVBJXyBib29sIElzQXNjaWlXaGl0ZVNwYWNlKGNoYXIg
Y2gpOworR1RFU1RfQVBJXyBib29sIElzQXNjaWlXb3JkQ2hhcihjaGFyIGNoKTsKIEdURVNUX0FQ
SV8gYm9vbCBJc1ZhbGlkRXNjYXBlKGNoYXIgY2gpOwogR1RFU1RfQVBJXyBib29sIEF0b21NYXRj
aGVzQ2hhcihib29sIGVzY2FwZWQsIGNoYXIgcGF0dGVybiwgY2hhciBjaCk7CiBHVEVTVF9BUElf
IGJvb2wgVmFsaWRhdGVSZWdleChjb25zdCBjaGFyKiByZWdleCk7CkBAIC05NjcsNiArOTQ2LDgg
QEAgR1RFU1RfQVBJXyBib29sIE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKAogICAgIGJv
b2wgZXNjYXBlZCwgY2hhciBjaCwgY2hhciByZXBlYXQsIGNvbnN0IGNoYXIqIHJlZ2V4LCBjb25z
dCBjaGFyKiBzdHIpOwogR1RFU1RfQVBJXyBib29sIE1hdGNoUmVnZXhBbnl3aGVyZShjb25zdCBj
aGFyKiByZWdleCwgY29uc3QgY2hhciogc3RyKTsKIAorI2VuZGlmICAvLyBHVEVTVF9VU0VTX1NJ
TVBMRV9SRQorCiAvLyBQYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IgR29vZ2xlIFRlc3QgZmxh
Z3MsIHdpdGhvdXQgaW5pdGlhbGl6aW5nCiAvLyBvdGhlciBwYXJ0cyBvZiBHb29nbGUgVGVzdC4K
IEdURVNUX0FQSV8gdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoaW50KiBhcmdjLCBjaGFy
KiogYXJndik7CkBAIC05NzYsMzMgKzk1Nyw3IEBAIEdURVNUX0FQSV8gdm9pZCBQYXJzZUdvb2ds
ZVRlc3RGbGFnc09ubHkoaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndik7CiAKIC8vIFJldHVybnMg
dGhlIG1lc3NhZ2UgZGVzY3JpYmluZyB0aGUgbGFzdCBzeXN0ZW0gZXJyb3IsIHJlZ2FyZGxlc3Mg
b2YgdGhlCiAvLyBwbGF0Zm9ybS4KLVN0cmluZyBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpOwot
Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotLy8gUHJvdmlkZXMgbGVhay1zYWZlIFdpbmRvd3Mga2Vy
bmVsIGhhbmRsZSBvd25lcnNoaXAuCi1jbGFzcyBBdXRvSGFuZGxlIHsKLSBwdWJsaWM6Ci0gIEF1
dG9IYW5kbGUoKSA6IGhhbmRsZV8oSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHt9Ci0gIGV4cGxpY2l0
IEF1dG9IYW5kbGUoSEFORExFIGhhbmRsZSkgOiBoYW5kbGVfKGhhbmRsZSkge30KLQotICB+QXV0
b0hhbmRsZSgpIHsgUmVzZXQoKTsgfQotCi0gIEhBTkRMRSBHZXQoKSBjb25zdCB7IHJldHVybiBo
YW5kbGVfOyB9Ci0gIHZvaWQgUmVzZXQoKSB7IFJlc2V0KElOVkFMSURfSEFORExFX1ZBTFVFKTsg
fQotICB2b2lkIFJlc2V0KEhBTkRMRSBoYW5kbGUpIHsKLSAgICBpZiAoaGFuZGxlICE9IGhhbmRs
ZV8pIHsKLSAgICAgIGlmIChoYW5kbGVfICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAg
ICA6OkNsb3NlSGFuZGxlKGhhbmRsZV8pOwotICAgICAgaGFuZGxlXyA9IGhhbmRsZTsKLSAgICB9
Ci0gIH0KLQotIHByaXZhdGU6Ci0gIEhBTkRMRSBoYW5kbGVfOwotCi0gIEdURVNUX0RJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTl8oQXV0b0hhbmRsZSk7Ci19OwotI2VuZGlmICAvLyBHVEVTVF9PU19X
SU5ET1dTCitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCk7
CiAKIC8vIEF0dGVtcHRzIHRvIHBhcnNlIGEgc3RyaW5nIGludG8gYSBwb3NpdGl2ZSBpbnRlZ2Vy
IHBvaW50ZWQgdG8gYnkgdGhlCiAvLyBudW1iZXIgcGFyYW1ldGVyLiAgUmV0dXJucyB0cnVlIGlm
IHRoYXQgaXMgcG9zc2libGUuCkBAIC0xMDEzLDcgKzk2OCw3IEBAIGJvb2wgUGFyc2VOYXR1cmFs
TnVtYmVyKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgSW50ZWdlciogbnVtYmVyKSB7CiAgIC8v
IEZhaWwgZmFzdCBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGRvZXMgbm90IGJlZ2luIHdpdGggYSBkaWdp
dDsKICAgLy8gdGhpcyBieXBhc3NlcyBzdHJ0b1hYWCdzICJvcHRpb25hbCBsZWFkaW5nIHdoaXRl
c3BhY2UgYW5kIHBsdXMKICAgLy8gb3IgbWludXMgc2lnbiIgc2VtYW50aWNzLCB3aGljaCBhcmUg
dW5kZXNpcmFibGUgaGVyZS4KLSAgaWYgKHN0ci5lbXB0eSgpIHx8ICFpc2RpZ2l0KHN0clswXSkp
IHsKKyAgaWYgKHN0ci5lbXB0eSgpIHx8ICFJc0RpZ2l0KHN0clswXSkpIHsKICAgICByZXR1cm4g
ZmFsc2U7CiAgIH0KICAgZXJybm8gPSAwOwpAQCAtMTAyMSwxNCArOTc2LDIwIEBAIGJvb2wgUGFy
c2VOYXR1cmFsTnVtYmVyKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgSW50ZWdlciogbnVtYmVy
KSB7CiAgIGNoYXIqIGVuZDsKICAgLy8gQmlnZ2VzdENvbnZlcnRpYmxlIGlzIHRoZSBsYXJnZXN0
IGludGVnZXIgdHlwZSB0aGF0IHN5c3RlbS1wcm92aWRlZAogICAvLyBzdHJpbmctdG8tbnVtYmVy
IGNvbnZlcnNpb24gcm91dGluZXMgY2FuIHJldHVybi4KLSNpZiBHVEVTVF9PU19XSU5ET1dTICYm
ICFkZWZpbmVkKF9fR05VQ19fKQorCisjIGlmIEdURVNUX09TX1dJTkRPV1MgJiYgIWRlZmluZWQo
X19HTlVDX18pCisKICAgLy8gTVNWQyBhbmQgQysrIEJ1aWxkZXIgZGVmaW5lIF9faW50NjQgaW5z
dGVhZCBvZiB0aGUgc3RhbmRhcmQgbG9uZyBsb25nLgogICB0eXBlZGVmIHVuc2lnbmVkIF9faW50
NjQgQmlnZ2VzdENvbnZlcnRpYmxlOwogICBjb25zdCBCaWdnZXN0Q29udmVydGlibGUgcGFyc2Vk
ID0gX3N0cnRvdWk2NChzdHIuY19zdHIoKSwgJmVuZCwgMTApOwotI2Vsc2UKKworIyBlbHNlCisK
ICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgQmlnZ2VzdENvbnZlcnRpYmxlOyAgLy8gTk9M
SU5UCiAgIGNvbnN0IEJpZ2dlc3RDb252ZXJ0aWJsZSBwYXJzZWQgPSBzdHJ0b3VsbChzdHIuY19z
dHIoKSwgJmVuZCwgMTApOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVk
KF9fR05VQ19fKQorCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVkKF9f
R05VQ19fKQorCiAgIGNvbnN0IGJvb2wgcGFyc2Vfc3VjY2VzcyA9ICplbmQgPT0gJ1wwJyAmJiBl
cnJubyA9PSAwOwogCiAgIC8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IENvbnZlcnQgdGhpcyB0
byBjb21waWxlIHRpbWUgYXNzZXJ0aW9uIHdoZW4gaXQgaXMKQEAgLTEwNTMsOCArMTAxNCw5IEBA
IGJvb2wgUGFyc2VOYXR1cmFsTnVtYmVyKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgSW50ZWdl
ciogbnVtYmVyKSB7CiBjbGFzcyBUZXN0UmVzdWx0QWNjZXNzb3IgewogIHB1YmxpYzoKICAgc3Rh
dGljIHZvaWQgUmVjb3JkUHJvcGVydHkoVGVzdFJlc3VsdCogdGVzdF9yZXN1bHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB4bWxfZWxlbWVudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFByb3BlcnR5JiBwcm9wZXJ0eSkg
ewotICAgIHRlc3RfcmVzdWx0LT5SZWNvcmRQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgdGVzdF9y
ZXN1bHQtPlJlY29yZFByb3BlcnR5KHhtbF9lbGVtZW50LCBwcm9wZXJ0eSk7CiAgIH0KIAogICBz
dGF0aWMgdm9pZCBDbGVhclRlc3RQYXJ0UmVzdWx0cyhUZXN0UmVzdWx0KiB0ZXN0X3Jlc3VsdCkg
ewpAQCAtMTA2Nyw2ICsxMDI5LDE1NCBAQCBjbGFzcyBUZXN0UmVzdWx0QWNjZXNzb3IgewogICB9
CiB9OwogCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworCisvLyBTdHJlYW1zIHRlc3Qg
cmVzdWx0cyB0byB0aGUgZ2l2ZW4gcG9ydCBvbiB0aGUgZ2l2ZW4gaG9zdCBtYWNoaW5lLgorY2xh
c3MgR1RFU1RfQVBJXyBTdHJlYW1pbmdMaXN0ZW5lciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExp
c3RlbmVyIHsKKyBwdWJsaWM6CisgIC8vIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHdyaXRpbmcg
c3RyaW5ncyB0byBhIHNvY2tldC4KKyAgY2xhc3MgQWJzdHJhY3RTb2NrZXRXcml0ZXIgeworICAg
cHVibGljOgorICAgIHZpcnR1YWwgfkFic3RyYWN0U29ja2V0V3JpdGVyKCkge30KKworICAgIC8v
IFNlbmRzIGEgc3RyaW5nIHRvIHRoZSBzb2NrZXQuCisgICAgdmlydHVhbCB2b2lkIFNlbmQoY29u
c3Qgc3RyaW5nJiBtZXNzYWdlKSA9IDA7CisKKyAgICAvLyBDbG9zZXMgdGhlIHNvY2tldC4KKyAg
ICB2aXJ0dWFsIHZvaWQgQ2xvc2VDb25uZWN0aW9uKCkge30KKworICAgIC8vIFNlbmRzIGEgc3Ry
aW5nIGFuZCBhIG5ld2xpbmUgdG8gdGhlIHNvY2tldC4KKyAgICB2b2lkIFNlbmRMbihjb25zdCBz
dHJpbmcmIG1lc3NhZ2UpIHsKKyAgICAgIFNlbmQobWVzc2FnZSArICJcbiIpOworICAgIH0KKyAg
fTsKKworICAvLyBDb25jcmV0ZSBjbGFzcyBmb3IgYWN0dWFsbHkgd3JpdGluZyBzdHJpbmdzIHRv
IGEgc29ja2V0LgorICBjbGFzcyBTb2NrZXRXcml0ZXIgOiBwdWJsaWMgQWJzdHJhY3RTb2NrZXRX
cml0ZXIgeworICAgcHVibGljOgorICAgIFNvY2tldFdyaXRlcihjb25zdCBzdHJpbmcmIGhvc3Qs
IGNvbnN0IHN0cmluZyYgcG9ydCkKKyAgICAgICAgOiBzb2NrZmRfKC0xKSwgaG9zdF9uYW1lXyho
b3N0KSwgcG9ydF9udW1fKHBvcnQpIHsKKyAgICAgIE1ha2VDb25uZWN0aW9uKCk7CisgICAgfQor
CisgICAgdmlydHVhbCB+U29ja2V0V3JpdGVyKCkgeworICAgICAgaWYgKHNvY2tmZF8gIT0gLTEp
CisgICAgICAgIENsb3NlQ29ubmVjdGlvbigpOworICAgIH0KKworICAgIC8vIFNlbmRzIGEgc3Ry
aW5nIHRvIHRoZSBzb2NrZXQuCisgICAgdmlydHVhbCB2b2lkIFNlbmQoY29uc3Qgc3RyaW5nJiBt
ZXNzYWdlKSB7CisgICAgICBHVEVTVF9DSEVDS18oc29ja2ZkXyAhPSAtMSkKKyAgICAgICAgICA8
PCAiU2VuZCgpIGNhbiBiZSBjYWxsZWQgb25seSB3aGVuIHRoZXJlIGlzIGEgY29ubmVjdGlvbi4i
OworCisgICAgICBjb25zdCBpbnQgbGVuID0gc3RhdGljX2Nhc3Q8aW50PihtZXNzYWdlLmxlbmd0
aCgpKTsKKyAgICAgIGlmICh3cml0ZShzb2NrZmRfLCBtZXNzYWdlLmNfc3RyKCksIGxlbikgIT0g
bGVuKSB7CisgICAgICAgIEdURVNUX0xPR18oV0FSTklORykKKyAgICAgICAgICAgIDw8ICJzdHJl
YW1fcmVzdWx0X3RvOiBmYWlsZWQgdG8gc3RyZWFtIHRvICIKKyAgICAgICAgICAgIDw8IGhvc3Rf
bmFtZV8gPDwgIjoiIDw8IHBvcnRfbnVtXzsKKyAgICAgIH0KKyAgICB9CisKKyAgIHByaXZhdGU6
CisgICAgLy8gQ3JlYXRlcyBhIGNsaWVudCBzb2NrZXQgYW5kIGNvbm5lY3RzIHRvIHRoZSBzZXJ2
ZXIuCisgICAgdm9pZCBNYWtlQ29ubmVjdGlvbigpOworCisgICAgLy8gQ2xvc2VzIHRoZSBzb2Nr
ZXQuCisgICAgdm9pZCBDbG9zZUNvbm5lY3Rpb24oKSB7CisgICAgICBHVEVTVF9DSEVDS18oc29j
a2ZkXyAhPSAtMSkKKyAgICAgICAgICA8PCAiQ2xvc2VDb25uZWN0aW9uKCkgY2FuIGJlIGNhbGxl
ZCBvbmx5IHdoZW4gdGhlcmUgaXMgYSBjb25uZWN0aW9uLiI7CisKKyAgICAgIGNsb3NlKHNvY2tm
ZF8pOworICAgICAgc29ja2ZkXyA9IC0xOworICAgIH0KKworICAgIGludCBzb2NrZmRfOyAgLy8g
c29ja2V0IGZpbGUgZGVzY3JpcHRvcgorICAgIGNvbnN0IHN0cmluZyBob3N0X25hbWVfOworICAg
IGNvbnN0IHN0cmluZyBwb3J0X251bV87CisKKyAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKFNvY2tldFdyaXRlcik7CisgIH07ICAvLyBjbGFzcyBTb2NrZXRXcml0ZXIKKworICAv
LyBFc2NhcGVzICc9JywgJyYnLCAnJScsIGFuZCAnXG4nIGNoYXJhY3RlcnMgaW4gc3RyIGFzICIl
eHgiLgorICBzdGF0aWMgc3RyaW5nIFVybEVuY29kZShjb25zdCBjaGFyKiBzdHIpOworCisgIFN0
cmVhbWluZ0xpc3RlbmVyKGNvbnN0IHN0cmluZyYgaG9zdCwgY29uc3Qgc3RyaW5nJiBwb3J0KQor
ICAgICAgOiBzb2NrZXRfd3JpdGVyXyhuZXcgU29ja2V0V3JpdGVyKGhvc3QsIHBvcnQpKSB7IFN0
YXJ0KCk7IH0KKworICBleHBsaWNpdCBTdHJlYW1pbmdMaXN0ZW5lcihBYnN0cmFjdFNvY2tldFdy
aXRlciogc29ja2V0X3dyaXRlcikKKyAgICAgIDogc29ja2V0X3dyaXRlcl8oc29ja2V0X3dyaXRl
cikgeyBTdGFydCgpOyB9CisKKyAgdm9pZCBPblRlc3RQcm9ncmFtU3RhcnQoY29uc3QgVW5pdFRl
c3QmIC8qIHVuaXRfdGVzdCAqLykgeworICAgIFNlbmRMbigiZXZlbnQ9VGVzdFByb2dyYW1TdGFy
dCIpOworICB9CisKKyAgdm9pZCBPblRlc3RQcm9ncmFtRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0
X3Rlc3QpIHsKKyAgICAvLyBOb3RlIHRoYXQgR29vZ2xlIFRlc3QgY3VycmVudCBvbmx5IHJlcG9y
dCBlbGFwc2VkIHRpbWUgZm9yIGVhY2gKKyAgICAvLyB0ZXN0IGl0ZXJhdGlvbiwgbm90IGZvciB0
aGUgZW50aXJlIHRlc3QgcHJvZ3JhbS4KKyAgICBTZW5kTG4oImV2ZW50PVRlc3RQcm9ncmFtRW5k
JnBhc3NlZD0iICsgRm9ybWF0Qm9vbCh1bml0X3Rlc3QuUGFzc2VkKCkpKTsKKworICAgIC8vIE5v
dGlmeSB0aGUgc3RyZWFtaW5nIHNlcnZlciB0byBzdG9wLgorICAgIHNvY2tldF93cml0ZXJfLT5D
bG9zZUNvbm5lY3Rpb24oKTsKKyAgfQorCisgIHZvaWQgT25UZXN0SXRlcmF0aW9uU3RhcnQoY29u
c3QgVW5pdFRlc3QmIC8qIHVuaXRfdGVzdCAqLywgaW50IGl0ZXJhdGlvbikgeworICAgIFNlbmRM
bigiZXZlbnQ9VGVzdEl0ZXJhdGlvblN0YXJ0Jml0ZXJhdGlvbj0iICsKKyAgICAgICAgICAgU3Ry
ZWFtYWJsZVRvU3RyaW5nKGl0ZXJhdGlvbikpOworICB9CisKKyAgdm9pZCBPblRlc3RJdGVyYXRp
b25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwgaW50IC8qIGl0ZXJhdGlvbiAqLykgewor
ICAgIFNlbmRMbigiZXZlbnQ9VGVzdEl0ZXJhdGlvbkVuZCZwYXNzZWQ9IiArCisgICAgICAgICAg
IEZvcm1hdEJvb2wodW5pdF90ZXN0LlBhc3NlZCgpKSArICImZWxhcHNlZF90aW1lPSIgKworICAg
ICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodW5pdF90ZXN0LmVsYXBzZWRfdGltZSgpKSArICJt
cyIpOworICB9CisKKyAgdm9pZCBPblRlc3RDYXNlU3RhcnQoY29uc3QgVGVzdENhc2UmIHRlc3Rf
Y2FzZSkgeworICAgIFNlbmRMbihzdGQ6OnN0cmluZygiZXZlbnQ9VGVzdENhc2VTdGFydCZuYW1l
PSIpICsgdGVzdF9jYXNlLm5hbWUoKSk7CisgIH0KKworICB2b2lkIE9uVGVzdENhc2VFbmQoY29u
c3QgVGVzdENhc2UmIHRlc3RfY2FzZSkgeworICAgIFNlbmRMbigiZXZlbnQ9VGVzdENhc2VFbmQm
cGFzc2VkPSIgKyBGb3JtYXRCb29sKHRlc3RfY2FzZS5QYXNzZWQoKSkKKyAgICAgICAgICAgKyAi
JmVsYXBzZWRfdGltZT0iICsgU3RyZWFtYWJsZVRvU3RyaW5nKHRlc3RfY2FzZS5lbGFwc2VkX3Rp
bWUoKSkKKyAgICAgICAgICAgKyAibXMiKTsKKyAgfQorCisgIHZvaWQgT25UZXN0U3RhcnQoY29u
c3QgVGVzdEluZm8mIHRlc3RfaW5mbykgeworICAgIFNlbmRMbihzdGQ6OnN0cmluZygiZXZlbnQ9
VGVzdFN0YXJ0Jm5hbWU9IikgKyB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgfQorCisgIHZvaWQgT25U
ZXN0RW5kKGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKKyAgICBTZW5kTG4oImV2ZW50PVRl
c3RFbmQmcGFzc2VkPSIgKworICAgICAgICAgICBGb3JtYXRCb29sKCh0ZXN0X2luZm8ucmVzdWx0
KCkpLT5QYXNzZWQoKSkgKworICAgICAgICAgICAiJmVsYXBzZWRfdGltZT0iICsKKyAgICAgICAg
ICAgU3RyZWFtYWJsZVRvU3RyaW5nKCh0ZXN0X2luZm8ucmVzdWx0KCkpLT5lbGFwc2VkX3RpbWUo
KSkgKyAibXMiKTsKKyAgfQorCisgIHZvaWQgT25UZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFy
dFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgeworICAgIGNvbnN0IGNoYXIqIGZpbGVfbmFtZSA9
IHRlc3RfcGFydF9yZXN1bHQuZmlsZV9uYW1lKCk7CisgICAgaWYgKGZpbGVfbmFtZSA9PSBOVUxM
KQorICAgICAgZmlsZV9uYW1lID0gIiI7CisgICAgU2VuZExuKCJldmVudD1UZXN0UGFydFJlc3Vs
dCZmaWxlPSIgKyBVcmxFbmNvZGUoZmlsZV9uYW1lKSArCisgICAgICAgICAgICImbGluZT0iICsg
U3RyZWFtYWJsZVRvU3RyaW5nKHRlc3RfcGFydF9yZXN1bHQubGluZV9udW1iZXIoKSkgKworICAg
ICAgICAgICAiJm1lc3NhZ2U9IiArIFVybEVuY29kZSh0ZXN0X3BhcnRfcmVzdWx0Lm1lc3NhZ2Uo
KSkpOworICB9CisKKyBwcml2YXRlOgorICAvLyBTZW5kcyB0aGUgZ2l2ZW4gbWVzc2FnZSBhbmQg
YSBuZXdsaW5lIHRvIHRoZSBzb2NrZXQuCisgIHZvaWQgU2VuZExuKGNvbnN0IHN0cmluZyYgbWVz
c2FnZSkgeyBzb2NrZXRfd3JpdGVyXy0+U2VuZExuKG1lc3NhZ2UpOyB9CisKKyAgLy8gQ2FsbGVk
IGF0IHRoZSBzdGFydCBvZiBzdHJlYW1pbmcgdG8gbm90aWZ5IHRoZSByZWNlaXZlciB3aGF0Cisg
IC8vIHByb3RvY29sIHdlIGFyZSB1c2luZy4KKyAgdm9pZCBTdGFydCgpIHsgU2VuZExuKCJndGVz
dF9zdHJlYW1pbmdfcHJvdG9jb2xfdmVyc2lvbj0xLjAiKTsgfQorCisgIHN0cmluZyBGb3JtYXRC
b29sKGJvb2wgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID8gIjEiIDogIjAiOyB9CisKKyAgY29uc3Qg
c2NvcGVkX3B0cjxBYnN0cmFjdFNvY2tldFdyaXRlcj4gc29ja2V0X3dyaXRlcl87CisKKyAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTdHJlYW1pbmdMaXN0ZW5lcik7Cit9OyAgLy8g
Y2xhc3MgU3RyZWFtaW5nTGlzdGVuZXIKKworI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JF
U1VMVFNfCisKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3Rp
bmcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXBvcnQu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYwppbmRleCBiOTUw
NGY1NmFlNmY5M2UxMjZkMmI1NjhhN2Q5N2RiNTE3ZmI4M2U0Li5lNWJmM2RkMmJlNGJlMzM2MTc2
ZmViNWQxNGQ3MGQ5NTI2YjI4YzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zcmMvZ3Rlc3QtcG9ydC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rl
c3QtcG9ydC5jYwpAQCAtMjksMzYgKzI5LDUwIEBACiAvLwogLy8gQXV0aG9yOiB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9y
dC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKIAogI2luY2x1ZGUg
PGxpbWl0cy5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5j
bHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZnN0cmVhbT4KIAotI2lmIEdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCi0jaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gRm9yIFRlcm1pbmF0ZVByb2Nlc3Mo
KQotI2VsaWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1ZGUgPGlvLmg+Ci0jaW5jbHVkZSA8c3lz
L3N0YXQuaD4KKyNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyMg
aW5jbHVkZSA8aW8uaD4KKyMgaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyMgaW5jbHVkZSA8bWFwPiAg
Ly8gVXNlZCBpbiBUaHJlYWRMb2NhbC4KICNlbHNlCi0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGluY2x1ZGUgPHVuaXN0ZC5oPgorI2Vu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKICNpZiBHVEVTVF9PU19NQUMKLSNpbmNsdWRlIDxt
YWNoL21hY2hfaW5pdC5oPgotI2luY2x1ZGUgPG1hY2gvdGFzay5oPgotI2luY2x1ZGUgPG1hY2gv
dm1fbWFwLmg+CisjIGluY2x1ZGUgPG1hY2gvbWFjaF9pbml0Lmg+CisjIGluY2x1ZGUgPG1hY2gv
dGFzay5oPgorIyBpbmNsdWRlIDxtYWNoL3ZtX21hcC5oPgogI2VuZGlmICAvLyBHVEVTVF9PU19N
QUMKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
LW1lc3NhZ2UuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4KKyNp
ZiBHVEVTVF9PU19RTlgKKyMgaW5jbHVkZSA8ZGV2Y3RsLmg+CisjIGluY2x1ZGUgPGZjbnRsLmg+
CisjIGluY2x1ZGUgPHN5cy9wcm9jZnMuaD4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfUU5YCisKKyNp
ZiBHVEVTVF9PU19BSVgKKyMgaW5jbHVkZSA8cHJvY2luZm8uaD4KKyMgaW5jbHVkZSA8c3lzL3R5
cGVzLmg+CisjZW5kaWYgIC8vIEdURVNUX09TX0FJWAorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qt
c3BpLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgorI2luY2x1ZGUgImd0ZXN0
L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3Qtc3RyaW5nLmgiCiAKIC8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBp
cyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKIC8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21l
IGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdp
bGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1
c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgot
Ly8gaGlzIGNvZGUuCisvLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVy
cm9yLiAgVGhpcyB0cmljayBleGlzdHMgdG8KKy8vIHByZXZlbnQgdGhlIGFjY2lkZW50YWwgaW5j
bHVzaW9uIG9mIGd0ZXN0LWludGVybmFsLWlubC5oIGluIHRoZQorLy8gdXNlcidzIGNvZGUuCiAj
ZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCiAjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVy
bmFsLWlubC5oIgogI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwpAQCAtNzUsMTAgKzg5LDMx
IEBAIGNvbnN0IGludCBrU3RkT3V0RmlsZW5vID0gU1RET1VUX0ZJTEVOTzsKIGNvbnN0IGludCBr
U3RkRXJyRmlsZW5vID0gU1RERVJSX0ZJTEVOTzsKICNlbmRpZiAgLy8gX01TQ19WRVIKIAotI2lm
IEdURVNUX09TX01BQworI2lmIEdURVNUX09TX0xJTlVYCisKK25hbWVzcGFjZSB7Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK1QgUmVhZFByb2NGaWxlRmllbGQoY29uc3Qgc3RyaW5nJiBmaWxlbmFt
ZSwgaW50IGZpZWxkKSB7CisgIHN0ZDo6c3RyaW5nIGR1bW15OworICBzdGQ6Omlmc3RyZWFtIGZp
bGUoZmlsZW5hbWUuY19zdHIoKSk7CisgIHdoaWxlIChmaWVsZC0tID4gMCkgeworICAgIGZpbGUg
Pj4gZHVtbXk7CisgIH0KKyAgVCBvdXRwdXQgPSAwOworICBmaWxlID4+IG91dHB1dDsKKyAgcmV0
dXJuIG91dHB1dDsKK30KK30gIC8vIG5hbWVzcGFjZQorCisvLyBSZXR1cm5zIHRoZSBudW1iZXIg
b2YgYWN0aXZlIHRocmVhZHMsIG9yIDAgd2hlbiB0aGVyZSBpcyBhbiBlcnJvci4KK3NpemVfdCBH
ZXRUaHJlYWRDb3VudCgpIHsKKyAgY29uc3Qgc3RyaW5nIGZpbGVuYW1lID0KKyAgICAgIChNZXNz
YWdlKCkgPDwgIi9wcm9jLyIgPDwgZ2V0cGlkKCkgPDwgIi9zdGF0IikuR2V0U3RyaW5nKCk7Cisg
IHJldHVybiBSZWFkUHJvY0ZpbGVGaWVsZDxpbnQ+KGZpbGVuYW1lLCAxOSk7Cit9CisKKyNlbGlm
IEdURVNUX09TX01BQwogCi0vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBydW5uaW5n
IGluIHRoZSBwcm9jZXNzLCBvciAwIHRvIGluZGljYXRlIHRoYXQKLS8vIHdlIGNhbm5vdCBkZXRl
Y3QgaXQuCiBzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CiAgIGNvbnN0IHRhc2tfdCB0YXNrID0g
bWFjaF90YXNrX3NlbGYoKTsKICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCB0aHJlYWRfY291bnQ7
CkBAIC05Niw2ICsxMzEsMzkgQEAgc2l6ZV90IEdldFRocmVhZENvdW50KCkgewogICB9CiB9CiAK
KyNlbGlmIEdURVNUX09TX1FOWAorCisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBy
dW5uaW5nIGluIHRoZSBwcm9jZXNzLCBvciAwIHRvIGluZGljYXRlIHRoYXQKKy8vIHdlIGNhbm5v
dCBkZXRlY3QgaXQuCitzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CisgIGNvbnN0IGludCBmZCA9
IG9wZW4oIi9wcm9jL3NlbGYvYXMiLCBPX1JET05MWSk7CisgIGlmIChmZCA8IDApIHsKKyAgICBy
ZXR1cm4gMDsKKyAgfQorICBwcm9jZnNfaW5mbyBwcm9jZXNzX2luZm87CisgIGNvbnN0IGludCBz
dGF0dXMgPQorICAgICAgZGV2Y3RsKGZkLCBEQ01EX1BST0NfSU5GTywgJnByb2Nlc3NfaW5mbywg
c2l6ZW9mKHByb2Nlc3NfaW5mbyksIE5VTEwpOworICBjbG9zZShmZCk7CisgIGlmIChzdGF0dXMg
PT0gRU9LKSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4ocHJvY2Vzc19pbmZvLm51
bV90aHJlYWRzKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCisjZWxpZiBH
VEVTVF9PU19BSVgKKworc2l6ZV90IEdldFRocmVhZENvdW50KCkgeworICBzdHJ1Y3QgcHJvY2Vu
dHJ5NjQgZW50cnk7CisgIHBpZF90IHBpZCA9IGdldHBpZCgpOworICBpbnQgc3RhdHVzID0gZ2V0
cHJvY3M2NCgmZW50cnksIHNpemVvZihlbnRyeSksIE5VTEwsIDAsICZwaWQsIDEpOworICBpZiAo
c3RhdHVzID09IDEpIHsKKyAgICByZXR1cm4gZW50cnkucGlfdGhjb3VudDsKKyAgfSBlbHNlIHsK
KyAgICByZXR1cm4gMDsKKyAgfQorfQorCiAjZWxzZQogCiBzaXplX3QgR2V0VGhyZWFkQ291bnQo
KSB7CkBAIC0xMDQsNyArMTcyLDM5MCBAQCBzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CiAgIHJl
dHVybiAwOwogfQogCi0jZW5kaWYgIC8vIEdURVNUX09TX01BQworI2VuZGlmICAvLyBHVEVTVF9P
U19MSU5VWAorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRSAmJiBHVEVTVF9PU19XSU5ET1dTCisK
K3ZvaWQgU2xlZXBNaWxsaXNlY29uZHMoaW50IG4pIHsKKyAgOjpTbGVlcChuKTsKK30KKworQXV0
b0hhbmRsZTo6QXV0b0hhbmRsZSgpCisgICAgOiBoYW5kbGVfKElOVkFMSURfSEFORExFX1ZBTFVF
KSB7fQorCitBdXRvSGFuZGxlOjpBdXRvSGFuZGxlKEhhbmRsZSBoYW5kbGUpCisgICAgOiBoYW5k
bGVfKGhhbmRsZSkge30KKworQXV0b0hhbmRsZTo6fkF1dG9IYW5kbGUoKSB7CisgIFJlc2V0KCk7
Cit9CisKK0F1dG9IYW5kbGU6OkhhbmRsZSBBdXRvSGFuZGxlOjpHZXQoKSBjb25zdCB7CisgIHJl
dHVybiBoYW5kbGVfOworfQorCit2b2lkIEF1dG9IYW5kbGU6OlJlc2V0KCkgeworICBSZXNldChJ
TlZBTElEX0hBTkRMRV9WQUxVRSk7Cit9CisKK3ZvaWQgQXV0b0hhbmRsZTo6UmVzZXQoSEFORExF
IGhhbmRsZSkgeworICAvLyBSZXNldHRpbmcgd2l0aCB0aGUgc2FtZSBoYW5kbGUgd2UgYWxyZWFk
eSBvd24gaXMgaW52YWxpZC4KKyAgaWYgKGhhbmRsZV8gIT0gaGFuZGxlKSB7CisgICAgaWYgKElz
Q2xvc2VhYmxlKCkpIHsKKyAgICAgIDo6Q2xvc2VIYW5kbGUoaGFuZGxlXyk7CisgICAgfQorICAg
IGhhbmRsZV8gPSBoYW5kbGU7CisgIH0gZWxzZSB7CisgICAgR1RFU1RfQ0hFQ0tfKCFJc0Nsb3Nl
YWJsZSgpKQorICAgICAgICA8PCAiUmVzZXR0aW5nIGEgdmFsaWQgaGFuZGxlIHRvIGl0c2VsZiBp
cyBsaWtlbHkgYSBwcm9ncmFtbWVyIGVycm9yICIKKyAgICAgICAgICAgICJhbmQgdGh1cyBub3Qg
YWxsb3dlZC4iOworICB9Cit9CisKK2Jvb2wgQXV0b0hhbmRsZTo6SXNDbG9zZWFibGUoKSBjb25z
dCB7CisgIC8vIERpZmZlcmVudCBXaW5kb3dzIEFQSXMgbWF5IHVzZSBlaXRoZXIgb2YgdGhlc2Ug
dmFsdWVzIHRvIHJlcHJlc2VudCBhbgorICAvLyBpbnZhbGlkIGhhbmRsZS4KKyAgcmV0dXJuIGhh
bmRsZV8gIT0gTlVMTCAmJiBoYW5kbGVfICE9IElOVkFMSURfSEFORExFX1ZBTFVFOworfQorCitO
b3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbigpCisgICAgOiBldmVudF8oOjpDcmVhdGVFdmVudChO
VUxMLCAgIC8vIERlZmF1bHQgc2VjdXJpdHkgYXR0cmlidXRlcy4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRSVUUsICAgLy8gRG8gbm90IHJlc2V0IGF1dG9tYXRpY2FsbHkuCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGQUxTRSwgIC8vIEluaXRpYWxseSB1bnNldC4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5VTEwpKSB7ICAvLyBBbm9ueW1vdXMgZXZlbnQuCisgIEdURVNU
X0NIRUNLXyhldmVudF8uR2V0KCkgIT0gTlVMTCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpO
b3RpZnkoKSB7CisgIEdURVNUX0NIRUNLXyg6OlNldEV2ZW50KGV2ZW50Xy5HZXQoKSkgIT0gRkFM
U0UpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6V2FpdEZvck5vdGlmaWNhdGlvbigpIHsKKyAg
R1RFU1RfQ0hFQ0tfKAorICAgICAgOjpXYWl0Rm9yU2luZ2xlT2JqZWN0KGV2ZW50Xy5HZXQoKSwg
SU5GSU5JVEUpID09IFdBSVRfT0JKRUNUXzApOworfQorCitNdXRleDo6TXV0ZXgoKQorICAgIDog
b3duZXJfdGhyZWFkX2lkXygwKSwKKyAgICAgIHR5cGVfKGtEeW5hbWljKSwKKyAgICAgIGNyaXRp
Y2FsX3NlY3Rpb25faW5pdF9waGFzZV8oMCksCisgICAgICBjcml0aWNhbF9zZWN0aW9uXyhuZXcg
Q1JJVElDQUxfU0VDVElPTikgeworICA6OkluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oY3JpdGlj
YWxfc2VjdGlvbl8pOworfQorCitNdXRleDo6fk11dGV4KCkgeworICAvLyBTdGF0aWMgbXV0ZXhl
cyBhcmUgbGVha2VkIGludGVudGlvbmFsbHkuIEl0IGlzIG5vdCB0aHJlYWQtc2FmZSB0byB0cnkK
KyAgLy8gdG8gY2xlYW4gdGhlbSB1cC4KKyAgLy8gVE9ETyh5dWthd2EpOiBTd2l0Y2ggdG8gU2xp
bSBSZWFkZXIvV3JpdGVyIChTUlcpIExvY2tzLCB3aGljaCByZXF1aXJlcworICAvLyBub3RoaW5n
IHRvIGNsZWFuIGl0IHVwIGJ1dCBpcyBhdmFpbGFibGUgb25seSBvbiBWaXN0YSBhbmQgbGF0ZXIu
CisgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rl
c2t0b3AvYWE5MDQ5MzcuYXNweAorICBpZiAodHlwZV8gPT0ga0R5bmFtaWMpIHsKKyAgICA6OkRl
bGV0ZUNyaXRpY2FsU2VjdGlvbihjcml0aWNhbF9zZWN0aW9uXyk7CisgICAgZGVsZXRlIGNyaXRp
Y2FsX3NlY3Rpb25fOworICAgIGNyaXRpY2FsX3NlY3Rpb25fID0gTlVMTDsKKyAgfQorfQorCit2
b2lkIE11dGV4OjpMb2NrKCkgeworICBUaHJlYWRTYWZlTGF6eUluaXQoKTsKKyAgOjpFbnRlckNy
aXRpY2FsU2VjdGlvbihjcml0aWNhbF9zZWN0aW9uXyk7CisgIG93bmVyX3RocmVhZF9pZF8gPSA6
OkdldEN1cnJlbnRUaHJlYWRJZCgpOworfQorCit2b2lkIE11dGV4OjpVbmxvY2soKSB7CisgIFRo
cmVhZFNhZmVMYXp5SW5pdCgpOworICAvLyBXZSBkb24ndCBwcm90ZWN0IHdyaXRpbmcgdG8gb3du
ZXJfdGhyZWFkX2lkXyBoZXJlLCBhcyBpdCdzIHRoZQorICAvLyBjYWxsZXIncyByZXNwb25zaWJp
bGl0eSB0byBlbnN1cmUgdGhhdCB0aGUgY3VycmVudCB0aHJlYWQgaG9sZHMgdGhlCisgIC8vIG11
dGV4IHdoZW4gdGhpcyBpcyBjYWxsZWQuCisgIG93bmVyX3RocmVhZF9pZF8gPSAwOworICA6Okxl
YXZlQ3JpdGljYWxTZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb25fKTsKK30KKworLy8gRG9lcyBub3Ro
aW5nIGlmIHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUgbXV0ZXguIE90aGVyd2lzZSwgY3Jh
c2hlcworLy8gd2l0aCBoaWdoIHByb2JhYmlsaXR5Lgordm9pZCBNdXRleDo6QXNzZXJ0SGVsZCgp
IHsKKyAgVGhyZWFkU2FmZUxhenlJbml0KCk7CisgIEdURVNUX0NIRUNLXyhvd25lcl90aHJlYWRf
aWRfID09IDo6R2V0Q3VycmVudFRocmVhZElkKCkpCisgICAgICA8PCAiVGhlIGN1cnJlbnQgdGhy
ZWFkIGlzIG5vdCBob2xkaW5nIHRoZSBtdXRleCBAIiA8PCB0aGlzOworfQorCisvLyBJbml0aWFs
aXplcyBvd25lcl90aHJlYWRfaWRfIGFuZCBjcml0aWNhbF9zZWN0aW9uXyBpbiBzdGF0aWMgbXV0
ZXhlcy4KK3ZvaWQgTXV0ZXg6OlRocmVhZFNhZmVMYXp5SW5pdCgpIHsKKyAgLy8gRHluYW1pYyBt
dXRleGVzIGFyZSBpbml0aWFsaXplZCBpbiB0aGUgY29uc3RydWN0b3IuCisgIGlmICh0eXBlXyA9
PSBrU3RhdGljKSB7CisgICAgc3dpdGNoICgKKyAgICAgICAgOjpJbnRlcmxvY2tlZENvbXBhcmVF
eGNoYW5nZSgmY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXywgMUwsIDBMKSkgeworICAgICAg
Y2FzZSAwOgorICAgICAgICAvLyBJZiBjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhhc2VfIHdhcyAw
IGJlZm9yZSB0aGUgZXhjaGFuZ2UsIHdlCisgICAgICAgIC8vIGFyZSB0aGUgZmlyc3QgdG8gdGVz
dCBpdCBhbmQgbmVlZCB0byBwZXJmb3JtIHRoZSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgb3du
ZXJfdGhyZWFkX2lkXyA9IDA7CisgICAgICAgIGNyaXRpY2FsX3NlY3Rpb25fID0gbmV3IENSSVRJ
Q0FMX1NFQ1RJT047CisgICAgICAgIDo6SW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbihjcml0aWNh
bF9zZWN0aW9uXyk7CisgICAgICAgIC8vIFVwZGF0ZXMgdGhlIGNyaXRpY2FsX3NlY3Rpb25faW5p
dF9waGFzZV8gdG8gMiB0byBzaWduYWwKKyAgICAgICAgLy8gaW5pdGlhbGl6YXRpb24gY29tcGxl
dGUuCisgICAgICAgIEdURVNUX0NIRUNLXyg6OkludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAmY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXywg
MkwsIDFMKSA9PQorICAgICAgICAgICAgICAgICAgICAgIDFMKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIDE6CisgICAgICAgIC8vIFNvbWVib2R5IGVsc2UgaXMgYWxyZWFkeSBpbml0aWFs
aXppbmcgdGhlIG11dGV4OyBzcGluIHVudGlsIHRoZXkKKyAgICAgICAgLy8gYXJlIGRvbmUuCisg
ICAgICAgIHdoaWxlICg6OkludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKCZjcml0aWNhbF9zZWN0
aW9uX2luaXRfcGhhc2VfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMkwp
ICE9IDJMKSB7CisgICAgICAgICAgLy8gUG9zc2libHkgeWllbGRzIHRoZSByZXN0IG9mIHRoZSB0
aHJlYWQncyB0aW1lIHNsaWNlIHRvIG90aGVyCisgICAgICAgICAgLy8gdGhyZWFkcy4KKyAgICAg
ICAgICA6OlNsZWVwKDApOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNl
IDI6CisgICAgICAgIGJyZWFrOyAgLy8gVGhlIG11dGV4IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQg
YW5kIHJlYWR5IGZvciB1c2UuCisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIEdURVNUX0NIRUNL
XyhmYWxzZSkKKyAgICAgICAgICAgIDw8ICJVbmV4cGVjdGVkIHZhbHVlIG9mIGNyaXRpY2FsX3Nl
Y3Rpb25faW5pdF9waGFzZV8gIgorICAgICAgICAgICAgPDwgIndoaWxlIGluaXRpYWxpemluZyBh
IHN0YXRpYyBtdXRleC4iOworICAgIH0KKyAgfQorfQorCituYW1lc3BhY2UgeworCitjbGFzcyBU
aHJlYWRXaXRoUGFyYW1TdXBwb3J0IDogcHVibGljIFRocmVhZFdpdGhQYXJhbUJhc2UgeworIHB1
YmxpYzoKKyAgc3RhdGljIEhBTkRMRSBDcmVhdGVUaHJlYWQoUnVubmFibGUqIHJ1bm5hYmxlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24qIHRocmVhZF9jYW5fc3Rh
cnQpIHsKKyAgICBUaHJlYWRNYWluUGFyYW0qIHBhcmFtID0gbmV3IFRocmVhZE1haW5QYXJhbShy
dW5uYWJsZSwgdGhyZWFkX2Nhbl9zdGFydCk7CisgICAgRFdPUkQgdGhyZWFkX2lkOworICAgIC8v
IFRPRE8oeXVrYXdhKTogQ29uc2lkZXIgdG8gdXNlIF9iZWdpbnRocmVhZGV4IGluc3RlYWQuCisg
ICAgSEFORExFIHRocmVhZF9oYW5kbGUgPSA6OkNyZWF0ZVRocmVhZCgKKyAgICAgICAgTlVMTCwg
ICAgLy8gRGVmYXVsdCBzZWN1cml0eS4KKyAgICAgICAgMCwgICAgICAgLy8gRGVmYXVsdCBzdGFj
ayBzaXplLgorICAgICAgICAmVGhyZWFkV2l0aFBhcmFtU3VwcG9ydDo6VGhyZWFkTWFpbiwKKyAg
ICAgICAgcGFyYW0sICAgLy8gUGFyYW1ldGVyIHRvIFRocmVhZE1haW5TdGF0aWMKKyAgICAgICAg
MHgwLCAgICAgLy8gRGVmYXVsdCBjcmVhdGlvbiBmbGFncy4KKyAgICAgICAgJnRocmVhZF9pZCk7
ICAvLyBOZWVkIGEgdmFsaWQgcG9pbnRlciBmb3IgdGhlIGNhbGwgdG8gd29yayB1bmRlciBXaW45
OC4KKyAgICBHVEVTVF9DSEVDS18odGhyZWFkX2hhbmRsZSAhPSBOVUxMKSA8PCAiQ3JlYXRlVGhy
ZWFkIGZhaWxlZCB3aXRoIGVycm9yICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCA6OkdldExhc3RFcnJvcigpIDw8ICIuIjsKKyAgICBpZiAodGhyZWFkX2hhbmRs
ZSA9PSBOVUxMKSB7CisgICAgICBkZWxldGUgcGFyYW07CisgICAgfQorICAgIHJldHVybiB0aHJl
YWRfaGFuZGxlOworICB9CisKKyBwcml2YXRlOgorICBzdHJ1Y3QgVGhyZWFkTWFpblBhcmFtIHsK
KyAgICBUaHJlYWRNYWluUGFyYW0oUnVubmFibGUqIHJ1bm5hYmxlLCBOb3RpZmljYXRpb24qIHRo
cmVhZF9jYW5fc3RhcnQpCisgICAgICAgIDogcnVubmFibGVfKHJ1bm5hYmxlKSwKKyAgICAgICAg
ICB0aHJlYWRfY2FuX3N0YXJ0Xyh0aHJlYWRfY2FuX3N0YXJ0KSB7CisgICAgfQorICAgIHNjb3Bl
ZF9wdHI8UnVubmFibGU+IHJ1bm5hYmxlXzsKKyAgICAvLyBEb2VzIG5vdCBvd24uCisgICAgTm90
aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0XzsKKyAgfTsKKworICBzdGF0aWMgRFdPUkQgV0lO
QVBJIFRocmVhZE1haW4odm9pZCogcHRyKSB7CisgICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcC4K
KyAgICBzY29wZWRfcHRyPFRocmVhZE1haW5QYXJhbT4gcGFyYW0oc3RhdGljX2Nhc3Q8VGhyZWFk
TWFpblBhcmFtKj4ocHRyKSk7CisgICAgaWYgKHBhcmFtLT50aHJlYWRfY2FuX3N0YXJ0XyAhPSBO
VUxMKQorICAgICAgcGFyYW0tPnRocmVhZF9jYW5fc3RhcnRfLT5XYWl0Rm9yTm90aWZpY2F0aW9u
KCk7CisgICAgcGFyYW0tPnJ1bm5hYmxlXy0+UnVuKCk7CisgICAgcmV0dXJuIDA7CisgIH0KKwor
ICAvLyBQcm9oaWJpdCBpbnN0YW50aWF0aW9uLgorICBUaHJlYWRXaXRoUGFyYW1TdXBwb3J0KCk7
CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJlYWRXaXRoUGFyYW1TdXBw
b3J0KTsKK307CisKK30gIC8vIG5hbWVzcGFjZQorCitUaHJlYWRXaXRoUGFyYW1CYXNlOjpUaHJl
YWRXaXRoUGFyYW1CYXNlKFJ1bm5hYmxlICpydW5uYWJsZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KQorICAg
ICAgOiB0aHJlYWRfKFRocmVhZFdpdGhQYXJhbVN1cHBvcnQ6OkNyZWF0ZVRocmVhZChydW5uYWJs
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGhyZWFkX2Nhbl9zdGFydCkpIHsKK30KKworVGhyZWFkV2l0aFBhcmFtQmFzZTo6flRocmVhZFdp
dGhQYXJhbUJhc2UoKSB7CisgIEpvaW4oKTsKK30KKwordm9pZCBUaHJlYWRXaXRoUGFyYW1CYXNl
OjpKb2luKCkgeworICBHVEVTVF9DSEVDS18oOjpXYWl0Rm9yU2luZ2xlT2JqZWN0KHRocmVhZF8u
R2V0KCksIElORklOSVRFKSA9PSBXQUlUX09CSkVDVF8wKQorICAgICAgPDwgIkZhaWxlZCB0byBq
b2luIHRoZSB0aHJlYWQgd2l0aCBlcnJvciAiIDw8IDo6R2V0TGFzdEVycm9yKCkgPDwgIi4iOwor
fQorCisvLyBNYXBzIGEgdGhyZWFkIHRvIGEgc2V0IG9mIFRocmVhZElkVG9UaHJlYWRMb2NhbHMg
dGhhdCBoYXZlIHZhbHVlcworLy8gaW5zdGFudGlhdGVkIG9uIHRoYXQgdGhyZWFkIGFuZCBub3Rp
ZmllcyB0aGVtIHdoZW4gdGhlIHRocmVhZCBleGl0cy4gIEEKKy8vIFRocmVhZExvY2FsIGluc3Rh
bmNlIGlzIGV4cGVjdGVkIHRvIHBlcnNpc3QgdW50aWwgYWxsIHRocmVhZHMgaXQgaGFzCisvLyB2
YWx1ZXMgb24gaGF2ZSB0ZXJtaW5hdGVkLgorY2xhc3MgVGhyZWFkTG9jYWxSZWdpc3RyeUltcGwg
eworIHB1YmxpYzoKKyAgLy8gUmVnaXN0ZXJzIHRocmVhZF9sb2NhbF9pbnN0YW5jZSBhcyBoYXZp
bmcgdmFsdWUgb24gdGhlIGN1cnJlbnQgdGhyZWFkLgorICAvLyBSZXR1cm5zIGEgdmFsdWUgdGhh
dCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSB0aGUgdGhyZWFkIGZyb20gb3RoZXIgdGhyZWFkcy4K
KyAgc3RhdGljIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlKiBHZXRWYWx1ZU9uQ3VycmVudFRo
cmVhZCgKKyAgICAgIGNvbnN0IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2FsX2luc3RhbmNl
KSB7CisgICAgRFdPUkQgY3VycmVudF90aHJlYWQgPSA6OkdldEN1cnJlbnRUaHJlYWRJZCgpOwor
ICAgIE11dGV4TG9jayBsb2NrKCZtdXRleF8pOworICAgIFRocmVhZElkVG9UaHJlYWRMb2NhbHMq
IGNvbnN0IHRocmVhZF90b190aHJlYWRfbG9jYWxzID0KKyAgICAgICAgR2V0VGhyZWFkTG9jYWxz
TWFwTG9ja2VkKCk7CisgICAgVGhyZWFkSWRUb1RocmVhZExvY2Fsczo6aXRlcmF0b3IgdGhyZWFk
X2xvY2FsX3BvcyA9CisgICAgICAgIHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5maW5kKGN1cnJl
bnRfdGhyZWFkKTsKKyAgICBpZiAodGhyZWFkX2xvY2FsX3BvcyA9PSB0aHJlYWRfdG9fdGhyZWFk
X2xvY2Fscy0+ZW5kKCkpIHsKKyAgICAgIHRocmVhZF9sb2NhbF9wb3MgPSB0aHJlYWRfdG9fdGhy
ZWFkX2xvY2Fscy0+aW5zZXJ0KAorICAgICAgICAgIHN0ZDo6bWFrZV9wYWlyKGN1cnJlbnRfdGhy
ZWFkLCBUaHJlYWRMb2NhbFZhbHVlcygpKSkuZmlyc3Q7CisgICAgICBTdGFydFdhdGNoZXJUaHJl
YWRGb3IoY3VycmVudF90aHJlYWQpOworICAgIH0KKyAgICBUaHJlYWRMb2NhbFZhbHVlcyYgdGhy
ZWFkX2xvY2FsX3ZhbHVlcyA9IHRocmVhZF9sb2NhbF9wb3MtPnNlY29uZDsKKyAgICBUaHJlYWRM
b2NhbFZhbHVlczo6aXRlcmF0b3IgdmFsdWVfcG9zID0KKyAgICAgICAgdGhyZWFkX2xvY2FsX3Zh
bHVlcy5maW5kKHRocmVhZF9sb2NhbF9pbnN0YW5jZSk7CisgICAgaWYgKHZhbHVlX3BvcyA9PSB0
aHJlYWRfbG9jYWxfdmFsdWVzLmVuZCgpKSB7CisgICAgICB2YWx1ZV9wb3MgPQorICAgICAgICAg
IHRocmVhZF9sb2NhbF92YWx1ZXMKKyAgICAgICAgICAgICAgLmluc2VydChzdGQ6Om1ha2VfcGFp
cigKKyAgICAgICAgICAgICAgICAgIHRocmVhZF9sb2NhbF9pbnN0YW5jZSwKKyAgICAgICAgICAg
ICAgICAgIGxpbmtlZF9wdHI8VGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2U+KAorICAgICAgICAg
ICAgICAgICAgICAgIHRocmVhZF9sb2NhbF9pbnN0YW5jZS0+TmV3VmFsdWVGb3JDdXJyZW50VGhy
ZWFkKCkpKSkKKyAgICAgICAgICAgICAgLmZpcnN0OworICAgIH0KKyAgICByZXR1cm4gdmFsdWVf
cG9zLT5zZWNvbmQuZ2V0KCk7CisgIH0KKworICBzdGF0aWMgdm9pZCBPblRocmVhZExvY2FsRGVz
dHJveWVkKAorICAgICAgY29uc3QgVGhyZWFkTG9jYWxCYXNlKiB0aHJlYWRfbG9jYWxfaW5zdGFu
Y2UpIHsKKyAgICBzdGQ6OnZlY3RvcjxsaW5rZWRfcHRyPFRocmVhZExvY2FsVmFsdWVIb2xkZXJC
YXNlPiA+IHZhbHVlX2hvbGRlcnM7CisgICAgLy8gQ2xlYW4gdXAgdGhlIFRocmVhZExvY2FsVmFs
dWVzIGRhdGEgc3RydWN0dXJlIHdoaWxlIGhvbGRpbmcgdGhlIGxvY2ssIGJ1dAorICAgIC8vIGRl
ZmVyIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2VzLgor
ICAgIHsKKyAgICAgIE11dGV4TG9jayBsb2NrKCZtdXRleF8pOworICAgICAgVGhyZWFkSWRUb1Ro
cmVhZExvY2FscyogY29uc3QgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMgPQorICAgICAgICAgIEdl
dFRocmVhZExvY2Fsc01hcExvY2tlZCgpOworICAgICAgZm9yIChUaHJlYWRJZFRvVGhyZWFkTG9j
YWxzOjppdGVyYXRvciBpdCA9CisgICAgICAgICAgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmJl
Z2luKCk7CisgICAgICAgICAgaXQgIT0gdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmVuZCgpOwor
ICAgICAgICAgICsraXQpIHsKKyAgICAgICAgVGhyZWFkTG9jYWxWYWx1ZXMmIHRocmVhZF9sb2Nh
bF92YWx1ZXMgPSBpdC0+c2Vjb25kOworICAgICAgICBUaHJlYWRMb2NhbFZhbHVlczo6aXRlcmF0
b3IgdmFsdWVfcG9zID0KKyAgICAgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMuZmluZCh0aHJl
YWRfbG9jYWxfaW5zdGFuY2UpOworICAgICAgICBpZiAodmFsdWVfcG9zICE9IHRocmVhZF9sb2Nh
bF92YWx1ZXMuZW5kKCkpIHsKKyAgICAgICAgICB2YWx1ZV9ob2xkZXJzLnB1c2hfYmFjayh2YWx1
ZV9wb3MtPnNlY29uZCk7CisgICAgICAgICAgdGhyZWFkX2xvY2FsX3ZhbHVlcy5lcmFzZSh2YWx1
ZV9wb3MpOworICAgICAgICAgIC8vIFRoaXMgJ2lmJyBjYW4gb25seSBiZSBzdWNjZXNzZnVsIGF0
IG1vc3Qgb25jZSwgc28gdGhlb3JldGljYWxseSB3ZQorICAgICAgICAgIC8vIGNvdWxkIGJyZWFr
IG91dCBvZiB0aGUgbG9vcCBoZXJlLCBidXQgd2UgZG9uJ3QgYm90aGVyIGRvaW5nIHNvLgorICAg
ICAgICB9CisgICAgICB9CisgICAgfQorICAgIC8vIE91dHNpZGUgdGhlIGxvY2ssIGxldCB0aGUg
ZGVzdHJ1Y3RvciBmb3IgJ3ZhbHVlX2hvbGRlcnMnIGRlYWxsb2NhdGUgdGhlCisgICAgLy8gVGhy
ZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2VzLgorICB9CisKKyAgc3RhdGljIHZvaWQgT25UaHJlYWRF
eGl0KERXT1JEIHRocmVhZF9pZCkgeworICAgIEdURVNUX0NIRUNLXyh0aHJlYWRfaWQgIT0gMCkg
PDwgOjpHZXRMYXN0RXJyb3IoKTsKKyAgICBzdGQ6OnZlY3RvcjxsaW5rZWRfcHRyPFRocmVhZExv
Y2FsVmFsdWVIb2xkZXJCYXNlPiA+IHZhbHVlX2hvbGRlcnM7CisgICAgLy8gQ2xlYW4gdXAgdGhl
IFRocmVhZElkVG9UaHJlYWRMb2NhbHMgZGF0YSBzdHJ1Y3R1cmUgd2hpbGUgaG9sZGluZyB0aGUK
KyAgICAvLyBsb2NrLCBidXQgZGVmZXIgdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBUaHJlYWRMb2Nh
bFZhbHVlSG9sZGVyQmFzZXMuCisgICAgeworICAgICAgTXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7
CisgICAgICBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzKiBjb25zdCB0aHJlYWRfdG9fdGhyZWFkX2xv
Y2FscyA9CisgICAgICAgICAgR2V0VGhyZWFkTG9jYWxzTWFwTG9ja2VkKCk7CisgICAgICBUaHJl
YWRJZFRvVGhyZWFkTG9jYWxzOjppdGVyYXRvciB0aHJlYWRfbG9jYWxfcG9zID0KKyAgICAgICAg
ICB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+ZmluZCh0aHJlYWRfaWQpOworICAgICAgaWYgKHRo
cmVhZF9sb2NhbF9wb3MgIT0gdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmVuZCgpKSB7CisgICAg
ICAgIFRocmVhZExvY2FsVmFsdWVzJiB0aHJlYWRfbG9jYWxfdmFsdWVzID0gdGhyZWFkX2xvY2Fs
X3Bvcy0+c2Vjb25kOworICAgICAgICBmb3IgKFRocmVhZExvY2FsVmFsdWVzOjppdGVyYXRvciB2
YWx1ZV9wb3MgPQorICAgICAgICAgICAgdGhyZWFkX2xvY2FsX3ZhbHVlcy5iZWdpbigpOworICAg
ICAgICAgICAgdmFsdWVfcG9zICE9IHRocmVhZF9sb2NhbF92YWx1ZXMuZW5kKCk7CisgICAgICAg
ICAgICArK3ZhbHVlX3BvcykgeworICAgICAgICAgIHZhbHVlX2hvbGRlcnMucHVzaF9iYWNrKHZh
bHVlX3Bvcy0+c2Vjb25kKTsKKyAgICAgICAgfQorICAgICAgICB0aHJlYWRfdG9fdGhyZWFkX2xv
Y2Fscy0+ZXJhc2UodGhyZWFkX2xvY2FsX3Bvcyk7CisgICAgICB9CisgICAgfQorICAgIC8vIE91
dHNpZGUgdGhlIGxvY2ssIGxldCB0aGUgZGVzdHJ1Y3RvciBmb3IgJ3ZhbHVlX2hvbGRlcnMnIGRl
YWxsb2NhdGUgdGhlCisgICAgLy8gVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2VzLgorICB9CisK
KyBwcml2YXRlOgorICAvLyBJbiBhIHBhcnRpY3VsYXIgdGhyZWFkLCBtYXBzIGEgVGhyZWFkTG9j
YWwgb2JqZWN0IHRvIGl0cyB2YWx1ZS4KKyAgdHlwZWRlZiBzdGQ6Om1hcDxjb25zdCBUaHJlYWRM
b2NhbEJhc2UqLAorICAgICAgICAgICAgICAgICAgIGxpbmtlZF9wdHI8VGhyZWFkTG9jYWxWYWx1
ZUhvbGRlckJhc2U+ID4gVGhyZWFkTG9jYWxWYWx1ZXM7CisgIC8vIFN0b3JlcyBhbGwgVGhyZWFk
SWRUb1RocmVhZExvY2FscyBoYXZpbmcgdmFsdWVzIGluIGEgdGhyZWFkLCBpbmRleGVkIGJ5Cisg
IC8vIHRocmVhZCdzIElELgorICB0eXBlZGVmIHN0ZDo6bWFwPERXT1JELCBUaHJlYWRMb2NhbFZh
bHVlcz4gVGhyZWFkSWRUb1RocmVhZExvY2FsczsKKworICAvLyBIb2xkcyB0aGUgdGhyZWFkIGlk
IGFuZCB0aHJlYWQgaGFuZGxlIHRoYXQgd2UgcGFzcyBmcm9tCisgIC8vIFN0YXJ0V2F0Y2hlclRo
cmVhZEZvciB0byBXYXRjaGVyVGhyZWFkRnVuYy4KKyAgdHlwZWRlZiBzdGQ6OnBhaXI8RFdPUkQs
IEhBTkRMRT4gVGhyZWFkSWRBbmRIYW5kbGU7CisKKyAgc3RhdGljIHZvaWQgU3RhcnRXYXRjaGVy
VGhyZWFkRm9yKERXT1JEIHRocmVhZF9pZCkgeworICAgIC8vIFRoZSByZXR1cm5lZCBoYW5kbGUg
d2lsbCBiZSBrZXB0IGluIHRocmVhZF9tYXAgYW5kIGNsb3NlZCBieQorICAgIC8vIHdhdGNoZXJf
dGhyZWFkIGluIFdhdGNoZXJUaHJlYWRGdW5jLgorICAgIEhBTkRMRSB0aHJlYWQgPSA6Ok9wZW5U
aHJlYWQoU1lOQ0hST05JWkUgfCBUSFJFQURfUVVFUllfSU5GT1JNQVRJT04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRocmVhZF9pZCk7CisgICAgR1RFU1RfQ0hFQ0tfKHRocmVhZCAhPSBOVUxMKTsKKyAg
ICAvLyBXZSBuZWVkIHRvIHRvIHBhc3MgYSB2YWxpZCB0aHJlYWQgSUQgcG9pbnRlciBpbnRvIENy
ZWF0ZVRocmVhZCBmb3IgaXQKKyAgICAvLyB0byB3b3JrIGNvcnJlY3RseSB1bmRlciBXaW45OC4K
KyAgICBEV09SRCB3YXRjaGVyX3RocmVhZF9pZDsKKyAgICBIQU5ETEUgd2F0Y2hlcl90aHJlYWQg
PSA6OkNyZWF0ZVRocmVhZCgKKyAgICAgICAgTlVMTCwgICAvLyBEZWZhdWx0IHNlY3VyaXR5Lgor
ICAgICAgICAwLCAgICAgIC8vIERlZmF1bHQgc3RhY2sgc2l6ZQorICAgICAgICAmVGhyZWFkTG9j
YWxSZWdpc3RyeUltcGw6OldhdGNoZXJUaHJlYWRGdW5jLAorICAgICAgICByZWludGVycHJldF9j
YXN0PExQVk9JRD4obmV3IFRocmVhZElkQW5kSGFuZGxlKHRocmVhZF9pZCwgdGhyZWFkKSksCisg
ICAgICAgIENSRUFURV9TVVNQRU5ERUQsCisgICAgICAgICZ3YXRjaGVyX3RocmVhZF9pZCk7Cisg
ICAgR1RFU1RfQ0hFQ0tfKHdhdGNoZXJfdGhyZWFkICE9IE5VTEwpOworICAgIC8vIEdpdmUgdGhl
IHdhdGNoZXIgdGhyZWFkIHRoZSBzYW1lIHByaW9yaXR5IGFzIG91cnMgdG8gYXZvaWQgYmVpbmcK
KyAgICAvLyBibG9ja2VkIGJ5IGl0LgorICAgIDo6U2V0VGhyZWFkUHJpb3JpdHkod2F0Y2hlcl90
aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICA6OkdldFRocmVhZFByaW9yaXR5KDo6R2V0
Q3VycmVudFRocmVhZCgpKSk7CisgICAgOjpSZXN1bWVUaHJlYWQod2F0Y2hlcl90aHJlYWQpOwor
ICAgIDo6Q2xvc2VIYW5kbGUod2F0Y2hlcl90aHJlYWQpOworICB9CisKKyAgLy8gTW9uaXRvcnMg
ZXhpdCBmcm9tIGEgZ2l2ZW4gdGhyZWFkIGFuZCBub3RpZmllcyB0aG9zZQorICAvLyBUaHJlYWRJ
ZFRvVGhyZWFkTG9jYWxzIGFib3V0IHRocmVhZCB0ZXJtaW5hdGlvbi4KKyAgc3RhdGljIERXT1JE
IFdJTkFQSSBXYXRjaGVyVGhyZWFkRnVuYyhMUFZPSUQgcGFyYW0pIHsKKyAgICBjb25zdCBUaHJl
YWRJZEFuZEhhbmRsZSogdGFoID0KKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUaHJl
YWRJZEFuZEhhbmRsZSo+KHBhcmFtKTsKKyAgICBHVEVTVF9DSEVDS18oCisgICAgICAgIDo6V2Fp
dEZvclNpbmdsZU9iamVjdCh0YWgtPnNlY29uZCwgSU5GSU5JVEUpID09IFdBSVRfT0JKRUNUXzAp
OworICAgIE9uVGhyZWFkRXhpdCh0YWgtPmZpcnN0KTsKKyAgICA6OkNsb3NlSGFuZGxlKHRhaC0+
c2Vjb25kKTsKKyAgICBkZWxldGUgdGFoOworICAgIHJldHVybiAwOworICB9CisKKyAgLy8gUmV0
dXJucyBtYXAgb2YgdGhyZWFkIGxvY2FsIGluc3RhbmNlcy4KKyAgc3RhdGljIFRocmVhZElkVG9U
aHJlYWRMb2NhbHMqIEdldFRocmVhZExvY2Fsc01hcExvY2tlZCgpIHsKKyAgICBtdXRleF8uQXNz
ZXJ0SGVsZCgpOworICAgIHN0YXRpYyBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzKiBtYXAgPSBuZXcg
VGhyZWFkSWRUb1RocmVhZExvY2FsczsKKyAgICByZXR1cm4gbWFwOworICB9CisKKyAgLy8gUHJv
dGVjdHMgYWNjZXNzIHRvIEdldFRocmVhZExvY2Fsc01hcExvY2tlZCgpIGFuZCBpdHMgcmV0dXJu
IHZhbHVlLgorICBzdGF0aWMgTXV0ZXggbXV0ZXhfOworICAvLyBQcm90ZWN0cyBhY2Nlc3MgdG8g
R2V0VGhyZWFkTWFwTG9ja2VkKCkgYW5kIGl0cyByZXR1cm4gdmFsdWUuCisgIHN0YXRpYyBNdXRl
eCB0aHJlYWRfbWFwX211dGV4XzsKK307CisKK011dGV4IFRocmVhZExvY2FsUmVnaXN0cnlJbXBs
OjptdXRleF8oTXV0ZXg6OmtTdGF0aWNNdXRleCk7CitNdXRleCBUaHJlYWRMb2NhbFJlZ2lzdHJ5
SW1wbDo6dGhyZWFkX21hcF9tdXRleF8oTXV0ZXg6OmtTdGF0aWNNdXRleCk7CisKK1RocmVhZExv
Y2FsVmFsdWVIb2xkZXJCYXNlKiBUaHJlYWRMb2NhbFJlZ2lzdHJ5OjpHZXRWYWx1ZU9uQ3VycmVu
dFRocmVhZCgKKyAgICAgIGNvbnN0IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2FsX2luc3Rh
bmNlKSB7CisgIHJldHVybiBUaHJlYWRMb2NhbFJlZ2lzdHJ5SW1wbDo6R2V0VmFsdWVPbkN1cnJl
bnRUaHJlYWQoCisgICAgICB0aHJlYWRfbG9jYWxfaW5zdGFuY2UpOworfQorCit2b2lkIFRocmVh
ZExvY2FsUmVnaXN0cnk6Ok9uVGhyZWFkTG9jYWxEZXN0cm95ZWQoCisgICAgICBjb25zdCBUaHJl
YWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9pbnN0YW5jZSkgeworICBUaHJlYWRMb2NhbFJlZ2lz
dHJ5SW1wbDo6T25UaHJlYWRMb2NhbERlc3Ryb3llZCh0aHJlYWRfbG9jYWxfaW5zdGFuY2UpOwor
fQorCisjZW5kaWYgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUgJiYgR1RFU1RfT1NfV0lORE9XUwog
CiAjaWYgR1RFU1RfVVNFU19QT1NJWF9SRQogCkBAIC0xODAsMjAgKzYzMSwyMCBAQCBib29sIElz
SW5TZXQoY2hhciBjaCwgY29uc3QgY2hhciogc3RyKSB7CiAvLyBSZXR1cm5zIHRydWUgaWZmIGNo
IGJlbG9uZ3MgdG8gdGhlIGdpdmVuIGNsYXNzaWZpY2F0aW9uLiAgVW5saWtlCiAvLyBzaW1pbGFy
IGZ1bmN0aW9ucyBpbiA8Y3R5cGUuaD4sIHRoZXNlIGFyZW4ndCBhZmZlY3RlZCBieSB0aGUKIC8v
IGN1cnJlbnQgbG9jYWxlLgotYm9vbCBJc0RpZ2l0KGNoYXIgY2gpIHsgcmV0dXJuICcwJyA8PSBj
aCAmJiBjaCA8PSAnOSc7IH0KLWJvb2wgSXNQdW5jdChjaGFyIGNoKSB7Citib29sIElzQXNjaWlE
aWdpdChjaGFyIGNoKSB7IHJldHVybiAnMCcgPD0gY2ggJiYgY2ggPD0gJzknOyB9Citib29sIElz
QXNjaWlQdW5jdChjaGFyIGNoKSB7CiAgIHJldHVybiBJc0luU2V0KGNoLCAiXi0hXCIjJCUmJygp
KissLi86Ozw9Pj9AW1xcXV9ge3x9fiIpOwogfQogYm9vbCBJc1JlcGVhdChjaGFyIGNoKSB7IHJl
dHVybiBJc0luU2V0KGNoLCAiPyorIik7IH0KLWJvb2wgSXNXaGl0ZVNwYWNlKGNoYXIgY2gpIHsg
cmV0dXJuIElzSW5TZXQoY2gsICIgXGZcblxyXHRcdiIpOyB9Ci1ib29sIElzV29yZENoYXIoY2hh
ciBjaCkgeworYm9vbCBJc0FzY2lpV2hpdGVTcGFjZShjaGFyIGNoKSB7IHJldHVybiBJc0luU2V0
KGNoLCAiIFxmXG5cclx0XHYiKTsgfQorYm9vbCBJc0FzY2lpV29yZENoYXIoY2hhciBjaCkgewog
ICByZXR1cm4gKCdhJyA8PSBjaCAmJiBjaCA8PSAneicpIHx8ICgnQScgPD0gY2ggJiYgY2ggPD0g
J1onKSB8fAogICAgICAgKCcwJyA8PSBjaCAmJiBjaCA8PSAnOScpIHx8IGNoID09ICdfJzsKIH0K
IAogLy8gUmV0dXJucyB0cnVlIGlmZiAiXFxjIiBpcyBhIHN1cHBvcnRlZCBlc2NhcGUgc2VxdWVu
Y2UuCiBib29sIElzVmFsaWRFc2NhcGUoY2hhciBjKSB7Ci0gIHJldHVybiAoSXNQdW5jdChjKSB8
fCBJc0luU2V0KGMsICJkRGZucnNTdHZ3VyIpKTsKKyAgcmV0dXJuIChJc0FzY2lpUHVuY3QoYykg
fHwgSXNJblNldChjLCAiZERmbnJzU3R2d1ciKSk7CiB9CiAKIC8vIFJldHVybnMgdHJ1ZSBpZmYg
dGhlIGdpdmVuIGF0b20gKHNwZWNpZmllZCBieSBlc2NhcGVkIGFuZCBwYXR0ZXJuKQpAQCAtMjAx
LDI2ICs2NTIsMjYgQEAgYm9vbCBJc1ZhbGlkRXNjYXBlKGNoYXIgYykgewogYm9vbCBBdG9tTWF0
Y2hlc0NoYXIoYm9vbCBlc2NhcGVkLCBjaGFyIHBhdHRlcm5fY2hhciwgY2hhciBjaCkgewogICBp
ZiAoZXNjYXBlZCkgeyAgLy8gIlxccCIgd2hlcmUgcCBpcyBwYXR0ZXJuX2NoYXIuCiAgICAgc3dp
dGNoIChwYXR0ZXJuX2NoYXIpIHsKLSAgICAgIGNhc2UgJ2QnOiByZXR1cm4gSXNEaWdpdChjaCk7
Ci0gICAgICBjYXNlICdEJzogcmV0dXJuICFJc0RpZ2l0KGNoKTsKKyAgICAgIGNhc2UgJ2QnOiBy
ZXR1cm4gSXNBc2NpaURpZ2l0KGNoKTsKKyAgICAgIGNhc2UgJ0QnOiByZXR1cm4gIUlzQXNjaWlE
aWdpdChjaCk7CiAgICAgICBjYXNlICdmJzogcmV0dXJuIGNoID09ICdcZic7CiAgICAgICBjYXNl
ICduJzogcmV0dXJuIGNoID09ICdcbic7CiAgICAgICBjYXNlICdyJzogcmV0dXJuIGNoID09ICdc
cic7Ci0gICAgICBjYXNlICdzJzogcmV0dXJuIElzV2hpdGVTcGFjZShjaCk7Ci0gICAgICBjYXNl
ICdTJzogcmV0dXJuICFJc1doaXRlU3BhY2UoY2gpOworICAgICAgY2FzZSAncyc6IHJldHVybiBJ
c0FzY2lpV2hpdGVTcGFjZShjaCk7CisgICAgICBjYXNlICdTJzogcmV0dXJuICFJc0FzY2lpV2hp
dGVTcGFjZShjaCk7CiAgICAgICBjYXNlICd0JzogcmV0dXJuIGNoID09ICdcdCc7CiAgICAgICBj
YXNlICd2JzogcmV0dXJuIGNoID09ICdcdic7Ci0gICAgICBjYXNlICd3JzogcmV0dXJuIElzV29y
ZENoYXIoY2gpOwotICAgICAgY2FzZSAnVyc6IHJldHVybiAhSXNXb3JkQ2hhcihjaCk7CisgICAg
ICBjYXNlICd3JzogcmV0dXJuIElzQXNjaWlXb3JkQ2hhcihjaCk7CisgICAgICBjYXNlICdXJzog
cmV0dXJuICFJc0FzY2lpV29yZENoYXIoY2gpOwogICAgIH0KLSAgICByZXR1cm4gSXNQdW5jdChw
YXR0ZXJuX2NoYXIpICYmIHBhdHRlcm5fY2hhciA9PSBjaDsKKyAgICByZXR1cm4gSXNBc2NpaVB1
bmN0KHBhdHRlcm5fY2hhcikgJiYgcGF0dGVybl9jaGFyID09IGNoOwogICB9CiAKICAgcmV0dXJu
IChwYXR0ZXJuX2NoYXIgPT0gJy4nICYmIGNoICE9ICdcbicpIHx8IHBhdHRlcm5fY2hhciA9PSBj
aDsKIH0KIAogLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgVmFsaWRhdGVSZWdleCgpIHRvIGZv
cm1hdCBlcnJvciBtZXNzYWdlcy4KLVN0cmluZyBGb3JtYXRSZWdleFN5bnRheEVycm9yKGNvbnN0
IGNoYXIqIHJlZ2V4LCBpbnQgaW5kZXgpIHsKK3N0ZDo6c3RyaW5nIEZvcm1hdFJlZ2V4U3ludGF4
RXJyb3IoY29uc3QgY2hhciogcmVnZXgsIGludCBpbmRleCkgewogICByZXR1cm4gKE1lc3NhZ2Uo
KSA8PCAiU3ludGF4IGVycm9yIGF0IGluZGV4ICIgPDwgaW5kZXgKICAgICAgICAgICA8PCAiIGlu
IHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24gXCIiIDw8IHJlZ2V4IDw8ICJcIjogIikuR2V0U3Ry
aW5nKCk7CiB9CkBAIC00MjIsNiArODczLDM3IEBAIHZvaWQgUkU6OkluaXQoY29uc3QgY2hhciog
cmVnZXgpIHsKIAogI2VuZGlmICAvLyBHVEVTVF9VU0VTX1BPU0lYX1JFCiAKK2NvbnN0IGNoYXIg
a1Vua25vd25GaWxlW10gPSAidW5rbm93biBmaWxlIjsKKworLy8gRm9ybWF0cyBhIHNvdXJjZSBm
aWxlIHBhdGggYW5kIGEgbGluZSBudW1iZXIgYXMgdGhleSB3b3VsZCBhcHBlYXIKKy8vIGluIGFu
IGVycm9yIG1lc3NhZ2UgZnJvbSB0aGUgY29tcGlsZXIgdXNlZCB0byBjb21waWxlIHRoaXMgY29k
ZS4KK0dURVNUX0FQSV8gOjpzdGQ6OnN0cmluZyBGb3JtYXRGaWxlTG9jYXRpb24oY29uc3QgY2hh
ciogZmlsZSwgaW50IGxpbmUpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsZV9uYW1lKGZpbGUg
PT0gTlVMTCA/IGtVbmtub3duRmlsZSA6IGZpbGUpOworCisgIGlmIChsaW5lIDwgMCkgeworICAg
IHJldHVybiBmaWxlX25hbWUgKyAiOiI7CisgIH0KKyNpZmRlZiBfTVNDX1ZFUgorICByZXR1cm4g
ZmlsZV9uYW1lICsgIigiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGxpbmUpICsgIik6IjsKKyNlbHNl
CisgIHJldHVybiBmaWxlX25hbWUgKyAiOiIgKyBTdHJlYW1hYmxlVG9TdHJpbmcobGluZSkgKyAi
OiI7CisjZW5kaWYgIC8vIF9NU0NfVkVSCit9CisKKy8vIEZvcm1hdHMgYSBmaWxlIGxvY2F0aW9u
IGZvciBjb21waWxlci1pbmRlcGVuZGVudCBYTUwgb3V0cHV0LgorLy8gQWx0aG91Z2ggdGhpcyBm
dW5jdGlvbiBpcyBub3QgcGxhdGZvcm0gZGVwZW5kZW50LCB3ZSBwdXQgaXQgbmV4dCB0bworLy8g
Rm9ybWF0RmlsZUxvY2F0aW9uIGluIG9yZGVyIHRvIGNvbnRyYXN0IHRoZSB0d28gZnVuY3Rpb25z
LgorLy8gTm90ZSB0aGF0IEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oKSBk
b2VzIE5PVCBhcHBlbmQgY29sb24KKy8vIHRvIHRoZSBmaWxlIGxvY2F0aW9uIGl0IHByb2R1Y2Vz
LCB1bmxpa2UgRm9ybWF0RmlsZUxvY2F0aW9uKCkuCitHVEVTVF9BUElfIDo6c3RkOjpzdHJpbmcg
Rm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvbigKKyAgICBjb25zdCBjaGFyKiBm
aWxlLCBpbnQgbGluZSkgeworICBjb25zdCBzdGQ6OnN0cmluZyBmaWxlX25hbWUoZmlsZSA9PSBO
VUxMID8ga1Vua25vd25GaWxlIDogZmlsZSk7CisKKyAgaWYgKGxpbmUgPCAwKQorICAgIHJldHVy
biBmaWxlX25hbWU7CisgIGVsc2UKKyAgICByZXR1cm4gZmlsZV9uYW1lICsgIjoiICsgU3RyZWFt
YWJsZVRvU3RyaW5nKGxpbmUpOworfQogCiBHVGVzdExvZzo6R1Rlc3RMb2coR1Rlc3RMb2dTZXZl
cml0eSBzZXZlcml0eSwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpCiAgICAgOiBzZXZlcml0
eV8oc2V2ZXJpdHkpIHsKQEAgLTQ0MywxOSArOTI1LDE2IEBAIEdUZXN0TG9nOjp+R1Rlc3RMb2co
KSB7CiB9CiAvLyBEaXNhYmxlIE1pY3Jvc29mdCBkZXByZWNhdGlvbiB3YXJuaW5ncyBmb3IgUE9T
SVggZnVuY3Rpb25zIGNhbGxlZCBmcm9tCiAvLyB0aGlzIGNsYXNzIChjcmVhdCwgZHVwLCBkdXAy
LCBhbmQgY2xvc2UpCi0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3By
YWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ5OTYpCi0jZW5kaWYgIC8vIF9NU0NfVkVSCitHVEVTVF9E
SVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0OTk2KQogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9S
RURJUkVDVElPTl8KKyNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCiAKIC8vIE9iamVj
dCB0aGF0IGNhcHR1cmVzIGFuIG91dHB1dCBzdHJlYW0gKHN0ZG91dC9zdGRlcnIpLgogY2xhc3Mg
Q2FwdHVyZWRTdHJlYW0gewogIHB1YmxpYzoKICAgLy8gVGhlIGN0b3IgcmVkaXJlY3RzIHRoZSBz
dHJlYW0gdG8gYSB0ZW1wb3JhcnkgZmlsZS4KLSAgQ2FwdHVyZWRTdHJlYW0oaW50IGZkKSA6IGZk
XyhmZCksIHVuY2FwdHVyZWRfZmRfKGR1cChmZCkpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisg
IGV4cGxpY2l0IENhcHR1cmVkU3RyZWFtKGludCBmZCkgOiBmZF8oZmQpLCB1bmNhcHR1cmVkX2Zk
XyhkdXAoZmQpKSB7CisjIGlmIEdURVNUX09TX1dJTkRPV1MKICAgICBjaGFyIHRlbXBfZGlyX3Bh
dGhbTUFYX1BBVEggKyAxXSA9IHsgJ1wwJyB9OyAgLy8gTk9MSU5UCiAgICAgY2hhciB0ZW1wX2Zp
bGVfcGF0aFtNQVhfUEFUSCArIDFdID0geyAnXDAnIH07ICAvLyBOT0xJTlQKIApAQCAtNDcwLDE0
ICs5NDksMzMgQEAgY2xhc3MgQ2FwdHVyZWRTdHJlYW0gewogICAgIEdURVNUX0NIRUNLXyhjYXB0
dXJlZF9mZCAhPSAtMSkgPDwgIlVuYWJsZSB0byBvcGVuIHRlbXBvcmFyeSBmaWxlICIKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHRlbXBfZmlsZV9wYXRoOwogICAgIGZp
bGVuYW1lXyA9IHRlbXBfZmlsZV9wYXRoOwotI2Vsc2UKLSAgICAvLyBUaGVyZSdzIG5vIGd1YXJh
bnRlZSB0aGF0IGEgdGVzdCBoYXMgd3JpdGUgYWNjZXNzIHRvIHRoZQotICAgIC8vIGN1cnJlbnQg
ZGlyZWN0b3J5LCBzbyB3ZSBjcmVhdGUgdGhlIHRlbXBvcmFyeSBmaWxlIGluIHRoZSAvdG1wCi0g
ICAgLy8gZGlyZWN0b3J5IGluc3RlYWQuCisjIGVsc2UKKyAgICAvLyBUaGVyZSdzIG5vIGd1YXJh
bnRlZSB0aGF0IGEgdGVzdCBoYXMgd3JpdGUgYWNjZXNzIHRvIHRoZSBjdXJyZW50CisgICAgLy8g
ZGlyZWN0b3J5LCBzbyB3ZSBjcmVhdGUgdGhlIHRlbXBvcmFyeSBmaWxlIGluIHRoZSAvdG1wIGRp
cmVjdG9yeQorICAgIC8vIGluc3RlYWQuIFdlIHVzZSAvdG1wIG9uIG1vc3Qgc3lzdGVtcywgYW5k
IC9zZGNhcmQgb24gQW5kcm9pZC4KKyAgICAvLyBUaGF0J3MgYmVjYXVzZSBBbmRyb2lkIGRvZXNu
J3QgaGF2ZSAvdG1wLgorIyAgaWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRAorICAgIC8vIE5vdGU6
IEFuZHJvaWQgYXBwbGljYXRpb25zIGFyZSBleHBlY3RlZCB0byBjYWxsIHRoZSBmcmFtZXdvcmsn
cworICAgIC8vIENvbnRleHQuZ2V0RXh0ZXJuYWxTdG9yYWdlRGlyZWN0b3J5KCkgbWV0aG9kIHRo
cm91Z2ggSk5JIHRvIGdldAorICAgIC8vIHRoZSBsb2NhdGlvbiBvZiB0aGUgd29ybGQtd3JpdGFi
bGUgU0QgQ2FyZCBkaXJlY3RvcnkuIEhvd2V2ZXIsCisgICAgLy8gdGhpcyByZXF1aXJlcyBhIENv
bnRleHQgaGFuZGxlLCB3aGljaCBjYW5ub3QgYmUgcmV0cmlldmVkCisgICAgLy8gZ2xvYmFsbHkg
ZnJvbSBuYXRpdmUgY29kZS4gRG9pbmcgc28gYWxzbyBwcmVjbHVkZXMgcnVubmluZyB0aGUKKyAg
ICAvLyBjb2RlIGFzIHBhcnQgb2YgYSByZWd1bGFyIHN0YW5kYWxvbmUgZXhlY3V0YWJsZSwgd2hp
Y2ggZG9lc24ndAorICAgIC8vIHJ1biBpbiBhIERhbHZpayBwcm9jZXNzIChlLmcuIHdoZW4gcnVu
bmluZyBpdCB0aHJvdWdoICdhZGIgc2hlbGwnKS4KKyAgICAvLworICAgIC8vIFRoZSBsb2NhdGlv
biAvc2RjYXJkIGlzIGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSBuYXRpdmUgY29kZQorICAgIC8v
IGFuZCBpcyB0aGUgb25seSBsb2NhdGlvbiAodW5vZmZpY2lhbGx5KSBzdXBwb3J0ZWQgYnkgdGhl
IEFuZHJvaWQKKyAgICAvLyB0ZWFtLiBJdCdzIGdlbmVyYWxseSBhIHN5bWxpbmsgdG8gdGhlIHJl
YWwgU0QgQ2FyZCBtb3VudCBwb2ludAorICAgIC8vIHdoaWNoIGNhbiBiZSAvbW50L3NkY2FyZCwg
L21udC9zZGNhcmQwLCAvc3lzdGVtL21lZGlhL3NkY2FyZCwgb3IKKyAgICAvLyBvdGhlciBPRU0t
Y3VzdG9taXplZCBsb2NhdGlvbnMuIE5ldmVyIHJlbHkgb24gdGhlc2UsIGFuZCBhbHdheXMKKyAg
ICAvLyB1c2UgL3NkY2FyZC4KKyAgICBjaGFyIG5hbWVfdGVtcGxhdGVbXSA9ICIvc2RjYXJkL2d0
ZXN0X2NhcHR1cmVkX3N0cmVhbS5YWFhYWFgiOworIyAgZWxzZQogICAgIGNoYXIgbmFtZV90ZW1w
bGF0ZVtdID0gIi90bXAvY2FwdHVyZWRfc3RyZWFtLlhYWFhYWCI7CisjICBlbmRpZiAgLy8gR1RF
U1RfT1NfTElOVVhfQU5EUk9JRAogICAgIGNvbnN0IGludCBjYXB0dXJlZF9mZCA9IG1rc3RlbXAo
bmFtZV90ZW1wbGF0ZSk7CiAgICAgZmlsZW5hbWVfID0gbmFtZV90ZW1wbGF0ZTsKLSNlbmRpZiAg
Ly8gR1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogICAgIGZm
bHVzaChOVUxMKTsKICAgICBkdXAyKGNhcHR1cmVkX2ZkLCBmZF8pOwogICAgIGNsb3NlKGNhcHR1
cmVkX2ZkKTsKQEAgLTQ4Nyw3ICs5ODUsNyBAQCBjbGFzcyBDYXB0dXJlZFN0cmVhbSB7CiAgICAg
cmVtb3ZlKGZpbGVuYW1lXy5jX3N0cigpKTsKICAgfQogCi0gIFN0cmluZyBHZXRDYXB0dXJlZFN0
cmluZygpIHsKKyAgc3RkOjpzdHJpbmcgR2V0Q2FwdHVyZWRTdHJpbmcoKSB7CiAgICAgaWYgKHVu
Y2FwdHVyZWRfZmRfICE9IC0xKSB7CiAgICAgICAvLyBSZXN0b3JlcyB0aGUgb3JpZ2luYWwgc3Ry
ZWFtLgogICAgICAgZmZsdXNoKE5VTEwpOwpAQCAtNDk3LDE4ICs5OTUsMTIgQEAgY2xhc3MgQ2Fw
dHVyZWRTdHJlYW0gewogICAgIH0KIAogICAgIEZJTEUqIGNvbnN0IGZpbGUgPSBwb3NpeDo6Rk9w
ZW4oZmlsZW5hbWVfLmNfc3RyKCksICJyIik7Ci0gICAgY29uc3QgU3RyaW5nIGNvbnRlbnQgPSBS
ZWFkRW50aXJlRmlsZShmaWxlKTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBjb250ZW50ID0gUmVh
ZEVudGlyZUZpbGUoZmlsZSk7CiAgICAgcG9zaXg6OkZDbG9zZShmaWxlKTsKICAgICByZXR1cm4g
Y29udGVudDsKICAgfQogCiAgcHJpdmF0ZToKLSAgLy8gUmVhZHMgdGhlIGVudGlyZSBjb250ZW50
IG9mIGEgZmlsZSBhcyBhIFN0cmluZy4KLSAgc3RhdGljIFN0cmluZyBSZWFkRW50aXJlRmlsZShG
SUxFKiBmaWxlKTsKLQotICAvLyBSZXR1cm5zIHRoZSBzaXplIChpbiBieXRlcykgb2YgYSBmaWxl
LgotICBzdGF0aWMgc2l6ZV90IEdldEZpbGVTaXplKEZJTEUqIGZpbGUpOwotCiAgIGNvbnN0IGlu
dCBmZF87ICAvLyBBIHN0cmVhbSB0byBjYXB0dXJlLgogICBpbnQgdW5jYXB0dXJlZF9mZF87CiAg
IC8vIE5hbWUgb2YgdGhlIHRlbXBvcmFyeSBmaWxlIGhvbGRpbmcgdGhlIHN0ZGVyciBvdXRwdXQu
CkBAIC01MTcsMzggKzEwMDksNyBAQCBjbGFzcyBDYXB0dXJlZFN0cmVhbSB7CiAgIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQ2FwdHVyZWRTdHJlYW0pOwogfTsKIAotLy8gUmV0dXJu
cyB0aGUgc2l6ZSAoaW4gYnl0ZXMpIG9mIGEgZmlsZS4KLXNpemVfdCBDYXB0dXJlZFN0cmVhbTo6
R2V0RmlsZVNpemUoRklMRSogZmlsZSkgewotICBmc2VlayhmaWxlLCAwLCBTRUVLX0VORCk7Ci0g
IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGZ0ZWxsKGZpbGUpKTsKLX0KLQotLy8gUmVhZHMg
dGhlIGVudGlyZSBjb250ZW50IG9mIGEgZmlsZSBhcyBhIHN0cmluZy4KLVN0cmluZyBDYXB0dXJl
ZFN0cmVhbTo6UmVhZEVudGlyZUZpbGUoRklMRSogZmlsZSkgewotICBjb25zdCBzaXplX3QgZmls
ZV9zaXplID0gR2V0RmlsZVNpemUoZmlsZSk7Ci0gIGNoYXIqIGNvbnN0IGJ1ZmZlciA9IG5ldyBj
aGFyW2ZpbGVfc2l6ZV07Ci0KLSAgc2l6ZV90IGJ5dGVzX2xhc3RfcmVhZCA9IDA7ICAvLyAjIG9m
IGJ5dGVzIHJlYWQgaW4gdGhlIGxhc3QgZnJlYWQoKQotICBzaXplX3QgYnl0ZXNfcmVhZCA9IDA7
ICAgICAgIC8vICMgb2YgYnl0ZXMgcmVhZCBzbyBmYXIKLQotICBmc2VlayhmaWxlLCAwLCBTRUVL
X1NFVCk7Ci0KLSAgLy8gS2VlcHMgcmVhZGluZyB0aGUgZmlsZSB1bnRpbCB3ZSBjYW5ub3QgcmVh
ZCBmdXJ0aGVyIG9yIHRoZQotICAvLyBwcmUtZGV0ZXJtaW5lZCBmaWxlIHNpemUgaXMgcmVhY2hl
ZC4KLSAgZG8gewotICAgIGJ5dGVzX2xhc3RfcmVhZCA9IGZyZWFkKGJ1ZmZlcitieXRlc19yZWFk
LCAxLCBmaWxlX3NpemUtYnl0ZXNfcmVhZCwgZmlsZSk7Ci0gICAgYnl0ZXNfcmVhZCArPSBieXRl
c19sYXN0X3JlYWQ7Ci0gIH0gd2hpbGUgKGJ5dGVzX2xhc3RfcmVhZCA+IDAgJiYgYnl0ZXNfcmVh
ZCA8IGZpbGVfc2l6ZSk7Ci0KLSAgY29uc3QgU3RyaW5nIGNvbnRlbnQoYnVmZmVyLCBieXRlc19y
ZWFkKTsKLSAgZGVsZXRlW10gYnVmZmVyOwotCi0gIHJldHVybiBjb250ZW50OwotfQotCi0jaWZk
ZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYgIC8vIF9NU0NfVkVSCitH
VEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKIAogc3RhdGljIENhcHR1cmVkU3RyZWFt
KiBnX2NhcHR1cmVkX3N0ZGVyciA9IE5VTEw7CiBzdGF0aWMgQ2FwdHVyZWRTdHJlYW0qIGdfY2Fw
dHVyZWRfc3Rkb3V0ID0gTlVMTDsKQEAgLTU2Myw4ICsxMDI0LDggQEAgdm9pZCBDYXB0dXJlU3Ry
ZWFtKGludCBmZCwgY29uc3QgY2hhciogc3RyZWFtX25hbWUsIENhcHR1cmVkU3RyZWFtKiogc3Ry
ZWFtKSB7CiB9CiAKIC8vIFN0b3BzIGNhcHR1cmluZyB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgcmV0
dXJucyB0aGUgY2FwdHVyZWQgc3RyaW5nLgotU3RyaW5nIEdldENhcHR1cmVkU3RyZWFtKENhcHR1
cmVkU3RyZWFtKiogY2FwdHVyZWRfc3RyZWFtKSB7Ci0gIGNvbnN0IFN0cmluZyBjb250ZW50ID0g
KCpjYXB0dXJlZF9zdHJlYW0pLT5HZXRDYXB0dXJlZFN0cmluZygpOworc3RkOjpzdHJpbmcgR2V0
Q2FwdHVyZWRTdHJlYW0oQ2FwdHVyZWRTdHJlYW0qKiBjYXB0dXJlZF9zdHJlYW0pIHsKKyAgY29u
c3Qgc3RkOjpzdHJpbmcgY29udGVudCA9ICgqY2FwdHVyZWRfc3RyZWFtKS0+R2V0Q2FwdHVyZWRT
dHJpbmcoKTsKIAogICBkZWxldGUgKmNhcHR1cmVkX3N0cmVhbTsKICAgKmNhcHR1cmVkX3N0cmVh
bSA9IE5VTEw7CkBAIC01ODMsMjEgKzEwNDQsNzkgQEAgdm9pZCBDYXB0dXJlU3RkZXJyKCkgewog
fQogCiAvLyBTdG9wcyBjYXB0dXJpbmcgc3Rkb3V0IGFuZCByZXR1cm5zIHRoZSBjYXB0dXJlZCBz
dHJpbmcuCi1TdHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKSB7IHJldHVybiBHZXRDYXB0dXJlZFN0
cmVhbSgmZ19jYXB0dXJlZF9zdGRvdXQpOyB9CitzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0ZG91
dCgpIHsKKyAgcmV0dXJuIEdldENhcHR1cmVkU3RyZWFtKCZnX2NhcHR1cmVkX3N0ZG91dCk7Cit9
CiAKIC8vIFN0b3BzIGNhcHR1cmluZyBzdGRlcnIgYW5kIHJldHVybnMgdGhlIGNhcHR1cmVkIHN0
cmluZy4KLVN0cmluZyBHZXRDYXB0dXJlZFN0ZGVycigpIHsgcmV0dXJuIEdldENhcHR1cmVkU3Ry
ZWFtKCZnX2NhcHR1cmVkX3N0ZGVycik7IH0KK3N0ZDo6c3RyaW5nIEdldENhcHR1cmVkU3RkZXJy
KCkgeworICByZXR1cm4gR2V0Q2FwdHVyZWRTdHJlYW0oJmdfY2FwdHVyZWRfc3RkZXJyKTsKK30K
IAotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXworI2VuZGlmICAvLyBH
VEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCisKK3N0ZDo6c3RyaW5nIFRlbXBEaXIoKSB7Cisj
aWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyAgcmV0dXJuICJcXHRlbXBcXCI7CisjZWxpZiBH
VEVTVF9PU19XSU5ET1dTCisgIGNvbnN0IGNoYXIqIHRlbXBfZGlyID0gcG9zaXg6OkdldEVudigi
VEVNUCIpOworICBpZiAodGVtcF9kaXIgPT0gTlVMTCB8fCB0ZW1wX2RpclswXSA9PSAnXDAnKQor
ICAgIHJldHVybiAiXFx0ZW1wXFwiOworICBlbHNlIGlmICh0ZW1wX2RpcltzdHJsZW4odGVtcF9k
aXIpIC0gMV0gPT0gJ1xcJykKKyAgICByZXR1cm4gdGVtcF9kaXI7CisgIGVsc2UKKyAgICByZXR1
cm4gc3RkOjpzdHJpbmcodGVtcF9kaXIpICsgIlxcIjsKKyNlbGlmIEdURVNUX09TX0xJTlVYX0FO
RFJPSUQKKyAgcmV0dXJuICIvc2RjYXJkLyI7CisjZWxzZQorICByZXR1cm4gIi90bXAvIjsKKyNl
bmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKK30KKworc2l6ZV90IEdldEZpbGVTaXpl
KEZJTEUqIGZpbGUpIHsKKyAgZnNlZWsoZmlsZSwgMCwgU0VFS19FTkQpOworICByZXR1cm4gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihmdGVsbChmaWxlKSk7Cit9CisKK3N0ZDo6c3RyaW5nIFJlYWRFbnRp
cmVGaWxlKEZJTEUqIGZpbGUpIHsKKyAgY29uc3Qgc2l6ZV90IGZpbGVfc2l6ZSA9IEdldEZpbGVT
aXplKGZpbGUpOworICBjaGFyKiBjb25zdCBidWZmZXIgPSBuZXcgY2hhcltmaWxlX3NpemVdOwor
CisgIHNpemVfdCBieXRlc19sYXN0X3JlYWQgPSAwOyAgLy8gIyBvZiBieXRlcyByZWFkIGluIHRo
ZSBsYXN0IGZyZWFkKCkKKyAgc2l6ZV90IGJ5dGVzX3JlYWQgPSAwOyAgICAgICAvLyAjIG9mIGJ5
dGVzIHJlYWQgc28gZmFyCisKKyAgZnNlZWsoZmlsZSwgMCwgU0VFS19TRVQpOworCisgIC8vIEtl
ZXBzIHJlYWRpbmcgdGhlIGZpbGUgdW50aWwgd2UgY2Fubm90IHJlYWQgZnVydGhlciBvciB0aGUK
KyAgLy8gcHJlLWRldGVybWluZWQgZmlsZSBzaXplIGlzIHJlYWNoZWQuCisgIGRvIHsKKyAgICBi
eXRlc19sYXN0X3JlYWQgPSBmcmVhZChidWZmZXIrYnl0ZXNfcmVhZCwgMSwgZmlsZV9zaXplLWJ5
dGVzX3JlYWQsIGZpbGUpOworICAgIGJ5dGVzX3JlYWQgKz0gYnl0ZXNfbGFzdF9yZWFkOworICB9
IHdoaWxlIChieXRlc19sYXN0X3JlYWQgPiAwICYmIGJ5dGVzX3JlYWQgPCBmaWxlX3NpemUpOwor
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvbnRlbnQoYnVmZmVyLCBieXRlc19yZWFkKTsKKyAgZGVs
ZXRlW10gYnVmZmVyOworCisgIHJldHVybiBjb250ZW50OworfQogCiAjaWYgR1RFU1RfSEFTX0RF
QVRIX1RFU1QKIAotLy8gQSBjb3B5IG9mIGFsbCBjb21tYW5kIGxpbmUgYXJndW1lbnRzLiAgU2V0
IGJ5IEluaXRHb29nbGVUZXN0KCkuCi06OnN0ZDo6dmVjdG9yPFN0cmluZz4gZ19hcmd2czsKK3N0
YXRpYyBjb25zdCA6OnN0ZDo6dmVjdG9yPHRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmc+KiBnX2lu
amVjdGVkX3Rlc3RfYXJndnMgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5VTEw7ICAvLyBPd25lZC4KIAotLy8gUmV0dXJucyB0aGUgY29tbWFuZCBsaW5lIGFzIGEg
dmVjdG9yIG9mIHN0cmluZ3MuCi1jb25zdCA6OnN0ZDo6dmVjdG9yPFN0cmluZz4mIEdldEFyZ3Zz
KCkgeyByZXR1cm4gZ19hcmd2czsgfQordm9pZCBTZXRJbmplY3RhYmxlQXJndnMoY29uc3QgOjpz
dGQ6OnZlY3Rvcjx0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nPiogYXJndnMpIHsKKyAgaWYgKGdf
aW5qZWN0ZWRfdGVzdF9hcmd2cyAhPSBhcmd2cykKKyAgICBkZWxldGUgZ19pbmplY3RlZF90ZXN0
X2FyZ3ZzOworICBnX2luamVjdGVkX3Rlc3RfYXJndnMgPSBhcmd2czsKK30KIAorY29uc3QgOjpz
dGQ6OnZlY3Rvcjx0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nPiYgR2V0SW5qZWN0YWJsZUFyZ3Zz
KCkgeworICBpZiAoZ19pbmplY3RlZF90ZXN0X2FyZ3ZzICE9IE5VTEwpIHsKKyAgICByZXR1cm4g
KmdfaW5qZWN0ZWRfdGVzdF9hcmd2czsKKyAgfQorICByZXR1cm4gR2V0QXJndnMoKTsKK30KICNl
bmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKIAogI2lmIEdURVNUX09TX1dJTkRPV1NfTU9C
SUxFCkBAIC02MTIsMTMgKzExMzEsMTMgQEAgdm9pZCBBYm9ydCgpIHsKIC8vIFJldHVybnMgdGhl
IG5hbWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGNvcnJlc3BvbmRpbmcgdG8gdGhlCiAv
LyBnaXZlbiBmbGFnLiAgRm9yIGV4YW1wbGUsIEZsYWdUb0VudlZhcigiZm9vIikgd2lsbCByZXR1
cm4KIC8vICJHVEVTVF9GT08iIGluIHRoZSBvcGVuLXNvdXJjZSB2ZXJzaW9uLgotc3RhdGljIFN0
cmluZyBGbGFnVG9FbnZWYXIoY29uc3QgY2hhciogZmxhZykgewotICBjb25zdCBTdHJpbmcgZnVs
bF9mbGFnID0KK3N0YXRpYyBzdGQ6OnN0cmluZyBGbGFnVG9FbnZWYXIoY29uc3QgY2hhciogZmxh
ZykgeworICBjb25zdCBzdGQ6OnN0cmluZyBmdWxsX2ZsYWcgPQogICAgICAgKE1lc3NhZ2UoKSA8
PCBHVEVTVF9GTEFHX1BSRUZJWF8gPDwgZmxhZykuR2V0U3RyaW5nKCk7CiAKICAgTWVzc2FnZSBl
bnZfdmFyOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBmdWxsX2ZsYWcubGVuZ3RoKCk7IGkr
KykgewotICAgIGVudl92YXIgPDwgc3RhdGljX2Nhc3Q8Y2hhcj4odG91cHBlcihmdWxsX2ZsYWcu
Y19zdHIoKVtpXSkpOworICAgIGVudl92YXIgPDwgVG9VcHBlcihmdWxsX2ZsYWcuY19zdHIoKVtp
XSk7CiAgIH0KIAogICByZXR1cm4gZW52X3Zhci5HZXRTdHJpbmcoKTsKQEAgLTY3MCw3ICsxMTg5
LDEwIEBAIGJvb2wgUGFyc2VJbnQzMihjb25zdCBNZXNzYWdlJiBzcmNfdGV4dCwgY29uc3QgY2hh
ciogc3RyLCBJbnQzMiogdmFsdWUpIHsKIC8vCiAvLyBUaGUgdmFsdWUgaXMgY29uc2lkZXJlZCB0
cnVlIGlmZiBpdCdzIG5vdCAiMCIuCiBib29sIEJvb2xGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciog
ZmxhZywgYm9vbCBkZWZhdWx0X3ZhbHVlKSB7Ci0gIGNvbnN0IFN0cmluZyBlbnZfdmFyID0gRmxh
Z1RvRW52VmFyKGZsYWcpOworI2lmIGRlZmluZWQoR1RFU1RfR0VUX0JPT0xfRlJPTV9FTlZfKQor
ICByZXR1cm4gR1RFU1RfR0VUX0JPT0xfRlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOwor
I2VuZGlmICAvLyBkZWZpbmVkKEdURVNUX0dFVF9CT09MX0ZST01fRU5WXykKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFnKTsKICAgY29uc3QgY2hhciogY29u
c3Qgc3RyaW5nX3ZhbHVlID0gcG9zaXg6OkdldEVudihlbnZfdmFyLmNfc3RyKCkpOwogICByZXR1
cm4gc3RyaW5nX3ZhbHVlID09IE5VTEwgPwogICAgICAgZGVmYXVsdF92YWx1ZSA6IHN0cmNtcChz
dHJpbmdfdmFsdWUsICIwIikgIT0gMDsKQEAgLTY4MCw3ICsxMjAyLDEwIEBAIGJvb2wgQm9vbEZy
b21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBib29sIGRlZmF1bHRfdmFsdWUpIHsKIC8vIHZh
cmlhYmxlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGZsYWc7IGlmIGl0IGlzbid0IHNldCBv
cgogLy8gZG9lc24ndCByZXByZXNlbnQgYSB2YWxpZCAzMi1iaXQgaW50ZWdlciwgcmV0dXJucyBk
ZWZhdWx0X3ZhbHVlLgogSW50MzIgSW50MzJGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywg
SW50MzIgZGVmYXVsdF92YWx1ZSkgewotICBjb25zdCBTdHJpbmcgZW52X3ZhciA9IEZsYWdUb0Vu
dlZhcihmbGFnKTsKKyNpZiBkZWZpbmVkKEdURVNUX0dFVF9JTlQzMl9GUk9NX0VOVl8pCisgIHJl
dHVybiBHVEVTVF9HRVRfSU5UMzJfRlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOworI2Vu
ZGlmICAvLyBkZWZpbmVkKEdURVNUX0dFVF9JTlQzMl9GUk9NX0VOVl8pCisgIGNvbnN0IHN0ZDo6
c3RyaW5nIGVudl92YXIgPSBGbGFnVG9FbnZWYXIoZmxhZyk7CiAgIGNvbnN0IGNoYXIqIGNvbnN0
IHN0cmluZ192YWx1ZSA9IHBvc2l4OjpHZXRFbnYoZW52X3Zhci5jX3N0cigpKTsKICAgaWYgKHN0
cmluZ192YWx1ZSA9PSBOVUxMKSB7CiAgICAgLy8gVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGlz
IG5vdCBzZXQuCkBAIC03MDEsMTAgKzEyMjYsMzMgQEAgSW50MzIgSW50MzJGcm9tR1Rlc3RFbnYo
Y29uc3QgY2hhciogZmxhZywgSW50MzIgZGVmYXVsdF92YWx1ZSkgewogCiAvLyBSZWFkcyBhbmQg
cmV0dXJucyB0aGUgc3RyaW5nIGVudmlyb25tZW50IHZhcmlhYmxlIGNvcnJlc3BvbmRpbmcgdG8K
IC8vIHRoZSBnaXZlbiBmbGFnOyBpZiBpdCdzIG5vdCBzZXQsIHJldHVybnMgZGVmYXVsdF92YWx1
ZS4KLWNvbnN0IGNoYXIqIFN0cmluZ0Zyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBjb25z
dCBjaGFyKiBkZWZhdWx0X3ZhbHVlKSB7Ci0gIGNvbnN0IFN0cmluZyBlbnZfdmFyID0gRmxhZ1Rv
RW52VmFyKGZsYWcpOwotICBjb25zdCBjaGFyKiBjb25zdCB2YWx1ZSA9IHBvc2l4OjpHZXRFbnYo
ZW52X3Zhci5jX3N0cigpKTsKLSAgcmV0dXJuIHZhbHVlID09IE5VTEwgPyBkZWZhdWx0X3ZhbHVl
IDogdmFsdWU7CitzdGQ6OnN0cmluZyBTdHJpbmdGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxh
ZywgY29uc3QgY2hhciogZGVmYXVsdF92YWx1ZSkgeworI2lmIGRlZmluZWQoR1RFU1RfR0VUX1NU
UklOR19GUk9NX0VOVl8pCisgIHJldHVybiBHVEVTVF9HRVRfU1RSSU5HX0ZST01fRU5WXyhmbGFn
LCBkZWZhdWx0X3ZhbHVlKTsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9HRVRfU1RSSU5HX0ZS
T01fRU5WXykKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFn
KTsKKyAgY29uc3QgY2hhciogdmFsdWUgPSBwb3NpeDo6R2V0RW52KGVudl92YXIuY19zdHIoKSk7
CisgIGlmICh2YWx1ZSAhPSBOVUxMKSB7CisgICAgcmV0dXJuIHZhbHVlOworICB9CisKKyAgLy8g
QXMgYSBzcGVjaWFsIGNhc2UgZm9yIHRoZSAnb3V0cHV0JyBmbGFnLCBpZiBHVEVTVF9PVVRQVVQg
aXMgbm90CisgIC8vIHNldCwgd2UgbG9vayBmb3IgWE1MX09VVFBVVF9GSUxFLCB3aGljaCBpcyBz
ZXQgYnkgdGhlIEJhemVsIGJ1aWxkCisgIC8vIHN5c3RlbS4gIFRoZSB2YWx1ZSBvZiBYTUxfT1VU
UFVUX0ZJTEUgaXMgYSBmaWxlbmFtZSB3aXRob3V0IHRoZQorICAvLyAieG1sOiIgcHJlZml4IG9m
IEdURVNUX09VVFBVVC4KKyAgLy8KKyAgLy8gVGhlIG5ldCBwcmlvcml0eSBvcmRlciBhZnRlciBm
bGFnIHByb2Nlc3NpbmcgaXMgdGh1czoKKyAgLy8gICAtLWd0ZXN0X291dHB1dCBjb21tYW5kIGxp
bmUgZmxhZworICAvLyAgIEdURVNUX09VVFBVVCBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAvLyAg
IFhNTF9PVVRQVVRfRklMRSBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAvLyAgICdkZWZhdWx0X3Zh
bHVlJworICBpZiAoc3RyY21wKGZsYWcsICJvdXRwdXQiKSA9PSAwKSB7CisgICAgdmFsdWUgPSBw
b3NpeDo6R2V0RW52KCJYTUxfT1VUUFVUX0ZJTEUiKTsKKyAgICBpZiAodmFsdWUgIT0gTlVMTCkg
eworICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCJ4bWw6IikgKyB2YWx1ZTsKKyAgICB9CisgIH0K
KyAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXByaW50ZXJzLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXByaW50ZXJzLmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmEyZGY0MTJmOGEyMDQ1OTA0M2NkYjcwZTViMDk1YTcyYjdhMTM5NGEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcHJpbnRlcnMuY2MKQEAg
LTAsMCArMSwzNzMgQEAKKy8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgorLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKKy8vIEdv
b2dsZSBUZXN0IC0gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsKKy8vCisvLyBUaGlz
IGZpbGUgaW1wbGVtZW50cyBhIHVuaXZlcnNhbCB2YWx1ZSBwcmludGVyIHRoYXQgY2FuIHByaW50
IGEKKy8vIHZhbHVlIG9mIGFueSB0eXBlIFQ6CisvLworLy8gICB2b2lkIDo6dGVzdGluZzo6aW50
ZXJuYWw6OlVuaXZlcnNhbFByaW50ZXI8VD46OlByaW50KHZhbHVlLCBvc3RyZWFtX3B0cik7Cisv
LworLy8gSXQgdXNlcyB0aGUgPDwgb3BlcmF0b3Igd2hlbiBwb3NzaWJsZSwgYW5kIHByaW50cyB0
aGUgYnl0ZXMgaW4gdGhlCisvLyBvYmplY3Qgb3RoZXJ3aXNlLiAgQSB1c2VyIGNhbiBvdmVycmlk
ZSBpdHMgYmVoYXZpb3IgZm9yIGEgY2xhc3MKKy8vIHR5cGUgRm9vIGJ5IGRlZmluaW5nIGVpdGhl
ciBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiwgY29uc3QgRm9vJikKKy8vIG9yIHZvaWQgUHJp
bnRUbyhjb25zdCBGb28mLCA6OnN0ZDo6b3N0cmVhbSopIGluIHRoZSBuYW1lc3BhY2UgdGhhdAor
Ly8gZGVmaW5lcyBGb28uCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1wcmludGVycy5oIgorI2lu
Y2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxjd2NoYXI+Cisj
aW5jbHVkZSA8b3N0cmVhbT4gIC8vIE5PTElOVAorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRl
ICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKwor
bmFtZXNwYWNlIHsKKwordXNpbmcgOjpzdGQ6Om9zdHJlYW07CisKKy8vIFByaW50cyBhIHNlZ21l
bnQgb2YgYnl0ZXMgaW4gdGhlIGdpdmVuIG9iamVjdC4KK0dURVNUX0FUVFJJQlVURV9OT19TQU5J
VElaRV9NRU1PUllfCitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTU18KK0dURVNU
X0FUVFJJQlVURV9OT19TQU5JVElaRV9USFJFQURfCit2b2lkIFByaW50Qnl0ZVNlZ21lbnRJbk9i
amVjdFRvKGNvbnN0IHVuc2lnbmVkIGNoYXIqIG9ial9ieXRlcywgc2l6ZV90IHN0YXJ0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQsIG9zdHJlYW0qIG9zKSB7
CisgIGNoYXIgdGV4dFs1XSA9ICIiOworICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBjb3VudDsg
aSsrKSB7CisgICAgY29uc3Qgc2l6ZV90IGogPSBzdGFydCArIGk7CisgICAgaWYgKGkgIT0gMCkg
eworICAgICAgLy8gT3JnYW5pemVzIHRoZSBieXRlcyBpbnRvIGdyb3VwcyBvZiAyIGZvciBlYXN5
IHBhcnNpbmcgYnkKKyAgICAgIC8vIGh1bWFuLgorICAgICAgaWYgKChqICUgMikgPT0gMCkKKyAg
ICAgICAgKm9zIDw8ICcgJzsKKyAgICAgIGVsc2UKKyAgICAgICAgKm9zIDw8ICctJzsKKyAgICB9
CisgICAgR1RFU1RfU05QUklOVEZfKHRleHQsIHNpemVvZih0ZXh0KSwgIiUwMlgiLCBvYmpfYnl0
ZXNbal0pOworICAgICpvcyA8PCB0ZXh0OworICB9Cit9CisKKy8vIFByaW50cyB0aGUgYnl0ZXMg
aW4gdGhlIGdpdmVuIHZhbHVlIHRvIHRoZSBnaXZlbiBvc3RyZWFtLgordm9pZCBQcmludEJ5dGVz
SW5PYmplY3RUb0ltcGwoY29uc3QgdW5zaWduZWQgY2hhciogb2JqX2J5dGVzLCBzaXplX3QgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvc3RyZWFtKiBvcykgeworICAvLyBU
ZWxscyB0aGUgdXNlciBob3cgYmlnIHRoZSBvYmplY3QgaXMuCisgICpvcyA8PCBjb3VudCA8PCAi
LWJ5dGUgb2JqZWN0IDwiOworCisgIGNvbnN0IHNpemVfdCBrVGhyZXNob2xkID0gMTMyOworICBj
b25zdCBzaXplX3Qga0NodW5rU2l6ZSA9IDY0OworICAvLyBJZiB0aGUgb2JqZWN0IHNpemUgaXMg
YmlnZ2VyIHRoYW4ga1RocmVzaG9sZCwgd2UnbGwgaGF2ZSB0byBvbWl0CisgIC8vIHNvbWUgZGV0
YWlscyBieSBwcmludGluZyBvbmx5IHRoZSBmaXJzdCBhbmQgdGhlIGxhc3Qga0NodW5rU2l6ZQor
ICAvLyBieXRlcy4KKyAgLy8gVE9ETyh3YW4pOiBsZXQgdGhlIHVzZXIgY29udHJvbCB0aGUgdGhy
ZXNob2xkIHVzaW5nIGEgZmxhZy4KKyAgaWYgKGNvdW50IDwga1RocmVzaG9sZCkgeworICAgIFBy
aW50Qnl0ZVNlZ21lbnRJbk9iamVjdFRvKG9ial9ieXRlcywgMCwgY291bnQsIG9zKTsKKyAgfSBl
bHNlIHsKKyAgICBQcmludEJ5dGVTZWdtZW50SW5PYmplY3RUbyhvYmpfYnl0ZXMsIDAsIGtDaHVu
a1NpemUsIG9zKTsKKyAgICAqb3MgPDwgIiAuLi4gIjsKKyAgICAvLyBSb3VuZHMgdXAgdG8gMi1i
eXRlIGJvdW5kYXJ5LgorICAgIGNvbnN0IHNpemVfdCByZXN1bWVfcG9zID0gKGNvdW50IC0ga0No
dW5rU2l6ZSArIDEpLzIqMjsKKyAgICBQcmludEJ5dGVTZWdtZW50SW5PYmplY3RUbyhvYmpfYnl0
ZXMsIHJlc3VtZV9wb3MsIGNvdW50IC0gcmVzdW1lX3Bvcywgb3MpOworICB9CisgICpvcyA8PCAi
PiI7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCituYW1lc3BhY2UgaW50ZXJuYWwyIHsKKworLy8g
RGVsZWdhdGVzIHRvIFByaW50Qnl0ZXNJbk9iamVjdFRvSW1wbCgpIHRvIHByaW50IHRoZSBieXRl
cyBpbiB0aGUKKy8vIGdpdmVuIG9iamVjdC4gIFRoZSBkZWxlZ2F0aW9uIHNpbXBsaWZpZXMgdGhl
IGltcGxlbWVudGF0aW9uLCB3aGljaAorLy8gdXNlcyB0aGUgPDwgb3BlcmF0b3IgYW5kIHRodXMg
aXMgZWFzaWVyIGRvbmUgb3V0c2lkZSBvZiB0aGUKKy8vIDo6dGVzdGluZzo6aW50ZXJuYWwgbmFt
ZXNwYWNlLCB3aGljaCBjb250YWlucyBhIDw8IG9wZXJhdG9yIHRoYXQKKy8vIHNvbWV0aW1lcyBj
b25mbGljdHMgd2l0aCB0aGUgb25lIGluIFNUTC4KK3ZvaWQgUHJpbnRCeXRlc0luT2JqZWN0VG8o
Y29uc3QgdW5zaWduZWQgY2hhciogb2JqX2J5dGVzLCBzaXplX3QgY291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9zdHJlYW0qIG9zKSB7CisgIFByaW50Qnl0ZXNJbk9iamVjdFRvSW1w
bChvYmpfYnl0ZXMsIGNvdW50LCBvcyk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbDIK
KworbmFtZXNwYWNlIGludGVybmFsIHsKKworLy8gRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBh
IGNoYXIgKG9yIHdjaGFyX3QpLCB3ZSBwcmludCBpdCBpbiBvbmUKKy8vIG9mIHRocmVlIGZvcm1h
dHM6CisvLyAgIC0gYXMgaXMgaWYgaXQncyBhIHByaW50YWJsZSBBU0NJSSAoZS5nLiAnYScsICcy
JywgJyAnKSwKKy8vICAgLSBhcyBhIGhleGlkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZSAoZS5nLiAn
XHg3RicpLCBvcgorLy8gICAtIGFzIGEgc3BlY2lhbCBlc2NhcGUgc2VxdWVuY2UgKGUuZy4gJ1xy
JywgJ1xuJykuCitlbnVtIENoYXJGb3JtYXQgeworICBrQXNJcywKKyAga0hleEVzY2FwZSwKKyAg
a1NwZWNpYWxFc2NhcGUKK307CisKKy8vIFJldHVybnMgdHJ1ZSBpZiBjIGlzIGEgcHJpbnRhYmxl
IEFTQ0lJIGNoYXJhY3Rlci4gIFdlIHRlc3QgdGhlCisvLyB2YWx1ZSBvZiBjIGRpcmVjdGx5IGlu
c3RlYWQgb2YgY2FsbGluZyBpc3ByaW50KCksIHdoaWNoIGlzIGJ1Z2d5IG9uCisvLyBXaW5kb3dz
IE1vYmlsZS4KK2lubGluZSBib29sIElzUHJpbnRhYmxlQXNjaWkod2NoYXJfdCBjKSB7CisgIHJl
dHVybiAweDIwIDw9IGMgJiYgYyA8PSAweDdFOworfQorCisvLyBQcmludHMgYSB3aWRlIG9yIG5h
cnJvdyBjaGFyIGMgYXMgYSBjaGFyYWN0ZXIgbGl0ZXJhbCB3aXRob3V0IHRoZQorLy8gcXVvdGVz
LCBlc2NhcGluZyBpdCB3aGVuIG5lY2Vzc2FyeTsgcmV0dXJucyBob3cgYyB3YXMgZm9ybWF0dGVk
LgorLy8gVGhlIHRlbXBsYXRlIGFyZ3VtZW50IFVuc2lnbmVkQ2hhciBpcyB0aGUgdW5zaWduZWQg
dmVyc2lvbiBvZiBDaGFyLAorLy8gd2hpY2ggaXMgdGhlIHR5cGUgb2YgYy4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBVbnNpZ25lZENoYXIsIHR5cGVuYW1lIENoYXI+CitzdGF0aWMgQ2hhckZvcm1hdCBQ
cmludEFzQ2hhckxpdGVyYWxUbyhDaGFyIGMsIG9zdHJlYW0qIG9zKSB7CisgIHN3aXRjaCAoc3Rh
dGljX2Nhc3Q8d2NoYXJfdD4oYykpIHsKKyAgICBjYXNlIEwnXDAnOgorICAgICAgKm9zIDw8ICJc
XDAiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1wnJzoKKyAgICAgICpvcyA8PCAiXFwnIjsK
KyAgICAgIGJyZWFrOworICAgIGNhc2UgTCdcXCc6CisgICAgICAqb3MgPDwgIlxcXFwiOworICAg
ICAgYnJlYWs7CisgICAgY2FzZSBMJ1xhJzoKKyAgICAgICpvcyA8PCAiXFxhIjsKKyAgICAgIGJy
ZWFrOworICAgIGNhc2UgTCdcYic6CisgICAgICAqb3MgPDwgIlxcYiI7CisgICAgICBicmVhazsK
KyAgICBjYXNlIEwnXGYnOgorICAgICAgKm9zIDw8ICJcXGYiOworICAgICAgYnJlYWs7CisgICAg
Y2FzZSBMJ1xuJzoKKyAgICAgICpvcyA8PCAiXFxuIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2Ug
TCdccic6CisgICAgICAqb3MgPDwgIlxcciI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwnXHQn
OgorICAgICAgKm9zIDw8ICJcXHQiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1x2JzoKKyAg
ICAgICpvcyA8PCAiXFx2IjsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBpZiAo
SXNQcmludGFibGVBc2NpaShjKSkgeworICAgICAgICAqb3MgPDwgc3RhdGljX2Nhc3Q8Y2hhcj4o
Yyk7CisgICAgICAgIHJldHVybiBrQXNJczsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgICpvcyA8
PCAiXFx4IiArIFN0cmluZzo6Rm9ybWF0SGV4SW50KHN0YXRpY19jYXN0PFVuc2lnbmVkQ2hhcj4o
YykpOworICAgICAgICByZXR1cm4ga0hleEVzY2FwZTsKKyAgICAgIH0KKyAgfQorICByZXR1cm4g
a1NwZWNpYWxFc2NhcGU7Cit9CisKKy8vIFByaW50cyBhIHdjaGFyX3QgYyBhcyBpZiBpdCdzIHBh
cnQgb2YgYSBzdHJpbmcgbGl0ZXJhbCwgZXNjYXBpbmcgaXQgd2hlbgorLy8gbmVjZXNzYXJ5OyBy
ZXR1cm5zIGhvdyBjIHdhcyBmb3JtYXR0ZWQuCitzdGF0aWMgQ2hhckZvcm1hdCBQcmludEFzU3Ry
aW5nTGl0ZXJhbFRvKHdjaGFyX3QgYywgb3N0cmVhbSogb3MpIHsKKyAgc3dpdGNoIChjKSB7Cisg
ICAgY2FzZSBMJ1wnJzoKKyAgICAgICpvcyA8PCAiJyI7CisgICAgICByZXR1cm4ga0FzSXM7Cisg
ICAgY2FzZSBMJyInOgorICAgICAgKm9zIDw8ICJcXFwiIjsKKyAgICAgIHJldHVybiBrU3BlY2lh
bEVzY2FwZTsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIFByaW50QXNDaGFyTGl0ZXJhbFRv
PHdjaGFyX3Q+KGMsIG9zKTsKKyAgfQorfQorCisvLyBQcmludHMgYSBjaGFyIGMgYXMgaWYgaXQn
cyBwYXJ0IG9mIGEgc3RyaW5nIGxpdGVyYWwsIGVzY2FwaW5nIGl0IHdoZW4KKy8vIG5lY2Vzc2Fy
eTsgcmV0dXJucyBob3cgYyB3YXMgZm9ybWF0dGVkLgorc3RhdGljIENoYXJGb3JtYXQgUHJpbnRB
c1N0cmluZ0xpdGVyYWxUbyhjaGFyIGMsIG9zdHJlYW0qIG9zKSB7CisgIHJldHVybiBQcmludEFz
U3RyaW5nTGl0ZXJhbFRvKAorICAgICAgc3RhdGljX2Nhc3Q8d2NoYXJfdD4oc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oYykpLCBvcyk7Cit9CisKKy8vIFByaW50cyBhIHdpZGUgb3IgbmFycm93
IGNoYXJhY3RlciBjIGFuZCBpdHMgY29kZS4gICdcMCcgaXMgcHJpbnRlZAorLy8gYXMgIidcXDAn
Iiwgb3RoZXIgdW5wcmludGFibGUgY2hhcmFjdGVycyBhcmUgYWxzbyBwcm9wZXJseSBlc2NhcGVk
CisvLyB1c2luZyB0aGUgc3RhbmRhcmQgQysrIGVzY2FwZSBzZXF1ZW5jZS4gIFRoZSB0ZW1wbGF0
ZSBhcmd1bWVudAorLy8gVW5zaWduZWRDaGFyIGlzIHRoZSB1bnNpZ25lZCB2ZXJzaW9uIG9mIENo
YXIsIHdoaWNoIGlzIHRoZSB0eXBlIG9mIGMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVW5zaWduZWRD
aGFyLCB0eXBlbmFtZSBDaGFyPgordm9pZCBQcmludENoYXJBbmRDb2RlVG8oQ2hhciBjLCBvc3Ry
ZWFtKiBvcykgeworICAvLyBGaXJzdCwgcHJpbnQgYyBhcyBhIGxpdGVyYWwgaW4gdGhlIG1vc3Qg
cmVhZGFibGUgZm9ybSB3ZSBjYW4gZmluZC4KKyAgKm9zIDw8ICgoc2l6ZW9mKGMpID4gMSkgPyAi
TCciIDogIiciKTsKKyAgY29uc3QgQ2hhckZvcm1hdCBmb3JtYXQgPSBQcmludEFzQ2hhckxpdGVy
YWxUbzxVbnNpZ25lZENoYXI+KGMsIG9zKTsKKyAgKm9zIDw8ICInIjsKKworICAvLyBUbyBhaWQg
dXNlciBkZWJ1Z2dpbmcsIHdlIGFsc28gcHJpbnQgYydzIGNvZGUgaW4gZGVjaW1hbCwgdW5sZXNz
CisgIC8vIGl0J3MgMCAoaW4gd2hpY2ggY2FzZSBjIHdhcyBwcmludGVkIGFzICdcXDAnLCBtYWtp
bmcgdGhlIGNvZGUKKyAgLy8gb2J2aW91cykuCisgIGlmIChjID09IDApCisgICAgcmV0dXJuOwor
ICAqb3MgPDwgIiAoIiA8PCBzdGF0aWNfY2FzdDxpbnQ+KGMpOworCisgIC8vIEZvciBtb3JlIGNv
bnZlbmllbmNlLCB3ZSBwcmludCBjJ3MgY29kZSBhZ2FpbiBpbiBoZXhpZGVjaW1hbCwKKyAgLy8g
dW5sZXNzIGMgd2FzIGFscmVhZHkgcHJpbnRlZCBpbiB0aGUgZm9ybSAnXHgjIycgb3IgdGhlIGNv
ZGUgaXMgaW4KKyAgLy8gWzEsIDldLgorICBpZiAoZm9ybWF0ID09IGtIZXhFc2NhcGUgfHwgKDEg
PD0gYyAmJiBjIDw9IDkpKSB7CisgICAgLy8gRG8gbm90aGluZy4KKyAgfSBlbHNlIHsKKyAgICAq
b3MgPDwgIiwgMHgiIDw8IFN0cmluZzo6Rm9ybWF0SGV4SW50KHN0YXRpY19jYXN0PFVuc2lnbmVk
Q2hhcj4oYykpOworICB9CisgICpvcyA8PCAiKSI7Cit9CisKK3ZvaWQgUHJpbnRUbyh1bnNpZ25l
ZCBjaGFyIGMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludENoYXJBbmRDb2RlVG88dW5z
aWduZWQgY2hhcj4oYywgb3MpOworfQordm9pZCBQcmludFRvKHNpZ25lZCBjaGFyIGMsIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgeworICBQcmludENoYXJBbmRDb2RlVG88dW5zaWduZWQgY2hhcj4oYywg
b3MpOworfQorCisvLyBQcmludHMgYSB3Y2hhcl90IGFzIGEgc3ltYm9sIGlmIGl0IGlzIHByaW50
YWJsZSBvciBhcyBpdHMgaW50ZXJuYWwKKy8vIGNvZGUgb3RoZXJ3aXNlIGFuZCBhbHNvIGFzIGl0
cyBjb2RlLiAgTCdcMCcgaXMgcHJpbnRlZCBhcyAiTCdcXDAnIi4KK3ZvaWQgUHJpbnRUbyh3Y2hh
cl90IHdjLCBvc3RyZWFtKiBvcykgeworICBQcmludENoYXJBbmRDb2RlVG88d2NoYXJfdD4od2Ms
IG9zKTsKK30KKworLy8gUHJpbnRzIHRoZSBnaXZlbiBhcnJheSBvZiBjaGFyYWN0ZXJzIHRvIHRo
ZSBvc3RyZWFtLiAgQ2hhclR5cGUgbXVzdCBiZSBlaXRoZXIKKy8vIGNoYXIgb3Igd2NoYXJfdC4K
Ky8vIFRoZSBhcnJheSBzdGFydHMgYXQgYmVnaW4sIHRoZSBsZW5ndGggaXMgbGVuLCBpdCBtYXkg
aW5jbHVkZSAnXDAnIGNoYXJhY3RlcnMKKy8vIGFuZCBtYXkgbm90IGJlIE5VTC10ZXJtaW5hdGVk
LgordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorR1RFU1RfQVRUUklCVVRFX05PX1NBTklU
SVpFX01FTU9SWV8KK0dURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTXworR1RFU1Rf
QVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KK3N0YXRpYyB2b2lkIFByaW50Q2hhcnNBc1N0
cmluZ1RvKAorICAgIGNvbnN0IENoYXJUeXBlKiBiZWdpbiwgc2l6ZV90IGxlbiwgb3N0cmVhbSog
b3MpIHsKKyAgY29uc3QgY2hhciogY29uc3Qga1F1b3RlQmVnaW4gPSBzaXplb2YoQ2hhclR5cGUp
ID09IDEgPyAiXCIiIDogIkxcIiI7CisgICpvcyA8PCBrUXVvdGVCZWdpbjsKKyAgYm9vbCBpc19w
cmV2aW91c19oZXggPSBmYWxzZTsKKyAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGxl
bjsgKytpbmRleCkgeworICAgIGNvbnN0IENoYXJUeXBlIGN1ciA9IGJlZ2luW2luZGV4XTsKKyAg
ICBpZiAoaXNfcHJldmlvdXNfaGV4ICYmIElzWERpZ2l0KGN1cikpIHsKKyAgICAgIC8vIFByZXZp
b3VzIGNoYXJhY3RlciBpcyBvZiAnXHguLicgZm9ybSBhbmQgdGhpcyBjaGFyYWN0ZXIgY2FuIGJl
CisgICAgICAvLyBpbnRlcnByZXRlZCBhcyBhbm90aGVyIGhleGFkZWNpbWFsIGRpZ2l0IGluIGl0
cyBudW1iZXIuIEJyZWFrIHN0cmluZyB0bworICAgICAgLy8gZGlzYW1iaWd1YXRlLgorICAgICAg
Km9zIDw8ICJcIiAiIDw8IGtRdW90ZUJlZ2luOworICAgIH0KKyAgICBpc19wcmV2aW91c19oZXgg
PSBQcmludEFzU3RyaW5nTGl0ZXJhbFRvKGN1ciwgb3MpID09IGtIZXhFc2NhcGU7CisgIH0KKyAg
Km9zIDw8ICJcIiI7Cit9CisKKy8vIFByaW50cyBhIChjb25zdCkgY2hhci93Y2hhcl90IGFycmF5
IG9mICdsZW4nIGVsZW1lbnRzLCBzdGFydGluZyBhdCBhZGRyZXNzCisvLyAnYmVnaW4nLiAgQ2hh
clR5cGUgbXVzdCBiZSBlaXRoZXIgY2hhciBvciB3Y2hhcl90LgordGVtcGxhdGUgPHR5cGVuYW1l
IENoYXJUeXBlPgorR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8KK0dURVNUX0FU
VFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpF
X1RIUkVBRF8KK3N0YXRpYyB2b2lkIFVuaXZlcnNhbFByaW50Q2hhckFycmF5KAorICAgIGNvbnN0
IENoYXJUeXBlKiBiZWdpbiwgc2l6ZV90IGxlbiwgb3N0cmVhbSogb3MpIHsKKyAgLy8gVGhlIGNv
ZGUKKyAgLy8gICBjb25zdCBjaGFyIGtGb29bXSA9ICJmb28iOworICAvLyBnZW5lcmF0ZXMgYW4g
YXJyYXkgb2YgNCwgbm90IDMsIGVsZW1lbnRzLCB3aXRoIHRoZSBsYXN0IG9uZSBiZWluZyAnXDAn
LgorICAvLworICAvLyBUaGVyZWZvcmUgd2hlbiBwcmludGluZyBhIGNoYXIgYXJyYXksIHdlIGRv
bid0IHByaW50IHRoZSBsYXN0IGVsZW1lbnQgaWYKKyAgLy8gaXQncyAnXDAnLCBzdWNoIHRoYXQg
dGhlIG91dHB1dCBtYXRjaGVzIHRoZSBzdHJpbmcgbGl0ZXJhbCBhcyBpdCdzCisgIC8vIHdyaXR0
ZW4gaW4gdGhlIHNvdXJjZSBjb2RlLgorICBpZiAobGVuID4gMCAmJiBiZWdpbltsZW4gLSAxXSA9
PSAnXDAnKSB7CisgICAgUHJpbnRDaGFyc0FzU3RyaW5nVG8oYmVnaW4sIGxlbiAtIDEsIG9zKTsK
KyAgICByZXR1cm47CisgIH0KKworICAvLyBJZiwgaG93ZXZlciwgdGhlIGxhc3QgZWxlbWVudCBp
biB0aGUgYXJyYXkgaXMgbm90ICdcMCcsIGUuZy4KKyAgLy8gICAgY29uc3QgY2hhciBrRm9vW10g
PSB7ICdmJywgJ28nLCAnbycgfTsKKyAgLy8gd2UgbXVzdCBwcmludCB0aGUgZW50aXJlIGFycmF5
LiAgV2UgYWxzbyBwcmludCBhIG1lc3NhZ2UgdG8gaW5kaWNhdGUKKyAgLy8gdGhhdCB0aGUgYXJy
YXkgaXMgbm90IE5VTC10ZXJtaW5hdGVkLgorICBQcmludENoYXJzQXNTdHJpbmdUbyhiZWdpbiwg
bGVuLCBvcyk7CisgICpvcyA8PCAiIChubyB0ZXJtaW5hdGluZyBOVUwpIjsKK30KKworLy8gUHJp
bnRzIGEgKGNvbnN0KSBjaGFyIGFycmF5IG9mICdsZW4nIGVsZW1lbnRzLCBzdGFydGluZyBhdCBh
ZGRyZXNzICdiZWdpbicuCit2b2lkIFVuaXZlcnNhbFByaW50QXJyYXkoY29uc3QgY2hhciogYmVn
aW4sIHNpemVfdCBsZW4sIG9zdHJlYW0qIG9zKSB7CisgIFVuaXZlcnNhbFByaW50Q2hhckFycmF5
KGJlZ2luLCBsZW4sIG9zKTsKK30KKworLy8gUHJpbnRzIGEgKGNvbnN0KSB3Y2hhcl90IGFycmF5
IG9mICdsZW4nIGVsZW1lbnRzLCBzdGFydGluZyBhdCBhZGRyZXNzCisvLyAnYmVnaW4nLgordm9p
ZCBVbml2ZXJzYWxQcmludEFycmF5KGNvbnN0IHdjaGFyX3QqIGJlZ2luLCBzaXplX3QgbGVuLCBv
c3RyZWFtKiBvcykgeworICBVbml2ZXJzYWxQcmludENoYXJBcnJheShiZWdpbiwgbGVuLCBvcyk7
Cit9CisKKy8vIFByaW50cyB0aGUgZ2l2ZW4gQyBzdHJpbmcgdG8gdGhlIG9zdHJlYW0uCit2b2lk
IFByaW50VG8oY29uc3QgY2hhciogcywgb3N0cmVhbSogb3MpIHsKKyAgaWYgKHMgPT0gTlVMTCkg
eworICAgICpvcyA8PCAiTlVMTCI7CisgIH0gZWxzZSB7CisgICAgKm9zIDw8IEltcGxpY2l0Q2Fz
dF88Y29uc3Qgdm9pZCo+KHMpIDw8ICIgcG9pbnRpbmcgdG8gIjsKKyAgICBQcmludENoYXJzQXNT
dHJpbmdUbyhzLCBzdHJsZW4ocyksIG9zKTsKKyAgfQorfQorCisvLyBNU1ZDIGNvbXBpbGVyIGNh
biBiZSBjb25maWd1cmVkIHRvIGRlZmluZSB3aGFyX3QgYXMgYSB0eXBlZGVmCisvLyBvZiB1bnNp
Z25lZCBzaG9ydC4gRGVmaW5pbmcgYW4gb3ZlcmxvYWQgZm9yIGNvbnN0IHdjaGFyX3QqIGluIHRo
YXQgY2FzZQorLy8gd291bGQgY2F1c2UgcG9pbnRlcnMgdG8gdW5zaWduZWQgc2hvcnRzIGJlIHBy
aW50ZWQgYXMgd2lkZSBzdHJpbmdzLAorLy8gcG9zc2libHkgYWNjZXNzaW5nIG1vcmUgbWVtb3J5
IHRoYW4gaW50ZW5kZWQgYW5kIGNhdXNpbmcgaW52YWxpZAorLy8gbWVtb3J5IGFjY2Vzc2VzLiBN
U1ZDIGRlZmluZXMgX05BVElWRV9XQ0hBUl9UX0RFRklORUQgc3ltYm9sIHdoZW4KKy8vIHdjaGFy
X3QgaXMgaW1wbGVtZW50ZWQgYXMgYSBuYXRpdmUgdHlwZS4KKyNpZiAhZGVmaW5lZChfTVNDX1ZF
UikgfHwgZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkKKy8vIFByaW50cyB0aGUgZ2l2
ZW4gd2lkZSBDIHN0cmluZyB0byB0aGUgb3N0cmVhbS4KK3ZvaWQgUHJpbnRUbyhjb25zdCB3Y2hh
cl90KiBzLCBvc3RyZWFtKiBvcykgeworICBpZiAocyA9PSBOVUxMKSB7CisgICAgKm9zIDw8ICJO
VUxMIjsKKyAgfSBlbHNlIHsKKyAgICAqb3MgPDwgSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4o
cykgPDwgIiBwb2ludGluZyB0byAiOworICAgIFByaW50Q2hhcnNBc1N0cmluZ1RvKHMsIHN0ZDo6
d2NzbGVuKHMpLCBvcyk7CisgIH0KK30KKyNlbmRpZiAgLy8gd2NoYXJfdCBpcyBuYXRpdmUKKwor
Ly8gUHJpbnRzIGEgOjpzdHJpbmcgb2JqZWN0LgorI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5H
Cit2b2lkIFByaW50U3RyaW5nVG8oY29uc3QgOjpzdHJpbmcmIHMsIG9zdHJlYW0qIG9zKSB7Cisg
IFByaW50Q2hhcnNBc1N0cmluZ1RvKHMuZGF0YSgpLCBzLnNpemUoKSwgb3MpOworfQorI2VuZGlm
ICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCit2b2lkIFByaW50U3RyaW5nVG8oY29uc3Qg
OjpzdGQ6OnN0cmluZyYgcywgb3N0cmVhbSogb3MpIHsKKyAgUHJpbnRDaGFyc0FzU3RyaW5nVG8o
cy5kYXRhKCksIHMuc2l6ZSgpLCBvcyk7Cit9CisKKy8vIFByaW50cyBhIDo6d3N0cmluZyBvYmpl
Y3QuCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCit2b2lkIFByaW50V2lkZVN0cmluZ1Rv
KGNvbnN0IDo6d3N0cmluZyYgcywgb3N0cmVhbSogb3MpIHsKKyAgUHJpbnRDaGFyc0FzU3RyaW5n
VG8ocy5kYXRhKCksIHMuc2l6ZSgpLCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9C
QUxfV1NUUklORworCisjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCit2b2lkIFByaW50V2lkZVN0
cmluZ1RvKGNvbnN0IDo6c3RkOjp3c3RyaW5nJiBzLCBvc3RyZWFtKiBvcykgeworICBQcmludENo
YXJzQXNTdHJpbmdUbyhzLmRhdGEoKSwgcy5zaXplKCksIG9zKTsKK30KKyNlbmRpZiAgLy8gR1RF
U1RfSEFTX1NURF9XU1RSSU5HCisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCit9ICAvLyBu
YW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3Jj
L2d0ZXN0LXRlc3QtcGFydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10
ZXN0LXBhcnQuY2MKaW5kZXggNWQxODNhNDQ2ZjI5NGNlOWUxYTg1ODdjOGI5MTIwYTliZWM4ODdk
ZC4uZmIwZTM1NDI1ZTFlNmY3MTc5ZDAyYjkzOTQ1YmRlZTQzMWIyNWU0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXRlc3QtcGFydC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjCkBAIC0zMSwxMyArMzEs
MTMgQEAKIC8vCiAvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRl
c3QpCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC10ZXN0LXBhcnQuaD4KKyNpbmNsdWRlICJndGVz
dC9ndGVzdC10ZXN0LXBhcnQuaCIKIAogLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlv
biB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwogLy8gaW1wbGVtZW50YXRpb24uICBJdCBt
dXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3Ig
dGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJl
dmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlu
bC5oIGluCi0vLyBoaXMgY29kZS4KKy8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29t
cGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGV4aXN0cyB0bworLy8gcHJldmVudCB0aGUgYWNjaWRl
bnRhbCBpbmNsdXNpb24gb2YgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4gdGhlCisvLyB1c2VyJ3Mg
Y29kZS4KICNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKICNpbmNsdWRlICJzcmMvZ3Rl
c3QtaW50ZXJuYWwtaW5sLmgiCiAjdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCkBAIC00OCwx
MCArNDgsMTAgQEAgdXNpbmcgaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbDsKIAogLy8gR2V0cyB0
aGUgc3VtbWFyeSBvZiB0aGUgZmFpbHVyZSBtZXNzYWdlIGJ5IG9taXR0aW5nIHRoZSBzdGFjayB0
cmFjZQogLy8gaW4gaXQuCi1pbnRlcm5hbDo6U3RyaW5nIFRlc3RQYXJ0UmVzdWx0OjpFeHRyYWN0
U3VtbWFyeShjb25zdCBjaGFyKiBtZXNzYWdlKSB7CitzdGQ6OnN0cmluZyBUZXN0UGFydFJlc3Vs
dDo6RXh0cmFjdFN1bW1hcnkoY29uc3QgY2hhciogbWVzc2FnZSkgewogICBjb25zdCBjaGFyKiBj
b25zdCBzdGFja190cmFjZSA9IHN0cnN0cihtZXNzYWdlLCBpbnRlcm5hbDo6a1N0YWNrVHJhY2VN
YXJrZXIpOwotICByZXR1cm4gc3RhY2tfdHJhY2UgPT0gTlVMTCA/IGludGVybmFsOjpTdHJpbmco
bWVzc2FnZSkgOgotICAgICAgaW50ZXJuYWw6OlN0cmluZyhtZXNzYWdlLCBzdGFja190cmFjZSAt
IG1lc3NhZ2UpOworICByZXR1cm4gc3RhY2tfdHJhY2UgPT0gTlVMTCA/IG1lc3NhZ2UgOgorICAg
ICAgc3RkOjpzdHJpbmcobWVzc2FnZSwgc3RhY2tfdHJhY2UpOwogfQogCiAvLyBQcmludHMgYSBU
ZXN0UGFydFJlc3VsdCBvYmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zcmMvZ3Rlc3QtdHlwZWQtdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9n
dGVzdC10eXBlZC10ZXN0LmNjCmluZGV4IDNjYzRiNWRlMmFhY2I3NTk4OTExOWM1Zjk2YzdmNGY4
MGVhZDVjYWUuLmRmMWVlZjQ3NTRlZmViNmJjMDY2MjM5YjFjY2MzYmZlZWI4OTYzMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10eXBlZC10ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10eXBlZC10ZXN0LmNjCkBAIC0y
OSw4ICsyOSw4IEBACiAvLwogLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oIgorI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5h
bCB7CkBAIC00MCwzOCArNDAsNDYgQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIC8vIFNraXBzIHRv
IHRoZSBmaXJzdCBub24tc3BhY2UgY2hhciBpbiBzdHIuIFJldHVybnMgYW4gZW1wdHkgc3RyaW5n
IGlmIHN0cgogLy8gY29udGFpbnMgb25seSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMuCiBzdGF0aWMg
Y29uc3QgY2hhciogU2tpcFNwYWNlcyhjb25zdCBjaGFyKiBzdHIpIHsKLSAgd2hpbGUgKGlzc3Bh
Y2UoKnN0cikpCisgIHdoaWxlIChJc1NwYWNlKCpzdHIpKQogICAgIHN0cisrOwogICByZXR1cm4g
c3RyOwogfQogCitzdGF0aWMgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IFNwbGl0SW50b1Rlc3RO
YW1lcyhjb25zdCBjaGFyKiBzcmMpIHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG5hbWVf
dmVjOworICBzcmMgPSBTa2lwU3BhY2VzKHNyYyk7CisgIGZvciAoOyBzcmMgIT0gTlVMTDsgc3Jj
ID0gU2tpcENvbW1hKHNyYykpIHsKKyAgICBuYW1lX3ZlYy5wdXNoX2JhY2soU3RyaXBUcmFpbGlu
Z1NwYWNlcyhHZXRQcmVmaXhVbnRpbENvbW1hKHNyYykpKTsKKyAgfQorICByZXR1cm4gbmFtZV92
ZWM7Cit9CisKIC8vIFZlcmlmaWVzIHRoYXQgcmVnaXN0ZXJlZF90ZXN0cyBtYXRjaCB0aGUgdGVz
dCBuYW1lcyBpbgotLy8gZGVmaW5lZF90ZXN0X25hbWVzXzsgcmV0dXJucyByZWdpc3RlcmVkX3Rl
c3RzIGlmIHN1Y2Nlc3NmdWwsIG9yCisvLyByZWdpc3RlcmVkX3Rlc3RzXzsgcmV0dXJucyByZWdp
c3RlcmVkX3Rlc3RzIGlmIHN1Y2Nlc3NmdWwsIG9yCiAvLyBhYm9ydHMgdGhlIHByb2dyYW0gb3Ro
ZXJ3aXNlLgogY29uc3QgY2hhciogVHlwZWRUZXN0Q2FzZVBTdGF0ZTo6VmVyaWZ5UmVnaXN0ZXJl
ZFRlc3ROYW1lcygKICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciog
cmVnaXN0ZXJlZF90ZXN0cykgewotICB0eXBlZGVmIDo6c3RkOjpzZXQ8Y29uc3QgY2hhcio+Ojpj
b25zdF9pdGVyYXRvciBEZWZpbmVkVGVzdEl0ZXI7CisgIHR5cGVkZWYgUmVnaXN0ZXJlZFRlc3Rz
TWFwOjpjb25zdF9pdGVyYXRvciBSZWdpc3RlcmVkVGVzdEl0ZXI7CiAgIHJlZ2lzdGVyZWRfID0g
dHJ1ZTsKIAotICAvLyBTa2lwIGluaXRpYWwgd2hpdGVzcGFjZSBpbiByZWdpc3RlcmVkX3Rlc3Rz
IHNpbmNlIHNvbWUKLSAgLy8gcHJlcHJvY2Vzc29ycyBwcmVmaXggc3RyaW5naXppZWQgbGl0ZXJh
bHMgd2l0aCB3aGl0ZXNwYWNlLgotICByZWdpc3RlcmVkX3Rlc3RzID0gU2tpcFNwYWNlcyhyZWdp
c3RlcmVkX3Rlc3RzKTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG5hbWVfdmVjID0gU3Bs
aXRJbnRvVGVzdE5hbWVzKHJlZ2lzdGVyZWRfdGVzdHMpOwogCiAgIE1lc3NhZ2UgZXJyb3JzOwot
ICA6OnN0ZDo6c2V0PFN0cmluZz4gdGVzdHM7Ci0gIGZvciAoY29uc3QgY2hhciogbmFtZXMgPSBy
ZWdpc3RlcmVkX3Rlc3RzOyBuYW1lcyAhPSBOVUxMOwotICAgICAgIG5hbWVzID0gU2tpcENvbW1h
KG5hbWVzKSkgewotICAgIGNvbnN0IFN0cmluZyBuYW1lID0gR2V0UHJlZml4VW50aWxDb21tYShu
YW1lcyk7CisKKyAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IHRlc3RzOworICBmb3IgKHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgbmFtZV9pdCA9IG5hbWVfdmVjLmJlZ2lu
KCk7CisgICAgICAgbmFtZV9pdCAhPSBuYW1lX3ZlYy5lbmQoKTsgKytuYW1lX2l0KSB7CisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUgPSAqbmFtZV9pdDsKICAgICBpZiAodGVzdHMuY291bnQo
bmFtZSkgIT0gMCkgewogICAgICAgZXJyb3JzIDw8ICJUZXN0ICIgPDwgbmFtZSA8PCAiIGlzIGxp
c3RlZCBtb3JlIHRoYW4gb25jZS5cbiI7CiAgICAgICBjb250aW51ZTsKICAgICB9CiAKICAgICBi
b29sIGZvdW5kID0gZmFsc2U7Ci0gICAgZm9yIChEZWZpbmVkVGVzdEl0ZXIgaXQgPSBkZWZpbmVk
X3Rlc3RfbmFtZXNfLmJlZ2luKCk7Ci0gICAgICAgICBpdCAhPSBkZWZpbmVkX3Rlc3RfbmFtZXNf
LmVuZCgpOworICAgIGZvciAoUmVnaXN0ZXJlZFRlc3RJdGVyIGl0ID0gcmVnaXN0ZXJlZF90ZXN0
c18uYmVnaW4oKTsKKyAgICAgICAgIGl0ICE9IHJlZ2lzdGVyZWRfdGVzdHNfLmVuZCgpOwogICAg
ICAgICAgKytpdCkgewotICAgICAgaWYgKG5hbWUgPT0gKml0KSB7CisgICAgICBpZiAobmFtZSA9
PSBpdC0+Zmlyc3QpIHsKICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICBicmVhazsKICAg
ICAgIH0KQEAgLTg1LDE1ICs5MywxNSBAQCBjb25zdCBjaGFyKiBUeXBlZFRlc3RDYXNlUFN0YXRl
OjpWZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVzKAogICAgIH0KICAgfQogCi0gIGZvciAoRGVmaW5l
ZFRlc3RJdGVyIGl0ID0gZGVmaW5lZF90ZXN0X25hbWVzXy5iZWdpbigpOwotICAgICAgIGl0ICE9
IGRlZmluZWRfdGVzdF9uYW1lc18uZW5kKCk7CisgIGZvciAoUmVnaXN0ZXJlZFRlc3RJdGVyIGl0
ID0gcmVnaXN0ZXJlZF90ZXN0c18uYmVnaW4oKTsKKyAgICAgICBpdCAhPSByZWdpc3RlcmVkX3Rl
c3RzXy5lbmQoKTsKICAgICAgICArK2l0KSB7Ci0gICAgaWYgKHRlc3RzLmNvdW50KCppdCkgPT0g
MCkgewotICAgICAgZXJyb3JzIDw8ICJZb3UgZm9yZ290IHRvIGxpc3QgdGVzdCAiIDw8ICppdCA8
PCAiLlxuIjsKKyAgICBpZiAodGVzdHMuY291bnQoaXQtPmZpcnN0KSA9PSAwKSB7CisgICAgICBl
cnJvcnMgPDwgIllvdSBmb3Jnb3QgdG8gbGlzdCB0ZXN0ICIgPDwgaXQtPmZpcnN0IDw8ICIuXG4i
OwogICAgIH0KICAgfQogCi0gIGNvbnN0IFN0cmluZyYgZXJyb3JzX3N0ciA9IGVycm9ycy5HZXRT
dHJpbmcoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIGVycm9yc19zdHIgPSBlcnJvcnMuR2V0U3Ry
aW5nKCk7CiAgIGlmIChlcnJvcnNfc3RyICE9ICIiKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICIl
cyAlcyIsIEZvcm1hdEZpbGVMb2NhdGlvbihmaWxlLCBsaW5lKS5jX3N0cigpLAogICAgICAgICAg
ICAgZXJyb3JzX3N0ci5jX3N0cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NyYy9ndGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC5jYwpp
bmRleCA1Yjg3MWMwYWRiMGExYzRjZmEyMzc1NTQwNTdkNTE2MDg0NjE5NTBlLi5kODgyYWIyZTM2
YTEyOTk1MjgwMTNmZTU4NTQzOGJhZjZmZTc3MmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zcmMvZ3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3Jj
L2d0ZXN0LmNjCkBAIC0zMSwxOSArMzEsMjUgQEAKIC8vCiAvLyBUaGUgR29vZ2xlIEMrKyBUZXN0
aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisj
aW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3Qtc3BpLmgiCiAKICNpbmNsdWRlIDxjdHlwZS5oPgogI2luY2x1ZGUgPG1hdGguaD4KICNp
bmNsdWRlIDxzdGRhcmcuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5o
PgorI2luY2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDx3Y2hhci5oPgogI2luY2x1ZGUgPHdjdHlw
ZS5oPgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPG9zdHJlYW0+CisjaW5jbHVk
ZSA8aW9tYW5pcD4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bGlzdD4KKyNpbmNsdWRl
IDxtYXA+CisjaW5jbHVkZSA8b3N0cmVhbT4gIC8vIE5PTElOVAogI2luY2x1ZGUgPHNzdHJlYW0+
CiAjaW5jbHVkZSA8dmVjdG9yPgogCkBAIC01MSw3MiArNTcsODAgQEAKIAogLy8gVE9ETyhrZW50
b25AZ29vZ2xlLmNvbSk6IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZhaWxhYmlsaXR5IG9mCiAv
LyBnZXR0aW1lb2ZkYXkoKS4KLSNkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQorIyBk
ZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQogCi0jaW5jbHVkZSA8ZmNudGwuaD4KLSNp
bmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxzY2hlZC5oPgorIyBpbmNsdWRlIDxmY250bC5o
PiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPGxpbWl0cy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUg
PHNjaGVkLmg+ICAvLyBOT0xJTlQKIC8vIERlY2xhcmVzIHZzbnByaW50ZigpLiAgVGhpcyBoZWFk
ZXIgaXMgbm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgotI2luY2x1ZGUgPHN0cmluZ3MuaD4KLSNp
bmNsdWRlIDxzeXMvbW1hbi5oPgotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0jaW5jbHVkZSA8dW5p
c3RkLmg+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KKyMgaW5jbHVkZSA8
c3RyaW5ncy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy9tbWFuLmg+ICAvLyBOT0xJTlQK
KyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDx1bmlzdGQuaD4g
IC8vIE5PTElOVAorIyBpbmNsdWRlIDxzdHJpbmc+CiAKICNlbGlmIEdURVNUX09TX1NZTUJJQU4K
LSNkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQotI2luY2x1ZGUgPHN5cy90aW1lLmg+
ICAvLyBOT0xJTlQKKyMgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKKyMgaW5jbHVk
ZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAogCiAjZWxpZiBHVEVTVF9PU19aT1MKLSNkZWZpbmUg
R1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQotI2luY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJ
TlQKKyMgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKKyMgaW5jbHVkZSA8c3lzL3Rp
bWUuaD4gIC8vIE5PTElOVAogCiAvLyBPbiB6L09TIHdlIGFkZGl0aW9uYWxseSBuZWVkIHN0cmlu
Z3MuaCBmb3Igc3RyY2FzZWNtcC4KLSNpbmNsdWRlIDxzdHJpbmdzLmg+ICAvLyBOT0xJTlQKKyMg
aW5jbHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5UCiAKICNlbGlmIEdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFICAvLyBXZSBhcmUgb24gV2luZG93cyBDRS4KIAotI2luY2x1ZGUgPHdpbmRvd3MuaD4g
IC8vIE5PTElOVAorIyBpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBOT0xJTlQKKyMgdW5kZWYgbWlu
CiAKICNlbGlmIEdURVNUX09TX1dJTkRPV1MgIC8vIFdlIGFyZSBvbiBXaW5kb3dzIHByb3Blci4K
IAotI2luY2x1ZGUgPGlvLmg+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDxzeXMvdGltZWIuaD4gIC8v
IE5PTElOVAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8c3lz
L3N0YXQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxpby5oPiAgLy8gTk9MSU5UCisjIGluY2x1
ZGUgPHN5cy90aW1lYi5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy90eXBlcy5oPiAgLy8g
Tk9MSU5UCisjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+ICAvLyBOT0xJTlQKIAotI2lmIEdURVNUX09T
X1dJTkRPV1NfTUlOR1cKKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NSU5HVwogLy8gTWluR1cgaGFz
IGdldHRpbWVvZmRheSgpIGJ1dCBub3QgX2Z0aW1lNjQoKS4KIC8vIFRPRE8oa2VudG9uQGdvb2ds
ZS5jb20pOiBVc2UgYXV0b2NvbmYgdG8gZGV0ZWN0IGF2YWlsYWJpbGl0eSBvZgogLy8gICBnZXR0
aW1lb2ZkYXkoKS4KIC8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBUaGVyZSBhcmUgb3RoZXIg
d2F5cyB0byBnZXQgdGhlIHRpbWUgb24KIC8vICAgV2luZG93cywgbGlrZSBHZXRUaWNrQ291bnQo
KSBvciBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgpLiAgTWluR1cKIC8vICAgc3VwcG9ydHMgdGhl
c2UuICBjb25zaWRlciB1c2luZyB0aGVtIGluc3RlYWQuCi0jZGVmaW5lIEdURVNUX0hBU19HRVRU
SU1FT0ZEQVlfIDEKLSNpbmNsdWRlIDxzeXMvdGltZS5oPiAgLy8gTk9MSU5UCi0jZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1NfTUlOR1cKKyMgIGRlZmluZSBHVEVTVF9IQVNfR0VUVElNRU9GREFZ
XyAxCisjICBpbmNsdWRlIDxzeXMvdGltZS5oPiAgLy8gTk9MSU5UCisjIGVuZGlmICAvLyBHVEVT
VF9PU19XSU5ET1dTX01JTkdXCiAKIC8vIGNwcGxpbnQgdGhpbmtzIHRoYXQgdGhlIGhlYWRlciBp
cyBhbHJlYWR5IGluY2x1ZGVkLCBzbyB3ZSB3YW50IHRvCiAvLyBzaWxlbmNlIGl0LgotI2luY2x1
ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBOT0xJ
TlQKKyMgdW5kZWYgbWluCiAKICNlbHNlCiAKIC8vIEFzc3VtZSBvdGhlciBwbGF0Zm9ybXMgaGF2
ZSBnZXR0aW1lb2ZkYXkoKS4KIC8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBVc2UgYXV0b2Nv
bmYgdG8gZGV0ZWN0IGF2YWlsYWJpbGl0eSBvZgogLy8gICBnZXR0aW1lb2ZkYXkoKS4KLSNkZWZp
bmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVP
RkRBWV8gMQogCiAvLyBjcHBsaW50IHRoaW5rcyB0aGF0IHRoZSBoZWFkZXIgaXMgYWxyZWFkeSBp
bmNsdWRlZCwgc28gd2Ugd2FudCB0bwogLy8gc2lsZW5jZSBpdC4KLSNpbmNsdWRlIDxzeXMvdGlt
ZS5oPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8dW5pc3RkLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVk
ZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDx1bmlzdGQuaD4gIC8vIE5PTElO
VAogCiAjZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCiAKICNpZiBHVEVTVF9IQVNfRVhDRVBUSU9O
UwotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KKyMgaW5jbHVkZSA8c3RkZXhjZXB0PgorI2VuZGlmCisK
KyNpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisjIGluY2x1ZGUgPGFycGEvaW5ldC5oPiAg
Ly8gTk9MSU5UCisjIGluY2x1ZGUgPG5ldGRiLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3lz
L3NvY2tldC5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy90eXBlcy5oPiAgLy8gTk9MSU5U
CiAjZW5kaWYKIAogLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBh
cnQgb2YgR29vZ2xlIFRlc3QncwpAQCAtMTI5LDcgKzE0Myw3IEBACiAjdW5kZWYgR1RFU1RfSU1Q
TEVNRU5UQVRJT05fCiAKICNpZiBHVEVTVF9PU19XSU5ET1dTCi0jZGVmaW5lIHZzbnByaW50ZiBf
dnNucHJpbnRmCisjIGRlZmluZSB2c25wcmludGYgX3ZzbnByaW50ZgogI2VuZGlmICAvLyBHVEVT
VF9PU19XSU5ET1dTCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKQEAgLTE3NSw2ICsxODksMTYgQEAg
Ym9vbCBnX2hlbHBfZmxhZyA9IGZhbHNlOwogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAor
c3RhdGljIGNvbnN0IGNoYXIqIEdldERlZmF1bHRGaWx0ZXIoKSB7CisjaWZkZWYgR1RFU1RfVEVT
VF9GSUxURVJfRU5WX1ZBUl8KKyAgY29uc3QgY2hhciogY29uc3QgdGVzdGJyaWRnZV90ZXN0X29u
bHkgPSBnZXRlbnYoR1RFU1RfVEVTVF9GSUxURVJfRU5WX1ZBUl8pOworICBpZiAodGVzdGJyaWRn
ZV90ZXN0X29ubHkgIT0gTlVMTCkgeworICAgIHJldHVybiB0ZXN0YnJpZGdlX3Rlc3Rfb25seTsK
KyAgfQorI2VuZGlmICAvLyBHVEVTVF9URVNUX0ZJTFRFUl9FTlZfVkFSXworICByZXR1cm4ga1Vu
aXZlcnNhbEZpbHRlcjsKK30KKwogR1RFU1RfREVGSU5FX2Jvb2xfKAogICAgIGFsc29fcnVuX2Rp
c2FibGVkX3Rlc3RzLAogICAgIGludGVybmFsOjpCb29sRnJvbUdUZXN0RW52KCJhbHNvX3J1bl9k
aXNhYmxlZF90ZXN0cyIsIGZhbHNlKSwKQEAgLTE4Nyw3ICsyMTEsNyBAQCBHVEVTVF9ERUZJTkVf
Ym9vbF8oCiAKIEdURVNUX0RFRklORV9ib29sXygKICAgICBjYXRjaF9leGNlcHRpb25zLAotICAg
IGludGVybmFsOjpCb29sRnJvbUdUZXN0RW52KCJjYXRjaF9leGNlcHRpb25zIiwgZmFsc2UpLAor
ICAgIGludGVybmFsOjpCb29sRnJvbUdUZXN0RW52KCJjYXRjaF9leGNlcHRpb25zIiwgdHJ1ZSks
CiAgICAgIlRydWUgaWZmICIgR1RFU1RfTkFNRV8KICAgICAiIHNob3VsZCBjYXRjaCBleGNlcHRp
b25zIGFuZCB0cmVhdCB0aGVtIGFzIHRlc3QgZmFpbHVyZXMuIik7CiAKQEAgLTE5NywxMSArMjIx
LDExIEBAIEdURVNUX0RFRklORV9zdHJpbmdfKAogICAgICJXaGV0aGVyIHRvIHVzZSBjb2xvcnMg
aW4gdGhlIG91dHB1dC4gIFZhbGlkIHZhbHVlczogeWVzLCBubywgIgogICAgICJhbmQgYXV0by4g
ICdhdXRvJyBtZWFucyB0byB1c2UgY29sb3JzIGlmIHRoZSBvdXRwdXQgaXMgIgogICAgICJiZWlu
ZyBzZW50IHRvIGEgdGVybWluYWwgYW5kIHRoZSBURVJNIGVudmlyb25tZW50IHZhcmlhYmxlICIK
LSAgICAiaXMgc2V0IHRvIHh0ZXJtLCB4dGVybS1jb2xvciwgeHRlcm0tMjU2Y29sb3IsIGxpbnV4
IG9yIGN5Z3dpbi4iKTsKKyAgICAiaXMgc2V0IHRvIGEgdGVybWluYWwgdHlwZSB0aGF0IHN1cHBv
cnRzIGNvbG9ycy4iKTsKIAogR1RFU1RfREVGSU5FX3N0cmluZ18oCiAgICAgZmlsdGVyLAotICAg
IGludGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYoImZpbHRlciIsIGtVbml2ZXJzYWxGaWx0ZXIp
LAorICAgIGludGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYoImZpbHRlciIsIEdldERlZmF1bHRG
aWx0ZXIoKSksCiAgICAgIkEgY29sb24tc2VwYXJhdGVkIGxpc3Qgb2YgZ2xvYiAobm90IHJlZ2V4
KSBwYXR0ZXJucyAiCiAgICAgImZvciBmaWx0ZXJpbmcgdGhlIHRlc3RzIHRvIHJ1biwgb3B0aW9u
YWxseSBmb2xsb3dlZCBieSBhICIKICAgICAiJy0nIGFuZCBhIDogc2VwYXJhdGVkIGxpc3Qgb2Yg
bmVnYXRpdmUgcGF0dGVybnMgKHRlc3RzIHRvICIKQEAgLTI1OCw2ICsyODIsMTMgQEAgR1RFU1Rf
REVGSU5FX2ludDMyXygKICAgICAiVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0
byBwcmludCB3aGVuIGFuICIKICAgICAiYXNzZXJ0aW9uIGZhaWxzLiAgVGhlIHZhbGlkIHJhbmdl
IGlzIDAgdGhyb3VnaCAxMDAsIGluY2x1c2l2ZS4iKTsKIAorR1RFU1RfREVGSU5FX3N0cmluZ18o
CisgICAgc3RyZWFtX3Jlc3VsdF90bywKKyAgICBpbnRlcm5hbDo6U3RyaW5nRnJvbUdUZXN0RW52
KCJzdHJlYW1fcmVzdWx0X3RvIiwgIiIpLAorICAgICJUaGlzIGZsYWcgc3BlY2lmaWVzIHRoZSBo
b3N0IG5hbWUgYW5kIHRoZSBwb3J0IG51bWJlciBvbiB3aGljaCB0byBzdHJlYW0gIgorICAgICJ0
ZXN0IHJlc3VsdHMuIEV4YW1wbGU6IFwibG9jYWxob3N0OjU1NVwiLiBUaGUgZmxhZyBpcyBlZmZl
Y3RpdmUgb25seSBvbiAiCisgICAgIkxpbnV4LiIpOworCiBHVEVTVF9ERUZJTkVfYm9vbF8oCiAg
ICAgdGhyb3dfb25fZmFpbHVyZSwKICAgICBpbnRlcm5hbDo6Qm9vbEZyb21HVGVzdEVudigidGhy
b3dfb25fZmFpbHVyZSIsIGZhbHNlKSwKQEAgLTI2NSw2ICsyOTYsMTMgQEAgR1RFU1RfREVGSU5F
X2Jvb2xfKAogICAgICJpZiBleGNlcHRpb25zIGFyZSBlbmFibGVkIG9yIGV4aXQgdGhlIHByb2dy
YW0gd2l0aCBhIG5vbi16ZXJvIGNvZGUgIgogICAgICJvdGhlcndpc2UuIik7CiAKKyNpZiBHVEVT
VF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCitHVEVTVF9ERUZJTkVfc3RyaW5nXygKKyAgICBmbGFn
ZmlsZSwKKyAgICBpbnRlcm5hbDo6U3RyaW5nRnJvbUdUZXN0RW52KCJmbGFnZmlsZSIsICIiKSwK
KyAgICAiVGhpcyBmbGFnIHNwZWNpZmllcyB0aGUgZmxhZ2ZpbGUgdG8gcmVhZCBjb21tYW5kLWxp
bmUgZmxhZ3MgZnJvbS4iKTsKKyNlbmRpZiAgLy8gR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFH
XworCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCiAvLyBHZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVy
IGZyb20gWzAsIHJhbmdlKSwgdXNpbmcgYSBMaW5lYXIKQEAgLTI4OSwxMyArMzI3LDcgQEAgVUlu
dDMyIFJhbmRvbTo6R2VuZXJhdGUoVUludDMyIHJhbmdlKSB7CiAvLyBHVGVzdElzSW5pdGlhbGl6
ZWQoKSByZXR1cm5zIHRydWUgaWZmIHRoZSB1c2VyIGhhcyBpbml0aWFsaXplZAogLy8gR29vZ2xl
IFRlc3QuICBVc2VmdWwgZm9yIGNhdGNoaW5nIHRoZSB1c2VyIG1pc3Rha2Ugb2Ygbm90IGluaXRp
YWxpemluZwogLy8gR29vZ2xlIFRlc3QgYmVmb3JlIGNhbGxpbmcgUlVOX0FMTF9URVNUUygpLgot
Ly8KLS8vIEEgdXNlciBtdXN0IGNhbGwgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKSB0byBpbml0
aWFsaXplIEdvb2dsZQotLy8gVGVzdC4gIGdfaW5pdF9ndGVzdF9jb3VudCBpcyBzZXQgdG8gdGhl
IG51bWJlciBvZiB0aW1lcwotLy8gSW5pdEdvb2dsZVRlc3QoKSBoYXMgYmVlbiBjYWxsZWQuICBX
ZSBkb24ndCBwcm90ZWN0IHRoaXMgdmFyaWFibGUKLS8vIHVuZGVyIGEgbXV0ZXggYXMgaXQgaXMg
b25seSBhY2Nlc3NlZCBpbiB0aGUgbWFpbiB0aHJlYWQuCi1pbnQgZ19pbml0X2d0ZXN0X2NvdW50
ID0gMDsKLXN0YXRpYyBib29sIEdUZXN0SXNJbml0aWFsaXplZCgpIHsgcmV0dXJuIGdfaW5pdF9n
dGVzdF9jb3VudCAhPSAwOyB9CitzdGF0aWMgYm9vbCBHVGVzdElzSW5pdGlhbGl6ZWQoKSB7IHJl
dHVybiBHZXRBcmd2cygpLnNpemUoKSA+IDA7IH0KIAogLy8gSXRlcmF0ZXMgb3ZlciBhIHZlY3Rv
ciBvZiBUZXN0Q2FzZXMsIGtlZXBpbmcgYSBydW5uaW5nIHN1bSBvZiB0aGUKIC8vIHJlc3VsdHMg
b2YgY2FsbGluZyBhIGdpdmVuIGludC1yZXR1cm5pbmcgbWV0aG9kIG9uIGVhY2guCkBAIC0zNDks
MTAgKzM4MSwxOCBAQCB2b2lkIEFzc2VydEhlbHBlcjo6b3BlcmF0b3I9KGNvbnN0IE1lc3NhZ2Um
IG1lc3NhZ2UpIGNvbnN0IHsKIH0KIAogLy8gTXV0ZXggZm9yIGxpbmtlZCBwb2ludGVycy4KLUdU
RVNUX0RFRklORV9TVEFUSUNfTVVURVhfKGdfbGlua2VkX3B0cl9tdXRleCk7CitHVEVTVF9BUElf
IEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKGdfbGlua2VkX3B0cl9tdXRleCk7CiAKLS8vIEFw
cGxpY2F0aW9uIHBhdGhuYW1lIGdvdHRlbiBpbiBJbml0R29vZ2xlVGVzdC4KLVN0cmluZyBnX2V4
ZWN1dGFibGVfcGF0aDsKKy8vIEEgY29weSBvZiBhbGwgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4g
IFNldCBieSBJbml0R29vZ2xlVGVzdCgpLgorOjpzdGQ6OnZlY3Rvcjx0ZXN0aW5nOjppbnRlcm5h
bDo6c3RyaW5nPiBnX2FyZ3ZzOworCitjb25zdCA6OnN0ZDo6dmVjdG9yPHRlc3Rpbmc6OmludGVy
bmFsOjpzdHJpbmc+JiBHZXRBcmd2cygpIHsKKyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9HRVRf
QVJHVlNfKQorICByZXR1cm4gR1RFU1RfQ1VTVE9NX0dFVF9BUkdWU18oKTsKKyNlbHNlICAvLyBk
ZWZpbmVkKEdURVNUX0NVU1RPTV9HRVRfQVJHVlNfKQorICByZXR1cm4gZ19hcmd2czsKKyNlbmRp
ZiAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01fR0VUX0FSR1ZTXykKK30KIAogLy8gUmV0dXJucyB0
aGUgY3VycmVudCBhcHBsaWNhdGlvbidzIG5hbWUsIHJlbW92aW5nIGRpcmVjdG9yeSBwYXRoIGlm
IHRoYXQKIC8vIGlzIHByZXNlbnQuCkBAIC0zNjAsOSArNDAwLDkgQEAgRmlsZVBhdGggR2V0Q3Vy
cmVudEV4ZWN1dGFibGVOYW1lKCkgewogICBGaWxlUGF0aCByZXN1bHQ7CiAKICNpZiBHVEVTVF9P
U19XSU5ET1dTCi0gIHJlc3VsdC5TZXQoRmlsZVBhdGgoZ19leGVjdXRhYmxlX3BhdGgpLlJlbW92
ZUV4dGVuc2lvbigiZXhlIikpOworICByZXN1bHQuU2V0KEZpbGVQYXRoKEdldEFyZ3ZzKClbMF0p
LlJlbW92ZUV4dGVuc2lvbigiZXhlIikpOwogI2Vsc2UKLSAgcmVzdWx0LlNldChGaWxlUGF0aChn
X2V4ZWN1dGFibGVfcGF0aCkpOworICByZXN1bHQuU2V0KEZpbGVQYXRoKEdldEFyZ3ZzKClbMF0p
KTsKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCiAgIHJldHVybiByZXN1bHQuUmVtb3Zl
RGlyZWN0b3J5TmFtZSgpOwpAQCAtMzcxLDI5ICs0MTEsMjkgQEAgRmlsZVBhdGggR2V0Q3VycmVu
dEV4ZWN1dGFibGVOYW1lKCkgewogLy8gRnVuY3Rpb25zIGZvciBwcm9jZXNzaW5nIHRoZSBndGVz
dF9vdXRwdXQgZmxhZy4KIAogLy8gUmV0dXJucyB0aGUgb3V0cHV0IGZvcm1hdCwgb3IgIiIgZm9y
IG5vcm1hbCBwcmludGVkIG91dHB1dC4KLVN0cmluZyBVbml0VGVzdE9wdGlvbnM6OkdldE91dHB1
dEZvcm1hdCgpIHsKK3N0ZDo6c3RyaW5nIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0
KCkgewogICBjb25zdCBjaGFyKiBjb25zdCBndGVzdF9vdXRwdXRfZmxhZyA9IEdURVNUX0ZMQUco
b3V0cHV0KS5jX3N0cigpOwotICBpZiAoZ3Rlc3Rfb3V0cHV0X2ZsYWcgPT0gTlVMTCkgcmV0dXJu
IFN0cmluZygiIik7CisgIGlmIChndGVzdF9vdXRwdXRfZmxhZyA9PSBOVUxMKSByZXR1cm4gc3Rk
OjpzdHJpbmcoIiIpOwogCiAgIGNvbnN0IGNoYXIqIGNvbnN0IGNvbG9uID0gc3RyY2hyKGd0ZXN0
X291dHB1dF9mbGFnLCAnOicpOwogICByZXR1cm4gKGNvbG9uID09IE5VTEwpID8KLSAgICAgIFN0
cmluZyhndGVzdF9vdXRwdXRfZmxhZykgOgotICAgICAgU3RyaW5nKGd0ZXN0X291dHB1dF9mbGFn
LCBjb2xvbiAtIGd0ZXN0X291dHB1dF9mbGFnKTsKKyAgICAgIHN0ZDo6c3RyaW5nKGd0ZXN0X291
dHB1dF9mbGFnKSA6CisgICAgICBzdGQ6OnN0cmluZyhndGVzdF9vdXRwdXRfZmxhZywgY29sb24g
LSBndGVzdF9vdXRwdXRfZmxhZyk7CiB9CiAKIC8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHJl
cXVlc3RlZCBvdXRwdXQgZmlsZSwgb3IgdGhlIGRlZmF1bHQgaWYgbm9uZQogLy8gd2FzIGV4cGxp
Y2l0bHkgc3BlY2lmaWVkLgotU3RyaW5nIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRo
VG9PdXRwdXRGaWxlKCkgeworc3RkOjpzdHJpbmcgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0
ZVBhdGhUb091dHB1dEZpbGUoKSB7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGd0ZXN0X291dHB1dF9m
bGFnID0gR1RFU1RfRkxBRyhvdXRwdXQpLmNfc3RyKCk7CiAgIGlmIChndGVzdF9vdXRwdXRfZmxh
ZyA9PSBOVUxMKQotICAgIHJldHVybiBTdHJpbmcoIiIpOworICAgIHJldHVybiAiIjsKIAogICBj
b25zdCBjaGFyKiBjb25zdCBjb2xvbiA9IHN0cmNocihndGVzdF9vdXRwdXRfZmxhZywgJzonKTsK
ICAgaWYgKGNvbG9uID09IE5VTEwpCi0gICAgcmV0dXJuIFN0cmluZyhpbnRlcm5hbDo6RmlsZVBh
dGg6OkNvbmNhdFBhdGhzKAotICAgICAgICAgICAgICAgaW50ZXJuYWw6OkZpbGVQYXRoKAotICAg
ICAgICAgICAgICAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5n
X2RpcigpKSwKLSAgICAgICAgICAgICAgIGludGVybmFsOjpGaWxlUGF0aChrRGVmYXVsdE91dHB1
dEZpbGUpKS5Ub1N0cmluZygpICk7CisgICAgcmV0dXJuIGludGVybmFsOjpGaWxlUGF0aDo6Q29u
Y2F0UGF0aHMoCisgICAgICAgIGludGVybmFsOjpGaWxlUGF0aCgKKyAgICAgICAgICAgIFVuaXRU
ZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5nX2RpcigpKSwKKyAgICAgICAgaW50
ZXJuYWw6OkZpbGVQYXRoKGtEZWZhdWx0T3V0cHV0RmlsZSkpLnN0cmluZygpOwogCiAgIGludGVy
bmFsOjpGaWxlUGF0aCBvdXRwdXRfbmFtZShjb2xvbiArIDEpOwogICBpZiAoIW91dHB1dF9uYW1l
LklzQWJzb2x1dGVQYXRoKCkpCkBAIC00MDYsMTIgKzQ0NiwxMiBAQCBTdHJpbmcgVW5pdFRlc3RP
cHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSB7CiAgICAgICAgIGludGVybmFs
OjpGaWxlUGF0aChjb2xvbiArIDEpKTsKIAogICBpZiAoIW91dHB1dF9uYW1lLklzRGlyZWN0b3J5
KCkpCi0gICAgcmV0dXJuIG91dHB1dF9uYW1lLlRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG91dHB1
dF9uYW1lLnN0cmluZygpOwogCiAgIGludGVybmFsOjpGaWxlUGF0aCByZXN1bHQoaW50ZXJuYWw6
OkZpbGVQYXRoOjpHZW5lcmF0ZVVuaXF1ZUZpbGVOYW1lKAogICAgICAgb3V0cHV0X25hbWUsIGlu
dGVybmFsOjpHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKSwKICAgICAgIEdldE91dHB1dEZvcm1h
dCgpLmNfc3RyKCkpKTsKLSAgcmV0dXJuIHJlc3VsdC5Ub1N0cmluZygpOworICByZXR1cm4gcmVz
dWx0LnN0cmluZygpOwogfQogCiAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB3aWxkY2FyZCBwYXR0
ZXJuIG1hdGNoZXMgdGhlIHN0cmluZy4gIFRoZQpAQCAtNDM2LDcgKzQ3Niw4IEBAIGJvb2wgVW5p
dFRlc3RPcHRpb25zOjpQYXR0ZXJuTWF0Y2hlc1N0cmluZyhjb25zdCBjaGFyICpwYXR0ZXJuLAog
ICB9CiB9CiAKLWJvb2wgVW5pdFRlc3RPcHRpb25zOjpNYXRjaGVzRmlsdGVyKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgY2hhciogZmlsdGVyKSB7Citib29sIFVuaXRUZXN0T3B0aW9uczo6TWF0
Y2hlc0ZpbHRlcigKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgY29uc3QgY2hhciogZmls
dGVyKSB7CiAgIGNvbnN0IGNoYXIgKmN1cl9wYXR0ZXJuID0gZmlsdGVyOwogICBmb3IgKDs7KSB7
CiAgICAgaWYgKFBhdHRlcm5NYXRjaGVzU3RyaW5nKGN1cl9wYXR0ZXJuLCBuYW1lLmNfc3RyKCkp
KSB7CkBAIC00NTYsMjggKzQ5NywyNCBAQCBib29sIFVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0Zp
bHRlcihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IGNoYXIqIGZpbHRlcikgewogICB9CiB9CiAK
LS8vIFRPRE8oa2VpdGhyYXkpOiBtb3ZlIFN0cmluZyBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMg
dG8gZ3Rlc3Qtc3RyaW5nLmNjLgotCiAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB1c2VyLXNwZWNp
ZmllZCBmaWx0ZXIgbWF0Y2hlcyB0aGUgdGVzdCBjYXNlCiAvLyBuYW1lIGFuZCB0aGUgdGVzdCBu
YW1lLgotYm9vbCBVbml0VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KGNvbnN0IFN0cmlu
ZyAmdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nICZ0ZXN0X25hbWUpIHsKLSAgY29uc3QgU3RyaW5nJiBmdWxsX25hbWUg
PSBTdHJpbmc6OkZvcm1hdCgiJXMuJXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RfY2FzZV9uYW1lLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9uYW1lLmNfc3RyKCkpOworYm9vbCBVbml0VGVz
dE9wdGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0X2Nhc2Vf
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyAmdGVzdF9uYW1lKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmdWxsX25hbWUgPSB0
ZXN0X2Nhc2VfbmFtZSArICIuIiArIHRlc3RfbmFtZS5jX3N0cigpOwogCiAgIC8vIFNwbGl0IC0t
Z3Rlc3RfZmlsdGVyIGF0ICctJywgaWYgdGhlcmUgaXMgb25lLCB0byBzZXBhcmF0ZSBpbnRvCiAg
IC8vIHBvc2l0aXZlIGZpbHRlciBhbmQgbmVnYXRpdmUgZmlsdGVyIHBvcnRpb25zCiAgIGNvbnN0
IGNoYXIqIGNvbnN0IHAgPSBHVEVTVF9GTEFHKGZpbHRlcikuY19zdHIoKTsKICAgY29uc3QgY2hh
ciogY29uc3QgZGFzaCA9IHN0cmNocihwLCAnLScpOwotICBTdHJpbmcgcG9zaXRpdmU7Ci0gIFN0
cmluZyBuZWdhdGl2ZTsKKyAgc3RkOjpzdHJpbmcgcG9zaXRpdmU7CisgIHN0ZDo6c3RyaW5nIG5l
Z2F0aXZlOwogICBpZiAoZGFzaCA9PSBOVUxMKSB7CiAgICAgcG9zaXRpdmUgPSBHVEVTVF9GTEFH
KGZpbHRlcikuY19zdHIoKTsgIC8vIFdob2xlIHN0cmluZyBpcyBhIHBvc2l0aXZlIGZpbHRlcgot
ICAgIG5lZ2F0aXZlID0gU3RyaW5nKCIiKTsKKyAgICBuZWdhdGl2ZSA9ICIiOwogICB9IGVsc2Ug
ewotICAgIHBvc2l0aXZlID0gU3RyaW5nKHAsIGRhc2ggLSBwKTsgIC8vIEV2ZXJ5dGhpbmcgdXAg
dG8gdGhlIGRhc2gKLSAgICBuZWdhdGl2ZSA9IFN0cmluZyhkYXNoKzEpOyAgICAgICAvLyBFdmVy
eXRoaW5nIGFmdGVyIHRoZSBkYXNoCisgICAgcG9zaXRpdmUgPSBzdGQ6OnN0cmluZyhwLCBkYXNo
KTsgICAvLyBFdmVyeXRoaW5nIHVwIHRvIHRoZSBkYXNoCisgICAgbmVnYXRpdmUgPSBzdGQ6OnN0
cmluZyhkYXNoICsgMSk7ICAvLyBFdmVyeXRoaW5nIGFmdGVyIHRoZSBkYXNoCiAgICAgaWYgKHBv
c2l0aXZlLmVtcHR5KCkpIHsKICAgICAgIC8vIFRyZWF0ICctdGVzdDEnIGFzIHRoZSBzYW1lIGFz
ICcqLXRlc3QxJwogICAgICAgcG9zaXRpdmUgPSBrVW5pdmVyc2FsRmlsdGVyOwpAQCAtNDkwLDIw
ICs1MjcsMzMgQEAgYm9vbCBVbml0VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KGNvbnN0
IFN0cmluZyAmdGVzdF9jYXNlX25hbWUsCiAgICAgICAgICAgIU1hdGNoZXNGaWx0ZXIoZnVsbF9u
YW1lLCBuZWdhdGl2ZS5jX3N0cigpKSk7CiB9CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjaWYg
R1RFU1RfSEFTX1NFSAogLy8gUmV0dXJucyBFWENFUFRJT05fRVhFQ1VURV9IQU5ETEVSIGlmIEdv
b2dsZSBUZXN0IHNob3VsZCBoYW5kbGUgdGhlCiAvLyBnaXZlbiBTRUggZXhjZXB0aW9uLCBvciBF
WENFUFRJT05fQ09OVElOVUVfU0VBUkNIIG90aGVyd2lzZS4KIC8vIFRoaXMgZnVuY3Rpb24gaXMg
dXNlZnVsIGFzIGFuIF9fZXhjZXB0IGNvbmRpdGlvbi4KIGludCBVbml0VGVzdE9wdGlvbnM6OkdU
ZXN0U2hvdWxkUHJvY2Vzc1NFSChEV09SRCBleGNlcHRpb25fY29kZSkgewotICAvLyBHb29nbGUg
VGVzdCBzaG91bGQgaGFuZGxlIGFuIGV4Y2VwdGlvbiBpZjoKKyAgLy8gR29vZ2xlIFRlc3Qgc2hv
dWxkIGhhbmRsZSBhIFNFSCBleGNlcHRpb24gaWY6CiAgIC8vICAgMS4gdGhlIHVzZXIgd2FudHMg
aXQgdG8sIEFORAotICAvLyAgIDIuIHRoaXMgaXMgbm90IGEgYnJlYWtwb2ludCBleGNlcHRpb24u
Ci0gIHJldHVybiAoR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSAmJgotICAgICAgICAgIGV4
Y2VwdGlvbl9jb2RlICE9IEVYQ0VQVElPTl9CUkVBS1BPSU5UKSA/Ci0gICAgICBFWENFUFRJT05f
RVhFQ1VURV9IQU5ETEVSIDoKLSAgICAgIEVYQ0VQVElPTl9DT05USU5VRV9TRUFSQ0g7CisgIC8v
ICAgMi4gdGhpcyBpcyBub3QgYSBicmVha3BvaW50IGV4Y2VwdGlvbiwgQU5ECisgIC8vICAgMy4g
dGhpcyBpcyBub3QgYSBDKysgZXhjZXB0aW9uIChWQysrIGltcGxlbWVudHMgdGhlbSB2aWEgU0VI
LAorICAvLyAgICAgIGFwcGFyZW50bHkpLgorICAvLworICAvLyBTRUggZXhjZXB0aW9uIGNvZGUg
Zm9yIEMrKyBleGNlcHRpb25zLgorICAvLyAoc2VlIGh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5j
b20va2IvMTg1Mjk0IGZvciBtb3JlIGluZm9ybWF0aW9uKS4KKyAgY29uc3QgRFdPUkQga0N4eEV4
Y2VwdGlvbkNvZGUgPSAweGUwNmQ3MzYzOworCisgIGJvb2wgc2hvdWxkX2hhbmRsZSA9IHRydWU7
CisKKyAgaWYgKCFHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKQorICAgIHNob3VsZF9oYW5k
bGUgPSBmYWxzZTsKKyAgZWxzZSBpZiAoZXhjZXB0aW9uX2NvZGUgPT0gRVhDRVBUSU9OX0JSRUFL
UE9JTlQpCisgICAgc2hvdWxkX2hhbmRsZSA9IGZhbHNlOworICBlbHNlIGlmIChleGNlcHRpb25f
Y29kZSA9PSBrQ3h4RXhjZXB0aW9uQ29kZSkKKyAgICBzaG91bGRfaGFuZGxlID0gZmFsc2U7CisK
KyAgcmV0dXJuIHNob3VsZF9oYW5kbGUgPyBFWENFUFRJT05fRVhFQ1VURV9IQU5ETEVSIDogRVhD
RVBUSU9OX0NPTlRJTlVFX1NFQVJDSDsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwor
I2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogCkBA
IC01ODMsOCArNjMzLDggQEAgQXNzZXJ0aW9uUmVzdWx0IEhhc09uZUZhaWx1cmUoY29uc3QgY2hh
ciogLyogcmVzdWx0c19leHByICovLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogLyogc3Vic3RyX2V4cHIgKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUZXN0UGFydFJlc3VsdEFycmF5JiByZXN1bHRzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGVzdFBhcnRSZXN1bHQ6OlR5cGUgdHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN1YnN0cikgewotICBjb25zdCBTdHJpbmcgZXhwZWN0
ZWQodHlwZSA9PSBUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSA/CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmcmIHN1YnN0cikgeworICBjb25zdCBzdGQ6OnN0
cmluZyBleHBlY3RlZCh0eXBlID09IFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlID8KICAg
ICAgICAgICAgICAgICAgICAgICAgICIxIGZhdGFsIGZhaWx1cmUiIDoKICAgICAgICAgICAgICAg
ICAgICAgICAgICIxIG5vbi1mYXRhbCBmYWlsdXJlIik7CiAgIE1lc3NhZ2UgbXNnOwpAQCAtNTk0
LDIzICs2NDQsMjEgQEAgQXNzZXJ0aW9uUmVzdWx0IEhhc09uZUZhaWx1cmUoY29uc3QgY2hhciog
LyogcmVzdWx0c19leHByICovLAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXpl
KCk7IGkrKykgewogICAgICAgbXNnIDw8ICJcbiIgPDwgcmVzdWx0cy5HZXRUZXN0UGFydFJlc3Vs
dChpKTsKICAgICB9Ci0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgICByZXR1
cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG1zZzsKICAgfQogCiAgIGNvbnN0IFRlc3RQYXJ0UmVz
dWx0JiByID0gcmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgwKTsKICAgaWYgKHIudHlwZSgpICE9
IHR5cGUpIHsKLSAgICBtc2cgPDwgIkV4cGVjdGVkOiAiIDw8IGV4cGVjdGVkIDw8ICJcbiIKLSAg
ICAgICAgPDwgIiAgQWN0dWFsOlxuIgotICAgICAgICA8PCByOwotICAgIHJldHVybiBBc3NlcnRp
b25GYWlsdXJlKG1zZyk7CisgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiRXhwZWN0
ZWQ6ICIgPDwgZXhwZWN0ZWQgPDwgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PDwgIiAgQWN0dWFsOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcjsKICAg
fQogCi0gIGlmIChzdHJzdHIoci5tZXNzYWdlKCksIHN1YnN0cikgPT0gTlVMTCkgewotICAgIG1z
ZyA8PCAiRXhwZWN0ZWQ6ICIgPDwgZXhwZWN0ZWQgPDwgIiBjb250YWluaW5nIFwiIgotICAgICAg
ICA8PCBzdWJzdHIgPDwgIlwiXG4iCi0gICAgICAgIDw8ICIgIEFjdHVhbDpcbiIKLSAgICAgICAg
PDwgcjsKLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICBpZiAoc3Ryc3RyKHIu
bWVzc2FnZSgpLCBzdWJzdHIuY19zdHIoKSkgPT0gTlVMTCkgeworICAgIHJldHVybiBBc3NlcnRp
b25GYWlsdXJlKCkgPDwgIkV4cGVjdGVkOiAiIDw8IGV4cGVjdGVkIDw8ICIgY29udGFpbmluZyBc
IiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHN1YnN0ciA8PCAiXCJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgIEFjdHVhbDpcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IHI7CiAgIH0KIAogICByZXR1cm4gQXNzZXJ0aW9uU3VjY2Vz
cygpOwpAQCAtNjIyLDcgKzY3MCw3IEBAIEFzc2VydGlvblJlc3VsdCBIYXNPbmVGYWlsdXJlKGNv
bnN0IGNoYXIqIC8qIHJlc3VsdHNfZXhwciAqLywKIFNpbmdsZUZhaWx1cmVDaGVja2VyOjogU2lu
Z2xlRmFpbHVyZUNoZWNrZXIoCiAgICAgY29uc3QgVGVzdFBhcnRSZXN1bHRBcnJheSogcmVzdWx0
cywKICAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlLAotICAgIGNvbnN0IGNoYXIqIHN1YnN0
cikKKyAgICBjb25zdCBzdHJpbmcmIHN1YnN0cikKICAgICA6IHJlc3VsdHNfKHJlc3VsdHMpLAog
ICAgICAgdHlwZV8odHlwZSksCiAgICAgICBzdWJzdHJfKHN1YnN0cikge30KQEAgLTYzMiw3ICs2
ODAsNyBAQCBTaW5nbGVGYWlsdXJlQ2hlY2tlcjo6IFNpbmdsZUZhaWx1cmVDaGVja2VyKAogLy8g
dHlwZSBhbmQgY29udGFpbnMgdGhlIGdpdmVuIHN1YnN0cmluZy4gIElmIHRoYXQncyBub3QgdGhl
IGNhc2UsIGEKIC8vIG5vbi1mYXRhbCBmYWlsdXJlIHdpbGwgYmUgZ2VuZXJhdGVkLgogU2luZ2xl
RmFpbHVyZUNoZWNrZXI6On5TaW5nbGVGYWlsdXJlQ2hlY2tlcigpIHsKLSAgRVhQRUNUX1BSRURf
Rk9STUFUMyhIYXNPbmVGYWlsdXJlLCAqcmVzdWx0c18sIHR5cGVfLCBzdWJzdHJfLmNfc3RyKCkp
OworICBFWFBFQ1RfUFJFRF9GT1JNQVQzKEhhc09uZUZhaWx1cmUsICpyZXN1bHRzXywgdHlwZV8s
IHN1YnN0cl8pOwogfQogCiBEZWZhdWx0R2xvYmFsVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjo6RGVm
YXVsdEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIoCkBAIC03MDksMTEgKzc1NywyMiBAQCBp
bnQgVW5pdFRlc3RJbXBsOjpmYWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJuIFN1
bU92ZXJUZXN0Q2FzZUxpc3QodGVzdF9jYXNlc18sICZUZXN0Q2FzZTo6ZmFpbGVkX3Rlc3RfY291
bnQpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxs
IGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0LgoraW50IFVuaXRUZXN0SW1wbDo6cmVwb3J0
YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3QgeworICByZXR1cm4gU3VtT3ZlclRlc3RD
YXNlTGlzdCh0ZXN0X2Nhc2VzXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlRlc3RD
YXNlOjpyZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQpOworfQorCiAvLyBHZXRzIHRoZSBu
dW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMuCiBpbnQgVW5pdFRlc3RJbXBsOjpkaXNhYmxlZF90ZXN0
X2NvdW50KCkgY29uc3QgewogICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0ZXN0X2Nhc2Vz
XywgJlRlc3RDYXNlOjpkaXNhYmxlZF90ZXN0X2NvdW50KTsKIH0KIAorLy8gR2V0cyB0aGUgbnVt
YmVyIG9mIHRlc3RzIHRvIGJlIHByaW50ZWQgaW4gdGhlIFhNTCByZXBvcnQuCitpbnQgVW5pdFRl
c3RJbXBsOjpyZXBvcnRhYmxlX3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBTdW1PdmVy
VGVzdENhc2VMaXN0KHRlc3RfY2FzZXNfLCAmVGVzdENhc2U6OnJlcG9ydGFibGVfdGVzdF9jb3Vu
dCk7Cit9CisKIC8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdHMuCiBpbnQgVW5pdFRlc3RJ
bXBsOjp0b3RhbF90ZXN0X2NvdW50KCkgY29uc3QgewogICByZXR1cm4gU3VtT3ZlclRlc3RDYXNl
TGlzdCh0ZXN0X2Nhc2VzXywgJlRlc3RDYXNlOjp0b3RhbF90ZXN0X2NvdW50KTsKQEAgLTcyNCw3
ICs3ODMsNyBAQCBpbnQgVW5pdFRlc3RJbXBsOjp0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0IHsK
ICAgcmV0dXJuIFN1bU92ZXJUZXN0Q2FzZUxpc3QodGVzdF9jYXNlc18sICZUZXN0Q2FzZTo6dGVz
dF90b19ydW5fY291bnQpOwogfQogCi0vLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRy
YWNlIGFzIGEgU3RyaW5nLgorLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBh
cyBhbiBzdGQ6OnN0cmluZy4KIC8vCiAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhY2sgZnJh
bWVzIHRvIGJlIGluY2x1ZGVkIGlzIHNwZWNpZmllZCBieQogLy8gdGhlIGd0ZXN0X3N0YWNrX3Ry
YWNlX2RlcHRoIGZsYWcuICBUaGUgc2tpcF9jb3VudCBwYXJhbWV0ZXIKQEAgLTczNCw5ICs3OTMs
MTMgQEAgaW50IFVuaXRUZXN0SW1wbDo6dGVzdF90b19ydW5fY291bnQoKSBjb25zdCB7CiAvLyBG
b3IgZXhhbXBsZSwgaWYgRm9vKCkgY2FsbHMgQmFyKCksIHdoaWNoIGluIHR1cm4gY2FsbHMKIC8v
IEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoMSksIEZvbygpIHdpbGwgYmUgaW5jbHVkZWQg
aW4gdGhlCiAvLyB0cmFjZSBidXQgQmFyKCkgYW5kIEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRU
b3AoKSB3b24ndC4KLVN0cmluZyBVbml0VGVzdEltcGw6OkN1cnJlbnRPc1N0YWNrVHJhY2VFeGNl
cHRUb3AoaW50IHNraXBfY291bnQpIHsKLSAgKHZvaWQpc2tpcF9jb3VudDsKLSAgcmV0dXJuIFN0
cmluZygiIik7CitzdGQ6OnN0cmluZyBVbml0VGVzdEltcGw6OkN1cnJlbnRPc1N0YWNrVHJhY2VF
eGNlcHRUb3AoaW50IHNraXBfY291bnQpIHsKKyAgcmV0dXJuIG9zX3N0YWNrX3RyYWNlX2dldHRl
cigpLT5DdXJyZW50U3RhY2tUcmFjZSgKKyAgICAgIHN0YXRpY19jYXN0PGludD4oR1RFU1RfRkxB
RyhzdGFja190cmFjZV9kZXB0aCkpLAorICAgICAgc2tpcF9jb3VudCArIDEKKyAgICAgIC8vIFNr
aXBzIHRoZSB1c2VyLXNwZWNpZmllZCBudW1iZXIgb2YgZnJhbWVzIHBsdXMgdGhpcyBmdW5jdGlv
bgorICAgICAgLy8gaXRzZWxmLgorICAgICAgKTsgIC8vIE5PTElOVAogfQogCiAvLyBSZXR1cm5z
IHRoZSBjdXJyZW50IHRpbWUgaW4gbWlsbGlzZWNvbmRzLgpAQCAtNzY0LDY1ICs4MjcsMjggQEAg
VGltZUluTWlsbGlzIEdldFRpbWVJbk1pbGxpcygpIHsKICAgcmV0dXJuIDA7CiAjZWxpZiBHVEVT
VF9PU19XSU5ET1dTICYmICFHVEVTVF9IQVNfR0VUVElNRU9GREFZXwogICBfX3RpbWViNjQgbm93
OwotI2lmZGVmIF9NU0NfVkVSCisKICAgLy8gTVNWQyA4IGRlcHJlY2F0ZXMgX2Z0aW1lNjQoKSwg
c28gd2Ugd2FudCB0byBzdXBwcmVzcyB3YXJuaW5nIDQ5OTYKICAgLy8gKGRlcHJlY2F0ZWQgZnVu
Y3Rpb24pIHRoZXJlLgogICAvLyBUT0RPKGtlbnRvbkBnb29nbGUuY29tKTogVXNlIEdldFRpY2tD
b3VudCgpPyAgT3IgdXNlCiAgIC8vICAgU3lzdGVtVGltZVRvRmlsZVRpbWUoKQotI3ByYWdtYSB3
YXJuaW5nKHB1c2gpICAgICAgICAgIC8vIFNhdmVzIHRoZSBjdXJyZW50IHdhcm5pbmcgc3RhdGUu
Ci0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0OTk2KSAgLy8gVGVtcG9yYXJpbHkgZGlzYWJsZXMg
d2FybmluZyA0OTk2LgotICBfZnRpbWU2NCgmbm93KTsKLSNwcmFnbWEgd2FybmluZyhwb3ApICAg
ICAgICAgICAvLyBSZXN0b3JlcyB0aGUgd2FybmluZyBzdGF0ZS4KLSNlbHNlCisgIEdURVNUX0RJ
U0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQ5OTYpCiAgIF9mdGltZTY0KCZub3cpOwotI2VuZGlm
ICAvLyBfTVNDX1ZFUgorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKwogICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VGltZUluTWlsbGlzPihub3cudGltZSkgKiAxMDAwICsgbm93Lm1p
bGxpdG07CiAjZWxpZiBHVEVTVF9IQVNfR0VUVElNRU9GREFZXwogICBzdHJ1Y3QgdGltZXZhbCBu
b3c7CiAgIGdldHRpbWVvZmRheSgmbm93LCBOVUxMKTsKICAgcmV0dXJuIHN0YXRpY19jYXN0PFRp
bWVJbk1pbGxpcz4obm93LnR2X3NlYykgKiAxMDAwICsgbm93LnR2X3VzZWMgLyAxMDAwOwogI2Vs
c2UKLSNlcnJvciAiRG9uJ3Qga25vdyBob3cgdG8gZ2V0IHRoZSBjdXJyZW50IHRpbWUgb24geW91
ciBzeXN0ZW0uIgorIyBlcnJvciAiRG9uJ3Qga25vdyBob3cgdG8gZ2V0IHRoZSBjdXJyZW50IHRp
bWUgb24geW91ciBzeXN0ZW0uIgogI2VuZGlmCiB9CiAKIC8vIFV0aWxpdGllcwogCi0vLyBjbGFz
cyBTdHJpbmcKLQotLy8gUmV0dXJucyB0aGUgaW5wdXQgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3Rl
cyBpZiBpdCdzIG5vdCBOVUxMOwotLy8gb3RoZXJ3aXNlIHJldHVybnMgIihudWxsKSIuICBGb3Ig
ZXhhbXBsZSwgIlwiSGVsbG9cIiIgaXMgcmV0dXJuZWQKLS8vIGZvciBpbnB1dCAiSGVsbG8iLgot
Ly8KLS8vIFRoaXMgaXMgdXNlZnVsIGZvciBwcmludGluZyBhIEMgc3RyaW5nIGluIHRoZSBzeW50
YXggb2YgYSBsaXRlcmFsLgotLy8KLS8vIEtub3duIGlzc3VlOiBlc2NhcGUgc2VxdWVuY2VzIGFy
ZSBub3QgaGFuZGxlZCB5ZXQuCi1TdHJpbmcgU3RyaW5nOjpTaG93Q1N0cmluZ1F1b3RlZChjb25z
dCBjaGFyKiBjX3N0cikgewotICByZXR1cm4gY19zdHIgPyBTdHJpbmc6OkZvcm1hdCgiXCIlc1wi
IiwgY19zdHIpIDogU3RyaW5nKCIobnVsbCkiKTsKLX0KLQotLy8gQ29waWVzIGF0IG1vc3QgbGVu
Z3RoIGNoYXJhY3RlcnMgZnJvbSBzdHIgaW50byBhIG5ld2x5LWFsbG9jYXRlZAotLy8gcGllY2Ug
b2YgbWVtb3J5IG9mIHNpemUgbGVuZ3RoKzEuICBUaGUgbWVtb3J5IGlzIGFsbG9jYXRlZCB3aXRo
IG5ld1tdLgotLy8gQSB0ZXJtaW5hdGluZyBudWxsIGJ5dGUgaXMgd3JpdHRlbiB0byB0aGUgbWVt
b3J5LCBhbmQgYSBwb2ludGVyIHRvIGl0Ci0vLyBpcyByZXR1cm5lZC4gIElmIHN0ciBpcyBOVUxM
LCBOVUxMIGlzIHJldHVybmVkLgotc3RhdGljIGNoYXIqIENsb25lU3RyaW5nKGNvbnN0IGNoYXIq
IHN0ciwgc2l6ZV90IGxlbmd0aCkgewotICBpZiAoc3RyID09IE5VTEwpIHsKLSAgICByZXR1cm4g
TlVMTDsKLSAgfSBlbHNlIHsKLSAgICBjaGFyKiBjb25zdCBjbG9uZSA9IG5ldyBjaGFyW2xlbmd0
aCArIDFdOwotICAgIHBvc2l4OjpTdHJOQ3B5KGNsb25lLCBzdHIsIGxlbmd0aCk7Ci0gICAgY2xv
bmVbbGVuZ3RoXSA9ICdcMCc7Ci0gICAgcmV0dXJuIGNsb25lOwotICB9Ci19Ci0KLS8vIENsb25l
cyBhIDAtdGVybWluYXRlZCBDIHN0cmluZywgYWxsb2NhdGluZyBtZW1vcnkgdXNpbmcgbmV3LiAg
VGhlCi0vLyBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nW10gdGhlIHJldHVybiB2
YWx1ZS4gIFJldHVybnMgdGhlCi0vLyBjbG9uZWQgc3RyaW5nLCBvciBOVUxMIGlmIHRoZSBpbnB1
dCBpcyBOVUxMLgotY29uc3QgY2hhciAqIFN0cmluZzo6Q2xvbmVDU3RyaW5nKGNvbnN0IGNoYXIq
IGNfc3RyKSB7Ci0gIHJldHVybiAoY19zdHIgPT0gTlVMTCkgPwotICAgICAgICAgICAgICAgICAg
ICBOVUxMIDogQ2xvbmVTdHJpbmcoY19zdHIsIHN0cmxlbihjX3N0cikpOwotfQorLy8gY2xhc3Mg
U3RyaW5nLgogCiAjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIC8vIENyZWF0ZXMgYSBVVEYt
MTYgd2lkZSBzdHJpbmcgZnJvbSB0aGUgZ2l2ZW4gQU5TSSBzdHJpbmcsIGFsbG9jYXRpbmcKQEAg
LTg3OSwxMSArOTA1LDYgQEAgYm9vbCBTdHJpbmc6OkNTdHJpbmdFcXVhbHMoY29uc3QgY2hhciAq
IGxocywgY29uc3QgY2hhciAqIHJocykgewogLy8gZW5jb2RpbmcsIGFuZCBzdHJlYW1zIHRoZSBy
ZXN1bHQgdG8gdGhlIGdpdmVuIE1lc3NhZ2Ugb2JqZWN0Lgogc3RhdGljIHZvaWQgU3RyZWFtV2lk
ZUNoYXJzVG9NZXNzYWdlKGNvbnN0IHdjaGFyX3QqIHdzdHIsIHNpemVfdCBsZW5ndGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSogbXNnKSB7Ci0gIC8vIFRP
RE8od2FuKTogY29uc2lkZXIgYWxsb3dpbmcgYSB0ZXN0aW5nOjpTdHJpbmcgb2JqZWN0IHRvCi0g
IC8vIGNvbnRhaW4gJ1wwJy4gIFRoaXMgd2lsbCBtYWtlIGl0IGJlaGF2ZSBtb3JlIGxpa2Ugc3Rk
OjpzdHJpbmcsCi0gIC8vIGFuZCB3aWxsIGFsbG93IFRvVXRmOFN0cmluZygpIHRvIHJldHVybiB0
aGUgY29ycmVjdCBlbmNvZGluZwotICAvLyBmb3IgJ1wwJyBzLnQuIHdlIGNhbiBnZXQgcmlkIG9m
IHRoZSBjb25kaXRpb25hbCBoZXJlIChhbmQgaW4KLSAgLy8gc2V2ZXJhbCBvdGhlciBwbGFjZXMp
LgogICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBsZW5ndGg7ICkgeyAgLy8gTk9MSU5UCiAgICAg
aWYgKHdzdHJbaV0gIT0gTCdcMCcpIHsKICAgICAgICptc2cgPDwgV2lkZVN0cmluZ1RvVXRmOCh3
c3RyICsgaSwgc3RhdGljX2Nhc3Q8aW50PihsZW5ndGggLSBpKSk7CkBAIC04OTgsOCArOTE5LDQ1
IEBAIHN0YXRpYyB2b2lkIFN0cmVhbVdpZGVDaGFyc1RvTWVzc2FnZShjb25zdCB3Y2hhcl90KiB3
c3RyLCBzaXplX3QgbGVuZ3RoLAogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORyB8
fCBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKIAordm9pZCBTcGxpdFN0cmluZyhjb25zdCA6OnN0
ZDo6c3RyaW5nJiBzdHIsIGNoYXIgZGVsaW1pdGVyLAorICAgICAgICAgICAgICAgICA6OnN0ZDo6
dmVjdG9yPCA6OnN0ZDo6c3RyaW5nPiogZGVzdCkgeworICA6OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6
c3RyaW5nPiBwYXJzZWQ7CisgIDo6c3RkOjpzdHJpbmc6OnNpemVfdHlwZSBwb3MgPSAwOworICB3
aGlsZSAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7CisgICAgY29uc3QgOjpz
dGQ6OnN0cmluZzo6c2l6ZV90eXBlIGNvbG9uID0gc3RyLmZpbmQoZGVsaW1pdGVyLCBwb3MpOwor
ICAgIGlmIChjb2xvbiA9PSA6OnN0ZDo6c3RyaW5nOjpucG9zKSB7CisgICAgICBwYXJzZWQucHVz
aF9iYWNrKHN0ci5zdWJzdHIocG9zKSk7CisgICAgICBicmVhazsKKyAgICB9IGVsc2UgeworICAg
ICAgcGFyc2VkLnB1c2hfYmFjayhzdHIuc3Vic3RyKHBvcywgY29sb24gLSBwb3MpKTsKKyAgICAg
IHBvcyA9IGNvbG9uICsgMTsKKyAgICB9CisgIH0KKyAgZGVzdC0+c3dhcChwYXJzZWQpOworfQor
CiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAorLy8gQ29uc3RydWN0cyBhbiBlbXB0eSBNZXNz
YWdlLgorLy8gV2UgYWxsb2NhdGUgdGhlIHN0cmluZ3N0cmVhbSBzZXBhcmF0ZWx5IGJlY2F1c2Ug
b3RoZXJ3aXNlIGVhY2ggdXNlIG9mCisvLyBBU1NFUlQvRVhQRUNUIGluIGEgcHJvY2VkdXJlIGFk
ZHMgb3ZlciAyMDAgYnl0ZXMgdG8gdGhlIHByb2NlZHVyZSdzCisvLyBzdGFjayBmcmFtZSBsZWFk
aW5nIHRvIGh1Z2Ugc3RhY2sgZnJhbWVzIGluIHNvbWUgY2FzZXM7IGdjYyBkb2VzIG5vdCByZXVz
ZQorLy8gdGhlIHN0YWNrIHNwYWNlLgorTWVzc2FnZTo6TWVzc2FnZSgpIDogc3NfKG5ldyA6OnN0
ZDo6c3RyaW5nc3RyZWFtKSB7CisgIC8vIEJ5IGRlZmF1bHQsIHdlIHdhbnQgdGhlcmUgdG8gYmUg
ZW5vdWdoIHByZWNpc2lvbiB3aGVuIHByaW50aW5nCisgIC8vIGEgZG91YmxlIHRvIGEgTWVzc2Fn
ZS4KKyAgKnNzXyA8PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OmRpZ2l0czEwICsgMik7Cit9CisKKy8vIFRoZXNlIHR3byBvdmVybG9hZHMgYWxsb3cgc3Ry
ZWFtaW5nIGEgd2lkZSBDIHN0cmluZyB0byBhIE1lc3NhZ2UKKy8vIHVzaW5nIHRoZSBVVEYtOCBl
bmNvZGluZy4KK01lc3NhZ2UmIE1lc3NhZ2U6Om9wZXJhdG9yIDw8KGNvbnN0IHdjaGFyX3QqIHdp
ZGVfY19zdHIpIHsKKyAgcmV0dXJuICp0aGlzIDw8IGludGVybmFsOjpTdHJpbmc6OlNob3dXaWRl
Q1N0cmluZyh3aWRlX2Nfc3RyKTsKK30KK01lc3NhZ2UmIE1lc3NhZ2U6Om9wZXJhdG9yIDw8KHdj
aGFyX3QqIHdpZGVfY19zdHIpIHsKKyAgcmV0dXJuICp0aGlzIDw8IGludGVybmFsOjpTdHJpbmc6
OlNob3dXaWRlQ1N0cmluZyh3aWRlX2Nfc3RyKTsKK30KKwogI2lmIEdURVNUX0hBU19TVERfV1NU
UklORwogLy8gQ29udmVydHMgdGhlIGdpdmVuIHdpZGUgc3RyaW5nIHRvIGEgbmFycm93IHN0cmlu
ZyB1c2luZyB0aGUgVVRGLTgKIC8vIGVuY29kaW5nLCBhbmQgc3RyZWFtcyB0aGUgcmVzdWx0IHRv
IHRoaXMgTWVzc2FnZSBvYmplY3QuCkBAIC05MTgsNTUgKzk3NiwyNiBAQCBNZXNzYWdlJiBNZXNz
YWdlOjpvcGVyYXRvciA8PChjb25zdCA6OndzdHJpbmcmIHdzdHIpIHsKIH0KICNlbmRpZiAgLy8g
R1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCiAKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIEZv
cm1hdHMgYSB2YWx1ZSB0byBiZSB1c2VkIGluIGEgZmFpbHVyZSBtZXNzYWdlLgotCi0vLyBGb3Ig
YSBjaGFyIHZhbHVlLCB3ZSBwcmludCBpdCBhcyBhIEMrKyBjaGFyIGxpdGVyYWwgYW5kIGFzIGFu
Ci0vLyB1bnNpZ25lZCBpbnRlZ2VyIChib3RoIGluIGRlY2ltYWwgYW5kIGluIGhleGFkZWNpbWFs
KS4KLVN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjaGFyIGNoKSB7Ci0gIGNvbnN0IHVu
c2lnbmVkIGludCBjaF9hc191aW50ID0gY2g7Ci0gIC8vIEEgU3RyaW5nIG9iamVjdCBjYW5ub3Qg
Y29udGFpbiAnXDAnLCBzbyB3ZSBwcmludCAiXFwwIiB3aGVuIGNoIGlzCi0gIC8vICdcMCcuCi0g
IHJldHVybiBTdHJpbmc6OkZvcm1hdCgiJyVzJyAoJXUsIDB4JVgpIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNoID8gU3RyaW5nOjpGb3JtYXQoIiVjIiwgY2gpLmNfc3RyKCkgOiAiXFwwIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNoX2FzX3VpbnQsIGNoX2FzX3VpbnQpOwotfQotCi0v
LyBGb3IgYSB3Y2hhcl90IHZhbHVlLCB3ZSBwcmludCBpdCBhcyBhIEMrKyB3Y2hhcl90IGxpdGVy
YWwgYW5kIGFzIGFuCi0vLyB1bnNpZ25lZCBpbnRlZ2VyIChib3RoIGluIGRlY2ltYWwgYW5kIGlu
IGhleGlkZWNpbWFsKS4KLVN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZSh3Y2hhcl90IHdj
aGFyKSB7Ci0gIC8vIFRoZSBDKysgc3RhbmRhcmQgZG9lc24ndCBzcGVjaWZ5IHRoZSBleGFjdCBz
aXplIG9mIHRoZSB3Y2hhcl90Ci0gIC8vIHR5cGUuICBJdCBqdXN0IHNheXMgdGhhdCBpdCBzaGFs
bCBoYXZlIHRoZSBzYW1lIHNpemUgYXMgYW5vdGhlcgotICAvLyBpbnRlZ3JhbCB0eXBlLCBjYWxs
ZWQgaXRzIHVuZGVybHlpbmcgdHlwZS4KLSAgLy8KLSAgLy8gVGhlcmVmb3JlLCBpbiBvcmRlciB0
byBwcmludCBhIHdjaGFyX3QgdmFsdWUgaW4gdGhlIG51bWVyaWMgZm9ybSwKLSAgLy8gd2UgZmly
c3QgY29udmVydCBpdCB0byB0aGUgbGFyZ2VzdCBpbnRlZ3JhbCB0eXBlIChVSW50NjQpIGFuZAot
ICAvLyB0aGVuIHByaW50IHRoZSBjb252ZXJ0ZWQgdmFsdWUuCi0gIC8vCi0gIC8vIFdlIHVzZSBz
dHJlYW1pbmcgdG8gcHJpbnQgdGhlIHZhbHVlIGFzICIlbGx1IiBkb2Vzbid0IHdvcmsKLSAgLy8g
Y29ycmVjdGx5IHdpdGggTVNWQyA3LjEuCi0gIGNvbnN0IFVJbnQ2NCB3Y2hhcl9hc191aW50NjQg
PSB3Y2hhcjsKLSAgTWVzc2FnZSBtc2c7Ci0gIC8vIEEgU3RyaW5nIG9iamVjdCBjYW5ub3QgY29u
dGFpbiAnXDAnLCBzbyB3ZSBwcmludCAiXFwwIiB3aGVuIHdjaGFyIGlzCi0gIC8vIEwnXDAnLgot
ICBjaGFyIGJ1ZmZlclszMl07ICAvLyBDb2RlUG9pbnRUb1V0ZjggcmVxdWlyZXMgYSBidWZmZXIg
dGhhdCBiaWcuCi0gIG1zZyA8PCAiTCciCi0gICAgICA8PCAod2NoYXIgPyBDb2RlUG9pbnRUb1V0
Zjgoc3RhdGljX2Nhc3Q8VUludDMyPih3Y2hhciksIGJ1ZmZlcikgOiAiXFwwIikKLSAgICAgIDw8
ICInICgiIDw8IHdjaGFyX2FzX3VpbnQ2NCA8PCAiLCAweCIgPDwgOjpzdGQ6OnNldGJhc2UoMTYp
Ci0gICAgICA8PCB3Y2hhcl9hc191aW50NjQgPDwgIikiOwotICByZXR1cm4gbXNnLkdldFN0cmlu
ZygpOworLy8gR2V0cyB0aGUgdGV4dCBzdHJlYW1lZCB0byB0aGlzIG9iamVjdCBzbyBmYXIgYXMg
YW4gc3RkOjpzdHJpbmcuCisvLyBFYWNoICdcMCcgY2hhcmFjdGVyIGluIHRoZSBidWZmZXIgaXMg
cmVwbGFjZWQgd2l0aCAiXFwwIi4KK3N0ZDo6c3RyaW5nIE1lc3NhZ2U6OkdldFN0cmluZygpIGNv
bnN0IHsKKyAgcmV0dXJuIGludGVybmFsOjpTdHJpbmdTdHJlYW1Ub1N0cmluZyhzc18uZ2V0KCkp
OwogfQogCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQogLy8gQXNzZXJ0aW9uUmVzdWx0IGNv
bnN0cnVjdG9ycy4KIC8vIFVzZWQgaW4gRVhQRUNUX1RSVUUvRkFMU0UoYXNzZXJ0aW9uX3Jlc3Vs
dCkuCiBBc3NlcnRpb25SZXN1bHQ6OkFzc2VydGlvblJlc3VsdChjb25zdCBBc3NlcnRpb25SZXN1
bHQmIG90aGVyKQogICAgIDogc3VjY2Vzc18ob3RoZXIuc3VjY2Vzc18pLAogICAgICAgbWVzc2Fn
ZV8ob3RoZXIubWVzc2FnZV8uZ2V0KCkgIT0gTlVMTCA/Ci0gICAgICAgICAgICAgICBuZXcgaW50
ZXJuYWw6OlN0cmluZygqb3RoZXIubWVzc2FnZV8pIDoKLSAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PGludGVybmFsOjpTdHJpbmcqPihOVUxMKSkgeworICAgICAgICAgICAgICAgbmV3IDo6c3Rk
OjpzdHJpbmcoKm90aGVyLm1lc3NhZ2VfKSA6CisgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDwg
OjpzdGQ6OnN0cmluZyo+KE5VTEwpKSB7Cit9CisKKy8vIFN3YXBzIHR3byBBc3NlcnRpb25SZXN1
bHRzLgordm9pZCBBc3NlcnRpb25SZXN1bHQ6OnN3YXAoQXNzZXJ0aW9uUmVzdWx0JiBvdGhlcikg
eworICB1c2luZyBzdGQ6OnN3YXA7CisgIHN3YXAoc3VjY2Vzc18sIG90aGVyLnN1Y2Nlc3NfKTsK
KyAgc3dhcChtZXNzYWdlXywgb3RoZXIubWVzc2FnZV8pOwogfQogCiAvLyBSZXR1cm5zIHRoZSBh
c3NlcnRpb24ncyBuZWdhdGlvbi4gVXNlZCB3aXRoIEVYUEVDVC9BU1NFUlRfRkFMU0UuCkBAIC05
OTUsNiArMTAyNCwyNzYgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvbkZhaWx1cmUoY29uc3Qg
TWVzc2FnZSYgbWVzc2FnZSkgewogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCituYW1lc3BhY2Ug
ZWRpdF9kaXN0YW5jZSB7CitzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gQ2FsY3VsYXRlT3B0aW1hbEVk
aXRzKGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIGxlZnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIHJpZ2h0
KSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGRvdWJsZT4gPiBjb3N0cygKKyAgICAgIGxl
ZnQuc2l6ZSgpICsgMSwgc3RkOjp2ZWN0b3I8ZG91YmxlPihyaWdodC5zaXplKCkgKyAxKSk7Cisg
IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPEVkaXRUeXBlPiA+IGJlc3RfbW92ZSgKKyAgICAgIGxl
ZnQuc2l6ZSgpICsgMSwgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+KHJpZ2h0LnNpemUoKSArIDEpKTsK
KworICAvLyBQb3B1bGF0ZSBmb3IgZW1wdHkgcmlnaHQuCisgIGZvciAoc2l6ZV90IGxfaSA9IDA7
IGxfaSA8IGNvc3RzLnNpemUoKTsgKytsX2kpIHsKKyAgICBjb3N0c1tsX2ldWzBdID0gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihsX2kpOworICAgIGJlc3RfbW92ZVtsX2ldWzBdID0ga1JlbW92ZTsKKyAg
fQorICAvLyBQb3B1bGF0ZSBmb3IgZW1wdHkgbGVmdC4KKyAgZm9yIChzaXplX3Qgcl9pID0gMTsg
cl9pIDwgY29zdHNbMF0uc2l6ZSgpOyArK3JfaSkgeworICAgIGNvc3RzWzBdW3JfaV0gPSBzdGF0
aWNfY2FzdDxkb3VibGU+KHJfaSk7CisgICAgYmVzdF9tb3ZlWzBdW3JfaV0gPSBrQWRkOworICB9
CisKKyAgZm9yIChzaXplX3QgbF9pID0gMDsgbF9pIDwgbGVmdC5zaXplKCk7ICsrbF9pKSB7Cisg
ICAgZm9yIChzaXplX3Qgcl9pID0gMDsgcl9pIDwgcmlnaHQuc2l6ZSgpOyArK3JfaSkgeworICAg
ICAgaWYgKGxlZnRbbF9pXSA9PSByaWdodFtyX2ldKSB7CisgICAgICAgIC8vIEZvdW5kIGEgbWF0
Y2guIENvbnN1bWUgaXQuCisgICAgICAgIGNvc3RzW2xfaSArIDFdW3JfaSArIDFdID0gY29zdHNb
bF9pXVtyX2ldOworICAgICAgICBiZXN0X21vdmVbbF9pICsgMV1bcl9pICsgMV0gPSBrTWF0Y2g7
CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorCisgICAgICBjb25zdCBkb3VibGUgYWRkID0g
Y29zdHNbbF9pICsgMV1bcl9pXTsKKyAgICAgIGNvbnN0IGRvdWJsZSByZW1vdmUgPSBjb3N0c1ts
X2ldW3JfaSArIDFdOworICAgICAgY29uc3QgZG91YmxlIHJlcGxhY2UgPSBjb3N0c1tsX2ldW3Jf
aV07CisgICAgICBpZiAoYWRkIDwgcmVtb3ZlICYmIGFkZCA8IHJlcGxhY2UpIHsKKyAgICAgICAg
Y29zdHNbbF9pICsgMV1bcl9pICsgMV0gPSBhZGQgKyAxOworICAgICAgICBiZXN0X21vdmVbbF9p
ICsgMV1bcl9pICsgMV0gPSBrQWRkOworICAgICAgfSBlbHNlIGlmIChyZW1vdmUgPCBhZGQgJiYg
cmVtb3ZlIDwgcmVwbGFjZSkgeworICAgICAgICBjb3N0c1tsX2kgKyAxXVtyX2kgKyAxXSA9IHJl
bW92ZSArIDE7CisgICAgICAgIGJlc3RfbW92ZVtsX2kgKyAxXVtyX2kgKyAxXSA9IGtSZW1vdmU7
CisgICAgICB9IGVsc2UgeworICAgICAgICAvLyBXZSBtYWtlIHJlcGxhY2UgYSBsaXR0bGUgbW9y
ZSBleHBlbnNpdmUgdGhhbiBhZGQvcmVtb3ZlIHRvIGxvd2VyCisgICAgICAgIC8vIHRoZWlyIHBy
aW9yaXR5LgorICAgICAgICBjb3N0c1tsX2kgKyAxXVtyX2kgKyAxXSA9IHJlcGxhY2UgKyAxLjAw
MDAxOworICAgICAgICBiZXN0X21vdmVbbF9pICsgMV1bcl9pICsgMV0gPSBrUmVwbGFjZTsKKyAg
ICAgIH0KKyAgICB9CisgIH0KKworICAvLyBSZWNvbnN0cnVjdCB0aGUgYmVzdCBwYXRoLiBXZSBk
byBpdCBpbiByZXZlcnNlIG9yZGVyLgorICBzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gYmVzdF9wYXRo
OworICBmb3IgKHNpemVfdCBsX2kgPSBsZWZ0LnNpemUoKSwgcl9pID0gcmlnaHQuc2l6ZSgpOyBs
X2kgPiAwIHx8IHJfaSA+IDA7KSB7CisgICAgRWRpdFR5cGUgbW92ZSA9IGJlc3RfbW92ZVtsX2ld
W3JfaV07CisgICAgYmVzdF9wYXRoLnB1c2hfYmFjayhtb3ZlKTsKKyAgICBsX2kgLT0gbW92ZSAh
PSBrQWRkOworICAgIHJfaSAtPSBtb3ZlICE9IGtSZW1vdmU7CisgIH0KKyAgc3RkOjpyZXZlcnNl
KGJlc3RfcGF0aC5iZWdpbigpLCBiZXN0X3BhdGguZW5kKCkpOworICByZXR1cm4gYmVzdF9wYXRo
OworfQorCituYW1lc3BhY2UgeworCisvLyBIZWxwZXIgY2xhc3MgdG8gY29udmVydCBzdHJpbmcg
aW50byBpZHMgd2l0aCBkZWR1cGxpY2F0aW9uLgorY2xhc3MgSW50ZXJuYWxTdHJpbmdzIHsKKyBw
dWJsaWM6CisgIHNpemVfdCBHZXRJZChjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7CisgICAgSWRN
YXA6Oml0ZXJhdG9yIGl0ID0gaWRzXy5maW5kKHN0cik7CisgICAgaWYgKGl0ICE9IGlkc18uZW5k
KCkpIHJldHVybiBpdC0+c2Vjb25kOworICAgIHNpemVfdCBpZCA9IGlkc18uc2l6ZSgpOworICAg
IHJldHVybiBpZHNfW3N0cl0gPSBpZDsKKyAgfQorCisgcHJpdmF0ZToKKyAgdHlwZWRlZiBzdGQ6
Om1hcDxzdGQ6OnN0cmluZywgc2l6ZV90PiBJZE1hcDsKKyAgSWRNYXAgaWRzXzsKK307CisKK30g
IC8vIG5hbWVzcGFjZQorCitzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gQ2FsY3VsYXRlT3B0aW1hbEVk
aXRzKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgbGVmdCwKKyAgICBjb25z
dCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHJpZ2h0KSB7CisgIHN0ZDo6dmVjdG9yPHNpemVf
dD4gbGVmdF9pZHMsIHJpZ2h0X2lkczsKKyAgeworICAgIEludGVybmFsU3RyaW5ncyBpbnRlcm5f
dGFibGU7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZWZ0LnNpemUoKTsgKytpKSB7Cisg
ICAgICBsZWZ0X2lkcy5wdXNoX2JhY2soaW50ZXJuX3RhYmxlLkdldElkKGxlZnRbaV0pKTsKKyAg
ICB9CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByaWdodC5zaXplKCk7ICsraSkgeworICAg
ICAgcmlnaHRfaWRzLnB1c2hfYmFjayhpbnRlcm5fdGFibGUuR2V0SWQocmlnaHRbaV0pKTsKKyAg
ICB9CisgIH0KKyAgcmV0dXJuIENhbGN1bGF0ZU9wdGltYWxFZGl0cyhsZWZ0X2lkcywgcmlnaHRf
aWRzKTsKK30KKworbmFtZXNwYWNlIHsKKworLy8gSGVscGVyIGNsYXNzIHRoYXQgaG9sZHMgdGhl
IHN0YXRlIGZvciBvbmUgaHVuayBhbmQgcHJpbnRzIGl0IG91dCB0byB0aGUKKy8vIHN0cmVhbS4K
Ky8vIEl0IHJlb3JkZXJzIGFkZHMvcmVtb3ZlcyB3aGVuIHBvc3NpYmxlIHRvIGdyb3VwIGFsbCBy
ZW1vdmVzIGJlZm9yZSBhbGwKKy8vIGFkZHMuIEl0IGFsc28gYWRkcyB0aGUgaHVuayBoZWFkZXIg
YmVmb3JlIHByaW50aW50IGludG8gdGhlIHN0cmVhbS4KK2NsYXNzIEh1bmsgeworIHB1YmxpYzoK
KyAgSHVuayhzaXplX3QgbGVmdF9zdGFydCwgc2l6ZV90IHJpZ2h0X3N0YXJ0KQorICAgICAgOiBs
ZWZ0X3N0YXJ0XyhsZWZ0X3N0YXJ0KSwKKyAgICAgICAgcmlnaHRfc3RhcnRfKHJpZ2h0X3N0YXJ0
KSwKKyAgICAgICAgYWRkc18oKSwKKyAgICAgICAgcmVtb3Zlc18oKSwKKyAgICAgICAgY29tbW9u
XygpIHt9CisKKyAgdm9pZCBQdXNoTGluZShjaGFyIGVkaXQsIGNvbnN0IGNoYXIqIGxpbmUpIHsK
KyAgICBzd2l0Y2ggKGVkaXQpIHsKKyAgICAgIGNhc2UgJyAnOgorICAgICAgICArK2NvbW1vbl87
CisgICAgICAgIEZsdXNoRWRpdHMoKTsKKyAgICAgICAgaHVua18ucHVzaF9iYWNrKHN0ZDo6bWFr
ZV9wYWlyKCcgJywgbGluZSkpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJy0nOgorICAg
ICAgICArK3JlbW92ZXNfOworICAgICAgICBodW5rX3JlbW92ZXNfLnB1c2hfYmFjayhzdGQ6Om1h
a2VfcGFpcignLScsIGxpbmUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICcrJzoKKyAg
ICAgICAgKythZGRzXzsKKyAgICAgICAgaHVua19hZGRzXy5wdXNoX2JhY2soc3RkOjptYWtlX3Bh
aXIoJysnLCBsaW5lKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgfQorCisgIHZvaWQgUHJp
bnRUbyhzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgUHJpbnRIZWFkZXIob3MpOworICAgIEZsdXNo
RWRpdHMoKTsKKyAgICBmb3IgKHN0ZDo6bGlzdDxzdGQ6OnBhaXI8Y2hhciwgY29uc3QgY2hhcio+
ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0KKyAgICAgICAgICAgICBodW5rXy5iZWdpbigpOworICAg
ICAgICAgaXQgIT0gaHVua18uZW5kKCk7ICsraXQpIHsKKyAgICAgICpvcyA8PCBpdC0+Zmlyc3Qg
PDwgaXQtPnNlY29uZCA8PCAiXG4iOworICAgIH0KKyAgfQorCisgIGJvb2wgaGFzX2VkaXRzKCkg
Y29uc3QgeyByZXR1cm4gYWRkc18gfHwgcmVtb3Zlc187IH0KKworIHByaXZhdGU6CisgIHZvaWQg
Rmx1c2hFZGl0cygpIHsKKyAgICBodW5rXy5zcGxpY2UoaHVua18uZW5kKCksIGh1bmtfcmVtb3Zl
c18pOworICAgIGh1bmtfLnNwbGljZShodW5rXy5lbmQoKSwgaHVua19hZGRzXyk7CisgIH0KKwor
ICAvLyBQcmludCBhIHVuaWZpZWQgZGlmZiBoZWFkZXIgZm9yIG9uZSBodW5rLgorICAvLyBUaGUg
Zm9ybWF0IGlzCisgIC8vICAgIkBAIC08bGVmdF9zdGFydD4sPGxlZnRfbGVuZ3RoPiArPHJpZ2h0
X3N0YXJ0Piw8cmlnaHRfbGVuZ3RoPiBAQCIKKyAgLy8gd2hlcmUgdGhlIGxlZnQvcmlnaHQgcGFy
dHMgYXJlIG9tbWl0dGVkIGlmIHVubmVjZXNzYXJ5LgorICB2b2lkIFByaW50SGVhZGVyKHN0ZDo6
b3N0cmVhbSogc3MpIGNvbnN0IHsKKyAgICAqc3MgPDwgIkBAICI7CisgICAgaWYgKHJlbW92ZXNf
KSB7CisgICAgICAqc3MgPDwgIi0iIDw8IGxlZnRfc3RhcnRfIDw8ICIsIiA8PCAocmVtb3Zlc18g
KyBjb21tb25fKTsKKyAgICB9CisgICAgaWYgKHJlbW92ZXNfICYmIGFkZHNfKSB7CisgICAgICAq
c3MgPDwgIiAiOworICAgIH0KKyAgICBpZiAoYWRkc18pIHsKKyAgICAgICpzcyA8PCAiKyIgPDwg
cmlnaHRfc3RhcnRfIDw8ICIsIiA8PCAoYWRkc18gKyBjb21tb25fKTsKKyAgICB9CisgICAgKnNz
IDw8ICIgQEBcbiI7CisgIH0KKworICBzaXplX3QgbGVmdF9zdGFydF8sIHJpZ2h0X3N0YXJ0XzsK
KyAgc2l6ZV90IGFkZHNfLCByZW1vdmVzXywgY29tbW9uXzsKKyAgc3RkOjpsaXN0PHN0ZDo6cGFp
cjxjaGFyLCBjb25zdCBjaGFyKj4gPiBodW5rXywgaHVua19hZGRzXywgaHVua19yZW1vdmVzXzsK
K307CisKK30gIC8vIG5hbWVzcGFjZQorCisvLyBDcmVhdGUgYSBsaXN0IG9mIGRpZmYgaHVua3Mg
aW4gVW5pZmllZCBkaWZmIGZvcm1hdC4KKy8vIEVhY2ggaHVuayBoYXMgYSBoZWFkZXIgZ2VuZXJh
dGVkIGJ5IFByaW50SGVhZGVyIGFib3ZlIHBsdXMgYSBib2R5IHdpdGgKKy8vIGxpbmVzIHByZWZp
eGVkIHdpdGggJyAnIGZvciBubyBjaGFuZ2UsICctJyBmb3IgZGVsZXRpb24gYW5kICcrJyBmb3IK
Ky8vIGFkZGl0aW9uLgorLy8gJ2NvbnRleHQnIHJlcHJlc2VudHMgdGhlIGRlc2lyZWQgdW5jaGFu
Z2VkIHByZWZpeC9zdWZmaXggYXJvdW5kIHRoZSBkaWZmLgorLy8gSWYgdHdvIGh1bmtzIGFyZSBj
bG9zZSBlbm91Z2ggdGhhdCB0aGVpciBjb250ZXh0cyBvdmVybGFwLCB0aGVuIHRoZXkgYXJlCisv
LyBqb2luZWQgaW50byBvbmUgaHVuay4KK3N0ZDo6c3RyaW5nIENyZWF0ZVVuaWZpZWREaWZmKGNv
bnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgbGVmdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgcmlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY29udGV4dCkgeworICBjb25zdCBzdGQ6OnZl
Y3RvcjxFZGl0VHlwZT4gZWRpdHMgPSBDYWxjdWxhdGVPcHRpbWFsRWRpdHMobGVmdCwgcmlnaHQp
OworCisgIHNpemVfdCBsX2kgPSAwLCByX2kgPSAwLCBlZGl0X2kgPSAwOworICBzdGQ6OnN0cmlu
Z3N0cmVhbSBzczsKKyAgd2hpbGUgKGVkaXRfaSA8IGVkaXRzLnNpemUoKSkgeworICAgIC8vIEZp
bmQgZmlyc3QgZWRpdC4KKyAgICB3aGlsZSAoZWRpdF9pIDwgZWRpdHMuc2l6ZSgpICYmIGVkaXRz
W2VkaXRfaV0gPT0ga01hdGNoKSB7CisgICAgICArK2xfaTsKKyAgICAgICsrcl9pOworICAgICAg
KytlZGl0X2k7CisgICAgfQorCisgICAgLy8gRmluZCB0aGUgZmlyc3QgbGluZSB0byBpbmNsdWRl
IGluIHRoZSBodW5rLgorICAgIGNvbnN0IHNpemVfdCBwcmVmaXhfY29udGV4dCA9IHN0ZDo6bWlu
KGxfaSwgY29udGV4dCk7CisgICAgSHVuayBodW5rKGxfaSAtIHByZWZpeF9jb250ZXh0ICsgMSwg
cl9pIC0gcHJlZml4X2NvbnRleHQgKyAxKTsKKyAgICBmb3IgKHNpemVfdCBpID0gcHJlZml4X2Nv
bnRleHQ7IGkgPiAwOyAtLWkpIHsKKyAgICAgIGh1bmsuUHVzaExpbmUoJyAnLCBsZWZ0W2xfaSAt
IGldLmNfc3RyKCkpOworICAgIH0KKworICAgIC8vIEl0ZXJhdGUgdGhlIGVkaXRzIHVudGlsIHdl
IGZvdW5kIGVub3VnaCBzdWZmaXggZm9yIHRoZSBodW5rIG9yIHRoZSBpbnB1dAorICAgIC8vIGlz
IG92ZXIuCisgICAgc2l6ZV90IG5fc3VmZml4ID0gMDsKKyAgICBmb3IgKDsgZWRpdF9pIDwgZWRp
dHMuc2l6ZSgpOyArK2VkaXRfaSkgeworICAgICAgaWYgKG5fc3VmZml4ID49IGNvbnRleHQpIHsK
KyAgICAgICAgLy8gQ29udGludWUgb25seSBpZiB0aGUgbmV4dCBodW5rIGlzIHZlcnkgY2xvc2Uu
CisgICAgICAgIHN0ZDo6dmVjdG9yPEVkaXRUeXBlPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBlZGl0
cy5iZWdpbigpICsgZWRpdF9pOworICAgICAgICB3aGlsZSAoaXQgIT0gZWRpdHMuZW5kKCkgJiYg
Kml0ID09IGtNYXRjaCkgKytpdDsKKyAgICAgICAgaWYgKGl0ID09IGVkaXRzLmVuZCgpIHx8IChp
dCAtIGVkaXRzLmJlZ2luKCkpIC0gZWRpdF9pID49IGNvbnRleHQpIHsKKyAgICAgICAgICAvLyBU
aGVyZSBpcyBubyBuZXh0IGVkaXQgb3IgaXQgaXMgdG9vIGZhciBhd2F5LgorICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIEVkaXRUeXBlIGVkaXQgPSBlZGl0c1tl
ZGl0X2ldOworICAgICAgLy8gUmVzZXQgY291bnQgd2hlbiBhIG5vbiBtYXRjaCBpcyBmb3VuZC4K
KyAgICAgIG5fc3VmZml4ID0gZWRpdCA9PSBrTWF0Y2ggPyBuX3N1ZmZpeCArIDEgOiAwOworCisg
ICAgICBpZiAoZWRpdCA9PSBrTWF0Y2ggfHwgZWRpdCA9PSBrUmVtb3ZlIHx8IGVkaXQgPT0ga1Jl
cGxhY2UpIHsKKyAgICAgICAgaHVuay5QdXNoTGluZShlZGl0ID09IGtNYXRjaCA/ICcgJyA6ICct
JywgbGVmdFtsX2ldLmNfc3RyKCkpOworICAgICAgfQorICAgICAgaWYgKGVkaXQgPT0ga0FkZCB8
fCBlZGl0ID09IGtSZXBsYWNlKSB7CisgICAgICAgIGh1bmsuUHVzaExpbmUoJysnLCByaWdodFty
X2ldLmNfc3RyKCkpOworICAgICAgfQorCisgICAgICAvLyBBZHZhbmNlIGluZGljZXMsIGRlcGVu
ZGluZyBvbiBlZGl0IHR5cGUuCisgICAgICBsX2kgKz0gZWRpdCAhPSBrQWRkOworICAgICAgcl9p
ICs9IGVkaXQgIT0ga1JlbW92ZTsKKyAgICB9CisKKyAgICBpZiAoIWh1bmsuaGFzX2VkaXRzKCkp
IHsKKyAgICAgIC8vIFdlIGFyZSBkb25lLiBXZSBkb24ndCB3YW50IHRoaXMgaHVuay4KKyAgICAg
IGJyZWFrOworICAgIH0KKworICAgIGh1bmsuUHJpbnRUbygmc3MpOworICB9CisgIHJldHVybiBz
cy5zdHIoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGVkaXRfZGlzdGFuY2UKKworbmFtZXNwYWNl
IHsKKworLy8gVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFsdWVzIHJlY2VpdmVk
IGluIEVxRmFpbHVyZSgpIGFyZSBhbHJlYWR5CisvLyBlc2NhcGVkLiBTcGxpdCB0aGVtIG9uIGVz
Y2FwZWQgJ1xuJyBib3VuZGFyaWVzLiBMZWF2ZSBhbGwgb3RoZXIgZXNjYXBlZAorLy8gY2hhcmFj
dGVycyB0aGUgc2FtZS4KK3N0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBTcGxpdEVzY2FwZWRTdHJp
bmcoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgeworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4g
bGluZXM7CisgIHNpemVfdCBzdGFydCA9IDAsIGVuZCA9IHN0ci5zaXplKCk7CisgIGlmIChlbmQg
PiAyICYmIHN0clswXSA9PSAnIicgJiYgc3RyW2VuZCAtIDFdID09ICciJykgeworICAgICsrc3Rh
cnQ7CisgICAgLS1lbmQ7CisgIH0KKyAgYm9vbCBlc2NhcGVkID0gZmFsc2U7CisgIGZvciAoc2l6
ZV90IGkgPSBzdGFydDsgaSArIDEgPCBlbmQ7ICsraSkgeworICAgIGlmIChlc2NhcGVkKSB7Cisg
ICAgICBlc2NhcGVkID0gZmFsc2U7CisgICAgICBpZiAoc3RyW2ldID09ICduJykgeworICAgICAg
ICBsaW5lcy5wdXNoX2JhY2soc3RyLnN1YnN0cihzdGFydCwgaSAtIHN0YXJ0IC0gMSkpOworICAg
ICAgICBzdGFydCA9IGkgKyAxOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBlc2NhcGVk
ID0gc3RyW2ldID09ICdcXCc7CisgICAgfQorICB9CisgIGxpbmVzLnB1c2hfYmFjayhzdHIuc3Vi
c3RyKHN0YXJ0LCBlbmQgLSBzdGFydCkpOworICByZXR1cm4gbGluZXM7Cit9CisKK30gIC8vIG5h
bWVzcGFjZQorCiAvLyBDb25zdHJ1Y3RzIGFuZCByZXR1cm5zIHRoZSBtZXNzYWdlIGZvciBhbiBl
cXVhbGl0eSBhc3NlcnRpb24KIC8vIChlLmcuIEFTU0VSVF9FUSwgRVhQRUNUX1NUUkVRLCBldGMp
IGZhaWx1cmUuCiAvLwpAQCAtMTAwMiw0MSArMTMwMSw1MyBAQCBuYW1lc3BhY2UgaW50ZXJuYWwg
ewogLy8gYW5kIHRoZWlyIHZhbHVlcywgYXMgc3RyaW5ncy4gIEZvciBleGFtcGxlLCBmb3IgQVNT
RVJUX0VRKGZvbywgYmFyKQogLy8gd2hlcmUgZm9vIGlzIDUgYW5kIGJhciBpcyA2LCB3ZSBoYXZl
OgogLy8KLS8vICAgZXhwZWN0ZWRfZXhwcmVzc2lvbjogImZvbyIKLS8vICAgYWN0dWFsX2V4cHJl
c3Npb246ICAgImJhciIKLS8vICAgZXhwZWN0ZWRfdmFsdWU6ICAgICAgIjUiCi0vLyAgIGFjdHVh
bF92YWx1ZTogICAgICAgICI2IgorLy8gICBsaHNfZXhwcmVzc2lvbjogImZvbyIKKy8vICAgcmhz
X2V4cHJlc3Npb246ICJiYXIiCisvLyAgIGxoc192YWx1ZTogICAgICAiNSIKKy8vICAgcmhzX3Zh
bHVlOiAgICAgICI2IgogLy8KIC8vIFRoZSBpZ25vcmluZ19jYXNlIHBhcmFtZXRlciBpcyB0cnVl
IGlmZiB0aGUgYXNzZXJ0aW9uIGlzIGEKLS8vICpfU1RSQ0FTRUVRKi4gIFdoZW4gaXQncyB0cnVl
LCB0aGUgc3RyaW5nICIgKGlnbm9yaW5nIGNhc2UpIiB3aWxsCisvLyAqX1NUUkNBU0VFUSouICBX
aGVuIGl0J3MgdHJ1ZSwgdGhlIHN0cmluZyAiSWdub3JpbmcgY2FzZSIgd2lsbAogLy8gYmUgaW5z
ZXJ0ZWQgaW50byB0aGUgbWVzc2FnZS4KLUFzc2VydGlvblJlc3VsdCBFcUZhaWx1cmUoY29uc3Qg
Y2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFN0cmluZyYgZXhwZWN0ZWRfdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFN0cmluZyYgYWN0dWFsX3ZhbHVlLAorQXNzZXJ0aW9uUmVzdWx0IEVxRmFpbHVyZShjb25z
dCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBsaHNfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiByaHNfdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdu
b3JpbmdfY2FzZSkgewogICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8ICJWYWx1ZSBvZjogIiA8PCBh
Y3R1YWxfZXhwcmVzc2lvbjsKLSAgaWYgKGFjdHVhbF92YWx1ZSAhPSBhY3R1YWxfZXhwcmVzc2lv
bikgewotICAgIG1zZyA8PCAiXG4gIEFjdHVhbDogIiA8PCBhY3R1YWxfdmFsdWU7CisgIG1zZyA8
PCAiICAgICAgRXhwZWN0ZWQ6ICIgPDwgbGhzX2V4cHJlc3Npb247CisgIGlmIChsaHNfdmFsdWUg
IT0gbGhzX2V4cHJlc3Npb24pIHsKKyAgICBtc2cgPDwgIlxuICAgICAgV2hpY2ggaXM6ICIgPDwg
bGhzX3ZhbHVlOworICB9CisgIG1zZyA8PCAiXG5UbyBiZSBlcXVhbCB0bzogIiA8PCByaHNfZXhw
cmVzc2lvbjsKKyAgaWYgKHJoc192YWx1ZSAhPSByaHNfZXhwcmVzc2lvbikgeworICAgIG1zZyA8
PCAiXG4gICAgICBXaGljaCBpczogIiA8PCByaHNfdmFsdWU7CiAgIH0KIAotICBtc2cgPDwgIlxu
RXhwZWN0ZWQ6ICIgPDwgZXhwZWN0ZWRfZXhwcmVzc2lvbjsKICAgaWYgKGlnbm9yaW5nX2Nhc2Up
IHsKLSAgICBtc2cgPDwgIiAoaWdub3JpbmcgY2FzZSkiOworICAgIG1zZyA8PCAiXG5JZ25vcmlu
ZyBjYXNlIjsKICAgfQotICBpZiAoZXhwZWN0ZWRfdmFsdWUgIT0gZXhwZWN0ZWRfZXhwcmVzc2lv
bikgewotICAgIG1zZyA8PCAiXG5XaGljaCBpczogIiA8PCBleHBlY3RlZF92YWx1ZTsKKworICBp
ZiAoIWxoc192YWx1ZS5lbXB0eSgpICYmICFyaHNfdmFsdWUuZW1wdHkoKSkgeworICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBsaHNfbGluZXMgPQorICAgICAgICBTcGxpdEVzY2Fw
ZWRTdHJpbmcobGhzX3ZhbHVlKTsKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4g
cmhzX2xpbmVzID0KKyAgICAgICAgU3BsaXRFc2NhcGVkU3RyaW5nKHJoc192YWx1ZSk7CisgICAg
aWYgKGxoc19saW5lcy5zaXplKCkgPiAxIHx8IHJoc19saW5lcy5zaXplKCkgPiAxKSB7CisgICAg
ICBtc2cgPDwgIlxuV2l0aCBkaWZmOlxuIgorICAgICAgICAgIDw8IGVkaXRfZGlzdGFuY2U6OkNy
ZWF0ZVVuaWZpZWREaWZmKGxoc19saW5lcywgcmhzX2xpbmVzKTsKKyAgICB9CiAgIH0KIAotICBy
ZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgp
IDw8IG1zZzsKIH0KIAogLy8gQ29uc3RydWN0cyBhIGZhaWx1cmUgbWVzc2FnZSBmb3IgQm9vbGVh
biBhc3NlcnRpb25zIHN1Y2ggYXMgRVhQRUNUX1RSVUUuCi1TdHJpbmcgR2V0Qm9vbEFzc2VydGlv
bkZhaWx1cmVNZXNzYWdlKGNvbnN0IEFzc2VydGlvblJlc3VsdCYgYXNzZXJ0aW9uX3Jlc3VsdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwcmVz
c2lvbl90ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBhY3R1YWxfcHJlZGljYXRlX3ZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBleHBlY3RlZF9wcmVkaWNhdGVfdmFsdWUpIHsKK3N0ZDo6
c3RyaW5nIEdldEJvb2xBc3NlcnRpb25GYWlsdXJlTWVzc2FnZSgKKyAgICBjb25zdCBBc3NlcnRp
b25SZXN1bHQmIGFzc2VydGlvbl9yZXN1bHQsCisgICAgY29uc3QgY2hhciogZXhwcmVzc2lvbl90
ZXh0LAorICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9wcmVkaWNhdGVfdmFsdWUsCisgICAgY29uc3Qg
Y2hhciogZXhwZWN0ZWRfcHJlZGljYXRlX3ZhbHVlKSB7CiAgIGNvbnN0IGNoYXIqIGFjdHVhbF9t
ZXNzYWdlID0gYXNzZXJ0aW9uX3Jlc3VsdC5tZXNzYWdlKCk7CiAgIE1lc3NhZ2UgbXNnOwogICBt
c2cgPDwgIlZhbHVlIG9mOiAiIDw8IGV4cHJlc3Npb25fdGV4dApAQCAtMTA1OSwxMyArMTM3MCwx
MiBAQCBBc3NlcnRpb25SZXN1bHQgRG91YmxlTmVhclByZWRGb3JtYXQoY29uc3QgY2hhciogZXhw
cjEsCiAKICAgLy8gVE9ETyh3YW4pOiBkbyBub3QgcHJpbnQgdGhlIHZhbHVlIG9mIGFuIGV4cHJl
c3Npb24gaWYgaXQncwogICAvLyBhbHJlYWR5IGEgbGl0ZXJhbC4KLSAgTWVzc2FnZSBtc2c7Ci0g
IG1zZyA8PCAiVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAiIDw8IGV4cHIxIDw8ICIgYW5kICIgPDwg
ZXhwcjIKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwgIlRoZSBkaWZmZXJl
bmNlIGJldHdlZW4gIiA8PCBleHByMSA8PCAiIGFuZCAiIDw8IGV4cHIyCiAgICAgICA8PCAiIGlz
ICIgPDwgZGlmZiA8PCAiLCB3aGljaCBleGNlZWRzICIgPDwgYWJzX2Vycm9yX2V4cHIgPDwgIiwg
d2hlcmVcbiIKICAgICAgIDw8IGV4cHIxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdmFsMSA8PCAi
LFxuIgogICAgICAgPDwgZXhwcjIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2YWwyIDw8ICIsIGFu
ZFxuIgogICAgICAgPDwgYWJzX2Vycm9yX2V4cHIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCBhYnNf
ZXJyb3IgPDwgIi4iOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogCiAKQEAg
LTEwOTAsMjAgKzE0MDAsMTggQEAgQXNzZXJ0aW9uUmVzdWx0IEZsb2F0aW5nUG9pbnRMRShjb25z
dCBjaGFyKiBleHByMSwKICAgLy8gdmFsMiBpcyBOYU4sIGFzIHRoZSBJRUVFIGZsb2F0aW5nLXBv
aW50IHN0YW5kYXJkIHJlcXVpcmVzIHRoYXQKICAgLy8gYW55IHByZWRpY2F0ZSBpbnZvbHZpbmcg
YSBOYU4gbXVzdCByZXR1cm4gZmFsc2UuCiAKLSAgU3RyU3RyZWFtIHZhbDFfc3M7CisgIDo6c3Rk
OjpzdHJpbmdzdHJlYW0gdmFsMV9zczsKICAgdmFsMV9zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihz
dGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+OjpkaWdpdHMxMCArIDIpCiAgICAgICAgICAgPDwg
dmFsMTsKIAotICBTdHJTdHJlYW0gdmFsMl9zczsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSB2YWwy
X3NzOwogICB2YWwyX3NzIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8
UmF3VHlwZT46OmRpZ2l0czEwICsgMikKICAgICAgICAgICA8PCB2YWwyOwogCi0gIE1lc3NhZ2Ug
bXNnOwotICBtc2cgPDwgIkV4cGVjdGVkOiAoIiA8PCBleHByMSA8PCAiKSA8PSAoIiA8PCBleHBy
MiA8PCAiKVxuIgotICAgICAgPDwgIiAgQWN0dWFsOiAiIDw8IFN0clN0cmVhbVRvU3RyaW5nKCZ2
YWwxX3NzKSA8PCAiIHZzICIKLSAgICAgIDw8IFN0clN0cmVhbVRvU3RyaW5nKCZ2YWwyX3NzKTsK
LQotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFp
bHVyZSgpCisgICAgICA8PCAiRXhwZWN0ZWQ6ICgiIDw8IGV4cHIxIDw8ICIpIDw9ICgiIDw8IGV4
cHIyIDw8ICIpXG4iCisgICAgICA8PCAiICBBY3R1YWw6ICIgPDwgU3RyaW5nU3RyZWFtVG9TdHJp
bmcoJnZhbDFfc3MpIDw8ICIgdnMgIgorICAgICAgPDwgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnZh
bDJfc3MpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKQEAgLTExMjYsMTggKzE0MzQs
MTggQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIAogLy8gVGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ig
e0FTU0VSVHxFWFBFQ1R9X0VRIHdpdGggaW50IG9yIGVudW0KIC8vIGFyZ3VtZW50cy4KLUFzc2Vy
dGlvblJlc3VsdCBDbXBIZWxwZXJFUShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgZXhwZWN0ZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBhY3R1YWwpIHsKLSAgaWYgKGV4cGVj
dGVkID09IGFjdHVhbCkgeworQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRKGNvbnN0IGNoYXIq
IGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQg
bGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgcmhzKSB7CisgIGlm
IChsaHMgPT0gcmhzKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQogCi0g
IHJldHVybiBFcUZhaWx1cmUoZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAg
ICBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2UoZXhwZWN0ZWQsIGFjdHVhbCksCi0gICAgICAgICAgICAgICAgICAg
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKGFjdHVhbCwgZXhwZWN0ZWQpLAorICBy
ZXR1cm4gRXFGYWlsdXJlKGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIHJoc19l
eHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJl
TWVzc2FnZShsaHMsIHJocyksCisgICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNv
bkZhaWx1cmVNZXNzYWdlKHJocywgbGhzKSwKICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CiB9
CiAKQEAgLTExNTAsMTEgKzE0NTgsMTAgQEAgQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlciMjb3Bf
bmFtZShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIsIFwKICAgaWYgKHZhbDEg
b3AgdmFsMikge1wKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpO1wKICAgfSBlbHNlIHtc
Ci0gICAgTWVzc2FnZSBtc2c7XAotICAgIG1zZyA8PCAiRXhwZWN0ZWQ6ICgiIDw8IGV4cHIxIDw8
ICIpICIgI29wICIgKCIgPDwgZXhwcjJcCisgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSBc
CisgICAgICAgIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgIiAjb3AgIiAoIiA8PCBl
eHByMlwKICAgICAgICAgPDwgIiksIGFjdHVhbDogIiA8PCBGb3JtYXRGb3JDb21wYXJpc29uRmFp
bHVyZU1lc3NhZ2UodmFsMSwgdmFsMilcCiAgICAgICAgIDw8ICIgdnMgIiA8PCBGb3JtYXRGb3JD
b21wYXJpc29uRmFpbHVyZU1lc3NhZ2UodmFsMiwgdmFsMSk7XAotICAgIHJldHVybiBBc3NlcnRp
b25GYWlsdXJlKG1zZyk7XAogICB9XAogfQogCkBAIC0xMTc3LDM0ICsxNDg0LDM0IEBAIEdURVNU
X0lNUExfQ01QX0hFTFBFUl8oR1QsID4gKQogI3VuZGVmIEdURVNUX0lNUExfQ01QX0hFTFBFUl8K
IAogLy8gVGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NUUkVRLgotQXNz
ZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4
cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhw
ZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFs
KSB7Ci0gIGlmIChTdHJpbmc6OkNTdHJpbmdFcXVhbHMoZXhwZWN0ZWQsIGFjdHVhbCkpIHsKK0Fz
c2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBsaHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzKSB7CisgIGlmIChTdHJp
bmc6OkNTdHJpbmdFcXVhbHMobGhzLCByaHMpKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nl
c3MoKTsKICAgfQogCi0gIHJldHVybiBFcUZhaWx1cmUoZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBT
dHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAgICAgICBT
dHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKGFjdHVhbCksCisgIHJldHVybiBFcUZhaWx1cmUobGhz
X2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAg
ICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhsaHMpLAorICAgICAgICAgICAgICAgICAgIFByaW50
VG9TdHJpbmcocmhzKSwKICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CiB9CiAKIC8vIFRoZSBo
ZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9TVFJDQVNFRVEuCi1Bc3NlcnRpb25S
ZXN1bHQgQ21wSGVscGVyU1RSQ0FTRUVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9l
eHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogYWN0dWFsKSB7Ci0gIGlmIChTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMo
ZXhwZWN0ZWQsIGFjdHVhbCkpIHsKK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJDQVNFRVEo
Y29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHJocykgeworICBpZiAoU3RyaW5nOjpDYXNlSW5zZW5zaXRp
dmVDU3RyaW5nRXF1YWxzKGxocywgcmhzKSkgewogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNz
KCk7CiAgIH0KIAotICByZXR1cm4gRXFGYWlsdXJlKGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAg
ICAgICAgICAgICAgICAgYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgU3Ry
aW5nOjpTaG93Q1N0cmluZ1F1b3RlZChleHBlY3RlZCksCi0gICAgICAgICAgICAgICAgICAgU3Ry
aW5nOjpTaG93Q1N0cmluZ1F1b3RlZChhY3R1YWwpLAorICByZXR1cm4gRXFGYWlsdXJlKGxoc19l
eHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIHJoc19leHByZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgIFByaW50VG9TdHJpbmcobGhzKSwKKyAgICAgICAgICAgICAgICAgICBQcmludFRv
U3RyaW5nKHJocyksCiAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7CiB9CiAKQEAgLTEyMTYsMTEg
KzE1MjMsOSBAQCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSTkUoY29uc3QgY2hhciogczFf
ZXhwcmVzc2lvbiwKICAgaWYgKCFTdHJpbmc6OkNTdHJpbmdFcXVhbHMoczEsIHMyKSkgewogICAg
IHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAgIH0gZWxzZSB7Ci0gICAgTWVzc2FnZSBtc2c7
Ci0gICAgbXNnIDw8ICJFeHBlY3RlZDogKCIgPDwgczFfZXhwcmVzc2lvbiA8PCAiKSAhPSAoIgot
ICAgICAgICA8PCBzMl9leHByZXNzaW9uIDw8ICIpLCBhY3R1YWw6IFwiIgotICAgICAgICA8PCBz
MSA8PCAiXCIgdnMgXCIiIDw8IHMyIDw8ICJcIiI7Ci0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1
cmUobXNnKTsKKyAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJFeHBlY3RlZDogKCIg
PDwgczFfZXhwcmVzc2lvbiA8PCAiKSAhPSAoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgczJfZXhwcmVzc2lvbiA8PCAiKSwgYWN0dWFsOiBcIiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDw8IHMxIDw8ICJcIiB2cyBcIiIgPDwgczIgPDwgIlwiIjsKICAgfQogfQog
CkBAIC0xMjMyLDExICsxNTM3LDEwIEBAIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJDQVNF
TkUoY29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKICAgaWYgKCFTdHJpbmc6OkNhc2VJbnNlbnNp
dGl2ZUNTdHJpbmdFcXVhbHMoczEsIHMyKSkgewogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNz
KCk7CiAgIH0gZWxzZSB7Ci0gICAgTWVzc2FnZSBtc2c7Ci0gICAgbXNnIDw8ICJFeHBlY3RlZDog
KCIgPDwgczFfZXhwcmVzc2lvbiA8PCAiKSAhPSAoIgorICAgIHJldHVybiBBc3NlcnRpb25GYWls
dXJlKCkKKyAgICAgICAgPDwgIkV4cGVjdGVkOiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9
ICgiCiAgICAgICAgIDw8IHMyX2V4cHJlc3Npb24gPDwgIikgKGlnbm9yaW5nIGNhc2UpLCBhY3R1
YWw6IFwiIgogICAgICAgICA8PCBzMSA8PCAiXCIgdnMgXCIiIDw8IHMyIDw8ICJcIiI7Ci0gICAg
cmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKICAgfQogfQogCkBAIC0xMjg1LDEzICsxNTg5
LDEyIEBAIEFzc2VydGlvblJlc3VsdCBJc1N1YnN0cmluZ0ltcGwoCiAKICAgY29uc3QgYm9vbCBp
c193aWRlX3N0cmluZyA9IHNpemVvZihuZWVkbGVbMF0pID4gMTsKICAgY29uc3QgY2hhciogY29u
c3QgYmVnaW5fc3RyaW5nX3F1b3RlID0gaXNfd2lkZV9zdHJpbmcgPyAiTFwiIiA6ICJcIiI7Ci0g
IHJldHVybiBBc3NlcnRpb25GYWlsdXJlKAotICAgICAgTWVzc2FnZSgpCisgIHJldHVybiBBc3Nl
cnRpb25GYWlsdXJlKCkKICAgICAgIDw8ICJWYWx1ZSBvZjogIiA8PCBuZWVkbGVfZXhwciA8PCAi
XG4iCiAgICAgICA8PCAiICBBY3R1YWw6ICIgPDwgYmVnaW5fc3RyaW5nX3F1b3RlIDw8IG5lZWRs
ZSA8PCAiXCJcbiIKICAgICAgIDw8ICJFeHBlY3RlZDogIiA8PCAoZXhwZWN0ZWRfdG9fYmVfc3Vi
c3RyaW5nID8gIiIgOiAibm90ICIpCiAgICAgICA8PCAiYSBzdWJzdHJpbmcgb2YgIiA8PCBoYXlz
dGFja19leHByIDw8ICJcbiIKLSAgICAgIDw8ICJXaGljaCBpczogIiA8PCBiZWdpbl9zdHJpbmdf
cXVvdGUgPDwgaGF5c3RhY2sgPDwgIlwiIik7CisgICAgICA8PCAiV2hpY2ggaXM6ICIgPDwgYmVn
aW5fc3RyaW5nX3F1b3RlIDw8IGhheXN0YWNrIDw8ICJcIiI7CiB9CiAKIH0gIC8vIG5hbWVzcGFj
ZQpAQCAtMTM2MCwxNiArMTY2MywxOSBAQCBuYW1lc3BhY2UgewogQXNzZXJ0aW9uUmVzdWx0IEhS
RVNVTFRGYWlsdXJlSGVscGVyKGNvbnN0IGNoYXIqIGV4cHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9uZyBocikgeyAgLy8gTk9MSU5UCi0jaWYgR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUKKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKwogICAvLyBXaW5k
b3dzIENFIGRvZXNuJ3Qgc3VwcG9ydCBGb3JtYXRNZXNzYWdlLgogICBjb25zdCBjaGFyIGVycm9y
X3RleHRbXSA9ICIiOwotI2Vsc2UKKworIyBlbHNlCisKICAgLy8gTG9va3MgdXAgdGhlIGh1bWFu
LXJlYWRhYmxlIHN5c3RlbSBtZXNzYWdlIGZvciB0aGUgSFJFU1VMVCBjb2RlCiAgIC8vIGFuZCBz
aW5jZSB3ZSdyZSBub3QgcGFzc2luZyBhbnkgcGFyYW1zIHRvIEZvcm1hdE1lc3NhZ2UsIHdlIGRv
bid0CiAgIC8vIHdhbnQgaW5zZXJ0cyBleHBhbmRlZC4KICAgY29uc3QgRFdPUkQga0ZsYWdzID0g
Rk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0gfAogICAgICAgICAgICAgICAgICAgICAgICBGT1JN
QVRfTUVTU0FHRV9JR05PUkVfSU5TRVJUUzsKLSAgY29uc3QgRFdPUkQga0J1ZlNpemUgPSA0MDk2
OyAgLy8gU3RyaW5nOjpGb3JtYXQgY2FuJ3QgZXhjZWVkIHRoaXMgbGVuZ3RoLgorICBjb25zdCBE
V09SRCBrQnVmU2l6ZSA9IDQwOTY7CiAgIC8vIEdldHMgdGhlIHN5c3RlbSdzIGh1bWFuIHJlYWRh
YmxlIG1lc3NhZ2Ugc3RyaW5nIGZvciB0aGlzIEhSRVNVTFQuCiAgIGNoYXIgZXJyb3JfdGV4dFtr
QnVmU2l6ZV0gPSB7ICdcMCcgfTsKICAgRFdPUkQgbWVzc2FnZV9sZW5ndGggPSA6OkZvcm1hdE1l
c3NhZ2VBKGtGbGFncywKQEAgLTEzNzksMTkgKzE2ODUsMTggQEAgQXNzZXJ0aW9uUmVzdWx0IEhS
RVNVTFRGYWlsdXJlSGVscGVyKGNvbnN0IGNoYXIqIGV4cHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl90ZXh0LCAgLy8gb3V0cHV0IGJ1ZmZlcgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0J1ZlNpemUsICAvLyBidWYg
c2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7ICAv
LyBubyBhcmd1bWVudHMgZm9yIGluc2VydHMKLSAgLy8gVHJpbXMgdGFpbGluZyB3aGl0ZSBzcGFj
ZSAoRm9ybWF0TWVzc2FnZSBsZWF2ZXMgYSB0cmFpbGluZyBjci1sZikKLSAgZm9yICg7IG1lc3Nh
Z2VfbGVuZ3RoICYmIGlzc3BhY2UoZXJyb3JfdGV4dFttZXNzYWdlX2xlbmd0aCAtIDFdKTsKKyAg
Ly8gVHJpbXMgdGFpbGluZyB3aGl0ZSBzcGFjZSAoRm9ybWF0TWVzc2FnZSBsZWF2ZXMgYSB0cmFp
bGluZyBDUi1MRikKKyAgZm9yICg7IG1lc3NhZ2VfbGVuZ3RoICYmIElzU3BhY2UoZXJyb3JfdGV4
dFttZXNzYWdlX2xlbmd0aCAtIDFdKTsKICAgICAgICAgICAtLW1lc3NhZ2VfbGVuZ3RoKSB7CiAg
ICAgZXJyb3JfdGV4dFttZXNzYWdlX2xlbmd0aCAtIDFdID0gJ1wwJzsKICAgfQotI2VuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogCi0gIGNvbnN0IFN0cmluZyBlcnJvcl9oZXgoU3Ry
aW5nOjpGb3JtYXQoIjB4JTA4WCAiLCBocikpOwotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8ICJF
eHBlY3RlZDogIiA8PCBleHByIDw8ICIgIiA8PCBleHBlY3RlZCA8PCAiLlxuIgotICAgICAgPDwg
IiAgQWN0dWFsOiAiIDw8IGVycm9yX2hleCA8PCBlcnJvcl90ZXh0IDw8ICJcbiI7CisjIGVuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogCi0gIHJldHVybiA6OnRlc3Rpbmc6OkFzc2Vy
dGlvbkZhaWx1cmUobXNnKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZXJyb3JfaGV4KCIweCIgKyBT
dHJpbmc6OkZvcm1hdEhleEludChocikpOworICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25G
YWlsdXJlKCkKKyAgICAgIDw8ICJFeHBlY3RlZDogIiA8PCBleHByIDw8ICIgIiA8PCBleHBlY3Rl
ZCA8PCAiLlxuIgorICAgICAgPDwgIiAgQWN0dWFsOiAiIDw8IGVycm9yX2hleCA8PCAiICIgPDwg
ZXJyb3JfdGV4dCA8PCAiXG4iOwogfQogCiB9ICAvLyBuYW1lc3BhY2UKQEAgLTE0NDgsMTIgKzE3
NTMsMTUgQEAgaW5saW5lIFVJbnQzMiBDaG9wTG93Qml0cyhVSW50MzIqIGJpdHMsIGludCBuKSB7
CiAvLyBDb252ZXJ0cyBhIFVuaWNvZGUgY29kZSBwb2ludCB0byBhIG5hcnJvdyBzdHJpbmcgaW4g
VVRGLTggZW5jb2RpbmcuCiAvLyBjb2RlX3BvaW50IHBhcmFtZXRlciBpcyBvZiB0eXBlIFVJbnQz
MiBiZWNhdXNlIHdjaGFyX3QgbWF5IG5vdCBiZQogLy8gd2lkZSBlbm91Z2ggdG8gY29udGFpbiBh
IGNvZGUgcG9pbnQuCi0vLyBUaGUgb3V0cHV0IGJ1ZmZlciBzdHIgbXVzdCBjb250YWludCBhdCBs
ZWFzdCAzMiBjaGFyYWN0ZXJzLgotLy8gVGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIGFkZHJlc3Mg
b2YgdGhlIG91dHB1dCBidWZmZXIuCiAvLyBJZiB0aGUgY29kZV9wb2ludCBpcyBub3QgYSB2YWxp
ZCBVbmljb2RlIGNvZGUgcG9pbnQKLS8vIChpLmUuIG91dHNpZGUgb2YgVW5pY29kZSByYW5nZSBV
KzAgdG8gVSsxMEZGRkYpIGl0IHdpbGwgYmUgb3V0cHV0Ci0vLyBhcyAnKEludmFsaWQgVW5pY29k
ZSAweFhYWFhYWFhYKScuCi1jaGFyKiBDb2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQs
IGNoYXIqIHN0cikgeworLy8gKGkuZS4gb3V0c2lkZSBvZiBVbmljb2RlIHJhbmdlIFUrMCB0byBV
KzEwRkZGRikgaXQgd2lsbCBiZSBjb252ZXJ0ZWQKKy8vIHRvICIoSW52YWxpZCBVbmljb2RlIDB4
WFhYWFhYWFgpIi4KK3N0ZDo6c3RyaW5nIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9wb2lu
dCkgeworICBpZiAoY29kZV9wb2ludCA+IGtNYXhDb2RlUG9pbnQ0KSB7CisgICAgcmV0dXJuICIo
SW52YWxpZCBVbmljb2RlIDB4IiArIFN0cmluZzo6Rm9ybWF0SGV4SW50KGNvZGVfcG9pbnQpICsg
IikiOworICB9CisKKyAgY2hhciBzdHJbNV07ICAvLyBCaWcgZW5vdWdoIGZvciB0aGUgbGFyZ2Vz
dCB2YWxpZCBjb2RlIHBvaW50LgogICBpZiAoY29kZV9wb2ludCA8PSBrTWF4Q29kZVBvaW50MSkg
ewogICAgIHN0clsxXSA9ICdcMCc7CiAgICAgc3RyWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oY29k
ZV9wb2ludCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAweHh4eHh4eApAQCAtMTQ2Niwy
MiArMTc3NCwxMiBAQCBjaGFyKiBDb2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQsIGNo
YXIqIHN0cikgewogICAgIHN0clsyXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgfCBDaG9wTG93
Qml0cygmY29kZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKICAgICBzdHJbMV0gPSBzdGF0aWNf
Y2FzdDxjaGFyPigweDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVfcG9pbnQsIDYpKTsgIC8vIDEweHh4
eHh4CiAgICAgc3RyWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHhFMCB8IGNvZGVfcG9pbnQpOyAg
ICAgICAgICAgICAgICAgICAvLyAxMTEweHh4eAotICB9IGVsc2UgaWYgKGNvZGVfcG9pbnQgPD0g
a01heENvZGVQb2ludDQpIHsKKyAgfSBlbHNlIHsgIC8vIGNvZGVfcG9pbnQgPD0ga01heENvZGVQ
b2ludDQKICAgICBzdHJbNF0gPSAnXDAnOwogICAgIHN0clszXSA9IHN0YXRpY19jYXN0PGNoYXI+
KDB4ODAgfCBDaG9wTG93Qml0cygmY29kZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKICAgICBz
dHJbMl0gPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVfcG9pbnQs
IDYpKTsgIC8vIDEweHh4eHh4CiAgICAgc3RyWzFdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHg4MCB8
IENob3BMb3dCaXRzKCZjb2RlX3BvaW50LCA2KSk7ICAvLyAxMHh4eHh4eAogICAgIHN0clswXSA9
IHN0YXRpY19jYXN0PGNoYXI+KDB4RjAgfCBjb2RlX3BvaW50KTsgICAgICAgICAgICAgICAgICAg
Ly8gMTExMTB4eHgKLSAgfSBlbHNlIHsKLSAgICAvLyBUaGUgbG9uZ2VzdCBzdHJpbmcgU3RyaW5n
OjpGb3JtYXQgY2FuIHByb2R1Y2Ugd2hlbiBpbnZva2VkCi0gICAgLy8gd2l0aCB0aGVzZSBwYXJh
bWV0ZXJzIGlzIDI4IGNoYXJhY3RlciBsb25nIChub3QgaW5jbHVkaW5nCi0gICAgLy8gdGhlIHRl
cm1pbmF0aW5nIG51bCBjaGFyYWN0ZXIpLiBXZSBhcmUgYXNraW5nIGZvciAzMiBjaGFyYWN0ZXIK
LSAgICAvLyBidWZmZXIganVzdCBpbiBjYXNlLiBUaGlzIGlzIGFsc28gZW5vdWdoIGZvciBzdHJu
Y3B5IHRvCi0gICAgLy8gbnVsbC10ZXJtaW5hdGUgdGhlIGRlc3RpbmF0aW9uIHN0cmluZy4KLSAg
ICBwb3NpeDo6U3RyTkNweSgKLSAgICAgICAgc3RyLCBTdHJpbmc6OkZvcm1hdCgiKEludmFsaWQg
VW5pY29kZSAweCVYKSIsIGNvZGVfcG9pbnQpLmNfc3RyKCksIDMyKTsKLSAgICBzdHJbMzFdID0g
J1wwJzsgIC8vIE1ha2VzIHN1cmUgbm8gY2hhbmdlIGluIHRoZSBmb3JtYXQgdG8gc3RybmNweSBs
ZWF2ZXMKLSAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSByZXN1bHQgdW50ZXJtaW5hdGVkLgog
ICB9CiAgIHJldHVybiBzdHI7CiB9CkBAIC0xNTIyLDExICsxODIwLDExIEBAIGlubGluZSBVSW50
MzIgQ3JlYXRlQ29kZVBvaW50RnJvbVV0ZjE2U3Vycm9nYXRlUGFpcih3Y2hhcl90IGZpcnN0LAog
Ly8gYXMgJyhJbnZhbGlkIFVuaWNvZGUgMHhYWFhYWFhYWCknLiBJZiB0aGUgc3RyaW5nIGlzIGlu
IFVURjE2IGVuY29kaW5nCiAvLyBhbmQgY29udGFpbnMgaW52YWxpZCBVVEYtMTYgc3Vycm9nYXRl
IHBhaXJzLCB2YWx1ZXMgaW4gdGhvc2UgcGFpcnMKIC8vIHdpbGwgYmUgZW5jb2RlZCBhcyBpbmRp
dmlkdWFsIFVuaWNvZGUgY2hhcmFjdGVycyBmcm9tIEJhc2ljIE5vcm1hbCBQbGFuZS4KLVN0cmlu
ZyBXaWRlU3RyaW5nVG9VdGY4KGNvbnN0IHdjaGFyX3QqIHN0ciwgaW50IG51bV9jaGFycykgewor
c3RkOjpzdHJpbmcgV2lkZVN0cmluZ1RvVXRmOChjb25zdCB3Y2hhcl90KiBzdHIsIGludCBudW1f
Y2hhcnMpIHsKICAgaWYgKG51bV9jaGFycyA9PSAtMSkKICAgICBudW1fY2hhcnMgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHdjc2xlbihzdHIpKTsKIAotICBTdHJTdHJlYW0gc3RyZWFtOworICA6OnN0ZDo6
c3RyaW5nc3RyZWFtIHN0cmVhbTsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fY2hhcnM7ICsr
aSkgewogICAgIFVJbnQzMiB1bmljb2RlX2NvZGVfcG9pbnQ7CiAKQEAgLTE1NDAsMjcgKzE4Mzgs
MTcgQEAgU3RyaW5nIFdpZGVTdHJpbmdUb1V0ZjgoY29uc3Qgd2NoYXJfdCogc3RyLCBpbnQgbnVt
X2NoYXJzKSB7CiAgICAgICB1bmljb2RlX2NvZGVfcG9pbnQgPSBzdGF0aWNfY2FzdDxVSW50MzI+
KHN0cltpXSk7CiAgICAgfQogCi0gICAgY2hhciBidWZmZXJbMzJdOyAgLy8gQ29kZVBvaW50VG9V
dGY4IHJlcXVpcmVzIGEgYnVmZmVyIHRoaXMgYmlnLgotICAgIHN0cmVhbSA8PCBDb2RlUG9pbnRU
b1V0ZjgodW5pY29kZV9jb2RlX3BvaW50LCBidWZmZXIpOworICAgIHN0cmVhbSA8PCBDb2RlUG9p
bnRUb1V0ZjgodW5pY29kZV9jb2RlX3BvaW50KTsKICAgfQotICByZXR1cm4gU3RyU3RyZWFtVG9T
dHJpbmcoJnN0cmVhbSk7CisgIHJldHVybiBTdHJpbmdTdHJlYW1Ub1N0cmluZygmc3RyZWFtKTsK
IH0KIAotLy8gQ29udmVydHMgYSB3aWRlIEMgc3RyaW5nIHRvIGEgU3RyaW5nIHVzaW5nIHRoZSBV
VEYtOCBlbmNvZGluZy4KKy8vIENvbnZlcnRzIGEgd2lkZSBDIHN0cmluZyB0byBhbiBzdGQ6OnN0
cmluZyB1c2luZyB0aGUgVVRGLTggZW5jb2RpbmcuCiAvLyBOVUxMIHdpbGwgYmUgY29udmVydGVk
IHRvICIobnVsbCkiLgotU3RyaW5nIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKGNvbnN0IHdjaGFy
X3QgKiB3aWRlX2Nfc3RyKSB7Ci0gIGlmICh3aWRlX2Nfc3RyID09IE5VTEwpIHJldHVybiBTdHJp
bmcoIihudWxsKSIpOwotCi0gIHJldHVybiBTdHJpbmcoaW50ZXJuYWw6OldpZGVTdHJpbmdUb1V0
Zjgod2lkZV9jX3N0ciwgLTEpLmNfc3RyKCkpOwotfQotCi0vLyBTaW1pbGFyIHRvIFNob3dXaWRl
Q1N0cmluZygpLCBleGNlcHQgdGhhdCB0aGlzIGZ1bmN0aW9uIGVuY2xvc2VzCi0vLyB0aGUgY29u
dmVydGVkIHN0cmluZyBpbiBkb3VibGUgcXVvdGVzLgotU3RyaW5nIFN0cmluZzo6U2hvd1dpZGVD
U3RyaW5nUXVvdGVkKGNvbnN0IHdjaGFyX3QqIHdpZGVfY19zdHIpIHsKLSAgaWYgKHdpZGVfY19z
dHIgPT0gTlVMTCkgcmV0dXJuIFN0cmluZygiKG51bGwpIik7CitzdGQ6OnN0cmluZyBTdHJpbmc6
OlNob3dXaWRlQ1N0cmluZyhjb25zdCB3Y2hhcl90ICogd2lkZV9jX3N0cikgeworICBpZiAod2lk
ZV9jX3N0ciA9PSBOVUxMKSAgcmV0dXJuICIobnVsbCkiOwogCi0gIHJldHVybiBTdHJpbmc6OkZv
cm1hdCgiTFwiJXNcIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmc6OlNob3dXaWRl
Q1N0cmluZyh3aWRlX2Nfc3RyKS5jX3N0cigpKTsKKyAgcmV0dXJuIGludGVybmFsOjpXaWRlU3Ry
aW5nVG9VdGY4KHdpZGVfY19zdHIsIC0xKTsKIH0KIAogLy8gQ29tcGFyZXMgdHdvIHdpZGUgQyBz
dHJpbmdzLiAgUmV0dXJucyB0cnVlIGlmZiB0aGV5IGhhdmUgdGhlIHNhbWUKQEAgLTE1NzgsMTgg
KzE4NjYsMTggQEAgYm9vbCBTdHJpbmc6OldpZGVDU3RyaW5nRXF1YWxzKGNvbnN0IHdjaGFyX3Qg
KiBsaHMsIGNvbnN0IHdjaGFyX3QgKiByaHMpIHsKIH0KIAogLy8gSGVscGVyIGZ1bmN0aW9uIGZv
ciAqX1NUUkVRIG9uIHdpZGUgc3RyaW5ncy4KLUFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJF
UShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIGV4cGVjdGVkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIGFjdHVhbCkgewotICBpZiAoU3RyaW5nOjpX
aWRlQ1N0cmluZ0VxdWFscyhleHBlY3RlZCwgYWN0dWFsKSkgeworQXNzZXJ0aW9uUmVzdWx0IENt
cEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIGxocywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiByaHMpIHsKKyAgaWYgKFN0cmluZzo6V2lkZUNT
dHJpbmdFcXVhbHMobGhzLCByaHMpKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsK
ICAgfQogCi0gIHJldHVybiBFcUZhaWx1cmUoZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAg
ICAgICAgICAgICBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBTdHJpbmc6
OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChleHBlY3RlZCksCi0gICAgICAgICAgICAgICAgICAgU3Ry
aW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoYWN0dWFsKSwKKyAgcmV0dXJuIEVxRmFpbHVyZShs
aHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICByaHNfZXhwcmVzc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKGxocyksCisgICAgICAgICAgICAgICAgICAgUHJp
bnRUb1N0cmluZyhyaHMpLAogICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKIH0KIApAQCAtMTYw
MiwxMiArMTg5MCwxMCBAQCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSTkUoY29uc3QgY2hh
ciogczFfZXhwcmVzc2lvbiwKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9CiAK
LSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4cHJlc3Npb24g
PDwgIikgIT0gKCIKLSAgICAgIDw8IHMyX2V4cHJlc3Npb24gPDwgIiksIGFjdHVhbDogIgotICAg
ICAgPDwgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoczEpCi0gICAgICA8PCAiIHZzICIg
PDwgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoczIpOwotICByZXR1cm4gQXNzZXJ0aW9u
RmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJFeHBlY3RlZDog
KCIgPDwgczFfZXhwcmVzc2lvbiA8PCAiKSAhPSAoIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8IHMyX2V4cHJlc3Npb24gPDwgIiksIGFjdHVhbDogIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDw8IFByaW50VG9TdHJpbmcoczEpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIiB2cyAiIDw8IFByaW50VG9TdHJpbmcoczIpOwogfQogCiAvLyBDb21wYXJlcyB0d28g
QyBzdHJpbmdzLCBpZ25vcmluZyBjYXNlLiAgUmV0dXJucyB0cnVlIGlmZiB0aGV5IGhhdmUKQEAg
LTE2MzgsMTcgKzE5MjQsMTcgQEAgYm9vbCBTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZUNTdHJpbmdF
cXVhbHMoY29uc3QgY2hhciAqIGxocywgY29uc3QgY2hhciAqIHJocykgewogICAvLyBjdXJyZW50
IGxvY2FsZS4KIGJvb2wgU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscyhj
b25zdCB3Y2hhcl90KiBsaHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgd2NoYXJfdCogcmhzKSB7Ci0gIGlmICggbGhzID09IE5VTEwgKSByZXR1
cm4gcmhzID09IE5VTEw7CisgIGlmIChsaHMgPT0gTlVMTCkgcmV0dXJuIHJocyA9PSBOVUxMOwog
Ci0gIGlmICggcmhzID09IE5VTEwgKSByZXR1cm4gZmFsc2U7CisgIGlmIChyaHMgPT0gTlVMTCkg
cmV0dXJuIGZhbHNlOwogCiAjaWYgR1RFU1RfT1NfV0lORE9XUwogICByZXR1cm4gX3djc2ljbXAo
bGhzLCByaHMpID09IDA7Ci0jZWxpZiBHVEVTVF9PU19MSU5VWAorI2VsaWYgR1RFU1RfT1NfTElO
VVggJiYgIUdURVNUX09TX0xJTlVYX0FORFJPSUQKICAgcmV0dXJuIHdjc2Nhc2VjbXAobGhzLCBy
aHMpID09IDA7CiAjZWxzZQotICAvLyBNYWMgT1MgWCBhbmQgQ3lnd2luIGRvbid0IGRlZmluZSB3
Y3NjYXNlY21wLiAgT3RoZXIgdW5rbm93biBPU2VzCi0gIC8vIG1heSBub3QgZGVmaW5lIGl0IGVp
dGhlci4KKyAgLy8gQW5kcm9pZCwgTWFjIE9TIFggYW5kIEN5Z3dpbiBkb24ndCBkZWZpbmUgd2Nz
Y2FzZWNtcC4KKyAgLy8gT3RoZXIgdW5rbm93biBPU2VzIG1heSBub3QgZGVmaW5lIGl0IGVpdGhl
ci4KICAgd2ludF90IGxlZnQsIHJpZ2h0OwogICBkbyB7CiAgICAgbGVmdCA9IHRvd2xvd2VyKCps
aHMrKyk7CkBAIC0xNjU4LDEzMyArMTk0NCw2OSBAQCBib29sIFN0cmluZzo6Q2FzZUluc2Vuc2l0
aXZlV2lkZUNTdHJpbmdFcXVhbHMoY29uc3Qgd2NoYXJfdCogbGhzLAogI2VuZGlmICAvLyBPUyBz
ZWxlY3RvcgogfQogCi0vLyBDb21wYXJlcyB0aGlzIHdpdGggYW5vdGhlciBTdHJpbmcuCi0vLyBS
ZXR1cm5zIDwgMCBpZiB0aGlzIGlzIGxlc3MgdGhhbiByaHMsIDAgaWYgdGhpcyBpcyBlcXVhbCB0
byByaHMsIG9yID4gMAotLy8gaWYgdGhpcyBpcyBncmVhdGVyIHRoYW4gcmhzLgotaW50IFN0cmlu
Zzo6Q29tcGFyZShjb25zdCBTdHJpbmcgJiByaHMpIGNvbnN0IHsKLSAgY29uc3QgY2hhciogY29u
c3QgbGhzX2Nfc3RyID0gY19zdHIoKTsKLSAgY29uc3QgY2hhciogY29uc3QgcmhzX2Nfc3RyID0g
cmhzLmNfc3RyKCk7Ci0KLSAgaWYgKGxoc19jX3N0ciA9PSBOVUxMKSB7Ci0gICAgcmV0dXJuIHJo
c19jX3N0ciA9PSBOVUxMID8gMCA6IC0xOyAgLy8gTlVMTCA8IGFueXRoaW5nIGV4Y2VwdCBOVUxM
Ci0gIH0gZWxzZSBpZiAocmhzX2Nfc3RyID09IE5VTEwpIHsKLSAgICByZXR1cm4gMTsKLSAgfQot
Ci0gIGNvbnN0IHNpemVfdCBzaG9ydGVyX3N0cl9sZW4gPQotICAgICAgbGVuZ3RoKCkgPD0gcmhz
Lmxlbmd0aCgpID8gbGVuZ3RoKCkgOiByaHMubGVuZ3RoKCk7Ci0gIGZvciAoc2l6ZV90IGkgPSAw
OyBpICE9IHNob3J0ZXJfc3RyX2xlbjsgaSsrKSB7Ci0gICAgaWYgKGxoc19jX3N0cltpXSA8IHJo
c19jX3N0cltpXSkgewotICAgICAgcmV0dXJuIC0xOwotICAgIH0gZWxzZSBpZiAobGhzX2Nfc3Ry
W2ldID4gcmhzX2Nfc3RyW2ldKSB7Ci0gICAgICByZXR1cm4gMTsKLSAgICB9Ci0gIH0KLSAgcmV0
dXJuIChsZW5ndGgoKSA8IHJocy5sZW5ndGgoKSkgPyAtMSA6Ci0gICAgICAobGVuZ3RoKCkgPiBy
aHMubGVuZ3RoKCkpID8gMSA6IDA7CisvLyBSZXR1cm5zIHRydWUgaWZmIHN0ciBlbmRzIHdpdGgg
dGhlIGdpdmVuIHN1ZmZpeCwgaWdub3JpbmcgY2FzZS4KKy8vIEFueSBzdHJpbmcgaXMgY29uc2lk
ZXJlZCB0byBlbmQgd2l0aCBhbiBlbXB0eSBzdWZmaXguCitib29sIFN0cmluZzo6RW5kc1dpdGhD
YXNlSW5zZW5zaXRpdmUoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0ciwgY29uc3Qgc3RkOjpz
dHJpbmcmIHN1ZmZpeCkgeworICBjb25zdCBzaXplX3Qgc3RyX2xlbiA9IHN0ci5sZW5ndGgoKTsK
KyAgY29uc3Qgc2l6ZV90IHN1ZmZpeF9sZW4gPSBzdWZmaXgubGVuZ3RoKCk7CisgIHJldHVybiAo
c3RyX2xlbiA+PSBzdWZmaXhfbGVuKSAmJgorICAgICAgICAgQ2FzZUluc2Vuc2l0aXZlQ1N0cmlu
Z0VxdWFscyhzdHIuY19zdHIoKSArIHN0cl9sZW4gLSBzdWZmaXhfbGVuLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXguY19zdHIoKSk7CiB9CiAKLS8vIFJldHVy
bnMgdHJ1ZSBpZmYgdGhpcyBTdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXguICAqQW55
KgotLy8gU3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGggYSBOVUxMIG9yIGVtcHR5IHN1
ZmZpeC4KLWJvb2wgU3RyaW5nOjpFbmRzV2l0aChjb25zdCBjaGFyKiBzdWZmaXgpIGNvbnN0IHsK
LSAgaWYgKHN1ZmZpeCA9PSBOVUxMIHx8IENTdHJpbmdFcXVhbHMoc3VmZml4LCAiIikpIHJldHVy
biB0cnVlOwotCi0gIGlmIChjX3N0cigpID09IE5VTEwpIHJldHVybiBmYWxzZTsKLQotICBjb25z
dCBzaXplX3QgdGhpc19sZW4gPSBzdHJsZW4oY19zdHIoKSk7Ci0gIGNvbnN0IHNpemVfdCBzdWZm
aXhfbGVuID0gc3RybGVuKHN1ZmZpeCk7Ci0gIHJldHVybiAodGhpc19sZW4gPj0gc3VmZml4X2xl
bikgJiYKLSAgICAgICAgIENTdHJpbmdFcXVhbHMoY19zdHIoKSArIHRoaXNfbGVuIC0gc3VmZml4
X2xlbiwgc3VmZml4KTsKKy8vIEZvcm1hdHMgYW4gaW50IHZhbHVlIGFzICIlMDJkIi4KK3N0ZDo6
c3RyaW5nIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKGludCB2YWx1ZSkgeworICBzdGQ6OnN0cmlu
Z3N0cmVhbSBzczsKKyAgc3MgPDwgc3RkOjpzZXRmaWxsKCcwJykgPDwgc3RkOjpzZXR3KDIpIDw8
IHZhbHVlOworICByZXR1cm4gc3Muc3RyKCk7CiB9CiAKLS8vIFJldHVybnMgdHJ1ZSBpZmYgdGhp
cyBTdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXgsIGlnbm9yaW5nIGNhc2UuCi0vLyBB
bnkgU3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGggYSBOVUxMIG9yIGVtcHR5IHN1ZmZp
eC4KLWJvb2wgU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZShjb25zdCBjaGFyKiBzdWZm
aXgpIGNvbnN0IHsKLSAgaWYgKHN1ZmZpeCA9PSBOVUxMIHx8IENTdHJpbmdFcXVhbHMoc3VmZml4
LCAiIikpIHJldHVybiB0cnVlOwotCi0gIGlmIChjX3N0cigpID09IE5VTEwpIHJldHVybiBmYWxz
ZTsKLQotICBjb25zdCBzaXplX3QgdGhpc19sZW4gPSBzdHJsZW4oY19zdHIoKSk7Ci0gIGNvbnN0
IHNpemVfdCBzdWZmaXhfbGVuID0gc3RybGVuKHN1ZmZpeCk7Ci0gIHJldHVybiAodGhpc19sZW4g
Pj0gc3VmZml4X2xlbikgJiYKLSAgICAgICAgIENhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMo
Y19zdHIoKSArIHRoaXNfbGVuIC0gc3VmZml4X2xlbiwgc3VmZml4KTsKKy8vIEZvcm1hdHMgYW4g
aW50IHZhbHVlIGFzICIlWCIuCitzdGQ6OnN0cmluZyBTdHJpbmc6OkZvcm1hdEhleEludChpbnQg
dmFsdWUpIHsKKyAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIHNzIDw8IHN0ZDo6aGV4IDw8IHN0
ZDo6dXBwZXJjYXNlIDw8IHZhbHVlOworICByZXR1cm4gc3Muc3RyKCk7CiB9CiAKLS8vIEZvcm1h
dHMgYSBsaXN0IG9mIGFyZ3VtZW50cyB0byBhIFN0cmluZywgdXNpbmcgdGhlIHNhbWUgZm9ybWF0
Ci0vLyBzcGVjIHN0cmluZyBhcyBmb3IgcHJpbnRmLgotLy8KLS8vIFdlIGRvIG5vdCB1c2UgdGhl
IFN0cmluZ1ByaW50ZiBjbGFzcyBhcyBpdCBpcyBub3QgdW5pdmVyc2FsbHkKLS8vIGF2YWlsYWJs
ZS4KLS8vCi0vLyBUaGUgcmVzdWx0IGlzIGxpbWl0ZWQgdG8gNDA5NiBjaGFyYWN0ZXJzIChpbmNs
dWRpbmcgdGhlIHRhaWxpbmcgMCkuCi0vLyBJZiA0MDk2IGNoYXJhY3RlcnMgYXJlIG5vdCBlbm91
Z2ggdG8gZm9ybWF0IHRoZSBpbnB1dCwgb3IgaWYKLS8vIHRoZXJlJ3MgYW4gZXJyb3IsICI8Zm9y
bWF0dGluZyBlcnJvciBvciBidWZmZXIgZXhjZWVkZWQ+IiBpcwotLy8gcmV0dXJuZWQuCi1TdHJp
bmcgU3RyaW5nOjpGb3JtYXQoY29uc3QgY2hhciAqIGZvcm1hdCwgLi4uKSB7Ci0gIHZhX2xpc3Qg
YXJnczsKLSAgdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKLQotICBjaGFyIGJ1ZmZlcls0MDk2XTsK
LSAgY29uc3QgaW50IGtCdWZmZXJTaXplID0gc2l6ZW9mKGJ1ZmZlcikvc2l6ZW9mKGJ1ZmZlclsw
XSk7Ci0KLSAgLy8gTVNWQyA4IGRlcHJlY2F0ZXMgdnNucHJpbnRmKCksIHNvIHdlIHdhbnQgdG8g
c3VwcHJlc3Mgd2FybmluZwotICAvLyA0OTk2IChkZXByZWNhdGVkIGZ1bmN0aW9uKSB0aGVyZS4K
LSNpZmRlZiBfTVNDX1ZFUiAgLy8gV2UgYXJlIHVzaW5nIE1TVkMuCi0jcHJhZ21hIHdhcm5pbmco
cHVzaCkgICAgICAgICAgLy8gU2F2ZXMgdGhlIGN1cnJlbnQgd2FybmluZyBzdGF0ZS4KLSNwcmFn
bWEgd2FybmluZyhkaXNhYmxlOjQ5OTYpICAvLyBUZW1wb3JhcmlseSBkaXNhYmxlcyB3YXJuaW5n
IDQ5OTYuCi0gIGNvbnN0IGludCBzaXplID0gdnNucHJpbnRmKGJ1ZmZlciwga0J1ZmZlclNpemUs
IGZvcm1hdCwgYXJncyk7Ci0jcHJhZ21hIHdhcm5pbmcocG9wKSAgICAgICAgICAgLy8gUmVzdG9y
ZXMgdGhlIHdhcm5pbmcgc3RhdGUuCi0jZWxzZSAgLy8gV2UgYXJlIG5vdCB1c2luZyBNU1ZDLgot
ICBjb25zdCBpbnQgc2l6ZSA9IHZzbnByaW50ZihidWZmZXIsIGtCdWZmZXJTaXplLCBmb3JtYXQs
IGFyZ3MpOwotI2VuZGlmICAvLyBfTVNDX1ZFUgotICB2YV9lbmQoYXJncyk7Ci0KLSAgLy8gdnNu
cHJpbnRmKCkncyBiZWhhdmlvciBpcyBub3QgcG9ydGFibGUuICBXaGVuIHRoZSBidWZmZXIgaXMg
bm90Ci0gIC8vIGJpZyBlbm91Z2gsIGl0IHJldHVybnMgYSBuZWdhdGl2ZSB2YWx1ZSBpbiBNU1ZD
LCBhbmQgcmV0dXJucyB0aGUKLSAgLy8gbmVlZGVkIGJ1ZmZlciBzaXplIG9uIExpbnV4LiAgV2hl
biB0aGVyZSBpcyBhbiBvdXRwdXQgZXJyb3IsIGl0Ci0gIC8vIGFsd2F5cyByZXR1cm5zIGEgbmVn
YXRpdmUgdmFsdWUuICBGb3Igc2ltcGxpY2l0eSwgd2UgbHVtcCB0aGUgdHdvCi0gIC8vIGVycm9y
IGNhc2VzIHRvZ2V0aGVyLgotICBpZiAoc2l6ZSA8IDAgfHwgc2l6ZSA+PSBrQnVmZmVyU2l6ZSkg
ewotICAgIHJldHVybiBTdHJpbmcoIjxmb3JtYXR0aW5nIGVycm9yIG9yIGJ1ZmZlciBleGNlZWRl
ZD4iKTsKLSAgfSBlbHNlIHsKLSAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlciwgc2l6ZSk7Ci0gIH0K
Ky8vIEZvcm1hdHMgYSBieXRlIGFzICIlMDJYIi4KK3N0ZDo6c3RyaW5nIFN0cmluZzo6Rm9ybWF0
Qnl0ZSh1bnNpZ25lZCBjaGFyIHZhbHVlKSB7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICBz
cyA8PCBzdGQ6OnNldGZpbGwoJzAnKSA8PCBzdGQ6OnNldHcoMikgPDwgc3RkOjpoZXggPDwgc3Rk
Ojp1cHBlcmNhc2UKKyAgICAgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih2YWx1ZSk7Cisg
IHJldHVybiBzcy5zdHIoKTsKIH0KIAotLy8gQ29udmVydHMgdGhlIGJ1ZmZlciBpbiBhIFN0clN0
cmVhbSB0byBhIFN0cmluZywgY29udmVydGluZyBOVUwKKy8vIENvbnZlcnRzIHRoZSBidWZmZXIg
aW4gYSBzdHJpbmdzdHJlYW0gdG8gYW4gc3RkOjpzdHJpbmcsIGNvbnZlcnRpbmcgTlVMCiAvLyBi
eXRlcyB0byAiXFwwIiBhbG9uZyB0aGUgd2F5LgotU3RyaW5nIFN0clN0cmVhbVRvU3RyaW5nKFN0
clN0cmVhbSogc3MpIHsKK3N0ZDo6c3RyaW5nIFN0cmluZ1N0cmVhbVRvU3RyaW5nKDo6c3RkOjpz
dHJpbmdzdHJlYW0qIHNzKSB7CiAgIGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciA9IHNzLT5zdHIo
KTsKICAgY29uc3QgY2hhciogY29uc3Qgc3RhcnQgPSBzdHIuY19zdHIoKTsKICAgY29uc3QgY2hh
ciogY29uc3QgZW5kID0gc3RhcnQgKyBzdHIubGVuZ3RoKCk7CiAKLSAgLy8gV2UgbmVlZCB0byB1
c2UgYSBoZWxwZXIgU3RyU3RyZWFtIHRvIGRvIHRoaXMgdHJhbnNmb3JtYXRpb24KLSAgLy8gYmVj
YXVzZSBTdHJpbmcgZG9lc24ndCBzdXBwb3J0IHB1c2hfYmFjaygpLgotICBTdHJTdHJlYW0gaGVs
cGVyOworICBzdGQ6OnN0cmluZyByZXN1bHQ7CisgIHJlc3VsdC5yZXNlcnZlKDIgKiAoZW5kIC0g
c3RhcnQpKTsKICAgZm9yIChjb25zdCBjaGFyKiBjaCA9IHN0YXJ0OyBjaCAhPSBlbmQ7ICsrY2gp
IHsKICAgICBpZiAoKmNoID09ICdcMCcpIHsKLSAgICAgIGhlbHBlciA8PCAiXFwwIjsgIC8vIFJl
cGxhY2VzIE5VTCB3aXRoICJcXDAiOworICAgICAgcmVzdWx0ICs9ICJcXDAiOyAgLy8gUmVwbGFj
ZXMgTlVMIHdpdGggIlxcMCI7CiAgICAgfSBlbHNlIHsKLSAgICAgIGhlbHBlci5wdXQoKmNoKTsK
KyAgICAgIHJlc3VsdCArPSAqY2g7CiAgICAgfQogICB9CiAKLSAgcmV0dXJuIFN0cmluZyhoZWxw
ZXIuc3RyKCkuY19zdHIoKSk7CisgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8vIEFwcGVuZHMgdGhl
IHVzZXItc3VwcGxpZWQgbWVzc2FnZSB0byB0aGUgR29vZ2xlLVRlc3QtZ2VuZXJhdGVkIG1lc3Nh
Z2UuCi1TdHJpbmcgQXBwZW5kVXNlck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBndGVzdF9tc2csCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVzc2FnZSYgdXNlcl9tc2cpIHsKK3N0ZDo6
c3RyaW5nIEFwcGVuZFVzZXJNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBndGVzdF9tc2csCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNZXNzYWdlJiB1c2VyX21zZykgewog
ICAvLyBBcHBlbmRzIHRoZSB1c2VyIG1lc3NhZ2UgaWYgaXQncyBub24tZW1wdHkuCi0gIGNvbnN0
IFN0cmluZyB1c2VyX21zZ19zdHJpbmcgPSB1c2VyX21zZy5HZXRTdHJpbmcoKTsKKyAgY29uc3Qg
c3RkOjpzdHJpbmcgdXNlcl9tc2dfc3RyaW5nID0gdXNlcl9tc2cuR2V0U3RyaW5nKCk7CiAgIGlm
ICh1c2VyX21zZ19zdHJpbmcuZW1wdHkoKSkgewogICAgIHJldHVybiBndGVzdF9tc2c7CiAgIH0K
IAotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGd0ZXN0X21zZyA8PCAiXG4iIDw8IHVzZXJfbXNn
X3N0cmluZzsKLQotICByZXR1cm4gbXNnLkdldFN0cmluZygpOworICByZXR1cm4gZ3Rlc3RfbXNn
ICsgIlxuIiArIHVzZXJfbXNnX3N0cmluZzsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
CkBAIC0xODMyLDggKzIwNTQsOSBAQCB2b2lkIFRlc3RSZXN1bHQ6OkFkZFRlc3RQYXJ0UmVzdWx0
KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7CiAvLyBBZGRzIGEgdGVz
dCBwcm9wZXJ0eSB0byB0aGUgbGlzdC4gSWYgYSBwcm9wZXJ0eSB3aXRoIHRoZSBzYW1lIGtleSBh
cyB0aGUKIC8vIHN1cHBsaWVkIHByb3BlcnR5IGlzIGFscmVhZHkgcmVwcmVzZW50ZWQsIHRoZSB2
YWx1ZSBvZiB0aGlzIHRlc3RfcHJvcGVydHkKIC8vIHJlcGxhY2VzIHRoZSBvbGQgdmFsdWUgZm9y
IHRoYXQga2V5Lgotdm9pZCBUZXN0UmVzdWx0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBUZXN0UHJv
cGVydHkmIHRlc3RfcHJvcGVydHkpIHsKLSAgaWYgKCFWYWxpZGF0ZVRlc3RQcm9wZXJ0eSh0ZXN0
X3Byb3BlcnR5KSkgewordm9pZCBUZXN0UmVzdWx0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBzdGQ6
OnN0cmluZyYgeG1sX2VsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgeworICBpZiAoIVZhbGlkYXRlVGVzdFBy
b3BlcnR5KHhtbF9lbGVtZW50LCB0ZXN0X3Byb3BlcnR5KSkgewogICAgIHJldHVybjsKICAgfQog
ICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGxvY2soJnRlc3RfcHJvcGVyaXRlc19tdXRleF8pOwpAQCAt
MTg0NywyMSArMjA3MCw5NCBAQCB2b2lkIFRlc3RSZXN1bHQ6OlJlY29yZFByb3BlcnR5KGNvbnN0
IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgewogICBwcm9wZXJ0eV93aXRoX21hdGNoaW5n
X2tleS0+U2V0VmFsdWUodGVzdF9wcm9wZXJ0eS52YWx1ZSgpKTsKIH0KIAotLy8gQWRkcyBhIGZh
aWx1cmUgaWYgdGhlIGtleSBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBvZiBHb29nbGUgVGVzdAot
Ly8gdGVzdGNhc2UgdGFncy4gIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvcGVydHkgaXMgdmFsaWQu
Ci1ib29sIFRlc3RSZXN1bHQ6OlZhbGlkYXRlVGVzdFByb3BlcnR5KGNvbnN0IFRlc3RQcm9wZXJ0
eSYgdGVzdF9wcm9wZXJ0eSkgewotICBpbnRlcm5hbDo6U3RyaW5nIGtleSh0ZXN0X3Byb3BlcnR5
LmtleSgpKTsKLSAgaWYgKGtleSA9PSAibmFtZSIgfHwga2V5ID09ICJzdGF0dXMiIHx8IGtleSA9
PSAidGltZSIgfHwga2V5ID09ICJjbGFzc25hbWUiKSB7Ci0gICAgQUREX0ZBSUxVUkUoKQotICAg
ICAgICA8PCAiUmVzZXJ2ZWQga2V5IHVzZWQgaW4gUmVjb3JkUHJvcGVydHkoKTogIgotICAgICAg
ICA8PCBrZXkKLSAgICAgICAgPDwgIiAoJ25hbWUnLCAnc3RhdHVzJywgJ3RpbWUnLCBhbmQgJ2Ns
YXNzbmFtZScgYXJlIHJlc2VydmVkIGJ5ICIKLSAgICAgICAgPDwgR1RFU1RfTkFNRV8gPDwgIiki
OworLy8gVGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgYXR0cmlidXRlcyB1c2VkIGluIHRoZSA8dGVzdHN1
aXRlcz4gZWxlbWVudCBvZiBYTUwKKy8vIG91dHB1dC4KK3N0YXRpYyBjb25zdCBjaGFyKiBjb25z
dCBrUmVzZXJ2ZWRUZXN0U3VpdGVzQXR0cmlidXRlc1tdID0geworICAiZGlzYWJsZWQiLAorICAi
ZXJyb3JzIiwKKyAgImZhaWx1cmVzIiwKKyAgIm5hbWUiLAorICAicmFuZG9tX3NlZWQiLAorICAi
dGVzdHMiLAorICAidGltZSIsCisgICJ0aW1lc3RhbXAiCit9OworCisvLyBUaGUgbGlzdCBvZiBy
ZXNlcnZlZCBhdHRyaWJ1dGVzIHVzZWQgaW4gdGhlIDx0ZXN0c3VpdGU+IGVsZW1lbnQgb2YgWE1M
CisvLyBvdXRwdXQuCitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qga1Jlc2VydmVkVGVzdFN1aXRl
QXR0cmlidXRlc1tdID0geworICAiZGlzYWJsZWQiLAorICAiZXJyb3JzIiwKKyAgImZhaWx1cmVz
IiwKKyAgIm5hbWUiLAorICAidGVzdHMiLAorICAidGltZSIKK307CisKKy8vIFRoZSBsaXN0IG9m
IHJlc2VydmVkIGF0dHJpYnV0ZXMgdXNlZCBpbiB0aGUgPHRlc3RjYXNlPiBlbGVtZW50IG9mIFhN
TCBvdXRwdXQuCitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qga1Jlc2VydmVkVGVzdENhc2VBdHRy
aWJ1dGVzW10gPSB7CisgICJjbGFzc25hbWUiLAorICAibmFtZSIsCisgICJzdGF0dXMiLAorICAi
dGltZSIsCisgICJ0eXBlX3BhcmFtIiwKKyAgInZhbHVlX3BhcmFtIgorfTsKKwordGVtcGxhdGUg
PGludCBrU2l6ZT4KK3N0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBBcnJheUFzVmVjdG9yKGNvbnN0
IGNoYXIqIGNvbnN0ICgmYXJyYXkpW2tTaXplXSkgeworICByZXR1cm4gc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+KGFycmF5LCBhcnJheSArIGtTaXplKTsKK30KKworc3RhdGljIHN0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPiBHZXRSZXNlcnZlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KAorICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiB4bWxfZWxlbWVudCkgeworICBpZiAoeG1sX2VsZW1lbnQgPT0gInRlc3Rz
dWl0ZXMiKSB7CisgICAgcmV0dXJuIEFycmF5QXNWZWN0b3Ioa1Jlc2VydmVkVGVzdFN1aXRlc0F0
dHJpYnV0ZXMpOworICB9IGVsc2UgaWYgKHhtbF9lbGVtZW50ID09ICJ0ZXN0c3VpdGUiKSB7Cisg
ICAgcmV0dXJuIEFycmF5QXNWZWN0b3Ioa1Jlc2VydmVkVGVzdFN1aXRlQXR0cmlidXRlcyk7Cisg
IH0gZWxzZSBpZiAoeG1sX2VsZW1lbnQgPT0gInRlc3RjYXNlIikgeworICAgIHJldHVybiBBcnJh
eUFzVmVjdG9yKGtSZXNlcnZlZFRlc3RDYXNlQXR0cmlidXRlcyk7CisgIH0gZWxzZSB7CisgICAg
R1RFU1RfQ0hFQ0tfKGZhbHNlKSA8PCAiVW5yZWNvZ25pemVkIHhtbF9lbGVtZW50IHByb3ZpZGVk
OiAiIDw8IHhtbF9lbGVtZW50OworICB9CisgIC8vIFRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBi
dXQgc29tZSBjb21waWxlcnMgbWF5IG5vdCByZWFsaXplcyB0aGF0LgorICByZXR1cm4gc3RkOjp2
ZWN0b3I8c3RkOjpzdHJpbmc+KCk7Cit9CisKK3N0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRXb3Jk
TGlzdChjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHdvcmRzKSB7CisgIE1lc3NhZ2Ug
d29yZF9saXN0OworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzLnNpemUoKTsgKytpKSB7
CisgICAgaWYgKGkgPiAwICYmIHdvcmRzLnNpemUoKSA+IDIpIHsKKyAgICAgIHdvcmRfbGlzdCA8
PCAiLCAiOworICAgIH0KKyAgICBpZiAoaSA9PSB3b3Jkcy5zaXplKCkgLSAxKSB7CisgICAgICB3
b3JkX2xpc3QgPDwgImFuZCAiOworICAgIH0KKyAgICB3b3JkX2xpc3QgPDwgIiciIDw8IHdvcmRz
W2ldIDw8ICInIjsKKyAgfQorICByZXR1cm4gd29yZF9saXN0LkdldFN0cmluZygpOworfQorCiti
b29sIFZhbGlkYXRlVGVzdFByb3BlcnR5TmFtZShjb25zdCBzdGQ6OnN0cmluZyYgcHJvcGVydHlf
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiYgcmVzZXJ2ZWRfbmFtZXMpIHsKKyAgaWYgKHN0ZDo6ZmluZChyZXNlcnZlZF9u
YW1lcy5iZWdpbigpLCByZXNlcnZlZF9uYW1lcy5lbmQoKSwgcHJvcGVydHlfbmFtZSkgIT0KKyAg
ICAgICAgICByZXNlcnZlZF9uYW1lcy5lbmQoKSkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIlJl
c2VydmVkIGtleSB1c2VkIGluIFJlY29yZFByb3BlcnR5KCk6ICIgPDwgcHJvcGVydHlfbmFtZQor
ICAgICAgICAgICAgICAgICAgPDwgIiAoIiA8PCBGb3JtYXRXb3JkTGlzdChyZXNlcnZlZF9uYW1l
cykKKyAgICAgICAgICAgICAgICAgIDw8ICIgYXJlIHJlc2VydmVkIGJ5ICIgPDwgR1RFU1RfTkFN
RV8gPDwgIikiOwogICAgIHJldHVybiBmYWxzZTsKICAgfQogICByZXR1cm4gdHJ1ZTsKIH0KIAor
Ly8gQWRkcyBhIGZhaWx1cmUgaWYgdGhlIGtleSBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBvZiB0
aGUgZWxlbWVudCBuYW1lZAorLy8geG1sX2VsZW1lbnQuICBSZXR1cm5zIHRydWUgaWYgdGhlIHBy
b3BlcnR5IGlzIHZhbGlkLgorYm9vbCBUZXN0UmVzdWx0OjpWYWxpZGF0ZVRlc3RQcm9wZXJ0eShj
b25zdCBzdGQ6OnN0cmluZyYgeG1sX2VsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgeworICByZXR1
cm4gVmFsaWRhdGVUZXN0UHJvcGVydHlOYW1lKHRlc3RfcHJvcGVydHkua2V5KCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0UmVzZXJ2ZWRBdHRyaWJ1dGVzRm9yRWxlbWVu
dCh4bWxfZWxlbWVudCkpOworfQorCiAvLyBDbGVhcnMgdGhlIG9iamVjdC4KIHZvaWQgVGVzdFJl
c3VsdDo6Q2xlYXIoKSB7CiAgIHRlc3RfcGFydF9yZXN1bHRzXy5jbGVhcigpOwpAQCAtMTkxNCwx
NCArMjIxMCwxNSBAQCBpbnQgVGVzdFJlc3VsdDo6dGVzdF9wcm9wZXJ0eV9jb3VudCgpIGNvbnN0
IHsKIAogLy8gQ3JlYXRlcyBhIFRlc3Qgb2JqZWN0LgogCi0vLyBUaGUgYyd0b3Igc2F2ZXMgdGhl
IHZhbHVlcyBvZiBhbGwgR29vZ2xlIFRlc3QgZmxhZ3MuCisvLyBUaGUgYyd0b3Igc2F2ZXMgdGhl
IHN0YXRlcyBvZiBhbGwgZmxhZ3MuCiBUZXN0OjpUZXN0KCkKLSAgICA6IGd0ZXN0X2ZsYWdfc2F2
ZXJfKG5ldyBpbnRlcm5hbDo6R1Rlc3RGbGFnU2F2ZXIpIHsKKyAgICA6IGd0ZXN0X2ZsYWdfc2F2
ZXJfKG5ldyBHVEVTVF9GTEFHX1NBVkVSXykgewogfQogCi0vLyBUaGUgZCd0b3IgcmVzdG9yZXMg
dGhlIHZhbHVlcyBvZiBhbGwgR29vZ2xlIFRlc3QgZmxhZ3MuCisvLyBUaGUgZCd0b3IgcmVzdG9y
ZXMgdGhlIHN0YXRlcyBvZiBhbGwgZmxhZ3MuICBUaGUgYWN0dWFsIHdvcmsgaXMKKy8vIGRvbmUg
YnkgdGhlIGQndG9yIG9mIHRoZSBndGVzdF9mbGFnX3NhdmVyXyBmaWVsZCwgYW5kIHRodXMgbm90
CisvLyB2aXNpYmxlIGhlcmUuCiBUZXN0Ojp+VGVzdCgpIHsKLSAgZGVsZXRlIGd0ZXN0X2ZsYWdf
c2F2ZXJfOwogfQogCiAvLyBTZXRzIHVwIHRoZSB0ZXN0IGZpeHR1cmUuCkBAIC0xOTM3LDEyICsy
MjM0LDEyIEBAIHZvaWQgVGVzdDo6VGVhckRvd24oKSB7CiB9CiAKIC8vIEFsbG93cyB1c2VyIHN1
cHBsaWVkIGtleSB2YWx1ZSBwYWlycyB0byBiZSByZWNvcmRlZCBmb3IgbGF0ZXIgb3V0cHV0Lgot
dm9pZCBUZXN0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBjaGFyKiBrZXksIGNvbnN0IGNoYXIqIHZh
bHVlKSB7Ci0gIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5SZWNvcmRQcm9wZXJ0eUZvckN1cnJl
bnRUZXN0KGtleSwgdmFsdWUpOwordm9pZCBUZXN0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBzdGQ6
OnN0cmluZyYga2V5LCBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpIHsKKyAgVW5pdFRlc3Q6Okdl
dEluc3RhbmNlKCktPlJlY29yZFByb3BlcnR5KGtleSwgdmFsdWUpOwogfQogCiAvLyBBbGxvd3Mg
dXNlciBzdXBwbGllZCBrZXkgdmFsdWUgcGFpcnMgdG8gYmUgcmVjb3JkZWQgZm9yIGxhdGVyIG91
dHB1dC4KLXZvaWQgVGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBpbnQgdmFs
dWUpIHsKK3ZvaWQgVGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwg
aW50IHZhbHVlKSB7CiAgIE1lc3NhZ2UgdmFsdWVfbWVzc2FnZTsKICAgdmFsdWVfbWVzc2FnZSA8
PCB2YWx1ZTsKICAgUmVjb3JkUHJvcGVydHkoa2V5LCB2YWx1ZV9tZXNzYWdlLkdldFN0cmluZygp
LmNfc3RyKCkpOwpAQCAtMTk1MSw3ICsyMjQ4LDcgQEAgdm9pZCBUZXN0OjpSZWNvcmRQcm9wZXJ0
eShjb25zdCBjaGFyKiBrZXksIGludCB2YWx1ZSkgewogbmFtZXNwYWNlIGludGVybmFsIHsKIAog
dm9pZCBSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oVGVzdFBhcnRSZXN1bHQ6OlR5cGUg
cmVzdWx0X3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7CiAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgYSBmcmll
bmQgb2YgVW5pdFRlc3QgYW5kIGFzIHN1Y2ggaGFzIGFjY2VzcyB0bwogICAvLyBBZGRUZXN0UGFy
dFJlc3VsdC4KICAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPkFkZFRlc3RQYXJ0UmVzdWx0KApA
QCAtMTk1OSwyNyArMjI1NiwxMSBAQCB2b2lkIFJlcG9ydEZhaWx1cmVJblVua25vd25Mb2NhdGlv
bihUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKICAgICAgIE5VTEwsICAvLyBObyBp
bmZvIGFib3V0IHRoZSBzb3VyY2UgZmlsZSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLgog
ICAgICAgLTEsICAgIC8vIFdlIGhhdmUgbm8gaW5mbyBvbiB3aGljaCBsaW5lIGNhdXNlZCB0aGUg
ZXhjZXB0aW9uLgogICAgICAgbWVzc2FnZSwKLSAgICAgIFN0cmluZygpKTsgIC8vIE5vIHN0YWNr
IHRyYWNlLCBlaXRoZXIuCisgICAgICAiIik7ICAgLy8gTm8gc3RhY2sgdHJhY2UsIGVpdGhlci4K
IH0KIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0v
LyBXZSBhcmUgb24gV2luZG93cy4KLQotLy8gQWRkcyBhbiAiZXhjZXB0aW9uIHRocm93biIgZmF0
YWwgZmFpbHVyZSB0byB0aGUgY3VycmVudCB0ZXN0Lgotc3RhdGljIHZvaWQgQWRkRXhjZXB0aW9u
VGhyb3duRmFpbHVyZShEV09SRCBleGNlcHRpb25fY29kZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbG9jYXRpb24pIHsKLSAgTWVzc2FnZSBtZXNz
YWdlOwotICBtZXNzYWdlIDw8ICJFeGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAweCIgPDwgc3Rk
OjpzZXRiYXNlKDE2KSA8PAotICAgIGV4Y2VwdGlvbl9jb2RlIDw8IHN0ZDo6c2V0YmFzZSgxMCkg
PDwgIiBpbiAiIDw8IGxvY2F0aW9uIDw8ICIuIjsKLQotICBpbnRlcm5hbDo6UmVwb3J0RmFpbHVy
ZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UuR2V0U3RyaW5nKCkp
OwotfQotCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQogLy8gR29vZ2xlIFRlc3QgcmVx
dWlyZXMgYWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSB0byB1c2UgdGhlIHNhbWUgdGVz
dAogLy8gZml4dHVyZSBjbGFzcy4gIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBjdXJyZW50
IHRlc3QgaGFzIHRoZQogLy8gc2FtZSBmaXh0dXJlIGNsYXNzIGFzIHRoZSBmaXJzdCB0ZXN0IGlu
IHRoZSBjdXJyZW50IHRlc3QgY2FzZS4gIElmCkBAIC0xOTkwLDE1ICsyMjcxLDEzIEBAIGJvb2wg
VGVzdDo6SGFzU2FtZUZpeHR1cmVDbGFzcygpIHsKICAgY29uc3QgVGVzdENhc2UqIGNvbnN0IHRl
c3RfY2FzZSA9IGltcGwtPmN1cnJlbnRfdGVzdF9jYXNlKCk7CiAKICAgLy8gSW5mbyBhYm91dCB0
aGUgZmlyc3QgdGVzdCBpbiB0aGUgY3VycmVudCB0ZXN0IGNhc2UuCi0gIGNvbnN0IGludGVybmFs
OjpUZXN0SW5mb0ltcGwqIGNvbnN0IGZpcnN0X3Rlc3RfaW5mbyA9Ci0gICAgICB0ZXN0X2Nhc2Ut
PnRlc3RfaW5mb19saXN0KClbMF0tPmltcGwoKTsKLSAgY29uc3QgaW50ZXJuYWw6OlR5cGVJZCBm
aXJzdF9maXh0dXJlX2lkID0gZmlyc3RfdGVzdF9pbmZvLT5maXh0dXJlX2NsYXNzX2lkKCk7Cisg
IGNvbnN0IFRlc3RJbmZvKiBjb25zdCBmaXJzdF90ZXN0X2luZm8gPSB0ZXN0X2Nhc2UtPnRlc3Rf
aW5mb19saXN0KClbMF07CisgIGNvbnN0IGludGVybmFsOjpUeXBlSWQgZmlyc3RfZml4dHVyZV9p
ZCA9IGZpcnN0X3Rlc3RfaW5mby0+Zml4dHVyZV9jbGFzc19pZF87CiAgIGNvbnN0IGNoYXIqIGNv
bnN0IGZpcnN0X3Rlc3RfbmFtZSA9IGZpcnN0X3Rlc3RfaW5mby0+bmFtZSgpOwogCiAgIC8vIElu
Zm8gYWJvdXQgdGhlIGN1cnJlbnQgdGVzdC4KLSAgY29uc3QgaW50ZXJuYWw6OlRlc3RJbmZvSW1w
bCogY29uc3QgdGhpc190ZXN0X2luZm8gPQotICAgICAgaW1wbC0+Y3VycmVudF90ZXN0X2luZm8o
KS0+aW1wbCgpOwotICBjb25zdCBpbnRlcm5hbDo6VHlwZUlkIHRoaXNfZml4dHVyZV9pZCA9IHRo
aXNfdGVzdF9pbmZvLT5maXh0dXJlX2NsYXNzX2lkKCk7CisgIGNvbnN0IFRlc3RJbmZvKiBjb25z
dCB0aGlzX3Rlc3RfaW5mbyA9IGltcGwtPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisgIGNvbnN0IGlu
dGVybmFsOjpUeXBlSWQgdGhpc19maXh0dXJlX2lkID0gdGhpc190ZXN0X2luZm8tPmZpeHR1cmVf
Y2xhc3NfaWRfOwogICBjb25zdCBjaGFyKiBjb25zdCB0aGlzX3Rlc3RfbmFtZSA9IHRoaXNfdGVz
dF9pbmZvLT5uYW1lKCk7CiAKICAgaWYgKHRoaXNfZml4dHVyZV9pZCAhPSBmaXJzdF9maXh0dXJl
X2lkKSB7CkBAIC0yMDA4LDggKzIyODcsOCBAQCBib29sIFRlc3Q6Okhhc1NhbWVGaXh0dXJlQ2xh
c3MoKSB7CiAgICAgY29uc3QgYm9vbCB0aGlzX2lzX1RFU1QgPSB0aGlzX2ZpeHR1cmVfaWQgPT0g
aW50ZXJuYWw6OkdldFRlc3RUeXBlSWQoKTsKIAogICAgIGlmIChmaXJzdF9pc19URVNUIHx8IHRo
aXNfaXNfVEVTVCkgewotICAgICAgLy8gVGhlIHVzZXIgbWl4ZWQgVEVTVCBhbmQgVEVTVF9GIGlu
IHRoaXMgdGVzdCBjYXNlIC0gd2UnbGwgdGVsbAotICAgICAgLy8gaGltL2hlciBob3cgdG8gZml4
IGl0LgorICAgICAgLy8gQm90aCBURVNUIGFuZCBURVNUX0YgYXBwZWFyIGluIHNhbWUgdGVzdCBj
YXNlLCB3aGljaCBpcyBpbmNvcnJlY3QuCisgICAgICAvLyBUZWxsIHRoZSB1c2VyIGhvdyB0byBm
aXggdGhpcy4KIAogICAgICAgLy8gR2V0cyB0aGUgbmFtZSBvZiB0aGUgVEVTVCBhbmQgdGhlIG5h
bWUgb2YgdGhlIFRFU1RfRi4gIE5vdGUKICAgICAgIC8vIHRoYXQgZmlyc3RfaXNfVEVTVCBhbmQg
dGhpc19pc19URVNUIGNhbm5vdCBib3RoIGJlIHRydWUsIGFzCkBAIC0yMDI5LDggKzIzMDgsOCBA
QCBib29sIFRlc3Q6Okhhc1NhbWVGaXh0dXJlQ2xhc3MoKSB7CiAgICAgICAgICAgPDwgIndhbnQg
dG8gY2hhbmdlIHRoZSBURVNUIHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRvIGFub3RoZXIgdGVzdFxu
IgogICAgICAgICAgIDw8ICJjYXNlLiI7CiAgICAgfSBlbHNlIHsKLSAgICAgIC8vIFRoZSB1c2Vy
IGRlZmluZWQgdHdvIGZpeHR1cmUgY2xhc3NlcyB3aXRoIHRoZSBzYW1lIG5hbWUgaW4KLSAgICAg
IC8vIHR3byBuYW1lc3BhY2VzIC0gd2UnbGwgdGVsbCBoaW0vaGVyIGhvdyB0byBmaXggaXQuCisg
ICAgICAvLyBUd28gZml4dHVyZSBjbGFzc2VzIHdpdGggdGhlIHNhbWUgbmFtZSBhcHBlYXIgaW4g
dHdvIGRpZmZlcmVudAorICAgICAgLy8gbmFtZXNwYWNlcywgd2hpY2ggaXMgbm90IGFsbG93ZWQu
IFRlbGwgdGhlIHVzZXIgaG93IHRvIGZpeCB0aGlzLgogICAgICAgQUREX0ZBSUxVUkUoKQogICAg
ICAgICAgIDw8ICJBbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBz
YW1lIHRlc3QgZml4dHVyZVxuIgogICAgICAgICAgIDw8ICJjbGFzcy4gIEhvd2V2ZXIsIGluIHRl
c3QgY2FzZSAiCkBAIC0yMDQ4LDYyICsyMzI3LDE2MiBAQCBib29sIFRlc3Q6Okhhc1NhbWVGaXh0
dXJlQ2xhc3MoKSB7CiAgIHJldHVybiB0cnVlOwogfQogCi0vLyBSdW5zIHRoZSB0ZXN0IGFuZCB1
cGRhdGVzIHRoZSB0ZXN0IHJlc3VsdC4KLXZvaWQgVGVzdDo6UnVuKCkgewotICBpZiAoIUhhc1Nh
bWVGaXh0dXJlQ2xhc3MoKSkgcmV0dXJuOworI2lmIEdURVNUX0hBU19TRUgKIAotICBpbnRlcm5h
bDo6VW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0gaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgp
OworLy8gQWRkcyBhbiAiZXhjZXB0aW9uIHRocm93biIgZmF0YWwgZmFpbHVyZSB0byB0aGUgY3Vy
cmVudCB0ZXN0LiAgVGhpcworLy8gZnVuY3Rpb24gcmV0dXJucyBpdHMgcmVzdWx0IHZpYSBhbiBv
dXRwdXQgcGFyYW1ldGVyIHBvaW50ZXIgYmVjYXVzZSBWQysrCisvLyBwcm9oaWJpdHMgY3JlYXRp
b24gb2Ygb2JqZWN0cyB3aXRoIGRlc3RydWN0b3JzIG9uIHN0YWNrIGluIGZ1bmN0aW9ucworLy8g
dXNpbmcgX190cnkgKHNlZSBlcnJvciBDMjcxMikuCitzdGF0aWMgc3RkOjpzdHJpbmcqIEZvcm1h
dFNlaEV4Y2VwdGlvbk1lc3NhZ2UoRFdPUkQgZXhjZXB0aW9uX2NvZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbG9jYXRpb24pIHsK
KyAgTWVzc2FnZSBtZXNzYWdlOworICBtZXNzYWdlIDw8ICJTRUggZXhjZXB0aW9uIHdpdGggY29k
ZSAweCIgPDwgc3RkOjpzZXRiYXNlKDE2KSA8PAorICAgIGV4Y2VwdGlvbl9jb2RlIDw8IHN0ZDo6
c2V0YmFzZSgxMCkgPDwgIiB0aHJvd24gaW4gIiA8PCBsb2NhdGlvbiA8PCAiLiI7CisKKyAgcmV0
dXJuIG5ldyBzdGQ6OnN0cmluZyhtZXNzYWdlLkdldFN0cmluZygpKTsKK30KKworI2VuZGlmICAv
LyBHVEVTVF9IQVNfU0VICisKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKyNpZiBHVEVTVF9IQVNf
RVhDRVBUSU9OUworCisvLyBBZGRzIGFuICJleGNlcHRpb24gdGhyb3duIiBmYXRhbCBmYWlsdXJl
IHRvIHRoZSBjdXJyZW50IHRlc3QuCitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0Q3h4RXhjZXB0
aW9uTWVzc2FnZShjb25zdCBjaGFyKiBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7CisgIE1lc3Nh
Z2UgbWVzc2FnZTsKKyAgaWYgKGRlc2NyaXB0aW9uICE9IE5VTEwpIHsKKyAgICBtZXNzYWdlIDw8
ICJDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gXCIiIDw8IGRlc2NyaXB0aW9uIDw8ICJc
IiI7CisgIH0gZWxzZSB7CisgICAgbWVzc2FnZSA8PCAiVW5rbm93biBDKysgZXhjZXB0aW9uIjsK
KyAgfQorICBtZXNzYWdlIDw8ICIgdGhyb3duIGluICIgPDwgbG9jYXRpb24gPDwgIi4iOworCisg
IHJldHVybiBtZXNzYWdlLkdldFN0cmluZygpOworfQorCitzdGF0aWMgc3RkOjpzdHJpbmcgUHJp
bnRUZXN0UGFydFJlc3VsdFRvU3RyaW5nKAorICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0
X3BhcnRfcmVzdWx0KTsKKworR29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb246Okdvb2dsZVRlc3RG
YWlsdXJlRXhjZXB0aW9uKAorICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBmYWlsdXJlKQorICAg
IDogOjpzdGQ6OnJ1bnRpbWVfZXJyb3IoUHJpbnRUZXN0UGFydFJlc3VsdFRvU3RyaW5nKGZhaWx1
cmUpLmNfc3RyKCkpIHt9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworLy8g
V2UgcHV0IHRoZXNlIGhlbHBlciBmdW5jdGlvbnMgaW4gdGhlIGludGVybmFsIG5hbWVzcGFjZSBh
cyBJQk0ncyB4bEMKKy8vIGNvbXBpbGVyIHJlamVjdHMgdGhlIGNvZGUgaWYgdGhleSB3ZXJlIGRl
Y2xhcmVkIHN0YXRpYy4KKworLy8gUnVucyB0aGUgZ2l2ZW4gbWV0aG9kIGFuZCBoYW5kbGVzIFNF
SCBleGNlcHRpb25zIGl0IHRocm93cywgd2hlbgorLy8gU0VIIGlzIHN1cHBvcnRlZDsgcmV0dXJu
cyB0aGUgMC12YWx1ZSBmb3IgdHlwZSBSZXN1bHQgaW4gY2FzZSBvZiBhbgorLy8gU0VIIGV4Y2Vw
dGlvbi4gIChNaWNyb3NvZnQgY29tcGlsZXJzIGNhbm5vdCBoYW5kbGUgU0VIIGFuZCBDKysKKy8v
IGV4Y2VwdGlvbnMgaW4gdGhlIHNhbWUgZnVuY3Rpb24uICBUaGVyZWZvcmUsIHdlIHByb3ZpZGUg
YSBzZXBhcmF0ZQorLy8gd3JhcHBlciBmdW5jdGlvbiBmb3IgaGFuZGxpbmcgU0VIIGV4Y2VwdGlv
bnMuKQordGVtcGxhdGUgPGNsYXNzIFQsIHR5cGVuYW1lIFJlc3VsdD4KK1Jlc3VsdCBIYW5kbGVT
ZWhFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAgICBUKiBvYmplY3QsIFJlc3VsdCAo
VDo6Km1ldGhvZCkoKSwgY29uc3QgY2hhciogbG9jYXRpb24pIHsKICNpZiBHVEVTVF9IQVNfU0VI
Ci0gIC8vIENhdGNoIFNFSC1zdHlsZSBleGNlcHRpb25zLgotICBpbXBsLT5vc19zdGFja190cmFj
ZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwogICBfX3RyeSB7Ci0gICAgU2V0VXAoKTsK
LSAgfSBfX2V4Y2VwdChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpHVGVzdFNob3VsZFByb2Nl
c3NTRUgoCisgICAgcmV0dXJuIChvYmplY3QtPiptZXRob2QpKCk7CisgIH0gX19leGNlcHQgKGlu
dGVybmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCggIC8vIE5PTElO
VAogICAgICAgR2V0RXhjZXB0aW9uQ29kZSgpKSkgewotICAgIEFkZEV4Y2VwdGlvblRocm93bkZh
aWx1cmUoR2V0RXhjZXB0aW9uQ29kZSgpLCAiU2V0VXAoKSIpOworICAgIC8vIFdlIGNyZWF0ZSB0
aGUgZXhjZXB0aW9uIG1lc3NhZ2Ugb24gdGhlIGhlYXAgYmVjYXVzZSBWQysrIHByb2hpYml0cwor
ICAgIC8vIGNyZWF0aW9uIG9mIG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycyBvbiBzdGFjayBpbiBm
dW5jdGlvbnMgdXNpbmcgX190cnkKKyAgICAvLyAoc2VlIGVycm9yIEMyNzEyKS4KKyAgICBzdGQ6
OnN0cmluZyogZXhjZXB0aW9uX21lc3NhZ2UgPSBGb3JtYXRTZWhFeGNlcHRpb25NZXNzYWdlKAor
ICAgICAgICBHZXRFeGNlcHRpb25Db2RlKCksIGxvY2F0aW9uKTsKKyAgICBpbnRlcm5hbDo6UmVw
b3J0RmFpbHVyZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4Y2VwdGlv
bl9tZXNzYWdlKTsKKyAgICBkZWxldGUgZXhjZXB0aW9uX21lc3NhZ2U7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFJlc3VsdD4oMCk7CiAgIH0KKyNlbHNlCisgICh2b2lkKWxvY2F0aW9uOworICBy
ZXR1cm4gKG9iamVjdC0+Km1ldGhvZCkoKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAorfQog
Ci0gIC8vIFdlIHdpbGwgcnVuIHRoZSB0ZXN0IG9ubHkgaWYgU2V0VXAoKSBoYWQgbm8gZmF0YWwg
ZmFpbHVyZS4KLSAgaWYgKCFIYXNGYXRhbEZhaWx1cmUoKSkgewotICAgIGltcGwtPm9zX3N0YWNr
X3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7Ci0gICAgX190cnkgewotICAgICAg
VGVzdEJvZHkoKTsKLSAgICB9IF9fZXhjZXB0KGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6OkdU
ZXN0U2hvdWxkUHJvY2Vzc1NFSCgKLSAgICAgICAgR2V0RXhjZXB0aW9uQ29kZSgpKSkgewotICAg
ICAgQWRkRXhjZXB0aW9uVGhyb3duRmFpbHVyZShHZXRFeGNlcHRpb25Db2RlKCksICJ0aGUgdGVz
dCBib2R5Iik7CisvLyBSdW5zIHRoZSBnaXZlbiBtZXRob2QgYW5kIGNhdGNoZXMgYW5kIHJlcG9y
dHMgQysrIGFuZC9vciBTRUgtc3R5bGUKKy8vIGV4Y2VwdGlvbnMsIGlmIHRoZXkgYXJlIHN1cHBv
cnRlZDsgcmV0dXJucyB0aGUgMC12YWx1ZSBmb3IgdHlwZQorLy8gUmVzdWx0IGluIGNhc2Ugb2Yg
YW4gU0VIIGV4Y2VwdGlvbi4KK3RlbXBsYXRlIDxjbGFzcyBULCB0eXBlbmFtZSBSZXN1bHQ+CitS
ZXN1bHQgSGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgVCogb2JqZWN0
LCBSZXN1bHQgKFQ6OiptZXRob2QpKCksIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7CisgIC8vIE5P
VEU6IFRoZSB1c2VyIGNvZGUgY2FuIGFmZmVjdCB0aGUgd2F5IGluIHdoaWNoIEdvb2dsZSBUZXN0
IGhhbmRsZXMKKyAgLy8gZXhjZXB0aW9ucyBieSBzZXR0aW5nIEdURVNUX0ZMQUcoY2F0Y2hfZXhj
ZXB0aW9ucyksIGJ1dCBvbmx5IGJlZm9yZQorICAvLyBSVU5fQUxMX1RFU1RTKCkgc3RhcnRzLiBJ
dCBpcyB0ZWNobmljYWxseSBwb3NzaWJsZSB0byBjaGVjayB0aGUgZmxhZworICAvLyBhZnRlciB0
aGUgZXhjZXB0aW9uIGlzIGNhdWdodCBhbmQgZWl0aGVyIHJlcG9ydCBvciByZS10aHJvdyB0aGUK
KyAgLy8gZXhjZXB0aW9uIGJhc2VkIG9uIHRoZSBmbGFnJ3MgdmFsdWU6CisgIC8vCisgIC8vIHRy
eSB7CisgIC8vICAgLy8gUGVyZm9ybSB0aGUgdGVzdCBtZXRob2QuCisgIC8vIH0gY2F0Y2ggKC4u
LikgeworICAvLyAgIGlmIChHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKQorICAvLyAgICAg
Ly8gUmVwb3J0IHRoZSBleGNlcHRpb24gYXMgZmFpbHVyZS4KKyAgLy8gICBlbHNlCisgIC8vICAg
ICB0aHJvdzsgIC8vIFJlLXRocm93cyB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uLgorICAvLyB9Cisg
IC8vCisgIC8vIEhvd2V2ZXIsIHRoZSBwdXJwb3NlIG9mIHRoaXMgZmxhZyBpcyB0byBhbGxvdyB0
aGUgcHJvZ3JhbSB0byBkcm9wIGludG8KKyAgLy8gdGhlIGRlYnVnZ2VyIHdoZW4gdGhlIGV4Y2Vw
dGlvbiBpcyB0aHJvd24uIE9uIG1vc3QgcGxhdGZvcm1zLCBvbmNlIHRoZQorICAvLyBjb250cm9s
IGVudGVycyB0aGUgY2F0Y2ggYmxvY2ssIHRoZSBleGNlcHRpb24gb3JpZ2luIGluZm9ybWF0aW9u
IGlzCisgIC8vIGxvc3QgYW5kIHRoZSBkZWJ1Z2dlciB3aWxsIHN0b3AgdGhlIHByb2dyYW0gYXQg
dGhlIHBvaW50IG9mIHRoZQorICAvLyByZS10aHJvdyBpbiB0aGlzIGZ1bmN0aW9uIC0tIGluc3Rl
YWQgb2YgYXQgdGhlIHBvaW50IG9mIHRoZSBvcmlnaW5hbAorICAvLyB0aHJvdyBzdGF0ZW1lbnQg
aW4gdGhlIGNvZGUgdW5kZXIgdGVzdC4gIEZvciB0aGlzIHJlYXNvbiwgd2UgcGVyZm9ybQorICAv
LyB0aGUgY2hlY2sgZWFybHksIHNhY3JpZmljaW5nIHRoZSBhYmlsaXR5IHRvIGFmZmVjdCBHb29n
bGUgVGVzdCdzCisgIC8vIGV4Y2VwdGlvbiBoYW5kbGluZyBpbiB0aGUgbWV0aG9kIHdoZXJlIHRo
ZSBleGNlcHRpb24gaXMgdGhyb3duLgorICBpZiAoaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgp
LT5jYXRjaF9leGNlcHRpb25zKCkpIHsKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworICAgIHRy
eSB7CisgICAgICByZXR1cm4gSGFuZGxlU2VoRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQo
b2JqZWN0LCBtZXRob2QsIGxvY2F0aW9uKTsKKyAgICB9IGNhdGNoIChjb25zdCBpbnRlcm5hbDo6
R29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24mKSB7ICAvLyBOT0xJTlQKKyAgICAgIC8vIFRoaXMg
ZXhjZXB0aW9uIHR5cGUgY2FuIG9ubHkgYmUgdGhyb3duIGJ5IGEgZmFpbGVkIEdvb2dsZQorICAg
ICAgLy8gVGVzdCBhc3NlcnRpb24gd2l0aCB0aGUgaW50ZW50aW9uIG9mIGxldHRpbmcgYW5vdGhl
ciB0ZXN0aW5nCisgICAgICAvLyBmcmFtZXdvcmsgY2F0Y2ggaXQuICBUaGVyZWZvcmUgd2UganVz
dCByZS10aHJvdyBpdC4KKyAgICAgIHRocm93OworICAgIH0gY2F0Y2ggKGNvbnN0IHN0ZDo6ZXhj
ZXB0aW9uJiBlKSB7ICAvLyBOT0xJTlQKKyAgICAgIGludGVybmFsOjpSZXBvcnRGYWlsdXJlSW5V
bmtub3duTG9jYXRpb24oCisgICAgICAgICAgVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUs
CisgICAgICAgICAgRm9ybWF0Q3h4RXhjZXB0aW9uTWVzc2FnZShlLndoYXQoKSwgbG9jYXRpb24p
KTsKKyAgICB9IGNhdGNoICguLi4pIHsgIC8vIE5PTElOVAorICAgICAgaW50ZXJuYWw6OlJlcG9y
dEZhaWx1cmVJblVua25vd25Mb2NhdGlvbigKKyAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6a0Zh
dGFsRmFpbHVyZSwKKyAgICAgICAgICBGb3JtYXRDeHhFeGNlcHRpb25NZXNzYWdlKE5VTEwsIGxv
Y2F0aW9uKSk7CiAgICAgfQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZXN1bHQ+KDApOworI2Vs
c2UKKyAgICByZXR1cm4gSGFuZGxlU2VoRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQob2Jq
ZWN0LCBtZXRob2QsIGxvY2F0aW9uKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMK
KyAgfSBlbHNlIHsKKyAgICByZXR1cm4gKG9iamVjdC0+Km1ldGhvZCkoKTsKICAgfQorfQogCi0g
IC8vIEhvd2V2ZXIsIHdlIHdhbnQgdG8gY2xlYW4gdXAgYXMgbXVjaCBhcyBwb3NzaWJsZS4gIEhl
bmNlIHdlIHdpbGwKLSAgLy8gYWx3YXlzIGNhbGwgVGVhckRvd24oKSwgZXZlbiBpZiBTZXRVcCgp
IG9yIHRoZSB0ZXN0IGJvZHkgaGFzCi0gIC8vIGZhaWxlZC4KLSAgaW1wbC0+b3Nfc3RhY2tfdHJh
Y2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgX190cnkgewotICAgIFRlYXJEb3du
KCk7Ci0gIH0gX19leGNlcHQoaW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6R1Rlc3RTaG91bGRQ
cm9jZXNzU0VIKAotICAgICAgR2V0RXhjZXB0aW9uQ29kZSgpKSkgewotICAgIEFkZEV4Y2VwdGlv
blRocm93bkZhaWx1cmUoR2V0RXhjZXB0aW9uQ29kZSgpLCAiVGVhckRvd24oKSIpOwotICB9Ci0K
LSNlbHNlICAvLyBXZSBhcmUgb24gYSBjb21waWxlciBvciBwbGF0Zm9ybSB0aGF0IGRvZXNuJ3Qg
c3VwcG9ydCBTRUguCi0gIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmlu
Z0dUZXN0KCk7Ci0gIFNldFVwKCk7Cit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKworLy8gUnVu
cyB0aGUgdGVzdCBhbmQgdXBkYXRlcyB0aGUgdGVzdCByZXN1bHQuCit2b2lkIFRlc3Q6OlJ1bigp
IHsKKyAgaWYgKCFIYXNTYW1lRml4dHVyZUNsYXNzKCkpIHJldHVybjsKIAorICBpbnRlcm5hbDo6
VW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0gaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpOwor
ICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOworICBp
bnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQodGhpcywgJlRlc3Q6
OlNldFVwLCAiU2V0VXAoKSIpOwogICAvLyBXZSB3aWxsIHJ1biB0aGUgdGVzdCBvbmx5IGlmIFNl
dFVwKCkgd2FzIHN1Y2Nlc3NmdWwuCiAgIGlmICghSGFzRmF0YWxGYWlsdXJlKCkpIHsKICAgICBp
bXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotICAgIFRl
c3RCb2R5KCk7CisgICAgaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9y
dGVkKAorICAgICAgICB0aGlzLCAmVGVzdDo6VGVzdEJvZHksICJ0aGUgdGVzdCBib2R5Iik7CiAg
IH0KIAogICAvLyBIb3dldmVyLCB3ZSB3YW50IHRvIGNsZWFuIHVwIGFzIG11Y2ggYXMgcG9zc2li
bGUuICBIZW5jZSB3ZSB3aWxsCiAgIC8vIGFsd2F5cyBjYWxsIFRlYXJEb3duKCksIGV2ZW4gaWYg
U2V0VXAoKSBvciB0aGUgdGVzdCBib2R5IGhhcwogICAvLyBmYWlsZWQuCiAgIGltcGwtPm9zX3N0
YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7Ci0gIFRlYXJEb3duKCk7Ci0j
ZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKKyAgaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1l
dGhvZElmU3VwcG9ydGVkKAorICAgICAgdGhpcywgJlRlc3Q6OlRlYXJEb3duLCAiVGVhckRvd24o
KSIpOwogfQogCi0KIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGN1cnJlbnQgdGVzdCBoYXMgYSBm
YXRhbCBmYWlsdXJlLgogYm9vbCBUZXN0OjpIYXNGYXRhbEZhaWx1cmUoKSB7CiAgIHJldHVybiBp
bnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCktPmN1cnJlbnRfdGVzdF9yZXN1bHQoKS0+SGFzRmF0
YWxGYWlsdXJlKCk7CkBAIC0yMTE4LDIyICsyNDk3LDI4IEBAIGJvb2wgVGVzdDo6SGFzTm9uZmF0
YWxGYWlsdXJlKCkgewogLy8gY2xhc3MgVGVzdEluZm8KIAogLy8gQ29uc3RydWN0cyBhIFRlc3RJ
bmZvIG9iamVjdC4gSXQgYXNzdW1lcyBvd25lcnNoaXAgb2YgdGhlIHRlc3QgZmFjdG9yeQotLy8g
b2JqZWN0IHZpYSBpbXBsXy4KLVRlc3RJbmZvOjpUZXN0SW5mbyhjb25zdCBjaGFyKiBhX3Rlc3Rf
Y2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX3Rlc3RfY2FzZV9jb21tZW50LAotICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGFfY29tbWVudCwKKy8vIG9iamVjdC4KK1Rlc3RJbmZvOjpU
ZXN0SW5mbyhjb25zdCBzdGQ6OnN0cmluZyYgYV90ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgYV9uYW1lLAorICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGFfdHlwZV9wYXJhbSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBh
X3ZhbHVlX3BhcmFtLAorICAgICAgICAgICAgICAgICAgIGludGVybmFsOjpDb2RlTG9jYXRpb24g
YV9jb2RlX2xvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgIGludGVybmFsOjpUeXBlSWQgZml4
dHVyZV9jbGFzc19pZCwKLSAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlC
YXNlKiBmYWN0b3J5KSB7Ci0gIGltcGxfID0gbmV3IGludGVybmFsOjpUZXN0SW5mb0ltcGwodGhp
cywgYV90ZXN0X2Nhc2VfbmFtZSwgYV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFfdGVzdF9jYXNlX2NvbW1lbnQsIGFfY29tbWVudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmaXh0dXJlX2NsYXNzX2lkLCBmYWN0b3J5KTsKLX0KKyAg
ICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5KQorICAg
IDogdGVzdF9jYXNlX25hbWVfKGFfdGVzdF9jYXNlX25hbWUpLAorICAgICAgbmFtZV8oYV9uYW1l
KSwKKyAgICAgIHR5cGVfcGFyYW1fKGFfdHlwZV9wYXJhbSA/IG5ldyBzdGQ6OnN0cmluZyhhX3R5
cGVfcGFyYW0pIDogTlVMTCksCisgICAgICB2YWx1ZV9wYXJhbV8oYV92YWx1ZV9wYXJhbSA/IG5l
dyBzdGQ6OnN0cmluZyhhX3ZhbHVlX3BhcmFtKSA6IE5VTEwpLAorICAgICAgbG9jYXRpb25fKGFf
Y29kZV9sb2NhdGlvbiksCisgICAgICBmaXh0dXJlX2NsYXNzX2lkXyhmaXh0dXJlX2NsYXNzX2lk
KSwKKyAgICAgIHNob3VsZF9ydW5fKGZhbHNlKSwKKyAgICAgIGlzX2Rpc2FibGVkXyhmYWxzZSks
CisgICAgICBtYXRjaGVzX2ZpbHRlcl8oZmFsc2UpLAorICAgICAgZmFjdG9yeV8oZmFjdG9yeSks
CisgICAgICByZXN1bHRfKCkge30KIAogLy8gRGVzdHJ1Y3RzIGEgVGVzdEluZm8gb2JqZWN0Lgot
VGVzdEluZm86On5UZXN0SW5mbygpIHsKLSAgZGVsZXRlIGltcGxfOwotfQorVGVzdEluZm86On5U
ZXN0SW5mbygpIHsgZGVsZXRlIGZhY3RvcnlfOyB9CiAKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAK
QEAgLTIxNDQsMTAgKzI1MjksMTEgQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIC8vCiAvLyAgIHRl
c3RfY2FzZV9uYW1lOiAgIG5hbWUgb2YgdGhlIHRlc3QgY2FzZQogLy8gICBuYW1lOiAgICAgICAg
ICAgICBuYW1lIG9mIHRoZSB0ZXN0Ci0vLyAgIHRlc3RfY2FzZV9jb21tZW50OiBhIGNvbW1lbnQg
b24gdGhlIHRlc3QgY2FzZSB0aGF0IHdpbGwgYmUgaW5jbHVkZWQgaW4KLS8vICAgICAgICAgICAg
ICAgICAgICAgIHRoZSB0ZXN0IG91dHB1dAotLy8gICBjb21tZW50OiAgICAgICAgICBhIGNvbW1l
bnQgb24gdGhlIHRlc3QgdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZQotLy8gICAgICAgICAg
ICAgICAgICAgICB0ZXN0IG91dHB1dAorLy8gICB0eXBlX3BhcmFtOiAgICAgICB0aGUgbmFtZSBv
ZiB0aGUgdGVzdCdzIHR5cGUgcGFyYW1ldGVyLCBvciBOVUxMIGlmCisvLyAgICAgICAgICAgICAg
ICAgICAgIHRoaXMgaXMgbm90IGEgdHlwZWQgb3IgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4K
Ky8vICAgdmFsdWVfcGFyYW06ICAgICAgdGV4dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGVzdCdz
IHZhbHVlIHBhcmFtZXRlciwKKy8vICAgICAgICAgICAgICAgICAgICAgb3IgTlVMTCBpZiB0aGlz
IGlzIG5vdCBhIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKy8vICAgY29kZV9sb2NhdGlvbjog
ICAgY29kZSBsb2NhdGlvbiB3aGVyZSB0aGUgdGVzdCBpcyBkZWZpbmVkCiAvLyAgIGZpeHR1cmVf
Y2xhc3NfaWQ6IElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKIC8vICAgc2V0X3VwX3RjOiAg
ICAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSB0ZXN0IGNhc2UK
IC8vICAgdGVhcl9kb3duX3RjOiAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCB0ZWFy
cyBkb3duIHRoZSB0ZXN0IGNhc2UKQEAgLTIxNTUsMjIgKzI1NDEsMjUgQEAgbmFtZXNwYWNlIGlu
dGVybmFsIHsKIC8vICAgICAgICAgICAgICAgICAgICAgVGhlIG5ld2x5IGNyZWF0ZWQgVGVzdElu
Zm8gaW5zdGFuY2Ugd2lsbCBhc3N1bWUKIC8vICAgICAgICAgICAgICAgICAgICAgb3duZXJzaGlw
IG9mIHRoZSBmYWN0b3J5IG9iamVjdC4KIFRlc3RJbmZvKiBNYWtlQW5kUmVnaXN0ZXJUZXN0SW5m
bygKLSAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwgY29uc3QgY2hhciogbmFtZSwKLSAg
ICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfY29tbWVudCwgY29uc3QgY2hhciogY29tbWVudCwKKyAg
ICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICBjb25zdCBjaGFyKiBuYW1lLAorICAg
IGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0sCisgICAgY29uc3QgY2hhciogdmFsdWVfcGFyYW0sCisg
ICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24sCiAgICAgVHlwZUlkIGZpeHR1cmVfY2xhc3Nf
aWQsCiAgICAgU2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAgIFRlYXJEb3duVGVzdENh
c2VGdW5jIHRlYXJfZG93bl90YywKICAgICBUZXN0RmFjdG9yeUJhc2UqIGZhY3RvcnkpIHsKICAg
VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9Ci0gICAgICBuZXcgVGVzdEluZm8odGVzdF9jYXNl
X25hbWUsIG5hbWUsIHRlc3RfY2FzZV9jb21tZW50LCBjb21tZW50LAotICAgICAgICAgICAgICAg
ICAgIGZpeHR1cmVfY2xhc3NfaWQsIGZhY3RvcnkpOworICAgICAgbmV3IFRlc3RJbmZvKHRlc3Rf
Y2FzZV9uYW1lLCBuYW1lLCB0eXBlX3BhcmFtLCB2YWx1ZV9wYXJhbSwKKyAgICAgICAgICAgICAg
ICAgICBjb2RlX2xvY2F0aW9uLCBmaXh0dXJlX2NsYXNzX2lkLCBmYWN0b3J5KTsKICAgR2V0VW5p
dFRlc3RJbXBsKCktPkFkZFRlc3RJbmZvKHNldF91cF90YywgdGVhcl9kb3duX3RjLCB0ZXN0X2lu
Zm8pOwogICByZXR1cm4gdGVzdF9pbmZvOwogfQogCiAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QK
IHZvaWQgUmVwb3J0SW52YWxpZFRlc3RDYXNlVHlwZShjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQg
bGluZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbiBjb2Rl
X2xvY2F0aW9uKSB7CiAgIE1lc3NhZ2UgZXJyb3JzOwogICBlcnJvcnMKICAgICAgIDw8ICJBdHRl
bXB0ZWQgcmVkZWZpbml0aW9uIG9mIHRlc3QgY2FzZSAiIDw8IHRlc3RfY2FzZV9uYW1lIDw8ICIu
XG4iCkBAIC0yMTgyLDQ4ICsyNTcxLDE1IEBAIHZvaWQgUmVwb3J0SW52YWxpZFRlc3RDYXNlVHlw
ZShjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKICAgICAgIDw8ICJwcm9iYWJseSByZW5hbWUg
b25lIG9mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50byBkaWZmZXJlbnRcbiIKICAg
ICAgIDw8ICJ0ZXN0IGNhc2VzLiI7CiAKLSAgZnByaW50ZihzdGRlcnIsICIlcyAlcyIsIEZvcm1h
dEZpbGVMb2NhdGlvbihmaWxlLCBsaW5lKS5jX3N0cigpLAorICBmcHJpbnRmKHN0ZGVyciwgIiVz
ICVzIiwKKyAgICAgICAgICBGb3JtYXRGaWxlTG9jYXRpb24oY29kZV9sb2NhdGlvbi5maWxlLmNf
c3RyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVfbG9jYXRpb24ubGluZSku
Y19zdHIoKSwKICAgICAgICAgICBlcnJvcnMuR2V0U3RyaW5nKCkuY19zdHIoKSk7CiB9CiAjZW5k
aWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAog
Ci0vLyBSZXR1cm5zIHRoZSB0ZXN0IGNhc2UgbmFtZS4KLWNvbnN0IGNoYXIqIFRlc3RJbmZvOjp0
ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0IHsKLSAgcmV0dXJuIGltcGxfLT50ZXN0X2Nhc2VfbmFtZSgp
OwotfQotCi0vLyBSZXR1cm5zIHRoZSB0ZXN0IG5hbWUuCi1jb25zdCBjaGFyKiBUZXN0SW5mbzo6
bmFtZSgpIGNvbnN0IHsKLSAgcmV0dXJuIGltcGxfLT5uYW1lKCk7Ci19Ci0KLS8vIFJldHVybnMg
dGhlIHRlc3QgY2FzZSBjb21tZW50LgotY29uc3QgY2hhciogVGVzdEluZm86OnRlc3RfY2FzZV9j
b21tZW50KCkgY29uc3QgewotICByZXR1cm4gaW1wbF8tPnRlc3RfY2FzZV9jb21tZW50KCk7Ci19
Ci0KLS8vIFJldHVybnMgdGhlIHRlc3QgY29tbWVudC4KLWNvbnN0IGNoYXIqIFRlc3RJbmZvOjpj
b21tZW50KCkgY29uc3QgewotICByZXR1cm4gaW1wbF8tPmNvbW1lbnQoKTsKLX0KLQotLy8gUmV0
dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBzaG91bGQgcnVuLgotYm9vbCBUZXN0SW5mbzo6c2hvdWxk
X3J1bigpIGNvbnN0IHsgcmV0dXJuIGltcGxfLT5zaG91bGRfcnVuKCk7IH0KLQotLy8gUmV0dXJu
cyB0cnVlIGlmIHRoaXMgdGVzdCBtYXRjaGVzIHRoZSB1c2VyLXNwZWNpZmllZCBmaWx0ZXIuCi1i
b29sIFRlc3RJbmZvOjptYXRjaGVzX2ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIGltcGxfLT5tYXRj
aGVzX2ZpbHRlcigpOyB9Ci0KLS8vIFJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgdGVzdC4KLWNv
bnN0IFRlc3RSZXN1bHQqIFRlc3RJbmZvOjpyZXN1bHQoKSBjb25zdCB7IHJldHVybiBpbXBsXy0+
cmVzdWx0KCk7IH0KLQotLy8gSW5jcmVtZW50cyB0aGUgbnVtYmVyIG9mIGRlYXRoIHRlc3RzIGVu
Y291bnRlcmVkIGluIHRoaXMgdGVzdCBzbwotLy8gZmFyLgotaW50IFRlc3RJbmZvOjppbmNyZW1l
bnRfZGVhdGhfdGVzdF9jb3VudCgpIHsKLSAgcmV0dXJuIGltcGxfLT5yZXN1bHQoKS0+aW5jcmVt
ZW50X2RlYXRoX3Rlc3RfY291bnQoKTsKLX0KLQogbmFtZXNwYWNlIHsKIAogLy8gQSBwcmVkaWNh
dGUgdGhhdCBjaGVja3MgdGhlIHRlc3QgbmFtZSBvZiBhIFRlc3RJbmZvIGFnYWluc3QgYSBrbm93
bgpAQCAtMjI0NCwxMSArMjYwMCwxMSBAQCBjbGFzcyBUZXN0TmFtZUlzIHsKIAogICAvLyBSZXR1
cm5zIHRydWUgaWZmIHRoZSB0ZXN0IG5hbWUgb2YgdGVzdF9pbmZvIG1hdGNoZXMgbmFtZV8uCiAg
IGJvb2wgb3BlcmF0b3IoKShjb25zdCBUZXN0SW5mbyAqIHRlc3RfaW5mbykgY29uc3QgewotICAg
IHJldHVybiB0ZXN0X2luZm8gJiYgaW50ZXJuYWw6OlN0cmluZyh0ZXN0X2luZm8tPm5hbWUoKSku
Q29tcGFyZShuYW1lXykgPT0gMDsKKyAgICByZXR1cm4gdGVzdF9pbmZvICYmIHRlc3RfaW5mby0+
bmFtZSgpID09IG5hbWVfOwogICB9CiAKICBwcml2YXRlOgotICBpbnRlcm5hbDo6U3RyaW5nIG5h
bWVfOworICBzdGQ6OnN0cmluZyBuYW1lXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZQpAQCAtMjI2
Nyw3MCArMjYyMyw1NCBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6UmVnaXN0ZXJQYXJhbWV0ZXJpemVk
VGVzdHMoKSB7CiAjZW5kaWYKIH0KIAorfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKIC8vIENy
ZWF0ZXMgdGhlIHRlc3Qgb2JqZWN0LCBydW5zIGl0LCByZWNvcmRzIGl0cyByZXN1bHQsIGFuZCB0
aGVuCiAvLyBkZWxldGVzIGl0Lgotdm9pZCBUZXN0SW5mb0ltcGw6OlJ1bigpIHsKK3ZvaWQgVGVz
dEluZm86OlJ1bigpIHsKICAgaWYgKCFzaG91bGRfcnVuXykgcmV0dXJuOwogCiAgIC8vIFRlbGxz
IFVuaXRUZXN0IHdoZXJlIHRvIHN0b3JlIHRlc3QgcmVzdWx0LgotICBVbml0VGVzdEltcGwqIGNv
bnN0IGltcGwgPSBpbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCk7Ci0gIGltcGwtPnNldF9jdXJy
ZW50X3Rlc3RfaW5mbyhwYXJlbnRfKTsKKyAgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCogY29uc3Qg
aW1wbCA9IGludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKTsKKyAgaW1wbC0+c2V0X2N1cnJlbnRf
dGVzdF9pbmZvKHRoaXMpOwogCiAgIFRlc3RFdmVudExpc3RlbmVyKiByZXBlYXRlciA9IFVuaXRU
ZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKS5yZXBlYXRlcigpOwogCiAgIC8vIE5vdGlm
aWVzIHRoZSB1bml0IHRlc3QgZXZlbnQgbGlzdGVuZXJzIHRoYXQgYSB0ZXN0IGlzIGFib3V0IHRv
IHN0YXJ0LgotICByZXBlYXRlci0+T25UZXN0U3RhcnQoKnBhcmVudF8pOworICByZXBlYXRlci0+
T25UZXN0U3RhcnQoKnRoaXMpOwogCi0gIGNvbnN0IFRpbWVJbk1pbGxpcyBzdGFydCA9IEdldFRp
bWVJbk1pbGxpcygpOworICBjb25zdCBUaW1lSW5NaWxsaXMgc3RhcnQgPSBpbnRlcm5hbDo6R2V0
VGltZUluTWlsbGlzKCk7CiAKICAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25M
ZWF2aW5nR1Rlc3QoKTsKLSNpZiBHVEVTVF9IQVNfU0VICi0gIC8vIENhdGNoIFNFSC1zdHlsZSBl
eGNlcHRpb25zLgotICBUZXN0KiB0ZXN0ID0gTlVMTDsKLQotICBfX3RyeSB7Ci0gICAgLy8gQ3Jl
YXRlcyB0aGUgdGVzdCBvYmplY3QuCi0gICAgdGVzdCA9IGZhY3RvcnlfLT5DcmVhdGVUZXN0KCk7
Ci0gIH0gX19leGNlcHQoaW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6R1Rlc3RTaG91bGRQcm9j
ZXNzU0VIKAotICAgICAgR2V0RXhjZXB0aW9uQ29kZSgpKSkgewotICAgIEFkZEV4Y2VwdGlvblRo
cm93bkZhaWx1cmUoR2V0RXhjZXB0aW9uQ29kZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInRoZSB0ZXN0IGZpeHR1cmUncyBjb25zdHJ1Y3RvciIpOwotICAgIHJldHVybjsKLSAg
fQotI2Vsc2UgIC8vIFdlIGFyZSBvbiBhIGNvbXBpbGVyIG9yIHBsYXRmb3JtIHRoYXQgZG9lc24n
dCBzdXBwb3J0IFNFSC4KLQotICAvLyBUT0RPKHdhbik6IElmIHRlc3QtPlJ1bigpIHRocm93cywg
dGVzdCB3b24ndCBiZSBkZWxldGVkLiAgVGhpcyBpcwotICAvLyBub3QgYSBwcm9ibGVtIG5vdyBh
cyB3ZSBkb24ndCB1c2UgZXhjZXB0aW9ucy4gIElmIHdlIHdlcmUgdG8KLSAgLy8gZW5hYmxlIGV4
Y2VwdGlvbnMsIHdlIHNob3VsZCByZXZpc2UgdGhlIGZvbGxvd2luZyB0byBiZQotICAvLyBleGNl
cHRpb24tc2FmZS4KIAogICAvLyBDcmVhdGVzIHRoZSB0ZXN0IG9iamVjdC4KLSAgVGVzdCogdGVz
dCA9IGZhY3RvcnlfLT5DcmVhdGVUZXN0KCk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKLQot
ICAvLyBSdW5zIHRoZSB0ZXN0IG9ubHkgaWYgdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSB0ZXN0IGZp
eHR1cmUgZGlkbid0Ci0gIC8vIGdlbmVyYXRlIGEgZmF0YWwgZmFpbHVyZS4KLSAgaWYgKCFUZXN0
OjpIYXNGYXRhbEZhaWx1cmUoKSkgeworICBUZXN0KiBjb25zdCB0ZXN0ID0gaW50ZXJuYWw6Okhh
bmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAorICAgICAgZmFjdG9yeV8sICZpbnRl
cm5hbDo6VGVzdEZhY3RvcnlCYXNlOjpDcmVhdGVUZXN0LAorICAgICAgInRoZSB0ZXN0IGZpeHR1
cmUncyBjb25zdHJ1Y3RvciIpOworCisgIC8vIFJ1bnMgdGhlIHRlc3Qgb25seSBpZiB0aGUgdGVz
dCBvYmplY3Qgd2FzIGNyZWF0ZWQgYW5kIGl0cworICAvLyBjb25zdHJ1Y3RvciBkaWRuJ3QgZ2Vu
ZXJhdGUgYSBmYXRhbCBmYWlsdXJlLgorICBpZiAoKHRlc3QgIT0gTlVMTCkgJiYgIVRlc3Q6Okhh
c0ZhdGFsRmFpbHVyZSgpKSB7CisgICAgLy8gVGhpcyBkb2Vzbid0IHRocm93IGFzIGFsbCB1c2Vy
IGNvZGUgdGhhdCBjYW4gdGhyb3cgYXJlIHdyYXBwZWQgaW50bworICAgIC8vIGV4Y2VwdGlvbiBo
YW5kbGluZyBjb2RlLgogICAgIHRlc3QtPlJ1bigpOwogICB9CiAKICAgLy8gRGVsZXRlcyB0aGUg
dGVzdCBvYmplY3QuCiAgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmlu
Z0dUZXN0KCk7Ci0gIGRlbGV0ZSB0ZXN0OwotICB0ZXN0ID0gTlVMTDsKKyAgaW50ZXJuYWw6Okhh
bmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAorICAgICAgdGVzdCwgJlRlc3Q6OkRl
bGV0ZVNlbGZfLCAidGhlIHRlc3QgZml4dHVyZSdzIGRlc3RydWN0b3IiKTsKIAotICByZXN1bHRf
LnNldF9lbGFwc2VkX3RpbWUoR2V0VGltZUluTWlsbGlzKCkgLSBzdGFydCk7CisgIHJlc3VsdF8u
c2V0X2VsYXBzZWRfdGltZShpbnRlcm5hbDo6R2V0VGltZUluTWlsbGlzKCkgLSBzdGFydCk7CiAK
ICAgLy8gTm90aWZpZXMgdGhlIHVuaXQgdGVzdCBldmVudCBsaXN0ZW5lciB0aGF0IGEgdGVzdCBo
YXMganVzdCBmaW5pc2hlZC4KLSAgcmVwZWF0ZXItPk9uVGVzdEVuZCgqcGFyZW50Xyk7CisgIHJl
cGVhdGVyLT5PblRlc3RFbmQoKnRoaXMpOwogCiAgIC8vIFRlbGxzIFVuaXRUZXN0IHRvIHN0b3Ag
YXNzb2NpYXRpbmcgYXNzZXJ0aW9uIHJlc3VsdHMgdG8gdGhpcwogICAvLyB0ZXN0LgogICBpbXBs
LT5zZXRfY3VycmVudF90ZXN0X2luZm8oTlVMTCk7CiB9CiAKLX0gIC8vIG5hbWVzcGFjZSBpbnRl
cm5hbAotCiAvLyBjbGFzcyBUZXN0Q2FzZQogCiAvLyBHZXRzIHRoZSBudW1iZXIgb2Ygc3VjY2Vz
c2Z1bCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KQEAgLTIzNDMsMTAgKzI2ODMsMjEgQEAgaW50
IFRlc3RDYXNlOjpmYWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJuIENvdW50SWYo
dGVzdF9pbmZvX2xpc3RfLCBUZXN0RmFpbGVkKTsKIH0KIAorLy8gR2V0cyB0aGUgbnVtYmVyIG9m
IGRpc2FibGVkIHRlc3RzIHRoYXQgd2lsbCBiZSByZXBvcnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4K
K2ludCBUZXN0Q2FzZTo6cmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3Qgewor
ICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlzdF8sIFRlc3RSZXBvcnRhYmxlRGlzYWJsZWQp
OworfQorCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgaW4gdGhpcyB0ZXN0
IGNhc2UuCiBpbnQgVGVzdENhc2U6OmRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7CiAgIHJl
dHVybiBDb3VudElmKHRlc3RfaW5mb19saXN0XywgVGVzdERpc2FibGVkKTsKIH0KIAorLy8gR2V0
cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50ZWQgaW4gdGhlIFhNTCByZXBvcnQuCitp
bnQgVGVzdENhc2U6OnJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNvbnN0IHsKKyAgcmV0dXJuIENv
dW50SWYodGVzdF9pbmZvX2xpc3RfLCBUZXN0UmVwb3J0YWJsZSk7Cit9CisKIC8vIEdldCB0aGUg
bnVtYmVyIG9mIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlIHRoYXQgc2hvdWxkIHJ1bi4KIGludCBU
ZXN0Q2FzZTo6dGVzdF90b19ydW5fY291bnQoKSBjb25zdCB7CiAgIHJldHVybiBDb3VudElmKHRl
c3RfaW5mb19saXN0XywgU2hvdWxkUnVuVGVzdCk7CkBAIC0yMzYyLDEzICsyNzEzLDE1IEBAIGlu
dCBUZXN0Q2FzZTo6dG90YWxfdGVzdF9jb3VudCgpIGNvbnN0IHsKIC8vIEFyZ3VtZW50czoKIC8v
CiAvLyAgIG5hbWU6ICAgICAgICAgbmFtZSBvZiB0aGUgdGVzdCBjYXNlCisvLyAgIGFfdHlwZV9w
YXJhbTogdGhlIG5hbWUgb2YgdGhlIHRlc3QgY2FzZSdzIHR5cGUgcGFyYW1ldGVyLCBvciBOVUxM
IGlmCisvLyAgICAgICAgICAgICAgICAgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhIHR5cGUtcGFy
YW1ldGVyaXplZCB0ZXN0IGNhc2UuCiAvLyAgIHNldF91cF90YzogICAgcG9pbnRlciB0byB0aGUg
ZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSB0ZXN0IGNhc2UKIC8vICAgdGVhcl9kb3duX3RjOiBw
b2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQotVGVz
dENhc2U6OlRlc3RDYXNlKGNvbnN0IGNoYXIqIGFfbmFtZSwgY29uc3QgY2hhciogYV9jb21tZW50
LAorVGVzdENhc2U6OlRlc3RDYXNlKGNvbnN0IGNoYXIqIGFfbmFtZSwgY29uc3QgY2hhciogYV90
eXBlX3BhcmFtLAogICAgICAgICAgICAgICAgICAgIFRlc3Q6OlNldFVwVGVzdENhc2VGdW5jIHNl
dF91cF90YywKICAgICAgICAgICAgICAgICAgICBUZXN0OjpUZWFyRG93blRlc3RDYXNlRnVuYyB0
ZWFyX2Rvd25fdGMpCiAgICAgOiBuYW1lXyhhX25hbWUpLAotICAgICAgY29tbWVudF8oYV9jb21t
ZW50KSwKKyAgICAgIHR5cGVfcGFyYW1fKGFfdHlwZV9wYXJhbSA/IG5ldyBzdGQ6OnN0cmluZyhh
X3R5cGVfcGFyYW0pIDogTlVMTCksCiAgICAgICBzZXRfdXBfdGNfKHNldF91cF90YyksCiAgICAg
ICB0ZWFyX2Rvd25fdGNfKHRlYXJfZG93bl90YyksCiAgICAgICBzaG91bGRfcnVuXyhmYWxzZSks
CkBAIC0yNDEzLDQ1ICsyNzY2LDI3IEBAIHZvaWQgVGVzdENhc2U6OlJ1bigpIHsKIAogICByZXBl
YXRlci0+T25UZXN0Q2FzZVN0YXJ0KCp0aGlzKTsKICAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0
dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgc2V0X3VwX3RjXygpOworICBpbnRlcm5hbDo6
SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgICB0aGlzLCAmVGVzdENh
c2U6OlJ1blNldFVwVGVzdENhc2UsICJTZXRVcFRlc3RDYXNlKCkiKTsKIAogICBjb25zdCBpbnRl
cm5hbDo6VGltZUluTWlsbGlzIHN0YXJ0ID0gaW50ZXJuYWw6OkdldFRpbWVJbk1pbGxpcygpOwog
ICBmb3IgKGludCBpID0gMDsgaSA8IHRvdGFsX3Rlc3RfY291bnQoKTsgaSsrKSB7Ci0gICAgR2V0
TXV0YWJsZVRlc3RJbmZvKGkpLT5pbXBsKCktPlJ1bigpOworICAgIEdldE11dGFibGVUZXN0SW5m
byhpKS0+UnVuKCk7CiAgIH0KICAgZWxhcHNlZF90aW1lXyA9IGludGVybmFsOjpHZXRUaW1lSW5N
aWxsaXMoKSAtIHN0YXJ0OwogCiAgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9u
TGVhdmluZ0dUZXN0KCk7Ci0gIHRlYXJfZG93bl90Y18oKTsKKyAgaW50ZXJuYWw6OkhhbmRsZUV4
Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAorICAgICAgdGhpcywgJlRlc3RDYXNlOjpSdW5U
ZWFyRG93blRlc3RDYXNlLCAiVGVhckRvd25UZXN0Q2FzZSgpIik7CisKICAgcmVwZWF0ZXItPk9u
VGVzdENhc2VFbmQoKnRoaXMpOwogICBpbXBsLT5zZXRfY3VycmVudF90ZXN0X2Nhc2UoTlVMTCk7
CiB9CiAKIC8vIENsZWFycyB0aGUgcmVzdWx0cyBvZiBhbGwgdGVzdHMgaW4gdGhpcyB0ZXN0IGNh
c2UuCiB2b2lkIFRlc3RDYXNlOjpDbGVhclJlc3VsdCgpIHsKLSAgRm9yRWFjaCh0ZXN0X2luZm9f
bGlzdF8sIGludGVybmFsOjpUZXN0SW5mb0ltcGw6OkNsZWFyVGVzdFJlc3VsdCk7Ci19Ci0KLS8v
IFJldHVybnMgdHJ1ZSBpZmYgdGVzdCBwYXNzZWQuCi1ib29sIFRlc3RDYXNlOjpUZXN0UGFzc2Vk
KGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKSB7Ci0gIGNvbnN0IGludGVybmFsOjpUZXN0SW5m
b0ltcGwqIGNvbnN0IGltcGwgPSB0ZXN0X2luZm8tPmltcGwoKTsKLSAgcmV0dXJuIGltcGwtPnNo
b3VsZF9ydW4oKSAmJiBpbXBsLT5yZXN1bHQoKS0+UGFzc2VkKCk7Ci19Ci0KLS8vIFJldHVybnMg
dHJ1ZSBpZmYgdGVzdCBmYWlsZWQuCi1ib29sIFRlc3RDYXNlOjpUZXN0RmFpbGVkKGNvbnN0IFRl
c3RJbmZvICogdGVzdF9pbmZvKSB7Ci0gIGNvbnN0IGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGNv
bnN0IGltcGwgPSB0ZXN0X2luZm8tPmltcGwoKTsKLSAgcmV0dXJuIGltcGwtPnNob3VsZF9ydW4o
KSAmJiBpbXBsLT5yZXN1bHQoKS0+RmFpbGVkKCk7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZmYg
dGVzdCBpcyBkaXNhYmxlZC4KLWJvb2wgVGVzdENhc2U6OlRlc3REaXNhYmxlZChjb25zdCBUZXN0
SW5mbyAqIHRlc3RfaW5mbykgewotICByZXR1cm4gdGVzdF9pbmZvLT5pbXBsKCktPmlzX2Rpc2Fi
bGVkKCk7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdGVzdCBzaG91bGQgcnVu
LgotYm9vbCBUZXN0Q2FzZTo6U2hvdWxkUnVuVGVzdChjb25zdCBUZXN0SW5mbyAqdGVzdF9pbmZv
KSB7Ci0gIHJldHVybiB0ZXN0X2luZm8tPmltcGwoKS0+c2hvdWxkX3J1bigpOworICBhZF9ob2Nf
dGVzdF9yZXN1bHRfLkNsZWFyKCk7CisgIEZvckVhY2godGVzdF9pbmZvX2xpc3RfLCBUZXN0SW5m
bzo6Q2xlYXJUZXN0UmVzdWx0KTsKIH0KIAogLy8gU2h1ZmZsZXMgdGhlIHRlc3RzIGluIHRoaXMg
dGVzdCBjYXNlLgpAQCAtMjQ3MSwyMCArMjgwNiwyMCBAQCB2b2lkIFRlc3RDYXNlOjpVbnNodWZm
bGVUZXN0cygpIHsKIC8vCiAvLyBGb3JtYXRDb3VudGFibGVOb3VuKDEsICJmb3JtdWxhIiwgImZv
cm11bGkiKSByZXR1cm5zICIxIGZvcm11bGEiLgogLy8gRm9ybWF0Q291bnRhYmxlTm91big1LCAi
Ym9vayIsICJib29rcyIpIHJldHVybnMgIjUgYm9va3MiLgotc3RhdGljIGludGVybmFsOjpTdHJp
bmcgRm9ybWF0Q291bnRhYmxlTm91bihpbnQgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBzaW5ndWxhcl9mb3JtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogcGx1cmFs
X2Zvcm0pIHsKLSAgcmV0dXJuIGludGVybmFsOjpTdHJpbmc6OkZvcm1hdCgiJWQgJXMiLCBjb3Vu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCA9PSAxID8gc2luZ3Vs
YXJfZm9ybSA6IHBsdXJhbF9mb3JtKTsKK3N0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRDb3VudGFi
bGVOb3VuKGludCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIgKiBzaW5ndWxhcl9mb3JtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciAqIHBsdXJhbF9mb3JtKSB7CisgIHJldHVybiBpbnRlcm5h
bDo6U3RyZWFtYWJsZVRvU3RyaW5nKGNvdW50KSArICIgIiArCisgICAgICAoY291bnQgPT0gMSA/
IHNpbmd1bGFyX2Zvcm0gOiBwbHVyYWxfZm9ybSk7CiB9CiAKIC8vIEZvcm1hdHMgdGhlIGNvdW50
IG9mIHRlc3RzLgotc3RhdGljIGludGVybmFsOjpTdHJpbmcgRm9ybWF0VGVzdENvdW50KGludCB0
ZXN0X2NvdW50KSB7CitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0VGVzdENvdW50KGludCB0ZXN0
X2NvdW50KSB7CiAgIHJldHVybiBGb3JtYXRDb3VudGFibGVOb3VuKHRlc3RfY291bnQsICJ0ZXN0
IiwgInRlc3RzIik7CiB9CiAKIC8vIEZvcm1hdHMgdGhlIGNvdW50IG9mIHRlc3QgY2FzZXMuCi1z
dGF0aWMgaW50ZXJuYWw6OlN0cmluZyBGb3JtYXRUZXN0Q2FzZUNvdW50KGludCB0ZXN0X2Nhc2Vf
Y291bnQpIHsKK3N0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRUZXN0Q2FzZUNvdW50KGludCB0ZXN0
X2Nhc2VfY291bnQpIHsKICAgcmV0dXJuIEZvcm1hdENvdW50YWJsZU5vdW4odGVzdF9jYXNlX2Nv
dW50LCAidGVzdCBjYXNlIiwgInRlc3QgY2FzZXMiKTsKIH0KIApAQCAtMjUwNCwxMyArMjgzOSwx
NSBAQCBzdGF0aWMgY29uc3QgY2hhciAqIFRlc3RQYXJ0UmVzdWx0VHlwZVRvU3RyaW5nKFRlc3RQ
YXJ0UmVzdWx0OjpUeXBlIHR5cGUpIHsKICNlbHNlCiAgICAgICByZXR1cm4gIkZhaWx1cmVcbiI7
CiAjZW5kaWYKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuICJVbmtub3duIHJlc3VsdCB0eXBl
IjsKICAgfQotCi0gIHJldHVybiAiVW5rbm93biByZXN1bHQgdHlwZSI7CiB9CiAKLS8vIFByaW50
cyBhIFRlc3RQYXJ0UmVzdWx0IHRvIGEgU3RyaW5nLgotc3RhdGljIGludGVybmFsOjpTdHJpbmcg
UHJpbnRUZXN0UGFydFJlc3VsdFRvU3RyaW5nKAorbmFtZXNwYWNlIGludGVybmFsIHsKKworLy8g
UHJpbnRzIGEgVGVzdFBhcnRSZXN1bHQgdG8gYW4gc3RkOjpzdHJpbmcuCitzdGF0aWMgc3RkOjpz
dHJpbmcgUHJpbnRUZXN0UGFydFJlc3VsdFRvU3RyaW5nKAogICAgIGNvbnN0IFRlc3RQYXJ0UmVz
dWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7CiAgIHJldHVybiAoTWVzc2FnZSgpCiAgICAgICAgICAg
PDwgaW50ZXJuYWw6OkZvcm1hdEZpbGVMb2NhdGlvbih0ZXN0X3BhcnRfcmVzdWx0LmZpbGVfbmFt
ZSgpLApAQCAtMjUyMSw3ICsyODU4LDcgQEAgc3RhdGljIGludGVybmFsOjpTdHJpbmcgUHJpbnRU
ZXN0UGFydFJlc3VsdFRvU3RyaW5nKAogCiAvLyBQcmludHMgYSBUZXN0UGFydFJlc3VsdC4KIHN0
YXRpYyB2b2lkIFByaW50VGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3Rf
cGFydF9yZXN1bHQpIHsKLSAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyYgcmVzdWx0ID0KKyAgY29u
c3Qgc3RkOjpzdHJpbmcmIHJlc3VsdCA9CiAgICAgICBQcmludFRlc3RQYXJ0UmVzdWx0VG9TdHJp
bmcodGVzdF9wYXJ0X3Jlc3VsdCk7CiAgIHByaW50ZigiJXNcbiIsIHJlc3VsdC5jX3N0cigpKTsK
ICAgZmZsdXNoKHN0ZG91dCk7CkBAIC0yNTQwLDggKzI4NzcsNiBAQCBzdGF0aWMgdm9pZCBQcmlu
dFRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7
CiAKIC8vIGNsYXNzIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcgogCi1uYW1lc3BhY2UgaW50
ZXJuYWwgewotCiBlbnVtIEdUZXN0Q29sb3IgewogICBDT0xPUl9ERUZBVUxULAogICBDT0xPUl9S
RUQsCkBAIC0yNTQ5LDcgKzI4ODQsOCBAQCBlbnVtIEdUZXN0Q29sb3IgewogICBDT0xPUl9ZRUxM
T1cKIH07CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklM
RQorI2lmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFICYmIFwK
KyAgICAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lORE9XU19SVAogCiAv
LyBSZXR1cm5zIHRoZSBjaGFyYWN0ZXIgYXR0cmlidXRlIGZvciB0aGUgZ2l2ZW4gY29sb3IuCiBX
T1JEIEdldENvbG9yQXR0cmlidXRlKEdUZXN0Q29sb3IgY29sb3IpIHsKQEAgLTI1OTIsNiArMjky
OCwxMiBAQCBib29sIFNob3VsZFVzZUNvbG9yKGJvb2wgc3Rkb3V0X2lzX3R0eSkgewogICAgICAg
ICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgInh0ZXJtIikgfHwKICAgICAgICAgU3RyaW5n
OjpDU3RyaW5nRXF1YWxzKHRlcm0sICJ4dGVybS1jb2xvciIpIHx8CiAgICAgICAgIFN0cmluZzo6
Q1N0cmluZ0VxdWFscyh0ZXJtLCAieHRlcm0tMjU2Y29sb3IiKSB8fAorICAgICAgICBTdHJpbmc6
OkNTdHJpbmdFcXVhbHModGVybSwgInNjcmVlbiIpIHx8CisgICAgICAgIFN0cmluZzo6Q1N0cmlu
Z0VxdWFscyh0ZXJtLCAic2NyZWVuLTI1NmNvbG9yIikgfHwKKyAgICAgICAgU3RyaW5nOjpDU3Ry
aW5nRXF1YWxzKHRlcm0sICJ0bXV4IikgfHwKKyAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxz
KHRlcm0sICJ0bXV4LTI1NmNvbG9yIikgfHwKKyAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxz
KHRlcm0sICJyeHZ0LXVuaWNvZGUiKSB8fAorICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHMo
dGVybSwgInJ4dnQtdW5pY29kZS0yNTZjb2xvciIpIHx8CiAgICAgICAgIFN0cmluZzo6Q1N0cmlu
Z0VxdWFscyh0ZXJtLCAibGludXgiKSB8fAogICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHMo
dGVybSwgImN5Z3dpbiIpOwogICAgIHJldHVybiBzdGRvdXRfaXNfdHR5ICYmIHRlcm1fc3VwcG9y
dHNfY29sb3I7CkBAIC0yNjE1LDggKzI5NTcsOSBAQCB2b2lkIENvbG9yZWRQcmludGYoR1Rlc3RD
b2xvciBjb2xvciwgY29uc3QgY2hhciogZm10LCAuLi4pIHsKICAgdmFfbGlzdCBhcmdzOwogICB2
YV9zdGFydChhcmdzLCBmbXQpOwogCi0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgfHwgR1RF
U1RfT1NfU1lNQklBTiB8fCBHVEVTVF9PU19aT1MKLSAgY29uc3QgYm9vbCB1c2VfY29sb3IgPSBm
YWxzZTsKKyNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRSB8fCBHVEVTVF9PU19TWU1CSUFOIHx8
IEdURVNUX09TX1pPUyB8fCBcCisgICAgR1RFU1RfT1NfSU9TIHx8IEdURVNUX09TX1dJTkRPV1Nf
UEhPTkUgfHwgR1RFU1RfT1NfV0lORE9XU19SVAorICBjb25zdCBib29sIHVzZV9jb2xvciA9IEFs
d2F5c0ZhbHNlKCk7CiAjZWxzZQogICBzdGF0aWMgY29uc3QgYm9vbCBpbl9jb2xvcl9tb2RlID0K
ICAgICAgIFNob3VsZFVzZUNvbG9yKHBvc2l4OjpJc0FUVFkocG9zaXg6OkZpbGVObyhzdGRvdXQp
KSAhPSAwKTsKQEAgLTI2MzAsNyArMjk3Myw4IEBAIHZvaWQgQ29sb3JlZFByaW50ZihHVGVzdENv
bG9yIGNvbG9yLCBjb25zdCBjaGFyKiBmbXQsIC4uLikgewogICAgIHJldHVybjsKICAgfQogCi0j
aWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyNpZiBHVEVT
VF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRSAmJiBcCisgICAgIUdURVNU
X09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQKICAgY29uc3QgSEFORExF
IHN0ZG91dF9oYW5kbGUgPSBHZXRTdGRIYW5kbGUoU1REX09VVFBVVF9IQU5ETEUpOwogCiAgIC8v
IEdldHMgdGhlIGN1cnJlbnQgdGV4dCBjb2xvci4KQEAgLTI2NTcsNiArMzAwMSwyOCBAQCB2b2lk
IENvbG9yZWRQcmludGYoR1Rlc3RDb2xvciBjb2xvciwgY29uc3QgY2hhciogZm10LCAuLi4pIHsK
ICAgdmFfZW5kKGFyZ3MpOwogfQogCisvLyBUZXh0IHByaW50ZWQgaW4gR29vZ2xlIFRlc3QncyB0
ZXh0IG91dHB1dCBhbmQgLS1ndW5pdF9saXN0X3Rlc3RzCisvLyBvdXRwdXQgdG8gbGFiZWwgdGhl
IHR5cGUgcGFyYW1ldGVyIGFuZCB2YWx1ZSBwYXJhbWV0ZXIgZm9yIGEgdGVzdC4KK3N0YXRpYyBj
b25zdCBjaGFyIGtUeXBlUGFyYW1MYWJlbFtdID0gIlR5cGVQYXJhbSI7CitzdGF0aWMgY29uc3Qg
Y2hhciBrVmFsdWVQYXJhbUxhYmVsW10gPSAiR2V0UGFyYW0oKSI7CisKK3ZvaWQgUHJpbnRGdWxs
VGVzdENvbW1lbnRJZlByZXNlbnQoY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbykgeworICBjb25z
dCBjaGFyKiBjb25zdCB0eXBlX3BhcmFtID0gdGVzdF9pbmZvLnR5cGVfcGFyYW0oKTsKKyAgY29u
c3QgY2hhciogY29uc3QgdmFsdWVfcGFyYW0gPSB0ZXN0X2luZm8udmFsdWVfcGFyYW0oKTsKKwor
ICBpZiAodHlwZV9wYXJhbSAhPSBOVUxMIHx8IHZhbHVlX3BhcmFtICE9IE5VTEwpIHsKKyAgICBw
cmludGYoIiwgd2hlcmUgIik7CisgICAgaWYgKHR5cGVfcGFyYW0gIT0gTlVMTCkgeworICAgICAg
cHJpbnRmKCIlcyA9ICVzIiwga1R5cGVQYXJhbUxhYmVsLCB0eXBlX3BhcmFtKTsKKyAgICAgIGlm
ICh2YWx1ZV9wYXJhbSAhPSBOVUxMKQorICAgICAgICBwcmludGYoIiBhbmQgIik7CisgICAgfQor
ICAgIGlmICh2YWx1ZV9wYXJhbSAhPSBOVUxMKSB7CisgICAgICBwcmludGYoIiVzID0gJXMiLCBr
VmFsdWVQYXJhbUxhYmVsLCB2YWx1ZV9wYXJhbSk7CisgICAgfQorICB9Cit9CisKIC8vIFRoaXMg
Y2xhc3MgaW1wbGVtZW50cyB0aGUgVGVzdEV2ZW50TGlzdGVuZXIgaW50ZXJmYWNlLgogLy8KIC8v
IENsYXNzIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlciBpcyBjb3B5YWJsZS4KQEAgLTI2ODQs
OCArMzA1MCw2IEBAIGNsYXNzIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlciA6IHB1YmxpYyBU
ZXN0RXZlbnRMaXN0ZW5lciB7CiAKICBwcml2YXRlOgogICBzdGF0aWMgdm9pZCBQcmludEZhaWxl
ZFRlc3RzKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpOwotCi0gIGludGVybmFsOjpTdHJpbmcg
dGVzdF9jYXNlX25hbWVfOwogfTsKIAogICAvLyBGaXJlZCBiZWZvcmUgZWFjaCBpdGVyYXRpb24g
b2YgdGVzdHMgc3RhcnRzLgpAQCAtMjY5OCwxNSArMzA2MiwxNiBAQCB2b2lkIFByZXR0eVVuaXRU
ZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0SXRlcmF0aW9uU3RhcnQoCiAKICAgLy8gUHJpbnRzIHRo
ZSBmaWx0ZXIgaWYgaXQncyBub3QgKi4gIFRoaXMgcmVtaW5kcyB0aGUgdXNlciB0aGF0IHNvbWUK
ICAgLy8gdGVzdHMgbWF5IGJlIHNraXBwZWQuCi0gIGlmICghaW50ZXJuYWw6OlN0cmluZzo6Q1N0
cmluZ0VxdWFscyhmaWx0ZXIsIGtVbml2ZXJzYWxGaWx0ZXIpKSB7CisgIGlmICghU3RyaW5nOjpD
U3RyaW5nRXF1YWxzKGZpbHRlciwga1VuaXZlcnNhbEZpbHRlcikpIHsKICAgICBDb2xvcmVkUHJp
bnRmKENPTE9SX1lFTExPVywKICAgICAgICAgICAgICAgICAgICJOb3RlOiAlcyBmaWx0ZXIgPSAl
c1xuIiwgR1RFU1RfTkFNRV8sIGZpbHRlcik7CiAgIH0KIAogICBpZiAoaW50ZXJuYWw6OlNob3Vs
ZFNoYXJkKGtUZXN0VG90YWxTaGFyZHMsIGtUZXN0U2hhcmRJbmRleCwgZmFsc2UpKSB7CisgICAg
Y29uc3QgSW50MzIgc2hhcmRfaW5kZXggPSBJbnQzMkZyb21FbnZPckRpZShrVGVzdFNoYXJkSW5k
ZXgsIC0xKTsKICAgICBDb2xvcmVkUHJpbnRmKENPTE9SX1lFTExPVywKLSAgICAgICAgICAgICAg
ICAgICJOb3RlOiBUaGlzIGlzIHRlc3Qgc2hhcmQgJXMgb2YgJXMuXG4iLAotICAgICAgICAgICAg
ICAgICAgaW50ZXJuYWw6OnBvc2l4OjpHZXRFbnYoa1Rlc3RTaGFyZEluZGV4KSwKKyAgICAgICAg
ICAgICAgICAgICJOb3RlOiBUaGlzIGlzIHRlc3Qgc2hhcmQgJWQgb2YgJXMuXG4iLAorICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihzaGFyZF9pbmRleCkgKyAxLAogICAgICAgICAg
ICAgICAgICAgaW50ZXJuYWw6OnBvc2l4OjpHZXRFbnYoa1Rlc3RUb3RhbFNoYXJkcykpOwogICB9
CiAKQEAgLTI3MzEsMjcgKzMwOTYsMjIgQEAgdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50
ZXI6Ok9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCgKIH0KIAogdm9pZCBQcmV0dHlVbml0VGVzdFJl
c3VsdFByaW50ZXI6Ok9uVGVzdENhc2VTdGFydChjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKSB7
Ci0gIHRlc3RfY2FzZV9uYW1lXyA9IHRlc3RfY2FzZS5uYW1lKCk7Ci0gIGNvbnN0IGludGVybmFs
OjpTdHJpbmcgY291bnRzID0KKyAgY29uc3Qgc3RkOjpzdHJpbmcgY291bnRzID0KICAgICAgIEZv
cm1hdENvdW50YWJsZU5vdW4odGVzdF9jYXNlLnRlc3RfdG9fcnVuX2NvdW50KCksICJ0ZXN0Iiwg
InRlc3RzIik7CiAgIENvbG9yZWRQcmludGYoQ09MT1JfR1JFRU4sICJbLS0tLS0tLS0tLV0gIik7
Ci0gIHByaW50ZigiJXMgZnJvbSAlcyIsIGNvdW50cy5jX3N0cigpLCB0ZXN0X2Nhc2VfbmFtZV8u
Y19zdHIoKSk7Ci0gIGlmICh0ZXN0X2Nhc2UuY29tbWVudCgpWzBdID09ICdcMCcpIHsKKyAgcHJp
bnRmKCIlcyBmcm9tICVzIiwgY291bnRzLmNfc3RyKCksIHRlc3RfY2FzZS5uYW1lKCkpOworICBp
ZiAodGVzdF9jYXNlLnR5cGVfcGFyYW0oKSA9PSBOVUxMKSB7CiAgICAgcHJpbnRmKCJcbiIpOwog
ICB9IGVsc2UgewotICAgIHByaW50ZigiLCB3aGVyZSAlc1xuIiwgdGVzdF9jYXNlLmNvbW1lbnQo
KSk7CisgICAgcHJpbnRmKCIsIHdoZXJlICVzID0gJXNcbiIsIGtUeXBlUGFyYW1MYWJlbCwgdGVz
dF9jYXNlLnR5cGVfcGFyYW0oKSk7CiAgIH0KICAgZmZsdXNoKHN0ZG91dCk7CiB9CiAKIHZvaWQg
UHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYg
dGVzdF9pbmZvKSB7CiAgIENvbG9yZWRQcmludGYoQ09MT1JfR1JFRU4sICAiWyBSVU4gICAgICBd
ICIpOwotICBQcmludFRlc3ROYW1lKHRlc3RfY2FzZV9uYW1lXy5jX3N0cigpLCB0ZXN0X2luZm8u
bmFtZSgpKTsKLSAgaWYgKHRlc3RfaW5mby5jb21tZW50KClbMF0gPT0gJ1wwJykgewotICAgIHBy
aW50ZigiXG4iKTsKLSAgfSBlbHNlIHsKLSAgICBwcmludGYoIiwgd2hlcmUgJXNcbiIsIHRlc3Rf
aW5mby5jb21tZW50KCkpOwotICB9CisgIFByaW50VGVzdE5hbWUodGVzdF9pbmZvLnRlc3RfY2Fz
ZV9uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOworICBwcmludGYoIlxuIik7CiAgIGZmbHVzaChz
dGRvdXQpOwogfQogCkBAIC0yNzczLDcgKzMxMzMsMTAgQEAgdm9pZCBQcmV0dHlVbml0VGVzdFJl
c3VsdFByaW50ZXI6Ok9uVGVzdEVuZChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CiAgIH0g
ZWxzZSB7CiAgICAgQ29sb3JlZFByaW50ZihDT0xPUl9SRUQsICJbICBGQUlMRUQgIF0gIik7CiAg
IH0KLSAgUHJpbnRUZXN0TmFtZSh0ZXN0X2Nhc2VfbmFtZV8uY19zdHIoKSwgdGVzdF9pbmZvLm5h
bWUoKSk7CisgIFByaW50VGVzdE5hbWUodGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3Rf
aW5mby5uYW1lKCkpOworICBpZiAodGVzdF9pbmZvLnJlc3VsdCgpLT5GYWlsZWQoKSkKKyAgICBQ
cmludEZ1bGxUZXN0Q29tbWVudElmUHJlc2VudCh0ZXN0X2luZm8pOworCiAgIGlmIChHVEVTVF9G
TEFHKHByaW50X3RpbWUpKSB7CiAgICAgcHJpbnRmKCIgKCVzIG1zKVxuIiwgaW50ZXJuYWw6OlN0
cmVhbWFibGVUb1N0cmluZygKICAgICAgICAgICAgdGVzdF9pbmZvLnJlc3VsdCgpLT5lbGFwc2Vk
X3RpbWUoKSkuY19zdHIoKSk7CkBAIC0yNzg2LDEyICszMTQ5LDExIEBAIHZvaWQgUHJldHR5VW5p
dFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RFbmQoY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbykg
ewogdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdENhc2VFbmQoY29uc3Qg
VGVzdENhc2UmIHRlc3RfY2FzZSkgewogICBpZiAoIUdURVNUX0ZMQUcocHJpbnRfdGltZSkpIHJl
dHVybjsKIAotICB0ZXN0X2Nhc2VfbmFtZV8gPSB0ZXN0X2Nhc2UubmFtZSgpOwotICBjb25zdCBp
bnRlcm5hbDo6U3RyaW5nIGNvdW50cyA9CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvdW50cyA9CiAg
ICAgICBGb3JtYXRDb3VudGFibGVOb3VuKHRlc3RfY2FzZS50ZXN0X3RvX3J1bl9jb3VudCgpLCAi
dGVzdCIsICJ0ZXN0cyIpOwogICBDb2xvcmVkUHJpbnRmKENPTE9SX0dSRUVOLCAiWy0tLS0tLS0t
LS1dICIpOwogICBwcmludGYoIiVzIGZyb20gJXMgKCVzIG1zIHRvdGFsKVxuXG4iLAotICAgICAg
ICAgY291bnRzLmNfc3RyKCksIHRlc3RfY2FzZV9uYW1lXy5jX3N0cigpLAorICAgICAgICAgY291
bnRzLmNfc3RyKCksIHRlc3RfY2FzZS5uYW1lKCksCiAgICAgICAgICBpbnRlcm5hbDo6U3RyZWFt
YWJsZVRvU3RyaW5nKHRlc3RfY2FzZS5lbGFwc2VkX3RpbWUoKSkuY19zdHIoKSk7CiAgIGZmbHVz
aChzdGRvdXQpOwogfQpAQCAtMjgyMiwyMSArMzE4NCwxNCBAQCB2b2lkIFByZXR0eVVuaXRUZXN0
UmVzdWx0UHJpbnRlcjo6UHJpbnRGYWlsZWRUZXN0cyhjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0
KSB7CiAgICAgICB9CiAgICAgICBDb2xvcmVkUHJpbnRmKENPTE9SX1JFRCwgIlsgIEZBSUxFRCAg
XSAiKTsKICAgICAgIHByaW50ZigiJXMuJXMiLCB0ZXN0X2Nhc2UubmFtZSgpLCB0ZXN0X2luZm8u
bmFtZSgpKTsKLSAgICAgIGlmICh0ZXN0X2Nhc2UuY29tbWVudCgpWzBdICE9ICdcMCcgfHwKLSAg
ICAgICAgICB0ZXN0X2luZm8uY29tbWVudCgpWzBdICE9ICdcMCcpIHsKLSAgICAgICAgcHJpbnRm
KCIsIHdoZXJlICVzIiwgdGVzdF9jYXNlLmNvbW1lbnQoKSk7Ci0gICAgICAgIGlmICh0ZXN0X2Nh
c2UuY29tbWVudCgpWzBdICE9ICdcMCcgJiYKLSAgICAgICAgICAgIHRlc3RfaW5mby5jb21tZW50
KClbMF0gIT0gJ1wwJykgewotICAgICAgICAgIHByaW50ZigiIGFuZCAiKTsKLSAgICAgICAgfQot
ICAgICAgfQotICAgICAgcHJpbnRmKCIlc1xuIiwgdGVzdF9pbmZvLmNvbW1lbnQoKSk7CisgICAg
ICBQcmludEZ1bGxUZXN0Q29tbWVudElmUHJlc2VudCh0ZXN0X2luZm8pOworICAgICAgcHJpbnRm
KCJcbiIpOwogICAgIH0KICAgfQogfQogCi0gdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50
ZXI6Ok9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IC8qaXRl
cmF0aW9uKi8pIHsKK3ZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RJdGVy
YXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IC8qaXRlcmF0aW9uKi8pIHsKICAg
Q29sb3JlZFByaW50ZihDT0xPUl9HUkVFTiwgICJbPT09PT09PT09PV0gIik7CiAgIHByaW50Zigi
JXMgZnJvbSAlcyByYW4uIiwKICAgICAgICAgIEZvcm1hdFRlc3RDb3VudCh1bml0X3Rlc3QudGVz
dF90b19ydW5fY291bnQoKSkuY19zdHIoKSwKQEAgLTI4NTksNyArMzIxNCw3IEBAIHZvaWQgUHJl
dHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludEZhaWxlZFRlc3RzKGNvbnN0IFVuaXRUZXN0
JiB1bml0X3Rlc3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG51bV9mYWlsdXJlcyA9PSAx
ID8gIlRFU1QiIDogIlRFU1RTIik7CiAgIH0KIAotICBpbnQgbnVtX2Rpc2FibGVkID0gdW5pdF90
ZXN0LmRpc2FibGVkX3Rlc3RfY291bnQoKTsKKyAgaW50IG51bV9kaXNhYmxlZCA9IHVuaXRfdGVz
dC5yZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKTsKICAgaWYgKG51bV9kaXNhYmxlZCAm
JiAhR1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cykpIHsKICAgICBpZiAoIW51bV9m
YWlsdXJlcykgewogICAgICAgcHJpbnRmKCJcbiIpOyAgLy8gQWRkIGEgc3BhY2VyIGlmIG5vIEZB
SUxVUkUgYmFubmVyIGlzIGRpc3BsYXllZC4KQEAgLTMwMTMsMTggKzMzNjgsMjcgQEAgY2xhc3Mg
WG1sVW5pdFRlc3RSZXN1bHRQcmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIg
ewogICAvLyBpc19hdHRyaWJ1dGUgaXMgdHJ1ZSwgdGhlIHRleHQgaXMgbWVhbnQgdG8gYXBwZWFy
IGFzIGFuIGF0dHJpYnV0ZQogICAvLyB2YWx1ZSwgYW5kIG5vcm1hbGl6YWJsZSB3aGl0ZXNwYWNl
IGlzIHByZXNlcnZlZCBieSByZXBsYWNpbmcgaXQKICAgLy8gd2l0aCBjaGFyYWN0ZXIgcmVmZXJl
bmNlcy4KLSAgc3RhdGljIFN0cmluZyBFc2NhcGVYbWwoY29uc3QgY2hhciogc3RyLCBib29sIGlz
X2F0dHJpYnV0ZSk7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFc2NhcGVYbWwoY29uc3Qgc3RkOjpz
dHJpbmcmIHN0ciwgYm9vbCBpc19hdHRyaWJ1dGUpOwogCiAgIC8vIFJldHVybnMgdGhlIGdpdmVu
IHN0cmluZyB3aXRoIGFsbCBjaGFyYWN0ZXJzIGludmFsaWQgaW4gWE1MIHJlbW92ZWQuCi0gIHN0
YXRpYyBTdHJpbmcgUmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoY29uc3QgY2hhciogc3RyKTsK
KyAgc3RhdGljIHN0ZDo6c3RyaW5nIFJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGNvbnN0IHN0
ZDo6c3RyaW5nJiBzdHIpOwogCiAgIC8vIENvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIEVzY2Fw
ZVhtbCB3aGVuIHN0ciBpcyBhbiBhdHRyaWJ1dGUgdmFsdWUuCi0gIHN0YXRpYyBTdHJpbmcgRXNj
YXBlWG1sQXR0cmlidXRlKGNvbnN0IGNoYXIqIHN0cikgeworICBzdGF0aWMgc3RkOjpzdHJpbmcg
RXNjYXBlWG1sQXR0cmlidXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKICAgICByZXR1cm4g
RXNjYXBlWG1sKHN0ciwgdHJ1ZSk7CiAgIH0KIAogICAvLyBDb252ZW5pZW5jZSB3cmFwcGVyIGFy
b3VuZCBFc2NhcGVYbWwgd2hlbiBzdHIgaXMgbm90IGFuIGF0dHJpYnV0ZSB2YWx1ZS4KLSAgc3Rh
dGljIFN0cmluZyBFc2NhcGVYbWxUZXh0KGNvbnN0IGNoYXIqIHN0cikgeyByZXR1cm4gRXNjYXBl
WG1sKHN0ciwgZmFsc2UpOyB9CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFc2NhcGVYbWxUZXh0KGNv
bnN0IGNoYXIqIHN0cikgeworICAgIHJldHVybiBFc2NhcGVYbWwoc3RyLCBmYWxzZSk7CisgIH0K
KworICAvLyBWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBhdHRyaWJ1dGUgYmVsb25ncyB0byB0aGUg
Z2l2ZW4gZWxlbWVudCBhbmQKKyAgLy8gc3RyZWFtcyB0aGUgYXR0cmlidXRlIGFzIFhNTC4KKyAg
c3RhdGljIHZvaWQgT3V0cHV0WG1sQXR0cmlidXRlKHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGVsZW1lbnRf
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHZhbHVlKTsKIAogICAvLyBTdHJlYW1zIGFuIFhNTCBDREFUQSBzZWN0aW9uLCBlc2NhcGlu
ZyBpbnZhbGlkIENEQVRBIHNlcXVlbmNlcyBhcyBuZWVkZWQuCiAgIHN0YXRpYyB2b2lkIE91dHB1
dFhtbENEYXRhU2VjdGlvbig6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLCBjb25zdCBjaGFyKiBkYXRh
KTsKQEAgLTMwMzUsMTkgKzMzOTksMjEgQEAgY2xhc3MgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVy
IDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKTsKIAogICAvLyBQcmludHMgYW4g
WE1MIHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdENhc2Ugb2JqZWN0Ci0gIHN0YXRpYyB2b2lkIFBy
aW50WG1sVGVzdENhc2UoRklMRSogb3V0LCBjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKTsKKyAg
c3RhdGljIHZvaWQgUHJpbnRYbWxUZXN0Q2FzZSg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpOwog
CiAgIC8vIFByaW50cyBhbiBYTUwgc3VtbWFyeSBvZiB1bml0X3Rlc3QgdG8gb3V0cHV0IHN0cmVh
bSBvdXQuCi0gIHN0YXRpYyB2b2lkIFByaW50WG1sVW5pdFRlc3QoRklMRSogb3V0LCBjb25zdCBV
bml0VGVzdCYgdW5pdF90ZXN0KTsKKyAgc3RhdGljIHZvaWQgUHJpbnRYbWxVbml0VGVzdCg6OnN0
ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFVuaXRUZXN0JiB1bml0X3Rlc3QpOwogCiAgIC8vIFByb2R1Y2VzIGEgc3RyaW5nIHJlcHJlc2Vu
dGluZyB0aGUgdGVzdCBwcm9wZXJ0aWVzIGluIGEgcmVzdWx0IGFzIHNwYWNlCiAgIC8vIGRlbGlt
aXRlZCBYTUwgYXR0cmlidXRlcyBiYXNlZCBvbiB0aGUgcHJvcGVydHkga2V5PSJ2YWx1ZSIgcGFp
cnMuCi0gIC8vIFdoZW4gdGhlIFN0cmluZyBpcyBub3QgZW1wdHksIGl0IGluY2x1ZGVzIGEgc3Bh
Y2UgYXQgdGhlIGJlZ2lubmluZywKKyAgLy8gV2hlbiB0aGUgc3RkOjpzdHJpbmcgaXMgbm90IGVt
cHR5LCBpdCBpbmNsdWRlcyBhIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcsCiAgIC8vIHRvIGRlbGlt
aXQgdGhpcyBhdHRyaWJ1dGUgZnJvbSBwcmlvciBhdHRyaWJ1dGVzLgotICBzdGF0aWMgU3RyaW5n
IFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCk7
CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBUZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRlcyhjb25z
dCBUZXN0UmVzdWx0JiByZXN1bHQpOwogCiAgIC8vIFRoZSBvdXRwdXQgZmlsZS4KLSAgY29uc3Qg
U3RyaW5nIG91dHB1dF9maWxlXzsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgb3V0cHV0X2ZpbGVfOwog
CiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oWG1sVW5pdFRlc3RSZXN1bHRQcmlu
dGVyKTsKIH07CkBAIC0zMDg5LDcgKzM0NTUsOSBAQCB2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJp
bnRlcjo6T25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsCiAgICAg
ZmZsdXNoKHN0ZGVycik7CiAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwogICB9Ci0gIFByaW50WG1s
VW5pdFRlc3QoeG1sb3V0LCB1bml0X3Rlc3QpOworICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07
CisgIFByaW50WG1sVW5pdFRlc3QoJnN0cmVhbSwgdW5pdF90ZXN0KTsKKyAgZnByaW50Zih4bWxv
dXQsICIlcyIsIFN0cmluZ1N0cmVhbVRvU3RyaW5nKCZzdHJlYW0pLmNfc3RyKCkpOwogICBmY2xv
c2UoeG1sb3V0KTsKIH0KIApAQCAtMzEwNSw0MiArMzQ3Myw0MyBAQCB2b2lkIFhtbFVuaXRUZXN0
UmVzdWx0UHJpbnRlcjo6T25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rl
c3QsCiAvLyBtb3N0IGludmFsaWQgY2hhcmFjdGVycyBjYW4gYmUgcmV0YWluZWQgdXNpbmcgY2hh
cmFjdGVyIHJlZmVyZW5jZXMuCiAvLyBUT0RPKHdhbik6IEl0IG1pZ2h0IGJlIG5pY2UgdG8gaGF2
ZSBhIG1pbmltYWxseSBpbnZhc2l2ZSwgaHVtYW4tcmVhZGFibGUKIC8vIGVzY2FwaW5nIHNjaGVt
ZSBmb3IgaW52YWxpZCBjaGFyYWN0ZXJzLCByYXRoZXIgdGhhbiBkcm9wcGluZyB0aGVtLgotU3Ry
aW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6RXNjYXBlWG1sKGNvbnN0IGNoYXIqIHN0ciwg
Ym9vbCBpc19hdHRyaWJ1dGUpIHsKK3N0ZDo6c3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRl
cjo6RXNjYXBlWG1sKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIsIGJvb2wgaXNfYXR0cmli
dXRlKSB7CiAgIE1lc3NhZ2UgbTsKIAotICBpZiAoc3RyICE9IE5VTEwpIHsKLSAgICBmb3IgKGNv
bnN0IGNoYXIqIHNyYyA9IHN0cjsgKnNyYzsgKytzcmMpIHsKLSAgICAgIHN3aXRjaCAoKnNyYykg
ewotICAgICAgICBjYXNlICc8JzoKLSAgICAgICAgICBtIDw8ICImbHQ7IjsKLSAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSAnPic6Ci0gICAgICAgICAgbSA8PCAiJmd0OyI7Ci0gICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJyYnOgotICAgICAgICAgIG0gPDwgIiZhbXA7IjsKLSAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnXCcnOgotICAgICAgICAgIGlmIChpc19hdHRy
aWJ1dGUpCi0gICAgICAgICAgICBtIDw8ICImYXBvczsiOwotICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG0gPDwgJ1wnJzsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnIic6Ci0g
ICAgICAgICAgaWYgKGlzX2F0dHJpYnV0ZSkKLSAgICAgICAgICAgIG0gPDwgIiZxdW90OyI7Cisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgY2hh
ciBjaCA9IHN0cltpXTsKKyAgICBzd2l0Y2ggKGNoKSB7CisgICAgICBjYXNlICc8JzoKKyAgICAg
ICAgbSA8PCAiJmx0OyI7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnPic6CisgICAgICAg
IG0gPDwgIiZndDsiOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJyYnOgorICAgICAgICBt
IDw8ICImYW1wOyI7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnXCcnOgorICAgICAgICBp
ZiAoaXNfYXR0cmlidXRlKQorICAgICAgICAgIG0gPDwgIiZhcG9zOyI7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICBtIDw8ICdcJyc7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnIic6Cisg
ICAgICAgIGlmIChpc19hdHRyaWJ1dGUpCisgICAgICAgICAgbSA8PCAiJnF1b3Q7IjsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgIG0gPDwgJyInOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1
bHQ6CisgICAgICAgIGlmIChJc1ZhbGlkWG1sQ2hhcmFjdGVyKGNoKSkgeworICAgICAgICAgIGlm
IChpc19hdHRyaWJ1dGUgJiYgSXNOb3JtYWxpemFibGVXaGl0ZXNwYWNlKGNoKSkKKyAgICAgICAg
ICAgIG0gPDwgIiYjeCIgPDwgU3RyaW5nOjpGb3JtYXRCeXRlKHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KGNoKSkKKyAgICAgICAgICAgICAgPDwgIjsiOwogICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG0gPDwgJyInOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgIGlmIChJc1ZhbGlkWG1sQ2hhcmFjdGVyKCpzcmMpKSB7Ci0gICAgICAgICAgICBpZiAo
aXNfYXR0cmlidXRlICYmIElzTm9ybWFsaXphYmxlV2hpdGVzcGFjZSgqc3JjKSkKLSAgICAgICAg
ICAgICAgbSA8PCBTdHJpbmc6OkZvcm1hdCgiJiN4JTAyWDsiLCB1bnNpZ25lZCgqc3JjKSk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIG0gPDwgKnNyYzsKLSAgICAgICAgICB9Ci0g
ICAgICAgICAgYnJlYWs7Ci0gICAgICB9CisgICAgICAgICAgICBtIDw8IGNoOworICAgICAgICB9
CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgfQogCkBAIC0zMTUwLDE3ICszNTE5LDE1IEBAIFN0
cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OkVzY2FwZVhtbChjb25zdCBjaGFyKiBzdHIs
IGJvb2wgaXNfYXR0cmlidXRlKSB7CiAvLyBSZXR1cm5zIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBh
bGwgY2hhcmFjdGVycyBpbnZhbGlkIGluIFhNTCByZW1vdmVkLgogLy8gQ3VycmVudGx5IGludmFs
aWQgY2hhcmFjdGVycyBhcmUgZHJvcHBlZCBmcm9tIHRoZSBzdHJpbmcuIEFuCiAvLyBhbHRlcm5h
dGl2ZSBpcyB0byByZXBsYWNlIHRoZW0gd2l0aCBjZXJ0YWluIGNoYXJhY3RlcnMgc3VjaCBhcyAu
IG9yID8uCi1TdHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpSZW1vdmVJbnZhbGlkWG1s
Q2hhcmFjdGVycyhjb25zdCBjaGFyKiBzdHIpIHsKLSAgY2hhciogY29uc3Qgb3V0cHV0ID0gbmV3
IGNoYXJbc3RybGVuKHN0cikgKyAxXTsKLSAgY2hhciogYXBwZW5kZXIgPSBvdXRwdXQ7Ci0gIGZv
ciAoY2hhciBjaCA9ICpzdHI7IGNoICE9ICdcMCc7IGNoID0gKisrc3RyKQotICAgIGlmIChJc1Zh
bGlkWG1sQ2hhcmFjdGVyKGNoKSkKLSAgICAgICphcHBlbmRlcisrID0gY2g7Ci0gICphcHBlbmRl
ciA9ICdcMCc7CitzdGQ6OnN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlJlbW92ZUlu
dmFsaWRYbWxDaGFyYWN0ZXJzKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKKyAgc3Rk
OjpzdHJpbmcgb3V0cHV0OworICBvdXRwdXQucmVzZXJ2ZShzdHIuc2l6ZSgpKTsKKyAgZm9yIChz
dGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzdHIuYmVnaW4oKTsgaXQgIT0gc3RyLmVu
ZCgpOyArK2l0KQorICAgIGlmIChJc1ZhbGlkWG1sQ2hhcmFjdGVyKCppdCkpCisgICAgICBvdXRw
dXQucHVzaF9iYWNrKCppdCk7CiAKLSAgU3RyaW5nIHJldF92YWx1ZShvdXRwdXQpOwotICBkZWxl
dGVbXSBvdXRwdXQ7Ci0gIHJldHVybiByZXRfdmFsdWU7CisgIHJldHVybiBvdXRwdXQ7CiB9CiAK
IC8vIFRoZSBmb2xsb3dpbmcgcm91dGluZXMgZ2VuZXJhdGUgYW4gWE1MIHJlcHJlc2VudGF0aW9u
IG9mIGEgVW5pdFRlc3QKQEAgLTMxODIsMTAgKzM1NDksNDEgQEAgU3RyaW5nIFhtbFVuaXRUZXN0
UmVzdWx0UHJpbnRlcjo6UmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoY29uc3QgY2hhciogc3Ry
KSB7CiAvLyBGb3JtYXRzIHRoZSBnaXZlbiB0aW1lIGluIG1pbGxpc2Vjb25kcyBhcyBzZWNvbmRz
Lgogc3RkOjpzdHJpbmcgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKFRpbWVJbk1pbGxpcyBt
cykgewogICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOwotICBzcyA8PCBtcy8xMDAwLjA7CisgIHNz
IDw8IChzdGF0aWNfY2FzdDxkb3VibGU+KG1zKSAqIDFlLTMpOwogICByZXR1cm4gc3Muc3RyKCk7
CiB9CiAKK3N0YXRpYyBib29sIFBvcnRhYmxlTG9jYWx0aW1lKHRpbWVfdCBzZWNvbmRzLCBzdHJ1
Y3QgdG0qIG91dCkgeworI2lmIGRlZmluZWQoX01TQ19WRVIpCisgIHJldHVybiBsb2NhbHRpbWVf
cyhvdXQsICZzZWNvbmRzKSA9PSAwOworI2VsaWYgZGVmaW5lZChfX01JTkdXMzJfXykgfHwgZGVm
aW5lZChfX01JTkdXNjRfXykKKyAgLy8gTUlOR1cgPHRpbWUuaD4gcHJvdmlkZXMgbmVpdGhlciBs
b2NhbHRpbWVfciBub3IgbG9jYWx0aW1lX3MsIGJ1dCB1c2VzCisgIC8vIFdpbmRvd3MnIGxvY2Fs
dGltZSgpLCB3aGljaCBoYXMgYSB0aHJlYWQtbG9jYWwgdG0gYnVmZmVyLgorICBzdHJ1Y3QgdG0q
IHRtX3B0ciA9IGxvY2FsdGltZSgmc2Vjb25kcyk7ICAvLyBOT0xJTlQKKyAgaWYgKHRtX3B0ciA9
PSBOVUxMKQorICAgIHJldHVybiBmYWxzZTsKKyAgKm91dCA9ICp0bV9wdHI7CisgIHJldHVybiB0
cnVlOworI2Vsc2UKKyAgcmV0dXJuIGxvY2FsdGltZV9yKCZzZWNvbmRzLCBvdXQpICE9IE5VTEw7
CisjZW5kaWYKK30KKworLy8gQ29udmVydHMgdGhlIGdpdmVuIGVwb2NoIHRpbWUgaW4gbWlsbGlz
ZWNvbmRzIHRvIGEgZGF0ZSBzdHJpbmcgaW4gdGhlIElTTworLy8gODYwMSBmb3JtYXQsIHdpdGhv
dXQgdGhlIHRpbWV6b25lIGluZm9ybWF0aW9uLgorc3RkOjpzdHJpbmcgRm9ybWF0RXBvY2hUaW1l
SW5NaWxsaXNBc0lzbzg2MDEoVGltZUluTWlsbGlzIG1zKSB7CisgIHN0cnVjdCB0bSB0aW1lX3N0
cnVjdDsKKyAgaWYgKCFQb3J0YWJsZUxvY2FsdGltZShzdGF0aWNfY2FzdDx0aW1lX3Q+KG1zIC8g
MTAwMCksICZ0aW1lX3N0cnVjdCkpCisgICAgcmV0dXJuICIiOworICAvLyBZWVlZLU1NLUREVGho
Om1tOnNzCisgIHJldHVybiBTdHJlYW1hYmxlVG9TdHJpbmcodGltZV9zdHJ1Y3QudG1feWVhciAr
IDE5MDApICsgIi0iICsKKyAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0
LnRtX21vbiArIDEpICsgIi0iICsKKyAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVf
c3RydWN0LnRtX21kYXkpICsgIlQiICsKKyAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRp
bWVfc3RydWN0LnRtX2hvdXIpICsgIjoiICsKKyAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgy
KHRpbWVfc3RydWN0LnRtX21pbikgKyAiOiIgKworICAgICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0
aDIodGltZV9zdHJ1Y3QudG1fc2VjKTsKK30KKwogLy8gU3RyZWFtcyBhbiBYTUwgQ0RBVEEgc2Vj
dGlvbiwgZXNjYXBpbmcgaW52YWxpZCBDREFUQSBzZXF1ZW5jZXMgYXMgbmVlZGVkLgogdm9pZCBY
bWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dFhtbENEYXRhU2VjdGlvbig6OnN0ZDo6b3N0
cmVhbSogc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhKSB7CkBAIC0zMjA2LDM1ICszNjA0LDYzIEBAIHZv
aWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPdXRwdXRYbWxDRGF0YVNlY3Rpb24oOjpzdGQ6
Om9zdHJlYW0qIHN0cmVhbSwKICAgKnN0cmVhbSA8PCAiXV0+IjsKIH0KIAordm9pZCBYbWxVbml0
VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dFhtbEF0dHJpYnV0ZSgKKyAgICBzdGQ6Om9zdHJlYW0q
IHN0cmVhbSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZWxlbWVudF9uYW1lLAorICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBuYW1lLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkgeworICBj
b25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGFsbG93ZWRfbmFtZXMgPQorICAgICAgR2V0
UmVzZXJ2ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudChlbGVtZW50X25hbWUpOworCisgIEdURVNUX0NI
RUNLXyhzdGQ6OmZpbmQoYWxsb3dlZF9uYW1lcy5iZWdpbigpLCBhbGxvd2VkX25hbWVzLmVuZCgp
LCBuYW1lKSAhPQorICAgICAgICAgICAgICAgICAgIGFsbG93ZWRfbmFtZXMuZW5kKCkpCisgICAg
ICA8PCAiQXR0cmlidXRlICIgPDwgbmFtZSA8PCAiIGlzIG5vdCBhbGxvd2VkIGZvciBlbGVtZW50
IDwiIDw8IGVsZW1lbnRfbmFtZQorICAgICAgPDwgIj4uIjsKKworICAqc3RyZWFtIDw8ICIgIiA8
PCBuYW1lIDw8ICI9XCIiIDw8IEVzY2FwZVhtbEF0dHJpYnV0ZSh2YWx1ZSkgPDwgIlwiIjsKK30K
KwogLy8gUHJpbnRzIGFuIFhNTCByZXByZXNlbnRhdGlvbiBvZiBhIFRlc3RJbmZvIG9iamVjdC4K
IC8vIFRPRE8od2FuKTogVGhlcmUgaXMgYWxzbyB2YWx1ZSBpbiBwcmludGluZyBwcm9wZXJ0aWVz
IHdpdGggdGhlIHBsYWluIHByaW50ZXIuCiB2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6
T3V0cHV0WG1sVGVzdEluZm8oOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2Vf
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CiAgIGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCA9
ICp0ZXN0X2luZm8ucmVzdWx0KCk7Ci0gICpzdHJlYW0gPDwgIiAgICA8dGVzdGNhc2UgbmFtZT1c
IiIKLSAgICAgICAgICA8PCBFc2NhcGVYbWxBdHRyaWJ1dGUodGVzdF9pbmZvLm5hbWUoKSkuY19z
dHIoKQotICAgICAgICAgIDw8ICJcIiBzdGF0dXM9XCIiCi0gICAgICAgICAgPDwgKHRlc3RfaW5m
by5zaG91bGRfcnVuKCkgPyAicnVuIiA6ICJub3RydW4iKQotICAgICAgICAgIDw8ICJcIiB0aW1l
PVwiIgotICAgICAgICAgIDw8IEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyhyZXN1bHQuZWxh
cHNlZF90aW1lKCkpCi0gICAgICAgICAgPDwgIlwiIGNsYXNzbmFtZT1cIiIgPDwgRXNjYXBlWG1s
QXR0cmlidXRlKHRlc3RfY2FzZV9uYW1lKS5jX3N0cigpCi0gICAgICAgICAgPDwgIlwiIiA8PCBU
ZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRlcyhyZXN1bHQpLmNfc3RyKCk7CisgIGNvbnN0IHN0
ZDo6c3RyaW5nIGtUZXN0Y2FzZSA9ICJ0ZXN0Y2FzZSI7CisKKyAgKnN0cmVhbSA8PCAiICAgIDx0
ZXN0Y2FzZSI7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgIm5hbWUi
LCB0ZXN0X2luZm8ubmFtZSgpKTsKKworICBpZiAodGVzdF9pbmZvLnZhbHVlX3BhcmFtKCkgIT0g
TlVMTCkgeworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgInZhbHVl
X3BhcmFtIiwKKyAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9pbmZvLnZhbHVlX3BhcmFtKCkp
OworICB9CisgIGlmICh0ZXN0X2luZm8udHlwZV9wYXJhbSgpICE9IE5VTEwpIHsKKyAgICBPdXRw
dXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJ0eXBlX3BhcmFtIiwgdGVzdF9pbmZv
LnR5cGVfcGFyYW0oKSk7CisgIH0KKworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVz
dGNhc2UsICJzdGF0dXMiLAorICAgICAgICAgICAgICAgICAgICAgdGVzdF9pbmZvLnNob3VsZF9y
dW4oKSA/ICJydW4iIDogIm5vdHJ1biIpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBr
VGVzdGNhc2UsICJ0aW1lIiwKKyAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxp
c0FzU2Vjb25kcyhyZXN1bHQuZWxhcHNlZF90aW1lKCkpKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRl
KHN0cmVhbSwga1Rlc3RjYXNlLCAiY2xhc3NuYW1lIiwgdGVzdF9jYXNlX25hbWUpOworICAqc3Ry
ZWFtIDw8IFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKHJlc3VsdCk7CiAKICAgaW50IGZh
aWx1cmVzID0gMDsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHQudG90YWxfcGFydF9jb3Vu
dCgpOyArK2kpIHsKICAgICBjb25zdCBUZXN0UGFydFJlc3VsdCYgcGFydCA9IHJlc3VsdC5HZXRU
ZXN0UGFydFJlc3VsdChpKTsKICAgICBpZiAocGFydC5mYWlsZWQoKSkgewotICAgICAgaWYgKCsr
ZmFpbHVyZXMgPT0gMSkKKyAgICAgIGlmICgrK2ZhaWx1cmVzID09IDEpIHsKICAgICAgICAgKnN0
cmVhbSA8PCAiPlxuIjsKKyAgICAgIH0KKyAgICAgIGNvbnN0IHN0cmluZyBsb2NhdGlvbiA9IGlu
dGVybmFsOjpGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uKAorICAgICAgICAg
IHBhcnQuZmlsZV9uYW1lKCksIHBhcnQubGluZV9udW1iZXIoKSk7CisgICAgICBjb25zdCBzdHJp
bmcgc3VtbWFyeSA9IGxvY2F0aW9uICsgIlxuIiArIHBhcnQuc3VtbWFyeSgpOwogICAgICAgKnN0
cmVhbSA8PCAiICAgICAgPGZhaWx1cmUgbWVzc2FnZT1cIiIKLSAgICAgICAgICAgICAgPDwgRXNj
YXBlWG1sQXR0cmlidXRlKHBhcnQuc3VtbWFyeSgpKS5jX3N0cigpCisgICAgICAgICAgICAgIDw8
IEVzY2FwZVhtbEF0dHJpYnV0ZShzdW1tYXJ5LmNfc3RyKCkpCiAgICAgICAgICAgICAgIDw8ICJc
IiB0eXBlPVwiXCI+IjsKLSAgICAgIGNvbnN0IFN0cmluZyBtZXNzYWdlID0gUmVtb3ZlSW52YWxp
ZFhtbENoYXJhY3RlcnMoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICAgIiVzOiVkXG4lcyIsCi0g
ICAgICAgICAgcGFydC5maWxlX25hbWUoKSwgcGFydC5saW5lX251bWJlcigpLAotICAgICAgICAg
IHBhcnQubWVzc2FnZSgpKS5jX3N0cigpKTsKLSAgICAgIE91dHB1dFhtbENEYXRhU2VjdGlvbihz
dHJlYW0sIG1lc3NhZ2UuY19zdHIoKSk7CisgICAgICBjb25zdCBzdHJpbmcgZGV0YWlsID0gbG9j
YXRpb24gKyAiXG4iICsgcGFydC5tZXNzYWdlKCk7CisgICAgICBPdXRwdXRYbWxDRGF0YVNlY3Rp
b24oc3RyZWFtLCBSZW1vdmVJbnZhbGlkWG1sQ2hhcmFjdGVycyhkZXRhaWwpLmNfc3RyKCkpOwog
ICAgICAgKnN0cmVhbSA8PCAiPC9mYWlsdXJlPlxuIjsKICAgICB9CiAgIH0KQEAgLTMyNDYsNDkg
KzM2NzIsNzMgQEAgdm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dFhtbFRlc3RJ
bmZvKDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCiB9CiAKIC8vIFByaW50cyBhbiBYTUwgcmVwcmVz
ZW50YXRpb24gb2YgYSBUZXN0Q2FzZSBvYmplY3QKLXZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmlu
dGVyOjpQcmludFhtbFRlc3RDYXNlKEZJTEUqIG91dCwKK3ZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQ
cmludGVyOjpQcmludFhtbFRlc3RDYXNlKHN0ZDo6b3N0cmVhbSogc3RyZWFtLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdENhc2UmIHRl
c3RfY2FzZSkgewotICBmcHJpbnRmKG91dCwKLSAgICAgICAgICAiICA8dGVzdHN1aXRlIG5hbWU9
XCIlc1wiIHRlc3RzPVwiJWRcIiBmYWlsdXJlcz1cIiVkXCIgIgotICAgICAgICAgICJkaXNhYmxl
ZD1cIiVkXCIgIiwKLSAgICAgICAgICBFc2NhcGVYbWxBdHRyaWJ1dGUodGVzdF9jYXNlLm5hbWUo
KSkuY19zdHIoKSwKLSAgICAgICAgICB0ZXN0X2Nhc2UudG90YWxfdGVzdF9jb3VudCgpLAotICAg
ICAgICAgIHRlc3RfY2FzZS5mYWlsZWRfdGVzdF9jb3VudCgpLAotICAgICAgICAgIHRlc3RfY2Fz
ZS5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOwotICBmcHJpbnRmKG91dCwKLSAgICAgICAgICAiZXJy
b3JzPVwiMFwiIHRpbWU9XCIlc1wiPlxuIiwKLSAgICAgICAgICBGb3JtYXRUaW1lSW5NaWxsaXNB
c1NlY29uZHModGVzdF9jYXNlLmVsYXBzZWRfdGltZSgpKS5jX3N0cigpKTsKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcga1Rlc3RzdWl0ZSA9ICJ0ZXN0c3VpdGUiOworICAqc3RyZWFtIDw8ICIgIDwiIDw8
IGtUZXN0c3VpdGU7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUsICJu
YW1lIiwgdGVzdF9jYXNlLm5hbWUoKSk7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtU
ZXN0c3VpdGUsICJ0ZXN0cyIsCisgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJp
bmcodGVzdF9jYXNlLnJlcG9ydGFibGVfdGVzdF9jb3VudCgpKSk7CisgIE91dHB1dFhtbEF0dHJp
YnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUsICJmYWlsdXJlcyIsCisgICAgICAgICAgICAgICAgICAg
ICBTdHJlYW1hYmxlVG9TdHJpbmcodGVzdF9jYXNlLmZhaWxlZF90ZXN0X2NvdW50KCkpKTsKKyAg
T3V0cHV0WG1sQXR0cmlidXRlKAorICAgICAgc3RyZWFtLCBrVGVzdHN1aXRlLCAiZGlzYWJsZWQi
LAorICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHRlc3RfY2FzZS5yZXBvcnRhYmxlX2Rpc2FibGVk
X3Rlc3RfY291bnQoKSkpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRl
LCAiZXJyb3JzIiwgIjAiKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0
ZSwgInRpbWUiLAorICAgICAgICAgICAgICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNv
bmRzKHRlc3RfY2FzZS5lbGFwc2VkX3RpbWUoKSkpOworICAqc3RyZWFtIDw8IFRlc3RQcm9wZXJ0
aWVzQXNYbWxBdHRyaWJ1dGVzKHRlc3RfY2FzZS5hZF9ob2NfdGVzdF9yZXN1bHQoKSkKKyAgICAg
ICAgICA8PCAiPlxuIjsKKwogICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RfY2FzZS50b3RhbF90
ZXN0X2NvdW50KCk7ICsraSkgewotICAgIFN0clN0cmVhbSBzdHJlYW07Ci0gICAgT3V0cHV0WG1s
VGVzdEluZm8oJnN0cmVhbSwgdGVzdF9jYXNlLm5hbWUoKSwgKnRlc3RfY2FzZS5HZXRUZXN0SW5m
byhpKSk7Ci0gICAgZnByaW50ZihvdXQsICIlcyIsIFN0clN0cmVhbVRvU3RyaW5nKCZzdHJlYW0p
LmNfc3RyKCkpOworICAgIGlmICh0ZXN0X2Nhc2UuR2V0VGVzdEluZm8oaSktPmlzX3JlcG9ydGFi
bGUoKSkKKyAgICAgIE91dHB1dFhtbFRlc3RJbmZvKHN0cmVhbSwgdGVzdF9jYXNlLm5hbWUoKSwg
KnRlc3RfY2FzZS5HZXRUZXN0SW5mbyhpKSk7CiAgIH0KLSAgZnByaW50ZihvdXQsICIgIDwvdGVz
dHN1aXRlPlxuIik7CisgICpzdHJlYW0gPDwgIiAgPC8iIDw8IGtUZXN0c3VpdGUgPDwgIj5cbiI7
CiB9CiAKIC8vIFByaW50cyBhbiBYTUwgc3VtbWFyeSBvZiB1bml0X3Rlc3QgdG8gb3V0cHV0IHN0
cmVhbSBvdXQuCi12b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRYbWxVbml0VGVz
dChGSUxFKiBvdXQsCit2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRYbWxVbml0
VGVzdChzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpIHsKLSAgZnByaW50
ZihvdXQsICI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz5cbiIpOwot
ICBmcHJpbnRmKG91dCwKLSAgICAgICAgICAiPHRlc3RzdWl0ZXMgdGVzdHM9XCIlZFwiIGZhaWx1
cmVzPVwiJWRcIiBkaXNhYmxlZD1cIiVkXCIgIgotICAgICAgICAgICJlcnJvcnM9XCIwXCIgdGlt
ZT1cIiVzXCIgIiwKLSAgICAgICAgICB1bml0X3Rlc3QudG90YWxfdGVzdF9jb3VudCgpLAotICAg
ICAgICAgIHVuaXRfdGVzdC5mYWlsZWRfdGVzdF9jb3VudCgpLAotICAgICAgICAgIHVuaXRfdGVz
dC5kaXNhYmxlZF90ZXN0X2NvdW50KCksCi0gICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNT
ZWNvbmRzKHVuaXRfdGVzdC5lbGFwc2VkX3RpbWUoKSkuY19zdHIoKSk7CisgIGNvbnN0IHN0ZDo6
c3RyaW5nIGtUZXN0c3VpdGVzID0gInRlc3RzdWl0ZXMiOworCisgICpzdHJlYW0gPDwgIjw/eG1s
IHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCI/PlxuIjsKKyAgKnN0cmVhbSA8PCAi
PCIgPDwga1Rlc3RzdWl0ZXM7CisKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3Rz
dWl0ZXMsICJ0ZXN0cyIsCisgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmco
dW5pdF90ZXN0LnJlcG9ydGFibGVfdGVzdF9jb3VudCgpKSk7CisgIE91dHB1dFhtbEF0dHJpYnV0
ZShzdHJlYW0sIGtUZXN0c3VpdGVzLCAiZmFpbHVyZXMiLAorICAgICAgICAgICAgICAgICAgICAg
U3RyZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5mYWlsZWRfdGVzdF9jb3VudCgpKSk7CisgIE91
dHB1dFhtbEF0dHJpYnV0ZSgKKyAgICAgIHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJkaXNhYmxlZCIs
CisgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodW5pdF90ZXN0LnJlcG9ydGFibGVfZGlzYWJsZWRf
dGVzdF9jb3VudCgpKSk7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGVz
LCAiZXJyb3JzIiwgIjAiKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKAorICAgICAgc3RyZWFtLCBr
VGVzdHN1aXRlcywgInRpbWVzdGFtcCIsCisgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0Fz
SXNvODYwMSh1bml0X3Rlc3Quc3RhcnRfdGltZXN0YW1wKCkpKTsKKyAgT3V0cHV0WG1sQXR0cmli
dXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0aW1lIiwKKyAgICAgICAgICAgICAgICAgICAgIEZv
cm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyh1bml0X3Rlc3QuZWxhcHNlZF90aW1lKCkpKTsKKwog
ICBpZiAoR1RFU1RfRkxBRyhzaHVmZmxlKSkgewotICAgIGZwcmludGYob3V0LCAicmFuZG9tX3Nl
ZWQ9XCIlZFwiICIsIHVuaXRfdGVzdC5yYW5kb21fc2VlZCgpKTsKKyAgICBPdXRwdXRYbWxBdHRy
aWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlcywgInJhbmRvbV9zZWVkIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5yYW5kb21fc2VlZCgpKSk7Cisg
IH0KKworICAqc3RyZWFtIDw8IFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKHVuaXRfdGVz
dC5hZF9ob2NfdGVzdF9yZXN1bHQoKSk7CisKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwg
a1Rlc3RzdWl0ZXMsICJuYW1lIiwgIkFsbFRlc3RzIik7CisgICpzdHJlYW0gPDwgIj5cbiI7CisK
KyAgZm9yIChpbnQgaSA9IDA7IGkgPCB1bml0X3Rlc3QudG90YWxfdGVzdF9jYXNlX2NvdW50KCk7
ICsraSkgeworICAgIGlmICh1bml0X3Rlc3QuR2V0VGVzdENhc2UoaSktPnJlcG9ydGFibGVfdGVz
dF9jb3VudCgpID4gMCkKKyAgICAgIFByaW50WG1sVGVzdENhc2Uoc3RyZWFtLCAqdW5pdF90ZXN0
LkdldFRlc3RDYXNlKGkpKTsKICAgfQotICBmcHJpbnRmKG91dCwgIm5hbWU9XCJBbGxUZXN0c1wi
PlxuIik7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgdW5pdF90ZXN0LnRvdGFsX3Rlc3RfY2FzZV9j
b3VudCgpOyArK2kpCi0gICAgUHJpbnRYbWxUZXN0Q2FzZShvdXQsICp1bml0X3Rlc3QuR2V0VGVz
dENhc2UoaSkpOwotICBmcHJpbnRmKG91dCwgIjwvdGVzdHN1aXRlcz5cbiIpOworICAqc3RyZWFt
IDw8ICI8LyIgPDwga1Rlc3RzdWl0ZXMgPDwgIj5cbiI7CiB9CiAKIC8vIFByb2R1Y2VzIGEgc3Ry
aW5nIHJlcHJlc2VudGluZyB0aGUgdGVzdCBwcm9wZXJ0aWVzIGluIGEgcmVzdWx0IGFzIHNwYWNl
CiAvLyBkZWxpbWl0ZWQgWE1MIGF0dHJpYnV0ZXMgYmFzZWQgb24gdGhlIHByb3BlcnR5IGtleT0i
dmFsdWUiIHBhaXJzLgotU3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6VGVzdFByb3Bl
cnRpZXNBc1htbEF0dHJpYnV0ZXMoCitzdGQ6OnN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50
ZXI6OlRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKAogICAgIGNvbnN0IFRlc3RSZXN1bHQm
IHJlc3VsdCkgewogICBNZXNzYWdlIGF0dHJpYnV0ZXM7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwg
cmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKTsgKytpKSB7CkBAIC0zMzAxLDEyICszNzUxLDgy
IEBAIFN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlRlc3RQcm9wZXJ0aWVzQXNYbWxB
dHRyaWJ1dGVzKAogCiAvLyBFbmQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyCiAKKyNpZiBHVEVT
VF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKKy8vIENoZWNrcyBpZiBzdHIgY29udGFpbnMgJz0nLCAn
JicsICclJyBvciAnXG4nIGNoYXJhY3RlcnMuIElmIHllcywKKy8vIHJlcGxhY2VzIHRoZW0gYnkg
IiV4eCIgd2hlcmUgeHggaXMgdGhlaXIgaGV4YWRlY2ltYWwgdmFsdWUuIEZvcgorLy8gZXhhbXBs
ZSwgcmVwbGFjZXMgIj0iIHdpdGggIiUzRCIuICBUaGlzIGFsZ29yaXRobSBpcyBPKHN0cmxlbihz
dHIpKQorLy8gaW4gYm90aCB0aW1lIGFuZCBzcGFjZSAtLSBpbXBvcnRhbnQgYXMgdGhlIGlucHV0
IHN0ciBtYXkgY29udGFpbiBhbgorLy8gYXJiaXRyYXJpbHkgbG9uZyB0ZXN0IGZhaWx1cmUgbWVz
c2FnZSBhbmQgc3RhY2sgdHJhY2UuCitzdHJpbmcgU3RyZWFtaW5nTGlzdGVuZXI6OlVybEVuY29k
ZShjb25zdCBjaGFyKiBzdHIpIHsKKyAgc3RyaW5nIHJlc3VsdDsKKyAgcmVzdWx0LnJlc2VydmUo
c3RybGVuKHN0cikgKyAxKTsKKyAgZm9yIChjaGFyIGNoID0gKnN0cjsgY2ggIT0gJ1wwJzsgY2gg
PSAqKytzdHIpIHsKKyAgICBzd2l0Y2ggKGNoKSB7CisgICAgICBjYXNlICclJzoKKyAgICAgIGNh
c2UgJz0nOgorICAgICAgY2FzZSAnJic6CisgICAgICBjYXNlICdcbic6CisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIiUiICsgU3RyaW5nOjpGb3JtYXRCeXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KGNoKSkpOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJlc3Vs
dC5wdXNoX2JhY2soY2gpOworICAgICAgICBicmVhazsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJl
c3VsdDsKK30KKwordm9pZCBTdHJlYW1pbmdMaXN0ZW5lcjo6U29ja2V0V3JpdGVyOjpNYWtlQ29u
bmVjdGlvbigpIHsKKyAgR1RFU1RfQ0hFQ0tfKHNvY2tmZF8gPT0gLTEpCisgICAgICA8PCAiTWFr
ZUNvbm5lY3Rpb24oKSBjYW4ndCBiZSBjYWxsZWQgd2hlbiB0aGVyZSBpcyBhbHJlYWR5IGEgY29u
bmVjdGlvbi4iOworCisgIGFkZHJpbmZvIGhpbnRzOworICBtZW1zZXQoJmhpbnRzLCAwLCBzaXpl
b2YoaGludHMpKTsKKyAgaGludHMuYWlfZmFtaWx5ID0gQUZfVU5TUEVDOyAgICAvLyBUbyBhbGxv
dyBib3RoIElQdjQgYW5kIElQdjYgYWRkcmVzc2VzLgorICBoaW50cy5haV9zb2NrdHlwZSA9IFNP
Q0tfU1RSRUFNOworICBhZGRyaW5mbyogc2VydmluZm8gPSBOVUxMOworCisgIC8vIFVzZSB0aGUg
Z2V0YWRkcmluZm8oKSB0byBnZXQgYSBsaW5rZWQgbGlzdCBvZiBJUCBhZGRyZXNzZXMgZm9yCisg
IC8vIHRoZSBnaXZlbiBob3N0IG5hbWUuCisgIGNvbnN0IGludCBlcnJvcl9udW0gPSBnZXRhZGRy
aW5mbygKKyAgICAgIGhvc3RfbmFtZV8uY19zdHIoKSwgcG9ydF9udW1fLmNfc3RyKCksICZoaW50
cywgJnNlcnZpbmZvKTsKKyAgaWYgKGVycm9yX251bSAhPSAwKSB7CisgICAgR1RFU1RfTE9HXyhX
QVJOSU5HKSA8PCAic3RyZWFtX3Jlc3VsdF90bzogZ2V0YWRkcmluZm8oKSBmYWlsZWQ6ICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIDw8IGdhaV9zdHJlcnJvcihlcnJvcl9udW0pOworICB9CisK
KyAgLy8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgcmVzdWx0cyBhbmQgY29ubmVjdCB0byB0aGUgZmly
c3Qgd2UgY2FuLgorICBmb3IgKGFkZHJpbmZvKiBjdXJfYWRkciA9IHNlcnZpbmZvOyBzb2NrZmRf
ID09IC0xICYmIGN1cl9hZGRyICE9IE5VTEw7CisgICAgICAgY3VyX2FkZHIgPSBjdXJfYWRkci0+
YWlfbmV4dCkgeworICAgIHNvY2tmZF8gPSBzb2NrZXQoCisgICAgICAgIGN1cl9hZGRyLT5haV9m
YW1pbHksIGN1cl9hZGRyLT5haV9zb2NrdHlwZSwgY3VyX2FkZHItPmFpX3Byb3RvY29sKTsKKyAg
ICBpZiAoc29ja2ZkXyAhPSAtMSkgeworICAgICAgLy8gQ29ubmVjdCB0aGUgY2xpZW50IHNvY2tl
dCB0byB0aGUgc2VydmVyIHNvY2tldC4KKyAgICAgIGlmIChjb25uZWN0KHNvY2tmZF8sIGN1cl9h
ZGRyLT5haV9hZGRyLCBjdXJfYWRkci0+YWlfYWRkcmxlbikgPT0gLTEpIHsKKyAgICAgICAgY2xv
c2Uoc29ja2ZkXyk7CisgICAgICAgIHNvY2tmZF8gPSAtMTsKKyAgICAgIH0KKyAgICB9CisgIH0K
KworICBmcmVlYWRkcmluZm8oc2VydmluZm8pOyAgLy8gYWxsIGRvbmUgd2l0aCB0aGlzIHN0cnVj
dHVyZQorCisgIGlmIChzb2NrZmRfID09IC0xKSB7CisgICAgR1RFU1RfTE9HXyhXQVJOSU5HKSA8
PCAic3RyZWFtX3Jlc3VsdF90bzogZmFpbGVkIHRvIGNvbm5lY3QgdG8gIgorICAgICAgICAgICAg
ICAgICAgICAgICAgPDwgaG9zdF9uYW1lXyA8PCAiOiIgPDwgcG9ydF9udW1fOworICB9Cit9CisK
Ky8vIEVuZCBvZiBjbGFzcyBTdHJlYW1pbmcgTGlzdGVuZXIKKyNlbmRpZiAgLy8gR1RFU1RfQ0FO
X1NUUkVBTV9SRVNVTFRTX18KKwogLy8gQ2xhc3MgU2NvcGVkVHJhY2UKIAogLy8gUHVzaGVzIHRo
ZSBnaXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlvbiBhbmQgbWVzc2FnZSBvbnRvIGEgcGVyLXRocmVh
ZAogLy8gdHJhY2Ugc3RhY2sgbWFpbnRhaW5lZCBieSBHb29nbGUgVGVzdC4KLS8vIEwgPCBVbml0
VGVzdDo6bXV0ZXhfCi1TY29wZWRUcmFjZTo6U2NvcGVkVHJhY2UoY29uc3QgY2hhciogZmlsZSwg
aW50IGxpbmUsIGNvbnN0IE1lc3NhZ2UmIG1lc3NhZ2UpIHsKK1Njb3BlZFRyYWNlOjpTY29wZWRU
cmFjZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgTWVzc2FnZSYgbWVzc2FnZSkK
KyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXygmVW5pdFRlc3Q6Om11dGV4XykgewogICBUcmFjZUlu
Zm8gdHJhY2U7CiAgIHRyYWNlLmZpbGUgPSBmaWxlOwogICB0cmFjZS5saW5lID0gbGluZTsKQEAg
LTMzMTYsMzQgKzM4MzYsNTIgQEAgU2NvcGVkVHJhY2U6OlNjb3BlZFRyYWNlKGNvbnN0IGNoYXIq
IGZpbGUsIGludCBsaW5lLCBjb25zdCBNZXNzYWdlJiBtZXNzYWdlKSB7CiB9CiAKIC8vIFBvcHMg
dGhlIGluZm8gcHVzaGVkIGJ5IHRoZSBjJ3Rvci4KLS8vIEwgPCBVbml0VGVzdDo6bXV0ZXhfCi1T
Y29wZWRUcmFjZTo6flNjb3BlZFRyYWNlKCkgeworU2NvcGVkVHJhY2U6On5TY29wZWRUcmFjZSgp
CisgICAgR1RFU1RfTE9DS19FWENMVURFRF8oJlVuaXRUZXN0OjptdXRleF8pIHsKICAgVW5pdFRl
c3Q6OkdldEluc3RhbmNlKCktPlBvcEdUZXN0VHJhY2UoKTsKIH0KIAogCiAvLyBjbGFzcyBPc1N0
YWNrVHJhY2VHZXR0ZXIKIAotLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBh
cyBhIFN0cmluZy4gIFBhcmFtZXRlcnM6Ci0vLwotLy8gICBtYXhfZGVwdGggIC0gdGhlIG1heGlt
dW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZAotLy8gICAgICAgICAgICAg
ICAgaW4gdGhlIHRyYWNlLgotLy8gICBza2lwX2NvdW50IC0gdGhlIG51bWJlciBvZiB0b3AgZnJh
bWVzIHRvIGJlIHNraXBwZWQ7IGRvZXNuJ3QgY291bnQKLS8vICAgICAgICAgICAgICAgIGFnYWlu
c3QgbWF4X2RlcHRoLgotLy8KLS8vIEwgPCBtdXRleF8KLS8vIFdlIHVzZSAiTCA8IG11dGV4XyIg
dG8gZGVub3RlIHRoYXQgdGhlIGZ1bmN0aW9uIG1heSBhY3F1aXJlIG11dGV4Xy4KLVN0cmluZyBP
c1N0YWNrVHJhY2VHZXR0ZXI6OkN1cnJlbnRTdGFja1RyYWNlKGludCwgaW50KSB7Ci0gIHJldHVy
biBTdHJpbmcoIiIpOwotfQorY29uc3QgY2hhciogY29uc3QgT3NTdGFja1RyYWNlR2V0dGVySW50
ZXJmYWNlOjprRWxpZGVkRnJhbWVzTWFya2VyID0KKyAgICAiLi4uICIgR1RFU1RfTkFNRV8gIiBp
bnRlcm5hbCBmcmFtZXMgLi4uIjsKIAotLy8gTCA8IG11dGV4Xwotdm9pZCBPc1N0YWNrVHJhY2VH
ZXR0ZXI6OlVwb25MZWF2aW5nR1Rlc3QoKSB7CitzdHJpbmcgT3NTdGFja1RyYWNlR2V0dGVyOjpD
dXJyZW50U3RhY2tUcmFjZShpbnQgLyptYXhfZGVwdGgqLywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKnNraXBfY291bnQqLykgeworICByZXR1cm4g
IiI7CiB9CiAKLWNvbnN0IGNoYXIqIGNvbnN0Ci1Pc1N0YWNrVHJhY2VHZXR0ZXI6OmtFbGlkZWRG
cmFtZXNNYXJrZXIgPQotICAgICIuLi4gIiBHVEVTVF9OQU1FXyAiIGludGVybmFsIGZyYW1lcyAu
Li4iOwordm9pZCBPc1N0YWNrVHJhY2VHZXR0ZXI6OlVwb25MZWF2aW5nR1Rlc3QoKSB7fQorCisv
LyBBIGhlbHBlciBjbGFzcyB0aGF0IGNyZWF0ZXMgdGhlIHByZW1hdHVyZS1leGl0IGZpbGUgaW4g
aXRzCisvLyBjb25zdHJ1Y3RvciBhbmQgZGVsZXRlcyB0aGUgZmlsZSBpbiBpdHMgZGVzdHJ1Y3Rv
ci4KK2NsYXNzIFNjb3BlZFByZW1hdHVyZUV4aXRGaWxlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0
IFNjb3BlZFByZW1hdHVyZUV4aXRGaWxlKGNvbnN0IGNoYXIqIHByZW1hdHVyZV9leGl0X2ZpbGVw
YXRoKQorICAgICAgOiBwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8ocHJlbWF0dXJlX2V4aXRfZmls
ZXBhdGgpIHsKKyAgICAvLyBJZiBhIHBhdGggdG8gdGhlIHByZW1hdHVyZS1leGl0IGZpbGUgaXMg
c3BlY2lmaWVkLi4uCisgICAgaWYgKHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoICE9IE5VTEwgJiYg
KnByZW1hdHVyZV9leGl0X2ZpbGVwYXRoICE9ICdcMCcpIHsKKyAgICAgIC8vIGNyZWF0ZSB0aGUg
ZmlsZSB3aXRoIGEgc2luZ2xlICIwIiBjaGFyYWN0ZXIgaW4gaXQuICBJL08KKyAgICAgIC8vIGVy
cm9ycyBhcmUgaWdub3JlZCBhcyB0aGVyZSdzIG5vdGhpbmcgYmV0dGVyIHdlIGNhbiBkbyBhbmQg
d2UKKyAgICAgIC8vIGRvbid0IHdhbnQgdG8gZmFpbCB0aGUgdGVzdCBiZWNhdXNlIG9mIHRoaXMu
CisgICAgICBGSUxFKiBwZmlsZSA9IHBvc2l4OjpGT3BlbihwcmVtYXR1cmVfZXhpdF9maWxlcGF0
aCwgInciKTsKKyAgICAgIGZ3cml0ZSgiMCIsIDEsIDEsIHBmaWxlKTsKKyAgICAgIGZjbG9zZShw
ZmlsZSk7CisgICAgfQorICB9CisKKyAgflNjb3BlZFByZW1hdHVyZUV4aXRGaWxlKCkgeworICAg
IGlmIChwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8gIT0gTlVMTCAmJiAqcHJlbWF0dXJlX2V4aXRf
ZmlsZXBhdGhfICE9ICdcMCcpIHsKKyAgICAgIHJlbW92ZShwcmVtYXR1cmVfZXhpdF9maWxlcGF0
aF8pOworICAgIH0KKyAgfQorCisgcHJpdmF0ZToKKyAgY29uc3QgY2hhciogY29uc3QgcHJlbWF0
dXJlX2V4aXRfZmlsZXBhdGhfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8o
U2NvcGVkUHJlbWF0dXJlRXhpdEZpbGUpOworfTsKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
CiAKQEAgLTM0MzEsNyArMzk2OSw3IEBAIHZvaWQgVGVzdEV2ZW50TGlzdGVuZXJzOjpTdXBwcmVz
c0V2ZW50Rm9yd2FyZGluZygpIHsKIC8vIFdlIGRvbid0IHByb3RlY3QgdGhpcyB1bmRlciBtdXRl
eF8gYXMgYSB1c2VyIGlzIG5vdCBzdXBwb3NlZCB0bwogLy8gY2FsbCB0aGlzIGJlZm9yZSBtYWlu
KCkgc3RhcnRzLCBmcm9tIHdoaWNoIHBvaW50IG9uIHRoZSByZXR1cm4KIC8vIHZhbHVlIHdpbGwg
bmV2ZXIgY2hhbmdlLgotVW5pdFRlc3QgKiBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKSB7CitVbml0
VGVzdCogVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkgewogICAvLyBXaGVuIGNvbXBpbGVkIHdpdGgg
TVNWQyA3LjEgaW4gb3B0aW1pemVkIG1vZGUsIGRlc3Ryb3lpbmcgdGhlCiAgIC8vIFVuaXRUZXN0
IG9iamVjdCB1cG9uIGV4aXRpbmcgdGhlIHByb2dyYW0gbWVzc2VzIHVwIHRoZSBleGl0IGNvZGUs
CiAgIC8vIGNhdXNpbmcgc3VjY2Vzc2Z1bCB0ZXN0cyB0byBhcHBlYXIgZmFpbGVkLiAgV2UgaGF2
ZSB0byB1c2UgYQpAQCAtMzQ4MSwxNyArNDAxOSwzMyBAQCBpbnQgVW5pdFRlc3Q6OnN1Y2Nlc3Nm
dWxfdGVzdF9jb3VudCgpIGNvbnN0IHsKIC8vIEdldHMgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVz
dHMuCiBpbnQgVW5pdFRlc3Q6OmZhaWxlZF90ZXN0X2NvdW50KCkgY29uc3QgeyByZXR1cm4gaW1w
bCgpLT5mYWlsZWRfdGVzdF9jb3VudCgpOyB9CiAKKy8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNh
YmxlZCB0ZXN0cyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhNTCByZXBvcnQuCitpbnQg
VW5pdFRlc3Q6OnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKKyAgcmV0
dXJuIGltcGwoKS0+cmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCk7Cit9CisKIC8vIEdl
dHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cy4KIGludCBVbml0VGVzdDo6ZGlzYWJsZWRf
dGVzdF9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJuIGltcGwoKS0+ZGlzYWJsZWRfdGVzdF9jb3Vu
dCgpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0
aGUgWE1MIHJlcG9ydC4KK2ludCBVbml0VGVzdDo6cmVwb3J0YWJsZV90ZXN0X2NvdW50KCkgY29u
c3QgeworICByZXR1cm4gaW1wbCgpLT5yZXBvcnRhYmxlX3Rlc3RfY291bnQoKTsKK30KKwogLy8g
R2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0cy4KIGludCBVbml0VGVzdDo6dG90YWxfdGVzdF9j
b3VudCgpIGNvbnN0IHsgcmV0dXJuIGltcGwoKS0+dG90YWxfdGVzdF9jb3VudCgpOyB9CiAKIC8v
IEdldHMgdGhlIG51bWJlciBvZiB0ZXN0cyB0aGF0IHNob3VsZCBydW4uCiBpbnQgVW5pdFRlc3Q6
OnRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3QgeyByZXR1cm4gaW1wbCgpLT50ZXN0X3RvX3J1bl9j
b3VudCgpOyB9CiAKKy8vIEdldHMgdGhlIHRpbWUgb2YgdGhlIHRlc3QgcHJvZ3JhbSBzdGFydCwg
aW4gbXMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlCisvLyBVTklYIGVwb2NoLgoraW50ZXJuYWw6OlRp
bWVJbk1pbGxpcyBVbml0VGVzdDo6c3RhcnRfdGltZXN0YW1wKCkgY29uc3QgeworICAgIHJldHVy
biBpbXBsKCktPnN0YXJ0X3RpbWVzdGFtcCgpOworfQorCiAvLyBHZXRzIHRoZSBlbGFwc2VkIHRp
bWUsIGluIG1pbGxpc2Vjb25kcy4KIGludGVybmFsOjpUaW1lSW5NaWxsaXMgVW5pdFRlc3Q6OmVs
YXBzZWRfdGltZSgpIGNvbnN0IHsKICAgcmV0dXJuIGltcGwoKS0+ZWxhcHNlZF90aW1lKCk7CkBA
IC0zNTEwLDYgKzQwNjQsMTIgQEAgY29uc3QgVGVzdENhc2UqIFVuaXRUZXN0OjpHZXRUZXN0Q2Fz
ZShpbnQgaSkgY29uc3QgewogICByZXR1cm4gaW1wbCgpLT5HZXRUZXN0Q2FzZShpKTsKIH0KIAor
Ly8gUmV0dXJucyB0aGUgVGVzdFJlc3VsdCBjb250YWluaW5nIGluZm9ybWF0aW9uIG9uIHRlc3Qg
ZmFpbHVyZXMgYW5kCisvLyBwcm9wZXJ0aWVzIGxvZ2dlZCBvdXRzaWRlIG9mIGluZGl2aWR1YWwg
dGVzdCBjYXNlcy4KK2NvbnN0IFRlc3RSZXN1bHQmIFVuaXRUZXN0OjphZF9ob2NfdGVzdF9yZXN1
bHQoKSBjb25zdCB7CisgIHJldHVybiAqaW1wbCgpLT5hZF9ob2NfdGVzdF9yZXN1bHQoKTsKK30K
KwogLy8gR2V0cyB0aGUgaS10aCB0ZXN0IGNhc2UgYW1vbmcgYWxsIHRoZSB0ZXN0IGNhc2VzLiBp
IGNhbiByYW5nZSBmcm9tIDAgdG8KIC8vIHRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpIC0gMS4gSWYg
aSBpcyBub3QgaW4gdGhhdCByYW5nZSwgcmV0dXJucyBOVUxMLgogVGVzdENhc2UqIFVuaXRUZXN0
OjpHZXRNdXRhYmxlVGVzdENhc2UoaW50IGkpIHsKQEAgLTM1NDEsMjkgKzQxMDEsMTYgQEAgRW52
aXJvbm1lbnQqIFVuaXRUZXN0OjpBZGRFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KSB7CiAg
IHJldHVybiBlbnY7CiB9CiAKLSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwotLy8gQSBmYWlsZWQg
R29vZ2xlIFRlc3QgYXNzZXJ0aW9uIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIG9mIHRoaXMgdHlw
ZQotLy8gd2hlbiBleGNlcHRpb25zIGFyZSBlbmFibGVkLiAgV2UgZGVyaXZlIGl0IGZyb20gc3Rk
OjpydW50aW1lX2Vycm9yLAotLy8gd2hpY2ggaXMgZm9yIGVycm9ycyBwcmVzdW1hYmx5IGRldGVj
dGFibGUgb25seSBhdCBydW4gdGltZS4gIFNpbmNlCi0vLyBzdGQ6OnJ1bnRpbWVfZXJyb3IgaW5o
ZXJpdHMgZnJvbSBzdGQ6OmV4Y2VwdGlvbiwgbWFueSB0ZXN0aW5nCi0vLyBmcmFtZXdvcmtzIGtu
b3cgaG93IHRvIGV4dHJhY3QgYW5kIHByaW50IHRoZSBtZXNzYWdlIGluc2lkZSBpdC4KLWNsYXNz
IEdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uIDogcHVibGljIDo6c3RkOjpydW50aW1lX2Vycm9y
IHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IEdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uKGNvbnN0
IFRlc3RQYXJ0UmVzdWx0JiBmYWlsdXJlKQotICAgICAgOiA6OnN0ZDo6cnVudGltZV9lcnJvcihQ
cmludFRlc3RQYXJ0UmVzdWx0VG9TdHJpbmcoZmFpbHVyZSkuY19zdHIoKSkge30KLX07Ci0jZW5k
aWYKLQogLy8gQWRkcyBhIFRlc3RQYXJ0UmVzdWx0IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQg
b2JqZWN0LiAgQWxsIEdvb2dsZSBUZXN0CiAvLyBhc3NlcnRpb24gbWFjcm9zIChlLmcuIEFTU0VS
VF9UUlVFLCBFWFBFQ1RfRVEsIGV0YykgZXZlbnR1YWxseSBjYWxsCiAvLyB0aGlzIHRvIHJlcG9y
dCB0aGVpciByZXN1bHRzLiAgVGhlIHVzZXIgY29kZSBzaG91bGQgdXNlIHRoZQogLy8gYXNzZXJ0
aW9uIG1hY3JvcyBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhpcyBkaXJlY3RseS4KLS8vIEwgPCBtdXRl
eF8KLXZvaWQgVW5pdFRlc3Q6OkFkZFRlc3RQYXJ0UmVzdWx0KFRlc3RQYXJ0UmVzdWx0OjpUeXBl
IHJlc3VsdF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogZmlsZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVf
bnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJuYWw6
OlN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGludGVybmFsOjpTdHJpbmcmIG9zX3N0YWNrX3RyYWNlKSB7Cit2b2lkIFVuaXRUZXN0OjpBZGRU
ZXN0UGFydFJlc3VsdCgKKyAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKKyAg
ICBjb25zdCBjaGFyKiBmaWxlX25hbWUsCisgICAgaW50IGxpbmVfbnVtYmVyLAorICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBtZXNzYWdlLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvc19zdGFja190
cmFjZSkgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7CiAgIE1lc3NhZ2UgbXNnOwogICBt
c2cgPDwgbWVzc2FnZTsKIApAQCAtMzU5NiwxNyArNDE0MywyMSBAQCB2b2lkIFVuaXRUZXN0OjpB
ZGRUZXN0UGFydFJlc3VsdChUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKICAgICAv
LyB3aXRoIGFub3RoZXIgdGVzdGluZyBmcmFtZXdvcmspIGFuZCBzcGVjaWZ5IHRoZSBmb3JtZXIg
b24gdGhlCiAgICAgLy8gY29tbWFuZCBsaW5lIGZvciBkZWJ1Z2dpbmcuCiAgICAgaWYgKEdURVNU
X0ZMQUcoYnJlYWtfb25fZmFpbHVyZSkpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjaWYgR1RF
U1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lO
RE9XU19SVAogICAgICAgLy8gVXNpbmcgRGVidWdCcmVhayBvbiBXaW5kb3dzIGFsbG93cyBndGVz
dCB0byBzdGlsbCBicmVhayBpbnRvIGEgZGVidWdnZXIKICAgICAgIC8vIHdoZW4gYSBmYWlsdXJl
IGhhcHBlbnMgYW5kIGJvdGggdGhlIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBhbmQKICAgICAg
IC8vIHRoZSAtLWd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnMgZmxhZ3MgYXJlIHNwZWNpZmllZC4KICAg
ICAgIERlYnVnQnJlYWsoKTsKICNlbHNlCisgICAgICAvLyBEZXJlZmVyZW5jZSBOVUxMIHRocm91
Z2ggYSB2b2xhdGlsZSBwb2ludGVyIHRvIHByZXZlbnQgdGhlIGNvbXBpbGVyCisgICAgICAvLyBm
cm9tIHJlbW92aW5nLiBXZSB1c2UgdGhpcyByYXRoZXIgdGhhbiBhYm9ydCgpIG9yIF9fYnVpbHRp
bl90cmFwKCkgZm9yCisgICAgICAvLyBwb3J0YWJpbGl0eTogU3ltYmlhbiBkb2Vzbid0IGltcGxl
bWVudCBhYm9ydCgpIHdlbGwsIGFuZCBzb21lIGRlYnVnZ2VycworICAgICAgLy8gZG9uJ3QgY29y
cmVjdGx5IHRyYXAgYWJvcnQoKS4KICAgICAgICpzdGF0aWNfY2FzdDx2b2xhdGlsZSBpbnQqPihO
VUxMKSA9IDE7CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKICAgICB9IGVsc2UgaWYgKEdU
RVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkpIHsKICNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwot
ICAgICAgdGhyb3cgR29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24ocmVzdWx0KTsKKyAgICAgIHRo
cm93IGludGVybmFsOjpHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbihyZXN1bHQpOwogI2Vsc2UK
ICAgICAgIC8vIFdlIGNhbm5vdCBjYWxsIGFib3J0KCkgYXMgaXQgZ2VuZXJhdGVzIGEgcG9wLXVw
IGluIGRlYnVnIG1vZGUKICAgICAgIC8vIHRoYXQgY2Fubm90IGJlIHN1cHByZXNzZWQgaW4gVkMg
Ny4xIG9yIGJlbG93LgpAQCAtMzYxNiwxMiArNDE2NywxNCBAQCB2b2lkIFVuaXRUZXN0OjpBZGRU
ZXN0UGFydFJlc3VsdChUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKICAgfQogfQog
Ci0vLyBDcmVhdGVzIGFuZCBhZGRzIGEgcHJvcGVydHkgdG8gdGhlIGN1cnJlbnQgVGVzdFJlc3Vs
dC4gSWYgYSBwcm9wZXJ0eSBtYXRjaGluZwotLy8gdGhlIHN1cHBsaWVkIHZhbHVlIGFscmVhZHkg
ZXhpc3RzLCB1cGRhdGVzIGl0cyB2YWx1ZSBpbnN0ZWFkLgotdm9pZCBVbml0VGVzdDo6UmVjb3Jk
UHJvcGVydHlGb3JDdXJyZW50VGVzdChjb25zdCBjaGFyKiBrZXksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHZhbHVlKSB7Ci0gIGNvbnN0
IFRlc3RQcm9wZXJ0eSB0ZXN0X3Byb3BlcnR5KGtleSwgdmFsdWUpOwotICBpbXBsXy0+Y3VycmVu
dF90ZXN0X3Jlc3VsdCgpLT5SZWNvcmRQcm9wZXJ0eSh0ZXN0X3Byb3BlcnR5KTsKKy8vIEFkZHMg
YSBUZXN0UHJvcGVydHkgdG8gdGhlIGN1cnJlbnQgVGVzdFJlc3VsdCBvYmplY3Qgd2hlbiBpbnZv
a2VkIGZyb20KKy8vIGluc2lkZSBhIHRlc3QsIHRvIGN1cnJlbnQgVGVzdENhc2UncyBhZF9ob2Nf
dGVzdF9yZXN1bHRfIHdoZW4gaW52b2tlZAorLy8gZnJvbSBTZXRVcFRlc3RDYXNlIG9yIFRlYXJE
b3duVGVzdENhc2UsIG9yIHRvIHRoZSBnbG9iYWwgcHJvcGVydHkgc2V0CisvLyB3aGVuIGludm9r
ZWQgZWxzZXdoZXJlLiAgSWYgdGhlIHJlc3VsdCBhbHJlYWR5IGNvbnRhaW5zIGEgcHJvcGVydHkg
d2l0aAorLy8gdGhlIHNhbWUga2V5LCB0aGUgdmFsdWUgd2lsbCBiZSB1cGRhdGVkLgordm9pZCBV
bml0VGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkgeworICBpbXBs
Xy0+UmVjb3JkUHJvcGVydHkoVGVzdFByb3BlcnR5KGtleSwgdmFsdWUpKTsKIH0KIAogLy8gUnVu
cyBhbGwgdGVzdHMgaW4gdGhpcyBVbml0VGVzdCBvYmplY3QgYW5kIHByaW50cyB0aGUgcmVzdWx0
LgpAQCAtMzYzMCwzMSArNDE4Myw1OCBAQCB2b2lkIFVuaXRUZXN0OjpSZWNvcmRQcm9wZXJ0eUZv
ckN1cnJlbnRUZXN0KGNvbnN0IGNoYXIqIGtleSwKIC8vIFdlIGRvbid0IHByb3RlY3QgdGhpcyB1
bmRlciBtdXRleF8sIGFzIHdlIG9ubHkgc3VwcG9ydCBjYWxsaW5nIGl0CiAvLyBmcm9tIHRoZSBt
YWluIHRocmVhZC4KIGludCBVbml0VGVzdDo6UnVuKCkgewotI2lmIEdURVNUX0hBU19TRUgKLSAg
Ly8gQ2F0Y2ggU0VILXN0eWxlIGV4Y2VwdGlvbnMuCi0KICAgY29uc3QgYm9vbCBpbl9kZWF0aF90
ZXN0X2NoaWxkX3Byb2Nlc3MgPQogICAgICAgaW50ZXJuYWw6OkdURVNUX0ZMQUcoaW50ZXJuYWxf
cnVuX2RlYXRoX3Rlc3QpLmxlbmd0aCgpID4gMDsKIAorICAvLyBHb29nbGUgVGVzdCBpbXBsZW1l
bnRzIHRoaXMgcHJvdG9jb2wgZm9yIGNhdGNoaW5nIHRoYXQgYSB0ZXN0CisgIC8vIHByb2dyYW0g
ZXhpdHMgYmVmb3JlIHJldHVybmluZyBjb250cm9sIHRvIEdvb2dsZSBUZXN0OgorICAvLworICAv
LyAgIDEuIFVwb24gc3RhcnQsIEdvb2dsZSBUZXN0IGNyZWF0ZXMgYSBmaWxlIHdob3NlIGFic29s
dXRlIHBhdGgKKyAgLy8gICAgICBpcyBzcGVjaWZpZWQgYnkgdGhlIGVudmlyb25tZW50IHZhcmlh
YmxlCisgIC8vICAgICAgVEVTVF9QUkVNQVRVUkVfRVhJVF9GSUxFLgorICAvLyAgIDIuIFdoZW4g
R29vZ2xlIFRlc3QgaGFzIGZpbmlzaGVkIGl0cyB3b3JrLCBpdCBkZWxldGVzIHRoZSBmaWxlLgor
ICAvLworICAvLyBUaGlzIGFsbG93cyBhIHRlc3QgcnVubmVyIHRvIHNldCBURVNUX1BSRU1BVFVS
RV9FWElUX0ZJTEUgYmVmb3JlCisgIC8vIHJ1bm5pbmcgYSBHb29nbGUtVGVzdC1iYXNlZCB0ZXN0
IHByb2dyYW0gYW5kIGNoZWNrIHRoZSBleGlzdGVuY2UKKyAgLy8gb2YgdGhlIGZpbGUgYXQgdGhl
IGVuZCBvZiB0aGUgdGVzdCBleGVjdXRpb24gdG8gc2VlIGlmIGl0IGhhcworICAvLyBleGl0ZWQg
cHJlbWF0dXJlbHkuCisKKyAgLy8gSWYgd2UgYXJlIGluIHRoZSBjaGlsZCBwcm9jZXNzIG9mIGEg
ZGVhdGggdGVzdCwgZG9uJ3QKKyAgLy8gY3JlYXRlL2RlbGV0ZSB0aGUgcHJlbWF0dXJlIGV4aXQg
ZmlsZSwgYXMgZG9pbmcgc28gaXMgdW5uZWNlc3NhcnkKKyAgLy8gYW5kIHdpbGwgY29uZnVzZSB0
aGUgcGFyZW50IHByb2Nlc3MuICBPdGhlcndpc2UsIGNyZWF0ZS9kZWxldGUKKyAgLy8gdGhlIGZp
bGUgdXBvbiBlbnRlcmluZy9sZWF2aW5nIHRoaXMgZnVuY3Rpb24uICBJZiB0aGUgcHJvZ3JhbQor
ICAvLyBzb21laG93IGV4aXRzIGJlZm9yZSB0aGlzIGZ1bmN0aW9uIGhhcyBhIGNoYW5jZSB0byBy
ZXR1cm4sIHRoZQorICAvLyBwcmVtYXR1cmUtZXhpdCBmaWxlIHdpbGwgYmUgbGVmdCB1bmRlbGV0
ZWQsIGNhdXNpbmcgYSB0ZXN0IHJ1bm5lcgorICAvLyB0aGF0IHVuZGVyc3RhbmRzIHRoZSBwcmVt
YXR1cmUtZXhpdC1maWxlIHByb3RvY29sIHRvIHJlcG9ydCB0aGUKKyAgLy8gdGVzdCBhcyBoYXZp
bmcgZmFpbGVkLgorICBjb25zdCBpbnRlcm5hbDo6U2NvcGVkUHJlbWF0dXJlRXhpdEZpbGUgcHJl
bWF0dXJlX2V4aXRfZmlsZSgKKyAgICAgIGluX2RlYXRoX3Rlc3RfY2hpbGRfcHJvY2VzcyA/Cisg
ICAgICBOVUxMIDogaW50ZXJuYWw6OnBvc2l4OjpHZXRFbnYoIlRFU1RfUFJFTUFUVVJFX0VYSVRf
RklMRSIpKTsKKworICAvLyBDYXB0dXJlcyB0aGUgdmFsdWUgb2YgR1RFU1RfRkxBRyhjYXRjaF9l
eGNlcHRpb25zKS4gIFRoaXMgdmFsdWUgd2lsbCBiZQorICAvLyB1c2VkIGZvciB0aGUgZHVyYXRp
b24gb2YgdGhlIHByb2dyYW0uCisgIGltcGwoKS0+c2V0X2NhdGNoX2V4Y2VwdGlvbnMoR1RFU1Rf
RkxBRyhjYXRjaF9leGNlcHRpb25zKSk7CisKKyNpZiBHVEVTVF9IQVNfU0VICiAgIC8vIEVpdGhl
ciB0aGUgdXNlciB3YW50cyBHb29nbGUgVGVzdCB0byBjYXRjaCBleGNlcHRpb25zIHRocm93biBi
eSB0aGUKICAgLy8gdGVzdHMgb3IgdGhpcyBpcyBleGVjdXRpbmcgaW4gdGhlIGNvbnRleHQgb2Yg
ZGVhdGggdGVzdCBjaGlsZAogICAvLyBwcm9jZXNzLiBJbiBlaXRoZXIgY2FzZSB0aGUgdXNlciBk
b2VzIG5vdCB3YW50IHRvIHNlZSBwb3AtdXAgZGlhbG9ncwotICAvLyBhYm91dCBjcmFzaGVzIC0g
dGhleSBhcmUgZXhwZWN0ZWQuLgotICBpZiAoR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSB8
fCBpbl9kZWF0aF90ZXN0X2NoaWxkX3Byb2Nlc3MpIHsKLSNpZiAhR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKKyAgLy8gYWJvdXQgY3Jhc2hlcyAtIHRoZXkgYXJlIGV4cGVjdGVkLgorICBpZiAoaW1w
bCgpLT5jYXRjaF9leGNlcHRpb25zKCkgfHwgaW5fZGVhdGhfdGVzdF9jaGlsZF9wcm9jZXNzKSB7
CisjIGlmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRSAmJiAhR1RFU1RfT1NfV0lORE9XU19QSE9O
RSAmJiAhR1RFU1RfT1NfV0lORE9XU19SVAogICAgIC8vIFNldEVycm9yTW9kZSBkb2Vzbid0IGV4
aXN0IG9uIENFLgogICAgIFNldEVycm9yTW9kZShTRU1fRkFJTENSSVRJQ0FMRVJST1JTIHwgU0VN
X05PQUxJR05NRU5URkFVTFRFWENFUFQgfAogICAgICAgICAgICAgICAgICBTRU1fTk9HUEZBVUxU
RVJST1JCT1ggfCBTRU1fTk9PUEVORklMRUVSUk9SQk9YKTsKLSNlbmRpZiAgLy8gIUdURVNUX09T
X1dJTkRPV1NfTU9CSUxFCisjIGVuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIAot
I2lmIChkZWZpbmVkKF9NU0NfVkVSKSB8fCBHVEVTVF9PU19XSU5ET1dTX01JTkdXKSAmJiAhR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaWYgKGRlZmluZWQoX01TQ19WRVIpIHx8IEdURVNUX09T
X1dJTkRPV1NfTUlOR1cpICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQogICAgIC8vIERlYXRo
IHRlc3QgY2hpbGRyZW4gY2FuIGJlIHRlcm1pbmF0ZWQgd2l0aCBfYWJvcnQoKS4gIE9uIFdpbmRv
d3MsCiAgICAgLy8gX2Fib3J0KCkgY2FuIHNob3cgYSBkaWFsb2cgd2l0aCBhIHdhcm5pbmcgbWVz
c2FnZS4gIFRoaXMgZm9yY2VzIHRoZQogICAgIC8vIGFib3J0IG1lc3NhZ2UgdG8gZ28gdG8gc3Rk
ZXJyIGluc3RlYWQuCiAgICAgX3NldF9lcnJvcl9tb2RlKF9PVVRfVE9fU1RERVJSKTsKLSNlbmRp
ZgorIyBlbmRpZgogCi0jaWYgX01TQ19WRVIgPj0gMTQwMCAmJiAhR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKKyMgaWYgX01TQ19WRVIgPj0gMTQwMCAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
ICAgICAvLyBJbiB0aGUgZGVidWcgdmVyc2lvbiwgVmlzdWFsIFN0dWRpbyBwb3BzIHVwIGEgc2Vw
YXJhdGUgZGlhbG9nCiAgICAgLy8gb2ZmZXJpbmcgYSBjaG9pY2UgdG8gZGVidWcgdGhlIGFib3J0
ZWQgcHJvZ3JhbS4gV2UgbmVlZCB0byBzdXBwcmVzcwogICAgIC8vIHRoaXMgZGlhbG9nIG9yIGl0
IHdpbGwgcG9wIHVwIGZvciBldmVyeSBFWFBFQ1QvQVNTRVJUX0RFQVRIIHN0YXRlbWVudApAQCAt
MzY3MCwyMiArNDI1MCwxNCBAQCBpbnQgVW5pdFRlc3Q6OlJ1bigpIHsKICAgICAgIF9zZXRfYWJv
cnRfYmVoYXZpb3IoCiAgICAgICAgICAgMHgwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIENsZWFyIHRoZSBmb2xsb3dpbmcgZmxhZ3M6CiAgICAgICAgICAgX1dSSVRFX0FC
T1JUX01TRyB8IF9DQUxMX1JFUE9SVEZBVUxUKTsgIC8vIHBvcC11cCB3aW5kb3csIGNvcmUgZHVt
cC4KLSNlbmRpZgotICB9Ci0KLSAgX190cnkgewotICAgIHJldHVybiBpbXBsXy0+UnVuQWxsVGVz
dHMoKTsKLSAgfSBfX2V4Y2VwdChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpHVGVzdFNob3Vs
ZFByb2Nlc3NTRUgoCi0gICAgICBHZXRFeGNlcHRpb25Db2RlKCkpKSB7Ci0gICAgcHJpbnRmKCJF
eGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAweCV4LlxuRkFJTFxuIiwgR2V0RXhjZXB0aW9uQ29k
ZSgpKTsKLSAgICBmZmx1c2goc3Rkb3V0KTsKLSAgICByZXR1cm4gMTsKKyMgZW5kaWYKICAgfQot
Ci0jZWxzZSAgLy8gV2UgYXJlIG9uIGEgY29tcGlsZXIgb3IgcGxhdGZvcm0gdGhhdCBkb2Vzbid0
IHN1cHBvcnQgU0VILgotCi0gIHJldHVybiBpbXBsXy0+UnVuQWxsVGVzdHMoKTsKICNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1NFSAorCisgIHJldHVybiBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0lu
TWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgICBpbXBsKCksCisgICAgICAmaW50ZXJuYWw6OlVuaXRU
ZXN0SW1wbDo6UnVuQWxsVGVzdHMsCisgICAgICAiYXV4aWxpYXJ5IHRlc3QgY29kZSAoZW52aXJv
bm1lbnRzIG9yIGV2ZW50IGxpc3RlbmVycykiKSA/IDAgOiAxOwogfQogCiAvLyBSZXR1cm5zIHRo
ZSB3b3JraW5nIGRpcmVjdG9yeSB3aGVuIHRoZSBmaXJzdCBURVNUKCkgb3IgVEVTVF9GKCkgd2Fz
CkBAIC0zNjk2LDE2ICs0MjY4LDE2IEBAIGNvbnN0IGNoYXIqIFVuaXRUZXN0OjpvcmlnaW5hbF93
b3JraW5nX2RpcigpIGNvbnN0IHsKIAogLy8gUmV0dXJucyB0aGUgVGVzdENhc2Ugb2JqZWN0IGZv
ciB0aGUgdGVzdCB0aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcsCiAvLyBvciBOVUxMIGlmIG5vIHRl
c3QgaXMgcnVubmluZy4KLS8vIEwgPCBtdXRleF8KLWNvbnN0IFRlc3RDYXNlKiBVbml0VGVzdDo6
Y3VycmVudF90ZXN0X2Nhc2UoKSBjb25zdCB7Citjb25zdCBUZXN0Q2FzZSogVW5pdFRlc3Q6OmN1
cnJlbnRfdGVzdF9jYXNlKCkgY29uc3QKKyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8p
IHsKICAgaW50ZXJuYWw6Ok11dGV4TG9jayBsb2NrKCZtdXRleF8pOwogICByZXR1cm4gaW1wbF8t
PmN1cnJlbnRfdGVzdF9jYXNlKCk7CiB9CiAKIC8vIFJldHVybnMgdGhlIFRlc3RJbmZvIG9iamVj
dCBmb3IgdGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLAogLy8gb3IgTlVMTCBpZiBu
byB0ZXN0IGlzIHJ1bm5pbmcuCi0vLyBMIDwgbXV0ZXhfCi1jb25zdCBUZXN0SW5mbyogVW5pdFRl
c3Q6OmN1cnJlbnRfdGVzdF9pbmZvKCkgY29uc3QgeworY29uc3QgVGVzdEluZm8qIFVuaXRUZXN0
OjpjdXJyZW50X3Rlc3RfaW5mbygpIGNvbnN0CisgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0
ZXhfKSB7CiAgIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKICAgcmV0dXJuIGlt
cGxfLT5jdXJyZW50X3Rlc3RfaW5mbygpOwogfQpAQCAtMzcxNiw5ICs0Mjg4LDkgQEAgaW50IFVu
aXRUZXN0OjpyYW5kb21fc2VlZCgpIGNvbnN0IHsgcmV0dXJuIGltcGxfLT5yYW5kb21fc2VlZCgp
OyB9CiAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKIC8vIFJldHVybnMgUGFyYW1ldGVyaXplZFRl
c3RDYXNlUmVnaXN0cnkgb2JqZWN0IHVzZWQgdG8ga2VlcCB0cmFjayBvZgogLy8gdmFsdWUtcGFy
YW1ldGVyaXplZCB0ZXN0cyBhbmQgaW5zdGFudGlhdGUgYW5kIHJlZ2lzdGVyIHRoZW0uCi0vLyBM
IDwgbXV0ZXhfCiBpbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkmCi0gICAg
VW5pdFRlc3Q6OnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpIHsKKyAgICBVbml0VGVzdDo6
cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkKKyAgICAgICAgR1RFU1RfTE9DS19FWENMVURF
RF8obXV0ZXhfKSB7CiAgIHJldHVybiBpbXBsXy0+cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5
KCk7CiB9CiAjZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCkBAIC0zNzM1LDE1ICs0MzA3
LDE1IEBAIFVuaXRUZXN0Ojp+VW5pdFRlc3QoKSB7CiAKIC8vIFB1c2hlcyBhIHRyYWNlIGRlZmlu
ZWQgYnkgU0NPUEVEX1RSQUNFKCkgb24gdG8gdGhlIHBlci10aHJlYWQKIC8vIEdvb2dsZSBUZXN0
IHRyYWNlIHN0YWNrLgotLy8gTCA8IG11dGV4Xwotdm9pZCBVbml0VGVzdDo6UHVzaEdUZXN0VHJh
Y2UoY29uc3QgaW50ZXJuYWw6OlRyYWNlSW5mbyYgdHJhY2UpIHsKK3ZvaWQgVW5pdFRlc3Q6OlB1
c2hHVGVzdFRyYWNlKGNvbnN0IGludGVybmFsOjpUcmFjZUluZm8mIHRyYWNlKQorICAgIEdURVNU
X0xPQ0tfRVhDTFVERURfKG11dGV4XykgewogICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGxvY2soJm11
dGV4Xyk7CiAgIGltcGxfLT5ndGVzdF90cmFjZV9zdGFjaygpLnB1c2hfYmFjayh0cmFjZSk7CiB9
CiAKIC8vIFBvcHMgYSB0cmFjZSBmcm9tIHRoZSBwZXItdGhyZWFkIEdvb2dsZSBUZXN0IHRyYWNl
IHN0YWNrLgotLy8gTCA8IG11dGV4Xwotdm9pZCBVbml0VGVzdDo6UG9wR1Rlc3RUcmFjZSgpIHsK
K3ZvaWQgVW5pdFRlc3Q6OlBvcEdUZXN0VHJhY2UoKQorICAgIEdURVNUX0xPQ0tfRVhDTFVERURf
KG11dGV4XykgewogICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7CiAgIGltcGxf
LT5ndGVzdF90cmFjZV9zdGFjaygpLnBvcF9iYWNrKCk7CiB9CkBAIC0zNzUyLDE3ICs0MzI0LDEw
IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIFVuaXRUZXN0SW1wbDo6VW5pdFRlc3RJbXBsKFVu
aXRUZXN0KiBwYXJlbnQpCiAgICAgOiBwYXJlbnRfKHBhcmVudCksCi0jaWZkZWYgX01TQ19WRVIK
LSNwcmFnbWEgd2FybmluZyhwdXNoKSAgICAgICAgICAgICAgICAgICAgLy8gU2F2ZXMgdGhlIGN1
cnJlbnQgd2FybmluZyBzdGF0ZS4KLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQzNTUpICAgICAg
ICAgICAgLy8gVGVtcG9yYXJpbHkgZGlzYWJsZXMgd2FybmluZyA0MzU1Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh1c2luZyB0aGlzIGluIGluaXRpYWxpemVy
KS4KKyAgICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQzNTUgLyogdXNpbmcg
dGhpcyBpbiBpbml0aWFsaXplciAqLykKICAgICAgIGRlZmF1bHRfZ2xvYmFsX3Rlc3RfcGFydF9y
ZXN1bHRfcmVwb3J0ZXJfKHRoaXMpLAogICAgICAgZGVmYXVsdF9wZXJfdGhyZWFkX3Rlc3RfcGFy
dF9yZXN1bHRfcmVwb3J0ZXJfKHRoaXMpLAotI3ByYWdtYSB3YXJuaW5nKHBvcCkgICAgICAgICAg
ICAgICAgICAgICAvLyBSZXN0b3JlcyB0aGUgd2FybmluZyBzdGF0ZSBhZ2Fpbi4KLSNlbHNlCi0g
ICAgICBkZWZhdWx0X2dsb2JhbF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXyh0aGlzKSwKLSAg
ICAgIGRlZmF1bHRfcGVyX3RocmVhZF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXyh0aGlzKSwK
LSNlbmRpZiAgLy8gX01TQ19WRVIKKyAgICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BP
UF8oKQogICAgICAgZ2xvYmFsX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3Rlcl8oCiAgICAgICAgICAg
JmRlZmF1bHRfZ2xvYmFsX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfKSwKICAgICAgIHBlcl90
aHJlYWRfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8oCkBAIC0zNzc5LDEzICs0MzQ0LDEzIEBA
IFVuaXRUZXN0SW1wbDo6VW5pdFRlc3RJbXBsKFVuaXRUZXN0KiBwYXJlbnQpCiAgICAgICBwb3N0
X2ZsYWdfcGFyc2VfaW5pdF9wZXJmb3JtZWRfKGZhbHNlKSwKICAgICAgIHJhbmRvbV9zZWVkXygw
KSwgIC8vIFdpbGwgYmUgb3ZlcnJpZGRlbiBieSB0aGUgZmxhZyBiZWZvcmUgZmlyc3QgdXNlLgog
ICAgICAgcmFuZG9tXygwKSwgIC8vIFdpbGwgYmUgcmVzZWVkZWQgYmVmb3JlIGZpcnN0IHVzZS4K
LSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorICAgICAgc3RhcnRfdGltZXN0YW1wXygwKSwKICAg
ICAgIGVsYXBzZWRfdGltZV8oMCksCi0gICAgICBpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdF9mbGFn
XyhOVUxMKSwKLSAgICAgIGRlYXRoX3Rlc3RfZmFjdG9yeV8obmV3IERlZmF1bHREZWF0aFRlc3RG
YWN0b3J5KSB7Ci0jZWxzZQotICAgICAgZWxhcHNlZF90aW1lXygwKSB7Ci0jZW5kaWYgIC8vIEdU
RVNUX0hBU19ERUFUSF9URVNUCisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKyAgICAgIGRlYXRo
X3Rlc3RfZmFjdG9yeV8obmV3IERlZmF1bHREZWF0aFRlc3RGYWN0b3J5KSwKKyNlbmRpZgorICAg
ICAgLy8gV2lsbCBiZSBvdmVycmlkZGVuIGJ5IHRoZSBmbGFnIGJlZm9yZSBmaXJzdCB1c2UuCisg
ICAgICBjYXRjaF9leGNlcHRpb25zXyhmYWxzZSkgewogICBsaXN0ZW5lcnMoKS0+U2V0RGVmYXVs
dFJlc3VsdFByaW50ZXIobmV3IFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcik7CiB9CiAKQEAg
LTM3OTksNiArNDM2NCwyOCBAQCBVbml0VGVzdEltcGw6On5Vbml0VGVzdEltcGwoKSB7CiAgIGRl
bGV0ZSBvc19zdGFja190cmFjZV9nZXR0ZXJfOwogfQogCisvLyBBZGRzIGEgVGVzdFByb3BlcnR5
IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0IHdoZW4gaW52b2tlZCBpbiBhCisvLyBj
b250ZXh0IG9mIGEgdGVzdCwgdG8gY3VycmVudCB0ZXN0IGNhc2UncyBhZF9ob2NfdGVzdF9yZXN1
bHQgd2hlbiBpbnZva2UKKy8vIGZyb20gU2V0VXBUZXN0Q2FzZS9UZWFyRG93blRlc3RDYXNlLCBv
ciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNldAorLy8gb3RoZXJ3aXNlLiAgSWYgdGhlIHJlc3Vs
dCBhbHJlYWR5IGNvbnRhaW5zIGEgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBrZXksCisvLyB0aGUg
dmFsdWUgd2lsbCBiZSB1cGRhdGVkLgordm9pZCBVbml0VGVzdEltcGw6OlJlY29yZFByb3BlcnR5
KGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgeworICBzdGQ6OnN0cmluZyB4bWxf
ZWxlbWVudDsKKyAgVGVzdFJlc3VsdCogdGVzdF9yZXN1bHQ7ICAvLyBUZXN0UmVzdWx0IGFwcHJv
cHJpYXRlIGZvciBwcm9wZXJ0eSByZWNvcmRpbmcuCisKKyAgaWYgKGN1cnJlbnRfdGVzdF9pbmZv
XyAhPSBOVUxMKSB7CisgICAgeG1sX2VsZW1lbnQgPSAidGVzdGNhc2UiOworICAgIHRlc3RfcmVz
dWx0ID0gJihjdXJyZW50X3Rlc3RfaW5mb18tPnJlc3VsdF8pOworICB9IGVsc2UgaWYgKGN1cnJl
bnRfdGVzdF9jYXNlXyAhPSBOVUxMKSB7CisgICAgeG1sX2VsZW1lbnQgPSAidGVzdHN1aXRlIjsK
KyAgICB0ZXN0X3Jlc3VsdCA9ICYoY3VycmVudF90ZXN0X2Nhc2VfLT5hZF9ob2NfdGVzdF9yZXN1
bHRfKTsKKyAgfSBlbHNlIHsKKyAgICB4bWxfZWxlbWVudCA9ICJ0ZXN0c3VpdGVzIjsKKyAgICB0
ZXN0X3Jlc3VsdCA9ICZhZF9ob2NfdGVzdF9yZXN1bHRfOworICB9CisgIHRlc3RfcmVzdWx0LT5S
ZWNvcmRQcm9wZXJ0eSh4bWxfZWxlbWVudCwgdGVzdF9wcm9wZXJ0eSk7Cit9CisKICNpZiBHVEVT
VF9IQVNfREVBVEhfVEVTVAogLy8gRGlzYWJsZXMgZXZlbnQgZm9yd2FyZGluZyBpZiB0aGUgY29u
dHJvbCBpcyBjdXJyZW50bHkgaW4gYSBkZWF0aCB0ZXN0CiAvLyBzdWJwcm9jZXNzLiBNdXN0IG5v
dCBiZSBjYWxsZWQgYmVmb3JlIEluaXRHb29nbGVUZXN0LgpAQCAtMzgxMSw3ICs0Mzk4LDcgQEAg
dm9pZCBVbml0VGVzdEltcGw6OlN1cHByZXNzVGVzdEV2ZW50c0lmSW5TdWJwcm9jZXNzKCkgewog
Ly8gSW5pdGlhbGl6ZXMgZXZlbnQgbGlzdGVuZXJzIHBlcmZvcm1pbmcgWE1MIG91dHB1dCBhcyBz
cGVjaWZpZWQgYnkKIC8vIFVuaXRUZXN0T3B0aW9ucy4gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9y
ZSBJbml0R29vZ2xlVGVzdC4KIHZvaWQgVW5pdFRlc3RJbXBsOjpDb25maWd1cmVYbWxPdXRwdXQo
KSB7Ci0gIGNvbnN0IFN0cmluZyYgb3V0cHV0X2Zvcm1hdCA9IFVuaXRUZXN0T3B0aW9uczo6R2V0
T3V0cHV0Rm9ybWF0KCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZm9ybWF0ID0gVW5p
dFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQoKTsKICAgaWYgKG91dHB1dF9mb3JtYXQgPT0g
InhtbCIpIHsKICAgICBsaXN0ZW5lcnMoKS0+U2V0RGVmYXVsdFhtbEdlbmVyYXRvcihuZXcgWG1s
VW5pdFRlc3RSZXN1bHRQcmludGVyKAogICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29s
dXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpKTsKQEAgLTM4MjIsNiArNDQwOSwyNSBAQCB2
b2lkIFVuaXRUZXN0SW1wbDo6Q29uZmlndXJlWG1sT3V0cHV0KCkgewogICB9CiB9CiAKKyNpZiBH
VEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisvLyBJbml0aWFsaXplcyBldmVudCBsaXN0ZW5lcnMg
Zm9yIHN0cmVhbWluZyB0ZXN0IHJlc3VsdHMgaW4gc3RyaW5nIGZvcm0uCisvLyBNdXN0IG5vdCBi
ZSBjYWxsZWQgYmVmb3JlIEluaXRHb29nbGVUZXN0Lgordm9pZCBVbml0VGVzdEltcGw6OkNvbmZp
Z3VyZVN0cmVhbWluZ091dHB1dCgpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIHRhcmdldCA9IEdU
RVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90byk7CisgIGlmICghdGFyZ2V0LmVtcHR5KCkpIHsKKyAg
ICBjb25zdCBzaXplX3QgcG9zID0gdGFyZ2V0LmZpbmQoJzonKTsKKyAgICBpZiAocG9zICE9IHN0
ZDo6c3RyaW5nOjpucG9zKSB7CisgICAgICBsaXN0ZW5lcnMoKS0+QXBwZW5kKG5ldyBTdHJlYW1p
bmdMaXN0ZW5lcih0YXJnZXQuc3Vic3RyKDAsIHBvcyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3Vic3RyKHBvcysxKSkpOworICAgIH0g
ZWxzZSB7CisgICAgICBwcmludGYoIldBUk5JTkc6IHVucmVjb2duaXplZCBzdHJlYW1pbmcgdGFy
Z2V0IFwiJXNcIiBpZ25vcmVkLlxuIiwKKyAgICAgICAgICAgICB0YXJnZXQuY19zdHIoKSk7Cisg
ICAgICBmZmx1c2goc3Rkb3V0KTsKKyAgICB9CisgIH0KK30KKyNlbmRpZiAgLy8gR1RFU1RfQ0FO
X1NUUkVBTV9SRVNVTFRTXworCiAvLyBQZXJmb3JtcyBpbml0aWFsaXphdGlvbiBkZXBlbmRlbnQg
dXBvbiBmbGFnIHZhbHVlcyBvYnRhaW5lZCBpbgogLy8gUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5
LiAgSXMgY2FsbGVkIGZyb20gSW5pdEdvb2dsZVRlc3QgYWZ0ZXIgdGhlIGNhbGwgdG8KIC8vIFBh
cnNlR29vZ2xlVGVzdEZsYWdzT25seS4gIEluIGNhc2UgYSB1c2VyIG5lZ2xlY3RzIHRvIGNhbGwg
SW5pdEdvb2dsZVRlc3QKQEAgLTM4MzIsNiArNDQzOCwxMSBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6
UG9zdEZsYWdQYXJzaW5nSW5pdCgpIHsKICAgaWYgKCFwb3N0X2ZsYWdfcGFyc2VfaW5pdF9wZXJm
b3JtZWRfKSB7CiAgICAgcG9zdF9mbGFnX3BhcnNlX2luaXRfcGVyZm9ybWVkXyA9IHRydWU7CiAK
KyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9URVNUX0VWRU5UX0xJU1RFTkVSXykKKyAgICAvLyBS
ZWdpc3RlciB0byBzZW5kIG5vdGlmaWNhdGlvbnMgYWJvdXQga2V5IHByb2Nlc3Mgc3RhdGUgY2hh
bmdlcy4KKyAgICBsaXN0ZW5lcnMoKS0+QXBwZW5kKG5ldyBHVEVTVF9DVVNUT01fVEVTVF9FVkVO
VF9MSVNURU5FUl8oKSk7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfQ1VTVE9NX1RFU1RfRVZF
TlRfTElTVEVORVJfKQorCiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKICAgICBJbml0RGVhdGhU
ZXN0U3VicHJvY2Vzc0NvbnRyb2xJbmZvKCk7CiAgICAgU3VwcHJlc3NUZXN0RXZlbnRzSWZJblN1
YnByb2Nlc3MoKTsKQEAgLTM4NDUsNiArNDQ1NiwxMSBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6UG9z
dEZsYWdQYXJzaW5nSW5pdCgpIHsKICAgICAvLyBDb25maWd1cmVzIGxpc3RlbmVycyBmb3IgWE1M
IG91dHB1dC4gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgdXNlcnMKICAgICAvLyB0byBzaHV0
IGRvd24gdGhlIGRlZmF1bHQgWE1MIG91dHB1dCBiZWZvcmUgaW52b2tpbmcgUlVOX0FMTF9URVNU
Uy4KICAgICBDb25maWd1cmVYbWxPdXRwdXQoKTsKKworI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVT
VUxUU18KKyAgICAvLyBDb25maWd1cmVzIGxpc3RlbmVycyBmb3Igc3RyZWFtaW5nIHRlc3QgcmVz
dWx0cyB0byB0aGUgc3BlY2lmaWVkIHNlcnZlci4KKyAgICBDb25maWd1cmVTdHJlYW1pbmdPdXRw
dXQoKTsKKyNlbmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXwogICB9CiB9CiAKQEAg
LTM4NTksNyArNDQ3NSw3IEBAIHZvaWQgVW5pdFRlc3RJbXBsOjpQb3N0RmxhZ1BhcnNpbmdJbml0
KCkgewogY2xhc3MgVGVzdENhc2VOYW1lSXMgewogIHB1YmxpYzoKICAgLy8gQ29uc3RydWN0b3Iu
Ci0gIGV4cGxpY2l0IFRlc3RDYXNlTmFtZUlzKGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgZXhwbGlj
aXQgVGVzdENhc2VOYW1lSXMoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpCiAgICAgICA6IG5hbWVf
KG5hbWUpIHt9CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgbmFtZSBvZiB0ZXN0X2Nhc2Ug
bWF0Y2hlcyBuYW1lXy4KQEAgLTM4NjgsNyArNDQ4NCw3IEBAIGNsYXNzIFRlc3RDYXNlTmFtZUlz
IHsKICAgfQogCiAgcHJpdmF0ZToKLSAgU3RyaW5nIG5hbWVfOworICBzdGQ6OnN0cmluZyBuYW1l
XzsKIH07CiAKIC8vIEZpbmRzIGFuZCByZXR1cm5zIGEgVGVzdENhc2Ugd2l0aCB0aGUgZ2l2ZW4g
bmFtZS4gIElmIG9uZSBkb2Vzbid0CkBAIC0zODc5LDEwICs0NDk1LDEyIEBAIGNsYXNzIFRlc3RD
YXNlTmFtZUlzIHsKIC8vIEFyZ3VtZW50czoKIC8vCiAvLyAgIHRlc3RfY2FzZV9uYW1lOiBuYW1l
IG9mIHRoZSB0ZXN0IGNhc2UKKy8vICAgdHlwZV9wYXJhbTogICAgIHRoZSBuYW1lIG9mIHRoZSB0
ZXN0IGNhc2UncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorLy8gICAgICAgICAgICAgICAg
ICAgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2Uu
CiAvLyAgIHNldF91cF90YzogICAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHNldHMg
dXAgdGhlIHRlc3QgY2FzZQogLy8gICB0ZWFyX2Rvd25fdGM6ICAgcG9pbnRlciB0byB0aGUgZnVu
Y3Rpb24gdGhhdCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UKIFRlc3RDYXNlKiBVbml0VGVzdElt
cGw6OkdldFRlc3RDYXNlKGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogY29tbWVudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0OjpTZXRVcFRlc3RDYXNlRnVuYyBzZXRf
dXBfdGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0OjpUZWFyRG93
blRlc3RDYXNlRnVuYyB0ZWFyX2Rvd25fdGMpIHsKICAgLy8gQ2FuIHdlIGZpbmQgYSBUZXN0Q2Fz
ZSB3aXRoIHRoZSBnaXZlbiBuYW1lPwpAQCAtMzg5NSwxMCArNDUxMywxMCBAQCBUZXN0Q2FzZSog
VW5pdFRlc3RJbXBsOjpHZXRUZXN0Q2FzZShjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKIAog
ICAvLyBOby4gIExldCdzIGNyZWF0ZSBvbmUuCiAgIFRlc3RDYXNlKiBjb25zdCBuZXdfdGVzdF9j
YXNlID0KLSAgICAgIG5ldyBUZXN0Q2FzZSh0ZXN0X2Nhc2VfbmFtZSwgY29tbWVudCwgc2V0X3Vw
X3RjLCB0ZWFyX2Rvd25fdGMpOworICAgICAgbmV3IFRlc3RDYXNlKHRlc3RfY2FzZV9uYW1lLCB0
eXBlX3BhcmFtLCBzZXRfdXBfdGMsIHRlYXJfZG93bl90Yyk7CiAKICAgLy8gSXMgdGhpcyBhIGRl
YXRoIHRlc3QgY2FzZT8KLSAgaWYgKGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6Ok1hdGNoZXNG
aWx0ZXIoU3RyaW5nKHRlc3RfY2FzZV9uYW1lKSwKKyAgaWYgKGludGVybmFsOjpVbml0VGVzdE9w
dGlvbnM6Ok1hdGNoZXNGaWx0ZXIodGVzdF9jYXNlX25hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtEZWF0aFRlc3RDYXNlRmlsdGVyKSkgewogICAg
IC8vIFllcy4gIEluc2VydHMgdGhlIHRlc3QgY2FzZSBhZnRlciB0aGUgbGFzdCBkZWF0aCB0ZXN0
IGNhc2UKICAgICAvLyBkZWZpbmVkIHNvIGZhci4gIFRoaXMgb25seSB3b3JrcyB3aGVuIHRoZSB0
ZXN0IGNhc2VzIGhhdmVuJ3QKQEAgLTM5MjIsMjcgKzQ1NDAsMjYgQEAgc3RhdGljIHZvaWQgU2V0
VXBFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KSB7IGVudi0+U2V0VXAoKTsgfQogc3RhdGlj
IHZvaWQgVGVhckRvd25FbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KSB7IGVudi0+VGVhckRv
d24oKTsgfQogCiAvLyBSdW5zIGFsbCB0ZXN0cyBpbiB0aGlzIFVuaXRUZXN0IG9iamVjdCwgcHJp
bnRzIHRoZSByZXN1bHQsIGFuZAotLy8gcmV0dXJucyAwIGlmIGFsbCB0ZXN0cyBhcmUgc3VjY2Vz
c2Z1bCwgb3IgMSBvdGhlcndpc2UuICBJZiBhbnkKLS8vIGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVy
aW5nIGEgdGVzdCBvbiBXaW5kb3dzLCB0aGlzIHRlc3QgaXMKLS8vIGNvbnNpZGVyZWQgdG8gYmUg
ZmFpbGVkLCBidXQgdGhlIHJlc3Qgb2YgdGhlIHRlc3RzIHdpbGwgc3RpbGwgYmUKLS8vIHJ1bi4g
IChXZSBkaXNhYmxlIGV4Y2VwdGlvbnMgb24gTGludXggYW5kIE1hYyBPUyBYLCBzbyB0aGUgaXNz
dWUKLS8vIGRvZXNuJ3QgYXBwbHkgdGhlcmUuKQorLy8gcmV0dXJucyB0cnVlIGlmIGFsbCB0ZXN0
cyBhcmUgc3VjY2Vzc2Z1bC4gIElmIGFueSBleGNlcHRpb24gaXMKKy8vIHRocm93biBkdXJpbmcg
YSB0ZXN0LCB0aGUgdGVzdCBpcyBjb25zaWRlcmVkIHRvIGJlIGZhaWxlZCwgYnV0IHRoZQorLy8g
cmVzdCBvZiB0aGUgdGVzdHMgd2lsbCBzdGlsbCBiZSBydW4uCisvLwogLy8gV2hlbiBwYXJhbWV0
ZXJpemVkIHRlc3RzIGFyZSBlbmFibGVkLCBpdCBleHBhbmRzIGFuZCByZWdpc3RlcnMKIC8vIHBh
cmFtZXRlcml6ZWQgdGVzdHMgZmlyc3QgaW4gUmVnaXN0ZXJQYXJhbWV0ZXJpemVkVGVzdHMoKS4K
IC8vIEFsbCBvdGhlciBmdW5jdGlvbnMgY2FsbGVkIGZyb20gUnVuQWxsVGVzdHMoKSBtYXkgc2Fm
ZWx5IGFzc3VtZSB0aGF0CiAvLyBwYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSByZWFkeSB0byBiZSBj
b3VudGVkIGFuZCBydW4uCi1pbnQgVW5pdFRlc3RJbXBsOjpSdW5BbGxUZXN0cygpIHsKK2Jvb2wg
VW5pdFRlc3RJbXBsOjpSdW5BbGxUZXN0cygpIHsKICAgLy8gTWFrZXMgc3VyZSBJbml0R29vZ2xl
VGVzdCgpIHdhcyBjYWxsZWQuCiAgIGlmICghR1Rlc3RJc0luaXRpYWxpemVkKCkpIHsKICAgICBw
cmludGYoIiVzIiwKICAgICAgICAgICAgIlxuVGhpcyB0ZXN0IHByb2dyYW0gZGlkIE5PVCBjYWxs
IDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QgIgogICAgICAgICAgICAiYmVmb3JlIGNhbGxpbmcg
UlVOX0FMTF9URVNUUygpLiAgUGxlYXNlIGZpeCBpdC5cbiIpOwotICAgIHJldHVybiAxOworICAg
IHJldHVybiBmYWxzZTsKICAgfQogCiAgIC8vIERvIG5vdCBydW4gYW55IHRlc3QgaWYgdGhlIC0t
aGVscCBmbGFnIHdhcyBzcGVjaWZpZWQuCiAgIGlmIChnX2hlbHBfZmxhZykKLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gdHJ1ZTsKIAogICAvLyBSZXBlYXRzIHRoZSBjYWxsIHRvIHRoZSBwb3N0
LWZsYWcgcGFyc2luZyBpbml0aWFsaXphdGlvbiBpbiBjYXNlIHRoZQogICAvLyB1c2VyIGRpZG4n
dCBjYWxsIEluaXRHb29nbGVUZXN0LgpAQCAtMzk1OSw2ICs0NTc2LDExIEBAIGludCBVbml0VGVz
dEltcGw6OlJ1bkFsbFRlc3RzKCkgewogCiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKICAgaW5f
c3VicHJvY2Vzc19mb3JfZGVhdGhfdGVzdCA9IChpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdF9mbGFn
Xy5nZXQoKSAhPSBOVUxMKTsKKyMgaWYgZGVmaW5lZChHVEVTVF9FWFRSQV9ERUFUSF9URVNUX0NI
SUxEX1NFVFVQXykKKyAgaWYgKGluX3N1YnByb2Nlc3NfZm9yX2RlYXRoX3Rlc3QpIHsKKyAgICBH
VEVTVF9FWFRSQV9ERUFUSF9URVNUX0NISUxEX1NFVFVQXygpOworICB9CisjIGVuZGlmICAvLyBk
ZWZpbmVkKEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ0hJTERfU0VUVVBfKQogI2VuZGlmICAvLyBH
VEVTVF9IQVNfREVBVEhfVEVTVAogCiAgIGNvbnN0IGJvb2wgc2hvdWxkX3NoYXJkID0gU2hvdWxk
U2hhcmQoa1Rlc3RUb3RhbFNoYXJkcywga1Rlc3RTaGFyZEluZGV4LApAQCAtMzk3NCw3ICs0NTk2
LDcgQEAgaW50IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7CiAgIGlmIChHVEVTVF9GTEFH
KGxpc3RfdGVzdHMpKSB7CiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCAqYWZ0ZXIqIEZpbHRl
clRlc3RzKCkgaGFzIGJlZW4gY2FsbGVkLgogICAgIExpc3RUZXN0c01hdGNoaW5nRmlsdGVyKCk7
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHRydWU7CiAgIH0KIAogICByYW5kb21fc2VlZF8g
PSBHVEVTVF9GTEFHKHNodWZmbGUpID8KQEAgLTM5ODUsNiArNDYwNyw3IEBAIGludCBVbml0VGVz
dEltcGw6OlJ1bkFsbFRlc3RzKCkgewogCiAgIFRlc3RFdmVudExpc3RlbmVyKiByZXBlYXRlciA9
IGxpc3RlbmVycygpLT5yZXBlYXRlcigpOwogCisgIHN0YXJ0X3RpbWVzdGFtcF8gPSBHZXRUaW1l
SW5NaWxsaXMoKTsKICAgcmVwZWF0ZXItPk9uVGVzdFByb2dyYW1TdGFydCgqcGFyZW50Xyk7CiAK
ICAgLy8gSG93IG1hbnkgdGltZXMgdG8gcmVwZWF0IHRoZSB0ZXN0cz8gIFdlIGRvbid0IHdhbnQg
dG8gcmVwZWF0IHRoZW0KQEAgLTM5OTMsNyArNDYxNiw5IEBAIGludCBVbml0VGVzdEltcGw6OlJ1
bkFsbFRlc3RzKCkgewogICAvLyBSZXBlYXRzIGZvcmV2ZXIgaWYgdGhlIHJlcGVhdCBjb3VudCBp
cyBuZWdhdGl2ZS4KICAgY29uc3QgYm9vbCBmb3JldmVyID0gcmVwZWF0IDwgMDsKICAgZm9yIChp
bnQgaSA9IDA7IGZvcmV2ZXIgfHwgaSAhPSByZXBlYXQ7IGkrKykgewotICAgIENsZWFyUmVzdWx0
KCk7CisgICAgLy8gV2Ugd2FudCB0byBwcmVzZXJ2ZSBmYWlsdXJlcyBnZW5lcmF0ZWQgYnkgYWQt
aG9jIHRlc3QKKyAgICAvLyBhc3NlcnRpb25zIGV4ZWN1dGVkIGJlZm9yZSBSVU5fQUxMX1RFU1RT
KCkuCisgICAgQ2xlYXJOb25BZEhvY1Rlc3RSZXN1bHQoKTsKIAogICAgIGNvbnN0IFRpbWVJbk1p
bGxpcyBzdGFydCA9IEdldFRpbWVJbk1pbGxpcygpOwogCkBAIC00MDU4LDggKzQ2ODMsNyBAQCBp
bnQgVW5pdFRlc3RJbXBsOjpSdW5BbGxUZXN0cygpIHsKIAogICByZXBlYXRlci0+T25UZXN0UHJv
Z3JhbUVuZCgqcGFyZW50Xyk7CiAKLSAgLy8gUmV0dXJucyAwIGlmIGFsbCB0ZXN0cyBwYXNzZWQs
IG9yIDEgb3RoZXIgd2lzZS4KLSAgcmV0dXJuIGZhaWxlZCA/IDEgOiAwOworICByZXR1cm4gIWZh
aWxlZDsKIH0KIAogLy8gUmVhZHMgdGhlIEdURVNUX1NIQVJEX1NUQVRVU19GSUxFIGVudmlyb25t
ZW50IHZhcmlhYmxlLCBhbmQgY3JlYXRlcyB0aGUgZmlsZQpAQCAtNDEzMyw3ICs0NzU3LDcgQEAg
Ym9vbCBTaG91bGRTaGFyZChjb25zdCBjaGFyKiB0b3RhbF9zaGFyZHNfZW52LAogLy8gUGFyc2Vz
IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB2YXIgYXMgYW4gSW50MzIuIElmIGl0IGlzIHVuc2V0
LAogLy8gcmV0dXJucyBkZWZhdWx0X3ZhbC4gSWYgaXQgaXMgbm90IGFuIEludDMyLCBwcmludHMg
YW4gZXJyb3IKIC8vIGFuZCBhYm9ydHMuCi1JbnQzMiBJbnQzMkZyb21FbnZPckRpZShjb25zdCBj
aGFyKiBjb25zdCB2YXIsIEludDMyIGRlZmF1bHRfdmFsKSB7CitJbnQzMiBJbnQzMkZyb21FbnZP
ckRpZShjb25zdCBjaGFyKiB2YXIsIEludDMyIGRlZmF1bHRfdmFsKSB7CiAgIGNvbnN0IGNoYXIq
IHN0cl92YWwgPSBwb3NpeDo6R2V0RW52KHZhcik7CiAgIGlmIChzdHJfdmFsID09IE5VTEwpIHsK
ICAgICByZXR1cm4gZGVmYXVsdF92YWw7CkBAIC00MTc2LDEyICs0ODAwLDEyIEBAIGludCBVbml0
VGVzdEltcGw6OkZpbHRlclRlc3RzKFJlYWN0aW9uVG9TaGFyZGluZyBzaGFyZF90ZXN0cykgewog
ICBpbnQgbnVtX3NlbGVjdGVkX3Rlc3RzID0gMDsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0
ZXN0X2Nhc2VzXy5zaXplKCk7IGkrKykgewogICAgIFRlc3RDYXNlKiBjb25zdCB0ZXN0X2Nhc2Ug
PSB0ZXN0X2Nhc2VzX1tpXTsKLSAgICBjb25zdCBTdHJpbmcgJnRlc3RfY2FzZV9uYW1lID0gdGVz
dF9jYXNlLT5uYW1lKCk7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnRlc3RfY2FzZV9uYW1lID0g
dGVzdF9jYXNlLT5uYW1lKCk7CiAgICAgdGVzdF9jYXNlLT5zZXRfc2hvdWxkX3J1bihmYWxzZSk7
CiAKICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHRlc3RfY2FzZS0+dGVzdF9pbmZvX2xpc3Qo
KS5zaXplKCk7IGorKykgewogICAgICAgVGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9IHRlc3Rf
Y2FzZS0+dGVzdF9pbmZvX2xpc3QoKVtqXTsKLSAgICAgIGNvbnN0IFN0cmluZyB0ZXN0X25hbWUo
dGVzdF9pbmZvLT5uYW1lKCkpOworICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdF9uYW1lKHRl
c3RfaW5mby0+bmFtZSgpKTsKICAgICAgIC8vIEEgdGVzdCBpcyBkaXNhYmxlZCBpZiB0ZXN0IGNh
c2UgbmFtZSBvciB0ZXN0IG5hbWUgbWF0Y2hlcwogICAgICAgLy8ga0Rpc2FibGVUZXN0RmlsdGVy
LgogICAgICAgY29uc3QgYm9vbCBpc19kaXNhYmxlZCA9CkBAIC00MTg5LDEyICs0ODEzLDEyIEBA
IGludCBVbml0VGVzdEltcGw6OkZpbHRlclRlc3RzKFJlYWN0aW9uVG9TaGFyZGluZyBzaGFyZF90
ZXN0cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAga0Rpc2FibGVUZXN0RmlsdGVyKSB8fAogICAgICAgICAgIGludGVybmFsOjpVbml0VGVzdE9w
dGlvbnM6Ok1hdGNoZXNGaWx0ZXIodGVzdF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAga0Rpc2FibGVUZXN0RmlsdGVyKTsKLSAgICAgIHRl
c3RfaW5mby0+aW1wbCgpLT5zZXRfaXNfZGlzYWJsZWQoaXNfZGlzYWJsZWQpOworICAgICAgdGVz
dF9pbmZvLT5pc19kaXNhYmxlZF8gPSBpc19kaXNhYmxlZDsKIAogICAgICAgY29uc3QgYm9vbCBt
YXRjaGVzX2ZpbHRlciA9CiAgICAgICAgICAgaW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6Rmls
dGVyTWF0Y2hlc1Rlc3QodGVzdF9jYXNlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9uYW1lKTsKLSAgICAgIHRlc3RfaW5m
by0+aW1wbCgpLT5zZXRfbWF0Y2hlc19maWx0ZXIobWF0Y2hlc19maWx0ZXIpOworICAgICAgdGVz
dF9pbmZvLT5tYXRjaGVzX2ZpbHRlcl8gPSBtYXRjaGVzX2ZpbHRlcjsKIAogICAgICAgY29uc3Qg
Ym9vbCBpc19ydW5uYWJsZSA9CiAgICAgICAgICAgKEdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJs
ZWRfdGVzdHMpIHx8ICFpc19kaXNhYmxlZCkgJiYKQEAgLTQyMDgsMTUgKzQ4MzIsNDAgQEAgaW50
IFVuaXRUZXN0SW1wbDo6RmlsdGVyVGVzdHMoUmVhY3Rpb25Ub1NoYXJkaW5nIHNoYXJkX3Rlc3Rz
KSB7CiAgICAgICBudW1fcnVubmFibGVfdGVzdHMgKz0gaXNfcnVubmFibGU7CiAgICAgICBudW1f
c2VsZWN0ZWRfdGVzdHMgKz0gaXNfc2VsZWN0ZWQ7CiAKLSAgICAgIHRlc3RfaW5mby0+aW1wbCgp
LT5zZXRfc2hvdWxkX3J1bihpc19zZWxlY3RlZCk7CisgICAgICB0ZXN0X2luZm8tPnNob3VsZF9y
dW5fID0gaXNfc2VsZWN0ZWQ7CiAgICAgICB0ZXN0X2Nhc2UtPnNldF9zaG91bGRfcnVuKHRlc3Rf
Y2FzZS0+c2hvdWxkX3J1bigpIHx8IGlzX3NlbGVjdGVkKTsKICAgICB9CiAgIH0KICAgcmV0dXJu
IG51bV9zZWxlY3RlZF90ZXN0czsKIH0KIAorLy8gUHJpbnRzIHRoZSBnaXZlbiBDLXN0cmluZyBv
biBhIHNpbmdsZSBsaW5lIGJ5IHJlcGxhY2luZyBhbGwgJ1xuJworLy8gY2hhcmFjdGVycyB3aXRo
IHN0cmluZyAiXFxuIi4gIElmIHRoZSBvdXRwdXQgdGFrZXMgbW9yZSB0aGFuCisvLyBtYXhfbGVu
Z3RoIGNoYXJhY3RlcnMsIG9ubHkgcHJpbnRzIHRoZSBmaXJzdCBtYXhfbGVuZ3RoIGNoYXJhY3Rl
cnMKKy8vIGFuZCAiLi4uIi4KK3N0YXRpYyB2b2lkIFByaW50T25PbmVMaW5lKGNvbnN0IGNoYXIq
IHN0ciwgaW50IG1heF9sZW5ndGgpIHsKKyAgaWYgKHN0ciAhPSBOVUxMKSB7CisgICAgZm9yIChp
bnQgaSA9IDA7ICpzdHIgIT0gJ1wwJzsgKytzdHIpIHsKKyAgICAgIGlmIChpID49IG1heF9sZW5n
dGgpIHsKKyAgICAgICAgcHJpbnRmKCIuLi4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9Cisg
ICAgICBpZiAoKnN0ciA9PSAnXG4nKSB7CisgICAgICAgIHByaW50ZigiXFxuIik7CisgICAgICAg
IGkgKz0gMjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHByaW50ZigiJWMiLCAqc3RyKTsKKyAg
ICAgICAgKytpOworICAgICAgfQorICAgIH0KKyAgfQorfQorCiAvLyBQcmludHMgdGhlIG5hbWVz
IG9mIHRoZSB0ZXN0cyBtYXRjaGluZyB0aGUgdXNlci1zcGVjaWZpZWQgZmlsdGVyIGZsYWcuCiB2
b2lkIFVuaXRUZXN0SW1wbDo6TGlzdFRlc3RzTWF0Y2hpbmdGaWx0ZXIoKSB7CisgIC8vIFByaW50
IGF0IG1vc3QgdGhpcyBtYW55IGNoYXJhY3RlcnMgZm9yIGVhY2ggdHlwZS92YWx1ZSBwYXJhbWV0
ZXIuCisgIGNvbnN0IGludCBrTWF4UGFyYW1MZW5ndGggPSAyNTA7CisKICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB0ZXN0X2Nhc2VzXy5zaXplKCk7IGkrKykgewogICAgIGNvbnN0IFRlc3RDYXNl
KiBjb25zdCB0ZXN0X2Nhc2UgPSB0ZXN0X2Nhc2VzX1tpXTsKICAgICBib29sIHByaW50ZWRfdGVz
dF9jYXNlX25hbWUgPSBmYWxzZTsKQEAgLTQyMjQsMTIgKzQ4NzMsMjYgQEAgdm9pZCBVbml0VGVz
dEltcGw6Okxpc3RUZXN0c01hdGNoaW5nRmlsdGVyKCkgewogICAgIGZvciAoc2l6ZV90IGogPSAw
OyBqIDwgdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpLnNpemUoKTsgaisrKSB7CiAgICAgICBj
b25zdCBUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KICAgICAgICAgICB0ZXN0X2Nhc2UtPnRl
c3RfaW5mb19saXN0KClbal07Ci0gICAgICBpZiAodGVzdF9pbmZvLT5tYXRjaGVzX2ZpbHRlcigp
KSB7CisgICAgICBpZiAodGVzdF9pbmZvLT5tYXRjaGVzX2ZpbHRlcl8pIHsKICAgICAgICAgaWYg
KCFwcmludGVkX3Rlc3RfY2FzZV9uYW1lKSB7CiAgICAgICAgICAgcHJpbnRlZF90ZXN0X2Nhc2Vf
bmFtZSA9IHRydWU7Ci0gICAgICAgICAgcHJpbnRmKCIlcy5cbiIsIHRlc3RfY2FzZS0+bmFtZSgp
KTsKKyAgICAgICAgICBwcmludGYoIiVzLiIsIHRlc3RfY2FzZS0+bmFtZSgpKTsKKyAgICAgICAg
ICBpZiAodGVzdF9jYXNlLT50eXBlX3BhcmFtKCkgIT0gTlVMTCkgeworICAgICAgICAgICAgcHJp
bnRmKCIgICMgJXMgPSAiLCBrVHlwZVBhcmFtTGFiZWwpOworICAgICAgICAgICAgLy8gV2UgcHJp
bnQgdGhlIHR5cGUgcGFyYW1ldGVyIG9uIGEgc2luZ2xlIGxpbmUgdG8gbWFrZQorICAgICAgICAg
ICAgLy8gdGhlIG91dHB1dCBlYXN5IHRvIHBhcnNlIGJ5IGEgcHJvZ3JhbS4KKyAgICAgICAgICAg
IFByaW50T25PbmVMaW5lKHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgpLCBrTWF4UGFyYW1MZW5ndGgp
OworICAgICAgICAgIH0KKyAgICAgICAgICBwcmludGYoIlxuIik7CiAgICAgICAgIH0KLSAgICAg
ICAgcHJpbnRmKCIgICVzXG4iLCB0ZXN0X2luZm8tPm5hbWUoKSk7CisgICAgICAgIHByaW50Zigi
ICAlcyIsIHRlc3RfaW5mby0+bmFtZSgpKTsKKyAgICAgICAgaWYgKHRlc3RfaW5mby0+dmFsdWVf
cGFyYW0oKSAhPSBOVUxMKSB7CisgICAgICAgICAgcHJpbnRmKCIgICMgJXMgPSAiLCBrVmFsdWVQ
YXJhbUxhYmVsKTsKKyAgICAgICAgICAvLyBXZSBwcmludCB0aGUgdmFsdWUgcGFyYW1ldGVyIG9u
IGEgc2luZ2xlIGxpbmUgdG8gbWFrZSB0aGUKKyAgICAgICAgICAvLyBvdXRwdXQgZWFzeSB0byBw
YXJzZSBieSBhIHByb2dyYW0uCisgICAgICAgICAgUHJpbnRPbk9uZUxpbmUodGVzdF9pbmZvLT52
YWx1ZV9wYXJhbSgpLCBrTWF4UGFyYW1MZW5ndGgpOworICAgICAgICB9CisgICAgICAgIHByaW50
ZigiXG4iKTsKICAgICAgIH0KICAgICB9CiAgIH0KQEAgLTQyNTQsNyArNDkxNywxMSBAQCB2b2lk
IFVuaXRUZXN0SW1wbDo6c2V0X29zX3N0YWNrX3RyYWNlX2dldHRlcigKIC8vIGdldHRlciwgYW5k
IHJldHVybnMgaXQuCiBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UqIFVuaXRUZXN0SW1wbDo6
b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCkgewogICBpZiAob3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXyA9
PSBOVUxMKSB7CisjaWZkZWYgR1RFU1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVSXworICAgIG9zX3N0
YWNrX3RyYWNlX2dldHRlcl8gPSBuZXcgR1RFU1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVSXzsKKyNl
bHNlCiAgICAgb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXyA9IG5ldyBPc1N0YWNrVHJhY2VHZXR0ZXI7
CisjZW5kaWYgIC8vIEdURVNUX09TX1NUQUNLX1RSQUNFX0dFVFRFUl8KICAgfQogCiAgIHJldHVy
biBvc19zdGFja190cmFjZV9nZXR0ZXJfOwpAQCAtNDI2NCw3ICs0OTMxLDcgQEAgT3NTdGFja1Ry
YWNlR2V0dGVySW50ZXJmYWNlKiBVbml0VGVzdEltcGw6Om9zX3N0YWNrX3RyYWNlX2dldHRlcigp
IHsKIC8vIHRoZSBUZXN0UmVzdWx0IGZvciB0aGUgYWQgaG9jIHRlc3QgaWYgbm8gdGVzdCBpcyBy
dW5uaW5nLgogVGVzdFJlc3VsdCogVW5pdFRlc3RJbXBsOjpjdXJyZW50X3Rlc3RfcmVzdWx0KCkg
ewogICByZXR1cm4gY3VycmVudF90ZXN0X2luZm9fID8KLSAgICBjdXJyZW50X3Rlc3RfaW5mb18t
PmltcGwoKS0+cmVzdWx0KCkgOiAmYWRfaG9jX3Rlc3RfcmVzdWx0XzsKKyAgICAgICYoY3VycmVu
dF90ZXN0X2luZm9fLT5yZXN1bHRfKSA6ICZhZF9ob2NfdGVzdF9yZXN1bHRfOwogfQogCiAvLyBT
aHVmZmxlcyBhbGwgdGVzdCBjYXNlcywgYW5kIHRoZSB0ZXN0cyB3aXRoaW4gZWFjaCB0ZXN0IGNh
c2UsCkBAIC00MjkzLDMzICs0OTYwLDcgQEAgdm9pZCBVbml0VGVzdEltcGw6OlVuc2h1ZmZsZVRl
c3RzKCkgewogICB9CiB9CiAKLS8vIFRlc3RJbmZvSW1wbCBjb25zdHJ1Y3Rvci4gVGhlIG5ldyBp
bnN0YW5jZSBhc3N1bWVzIG93bmVyc2hpcCBvZiB0aGUgdGVzdAotLy8gZmFjdG9yeSBvYmplY3Qu
Ci1UZXN0SW5mb0ltcGw6OlRlc3RJbmZvSW1wbChUZXN0SW5mbyogcGFyZW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV90ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGFfdGVzdF9jYXNlX2NvbW1lbnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX2NvbW1lbnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBUeXBlSWQgYV9maXh0dXJlX2NsYXNzX2lkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSkgOgotICAgIHBhcmVudF8o
cGFyZW50KSwKLSAgICB0ZXN0X2Nhc2VfbmFtZV8oU3RyaW5nKGFfdGVzdF9jYXNlX25hbWUpKSwK
LSAgICBuYW1lXyhTdHJpbmcoYV9uYW1lKSksCi0gICAgdGVzdF9jYXNlX2NvbW1lbnRfKFN0cmlu
ZyhhX3Rlc3RfY2FzZV9jb21tZW50KSksCi0gICAgY29tbWVudF8oU3RyaW5nKGFfY29tbWVudCkp
LAotICAgIGZpeHR1cmVfY2xhc3NfaWRfKGFfZml4dHVyZV9jbGFzc19pZCksCi0gICAgc2hvdWxk
X3J1bl8oZmFsc2UpLAotICAgIGlzX2Rpc2FibGVkXyhmYWxzZSksCi0gICAgbWF0Y2hlc19maWx0
ZXJfKGZhbHNlKSwKLSAgICBmYWN0b3J5XyhmYWN0b3J5KSB7Ci19Ci0KLS8vIFRlc3RJbmZvSW1w
bCBkZXN0cnVjdG9yLgotVGVzdEluZm9JbXBsOjp+VGVzdEluZm9JbXBsKCkgewotICBkZWxldGUg
ZmFjdG9yeV87Ci19Ci0KLS8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMg
YSBTdHJpbmcuCisvLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFzIGFuIHN0
ZDo6c3RyaW5nLgogLy8KIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMgdG8g
YmUgaW5jbHVkZWQgaXMgc3BlY2lmaWVkIGJ5CiAvLyB0aGUgZ3Rlc3Rfc3RhY2tfdHJhY2VfZGVw
dGggZmxhZy4gIFRoZSBza2lwX2NvdW50IHBhcmFtZXRlcgpAQCAtNDMyOSwxNSArNDk3MCwxNSBA
QCBUZXN0SW5mb0ltcGw6On5UZXN0SW5mb0ltcGwoKSB7CiAvLyBGb3IgZXhhbXBsZSwgaWYgRm9v
KCkgY2FsbHMgQmFyKCksIHdoaWNoIGluIHR1cm4gY2FsbHMKIC8vIEdldEN1cnJlbnRPc1N0YWNr
VHJhY2VFeGNlcHRUb3AoLi4uLCAxKSwgRm9vKCkgd2lsbCBiZSBpbmNsdWRlZCBpbgogLy8gdGhl
IHRyYWNlIGJ1dCBCYXIoKSBhbmQgR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgpIHdv
bid0LgotU3RyaW5nIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoVW5pdFRlc3QqIC8q
dW5pdF90ZXN0Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
c2tpcF9jb3VudCkgeworc3RkOjpzdHJpbmcgR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRv
cChVbml0VGVzdCogLyp1bml0X3Rlc3QqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHNraXBfY291bnQpIHsKICAgLy8gV2UgcGFzcyBza2lwX2NvdW50
ICsgMSB0byBza2lwIHRoaXMgd3JhcHBlciBmdW5jdGlvbiBpbiBhZGRpdGlvbgogICAvLyB0byB3
aGF0IHRoZSB1c2VyIHJlYWxseSB3YW50cyB0byBza2lwLgogICByZXR1cm4gR2V0VW5pdFRlc3RJ
bXBsKCktPkN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3Aoc2tpcF9jb3VudCArIDEpOwogfQog
Ci0vLyBVc2VkIGJ5IHRoZSBHVEVTVF9ISURFX1VOUkVBQ0hBQkxFX0NPREVfIG1hY3JvIHRvIHN1
cHByZXNzIHVucmVhY2hhYmxlCi0vLyBjb2RlIHdhcm5pbmdzLgorLy8gVXNlZCBieSB0aGUgR1RF
U1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyBtYWNybyB0bworLy8g
c3VwcHJlc3MgdW5yZWFjaGFibGUgY29kZSB3YXJuaW5ncy4KIG5hbWVzcGFjZSB7CiBjbGFzcyBD
bGFzc1VuaXF1ZVRvQWx3YXlzVHJ1ZSB7fTsKIH0KQEAgLTQzNzgsNyArNTAxOSw3IEBAIGNvbnN0
IGNoYXIqIFBhcnNlRmxhZ1ZhbHVlKGNvbnN0IGNoYXIqIHN0ciwKICAgaWYgKHN0ciA9PSBOVUxM
IHx8IGZsYWcgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CiAKICAgLy8gVGhlIGZsYWcgbXVzdCBzdGFy
dCB3aXRoICItLSIgZm9sbG93ZWQgYnkgR1RFU1RfRkxBR19QUkVGSVhfLgotICBjb25zdCBTdHJp
bmcgZmxhZ19zdHIgPSBTdHJpbmc6OkZvcm1hdCgiLS0lcyVzIiwgR1RFU1RfRkxBR19QUkVGSVhf
LCBmbGFnKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmxhZ19zdHIgPSBzdGQ6OnN0cmluZygiLS0i
KSArIEdURVNUX0ZMQUdfUFJFRklYXyArIGZsYWc7CiAgIGNvbnN0IHNpemVfdCBmbGFnX2xlbiA9
IGZsYWdfc3RyLmxlbmd0aCgpOwogICBpZiAoc3RybmNtcChzdHIsIGZsYWdfc3RyLmNfc3RyKCks
IGZsYWdfbGVuKSAhPSAwKSByZXR1cm4gTlVMTDsKIApAQCAtNDQ0Myw3ICs1MDg0LDcgQEAgYm9v
bCBQYXJzZUludDMyRmxhZyhjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsIEludDMy
KiB2YWx1ZSkgewogLy8KIC8vIE9uIHN1Y2Nlc3MsIHN0b3JlcyB0aGUgdmFsdWUgb2YgdGhlIGZs
YWcgaW4gKnZhbHVlLCBhbmQgcmV0dXJucwogLy8gdHJ1ZS4gIE9uIGZhaWx1cmUsIHJldHVybnMg
ZmFsc2Ugd2l0aG91dCBjaGFuZ2luZyAqdmFsdWUuCi1ib29sIFBhcnNlU3RyaW5nRmxhZyhjb25z
dCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsIFN0cmluZyogdmFsdWUpIHsKK2Jvb2wgUGFy
c2VTdHJpbmdGbGFnKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgY2hhciogZmxhZywgc3RkOjpzdHJp
bmcqIHZhbHVlKSB7CiAgIC8vIEdldHMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIGFzIGEgc3RyaW5n
LgogICBjb25zdCBjaGFyKiBjb25zdCB2YWx1ZV9zdHIgPSBQYXJzZUZsYWdWYWx1ZShzdHIsIGZs
YWcsIGZhbHNlKTsKIApAQCAtNDQ5NSw3ICs1MTM2LDcgQEAgc3RhdGljIHZvaWQgUHJpbnRDb2xv
ckVuY29kZWQoY29uc3QgY2hhciogc3RyKSB7CiAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Q29sb3JlZFByaW50Zihjb2xvciwgIiVzIiwgU3RyaW5nKHN0ciwgcCAtIHN0cikuY19zdHIoKSk7
CisgICAgQ29sb3JlZFByaW50Zihjb2xvciwgIiVzIiwgc3RkOjpzdHJpbmcoc3RyLCBwKS5jX3N0
cigpKTsKIAogICAgIGNvbnN0IGNoYXIgY2ggPSBwWzFdOwogICAgIHN0ciA9IHAgKyAyOwpAQCAt
NDU0OSw2ICs1MTkwLDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyIGtDb2xvckVuY29kZWRIZWxwTWVz
c2FnZVtdID0KICAgICBHVEVTVF9QQVRIX1NFUF8gIkBZfEBHOkBZRklMRV9QQVRIXUBEXG4iCiAi
ICAgICAgR2VuZXJhdGUgYW4gWE1MIHJlcG9ydCBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5IG9yIHdp
dGggdGhlIGdpdmVuIGZpbGVcbiIKICIgICAgICBuYW1lLiBAWUZJTEVfUEFUSEBEIGRlZmF1bHRz
IHRvIEBHdGVzdF9kZXRhaWxzLnhtbEBELlxuIgorI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxU
U18KKyIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAic3RyZWFtX3Jlc3VsdF90bz1AWUhPU1RA
RzpAWVBPUlRARFxuIgorIiAgICAgIFN0cmVhbSB0ZXN0IHJlc3VsdHMgdG8gdGhlIGdpdmVuIHNl
cnZlci5cbiIKKyNlbmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXwogIlxuIgogIkFz
c2VydGlvbiBCZWhhdmlvcjpcbiIKICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVCAmJiAhR1RFU1Rf
T1NfV0lORE9XUwpAQCAtNDU1OSwxMCArNTIwNCw5IEBAIHN0YXRpYyBjb25zdCBjaGFyIGtDb2xv
ckVuY29kZWRIZWxwTWVzc2FnZVtdID0KICIgICAgICBUdXJuIGFzc2VydGlvbiBmYWlsdXJlcyBp
bnRvIGRlYnVnZ2VyIGJyZWFrLXBvaW50cy5cbiIKICIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklY
XyAidGhyb3dfb25fZmFpbHVyZUBEXG4iCiAiICAgICAgVHVybiBhc3NlcnRpb24gZmFpbHVyZXMg
aW50byBDKysgZXhjZXB0aW9ucy5cbiIKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0iICBARy0tIiBH
VEVTVF9GTEFHX1BSRUZJWF8gImNhdGNoX2V4Y2VwdGlvbnNARFxuIgotIiAgICAgIFN1cHByZXNz
IHBvcC11cHMgY2F1c2VkIGJ5IGV4Y2VwdGlvbnMuXG4iCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1MKKyIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiY2F0Y2hfZXhjZXB0aW9ucz0wQERc
biIKKyIgICAgICBEbyBub3QgcmVwb3J0IGV4Y2VwdGlvbnMgYXMgdGVzdCBmYWlsdXJlcy4gSW5z
dGVhZCwgYWxsb3cgdGhlbVxuIgorIiAgICAgIHRvIGNyYXNoIHRoZSBwcm9ncmFtIG9yIHRocm93
IGEgcG9wLXVwIChvbiBXaW5kb3dzKS5cbiIKICJcbiIKICJFeGNlcHQgZm9yIEBHLS0iIEdURVNU
X0ZMQUdfUFJFRklYXyAibGlzdF90ZXN0c0BELCB5b3UgY2FuIGFsdGVybmF0aXZlbHkgc2V0ICIK
ICAgICAidGhlIGNvcnJlc3BvbmRpbmdcbiIKQEAgLTQ1NzYsNDUgKzUyMjAsODkgQEAgc3RhdGlj
IGNvbnN0IGNoYXIga0NvbG9yRW5jb2RlZEhlbHBNZXNzYWdlW10gPQogIihub3Qgb25lIGluIHlv
dXIgb3duIGNvZGUgb3IgdGVzdHMpLCBwbGVhc2UgcmVwb3J0IGl0IHRvXG4iCiAiQEc8IiBHVEVT
VF9ERVZfRU1BSUxfICI+QEQuXG4iOwogCitib29sIFBhcnNlR29vZ2xlVGVzdEZsYWcoY29uc3Qg
Y2hhciogY29uc3QgYXJnKSB7CisgIHJldHVybiBQYXJzZUJvb2xGbGFnKGFyZywga0Fsc29SdW5E
aXNhYmxlZFRlc3RzRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoYWxz
b19ydW5fZGlzYWJsZWRfdGVzdHMpKSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtCcmVh
a09uRmFpbHVyZUZsYWcsCisgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGJyZWFrX29u
X2ZhaWx1cmUpKSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtDYXRjaEV4Y2VwdGlvbnNG
bGFnLAorICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSkg
fHwKKyAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtDb2xvckZsYWcsICZHVEVTVF9GTEFHKGNv
bG9yKSkgfHwKKyAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtEZWF0aFRlc3RTdHlsZUZsYWcs
CisgICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkpIHx8
CisgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0RlYXRoVGVzdFVzZUZvcmssCisgICAgICAgICAg
ICAgICAgICAgICZHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspKSB8fAorICAgICAgUGFy
c2VTdHJpbmdGbGFnKGFyZywga0ZpbHRlckZsYWcsICZHVEVTVF9GTEFHKGZpbHRlcikpIHx8Cisg
ICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnLAorICAg
ICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KSkg
fHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrTGlzdFRlc3RzRmxhZywgJkdURVNUX0ZMQUco
bGlzdF90ZXN0cykpIHx8CisgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrT3V0cHV0RmxhZywg
JkdURVNUX0ZMQUcob3V0cHV0KSkgfHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrUHJpbnRU
aW1lRmxhZywgJkdURVNUX0ZMQUcocHJpbnRfdGltZSkpIHx8CisgICAgICBQYXJzZUludDMyRmxh
ZyhhcmcsIGtSYW5kb21TZWVkRmxhZywgJkdURVNUX0ZMQUcocmFuZG9tX3NlZWQpKSB8fAorICAg
ICAgUGFyc2VJbnQzMkZsYWcoYXJnLCBrUmVwZWF0RmxhZywgJkdURVNUX0ZMQUcocmVwZWF0KSkg
fHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrU2h1ZmZsZUZsYWcsICZHVEVTVF9GTEFHKHNo
dWZmbGUpKSB8fAorICAgICAgUGFyc2VJbnQzMkZsYWcoYXJnLCBrU3RhY2tUcmFjZURlcHRoRmxh
ZywKKyAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSkg
fHwKKyAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtTdHJlYW1SZXN1bHRUb0ZsYWcsCisgICAg
ICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykpIHx8CisgICAg
ICBQYXJzZUJvb2xGbGFnKGFyZywga1Rocm93T25GYWlsdXJlRmxhZywKKyAgICAgICAgICAgICAg
ICAgICAgJkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkpOworfQorCisjaWYgR1RFU1RfVVNF
X09XTl9GTEFHRklMRV9GTEFHXwordm9pZCBMb2FkRmxhZ3NGcm9tRmlsZShjb25zdCBzdGQ6OnN0
cmluZyYgcGF0aCkgeworICBGSUxFKiBmbGFnZmlsZSA9IHBvc2l4OjpGT3BlbihwYXRoLmNfc3Ry
KCksICJyIik7CisgIGlmICghZmxhZ2ZpbGUpIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAg
ICAgICAgICJVbmFibGUgdG8gb3BlbiBmaWxlIFwiJXNcIlxuIiwKKyAgICAgICAgICAgIEdURVNU
X0ZMQUcoZmxhZ2ZpbGUpLmNfc3RyKCkpOworICAgIGZmbHVzaChzdGRlcnIpOworICAgIGV4aXQo
RVhJVF9GQUlMVVJFKTsKKyAgfQorICBzdGQ6OnN0cmluZyBjb250ZW50cyhSZWFkRW50aXJlRmls
ZShmbGFnZmlsZSkpOworICBwb3NpeDo6RkNsb3NlKGZsYWdmaWxlKTsKKyAgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IGxpbmVzOworICBTcGxpdFN0cmluZyhjb250ZW50cywgJ1xuJywgJmxpbmVz
KTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaW5lcy5zaXplKCk7ICsraSkgeworICAgIGlm
IChsaW5lc1tpXS5lbXB0eSgpKQorICAgICAgY29udGludWU7CisgICAgaWYgKCFQYXJzZUdvb2ds
ZVRlc3RGbGFnKGxpbmVzW2ldLmNfc3RyKCkpKQorICAgICAgZ19oZWxwX2ZsYWcgPSB0cnVlOwor
ICB9Cit9CisjZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KKwogLy8gUGFy
c2VzIHRoZSBjb21tYW5kIGxpbmUgZm9yIEdvb2dsZSBUZXN0IGZsYWdzLCB3aXRob3V0IGluaXRp
YWxpemluZwogLy8gb3RoZXIgcGFydHMgb2YgR29vZ2xlIFRlc3QuICBUaGUgdHlwZSBwYXJhbWV0
ZXIgQ2hhclR5cGUgY2FuIGJlCiAvLyBpbnN0YW50aWF0ZWQgdG8gZWl0aGVyIGNoYXIgb3Igd2No
YXJfdC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KIHZvaWQgUGFyc2VHb29nbGVUZXN0
RmxhZ3NPbmx5SW1wbChpbnQqIGFyZ2MsIENoYXJUeXBlKiogYXJndikgewogICBmb3IgKGludCBp
ID0gMTsgaSA8ICphcmdjOyBpKyspIHsKLSAgICBjb25zdCBTdHJpbmcgYXJnX3N0cmluZyA9IFN0
cmVhbWFibGVUb1N0cmluZyhhcmd2W2ldKTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBhcmdfc3Ry
aW5nID0gU3RyZWFtYWJsZVRvU3RyaW5nKGFyZ3ZbaV0pOwogICAgIGNvbnN0IGNoYXIqIGNvbnN0
IGFyZyA9IGFyZ19zdHJpbmcuY19zdHIoKTsKIAogICAgIHVzaW5nIGludGVybmFsOjpQYXJzZUJv
b2xGbGFnOwogICAgIHVzaW5nIGludGVybmFsOjpQYXJzZUludDMyRmxhZzsKICAgICB1c2luZyBp
bnRlcm5hbDo6UGFyc2VTdHJpbmdGbGFnOwogCi0gICAgLy8gRG8gd2Ugc2VlIGEgR29vZ2xlIFRl
c3QgZmxhZz8KLSAgICBpZiAoUGFyc2VCb29sRmxhZyhhcmcsIGtBbHNvUnVuRGlzYWJsZWRUZXN0
c0ZsYWcsCi0gICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJs
ZWRfdGVzdHMpKSB8fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0JyZWFrT25GYWlsdXJl
RmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJl
KSkgfHwKLSAgICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtDYXRjaEV4Y2VwdGlvbnNGbGFnLAot
ICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKSB8fAot
ICAgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrQ29sb3JGbGFnLCAmR1RFU1RfRkxBRyhjb2xv
cikpIHx8Ci0gICAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtEZWF0aFRlc3RTdHlsZUZsYWcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSkg
fHwKLSAgICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtEZWF0aFRlc3RVc2VGb3JrLAotICAgICAg
ICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspKSB8fAotICAg
ICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrRmlsdGVyRmxhZywgJkdURVNUX0ZMQUcoZmlsdGVy
KSkgfHwKLSAgICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga0ludGVybmFsUnVuRGVhdGhUZXN0
RmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGludGVybmFsX3J1bl9k
ZWF0aF90ZXN0KSkgfHwKLSAgICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtMaXN0VGVzdHNGbGFn
LCAmR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSkgfHwKLSAgICAgICAgUGFyc2VTdHJpbmdGbGFnKGFy
Zywga091dHB1dEZsYWcsICZHVEVTVF9GTEFHKG91dHB1dCkpIHx8Ci0gICAgICAgIFBhcnNlQm9v
bEZsYWcoYXJnLCBrUHJpbnRUaW1lRmxhZywgJkdURVNUX0ZMQUcocHJpbnRfdGltZSkpIHx8Ci0g
ICAgICAgIFBhcnNlSW50MzJGbGFnKGFyZywga1JhbmRvbVNlZWRGbGFnLCAmR1RFU1RfRkxBRyhy
YW5kb21fc2VlZCkpIHx8Ci0gICAgICAgIFBhcnNlSW50MzJGbGFnKGFyZywga1JlcGVhdEZsYWcs
ICZHVEVTVF9GTEFHKHJlcGVhdCkpIHx8Ci0gICAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrU2h1
ZmZsZUZsYWcsICZHVEVTVF9GTEFHKHNodWZmbGUpKSB8fAotICAgICAgICBQYXJzZUludDMyRmxh
ZyhhcmcsIGtTdGFja1RyYWNlRGVwdGhGbGFnLAotICAgICAgICAgICAgICAgICAgICAgICAmR1RF
U1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkpIHx8Ci0gICAgICAgIFBhcnNlQm9vbEZsYWcoYXJn
LCBrVGhyb3dPbkZhaWx1cmVGbGFnLCAmR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSkKLSAg
ICAgICAgKSB7Ci0gICAgICAvLyBZZXMuICBTaGlmdCB0aGUgcmVtYWluZGVyIG9mIHRoZSBhcmd2
IGxpc3QgbGVmdCBieSBvbmUuICBOb3RlCisgICAgYm9vbCByZW1vdmVfZmxhZyA9IGZhbHNlOwor
ICAgIGlmIChQYXJzZUdvb2dsZVRlc3RGbGFnKGFyZykpIHsKKyAgICAgIHJlbW92ZV9mbGFnID0g
dHJ1ZTsKKyNpZiBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCisgICAgfSBlbHNlIGlmIChQ
YXJzZVN0cmluZ0ZsYWcoYXJnLCBrRmxhZ2ZpbGVGbGFnLCAmR1RFU1RfRkxBRyhmbGFnZmlsZSkp
KSB7CisgICAgICBMb2FkRmxhZ3NGcm9tRmlsZShHVEVTVF9GTEFHKGZsYWdmaWxlKSk7CisgICAg
ICByZW1vdmVfZmxhZyA9IHRydWU7CisjZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVf
RkxBR18KKyAgICB9IGVsc2UgaWYgKGFyZ19zdHJpbmcgPT0gIi0taGVscCIgfHwgYXJnX3N0cmlu
ZyA9PSAiLWgiIHx8CisgICAgICAgICAgICAgICBhcmdfc3RyaW5nID09ICItPyIgfHwgYXJnX3N0
cmluZyA9PSAiLz8iIHx8CisgICAgICAgICAgICAgICBIYXNHb29nbGVUZXN0RmxhZ1ByZWZpeChh
cmcpKSB7CisgICAgICAvLyBCb3RoIGhlbHAgZmxhZyBhbmQgdW5yZWNvZ25pemVkIEdvb2dsZSBU
ZXN0IGZsYWdzIChleGNsdWRpbmcKKyAgICAgIC8vIGludGVybmFsIG9uZXMpIHRyaWdnZXIgaGVs
cCBkaXNwbGF5LgorICAgICAgZ19oZWxwX2ZsYWcgPSB0cnVlOworICAgIH0KKworICAgIGlmIChy
ZW1vdmVfZmxhZykgeworICAgICAgLy8gU2hpZnQgdGhlIHJlbWFpbmRlciBvZiB0aGUgYXJndiBs
aXN0IGxlZnQgYnkgb25lLiAgTm90ZQogICAgICAgLy8gdGhhdCBhcmd2IGhhcyAoKmFyZ2MgKyAx
KSBlbGVtZW50cywgdGhlIGxhc3Qgb25lIGFsd2F5cyBiZWluZwogICAgICAgLy8gTlVMTC4gIFRo
ZSBmb2xsb3dpbmcgbG9vcCBtb3ZlcyB0aGUgdHJhaWxpbmcgTlVMTCBlbGVtZW50IGFzCiAgICAg
ICAvLyB3ZWxsLgpAQCAtNDYyOCwxMiArNTMxNiw2IEBAIHZvaWQgUGFyc2VHb29nbGVUZXN0Rmxh
Z3NPbmx5SW1wbChpbnQqIGFyZ2MsIENoYXJUeXBlKiogYXJndikgewogICAgICAgLy8gV2UgYWxz
byBuZWVkIHRvIGRlY3JlbWVudCB0aGUgaXRlcmF0b3IgYXMgd2UganVzdCByZW1vdmVkCiAgICAg
ICAvLyBhbiBlbGVtZW50LgogICAgICAgaS0tOwotICAgIH0gZWxzZSBpZiAoYXJnX3N0cmluZyA9
PSAiLS1oZWxwIiB8fCBhcmdfc3RyaW5nID09ICItaCIgfHwKLSAgICAgICAgICAgICAgIGFyZ19z
dHJpbmcgPT0gIi0/IiB8fCBhcmdfc3RyaW5nID09ICIvPyIgfHwKLSAgICAgICAgICAgICAgIEhh
c0dvb2dsZVRlc3RGbGFnUHJlZml4KGFyZykpIHsKLSAgICAgIC8vIEJvdGggaGVscCBmbGFnIGFu
ZCB1bnJlY29nbml6ZWQgR29vZ2xlIFRlc3QgZmxhZ3MgKGV4Y2x1ZGluZwotICAgICAgLy8gaW50
ZXJuYWwgb25lcykgdHJpZ2dlciBoZWxwIGRpc3BsYXkuCi0gICAgICBnX2hlbHBfZmxhZyA9IHRy
dWU7CiAgICAgfQogICB9CiAKQEAgLTQ2NjAsMjEgKzUzNDIsMTUgQEAgdm9pZCBQYXJzZUdvb2ds
ZVRlc3RGbGFnc09ubHkoaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndikgewogLy8gd2NoYXJfdC4K
IHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KIHZvaWQgSW5pdEdvb2dsZVRlc3RJbXBsKGlu
dCogYXJnYywgQ2hhclR5cGUqKiBhcmd2KSB7Ci0gIGdfaW5pdF9ndGVzdF9jb3VudCsrOwotCiAg
IC8vIFdlIGRvbid0IHdhbnQgdG8gcnVuIHRoZSBpbml0aWFsaXphdGlvbiBjb2RlIHR3aWNlLgot
ICBpZiAoZ19pbml0X2d0ZXN0X2NvdW50ICE9IDEpIHJldHVybjsKKyAgaWYgKEdUZXN0SXNJbml0
aWFsaXplZCgpKSByZXR1cm47CiAKICAgaWYgKCphcmdjIDw9IDApIHJldHVybjsKIAotICBpbnRl
cm5hbDo6Z19leGVjdXRhYmxlX3BhdGggPSBpbnRlcm5hbDo6U3RyZWFtYWJsZVRvU3RyaW5nKGFy
Z3ZbMF0pOwotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKICAgZ19hcmd2cy5jbGVhcigpOwog
ICBmb3IgKGludCBpID0gMDsgaSAhPSAqYXJnYzsgaSsrKSB7CiAgICAgZ19hcmd2cy5wdXNoX2Jh
Y2soU3RyZWFtYWJsZVRvU3RyaW5nKGFyZ3ZbaV0pKTsKICAgfQotI2VuZGlmICAvLyBHVEVTVF9I
QVNfREVBVEhfVEVTVAogCiAgIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seShhcmdjLCBhcmd2KTsK
ICAgR2V0VW5pdFRlc3RJbXBsKCktPlBvc3RGbGFnUGFyc2luZ0luaXQoKTsKQEAgLTQ2OTIsMTMg
KzUzNjgsMjEgQEAgdm9pZCBJbml0R29vZ2xlVGVzdEltcGwoaW50KiBhcmdjLCBDaGFyVHlwZSoq
IGFyZ3YpIHsKIC8vCiAvLyBDYWxsaW5nIHRoZSBmdW5jdGlvbiBmb3IgdGhlIHNlY29uZCB0aW1l
IGhhcyBubyB1c2VyLXZpc2libGUgZWZmZWN0Lgogdm9pZCBJbml0R29vZ2xlVGVzdChpbnQqIGFy
Z2MsIGNoYXIqKiBhcmd2KSB7CisjaWYgZGVmaW5lZChHVEVTVF9DVVNUT01fSU5JVF9HT09HTEVf
VEVTVF9GVU5DVElPTl8pCisgIEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9O
XyhhcmdjLCBhcmd2KTsKKyNlbHNlICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9JTklUX0dPT0dM
RV9URVNUX0ZVTkNUSU9OXykKICAgaW50ZXJuYWw6OkluaXRHb29nbGVUZXN0SW1wbChhcmdjLCBh
cmd2KTsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9G
VU5DVElPTl8pCiB9CiAKIC8vIFRoaXMgb3ZlcmxvYWRlZCB2ZXJzaW9uIGNhbiBiZSB1c2VkIGlu
IFdpbmRvd3MgcHJvZ3JhbXMgY29tcGlsZWQgaW4KIC8vIFVOSUNPREUgbW9kZS4KIHZvaWQgSW5p
dEdvb2dsZVRlc3QoaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndikgeworI2lmIGRlZmluZWQoR1RF
U1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQorICBHVEVTVF9DVVNUT01fSU5J
VF9HT09HTEVfVEVTVF9GVU5DVElPTl8oYXJnYywgYXJndik7CisjZWxzZSAgLy8gZGVmaW5lZChH
VEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8pCiAgIGludGVybmFsOjpJbml0
R29vZ2xlVGVzdEltcGwoYXJnYywgYXJndik7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfQ1VT
VE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQogfQogCiB9ICAvLyBuYW1lc3BhY2UgdGVz
dGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0X21haW4u
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3RfbWFpbi5jYwppbmRleCBkMjBj
MDJmZGZiMGE5NDYxZGNjMmEyNzg5YzQ5MjJiNWIzMDU2MzUyLi5mMzAyODIyNTUyMzMwNmViOTY0
OGY5NGJjYmU5ZTNhNzgwMTZiYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zcmMvZ3Rlc3RfbWFpbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rl
c3RfbWFpbi5jYwpAQCAtMjcsMTMgKzI3LDEyIEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKLSNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDxzdGRpby5oPgogCi0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7
Ci0gIHN0ZDo6Y291dCA8PCAiUnVubmluZyBtYWluKCkgZnJvbSBndGVzdF9tYWluLmNjXG4iOwor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKK0dURVNUX0FQSV8gaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIgKiphcmd2KSB7CisgIHByaW50ZigiUnVubmluZyBtYWluKCkgZnJvbSBndGVzdF9tYWlu
LmNjXG4iKTsKICAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwogICByZXR1
cm4gUlVOX0FMTF9URVNUUygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTBhMTNk
NWUyZTE0ZjQ2YzU1MmFiMmIxMDc2NDA5MWY4NWUyNzViCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MKQEAg
LTAsMCArMSw5MyBAQAorLy8gQ29weXJpZ2h0IDIwMTAsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0
OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8v
CisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorLy8KKy8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKy8vCisvLyBU
ZXN0cyB0aGF0IHZlcmlmeSBpbnRlcmFjdGlvbiBvZiBleGNlcHRpb25zIGFuZCBkZWF0aCB0ZXN0
cy4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaCIKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgorCisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworIyBpZiBHVEVTVF9IQVNf
U0VICisjICBpbmNsdWRlIDx3aW5kb3dzLmg+ICAgICAgICAgIC8vIEZvciBSYWlzZUV4Y2VwdGlv
bigpLgorIyBlbmRpZgorCisjIGluY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgorCisjIGlmIEdU
RVNUX0hBU19FWENFUFRJT05TCisKKyMgIGluY2x1ZGUgPGV4Y2VwdGlvbj4gIC8vIEZvciBzdGQ6
OmV4Y2VwdGlvbi4KKworLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyByZXBvcnQgdGhyb3duIGV4
Y2VwdGlvbnMgYXMgZmFpbHVyZXMgYW5kIHRoYXQgdGhlCisvLyBleGNlcHRpb25zIGRvIG5vdCBl
c2NhcGUgZGVhdGggdGVzdCBtYWNyb3MuCitURVNUKEN4eEV4Y2VwdGlvbkRlYXRoVGVzdCwgRXhj
ZXB0aW9uSXNGYWlsdXJlKSB7CisgIHRyeSB7CisgICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX0RFQVRIKHRocm93IDEsICIiKSwgInRocmV3IGFuIGV4Y2VwdGlvbiIpOworICB9IGNh
dGNoICguLi4pIHsgIC8vIE5PTElOVAorICAgIEZBSUwoKSA8PCAiQW4gZXhjZXB0aW9uIGVzY2Fw
ZWQgYSBkZWF0aCB0ZXN0IG1hY3JvIGludm9jYXRpb24gIgorICAgICAgICAgICA8PCAid2l0aCBj
YXRjaF9leGNlcHRpb25zICIKKyAgICAgICAgICAgPDwgKHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0
Y2hfZXhjZXB0aW9ucykgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKKyAgfQorfQorCitjbGFz
cyBUZXN0RXhjZXB0aW9uIDogcHVibGljIHN0ZDo6ZXhjZXB0aW9uIHsKKyBwdWJsaWM6CisgIHZp
cnR1YWwgY29uc3QgY2hhciogd2hhdCgpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gImV4Y2VwdGlv
bmFsIG1lc3NhZ2UiOyB9Cit9OworCitURVNUKEN4eEV4Y2VwdGlvbkRlYXRoVGVzdCwgUHJpbnRz
TWVzc2FnZUZvclN0ZEV4Y2VwdGlvbnMpIHsKKyAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgZXhjZXB0
aW9uIG1lc3NhZ2UgaXMgcXVvdGVkIGluIHRoZSBmYWlsdXJlIHRleHQuCisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9ERUFUSCh0aHJvdyBUZXN0RXhjZXB0aW9uKCksICIiKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbmFsIG1lc3NhZ2UiKTsKKyAgLy8gVmVy
aWZpZXMgdGhhdCB0aGUgbG9jYXRpb24gaXMgbWVudGlvbmVkIGluIHRoZSBmYWlsdXJlIHRleHQu
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ERUFUSCh0aHJvdyBUZXN0RXhjZXB0
aW9uKCksICIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImd0ZXN0LWRlYXRoLXRlc3Rf
ZXhfdGVzdC5jYyIpOworfQorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworIyBp
ZiBHVEVTVF9IQVNfU0VICisvLyBUZXN0cyB0aGF0IGVuYWJsaW5nIGludGVyY2VwdGlvbiBvZiBT
RUggZXhjZXB0aW9ucyB3aXRoIHRoZQorLy8gY2F0Y2hfZXhjZXB0aW9ucyBmbGFnIGRvZXMgbm90
IGludGVyZmVyZSB3aXRoIFNFSCBleGNlcHRpb25zIGJlaW5nCisvLyB0cmVhdGVkIGFzIGRlYXRo
IGJ5IGRlYXRoIHRlc3RzLgorVEVTVChTZWhFeGNlcHRpb25EZWFzVGVzdCwgQ2F0Y2hFeGNlcHRp
b25zRG9lc05vdEludGVyZmVyZSkgeworICBFWFBFQ1RfREVBVEgoUmFpc2VFeGNlcHRpb24oNDIs
IDB4MCwgMCwgTlVMTCksICIiKQorICAgICAgPDwgIndpdGggY2F0Y2hfZXhjZXB0aW9ucyAiCisg
ICAgICA8PCAodGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA/ICJlbmFibGVk
IiA6ICJkaXNhYmxlZCIpOworfQorIyBlbmRpZgorCisjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFU
SF9URVNUCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICB0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hf
ZXhjZXB0aW9ucykgPSBHVEVTVF9FTkFCTEVfQ0FUQ0hfRVhDRVBUSU9OU18gIT0gMDsKKyAgcmV0
dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2MKaW5kZXggZWQ1YjUzYjcxYWYyZjc5NTYw
ZDcxNzJhYTY3Y2M3NDBiYTcwNDAxMS4uYmI0YTNkMWIzODgyMmU2Y2E2NGExZWUzM2Y2NGJjYTc2
YWYxOGE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1k
ZWF0aC10ZXN0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dC1kZWF0aC10ZXN0X3Rlc3QuY2MKQEAgLTMxLDM3ICszMSw0MCBAQAogLy8KIC8vIFRlc3RzIGZv
ciBkZWF0aCB0ZXN0cy4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaD4KLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWZp
bGVwYXRoLmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgorI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGgu
aCIKIAogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlOwogdXNpbmcgdGVzdGlu
Zzo6aW50ZXJuYWw6OkFsd2F5c1RydWU7CiAKICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogCi0j
aWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1ZGUgPGRpcmVjdC5oPiAgICAgICAgICAvLyBGb3Ig
Y2hkaXIoKS4KLSNlbHNlCi0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8c3lzL3dhaXQu
aD4gICAgICAgIC8vIEZvciB3YWl0cGlkLgotI2luY2x1ZGUgPGxpbWl0cz4gICAgICAgICAgICAv
LyBGb3Igc3RkOjpudW1lcmljX2xpbWl0cy4KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwor
IyBpZiBHVEVTVF9PU19XSU5ET1dTCisjICBpbmNsdWRlIDxkaXJlY3QuaD4gICAgICAgICAgLy8g
Rm9yIGNoZGlyKCkuCisjIGVsc2UKKyMgIGluY2x1ZGUgPHVuaXN0ZC5oPgorIyAgaW5jbHVkZSA8
c3lzL3dhaXQuaD4gICAgICAgIC8vIEZvciB3YWl0cGlkLgorIyBlbmRpZiAgLy8gR1RFU1RfT1Nf
V0lORE9XUwogCi0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0jaW5j
bHVkZSA8c3RkaW8uaD4KKyMgaW5jbHVkZSA8bGltaXRzLmg+CisjIGluY2x1ZGUgPHNpZ25hbC5o
PgorIyBpbmNsdWRlIDxzdGRpby5oPgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+Cisj
IGlmIEdURVNUX09TX0xJTlVYCisjICBpbmNsdWRlIDxzeXMvdGltZS5oPgorIyBlbmRpZiAgLy8g
R1RFU1RfT1NfTElOVVgKKworIyBpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKIAogLy8gSW5k
aWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3Qn
cwogLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFs
LWlubC5oIGlzCiAvLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9y
LiAgVGhpcyB0cmljayBpcyB0bwogLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkg
aW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCiAvLyBoaXMgY29kZS4KLSNkZWZpbmUg
R1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5s
LmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCisjIGRlZmluZSBHVEVTVF9JTVBMRU1F
TlRBVElPTl8gMQorIyBpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCisjIHVuZGVm
IEdURVNUX0lNUExFTUVOVEFUSU9OXwogCiBuYW1lc3BhY2UgcG9zaXggPSA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpwb3NpeDsKIApAQCAtNzEsOCArNzQsOCBAQCB1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6RGVhdGhUZXN0RmFjdG9yeTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpGaWxlUGF0aDsK
IHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRMYXN0RXJybm9EZXNjcmlwdGlvbjsKIHVzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjpHZXRVbml0VGVzdEltcGw7Cit1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6SW5EZWF0aFRlc3RDaGlsZDsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpQYXJzZU5h
dHVyYWxOdW1iZXI7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOwogCiBuYW1lc3Bh
Y2UgdGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewpAQCAtMTAzLDkgKzEwNiwxMCBAQCBj
bGFzcyBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSB7CiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwK
IH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAKLXZvaWQgRGllSW5zaWRlKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uKSB7Ci0gIGZwcmludGYoc3RkZXJyLCAiZGVhdGggaW5zaWRlICVzKCkuIiwgZnVuY3Rp
b24pOwotICBmZmx1c2goc3RkZXJyKTsKK3ZvaWQgRGllV2l0aE1lc3NhZ2UoY29uc3QgOjpzdGQ6
OnN0cmluZyYgbWVzc2FnZSkgeworICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgbWVzc2FnZS5jX3N0
cigpKTsKKyAgZmZsdXNoKHN0ZGVycik7ICAvLyBNYWtlIHN1cmUgdGhlIHRleHQgaXMgcHJpbnRl
ZCBiZWZvcmUgdGhlIHByb2Nlc3MgZXhpdHMuCisKICAgLy8gV2UgY2FsbCBfZXhpdCgpIGluc3Rl
YWQgb2YgZXhpdCgpLCBhcyB0aGUgZm9ybWVyIGlzIGEgZGlyZWN0CiAgIC8vIHN5c3RlbSBjYWxs
IGFuZCB0aHVzIHNhZmVyIGluIHRoZSBwcmVzZW5jZSBvZiB0aHJlYWRzLiAgZXhpdCgpCiAgIC8v
IHdpbGwgaW52b2tlIHVzZXItZGVmaW5lZCBleGl0LWhvb2tzLCB3aGljaCBtYXkgZG8gZGFuZ2Vy
b3VzCkBAIC0xMTgsNiArMTIyLDEwIEBAIHZvaWQgRGllSW5zaWRlKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uKSB7CiAgICAgX2V4aXQoMSk7CiB9CiAKK3ZvaWQgRGllSW5zaWRlKGNvbnN0IDo6c3RkOjpz
dHJpbmcmIGZ1bmN0aW9uKSB7CisgIERpZVdpdGhNZXNzYWdlKCJkZWF0aCBpbnNpZGUgIiArIGZ1
bmN0aW9uICsgIigpLiIpOworfQorCiAvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHdvcmsuCiAK
IGNsYXNzIFRlc3RGb3JEZWF0aFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CkBAIC0xOTAs
MTMgKzE5OCwxNyBAQCB2b2lkIERlYXRoVGVzdFN1YnJvdXRpbmUoKSB7CiAvLyBEZWF0aCBpbiBk
YmcsIG5vdCBvcHQuCiBpbnQgRGllSW5EZWJ1Z0Vsc2UxMihpbnQqIHNpZGVlZmZlY3QpIHsKICAg
aWYgKHNpZGVlZmZlY3QpICpzaWRlZWZmZWN0ID0gMTI7Ci0jaWZuZGVmIE5ERUJVRworCisjIGlm
bmRlZiBOREVCVUcKKwogICBEaWVJbnNpZGUoIkRpZUluRGVidWdFbHNlMTIiKTsKLSNlbmRpZiAg
Ly8gTkRFQlVHCisKKyMgZW5kaWYgIC8vIE5ERUJVRworCiAgIHJldHVybiAxMjsKIH0KIAotI2lm
IEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lORE9XUwogCiAvLyBUZXN0cyB0aGUg
RXhpdGVkV2l0aENvZGUgcHJlZGljYXRlLgogVEVTVChFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCwg
RXhpdGVkV2l0aENvZGUpIHsKQEAgLTIwOSw3ICsyMjEsNyBAQCBURVNUKEV4aXRTdGF0dXNQcmVk
aWNhdGVUZXN0LCBFeGl0ZWRXaXRoQ29kZSkgewogICBFWFBFQ1RfRkFMU0UodGVzdGluZzo6RXhp
dGVkV2l0aENvZGUoMSkoMCkpOwogfQogCi0jZWxzZQorIyBlbHNlCiAKIC8vIFJldHVybnMgdGhl
IGV4aXQgc3RhdHVzIG9mIGEgcHJvY2VzcyB0aGF0IGNhbGxzIF9leGl0KDIpIHdpdGggYQogLy8g
Z2l2ZW4gZXhpdCBjb2RlLiAgVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgdGhlCkBAIC0y
NjgsNyArMjgwLDcgQEAgVEVTVChFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCwgS2lsbGVkQnlTaWdu
YWwpIHsKICAgRVhQRUNUX0ZBTFNFKHByZWRfa2lsbChzdGF0dXNfc2VndikpOwogfQogCi0jZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAog
Ly8gVGVzdHMgdGhhdCB0aGUgZGVhdGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUgd2hpY2gg
bWF5IG9yIG1heSBub3QKIC8vIGJlIGZvbGxvd2VkIGJ5IG9wZXJhdG9yPDwsIGFuZCB0aGF0IGlu
IGVpdGhlciBjYXNlIHRoZSBjb21wbGV0ZSB0ZXh0CkBAIC0zMDAsNyArMzEyLDcgQEAgdm9pZCBE
aWVXaXRoRW1iZWRkZWROdWwoKSB7CiAgIF9leGl0KDEpOwogfQogCi0jaWYgR1RFU1RfVVNFU19Q
Q1JFCisjIGlmIEdURVNUX1VTRVNfUENSRQogLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEggYW5k
IEFTU0VSVF9ERUFUSCB3b3JrIHdoZW4gdGhlIGVycm9yCiAvLyBtZXNzYWdlIGhhcyBhIE5VTCBj
aGFyYWN0ZXIgaW4gaXQuCiBURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRW1iZWRkZWROdWxJbk1l
c3NhZ2UpIHsKQEAgLTMwOSwxNyArMzIxLDE0IEBAIFRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBF
bWJlZGRlZE51bEluTWVzc2FnZSkgewogICBFWFBFQ1RfREVBVEgoRGllV2l0aEVtYmVkZGVkTnVs
KCksICJteSBudWxsIHdvcmxkIik7CiAgIEFTU0VSVF9ERUFUSChEaWVXaXRoRW1iZWRkZWROdWwo
KSwgIm15IG51bGwgd29ybGQiKTsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfVVNFU19QQ1JFCisjIGVu
ZGlmICAvLyBHVEVTVF9VU0VTX1BDUkUKIAogLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0IG1hY3Jv
cyBleHBhbmQgdG8gY29kZSB3aGljaCBpbnRlcmFjdHMgd2VsbCB3aXRoIHN3aXRjaAogLy8gc3Rh
dGVtZW50cy4KIFRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTd2l0Y2hTdGF0ZW1lbnQpIHsKLS8v
IE1pY3Jvc29mdCBjb21waWxlciB1c3VhbGx5IGNvbXBsYWlucyBhYm91dCBzd2l0Y2ggc3RhdGVt
ZW50cyB3aXRob3V0Ci0vLyBjYXNlIGxhYmVscy4gV2Ugc3VwcHJlc3MgdGhhdCB3YXJuaW5nIGZv
ciB0aGlzIHRlc3QuCi0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3By
YWdtYSB3YXJuaW5nKGRpc2FibGU6IDQwNjUpCi0jZW5kaWYgIC8vIF9NU0NfVkVSCisgIC8vIE1p
Y3Jvc29mdCBjb21waWxlciB1c3VhbGx5IGNvbXBsYWlucyBhYm91dCBzd2l0Y2ggc3RhdGVtZW50
cyB3aXRob3V0CisgIC8vIGNhc2UgbGFiZWxzLiBXZSBzdXBwcmVzcyB0aGF0IHdhcm5pbmcgZm9y
IHRoaXMgdGVzdC4KKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDA2NSkKIAog
ICBzd2l0Y2ggKDApCiAgICAgZGVmYXVsdDoKQEAgLTMyOSw5ICszMzgsNyBAQCBURVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgU3dpdGNoU3RhdGVtZW50KSB7CiAgICAgY2FzZSAwOgogICAgICAgRVhQ
RUNUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgImV4aXQgaW4gc3dpdGNoIGNhc2UiOwogCi0jaWZk
ZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYgIC8vIF9NU0NfVkVSCisg
IEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQogfQogCiAvLyBUZXN0cyB0aGF0IGEg
c3RhdGljIG1lbWJlciBmdW5jdGlvbiBjYW4gYmUgdXNlZCBpbiBhICJmYXN0IiBzdHlsZQpAQCAt
MzYzLDYgKzM3MCw1OCBAQCBURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRmFzdERlYXRoVGVzdElu
Q2hhbmdlZERpcikgewogICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIiKTsKIH0KIAorIyBpZiBH
VEVTVF9PU19MSU5VWAordm9pZCBTaWdwcm9mQWN0aW9uKGludCwgc2lnaW5mb190Kiwgdm9pZCop
IHsgLyogbm8gb3AgKi8gfQorCisvLyBTZXRzIFNJR1BST0YgYWN0aW9uIGFuZCBJVElNRVJfUFJP
RiB0aW1lciAoaW50ZXJ2YWw6IDFtcykuCit2b2lkIFNldFNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigp
IHsKKyAgc3RydWN0IGl0aW1lcnZhbCB0aW1lcjsKKyAgdGltZXIuaXRfaW50ZXJ2YWwudHZfc2Vj
ID0gMDsKKyAgdGltZXIuaXRfaW50ZXJ2YWwudHZfdXNlYyA9IDE7CisgIHRpbWVyLml0X3ZhbHVl
ID0gdGltZXIuaXRfaW50ZXJ2YWw7CisgIEFTU0VSVF9FUSgwLCBzZXRpdGltZXIoSVRJTUVSX1BS
T0YsICZ0aW1lciwgTlVMTCkpOworICBzdHJ1Y3Qgc2lnYWN0aW9uIHNpZ25hbF9hY3Rpb247Cisg
IG1lbXNldCgmc2lnbmFsX2FjdGlvbiwgMCwgc2l6ZW9mKHNpZ25hbF9hY3Rpb24pKTsKKyAgc2ln
ZW1wdHlzZXQoJnNpZ25hbF9hY3Rpb24uc2FfbWFzayk7CisgIHNpZ25hbF9hY3Rpb24uc2Ffc2ln
YWN0aW9uID0gU2lncHJvZkFjdGlvbjsKKyAgc2lnbmFsX2FjdGlvbi5zYV9mbGFncyA9IFNBX1JF
U1RBUlQgfCBTQV9TSUdJTkZPOworICBBU1NFUlRfRVEoMCwgc2lnYWN0aW9uKFNJR1BST0YsICZz
aWduYWxfYWN0aW9uLCBOVUxMKSk7Cit9CisKKy8vIERpc2FibGVzIElUSU1FUl9QUk9GIHRpbWVy
IGFuZCBpZ25vcmVzIFNJR1BST0Ygc2lnbmFsLgordm9pZCBEaXNhYmxlU2lncHJvZkFjdGlvbkFu
ZFRpbWVyKHN0cnVjdCBzaWdhY3Rpb24qIG9sZF9zaWduYWxfYWN0aW9uKSB7CisgIHN0cnVjdCBp
dGltZXJ2YWwgdGltZXI7CisgIHRpbWVyLml0X2ludGVydmFsLnR2X3NlYyA9IDA7CisgIHRpbWVy
Lml0X2ludGVydmFsLnR2X3VzZWMgPSAwOworICB0aW1lci5pdF92YWx1ZSA9IHRpbWVyLml0X2lu
dGVydmFsOworICBBU1NFUlRfRVEoMCwgc2V0aXRpbWVyKElUSU1FUl9QUk9GLCAmdGltZXIsIE5V
TEwpKTsKKyAgc3RydWN0IHNpZ2FjdGlvbiBzaWduYWxfYWN0aW9uOworICBtZW1zZXQoJnNpZ25h
bF9hY3Rpb24sIDAsIHNpemVvZihzaWduYWxfYWN0aW9uKSk7CisgIHNpZ2VtcHR5c2V0KCZzaWdu
YWxfYWN0aW9uLnNhX21hc2spOworICBzaWduYWxfYWN0aW9uLnNhX2hhbmRsZXIgPSBTSUdfSUdO
OworICBBU1NFUlRfRVEoMCwgc2lnYWN0aW9uKFNJR1BST0YsICZzaWduYWxfYWN0aW9uLCBvbGRf
c2lnbmFsX2FjdGlvbikpOworfQorCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHdvcmsgd2hl
biBTSUdQUk9GIGhhbmRsZXIgYW5kIHRpbWVyIGFyZSBzZXQuCitURVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgRmFzdFNpZ3Byb2ZBY3Rpb25TZXQpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0
aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAgU2V0U2lncHJvZkFjdGlvbkFuZFRpbWVyKCk7Cisg
IEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOworICBzdHJ1Y3Qgc2lnYWN0aW9uIG9sZF9zaWdu
YWxfYWN0aW9uOworICBEaXNhYmxlU2lncHJvZkFjdGlvbkFuZFRpbWVyKCZvbGRfc2lnbmFsX2Fj
dGlvbik7CisgIEVYUEVDVF9UUlVFKG9sZF9zaWduYWxfYWN0aW9uLnNhX3NpZ2FjdGlvbiA9PSBT
aWdwcm9mQWN0aW9uKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRocmVhZFNhZmVT
aWdwcm9mQWN0aW9uU2V0KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHls
ZSkgPSAidGhyZWFkc2FmZSI7CisgIFNldFNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigpOworICBFWFBF
Q1RfREVBVEgoX2V4aXQoMSksICIiKTsKKyAgc3RydWN0IHNpZ2FjdGlvbiBvbGRfc2lnbmFsX2Fj
dGlvbjsKKyAgRGlzYWJsZVNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigmb2xkX3NpZ25hbF9hY3Rpb24p
OworICBFWFBFQ1RfVFJVRShvbGRfc2lnbmFsX2FjdGlvbi5zYV9zaWdhY3Rpb24gPT0gU2lncHJv
ZkFjdGlvbik7Cit9CisjIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCiAvLyBSZXBlYXRzIGEg
cmVwcmVzZW50YXRpdmUgc2FtcGxlIG9mIGRlYXRoIHRlc3RzIGluIHRoZSAidGhyZWFkc2FmZSIg
c3R5bGU6CiAKIFRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTdGF0aWNNZW1iZXJGdW5jdGlvblRo
cmVhZHNhZmVTdHlsZSkgewpAQCAtNDAwLDYgKzQ1OSw4IEBAIFRFU1RfRihUZXN0Rm9yRGVhdGhU
ZXN0LCBNaXhlZFN0eWxlcykgewogICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKTsKIH0KIAor
IyBpZiBHVEVTVF9IQVNfQ0xPTkUgJiYgR1RFU1RfSEFTX1BUSFJFQUQKKwogbmFtZXNwYWNlIHsK
IAogYm9vbCBwdGhyZWFkX2ZsYWc7CkBAIC00MTAsOCArNDcxLDYgQEAgdm9pZCBTZXRQdGhyZWFk
RmxhZygpIHsKIAogfSAgLy8gbmFtZXNwYWNlCiAKLSNpZiBHVEVTVF9IQVNfQ0xPTkUgJiYgR1RF
U1RfSEFTX1BUSFJFQUQKLQogVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERvZXNOb3RFeGVjdXRl
QXRmb3JrSG9va3MpIHsKICAgaWYgKCF0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNl
X2ZvcmspKSB7CiAgICAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0
aHJlYWRzYWZlIjsKQEAgLTQyMiw3ICs0ODEsNyBAQCBURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
RG9lc05vdEV4ZWN1dGVBdGZvcmtIb29rcykgewogICB9CiB9CiAKLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX0NMT05FICYmIEdURVNUX0hBU19QVEhSRUFECisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ0xP
TkUgJiYgR1RFU1RfSEFTX1BUSFJFQUQKIAogLy8gVGVzdHMgdGhhdCBhIG1ldGhvZCBvZiBhbm90
aGVyIGNsYXNzIGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KIFRFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBNZXRob2RPZkFub3RoZXJDbGFzcykgewpAQCAtNDQ0LDEzICs1MDMsMTkgQEAgVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFjY2VwdHNBbnl0aGluZ0NvbnZlcnRpYmxlVG9SRSkgewog
ICBjb25zdCB0ZXN0aW5nOjppbnRlcm5hbDo6UkUgcmVnZXgocmVnZXhfY19zdHIpOwogICBFWFBF
Q1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXgpOwogCi0jaWYgR1RFU1RfSEFTX0dMT0JB
TF9TVFJJTkcKKyMgaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKwogICBjb25zdCBzdHJpbmcg
cmVnZXhfc3RyKHJlZ2V4X2Nfc3RyKTsKICAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCks
IHJlZ2V4X3N0cik7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKKyMgZW5k
aWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKKyMgaWYgIUdURVNUX1VTRVNfUENSRQog
CiAgIGNvbnN0IDo6c3RkOjpzdHJpbmcgcmVnZXhfc3RkX3N0cihyZWdleF9jX3N0cik7CiAgIEVY
UEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleF9zdGRfc3RyKTsKKworIyBlbmRpZiAg
Ly8gIUdURVNUX1VTRVNfUENSRQogfQogCiAvLyBUZXN0cyB0aGF0IGEgbm9uLXZvaWQgZnVuY3Rp
b24gY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgpAQCAtNTM4LDE3ICs2MDMsMjAgQEAgVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIFNpbmdsZUV2YWx1YXRpb24pIHsKIH0KIAogLy8gVGVzdHMg
dGhhdCBydW4tYXdheSBkZWF0aCB0ZXN0cyBhcmUgcmVwb3J0ZWQgYXMgZmFpbHVyZXMuCi1URVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgUnVuYXdheSkgeworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3Qs
IFJ1bmF3YXlJc0ZhaWx1cmUpIHsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RF
QVRIKHN0YXRpY19jYXN0PHZvaWQ+KDApLCAiRm9vIiksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJmYWlsZWQgdG8gZGllLiIpOworfQogCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHJl
cG9ydCBleGVjdXRpbmcgJ3JldHVybicgaW4gdGhlIHN0YXRlbWVudCBhcworLy8gZmFpbHVyZS4K
K1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBSZXR1cm5Jc0ZhaWx1cmUpIHsKICAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoQVNTRVJUX0RFQVRIKHJldHVybiwgIkJhciIpLAogICAgICAgICAgICAgICAg
ICAgICAgICAiaWxsZWdhbCByZXR1cm4gaW4gdGVzdCBzdGF0ZW1lbnQuIik7CiB9CiAKLQotLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfREVCVUdfREVBVEggd29ya3MgYXMgZXhwZWN0ZWQsCi0vLyB0aGF0
IGlzLCBpbiBkZWJ1ZyBtb2RlLCBpdDoKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQlVHX0RFQVRI
IHdvcmtzIGFzIGV4cGVjdGVkLCB0aGF0IGlzLCB5b3UgY2FuIHN0cmVhbSBhCisvLyBtZXNzYWdl
IHRvIGl0LCBhbmQgaW4gZGVidWcgbW9kZSBpdDoKIC8vIDEuIEFzc2VydHMgb24gZGVhdGguCiAv
LyAyLiBIYXMgbm8gc2lkZSBlZmZlY3QuCiAvLwpAQCAtNTU3LDQ1ICs2MjUsNDkgQEAgVEVTVF9G
KFRlc3RGb3JEZWF0aFRlc3QsIFJ1bmF3YXkpIHsKIFRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBU
ZXN0RXhwZWN0RGVidWdEZWF0aCkgewogICBpbnQgc2lkZWVmZmVjdCA9IDA7CiAKLSAgRVhQRUNU
X0RFQlVHX0RFQVRIKERpZUluRGVidWdFbHNlMTIoJnNpZGVlZmZlY3QpLAotICAgICAgICAgICAg
ICAgICAgICAgImRlYXRoLipEaWVJbkRlYnVnRWxzZTEyIik7CisgIEVYUEVDVF9ERUJVR19ERUFU
SChEaWVJbkRlYnVnRWxzZTEyKCZzaWRlZWZmZWN0KSwgImRlYXRoLipEaWVJbkRlYnVnRWxzZTEy
IikKKyAgICAgIDw8ICJNdXN0IGFjY2VwdCBhIHN0cmVhbWVkIG1lc3NhZ2UiOworCisjIGlmZGVm
IE5ERUJVRwogCi0jaWZkZWYgTkRFQlVHCiAgIC8vIENoZWNrcyB0aGF0IHRoZSBhc3NpZ25tZW50
IG9jY3VycyBpbiBvcHQgbW9kZSAoc2lkZWVmZmVjdCkuCiAgIEVYUEVDVF9FUSgxMiwgc2lkZWVm
ZmVjdCk7Ci0jZWxzZQorCisjIGVsc2UKKwogICAvLyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVu
dCBkb2VzIG5vdCBvY2N1ciBpbiBkYmcgbW9kZSAobm8gc2lkZWVmZmVjdCkuCiAgIEVYUEVDVF9F
USgwLCBzaWRlZWZmZWN0KTsKLSNlbmRpZgorCisjIGVuZGlmCiB9CiAKLS8vIFRlc3RzIHRoYXQg
QVNTRVJUX0RFQlVHX0RFQVRIIHdvcmtzIGFzIGV4cGVjdGVkCi0vLyBJbiBkZWJ1ZyBtb2RlOgot
Ly8gMS4gQXNzZXJ0cyBvbiBkZWJ1ZyBkZWF0aC4KKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQlVH
X0RFQVRIIHdvcmtzIGFzIGV4cGVjdGVkLCB0aGF0IGlzLCB5b3UgY2FuIHN0cmVhbSBhCisvLyBt
ZXNzYWdlIHRvIGl0LCBhbmQgaW4gZGVidWcgbW9kZSBpdDoKKy8vIDEuIEFzc2VydHMgb24gZGVh
dGguCiAvLyAyLiBIYXMgbm8gc2lkZSBlZmZlY3QuCiAvLwotLy8gSW4gb3B0IG1vZGU6Ci0vLyAx
LiBIYXMgc2lkZSBlZmZlY3RzIGFuZCByZXR1cm5zIHRoZSBleHBlY3RlZCB2YWx1ZSAoMTIpLgor
Ly8gQW5kIGluIG9wdCBtb2RlLCBpdDoKKy8vIDEuICBIYXMgc2lkZSBlZmZlY3RzIGJ1dCBkb2Vz
IG5vdCBhc3NlcnQuCiBURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgVGVzdEFzc2VydERlYnVnRGVh
dGgpIHsKICAgaW50IHNpZGVlZmZlY3QgPSAwOwogCi0gIEFTU0VSVF9ERUJVR19ERUFUSCh7ICAv
LyBOT0xJTlQKLSAgICAvLyBUZXN0cyB0aGF0IHRoZSByZXR1cm4gdmFsdWUgaXMgMTIgaW4gb3B0
IG1vZGUuCi0gICAgRVhQRUNUX0VRKDEyLCBEaWVJbkRlYnVnRWxzZTEyKCZzaWRlZWZmZWN0KSk7
Ci0gICAgLy8gVGVzdHMgdGhhdCB0aGUgc2lkZSBlZmZlY3Qgb2NjdXJyZWQgaW4gb3B0IG1vZGUu
Ci0gICAgRVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0KTsKLSAgfSwgImRlYXRoLipEaWVJbkRlYnVn
RWxzZTEyIik7CisgIEFTU0VSVF9ERUJVR19ERUFUSChEaWVJbkRlYnVnRWxzZTEyKCZzaWRlZWZm
ZWN0KSwgImRlYXRoLipEaWVJbkRlYnVnRWxzZTEyIikKKyAgICAgIDw8ICJNdXN0IGFjY2VwdCBh
IHN0cmVhbWVkIG1lc3NhZ2UiOworCisjIGlmZGVmIE5ERUJVRwogCi0jaWZkZWYgTkRFQlVHCiAg
IC8vIENoZWNrcyB0aGF0IHRoZSBhc3NpZ25tZW50IG9jY3VycyBpbiBvcHQgbW9kZSAoc2lkZWVm
ZmVjdCkuCiAgIEVYUEVDVF9FUSgxMiwgc2lkZWVmZmVjdCk7Ci0jZWxzZQorCisjIGVsc2UKKwog
ICAvLyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBkb2VzIG5vdCBvY2N1ciBpbiBkYmcgbW9k
ZSAobm8gc2lkZWVmZmVjdCkuCiAgIEVYUEVDVF9FUSgwLCBzaWRlZWZmZWN0KTsKLSNlbmRpZgor
CisjIGVuZGlmCiB9CiAKLSNpZm5kZWYgTkRFQlVHCisjIGlmbmRlZiBOREVCVUcKIAogdm9pZCBF
eHBlY3REZWJ1Z0RlYXRoSGVscGVyKGJvb2wqIGFib3J0ZWQpIHsKICAgKmFib3J0ZWQgPSB0cnVl
OwpAQCAtNjAzLDcgKzY3NSw3IEBAIHZvaWQgRXhwZWN0RGVidWdEZWF0aEhlbHBlcihib29sKiBh
Ym9ydGVkKSB7CiAgICphYm9ydGVkID0gZmFsc2U7CiB9CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dT
CisjICBpZiBHVEVTVF9PU19XSU5ET1dTCiBURVNUKFBvcFVwRGVhdGhUZXN0LCBEb2VzTm90U2hv
d1BvcFVwT25BYm9ydCkgewogICBwcmludGYoIlRoaXMgdGVzdCBzaG91bGQgYmUgY29uc2lkZXJl
ZCBmYWlsaW5nIGlmIGl0IHNob3dzICIKICAgICAgICAgICJhbnkgcG9wLXVwIGRpYWxvZ3MuXG4i
KTsKQEAgLTYxNCwxOCArNjg2LDcgQEAgVEVTVChQb3BVcERlYXRoVGVzdCwgRG9lc05vdFNob3dQ
b3BVcE9uQWJvcnQpIHsKICAgICBhYm9ydCgpOwogICB9LCAiIik7CiB9Ci0KLVRFU1QoUG9wVXBE
ZWF0aFRlc3QsIERvZXNOb3RTaG93UG9wVXBPblRocm93KSB7Ci0gIHByaW50ZigiVGhpcyB0ZXN0
IHNob3VsZCBiZSBjb25zaWRlcmVkIGZhaWxpbmcgaWYgaXQgc2hvd3MgIgotICAgICAgICAgImFu
eSBwb3AtdXAgZGlhbG9ncy5cbiIpOwotICBmZmx1c2goc3Rkb3V0KTsKLQotICBFWFBFQ1RfREVB
VEgoewotICAgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgPSBmYWxzZTsK
LSAgICB0aHJvdyAxOwotICB9LCAiIik7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MK
KyMgIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKIC8vIFRlc3RzIHRoYXQgRVhQRUNUX0RF
QlVHX0RFQVRIIGluIGRlYnVnIG1vZGUgZG9lcyBub3QgYWJvcnQKIC8vIHRoZSBmdW5jdGlvbi4K
QEAgLTYzNyw3ICs2OTgsMTAgQEAgVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEV4cGVjdERlYnVn
RGVhdGhEb2VzTm90QWJvcnQpIHsKIAogdm9pZCBBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKGJvb2wq
IGFib3J0ZWQpIHsKICAgKmFib3J0ZWQgPSB0cnVlOwotICBBU1NFUlRfREVCVUdfREVBVEgocmV0
dXJuLCAiIikgPDwgIlRoaXMgaXMgZXhwZWN0ZWQgdG8gZmFpbC4iOworICBHVEVTVF9MT0dfKElO
Rk8pIDw8ICJCZWZvcmUgQVNTRVJUX0RFQlVHX0RFQVRIIjsKKyAgQVNTRVJUX0RFQlVHX0RFQVRI
KEdURVNUX0xPR18oSU5GTykgPDwgIkluIEFTU0VSVF9ERUJVR19ERUFUSCI7IHJldHVybiwgIiIp
CisgICAgICA8PCAiVGhpcyBpcyBleHBlY3RlZCB0byBmYWlsLiI7CisgIEdURVNUX0xPR18oSU5G
TykgPDwgIkFmdGVyIEFTU0VSVF9ERUJVR19ERUFUSCI7CiAgICphYm9ydGVkID0gZmFsc2U7CiB9
CiAKQEAgLTY1MCwzMSArNzE0LDk4IEBAIFRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnRE
ZWJ1Z0RlYXRoQWJvcnRzKSB7CiAgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOwogfQogCi0jZW5kaWYg
IC8vIF9OREVCVUcKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJv
cnRzMikgeworICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7
CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
QXNzZXJ0RGVidWdEZWF0aEFib3J0czMpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJv
cnRlZCA9IGZhbHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVs
cGVyKCZhYm9ydGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9G
KFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM0KSB7CisgIHN0YXRpYyBi
b29sIGFib3J0ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
QXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJv
cnRlZCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJv
cnRzNSkgeworICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7
CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
QXNzZXJ0RGVidWdEZWF0aEFib3J0czYpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJv
cnRlZCA9IGZhbHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVs
cGVyKCZhYm9ydGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9G
KFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM3KSB7CisgIHN0YXRpYyBi
b29sIGFib3J0ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
QXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJv
cnRlZCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJv
cnRzOCkgeworICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7
CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
QXNzZXJ0RGVidWdEZWF0aEFib3J0czkpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJv
cnRlZCA9IGZhbHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVs
cGVyKCZhYm9ydGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9G
KFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHMxMCkgeworICBzdGF0aWMg
Ym9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJF
KEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVFKGFi
b3J0ZWQpOworfQorCisjIGVuZGlmICAvLyBfTkRFQlVHCiAKIC8vIFRlc3RzIHRoZSAqX0VYSVQg
ZmFtaWx5IG9mIG1hY3JvcywgdXNpbmcgYSB2YXJpZXR5IG9mIHByZWRpY2F0ZXMuCiBzdGF0aWMg
dm9pZCBUZXN0RXhpdE1hY3JvcygpIHsKICAgRVhQRUNUX0VYSVQoX2V4aXQoMSksICB0ZXN0aW5n
OjpFeGl0ZWRXaXRoQ29kZSgxKSwgICIiKTsKICAgQVNTRVJUX0VYSVQoX2V4aXQoNDIpLCB0ZXN0
aW5nOjpFeGl0ZWRXaXRoQ29kZSg0MiksICIiKTsKIAotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMg
aWYgR1RFU1RfT1NfV0lORE9XUworCiAgIC8vIE9mIGFsbCBzaWduYWxzIGVmZmVjdHMgb24gdGhl
IHByb2Nlc3MgZXhpdCBjb2RlLCBvbmx5IHRob3NlIG9mIFNJR0FCUlQKICAgLy8gYXJlIGRvY3Vt
ZW50ZWQgb24gV2luZG93cy4KICAgLy8gU2VlIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4t
dXMvbGlicmFyeS9kd3d6a3Q0YyhWUy43MSkuYXNweC4KLSAgRVhQRUNUX0VYSVQocmFpc2UoU0lH
QUJSVCksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDMpLCAiIik7Ci0jZWxzZQorICBFWFBFQ1Rf
RVhJVChyYWlzZShTSUdBQlJUKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMyksICIiKSA8PCAi
Yl9hciI7CisKKyMgZWxzZQorCiAgIEVYUEVDVF9FWElUKHJhaXNlKFNJR0tJTEwpLCB0ZXN0aW5n
OjpLaWxsZWRCeVNpZ25hbChTSUdLSUxMKSwgIiIpIDw8ICJmb28iOwogICBBU1NFUlRfRVhJVChy
YWlzZShTSUdVU1IyKSwgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHVVNSMiksICIiKSA8PCAi
YmFyIjsKIAogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKICAgICBBU1NFUlRf
RVhJVChfZXhpdCgwKSwgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHU0VHViksICIiKQotICAg
ICAgICA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCB0b28uIjsKKyAgICAgIDw8ICJUaGlz
IGZhaWx1cmUgaXMgZXhwZWN0ZWQsIHRvby4iOwogICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVj
dGVkLCB0b28uIik7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworIyBlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUwogCiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElO
VAogICAgIEVYUEVDVF9FWElUKHJhaXNlKFNJR1NFR1YpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29k
ZSgwKSwgIiIpCi0gICAgICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIjsKKyAgICAg
IDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIjsKICAgfSwgIlRoaXMgZmFpbHVyZSBpcyBl
eHBlY3RlZC4iKTsKIH0KIApAQCAtNjk0LDYgKzgyNSw1NyBAQCBURVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgSW52YWxpZFN0eWxlKSB7CiAgIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIik7
CiB9CiAKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEZWF0aFRlc3RGYWlsZWRPdXRwdXQpIHsK
KyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBFWFBFQ1RfREVBVEgoRGllV2l0aE1lc3NhZ2Uo
ImRlYXRoXG4iKSwKKyAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgbWVzc2FnZSIpLAorICAg
ICAgIkFjdHVhbCBtc2c6XG4iCisgICAgICAiWyAgREVBVEggICBdIGRlYXRoXG4iKTsKK30KKwor
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERlYXRoVGVzdFVuZXhwZWN0ZWRSZXR1cm5PdXRwdXQp
IHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBFWFBFQ1RfREVBVEgoeworICAgICAgICAg
IGZwcmludGYoc3RkZXJyLCAicmV0dXJuaW5nXG4iKTsKKyAgICAgICAgICBmZmx1c2goc3RkZXJy
KTsKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0sICIiKSwKKyAgICAgICIgICAgUmVzdWx0
OiBpbGxlZ2FsIHJldHVybiBpbiB0ZXN0IHN0YXRlbWVudC5cbiIKKyAgICAgICIgRXJyb3IgbXNn
OlxuIgorICAgICAgIlsgIERFQVRIICAgXSByZXR1cm5pbmdcbiIpOworfQorCitURVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgRGVhdGhUZXN0QmFkRXhpdENvZGVPdXRwdXQpIHsKKyAgdGVzdGluZzo6
R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoCisgICAgICBFWFBFQ1RfRVhJVChEaWVXaXRoTWVzc2FnZSgiZXhpdGluZyB3aXRo
IHJjIDFcbiIpLAorICAgICAgICAgICAgICAgICAgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMyks
CisgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgbWVzc2FnZSIpLAorICAgICAgIiAgICBSZXN1
bHQ6IGRpZWQgYnV0IG5vdCB3aXRoIGV4cGVjdGVkIGV4aXQgY29kZTpcbiIKKyAgICAgICIgICAg
ICAgICAgICBFeGl0ZWQgd2l0aCBleGl0IHN0YXR1cyAxXG4iCisgICAgICAiQWN0dWFsIG1zZzpc
biIKKyAgICAgICJbICBERUFUSCAgIF0gZXhpdGluZyB3aXRoIHJjIDFcbiIpOworfQorCitURVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgRGVhdGhUZXN0TXVsdGlMaW5lTWF0Y2hGYWlsKSB7CisgIHRl
c3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKAorICAgICAgRVhQRUNUX0RFQVRIKERpZVdpdGhNZXNzYWdlKCJsaW5l
IDFcbmxpbmUgMlxubGluZSAzXG4iKSwKKyAgICAgICAgICAgICAgICAgICAibGluZSAxXG54eXpc
bmxpbmUgM1xuIiksCisgICAgICAiQWN0dWFsIG1zZzpcbiIKKyAgICAgICJbICBERUFUSCAgIF0g
bGluZSAxXG4iCisgICAgICAiWyAgREVBVEggICBdIGxpbmUgMlxuIgorICAgICAgIlsgIERFQVRI
ICAgXSBsaW5lIDNcbiIpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRGVhdGhUZXN0
TXVsdGlMaW5lTWF0Y2hQYXNzKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9z
dHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9ERUFUSChEaWVXaXRoTWVzc2FnZSgibGluZSAxXG5s
aW5lIDJcbmxpbmUgM1xuIiksCisgICAgICAgICAgICAgICAibGluZSAxXG5saW5lIDJcbmxpbmUg
M1xuIik7Cit9CisKIC8vIEEgRGVhdGhUZXN0RmFjdG9yeSB0aGF0IHJldHVybnMgTW9ja0RlYXRo
VGVzdHMuCiBjbGFzcyBNb2NrRGVhdGhUZXN0RmFjdG9yeSA6IHB1YmxpYyBEZWF0aFRlc3RGYWN0
b3J5IHsKICBwdWJsaWM6CkBAIC03MDksOSArODkxLDkgQEAgY2xhc3MgTW9ja0RlYXRoVGVzdEZh
Y3RvcnkgOiBwdWJsaWMgRGVhdGhUZXN0RmFjdG9yeSB7CiAgIC8vIEFjY2Vzc29ycy4KICAgaW50
IEFzc3VtZVJvbGVDYWxscygpIGNvbnN0IHsgcmV0dXJuIGFzc3VtZV9yb2xlX2NhbGxzXzsgfQog
ICBpbnQgV2FpdENhbGxzKCkgY29uc3QgeyByZXR1cm4gd2FpdF9jYWxsc187IH0KLSAgaW50IFBh
c3NlZENhbGxzKCkgY29uc3QgeyByZXR1cm4gcGFzc2VkX2FyZ3NfLnNpemUoKTsgfQorICBzaXpl
X3QgUGFzc2VkQ2FsbHMoKSBjb25zdCB7IHJldHVybiBwYXNzZWRfYXJnc18uc2l6ZSgpOyB9CiAg
IGJvb2wgUGFzc2VkQXJndW1lbnQoaW50IG4pIGNvbnN0IHsgcmV0dXJuIHBhc3NlZF9hcmdzX1tu
XTsgfQotICBpbnQgQWJvcnRDYWxscygpIGNvbnN0IHsgcmV0dXJuIGFib3J0X2FyZ3NfLnNpemUo
KTsgfQorICBzaXplX3QgQWJvcnRDYWxscygpIGNvbnN0IHsgcmV0dXJuIGFib3J0X2FyZ3NfLnNp
emUoKTsgfQogICBEZWF0aFRlc3Q6OkFib3J0UmVhc29uIEFib3J0QXJndW1lbnQoaW50IG4pIGNv
bnN0IHsKICAgICByZXR1cm4gYWJvcnRfYXJnc19bbl07CiAgIH0KQEAgLTc3Myw2ICs5NTUsNyBA
QCBjbGFzcyBNb2NrRGVhdGhUZXN0IDogcHVibGljIERlYXRoVGVzdCB7CiAgIHZpcnR1YWwgdm9p
ZCBBYm9ydChBYm9ydFJlYXNvbiByZWFzb24pIHsKICAgICBwYXJlbnRfLT5hYm9ydF9hcmdzXy5w
dXNoX2JhY2socmVhc29uKTsKICAgfQorCiAgcHJpdmF0ZToKICAgTW9ja0RlYXRoVGVzdEZhY3Rv
cnkqIGNvbnN0IHBhcmVudF87CiAgIGNvbnN0IFRlc3RSb2xlIHJvbGVfOwpAQCAtODcxLDggKzEw
NTQsOCBAQCBURVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwgTm90aGluZ0hhcHBlbnMpIHsKICAg
RVhQRUNUX0ZBTFNFKGZsYWcpOwogICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPkFzc3VtZVJvbGVD
YWxscygpKTsKICAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7Ci0gIEVYUEVD
VF9FUSgwLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5
Xy0+QWJvcnRDYWxscygpKTsKKyAgRVhQRUNUX0VRKDBVLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMo
KSk7CisgIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7CiAgIEVYUEVDVF9G
QUxTRShmYWN0b3J5Xy0+VGVzdERlbGV0ZWQoKSk7CiB9CiAKQEAgLTg4Niw5ICsxMDY5LDkgQEAg
VEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxkRXhpdHNTdWNjZXNzZnVsbHkpIHsKICAg
RVhQRUNUX0ZBTFNFKGZsYWcpOwogICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVD
YWxscygpKTsKICAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7Ci0gIEFTU0VS
VF9FUSgxLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7CisgIEFTU0VSVF9FUSgxVSwgZmFjdG9y
eV8tPlBhc3NlZENhbGxzKCkpOwogICBFWFBFQ1RfRkFMU0UoZmFjdG9yeV8tPlBhc3NlZEFyZ3Vt
ZW50KDApKTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOworICBFWFBF
Q1RfRVEoMFUsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOwogICBFWFBFQ1RfVFJVRShmYWN0b3J5
Xy0+VGVzdERlbGV0ZWQoKSk7CiB9CiAKQEAgLTkwMSw5ICsxMDg0LDkgQEAgVEVTVF9GKE1hY3Jv
TG9naWNEZWF0aFRlc3QsIENoaWxkRXhpdHNVbnN1Y2Nlc3NmdWxseSkgewogICBFWFBFQ1RfRkFM
U0UoZmxhZyk7CiAgIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOwog
ICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPldhaXRDYWxscygpKTsKLSAgQVNTRVJUX0VRKDEsIGZh
Y3RvcnlfLT5QYXNzZWRDYWxscygpKTsKKyAgQVNTRVJUX0VRKDFVLCBmYWN0b3J5Xy0+UGFzc2Vk
Q2FsbHMoKSk7CiAgIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5QYXNzZWRBcmd1bWVudCgwKSk7Ci0g
IEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKKyAgRVhQRUNUX0VRKDBVLCBm
YWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKICAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3REZWxl
dGVkKCkpOwogfQogCkBAIC05MTcsOCArMTEwMCw4IEBAIFRFU1RfRihNYWNyb0xvZ2ljRGVhdGhU
ZXN0LCBDaGlsZFBlcmZvcm1zUmV0dXJuKSB7CiAgIEVYUEVDVF9UUlVFKGZsYWcpOwogICBFWFBF
Q1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKICAgRVhQRUNUX0VRKDAsIGZh
Y3RvcnlfLT5XYWl0Q2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+UGFzc2VkQ2Fs
bHMoKSk7Ci0gIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKKyAgRVhQRUNU
X0VRKDBVLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7CisgIEVYUEVDVF9FUSgxVSwgZmFjdG9y
eV8tPkFib3J0Q2FsbHMoKSk7CiAgIEVYUEVDVF9FUShEZWF0aFRlc3Q6OlRFU1RfRU5DT1VOVEVS
RURfUkVUVVJOX1NUQVRFTUVOVCwKICAgICAgICAgICAgIGZhY3RvcnlfLT5BYm9ydEFyZ3VtZW50
KDApKTsKICAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkpOwpAQCAtOTMzLDEz
ICsxMTE2LDEzIEBAIFRFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBDaGlsZERvZXNOb3REaWUp
IHsKICAgRVhQRUNUX1RSVUUoZmxhZyk7CiAgIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1l
Um9sZUNhbGxzKCkpOwogICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPldhaXRDYWxscygpKTsKLSAg
RVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKKyAgRVhQRUNUX0VRKDBVLCBm
YWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7CiAgIC8vIFRoaXMgdGltZSB0aGVyZSBhcmUgdHdvIGNh
bGxzIHRvIEFib3J0OiBvbmUgc2luY2UgdGhlIHRlc3QgZGlkbid0CiAgIC8vIGRpZSwgYW5kIGFu
b3RoZXIgZnJvbSB0aGUgUmV0dXJuU2VudGluZWwgd2hlbiBpdCdzIGRlc3Ryb3llZC4gIFRoZQog
ICAvLyBzZW50aW5lbCBub3JtYWxseSBpc24ndCBkZXN0cm95ZWQgaWYgYSB0ZXN0IGRvZXNuJ3Qg
ZGllLCBzaW5jZQogICAvLyBfZXhpdCgyKSBpcyBjYWxsZWQgaW4gdGhhdCBjYXNlIGJ5IEZvcmtp
bmdEZWF0aFRlc3QsIGJ1dCBub3QgYnkKICAgLy8gb3VyIE1vY2tEZWF0aFRlc3QuCi0gIEFTU0VS
VF9FUSgyLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKKyAgQVNTRVJUX0VRKDJVLCBmYWN0b3J5
Xy0+QWJvcnRDYWxscygpKTsKICAgRVhQRUNUX0VRKERlYXRoVGVzdDo6VEVTVF9ESURfTk9UX0RJ
RSwKICAgICAgICAgICAgIGZhY3RvcnlfLT5BYm9ydEFyZ3VtZW50KDApKTsKICAgRVhQRUNUX0VR
KERlYXRoVGVzdDo6VEVTVF9FTkNPVU5URVJFRF9SRVRVUk5fU1RBVEVNRU5ULApAQCAtOTc0LDcg
KzExNTcsNyBAQCBURVNUKEdldExhc3RFcnJub0Rlc2NyaXB0aW9uLCBHZXRMYXN0RXJybm9EZXNj
cmlwdGlvbldvcmtzKSB7CiAgIEVYUEVDVF9TVFJFUSgiIiwgR2V0TGFzdEVycm5vRGVzY3JpcHRp
b24oKS5jX3N0cigpKTsKIH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1Nf
V0lORE9XUwogVEVTVChBdXRvSGFuZGxlVGVzdCwgQXV0b0hhbmRsZVdvcmtzKSB7CiAgIEhBTkRM
RSBoYW5kbGUgPSA6OkNyZWF0ZUV2ZW50KE5VTEwsIEZBTFNFLCBGQUxTRSwgTlVMTCk7CiAgIEFT
U0VSVF9ORShJTlZBTElEX0hBTkRMRV9WQUxVRSwgaGFuZGxlKTsKQEAgLTk5OSw0NiArMTE4Miw0
NSBAQCBURVNUKEF1dG9IYW5kbGVUZXN0LCBBdXRvSGFuZGxlV29ya3MpIHsKICAgdGVzdGluZzo6
aW50ZXJuYWw6OkF1dG9IYW5kbGUgYXV0b19oYW5kbGUyOwogICBFWFBFQ1RfRVEoSU5WQUxJRF9I
QU5ETEVfVkFMVUUsIGF1dG9faGFuZGxlMi5HZXQoKSk7CiB9Ci0jZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAotI2lmIEdURVNUX09TX1dJ
TkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lORE9XUwogdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IEJp
Z2dlc3RQYXJzYWJsZTsKIHR5cGVkZWYgc2lnbmVkIF9faW50NjQgQmlnZ2VzdFNpZ25lZFBhcnNh
YmxlOwotY29uc3QgQmlnZ2VzdFBhcnNhYmxlIGtCaWdnZXN0UGFyc2FibGVNYXggPSBVTExPTkdf
TUFYOwotY29uc3QgQmlnZ2VzdFBhcnNhYmxlIGtCaWdnZXN0U2lnbmVkUGFyc2FibGVNYXggPSBM
TE9OR19NQVg7Ci0jZWxzZQorIyBlbHNlCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBCaWdn
ZXN0UGFyc2FibGU7CiB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgQmlnZ2VzdFNpZ25lZFBhcnNh
YmxlOwotY29uc3QgQmlnZ2VzdFBhcnNhYmxlIGtCaWdnZXN0UGFyc2FibGVNYXggPQotICAgIDo6
c3RkOjpudW1lcmljX2xpbWl0czxCaWdnZXN0UGFyc2FibGU+OjptYXgoKTsKLWNvbnN0IEJpZ2dl
c3RTaWduZWRQYXJzYWJsZSBrQmlnZ2VzdFNpZ25lZFBhcnNhYmxlTWF4ID0KLSAgICA6OnN0ZDo6
bnVtZXJpY19saW1pdHM8QmlnZ2VzdFNpZ25lZFBhcnNhYmxlPjo6bWF4KCk7Ci0jZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworLy8gV2Ug
Y2Fubm90IHVzZSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSBhcyBpdCBjbGFzaGVzIHdp
dGggdGhlCisvLyBtYXgoKSBtYWNybyBkZWZpbmVkIGJ5IDx3aW5kb3dzLmg+LgorY29uc3QgQmln
Z2VzdFBhcnNhYmxlIGtCaWdnZXN0UGFyc2FibGVNYXggPSBVTExPTkdfTUFYOworY29uc3QgQmln
Z2VzdFNpZ25lZFBhcnNhYmxlIGtCaWdnZXN0U2lnbmVkUGFyc2FibGVNYXggPSBMTE9OR19NQVg7
CiAKIFRFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgUmVqZWN0c0ludmFsaWRGb3JtYXQpIHsK
ICAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7CiAKICAgLy8gUmVqZWN0cyBub24tbnVtYmVy
cy4KLSAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIm5vbi1udW1iZXIg
c3RyaW5nIiksICZyZXN1bHQpKTsKKyAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcigi
bm9uLW51bWJlciBzdHJpbmciLCAmcmVzdWx0KSk7CiAKICAgLy8gUmVqZWN0cyBudW1iZXJzIHdp
dGggd2hpdGVzcGFjZSBwcmVmaXguCi0gIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIo
U3RyaW5nKCIgMTIzIiksICZyZXN1bHQpKTsKKyAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51
bWJlcigiIDEyMyIsICZyZXN1bHQpKTsKIAogICAvLyBSZWplY3RzIG5lZ2F0aXZlIG51bWJlcnMu
Ci0gIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCItMTIzIiksICZyZXN1
bHQpKTsKKyAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcigiLTEyMyIsICZyZXN1bHQp
KTsKIAogICAvLyBSZWplY3RzIG51bWJlcnMgc3RhcnRpbmcgd2l0aCBhIHBsdXMgc2lnbi4KLSAg
RVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIisxMjMiKSwgJnJlc3VsdCkp
OworICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCIrMTIzIiwgJnJlc3VsdCkpOwog
ICBlcnJubyA9IDA7CiB9CiAKIFRFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgUmVqZWN0c092
ZXJmbG93bk51bWJlcnMpIHsKICAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7CiAKLSAgRVhQ
RUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIjk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5IiksICZyZXN1bHQpKTsKKyAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcigiOTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTkiLCAmcmVzdWx0KSk7CiAKICAgc2lnbmVkIGNoYXIgY2hhcl9y
ZXN1bHQgPSAwOwotICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygiMjAw
IiksICZjaGFyX3Jlc3VsdCkpOworICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCIy
MDAiLCAmY2hhcl9yZXN1bHQpKTsKICAgZXJybm8gPSAwOwogfQogCkBAIC0xMDQ2LDE2ICsxMjI4
LDE2IEBAIFRFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgQWNjZXB0c1ZhbGlkTnVtYmVycykg
ewogICBCaWdnZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsKIAogICByZXN1bHQgPSAwOwotICBBU1NF
UlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCIxMjMiKSwgJnJlc3VsdCkpOworICBB
U1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjEyMyIsICZyZXN1bHQpKTsKICAgRVhQRUNU
X0VRKDEyM1UsIHJlc3VsdCk7CiAKICAgLy8gQ2hlY2sgMCBhcyBhbiBlZGdlIGNhc2UuCiAgIHJl
c3VsdCA9IDE7Ci0gIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIjAiKSwg
JnJlc3VsdCkpOworICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjAiLCAmcmVzdWx0
KSk7CiAgIEVYUEVDVF9FUSgwVSwgcmVzdWx0KTsKIAogICByZXN1bHQgPSAxOwotICBBU1NFUlRf
VFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCIwMDAwMCIpLCAmcmVzdWx0KSk7CisgIEFT
U0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcigiMDAwMDAiLCAmcmVzdWx0KSk7CiAgIEVYUEVD
VF9FUSgwVSwgcmVzdWx0KTsKIH0KIApAQCAtMTA5MSwyMiArMTI3MywyMiBAQCBURVNUKFBhcnNl
TmF0dXJhbE51bWJlclRlc3QsIEFjY2VwdHNUeXBlTGltaXRzKSB7CiAKIFRFU1QoUGFyc2VOYXR1
cmFsTnVtYmVyVGVzdCwgV29ya3NGb3JTaG9ydGVySW50ZWdlcnMpIHsKICAgc2hvcnQgc2hvcnRf
cmVzdWx0ID0gMDsKLSAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygiMTIz
IiksICZzaG9ydF9yZXN1bHQpKTsKKyAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKCIx
MjMiLCAmc2hvcnRfcmVzdWx0KSk7CiAgIEVYUEVDVF9FUSgxMjMsIHNob3J0X3Jlc3VsdCk7CiAK
ICAgc2lnbmVkIGNoYXIgY2hhcl9yZXN1bHQgPSAwOwotICBBU1NFUlRfVFJVRShQYXJzZU5hdHVy
YWxOdW1iZXIoU3RyaW5nKCIxMjMiKSwgJmNoYXJfcmVzdWx0KSk7CisgIEFTU0VSVF9UUlVFKFBh
cnNlTmF0dXJhbE51bWJlcigiMTIzIiwgJmNoYXJfcmVzdWx0KSk7CiAgIEVYUEVDVF9FUSgxMjMs
IGNoYXJfcmVzdWx0KTsKIH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1Nf
V0lORE9XUwogVEVTVChFbnZpcm9ubWVudFRlc3QsIEhhbmRsZUZpdHNJbnRvU2l6ZVQpIHsKICAg
Ly8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogUmVtb3ZlIHRoaXMgdGVzdCBhZnRlciB0aGlzIGNv
bmRpdGlvbiBpcyB2ZXJpZmllZAogICAvLyBpbiBhIHN0YXRpYyBhc3NlcnRpb24gaW4gZ3Rlc3Qt
ZGVhdGgtdGVzdC5jYyBpbiB0aGUgZnVuY3Rpb24KICAgLy8gR2V0U3RhdHVzRmlsZURlc2NyaXB0
b3IuCiAgIEFTU0VSVF9UUlVFKHNpemVvZihIQU5ETEUpIDw9IHNpemVvZihzaXplX3QpKTsKIH0K
LSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9X
UwogCiAvLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQvQVNTRVJUX0RFQVRI
X0lGX1NVUFBPUlRFRCB0cmlnZ2VyCiAvLyBmYWlsdXJlcyB3aGVuIGRlYXRoIHRlc3RzIGFyZSBh
dmFpbGFibGUgb24gdGhlIHN5c3RlbS4KQEAgLTExMjEsMTEgKzEzMDMsMzAgQEAgVEVTVChDb25k
aXRpb25hbERlYXRoTWFjcm9zRGVhdGhUZXN0LCBFeHBlY3RzRGVhdGhXaGVuRGVhdGhUZXN0c0F2
YWlsYWJsZSkgewogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfREVBVEhfSUZfU1VQUE9S
VEVEKDssICIiKSwgIiIpOwogfQogCi0jZWxzZQorVEVTVChJbkRlYXRoVGVzdENoaWxkRGVhdGhU
ZXN0LCBSZXBvcnRzRGVhdGhUZXN0Q29ycmVjdGx5SW5GYXN0U3R5bGUpIHsKKyAgdGVzdGluZzo6
R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAgRVhQRUNUX0ZBTFNFKElu
RGVhdGhUZXN0Q2hpbGQoKSk7CisgIEVYUEVDVF9ERUFUSCh7CisgICAgZnByaW50ZihzdGRlcnIs
IEluRGVhdGhUZXN0Q2hpbGQoKSA/ICJJbnNpZGUiIDogIk91dHNpZGUiKTsKKyAgICBmZmx1c2go
c3RkZXJyKTsKKyAgICBfZXhpdCgxKTsKKyAgfSwgIkluc2lkZSIpOworfQorCitURVNUKEluRGVh
dGhUZXN0Q2hpbGREZWF0aFRlc3QsIFJlcG9ydHNEZWF0aFRlc3RDb3JyZWN0bHlJblRocmVhZFNh
ZmVTdHlsZSkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRo
cmVhZHNhZmUiOworICBFWFBFQ1RfRkFMU0UoSW5EZWF0aFRlc3RDaGlsZCgpKTsKKyAgRVhQRUNU
X0RFQVRIKHsKKyAgICBmcHJpbnRmKHN0ZGVyciwgSW5EZWF0aFRlc3RDaGlsZCgpID8gIkluc2lk
ZSIgOiAiT3V0c2lkZSIpOworICAgIGZmbHVzaChzdGRlcnIpOworICAgIF9leGl0KDEpOworICB9
LCAiSW5zaWRlIik7Cit9CisKKyNlbHNlICAvLyAhR1RFU1RfSEFTX0RFQVRIX1RFU1QgZm9sbG93
cwogCiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q2FwdHVyZVN0ZGVycjsKIHVzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpHZXRDYXB0dXJlZFN0ZGVycjsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjpTdHJpbmc7CiAKIC8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRC9BU1NF
UlRfREVBVEhfSUZfU1VQUE9SVEVEIGFyZSBzdGlsbAogLy8gZGVmaW5lZCBidXQgZG8gbm90IHRy
aWdnZXIgZmFpbHVyZXMgd2hlbiBkZWF0aCB0ZXN0cyBhcmUgbm90IGF2YWlsYWJsZSBvbgpAQCAt
MTEzNSw3ICsxMzM2LDcgQEAgVEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zVGVzdCwgV2FybnNX
aGVuRGVhdGhUZXN0c05vdEF2YWlsYWJsZSkgewogICAvLyB3aGVuIGRlYXRoIHRlc3RzIGFyZSBu
b3Qgc3VwcG9ydGVkLgogICBDYXB0dXJlU3RkZXJyKCk7CiAgIEVYUEVDVF9ERUFUSF9JRl9TVVBQ
T1JURUQoOywgIiIpOwotICBTdHJpbmcgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKKyAg
c3RkOjpzdHJpbmcgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKICAgQVNTRVJUX1RSVUUo
TlVMTCAhPSBzdHJzdHIob3V0cHV0LmNfc3RyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJEZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikpOwog
ICBBU1NFUlRfVFJVRShOVUxMICE9IHN0cnN0cihvdXRwdXQuY19zdHIoKSwgIjsiKSk7CkBAIC0x
MTcxLDcgKzEzNzIsOCBAQCBURVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NUZXN0LCBBc3NlcnRE
ZWF0RG9lc05vdFJldHVybmhJZlVuc3VwcG9ydGVkKSB7CiAgIEZ1bmNXaXRoQXNzZXJ0KCZuKTsK
ICAgRVhQRUNUX0VRKDEsIG4pOwogfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAor
CisjZW5kaWYgIC8vICFHVEVTVF9IQVNfREVBVEhfVEVTVAogCiAvLyBUZXN0cyB0aGF0IHRoZSBk
ZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29kZSB3aGljaCBtYXkgb3IgbWF5IG5vdAogLy8g
YmUgZm9sbG93ZWQgYnkgb3BlcmF0b3I8PCwgYW5kIHRoYXQgaW4gZWl0aGVyIGNhc2UgdGhlIGNv
bXBsZXRlIHRleHQKQEAgLTEyMDIsMTIgKzE0MDQsOSBAQCBURVNUKENvbmRpdGlvbmFsRGVhdGhN
YWNyb3NTeW50YXhEZWF0aFRlc3QsIFNpbmdsZVN0YXRlbWVudCkgewogLy8gVGVzdHMgdGhhdCBj
b25kaXRpb25hbCBkZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29kZSB3aGljaCBpbnRlcmFj
dHMKIC8vIHdlbGwgd2l0aCBzd2l0Y2ggc3RhdGVtZW50cy4KIFRFU1QoQ29uZGl0aW9uYWxEZWF0
aE1hY3Jvc1N5bnRheERlYXRoVGVzdCwgU3dpdGNoU3RhdGVtZW50KSB7Ci0vLyBNaWNyb3NvZnQg
Y29tcGlsZXIgdXN1YWxseSBjb21wbGFpbnMgYWJvdXQgc3dpdGNoIHN0YXRlbWVudHMgd2l0aG91
dAotLy8gY2FzZSBsYWJlbHMuIFdlIHN1cHByZXNzIHRoYXQgd2FybmluZyBmb3IgdGhpcyB0ZXN0
LgotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2Fybmlu
ZyhkaXNhYmxlOiA0MDY1KQotI2VuZGlmICAvLyBfTVNDX1ZFUgorICAvLyBNaWNyb3NvZnQgY29t
cGlsZXIgdXN1YWxseSBjb21wbGFpbnMgYWJvdXQgc3dpdGNoIHN0YXRlbWVudHMgd2l0aG91dAor
ICAvLyBjYXNlIGxhYmVscy4gV2Ugc3VwcHJlc3MgdGhhdCB3YXJuaW5nIGZvciB0aGlzIHRlc3Qu
CisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQwNjUpCiAKICAgc3dpdGNoICgw
KQogICAgIGRlZmF1bHQ6CkBAIC0xMjE4LDkgKzE0MTcsNyBAQCBURVNUKENvbmRpdGlvbmFsRGVh
dGhNYWNyb3NTeW50YXhEZWF0aFRlc3QsIFN3aXRjaFN0YXRlbWVudCkgewogICAgIGNhc2UgMDoK
ICAgICAgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQoMSksICIiKSA8PCAiZXhpdCBp
biBzd2l0Y2ggY2FzZSI7CiAKLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHBvcCkK
LSNlbmRpZiAgLy8gX01TQ19WRVIKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygp
CiB9CiAKIC8vIFRlc3RzIHRoYXQgYSB0ZXN0IGNhc2Ugd2hvc2UgbmFtZSBlbmRzIHdpdGggIkRl
YXRoVGVzdCIgd29ya3MgZmluZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdC1maWxlcGF0aF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdC1maWxlcGF0aF90ZXN0LmNjCmluZGV4IDYyNTAyODI3NThkZmIzYzkzZjQ3ZjA5MWM1
MmEyZGJmOTJjYWNlZWIuLmRhNzI5ODY5MjZiNjg2NmEzMjQ3NjY1MzIwYmIxYjViMDAyNmQ1NjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtZmlsZXBhdGhf
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWZpbGVwYXRo
X3Rlc3QuY2MKQEAgLTM4LDggKzM4LDggQEAKIC8vIGJ1aWxkIG9yIG1ha2UtZmlsZXMgZm9yIHNv
bWUgZXhpc3RpbmcgR29vZ2xlIFRlc3QgY2xpZW50cy4gRG8gbm90CiAvLyAjaW5jbHVkZSB0aGlz
IGZpbGUgYW55d2hlcmUgZWxzZSEKIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWZp
bGVwYXRoLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRl
cm5hbC9ndGVzdC1maWxlcGF0aC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIC8vIElu
ZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0
J3MKIC8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5h
bC1pbmwuaCBpcwpAQCAtNTEsOSArNTEsOSBAQAogI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9O
XwogCiAjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSNpbmNsdWRlIDx3aW5kb3dzLmg+ICAv
LyBOT0xJTlQKKyMgaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gTk9MSU5UCiAjZWxpZiBHVEVTVF9P
U19XSU5ET1dTCi0jaW5jbHVkZSA8ZGlyZWN0Lmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8ZGly
ZWN0Lmg+ICAvLyBOT0xJTlQKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIAog
bmFtZXNwYWNlIHRlc3RpbmcgewpAQCAtOTEsMjEgKzkxLDI0IEBAIFRFU1QoR2V0Q3VycmVudERp
clRlc3QsIFJldHVybnNDdXJyZW50RGlyKSB7CiAgIGNvbnN0IEZpbGVQYXRoIGN3ZCA9IEZpbGVQ
YXRoOjpHZXRDdXJyZW50RGlyKCk7CiAgIHBvc2l4OjpDaERpcihvcmlnaW5hbF9kaXIuY19zdHIo
KSk7CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKwogICAv
LyBTa2lwcyB0aGUgIjoiLgogICBjb25zdCBjaGFyKiBjb25zdCBjd2Rfd2l0aG91dF9kcml2ZSA9
IHN0cmNocihjd2QuY19zdHIoKSwgJzonKTsKICAgQVNTRVJUX1RSVUUoY3dkX3dpdGhvdXRfZHJp
dmUgIT0gTlVMTCk7CiAgIEVYUEVDVF9TVFJFUShHVEVTVF9QQVRIX1NFUF8sIGN3ZF93aXRob3V0
X2RyaXZlICsgMSk7Ci0jZWxzZQotICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLCBjd2Qu
Y19zdHIoKSk7Ci0jZW5kaWYKKworIyBlbHNlCisKKyAgRVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQ
XywgY3dkLnN0cmluZygpKTsKKworIyBlbmRpZgogfQogCiAjZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCiAKIFRFU1QoSXNFbXB0eVRlc3QsIFJldHVybnNUcnVlRm9yRW1wdHlQYXRo
KSB7CiAgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIiKS5Jc0VtcHR5KCkpOwotICBFWFBFQ1RfVFJV
RShGaWxlUGF0aChOVUxMKS5Jc0VtcHR5KCkpOwogfQogCiBURVNUKElzRW1wdHlUZXN0LCBSZXR1
cm5zRmFsc2VGb3JOb25FbXB0eVBhdGgpIHsKQEAgLTExNywzOCArMTIwLDM4IEBAIFRFU1QoSXNF
bXB0eVRlc3QsIFJldHVybnNGYWxzZUZvck5vbkVtcHR5UGF0aCkgewogCiAvLyBSZW1vdmVEaXJl
Y3RvcnlOYW1lICIiIC0+ICIiCiBURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBXaGVuRW1w
dHlOYW1lKSB7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgRmlsZVBhdGgoIiIpLlJlbW92ZURpcmVjdG9y
eU5hbWUoKS5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKCIiLCBGaWxlUGF0aCgiIikuUmVtb3ZlRGly
ZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKIH0KIAogLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiYWZp
bGUiIC0+ICJhZmlsZSIKIFRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIEJ1dE5vRGlyZWN0
b3J5KSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWZpbGUiLAotICAgICAgRmlsZVBhdGgoImFmaWxlIiku
UmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImFmaWxlIiwKKyAg
ICAgIEZpbGVQYXRoKCJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7CiB9
CiAKIC8vIFJlbW92ZURpcmVjdG9yeU5hbWUgIi9hZmlsZSIgLT4gImFmaWxlIgogVEVTVChSZW1v
dmVEaXJlY3RvcnlOYW1lVGVzdCwgUm9vdEZpbGVTaG91bGRHaXZlRmlsZU5hbWUpIHsKLSAgRVhQ
RUNUX1NUUkVRKCJhZmlsZSIsCi0gICAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gImFmaWxl
IikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImFmaWxlIiwK
KyAgICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlO
YW1lKCkuc3RyaW5nKCkpOwogfQogCiAvLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZGlyLyIgLT4g
IiIKIFRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFdoZXJlVGhlcmVJc05vRmlsZU5hbWUp
IHsKLSAgRVhQRUNUX1NUUkVRKCIiLAotICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhf
U0VQXykuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoIiIsCisg
ICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfKS5SZW1vdmVEaXJlY3RvcnlOYW1l
KCkuc3RyaW5nKCkpOwogfQogCiAvLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZGlyL2FmaWxlIiAt
PiAiYWZpbGUiCiBURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRHaXZlRmlsZU5h
bWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAgICBGaWxlUGF0aCgiYWRpciIgR1RF
U1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0cigpKTsKKyAg
RVhQRUNUX0VRKCJhZmlsZSIsCisgICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBf
ICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7CiB9CiAKIC8vIFJlbW92
ZURpcmVjdG9yeU5hbWUgImFkaXIvc3ViZGlyL2FmaWxlIiAtPiAiYWZpbGUiCiBURVNUKFJlbW92
ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRBbHNvR2l2ZUZpbGVOYW1lKSB7Ci0gIEVYUEVDVF9T
VFJFUSgiYWZpbGUiLAorICBFWFBFQ1RfRVEoImFmaWxlIiwKICAgICAgIEZpbGVQYXRoKCJhZGly
IiBHVEVTVF9QQVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIpCi0gICAg
ICAuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOworICAgICAgLlJlbW92ZURpcmVjdG9y
eU5hbWUoKS5zdHJpbmcoKSk7CiB9CiAKICNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXwpAQCAt
MTU4LDI2ICsxNjEsMjMgQEAgVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgU2hvdWxkQWxz
b0dpdmVGaWxlTmFtZSkgewogCiAvLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCIvYWZpbGUiKSAtPiAi
YWZpbGUiCiBURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBSb290RmlsZVNob3VsZEdpdmVG
aWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoImFmaWxlIiwK
LSAgICAgICAgICAgICAgIEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCku
Y19zdHIoKSk7CisgIEVYUEVDVF9FUSgiYWZpbGUiLCBGaWxlUGF0aCgiL2FmaWxlIikuUmVtb3Zl
RGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKIH0KIAogLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgi
YWRpci8iKSAtPiAiIgogVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgV2hlcmVUaGVyZUlz
Tm9GaWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoIiIsCi0g
ICAgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci8iKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19z
dHIoKSk7CisgIEVYUEVDVF9FUSgiIiwgRmlsZVBhdGgoImFkaXIvIikuUmVtb3ZlRGlyZWN0b3J5
TmFtZSgpLnN0cmluZygpKTsKIH0KIAogLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgiYWRpci9hZmls
ZSIpIC0+ICJhZmlsZSIKIFRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEdpdmVG
aWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoImFmaWxlIiwK
LSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL2FmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFt
ZSgpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImFmaWxlIiwgRmlsZVBhdGgoImFkaXIvYWZpbGUi
KS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOwogfQogCiAvLyBSZW1vdmVEaXJlY3Rv
cnlOYW1lKCJhZGlyL3N1YmRpci9hZmlsZSIpIC0+ICJhZmlsZSIKIFRFU1QoUmVtb3ZlRGlyZWN0
b3J5TmFtZVRlc3QsIFNob3VsZEFsc29HaXZlRmlsZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3Ip
IHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiYWRp
ci9zdWJkaXIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIoKSk7CisgIEVYUEVD
VF9FUSgiYWZpbGUiLAorICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvc3ViZGlyL2FmaWxlIiku
UmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKIH0KIAogI2VuZGlmCkBAIC0xODYsMzgg
KzE4NiwzNSBAQCBURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRBbHNvR2l2ZUZp
bGVOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7CiBURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwg
RW1wdHlOYW1lKSB7CiAjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKICAgLy8gT24gV2luZG93
cyBDRSwgd2UgdXNlIHRoZSByb290IGFzIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLSAgRVhQRUNU
X1NUUkVRKEdURVNUX1BBVEhfU0VQXywKLSAgICAgIEZpbGVQYXRoKCIiKS5SZW1vdmVGaWxlTmFt
ZSgpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfLCBGaWxlUGF0aCgiIiku
UmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7CiAjZWxzZQotICBFWFBFQ1RfU1RSRVEoIi4iIEdU
RVNUX1BBVEhfU0VQXywKLSAgICAgIEZpbGVQYXRoKCIiKS5SZW1vdmVGaWxlTmFtZSgpLmNfc3Ry
KCkpOworICBFWFBFQ1RfRVEoIi4iIEdURVNUX1BBVEhfU0VQXywgRmlsZVBhdGgoIiIpLlJlbW92
ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOwogI2VuZGlmCiB9CiAKIC8vIFJlbW92ZUZpbGVOYW1lICJh
ZGlyLyIgLT4gImFkaXIvIgogVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEJ1dE5vRmlsZSkgewot
ICBFWFBFQ1RfU1RSRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXywKLSAgICAgIEZpbGVQYXRoKCJh
ZGlyIiBHVEVTVF9QQVRIX1NFUF8pLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7CisgIEVYUEVD
VF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNU
X1BBVEhfU0VQXykuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7CiB9CiAKIC8vIFJlbW92ZUZp
bGVOYW1lICJhZGlyL2FmaWxlIiAtPiAiYWRpci8iCiBURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwg
R2l2ZXNEaXJOYW1lKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAot
ICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKQotICAgICAgLlJl
bW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9T
RVBfLAorICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUi
KS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKIH0KIAogLy8gUmVtb3ZlRmlsZU5hbWUgImFk
aXIvc3ViZGlyL2FmaWxlIiAtPiAiYWRpci9zdWJkaXIvIgogVEVTVChSZW1vdmVGaWxlTmFtZVRl
c3QsIEdpdmVzRGlyQW5kU3ViRGlyTmFtZSkgewotICBFWFBFQ1RfU1RSRVEoImFkaXIiIEdURVNU
X1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8sCisgIEVYUEVDVF9FUSgiYWRpciIg
R1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXywKICAgICAgIEZpbGVQYXRo
KCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIp
Ci0gICAgICAuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKKyAgICAgIC5SZW1vdmVGaWxlTmFt
ZSgpLnN0cmluZygpKTsKIH0KIAogLy8gUmVtb3ZlRmlsZU5hbWUgIi9hZmlsZSIgLT4gIi8iCiBU
RVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNSb290RGlyKSB7Ci0gIEVYUEVDVF9TVFJFUShH
VEVTVF9QQVRIX1NFUF8sCi0gICAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gImFmaWxlIiku
UmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQXywK
KyAgICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgp
LnN0cmluZygpKTsKIH0KIAogI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCkBAIC0yMjcsMjYg
KzIyNCwyNSBAQCBURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNSb290RGlyKSB7CiAKIC8v
IFJlbW92ZUZpbGVOYW1lKCJhZGlyLyIpIC0+ICJhZGlyLyIKIFRFU1QoUmVtb3ZlRmlsZU5hbWVU
ZXN0LCBCdXROb0ZpbGVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCJh
ZGlyIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci8iKS5S
ZW1vdmVGaWxlTmFtZSgpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImFkaXIiIEdURVNUX1BBVEhf
U0VQXywKKyAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyLyIpLlJlbW92ZUZpbGVOYW1lKCkuc3Ry
aW5nKCkpOwogfQogCiAvLyBSZW1vdmVGaWxlTmFtZSgiYWRpci9hZmlsZSIpIC0+ICJhZGlyLyIK
IFRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc0Rpck5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0
b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICAgICAg
ICAgICBGaWxlUGF0aCgiYWRpci9hZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Cisg
IEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgo
ImFkaXIvYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKIH0KIAogLy8gUmVtb3Zl
RmlsZU5hbWUoImFkaXIvc3ViZGlyL2FmaWxlIikgLT4gImFkaXIvc3ViZGlyLyIKIFRFU1QoUmVt
b3ZlRmlsZU5hbWVUZXN0LCBHaXZlc0RpckFuZFN1YkRpck5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0
b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gInN1YmRpciIgR1RF
U1RfUEFUSF9TRVBfLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvc3ViZGlyL2FmaWxl
IikuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKCJhZGlyIiBHVEVTVF9Q
QVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgo
ImFkaXIvc3ViZGlyL2FmaWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7CiB9CiAKIC8v
IFJlbW92ZUZpbGVOYW1lKCIvYWZpbGUiKSAtPiAiXCIKIFRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0
LCBHaXZlc1Jvb3REaXJGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKEdU
RVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1vdmVG
aWxlTmFtZSgpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfLCBGaWxlUGF0
aCgiL2FmaWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7CiB9CiAKICNlbmRpZgpAQCAt
MjU0LDEyNSArMjUwLDEyMCBAQCBURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNSb290RGly
Rm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7CiBURVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRl
V2hlbk51bWJlcklzWmVybykgewogICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZp
bGVOYW1lKEZpbGVQYXRoKCJmb28iKSwgRmlsZVBhdGgoImJhciIpLAogICAgICAgMCwgInhtbCIp
OwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFs
LmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwg
YWN0dWFsLnN0cmluZygpKTsKIH0KIAogVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZUZp
bGVOYW1lTnVtYmVyR3RaZXJvKSB7CiAgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtl
RmlsZU5hbWUoRmlsZVBhdGgoImZvbyIpLCBGaWxlUGF0aCgiYmFyIiksCiAgICAgICAxMiwgInht
bCIpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXJfMTIueG1sIiwg
YWN0dWFsLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXJf
MTIueG1sIiwgYWN0dWFsLnN0cmluZygpKTsKIH0KIAogVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBH
ZW5lcmF0ZUZpbGVOYW1lV2l0aFNsYXNoTnVtYmVySXNaZXJvKSB7CiAgIEZpbGVQYXRoIGFjdHVh
bCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBf
KSwKICAgICAgIEZpbGVQYXRoKCJiYXIiKSwgMCwgInhtbCIpOwotICBFWFBFQ1RfU1RSRVEoImZv
byIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFsLmNfc3RyKCkpOworICBFWFBFQ1Rf
RVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFsLnN0cmluZygpKTsKIH0K
IAogVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZUZpbGVOYW1lV2l0aFNsYXNoTnVtYmVy
R3RaZXJvKSB7CiAgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmls
ZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKSwKICAgICAgIEZpbGVQYXRoKCJiYXIiKSwgMTIs
ICJ4bWwiKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyXzEyLnht
bCIsIGFjdHVhbC5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAi
YmFyXzEyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7CiB9CiAKIFRFU1QoTWFrZUZpbGVOYW1lVGVz
dCwgR2VuZXJhdGVXaGVuTnVtYmVySXNaZXJvQW5kRGlySXNFbXB0eSkgewogICBGaWxlUGF0aCBh
Y3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCIiKSwgRmlsZVBhdGgoImJh
ciIpLAogICAgICAgMCwgInhtbCIpOwotICBFWFBFQ1RfU1RSRVEoImJhci54bWwiLCBhY3R1YWwu
Y19zdHIoKSk7CisgIEVYUEVDVF9FUSgiYmFyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7CiB9CiAK
IFRFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVySXNOb3RaZXJvQW5kRGly
SXNFbXB0eSkgewogICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZp
bGVQYXRoKCIiKSwgRmlsZVBhdGgoImJhciIpLAogICAgICAgMTQsICJ4bWwiKTsKLSAgRVhQRUNU
X1NUUkVRKCJiYXJfMTQueG1sIiwgYWN0dWFsLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImJhcl8x
NC54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOwogfQogCiBURVNUKENvbmNhdFBhdGhzVGVzdCwgV29y
a3NXaGVuRGlyRG9lc05vdEVuZFdpdGhQYXRoU2VwKSB7CiAgIEZpbGVQYXRoIGFjdHVhbCA9IEZp
bGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiYmFyLnhtbCIpKTsKLSAgRVhQRUNUX1NU
UkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKKyAg
RVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVhbC5zdHJpbmco
KSk7CiB9CiAKIFRFU1QoQ29uY2F0UGF0aHNUZXN0LCBXb3Jrc1doZW5QYXRoMUVuZHNXaXRoUGF0
aFNlcCkgewogICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBh
dGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZpbGVQYXRoKCJiYXIueG1sIikpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIg
R1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFsLmNfc3RyKCkpOworICBFWFBFQ1RfRVEo
ImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFsLnN0cmluZygpKTsKIH0KIAog
VEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgxQmVpbmdFbXB0eSkgewogICBGaWxlUGF0aCBhY3R1
YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoIiIpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJhci54bWwiKSk7Ci0gIEVYUEVD
VF9TVFJFUSgiYmFyLnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKCJiYXIueG1s
IiwgYWN0dWFsLnN0cmluZygpKTsKIH0KIAogVEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgyQmVp
bmdFbXB0eSkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmls
ZVBhdGgoImZvbyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RmlsZVBhdGgoIiIpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXywgYWN0
dWFsLmNfc3RyKCkpOworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMo
RmlsZVBhdGgoImZvbyIpLCBGaWxlUGF0aCgiIikpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1Rf
UEFUSF9TRVBfLCBhY3R1YWwuc3RyaW5nKCkpOwogfQogCiBURVNUKENvbmNhdFBhdGhzVGVzdCwg
Qm90aFBhdGhCZWluZ0VtcHR5KSB7CiAgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25j
YXRQYXRocyhGaWxlUGF0aCgiIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGaWxlUGF0aCgiIikpOwotICBFWFBFQ1RfU1RSRVEoIiIsIGFjdHVhbC5jX3N0cigp
KTsKKyAgRVhQRUNUX0VRKCIiLCBhY3R1YWwuc3RyaW5nKCkpOwogfQogCiBURVNUKENvbmNhdFBh
dGhzVGVzdCwgUGF0aDFDb250YWluc1BhdGhTZXApIHsKICAgRmlsZVBhdGggYWN0dWFsID0gRmls
ZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9v
YmFyLnhtbCIpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBH
VEVTVF9QQVRIX1NFUF8gImZvb2Jhci54bWwiLAotICAgICAgICAgICAgICAgYWN0dWFsLmNfc3Ry
KCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhf
U0VQXyAiZm9vYmFyLnhtbCIsCisgICAgICAgICAgICBhY3R1YWwuc3RyaW5nKCkpOwogfQogCiBU
RVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDJDb250YWluc1BhdGhTZXApIHsKICAgRmlsZVBhdGgg
YWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKAogICAgICAgRmlsZVBhdGgoImZvbyIgR1RF
U1RfUEFUSF9TRVBfKSwKICAgICAgIEZpbGVQYXRoKCJiYXIiIEdURVNUX1BBVEhfU0VQXyAiYmFy
LnhtbCIpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBHVEVT
VF9QQVRIX1NFUF8gImJhci54bWwiLAotICAgICAgICAgICAgICAgYWN0dWFsLmNfc3RyKCkpOwor
ICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXyAi
YmFyLnhtbCIsCisgICAgICAgICAgICBhY3R1YWwuc3RyaW5nKCkpOwogfQogCiBURVNUKENvbmNh
dFBhdGhzVGVzdCwgUGF0aDJFbmRzV2l0aFBhdGhTZXApIHsKICAgRmlsZVBhdGggYWN0dWFsID0g
RmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJiYXIiIEdURVNUX1BBVEhfU0VQXykp
OwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhf
U0VQXywgYWN0dWFsLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBf
ICJiYXIiIEdURVNUX1BBVEhfU0VQXywgYWN0dWFsLnN0cmluZygpKTsKIH0KIAogLy8gUmVtb3Zl
VHJhaWxpbmdQYXRoU2VwYXJhdG9yICIiIC0+ICIiCiBURVNUKFJlbW92ZVRyYWlsaW5nUGF0aFNl
cGFyYXRvclRlc3QsIEVtcHR5U3RyaW5nKSB7Ci0gIEVYUEVDVF9TVFJFUSgiIiwKLSAgICAgIEZp
bGVQYXRoKCIiKS5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKKyAgRVhQ
RUNUX0VRKCIiLCBGaWxlUGF0aCgiIikuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuc3Ry
aW5nKCkpOwogfQogCiAvLyBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IgImZvbyIgLT4gImZv
byIKIFRFU1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgRmlsZU5vU2xhc2hTdHJp
bmcpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28iLAotICAgICAgRmlsZVBhdGgoImZvbyIpLlJlbW92
ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImZvbyIsIEZp
bGVQYXRoKCJmb28iKS5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5zdHJpbmcoKSk7CiB9
CiAKIC8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiZm9vLyIgLT4gImZvbyIKIFRFU1Qo
UmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgU2hvdWxkUmVtb3ZlVHJhaWxpbmdTZXBh
cmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKAotICAgICAgImZvbyIsCi0gICAgICBGaWxlUGF0aCgi
Zm9vIiBHVEVTVF9QQVRIX1NFUF8pLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLmNfc3Ry
KCkpOworICBFWFBFQ1RfRVEoImZvbyIsCisgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRI
X1NFUF8pLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKICNpZiBHVEVT
VF9IQVNfQUxUX1BBVEhfU0VQXwotICBFWFBFQ1RfU1RSRVEoImZvbyIsCi0gICAgICAgICAgICAg
ICBGaWxlUGF0aCgiZm9vLyIpLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLmNfc3RyKCkp
OworICBFWFBFQ1RfRVEoImZvbyIsIEZpbGVQYXRoKCJmb28vIikuUmVtb3ZlVHJhaWxpbmdQYXRo
U2VwYXJhdG9yKCkuc3RyaW5nKCkpOwogI2VuZGlmCiB9CiAKIC8vIFJlbW92ZVRyYWlsaW5nUGF0
aFNlcGFyYXRvciAiZm9vL2Jhci8iIC0+ICJmb28vYmFyLyIKIFRFU1QoUmVtb3ZlVHJhaWxpbmdQ
YXRoU2VwYXJhdG9yVGVzdCwgU2hvdWxkUmVtb3ZlTGFzdFNlcGFyYXRvcikgewotICBFWFBFQ1Rf
U1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgICAgICAgICAgICAgRmlsZVBh
dGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXykKLSAgICAgICAg
ICAgICAgIC5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKKyAgRVhQRUNU
X0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKKyAgICAgICAgICAgIEZpbGVQYXRoKCJm
b28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBHVEVTVF9QQVRIX1NFUF8pCisgICAgICAgICAgICAg
ICAgLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKIH0KIAogLy8gUmVt
b3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28vYmFyIiAtPiAiZm9vL2JhciIKIFRFU1QoUmVt
b3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgU2hvdWxkUmV0dXJuVW5tb2RpZmllZCkgewot
ICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgICAgICAgICAg
ICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiKQotICAgICAgICAgICAgICAg
LlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImZv
byIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RF
U1RfUEFUSF9TRVBfICJiYXIiKQorICAgICAgICAgICAgICAgIC5SZW1vdmVUcmFpbGluZ1BhdGhT
ZXBhcmF0b3IoKS5zdHJpbmcoKSk7CiB9CiAKIFRFU1QoRGlyZWN0b3J5VGVzdCwgUm9vdERpcmVj
dG9yeUV4aXN0cykgewpAQCAtNDE1LDUwICs0MDYsNDcgQEAgVEVTVChEaXJlY3RvcnlUZXN0LCBF
bXB0eVBhdGhEaXJlY3RvcnlEb2VzTm90RXhpc3QpIHsKIAogVEVTVChEaXJlY3RvcnlUZXN0LCBD
dXJyZW50RGlyZWN0b3J5RXhpc3RzKSB7CiAjaWYgR1RFU1RfT1NfV0lORE9XUyAgLy8gV2UgYXJl
IG9uIFdpbmRvd3MuCi0jaWZuZGVmIF9XSU4zMl9DRSAgLy8gV2luZG93cyBDRSBkb2Vzbid0IGhh
dmUgYSBjdXJyZW50IGRpcmVjdG9yeS4KKyMgaWZuZGVmIF9XSU4zMl9DRSAgLy8gV2luZG93cyBD
RSBkb2Vzbid0IGhhdmUgYSBjdXJyZW50IGRpcmVjdG9yeS4KKwogICBFWFBFQ1RfVFJVRShGaWxl
UGF0aCgiLiIpLkRpcmVjdG9yeUV4aXN0cygpKTsKICAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi5c
XCIpLkRpcmVjdG9yeUV4aXN0cygpKTsKLSNlbmRpZiAgLy8gX1dJTjMyX0NFCisKKyMgZW5kaWYg
IC8vIF9XSU4zMl9DRQogI2Vsc2UKICAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi4iKS5EaXJlY3Rv
cnlFeGlzdHMoKSk7CiAgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIuLyIpLkRpcmVjdG9yeUV4aXN0
cygpKTsKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogfQogCi1URVNUKE5vcm1hbGl6ZVRl
c3QsIE51bGxTdHJpbmdzRXF1YWxFbXB0eURpcmVjdG9yeSkgewotICBFWFBFQ1RfU1RSRVEoIiIs
IEZpbGVQYXRoKE5VTEwpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIEZpbGVQYXRoKFN0
cmluZyhOVUxMKSkuY19zdHIoKSk7Ci19Ci0KIC8vICJmb28vYmFyIiA9PSBmb28vL2JhciIgPT0g
ImZvby8vL2JhciIKIFRFU1QoTm9ybWFsaXplVGVzdCwgTXVsdGlwbGVDb25zZWN1dGl2ZVNlcGFw
YXJhdG9yc0luTWlkc3RyaW5nKSB7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8gImJhciIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8g
ImJhciIpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJi
YXIiLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfIEdURVNU
X1BBVEhfU0VQXyAiYmFyIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8gImJhciIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRI
X1NFUF8gR1RFU1RfUEFUSF9TRVBfCi0gICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRI
X1NFUF8gImJhciIpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBf
ICJiYXIiLAorICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIi
KS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCisg
ICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBf
ICJiYXIiKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJh
ciIsCisgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFU
SF9TRVBfCisgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8gImJhciIpLnN0cmlu
ZygpKTsKIH0KIAogLy8gIi9iYXIiID09IC8vYmFyIiA9PSAiLy8vYmFyIgogVEVTVChOb3JtYWxp
emVUZXN0LCBNdWx0aXBsZUNvbnNlY3V0aXZlU2VwYXBhcmF0b3JzQXRTdHJpbmdTdGFydCkgewot
ICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgIEZpbGVQYXRoKEdURVNU
X1BBVEhfU0VQXyAiYmFyIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUShHVEVTVF9QQVRIX1NF
UF8gImJhciIsCi0gICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAi
YmFyIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUShHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0g
ICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NF
UF8gImJhciIpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAor
ICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOworICBFWFBFQ1Rf
RVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyBH
VEVTVF9QQVRIX1NFUF8gImJhciIpLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKEdURVNUX1BBVEhf
U0VQXyAiYmFyIiwKKyAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBf
IEdURVNUX1BBVEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOwogfQogCiAvLyAiZm9vLyIgPT0gZm9v
Ly8iID09ICJmb28vLy8iCiBURVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRpcGxlQ29uc2VjdXRpdmVT
ZXBhcGFyYXRvcnNBdFN0cmluZ0VuZCkgewotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFU
SF9TRVBfLAotICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXykuY19zdHIoKSk7Ci0g
IEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgRmlsZVBhdGgoImZvbyIg
R1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXykuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJF
USgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9T
RVBfIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8pLmNfc3RyKCkpOworICBFWFBFQ1Rf
RVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhf
U0VQXykuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAg
IEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8pLnN0cmluZygp
KTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKKyAgICBGaWxlUGF0aCgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXykuc3RyaW5n
KCkpOwogfQogCiAjaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KQEAgLTQ2NywxMiArNDU1LDEy
IEBAIFRFU1QoTm9ybWFsaXplVGVzdCwgTXVsdGlwbGVDb25zZWN1dGl2ZVNlcGFwYXJhdG9yc0F0
U3RyaW5nRW5kKSB7CiAvLyByZWdhcmRsZXNzIG9mIHRoZWlyIGNvbWJpbmF0aW9uIChlLmcuICJm
b29cIiA9PSJmb28vXCIgPT0KIC8vICJmb29cXC8iKS4KIFRFU1QoTm9ybWFsaXplVGVzdCwgTWl4
QWx0ZXJuYXRlU2VwYXJhdG9yQXRTdHJpbmdFbmQpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdU
RVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28vIikuY19zdHIoKSk7
Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICAgICAgICAgICBG
aWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gIi8iKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NU
UkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28v
LyIgR1RFU1RfUEFUSF9TRVBfKS5jX3N0cigpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BB
VEhfU0VQXywKKyAgICAgICAgICAgIEZpbGVQYXRoKCJmb28vIikuc3RyaW5nKCkpOworICBFWFBF
Q1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIg
R1RFU1RfUEFUSF9TRVBfICIvIikuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1Rf
UEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgoImZvby8vIiBHVEVTVF9QQVRIX1NFUF8p
LnN0cmluZygpKTsKIH0KIAogI2VuZGlmCkBAIC00ODEsMzEgKzQ2OSwzMSBAQCBURVNUKEFzc2ln
bm1lbnRPcGVyYXRvclRlc3QsIERlZmF1bHRBc3NpZ25lZFRvTm9uRGVmYXVsdCkgewogICBGaWxl
UGF0aCBkZWZhdWx0X3BhdGg7CiAgIEZpbGVQYXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgiKTsK
ICAgbm9uX2RlZmF1bHRfcGF0aCA9IGRlZmF1bHRfcGF0aDsKLSAgRVhQRUNUX1NUUkVRKCIiLCBu
b25fZGVmYXVsdF9wYXRoLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIGRlZmF1bHRfcGF0
aC5jX3N0cigpKTsgIC8vIFJIUyB2YXIgaXMgdW5jaGFuZ2VkLgorICBFWFBFQ1RfRVEoIiIsIG5v
bl9kZWZhdWx0X3BhdGguc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoIiIsIGRlZmF1bHRfcGF0aC5z
dHJpbmcoKSk7ICAvLyBSSFMgdmFyIGlzIHVuY2hhbmdlZC4KIH0KIAogVEVTVChBc3NpZ25tZW50
T3BlcmF0b3JUZXN0LCBOb25EZWZhdWx0QXNzaWduZWRUb0RlZmF1bHQpIHsKICAgRmlsZVBhdGgg
bm9uX2RlZmF1bHRfcGF0aCgicGF0aCIpOwogICBGaWxlUGF0aCBkZWZhdWx0X3BhdGg7CiAgIGRl
ZmF1bHRfcGF0aCA9IG5vbl9kZWZhdWx0X3BhdGg7Ci0gIEVYUEVDVF9TVFJFUSgicGF0aCIsIGRl
ZmF1bHRfcGF0aC5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJwYXRoIiwgbm9uX2RlZmF1bHRf
cGF0aC5jX3N0cigpKTsgIC8vIFJIUyB2YXIgaXMgdW5jaGFuZ2VkLgorICBFWFBFQ1RfRVEoInBh
dGgiLCBkZWZhdWx0X3BhdGguc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoInBhdGgiLCBub25fZGVm
YXVsdF9wYXRoLnN0cmluZygpKTsgIC8vIFJIUyB2YXIgaXMgdW5jaGFuZ2VkLgogfQogCiBURVNU
KEFzc2lnbm1lbnRPcGVyYXRvclRlc3QsIENvbnN0QXNzaWduZWRUb05vbkNvbnN0KSB7CiAgIGNv
bnN0IEZpbGVQYXRoIGNvbnN0X2RlZmF1bHRfcGF0aCgiY29uc3RfcGF0aCIpOwogICBGaWxlUGF0
aCBub25fZGVmYXVsdF9wYXRoKCJwYXRoIik7CiAgIG5vbl9kZWZhdWx0X3BhdGggPSBjb25zdF9k
ZWZhdWx0X3BhdGg7Ci0gIEVYUEVDVF9TVFJFUSgiY29uc3RfcGF0aCIsIG5vbl9kZWZhdWx0X3Bh
dGguY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiY29uc3RfcGF0aCIsIG5vbl9kZWZhdWx0X3BhdGgu
c3RyaW5nKCkpOwogfQogCiBjbGFzcyBEaXJlY3RvcnlDcmVhdGlvblRlc3QgOiBwdWJsaWMgVGVz
dCB7CiAgcHJvdGVjdGVkOgogICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgdGVzdGRhdGFf
cGF0aF8uU2V0KEZpbGVQYXRoKFN0cmluZzo6Rm9ybWF0KCIlcyVzJXMiLAotICAgICAgICBUZW1w
RGlyKCkuY19zdHIoKSwgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuY19zdHIoKSwKLSAgICAg
ICAgIl9kaXJlY3RvcnlfY3JlYXRpb24iIEdURVNUX1BBVEhfU0VQXyAidGVzdCIgR1RFU1RfUEFU
SF9TRVBfKSkpOworICAgIHRlc3RkYXRhX3BhdGhfLlNldChGaWxlUGF0aCgKKyAgICAgICAgVGVt
cERpcigpICsgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKworICAgICAgICAi
X2RpcmVjdG9yeV9jcmVhdGlvbiIgR1RFU1RfUEFUSF9TRVBfICJ0ZXN0IiBHVEVTVF9QQVRIX1NF
UF8pKTsKICAgICB0ZXN0ZGF0YV9maWxlXy5TZXQodGVzdGRhdGFfcGF0aF8uUmVtb3ZlVHJhaWxp
bmdQYXRoU2VwYXJhdG9yKCkpOwogCiAgICAgdW5pcXVlX2ZpbGUwXy5TZXQoRmlsZVBhdGg6Ok1h
a2VGaWxlTmFtZSh0ZXN0ZGF0YV9wYXRoXywgRmlsZVBhdGgoInVuaXF1ZSIpLApAQCAtNTI2LDIy
ICs1MTQsNiBAQCBjbGFzcyBEaXJlY3RvcnlDcmVhdGlvblRlc3QgOiBwdWJsaWMgVGVzdCB7CiAg
ICAgcG9zaXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhfLmNfc3RyKCkpOwogICB9CiAKLSAgU3RyaW5n
IFRlbXBEaXIoKSBjb25zdCB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSAgICByZXR1
cm4gU3RyaW5nKCJcXHRlbXBcXCIpOwotI2VsaWYgR1RFU1RfT1NfV0lORE9XUwotICAgIGNvbnN0
IGNoYXIqIHRlbXBfZGlyID0gcG9zaXg6OkdldEVudigiVEVNUCIpOwotICAgIGlmICh0ZW1wX2Rp
ciA9PSBOVUxMIHx8IHRlbXBfZGlyWzBdID09ICdcMCcpCi0gICAgICByZXR1cm4gU3RyaW5nKCJc
XHRlbXBcXCIpOwotICAgIGVsc2UgaWYgKFN0cmluZyh0ZW1wX2RpcikuRW5kc1dpdGgoIlxcIikp
Ci0gICAgICByZXR1cm4gU3RyaW5nKHRlbXBfZGlyKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4g
U3RyaW5nOjpGb3JtYXQoIiVzXFwiLCB0ZW1wX2Rpcik7Ci0jZWxzZQotICAgIHJldHVybiBTdHJp
bmcoIi90bXAvIik7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0gIH0KLQog
ICB2b2lkIENyZWF0ZVRleHRGaWxlKGNvbnN0IGNoYXIqIGZpbGVuYW1lKSB7CiAgICAgRklMRSog
ZiA9IHBvc2l4OjpGT3BlbihmaWxlbmFtZSwgInciKTsKICAgICBmcHJpbnRmKGYsICJ0ZXh0XG4i
KTsKQEAgLTU1OCwxMyArNTMwLDEzIEBAIGNsYXNzIERpcmVjdG9yeUNyZWF0aW9uVGVzdCA6IHB1
YmxpYyBUZXN0IHsKIH07CiAKIFRFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURp
cmVjdG9yaWVzUmVjdXJzaXZlbHkpIHsKLSAgRVhQRUNUX0ZBTFNFKHRlc3RkYXRhX3BhdGhfLkRp
cmVjdG9yeUV4aXN0cygpKSA8PCB0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpOworICBFWFBFQ1RfRkFM
U0UodGVzdGRhdGFfcGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkpIDw8IHRlc3RkYXRhX3BhdGhfLnN0
cmluZygpOwogICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1Jl
Y3Vyc2l2ZWx5KCkpOwogICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlz
dHMoKSk7CiB9CiAKIFRFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURpcmVjdG9y
aWVzRm9yQWxyZWFkeUV4aXN0aW5nUGF0aCkgewotICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfcGF0
aF8uRGlyZWN0b3J5RXhpc3RzKCkpIDw8IHRlc3RkYXRhX3BhdGhfLmNfc3RyKCk7CisgIEVYUEVD
VF9GQUxTRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlzdHMoKSkgPDwgdGVzdGRhdGFfcGF0
aF8uc3RyaW5nKCk7CiAgIEVYUEVDVF9UUlVFKHRlc3RkYXRhX3BhdGhfLkNyZWF0ZURpcmVjdG9y
aWVzUmVjdXJzaXZlbHkoKSk7CiAgIC8vIENhbGwgJ2NyZWF0ZScgYWdhaW4uLi4gc2hvdWxkIHN0
aWxsIHN1Y2NlZWQuCiAgIEVYUEVDVF9UUlVFKHRlc3RkYXRhX3BhdGhfLkNyZWF0ZURpcmVjdG9y
aWVzUmVjdXJzaXZlbHkoKSk7CkBAIC01NzMsNyArNTQ1LDcgQEAgVEVTVF9GKERpcmVjdG9yeUNy
ZWF0aW9uVGVzdCwgQ3JlYXRlRGlyZWN0b3JpZXNGb3JBbHJlYWR5RXhpc3RpbmdQYXRoKSB7CiBU
RVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0FuZFVuaXF1ZUZp
bGVuYW1lKSB7CiAgIEZpbGVQYXRoIGZpbGVfcGF0aChGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVG
aWxlTmFtZSh0ZXN0ZGF0YV9wYXRoXywKICAgICAgIEZpbGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIp
KTsKLSAgRVhQRUNUX1NUUkVRKHVuaXF1ZV9maWxlMF8uY19zdHIoKSwgZmlsZV9wYXRoLmNfc3Ry
KCkpOworICBFWFBFQ1RfRVEodW5pcXVlX2ZpbGUwXy5zdHJpbmcoKSwgZmlsZV9wYXRoLnN0cmlu
ZygpKTsKICAgRVhQRUNUX0ZBTFNFKGZpbGVfcGF0aC5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7
ICAvLyBmaWxlIG5vdCB0aGVyZQogCiAgIHRlc3RkYXRhX3BhdGhfLkNyZWF0ZURpcmVjdG9yaWVz
UmVjdXJzaXZlbHkoKTsKQEAgLTU4Myw3ICs1NTUsNyBAQCBURVNUX0YoRGlyZWN0b3J5Q3JlYXRp
b25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0FuZFVuaXF1ZUZpbGVuYW1lKSB7CiAKICAgRmlsZVBh
dGggZmlsZV9wYXRoMihGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFtZSh0ZXN0ZGF0YV9w
YXRoXywKICAgICAgIEZpbGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIpKTsKLSAgRVhQRUNUX1NUUkVR
KHVuaXF1ZV9maWxlMV8uY19zdHIoKSwgZmlsZV9wYXRoMi5jX3N0cigpKTsKKyAgRVhQRUNUX0VR
KHVuaXF1ZV9maWxlMV8uc3RyaW5nKCksIGZpbGVfcGF0aDIuc3RyaW5nKCkpOwogICBFWFBFQ1Rf
RkFMU0UoZmlsZV9wYXRoMi5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAvLyBmaWxlIG5vdCB0
aGVyZQogICBDcmVhdGVUZXh0RmlsZShmaWxlX3BhdGgyLmNfc3RyKCkpOwogICBFWFBFQ1RfVFJV
RShmaWxlX3BhdGgyLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsKQEAgLTYwNCw0MyArNTc2LDQz
IEBAIFRFU1QoTm9EaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZU5vRGlyZWN0b3JpZXNGb3JE
ZWZhdWx0WG1sRmlsZSkgewogCiBURVNUKEZpbGVQYXRoVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9y
KSB7CiAgIEZpbGVQYXRoIGZwOwotICBFWFBFQ1RfU1RSRVEoIiIsIGZwLmNfc3RyKCkpOworICBF
WFBFQ1RfRVEoIiIsIGZwLnN0cmluZygpKTsKIH0KIAogVEVTVChGaWxlUGF0aFRlc3QsIENoYXJB
bmRDb3B5Q29uc3RydWN0b3JzKSB7CiAgIGNvbnN0IEZpbGVQYXRoIGZwKCJzcGljeSIpOwotICBF
WFBFQ1RfU1RSRVEoInNwaWN5IiwgZnAuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgic3BpY3kiLCBm
cC5zdHJpbmcoKSk7CiAKICAgY29uc3QgRmlsZVBhdGggZnBfY29weShmcCk7Ci0gIEVYUEVDVF9T
VFJFUSgic3BpY3kiLCBmcF9jb3B5LmNfc3RyKCkpOworICBFWFBFQ1RfRVEoInNwaWN5IiwgZnBf
Y29weS5zdHJpbmcoKSk7CiB9CiAKIFRFU1QoRmlsZVBhdGhUZXN0LCBTdHJpbmdDb25zdHJ1Y3Rv
cikgewotICBjb25zdCBGaWxlUGF0aCBmcChTdHJpbmcoImNpZGVyIikpOwotICBFWFBFQ1RfU1RS
RVEoImNpZGVyIiwgZnAuY19zdHIoKSk7CisgIGNvbnN0IEZpbGVQYXRoIGZwKHN0ZDo6c3RyaW5n
KCJjaWRlciIpKTsKKyAgRVhQRUNUX0VRKCJjaWRlciIsIGZwLnN0cmluZygpKTsKIH0KIAogVEVT
VChGaWxlUGF0aFRlc3QsIFNldCkgewogICBjb25zdCBGaWxlUGF0aCBhcHBsZSgiYXBwbGUiKTsK
ICAgRmlsZVBhdGggbWFjKCJtYWMiKTsKICAgbWFjLlNldChhcHBsZSk7ICAvLyBJbXBsZW1lbnQg
U2V0KCkgc2luY2Ugb3ZlcmxvYWRpbmcgb3BlcmF0b3I9IGlzIGZvcmJpZGRlbi4KLSAgRVhQRUNU
X1NUUkVRKCJhcHBsZSIsIG1hYy5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJhcHBsZSIsIGFw
cGxlLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoImFwcGxlIiwgbWFjLnN0cmluZygpKTsKKyAgRVhQ
RUNUX0VRKCJhcHBsZSIsIGFwcGxlLnN0cmluZygpKTsKIH0KIAogVEVTVChGaWxlUGF0aFRlc3Qs
IFRvU3RyaW5nKSB7CiAgIGNvbnN0IEZpbGVQYXRoIGZpbGUoImRyaW5rIik7Ci0gIFN0cmluZyBz
dHIoZmlsZS5Ub1N0cmluZygpKTsKLSAgRVhQRUNUX1NUUkVRKCJkcmluayIsIHN0ci5jX3N0cigp
KTsKKyAgRVhQRUNUX0VRKCJkcmluayIsIGZpbGUuc3RyaW5nKCkpOwogfQogCiBURVNUKEZpbGVQ
YXRoVGVzdCwgUmVtb3ZlRXh0ZW5zaW9uKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYXBwIiwgRmlsZVBh
dGgoImFwcC5leGUiKS5SZW1vdmVFeHRlbnNpb24oImV4ZSIpLmNfc3RyKCkpOwotICBFWFBFQ1Rf
U1RSRVEoIkFQUCIsIEZpbGVQYXRoKCJBUFAuRVhFIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5j
X3N0cigpKTsKKyAgRVhQRUNUX0VRKCJhcHAiLCBGaWxlUGF0aCgiYXBwLmNjIikuUmVtb3ZlRXh0
ZW5zaW9uKCJjYyIpLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJhcHAiLCBGaWxlUGF0aCgiYXBw
LmV4ZSIpLlJlbW92ZUV4dGVuc2lvbigiZXhlIikuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoIkFQ
UCIsIEZpbGVQYXRoKCJBUFAuRVhFIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5zdHJpbmcoKSk7
CiB9CiAKIFRFU1QoRmlsZVBhdGhUZXN0LCBSZW1vdmVFeHRlbnNpb25XaGVuVGhlcmVJc05vRXh0
ZW5zaW9uKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYXBwIiwgRmlsZVBhdGgoImFwcCIpLlJlbW92ZUV4
dGVuc2lvbigiZXhlIikuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiYXBwIiwgRmlsZVBhdGgoImFw
cCIpLlJlbW92ZUV4dGVuc2lvbigiZXhlIikuc3RyaW5nKCkpOwogfQogCiBURVNUKEZpbGVQYXRo
VGVzdCwgSXNEaXJlY3RvcnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdC1saW5rZWRfcHRyX3Rlc3QuY2MKaW5kZXggZWFlODIyOTZjOTIxZjBhZmU0MmZj
MjMzNTc0OTcwZWU3NzA5ZTViZC4uNmZjZjUxMjRhOGMzMWFmODQ4ZmQxMDc3YTQ1MWE3YzQxODQ0
YzQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saW5r
ZWRfcHRyX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1s
aW5rZWRfcHRyX3Rlc3QuY2MKQEAgLTMwLDEwICszMCwxMCBAQAogLy8gQXV0aG9yczogRGFuIEVn
bm9yIChlZ25vckBnb29nbGUuY29tKQogLy8gUG9ydGVkIHRvIFdpbmRvd3M6IFZhZGltIEJlcm1h
biAodmFkaW1iQGdvb2dsZS5jb20pCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1s
aW5rZWRfcHRyLmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5o
IgogCiAjaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2UgewogCkBAIC03Nyw3ICs3Nyw4IEBAIGNs
YXNzIExpbmtlZFB0clRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBURVNUX0YoTGlua2Vk
UHRyVGVzdCwgR2VuZXJhbFRlc3QpIHsKICAgewogICAgIGxpbmtlZF9wdHI8QT4gYTAsIGExLCBh
MjsKLSAgICBhMCA9IGEwOworICAgIC8vIFVzZSBleHBsaWNpdCBmdW5jdGlvbiBjYWxsIG5vdGF0
aW9uIGhlcmUgdG8gc3VwcHJlc3Mgc2VsZi1hc3NpZ24gd2FybmluZy4KKyAgICBhMC5vcGVyYXRv
cj0oYTApOwogICAgIGExID0gYTI7CiAgICAgQVNTRVJUX0VRKGEwLmdldCgpLCBzdGF0aWNfY2Fz
dDxBKj4oTlVMTCkpOwogICAgIEFTU0VSVF9FUShhMS5nZXQoKSwgc3RhdGljX2Nhc3Q8QSo+KE5V
TEwpKTsKQEAgLTE0Nyw4ICsxNDgsNyBAQCBURVNUX0YoTGlua2VkUHRyVGVzdCwgR2VuZXJhbFRl
c3QpIHsKICAgICAiQTAgZHRvclxuIgogICAgICJBMyBkdG9yXG4iCiAgICAgIkExIGR0b3JcbiIs
Ci0gICAgaGlzdG9yeS0+R2V0U3RyaW5nKCkuY19zdHIoKQotICApOworICAgIGhpc3RvcnktPkdl
dFN0cmluZygpLmNfc3RyKCkpOwogfQogCiB9ICAvLyBVbm5hbWVkIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saXN0ZW5lcl90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saXN0ZW5lcl90ZXN0LmNjCmlu
ZGV4IGM5YmUzOWE4N2U4OGQ4OTYwMWI5YmM5MzcyYTE0ZWRhYWY2MTI5NDMuLjkwNzQ3Njg1ZjA3
MmIyMjEwOGZjZDFjMzFkNWNjYzVkNDYyMjk2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWxpc3RlbmVyX3Rlc3QuY2MKQEAgLTMzLDcgKzMzLDcgQEAK
IC8vIFRoaXMgZmlsZSB2ZXJpZmllcyBHb29nbGUgVGVzdCBldmVudCBsaXN0ZW5lcnMgcmVjZWl2
ZSBldmVudHMgYXQgdGhlCiAvLyByaWdodCB0aW1lcy4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKICNpbmNsdWRlIDx2ZWN0b3I+CiAKIHVzaW5n
IDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50OwpAQCAtNDUsMTcgKzQ1LDE2IEBA
IHVzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXI7CiB1c2luZyA6OnRlc3Rpbmc6OlRl
c3RJbmZvOwogdXNpbmcgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDsKIHVzaW5nIDo6dGVzdGlu
Zzo6VW5pdFRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmc7CiAKIC8vIFVz
ZWQgYnkgdGVzdHMgdG8gcmVnaXN0ZXIgdGhlaXIgZXZlbnRzLgotc3RkOjp2ZWN0b3I8U3RyaW5n
PiogZ19ldmVudHMgPSBOVUxMOworc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiBnX2V2ZW50cyA9
IE5VTEw7CiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIGNs
YXNzIEV2ZW50UmVjb3JkaW5nTGlzdGVuZXIgOiBwdWJsaWMgVGVzdEV2ZW50TGlzdGVuZXIgewog
IHB1YmxpYzoKLSAgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lcihjb25zdCBjaGFyKiBuYW1lKSA6IG5h
bWVfKG5hbWUpIHt9CisgIGV4cGxpY2l0IEV2ZW50UmVjb3JkaW5nTGlzdGVuZXIoY29uc3QgY2hh
ciogbmFtZSkgOiBuYW1lXyhuYW1lKSB7fQogCiAgcHJvdGVjdGVkOgogICB2aXJ0dWFsIHZvaWQg
T25UZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7CkBAIC0x
MTksNTQgKzExOCw1MiBAQCBjbGFzcyBFdmVudFJlY29yZGluZ0xpc3RlbmVyIDogcHVibGljIFRl
c3RFdmVudExpc3RlbmVyIHsKICAgfQogCiAgcHJpdmF0ZToKLSAgU3RyaW5nIEdldEZ1bGxNZXRo
b2ROYW1lKGNvbnN0IGNoYXIqIG5hbWUpIHsKLSAgICBNZXNzYWdlIG1lc3NhZ2U7Ci0gICAgbWVz
c2FnZSA8PCBuYW1lXyA8PCAiLiIgPDwgbmFtZTsKLSAgICByZXR1cm4gbWVzc2FnZS5HZXRTdHJp
bmcoKTsKKyAgc3RkOjpzdHJpbmcgR2V0RnVsbE1ldGhvZE5hbWUoY29uc3QgY2hhciogbmFtZSkg
eworICAgIHJldHVybiBuYW1lXyArICIuIiArIG5hbWU7CiAgIH0KIAotICBTdHJpbmcgbmFtZV87
CisgIHN0ZDo6c3RyaW5nIG5hbWVfOwogfTsKIAogY2xhc3MgRW52aXJvbm1lbnRJbnZvY2F0aW9u
Q2F0Y2hlciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7CiAgcHJvdGVjdGVkOgogICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkVudmlyb25tZW50
OjpTZXRVcCIpKTsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKCJFbnZpcm9ubWVudDo6U2V0VXAi
KTsKICAgfQogCiAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBnX2V2ZW50cy0+cHVz
aF9iYWNrKFN0cmluZygiRW52aXJvbm1lbnQ6OlRlYXJEb3duIikpOworICAgIGdfZXZlbnRzLT5w
dXNoX2JhY2soIkVudmlyb25tZW50OjpUZWFyRG93biIpOwogICB9CiB9OwogCiBjbGFzcyBMaXN0
ZW5lclRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgcHJvdGVjdGVkOgogICBzdGF0aWMgdm9pZCBTZXRV
cFRlc3RDYXNlKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJMaXN0ZW5lclRl
c3Q6OlNldFVwVGVzdENhc2UiKSk7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJU
ZXN0OjpTZXRVcFRlc3RDYXNlIik7CiAgIH0KIAogICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RD
YXNlKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJMaXN0ZW5lclRlc3Q6OlRl
YXJEb3duVGVzdENhc2UiKSk7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0
OjpUZWFyRG93blRlc3RDYXNlIik7CiAgIH0KIAogICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0g
ICAgZ19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6U2V0VXAiKSk7Cisg
ICAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0OjpTZXRVcCIpOwogICB9CiAKICAg
dmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5n
KCJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duIikpOworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxp
c3RlbmVyVGVzdDo6VGVhckRvd24iKTsKICAgfQogfTsKIAogVEVTVF9GKExpc3RlbmVyVGVzdCwg
RG9lc0ZvbykgewogICAvLyBUZXN0IGV4ZWN1dGlvbiBvcmRlciB3aXRoaW4gYSB0ZXN0IGNhc2Ug
aXMgbm90IGd1YXJhbnRlZWQgc28gd2UgYXJlIG5vdAogICAvLyByZWNvcmRpbmcgdGhlIHRlc3Qg
bmFtZS4KLSAgZ19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6KiBUZXN0
IEJvZHkiKSk7CisgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJv
ZHkiKTsKICAgU1VDQ0VFRCgpOyAgLy8gVHJpZ2dlcnMgT25UZXN0UGFydFJlc3VsdC4KIH0KIAog
VEVTVF9GKExpc3RlbmVyVGVzdCwgRG9lc0JhcikgewotICBnX2V2ZW50cy0+cHVzaF9iYWNrKFN0
cmluZygiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIpKTsKKyAgZ19ldmVudHMtPnB1c2hfYmFj
aygiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIpOwogICBTVUNDRUVEKCk7ICAvLyBUcmlnZ2Vy
cyBPblRlc3RQYXJ0UmVzdWx0LgogfQogCkBAIC0xNzcsMTggKzE3NCwxOCBAQCBURVNUX0YoTGlz
dGVuZXJUZXN0LCBEb2VzQmFyKSB7CiB1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpFbnZpcm9u
bWVudEludm9jYXRpb25DYXRjaGVyOwogdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RXZlbnRS
ZWNvcmRpbmdMaXN0ZW5lcjsKIAotdm9pZCBWZXJpZnlSZXN1bHRzKGNvbnN0IHN0ZDo6dmVjdG9y
PFN0cmluZz4mIGRhdGEsCit2b2lkIFZlcmlmeVJlc3VsdHMoY29uc3Qgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+JiBkYXRhLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0KiBl
eHBlY3RlZF9kYXRhLAotICAgICAgICAgICAgICAgICAgIGludCBleHBlY3RlZF9kYXRhX3NpemUp
IHsKLSAgY29uc3QgaW50IGFjdHVhbF9zaXplID0gZGF0YS5zaXplKCk7CisgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGV4cGVjdGVkX2RhdGFfc2l6ZSkgeworICBjb25zdCBzaXplX3QgYWN0dWFs
X3NpemUgPSBkYXRhLnNpemUoKTsKICAgLy8gSWYgdGhlIGZvbGxvd2luZyBhc3NlcnRpb24gZmFp
bHMsIGEgbmV3IGVudHJ5IHdpbGwgYmUgYXBwZW5kZWQgdG8KICAgLy8gZGF0YS4gIEhlbmNlIHdl
IHNhdmUgZGF0YS5zaXplKCkgZmlyc3QuCiAgIEVYUEVDVF9FUShleHBlY3RlZF9kYXRhX3NpemUs
IGFjdHVhbF9zaXplKTsKIAogICAvLyBDb21wYXJlcyB0aGUgY29tbW9uIHByZWZpeC4KLSAgY29u
c3QgaW50IHNob3J0ZXJfc2l6ZSA9IGV4cGVjdGVkX2RhdGFfc2l6ZSA8PSBhY3R1YWxfc2l6ZSA/
CisgIGNvbnN0IHNpemVfdCBzaG9ydGVyX3NpemUgPSBleHBlY3RlZF9kYXRhX3NpemUgPD0gYWN0
dWFsX3NpemUgPwogICAgICAgZXhwZWN0ZWRfZGF0YV9zaXplIDogYWN0dWFsX3NpemU7Ci0gIGlu
dCBpID0gMDsKKyAgc2l6ZV90IGkgPSAwOwogICBmb3IgKDsgaSA8IHNob3J0ZXJfc2l6ZTsgKytp
KSB7CiAgICAgQVNTRVJUX1NUUkVRKGV4cGVjdGVkX2RhdGFbaV0sIGRhdGFbaV0uY19zdHIoKSkK
ICAgICAgICAgPDwgImF0IHBvc2l0aW9uICIgPDwgaTsKQEAgLTE5NiwxMiArMTkzLDEzIEBAIHZv
aWQgVmVyaWZ5UmVzdWx0cyhjb25zdCBzdGQ6OnZlY3RvcjxTdHJpbmc+JiBkYXRhLAogCiAgIC8v
IFByaW50cyBleHRyYSBlbGVtZW50cyBpbiB0aGUgYWN0dWFsIGRhdGEuCiAgIGZvciAoOyBpIDwg
YWN0dWFsX3NpemU7ICsraSkgewotICAgIHByaW50ZigiICBBY3R1YWwgZXZlbnQgIyVkOiAlc1xu
IiwgaSwgZGF0YVtpXS5jX3N0cigpKTsKKyAgICBwcmludGYoIiAgQWN0dWFsIGV2ZW50ICMlbHU6
ICVzXG4iLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpKSwgZGF0YVtpXS5j
X3N0cigpKTsKICAgfQogfQogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAg
c3RkOjp2ZWN0b3I8U3RyaW5nPiBldmVudHM7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBl
dmVudHM7CiAgIGdfZXZlbnRzID0gJmV2ZW50czsKICAgSW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFy
Z3YpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LW1l
c3NhZ2VfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbWVzc2Fn
ZV90ZXN0LmNjCmluZGV4IGU0MmIwMzQ0Nzg3MmUzZThmMDdhOWE0YWRkMmJlNWRkNDY5ODBiNTUu
LjE3NTIzOGVmNGU2NGFkYjRlMWY3ODhmMTNhNGVkMDRkNjA2NTdlMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjCkBAIC0zMSw4
OCArMzEsODAgQEAKIC8vCiAvLyBUZXN0cyBmb3IgdGhlIE1lc3NhZ2UgY2xhc3MuCiAKLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC1tZXNzYWdlLmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2Fn
ZS5oIgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgogCiBuYW1lc3BhY2UgewogCiB1c2luZyA6OnRlc3Rpbmc6Ok1lc3NhZ2U7Ci11c2luZyA6OnRl
c3Rpbmc6OmludGVybmFsOjpTdHJTdHJlYW07Ci0KLS8vIEEgaGVscGVyIGZ1bmN0aW9uIHRoYXQg
dHVybnMgYSBNZXNzYWdlIGludG8gYSBDIHN0cmluZy4KLWNvbnN0IGNoYXIqIFRvQ1N0cmluZyhj
b25zdCBNZXNzYWdlJiBtc2cpIHsKLSAgc3RhdGljIHRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmcg
cmVzdWx0OwotICByZXN1bHQgPSBtc2cuR2V0U3RyaW5nKCk7Ci0gIHJldHVybiByZXN1bHQuY19z
dHIoKTsKLX0KIAogLy8gVGVzdHMgdGhlIHRlc3Rpbmc6Ok1lc3NhZ2UgY2xhc3MKIAogLy8gVGVz
dHMgdGhlIGRlZmF1bHQgY29uc3RydWN0b3IuCiBURVNUKE1lc3NhZ2VUZXN0LCBEZWZhdWx0Q29u
c3RydWN0b3IpIHsKICAgY29uc3QgTWVzc2FnZSBtc2c7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgVG9D
U3RyaW5nKG1zZykpOworICBFWFBFQ1RfRVEoIiIsIG1zZy5HZXRTdHJpbmcoKSk7CiB9CiAKIC8v
IFRlc3RzIHRoZSBjb3B5IGNvbnN0cnVjdG9yLgogVEVTVChNZXNzYWdlVGVzdCwgQ29weUNvbnN0
cnVjdG9yKSB7CiAgIGNvbnN0IE1lc3NhZ2UgbXNnMSgiSGVsbG8iKTsKICAgY29uc3QgTWVzc2Fn
ZSBtc2cyKG1zZzEpOwotICBFWFBFQ1RfU1RSRVEoIkhlbGxvIiwgVG9DU3RyaW5nKG1zZzIpKTsK
KyAgRVhQRUNUX0VRKCJIZWxsbyIsIG1zZzIuR2V0U3RyaW5nKCkpOwogfQogCiAvLyBUZXN0cyBj
b25zdHJ1Y3RpbmcgYSBNZXNzYWdlIGZyb20gYSBDLXN0cmluZy4KIFRFU1QoTWVzc2FnZVRlc3Qs
IENvbnN0cnVjdHNGcm9tQ1N0cmluZykgewogICBNZXNzYWdlIG1zZygiSGVsbG8iKTsKLSAgRVhQ
RUNUX1NUUkVRKCJIZWxsbyIsIFRvQ1N0cmluZyhtc2cpKTsKKyAgRVhQRUNUX0VRKCJIZWxsbyIs
IG1zZy5HZXRTdHJpbmcoKSk7CiB9CiAKIC8vIFRlc3RzIHN0cmVhbWluZyBhIGZsb2F0LgogVEVT
VChNZXNzYWdlVGVzdCwgU3RyZWFtc0Zsb2F0KSB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IHMgPSBU
b0NTdHJpbmcoTWVzc2FnZSgpIDw8IDEuMjM0NTZGIDw8ICIgIiA8PCAyLjM0NTY3Rik7CisgIGNv
bnN0IHN0ZDo6c3RyaW5nIHMgPSAoTWVzc2FnZSgpIDw8IDEuMjM0NTZGIDw8ICIgIiA8PCAyLjM0
NTY3RikuR2V0U3RyaW5nKCk7CiAgIC8vIEJvdGggbnVtYmVycyBzaG91bGQgYmUgcHJpbnRlZCB3
aXRoIGVub3VnaCBwcmVjaXNpb24uCi0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNT
dWJzdHJpbmcsICIxLjIzNDU2MCIsIHMpOwotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6
OklzU3Vic3RyaW5nLCAiIDIuMzQ1NjY5Iiwgcyk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVz
dGluZzo6SXNTdWJzdHJpbmcsICIxLjIzNDU2MCIsIHMuY19zdHIoKSk7CisgIEVYUEVDVF9QUkVE
X0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIgMi4zNDU2NjkiLCBzLmNfc3RyKCkpOwog
fQogCiAvLyBUZXN0cyBzdHJlYW1pbmcgYSBkb3VibGUuCiBURVNUKE1lc3NhZ2VUZXN0LCBTdHJl
YW1zRG91YmxlKSB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IHMgPSBUb0NTdHJpbmcoTWVzc2FnZSgp
IDw8IDEyNjA1NzA4ODAuNDU1NTQ5NyA8PCAiICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCAxMjYwNTcyMjY1LjE5NTQ1MzQpOworICBjb25zdCBzdGQ6OnN0cmluZyBzID0g
KE1lc3NhZ2UoKSA8PCAxMjYwNTcwODgwLjQ1NTU0OTcgPDwgIiAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgMTI2MDU3MjI2NS4xOTU0NTM0KS5HZXRTdHJpbmcoKTsKICAg
Ly8gQm90aCBudW1iZXJzIHNob3VsZCBiZSBwcmludGVkIHdpdGggZW5vdWdoIHByZWNpc2lvbi4K
LSAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIjEyNjA1NzA4ODAu
NDUiLCBzKTsKLSAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIiAx
MjYwNTcyMjY1LjE5Iiwgcyk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJz
dHJpbmcsICIxMjYwNTcwODgwLjQ1Iiwgcy5jX3N0cigpKTsKKyAgRVhQRUNUX1BSRURfRk9STUFU
Mih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIiAxMjYwNTcyMjY1LjE5Iiwgcy5jX3N0cigpKTsKIH0K
IAogLy8gVGVzdHMgc3RyZWFtaW5nIGEgbm9uLWNoYXIgcG9pbnRlci4KIFRFU1QoTWVzc2FnZVRl
c3QsIFN0cmVhbXNQb2ludGVyKSB7CiAgIGludCBuID0gMDsKICAgaW50KiBwID0gJm47Ci0gIEVY
UEVDVF9TVFJORSgiKG51bGwpIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCBwKSk7CisgIEVYUEVD
VF9ORSgiKG51bGwpIiwgKE1lc3NhZ2UoKSA8PCBwKS5HZXRTdHJpbmcoKSk7CiB9CiAKIC8vIFRl
c3RzIHN0cmVhbWluZyBhIE5VTEwgbm9uLWNoYXIgcG9pbnRlci4KIFRFU1QoTWVzc2FnZVRlc3Qs
IFN0cmVhbXNOdWxsUG9pbnRlcikgewogICBpbnQqIHAgPSBOVUxMOwotICBFWFBFQ1RfU1RSRVEo
IihudWxsKSIsIFRvQ1N0cmluZyhNZXNzYWdlKCkgPDwgcCkpOworICBFWFBFQ1RfRVEoIihudWxs
KSIsIChNZXNzYWdlKCkgPDwgcCkuR2V0U3RyaW5nKCkpOwogfQogCiAvLyBUZXN0cyBzdHJlYW1p
bmcgYSBDIHN0cmluZy4KIFRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNDU3RyaW5nKSB7Ci0gIEVY
UEVDVF9TVFJFUSgiRm9vIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCAiRm9vIikpOworICBFWFBF
Q1RfRVEoIkZvbyIsIChNZXNzYWdlKCkgPDwgIkZvbyIpLkdldFN0cmluZygpKTsKIH0KIAogLy8g
VGVzdHMgc3RyZWFtaW5nIGEgTlVMTCBDIHN0cmluZy4KIFRFU1QoTWVzc2FnZVRlc3QsIFN0cmVh
bXNOdWxsQ1N0cmluZykgewogICBjaGFyKiBwID0gTlVMTDsKLSAgRVhQRUNUX1NUUkVRKCIobnVs
bCkiLCBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8IHApKTsKKyAgRVhQRUNUX0VRKCIobnVsbCkiLCAo
TWVzc2FnZSgpIDw8IHApLkdldFN0cmluZygpKTsKIH0KIAogLy8gVGVzdHMgc3RyZWFtaW5nIHN0
ZDo6c3RyaW5nLgogVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc1N0cmluZykgewogICBjb25zdCA6
OnN0ZDo6c3RyaW5nIHN0cigiSGVsbG8iKTsKLSAgRVhQRUNUX1NUUkVRKCJIZWxsbyIsIFRvQ1N0
cmluZyhNZXNzYWdlKCkgPDwgc3RyKSk7CisgIEVYUEVDVF9FUSgiSGVsbG8iLCAoTWVzc2FnZSgp
IDw8IHN0cikuR2V0U3RyaW5nKCkpOwogfQogCiAvLyBUZXN0cyB0aGF0IHdlIGNhbiBvdXRwdXQg
c3RyaW5ncyBjb250YWluaW5nIGVtYmVkZGVkIE5VTHMuCkBAIC0xMjEsNDIgKzExMyw0MiBAQCBU
RVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zU3RyaW5nV2l0aEVtYmVkZGVkTlVMKSB7CiAgICAgICAi
SGVyZSdzIGEgTlVMXDAgYW5kIHNvbWUgbW9yZSBzdHJpbmciOwogICBjb25zdCA6OnN0ZDo6c3Ry
aW5nIHN0cmluZ193aXRoX251bChjaGFyX2FycmF5X3dpdGhfbnVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoY2hhcl9hcnJheV93aXRoX251bCkgLSAxKTsK
LSAgRVhQRUNUX1NUUkVRKCJIZXJlJ3MgYSBOVUxcXDAgYW5kIHNvbWUgbW9yZSBzdHJpbmciLAot
ICAgICAgICAgICAgICAgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCBzdHJpbmdfd2l0aF9udWwpKTsK
KyAgRVhQRUNUX0VRKCJIZXJlJ3MgYSBOVUxcXDAgYW5kIHNvbWUgbW9yZSBzdHJpbmciLAorICAg
ICAgICAgICAgKE1lc3NhZ2UoKSA8PCBzdHJpbmdfd2l0aF9udWwpLkdldFN0cmluZygpKTsKIH0K
IAogLy8gVGVzdHMgc3RyZWFtaW5nIGEgTlVMIGNoYXIuCiBURVNUKE1lc3NhZ2VUZXN0LCBTdHJl
YW1zTlVMQ2hhcikgewotICBFWFBFQ1RfU1RSRVEoIlxcMCIsIFRvQ1N0cmluZyhNZXNzYWdlKCkg
PDwgJ1wwJykpOworICBFWFBFQ1RfRVEoIlxcMCIsIChNZXNzYWdlKCkgPDwgJ1wwJykuR2V0U3Ry
aW5nKCkpOwogfQogCiAvLyBUZXN0cyBzdHJlYW1pbmcgaW50LgogVEVTVChNZXNzYWdlVGVzdCwg
U3RyZWFtc0ludCkgewotICBFWFBFQ1RfU1RSRVEoIjEyMyIsIFRvQ1N0cmluZyhNZXNzYWdlKCkg
PDwgMTIzKSk7CisgIEVYUEVDVF9FUSgiMTIzIiwgKE1lc3NhZ2UoKSA8PCAxMjMpLkdldFN0cmlu
ZygpKTsKIH0KIAogLy8gVGVzdHMgdGhhdCBiYXNpYyBJTyBtYW5pcHVsYXRvcnMgKGVuZGwsIGVu
ZHMsIGFuZCBmbHVzaCkgY2FuIGJlCiAvLyBzdHJlYW1lZCB0byBNZXNzYWdlLgogVEVTVChNZXNz
YWdlVGVzdCwgU3RyZWFtc0Jhc2ljSW9NYW5pcCkgewotICBFWFBFQ1RfU1RSRVEoIkxpbmUgMS5c
bkEgTlVMIGNoYXIgXFwwIGluIGxpbmUgMi4iLAotICAgICAgICAgICAgICAgVG9DU3RyaW5nKE1l
c3NhZ2UoKSA8PCAiTGluZSAxLiIgPDwgc3RkOjplbmRsCisgIEVYUEVDVF9FUSgiTGluZSAxLlxu
QSBOVUwgY2hhciBcXDAgaW4gbGluZSAyLiIsCisgICAgICAgICAgICAgICAoTWVzc2FnZSgpIDw8
ICJMaW5lIDEuIiA8PCBzdGQ6OmVuZGwKICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiQSBO
VUwgY2hhciAiIDw8IHN0ZDo6ZW5kcyA8PCBzdGQ6OmZsdXNoCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgIiBpbiBsaW5lIDIuIikpOworICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIg
aW4gbGluZSAyLiIpLkdldFN0cmluZygpKTsKIH0KIAogLy8gVGVzdHMgTWVzc2FnZTo6R2V0U3Ry
aW5nKCkKIFRFU1QoTWVzc2FnZVRlc3QsIEdldFN0cmluZykgewogICBNZXNzYWdlIG1zZzsKICAg
bXNnIDw8IDEgPDwgIiBsYW1iIjsKLSAgRVhQRUNUX1NUUkVRKCIxIGxhbWIiLCBtc2cuR2V0U3Ry
aW5nKCkuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiMSBsYW1iIiwgbXNnLkdldFN0cmluZygpKTsK
IH0KIAogLy8gVGVzdHMgc3RyZWFtaW5nIGEgTWVzc2FnZSBvYmplY3QgdG8gYW4gb3N0cmVhbS4K
IFRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNUb09TdHJlYW0pIHsKICAgTWVzc2FnZSBtc2coIkhl
bGxvIik7Ci0gIFN0clN0cmVhbSBzczsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKICAgc3Mg
PDwgbXNnOwotICBFWFBFQ1RfU1RSRVEoIkhlbGxvIiwgdGVzdGluZzo6aW50ZXJuYWw6OlN0clN0
cmVhbVRvU3RyaW5nKCZzcykuY19zdHIoKSk7CisgIEVYUEVDVF9FUSgiSGVsbG8iLCB0ZXN0aW5n
OjppbnRlcm5hbDo6U3RyaW5nU3RyZWFtVG9TdHJpbmcoJnNzKSk7CiB9CiAKIC8vIFRlc3RzIHRo
YXQgYSBNZXNzYWdlIG9iamVjdCBkb2Vzbid0IHRha2UgdXAgdG9vIG11Y2ggc3RhY2sgc3BhY2Uu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LW9wdGlvbnNf
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Qtb3B0aW9uc190ZXN0
LmNjCmluZGV4IDJlMmNiYzkyZTVlMDI4Yzc0YzgyZjA3NTBmZGQ4YmRmYjRlODgzMWUuLjU1ODZk
YzNiMWIyNWM5YjhlZGFmZjUwMWQ5Njk3YWJlYWJiMjVmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Qtb3B0aW9uc190ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Qtb3B0aW9uc190ZXN0LmNjCkBAIC0zOCwxMiArMzgs
MTIgQEAKIC8vIG1ha2UtZmlsZXMgb24gV2luZG93cyBhbmQgb3RoZXIgcGxhdGZvcm1zLiBEbyBu
b3QgI2luY2x1ZGUgdGhpcyBmaWxlCiAvLyBhbnl3aGVyZSBlbHNlIQogCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAjaWYgR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUKLSNpbmNsdWRlIDx3aW5kb3dzLmg+CisjIGluY2x1ZGUgPHdpbmRvd3MuaD4K
ICNlbGlmIEdURVNUX09TX1dJTkRPV1MKLSNpbmNsdWRlIDxkaXJlY3QuaD4KKyMgaW5jbHVkZSA8
ZGlyZWN0Lmg+CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAKIC8vIEluZGlj
YXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MK
QEAgLTc4LDE0ICs3OCwxNCBAQCBURVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZvcm1hdCkg
ewogCiBURVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZpbGVEZWZhdWx0KSB7CiAgIEdURVNU
X0ZMQUcob3V0cHV0KSA9ICIiOwotICBFWFBFQ1RfU1RSRVEoR2V0QWJzb2x1dGVQYXRoT2YoRmls
ZVBhdGgoInRlc3RfZGV0YWlsLnhtbCIpKS5jX3N0cigpLAotICAgICAgICAgICAgICAgVW5pdFRl
c3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0cigpKTsKKyAgRVhQ
RUNUX0VRKEdldEFic29sdXRlUGF0aE9mKEZpbGVQYXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuc3Ry
aW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0
cHV0RmlsZSgpKTsKIH0KIAogVEVTVChYbWxPdXRwdXRUZXN0LCBHZXRPdXRwdXRGaWxlU2luZ2xl
RmlsZSkgewogICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOmZpbGVuYW1lLmFiYyI7Ci0gIEVY
UEVDVF9TVFJFUShHZXRBYnNvbHV0ZVBhdGhPZihGaWxlUGF0aCgiZmlsZW5hbWUuYWJjIikpLmNf
c3RyKCksCi0gICAgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRv
T3V0cHV0RmlsZSgpLmNfc3RyKCkpOworICBFWFBFQ1RfRVEoR2V0QWJzb2x1dGVQYXRoT2YoRmls
ZVBhdGgoImZpbGVuYW1lLmFiYyIpKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0
aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOwogfQogCiBURVNUKFhtbE91dHB1
dFRlc3QsIEdldE91dHB1dEZpbGVGcm9tRGlyZWN0b3J5UGF0aCkgewpAQCAtOTMsOCArOTMsOSBA
QCBURVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZpbGVGcm9tRGlyZWN0b3J5UGF0aCkgewog
ICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3RlZF9vdXRwdXRfZmlsZSA9CiAgICAgICBHZXRBYnNv
bHV0ZVBhdGhPZigKICAgICAgICAgICBGaWxlUGF0aChzdGQ6OnN0cmluZygicGF0aCIpICsgR1RF
U1RfUEFUSF9TRVBfICsKLSAgICAgICAgICAgICAgICAgICBHZXRDdXJyZW50RXhlY3V0YWJsZU5h
bWUoKS5jX3N0cigpICsgIi54bWwiKSkuY19zdHIoKTsKLSAgY29uc3QgU3RyaW5nJiBvdXRwdXRf
ZmlsZSA9IFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7Cisg
ICAgICAgICAgICAgICAgICAgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKyAi
LnhtbCIpKS5zdHJpbmcoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9maWxlID0KKyAg
ICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7CiAjaWYg
R1RFU1RfT1NfV0lORE9XUwogICBFWFBFQ1RfU1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxl
LmNfc3RyKCksIG91dHB1dF9maWxlLmNfc3RyKCkpOwogI2Vsc2UKQEAgLTEwMyw3ICsxMDQsNyBA
QCBURVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZpbGVGcm9tRGlyZWN0b3J5UGF0aCkgewog
fQogCiBURVNUKE91dHB1dEZpbGVIZWxwZXJzVGVzdCwgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1l
KSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGV4ZV9zdHIgPSBHZXRDdXJyZW50RXhlY3V0YWJsZU5h
bWUoKS5jX3N0cigpOworICBjb25zdCBzdGQ6OnN0cmluZyBleGVfc3RyID0gR2V0Q3VycmVudEV4
ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCk7CiAjaWYgR1RFU1RfT1NfV0lORE9XUwogICBjb25zdCBi
b29sIHN1Y2Nlc3MgPQogICAgICAgX3N0cmNtcGkoImd0ZXN0LW9wdGlvbnNfdGVzdCIsIGV4ZV9z
dHIuY19zdHIoKSkgPT0gMCB8fApAQCAtMTI5LDEyICsxMzAsMTIgQEAgY2xhc3MgWG1sT3V0cHV0
Q2hhbmdlRGlyVGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICBvcmlnaW5hbF93b3JraW5nX2Rpcl8g
PSBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpOwogICAgIHBvc2l4OjpDaERpcigiLi4iKTsKICAg
ICAvLyBUaGlzIHdpbGwgbWFrZSB0aGUgdGVzdCBmYWlsIGlmIHJ1biBmcm9tIHRoZSByb290IGRp
cmVjdG9yeS4KLSAgICBFWFBFQ1RfU1RSTkUob3JpZ2luYWxfd29ya2luZ19kaXJfLmNfc3RyKCks
Ci0gICAgICAgICAgICAgICAgIEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkuY19zdHIoKSk7Cisg
ICAgRVhQRUNUX05FKG9yaWdpbmFsX3dvcmtpbmdfZGlyXy5zdHJpbmcoKSwKKyAgICAgICAgICAg
ICAgRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKS5zdHJpbmcoKSk7CiAgIH0KIAogICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7Ci0gICAgcG9zaXg6OkNoRGlyKG9yaWdpbmFsX3dvcmtpbmdfZGly
Xy5jX3N0cigpKTsKKyAgICBwb3NpeDo6Q2hEaXIob3JpZ2luYWxfd29ya2luZ19kaXJfLnN0cmlu
ZygpLmNfc3RyKCkpOwogICB9CiAKICAgRmlsZVBhdGggb3JpZ2luYWxfd29ya2luZ19kaXJfOwpA
QCAtMTQyLDIzICsxNDMsMjMgQEAgY2xhc3MgWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCA6IHB1Ymxp
YyBUZXN0IHsKIAogVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2lu
YWxXb3JraW5nRGlyV2l0aERlZmF1bHQpIHsKICAgR1RFU1RfRkxBRyhvdXRwdXQpID0gIiI7Ci0g
IEVYUEVDVF9TVFJFUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJf
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJ0ZXN0X2Rl
dGFpbC54bWwiKSkuY19zdHIoKSwKLSAgICAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0
QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSk7CisgIEVYUEVDVF9FUShGaWxlUGF0
aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuc3RyaW5nKCksCisg
ICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgp
KTsKIH0KIAogVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxX
b3JraW5nRGlyV2l0aERlZmF1bHRYTUwpIHsKICAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbCI7
Ci0gIEVYUEVDVF9TVFJFUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19k
aXJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJ0ZXN0
X2RldGFpbC54bWwiKSkuY19zdHIoKSwKLSAgICAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6
R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSk7CisgIEVYUEVDVF9FUShGaWxl
UGF0aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuc3RyaW5nKCks
CisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0Rmls
ZSgpKTsKIH0KIAogVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2lu
YWxXb3JraW5nRGlyV2l0aFJlbGF0aXZlRmlsZSkgewogICBHVEVTVF9GTEFHKG91dHB1dCkgPSAi
eG1sOmZpbGVuYW1lLmFiYyI7Ci0gIEVYUEVDVF9TVFJFUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMo
b3JpZ2luYWxfd29ya2luZ19kaXJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZpbGVQYXRoKCJmaWxlbmFtZS5hYmMiKSkuY19zdHIoKSwKLSAgICAgICAgICAgICAgIFVu
aXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSk7Cisg
IEVYUEVDVF9FUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmaWxlbmFtZS5hYmMi
KSkuc3RyaW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0
aFRvT3V0cHV0RmlsZSgpKTsKIH0KIAogVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFBy
ZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aFJlbGF0aXZlUGF0aCkgewpAQCAtMTY3LDggKzE2
OCw5IEBAIFRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29y
a2luZ0RpcldpdGhSZWxhdGl2ZVBhdGgpIHsKICAgICAgIEZpbGVQYXRoOjpDb25jYXRQYXRocygK
ICAgICAgICAgICBvcmlnaW5hbF93b3JraW5nX2Rpcl8sCiAgICAgICAgICAgRmlsZVBhdGgoc3Rk
OjpzdHJpbmcoInBhdGgiKSArIEdURVNUX1BBVEhfU0VQXyArCi0gICAgICAgICAgICAgICAgICAg
R2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuY19zdHIoKSArICIueG1sIikpLmNfc3RyKCk7Ci0g
IGNvbnN0IFN0cmluZyYgb3V0cHV0X2ZpbGUgPSBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRl
UGF0aFRvT3V0cHV0RmlsZSgpOworICAgICAgICAgICAgICAgICAgIEdldEN1cnJlbnRFeGVjdXRh
YmxlTmFtZSgpLnN0cmluZygpICsgIi54bWwiKSkuc3RyaW5nKCk7CisgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBvdXRwdXRfZmlsZSA9CisgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0
aFRvT3V0cHV0RmlsZSgpOwogI2lmIEdURVNUX09TX1dJTkRPV1MKICAgRVhQRUNUX1NUUkNBU0VF
UShleHBlY3RlZF9vdXRwdXRfZmlsZS5jX3N0cigpLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKICNl
bHNlCkBAIC0xNzksMTIgKzE4MSwxMiBAQCBURVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwg
UHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoUmVsYXRpdmVQYXRoKSB7CiBURVNUX0YoWG1s
T3V0cHV0Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoQWJzb2x1
dGVGaWxlKSB7CiAjaWYgR1RFU1RfT1NfV0lORE9XUwogICBHVEVTVF9GTEFHKG91dHB1dCkgPSAi
eG1sOmM6XFx0bXBcXGZpbGVuYW1lLmFiYyI7Ci0gIEVYUEVDVF9TVFJFUShGaWxlUGF0aCgiYzpc
XHRtcFxcZmlsZW5hbWUuYWJjIikuY19zdHIoKSwKLSAgICAgICAgICAgICAgIFVuaXRUZXN0T3B0
aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSk7CisgIEVYUEVDVF9F
UShGaWxlUGF0aCgiYzpcXHRtcFxcZmlsZW5hbWUuYWJjIikuc3RyaW5nKCksCisgICAgICAgICAg
ICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKICNlbHNl
CiAgIEdURVNUX0ZMQUcob3V0cHV0KSA9InhtbDovdG1wL2ZpbGVuYW1lLmFiYyI7Ci0gIEVYUEVD
VF9TVFJFUShGaWxlUGF0aCgiL3RtcC9maWxlbmFtZS5hYmMiKS5jX3N0cigpLAotICAgICAgICAg
ICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0
cigpKTsKKyAgRVhQRUNUX0VRKEZpbGVQYXRoKCIvdG1wL2ZpbGVuYW1lLmFiYyIpLnN0cmluZygp
LAorICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZp
bGUoKSk7CiAjZW5kaWYKIH0KIApAQCAtMTk3LDggKzE5OSw5IEBAIFRFU1RfRihYbWxPdXRwdXRD
aGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhBYnNvbHV0ZVBhdGgp
IHsKIAogICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOiIgKyBwYXRoOwogICBjb25zdCBzdGQ6
OnN0cmluZyBleHBlY3RlZF9vdXRwdXRfZmlsZSA9Ci0gICAgICBwYXRoICsgR2V0Q3VycmVudEV4
ZWN1dGFibGVOYW1lKCkuY19zdHIoKSArICIueG1sIjsKLSAgY29uc3QgU3RyaW5nJiBvdXRwdXRf
ZmlsZSA9IFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7Cisg
ICAgICBwYXRoICsgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKyAiLnhtbCI7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZmlsZSA9CisgICAgICBVbml0VGVzdE9wdGlv
bnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpOwogCiAjaWYgR1RFU1RfT1NfV0lORE9X
UwogICBFWFBFQ1RfU1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxlLmNfc3RyKCksIG91dHB1
dF9maWxlLmNfc3RyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjCmluZGV4IGNjYjZjZmFjOWU3NmI4MjdmMTdhZTEx
ODI5ZTIzNmQ2Zjk3ZWU2NDYuLjRhNzgyZmU3MDgzN2FjYTg0YjQ3NWEzNDU1YTFlNTRhYjgyODM4
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0t
dGVzdDJfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBh
cmFtLXRlc3QyX3Rlc3QuY2MKQEAgLTMyLDcgKzMyLDcgQEAKIC8vIFRlc3RzIGZvciBHb29nbGUg
VGVzdCBpdHNlbGYuICBUaGlzIHZlcmlmaWVzIHRoYXQgdGhlIGJhc2ljIGNvbnN0cnVjdHMgb2YK
IC8vIEdvb2dsZSBUZXN0IHdvcmsuCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVz
dC5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBh
cmFtLXRlc3RfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFy
YW0tdGVzdF90ZXN0LmNjCmluZGV4IGQwYTBlNzM1YzBiOTg4ZWYxYTIyYjdkN2FlNjkwMjcwMThi
ZGI4Y2IuLjhiMjc4YmI5NGI4NTZmNzFiYThhOTJlNzc4YmFiNGQyZjMwMjJiNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0
LmNjCkBAIC0zMywyMyArMzMsMjMgQEAKIC8vIGdlbmVyYXRvcnMgb2JqZWN0cyBwcm9kdWNlIGNv
cnJlY3QgcGFyYW1ldGVyIHNlcXVlbmNlcyBhbmQgdGhhdAogLy8gR29vZ2xlIFRlc3QgcnVudGlt
ZSBpbnN0YW50aWF0ZXMgY29ycmVjdCB0ZXN0cyBmcm9tIHRob3NlIHNlcXVlbmNlcy4KIAotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2lmIEdU
RVNUX0hBU19QQVJBTV9URVNUCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8aW9z
dHJlYW0+Ci0jaW5jbHVkZSA8bGlzdD4KLSNpbmNsdWRlIDxzc3RyZWFtPgotI2luY2x1ZGUgPHN0
cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+CisjIGluY2x1ZGUgPGFsZ29yaXRobT4KKyMgaW5jbHVk
ZSA8aW9zdHJlYW0+CisjIGluY2x1ZGUgPGxpc3Q+CisjIGluY2x1ZGUgPHNzdHJlYW0+CisjIGlu
Y2x1ZGUgPHN0cmluZz4KKyMgaW5jbHVkZSA8dmVjdG9yPgogCiAvLyBUbyBpbmNsdWRlIGd0ZXN0
LWludGVybmFsLWlubC5oLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQotI2luY2x1
ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIgIC8vIGZvciBVbml0VGVzdE9wdGlvbnMKLSN1
bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KKyMgZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9O
XyAxCisjIGluY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIgIC8vIGZvciBVbml0VGVz
dE9wdGlvbnMKKyMgdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCiAKLSNpbmNsdWRlICJ0ZXN0
L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oIgorIyBpbmNsdWRlICJ0ZXN0L2d0ZXN0LXBhcmFtLXRl
c3RfdGVzdC5oIgogCiB1c2luZyA6OnN0ZDo6dmVjdG9yOwogdXNpbmcgOjpzdGQ6OnNvcnQ7CkBA
IC02MiwxMiArNjIsMTIgQEAgdXNpbmcgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtOwogdXNpbmcg
Ojp0ZXN0aW5nOjpWYWx1ZXM7CiB1c2luZyA6OnRlc3Rpbmc6OlZhbHVlc0luOwogCi0jaWYgR1RF
U1RfSEFTX0NPTUJJTkUKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKIHVzaW5nIDo6dGVzdGluZzo6
Q29tYmluZTsKLXVzaW5nIDo6c3RkOjp0cjE6OmdldDsKLXVzaW5nIDo6c3RkOjp0cjE6Om1ha2Vf
dHVwbGU7Ci11c2luZyA6OnN0ZDo6dHIxOjp0dXBsZTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NP
TUJJTkUKK3VzaW5nIDo6dGVzdGluZzo6Z2V0OwordXNpbmcgOjp0ZXN0aW5nOjptYWtlX3R1cGxl
OwordXNpbmcgOjp0ZXN0aW5nOjp0dXBsZTsKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5F
CiAKIHVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yOwogdXNpbmcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOwpAQCAtODUsNyArODUsNyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KICAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKIH0KIAotI2lmIEdURVNU
X0hBU19DT01CSU5FCisjIGlmIEdURVNUX0hBU19DT01CSU5FCiAKIC8vIFRoZXNlIG92ZXJsb2Fk
cyBhbGxvdyBwcmludGluZyB0dXBsZXMgaW4gb3VyIHRlc3RzLiAgV2UgY2Fubm90CiAvLyBkZWZp
bmUgYW4gb3BlcmF0b3I8PCBmb3IgdHVwbGVzLCBhcyB0aGF0IGRlZmluaXRpb24gbmVlZHMgdG8g
YmUgaW4KQEAgLTEyMSw3ICsxMjEsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICByZXR1cm4gc3Ry
ZWFtLnN0cigpOwogfQogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCisjIGVuZGlmICAv
LyBHVEVTVF9IQVNfQ09NQklORQogCiAvLyBWZXJpZmllcyB0aGF0IGEgc2VxdWVuY2UgZ2VuZXJh
dGVkIGJ5IHRoZSBnZW5lcmF0b3IgYW5kIGFjY2Vzc2VkCiAvLyB2aWEgdGhlIGl0ZXJhdG9yIG9i
amVjdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBvbmUgdXNpbmcgR29vZ2xlIFRlc3QKQEAgLTI4MCwx
MCArMjgwLDEwIEBAIGNsYXNzIERvZ0FkZGVyIHsKICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgRG9n
QWRkZXImIG90aGVyKSBjb25zdCB7CiAgICAgcmV0dXJuIHZhbHVlXyA8IG90aGVyLnZhbHVlXzsK
ICAgfQotICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmcmIHZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gdmFsdWVfOyB9CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIHZhbHVlXzsgfQogCiAgcHJpdmF0ZToKLSAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3Ry
aW5nIHZhbHVlXzsKKyAgc3RkOjpzdHJpbmcgdmFsdWVfOwogfTsKIAogVEVTVChSYW5nZVRlc3Qs
IFdvcmtzV2l0aEFDdXN0b21UeXBlKSB7CkBAIC00NTcsNyArNDU3LDcgQEAgVEVTVChCb29sVGVz
dCwgQm9vbFdvcmtzKSB7CiAgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7
CiB9CiAKLSNpZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNfQ09NQklORQogCiAv
LyBUZXN0cyB0aGF0IENvbWJpbmUoKSB3aXRoIHR3byBwYXJhbWV0ZXJzIGdlbmVyYXRlcyB0aGUg
ZXhwZWN0ZWQgc2VxdWVuY2UuCiBURVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFR3b1BhcmFt
ZXRlcnMpIHsKQEAgLTU0Miw3ICs1NDIsNyBAQCBURVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0
aE1heE51bWJlck9mUGFyYW1ldGVycykgewogICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3Rl
ZF92YWx1ZXMpOwogfQogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCisjIGVuZGlmICAv
LyBHVEVTVF9IQVNfQ09NQklORQogCiAvLyBUZXN0cyB0aGF0IGFuIGdlbmVyYXRvciBwcm9kdWNl
cyBjb3JyZWN0IHNlcXVlbmNlIGFmdGVyIGJlaW5nCiAvLyBhc3NpZ25lZCBmcm9tIGFub3RoZXIg
Z2VuZXJhdG9yLgpAQCAtNjA2LDYgKzYwNiw3IEBAIGNsYXNzIFRlc3RHZW5lcmF0aW9uRW52aXJv
bm1lbnQgOiBwdWJsaWMgOjp0ZXN0aW5nOjpFbnZpcm9ubWVudCB7CiAgICAgICAgICAgPDwgImhh
cyBub3QgYmVlbiBydW4gYXMgZXhwZWN0ZWQuIjsKICAgICB9CiAgIH0KKwogIHByaXZhdGU6CiAg
IFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQoKSA6IGZpeHR1cmVfY29uc3RydWN0b3JfY291bnRf
KDApLCBzZXRfdXBfY291bnRfKDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZWFyX2Rvd25fY291bnRfKDApLCB0ZXN0X2JvZHlfY291bnRfKDApIHt9CkBAIC02NzQsNiArNjc1
LDcgQEAgY2xhc3MgVGVzdEdlbmVyYXRpb25UZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50
PiB7CiAKICAgICBFWFBFQ1RfVFJVRShjb2xsZWN0ZWRfcGFyYW1ldGVyc18gPT0gZXhwZWN0ZWRf
dmFsdWVzKTsKICAgfQorCiAgcHJvdGVjdGVkOgogICBpbnQgY3VycmVudF9wYXJhbWV0ZXJfOwog
ICBzdGF0aWMgdmVjdG9yPGludD4gY29sbGVjdGVkX3BhcmFtZXRlcnNfOwpAQCAtNzkyLDE5ICs3
OTQsMjM3IEBAIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEZvdXJFbGVtU2VxdWVuY2UsIFNlcGFy
YXRlSW5zdGFuY2VUZXN0LCBSYW5nZSgxLCA0KSk7CiAvLyBzZXF1ZW5jZSBlbGVtZW50IHVzZWQg
dG8gaW5zdGFudGlhdGUgdGhlIHRlc3QuCiBjbGFzcyBOYW1pbmdUZXN0IDogcHVibGljIFRlc3RX
aXRoUGFyYW08aW50PiB7fTsKIAotVEVTVF9QKE5hbWluZ1Rlc3QsIFRlc3RzQXJlTmFtZWRBcHBy
b3ByaWF0ZWx5KSB7CitURVNUX1AoTmFtaW5nVGVzdCwgVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXNB
bmRQYXJhbWV0ZXJzKSB7CiAgIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3Rf
aW5mbyA9CiAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRf
dGVzdF9pbmZvKCk7CiAKICAgRVhQRUNUX1NUUkVRKCJaZXJvVG9GaXZlU2VxdWVuY2UvTmFtaW5n
VGVzdCIsIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0g
IG1zZyA8PCAiVGVzdHNBcmVOYW1lZEFwcHJvcHJpYXRlbHkvIiA8PCBHZXRQYXJhbSgpOwotICBF
WFBFQ1RfU1RSRVEobXNnLkdldFN0cmluZygpLmNfc3RyKCksIHRlc3RfaW5mby0+bmFtZSgpKTsK
KyAgTWVzc2FnZSBpbmRleF9zdHJlYW07CisgIGluZGV4X3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRD
b3JyZWN0TmFtZXNBbmRQYXJhbWV0ZXJzLyIgPDwgR2V0UGFyYW0oKTsKKyAgRVhQRUNUX1NUUkVR
KGluZGV4X3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0cigpLCB0ZXN0X2luZm8tPm5hbWUoKSk7CisK
KyAgRVhQRUNUX0VRKDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgpKSwgdGVzdF9p
bmZvLT52YWx1ZV9wYXJhbSgpKTsKIH0KIAogSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoWmVyb1Rv
Rml2ZVNlcXVlbmNlLCBOYW1pbmdUZXN0LCBSYW5nZSgwLCA1KSk7CiAKKy8vIFRlc3RzIHRoYXQg
dXNlciBzdXBwbGllZCBjdXN0b20gcGFyYW1ldGVyIG5hbWVzIGFyZSB3b3JraW5nIGNvcnJlY3Rs
eS4KKy8vIFJ1bnMgdGhlIHRlc3Qgd2l0aCBhIGJ1aWx0aW4gaGVscGVyIG1ldGhvZCB3aGljaCB1
c2VzIFByaW50VG9TdHJpbmcsCisvLyBhcyB3ZWxsIGFzIGEgY3VzdG9tIGZ1bmN0aW9uIGFuZCBj
dXN0b20gZnVuY3RvciB0byBlbnN1cmUgYWxsIHBvc3NpYmxlCisvLyB1c2VzIHdvcmsgY29ycmVj
dGx5LgorY2xhc3MgQ3VzdG9tRnVuY3Rvck5hbWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJh
bTxzdGQ6OnN0cmluZz4ge307CitURVNUX1AoQ3VzdG9tRnVuY3Rvck5hbWluZ1Rlc3QsIEN1c3Rv
bVRlc3ROYW1lcykge30KKworc3RydWN0IEN1c3RvbVBhcmFtTmFtZUZ1bmN0b3IgeworICBzdGQ6
OnN0cmluZyBvcGVyYXRvcigpKGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzxzdGQ6OnN0
cmluZz4mIGluZm8pIHsKKyAgICByZXR1cm4gaW5mby5wYXJhbTsKKyAgfQorfTsKKworSU5TVEFO
VElBVEVfVEVTVF9DQVNFX1AoQ3VzdG9tUGFyYW1OYW1lRnVuY3RvciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEN1c3RvbUZ1bmN0b3JOYW1pbmdUZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsdWVzKHN0ZDo6c3RyaW5nKCJGdW5jdG9yTmFtZSIpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEN1c3RvbVBhcmFtTmFtZUZ1bmN0b3IoKSk7CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QKEFsbEFsbG93ZWRDaGFyYWN0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9t
RnVuY3Rvck5hbWluZ1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoImFiY2Rl
ZmdoaWprbG1ub3BxcnN0dXZ3eHl6IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIwMTIzNDU2Nzg5MF8iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbVBhcmFt
TmFtZUZ1bmN0b3IoKSk7CisKK2lubGluZSBzdGQ6OnN0cmluZyBDdXN0b21QYXJhbU5hbWVGdW5j
dGlvbigKKyAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88c3RkOjpzdHJpbmc+JiBp
bmZvKSB7CisgIHJldHVybiBpbmZvLnBhcmFtOworfQorCitjbGFzcyBDdXN0b21GdW5jdGlvbk5h
bWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxzdGQ6OnN0cmluZz4ge307CitURVNUX1Ao
Q3VzdG9tRnVuY3Rpb25OYW1pbmdUZXN0LCBDdXN0b21UZXN0TmFtZXMpIHt9CisKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKEN1c3RvbVBhcmFtTmFtZUZ1bmN0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgQ3VzdG9tRnVuY3Rpb25OYW1pbmdUZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsdWVzKHN0ZDo6c3RyaW5nKCJGdW5jdGlvbk5hbWUiKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICBDdXN0b21QYXJhbU5hbWVGdW5jdGlvbik7CisKKyNpZiBHVEVTVF9MQU5HX0NYWDEx
CisKKy8vIFRlc3QgY3VzdG9tIG5hbWluZyB3aXRoIGEgbGFtYmRhCisKK2NsYXNzIEN1c3RvbUxh
bWJkYU5hbWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxzdGQ6OnN0cmluZz4ge307CitU
RVNUX1AoQ3VzdG9tTGFtYmRhTmFtaW5nVGVzdCwgQ3VzdG9tVGVzdE5hbWVzKSB7fQorCitJTlNU
QU5USUFURV9URVNUX0NBU0VfUChDdXN0b21QYXJhbU5hbWVMYW1iZGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICBDdXN0b21MYW1iZGFOYW1pbmdUZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsdWVzKHN0ZDo6c3RyaW5nKCJMYW1iZGFOYW1lIikpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgW10oY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHN0ZDo6c3RyaW5nPiYgaW5m
bykgeworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5mby5wYXJhbTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0pOworCisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKwor
VEVTVChDdXN0b21OYW1pbmdUZXN0LCBDaGVja05hbWVSZWdpc3RyeSkgeworICA6OnRlc3Rpbmc6
OlVuaXRUZXN0KiB1bml0X3Rlc3QgPSA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgp
OworICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gdGVzdF9uYW1lczsKKyAgZm9yIChpbnQgY2FzZV9u
dW0gPSAwOworICAgICAgIGNhc2VfbnVtIDwgdW5pdF90ZXN0LT50b3RhbF90ZXN0X2Nhc2VfY291
bnQoKTsKKyAgICAgICArK2Nhc2VfbnVtKSB7CisgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0Q2Fz
ZSogdGVzdF9jYXNlID0gdW5pdF90ZXN0LT5HZXRUZXN0Q2FzZShjYXNlX251bSk7CisgICAgZm9y
IChpbnQgdGVzdF9udW0gPSAwOworICAgICAgICAgdGVzdF9udW0gPCB0ZXN0X2Nhc2UtPnRvdGFs
X3Rlc3RfY291bnQoKTsKKyAgICAgICAgICsrdGVzdF9udW0pIHsKKyAgICAgIGNvbnN0IDo6dGVz
dGluZzo6VGVzdEluZm8qIHRlc3RfaW5mbyA9IHRlc3RfY2FzZS0+R2V0VGVzdEluZm8odGVzdF9u
dW0pOworICAgICAgdGVzdF9uYW1lcy5pbnNlcnQoc3RkOjpzdHJpbmcodGVzdF9pbmZvLT5uYW1l
KCkpKTsKKyAgICB9CisgIH0KKyAgRVhQRUNUX0VRKDF1LCB0ZXN0X25hbWVzLmNvdW50KCJDdXN0
b21UZXN0TmFtZXMvRnVuY3Rvck5hbWUiKSk7CisgIEVYUEVDVF9FUSgxdSwgdGVzdF9uYW1lcy5j
b3VudCgiQ3VzdG9tVGVzdE5hbWVzL0Z1bmN0aW9uTmFtZSIpKTsKKyNpZiBHVEVTVF9MQU5HX0NY
WDExCisgIEVYUEVDVF9FUSgxdSwgdGVzdF9uYW1lcy5jb3VudCgiQ3VzdG9tVGVzdE5hbWVzL0xh
bWJkYU5hbWUiKSk7CisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKK30KKworLy8gVGVzdCBh
IG51bWVyaWMgbmFtZSB0byBlbnN1cmUgUHJpbnRUb1N0cmluZ1BhcmFtTmFtZSB3b3JrcyBjb3Jy
ZWN0bHkuCisKK2NsYXNzIEN1c3RvbUludGVnZXJOYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRo
UGFyYW08aW50PiB7fTsKKworVEVTVF9QKEN1c3RvbUludGVnZXJOYW1pbmdUZXN0LCBUZXN0c1Jl
cG9ydENvcnJlY3ROYW1lcykgeworICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0
ZXN0X2luZm8gPQorICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJy
ZW50X3Rlc3RfaW5mbygpOworICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07CisgIHRlc3RfbmFt
ZV9zdHJlYW0gPDwgIlRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzLyIgPDwgR2V0UGFyYW0oKTsKKyAg
RVhQRUNUX1NUUkVRKHRlc3RfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19zdHIoKSwgdGVzdF9p
bmZvLT5uYW1lKCkpOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChQcmludFRvU3RyaW5n
LAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tSW50ZWdlck5hbWluZ1Rlc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICBSYW5nZSgwLCA1KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgpKTsKKworLy8gVGVzdCBhIGN1c3Rv
bSBzdHJ1Y3Qgd2l0aCBQcmludFRvU3RyaW5nLgorCitzdHJ1Y3QgQ3VzdG9tU3RydWN0IHsKKyAg
ZXhwbGljaXQgQ3VzdG9tU3RydWN0KGludCB2YWx1ZSkgOiB4KHZhbHVlKSB7fQorICBpbnQgeDsK
K307CisKK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIHN0cmVhbSwgY29u
c3QgQ3VzdG9tU3RydWN0JiB2YWwpIHsKKyAgc3RyZWFtIDw8IHZhbC54OworICByZXR1cm4gc3Ry
ZWFtOworfQorCitjbGFzcyBDdXN0b21TdHJ1Y3ROYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRo
UGFyYW08Q3VzdG9tU3RydWN0PiB7fTsKKworVEVTVF9QKEN1c3RvbVN0cnVjdE5hbWluZ1Rlc3Qs
IFRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzKSB7CisgIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8q
IGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisgIE1lc3NhZ2UgdGVzdF9uYW1lX3N0cmVhbTsKKyAg
dGVzdF9uYW1lX3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMvIiA8PCBHZXRQYXJh
bSgpOworICBFWFBFQ1RfU1RSRVEodGVzdF9uYW1lX3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0cigp
LCB0ZXN0X2luZm8tPm5hbWUoKSk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFByaW50
VG9TdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21TdHJ1Y3ROYW1pbmdUZXN0
LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEN1c3RvbVN0cnVjdCgwKSwgQ3VzdG9t
U3RydWN0KDEpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6UHJpbnRUb1N0
cmluZ1BhcmFtTmFtZSgpKTsKKworLy8gVGVzdCB0aGF0IHVzaW5nIGEgc3RhdGVmdWwgcGFyYW1l
dGVyIG5hbWluZyBmdW5jdGlvbiB3b3JrcyBhcyBleHBlY3RlZC4KKworc3RydWN0IFN0YXRlZnVs
TmFtaW5nRnVuY3RvciB7CisgIFN0YXRlZnVsTmFtaW5nRnVuY3RvcigpIDogc3VtKDApIHt9Cisg
IHN0ZDo6c3RyaW5nIG9wZXJhdG9yKCkoY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPGlu
dD4mIGluZm8pIHsKKyAgICBpbnQgdmFsdWUgPSBpbmZvLnBhcmFtICsgc3VtOworICAgIHN1bSAr
PSBpbmZvLnBhcmFtOworICAgIHJldHVybiA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcodmFsdWUp
OworICB9CisgIGludCBzdW07Cit9OworCitjbGFzcyBTdGF0ZWZ1bE5hbWluZ1Rlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4geworIHByb3RlY3RlZDoKKyAgU3RhdGVm
dWxOYW1pbmdUZXN0KCkgOiBzdW1fKDApIHt9CisgIGludCBzdW1fOworfTsKKworVEVTVF9QKFN0
YXRlZnVsTmFtaW5nVGVzdCwgVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMpIHsKKyAgY29uc3QgOjp0
ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0aW5nOjpVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKyAgc3VtXyArPSBHZXRQ
YXJhbSgpOworICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07CisgIHRlc3RfbmFtZV9zdHJlYW0g
PDwgIlRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzLyIgPDwgc3VtXzsKKyAgRVhQRUNUX1NUUkVRKHRl
c3RfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19zdHIoKSwgdGVzdF9pbmZvLT5uYW1lKCkpOwor
fQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChTdGF0ZWZ1bE5hbWluZ0Z1bmN0b3IsCisgICAg
ICAgICAgICAgICAgICAgICAgICBTdGF0ZWZ1bE5hbWluZ1Rlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICBSYW5nZSgwLCA1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlZnVsTmFt
aW5nRnVuY3RvcigpKTsKKworLy8gQ2xhc3MgdGhhdCBjYW5ub3QgYmUgc3RyZWFtZWQgaW50byBh
biBvc3RyZWFtLiAgSXQgbmVlZHMgdG8gYmUgY29weWFibGUKKy8vIChhbmQsIGluIGNhc2Ugb2Yg
TVNWQywgYWxzbyBhc3NpZ25hYmxlKSBpbiBvcmRlciB0byBiZSBhIHRlc3QgcGFyYW1ldGVyCisv
LyB0eXBlLiAgSXRzIGRlZmF1bHQgY29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVy
YXRvciBkbyBleGFjdGx5CisvLyB3aGF0IHdlIG5lZWQuCitjbGFzcyBVbnN0cmVhbWFibGUgewor
IHB1YmxpYzoKKyAgZXhwbGljaXQgVW5zdHJlYW1hYmxlKGludCB2YWx1ZSkgOiB2YWx1ZV8odmFs
dWUpIHt9CisKKyBwcml2YXRlOgorICBpbnQgdmFsdWVfOworfTsKKworY2xhc3MgQ29tbWVudFRl
c3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxVbnN0cmVhbWFibGU+IHt9OworCitURVNUX1AoQ29t
bWVudFRlc3QsIFRlc3RzQ29ycmVjdGx5UmVwb3J0VW5zdHJlYW1hYmxlUGFyYW1zKSB7CisgIGNv
bnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGlu
Zzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisKKyAgRVhQ
RUNUX0VRKDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgpKSwgdGVzdF9pbmZvLT52
YWx1ZV9wYXJhbSgpKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSW5zdGFudGlhdGlv
bldpdGhDb21tZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbW1lbnRUZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKFVuc3RyZWFtYWJsZSgxKSkpOworCisvLyBWZXJp
ZnkgdGhhdCB3ZSBjYW4gY3JlYXRlIGEgaGllcmFyY2h5IG9mIHRlc3QgZml4dHVyZXMsIHdoZXJl
IHRoZSBiYXNlCisvLyBjbGFzcyBmaXh0dXJlIGlzIG5vdCBwYXJhbWV0ZXJpemVkIGFuZCB0aGUg
ZGVyaXZlZCBjbGFzcyBpcy4gSW4gdGhpcyBjYXNlCisvLyBQYXJhbWV0ZXJpemVkRGVyaXZlZFRl
c3QgaW5oZXJpdHMgZnJvbSBOb25QYXJhbWV0ZXJpemVkQmFzZVRlc3QuICBXZQorLy8gcGVyZm9y
bSBzaW1wbGUgdGVzdHMgb24gYm90aC4KK2NsYXNzIE5vblBhcmFtZXRlcml6ZWRCYXNlVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHB1YmxpYzoKKyAgTm9uUGFyYW1ldGVyaXplZEJh
c2VUZXN0KCkgOiBuXygxNykgeyB9CisgcHJvdGVjdGVkOgorICBpbnQgbl87Cit9OworCitjbGFz
cyBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3QgOiBwdWJsaWMgTm9uUGFyYW1ldGVyaXplZEJhc2VU
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIDo6dGVzdGluZzo6
V2l0aFBhcmFtSW50ZXJmYWNlPGludD4geworIHByb3RlY3RlZDoKKyAgUGFyYW1ldGVyaXplZERl
cml2ZWRUZXN0KCkgOiBjb3VudF8oMCkgeyB9CisgIGludCBjb3VudF87CisgIHN0YXRpYyBpbnQg
Z2xvYmFsX2NvdW50XzsKK307CisKK2ludCBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3Q6Omdsb2Jh
bF9jb3VudF8gPSAwOworCitURVNUX0YoTm9uUGFyYW1ldGVyaXplZEJhc2VUZXN0LCBGaXh0dXJl
SXNJbml0aWFsaXplZCkgeworICBFWFBFQ1RfRVEoMTcsIG5fKTsKK30KKworVEVTVF9QKFBhcmFt
ZXRlcml6ZWREZXJpdmVkVGVzdCwgU2Vlc1NlcXVlbmNlKSB7CisgIEVYUEVDVF9FUSgxNywgbl8p
OworICBFWFBFQ1RfRVEoMCwgY291bnRfKyspOworICBFWFBFQ1RfRVEoR2V0UGFyYW0oKSwgZ2xv
YmFsX2NvdW50XysrKTsKK30KKworY2xhc3MgUGFyYW1ldGVyaXplZERlYXRoVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7IH07CisKK1RFU1RfRihQYXJhbWV0ZXJp
emVkRGVhdGhUZXN0LCBHZXRQYXJhbURpZXNGcm9tVGVzdEYpIHsKKyAgRVhQRUNUX0RFQVRIX0lG
X1NVUFBPUlRFRChHZXRQYXJhbSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuKiB2
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QgLioiKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoUmFuZ2VaZXJvVG9GaXZlLCBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3QsIFJhbmdlKDAsIDUp
KTsKKwogI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogCiBURVNUKENvbXBpbGVUZXN0
LCBDb21iaW5lSXNEZWZpbmVkT25seVdoZW5HdGVzdEhhc1BhcmFtVGVzdElzRGVmaW5lZCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0
X3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90
ZXN0LmgKaW5kZXggYjdmOTQ5MzYxMzdkZmM1ZjNmMmQ1N2ZhNDBkY2FmN2ExNWNiNmI1ZS4uMjZl
YTEyMmIxMGI5ZjljZDcyNDk2ZTE4OWVjYTkwYjJiY2RmY2NlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oCkBAIC0zNywx
OCArMzcsMjAgQEAKICNpZm5kZWYgR1RFU1RfVEVTVF9HVEVTVF9QQVJBTV9URVNUX1RFU1RfSF8K
ICNkZWZpbmUgR1RFU1RfVEVTVF9HVEVTVF9QQVJBTV9URVNUX1RFU1RfSF8KIAotI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2lmIEdURVNUX0hB
U19QQVJBTV9URVNUCiAKIC8vIFRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyBkZWZpbml0aW9uIGFu
ZCBpbnN0YW50aWF0aW9uIG9mIGEgdGVzdAogLy8gaW4gc2VwYXJhdGUgdHJhbnNsYXRpb24gdW5p
dHMuCi1jbGFzcyBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0IDogcHVibGljIDo6dGVzdGluZzo6
VGVzdFdpdGhQYXJhbTxpbnQ+IHt9OworY2xhc3MgRXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7Cit9OwogCiAvLyBUZXN0IGZp
eHR1cmUgZm9yIHRlc3RpbmcgaW5zdGFudGlhdGlvbiBvZiBhIHRlc3QgaW4gbXVsdGlwbGUKIC8v
IHRyYW5zbGF0aW9uIHVuaXRzLgogY2xhc3MgSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xh
aW9uVW5pdHNUZXN0Ci0gICAgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4g
e307CisgICAgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4geworfTsKIAog
I2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3QtcG9ydF90ZXN0LmNjCmluZGV4IDM3MjU4NjAyZmE1Y2Y1YTc3OTk0
N2NkNDI3ZTIwZTkwOWZjOTI1OGQuLjZlYTYwN2JjNzBkMzUyZDY0NjUzYmYyODEyNWE5MWMzMmUw
YjU2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcG9y
dF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcG9ydF90
ZXN0LmNjCkBAIC0zMSwxOCArMzEsMjAgQEAKIC8vCiAvLyBUaGlzIGZpbGUgdGVzdHMgdGhlIGlu
dGVybmFsIGNyb3NzLXBsYXRmb3JtIHN1cHBvcnQgdXRpbGl0aWVzLgogCi0jaW5jbHVkZSA8Z3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0
LXBvcnQuaCIKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKICNpZiBHVEVTVF9PU19NQUMKLSNpbmNs
dWRlIDx0aW1lLmg+CisjIGluY2x1ZGUgPHRpbWUuaD4KICNlbmRpZiAgLy8gR1RFU1RfT1NfTUFD
CiAKKyNpbmNsdWRlIDxsaXN0PgogI2luY2x1ZGUgPHV0aWxpdHk+ICAvLyBGb3Igc3RkOjpwYWly
IGFuZCBzdGQ6Om1ha2VfcGFpci4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgorI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCiAKIC8vIEluZGljYXRlcyB0
aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKIC8vIGlt
cGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBp
cwpAQCAtNTksNiArNjEsMTc0IEBAIHVzaW5nIHN0ZDo6cGFpcjsKIG5hbWVzcGFjZSB0ZXN0aW5n
IHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKK1RFU1QoSXNYRGlnaXRUZXN0LCBXb3Jrc0Zvck5h
cnJvd0FzY2lpKSB7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KCcwJykpOworICBFWFBFQ1RfVFJV
RShJc1hEaWdpdCgnOScpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoJ0EnKSk7CisgIEVYUEVD
VF9UUlVFKElzWERpZ2l0KCdGJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgnYScpKTsKKyAg
RVhQRUNUX1RSVUUoSXNYRGlnaXQoJ2YnKSk7CisKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KCct
JykpOworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoJ2cnKSk7CisgIEVYUEVDVF9GQUxTRShJc1hE
aWdpdCgnRycpKTsKK30KKworVEVTVChJc1hEaWdpdFRlc3QsIFJldHVybnNGYWxzZUZvck5hcnJv
d05vbkFzY2lpKSB7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdCgnXHg4MCcpKTsKKyAgRVhQRUNU
X0ZBTFNFKElzWERpZ2l0KHN0YXRpY19jYXN0PGNoYXI+KCcwJyB8ICdceDgwJykpKTsKK30KKwor
VEVTVChJc1hEaWdpdFRlc3QsIFdvcmtzRm9yV2lkZUFzY2lpKSB7CisgIEVYUEVDVF9UUlVFKElz
WERpZ2l0KEwnMCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoTCc5JykpOworICBFWFBFQ1Rf
VFJVRShJc1hEaWdpdChMJ0EnKSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnRicpKTsKKyAg
RVhQRUNUX1RSVUUoSXNYRGlnaXQoTCdhJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdChMJ2Yn
KSk7CisKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KEwnLScpKTsKKyAgRVhQRUNUX0ZBTFNFKElz
WERpZ2l0KEwnZycpKTsKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KEwnRycpKTsKK30KKworVEVT
VChJc1hEaWdpdFRlc3QsIFJldHVybnNGYWxzZUZvcldpZGVOb25Bc2NpaSkgeworICBFWFBFQ1Rf
RkFMU0UoSXNYRGlnaXQoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHg4MCkpKTsKKyAgRVhQRUNUX0ZB
TFNFKElzWERpZ2l0KHN0YXRpY19jYXN0PHdjaGFyX3Q+KEwnMCcgfCAweDgwKSkpOworICBFWFBF
Q1RfRkFMU0UoSXNYRGlnaXQoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oTCcwJyB8IDB4MTAwKSkpOwor
fQorCitjbGFzcyBCYXNlIHsKKyBwdWJsaWM6CisgIC8vIENvcHkgY29uc3RydWN0b3IgYW5kIGFz
c2lnbm1lbnQgb3BlcmF0b3IgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQsIHNvIHdlCisgIC8vIHVz
ZSB0aGVtLgorICBCYXNlKCkgOiBtZW1iZXJfKDApIHt9CisgIGV4cGxpY2l0IEJhc2UoaW50IG4p
IDogbWVtYmVyXyhuKSB7fQorICB2aXJ0dWFsIH5CYXNlKCkge30KKyAgaW50IG1lbWJlcigpIHsg
cmV0dXJuIG1lbWJlcl87IH0KKworIHByaXZhdGU6CisgIGludCBtZW1iZXJfOworfTsKKworY2xh
c3MgRGVyaXZlZCA6IHB1YmxpYyBCYXNlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IERlcml2ZWQo
aW50IG4pIDogQmFzZShuKSB7fQorfTsKKworVEVTVChJbXBsaWNpdENhc3RUZXN0LCBDb252ZXJ0
c1BvaW50ZXJzKSB7CisgIERlcml2ZWQgZGVyaXZlZCgwKTsKKyAgRVhQRUNUX1RSVUUoJmRlcml2
ZWQgPT0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlKj4oJmRlcml2ZWQp
KTsKK30KKworVEVTVChJbXBsaWNpdENhc3RUZXN0LCBDYW5Vc2VJbmhlcml0YW5jZSkgeworICBE
ZXJpdmVkIGRlcml2ZWQoMSk7CisgIEJhc2UgYmFzZSA9IDo6dGVzdGluZzo6aW50ZXJuYWw6Oklt
cGxpY2l0Q2FzdF88QmFzZT4oZGVyaXZlZCk7CisgIEVYUEVDVF9FUShkZXJpdmVkLm1lbWJlcigp
LCBiYXNlLm1lbWJlcigpKTsKK30KKworY2xhc3MgQ2FzdGFibGUgeworIHB1YmxpYzoKKyAgZXhw
bGljaXQgQ2FzdGFibGUoYm9vbCogY29udmVydGVkKSA6IGNvbnZlcnRlZF8oY29udmVydGVkKSB7
fQorICBvcGVyYXRvciBCYXNlKCkgeworICAgICpjb252ZXJ0ZWRfID0gdHJ1ZTsKKyAgICByZXR1
cm4gQmFzZSgpOworICB9CisKKyBwcml2YXRlOgorICBib29sKiBjb252ZXJ0ZWRfOworfTsKKwor
VEVTVChJbXBsaWNpdENhc3RUZXN0LCBDYW5Vc2VOb25Db25zdENhc3RPcGVyYXRvcikgeworICBi
b29sIGNvbnZlcnRlZCA9IGZhbHNlOworICBDYXN0YWJsZSBjYXN0YWJsZSgmY29udmVydGVkKTsK
KyAgQmFzZSBiYXNlID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlPihj
YXN0YWJsZSk7CisgIEVYUEVDVF9UUlVFKGNvbnZlcnRlZCk7Cit9CisKK2NsYXNzIENvbnN0Q2Fz
dGFibGUgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgQ29uc3RDYXN0YWJsZShib29sKiBjb252ZXJ0
ZWQpIDogY29udmVydGVkXyhjb252ZXJ0ZWQpIHt9CisgIG9wZXJhdG9yIEJhc2UoKSBjb25zdCB7
CisgICAgKmNvbnZlcnRlZF8gPSB0cnVlOworICAgIHJldHVybiBCYXNlKCk7CisgIH0KKworIHBy
aXZhdGU6CisgIGJvb2wqIGNvbnZlcnRlZF87Cit9OworCitURVNUKEltcGxpY2l0Q2FzdFRlc3Qs
IENhblVzZUNvbnN0Q2FzdE9wZXJhdG9yT25Db25zdFZhbHVlcykgeworICBib29sIGNvbnZlcnRl
ZCA9IGZhbHNlOworICBjb25zdCBDb25zdENhc3RhYmxlIGNvbnN0X2Nhc3RhYmxlKCZjb252ZXJ0
ZWQpOworICBCYXNlIGJhc2UgPSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEJh
c2U+KGNvbnN0X2Nhc3RhYmxlKTsKKyAgRVhQRUNUX1RSVUUoY29udmVydGVkKTsKK30KKworY2xh
c3MgQ29uc3RBbmROb25Db25zdENhc3RhYmxlIHsKKyBwdWJsaWM6CisgIENvbnN0QW5kTm9uQ29u
c3RDYXN0YWJsZShib29sKiBjb252ZXJ0ZWQsIGJvb2wqIGNvbnN0X2NvbnZlcnRlZCkKKyAgICAg
IDogY29udmVydGVkXyhjb252ZXJ0ZWQpLCBjb25zdF9jb252ZXJ0ZWRfKGNvbnN0X2NvbnZlcnRl
ZCkge30KKyAgb3BlcmF0b3IgQmFzZSgpIHsKKyAgICAqY29udmVydGVkXyA9IHRydWU7CisgICAg
cmV0dXJuIEJhc2UoKTsKKyAgfQorICBvcGVyYXRvciBCYXNlKCkgY29uc3QgeworICAgICpjb25z
dF9jb252ZXJ0ZWRfID0gdHJ1ZTsKKyAgICByZXR1cm4gQmFzZSgpOworICB9CisKKyBwcml2YXRl
OgorICBib29sKiBjb252ZXJ0ZWRfOworICBib29sKiBjb25zdF9jb252ZXJ0ZWRfOworfTsKKwor
VEVTVChJbXBsaWNpdENhc3RUZXN0LCBDYW5TZWxlY3RCZXR3ZWVuQ29uc3RBbmROb25Db25zdENh
c3JBcHByb3ByaWF0ZWx5KSB7CisgIGJvb2wgY29udmVydGVkID0gZmFsc2U7CisgIGJvb2wgY29u
c3RfY29udmVydGVkID0gZmFsc2U7CisgIENvbnN0QW5kTm9uQ29uc3RDYXN0YWJsZSBjYXN0YWJs
ZSgmY29udmVydGVkLCAmY29uc3RfY29udmVydGVkKTsKKyAgQmFzZSBiYXNlID0gOjp0ZXN0aW5n
OjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlPihjYXN0YWJsZSk7CisgIEVYUEVDVF9UUlVF
KGNvbnZlcnRlZCk7CisgIEVYUEVDVF9GQUxTRShjb25zdF9jb252ZXJ0ZWQpOworCisgIGNvbnZl
cnRlZCA9IGZhbHNlOworICBjb25zdF9jb252ZXJ0ZWQgPSBmYWxzZTsKKyAgY29uc3QgQ29uc3RB
bmROb25Db25zdENhc3RhYmxlIGNvbnN0X2Nhc3RhYmxlKCZjb252ZXJ0ZWQsICZjb25zdF9jb252
ZXJ0ZWQpOworICBiYXNlID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNl
Pihjb25zdF9jYXN0YWJsZSk7CisgIEVYUEVDVF9GQUxTRShjb252ZXJ0ZWQpOworICBFWFBFQ1Rf
VFJVRShjb25zdF9jb252ZXJ0ZWQpOworfQorCitjbGFzcyBUbyB7CisgcHVibGljOgorICBUbyhi
b29sKiBjb252ZXJ0ZWQpIHsgKmNvbnZlcnRlZCA9IHRydWU7IH0gIC8vIE5PTElOVAorfTsKKwor
VEVTVChJbXBsaWNpdENhc3RUZXN0LCBDYW5Vc2VJbXBsaWNpdENvbnN0cnVjdG9yKSB7CisgIGJv
b2wgY29udmVydGVkID0gZmFsc2U7CisgIFRvIHRvID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1w
bGljaXRDYXN0XzxUbz4oJmNvbnZlcnRlZCk7CisgICh2b2lkKXRvOworICBFWFBFQ1RfVFJVRShj
b252ZXJ0ZWQpOworfQorCitURVNUKEl0ZXJhdG9yVHJhaXRzVGVzdCwgV29ya3NGb3JTVExDb250
YWluZXJJdGVyYXRvcnMpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCwKKyAgICAgIEl0ZXJh
dG9yVHJhaXRzPCA6OnN0ZDo6dmVjdG9yPGludD46OmNvbnN0X2l0ZXJhdG9yPjo6dmFsdWVfdHlw
ZT4oKTsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGJvb2wsCisgICAgICBJdGVyYXRvclRyYWl0czwg
OjpzdGQ6Omxpc3Q8Ym9vbD46Oml0ZXJhdG9yPjo6dmFsdWVfdHlwZT4oKTsKK30KKworVEVTVChJ
dGVyYXRvclRyYWl0c1Rlc3QsIFdvcmtzRm9yUG9pbnRlclRvTm9uQ29uc3QpIHsKKyAgU3RhdGlj
QXNzZXJ0VHlwZUVxPGNoYXIsIEl0ZXJhdG9yVHJhaXRzPGNoYXIqPjo6dmFsdWVfdHlwZT4oKTsK
KyAgU3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IHZvaWQqLCBJdGVyYXRvclRyYWl0czxjb25zdCB2
b2lkKio+Ojp2YWx1ZV90eXBlPigpOworfQorCitURVNUKEl0ZXJhdG9yVHJhaXRzVGVzdCwgV29y
a3NGb3JQb2ludGVyVG9Db25zdCkgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y2hhciwgSXRlcmF0
b3JUcmFpdHM8Y29uc3QgY2hhcio+Ojp2YWx1ZV90eXBlPigpOworICBTdGF0aWNBc3NlcnRUeXBl
RXE8Y29uc3Qgdm9pZCosCisgICAgICBJdGVyYXRvclRyYWl0czxjb25zdCB2b2lkKiBjb25zdCo+
Ojp2YWx1ZV90eXBlPigpOworfQorCiAvLyBUZXN0cyB0aGF0IHRoZSBlbGVtZW50X3R5cGUgdHlw
ZWRlZiBpcyBhdmFpbGFibGUgaW4gc2NvcGVkX3B0ciBhbmQgcmVmZXJzCiAvLyB0byB0aGUgcGFy
YW1ldGVyIHR5cGUuCiBURVNUKFNjb3BlZFB0clRlc3QsIERlZmluZXNFbGVtZW50VHlwZSkgewpA
QCAtOTEsNjYgKzI2MSwxMDQgQEAgVEVTVChHdGVzdENoZWNrU3ludGF4VGVzdCwgV29ya3NXaXRo
U3dpdGNoKSB7CiAgICAgICBHVEVTVF9DSEVDS18odHJ1ZSk7CiAgIH0KIAotICBzd2l0Y2goMCkK
KyAgc3dpdGNoICgwKQogICAgIGNhc2UgMDoKICAgICAgIEdURVNUX0NIRUNLXyh0cnVlKSA8PCAi
Q2hlY2sgZmFpbGVkIGluIHN3aXRjaCBjYXNlIjsKIH0KIAotI2lmIEdURVNUX09TX01BQworLy8g
VmVyaWZpZXMgYmVoYXZpb3Igb2YgRm9ybWF0RmlsZUxvY2F0aW9uLgorVEVTVChGb3JtYXRGaWxl
TG9jYXRpb25UZXN0LCBGb3JtYXRzRmlsZUxvY2F0aW9uKSB7CisgIEVYUEVDVF9QUkVEX0ZPUk1B
VDIoSXNTdWJzdHJpbmcsICJmb28uY2MiLCBGb3JtYXRGaWxlTG9jYXRpb24oImZvby5jYyIsIDQy
KSk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICI0MiIsIEZvcm1hdEZpbGVM
b2NhdGlvbigiZm9vLmNjIiwgNDIpKTsKK30KKworVEVTVChGb3JtYXRGaWxlTG9jYXRpb25UZXN0
LCBGb3JtYXRzVW5rbm93bkZpbGUpIHsKKyAgRVhQRUNUX1BSRURfRk9STUFUMigKKyAgICAgIElz
U3Vic3RyaW5nLCAidW5rbm93biBmaWxlIiwgRm9ybWF0RmlsZUxvY2F0aW9uKE5VTEwsIDQyKSk7
CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICI0MiIsIEZvcm1hdEZpbGVMb2Nh
dGlvbihOVUxMLCA0MikpOworfQorCitURVNUKEZvcm1hdEZpbGVMb2NhdGlvblRlc3QsIEZvcm1h
dHNVa25vd25MaW5lKSB7CisgIEVYUEVDVF9FUSgiZm9vLmNjOiIsIEZvcm1hdEZpbGVMb2NhdGlv
bigiZm9vLmNjIiwgLTEpKTsKK30KKworVEVTVChGb3JtYXRGaWxlTG9jYXRpb25UZXN0LCBGb3Jt
YXRzVWtub3duRmlsZUFuZExpbmUpIHsKKyAgRVhQRUNUX0VRKCJ1bmtub3duIGZpbGU6IiwgRm9y
bWF0RmlsZUxvY2F0aW9uKE5VTEwsIC0xKSk7Cit9CisKKy8vIFZlcmlmaWVzIGJlaGF2aW9yIG9m
IEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24uCitURVNUKEZvcm1hdENvbXBp
bGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzRmlsZUxvY2F0aW9uKSB7Cisg
IEVYUEVDVF9FUSgiZm9vLmNjOjQyIiwgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2Nh
dGlvbigiZm9vLmNjIiwgNDIpKTsKK30KKworVEVTVChGb3JtYXRDb21waWxlckluZGVwZW5kZW50
RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c1Vrbm93bkZpbGUpIHsKKyAgRVhQRUNUX0VRKCJ1bmtu
b3duIGZpbGU6NDIiLAorICAgICAgICAgICAgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVM
b2NhdGlvbihOVUxMLCA0MikpOworfQorCitURVNUKEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRG
aWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzVWtub3duTGluZSkgeworICBFWFBFQ1RfRVEoImZvby5j
YyIsIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oImZvby5jYyIsIC0xKSk7
Cit9CisKK1RFU1QoRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvblRlc3QsIEZv
cm1hdHNVa25vd25GaWxlQW5kTGluZSkgeworICBFWFBFQ1RfRVEoInVua25vd24gZmlsZSIsIEZv
cm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oTlVMTCwgLTEpKTsKK30KKworI2lm
IEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19RTlgKIHZvaWQqIFRo
cmVhZEZ1bmModm9pZCogZGF0YSkgewotICBwdGhyZWFkX211dGV4X3QqIG11dGV4ID0gc3RhdGlj
X2Nhc3Q8cHRocmVhZF9tdXRleF90Kj4oZGF0YSk7Ci0gIHB0aHJlYWRfbXV0ZXhfbG9jayhtdXRl
eCk7Ci0gIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKG11dGV4KTsKKyAgaW50ZXJuYWw6Ok11dGV4KiBt
dXRleCA9IHN0YXRpY19jYXN0PGludGVybmFsOjpNdXRleCo+KGRhdGEpOworICBtdXRleC0+TG9j
aygpOworICBtdXRleC0+VW5sb2NrKCk7CiAgIHJldHVybiBOVUxMOwogfQogCiBURVNUKEdldFRo
cmVhZENvdW50VGVzdCwgUmV0dXJuc0NvcnJlY3RWYWx1ZSkgewotICBFWFBFQ1RfRVEoMVUsIEdl
dFRocmVhZENvdW50KCkpOwotICBwdGhyZWFkX211dGV4X3QgbXV0ZXg7Ci0gIHB0aHJlYWRfYXR0
cl90ICBhdHRyOworICBjb25zdCBzaXplX3Qgc3RhcnRpbmdfY291bnQgPSBHZXRUaHJlYWRDb3Vu
dCgpOwogICBwdGhyZWFkX3QgICAgICAgdGhyZWFkX2lkOwogCi0gIC8vIFRPRE8odmxhZGxAZ29v
Z2xlLmNvbSk6IHR1cm4gbXV0ZXggaW50byBpbnRlcm5hbDo6TXV0ZXggZm9yIGF1dG9tYXRpYwot
ICAvLyBkZXN0cnVjdGlvbi4KLSAgcHRocmVhZF9tdXRleF9pbml0KCZtdXRleCwgTlVMTCk7Ci0g
IHB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXgpOwotICBBU1NFUlRfRVEoMCwgcHRocmVhZF9hdHRy
X2luaXQoJmF0dHIpKTsKLSAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXR0cl9zZXRkZXRhY2hzdGF0
ZSgmYXR0ciwgUFRIUkVBRF9DUkVBVEVfSk9JTkFCTEUpKTsKLQotICBjb25zdCBpbnQgc3RhdHVz
ID0gcHRocmVhZF9jcmVhdGUoJnRocmVhZF9pZCwgJmF0dHIsICZUaHJlYWRGdW5jLCAmbXV0ZXgp
OwotICBBU1NFUlRfRVEoMCwgcHRocmVhZF9hdHRyX2Rlc3Ryb3koJmF0dHIpKTsKLSAgQVNTRVJU
X0VRKDAsIHN0YXR1cyk7Ci0gIEVYUEVDVF9FUSgyVSwgR2V0VGhyZWFkQ291bnQoKSk7Ci0gIHB0
aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleCk7CisgIGludGVybmFsOjpNdXRleCBtdXRleDsKKyAg
eworICAgIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXgpOworICAgIHB0aHJlYWRfYXR0
cl90ICBhdHRyOworICAgIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0dHJfaW5pdCgmYXR0cikpOwor
ICAgIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0dHJfc2V0ZGV0YWNoc3RhdGUoJmF0dHIsIFBUSFJF
QURfQ1JFQVRFX0pPSU5BQkxFKSk7CisKKyAgICBjb25zdCBpbnQgc3RhdHVzID0gcHRocmVhZF9j
cmVhdGUoJnRocmVhZF9pZCwgJmF0dHIsICZUaHJlYWRGdW5jLCAmbXV0ZXgpOworICAgIEFTU0VS
VF9FUSgwLCBwdGhyZWFkX2F0dHJfZGVzdHJveSgmYXR0cikpOworICAgIEFTU0VSVF9FUSgwLCBz
dGF0dXMpOworICAgIEVYUEVDVF9FUShzdGFydGluZ19jb3VudCArIDEsIEdldFRocmVhZENvdW50
KCkpOworICB9CiAKICAgdm9pZCogZHVtbXk7CiAgIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2pvaW4o
dGhyZWFkX2lkLCAmZHVtbXkpKTsKIAotICAvLyBNYWNPUyBYIG1heSBub3QgaW1tZWRpYXRlbHkg
cmVwb3J0IHRoZSB1cGRhdGVkIHRocmVhZCBjb3VudCBhZnRlcgorICAvLyBUaGUgT1MgbWF5IG5v
dCBpbW1lZGlhdGVseSByZXBvcnQgdGhlIHVwZGF0ZWQgdGhyZWFkIGNvdW50IGFmdGVyCiAgIC8v
IGpvaW5pbmcgYSB0aHJlYWQsIGNhdXNpbmcgZmxha2luZXNzIGluIHRoaXMgdGVzdC4gVG8gY291
bnRlciB0aGF0LCB3ZQogICAvLyB3YWl0IGZvciB1cCB0byAuNSBzZWNvbmRzIGZvciB0aGUgT1Mg
dG8gcmVwb3J0IHRoZSBjb3JyZWN0IHZhbHVlLgogICBmb3IgKGludCBpID0gMDsgaSA8IDU7ICsr
aSkgewotICAgIGlmIChHZXRUaHJlYWRDb3VudCgpID09IDEpCisgICAgaWYgKEdldFRocmVhZENv
dW50KCkgPT0gc3RhcnRpbmdfY291bnQpCiAgICAgICBicmVhazsKIAogICAgIFNsZWVwTWlsbGlz
ZWNvbmRzKDEwMCk7CiAgIH0KLSAgRVhQRUNUX0VRKDFVLCBHZXRUaHJlYWRDb3VudCgpKTsKLSAg
cHRocmVhZF9tdXRleF9kZXN0cm95KCZtdXRleCk7CisKKyAgRVhQRUNUX0VRKHN0YXJ0aW5nX2Nv
dW50LCBHZXRUaHJlYWRDb3VudCgpKTsKIH0KICNlbHNlCiBURVNUKEdldFRocmVhZENvdW50VGVz
dCwgUmV0dXJuc1plcm9XaGVuVW5hYmxlVG9Db3VudFRocmVhZHMpIHsKICAgRVhQRUNUX0VRKDBV
LCBHZXRUaHJlYWRDb3VudCgpKTsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfTUFDCisjZW5kaWYg
IC8vIEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19RTlgKIAogVEVT
VChHdGVzdENoZWNrRGVhdGhUZXN0LCBEaWVzV2l0aENvcnJlY3RPdXRwdXRPbkZhaWx1cmUpIHsK
ICAgY29uc3QgYm9vbCBhX2ZhbHNlX2NvbmRpdGlvbiA9IGZhbHNlOwogICBjb25zdCBjaGFyIHJl
Z2V4W10gPQogI2lmZGVmIF9NU0NfVkVSCiAgICAgICJndGVzdC1wb3J0X3Rlc3RcXC5jY1xcKFxc
ZCtcXCk6IgotI2Vsc2UKKyNlbGlmIEdURVNUX1VTRVNfUE9TSVhfUkUKICAgICAgImd0ZXN0LXBv
cnRfdGVzdFxcLmNjOlswLTldKyIKKyNlbHNlCisgICAgICJndGVzdC1wb3J0X3Rlc3RcXC5jYzpc
XGQrIgogI2VuZGlmICAvLyBfTVNDX1ZFUgogICAgICAiLiphX2ZhbHNlX2NvbmRpdGlvbi4qRXh0
cmEgaW5mby4qIjsKIApAQCAtMTcwLDkgKzM3OCwyNiBAQCBURVNUKEd0ZXN0Q2hlY2tEZWF0aFRl
c3QsIExpdmVzU2lsZW50bHlPblN1Y2Nlc3MpIHsKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVB
VEhfVEVTVAogCisvLyBWZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IGNob29zZSByZWd1bGFyIGV4
cHJlc3Npb24gZW5naW5lIGFwcHJvcHJpYXRlIHRvCisvLyB0aGUgcGxhdGZvcm0uIFRoZSB0ZXN0
IHdpbGwgcHJvZHVjZSBjb21waWxlciBlcnJvcnMgaW4gY2FzZSBvZiBmYWlsdXJlLgorLy8gRm9y
IHNpbXBsaWNpdHksIHdlIG9ubHkgY292ZXIgdGhlIG1vc3QgaW1wb3J0YW50IHBsYXRmb3JtcyBo
ZXJlLgorVEVTVChSZWdleEVuZ2luZVNlbGVjdGlvblRlc3QsIFNlbGVjdHNDb3JyZWN0UmVnZXhF
bmdpbmUpIHsKKyNpZiAhR1RFU1RfVVNFU19QQ1JFCisjIGlmIEdURVNUX0hBU19QT1NJWF9SRQor
CisgIEVYUEVDVF9UUlVFKEdURVNUX1VTRVNfUE9TSVhfUkUpOworCisjIGVsc2UKKworICBFWFBF
Q1RfVFJVRShHVEVTVF9VU0VTX1NJTVBMRV9SRSk7CisKKyMgZW5kaWYKKyNlbmRpZiAgLy8gIUdU
RVNUX1VTRVNfUENSRQorfQorCiAjaWYgR1RFU1RfVVNFU19QT1NJWF9SRQogCi0jaWYgR1RFU1Rf
SEFTX1RZUEVEX1RFU1QKKyMgaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFN0cj4KIGNsYXNzIFJFVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CkBA
IC0xODEsOSArNDA2LDkgQEAgY2xhc3MgUkVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
fTsKIC8vIHN1cHBvcnRzLgogdHlwZWRlZiB0ZXN0aW5nOjpUeXBlczwKICAgICA6OnN0ZDo6c3Ry
aW5nLAotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisjICBpZiBHVEVTVF9IQVNfR0xPQkFM
X1NUUklORwogICAgIDo6c3RyaW5nLAotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklO
RworIyAgZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCiAgICAgY29uc3QgY2hhcio+
IFN0cmluZ1R5cGVzOwogCiBUWVBFRF9URVNUX0NBU0UoUkVUZXN0LCBTdHJpbmdUeXBlcyk7CkBA
IC0yMzQsNyArNDU5LDcgQEAgVFlQRURfVEVTVChSRVRlc3QsIFBhcnRpYWxNYXRjaFdvcmtzKSB7
CiAgIEVYUEVDVF9GQUxTRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgienphIiksIHJlKSk7
CiB9CiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QKKyMgZW5kaWYgIC8vIEdURVNU
X0hBU19UWVBFRF9URVNUCiAKICNlbGlmIEdURVNUX1VTRVNfU0lNUExFX1JFCiAKQEAgLTI1Miwz
MyArNDc3LDMzIEBAIFRFU1QoSXNJblNldFRlc3QsIFdvcmtzRm9yTm9uTnVsQ2hhcnMpIHsKICAg
RVhQRUNUX1RSVUUoSXNJblNldCgnYicsICJhYiIpKTsKIH0KIAotVEVTVChJc0RpZ2l0VGVzdCwg
SXNGYWxzZUZvck5vbkRpZ2l0KSB7Ci0gIEVYUEVDVF9GQUxTRShJc0RpZ2l0KCdcMCcpKTsKLSAg
RVhQRUNUX0ZBTFNFKElzRGlnaXQoJyAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0RpZ2l0KCcrJykp
OwotICBFWFBFQ1RfRkFMU0UoSXNEaWdpdCgnLScpKTsKLSAgRVhQRUNUX0ZBTFNFKElzRGlnaXQo
Jy4nKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0RpZ2l0KCdhJykpOworVEVTVChJc0FzY2lpRGlnaXRU
ZXN0LCBJc0ZhbHNlRm9yTm9uRGlnaXQpIHsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlEaWdpdCgn
XDAnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpRGlnaXQoJyAnKSk7CisgIEVYUEVDVF9GQUxT
RShJc0FzY2lpRGlnaXQoJysnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpRGlnaXQoJy0nKSk7
CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpRGlnaXQoJy4nKSk7CisgIEVYUEVDVF9GQUxTRShJc0Fz
Y2lpRGlnaXQoJ2EnKSk7CiB9CiAKLVRFU1QoSXNEaWdpdFRlc3QsIElzVHJ1ZUZvckRpZ2l0KSB7
Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQoJzAnKSk7Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQoJzEn
KSk7Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQoJzUnKSk7Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQo
JzknKSk7CitURVNUKElzQXNjaWlEaWdpdFRlc3QsIElzVHJ1ZUZvckRpZ2l0KSB7CisgIEVYUEVD
VF9UUlVFKElzQXNjaWlEaWdpdCgnMCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaURpZ2l0KCcx
JykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpRGlnaXQoJzUnKSk7CisgIEVYUEVDVF9UUlVFKElz
QXNjaWlEaWdpdCgnOScpKTsKIH0KIAotVEVTVChJc1B1bmN0VGVzdCwgSXNGYWxzZUZvck5vblB1
bmN0KSB7Ci0gIEVYUEVDVF9GQUxTRShJc1B1bmN0KCdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElz
UHVuY3QoJyAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1B1bmN0KCdcbicpKTsKLSAgRVhQRUNUX0ZB
TFNFKElzUHVuY3QoJ2EnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1B1bmN0KCcwJykpOworVEVTVChJ
c0FzY2lpUHVuY3RUZXN0LCBJc0ZhbHNlRm9yTm9uUHVuY3QpIHsKKyAgRVhQRUNUX0ZBTFNFKElz
QXNjaWlQdW5jdCgnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3QoJyAnKSk7Cisg
IEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3QoJ1xuJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2Np
aVB1bmN0KCdhJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVB1bmN0KCcwJykpOwogfQogCi1U
RVNUKElzUHVuY3RUZXN0LCBJc1RydWVGb3JQdW5jdCkgeworVEVTVChJc0FzY2lpUHVuY3RUZXN0
LCBJc1RydWVGb3JQdW5jdCkgewogICBmb3IgKGNvbnN0IGNoYXIqIHAgPSAiXi0hXCIjJCUmJygp
KissLi86Ozw9Pj9AW1xcXV9ge3x9fiI7ICpwOyBwKyspIHsKLSAgICBFWFBFQ1RfUFJFRDEoSXNQ
dW5jdCwgKnApOworICAgIEVYUEVDVF9QUkVEMShJc0FzY2lpUHVuY3QsICpwKTsKICAgfQogfQog
CkBAIC0yOTYsNDcgKzUyMSw0NyBAQCBURVNUKElzUmVwZWF0VGVzdCwgSXNUcnVlRm9yUmVwZWF0
Q2hhcikgewogICBFWFBFQ1RfVFJVRShJc1JlcGVhdCgnKycpKTsKIH0KIAotVEVTVChJc1doaXRl
U3BhY2VUZXN0LCBJc0ZhbHNlRm9yTm9uV2hpdGVTcGFjZSkgewotICBFWFBFQ1RfRkFMU0UoSXNX
aGl0ZVNwYWNlKCdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV2hpdGVTcGFjZSgnYScpKTsKLSAg
RVhQRUNUX0ZBTFNFKElzV2hpdGVTcGFjZSgnMScpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV2hpdGVT
cGFjZSgnKycpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV2hpdGVTcGFjZSgnXycpKTsKK1RFU1QoSXNB
c2NpaVdoaXRlU3BhY2VUZXN0LCBJc0ZhbHNlRm9yTm9uV2hpdGVTcGFjZSkgeworICBFWFBFQ1Rf
RkFMU0UoSXNBc2NpaVdoaXRlU3BhY2UoJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdo
aXRlU3BhY2UoJ2EnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV2hpdGVTcGFjZSgnMScpKTsK
KyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXaGl0ZVNwYWNlKCcrJykpOworICBFWFBFQ1RfRkFMU0Uo
SXNBc2NpaVdoaXRlU3BhY2UoJ18nKSk7CiB9CiAKLVRFU1QoSXNXaGl0ZVNwYWNlVGVzdCwgSXNU
cnVlRm9yV2hpdGVTcGFjZSkgewotICBFWFBFQ1RfVFJVRShJc1doaXRlU3BhY2UoJyAnKSk7Ci0g
IEVYUEVDVF9UUlVFKElzV2hpdGVTcGFjZSgnXG4nKSk7Ci0gIEVYUEVDVF9UUlVFKElzV2hpdGVT
cGFjZSgnXHInKSk7Ci0gIEVYUEVDVF9UUlVFKElzV2hpdGVTcGFjZSgnXHQnKSk7Ci0gIEVYUEVD
VF9UUlVFKElzV2hpdGVTcGFjZSgnXHYnKSk7Ci0gIEVYUEVDVF9UUlVFKElzV2hpdGVTcGFjZSgn
XGYnKSk7CitURVNUKElzQXNjaWlXaGl0ZVNwYWNlVGVzdCwgSXNUcnVlRm9yV2hpdGVTcGFjZSkg
eworICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnICcpKTsKKyAgRVhQRUNUX1RSVUUo
SXNBc2NpaVdoaXRlU3BhY2UoJ1xuJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFj
ZSgnXHInKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXaGl0ZVNwYWNlKCdcdCcpKTsKKyAgRVhQ
RUNUX1RSVUUoSXNBc2NpaVdoaXRlU3BhY2UoJ1x2JykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lp
V2hpdGVTcGFjZSgnXGYnKSk7CiB9CiAKLVRFU1QoSXNXb3JkQ2hhclRlc3QsIElzRmFsc2VGb3JO
b25Xb3JkQ2hhcikgewotICBFWFBFQ1RfRkFMU0UoSXNXb3JkQ2hhcignXDAnKSk7Ci0gIEVYUEVD
VF9GQUxTRShJc1dvcmRDaGFyKCcrJykpOwotICBFWFBFQ1RfRkFMU0UoSXNXb3JkQ2hhcignLicp
KTsKLSAgRVhQRUNUX0ZBTFNFKElzV29yZENoYXIoJyAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1dv
cmRDaGFyKCdcbicpKTsKK1RFU1QoSXNBc2NpaVdvcmRDaGFyVGVzdCwgSXNGYWxzZUZvck5vbldv
cmRDaGFyKSB7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV29yZENoYXIoJ1wwJykpOworICBFWFBF
Q1RfRkFMU0UoSXNBc2NpaVdvcmRDaGFyKCcrJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdv
cmRDaGFyKCcuJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdvcmRDaGFyKCcgJykpOworICBF
WFBFQ1RfRkFMU0UoSXNBc2NpaVdvcmRDaGFyKCdcbicpKTsKIH0KIAotVEVTVChJc1dvcmRDaGFy
VGVzdCwgSXNUcnVlRm9yTGV0dGVyKSB7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJ2EnKSk7
Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJ2InKSk7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENo
YXIoJ0EnKSk7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJ1onKSk7CitURVNUKElzQXNjaWlX
b3JkQ2hhclRlc3QsIElzVHJ1ZUZvckxldHRlcikgeworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29y
ZENoYXIoJ2EnKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignYicpKTsKKyAgRVhQ
RUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCdBJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29y
ZENoYXIoJ1onKSk7CiB9CiAKLVRFU1QoSXNXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvckRpZ2l0KSB7
Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJzAnKSk7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENo
YXIoJzEnKSk7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJzcnKSk7Ci0gIEVYUEVDVF9UUlVF
KElzV29yZENoYXIoJzknKSk7CitURVNUKElzQXNjaWlXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvckRp
Z2l0KSB7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignMCcpKTsKKyAgRVhQRUNUX1RS
VUUoSXNBc2NpaVdvcmRDaGFyKCcxJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIo
JzcnKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignOScpKTsKIH0KIAotVEVTVChJ
c1dvcmRDaGFyVGVzdCwgSXNUcnVlRm9yVW5kZXJzY29yZSkgewotICBFWFBFQ1RfVFJVRShJc1dv
cmRDaGFyKCdfJykpOworVEVTVChJc0FzY2lpV29yZENoYXJUZXN0LCBJc1RydWVGb3JVbmRlcnNj
b3JlKSB7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignXycpKTsKIH0KIAogVEVTVChJ
c1ZhbGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZvck5vblByaW50YWJsZSkgewpAQCAtNzM2LDcgKzk2
MSw3IEBAIFRFU1QoQ2FwdHVyZVRlc3QsIENhcHR1cmVzU3Rkb3V0QW5kU3RkZXJyKSB7CiAKIFRF
U1QoQ2FwdHVyZURlYXRoVGVzdCwgQ2Fubm90UmVlbnRlclN0ZG91dENhcHR1cmUpIHsKICAgQ2Fw
dHVyZVN0ZG91dCgpOwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKENhcHR1cmVTdGRvdXQo
KTssCisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoQ2FwdHVyZVN0ZG91dCgpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJPbmx5IG9uZSBzdGRvdXQgY2FwdHVyZXIgY2FuIGV4aXN0
IGF0IGEgdGltZSIpOwogICBHZXRDYXB0dXJlZFN0ZG91dCgpOwogCkBAIC03NzUsMjMgKzEwMDAs
MjQgQEAgVEVTVChUaHJlYWRMb2NhbFRlc3QsIFZhbHVlRGVmYXVsdENvbnRydWN0b3JJc05vdFJl
cXVpcmVkRm9yUGFyYW1WZXJzaW9uKSB7CiB9CiAKIFRFU1QoVGhyZWFkTG9jYWxUZXN0LCBHZXRB
bmRQb2ludGVyUmV0dXJuU2FtZVZhbHVlKSB7Ci0gIFRocmVhZExvY2FsPFN0cmluZz4gdGhyZWFk
X2xvY2FsOworICBUaHJlYWRMb2NhbDxzdGQ6OnN0cmluZz4gdGhyZWFkX2xvY2FsX3N0cmluZzsK
IAotICBFWFBFQ1RfRVEodGhyZWFkX2xvY2FsLnBvaW50ZXIoKSwgJih0aHJlYWRfbG9jYWwuZ2V0
KCkpKTsKKyAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpLCAmKHRocmVh
ZF9sb2NhbF9zdHJpbmcuZ2V0KCkpKTsKIAogICAvLyBWZXJpZmllcyB0aGUgY29uZGl0aW9uIHN0
aWxsIGhvbGRzIGFmdGVyIGNhbGxpbmcgc2V0LgotICB0aHJlYWRfbG9jYWwuc2V0KCJmb28iKTsK
LSAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbC5wb2ludGVyKCksICYodGhyZWFkX2xvY2FsLmdldCgp
KSk7CisgIHRocmVhZF9sb2NhbF9zdHJpbmcuc2V0KCJmb28iKTsKKyAgRVhQRUNUX0VRKHRocmVh
ZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpLCAmKHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkpKTsK
IH0KIAogVEVTVChUaHJlYWRMb2NhbFRlc3QsIFBvaW50ZXJBbmRDb25zdFBvaW50ZXJSZXR1cm5T
YW1lVmFsdWUpIHsKLSAgVGhyZWFkTG9jYWw8U3RyaW5nPiB0aHJlYWRfbG9jYWw7Ci0gIGNvbnN0
IFRocmVhZExvY2FsPFN0cmluZz4mIGNvbnN0X3RocmVhZF9sb2NhbCA9IHRocmVhZF9sb2NhbDsK
KyAgVGhyZWFkTG9jYWw8c3RkOjpzdHJpbmc+IHRocmVhZF9sb2NhbF9zdHJpbmc7CisgIGNvbnN0
IFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiYgY29uc3RfdGhyZWFkX2xvY2FsX3N0cmluZyA9Cisg
ICAgICB0aHJlYWRfbG9jYWxfc3RyaW5nOwogCi0gIEVYUEVDVF9FUSh0aHJlYWRfbG9jYWwucG9p
bnRlcigpLCBjb25zdF90aHJlYWRfbG9jYWwucG9pbnRlcigpKTsKKyAgRVhQRUNUX0VRKHRocmVh
ZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpLCBjb25zdF90aHJlYWRfbG9jYWxfc3RyaW5nLnBvaW50
ZXIoKSk7CiAKLSAgdGhyZWFkX2xvY2FsLnNldCgiZm9vIik7Ci0gIEVYUEVDVF9FUSh0aHJlYWRf
bG9jYWwucG9pbnRlcigpLCBjb25zdF90aHJlYWRfbG9jYWwucG9pbnRlcigpKTsKKyAgdGhyZWFk
X2xvY2FsX3N0cmluZy5zZXQoImZvbyIpOworICBFWFBFQ1RfRVEodGhyZWFkX2xvY2FsX3N0cmlu
Zy5wb2ludGVyKCksIGNvbnN0X3RocmVhZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpKTsKIH0KIAog
I2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKQEAgLTgzMSwxMSArMTA1NywxMyBAQCBjbGFzcyBBdG9t
aWNDb3VudGVyV2l0aE11dGV4IHsKICAgICBNdXRleExvY2sgbG9jayhtdXRleF8pOwogICAgIGlu
dCB0ZW1wID0gdmFsdWVfOwogICAgIHsKLSAgICAgIC8vIExvY2tpbmcgYSBtdXRleCBwdXRzIHVw
IGEgbWVtb3J5IGJhcnJpZXIsIHByZXZlbnRpbmcgcmVhZHMgYW5kCi0gICAgICAvLyB3cml0ZXMg
dG8gdmFsdWVfIHJlYXJyYW5nZWQgd2hlbiBvYnNlcnZlZCBmcm9tIG90aGVyIHRocmVhZHMuCi0g
ICAgICAvLwotICAgICAgLy8gV2UgY2Fubm90IHVzZSBNdXRleCBhbmQgTXV0ZXhMb2NrIGhlcmUg
b3IgcmVseSBvbiB0aGVpciBtZW1vcnkKLSAgICAgIC8vIGJhcnJpZXIgZnVuY3Rpb25hbGl0eSBh
cyB3ZSBhcmUgdGVzdGluZyB0aGVtIGhlcmUuCisgICAgICAvLyBXZSBuZWVkIHRvIHB1dCB1cCBh
IG1lbW9yeSBiYXJyaWVyIHRvIHByZXZlbnQgcmVhZHMgYW5kIHdyaXRlcyB0bworICAgICAgLy8g
dmFsdWVfIHJlYXJyYW5nZWQgd2l0aCB0aGUgY2FsbCB0byBTbGVlcE1pbGxpc2Vjb25kcyB3aGVu
IG9ic2VydmVkCisgICAgICAvLyBmcm9tIG90aGVyIHRocmVhZHMuCisjaWYgR1RFU1RfSEFTX1BU
SFJFQUQKKyAgICAgIC8vIE9uIFBPU0lYLCBsb2NraW5nIGEgbXV0ZXggcHV0cyB1cCBhIG1lbW9y
eSBiYXJyaWVyLiAgV2UgY2Fubm90IHVzZQorICAgICAgLy8gTXV0ZXggYW5kIE11dGV4TG9jayBo
ZXJlIG9yIHJlbHkgb24gdGhlaXIgbWVtb3J5IGJhcnJpZXIKKyAgICAgIC8vIGZ1bmN0aW9uYWxp
dHkgYXMgd2UgYXJlIHRlc3RpbmcgdGhlbSBoZXJlLgogICAgICAgcHRocmVhZF9tdXRleF90IG1l
bW9yeV9iYXJyaWVyX211dGV4OwogICAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18oCiAg
ICAgICAgICAgcHRocmVhZF9tdXRleF9pbml0KCZtZW1vcnlfYmFycmllcl9tdXRleCwgTlVMTCkp
OwpAQCAtODQ0LDYgKzEwNzIsMTYgQEAgY2xhc3MgQXRvbWljQ291bnRlcldpdGhNdXRleCB7CiAg
ICAgICBTbGVlcE1pbGxpc2Vjb25kcyhyYW5kb21fLkdlbmVyYXRlKDMwKSk7CiAKICAgICAgIEdU
RVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtZW1vcnlfYmFy
cmllcl9tdXRleCkpOworICAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9t
dXRleF9kZXN0cm95KCZtZW1vcnlfYmFycmllcl9tdXRleCkpOworI2VsaWYgR1RFU1RfT1NfV0lO
RE9XUworICAgICAgLy8gT24gV2luZG93cywgcGVyZm9ybWluZyBhbiBpbnRlcmxvY2tlZCBhY2Nl
c3MgcHV0cyB1cCBhIG1lbW9yeSBiYXJyaWVyLgorICAgICAgdm9sYXRpbGUgTE9ORyBkdW1teSA9
IDA7CisgICAgICA6OkludGVybG9ja2VkSW5jcmVtZW50KCZkdW1teSk7CisgICAgICBTbGVlcE1p
bGxpc2Vjb25kcyhyYW5kb21fLkdlbmVyYXRlKDMwKSk7CisgICAgICA6OkludGVybG9ja2VkSW5j
cmVtZW50KCZkdW1teSk7CisjZWxzZQorIyBlcnJvciAiTWVtb3J5IGJhcnJpZXIgbm90IGltcGxl
bWVudGVkIG9uIHRoaXMgcGxhdGZvcm0uIgorI2VuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVBRAog
ICAgIH0KICAgICB2YWx1ZV8gPSB0ZW1wICsgMTsKICAgfQpAQCAtODk1LDEyNCArMTEzMywxNzIg
QEAgdm9pZCBSdW5Gcm9tVGhyZWFkKHZvaWQgKGZ1bmMpKFQpLCBUIHBhcmFtKSB7CiAgIHRocmVh
ZC5Kb2luKCk7CiB9CiAKLXZvaWQgUmV0cmlldmVUaHJlYWRMb2NhbFZhbHVlKHBhaXI8VGhyZWFk
TG9jYWw8U3RyaW5nPiosIFN0cmluZyo+IHBhcmFtKSB7Cit2b2lkIFJldHJpZXZlVGhyZWFkTG9j
YWxWYWx1ZSgKKyAgICBwYWlyPFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiosIHN0ZDo6c3RyaW5n
Kj4gcGFyYW0pIHsKICAgKnBhcmFtLnNlY29uZCA9IHBhcmFtLmZpcnN0LT5nZXQoKTsKIH0KIAog
VEVTVChUaHJlYWRMb2NhbFRlc3QsIFBhcmFtZXRlcml6ZWRDb25zdHJ1Y3RvclNldHNEZWZhdWx0
KSB7Ci0gIFRocmVhZExvY2FsPFN0cmluZz4gdGhyZWFkX2xvY2FsKCJmb28iKTsKLSAgRVhQRUNU
X1NUUkVRKCJmb28iLCB0aHJlYWRfbG9jYWwuZ2V0KCkuY19zdHIoKSk7CisgIFRocmVhZExvY2Fs
PHN0ZDo6c3RyaW5nPiB0aHJlYWRfbG9jYWxfc3RyaW5nKCJmb28iKTsKKyAgRVhQRUNUX1NUUkVR
KCJmb28iLCB0aHJlYWRfbG9jYWxfc3RyaW5nLmdldCgpLmNfc3RyKCkpOwogCi0gIHRocmVhZF9s
b2NhbC5zZXQoImJhciIpOwotICBFWFBFQ1RfU1RSRVEoImJhciIsIHRocmVhZF9sb2NhbC5nZXQo
KS5jX3N0cigpKTsKKyAgdGhyZWFkX2xvY2FsX3N0cmluZy5zZXQoImJhciIpOworICBFWFBFQ1Rf
U1RSRVEoImJhciIsIHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkuY19zdHIoKSk7CiAKLSAgU3Ry
aW5nIHJlc3VsdDsKLSAgUnVuRnJvbVRocmVhZCgmUmV0cmlldmVUaHJlYWRMb2NhbFZhbHVlLCBt
YWtlX3BhaXIoJnRocmVhZF9sb2NhbCwgJnJlc3VsdCkpOworICBzdGQ6OnN0cmluZyByZXN1bHQ7
CisgIFJ1bkZyb21UaHJlYWQoJlJldHJpZXZlVGhyZWFkTG9jYWxWYWx1ZSwKKyAgICAgICAgICAg
ICAgICBtYWtlX3BhaXIoJnRocmVhZF9sb2NhbF9zdHJpbmcsICZyZXN1bHQpKTsKICAgRVhQRUNU
X1NUUkVRKCJmb28iLCByZXN1bHQuY19zdHIoKSk7CiB9CiAKKy8vIEtlZXBzIHRyYWNrIG9mIHdo
ZXRoZXIgb2YgZGVzdHJ1Y3RvcnMgYmVpbmcgY2FsbGVkIG9uIGluc3RhbmNlcyBvZgorLy8gRGVz
dHJ1Y3RvclRyYWNrZXIuICBPbiBXaW5kb3dzLCB3YWl0cyBmb3IgdGhlIGRlc3RydWN0b3IgY2Fs
bCByZXBvcnRzLgorY2xhc3MgRGVzdHJ1Y3RvckNhbGwgeworIHB1YmxpYzoKKyAgRGVzdHJ1Y3Rv
ckNhbGwoKSB7CisgICAgaW52b2tlZF8gPSBmYWxzZTsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisg
ICAgd2FpdF9ldmVudF8uUmVzZXQoOjpDcmVhdGVFdmVudChOVUxMLCBUUlVFLCBGQUxTRSwgTlVM
TCkpOworICAgIEdURVNUX0NIRUNLXyh3YWl0X2V2ZW50Xy5HZXQoKSAhPSBOVUxMKTsKKyNlbmRp
ZgorICB9CisKKyAgYm9vbCBDaGVja0Rlc3Ryb3llZCgpIGNvbnN0IHsKKyNpZiBHVEVTVF9PU19X
SU5ET1dTCisgICAgaWYgKDo6V2FpdEZvclNpbmdsZU9iamVjdCh3YWl0X2V2ZW50Xy5HZXQoKSwg
MTAwMCkgIT0gV0FJVF9PQkpFQ1RfMCkKKyAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAg
IHJldHVybiBpbnZva2VkXzsKKyAgfQorCisgIHZvaWQgUmVwb3J0RGVzdHJveWVkKCkgeworICAg
IGludm9rZWRfID0gdHJ1ZTsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgICAgOjpTZXRFdmVudCh3
YWl0X2V2ZW50Xy5HZXQoKSk7CisjZW5kaWYKKyAgfQorCisgIHN0YXRpYyBzdGQ6OnZlY3RvcjxE
ZXN0cnVjdG9yQ2FsbCo+JiBMaXN0KCkgeyByZXR1cm4gKmxpc3RfOyB9CisKKyAgc3RhdGljIHZv
aWQgUmVzZXRMaXN0KCkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdF8tPnNpemUo
KTsgKytpKSB7CisgICAgICBkZWxldGUgbGlzdF8tPmF0KGkpOworICAgIH0KKyAgICBsaXN0Xy0+
Y2xlYXIoKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgYm9vbCBpbnZva2VkXzsKKyNpZiBHVEVTVF9P
U19XSU5ET1dTCisgIEF1dG9IYW5kbGUgd2FpdF9ldmVudF87CisjZW5kaWYKKyAgc3RhdGljIHN0
ZDo6dmVjdG9yPERlc3RydWN0b3JDYWxsKj4qIGNvbnN0IGxpc3RfOworCisgIEdURVNUX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTl8oRGVzdHJ1Y3RvckNhbGwpOworfTsKKworc3RkOjp2ZWN0b3I8
RGVzdHJ1Y3RvckNhbGwqPiogY29uc3QgRGVzdHJ1Y3RvckNhbGw6Omxpc3RfID0KKyAgICBuZXcg
c3RkOjp2ZWN0b3I8RGVzdHJ1Y3RvckNhbGwqPjsKKwogLy8gRGVzdHJ1Y3RvclRyYWNrZXIga2Vl
cHMgdHJhY2sgb2Ygd2hldGhlciBpdHMgaW5zdGFuY2VzIGhhdmUgYmVlbgogLy8gZGVzdHJveWVk
Lgotc3RhdGljIHN0ZDo6dmVjdG9yPGJvb2w+IGdfZGVzdHJveWVkOwotCiBjbGFzcyBEZXN0cnVj
dG9yVHJhY2tlciB7CiAgcHVibGljOgogICBEZXN0cnVjdG9yVHJhY2tlcigpIDogaW5kZXhfKEdl
dE5ld0luZGV4KCkpIHt9CiAgIERlc3RydWN0b3JUcmFja2VyKGNvbnN0IERlc3RydWN0b3JUcmFj
a2VyJiAvKiByaHMgKi8pCiAgICAgICA6IGluZGV4XyhHZXROZXdJbmRleCgpKSB7fQogICB+RGVz
dHJ1Y3RvclRyYWNrZXIoKSB7Ci0gICAgLy8gV2UgbmV2ZXIgYWNjZXNzIGdfZGVzdHJveWVkIGNv
bmN1cnJlbnRseSwgc28gd2UgZG9uJ3QgbmVlZCB0bwotICAgIC8vIHByb3RlY3QgdGhlIHdyaXRl
IG9wZXJhdGlvbiB1bmRlciBhIG11dGV4LgotICAgIGdfZGVzdHJveWVkW2luZGV4X10gPSB0cnVl
OworICAgIC8vIFdlIG5ldmVyIGFjY2VzcyBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpIGNvbmN1cnJl
bnRseSwgc28gd2UgZG9uJ3QgbmVlZAorICAgIC8vIHRvIHByb3RlY3QgdGhpcyBhY2NjZXNzIHdp
dGggYSBtdXRleC4KKyAgICBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpW2luZGV4X10tPlJlcG9ydERl
c3Ryb3llZCgpOwogICB9CiAKICBwcml2YXRlOgotICBzdGF0aWMgaW50IEdldE5ld0luZGV4KCkg
ewotICAgIGdfZGVzdHJveWVkLnB1c2hfYmFjayhmYWxzZSk7Ci0gICAgcmV0dXJuIGdfZGVzdHJv
eWVkLnNpemUoKSAtIDE7CisgIHN0YXRpYyBzaXplX3QgR2V0TmV3SW5kZXgoKSB7CisgICAgRGVz
dHJ1Y3RvckNhbGw6Okxpc3QoKS5wdXNoX2JhY2sobmV3IERlc3RydWN0b3JDYWxsKTsKKyAgICBy
ZXR1cm4gRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKS5zaXplKCkgLSAxOwogICB9Ci0gIGNvbnN0IGlu
dCBpbmRleF87CisgIGNvbnN0IHNpemVfdCBpbmRleF87CisKKyAgR1RFU1RfRElTQUxMT1dfQVNT
SUdOXyhEZXN0cnVjdG9yVHJhY2tlcik7CiB9OwogCiB0eXBlZGVmIFRocmVhZExvY2FsPERlc3Ry
dWN0b3JUcmFja2VyPiogVGhyZWFkUGFyYW07CiAKLXZvaWQgQ2FsbFRocmVhZExvY2FsR2V0KFRo
cmVhZFBhcmFtIHRocmVhZF9sb2NhbCkgewotICB0aHJlYWRfbG9jYWwtPmdldCgpOwordm9pZCBD
YWxsVGhyZWFkTG9jYWxHZXQoVGhyZWFkUGFyYW0gdGhyZWFkX2xvY2FsX3BhcmFtKSB7CisgIHRo
cmVhZF9sb2NhbF9wYXJhbS0+Z2V0KCk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgd2hlbiBhIFRocmVh
ZExvY2FsIG9iamVjdCBkaWVzIGluIGEgdGhyZWFkLCBpdCBkZXN0cm95cwogLy8gdGhlIG1hbmFn
ZWQgb2JqZWN0IGZvciB0aGF0IHRocmVhZC4KIFRFU1QoVGhyZWFkTG9jYWxUZXN0LCBEZXN0cm95
c01hbmFnZWRPYmplY3RGb3JPd25UaHJlYWRXaGVuRHlpbmcpIHsKLSAgZ19kZXN0cm95ZWQuY2xl
YXIoKTsKKyAgRGVzdHJ1Y3RvckNhbGw6OlJlc2V0TGlzdCgpOwogCiAgIHsKLSAgICAvLyBUaGUg
bmV4dCBsaW5lIGRlZmF1bHQgY29uc3RydWN0cyBhIERlc3RydWN0b3JUcmFja2VyIG9iamVjdCBh
cwotICAgIC8vIHRoZSBkZWZhdWx0IHZhbHVlIG9mIG9iamVjdHMgbWFuYWdlZCBieSB0aHJlYWRf
bG9jYWwuCi0gICAgVGhyZWFkTG9jYWw8RGVzdHJ1Y3RvclRyYWNrZXI+IHRocmVhZF9sb2NhbDsK
LSAgICBBU1NFUlRfRVEoMVUsIGdfZGVzdHJveWVkLnNpemUoKSk7Ci0gICAgQVNTRVJUX0ZBTFNF
KGdfZGVzdHJveWVkWzBdKTsKKyAgICBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4gdGhy
ZWFkX2xvY2FsX3RyYWNrZXI7CisgICAgQVNTRVJUX0VRKDBVLCBEZXN0cnVjdG9yQ2FsbDo6TGlz
dCgpLnNpemUoKSk7CiAKICAgICAvLyBUaGlzIGNyZWF0ZXMgYW5vdGhlciBEZXN0cnVjdG9yVHJh
Y2tlciBvYmplY3QgZm9yIHRoZSBtYWluIHRocmVhZC4KLSAgICB0aHJlYWRfbG9jYWwuZ2V0KCk7
Ci0gICAgQVNTRVJUX0VRKDJVLCBnX2Rlc3Ryb3llZC5zaXplKCkpOwotICAgIEFTU0VSVF9GQUxT
RShnX2Rlc3Ryb3llZFswXSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdfZGVzdHJveWVkWzFdKTsKKyAg
ICB0aHJlYWRfbG9jYWxfdHJhY2tlci5nZXQoKTsKKyAgICBBU1NFUlRfRVEoMVUsIERlc3RydWN0
b3JDYWxsOjpMaXN0KCkuc2l6ZSgpKTsKKyAgICBBU1NFUlRfRkFMU0UoRGVzdHJ1Y3RvckNhbGw6
Okxpc3QoKVswXS0+Q2hlY2tEZXN0cm95ZWQoKSk7CiAgIH0KIAotICAvLyBOb3cgdGhyZWFkX2xv
Y2FsIGhhcyBkaWVkLiAgSXQgc2hvdWxkIGhhdmUgZGVzdHJveWVkIGJvdGggdGhlCi0gIC8vIGRl
ZmF1bHQgdmFsdWUgc2hhcmVkIGJ5IGFsbCB0aHJlYWRzIGFuZCB0aGUgdmFsdWUgZm9yIHRoZSBt
YWluCi0gIC8vIHRocmVhZC4KLSAgQVNTRVJUX0VRKDJVLCBnX2Rlc3Ryb3llZC5zaXplKCkpOwot
ICBFWFBFQ1RfVFJVRShnX2Rlc3Ryb3llZFswXSk7Ci0gIEVYUEVDVF9UUlVFKGdfZGVzdHJveWVk
WzFdKTsKKyAgLy8gTm93IHRocmVhZF9sb2NhbF90cmFja2VyIGhhcyBkaWVkLgorICBBU1NFUlRf
RVEoMVUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpKTsKKyAgRVhQRUNUX1RSVUUoRGVz
dHJ1Y3RvckNhbGw6Okxpc3QoKVswXS0+Q2hlY2tEZXN0cm95ZWQoKSk7CiAKLSAgZ19kZXN0cm95
ZWQuY2xlYXIoKTsKKyAgRGVzdHJ1Y3RvckNhbGw6OlJlc2V0TGlzdCgpOwogfQogCiAvLyBUZXN0
cyB0aGF0IHdoZW4gYSB0aHJlYWQgZXhpdHMsIHRoZSB0aHJlYWQtbG9jYWwgb2JqZWN0IGZvciB0
aGF0CiAvLyB0aHJlYWQgaXMgZGVzdHJveWVkLgogVEVTVChUaHJlYWRMb2NhbFRlc3QsIERlc3Ry
b3lzTWFuYWdlZE9iamVjdEF0VGhyZWFkRXhpdCkgewotICBnX2Rlc3Ryb3llZC5jbGVhcigpOwor
ICBEZXN0cnVjdG9yQ2FsbDo6UmVzZXRMaXN0KCk7CiAKICAgewotICAgIC8vIFRoZSBuZXh0IGxp
bmUgZGVmYXVsdCBjb25zdHJ1Y3RzIGEgRGVzdHJ1Y3RvclRyYWNrZXIgb2JqZWN0IGFzCi0gICAg
Ly8gdGhlIGRlZmF1bHQgdmFsdWUgb2Ygb2JqZWN0cyBtYW5hZ2VkIGJ5IHRocmVhZF9sb2NhbC4K
LSAgICBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4gdGhyZWFkX2xvY2FsOwotICAgIEFT
U0VSVF9FUSgxVSwgZ19kZXN0cm95ZWQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRkFMU0UoZ19kZXN0
cm95ZWRbMF0pOworICAgIFRocmVhZExvY2FsPERlc3RydWN0b3JUcmFja2VyPiB0aHJlYWRfbG9j
YWxfdHJhY2tlcjsKKyAgICBBU1NFUlRfRVEoMFUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6
ZSgpKTsKIAogICAgIC8vIFRoaXMgY3JlYXRlcyBhbm90aGVyIERlc3RydWN0b3JUcmFja2VyIG9i
amVjdCBpbiB0aGUgbmV3IHRocmVhZC4KICAgICBUaHJlYWRXaXRoUGFyYW08VGhyZWFkUGFyYW0+
IHRocmVhZCgKLSAgICAgICAgJkNhbGxUaHJlYWRMb2NhbEdldCwgJnRocmVhZF9sb2NhbCwgTlVM
TCk7CisgICAgICAgICZDYWxsVGhyZWFkTG9jYWxHZXQsICZ0aHJlYWRfbG9jYWxfdHJhY2tlciwg
TlVMTCk7CiAgICAgdGhyZWFkLkpvaW4oKTsKIAotICAgIC8vIE5vdyB0aGUgbmV3IHRocmVhZCBo
YXMgZXhpdGVkLiAgVGhlIHBlci10aHJlYWQgb2JqZWN0IGZvciBpdAotICAgIC8vIHNob3VsZCBo
YXZlIGJlZW4gZGVzdHJveWVkLgotICAgIEFTU0VSVF9FUSgyVSwgZ19kZXN0cm95ZWQuc2l6ZSgp
KTsKLSAgICBBU1NFUlRfRkFMU0UoZ19kZXN0cm95ZWRbMF0pOwotICAgIEFTU0VSVF9UUlVFKGdf
ZGVzdHJveWVkWzFdKTsKKyAgICAvLyBUaGUgdGhyZWFkIGhhcyBleGl0ZWQsIGFuZCB3ZSBzaG91
bGQgaGF2ZSBhIERlc3Ryb3llZFRyYWNrZXIKKyAgICAvLyBpbnN0YW5jZSBjcmVhdGVkIGZvciBp
dC4gQnV0IGl0IG1heSBub3QgaGF2ZSBiZWVuIGRlc3Ryb3llZCB5ZXQuCisgICAgQVNTRVJUX0VR
KDFVLCBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnNpemUoKSk7CiAgIH0KIAotICAvLyBOb3cgdGhy
ZWFkX2xvY2FsIGhhcyBkaWVkLiAgVGhlIGRlZmF1bHQgdmFsdWUgc2hvdWxkIGhhdmUgYmVlbgot
ICAvLyBkZXN0cm95ZWQgdG9vLgotICBBU1NFUlRfRVEoMlUsIGdfZGVzdHJveWVkLnNpemUoKSk7
Ci0gIEVYUEVDVF9UUlVFKGdfZGVzdHJveWVkWzBdKTsKLSAgRVhQRUNUX1RSVUUoZ19kZXN0cm95
ZWRbMV0pOworICAvLyBUaGUgdGhyZWFkIGhhcyBleGl0ZWQgYW5kIHRocmVhZF9sb2NhbF90cmFj
a2VyIGhhcyBkaWVkLgorICBBU1NFUlRfRVEoMVUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6
ZSgpKTsKKyAgRVhQRUNUX1RSVUUoRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKVswXS0+Q2hlY2tEZXN0
cm95ZWQoKSk7CiAKLSAgZ19kZXN0cm95ZWQuY2xlYXIoKTsKKyAgRGVzdHJ1Y3RvckNhbGw6OlJl
c2V0TGlzdCgpOwogfQogCiBURVNUKFRocmVhZExvY2FsVGVzdCwgVGhyZWFkTG9jYWxNdXRhdGlv
bnNBZmZlY3RPbmx5Q3VycmVudFRocmVhZCkgewotICBUaHJlYWRMb2NhbDxTdHJpbmc+IHRocmVh
ZF9sb2NhbDsKLSAgdGhyZWFkX2xvY2FsLnNldCgiRm9vIik7Ci0gIEVYUEVDVF9TVFJFUSgiRm9v
IiwgdGhyZWFkX2xvY2FsLmdldCgpLmNfc3RyKCkpOworICBUaHJlYWRMb2NhbDxzdGQ6OnN0cmlu
Zz4gdGhyZWFkX2xvY2FsX3N0cmluZzsKKyAgdGhyZWFkX2xvY2FsX3N0cmluZy5zZXQoIkZvbyIp
OworICBFWFBFQ1RfU1RSRVEoIkZvbyIsIHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkuY19zdHIo
KSk7CiAKLSAgU3RyaW5nIHJlc3VsdDsKLSAgUnVuRnJvbVRocmVhZCgmUmV0cmlldmVUaHJlYWRM
b2NhbFZhbHVlLCBtYWtlX3BhaXIoJnRocmVhZF9sb2NhbCwgJnJlc3VsdCkpOwotICBFWFBFQ1Rf
VFJVRShyZXN1bHQuY19zdHIoKSA9PSBOVUxMKTsKKyAgc3RkOjpzdHJpbmcgcmVzdWx0OworICBS
dW5Gcm9tVGhyZWFkKCZSZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUsCisgICAgICAgICAgICAgICAg
bWFrZV9wYWlyKCZ0aHJlYWRfbG9jYWxfc3RyaW5nLCAmcmVzdWx0KSk7CisgIEVYUEVDVF9UUlVF
KHJlc3VsdC5lbXB0eSgpKTsKIH0KIAogI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCiAK
KyNpZiBHVEVTVF9PU19XSU5ET1dTCitURVNUKFdpbmRvd3NUeXBlc1Rlc3QsIEhBTkRMRUlzVm9p
ZFN0YXIpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPEhBTkRMRSwgdm9pZCo+KCk7Cit9CisKK1RF
U1QoV2luZG93c1R5cGVzVGVzdCwgQ1JJVElDQUxfU0VDVElPTklzX1JUTF9DUklUSUNBTF9TRUNU
SU9OKSB7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxDUklUSUNBTF9TRUNUSU9OLCBfUlRMX0NSSVRJ
Q0FMX1NFQ1RJT04+KCk7Cit9CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKwogfSAgLy8g
bmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wcmludGVyc190ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wcmludGVyc190ZXN0LmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNlOTdjYzI0YWI0YzE1NjVmZTgzZjEzZDE2OTZkMjhiYzNmMmUxZjQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXByaW50ZXJzX3Rlc3Qu
Y2MKQEAgLTAsMCArMSwxNjM1IEBACisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KKy8v
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQor
CisvLyBHb29nbGUgVGVzdCAtIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrCisvLwor
Ly8gVGhpcyBmaWxlIHRlc3RzIHRoZSB1bml2ZXJzYWwgdmFsdWUgcHJpbnRlci4KKworI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LXByaW50ZXJzLmgiCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1
ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4K
KyNpbmNsdWRlIDxkZXF1ZT4KKyNpbmNsdWRlIDxsaXN0PgorI2luY2x1ZGUgPG1hcD4KKyNpbmNs
dWRlIDxzZXQ+CisjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVk
ZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgorCisvLyBoYXNoX21hcCBhbmQgaGFzaF9zZXQgYXJlIGF2YWlsYWJsZSB1bmRlciBWaXN1YWwg
QysrLCBvciBvbiBMaW51eC4KKyNpZiBHVEVTVF9IQVNfSEFTSF9NQVBfCisjIGluY2x1ZGUgPGhh
c2hfbWFwPiAgICAgICAgICAgIC8vIE5PTElOVAorI2VuZGlmICAvLyBHVEVTVF9IQVNfSEFTSF9N
QVBfCisjaWYgR1RFU1RfSEFTX0hBU0hfU0VUXworIyBpbmNsdWRlIDxoYXNoX3NldD4gICAgICAg
ICAgICAvLyBOT0xJTlQKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0hBU0hfU0VUXworCisjaWYgR1RF
U1RfSEFTX1NURF9GT1JXQVJEX0xJU1RfCisjIGluY2x1ZGUgPGZvcndhcmRfbGlzdD4gLy8gTk9M
SU5UCisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfRk9SV0FSRF9MSVNUXworCisvLyBTb21lIHVz
ZXItZGVmaW5lZCB0eXBlcyBmb3IgdGVzdGluZyB0aGUgdW5pdmVyc2FsIHZhbHVlIHByaW50ZXIu
CisKKy8vIEFuIGFub255bW91cyBlbnVtIHR5cGUuCitlbnVtIEFub255bW91c0VudW0geworICBr
QUUxID0gLTEsCisgIGtBRTIgPSAxCit9OworCisvLyBBbiBlbnVtIHdpdGhvdXQgYSB1c2VyLWRl
ZmluZWQgcHJpbnRlci4KK2VudW0gRW51bVdpdGhvdXRQcmludGVyIHsKKyAga0VXUDEgPSAtMiwK
KyAga0VXUDIgPSA0MgorfTsKKworLy8gQW4gZW51bSB3aXRoIGEgPDwgb3BlcmF0b3IuCitlbnVt
IEVudW1XaXRoU3RyZWFtaW5nIHsKKyAga0VXUzEgPSAxMAorfTsKKworc3RkOjpvc3RyZWFtJiBv
cGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIEVudW1XaXRoU3RyZWFtaW5nIGUpIHsKKyAgcmV0
dXJuIG9zIDw8IChlID09IGtFV1MxID8gImtFV1MxIiA6ICJpbnZhbGlkIik7Cit9CisKKy8vIEFu
IGVudW0gd2l0aCBhIFByaW50VG8oKSBmdW5jdGlvbi4KK2VudW0gRW51bVdpdGhQcmludFRvIHsK
KyAga0VXUFQxID0gMQorfTsKKwordm9pZCBQcmludFRvKEVudW1XaXRoUHJpbnRUbyBlLCBzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCAoZSA9PSBrRVdQVDEgPyAia0VXUFQxIiA6ICJpbnZh
bGlkIik7Cit9CisKKy8vIEEgY2xhc3MgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0byBCaWdnZXN0
SW50LgorY2xhc3MgQmlnZ2VzdEludENvbnZlcnRpYmxlIHsKKyBwdWJsaWM6CisgIG9wZXJhdG9y
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkJpZ2dlc3RJbnQoKSBjb25zdCB7IHJldHVybiA0MjsgfQor
fTsKKworLy8gQSB1c2VyLWRlZmluZWQgdW5wcmludGFibGUgY2xhc3MgdGVtcGxhdGUgaW4gdGhl
IGdsb2JhbCBuYW1lc3BhY2UuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFVucHJpbnRh
YmxlVGVtcGxhdGVJbkdsb2JhbCB7CisgcHVibGljOgorICBVbnByaW50YWJsZVRlbXBsYXRlSW5H
bG9iYWwoKSA6IHZhbHVlXygpIHt9CisgcHJpdmF0ZToKKyAgVCB2YWx1ZV87Cit9OworCisvLyBB
IHVzZXItZGVmaW5lZCBzdHJlYW1hYmxlIHR5cGUgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCitj
bGFzcyBTdHJlYW1hYmxlSW5HbG9iYWwgeworIHB1YmxpYzoKKyAgdmlydHVhbCB+U3RyZWFtYWJs
ZUluR2xvYmFsKCkge30KK307CisKK2lubGluZSB2b2lkIG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJl
YW0mIG9zLCBjb25zdCBTdHJlYW1hYmxlSW5HbG9iYWwmIC8qIHggKi8pIHsKKyAgb3MgPDwgIlN0
cmVhbWFibGVJbkdsb2JhbCI7Cit9CisKK3ZvaWQgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYg
b3MsIGNvbnN0IFN0cmVhbWFibGVJbkdsb2JhbCogLyogeCAqLykgeworICBvcyA8PCAiU3RyZWFt
YWJsZUluR2xvYmFsKiI7Cit9CisKK25hbWVzcGFjZSBmb28geworCisvLyBBIHVzZXItZGVmaW5l
ZCB1bnByaW50YWJsZSB0eXBlIGluIGEgdXNlciBuYW1lc3BhY2UuCitjbGFzcyBVbnByaW50YWJs
ZUluRm9vIHsKKyBwdWJsaWM6CisgIFVucHJpbnRhYmxlSW5Gb28oKSA6IHpfKDApIHsgbWVtY3B5
KHh5XywgIlx4RUZceDEyXHgwXHgwXHgzNFx4QUJceDBceDAiLCA4KTsgfQorICBkb3VibGUgeigp
IGNvbnN0IHsgcmV0dXJuIHpfOyB9CisgcHJpdmF0ZToKKyAgY2hhciB4eV9bOF07CisgIGRvdWJs
ZSB6XzsKK307CisKKy8vIEEgdXNlci1kZWZpbmVkIHByaW50YWJsZSB0eXBlIGluIGEgdXNlci1j
aG9zZW4gbmFtZXNwYWNlLgorc3RydWN0IFByaW50YWJsZVZpYVByaW50VG8geworICBQcmludGFi
bGVWaWFQcmludFRvKCkgOiB2YWx1ZSgpIHt9CisgIGludCB2YWx1ZTsKK307CisKK3ZvaWQgUHJp
bnRUbyhjb25zdCBQcmludGFibGVWaWFQcmludFRvJiB4LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsK
KyAgKm9zIDw8ICJQcmludGFibGVWaWFQcmludFRvOiAiIDw8IHgudmFsdWU7Cit9CisKKy8vIEEg
dHlwZSB3aXRoIGEgdXNlci1kZWZpbmVkIDw8IGZvciBwcmludGluZyBpdHMgcG9pbnRlci4KK3N0
cnVjdCBQb2ludGVyUHJpbnRhYmxlIHsKK307CisKKzo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8
KDo6c3RkOjpvc3RyZWFtJiBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBv
aW50ZXJQcmludGFibGUqIC8qIHggKi8pIHsKKyAgcmV0dXJuIG9zIDw8ICJQb2ludGVyUHJpbnRh
YmxlKiI7Cit9CisKKy8vIEEgdXNlci1kZWZpbmVkIHByaW50YWJsZSBjbGFzcyB0ZW1wbGF0ZSBp
biBhIHVzZXItY2hvc2VuIG5hbWVzcGFjZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3Mg
UHJpbnRhYmxlVmlhUHJpbnRUb1RlbXBsYXRlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFByaW50
YWJsZVZpYVByaW50VG9UZW1wbGF0ZShjb25zdCBUJiBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVl
KSB7fQorCisgIGNvbnN0IFQmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CisgcHJp
dmF0ZToKKyAgVCB2YWx1ZV87Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgUHJp
bnRUbyhjb25zdCBQcmludGFibGVWaWFQcmludFRvVGVtcGxhdGU8VD4mIHgsIDo6c3RkOjpvc3Ry
ZWFtKiBvcykgeworICAqb3MgPDwgIlByaW50YWJsZVZpYVByaW50VG9UZW1wbGF0ZTogIiA8PCB4
LnZhbHVlKCk7Cit9CisKKy8vIEEgdXNlci1kZWZpbmVkIHN0cmVhbWFibGUgY2xhc3MgdGVtcGxh
dGUgaW4gYSB1c2VyIG5hbWVzcGFjZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgU3Ry
ZWFtYWJsZVRlbXBsYXRlSW5Gb28geworIHB1YmxpYzoKKyAgU3RyZWFtYWJsZVRlbXBsYXRlSW5G
b28oKSA6IHZhbHVlXygpIHt9CisKKyAgY29uc3QgVCYgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2
YWx1ZV87IH0KKyBwcml2YXRlOgorICBUIHZhbHVlXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgoraW5saW5lIDo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBv
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJlYW1hYmxlVGVt
cGxhdGVJbkZvbzxUPiYgeCkgeworICByZXR1cm4gb3MgPDwgIlN0cmVhbWFibGVUZW1wbGF0ZUlu
Rm9vOiAiIDw8IHgudmFsdWUoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGZvbworCituYW1lc3Bh
Y2UgdGVzdGluZyB7CituYW1lc3BhY2UgZ3Rlc3RfcHJpbnRlcnNfdGVzdCB7CisKK3VzaW5nIDo6
c3RkOjpkZXF1ZTsKK3VzaW5nIDo6c3RkOjpsaXN0OwordXNpbmcgOjpzdGQ6Om1ha2VfcGFpcjsK
K3VzaW5nIDo6c3RkOjptYXA7Cit1c2luZyA6OnN0ZDo6bXVsdGltYXA7Cit1c2luZyA6OnN0ZDo6
bXVsdGlzZXQ7Cit1c2luZyA6OnN0ZDo6cGFpcjsKK3VzaW5nIDo6c3RkOjpzZXQ7Cit1c2luZyA6
OnN0ZDo6dmVjdG9yOwordXNpbmcgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nOwordXNpbmcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlOwordXNp
bmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzsKK3VzaW5nIDo6dGVzdGluZzo6
aW50ZXJuYWw6Ok5hdGl2ZUFycmF5OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UkU7Cit1
c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlOwordXNp
bmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nczsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJu
YWw6OlVuaXZlcnNhbFByaW50OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2Fs
UHJpbnRlcjsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnQ7
Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVs
ZHNUb1N0cmluZ3M7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmc7CisKKy8vIFRo
ZSBoYXNoXyogY2xhc3NlcyBhcmUgbm90IHBhcnQgb2YgdGhlIEMrKyBzdGFuZGFyZC4gIFNUTHBv
cnQKKy8vIGRlZmluZXMgdGhlbSBpbiBuYW1lc3BhY2Ugc3RkLiAgTVNWQyBkZWZpbmVzIHRoZW0g
aW4gOjpzdGRleHQuICBHQ0MKKy8vIGRlZmluZXMgdGhlbSBpbiA6Oi4KKyNpZmRlZiBfU1RMUF9I
QVNIX01BUCAgLy8gV2UgZ290IDxoYXNoX21hcD4gZnJvbSBTVExwb3J0LgordXNpbmcgOjpzdGQ6
Omhhc2hfbWFwOwordXNpbmcgOjpzdGQ6Omhhc2hfc2V0OwordXNpbmcgOjpzdGQ6Omhhc2hfbXVs
dGltYXA7Cit1c2luZyA6OnN0ZDo6aGFzaF9tdWx0aXNldDsKKyNlbGlmIF9NU0NfVkVSCit1c2lu
ZyA6OnN0ZGV4dDo6aGFzaF9tYXA7Cit1c2luZyA6OnN0ZGV4dDo6aGFzaF9zZXQ7Cit1c2luZyA6
OnN0ZGV4dDo6aGFzaF9tdWx0aW1hcDsKK3VzaW5nIDo6c3RkZXh0OjpoYXNoX211bHRpc2V0Owor
I2VuZGlmCisKKy8vIFByaW50cyBhIHZhbHVlIHRvIGEgc3RyaW5nIHVzaW5nIHRoZSB1bml2ZXJz
YWwgdmFsdWUgcHJpbnRlci4gIFRoaXMKKy8vIGlzIGEgaGVscGVyIGZvciB0ZXN0aW5nIFVuaXZl
cnNhbFByaW50ZXI8VD46OlByaW50KCkgZm9yIHZhcmlvdXMgdHlwZXMuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3N0cmluZyBQcmludChjb25zdCBUJiB2YWx1ZSkgeworICA6OnN0ZDo6c3RyaW5n
c3RyZWFtIHNzOworICBVbml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCh2YWx1ZSwgJnNzKTsKKyAg
cmV0dXJuIHNzLnN0cigpOworfQorCisvLyBQcmludHMgYSB2YWx1ZSBwYXNzZWQgYnkgcmVmZXJl
bmNlIHRvIGEgc3RyaW5nLCB1c2luZyB0aGUgdW5pdmVyc2FsCisvLyB2YWx1ZSBwcmludGVyLiAg
VGhpcyBpcyBhIGhlbHBlciBmb3IgdGVzdGluZworLy8gVW5pdmVyc2FsUHJpbnRlcjxUJj46OlBy
aW50KCkgZm9yIHZhcmlvdXMgdHlwZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cmluZyBQ
cmludEJ5UmVmKGNvbnN0IFQmIHZhbHVlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7Cisg
IFVuaXZlcnNhbFByaW50ZXI8VCY+OjpQcmludCh2YWx1ZSwgJnNzKTsKKyAgcmV0dXJuIHNzLnN0
cigpOworfQorCisvLyBUZXN0cyBwcmludGluZyB2YXJpb3VzIGVudW0gdHlwZXMuCisKK1RFU1Qo
UHJpbnRFbnVtVGVzdCwgQW5vbnltb3VzRW51bSkgeworICBFWFBFQ1RfRVEoIi0xIiwgUHJpbnQo
a0FFMSkpOworICBFWFBFQ1RfRVEoIjEiLCBQcmludChrQUUyKSk7Cit9CisKK1RFU1QoUHJpbnRF
bnVtVGVzdCwgRW51bVdpdGhvdXRQcmludGVyKSB7CisgIEVYUEVDVF9FUSgiLTIiLCBQcmludChr
RVdQMSkpOworICBFWFBFQ1RfRVEoIjQyIiwgUHJpbnQoa0VXUDIpKTsKK30KKworVEVTVChQcmlu
dEVudW1UZXN0LCBFbnVtV2l0aFN0cmVhbWluZykgeworICBFWFBFQ1RfRVEoImtFV1MxIiwgUHJp
bnQoa0VXUzEpKTsKKyAgRVhQRUNUX0VRKCJpbnZhbGlkIiwgUHJpbnQoc3RhdGljX2Nhc3Q8RW51
bVdpdGhTdHJlYW1pbmc+KDApKSk7Cit9CisKK1RFU1QoUHJpbnRFbnVtVGVzdCwgRW51bVdpdGhQ
cmludFRvKSB7CisgIEVYUEVDVF9FUSgia0VXUFQxIiwgUHJpbnQoa0VXUFQxKSk7CisgIEVYUEVD
VF9FUSgiaW52YWxpZCIsIFByaW50KHN0YXRpY19jYXN0PEVudW1XaXRoUHJpbnRUbz4oMCkpKTsK
K30KKworLy8gVGVzdHMgcHJpbnRpbmcgYSBjbGFzcyBpbXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRv
IEJpZ2dlc3RJbnQuCisKK1RFU1QoUHJpbnRDbGFzc1Rlc3QsIEJpZ2dlc3RJbnRDb252ZXJ0aWJs
ZSkgeworICBFWFBFQ1RfRVEoIjQyIiwgUHJpbnQoQmlnZ2VzdEludENvbnZlcnRpYmxlKCkpKTsK
K30KKworLy8gVGVzdHMgcHJpbnRpbmcgdmFyaW91cyBjaGFyIHR5cGVzLgorCisvLyBjaGFyLgor
VEVTVChQcmludENoYXJUZXN0LCBQbGFpbkNoYXIpIHsKKyAgRVhQRUNUX0VRKCInXFwwJyIsIFBy
aW50KCdcMCcpKTsKKyAgRVhQRUNUX0VRKCInXFwnJyAoMzksIDB4MjcpIiwgUHJpbnQoJ1wnJykp
OworICBFWFBFQ1RfRVEoIidcIicgKDM0LCAweDIyKSIsIFByaW50KCciJykpOworICBFWFBFQ1Rf
RVEoIic/JyAoNjMsIDB4M0YpIiwgUHJpbnQoJz8nKSk7CisgIEVYUEVDVF9FUSgiJ1xcXFwnICg5
MiwgMHg1QykiLCBQcmludCgnXFwnKSk7CisgIEVYUEVDVF9FUSgiJ1xcYScgKDcpIiwgUHJpbnQo
J1xhJykpOworICBFWFBFQ1RfRVEoIidcXGInICg4KSIsIFByaW50KCdcYicpKTsKKyAgRVhQRUNU
X0VRKCInXFxmJyAoMTIsIDB4QykiLCBQcmludCgnXGYnKSk7CisgIEVYUEVDVF9FUSgiJ1xcbicg
KDEwLCAweEEpIiwgUHJpbnQoJ1xuJykpOworICBFWFBFQ1RfRVEoIidcXHInICgxMywgMHhEKSIs
IFByaW50KCdccicpKTsKKyAgRVhQRUNUX0VRKCInXFx0JyAoOSkiLCBQcmludCgnXHQnKSk7Cisg
IEVYUEVDVF9FUSgiJ1xcdicgKDExLCAweEIpIiwgUHJpbnQoJ1x2JykpOworICBFWFBFQ1RfRVEo
IidcXHg3RicgKDEyNykiLCBQcmludCgnXHg3RicpKTsKKyAgRVhQRUNUX0VRKCInXFx4RkYnICgy
NTUpIiwgUHJpbnQoJ1x4RkYnKSk7CisgIEVYUEVDVF9FUSgiJyAnICgzMiwgMHgyMCkiLCBQcmlu
dCgnICcpKTsKKyAgRVhQRUNUX0VRKCInYScgKDk3LCAweDYxKSIsIFByaW50KCdhJykpOworfQor
CisvLyBzaWduZWQgY2hhci4KK1RFU1QoUHJpbnRDaGFyVGVzdCwgU2lnbmVkQ2hhcikgeworICBF
WFBFQ1RfRVEoIidcXDAnIiwgUHJpbnQoc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+KCdcMCcpKSk7
CisgIEVYUEVDVF9FUSgiJ1xceENFJyAoLTUwKSIsCisgICAgICAgICAgICBQcmludChzdGF0aWNf
Y2FzdDxzaWduZWQgY2hhcj4oLTUwKSkpOworfQorCisvLyB1bnNpZ25lZCBjaGFyLgorVEVTVChQ
cmludENoYXJUZXN0LCBVbnNpZ25lZENoYXIpIHsKKyAgRVhQRUNUX0VRKCInXFwwJyIsIFByaW50
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCdcMCcpKSk7CisgIEVYUEVDVF9FUSgiJ2InICg5
OCwgMHg2MikiLAorICAgICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
J2InKSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyBvdGhlciBzaW1wbGUsIGJ1aWx0LWluIHR5
cGVzLgorCisvLyBib29sLgorVEVTVChQcmludEJ1aWx0SW5UeXBlVGVzdCwgQm9vbCkgeworICBF
WFBFQ1RfRVEoImZhbHNlIiwgUHJpbnQoZmFsc2UpKTsKKyAgRVhQRUNUX0VRKCJ0cnVlIiwgUHJp
bnQodHJ1ZSkpOworfQorCisvLyB3Y2hhcl90LgorVEVTVChQcmludEJ1aWx0SW5UeXBlVGVzdCwg
V2NoYXJfdCkgeworICBFWFBFQ1RfRVEoIkwnXFwwJyIsIFByaW50KEwnXDAnKSk7CisgIEVYUEVD
VF9FUSgiTCdcXCcnICgzOSwgMHgyNykiLCBQcmludChMJ1wnJykpOworICBFWFBFQ1RfRVEoIkwn
XCInICgzNCwgMHgyMikiLCBQcmludChMJyInKSk7CisgIEVYUEVDVF9FUSgiTCc/JyAoNjMsIDB4
M0YpIiwgUHJpbnQoTCc/JykpOworICBFWFBFQ1RfRVEoIkwnXFxcXCcgKDkyLCAweDVDKSIsIFBy
aW50KEwnXFwnKSk7CisgIEVYUEVDVF9FUSgiTCdcXGEnICg3KSIsIFByaW50KEwnXGEnKSk7Cisg
IEVYUEVDVF9FUSgiTCdcXGInICg4KSIsIFByaW50KEwnXGInKSk7CisgIEVYUEVDVF9FUSgiTCdc
XGYnICgxMiwgMHhDKSIsIFByaW50KEwnXGYnKSk7CisgIEVYUEVDVF9FUSgiTCdcXG4nICgxMCwg
MHhBKSIsIFByaW50KEwnXG4nKSk7CisgIEVYUEVDVF9FUSgiTCdcXHInICgxMywgMHhEKSIsIFBy
aW50KEwnXHInKSk7CisgIEVYUEVDVF9FUSgiTCdcXHQnICg5KSIsIFByaW50KEwnXHQnKSk7Cisg
IEVYUEVDVF9FUSgiTCdcXHYnICgxMSwgMHhCKSIsIFByaW50KEwnXHYnKSk7CisgIEVYUEVDVF9F
USgiTCdcXHg3RicgKDEyNykiLCBQcmludChMJ1x4N0YnKSk7CisgIEVYUEVDVF9FUSgiTCdcXHhG
RicgKDI1NSkiLCBQcmludChMJ1x4RkYnKSk7CisgIEVYUEVDVF9FUSgiTCcgJyAoMzIsIDB4MjAp
IiwgUHJpbnQoTCcgJykpOworICBFWFBFQ1RfRVEoIkwnYScgKDk3LCAweDYxKSIsIFByaW50KEwn
YScpKTsKKyAgRVhQRUNUX0VRKCJMJ1xceDU3NicgKDEzOTgpIiwgUHJpbnQoc3RhdGljX2Nhc3Q8
d2NoYXJfdD4oMHg1NzYpKSk7CisgIEVYUEVDVF9FUSgiTCdcXHhDNzREJyAoNTEwMjEpIiwgUHJp
bnQoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHhDNzREKSkpOworfQorCisvLyBUZXN0IHRoYXQgSW50
NjQgcHJvdmlkZXMgbW9yZSBzdG9yYWdlIHRoYW4gd2NoYXJfdC4KK1RFU1QoUHJpbnRUeXBlU2l6
ZVRlc3QsIFdjaGFyX3QpIHsKKyAgRVhQRUNUX0xUKHNpemVvZih3Y2hhcl90KSwgc2l6ZW9mKHRl
c3Rpbmc6OmludGVybmFsOjpJbnQ2NCkpOworfQorCisvLyBWYXJpb3VzIGludGVnZXIgdHlwZXMu
CitURVNUKFByaW50QnVpbHRJblR5cGVUZXN0LCBJbnRlZ2VyKSB7CisgIEVYUEVDVF9FUSgiJ1xc
eEZGJyAoMjU1KSIsIFByaW50KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSkpKTsgIC8v
IHVpbnQ4CisgIEVYUEVDVF9FUSgiJ1xceDgwJyAoLTEyOCkiLCBQcmludChzdGF0aWNfY2FzdDxz
aWduZWQgY2hhcj4oLTEyOCkpKTsgIC8vIGludDgKKyAgRVhQRUNUX0VRKCI2NTUzNSIsIFByaW50
KFVTSFJUX01BWCkpOyAgLy8gdWludDE2CisgIEVYUEVDVF9FUSgiLTMyNzY4IiwgUHJpbnQoU0hS
VF9NSU4pKTsgIC8vIGludDE2CisgIEVYUEVDVF9FUSgiNDI5NDk2NzI5NSIsIFByaW50KFVJTlRf
TUFYKSk7ICAvLyB1aW50MzIKKyAgRVhQRUNUX0VRKCItMjE0NzQ4MzY0OCIsIFByaW50KElOVF9N
SU4pKTsgIC8vIGludDMyCisgIEVYUEVDVF9FUSgiMTg0NDY3NDQwNzM3MDk1NTE2MTUiLAorICAg
ICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8dGVzdGluZzo6aW50ZXJuYWw6OlVJbnQ2ND4oLTEp
KSk7ICAvLyB1aW50NjQKKyAgRVhQRUNUX0VRKCItOTIyMzM3MjAzNjg1NDc3NTgwOCIsCisgICAg
ICAgICAgICBQcmludChzdGF0aWNfY2FzdDx0ZXN0aW5nOjppbnRlcm5hbDo6SW50NjQ+KDEpIDw8
IDYzKSk7ICAvLyBpbnQ2NAorfQorCisvLyBTaXplIHR5cGVzLgorVEVTVChQcmludEJ1aWx0SW5U
eXBlVGVzdCwgU2l6ZV90KSB7CisgIEVYUEVDVF9FUSgiMSIsIFByaW50KHNpemVvZignYScpKSk7
ICAvLyBzaXplX3QuCisjaWYgIUdURVNUX09TX1dJTkRPV1MKKyAgLy8gV2luZG93cyBoYXMgbm8g
c3NpemVfdCB0eXBlLgorICBFWFBFQ1RfRVEoIi0yIiwgUHJpbnQoc3RhdGljX2Nhc3Q8c3NpemVf
dD4oLTIpKSk7ICAvLyBzc2l6ZV90LgorI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUworfQor
CisvLyBGbG9hdGluZy1wb2ludHMuCitURVNUKFByaW50QnVpbHRJblR5cGVUZXN0LCBGbG9hdGlu
Z1BvaW50cykgeworICBFWFBFQ1RfRVEoIjEuNSIsIFByaW50KDEuNWYpKTsgICAvLyBmbG9hdAor
ICBFWFBFQ1RfRVEoIi0yLjUiLCBQcmludCgtMi41KSk7ICAvLyBkb3VibGUKK30KKworLy8gU2lu
Y2UgOjpzdGQ6OnN0cmluZ3N0cmVhbTo6b3BlcmF0b3I8PChjb25zdCB2b2lkICopIGZvcm1hdHMg
dGhlIHBvaW50ZXIKKy8vIG91dHB1dCBkaWZmZXJlbnRseSB3aXRoIGRpZmZlcmVudCBjb21waWxl
cnMsIHdlIGhhdmUgdG8gY3JlYXRlIHRoZSBleHBlY3RlZAorLy8gb3V0cHV0IGZpcnN0IGFuZCB1
c2UgaXQgYXMgb3VyIGV4cGVjdGF0aW9uLgorc3RhdGljIHN0cmluZyBQcmludFBvaW50ZXIoY29u
c3Qgdm9pZCAqcCkgeworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIGV4cGVjdGVkX3Jlc3VsdF9zdHJl
YW07CisgIGV4cGVjdGVkX3Jlc3VsdF9zdHJlYW0gPDwgcDsKKyAgcmV0dXJuIGV4cGVjdGVkX3Jl
c3VsdF9zdHJlYW0uc3RyKCk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIEMgc3RyaW5ncy4KKwor
Ly8gY29uc3QgY2hhciouCitURVNUKFByaW50Q1N0cmluZ1Rlc3QsIENvbnN0KSB7CisgIGNvbnN0
IGNoYXIqIHAgPSAiV29ybGQiOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApICsgIiBwb2lu
dGluZyB0byBcIldvcmxkXCIiLCBQcmludChwKSk7Cit9CisKKy8vIGNoYXIqLgorVEVTVChQcmlu
dENTdHJpbmdUZXN0LCBOb25Db25zdCkgeworICBjaGFyIHBbXSA9ICJIaSI7CisgIEVYUEVDVF9F
UShQcmludFBvaW50ZXIocCkgKyAiIHBvaW50aW5nIHRvIFwiSGlcIiIsCisgICAgICAgICAgICBQ
cmludChzdGF0aWNfY2FzdDxjaGFyKj4ocCkpKTsKK30KKworLy8gTlVMTCBDIHN0cmluZy4KK1RF
U1QoUHJpbnRDU3RyaW5nVGVzdCwgTnVsbCkgeworICBjb25zdCBjaGFyKiBwID0gTlVMTDsKKyAg
RVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBUZXN0cyB0aGF0IEMgc3RyaW5n
cyBhcmUgZXNjYXBlZCBwcm9wZXJseS4KK1RFU1QoUHJpbnRDU3RyaW5nVGVzdCwgRXNjYXBlc1By
b3Blcmx5KSB7CisgIGNvbnN0IGNoYXIqIHAgPSAiJ1wiP1xcXGFcYlxmXG5cclx0XHZceDdGXHhG
RiBhIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSArICIgcG9pbnRpbmcgdG8gXCInXFxc
Ij9cXFxcXFxhXFxiXFxmIgorICAgICAgICAgICAgIlxcblxcclxcdFxcdlxceDdGXFx4RkYgYVwi
IiwKKyAgICAgICAgICAgIFByaW50KHApKTsKK30KKworLy8gTVNWQyBjb21waWxlciBjYW4gYmUg
Y29uZmlndXJlZCB0byBkZWZpbmUgd2hhcl90IGFzIGEgdHlwZWRlZgorLy8gb2YgdW5zaWduZWQg
c2hvcnQuIERlZmluaW5nIGFuIG92ZXJsb2FkIGZvciBjb25zdCB3Y2hhcl90KiBpbiB0aGF0IGNh
c2UKKy8vIHdvdWxkIGNhdXNlIHBvaW50ZXJzIHRvIHVuc2lnbmVkIHNob3J0cyBiZSBwcmludGVk
IGFzIHdpZGUgc3RyaW5ncywKKy8vIHBvc3NpYmx5IGFjY2Vzc2luZyBtb3JlIG1lbW9yeSB0aGFu
IGludGVuZGVkIGFuZCBjYXVzaW5nIGludmFsaWQKKy8vIG1lbW9yeSBhY2Nlc3Nlcy4gTVNWQyBk
ZWZpbmVzIF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEIHN5bWJvbCB3aGVuCisvLyB3Y2hhcl90IGlz
IGltcGxlbWVudGVkIGFzIGEgbmF0aXZlIHR5cGUuCisjaWYgIWRlZmluZWQoX01TQ19WRVIpIHx8
IGRlZmluZWQoX05BVElWRV9XQ0hBUl9UX0RFRklORUQpCisKKy8vIGNvbnN0IHdjaGFyX3QqLgor
VEVTVChQcmludFdpZGVDU3RyaW5nVGVzdCwgQ29uc3QpIHsKKyAgY29uc3Qgd2NoYXJfdCogcCA9
IEwiV29ybGQiOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApICsgIiBwb2ludGluZyB0byBM
XCJXb3JsZFwiIiwgUHJpbnQocCkpOworfQorCisvLyB3Y2hhcl90Ki4KK1RFU1QoUHJpbnRXaWRl
Q1N0cmluZ1Rlc3QsIE5vbkNvbnN0KSB7CisgIHdjaGFyX3QgcFtdID0gTCJIaSI7CisgIEVYUEVD
VF9FUShQcmludFBvaW50ZXIocCkgKyAiIHBvaW50aW5nIHRvIExcIkhpXCIiLAorICAgICAgICAg
ICAgUHJpbnQoc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KHApKSk7Cit9CisKKy8vIE5VTEwgd2lkZSBD
IHN0cmluZy4KK1RFU1QoUHJpbnRXaWRlQ1N0cmluZ1Rlc3QsIE51bGwpIHsKKyAgY29uc3Qgd2No
YXJfdCogcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8g
VGVzdHMgdGhhdCB3aWRlIEMgc3RyaW5ncyBhcmUgZXNjYXBlZCBwcm9wZXJseS4KK1RFU1QoUHJp
bnRXaWRlQ1N0cmluZ1Rlc3QsIEVzY2FwZXNQcm9wZXJseSkgeworICBjb25zdCB3Y2hhcl90IHNb
XSA9IHsnXCcnLCAnIicsICc/JywgJ1xcJywgJ1xhJywgJ1xiJywgJ1xmJywgJ1xuJywgJ1xyJywK
KyAgICAgICAgICAgICAgICAgICAgICAgJ1x0JywgJ1x2JywgMHhEMywgMHg1NzYsIDB4OEQzLCAw
eEM3NEQsICcgJywgJ2EnLCAnXDAnfTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihzKSArICIg
cG9pbnRpbmcgdG8gTFwiJ1xcXCI/XFxcXFxcYVxcYlxcZiIKKyAgICAgICAgICAgICJcXG5cXHJc
XHRcXHZcXHhEM1xceDU3NlxceDhEM1xceEM3NEQgYVwiIiwKKyAgICAgICAgICAgIFByaW50KHN0
YXRpY19jYXN0PGNvbnN0IHdjaGFyX3QqPihzKSkpOworfQorI2VuZGlmICAvLyBuYXRpdmUgd2No
YXJfdAorCisvLyBUZXN0cyBwcmludGluZyBwb2ludGVycyB0byBvdGhlciBjaGFyIHR5cGVzLgor
CisvLyBzaWduZWQgY2hhciouCitURVNUKFByaW50Q2hhclBvaW50ZXJUZXN0LCBTaWduZWRDaGFy
KSB7CisgIHNpZ25lZCBjaGFyKiBwID0gcmVpbnRlcnByZXRfY2FzdDxzaWduZWQgY2hhcio+KDB4
MTIzNCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5V
TEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gY29uc3Qgc2lnbmVk
IGNoYXIqLgorVEVTVChQcmludENoYXJQb2ludGVyVGVzdCwgQ29uc3RTaWduZWRDaGFyKSB7Cisg
IHNpZ25lZCBjaGFyKiBwID0gcmVpbnRlcnByZXRfY2FzdDxzaWduZWQgY2hhcio+KDB4MTIzNCk7
CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5VTEw7Cisg
IEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gdW5zaWduZWQgY2hhciouCitU
RVNUKFByaW50Q2hhclBvaW50ZXJUZXN0LCBVbnNpZ25lZENoYXIpIHsKKyAgdW5zaWduZWQgY2hh
ciogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KDB4MTIzNCk7CisgIEVYUEVD
VF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9F
USgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gY29uc3QgdW5zaWduZWQgY2hhciouCitURVNU
KFByaW50Q2hhclBvaW50ZXJUZXN0LCBDb25zdFVuc2lnbmVkQ2hhcikgeworICBjb25zdCB1bnNp
Z25lZCBjaGFyKiBwID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oMHgx
MjM0KTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0gTlVM
TDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBUZXN0cyBwcmludGlu
ZyBwb2ludGVycyB0byBzaW1wbGUsIGJ1aWx0LWluIHR5cGVzLgorCisvLyBib29sKi4KK1RFU1Qo
UHJpbnRQb2ludGVyVG9CdWlsdEluVHlwZVRlc3QsIEJvb2wpIHsKKyAgYm9vbCogcCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Ym9vbCo+KDB4QUJDRCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCks
IFByaW50KHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsK
K30KKworLy8gdm9pZCouCitURVNUKFByaW50UG9pbnRlclRvQnVpbHRJblR5cGVUZXN0LCBWb2lk
KSB7CisgIHZvaWQqIHAgPSByZWludGVycHJldF9jYXN0PHZvaWQqPigweEFCQ0QpOworICBFWFBF
Q1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7CisgIHAgPSBOVUxMOworICBFWFBFQ1Rf
RVEoIk5VTEwiLCBQcmludChwKSk7Cit9CisKKy8vIGNvbnN0IHZvaWQqLgorVEVTVChQcmludFBv
aW50ZXJUb0J1aWx0SW5UeXBlVGVzdCwgQ29uc3RWb2lkKSB7CisgIGNvbnN0IHZvaWQqIHAgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigweEFCQ0QpOworICBFWFBFQ1RfRVEoUHJpbnRQ
b2ludGVyKHApLCBQcmludChwKSk7CisgIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQ
cmludChwKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIHBvaW50ZXJzIHRvIHBvaW50ZXJzLgor
VEVTVChQcmludFBvaW50ZXJUb1BvaW50ZXJUZXN0LCBJbnRQb2ludGVyUG9pbnRlcikgeworICBp
bnQqKiBwID0gcmVpbnRlcnByZXRfY2FzdDxpbnQqKj4oMHhBQkNEKTsKKyAgRVhQRUNUX0VRKFBy
aW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxM
IiwgUHJpbnQocCkpOworfQorCisvLyBUZXN0cyBwcmludGluZyAobm9uLW1lbWJlcikgZnVuY3Rp
b24gcG9pbnRlcnMuCisKK3ZvaWQgTXlGdW5jdGlvbihpbnQgLyogbiAqLykge30KKworVEVTVChQ
cmludFBvaW50ZXJUZXN0LCBOb25NZW1iZXJGdW5jdGlvblBvaW50ZXIpIHsKKyAgLy8gV2UgY2Fu
bm90IGRpcmVjdGx5IGNhc3QgJk15RnVuY3Rpb24gdG8gY29uc3Qgdm9pZCogYmVjYXVzZSB0aGUK
KyAgLy8gc3RhbmRhcmQgZGlzYWxsb3dzIGNhc3RpbmcgYmV0d2VlbiBwb2ludGVycyB0byBmdW5j
dGlvbnMgYW5kCisgIC8vIHBvaW50ZXJzIHRvIG9iamVjdHMsIGFuZCBzb21lIGNvbXBpbGVycyAo
ZS5nLiBHQ0MgMy40KSBlbmZvcmNlCisgIC8vIHRoaXMgbGltaXRhdGlvbi4KKyAgRVhQRUNUX0VR
KAorICAgICAgUHJpbnRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KAorICAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8aW50ZXJuYWw6OkJpZ2dlc3RJbnQ+KCZNeUZ1bmN0aW9u
KSkpLAorICAgICAgUHJpbnQoJk15RnVuY3Rpb24pKTsKKyAgaW50ICgqcCkoYm9vbCkgPSBOVUxM
OyAgLy8gTk9MSU5UCisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gQW4g
YXNzZXJ0aW9uIHByZWRpY2F0ZSBkZXRlcm1pbmluZyB3aGV0aGVyIGEgb25lIHN0cmluZyBpcyBh
IHByZWZpeCBmb3IKKy8vIGFub3RoZXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyaW5nVHlwZT4K
K0Fzc2VydGlvblJlc3VsdCBIYXNQcmVmaXgoY29uc3QgU3RyaW5nVHlwZSYgc3RyLCBjb25zdCBT
dHJpbmdUeXBlJiBwcmVmaXgpIHsKKyAgaWYgKHN0ci5maW5kKHByZWZpeCwgMCkgPT0gMCkKKyAg
ICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOworCisgIGNvbnN0IGJvb2wgaXNfd2lkZV9zdHJp
bmcgPSBzaXplb2YocHJlZml4WzBdKSA+IDE7CisgIGNvbnN0IGNoYXIqIGNvbnN0IGJlZ2luX3N0
cmluZ19xdW90ZSA9IGlzX3dpZGVfc3RyaW5nID8gIkxcIiIgOiAiXCIiOworICByZXR1cm4gQXNz
ZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBiZWdpbl9zdHJpbmdfcXVvdGUgPDwgcHJlZml4IDw8
ICJcIiBpcyBub3QgYSBwcmVmaXggb2YgIgorICAgICAgPDwgYmVnaW5fc3RyaW5nX3F1b3RlIDw8
IHN0ciA8PCAiXCJcbiI7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIG1lbWJlciB2YXJpYWJsZSBw
b2ludGVycy4gIEFsdGhvdWdoIHRoZXkgYXJlIGNhbGxlZAorLy8gcG9pbnRlcnMsIHRoZXkgZG9u
J3QgcG9pbnQgdG8gYSBsb2NhdGlvbiBpbiB0aGUgYWRkcmVzcyBzcGFjZS4KKy8vIFRoZWlyIHJl
cHJlc2VudGF0aW9uIGlzIGltcGxlbWVudGF0aW9uLWRlZmluZWQuICBUaHVzIHRoZXkgd2lsbCBi
ZQorLy8gcHJpbnRlZCBhcyByYXcgYnl0ZXMuCisKK3N0cnVjdCBGb28geworIHB1YmxpYzoKKyAg
dmlydHVhbCB+Rm9vKCkge30KKyAgaW50IE15TWV0aG9kKGNoYXIgeCkgeyByZXR1cm4geCArIDE7
IH0KKyAgdmlydHVhbCBjaGFyIE15VmlydHVhbE1ldGhvZChpbnQgLyogbiAqLykgeyByZXR1cm4g
J2EnOyB9CisKKyAgaW50IHZhbHVlOworfTsKKworVEVTVChQcmludFBvaW50ZXJUZXN0LCBNZW1i
ZXJWYXJpYWJsZVBvaW50ZXIpIHsKKyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KFByaW50KCZGb286
OnZhbHVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFByaW50KHNpemVvZigmRm9vOjp2YWx1
ZSkpICsgIi1ieXRlIG9iamVjdCAiKSk7CisgIGludCAoRm9vOjoqcCkgPSBOVUxMOyAgLy8gTk9M
SU5UCisgIEVYUEVDVF9UUlVFKEhhc1ByZWZpeChQcmludChwKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFByaW50KHNpemVvZihwKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKK30KKworLy8gVGVz
dHMgcHJpbnRpbmcgbWVtYmVyIGZ1bmN0aW9uIHBvaW50ZXJzLiAgQWx0aG91Z2ggdGhleSBhcmUg
Y2FsbGVkCisvLyBwb2ludGVycywgdGhleSBkb24ndCBwb2ludCB0byBhIGxvY2F0aW9uIGluIHRo
ZSBhZGRyZXNzIHNwYWNlLgorLy8gVGhlaXIgcmVwcmVzZW50YXRpb24gaXMgaW1wbGVtZW50YXRp
b24tZGVmaW5lZC4gIFRodXMgdGhleSB3aWxsIGJlCisvLyBwcmludGVkIGFzIHJhdyBieXRlcy4K
K1RFU1QoUHJpbnRQb2ludGVyVGVzdCwgTWVtYmVyRnVuY3Rpb25Qb2ludGVyKSB7CisgIEVYUEVD
VF9UUlVFKEhhc1ByZWZpeChQcmludCgmRm9vOjpNeU1ldGhvZCksCisgICAgICAgICAgICAgICAg
ICAgICAgICBQcmludChzaXplb2YoJkZvbzo6TXlNZXRob2QpKSArICItYnl0ZSBvYmplY3QgIikp
OworICBFWFBFQ1RfVFJVRSgKKyAgICAgIEhhc1ByZWZpeChQcmludCgmRm9vOjpNeVZpcnR1YWxN
ZXRob2QpLAorICAgICAgICAgICAgICAgIFByaW50KHNpemVvZigoJkZvbzo6TXlWaXJ0dWFsTWV0
aG9kKSkpICsgIi1ieXRlIG9iamVjdCAiKSk7CisgIGludCAoRm9vOjoqcCkoY2hhcikgPSBOVUxM
OyAgLy8gTk9MSU5UCisgIEVYUEVDVF9UUlVFKEhhc1ByZWZpeChQcmludChwKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFByaW50KHNpemVvZihwKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKK30K
KworLy8gVGVzdHMgcHJpbnRpbmcgQyBhcnJheXMuCisKKy8vIFRoZSBkaWZmZXJlbmNlIGJldHdl
ZW4gdGhpcyBhbmQgUHJpbnQoKSBpcyB0aGF0IGl0IGVuc3VyZXMgdGhhdCB0aGUKKy8vIGFyZ3Vt
ZW50IGlzIGEgcmVmZXJlbmNlIHRvIGFuIGFycmF5LgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNp
emVfdCBOPgorc3RyaW5nIFByaW50QXJyYXlIZWxwZXIoVCAoJmEpW05dKSB7CisgIHJldHVybiBQ
cmludChhKTsKK30KKworLy8gT25lLWRpbWVuc2lvbmFsIGFycmF5LgorVEVTVChQcmludEFycmF5
VGVzdCwgT25lRGltZW5zaW9uYWxBcnJheSkgeworICBpbnQgYVs1XSA9IHsgMSwgMiwgMywgNCwg
NSB9OworICBFWFBFQ1RfRVEoInsgMSwgMiwgMywgNCwgNSB9IiwgUHJpbnRBcnJheUhlbHBlcihh
KSk7Cit9CisKKy8vIFR3by1kaW1lbnNpb25hbCBhcnJheS4KK1RFU1QoUHJpbnRBcnJheVRlc3Qs
IFR3b0RpbWVuc2lvbmFsQXJyYXkpIHsKKyAgaW50IGFbMl1bNV0gPSB7CisgICAgeyAxLCAyLCAz
LCA0LCA1IH0sCisgICAgeyA2LCA3LCA4LCA5LCAwIH0KKyAgfTsKKyAgRVhQRUNUX0VRKCJ7IHsg
MSwgMiwgMywgNCwgNSB9LCB7IDYsIDcsIDgsIDksIDAgfSB9IiwgUHJpbnRBcnJheUhlbHBlcihh
KSk7Cit9CisKKy8vIEFycmF5IG9mIGNvbnN0IGVsZW1lbnRzLgorVEVTVChQcmludEFycmF5VGVz
dCwgQ29uc3RBcnJheSkgeworICBjb25zdCBib29sIGFbMV0gPSB7IGZhbHNlIH07CisgIEVYUEVD
VF9FUSgieyBmYWxzZSB9IiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIGNoYXIgYXJy
YXkgd2l0aG91dCB0ZXJtaW5hdGluZyBOVUwuCitURVNUKFByaW50QXJyYXlUZXN0LCBDaGFyQXJy
YXlXaXRoTm9UZXJtaW5hdGluZ051bCkgeworICAvLyBBcnJheSBhIGNvbnRhaW5zICdcMCcgaW4g
dGhlIG1pZGRsZSBhbmQgZG9lc24ndCBlbmQgd2l0aCAnXDAnLgorICBjaGFyIGFbXSA9IHsgJ0gn
LCAnXDAnLCAnaScgfTsKKyAgRVhQRUNUX0VRKCJcIkhcXDBpXCIgKG5vIHRlcm1pbmF0aW5nIE5V
TCkiLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8gY29uc3QgY2hhciBhcnJheSB3aXRo
IHRlcm1pbmF0aW5nIE5VTC4KK1RFU1QoUHJpbnRBcnJheVRlc3QsIENvbnN0Q2hhckFycmF5V2l0
aFRlcm1pbmF0aW5nTnVsKSB7CisgIGNvbnN0IGNoYXIgYVtdID0gIlwwSGkiOworICBFWFBFQ1Rf
RVEoIlwiXFwwSGlcIiIsIFByaW50QXJyYXlIZWxwZXIoYSkpOworfQorCisvLyBjb25zdCB3Y2hh
cl90IGFycmF5IHdpdGhvdXQgdGVybWluYXRpbmcgTlVMLgorVEVTVChQcmludEFycmF5VGVzdCwg
V0NoYXJBcnJheVdpdGhOb1Rlcm1pbmF0aW5nTnVsKSB7CisgIC8vIEFycmF5IGEgY29udGFpbnMg
J1wwJyBpbiB0aGUgbWlkZGxlIGFuZCBkb2Vzbid0IGVuZCB3aXRoICdcMCcuCisgIGNvbnN0IHdj
aGFyX3QgYVtdID0geyBMJ0gnLCBMJ1wwJywgTCdpJyB9OworICBFWFBFQ1RfRVEoIkxcIkhcXDBp
XCIgKG5vIHRlcm1pbmF0aW5nIE5VTCkiLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8g
d2NoYXJfdCBhcnJheSB3aXRoIHRlcm1pbmF0aW5nIE5VTC4KK1RFU1QoUHJpbnRBcnJheVRlc3Qs
IFdDb25zdENoYXJBcnJheVdpdGhUZXJtaW5hdGluZ051bCkgeworICBjb25zdCB3Y2hhcl90IGFb
XSA9IEwiXDBIaSI7CisgIEVYUEVDVF9FUSgiTFwiXFwwSGlcIiIsIFByaW50QXJyYXlIZWxwZXIo
YSkpOworfQorCisvLyBBcnJheSBvZiBvYmplY3RzLgorVEVTVChQcmludEFycmF5VGVzdCwgT2Jq
ZWN0QXJyYXkpIHsKKyAgc3RyaW5nIGFbM10gPSB7ICJIaSIsICJIZWxsbyIsICJOaSBoYW8iIH07
CisgIEVYUEVDVF9FUSgieyBcIkhpXCIsIFwiSGVsbG9cIiwgXCJOaSBoYW9cIiB9IiwgUHJpbnRB
cnJheUhlbHBlcihhKSk7Cit9CisKKy8vIEFycmF5IHdpdGggbWFueSBlbGVtZW50cy4KK1RFU1Qo
UHJpbnRBcnJheVRlc3QsIEJpZ0FycmF5KSB7CisgIGludCBhWzEwMF0gPSB7IDEsIDIsIDMgfTsK
KyAgRVhQRUNUX0VRKCJ7IDEsIDIsIDMsIDAsIDAsIDAsIDAsIDAsIC4uLiwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCB9IiwKKyAgICAgICAgICAgIFByaW50QXJyYXlIZWxwZXIoYSkpOworfQorCisv
LyBUZXN0cyBwcmludGluZyA6OnN0cmluZyBhbmQgOjpzdGQ6OnN0cmluZy4KKworI2lmIEdURVNU
X0hBU19HTE9CQUxfU1RSSU5HCisvLyA6OnN0cmluZy4KK1RFU1QoUHJpbnRTdHJpbmdUZXN0LCBT
dHJpbmdJbkdsb2JhbE5hbWVzcGFjZSkgeworICBjb25zdCBjaGFyIHNbXSA9ICInXCI/XFxcYVxi
XGZcblwwXHJcdFx2XHg3Rlx4RkYgYSI7CisgIGNvbnN0IDo6c3RyaW5nIHN0cihzLCBzaXplb2Yo
cykpOworICBFWFBFQ1RfRVEoIlwiJ1xcXCI/XFxcXFxcYVxcYlxcZlxcblxcMFxcclxcdFxcdlxc
eDdGXFx4RkYgYVxcMFwiIiwKKyAgICAgICAgICAgIFByaW50KHN0cikpOworfQorI2VuZGlmICAv
LyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCisvLyA6OnN0ZDo6c3RyaW5nLgorVEVTVChQcmlu
dFN0cmluZ1Rlc3QsIFN0cmluZ0luU3RkTmFtZXNwYWNlKSB7CisgIGNvbnN0IGNoYXIgc1tdID0g
IidcIj9cXFxhXGJcZlxuXDBcclx0XHZceDdGXHhGRiBhIjsKKyAgY29uc3QgOjpzdGQ6OnN0cmlu
ZyBzdHIocywgc2l6ZW9mKHMpKTsKKyAgRVhQRUNUX0VRKCJcIidcXFwiP1xcXFxcXGFcXGJcXGZc
XG5cXDBcXHJcXHRcXHZcXHg3RlxceEZGIGFcXDBcIiIsCisgICAgICAgICAgICBQcmludChzdHIp
KTsKK30KKworVEVTVChQcmludFN0cmluZ1Rlc3QsIFN0cmluZ0FtYmlndW91c0hleCkgeworICAv
LyAiXHg2QkFOQU5BIiBpcyBhbWJpZ3VvdXMsIGl0IGNhbiBiZSBpbnRlcnByZXRlZCBhcyBzdGFy
dGluZyB3aXRoIGVpdGhlciBvZjoKKyAgLy8gJ1x4NicsICdceDZCJywgb3IgJ1x4NkJBJy4KKwor
ICAvLyBhIGhleCBlc2NhcGluZyBzZXF1ZW5jZSBmb2xsb3dpbmcgYnkgYSBkZWNpbWFsIGRpZ2l0
CisgIEVYUEVDVF9FUSgiXCIwXFx4MTJcIiBcIjNcIiIsIFByaW50KDo6c3RkOjpzdHJpbmcoIjBc
eDEyIiAiMyIpKSk7CisgIC8vIGEgaGV4IGVzY2FwaW5nIHNlcXVlbmNlIGZvbGxvd2luZyBieSBh
IGhleCBkaWdpdCAobG93ZXItY2FzZSkKKyAgRVhQRUNUX0VRKCJcIm1tXFx4NlwiIFwiYmFuYW5h
c1wiIiwgUHJpbnQoOjpzdGQ6OnN0cmluZygibW1ceDYiICJiYW5hbmFzIikpKTsKKyAgLy8gYSBo
ZXggZXNjYXBpbmcgc2VxdWVuY2UgZm9sbG93aW5nIGJ5IGEgaGV4IGRpZ2l0ICh1cHBlci1jYXNl
KQorICBFWFBFQ1RfRVEoIlwiTk9NXFx4NlwiIFwiQkFOQU5BXCIiLCBQcmludCg6OnN0ZDo6c3Ry
aW5nKCJOT01ceDYiICJCQU5BTkEiKSkpOworICAvLyBhIGhleCBlc2NhcGluZyBzZXF1ZW5jZSBm
b2xsb3dpbmcgYnkgYSBub24teGRpZ2l0CisgIEVYUEVDVF9FUSgiXCIhXFx4NS0hXCIiLCBQcmlu
dCg6OnN0ZDo6c3RyaW5nKCIhXHg1LSEiKSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyA6Ondz
dHJpbmcgYW5kIDo6c3RkOjp3c3RyaW5nLgorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5H
CisvLyA6OndzdHJpbmcuCitURVNUKFByaW50V2lkZVN0cmluZ1Rlc3QsIFN0cmluZ0luR2xvYmFs
TmFtZXNwYWNlKSB7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0gTCInXCI/XFxcYVxiXGZcblwwXHJc
dFx2XHhEM1x4NTc2XHg4RDNceEM3NEQgYSI7CisgIGNvbnN0IDo6d3N0cmluZyBzdHIocywgc2l6
ZW9mKHMpL3NpemVvZih3Y2hhcl90KSk7CisgIEVYUEVDVF9FUSgiTFwiJ1xcXCI/XFxcXFxcYVxc
YlxcZlxcblxcMFxcclxcdFxcdiIKKyAgICAgICAgICAgICJcXHhEM1xceDU3NlxceDhEM1xceEM3
NEQgYVxcMFwiIiwKKyAgICAgICAgICAgIFByaW50KHN0cikpOworfQorI2VuZGlmICAvLyBHVEVT
VF9IQVNfR0xPQkFMX1dTVFJJTkcKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORworLy8gOjpz
dGQ6OndzdHJpbmcuCitURVNUKFByaW50V2lkZVN0cmluZ1Rlc3QsIFN0cmluZ0luU3RkTmFtZXNw
YWNlKSB7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0gTCInXCI/XFxcYVxiXGZcblwwXHJcdFx2XHhE
M1x4NTc2XHg4RDNceEM3NEQgYSI7CisgIGNvbnN0IDo6c3RkOjp3c3RyaW5nIHN0cihzLCBzaXpl
b2Yocykvc2l6ZW9mKHdjaGFyX3QpKTsKKyAgRVhQRUNUX0VRKCJMXCInXFxcIj9cXFxcXFxhXFxi
XFxmXFxuXFwwXFxyXFx0XFx2IgorICAgICAgICAgICAgIlxceEQzXFx4NTc2XFx4OEQzXFx4Qzc0
RCBhXFwwXCIiLAorICAgICAgICAgICAgUHJpbnQoc3RyKSk7Cit9CisKK1RFU1QoUHJpbnRXaWRl
U3RyaW5nVGVzdCwgU3RyaW5nQW1iaWd1b3VzSGV4KSB7CisgIC8vIHNhbWUgZm9yIHdpZGUgc3Ry
aW5ncy4KKyAgRVhQRUNUX0VRKCJMXCIwXFx4MTJcIiBMXCIzXCIiLCBQcmludCg6OnN0ZDo6d3N0
cmluZyhMIjBceDEyIiBMIjMiKSkpOworICBFWFBFQ1RfRVEoIkxcIm1tXFx4NlwiIExcImJhbmFu
YXNcIiIsCisgICAgICAgICAgICBQcmludCg6OnN0ZDo6d3N0cmluZyhMIm1tXHg2IiBMImJhbmFu
YXMiKSkpOworICBFWFBFQ1RfRVEoIkxcIk5PTVxceDZcIiBMXCJCQU5BTkFcIiIsCisgICAgICAg
ICAgICBQcmludCg6OnN0ZDo6d3N0cmluZyhMIk5PTVx4NiIgTCJCQU5BTkEiKSkpOworICBFWFBF
Q1RfRVEoIkxcIiFcXHg1LSFcIiIsIFByaW50KDo6c3RkOjp3c3RyaW5nKEwiIVx4NS0hIikpKTsK
K30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RSSU5HCisKKy8vIFRlc3RzIHByaW50aW5n
IHR5cGVzIHRoYXQgc3VwcG9ydCBnZW5lcmljIHN0cmVhbWluZyAoaS5lLiBzdHJlYW1pbmcKKy8v
IHRvIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiBmb3IgYW55IHZhbGlkIENo
YXIgYW5kCisvLyBDaGFyVHJhaXRzIHR5cGVzKS4KKworLy8gVGVzdHMgcHJpbnRpbmcgYSBub24t
dGVtcGxhdGUgdHlwZSB0aGF0IHN1cHBvcnRzIGdlbmVyaWMgc3RyZWFtaW5nLgorCitjbGFzcyBB
bGxvd3NHZW5lcmljU3RyZWFtaW5nIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhciwgdHlw
ZW5hbWUgQ2hhclRyYWl0cz4KK3N0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYg
b3BlcmF0b3I8PCgKKyAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9z
LAorICAgIGNvbnN0IEFsbG93c0dlbmVyaWNTdHJlYW1pbmcmIC8qIGEgKi8pIHsKKyAgcmV0dXJu
IG9zIDw8ICJBbGxvd3NHZW5lcmljU3RyZWFtaW5nIjsKK30KKworVEVTVChQcmludFR5cGVXaXRo
R2VuZXJpY1N0cmVhbWluZ1Rlc3QsIE5vblRlbXBsYXRlVHlwZSkgeworICBBbGxvd3NHZW5lcmlj
U3RyZWFtaW5nIGE7CisgIEVYUEVDVF9FUSgiQWxsb3dzR2VuZXJpY1N0cmVhbWluZyIsIFByaW50
KGEpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgYSB0ZW1wbGF0ZSB0eXBlIHRoYXQgc3VwcG9y
dHMgZ2VuZXJpYyBzdHJlYW1pbmcuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQWxs
b3dzR2VuZXJpY1N0cmVhbWluZ1RlbXBsYXRlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hh
ciwgdHlwZW5hbWUgQ2hhclRyYWl0cywgdHlwZW5hbWUgVD4KK3N0ZDo6YmFzaWNfb3N0cmVhbTxD
aGFyLCBDaGFyVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hh
ciwgQ2hhclRyYWl0cz4mIG9zLAorICAgIGNvbnN0IEFsbG93c0dlbmVyaWNTdHJlYW1pbmdUZW1w
bGF0ZTxUPiYgLyogYSAqLykgeworICByZXR1cm4gb3MgPDwgIkFsbG93c0dlbmVyaWNTdHJlYW1p
bmdUZW1wbGF0ZSI7Cit9CisKK1RFU1QoUHJpbnRUeXBlV2l0aEdlbmVyaWNTdHJlYW1pbmdUZXN0
LCBUZW1wbGF0ZVR5cGUpIHsKKyAgQWxsb3dzR2VuZXJpY1N0cmVhbWluZ1RlbXBsYXRlPGludD4g
YTsKKyAgRVhQRUNUX0VRKCJBbGxvd3NHZW5lcmljU3RyZWFtaW5nVGVtcGxhdGUiLCBQcmludChh
KSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIGEgdHlwZSB0aGF0IHN1cHBvcnRzIGdlbmVyaWMg
c3RyZWFtaW5nIGFuZCBjYW4gYmUKKy8vIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGFub3RoZXIg
cHJpbnRhYmxlIHR5cGUuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQWxsb3dzR2Vu
ZXJpY1N0cmVhbWluZ0FuZEltcGxpY2l0Q29udmVyc2lvblRlbXBsYXRlIHsKKyBwdWJsaWM6Cisg
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIENoYXIsIHR5cGVuYW1lIENoYXJUcmFpdHMsIHR5cGVuYW1lIFQ+CitzdGQ6OmJh
c2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9wZXJhdG9yPDwoCisgICAgc3RkOjpiYXNp
Y19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcywKKyAgICBjb25zdCBBbGxvd3NHZW5lcmlj
U3RyZWFtaW5nQW5kSW1wbGljaXRDb252ZXJzaW9uVGVtcGxhdGU8VD4mIC8qIGEgKi8pIHsKKyAg
cmV0dXJuIG9zIDw8ICJBbGxvd3NHZW5lcmljU3RyZWFtaW5nQW5kSW1wbGljaXRDb252ZXJzaW9u
VGVtcGxhdGUiOworfQorCitURVNUKFByaW50VHlwZVdpdGhHZW5lcmljU3RyZWFtaW5nVGVzdCwg
VHlwZUltcGxpY2l0bHlDb252ZXJ0aWJsZSkgeworICBBbGxvd3NHZW5lcmljU3RyZWFtaW5nQW5k
SW1wbGljaXRDb252ZXJzaW9uVGVtcGxhdGU8aW50PiBhOworICBFWFBFQ1RfRVEoIkFsbG93c0dl
bmVyaWNTdHJlYW1pbmdBbmRJbXBsaWNpdENvbnZlcnNpb25UZW1wbGF0ZSIsIFByaW50KGEpKTsK
K30KKworI2lmIEdURVNUX0hBU19TVFJJTkdfUElFQ0VfCisKKy8vIFRlc3RzIHByaW50aW5nIFN0
cmluZ1BpZWNlLgorCitURVNUKFByaW50U3RyaW5nUGllY2VUZXN0LCBTaW1wbGVTdHJpbmdQaWVj
ZSkgeworICBjb25zdCBTdHJpbmdQaWVjZSBzcCA9ICJIZWxsbyI7CisgIEVYUEVDVF9FUSgiXCJI
ZWxsb1wiIiwgUHJpbnQoc3ApKTsKK30KKworVEVTVChQcmludFN0cmluZ1BpZWNlVGVzdCwgVW5w
cmludGFibGVDaGFyYWN0ZXJzKSB7CisgIGNvbnN0IGNoYXIgc3RyW10gPSAiTlVMIChcMCkgYW5k
IFxyXHQiOworICBjb25zdCBTdHJpbmdQaWVjZSBzcChzdHIsIHNpemVvZihzdHIpIC0gMSk7Cisg
IEVYUEVDVF9FUSgiXCJOVUwgKFxcMCkgYW5kIFxcclxcdFwiIiwgUHJpbnQoc3ApKTsKK30KKwor
I2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSSU5HX1BJRUNFXworCisvLyBUZXN0cyBwcmludGluZyBT
VEwgY29udGFpbmVycy4KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIEVtcHR5RGVxdWUp
IHsKKyAgZGVxdWU8Y2hhcj4gZW1wdHk7CisgIEVYUEVDVF9FUSgie30iLCBQcmludChlbXB0eSkp
OworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgTm9uRW1wdHlEZXF1ZSkgeworICBk
ZXF1ZTxpbnQ+IG5vbl9lbXB0eTsKKyAgbm9uX2VtcHR5LnB1c2hfYmFjaygxKTsKKyAgbm9uX2Vt
cHR5LnB1c2hfYmFjaygzKTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDMgfSIsIFByaW50KG5vbl9lbXB0
eSkpOworfQorCisjaWYgR1RFU1RfSEFTX0hBU0hfTUFQXworCitURVNUKFByaW50U3RsQ29udGFp
bmVyVGVzdCwgT25lRWxlbWVudEhhc2hNYXApIHsKKyAgaGFzaF9tYXA8aW50LCBjaGFyPiBtYXAx
OworICBtYXAxWzFdID0gJ2EnOworICBFWFBFQ1RfRVEoInsgKDEsICdhJyAoOTcsIDB4NjEpKSB9
IiwgUHJpbnQobWFwMSkpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgSGFzaE11
bHRpTWFwKSB7CisgIGhhc2hfbXVsdGltYXA8aW50LCBib29sPiBtYXAxOworICBtYXAxLmluc2Vy
dChtYWtlX3BhaXIoNSwgdHJ1ZSkpOworICBtYXAxLmluc2VydChtYWtlX3BhaXIoNSwgZmFsc2Up
KTsKKworICAvLyBFbGVtZW50cyBvZiBoYXNoX211bHRpbWFwIGNhbiBiZSBwcmludGVkIGluIGFu
eSBvcmRlci4KKyAgY29uc3Qgc3RyaW5nIHJlc3VsdCA9IFByaW50KG1hcDEpOworICBFWFBFQ1Rf
VFJVRShyZXN1bHQgPT0gInsgKDUsIHRydWUpLCAoNSwgZmFsc2UpIH0iIHx8CisgICAgICAgICAg
ICAgIHJlc3VsdCA9PSAieyAoNSwgZmFsc2UpLCAoNSwgdHJ1ZSkgfSIpCisgICAgICAgICAgICAg
ICAgICA8PCAiIHdoZXJlIFByaW50KG1hcDEpIHJldHVybnMgXCIiIDw8IHJlc3VsdCA8PCAiXCIu
IjsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfSEFTSF9NQVBfCisKKyNpZiBHVEVTVF9IQVNf
SEFTSF9TRVRfCisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBIYXNoU2V0KSB7CisgIGhh
c2hfc2V0PHN0cmluZz4gc2V0MTsKKyAgc2V0MS5pbnNlcnQoImhlbGxvIik7CisgIEVYUEVDVF9F
USgieyBcImhlbGxvXCIgfSIsIFByaW50KHNldDEpKTsKK30KKworVEVTVChQcmludFN0bENvbnRh
aW5lclRlc3QsIEhhc2hNdWx0aVNldCkgeworICBjb25zdCBpbnQga1NpemUgPSA1OworICBpbnQg
YVtrU2l6ZV0gPSB7IDEsIDEsIDIsIDUsIDEgfTsKKyAgaGFzaF9tdWx0aXNldDxpbnQ+IHNldDEo
YSwgYSArIGtTaXplKTsKKworICAvLyBFbGVtZW50cyBvZiBoYXNoX211bHRpc2V0IGNhbiBiZSBw
cmludGVkIGluIGFueSBvcmRlci4KKyAgY29uc3Qgc3RyaW5nIHJlc3VsdCA9IFByaW50KHNldDEp
OworICBjb25zdCBzdHJpbmcgZXhwZWN0ZWRfcGF0dGVybiA9ICJ7IGQsIGQsIGQsIGQsIGQgfSI7
ICAvLyBkIG1lYW5zIGEgZGlnaXQuCisKKyAgLy8gVmVyaWZpZXMgdGhlIHJlc3VsdCBtYXRjaGVz
IHRoZSBleHBlY3RlZCBwYXR0ZXJuOyBhbHNvIGV4dHJhY3RzCisgIC8vIHRoZSBudW1iZXJzIGlu
IHRoZSByZXN1bHQuCisgIEFTU0VSVF9FUShleHBlY3RlZF9wYXR0ZXJuLmxlbmd0aCgpLCByZXN1
bHQubGVuZ3RoKCkpOworICBzdGQ6OnZlY3RvcjxpbnQ+IG51bWJlcnM7CisgIGZvciAoc2l6ZV90
IGkgPSAwOyBpICE9IHJlc3VsdC5sZW5ndGgoKTsgaSsrKSB7CisgICAgaWYgKGV4cGVjdGVkX3Bh
dHRlcm5baV0gPT0gJ2QnKSB7CisgICAgICBBU1NFUlRfTkUoaXNkaWdpdChzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPihyZXN1bHRbaV0pKSwgMCk7CisgICAgICBudW1iZXJzLnB1c2hfYmFjayhy
ZXN1bHRbaV0gLSAnMCcpOworICAgIH0gZWxzZSB7CisgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRf
cGF0dGVybltpXSwgcmVzdWx0W2ldKSA8PCAiIHdoZXJlIHJlc3VsdCBpcyAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCByZXN1bHQ7CisgICAgfQor
ICB9CisKKyAgLy8gTWFrZXMgc3VyZSB0aGUgcmVzdWx0IGNvbnRhaW5zIHRoZSByaWdodCBudW1i
ZXJzLgorICBzdGQ6OnNvcnQobnVtYmVycy5iZWdpbigpLCBudW1iZXJzLmVuZCgpKTsKKyAgc3Rk
Ojpzb3J0KGEsIGEgKyBrU2l6ZSk7CisgIEVYUEVDVF9UUlVFKHN0ZDo6ZXF1YWwoYSwgYSArIGtT
aXplLCBudW1iZXJzLmJlZ2luKCkpKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfSEFTSF9T
RVRfCisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBMaXN0KSB7CisgIGNvbnN0IHN0cmlu
ZyBhW10gPSB7CisgICAgImhlbGxvIiwKKyAgICAid29ybGQiCisgIH07CisgIGNvbnN0IGxpc3Q8
c3RyaW5nPiBzdHJpbmdzKGEsIGEgKyAyKTsKKyAgRVhQRUNUX0VRKCJ7IFwiaGVsbG9cIiwgXCJ3
b3JsZFwiIH0iLCBQcmludChzdHJpbmdzKSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJU
ZXN0LCBNYXApIHsKKyAgbWFwPGludCwgYm9vbD4gbWFwMTsKKyAgbWFwMVsxXSA9IHRydWU7Cisg
IG1hcDFbNV0gPSBmYWxzZTsKKyAgbWFwMVszXSA9IHRydWU7CisgIEVYUEVDVF9FUSgieyAoMSwg
dHJ1ZSksICgzLCB0cnVlKSwgKDUsIGZhbHNlKSB9IiwgUHJpbnQobWFwMSkpOworfQorCitURVNU
KFByaW50U3RsQ29udGFpbmVyVGVzdCwgTXVsdGlNYXApIHsKKyAgbXVsdGltYXA8Ym9vbCwgaW50
PiBtYXAxOworICAvLyBUaGUgbWFrZV9wYWlyIHRlbXBsYXRlIGZ1bmN0aW9uIHdvdWxkIGRlZHVj
ZSB0aGUgdHlwZSBhcworICAvLyBwYWlyPGJvb2wsIGludD4gaGVyZSwgYW5kIHNpbmNlIHRoZSBr
ZXkgcGFydCBpbiBhIG11bHRpbWFwIGhhcyB0bworICAvLyBiZSBjb25zdGFudCwgd2l0aG91dCBh
IHRlbXBsYXRlZCBjdG9yIGluIHRoZSBwYWlyIGNsYXNzIChhcyBpbgorICAvLyBsaWJDc3RkIG9u
IFNvbGFyaXMpLCBtYWtlX3BhaXIgY2FsbCB3b3VsZCBmYWlsIHRvIGNvbXBpbGUgYXMgbm8KKyAg
Ly8gaW1wbGljaXQgY29udmVyc2lvbiBpcyBmb3VuZC4gIFRodXMgZXhwbGljaXQgdHlwZW5hbWUg
aXMgdXNlZAorICAvLyBoZXJlIGluc3RlYWQuCisgIG1hcDEuaW5zZXJ0KHBhaXI8Y29uc3QgYm9v
bCwgaW50Pih0cnVlLCAwKSk7CisgIG1hcDEuaW5zZXJ0KHBhaXI8Y29uc3QgYm9vbCwgaW50Pih0
cnVlLCAxKSk7CisgIG1hcDEuaW5zZXJ0KHBhaXI8Y29uc3QgYm9vbCwgaW50PihmYWxzZSwgMikp
OworICBFWFBFQ1RfRVEoInsgKGZhbHNlLCAyKSwgKHRydWUsIDApLCAodHJ1ZSwgMSkgfSIsIFBy
aW50KG1hcDEpKTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIFNldCkgeworICBj
b25zdCB1bnNpZ25lZCBpbnQgYVtdID0geyAzLCAwLCA1IH07CisgIHNldDx1bnNpZ25lZCBpbnQ+
IHNldDEoYSwgYSArIDMpOworICBFWFBFQ1RfRVEoInsgMCwgMywgNSB9IiwgUHJpbnQoc2V0MSkp
OworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgTXVsdGlTZXQpIHsKKyAgY29uc3Qg
aW50IGFbXSA9IHsgMSwgMSwgMiwgNSwgMSB9OworICBtdWx0aXNldDxpbnQ+IHNldDEoYSwgYSAr
IDUpOworICBFWFBFQ1RfRVEoInsgMSwgMSwgMSwgMiwgNSB9IiwgUHJpbnQoc2V0MSkpOworfQor
CisjaWYgR1RFU1RfSEFTX1NURF9GT1JXQVJEX0xJU1RfCisvLyA8c2xpc3Q+IGlzIGF2YWlsYWJs
ZSBvbiBMaW51eCBpbiB0aGUgZ29vZ2xlMyBtb2RlLCBidXQgbm90IG9uCisvLyBXaW5kb3dzIG9y
IE1hYyBPUyBYLgorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgU2luZ2x5TGlua2VkTGlz
dCkgeworICBpbnQgYVtdID0geyA5LCAyLCA4IH07CisgIGNvbnN0IHN0ZDo6Zm9yd2FyZF9saXN0
PGludD4gaW50cyhhLCBhICsgMyk7CisgIEVYUEVDVF9FUSgieyA5LCAyLCA4IH0iLCBQcmludChp
bnRzKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfRk9SV0FSRF9MSVNUXworCitURVNU
KFByaW50U3RsQ29udGFpbmVyVGVzdCwgUGFpcikgeworICBwYWlyPGNvbnN0IGJvb2wsIGludD4g
cCh0cnVlLCA1KTsKKyAgRVhQRUNUX0VRKCIodHJ1ZSwgNSkiLCBQcmludChwKSk7Cit9CisKK1RF
U1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBWZWN0b3IpIHsKKyAgdmVjdG9yPGludD4gdjsKKyAg
di5wdXNoX2JhY2soMSk7CisgIHYucHVzaF9iYWNrKDIpOworICBFWFBFQ1RfRVEoInsgMSwgMiB9
IiwgUHJpbnQodikpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgTG9uZ1NlcXVl
bmNlKSB7CisgIGNvbnN0IGludCBhWzEwMF0gPSB7IDEsIDIsIDMgfTsKKyAgY29uc3QgdmVjdG9y
PGludD4gdihhLCBhICsgMTAwKTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDIsIDMsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsICIKKyAgICAgICAgICAgICIwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAuLi4gfSIsIFByaW50KHYpKTsKK30K
KworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIE5lc3RlZENvbnRhaW5lcikgeworICBjb25z
dCBpbnQgYTFbXSA9IHsgMSwgMiB9OworICBjb25zdCBpbnQgYTJbXSA9IHsgMywgNCwgNSB9Owor
ICBjb25zdCBsaXN0PGludD4gbDEoYTEsIGExICsgMik7CisgIGNvbnN0IGxpc3Q8aW50PiBsMihh
MiwgYTIgKyAzKTsKKworICB2ZWN0b3I8bGlzdDxpbnQ+ID4gdjsKKyAgdi5wdXNoX2JhY2sobDEp
OworICB2LnB1c2hfYmFjayhsMik7CisgIEVYUEVDVF9FUSgieyB7IDEsIDIgfSwgeyAzLCA0LCA1
IH0gfSIsIFByaW50KHYpKTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIE9uZURp
bWVuc2lvbmFsTmF0aXZlQXJyYXkpIHsKKyAgY29uc3QgaW50IGFbM10gPSB7IDEsIDIsIDMgfTsK
KyAgTmF0aXZlQXJyYXk8aW50PiBiKGEsIDMsIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSk7
CisgIEVYUEVDVF9FUSgieyAxLCAyLCAzIH0iLCBQcmludChiKSk7Cit9CisKK1RFU1QoUHJpbnRT
dGxDb250YWluZXJUZXN0LCBUd29EaW1lbnNpb25hbE5hdGl2ZUFycmF5KSB7CisgIGNvbnN0IGlu
dCBhWzJdWzNdID0geyB7IDEsIDIsIDMgfSwgeyA0LCA1LCA2IH0gfTsKKyAgTmF0aXZlQXJyYXk8
aW50WzNdPiBiKGEsIDIsIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSk7CisgIEVYUEVDVF9F
USgieyB7IDEsIDIsIDMgfSwgeyA0LCA1LCA2IH0gfSIsIFByaW50KGIpKTsKK30KKworLy8gVGVz
dHMgdGhhdCBhIGNsYXNzIG5hbWVkIGl0ZXJhdG9yIGlzbid0IHRyZWF0ZWQgYXMgYSBjb250YWlu
ZXIuCisKK3N0cnVjdCBpdGVyYXRvciB7CisgIGNoYXIgeDsKK307CisKK1RFU1QoUHJpbnRTdGxD
b250YWluZXJUZXN0LCBJdGVyYXRvcikgeworICBpdGVyYXRvciBpdCA9IHt9OworICBFWFBFQ1Rf
RVEoIjEtYnl0ZSBvYmplY3QgPDAwPiIsIFByaW50KGl0KSk7Cit9CisKKy8vIFRlc3RzIHRoYXQg
YSBjbGFzcyBuYW1lZCBjb25zdF9pdGVyYXRvciBpc24ndCB0cmVhdGVkIGFzIGEgY29udGFpbmVy
LgorCitzdHJ1Y3QgY29uc3RfaXRlcmF0b3IgeworICBjaGFyIHg7Cit9OworCitURVNUKFByaW50
U3RsQ29udGFpbmVyVGVzdCwgQ29uc3RJdGVyYXRvcikgeworICBjb25zdF9pdGVyYXRvciBpdCA9
IHt9OworICBFWFBFQ1RfRVEoIjEtYnl0ZSBvYmplY3QgPDAwPiIsIFByaW50KGl0KSk7Cit9CisK
KyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCisvLyBUZXN0cyBwcmludGluZyA6OnN0ZDo6dHIxOjp0
dXBsZXMuCisKKy8vIFR1cGxlcyBvZiB2YXJpb3VzIGFyaXRpZXMuCitURVNUKFByaW50VHIxVHVw
bGVUZXN0LCBWYXJpb3VzU2l6ZXMpIHsKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8PiB0MDsKKyAgRVhQ
RUNUX0VRKCIoKSIsIFByaW50KHQwKSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8aW50PiB0MSg1
KTsKKyAgRVhQRUNUX0VRKCIoNSkiLCBQcmludCh0MSkpOworCisgIDo6c3RkOjp0cjE6OnR1cGxl
PGNoYXIsIGJvb2w+IHQyKCdhJywgdHJ1ZSk7CisgIEVYUEVDVF9FUSgiKCdhJyAoOTcsIDB4NjEp
LCB0cnVlKSIsIFByaW50KHQyKSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBp
bnQ+IHQzKGZhbHNlLCAyLCAzKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMpIiwgUHJpbnQo
dDMpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50PiB0NChmYWxz
ZSwgMiwgMywgNCk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0KSIsIFByaW50KHQ0KSk7
CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbD4gdDUoZmFs
c2UsIDIsIDMsIDQsIHRydWUpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSki
LCBQcmludCh0NSkpOworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQs
IGJvb2wsIGludD4gdDYoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYpOworICBFWFBFQ1RfRVEoIihm
YWxzZSwgMiwgMywgNCwgdHJ1ZSwgNikiLCBQcmludCh0NikpOworCisgIDo6c3RkOjp0cjE6OnR1
cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50PiB0NygKKyAgICAgIGZhbHNl
LCAyLCAzLCA0LCB0cnVlLCA2LCA3KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRy
dWUsIDYsIDcpIiwgUHJpbnQodDcpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQs
IGludCwgaW50LCBib29sLCBpbnQsIGludCwgYm9vbD4gdDgoCisgICAgICBmYWxzZSwgMiwgMywg
NCwgdHJ1ZSwgNiwgNywgdHJ1ZSk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVl
LCA2LCA3LCB0cnVlKSIsIFByaW50KHQ4KSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwg
aW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGJvb2wsIGludD4gdDkoCisgICAgICBmYWxz
ZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSwgOSk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAy
LCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlLCA5KSIsIFByaW50KHQ5KSk7CisKKyAgY29uc3QgY2hh
ciogY29uc3Qgc3RyID0gIjgiOworICAvLyBWQysrIDIwMTAncyBpbXBsZW1lbnRhdGlvbiBvZiB0
dXBsZSBvZiBDKysweCBpcyBkZWZpY2llbnQsIHJlcXVpcmluZworICAvLyBhbiBleHBsaWNpdCB0
eXBlIGNhc3Qgb2YgTlVMTCB0byBiZSB1c2VkLgorICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBj
aGFyLCBzaG9ydCwgdGVzdGluZzo6aW50ZXJuYWw6OkludDMyLCAgLy8gTk9MSU5UCisgICAgICB0
ZXN0aW5nOjppbnRlcm5hbDo6SW50NjQsIGZsb2F0LCBkb3VibGUsIGNvbnN0IGNoYXIqLCB2b2lk
Kiwgc3RyaW5nPgorICAgICAgdDEwKGZhbHNlLCAnYScsIDMsIDQsIDUsIDEuNUYsIC0yLjUsIHN0
ciwKKyAgICAgICAgICBJbXBsaWNpdENhc3RfPHZvaWQqPihOVUxMKSwgIjEwIik7CisgIEVYUEVD
VF9FUSgiKGZhbHNlLCAnYScgKDk3LCAweDYxKSwgMywgNCwgNSwgMS41LCAtMi41LCAiICsgUHJp
bnRQb2ludGVyKHN0cikgKworICAgICAgICAgICAgIiBwb2ludGluZyB0byBcIjhcIiwgTlVMTCwg
XCIxMFwiKSIsCisgICAgICAgICAgICBQcmludCh0MTApKTsKK30KKworLy8gTmVzdGVkIHR1cGxl
cy4KK1RFU1QoUHJpbnRUcjFUdXBsZVRlc3QsIE5lc3RlZFR1cGxlKSB7CisgIDo6c3RkOjp0cjE6
OnR1cGxlPCA6OnN0ZDo6dHIxOjp0dXBsZTxpbnQsIGJvb2w+LCBjaGFyPiBuZXN0ZWQoCisgICAg
ICA6OnN0ZDo6dHIxOjptYWtlX3R1cGxlKDUsIHRydWUpLCAnYScpOworICBFWFBFQ1RfRVEoIigo
NSwgdHJ1ZSksICdhJyAoOTcsIDB4NjEpKSIsIFByaW50KG5lc3RlZCkpOworfQorCisjZW5kaWYg
IC8vIEdURVNUX0hBU19UUjFfVFVQTEUKKworI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCisvLyBU
ZXN0cyBwcmludGluZyA6OnN0ZDo6dHVwbGVzLgorCisvLyBUdXBsZXMgb2YgdmFyaW91cyBhcml0
aWVzLgorVEVTVChQcmludFN0ZFR1cGxlVGVzdCwgVmFyaW91c1NpemVzKSB7CisgIDo6c3RkOjp0
dXBsZTw+IHQwOworICBFWFBFQ1RfRVEoIigpIiwgUHJpbnQodDApKTsKKworICA6OnN0ZDo6dHVw
bGU8aW50PiB0MSg1KTsKKyAgRVhQRUNUX0VRKCIoNSkiLCBQcmludCh0MSkpOworCisgIDo6c3Rk
Ojp0dXBsZTxjaGFyLCBib29sPiB0MignYScsIHRydWUpOworICBFWFBFQ1RfRVEoIignYScgKDk3
LCAweDYxKSwgdHJ1ZSkiLCBQcmludCh0MikpOworCisgIDo6c3RkOjp0dXBsZTxib29sLCBpbnQs
IGludD4gdDMoZmFsc2UsIDIsIDMpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMykiLCBQcmlu
dCh0MykpOworCisgIDo6c3RkOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50PiB0NChmYWxzZSwg
MiwgMywgNCk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0KSIsIFByaW50KHQ0KSk7CisK
KyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2w+IHQ1KGZhbHNlLCAyLCAz
LCA0LCB0cnVlKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUpIiwgUHJpbnQo
dDUpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50PiB0
NihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNik7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0
LCB0cnVlLCA2KSIsIFByaW50KHQ2KSk7CisKKyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwgaW50
LCBpbnQsIGJvb2wsIGludCwgaW50PiB0NygKKyAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2
LCA3KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcpIiwgUHJpbnQo
dDcpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBp
bnQsIGJvb2w+IHQ4KAorICAgICAgZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUpOwor
ICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSkiLCBQcmludCh0
OCkpOworCisgIDo6c3RkOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGlu
dCwgYm9vbCwgaW50PiB0OSgKKyAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVl
LCA5KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUsIDkp
IiwgUHJpbnQodDkpKTsKKworICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAiOCI7CisgIC8vIFZD
KysgMjAxMCdzIGltcGxlbWVudGF0aW9uIG9mIHR1cGxlIG9mIEMrKzB4IGlzIGRlZmljaWVudCwg
cmVxdWlyaW5nCisgIC8vIGFuIGV4cGxpY2l0IHR5cGUgY2FzdCBvZiBOVUxMIHRvIGJlIHVzZWQu
CisgIDo6c3RkOjp0dXBsZTxib29sLCBjaGFyLCBzaG9ydCwgdGVzdGluZzo6aW50ZXJuYWw6Oklu
dDMyLCAgLy8gTk9MSU5UCisgICAgICB0ZXN0aW5nOjppbnRlcm5hbDo6SW50NjQsIGZsb2F0LCBk
b3VibGUsIGNvbnN0IGNoYXIqLCB2b2lkKiwgc3RyaW5nPgorICAgICAgdDEwKGZhbHNlLCAnYScs
IDMsIDQsIDUsIDEuNUYsIC0yLjUsIHN0ciwKKyAgICAgICAgICBJbXBsaWNpdENhc3RfPHZvaWQq
PihOVUxMKSwgIjEwIik7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAnYScgKDk3LCAweDYxKSwgMywg
NCwgNSwgMS41LCAtMi41LCAiICsgUHJpbnRQb2ludGVyKHN0cikgKworICAgICAgICAgICAgIiBw
b2ludGluZyB0byBcIjhcIiwgTlVMTCwgXCIxMFwiKSIsCisgICAgICAgICAgICBQcmludCh0MTAp
KTsKK30KKworLy8gTmVzdGVkIHR1cGxlcy4KK1RFU1QoUHJpbnRTdGRUdXBsZVRlc3QsIE5lc3Rl
ZFR1cGxlKSB7CisgIDo6c3RkOjp0dXBsZTwgOjpzdGQ6OnR1cGxlPGludCwgYm9vbD4sIGNoYXI+
IG5lc3RlZCgKKyAgICAgIDo6c3RkOjptYWtlX3R1cGxlKDUsIHRydWUpLCAnYScpOworICBFWFBF
Q1RfRVEoIigoNSwgdHJ1ZSksICdhJyAoOTcsIDB4NjEpKSIsIFByaW50KG5lc3RlZCkpOworfQor
CisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKworLy8gVGVzdHMgcHJpbnRpbmcgdXNlci1k
ZWZpbmVkIHVucHJpbnRhYmxlIHR5cGVzLgorCisvLyBVbnByaW50YWJsZSB0eXBlcyBpbiB0aGUg
Z2xvYmFsIG5hbWVzcGFjZS4KK1RFU1QoUHJpbnRVbnByaW50YWJsZVR5cGVUZXN0LCBJbkdsb2Jh
bE5hbWVzcGFjZSkgeworICBFWFBFQ1RfRVEoIjEtYnl0ZSBvYmplY3QgPDAwPiIsCisgICAgICAg
ICAgICBQcmludChVbnByaW50YWJsZVRlbXBsYXRlSW5HbG9iYWw8Y2hhcj4oKSkpOworfQorCisv
LyBVbnByaW50YWJsZSB0eXBlcyBpbiBhIHVzZXIgbmFtZXNwYWNlLgorVEVTVChQcmludFVucHJp
bnRhYmxlVHlwZVRlc3QsIEluVXNlck5hbWVzcGFjZSkgeworICBFWFBFQ1RfRVEoIjE2LWJ5dGUg
b2JqZWN0IDxFRi0xMiAwMC0wMCAzNC1BQiAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMD4i
LAorICAgICAgICAgICAgUHJpbnQoOjpmb286OlVucHJpbnRhYmxlSW5Gb28oKSkpOworfQorCisv
LyBVbnByaW50YWJsZSB0eXBlcyBhcmUgdGhhdCB0b28gYmlnIHRvIGJlIHByaW50ZWQgY29tcGxl
dGVseS4KKworc3RydWN0IEJpZyB7CisgIEJpZygpIHsgbWVtc2V0KGFycmF5LCAwLCBzaXplb2Yo
YXJyYXkpKTsgfQorICBjaGFyIGFycmF5WzI1N107Cit9OworCitURVNUKFByaW50VW5wcml0YWJs
ZVR5cGVUZXN0LCBCaWdPYmplY3QpIHsKKyAgRVhQRUNUX0VRKCIyNTctYnl0ZSBvYmplY3QgPDAw
LTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwICIKKyAgICAgICAgICAgICIwMC0wMCAw
MC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAiCisg
ICAgICAgICAgICAiMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAt
MDAgMDAtMDAgMDAtMDAgIgorICAgICAgICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAw
LTAwIDAwLTAwIC4uLiAwMC0wMCAwMC0wMCAwMC0wMCAiCisgICAgICAgICAgICAiMDAtMDAgMDAt
MDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgIgorICAg
ICAgICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAw
IDAwLTAwIDAwLTAwICIKKyAgICAgICAgICAgICIwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0w
MCAwMC0wMCAwMC0wMCAwMC0wMCAwMD4iLAorICAgICAgICAgICAgUHJpbnQoQmlnKCkpKTsKK30K
KworLy8gVGVzdHMgcHJpbnRpbmcgdXNlci1kZWZpbmVkIHN0cmVhbWFibGUgdHlwZXMuCisKKy8v
IFN0cmVhbWFibGUgdHlwZXMgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCitURVNUKFByaW50U3Ry
ZWFtYWJsZVR5cGVUZXN0LCBJbkdsb2JhbE5hbWVzcGFjZSkgeworICBTdHJlYW1hYmxlSW5HbG9i
YWwgeDsKKyAgRVhQRUNUX0VRKCJTdHJlYW1hYmxlSW5HbG9iYWwiLCBQcmludCh4KSk7CisgIEVY
UEVDVF9FUSgiU3RyZWFtYWJsZUluR2xvYmFsKiIsIFByaW50KCZ4KSk7Cit9CisKKy8vIFByaW50
YWJsZSB0ZW1wbGF0ZSB0eXBlcyBpbiBhIHVzZXIgbmFtZXNwYWNlLgorVEVTVChQcmludFN0cmVh
bWFibGVUeXBlVGVzdCwgVGVtcGxhdGVUeXBlSW5Vc2VyTmFtZXNwYWNlKSB7CisgIEVYUEVDVF9F
USgiU3RyZWFtYWJsZVRlbXBsYXRlSW5Gb286IDAiLAorICAgICAgICAgICAgUHJpbnQoOjpmb286
OlN0cmVhbWFibGVUZW1wbGF0ZUluRm9vPGludD4oKSkpOworfQorCisvLyBUZXN0cyBwcmludGlu
ZyB1c2VyLWRlZmluZWQgdHlwZXMgdGhhdCBoYXZlIGEgUHJpbnRUbygpIGZ1bmN0aW9uLgorVEVT
VChQcmludFByaW50YWJsZVR5cGVUZXN0LCBJblVzZXJOYW1lc3BhY2UpIHsKKyAgRVhQRUNUX0VR
KCJQcmludGFibGVWaWFQcmludFRvOiAwIiwKKyAgICAgICAgICAgIFByaW50KDo6Zm9vOjpQcmlu
dGFibGVWaWFQcmludFRvKCkpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgYSBwb2ludGVyIHRv
IGEgdXNlci1kZWZpbmVkIHR5cGUgdGhhdCBoYXMgYSA8PAorLy8gb3BlcmF0b3IgZm9yIGl0cyBw
b2ludGVyLgorVEVTVChQcmludFByaW50YWJsZVR5cGVUZXN0LCBQb2ludGVySW5Vc2VyTmFtZXNw
YWNlKSB7CisgIDo6Zm9vOjpQb2ludGVyUHJpbnRhYmxlIHg7CisgIEVYUEVDVF9FUSgiUG9pbnRl
clByaW50YWJsZSoiLCBQcmludCgmeCkpOworfQorCisvLyBUZXN0cyBwcmludGluZyB1c2VyLWRl
ZmluZWQgY2xhc3MgdGVtcGxhdGUgdGhhdCBoYXZlIGEgUHJpbnRUbygpIGZ1bmN0aW9uLgorVEVT
VChQcmludFByaW50YWJsZVR5cGVUZXN0LCBUZW1wbGF0ZUluVXNlck5hbWVzcGFjZSkgeworICBF
WFBFQ1RfRVEoIlByaW50YWJsZVZpYVByaW50VG9UZW1wbGF0ZTogNSIsCisgICAgICAgICAgICBQ
cmludCg6OmZvbzo6UHJpbnRhYmxlVmlhUHJpbnRUb1RlbXBsYXRlPGludD4oNSkpKTsKK30KKwor
Ly8gVGVzdHMgdGhhdCB0aGUgdW5pdmVyc2FsIHByaW50ZXIgcHJpbnRzIGJvdGggdGhlIGFkZHJl
c3MgYW5kIHRoZQorLy8gdmFsdWUgb2YgYSByZWZlcmVuY2UuCitURVNUKFByaW50UmVmZXJlbmNl
VGVzdCwgUHJpbnRzQWRkcmVzc0FuZFZhbHVlKSB7CisgIGludCBuID0gNTsKKyAgRVhQRUNUX0VR
KCJAIiArIFByaW50UG9pbnRlcigmbikgKyAiIDUiLCBQcmludEJ5UmVmKG4pKTsKKworICBpbnQg
YVsyXVszXSA9IHsKKyAgICB7IDAsIDEsIDIgfSwKKyAgICB7IDMsIDQsIDUgfQorICB9OworICBF
WFBFQ1RfRVEoIkAiICsgUHJpbnRQb2ludGVyKGEpICsgIiB7IHsgMCwgMSwgMiB9LCB7IDMsIDQs
IDUgfSB9IiwKKyAgICAgICAgICAgIFByaW50QnlSZWYoYSkpOworCisgIGNvbnN0IDo6Zm9vOjpV
bnByaW50YWJsZUluRm9vIHg7CisgIEVYUEVDVF9FUSgiQCIgKyBQcmludFBvaW50ZXIoJngpICsg
IiAxNi1ieXRlIG9iamVjdCAiCisgICAgICAgICAgICAiPEVGLTEyIDAwLTAwIDM0LUFCIDAwLTAw
IDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwPiIsCisgICAgICAgICAgICBQcmludEJ5UmVmKHgpKTsK
K30KKworLy8gVGVzdHMgdGhhdCB0aGUgdW5pdmVyc2FsIHByaW50ZXIgcHJpbnRzIGEgZnVuY3Rp
b24gcG9pbnRlciBwYXNzZWQgYnkKKy8vIHJlZmVyZW5jZS4KK1RFU1QoUHJpbnRSZWZlcmVuY2VU
ZXN0LCBIYW5kbGVzRnVuY3Rpb25Qb2ludGVyKSB7CisgIHZvaWQgKCpmcCkoaW50IG4pID0gJk15
RnVuY3Rpb247CisgIGNvbnN0IHN0cmluZyBmcF9wb2ludGVyX3N0cmluZyA9CisgICAgICBQcmlu
dFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oJmZwKSk7CisgIC8vIFdlIGNh
bm5vdCBkaXJlY3RseSBjYXN0ICZNeUZ1bmN0aW9uIHRvIGNvbnN0IHZvaWQqIGJlY2F1c2UgdGhl
CisgIC8vIHN0YW5kYXJkIGRpc2FsbG93cyBjYXN0aW5nIGJldHdlZW4gcG9pbnRlcnMgdG8gZnVu
Y3Rpb25zIGFuZAorICAvLyBwb2ludGVycyB0byBvYmplY3RzLCBhbmQgc29tZSBjb21waWxlcnMg
KGUuZy4gR0NDIDMuNCkgZW5mb3JjZQorICAvLyB0aGlzIGxpbWl0YXRpb24uCisgIGNvbnN0IHN0
cmluZyBmcF9zdHJpbmcgPSBQcmludFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4oCisgICAgICByZWludGVycHJldF9jYXN0PGludGVybmFsOjpCaWdnZXN0SW50PihmcCkpKTsK
KyAgRVhQRUNUX0VRKCJAIiArIGZwX3BvaW50ZXJfc3RyaW5nICsgIiAiICsgZnBfc3RyaW5nLAor
ICAgICAgICAgICAgUHJpbnRCeVJlZihmcCkpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSB1bml2
ZXJzYWwgcHJpbnRlciBwcmludHMgYSBtZW1iZXIgZnVuY3Rpb24gcG9pbnRlcgorLy8gcGFzc2Vk
IGJ5IHJlZmVyZW5jZS4KK1RFU1QoUHJpbnRSZWZlcmVuY2VUZXN0LCBIYW5kbGVzTWVtYmVyRnVu
Y3Rpb25Qb2ludGVyKSB7CisgIGludCAoRm9vOjoqcCkoY2hhciBjaCkgPSAmRm9vOjpNeU1ldGhv
ZDsKKyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KAorICAgICAgUHJpbnRCeVJlZihwKSwKKyAgICAg
ICJAIiArIFByaW50UG9pbnRlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigmcCkpICsg
IiAiICsKKyAgICAgICAgICBQcmludChzaXplb2YocCkpICsgIi1ieXRlIG9iamVjdCAiKSk7CisK
KyAgY2hhciAoRm9vOjoqcDIpKGludCBuKSA9ICZGb286Ok15VmlydHVhbE1ldGhvZDsKKyAgRVhQ
RUNUX1RSVUUoSGFzUHJlZml4KAorICAgICAgUHJpbnRCeVJlZihwMiksCisgICAgICAiQCIgKyBQ
cmludFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oJnAyKSkgKyAiICIgKwor
ICAgICAgICAgIFByaW50KHNpemVvZihwMikpICsgIi1ieXRlIG9iamVjdCAiKSk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgdGhlIHVuaXZlcnNhbCBwcmludGVyIHByaW50cyBhIG1lbWJlciB2YXJpYWJs
ZSBwb2ludGVyCisvLyBwYXNzZWQgYnkgcmVmZXJlbmNlLgorVEVTVChQcmludFJlZmVyZW5jZVRl
c3QsIEhhbmRsZXNNZW1iZXJWYXJpYWJsZVBvaW50ZXIpIHsKKyAgaW50IChGb286OipwKSA9ICZG
b286OnZhbHVlOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9UUlVFKEhhc1ByZWZpeCgKKyAgICAgIFBy
aW50QnlSZWYocCksCisgICAgICAiQCIgKyBQcmludFBvaW50ZXIoJnApICsgIiAiICsgUHJpbnQo
c2l6ZW9mKHApKSArICItYnl0ZSBvYmplY3QgIikpOworfQorCisvLyBUZXN0cyB0aGF0IEZvcm1h
dEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSgpLCB3aGljaCBpcyB1c2VkIHRvIHByaW50Cisv
LyBhbiBvcGVyYW5kIGluIGEgY29tcGFyaXNvbiBhc3NlcnRpb24gKGUuZy4gQVNTRVJUX0VRKSB3
aGVuIHRoZSBhc3NlcnRpb24KKy8vIGZhaWxzLCBmb3JtYXRzIHRoZSBvcGVyYW5kIGluIHRoZSBk
ZXNpcmVkIHdheS4KKworLy8gc2NhbGFyCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJl
TWVzc2FnZVRlc3QsIFdvcmtzRm9yU2NhbGFyKSB7CisgIEVYUEVDVF9TVFJFUSgiMTIzIiwKKyAg
ICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSgxMjMsIDEyNCku
Y19zdHIoKSk7Cit9CisKKy8vIG5vbi1jaGFyIHBvaW50ZXIKK1RFU1QoRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JOb25DaGFyUG9pbnRlcikgeworICBpbnQg
biA9IDA7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIoJm4pLAorICAgICAgICAgICAgRm9ybWF0
Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKCZuLCAmbikuY19zdHIoKSk7Cit9CisKKy8vIG5v
bi1jaGFyIGFycmF5CitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3Qs
IEZvcm1hdHNOb25DaGFyQXJyYXlBc1BvaW50ZXIpIHsKKyAgLy8gSW4gZXhwcmVzc2lvbiAnYXJy
YXkgPT0geCcsICdhcnJheScgaXMgY29tcGFyZWQgYnkgcG9pbnRlci4KKyAgLy8gVGhlcmVmb3Jl
IHdlIHdhbnQgdG8gcHJpbnQgYW4gYXJyYXkgb3BlcmFuZCBhcyBhIHBvaW50ZXIuCisgIGludCBu
W10gPSB7IDEsIDIsIDMgfTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihuKSwKKyAgICAgICAg
ICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShuLCBuKS5jX3N0cigpKTsKK30K
KworLy8gVGVzdHMgZm9ybWF0dGluZyBhIGNoYXIgcG9pbnRlciB3aGVuIGl0J3MgY29tcGFyZWQg
d2l0aCBhbm90aGVyIHBvaW50ZXIuCisvLyBJbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBwcmludCBp
dCBhcyBhIHJhdyBwb2ludGVyLCBhcyB0aGUgY29tcGFyaXNpb24gaXMgYnkKKy8vIHBvaW50ZXIu
CisKKy8vIGNoYXIgcG9pbnRlciB2cyBwb2ludGVyCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhclBvaW50ZXJWc1BvaW50ZXIpIHsKKyAgLy8g
SW4gZXhwcmVzc2lvbiAncCA9PSB4Jywgd2hlcmUgJ3AnIGFuZCAneCcgYXJlIChjb25zdCBvciBu
b3QpIGNoYXIKKyAgLy8gcG9pbnRlcnMsIHRoZSBvcGVyYW5kcyBhcmUgY29tcGFyZWQgYnkgcG9p
bnRlci4gIFRoZXJlZm9yZSB3ZQorICAvLyB3YW50IHRvIHByaW50ICdwJyBhcyBhIHBvaW50ZXIg
aW5zdGVhZCBvZiBhIEMgc3RyaW5nICh3ZSBkb24ndAorICAvLyBldmVuIGtub3cgaWYgaXQncyBz
dXBwb3NlZCB0byBwb2ludCB0byBhIHZhbGlkIEMgc3RyaW5nKS4KKworICAvLyBjb25zdCBjaGFy
KgorICBjb25zdCBjaGFyKiBzID0gImhlbGxvIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihz
KSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzLCBzKS5j
X3N0cigpKTsKKworICAvLyBjaGFyKgorICBjaGFyIGNoID0gJ2EnOworICBFWFBFQ1RfRVEoUHJp
bnRQb2ludGVyKCZjaCksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2UoJmNoLCAmY2gpLmNfc3RyKCkpOworfQorCisvLyB3Y2hhcl90IHBvaW50ZXIgdnMgcG9p
bnRlcgorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0Zv
cldDaGFyUG9pbnRlclZzUG9pbnRlcikgeworICAvLyBJbiBleHByZXNzaW9uICdwID09IHgnLCB3
aGVyZSAncCcgYW5kICd4JyBhcmUgKGNvbnN0IG9yIG5vdCkgY2hhcgorICAvLyBwb2ludGVycywg
dGhlIG9wZXJhbmRzIGFyZSBjb21wYXJlZCBieSBwb2ludGVyLiAgVGhlcmVmb3JlIHdlCisgIC8v
IHdhbnQgdG8gcHJpbnQgJ3AnIGFzIGEgcG9pbnRlciBpbnN0ZWFkIG9mIGEgd2lkZSBDIHN0cmlu
ZyAod2UgZG9uJ3QKKyAgLy8gZXZlbiBrbm93IGlmIGl0J3Mgc3VwcG9zZWQgdG8gcG9pbnQgdG8g
YSB2YWxpZCB3aWRlIEMgc3RyaW5nKS4KKworICAvLyBjb25zdCB3Y2hhcl90KgorICBjb25zdCB3
Y2hhcl90KiBzID0gTCJoZWxsbyI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocyksCisgICAg
ICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgcykuY19zdHIoKSk7
CisKKyAgLy8gd2NoYXJfdCoKKyAgd2NoYXJfdCBjaCA9IEwnYSc7CisgIEVYUEVDVF9FUShQcmlu
dFBvaW50ZXIoJmNoKSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVz
c2FnZSgmY2gsICZjaCkuY19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIGZvcm1hdHRpbmcgYSBjaGFy
IHBvaW50ZXIgd2hlbiBpdCdzIGNvbXBhcmVkIHRvIGEgc3RyaW5nIG9iamVjdC4KKy8vIEluIHRo
aXMgY2FzZSB3ZSB3YW50IHRvIHByaW50IHRoZSBjaGFyIHBvaW50ZXIgYXMgYSBDIHN0cmluZy4K
KworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisvLyBjaGFyIHBvaW50ZXIgdnMgOjpzdHJp
bmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JD
aGFyUG9pbnRlclZzU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIqIHMgPSAiaGVsbG8gXCJ3b3JsZCI7
CisgIEVYUEVDVF9TVFJFUSgiXCJoZWxsbyBcXFwid29ybGRcIiIsICAvLyBUaGUgc3RyaW5nIGNv
bnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2UocywgOjpzdHJpbmcoKSkuY19zdHIoKSk7CisKKyAgLy8gY2hhcioK
KyAgY2hhciBzdHJbXSA9ICJoaVwxIjsKKyAgY2hhciogcCA9IHN0cjsKKyAgRVhQRUNUX1NUUkVR
KCJcImhpXFx4MVwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4K
KyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShwLCA6OnN0
cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisvLyBjaGFyIHBvaW50ZXIgdnMgc3RkOjpz
dHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NG
b3JDaGFyUG9pbnRlclZzU3RkU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIqIHMgPSAiaGVsbG8gXCJ3
b3JsZCI7CisgIEVYUEVDVF9TVFJFUSgiXCJoZWxsbyBcXFwid29ybGRcIiIsICAvLyBUaGUgc3Ry
aW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JD
b21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgOjpzdGQ6OnN0cmluZygpKS5jX3N0cigpKTsKKwor
ICAvLyBjaGFyKgorICBjaGFyIHN0cltdID0gImhpXDEiOworICBjaGFyKiBwID0gc3RyOworICBF
WFBFQ1RfU1RSRVEoIlwiaGlcXHgxXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBi
ZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNz
YWdlKHAsIDo6c3RkOjpzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfR0xP
QkFMX1dTVFJJTkcKKy8vIHdjaGFyX3QgcG9pbnRlciB2cyA6OndzdHJpbmcKK1RFU1QoRm9ybWF0
Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhclBvaW50ZXJWc1dT
dHJpbmcpIHsKKyAgY29uc3Qgd2NoYXJfdCogcyA9IEwiaGkgXCJ3b3JsZCI7CisgIEVYUEVDVF9T
VFJFUSgiTFwiaGkgXFxcIndvcmxkXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBi
ZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNz
YWdlKHMsIDo6d3N0cmluZygpKS5jX3N0cigpKTsKKworICAvLyB3Y2hhcl90KgorICB3Y2hhcl90
IHN0cltdID0gTCJoaVwxIjsKKyAgd2NoYXJfdCogcCA9IHN0cjsKKyAgRVhQRUNUX1NUUkVRKCJM
XCJoaVxceDFcIiIsICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisg
ICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocCwgOjp3c3Ry
aW5nKCkpLmNfc3RyKCkpOworfQorI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcK
Ky8vIHdjaGFyX3QgcG9pbnRlciB2cyBzdGQ6OndzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhclBvaW50ZXJWc1N0ZFdTdHJpbmcp
IHsKKyAgY29uc3Qgd2NoYXJfdCogcyA9IEwiaGkgXCJ3b3JsZCI7CisgIEVYUEVDVF9TVFJFUSgi
TFwiaGkgXFxcIndvcmxkXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBiZSBlc2Nh
cGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHMs
IDo6c3RkOjp3c3RyaW5nKCkpLmNfc3RyKCkpOworCisgIC8vIHdjaGFyX3QqCisgIHdjaGFyX3Qg
c3RyW10gPSBMImhpXDEiOworICB3Y2hhcl90KiBwID0gc3RyOworICBFWFBFQ1RfU1RSRVEoIkxc
ImhpXFx4MVwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAg
ICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShwLCA6OnN0ZDo6
d3N0cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisvLyBUZXN0cyBmb3JtYXR0aW5nIGEg
Y2hhciBhcnJheSB3aGVuIGl0J3MgY29tcGFyZWQgd2l0aCBhIHBvaW50ZXIgb3IgYXJyYXkuCisv
LyBJbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBwcmludCB0aGUgYXJyYXkgYXMgYSByb3cgcG9pbnRl
ciwgYXMgdGhlIGNvbXBhcmlzb24KKy8vIGlzIGJ5IHBvaW50ZXIuCisKKy8vIGNoYXIgYXJyYXkg
dnMgcG9pbnRlcgorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBX
b3Jrc0ZvckNoYXJBcnJheVZzUG9pbnRlcikgeworICBjaGFyIHN0cltdID0gImhpIFwid29ybGRc
IiI7CisgIGNoYXIqIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHN0ciksCisg
ICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCBwKS5jX3N0
cigpKTsKK30KKworLy8gY2hhciBhcnJheSB2cyBjaGFyIGFycmF5CitURVNUKEZvcm1hdEZvckNv
bXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhckFycmF5VnNDaGFyQXJyYXkp
IHsKKyAgY29uc3QgY2hhciBzdHJbXSA9ICJoaSBcIndvcmxkXCIiOworICBFWFBFQ1RfRVEoUHJp
bnRQb2ludGVyKHN0ciksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2Uoc3RyLCBzdHIpLmNfc3RyKCkpOworfQorCisvLyB3Y2hhcl90IGFycmF5IHZzIHBvaW50
ZXIKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JX
Q2hhckFycmF5VnNQb2ludGVyKSB7CisgIHdjaGFyX3Qgc3RyW10gPSBMImhpIFwid29ybGRcIiI7
CisgIHdjaGFyX3QqIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHN0ciksCisg
ICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCBwKS5jX3N0
cigpKTsKK30KKworLy8gd2NoYXJfdCBhcnJheSB2cyB3Y2hhcl90IGFycmF5CitURVNUKEZvcm1h
dEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJBcnJheVZzV0No
YXJBcnJheSkgeworICBjb25zdCB3Y2hhcl90IHN0cltdID0gTCJoaSBcIndvcmxkXCIiOworICBF
WFBFQ1RfRVEoUHJpbnRQb2ludGVyKHN0ciksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCBzdHIpLmNfc3RyKCkpOworfQorCisvLyBUZXN0cyBmb3Jt
YXR0aW5nIGEgY2hhciBhcnJheSB3aGVuIGl0J3MgY29tcGFyZWQgd2l0aCBhIHN0cmluZyBvYmpl
Y3QuCisvLyBJbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBwcmludCB0aGUgYXJyYXkgYXMgYSBDIHN0
cmluZy4KKworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisvLyBjaGFyIGFycmF5IHZzIHN0
cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0Zv
ckNoYXJBcnJheVZzU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIgc3RyW10gPSAiaGkgXCJ3XDBybGRc
IiI7CisgIEVYUEVDVF9TVFJFUSgiXCJoaSBcXFwid1wiIiwgIC8vIFRoZSBjb250ZW50IHNob3Vs
ZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFbWJlZGRl
ZCBOVUwgdGVybWluYXRlcyB0aGUgc3RyaW5nLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29t
cGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgOjpzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisjZW5k
aWYKKworLy8gY2hhciBhcnJheSB2cyBzdGQ6OnN0cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVZzU3RkU3RyaW5nKSB7Cisg
IGNvbnN0IGNoYXIgc3RyW10gPSAiaGkgXCJ3b3JsZFwiIjsKKyAgRVhQRUNUX1NUUkVRKCJcImhp
IFxcXCJ3b3JsZFxcXCJcIiIsICAvLyBUaGUgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAg
ICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzdHIsIDo6c3Rk
OjpzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcK
Ky8vIHdjaGFyX3QgYXJyYXkgdnMgd3N0cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFp
bHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvcldDaGFyQXJyYXlWc1dTdHJpbmcpIHsKKyAgY29uc3Qg
d2NoYXJfdCBzdHJbXSA9IEwiaGkgXCJ3b3JsZFwiIjsKKyAgRVhQRUNUX1NUUkVRKCJMXCJoaSBc
XFwid29ybGRcXFwiXCIiLCAgLy8gVGhlIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAg
ICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCA6OndzdHJp
bmcoKSkuY19zdHIoKSk7Cit9CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORwor
Ly8gd2NoYXJfdCBhcnJheSB2cyBzdGQ6OndzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNv
bkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhckFycmF5VnNTdGRXU3RyaW5nKSB7Cisg
IGNvbnN0IHdjaGFyX3Qgc3RyW10gPSBMImhpIFwid1wwcmxkXCIiOworICBFWFBFQ1RfU1RSRVEo
CisgICAgICAiTFwiaGkgXFxcIndcIiIsICAvLyBUaGUgY29udGVudCBzaG91bGQgYmUgZXNjYXBl
ZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVtYmVkZGVkIE5VTCB0ZXJtaW5hdGVzIHRo
ZSBzdHJpbmcuCisgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCA6
OnN0ZDo6d3N0cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisvLyBVc2VmdWwgZm9yIHRl
c3RpbmcgUHJpbnRUb1N0cmluZygpLiAgV2UgY2Fubm90IHVzZSBFWFBFQ1RfRVEoKQorLy8gdGhl
cmUgYXMgaXRzIGltcGxlbWVudGF0aW9uIHVzZXMgUHJpbnRUb1N0cmluZygpLiAgVGhlIGNhbGxl
ciBtdXN0CisvLyBlbnN1cmUgdGhhdCAndmFsdWUnIGhhcyBubyBzaWRlIGVmZmVjdC4KKyNkZWZp
bmUgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18odmFsdWUsIGV4cGVjdGVkX3N0cmluZykgICAgICAg
ICBcCisgIEVYUEVDVF9UUlVFKFByaW50VG9TdHJpbmcodmFsdWUpID09IChleHBlY3RlZF9zdHJp
bmcpKSAgICAgICAgXAorICAgICAgPDwgIiB3aGVyZSAiICN2YWx1ZSAiIHByaW50cyBhcyAiIDw8
IChQcmludFRvU3RyaW5nKHZhbHVlKSkKKworVEVTVChQcmludFRvU3RyaW5nVGVzdCwgV29ya3NG
b3JTY2FsYXIpIHsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18oMTIzLCAiMTIzIik7Cit9CisK
K1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIFdvcmtzRm9yUG9pbnRlclRvQ29uc3RDaGFyKSB7Cisg
IGNvbnN0IGNoYXIqIHAgPSAiaGVsbG8iOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhwLCAi
XCJoZWxsb1wiIik7Cit9CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIFdvcmtzRm9yUG9pbnRl
clRvTm9uQ29uc3RDaGFyKSB7CisgIGNoYXIgc1tdID0gImhlbGxvIjsKKyAgY2hhciogcCA9IHM7
CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKHAsICJcImhlbGxvXCIiKTsKK30KKworVEVTVChQ
cmludFRvU3RyaW5nVGVzdCwgRXNjYXBlc0ZvclBvaW50ZXJUb0NvbnN0Q2hhcikgeworICBjb25z
dCBjaGFyKiBwID0gImhlbGxvXG4iOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhwLCAiXCJo
ZWxsb1xcblwiIik7Cit9CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIEVzY2FwZXNGb3JQb2lu
dGVyVG9Ob25Db25zdENoYXIpIHsKKyAgY2hhciBzW10gPSAiaGVsbG9cMSI7CisgIGNoYXIqIHAg
PSBzOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhwLCAiXCJoZWxsb1xceDFcIiIpOworfQor
CitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvckFycmF5KSB7CisgIGludCBuWzNdID0g
eyAxLCAyLCAzIH07CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKG4sICJ7IDEsIDIsIDMgfSIp
OworfQorCitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheSkgeworICBj
aGFyIHNbXSA9ICJoZWxsbyI7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKHMsICJcImhlbGxv
XCIiKTsKK30KKworVEVTVChQcmludFRvU3RyaW5nVGVzdCwgV29ya3NGb3JDaGFyQXJyYXlXaXRo
RW1iZWRkZWROdWwpIHsKKyAgY29uc3QgY2hhciBzdHJfd2l0aF9udWxbXSA9ICJoZWxsb1wwIHdv
cmxkIjsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18oc3RyX3dpdGhfbnVsLCAiXCJoZWxsb1xc
MCB3b3JsZFwiIik7CisKKyAgY2hhciBtdXRhYmxlX3N0cl93aXRoX251bFtdID0gImhlbGxvXDAg
d29ybGQiOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhtdXRhYmxlX3N0cl93aXRoX251bCwg
IlwiaGVsbG9cXDAgd29ybGRcIiIpOworfQorCisjdW5kZWYgRVhQRUNUX1BSSU5UX1RPX1NUUklO
R18KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VGVzdCwgV29ya3NGb3JOb25SZWZlcmVuY2Up
IHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2FsVGVyc2VQcmludCgxMjMs
ICZzcyk7CisgIEVYUEVDVF9FUSgiMTIzIiwgc3Muc3RyKCkpOworfQorCitURVNUKFVuaXZlcnNh
bFRlcnNlUHJpbnRUZXN0LCBXb3Jrc0ZvclJlZmVyZW5jZSkgeworICBjb25zdCBpbnQmIG4gPSAx
MjM7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIFVuaXZlcnNhbFRlcnNlUHJpbnQobiwg
JnNzKTsKKyAgRVhQRUNUX0VRKCIxMjMiLCBzcy5zdHIoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2Fs
VGVyc2VQcmludFRlc3QsIFdvcmtzRm9yQ1N0cmluZykgeworICBjb25zdCBjaGFyKiBzMSA9ICJh
YmMiOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMTsKKyAgVW5pdmVyc2FsVGVyc2VQcmludChz
MSwgJnNzMSk7CisgIEVYUEVDVF9FUSgiXCJhYmNcIiIsIHNzMS5zdHIoKSk7CisKKyAgY2hhciog
czIgPSBjb25zdF9jYXN0PGNoYXIqPihzMSk7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3MyOwor
ICBVbml2ZXJzYWxUZXJzZVByaW50KHMyLCAmc3MyKTsKKyAgRVhQRUNUX0VRKCJcImFiY1wiIiwg
c3MyLnN0cigpKTsKKworICBjb25zdCBjaGFyKiBzMyA9IE5VTEw7CisgIDo6c3RkOjpzdHJpbmdz
dHJlYW0gc3MzOworICBVbml2ZXJzYWxUZXJzZVByaW50KHMzLCAmc3MzKTsKKyAgRVhQRUNUX0VR
KCJOVUxMIiwgc3MzLnN0cigpKTsKK30KKworVEVTVChVbml2ZXJzYWxQcmludFRlc3QsIFdvcmtz
Rm9yTm9uUmVmZXJlbmNlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIFVuaXZlcnNh
bFByaW50KDEyMywgJnNzKTsKKyAgRVhQRUNUX0VRKCIxMjMiLCBzcy5zdHIoKSk7Cit9CisKK1RF
U1QoVW5pdmVyc2FsUHJpbnRUZXN0LCBXb3Jrc0ZvclJlZmVyZW5jZSkgeworICBjb25zdCBpbnQm
IG4gPSAxMjM7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIFVuaXZlcnNhbFByaW50KG4s
ICZzcyk7CisgIEVYUEVDVF9FUSgiMTIzIiwgc3Muc3RyKCkpOworfQorCitURVNUKFVuaXZlcnNh
bFByaW50VGVzdCwgV29ya3NGb3JDU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIqIHMxID0gImFiYyI7
CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3MxOworICBVbml2ZXJzYWxQcmludChzMSwgJnNzMSk7
CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIoczEpICsgIiBwb2ludGluZyB0byBcImFiY1wiIiwg
c3RyaW5nKHNzMS5zdHIoKSkpOworCisgIGNoYXIqIHMyID0gY29uc3RfY2FzdDxjaGFyKj4oczEp
OworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMjsKKyAgVW5pdmVyc2FsUHJpbnQoczIsICZzczIp
OworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHMyKSArICIgcG9pbnRpbmcgdG8gXCJhYmNcIiIs
IHN0cmluZyhzczIuc3RyKCkpKTsKKworICBjb25zdCBjaGFyKiBzMyA9IE5VTEw7CisgIDo6c3Rk
OjpzdHJpbmdzdHJlYW0gc3MzOworICBVbml2ZXJzYWxQcmludChzMywgJnNzMyk7CisgIEVYUEVD
VF9FUSgiTlVMTCIsIHNzMy5zdHIoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsUHJpbnRUZXN0LCBX
b3Jrc0ZvckNoYXJBcnJheSkgeworICBjb25zdCBjaGFyIHN0cltdID0gIlwiTGluZVwwIDFcIlxu
TGluZSAyIjsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczE7CisgIFVuaXZlcnNhbFByaW50KHN0
ciwgJnNzMSk7CisgIEVYUEVDVF9FUSgiXCJcXFwiTGluZVxcMCAxXFxcIlxcbkxpbmUgMlwiIiwg
c3MxLnN0cigpKTsKKworICBjb25zdCBjaGFyIG11dGFibGVfc3RyW10gPSAiXCJMaW5lXDAgMVwi
XG5MaW5lIDIiOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMjsKKyAgVW5pdmVyc2FsUHJpbnQo
bXV0YWJsZV9zdHIsICZzczIpOworICBFWFBFQ1RfRVEoIlwiXFxcIkxpbmVcXDAgMVxcXCJcXG5M
aW5lIDJcIiIsIHNzMi5zdHIoKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCisKK1RF
U1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhUcjEsIFBy
aW50c0VtcHR5VHVwbGUpIHsKKyAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50
VHVwbGVGaWVsZHNUb1N0cmluZ3MoCisgICAgICA6OnN0ZDo6dHIxOjptYWtlX3R1cGxlKCkpOwor
ICBFWFBFQ1RfRVEoMHUsIHJlc3VsdC5zaXplKCkpOworfQorCitURVNUKFVuaXZlcnNhbFRlcnNl
UHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmludHNPbmVUdXBsZSkgewor
ICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5n
cygKKyAgICAgIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGUoMSkpOworICBBU1NFUlRfRVEoMXUsIHJl
c3VsdC5zaXplKCkpOworICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRbMF0pOworfQorCitURVNUKFVu
aXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmludHNU
d29UdXBsZSkgeworICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZp
ZWxkc1RvU3RyaW5ncygKKyAgICAgIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGUoMSwgJ2EnKSk7Cisg
IEFTU0VSVF9FUSgydSwgcmVzdWx0LnNpemUoKSk7CisgIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFsw
XSk7CisgIEVYUEVDVF9FUSgiJ2EnICg5NywgMHg2MSkiLCByZXN1bHRbMV0pOworfQorCitURVNU
KFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmlu
dHNUZXJzZWx5KSB7CisgIGNvbnN0IGludCBuID0gMTsKKyAgU3RyaW5ncyByZXN1bHQgPSBVbml2
ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoCisgICAgICA6OnN0ZDo6dHIxOjp0
dXBsZTxjb25zdCBpbnQmLCBjb25zdCBjaGFyKj4obiwgImEiKSk7CisgIEFTU0VSVF9FUSgydSwg
cmVzdWx0LnNpemUoKSk7CisgIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7CisgIEVYUEVDVF9F
USgiXCJhXCIiLCByZXN1bHRbMV0pOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQ
TEUKKworI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmlu
dFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhTdGQsIFByaW50c0VtcHR5VHVwbGUpIHsKKyAg
U3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3Mo
OjpzdGQ6Om1ha2VfdHVwbGUoKSk7CisgIEVYUEVDVF9FUSgwdSwgcmVzdWx0LnNpemUoKSk7Cit9
CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhT
dGQsIFByaW50c09uZVR1cGxlKSB7CisgIFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQ
cmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAorICAgICAgOjpzdGQ6Om1ha2VfdHVwbGUoMSkpOwor
ICBBU1NFUlRfRVEoMXUsIHJlc3VsdC5zaXplKCkpOworICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRb
MF0pOworfQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rl
c3RXaXRoU3RkLCBQcmludHNUd29UdXBsZSkgeworICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNh
bFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKKyAgICAgIDo6c3RkOjptYWtlX3R1cGxl
KDEsICdhJykpOworICBBU1NFUlRfRVEoMnUsIHJlc3VsdC5zaXplKCkpOworICBFWFBFQ1RfRVEo
IjEiLCByZXN1bHRbMF0pOworICBFWFBFQ1RfRVEoIidhJyAoOTcsIDB4NjEpIiwgcmVzdWx0WzFd
KTsKK30KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0
V2l0aFN0ZCwgUHJpbnRzVGVyc2VseSkgeworICBjb25zdCBpbnQgbiA9IDE7CisgIFN0cmluZ3Mg
cmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAorICAgICAg
OjpzdGQ6OnR1cGxlPGNvbnN0IGludCYsIGNvbnN0IGNoYXIqPihuLCAiYSIpKTsKKyAgQVNTRVJU
X0VRKDJ1LCByZXN1bHQuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKCIxIiwgcmVzdWx0WzBdKTsKKyAg
RVhQRUNUX0VRKCJcImFcIiIsIHJlc3VsdFsxXSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFT
X1NURF9UVVBMRV8KKworfSAgLy8gbmFtZXNwYWNlIGd0ZXN0X3ByaW50ZXJzX3Rlc3QKK30gIC8v
IG5hbWVzcGFjZSB0ZXN0aW5nCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0LmNjCmluZGV4IDVhM2U5MTk2YWI5NmU0MTNmZWYzMzA3
NTI0YjE4YzkyZjVlZGFkYjAuLmNhOGJhOTMzYWVmOTAxNzcwYWNhNzhlMWU0NGI5YmRlNTBlODY1
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdGVzdC1w
YXJ0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10ZXN0
LXBhcnRfdGVzdC5jYwpAQCAtMzAsOSArMzAsOSBAQAogLy8gQXV0aG9yOiBtaGV1bGVAZ29vZ2xl
LmNvbSAoTWFya3VzIEhldWxlKQogLy8KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXRlc3QtcGFy
dC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oIgogCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiB1c2luZyB0ZXN0aW5nOjpN
ZXNzYWdlOwogdXNpbmcgdGVzdGluZzo6VGVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHVwbGVfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3QtdHVwbGVfdGVzdC5jYwppbmRleCA1MzJmNzBiM2Q0ZTkwNzBmNDU5Njg2
MjViM2ZmOTdjMzk4NDc1N2Q3Li5iZmFhM2UwYWM0YjIyOTBkOWZhMmI2OTQ3YWQ4MDlmMTBiOGQy
NDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR1cGxl
X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10dXBsZV90
ZXN0LmNjCkBAIC0yOSw5ICsyOSw5IEBACiAvLwogLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAo
WmhhbnlvbmcgV2FuKQogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaD4K
KyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oIgogI2luY2x1ZGUgPHV0aWxp
dHk+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgog
CiBuYW1lc3BhY2UgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MKaW5kZXggNzlhOGE4N2RjZmRiZGU1M2MxZTBkOGM2
ZDExYTk4NjkyMmIwMmZmOC4uYzI4NDcwMGIwMjBiNTI0OTE3NWJmY2ZhM2E1YmFlODVlNmYzOGFh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10
ZXN0Ml90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlw
ZWQtdGVzdDJfdGVzdC5jYwpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAog
I2luY2x1ZGUgInRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgiCi0jaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAjaWYgR1RFU1RfSEFTX1RZUEVE
X1RFU1RfUAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
LXR5cGVkLXRlc3RfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Qt
dHlwZWQtdGVzdF90ZXN0LmNjCmluZGV4IGYyYzM5NzIzMTAxNzc5ZTc3MTg0N2Q1OTJkOWZhYmI1
NmYzYjQ1YzYuLjkzNjI4YmEwODBjY2VlYTNkNjM1NTY2ODM0NzMwZDA0NGQ1YjQ1MDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90
ZXN0LmNjCkBAIC0yOSwxMSArMjksMTIgQEAKIC8vCiAvLyBBdXRob3I6IHdhbkBnb29nbGUuY29t
IChaaGFueW9uZyBXYW4pCiAKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5o
IgorCiAjaW5jbHVkZSA8c2V0PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgInRlc3Qv
Z3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgiCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgogCiB1c2luZyB0ZXN0aW5nOjpUZXN0OwogCkBAIC0zNDMsNiAr
MzQ0LDI1IEBAIFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKE51bWVyaWNUZXN0LAogdHlwZWRl
ZiBUeXBlczxpbnQsIGRvdWJsZT4gTnVtZXJpY1R5cGVzOwogSU5TVEFOVElBVEVfVFlQRURfVEVT
VF9DQVNFX1AoTXksIE51bWVyaWNUZXN0LCBOdW1lcmljVHlwZXMpOwogCitzdGF0aWMgY29uc3Qg
Y2hhciogR2V0VGVzdE5hbWUoKSB7CisgIHJldHVybiB0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5z
dGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKS0+bmFtZSgpOworfQorLy8gVGVzdCB0aGUgc3Ry
aXBwaW5nIG9mIHNwYWNlIGZyb20gdGVzdCBuYW1lcwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIFRyaW1tZWRUZXN0IDogcHVibGljIFRlc3QgeyB9OworVFlQRURfVEVTVF9DQVNFX1AoVHJp
bW1lZFRlc3QpOworVFlQRURfVEVTVF9QKFRyaW1tZWRUZXN0LCBUZXN0MSkgeyBFWFBFQ1RfU1RS
RVEoIlRlc3QxIiwgR2V0VGVzdE5hbWUoKSk7IH0KK1RZUEVEX1RFU1RfUChUcmltbWVkVGVzdCwg
VGVzdDIpIHsgRVhQRUNUX1NUUkVRKCJUZXN0MiIsIEdldFRlc3ROYW1lKCkpOyB9CitUWVBFRF9U
RVNUX1AoVHJpbW1lZFRlc3QsIFRlc3QzKSB7IEVYUEVDVF9TVFJFUSgiVGVzdDMiLCBHZXRUZXN0
TmFtZSgpKTsgfQorVFlQRURfVEVTVF9QKFRyaW1tZWRUZXN0LCBUZXN0NCkgeyBFWFBFQ1RfU1RS
RVEoIlRlc3Q0IiwgR2V0VGVzdE5hbWUoKSk7IH0KK1RZUEVEX1RFU1RfUChUcmltbWVkVGVzdCwg
VGVzdDUpIHsgRVhQRUNUX1NUUkVRKCJUZXN0NSIsIEdldFRlc3ROYW1lKCkpOyB9CitSRUdJU1RF
Ul9UWVBFRF9URVNUX0NBU0VfUCgKKyAgICBUcmltbWVkVGVzdCwKKyAgICBUZXN0MSwgVGVzdDIs
VGVzdDMgLCBUZXN0NCAsVGVzdDUgKTsgIC8vIE5PTElOVAordGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMj4gc3RydWN0IE15UGFpciB7fTsKKy8vIEJlIHN1cmUgdG8gdHJ5IGEgdHlw
ZSB3aXRoIGEgY29tbWEgaW4gaXRzIG5hbWUganVzdCBpbiBjYXNlIGl0IG1hdHRlcnMuCit0eXBl
ZGVmIFR5cGVzPGludCwgZG91YmxlLCBNeVBhaXI8aW50LCBpbnQ+ID4gVHJpbVR5cGVzOworSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIFRyaW1tZWRUZXN0LCBUcmltVHlwZXMpOwor
CiB9ICAvLyBuYW1lc3BhY2UgbGlicmFyeTIKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURf
VEVTVF9QCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5
cGVkLXRlc3RfdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBl
ZC10ZXN0X3Rlc3QuaAppbmRleCA0MGRmZWFjNmUwMWQ5N2VjZjdmZWJiODY1ZmNlNjY4NDhiYThl
OGRiLi40MWQ3NTcwNGNmODRkOGJkMDU0OTBkOTkzNGI2NTIyMTMxNjllOGZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgK
QEAgLTMyLDcgKzMyLDcgQEAKICNpZm5kZWYgR1RFU1RfVEVTVF9HVEVTVF9UWVBFRF9URVNUX1RF
U1RfSF8KICNkZWZpbmUgR1RFU1RfVEVTVF9HVEVTVF9UWVBFRF9URVNUX1RFU1RfSF8KIAotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2lmIEdU
RVNUX0hBU19UWVBFRF9URVNUX1AKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2MKaW5kZXggN2UwZjhmODA0NWQ3MWMw
MTVkMTI5NGZmZWY0Y2E1NDVkZGM1NTFmOS4uYjFmNTE2ODhhZjc1MzNiNDMxNjcxNDljYTI0ZTlk
Y2Q2YzU1ZDViNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dC11bml0dGVzdC1hcGlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjCkBAIC0zMyw3ICszMyw3IEBACiAvLyBUaGlzIGZp
bGUgY29udGFpbnMgdGVzdHMgdmVyaWZ5aW5nIGNvcnJlY3RuZXNzIG9mIGRhdGEgcHJvdmlkZWQg
dmlhCiAvLyBVbml0VGVzdCdzIHB1YmxpYyBtZXRob2RzLgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAjaW5jbHVkZSA8c3RyaW5nLmg+ICAv
LyBGb3Igc3RyY21wLgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTU0LDcgKzU0LDcgQEAgY2xh
c3MgVW5pdFRlc3RIZWxwZXIgewogIHB1YmxpYzoKICAgLy8gUmV0dXJucyB0aGUgYXJyYXkgb2Yg
cG9pbnRlcnMgdG8gYWxsIHRlc3QgY2FzZXMgc29ydGVkIGJ5IHRoZSB0ZXN0IGNhc2UKICAgLy8g
bmFtZS4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZSBhcnJheS4K
LSAgc3RhdGljIFRlc3RDYXNlIGNvbnN0KiogY29uc3QgR2V0U29ydGVkVGVzdENhc2VzKCkgewor
ICBzdGF0aWMgVGVzdENhc2UgY29uc3QqKiBHZXRTb3J0ZWRUZXN0Q2FzZXMoKSB7CiAgICAgVW5p
dFRlc3QmIHVuaXRfdGVzdCA9ICpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKTsKICAgICBUZXN0Q2Fz
ZSBjb25zdCoqIGNvbnN0IHRlc3RfY2FzZXMgPQogICAgICAgICBuZXcgY29uc3QgVGVzdENhc2Uq
W3VuaXRfdGVzdC50b3RhbF90ZXN0X2Nhc2VfY291bnQoKV07CkBAIC04Myw3ICs4Myw3IEBAIGNs
YXNzIFVuaXRUZXN0SGVscGVyIHsKICAgLy8gUmV0dXJucyB0aGUgYXJyYXkgb2YgcG9pbnRlcnMg
dG8gYWxsIHRlc3RzIGluIGEgcGFydGljdWxhciB0ZXN0IGNhc2UKICAgLy8gc29ydGVkIGJ5IHRo
ZSB0ZXN0IG5hbWUuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUK
ICAgLy8gYXJyYXkuCi0gIHN0YXRpYyBUZXN0SW5mbyBjb25zdCoqIGNvbnN0IEdldFNvcnRlZFRl
c3RzKGNvbnN0IFRlc3RDYXNlKiB0ZXN0X2Nhc2UpIHsKKyAgc3RhdGljIFRlc3RJbmZvIGNvbnN0
KiogR2V0U29ydGVkVGVzdHMoY29uc3QgVGVzdENhc2UqIHRlc3RfY2FzZSkgewogICAgIFRlc3RJ
bmZvIGNvbnN0KiogY29uc3QgdGVzdHMgPQogICAgICAgICBuZXcgY29uc3QgVGVzdEluZm8qW3Rl
c3RfY2FzZS0+dG90YWxfdGVzdF9jb3VudCgpXTsKIApAQCAtMTAzLDEyICsxMDMsNiBAQCBUWVBF
RF9URVNUKFRlc3RDYXNlV2l0aENvbW1lbnRUZXN0LCBEdW1teSkge30KIAogY29uc3QgaW50IGtU
eXBlZFRlc3RDYXNlcyA9IDE7CiBjb25zdCBpbnQga1R5cGVkVGVzdHMgPSAxOwotCi1TdHJpbmcg
R2V0RXhwZWN0ZWRUZXN0Q2FzZUNvbW1lbnQoKSB7Ci0gIE1lc3NhZ2UgY29tbWVudDsKLSAgY29t
bWVudCA8PCAiVHlwZVBhcmFtID0gIiA8PCBHZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIoKTsKLSAg
cmV0dXJuIGNvbW1lbnQuR2V0U3RyaW5nKCk7Ci19CiAjZWxzZQogY29uc3QgaW50IGtUeXBlZFRl
c3RDYXNlcyA9IDA7CiBjb25zdCBpbnQga1R5cGVkVGVzdHMgPSAwOwpAQCAtMTQzLDEyICsxMzcs
MTkgQEAgVEVTVChBcGlUZXN0LCBVbml0VGVzdEltbXV0YWJsZUFjY2Vzc29yc1dvcmspIHsKICAg
UmVjb3JkUHJvcGVydHkoImtleSIsICJ2YWx1ZSIpOwogfQogCitBc3NlcnRpb25SZXN1bHQgSXNO
dWxsKGNvbnN0IGNoYXIqIHN0cikgeworICBpZiAoc3RyICE9IE5VTEwpIHsKKyAgICByZXR1cm4g
dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJhcmd1bWVudCBpcyAiIDw8IHN0cjsKKyAg
fQorICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOworfQorCiBURVNUKEFwaVRlc3QsIFRlc3RD
YXNlSW1tdXRhYmxlQWNjZXNzb3JzV29yaykgewogICBjb25zdCBUZXN0Q2FzZSogdGVzdF9jYXNl
ID0gVW5pdFRlc3RIZWxwZXI6OkZpbmRUZXN0Q2FzZSgiQXBpVGVzdCIpOwogICBBU1NFUlRfVFJV
RSh0ZXN0X2Nhc2UgIT0gTlVMTCk7CiAKICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdF9j
YXNlLT5uYW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RfY2FzZS0+Y29tbWVudCgpKTsK
KyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVD
VF9UUlVFKHRlc3RfY2FzZS0+c2hvdWxkX3J1bigpKTsKICAgRVhQRUNUX0VRKDEsIHRlc3RfY2Fz
ZS0+ZGlzYWJsZWRfdGVzdF9jb3VudCgpKTsKICAgRVhQRUNUX0VRKDMsIHRlc3RfY2FzZS0+dGVz
dF90b19ydW5fY291bnQoKSk7CkBAIC0xNTgsMjYgKzE1OSwyNiBAQCBURVNUKEFwaVRlc3QsIFRl
c3RDYXNlSW1tdXRhYmxlQWNjZXNzb3JzV29yaykgewogCiAgIEVYUEVDVF9TVFJFUSgiRElTQUJM
RURfRHVtbXkxIiwgdGVzdHNbMF0tPm5hbWUoKSk7CiAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIs
IHRlc3RzWzBdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1sw
XS0+Y29tbWVudCgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1swXS0+dGVzdF9jYXNlX2Nv
bW1lbnQoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1swXS0+dmFsdWVfcGFyYW0oKSkp
OworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMF0tPnR5cGVfcGFyYW0oKSkpOwogICBFWFBF
Q1RfRkFMU0UodGVzdHNbMF0tPnNob3VsZF9ydW4oKSk7CiAKICAgRVhQRUNUX1NUUkVRKCJUZXN0
Q2FzZURpc2FibGVkQWNjZXNzb3JzV29yayIsIHRlc3RzWzFdLT5uYW1lKCkpOwogICBFWFBFQ1Rf
U1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1sxXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9T
VFJFUSgiIiwgdGVzdHNbMV0tPmNvbW1lbnQoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNb
MV0tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMV0t
PnZhbHVlX3BhcmFtKCkpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzFdLT50eXBlX3Bh
cmFtKCkpKTsKICAgRVhQRUNUX1RSVUUodGVzdHNbMV0tPnNob3VsZF9ydW4oKSk7CiAKICAgRVhQ
RUNUX1NUUkVRKCJUZXN0Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dvcmsiLCB0ZXN0c1syXS0+bmFt
ZSgpKTsKICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbMl0tPnRlc3RfY2FzZV9uYW1l
KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzJdLT5jb21tZW50KCkpOwotICBFWFBFQ1Rf
U1RSRVEoIiIsIHRlc3RzWzJdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgRVhQRUNUX1RSVUUo
SXNOdWxsKHRlc3RzWzJdLT52YWx1ZV9wYXJhbSgpKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0
ZXN0c1syXS0+dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVDVF9UUlVFKHRlc3RzWzJdLT5zaG91bGRf
cnVuKCkpOwogCiAgIEVYUEVDVF9TVFJFUSgiVW5pdFRlc3RJbW11dGFibGVBY2Nlc3NvcnNXb3Jr
IiwgdGVzdHNbM10tPm5hbWUoKSk7CiAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzNd
LT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1szXS0+Y29tbWVu
dCgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1szXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7
CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1szXS0+dmFsdWVfcGFyYW0oKSkpOworICBFWFBF
Q1RfVFJVRShJc051bGwodGVzdHNbM10tPnR5cGVfcGFyYW0oKSkpOwogICBFWFBFQ1RfVFJVRSh0
ZXN0c1szXS0+c2hvdWxkX3J1bigpKTsKIAogICBkZWxldGVbXSB0ZXN0czsKQEAgLTE4OCw3ICsx
ODksNyBAQCBURVNUKEFwaVRlc3QsIFRlc3RDYXNlSW1tdXRhYmxlQWNjZXNzb3JzV29yaykgewog
ICBBU1NFUlRfVFJVRSh0ZXN0X2Nhc2UgIT0gTlVMTCk7CiAKICAgRVhQRUNUX1NUUkVRKCJUZXN0
Q2FzZVdpdGhDb21tZW50VGVzdC8wIiwgdGVzdF9jYXNlLT5uYW1lKCkpOwotICBFWFBFQ1RfU1RS
RVEoR2V0RXhwZWN0ZWRUZXN0Q2FzZUNvbW1lbnQoKS5jX3N0cigpLCB0ZXN0X2Nhc2UtPmNvbW1l
bnQoKSk7CisgIEVYUEVDVF9TVFJFUShHZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIoKSwgdGVzdF9j
YXNlLT50eXBlX3BhcmFtKCkpOwogICBFWFBFQ1RfVFJVRSh0ZXN0X2Nhc2UtPnNob3VsZF9ydW4o
KSk7CiAgIEVYUEVDVF9FUSgwLCB0ZXN0X2Nhc2UtPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAg
IEVYUEVDVF9FUSgxLCB0ZXN0X2Nhc2UtPnRlc3RfdG9fcnVuX2NvdW50KCkpOwpAQCAtMTk4LDkg
KzE5OSw4IEBAIFRFU1QoQXBpVGVzdCwgVGVzdENhc2VJbW11dGFibGVBY2Nlc3NvcnNXb3JrKSB7
CiAKICAgRVhQRUNUX1NUUkVRKCJEdW1teSIsIHRlc3RzWzBdLT5uYW1lKCkpOwogICBFWFBFQ1Rf
U1RSRVEoIlRlc3RDYXNlV2l0aENvbW1lbnRUZXN0LzAiLCB0ZXN0c1swXS0+dGVzdF9jYXNlX25h
bWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMF0tPmNvbW1lbnQoKSk7Ci0gIEVYUEVD
VF9TVFJFUShHZXRFeHBlY3RlZFRlc3RDYXNlQ29tbWVudCgpLmNfc3RyKCksCi0gICAgICAgICAg
ICAgICB0ZXN0c1swXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVs
bCh0ZXN0c1swXS0+dmFsdWVfcGFyYW0oKSkpOworICBFWFBFQ1RfU1RSRVEoR2V0VHlwZU5hbWU8
aW50PigpLmNfc3RyKCksIHRlc3RzWzBdLT50eXBlX3BhcmFtKCkpOwogICBFWFBFQ1RfVFJVRSh0
ZXN0c1swXS0+c2hvdWxkX3J1bigpKTsKIAogICBkZWxldGVbXSB0ZXN0czsKQEAgLTIxMiw3ICsy
MTIsNyBAQCBURVNUKEFwaVRlc3QsIFRlc3RDYXNlRGlzYWJsZWRBY2Nlc3NvcnNXb3JrKSB7CiAg
IEFTU0VSVF9UUlVFKHRlc3RfY2FzZSAhPSBOVUxMKTsKIAogICBFWFBFQ1RfU1RSRVEoIkRJU0FC
TEVEX1Rlc3QiLCB0ZXN0X2Nhc2UtPm5hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdF9j
YXNlLT5jb21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdF9jYXNlLT50eXBlX3Bh
cmFtKCkpKTsKICAgRVhQRUNUX0ZBTFNFKHRlc3RfY2FzZS0+c2hvdWxkX3J1bigpKTsKICAgRVhQ
RUNUX0VRKDEsIHRlc3RfY2FzZS0+ZGlzYWJsZWRfdGVzdF9jb3VudCgpKTsKICAgRVhQRUNUX0VR
KDAsIHRlc3RfY2FzZS0+dGVzdF90b19ydW5fY291bnQoKSk7CkBAIC0yMjEsOCArMjIxLDggQEAg
VEVTVChBcGlUZXN0LCBUZXN0Q2FzZURpc2FibGVkQWNjZXNzb3JzV29yaykgewogICBjb25zdCBU
ZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0gdGVzdF9jYXNlLT5HZXRUZXN0SW5mbygwKTsKICAg
RVhQRUNUX1NUUkVRKCJEdW1teTIiLCB0ZXN0X2luZm8tPm5hbWUoKSk7CiAgIEVYUEVDVF9TVFJF
USgiRElTQUJMRURfVGVzdCIsIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVD
VF9TVFJFUSgiIiwgdGVzdF9pbmZvLT5jb21tZW50KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRl
c3RfaW5mby0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0
X2luZm8tPnZhbHVlX3BhcmFtKCkpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfaW5mby0+
dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVDVF9GQUxTRSh0ZXN0X2luZm8tPnNob3VsZF9ydW4oKSk7
CiB9CiAKQEAgLTI0Nyw3ICsyNDcsNyBAQCBjbGFzcyBGaW5hbFN1Y2Nlc3NDaGVja2VyIDogcHVi
bGljIEVudmlyb25tZW50IHsKICAgICBjb25zdCBUZXN0Q2FzZSoqIGNvbnN0IHRlc3RfY2FzZXMg
PSBVbml0VGVzdEhlbHBlcjo6R2V0U29ydGVkVGVzdENhc2VzKCk7CiAKICAgICBFWFBFQ1RfU1RS
RVEoIkFwaVRlc3QiLCB0ZXN0X2Nhc2VzWzBdLT5uYW1lKCkpOwotICAgIEVYUEVDVF9TVFJFUSgi
IiwgdGVzdF9jYXNlc1swXS0+Y29tbWVudCgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVz
dF9jYXNlc1swXS0+dHlwZV9wYXJhbSgpKSk7CiAgICAgRVhQRUNUX1RSVUUodGVzdF9jYXNlc1sw
XS0+c2hvdWxkX3J1bigpKTsKICAgICBFWFBFQ1RfRVEoMSwgdGVzdF9jYXNlc1swXS0+ZGlzYWJs
ZWRfdGVzdF9jb3VudCgpKTsKICAgICBBU1NFUlRfRVEoNCwgdGVzdF9jYXNlc1swXS0+dG90YWxf
dGVzdF9jb3VudCgpKTsKQEAgLTI1Nyw3ICsyNTcsNyBAQCBjbGFzcyBGaW5hbFN1Y2Nlc3NDaGVj
a2VyIDogcHVibGljIEVudmlyb25tZW50IHsKICAgICBFWFBFQ1RfRkFMU0UodGVzdF9jYXNlc1sw
XS0+RmFpbGVkKCkpOwogCiAgICAgRVhQRUNUX1NUUkVRKCJESVNBQkxFRF9UZXN0IiwgdGVzdF9j
YXNlc1sxXS0+bmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RfY2FzZXNbMV0tPmNv
bW1lbnQoKSk7CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfY2FzZXNbMV0tPnR5cGVfcGFy
YW0oKSkpOwogICAgIEVYUEVDVF9GQUxTRSh0ZXN0X2Nhc2VzWzFdLT5zaG91bGRfcnVuKCkpOwog
ICAgIEVYUEVDVF9FUSgxLCB0ZXN0X2Nhc2VzWzFdLT5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOwog
ICAgIEFTU0VSVF9FUSgxLCB0ZXN0X2Nhc2VzWzFdLT50b3RhbF90ZXN0X2NvdW50KCkpOwpAQCAt
MjY2LDggKzI2Niw3IEBAIGNsYXNzIEZpbmFsU3VjY2Vzc0NoZWNrZXIgOiBwdWJsaWMgRW52aXJv
bm1lbnQgewogCiAjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKICAgICBFWFBFQ1RfU1RSRVEoIlRl
c3RDYXNlV2l0aENvbW1lbnRUZXN0LzAiLCB0ZXN0X2Nhc2VzWzJdLT5uYW1lKCkpOwotICAgIEVY
UEVDVF9TVFJFUShHZXRFeHBlY3RlZFRlc3RDYXNlQ29tbWVudCgpLmNfc3RyKCksCi0gICAgICAg
ICAgICAgICAgIHRlc3RfY2FzZXNbMl0tPmNvbW1lbnQoKSk7CisgICAgRVhQRUNUX1NUUkVRKEdl
dFR5cGVOYW1lPGludD4oKS5jX3N0cigpLCB0ZXN0X2Nhc2VzWzJdLT50eXBlX3BhcmFtKCkpOwog
ICAgIEVYUEVDVF9UUlVFKHRlc3RfY2FzZXNbMl0tPnNob3VsZF9ydW4oKSk7CiAgICAgRVhQRUNU
X0VRKDAsIHRlc3RfY2FzZXNbMl0tPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgICAgQVNTRVJU
X0VRKDEsIHRlc3RfY2FzZXNbMl0tPnRvdGFsX3Rlc3RfY291bnQoKSk7CkBAIC0yODUsMjQgKzI4
NCwyNCBAQCBjbGFzcyBGaW5hbFN1Y2Nlc3NDaGVja2VyIDogcHVibGljIEVudmlyb25tZW50IHsK
IAogICAgIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VEaXNhYmxlZEFjY2Vzc29yc1dvcmsiLCB0ZXN0
c1sxXS0+bmFtZSgpKTsKICAgICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1sxXS0+dGVz
dF9jYXNlX25hbWUoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1sxXS0+Y29tbWVudCgp
KTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzFdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsK
KyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMV0tPnZhbHVlX3BhcmFtKCkpKTsKKyAgICBF
WFBFQ1RfVFJVRShJc051bGwodGVzdHNbMV0tPnR5cGVfcGFyYW0oKSkpOwogICAgIEVYUEVDVF9U
UlVFKHRlc3RzWzFdLT5zaG91bGRfcnVuKCkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzFdLT5y
ZXN1bHQoKS0+UGFzc2VkKCkpOwogICAgIEVYUEVDVF9FUSgwLCB0ZXN0c1sxXS0+cmVzdWx0KCkt
PnRlc3RfcHJvcGVydHlfY291bnQoKSk7CiAKICAgICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlSW1t
dXRhYmxlQWNjZXNzb3JzV29yayIsIHRlc3RzWzJdLT5uYW1lKCkpOwogICAgIEVYUEVDVF9TVFJF
USgiQXBpVGVzdCIsIHRlc3RzWzJdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RS
RVEoIiIsIHRlc3RzWzJdLT5jb21tZW50KCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNb
Ml0tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1sy
XS0+dmFsdWVfcGFyYW0oKSkpOworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1syXS0+dHlw
ZV9wYXJhbSgpKSk7CiAgICAgRVhQRUNUX1RSVUUodGVzdHNbMl0tPnNob3VsZF9ydW4oKSk7CiAg
ICAgRVhQRUNUX1RSVUUodGVzdHNbMl0tPnJlc3VsdCgpLT5QYXNzZWQoKSk7CiAgICAgRVhQRUNU
X0VRKDAsIHRlc3RzWzJdLT5yZXN1bHQoKS0+dGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKIAogICAg
IEVYUEVDVF9TVFJFUSgiVW5pdFRlc3RJbW11dGFibGVBY2Nlc3NvcnNXb3JrIiwgdGVzdHNbM10t
Pm5hbWUoKSk7CiAgICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbM10tPnRlc3RfY2Fz
ZV9uYW1lKCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbM10tPmNvbW1lbnQoKSk7Ci0g
ICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1szXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgICAg
RVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzNdLT52YWx1ZV9wYXJhbSgpKSk7CisgICAgRVhQRUNU
X1RSVUUoSXNOdWxsKHRlc3RzWzNdLT50eXBlX3BhcmFtKCkpKTsKICAgICBFWFBFQ1RfVFJVRSh0
ZXN0c1szXS0+c2hvdWxkX3J1bigpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0c1szXS0+cmVzdWx0
KCktPlBhc3NlZCgpKTsKICAgICBFWFBFQ1RfRVEoMSwgdGVzdHNbM10tPnJlc3VsdCgpLT50ZXN0
X3Byb3BlcnR5X2NvdW50KCkpOwpAQCAtMzE4LDkgKzMxNyw4IEBAIGNsYXNzIEZpbmFsU3VjY2Vz
c0NoZWNrZXIgOiBwdWJsaWMgRW52aXJvbm1lbnQgewogCiAgICAgRVhQRUNUX1NUUkVRKCJEdW1t
eSIsIHRlc3RzWzBdLT5uYW1lKCkpOwogICAgIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VXaXRoQ29t
bWVudFRlc3QvMCIsIHRlc3RzWzBdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RS
RVEoIiIsIHRlc3RzWzBdLT5jb21tZW50KCkpOwotICAgIEVYUEVDVF9TVFJFUShHZXRFeHBlY3Rl
ZFRlc3RDYXNlQ29tbWVudCgpLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgIHRlc3RzWzBdLT50
ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMF0tPnZh
bHVlX3BhcmFtKCkpKTsKKyAgICBFWFBFQ1RfU1RSRVEoR2V0VHlwZU5hbWU8aW50PigpLmNfc3Ry
KCksIHRlc3RzWzBdLT50eXBlX3BhcmFtKCkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzBdLT5z
aG91bGRfcnVuKCkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzBdLT5yZXN1bHQoKS0+UGFzc2Vk
KCkpOwogICAgIEVYUEVDVF9FUSgwLCB0ZXN0c1swXS0+cmVzdWx0KCktPnRlc3RfcHJvcGVydHlf
Y291bnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X2FsbF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9hbGxfdGVz
dC5jYwppbmRleCBlMWVkYjA4ZTMzYTE4YzIzOTExNWRhZDVlNGEwZDZmYjYzMmRiYjE3Li45NTVh
YTYyODI4NDgzM2RiNmM0ZGU4OGEyMGFlZDYzZjZmMThkY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2FsbF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYWxsX3Rlc3QuY2MKQEAgLTQ1LDQgKzQ1LDMgQEAKICNp
bmNsdWRlICJ0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MiCiAjaW5jbHVkZSAidGVzdC9n
dGVzdF91bml0dGVzdC5jYyIKICNpbmNsdWRlICJ0ZXN0L3Byb2R1Y3Rpb24uY2MiCi0jaW5jbHVk
ZSAic3JjL2d0ZXN0X21haW4uY2MiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkKaW5kZXgg
YzgxOTE4MzMxMjI3NWRlY2EwNWM3NjMxODYwNDA0NzFiZmY0OWYzMy4uNzhmM2UwZjUzYjc5MWNl
MjI4YTdhZGYwMzA4NjZiYjI4ODNiOWZlYSAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0LnB5CisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdC5w
eQpAQCAtNjYsMjEgKzY2LDE1IEBACiAgICAgJ2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRl
c3RfJykKIAogCi0jIFV0aWxpdGllcy4KLQotCi1lbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkK
LQotCi1kZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToKLSAgIiIiU2V0cyBhbiBlbnZpcm9u
bWVudCB2YXJpYWJsZSB0byBhIGdpdmVuIHZhbHVlOyB1bnNldHMgaXQgd2hlbiB0aGUKLSAgZ2l2
ZW4gdmFsdWUgaXMgTm9uZS4KLSAgIiIiCi0KLSAgaWYgdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAg
ZW52aXJvbltlbnZfdmFyXSA9IHZhbHVlCi0gIGVsaWYgZW52X3ZhciBpbiBlbnZpcm9uOgotICAg
IGRlbCBlbnZpcm9uW2Vudl92YXJdCitlbnZpcm9uID0gZ3Rlc3RfdGVzdF91dGlscy5lbnZpcm9u
CitTZXRFbnZWYXIgPSBndGVzdF90ZXN0X3V0aWxzLlNldEVudlZhcgorCisjIFRlc3RzIGluIHRo
aXMgZmlsZSBydW4gYSBHb29nbGUtVGVzdC1iYXNlZCB0ZXN0IHByb2dyYW0gYW5kIGV4cGVjdCBp
dAorIyB0byB0ZXJtaW5hdGUgcHJlbWF0dXJlbHkuICBUaGVyZWZvcmUgdGhleSBhcmUgaW5jb21w
YXRpYmxlIHdpdGgKKyMgdGhlIHByZW1hdHVyZS1leGl0LWZpbGUgcHJvdG9jb2wgYnkgZGVzaWdu
LiAgVW5zZXQgdGhlCisjIHByZW1hdHVyZS1leGl0IGZpbGVwYXRoIHRvIHByZXZlbnQgR29vZ2xl
IFRlc3QgZnJvbSBjcmVhdGluZworIyB0aGUgZmlsZS4KK1NldEVudlZhcihndGVzdF90ZXN0X3V0
aWxzLlBSRU1BVFVSRV9FWElUX0ZJTEVfRU5WX1ZBUiwgTm9uZSkKIAogCiBkZWYgUnVuKGNvbW1h
bmQpOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9icmVh
a19vbl9mYWlsdXJlX3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8uY2MKaW5kZXggZDI4ZDFkM2RhZDQ2Yjhm
ZGYzYzM0MDk2N2RiZmNhODUyZjU5ZTRhMS4uZGQwNzQ3OGMwNzU3Yzc0Y2Q1NDhhOGYzZTkyNzQz
NWE2ZTQyOTc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0Xy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfLmNjCkBAIC0zOSwxMSAr
MzksMTEgQEAKIC8vIFRoaXMgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1
bml0IHRlc3QuICBJdCBpcwogLy8gZXhwZWN0ZWQgdG8gZmFpbC4gIERvbid0IHJ1biBpdCBkaXJl
Y3RseS4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKIAogI2lmIEdURVNUX09TX1dJTkRPV1MKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVk
ZSA8c3RkbGliLmg+CisjIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyMgaW5jbHVkZSA8c3RkbGliLmg+
CiAjZW5kaWYKIAogbmFtZXNwYWNlIHsKQEAgLTY5LDcgKzY5LDggQEAgaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIgKiphcmd2KSB7CiAgIC8vIGEgZ2VuZXJhbCBwcm90ZWN0aW9uIGZhdWx0IChzZWdt
ZW50IHZpb2xhdGlvbikuCiAgIFNldEVycm9yTW9kZShTRU1fTk9HUEZBVUxURVJST1JCT1ggfCBT
RU1fRkFJTENSSVRJQ0FMRVJST1JTKTsKIAotI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQor
IyBpZiBHVEVTVF9IQVNfU0VIICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCiAgIC8vIFRo
ZSBkZWZhdWx0IHVuaGFuZGxlZCBleGNlcHRpb24gZmlsdGVyIGRvZXMgbm90IGFsd2F5cyBleGl0
CiAgIC8vIHdpdGggdGhlIGV4Y2VwdGlvbiBjb2RlIGFzIGV4aXQgY29kZSAtIGZvciBleGFtcGxl
IGl0IGV4aXRzIHdpdGgKICAgLy8gMCBmb3IgRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT04gYW5k
IDEgZm9yIEVYQ0VQVElPTl9CUkVBS1BPSU5UCkBAIC03Nyw3ICs3OCw4IEBAIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyICoqYXJndikgewogICAvLyBmaWx0ZXIgd2hpY2ggYWx3YXlzIGV4aXRzIHdp
dGggdGhlIGV4Y2VwdGlvbiBjb2RlIGZvciB1bmhhbmRsZWQKICAgLy8gZXhjZXB0aW9ucy4KICAg
U2V0VW5oYW5kbGVkRXhjZXB0aW9uRmlsdGVyKEV4aXRXaXRoRXhjZXB0aW9uQ29kZSk7Ci0jZW5k
aWYKKworIyBlbmRpZgogI2VuZGlmCiAKICAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2Ms
IGFyZ3YpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9j
YXRjaF9leGNlcHRpb25zX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNmZjMjJmZDFmZTVjMGM0
ZWJkYzhkZTdiNDIyMzZhMTY2OWIwZDA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9jYXRjaF9leGNlcHRpb25zX3Rlc3QucHkKQEAgLTAsMCAr
MSwyMzcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMCBHb29n
bGUgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlRl
c3RzIEdvb2dsZSBUZXN0J3MgZXhjZXB0aW9uIGNhdGNoaW5nIGJlaGF2aW9yLgorCitUaGlzIHNj
cmlwdCBpbnZva2VzIGd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfdGVzdF8gYW5kCitndGVzdF9jYXRj
aF9leGNlcHRpb25zX2V4X3Rlc3RfIChwcm9ncmFtcyB3cml0dGVuIHdpdGgKK0dvb2dsZSBUZXN0
KSBhbmQgdmVyaWZpZXMgdGhlaXIgb3V0cHV0LgorIiIiCisKK19fYXV0aG9yX18gPSAndmxhZGxA
Z29vZ2xlLmNvbSAoVmxhZCBMb3NldiknCisKK2ltcG9ydCBvcworCitpbXBvcnQgZ3Rlc3RfdGVz
dF91dGlscworCisjIENvbnN0YW50cy4KK0ZMQUdfUFJFRklYID0gJy0tZ3Rlc3RfJworTElTVF9U
RVNUU19GTEFHID0gRkxBR19QUkVGSVggKyAnbGlzdF90ZXN0cycKK05PX0NBVENIX0VYQ0VQVElP
TlNfRkxBRyA9IEZMQUdfUFJFRklYICsgJ2NhdGNoX2V4Y2VwdGlvbnM9MCcKK0ZJTFRFUl9GTEFH
ID0gRkxBR19QUkVGSVggKyAnZmlsdGVyJworCisjIFBhdGggdG8gdGhlIGd0ZXN0X2NhdGNoX2V4
Y2VwdGlvbnNfZXhfdGVzdF8gYmluYXJ5LCBjb21waWxlZCB3aXRoCisjIGV4Y2VwdGlvbnMgZW5h
YmxlZC4KK0VYX0VYRV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBh
dGgoCisgICAgJ2d0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfZXhfdGVzdF8nKQorCisjIFBhdGggdG8g
dGhlIGd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfdGVzdF8gYmluYXJ5LCBjb21waWxlZCB3aXRoCisj
IGV4Y2VwdGlvbnMgZGlzYWJsZWQuCitFWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVz
dEV4ZWN1dGFibGVQYXRoKAorICAgICdndGVzdF9jYXRjaF9leGNlcHRpb25zX25vX2V4X3Rlc3Rf
JykKKworZW52aXJvbiA9IGd0ZXN0X3Rlc3RfdXRpbHMuZW52aXJvbgorU2V0RW52VmFyID0gZ3Rl
c3RfdGVzdF91dGlscy5TZXRFbnZWYXIKKworIyBUZXN0cyBpbiB0aGlzIGZpbGUgcnVuIGEgR29v
Z2xlLVRlc3QtYmFzZWQgdGVzdCBwcm9ncmFtIGFuZCBleHBlY3QgaXQKKyMgdG8gdGVybWluYXRl
IHByZW1hdHVyZWx5LiAgVGhlcmVmb3JlIHRoZXkgYXJlIGluY29tcGF0aWJsZSB3aXRoCisjIHRo
ZSBwcmVtYXR1cmUtZXhpdC1maWxlIHByb3RvY29sIGJ5IGRlc2lnbi4gIFVuc2V0IHRoZQorIyBw
cmVtYXR1cmUtZXhpdCBmaWxlcGF0aCB0byBwcmV2ZW50IEdvb2dsZSBUZXN0IGZyb20gY3JlYXRp
bmcKKyMgdGhlIGZpbGUuCitTZXRFbnZWYXIoZ3Rlc3RfdGVzdF91dGlscy5QUkVNQVRVUkVfRVhJ
VF9GSUxFX0VOVl9WQVIsIE5vbmUpCisKK1RFU1RfTElTVCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3Vi
cHJvY2VzcygKKyAgICBbRVhFX1BBVEgsIExJU1RfVEVTVFNfRkxBR10sIGVudj1lbnZpcm9uKS5v
dXRwdXQKKworU1VQUE9SVFNfU0VIX0VYQ0VQVElPTlMgPSAnVGhyb3dzU2VoRXhjZXB0aW9uJyBp
biBURVNUX0xJU1QKKworaWYgU1VQUE9SVFNfU0VIX0VYQ0VQVElPTlM6CisgIEJJTkFSWV9PVVRQ
VVQgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0VYRV9QQVRIXSwgZW52PWVudmlyb24p
Lm91dHB1dAorCitFWF9CSU5BUllfT1VUUFVUID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNz
KAorICAgIFtFWF9FWEVfUEFUSF0sIGVudj1lbnZpcm9uKS5vdXRwdXQKKworCisjIFRoZSB0ZXN0
cy4KK2lmIFNVUFBPUlRTX1NFSF9FWENFUFRJT05TOgorICAjIHB5bGludDpkaXNhYmxlLW1zZz1D
NjMwMgorICBjbGFzcyBDYXRjaFNlaEV4Y2VwdGlvbnNUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVz
dENhc2UpOgorICAgICIiIlRlc3RzIGV4Y2VwdGlvbi1jYXRjaGluZyBiZWhhdmlvci4iIiIKKwor
CisgICAgZGVmIFRlc3RTZWhFeGNlcHRpb25zKHNlbGYsIHRlc3Rfb3V0cHV0KToKKyAgICAgIHNl
bGYuYXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24gJworICAgICAg
ICAgICAgICAgICAgICdpbiB0aGUgdGVzdCBmaXh0dXJlXCdzIGNvbnN0cnVjdG9yJworICAgICAg
ICAgICAgICAgICAgIGluIHRlc3Rfb3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhj
ZXB0aW9uIHdpdGggY29kZSAweDJhIHRocm93biAnCisgICAgICAgICAgICAgICAgICAgJ2luIHRo
ZSB0ZXN0IGZpeHR1cmVcJ3MgZGVzdHJ1Y3RvcicKKyAgICAgICAgICAgICAgICAgICBpbiB0ZXN0
X291dHB1dCkKKyAgICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgy
YSB0aHJvd24gaW4gU2V0VXBUZXN0Q2FzZSgpJworICAgICAgICAgICAgICAgICAgIGluIHRlc3Rf
b3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGggY29kZSAweDJh
IHRocm93biBpbiBUZWFyRG93blRlc3RDYXNlKCknCisgICAgICAgICAgICAgICAgICAgaW4gdGVz
dF9vdXRwdXQpCisgICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4
MmEgdGhyb3duIGluIFNldFVwKCknCisgICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQp
CisgICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhyb3du
IGluIFRlYXJEb3duKCknCisgICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCisgICAg
ICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhyb3duIGluIHRo
ZSB0ZXN0IGJvZHknCisgICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCisKKyAgICBk
ZWYgdGVzdENhdGNoZXNTZWhFeGNlcHRpb25zV2l0aEN4eEV4Y2VwdGlvbnNFbmFibGVkKHNlbGYp
OgorICAgICAgc2VsZi5UZXN0U2VoRXhjZXB0aW9ucyhFWF9CSU5BUllfT1VUUFVUKQorCisgICAg
ZGVmIHRlc3RDYXRjaGVzU2VoRXhjZXB0aW9uc1dpdGhDeHhFeGNlcHRpb25zRGlzYWJsZWQoc2Vs
Zik6CisgICAgICBzZWxmLlRlc3RTZWhFeGNlcHRpb25zKEJJTkFSWV9PVVRQVVQpCisKKworY2xh
c3MgQ2F0Y2hDeHhFeGNlcHRpb25zVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAg
IiIiVGVzdHMgQysrIGV4Y2VwdGlvbi1jYXRjaGluZyBiZWhhdmlvci4KKworICAgICBUZXN0cyBp
biB0aGlzIHRlc3QgY2FzZSB2ZXJpZnkgdGhhdDoKKyAgICAgKiBDKysgZXhjZXB0aW9ucyBhcmUg
Y2F1Z2h0IGFuZCBsb2dnZWQgYXMgQysrIChub3QgU0VIKSBleGNlcHRpb25zCisgICAgICogRXhj
ZXB0aW9uIHRocm93biBhZmZlY3QgdGhlIHJlbWFpbmRlciBvZiB0aGUgdGVzdCB3b3JrIGZsb3cg
aW4gdGhlCisgICAgICAgZXhwZWN0ZWQgbWFubmVyLgorICAiIiIKKworICBkZWYgdGVzdENhdGNo
ZXNDeHhFeGNlcHRpb25zSW5GaXh0dXJlQ29uc3RydWN0b3Ioc2VsZik6CisgICAgc2VsZi5hc3Nl
cnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gJworICAgICAgICAgICAgICAgICAn
IlN0YW5kYXJkIEMrKyBleGNlcHRpb24iIHRocm93biAnCisgICAgICAgICAgICAgICAgICdpbiB0
aGUgdGVzdCBmaXh0dXJlXCdzIGNvbnN0cnVjdG9yJworICAgICAgICAgICAgICAgICBpbiBFWF9C
SU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygndW5leHBlY3RlZCcgbm90IGluIEVYX0JJ
TkFSWV9PVVRQVVQsCisgICAgICAgICAgICAgICAgICdUaGlzIGZhaWx1cmUgYmVsb25ncyBpbiB0
aGlzIHRlc3Qgb25seSBpZiAnCisgICAgICAgICAgICAgICAgICciQ3h4RXhjZXB0aW9uSW5Db25z
dHJ1Y3RvclRlc3QiIChubyBxdW90ZXMpICcKKyAgICAgICAgICAgICAgICAgJ2FwcGVhcnMgb24g
dGhlIHNhbWUgbGluZSBhcyB3b3JkcyAiY2FsbGVkIHVuZXhwZWN0ZWRseSInKQorCisgIGlmICgn
Q3h4RXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdC5UaHJvd3NFeGNlcHRpb25JbkRlc3RydWN0b3In
IGluCisgICAgICBFWF9CSU5BUllfT1VUUFVUKToKKworICAgIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4
Y2VwdGlvbnNJbkZpeHR1cmVEZXN0cnVjdG9yKHNlbGYpOgorICAgICAgc2VsZi5hc3NlcnRfKCdD
KysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gJworICAgICAgICAgICAgICAgICAgICciU3Rh
bmRhcmQgQysrIGV4Y2VwdGlvbiIgdGhyb3duICcKKyAgICAgICAgICAgICAgICAgICAnaW4gdGhl
IHRlc3QgZml4dHVyZVwncyBkZXN0cnVjdG9yJworICAgICAgICAgICAgICAgICAgIGluIEVYX0JJ
TkFSWV9PVVRQVVQpCisgICAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluRGVzdHJ1Y3Rv
clRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAnCisgICAgICAgICAgICAgICAgICAgJ2NhbGxlZCBh
cyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKwor
ICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5TZXRVcFRlc3RDYXNlKHNlbGYpOgorICAg
IHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICJTdGFuZGFyZCBD
KysgZXhjZXB0aW9uIicKKyAgICAgICAgICAgICAgICAgJyB0aHJvd24gaW4gU2V0VXBUZXN0Q2Fz
ZSgpJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNz
ZXJ0XygnQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAn
CisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAg
ICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5T
ZXRVcFRlc3RDYXNlVGVzdCBjb25zdHJ1Y3RvciAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQg
YXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAg
IHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCBkZXN0cnVjdG9y
ICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAg
ICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25J
blNldFVwVGVzdENhc2VUZXN0OjpTZXRVcCgpICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBh
cyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAg
c2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0OjpUZWFyRG93bigp
ICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAg
ICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25J
blNldFVwVGVzdENhc2VUZXN0IHRlc3QgYm9keSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQg
YXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorCisg
IGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJblRlYXJEb3duVGVzdENhc2Uoc2VsZik6Cisg
ICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gIlN0YW5kYXJk
IEMrKyBleGNlcHRpb24iJworICAgICAgICAgICAgICAgICAnIHRocm93biBpbiBUZWFyRG93blRl
c3RDYXNlKCknCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisKKyAgZGVm
IHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luU2V0VXAoc2VsZik6CisgICAgc2VsZi5hc3NlcnRf
KCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gIlN0YW5kYXJkIEMrKyBleGNlcHRpb24i
JworICAgICAgICAgICAgICAgICAnIHRocm93biBpbiBTZXRVcCgpJworICAgICAgICAgICAgICAg
ICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5T
ZXRVcFRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQg
YXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAg
IHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QgZGVzdHJ1Y3RvciAnCisgICAg
ICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBF
WF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRl
c3Q6OlRlYXJEb3duKCkgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicK
KyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8o
J3VuZXhwZWN0ZWQnIG5vdCBpbiBFWF9CSU5BUllfT1VUUFVULAorICAgICAgICAgICAgICAgICAn
VGhpcyBmYWlsdXJlIGJlbG9uZ3MgaW4gdGhpcyB0ZXN0IG9ubHkgaWYgJworICAgICAgICAgICAg
ICAgICAnIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0IiAobm8gcXVvdGVzKSAnCisgICAgICAgICAg
ICAgICAgICdhcHBlYXJzIG9uIHRoZSBzYW1lIGxpbmUgYXMgd29yZHMgImNhbGxlZCB1bmV4cGVj
dGVkbHkiJykKKworICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5UZWFyRG93bihzZWxm
KToKKyAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlvbiAiU3Rh
bmRhcmQgQysrIGV4Y2VwdGlvbiInCisgICAgICAgICAgICAgICAgICcgdGhyb3duIGluIFRlYXJE
b3duKCknCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5h
c3NlcnRfKCdDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICcK
KyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAg
IGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblRl
YXJEb3duVGVzdCBkZXN0cnVjdG9yICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBl
Y3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisKKyAgZGVmIHRl
c3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luVGVzdEJvZHkoc2VsZik6CisgICAgc2VsZi5hc3NlcnRf
KCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gIlN0YW5kYXJkIEMrKyBleGNlcHRpb24i
JworICAgICAgICAgICAgICAgICAnIHRocm93biBpbiB0aGUgdGVzdCBib2R5JworICAgICAgICAg
ICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0
aW9uSW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAnCisgICAgICAgICAgICAgICAg
ICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VU
UFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QgZGVzdHJ1
Y3RvciAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAg
ICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0
aW9uSW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duKCkgJworICAgICAgICAgICAgICAgICAnY2FsbGVk
IGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKwor
ICBkZWYgdGVzdENhdGNoZXNOb25TdGRDeHhFeGNlcHRpb25zKHNlbGYpOgorICAgIHNlbGYuYXNz
ZXJ0XygnVW5rbm93biBDKysgZXhjZXB0aW9uIHRocm93biBpbiB0aGUgdGVzdCBib2R5JworICAg
ICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorCisgIGRlZiB0ZXN0VW5oYW5kbGVk
Q3h4RXhjZXB0aW9uc0Fib3J0VGhlUHJvZ3JhbShzZWxmKToKKyAgICAjIEZpbHRlcnMgb3V0IFNF
SCBleGNlcHRpb24gdGVzdHMgb24gV2luZG93cy4gVW5oYW5kbGVkIFNFSCBleGNlcHRpb25zCisg
ICAgIyBjYXVzZSB0ZXN0cyB0byBzaG93IHBvcC11cCB3aW5kb3dzIHRoZXJlLgorICAgIEZJVExF
Ul9PVVRfU0VIX1RFU1RTX0ZMQUcgPSBGSUxURVJfRkxBRyArICc9LSpTZWgqJworICAgICMgQnkg
ZGVmYXVsdCwgR29vZ2xlIFRlc3QgZG9lc24ndCBjYXRjaCB0aGUgZXhjZXB0aW9ucy4KKyAgICB1
bmNhdWdodF9leGNlcHRpb25zX2V4X2JpbmFyeV9vdXRwdXQgPSBndGVzdF90ZXN0X3V0aWxzLlN1
YnByb2Nlc3MoCisgICAgICAgIFtFWF9FWEVfUEFUSCwKKyAgICAgICAgIE5PX0NBVENIX0VYQ0VQ
VElPTlNfRkxBRywKKyAgICAgICAgIEZJVExFUl9PVVRfU0VIX1RFU1RTX0ZMQUddLAorICAgICAg
ICBlbnY9ZW52aXJvbikub3V0cHV0CisKKyAgICBzZWxmLmFzc2VydF8oJ1VuaGFuZGxlZCBDKysg
ZXhjZXB0aW9uIHRlcm1pbmF0aW5nIHRoZSBwcm9ncmFtJworICAgICAgICAgICAgICAgICBpbiB1
bmNhdWdodF9leGNlcHRpb25zX2V4X2JpbmFyeV9vdXRwdXQpCisgICAgc2VsZi5hc3NlcnRfKCd1
bmV4cGVjdGVkJyBub3QgaW4gdW5jYXVnaHRfZXhjZXB0aW9uc19leF9iaW5hcnlfb3V0cHV0KQor
CisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NhdGNoX2V4
Y2VwdGlvbnNfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Nh
dGNoX2V4Y2VwdGlvbnNfdGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBmYzgyYzk5OGQ2MjFkM2E3MzI0
YWY2Y2VjYzM0MWFlYTg3NjAxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc190ZXN0Xy5jYwpAQCAtMCwwICsxLDMx
MSBAQAorLy8gQ29weXJpZ2h0IDIwMTAsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8v
IEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKy8vCisvLyBUZXN0cyBmb3Ig
R29vZ2xlIFRlc3QgaXRzZWxmLiBUZXN0cyBpbiB0aGlzIGZpbGUgdGhyb3cgQysrIG9yIFNFSAor
Ly8gZXhjZXB0aW9ucywgYW5kIHRoZSBvdXRwdXQgaXMgdmVyaWZpZWQgYnkgZ3Rlc3RfY2F0Y2hf
ZXhjZXB0aW9uc190ZXN0LnB5LgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2luY2x1
ZGUgPHN0ZGlvLmg+ICAvLyBOT0xJTlQKKyNpbmNsdWRlIDxzdGRsaWIuaD4gIC8vIEZvciBleGl0
KCkuCisKKyNpZiBHVEVTVF9IQVNfU0VICisjIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgor
CisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKyMgaW5jbHVkZSA8ZXhjZXB0aW9uPiAgLy8gRm9y
IHNldF90ZXJtaW5hdGUoKS4KKyMgaW5jbHVkZSA8c3RkZXhjZXB0PgorI2VuZGlmCisKK3VzaW5n
IHRlc3Rpbmc6OlRlc3Q7CisKKyNpZiBHVEVTVF9IQVNfU0VICisKK2NsYXNzIFNlaEV4Y2VwdGlv
bkluQ29uc3RydWN0b3JUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgU2VoRXhjZXB0
aW9uSW5Db25zdHJ1Y3RvclRlc3QoKSB7IFJhaXNlRXhjZXB0aW9uKDQyLCAwLCAwLCBOVUxMKTsg
fQorfTsKKworVEVTVF9GKFNlaEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0LCBUaHJvd3NFeGNl
cHRpb25JbkNvbnN0cnVjdG9yKSB7fQorCitjbGFzcyBTZWhFeGNlcHRpb25JbkRlc3RydWN0b3JU
ZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgflNlaEV4Y2VwdGlvbkluRGVzdHJ1Y3Rv
clRlc3QoKSB7IFJhaXNlRXhjZXB0aW9uKDQyLCAwLCAwLCBOVUxMKTsgfQorfTsKKworVEVTVF9G
KFNlaEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3QsIFRocm93c0V4Y2VwdGlvbkluRGVzdHJ1Y3Rv
cikge30KKworY2xhc3MgU2VoRXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCA6IHB1YmxpYyBU
ZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7IFJhaXNlRXhj
ZXB0aW9uKDQyLCAwLCAwLCBOVUxMKTsgfQorfTsKKworVEVTVF9GKFNlaEV4Y2VwdGlvbkluU2V0
VXBUZXN0Q2FzZVRlc3QsIFRocm93c0V4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZSkge30KKworY2xh
c3MgU2VoRXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNlVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBw
dWJsaWM6CisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7IFJhaXNlRXhjZXB0aW9u
KDQyLCAwLCAwLCBOVUxMKTsgfQorfTsKKworVEVTVF9GKFNlaEV4Y2VwdGlvbkluVGVhckRvd25U
ZXN0Q2FzZVRlc3QsIFRocm93c0V4Y2VwdGlvbkluVGVhckRvd25UZXN0Q2FzZSkge30KKworY2xh
c3MgU2VoRXhjZXB0aW9uSW5TZXRVcFRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgor
ICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IFJhaXNlRXhjZXB0aW9uKDQyLCAwLCAwLCBOVUxMKTsg
fQorfTsKKworVEVTVF9GKFNlaEV4Y2VwdGlvbkluU2V0VXBUZXN0LCBUaHJvd3NFeGNlcHRpb25J
blNldFVwKSB7fQorCitjbGFzcyBTZWhFeGNlcHRpb25JblRlYXJEb3duVGVzdCA6IHB1YmxpYyBU
ZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsgUmFpc2VFeGNl
cHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhjZXB0aW9uSW5UZWFy
RG93blRlc3QsIFRocm93c0V4Y2VwdGlvbkluVGVhckRvd24pIHt9CisKK1RFU1QoU2VoRXhjZXB0
aW9uVGVzdCwgVGhyb3dzU2VoRXhjZXB0aW9uKSB7CisgIFJhaXNlRXhjZXB0aW9uKDQyLCAwLCAw
LCBOVUxMKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICisKKyNpZiBHVEVTVF9IQVNf
RVhDRVBUSU9OUworCitjbGFzcyBDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCA6IHB1Ymxp
YyBUZXN0IHsKKyBwdWJsaWM6CisgIEN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0KCkgewor
ICAgIC8vIFdpdGhvdXQgdGhpcyBtYWNybyBWQysrIGNvbXBsYWlucyBhYm91dCB1bnJlYWNoYWJs
ZSBjb2RlIGF0IHRoZSBlbmQgb2YKKyAgICAvLyB0aGUgY29uc3RydWN0b3IuCisgICAgR1RFU1Rf
U1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXygKKyAgICAgICAgdGhyb3cg
c3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIikpOworICB9CisKKyAg
c3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAg
ICAgICAgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkg
IgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworIHByb3RlY3Rl
ZDoKKyAgfkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0KCkgeworICAgIEFERF9GQUlMVVJF
KCkgPDwgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0IGRlc3RydWN0b3IgIgorICAgICAg
ICAgICAgICAgICAgPDwgImNhbGxlZCB1bmV4cGVjdGVkbHkuIjsKKyAgfQorCisgIHZpcnR1YWwg
dm9pZCBTZXRVcCgpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJDeHhFeGNlcHRpb25JbkNvbnN0
cnVjdG9yVGVzdDo6U2V0VXAoKSAiCisgICAgICAgICAgICAgICAgICA8PCAiY2FsbGVkIHVuZXhw
ZWN0ZWRseS4iOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIEFERF9G
QUlMVVJFKCkgPDwgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0OjpUZWFyRG93bigpICIK
KyAgICAgICAgICAgICAgICAgIDw8ICJjYWxsZWQgdW5leHBlY3RlZGx5LiI7CisgIH0KK307CisK
K1RFU1RfRihDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5D
b25zdHJ1Y3RvcikgeworICBBRERfRkFJTFVSRSgpIDw8ICJDeHhFeGNlcHRpb25JbkNvbnN0cnVj
dG9yVGVzdCB0ZXN0IGJvZHkgIgorICAgICAgICAgICAgICAgIDw8ICJjYWxsZWQgdW5leHBlY3Rl
ZGx5LiI7Cit9CisKKy8vIEV4Y2VwdGlvbnMgaW4gZGVzdHJ1Y3RvcnMgYXJlIG5vdCBzdXBwb3J0
ZWQgaW4gQysrMTEuCisjaWYgIWRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pICYm
ICBfX2NwbHVzcGx1cyA8IDIwMTEwM0wKK2NsYXNzIEN4eEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRl
c3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RD
YXNlKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5EZXN0
cnVjdG9yVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBl
eHBlY3RlZC5cbiIpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIH5DeHhFeGNlcHRpb25JbkRlc3Ry
dWN0b3JUZXN0KCkgeworICAgIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklO
R19CRUxPV18oCisgICAgICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcigiU3RhbmRhcmQgQysr
IGV4Y2VwdGlvbiIpKTsKKyAgfQorfTsKKworVEVTVF9GKEN4eEV4Y2VwdGlvbkluRGVzdHJ1Y3Rv
clRlc3QsIFRocm93c0V4Y2VwdGlvbkluRGVzdHJ1Y3Rvcikge30KKyNlbmRpZiAgLy8gQysrMTEg
bW9kZQorCitjbGFzcyBDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0IDogcHVibGljIFRl
c3QgeworIHB1YmxpYzoKKyAgQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCgpIHsKKyAg
ICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRl
c3QgY29uc3RydWN0b3IgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7Cisg
IH0KKworICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgeworICAgIHRocm93IHN0ZDo6cnVu
dGltZV9lcnJvcigiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIpOworICB9CisKKyAgc3RhdGljIHZv
aWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4
eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCisgICAg
ICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICB+
Q3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAg
ICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgZGVzdHJ1Y3RvciAiCisg
ICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgIHZpcnR1YWwgdm9p
ZCBTZXRVcCgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbklu
U2V0VXBUZXN0Q2FzZVRlc3Q6OlNldFVwKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVj
dGVkLlxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgcHJpbnRm
KCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0OjpUZWFy
RG93bigpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9Cit9Owor
CitURVNUX0YoQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCwgVGhyb3dzRXhjZXB0aW9u
SW5TZXRVcFRlc3RDYXNlKSB7CisgIHByaW50ZigiJXMiLAorICAgICAgICAgIkN4eEV4Y2VwdGlv
bkluU2V0VXBUZXN0Q2FzZVRlc3QgdGVzdCBib2R5ICIKKyAgICAgICAgICJjYWxsZWQgYXMgZXhw
ZWN0ZWQuXG4iKTsKK30KKworY2xhc3MgQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNlVGVz
dCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENh
c2UoKSB7CisgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0
aW9uIik7CisgIH0KK307CisKK1RFU1RfRihDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdENhc2VU
ZXN0LCBUaHJvd3NFeGNlcHRpb25JblRlYXJEb3duVGVzdENhc2UpIHt9CisKK2NsYXNzIEN4eEV4
Y2VwdGlvbkluU2V0VXBUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljIHZv
aWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4
eEV4Y2VwdGlvbkluU2V0VXBUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgIgorICAgICAgICAgICAi
Y2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworIHByb3RlY3RlZDoKKyAgfkN4eEV4Y2Vw
dGlvbkluU2V0VXBUZXN0KCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhj
ZXB0aW9uSW5TZXRVcFRlc3QgZGVzdHJ1Y3RvciAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhw
ZWN0ZWQuXG4iKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsgdGhyb3cgc3RkOjpy
dW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIik7IH0KKworICB2aXJ0dWFsIHZv
aWQgVGVhckRvd24oKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRp
b25JblNldFVwVGVzdDo6VGVhckRvd24oKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0
ZWQuXG4iKTsKKyAgfQorfTsKKworVEVTVF9GKEN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0LCBUaHJv
d3NFeGNlcHRpb25JblNldFVwKSB7CisgIEFERF9GQUlMVVJFKCkgPDwgIkN4eEV4Y2VwdGlvbklu
U2V0VXBUZXN0IHRlc3QgYm9keSAiCisgICAgICAgICAgICAgICAgPDwgImNhbGxlZCB1bmV4cGVj
dGVkbHkuIjsKK30KKworY2xhc3MgQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3QgOiBwdWJsaWMg
VGVzdCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAg
IHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3Q6OlRl
YXJEb3duVGVzdENhc2UoKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsK
KyAgfQorCisgcHJvdGVjdGVkOgorICB+Q3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3QoKSB7Cisg
ICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCBk
ZXN0cnVjdG9yICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisK
KyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJv
cigiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIpOworICB9Cit9OworCitURVNUX0YoQ3h4RXhjZXB0
aW9uSW5UZWFyRG93blRlc3QsIFRocm93c0V4Y2VwdGlvbkluVGVhckRvd24pIHt9CisKK2NsYXNz
IEN4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAg
c3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAg
ICAgICAgIkN4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgIgor
ICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworIHByb3RlY3RlZDoK
KyAgfkN4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0KCkgeworICAgIHByaW50ZigiJXMiLAorICAg
ICAgICAgICAiQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QgZGVzdHJ1Y3RvciAiCisgICAgICAg
ICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluVGVz
dEJvZHlUZXN0OjpUZWFyRG93bigpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5c
biIpOworICB9Cit9OworCitURVNUX0YoQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QsIFRocm93
c1N0ZEN4eEV4Y2VwdGlvbikgeworICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJk
IEMrKyBleGNlcHRpb24iKTsKK30KKworVEVTVChDeHhFeGNlcHRpb25UZXN0LCBUaHJvd3NOb25T
dGRDeHhFeGNlcHRpb24pIHsKKyAgdGhyb3cgIkMtc3RyaW5nIjsKK30KKworLy8gVGhpcyB0ZXJt
aW5hdGUgaGFuZGxlciBhYm9ydHMgdGhlIHByb2dyYW0gdXNpbmcgZXhpdCgpIHJhdGhlciB0aGFu
IGFib3J0KCkuCisvLyBUaGlzIGF2b2lkcyBzaG93aW5nIHBvcC11cHMgb24gV2luZG93cyBzeXN0
ZW1zIGFuZCBjb3JlIGR1bXBzIG9uIFVuaXgtbGlrZQorLy8gb25lcy4KK3ZvaWQgVGVybWluYXRl
SGFuZGxlcigpIHsKKyAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgIlVuaGFuZGxlZCBDKysgZXhj
ZXB0aW9uIHRlcm1pbmF0aW5nIHRoZSBwcm9ncmFtLiIpOworICBmZmx1c2goTlVMTCk7CisgIGV4
aXQoMyk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKyAgc3Rk
OjpzZXRfdGVybWluYXRlKCZUZXJtaW5hdGVIYW5kbGVyKTsKKyNlbmRpZgorICB0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rl
c3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0Xy5j
YwppbmRleCA1OGQzNzdjOWIyYWYwYmZlODE5NWNhMmMwYTkwMjEzOWQ5MTEwNjQyLi5mNjFlYmI4
OWI4NGU4ZTAzZTVlZmRkNDEzMjQwNjExMzc2YWZlNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdF8uY2MKQEAgLTM1LDcgKzM1LDcgQEAK
IAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIC8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24g
dW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKIC8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVz
dCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3QucHkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weQppbmRleCBiY2MwYmZkNTUz
Mjk3MjY4MDc2MTU3NzM2YzgzZTRhODRjYWUwNTZjLi40MjQwNzVjZmEzNzQ3NmNjZDhjN2Q0ZmYw
MjcyYjI3ZDg4Nzg3MTNlIDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X2Vudl92YXJfdGVzdC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X2Vudl92YXJfdGVzdC5weQpAQCAtNDcsOCArNDcsOCBAQAogCiBkZWYgQXNzZXJ0RXEo
ZXhwZWN0ZWQsIGFjdHVhbCk6CiAgIGlmIGV4cGVjdGVkICE9IGFjdHVhbDoKLSAgICBwcmludCAn
RXhwZWN0ZWQ6ICVzJyAlIChleHBlY3RlZCwpCi0gICAgcHJpbnQgJyAgQWN0dWFsOiAlcycgJSAo
YWN0dWFsLCkKKyAgICBwcmludCgnRXhwZWN0ZWQ6ICVzJyAlIChleHBlY3RlZCwpKQorICAgIHBy
aW50KCcgIEFjdHVhbDogJXMnICUgKGFjdHVhbCwpKQogICAgIHJhaXNlIEFzc2VydGlvbkVycm9y
CiAKIApAQCAtODcsMTkgKzg3LDMxIEBAIGRlZiB0ZXN0RW52VmFyQWZmZWN0c0ZsYWcoc2VsZik6
CiAgICAgVGVzdEZsYWcoJ2JyZWFrX29uX2ZhaWx1cmUnLCAnMScsICcwJykKICAgICBUZXN0Rmxh
ZygnY29sb3InLCAneWVzJywgJ2F1dG8nKQogICAgIFRlc3RGbGFnKCdmaWx0ZXInLCAnRm9vVGVz
dC5CYXInLCAnKicpCisgICAgU2V0RW52VmFyKCdYTUxfT1VUUFVUX0ZJTEUnLCBOb25lKSAjIEZv
ciAnb3V0cHV0JyB0ZXN0CiAgICAgVGVzdEZsYWcoJ291dHB1dCcsICd4bWw6dG1wL2Zvby54bWwn
LCAnJykKICAgICBUZXN0RmxhZygncHJpbnRfdGltZScsICcwJywgJzEnKQogICAgIFRlc3RGbGFn
KCdyZXBlYXQnLCAnOTk5JywgJzEnKQogICAgIFRlc3RGbGFnKCd0aHJvd19vbl9mYWlsdXJlJywg
JzEnLCAnMCcpCiAgICAgVGVzdEZsYWcoJ2RlYXRoX3Rlc3Rfc3R5bGUnLCAndGhyZWFkc2FmZScs
ICdmYXN0JykKLQotICAgIGlmIElTX1dJTkRPV1M6Ci0gICAgICBUZXN0RmxhZygnY2F0Y2hfZXhj
ZXB0aW9ucycsICcxJywgJzAnKQorICAgIFRlc3RGbGFnKCdjYXRjaF9leGNlcHRpb25zJywgJzAn
LCAnMScpCiAKICAgICBpZiBJU19MSU5VWDoKICAgICAgIFRlc3RGbGFnKCdkZWF0aF90ZXN0X3Vz
ZV9mb3JrJywgJzEnLCAnMCcpCiAgICAgICBUZXN0RmxhZygnc3RhY2tfdHJhY2VfZGVwdGgnLCAn
MCcsICcxMDAnKQogCisgIGRlZiB0ZXN0WG1sT3V0cHV0RmlsZShzZWxmKToKKyAgICAiIiJUZXN0
cyB0aGF0ICRYTUxfT1VUUFVUX0ZJTEUgYWZmZWN0cyB0aGUgb3V0cHV0IGZsYWcuIiIiCisKKyAg
ICBTZXRFbnZWYXIoJ0dURVNUX09VVFBVVCcsIE5vbmUpCisgICAgU2V0RW52VmFyKCdYTUxfT1VU
UFVUX0ZJTEUnLCAndG1wL2Jhci54bWwnKQorICAgIEFzc2VydEVxKCd4bWw6dG1wL2Jhci54bWwn
LCBHZXRGbGFnKCdvdXRwdXQnKSkKKworICBkZWYgdGVzdFhtbE91dHB1dEZpbGVPdmVycmlkZShz
ZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0ICRYTUxfT1VUUFVUX0ZJTEUgaXMgb3ZlcnJpZGRlbiBi
eSAkR1RFU1RfT1VUUFVUIiIiCisKKyAgICBTZXRFbnZWYXIoJ0dURVNUX09VVFBVVCcsICd4bWw6
dG1wL2Zvby54bWwnKQorICAgIFNldEVudlZhcignWE1MX09VVFBVVF9GSUxFJywgJ3RtcC9iYXIu
eG1sJykKKyAgICBBc3NlcnRFcSgneG1sOnRtcC9mb28ueG1sJywgR2V0RmxhZygnb3V0cHV0Jykp
CiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJf
dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJfdGVz
dF8uY2MKaW5kZXggZjdjNzhmY2YzMDUzMTJhNjZjMjY1YjE4MTBhNjkxMDc3ZGI3NzFmNy4uNTM5
YWZjOTY4MzdlM2U3MzZkMDgxYmIyMGE0MzY0ZTVkZTg1NmY5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3RfLmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0Xy5jYwpAQCAtMzIsNyAr
MzIsNyBAQAogLy8gQSBoZWxwZXIgcHJvZ3JhbSBmb3IgdGVzdGluZyB0aGF0IEdvb2dsZSBUZXN0
IHBhcnNlcyB0aGUgZW52aXJvbm1lbnQKIC8vIHZhcmlhYmxlcyBjb3JyZWN0bHkuCiAKLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKICNpbmNsdWRl
IDxpb3N0cmVhbT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjCmluZGV4IGM5MzkyNjE0ZDc0ZDdmYzIzMmU4NmIyYzNk
NmNkYjFiMWUyYjYxMzEuLjNjZmYxOWU3MGVkY2NhMGQyNjIxNDVlZGU1ODEwYWU5YTA3NDM3YTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52aXJvbm1l
bnRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudmly
b25tZW50X3Rlc3QuY2MKQEAgLTMzLDcgKzMzLDExIEBACiAKICNpbmNsdWRlIDxzdGRsaWIuaD4K
ICNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKworI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMSAgLy8gUmVx
dWlyZWQgZm9yIHRoZSBuZXh0ICNpbmNsdWRlLgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5h
bC1pbmwuaCIKKyN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KIAogbmFtZXNwYWNlIHRlc3Rp
bmcgewogR1RFU1RfREVDTEFSRV9zdHJpbmdfKGZpbHRlcik7CkBAIC05Miw2ICs5Niw3IEBAIGNs
YXNzIE15RW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6RW52aXJvbm1lbnQgewogCiAgIC8v
IFdhcyBUZWFyRG93bigpIHJ1bj8KICAgYm9vbCB0ZWFyX2Rvd25fd2FzX3J1bigpIGNvbnN0IHsg
cmV0dXJuIHRlYXJfZG93bl93YXNfcnVuXzsgfQorCiAgcHJpdmF0ZToKICAgRmFpbHVyZVR5cGUg
ZmFpbHVyZV9pbl9zZXRfdXBfOwogICBib29sIHNldF91cF93YXNfcnVuXzsKQEAgLTExMSw3ICsx
MTYsNyBAQCBURVNUKEZvb1Rlc3QsIEJhcikgewogdm9pZCBDaGVjayhib29sIGNvbmRpdGlvbiwg
Y29uc3QgY2hhciogbXNnKSB7CiAgIGlmICghY29uZGl0aW9uKSB7CiAgICAgcHJpbnRmKCJGQUlM
RUQ6ICVzXG4iLCBtc2cpOwotICAgIGFib3J0KCk7CisgICAgdGVzdGluZzo6aW50ZXJuYWw6OnBv
c2l4OjpBYm9ydCgpOwogICB9CiB9CiAKQEAgLTEyMyw2ICsxMjgsNyBAQCBpbnQgUnVuQWxsVGVz
dHMoTXlFbnZpcm9ubWVudCogZW52LCBGYWlsdXJlVHlwZSBmYWlsdXJlKSB7CiAgIGVudi0+UmVz
ZXQoKTsKICAgZW52LT5zZXRfZmFpbHVyZV9pbl9zZXRfdXAoZmFpbHVyZSk7CiAgIHRlc3Rfd2Fz
X3J1biA9IGZhbHNlOworICB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCktPkNs
ZWFyQWRIb2NUZXN0UmVzdWx0KCk7CiAgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0
ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRl
c3QucHkKaW5kZXggMGQxYTc3MDA1OGNjYjkwMTE1NDY4MDkyNGNiZDNjNjRkOGM4ZDE3OS4uZWMw
YjE1MWIxMWJkYjVmNzk5OTk2MjIxYjEzOGRlNzRiNzY5YjEzMSAxMDA3NTUKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3QucHkKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3QucHkKQEAgLTQ0
LDcgKzQ0LDEwIEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgc2V0cwordHJ5Ogor
ICBmcm9tIHNldHMgaW1wb3J0IFNldCBhcyBzZXQgICMgRm9yIFB5dGhvbiAyLjMgY29tcGF0aWJp
bGl0eQorZXhjZXB0IEltcG9ydEVycm9yOgorICBwYXNzCiBpbXBvcnQgc3lzCiAKIGltcG9ydCBn
dGVzdF90ZXN0X3V0aWxzCkBAIC01OCw3ICs2MSw3IEBACiAjIGV4Y2VwdGlvbiBpcyB0aHJvd24g
aWYgdGhlIGlucHV0IGlzIGFueXRoaW5nIG90aGVyIHRoYW4gJ1RydWUnIG5vciAnRmFsc2UnLgog
b3MuZW52aXJvblsnRU1QVFlfVkFSJ10gPSAnJwogY2hpbGQgPSBndGVzdF90ZXN0X3V0aWxzLlN1
YnByb2Nlc3MoCi0gICAgW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAnaW1wb3J0IG9zOyBwcmludCBc
J0VNUFRZX1ZBUlwnIGluIG9zLmVudmlyb24nXSkKKyAgICBbc3lzLmV4ZWN1dGFibGUsICctYycs
ICdpbXBvcnQgb3M7IHByaW50KFwnRU1QVFlfVkFSXCcgaW4gb3MuZW52aXJvbiknXSkKIENBTl9Q
QVNTX0VNUFRZX0VOViA9IGV2YWwoY2hpbGQub3V0cHV0KQogCiAKQEAgLTcxLDcgKzc0LDcgQEAK
IG9zLmVudmlyb25bJ1VOU0VUX1ZBUiddID0gJ1gnCiBkZWwgb3MuZW52aXJvblsnVU5TRVRfVkFS
J10KIGNoaWxkID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAotICAgIFtzeXMuZXhlY3V0
YWJsZSwgJy1jJywgJ2ltcG9ydCBvczsgcHJpbnQgXCdVTlNFVF9WQVJcJyBub3QgaW4gb3MuZW52
aXJvbiddKQorICAgIFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgJ2ltcG9ydCBvczsgcHJpbnQoXCdV
TlNFVF9WQVJcJyBub3QgaW4gb3MuZW52aXJvbiknXSkKIENBTl9VTlNFVF9FTlYgPSBldmFsKGNo
aWxkLm91dHB1dCkKIAogCkBAIC0yNDMsMTQgKzI0NiwxNCBAQCBkZWYgQXNzZXJ0UGFydGl0aW9u
SXNWYWxpZChzZWxmLCBzZXRfdmFyLCBsaXN0X29mX3NldHMpOgogICAgIGZvciBzbGljZV92YXIg
aW4gbGlzdF9vZl9zZXRzOgogICAgICAgZnVsbF9wYXJ0aXRpb24uZXh0ZW5kKHNsaWNlX3ZhcikK
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXRfdmFyKSwgbGVuKGZ1bGxfcGFydGl0aW9uKSkK
LSAgICBzZWxmLmFzc2VydEVxdWFsKHNldHMuU2V0KHNldF92YXIpLCBzZXRzLlNldChmdWxsX3Bh
cnRpdGlvbikpCisgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoc2V0X3ZhciksIHNldChmdWxsX3Bh
cnRpdGlvbikpCiAKICAgZGVmIEFkanVzdEZvclBhcmFtZXRlcml6ZWRUZXN0cyhzZWxmLCB0ZXN0
c190b19ydW4pOgogICAgICIiIkFkanVzdCB0ZXN0c190b19ydW4gaW4gY2FzZSB2YWx1ZSBwYXJh
bWV0ZXJpemVkIHRlc3RzIGFyZSBkaXNhYmxlZC4iIiIKIAogICAgIGdsb2JhbCBwYXJhbV90ZXN0
c19wcmVzZW50CiAgICAgaWYgbm90IHBhcmFtX3Rlc3RzX3ByZXNlbnQ6Ci0gICAgICByZXR1cm4g
bGlzdChzZXRzLlNldCh0ZXN0c190b19ydW4pIC0gc2V0cy5TZXQoUEFSQU1fVEVTVFMpKQorICAg
ICAgcmV0dXJuIGxpc3Qoc2V0KHRlc3RzX3RvX3J1bikgLSBzZXQoUEFSQU1fVEVTVFMpKQogICAg
IGVsc2U6CiAgICAgICByZXR1cm4gdGVzdHNfdG9fcnVuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0Xy5jYwppbmRleCAzMjU1
MDRmZTk0YWZjMTc3YzQ2Y2JjMTM1ZmVjNjc1YzU1NGQyZTBkLi43N2RlZmZjMzhmN2RmMWRkYmU2
NWE1MWViOWFhNWY4YjQwZTUyYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X2ZpbHRlcl91bml0dGVzdF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3RfLmNjCkBAIC0zOCw3ICszOCw3IEBACiAv
LyBUaGUgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRlc3QuICBE
b24ndCBydW4gaXQKIC8vIGRpcmVjdGx5LgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNp
bmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2UgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVzdC5weSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5CmluZGV4IDNjYjRjNDhlMGI0NjI4
ZDlhYTdjNmYzMjA3YWI3ZWUxMGNkMjJiYTMuLjA5M2M4MzhkOWU0NzJmYmRlMmUxMjVmMjBkNzNj
MTdlYWVlOTUwZjUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfaGVscF90ZXN0LnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
aGVscF90ZXN0LnB5CkBAIC0zMiw3ICszMiw3IEBACiAiIiJUZXN0cyB0aGUgLS1oZWxwIGZsYWcg
b2YgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yay4KIAogU1lOT1BTSVMKLSAgICAgICBndGVz
dF9oZWxwX3Rlc3QucHkgLS1ndGVzdF9idWlsZF9kaXI9QlVJTEQvRElSCisgICAgICAgZ3Rlc3Rf
aGVscF90ZXN0LnB5IC0tYnVpbGRfZGlyPUJVSUxEL0RJUgogICAgICAgICAgIyB3aGVyZSBCVUlM
RC9ESVIgY29udGFpbnMgdGhlIGJ1aWx0IGd0ZXN0X2hlbHBfdGVzdF8gZmlsZS4KICAgICAgICBn
dGVzdF9oZWxwX3Rlc3QucHkKICIiIgpAQCAtNDQsMTIgKzQ0LDEzIEBACiBpbXBvcnQgZ3Rlc3Rf
dGVzdF91dGlscwogCiAKK0lTX0xJTlVYID0gb3MubmFtZSA9PSAncG9zaXgnIGFuZCBvcy51bmFt
ZSgpWzBdID09ICdMaW51eCcKIElTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdudCcKIAogUFJPR1JB
TV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2d0ZXN0X2hl
bHBfdGVzdF8nKQogRkxBR19QUkVGSVggPSAnLS1ndGVzdF8nCi1DQVRDSF9FWENFUFRJT05TX0ZM
QUcgPSBGTEFHX1BSRUZJWCArICdjYXRjaF9leGNlcHRpb25zJwogREVBVEhfVEVTVF9TVFlMRV9G
TEFHID0gRkxBR19QUkVGSVggKyAnZGVhdGhfdGVzdF9zdHlsZScKK1NUUkVBTV9SRVNVTFRfVE9f
RkxBRyA9IEZMQUdfUFJFRklYICsgJ3N0cmVhbV9yZXN1bHRfdG8nCiBVTktOT1dOX0ZMQUcgPSBG
TEFHX1BSRUZJWCArICd1bmtub3duX2ZsYWdfZm9yX3Rlc3RpbmcnCiBMSVNUX1RFU1RTX0ZMQUcg
PSBGTEFHX1BSRUZJWCArICdsaXN0X3Rlc3RzJwogSU5DT1JSRUNUX0ZMQUdfVkFSSUFOVFMgPSBb
cmUuc3ViKCdeLS0nLCAnLScsIExJU1RfVEVTVFNfRkxBRyksCkBAIC03Miw3ICs3Myw4IEBACiAg
ICAgRkxBR19QUkVGSVggKyByJ3ByaW50X3RpbWUuKicgKwogICAgIEZMQUdfUFJFRklYICsgcidv
dXRwdXQ9LionICsKICAgICBGTEFHX1BSRUZJWCArIHInYnJlYWtfb25fZmFpbHVyZS4qJyArCi0g
ICAgRkxBR19QUkVGSVggKyByJ3Rocm93X29uX2ZhaWx1cmUuKicsCisgICAgRkxBR19QUkVGSVgg
KyByJ3Rocm93X29uX2ZhaWx1cmUuKicgKworICAgIEZMQUdfUFJFRklYICsgcidjYXRjaF9leGNl
cHRpb25zPTAuKicsCiAgICAgcmUuRE9UQUxMKQogCiAKQEAgLTEwOSwxMCArMTExLDExIEBAIGRl
ZiBUZXN0SGVscEZsYWcoc2VsZiwgZmxhZyk6CiAgICAgZXhpdF9jb2RlLCBvdXRwdXQgPSBSdW5X
aXRoRmxhZyhmbGFnKQogICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIGV4aXRfY29kZSkKICAgICBz
ZWxmLmFzc2VydF8oSEVMUF9SRUdFWC5zZWFyY2gob3V0cHV0KSwgb3V0cHV0KQotICAgIGlmIElT
X1dJTkRPV1M6Ci0gICAgICBzZWxmLmFzc2VydF8oQ0FUQ0hfRVhDRVBUSU9OU19GTEFHIGluIG91
dHB1dCwgb3V0cHV0KQorCisgICAgaWYgSVNfTElOVVg6CisgICAgICBzZWxmLmFzc2VydF8oU1RS
RUFNX1JFU1VMVF9UT19GTEFHIGluIG91dHB1dCwgb3V0cHV0KQogICAgIGVsc2U6Ci0gICAgICBz
ZWxmLmFzc2VydF8oQ0FUQ0hfRVhDRVBUSU9OU19GTEFHIG5vdCBpbiBvdXRwdXQsIG91dHB1dCkK
KyAgICAgIHNlbGYuYXNzZXJ0XyhTVFJFQU1fUkVTVUxUX1RPX0ZMQUcgbm90IGluIG91dHB1dCwg
b3V0cHV0KQogCiAgICAgaWYgU1VQUE9SVFNfREVBVEhfVEVTVFMgYW5kIG5vdCBJU19XSU5ET1dT
OgogICAgICAgc2VsZi5hc3NlcnRfKERFQVRIX1RFU1RfU1RZTEVfRkxBRyBpbiBvdXRwdXQsIG91
dHB1dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVs
cF90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0
Xy5jYwppbmRleCBhYWQwZDcyZDc2NzUzNWUxYjdhNzIyMjQ3NzU0MzAxMDMzZTcxMDZmLi4zMWY3
OGMyNDQxYmU2Njg4MWY4ZWRmNTliZjdhYzQ5ZDQ3YjE1OTYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVzdF8uY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3RfLmNjCkBAIC0zMiw3ICszMiw3IEBA
CiAvLyBUaGlzIHByb2dyYW0gaXMgbWVhbnQgdG8gYmUgcnVuIGJ5IGd0ZXN0X2hlbHBfdGVzdC5w
eS4gIERvIG5vdCBydW4KIC8vIGl0IGRpcmVjdGx5LgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAvLyBXaGVuIGEgaGVscCBmbGFnIGlzIHNw
ZWNpZmllZCwgdGhpcyBwcm9ncmFtIHNob3VsZCBza2lwIHRoZSB0ZXN0cwogLy8gYW5kIGV4aXQg
d2l0aCAwOyBvdGhlcndpc2UgdGhlIGZvbGxvd2luZyB0ZXN0IHdpbGwgYmUgZXhlY3V0ZWQsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNf
dW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVz
dHNfdW5pdHRlc3QucHkKaW5kZXggY2U4YzNlZjA1ZjY2MDBlODcyMTRhNmQ0MDE2MjhlZDkyM2Ex
NTJkYS4uZjJkMmZkMWIxYzVkNWUwMWMxNzQ2NzQwZmU5Njg0NzAzNWFiNGRhYiAxMDA3NTUKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0
LnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191
bml0dGVzdC5weQpAQCAtNDAsNiArNDAsNyBAQAogX19hdXRob3JfXyA9ICdwaGFubmFAZ29vZ2xl
LmNvbSAoUGF0cmljayBIYW5uYSknCiAKIGltcG9ydCBndGVzdF90ZXN0X3V0aWxzCitpbXBvcnQg
cmUKIAogCiAjIENvbnN0YW50cy4KQEAgLTUyLDM4ICs1Myw2MyBAQAogCiAjIFRoZSBleHBlY3Rl
ZCBvdXRwdXQgd2hlbiBydW5uaW5nIGd0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfIHdpdGgKICMg
LS1ndGVzdF9saXN0X3Rlc3RzCi1FWFBFQ1RFRF9PVVRQVVRfTk9fRklMVEVSID0gIiIiRm9vRGVh
dGhUZXN0LgorRVhQRUNURURfT1VUUFVUX05PX0ZJTFRFUl9SRSA9IHJlLmNvbXBpbGUociIiIkZv
b0RlYXRoVGVzdFwuCiAgIFRlc3QxCi1Gb28uCitGb29cLgogICBCYXIxCiAgIEJhcjIKICAgRElT
QUJMRURfQmFyMwotQWJjLgorQWJjXC4KICAgWHl6CiAgIERlZgotRm9vQmFyLgorRm9vQmFyXC4K
ICAgQmF6Ci1Gb29UZXN0LgorRm9vVGVzdFwuCiAgIFRlc3QxCiAgIERJU0FCTEVEX1Rlc3QyCiAg
IFRlc3QzCi0iIiIKK1R5cGVkVGVzdC8wXC4gICMgVHlwZVBhcmFtID0gKFZlcnlMb3syNDV9fGNs
YXNzIFZlcnlMb3syMzl9KVwuXC5cLgorICBUZXN0QQorICBUZXN0QgorVHlwZWRUZXN0LzFcLiAg
IyBUeXBlUGFyYW0gPSBpbnRccypcKiggX19wdHI2NCk/CisgIFRlc3RBCisgIFRlc3RCCitUeXBl
ZFRlc3QvMlwuICAjIFR5cGVQYXJhbSA9IC4qTXlBcnJheTxib29sLFxzKjQyPgorICBUZXN0QQor
ICBUZXN0QgorTXkvVHlwZVBhcmFtVGVzdC8wXC4gICMgVHlwZVBhcmFtID0gKFZlcnlMb3syNDV9
fGNsYXNzIFZlcnlMb3syMzl9KVwuXC5cLgorICBUZXN0QQorICBUZXN0QgorTXkvVHlwZVBhcmFt
VGVzdC8xXC4gICMgVHlwZVBhcmFtID0gaW50XHMqXCooIF9fcHRyNjQpPworICBUZXN0QQorICBU
ZXN0QgorTXkvVHlwZVBhcmFtVGVzdC8yXC4gICMgVHlwZVBhcmFtID0gLipNeUFycmF5PGJvb2ws
XHMqNDI+CisgIFRlc3RBCisgIFRlc3RCCitNeUluc3RhbnRpYXRpb24vVmFsdWVQYXJhbVRlc3Rc
LgorICBUZXN0QS8wICAjIEdldFBhcmFtXChcKSA9IG9uZSBsaW5lCisgIFRlc3RBLzEgICMgR2V0
UGFyYW1cKFwpID0gdHdvXFxubGluZXMKKyAgVGVzdEEvMiAgIyBHZXRQYXJhbVwoXCkgPSBhIHZl
cnlcXG5sb3syNDF9XC5cLlwuCisgIFRlc3RCLzAgICMgR2V0UGFyYW1cKFwpID0gb25lIGxpbmUK
KyAgVGVzdEIvMSAgIyBHZXRQYXJhbVwoXCkgPSB0d29cXG5saW5lcworICBUZXN0Qi8yICAjIEdl
dFBhcmFtXChcKSA9IGEgdmVyeVxcbmxvezI0MX1cLlwuXC4KKyIiIikKIAogIyBUaGUgZXhwZWN0
ZWQgb3V0cHV0IHdoZW4gcnVubmluZyBndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0XyB3aXRoCiAj
IC0tZ3Rlc3RfbGlzdF90ZXN0cyBhbmQgLS1ndGVzdF9maWx0ZXI9Rm9vKi4KLUVYUEVDVEVEX09V
VFBVVF9GSUxURVJfRk9PID0gIiIiRm9vRGVhdGhUZXN0LgorRVhQRUNURURfT1VUUFVUX0ZJTFRF
Ul9GT09fUkUgPSByZS5jb21waWxlKHIiIiJGb29EZWF0aFRlc3RcLgogICBUZXN0MQotRm9vLgor
Rm9vXC4KICAgQmFyMQogICBCYXIyCiAgIERJU0FCTEVEX0JhcjMKLUZvb0Jhci4KK0Zvb0Jhclwu
CiAgIEJhegotRm9vVGVzdC4KK0Zvb1Rlc3RcLgogICBUZXN0MQogICBESVNBQkxFRF9UZXN0Mgog
ICBUZXN0MwotIiIiCisiIiIpCiAKICMgVXRpbGl0aWVzLgogCkBAIC0xMDAsMTkgKzEyNiwxOCBA
QCBkZWYgUnVuKGFyZ3MpOgogY2xhc3MgR1Rlc3RMaXN0VGVzdHNVbml0VGVzdChndGVzdF90ZXN0
X3V0aWxzLlRlc3RDYXNlKToKICAgIiIiVGVzdHMgdXNpbmcgdGhlIC0tZ3Rlc3RfbGlzdF90ZXN0
cyBmbGFnIHRvIGxpc3QgYWxsIHRlc3RzLiIiIgogCi0gIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwg
ZmxhZ192YWx1ZSwgZXhwZWN0ZWRfb3V0cHV0LCBvdGhlcl9mbGFnKToKKyAgZGVmIFJ1bkFuZFZl
cmlmeShzZWxmLCBmbGFnX3ZhbHVlLCBleHBlY3RlZF9vdXRwdXRfcmUsIG90aGVyX2ZsYWcpOgog
ICAgICIiIlJ1bnMgZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8gYW5kIHZlcmlmaWVzIHRoYXQg
aXQgcHJpbnRzCiAgICAgdGhlIGNvcnJlY3QgdGVzdHMuCiAKICAgICBBcmdzOgotICAgICAgZmxh
Z192YWx1ZTogICAgICAgdmFsdWUgb2YgdGhlIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnOwotICAg
ICAgICAgICAgICAgICAgICAgICAgTm9uZSBpZiB0aGUgZmxhZyBzaG91bGQgbm90IGJlIHByZXNl
bnQuCi0KLSAgICAgIGV4cGVjdGVkX291dHB1dDogIHRoZSBleHBlY3RlZCBvdXRwdXQgYWZ0ZXIg
cnVubmluZyBjb21tYW5kOwotCi0gICAgICBvdGhlcl9mbGFnOiAgICAgICBhIGRpZmZlcmVudCBm
bGFnIHRvIGJlIHBhc3NlZCB0byBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBhbG9u
ZyB3aXRoIGd0ZXN0X2xpc3RfdGVzdHM7Ci0gICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlm
IHRoZSBmbGFnIHNob3VsZCBub3QgYmUgcHJlc2VudC4KKyAgICAgIGZsYWdfdmFsdWU6ICAgICAg
ICAgdmFsdWUgb2YgdGhlIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnOworICAgICAgICAgICAgICAg
ICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBub3QgYmUgcHJlc2VudC4KKyAgICAg
IGV4cGVjdGVkX291dHB1dF9yZTogcmVndWxhciBleHByZXNzaW9uIHRoYXQgbWF0Y2hlcyB0aGUg
ZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGFmdGVyIHJ1bm5pbmcg
Y29tbWFuZDsKKyAgICAgIG90aGVyX2ZsYWc6ICAgICAgICAgYSBkaWZmZXJlbnQgZmxhZyB0byBi
ZSBwYXNzZWQgdG8gY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICBhbG9uZyB3aXRo
IGd0ZXN0X2xpc3RfdGVzdHM7CisgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUgaWYgdGhl
IGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgogICAgICIiIgogCiAgICAgaWYgZmxhZ192YWx1
ZSBpcyBOb25lOgpAQCAtMTMyLDM2ICsxNTcsNDEgQEAgZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBm
bGFnX3ZhbHVlLCBleHBlY3RlZF9vdXRwdXQsIG90aGVyX2ZsYWcpOgogCiAgICAgb3V0cHV0ID0g
UnVuKGFyZ3MpCiAKLSAgICBtc2cgPSAoJ3doZW4gJXMgaXMgJXMsIHRoZSBvdXRwdXQgb2YgIiVz
IiBpcyAiJXMiLicgJQotICAgICAgICAgICAoTElTVF9URVNUU19GTEFHLCBmbGFnX2V4cHJlc3Np
b24sICcgJy5qb2luKGFyZ3MpLCBvdXRwdXQpKQotCi0gICAgaWYgZXhwZWN0ZWRfb3V0cHV0IGlz
IG5vdCBOb25lOgotICAgICAgc2VsZi5hc3NlcnRfKG91dHB1dCA9PSBleHBlY3RlZF9vdXRwdXQs
IG1zZykKKyAgICBpZiBleHBlY3RlZF9vdXRwdXRfcmU6CisgICAgICBzZWxmLmFzc2VydF8oCisg
ICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0X3JlLm1hdGNoKG91dHB1dCksCisgICAgICAgICAgKCd3
aGVuICVzIGlzICVzLCB0aGUgb3V0cHV0IG9mICIlcyIgaXMgIiVzIixcbicKKyAgICAgICAgICAg
J3doaWNoIGRvZXMgbm90IG1hdGNoIHJlZ2V4ICIlcyInICUKKyAgICAgICAgICAgKExJU1RfVEVT
VFNfRkxBRywgZmxhZ19leHByZXNzaW9uLCAnICcuam9pbihhcmdzKSwgb3V0cHV0LAorICAgICAg
ICAgICAgZXhwZWN0ZWRfb3V0cHV0X3JlLnBhdHRlcm4pKSkKICAgICBlbHNlOgotICAgICAgc2Vs
Zi5hc3NlcnRfKG91dHB1dCAhPSBFWFBFQ1RFRF9PVVRQVVRfTk9fRklMVEVSLCBtc2cpCisgICAg
ICBzZWxmLmFzc2VydF8oCisgICAgICAgICAgbm90IEVYUEVDVEVEX09VVFBVVF9OT19GSUxURVJf
UkUubWF0Y2gob3V0cHV0KSwKKyAgICAgICAgICAoJ3doZW4gJXMgaXMgJXMsIHRoZSBvdXRwdXQg
b2YgIiVzIiBpcyAiJXMiJyUKKyAgICAgICAgICAgKExJU1RfVEVTVFNfRkxBRywgZmxhZ19leHBy
ZXNzaW9uLCAnICcuam9pbihhcmdzKSwgb3V0cHV0KSkpCiAKICAgZGVmIHRlc3REZWZhdWx0QmVo
YXZpb3Ioc2VsZik6CiAgICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0IG1v
ZGUuIiIiCiAKICAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPU5vbmUsCi0gICAgICAg
ICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0PU5vbmUsCisgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfb3V0cHV0X3JlPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJf
ZmxhZz1Ob25lKQogCiAgIGRlZiB0ZXN0RmxhZyhzZWxmKToKICAgICAiIiJUZXN0cyB1c2luZyB0
aGUgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuIiIiCiAKICAgICBzZWxmLlJ1bkFuZFZlcmlmeShm
bGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXQ9Tm9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9Tm9uZSwKICAgICAg
ICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPU5vbmUpCiAgICAgc2VsZi5SdW5BbmRWZXJpZnko
ZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0PUVY
UEVDVEVEX09VVFBVVF9OT19GSUxURVIsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRf
b3V0cHV0X3JlPUVYUEVDVEVEX09VVFBVVF9OT19GSUxURVJfUkUsCiAgICAgICAgICAgICAgICAg
ICAgICAgb3RoZXJfZmxhZz1Ob25lKQogCiAgIGRlZiB0ZXN0T3ZlcnJpZGVOb25GaWx0ZXJGbGFn
cyhzZWxmKToKICAgICAiIiJUZXN0cyB0aGF0IC0tZ3Rlc3RfbGlzdF90ZXN0cyBvdmVycmlkZXMg
dGhlIG5vbi1maWx0ZXIgZmxhZ3MuIiIiCiAKICAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3Zh
bHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXQ9RVhQRUNURURf
T1VUUFVUX05PX0ZJTFRFUiwKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRf
cmU9RVhQRUNURURfT1VUUFVUX05PX0ZJTFRFUl9SRSwKICAgICAgICAgICAgICAgICAgICAgICBv
dGhlcl9mbGFnPSctLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUnKQogCiAgIGRlZiB0ZXN0V2l0aEZp
bHRlckZsYWdzKHNlbGYpOgpAQCAtMTY5LDcgKzE5OSw3IEBAIGRlZiB0ZXN0V2l0aEZpbHRlckZs
YWdzKHNlbGYpOgogICAgIC0tZ3Rlc3RfZmlsdGVyIGZsYWcuIiIiCiAKICAgICBzZWxmLlJ1bkFu
ZFZlcmlmeShmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9v
dXRwdXQ9RVhQRUNURURfT1VUUFVUX0ZJTFRFUl9GT08sCisgICAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRfb3V0cHV0X3JlPUVYUEVDVEVEX09VVFBVVF9GSUxURVJfRk9PX1JFLAogICAgICAg
ICAgICAgICAgICAgICAgIG90aGVyX2ZsYWc9Jy0tZ3Rlc3RfZmlsdGVyPUZvbyonKQogCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191
bml0dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVz
dHNfdW5pdHRlc3RfLmNjCmluZGV4IGEwZWQwODI1YjVkODg5NjkyMzAxYzVhNGQ0ZjBlYjc1YmFi
YzViYzguLjkwN2MxNzZiYTk1NTVkNjhjNzRmNGRmY2NiOTY3ZmRjOTFlOTgyYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVz
dF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X3Rlc3Rz
X3VuaXR0ZXN0Xy5jYwpAQCAtMzgsOSArMzgsNyBAQAogLy8gVGhpcyBwcm9ncmFtIHdpbGwgYmUg
aW52b2tlZCBmcm9tIGEgUHl0aG9uIHVuaXQgdGVzdC4KIC8vIERvbid0IHJ1biBpdCBkaXJlY3Rs
eS4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLW5hbWVzcGFjZSB7CisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKIAogLy8gU2V2ZXJhbCBkaWZmZXJlbnQgdGVzdCBjYXNlcyBhbmQgdGVz
dHMgdGhhdCB3aWxsIGJlIGxpc3RlZC4KIFRFU1QoRm9vLCBCYXIxKSB7CkBAIC03Niw3ICs3NCw4
MSBAQCBURVNUX0YoRm9vVGVzdCwgVGVzdDMpIHsKIFRFU1QoRm9vRGVhdGhUZXN0LCBUZXN0MSkg
ewogfQogCi19ICAvLyBuYW1lc3BhY2UKKy8vIEEgZ3JvdXAgb2YgdmFsdWUtcGFyYW1ldGVyaXpl
ZCB0ZXN0cy4KKworY2xhc3MgTXlUeXBlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IE15VHlwZShj
b25zdCBzdGQ6OnN0cmluZyYgYV92YWx1ZSkgOiB2YWx1ZV8oYV92YWx1ZSkge30KKworICBjb25z
dCBzdGQ6OnN0cmluZyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KKworIHByaXZh
dGU6CisgIHN0ZDo6c3RyaW5nIHZhbHVlXzsKK307CisKKy8vIFRlYWNoZXMgR29vZ2xlIFRlc3Qg
aG93IHRvIHByaW50IGEgTXlUeXBlLgordm9pZCBQcmludFRvKGNvbnN0IE15VHlwZSYgeCwgc3Rk
Ojpvc3RyZWFtKiBvcykgeworICAqb3MgPDwgeC52YWx1ZSgpOworfQorCitjbGFzcyBWYWx1ZVBh
cmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPE15VHlwZT4geworfTsKKwor
VEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBUZXN0QSkgeworfQorCitURVNUX1AoVmFsdWVQYXJhbVRl
c3QsIFRlc3RCKSB7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKAorICAgIE15SW5zdGFu
dGlhdGlvbiwgVmFsdWVQYXJhbVRlc3QsCisgICAgdGVzdGluZzo6VmFsdWVzKE15VHlwZSgib25l
IGxpbmUiKSwKKyAgICAgICAgICAgICAgICAgICAgTXlUeXBlKCJ0d29cbmxpbmVzIiksCisgICAg
ICAgICAgICAgICAgICAgIE15VHlwZSgiYSB2ZXJ5XG5sb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb25n
IGxpbmUiKSkpOyAgLy8gTk9MSU5UCisKKy8vIEEgZ3JvdXAgb2YgdHlwZWQgdGVzdHMuCisKKy8v
IEEgZGVsaWJlcmF0ZWx5IGxvbmcgdHlwZSBuYW1lIGZvciB0ZXN0aW5nIHRoZSBsaW5lLXRydW5j
YXRpbmcKKy8vIGJlaGF2aW9yIHdoZW4gcHJpbnRpbmcgYSB0eXBlIHBhcmFtZXRlci4KK2NsYXNz
IFZlcnlMb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb2dOYW1lIHsgIC8vIE5PTElOVAorfTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlZFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgaW50IGtTaXplPgorY2xhc3MgTXlBcnJh
eSB7Cit9OworCit0eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPFZlcnlMb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb2dOYW1lLCAgLy8gTk9MSU5UCisgICAgICAgICAgICAgICAgICAgICAgIGludCosIE15QXJy
YXk8Ym9vbCwgNDI+ID4gTXlUeXBlczsKKworVFlQRURfVEVTVF9DQVNFKFR5cGVkVGVzdCwgTXlU
eXBlcyk7CisKK1RZUEVEX1RFU1QoVHlwZWRUZXN0LCBUZXN0QSkgeworfQorCitUWVBFRF9URVNU
KFR5cGVkVGVzdCwgVGVzdEIpIHsKK30KKworLy8gQSBncm91cCBvZiB0eXBlLXBhcmFtZXRlcml6
ZWQgdGVzdHMuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZVBhcmFtVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKFR5cGVQYXJh
bVRlc3QpOworCitUWVBFRF9URVNUX1AoVHlwZVBhcmFtVGVzdCwgVGVzdEEpIHsKK30KKworVFlQ
RURfVEVTVF9QKFR5cGVQYXJhbVRlc3QsIFRlc3RCKSB7Cit9CisKK1JFR0lTVEVSX1RZUEVEX1RF
U1RfQ0FTRV9QKFR5cGVQYXJhbVRlc3QsIFRlc3RBLCBUZXN0Qik7CisKK0lOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QKE15LCBUeXBlUGFyYW1UZXN0LCBNeVR5cGVzKTsKIAogaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CiAgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9tYWluX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9t
YWluX3VuaXR0ZXN0LmNjCmluZGV4IDdhM2YwYWRmYWRmNmQ3ZTVjMTk1YjMxOTQ0NzE0ZDVhYzQx
YmI4ZTMuLmVjZDliYjg3NmZmN2NlOWU4Y2VhM2QzMDIyNGQyODhhOWIxOWU3MDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbWFpbl91bml0dGVzdC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X21haW5fdW5pdHRlc3QuY2MK
QEAgLTI5LDcgKzI5LDcgQEAKIC8vCiAvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9u
ZyBXYW4pCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCiAKIC8vIFRlc3RzIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBkZWZpbmUgbWFpbigpIHdoZW4g
d2UgbGluayB0bwogLy8gZ3Rlc3RfbWFpbiBpbnN0ZWFkIG9mIGd0ZXN0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9uYy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbmMuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDczYjVkYjZkNDE4MzA5YTQ3YTIzZGZmMTgwMDUzYjc1ZDMyMDEyNGYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF9uYy5jYworKysgL2Rldi9udWxsCkBAIC0xLDIzNCArMCwwIEBACi0vLyBDb3B5
cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1
dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBUaGlzIGZpbGUgaXMgdGhlIGlucHV0IHRv
IGEgbmVnYXRpdmUtY29tcGlsYXRpb24gdGVzdCBmb3IgR29vZ2xlCi0vLyBUZXN0LiAgQ29kZSBo
ZXJlIGlzIE5PVCBzdXBwb3NlZCB0byBjb21waWxlLiAgSXRzIHB1cnBvc2UgaXMgdG8KLS8vIHZl
cmlmeSB0aGF0IGNlcnRhaW4gaW5jb3JyZWN0IHVzYWdlcyBvZiB0aGUgR29vZ2xlIFRlc3QgQVBJ
IGFyZQotLy8gaW5kZWVkIHJlamVjdGVkIGJ5IHRoZSBjb21waWxlci4KLS8vCi0vLyBXZSBzdGls
bCBuZWVkIHRvIHdyaXRlIHRoZSBuZWdhdGl2ZS1jb21waWxhdGlvbiB0ZXN0IGl0c2VsZiwgd2hp
Y2gKLS8vIHdpbGwgYmUgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIGJ1aWxkIGVudmlyb25tZW50
LgotLy8KLS8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBmaW5pc2ggdGhlIG5lZ2F0aXZlLWNvbXBp
bGF0aW9uIHRlc3QuCi0KLSNpZmRlZiBURVNUX0NBTk5PVF9JR05PUkVfUlVOX0FMTF9URVNUU19S
RVNVTFQKLS8vIFRlc3RzIHRoYXQgdGhlIHJlc3VsdCBvZiBSVU5fQUxMX1RFU1RTKCkgY2Fubm90
IGJlIGlnbm9yZWQuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1pbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFy
Z3YpOwotICBSVU5fQUxMX1RFU1RTKCk7ICAvLyBUaGlzIGxpbmUgc2hvdWxkbid0IGNvbXBpbGUu
Ci19Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9VU0VSX0NBTk5PVF9JTkNMVURFX0dURVNUX0lOVEVS
TkFMX0lOTF9IKQotLy8gVGVzdHMgdGhhdCBhIHVzZXIgY2Fubm90IGluY2x1ZGUgZ3Rlc3QtaW50
ZXJuYWwtaW5sLmggaW4gaGlzIGNvZGUuCi0KLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwt
aW5sLmgiCi0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRDSEVTX0RFQ0xBUklOR19TRVRVUF9JTl9U
RVNUX0ZJWFRVUkVfV0lUSF9UWVBPKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0Y2hl
cyB0aGUgdHlwbyB3aGVuIGEgdXNlciBkZWNsYXJlcyBhCi0vLyBTZXR1cCgpIG1ldGhvZCBpbiBh
IHRlc3QgZml4dHVyZS4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLWNsYXNzIE15VGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZvaWQgU2V0dXAoKSB7
fQotfTsKLQotI2VsaWYgZGVmaW5lZChURVNUX0NBVENIRVNfQ0FMTElOR19TRVRVUF9JTl9URVNU
X1dJVEhfVFlQTykKLS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgdGhlIHR5cG8g
d2hlbiBhIHVzZXIgY2FsbHMgU2V0dXAoKQotLy8gZnJvbSBhIHRlc3QgZml4dHVyZS4KLQotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLWNsYXNzIE15VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICB0ZXN0aW5n
OjpUZXN0OjpTZXR1cCgpOyAgLy8gVHJpZXMgdG8gY2FsbCBTZXRVcCgpIGluIHRoZSBwYXJlbnQg
Y2xhc3MuCi0gIH0KLX07Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRDSEVTX0RFQ0xBUklOR19T
RVRVUF9JTl9FTlZJUk9OTUVOVF9XSVRIX1RZUE8pCi0vLyBUZXN0cyB0aGF0IHRoZSBjb21waWxl
ciBjYXRjaGVzIHRoZSB0eXBvIHdoZW4gYSB1c2VyIGRlY2xhcmVzIGEKLS8vIFNldHVwKCkgbWV0
aG9kIGluIGEgc3ViY2xhc3Mgb2YgRW52aXJvbm1lbnQuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgotCi1jbGFzcyBNeUVudmlyb25tZW50IDogcHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50
IHsKLSBwdWJsaWM6Ci0gIHZvaWQgU2V0dXAoKSB7fQotfTsKLQotI2VsaWYgZGVmaW5lZChURVNU
X0NBVENIRVNfQ0FMTElOR19TRVRVUF9JTl9FTlZJUk9OTUVOVF9XSVRIX1RZUE8pCi0vLyBUZXN0
cyB0aGF0IHRoZSBjb21waWxlciBjYXRjaGVzIHRoZSB0eXBvIHdoZW4gYSB1c2VyIGNhbGxzIFNl
dHVwKCkKLS8vIGluIGFuIEVudmlyb25tZW50LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
LQotY2xhc3MgTXlFbnZpcm9ubWVudCA6IHB1YmxpYyB0ZXN0aW5nOjpFbnZpcm9ubWVudCB7Ci0g
cHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgLy8gVHJpZXMgdG8gY2Fs
bCBTZXRVcCgpIGluIHRoZSBwYXJlbnQgY2xhc3MuCi0gICAgdGVzdGluZzo6RW52aXJvbm1lbnQ6
OlNldHVwKCk7Ci0gIH0KLX07Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRDSEVTX1dST05HX0NB
U0VfSU5fVFlQRURfVEVTVF9QKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0Y2hlcyB1
c2luZyB0aGUgd3JvbmcgdGVzdCBjYXNlIG5hbWUgaW4KLS8vIFRZUEVEX1RFU1RfUC4KLQotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgRm9v
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotY2xhc3MgQmFyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RF
U1RfQ0FTRV9QKEZvb1Rlc3QpOwotVFlQRURfVEVTVF9QKEJhclRlc3QsIEEpIHt9ICAvLyBXcm9u
ZyB0ZXN0IGNhc2UgbmFtZS4KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsIEEp
OwotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIHRlc3Rpbmc6OlR5
cGVzPGludD4pOwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19XUk9OR19DQVNFX0lOX1JF
R0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0
Y2hlcyB1c2luZyB0aGUgd3JvbmcgdGVzdCBjYXNlIG5hbWUgaW4KLS8vIFJFR0lTVEVSX1RZUEVE
X1RFU1RfQ0FTRV9QLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBCYXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewotfTsKLQotVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7Ci1UWVBFRF9URVNUX1AoRm9v
VGVzdCwgQSkge30KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEJhclRlc3QsIEEpOyAgLy8g
V3JvbmcgdGVzdCBjYXNlIG5hbWUuCi1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwg
Rm9vVGVzdCwgdGVzdGluZzo6VHlwZXM8aW50Pik7Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRD
SEVTX1dST05HX0NBU0VfSU5fSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1ApCi0vLyBUZXN0
cyB0aGF0IHRoZSBjb21waWxlciBjYXRjaGVzIHVzaW5nIHRoZSB3cm9uZyB0ZXN0IGNhc2UgbmFt
ZSBpbgotLy8gSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AuCi0KLSNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEZvb1Rlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEJh
clRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChG
b29UZXN0KTsKLVRZUEVEX1RFU1RfUChGb29UZXN0LCBBKSB7fQotUkVHSVNURVJfVFlQRURfVEVT
VF9DQVNFX1AoRm9vVGVzdCwgQSk7Ci0KLS8vIFdyb25nIHRlc3QgY2FzZSBuYW1lLgotSU5TVEFO
VElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEJhclRlc3QsIHRlc3Rpbmc6OlR5cGVzPGludD4p
OwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19JTlNUQU5USUFURV9UWVBFRF9URVNFVF9D
QVNFX1BfV0lUSF9TQU1FX05BTUVfUFJFRklYKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIg
Y2F0Y2hlcyBpbnN0YW50aWF0aW5nIFRZUEVEX1RFU1RfQ0FTRV9QCi0vLyB0d2ljZSB3aXRoIHRo
ZSBzYW1lIG5hbWUgcHJlZml4LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewot
fTsKLQotVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7Ci1UWVBFRF9URVNUX1AoRm9vVGVzdCwg
QSkge30KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsIEEpOwotCi1JTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgdGVzdGluZzo6VHlwZXM8aW50Pik7
Ci0KLS8vIFdyb25nIG5hbWUgcHJlZml4OiAiTXkiIGhhcyBiZWVuIHVzZWQuCi1JTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgdGVzdGluZzo6VHlwZXM8ZG91YmxlPik7
Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9TVEFUSUNfQVNTRVJUX1RZUEVfRVFfSVNfTk9UX0FfVFlQ
RSkKLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLS8vIFRlc3RzIHRoYXQgU3RhdGljQXNz
ZXJ0VHlwZUVxPFQxLCBUMj4gY2Fubm90IGJlIHVzZWQgYXMgYSB0eXBlLgotdGVzdGluZzo6U3Rh
dGljQXNzZXJ0VHlwZUVxPGludCwgaW50PiBkdW1teTsKLQotI2VsaWYgZGVmaW5lZChURVNUX1NU
QVRJQ19BU1NFUlRfVFlQRV9FUV9XT1JLU19JTl9OQU1FU1BBQ0UpCi0KLSNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgotCi0vLyBUZXN0cyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+IHdv
cmtzIGluIGEgbmFtZXNwYWNlIHNjb3BlLgotc3RhdGljIGJvb2wgZHVtbXkgPSB0ZXN0aW5nOjpT
dGF0aWNBc3NlcnRUeXBlRXE8aW50LCBjb25zdCBpbnQ+KCk7Ci0KLSNlbGlmIGRlZmluZWQoVEVT
VF9TVEFUSUNfQVNTRVJUX1RZUEVfRVFfV09SS1NfSU5fQ0xBU1MpCi0KLSNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEhlbHBlciB7Ci0gcHVi
bGljOgotICAvLyBUZXN0cyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+IHdvcmtzIGlu
IGEgY2xhc3MuCi0gIEhlbHBlcigpIHsgdGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGludCwg
VD4oKTsgfQotCi0gIHZvaWQgRG9Tb21ldGhpbmcoKSB7fQotfTsKLQotdm9pZCBUZXN0KCkgewot
ICBIZWxwZXI8Ym9vbD4gaDsKLSAgaC5Eb1NvbWV0aGluZygpOyAgLy8gVG8gYXZvaWQgdGhlICJ1
bnVzZWQgdmFyaWFibGUiIHdhcm5pbmcuCi19Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9TVEFUSUNf
QVNTRVJUX1RZUEVfRVFfV09SS1NfSU5fRlVOQ1RJT04pCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgotCi12b2lkIFRlc3QoKSB7Ci0gIC8vIFRlc3RzIHRoYXQgU3RhdGljQXNzZXJ0VHlwZUVx
PFQxLCBUMj4gd29ya3MgaW5zaWRlIGEgZnVuY3Rpb24uCi0gIHRlc3Rpbmc6OlN0YXRpY0Fzc2Vy
dFR5cGVFcTxjb25zdCBpbnQsIGludD4oKTsKLX0KLQotI2Vsc2UKLS8vIEEgc2FuaXR5IHRlc3Qu
ICBUaGlzIHNob3VsZCBjb21waWxlLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotaW50
IG1haW4oKSB7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19Ci0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9uY190ZXN0LnB5IGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9uY190ZXN0LnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCAwNmZmYjNmODAzOGYwYTU3OTZlNGI2ZDYyOWQwMmU4MDU2NWEyNDM4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbmNfdGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0x
LDEwNiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDcs
IEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0j
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ci0iIiJOZWdhdGl2ZSBjb21waWxhdGlvbiB0ZXN0IGZvciBHb29nbGUgVGVzdC4iIiIKLQotX19h
dXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IG9zCi1p
bXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1JU19MSU5VWCA9IG9zLm5hbWUgPT0gJ3Bv
c2l4JyBhbmQgb3MudW5hbWUoKVswXSA9PSAnTGludXgnCi1pZiBub3QgSVNfTElOVVg6Ci0gIHN5
cy5leGl0KDApICAjIE5lZ2F0aXZlIGNvbXBpbGF0aW9uIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVk
IG9uIFdpbmRvd3MgJiBNYWMuCi0KLQotY2xhc3MgR1Rlc3ROQ1Rlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgotICAiIiJOZWdhdGl2ZSBjb21waWxhdGlvbiB0ZXN0IGZvciBHb29nbGUgVGVzdC4iIiIK
LQotICBkZWYgdGVzdENvbXBpbGVyRXJyb3Ioc2VsZik6Ci0gICAgIiIiVmVyaWZpZXMgdGhhdCBl
cnJvbmVvdXMgY29kZSBsZWFkcyB0byBleHBlY3RlZCBjb21waWxlcgotICAgIG1lc3NhZ2VzLiIi
IgotCi0gICAgIyBEZWZpbmVzIGEgbGlzdCBvZiB0ZXN0IHNwZWNzLCB3aGVyZSBlYWNoIGVsZW1l
bnQgaXMgYSB0dXBsZQotICAgICMgKHRlc3QgbmFtZSwgbGlzdCBvZiByZWdleGVzIGZvciBtYXRj
aGluZyB0aGUgY29tcGlsZXIgZXJyb3JzKS4KLSAgICB0ZXN0X3NwZWNzID0gWwotICAgICAgKCdD
QU5OT1RfSUdOT1JFX1JVTl9BTExfVEVTVFNfUkVTVUxUJywKLSAgICAgICBbcidpZ25vcmluZyBy
ZXR1cm4gdmFsdWUnXSksCi0KLSAgICAgICgnVVNFUl9DQU5OT1RfSU5DTFVERV9HVEVTVF9JTlRF
Uk5BTF9JTkxfSCcsCi0gICAgICAgW3InbXVzdCBub3QgYmUgaW5jbHVkZWQgZXhjZXB0IGJ5IEdv
b2dsZSBUZXN0IGl0c2VsZiddKSwKLQotICAgICAgKCdDQVRDSEVTX0RFQ0xBUklOR19TRVRVUF9J
Tl9URVNUX0ZJWFRVUkVfV0lUSF9UWVBPJywKLSAgICAgICBbcidTZXR1cF9zaG91bGRfYmVfc3Bl
bGxlZF9TZXRVcCddKSwKLQotICAgICAgKCdDQVRDSEVTX0NBTExJTkdfU0VUVVBfSU5fVEVTVF9X
SVRIX1RZUE8nLAotICAgICAgIFtyJ1NldHVwX3Nob3VsZF9iZV9zcGVsbGVkX1NldFVwJ10pLAot
Ci0gICAgICAoJ0NBVENIRVNfREVDTEFSSU5HX1NFVFVQX0lOX0VOVklST05NRU5UX1dJVEhfVFlQ
TycsCi0gICAgICAgW3InU2V0dXBfc2hvdWxkX2JlX3NwZWxsZWRfU2V0VXAnXSksCi0KLSAgICAg
ICgnQ0FUQ0hFU19DQUxMSU5HX1NFVFVQX0lOX0VOVklST05NRU5UX1dJVEhfVFlQTycsCi0gICAg
ICAgW3InU2V0dXBfc2hvdWxkX2JlX3NwZWxsZWRfU2V0VXAnXSksCi0KLSAgICAgICgnQ0FUQ0hF
U19XUk9OR19DQVNFX0lOX1RZUEVEX1RFU1RfUCcsCi0gICAgICAgW3InQmFyVGVzdC4qd2FzIG5v
dCBkZWNsYXJlZCddKSwKLQotICAgICAgKCdDQVRDSEVTX1dST05HX0NBU0VfSU5fUkVHSVNURVJf
VFlQRURfVEVTVF9DQVNFX1AnLAotICAgICAgIFtyJ0JhclRlc3QuKndhcyBub3QgZGVjbGFyZWQn
XSksCi0KLSAgICAgICgnQ0FUQ0hFU19XUk9OR19DQVNFX0lOX0lOU1RBTlRJQVRFX1RZUEVEX1RF
U1RfQ0FTRV9QJywKLSAgICAgICBbcidCYXJUZXN0Lipub3QgZGVjbGFyZWQnXSksCi0KLSAgICAg
ICgnQ0FUQ0hFU19JTlNUQU5USUFURV9UWVBFRF9URVNFVF9DQVNFX1BfV0lUSF9TQU1FX05BTUVf
UFJFRklYJywKLSAgICAgICBbcidyZWRlZmluaXRpb24gb2YuKk15LipGb29UZXN0J10pLAotCi0g
ICAgICAoJ1NUQVRJQ19BU1NFUlRfVFlQRV9FUV9JU19OT1RfQV9UWVBFJywKLSAgICAgICBbcidT
dGF0aWNBc3NlcnRUeXBlRXEuKiBkb2VzIG5vdCBuYW1lIGEgdHlwZSddKSwKLQotICAgICAgKCdT
VEFUSUNfQVNTRVJUX1RZUEVfRVFfV09SS1NfSU5fTkFNRVNQQUNFJywKLSAgICAgICBbcidTdGF0
aWNBc3NlcnRUeXBlRXEuKmludC4qY29uc3QgaW50J10pLAotCi0gICAgICAoJ1NUQVRJQ19BU1NF
UlRfVFlQRV9FUV9XT1JLU19JTl9DTEFTUycsCi0gICAgICAgW3InU3RhdGljQXNzZXJ0VHlwZUVx
LippbnQuKmJvb2wnXSksCi0KLSAgICAgICgnU1RBVElDX0FTU0VSVF9UWVBFX0VRX1dPUktTX0lO
X0ZVTkNUSU9OJywKLSAgICAgICBbcidTdGF0aWNBc3NlcnRUeXBlRXEuKmNvbnN0IGludC4qaW50
J10pLAotCi0gICAgICAoJ1NBTklUWScsCi0gICAgICAgTm9uZSkKLSAgICAgIF0KLQotICAgICMg
VE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHZlcmlmeSB0aGF0IHRoZSB0ZXN0IHNwZWNzIGFyZSBzYXRp
c2ZpZWQuCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgdW5pdHRlc3QubWFpbigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X25vX3Rlc3Rf
dW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X25vX3Rlc3Rf
dW5pdHRlc3QuY2MKaW5kZXggYWZlMmRjMGM5MmZlNDNhZTkzNWIyMmNlZjMxNzdlNTE4NGI3ZmZh
MS4uMjkyNTk5YWY4ZDA4ZDY4M2Q4YWY4NmZlZTk3ZmEzYzVhNjE2YTY2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9ub190ZXN0X3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdC5j
YwpAQCAtMzIsMjMgKzMyLDI1IEBACiAvLwogLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhh
bnlvbmcgV2FuKQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQorI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewogICB0ZXN0aW5n
OjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CiAKICAgLy8gQW4gYWQtaG9jIGFzc2VydGlv
biBvdXRzaWRlIG9mIGFsbCB0ZXN0cy4KICAgLy8KLSAgLy8gVGhpcyBzZXJ2ZXMgdHdvIHB1cnBv
c2VzOgorICAvLyBUaGlzIHNlcnZlcyB0aHJlZSBwdXJwb3NlczoKICAgLy8KICAgLy8gMS4gSXQg
dmVyaWZpZXMgdGhhdCBhbiBhZC1ob2MgYXNzZXJ0aW9uIGNhbiBiZSBleGVjdXRlZCBldmVuIGlm
CiAgIC8vICAgIG5vIHRlc3QgaXMgZGVmaW5lZC4KLSAgLy8gMi4gV2UgaGFkIGEgYnVnIHdoZXJl
IHRoZSBYTUwgb3V0cHV0IHdvbid0IGJlIGdlbmVyYXRlZCBpZiBhbgorICAvLyAyLiBJdCB2ZXJp
ZmllcyB0aGF0IGEgZmFpbGVkIGFkLWhvYyBhc3NlcnRpb24gY2F1c2VzIHRoZSB0ZXN0CisgIC8v
ICAgIHByb2dyYW0gdG8gZmFpbC4KKyAgLy8gMy4gV2UgaGFkIGEgYnVnIHdoZXJlIHRoZSBYTUwg
b3V0cHV0IHdvbid0IGJlIGdlbmVyYXRlZCBpZiBhbgogICAvLyAgICBhc3NlcnRpb24gaXMgZXhl
Y3V0ZWQgYmVmb3JlIFJVTl9BTExfVEVTVFMoKSBpcyBjYWxsZWQsIGV2ZW4KICAgLy8gICAgdGhv
dWdoIC0tZ3Rlc3Rfb3V0cHV0PXhtbCBpcyBzcGVjaWZpZWQuICBUaGlzIG1ha2VzIHN1cmUgdGhl
CiAgIC8vICAgIGJ1ZyBpcyBmaXhlZCBhbmQgZG9lc24ndCByZWdyZXNzLgotICBFWFBFQ1RfRVEo
MSwgMSk7CisgIEVYUEVDVF9FUSgxLCAyKTsKIAotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwor
ICAvLyBUaGUgYWJvdmUgRVhQRUNUX0VRKCkgc2hvdWxkIGNhdXNlIFJVTl9BTExfVEVTVFMoKSB0
byByZXR1cm4gbm9uLXplcm8uCisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCkgPyAwIDogMTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rl
c3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0LnB5
CmluZGV4IDE5MjAzMGEyMDIwYmZkNDFlOTRjNGU0OTE0Y2FiYTM4ZGI3NGYyZmIuLjA2ZGJlZTA5
ODA1MDY4NWU1YzBjNWI1YzQ1YTM0N2FmNzk5OTczZTYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdC5weQpAQCAtMzIsNyArMzIsNyBAQAog
IiIiVGVzdHMgdGhlIHRleHQgb3V0cHV0IG9mIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsu
CiAKIFNZTk9QU0lTCi0gICAgICAgZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkgLS1ndGVzdF9idWlsZF9k
aXI9QlVJTEQvRElSIC0tZ2VuZ29sZGVuCisgICAgICAgZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkgLS1i
dWlsZF9kaXI9QlVJTEQvRElSIC0tZ2VuZ29sZGVuCiAgICAgICAgICAjIHdoZXJlIEJVSUxEL0RJ
UiBjb250YWlucyB0aGUgYnVpbHQgZ3Rlc3Rfb3V0cHV0X3Rlc3RfIGZpbGUuCiAgICAgICAgZ3Rl
c3Rfb3V0cHV0X3Rlc3QucHkgLS1nZW5nb2xkZW4KICAgICAgICBndGVzdF9vdXRwdXRfdGVzdC5w
eQpAQCAtNDAsNiArNDAsNyBAQAogCiBfX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFu
eW9uZyBXYW4pJwogCitpbXBvcnQgZGlmZmxpYgogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9y
dCBzeXMKQEAgLTUyLDMwICs1MywyOCBAQAogCiBJU19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQn
CiAKLWlmIElTX1dJTkRPV1M6Ci0gIEdPTERFTl9OQU1FID0gJ2d0ZXN0X291dHB1dF90ZXN0X2dv
bGRlbl93aW4udHh0JwotZWxzZToKLSAgR09MREVOX05BTUUgPSAnZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
Z29sZGVuX2xpbi50eHQnCisjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IHJlbW92ZSB0aGUgX2xp
biBzdWZmaXguCitHT0xERU5fTkFNRSA9ICdndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fbGluLnR4
dCcKIAogUFJPR1JBTV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBh
dGgoJ2d0ZXN0X291dHB1dF90ZXN0XycpCiAKICMgQXQgbGVhc3Qgb25lIGNvbW1hbmQgd2UgZXhl
cmNpc2UgbXVzdCBub3QgaGF2ZSB0aGUKLSMgLS1ndGVzdF9pbnRlcm5hbF9za2lwX2Vudmlyb25t
ZW50X2FuZF9hZF9ob2NfdGVzdHMgZmxhZy4KKyMgJ2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRf
YW5kX2FkX2hvY190ZXN0cycgYXJndW1lbnQuCiBDT01NQU5EX0xJU1RfVEVTVFMgPSAoe30sIFtQ
Uk9HUkFNX1BBVEgsICctLWd0ZXN0X2xpc3RfdGVzdHMnXSkKIENPTU1BTkRfV0lUSF9DT0xPUiA9
ICh7fSwgW1BST0dSQU1fUEFUSCwgJy0tZ3Rlc3RfY29sb3I9eWVzJ10pCiBDT01NQU5EX1dJVEhf
VElNRSA9ICh7fSwgW1BST0dSQU1fUEFUSCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0t
Z3Rlc3RfcHJpbnRfdGltZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICctLWd0ZXN0X2lu
dGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cycsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICdpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMn
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ndGVzdF9maWx0ZXI9RmF0YWxGYWlsdXJl
VGVzdC4qOkxvZ2dpbmdUZXN0LionXSkKIENPTU1BTkRfV0lUSF9ESVNBQkxFRCA9ICgKICAgICB7
fSwgW1BST0dSQU1fUEFUSCwKICAgICAgICAgICctLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rl
c3RzJywKLSAgICAgICAgICctLWd0ZXN0X2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2Fk
X2hvY190ZXN0cycsCisgICAgICAgICAnaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRf
aG9jX3Rlc3RzJywKICAgICAgICAgICctLWd0ZXN0X2ZpbHRlcj0qRElTQUJMRURfKiddKQogQ09N
TUFORF9XSVRIX1NIQVJESU5HID0gKAogICAgIHsnR1RFU1RfU0hBUkRfSU5ERVgnOiAnMScsICdH
VEVTVF9UT1RBTF9TSEFSRFMnOiAnMid9LAogICAgIFtQUk9HUkFNX1BBVEgsCi0gICAgICctLWd0
ZXN0X2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cycsCisgICAgICdp
bnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMnLAogICAgICAnLS1ndGVz
dF9maWx0ZXI9UGFzc2luZ1Rlc3QuKiddKQogCiBHT0xERU5fUEFUSCA9IG9zLnBhdGguam9pbihn
dGVzdF90ZXN0X3V0aWxzLkdldFNvdXJjZURpcigpLCBHT0xERU5fTkFNRSkKQEAgLTEzOCw2ICsx
MzcsMjAgQEAgZGVmIFJlbW92ZVR5cGVJbmZvRGV0YWlscyh0ZXN0X291dHB1dCk6CiAgIHJldHVy
biByZS5zdWIocid1bnNpZ25lZCBpbnQnLCAndW5zaWduZWQnLCB0ZXN0X291dHB1dCkKIAogCitk
ZWYgTm9ybWFsaXplVG9DdXJyZW50UGxhdGZvcm0odGVzdF9vdXRwdXQpOgorICAiIiJOb3JtYWxp
emVzIHBsYXRmb3JtIHNwZWNpZmljIG91dHB1dCBkZXRhaWxzIGZvciBlYXNpZXIgY29tcGFyaXNv
bi4iIiIKKworICBpZiBJU19XSU5ET1dTOgorICAgICMgUmVtb3ZlcyB0aGUgY29sb3IgaW5mb3Jt
YXRpb24gdGhhdCBpcyBub3QgcHJlc2VudCBvbiBXaW5kb3dzLgorICAgIHRlc3Rfb3V0cHV0ID0g
cmUuc3ViKCdceDFiXFxbKDA7M1xkKT9tJywgJycsIHRlc3Rfb3V0cHV0KQorICAgICMgQ2hhbmdl
cyBmYWlsdXJlIG1lc3NhZ2UgaGVhZGVycyBpbnRvIHRoZSBXaW5kb3dzIGZvcm1hdC4KKyAgICB0
ZXN0X291dHB1dCA9IHJlLnN1YihyJzogRmFpbHVyZVxuJywgcic6IGVycm9yOiAnLCB0ZXN0X291
dHB1dCkKKyAgICAjIENoYW5nZXMgZmlsZShsaW5lX251bWJlcikgdG8gZmlsZTpsaW5lX251bWJl
ci4KKyAgICB0ZXN0X291dHB1dCA9IHJlLnN1YihyJygoXHd8XC4pKylcKChcZCspXCk6Jywgcidc
MTpcMzonLCB0ZXN0X291dHB1dCkKKworICByZXR1cm4gdGVzdF9vdXRwdXQKKworCiBkZWYgUmVt
b3ZlVGVzdENvdW50cyhvdXRwdXQpOgogICAiIiJSZW1vdmVzIHRlc3QgY291bnRzIGZyb20gYSBH
b29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgogCkBAIC0yNDAsOCArMjUzLDggQEAgZGVm
IEdldE91dHB1dE9mQWxsQ29tbWFuZHMoKToKIAogQ0FOX0dFTkVSQVRFX0dPTERFTl9GSUxFID0g
KFNVUFBPUlRTX0RFQVRIX1RFU1RTIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNV
UFBPUlRTX1RZUEVEX1RFU1RTIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVUFBP
UlRTX1RIUkVBRFMpCi0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVVBQT1JUU19USFJF
QURTIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBJU19XSU5ET1dTKQogCiBj
bGFzcyBHVGVzdE91dHB1dFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CiAgIGRlZiBS
ZW1vdmVVbnN1cHBvcnRlZFRlc3RzKHNlbGYsIHRlc3Rfb3V0cHV0KToKQEAgLTI2Niw3ICsyNzks
NyBAQCBkZWYgUmVtb3ZlVW5zdXBwb3J0ZWRUZXN0cyhzZWxmLCB0ZXN0X291dHB1dCk6CiAgIGRl
ZiB0ZXN0T3V0cHV0KHNlbGYpOgogICAgIG91dHB1dCA9IEdldE91dHB1dE9mQWxsQ29tbWFuZHMo
KQogCi0gICAgZ29sZGVuX2ZpbGUgPSBvcGVuKEdPTERFTl9QQVRILCAncmInKQorICAgIGdvbGRl
bl9maWxlID0gb3BlbihHT0xERU5fUEFUSCwgJ3InKQogICAgICMgQSBtaXMtY29uZmlndXJlZCBz
b3VyY2UgY29udHJvbCBzeXN0ZW0gY2FuIGNhdXNlIFxyIGFwcGVhciBpbiBFT0wKICAgICAjIHNl
cXVlbmNlcyB3aGVuIHdlIHJlYWQgdGhlIGdvbGRlbiBmaWxlIGlycmVzcGVjdGl2ZSBvZiBhbiBv
cGVyYXRpbmcKICAgICAjIHN5c3RlbSB1c2VkLiBUaGVyZWZvcmUsIHdlIG5lZWQgdG8gc3RyaXAg
dGhvc2UgXHIncyBmcm9tIG5ld2xpbmVzCkBAIC0yODIsMTEgKzI5NSwxNiBAQCBkZWYgdGVzdE91
dHB1dChzZWxmKToKICAgICBub3JtYWxpemVkX2dvbGRlbiA9IFJlbW92ZVR5cGVJbmZvRGV0YWls
cyhnb2xkZW4pCiAKICAgICBpZiBDQU5fR0VORVJBVEVfR09MREVOX0ZJTEU6Ci0gICAgICBzZWxm
LmFzc2VydEVxdWFsKG5vcm1hbGl6ZWRfZ29sZGVuLCBub3JtYWxpemVkX2FjdHVhbCkKKyAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobm9ybWFsaXplZF9nb2xkZW4sIG5vcm1hbGl6ZWRfYWN0dWFsLAor
ICAgICAgICAgICAgICAgICAgICAgICAnXG4nLmpvaW4oZGlmZmxpYi51bmlmaWVkX2RpZmYoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkX2dvbGRlbi5zcGxpdCgnXG4nKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRfYWN0dWFsLnNwbGl0KCdcbicp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dvbGRlbicsICdhY3R1YWwnKSkpCiAgICAg
ZWxzZToKLSAgICAgIG5vcm1hbGl6ZWRfYWN0dWFsID0gUmVtb3ZlVGVzdENvdW50cyhub3JtYWxp
emVkX2FjdHVhbCkKLSAgICAgIG5vcm1hbGl6ZWRfZ29sZGVuID0gUmVtb3ZlVGVzdENvdW50cyhz
ZWxmLlJlbW92ZVVuc3VwcG9ydGVkVGVzdHMoCi0gICAgICAgICAgbm9ybWFsaXplZF9nb2xkZW4p
KQorICAgICAgbm9ybWFsaXplZF9hY3R1YWwgPSBOb3JtYWxpemVUb0N1cnJlbnRQbGF0Zm9ybSgK
KyAgICAgICAgICBSZW1vdmVUZXN0Q291bnRzKG5vcm1hbGl6ZWRfYWN0dWFsKSkKKyAgICAgIG5v
cm1hbGl6ZWRfZ29sZGVuID0gTm9ybWFsaXplVG9DdXJyZW50UGxhdGZvcm0oCisgICAgICAgICAg
UmVtb3ZlVGVzdENvdW50cyhzZWxmLlJlbW92ZVVuc3VwcG9ydGVkVGVzdHMobm9ybWFsaXplZF9n
b2xkZW4pKSkKIAogICAgICAgIyBUaGlzIGNvZGUgaXMgdmVyeSBoYW5keSB3aGVuIGRlYnVnZ2lu
ZyBnb2xkZW4gZmlsZSBkaWZmZXJlbmNlczoKICAgICAgIGlmIG9zLmdldGVudignREVCVUdfR1RF
U1RfT1VUUFVUX1RFU1QnKToKQEAgLTMxMiwxNCArMzMwLDkgQEAgZGVmIHRlc3RPdXRwdXQoc2Vs
Zik6CiAgICAgZWxzZToKICAgICAgIG1lc3NhZ2UgPSAoCiAgICAgICAgICAgIiIiVW5hYmxlIHRv
IHdyaXRlIGEgZ29sZGVuIGZpbGUgd2hlbiBjb21waWxlZCBpbiBhbiBlbnZpcm9ubWVudAotdGhh
dCBkb2VzIG5vdCBzdXBwb3J0IGFsbCB0aGUgcmVxdWlyZWQgZmVhdHVyZXMgKGRlYXRoIHRlc3Rz
IiIiKQotICAgICAgaWYgSVNfV0lORE9XUzoKLSAgICAgICAgbWVzc2FnZSArPSAoCi0gICAgICAg
ICAgICAiIiJcbmFuZCB0eXBlZCB0ZXN0cykuIFBsZWFzZSBjaGVjayB0aGF0IHlvdSBhcmUgdXNp
bmcgVkMrKyA4LjAgU1AxCi1vciBoaWdoZXIgYXMgeW91ciBjb21waWxlci4iIiIpCi0gICAgICBl
bHNlOgotICAgICAgICBtZXNzYWdlICs9ICIiIlxudHlwZWQgdGVzdHMsIGFuZCB0aHJlYWRzKS4g
IFBsZWFzZSBnZW5lcmF0ZSB0aGUKLWdvbGRlbiBmaWxlIHVzaW5nIGEgYmluYXJ5IGJ1aWx0IHdp
dGggdGhvc2UgZmVhdHVyZXMgZW5hYmxlZC4iIiIKK3RoYXQgZG9lcyBub3Qgc3VwcG9ydCBhbGwg
dGhlIHJlcXVpcmVkIGZlYXR1cmVzIChkZWF0aCB0ZXN0cywgdHlwZWQgdGVzdHMsCithbmQgbXVs
dGlwbGUgdGhyZWFkcykuICBQbGVhc2UgZ2VuZXJhdGUgdGhlIGdvbGRlbiBmaWxlIHVzaW5nIGEg
YmluYXJ5IGJ1aWx0Cit3aXRoIHRob3NlIGZlYXR1cmVzIGVuYWJsZWQuIiIiKQogCiAgICAgICBz
eXMuc3RkZXJyLndyaXRlKG1lc3NhZ2UpCiAgICAgICBzeXMuZXhpdCgxKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF8uY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0Xy5jYwppbmRleCAyNzNl
OGU5M2ViMDU5ZjVkYjY5MzdjOGM3ZDc3NzY2Zjg3ODA1MjcwLi4xMDcwYTlmMjZmZTUwOTg4Zjgw
YjNjNjdkOWQwNDZhMmI1YmY5OWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0Xy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0Xy5jYwpAQCAtMjcsMTMgKzI3LDE2IEBACiAvLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQSB1bml0IHRlc3QgZm9yIEdvb2dsZSBU
ZXN0IGl0c2VsZi4gIFRoaXMgdmVyaWZpZXMgdGhhdCB0aGUgYmFzaWMKLS8vIGNvbnN0cnVjdHMg
b2YgR29vZ2xlIFRlc3Qgd29yay4KKy8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgZmlsZSBpcyB0byBn
ZW5lcmF0ZSBHb29nbGUgVGVzdCBvdXRwdXQgdW5kZXIKKy8vIHZhcmlvdXMgY29uZGl0aW9ucy4g
IFRoZSBvdXRwdXQgd2lsbCB0aGVuIGJlIHZlcmlmaWVkIGJ5CisvLyBndGVzdF9vdXRwdXRfdGVz
dC5weSB0byBlbnN1cmUgdGhhdCBHb29nbGUgVGVzdCBnZW5lcmF0ZXMgdGhlCisvLyBkZXNpcmVk
IG1lc3NhZ2VzLiAgVGhlcmVmb3JlLCBtb3N0IHRlc3RzIGluIHRoaXMgZmlsZSBhcmUgTUVBTlQg
VE8KKy8vIEZBSUwuCiAvLwogLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgogCiAvLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBH
b29nbGUgVGVzdCdzCiAvLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rl
c3QtaW50ZXJuYWwtaW5sLmggaXMKQEAgLTU1LDggKzU4LDYgQEAgdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OlRocmVhZFdpdGhQYXJhbTsKICNlbmRpZgogCiBuYW1lc3BhY2UgcG9zaXggPSA6OnRl
c3Rpbmc6OmludGVybmFsOjpwb3NpeDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmc7
Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVkX3B0cjsKIAogLy8gVGVzdHMgY2F0Y2hp
bmcgZmF0YWwgZmFpbHVyZXMuCiAKQEAgLTg3LDYgKzg4LDM1IEBAIFRFU1QoUGFzc2luZ1Rlc3Qs
IFBhc3NpbmdUZXN0MSkgewogVEVTVChQYXNzaW5nVGVzdCwgUGFzc2luZ1Rlc3QyKSB7CiB9CiAK
Ky8vIFRlc3RzIHRoYXQgcGFyYW1ldGVycyBvZiBmYWlsaW5nIHBhcmFtZXRlcml6ZWQgdGVzdHMg
YXJlIHByaW50ZWQgaW4gdGhlCisvLyBmYWlsaW5nIHRlc3Qgc3VtbWFyeS4KK2NsYXNzIEZhaWxp
bmdQYXJhbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHt9OworCitU
RVNUX1AoRmFpbGluZ1BhcmFtVGVzdCwgRmFpbHMpIHsKKyAgRVhQRUNUX0VRKDEsIEdldFBhcmFt
KCkpOworfQorCisvLyBUaGlzIGdlbmVyYXRlcyBhIHRlc3Qgd2hpY2ggd2lsbCBmYWlsLiBHb29n
bGUgVGVzdCBpcyBleHBlY3RlZCB0byBwcmludAorLy8gaXRzIHBhcmFtZXRlciB3aGVuIGl0IG91
dHB1dHMgdGhlIGxpc3Qgb2YgYWxsIGZhaWxlZCB0ZXN0cy4KK0lOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QKFByaW50aW5nRmFpbGluZ1BhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgIEZhaWxp
bmdQYXJhbVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXMoMikp
OworCitzdGF0aWMgY29uc3QgY2hhciBrR29sZGVuU3RyaW5nW10gPSAiXCJMaW5lXDAgMVwiXG5M
aW5lIDIiOworCitURVNUKE5vbmZhdGFsRmFpbHVyZVRlc3QsIEVzY2FwZXNTdHJpbmdPcGVyYW5k
cykgeworICBzdGQ6OnN0cmluZyBhY3R1YWwgPSAiYWN0dWFsIFwic3RyaW5nXCIiOworICBFWFBF
Q1RfRVEoa0dvbGRlblN0cmluZywgYWN0dWFsKTsKKworICBjb25zdCBjaGFyKiBnb2xkZW4gPSBr
R29sZGVuU3RyaW5nOworICBFWFBFQ1RfRVEoZ29sZGVuLCBhY3R1YWwpOworfQorCitURVNUKE5v
bmZhdGFsRmFpbHVyZVRlc3QsIERpZmZGb3JMb25nU3RyaW5ncykgeworICBzdGQ6OnN0cmluZyBn
b2xkZW5fc3RyKGtHb2xkZW5TdHJpbmcsIHNpemVvZihrR29sZGVuU3RyaW5nKSAtIDEpOworICBF
WFBFQ1RfRVEoZ29sZGVuX3N0ciwgIkxpbmUgMiIpOworfQorCiAvLyBUZXN0cyBjYXRjaGluZyBh
IGZhdGFsIGZhaWx1cmUgaW4gYSBzdWJyb3V0aW5lLgogVEVTVChGYXRhbEZhaWx1cmVUZXN0LCBG
YXRhbEZhaWx1cmVJblN1YnJvdXRpbmUpIHsKICAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVy
ZSB0aGF0IHggc2hvdWxkIGJlIDEpXG4iKTsKQEAgLTIwNywxMyArMjM3LDEzIEBAIFRFU1QoU0NP
UEVEX1RSQUNFVGVzdCwgQ2FuQmVSZXBlYXRlZCkgewogCiAgIHsKICAgICBTQ09QRURfVFJBQ0Uo
IkMiKTsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFu
ZCBzaG91bGQgY29udGFpbiAiCi0gICAgICAgICAgICAgICAgICA8PCAidHJhY2UgcG9pbnQgQSwg
QiwgYW5kIEMuIjsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0
ZWQsIGFuZCBzaG91bGQgIgorICAgICAgICAgICAgICAgICAgPDwgImNvbnRhaW4gdHJhY2UgcG9p
bnQgQSwgQiwgYW5kIEMuIjsKICAgfQogCiAgIFNDT1BFRF9UUkFDRSgiRCIpOwotICBBRERfRkFJ
TFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiAi
Ci0gICAgICAgICAgICAgICAgPDwgInRyYWNlIHBvaW50IEEsIEIsIGFuZCBELiI7CisgIEFERF9G
QUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCAiCisgICAg
ICAgICAgICAgICAgPDwgImNvbnRhaW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEQuIjsKIH0KIAog
I2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKQEAgLTM2NCw2ICszOTQsNyBAQCBjbGFzcyBGYXRhbEZh
aWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAg
ICAgICAgICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVz
dCBmaXh0dXJlIGMndG9yICIKICAgICAgICAgICAgICAgICAgIDw8ICJoYWQgYSBmYXRhbCBmYWls
dXJlLiI7CiAgIH0KKwogIHByaXZhdGU6CiAgIHZvaWQgSW5pdCgpIHsKICAgICBGQUlMKCkgPDwg
IkV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IuIjsKQEAgLTQy
NywxMzcgKzQ1OCwxMCBAQCBURVNUX0YoRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QsIEZhaWx1cmVJ
blNldFVwKSB7CiAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyBTZXRV
cCgpIGZhaWxlZC4iOwogfQogCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotCi0vLyBUaGlzIGdyb3Vw
IG9mIHRlc3RzIHZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3QgaGFuZGxlcyBTRUggYW5kIEMrKwot
Ly8gZXhjZXB0aW9ucyBjb3JyZWN0bHkuCi0KLS8vIEEgZnVuY3Rpb24gdGhhdCB0aHJvd3MgYW4g
U0VIIGV4Y2VwdGlvbi4KLXN0YXRpYyB2b2lkIFRocm93U0VIKCkgewotICBpbnQqIHAgPSBOVUxM
OwotICAqcCA9IDA7ICAvLyBSYWlzZXMgYW4gYWNjZXNzIHZpb2xhdGlvbi4KLX0KLQotLy8gVGVz
dHMgZXhjZXB0aW9ucyB0aHJvd24gaW4gdGhlIHRlc3QgZml4dHVyZSBjb25zdHJ1Y3Rvci4KLWNs
YXNzIEV4Y2VwdGlvbkluRml4dHVyZUN0b3JUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewot
IHByb3RlY3RlZDoKLSAgRXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3QoKSB7Ci0gICAgcHJpbnRm
KCIoZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiB0aHJvd24gZXhjZXB0aW9uICIKLSAgICAgICAgICAg
ImluIHRoZSB0ZXN0IGZpeHR1cmUncyBjb25zdHJ1Y3RvcilcbiIpOwotCi0gICAgVGhyb3dTRUgo
KTsKLSAgfQotCi0gIHZpcnR1YWwgfkV4Y2VwdGlvbkluRml4dHVyZUN0b3JUZXN0KCkgewotICAg
IERlaW5pdCgpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIEZBSUwoKSA8
PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIFNldFVwKCkuICAiCi0gICAgICAgICAgIDw8ICJXZSBz
aG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgdGhyZXcuIjsK
LSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBGQUlMKCkgPDwgIlVORVhQ
RUNURUQgZmFpbHVyZSBpbiBUZWFyRG93bigpLiAgIgotICAgICAgICAgICA8PCAiV2Ugc2hvdWxk
IG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yIHRocmV3LiI7Ci0gIH0K
LSBwcml2YXRlOgotICB2b2lkIERlaW5pdCgpIHsKLSAgICBGQUlMKCkgPDwgIlVORVhQRUNURUQg
ZmFpbHVyZSBpbiB0aGUgZCd0b3IuICAiCi0gICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIg
Z2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgdGhyZXcuIjsKLSAgfQotfTsKLQot
VEVTVF9GKEV4Y2VwdGlvbkluRml4dHVyZUN0b3JUZXN0LCBFeGNlcHRpb25JbkZpeHR1cmVDdG9y
KSB7Ci0gIEZBSUwoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIHRoZSB0ZXN0IGZ1bmN0aW9u
LiAgIgotICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgdGhlIHRlc3Qg
Zml4dHVyZSBjJ3RvciB0aHJldy4iOwotfQotCi0vLyBUZXN0cyBleGNlcHRpb25zIHRocm93biBp
biBTZXRVcCgpLgotY2xhc3MgRXhjZXB0aW9uSW5TZXRVcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIH5FeGNlcHRpb25JblNldFVwVGVzdCgpIHsK
LSAgICBEZWluaXQoKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBwcmlu
dGYoIihleHBlY3RpbmcgMyBmYWlsdXJlcylcbiIpOwotCi0gICAgVGhyb3dTRUgoKTsKLSAgfQot
Ci0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZh
aWx1cmUgIzIsIGluIFRlYXJEb3duKCkuIjsKLSAgfQotIHByaXZhdGU6Ci0gIHZvaWQgRGVpbml0
KCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4
dHVyZSBkJ3Rvci4iOwotICB9Ci19OwotCi1URVNUX0YoRXhjZXB0aW9uSW5TZXRVcFRlc3QsIEV4
Y2VwdGlvbkluU2V0VXApIHsKLSAgRkFJTCgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gdGhl
IHRlc3QgZnVuY3Rpb24uICAiCi0gICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJl
LCBhcyBTZXRVcCgpIHRocmV3LiI7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVGVhckRvd24oKSBhbmQg
dGhlIHRlc3QgZml4dHVyZSBkJ3RvciBhcmUgYWx3YXlzIGNhbGxlZCwKLS8vIGV2ZW4gd2hlbiB0
aGUgdGVzdCBmdW5jdGlvbiB0aHJvd3MgYW4gZXhjZXB0aW9uLgotY2xhc3MgRXhjZXB0aW9uSW5U
ZXN0RnVuY3Rpb25UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAg
dmlydHVhbCB+RXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0KCkgewotICAgIERlaW5pdCgpOwot
ICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0
ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4iOwotICB9Ci0gcHJpdmF0ZToKLSAgdm9pZCBE
ZWluaXQoKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVz
dCBmaXh0dXJlIGQndG9yLiI7Ci0gIH0KLX07Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIHRlc3QgZml4
dHVyZSBkJ3RvciBpcyBhbHdheXMgY2FsbGVkLCBldmVuIHdoZW4gdGhlCi0vLyB0ZXN0IGZ1bmN0
aW9uIHRocm93cyBhbiBTRUggZXhjZXB0aW9uLgotVEVTVF9GKEV4Y2VwdGlvbkluVGVzdEZ1bmN0
aW9uVGVzdCwgU0VIKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyAzIGZhaWx1cmVzKVxuIik7Ci0K
LSAgVGhyb3dTRUgoKTsKLX0KLQotI2lmIEdURVNUX0hBU19FWENFUFRJT05TCi0KLS8vIFRlc3Rz
IHRoYXQgdGhlIHRlc3QgZml4dHVyZSBkJ3RvciBpcyBhbHdheXMgY2FsbGVkLCBldmVuIHdoZW4g
dGhlCi0vLyB0ZXN0IGZ1bmN0aW9uIHRocm93cyBhIEMrKyBleGNlcHRpb24uICBXZSBkbyB0aGlz
IG9ubHkgd2hlbgotLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMgaXMgbm9uLXplcm8sIGkuZS4gQysr
IGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQuCi1URVNUX0YoRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25U
ZXN0LCBDcHBFeGNlcHRpb24pIHsKLSAgdGhyb3cgMTsKLX0KLQotLy8gVGVzdHMgZXhjZXB0aW9u
cyB0aHJvd24gaW4gVGVhckRvd24oKS4KLWNsYXNzIEV4Y2VwdGlvbkluVGVhckRvd25UZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB+RXhjZXB0aW9u
SW5UZWFyRG93blRlc3QoKSB7Ci0gICAgRGVpbml0KCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKSB7Ci0gICAgdGhyb3cgMTsKLSAgfQotIHByaXZhdGU6Ci0gIHZvaWQgRGVpbml0
KCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZml4
dHVyZSBkJ3Rvci4iOwotICB9Ci19OwotCi1URVNUX0YoRXhjZXB0aW9uSW5UZWFyRG93blRlc3Qs
IEV4Y2VwdGlvbkluVGVhckRvd24pIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMp
XG4iKTsKK1RFU1QoQWRkRmFpbHVyZUF0VGVzdCwgTWVzc2FnZUNvbnRhaW5zU3BlY2lmaWVkRmls
ZUFuZExpbmVOdW1iZXIpIHsKKyAgQUREX0ZBSUxVUkVfQVQoImZvby5jYyIsIDQyKSA8PCAiRXhw
ZWN0ZWQgZmFpbHVyZSBpbiBmb28uY2MiOwogfQogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19FWENF
UFRJT05TCi0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCiAjaWYgR1RFU1RfSVNfVEhS
RUFEU0FGRQogCiAvLyBBIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KQEAgLTYxMCw3ICs1
MTQsOCBAQCBjbGFzcyBEZWF0aFRlc3RBbmRNdWx0aVRocmVhZHNUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgewogCiAgcHJpdmF0ZToKICAgU3Bhd25UaHJlYWROb3RpZmljYXRpb25zIG5vdGlm
aWNhdGlvbnNfOwotICBzY29wZWRfcHRyPFRocmVhZFdpdGhQYXJhbTxTcGF3blRocmVhZE5vdGlm
aWNhdGlvbnMqPiA+IHRocmVhZF87CisgIHRlc3Rpbmc6OmludGVybmFsOjpzY29wZWRfcHRyPFRo
cmVhZFdpdGhQYXJhbTxTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMqPiA+CisgICAgICB0aHJlYWRf
OwogfTsKIAogI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCkBAIC04NTAsNiArNzU1LDMy
IEBAIFRFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dz
KSB7CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKIAorLy8gVGhpcyAjaWZkZWYg
YmxvY2sgdGVzdHMgdGhlIG91dHB1dCBvZiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorCisj
aWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKKworc3RkOjpzdHJpbmcgUGFyYW1OYW1lRnVuYyhjb25z
dCB0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHN0ZDo6c3RyaW5nPiYgaW5mbykgeworICByZXR1cm4g
aW5mby5wYXJhbTsKK30KKworY2xhc3MgUGFyYW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3RX
aXRoUGFyYW08c3RkOjpzdHJpbmc+IHsKK307CisKK1RFU1RfUChQYXJhbVRlc3QsIFN1Y2Nlc3Mp
IHsKKyAgRVhQRUNUX0VRKCJhIiwgR2V0UGFyYW0oKSk7Cit9CisKK1RFU1RfUChQYXJhbVRlc3Qs
IEZhaWx1cmUpIHsKKyAgRVhQRUNUX0VRKCJiIiwgR2V0UGFyYW0oKSkgPDwgIkV4cGVjdGVkIGZh
aWx1cmUiOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChQcmludGluZ1N0cmluZ3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICBQYXJhbVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0aW5nOjpWYWx1ZXMoc3RkOjpzdHJpbmcoImEiKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICBQYXJhbU5hbWVGdW5jKTsKKworI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAor
CiAvLyBUaGlzICNpZmRlZiBibG9jayB0ZXN0cyB0aGUgb3V0cHV0IG9mIHR5cGVkIHRlc3RzLgog
I2lmIEdURVNUX0hBU19UWVBFRF9URVNUCiAKQEAgLTkwMSw3ICs4MzIsNyBAQCBJTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUChVbnNpZ25lZCwgVHlwZWRUZXN0UCwgVW5zaWduZWRUeXBlcyk7
CiBURVNUKEFEZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0KSB7CiB9CiAKLSNpZiBHVEVTVF9IQVNf
VFlQRURfVEVTVAorIyBpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAogCiAvLyBXZSByZWx5IG9uIHRo
ZSBnb2xkZW4gZmlsZSB0byB2ZXJpZnkgdGhhdCB0eXBlZCB0ZXN0cyB3aG9zZSB0ZXN0CiAvLyBj
YXNlIG5hbWUgZW5kcyB3aXRoIERlYXRoVGVzdCBhcmUgcnVuIGZpcnN0LgpAQCAtOTE2LDkgKzg0
Nyw5IEBAIFRZUEVEX1RFU1RfQ0FTRShBVHlwZWREZWF0aFRlc3QsIE51bWVyaWNUeXBlcyk7CiBU
WVBFRF9URVNUKEFUeXBlZERlYXRoVGVzdCwgU2hvdWxkUnVuRmlyc3QpIHsKIH0KIAotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RF
U1QKIAotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUX1AKKyMgaWYgR1RFU1RfSEFTX1RZUEVEX1RF
U1RfUAogCiAKIC8vIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIHZlcmlmeSB0aGF0IHR5
cGUtcGFyYW1ldGVyaXplZCB0ZXN0cwpAQCAtOTM3LDcgKzg2OCw3IEBAIFJFR0lTVEVSX1RZUEVE
X1RFU1RfQ0FTRV9QKEFUeXBlUGFyYW1EZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0KTsKIAogSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEFUeXBlUGFyYW1EZWF0aFRlc3QsIE51bWVy
aWNUeXBlcyk7CiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorIyBlbmRpZiAg
Ly8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9U
RVNUCiAKQEAgLTEwODUsMTAgKzEwMTYsNiBAQCBjbGFzcyBCYXJFbnZpcm9ubWVudCA6IHB1Ymxp
YyB0ZXN0aW5nOjpFbnZpcm9ubWVudCB7CiAgIH0KIH07CiAKLUdURVNUX0RFRklORV9ib29sXyhp
bnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMsIGZhbHNlLAotICAgICAg
ICAgICAgICAgICAgICJUaGlzIGZsYWcgY2F1c2VzIHRoZSBwcm9ncmFtIHRvIHNraXAgdGVzdCBl
bnZpcm9ubWVudCAiCi0gICAgICAgICAgICAgICAgICAgInRlc3RzIGFuZCBhZCBob2MgdGVzdHMu
Iik7Ci0KIC8vIFRoZSBtYWluIGZ1bmN0aW9uLgogLy8KIC8vIFRoZSBpZGVhIGlzIHRvIHVzZSBH
b29nbGUgVGVzdCB0byBydW4gYWxsIHRoZSB0ZXN0cyB3ZSBoYXZlIGRlZmluZWQgKHNvbWUKQEAg
LTExMDUsMjQgKzEwMzIsMjQgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CiAg
IC8vIGdsb2JhbCBzaWRlIGVmZmVjdHMuICBUaGUgZm9sbG93aW5nIGxpbmUgc2VydmVzIGFzIGEg
c2FuaXR5IHRlc3QKICAgLy8gZm9yIGl0LgogICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJn
YywgYXJndik7Ci0gIGlmIChhcmdjID49IDIgJiYKLSAgICAgIFN0cmluZyhhcmd2WzFdKSA9PSAi
LS1ndGVzdF9pbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMiKQotICAg
IEdURVNUX0ZMQUcoaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzKSA9
IHRydWU7CisgIGJvb2wgaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3Rz
ID0KKyAgICAgIHN0ZDo6Y291bnQoYXJndiwgYXJndiArIGFyZ2MsCisgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nKCJpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMi
KSkgPiAwOwogCiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKICAgaWYgKHRlc3Rpbmc6OmludGVy
bmFsOjpHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KSAhPSAiIikgewogICAgIC8v
IFNraXAgdGhlIHVzdWFsIG91dHB1dCBjYXB0dXJpbmcgaWYgd2UncmUgcnVubmluZyBhcyB0aGUg
Y2hpbGQKICAgICAvLyBwcm9jZXNzIG9mIGFuIHRocmVhZHNhZmUtc3R5bGUgZGVhdGggdGVzdC4K
LSNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MKICAgICBwb3NpeDo6
RlJlb3BlbigibnVsOiIsICJ3Iiwgc3Rkb3V0KTsKLSNlbHNlCisjIGVsc2UKICAgICBwb3NpeDo6
RlJlb3BlbigiL2Rldi9udWxsIiwgInciLCBzdGRvdXQpOwotI2VuZGlmICAvLyBHVEVTVF9PU19X
SU5ET1dTCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAgICAgcmV0dXJuIFJVTl9BTExf
VEVTVFMoKTsKICAgfQogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCi0gIGlmIChH
VEVTVF9GTEFHKGludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cykpCisg
IGlmIChpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMpCiAgICAgcmV0
dXJuIFJVTl9BTExfVEVTVFMoKTsKIAogICAvLyBSZWdpc3RlcnMgdHdvIGdsb2JhbCB0ZXN0IGVu
dmlyb25tZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0CmluZGV4IGVjNjA0MzdhY2FhNzY0
MGRmYmYzZGIyODNjZjFkMTUwMzRjMDYyMmUuLjIyMjNkNTYwZTJkOWMyYWU0NzBiNmEyY2NlYzRk
Y2JlMThmYTU3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fbGluLnR4dApAQCAtNSw5ICs1LDkgQEAg
VmFsdWUgb2Y6IGZhbHNlCiAgIEFjdHVhbDogZmFsc2UKIEV4cGVjdGVkOiB0cnVlCiBndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IDMKLUV4cGVjdGVkOiAyCi0bWzA7
MzJtWz09PT09PT09PT1dIBtbbVJ1bm5pbmcgNjAgdGVzdHMgZnJvbSAyNSB0ZXN0IGNhc2VzLgor
ICAgICAgRXhwZWN0ZWQ6IDIKK1RvIGJlIGVxdWFsIHRvOiAzCisbWzA7MzJtWz09PT09PT09PT1d
IBtbbVJ1bm5pbmcgNjYgdGVzdHMgZnJvbSAyOSB0ZXN0IGNhc2VzLgogG1swOzMybVstLS0tLS0t
LS0tXSAbW21HbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCiBGb29FbnZpcm9ubWVudDo6
U2V0VXAoKSBjYWxsZWQuCiBCYXJFbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuCkBAIC0zMSwy
MCArMzEsNDQgQEAgQmFyRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLgogG1swOzMybVsgICAg
ICAgT0sgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDEKIBtbMDszMm1bIFJVTiAgICAgIF0g
G1ttUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCiAbWzA7MzJtWyAgICAgICBPSyBdIBtbbVBhc3Np
bmdUZXN0LlBhc3NpbmdUZXN0MgorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20g
Tm9uZmF0YWxGYWlsdXJlVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21Ob25mYXRhbEZhaWx1
cmVUZXN0LkVzY2FwZXNTdHJpbmdPcGVyYW5kcworZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZh
aWx1cmUKKyAgICAgIEV4cGVjdGVkOiBrR29sZGVuU3RyaW5nCisgICAgICBXaGljaCBpczogIlwi
TGluZSIKK1RvIGJlIGVxdWFsIHRvOiBhY3R1YWwKKyAgICAgIFdoaWNoIGlzOiAiYWN0dWFsIFwi
c3RyaW5nXCIiCitndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQorICAgICAgRXhwZWN0
ZWQ6IGdvbGRlbgorICAgICAgV2hpY2ggaXM6ICJcIkxpbmUiCitUbyBiZSBlcXVhbCB0bzogYWN0
dWFsCisgICAgICBXaGljaCBpczogImFjdHVhbCBcInN0cmluZ1wiIgorG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkVzY2FwZXNTdHJpbmdPcGVyYW5kcworG1swOzMy
bVsgUlVOICAgICAgXSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkRpZmZGb3JMb25nU3RyaW5ncwor
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKKyAgICAgIEV4cGVjdGVkOiBnb2xkZW5f
c3RyCisgICAgICBXaGljaCBpczogIlwiTGluZVwwIDFcIlxuTGluZSAyIgorVG8gYmUgZXF1YWwg
dG86ICJMaW5lIDIiCitXaXRoIGRpZmY6CitAQCAtMSwyIEBACistXCJMaW5lXDAgMVwiCisgTGlu
ZSAyCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uZmF0YWxGYWlsdXJlVGVzdC5EaWZmRm9y
TG9uZ1N0cmluZ3MKIBtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMyB0ZXN0cyBmcm9tIEZhdGFsRmFp
bHVyZVRlc3QKIBtbMDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZh
aWx1cmVJblN1YnJvdXRpbmUKIChleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUg
MSkKIGd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogeAotICBBY3R1
YWw6IDIKLUV4cGVjdGVkOiAxCisgICAgICBFeHBlY3RlZDogMQorVG8gYmUgZXF1YWwgdG86IHgK
KyAgICAgIFdoaWNoIGlzOiAyCiAbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRl
c3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCiAbWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFs
RmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCiAoZXhwZWN0aW5nIGEg
ZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCiBndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFp
bHVyZQotVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQorICAgICAgRXhwZWN0
ZWQ6IDEKK1RvIGJlIGVxdWFsIHRvOiB4CisgICAgICBXaGljaCBpczogMgogG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGlu
ZQogG1swOzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVy
ZUluU3Vicm91dGluZQogKGV4cGVjdGluZyBhIGZhaWx1cmUgb24gZmFsc2UpCkBAIC04MywzOSAr
MTA3LDM5IEBAIFRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEg
dHJhY2UuCiAbWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJbkxv
b3AKIChleHBlY3RlZCB0byBmYWlsKQogZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUK
LVZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMQotRXhwZWN0ZWQ6IDIKKyAgICAgIEV4cGVjdGVkOiAy
CitUbyBiZSBlcXVhbCB0bzogbgorICAgICAgV2hpY2ggaXM6IDEKIEdvb2dsZSBUZXN0IHRyYWNl
OgogZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGkgPSAxCiBndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogRmFpbHVyZQotVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQorICAgICAg
RXhwZWN0ZWQ6IDEKK1RvIGJlIGVxdWFsIHRvOiBuCisgICAgICBXaGljaCBpczogMgogR29vZ2xl
IFRlc3QgdHJhY2U6CiBndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogaSA9IDIKIBtbMDszMW1bICBG
QUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAogG1swOzMybVsgUlVOICAg
ICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJyb3V0aW5lCiAoZXhwZWN0ZWQgdG8g
ZmFpbCkKIGd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogbgotICBB
Y3R1YWw6IDEKLUV4cGVjdGVkOiAyCisgICAgICBFeHBlY3RlZDogMgorVG8gYmUgZXF1YWwgdG86
IG4KKyAgICAgIFdoaWNoIGlzOiAxCiBHb29nbGUgVGVzdCB0cmFjZToKIGd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBuID0gMQogZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVl
IG9mOiBuCi0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKKyAgICAgIEV4cGVjdGVkOiAxCitUbyBi
ZSBlcXVhbCB0bzogbgorICAgICAgV2hpY2ggaXM6IDIKIEdvb2dsZSBUZXN0IHRyYWNlOgogZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4gPSAyCiAbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BF
RF9UUkFDRVRlc3QuV29ya3NJblN1YnJvdXRpbmUKIBtbMDszMm1bIFJVTiAgICAgIF0gG1ttU0NP
UEVEX1RSQUNFVGVzdC5DYW5CZU5lc3RlZAogKGV4cGVjdGVkIHRvIGZhaWwpCiBndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAyCi1FeHBlY3Rl
ZDogMQorICAgICAgRXhwZWN0ZWQ6IDEKK1RvIGJlIGVxdWFsIHRvOiBuCisgICAgICBXaGljaCBp
czogMgogR29vZ2xlIFRlc3QgdHJhY2U6CiBndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogbiA9IDIK
IGd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiAKQEAgLTIzNSw2ICsyNTksMTIgQEAgZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKIEZhaWxlZAogRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4g
dGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KIBtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWls
dXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0
ZXN0IGZyb20gQWRkRmFpbHVyZUF0VGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21BZGRGYWls
dXJlQXRUZXN0Lk1lc3NhZ2VDb250YWluc1NwZWNpZmllZEZpbGVBbmRMaW5lTnVtYmVyCitmb28u
Y2M6NDI6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSBpbiBmb28uY2MKKxtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttQWRkRmFpbHVyZUF0VGVzdC5NZXNzYWdlQ29udGFpbnNTcGVjaWZp
ZWRGaWxlQW5kTGluZU51bWJlcgogG1swOzMybVstLS0tLS0tLS0tXSAbW200IHRlc3RzIGZyb20g
TWl4ZWRVcFRlc3RDYXNlVGVzdAogG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENh
c2VUZXN0LkZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28KIBtbMDszMm1bICAgICAgIE9LIF0gG1tt
TWl4ZWRVcFRlc3RDYXNlVGVzdC5GaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vCkBAIC00MDcsMzMg
KzQzNywzMyBAQCBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCiAbWzA7MzJtWyAgICAgICBPSyBd
IBtbbVR5cGVkVGVzdC8wLlN1Y2Nlc3MKIBtbMDszMm1bIFJVTiAgICAgIF0gG1ttVHlwZWRUZXN0
LzAuRmFpbHVyZQogZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiBU
eXBlUGFyYW0oKQotICBBY3R1YWw6IDAKLUV4cGVjdGVkOiAxCisgICAgICBFeHBlY3RlZDogMQor
VG8gYmUgZXF1YWwgdG86IFR5cGVQYXJhbSgpCisgICAgICBXaGljaCBpczogMAogRXhwZWN0ZWQg
ZmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3QvMC5GYWlsdXJlCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbVR5cGVkVGVzdC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9
IGludAogG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVW5zaWduZWQvVHlwZWRU
ZXN0UC8wLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBjaGFyCiAbWzA7MzJtWyBSVU4gICAg
ICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5TdWNjZXNzCiAbWzA7MzJtWyAgICAgICBPSyBd
IBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5TdWNjZXNzCiAbWzA7MzJtWyBSVU4gICAgICBdIBtb
bVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5GYWlsdXJlCiBndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmFpbHVyZQotVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogXDAKLUV4cGVjdGVkOiAx
VQotV2hpY2ggaXM6IDEKKyAgICAgIEV4cGVjdGVkOiAxVQorICAgICAgV2hpY2ggaXM6IDEKK1Rv
IGJlIGVxdWFsIHRvOiBUeXBlUGFyYW0oKQorICAgICAgV2hpY2ggaXM6ICdcMCcKIEV4cGVjdGVk
IGZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZh
aWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1
cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKIBtbMDszMm1bLS0tLS0tLS0tLV0g
G1ttMiB0ZXN0cyBmcm9tIFVuc2lnbmVkL1R5cGVkVGVzdFAvMSwgd2hlcmUgVHlwZVBhcmFtID0g
dW5zaWduZWQgaW50CiAbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAv
MS5TdWNjZXNzCiAbWzA7MzJtWyAgICAgICBPSyBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5T
dWNjZXNzCiAbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWls
dXJlCiBndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IFR5cGVQYXJh
bSgpCi0gIEFjdHVhbDogMAotRXhwZWN0ZWQ6IDFVCi1XaGljaCBpczogMQorICAgICAgRXhwZWN0
ZWQ6IDFVCisgICAgICBXaGljaCBpczogMQorVG8gYmUgZXF1YWwgdG86IFR5cGVQYXJhbSgpCisg
ICAgICBXaGljaCBpczogMAogRXhwZWN0ZWQgZmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21VbnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21V
bnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQg
aW50CiAbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTQgdGVzdHMgZnJvbSBFeHBlY3RGYWlsdXJlVGVz
dAogG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZh
aWx1cmUKIChleHBlY3RpbmcgMSBmYWlsdXJlKQpAQCAtNTY0LDYgKzU5NCwyMyBAQCBndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQogRmFpbGVkCiBFeHBlY3RlZCBub24tZmF0YWwgZmFp
bHVyZS4KIBtbMDszMW1bICBGQUlMRUQgIF0gG1ttU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVw
b3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCisbWzA7MzJtWy0tLS0tLS0tLS1d
IBtbbTEgdGVzdCBmcm9tIFByaW50aW5nRmFpbGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1UZXN0Cisb
WzA7MzJtWyBSVU4gICAgICBdIBtbbVByaW50aW5nRmFpbGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1U
ZXN0LkZhaWxzLzAKK2d0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCisgICAgICBFeHBl
Y3RlZDogMQorVG8gYmUgZXF1YWwgdG86IEdldFBhcmFtKCkKKyAgICAgIFdoaWNoIGlzOiAyCisb
WzA7MzFtWyAgRkFJTEVEICBdIBtbbVByaW50aW5nRmFpbGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1U
ZXN0LkZhaWxzLzAsIHdoZXJlIEdldFBhcmFtKCkgPSAyCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtb
bTIgdGVzdHMgZnJvbSBQcmludGluZ1N0cmluZ3MvUGFyYW1UZXN0CisbWzA7MzJtWyBSVU4gICAg
ICBdIBtbbVByaW50aW5nU3RyaW5ncy9QYXJhbVRlc3QuU3VjY2Vzcy9hCisbWzA7MzJtWyAgICAg
ICBPSyBdIBtbbVByaW50aW5nU3RyaW5ncy9QYXJhbVRlc3QuU3VjY2Vzcy9hCisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbVByaW50aW5nU3RyaW5ncy9QYXJhbVRlc3QuRmFpbHVyZS9hCitndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQorICAgICAgRXhwZWN0ZWQ6ICJiIgorVG8gYmUgZXF1
YWwgdG86IEdldFBhcmFtKCkKKyAgICAgIFdoaWNoIGlzOiAiYSIKK0V4cGVjdGVkIGZhaWx1cmUK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttUHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5GYWlsdXJl
L2EsIHdoZXJlIEdldFBhcmFtKCkgPSAiYSIKIBtbMDszMm1bLS0tLS0tLS0tLV0gG1ttR2xvYmFs
IHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCiBCYXJFbnZpcm9ubWVudDo6VGVhckRvd24oKSBj
YWxsZWQuCiBndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQpAQCAtNTczLDkgKzYyMCwx
MSBAQCBGb29FbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuCiBndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogRmFpbHVyZQogRmFpbGVkCiBFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotG1swOzMy
bVs9PT09PT09PT09XSAbW202MCB0ZXN0cyBmcm9tIDI1IHRlc3QgY2FzZXMgcmFuLgotG1swOzMy
bVsgIFBBU1NFRCAgXSAbW20yMSB0ZXN0cy4KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttMzkgdGVz
dHMsIGxpc3RlZCBiZWxvdzoKKxtbMDszMm1bPT09PT09PT09PV0gG1ttNjYgdGVzdHMgZnJvbSAy
OSB0ZXN0IGNhc2VzIHJhbi4KKxtbMDszMm1bICBQQVNTRUQgIF0gG1ttMjIgdGVzdHMuCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbTQ0IHRlc3RzLCBsaXN0ZWQgYmVsb3c6CisbWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbU5vbmZhdGFsRmFpbHVyZVRlc3QuRXNjYXBlc1N0cmluZ09wZXJhbmRzCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbU5vbmZhdGFsRmFpbHVyZVRlc3QuRGlmZkZvckxvbmdTdHJpbmdz
CiAbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5T
dWJyb3V0aW5lCiAbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxG
YWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCiAbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFp
bHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCkBAIC01OTAsNiArNjM5LDcgQEAg
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KIBtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWls
dXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCiAbWzA7MzFt
WyAgRkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVw
CiAbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJ
blNldFVwCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUFkZEZhaWx1cmVBdFRlc3QuTWVzc2FnZUNv
bnRhaW5zU3BlY2lmaWVkRmlsZUFuZExpbmVOdW1iZXIKIBtbMDszMW1bICBGQUlMRUQgIF0gG1tt
TWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbAogG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCiAbWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RX
aXRoVGhpc05hbWVTaG91bGRGYWlsCkBAIC02MTUsOCArNjY1LDEwIEBAIEV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuCiAbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFk
c1Rlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCiAbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZh
aWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCiAbWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbVNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdC5JbnRlcmNlcHRP
bmx5Q3VycmVudFRocmVhZAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21QcmludGluZ0ZhaWxpbmdQ
YXJhbXMvRmFpbGluZ1BhcmFtVGVzdC5GYWlscy8wLCB3aGVyZSBHZXRQYXJhbSgpID0gMgorG1sw
OzMxbVsgIEZBSUxFRCAgXSAbW21QcmludGluZ1N0cmluZ3MvUGFyYW1UZXN0LkZhaWx1cmUvYSwg
d2hlcmUgR2V0UGFyYW0oKSA9ICJhIgogCi0zOSBGQUlMRUQgVEVTVFMKKzQ0IEZBSUxFRCBURVNU
UwogG1swOzMzbSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNUCiAKIBtbbU5vdGU6IEdvb2dsZSBU
ZXN0IGZpbHRlciA9IEZhdGFsRmFpbHVyZVRlc3QuKjpMb2dnaW5nVGVzdC4qCkBAIC02MjYsMTYg
KzY3OCwxNiBAQCBFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgogWyBSVU4gICAgICBdIEZhdGFsRmFp
bHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCiAoZXhwZWN0aW5nIGEgZmFpbHVyZSB0
aGF0IHggc2hvdWxkIGJlIDEpCiBndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFs
dWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQorICAgICAgRXhwZWN0ZWQ6IDEKK1Rv
IGJlIGVxdWFsIHRvOiB4CisgICAgICBXaGljaCBpczogMgogWyAgRkFJTEVEICBdIEZhdGFsRmFp
bHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lICg/IG1zKQogWyBSVU4gICAgICBdIEZh
dGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCiAoZXhwZWN0aW5n
IGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCiBndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmFpbHVyZQotVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQorICAgICAgRXhw
ZWN0ZWQ6IDEKK1RvIGJlIGVxdWFsIHRvOiB4CisgICAgICBXaGljaCBpczogMgogWyAgRkFJTEVE
ICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lICg/IG1z
KQogWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0
aW5lCiAoZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiBmYWxzZSkKQEAgLTY3MCw4ICs3MjIsNiBAQCBF
eHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDYKIFsgIEZBSUxFRCAgXSBMb2dn
aW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwogCiAgNCBGQUlMRUQgVEVT
VFMKLSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNUCi0KIE5vdGU6IEdvb2dsZSBUZXN0IGZpbHRl
ciA9ICpESVNBQkxFRF8qCiBbPT09PT09PT09PV0gUnVubmluZyAxIHRlc3QgZnJvbSAxIHRlc3Qg
Y2FzZS4KIFstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCkBAIC02
ODIsNyArNzMyLDcgQEAgTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gKkRJU0FCTEVEXyoKIFs9
PT09PT09PT09XSAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZSByYW4uCiBbICBQQVNTRUQgIF0gMSB0
ZXN0LgogTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gUGFzc2luZ1Rlc3QuKgotTm90ZTogVGhp
cyBpcyB0ZXN0IHNoYXJkIDEgb2YgMi4KK05vdGU6IFRoaXMgaXMgdGVzdCBzaGFyZCAyIG9mIDIu
CiBbPT09PT09PT09PV0gUnVubmluZyAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZS4KIFstLS0tLS0t
LS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCiBbLS0tLS0tLS0tLV0gMSB0ZXN0
IGZyb20gUGFzc2luZ1Rlc3QKQEAgLTY5MSw2ICs3NDEsMyBAQCBOb3RlOiBUaGlzIGlzIHRlc3Qg
c2hhcmQgMSBvZiAyLgogWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXIt
ZG93bgogWz09PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlIHJhbi4KIFsgIFBBU1NF
RCAgXSAxIHRlc3QuCi0KLSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNUCi0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX3dp
bi50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dv
bGRlbl93aW4udHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTNjM2FhZmMzMWY1
ZjEwMDVjNzc0MjgzZTAwYmRiMDlkZTgxZjY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0
cHV0X3Rlc3RfZ29sZGVuX3dpbi50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2MDUgKzAsMCBAQAot
VGhlIG5vbi10ZXN0IHBhcnQgb2YgdGhlIGNvZGUgaXMgZXhwZWN0ZWQgdG8gaGF2ZSAyIGZhaWx1
cmVzLgotCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBmYWxzZQot
ICBBY3R1YWw6IGZhbHNlCi1FeHBlY3RlZDogdHJ1ZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IGVycm9yOiBWYWx1ZSBvZjogMwotRXhwZWN0ZWQ6IDIKLVs9PT09PT09PT09XSBSdW5uaW5nIDYx
IHRlc3RzIGZyb20gMjcgdGVzdCBjYXNlcy4KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZp
cm9ubWVudCBzZXQtdXAuCi1Gb29FbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuCi1CYXJFbnZp
cm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gQURlYXRo
VGVzdAotWyBSVU4gICAgICBdIEFEZWF0aFRlc3QuU2hvdWxkUnVuRmlyc3QKLVsgICAgICAgT0sg
XSBBRGVhdGhUZXN0LlNob3VsZFJ1bkZpcnN0Ci1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gQVR5
cGVkRGVhdGhUZXN0LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGludAotWyBSVU4gICAgICBdIEFUeXBl
ZERlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci1bICAgICAgIE9LIF0gQVR5cGVkRGVhdGhUZXN0
LzAuU2hvdWxkUnVuRmlyc3QKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBBVHlwZWREZWF0aFRl
c3QvMSwgd2hlcmUgVHlwZVBhcmFtID0gZG91YmxlCi1bIFJVTiAgICAgIF0gQVR5cGVkRGVhdGhU
ZXN0LzEuU2hvdWxkUnVuRmlyc3QKLVsgICAgICAgT0sgXSBBVHlwZWREZWF0aFRlc3QvMS5TaG91
bGRSdW5GaXJzdAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIE15L0FUeXBlUGFyYW1EZWF0aFRl
c3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci1bIFJVTiAgICAgIF0gTXkvQVR5cGVQYXJhbURl
YXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci1bICAgICAgIE9LIF0gTXkvQVR5cGVQYXJhbURlYXRo
VGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTXkvQVR5cGVQ
YXJhbURlYXRoVGVzdC8xLCB3aGVyZSBUeXBlUGFyYW0gPSBkb3VibGUKLVsgUlVOICAgICAgXSBN
eS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKLVsgICAgICAgT0sgXSBNeS9B
VHlwZVBhcmFtRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKLVstLS0tLS0tLS0tXSAyIHRlc3Rz
IGZyb20gUGFzc2luZ1Rlc3QKLVsgUlVOICAgICAgXSBQYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDEK
LVsgICAgICAgT0sgXSBQYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDEKLVsgUlVOICAgICAgXSBQYXNz
aW5nVGVzdC5QYXNzaW5nVGVzdDIKLVsgICAgICAgT0sgXSBQYXNzaW5nVGVzdC5QYXNzaW5nVGVz
dDIKLVstLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdAotWyBSVU4gICAg
ICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5n
IGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
ZXJyb3I6IFZhbHVlIG9mOiB4Ci0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLVsgIEZBSUxFRCAg
XSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotWyBSVU4gICAgICBd
IEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi0oZXhwZWN0
aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogZXJyb3I6IFZhbHVlIG9mOiB4Ci0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLVsgIEZBSUxF
RCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQotWyBS
VU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0o
ZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiBmYWxzZSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBl
cnJvcjogVmFsdWUgb2Y6IGZhbHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4cGVjdGVkOiB0cnVlCi1b
ICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUK
LVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBMb2dnaW5nVGVzdAotWyBSVU4gICAgICBdIExvZ2dp
bmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCi0oZXhwZWN0aW5nIDIgZmFp
bHVyZXMgb24gKDMpID49IChhW2ldKSkKLWkgPT0gMAotaSA9PSAxCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgOQot
aSA9PSAyCi1pID09IDMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6
ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA2Ci1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3Qu
SW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLVstLS0tLS0tLS0tXSA1IHRlc3RzIGZy
b20gU0NPUEVEX1RSQUNFVGVzdAotWyBSVU4gICAgICBdIFNDT1BFRF9UUkFDRVRlc3QuT2JleXNT
Y29wZXMKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9y
OiBGYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEg
dHJhY2UuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotVGhpcyBmYWls
dXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGhhdmUgYSB0cmFjZS4KLUdvb2dsZSBUZXN0IHRy
YWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEV4cGVjdGVkIHRyYWNlCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBh
bmQgc2hvdWxkbid0IGhhdmUgYSB0cmFjZS4KLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0
Lk9iZXlzU2NvcGVzCi1bIFJVTiAgICAgIF0gU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAot
KGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVl
IG9mOiBuCi0gIEFjdHVhbDogMQotRXhwZWN0ZWQ6IDIKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGkgPSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJy
b3I6IFZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLUdvb2dsZSBUZXN0IHRy
YWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGkgPSAyCi1bICBGQUlMRUQgIF0gU0NPUEVE
X1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAotWyBSVU4gICAgICBdIFNDT1BFRF9UUkFDRVRlc3QuV29y
a3NJblN1YnJvdXRpbmUKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IGVycm9yOiBWYWx1ZSBvZjogbgotICBBY3R1YWw6IDEKLUV4cGVjdGVkOiAyCi1Hb29nbGUg
VGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBuID0gMQotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogbgotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAx
Ci1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBuID0gMgotWyAg
RkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuV29ya3NJblN1YnJvdXRpbmUKLVsgUlVOICAgICAg
XSBTQ09QRURfVFJBQ0VUZXN0LkNhbkJlTmVzdGVkCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAyCi1FeHBl
Y3RlZDogMQotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogbiA9
IDIKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiAKLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJBQ0VU
ZXN0LkNhbkJlTmVzdGVkCi1bIFJVTiAgICAgIF0gU0NPUEVEX1RSQUNFVGVzdC5DYW5CZVJlcGVh
dGVkCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjog
RmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFj
ZSBwb2ludCBBLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
QQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLVRoaXMgZmFpbHVyZSBp
cyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEgYW5kIEIuCi1Hb29n
bGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBCCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogQQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLVRo
aXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEs
IEIsIGFuZCBDLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
QwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEIKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBB
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEQuCi1H
b29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBECi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEEKLVsgIEZBSUxFRCAg
XSBTQ09QRURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJv
bSBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QKLVsgUlVOICAgICAgXSBO
b25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0
b3IKLShleHBlY3RpbmcgNSBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJv
cjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGMndG9y
LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1
cmUgIzIsIGluIFNldFVwKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxl
ZAotRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgYm9keS4KLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICM0LCBpbiBUZWFyRG93
bi4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWls
dXJlICM1LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIE5vbkZhdGFs
RmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotWy0t
LS0tLS0tLS1dIDEgdGVzdCBmcm9tIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVz
dAotWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWls
dXJlSW5Db25zdHJ1Y3RvcgotKGV4cGVjdGluZyAyIGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0
IGZpeHR1cmUgYyd0b3IuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAot
RXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxF
RCAgXSBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3Ry
dWN0b3IKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVz
dAotWyBSVU4gICAgICBdIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVw
Ci0oZXhwZWN0aW5nIDQgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6
IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVz
dCBmdW5jdGlvbi4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBl
Y3RlZCBmYWlsdXJlICMzLCBpbiBUZWFyRG93bigpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRoZSB0ZXN0IGZpeHR1cmUg
ZCd0b3IuCi1bICBGQUlMRUQgIF0gTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUlu
U2V0VXAKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBGYXRhbEZhaWx1cmVJblNldFVwVGVzdAot
WyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi0oZXhw
ZWN0aW5nIDMgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxl
ZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUg
IzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJl
SW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBFeGNl
cHRpb25JbkZpeHR1cmVDdG9yVGVzdAotWyBSVU4gICAgICBdIEV4Y2VwdGlvbkluRml4dHVyZUN0
b3JUZXN0LkV4Y2VwdGlvbkluRml4dHVyZUN0b3IKLShleHBlY3RpbmcgYSBmYWlsdXJlIG9uIHRo
cm93biBleGNlcHRpb24gaW4gdGhlIHRlc3QgZml4dHVyZSdzIGNvbnN0cnVjdG9yKQotdW5rbm93
biBmaWxlOiBlcnJvcjogRXhjZXB0aW9uIHRocm93biB3aXRoIGNvZGUgMHhjMDAwMDAwNSBpbiB0
aGUgdGVzdCBmaXh0dXJlJ3MgY29uc3RydWN0b3IuCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20g
RXhjZXB0aW9uSW5TZXRVcFRlc3QKLVsgUlVOICAgICAgXSBFeGNlcHRpb25JblNldFVwVGVzdC5F
eGNlcHRpb25JblNldFVwCi0oZXhwZWN0aW5nIDMgZmFpbHVyZXMpCi11bmtub3duIGZpbGU6IGVy
cm9yOiBFeGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAweGMwMDAwMDA1IGluIFNldFVwKCkuCi1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAj
MiwgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVk
Ci1FeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJ
TEVEICBdIEV4Y2VwdGlvbkluU2V0VXBUZXN0LkV4Y2VwdGlvbkluU2V0VXAKLVstLS0tLS0tLS0t
XSAyIHRlc3RzIGZyb20gRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0Ci1bIFJVTiAgICAgIF0g
RXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0LlNFSAotKGV4cGVjdGluZyAzIGZhaWx1cmVzKQot
dW5rbm93biBmaWxlOiBlcnJvcjogRXhjZXB0aW9uIHRocm93biB3aXRoIGNvZGUgMHhjMDAwMDAw
NSBpbiB0aGUgdGVzdCBib2R5LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWls
ZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRlYXJEb3duKCkuCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3Qg
Zml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3Qu
U0VICi1bIFJVTiAgICAgIF0gRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0LkNwcEV4Y2VwdGlv
bgotdW5rbm93biBmaWxlOiBlcnJvcjogRXhjZXB0aW9uIHRocm93biB3aXRoIGNvZGUgMHhlMDZk
NzM2MyBpbiB0aGUgdGVzdCBib2R5LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBG
YWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRlYXJEb3duKCkuCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRl
c3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRl
c3QuQ3BwRXhjZXB0aW9uCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRXhjZXB0aW9uSW5UZWFy
RG93blRlc3QKLVsgUlVOICAgICAgXSBFeGNlcHRpb25JblRlYXJEb3duVGVzdC5FeGNlcHRpb25J
blRlYXJEb3duCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMpCi11bmtub3duIGZpbGU6IGVycm9yOiBF
eGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAweGUwNmQ3MzYzIGluIFRlYXJEb3duKCkuCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwg
aW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAgXSBFeGNlcHRpb25JblRlYXJE
b3duVGVzdC5FeGNlcHRpb25JblRlYXJEb3duCi1bLS0tLS0tLS0tLV0gNCB0ZXN0cyBmcm9tIE1p
eGVkVXBUZXN0Q2FzZVRlc3QKLVsgUlVOICAgICAgXSBNaXhlZFVwVGVzdENhc2VUZXN0LkZpcnN0
VGVzdEZyb21OYW1lc3BhY2VGb28KLVsgICAgICAgT0sgXSBNaXhlZFVwVGVzdENhc2VUZXN0LkZp
cnN0VGVzdEZyb21OYW1lc3BhY2VGb28KLVsgUlVOICAgICAgXSBNaXhlZFVwVGVzdENhc2VUZXN0
LlNlY29uZFRlc3RGcm9tTmFtZXNwYWNlRm9vCi1bICAgICAgIE9LIF0gTWl4ZWRVcFRlc3RDYXNl
VGVzdC5TZWNvbmRUZXN0RnJvbU5hbWVzcGFjZUZvbwotWyBSVU4gICAgICBdIE1peGVkVXBUZXN0
Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwKLWd0ZXN0LmNjOiM6IGVycm9yOiBGYWlsZWQKLUFsbCB0
ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJl
Ci1jbGFzcy4gIEhvd2V2ZXIsIGluIHRlc3QgY2FzZSBNaXhlZFVwVGVzdENhc2VUZXN0LAoteW91
IGRlZmluZWQgdGVzdCBGaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vIGFuZCB0ZXN0IFRoaXNTaG91
bGRGYWlsCi11c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAgVGhpcyBj
YW4gaGFwcGVuIGlmCi10aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5hbWVzcGFj
ZXMgb3IgdHJhbnNsYXRpb24KLXVuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZb3Ugc2hv
dWxkIHByb2JhYmx5IHJlbmFtZSBvbmUKLW9mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMg
aW50byBkaWZmZXJlbnQgdGVzdCBjYXNlcy4KLVsgIEZBSUxFRCAgXSBNaXhlZFVwVGVzdENhc2VU
ZXN0LlRoaXNTaG91bGRGYWlsCi1bIFJVTiAgICAgIF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlz
U2hvdWxkRmFpbFRvbwotZ3Rlc3QuY2M6IzogZXJyb3I6IEZhaWxlZAotQWxsIHRlc3RzIGluIHRo
ZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAg
SG93ZXZlciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVRlc3QsCi15b3UgZGVmaW5lZCB0
ZXN0IEZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28gYW5kIHRlc3QgVGhpc1Nob3VsZEZhaWxUb28K
LXVzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBoYXBw
ZW4gaWYKLXRoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0
cmFuc2xhdGlvbgotdW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQgcHJv
YmFibHkgcmVuYW1lIG9uZQotb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRp
ZmZlcmVudCB0ZXN0IGNhc2VzLgotWyAgRkFJTEVEICBdIE1peGVkVXBUZXN0Q2FzZVRlc3QuVGhp
c1Nob3VsZEZhaWxUb28KLVstLS0tLS0tLS0tXSAyIHRlc3RzIGZyb20gTWl4ZWRVcFRlc3RDYXNl
V2l0aFNhbWVUZXN0TmFtZVRlc3QKLVsgUlVOICAgICAgXSBNaXhlZFVwVGVzdENhc2VXaXRoU2Ft
ZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotWyAgICAg
ICBPSyBdIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RX
aXRoVGhpc05hbWVTaG91bGRGYWlsCi1bIFJVTiAgICAgIF0gTWl4ZWRVcFRlc3RDYXNlV2l0aFNh
bWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLWd0ZXN0
LmNjOiM6IGVycm9yOiBGYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVz
dCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcy4gIEhvd2V2ZXIsIGluIHRlc3QgY2Fz
ZSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdCwKLXlvdSBkZWZpbmVkIHRlc3Qg
VGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwgYW5kIHRlc3QgVGhlU2Vjb25kVGVz
dFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLXVzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJl
IGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKLXRoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBk
aWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlvbgotdW5pdHMgYW5kIGhhdmUgdGhlIHNh
bWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVuYW1lIG9uZQotb2YgdGhlIGNsYXNzZXMg
dG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0ZXN0IGNhc2VzLgotWyAgRkFJTEVEICBd
IE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhp
c05hbWVTaG91bGRGYWlsCi1bLS0tLS0tLS0tLV0gMiB0ZXN0cyBmcm9tIFRFU1RfRl9iZWZvcmVf
VEVTVF9pbl9zYW1lX3Rlc3RfY2FzZQotWyBSVU4gICAgICBdIFRFU1RfRl9iZWZvcmVfVEVTVF9p
bl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0YKLVsgICAgICAgT0sgXSBURVNUX0Zf
YmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GCi1bIFJVTiAg
ICAgIF0gVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RF
U1RBbmRTaG91bGRGYWlsCi1ndGVzdC5jYzojOiBlcnJvcjogRmFpbGVkCi1BbGwgdGVzdHMgaW4g
dGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3Ms
IHNvIG1peGluZyBURVNUX0YgYW5kIFRFU1QgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIGlzCi1pbGxl
Z2FsLiAgSW4gdGVzdCBjYXNlIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSwK
LXRlc3QgRGVmaW5lZFVzaW5nVEVTVF9GIGlzIGRlZmluZWQgdXNpbmcgVEVTVF9GIGJ1dAotdGVz
dCBEZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxkRmFpbCBpcyBkZWZpbmVkIHVzaW5nIFRFU1QuICBZ
b3UgcHJvYmFibHkKLXdhbnQgdG8gY2hhbmdlIHRoZSBURVNUIHRvIFRFU1RfRiBvciBtb3ZlIGl0
IHRvIGFub3RoZXIgdGVzdAotY2FzZS4KLVsgIEZBSUxFRCAgXSBURVNUX0ZfYmVmb3JlX1RFU1Rf
aW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwKLVstLS0tLS0t
LS0tXSAyIHRlc3RzIGZyb20gVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlCi1b
IFJVTiAgICAgIF0gVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRV
c2luZ1RFU1QKLVsgICAgICAgT0sgXSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nh
c2UuRGVmaW5lZFVzaW5nVEVTVAotWyBSVU4gICAgICBdIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9z
YW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsCi1ndGVzdC5jYzoj
OiBlcnJvcjogRmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNl
IHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3MsIHNvIG1peGluZyBURVNUX0YgYW5kIFRFU1Qg
aW4gdGhlIHNhbWUgdGVzdCBjYXNlIGlzCi1pbGxlZ2FsLiAgSW4gdGVzdCBjYXNlIFRFU1RfYmVm
b3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZSwKLXRlc3QgRGVmaW5lZFVzaW5nVEVTVF9GQW5k
U2hvdWxkRmFpbCBpcyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKLXRlc3QgRGVmaW5lZFVzaW5n
VEVTVCBpcyBkZWZpbmVkIHVzaW5nIFRFU1QuICBZb3UgcHJvYmFibHkKLXdhbnQgdG8gY2hhbmdl
IHRoZSBURVNUIHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRvIGFub3RoZXIgdGVzdAotY2FzZS4KLVsg
IEZBSUxFRCAgXSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVz
aW5nVEVTVF9GQW5kU2hvdWxkRmFpbAotWy0tLS0tLS0tLS1dIDggdGVzdHMgZnJvbSBFeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0Ci1bIFJVTiAgICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVz
dC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLVsgICAgICAgT0sgXSBFeHBlY3ROb25mYXRh
bEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotWyBSVU4gICAgICBdIEV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxWYXJpYWJsZXMKLVsgICAg
ICAgT0sgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsVmFyaWFi
bGVzCi1bIFJVTiAgICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1doZW5U
aGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi1bICAgICAgIE9LIF0gRXhwZWN0Tm9uZmF0YWxGYWls
dXJlVGVzdC5TdWNjZWVkc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi1bIFJVTiAgICAg
IF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZh
aWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVk
OiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotWyAgRkFJTEVEICBd
IEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWls
dXJlCi1bIFJVTiAgICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVy
ZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6
IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMiBmYWls
dXJlcwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVk
Ci1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSAxLgotCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
IDIuCi0KLVsgIEZBSUxFRCAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRo
ZXJlQXJlVHdvTm9uZmF0YWxGYWlsdXJlcwotWyBSVU4gICAgICBdIEV4cGVjdE5vbmZhdGFsRmFp
bHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZh
aWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUK
LSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWls
ZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLVsgIEZBSUxFRCAgXSBFeHBlY3ROb25mYXRh
bEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLVsgUlVOICAgICAg
XSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLShl
eHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5vbi1m
YXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotWyAgRkFJTEVEICBdIEV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotWyBSVU4gICAgICBd
IEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi0oZXhw
ZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0
YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBFeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotWy0tLS0tLS0tLS1dIDgg
dGVzdHMgZnJvbSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0Ci1bIFJVTiAgICAgIF0gRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLVsgICAgICAgT0sgXSBF
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotWyBSVU4g
ICAgICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxTdGF0aWNWYXJp
YWJsZXMKLVsgICAgICAgT0sgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxv
Y2FsU3RhdGljVmFyaWFibGVzCi1bIFJVTiAgICAgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5T
dWNjZWVkc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi1bICAgICAgIE9LIF0gRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi1bIFJVTiAg
ICAgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1
cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAx
IGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKLVsgUlVOICAg
ICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWls
dXJlcwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6
IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDIgZmFpbHVyZXMKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgot
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0
ZWQgZmF0YWwgZmFpbHVyZS4KLQotWyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qu
RmFpbHNXaGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzCi1bIFJVTiAgICAgIF0gRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi0oZXhwZWN0
aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWls
dXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVy
ZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLVsgIEZBSUxFRCAgXSBF
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUK
LVsgUlVOICAgICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJl
dHVybnMKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVk
OiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhw
ZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi1bIFJVTiAgICAg
IF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLShleHBl
Y3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZh
aWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxGYWls
dXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLVstLS0tLS0tLS0tXSAyIHRlc3RzIGZy
b20gVHlwZWRUZXN0LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGludAotWyBSVU4gICAgICBdIFR5cGVk
VGVzdC8wLlN1Y2Nlc3MKLVsgICAgICAgT0sgXSBUeXBlZFRlc3QvMC5TdWNjZXNzCi1bIFJVTiAg
ICAgIF0gVHlwZWRUZXN0LzAuRmFpbHVyZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9y
OiBWYWx1ZSBvZjogVHlwZVBhcmFtKCkKLSAgQWN0dWFsOiAwCi1FeHBlY3RlZDogMQotRXhwZWN0
ZWQgZmFpbHVyZQotWyAgRkFJTEVEICBdIFR5cGVkVGVzdC8wLkZhaWx1cmUKLVstLS0tLS0tLS0t
XSAyIHRlc3RzIGZyb20gVW5zaWduZWQvVHlwZWRUZXN0UC8wLCB3aGVyZSBUeXBlUGFyYW0gPSB1
bnNpZ25lZCBjaGFyCi1bIFJVTiAgICAgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8wLlN1Y2Nlc3MK
LVsgICAgICAgT0sgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAuU3VjY2VzcwotWyBSVU4gICAgICBd
IFVuc2lnbmVkL1R5cGVkVGVzdFAvMC5GYWlsdXJlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
ZXJyb3I6IFZhbHVlIG9mOiBUeXBlUGFyYW0oKQotICBBY3R1YWw6IFwwCi1FeHBlY3RlZDogMVUK
LVdoaWNoIGlzOiAxCi1FeHBlY3RlZCBmYWlsdXJlCi1bICBGQUlMRUQgIF0gVW5zaWduZWQvVHlw
ZWRUZXN0UC8wLkZhaWx1cmUKLVstLS0tLS0tLS0tXSAyIHRlc3RzIGZyb20gVW5zaWduZWQvVHlw
ZWRUZXN0UC8xLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKLVsgUlVOICAgICAgXSBV
bnNpZ25lZC9UeXBlZFRlc3RQLzEuU3VjY2VzcwotWyAgICAgICBPSyBdIFVuc2lnbmVkL1R5cGVk
VGVzdFAvMS5TdWNjZXNzCi1bIFJVTiAgICAgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1
cmUKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IFR5cGVQYXJhbSgp
Ci0gIEFjdHVhbDogMAotRXhwZWN0ZWQ6IDFVCi1XaGljaCBpczogMQotRXhwZWN0ZWQgZmFpbHVy
ZQotWyAgRkFJTEVEICBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlCi1bLS0tLS0tLS0t
LV0gNCB0ZXN0cyBmcm9tIEV4cGVjdEZhaWx1cmVUZXN0Ci1bIFJVTiAgICAgIF0gRXhwZWN0RmFp
bHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0
LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBTdWNjZXNzOgotU3VjY2VlZGVkCi0KLShleHBlY3RpbmcgMSBm
YWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAg
QWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFp
bGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQotKGV4cGVjdGluZyAxIGZhaWx1cmUp
Ci1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZSBjb250YWluaW5n
ICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUgZXhwZWN0ZWQuIgotICBBY3R1YWw6Ci1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwg
ZmFpbHVyZS4KLQotWyAgRkFJTEVEICBdIEV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFp
bHVyZQotWyBSVU4gICAgICBdIEV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVy
ZQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEg
bm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1
Y2Nlc3M6Ci1TdWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBl
cnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZh
aWx1cmUuCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVj
dGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgbm9uLWZhdGFs
IGZhaWx1cmUuIgotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFs
IGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi1bICBGQUlM
RUQgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi1bIFJVTiAgICAg
IF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0oZXhw
ZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBm
YWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBTdWNjZXNzOgotU3Vj
Y2VlZGVkCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVj
dGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4K
LQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEg
ZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUgZXhwZWN0
ZWQuIgotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToK
LUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotWyAgRkFJTEVEICBdIEV4cGVjdEZh
aWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotWyBSVU4gICAgICBdIEV4
cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotKGV4cGVj
dGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFs
IGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1T
dWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhw
ZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0K
LShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5v
bi1mYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1cmUu
IgotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6
Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQgIF0gRXhw
ZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi1bLS0tLS0t
LS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCi1CYXJFbnZpcm9ubWVudDo6
VGVhckRvd24oKSBjYWxsZWQuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxl
ZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi1Gb29FbnZpcm9ubWVudDo6VGVhckRvd24o
KSBjYWxsZWQuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0
ZWQgZmF0YWwgZmFpbHVyZS4KLVs9PT09PT09PT09XSA2MSB0ZXN0cyBmcm9tIDI3IHRlc3QgY2Fz
ZXMgcmFuLgotWyAgUEFTU0VEICBdIDIxIHRlc3RzLgotWyAgRkFJTEVEICBdIDQwIHRlc3RzLCBs
aXN0ZWQgYmVsb3c6Ci1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJ
blN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUlu
TmVzdGVkU3Vicm91dGluZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxG
YWlsdXJlSW5TdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5n
TG9nZ2luZ0FuZEFzc2VydGlvbnMKLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0Lk9iZXlz
U2NvcGVzCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAotWyAgRkFJ
TEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuV29ya3NJblN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBT
Q09QRURfVFJBQ0VUZXN0LkNhbkJlTmVzdGVkCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVz
dC5DYW5CZVJlcGVhdGVkCi1bICBGQUlMRUQgIF0gTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29u
c3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi1bICBGQUlMRUQgIF0gRmF0YWxGYWls
dXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi1bICBGQUlM
RUQgIF0gTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKLVsgIEZBSUxF
RCAgXSBGYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotWyAgRkFJTEVEICBd
IEV4Y2VwdGlvbkluRml4dHVyZUN0b3JUZXN0LkV4Y2VwdGlvbkluRml4dHVyZUN0b3IKLVsgIEZB
SUxFRCAgXSBFeGNlcHRpb25JblNldFVwVGVzdC5FeGNlcHRpb25JblNldFVwCi1bICBGQUlMRUQg
IF0gRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0LlNFSAotWyAgRkFJTEVEICBdIEV4Y2VwdGlv
bkluVGVzdEZ1bmN0aW9uVGVzdC5DcHBFeGNlcHRpb24KLVsgIEZBSUxFRCAgXSBFeGNlcHRpb25J
blRlYXJEb3duVGVzdC5FeGNlcHRpb25JblRlYXJEb3duCi1bICBGQUlMRUQgIF0gTWl4ZWRVcFRl
c3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbAotWyAgRkFJTEVEICBdIE1peGVkVXBUZXN0Q2FzZVRl
c3QuVGhpc1Nob3VsZEZhaWxUb28KLVsgIEZBSUxFRCAgXSBNaXhlZFVwVGVzdENhc2VXaXRoU2Ft
ZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotWyAgRkFJ
TEVEICBdIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdU
RVNUQW5kU2hvdWxkRmFpbAotWyAgRkFJTEVEICBdIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1l
X3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsCi1bICBGQUlMRUQgIF0g
RXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1
cmUKLVsgIEZBSUxFRCAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJl
QXJlVHdvTm9uZmF0YWxGYWlsdXJlcwotWyAgRkFJTEVEICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVy
ZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVj
dE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotWyAgRkFJTEVE
ICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi1b
ICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRh
bEZhaWx1cmUKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRo
ZXJlQXJlVHdvRmF0YWxGYWlsdXJlcwotWyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRl
c3QuRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVj
dEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotWyAgRkFJTEVEICBd
IEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi1bICBGQUlM
RUQgIF0gVHlwZWRUZXN0LzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci1bICBGQUlM
RUQgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVu
c2lnbmVkIGNoYXIKLVsgIEZBSUxFRCAgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZSwg
d2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50Ci1bICBGQUlMRUQgIF0gRXhwZWN0RmFpbHVy
ZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCi1bICBGQUlMRUQgIF0gRXhwZWN0RmFpbHVyZVRlc3Qu
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi1bICBGQUlMRUQgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhw
ZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi1bICBGQUlMRUQgIF0gRXhwZWN0RmFpbHVyZVRl
c3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0KLTQwIEZBSUxFRCBURVNUUwot
ICBZT1UgSEFWRSAxIERJU0FCTEVEIFRFU1QKLQotTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0g
RmF0YWxGYWlsdXJlVGVzdC4qOkxvZ2dpbmdUZXN0LioKLVs9PT09PT09PT09XSBSdW5uaW5nIDQg
dGVzdHMgZnJvbSAyIHRlc3QgY2FzZXMuCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJv
bm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDMgdGVzdHMgZnJvbSBGYXRhbEZhaWx1cmVUZXN0
Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUK
LShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQot
WyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lICg/
IG1zKQotWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRT
dWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiB4Ci0gIEFjdHVhbDogMgotRXhw
ZWN0ZWQ6IDEKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVz
dGVkU3Vicm91dGluZSAoPyBtcykKLVsgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZh
dGFsRmFpbHVyZUluU3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgb24gZmFsc2UpCi1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBmYWxzZQotICBBY3R1YWw6
IGZhbHNlCi1FeHBlY3RlZDogdHJ1ZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9u
ZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lICg/IG1zKQotWy0tLS0tLS0tLS1dIDMgdGVzdHMgZnJv
bSBGYXRhbEZhaWx1cmVUZXN0ICg/IG1zIHRvdGFsKQotCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZy
b20gTG9nZ2luZ1Rlc3QKLVsgUlVOICAgICAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dn
aW5nQW5kQXNzZXJ0aW9ucwotKGV4cGVjdGluZyAyIGZhaWx1cmVzIG9uICgzKSA+PSAoYVtpXSkp
Ci1pID09IDAKLWkgPT0gMQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBFeHBlY3Rl
ZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDkKLWkgPT0gMgotaSA9PSAzCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6
IDMgdnMgNgotWyAgRkFJTEVEICBdIExvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRB
c3NlcnRpb25zICg/IG1zKQotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExvZ2dpbmdUZXN0ICg/
IG1zIHRvdGFsKQotCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1k
b3duCi1bPT09PT09PT09PV0gNCB0ZXN0cyBmcm9tIDIgdGVzdCBjYXNlcyByYW4uICg/IG1zIHRv
dGFsKQotWyAgUEFTU0VEICBdIDAgdGVzdHMuCi1bICBGQUlMRUQgIF0gNCB0ZXN0cywgbGlzdGVk
IGJlbG93OgotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJy
b3V0aW5lCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3Rl
ZFN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVy
ZUluU3Vicm91dGluZQotWyAgRkFJTEVEICBdIExvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dp
bmdBbmRBc3NlcnRpb25zCi0KLSA0IEZBSUxFRCBURVNUUwotICBZT1UgSEFWRSAxIERJU0FCTEVE
IFRFU1QKLQotTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gKkRJU0FCTEVEXyoKLVs9PT09PT09
PT09XSBSdW5uaW5nIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlLgotWy0tLS0tLS0tLS1dIEdsb2Jh
bCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBEaXNh
YmxlZFRlc3RzV2FybmluZ1Rlc3QKLVsgUlVOICAgICAgXSBEaXNhYmxlZFRlc3RzV2FybmluZ1Rl
c3QuRElTQUJMRURfQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnU3VwcHJlc3Nlc1dhcm5pbmcKLVsg
ICAgICAgT0sgXSBEaXNhYmxlZFRlc3RzV2FybmluZ1Rlc3QuRElTQUJMRURfQWxzb1J1bkRpc2Fi
bGVkVGVzdHNGbGFnU3VwcHJlc3Nlc1dhcm5pbmcKLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBl
bnZpcm9ubWVudCB0ZWFyLWRvd24KLVs9PT09PT09PT09XSAxIHRlc3QgZnJvbSAxIHRlc3QgY2Fz
ZSByYW4uCi1bICBQQVNTRUQgIF0gMSB0ZXN0LgotTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0g
UGFzc2luZ1Rlc3QuKgotTm90ZTogVGhpcyBpcyB0ZXN0IHNoYXJkIDEgb2YgMi4KLVs9PT09PT09
PT09XSBSdW5uaW5nIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlLgotWy0tLS0tLS0tLS1dIEdsb2Jh
bCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBQYXNz
aW5nVGVzdAotWyBSVU4gICAgICBdIFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgotWyAgICAgICBP
SyBdIFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVu
dmlyb25tZW50IHRlYXItZG93bgotWz09PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNl
IHJhbi4KLVsgIFBBU1NFRCAgXSAxIHRlc3QuCi0KLSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNU
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJlZF9p
bXBsX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcmVk
X2ltcGxfdW5pdHRlc3QuY2MKaW5kZXggZTdlZTU0YjU2ZDg2YjllYTU0YjcxNjEyNTg2OWFhMjg3
ZDEyNmJlNy4uYTg0ZWZmODYwYTRkN2RjOGI4NTYzZjhlMWU3ZjQ3OWUyOTJlYTMzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcmVkX2ltcGxfdW5pdHRl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcmVkX2ltcGxf
dW5pdHRlc3QuY2MKQEAgLTI3LDcgKzI3LDcgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIAotLy8gVGhpcyBmaWxlIGlzIEFVVE9NQVRJQ0FMTFkgR0VORVJBVEVEIG9uIDEwLzAy
LzIwMDggYnkgY29tbWFuZAorLy8gVGhpcyBmaWxlIGlzIEFVVE9NQVRJQ0FMTFkgR0VORVJBVEVE
IG9uIDEwLzMxLzIwMTEgYnkgY29tbWFuZAogLy8gJ2dlbl9ndGVzdF9wcmVkX2ltcGwucHkgNScu
ICBETyBOT1QgRURJVCBCWSBIQU5EIQogCiAvLyBSZWdyZXNzaW9uIHRlc3QgZm9yIGd0ZXN0X3By
ZWRfaW1wbC5oCkBAIC00OSw4ICs0OSw4IEBACiAKICNpbmNsdWRlIDxpb3N0cmVhbT4KIAotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+CisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKIAogLy8g
QSB1c2VyLWRlZmluZWQgZGF0YSB0eXBlLgogc3RydWN0IEJvb2wgewpAQCAtMTAzLDExICsxMDMs
MTAgQEAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRGb3JtYXRGdW5jdGlvbjEoY29uc3Qg
Y2hhciogZTEsCiAgIGlmIChQcmVkRnVuY3Rpb24xKHYxKSkKICAgICByZXR1cm4gdGVzdGluZzo6
QXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIHRlc3Rpbmc6Ok1lc3NhZ2UgbXNnOwotICBtc2cgPDwg
ZTEKKyAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwgZTEKICAg
ICAgIDw8ICIgaXMgZXhwZWN0ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgog
ICAgICAgPDwgdjEgPDwgIi4iOwotICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSht
c2cpOwogfQogCiAvLyBBIHVuYXJ5IHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rvci4KQEAgLTQ5
NCwxMSArNDkzLDEwIEBAIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rp
b24yKGNvbnN0IGNoYXIqIGUxLAogICBpZiAoUHJlZEZ1bmN0aW9uMih2MSwgdjIpKQogICAgIHJl
dHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgdGVzdGluZzo6TWVzc2FnZSBt
c2c7Ci0gIG1zZyA8PCBlMSA8PCAiICsgIiA8PCBlMgorICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0
aW9uRmFpbHVyZSgpCisgICAgICA8PCBlMSA8PCAiICsgIiA8PCBlMgogICAgICAgPDwgIiBpcyBl
eHBlY3RlZCB0byBiZSBwb3NpdGl2ZSwgYnV0IGV2YWx1YXRlcyB0byAiCiAgICAgICA8PCB2MSAr
IHYyIDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNnKTsKIH0K
IAogLy8gQSBiaW5hcnkgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdG9yLgpAQCAtOTI3LDExICs5
MjUsMTAgQEAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRGb3JtYXRGdW5jdGlvbjMoY29u
c3QgY2hhciogZTEsCiAgIGlmIChQcmVkRnVuY3Rpb24zKHYxLCB2MiwgdjMpKQogICAgIHJldHVy
biB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgdGVzdGluZzo6TWVzc2FnZSBtc2c7
Ci0gIG1zZyA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBlMworICByZXR1cm4gdGVz
dGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAi
ICsgIiA8PCBlMwogICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBiZSBwb3NpdGl2ZSwgYnV0IGV2
YWx1YXRlcyB0byAiCiAgICAgICA8PCB2MSArIHYyICsgdjMgPDwgIi4iOwotICByZXR1cm4gdGVz
dGluZzo6QXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogCiAvLyBBIHRlcm5hcnkgcHJlZGljYXRl
LWZvcm1hdHRlciBmdW5jdG9yLgpAQCAtMTQwMiwxMSArMTM5OSwxMCBAQCB0ZXN0aW5nOjpBc3Nl
cnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1bmN0aW9uNChjb25zdCBjaGFyKiBlMSwKICAgaWYgKFBy
ZWRGdW5jdGlvbjQodjEsIHYyLCB2MywgdjQpKQogICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRp
b25TdWNjZXNzKCk7CiAKLSAgdGVzdGluZzo6TWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBlMSA8PCAi
ICsgIiA8PCBlMiA8PCAiICsgIiA8PCBlMyA8PCAiICsgIiA8PCBlNAorICByZXR1cm4gdGVzdGlu
Zzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAiICsg
IiA8PCBlMyA8PCAiICsgIiA8PCBlNAogICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBiZSBwb3Np
dGl2ZSwgYnV0IGV2YWx1YXRlcyB0byAiCiAgICAgICA8PCB2MSArIHYyICsgdjMgKyB2NCA8PCAi
LiI7Ci0gIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIC8vIEEg
NC1hcnkgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdG9yLgpAQCAtMTkxOSwxMSArMTkxNSwxMCBA
QCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1bmN0aW9uNShjb25zdCBjaGFy
KiBlMSwKICAgaWYgKFByZWRGdW5jdGlvbjUodjEsIHYyLCB2MywgdjQsIHY1KSkKICAgICByZXR1
cm4gdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIHRlc3Rpbmc6Ok1lc3NhZ2UgbXNn
OwotICBtc2cgPDwgZTEgPDwgIiArICIgPDwgZTIgPDwgIiArICIgPDwgZTMgPDwgIiArICIgPDwg
ZTQgPDwgIiArICIgPDwgZTUKKyAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQor
ICAgICAgPDwgZTEgPDwgIiArICIgPDwgZTIgPDwgIiArICIgPDwgZTMgPDwgIiArICIgPDwgZTQg
PDwgIiArICIgPDwgZTUKICAgICAgIDw8ICIgaXMgZXhwZWN0ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1
dCBldmFsdWF0ZXMgdG8gIgogICAgICAgPDwgdjEgKyB2MiArIHYzICsgdjQgKyB2NSA8PCAiLiI7
Ci0gIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIC8vIEEgNS1h
cnkgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcmVtYXR1cmVfZXhpdF90ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcmVtYXR1cmVfZXhpdF90ZXN0LmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNiNGRjN2Q0M2ZkNmY0OGI5YWZhMzJmY2VhZTYzZGE4NTNjNjQ0MTgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZW1hdHVyZV9leGl0
X3Rlc3QuY2MKQEAgLTAsMCArMSwxMjcgQEAKKy8vIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5j
LgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBX
YW4pCisvLworLy8gVGVzdHMgdGhhdCBHb29nbGUgVGVzdCBtYW5pcHVsYXRlcyB0aGUgcHJlbWF0
dXJlLWV4aXQtZGV0ZWN0aW9uCisvLyBmaWxlIGNvcnJlY3RseS4KKworI2luY2x1ZGUgPHN0ZGlv
Lmg+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCit1c2luZyA6OnRlc3Rpbmc6OkluaXRH
b29nbGVUZXN0OwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0OwordXNpbmcgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6cG9zaXg6OkdldEVudjsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpT
dGF0OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OlN0YXRTdHJ1Y3Q7CisKK25h
bWVzcGFjZSB7CisKK2NsYXNzIFByZW1hdHVyZUV4aXRUZXN0IDogcHVibGljIFRlc3QgeworIHB1
YmxpYzoKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgZ2l2ZW4gZmlsZSBleGlzdHMuCisgIHN0
YXRpYyBib29sIEZpbGVFeGlzdHMoY29uc3QgY2hhciogZmlsZXBhdGgpIHsKKyAgICBTdGF0U3Ry
dWN0IHN0YXQ7CisgICAgcmV0dXJuIFN0YXQoZmlsZXBhdGgsICZzdGF0KSA9PSAwOworICB9CisK
KyBwcm90ZWN0ZWQ6CisgIFByZW1hdHVyZUV4aXRUZXN0KCkgeworICAgIHByZW1hdHVyZV9leGl0
X2ZpbGVfcGF0aF8gPSBHZXRFbnYoIlRFU1RfUFJFTUFUVVJFX0VYSVRfRklMRSIpOworCisgICAg
Ly8gTm9ybWFsaXplIE5VTEwgdG8gIiIgZm9yIGVhc2Ugb2YgaGFuZGxpbmcuCisgICAgaWYgKHBy
ZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8gPT0gTlVMTCkgeworICAgICAgcHJlbWF0dXJlX2V4aXRf
ZmlsZV9wYXRoXyA9ICIiOworICAgIH0KKyAgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhl
IHByZW1hdHVyZS1leGl0IGZpbGUgZXhpc3RzLgorICBib29sIFByZW1hdHVyZUV4aXRGaWxlRXhp
c3RzKCkgY29uc3QgeworICAgIHJldHVybiBGaWxlRXhpc3RzKHByZW1hdHVyZV9leGl0X2ZpbGVf
cGF0aF8pOworICB9CisKKyAgY29uc3QgY2hhciogcHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXzsK
K307CisKK3R5cGVkZWYgUHJlbWF0dXJlRXhpdFRlc3QgUHJlbWF0dXJlRXhpdERlYXRoVGVzdDsK
KworLy8gVGVzdHMgdGhhdDoKKy8vICAgLSB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZSBleGlzdHMg
ZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgYQorLy8gICAgIGRlYXRoIHRlc3QgKEVYUEVDVF9ERUFU
SCopLCBhbmQKKy8vICAgLSBhIGRlYXRoIHRlc3QgZG9lc24ndCBpbnRlcmZlcmUgd2l0aCB0aGUg
bWFpbiB0ZXN0IHByb2Nlc3MncworLy8gICAgIGhhbmRsaW5nIG9mIHRoZSBwcmVtYXR1cmUtZXhp
dCBmaWxlLgorVEVTVF9GKFByZW1hdHVyZUV4aXREZWF0aFRlc3QsIEZpbGVFeGlzdHNEdXJpbmdF
eGVjdXRpb25PZkRlYXRoVGVzdCkgeworICBpZiAoKnByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8g
PT0gJ1wwJykgeworICAgIHJldHVybjsKKyAgfQorCisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JU
RUQoeworICAgICAgLy8gSWYgdGhlIGZpbGUgZXhpc3RzLCBjcmFzaCB0aGUgcHJvY2VzcyBzdWNo
IHRoYXQgdGhlIG1haW4gdGVzdAorICAgICAgLy8gcHJvY2VzcyB3aWxsIGNhdGNoIHRoZSAoZXhw
ZWN0ZWQpIGNyYXNoIGFuZCByZXBvcnQgYSBzdWNjZXNzOworICAgICAgLy8gb3RoZXJ3aXNlIGRv
bid0IGNyYXNoLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBtYWluIHRlc3QgcHJvY2VzcworICAgICAg
Ly8gdG8gcmVwb3J0IHRoYXQgdGhlIGRlYXRoIHRlc3QgaGFzIGZhaWxlZC4KKyAgICAgIGlmIChQ
cmVtYXR1cmVFeGl0RmlsZUV4aXN0cygpKSB7CisgICAgICAgIGV4aXQoMSk7CisgICAgICB9Cisg
ICAgfSwgIiIpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlIGV4
aXN0cyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiBhCisvLyBub3JtYWwgKG5vbi1kZWF0aCkgdGVz
dC4KK1RFU1RfRihQcmVtYXR1cmVFeGl0VGVzdCwgUHJlbWF0dXJlRXhpdEZpbGVFeGlzdHNEdXJp
bmdUZXN0RXhlY3V0aW9uKSB7CisgIGlmICgqcHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXyA9PSAn
XDAnKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgRVhQRUNUX1RSVUUoUHJlbWF0dXJlRXhpdEZp
bGVFeGlzdHMoKSkKKyAgICAgIDw8ICIgZmlsZSAiIDw8IHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0
aF8KKyAgICAgIDw8ICIgc2hvdWxkIGV4aXN0IGR1cmluZyB0ZXN0IGV4ZWN1dGlvbiwgYnV0IGRv
ZXNuJ3QuIjsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFy
ICoqYXJndikgeworICBJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIGNvbnN0IGludCBl
eGl0X2NvZGUgPSBSVU5fQUxMX1RFU1RTKCk7CisKKyAgLy8gVGVzdCB0aGF0IHRoZSBwcmVtYXR1
cmUtZXhpdCBmaWxlIGlzIGRlbGV0ZWQgdXBvbiByZXR1cm4gZnJvbQorICAvLyBSVU5fQUxMX1RF
U1RTKCkuCisgIGNvbnN0IGNoYXIqIGNvbnN0IGZpbGVwYXRoID0gR2V0RW52KCJURVNUX1BSRU1B
VFVSRV9FWElUX0ZJTEUiKTsKKyAgaWYgKGZpbGVwYXRoICE9IE5VTEwgJiYgKmZpbGVwYXRoICE9
ICdcMCcpIHsKKyAgICBpZiAoUHJlbWF0dXJlRXhpdFRlc3Q6OkZpbGVFeGlzdHMoZmlsZXBhdGgp
KSB7CisgICAgICBwcmludGYoCisgICAgICAgICAgIkZpbGUgJXMgc2hvdWxkbid0IGV4aXN0IGFm
dGVyIHRoZSB0ZXN0IHByb2dyYW0gZmluaXNoZXMsIGJ1dCBkb2VzLiIsCisgICAgICAgICAgZmls
ZXBhdGgpOworICAgICAgcmV0dXJuIDE7CisgICAgfQorICB9CisKKyAgcmV0dXJuIGV4aXRfY29k
ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJv
ZF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcm9kX3Rlc3Qu
Y2MKaW5kZXggYmMzMjAxZDBmMjRhZTk4ZWQwNjJjN2I4YzlmNDRkN2RmZTZkN2M5Ni4uMDYwYWJj
ZTE4NzI0NGNmYzQ4YjNjZDVhNmNiODFiM2Y5ZWI5YWQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2MKQEAgLTMxLDcgKzMxLDcgQEAKIC8v
CiAvLyBVbml0IHRlc3QgZm9yIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oLgogCi0jaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgInRl
c3QvcHJvZHVjdGlvbi5oIgogCiAvLyBUZXN0cyB0aGF0IHByaXZhdGUgbWVtYmVycyBjYW4gYmUg
YWNjZXNzZWQgZnJvbSBhIFRFU1QgZGVjbGFyZWQgYXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcmVwZWF0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X3JlcGVhdF90ZXN0LmNjCmluZGV4IGRmNjg2OGI4MzAyOTYxMjVh
MjdjN2YzN2Y5MzE2Y2VkNGVkODJkNTQuLjQ4MTAxMmFkYzI0MDU0ZjRhODFmM2U3NDllOGQyNTc0
YzM2NGQwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
cmVwZWF0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9y
ZXBlYXRfdGVzdC5jYwpAQCAtMzMsNyArMzMsNyBAQAogCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAj
aW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgogCiAvLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQg
aXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCiAvLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29t
ZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKQEAgLTY5LDkgKzY5LDkgQEAgbmFtZXNw
YWNlIHsKICAgICAgICAgICAgICAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBhY3R1YWxfdmFsIDw8
ICJcbiJcCiAgICAgICAgICAgICAgICAgICA8PCAiRXhwZWN0ZWQ6ICIgI2V4cGVjdGVkICJcbiJc
CiAgICAgICAgICAgICAgICAgICA8PCAiV2hpY2ggaXM6ICIgPDwgZXhwZWN0ZWRfdmFsIDw8ICJc
biI7XAotICAgICAgYWJvcnQoKTtcCisgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6
QWJvcnQoKTtcCiAgICAgfVwKLSAgfSB3aGlsZSg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNG
YWxzZSgpKQorICB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgpKQog
CiAKIC8vIFVzZWQgZm9yIHZlcmlmeWluZyB0aGF0IGdsb2JhbCBlbnZpcm9ubWVudCBzZXQtdXAg
YW5kIHRlYXItZG93biBhcmUKQEAgLTExMywxMCArMTEzLDEwIEBAIFRFU1QoQmFyRGVhdGhUZXN0
LCBUaHJlYWRTYWZlQW5kRmFzdCkgewogICBnX2RlYXRoX3Rlc3RfY291bnQrKzsKIAogICBHVEVT
VF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOwotICBFWFBFQ1RfREVBVEhf
SUZfU1VQUE9SVEVEKGFib3J0KCksICIiKTsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg6
OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6QWJvcnQoKSwgIiIpOwogCiAgIEdURVNUX0ZMQUco
ZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQo
YWJvcnQoKSwgIiIpOworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDo6dGVzdGluZzo6aW50
ZXJuYWw6OnBvc2l4OjpBYm9ydCgpLCAiIik7CiB9CiAKICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVT
VApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxl
X3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rl
c3RfLmNjCmluZGV4IDUzZWNmNzc3MGExNDExNzY2OGI0YWRlYTZmYjZmNTAyNjY3MTdkZTcuLjZm
YjQ0MWJkNGQ0NjYyMWY2OTg3Y2FkNGI3NmFlNTk0OTlkN2ZmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0Xy5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdF8uY2MKQEAgLTMxLDcg
KzMxLDcgQEAKIAogLy8gVmVyaWZpZXMgdGhhdCB0ZXN0IHNodWZmbGluZyB3b3Jrcy4KIAotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogbmFtZXNw
YWNlIHsKIApAQCAtNDIsNyArNDIsNiBAQCB1c2luZyA6OnRlc3Rpbmc6OlRlc3Q7CiB1c2luZyA6
OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyczsKIHVzaW5nIDo6dGVzdGluZzo6VGVzdEluZm87
CiB1c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OwotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
U3RyaW5nOwogdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVkX3B0cjsKIAogLy8gVGhl
IHRlc3QgbWV0aG9kcyBhcmUgZW1wdHksIGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgdGhpcyBwcm9n
cmFtIGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Nv
bGVfaGVhZGVyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Nv
bGVfaGVhZGVyX3Rlc3QuY2MKaW5kZXggZGU5MWU4MDBmNWExMzgyOTk5ZmMyMDFmNWNmM2NlMDQ2
NGNhYTFjZS4uY2NkMDkxYTI4MWQzYzMwMmVjNmU3MzYwMjJmZDYxODgxNmMxMTlkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zb2xlX2hlYWRlcl90ZXN0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJf
dGVzdC5jYwpAQCAtMzIsNyArMzIsNyBAQAogLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgaXQn
cyBwb3NzaWJsZSB0byB1c2UgR29vZ2xlIFRlc3QgYnkgaW5jbHVkaW5nCiAvLyB0aGUgZ3Rlc3Qu
aCBoZWFkZXIgZmlsZSBhbG9uZS4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogbmFtZXNwYWNlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zdHJlc3NfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc3RyZXNzX3Rlc3QuY2MKaW5kZXggZjVhZjc4Y2M2ZDNmMzk1
YTAwZDRkMWNlODU5OWZhNWYxZGZhNzYyNi4uZTdkYWE0MzBkZmJlNTBmMTA0YTNhNDNiN2YwYjRh
NmJlMjE3MzI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9zdHJlc3NfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X3N0cmVzc190ZXN0LmNjCkBAIC0zMiw3ICszMiw3IEBACiAvLyBUZXN0cyB0aGF0IFNDT1BFRF9U
UkFDRSgpIGFuZCB2YXJpb3VzIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgY2FuIGJlCiAvLyB1c2Vk
IGluIGEgbGFyZ2UgbnVtYmVyIG9mIHRocmVhZHMgY29uY3VycmVudGx5LgogCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAjaW5jbHVkZSA8aW9z
dHJlYW0+CiAjaW5jbHVkZSA8dmVjdG9yPgpAQCAtNTAsNyArNTAsNiBAQCBuYW1lc3BhY2UgdGVz
dGluZyB7CiBuYW1lc3BhY2UgewogCiB1c2luZyBpbnRlcm5hbDo6Tm90aWZpY2F0aW9uOwotdXNp
bmcgaW50ZXJuYWw6OlN0cmluZzsKIHVzaW5nIGludGVybmFsOjpUZXN0UHJvcGVydHlLZXlJczsK
IHVzaW5nIGludGVybmFsOjpUaHJlYWRXaXRoUGFyYW07CiB1c2luZyBpbnRlcm5hbDo6c2NvcGVk
X3B0cjsKQEAgLTYyLDEzICs2MSwxMyBAQCB1c2luZyBpbnRlcm5hbDo6c2NvcGVkX3B0cjsKIC8v
IEhvdyBtYW55IHRocmVhZHMgdG8gY3JlYXRlPwogY29uc3QgaW50IGtUaHJlYWRDb3VudCA9IDUw
OwogCi1TdHJpbmcgSWRUb0tleShpbnQgaWQsIGNvbnN0IGNoYXIqIHN1ZmZpeCkgeworc3RkOjpz
dHJpbmcgSWRUb0tleShpbnQgaWQsIGNvbnN0IGNoYXIqIHN1ZmZpeCkgewogICBNZXNzYWdlIGtl
eTsKICAga2V5IDw8ICJrZXlfIiA8PCBpZCA8PCAiXyIgPDwgc3VmZml4OwogICByZXR1cm4ga2V5
LkdldFN0cmluZygpOwogfQogCi1TdHJpbmcgSWRUb1N0cmluZyhpbnQgaWQpIHsKK3N0ZDo6c3Ry
aW5nIElkVG9TdHJpbmcoaW50IGlkKSB7CiAgIE1lc3NhZ2UgaWRfbWVzc2FnZTsKICAgaWRfbWVz
c2FnZSA8PCBpZDsKICAgcmV0dXJuIGlkX21lc3NhZ2UuR2V0U3RyaW5nKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RfdXRpbHMucHkgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RfdXRpbHMucHkKaW5kZXggZTBmNTk3
M2U3ZWE2ZjgxZTY2NmMzMTIxYzNjOGZhODQzZjQzNGY2MS4uNGFjZDM2Yzk3NWMwYTFjMjhlNWU1
MGNkNzkzYTEzMTkwNzc0NTBjNCAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfdGVzdF91dGlscy5weQpAQCAtNTYsNiArNTYsMjEgQEAKIElTX1dJTkRPV1MgPSBv
cy5uYW1lID09ICdudCcKIElTX0NZR1dJTiA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBhbmQgJ0NZR1dJ
TicgaW4gb3MudW5hbWUoKVswXQogCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3Igc3Bl
Y2lmeWluZyB0aGUgcGF0aCB0byB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZS4KK1BSRU1BVFVSRV9F
WElUX0ZJTEVfRU5WX1ZBUiA9ICdURVNUX1BSRU1BVFVSRV9FWElUX0ZJTEUnCisKK2Vudmlyb24g
PSBvcy5lbnZpcm9uLmNvcHkoKQorCisKK2RlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgor
ICAiIiJTZXRzL3Vuc2V0cyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIGdpdmVuIHZhbHVl
LiIiIgorCisgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAgIGVudmlyb25bZW52X3Zhcl0gPSB2
YWx1ZQorICBlbGlmIGVudl92YXIgaW4gZW52aXJvbjoKKyAgICBkZWwgZW52aXJvbltlbnZfdmFy
XQorCisKICMgSGVyZSB3ZSBleHBvc2UgYSBjbGFzcyBmcm9tIGEgcGFydGljdWxhciBtb2R1bGUs
IGRlcGVuZGluZyBvbiB0aGUKICMgZW52aXJvbm1lbnQuIFRoZSBjb21tZW50IHN1cHByZXNzZXMg
dGhlICdJbnZhbGlkIHZhcmlhYmxlIG5hbWUnIGxpbnQKICMgY29tcGxhaW50LgpAQCAtNjMsOCAr
NzgsOCBAQAogCiAjIEluaXRpYWxseSBtYXBzIGEgZmxhZyB0byBpdHMgZGVmYXVsdCB2YWx1ZS4g
QWZ0ZXIKICMgX1BhcnNlQW5kU3RyaXBHVGVzdEZsYWdzKCkgaXMgY2FsbGVkLCBtYXBzIGEgZmxh
ZyB0byBpdHMgYWN0dWFsIHZhbHVlLgotX2ZsYWdfbWFwID0geydndGVzdF9zb3VyY2VfZGlyJzog
b3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2WzBdKSwKLSAgICAgICAgICAgICAnZ3Rlc3RfYnVpbGRf
ZGlyJzogb3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2WzBdKX0KK19mbGFnX21hcCA9IHsnc291cmNl
X2Rpcic6IG9zLnBhdGguZGlybmFtZShzeXMuYXJndlswXSksCisgICAgICAgICAgICAgJ2J1aWxk
X2Rpcic6IG9zLnBhdGguZGlybmFtZShzeXMuYXJndlswXSl9CiBfZ3Rlc3RfZmxhZ3NfYXJlX3Bh
cnNlZCA9IEZhbHNlCiAKIApAQCAtMTExLDEzICsxMjYsMTMgQEAgZGVmIEdldEZsYWcoZmxhZyk6
CiBkZWYgR2V0U291cmNlRGlyKCk6CiAgICIiIlJldHVybnMgdGhlIGFic29sdXRlIHBhdGggb2Yg
dGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgLnB5IGZpbGVzIGFyZS4iIiIKIAotICByZXR1cm4gb3Mu
cGF0aC5hYnNwYXRoKEdldEZsYWcoJ2d0ZXN0X3NvdXJjZV9kaXInKSkKKyAgcmV0dXJuIG9zLnBh
dGguYWJzcGF0aChHZXRGbGFnKCdzb3VyY2VfZGlyJykpCiAKIAogZGVmIEdldEJ1aWxkRGlyKCk6
CiAgICIiIlJldHVybnMgdGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGRpcmVjdG9yeSB3aGVyZSB0
aGUgdGVzdCBiaW5hcmllcyBhcmUuIiIiCiAKLSAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChHZXRG
bGFnKCdndGVzdF9idWlsZF9kaXInKSkKKyAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChHZXRGbGFn
KCdidWlsZF9kaXInKSkKIAogCiBfdGVtcF9kaXIgPSBOb25lCkBAIC0xNjAsMTQgKzE3NSwxMCBA
QCBkZWYgR2V0VGVzdEV4ZWN1dGFibGVQYXRoKGV4ZWN1dGFibGVfbmFtZSwgYnVpbGRfZGlyPU5v
bmUpOgogCiAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwYXRoKToKICAgICBtZXNzYWdlID0gKAot
ICAgICAgICAnVW5hYmxlIHRvIGZpbmQgdGhlIHRlc3QgYmluYXJ5LiBQbGVhc2UgbWFrZSBzdXJl
IHRvIHByb3ZpZGUgcGF0aFxuJwotICAgICAgICAndG8gdGhlIGJpbmFyeSB2aWEgdGhlIC0tZ3Rl
c3RfYnVpbGRfZGlyIGZsYWcgb3IgdGhlIEdURVNUX0JVSUxEX0RJUlxuJwotICAgICAgICAnZW52
aXJvbm1lbnQgdmFyaWFibGUuIEZvciBjb252ZW5pZW50IHVzZSwgaW52b2tlIHRoaXMgc2NyaXB0
IHZpYVxuJwotICAgICAgICAnbWtfdGVzdC5weS5cbicKLSAgICAgICAgIyBUT0RPKHZsYWRsQGdv
b2dsZS5jb20pOiBjaGFuZ2UgbWtfdGVzdC5weSB0byB0ZXN0LnB5IGFmdGVyIHJlbmFtaW5nCi0g
ICAgICAgICMgdGhlIGZpbGUuCi0gICAgICAgICdQbGVhc2UgcnVuIG1rX3Rlc3QucHkgLWggZm9y
IGhlbHAuJykKLSAgICBwcmludCA+PiBzeXMuc3RkZXJyLCBtZXNzYWdlCisgICAgICAgICdVbmFi
bGUgdG8gZmluZCB0aGUgdGVzdCBiaW5hcnkgIiVzIi4gUGxlYXNlIG1ha2Ugc3VyZSB0byBwcm92
aWRlXG4nCisgICAgICAgICdhIHBhdGggdG8gdGhlIGJpbmFyeSB2aWEgdGhlIC0tYnVpbGRfZGly
IGZsYWcgb3IgdGhlIEJVSUxEX0RJUlxuJworICAgICAgICAnZW52aXJvbm1lbnQgdmFyaWFibGUu
JyAlIHBhdGgpCisgICAgc3lzLnN0ZG91dC53cml0ZShtZXNzYWdlKQogICAgIHN5cy5leGl0KDEp
CiAKICAgcmV0dXJuIHBhdGgKQEAgLTI0NSw3ICsyNTYsNyBAQCBkZWYgX1JlcGxhY2VFbnZEaWN0
KGRlc3QsIHNyYyk6CiAgICAgICAgICMgQ2hhbmdlcyBtYWRlIGJ5IG9zLmVudmlyb24uY2xlYXIg
YXJlIG5vdCBpbmhlcml0YWJsZSBieSBjaGlsZAogICAgICAgICAjIHByb2Nlc3NlcyB1bnRpbCBQ
eXRob24gMi42LiBUbyBwcm9kdWNlIGluaGVyaXRhYmxlIGNoYW5nZXMgd2UgaGF2ZQogICAgICAg
ICAjIHRvIGRlbGV0ZSBlbnZpcm9ubWVudCBpdGVtcyB3aXRoIHRoZSBkZWwgc3RhdGVtZW50Lgot
ICAgICAgICBmb3Iga2V5IGluIGRlc3Q6CisgICAgICAgIGZvciBrZXkgaW4gZGVzdC5rZXlzKCk6
CiAgICAgICAgICAgZGVsIGRlc3Rba2V5XQogICAgICAgICBkZXN0LnVwZGF0ZShzcmMpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFp
bHVyZV9leF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJv
d19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MKaW5kZXggOGJmOWRjOTA1YjVmZjgzYWMwMjEwNDEzNDM1
ODBmOTA5NzU0ODNjZS4uOGQ0NmM3NmYxNjEyMWZkMWY0N2M5NzQxMGYzZTA4ZWY0YTExNmVkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJvd19vbl9m
YWlsdXJlX2V4X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF90aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MKQEAgLTMxLDcgKzMxLDcgQEAKIAogLy8gVGVz
dHMgR29vZ2xlIFRlc3QncyB0aHJvdy1vbi1mYWlsdXJlIG1vZGUgd2l0aCBleGNlcHRpb25zIGVu
YWJsZWQuCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdGRpby5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rl
c3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1
cmVfdGVzdC5weQppbmRleCA1Njc4ZmZlYWY2ZmE2MWVmN2RjYjQ1YjhmMzRhMDM0MTE5MWFiZjZl
Li4zZTc3NDBjYWJiOGFjZmQyMTJjMzdlYjgxNjkzNzIyMjYxNzQzYTcxIDEwMDc1NQotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdC5w
eQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1
cmVfdGVzdC5weQpAQCAtNzAsNyArNzAsNyBAQCBkZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVl
KToKIGRlZiBSdW4oY29tbWFuZCk6CiAgICIiIlJ1bnMgYSBjb21tYW5kOyByZXR1cm5zIFRydWUv
RmFsc2UgaWYgaXRzIGV4aXQgY29kZSBpcy9pc24ndCAwLiIiIgogCi0gIHByaW50ICdSdW5uaW5n
ICIlcyIuIC4gLicgJSAnICcuam9pbihjb21tYW5kKQorICBwcmludCgnUnVubmluZyAiJXMiLiAu
IC4nICUgJyAnLmpvaW4oY29tbWFuZCkpCiAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nl
c3MoY29tbWFuZCkKICAgcmV0dXJuIHAuZXhpdGVkIGFuZCBwLmV4aXRfY29kZSA9PSAwCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFp
bHVyZV90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3df
b25fZmFpbHVyZV90ZXN0Xy5jYwppbmRleCA4OGZiZDVhNzZkYzkyMDZmNGEwMjk1MTRiODc2ZGMw
MTQxZTM2YmZhLi4yYjg4ZmUzZDliM2I4YjVmMGUzNjRkYjBkZDY5ZmY3ZGIxOGFhNjNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1
cmVfdGVzdF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJv
d19vbl9mYWlsdXJlX3Rlc3RfLmNjCkBAIC0zNSwxNCArMzUsMzAgQEAKIC8vIGludm9rZWQgYnkg
Z3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0LnB5LCBhbmQgaXMgZXhwZWN0ZWQgdG8gZXhpdAog
Ly8gd2l0aCBub24temVybyBpbiB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlIG9yIDAgb3RoZXJ3
aXNlLgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgorCisjaW5jbHVkZSA8c3RkaW8uaD4gICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGZmbHVz
aCwgZnByaW50ZiwgTlVMTCwgZXRjLgorI2luY2x1ZGUgPHN0ZGxpYi5oPiAgICAgICAgICAgICAg
ICAgICAgIC8vIGZvciBleGl0CisjaW5jbHVkZSA8ZXhjZXB0aW9uPiAgICAgICAgICAgICAgICAg
ICAgLy8gZm9yIHNldF90ZXJtaW5hdGUKKworLy8gVGhpcyB0ZXJtaW5hdGUgaGFuZGxlciBhYm9y
dHMgdGhlIHByb2dyYW0gdXNpbmcgZXhpdCgpIHJhdGhlciB0aGFuIGFib3J0KCkuCisvLyBUaGlz
IGF2b2lkcyBzaG93aW5nIHBvcC11cHMgb24gV2luZG93cyBzeXN0ZW1zIGFuZCBjb3JlIGR1bXBz
IG9uIFVuaXgtbGlrZQorLy8gb25lcy4KK3ZvaWQgVGVybWluYXRlSGFuZGxlcigpIHsKKyAgZnBy
aW50ZihzdGRlcnIsICIlc1xuIiwgIlVuaGFuZGxlZCBDKysgZXhjZXB0aW9uIHRlcm1pbmF0aW5n
IHRoZSBwcm9ncmFtLiIpOworICBmZmx1c2goTlVMTCk7CisgIGV4aXQoMSk7Cit9CiAKIGludCBt
YWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworI2lmIEdURVNUX0hBU19FWENFUFRJT05TCisg
IHN0ZDo6c2V0X3Rlcm1pbmF0ZSgmVGVybWluYXRlSGFuZGxlcik7CisjZW5kaWYKICAgdGVzdGlu
Zzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwogCiAgIC8vIFdlIHdhbnQgdG8gZW5zdXJl
IHRoYXQgcGVvcGxlIGNhbiB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBpbgogICAvLyBvdGhl
ciB0ZXN0aW5nIGZyYW1ld29ya3MsIGFzIGxvbmcgYXMgdGhleSBpbml0aWFsaXplIEdvb2dsZSBU
ZXN0Ci0gIC8vIHByb3Blcmx5IGFuZCBzZXQgdGhlIHRocm93bi1vbi1mYWlsdXJlIG1vZGUuICBU
aGVyZWZvcmUsIHdlIGRvbid0CisgIC8vIHByb3Blcmx5IGFuZCBzZXQgdGhlIHRocm93LW9uLWZh
aWx1cmUgbW9kZS4gIFRoZXJlZm9yZSwgd2UgZG9uJ3QKICAgLy8gdXNlIEdvb2dsZSBUZXN0J3Mg
Y29uc3RydWN0cyBmb3IgZGVmaW5pbmcgYW5kIHJ1bm5pbmcgdGVzdHMKICAgLy8gKGUuZy4gVEVT
VCBhbmQgUlVOX0FMTF9URVNUUykgaGVyZS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5weQppbmRleCA2YWU1N2Vl
ZWRhZmNmMDc1MDRkZDhkNWQ3YThiNWE3ZjgzODEzZjI3Li40MzU4MzcwMDk3ZmI4NGM1M2FhY2Zm
MzEzNzBhNDVhMjRmODdmMjY5IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5weQpAQCAtNDYsOCArNDYsOCBAQCBk
ZWYgQXNzZXJ0KGNvbmRpdGlvbik6CiAKIGRlZiBBc3NlcnRFcShleHBlY3RlZCwgYWN0dWFsKToK
ICAgaWYgZXhwZWN0ZWQgIT0gYWN0dWFsOgotICAgIHByaW50ICdFeHBlY3RlZDogJXMnICUgKGV4
cGVjdGVkLCkKLSAgICBwcmludCAnICBBY3R1YWw6ICVzJyAlIChhY3R1YWwsKQorICAgIHByaW50
KCdFeHBlY3RlZDogJXMnICUgKGV4cGVjdGVkLCkpCisgICAgcHJpbnQoJyAgQWN0dWFsOiAlcycg
JSAoYWN0dWFsLCkpCiAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKIAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdF8uY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdF8u
Y2MKaW5kZXggZThiMmFhODFkZDU0ZDljNjQzYTU4ZGU1ZTQ0ZDZjY2I1MjBhNzc2NS4uNDQzMTY5
ODdmYmI1ZDZkYzA4OTA5MjU1YTM3MjhjZTM1YTJlYzdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3RfLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0Xy5jYwpA
QCAtMjksNyArMjksNyBAQAogLy8KIC8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25n
IFdhbikKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKIAogVEVTVChEdW1teVRlc3QsIER1bW15KSB7CiAgIC8vIFRoaXMgdGVzdCBkb2Vzbid0IHZl
cmlmeSBhbnl0aGluZy4gIFdlIGp1c3QgbmVlZCBpdCB0byBjcmVhdGUgYQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91bml0dGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MKaW5kZXggYTE0ZjA2NWEyY2Nk
ODYzNzlhMDE0OWEzM2ZjNTY0NWMwZWM4YjE4MS4uODhlOTQxMzRiOTRjYzlhNTExYTJmYzVkOWZm
MjQ2NzBlYTlhNzkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X3VuaXR0ZXN0LmNjCkBAIC0zMiw4ICszMiw3IEBACiAvLyBUZXN0cyBmb3IgR29vZ2xlIFRlc3Qg
aXRzZWxmLiAgVGhpcyB2ZXJpZmllcyB0aGF0IHRoZSBiYXNpYyBjb25zdHJ1Y3RzIG9mCiAvLyBH
b29nbGUgVGVzdCB3b3JrLgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDx2
ZWN0b3I+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogLy8gVmVyaWZpZXMgdGhhdCB0aGUg
Y29tbWFuZCBsaW5lIGZsYWcgdmFyaWFibGVzIGNhbiBiZSBhY2Nlc3NlZAogLy8gaW4gY29kZSBv
bmNlIDxndGVzdC9ndGVzdC5oPiBoYXMgYmVlbiAjaW5jbHVkZWQuCkBAIC01MiwxMSArNTEsMjEg
QEAgVEVTVChDb21tYW5kTGluZUZsYWdzVGVzdCwgQ2FuQmVBY2Nlc3NlZEluQ29kZU9uY2VHVGVz
dEhJc0luY2x1ZGVkKSB7CiAgICAgICB8fCB0ZXN0aW5nOjpHVEVTVF9GTEFHKHNob3dfaW50ZXJu
YWxfc3RhY2tfZnJhbWVzKQogICAgICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyhzaHVmZmxlKQog
ICAgICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkgPiAwCisgICAg
ICB8fCB0ZXN0aW5nOjpHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pICE9ICJ1bmtub3duIgog
ICAgICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKICAgRVhQRUNU
X1RSVUUoZHVtbXkgfHwgIWR1bW15KTsgIC8vIFN1cHByZXNzZXMgd2FybmluZyB0aGF0IGR1bW15
IGlzIHVudXNlZC4KIH0KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgorI2luY2x1ZGUg
PGxpbWl0cy5oPiAgLy8gRm9yIElOVF9NQVguCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVk
ZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dGltZS5oPgorCisjaW5jbHVkZSA8bWFwPgorI2luY2x1
ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDxvc3RyZWFtPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qt
c3BpLmgiCiAKIC8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0
IG9mIEdvb2dsZSBUZXN0J3MKIC8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9y
ZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwpAQCAtNjcsMTUgKzc2LDg1IEBAIFRFU1QoQ29tbWFu
ZExpbmVGbGFnc1Rlc3QsIENhbkJlQWNjZXNzZWRJbkNvZGVPbmNlR1Rlc3RISXNJbmNsdWRlZCkg
ewogI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKICN1bmRlZiBHVEVTVF9JTVBM
RU1FTlRBVElPTl8KIAotI2luY2x1ZGUgPGxpbWl0cy5oPiAgLy8gRm9yIElOVF9NQVguCi0jaW5j
bHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8dGltZS5oPgotCi0jaW5jbHVkZSA8bWFwPgotCiBu
YW1lc3BhY2UgdGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCisjaWYgR1RFU1RfQ0FO
X1NUUkVBTV9SRVNVTFRTXworCitjbGFzcyBTdHJlYW1pbmdMaXN0ZW5lclRlc3QgOiBwdWJsaWMg
VGVzdCB7CisgcHVibGljOgorICBjbGFzcyBGYWtlU29ja2V0V3JpdGVyIDogcHVibGljIFN0cmVh
bWluZ0xpc3RlbmVyOjpBYnN0cmFjdFNvY2tldFdyaXRlciB7CisgICBwdWJsaWM6CisgICAgLy8g
U2VuZHMgYSBzdHJpbmcgdG8gdGhlIHNvY2tldC4KKyAgICB2aXJ0dWFsIHZvaWQgU2VuZChjb25z
dCBzdHJpbmcmIG1lc3NhZ2UpIHsgb3V0cHV0XyArPSBtZXNzYWdlOyB9CisKKyAgICBzdHJpbmcg
b3V0cHV0XzsKKyAgfTsKKworICBTdHJlYW1pbmdMaXN0ZW5lclRlc3QoKQorICAgICAgOiBmYWtl
X3NvY2tfd3JpdGVyXyhuZXcgRmFrZVNvY2tldFdyaXRlciksCisgICAgICAgIHN0cmVhbWVyXyhm
YWtlX3NvY2tfd3JpdGVyXyksCisgICAgICAgIHRlc3RfaW5mb19vYmpfKCJGb29UZXN0IiwgIkJh
ciIsIE5VTEwsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbihfX0ZJ
TEVfXywgX19MSU5FX18pLCAwLCBOVUxMKSB7fQorCisgcHJvdGVjdGVkOgorICBzdHJpbmcqIG91
dHB1dCgpIHsgcmV0dXJuICYoZmFrZV9zb2NrX3dyaXRlcl8tPm91dHB1dF8pOyB9CisKKyAgRmFr
ZVNvY2tldFdyaXRlciogY29uc3QgZmFrZV9zb2NrX3dyaXRlcl87CisgIFN0cmVhbWluZ0xpc3Rl
bmVyIHN0cmVhbWVyXzsKKyAgVW5pdFRlc3QgdW5pdF90ZXN0XzsKKyAgVGVzdEluZm8gdGVzdF9p
bmZvX29ial87ICAvLyBUaGUgbmFtZSB0ZXN0X2luZm9fIHdhcyB0YWtlbiBieSB0ZXN0aW5nOjpU
ZXN0LgorfTsKKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25UZXN0UHJvZ3JhbUVu
ZCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdFByb2dyYW1FbmQodW5p
dF90ZXN0Xyk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdFByb2dyYW1FbmQmcGFzc2VkPTFcbiIs
ICpvdXRwdXQoKSk7Cit9CisKK1RFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRlc3QsIE9uVGVzdEl0
ZXJhdGlvbkVuZCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdEl0ZXJh
dGlvbkVuZCh1bml0X3Rlc3RfLCA0Mik7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdEl0ZXJhdGlv
bkVuZCZwYXNzZWQ9MSZlbGFwc2VkX3RpbWU9MG1zXG4iLCAqb3V0cHV0KCkpOworfQorCitURVNU
X0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RDYXNlU3RhcnQpIHsKKyAgKm91dHB1dCgp
ID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RDYXNlU3RhcnQoVGVzdENhc2UoIkZvb1Rlc3QiLCAi
QmFyIiwgTlVMTCwgTlVMTCkpOworICBFWFBFQ1RfRVEoImV2ZW50PVRlc3RDYXNlU3RhcnQmbmFt
ZT1Gb29UZXN0XG4iLCAqb3V0cHV0KCkpOworfQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJU
ZXN0LCBPblRlc3RDYXNlRW5kKSB7CisgICpvdXRwdXQoKSA9ICIiOworICBzdHJlYW1lcl8uT25U
ZXN0Q2FzZUVuZChUZXN0Q2FzZSgiRm9vVGVzdCIsICJCYXIiLCBOVUxMLCBOVUxMKSk7CisgIEVY
UEVDVF9FUSgiZXZlbnQ9VGVzdENhc2VFbmQmcGFzc2VkPTEmZWxhcHNlZF90aW1lPTBtc1xuIiwg
Km91dHB1dCgpKTsKK30KKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25UZXN0U3Rh
cnQpIHsKKyAgKm91dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RTdGFydCh0ZXN0X2lu
Zm9fb2JqXyk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdFN0YXJ0Jm5hbWU9QmFyXG4iLCAqb3V0
cHV0KCkpOworfQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RFbmQpIHsK
KyAgKm91dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RFbmQodGVzdF9pbmZvX29ial8p
OworICBFWFBFQ1RfRVEoImV2ZW50PVRlc3RFbmQmcGFzc2VkPTEmZWxhcHNlZF90aW1lPTBtc1xu
IiwgKm91dHB1dCgpKTsKK30KKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25UZXN0
UGFydFJlc3VsdCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdFBhcnRS
ZXN1bHQoVGVzdFBhcnRSZXN1bHQoCisgICAgICBUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVy
ZSwgImZvby5jYyIsIDQyLCAiZmFpbGVkPVxuJiUiKSk7CisKKyAgLy8gTWV0YSBjaGFyYWN0ZXJz
IGluIHRoZSBmYWlsdXJlIG1lc3NhZ2Ugc2hvdWxkIGJlIHByb3Blcmx5IGVzY2FwZWQuCisgIEVY
UEVDVF9FUSgKKyAgICAgICJldmVudD1UZXN0UGFydFJlc3VsdCZmaWxlPWZvby5jYyZsaW5lPTQy
Jm1lc3NhZ2U9ZmFpbGVkJTNEJTBBJTI2JTI1XG4iLAorICAgICAgKm91dHB1dCgpKTsKK30KKwor
I2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKIC8vIFByb3ZpZGVzIGFjY2Vz
cyB0byBvdGhlcndpc2UgcHJpdmF0ZSBwYXJ0cyBvZiB0aGUgVGVzdEV2ZW50TGlzdGVuZXJzIGNs
YXNzCiAvLyB0aGF0IGFyZSBuZWVkZWQgdG8gdGVzdCBpdC4KIGNsYXNzIFRlc3RFdmVudExpc3Rl
bmVyc0FjY2Vzc29yIHsKQEAgLTEwMiw2ICsxODEsMTggQEAgY2xhc3MgVGVzdEV2ZW50TGlzdGVu
ZXJzQWNjZXNzb3IgewogICB9CiB9OwogCitjbGFzcyBVbml0VGVzdFJlY29yZFByb3BlcnR5VGVz
dEhlbHBlciA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIFVuaXRUZXN0UmVjb3JkUHJv
cGVydHlUZXN0SGVscGVyKCkge30KKworICAvLyBGb3J3YXJkcyB0byBVbml0VGVzdDo6UmVjb3Jk
UHJvcGVydHkoKSB0byBieXBhc3MgYWNjZXNzIGNvbnRyb2xzLgorICB2b2lkIFVuaXRUZXN0UmVj
b3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpIHsK
KyAgICB1bml0X3Rlc3RfLlJlY29yZFByb3BlcnR5KGtleSwgdmFsdWUpOworICB9CisKKyAgVW5p
dFRlc3QgdW5pdF90ZXN0XzsKK307CisKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8g
bmFtZXNwYWNlIHRlc3RpbmcKIApAQCAtMTEwLDYgKzIwMSw3IEBAIHVzaW5nIHRlc3Rpbmc6OkFz
c2VydGlvblJlc3VsdDsKIHVzaW5nIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3M7CiB1c2luZyB0
ZXN0aW5nOjpEb3VibGVMRTsKIHVzaW5nIHRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXI7
Cit1c2luZyB0ZXN0aW5nOjpFbnZpcm9ubWVudDsKIHVzaW5nIHRlc3Rpbmc6OkZsb2F0TEU7CiB1
c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzKTsKIHVzaW5n
IHRlc3Rpbmc6OkdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSk7CkBAIC0xMjUsNiArMjE3LDcg
QEAgdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhyZXBlYXQpOwogdXNpbmcgdGVzdGluZzo6R1RF
U1RfRkxBRyhzaG93X2ludGVybmFsX3N0YWNrX2ZyYW1lcyk7CiB1c2luZyB0ZXN0aW5nOjpHVEVT
VF9GTEFHKHNodWZmbGUpOwogdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhzdGFja190cmFjZV9k
ZXB0aCk7Cit1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pOwogdXNp
bmcgdGVzdGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKIHVzaW5nIHRlc3Rpbmc6
OklzTm90U3Vic3RyaW5nOwogdXNpbmcgdGVzdGluZzo6SXNTdWJzdHJpbmc7CkBAIC0xMzIsNTMg
KzIyNSw3NSBAQCB1c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwogdXNpbmcgdGVzdGluZzo6U2NvcGVk
RmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI7CiB1c2luZyB0ZXN0aW5nOjpTdGF0aWNBc3NlcnRU
eXBlRXE7CiB1c2luZyB0ZXN0aW5nOjpUZXN0OwotdXNpbmcgdGVzdGluZzo6VGVzdEV2ZW50TGlz
dGVuZXJzOwogdXNpbmcgdGVzdGluZzo6VGVzdENhc2U7Cit1c2luZyB0ZXN0aW5nOjpUZXN0RXZl
bnRMaXN0ZW5lcnM7Cit1c2luZyB0ZXN0aW5nOjpUZXN0SW5mbzsKIHVzaW5nIHRlc3Rpbmc6OlRl
c3RQYXJ0UmVzdWx0OwogdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHRBcnJheTsKIHVzaW5n
IHRlc3Rpbmc6OlRlc3RQcm9wZXJ0eTsKIHVzaW5nIHRlc3Rpbmc6OlRlc3RSZXN1bHQ7Cit1c2lu
ZyB0ZXN0aW5nOjpUaW1lSW5NaWxsaXM7CiB1c2luZyB0ZXN0aW5nOjpVbml0VGVzdDsKLXVzaW5n
IHRlc3Rpbmc6OmtNYXhTdGFja1RyYWNlRGVwdGg7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6
QWRkUmVmZXJlbmNlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlOwogdXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWU7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6QXBwZW5kVXNlck1lc3NhZ2U7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QXJyYXlBd2Fy
ZUZpbmQ7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QXJyYXlFcTsKIHVzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpDb2RlUG9pbnRUb1V0Zjg7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q29t
cGlsZUFzc2VydFR5cGVzRXF1YWw7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q29weUFycmF5
OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkNvdW50SWY7CiB1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6RXFGYWlsdXJlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZsb2F0aW5nUG9pbnQ7
Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzOwog
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZvckVhY2g7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6Rm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDE7Cit1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6Rm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzOwogdXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OkdUZXN0RmxhZ1NhdmVyOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldEN1cnJlbnRP
c1N0YWNrVHJhY2VFeGNlcHRUb3A7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0RWxlbWVu
dE9yOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldE5leHRSYW5kb21TZWVkOwogdXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OkdldFJhbmRvbVNlZWRGcm9tRmxhZzsKIHVzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpHZXRUZXN0VHlwZUlkOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldFRp
bWVJbk1pbGxpczsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRUeXBlSWQ7CiB1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsOwordXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJbnQz
MjsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJbnQzMkZyb21FbnZPckRpZTsKK3VzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpJc0FQcm90b2NvbE1lc3NhZ2U7Cit1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6SXNDb250YWluZXI7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SXNDb250YWluZXJU
ZXN0OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OklzTm90Q29udGFpbmVyOwordXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6Ok5hdGl2ZUFycmF5OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlBh
cnNlSW50MzJGbGFnOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlJlbGF0aW9uVG9Tb3VyY2VD
b3B5OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2U7
Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVtb3ZlQ29uc3Q7Cit1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6UmVtb3ZlUmVmZXJlbmNlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlNob3Vs
ZFJ1blRlc3RPblNoYXJkOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlNob3VsZFNoYXJkOwog
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlNob3VsZFVzZUNvbG9yOwogdXNpbmcgdGVzdGluZzo6
aW50ZXJuYWw6OlNodWZmbGU7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2h1ZmZsZVJhbmdl
OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlNraXBQcmVmaXg7CiB1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6U3RyZWFtYWJsZVRvU3RyaW5nOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlN0
cmluZzsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3Nv
cjsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpUZXN0UmVzdWx0QWNjZXNzb3I7CiB1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6VUludDMyOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OldpZGVT
dHJpbmdUb1V0Zjg7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6ZWRpdF9kaXN0YW5jZTo6Q2Fs
Y3VsYXRlT3B0aW1hbEVkaXRzOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmVkaXRfZGlzdGFu
Y2U6OkNyZWF0ZVVuaWZpZWREaWZmOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmVkaXRfZGlz
dGFuY2U6OkVkaXRUeXBlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmtNYXhSYW5kb21TZWVk
OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmtUZXN0VHlwZUlkSW5Hb29nbGVUZXN0OwotdXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI7Cit1c2luZyB0ZXN0aW5nOjprTWF4U3Rh
Y2tUcmFjZURlcHRoOwogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNpZiBH
VEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q2Fw
dHVyZVN0ZG91dDsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRDYXB0dXJlZFN0ZG91dDsK
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNlbmRpZgogCiAjaWYg
R1RFU1RfSVNfVEhSRUFEU0FGRQogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlRocmVhZFdpdGhQ
YXJhbTsKQEAgLTI4OSwxMiArNDA0LDk5IEBAIFRFU1QoRm9ybWF0VGltZUluTWlsbGlzQXNTZWNv
bmRzVGVzdCwgRm9ybWF0c05lZ2F0aXZlTnVtYmVyKSB7CiAgIEVYUEVDVF9FUSgiLTMiLCBGb3Jt
YXRUaW1lSW5NaWxsaXNBc1NlY29uZHMoLTMwMDApKTsKIH0KIAorLy8gVGVzdHMgRm9ybWF0RXBv
Y2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoKS4gIFRoZSBjb3JyZWN0bmVzcyBvZiBjb252ZXJzaW9u
CisvLyBmb3IgcGFydGljdWxhciBkYXRlcyBiZWxvdyB3YXMgdmVyaWZpZWQgaW4gUHl0aG9uIHVz
aW5nCisvLyBkYXRldGltZS5kYXRldGltZS5mcm9tdXRjdGltZXN0YW1wKDx0aW1ldGFtcD4vMTAw
MCkuCisKKy8vIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxIGRlcGVuZHMgb24gdGhl
IGN1cnJlbnQgdGltZXpvbmUsIHNvIHdlCisvLyBoYXZlIHRvIHNldCB1cCBhIHBhcnRpY3VsYXIg
dGltZXpvbmUgdG8gb2J0YWluIHByZWRpY3RhYmxlIHJlc3VsdHMuCitjbGFzcyBGb3JtYXRFcG9j
aFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICAv
LyBPbiBDeWd3aW4sIEdDQyBkb2Vzbid0IGFsbG93IHVucXVhbGlmaWVkIGludGVnZXIgbGl0ZXJh
bHMgdG8gZXhjZWVkCisgIC8vIDMyIGJpdHMsIGV2ZW4gd2hlbiA2NC1iaXQgaW50ZWdlciB0eXBl
cyBhcmUgYXZhaWxhYmxlLiAgV2UgaGF2ZSB0bworICAvLyBmb3JjZSB0aGUgY29uc3RhbnRzIHRv
IGhhdmUgYSA2NC1iaXQgdHlwZSBoZXJlLgorICBzdGF0aWMgY29uc3QgVGltZUluTWlsbGlzIGtN
aWxsaXNQZXJTZWMgPSAxMDAwOworCisgcHJpdmF0ZToKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkg
eworICAgIHNhdmVkX3R6XyA9IE5VTEw7CisKKyAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5H
U19QVVNIXyg0OTk2IC8qIGdldGVudiwgc3RyZHVwOiBkZXByZWNhdGVkICovKQorICAgIGlmIChn
ZXRlbnYoIlRaIikpCisgICAgICBzYXZlZF90el8gPSBzdHJkdXAoZ2V0ZW52KCJUWiIpKTsKKyAg
ICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKworICAgIC8vIFNldCB1cCB0aGUg
dGltZSB6b25lIGZvciBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSB0byB1c2UuICBX
ZQorICAgIC8vIGNhbm5vdCB1c2UgdGhlIGxvY2FsIHRpbWUgem9uZSBiZWNhdXNlIHRoZSBmdW5j
dGlvbidzIG91dHB1dCBkZXBlbmRzCisgICAgLy8gb24gdGhlIHRpbWUgem9uZS4KKyAgICBTZXRU
aW1lWm9uZSgiVVRDKzAwIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Cisg
ICAgU2V0VGltZVpvbmUoc2F2ZWRfdHpfKTsKKyAgICBmcmVlKGNvbnN0X2Nhc3Q8Y2hhcio+KHNh
dmVkX3R6XykpOworICAgIHNhdmVkX3R6XyA9IE5VTEw7CisgIH0KKworICBzdGF0aWMgdm9pZCBT
ZXRUaW1lWm9uZShjb25zdCBjaGFyKiB0aW1lX3pvbmUpIHsKKyAgICAvLyB0enNldCgpIGRpc3Rp
bmd1aXNoZXMgYmV0d2VlbiB0aGUgVFogdmFyaWFibGUgYmVpbmcgcHJlc2VudCBhbmQgZW1wdHkK
KyAgICAvLyBhbmQgbm90IGJlaW5nIHByZXNlbnQsIHNvIHdlIGhhdmUgdG8gY29uc2lkZXIgdGhl
IGNhc2Ugb2YgdGltZV96b25lCisgICAgLy8gYmVpbmcgTlVMTC4KKyNpZiBfTVNDX1ZFUgorICAg
IC8vIC4uLlVubGVzcyBpdCdzIE1TVkMsIHdob3NlIHN0YW5kYXJkIGxpYnJhcnkncyBfcHV0ZW52
IGRvZXNuJ3QKKyAgICAvLyBkaXN0aW5ndWlzaCBiZXR3ZWVuIGFuIGVtcHR5IGFuZCBhIG1pc3Np
bmcgdmFyaWFibGUuCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZW52X3ZhciA9CisgICAgICAgIHN0
ZDo6c3RyaW5nKCJUWj0iKSArICh0aW1lX3pvbmUgPyB0aW1lX3pvbmUgOiAiIik7CisgICAgX3B1
dGVudihlbnZfdmFyLmNfc3RyKCkpOworICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BV
U0hfKDQ5OTYgLyogZGVwcmVjYXRlZCBmdW5jdGlvbiAqLykKKyAgICB0enNldCgpOworICAgIEdU
RVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQorI2Vsc2UKKyAgICBpZiAodGltZV96b25l
KSB7CisgICAgICBzZXRlbnYoKCJUWiIpLCB0aW1lX3pvbmUsIDEpOworICAgIH0gZWxzZSB7Cisg
ICAgICB1bnNldGVudigiVFoiKTsKKyAgICB9CisgICAgdHpzZXQoKTsKKyNlbmRpZgorICB9CisK
KyAgY29uc3QgY2hhciogc2F2ZWRfdHpfOworfTsKKworY29uc3QgVGltZUluTWlsbGlzIEZvcm1h
dEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxVGVzdDo6a01pbGxpc1BlclNlYzsKKworVEVTVF9G
KEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxVGVzdCwgUHJpbnRzVHdvRGlnaXRTZWdt
ZW50cykgeworICBFWFBFQ1RfRVEoIjIwMTEtMTAtMzFUMTg6NTI6NDIiLAorICAgICAgICAgICAg
Rm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoMTMyMDA4NzE2MiAqIGtNaWxsaXNQZXJT
ZWMpKTsKK30KKworVEVTVF9GKEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxVGVzdCwg
TWlsbGlzZWNvbmRzRG9Ob3RBZmZlY3RSZXN1bHQpIHsKKyAgRVhQRUNUX0VRKAorICAgICAgIjIw
MTEtMTAtMzFUMTg6NTI6NDIiLAorICAgICAgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2
MDEoMTMyMDA4NzE2MiAqIGtNaWxsaXNQZXJTZWMgKyAyMzQpKTsKK30KKworVEVTVF9GKEZvcm1h
dEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxVGVzdCwgUHJpbnRzTGVhZGluZ1plcm9lcykgewor
ICBFWFBFQ1RfRVEoIjIwMTEtMDktMDNUMDU6MDc6MDIiLAorICAgICAgICAgICAgRm9ybWF0RXBv
Y2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoMTMxNTAyNjQyMiAqIGtNaWxsaXNQZXJTZWMpKTsKK30K
KworVEVTVF9GKEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxVGVzdCwgUHJpbnRzMjRI
b3VyVGltZSkgeworICBFWFBFQ1RfRVEoIjIwMTEtMDktMjhUMTc6MDg6MjIiLAorICAgICAgICAg
ICAgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoMTMxNzIyOTcwMiAqIGtNaWxsaXNQ
ZXJTZWMpKTsKK30KKworVEVTVF9GKEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxVGVz
dCwgUHJpbnRzRXBvY2hTdGFydCkgeworICBFWFBFQ1RfRVEoIjE5NzAtMDEtMDFUMDA6MDA6MDAi
LCBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSgwKSk7Cit9CisKICNpZiBHVEVTVF9D
QU5fQ09NUEFSRV9OVUxMCiAKLSNpZmRlZiBfX0JPUkxBTkRDX18KKyMgaWZkZWYgX19CT1JMQU5E
Q19fCiAvLyBTaWxlbmNlcyB3YXJuaW5nczogIkNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZSIsICJV
bnJlYWNoYWJsZSBjb2RlIgotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCi0jZW5k
aWYKKyMgIHByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCisjIGVuZGlmCiAKIC8vIFRl
c3RzIHRoYXQgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBpcyB0cnVlIHdoZW4geCBpcyBhIG51
bGwKIC8vIHBvaW50ZXIgbGl0ZXJhbC4KQEAgLTMwMywxNCArNTA1LDYgQEAgVEVTVChOdWxsTGl0
ZXJhbFRlc3QsIElzVHJ1ZUZvck51bGxMaXRlcmFscykgewogICBFWFBFQ1RfVFJVRShHVEVTVF9J
U19OVUxMX0xJVEVSQUxfKDApKTsKICAgRVhQRUNUX1RSVUUoR1RFU1RfSVNfTlVMTF9MSVRFUkFM
XygwVSkpOwogICBFWFBFQ1RfVFJVRShHVEVTVF9JU19OVUxMX0xJVEVSQUxfKDBMKSk7Ci0gIEVY
UEVDVF9UUlVFKEdURVNUX0lTX05VTExfTElURVJBTF8oZmFsc2UpKTsKLSNpZm5kZWYgX19CT1JM
QU5EQ19fCi0gIC8vIFNvbWUgY29tcGlsZXJzIG1heSBmYWlsIHRvIGRldGVjdCBzb21lIG51bGwg
cG9pbnRlciBsaXRlcmFsczsKLSAgLy8gYXMgbG9uZyBhcyB1c2VycyBvZiB0aGUgZnJhbWV3b3Jr
IGRvbid0IHVzZSBzdWNoIGxpdGVyYWxzLCB0aGlzCi0gIC8vIGlzIGhhcm1sZXNzLgotICBFWFBF
Q1RfVFJVRShHVEVTVF9JU19OVUxMX0xJVEVSQUxfKDEgLSAxKSk7Ci0gIEVYUEVDVF9UUlVFKEdU
RVNUX0lTX05VTExfTElURVJBTF8odHJ1ZSAmJiBmYWxzZSkpOwotI2VuZGlmCiB9CiAKIC8vIFRl
c3RzIHRoYXQgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBpcyBmYWxzZSB3aGVuIHggaXMgbm90
IGEgbnVsbApAQCAtMzIyLDEwICs1MTYsMTAgQEAgVEVTVChOdWxsTGl0ZXJhbFRlc3QsIElzRmFs
c2VGb3JOb25OdWxsTGl0ZXJhbHMpIHsKICAgRVhQRUNUX0ZBTFNFKEdURVNUX0lTX05VTExfTElU
RVJBTF8oc3RhdGljX2Nhc3Q8dm9pZCo+KE5VTEwpKSk7CiB9CiAKLSNpZmRlZiBfX0JPUkxBTkRD
X18KKyMgaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2
aW91cyAiI3ByYWdtYSBvcHRpb24gcHVzaCIgc3VwcHJlc3NlZCB0aGVtLgotI3ByYWdtYSBvcHRp
b24gcG9wCi0jZW5kaWYKKyMgIHByYWdtYSBvcHRpb24gcG9wCisjIGVuZGlmCiAKICNlbmRpZiAg
Ly8gR1RFU1RfQ0FOX0NPTVBBUkVfTlVMTAogLy8KQEAgLTMzMywzOSArNTI3LDQxIEBAIFRFU1Qo
TnVsbExpdGVyYWxUZXN0LCBJc0ZhbHNlRm9yTm9uTnVsbExpdGVyYWxzKSB7CiAKIC8vIFRlc3Rz
IHRoYXQgdGhlIE5VTCBjaGFyYWN0ZXIgTCdcMCcgaXMgZW5jb2RlZCBjb3JyZWN0bHkuCiBURVNU
KENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29kZU51bCkgewotICBjaGFyIGJ1ZmZlclszMl07
Ci0gIEVYUEVDVF9TVFJFUSgiIiwgQ29kZVBvaW50VG9VdGY4KEwnXDAnLCBidWZmZXIpKTsKKyAg
RVhQRUNUX0VRKCIiLCBDb2RlUG9pbnRUb1V0ZjgoTCdcMCcpKTsKIH0KIAogLy8gVGVzdHMgdGhh
dCBBU0NJSSBjaGFyYWN0ZXJzIGFyZSBlbmNvZGVkIGNvcnJlY3RseS4KIFRFU1QoQ29kZVBvaW50
VG9VdGY4VGVzdCwgQ2FuRW5jb2RlQXNjaWkpIHsKLSAgY2hhciBidWZmZXJbMzJdOwotICBFWFBF
Q1RfU1RSRVEoImEiLCBDb2RlUG9pbnRUb1V0ZjgoTCdhJywgYnVmZmVyKSk7Ci0gIEVYUEVDVF9T
VFJFUSgiWiIsIENvZGVQb2ludFRvVXRmOChMJ1onLCBidWZmZXIpKTsKLSAgRVhQRUNUX1NUUkVR
KCImIiwgQ29kZVBvaW50VG9VdGY4KEwnJicsIGJ1ZmZlcikpOwotICBFWFBFQ1RfU1RSRVEoIlx4
N0YiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDdGJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiYSIs
IENvZGVQb2ludFRvVXRmOChMJ2EnKSk7CisgIEVYUEVDVF9FUSgiWiIsIENvZGVQb2ludFRvVXRm
OChMJ1onKSk7CisgIEVYUEVDVF9FUSgiJiIsIENvZGVQb2ludFRvVXRmOChMJyYnKSk7CisgIEVY
UEVDVF9FUSgiXHg3RiIsIENvZGVQb2ludFRvVXRmOChMJ1x4N0YnKSk7CiB9CiAKIC8vIFRlc3Rz
IHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0aGF0IGhhdmUgOCB0byAxMSBiaXRzIGFyZSBlbmNv
ZGVkCiAvLyBhcyAxMTB4eHh4eCAxMHh4eHh4eC4KIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwg
Q2FuRW5jb2RlOFRvMTFCaXRzKSB7Ci0gIGNoYXIgYnVmZmVyWzMyXTsKICAgLy8gMDAwIDExMDEg
MDAxMSA9PiAxMTAtMDAwMTEgMTAtMDEwMDExCi0gIEVYUEVDVF9TVFJFUSgiXHhDM1x4OTMiLCBD
b2RlUG9pbnRUb1V0ZjgoTCdceEQzJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiXHhDM1x4OTMi
LCBDb2RlUG9pbnRUb1V0ZjgoTCdceEQzJykpOwogCiAgIC8vIDEwMSAwMTExIDAxMTAgPT4gMTEw
LTEwMTAxIDEwLTExMDExMAotICBFWFBFQ1RfU1RSRVEoIlx4RDVceEI2IiwgQ29kZVBvaW50VG9V
dGY4KEwnXHg1NzYnLCBidWZmZXIpKTsKKyAgLy8gU29tZSBjb21waWxlcnMgKGUuZy4sIEdDQyBv
biBNaW5HVykgY2Fubm90IGhhbmRsZSBub24tQVNDSUkgY29kZXBvaW50cworICAvLyBpbiB3aWRl
IHN0cmluZ3MgYW5kIHdpZGUgY2hhcnMuIEluIG9yZGVyIHRvIGFjY29tb2RhdGUgdGhlbSwgd2Ug
aGF2ZSB0bworICAvLyBpbnRyb2R1Y2Ugc3VjaCBjaGFyYWN0ZXIgY29uc3RhbnRzIGFzIGludGVn
ZXJzLgorICBFWFBFQ1RfRVEoIlx4RDVceEI2IiwKKyAgICAgICAgICAgIENvZGVQb2ludFRvVXRm
OChzdGF0aWNfY2FzdDx3Y2hhcl90PigweDU3NikpKTsKIH0KIAogLy8gVGVzdHMgdGhhdCBVbmlj
b2RlIGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSAxMiB0byAxNiBiaXRzIGFyZSBlbmNvZGVkCiAvLyBh
cyAxMTEweHh4eCAxMHh4eHh4eCAxMHh4eHh4eC4KIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwg
Q2FuRW5jb2RlMTJUbzE2Qml0cykgewotICBjaGFyIGJ1ZmZlclszMl07CiAgIC8vIDAwMDAgMTAw
MCAxMTAxIDAwMTEgPT4gMTExMC0wMDAwIDEwLTEwMDAxMSAxMC0wMTAwMTEKLSAgRVhQRUNUX1NU
UkVRKCJceEUwXHhBM1x4OTMiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDhEMycsIGJ1ZmZlcikpOwor
ICBFWFBFQ1RfRVEoIlx4RTBceEEzXHg5MyIsCisgICAgICAgICAgICBDb2RlUG9pbnRUb1V0Zjgo
c3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHg4RDMpKSk7CiAKICAgLy8gMTEwMCAwMTExIDAxMDAgMTEw
MSA9PiAxMTEwLTExMDAgMTAtMDExMTAxIDEwLTAwMTEwMQotICBFWFBFQ1RfU1RSRVEoIlx4RUNc
eDlEXHg4RCIsIENvZGVQb2ludFRvVXRmOChMJ1x4Qzc0RCcsIGJ1ZmZlcikpOworICBFWFBFQ1Rf
RVEoIlx4RUNceDlEXHg4RCIsCisgICAgICAgICAgICBDb2RlUG9pbnRUb1V0Zjgoc3RhdGljX2Nh
c3Q8d2NoYXJfdD4oMHhDNzREKSkpOwogfQogCiAjaWYgIUdURVNUX1dJREVfU1RSSU5HX1VTRVNf
VVRGMTZfCkBAIC0zNzYsMjIgKzU3MiwxOSBAQCBURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENh
bkVuY29kZTEyVG8xNkJpdHMpIHsKIC8vIFRlc3RzIHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0
aGF0IGhhdmUgMTcgdG8gMjEgYml0cyBhcmUgZW5jb2RlZAogLy8gYXMgMTExMTB4eHggMTB4eHh4
eHggMTB4eHh4eHggMTB4eHh4eHguCiBURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29k
ZTE3VG8yMUJpdHMpIHsKLSAgY2hhciBidWZmZXJbMzJdOwogICAvLyAwIDAwMDEgMDAwMCAxMDAw
IDExMDEgMDAxMSA9PiAxMTExMC0wMDAgMTAtMDEwMDAwIDEwLTEwMDAxMSAxMC0wMTAwMTEKLSAg
RVhQRUNUX1NUUkVRKCJceEYwXHg5MFx4QTNceDkzIiwgQ29kZVBvaW50VG9VdGY4KEwnXHgxMDhE
MycsIGJ1ZmZlcikpOworICBFWFBFQ1RfRVEoIlx4RjBceDkwXHhBM1x4OTMiLCBDb2RlUG9pbnRU
b1V0ZjgoTCdceDEwOEQzJykpOwogCiAgIC8vIDAgMDAwMSAwMDAwIDAxMDAgMDAwMCAwMDAwID0+
IDExMTEwLTAwMCAxMC0wMTAwMDAgMTAtMDEwMDAwIDEwLTAwMDAwMAotICBFWFBFQ1RfU1RSRVEo
Ilx4RjBceDkwXHg5MFx4ODAiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDEwNDAwJywgYnVmZmVyKSk7
CisgIEVYUEVDVF9FUSgiXHhGMFx4OTBceDkwXHg4MCIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA0
MDAnKSk7CiAKICAgLy8gMSAwMDAwIDEwMDAgMDExMCAwMDExIDAxMDAgPT4gMTExMTAtMTAwIDEw
LTAwMTAwMCAxMC0wMTEwMDAgMTAtMTEwMTAwCi0gIEVYUEVDVF9TVFJFUSgiXHhGNFx4ODhceDk4
XHhCNCIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA4NjM0JywgYnVmZmVyKSk7CisgIEVYUEVDVF9F
USgiXHhGNFx4ODhceDk4XHhCNCIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA4NjM0JykpOwogfQog
CiAvLyBUZXN0cyB0aGF0IGVuY29kaW5nIGFuIGludmFsaWQgY29kZS1wb2ludCBnZW5lcmF0ZXMg
dGhlIGV4cGVjdGVkIHJlc3VsdC4KIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2Rl
SW52YWxpZENvZGVQb2ludCkgewotICBjaGFyIGJ1ZmZlclszMl07Ci0gIEVYUEVDVF9TVFJFUSgi
KEludmFsaWQgVW5pY29kZSAweDEyMzRBQkNEKSIsCi0gICAgICAgICAgICAgICBDb2RlUG9pbnRU
b1V0ZjgoTCdceDEyMzRBQkNEJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiKEludmFsaWQgVW5p
Y29kZSAweDEyMzRBQkNEKSIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTIzNEFCQ0QnKSk7CiB9CiAK
ICNlbmRpZiAgLy8gIUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCkBAIC00MjAsMjAgKzYx
MywyMyBAQCBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGU4VG8xMUJpdHMpIHsK
ICAgRVhQRUNUX1NUUkVRKCJceEMzXHg5MyIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEQzIiwgLTEp
LmNfc3RyKCkpOwogCiAgIC8vIDEwMSAwMTExIDAxMTAgPT4gMTEwLTEwMTAxIDEwLTExMDExMAot
ICBFWFBFQ1RfU1RSRVEoIlx4RDVceEI2IiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4NTc2IiwgMSku
Y19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHhENVx4QjYiLCBXaWRlU3RyaW5nVG9VdGY4KEwi
XHg1NzYiLCAtMSkuY19zdHIoKSk7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0geyAweDU3NiwgJ1ww
JyB9OworICBFWFBFQ1RfU1RSRVEoIlx4RDVceEI2IiwgV2lkZVN0cmluZ1RvVXRmOChzLCAxKS5j
X3N0cigpKTsKKyAgRVhQRUNUX1NUUkVRKCJceEQ1XHhCNiIsIFdpZGVTdHJpbmdUb1V0Zjgocywg
LTEpLmNfc3RyKCkpOwogfQogCiAvLyBUZXN0cyB0aGF0IFVuaWNvZGUgY29kZS1wb2ludHMgdGhh
dCBoYXZlIDEyIHRvIDE2IGJpdHMgYXJlIGVuY29kZWQKIC8vIGFzIDExMTB4eHh4IDEweHh4eHh4
IDEweHh4eHh4LgogVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgQ2FuRW5jb2RlMTJUbzE2Qml0
cykgewogICAvLyAwMDAwIDEwMDAgMTEwMSAwMDExID0+IDExMTAtMDAwMCAxMC0xMDAwMTEgMTAt
MDEwMDExCi0gIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lkZVN0cmluZ1RvVXRmOChM
Ilx4OEQzIiwgMSkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lk
ZVN0cmluZ1RvVXRmOChMIlx4OEQzIiwgLTEpLmNfc3RyKCkpOworICBjb25zdCB3Y2hhcl90IHMx
W10gPSB7IDB4OEQzLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lk
ZVN0cmluZ1RvVXRmOChzMSwgMSkuY19zdHIoKSk7CisgIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNc
eDkzIiwgV2lkZVN0cmluZ1RvVXRmOChzMSwgLTEpLmNfc3RyKCkpOwogCiAgIC8vIDExMDAgMDEx
MSAwMTAwIDExMDEgPT4gMTExMC0xMTAwIDEwLTAxMTEwMSAxMC0wMDExMDEKLSAgRVhQRUNUX1NU
UkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhDNzREIiwgMSkuY19zdHIo
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHhFQ1x4OURceDhEIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4
Qzc0RCIsIC0xKS5jX3N0cigpKTsKKyAgY29uc3Qgd2NoYXJfdCBzMltdID0geyAweEM3NEQsICdc
MCcgfTsKKyAgRVhQRUNUX1NUUkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5nVG9VdGY4KHMy
LCAxKS5jX3N0cigpKTsKKyAgRVhQRUNUX1NUUkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5n
VG9VdGY4KHMyLCAtMSkuY19zdHIoKSk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgdGhlIGNvbnZlcnNp
b24gc3RvcHMgd2hlbiB0aGUgZnVuY3Rpb24gZW5jb3VudGVycyBcMCBjaGFyYWN0ZXIuCkBAIC00
NDcsNyArNjQzLDYgQEAgVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgU3RvcHNXaGVuTGVuZ3Ro
TGltaXRSZWFjaGVkKSB7CiAgIEVYUEVDVF9TVFJFUSgiQUJDIiwgV2lkZVN0cmluZ1RvVXRmOChM
IkFCQ0RFRiIsIDMpLmNfc3RyKCkpOwogfQogCi0KICNpZiAhR1RFU1RfV0lERV9TVFJJTkdfVVNF
U19VVEYxNl8KIC8vIFRlc3RzIHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0aGF0IGhhdmUgMTcg
dG8gMjEgYml0cyBhcmUgZW5jb2RlZAogLy8gYXMgMTExMTB4eHggMTB4eHh4eHggMTB4eHh4eHgg
MTB4eHh4eHguIFRoaXMgY29kZSBtYXkgbm90IGNvbXBpbGUKQEAgLTQ3MSwyNSArNjY2LDI5IEBA
IFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENhbkVuY29kZUludmFsaWRDb2RlUG9pbnQpIHsK
IC8vIFRlc3RzIHRoYXQgc3Vycm9nYXRlIHBhaXJzIGFyZSBlbmNvZGVkIGNvcnJlY3RseSBvbiB0
aGUgc3lzdGVtcyB1c2luZwogLy8gVVRGLTE2IGVuY29kaW5nIGluIHRoZSB3aWRlIHN0cmluZ3Mu
CiBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGVWYWxpZFV0ZjE2U1Vycm9nYXRl
UGFpcnMpIHsKLSAgRVhQRUNUX1NUUkVRKCJceEYwXHg5MFx4OTBceDgwIiwKLSAgICAgICAgICAg
ICAgIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEQ4MDFceERDMDAiLCAtMSkuY19zdHIoKSk7CisgIGNv
bnN0IHdjaGFyX3Qgc1tdID0geyAweEQ4MDEsIDB4REMwMCwgJ1wwJyB9OworICBFWFBFQ1RfU1RS
RVEoIlx4RjBceDkwXHg5MFx4ODAiLCBXaWRlU3RyaW5nVG9VdGY4KHMsIC0xKS5jX3N0cigpKTsK
IH0KIAogLy8gVGVzdHMgdGhhdCBlbmNvZGluZyBhbiBpbnZhbGlkIFVURi0xNiBzdXJyb2dhdGUg
cGFpcgogLy8gZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCByZXN1bHQuCiBURVNUKFdpZGVTdHJpbmdU
b1V0ZjhUZXN0LCBDYW5FbmNvZGVJbnZhbGlkVXRmMTZTdXJyb2dhdGVQYWlyKSB7CiAgIC8vIExl
YWRpbmcgc3Vycm9nYXRlIGlzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZy4KLSAgRVhQRUNUX1NU
UkVRKCJceEVEXHhBMFx4ODAiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhEODAwIiwgLTEpLmNfc3Ry
KCkpOworICBjb25zdCB3Y2hhcl90IHMxW10gPSB7IDB4RDgwMCwgJ1wwJyB9OworICBFWFBFQ1Rf
U1RSRVEoIlx4RURceEEwXHg4MCIsIFdpZGVTdHJpbmdUb1V0ZjgoczEsIC0xKS5jX3N0cigpKTsK
ICAgLy8gTGVhZGluZyBzdXJyb2dhdGUgaXMgbm90IGZvbGxvd2VkIGJ5IHRoZSB0cmFpbGluZyBz
dXJyb2dhdGUuCi0gIEVYUEVDVF9TVFJFUSgiXHhFRFx4QTBceDgwJCIsIFdpZGVTdHJpbmdUb1V0
ZjgoTCJceEQ4MDAkIiwgLTEpLmNfc3RyKCkpOworICBjb25zdCB3Y2hhcl90IHMyW10gPSB7IDB4
RDgwMCwgJ00nLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhFRFx4QTBceDgwTSIsIFdpZGVT
dHJpbmdUb1V0ZjgoczIsIC0xKS5jX3N0cigpKTsKICAgLy8gVHJhaWxpbmcgc3Vycm9nYXRlIGFw
cGVhcmFzIHdpdGhvdXQgYSBsZWFkaW5nIHN1cnJvZ2F0ZS4KLSAgRVhQRUNUX1NUUkVRKCJceEVE
XHhCMFx4ODBQUVIiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhEQzAwUFFSIiwgLTEpLmNfc3RyKCkp
OworICBjb25zdCB3Y2hhcl90IHMzW10gPSB7IDB4REMwMCwgJ1AnLCAnUScsICdSJywgJ1wwJyB9
OworICBFWFBFQ1RfU1RSRVEoIlx4RURceEIwXHg4MFBRUiIsIFdpZGVTdHJpbmdUb1V0ZjgoczMs
IC0xKS5jX3N0cigpKTsKIH0KICNlbmRpZiAgLy8gIUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRG
MTZfCiAKIC8vIFRlc3RzIHRoYXQgY29kZXBvaW50IGNvbmNhdGVuYXRpb24gd29ya3MgY29ycmVj
dGx5LgogI2lmICFHVEVTVF9XSURFX1NUUklOR19VU0VTX1VURjE2XwogVEVTVChXaWRlU3RyaW5n
VG9VdGY4VGVzdCwgQ29uY2F0ZW5hdGVzQ29kZXBvaW50c0NvcnJlY3RseSkgeworICBjb25zdCB3
Y2hhcl90IHNbXSA9IHsgMHgxMDg2MzQsIDB4Qzc0RCwgJ1xuJywgMHg1NzYsIDB4OEQzLCAweDEw
ODYzNCwgJ1wwJ307CiAgIEVYUEVDVF9TVFJFUSgKICAgICAgICJceEY0XHg4OFx4OThceEI0Igog
ICAgICAgICAgICJceEVDXHg5RFx4OEQiCkBAIC00OTcsMTMgKzY5NiwxNCBAQCBURVNUKFdpZGVT
dHJpbmdUb1V0ZjhUZXN0LCBDb25jYXRlbmF0ZXNDb2RlcG9pbnRzQ29ycmVjdGx5KSB7CiAgICAg
ICAgICAgIlx4RDVceEI2IgogICAgICAgICAgICJceEUwXHhBM1x4OTMiCiAgICAgICAgICAgIlx4
RjRceDg4XHg5OFx4QjQiLAotICAgICAgV2lkZVN0cmluZ1RvVXRmOChMIlx4MTA4NjM0XHhDNzRE
XG5ceDU3Nlx4OEQzXHgxMDg2MzQiLCAtMSkuY19zdHIoKSk7CisgICAgICBXaWRlU3RyaW5nVG9V
dGY4KHMsIC0xKS5jX3N0cigpKTsKIH0KICNlbHNlCiBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0
LCBDb25jYXRlbmF0ZXNDb2RlcG9pbnRzQ29ycmVjdGx5KSB7CisgIGNvbnN0IHdjaGFyX3Qgc1td
ID0geyAweEM3NEQsICdcbicsIDB4NTc2LCAweDhEMywgJ1wwJ307CiAgIEVYUEVDVF9TVFJFUSgK
ICAgICAgICJceEVDXHg5RFx4OEQiICJcbiIgIlx4RDVceEI2IiAiXHhFMFx4QTNceDkzIiwKLSAg
ICAgIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEM3NERcblx4NTc2XHg4RDMiLCAtMSkuY19zdHIoKSk7
CisgICAgICBXaWRlU3RyaW5nVG9VdGY4KHMsIC0xKS5jX3N0cigpKTsKIH0KICNlbmRpZiAgLy8g
IUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCiAKQEAgLTc5NywyNjkgKzk5NywxNiBAQCBU
RVNUKEFzc2VydEhlbHBlclRlc3QsIEFzc2VydEhlbHBlcklzU21hbGwpIHsKICAgRVhQRUNUX0xF
KHNpemVvZih0ZXN0aW5nOjppbnRlcm5hbDo6QXNzZXJ0SGVscGVyKSwgc2l6ZW9mKHZvaWQqKSk7
CiB9CiAKLS8vIFRlc3RzIHRoZSBTdHJpbmcgY2xhc3MuCi0KLS8vIFRlc3RzIFN0cmluZydzIGNv
bnN0cnVjdG9ycy4KLVRFU1QoU3RyaW5nVGVzdCwgQ29uc3RydWN0b3JzKSB7Ci0gIC8vIERlZmF1
bHQgY3Rvci4KLSAgU3RyaW5nIHMxOwotICAvLyBXZSBhcmVuJ3QgdXNpbmcgRVhQRUNUX0VRKE5V
TEwsIHMxLmNfc3RyKCkpIGJlY2F1c2UgY29tcGFyaW5nCi0gIC8vIHBvaW50ZXJzIHdpdGggTlVM
TCBpc24ndCBzdXBwb3J0ZWQgb24gYWxsIHBsYXRmb3Jtcy4KLSAgRVhQRUNUX0VRKDBVLCBzMS5s
ZW5ndGgoKSk7Ci0gIEVYUEVDVF9UUlVFKE5VTEwgPT0gczEuY19zdHIoKSk7Ci0KLSAgLy8gSW1w
bGljaXRseSBjb25zdHJ1Y3RzIGZyb20gYSBDLXN0cmluZy4KLSAgU3RyaW5nIHMyID0gIkhpIjsK
LSAgRVhQRUNUX0VRKDJVLCBzMi5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiSGkiLCBzMi5j
X3N0cigpKTsKLQotICAvLyBDb25zdHJ1Y3RzIGZyb20gYSBDLXN0cmluZyBhbmQgYSBsZW5ndGgu
Ci0gIFN0cmluZyBzMygiaGVsbG8iLCAzKTsKLSAgRVhQRUNUX0VRKDNVLCBzMy5sZW5ndGgoKSk7
Ci0gIEVYUEVDVF9TVFJFUSgiaGVsIiwgczMuY19zdHIoKSk7Ci0KLSAgLy8gVGhlIGVtcHR5IFN0
cmluZyBzaG91bGQgYmUgY3JlYXRlZCB3aGVuIFN0cmluZyBpcyBjb25zdHJ1Y3RlZCB3aXRoCi0g
IC8vIGEgTlVMTCBwb2ludGVyIGFuZCBsZW5ndGggMC4KLSAgRVhQRUNUX0VRKDBVLCBTdHJpbmco
TlVMTCwgMCkubGVuZ3RoKCkpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKE5VTEwsIDApLmNfc3Ry
KCkgPT0gTlVMTCk7Ci0KLSAgLy8gQ29uc3RydWN0cyBhIFN0cmluZyB0aGF0IGNvbnRhaW5zICdc
MCcuCi0gIFN0cmluZyBzNCgiYVwwYmNkIiwgNCk7Ci0gIEVYUEVDVF9FUSg0VSwgczQubGVuZ3Ro
KCkpOwotICBFWFBFQ1RfRVEoJ2EnLCBzNC5jX3N0cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdcMCcs
IHM0LmNfc3RyKClbMV0pOwotICBFWFBFQ1RfRVEoJ2InLCBzNC5jX3N0cigpWzJdKTsKLSAgRVhQ
RUNUX0VRKCdjJywgczQuY19zdHIoKVszXSk7Ci0KLSAgLy8gQ29weSBjdG9yIHdoZXJlIHRoZSBz
b3VyY2UgaXMgTlVMTC4KLSAgY29uc3QgU3RyaW5nIG51bGxfc3RyOwotICBTdHJpbmcgczUgPSBu
dWxsX3N0cjsKLSAgRVhQRUNUX1RSVUUoczUuY19zdHIoKSA9PSBOVUxMKTsKLQotICAvLyBDb3B5
IGN0b3Igd2hlcmUgdGhlIHNvdXJjZSBpc24ndCBOVUxMLgotICBTdHJpbmcgczYgPSBzMzsKLSAg
RVhQRUNUX0VRKDNVLCBzNi5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiaGVsIiwgczYuY19z
dHIoKSk7Ci0KLSAgLy8gQ29weSBjdG9yIHdoZXJlIHRoZSBzb3VyY2UgY29udGFpbnMgJ1wwJy4K
LSAgU3RyaW5nIHM3ID0gczQ7Ci0gIEVYUEVDVF9FUSg0VSwgczcubGVuZ3RoKCkpOwotICBFWFBF
Q1RfRVEoJ2EnLCBzNy5jX3N0cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdcMCcsIHM3LmNfc3RyKClb
MV0pOwotICBFWFBFQ1RfRVEoJ2InLCBzNy5jX3N0cigpWzJdKTsKLSAgRVhQRUNUX0VRKCdjJywg
czcuY19zdHIoKVszXSk7Ci19Ci0KLVRFU1QoU3RyaW5nVGVzdCwgQ29udmVydHNGcm9tU3RkU3Ry
aW5nKSB7Ci0gIC8vIEFuIGVtcHR5IHN0ZDo6c3RyaW5nLgotICBjb25zdCBzdGQ6OnN0cmluZyBz
cmMxKCIiKTsKLSAgY29uc3QgU3RyaW5nIGRlc3QxID0gc3JjMTsKLSAgRVhQRUNUX0VRKDBVLCBk
ZXN0MS5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgZGVzdDEuY19zdHIoKSk7Ci0KLSAg
Ly8gQSBub3JtYWwgc3RkOjpzdHJpbmcuCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIHNyYzIoIkhpIik7
Ci0gIGNvbnN0IFN0cmluZyBkZXN0MiA9IHNyYzI7Ci0gIEVYUEVDVF9FUSgyVSwgZGVzdDIubGVu
Z3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoIkhpIiwgZGVzdDIuY19zdHIoKSk7Ci0KLSAgLy8gQW4g
c3RkOjpzdHJpbmcgd2l0aCBhbiBlbWJlZGRlZCBOVUwgY2hhcmFjdGVyLgotICBjb25zdCBjaGFy
IHNyYzNbXSA9ICJhXDBiIjsKLSAgY29uc3QgU3RyaW5nIGRlc3QzID0gc3RkOjpzdHJpbmcoc3Jj
Mywgc2l6ZW9mKHNyYzMpKTsKLSAgRVhQRUNUX0VRKHNpemVvZihzcmMzKSwgZGVzdDMubGVuZ3Ro
KCkpOwotICBFWFBFQ1RfRVEoJ2EnLCBkZXN0My5jX3N0cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdc
MCcsIGRlc3QzLmNfc3RyKClbMV0pOwotICBFWFBFQ1RfRVEoJ2InLCBkZXN0My5jX3N0cigpWzJd
KTsKLX0KLQotVEVTVChTdHJpbmdUZXN0LCBDb252ZXJ0c1RvU3RkU3RyaW5nKSB7Ci0gIC8vIEFu
IGVtcHR5IFN0cmluZy4KLSAgY29uc3QgU3RyaW5nIHNyYzEoIiIpOwotICBjb25zdCBzdGQ6OnN0
cmluZyBkZXN0MSA9IHNyYzE7Ci0gIEVYUEVDVF9FUSgiIiwgZGVzdDEpOwotCi0gIC8vIEEgbm9y
bWFsIFN0cmluZy4KLSAgY29uc3QgU3RyaW5nIHNyYzIoIkhpIik7Ci0gIGNvbnN0IHN0ZDo6c3Ry
aW5nIGRlc3QyID0gc3JjMjsKLSAgRVhQRUNUX0VRKCJIaSIsIGRlc3QyKTsKLQotICAvLyBBIFN0
cmluZyBjb250YWluaW5nIGEgJ1wwJy4KLSAgY29uc3QgU3RyaW5nIHNyYzMoInhcMHkiLCAzKTsK
LSAgY29uc3Qgc3RkOjpzdHJpbmcgZGVzdDMgPSBzcmMzOwotICBFWFBFQ1RfRVEoc3RkOjpzdHJp
bmcoInhcMHkiLCAzKSwgZGVzdDMpOwotfQotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcK
LQotVEVTVChTdHJpbmdUZXN0LCBDb252ZXJ0c0Zyb21HbG9iYWxTdHJpbmcpIHsKLSAgLy8gQW4g
ZW1wdHkgOjpzdHJpbmcuCi0gIGNvbnN0IDo6c3RyaW5nIHNyYzEoIiIpOwotICBjb25zdCBTdHJp
bmcgZGVzdDEgPSBzcmMxOwotICBFWFBFQ1RfRVEoMFUsIGRlc3QxLmxlbmd0aCgpKTsKLSAgRVhQ
RUNUX1NUUkVRKCIiLCBkZXN0MS5jX3N0cigpKTsKLQotICAvLyBBIG5vcm1hbCA6OnN0cmluZy4K
LSAgY29uc3QgOjpzdHJpbmcgc3JjMigiSGkiKTsKLSAgY29uc3QgU3RyaW5nIGRlc3QyID0gc3Jj
MjsKLSAgRVhQRUNUX0VRKDJVLCBkZXN0Mi5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiSGki
LCBkZXN0Mi5jX3N0cigpKTsKLQotICAvLyBBbiA6OnN0cmluZyB3aXRoIGFuIGVtYmVkZGVkIE5V
TCBjaGFyYWN0ZXIuCi0gIGNvbnN0IGNoYXIgc3JjM1tdID0gInhcMHkiOwotICBjb25zdCBTdHJp
bmcgZGVzdDMgPSA6OnN0cmluZyhzcmMzLCBzaXplb2Yoc3JjMykpOwotICBFWFBFQ1RfRVEoc2l6
ZW9mKHNyYzMpLCBkZXN0My5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgneCcsIGRlc3QzLmNfc3Ry
KClbMF0pOwotICBFWFBFQ1RfRVEoJ1wwJywgZGVzdDMuY19zdHIoKVsxXSk7Ci0gIEVYUEVDVF9F
USgneScsIGRlc3QzLmNfc3RyKClbMl0pOwotfQotCi1URVNUKFN0cmluZ1Rlc3QsIENvbnZlcnRz
VG9HbG9iYWxTdHJpbmcpIHsKLSAgLy8gQW4gZW1wdHkgU3RyaW5nLgotICBjb25zdCBTdHJpbmcg
c3JjMSgiIik7Ci0gIGNvbnN0IDo6c3RyaW5nIGRlc3QxID0gc3JjMTsKLSAgRVhQRUNUX0VRKCIi
LCBkZXN0MSk7Ci0KLSAgLy8gQSBub3JtYWwgU3RyaW5nLgotICBjb25zdCBTdHJpbmcgc3JjMigi
SGkiKTsKLSAgY29uc3QgOjpzdHJpbmcgZGVzdDIgPSBzcmMyOwotICBFWFBFQ1RfRVEoIkhpIiwg
ZGVzdDIpOwotCi0gIGNvbnN0IFN0cmluZyBzcmMzKCJ4XDB5IiwgMyk7Ci0gIGNvbnN0IDo6c3Ry
aW5nIGRlc3QzID0gc3JjMzsKLSAgRVhQRUNUX0VRKDo6c3RyaW5nKCJ4XDB5IiwgMyksIGRlc3Qz
KTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotCi0vLyBUZXN0cyBT
dHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKCkuCi1URVNUKFN0cmluZ1Rlc3QsIFNob3dDU3RyaW5n
UXVvdGVkKSB7Ci0gIEVYUEVDVF9TVFJFUSgiKG51bGwpIiwKLSAgICAgICAgICAgICAgIFN0cmlu
Zzo6U2hvd0NTdHJpbmdRdW90ZWQoTlVMTCkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXCJc
IiIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKCIiKS5jX3N0cigp
KTsKLSAgRVhQRUNUX1NUUkVRKCJcImZvb1wiIiwKLSAgICAgICAgICAgICAgIFN0cmluZzo6U2hv
d0NTdHJpbmdRdW90ZWQoImZvbyIpLmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6OmVt
cHR5KCkuCi1URVNUKFN0cmluZ1Rlc3QsIEVtcHR5KSB7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygi
IikuZW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShTdHJpbmcoKS5lbXB0eSgpKTsKLSAgRVhQRUNU
X0ZBTFNFKFN0cmluZyhOVUxMKS5lbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiYSIp
LmVtcHR5KCkpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCJcMCIsIDEpLmVtcHR5KCkpOwotfQot
Ci0vLyBUZXN0cyBTdHJpbmc6OkNvbXBhcmUoKS4KLVRFU1QoU3RyaW5nVGVzdCwgQ29tcGFyZSkg
ewotICAvLyBOVUxMIHZzIE5VTEwuCi0gIEVYUEVDVF9FUSgwLCBTdHJpbmcoKS5Db21wYXJlKFN0
cmluZygpKSk7Ci0KLSAgLy8gTlVMTCB2cyBub24tTlVMTC4KLSAgRVhQRUNUX0VRKC0xLCBTdHJp
bmcoKS5Db21wYXJlKFN0cmluZygiIikpKTsKLQotICAvLyBOb24tTlVMTCB2cyBOVUxMLgotICBF
WFBFQ1RfRVEoMSwgU3RyaW5nKCIiKS5Db21wYXJlKFN0cmluZygpKSk7Ci0KLSAgLy8gVGhlIGZv
bGxvd2luZyBjb3ZlcnMgbm9uLU5VTEwgdnMgbm9uLU5VTEwuCi0KLSAgLy8gIiIgdnMgIiIuCi0g
IEVYUEVDVF9FUSgwLCBTdHJpbmcoIiIpLkNvbXBhcmUoU3RyaW5nKCIiKSkpOwotCi0gIC8vICIi
IHZzIG5vbi0iIi4KLSAgRVhQRUNUX0VRKC0xLCBTdHJpbmcoIiIpLkNvbXBhcmUoU3RyaW5nKCJc
MCIsIDEpKSk7Ci0gIEVYUEVDVF9FUSgtMSwgU3RyaW5nKCIiKS5Db21wYXJlKCIgIikpOwotCi0g
IC8vIE5vbi0iIiB2cyAiIi4KLSAgRVhQRUNUX0VRKDEsIFN0cmluZygiYSIpLkNvbXBhcmUoU3Ry
aW5nKCIiKSkpOwotCi0gIC8vIFRoZSBmb2xsb3dpbmcgY292ZXJzIG5vbi0iIiB2cyBub24tIiIu
Ci0KLSAgLy8gU2FtZSBsZW5ndGggYW5kIGVxdWFsLgotICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCJh
IikuQ29tcGFyZShTdHJpbmcoImEiKSkpOwotCi0gIC8vIFNhbWUgbGVuZ3RoIGFuZCBkaWZmZXJl
bnQuCi0gIEVYUEVDVF9FUSgtMSwgU3RyaW5nKCJhXDBiIiwgMykuQ29tcGFyZShTdHJpbmcoImFc
MGMiLCAzKSkpOwotICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCJiIikuQ29tcGFyZShTdHJpbmcoImEi
KSkpOwotCi0gIC8vIERpZmZlcmVudCBsZW5ndGhzLgotICBFWFBFQ1RfRVEoLTEsIFN0cmluZygi
YSIpLkNvbXBhcmUoU3RyaW5nKCJhYiIpKSk7Ci0gIEVYUEVDVF9FUSgtMSwgU3RyaW5nKCJhIiku
Q29tcGFyZShTdHJpbmcoImFcMCIsIDIpKSk7Ci0gIEVYUEVDVF9FUSgxLCBTdHJpbmcoImFiYyIp
LkNvbXBhcmUoU3RyaW5nKCJhYWNkIikpKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpvcGVyYXRv
cj09KCkuCi1URVNUKFN0cmluZ1Rlc3QsIEVxdWFscykgewotICBjb25zdCBTdHJpbmcgbnVsbChO
VUxMKTsKLSAgRVhQRUNUX1RSVUUobnVsbCA9PSBOVUxMKTsgIC8vIE5PTElOVAotICBFWFBFQ1Rf
RkFMU0UobnVsbCA9PSAiIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKG51bGwgPT0gImJh
ciIpOyAgLy8gTk9MSU5UCi0KLSAgY29uc3QgU3RyaW5nIGVtcHR5KCIiKTsKLSAgRVhQRUNUX0ZB
TFNFKGVtcHR5ID09IE5VTEwpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKGVtcHR5ID09ICIi
KTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRkFMU0UoZW1wdHkgPT0gImJhciIpOyAgLy8gTk9MSU5U
Ci0KLSAgY29uc3QgU3RyaW5nIGZvbygiZm9vIik7Ci0gIEVYUEVDVF9GQUxTRShmb28gPT0gTlVM
TCk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKGZvbyA9PSAiIik7ICAvLyBOT0xJTlQKLSAg
RVhQRUNUX0ZBTFNFKGZvbyA9PSAiYmFyIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUoZm9v
ID09ICJmb28iKTsgIC8vIE5PTElOVAotCi0gIGNvbnN0IFN0cmluZyBiYXIoInhcMHkiLCAzKTsK
LSAgRVhQRUNUX0ZBTFNFKGJhciA9PSAieCIpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6Om9wZXJh
dG9yIT0oKS4KLVRFU1QoU3RyaW5nVGVzdCwgTm90RXF1YWxzKSB7Ci0gIGNvbnN0IFN0cmluZyBu
dWxsKE5VTEwpOwotICBFWFBFQ1RfRkFMU0UobnVsbCAhPSBOVUxMKTsgIC8vIE5PTElOVAotICBF
WFBFQ1RfVFJVRShudWxsICE9ICIiKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShudWxsICE9
ICJiYXIiKTsgIC8vIE5PTElOVAotCi0gIGNvbnN0IFN0cmluZyBlbXB0eSgiIik7Ci0gIEVYUEVD
VF9UUlVFKGVtcHR5ICE9IE5VTEwpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShlbXB0eSAh
PSAiIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUoZW1wdHkgIT0gImJhciIpOyAgLy8gTk9M
SU5UCi0KLSAgY29uc3QgU3RyaW5nIGZvbygiZm9vIik7Ci0gIEVYUEVDVF9UUlVFKGZvbyAhPSBO
VUxMKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShmb28gIT0gIiIpOyAgLy8gTk9MSU5UCi0g
IEVYUEVDVF9UUlVFKGZvbyAhPSAiYmFyIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKGZv
byAhPSAiZm9vIik7ICAvLyBOT0xJTlQKLQotICBjb25zdCBTdHJpbmcgYmFyKCJ4XDB5IiwgMyk7
Ci0gIEVYUEVDVF9UUlVFKGJhciAhPSAieCIpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6Omxlbmd0
aCgpLgotVEVTVChTdHJpbmdUZXN0LCBMZW5ndGgpIHsKLSAgRVhQRUNUX0VRKDBVLCBTdHJpbmco
KS5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgwVSwgU3RyaW5nKCIiKS5sZW5ndGgoKSk7Ci0gIEVY
UEVDVF9FUSgyVSwgU3RyaW5nKCJhYiIpLmxlbmd0aCgpKTsKLSAgRVhQRUNUX0VRKDNVLCBTdHJp
bmcoImFcMGIiLCAzKS5sZW5ndGgoKSk7Ci19Ci0KLS8vIFRlc3RzIFN0cmluZzo6RW5kc1dpdGgo
KS4KLVRFU1QoU3RyaW5nVGVzdCwgRW5kc1dpdGgpIHsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCJm
b29iYXIiKS5FbmRzV2l0aCgiYmFyIikpOwotICBFWFBFQ1RfVFJVRShTdHJpbmcoImZvb2JhciIp
LkVuZHNXaXRoKCIiKSk7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiIikuRW5kc1dpdGgoIiIpKTsK
LQotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCJmb29iYXIiKS5FbmRzV2l0aCgiZm9vIikpOwotICBF
WFBFQ1RfRkFMU0UoU3RyaW5nKCIiKS5FbmRzV2l0aCgiZm9vIikpOwotfQotCiAvLyBUZXN0cyBT
dHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCkuCiBURVNUKFN0cmluZ1Rlc3QsIEVuZHNX
aXRoQ2FzZUluc2Vuc2l0aXZlKSB7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiZm9vYmFyIikuRW5k
c1dpdGhDYXNlSW5zZW5zaXRpdmUoIkJBUiIpKTsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCJmb29i
YVIiKS5FbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiYmFyIikpOwotICBFWFBFQ1RfVFJVRShTdHJp
bmcoImZvb2JhciIpLkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCIiKSk7Ci0gIEVYUEVDVF9UUlVF
KFN0cmluZygiIikuRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoIiIpKTsKKyAgRVhQRUNUX1RSVUUo
U3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vYmFyIiwgIkJBUiIpKTsKKyAgRVhQ
RUNUX1RSVUUoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vYmFSIiwgImJhciIp
KTsKKyAgRVhQRUNUX1RSVUUoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vYmFy
IiwgIiIpKTsKKyAgRVhQRUNUX1RSVUUoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgi
IiwgIiIpKTsKIAotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCJGb29iYXIiKS5FbmRzV2l0aENhc2VJ
bnNlbnNpdGl2ZSgiZm9vIikpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCJmb29iYXIiKS5FbmRz
V2l0aENhc2VJbnNlbnNpdGl2ZSgiRm9vIikpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCIiKS5F
bmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vIikpOworICBFWFBFQ1RfRkFMU0UoU3RyaW5nOjpF
bmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiRm9vYmFyIiwgImZvbyIpKTsKKyAgRVhQRUNUX0ZBTFNF
KFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImZvb2JhciIsICJGb28iKSk7CisgIEVY
UEVDVF9GQUxTRShTdHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCIiLCAiZm9vIikpOwog
fQogCiAvLyBDKytCdWlsZGVyJ3MgcHJlcHJvY2Vzc29yIGlzIGJ1Z2d5OyBpdCBmYWlscyB0byBl
eHBhbmQgbWFjcm9zIHRoYXQKQEAgLTEwNzksODcgKzEwMjYsNiBAQCBURVNUKFN0cmluZ1Rlc3Qs
IENhc2VJbnNlbnNpdGl2ZVdpZGVDU3RyaW5nRXF1YWxzKSB7CiAgIEVYUEVDVF9UUlVFKFN0cmlu
Zzo6Q2FzZUluc2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMoTCJGT09CQVIiLCBMImZvb2JhciIp
KTsKIH0KIAotLy8gVGVzdHMgdGhhdCBOVUxMIGNhbiBiZSBhc3NpZ25lZCB0byBhIFN0cmluZy4K
LVRFU1QoU3RyaW5nVGVzdCwgQ2FuQmVBc3NpZ25lZE5VTEwpIHsKLSAgY29uc3QgU3RyaW5nIHNy
YyhOVUxMKTsKLSAgU3RyaW5nIGRlc3Q7Ci0KLSAgZGVzdCA9IHNyYzsKLSAgRVhQRUNUX1NUUkVR
KE5VTEwsIGRlc3QuY19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIGVtcHR5IHN0cmlu
ZyAiIiBjYW4gYmUgYXNzaWduZWQgdG8gYSBTdHJpbmcuCi1URVNUKFN0cmluZ1Rlc3QsIENhbkJl
QXNzaWduZWRFbXB0eSkgewotICBjb25zdCBTdHJpbmcgc3JjKCIiKTsKLSAgU3RyaW5nIGRlc3Q7
Ci0KLSAgZGVzdCA9IHNyYzsKLSAgRVhQRUNUX1NUUkVRKCIiLCBkZXN0LmNfc3RyKCkpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IGEgbm9uLWVtcHR5IHN0cmluZyBjYW4gYmUgYXNzaWduZWQgdG8gYSBT
dHJpbmcuCi1URVNUKFN0cmluZ1Rlc3QsIENhbkJlQXNzaWduZWROb25FbXB0eSkgewotICBjb25z
dCBTdHJpbmcgc3JjKCJoZWxsbyIpOwotICBTdHJpbmcgZGVzdDsKLSAgZGVzdCA9IHNyYzsKLSAg
RVhQRUNUX0VRKDVVLCBkZXN0Lmxlbmd0aCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJoZWxsbyIsIGRl
c3QuY19zdHIoKSk7Ci0KLSAgY29uc3QgU3RyaW5nIHNyYzIoInhcMHkiLCAzKTsKLSAgU3RyaW5n
IGRlc3QyOwotICBkZXN0MiA9IHNyYzI7Ci0gIEVYUEVDVF9FUSgzVSwgZGVzdDIubGVuZ3RoKCkp
OwotICBFWFBFQ1RfRVEoJ3gnLCBkZXN0Mi5jX3N0cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdcMCcs
IGRlc3QyLmNfc3RyKClbMV0pOwotICBFWFBFQ1RfRVEoJ3knLCBkZXN0Mi5jX3N0cigpWzJdKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBhIFN0cmluZyBjYW4gYmUgYXNzaWduZWQgdG8gaXRzZWxmLgot
VEVTVChTdHJpbmdUZXN0LCBDYW5CZUFzc2lnbmVkU2VsZikgewotICBTdHJpbmcgZGVzdCgiaGVs
bG8iKTsKLQotICBkZXN0ID0gZGVzdDsKLSAgRVhQRUNUX1NUUkVRKCJoZWxsbyIsIGRlc3QuY19z
dHIoKSk7Ci19Ci0KLS8vIFN1biBTdHVkaW8gPCAxMiBpbmNvcnJlY3RseSByZWplY3RzIHRoaXMg
Y29kZSBkdWUgdG8gYW4gb3ZlcmxvYWRpbmcKLS8vIGFtYmlndWl0eS4KLSNpZiAhKGRlZmluZWQo
X19TVU5QUk9fQ0MpICYmIF9fU1VOUFJPX0NDIDwgMHg1OTApCi0vLyBUZXN0cyBzdHJlYW1pbmcg
YSBTdHJpbmcuCi1URVNUKFN0cmluZ1Rlc3QsIFN0cmVhbXMpIHsKLSAgRVhQRUNUX0VRKFN0cmVh
bWFibGVUb1N0cmluZyhTdHJpbmcoKSksICIobnVsbCkiKTsKLSAgRVhQRUNUX0VRKFN0cmVhbWFi
bGVUb1N0cmluZyhTdHJpbmcoIiIpKSwgIiIpOwotICBFWFBFQ1RfRVEoU3RyZWFtYWJsZVRvU3Ry
aW5nKFN0cmluZygiYVwwYiIsIDMpKSwgImFcXDBiIik7Ci19Ci0jZW5kaWYKLQotLy8gVGVzdHMg
dGhhdCBTdHJpbmc6OkZvcm1hdCgpIHdvcmtzLgotVEVTVChTdHJpbmdUZXN0LCBGb3JtYXRXb3Jr
cykgewotICAvLyBOb3JtYWwgY2FzZTogdGhlIGZvcm1hdCBzcGVjIGlzIHZhbGlkLCB0aGUgYXJn
dW1lbnRzIG1hdGNoIHRoZQotICAvLyBzcGVjLCBhbmQgdGhlIHJlc3VsdCBpcyA8IDQwOTUgY2hh
cmFjdGVycy4KLSAgRVhQRUNUX1NUUkVRKCJIZWxsbywgNDIiLCBTdHJpbmc6OkZvcm1hdCgiJXMs
ICVkIiwgIkhlbGxvIiwgNDIpLmNfc3RyKCkpOwotCi0gIC8vIEVkZ2UgY2FzZTogdGhlIHJlc3Vs
dCBpcyA0MDk1IGNoYXJhY3RlcnMuCi0gIGNoYXIgYnVmZmVyWzQwOTZdOwotICBjb25zdCBzaXpl
X3Qga1NpemUgPSBzaXplb2YoYnVmZmVyKTsKLSAgbWVtc2V0KGJ1ZmZlciwgJ2EnLCBrU2l6ZSAt
IDEpOwotICBidWZmZXJba1NpemUgLSAxXSA9ICdcMCc7Ci0gIEVYUEVDVF9TVFJFUShidWZmZXIs
IFN0cmluZzo6Rm9ybWF0KCIlcyIsIGJ1ZmZlcikuY19zdHIoKSk7Ci0KLSAgLy8gVGhlIHJlc3Vs
dCBuZWVkcyB0byBiZSA0MDk2IGNoYXJhY3RlcnMsIGV4Y2VlZGluZyBGb3JtYXQoKSdzIGxpbWl0
LgotICBFWFBFQ1RfU1RSRVEoIjxmb3JtYXR0aW5nIGVycm9yIG9yIGJ1ZmZlciBleGNlZWRlZD4i
LAotICAgICAgICAgICAgICAgU3RyaW5nOjpGb3JtYXQoInglcyIsIGJ1ZmZlcikuY19zdHIoKSk7
Ci0KLSNpZiBHVEVTVF9PU19MSU5VWAotICAvLyBPbiBMaW51eCwgaW52YWxpZCBmb3JtYXQgc3Bl
YyBzaG91bGQgbGVhZCB0byBhbiBlcnJvciBtZXNzYWdlLgotICAvLyBJbiBvdGhlciBlbnZpcm9u
bWVudCAoZS5nLiBNU1ZDIG9uIFdpbmRvd3MpLCBTdHJpbmc6OkZvcm1hdCgpIG1heQotICAvLyBz
aW1wbHkgaWdub3JlIGEgYmFkIGZvcm1hdCBzcGVjLCBzbyB0aGlzIGFzc2VydGlvbiBpcyBydW4g
b24KLSAgLy8gTGludXggb25seS4KLSAgRVhQRUNUX1NUUkVRKCI8Zm9ybWF0dGluZyBlcnJvciBv
ciBidWZmZXIgZXhjZWVkZWQ+IiwKLSAgICAgICAgICAgICAgIFN0cmluZzo6Rm9ybWF0KCIlIiku
Y19zdHIoKSk7Ci0jZW5kaWYKLX0KLQogI2lmIEdURVNUX09TX1dJTkRPV1MKIAogLy8gVGVzdHMg
U3RyaW5nOjpTaG93V2lkZUNTdHJpbmcoKS4KQEAgLTExNzAsMTcgKzEwMzYsNyBAQCBURVNUKFN0
cmluZ1Rlc3QsIFNob3dXaWRlQ1N0cmluZykgewogICBFWFBFQ1RfU1RSRVEoImZvbyIsIFN0cmlu
Zzo6U2hvd1dpZGVDU3RyaW5nKEwiZm9vIikuY19zdHIoKSk7CiB9CiAKLS8vIFRlc3RzIFN0cmlu
Zzo6U2hvd1dpZGVDU3RyaW5nUXVvdGVkKCkuCi1URVNUKFN0cmluZ1Rlc3QsIFNob3dXaWRlQ1N0
cmluZ1F1b3RlZCkgewotICBFWFBFQ1RfU1RSRVEoIihudWxsKSIsCi0gICAgICAgICAgICAgICBT
dHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChOVUxMKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NU
UkVRKCJMXCJcIiIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3Rl
ZChMIiIpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIkxcImZvb1wiIiwKLSAgICAgICAgICAg
ICAgIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVvdGVkKEwiZm9vIikuY19zdHIoKSk7Ci19Ci0K
LSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklM
RQogVEVTVChTdHJpbmdUZXN0LCBBbnNpQW5kVXRmMTZOdWxsKSB7CiAgIEVYUEVDVF9FUShOVUxM
LCBTdHJpbmc6OkFuc2lUb1V0ZjE2KE5VTEwpKTsKICAgRVhQRUNUX0VRKE5VTEwsIFN0cmluZzo6
VXRmMTZUb0Fuc2koTlVMTCkpOwpAQCAtMTIwMyw3ICsxMDU5LDcgQEAgVEVTVChTdHJpbmdUZXN0
LCBBbnNpQW5kVXRmMTZDb252ZXJ0UGF0aENoYXJzKSB7CiAgIEVYUEVDVF9FUSgwLCB3Y3NuY21w
KEwiLjpcXCBcIio/IiwgdXRmMTYsIDMpKTsKICAgZGVsZXRlIFtdIHV0ZjE2OwogfQotI2VuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKIAogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKQEAgLTEzMTcsNiArMTE3
MywxNyBAQCBURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc0ZhdGFsRmFsaXVy
ZSkgewogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRGYXRhbEZhaWx1cmUoKSwgIkV4cGVjdGVk
IGZhdGFsIGZhaWx1cmUuIik7CiB9CiAKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworVEVT
VF9GKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEFjY2VwdHNTdHJpbmdPYmplY3QpIHsKKyAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmF0YWxGYWlsdXJlKCksIDo6c3RyaW5nKCJFeHBlY3RlZCBm
YXRhbCBmYWlsdXJlLiIpKTsKK30KKyNlbmRpZgorCitURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdCwgQWNjZXB0c1N0ZFN0cmluZ09iamVjdCkgeworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShB
ZGRGYXRhbEZhaWx1cmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6OnN0cmluZygi
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKSk7Cit9CisKIFRFU1RfRihFeHBlY3RGYXRhbEZhaWx1
cmVUZXN0LCBDYXRjaGVzRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzKSB7CiAgIC8vIFdlIGhhdmUg
YW5vdGhlciB0ZXN0IGJlbG93IHRvIHZlcmlmeSB0aGF0IHRoZSBtYWNybyBjYXRjaGVzIGZhdGFs
CiAgIC8vIGZhaWx1cmVzIGdlbmVyYXRlZCBvbiBhbm90aGVyIHRocmVhZC4KQEAgLTEzMjYsNyAr
MTE5Myw3IEBAIFRFU1RfRihFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBDYXRjaGVzRmF0YWxGYWls
dXJlT25BbGxUaHJlYWRzKSB7CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFNpbGVuY2VzIHdh
cm5pbmdzOiAiQ29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlIgotI3ByYWdtYSBvcHRpb24gcHVzaCAt
dy1jY2MKKyMgcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYwogI2VuZGlmCiAKIC8vIFRlc3RzIHRo
YXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBjYW4gYmUgdXNlZCBpbiBhIG5vbi12b2lkCkBAIC0x
MzU0LDcgKzEyMjEsNyBAQCB2b2lkIERvZXNOb3RBYm9ydEhlbHBlcihib29sKiBhYm9ydGVkKSB7
CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZp
b3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXBwcmVzc2VkIHRoZW0uCi0jcHJhZ21hIG9wdGlv
biBwb3AKKyMgcHJhZ21hIG9wdGlvbiBwb3AKICNlbmRpZgogCiBURVNUX0YoRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdCwgRG9lc05vdEFib3J0KSB7CkBAIC0xMzcxLDggKzEyMzgsOCBAQCBzdGF0aWMg
aW50IGdsb2JhbF92YXIgPSAwOwogI2RlZmluZSBHVEVTVF9VU0VfVU5QUk9URUNURURfQ09NTUFf
IGdsb2JhbF92YXIrKywgZ2xvYmFsX3ZhcisrCiAKIFRFU1RfRihFeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LCBBY2NlcHRzTWFjcm9UaGF0RXhwYW5kc1RvVW5wcm90ZWN0ZWRDb21tYSkgewotI2lmICFk
ZWZpbmVkKF9fQk9STEFORENfXykgfHwgX19CT1JMQU5EQ19fID49IDB4NjAwCi0gIC8vIElDRSdz
IGluIEMrK0J1aWxkZXIgMjAwNy4KKyNpZm5kZWYgX19CT1JMQU5EQ19fCisgIC8vIElDRSdzIGlu
IEMrK0J1aWxkZXIuCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKICAgICBHVEVTVF9VU0VfVU5Q
Uk9URUNURURfQ09NTUFfOwogICAgIEFkZEZhdGFsRmFpbHVyZSgpOwpAQCAtMTM5NCw2ICsxMjYx
LDE4IEBAIFRFU1RfRihFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBDYXRjaGVzTm9uZmF0YWxG
YWlsdXJlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBub24tZmF0YWwg
ZmFpbHVyZS4iKTsKIH0KIAorI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCitURVNUX0YoRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQWNjZXB0c1N0cmluZ09iamVjdCkgeworICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShBZGROb25mYXRhbEZhaWx1cmUoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgOjpzdHJpbmcoIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpKTsKK30KKyNl
bmRpZgorCitURVNUX0YoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQWNjZXB0c1N0ZFN0cmlu
Z09iamVjdCkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBZGROb25mYXRhbEZhaWx1cmUo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6OnN0cmluZygiRXhwZWN0ZWQgbm9u
LWZhdGFsIGZhaWx1cmUuIikpOworfQorCiBURVNUX0YoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVz
dCwgQ2F0Y2hlc05vbmZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcykgewogICAvLyBXZSBoYXZlIGFu
b3RoZXIgdGVzdCBiZWxvdyB0byB2ZXJpZnkgdGhhdCB0aGUgbWFjcm8gY2F0Y2hlcwogICAvLyBu
b24tZmF0YWwgZmFpbHVyZXMgZ2VuZXJhdGVkIG9uIGFub3RoZXIgdGhyZWFkLgpAQCAtMTU2Niw3
ICsxNDQ1LDcgQEAgVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBOb1Byb3BlcnRpZXNGb3Vu
ZFdoZW5Ob25lQXJlQWRkZWQpIHsKIFRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgT25lUHJv
cGVydHlGb3VuZFdoZW5BZGRlZCkgewogICBUZXN0UmVzdWx0IHRlc3RfcmVzdWx0OwogICBUZXN0
UHJvcGVydHkgcHJvcGVydHkoImtleV8xIiwgIjEiKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpS
ZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5KTsKKyAgVGVzdFJlc3VsdEFjY2Vz
c29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5KTsK
ICAgQVNTRVJUX0VRKDEsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKSk7CiAgIGNv
bnN0IFRlc3RQcm9wZXJ0eSYgYWN0dWFsX3Byb3BlcnR5ID0gdGVzdF9yZXN1bHQuR2V0VGVzdFBy
b3BlcnR5KDApOwogICBFWFBFQ1RfU1RSRVEoImtleV8xIiwgYWN0dWFsX3Byb3BlcnR5LmtleSgp
KTsKQEAgLTE1NzgsOCArMTQ1Nyw4IEBAIFRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgTXVs
dGlwbGVQcm9wZXJ0aWVzRm91bmRXaGVuQWRkZWQpIHsKICAgVGVzdFJlc3VsdCB0ZXN0X3Jlc3Vs
dDsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzEoImtleV8xIiwgIjEiKTsKICAgVGVzdFByb3Bl
cnR5IHByb3BlcnR5XzIoImtleV8yIiwgIjIiKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNv
cmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzEpOwotICBUZXN0UmVzdWx0QWNjZXNz
b3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMik7CisgIFRlc3RSZXN1
bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9w
ZXJ0eV8xKTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1
bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzIpOwogICBBU1NFUlRfRVEoMiwgdGVzdF9yZXN1bHQu
dGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKICAgY29uc3QgVGVzdFByb3BlcnR5JiBhY3R1YWxfcHJv
cGVydHlfMSA9IHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgwKTsKICAgRVhQRUNUX1NUUkVR
KCJrZXlfMSIsIGFjdHVhbF9wcm9wZXJ0eV8xLmtleSgpKTsKQEAgLTE1OTcsMTAgKzE0NzYsMTAg
QEAgVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBPdmVycmlkZXNWYWx1ZXNGb3JEdXBsaWNh
dGVLZXlzKSB7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8yXzEoImtleV8yIiwgIjIiKTsKICAg
VGVzdFByb3BlcnR5IHByb3BlcnR5XzFfMigia2V5XzEiLCAiMTIiKTsKICAgVGVzdFByb3BlcnR5
IHByb3BlcnR5XzJfMigia2V5XzIiLCAiMjIiKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNv
cmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzFfMSk7Ci0gIFRlc3RSZXN1bHRBY2Nl
c3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9wZXJ0eV8yXzEpOwotICBUZXN0
UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMV8y
KTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHBy
b3BlcnR5XzJfMik7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3Rf
cmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8xXzEpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6
OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMl8xKTsK
KyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0
Y2FzZSIsIHByb3BlcnR5XzFfMik7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVy
dHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8yXzIpOwogCiAgIEFTU0VSVF9F
USgyLCB0ZXN0X3Jlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwogICBjb25zdCBUZXN0UHJv
cGVydHkmIGFjdHVhbF9wcm9wZXJ0eV8xID0gdGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KDAp
OwpAQCAtMTYxMywxNCArMTQ5MiwxNCBAQCBURVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIE92
ZXJyaWRlc1ZhbHVlc0ZvckR1cGxpY2F0ZUtleXMpIHsKIH0KIAogLy8gVGVzdHMgVGVzdFJlc3Vs
dDo6R2V0VGVzdFByb3BlcnR5KCkuCi1URVNUKFRlc3RSZXN1bHRQcm9wZXJ0eURlYXRoVGVzdCwg
R2V0VGVzdFByb3BlcnR5KSB7CitURVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIEdldFRlc3RQ
cm9wZXJ0eSkgewogICBUZXN0UmVzdWx0IHRlc3RfcmVzdWx0OwogICBUZXN0UHJvcGVydHkgcHJv
cGVydHlfMSgia2V5XzEiLCAiMSIpOwogICBUZXN0UHJvcGVydHkgcHJvcGVydHlfMigia2V5XzIi
LCAiMiIpOwogICBUZXN0UHJvcGVydHkgcHJvcGVydHlfMygia2V5XzMiLCAiMyIpOwotICBUZXN0
UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMSk7
Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9w
ZXJ0eV8yKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1
bHQsIHByb3BlcnR5XzMpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0
ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMSk7CisgIFRlc3RSZXN1bHRBY2Nlc3Nv
cjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8yKTsK
KyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0
Y2FzZSIsIHByb3BlcnR5XzMpOwogCiAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgZmV0Y2hlZF9wcm9w
ZXJ0eV8xID0gdGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KDApOwogICBjb25zdCBUZXN0UHJv
cGVydHkmIGZldGNoZWRfcHJvcGVydHlfMiA9IHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgx
KTsKQEAgLTE2MzksNDEgKzE1MTgsMTUgQEAgVEVTVChUZXN0UmVzdWx0UHJvcGVydHlEZWF0aFRl
c3QsIEdldFRlc3RQcm9wZXJ0eSkgewogICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHRlc3Rf
cmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgtMSksICIiKTsKIH0KIAotLy8gV2hlbiBhIHByb3BlcnR5
IHVzaW5nIGEgcmVzZXJ2ZWQga2V5IGlzIHN1cHBsaWVkIHRvIHRoaXMgZnVuY3Rpb24sIGl0IHRl
c3RzCi0vLyB0aGF0IGEgbm9uLWZhdGFsIGZhaWx1cmUgaXMgYWRkZWQsIGEgZmF0YWwgZmFpbHVy
ZSBpcyBub3QgYWRkZWQsIGFuZCB0aGF0IHRoZQotLy8gcHJvcGVydHkgaXMgbm90IHJlY29yZGVk
Lgotdm9pZCBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZl
ZEtleShjb25zdCBjaGFyKiBrZXkpIHsKLSAgVGVzdFJlc3VsdCB0ZXN0X3Jlc3VsdDsKLSAgVGVz
dFByb3BlcnR5IHByb3BlcnR5KGtleSwgIjEiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
Ci0gICAgICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwg
cHJvcGVydHkpLAotICAgICAgIlJlc2VydmVkIGtleSIpOwotICBBU1NFUlRfRVEoMCwgdGVzdF9y
ZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpKSA8PCAiTm90IHJlY29yZGVkIjsKLX0KLQotLy8g
QXR0ZW1wdGluZyB0byByZWNvcmRpbmcgYSBwcm9wZXJ0eSB3aXRoIHRoZSBSZXNlcnZlZCBsaXRl
cmFsICJuYW1lIgotLy8gc2hvdWxkIGFkZCBhIG5vbi1mYXRhbCBmYWlsdXJlIGFuZCB0aGUgcHJv
cGVydHkgc2hvdWxkIG5vdCBiZSByZWNvcmRlZC4KLVRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVz
dCwgQWRkRmFpbHVyZVdoZW5Vc2luZ1Jlc2VydmVkS2V5Q2FsbGVkTmFtZSkgewotICBFeHBlY3RO
b25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgibmFtZSIpOwot
fQotCi0vLyBBdHRlbXB0aW5nIHRvIHJlY29yZGluZyBhIHByb3BlcnR5IHdpdGggdGhlIFJlc2Vy
dmVkIGxpdGVyYWwgInN0YXR1cyIKLS8vIHNob3VsZCBhZGQgYSBub24tZmF0YWwgZmFpbHVyZSBh
bmQgdGhlIHByb3BlcnR5IHNob3VsZCBub3QgYmUgcmVjb3JkZWQuCi1URVNUKFRlc3RSZXN1bHRQ
cm9wZXJ0eVRlc3QsIEFkZEZhaWx1cmVXaGVuVXNpbmdSZXNlcnZlZEtleUNhbGxlZFN0YXR1cykg
ewotICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtl
eSgic3RhdHVzIik7Ci19Ci0KLS8vIEF0dGVtcHRpbmcgdG8gcmVjb3JkaW5nIGEgcHJvcGVydHkg
d2l0aCB0aGUgUmVzZXJ2ZWQgbGl0ZXJhbCAidGltZSIKLS8vIHNob3VsZCBhZGQgYSBub24tZmF0
YWwgZmFpbHVyZSBhbmQgdGhlIHByb3BlcnR5IHNob3VsZCBub3QgYmUgcmVjb3JkZWQuCi1URVNU
KFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIEFkZEZhaWx1cmVXaGVuVXNpbmdSZXNlcnZlZEtleUNh
bGxlZFRpbWUpIHsKLSAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRo
UmVzZXJ2ZWRLZXkoInRpbWUiKTsKLX0KLQotLy8gQXR0ZW1wdGluZyB0byByZWNvcmRpbmcgYSBw
cm9wZXJ0eSB3aXRoIHRoZSBSZXNlcnZlZCBsaXRlcmFsICJjbGFzc25hbWUiCi0vLyBzaG91bGQg
YWRkIGEgbm9uLWZhdGFsIGZhaWx1cmUgYW5kIHRoZSBwcm9wZXJ0eSBzaG91bGQgbm90IGJlIHJl
Y29yZGVkLgotVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBBZGRGYWlsdXJlV2hlblVzaW5n
UmVzZXJ2ZWRLZXlDYWxsZWRDbGFzc25hbWUpIHsKLSAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVj
b3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoImNsYXNzbmFtZSIpOwotfQorLy8gVGVzdHMg
dGhlIFRlc3QgY2xhc3MuCisvLworLy8gSXQncyBkaWZmaWN1bHQgdG8gdGVzdCBldmVyeSBwdWJs
aWMgbWV0aG9kIG9mIHRoaXMgY2xhc3MgKHdlIGFyZQorLy8gYWxyZWFkeSBzdHJldGNoaW5nIHRo
ZSBsaW1pdCBvZiBHb29nbGUgVGVzdCBieSB1c2luZyBpdCB0byB0ZXN0IGl0c2VsZiEpLgorLy8g
Rm9ydHVuYXRlbHksIHdlIGRvbid0IGhhdmUgdG8gZG8gdGhhdCwgYXMgd2UgYXJlIGFscmVhZHkg
dGVzdGluZworLy8gdGhlIGZ1bmN0aW9uYWxpdGllcyBvZiB0aGUgVGVzdCBjbGFzcyBleHRlbnNp
dmVseSBieSB1c2luZyBHb29nbGUgVGVzdAorLy8gYWxvbmUuCisvLworLy8gVGhlcmVmb3JlLCB0
aGlzIHNlY3Rpb24gb25seSBjb250YWlucyBvbmUgdGVzdC4KIAogLy8gVGVzdHMgdGhhdCBHVGVz
dEZsYWdTYXZlciB3b3JrcyBvbiBXaW5kb3dzIGFuZCBNYWMuCiAKQEAgLTE2OTgsNiArMTU1MSw3
IEBAIGNsYXNzIEdUZXN0RmxhZ1NhdmVyVGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICBHVEVTVF9G
TEFHKHJlcGVhdCkgPSAxOwogICAgIEdURVNUX0ZMQUcoc2h1ZmZsZSkgPSBmYWxzZTsKICAgICBH
VEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSA9IGtNYXhTdGFja1RyYWNlRGVwdGg7CisgICAg
R1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSA9ICIiOwogICAgIEdURVNUX0ZMQUcodGhyb3df
b25fZmFpbHVyZSkgPSBmYWxzZTsKICAgfQogCkBAIC0xNzI0LDYgKzE1NzgsNyBAQCBjbGFzcyBH
VGVzdEZsYWdTYXZlclRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgRVhQRUNUX0VRKDEsIEdURVNU
X0ZMQUcocmVwZWF0KSk7CiAgICAgRVhQRUNUX0ZBTFNFKEdURVNUX0ZMQUcoc2h1ZmZsZSkpOwog
ICAgIEVYUEVDVF9FUShrTWF4U3RhY2tUcmFjZURlcHRoLCBHVEVTVF9GTEFHKHN0YWNrX3RyYWNl
X2RlcHRoKSk7CisgICAgRVhQRUNUX1NUUkVRKCIiLCBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRf
dG8pLmNfc3RyKCkpOwogICAgIEVYUEVDVF9GQUxTRShHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1
cmUpKTsKIAogICAgIEdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpID0gdHJ1ZTsK
QEAgLTE3MzksOCArMTU5NCwxMCBAQCBjbGFzcyBHVGVzdEZsYWdTYXZlclRlc3QgOiBwdWJsaWMg
VGVzdCB7CiAgICAgR1RFU1RfRkxBRyhyZXBlYXQpID0gMTAwOwogICAgIEdURVNUX0ZMQUcoc2h1
ZmZsZSkgPSB0cnVlOwogICAgIEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpID0gMTsKKyAg
ICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pID0gImxvY2FsaG9zdDoxMjM0IjsKICAgICBH
VEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1ZTsKICAgfQorCiAgcHJpdmF0ZToKICAg
Ly8gRm9yIHNhdmluZyBHb29nbGUgVGVzdCBmbGFncyBkdXJpbmcgdGhpcyB0ZXN0IGNhc2UuCiAg
IHN0YXRpYyBHVGVzdEZsYWdTYXZlciogc2F2ZXJfOwpAQCAtMTc3MywxNSArMTYzMCwxNiBAQCBz
dGF0aWMgdm9pZCBTZXRFbnYoY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogdmFsdWUpIHsK
ICAgLy8gQysrQnVpbGRlcidzIHB1dGVudiBvbmx5IHN0b3JlcyBhIHBvaW50ZXIgdG8gaXRzIHBh
cmFtZXRlcjsgd2UgaGF2ZSB0bwogICAvLyBlbnN1cmUgdGhhdCB0aGUgc3RyaW5nIHJlbWFpbnMg
dmFsaWQgYXMgbG9uZyBhcyBpdCBtaWdodCBiZSBuZWVkZWQuCiAgIC8vIFdlIHVzZSBhbiBzdGQ6
Om1hcCB0byBkbyBzby4KLSAgc3RhdGljIHN0ZDo6bWFwPFN0cmluZywgU3RyaW5nKj4gYWRkZWRf
ZW52OworICBzdGF0aWMgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nKj4gYWRkZWRf
ZW52OwogCiAgIC8vIEJlY2F1c2UgcHV0ZW52IHN0b3JlcyBhIHBvaW50ZXIgdG8gdGhlIHN0cmlu
ZyBidWZmZXIsIHdlIGNhbid0IGRlbGV0ZSB0aGUKICAgLy8gcHJldmlvdXMgc3RyaW5nIChpZiBw
cmVzZW50KSB1bnRpbCBhZnRlciBpdCdzIHJlcGxhY2VkLgotICBTdHJpbmcgKnByZXZfZW52ID0g
TlVMTDsKKyAgc3RkOjpzdHJpbmcgKnByZXZfZW52ID0gTlVMTDsKICAgaWYgKGFkZGVkX2Vudi5m
aW5kKG5hbWUpICE9IGFkZGVkX2Vudi5lbmQoKSkgewogICAgIHByZXZfZW52ID0gYWRkZWRfZW52
W25hbWVdOwogICB9Ci0gIGFkZGVkX2VudltuYW1lXSA9IG5ldyBTdHJpbmcoKE1lc3NhZ2UoKSA8
PCBuYW1lIDw8ICI9IiA8PCB2YWx1ZSkuR2V0U3RyaW5nKCkpOworICBhZGRlZF9lbnZbbmFtZV0g
PSBuZXcgc3RkOjpzdHJpbmcoCisgICAgICAoTWVzc2FnZSgpIDw8IG5hbWUgPDwgIj0iIDw8IHZh
bHVlKS5HZXRTdHJpbmcoKSk7CiAKICAgLy8gVGhlIHN0YW5kYXJkIHNpZ25hdHVyZSBvZiBwdXRl
bnYgYWNjZXB0cyBhICdjaGFyKicgYXJndW1lbnQuIE90aGVyCiAgIC8vIGltcGxlbWVudGF0aW9u
cywgbGlrZSBDKytCdWlsZGVyJ3MsIGFjY2VwdCBhICdjb25zdCBjaGFyKicuCkBAIC0xODEzLDYg
KzE2NzEsOCBAQCBURVNUKEludDMyRnJvbUdUZXN0RW52VGVzdCwgUmV0dXJuc0RlZmF1bHRXaGVu
VmFyaWFibGVJc05vdFNldCkgewogICBFWFBFQ1RfRVEoMTAsIEludDMyRnJvbUdUZXN0RW52KCJ0
ZW1wIiwgMTApKTsKIH0KIAorIyBpZiAhZGVmaW5lZChHVEVTVF9HRVRfSU5UMzJfRlJPTV9FTlZf
KQorCiAvLyBUZXN0cyB0aGF0IEludDMyRnJvbUdUZXN0RW52KCkgcmV0dXJucyB0aGUgZGVmYXVs
dCB2YWx1ZSB3aGVuIHRoZQogLy8gZW52aXJvbm1lbnQgdmFyaWFibGUgb3ZlcmZsb3dzIGFzIGFu
IEludDMyLgogVEVTVChJbnQzMkZyb21HVGVzdEVudlRlc3QsIFJldHVybnNEZWZhdWx0V2hlblZh
bHVlT3ZlcmZsb3dzKSB7CkBAIC0xODM3LDYgKzE2OTcsOCBAQCBURVNUKEludDMyRnJvbUdUZXN0
RW52VGVzdCwgUmV0dXJuc0RlZmF1bHRXaGVuVmFsdWVJc0ludmFsaWQpIHsKICAgRVhQRUNUX0VR
KDUwLCBJbnQzMkZyb21HVGVzdEVudigidGVtcCIsIDUwKSk7CiB9CiAKKyMgZW5kaWYgIC8vICFk
ZWZpbmVkKEdURVNUX0dFVF9JTlQzMl9GUk9NX0VOVl8pCisKIC8vIFRlc3RzIHRoYXQgSW50MzJG
cm9tR1Rlc3RFbnYoKSBwYXJzZXMgYW5kIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZQogLy8gZW52
aXJvbm1lbnQgdmFyaWFibGUgd2hlbiBpdCByZXByZXNlbnRzIGEgdmFsaWQgZGVjaW1hbCBpbnRl
Z2VyIGluCiAvLyB0aGUgcmFuZ2Ugb2YgYW4gSW50MzIuCkBAIC0yMDcwLDYgKzE5MzIsMTczIEBA
IFRFU1QoVW5pdFRlc3RUZXN0LCBDYW5HZXRPcmlnaW5hbFdvcmtpbmdEaXIpIHsKICAgRVhQRUNU
X1NUUk5FKFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5nX2RpcigpLCAi
Iik7CiB9CiAKK1RFU1QoVW5pdFRlc3RUZXN0LCBSZXR1cm5zUGxhdXNpYmxlVGltZXN0YW1wKSB7
CisgIEVYUEVDVF9MVCgwLCBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+c3RhcnRfdGltZXN0YW1w
KCkpOworICBFWFBFQ1RfTEUoVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnN0YXJ0X3RpbWVzdGFt
cCgpLCBHZXRUaW1lSW5NaWxsaXMoKSk7Cit9CisKKy8vIFdoZW4gYSBwcm9wZXJ0eSB1c2luZyBh
IHJlc2VydmVkIGtleSBpcyBzdXBwbGllZCB0byB0aGlzIGZ1bmN0aW9uLCBpdAorLy8gdGVzdHMg
dGhhdCBhIG5vbi1mYXRhbCBmYWlsdXJlIGlzIGFkZGVkLCBhIGZhdGFsIGZhaWx1cmUgaXMgbm90
IGFkZGVkLAorLy8gYW5kIHRoYXQgdGhlIHByb3BlcnR5IGlzIG5vdCByZWNvcmRlZC4KK3ZvaWQg
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoCisg
ICAgY29uc3QgVGVzdFJlc3VsdCYgdGVzdF9yZXN1bHQsIGNvbnN0IGNoYXIqIGtleSkgeworICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShUZXN0OjpSZWNvcmRQcm9wZXJ0eShrZXksICIxIiksICJS
ZXNlcnZlZCBrZXkiKTsKKyAgQVNTRVJUX0VRKDAsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlf
Y291bnQoKSkgPDwgIlByb3BlcnR5IGZvciBrZXkgJyIgPDwga2V5CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICInIHJlY29yZGVkIHVuZXhwZWN0
ZWRseS4iOworfQorCit2b2lkIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5
V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgY29uc3QgY2hhcioga2V5KSB7Cisg
IGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8gPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3Vy
cmVudF90ZXN0X2luZm8oKTsKKyAgQVNTRVJUX1RSVUUodGVzdF9pbmZvICE9IE5VTEwpOworICBF
eHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgqdGVz
dF9pbmZvLT5yZXN1bHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga2V5KTsKK30KKwordm9pZCBFeHBlY3ROb25GYXRhbEZhaWx1cmVS
ZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICBj
b25zdCBjaGFyKiBrZXkpIHsKKyAgY29uc3QgVGVzdENhc2UqIHRlc3RfY2FzZSA9IFVuaXRUZXN0
OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfY2FzZSgpOworICBBU1NFUlRfVFJVRSh0ZXN0
X2Nhc2UgIT0gTlVMTCk7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5
V2l0aFJlc2VydmVkS2V5KAorICAgICAgdGVzdF9jYXNlLT5hZF9ob2NfdGVzdF9yZXN1bHQoKSwg
a2V5KTsKK30KKwordm9pZCBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdp
dGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgIGNvbnN0IGNoYXIqIGtleSkgewor
ICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgK
KyAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5hZF9ob2NfdGVzdF9yZXN1bHQoKSwga2V5
KTsKK30KKworLy8gVGVzdHMgdGhhdCBwcm9wZXJ0eSByZWNvcmRpbmcgZnVuY3Rpb25zIGluIFVu
aXRUZXN0IG91dHNpZGUgb2YgdGVzdHMKKy8vIGZ1bmN0aW9ucyBjb3JyZWNseS4gIENyZWF0aW5n
IGEgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgVW5pdFRlc3QgZW5zdXJlcyBpdAorLy8gaXMgaW4gYSBz
dGF0ZSBzaW1pbGFyIHRvIHRoZSBVbml0VGVzdCdzIHNpbmdsZXRvbidzIGJldHdlZW4gdGVzdHMu
CitjbGFzcyBVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdCA6CisgICAgcHVibGljIHRlc3Rpbmc6
OmludGVybmFsOjpVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdEhlbHBlciB7CisgcHVibGljOgor
ICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgeworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVy
ZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAorICAg
ICAgICAiZGlzYWJsZWQiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9w
ZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICAgICAgImVycm9ycyIp
OworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVk
S2V5Rm9yQ3VycmVudFRlc3RDYXNlKAorICAgICAgICAiZmFpbHVyZXMiKTsKKyAgICBFeHBlY3RO
b25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRU
ZXN0Q2FzZSgKKyAgICAgICAgIm5hbWUiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNv
cmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICAgICAg
InRlc3RzIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRo
UmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdENhc2UoCisgICAgICAgICJ0aW1lIik7CisKKyAgICBU
ZXN0OjpSZWNvcmRQcm9wZXJ0eSgidGVzdF9jYXNlX2tleV8xIiwgIjEiKTsKKyAgICBjb25zdCBU
ZXN0Q2FzZSogdGVzdF9jYXNlID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVz
dF9jYXNlKCk7CisgICAgQVNTRVJUX1RSVUUodGVzdF9jYXNlICE9IE5VTEwpOworCisgICAgQVNT
RVJUX0VRKDEsIHRlc3RfY2FzZS0+YWRfaG9jX3Rlc3RfcmVzdWx0KCkudGVzdF9wcm9wZXJ0eV9j
b3VudCgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInRlc3RfY2FzZV9rZXlfMSIsCisgICAgICAgICAg
ICAgICAgIHRlc3RfY2FzZS0+YWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDAp
LmtleSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIjEiLAorICAgICAgICAgICAgICAgICB0ZXN0X2Nh
c2UtPmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKKyAg
fQorfTsKKworLy8gVGVzdHMgVGVzdFJlc3VsdCBoYXMgdGhlIGV4cGVjdGVkIHByb3BlcnR5IHdo
ZW4gYWRkZWQuCitURVNUX0YoVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3QsIE9uZVByb3BlcnR5
Rm91bmRXaGVuQWRkZWQpIHsKKyAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzEiLCAiMSIp
OworCisgIEFTU0VSVF9FUSgxLCB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLnRlc3Rf
cHJvcGVydHlfY291bnQoKSk7CisKKyAgRVhQRUNUX1NUUkVRKCJrZXlfMSIsCisgICAgICAgICAg
ICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS5r
ZXkoKSk7CisgIEVYUEVDVF9TVFJFUSgiMSIsCisgICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFk
X2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKK30KKworLy8g
VGVzdHMgVGVzdFJlc3VsdCBoYXMgbXVsdGlwbGUgcHJvcGVydGllcyB3aGVuIGFkZGVkLgorVEVT
VF9GKFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0LCBNdWx0aXBsZVByb3BlcnRpZXNGb3VuZFdo
ZW5BZGRlZCkgeworICBVbml0VGVzdFJlY29yZFByb3BlcnR5KCJrZXlfMSIsICIxIik7CisgIFVu
aXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8yIiwgIjIiKTsKKworICBBU1NFUlRfRVEoMiwgdW5p
dF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOworCisg
IEVYUEVDVF9TVFJFUSgia2V5XzEiLAorICAgICAgICAgICAgICAgdW5pdF90ZXN0Xy5hZF9ob2Nf
dGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMCkua2V5KCkpOworICBFWFBFQ1RfU1RSRVEo
IjEiLCB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52
YWx1ZSgpKTsKKworICBFWFBFQ1RfU1RSRVEoImtleV8yIiwKKyAgICAgICAgICAgICAgIHVuaXRf
dGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDEpLmtleSgpKTsKKyAg
RVhQRUNUX1NUUkVRKCIyIiwgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0
UHJvcGVydHkoMSkudmFsdWUoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RSZXN1bHQ6OlJlY29yZFBy
b3BlcnR5KCkgb3ZlcnJpZGVzIHZhbHVlcyBmb3IgZHVwbGljYXRlIGtleXMuCitURVNUX0YoVW5p
dFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3QsIE92ZXJyaWRlc1ZhbHVlc0ZvckR1cGxpY2F0ZUtleXMp
IHsKKyAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzEiLCAiMSIpOworICBVbml0VGVzdFJl
Y29yZFByb3BlcnR5KCJrZXlfMiIsICIyIik7CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoImtl
eV8xIiwgIjEyIik7CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8yIiwgIjIyIik7CisK
KyAgQVNTRVJUX0VRKDIsIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkudGVzdF9wcm9w
ZXJ0eV9jb3VudCgpKTsKKworICBFWFBFQ1RfU1RSRVEoImtleV8xIiwKKyAgICAgICAgICAgICAg
IHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLmtleSgp
KTsKKyAgRVhQRUNUX1NUUkVRKCIxMiIsCisgICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hv
Y190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKKworICBFWFBFQ1Rf
U1RSRVEoImtleV8yIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVz
dWx0KCkuR2V0VGVzdFByb3BlcnR5KDEpLmtleSgpKTsKKyAgRVhQRUNUX1NUUkVRKCIyMiIsCisg
ICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9w
ZXJ0eSgxKS52YWx1ZSgpKTsKK30KKworVEVTVF9GKFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0
LAorICAgICAgIEFkZEZhaWx1cmVJbnNpZGVUZXN0c1doZW5Vc2luZ1Rlc3RDYXNlUmVzZXJ2ZWRL
ZXlzKSB7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2Vy
dmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgICAibmFtZSIpOworICBFeHBlY3ROb25GYXRhbEZh
aWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0KAorICAg
ICAgInZhbHVlX3BhcmFtIik7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3Bl
cnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgICAidHlwZV9wYXJhbSIpOwor
ICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZv
ckN1cnJlbnRUZXN0KAorICAgICAgInN0YXR1cyIpOworICBFeHBlY3ROb25GYXRhbEZhaWx1cmVS
ZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0KAorICAgICAgInRp
bWUiKTsKKyAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2
ZWRLZXlGb3JDdXJyZW50VGVzdCgKKyAgICAgICJjbGFzc25hbWUiKTsKK30KKworVEVTVF9GKFVu
aXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0LAorICAgICAgIEFkZFJlY29yZFdpdGhSZXNlcnZlZEtl
eXNHZW5lcmF0ZXNDb3JyZWN0UHJvcGVydHlMaXN0KSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKAorICAgICAgVGVzdDo6UmVjb3JkUHJvcGVydHkoIm5hbWUiLCAiMSIpLAorICAgICAgIidj
bGFzc25hbWUnLCAnbmFtZScsICdzdGF0dXMnLCAndGltZScsICd0eXBlX3BhcmFtJywgYW5kICd2
YWx1ZV9wYXJhbSciCisgICAgICAiIGFyZSByZXNlcnZlZCIpOworfQorCitjbGFzcyBVbml0VGVz
dFJlY29yZFByb3BlcnR5VGVzdEVudmlyb25tZW50IDogcHVibGljIEVudmlyb25tZW50IHsKKyBw
dWJsaWM6CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBFeHBlY3ROb25GYXRhbEZh
aWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAor
ICAgICAgICAidGVzdHMiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9w
ZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgICAgICAiZmFpbHVyZXMi
KTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZl
ZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgICAgICAiZGlzYWJsZWQiKTsKKyAgICBFeHBlY3RO
b25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRl
c3RDYXNlKAorICAgICAgICAiZXJyb3JzIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVj
b3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAg
Im5hbWUiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhS
ZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgICAgICAidGltZXN0YW1wIik7CisgICAg
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRz
aWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgInRpbWUiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1
cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAg
ICAgICAicmFuZG9tX3NlZWQiKTsKKyAgfQorfTsKKworLy8gVGhpcyB3aWxsIHRlc3QgcHJvcGVy
dHkgcmVjb3JkaW5nIG91dHNpZGUgb2YgYW55IHRlc3Qgb3IgdGVzdCBjYXNlLgorc3RhdGljIEVu
dmlyb25tZW50KiByZWNvcmRfcHJvcGVydHlfZW52ID0KKyAgICBBZGRHbG9iYWxUZXN0RW52aXJv
bm1lbnQobmV3IFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0RW52aXJvbm1lbnQpOworCiAvLyBU
aGlzIGdyb3VwIG9mIHRlc3RzIGlzIGZvciBwcmVkaWNhdGUgYXNzZXJ0aW9ucyAoQVNTRVJUX1BS
RUQqLCBldGMpCiAvLyBvZiB2YXJpb3VzIGFyaXRpZXMuICBUaGV5IGRvIG5vdCBhdHRlbXB0IHRv
IGJlIGV4aGF1c3RpdmUuICBSYXRoZXIsCiAvLyB2aWV3IHRoZW0gYXMgc21va2UgdGVzdHMgdGhh
dCBjYW4gYmUgZWFzaWx5IHJldmlld2VkIGFuZCB2ZXJpZmllZC4KQEAgLTI0MzcsNyArMjQ2Niw3
IEBAIFRFU1QoU3RyaW5nQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1NUUkNBU0VFUSkgewogCiAgIEFT
U0VSVF9TVFJDQVNFRVEoIiIsICIiKTsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1NU
UkNBU0VFUSgiSGkiLCAiaGkyIiksCi0gICAgICAgICAgICAgICAgICAgICAgICIoaWdub3Jpbmcg
Y2FzZSkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIklnbm9yaW5nIGNhc2UiKTsKIH0KIAog
Ly8gVGVzdHMgQVNTRVJUX1NUUkNBU0VORS4KQEAgLTI0NzUsNiArMjUwNCwxMSBAQCBURVNUKFN0
cmluZ0Fzc2VydGlvblRlc3QsIFNUUkVRX1dpZGUpIHsKICAgLy8gU3RyaW5ncyBjb250YWluaW5n
IHdpZGUgY2hhcmFjdGVycy4KICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1NUUkVR
KEwiYWJjXHg4MTE5IiwgTCJhYmNceDgxMjAiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImFiYyIpOworCisgIC8vIFRoZSBzdHJlYW1pbmcgdmFyaWF0aW9uLgorICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfU1RSRVEoTCJhYmNceDgxMTkiLCBM
ImFiY1x4ODEyMSIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlIjsKKyAgfSwgIkV4cGVjdGVkIGZhaWx1
cmUiKTsKIH0KIAogLy8gVGVzdHMgKl9TVFJORSBvbiB3aWRlIHN0cmluZ3MuCkBAIC0yNTAxLDYg
KzI1MzUsOSBAQCBURVNUKFN0cmluZ0Fzc2VydGlvblRlc3QsIFNUUk5FX1dpZGUpIHsKICAgLy8g
U3RyaW5ncyBjb250YWluaW5nIHdpZGUgY2hhcmFjdGVycy4KICAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoRVhQRUNUX1NUUk5FKEwiYWJjXHg4MTE5IiwgTCJhYmNceDgxMTkiKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImFiYyIpOworCisgIC8vIFRoZSBzdHJlYW1pbmcgdmFyaWF0aW9u
LgorICBBU1NFUlRfU1RSTkUoTCJhYmNceDgxMTkiLCBMImFiY1x4ODEyMCIpIDw8ICJUaGlzIHNo
b3VsZG4ndCBoYXBwZW4iOwogfQogCiAvLyBUZXN0cyBmb3IgOjp0ZXN0aW5nOjpJc1N1YnN0cmlu
ZygpLgpAQCAtMjYzMSw3ICsyNjY4LDYgQEAgVEVTVChJc05vdFN1YnN0cmluZ1Rlc3QsIFJldHVy
bnNDb3JyZWN0UmVzdWx0Rm9yU3RkV3N0cmluZykgewogdGVtcGxhdGUgPHR5cGVuYW1lIFJhd1R5
cGU+CiBjbGFzcyBGbG9hdGluZ1BvaW50VGVzdCA6IHB1YmxpYyBUZXN0IHsKICBwcm90ZWN0ZWQ6
Ci0KICAgLy8gUHJlLWNhbGN1bGF0ZWQgbnVtYmVycyB0byBiZSB1c2VkIGJ5IHRoZSB0ZXN0cy4K
ICAgc3RydWN0IFRlc3RWYWx1ZXMgewogICAgIFJhd1R5cGUgY2xvc2VfdG9fcG9zaXRpdmVfemVy
bzsKQEAgLTMyMjQsNyArMzI2MCw3IEBAIFRFU1RfRihTaW5nbGVFdmFsdWF0aW9uVGVzdCwgQVNT
RVJUX1NUUikgewogCiAgIC8vIGZhaWxlZCBFWFBFQ1RfU1RSQ0FTRUVRCiAgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9TVFJDQVNFRVEocDFfKyssIHAyXysrKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgImlnbm9yaW5nIGNhc2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIklnbm9yaW5nIGNhc2UiKTsKICAgRVhQRUNUX0VRKHMxXyArIDIsIHAxXyk7CiAgIEVYUEVD
VF9FUShzMl8gKyAyLCBwMl8pOwogfQpAQCAtMzQxMiw1OSArMzQ0OCwxNTEgQEAgVEVTVF9GKE5v
RmF0YWxGYWlsdXJlVGVzdCwgTWVzc2FnZUlzU3RyZWFtYWJsZSkgewogCiAvLyBUZXN0cyBub24t
c3RyaW5nIGFzc2VydGlvbnMuCiAKK3N0ZDo6c3RyaW5nIEVkaXRzVG9TdHJpbmcoY29uc3Qgc3Rk
Ojp2ZWN0b3I8RWRpdFR5cGU+JiBlZGl0cykgeworICBzdGQ6OnN0cmluZyBvdXQ7CisgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZWRpdHMuc2l6ZSgpOyArK2kpIHsKKyAgICBzdGF0aWMgY29uc3Qg
Y2hhciBrRWRpdHNbXSA9ICIgKy0vIjsKKyAgICBvdXQuYXBwZW5kKDEsIGtFZGl0c1tlZGl0c1tp
XV0pOworICB9CisgIHJldHVybiBvdXQ7Cit9CisKK3N0ZDo6dmVjdG9yPHNpemVfdD4gQ2hhcnNU
b0luZGljZXMoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgeworICBzdGQ6OnZlY3RvcjxzaXplX3Q+
IG91dDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHIuc2l6ZSgpOyArK2kpIHsKKyAgICBv
dXQucHVzaF9iYWNrKHN0cltpXSk7CisgIH0KKyAgcmV0dXJuIG91dDsKK30KKworc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+IENoYXJzVG9MaW5lcyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7Cisg
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBvdXQ7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c3RyLnNpemUoKTsgKytpKSB7CisgICAgb3V0LnB1c2hfYmFjayhzdHIuc3Vic3RyKGksIDEpKTsK
KyAgfQorICByZXR1cm4gb3V0OworfQorCitURVNUKEVkaXREaXN0YW5jZSwgVGVzdENhc2VzKSB7
CisgIHN0cnVjdCBDYXNlIHsKKyAgICBpbnQgbGluZTsKKyAgICBjb25zdCBjaGFyKiBsZWZ0Owor
ICAgIGNvbnN0IGNoYXIqIHJpZ2h0OworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkX2VkaXRzOwor
ICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkX2RpZmY7CisgIH07CisgIHN0YXRpYyBjb25zdCBDYXNl
IGtDYXNlc1tdID0geworICAgICAgLy8gTm8gY2hhbmdlLgorICAgICAge19fTElORV9fLCAiQSIs
ICJBIiwgIiAiLCAiIn0sCisgICAgICB7X19MSU5FX18sICJBQkNERSIsICJBQkNERSIsICIgICAg
ICIsICIifSwKKyAgICAgIC8vIFNpbXBsZSBhZGRzLgorICAgICAge19fTElORV9fLCAiWCIsICJY
QSIsICIgKyIsICJAQCArMSwyIEBAXG4gWFxuK0FcbiJ9LAorICAgICAge19fTElORV9fLCAiWCIs
ICJYQUJDRCIsICIgKysrKyIsICJAQCArMSw1IEBAXG4gWFxuK0FcbitCXG4rQ1xuK0RcbiJ9LAor
ICAgICAgLy8gU2ltcGxlIHJlbW92ZXMuCisgICAgICB7X19MSU5FX18sICJYQSIsICJYIiwgIiAt
IiwgIkBAIC0xLDIgQEBcbiBYXG4tQVxuIn0sCisgICAgICB7X19MSU5FX18sICJYQUJDRCIsICJY
IiwgIiAtLS0tIiwgIkBAIC0xLDUgQEBcbiBYXG4tQVxuLUJcbi1DXG4tRFxuIn0sCisgICAgICAv
LyBTaW1wbGUgcmVwbGFjZXMuCisgICAgICB7X19MSU5FX18sICJBIiwgImEiLCAiLyIsICJAQCAt
MSwxICsxLDEgQEBcbi1BXG4rYVxuIn0sCisgICAgICB7X19MSU5FX18sICJBQkNEIiwgImFiY2Qi
LCAiLy8vLyIsCisgICAgICAgIkBAIC0xLDQgKzEsNCBAQFxuLUFcbi1CXG4tQ1xuLURcbithXG4r
YlxuK2NcbitkXG4ifSwKKyAgICAgIC8vIFBhdGggZmluZGluZy4KKyAgICAgIHtfX0xJTkVfXywg
IkFCQ0RFRkdIIiwgIkFCWEVHSDEiLCAiICAtLyAtICArIiwKKyAgICAgICAiQEAgLTEsOCArMSw3
IEBAXG4gQVxuIEJcbi1DXG4tRFxuK1hcbiBFXG4tRlxuIEdcbiBIXG4rMVxuIn0sCisgICAgICB7
X19MSU5FX18sICJBQUFBQkNDQ0MiLCAiQUJBQkNEQ0RDIiwgIi0gLyAgICsgLyAiLAorICAgICAg
ICJAQCAtMSw5ICsxLDkgQEBcbi1BXG4gQVxuLUFcbitCXG4gQVxuIEJcbiBDXG4rRFxuIENcbi1D
XG4rRFxuIENcbiJ9LAorICAgICAge19fTElORV9fLCAiQUJDREUiLCAiQkNEQ0QiLCAiLSAgICsv
IiwKKyAgICAgICAiQEAgLTEsNSArMSw1IEBAXG4tQVxuIEJcbiBDXG4gRFxuLUVcbitDXG4rRFxu
In0sCisgICAgICB7X19MSU5FX18sICJBQkNERUZHSElKS0wiLCAiQkNEQ0RFRkdKS0xKSyIsICIt
ICsrICAgICAtLSAgICsrIiwKKyAgICAgICAiQEAgLTEsNCArMSw1IEBAXG4tQVxuIEJcbitDXG4r
RFxuIENcbiBEXG4iCisgICAgICAgIkBAIC02LDcgKzcsNyBAQFxuIEZcbiBHXG4tSFxuLUlcbiBK
XG4gS1xuIExcbitKXG4rS1xuIn0sCisgICAgICB7fX07CisgIGZvciAoY29uc3QgQ2FzZSogYyA9
IGtDYXNlczsgYy0+bGVmdDsgKytjKSB7CisgICAgRVhQRUNUX1RSVUUoYy0+ZXhwZWN0ZWRfZWRp
dHMgPT0KKyAgICAgICAgICAgICAgICBFZGl0c1RvU3RyaW5nKENhbGN1bGF0ZU9wdGltYWxFZGl0
cyhDaGFyc1RvSW5kaWNlcyhjLT5sZWZ0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDaGFyc1RvSW5kaWNlcyhjLT5yaWdodCkpKSkKKyAgICAg
ICAgPDwgIkxlZnQgPCIgPDwgYy0+bGVmdCA8PCAiPiBSaWdodCA8IiA8PCBjLT5yaWdodCA8PCAi
PiBFZGl0cyA8IgorICAgICAgICA8PCBFZGl0c1RvU3RyaW5nKENhbGN1bGF0ZU9wdGltYWxFZGl0
cygKKyAgICAgICAgICAgICAgIENoYXJzVG9JbmRpY2VzKGMtPmxlZnQpLCBDaGFyc1RvSW5kaWNl
cyhjLT5yaWdodCkpKSA8PCAiPiI7CisgICAgRVhQRUNUX1RSVUUoYy0+ZXhwZWN0ZWRfZGlmZiA9
PSBDcmVhdGVVbmlmaWVkRGlmZihDaGFyc1RvTGluZXMoYy0+bGVmdCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyc1RvTGluZXMoYy0+
cmlnaHQpKSkKKyAgICAgICAgPDwgIkxlZnQgPCIgPDwgYy0+bGVmdCA8PCAiPiBSaWdodCA8IiA8
PCBjLT5yaWdodCA8PCAiPiBEaWZmIDwiCisgICAgICAgIDw8IENyZWF0ZVVuaWZpZWREaWZmKENo
YXJzVG9MaW5lcyhjLT5sZWZ0KSwgQ2hhcnNUb0xpbmVzKGMtPnJpZ2h0KSkKKyAgICAgICAgPDwg
Ij4iOworICB9Cit9CisKIC8vIFRlc3RzIEVxRmFpbHVyZSgpLCB1c2VkIGZvciBpbXBsZW1lbnRp
bmcgKkVRKiBhc3NlcnRpb25zLgogVEVTVChBc3NlcnRpb25UZXN0LCBFcUZhaWx1cmUpIHsKLSAg
Y29uc3QgU3RyaW5nIGZvb192YWwoIjUiKSwgYmFyX3ZhbCgiNiIpOwotICBjb25zdCBTdHJpbmcg
bXNnMSgKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZm9vX3ZhbCgiNSIpLCBiYXJfdmFsKCI2Iik7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIG1zZzEoCiAgICAgICBFcUZhaWx1cmUoImZvbyIsICJiYXIiLCBm
b29fdmFsLCBiYXJfdmFsLCBmYWxzZSkKICAgICAgIC5mYWlsdXJlX21lc3NhZ2UoKSk7CiAgIEVY
UEVDVF9TVFJFUSgKLSAgICAgICJWYWx1ZSBvZjogYmFyXG4iCi0gICAgICAiICBBY3R1YWw6IDZc
biIKLSAgICAgICJFeHBlY3RlZDogZm9vXG4iCi0gICAgICAiV2hpY2ggaXM6IDUiLAorICAgICAg
IiAgICAgIEV4cGVjdGVkOiBmb29cbiIKKyAgICAgICIgICAgICBXaGljaCBpczogNVxuIgorICAg
ICAgIlRvIGJlIGVxdWFsIHRvOiBiYXJcbiIKKyAgICAgICIgICAgICBXaGljaCBpczogNiIsCiAg
ICAgICBtc2cxLmNfc3RyKCkpOwogCi0gIGNvbnN0IFN0cmluZyBtc2cyKAorICBjb25zdCBzdGQ6
OnN0cmluZyBtc2cyKAogICAgICAgRXFGYWlsdXJlKCJmb28iLCAiNiIsIGZvb192YWwsIGJhcl92
YWwsIGZhbHNlKQogICAgICAgLmZhaWx1cmVfbWVzc2FnZSgpKTsKICAgRVhQRUNUX1NUUkVRKAot
ICAgICAgIlZhbHVlIG9mOiA2XG4iCi0gICAgICAiRXhwZWN0ZWQ6IGZvb1xuIgotICAgICAgIldo
aWNoIGlzOiA1IiwKKyAgICAgICIgICAgICBFeHBlY3RlZDogZm9vXG4iCisgICAgICAiICAgICAg
V2hpY2ggaXM6IDVcbiIKKyAgICAgICJUbyBiZSBlcXVhbCB0bzogNiIsCiAgICAgICBtc2cyLmNf
c3RyKCkpOwogCi0gIGNvbnN0IFN0cmluZyBtc2czKAorICBjb25zdCBzdGQ6OnN0cmluZyBtc2cz
KAogICAgICAgRXFGYWlsdXJlKCI1IiwgImJhciIsIGZvb192YWwsIGJhcl92YWwsIGZhbHNlKQog
ICAgICAgLmZhaWx1cmVfbWVzc2FnZSgpKTsKICAgRVhQRUNUX1NUUkVRKAotICAgICAgIlZhbHVl
IG9mOiBiYXJcbiIKLSAgICAgICIgIEFjdHVhbDogNlxuIgotICAgICAgIkV4cGVjdGVkOiA1IiwK
KyAgICAgICIgICAgICBFeHBlY3RlZDogNVxuIgorICAgICAgIlRvIGJlIGVxdWFsIHRvOiBiYXJc
biIKKyAgICAgICIgICAgICBXaGljaCBpczogNiIsCiAgICAgICBtc2czLmNfc3RyKCkpOwogCi0g
IGNvbnN0IFN0cmluZyBtc2c0KAorICBjb25zdCBzdGQ6OnN0cmluZyBtc2c0KAogICAgICAgRXFG
YWlsdXJlKCI1IiwgIjYiLCBmb29fdmFsLCBiYXJfdmFsLCBmYWxzZSkuZmFpbHVyZV9tZXNzYWdl
KCkpOwogICBFWFBFQ1RfU1RSRVEoCi0gICAgICAiVmFsdWUgb2Y6IDZcbiIKLSAgICAgICJFeHBl
Y3RlZDogNSIsCisgICAgICAiICAgICAgRXhwZWN0ZWQ6IDVcbiIKKyAgICAgICJUbyBiZSBlcXVh
bCB0bzogNiIsCiAgICAgICBtc2c0LmNfc3RyKCkpOwogCi0gIGNvbnN0IFN0cmluZyBtc2c1KAor
ICBjb25zdCBzdGQ6OnN0cmluZyBtc2c1KAogICAgICAgRXFGYWlsdXJlKCJmb28iLCAiYmFyIiwK
LSAgICAgICAgICAgICAgICBTdHJpbmcoIlwieFwiIiksIFN0cmluZygiXCJ5XCIiKSwKKyAgICAg
ICAgICAgICAgICBzdGQ6OnN0cmluZygiXCJ4XCIiKSwgc3RkOjpzdHJpbmcoIlwieVwiIiksCiAg
ICAgICAgICAgICAgICAgdHJ1ZSkuZmFpbHVyZV9tZXNzYWdlKCkpOwogICBFWFBFQ1RfU1RSRVEo
Ci0gICAgICAiVmFsdWUgb2Y6IGJhclxuIgotICAgICAgIiAgQWN0dWFsOiBcInlcIlxuIgotICAg
ICAgIkV4cGVjdGVkOiBmb28gKGlnbm9yaW5nIGNhc2UpXG4iCi0gICAgICAiV2hpY2ggaXM6IFwi
eFwiIiwKKyAgICAgICIgICAgICBFeHBlY3RlZDogZm9vXG4iCisgICAgICAiICAgICAgV2hpY2gg
aXM6IFwieFwiXG4iCisgICAgICAiVG8gYmUgZXF1YWwgdG86IGJhclxuIgorICAgICAgIiAgICAg
IFdoaWNoIGlzOiBcInlcIlxuIgorICAgICAgIklnbm9yaW5nIGNhc2UiLAogICAgICAgbXNnNS5j
X3N0cigpKTsKIH0KIAorVEVTVChBc3NlcnRpb25UZXN0LCBFcUZhaWx1cmVXaXRoRGlmZikgewor
ICBjb25zdCBzdGQ6OnN0cmluZyBsZWZ0KAorICAgICAgIjFcXG4yWFhYXFxuM1xcbjVcXG42XFxu
N1xcbjhcXG45XFxuMTBcXG4xMVxcbjEyWFhYXFxuMTNcXG4xNFxcbjE1Iik7CisgIGNvbnN0IHN0
ZDo6c3RyaW5nIHJpZ2h0KAorICAgICAgIjFcXG4yXFxuM1xcbjRcXG41XFxuNlxcbjdcXG44XFxu
OVxcbjExXFxuMTJcXG4xM1xcbjE0Iik7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG1zZzEoCisgICAg
ICBFcUZhaWx1cmUoImxlZnQiLCAicmlnaHQiLCBsZWZ0LCByaWdodCwgZmFsc2UpLmZhaWx1cmVf
bWVzc2FnZSgpKTsKKyAgRVhQRUNUX1NUUkVRKAorICAgICAgIiAgICAgIEV4cGVjdGVkOiBsZWZ0
XG4iCisgICAgICAiICAgICAgV2hpY2ggaXM6ICIKKyAgICAgICIxXFxuMlhYWFxcbjNcXG41XFxu
NlxcbjdcXG44XFxuOVxcbjEwXFxuMTFcXG4xMlhYWFxcbjEzXFxuMTRcXG4xNVxuIgorICAgICAg
IlRvIGJlIGVxdWFsIHRvOiByaWdodFxuIgorICAgICAgIiAgICAgIFdoaWNoIGlzOiAxXFxuMlxc
bjNcXG40XFxuNVxcbjZcXG43XFxuOFxcbjlcXG4xMVxcbjEyXFxuMTNcXG4xNFxuIgorICAgICAg
IldpdGggZGlmZjpcbkBAIC0xLDUgKzEsNiBAQFxuIDFcbi0yWFhYXG4rMlxuIDNcbis0XG4gNVxu
IDZcbiIKKyAgICAgICJAQCAtNyw4ICs4LDYgQEBcbiA4XG4gOVxuLTEwXG4gMTFcbi0xMlhYWFxu
KzEyXG4gMTNcbiAxNFxuLTE1XG4iLAorICAgICAgbXNnMS5jX3N0cigpKTsKK30KKwogLy8gVGVz
dHMgQXBwZW5kVXNlck1lc3NhZ2UoKSwgdXNlZCBmb3IgaW1wbGVtZW50aW5nIHRoZSAqRVEqIG1h
Y3Jvcy4KIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXBwZW5kVXNlck1lc3NhZ2UpIHsKLSAgY29uc3Qg
U3RyaW5nIGZvbygiZm9vIik7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZvbygiZm9vIik7CiAKICAg
TWVzc2FnZSBtc2c7CiAgIEVYUEVDVF9TVFJFUSgiZm9vIiwKQEAgLTM0NzcsNyArMzYwNSw3IEBA
IFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXBwZW5kVXNlck1lc3NhZ2UpIHsKIAogI2lmZGVmIF9fQk9S
TEFORENfXwogLy8gU2lsZW5jZXMgd2FybmluZ3M6ICJDb25kaXRpb24gaXMgYWx3YXlzIHRydWUi
LCAiVW5yZWFjaGFibGUgY29kZSIKLSNwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAor
IyBwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAogI2VuZGlmCiAKIC8vIFRlc3RzIEFT
U0VSVF9UUlVFLgpAQCAtMzQ5MCw4ICszNjE4LDggQEAgVEVTVChBc3NlcnRpb25UZXN0LCBBU1NF
UlRfVFJVRSkgewogLy8gVGVzdHMgQVNTRVJUX1RSVUUocHJlZGljYXRlKSBmb3IgcHJlZGljYXRl
cyByZXR1cm5pbmcgQXNzZXJ0aW9uUmVzdWx0LgogVEVTVChBc3NlcnRpb25UZXN0LCBBc3NlcnRU
cnVlV2l0aEFzc2VydGlvblJlc3VsdCkgewogICBBU1NFUlRfVFJVRShSZXN1bHRJc0V2ZW4oMikp
OwotI2lmICFkZWZpbmVkKF9fQk9STEFORENfXykgfHwgX19CT1JMQU5EQ19fID49IDB4NjAwCi0g
IC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAwNy4KKyNpZm5kZWYgX19CT1JMQU5EQ19fCisgIC8v
IElDRSdzIGluIEMrK0J1aWxkZXIuCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9UUlVF
KFJlc3VsdElzRXZlbigzKSksCiAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogUmVz
dWx0SXNFdmVuKDMpXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogZmFsc2Ug
KDMgaXMgb2RkKVxuIgpAQCAtMzUxNiw4ICszNjQ0LDggQEAgVEVTVChBc3NlcnRpb25UZXN0LCBB
U1NFUlRfRkFMU0UpIHsKIC8vIFRlc3RzIEFTU0VSVF9GQUxTRShwcmVkaWNhdGUpIGZvciBwcmVk
aWNhdGVzIHJldHVybmluZyBBc3NlcnRpb25SZXN1bHQuCiBURVNUKEFzc2VydGlvblRlc3QsIEFz
c2VydEZhbHNlV2l0aEFzc2VydGlvblJlc3VsdCkgewogICBBU1NFUlRfRkFMU0UoUmVzdWx0SXNF
dmVuKDMpKTsKLSNpZiAhZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IF9fQk9STEFORENfXyA+PSAw
eDYwMAotICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcuCisjaWZuZGVmIF9fQk9STEFORENf
XworICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyLgogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NF
UlRfRkFMU0UoUmVzdWx0SXNFdmVuKDIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVl
IG9mOiBSZXN1bHRJc0V2ZW4oMilcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFs
OiB0cnVlICgyIGlzIGV2ZW4pXG4iCkBAIC0zNTMyLDcgKzM2NjAsNyBAQCBURVNUKEFzc2VydGlv
blRlc3QsIEFzc2VydEZhbHNlV2l0aEFzc2VydGlvblJlc3VsdCkgewogCiAjaWZkZWYgX19CT1JM
QU5EQ19fCiAvLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2aW91cyAiI3ByYWdtYSBvcHRp
b24gcHVzaCIgc3VwcmVzc2VkIHRoZW0KLSNwcmFnbWEgb3B0aW9uIHBvcAorIyBwcmFnbWEgb3B0
aW9uIHBvcAogI2VuZGlmCiAKIC8vIFRlc3RzIHVzaW5nIEFTU0VSVF9FUSBvbiBkb3VibGUgdmFs
dWVzLiAgVGhlIHB1cnBvc2UgaXMgdG8gbWFrZQpAQCAtMzU1MSw5ICszNjc5LDkgQEAgVEVTVChF
eHBlY3RUZXN0LCBBU1NFUlRfRVFfRG91YmxlKSB7CiBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VS
VF9FUSkgewogICBBU1NFUlRfRVEoNSwgMiArIDMpOwogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShB
U1NFUlRfRVEoNSwgMiozKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiAyKjNc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiA2XG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICJFeHBlY3RlZDogNSIpOworICAgICAgICAgICAgICAgICAgICAgICAiICAgICAg
RXhwZWN0ZWQ6IDVcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiAy
KjNcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgIFdoaWNoIGlzOiA2Iik7CiB9CiAK
IC8vIFRlc3RzIEFTU0VSVF9FUShOVUxMLCBwb2ludGVyKS4KQEAgLTM1NzAsNyArMzY5OCw3IEBA
IFRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0VRX05VTEwpIHsKICAgLy8gQSBmYWlsdXJlLgog
ICBzdGF0aWMgaW50IG4gPSAwOwogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoTlVM
TCwgJm4pLAotICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6ICZuXG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiAmblxuIik7CiB9CiAjZW5kaWYgIC8v
IEdURVNUX0NBTl9DT01QQVJFX05VTEwKIApAQCAtMzYzNSwxMyArMzc2MywxNCBAQCB2b2lkIFRo
cm93Tm90aGluZygpIHt9CiBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9USFJPVykgewogICBB
U1NFUlRfVEhST1coVGhyb3dBbkludGVnZXIoKSwgaW50KTsKIAotI2lmbmRlZiBfX0JPUkxBTkRD
X18KKyMgaWZuZGVmIF9fQk9STEFORENfXworCiAgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAw
NyBhbmQgMjAwOS4KICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoCiAgICAgICBBU1NFUlRfVEhST1co
VGhyb3dBbkludGVnZXIoKSwgYm9vbCksCiAgICAgICAiRXhwZWN0ZWQ6IFRocm93QW5JbnRlZ2Vy
KCkgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiB0eXBlIGJvb2wuXG4iCiAgICAgICAiICBBY3R1YWw6
IGl0IHRocm93cyBhIGRpZmZlcmVudCB0eXBlLiIpOwotI2VuZGlmCisjIGVuZGlmCiAKICAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoCiAgICAgICBBU1NFUlRfVEhST1coVGhyb3dOb3RoaW5nKCksIGJv
b2wpLApAQCAtMzY3Miw3ICszODAxLDggQEAgVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfQU5Z
X1RIUk9XKSB7CiAvLyBjb21waWxlLgogVEVTVChBc3NlcnRpb25UZXN0LCBBc3NlcnRQcmVjZWRl
bmNlKSB7CiAgIEFTU0VSVF9FUSgxIDwgMiwgdHJ1ZSk7Ci0gIEFTU0VSVF9FUSh0cnVlICYmIGZh
bHNlLCBmYWxzZSk7CisgIGJvb2wgZmFsc2VfdmFsdWUgPSBmYWxzZTsKKyAgQVNTRVJUX0VRKHRy
dWUgJiYgZmFsc2VfdmFsdWUsIGZhbHNlKTsKIH0KIAogLy8gQSBzdWJyb3V0aW5lIHVzZWQgYnkg
dGhlIGZvbGxvd2luZyB0ZXN0LgpAQCAtMzY4Myw3ICszODEzLDcgQEAgdm9pZCBUZXN0RXExKGlu
dCB4KSB7CiAvLyBUZXN0cyBjYWxsaW5nIGEgdGVzdCBzdWJyb3V0aW5lIHRoYXQncyBub3QgcGFy
dCBvZiBhIGZpeHR1cmUuCiBURVNUKEFzc2VydGlvblRlc3QsIE5vbkZpeHR1cmVTdWJyb3V0aW5l
KSB7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKFRlc3RFcTEoMiksCi0gICAgICAgICAgICAgICAg
ICAgICAgICJWYWx1ZSBvZjogeCIpOworICAgICAgICAgICAgICAgICAgICAgICAiVG8gYmUgZXF1
YWwgdG86IHgiKTsKIH0KIAogLy8gQW4gdW5jb3B5YWJsZSBjbGFzcy4KQEAgLTM3MzIsNyArMzg2
Miw3IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0V29ya3NXaXRoVW5jb3B5YWJsZU9iamVj
dCkgewogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShUZXN0QXNzZXJ0Tm9uUG9zaXRpdmUoKSwKICAg
ICAiSXNQb3NpdGl2ZVVuY29weWFibGUoeSkgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZVxueSBl
dmFsdWF0ZXMgdG8gLTEiKTsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoVGVzdEFzc2VydEVxdWFs
c1VuY29weWFibGUoKSwKLSAgICAiVmFsdWUgb2Y6IHlcbiAgQWN0dWFsOiAtMVxuRXhwZWN0ZWQ6
IHhcbldoaWNoIGlzOiA1Iik7CisgICAgIkV4cGVjdGVkOiB4XG4gICAgICBXaGljaCBpczogNVxu
VG8gYmUgZXF1YWwgdG86IHlcbiAgICAgIFdoaWNoIGlzOiAtMSIpOwogfQogCiAvLyBUZXN0cyB0
aGF0IHVuY29weWFibGUgb2JqZWN0cyBjYW4gYmUgdXNlZCBpbiBleHBlY3RzLgpAQCAtMzc0NCw1
NyArMzg3NCw4OSBAQCBURVNUKEFzc2VydGlvblRlc3QsIEV4cGVjdFdvcmtzV2l0aFVuY29weWFi
bGVPYmplY3QpIHsKICAgICAiSXNQb3NpdGl2ZVVuY29weWFibGUoeSkgZXZhbHVhdGVzIHRvIGZh
bHNlLCB3aGVyZVxueSBldmFsdWF0ZXMgdG8gLTEiKTsKICAgRVhQRUNUX0VRKHgsIHgpOwogICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoeCwgeSksCi0gICAgIlZhbHVlIG9mOiB5
XG4gIEFjdHVhbDogLTFcbkV4cGVjdGVkOiB4XG5XaGljaCBpczogNSIpOworICAgICJFeHBlY3Rl
ZDogeFxuICAgICAgV2hpY2ggaXM6IDVcblRvIGJlIGVxdWFsIHRvOiB5XG4gICAgICBXaGljaCBp
czogLTEiKTsKIH0KIAorZW51bSBOYW1lZEVudW0geworICBrRTEgPSAwLAorICBrRTIgPSAxCit9
OwogCi0vLyBUaGUgdmVyc2lvbiBvZiBnY2MgdXNlZCBpbiBYQ29kZSAyLjIgaGFzIGEgYnVnIGFu
ZCBkb2Vzbid0IGFsbG93CitURVNUKEFzc2VydGlvblRlc3QsIE5hbWVkRW51bSkgeworICBFWFBF
Q1RfRVEoa0UxLCBrRTEpOworICBFWFBFQ1RfTFQoa0UxLCBrRTIpOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfRVEoa0UxLCBrRTIpLCAiV2hpY2ggaXM6IDAiKTsKKyAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKGtFMSwga0UyKSwgIldoaWNoIGlzOiAxIik7Cit9
CisKKy8vIFRoZSB2ZXJzaW9uIG9mIGdjYyB1c2VkIGluIFhDb2RlIDIuMiBoYXMgYSBidWcgYW5k
IGRvZXNuJ3QgYWxsb3cKIC8vIGFub255bW91cyBlbnVtcyBpbiBhc3NlcnRpb25zLiAgVGhlcmVm
b3JlIHRoZSBmb2xsb3dpbmcgdGVzdCBpcyBub3QKIC8vIGRvbmUgb24gTWFjLgotLy8gU3VuIFN0
dWRpbyBhbHNvIHJlamVjdHMgdGhpcyBjb2RlLgotI2lmICFHVEVTVF9PU19NQUMgJiYgIWRlZmlu
ZWQoX19TVU5QUk9fQ0MpCisvLyBTdW4gU3R1ZGlvIGFuZCBIUCBhQ0MgYWxzbyByZWplY3QgdGhp
cyBjb2RlLgorI2lmICFHVEVTVF9PU19NQUMgJiYgIWRlZmluZWQoX19TVU5QUk9fQ0MpICYmICFk
ZWZpbmVkKF9fSFBfYUNDKQogCiAvLyBUZXN0cyB1c2luZyBhc3NlcnRpb25zIHdpdGggYW5vbnlt
b3VzIGVudW1zLgogZW51bSB7Ci0gIENBU0VfQSA9IC0xLAotI2lmIEdURVNUX09TX0xJTlVYCisg
IGtDYXNlQSA9IC0xLAorCisjIGlmIEdURVNUX09TX0xJTlVYCisKICAgLy8gV2Ugd2FudCB0byB0
ZXN0IHRoZSBjYXNlIHdoZXJlIHRoZSBzaXplIG9mIHRoZSBhbm9ueW1vdXMgZW51bSBpcwogICAv
LyBsYXJnZXIgdGhhbiBzaXplb2YoaW50KSwgdG8gbWFrZSBzdXJlIG91ciBpbXBsZW1lbnRhdGlv
biBvZiB0aGUKICAgLy8gYXNzZXJ0aW9ucyBkb2Vzbid0IHRydW5jYXRlIHRoZSBlbnVtcy4gIEhv
d2V2ZXIsIE1TVkMKICAgLy8gKGluY29ycmVjdGx5KSBkb2Vzbid0IGFsbG93IGFuIGVudW0gdmFs
dWUgdG8gZXhjZWVkIHRoZSByYW5nZSBvZgogICAvLyBhbiBpbnQsIHNvIHRoaXMgaGFzIHRvIGJl
IGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuCiAgIC8vCi0gIC8vIE9uIExpbnV4LCBDQVNFX0IgYW5k
IENBU0VfQSBoYXZlIHRoZSBzYW1lIHZhbHVlIHdoZW4gdHJ1bmNhdGVkIHRvCisgIC8vIE9uIExp
bnV4LCBrQ2FzZUIgYW5kIGtDYXNlQSBoYXZlIHRoZSBzYW1lIHZhbHVlIHdoZW4gdHJ1bmNhdGVk
IHRvCiAgIC8vIGludCBzaXplLiAgV2Ugd2FudCB0byB0ZXN0IHdoZXRoZXIgdGhpcyB3aWxsIGNv
bmZ1c2UgdGhlCiAgIC8vIGFzc2VydGlvbnMuCi0gIENBU0VfQiA9IHRlc3Rpbmc6OmludGVybmFs
OjprTWF4QmlnZ2VzdEludCwKLSNlbHNlCi0gIENBU0VfQiA9IElOVF9NQVgsCi0jZW5kaWYgIC8v
IEdURVNUX09TX0xJTlVYCisgIGtDYXNlQiA9IHRlc3Rpbmc6OmludGVybmFsOjprTWF4QmlnZ2Vz
dEludCwKKworIyBlbHNlCisKKyAga0Nhc2VCID0gSU5UX01BWCwKKworIyBlbmRpZiAgLy8gR1RF
U1RfT1NfTElOVVgKKworICBrQ2FzZUMgPSA0MgogfTsKIAogVEVTVChBc3NlcnRpb25UZXN0LCBB
bm9ueW1vdXNFbnVtKSB7Ci0jaWYgR1RFU1RfT1NfTElOVVgKLSAgRVhQRUNUX0VRKHN0YXRpY19j
YXN0PGludD4oQ0FTRV9BKSwgc3RhdGljX2Nhc3Q8aW50PihDQVNFX0IpKTsKLSNlbmRpZiAgLy8g
R1RFU1RfT1NfTElOVVgKLQotICBFWFBFQ1RfRVEoQ0FTRV9BLCBDQVNFX0EpOwotICBFWFBFQ1Rf
TkUoQ0FTRV9BLCBDQVNFX0IpOwotICBFWFBFQ1RfTFQoQ0FTRV9BLCBDQVNFX0IpOwotICBFWFBF
Q1RfTEUoQ0FTRV9BLCBDQVNFX0IpOwotICBFWFBFQ1RfR1QoQ0FTRV9CLCBDQVNFX0EpOwotICBF
WFBFQ1RfR0UoQ0FTRV9BLCBDQVNFX0EpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBF
Q1RfR0UoQ0FTRV9BLCBDQVNFX0IpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKENBU0Vf
QSkgPj0gKENBU0VfQikiKTsKLQotICBBU1NFUlRfRVEoQ0FTRV9BLCBDQVNFX0EpOwotICBBU1NF
UlRfTkUoQ0FTRV9BLCBDQVNFX0IpOwotICBBU1NFUlRfTFQoQ0FTRV9BLCBDQVNFX0IpOwotICBB
U1NFUlRfTEUoQ0FTRV9BLCBDQVNFX0IpOwotICBBU1NFUlRfR1QoQ0FTRV9CLCBDQVNFX0EpOwot
ICBBU1NFUlRfR0UoQ0FTRV9BLCBDQVNFX0EpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NF
UlRfRVEoQ0FTRV9BLCBDQVNFX0IpLAotICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6
IENBU0VfQiIpOworIyBpZiBHVEVTVF9PU19MSU5VWAorCisgIEVYUEVDVF9FUShzdGF0aWNfY2Fz
dDxpbnQ+KGtDYXNlQSksIHN0YXRpY19jYXN0PGludD4oa0Nhc2VCKSk7CisKKyMgZW5kaWYgIC8v
IEdURVNUX09TX0xJTlVYCisKKyAgRVhQRUNUX0VRKGtDYXNlQSwga0Nhc2VBKTsKKyAgRVhQRUNU
X05FKGtDYXNlQSwga0Nhc2VCKTsKKyAgRVhQRUNUX0xUKGtDYXNlQSwga0Nhc2VCKTsKKyAgRVhQ
RUNUX0xFKGtDYXNlQSwga0Nhc2VCKTsKKyAgRVhQRUNUX0dUKGtDYXNlQiwga0Nhc2VBKTsKKyAg
RVhQRUNUX0dFKGtDYXNlQSwga0Nhc2VBKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX0dFKGtDYXNlQSwga0Nhc2VCKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIihrQ2Fz
ZUEpID49IChrQ2FzZUIpIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HRShr
Q2FzZUEsIGtDYXNlQyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICItMSB2cyA0MiIpOwor
CisgIEFTU0VSVF9FUShrQ2FzZUEsIGtDYXNlQSk7CisgIEFTU0VSVF9ORShrQ2FzZUEsIGtDYXNl
Qik7CisgIEFTU0VSVF9MVChrQ2FzZUEsIGtDYXNlQik7CisgIEFTU0VSVF9MRShrQ2FzZUEsIGtD
YXNlQik7CisgIEFTU0VSVF9HVChrQ2FzZUIsIGtDYXNlQSk7CisgIEFTU0VSVF9HRShrQ2FzZUEs
IGtDYXNlQSk7CisKKyMgaWZuZGVmIF9fQk9STEFORENfXworCisgIC8vIElDRSdzIGluIEMrK0J1
aWxkZXIuCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShrQ2FzZUEsIGtDYXNlQiks
CisgICAgICAgICAgICAgICAgICAgICAgICJUbyBiZSBlcXVhbCB0bzoga0Nhc2VCIik7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShrQ2FzZUEsIGtDYXNlQyksCisgICAgICAgICAg
ICAgICAgICAgICAgICJXaGljaCBpczogNDIiKTsKKyMgZW5kaWYKKworICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShBU1NFUlRfRVEoa0Nhc2VBLCBrQ2FzZUMpLAorICAgICAgICAgICAgICAgICAgICAg
ICAiV2hpY2ggaXM6IC0xIik7CiB9CiAKICNlbmRpZiAgLy8gIUdURVNUX09TX01BQyAmJiAhZGVm
aW5lZChfX1NVTlBST19DQykKQEAgLTM4NDAsMjQgKzQwMDIsMjYgQEAgVEVTVChIUkVTVUxUQXNz
ZXJ0aW9uVGVzdCwgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKSB7CiAKICAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRVhQRUNUX0hSRVNVTFRfRkFJTEVEKE9rSFJFU1VMVFN1Y2Nlc3MoKSksCiAgICAg
IkV4cGVjdGVkOiAoT2tIUkVTVUxUU3VjY2VzcygpKSBmYWlscy5cbiIKLSAgICAiICBBY3R1YWw6
IDB4MDAwMDAwMDAiKTsKKyAgICAiICBBY3R1YWw6IDB4MCIpOwogICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShFWFBFQ1RfSFJFU1VMVF9GQUlMRUQoRmFsc2VIUkVTVUxUU3VjY2VzcygpKSwKICAg
ICAiRXhwZWN0ZWQ6IChGYWxzZUhSRVNVTFRTdWNjZXNzKCkpIGZhaWxzLlxuIgotICAgICIgIEFj
dHVhbDogMHgwMDAwMDAwMSIpOworICAgICIgIEFjdHVhbDogMHgxIik7CiB9CiAKIFRFU1QoSFJF
U1VMVEFzc2VydGlvblRlc3QsIEFTU0VSVF9IUkVTVUxUX0ZBSUxFRCkgewogICBBU1NFUlRfSFJF
U1VMVF9GQUlMRUQoRV9VTkVYUEVDVEVEKTsKIAotI2lmbmRlZiBfX0JPUkxBTkRDX18KKyMgaWZu
ZGVmIF9fQk9STEFORENfXworCiAgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAwNyBhbmQgMjAw
OS4KICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0hSRVNVTFRfRkFJTEVEKE9rSFJFU1VM
VFN1Y2Nlc3MoKSksCiAgICAgIkV4cGVjdGVkOiAoT2tIUkVTVUxUU3VjY2VzcygpKSBmYWlscy5c
biIKLSAgICAiICBBY3R1YWw6IDB4MDAwMDAwMDAiKTsKLSNlbmRpZgorICAgICIgIEFjdHVhbDog
MHgwIik7CisjIGVuZGlmCisKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0hSRVNVTFRf
RkFJTEVEKEZhbHNlSFJFU1VMVFN1Y2Nlc3MoKSksCiAgICAgIkV4cGVjdGVkOiAoRmFsc2VIUkVT
VUxUU3VjY2VzcygpKSBmYWlscy5cbiIKLSAgICAiICBBY3R1YWw6IDB4MDAwMDAwMDEiKTsKKyAg
ICAiICBBY3R1YWw6IDB4MSIpOwogfQogCiAvLyBUZXN0cyB0aGF0IHN0cmVhbWluZyB0byB0aGUg
SFJFU1VMVCBtYWNyb3Mgd29ya3MuCkBAIC0zODcxLDEyICs0MDM1LDEzIEBAIFRFU1QoSFJFU1VM
VEFzc2VydGlvblRlc3QsIFN0cmVhbWluZykgewogICAgICAgRVhQRUNUX0hSRVNVTFRfU1VDQ0VF
REVEKEVfVU5FWFBFQ1RFRCkgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAogICAgICAgImV4cGVjdGVk
IGZhaWx1cmUiKTsKIAotI2lmbmRlZiBfX0JPUkxBTkRDX18KKyMgaWZuZGVmIF9fQk9STEFORENf
XworCiAgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAwNyBhbmQgMjAwOS4KICAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoCiAgICAgICBBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoRV9VTkVYUEVDVEVE
KSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCiAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIpOwotI2Vu
ZGlmCisjIGVuZGlmCiAKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCiAgICAgICBFWFBFQ1Rf
SFJFU1VMVF9GQUlMRUQoU19PSykgPDwgImV4cGVjdGVkIGZhaWx1cmUiLApAQCAtMzg5MSw3ICs0
MDU2LDcgQEAgVEVTVChIUkVTVUxUQXNzZXJ0aW9uVGVzdCwgU3RyZWFtaW5nKSB7CiAKICNpZmRl
ZiBfX0JPUkxBTkRDX18KIC8vIFNpbGVuY2VzIHdhcm5pbmdzOiAiQ29uZGl0aW9uIGlzIGFsd2F5
cyB0cnVlIiwgIlVucmVhY2hhYmxlIGNvZGUiCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAt
dy1yY2gKKyMgcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gKICNlbmRpZgogCiAvLyBU
ZXN0cyB0aGF0IHRoZSBhc3NlcnRpb24gbWFjcm9zIGJlaGF2ZSBsaWtlIHNpbmdsZSBzdGF0ZW1l
bnRzLgpAQCAtNDAwOCw3ICs0MTczLDcgQEAgVEVTVChBc3NlcnRpb25TeW50YXhUZXN0LCBXb3Jr
c1dpdGhTd2l0Y2gpIHsKICNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwogCiB2b2lkIFRocm93QVN0
cmluZygpIHsKLSAgICB0aHJvdyAiU3RyaW5nIjsKKyAgICB0aHJvdyAic3RkOjpzdHJpbmciOwog
fQogCiAvLyBUZXN0IHRoYXQgdGhlIGV4Y2VwdGlvbiBhc3NlcnRpb24gbWFjcm9zIGNvbXBpbGUg
YW5kIHdvcmsgd2l0aCBjb25zdApAQCAtNDA2MCw4ICs0MjI1LDEwOSBAQCBURVNUKFN1Y2Nlc3Nm
dWxBc3NlcnRpb25UZXN0LCBBU1NFUlRfU1RSKSB7CiAKIG5hbWVzcGFjZSB7CiAKKy8vIFRlc3Rz
IHRoZSBtZXNzYWdlIHN0cmVhbWluZyB2YXJpYXRpb24gb2YgYXNzZXJ0aW9ucy4KKworVEVTVChB
c3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEVYUEVDVCkgeworICBFWFBFQ1RfRVEoMSwgMSkgPDwg
IlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNU
X05FKDEsIDEpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJFeHBlY3RlZCBmYWlsdXJlICMxIik7CisgIEVYUEVDVF9MRSgxLCAyKSA8PCAiVGhp
cyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfTFQo
MSwgMCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkV4cGVjdGVkIGZhaWx1cmUgIzIuIik7CisgIEVYUEVDVF9HRSgxLCAwKSA8PCAiVGhpcyBz
aG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR1QoMSwg
MikgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IkV4cGVjdGVkIGZhaWx1cmUgIzMuIik7CisKKyAgRVhQRUNUX1NUUkVRKCIxIiwgIjEiKSA8PCAi
VGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1Rf
U1RSTkUoIjEiLCAiMSIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM0LiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJlICM0LiIpOworICBFWFBFQ1RfU1RSQ0FTRUVR
KCJhIiwgIkEiKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShFWFBFQ1RfU1RSQ0FTRU5FKCJhIiwgIkEiKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAj
NS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZSAjNS4iKTsK
KworICBFWFBFQ1RfRkxPQVRfRVEoMSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RPVUJMRV9FUSgxLCAxLjIpIDw8ICJFeHBl
Y3RlZCBmYWlsdXJlICM2LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBm
YWlsdXJlICM2LiIpOworICBFWFBFQ1RfTkVBUigxLCAxLjEsIDAuMikgPDwgIlRoaXMgc2hvdWxk
IHN1Y2NlZWQuIjsKK30KKworVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVCkg
eworICBBU1NFUlRfRVEoMSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJU
X05FKDEsIDIpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9MRSgxLCAyKSA8
PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfTFQoMSwgMikgPDwgIlRoaXMgc2hv
dWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJUX0dFKDEsIDApIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVk
LiI7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9HVCgxLCAyKSA8PCAiRXhwZWN0ZWQg
ZmFpbHVyZS4iLAorICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZS4iKTsK
K30KKworVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVF9TVFIpIHsKKyAgQVNT
RVJUX1NUUkVRKCIxIiwgIjEiKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRf
U1RSTkUoIjEiLCAiMiIpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9TVFJD
QVNFRVEoImEiLCAiQSIpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFTU0VSVF9TVFJDQVNFTkUoImEiLCAiQSIpIDw8ICJFeHBlY3RlZCBmYWlsdXJl
LiIsCisgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJlLiIpOworfQorCitU
RVNUKEFzc2VydGlvbldpdGhNZXNzYWdlVGVzdCwgQVNTRVJUX0ZMT0FUSU5HKSB7CisgIEFTU0VS
VF9GTE9BVF9FUSgxLCAxKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfRE9V
QkxFX0VRKDEsIDEpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKEFTU0VSVF9ORUFSKDEsMS4yLCAwLjEpIDw8ICJFeHBlY3QgZmFpbHVyZS4iLCAgLy8g
Tk9MSU5UCisgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3QgZmFpbHVyZS4iKTsKKyAgLy8g
VG8gd29yayBhcm91bmQgYSBidWcgaW4gZ2NjIDIuOTUuMCwgdGhlcmUgaXMgaW50ZW50aW9uYWxs
eSBubworICAvLyBzcGFjZSBhZnRlciB0aGUgZmlyc3QgY29tbWEgaW4gdGhlIHByZXZpb3VzIHN0
YXRlbWVudC4KK30KKworLy8gVGVzdHMgdXNpbmcgQVNTRVJUX0ZBTFNFIHdpdGggYSBzdHJlYW1l
ZCBtZXNzYWdlLgorVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVF9GQUxTRSkg
eworICBBU1NFUlRfRkFMU0UoZmFsc2UpIDw8ICJUaGlzIHNob3VsZG4ndCBmYWlsLiI7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9GQUxTRSh0cnVlKSA8
PCAiRXhwZWN0ZWQgZmFpbHVyZTogIiA8PCAyIDw8ICIgPiAiIDw8IDEKKyAgICAgICAgICAgICAg
ICAgICAgICAgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB0cnVlOworICB9LCAiRXhwZWN0ZWQgZmFp
bHVyZSIpOworfQorCisvLyBUZXN0cyB1c2luZyBGQUlMIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdl
LgorVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEZBSUwpIHsKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoRkFJTCgpIDw8IDAsCisgICAgICAgICAgICAgICAgICAgICAgICIwIik7Cit9CisK
Ky8vIFRlc3RzIHVzaW5nIFNVQ0NFRUQgd2l0aCBhIHN0cmVhbWVkIG1lc3NhZ2UuCitURVNUKEFz
c2VydGlvbldpdGhNZXNzYWdlVGVzdCwgU1VDQ0VFRCkgeworICBTVUNDRUVEKCkgPDwgIlN1Y2Nl
c3MgPT0gIiA8PCAxOworfQorCisvLyBUZXN0cyB1c2luZyBBU1NFUlRfVFJVRSB3aXRoIGEgc3Ry
ZWFtZWQgbWVzc2FnZS4KK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBBU1NFUlRfVFJV
RSkgeworICBBU1NFUlRfVFJVRSh0cnVlKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBB
U1NFUlRfVFJVRSh0cnVlKSA8PCB0cnVlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBO
T0xJTlQKKyAgICBBU1NFUlRfVFJVRShmYWxzZSkgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAq
PihOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxjaGFyICo+KE5V
TEwpOworICB9LCAiKG51bGwpKG51bGwpIik7Cit9CisKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisv
LyBUZXN0cyB1c2luZyB3aWRlIHN0cmluZ3MgaW4gYXNzZXJ0aW9uIG1lc3NhZ2VzLgorVEVTVChB
c3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIFdpZGVTdHJpbmdNZXNzYWdlKSB7CisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9UUlVFKGZhbHNlKSA8PCBM
IlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC5ceDgxMTkiOworICB9LCAiVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkLiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBB
U1NFUlRfRVEoMSwgMikgPDwgIlRoaXMgZmFpbHVyZSBpcyAiCisgICAgICAgICAgICAgICAgICAg
IDw8IEwiZXhwZWN0ZWQgdG9vLlx4ODEyMCI7CisgIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0
ZWQgdG9vLiIpOworfQorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKIC8vIFRlc3RzIEVY
UEVDVF9UUlVFLgogVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfVFJVRSkgeworICBFWFBFQ1RfVFJV
RSh0cnVlKSA8PCAiSW50ZW50aW9uYWwgc3VjY2VzcyI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEVYUEVDVF9UUlVFKGZhbHNlKSA8PCAiSW50ZW50aW9uYWwgZmFpbHVyZSAjMS4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9uYWwgZmFpbHVyZSAjMS4iKTsKKyAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1RSVUUoZmFsc2UpIDw8ICJJbnRlbnRpb25hbCBm
YWlsdXJlICMyLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlbnRpb25hbCBmYWls
dXJlICMyLiIpOwogICBFWFBFQ1RfVFJVRSgyID4gMSk7ICAvLyBOT0xJTlQKICAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1RSVUUoMiA8IDEpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAiVmFsdWUgb2Y6IDIgPCAxXG4iCkBAIC00MDg1LDkgKzQzNTEsMTQgQEAgVEVTVChFeHBl
Y3RUZXN0LCBFeHBlY3RUcnVlV2l0aEFzc2VydGlvblJlc3VsdCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAiRXhwZWN0ZWQ6IHRydWUiKTsKIH0KIAotLy8gVGVzdHMgRVhQRUNUX0ZBTFNF
LgorLy8gVGVzdHMgRVhQRUNUX0ZBTFNFIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgogVEVTVChF
eHBlY3RUZXN0LCBFWFBFQ1RfRkFMU0UpIHsKICAgRVhQRUNUX0ZBTFNFKDIgPCAxKTsgIC8vIE5P
TElOVAorICBFWFBFQ1RfRkFMU0UoZmFsc2UpIDw8ICJJbnRlbnRpb25hbCBzdWNjZXNzIjsKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0ZBTFNFKHRydWUpIDw8ICJJbnRlbnRpb25h
bCBmYWlsdXJlICMxLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlbnRpb25hbCBm
YWlsdXJlICMxLiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRkFMU0UodHJ1
ZSkgPDwgIkludGVudGlvbmFsIGZhaWx1cmUgIzIuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkludGVudGlvbmFsIGZhaWx1cmUgIzIuIik7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEVYUEVDVF9GQUxTRSgyID4gMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBv
ZjogMiA+IDFcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiB0cnVlXG4i
CkBAIC00MTEyLDE2ICs0MzgzLDE2IEBAIFRFU1QoRXhwZWN0VGVzdCwgRXhwZWN0RmFsc2VXaXRo
QXNzZXJ0aW9uUmVzdWx0KSB7CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFJlc3RvcmVzIHdh
cm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXByZXNzZWQgdGhl
bQotI3ByYWdtYSBvcHRpb24gcG9wCisjIHByYWdtYSBvcHRpb24gcG9wCiAjZW5kaWYKIAogLy8g
VGVzdHMgRVhQRUNUX0VRLgogVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVEpIHsKICAgRVhQRUNU
X0VRKDUsIDIgKyAzKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDUsIDIq
MyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogMiozXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogNlxuIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAiRXhwZWN0ZWQ6IDUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgIEV4
cGVjdGVkOiA1XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICJUbyBiZSBlcXVhbCB0bzog
MiozXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICBXaGljaCBpczogNiIpOwog
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoNSwgMiAtIDMpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAiMiAtIDMiKTsKIH0KQEAgLTQxNDMsNyArNDQxNCw3IEBAIFRFU1Qo
RXhwZWN0VGVzdCwgRVhQRUNUX0VRX0RvdWJsZSkgewogVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1Rf
RVFfTlVMTCkgewogICAvLyBBIHN1Y2Nlc3MuCiAgIGNvbnN0IGNoYXIqIHAgPSBOVUxMOwotICAv
LyBTb21lIG9sZGVyIEdDQyB2ZXJzaW9ucyBtYXkgaXNzdWUgYSBzcHVyaW91cyB3YXJpbmcgaW4g
dGhpcyBvciB0aGUgbmV4dAorICAvLyBTb21lIG9sZGVyIEdDQyB2ZXJzaW9ucyBtYXkgaXNzdWUg
YSBzcHVyaW91cyB3YXJuaW5nIGluIHRoaXMgb3IgdGhlIG5leHQKICAgLy8gYXNzZXJ0aW9uIHN0
YXRlbWVudC4gVGhpcyB3YXJuaW5nIHNob3VsZCBub3QgYmUgc3VwcHJlc3NlZCB3aXRoCiAgIC8v
IHN0YXRpY19jYXN0IHNpbmNlIHRoZSB0ZXN0IHZlcmlmaWVzIHRoZSBhYmlsaXR5IHRvIHVzZSBi
YXJlIE5VTEwgYXMgdGhlCiAgIC8vIGV4cGVjdGVkIHBhcmFtZXRlciB0byB0aGUgbWFjcm8uCkBA
IC00MTUyLDcgKzQ0MjMsNyBAQCBURVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9FUV9OVUxMKSB7CiAg
IC8vIEEgZmFpbHVyZS4KICAgaW50IG4gPSAwOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShF
WFBFQ1RfRVEoTlVMTCwgJm4pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6
ICZuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiAmblxu
Iik7CiB9CiAjZW5kaWYgIC8vIEdURVNUX0NBTl9DT01QQVJFX05VTEwKIApAQCAtNDI2OCw3ICs0
NTM5LDcgQEAgVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfQU5ZX1RIUk9XKSB7CiBURVNUKEV4cGVj
dFRlc3QsIEV4cGVjdFByZWNlZGVuY2UpIHsKICAgRVhQRUNUX0VRKDEgPCAyLCB0cnVlKTsKICAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHRydWUsIHRydWUgJiYgZmFsc2UpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IHRydWUgJiYgZmFsc2UiKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiB0cnVlICYmIGZhbHNlIik7
CiB9CiAKIApAQCAtNDM2MSw3ICs0NjMyLDcgQEAgVEVTVChTdHJlYW1hYmxlVGVzdCwgQmFzaWNJ
b01hbmlwKSB7CiAKIHZvaWQgQWRkRmFpbHVyZUhlbHBlcihib29sKiBhYm9ydGVkKSB7CiAgICph
Ym9ydGVkID0gdHJ1ZTsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiRmFpbHVyZSI7CisgIEFERF9GQUlM
VVJFKCkgPDwgIkludGVudGlvbmFsIGZhaWx1cmUuIjsKICAgKmFib3J0ZWQgPSBmYWxzZTsKIH0K
IApAQCAtNDM2OSwxMCArNDY0MCwyNSBAQCB2b2lkIEFkZEZhaWx1cmVIZWxwZXIoYm9vbCogYWJv
cnRlZCkgewogVEVTVChNYWNyb1Rlc3QsIEFERF9GQUlMVVJFKSB7CiAgIGJvb2wgYWJvcnRlZCA9
IHRydWU7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmVIZWxwZXIoJmFib3J0
ZWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbHVyZSIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAiSW50ZW50aW9uYWwgZmFpbHVyZS4iKTsKICAgRVhQRUNUX0ZBTFNFKGFi
b3J0ZWQpOwogfQogCisvLyBUZXN0cyBBRERfRkFJTFVSRV9BVC4KK1RFU1QoTWFjcm9UZXN0LCBB
RERfRkFJTFVSRV9BVCkgeworICAvLyBWZXJpZmllcyB0aGF0IEFERF9GQUlMVVJFX0FUIGRvZXMg
Z2VuZXJhdGUgYSBub25mYXRhbCBmYWlsdXJlIGFuZAorICAvLyB0aGUgZmFpbHVyZSBtZXNzYWdl
IGNvbnRhaW5zIHRoZSB1c2VyLXN0cmVhbWVkIHBhcnQuCisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEFERF9GQUlMVVJFX0FUKCJmb28uY2MiLCA0MikgPDwgIldyb25nISIsICJXcm9uZyEiKTsK
KworICAvLyBWZXJpZmllcyB0aGF0IHRoZSB1c2VyLXN0cmVhbWVkIHBhcnQgaXMgb3B0aW9uYWwu
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFERF9GQUlMVVJFX0FUKCJmb28uY2MiLCA0Miks
ICJGYWlsZWQiKTsKKworICAvLyBVbmZvcnR1bmF0ZWx5LCB3ZSBjYW5ub3QgdmVyaWZ5IHRoYXQg
dGhlIGZhaWx1cmUgbWVzc2FnZSBjb250YWlucworICAvLyB0aGUgcmlnaHQgZmlsZSBwYXRoIGFu
ZCBsaW5lIG51bWJlciB0aGUgc2FtZSB3YXksIGFzCisgIC8vIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKCkgZG9lc24ndCBnZXQgdG8gc2VlIHRoZSBmaWxlIHBhdGggYW5kCisgIC8vIGxpbmUgbnVt
YmVyLiAgSW5zdGVhZCwgd2UgZG8gdGhhdCBpbiBndGVzdF9vdXRwdXRfdGVzdF8uY2MuCit9CisK
IC8vIFRlc3RzIEZBSUwuCiBURVNUKE1hY3JvVGVzdCwgRkFJTCkgewogICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShGQUlMKCksCkBAIC00Mzg3LDcgKzQ2NzMsNiBAQCBURVNUKE1hY3JvVGVzdCwgU1VD
Q0VFRCkgewogICBTVUNDRUVEKCkgPDwgIkV4cGxpY2l0IHN1Y2Nlc3MuIjsKIH0KIAotCiAvLyBU
ZXN0cyBmb3IgRVhQRUNUX0VRKCkgYW5kIEFTU0VSVF9FUSgpLgogLy8KIC8vIFRoZXNlIHRlc3Rz
IGZhaWwgKmludGVudGlvbmFsbHkqLCBzLnQuIHRoZSBmYWlsdXJlIG1lc3NhZ2VzIGNhbiBiZQpA
QCAtNDM5OCw4ICs0NjgzLDEwIEBAIFRFU1QoTWFjcm9UZXN0LCBTVUNDRUVEKSB7CiAvLyBUZXN0
cyB1c2luZyBib29sIHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCiBURVNUKEVxQXNzZXJ0
aW9uVGVzdCwgQm9vbCkgewogICBFWFBFQ1RfRVEodHJ1ZSwgIHRydWUpOwotICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShBU1NFUlRfRVEoZmFsc2UsIHRydWUpLAotICAgICAgICAgICAgICAgICAgICAg
ICAiVmFsdWUgb2Y6IHRydWUiKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeworICAgICAgYm9v
bCBmYWxzZV92YWx1ZSA9IGZhbHNlOworICAgICAgQVNTRVJUX0VRKGZhbHNlX3ZhbHVlLCB0cnVl
KTsKKyAgICB9LCAiVG8gYmUgZXF1YWwgdG86IHRydWUiKTsKIH0KIAogLy8gVGVzdHMgdXNpbmcg
aW50IHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCkBAIC00NDMzLDE4ICs0NzIwLDE4IEBA
IFRFU1QoRXFBc3NlcnRpb25UZXN0LCBXaWRlQ2hhcikgewogICBFWFBFQ1RfRVEoTCdiJywgTCdi
Jyk7CiAKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKEwnXDAnLCBMJ3gnKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBMJ3gnXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICIgIEFjdHVhbDogTCd4JyAoMTIwLCAweDc4KVxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IEwnXDAnXG4iCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICJXaGljaCBpczogTCdcMCcgKDAsIDB4MCkiKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICAgIEV4cGVjdGVkOiBMJ1wwJ1xuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICAgICAgV2hpY2ggaXM6IEwnXDAnICgwLCAweDApXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJUbyBiZSBlcXVhbCB0bzogTCd4J1xuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICAgICAgV2hpY2ggaXM6IEwneCcgKDEyMCwgMHg3OCkiKTsKIAogICBzdGF0aWMgd2NoYXJf
dCB3Y2hhcjsKICAgd2NoYXIgPSBMJ2InOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBF
Q1RfRVEoTCdhJywgd2NoYXIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAid2NoYXIiKTsK
LSAgd2NoYXIgPSBMJ1x4ODExOSc7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShM
J1x4ODEyMCcsIHdjaGFyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiB3Y2hh
ciIpOworICB3Y2hhciA9IDB4ODExOTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VR
KHN0YXRpY19jYXN0PHdjaGFyX3Q+KDB4ODEyMCksIHdjaGFyKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIlRvIGJlIGVxdWFsIHRvOiB3Y2hhciIpOwogfQogCiAvLyBUZXN0cyB1c2luZyA6OnN0
ZDo6c3RyaW5nIHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCkBAIC00NDYxLDcgKzQ3NDgs
NyBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgU3RkU3RyaW5nKSB7CiAgIC8vIENvbXBhcmVzIGEg
Y29uc3QgY2hhciogdG8gYW4gc3RkOjpzdHJpbmcgdGhhdCBoYXMgZGlmZmVyZW50CiAgIC8vIGNv
bnRlbnQKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKCJUZXN0IiwgOjpzdGQ6
OnN0cmluZygidGVzdCIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIjo6c3RkOjpzdHJp
bmcoXCJ0ZXN0XCIpIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICJcInRlc3RcIiIpOwog
CiAgIC8vIENvbXBhcmVzIGFuIHN0ZDo6c3RyaW5nIHRvIGEgY2hhciogdGhhdCBoYXMgZGlmZmVy
ZW50IGNvbnRlbnQuCiAgIGNoYXIqIGNvbnN0IHAxID0gY29uc3RfY2FzdDxjaGFyKj4oImZvbyIp
OwpAQCAtNDQ3MywyOCArNDc2MCwzMCBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgU3RkU3RyaW5n
KSB7CiAgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIHN0cjMoc3RyMSk7CiAgIHN0cjMuYXQoMikgPSAn
XDAnOwogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoc3RyMSwgc3RyMyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogc3RyM1xuIgotICAgICAgICAgICAgICAgICAg
ICAgICAiICBBY3R1YWw6IFwiQSBcXDAgaW4gdGhlIG1pZGRsZVwiIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICJUbyBiZSBlcXVhbCB0bzogc3RyM1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAiICAgICAgV2hpY2ggaXM6IFwiQSBcXDAgaW4gdGhlIG1pZGRsZVwiIik7CiB9CiAKICNpZiBH
VEVTVF9IQVNfU1REX1dTVFJJTkcKIAogLy8gVGVzdHMgdXNpbmcgOjpzdGQ6OndzdHJpbmcgdmFs
dWVzIGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4KIFRFU1QoRXFBc3NlcnRpb25UZXN0LCBTdGRXaWRl
U3RyaW5nKSB7Ci0gIC8vIENvbXBhcmVzIGFuIHN0ZDo6d3N0cmluZyB0byBhIGNvbnN0IHdjaGFy
X3QqIHRoYXQgaGFzIGlkZW50aWNhbAotICAvLyBjb250ZW50LgotICBFWFBFQ1RfRVEoOjpzdGQ6
OndzdHJpbmcoTCJUZXN0XHg4MTE5IiksIEwiVGVzdFx4ODExOSIpOwotCiAgIC8vIENvbXBhcmVz
IHR3byBpZGVudGljYWwgc3RkOjp3c3RyaW5ncy4KICAgY29uc3QgOjpzdGQ6OndzdHJpbmcgd3N0
cjEoTCJBICogaW4gdGhlIG1pZGRsZSIpOwogICBjb25zdCA6OnN0ZDo6d3N0cmluZyB3c3RyMih3
c3RyMSk7CiAgIEFTU0VSVF9FUSh3c3RyMSwgd3N0cjIpOwogCisgIC8vIENvbXBhcmVzIGFuIHN0
ZDo6d3N0cmluZyB0byBhIGNvbnN0IHdjaGFyX3QqIHRoYXQgaGFzIGlkZW50aWNhbAorICAvLyBj
b250ZW50LgorICBjb25zdCB3Y2hhcl90IGtUZXN0WDgxMTlbXSA9IHsgJ1QnLCAnZScsICdzJywg
J3QnLCAweDgxMTksICdcMCcgfTsKKyAgRVhQRUNUX0VRKDo6c3RkOjp3c3RyaW5nKGtUZXN0WDgx
MTkpLCBrVGVzdFg4MTE5KTsKKwogICAvLyBDb21wYXJlcyBhbiBzdGQ6OndzdHJpbmcgdG8gYSBj
b25zdCB3Y2hhcl90KiB0aGF0IGhhcyBkaWZmZXJlbnQKICAgLy8gY29udGVudC4KKyAgY29uc3Qg
d2NoYXJfdCBrVGVzdFg4MTIwW10gPSB7ICdUJywgJ2UnLCAncycsICd0JywgMHg4MTIwLCAnXDAn
IH07CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9F
USg6OnN0ZDo6d3N0cmluZyhMIlRlc3RceDgxMTkiKSwgTCJUZXN0XHg4MTIwIik7Ci0gIH0sICJM
XCJUZXN0XFx4ODEyMFwiIik7CisgICAgRVhQRUNUX0VRKDo6c3RkOjp3c3RyaW5nKGtUZXN0WDgx
MTkpLCBrVGVzdFg4MTIwKTsKKyAgfSwgImtUZXN0WDgxMjAiKTsKIAogICAvLyBDb21wYXJlcyB0
d28gc3RkOjp3c3RyaW5ncyB0aGF0IGhhdmUgZGlmZmVyZW50IGNvbnRlbnRzLCBvbmUgb2YKICAg
Ly8gd2hpY2ggaGF2aW5nIGEgTlVMIGNoYXJhY3RlciBpbiB0aGUgbWlkZGxlLgpAQCAtNDU0Niwx
OCArNDgzNSwyMCBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgR2xvYmFsU3RyaW5nKSB7CiAKIC8v
IFRlc3RzIHVzaW5nIDo6d3N0cmluZyB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgogVEVT
VChFcUFzc2VydGlvblRlc3QsIEdsb2JhbFdpZGVTdHJpbmcpIHsKLSAgLy8gQ29tcGFyZXMgYSBj
b25zdCB3Y2hhcl90KiB0byBhIDo6d3N0cmluZyB0aGF0IGhhcyBpZGVudGljYWwgY29udGVudC4K
LSAgQVNTRVJUX0VRKEwiVGVzdFx4ODExOSIsIDo6d3N0cmluZyhMIlRlc3RceDgxMTkiKSk7Ci0K
ICAgLy8gQ29tcGFyZXMgdHdvIGlkZW50aWNhbCA6OndzdHJpbmdzLgogICBzdGF0aWMgY29uc3Qg
Ojp3c3RyaW5nIHdzdHIxKEwiQSAqIGluIHRoZSBtaWRkbGUiKTsKICAgc3RhdGljIGNvbnN0IDo6
d3N0cmluZyB3c3RyMih3c3RyMSk7CiAgIEVYUEVDVF9FUSh3c3RyMSwgd3N0cjIpOwogCisgIC8v
IENvbXBhcmVzIGEgY29uc3Qgd2NoYXJfdCogdG8gYSA6OndzdHJpbmcgdGhhdCBoYXMgaWRlbnRp
Y2FsIGNvbnRlbnQuCisgIGNvbnN0IHdjaGFyX3Qga1Rlc3RYODExOVtdID0geyAnVCcsICdlJywg
J3MnLCAndCcsIDB4ODExOSwgJ1wwJyB9OworICBBU1NFUlRfRVEoa1Rlc3RYODExOSwgOjp3c3Ry
aW5nKGtUZXN0WDgxMTkpKTsKKwogICAvLyBDb21wYXJlcyBhIGNvbnN0IHdjaGFyX3QqIHRvIGEg
Ojp3c3RyaW5nIHRoYXQgaGFzIGRpZmZlcmVudAogICAvLyBjb250ZW50LgorICBjb25zdCB3Y2hh
cl90IGtUZXN0WDgxMjBbXSA9IHsgJ1QnLCAnZScsICdzJywgJ3QnLCAweDgxMjAsICdcMCcgfTsK
ICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX0VRKEwi
VGVzdFx4ODEyMCIsIDo6d3N0cmluZyhMIlRlc3RceDgxMTkiKSk7CisgICAgRVhQRUNUX0VRKGtU
ZXN0WDgxMjAsIDo6d3N0cmluZyhrVGVzdFg4MTE5KSk7CiAgIH0sICJUZXN0XFx4ODExOSIpOwog
CiAgIC8vIENvbXBhcmVzIGEgd2NoYXJfdCogdG8gYSA6OndzdHJpbmcgdGhhdCBoYXMgZGlmZmVy
ZW50IGNvbnRlbnQuCkBAIC00NTkwLDcgKzQ4ODEsNyBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwg
Q2hhclBvaW50ZXIpIHsKICAgQVNTRVJUX0VRKHAxLCBwMSk7CiAKICAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRVhQRUNUX0VRKHAwLCBwMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJW
YWx1ZSBvZjogcDIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRv
OiBwMiIpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEocDEsIHAyKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInAyIik7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFT
U0VSVF9FUShyZWludGVycHJldF9jYXN0PGNoYXIqPigweDEyMzQpLApAQCAtNDYxMiw3ICs0OTAz
LDcgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIFdpZGVDaGFyUG9pbnRlcikgewogICBFWFBFQ1Rf
RVEocDAsIHAwKTsKIAogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEocDAsIHAy
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBwMiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAiVG8gYmUgZXF1YWwgdG86IHAyIik7CiAgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9FUShwMSwgcDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAi
cDIiKTsKICAgdm9pZCogcHYzID0gKHZvaWQqKTB4MTIzNDsgIC8vIE5PTElOVApAQCAtNDYzMiw2
ICs0OTIzLDY4IEBAIFRFU1QoRXFBc3NlcnRpb25UZXN0LCBPdGhlclBvaW50ZXIpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIjB4MTIzNCIpOwogfQogCisvLyBBIGNsYXNzIHRoYXQgc3VwcG9y
dHMgYmluYXJ5IGNvbXBhcmlzb24gb3BlcmF0b3JzIGJ1dCBub3Qgc3RyZWFtaW5nLgorY2xhc3Mg
VW5wcmludGFibGVDaGFyIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFVucHJpbnRhYmxlQ2hhcihj
aGFyIGNoKSA6IGNoYXJfKGNoKSB7fQorCisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVbnByaW50
YWJsZUNoYXImIHJocykgY29uc3QgeworICAgIHJldHVybiBjaGFyXyA9PSByaHMuY2hhcl87Cisg
IH0KKyAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBjb25zdCB7
CisgICAgcmV0dXJuIGNoYXJfICE9IHJocy5jaGFyXzsKKyAgfQorICBib29sIG9wZXJhdG9yPChj
b25zdCBVbnByaW50YWJsZUNoYXImIHJocykgY29uc3QgeworICAgIHJldHVybiBjaGFyXyA8IHJo
cy5jaGFyXzsKKyAgfQorICBib29sIG9wZXJhdG9yPD0oY29uc3QgVW5wcmludGFibGVDaGFyJiBy
aHMpIGNvbnN0IHsKKyAgICByZXR1cm4gY2hhcl8gPD0gcmhzLmNoYXJfOworICB9CisgIGJvb2wg
b3BlcmF0b3I+KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBjb25zdCB7CisgICAgcmV0dXJu
IGNoYXJfID4gcmhzLmNoYXJfOworICB9CisgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBVbnByaW50
YWJsZUNoYXImIHJocykgY29uc3QgeworICAgIHJldHVybiBjaGFyXyA+PSByaHMuY2hhcl87Cisg
IH0KKworIHByaXZhdGU6CisgIGNoYXIgY2hhcl87Cit9OworCisvLyBUZXN0cyB0aGF0IEFTU0VS
VF9FUSgpIGFuZCBmcmllbmRzIGRvbid0IHJlcXVpcmUgdGhlIGFyZ3VtZW50cyB0bworLy8gYmUg
cHJpbnRhYmxlLgorVEVTVChDb21wYXJpc29uQXNzZXJ0aW9uVGVzdCwgQWNjZXB0c1VucHJpbnRh
YmxlQXJncykgeworICBjb25zdCBVbnByaW50YWJsZUNoYXIgeCgneCcpLCB5KCd5Jyk7CisgIEFT
U0VSVF9FUSh4LCB4KTsKKyAgRVhQRUNUX05FKHgsIHkpOworICBBU1NFUlRfTFQoeCwgeSk7Cisg
IEVYUEVDVF9MRSh4LCB5KTsKKyAgQVNTRVJUX0dUKHksIHgpOworICBFWFBFQ1RfR0UoeCwgeCk7
CisKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHgsIHkpLCAiMS1ieXRlIG9i
amVjdCA8Nzg+Iik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSh4LCB5KSwg
IjEtYnl0ZSBvYmplY3QgPDc5PiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1Rf
TFQoeSwgeSksICIxLWJ5dGUgb2JqZWN0IDw3OT4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoRVhQRUNUX0dUKHgsIHkpLCAiMS1ieXRlIG9iamVjdCA8Nzg+Iik7CisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9HVCh4LCB5KSwgIjEtYnl0ZSBvYmplY3QgPDc5PiIpOworCisg
IC8vIENvZGUgdGVzdGVkIGJ5IEVYUEVDVF9GQVRBTF9GQUlMVVJFIGNhbm5vdCByZWZlcmVuY2Ug
bG9jYWwKKyAgLy8gdmFyaWFibGVzLCBzbyB3ZSBoYXZlIHRvIHdyaXRlIFVucHJpbnRhYmxlQ2hh
cigneCcpIGluc3RlYWQgb2YgeC4KKyNpZm5kZWYgX19CT1JMQU5EQ19fCisgIC8vIElDRSdzIGlu
IEMrK0J1aWxkZXIuCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9ORShVbnByaW50YWJs
ZUNoYXIoJ3gnKSwgVW5wcmludGFibGVDaGFyKCd4JykpLAorICAgICAgICAgICAgICAgICAgICAg
ICAiMS1ieXRlIG9iamVjdCA8Nzg+Iik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9M
RShVbnByaW50YWJsZUNoYXIoJ3knKSwgVW5wcmludGFibGVDaGFyKCd4JykpLAorICAgICAgICAg
ICAgICAgICAgICAgICAiMS1ieXRlIG9iamVjdCA8Nzg+Iik7CisjZW5kaWYKKyAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoQVNTRVJUX0xFKFVucHJpbnRhYmxlQ2hhcigneScpLCBVbnByaW50YWJsZUNo
YXIoJ3gnKSksCisgICAgICAgICAgICAgICAgICAgICAgICIxLWJ5dGUgb2JqZWN0IDw3OT4iKTsK
KyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0dFKFVucHJpbnRhYmxlQ2hhcigneCcpLCBV
bnByaW50YWJsZUNoYXIoJ3knKSksCisgICAgICAgICAgICAgICAgICAgICAgICIxLWJ5dGUgb2Jq
ZWN0IDw3OD4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0dFKFVucHJpbnRhYmxl
Q2hhcigneCcpLCBVbnByaW50YWJsZUNoYXIoJ3knKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICIxLWJ5dGUgb2JqZWN0IDw3OT4iKTsKK30KKwogLy8gVGVzdHMgdGhlIEZSSUVORF9URVNUIG1h
Y3JvLgogCiAvLyBUaGlzIGNsYXNzIGhhcyBhIHByaXZhdGUgbWVtYmVyIHdlIHdhbnQgdG8gdGVz
dC4gIFdlIHdpbGwgdGVzdCBpdApAQCAtNDc0OSw3ICs1MTAyLDcgQEAgVEVTVChBc3NlcnRpb25S
ZXN1bHRUZXN0LCBDb25zdHJ1Y3Rpb25Xb3JrcykgewogICBFWFBFQ1RfU1RSRVEoImdoaSIsIHI1
Lm1lc3NhZ2UoKSk7CiB9CiAKLS8vIFRlc3RzIHRoYXQgdGhlIG5lZ2F0aW9uIGZpcHMgdGhlIHBy
ZWRpY2F0ZSByZXN1bHQgYnV0IGtlZXBzIHRoZSBtZXNzYWdlLgorLy8gVGVzdHMgdGhhdCB0aGUg
bmVnYXRpb24gZmxpcHMgdGhlIHByZWRpY2F0ZSByZXN1bHQgYnV0IGtlZXBzIHRoZSBtZXNzYWdl
LgogVEVTVChBc3NlcnRpb25SZXN1bHRUZXN0LCBOZWdhdGlvbldvcmtzKSB7CiAgIEFzc2VydGlv
blJlc3VsdCByMSA9IEFzc2VydGlvblN1Y2Nlc3MoKSA8PCAiYWJjIjsKICAgRVhQRUNUX0ZBTFNF
KCFyMSk7CkBAIC00NzY2LDYgKzUxMTksMzcgQEAgVEVTVChBc3NlcnRpb25SZXN1bHRUZXN0LCBT
dHJlYW1pbmdXb3JrcykgewogICBFWFBFQ1RfU1RSRVEoImFiY2QwdHJ1ZSIsIHIubWVzc2FnZSgp
KTsKIH0KIAorVEVTVChBc3NlcnRpb25SZXN1bHRUZXN0LCBDYW5TdHJlYW1Pc3RyZWFtTWFuaXB1
bGF0b3JzKSB7CisgIEFzc2VydGlvblJlc3VsdCByID0gQXNzZXJ0aW9uU3VjY2VzcygpOworICBy
IDw8ICJEYXRhIiA8PCBzdGQ6OmVuZGwgPDwgc3RkOjpmbHVzaCA8PCBzdGQ6OmVuZHMgPDwgIldp
bGwgYmUgdmlzaWJsZSI7CisgIEVYUEVDVF9TVFJFUSgiRGF0YVxuXFwwV2lsbCBiZSB2aXNpYmxl
Iiwgci5tZXNzYWdlKCkpOworfQorCisvLyBUaGUgbmV4dCB0ZXN0IHVzZXMgZXhwbGljaXQgY29u
dmVyc2lvbiBvcGVyYXRvcnMgLS0gYSBDKysxMSBmZWF0dXJlLgorI2lmIEdURVNUX0xBTkdfQ1hY
MTEKKworVEVTVChBc3NlcnRpb25SZXN1bHRUZXN0LCBDb25zdHJ1Y3RpYmxlRnJvbUNvbnRleHR1
YWxseUNvbnZlcnRpYmxlVG9Cb29sKSB7CisgIHN0cnVjdCBFeHBsaWNpdGx5Q29udmVydGlibGVU
b0Jvb2wgeworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiB2YWx1
ZTsgfQorICAgIGJvb2wgdmFsdWU7CisgIH07CisgIEV4cGxpY2l0bHlDb252ZXJ0aWJsZVRvQm9v
bCB2MSA9IHtmYWxzZX07CisgIEV4cGxpY2l0bHlDb252ZXJ0aWJsZVRvQm9vbCB2MiA9IHt0cnVl
fTsKKyAgRVhQRUNUX0ZBTFNFKHYxKTsKKyAgRVhQRUNUX1RSVUUodjIpOworfQorCisjZW5kaWYg
IC8vIEdURVNUX0xBTkdfQ1hYMTEKKworc3RydWN0IENvbnZlcnRpYmxlVG9Bc3NlcnRpb25SZXN1
bHQgeworICBvcGVyYXRvciBBc3NlcnRpb25SZXN1bHQoKSBjb25zdCB7IHJldHVybiBBc3NlcnRp
b25SZXN1bHQodHJ1ZSk7IH0KK307CisKK1RFU1QoQXNzZXJ0aW9uUmVzdWx0VGVzdCwgQ29uc3Ry
dWN0aWJsZUZyb21JbXBsaWNpdGx5Q29udmVydGlibGUpIHsKKyAgQ29udmVydGlibGVUb0Fzc2Vy
dGlvblJlc3VsdCBvYmo7CisgIEVYUEVDVF9UUlVFKG9iaik7Cit9CisKIC8vIFRlc3RzIHN0cmVh
bWluZyBhIHVzZXIgdHlwZSB3aG9zZSBkZWZpbml0aW9uIGFuZCBvcGVyYXRvciA8PCBhcmUKIC8v
IGJvdGggaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCiBjbGFzcyBCYXNlIHsKQEAgLTQ5NTAsNiAr
NTMzNCw1OSBAQCBURVNUX0YoVGVzdEluZm9UZXN0LCByZXN1bHQpIHsKICAgQVNTRVJUX0VRKDAs
IEdldFRlc3RSZXN1bHQodGVzdF9pbmZvKS0+dG90YWxfcGFydF9jb3VudCgpKTsKIH0KIAorI2Rl
ZmluZSBWRVJJRllfQ09ERV9MT0NBVElPTiBcCisgIGNvbnN0IGludCBleHBlY3RlZF9saW5lID0g
X19MSU5FX18gLSAxOyBcCisgIGNvbnN0IFRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPSBHZXRV
bml0VGVzdEltcGwoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsgXAorICBBU1NFUlRfVFJVRSh0ZXN0
X2luZm8pOyBcCisgIEVYUEVDVF9TVFJFUShfX0ZJTEVfXywgdGVzdF9pbmZvLT5maWxlKCkpOyBc
CisgIEVYUEVDVF9FUShleHBlY3RlZF9saW5lLCB0ZXN0X2luZm8tPmxpbmUoKSkKKworVEVTVChD
b2RlTG9jYXRpb25Gb3JURVNULCBWZXJpZnkpIHsKKyAgVkVSSUZZX0NPREVfTE9DQVRJT047Cit9
CisKK2NsYXNzIENvZGVMb2NhdGlvbkZvclRFU1RGIDogcHVibGljIFRlc3QgeworfTsKKworVEVT
VF9GKENvZGVMb2NhdGlvbkZvclRFU1RGLCBWZXJpZnkpIHsKKyAgVkVSSUZZX0NPREVfTE9DQVRJ
T047Cit9CisKK2NsYXNzIENvZGVMb2NhdGlvbkZvclRFU1RQIDogcHVibGljIFRlc3RXaXRoUGFy
YW08aW50PiB7Cit9OworCitURVNUX1AoQ29kZUxvY2F0aW9uRm9yVEVTVFAsIFZlcmlmeSkgewor
ICBWRVJJRllfQ09ERV9MT0NBVElPTjsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoLCBD
b2RlTG9jYXRpb25Gb3JURVNUUCwgVmFsdWVzKDApKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitjbGFzcyBDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1QgOiBwdWJsaWMgVGVzdCB7Cit9OworCitU
WVBFRF9URVNUX0NBU0UoQ29kZUxvY2F0aW9uRm9yVFlQRURURVNULCBpbnQpOworCitUWVBFRF9U
RVNUKENvZGVMb2NhdGlvbkZvclRZUEVEVEVTVCwgVmVyaWZ5KSB7CisgIFZFUklGWV9DT0RFX0xP
Q0FUSU9OOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIENvZGVMb2NhdGlvbkZv
clRZUEVEVEVTVFAgOiBwdWJsaWMgVGVzdCB7Cit9OworCitUWVBFRF9URVNUX0NBU0VfUChDb2Rl
TG9jYXRpb25Gb3JUWVBFRFRFU1RQKTsKKworVFlQRURfVEVTVF9QKENvZGVMb2NhdGlvbkZvclRZ
UEVEVEVTVFAsIFZlcmlmeSkgeworICBWRVJJRllfQ09ERV9MT0NBVElPTjsKK30KKworUkVHSVNU
RVJfVFlQRURfVEVTVF9DQVNFX1AoQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCwgVmVyaWZ5KTsK
KworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIENvZGVMb2NhdGlvbkZvclRZUEVE
VEVTVFAsIGludCk7CisKKyN1bmRlZiBWRVJJRllfQ09ERV9MT0NBVElPTgorCiAvLyBUZXN0cyBz
ZXR0aW5nIHVwIGFuZCB0ZWFyaW5nIGRvd24gYSB0ZXN0IGNhc2UuCiAKIGNsYXNzIFNldFVwVGVz
dENhc2VUZXN0IDogcHVibGljIFRlc3QgewpAQCAtNTAzMCw2ICs1NDY3LDcgQEAgc3RydWN0IEZs
YWdzIHsKICAgICAgICAgICAgIHJlcGVhdCgxKSwKICAgICAgICAgICAgIHNodWZmbGUoZmFsc2Up
LAogICAgICAgICAgICAgc3RhY2tfdHJhY2VfZGVwdGgoa01heFN0YWNrVHJhY2VEZXB0aCksCisg
ICAgICAgICAgICBzdHJlYW1fcmVzdWx0X3RvKCIiKSwKICAgICAgICAgICAgIHRocm93X29uX2Zh
aWx1cmUoZmFsc2UpIHt9CiAKICAgLy8gRmFjdG9yeSBtZXRob2RzLgpAQCAtNTEzMCw2ICs1NTY4
LDE0IEBAIHN0cnVjdCBGbGFncyB7CiAgICAgcmV0dXJuIGZsYWdzOwogICB9CiAKKyAgLy8gQ3Jl
YXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3Rv
KSBmbGFnIGhhcworICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCisgIHN0YXRpYyBGbGFncyBTdHJlYW1S
ZXN1bHRUbyhjb25zdCBjaGFyKiBzdHJlYW1fcmVzdWx0X3RvKSB7CisgICAgRmxhZ3MgZmxhZ3M7
CisgICAgZmxhZ3Muc3RyZWFtX3Jlc3VsdF90byA9IHN0cmVhbV9yZXN1bHRfdG87CisgICAgcmV0
dXJuIGZsYWdzOworICB9CisKICAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUg
Z3Rlc3RfdGhyb3dfb25fZmFpbHVyZSBmbGFnIGhhcwogICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCiAg
IHN0YXRpYyBGbGFncyBUaHJvd09uRmFpbHVyZShib29sIHRocm93X29uX2ZhaWx1cmUpIHsKQEAg
LTUxNTEsNiArNTU5Nyw3IEBAIHN0cnVjdCBGbGFncyB7CiAgIEludDMyIHJlcGVhdDsKICAgYm9v
bCBzaHVmZmxlOwogICBJbnQzMiBzdGFja190cmFjZV9kZXB0aDsKKyAgY29uc3QgY2hhciogc3Ry
ZWFtX3Jlc3VsdF90bzsKICAgYm9vbCB0aHJvd19vbl9mYWlsdXJlOwogfTsKIApAQCAtNTE3MSw2
ICs1NjE4LDcgQEAgY2xhc3MgSW5pdEdvb2dsZVRlc3RUZXN0IDogcHVibGljIFRlc3QgewogICAg
IEdURVNUX0ZMQUcocmVwZWF0KSA9IDE7CiAgICAgR1RFU1RfRkxBRyhzaHVmZmxlKSA9IGZhbHNl
OwogICAgIEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpID0ga01heFN0YWNrVHJhY2VEZXB0
aDsKKyAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pID0gIiI7CiAgICAgR1RFU1RfRkxB
Ryh0aHJvd19vbl9mYWlsdXJlKSA9IGZhbHNlOwogICB9CiAKQEAgLTUxOTksOCArNTY0NywxMCBA
QCBjbGFzcyBJbml0R29vZ2xlVGVzdFRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgRVhQRUNUX0VR
KGV4cGVjdGVkLnJhbmRvbV9zZWVkLCBHVEVTVF9GTEFHKHJhbmRvbV9zZWVkKSk7CiAgICAgRVhQ
RUNUX0VRKGV4cGVjdGVkLnJlcGVhdCwgR1RFU1RfRkxBRyhyZXBlYXQpKTsKICAgICBFWFBFQ1Rf
RVEoZXhwZWN0ZWQuc2h1ZmZsZSwgR1RFU1RfRkxBRyhzaHVmZmxlKSk7Ci0gICAgRVhQRUNUX0VR
KGV4cGVjdGVkLnRocm93X29uX2ZhaWx1cmUsIEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkp
OwogICAgIEVYUEVDVF9FUShleHBlY3RlZC5zdGFja190cmFjZV9kZXB0aCwgR1RFU1RfRkxBRyhz
dGFja190cmFjZV9kZXB0aCkpOworICAgIEVYUEVDVF9TVFJFUShleHBlY3RlZC5zdHJlYW1fcmVz
dWx0X3RvLAorICAgICAgICAgICAgICAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pLmNf
c3RyKCkpOworICAgIEVYUEVDVF9FUShleHBlY3RlZC50aHJvd19vbl9mYWlsdXJlLCBHVEVTVF9G
TEFHKHRocm93X29uX2ZhaWx1cmUpKTsKICAgfQogCiAgIC8vIFBhcnNlcyBhIGNvbW1hbmQgbGlu
ZSAoc3BlY2lmaWVkIGJ5IGFyZ2MxIGFuZCBhcmd2MSksIHRoZW4KQEAgLTUyMTMsMTYgKzU2NjMs
MTYgQEAgY2xhc3MgSW5pdEdvb2dsZVRlc3RUZXN0IDogcHVibGljIFRlc3QgewogICAgIGNvbnN0
IGJvb2wgc2F2ZWRfaGVscF9mbGFnID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6Z19oZWxwX2ZsYWc7
CiAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Z19oZWxwX2ZsYWcgPSBmYWxzZTsKIAotI2lmIEdU
RVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCisjaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVD
VElPTgogICAgIENhcHR1cmVTdGRvdXQoKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9S
RURJUkVDVElPTl8KKyNlbmRpZgogCiAgICAgLy8gUGFyc2VzIHRoZSBjb21tYW5kIGxpbmUuCiAg
ICAgaW50ZXJuYWw6OlBhcnNlR29vZ2xlVGVzdEZsYWdzT25seSgmYXJnYzEsIGNvbnN0X2Nhc3Q8
Q2hhclR5cGUqKj4oYXJndjEpKTsKIAotI2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05f
Ci0gICAgY29uc3QgU3RyaW5nIGNhcHR1cmVkX3N0ZG91dCA9IEdldENhcHR1cmVkU3Rkb3V0KCk7
Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCisjaWYgR1RFU1RfSEFT
X1NUUkVBTV9SRURJUkVDVElPTgorICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNhcHR1cmVkX3N0ZG91
dCA9IEdldENhcHR1cmVkU3Rkb3V0KCk7CisjZW5kaWYKIAogICAgIC8vIFZlcmlmaWVzIHRoZSBm
bGFnIHZhbHVlcy4KICAgICBDaGVja0ZsYWdzKGV4cGVjdGVkKTsKQEAgLTUyMzUsNyArNTY4NSw3
IEBAIGNsYXNzIEluaXRHb29nbGVUZXN0VGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICAvLyBoZWxw
IG1lc3NhZ2UgZm9yIHRoZSBmbGFncyBpdCByZWNvZ25pemVzLgogICAgIEVYUEVDVF9FUShzaG91
bGRfcHJpbnRfaGVscCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Z19oZWxwX2ZsYWcpOwogCi0jaWYg
R1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElS
RUNUSU9OCiAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRfaGVscF9mcmFnbWVudCA9CiAg
ICAgICAgICJUaGlzIHByb2dyYW0gY29udGFpbnMgdGVzdHMgd3JpdHRlbiB1c2luZyI7CiAgICAg
aWYgKHNob3VsZF9wcmludF9oZWxwKSB7CkBAIC01MjQ0LDEzICs1Njk0LDE0IEBAIGNsYXNzIElu
aXRHb29nbGVUZXN0VGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICAgIEVYUEVDVF9QUkVEX0ZPUk1B
VDIoSXNOb3RTdWJzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2hl
bHBfZnJhZ21lbnQsIGNhcHR1cmVkX3N0ZG91dCk7CiAgICAgfQotI2VuZGlmICAvLyBHVEVTVF9I
QVNfU1RSRUFNX1JFRElSRUNUSU9OXworI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElS
RUNUSU9OCiAKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpnX2hlbHBfZmxhZyA9IHNhdmVkX2hl
bHBfZmxhZzsKICAgfQogCiAgIC8vIFRoaXMgbWFjcm8gd3JhcHMgVGVzdFBhcnNpbmdGbGFncyBz
LnQuIHRoZSB1c2VyIGRvZXNuJ3QgbmVlZAogICAvLyB0byBzcGVjaWZ5IHRoZSBhcnJheSBzaXpl
cy4KKwogI2RlZmluZSBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YxLCBhcmd2MiwgZXhw
ZWN0ZWQsIHNob3VsZF9wcmludF9oZWxwKSBcCiAgIFRlc3RQYXJzaW5nRmxhZ3Moc2l6ZW9mKGFy
Z3YxKS9zaXplb2YoKmFyZ3YxKSAtIDEsIGFyZ3YxLCBcCiAgICAgICAgICAgICAgICAgICAgc2l6
ZW9mKGFyZ3YyKS9zaXplb2YoKmFyZ3YyKSAtIDEsIGFyZ3YyLCBcCkBAIC01ODYxLDYgKzYzMTIs
MjIgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU3RhY2tUcmFjZURlcHRoKSB7CiAgIEdU
RVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpTdGFja1RyYWNlRGVw
dGgoNSksIGZhbHNlKTsKIH0KIAorVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU3RyZWFtUmVz
dWx0VG8pIHsKKyAgY29uc3QgY2hhciogYXJndltdID0geworICAgICJmb28uZXhlIiwKKyAgICAi
LS1ndGVzdF9zdHJlYW1fcmVzdWx0X3RvPWxvY2FsaG9zdDoxMjM0IiwKKyAgICBOVUxMCisgIH07
CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAor
ICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oCisgICAgICBhcmd2LCBhcmd2Miwg
RmxhZ3M6OlN0cmVhbVJlc3VsdFRvKCJsb2NhbGhvc3Q6MTIzNCIpLCBmYWxzZSk7Cit9CisKIC8v
IFRlc3RzIHBhcnNpbmcgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlLgogVEVTVF9GKEluaXRHb29n
bGVUZXN0VGVzdCwgVGhyb3dPbkZhaWx1cmVXaXRob3V0VmFsdWUpIHsKICAgY29uc3QgY2hhciog
YXJndltdID0gewpAQCAtNTkzNSw3ICs2NDAyLDEwOCBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RU
ZXN0LCBXaWRlU3RyaW5ncykgewogCiAgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwg
YXJndjIsIGV4cGVjdGVkX2ZsYWdzLCBmYWxzZSk7CiB9Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworI2lmIEdURVNUX1VTRV9PV05f
RkxBR0ZJTEVfRkxBR18KK2NsYXNzIEZsYWdmaWxlVGVzdCA6IHB1YmxpYyBJbml0R29vZ2xlVGVz
dFRlc3QgeworIHB1YmxpYzoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIEluaXRHb29n
bGVUZXN0VGVzdDo6U2V0VXAoKTsKKworICAgIHRlc3RkYXRhX3BhdGhfLlNldChpbnRlcm5hbDo6
RmlsZVBhdGgoCisgICAgICAgIGludGVybmFsOjpUZW1wRGlyKCkgKyBpbnRlcm5hbDo6R2V0Q3Vy
cmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKworICAgICAgICAiX2ZsYWdmaWxlX3Rlc3Qi
KSk7CisgICAgdGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5j
X3N0cigpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVGb2xkZXIoKSk7
CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgdGVzdGluZzo6aW50ZXJu
YWw6OnBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKKyAgICBJbml0R29vZ2xl
VGVzdFRlc3Q6OlRlYXJEb3duKCk7CisgIH0KKworICBpbnRlcm5hbDo6RmlsZVBhdGggQ3JlYXRl
RmxhZ2ZpbGUoY29uc3QgY2hhciogY29udGVudHMpIHsKKyAgICBpbnRlcm5hbDo6RmlsZVBhdGgg
ZmlsZV9wYXRoKGludGVybmFsOjpGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFtZSgKKyAg
ICAgICAgdGVzdGRhdGFfcGF0aF8sIGludGVybmFsOjpGaWxlUGF0aCgidW5pcXVlIiksICJ0eHQi
KSk7CisgICAgRklMRSogZiA9IHRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6Rk9wZW4oZmlsZV9w
YXRoLmNfc3RyKCksICJ3Iik7CisgICAgZnByaW50ZihmLCAiJXMiLCBjb250ZW50cyk7CisgICAg
ZmNsb3NlKGYpOworICAgIHJldHVybiBmaWxlX3BhdGg7CisgIH0KKworIHByaXZhdGU6CisgIGlu
dGVybmFsOjpGaWxlUGF0aCB0ZXN0ZGF0YV9wYXRoXzsKK307CisKKy8vIFRlc3RzIGFuIGVtcHR5
IGZsYWdmaWxlLgorVEVTVF9GKEZsYWdmaWxlVGVzdCwgRW1wdHkpIHsKKyAgaW50ZXJuYWw6OkZp
bGVQYXRoIGZsYWdmaWxlX3BhdGgoQ3JlYXRlRmxhZ2ZpbGUoIiIpKTsKKyAgc3RkOjpzdHJpbmcg
ZmxhZ2ZpbGVfZmxhZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0iIEdURVNUX0ZMQUdfUFJFRklY
XyAiZmxhZ2ZpbGU9IikgKyBmbGFnZmlsZV9wYXRoLmNfc3RyKCk7CisKKyAgY29uc3QgY2hhciog
YXJndltdID0geworICAgICJmb28uZXhlIiwKKyAgICBmbGFnZmlsZV9mbGFnLmNfc3RyKCksCisg
ICAgTlVMTAorICB9OworCisgIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7CisgICAgImZvby5leGUi
LAorICAgIE5VTEwKKyAgfTsKKworICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFy
Z3YyLCBGbGFncygpLCBmYWxzZSk7Cit9CisKKy8vIFRlc3RzIHBhc3NpbmcgYSBub24tZW1wdHkg
LS1ndGVzdF9maWx0ZXIgZmxhZyB2aWEgLS1ndGVzdF9mbGFnZmlsZS4KK1RFU1RfRihGbGFnZmls
ZVRlc3QsIEZpbHRlck5vbkVtcHR5KSB7CisgIGludGVybmFsOjpGaWxlUGF0aCBmbGFnZmlsZV9w
YXRoKENyZWF0ZUZsYWdmaWxlKAorICAgICAgIi0tIiAgR1RFU1RfRkxBR19QUkVGSVhfICAiZmls
dGVyPWFiYyIpKTsKKyAgc3RkOjpzdHJpbmcgZmxhZ2ZpbGVfZmxhZyA9CisgICAgICBzdGQ6OnN0
cmluZygiLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiZmxhZ2ZpbGU9IikgKyBmbGFnZmlsZV9wYXRo
LmNfc3RyKCk7CisKKyAgY29uc3QgY2hhciogYXJndltdID0geworICAgICJmb28uZXhlIiwKKyAg
ICBmbGFnZmlsZV9mbGFnLmNfc3RyKCksCisgICAgTlVMTAorICB9OworCisgIGNvbnN0IGNoYXIq
IGFyZ3YyW10gPSB7CisgICAgImZvby5leGUiLAorICAgIE5VTEwKKyAgfTsKKworICBHVEVTVF9U
RVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6RmlsdGVyKCJhYmMiKSwgZmFs
c2UpOworfQorCisvLyBUZXN0cyBwYXNzaW5nIHNldmVyYWwgZmxhZ3MgdmlhIC0tZ3Rlc3RfZmxh
Z2ZpbGUuCitURVNUX0YoRmxhZ2ZpbGVUZXN0LCBTZXZlcmFsRmxhZ3MpIHsKKyAgaW50ZXJuYWw6
OkZpbGVQYXRoIGZsYWdmaWxlX3BhdGgoQ3JlYXRlRmxhZ2ZpbGUoCisgICAgICAiLS0iICBHVEVT
VF9GTEFHX1BSRUZJWF8gICJmaWx0ZXI9YWJjXG4iCisgICAgICAiLS0iICBHVEVTVF9GTEFHX1BS
RUZJWF8gICJicmVha19vbl9mYWlsdXJlXG4iCisgICAgICAiLS0iICBHVEVTVF9GTEFHX1BSRUZJ
WF8gICJsaXN0X3Rlc3RzIikpOworICBzdGQ6OnN0cmluZyBmbGFnZmlsZV9mbGFnID0KKyAgICAg
IHN0ZDo6c3RyaW5nKCItLSIgR1RFU1RfRkxBR19QUkVGSVhfICJmbGFnZmlsZT0iKSArIGZsYWdm
aWxlX3BhdGguY19zdHIoKTsKKworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgImZvby5l
eGUiLAorICAgIGZsYWdmaWxlX2ZsYWcuY19zdHIoKSwKKyAgICBOVUxMCisgIH07CisKKyAgY29u
c3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAorICB9OworCisg
IEZsYWdzIGV4cGVjdGVkX2ZsYWdzOworICBleHBlY3RlZF9mbGFncy5icmVha19vbl9mYWlsdXJl
ID0gdHJ1ZTsKKyAgZXhwZWN0ZWRfZmxhZ3MuZmlsdGVyID0gImFiYyI7CisgIGV4cGVjdGVkX2Zs
YWdzLmxpc3RfdGVzdHMgPSB0cnVlOworCisgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJn
diwgYXJndjIsIGV4cGVjdGVkX2ZsYWdzLCBmYWxzZSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX1VT
RV9PV05fRkxBR0ZJTEVfRkxBR18KIAogLy8gVGVzdHMgY3VycmVudF90ZXN0X2luZm8oKSBpbiBV
bml0VGVzdC4KIGNsYXNzIEN1cnJlbnRUZXN0SW5mb1Rlc3QgOiBwdWJsaWMgVGVzdCB7CkBAIC02
MDQ4LDcgKzY2MTYsNyBAQCBURVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBVbmNvbmRpdGlv
bmFsKSB7CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFNpbGVuY2VzIHdhcm5pbmdzOiAiQ29u
ZGl0aW9uIGlzIGFsd2F5cyB0cnVlIiwgIlVucmVhY2hhYmxlIGNvZGUiCi0jcHJhZ21hIG9wdGlv
biBwdXNoIC13LWNjYyAtdy1yY2gKKyMgcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gK
ICNlbmRpZgogCiBURVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBUcnV0aCkgewpAQCAtNjA3
MSw3ICs2NjM5LDcgQEAgVEVTVChTdHJlYW1pbmdBc3NlcnRpb25zVGVzdCwgVHJ1dGgyKSB7CiAK
ICNpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3Vz
ICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXByZXNzZWQgdGhlbQotI3ByYWdtYSBvcHRpb24gcG9w
CisjIHByYWdtYSBvcHRpb24gcG9wCiAjZW5kaWYKIAogVEVTVChTdHJlYW1pbmdBc3NlcnRpb25z
VGVzdCwgSW50ZWdlckVxdWFscykgewpAQCAtNjI2NCwxNSArNjgzMiw0MCBAQCBURVNUKENvbG9y
ZWRPdXRwdXRUZXN0LCBVc2VzQ29sb3JzV2hlblRlcm1TdXBwb3J0c0NvbG9ycykgewogICBTZXRF
bnYoIlRFUk0iLCAieHRlcm0tY29sb3IiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgogICBF
WFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCiAK
KyAgU2V0RW52KCJURVJNIiwgInh0ZXJtLTI1NmNvbG9yIik7ICAvLyBURVJNIHN1cHBvcnRzIGNv
bG9ycy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlz
IGEgVFRZLgorCisgIFNldEVudigiVEVSTSIsICJzY3JlZW4iKTsgIC8vIFRFUk0gc3VwcG9ydHMg
Y29sb3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQg
aXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInNjcmVlbi0yNTZjb2xvciIpOyAgLy8gVEVS
TSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsg
IC8vIFN0ZG91dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAidG11eCIpOyAgLy8gVEVS
TSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsg
IC8vIFN0ZG91dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAidG11eC0yNTZjb2xvciIp
OyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9y
KHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAicnh2dC11
bmljb2RlIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxk
VXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgorCisgIFNldEVudigiVEVSTSIs
ICJyeHZ0LXVuaWNvZGUtMjU2Y29sb3IiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBF
WFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisK
ICAgU2V0RW52KCJURVJNIiwgImxpbnV4Iik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KICAg
RVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgor
CisgIFNldEVudigiVEVSTSIsICJjeWd3aW4iKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgor
ICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFku
CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIH0KIAogLy8gVmVyaWZpZXMgdGhhdCBTdGF0
aWNBc3NlcnRUeXBlRXEgd29ya3MgaW4gYSBuYW1lc3BhY2Ugc2NvcGUuCiAKLXN0YXRpYyBib29s
IGR1bW15MSA9IFN0YXRpY0Fzc2VydFR5cGVFcTxib29sLCBib29sPigpOwotc3RhdGljIGJvb2wg
ZHVtbXkyID0gU3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGludCwgY29uc3QgaW50PigpOworc3Rh
dGljIGJvb2wgZHVtbXkxIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gU3RhdGljQXNzZXJ0VHlw
ZUVxPGJvb2wsIGJvb2w+KCk7CitzdGF0aWMgYm9vbCBkdW1teTIgR1RFU1RfQVRUUklCVVRFX1VO
VVNFRF8gPQorICAgIFN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCBpbnQsIGNvbnN0IGludD4oKTsK
IAogLy8gVmVyaWZpZXMgdGhhdCBTdGF0aWNBc3NlcnRUeXBlRXEgd29ya3MgaW4gYSBjbGFzcy4K
IApAQCAtNjQ2Niw3ICs3MDU5LDcgQEAgVEVTVChUZXN0RXZlbnRMaXN0ZW5lcnNUZXN0LCBBcHBl
bmQpIHsKIC8vIG9yZGVyLgogY2xhc3MgU2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIgOiBwdWJsaWMg
RW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CiAgcHVibGljOgotICBTZXF1ZW5jZVRlc3RpbmdMaXN0
ZW5lcihzdGQ6OnZlY3RvcjxTdHJpbmc+KiB2ZWN0b3IsIGNvbnN0IGNoYXIqIGlkKQorICBTZXF1
ZW5jZVRlc3RpbmdMaXN0ZW5lcihzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIHZlY3RvciwgY29u
c3QgY2hhciogaWQpCiAgICAgICA6IHZlY3Rvcl8odmVjdG9yKSwgaWRfKGlkKSB7fQogCiAgcHJv
dGVjdGVkOgpAQCAtNjQ4OSwyMCArNzA4MiwyMCBAQCBjbGFzcyBTZXF1ZW5jZVRlc3RpbmdMaXN0
ZW5lciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKICAgfQogCiAgcHJpdmF0ZToK
LSAgU3RyaW5nIEdldEV2ZW50RGVzY3JpcHRpb24oY29uc3QgY2hhciogbWV0aG9kKSB7CisgIHN0
ZDo6c3RyaW5nIEdldEV2ZW50RGVzY3JpcHRpb24oY29uc3QgY2hhciogbWV0aG9kKSB7CiAgICAg
TWVzc2FnZSBtZXNzYWdlOwogICAgIG1lc3NhZ2UgPDwgaWRfIDw8ICIuIiA8PCBtZXRob2Q7CiAg
ICAgcmV0dXJuIG1lc3NhZ2UuR2V0U3RyaW5nKCk7CiAgIH0KIAotICBzdGQ6OnZlY3RvcjxTdHJp
bmc+KiB2ZWN0b3JfOworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIHZlY3Rvcl87CiAgIGNv
bnN0IGNoYXIqIGNvbnN0IGlkXzsKIAogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05f
KFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyKTsKIH07CiAKIFRFU1QoRXZlbnRMaXN0ZW5lclRlc3Qs
IEFwcGVuZEtlZXBzT3JkZXIpIHsKLSAgc3RkOjp2ZWN0b3I8U3RyaW5nPiB2ZWM7CisgIHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiB2ZWM7CiAgIFRlc3RFdmVudExpc3RlbmVycyBsaXN0ZW5lcnM7
CiAgIGxpc3RlbmVycy5BcHBlbmQobmV3IFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyKCZ2ZWMsICIx
c3QiKSk7CiAgIGxpc3RlbmVycy5BcHBlbmQobmV3IFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyKCZ2
ZWMsICIybmQiKSk7CkBAIC02NzE1LDQgKzczMDgsMzk5IEBAIEdURVNUX1RFU1QoQWx0ZXJuYXRp
dmVOYW1lVGVzdCwgV29ya3MpIHsgIC8vIEdURVNUX1RFU1QgaXMgdGhlIHNhbWUgYXMgVEVTVC4K
ICAgLy8gR1RFU1RfRkFJTCBpcyB0aGUgc2FtZSBhcyBGQUlMLgogICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShHVEVTVF9GQUlMKCkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAogICAgICAgICAgICAg
ICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworCisgIC8vIEdURVNUX0FTU0VSVF9Y
WSBpcyB0aGUgc2FtZSBhcyBBU1NFUlRfWFkuCisKKyAgR1RFU1RfQVNTRVJUX0VRKDAsIDApOwor
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfRVEoMCwgMSkgPDwgIkFuIGV4cGVj
dGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVy
ZSIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfRVEoMSwgMCkgPDwgIkFu
IGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQg
ZmFpbHVyZSIpOworCisgIEdURVNUX0FTU0VSVF9ORSgwLCAxKTsKKyAgR1RFU1RfQVNTRVJUX05F
KDEsIDApOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfTkUoMCwgMCkgPDwg
IkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0
ZWQgZmFpbHVyZSIpOworCisgIEdURVNUX0FTU0VSVF9MRSgwLCAwKTsKKyAgR1RFU1RfQVNTRVJU
X0xFKDAsIDEpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfTEUoMSwgMCkg
PDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhw
ZWN0ZWQgZmFpbHVyZSIpOworCisgIEdURVNUX0FTU0VSVF9MVCgwLCAxKTsKKyAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0xUKDAsIDApIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKyAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0xUKDEsIDApIDw8ICJBbiBleHBlY3RlZCBm
YWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsK
KworICBHVEVTVF9BU1NFUlRfR0UoMCwgMCk7CisgIEdURVNUX0FTU0VSVF9HRSgxLCAwKTsKKyAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0dFKDAsIDEpIDw8ICJBbiBleHBlY3Rl
ZCBmYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUi
KTsKKworICBHVEVTVF9BU1NFUlRfR1QoMSwgMCk7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdU
RVNUX0FTU0VSVF9HVCgwLCAxKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEdURVNUX0FTU0VSVF9HVCgxLCAxKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7Cit9CisKKy8vIFRlc3Rz
IGZvciBpbnRlcm5hbCB1dGlsaXRpZXMgbmVjZXNzYXJ5IGZvciBpbXBsZW1lbnRhdGlvbiBvZiB0
aGUgdW5pdmVyc2FsCisvLyBwcmludGluZy4KKy8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEZp
bmQgYSBiZXR0ZXIgaG9tZSBmb3IgdGhlbS4KKworY2xhc3MgQ29udmVyc2lvbkhlbHBlckJhc2Ug
e307CitjbGFzcyBDb252ZXJzaW9uSGVscGVyRGVyaXZlZCA6IHB1YmxpYyBDb252ZXJzaW9uSGVs
cGVyQmFzZSB7fTsKKworLy8gVGVzdHMgdGhhdCBJc0FQcm90b2NvbE1lc3NhZ2U8VD46OnZhbHVl
IGlzIGEgY29tcGlsZS10aW1lIGNvbnN0YW50LgorVEVTVChJc0FQcm90b2NvbE1lc3NhZ2VUZXN0
LCBWYWx1ZUlzQ29tcGlsZVRpbWVDb25zdGFudCkgeworICBHVEVTVF9DT01QSUxFX0FTU0VSVF8o
SXNBUHJvdG9jb2xNZXNzYWdlPFByb3RvY29sTWVzc2FnZT46OnZhbHVlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3RfdHJ1ZSk7CisgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyghSXNBUHJv
dG9jb2xNZXNzYWdlPGludD46OnZhbHVlLCBjb25zdF9mYWxzZSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgSXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZSBpcyB0cnVlIHdoZW4gVCBpcworLy8gcHJv
dG8yOjpNZXNzYWdlIG9yIGEgc3ViLWNsYXNzIG9mIGl0LgorVEVTVChJc0FQcm90b2NvbE1lc3Nh
Z2VUZXN0LCBWYWx1ZUlzVHJ1ZVdoZW5UeXBlSXNBUHJvdG9jb2xNZXNzYWdlKSB7CisgIEVYUEVD
VF9UUlVFKElzQVByb3RvY29sTWVzc2FnZTwgOjpwcm90bzI6Ok1lc3NhZ2U+Ojp2YWx1ZSk7Cisg
IEVYUEVDVF9UUlVFKElzQVByb3RvY29sTWVzc2FnZTxQcm90b2NvbE1lc3NhZ2U+Ojp2YWx1ZSk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgSXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZSBpcyBmYWxz
ZSB3aGVuIFQgaXMgbmVpdGhlcgorLy8gUHJvdG9jb2xNZXNzYWdlIG5vciBhIHN1Yi1jbGFzcyBv
ZiBpdC4KK1RFU1QoSXNBUHJvdG9jb2xNZXNzYWdlVGVzdCwgVmFsdWVJc0ZhbHNlV2hlblR5cGVJ
c05vdEFQcm90b2NvbE1lc3NhZ2UpIHsKKyAgRVhQRUNUX0ZBTFNFKElzQVByb3RvY29sTWVzc2Fn
ZTxpbnQ+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShJc0FQcm90b2NvbE1lc3NhZ2U8Y29uc3Qg
Q29udmVyc2lvbkhlbHBlckJhc2U+Ojp2YWx1ZSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQ29tcGls
ZUFzc2VydFR5cGVzRXF1YWwgY29tcGlsZXMgd2hlbiB0aGUgdHlwZSBhcmd1bWVudHMgYXJlCisv
LyBlcXVhbC4KK1RFU1QoQ29tcGlsZUFzc2VydFR5cGVzRXF1YWwsIENvbXBpbGVzV2hlblR5cGVz
QXJlRXF1YWwpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8dm9pZCwgdm9pZD4oKTsKKyAg
Q29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50KiwgaW50Kj4oKTsKK30KKworLy8gVGVzdHMgdGhh
dCBSZW1vdmVSZWZlcmVuY2UgZG9lcyBub3QgYWZmZWN0IG5vbi1yZWZlcmVuY2UgdHlwZXMuCitU
RVNUKFJlbW92ZVJlZmVyZW5jZVRlc3QsIERvZXNOb3RBZmZlY3ROb25SZWZlcmVuY2VUeXBlKSB7
CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCwgUmVtb3ZlUmVmZXJlbmNlPGludD46OnR5
cGU+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNvbnN0IGNoYXIsIFJlbW92ZVJlZmVy
ZW5jZTxjb25zdCBjaGFyPjo6dHlwZT4oKTsKK30KKworLy8gVGVzdHMgdGhhdCBSZW1vdmVSZWZl
cmVuY2UgcmVtb3ZlcyByZWZlcmVuY2UgZnJvbSByZWZlcmVuY2UgdHlwZXMuCitURVNUKFJlbW92
ZVJlZmVyZW5jZVRlc3QsIFJlbW92ZXNSZWZlcmVuY2UpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVz
RXF1YWw8aW50LCBSZW1vdmVSZWZlcmVuY2U8aW50Jj46OnR5cGU+KCk7CisgIENvbXBpbGVBc3Nl
cnRUeXBlc0VxdWFsPGNvbnN0IGNoYXIsIFJlbW92ZVJlZmVyZW5jZTxjb25zdCBjaGFyJj46OnR5
cGU+KCk7Cit9CisKKy8vIFRlc3RzIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfLgorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgordm9pZCBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVu
Y2UoKSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBHVEVTVF9SRU1PVkVfUkVGRVJF
TkNFXyhUMik+KCk7Cit9CisKK1RFU1QoUmVtb3ZlUmVmZXJlbmNlVGVzdCwgTWFjcm9WZXJzaW9u
KSB7CisgIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZTxpbnQsIGludD4oKTsKKyAgVGVzdEdUZXN0
UmVtb3ZlUmVmZXJlbmNlPGNvbnN0IGNoYXIsIGNvbnN0IGNoYXImPigpOworfQorCisKKy8vIFRl
c3RzIHRoYXQgUmVtb3ZlQ29uc3QgZG9lcyBub3QgYWZmZWN0IG5vbi1jb25zdCB0eXBlcy4KK1RF
U1QoUmVtb3ZlQ29uc3RUZXN0LCBEb2VzTm90QWZmZWN0Tm9uQ29uc3RUeXBlKSB7CisgIENvbXBp
bGVBc3NlcnRUeXBlc0VxdWFsPGludCwgUmVtb3ZlQ29uc3Q8aW50Pjo6dHlwZT4oKTsKKyAgQ29t
cGlsZUFzc2VydFR5cGVzRXF1YWw8Y2hhciYsIFJlbW92ZUNvbnN0PGNoYXImPjo6dHlwZT4oKTsK
K30KKworLy8gVGVzdHMgdGhhdCBSZW1vdmVDb25zdCByZW1vdmVzIGNvbnN0IGZyb20gY29uc3Qg
dHlwZXMuCitURVNUKFJlbW92ZUNvbnN0VGVzdCwgUmVtb3Zlc0NvbnN0KSB7CisgIENvbXBpbGVB
c3NlcnRUeXBlc0VxdWFsPGludCwgUmVtb3ZlQ29uc3Q8Y29uc3QgaW50Pjo6dHlwZT4oKTsKKyAg
Q29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y2hhclsyXSwgUmVtb3ZlQ29uc3Q8Y29uc3QgY2hhclsy
XT46OnR5cGU+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNoYXJbMl1bM10sIFJlbW92
ZUNvbnN0PGNvbnN0IGNoYXJbMl1bM10+Ojp0eXBlPigpOworfQorCisvLyBUZXN0cyBHVEVTVF9S
RU1PVkVfQ09OU1RfLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgordm9p
ZCBUZXN0R1Rlc3RSZW1vdmVDb25zdCgpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8VDEs
IEdURVNUX1JFTU9WRV9DT05TVF8oVDIpPigpOworfQorCitURVNUKFJlbW92ZUNvbnN0VGVzdCwg
TWFjcm9WZXJzaW9uKSB7CisgIFRlc3RHVGVzdFJlbW92ZUNvbnN0PGludCwgaW50PigpOworICBU
ZXN0R1Rlc3RSZW1vdmVDb25zdDxkb3VibGUmLCBkb3VibGUmPigpOworICBUZXN0R1Rlc3RSZW1v
dmVDb25zdDxjaGFyLCBjb25zdCBjaGFyPigpOworfQorCisvLyBUZXN0cyBHVEVTVF9SRU1PVkVf
UkVGRVJFTkNFX0FORF9DT05TVF8uCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDI+Cit2b2lkIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0KCkgeworICBDb21waWxl
QXNzZXJ0VHlwZXNFcXVhbDxUMSwgR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV9BTkRfQ09OU1RfKFQy
KT4oKTsKK30KKworVEVTVChSZW1vdmVSZWZlcmVuY2VUb0NvbnN0VGVzdCwgV29ya3MpIHsKKyAg
VGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8aW50LCBpbnQ+KCk7CisgIFRlc3RHVGVz
dFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0PGRvdWJsZSwgZG91YmxlJj4oKTsKKyAgVGVzdEdUZXN0
UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8Y2hhciwgY29uc3QgY2hhcj4oKTsKKyAgVGVzdEdUZXN0
UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8Y2hhciwgY29uc3QgY2hhciY+KCk7CisgIFRlc3RHVGVz
dFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0PGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKj4oKTsKK30K
KworLy8gVGVzdHMgdGhhdCBBZGRSZWZlcmVuY2UgZG9lcyBub3QgYWZmZWN0IHJlZmVyZW5jZSB0
eXBlcy4KK1RFU1QoQWRkUmVmZXJlbmNlVGVzdCwgRG9lc05vdEFmZmVjdFJlZmVyZW5jZVR5cGUp
IHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50JiwgQWRkUmVmZXJlbmNlPGludCY+Ojp0
eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjb25zdCBjaGFyJiwgQWRkUmVmZXJl
bmNlPGNvbnN0IGNoYXImPjo6dHlwZT4oKTsKK30KKworLy8gVGVzdHMgdGhhdCBBZGRSZWZlcmVu
Y2UgYWRkcyByZWZlcmVuY2UgdG8gbm9uLXJlZmVyZW5jZSB0eXBlcy4KK1RFU1QoQWRkUmVmZXJl
bmNlVGVzdCwgQWRkc1JlZmVyZW5jZSkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQm
LCBBZGRSZWZlcmVuY2U8aW50Pjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8
Y29uc3QgY2hhciYsIEFkZFJlZmVyZW5jZTxjb25zdCBjaGFyPjo6dHlwZT4oKTsKK30KKworLy8g
VGVzdHMgR1RFU1RfQUREX1JFRkVSRU5DRV8uCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDI+Cit2b2lkIFRlc3RHVGVzdEFkZFJlZmVyZW5jZSgpIHsKKyAgQ29tcGlsZUFzc2Vy
dFR5cGVzRXF1YWw8VDEsIEdURVNUX0FERF9SRUZFUkVOQ0VfKFQyKT4oKTsKK30KKworVEVTVChB
ZGRSZWZlcmVuY2VUZXN0LCBNYWNyb1ZlcnNpb24pIHsKKyAgVGVzdEdUZXN0QWRkUmVmZXJlbmNl
PGludCYsIGludD4oKTsKKyAgVGVzdEdUZXN0QWRkUmVmZXJlbmNlPGNvbnN0IGNoYXImLCBjb25z
dCBjaGFyJj4oKTsKK30KKworLy8gVGVzdHMgR1RFU1RfUkVGRVJFTkNFX1RPX0NPTlNUXy4KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgVGVzdEdUZXN0UmVmZXJl
bmNlVG9Db25zdCgpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8VDEsIEdURVNUX1JFRkVS
RU5DRV9UT19DT05TVF8oVDIpPigpOworfQorCitURVNUKEdUZXN0UmVmZXJlbmNlVG9Db25zdFRl
c3QsIFdvcmtzKSB7CisgIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29uc3Q8Y29uc3QgY2hhciYsIGNo
YXI+KCk7CisgIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29uc3Q8Y29uc3QgaW50JiwgY29uc3QgaW50
PigpOworICBUZXN0R1Rlc3RSZWZlcmVuY2VUb0NvbnN0PGNvbnN0IGRvdWJsZSYsIGRvdWJsZT4o
KTsKKyAgVGVzdEdUZXN0UmVmZXJlbmNlVG9Db25zdDxjb25zdCBzdGQ6OnN0cmluZyYsIGNvbnN0
IHN0ZDo6c3RyaW5nJj4oKTsKK30KKworLy8gVGVzdHMgdGhhdCBJbXBsaWNpdGx5Q29udmVydGli
bGU8VDEsIFQyPjo6dmFsdWUgaXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuCitURVNUKEltcGxp
Y2l0bHlDb252ZXJ0aWJsZVRlc3QsIFZhbHVlSXNDb21waWxlVGltZUNvbnN0YW50KSB7CisgIEdU
RVNUX0NPTVBJTEVfQVNTRVJUXygoSW1wbGljaXRseUNvbnZlcnRpYmxlPGludCwgaW50Pjo6dmFs
dWUpLCBjb25zdF90cnVlKTsKKyAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKCghSW1wbGljaXRseUNv
bnZlcnRpYmxlPHZvaWQqLCBpbnQqPjo6dmFsdWUpLAorICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3RfZmFsc2UpOworfQorCisvLyBUZXN0cyB0aGF0IEltcGxpY2l0bHlDb252ZXJ0aWJsZTxU
MSwgVDI+Ojp2YWx1ZSBpcyB0cnVlIHdoZW4gVDEgY2FuCisvLyBiZSBpbXBsaWNpdGx5IGNvbnZl
cnRlZCB0byBUMi4KK1RFU1QoSW1wbGljaXRseUNvbnZlcnRpYmxlVGVzdCwgVmFsdWVJc1RydWVX
aGVuQ29udmVydGlibGUpIHsKKyAgRVhQRUNUX1RSVUUoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxp
bnQsIGRvdWJsZT46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChJbXBsaWNpdGx5Q29udmVydGli
bGU8ZG91YmxlLCBpbnQ+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoSW1wbGljaXRseUNvbnZl
cnRpYmxlPGludCosIHZvaWQqPjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKEltcGxpY2l0bHlD
b252ZXJ0aWJsZTxpbnQqLCBjb25zdCBpbnQqPjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKElt
cGxpY2l0bHlDb252ZXJ0aWJsZTxDb252ZXJzaW9uSGVscGVyRGVyaXZlZCYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvbkhlbHBlckJhc2UmPjo6
dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxjb25zdCBDb252
ZXJzaW9uSGVscGVyQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
b252ZXJzaW9uSGVscGVyQmFzZT46OnZhbHVlKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgSW1wbGlj
aXRseUNvbnZlcnRpYmxlPFQxLCBUMj46OnZhbHVlIGlzIGZhbHNlIHdoZW4gVDEKKy8vIGNhbm5v
dCBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBUMi4KK1RFU1QoSW1wbGljaXRseUNvbnZlcnRp
YmxlVGVzdCwgVmFsdWVJc0ZhbHNlV2hlbk5vdENvbnZlcnRpYmxlKSB7CisgIEVYUEVDVF9GQUxT
RSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPGRvdWJsZSwgaW50Kj46OnZhbHVlKSk7CisgIEVYUEVD
VF9GQUxTRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPHZvaWQqLCBpbnQqPjo6dmFsdWUpKTsKKyAg
RVhQRUNUX0ZBTFNFKChJbXBsaWNpdGx5Q29udmVydGlibGU8Y29uc3QgaW50KiwgaW50Kj46OnZh
bHVlKSk7CisgIEVYUEVDVF9GQUxTRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPENvbnZlcnNpb25I
ZWxwZXJCYXNlJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVy
c2lvbkhlbHBlckRlcml2ZWQmPjo6dmFsdWUpKTsKK30KKworLy8gVGVzdHMgSXNDb250YWluZXJU
ZXN0LgorCitjbGFzcyBOb25Db250YWluZXIge307CisKK1RFU1QoSXNDb250YWluZXJUZXN0VGVz
dCwgV29ya3NGb3JOb25Db250YWluZXIpIHsKKyAgRVhQRUNUX0VRKHNpemVvZihJc05vdENvbnRh
aW5lciksIHNpemVvZihJc0NvbnRhaW5lclRlc3Q8aW50PigwKSkpOworICBFWFBFQ1RfRVEoc2l6
ZW9mKElzTm90Q29udGFpbmVyKSwgc2l6ZW9mKElzQ29udGFpbmVyVGVzdDxjaGFyWzVdPigwKSkp
OworICBFWFBFQ1RfRVEoc2l6ZW9mKElzTm90Q29udGFpbmVyKSwgc2l6ZW9mKElzQ29udGFpbmVy
VGVzdDxOb25Db250YWluZXI+KDApKSk7Cit9CisKK1RFU1QoSXNDb250YWluZXJUZXN0VGVzdCwg
V29ya3NGb3JDb250YWluZXIpIHsKKyAgRVhQRUNUX0VRKHNpemVvZihJc0NvbnRhaW5lciksCisg
ICAgICAgICAgICBzaXplb2YoSXNDb250YWluZXJUZXN0PHN0ZDo6dmVjdG9yPGJvb2w+ID4oMCkp
KTsKKyAgRVhQRUNUX0VRKHNpemVvZihJc0NvbnRhaW5lciksCisgICAgICAgICAgICBzaXplb2Yo
SXNDb250YWluZXJUZXN0PHN0ZDo6bWFwPGludCwgZG91YmxlPiA+KDApKSk7Cit9CisKKy8vIFRl
c3RzIEFycmF5RXEoKS4KKworVEVTVChBcnJheUVxVGVzdCwgV29ya3NGb3JEZWdlbmVyYXRlZEFy
cmF5cykgeworICBFWFBFQ1RfVFJVRShBcnJheUVxKDUsIDVMKSk7CisgIEVYUEVDVF9GQUxTRShB
cnJheUVxKCdhJywgMCkpOworfQorCitURVNUKEFycmF5RXFUZXN0LCBXb3Jrc0Zvck9uZURpbWVu
c2lvbmFsQXJyYXlzKSB7CisgIC8vIE5vdGUgdGhhdCBhIGFuZCBiIGFyZSBkaXN0aW5jdCBidXQg
Y29tcGF0aWJsZSB0eXBlcy4KKyAgY29uc3QgaW50IGFbXSA9IHsgMCwgMSB9OworICBsb25nIGJb
XSA9IHsgMCwgMSB9OworICBFWFBFQ1RfVFJVRShBcnJheUVxKGEsIGIpKTsKKyAgRVhQRUNUX1RS
VUUoQXJyYXlFcShhLCAyLCBiKSk7CisKKyAgYlswXSA9IDI7CisgIEVYUEVDVF9GQUxTRShBcnJh
eUVxKGEsIGIpKTsKKyAgRVhQRUNUX0ZBTFNFKEFycmF5RXEoYSwgMSwgYikpOworfQorCitURVNU
KEFycmF5RXFUZXN0LCBXb3Jrc0ZvclR3b0RpbWVuc2lvbmFsQXJyYXlzKSB7CisgIGNvbnN0IGNo
YXIgYVtdWzNdID0geyAiaGkiLCAibG8iIH07CisgIGNvbnN0IGNoYXIgYltdWzNdID0geyAiaGki
LCAibG8iIH07CisgIGNvbnN0IGNoYXIgY1tdWzNdID0geyAiaGkiLCAibGkiIH07CisKKyAgRVhQ
RUNUX1RSVUUoQXJyYXlFcShhLCBiKSk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgMiwgYikp
OworCisgIEVYUEVDVF9GQUxTRShBcnJheUVxKGEsIGMpKTsKKyAgRVhQRUNUX0ZBTFNFKEFycmF5
RXEoYSwgMiwgYykpOworfQorCisvLyBUZXN0cyBBcnJheUF3YXJlRmluZCgpLgorCitURVNUKEFy
cmF5QXdhcmVGaW5kVGVzdCwgV29ya3NGb3JPbmVEaW1lbnNpb25hbEFycmF5KSB7CisgIGNvbnN0
IGNoYXIgYVtdID0gImhlbGxvIjsKKyAgRVhQRUNUX0VRKGEgKyA0LCBBcnJheUF3YXJlRmluZChh
LCBhICsgNSwgJ28nKSk7CisgIEVYUEVDVF9FUShhICsgNSwgQXJyYXlBd2FyZUZpbmQoYSwgYSAr
IDUsICd4JykpOworfQorCitURVNUKEFycmF5QXdhcmVGaW5kVGVzdCwgV29ya3NGb3JUd29EaW1l
bnNpb25hbEFycmF5KSB7CisgIGludCBhW11bMl0gPSB7IHsgMCwgMSB9LCB7IDIsIDMgfSwgeyA0
LCA1IH0gfTsKKyAgY29uc3QgaW50IGJbMl0gPSB7IDIsIDMgfTsKKyAgRVhQRUNUX0VRKGEgKyAx
LCBBcnJheUF3YXJlRmluZChhLCBhICsgMywgYikpOworCisgIGNvbnN0IGludCBjWzJdID0geyA2
LCA3IH07CisgIEVYUEVDVF9FUShhICsgMywgQXJyYXlBd2FyZUZpbmQoYSwgYSArIDMsIGMpKTsK
K30KKworLy8gVGVzdHMgQ29weUFycmF5KCkuCisKK1RFU1QoQ29weUFycmF5VGVzdCwgV29ya3NG
b3JEZWdlbmVyYXRlZEFycmF5cykgeworICBpbnQgbiA9IDA7CisgIENvcHlBcnJheSgnYScsICZu
KTsKKyAgRVhQRUNUX0VRKCdhJywgbik7Cit9CisKK1RFU1QoQ29weUFycmF5VGVzdCwgV29ya3NG
b3JPbmVEaW1lbnNpb25hbEFycmF5cykgeworICBjb25zdCBjaGFyIGFbM10gPSAiaGkiOworICBp
bnQgYlszXTsKKyNpZm5kZWYgX19CT1JMQU5EQ19fICAvLyBDKytCdWlsZGVyIGNhbm5vdCBjb21w
aWxlIHNvbWUgYXJyYXkgc2l6ZSBkZWR1Y3Rpb25zLgorICBDb3B5QXJyYXkoYSwgJmIpOworICBF
WFBFQ1RfVFJVRShBcnJheUVxKGEsIGIpKTsKKyNlbmRpZgorCisgIGludCBjWzNdOworICBDb3B5
QXJyYXkoYSwgMywgYyk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYykpOworfQorCitURVNU
KENvcHlBcnJheVRlc3QsIFdvcmtzRm9yVHdvRGltZW5zaW9uYWxBcnJheXMpIHsKKyAgY29uc3Qg
aW50IGFbMl1bM10gPSB7IHsgMCwgMSwgMiB9LCB7IDMsIDQsIDUgfSB9OworICBpbnQgYlsyXVsz
XTsKKyNpZm5kZWYgX19CT1JMQU5EQ19fICAvLyBDKytCdWlsZGVyIGNhbm5vdCBjb21waWxlIHNv
bWUgYXJyYXkgc2l6ZSBkZWR1Y3Rpb25zLgorICBDb3B5QXJyYXkoYSwgJmIpOworICBFWFBFQ1Rf
VFJVRShBcnJheUVxKGEsIGIpKTsKKyNlbmRpZgorCisgIGludCBjWzJdWzNdOworICBDb3B5QXJy
YXkoYSwgMiwgYyk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYykpOworfQorCisvLyBUZXN0
cyBOYXRpdmVBcnJheS4KKworVEVTVChOYXRpdmVBcnJheVRlc3QsIENvbnN0cnVjdG9yRnJvbUFy
cmF5V29ya3MpIHsKKyAgY29uc3QgaW50IGFbM10gPSB7IDAsIDEsIDIgfTsKKyAgTmF0aXZlQXJy
YXk8aW50PiBuYShhLCAzLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOworICBFWFBFQ1Rf
RVEoM1UsIG5hLnNpemUoKSk7CisgIEVYUEVDVF9FUShhLCBuYS5iZWdpbigpKTsKK30KKworVEVT
VChOYXRpdmVBcnJheVRlc3QsIENyZWF0ZXNBbmREZWxldGVzQ29weU9mQXJyYXlXaGVuQXNrZWRU
bykgeworICB0eXBlZGVmIGludCBBcnJheVsyXTsKKyAgQXJyYXkqIGEgPSBuZXcgQXJyYXlbMV07
CisgICgqYSlbMF0gPSAwOworICAoKmEpWzFdID0gMTsKKyAgTmF0aXZlQXJyYXk8aW50PiBuYSgq
YSwgMiwgUmVsYXRpb25Ub1NvdXJjZUNvcHkoKSk7CisgIEVYUEVDVF9ORSgqYSwgbmEuYmVnaW4o
KSk7CisgIGRlbGV0ZVtdIGE7CisgIEVYUEVDVF9FUSgwLCBuYS5iZWdpbigpWzBdKTsKKyAgRVhQ
RUNUX0VRKDEsIG5hLmJlZ2luKClbMV0pOworCisgIC8vIFdlIHJlbHkgb24gdGhlIGhlYXAgY2hl
Y2tlciB0byB2ZXJpZnkgdGhhdCBuYSBkZWxldGVzIHRoZSBjb3B5IG9mCisgIC8vIGFycmF5Lgor
fQorCitURVNUKE5hdGl2ZUFycmF5VGVzdCwgVHlwZU1lbWJlcnNBcmVDb3JyZWN0KSB7CisgIFN0
YXRpY0Fzc2VydFR5cGVFcTxjaGFyLCBOYXRpdmVBcnJheTxjaGFyPjo6dmFsdWVfdHlwZT4oKTsK
KyAgU3RhdGljQXNzZXJ0VHlwZUVxPGludFsyXSwgTmF0aXZlQXJyYXk8aW50WzJdPjo6dmFsdWVf
dHlwZT4oKTsKKworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgY2hhciosIE5hdGl2ZUFycmF5
PGNoYXI+Ojpjb25zdF9pdGVyYXRvcj4oKTsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGJv
b2woKilbMl0sIE5hdGl2ZUFycmF5PGJvb2xbMl0+Ojpjb25zdF9pdGVyYXRvcj4oKTsKK30KKwor
VEVTVChOYXRpdmVBcnJheVRlc3QsIE1ldGhvZHNXb3JrKSB7CisgIGNvbnN0IGludCBhWzNdID0g
eyAwLCAxLCAyIH07CisgIE5hdGl2ZUFycmF5PGludD4gbmEoYSwgMywgUmVsYXRpb25Ub1NvdXJj
ZUNvcHkoKSk7CisgIEFTU0VSVF9FUSgzVSwgbmEuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKDMsIG5h
LmVuZCgpIC0gbmEuYmVnaW4oKSk7CisKKyAgTmF0aXZlQXJyYXk8aW50Pjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBuYS5iZWdpbigpOworICBFWFBFQ1RfRVEoMCwgKml0KTsKKyAgKytpdDsKKyAgRVhQ
RUNUX0VRKDEsICppdCk7CisgIGl0Kys7CisgIEVYUEVDVF9FUSgyLCAqaXQpOworICArK2l0Owor
ICBFWFBFQ1RfRVEobmEuZW5kKCksIGl0KTsKKworICBFWFBFQ1RfVFJVRShuYSA9PSBuYSk7CisK
KyAgTmF0aXZlQXJyYXk8aW50PiBuYTIoYSwgMywgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgp
KTsKKyAgRVhQRUNUX1RSVUUobmEgPT0gbmEyKTsKKworICBjb25zdCBpbnQgYjFbM10gPSB7IDAs
IDEsIDEgfTsKKyAgY29uc3QgaW50IGIyWzRdID0geyAwLCAxLCAyLCAzIH07CisgIEVYUEVDVF9G
QUxTRShuYSA9PSBOYXRpdmVBcnJheTxpbnQ+KGIxLCAzLCBSZWxhdGlvblRvU291cmNlUmVmZXJl
bmNlKCkpKTsKKyAgRVhQRUNUX0ZBTFNFKG5hID09IE5hdGl2ZUFycmF5PGludD4oYjIsIDQsIFJl
bGF0aW9uVG9Tb3VyY2VDb3B5KCkpKTsKK30KKworVEVTVChOYXRpdmVBcnJheVRlc3QsIFdvcmtz
Rm9yVHdvRGltZW5zaW9uYWxBcnJheSkgeworICBjb25zdCBjaGFyIGFbMl1bM10gPSB7ICJoaSIs
ICJsbyIgfTsKKyAgTmF0aXZlQXJyYXk8Y2hhclszXT4gbmEoYSwgMiwgUmVsYXRpb25Ub1NvdXJj
ZVJlZmVyZW5jZSgpKTsKKyAgQVNTRVJUX0VRKDJVLCBuYS5zaXplKCkpOworICBFWFBFQ1RfRVEo
YSwgbmEuYmVnaW4oKSk7Cit9CisKKy8vIFRlc3RzIFNraXBQcmVmaXgoKS4KKworVEVTVChTa2lw
UHJlZml4VGVzdCwgU2tpcHNXaGVuUHJlZml4TWF0Y2hlcykgeworICBjb25zdCBjaGFyKiBjb25z
dCBzdHIgPSAiaGVsbG8iOworCisgIGNvbnN0IGNoYXIqIHAgPSBzdHI7CisgIEVYUEVDVF9UUlVF
KFNraXBQcmVmaXgoIiIsICZwKSk7CisgIEVYUEVDVF9FUShzdHIsIHApOworCisgIHAgPSBzdHI7
CisgIEVYUEVDVF9UUlVFKFNraXBQcmVmaXgoImhlbGwiLCAmcCkpOworICBFWFBFQ1RfRVEoc3Ry
ICsgNCwgcCk7CiB9CisKK1RFU1QoU2tpcFByZWZpeFRlc3QsIERvZXNOb3RTa2lwV2hlblByZWZp
eERvZXNOb3RNYXRjaCkgeworICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAid29ybGQiOworCisg
IGNvbnN0IGNoYXIqIHAgPSBzdHI7CisgIEVYUEVDVF9GQUxTRShTa2lwUHJlZml4KCJXIiwgJnAp
KTsKKyAgRVhQRUNUX0VRKHN0ciwgcCk7CisKKyAgcCA9IHN0cjsKKyAgRVhQRUNUX0ZBTFNFKFNr
aXBQcmVmaXgoIndvcmxkISIsICZwKSk7CisgIEVYUEVDVF9FUShzdHIsIHApOworfQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMV90
ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUx
X3Rlc3RfLmNjCmluZGV4IDY2NGJhYWQyYWI4NzNiYTM4ODE5M2E2NWQyYjc5ZmQ4M2RiMmU3NzUu
LjUzMWNlZDQ5ZDQxMDg3NjI5ZGU5MjU0NGYwNTljYmRlYTI3MGI1YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3Rf
LmNjCkBAIC0zMiw3ICszMiw3IEBACiAvLyBndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8gd3JpdGVz
IHNvbWUgeG1sIHZpYSBUZXN0UHJvcGVydHkgdXNlZCBieQogLy8gZ3Rlc3RfeG1sX291dGZpbGVz
X3Rlc3QucHkKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKIAogY2xhc3MgUHJvcGVydHlPbmUgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgcHJv
dGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94
bWxfb3V0ZmlsZTJfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X3htbF9vdXRmaWxlMl90ZXN0Xy5jYwppbmRleCAzNDExYTNkMzhiODYxMDRjNmE2MGM2MGQxMTMx
Y2I2NmFhNTRjMTkyLi43YjQwMGIyNzYwNTdjZjYyNGI0ZGVlNjQ1ZGUzM2EzYzQ5ZjBlZWM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxl
Ml90ZXN0Xy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9v
dXRmaWxlMl90ZXN0Xy5jYwpAQCAtMzIsNyArMzIsNyBAQAogLy8gZ3Rlc3RfeG1sX291dGZpbGUy
X3Rlc3RfIHdyaXRlcyBzb21lIHhtbCB2aWEgVGVzdFByb3BlcnR5IHVzZWQgYnkKIC8vIGd0ZXN0
X3htbF9vdXRmaWxlc190ZXN0LnB5CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIGNsYXNzIFByb3BlcnR5VHdvIDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgewogIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5CmluZGV4IDBmZTk0N2YwODRjOGY1NmY0
YWRmNWQwYzlmYTAyNmNlMjk5NzVkMmMuLjUyNGU0MzdlNmMxNzY3OGJkMmI2ZDI4YWQyYTQ3OTk4
MTAyNTkyYzIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
eG1sX291dGZpbGVzX3Rlc3QucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weQpAQCAtNDUsNyArNDUsNyBAQAogR1RFU1RfT1VUUFVU
XzJfVEVTVCA9ICJndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8iCiAKIEVYUEVDVEVEX1hNTF8xID0g
IiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx0ZXN0c3VpdGVzIHRl
c3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIgbmFt
ZT0iQWxsVGVzdHMiPgorPHRlc3RzdWl0ZXMgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxl
ZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiB0aW1lc3RhbXA9IioiIG5hbWU9IkFsbFRlc3RzIj4K
ICAgPHRlc3RzdWl0ZSBuYW1lPSJQcm9wZXJ0eU9uZSIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBk
aXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAgICA8dGVzdGNhc2UgbmFtZT0iVGVz
dFNvbWVQcm9wZXJ0aWVzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0
eU9uZSIgU2V0VXBQcm9wPSIxIiBUZXN0U29tZVByb3BlcnR5PSIxIiBUZWFyRG93blByb3A9IjEi
IC8+CiAgIDwvdGVzdHN1aXRlPgpAQCAtNTMsNyArNTMsNyBAQAogIiIiCiAKIEVYUEVDVEVEX1hN
TF8yID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx0ZXN0c3Vp
dGVzIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0i
KiIgbmFtZT0iQWxsVGVzdHMiPgorPHRlc3RzdWl0ZXMgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBk
aXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiB0aW1lc3RhbXA9IioiIG5hbWU9IkFsbFRl
c3RzIj4KICAgPHRlc3RzdWl0ZSBuYW1lPSJQcm9wZXJ0eVR3byIgdGVzdHM9IjEiIGZhaWx1cmVz
PSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAgICA8dGVzdGNhc2UgbmFt
ZT0iVGVzdFNvbWVQcm9wZXJ0aWVzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQ
cm9wZXJ0eVR3byIgU2V0VXBQcm9wPSIyIiBUZXN0U29tZVByb3BlcnR5PSIyIiBUZWFyRG93blBy
b3A9IjIiIC8+CiAgIDwvdGVzdHN1aXRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0LnB5CmluZGV4IDZkNDQ5Mjlj
YWNhMDNlYzZmYWU0NDcxZWQxYmExZDQxNmE1ZGZjZTAuLmJjZDU5NzU5OTFkNzQzNjcyOWNkODZl
NmM4MmQyM2M4ZjM1NWE4ZWIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3QucHkKQEAgLTMzLDggKzMzLDEwIEBA
CiAKIF9fYXV0aG9yX18gPSAnZWVmYWNtQGdtYWlsLmNvbSAoU2VhbiBNY2FmZWUpJwogCitpbXBv
cnQgZGF0ZXRpbWUKIGltcG9ydCBlcnJubwogaW1wb3J0IG9zCitpbXBvcnQgcmUKIGltcG9ydCBz
eXMKIGZyb20geG1sLmRvbSBpbXBvcnQgbWluaWRvbSwgTm9kZQogCkBAIC00Miw2ICs0NCw4IEBA
CiBpbXBvcnQgZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMKIAogCitHVEVTVF9GSUxURVJfRkxBRyA9ICct
LWd0ZXN0X2ZpbHRlcicKK0dURVNUX0xJU1RfVEVTVFNfRkxBRyA9ICctLWd0ZXN0X2xpc3RfdGVz
dHMnCiBHVEVTVF9PVVRQVVRfRkxBRyAgICAgICAgID0gIi0tZ3Rlc3Rfb3V0cHV0IgogR1RFU1Rf
REVGQVVMVF9PVVRQVVRfRklMRSA9ICJ0ZXN0X2RldGFpbC54bWwiCiBHVEVTVF9QUk9HUkFNX05B
TUUgPSAiZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8iCkBAIC00OSw0NCArNTMsNDQgQEAKIFNV
UFBPUlRTX1NUQUNLX1RSQUNFUyA9IEZhbHNlCiAKIGlmIFNVUFBPUlRTX1NUQUNLX1RSQUNFUzoK
LSAgU1RBQ0tfVFJBQ0VfVEVNUExBVEUgPSAiXG5TdGFjayB0cmFjZTpcbioiCisgIFNUQUNLX1RS
QUNFX1RFTVBMQVRFID0gJ1xuU3RhY2sgdHJhY2U6XG4qJwogZWxzZToKLSAgU1RBQ0tfVFJBQ0Vf
VEVNUExBVEUgPSAiIgorICBTVEFDS19UUkFDRV9URU1QTEFURSA9ICcnCiAKIEVYUEVDVEVEX05P
Tl9FTVBUWV9YTUwgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgot
PHRlc3RzdWl0ZXMgdGVzdHM9IjE1IiBmYWlsdXJlcz0iNCIgZGlzYWJsZWQ9IjIiIGVycm9ycz0i
MCIgdGltZT0iKiIgbmFtZT0iQWxsVGVzdHMiPgorPHRlc3RzdWl0ZXMgdGVzdHM9IjIzIiBmYWls
dXJlcz0iNCIgZGlzYWJsZWQ9IjIiIGVycm9ycz0iMCIgdGltZT0iKiIgdGltZXN0YW1wPSIqIiBu
YW1lPSJBbGxUZXN0cyIgYWRfaG9jX3Byb3BlcnR5PSI0MiI+CiAgIDx0ZXN0c3VpdGUgbmFtZT0i
U3VjY2Vzc2Z1bFRlc3QiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9y
cz0iMCIgdGltZT0iKiI+CiAgICAgPHRlc3RjYXNlIG5hbWU9IlN1Y2NlZWRzIiBzdGF0dXM9InJ1
biIgdGltZT0iKiIgY2xhc3NuYW1lPSJTdWNjZXNzZnVsVGVzdCIvPgogICA8L3Rlc3RzdWl0ZT4K
ICAgPHRlc3RzdWl0ZSBuYW1lPSJGYWlsZWRUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjEiIGRp
c2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJGYWls
cyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iRmFpbGVkVGVzdCI+Ci0gICAgICA8
ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogMiYjeDBBO0V4cGVjdGVkOiAxIiB0eXBlPSIiPjwh
W0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioKLVZhbHVlIG9mOiAyCi1FeHBl
Y3RlZDogMSUoc3RhY2spc11dPjwvZmFpbHVyZT4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Imd0
ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOiomI3gwQTsgICAgICBFeHBlY3RlZDogMSYjeDBB
O1RvIGJlIGVxdWFsIHRvOiAyIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5p
dHRlc3RfLmNjOioKKyAgICAgIEV4cGVjdGVkOiAxCitUbyBiZSBlcXVhbCB0bzogMiUoc3RhY2sp
c11dPjwvZmFpbHVyZT4KICAgICA8L3Rlc3RjYXNlPgogICA8L3Rlc3RzdWl0ZT4KICAgPHRlc3Rz
dWl0ZSBuYW1lPSJNaXhlZFJlc3VsdFRlc3QiIHRlc3RzPSIzIiBmYWlsdXJlcz0iMSIgZGlzYWJs
ZWQ9IjEiIGVycm9ycz0iMCIgdGltZT0iKiI+CiAgICAgPHRlc3RjYXNlIG5hbWU9IlN1Y2NlZWRz
IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJNaXhlZFJlc3VsdFRlc3QiLz4KICAg
ICA8dGVzdGNhc2UgbmFtZT0iRmFpbHMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9
Ik1peGVkUmVzdWx0VGVzdCI+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogMiYj
eDBBO0V4cGVjdGVkOiAxIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRl
c3RfLmNjOioKLVZhbHVlIG9mOiAyCi1FeHBlY3RlZDogMSUoc3RhY2spc11dPjwvZmFpbHVyZT4K
LSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IlZhbHVlIG9mOiAzJiN4MEE7RXhwZWN0ZWQ6IDIiIHR5
cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgotVmFsdWUgb2Y6
IDMKLUV4cGVjdGVkOiAyJShzdGFjaylzXV0+PC9mYWlsdXJlPgorICAgICAgPGZhaWx1cmUgbWVz
c2FnZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBBOyAgICAgIEV4cGVjdGVk
OiAxJiN4MEE7VG8gYmUgZXF1YWwgdG86IDIiIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291
dHB1dF91bml0dGVzdF8uY2M6KgorICAgICAgRXhwZWN0ZWQ6IDEKK1RvIGJlIGVxdWFsIHRvOiAy
JShzdGFjaylzXV0+PC9mYWlsdXJlPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iZ3Rlc3RfeG1s
X291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBBOyAgICAgIEV4cGVjdGVkOiAyJiN4MEE7VG8gYmUg
ZXF1YWwgdG86IDMiIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8u
Y2M6KgorICAgICAgRXhwZWN0ZWQ6IDIKK1RvIGJlIGVxdWFsIHRvOiAzJShzdGFjaylzXV0+PC9m
YWlsdXJlPgogICAgIDwvdGVzdGNhc2U+CiAgICAgPHRlc3RjYXNlIG5hbWU9IkRJU0FCTEVEX3Rl
c3QiIHN0YXR1cz0ibm90cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ik1peGVkUmVzdWx0VGVzdCIv
PgogICA8L3Rlc3RzdWl0ZT4KICAgPHRlc3RzdWl0ZSBuYW1lPSJYbWxRdW90aW5nVGVzdCIgdGVz
dHM9IjEiIGZhaWx1cmVzPSIxIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAg
ICA8dGVzdGNhc2UgbmFtZT0iT3V0cHV0c0NEYXRhIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xh
c3NuYW1lPSJYbWxRdW90aW5nVGVzdCI+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJGYWlsZWQm
I3gwQTtYTUwgb3V0cHV0OiAmbHQ7P3htbCBlbmNvZGluZz0mcXVvdDt1dGYtOCZxdW90OyZndDsm
bHQ7dG9wJmd0OyZsdDshW0NEQVRBW2NkYXRhIHRleHRdXSZndDsmbHQ7L3RvcCZndDsiIHR5cGU9
IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgorICAgICAgPGZhaWx1
cmUgbWVzc2FnZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBBO0ZhaWxlZCYj
eDBBO1hNTCBvdXRwdXQ6ICZsdDs/eG1sIGVuY29kaW5nPSZxdW90O3V0Zi04JnF1b3Q7Jmd0OyZs
dDt0b3AmZ3Q7Jmx0OyFbQ0RBVEFbY2RhdGEgdGV4dF1dJmd0OyZsdDsvdG9wJmd0OyIgdHlwZT0i
Ij48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCiBGYWlsZWQKIFhNTCBv
dXRwdXQ6IDw/eG1sIGVuY29kaW5nPSJ1dGYtOCI+PHRvcD48IVtDREFUQVtjZGF0YSB0ZXh0XV0+
XV0mZ3Q7PCFbQ0RBVEFbPC90b3A+JShzdGFjaylzXV0+PC9mYWlsdXJlPgogICAgIDwvdGVzdGNh
c2U+CiAgIDwvdGVzdHN1aXRlPgogICA8dGVzdHN1aXRlIG5hbWU9IkludmFsaWRDaGFyYWN0ZXJz
VGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIxIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1l
PSIqIj4KICAgICA8dGVzdGNhc2UgbmFtZT0iSW52YWxpZENoYXJhY3RlcnNJbk1lc3NhZ2UiIHN0
YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IkludmFsaWRDaGFyYWN0ZXJzVGVzdCI+Ci0g
ICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJGYWlsZWQmI3gwQTtJbnZhbGlkIGNoYXJhY3RlcnMgaW4g
YnJhY2tldHMgW10iIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8u
Y2M6KgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8u
Y2M6KiYjeDBBO0ZhaWxlZCYjeDBBO0ludmFsaWQgY2hhcmFjdGVycyBpbiBicmFja2V0cyBbXSIg
dHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCiBGYWlsZWQK
IEludmFsaWQgY2hhcmFjdGVycyBpbiBicmFja2V0cyBbXSUoc3RhY2spc11dPjwvZmFpbHVyZT4K
ICAgICA8L3Rlc3RjYXNlPgpAQCAtOTQsNyArOTgsNyBAQAogICA8dGVzdHN1aXRlIG5hbWU9IkRp
c2FibGVkVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMSIgZXJyb3JzPSIw
IiB0aW1lPSIqIj4KICAgICA8dGVzdGNhc2UgbmFtZT0iRElTQUJMRURfdGVzdF9ub3RfcnVuIiBz
dGF0dXM9Im5vdHJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJEaXNhYmxlZFRlc3QiLz4KICAgPC90
ZXN0c3VpdGU+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0IiB0ZXN0
cz0iNCIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgorICA8
dGVzdHN1aXRlIG5hbWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCIgdGVzdHM9IjQiIGZhaWx1cmVz
PSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiBTZXRVcFRlc3RDYXNlPSJ5ZXMi
IFRlYXJEb3duVGVzdENhc2U9ImF5ZSI+CiAgICAgPHRlc3RjYXNlIG5hbWU9Ik9uZVByb3BlcnR5
IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3Qi
IGtleV8xPSIxIi8+CiAgICAgPHRlc3RjYXNlIG5hbWU9IkludFZhbHVlZFByb3BlcnR5IiBzdGF0
dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiIGtleV9p
bnQ9IjEiLz4KICAgICA8dGVzdGNhc2UgbmFtZT0iVGhyZWVQcm9wZXJ0aWVzIiBzdGF0dXM9InJ1
biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiIGtleV8xPSIxIiBr
ZXlfMj0iMiIga2V5XzM9IjMiLz4KQEAgLTEwNSwzNCArMTA5LDk0IEBACiAgICAgIDx0ZXN0Y2Fz
ZSBuYW1lPSJFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRJbnRWYWx1ZWRQcm9wZXJ0eSIg
c3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTm9GaXh0dXJlVGVzdCIga2V5X2Zvcl91
dGlsaXR5X2ludD0iMSIvPgogICAgICA8dGVzdGNhc2UgbmFtZT0iRXh0ZXJuYWxVdGlsaXR5VGhh
dENhbGxzUmVjb3JkU3RyaW5nVmFsdWVkUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBj
bGFzc25hbWU9Ik5vRml4dHVyZVRlc3QiIGtleV9mb3JfdXRpbGl0eV9zdHJpbmc9IjEiLz4KICAg
PC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiB0
ZXN0cz0iNCIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgor
ICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzAiIHZhbHVlX3BhcmFt
PSIzMyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1U
ZXN0IiAvPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzEiIHZh
bHVlX3BhcmFtPSI0MiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1Zh
bHVlUGFyYW1UZXN0IiAvPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJBbm90aGVyVGVzdFRoYXRIYXNW
YWx1ZVBhcmFtQXR0cmlidXRlLzAiIHZhbHVlX3BhcmFtPSIzMyIgc3RhdHVzPSJydW4iIHRpbWU9
IioiIGNsYXNzbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiAvPgorICAgIDx0ZXN0Y2FzZSBu
YW1lPSJBbm90aGVyVGVzdFRoYXRIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzEiIHZhbHVlX3BhcmFt
PSI0MiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1U
ZXN0IiAvPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJUeXBlZFRlc3QvMCIg
dGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4K
KyAgICA8dGVzdGNhc2UgbmFtZT0iSGFzVHlwZVBhcmFtQXR0cmlidXRlIiB0eXBlX3BhcmFtPSIq
IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJUeXBlZFRlc3QvMCIgLz4KKyAgPC90
ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iVHlwZWRUZXN0LzEiIHRlc3RzPSIxIiBmYWls
dXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNl
IG5hbWU9Ikhhc1R5cGVQYXJhbUF0dHJpYnV0ZSIgdHlwZV9wYXJhbT0iKiIgc3RhdHVzPSJydW4i
IHRpbWU9IioiIGNsYXNzbmFtZT0iVHlwZWRUZXN0LzEiIC8+CisgIDwvdGVzdHN1aXRlPgorICA8
dGVzdHN1aXRlIG5hbWU9IlNpbmdsZS9UeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLzAiIHRlc3Rz
PSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAg
PHRlc3RjYXNlIG5hbWU9Ikhhc1R5cGVQYXJhbUF0dHJpYnV0ZSIgdHlwZV9wYXJhbT0iKiIgc3Rh
dHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVz
dENhc2UvMCIgLz4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iU2luZ2xlL1R5
cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMSIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxl
ZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iSGFzVHlwZVBh
cmFtQXR0cmlidXRlIiB0eXBlX3BhcmFtPSIqIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3Nu
YW1lPSJTaW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8xIiAvPgorICA8L3Rlc3RzdWl0
ZT4KIDwvdGVzdHN1aXRlcz4iIiIgJSB7J3N0YWNrJzogU1RBQ0tfVFJBQ0VfVEVNUExBVEV9CiAK
K0VYUEVDVEVEX0ZJTFRFUkVEX1RFU1RfWE1MID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv
ZGluZz0iVVRGLTgiPz4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJs
ZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIKKyAgICAgICAgICAgIHRpbWVzdGFtcD0iKiIgbmFt
ZT0iQWxsVGVzdHMiIGFkX2hvY19wcm9wZXJ0eT0iNDIiPgorICA8dGVzdHN1aXRlIG5hbWU9IlN1
Y2Nlc3NmdWxUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIgorICAgICAg
ICAgICAgIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNlIG5hbWU9IlN1Y2NlZWRz
IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJTdWNjZXNzZnVsVGVzdCIvPgorICA8
L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1aXRlcz4iIiIKIAogRVhQRUNURURfRU1QVFlfWE1MID0gIiIi
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx0ZXN0c3VpdGVzIHRlc3Rz
PSIwIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIgbmFtZT0i
QWxsVGVzdHMiPgorPHRlc3RzdWl0ZXMgdGVzdHM9IjAiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0i
MCIgZXJyb3JzPSIwIiB0aW1lPSIqIgorICAgICAgICAgICAgdGltZXN0YW1wPSIqIiBuYW1lPSJB
bGxUZXN0cyI+CiA8L3Rlc3RzdWl0ZXM+IiIiCiAKK0dURVNUX1BST0dSQU1fUEFUSCA9IGd0ZXN0
X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKEdURVNUX1BST0dSQU1fTkFNRSkKKwor
U1VQUE9SVFNfVFlQRURfVEVTVFMgPSAnVHlwZWRUZXN0JyBpbiBndGVzdF90ZXN0X3V0aWxzLlN1
YnByb2Nlc3MoCisgICAgW0dURVNUX1BST0dSQU1fUEFUSCwgR1RFU1RfTElTVF9URVNUU19GTEFH
XSwgY2FwdHVyZV9zdGRlcnI9RmFsc2UpLm91dHB1dAorCiAKIGNsYXNzIEdUZXN0WE1MT3V0cHV0
VW5pdFRlc3QoZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMuR1Rlc3RYTUxUZXN0Q2FzZSk6CiAgICIiIgog
ICBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgWE1MIG91dHB1dCBmdW5jdGlvbmFsaXR5Lgog
ICAiIiIKIAotICBkZWYgdGVzdE5vbkVtcHR5WG1sT3V0cHV0KHNlbGYpOgotICAgICIiIgotICAg
IFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYSBub24tZW1wdHkgWE1MIG91dHB1
dCwgYW5kCi0gICAgdGVzdHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBleHBlY3RlZC4KLSAgICAi
IiIKLSAgICBzZWxmLl9UZXN0WG1sT3V0cHV0KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQRUNURURf
Tk9OX0VNUFRZX1hNTCwgMSkKKyAgIyBUaGlzIHRlc3QgY3VycmVudGx5IGJyZWFrcyBvbiBwbGF0
Zm9ybXMgdGhhdCBkbyBub3Qgc3VwcG9ydCB0eXBlZCBhbmQKKyAgIyB0eXBlLXBhcmFtZXRlcml6
ZWQgdGVzdHMsIHNvIHdlIGRvbid0IHJ1biBpdCB1bmRlciB0aGVtLgorICBpZiBTVVBQT1JUU19U
WVBFRF9URVNUUzoKKyAgICBkZWYgdGVzdE5vbkVtcHR5WG1sT3V0cHV0KHNlbGYpOgorICAgICAg
IiIiCisgICAgICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRoYXQgZ2VuZXJhdGVzIGEgbm9uLWVtcHR5
IFhNTCBvdXRwdXQsIGFuZAorICAgICAgdGVzdHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBleHBl
Y3RlZC4KKyAgICAgICIiIgorICAgICAgc2VsZi5fVGVzdFhtbE91dHB1dChHVEVTVF9QUk9HUkFN
X05BTUUsIEVYUEVDVEVEX05PTl9FTVBUWV9YTUwsIDEpCiAKICAgZGVmIHRlc3RFbXB0eVhtbE91
dHB1dChzZWxmKToKLSAgICAiIiIKKyAgICAiIiJWZXJpZmllcyBYTUwgb3V0cHV0IGZvciBhIEdv
b2dsZSBUZXN0IGJpbmFyeSB3aXRob3V0IGFjdHVhbCB0ZXN0cy4KKwogICAgIFJ1bnMgYSB0ZXN0
IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkgWE1MIG91dHB1dCwgYW5kCiAgICAgdGVz
dHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBleHBlY3RlZC4KICAgICAiIiIKIAotICAgIHNlbGYu
X1Rlc3RYbWxPdXRwdXQoImd0ZXN0X25vX3Rlc3RfdW5pdHRlc3QiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgRVhQRUNURURfRU1QVFlfWE1MLCAwKQorICAgIHNlbGYuX1Rlc3RYbWxPdXRwdXQo
J2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnLCBFWFBFQ1RFRF9FTVBUWV9YTUwsIDApCisKKyAgZGVm
IHRlc3RUaW1lc3RhbXBWYWx1ZShzZWxmKToKKyAgICAiIiJDaGVja3Mgd2hldGhlciB0aGUgdGlt
ZXN0YW1wIGF0dHJpYnV0ZSBpbiB0aGUgWE1MIG91dHB1dCBpcyB2YWxpZC4KKworICAgIFJ1bnMg
YSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkgWE1MIG91dHB1dCwgYW5kIGNo
ZWNrcyBpZgorICAgIHRoZSB0aW1lc3RhbXAgYXR0cmlidXRlIGluIHRoZSB0ZXN0c3VpdGVzIHRh
ZyBpcyB2YWxpZC4KKyAgICAiIiIKKyAgICBhY3R1YWwgPSBzZWxmLl9HZXRYbWxPdXRwdXQoJ2d0
ZXN0X25vX3Rlc3RfdW5pdHRlc3QnLCBbXSwgMCkKKyAgICBkYXRlX3RpbWVfc3RyID0gYWN0dWFs
LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKCd0aW1lc3RhbXAnKS52YWx1ZQorICAg
ICMgZGF0ZXRpbWUuc3RycHRpbWUoKSBpcyBvbmx5IGF2YWlsYWJsZSBpbiBQeXRob24gMi41KyBz
byB3ZSBoYXZlIHRvCisgICAgIyBwYXJzZSB0aGUgZXhwZWN0ZWQgZGF0ZXRpbWUgbWFudWFsbHku
CisgICAgbWF0Y2ggPSByZS5tYXRjaChyJyhcZCspLShcZFxkKS0oXGRcZClUKFxkXGQpOihcZFxk
KTooXGRcZCknLCBkYXRlX3RpbWVfc3RyKQorICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKKyAgICAgICAg
cmUubWF0Y2gsCisgICAgICAgICdYTUwgZGF0ZXR0aW1lIHN0cmluZyAlcyBoYXMgaW5jb3JyZWN0
IGZvcm1hdCcgJSBkYXRlX3RpbWVfc3RyKQorICAgIGRhdGVfdGltZV9mcm9tX3htbCA9IGRhdGV0
aW1lLmRhdGV0aW1lKAorICAgICAgICB5ZWFyPWludChtYXRjaC5ncm91cCgxKSksIG1vbnRoPWlu
dChtYXRjaC5ncm91cCgyKSksCisgICAgICAgIGRheT1pbnQobWF0Y2guZ3JvdXAoMykpLCBob3Vy
PWludChtYXRjaC5ncm91cCg0KSksCisgICAgICAgIG1pbnV0ZT1pbnQobWF0Y2guZ3JvdXAoNSkp
LCBzZWNvbmQ9aW50KG1hdGNoLmdyb3VwKDYpKSkKKworICAgIHRpbWVfZGVsdGEgPSBhYnMoZGF0
ZXRpbWUuZGF0ZXRpbWUubm93KCkgLSBkYXRlX3RpbWVfZnJvbV94bWwpCisgICAgIyB0aW1lc3Rh
bXAgdmFsdWUgc2hvdWxkIGJlIG5lYXIgdGhlIGN1cnJlbnQgbG9jYWwgdGltZQorICAgIHNlbGYu
YXNzZXJ0VHJ1ZSh0aW1lX2RlbHRhIDwgZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9NjAwKSwK
KyAgICAgICAgICAgICAgICAgICAgJ3RpbWVfZGVsdGEgaXMgJXMnICUgdGltZV9kZWx0YSkKKyAg
ICBhY3R1YWwudW5saW5rKCkKIAogICBkZWYgdGVzdERlZmF1bHRPdXRwdXRGaWxlKHNlbGYpOgog
ICAgICIiIgpAQCAtMTQyLDE1ICsyMDYsMTYgQEAgZGVmIHRlc3REZWZhdWx0T3V0cHV0RmlsZShz
ZWxmKToKICAgICBvdXRwdXRfZmlsZSA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdl
dFRlbXBEaXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9ERUZBVUxU
X09VVFBVVF9GSUxFKQogICAgIGd0ZXN0X3Byb2dfcGF0aCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0
VGVzdEV4ZWN1dGFibGVQYXRoKAotICAgICAgICAiZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCIpCisg
ICAgICAgICdndGVzdF9ub190ZXN0X3VuaXR0ZXN0JykKICAgICB0cnk6CiAgICAgICBvcy5yZW1v
dmUob3V0cHV0X2ZpbGUpCi0gICAgZXhjZXB0IE9TRXJyb3IsIGU6CisgICAgZXhjZXB0IE9TRXJy
b3I6CisgICAgICBlID0gc3lzLmV4Y19pbmZvKClbMV0KICAgICAgIGlmIGUuZXJybm8gIT0gZXJy
bm8uRU5PRU5UOgogICAgICAgICByYWlzZQogCiAgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3Vi
cHJvY2VzcygKLSAgICAgICAgW2d0ZXN0X3Byb2dfcGF0aCwgIiVzPXhtbCIgJSBHVEVTVF9PVVRQ
VVRfRkxBR10sCisgICAgICAgIFtndGVzdF9wcm9nX3BhdGgsICclcz14bWwnICUgR1RFU1RfT1VU
UFVUX0ZMQUddLAogICAgICAgICB3b3JraW5nX2Rpcj1ndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBE
aXIoKSkKICAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCiAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
MCwgcC5leGl0X2NvZGUpCkBAIC0xNjMsNjAgKzIyOCw3OSBAQCBkZWYgdGVzdFN1cHByZXNzZWRY
bWxPdXRwdXQoc2VsZik6CiAgICAgIiIiCiAKICAgICB4bWxfcGF0aCA9IG9zLnBhdGguam9pbihn
dGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHVEVTVF9QUk9HUkFNX05BTUUgKyAib3V0LnhtbCIpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR1RFU1RfUFJPR1JBTV9OQU1FICsgJ291dC54bWwnKQogICAgIGlmIG9zLnBhdGguaXNm
aWxlKHhtbF9wYXRoKToKICAgICAgIG9zLnJlbW92ZSh4bWxfcGF0aCkKIAotICAgIGd0ZXN0X3By
b2dfcGF0aCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKEdURVNUX1BS
T0dSQU1fTkFNRSkKLQotICAgIGNvbW1hbmQgPSBbZ3Rlc3RfcHJvZ19wYXRoLAotICAgICAgICAg
ICAgICAgIiVzPXhtbDolcyIgJSAoR1RFU1RfT1VUUFVUX0ZMQUcsIHhtbF9wYXRoKSwKLSAgICAg
ICAgICAgICAgICItLXNodXRfZG93bl94bWwiXQorICAgIGNvbW1hbmQgPSBbR1RFU1RfUFJPR1JB
TV9QQVRILAorICAgICAgICAgICAgICAgJyVzPXhtbDolcycgJSAoR1RFU1RfT1VUUFVUX0ZMQUcs
IHhtbF9wYXRoKSwKKyAgICAgICAgICAgICAgICctLXNodXRfZG93bl94bWwnXQogICAgIHAgPSBn
dGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKICAgICBpZiBwLnRlcm1pbmF0ZWRf
Ynlfc2lnbmFsOgotICAgICAgc2VsZi5hc3NlcnRfKEZhbHNlLAotICAgICAgICAgICAgICAgICAg
ICIlcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAlZCIgJSAoZ3Rlc3RfcHJvZ19uYW1lLCBwLnNpZ25h
bCkpCisgICAgICAjIHAuc2lnbmFsIGlzIGF2YWxhYmxlIG9ubHkgaWYgcC50ZXJtaW5hdGVkX2J5
X3NpZ25hbCBpcyBUcnVlLgorICAgICAgc2VsZi5hc3NlcnRGYWxzZSgKKyAgICAgICAgICBwLnRl
cm1pbmF0ZWRfYnlfc2lnbmFsLAorICAgICAgICAgICclcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAl
ZCcgJSAoR1RFU1RfUFJPR1JBTV9OQU1FLCBwLnNpZ25hbCkpCiAgICAgZWxzZToKICAgICAgIHNl
bGYuYXNzZXJ0XyhwLmV4aXRlZCkKICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIHAuZXhpdF9j
b2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgIiclcycgZXhpdGVkIHdpdGggY29kZSAlcywg
d2hpY2ggZG9lc24ndCBtYXRjaCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAidGhlIGV4cGVj
dGVkIGV4aXQgY29kZSAlcy4iCisgICAgICAgICAgICAgICAgICAgICAgICAndGhlIGV4cGVjdGVk
IGV4aXQgY29kZSAlcy4nCiAgICAgICAgICAgICAgICAgICAgICAgICAlIChjb21tYW5kLCBwLmV4
aXRfY29kZSwgMSkpCiAKICAgICBzZWxmLmFzc2VydF8obm90IG9zLnBhdGguaXNmaWxlKHhtbF9w
YXRoKSkKIAorICBkZWYgdGVzdEZpbHRlcmVkVGVzdFhtbE91dHB1dChzZWxmKToKKyAgICAiIiJW
ZXJpZmllcyBYTUwgb3V0cHV0IHdoZW4gYSBmaWx0ZXIgaXMgYXBwbGllZC4KIAotICBkZWYgX1Rl
c3RYbWxPdXRwdXQoc2VsZiwgZ3Rlc3RfcHJvZ19uYW1lLCBleHBlY3RlZF94bWwsIGV4cGVjdGVk
X2V4aXRfY29kZSk6CisgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGV4ZWN1dGVzIG9ubHkg
c29tZSB0ZXN0cyBhbmQgdmVyaWZpZXMgdGhhdAorICAgIG5vbi1zZWxlY3RlZCB0ZXN0cyBkbyBu
b3Qgc2hvdyB1cCBpbiB0aGUgWE1MIG91dHB1dC4KICAgICAiIiIKLSAgICBBc3NlcnRzIHRoYXQg
dGhlIFhNTCBkb2N1bWVudCBnZW5lcmF0ZWQgYnkgcnVubmluZyB0aGUgcHJvZ3JhbQotICAgIGd0
ZXN0X3Byb2dfbmFtZSBtYXRjaGVzIGV4cGVjdGVkX3htbCwgYSBzdHJpbmcgY29udGFpbmluZyBh
bm90aGVyCi0gICAgWE1MIGRvY3VtZW50LiAgRnVydGhlcm1vcmUsIHRoZSBwcm9ncmFtJ3MgZXhp
dCBjb2RlIG11c3QgYmUKLSAgICBleHBlY3RlZF9leGl0X2NvZGUuCisKKyAgICBzZWxmLl9UZXN0
WG1sT3V0cHV0KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQRUNURURfRklMVEVSRURfVEVTVF9YTUws
IDAsCisgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9hcmdzPVsnJXM9U3VjY2Vzc2Z1bFRl
c3QuKicgJSBHVEVTVF9GSUxURVJfRkxBR10pCisKKyAgZGVmIF9HZXRYbWxPdXRwdXQoc2VsZiwg
Z3Rlc3RfcHJvZ19uYW1lLCBleHRyYV9hcmdzLCBleHBlY3RlZF9leGl0X2NvZGUpOgorICAgICIi
IgorICAgIFJldHVybnMgdGhlIHhtbCBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgdGhlIHBy
b2dyYW0gZ3Rlc3RfcHJvZ19uYW1lLgorICAgIEZ1cnRoZXJtb3JlLCB0aGUgcHJvZ3JhbSdzIGV4
aXQgY29kZSBtdXN0IGJlIGV4cGVjdGVkX2V4aXRfY29kZS4KICAgICAiIiIKICAgICB4bWxfcGF0
aCA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBndGVzdF9wcm9nX25hbWUgKyAib3V0LnhtbCIpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ3Rlc3RfcHJvZ19uYW1lICsgJ291dC54bWwnKQogICAgIGd0
ZXN0X3Byb2dfcGF0aCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKGd0
ZXN0X3Byb2dfbmFtZSkKIAotICAgIGNvbW1hbmQgPSBbZ3Rlc3RfcHJvZ19wYXRoLCAiJXM9eG1s
OiVzIiAlIChHVEVTVF9PVVRQVVRfRkxBRywgeG1sX3BhdGgpXQorICAgIGNvbW1hbmQgPSAoW2d0
ZXN0X3Byb2dfcGF0aCwgJyVzPXhtbDolcycgJSAoR1RFU1RfT1VUUFVUX0ZMQUcsIHhtbF9wYXRo
KV0gKworICAgICAgICAgICAgICAgZXh0cmFfYXJncykKICAgICBwID0gZ3Rlc3RfdGVzdF91dGls
cy5TdWJwcm9jZXNzKGNvbW1hbmQpCiAgICAgaWYgcC50ZXJtaW5hdGVkX2J5X3NpZ25hbDoKICAg
ICAgIHNlbGYuYXNzZXJ0XyhGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAiJXMgd2FzIGtpbGxl
ZCBieSBzaWduYWwgJWQiICUgKGd0ZXN0X3Byb2dfbmFtZSwgcC5zaWduYWwpKQorICAgICAgICAg
ICAgICAgICAgICclcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAlZCcgJSAoZ3Rlc3RfcHJvZ19uYW1l
LCBwLnNpZ25hbCkpCiAgICAgZWxzZToKICAgICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX2V4aXRfY29kZSwgcC5leGl0X2NvZGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyBleGl0ZWQgd2l0aCBjb2RlICVzLCB3aGljaCBk
b2Vzbid0IG1hdGNoICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZXhwZWN0ZWQgZXhp
dCBjb2RlICVzLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgZXhwZWN0ZWQgZXhpdCBj
b2RlICVzLicKICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvbW1hbmQsIHAuZXhpdF9jb2Rl
LCBleHBlY3RlZF9leGl0X2NvZGUpKQorICAgIGFjdHVhbCA9IG1pbmlkb20ucGFyc2UoeG1sX3Bh
dGgpCisgICAgcmV0dXJuIGFjdHVhbAogCisgIGRlZiBfVGVzdFhtbE91dHB1dChzZWxmLCBndGVz
dF9wcm9nX25hbWUsIGV4cGVjdGVkX3htbCwKKyAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
X2V4aXRfY29kZSwgZXh0cmFfYXJncz1Ob25lKToKKyAgICAiIiIKKyAgICBBc3NlcnRzIHRoYXQg
dGhlIFhNTCBkb2N1bWVudCBnZW5lcmF0ZWQgYnkgcnVubmluZyB0aGUgcHJvZ3JhbQorICAgIGd0
ZXN0X3Byb2dfbmFtZSBtYXRjaGVzIGV4cGVjdGVkX3htbCwgYSBzdHJpbmcgY29udGFpbmluZyBh
bm90aGVyCisgICAgWE1MIGRvY3VtZW50LiAgRnVydGhlcm1vcmUsIHRoZSBwcm9ncmFtJ3MgZXhp
dCBjb2RlIG11c3QgYmUKKyAgICBleHBlY3RlZF9leGl0X2NvZGUuCisgICAgIiIiCisKKyAgICBh
Y3R1YWwgPSBzZWxmLl9HZXRYbWxPdXRwdXQoZ3Rlc3RfcHJvZ19uYW1lLCBleHRyYV9hcmdzIG9y
IFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGUp
CiAgICAgZXhwZWN0ZWQgPSBtaW5pZG9tLnBhcnNlU3RyaW5nKGV4cGVjdGVkX3htbCkKLSAgICBh
Y3R1YWwgICA9IG1pbmlkb20ucGFyc2UoeG1sX3BhdGgpCiAgICAgc2VsZi5Ob3JtYWxpemVYbWwo
YWN0dWFsLmRvY3VtZW50RWxlbWVudCkKICAgICBzZWxmLkFzc2VydEVxdWl2YWxlbnROb2Rlcyhl
eHBlY3RlZC5kb2N1bWVudEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWN0dWFsLmRvY3VtZW50RWxlbWVudCkKICAgICBleHBlY3RlZC51bmxpbmsoKQotICAgIGFjdHVh
bCAgLnVubGluaygpCi0KKyAgICBhY3R1YWwudW5saW5rKCkKIAogCiBpZiBfX25hbWVfXyA9PSAn
X19tYWluX18nOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MKaW5kZXggZmMwN2VmNDZiZDY2N2FhOTJlNWRh
ZjdmMjAyZWZjZDc2MzY2YmY4YS4uNDhiODc3MWI1MjQ2YzE0MWY0Y2RiYTBkOWZlOGEyZGM5YTZl
Nzc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxf
b3V0cHV0X3VuaXR0ZXN0Xy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjCkBAIC0zOCwxMyArMzgsMTYgQEAKIC8vIFRoaXMg
cHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRlc3QuICBEb24ndCBy
dW4gaXQKIC8vIGRpcmVjdGx5LgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgogCiB1c2luZyA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0OwogdXNp
bmcgOjp0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3RX
aXRoUGFyYW07CiB1c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OwordXNpbmcgOjp0ZXN0aW5nOjpU
ZXN0OwordXNpbmcgOjp0ZXN0aW5nOjpWYWx1ZXM7CiAKLWNsYXNzIFN1Y2Nlc3NmdWxUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgU3VjY2Vzc2Z1bFRlc3QgOiBwdWJsaWMgVGVz
dCB7CiB9OwogCiBURVNUX0YoU3VjY2Vzc2Z1bFRlc3QsIFN1Y2NlZWRzKSB7CkBAIC01MiwxNCAr
NTUsMTQgQEAgVEVTVF9GKFN1Y2Nlc3NmdWxUZXN0LCBTdWNjZWVkcykgewogICBBU1NFUlRfRVEo
MSwgMSk7CiB9CiAKLWNsYXNzIEZhaWxlZFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Citj
bGFzcyBGYWlsZWRUZXN0IDogcHVibGljIFRlc3QgewogfTsKIAogVEVTVF9GKEZhaWxlZFRlc3Qs
IEZhaWxzKSB7CiAgIEFTU0VSVF9FUSgxLCAyKTsKIH0KIAotY2xhc3MgRGlzYWJsZWRUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgRGlzYWJsZWRUZXN0IDogcHVibGljIFRlc3Qg
ewogfTsKIAogVEVTVF9GKERpc2FibGVkVGVzdCwgRElTQUJMRURfdGVzdF9ub3RfcnVuKSB7CkBA
IC05MSw3ICs5NCwxMCBAQCBURVNUKEludmFsaWRDaGFyYWN0ZXJzVGVzdCwgSW52YWxpZENoYXJh
Y3RlcnNJbk1lc3NhZ2UpIHsKICAgRkFJTCgpIDw8ICJJbnZhbGlkIGNoYXJhY3RlcnMgaW4gYnJh
Y2tldHMgW1x4MVx4Ml0iOwogfQogCi1jbGFzcyBQcm9wZXJ0eVJlY29yZGluZ1Rlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7CitjbGFzcyBQcm9wZXJ0eVJlY29yZGluZ1Rlc3QgOiBwdWJsaWMg
VGVzdCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgeyBSZWNvcmRQ
cm9wZXJ0eSgiU2V0VXBUZXN0Q2FzZSIsICJ5ZXMiKTsgfQorICBzdGF0aWMgdm9pZCBUZWFyRG93
blRlc3RDYXNlKCkgeyBSZWNvcmRQcm9wZXJ0eSgiVGVhckRvd25UZXN0Q2FzZSIsICJheWUiKTsg
fQogfTsKIAogVEVTVF9GKFByb3BlcnR5UmVjb3JkaW5nVGVzdCwgT25lUHJvcGVydHkpIHsKQEAg
LTExNywxMiArMTIzLDEyIEBAIFRFU1QoTm9GaXh0dXJlVGVzdCwgUmVjb3JkUHJvcGVydHkpIHsK
ICAgUmVjb3JkUHJvcGVydHkoImtleSIsICIxIik7CiB9CiAKLXZvaWQgRXh0ZXJuYWxVdGlsaXR5
VGhhdENhbGxzUmVjb3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBpbnQgdmFsdWUpIHsKK3Zv
aWQgRXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJp
bmcmIGtleSwgaW50IHZhbHVlKSB7CiAgIHRlc3Rpbmc6OlRlc3Q6OlJlY29yZFByb3BlcnR5KGtl
eSwgdmFsdWUpOwogfQogCi12b2lkIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFByb3Bl
cnR5KGNvbnN0IGNoYXIqIGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogdmFsdWUpIHsKK3ZvaWQgRXh0ZXJuYWxVdGlsaXR5VGhhdENh
bGxzUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSB7
CiAgIHRlc3Rpbmc6OlRlc3Q6OlJlY29yZFByb3BlcnR5KGtleSwgdmFsdWUpOwogfQogCkBAIC0x
MzQsNiArMTQwLDM1IEBAIFRFU1QoTm9GaXh0dXJlVGVzdCwgRXh0ZXJuYWxVdGlsaXR5VGhhdENh
bGxzUmVjb3JkU3RyaW5nVmFsdWVkUHJvcGVydHkpIHsKICAgRXh0ZXJuYWxVdGlsaXR5VGhhdENh
bGxzUmVjb3JkUHJvcGVydHkoImtleV9mb3JfdXRpbGl0eV9zdHJpbmciLCAiMSIpOwogfQogCisv
LyBWZXJpZmllcyB0aGF0IHRoZSB0ZXN0IHBhcmFtZXRlciB2YWx1ZSBpcyBvdXRwdXQgaW4gdGhl
ICd2YWx1ZV9wYXJhbScKKy8vIFhNTCBhdHRyaWJ1dGUgZm9yIHZhbHVlLXBhcmFtZXRlcml6ZWQg
dGVzdHMuCitjbGFzcyBWYWx1ZVBhcmFtVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4g
e307CitURVNUX1AoVmFsdWVQYXJhbVRlc3QsIEhhc1ZhbHVlUGFyYW1BdHRyaWJ1dGUpIHt9CitU
RVNUX1AoVmFsdWVQYXJhbVRlc3QsIEFub3RoZXJUZXN0VGhhdEhhc1ZhbHVlUGFyYW1BdHRyaWJ1
dGUpIHt9CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChTaW5nbGUsIFZhbHVlUGFyYW1UZXN0LCBW
YWx1ZXMoMzMsIDQyKSk7CisKKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAorLy8gVmVyaWZpZXMg
dGhhdCB0aGUgdHlwZSBwYXJhbWV0ZXIgbmFtZSBpcyBvdXRwdXQgaW4gdGhlICd0eXBlX3BhcmFt
JworLy8gWE1MIGF0dHJpYnV0ZSBmb3IgdHlwZWQgdGVzdHMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gY2xhc3MgVHlwZWRUZXN0IDogcHVibGljIFRlc3Qge307Cit0eXBlZGVmIHRlc3Rpbmc6OlR5
cGVzPGludCwgbG9uZz4gVHlwZWRUZXN0VHlwZXM7CitUWVBFRF9URVNUX0NBU0UoVHlwZWRUZXN0
LCBUeXBlZFRlc3RUeXBlcyk7CitUWVBFRF9URVNUKFR5cGVkVGVzdCwgSGFzVHlwZVBhcmFtQXR0
cmlidXRlKSB7fQorI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisvLyBWZXJp
ZmllcyB0aGF0IHRoZSB0eXBlIHBhcmFtZXRlciBuYW1lIGlzIG91dHB1dCBpbiB0aGUgJ3R5cGVf
cGFyYW0nCisvLyBYTUwgYXR0cmlidXRlIGZvciB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSA6IHB1
YmxpYyBUZXN0IHt9OworVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2Fz
ZSk7CitUWVBFRF9URVNUX1AoVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSwgSGFzVHlwZVBhcmFt
QXR0cmlidXRlKSB7fQorUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtZXRlcml6
ZWRUZXN0Q2FzZSwgSGFzVHlwZVBhcmFtQXR0cmlidXRlKTsKK3R5cGVkZWYgdGVzdGluZzo6VHlw
ZXM8aW50LCBsb25nPiBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlVHlwZXM7CitJTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUChTaW5nbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZVR5cGVzKTsKKyNlbmRpZgorCiBpbnQgbWFpbihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKICAgSW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwog
CkBAIC0xNDEsNSArMTc2LDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CiAg
ICAgVGVzdEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMgPSBVbml0VGVzdDo6R2V0SW5zdGFuY2Uo
KS0+bGlzdGVuZXJzKCk7CiAgICAgZGVsZXRlIGxpc3RlbmVycy5SZWxlYXNlKGxpc3RlbmVycy5k
ZWZhdWx0X3htbF9nZW5lcmF0b3IoKSk7CiAgIH0KKyAgdGVzdGluZzo6VGVzdDo6UmVjb3JkUHJv
cGVydHkoImFkX2hvY19wcm9wZXJ0eSIsICI0MiIpOwogICByZXR1cm4gUlVOX0FMTF9URVNUUygp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxf
dGVzdF91dGlscy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX3Rl
c3RfdXRpbHMucHkKaW5kZXggYzgzYzNiN2VhNzliMmQ3NjJlZWQ2NjVlMmQ2MWRmOGI5ZWEwODQ0
My4uMzQxOTU2YjU0ZGRmZmZkYzdjZmU4Y2JjYTNmMGQ5YjE0OWMyZGIyNiAxMDA3NTUKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfdGVzdF91dGlscy5weQorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF90ZXN0X3V0aWxzLnB5CkBA
IC0zOSw4ICszOSw4IEBACiBpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwogCiAKLUdURVNUX09VVFBV
VF9GTEFHICAgICAgICAgPSAiLS1ndGVzdF9vdXRwdXQiCi1HVEVTVF9ERUZBVUxUX09VVFBVVF9G
SUxFID0gInRlc3RfZGV0YWlsLnhtbCIKK0dURVNUX09VVFBVVF9GTEFHICAgICAgICAgPSAnLS1n
dGVzdF9vdXRwdXQnCitHVEVTVF9ERUZBVUxUX09VVFBVVF9GSUxFID0gJ3Rlc3RfZGV0YWlsLnht
bCcKIAogY2xhc3MgR1Rlc3RYTUxUZXN0Q2FzZShndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToK
ICAgIiIiCkBAIC01OCw4ICs1OCw5IEBAIGRlZiBBc3NlcnRFcXVpdmFsZW50Tm9kZXMoc2VsZiwg
ZXhwZWN0ZWRfbm9kZSwgYWN0dWFsX25vZGUpOgogICAgICogIEl0IGhhcyB0aGUgc2FtZSB0YWcg
bmFtZSBhcyBleHBlY3RlZF9ub2RlLgogICAgICogIEl0IGhhcyB0aGUgc2FtZSBzZXQgb2YgYXR0
cmlidXRlcyBhcyBleHBlY3RlZF9ub2RlLCBlYWNoIHdpdGgKICAgICAgICB0aGUgc2FtZSB2YWx1
ZSBhcyB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgb2YgZXhwZWN0ZWRfbm9kZS4KLSAgICAg
ICBBbiBleGNlcHRpb24gaXMgYW55IGF0dHJpYnV0ZSBuYW1lZCAidGltZSIsIHdoaWNoIG5lZWRz
IG9ubHkgYmUKLSAgICAgICBjb252ZXJ0aWJsZSB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4K
KyAgICAgICBFeGNlcHRpb25zIGFyZSBhbnkgYXR0cmlidXRlIG5hbWVkICJ0aW1lIiwgd2hpY2gg
bmVlZHMgb25seSBiZQorICAgICAgIGNvbnZlcnRpYmxlIHRvIGEgZmxvYXRpbmctcG9pbnQgbnVt
YmVyIGFuZCBhbnkgYXR0cmlidXRlIG5hbWVkCisgICAgICAgInR5cGVfcGFyYW0iIHdoaWNoIG9u
bHkgaGFzIHRvIGJlIG5vbi1lbXB0eS4KICAgICAqICBJdCBoYXMgYW4gZXF1aXZhbGVudCBzZXQg
b2YgY2hpbGQgbm9kZXMgKGluY2x1ZGluZyBlbGVtZW50cyBhbmQKICAgICAgICBDREFUQSBzZWN0
aW9ucykgYXMgZXhwZWN0ZWRfbm9kZS4gIE5vdGUgdGhhdCB3ZSBpZ25vcmUgdGhlCiAgICAgICAg
b3JkZXIgb2YgdGhlIGNoaWxkcmVuIGFzIHRoZXkgYXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlIGlu
IGFueQpAQCAtNzksMzQgKzgwLDM4IEBAIGRlZiBBc3NlcnRFcXVpdmFsZW50Tm9kZXMoc2VsZiwg
ZXhwZWN0ZWRfbm9kZSwgYWN0dWFsX25vZGUpOgogICAgIGFjdHVhbF9hdHRyaWJ1dGVzICAgPSBh
Y3R1YWxfbm9kZSAgLmF0dHJpYnV0ZXMKICAgICBzZWxmLmFzc2VydEVxdWFscygKICAgICAgICAg
ZXhwZWN0ZWRfYXR0cmlidXRlcy5sZW5ndGgsIGFjdHVhbF9hdHRyaWJ1dGVzLmxlbmd0aCwKLSAg
ICAgICAgImF0dHJpYnV0ZSBudW1iZXJzIGRpZmZlciBpbiBlbGVtZW50ICIgKyBhY3R1YWxfbm9k
ZS50YWdOYW1lKQorICAgICAgICAnYXR0cmlidXRlIG51bWJlcnMgZGlmZmVyIGluIGVsZW1lbnQg
JXM6XG5FeHBlY3RlZDogJXJcbkFjdHVhbDogJXInICUgKAorICAgICAgICAgICAgYWN0dWFsX25v
ZGUudGFnTmFtZSwgZXhwZWN0ZWRfYXR0cmlidXRlcy5rZXlzKCksCisgICAgICAgICAgICBhY3R1
YWxfYXR0cmlidXRlcy5rZXlzKCkpKQogICAgIGZvciBpIGluIHJhbmdlKGV4cGVjdGVkX2F0dHJp
YnV0ZXMubGVuZ3RoKToKICAgICAgIGV4cGVjdGVkX2F0dHIgPSBleHBlY3RlZF9hdHRyaWJ1dGVz
Lml0ZW0oaSkKICAgICAgIGFjdHVhbF9hdHRyICAgPSBhY3R1YWxfYXR0cmlidXRlcy5nZXQoZXhw
ZWN0ZWRfYXR0ci5uYW1lKQogICAgICAgc2VsZi5hc3NlcnRfKAogICAgICAgICAgIGFjdHVhbF9h
dHRyIGlzIG5vdCBOb25lLAotICAgICAgICAgICJleHBlY3RlZCBhdHRyaWJ1dGUgJXMgbm90IGZv
dW5kIGluIGVsZW1lbnQgJXMiICUKKyAgICAgICAgICAnZXhwZWN0ZWQgYXR0cmlidXRlICVzIG5v
dCBmb3VuZCBpbiBlbGVtZW50ICVzJyAlCiAgICAgICAgICAgKGV4cGVjdGVkX2F0dHIubmFtZSwg
YWN0dWFsX25vZGUudGFnTmFtZSkpCi0gICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZF9h
dHRyLnZhbHVlLCBhY3R1YWxfYXR0ci52YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICIg
dmFsdWVzIG9mIGF0dHJpYnV0ZSAlcyBpbiBlbGVtZW50ICVzIGRpZmZlciIgJQotICAgICAgICAg
ICAgICAgICAgICAgICAgKGV4cGVjdGVkX2F0dHIubmFtZSwgYWN0dWFsX25vZGUudGFnTmFtZSkp
CisgICAgICBzZWxmLmFzc2VydEVxdWFscygKKyAgICAgICAgICBleHBlY3RlZF9hdHRyLnZhbHVl
LCBhY3R1YWxfYXR0ci52YWx1ZSwKKyAgICAgICAgICAnIHZhbHVlcyBvZiBhdHRyaWJ1dGUgJXMg
aW4gZWxlbWVudCAlcyBkaWZmZXI6ICVzIHZzICVzJyAlCisgICAgICAgICAgKGV4cGVjdGVkX2F0
dHIubmFtZSwgYWN0dWFsX25vZGUudGFnTmFtZSwKKyAgICAgICAgICAgZXhwZWN0ZWRfYXR0ci52
YWx1ZSwgYWN0dWFsX2F0dHIudmFsdWUpKQogCiAgICAgZXhwZWN0ZWRfY2hpbGRyZW4gPSBzZWxm
Ll9HZXRDaGlsZHJlbihleHBlY3RlZF9ub2RlKQogICAgIGFjdHVhbF9jaGlsZHJlbiA9IHNlbGYu
X0dldENoaWxkcmVuKGFjdHVhbF9ub2RlKQogICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAogICAgICAg
ICBsZW4oZXhwZWN0ZWRfY2hpbGRyZW4pLCBsZW4oYWN0dWFsX2NoaWxkcmVuKSwKLSAgICAgICAg
Im51bWJlciBvZiBjaGlsZCBlbGVtZW50cyBkaWZmZXIgaW4gZWxlbWVudCAiICsgYWN0dWFsX25v
ZGUudGFnTmFtZSkKLSAgICBmb3IgY2hpbGRfaWQsIGNoaWxkIGluIGV4cGVjdGVkX2NoaWxkcmVu
Lml0ZXJpdGVtcygpOgorICAgICAgICAnbnVtYmVyIG9mIGNoaWxkIGVsZW1lbnRzIGRpZmZlciBp
biBlbGVtZW50ICcgKyBhY3R1YWxfbm9kZS50YWdOYW1lKQorICAgIGZvciBjaGlsZF9pZCwgY2hp
bGQgaW4gZXhwZWN0ZWRfY2hpbGRyZW4uaXRlbXMoKToKICAgICAgIHNlbGYuYXNzZXJ0XyhjaGls
ZF9pZCBpbiBhY3R1YWxfY2hpbGRyZW4sCiAgICAgICAgICAgICAgICAgICAgJzwlcz4gaXMgbm90
IGluIDwlcz4gKGluIGVsZW1lbnQgJXMpJyAlCiAgICAgICAgICAgICAgICAgICAgKGNoaWxkX2lk
LCBhY3R1YWxfY2hpbGRyZW4sIGFjdHVhbF9ub2RlLnRhZ05hbWUpKQogICAgICAgc2VsZi5Bc3Nl
cnRFcXVpdmFsZW50Tm9kZXMoY2hpbGQsIGFjdHVhbF9jaGlsZHJlbltjaGlsZF9pZF0pCiAKICAg
aWRlbnRpZnlpbmdfYXR0cmlidXRlID0gewotICAgICJ0ZXN0c3VpdGVzIjogIm5hbWUiLAotICAg
ICJ0ZXN0c3VpdGUiOiAibmFtZSIsCi0gICAgInRlc3RjYXNlIjogICJuYW1lIiwKLSAgICAiZmFp
bHVyZSI6ICAgIm1lc3NhZ2UiLAorICAgICd0ZXN0c3VpdGVzJzogJ25hbWUnLAorICAgICd0ZXN0
c3VpdGUnOiAnbmFtZScsCisgICAgJ3Rlc3RjYXNlJzogICduYW1lJywKKyAgICAnZmFpbHVyZSc6
ICAgJ21lc3NhZ2UnLAogICAgIH0KIAogICBkZWYgX0dldENoaWxkcmVuKHNlbGYsIGVsZW1lbnQp
OgpAQCAtMTI2LDIwICsxMzEsMjAgQEAgZGVmIF9HZXRDaGlsZHJlbihzZWxmLCBlbGVtZW50KToK
ICAgICBmb3IgY2hpbGQgaW4gZWxlbWVudC5jaGlsZE5vZGVzOgogICAgICAgaWYgY2hpbGQubm9k
ZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05PREU6CiAgICAgICAgIHNlbGYuYXNzZXJ0XyhjaGlsZC50
YWdOYW1lIGluIHNlbGYuaWRlbnRpZnlpbmdfYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAg
ICAgIkVuY291bnRlcmVkIHVua25vd24gZWxlbWVudCA8JXM+IiAlIGNoaWxkLnRhZ05hbWUpCisg
ICAgICAgICAgICAgICAgICAgICAnRW5jb3VudGVyZWQgdW5rbm93biBlbGVtZW50IDwlcz4nICUg
Y2hpbGQudGFnTmFtZSkKICAgICAgICAgY2hpbGRJRCA9IGNoaWxkLmdldEF0dHJpYnV0ZShzZWxm
LmlkZW50aWZ5aW5nX2F0dHJpYnV0ZVtjaGlsZC50YWdOYW1lXSkKICAgICAgICAgc2VsZi5hc3Nl
cnRfKGNoaWxkSUQgbm90IGluIGNoaWxkcmVuKQogICAgICAgICBjaGlsZHJlbltjaGlsZElEXSA9
IGNoaWxkCiAgICAgICBlbGlmIGNoaWxkLm5vZGVUeXBlIGluIFtOb2RlLlRFWFRfTk9ERSwgTm9k
ZS5DREFUQV9TRUNUSU9OX05PREVdOgotICAgICAgICBpZiAiZGV0YWlsIiBub3QgaW4gY2hpbGRy
ZW46CisgICAgICAgIGlmICdkZXRhaWwnIG5vdCBpbiBjaGlsZHJlbjoKICAgICAgICAgICBpZiAo
Y2hpbGQubm9kZVR5cGUgPT0gTm9kZS5DREFUQV9TRUNUSU9OX05PREUgb3IKICAgICAgICAgICAg
ICAgbm90IGNoaWxkLm5vZGVWYWx1ZS5pc3NwYWNlKCkpOgotICAgICAgICAgICAgY2hpbGRyZW5b
ImRldGFpbCJdID0gY2hpbGQub3duZXJEb2N1bWVudC5jcmVhdGVDREFUQVNlY3Rpb24oCisgICAg
ICAgICAgICBjaGlsZHJlblsnZGV0YWlsJ10gPSBjaGlsZC5vd25lckRvY3VtZW50LmNyZWF0ZUNE
QVRBU2VjdGlvbigKICAgICAgICAgICAgICAgICBjaGlsZC5ub2RlVmFsdWUpCiAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgY2hpbGRyZW5bImRldGFpbCJdLm5vZGVWYWx1ZSArPSBjaGlsZC5ub2Rl
VmFsdWUKKyAgICAgICAgICBjaGlsZHJlblsnZGV0YWlsJ10ubm9kZVZhbHVlICs9IGNoaWxkLm5v
ZGVWYWx1ZQogICAgICAgZWxzZToKLSAgICAgICAgc2VsZi5mYWlsKCJFbmNvdW50ZXJlZCB1bmV4
cGVjdGVkIG5vZGUgdHlwZSAlZCIgJSBjaGlsZC5ub2RlVHlwZSkKKyAgICAgICAgc2VsZi5mYWls
KCdFbmNvdW50ZXJlZCB1bmV4cGVjdGVkIG5vZGUgdHlwZSAlZCcgJSBjaGlsZC5ub2RlVHlwZSkK
ICAgICByZXR1cm4gY2hpbGRyZW4KIAogICBkZWYgTm9ybWFsaXplWG1sKHNlbGYsIGVsZW1lbnQp
OgpAQCAtMTUwLDIzICsxNTUsNDAgQEAgZGVmIE5vcm1hbGl6ZVhtbChzZWxmLCBlbGVtZW50KToK
ICAgICAqICBUaGUgInRpbWUiIGF0dHJpYnV0ZSBvZiA8dGVzdHN1aXRlcz4sIDx0ZXN0c3VpdGU+
IGFuZCA8dGVzdGNhc2U+CiAgICAgICAgZWxlbWVudHMgaXMgcmVwbGFjZWQgd2l0aCBhIHNpbmds
ZSBhc3RlcmlzaywgaWYgaXQgY29udGFpbnMKICAgICAgICBvbmx5IGRpZ2l0IGNoYXJhY3RlcnMu
Ci0gICAgKiAgVGhlIGxpbmUgbnVtYmVyIHJlcG9ydGVkIGluIHRoZSBmaXJzdCBsaW5lIG9mIHRo
ZSAibWVzc2FnZSIKLSAgICAgICBhdHRyaWJ1dGUgb2YgPGZhaWx1cmU+IGVsZW1lbnRzIGlzIHJl
cGxhY2VkIHdpdGggYSBzaW5nbGUgYXN0ZXJpc2suCisgICAgKiAgVGhlICJ0aW1lc3RhbXAiIGF0
dHJpYnV0ZSBvZiA8dGVzdHN1aXRlcz4gZWxlbWVudHMgaXMgcmVwbGFjZWQgd2l0aCBhCisgICAg
ICAgc2luZ2xlIGFzdGVyaXNrLCBpZiBpdCBjb250YWlucyBhIHZhbGlkIElTTzg2MDEgZGF0ZXRp
bWUgdmFsdWUuCisgICAgKiAgVGhlICJ0eXBlX3BhcmFtIiBhdHRyaWJ1dGUgb2YgPHRlc3RjYXNl
PiBlbGVtZW50cyBpcyByZXBsYWNlZCB3aXRoIGEKKyAgICAgICBzaW5nbGUgYXN0ZXJpc2sgKGlm
IGl0IHNuIG5vbi1lbXB0eSkgYXMgaXQgaXMgdGhlIHR5cGUgbmFtZSByZXR1cm5lZAorICAgICAg
IGJ5IHRoZSBjb21waWxlciBhbmQgaXMgcGxhdGZvcm0gZGVwZW5kZW50LgorICAgICogIFRoZSBs
aW5lIGluZm8gcmVwb3J0ZWQgaW4gdGhlIGZpcnN0IGxpbmUgb2YgdGhlICJtZXNzYWdlIgorICAg
ICAgIGF0dHJpYnV0ZSBhbmQgQ0RBVEEgc2VjdGlvbiBvZiA8ZmFpbHVyZT4gZWxlbWVudHMgaXMg
cmVwbGFjZWQgd2l0aCB0aGUKKyAgICAgICBmaWxlJ3MgYmFzZW5hbWUgYW5kIGEgc2luZ2xlIGFz
dGVyaXNrIGZvciB0aGUgbGluZSBudW1iZXIuCiAgICAgKiAgVGhlIGRpcmVjdG9yeSBuYW1lcyBp
biBmaWxlIHBhdGhzIGFyZSByZW1vdmVkLgogICAgICogIFRoZSBzdGFjayB0cmFjZXMgYXJlIHJl
bW92ZWQuCiAgICAgIiIiCiAKLSAgICBpZiBlbGVtZW50LnRhZ05hbWUgaW4gKCJ0ZXN0c3VpdGVz
IiwgInRlc3RzdWl0ZSIsICJ0ZXN0Y2FzZSIpOgotICAgICAgdGltZSA9IGVsZW1lbnQuZ2V0QXR0
cmlidXRlTm9kZSgidGltZSIpCi0gICAgICB0aW1lLnZhbHVlID0gcmUuc3ViKHIiXlxkKyhcLlxk
Kyk/JCIsICIqIiwgdGltZS52YWx1ZSkKLSAgICBlbGlmIGVsZW1lbnQudGFnTmFtZSA9PSAiZmFp
bHVyZSI6CisgICAgaWYgZWxlbWVudC50YWdOYW1lID09ICd0ZXN0c3VpdGVzJzoKKyAgICAgIHRp
bWVzdGFtcCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlTm9kZSgndGltZXN0YW1wJykKKyAgICAgIHRp
bWVzdGFtcC52YWx1ZSA9IHJlLnN1YihyJ15cZHs0fS1cZFxkLVxkXGRUXGRcZDpcZFxkOlxkXGQk
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKicsIHRpbWVzdGFtcC52YWx1ZSkK
KyAgICBpZiBlbGVtZW50LnRhZ05hbWUgaW4gKCd0ZXN0c3VpdGVzJywgJ3Rlc3RzdWl0ZScsICd0
ZXN0Y2FzZScpOgorICAgICAgdGltZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlTm9kZSgndGltZScp
CisgICAgICB0aW1lLnZhbHVlID0gcmUuc3ViKHInXlxkKyhcLlxkKyk/JCcsICcqJywgdGltZS52
YWx1ZSkKKyAgICAgIHR5cGVfcGFyYW0gPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoJ3R5cGVf
cGFyYW0nKQorICAgICAgaWYgdHlwZV9wYXJhbSBhbmQgdHlwZV9wYXJhbS52YWx1ZToKKyAgICAg
ICAgdHlwZV9wYXJhbS52YWx1ZSA9ICcqJworICAgIGVsaWYgZWxlbWVudC50YWdOYW1lID09ICdm
YWlsdXJlJzoKKyAgICAgIHNvdXJjZV9saW5lX3BhdCA9IHInXi4qWy9cXF0oLio6KVxkK1xuJwor
ICAgICAgIyBSZXBsYWNlcyB0aGUgc291cmNlIGxpbmUgaW5mb3JtYXRpb24gd2l0aCBhIG5vcm1h
bGl6ZWQgZm9ybS4KKyAgICAgIG1lc3NhZ2UgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoJ21l
c3NhZ2UnKQorICAgICAgbWVzc2FnZS52YWx1ZSA9IHJlLnN1Yihzb3VyY2VfbGluZV9wYXQsICdc
XDEqXG4nLCBtZXNzYWdlLnZhbHVlKQogICAgICAgZm9yIGNoaWxkIGluIGVsZW1lbnQuY2hpbGRO
b2RlczoKICAgICAgICAgaWYgY2hpbGQubm9kZVR5cGUgPT0gTm9kZS5DREFUQV9TRUNUSU9OX05P
REU6Ci0gICAgICAgICAgIyBSZW1vdmVzIHRoZSBzb3VyY2UgbGluZSBudW1iZXIuCi0gICAgICAg
ICAgY2RhdGEgPSByZS5zdWIociJeLipbL1xcXSguKjopXGQrXG4iLCAiXFwxKlxuIiwgY2hpbGQu
bm9kZVZhbHVlKQorICAgICAgICAgICMgUmVwbGFjZXMgdGhlIHNvdXJjZSBsaW5lIGluZm9ybWF0
aW9uIHdpdGggYSBub3JtYWxpemVkIGZvcm0uCisgICAgICAgICAgY2RhdGEgPSByZS5zdWIoc291
cmNlX2xpbmVfcGF0LCAnXFwxKlxuJywgY2hpbGQubm9kZVZhbHVlKQogICAgICAgICAgICMgUmVt
b3ZlcyB0aGUgYWN0dWFsIHN0YWNrIHRyYWNlLgotICAgICAgICAgIGNoaWxkLm5vZGVWYWx1ZSA9
IHJlLnN1YihyIlxuU3RhY2sgdHJhY2U6XG4oLnxcbikqIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiIsIGNkYXRhKQorICAgICAgICAgIGNoaWxkLm5vZGVWYWx1ZSA9IHJl
LnN1YihyJ1xuU3RhY2sgdHJhY2U6XG4oLnxcbikqJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJycsIGNkYXRhKQogICAgIGZvciBjaGlsZCBpbiBlbGVtZW50LmNoaWxkTm9k
ZXM6CiAgICAgICBpZiBjaGlsZC5ub2RlVHlwZSA9PSBOb2RlLkVMRU1FTlRfTk9ERToKICAgICAg
ICAgc2VsZi5Ob3JtYWxpemVYbWwoY2hpbGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L3Byb2R1Y3Rpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
cHJvZHVjdGlvbi5oCmluZGV4IDhmMTZmZmZhMjQxNmM1NzE1M2ZhYjNlMDk3ZDEzNGFmMWZiNGE5
YmMuLjk4ZmQ1ZTQ3NmM4ODRmYTE2YjQ3ODZhZDhhODg1MGNmNmU0YWE5YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5oCkBAIC0zNCw3ICszNCw3IEBACiAjaWZu
ZGVmIEdURVNUX1RFU1RfUFJPRFVDVElPTl9IXwogI2RlZmluZSBHVEVTVF9URVNUX1BST0RVQ1RJ
T05fSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0X3Byb2QuaD4KKyNpbmNsdWRlICJndGVzdC9n
dGVzdF9wcm9kLmgiCiAKIGNsYXNzIFByaXZhdGVDb2RlIHsKICBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0c191dGlsLnB5IGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ydW5fdGVzdHNfdXRpbC5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggOWU1NzkzMWViYTJjNjExZTBhMWY2MGZmZjRmMDk1MzllMTA3NjdhZC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0c191dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEs
NDY2ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDggR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3Ry
aWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlByb3ZpZGVzIGZhY2lsaXRpZXMgZm9yIHJ1
bm5pbmcgU0NvbnMtYnVpbHQgR29vZ2xlIFRlc3QvTW9jayB0ZXN0cy4iIiIKLQotCi1pbXBvcnQg
b3B0cGFyc2UKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2V0cwotaW1wb3J0IHN5cwot
Ci10cnk6Ci0gICMgc3Vicm9jZXNzIG1vZHVsZSBpcyBhIHByZWZlcmFibGUgd2F5IHRvIGludm9r
ZSBzdWJwcm9jZXNzZXMgYnV0IGl0IG1heQotICAjIG5vdCBiZSBhdmFpbGFibGUgb24gTWFjT1Mg
WCAxMC40LgotICAjIFN1cHByZXNzZXMgdGhlICdJbXBvcnQgbm90IGF0IHRoZSB0b3Agb2YgdGhl
IGZpbGUnIGxpbnQgY29tcGxhaW50LgotICAjIHB5bGludDogZGlzYWJsZS1tc2c9QzYyMDQKLSAg
aW1wb3J0IHN1YnByb2Nlc3MKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgc3VicHJvY2VzcyA9IE5v
bmUKLQotSEVMUF9NU0cgPSAiIiJSdW5zIHRoZSBzcGVjaWZpZWQgdGVzdHMgZm9yICUocHJvailz
LgotCi1TWU5PUFNJUwotICAgICAgIHJ1bl90ZXN0cy5weSBbT1BUSU9OXS4uLiBbQlVJTERfRElS
XS4uLiBbVEVTVF0uLi4KLQotREVTQ1JJUFRJT04KLSAgICAgICBSdW5zIHRoZSBzcGVjaWZpZWQg
dGVzdHMgKGVpdGhlciBiaW5hcnkgb3IgUHl0aG9uKSwgYW5kIHByaW50cyBhCi0gICAgICAgc3Vt
bWFyeSBvZiB0aGUgcmVzdWx0cy4gQlVJTERfRElSUyB3aWxsIGJlIHVzZWQgdG8gc2VhcmNoIGZv
ciB0aGUKLSAgICAgICBiaW5hcmllcy4gSWYgbm8gVEVTVHMgYXJlIHNwZWNpZmllZCwgYWxsIGJp
bmFyeSB0ZXN0cyBmb3VuZCBpbgotICAgICAgIEJVSUxEX0RJUnMgYW5kIGFsbCBQeXRob24gdGVz
dHMgZm91bmQgaW4gdGhlIGRpcmVjdG9yeSB0ZXN0LyAoaW4gdGhlCi0gICAgICAgJShwcm9qKXMg
cm9vdCkgYXJlIHJ1bi4KLQotICAgICAgIFRFU1QgaXMgYSBuYW1lIG9mIGVpdGhlciBhIGJpbmFy
eSBvciBhIFB5dGhvbiB0ZXN0LiBBIGJpbmFyeSB0ZXN0IGlzCi0gICAgICAgYW4gZXhlY3V0YWJs
ZSBmaWxlIG5hbWVkICpfdGVzdCBvciAqX3VuaXR0ZXN0ICh3aXRoIHRoZSAuZXhlCi0gICAgICAg
ZXh0ZW5zaW9uIG9uIFdpbmRvd3MpIEEgUHl0aG9uIHRlc3QgaXMgYSBzY3JpcHQgbmFtZWQgKl90
ZXN0LnB5IG9yCi0gICAgICAgKl91bml0dGVzdC5weS4KLQotT1BUSU9OUwotICAgICAgIC1oLCAt
LWhlbHAKLSAgICAgICAgICAgICAgUHJpbnQgdGhpcyBoZWxwIG1lc3NhZ2UuCi0gICAgICAgLWMg
Q09ORklHVVJBVElPTlMKLSAgICAgICAgICAgICAgU3BlY2lmeSBidWlsZCBkaXJlY3RvcmllcyB2
aWEgYnVpbGQgY29uZmlndXJhdGlvbnMuCi0gICAgICAgICAgICAgIENPTkZJR1VSQVRJT05TIGlz
IGVpdGhlciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGJ1aWxkCi0gICAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb25zIG9yICdhbGwnLiBFYWNoIGNvbmZpZ3VyYXRpb24gaXMgZXF1aXZhbGVudCB0
bwotICAgICAgICAgICAgICBhZGRpbmcgJ3Njb25zL2J1aWxkLzxjb25maWd1cmF0aW9uPi8lKHBy
b2opcy9zY29ucycgdG8gQlVJTERfRElScy4KLSAgICAgICAgICAgICAgU3BlY2lmeWluZyAtYz1h
bGwgaXMgZXF1aXZhbGVudCB0byBwcm92aWRpbmcgYWxsIGRpcmVjdG9yaWVzCi0gICAgICAgICAg
ICAgIGxpc3RlZCBpbiBLTk9XTiBCVUlMRCBESVJFQ1RPUklFUyBzZWN0aW9uIGJlbG93LgotICAg
ICAgIC1hCi0gICAgICAgICAgICAgIEVxdWl2YWxlbnQgdG8gLWM9YWxsCi0gICAgICAgLWIKLSAg
ICAgICAgICAgICAgRXF1aXZhbGVudCB0byAtYz1hbGwgd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQg
dGhlIHNjcmlwdCB3aWxsIG5vdAotICAgICAgICAgICAgICBmYWlsIGlmIHNvbWUgb2YgdGhlIEtO
T1dOIEJVSUxEIERJUkVDVE9SSUVTIGRvIG5vdCBleGlzdHM7IHRoZQotICAgICAgICAgICAgICBz
Y3JpcHQgd2lsbCBzaW1wbHkgbm90IHJ1biB0aGUgdGVzdHMgdGhlcmUuICdiJyBzdGFuZHMgZm9y
Ci0gICAgICAgICAgICAgICdidWlsdCBkaXJlY3RvcmllcycuCi0KLVJFVFVSTiBWQUxVRQotICAg
ICAgIFJldHVybnMgMCBpZiBhbGwgdGVzdHMgYXJlIHN1Y2Nlc3NmdWw7IG90aGVyd2lzZSByZXR1
cm5zIDEuCi0KLUVYQU1QTEVTCi0gICAgICAgcnVuX3Rlc3RzLnB5Ci0gICAgICAgICAgICAgIFJ1
bnMgYWxsIHRlc3RzIGZvciB0aGUgZGVmYXVsdCBidWlsZCBjb25maWd1cmF0aW9uLgotICAgICAg
IHJ1bl90ZXN0cy5weSAtYQotICAgICAgICAgICAgICBSdW5zIGFsbCB0ZXN0cyB3aXRoIGJpbmFy
aWVzIGluIEtOT1dOIEJVSUxEIERJUkVDVE9SSUVTLgotICAgICAgIHJ1bl90ZXN0cy5weSAtYgot
ICAgICAgICAgICAgICBSdW5zIGFsbCB0ZXN0cyBpbiBLTk9XTiBCVUlMRCBESVJFQ1RPUklFUyB0
aGF0IGhhdmUgYmVlbgotICAgICAgICAgICAgICBidWlsdC4KLSAgICAgICBydW5fdGVzdHMucHkg
Zm9vLwotICAgICAgICAgICAgICBSdW5zIGFsbCB0ZXN0cyBpbiB0aGUgZm9vLyBkaXJlY3Rvcnkg
YW5kIGFsbCBQeXRob24gdGVzdHMgaW4KLSAgICAgICAgICAgICAgdGhlIGRpcmVjdG9yeSB0ZXN0
LiBUaGUgUHl0aG9uIHRlc3RzIGFyZSBpbnN0cnVjdGVkIHRvIGxvb2sKLSAgICAgICAgICAgICAg
Zm9yIGJpbmFyaWVzIGluIGZvby8uCi0gICAgICAgcnVuX3Rlc3RzLnB5IGJhcl90ZXN0LmV4ZSB0
ZXN0L2Jhel90ZXN0LmV4ZSBmb28vIGJhci8KLSAgICAgICAgICAgICAgUnVucyBmb28vYmFyX3Rl
c3QuZXhlLCBiYXIvYmFyX3Rlc3QuZXhlLCBmb28vYmF6X3Rlc3QuZXhlLCBhbmQKLSAgICAgICAg
ICAgICAgYmFyL2Jhel90ZXN0LmV4ZS4KLSAgICAgICBydW5fdGVzdHMucHkgZm9vIGJhciB0ZXN0
L2Zvb190ZXN0LnB5Ci0gICAgICAgICAgICAgIFJ1bnMgdGVzdC9mb29fdGVzdC5weSB0d2ljZSBp
bnN0cnVjdGluZyBpdCB0byBsb29rIGZvciBpdHMKLSAgICAgICAgICAgICAgdGVzdCBiaW5hcmll
cyBpbiB0aGUgZGlyZWN0b3JpZXMgZm9vIGFuZCBiYXIsCi0gICAgICAgICAgICAgIGNvcnJlc3Bv
bmRpbmdseS4KLQotS05PV04gQlVJTEQgRElSRUNUT1JJRVMKLSAgICAgIHJ1bl90ZXN0cy5weSBr
bm93cyBhYm91dCBkaXJlY3RvcmllcyB3aGVyZSB0aGUgU0NvbnMgYnVpbGQgc2NyaXB0Ci0gICAg
ICBkZXBvc2l0cyBpdHMgcHJvZHVjdHMuIFRoZXNlIGFyZSB0aGUgZGlyZWN0b3JpZXMgd2hlcmUg
cnVuX3Rlc3RzLnB5Ci0gICAgICB3aWxsIGJlIGxvb2tpbmcgZm9yIGl0cyBiaW5hcmllcy4gQ3Vy
cmVudGx5LCAlKHByb2opcydzIFNDb25zdHJ1Y3QgZmlsZQotICAgICAgZGVmaW5lcyB0aGVtIGFz
IGZvbGxvd3MgKHRoZSBkZWZhdWx0IGJ1aWxkIGRpcmVjdG9yeSBpcyB0aGUgZmlyc3Qgb25lCi0g
ICAgICBsaXN0ZWQgaW4gZWFjaCBncm91cCk6Ci0gICAgICBPbiBXaW5kb3dzOgotICAgICAgICAg
ICAgICA8JShwcm9qKXMgcm9vdD4vc2NvbnMvYnVpbGQvd2luLWRiZzgvJShwcm9qKXMvc2NvbnMv
Ci0gICAgICAgICAgICAgIDwlKHByb2opcyByb290Pi9zY29ucy9idWlsZC93aW4tb3B0OC8lKHBy
b2opcy9zY29ucy8KLSAgICAgIE9uIE1hYzoKLSAgICAgICAgICAgICAgPCUocHJvailzIHJvb3Q+
L3Njb25zL2J1aWxkL21hYy1kYmcvJShwcm9qKXMvc2NvbnMvCi0gICAgICAgICAgICAgIDwlKHBy
b2opcyByb290Pi9zY29ucy9idWlsZC9tYWMtb3B0LyUocHJvailzL3Njb25zLwotICAgICAgT24g
b3RoZXIgcGxhdGZvcm1zOgotICAgICAgICAgICAgICA8JShwcm9qKXMgcm9vdD4vc2NvbnMvYnVp
bGQvZGJnLyUocHJvailzL3Njb25zLwotICAgICAgICAgICAgICA8JShwcm9qKXMgcm9vdD4vc2Nv
bnMvYnVpbGQvb3B0LyUocHJvailzL3Njb25zLyIiIgotCi1JU19XSU5ET1dTID0gb3MubmFtZSA9
PSAnbnQnCi1JU19NQUMgPSBvcy5uYW1lID09ICdwb3NpeCcgYW5kIG9zLnVuYW1lKClbMF0gPT0g
J0RhcndpbicKLUlTX0NZR1dJTiA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBhbmQgJ0NZR1dJTicgaW4g
b3MudW5hbWUoKVswXQotCi0jIERlZmluaXRpb24gb2YgQ09ORklHUyBtdXN0IG1hdGNoIHRoYXQg
b2YgdGhlIGJ1aWxkIGRpcmVjdG9yeSBuYW1lcyBpbiB0aGUKLSMgU0NvbnN0cnVjdCBzY3JpcHQu
IFRoZSBmaXJzdCBsaXN0IGl0ZW0gaXMgdGhlIGRlZmF1bHQgYnVpbGQgY29uZmlndXJhdGlvbi4K
LWlmIElTX1dJTkRPV1M6Ci0gIENPTkZJR1MgPSAoJ3dpbi1kYmc4JywgJ3dpbi1vcHQ4JykKLWVs
aWYgSVNfTUFDOgotICBDT05GSUdTID0gKCdtYWMtZGJnJywgJ21hYy1vcHQnKQotZWxzZToKLSAg
Q09ORklHUyA9ICgnZGJnJywgJ29wdCcpCi0KLWlmIElTX1dJTkRPV1Mgb3IgSVNfQ1lHV0lOOgot
ICBQWVRIT05fVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocidfKHVuaXQpP3Rlc3RcLnB5JCcsIHJl
LklHTk9SRUNBU0UpCi0gIEJJTkFSWV9URVNUX1JFR0VYID0gcmUuY29tcGlsZShyJ18odW5pdCk/
dGVzdChcLmV4ZSk/JCcsIHJlLklHTk9SRUNBU0UpCi0gIEJJTkFSWV9URVNUX1NFQVJDSF9SRUdF
WCA9IHJlLmNvbXBpbGUocidfKHVuaXQpP3Rlc3RcLmV4ZSQnLCByZS5JR05PUkVDQVNFKQotZWxz
ZToKLSAgUFlUSE9OX1RFU1RfUkVHRVggPSByZS5jb21waWxlKHInXyh1bml0KT90ZXN0XC5weSQn
KQotICBCSU5BUllfVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocidfKHVuaXQpP3Rlc3QkJykKLSAg
QklOQVJZX1RFU1RfU0VBUkNIX1JFR0VYID0gQklOQVJZX1RFU1RfUkVHRVgKLQotCi1kZWYgX0dl
dEd0ZXN0QnVpbGREaXIoaW5qZWN0ZWRfb3MsIHNjcmlwdF9kaXIsIGNvbmZpZyk6Ci0gICIiIkNh
bGN1bGF0ZXMgcGF0aCB0byB0aGUgR29vZ2xlIFRlc3QgU0NvbnMgYnVpbGQgZGlyZWN0b3J5LiIi
IgotCi0gIHJldHVybiBpbmplY3RlZF9vcy5wYXRoLm5vcm1wYXRoKGluamVjdGVkX29zLnBhdGgu
am9pbihzY3JpcHRfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3Njb25zL2J1aWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdndGVzdC9zY29ucycp
KQotCi0KLWRlZiBfR2V0Q29uZmlnRnJvbUJ1aWxkRGlyKGJ1aWxkX2Rpcik6Ci0gICIiIkV4dHJh
Y3RzIHRoZSBjb25maWd1cmF0aW9uIG5hbWUgZnJvbSB0aGUgYnVpbGQgZGlyZWN0b3J5LiIiIgot
Ci0gICMgV2UgZG9uJ3Qgd2FudCB0byBkZXBlbmQgb24gYnVpbGRfZGlyIGNvbnRhaW5pbmcgdGhl
IGNvcnJlY3QgcGF0aAotICAjIHNlcGFyYXRvcnMuCi0gIG0gPSByZS5tYXRjaChyJy4qW1xcL10o
W15cXC9dKylbXFwvXVteXFwvXStbXFwvXXNjb25zW1xcL10/JCcsIGJ1aWxkX2RpcikKLSAgaWYg
bToKLSAgICByZXR1cm4gbS5ncm91cCgxKQotICBlbHNlOgotICAgIHByaW50ID4+c3lzLnN0ZGVy
ciwgKCclcyBpcyBhbiBpbnZhbGlkIGJ1aWxkIGRpcmVjdG9yeSB0aGF0IGRvZXMgbm90ICcKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAnY29ycmVzcG9uZCB0byBhbnkgY29uZmlndXJhdGlvbi4n
ICUgKGJ1aWxkX2RpciwpKQotICAgIHJldHVybiAnJwotCi0KLSMgQWxsIHBhdGhzIGluIHRoaXMg
c2NyaXB0IGFyZSBlaXRoZXIgYWJzb2x1dGUgb3IgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQKLSMg
d29ya2luZyBkaXJlY3RvcnksIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLgotY2xhc3MgVGVz
dFJ1bm5lcihvYmplY3QpOgotICAiIiJQcm92aWRlcyBmYWNpbGl0aWVzIGZvciBydW5uaW5nIFB5
dGhvbiBhbmQgYmluYXJ5IHRlc3RzIGZvciBHb29nbGUgVGVzdC4iIiIKLQotICBkZWYgX19pbml0
X18oc2VsZiwKLSAgICAgICAgICAgICAgIHNjcmlwdF9kaXIsCi0gICAgICAgICAgICAgICBidWls
ZF9kaXJfdmFyX25hbWU9J0dURVNUX0JVSUxEX0RJUicsCi0gICAgICAgICAgICAgICBpbmplY3Rl
ZF9vcz1vcywKLSAgICAgICAgICAgICAgIGluamVjdGVkX3N1YnByb2Nlc3M9c3VicHJvY2VzcywK
LSAgICAgICAgICAgICAgIGluamVjdGVkX2J1aWxkX2Rpcl9maW5kZXI9X0dldEd0ZXN0QnVpbGRE
aXIpOgotICAgICIiIkluaXRpYWxpemVzIGEgVGVzdFJ1bm5lciBpbnN0YW5jZS4KLQotICAgIEFy
Z3M6Ci0gICAgICBzY3JpcHRfZGlyOiAgICAgICAgICAgICAgICBGaWxlIHBhdGggdG8gdGhlIGNh
bGxpbmcgc2NyaXB0LgotICAgICAgYnVpbGRfZGlyX3Zhcl9uYW1lOiAgICAgICAgTmFtZSBvZiB0
aGUgZW52IHZhcmlhYmxlIHVzZWQgdG8gcGFzcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoZSBidWlsZCBkaXJlY3RvcnkgcGF0aCB0byB0aGUgaW52b2tlZAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMuCi0gICAgICBpbmplY3RlZF9vczogICAg
ICAgICAgICAgICBzdGFuZGFyZCBvcyBtb2R1bGUgb3IgYSBtb2NrL3N0dWIgZm9yCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nLgotICAgICAgaW5qZWN0ZWRfc3VicHJv
Y2VzczogICAgICAgc3RhbmRhcmQgc3VicHJvY2VzcyBtb2R1bGUgb3IgYSBtb2NrL3N0dWIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0ZXN0aW5nCi0gICAgICBpbmplY3Rl
ZF9idWlsZF9kaXJfZmluZGVyOiBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgdGhlIHBhdGggdG8K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBkaXJlY3RvcnkuCi0g
ICAgIiIiCi0KLSAgICBzZWxmLm9zID0gaW5qZWN0ZWRfb3MKLSAgICBzZWxmLnN1YnByb2Nlc3Mg
PSBpbmplY3RlZF9zdWJwcm9jZXNzCi0gICAgc2VsZi5idWlsZF9kaXJfZmluZGVyID0gaW5qZWN0
ZWRfYnVpbGRfZGlyX2ZpbmRlcgotICAgIHNlbGYuYnVpbGRfZGlyX3Zhcl9uYW1lID0gYnVpbGRf
ZGlyX3Zhcl9uYW1lCi0gICAgc2VsZi5zY3JpcHRfZGlyID0gc2NyaXB0X2RpcgotCi0gIGRlZiBf
R2V0QnVpbGREaXJGb3JDb25maWcoc2VsZiwgY29uZmlnKToKLSAgICAiIiJSZXR1cm5zIHRoZSBi
dWlsZCBkaXJlY3RvcnkgZm9yIGEgZ2l2ZW4gY29uZmlndXJhdGlvbi4iIiIKLQotICAgIHJldHVy
biBzZWxmLmJ1aWxkX2Rpcl9maW5kZXIoc2VsZi5vcywgc2VsZi5zY3JpcHRfZGlyLCBjb25maWcp
Ci0KLSAgZGVmIF9SdW4oc2VsZiwgYXJncyk6Ci0gICAgIiIiUnVucyB0aGUgZXhlY3V0YWJsZSB3
aXRoIGdpdmVuIGFyZ3MgKGFyZ3NbMF0gaXMgdGhlIGV4ZWN1dGFibGUgbmFtZSkuCi0KLSAgICBB
cmdzOgotICAgICAgYXJnczogQ29tbWFuZCBsaW5lIGFyZ3VtZW50cyBmb3IgdGhlIHByb2Nlc3Mu
Ci0KLSAgICBSZXR1cm5zOgotICAgICAgUHJvY2VzcydzIGV4aXQgY29kZSBpZiBpdCBleGl0cyBu
b3JtYWxseSwgb3IgLXNpZ25hbCBpZiB0aGUgcHJvY2VzcyBpcwotICAgICAga2lsbGVkIGJ5IGEg
c2lnbmFsLgotICAgICIiIgotCi0gICAgaWYgc2VsZi5zdWJwcm9jZXNzOgotICAgICAgcmV0dXJu
IHNlbGYuc3VicHJvY2Vzcy5Qb3BlbihhcmdzKS53YWl0KCkKLSAgICBlbHNlOgotICAgICAgcmV0
dXJuIHNlbGYub3Muc3Bhd252KHNlbGYub3MuUF9XQUlULCBhcmdzWzBdLCBhcmdzKQotCi0gIGRl
ZiBfUnVuQmluYXJ5VGVzdChzZWxmLCB0ZXN0KToKLSAgICAiIiJSdW5zIHRoZSBiaW5hcnkgdGVz
dCBnaXZlbiBpdHMgcGF0aC4KLQotICAgIEFyZ3M6Ci0gICAgICB0ZXN0OiBQYXRoIHRvIHRoZSB0
ZXN0IGJpbmFyeS4KLQotICAgIFJldHVybnM6Ci0gICAgICBQcm9jZXNzJ3MgZXhpdCBjb2RlIGlm
IGl0IGV4aXRzIG5vcm1hbGx5LCBvciAtc2lnbmFsIGlmIHRoZSBwcm9jZXNzIGlzCi0gICAgICBr
aWxsZWQgYnkgYSBzaWduYWwuCi0gICAgIiIiCi0KLSAgICByZXR1cm4gc2VsZi5fUnVuKFt0ZXN0
XSkKLQotICBkZWYgX1J1blB5dGhvblRlc3Qoc2VsZiwgdGVzdCwgYnVpbGRfZGlyKToKLSAgICAi
IiJSdW5zIHRoZSBQeXRob24gdGVzdCBzY3JpcHQgd2l0aCB0aGUgc3BlY2lmaWVkIGJ1aWxkIGRp
cmVjdG9yeS4KLQotICAgIEFyZ3M6Ci0gICAgICB0ZXN0OiBQYXRoIHRvIHRoZSB0ZXN0J3MgUHl0
aG9uIHNjcmlwdC4KLSAgICAgIGJ1aWxkX2RpcjogUGF0aCB0byB0aGUgZGlyZWN0b3J5IHdoZXJl
IHRoZSB0ZXN0IGJpbmFyeSBpcyB0byBiZSBmb3VuZC4KLQotICAgIFJldHVybnM6Ci0gICAgICBQ
cm9jZXNzJ3MgZXhpdCBjb2RlIGlmIGl0IGV4aXRzIG5vcm1hbGx5LCBvciAtc2lnbmFsIGlmIHRo
ZSBwcm9jZXNzIGlzCi0gICAgICBraWxsZWQgYnkgYSBzaWduYWwuCi0gICAgIiIiCi0KLSAgICBv
bGRfYnVpbGRfZGlyID0gc2VsZi5vcy5lbnZpcm9uLmdldChzZWxmLmJ1aWxkX2Rpcl92YXJfbmFt
ZSkKLQotICAgIHRyeToKLSAgICAgIHNlbGYub3MuZW52aXJvbltzZWxmLmJ1aWxkX2Rpcl92YXJf
bmFtZV0gPSBidWlsZF9kaXIKLQotICAgICAgIyBJZiB0aGlzIHNjcmlwdCBpcyBydW4gb24gYSBX
aW5kb3dzIG1hY2hpbmUgdGhhdCBoYXMgbm8gYXNzb2NpYXRpb24KLSAgICAgICMgYmV0d2VlbiB0
aGUgLnB5IGV4dGVuc2lvbiBhbmQgYSBweXRob24gaW50ZXJwcmV0ZXIsIHNpbXBseSBwYXNzaW5n
Ci0gICAgICAjIHRoZSBzY3JpcHQgbmFtZSBpbnRvIHN1YnByb2Nlc3MuUG9wZW4vb3Muc3Bhd24g
d2lsbCBub3Qgd29yay4KLSAgICAgIHByaW50ICdSdW5uaW5nICVzIC4gLiAuJyAlICh0ZXN0LCkK
LSAgICAgIHJldHVybiBzZWxmLl9SdW4oW3N5cy5leGVjdXRhYmxlLCB0ZXN0XSkKLQotICAgIGZp
bmFsbHk6Ci0gICAgICBpZiBvbGRfYnVpbGRfZGlyIGlzIE5vbmU6Ci0gICAgICAgIGRlbCBzZWxm
Lm9zLmVudmlyb25bc2VsZi5idWlsZF9kaXJfdmFyX25hbWVdCi0gICAgICBlbHNlOgotICAgICAg
ICBzZWxmLm9zLmVudmlyb25bc2VsZi5idWlsZF9kaXJfdmFyX25hbWVdID0gb2xkX2J1aWxkX2Rp
cgotCi0gIGRlZiBfRmluZEZpbGVzQnlSZWdleChzZWxmLCBkaXJlY3RvcnksIHJlZ2V4KToKLSAg
ICAiIiJSZXR1cm5zIGZpbGVzIGluIGEgZGlyZWN0b3J5IHdob3NlIG5hbWVzIG1hdGNoIGEgcmVn
dWxhciBleHByZXNzaW9uLgotCi0gICAgQXJnczoKLSAgICAgIGRpcmVjdG9yeTogUGF0aCB0byB0
aGUgZGlyZWN0b3J5IHRvIHNlYXJjaCBmb3IgZmlsZXMuCi0gICAgICByZWdleDogUmVndWxhciBl
eHByZXNzaW9uIHRvIGZpbHRlciBmaWxlIG5hbWVzLgotCi0gICAgUmV0dXJuczoKLSAgICAgIFRo
ZSBsaXN0IG9mIHRoZSBwYXRocyB0byB0aGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS4KLSAgICAi
IiIKLQotICAgIHJldHVybiBbc2VsZi5vcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCBmaWxlX25hbWUp
Ci0gICAgICAgICAgICBmb3IgZmlsZV9uYW1lIGluIHNlbGYub3MubGlzdGRpcihkaXJlY3Rvcnkp
Ci0gICAgICAgICAgICBpZiByZS5zZWFyY2gocmVnZXgsIGZpbGVfbmFtZSldCi0KLSAgIyBUT0RP
KHZsYWRsQGdvb2dsZS5jb20pOiBJbXBsZW1lbnQgcGFyc2luZyBvZiBzY29ucy9TQ29uc2NyaXB0
IHRvIHJ1biBhbGwKLSAgIyB0ZXN0cyBkZWZpbmVkIHRoZXJlIHdoZW4gbm8gdGVzdHMgYXJlIHNw
ZWNpZmllZC4KLSAgIyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBVcGRhdGUgdGhlIGRvY3N0cmlu
ZyBhZnRlciB0aGUgY29kZSBpcyBjaGFuZ2VkIHRvCi0gICMgdHJ5IHRvIHRlc3QgYWxsIGJ1aWxk
cyBkZWZpbmVkIGluIHNjb25zL1NDb25zY3JpcHQuCi0gIGRlZiBHZXRUZXN0c1RvUnVuKHNlbGYs
Ci0gICAgICAgICAgICAgICAgICAgIGFyZ3MsCi0gICAgICAgICAgICAgICAgICAgIG5hbWVkX2Nv
bmZpZ3VyYXRpb25zLAotICAgICAgICAgICAgICAgICAgICBidWlsdF9jb25maWd1cmF0aW9ucywK
LSAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPUNPTkZJR1MsCi0g
ICAgICAgICAgICAgICAgICAgIHB5dGhvbl90ZXN0c190b19za2lwPU5vbmUpOgotICAgICIiIkRl
dGVybWluZXMgd2hhdCB0ZXN0cyBzaG91bGQgYmUgcnVuLgotCi0gICAgQXJnczoKLSAgICAgIGFy
Z3M6IFRoZSBsaXN0IG9mIG5vbi1vcHRpb24gYXJndW1lbnRzIGZyb20gdGhlIGNvbW1hbmQgbGlu
ZS4KLSAgICAgIG5hbWVkX2NvbmZpZ3VyYXRpb25zOiBUaGUgbGlzdCBvZiBjb25maWd1cmF0aW9u
cyBzcGVjaWZpZWQgdmlhIC1jIG9yIC1hLgotICAgICAgYnVpbHRfY29uZmlndXJhdGlvbnM6IFRy
dWUgaWYgLWIgaGFzIGJlZW4gc3BlY2lmaWVkLgotICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRp
b25zOiBhIGxpc3Qgb2YgY29uZmlndXJhdGlvbnMgYXZhaWxhYmxlIG9uIHRoZQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgcGxhdGZvcm0sIGluamVjdGFibGUgZm9yIHRlc3Rp
bmcuCi0gICAgICBweXRob25fdGVzdHNfdG9fc2tpcDogYSBjb2xsZWN0aW9uIG9mIChjb25maWd1
cmF0aW9uLCBweXRob24gdGVzdCBuYW1lKXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGF0IG5lZWQgdG8gYmUgc2tpcHBlZC4KLQotICAgIFJldHVybnM6Ci0gICAgICBBIHR1cGxlIHdp
dGggMiBlbGVtZW50czogdGhlIGxpc3Qgb2YgUHl0aG9uIHRlc3RzIHRvIHJ1biBhbmQgdGhlIGxp
c3Qgb2YKLSAgICAgIGJpbmFyeSB0ZXN0cyB0byBydW4uCi0gICAgIiIiCi0KLSAgICBpZiBuYW1l
ZF9jb25maWd1cmF0aW9ucyA9PSAnYWxsJzoKLSAgICAgIG5hbWVkX2NvbmZpZ3VyYXRpb25zID0g
JywnLmpvaW4oYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zKQotCi0gICAgbm9ybWFsaXplZF9hcmdz
ID0gW3NlbGYub3MucGF0aC5ub3JtcGF0aChhcmcpIGZvciBhcmcgaW4gYXJnc10KLQotICAgICMg
QSBmaW5hbCBsaXN0IG9mIGJ1aWxkIGRpcmVjdG9yaWVzIHdoaWNoIHdpbGwgYmUgc2VhcmNoZWQg
Zm9yIHRoZSB0ZXN0Ci0gICAgIyBiaW5hcmllcy4gRmlyc3QsIGFkZCBkaXJlY3RvcmllcyBzcGVj
aWZpZWQgZGlyZWN0bHkgb24gdGhlIGNvbW1hbmQKLSAgICAjIGxpbmUuCi0gICAgYnVpbGRfZGly
cyA9IGZpbHRlcihzZWxmLm9zLnBhdGguaXNkaXIsIG5vcm1hbGl6ZWRfYXJncykKLQotICAgICMg
QWRkcyBidWlsZCBkaXJlY3RvcmllcyBzcGVjaWZpZWQgdmlhIHRoZWlyIGJ1aWxkIGNvbmZpZ3Vy
YXRpb25zIHVzaW5nCi0gICAgIyB0aGUgLWMgb3IgLWEgb3B0aW9ucy4KLSAgICBpZiBuYW1lZF9j
b25maWd1cmF0aW9uczoKLSAgICAgIGJ1aWxkX2RpcnMgKz0gW3NlbGYuX0dldEJ1aWxkRGlyRm9y
Q29uZmlnKGNvbmZpZykKLSAgICAgICAgICAgICAgICAgICAgIGZvciBjb25maWcgaW4gbmFtZWRf
Y29uZmlndXJhdGlvbnMuc3BsaXQoJywnKV0KLQotICAgICMgQWRkcyBLTk9XTiBCVUlMRCBESVJF
Q1RPUklFUyBpZiAtYiBpcyBzcGVjaWZpZWQuCi0gICAgaWYgYnVpbHRfY29uZmlndXJhdGlvbnM6
Ci0gICAgICBidWlsZF9kaXJzICs9IFtzZWxmLl9HZXRCdWlsZERpckZvckNvbmZpZyhjb25maWcp
Ci0gICAgICAgICAgICAgICAgICAgICBmb3IgY29uZmlnIGluIGF2YWlsYWJsZV9jb25maWd1cmF0
aW9ucwotICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5vcy5wYXRoLmlzZGlyKHNlbGYuX0dl
dEJ1aWxkRGlyRm9yQ29uZmlnKGNvbmZpZykpXQotCi0gICAgIyBJZiBubyBkaXJlY3RvcmllcyB3
ZXJlIHNwZWNpZmllZCBlaXRoZXIgdmlhIC1hLCAtYiwgLWMsIG9yIGRpcmVjdGx5LCB1c2UKLSAg
ICAjIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uCi0gICAgZWxpZiBub3QgYnVpbGRfZGlyczoK
LSAgICAgIGJ1aWxkX2RpcnMgPSBbc2VsZi5fR2V0QnVpbGREaXJGb3JDb25maWcoYXZhaWxhYmxl
X2NvbmZpZ3VyYXRpb25zWzBdKV0KLQotICAgICMgTWFrZXMgc3VyZSB0aGVyZSBhcmUgbm8gZHVw
bGljYXRpb25zLgotICAgIGJ1aWxkX2RpcnMgPSBzZXRzLlNldChidWlsZF9kaXJzKQotCi0gICAg
ZXJyb3JzX2ZvdW5kID0gRmFsc2UKLSAgICBsaXN0ZWRfcHl0aG9uX3Rlc3RzID0gW10gICMgQWxs
IFB5dGhvbiB0ZXN0cyBsaXN0ZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KLSAgICBsaXN0ZWRfYmlu
YXJ5X3Rlc3RzID0gW10gICMgQWxsIGJpbmFyeSB0ZXN0cyBsaXN0ZWQgb24gdGhlIGNvbW1hbmQg
bGluZS4KLQotICAgIHRlc3RfZGlyID0gc2VsZi5vcy5wYXRoLm5vcm1wYXRoKHNlbGYub3MucGF0
aC5qb2luKHNlbGYuc2NyaXB0X2RpciwgJ3Rlc3QnKSkKLQotICAgICMgU2lmdHMgdGhyb3VnaCBu
b24tZGlyZWN0b3J5IGFyZ3VtZW50cyBmaXNoaW5nIGZvciBhbnkgUHl0aG9uIG9yIGJpbmFyeQot
ICAgICMgdGVzdHMgYW5kIGRldGVjdGluZyBlcnJvcnMuCi0gICAgZm9yIGFyZ3VtZW50IGluIHNl
dHMuU2V0KG5vcm1hbGl6ZWRfYXJncykgLSBidWlsZF9kaXJzOgotICAgICAgaWYgcmUuc2VhcmNo
KFBZVEhPTl9URVNUX1JFR0VYLCBhcmd1bWVudCk6Ci0gICAgICAgIHB5dGhvbl9wYXRoID0gc2Vs
Zi5vcy5wYXRoLmpvaW4odGVzdF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5vcy5wYXRoLmJhc2VuYW1lKGFyZ3VtZW50KSkKLSAgICAgICAgaWYgc2Vs
Zi5vcy5wYXRoLmlzZmlsZShweXRob25fcGF0aCk6Ci0gICAgICAgICAgbGlzdGVkX3B5dGhvbl90
ZXN0cy5hcHBlbmQocHl0aG9uX3BhdGgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgc3lzLnN0
ZGVyci53cml0ZSgnVW5hYmxlIHRvIGZpbmQgUHl0aG9uIHRlc3QgJXMnICUgYXJndW1lbnQpCi0g
ICAgICAgICAgZXJyb3JzX2ZvdW5kID0gVHJ1ZQotICAgICAgZWxpZiByZS5zZWFyY2goQklOQVJZ
X1RFU1RfUkVHRVgsIGFyZ3VtZW50KToKLSAgICAgICAgIyBUaGlzIHNjcmlwdCBhbHNvIGFjY2Vw
dHMgYmluYXJ5IHRlc3QgbmFtZXMgcHJlZml4ZWQgd2l0aCB0ZXN0LyBmb3IKLSAgICAgICAgIyB0
aGUgY29udmVuaWVuY2Ugb2YgdHlwaW5nIHRoZW0gKGNhbiB1c2UgcGF0aCBjb21wbGV0aW9ucyBp
biB0aGUKLSAgICAgICAgIyBzaGVsbCkuICBTdHJpcHMgdGVzdC8gcHJlZml4IGZyb20gdGhlIGJp
bmFyeSB0ZXN0IG5hbWVzLgotICAgICAgICBsaXN0ZWRfYmluYXJ5X3Rlc3RzLmFwcGVuZChzZWxm
Lm9zLnBhdGguYmFzZW5hbWUoYXJndW1lbnQpKQotICAgICAgZWxzZToKLSAgICAgICAgc3lzLnN0
ZGVyci53cml0ZSgnJXMgaXMgbmVpdGhlciB0ZXN0IG5vciBidWlsZCBkaXJlY3RvcnknICUgYXJn
dW1lbnQpCi0gICAgICAgIGVycm9yc19mb3VuZCA9IFRydWUKLQotICAgIGlmIGVycm9yc19mb3Vu
ZDoKLSAgICAgIHJldHVybiBOb25lCi0KLSAgICB1c2VyX2hhc19saXN0ZWRfdGVzdHMgPSBsaXN0
ZWRfcHl0aG9uX3Rlc3RzIG9yIGxpc3RlZF9iaW5hcnlfdGVzdHMKLQotICAgIGlmIHVzZXJfaGFz
X2xpc3RlZF90ZXN0czoKLSAgICAgIHNlbGVjdGVkX3B5dGhvbl90ZXN0cyA9IGxpc3RlZF9weXRo
b25fdGVzdHMKLSAgICBlbHNlOgotICAgICAgc2VsZWN0ZWRfcHl0aG9uX3Rlc3RzID0gc2VsZi5f
RmluZEZpbGVzQnlSZWdleCh0ZXN0X2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFlUSE9OX1RFU1RfUkVHRVgpCi0KLSAgICAjIFRPRE8o
dmxhZGxAZ29vZ2xlLmNvbSk6IHNraXAgdW5idWlsdCBQeXRob24gdGVzdHMgd2hlbiAtYiBpcyBz
cGVjaWZpZWQuCi0gICAgcHl0aG9uX3Rlc3RfcGFpcnMgPSBbXQotICAgIGZvciBkaXJlY3Rvcnkg
aW4gYnVpbGRfZGlyczoKLSAgICAgIGZvciB0ZXN0IGluIHNlbGVjdGVkX3B5dGhvbl90ZXN0czoK
LSAgICAgICAgY29uZmlnID0gX0dldENvbmZpZ0Zyb21CdWlsZERpcihkaXJlY3RvcnkpCi0gICAg
ICAgIGZpbGVfbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUodGVzdCkKLSAgICAgICAgaWYgcHl0aG9u
X3Rlc3RzX3RvX3NraXAgYW5kIChjb25maWcsIGZpbGVfbmFtZSkgaW4gcHl0aG9uX3Rlc3RzX3Rv
X3NraXA6Ci0gICAgICAgICAgcHJpbnQgKCdOT1RFOiAlcyBpcyBza2lwcGVkIGZvciBjb25maWd1
cmF0aW9uICVzLCBhcyBpdCBkb2VzIG5vdCAnCi0gICAgICAgICAgICAgICAgICd3b3JrIHRoZXJl
LicgJSAoZmlsZV9uYW1lLCBjb25maWcpKQotICAgICAgICBlbHNlOgotICAgICAgICAgIHB5dGhv
bl90ZXN0X3BhaXJzLmFwcGVuZCgoZGlyZWN0b3J5LCB0ZXN0KSkKLQotICAgIGJpbmFyeV90ZXN0
X3BhaXJzID0gW10KLSAgICBmb3IgZGlyZWN0b3J5IGluIGJ1aWxkX2RpcnM6Ci0gICAgICBpZiB1
c2VyX2hhc19saXN0ZWRfdGVzdHM6Ci0gICAgICAgIGJpbmFyeV90ZXN0X3BhaXJzLmV4dGVuZCgK
LSAgICAgICAgICAgIFsoZGlyZWN0b3J5LCBzZWxmLm9zLnBhdGguam9pbihkaXJlY3RvcnksIHRl
c3QpKQotICAgICAgICAgICAgIGZvciB0ZXN0IGluIGxpc3RlZF9iaW5hcnlfdGVzdHNdKQotICAg
ICAgZWxzZToKLSAgICAgICAgdGVzdHMgPSBzZWxmLl9GaW5kRmlsZXNCeVJlZ2V4KGRpcmVjdG9y
eSwgQklOQVJZX1RFU1RfU0VBUkNIX1JFR0VYKQotICAgICAgICBiaW5hcnlfdGVzdF9wYWlycy5l
eHRlbmQoWyhkaXJlY3RvcnksIHRlc3QpIGZvciB0ZXN0IGluIHRlc3RzXSkKLQotICAgIHJldHVy
biAocHl0aG9uX3Rlc3RfcGFpcnMsIGJpbmFyeV90ZXN0X3BhaXJzKQotCi0gIGRlZiBSdW5UZXN0
cyhzZWxmLCBweXRob25fdGVzdHMsIGJpbmFyeV90ZXN0cyk6Ci0gICAgIiIiUnVucyBQeXRob24g
YW5kIGJpbmFyeSB0ZXN0cyBhbmQgcmVwb3J0cyByZXN1bHRzIHRvIHRoZSBzdGFuZGFyZCBvdXRw
dXQuCi0KLSAgICBBcmdzOgotICAgICAgcHl0aG9uX3Rlc3RzOiBMaXN0IG9mIFB5dGhvbiB0ZXN0
cyB0byBydW4gaW4gdGhlIGZvcm0gb2YgdHVwbGVzCi0gICAgICAgICAgICAgICAgICAgIChidWls
ZCBkaXJlY3RvcnksIFB5dGhvbiB0ZXN0IHNjcmlwdCkuCi0gICAgICBiaW5hcnlfdGVzdHM6IExp
c3Qgb2YgYmluYXJ5IHRlc3RzIHRvIHJ1biBpbiB0aGUgZm9ybSBvZiB0dXBsZXMKLSAgICAgICAg
ICAgICAgICAgICAgKGJ1aWxkIGRpcmVjdG9yeSwgYmluYXJ5IGZpbGUpLgotCi0gICAgUmV0dXJu
czoKLSAgICAgIFRoZSBleGl0IGNvZGUgdGhlIHByb2dyYW0gc2hvdWxkIHBhc3MgaW50byBzeXMu
ZXhpdCgpLgotICAgICIiIgotCi0gICAgaWYgcHl0aG9uX3Rlc3RzIG9yIGJpbmFyeV90ZXN0czoK
LSAgICAgIHJlc3VsdHMgPSBbXQotICAgICAgZm9yIGRpcmVjdG9yeSwgdGVzdCBpbiBweXRob25f
dGVzdHM6Ci0gICAgICAgIHJlc3VsdHMuYXBwZW5kKChkaXJlY3RvcnksCi0gICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fUnVuUHl0aG9u
VGVzdCh0ZXN0LCBkaXJlY3RvcnkpID09IDApKQotICAgICAgZm9yIGRpcmVjdG9yeSwgdGVzdCBp
biBiaW5hcnlfdGVzdHM6Ci0gICAgICAgIHJlc3VsdHMuYXBwZW5kKChkaXJlY3RvcnksCi0gICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLm9zLnBhdGguYmFzZW5hbWUodGVzdCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9SdW5CaW5hcnlUZXN0KHRlc3QpID09IDApKQotCi0gICAg
ICBmYWlsZWQgPSBbKGRpcmVjdG9yeSwgdGVzdCkKLSAgICAgICAgICAgICAgICBmb3IgKGRpcmVj
dG9yeSwgdGVzdCwgc3VjY2VzcykgaW4gcmVzdWx0cwotICAgICAgICAgICAgICAgIGlmIG5vdCBz
dWNjZXNzXQotICAgICAgcHJpbnQKLSAgICAgIHByaW50ICclZCB0ZXN0cyBydW4uJyAlIGxlbihy
ZXN1bHRzKQotICAgICAgaWYgZmFpbGVkOgotICAgICAgICBwcmludCAnVGhlIGZvbGxvd2luZyAl
ZCB0ZXN0cyBmYWlsZWQ6JyAlIGxlbihmYWlsZWQpCi0gICAgICAgIGZvciAoZGlyZWN0b3J5LCB0
ZXN0KSBpbiBmYWlsZWQ6Ci0gICAgICAgICAgcHJpbnQgJyVzIGluICVzJyAlICh0ZXN0LCBkaXJl
Y3RvcnkpCi0gICAgICAgIHJldHVybiAxCi0gICAgICBlbHNlOgotICAgICAgICBwcmludCAnQWxs
IHRlc3RzIHBhc3NlZCEnCi0gICAgZWxzZTogICMgTm8gdGVzdHMgZGVmaW5lZAotICAgICAgcHJp
bnQgJ05vdGhpbmcgdG8gdGVzdCAtIG5vIHRlc3RzIHNwZWNpZmllZCEnCi0KLSAgICByZXR1cm4g
MAotCi0KLWRlZiBQYXJzZUFyZ3MocHJvamVjdF9uYW1lLCBhcmd2PU5vbmUsIGhlbHBfY2FsbGJh
Y2s9Tm9uZSk6Ci0gICIiIlBhcnNlcyB0aGUgb3B0aW9ucyBydW5fdGVzdHMucHkgdXNlcy4iIiIK
LQotICAjIFN1cHByZXNzZXMgbGludCB3YXJuaW5nIG9uIHVudXNlZCBhcmd1bWVudHMuICBUaGVz
ZSBhcmd1bWVudHMgYXJlCi0gICMgcmVxdWlyZWQgYnkgb3B0cGFyc2UsIGV2ZW4gdGhvdWdoIHRo
ZXkgYXJlIHVudXNlZC4KLSAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPVcwNjEzCi0gIGRlZiBQcmlu
dEhlbHAob3B0aW9uLCBvcHQsIHZhbHVlLCBwYXJzZXIpOgotICAgIHByaW50IEhFTFBfTVNHICUg
eydwcm9qJzogcHJvamVjdF9uYW1lfQotICAgIHN5cy5leGl0KDEpCi0KLSAgcGFyc2VyID0gb3B0
cGFyc2UuT3B0aW9uUGFyc2VyKCkKLSAgcGFyc2VyLmFkZF9vcHRpb24oJy1jJywKLSAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uPSdzdG9yZScsCi0gICAgICAgICAgICAgICAgICAgIGRlc3Q9J2Nv
bmZpZ3VyYXRpb25zJywKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lKQotICBwYXJz
ZXIuYWRkX29wdGlvbignLWEnLAotICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX2Nv
bnN0JywKLSAgICAgICAgICAgICAgICAgICAgZGVzdD0nY29uZmlndXJhdGlvbnMnLAotICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0PSdh
bGwnKQotICBwYXJzZXIuYWRkX29wdGlvbignLWInLAotICAgICAgICAgICAgICAgICAgICBhY3Rp
b249J3N0b3JlX2NvbnN0JywKLSAgICAgICAgICAgICAgICAgICAgZGVzdD0nYnVpbHRfY29uZmln
dXJhdGlvbnMnLAotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAotICAgICAgICAg
ICAgICAgICAgICBjb25zdD1UcnVlKQotICAjIFJlcGxhY2VzIHRoZSBidWlsdC1pbiBoZWxwIHdp
dGggb3Vycy4KLSAgcGFyc2VyLnJlbW92ZV9vcHRpb24oJy1oJykKLSAgcGFyc2VyLmFkZF9vcHRp
b24oJy1oJywgJy0taGVscCcsCi0gICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nY2FsbGJhY2sn
LAotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz1oZWxwX2NhbGxiYWNrIG9yIFByaW50SGVs
cCkKLSAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKGFyZ3YpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0c191dGlsX3Rlc3QucHkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0c191dGlsX3Rlc3QucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDljNTU3MjZmZDUwYjJhMGMyNTA2ODE0MWQ3ZTY2OTQzZjBiNmRlNzMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ydW5fdGVzdHNfdXRpbF90ZXN0LnB5CisrKyAvZGV2L251bGwK
QEAgLTEsNjc2ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQg
MjAwOSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotIiIiVGVzdHMgZm9yIHJ1bl90ZXN0c191dGlsLnB5IHRlc3QgcnVubmVyIHNjcmlwdC4iIiIK
LQotX19hdXRob3JfXyA9ICd2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KScKLQotaW1wb3J0
IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzZXRzCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0IHJ1
bl90ZXN0c191dGlsCi0KLQotR1RFU1RfREJHX0RJUiA9ICdzY29ucy9idWlsZC9kYmcvZ3Rlc3Qv
c2NvbnMnCi1HVEVTVF9PUFRfRElSID0gJ3Njb25zL2J1aWxkL29wdC9ndGVzdC9zY29ucycKLUdU
RVNUX09USEVSX0RJUiA9ICdzY29ucy9idWlsZC9vdGhlci9ndGVzdC9zY29ucycKLQotCi1kZWYg
QWRkRXhlRXh0ZW5zaW9uKHBhdGgpOgotICAiIiJBcHBlbmRzIC5leGUgdG8gdGhlIHBhdGggb24g
V2luZG93cyBvciBDeWd3aW4uIiIiCi0KLSAgaWYgcnVuX3Rlc3RzX3V0aWwuSVNfV0lORE9XUyBv
ciBydW5fdGVzdHNfdXRpbC5JU19DWUdXSU46Ci0gICAgcmV0dXJuIHBhdGggKyAnLmV4ZScKLSAg
ZWxzZToKLSAgICByZXR1cm4gcGF0aAotCi0KLWNsYXNzIEZha2VQYXRoKG9iamVjdCk6Ci0gICIi
IkEgZmFrZSBvcy5wYXRoIG1vZHVsZSBmb3IgdGVzdGluZy4iIiIKLQotICBkZWYgX19pbml0X18o
c2VsZiwgY3VycmVudF9kaXI9b3MuZ2V0Y3dkKCksIGtub3duX3BhdGhzPU5vbmUpOgotICAgIHNl
bGYuY3VycmVudF9kaXIgPSBjdXJyZW50X2RpcgotICAgIHNlbGYudHJlZSA9IHt9Ci0gICAgc2Vs
Zi5wYXRoX3NlcGFyYXRvciA9IG9zLnNlcAotCi0gICAgIyBrbm93bl9wYXRocyBjb250YWlucyBl
aXRoZXIgYWJzb2x1dGUgb3IgcmVsYXRpdmUgcGF0aHMuIFJlbGF0aXZlIHBhdGhzCi0gICAgIyBh
cmUgYWJzb2x1dGl6ZWQgd2l0aCBzZWxmLmN1cnJlbnRfZGlyLgotICAgIGlmIGtub3duX3BhdGhz
OgotICAgICAgc2VsZi5fQWRkUGF0aHMoa25vd25fcGF0aHMpCi0KLSAgZGVmIF9BZGRQYXRoKHNl
bGYsIHBhdGgpOgotICAgIGVuZHNfd2l0aF9zbGFzaCA9IHBhdGguZW5kc3dpdGgoJy8nKQotICAg
IHBhdGggPSBzZWxmLmFic3BhdGgocGF0aCkKLSAgICBpZiBlbmRzX3dpdGhfc2xhc2g6Ci0gICAg
ICBwYXRoICs9IHNlbGYucGF0aF9zZXBhcmF0b3IKLSAgICBuYW1lX2xpc3QgPSBwYXRoLnNwbGl0
KHNlbGYucGF0aF9zZXBhcmF0b3IpCi0gICAgdHJlZSA9IHNlbGYudHJlZQotICAgIGZvciBuYW1l
IGluIG5hbWVfbGlzdFs6LTFdOgotICAgICAgaWYgbm90IG5hbWU6Ci0gICAgICAgIGNvbnRpbnVl
Ci0gICAgICBpZiBuYW1lIGluIHRyZWU6Ci0gICAgICAgIHRyZWUgPSB0cmVlW25hbWVdCi0gICAg
ICBlbHNlOgotICAgICAgICB0cmVlW25hbWVdID0ge30KLSAgICAgICAgdHJlZSA9IHRyZWVbbmFt
ZV0KLQotICAgIG5hbWUgPSBuYW1lX2xpc3RbLTFdCi0gICAgaWYgbmFtZToKLSAgICAgIGlmIG5h
bWUgaW4gdHJlZToKLSAgICAgICAgYXNzZXJ0IHRyZWVbbmFtZV0gPT0gMQotICAgICAgZWxzZToK
LSAgICAgICAgdHJlZVtuYW1lXSA9IDEKLQotICBkZWYgX0FkZFBhdGhzKHNlbGYsIHBhdGhzKToK
LSAgICBmb3IgcGF0aCBpbiBwYXRoczoKLSAgICAgIHNlbGYuX0FkZFBhdGgocGF0aCkKLQotICBk
ZWYgUGF0aEVsZW1lbnQoc2VsZiwgcGF0aCk6Ci0gICAgIiIiUmV0dXJucyBhbiBpbnRlcm5hbCBy
ZXByZXNlbnRhdGlvbiBvZiBkaXJlY3RvcnkgdHJlZSBlbnRyeSBmb3IgcGF0aC4iIiIKLSAgICB0
cmVlID0gc2VsZi50cmVlCi0gICAgbmFtZV9saXN0ID0gc2VsZi5hYnNwYXRoKHBhdGgpLnNwbGl0
KHNlbGYucGF0aF9zZXBhcmF0b3IpCi0gICAgZm9yIG5hbWUgaW4gbmFtZV9saXN0OgotICAgICAg
aWYgbm90IG5hbWU6Ci0gICAgICAgIGNvbnRpbnVlCi0gICAgICB0cmVlID0gdHJlZS5nZXQobmFt
ZSwgTm9uZSkKLSAgICAgIGlmIHRyZWUgaXMgTm9uZToKLSAgICAgICAgYnJlYWsKLQotICAgIHJl
dHVybiB0cmVlCi0KLSAgIyBTaWxlbmNlcyBweWxpbnQgd2FybmluZyBhYm91dCB1c2luZyBzdGFu
ZGFyZCBuYW1lcy4KLSAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2NDA5Ci0gIGRlZiBub3JtcGF0
aChzZWxmLCBwYXRoKToKLSAgICByZXR1cm4gb3MucGF0aC5ub3JtcGF0aChwYXRoKQotCi0gIGRl
ZiBhYnNwYXRoKHNlbGYsIHBhdGgpOgotICAgIHJldHVybiBzZWxmLm5vcm1wYXRoKG9zLnBhdGgu
am9pbihzZWxmLmN1cnJlbnRfZGlyLCBwYXRoKSkKLQotICBkZWYgaXNmaWxlKHNlbGYsIHBhdGgp
OgotICAgIHJldHVybiBzZWxmLlBhdGhFbGVtZW50KHNlbGYuYWJzcGF0aChwYXRoKSkgPT0gMQot
Ci0gIGRlZiBpc2RpcihzZWxmLCBwYXRoKToKLSAgICByZXR1cm4gdHlwZShzZWxmLlBhdGhFbGVt
ZW50KHNlbGYuYWJzcGF0aChwYXRoKSkpID09IHR5cGUoZGljdCgpKQotCi0gIGRlZiBiYXNlbmFt
ZShzZWxmLCBwYXRoKToKLSAgICByZXR1cm4gb3MucGF0aC5iYXNlbmFtZShwYXRoKQotCi0gIGRl
ZiBkaXJuYW1lKHNlbGYsIHBhdGgpOgotICAgIHJldHVybiBvcy5wYXRoLmRpcm5hbWUocGF0aCkK
LQotICBkZWYgam9pbihzZWxmLCAqa2FyZ3MpOgotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKmth
cmdzKQotCi0KLWNsYXNzIEZha2VPcyhvYmplY3QpOgotICAiIiJBIGZha2Ugb3MgbW9kdWxlIGZv
ciB0ZXN0aW5nLiIiIgotICBQX1dBSVQgPSBvcy5QX1dBSVQKLQotICBkZWYgX19pbml0X18oc2Vs
ZiwgZmFrZV9wYXRoX21vZHVsZSk6Ci0gICAgc2VsZi5wYXRoID0gZmFrZV9wYXRoX21vZHVsZQot
Ci0gICAgIyBTb21lIG1ldGhvZHMvYXR0cmlidXRlcyBhcmUgZGVsZWdhdGVkIHRvIHRoZSByZWFs
IG9zIG1vZHVsZS4KLSAgICBzZWxmLmVudmlyb24gPSBvcy5lbnZpcm9uCi0KLSAgIyBweWxpbnQ6
IGRpc2FibGUtbXNnPUM2NDA5Ci0gIGRlZiBsaXN0ZGlyKHNlbGYsIHBhdGgpOgotICAgIGFzc2Vy
dCBzZWxmLnBhdGguaXNkaXIocGF0aCkKLSAgICByZXR1cm4gc2VsZi5wYXRoLlBhdGhFbGVtZW50
KHBhdGgpLml0ZXJrZXlzKCkKLQotICBkZWYgc3Bhd252KHNlbGYsIHdhaXQsIGV4ZWN1dGFibGUs
ICprYXJncyk6Ci0gICAgYXNzZXJ0IHdhaXQgPT0gRmFrZU9zLlBfV0FJVAotICAgIHJldHVybiBz
ZWxmLnNwYXduX2ltcGwoZXhlY3V0YWJsZSwga2FyZ3MpCi0KLQotY2xhc3MgR2V0VGVzdHNUb1J1
blRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAiIiJFeGVyY2lzZXMgVGVzdFJ1bm5lci5HZXRU
ZXN0c1RvUnVuLiIiIgotCi0gIGRlZiBOb3JtYWxpemVHZXRUZXN0c1RvUnVuUmVzdWx0cyhzZWxm
LCByZXN1bHRzKToKLSAgICAiIiJOb3JtYWxpemVzIHBhdGggZGF0YSByZXR1cm5lZCBmcm9tIEdl
dFRlc3RzVG9SdW4gZm9yIGNvbXBhcmlzb24uIiIiCi0KLSAgICBkZWYgTm9ybWFsaXplUHl0aG9u
VGVzdFBhaXIocGFpcik6Ci0gICAgICAiIiJOb3JtYWxpemVzIHBhdGggZGF0YSBpbiB0aGUgKGRp
cmVjdG9yeSwgcHl0aG9uX3NjcmlwdCkgcGFpci4iIiIKLQotICAgICAgcmV0dXJuIChvcy5wYXRo
Lm5vcm1wYXRoKHBhaXJbMF0pLCBvcy5wYXRoLm5vcm1wYXRoKHBhaXJbMV0pKQotCi0gICAgZGVm
IE5vcm1hbGl6ZUJpbmFyeVRlc3RQYWlyKHBhaXIpOgotICAgICAgIiIiTm9ybWFsaXplcyBwYXRo
IGRhdGEgaW4gdGhlIChkaXJlY3RvcnksIGJpbmFyeV9leGVjdXRhYmxlKSBwYWlyLiIiIgotCi0g
ICAgICBkaXJlY3RvcnksIGV4ZWN1dGFibGUgPSBtYXAob3MucGF0aC5ub3JtcGF0aCwgcGFpcikK
LQotICAgICAgIyBPbiBXaW5kb3dzIGFuZCBDeWd3aW4sIHRoZSB0ZXN0IGZpbGUgbmFtZXMgaGF2
ZSB0aGUgLmV4ZSBleHRlbnNpb24sIGJ1dAotICAgICAgIyB0aGV5IGNhbiBiZSBpbnZva2VkIGVp
dGhlciBieSBuYW1lIG9yIGJ5IG5hbWUrZXh0ZW5zaW9uLiBPdXIgdGVzdCBtdXN0Ci0gICAgICAj
IGFjY29tbW9kYXRlIGJvdGggc2l0dWF0aW9ucy4KLSAgICAgIGlmIHJ1bl90ZXN0c191dGlsLklT
X1dJTkRPV1Mgb3IgcnVuX3Rlc3RzX3V0aWwuSVNfQ1lHV0lOOgotICAgICAgICBleGVjdXRhYmxl
ID0gcmUuc3ViKHInXC5leGUkJywgJycsIGV4ZWN1dGFibGUpCi0gICAgICByZXR1cm4gKGRpcmVj
dG9yeSwgZXhlY3V0YWJsZSkKLQotICAgIHB5dGhvbl90ZXN0cyA9IHNldHMuU2V0KG1hcChOb3Jt
YWxpemVQeXRob25UZXN0UGFpciwgcmVzdWx0c1swXSkpCi0gICAgYmluYXJ5X3Rlc3RzID0gc2V0
cy5TZXQobWFwKE5vcm1hbGl6ZUJpbmFyeVRlc3RQYWlyLCByZXN1bHRzWzFdKSkKLSAgICByZXR1
cm4gKHB5dGhvbl90ZXN0cywgYmluYXJ5X3Rlc3RzKQotCi0gIGRlZiBBc3NlcnRSZXN1bHRzRXF1
YWwoc2VsZiwgcmVzdWx0cywgZXhwZWN0ZWQpOgotICAgICIiIkFzc2VydHMgcmVzdWx0cyByZXR1
cm5lZCBieSBHZXRUZXN0c1RvUnVuIGVxdWFsIHRvIGV4cGVjdGVkIHJlc3VsdHMuIiIiCi0KLSAg
ICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuTm9ybWFsaXplR2V0VGVzdHNUb1J1blJlc3VsdHMocmVz
dWx0cyksCi0gICAgICAgICAgICAgICAgICAgICBzZWxmLk5vcm1hbGl6ZUdldFRlc3RzVG9SdW5S
ZXN1bHRzKGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAgICAgICAgICdJbmNvcnJlY3Qgc2V0IG9m
IHRlc3RzIHJldHVybmVkOlxuJXNcbmV4cGVjdGVkOlxuJXMnICUKLSAgICAgICAgICAgICAgICAg
ICAgIChyZXN1bHRzLCBleHBlY3RlZCkpCi0KLSAgZGVmIHNldFVwKHNlbGYpOgotICAgIHNlbGYu
ZmFrZV9vcyA9IEZha2VPcyhGYWtlUGF0aCgKLSAgICAgICAgY3VycmVudF9kaXI9b3MucGF0aC5h
YnNwYXRoKG9zLnBhdGguZGlybmFtZShydW5fdGVzdHNfdXRpbC5fX2ZpbGVfXykpLAotICAgICAg
ICBrbm93bl9wYXRocz1bQWRkRXhlRXh0ZW5zaW9uKEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3Vu
aXR0ZXN0JyksCi0gICAgICAgICAgICAgICAgICAgICBBZGRFeGVFeHRlbnNpb24oR1RFU1RfT1BU
X0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAgICAgICAgICAgICd0ZXN0L2d0
ZXN0X2NvbG9yX3Rlc3QucHknXSkpCi0gICAgc2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zID0gWydk
YmcnLCAnb3B0J10KLSAgICBzZWxmLnRlc3RfcnVubmVyID0gcnVuX3Rlc3RzX3V0aWwuVGVzdFJ1
bm5lcihzY3JpcHRfZGlyPScuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbmplY3RlZF9vcz1zZWxmLmZha2Vfb3MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5qZWN0ZWRfc3VicHJvY2Vzcz1Ob25l
KQotCi0gIGRlZiB0ZXN0QmluYXJ5VGVzdHNPbmx5KHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBH
ZXRUZXN0c1RvUnVuIHdpdGggcGFyYW1ldGVycyBkZXNpZ25hdGluZyBiaW5hcnkgdGVzdHMgb25s
eS4iIiIKLQotICAgICMgQSBkZWZhdWx0IGJ1aWxkLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0Vx
dWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAg
ICBbJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNl
LAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1
cmF0aW9ucyksCi0gICAgICAgIChbXSwKLSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1Rf
REJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBBbiBleHBsaWNpdGx5IHNw
ZWNpZmllZCBkaXJlY3RvcnkuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAg
IHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdf
RElSLCAnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFs
c2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZp
Z3VyYXRpb25zKSwKLSAgICAgICAgKFtdLAotICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVT
VF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIEEgcGFydGljdWxhciBj
b25maWd1cmF0aW9uLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxm
LnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X3VuaXR0ZXN0
J10sCi0gICAgICAgICAgICAnb3RoZXInLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAg
ICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAg
ICAgICAgKFtdLAotICAgICAgICAgWyhHVEVTVF9PVEhFUl9ESVIsIEdURVNUX09USEVSX0RJUiAr
ICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBBbGwgYXZhaWxhYmxlIGNvbmZpZ3VyYXRp
b25zCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5u
ZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAg
ICAgICAgICdhbGwnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVf
Y29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFtdLAot
ICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVz
dCcpLAotICAgICAgICAgIChHVEVTVF9PUFRfRElSLCBHVEVTVF9PUFRfRElSICsgJy9ndGVzdF91
bml0dGVzdCcpXSkpCi0KLSAgICAjIEFsbCBidWlsdCBjb25maWd1cmF0aW9ucyAodW5idWlsdCBk
b24ndCBjYXVzZSBmYWlsdXJlKS4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAg
ICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF91
bml0dGVzdCddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBUcnVlLAotICAgICAgICAg
ICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyArIFsn
dW5idWlsdCddKSwKLSAgICAgICAgKFtdLAotICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVT
VF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpLAotICAgICAgICAgIChHVEVTVF9PUFRfRElS
LCBHVEVTVF9PUFRfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIEEgY29tYmlu
YXRpb24gb2YgYW4gZXhwbGljaXQgZGlyZWN0b3J5IGFuZCBhIGNvbmZpZ3VyYXRpb24uCi0gICAg
c2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVz
dHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rlc3RfdW5pdHRlc3QnXSwK
LSAgICAgICAgICAgICdvcHQnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFp
bGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAg
KFtdLAotICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91
bml0dGVzdCcpLAotICAgICAgICAgIChHVEVTVF9PUFRfRElSLCBHVEVTVF9PUFRfRElSICsgJy9n
dGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIFNhbWUgdGVzdCBzcGVjaWZpZWQgaW4gYW4gZXhw
bGljaXQgZGlyZWN0b3J5IGFuZCB2aWEgYSBjb25maWd1cmF0aW9uLgotICAgIHNlbGYuQXNzZXJ0
UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0g
ICAgICAgICAgICBbR1RFU1RfREJHX0RJUiwgJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAg
ICAnZGJnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZp
Z3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbXSwKLSAgICAg
ICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0p
KQotCi0gICAgIyBBbGwgYnVpbHQgY29uZmlndXJhdGlvbnMgKyBleHBsaWNpdCBkaXJlY3Rvcnkg
KyBleHBsaWNpdCBjb25maWd1cmF0aW9uLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAot
ICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbR1RF
U1RfREJHX0RJUiwgJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAnb3B0JywKLSAgICAg
ICAgICAgIFRydWUsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5m
YWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFtdLAotICAgICAgICAgWyhHVEVTVF9EQkdf
RElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpLAotICAgICAgICAgIChHVEVT
VF9PUFRfRElSLCBHVEVTVF9PUFRfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgZGVm
IHRlc3RQeXRob25UZXN0c09ubHkoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3RzVG9S
dW4gd2l0aCBwYXJhbWV0ZXJzIGRlc2lnbmF0aW5nIFB5dGhvbiB0ZXN0cyBvbmx5LiIiIgotCi0g
ICAgIyBBIGRlZmF1bHQgYnVpbGQuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAg
ICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3Rf
Y29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAg
ICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlv
bnMpLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5
JyldLAotICAgICAgICAgW10pKQotCi0gICAgIyBBbiBleHBsaWNpdGx5IHNwZWNpZmllZCBkaXJl
Y3RvcnkuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9y
dW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAndGVzdC9n
dGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNl
LAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1
cmF0aW9ucyksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rl
c3QucHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEEgcGFydGljdWxhciBjb25maWd1cmF0
aW9uLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVu
bmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwK
LSAgICAgICAgICAgICdvdGhlcicsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2
YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAg
ICAoWyhHVEVTVF9PVEhFUl9ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAg
ICAgICBbXSkpCi0KLSAgICAjIEFsbCBhdmFpbGFibGUgY29uZmlndXJhdGlvbnMKLSAgICBzZWxm
LkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1Rv
UnVuKAotICAgICAgICAgICAgWyd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAg
ICAgICdhbGwnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29u
ZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1Rf
REJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpLAotICAgICAgICAgIChHVEVTVF9P
UFRfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgW10pKQotCi0g
ICAgIyBBbGwgYnVpbHQgY29uZmlndXJhdGlvbnMgKHVuYnVpbHQgZG9uJ3QgY2F1c2UgZmFpbHVy
ZSkuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5u
ZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfY29sb3JfdGVzdC5weSddLAot
ICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBUcnVlLAotICAgICAgICAgICAgYXZhaWxhYmxl
X2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyArIFsndW5idWlsdCddKSwK
LSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpLAot
ICAgICAgICAgIChHVEVTVF9PUFRfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAot
ICAgICAgICAgW10pKQotCi0gICAgIyBBIGNvbWJpbmF0aW9uIG9mIGFuIGV4cGxpY2l0IGRpcmVj
dG9yeSBhbmQgYSBjb25maWd1cmF0aW9uLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAot
ICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbR1RF
U1RfREJHX0RJUiwgJ2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICdvcHQnLAot
ICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9
c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rl
c3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpLAotICAgICAgICAgIChHVEVTVF9PUFRfRElSLCAndGVz
dC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgW10pKQotCi0gICAgIyBTYW1lIHRl
c3Qgc3BlY2lmaWVkIGluIGFuIGV4cGxpY2l0IGRpcmVjdG9yeSBhbmQgdmlhIGEgY29uZmlndXJh
dGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1
bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIsICdndGVzdF9j
b2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnZGJnJywKLSAgICAgICAgICAgIEZhbHNlLAot
ICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0
aW9ucyksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Qu
cHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEFsbCBidWlsdCBjb25maWd1cmF0aW9ucyAr
IGV4cGxpY2l0IGRpcmVjdG9yeSArIGV4cGxpY2l0IGNvbmZpZ3VyYXRpb24uCi0gICAgc2VsZi5B
c3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1
bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rlc3RfY29sb3JfdGVzdC5weSddLAot
ICAgICAgICAgICAgJ29wdCcsCi0gICAgICAgICAgICBUcnVlLAotICAgICAgICAgICAgYXZhaWxh
YmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChb
KEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKSwKLSAgICAgICAgICAo
R1RFU1RfT1BUX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtd
KSkKLQotICBkZWYgdGVzdENvbWJpbmF0aW9uT2ZCaW5hcnlBbmRQeXRob25UZXN0cyhzZWxmKToK
LSAgICAiIiJFeGVyY2lzZXMgR2V0VGVzdHNUb1J1biB3aXRoIG1peGVkIGJpbmFyeS9QeXRob24g
dGVzdHMuIiIiCi0KLSAgICAjIFVzZSBvbmx5IGRlZmF1bHQgY29uZmlndXJhdGlvbiBmb3IgdGhp
cyB0ZXN0LgotCi0gICAgIyBOZWl0aGVyIGJpbmFyeSBub3IgUHl0aG9uIHRlc3RzIGFyZSBzcGVj
aWZpZWQgc28gZmluZCBhbGwuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAg
IHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtdLAotICAgICAg
ICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25m
aWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoWyhHVEVTVF9E
QkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgWyhHVEVTVF9E
QkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIFNw
ZWNpZnlpbmcgYm90aCBiaW5hcnkgYW5kIFB5dGhvbiB0ZXN0cy4KLSAgICBzZWxmLkFzc2VydFJl
c3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAg
ICAgICAgICAgWydndGVzdF91bml0dGVzdCcsICdndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAg
ICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2Nv
bmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbKEdURVNU
X0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAgICBbKEdURVNU
X0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMg
U3BlY2lmeWluZyBiaW5hcnkgdGVzdHMgc3VwcHJlc3NlcyBQeXRob24gdGVzdHMuCi0gICAgc2Vs
Zi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNU
b1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICcnLAot
ICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9
c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFtdLAotICAgICAgICAgWyhHVEVT
VF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICMg
U3BlY2lmeWluZyBQeXRob24gdGVzdHMgc3VwcHJlc3NlcyBiaW5hcnkgdGVzdHMuCi0gICAgc2Vs
Zi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNU
b1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfY29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAg
JycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0
aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElS
LCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgW10pKQotCi0gIGRlZiB0
ZXN0SWdub3Jlc05vblRlc3RGaWxlcyhzZWxmKToKLSAgICAiIiJWZXJpZmllcyB0aGF0IEdldFRl
c3RzVG9SdW4gaWdub3JlcyBub24tdGVzdCBmaWxlcyBpbiB0aGUgZmlsZXN5c3RlbS4iIiIKLQot
ICAgIHNlbGYuZmFrZV9vcyA9IEZha2VPcyhGYWtlUGF0aCgKLSAgICAgICAgY3VycmVudF9kaXI9
b3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShydW5fdGVzdHNfdXRpbC5fX2ZpbGVfXykp
LAotICAgICAgICBrbm93bl9wYXRocz1bQWRkRXhlRXh0ZW5zaW9uKEdURVNUX0RCR19ESVIgKyAn
L2d0ZXN0X25vbnRlc3QnKSwKLSAgICAgICAgICAgICAgICAgICAgICd0ZXN0LyddKSkKLSAgICBz
ZWxmLnRlc3RfcnVubmVyID0gcnVuX3Rlc3RzX3V0aWwuVGVzdFJ1bm5lcihzY3JpcHRfZGlyPScu
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmpl
Y3RlZF9vcz1zZWxmLmZha2Vfb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5qZWN0ZWRfc3VicHJvY2Vzcz1Ob25lKQotICAgIHNlbGYuQXNzZXJ0
UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0g
ICAgICAgICAgICBbXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgVHJ1ZSwKLSAgICAg
ICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMp
LAotICAgICAgICAoW10sIFtdKSkKLQotICBkZWYgdGVzdFdvcmtzRnJvbURpZmZlcmVudERpcihz
ZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgR2V0VGVzdHNUb1J1biBmcm9tIGEgZGlyZWN0b3J5IGRp
ZmZlcmVudCBmcm9tIHJ1bl90ZXN0LnB5J3MuIiIiCi0KLSAgICAjIEhlcmUgd2Ugc2ltdWxhdGUg
YW4gdGVzdCBzY3JpcHQgaW4gZGlyZWN0b3J5IC9kLyBjYWxsZWQgZnJvbSB0aGUKLSAgICAjIGRp
cmVjdG9yeSAvYS9iL2MvLgotICAgIHNlbGYuZmFrZV9vcyA9IEZha2VPcyhGYWtlUGF0aCgKLSAg
ICAgICAgY3VycmVudF9kaXI9b3MucGF0aC5hYnNwYXRoKCcvYS9iL2MnKSwKLSAgICAgICAga25v
d25fcGF0aHM9WwotICAgICAgICAgICAgJy9hL2IvYy8nLAotICAgICAgICAgICAgQWRkRXhlRXh0
ZW5zaW9uKCcvZC8nICsgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAg
ICAgICAgIEFkZEV4ZUV4dGVuc2lvbignL2QvJyArIEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0X3Vu
aXR0ZXN0JyksCi0gICAgICAgICAgICAnL2QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5J10pKQot
ICAgIHNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyA9IFsnZGJnJywgJ29wdCddCi0gICAgc2VsZi50
ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5uZXIoc2NyaXB0X2Rpcj0nL2QvJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3Rl
ZF9vcz1zZWxmLmZha2Vfb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5qZWN0ZWRfc3VicHJvY2Vzcz1Ob25lKQotICAgICMgQSBiaW5hcnkgdGVz
dC4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5l
ci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF91bml0dGVzdCddLAotICAgICAg
ICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25m
aWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAg
ICAgICBbKCcvZC8nICsgR1RFU1RfREJHX0RJUiwgJy9kLycgKyBHVEVTVF9EQkdfRElSICsgJy9n
dGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIEEgUHl0aG9uIHRlc3QuCi0gICAgc2VsZi5Bc3Nl
cnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigK
LSAgICAgICAgICAgIFsnZ3Rlc3RfY29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJycsCi0g
ICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1z
ZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoWygnL2QvJyArIEdURVNUX0RCR19E
SVIsICcvZC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sIFtdKSkKLQotICBkZWYgdGVzdE5v
blRlc3RCaW5hcnkoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3RzVG9SdW4gd2l0aCBh
IG5vbi10ZXN0IHBhcmFtZXRlci4iIiIKLQotICAgIHNlbGYuYXNzZXJ0XygKLSAgICAgICAgbm90
IHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfdW5p
dHRlc3Rfbm90X3JlYWxseSddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwK
LSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJh
dGlvbnMpKQotCi0gIGRlZiB0ZXN0Tm9uRXhpc3RpbmdQeXRob25UZXN0KHNlbGYpOgotICAgICIi
IkV4ZXJjaXNlcyBHZXRUZXN0c1RvUnVuIHdpdGggYSBub24tZXhpc3RlbnQgUHl0aG9uIHRlc3Qg
cGFyYW1ldGVyLiIiIgotCi0gICAgc2VsZi5hc3NlcnRfKAotICAgICAgICBub3Qgc2VsZi50ZXN0
X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydub25leGlzdGVudF90ZXN0LnB5
J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZh
aWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucykpCi0KLSAgaWYg
cnVuX3Rlc3RzX3V0aWwuSVNfV0lORE9XUyBvciBydW5fdGVzdHNfdXRpbC5JU19DWUdXSU46Ci0K
LSAgICBkZWYgdGVzdERvZXNOb3RQaWNrTm9uRXhlRmlsZXNPbldpbmRvd3Moc2VsZik6Ci0gICAg
ICAiIiJWZXJpZmllcyB0aGF0IEdldFRlc3RzVG9SdW4gZG9lcyBub3QgZmluZCBfdGVzdCBmaWxl
cyBvbiBXaW5kb3dzLiIiIgotCi0gICAgICBzZWxmLmZha2Vfb3MgPSBGYWtlT3MoRmFrZVBhdGgo
Ci0gICAgICAgICAgY3VycmVudF9kaXI9b3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShy
dW5fdGVzdHNfdXRpbC5fX2ZpbGVfXykpLAotICAgICAgICAgIGtub3duX3BhdGhzPVsnL2QvJyAr
IEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3Rlc3QnLCAndGVzdC8nXSkpCi0gICAgICBzZWxmLnRl
c3RfcnVubmVyID0gcnVuX3Rlc3RzX3V0aWwuVGVzdFJ1bm5lcihzY3JpcHRfZGlyPScuJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluamVjdGVk
X29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluamVjdGVkX3N1YnByb2Nlc3M9Tm9uZSkKLSAgICAgIHNlbGYuQXNzZXJ0
UmVzdWx0c0VxdWFsKAotICAgICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigK
LSAgICAgICAgICAgICAgW10sCi0gICAgICAgICAgICAgICcnLAotICAgICAgICAgICAgICBUcnVl
LAotICAgICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZp
Z3VyYXRpb25zKSwKLSAgICAgICAgICAoW10sIFtdKSkKLQotCi1jbGFzcyBSdW5UZXN0c1Rlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgotICAiIiJFeGVyY2lzZXMgVGVzdFJ1bm5lci5SdW5UZXN0cy4i
IiIKLQotICBkZWYgU3Bhd25TdWNjZXNzKHNlbGYsIHVudXNlZF9leGVjdXRhYmxlLCB1bnVzZWRf
YXJndik6Ci0gICAgIiIiRmFrZXMgdGVzdCBzdWNjZXNzIGJ5IHJldHVybmluZyAwIGFzIGFuIGV4
aXQgY29kZS4iIiIKLQotICAgIHNlbGYubnVtX3NwYXduX2NhbGxzICs9IDEKLSAgICByZXR1cm4g
MAotCi0gIGRlZiBTcGF3bkZhaWx1cmUoc2VsZiwgdW51c2VkX2V4ZWN1dGFibGUsIHVudXNlZF9h
cmd2KToKLSAgICAiIiJGYWtlcyB0ZXN0IHN1Y2Nlc3MgYnkgcmV0dXJuaW5nIDEgYXMgYW4gZXhp
dCBjb2RlLiIiIgotCi0gICAgc2VsZi5udW1fc3Bhd25fY2FsbHMgKz0gMQotICAgIHJldHVybiAx
Ci0KLSAgZGVmIHNldFVwKHNlbGYpOgotICAgIHNlbGYuZmFrZV9vcyA9IEZha2VPcyhGYWtlUGF0
aCgKLSAgICAgICAgY3VycmVudF9kaXI9b3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShy
dW5fdGVzdHNfdXRpbC5fX2ZpbGVfXykpLAotICAgICAgICBrbm93bl9wYXRocz1bCi0gICAgICAg
ICAgICBBZGRFeGVFeHRlbnNpb24oR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwK
LSAgICAgICAgICAgIEFkZEV4ZUV4dGVuc2lvbihHVEVTVF9PUFRfRElSICsgJy9ndGVzdF91bml0
dGVzdCcpLAotICAgICAgICAgICAgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weSddKSkKLSAgICBz
ZWxmLmZha2VfY29uZmlndXJhdGlvbnMgPSBbJ2RiZycsICdvcHQnXQotICAgIHNlbGYudGVzdF9y
dW5uZXIgPSBydW5fdGVzdHNfdXRpbC5UZXN0UnVubmVyKAotICAgICAgICBzY3JpcHRfZGlyPW9z
LnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3IgJy4nLAotICAgICAgICBpbmplY3RlZF9vcz1zZWxm
LmZha2Vfb3MsCi0gICAgICAgIGluamVjdGVkX3N1YnByb2Nlc3M9Tm9uZSkKLSAgICBzZWxmLm51
bV9zcGF3bl9jYWxscyA9IDAgICMgQSBudW1iZXIgb2YgY2FsbHMgdG8gc3Bhd24uCi0KLSAgZGVm
IHRlc3RSdW5QeXRob25UZXN0U3VjY2VzcyhzZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgUnVuVGVz
dHMgdG8gaGFuZGxlIGEgUHl0aG9uIHRlc3Qgc3VjY2Vzcy4iIiIKLQotICAgIHNlbGYuZmFrZV9v
cy5zcGF3bl9pbXBsID0gc2VsZi5TcGF3blN1Y2Nlc3MKLSAgICBzZWxmLmFzc2VydEVxdWFsKAot
ICAgICAgICBzZWxmLnRlc3RfcnVubmVyLlJ1blRlc3RzKAotICAgICAgICAgICAgWyhHVEVTVF9E
QkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgICAgW10pLAot
ICAgICAgICAwKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5udW1fc3Bhd25fY2FsbHMsIDEp
Ci0KLSAgZGVmIHRlc3RSdW5CaW5hcnlUZXN0U3VjY2VzcyhzZWxmKToKLSAgICAiIiJFeGVyY2lz
ZXMgUnVuVGVzdHMgdG8gaGFuZGxlIGEgYmluYXJ5IHRlc3Qgc3VjY2Vzcy4iIiIKLQotICAgIHNl
bGYuZmFrZV9vcy5zcGF3bl9pbXBsID0gc2VsZi5TcGF3blN1Y2Nlc3MKLSAgICBzZWxmLmFzc2Vy
dEVxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLlJ1blRlc3RzKAotICAgICAgICAgICAg
W10sCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0
X3VuaXR0ZXN0JyldKSwKLSAgICAgICAgMCkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnVt
X3NwYXduX2NhbGxzLCAxKQotCi0gIGRlZiB0ZXN0UnVuUHl0aG9uVGVzdEZhdWlsdXJlKHNlbGYp
OgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0cyB0byBoYW5kbGUgYSBQeXRob24gdGVzdCBmYWls
dXJlLiIiIgotCi0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxmLlNwYXduRmFpbHVy
ZQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuUnVuVGVz
dHMoCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Qu
cHknKV0sCi0gICAgICAgICAgICBbXSksCi0gICAgICAgIDEpCi0gICAgc2VsZi5hc3NlcnRFcXVh
bChzZWxmLm51bV9zcGF3bl9jYWxscywgMSkKLQotICBkZWYgdGVzdFJ1bkJpbmFyeVRlc3RGYWls
dXJlKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0cyB0byBoYW5kbGUgYSBiaW5hcnkg
dGVzdCBmYWlsdXJlLiIiIgotCi0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxmLlNw
YXduRmFpbHVyZQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5u
ZXIuUnVuVGVzdHMoCi0gICAgICAgICAgICBbXSwKLSAgICAgICAgICAgIFsoR1RFU1RfREJHX0RJ
UiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pLAotICAgICAgICAxKQotICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5udW1fc3Bhd25fY2FsbHMsIDEpCi0KLSAgZGVmIHRlc3RD
b21iaW5lZFRlc3RTdWNjZXNzKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0cyB0byBo
YW5kbGUgYSBzdWNjZXNzIG9mIGJvdGggUHl0aG9uIGFuZCBiaW5hcnkgdGVzdC4iIiIKLQotICAg
IHNlbGYuZmFrZV9vcy5zcGF3bl9pbXBsID0gc2VsZi5TcGF3blN1Y2Nlc3MKLSAgICBzZWxmLmFz
c2VydEVxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLlJ1blRlc3RzKAotICAgICAgICAg
ICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSwK
LSAgICAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5p
dHRlc3QnKV0pLAotICAgICAgICAwKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5udW1fc3Bh
d25fY2FsbHMsIDIpCi0KLSAgZGVmIHRlc3RDb21iaW5lZFRlc3RTdWNjZXNzQW5kRmFpbHVyZShz
ZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgUnVuVGVzdHMgdG8gaGFuZGxlIGEgc3VjY2VzcyBvZiBi
b3RoIFB5dGhvbiBhbmQgYmluYXJ5IHRlc3QuIiIiCi0KLSAgICBkZWYgU3Bhd25JbXBsKGV4ZWN1
dGFibGUsIGFyZ3YpOgotICAgICAgc2VsZi5udW1fc3Bhd25fY2FsbHMgKz0gMQotICAgICAgIyBT
aW11bGF0ZXMgZmFpbHVyZSBvZiBhIFB5dGhvbiB0ZXN0IGFuZCBzdWNjZXNzIG9mIGEgYmluYXJ5
IHRlc3QuCi0gICAgICBpZiAnLnB5JyBpbiBleGVjdXRhYmxlIG9yICcucHknIGluIGFyZ3ZbMF06
Ci0gICAgICAgIHJldHVybiAxCi0gICAgICBlbHNlOgotICAgICAgICByZXR1cm4gMAotCi0gICAg
c2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBTcGF3bkltcGwKLSAgICBzZWxmLmFzc2VydEVxdWFs
KAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLlJ1blRlc3RzKAotICAgICAgICAgICAgWyhHVEVT
VF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSwKLSAgICAgICAg
ICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0p
LAotICAgICAgICAwKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5udW1fc3Bhd25fY2FsbHMs
IDIpCi0KLQotY2xhc3MgUGFyc2VBcmdzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICIiIkV4
ZXJjaXNlcyBQYXJzZUFyZ3MuIiIiCi0KLSAgZGVmIHRlc3ROb09wdGlvbnMoc2VsZik6Ci0gICAg
b3B0aW9ucywgYXJncyA9IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygnZ3Rlc3QnLCBhcmd2PVsn
c2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBbJ3NjcmlwdC5weSddKQot
ICAgIHNlbGYuYXNzZXJ0XyhvcHRpb25zLmNvbmZpZ3VyYXRpb25zIGlzIE5vbmUpCi0gICAgc2Vs
Zi5hc3NlcnRGYWxzZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRpb25zKQotCi0gIGRlZiB0ZXN0
T3B0aW9uQyhzZWxmKToKLSAgICBvcHRpb25zLCBhcmdzID0gcnVuX3Rlc3RzX3V0aWwuUGFyc2VB
cmdzKAotICAgICAgICAnZ3Rlc3QnLCBhcmd2PVsnc2NyaXB0LnB5JywgJy1jJywgJ2RiZyddKQot
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgWydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2Vy
dEVxdWFsKG9wdGlvbnMuY29uZmlndXJhdGlvbnMsICdkYmcnKQotICAgIHNlbGYuYXNzZXJ0RmFs
c2Uob3B0aW9ucy5idWlsdF9jb25maWd1cmF0aW9ucykKLQotICBkZWYgdGVzdE9wdGlvbkEoc2Vs
Zik6Ci0gICAgb3B0aW9ucywgYXJncyA9IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygnZ3Rlc3Qn
LCBhcmd2PVsnc2NyaXB0LnB5JywgJy1hJ10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBb
J3NjcmlwdC5weSddKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5jb25maWd1cmF0aW9u
cywgJ2FsbCcpCi0gICAgc2VsZi5hc3NlcnRGYWxzZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRp
b25zKQotCi0gIGRlZiB0ZXN0T3B0aW9uQihzZWxmKToKLSAgICBvcHRpb25zLCBhcmdzID0gcnVu
X3Rlc3RzX3V0aWwuUGFyc2VBcmdzKCdndGVzdCcsIGFyZ3Y9WydzY3JpcHQucHknLCAnLWInXSkK
LSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3Nl
cnRfKG9wdGlvbnMuY29uZmlndXJhdGlvbnMgaXMgTm9uZSkKLSAgICBzZWxmLmFzc2VydFRydWUo
b3B0aW9ucy5idWlsdF9jb25maWd1cmF0aW9ucykKLQotICBkZWYgdGVzdE9wdGlvbkNBbmRPcHRp
b25CKHNlbGYpOgotICAgIG9wdGlvbnMsIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3Mo
Ci0gICAgICAgICdndGVzdCcsIGFyZ3Y9WydzY3JpcHQucHknLCAnLWMnLCAnZGJnJywgJy1iJ10p
Ci0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBbJ3NjcmlwdC5weSddKQotICAgIHNlbGYuYXNz
ZXJ0RXF1YWwob3B0aW9ucy5jb25maWd1cmF0aW9ucywgJ2RiZycpCi0gICAgc2VsZi5hc3NlcnRU
cnVlKG9wdGlvbnMuYnVpbHRfY29uZmlndXJhdGlvbnMpCi0KLSAgZGVmIHRlc3RPcHRpb25IKHNl
bGYpOgotICAgIGhlbHBfY2FsbGVkID0gW0ZhbHNlXQotCi0gICAgIyBTdXBwcmVzc2VzIGxpbnQg
d2FybmluZyBvbiB1bnVzZWQgYXJndW1lbnRzLiAgVGhlc2UgYXJndW1lbnRzIGFyZQotICAgICMg
cmVxdWlyZWQgYnkgb3B0cGFyc2UsIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIHVudXNlZC4KLSAgICAj
IHB5bGludDogZGlzYWJsZS1tc2c9VzA2MTMKLSAgICBkZWYgVmVyaWZ5SGVscChvcHRpb24sIG9w
dCwgdmFsdWUsIHBhcnNlcik6Ci0gICAgICBoZWxwX2NhbGxlZFswXSA9IFRydWUKLQotICAgICMg
VmVyaWZpZXMgdGhhdCAtaCBjYXVzZXMgdGhlIGhlbHAgY2FsbGJhY2sgdG8gYmUgY2FsbGVkLgot
ICAgIGhlbHBfY2FsbGVkWzBdID0gRmFsc2UKLSAgICBfLCBhcmdzID0gcnVuX3Rlc3RzX3V0aWwu
UGFyc2VBcmdzKAotICAgICAgICAnZ3Rlc3QnLCBhcmd2PVsnc2NyaXB0LnB5JywgJy1oJ10sIGhl
bHBfY2FsbGJhY2s9VmVyaWZ5SGVscCkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsnc2Ny
aXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRUcnVlKGhlbHBfY2FsbGVkWzBdKQotCi0gICAgIyBW
ZXJpZmllcyB0aGF0IC0taGVscCBjYXVzZXMgdGhlIGhlbHAgY2FsbGJhY2sgdG8gYmUgY2FsbGVk
LgotICAgIGhlbHBfY2FsbGVkWzBdID0gRmFsc2UKLSAgICBfLCBhcmdzID0gcnVuX3Rlc3RzX3V0
aWwuUGFyc2VBcmdzKAotICAgICAgICAnZ3Rlc3QnLCBhcmd2PVsnc2NyaXB0LnB5JywgJy0taGVs
cCddLCBoZWxwX2NhbGxiYWNrPVZlcmlmeUhlbHApCi0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdz
LCBbJ3NjcmlwdC5weSddKQotICAgIHNlbGYuYXNzZXJ0VHJ1ZShoZWxwX2NhbGxlZFswXSkKLQot
Ci1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9EZWJ1Z1Byb2plY3QueGNj
b25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvRGVidWdQcm9qZWN0
LnhjY29uZmlnCmluZGV4IDU3NmYzZDliZjBlMjRmNmVlOTg5MTgxM2U0ZTE4ZTRmMWMxYmU0NjIu
LjNkNjgxNTdkNWQ1MTJhODgwZjE4Njg1NmMzYmExMGI0YTJiMTgwMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9EZWJ1Z1Byb2plY3QueGNjb25maWcK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0RlYnVnUHJvamVjdC54
Y2NvbmZpZwpAQCAtMjgsMTIgKzI4LDMgQEAgT1RIRVJfQ0ZMQUdTID0gJChPVEhFUl9DRkxBR1Mp
IC1EREVCVUc9MQogLy8gVGhlc2UgYXJlIHR1cm5lZCBvZmYgdG8gYXZvaWQgU1RMIGluY29tcGF0
aWJpbGl0aWVzIHdpdGggY2xpZW50IGNvZGUKIC8vIC8vIFR1cm5zIG9uIHNwZWNpYWwgQysrIFNU
TCBjaGVja3MgdG8gImVuY291cmFnZSIgZ29vZCBTVEwgdXNlCiAvLyBHQ0NfUFJFUFJPQ0VTU09S
X0RFRklOSVRJT05TID0gJChHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TKSBfR0xJQkNYWF9E
RUJVR19QRURBTlRJQyBfR0xJQkNYWF9ERUJVRyBfR0xJQkNQUF9DT05DRVBUX0NIRUNLUwotCi0v
LyBVc2VkIGJ5IEhFQURFUl9TRUFSQ0hfUEFUSFMgaW4gR2VuZXJhbC54Y2NvbmZpZwotV0VCQ09S
RV9QUklWQVRFX0hFQURFUlNfRElSID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL1dlYkNvcmUuZnJh
bWV3b3JrL1ByaXZhdGVIZWFkZXJzOwotCi1PTkxZX0FDVElWRV9BUkNIID0gWUVTCi0KLVNES1JP
T1QgPSAkKFNES1JPT1RfJChVU0VfSU5URVJOQUxfU0RLKSk7Ci1TREtST09UXyA9IG1hY29zeDsK
LVNES1JPT1RfWUVTID0gbWFjb3N4LmludGVybmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0ZyYW1ld29ya1RhcmdldC54Y2NvbmZpZyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9GcmFtZXdvcmtUYXJnZXQueGNjb25maWcK
aW5kZXggZjRkYTlkMjM5OTE2MzVhYmRjZGE4MmI2YTA2ZWFjM2ZjODU4OTBhZC4uMzU3YjFjOGZi
ZmEyMzFkYTNlY2YyZGMzN2NjZTE3MjgzMDQyOTExYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0ZyYW1ld29ya1RhcmdldC54Y2NvbmZpZworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvRnJhbWV3b3JrVGFyZ2V0LnhjY29u
ZmlnCkBAIC0xNSw1ICsxNSwzIEBAIFNUUklQX1NUWUxFID0gbm9uLWdsb2JhbAogCiAvLyBMZXQg
dGhlIHVzZXIgaW5zdGFsbCBieSBzcGVjaWZ5aW5nIHRoZSAkRFNUUk9PVCB3aXRoIHhjb2RlYnVp
bGQKIFNLSVBfSU5TVEFMTCA9IE5PCi0KLUlOU1RBTExfUEFUSCA9ICQoU1lTVEVNX0xJQlJBUllf
RElSKS9Qcml2YXRlRnJhbWV3b3JrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3hjb2RlL0NvbmZpZy9HZW5lcmFsLnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QveGNvZGUvQ29uZmlnL0dlbmVyYWwueGNjb25maWcKaW5kZXggZDg3NjNkNjQ0MWI4YjkwYmZj
OTk2ZTZjMGM5ZmZjZTA3MWExMjE3Mi4uZjIzZTMyMjI3Mjc1NjM0M2MwNGY1MGMyZjc5OTc0NDAw
OGI0NWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmln
L0dlbmVyYWwueGNjb25maWcKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29u
ZmlnL0dlbmVyYWwueGNjb25maWcKQEAgLTUsMjAgKzUsMTAgQEAKIC8vICBleGFtcGxlcy4KIC8v
ICBUaGlzIGZpbGUgaXMgYmFzZWQgb24gdGhlIFhjb2RlIENvbmZpZ3VyYXRpb24gZmlsZXMgaW46
CiAvLyAgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS10b29sYm94LWZvci1tYWMvCi0v
LwotCi0jaW5jbHVkZSAiLi4vLi4vLi4vLi4vLi4vLi4vSW50ZXJuYWwvQ29uZmlndXJhdGlvbnMv
SGF2ZUludGVybmFsU0RLLnhjY29uZmlnIgotCi1VU0VfSU5URVJOQUxfU0RLID0gJChVU0VfSU5U
RVJOQUxfU0RLXyQoQ09ORklHVVJBVElPTikpOwotVVNFX0lOVEVSTkFMX1NES19Qcm9kdWN0aW9u
ID0gWUVTOwotVVNFX0lOVEVSTkFMX1NES19EZWJ1ZyA9ICQoSEFWRV9JTlRFUk5BTF9TREspOwot
VVNFX0lOVEVSTkFMX1NES19SZWxlYXNlID0gJChIQVZFX0lOVEVSTkFMX1NESyk7Ci0KLUdDQ19W
RVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKLQotQVJDSFMgPSAk
KEFSQ0hTX1NUQU5EQVJEXzMyXzY0X0JJVCk7CisvLyAKIAotSEVBREVSX1NFQVJDSF9QQVRIUyA9
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZSAiJChXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVIpL0ZvcndhcmRpbmdIZWFkZXJzIiAuLi8gLi4vaW5jbHVkZS8KKy8vIEJ1
aWxkIGZvciBQUEMgYW5kIEludGVsLCAzMi0gYW5kIDY0LWJpdAorQVJDSFMgPSBpMzg2IHg4Nl82
NCBwcGMgcHBjNjQKIAogLy8gWmVyb2xpbmsgcHJldmVudHMgbGluayB3YXJuaW5ncyBzbyB0dXJu
IGl0IG9mZgogWkVST19MSU5LID0gTk8KQEAgLTI4LDE5ICsxOCw2IEBAIFBSRUJJTkRJTkcgPSBO
TwogCiAvLyBTdHJpY3Rlc3Qgd2FybmluZyBwb2xpY3kKIFdBUk5JTkdfQ0ZMQUdTID0gLVdhbGwg
LVdlcnJvciAtV2VuZGlmLWxhYmVscyAtV25ld2xpbmUtZW9mIC1Xbm8tc2lnbi1jb21wYXJlIC1X
c2hhZG93Ci1DTEFOR19XQVJOX0JPT0xfQ09OVkVSU0lPTiA9IFlFUzsKLUNMQU5HX1dBUk5fQ09O
U1RBTlRfQ09OVkVSU0lPTiA9IFlFUzsKLUNMQU5HX1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsKLUNM
QU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOwotQ0xBTkdfV0FSTl9JTlRfQ09OVkVSU0lP
TiA9IFlFUzsKLUNMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZRVM7Ci1FTkFC
TEVfU1RSSUNUX09CSkNfTVNHU0VORCA9IFlFUzsKLUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05W
RVJTSU9OID0gWUVTOwotR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7Ci1HQ0NfV0FS
Tl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOwotR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRP
UyA9IFlFUzsKLUdDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlFUzsKLUdDQ19XQVJOX1VOVVNF
RF9WQVJJQUJMRSA9IFlFUzsKIAogLy8gV29yayBhcm91bmQgWGNvZGUgYnVncyBieSB1c2luZyBl
eHRlcm5hbCBzdHJpcC4gU2VlOgogLy8gaHR0cDovL2xpc3RzLmFwcGxlLmNvbS9hcmNoaXZlcy9Y
Y29kZS11c2Vycy8yMDA2L0ZlYi9tc2cwMDA1MC5odG1sCkBAIC00OSwyNyArMjYsMTYgQEAgU0VQ
QVJBVEVfU1RSSVAgPSBZRVMKIC8vIEZvcmNlIEM5OSBkaWFsZWN0CiBHQ0NfQ19MQU5HVUFHRV9T
VEFOREFSRCA9IGM5OQogCi0vLyBGb3JjZSBDKysxNAotQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5E
QVJEID0gZ251KysxNDsKLQogLy8gbm90IHN1cmUgd2h5IGFwcGxlIGRlZmF1bHRzIHRoaXMgb24s
IGJ1dCBpdCdzIHByZXR0eSByaXNreQogQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk8KIAog
Ly8gVHVybiBvbiBwb3NpdGlvbiBkZXBlbmRlbnQgY29kZSBmb3IgbW9zdCBjYXNlcyAob3ZlcnJp
ZGRlbiB3aGVyZSBhcHByb3ByaWF0ZSkKIEdDQ19EWU5BTUlDX05PX1BJQyA9IFlFUwogCi1HQ0Nf
UFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05T
KSBHVEVTVF9IQVNfVFIxX1RVUExFPTAgR1RFU1RfSEFTX1JUVEk9MDsKLQotQ0xBTkdfQ1hYX0xJ
QlJBUlkgPSBsaWJjKys7Ci0KLVRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SID0gJChNQUNf
T1NfWF9WRVJTSU9OX01BSk9SKTsKLQotQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CisvLyBE
ZWZhdWx0IFNESyBhbmQgbWluaW11bSBPUyB2ZXJzaW9uIGlzIDEwLjQKK1NES1JPT1QgPSAkKERF
VkVMT1BFUl9TREtfRElSKS9NYWNPU1gxMC40dS5zZGsKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdF
VCA9IDEwLjQKK0dDQ19WRVJTSU9OID0gNC4wCiAKIC8vIFZFUlNJT05JTkcgQlVJTEQgU0VUVElO
R1MgKHVzZWQgaW4gSW5mby5wbGlzdCkKIEdURVNUX1ZFUlNJT05JTkZPX0FCT1VUID0gIMKpIDIw
MDggR29vZ2xlIEluYy4KLU9USEVSX0NGTEFHUyA9ICQoQVNBTl9PVEhFUl9DRkxBR1MpOwotT1RI
RVJfQ1BMVVNQTFVTRkxBR1MgPSAkKEFTQU5fT1RIRVJfQ1BMVVNQTFVTRkxBR1MpOwotT1RIRVJf
TERGTEFHUyA9ICQoQVNBTl9PVEhFUl9MREZMQUdTKTsKLQotU1VQUE9SVEVEX1BMQVRGT1JNUyA9
IGlwaG9uZW9zIGlwaG9uZXNpbXVsYXRvciBtYWNvc3ggdHZvcyB0dnNpbXVsYXRvciB3YXRjaG9z
IHdhdGNoc2ltdWxhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNv
ZGUvQ29uZmlnL1Byb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QveGNvZGUvQ29uZmlnL1Byb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmlnCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMTZjNjg3OGU5NzYxMDE4OGRhYTg2MjlkMzUyMWFiOTQ3NzZi
YWM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9Qcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZp
ZworKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8vCi0vLyAgUHJvZHVjdGlvblByb2pl
Y3QueGNjb25maWcKLS8vCi0vLyAgVGhlc2UgYXJlIFByb2R1Y3Rpb24gQ29uZmlndXJhdGlvbiBw
cm9qZWN0IHNldHRpbmdzIGZvciB0aGUgZ3Rlc3QgZnJhbWV3b3JrCi0vLyAgYW5kIGV4YW1wbGVz
LiBJdCBpcyBzZXQgaW4gdGhlICJCYXNlZCBPbjoiIGRyb3Bkb3duIGluIHRoZSAiUHJvamVjdCIg
aW5mbwotLy8gIGRpYWxvZy4KLS8vICBUaGlzIGZpbGUgaXMgYmFzZWQgb24gdGhlIFhjb2RlIENv
bmZpZ3VyYXRpb24gZmlsZXMgaW46Ci0vLyAgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2ds
ZS10b29sYm94LWZvci1tYWMvCi0vLyAKLQotI2luY2x1ZGUgIlJlbGVhc2VQcm9qZWN0LnhjY29u
ZmlnIgotCi0vLyBVc2VkIGJ5IEhFQURFUl9TRUFSQ0hfUEFUSFMgaW4gR2VuZXJhbC54Y2NvbmZp
ZwotV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSID0gJChXRUJDT1JFX1BSSVZBVEVfSEVBREVS
U19ESVJfJChXS19VU0VfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVIpKTsKLVdFQkNPUkVfUFJJVkFU
RV9IRUFERVJTX0RJUl9OTyA9ICQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL1dlYktp
dC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL1dlYkNvcmUuZnJhbWV3b3JrL1ByaXZh
dGVIZWFkZXJzOwotV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSX1lFUyA9ICQoV0tfT1ZFUlJJ
REVfRlJBTUVXT1JLU19ESVIpL1dlYkNvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwotCi1G
UkFNRVdPUktfU0VBUkNIX1BBVEhTID0gJChXS19RVU9URURfT1ZFUlJJREVfRlJBTUVXT1JLU19E
SVIpICQoaW5oZXJpdGVkKTsKLQotT05MWV9BQ1RJVkVfQVJDSCA9IE5PCi0KLVNES1JPT1QgPSBt
YWNvc3guaW50ZXJuYWw7Ci0KLVdLX0VNUFRZXyA9IFlFUzsKLVdLX05PVF8gPSBZRVM7Ci1XS19O
T1RfWUVTID0gTk87Ci0KLVdLX1VTRV9PVkVSUklERV9GUkFNRVdPUktTX0RJUltzZGs9bWFjb3N4
Kl0gPSAkKFdLX05PVF8kKFdLX0VNUFRZXyQoV0tfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVIpKSk7
Ci0KLVdLX09WRVJSSURFX0ZSQU1FV09SS1NfRElSID0gJChXS19PVkVSUklERV9GUkFNRVdPUktT
X0RJUl9VU0VfU1RBR0lOR19JTlNUQUxMX1BBVEhfJChVU0VfU1RBR0lOR19JTlNUQUxMX1BBVEgp
KTsKLVdLX09WRVJSSURFX0ZSQU1FV09SS1NfRElSX1VTRV9TVEFHSU5HX0lOU1RBTExfUEFUSF9Z
RVMgPSAkKFNZU1RFTV9MSUJSQVJZX0RJUikvU3RhZ2VkRnJhbWV3b3Jrcy9TYWZhcmk7Ci0KLVdL
X1FVT1RFRF9PVkVSUklERV9GUkFNRVdPUktTX0RJUiA9ICQoV0tfUVVPVEVEX09WRVJSSURFX0ZS
QU1FV09SS1NfRElSXyQoV0tfVVNFX09WRVJSSURFX0ZSQU1FV09SS1NfRElSKSk7Ci1XS19RVU9U
RURfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVJfWUVTID0gIiQoV0tfT1ZFUlJJREVfRlJBTUVXT1JL
U19ESVIpIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZp
Zy9SZWxlYXNlUHJvamVjdC54Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2Rl
L0NvbmZpZy9SZWxlYXNlUHJvamVjdC54Y2NvbmZpZwppbmRleCAxM2U5MTdmYmZhMmRkZjJkM2Vl
NTMxNTk4ZGMwZmIwZjJiNWJmODc2Li41MzQ5ZjBhMDRhZmM3ODM3Nzg3ODI4ZDNmNDI0YTg4OTg3
NGVjOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcv
UmVsZWFzZVByb2plY3QueGNjb25maWcKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNv
ZGUvQ29uZmlnL1JlbGVhc2VQcm9qZWN0LnhjY29uZmlnCkBAIC0zMCwxMiArMzAsMyBAQCBPVEhF
Ul9DRkxBR1MgPSAkKE9USEVSX0NGTEFHUykgLUROREVCVUc9MSAtV25vLXVudXNlZC12YXJpYWJs
ZQogCiAvLyBXaGVuIHdlIHN0cmlwIHdlIHdhbnQgdG8gc3RyaXAgYWxsIHN5bWJvbHMgaW4gcmVs
ZWFzZSwgYnV0IHNhdmUgZXh0ZXJuYWxzLgogU1RSSVBfU1RZTEUgPSBhbGwKLQotLy8gVXNlZCBi
eSBIRUFERVJfU0VBUkNIX1BBVEhTIGluIEdlbmVyYWwueGNjb25maWcKLVdFQkNPUkVfUFJJVkFU
RV9IRUFERVJTX0RJUiA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9XZWJDb3JlLmZyYW1ld29yay9Q
cml2YXRlSGVhZGVyczsKLQotT05MWV9BQ1RJVkVfQVJDSCA9IFlFUwotCi1TREtST09UID0gJChT
REtST09UXyQoVVNFX0lOVEVSTkFMX1NESykpOwotU0RLUk9PVF8gPSBtYWNvc3g7Ci1TREtST09U
X1lFUyA9IG1hY29zeC5pbnRlcm5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3hjb2RlL0NvbmZpZy9TdGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmlnIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcK
aW5kZXggZGQzMzI1NWE5NDQ3NzAyMGNmMTFmNzA1NWU0NGFlMjUyOGViOWY5Ny4uMzkyMmZhNTFk
NTJkNWZmMGYzMDQ2ZmY1MWMwYWQ2YTk2ZmI0OGJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlUYXJn
ZXQueGNjb25maWcKQEAgLTE2LDUgKzE2LDMgQEAgU1RSSVBfU1RZTEUgPSBkZWJ1Z2dpbmcKIAog
Ly8gTGV0IHRoZSB1c2VyIGluc3RhbGwgYnkgc3BlY2lmeWluZyB0aGUgJERTVFJPT1Qgd2l0aCB4
Y29kZWJ1aWxkCiBTS0lQX0lOU1RBTEwgPSBOTwotCi1PVEhFUl9MREZMQUdTID0gOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvTWFrZWZpbGUgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC94Y29kZS9NYWtlZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMmM4ZTg0OTNkZjI5NjhhYmU3NzFjNmQ2NzhlOGQyOWQzOWM5YjNhNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC94Y29kZS9NYWtlZmlsZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotU0NSSVBUU19Q
QVRIID89IC4uLy4uLy4uLy4uL1Rvb2xzL1NjcmlwdHMKLWluY2x1ZGUgLi4vLi4vLi4vLi4vTWFr
ZWZpbGUuc2hhcmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9T
YW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9ydW50ZXN0cy5zaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3J1bnRlc3RzLnNoCm9sZCBtb2RlIDEw
MDc1NQpuZXcgbW9kZSAxMDA2NDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0X3Rlc3Qu
Y2MKaW5kZXggNjFjMGQyZmZkNzZkMTgwNmFhMzU5NzlkOGFlMzY0MTA2NDhhYWExNS4uODcyNTk5
NDIxODUxNDA4ZTc2YWFiNmM1NjBiODE4OTI0NTliYmQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0X3Rlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtT
YW1wbGUvd2lkZ2V0X3Rlc3QuY2MKQEAgLTM2LDcgKzM2LDcgQEAKIC8vIFRoaXMgaXMgYSBzaW1w
bGUgdGVzdCBmaWxlIGZvciB0aGUgV2lkZ2V0IGNsYXNzIGluIHRoZSBXaWRnZXQuZnJhbWV3b3Jr
CiAKICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgogCiAjaW5jbHVkZSA8V2lkZ2V0L3dpZGdldC5oPgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9TY3JpcHRzL3J1bnRlc3RzLnNoIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2NyaXB0cy9ydW50ZXN0cy5zaApvbGQgbW9k
ZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC94Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3hjb2RlL1NjcmlwdHMvdmVyc2lvbmdlbmVyYXRlLnB5Cm9sZCBtb2RlIDEwMDY0NApu
ZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2Rl
L2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC94Y29kZS9ndGVzdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFmZjNmYmFmZWZi
YWFjM2I4MzgyNDhiMTdkNTY4NzZiM2Q1ZjZiZTguLmMxN2E3NzVkNjY3ODRmMjIxOThjZTdjYTQ4
N2Q5MjAyYzIzMWQyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2Rl
L2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QveGNvZGUvZ3Rlc3QueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzcsNyArMzcs
NiBAQAogLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBC
WEJ1aWxkRmlsZSBzZWN0aW9uICovCi0JCTFBMEE0QzQ1MTRCN0EzQjUwMDg5NTEzNSAvKiBKYXZh
U2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQTBBNEM0NDE0QjdBM0I1MDA4OTUxMzUgLyogSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrICovOyB9OwogCQkyMjRBMTJBMzBFOUVBRENDMDBCRDE3RkQgLyogZ3Rlc3QtdGVz
dC1wYXJ0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
MjRBMTJBMjBFOUVBRENDMDBCRDE3RkQgLyogZ3Rlc3QtdGVzdC1wYXJ0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkzQkY2RjJBMDBFNzlCNUFEMDAw
RjJFRUUgLyogZ3Rlc3QtdHlwZS11dGlsLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNCRjZGMjlGMEU3OUI1QUQwMDBGMkVFRSAv
KiBndGVzdC10eXBlLXV0aWwuaCAqLzsgfTsKIAkJM0JGNkYyQTUwRTc5QjYxNjAwMEYyRUVFIC8q
IGd0ZXN0LXR5cGVkLXRlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDNCRjZGMkE0MEU3OUI2MTYwMDBGMkVFRSAvKiBndGVzdC10eXBlZC10ZXN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwpAQCAtNDcsNyAr
NDYsNyBAQAogCQk0MDQ4ODQzQjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0RFMEUyRjc5OUIwMENG
NzY1OCAvKiBndGVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsg
fTsgfTsKIAkJNDA0ODg0M0MwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X3ByZWRfaW1wbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzREYwRTJG
Nzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X3ByZWRfaW1wbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNDA0ODg0M0QwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0
ZXN0X3Byb2QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQwNDg4M0UwMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcm9kLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQk0MDQ4ODQ1MDBFMkY3OTlCMDBDRjc2
NTggLyogUkVBRE1FIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MDQ4ODNGNjBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FICovOyB9OworCQk0MDQ4ODQ1
MDBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FLm1kIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNGNjBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1F
Lm1kICovOyB9OwogCQk0MDQ4ODRBMDBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3QtZGVhdGgtdGVz
dC1pbnRlcm5hbC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNFMjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtZGVhdGgt
dGVzdC1pbnRlcm5hbC5oICovOyB9OwogCQk0MDQ4ODRBMTBFMkY3QkU2MDBDRjc2NTggLyogZ3Rl
c3QtZmlsZXBhdGguaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRTMwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWZpbGVw
YXRoLmggKi87IH07CiAJCTQwNDg4NEEyMEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1pbnRlcm5h
bC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MDQ4ODNFNDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtaW50ZXJuYWwuaCAqLzsg
fTsKQEAgLTU1LDcgKzU0LDcgQEAKIAkJNDA0ODg0QTQwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0
LXN0cmluZy5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MDQ4ODNFNjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Qtc3RyaW5nLmgg
Ki87IH07CiAJCTQwNDg4NEFDMEUyRjdDRDkwMENGNzY1OCAvKiBDSEFOR0VTIGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODRBOTBFMkY3Q0Q5MDBD
Rjc2NTggLyogQ0hBTkdFUyAqLzsgfTsKIAkJNDA0ODg0QUQwRTJGN0NEOTAwQ0Y3NjU4IC8qIENP
TlRSSUJVVE9SUyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDA0ODg0QUEwRTJGN0NEOTAwQ0Y3NjU4IC8qIENPTlRSSUJVVE9SUyAqLzsgfTsKLQkJNDA0
ODg0QUUwRTJGN0NEOTAwQ0Y3NjU4IC8qIENPUFlJTkcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4NEFCMEUyRjdDRDkwMENGNzY1OCAvKiBDT1BZ
SU5HICovOyB9OworCQk0MDQ4ODRBRTBFMkY3Q0Q5MDBDRjc2NTggLyogTElDRU5TRSBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODg0QUIwRTJGN0NE
OTAwQ0Y3NjU4IC8qIExJQ0VOU0UgKi87IH07CiAJCTQwODk5RjNBMEZGQTcwRDQwMDBCMjlBRSAv
KiBndGVzdC1hbGwuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyMjRBMTJBMTBFOUVBREE3MDBCRDE3RkQgLyogZ3Rlc3QtYWxsLmNjICovOyB9OwogCQk0
MDg5OUY1MDBGRkE3MjgxMDAwQjI5QUUgLyogZ3Rlc3QtdHVwbGUuaCBpbiBDb3B5IEhlYWRlcnMg
SW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA4OTlGNEQwRkZB
NzI3MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggKi87IH07CiAJCTQwODk5RjUzMEZGQTcyQTAw
MDBCMjlBRSAvKiBndGVzdF91bml0dGVzdC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDNCMjM4QzEyMEU3RkUxM0MwMDg0NkUxMSAvKiBndGVzdF91bml0
dGVzdC5jYyAqLzsgfTsKQEAgLTc5LDYgKzc4LDE1IEBACiAJCTQ1MzlDOTM4MEVDMjgwRTIwMEE3
MEY0QyAvKiBndGVzdC1saW5rZWRfcHRyLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MzlDOTM1MEVDMjgwRTIwMEE3MEY0QyAv
KiBndGVzdC1saW5rZWRfcHRyLmggKi87IH07CiAJCTQ1MzlDOTM5MEVDMjgwRTIwMEE3MEY0QyAv
KiBndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTM5QzkzNjBFQzI4MEUyMDBBNzBG
NEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCAqLzsgfTsKIAkJNDUzOUM5M0EwRUMy
ODBFMjAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJu
YWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUzOUM5MzcwRUMyODBFMjAw
QTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwuaCAqLzsgfTsKKwkJNDU2N0M4MTgxMjY0RkY3MTAw
Nzc0MEJFIC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NTY3QzgxNzEyNjRGRjcxMDA3NzQwQkUgLyogZ3Rlc3QtcHJpbnRl
cnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCUUz
NUI1RTJGMUY2MTQ5ODQwMDU0NkYxRCAvKiBndGVzdC1wb3J0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVCNUUyQzFGNjE0OTg0MDA1NDZGMUQgLyog
Z3Rlc3QtcG9ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsg
fTsKKwkJRTM1QjVFMzAxRjYxNDk4NDAwNTQ2RjFEIC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVCNUUyRDFGNjE0OTg0
MDA1NDZGMUQgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQdWJsaWMsICk7IH07IH07CisJCUUzNUI1RTMxMUY2MTQ5ODQwMDU0NkYxRCAvKiBndGVzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1QjVFMkUx
RjYxNDk4NDAwNTQ2RjFEIC8qIGd0ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHVibGljLCApOyB9OyB9OworCQlFMzcxRTc5OTFGNjMxNTQyMDA1NUZFRTIgLyogZ3Rlc3QtcG9y
dC1hcmNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzVCNUUyNzFGNjE0OTQwMDA1NDZGMUQgLyogZ3Rlc3QtcG9ydC1hcmNoLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlFM0RGNTQzRDFGNjMxNUZCMDAz
ODdENjggLyogZ3Rlc3QtcG9ydC1hcmNoLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUI1RTI3MUY2MTQ5NDAwMDU0NkYxRCAv
KiBndGVzdC1wb3J0LWFyY2guaCAqLzsgfTsKKwkJRTNERjU0M0UxRjYzMTY5RTAwMzg3RDY4IC8q
IGd0ZXN0LXBvcnQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1QjVFMkMxRjYxNDk4NDAwNTQ2RjFEIC8qIGd0ZXN0LXBvcnQu
aCAqLzsgfTsKKwkJRTNERjU0M0YxRjYzMTZBMTAwMzg3RDY4IC8qIGd0ZXN0LXByaW50ZXJzLmgg
aW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzNUI1RTJEMUY2MTQ5ODQwMDU0NkYxRCAvKiBndGVzdC1wcmludGVycy5oICovOyB9Owor
CQlFM0RGNTQ0MDFGNjMxNkE1MDAzODdENjggLyogZ3Rlc3QuaCBpbiBDb3B5IEhlYWRlcnMgSW50
ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1QjVFMkUxRjYxNDk4
NDAwNTQ2RjFEIC8qIGd0ZXN0LmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTE4OCwx
MCArMTk2LDE0IEBACiAJCQkJNDUzOUM5MzgwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LWxpbmtl
ZF9wdHIuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8sCiAJCQkJNDUzOUM5MzkwRUMyODBF
MjAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmggaW4gQ29weSBIZWFkZXJz
IEludGVybmFsICovLAogCQkJCTQ1MzlDOTNBMEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJh
bS11dGlsLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLAorCQkJCUUzREY1NDNEMUY2MzE1
RkIwMDM4N0Q2OCAvKiBndGVzdC1wb3J0LWFyY2guaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwg
Ki8sCisJCQkJRTNERjU0M0UxRjYzMTY5RTAwMzg3RDY4IC8qIGd0ZXN0LXBvcnQuaCBpbiBDb3B5
IEhlYWRlcnMgSW50ZXJuYWwgKi8sCiAJCQkJNDA0ODg0QTMwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0
ZXN0LXBvcnQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8sCisJCQkJRTNERjU0M0YxRjYz
MTZBMTAwMzg3RDY4IC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFs
ICovLAogCQkJCTQwNDg4NEE0MEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1zdHJpbmcuaCBpbiBD
b3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8sCiAJCQkJNDA4OTlGNTAwRkZBNzI4MTAwMEIyOUFFIC8q
IGd0ZXN0LXR1cGxlLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLAogCQkJCTNCRjZGMkEw
MEU3OUI1QUQwMDBGMkVFRSAvKiBndGVzdC10eXBlLXV0aWwuaCBpbiBDb3B5IEhlYWRlcnMgSW50
ZXJuYWwgKi8sCisJCQkJRTNERjU0NDAxRjYzMTZBNTAwMzg3RDY4IC8qIGd0ZXN0LmggaW4gQ29w
eSBIZWFkZXJzIEludGVybmFsICovLAogCQkJKTsKIAkJCW5hbWUgPSAiQ29weSBIZWFkZXJzIElu
dGVybmFsIjsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAt
MTk5LDcgKzIxMSw2IEBACiAvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCQkxQTBBNEM0NDE0QjdB
M0I1MDA4OTUxMzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGgg
PSBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTIyNEExMkExMEU5RUFEQTcwMEJEMTdGRCAvKiBndGVzdC1hbGwuY2MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gImd0ZXN0LWFsbC5jYyI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIyNEExMkEyMEU5RUFEQ0MwMEJEMTdGRCAvKiBndGVzdC10
ZXN0LXBhcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC10ZXN0
LXBhcnQuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNCMjM4QzEyMEU3RkUxM0Mw
MDg0NkUxMSAvKiBndGVzdF91bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IGd0ZXN0X3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjE4LDExICsyMjksMTEgQEAKIAkJNDA0ODgzRTQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0
LWludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1pbnRl
cm5hbC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDA0ODgzRTUwRTJGNzk5QjAw
Q0Y3NjU4IC8qIGd0ZXN0LXBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Imd0ZXN0LXBvcnQuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwNDg4M0U2MEUy
Rjc5OUIwMENGNzY1OCAvKiBndGVzdC1zdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gImd0ZXN0LXN0cmluZy5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUg
PSBSRUFETUU7IHBhdGggPSAuLi9SRUFETUU7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
KwkJNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBSRUFETUUubWQ7IHBhdGggPSAuLi9SRUFETUUubWQ7IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKIAkJNDA0ODg0MEQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X21haW4uY2Mg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBndGVzdF9tYWluLmNjOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MDQ4ODRBOTBFMkY3Q0Q5MDBDRjc2NTggLyogQ0hB
TkdFUyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDSEFOR0VTOyBwYXRoID0gLi4vQ0hBTkdFUzsg
c291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk0MDQ4ODRBQTBFMkY3Q0Q5MDBDRjc2NTgg
LyogQ09OVFJJQlVUT1JTICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IENPTlRSSUJVVE9SUzsgcGF0
aCA9IC4uL0NPTlRSSUJVVE9SUzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQk0MDQ4
ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogQ09QWUlORyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBD
T1BZSU5HOyBwYXRoID0gLi4vQ09QWUlORzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9Owor
CQk0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogTElDRU5TRSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5h
bWUgPSBMSUNFTlNFOyBwYXRoID0gLi4vTElDRU5TRTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OwogCQk0MDg5OUY0MzBGRkE3MTg0MDAwQjI5QUUgLyogZ3Rlc3RfdW5pdHRlc3QtZnJhbWV3
b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29t
cGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSAiZ3Rl
c3RfdW5pdHRlc3QtZnJhbWV3b3JrIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJNDA4OTlGNEQwRkZBNzI3MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC10dXBsZS5oIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDA4OTlGQjMwRkZBNzU2NzAwMEIyOUFFIC8qIFN0YXRpY0xpYnJhcnlU
YXJnZXQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU3RhdGljTGli
cmFyeVRhcmdldC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzOSwx
MiArMjUwLDE2IEBACiAJCTQwRDRDREYzMEUzMEUwNzQwMDI5NDgwMSAvKiBHZW5lcmFsLnhjY29u
ZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEdlbmVyYWwueGNjb25maWc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwRDRDREY0MEUzMEUwNzQwMDI5NDgwMSAvKiBS
ZWxlYXNlUHJvamVjdC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBS
ZWxlYXNlUHJvamVjdC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDBE
NENGNTEwRTMwRjVFMjAwMjk0ODAxIC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0
LnhtbDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ0
QzQ4REZGMTRBNDA5OEYwMEEyRDlDNyAvKiBQcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBQcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZpZzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDUzOUM4RkYwRUMyN0Y2NDAwQTcwRjRDIC8q
IGd0ZXN0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZp
bGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGd0
ZXN0LmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDUz
OUM5MzMwRUMyODBBRTAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXRlc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXBhcmFtLXRlc3QuaCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ1MzlDOTM1MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1saW5rZWRf
cHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1saW5rZWRfcHRy
LmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NTM5QzkzNjBFQzI4MEUyMDBBNzBG
NEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gImd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NTM5QzkzNzBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0t
dXRpbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcGFyYW0tdXRp
bC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDU2N0M4MTcxMjY0RkY3MTAwNzc0
MEJFIC8qIGd0ZXN0LXByaW50ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
ICJndGVzdC1wcmludGVycy5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1QjVF
MjcxRjYxNDk0MDAwNTQ2RjFEIC8qIGd0ZXN0LXBvcnQtYXJjaC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcG9ydC1hcmNoLmgiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMzVCNUUyQzFGNjE0OTg0MDA1NDZGMUQgLyogZ3Rlc3QtcG9ydC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcG9ydC5oIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTM1QjVFMkQxRjYxNDk4NDAwNTQ2RjFEIC8qIGd0ZXN0LXByaW50
ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1wcmludGVycy5o
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1QjVFMkUxRjYxNDk4NDAwNTQ2RjFE
IC8qIGd0ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGd0ZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTI4
NCwxNCArMjk5LDYgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKLQkJNDQ0RDExNzIxNEEyNjI4RjAwOUZFQzNGIC8qIEZyYW1ld29ya3Mg
Ki8gPSB7Ci0JCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQkxQTBBNEM0NTE0QjdBM0I1MDA4
OTUxMzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCi0JCQkp
OwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07CiAvKiBF
bmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhHcm91
cCBzZWN0aW9uICovCkBAIC0zMTYsNyArMzIzLDYgQEAKIAkJCQkwOEZCNzdBQ0ZFODQxNzA3QzAy
QUFDMDcgLyogU291cmNlICovLAogCQkJCTQwRDRDRjRFMEUzMEY1RTIwMDI5NDgwMSAvKiBSZXNv
dXJjZXMgKi8sCiAJCQkJNDAzRUUzN0IwRTM3NzgyMjAwNEJEMUUyIC8qIFNjcmlwdHMgKi8sCi0J
CQkJMUEwQTRDNDYxNEI3QTNCQzAwODk1MTM1IC8qIEZyYW1ld29ya3MgKi8sCiAJCQkJMDM0NzY4
RERGRjM4QTQ1QTExREI5QzhCIC8qIFByb2R1Y3RzICovLAogCQkJKTsKIAkJCW5hbWUgPSBndGVz
dDsKQEAgLTMyNywyNCArMzMzLDE2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MDQ4ODRBOTBF
MkY3Q0Q5MDBDRjc2NTggLyogQ0hBTkdFUyAqLywKIAkJCQk0MDQ4ODRBQTBFMkY3Q0Q5MDBDRjc2
NTggLyogQ09OVFJJQlVUT1JTICovLAotCQkJCTQwNDg4NEFCMEUyRjdDRDkwMENGNzY1OCAvKiBD
T1BZSU5HICovLAogCQkJCTQwNDg4M0Q5MEUyRjc5OUIwMENGNzY1OCAvKiBpbmNsdWRlICovLAot
CQkJCTQwNDg4M0Y2MEUyRjc5OUIwMENGNzY1OCAvKiBSRUFETUUgKi8sCisJCQkJNDA0ODg0QUIw
RTJGN0NEOTAwQ0Y3NjU4IC8qIExJQ0VOU0UgKi8sCiAJCQkJNDA4OUEwMkYwRkZBQ0Y4NDAwMEIy
OUFFIC8qIHNhbXBsZXMgKi8sCiAJCQkJNDA0ODg0MDcwRTJGNzk5QjAwQ0Y3NjU4IC8qIHNyYyAq
LywKIAkJCQkzQjIzOEJGMDBFN0ZFMTNCMDA4NDZFMTEgLyogdGVzdCAqLywKKwkJCQk0MDQ4ODNG
NjBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FLm1kICovLAogCQkJKTsKIAkJCW5hbWUgPSBTb3Vy
Y2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQkxQTBBNEM0NjE0QjdBM0JD
MDA4OTUxMzUgLyogRnJhbWV3b3JrcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hp
bGRyZW4gPSAoCi0JCQkJMUEwQTRDNDQxNEI3QTNCNTAwODk1MTM1IC8qIEphdmFTY3JpcHRDb3Jl
LmZyYW1ld29yayAqLywKLQkJCSk7Ci0JCQluYW1lID0gRnJhbWV3b3JrczsKLQkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTNCMjM4QkYwMEU3RkUxM0IwMDg0NkUxMSAvKiB0ZXN0
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTM3OSw2ICsz
NzcsNyBAQAogCQkJCTQwNDg4M0RCMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1kZWF0aC10ZXN0
LmggKi8sCiAJCQkJNDA0ODgzREMwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LW1lc3NhZ2UuaCAq
LywKIAkJCQk0NTM5QzkzMzBFQzI4MEFFMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdGVzdC5oICov
LAorCQkJCTQ1NjdDODE3MTI2NEZGNzEwMDc3NDBCRSAvKiBndGVzdC1wcmludGVycy5oICovLAog
CQkJCTQwNDg4M0REMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zcGkuaCAqLywKIAkJCQkyMjRB
MTJBMjBFOUVBRENDMDBCRDE3RkQgLyogZ3Rlc3QtdGVzdC1wYXJ0LmggKi8sCiAJCQkJM0JGNkYy
QTQwRTc5QjYxNjAwMEYyRUVFIC8qIGd0ZXN0LXR5cGVkLXRlc3QuaCAqLywKQEAgLTM5MiwxMiAr
MzkxLDE0IEBACiAJCTQwNDg4M0UxMEUyRjc5OUIwMENGNzY1OCAvKiBpbnRlcm5hbCAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM1QjVFMkIxRjYxNDk4
NDAwNTQ2RjFEIC8qIGN1c3RvbSAqLywKIAkJCQk0MDQ4ODNFMjBFMkY3OTlCMDBDRjc2NTggLyog
Z3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5oICovLAogCQkJCTQwNDg4M0UzMEUyRjc5OUIwMENG
NzY1OCAvKiBndGVzdC1maWxlcGF0aC5oICovLAogCQkJCTQwNDg4M0U0MEUyRjc5OUIwMENGNzY1
OCAvKiBndGVzdC1pbnRlcm5hbC5oICovLAogCQkJCTQ1MzlDOTM1MEVDMjgwRTIwMEE3MEY0QyAv
KiBndGVzdC1saW5rZWRfcHRyLmggKi8sCiAJCQkJNDUzOUM5MzYwRUMyODBFMjAwQTcwRjRDIC8q
IGd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmggKi8sCiAJCQkJNDUzOUM5MzcwRUMyODBFMjAw
QTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwuaCAqLywKKwkJCQlFMzVCNUUyNzFGNjE0OTQwMDA1
NDZGMUQgLyogZ3Rlc3QtcG9ydC1hcmNoLmggKi8sCiAJCQkJNDA0ODgzRTUwRTJGNzk5QjAwQ0Y3
NjU4IC8qIGd0ZXN0LXBvcnQuaCAqLywKIAkJCQk0MDQ4ODNFNjBFMkY3OTlCMDBDRjc2NTggLyog
Z3Rlc3Qtc3RyaW5nLmggKi8sCiAJCQkJNDA4OTlGNEQwRkZBNzI3MTAwMEIyOUFFIC8qIGd0ZXN0
LXR1cGxlLmggKi8sCkBAIC00MzMsNyArNDM0LDYgQEAKIAkJCQk0MEQ0Q0RGMTBFMzBFMDc0MDAy
OTQ4MDEgLyogRGVidWdQcm9qZWN0LnhjY29uZmlnICovLAogCQkJCTQwRDRDREYyMEUzMEUwNzQw
MDI5NDgwMSAvKiBGcmFtZXdvcmtUYXJnZXQueGNjb25maWcgKi8sCiAJCQkJNDBENENERjMwRTMw
RTA3NDAwMjk0ODAxIC8qIEdlbmVyYWwueGNjb25maWcgKi8sCi0JCQkJNDRDNDhERkYxNEE0MDk4
RjAwQTJEOUM3IC8qIFByb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmlnICovLAogCQkJCTQwRDRDREY0
MEUzMEUwNzQwMDI5NDgwMSAvKiBSZWxlYXNlUHJvamVjdC54Y2NvbmZpZyAqLywKIAkJCQk0MDg5
OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLywK
IAkJCSk7CkBAIC00NDgsNiArNDQ4LDE2IEBACiAJCQlwYXRoID0gUmVzb3VyY2VzOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRTM1QjVFMkIxRjYxNDk4NDAwNTQ2RjFEIC8q
IGN1c3RvbSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
RTM1QjVFMkMxRjYxNDk4NDAwNTQ2RjFEIC8qIGd0ZXN0LXBvcnQuaCAqLywKKwkJCQlFMzVCNUUy
RDFGNjE0OTg0MDA1NDZGMUQgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLywKKwkJCQlFMzVCNUUyRTFG
NjE0OTg0MDA1NDZGMUQgLyogZ3Rlc3QuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gY3VzdG9tOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ1OCw5
ICs0NjgsMTQgQEAKIAkJCQk0MDQ4ODQzODBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtZGVhdGgt
dGVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0MzkwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0
ZXN0LW1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1MzlDOTM0MEVDMjgwQUUwMEE3MEY0
QyAvKiBndGVzdC1wYXJhbS10ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzcxRTc5OTFGNjMx
NTQyMDA1NUZFRTIgLyogZ3Rlc3QtcG9ydC1hcmNoLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzVC
NUUyRjFGNjE0OTg0MDA1NDZGMUQgLyogZ3Rlc3QtcG9ydC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTM1QjVFMzAxRjYxNDk4NDAwNTQ2RjFEIC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0NTY3QzgxODEyNjRGRjcxMDA3NzQwQkUgLyogZ3Rlc3QtcHJpbnRlcnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQwNDg4NDNBMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zcGkuaCBp
biBIZWFkZXJzICovLAogCQkJCTIyNEExMkEzMEU5RUFEQ0MwMEJEMTdGRCAvKiBndGVzdC10ZXN0
LXBhcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTNCRjZGMkE1MEU3OUI2MTYwMDBGMkVFRSAvKiBn
dGVzdC10eXBlZC10ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzVCNUUzMTFGNjE0OTg0MDA1
NDZGMUQgLyogZ3Rlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQwNDg4NDNCMEUyRjc5OUIwMENG
NzY1OCAvKiBndGVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0M0MwRTJGNzk5QjAwQ0Y3
NjU4IC8qIGd0ZXN0X3ByZWRfaW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0M0QwRTJG
Nzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X3Byb2QuaCBpbiBIZWFkZXJzICovLApAQCAtNTc4LDcgKzU5
Myw2IEBACiAJCQkJOEQwN0YyQkQwNDg2Q0M3QTAwN0NEMUQwIC8qIEhlYWRlcnMgKi8sCiAJCQkJ
NDA0ODg0QTUwRTJGN0MwNDAwQ0Y3NjU4IC8qIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKIAkJ
CQk4RDA3RjJCRjA0ODZDQzdBMDA3Q0QxRDAgLyogUmVzb3VyY2VzICovLAotCQkJCTQ0NEQxMTcy
MTRBMjYyOEYwMDlGRUMzRiAvKiBGcmFtZXdvcmtzICovLAogCQkJKTsKIAkJCWJ1aWxkUnVsZXMg
PSAoCiAJCQkpOwpAQCAtNTk5LDggKzYxMyw3IEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMw
NyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlhdHRy
aWJ1dGVzID0gewotCQkJCUxhc3RTd2lmdFVwZGF0ZUNoZWNrID0gMDcwMDsKLQkJCQlMYXN0VXBn
cmFkZUNoZWNrID0gMDYwMDsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDQ2MDsKIAkJCX07CiAJ
CQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNEZBREMyNDYwOEI0MTU2RDAwQUJFNTVFIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiZ3Rlc3QiICovOwogCQkJY29t
cGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMy4yIjsKQEAgLTYzOCw5ICs2NTEsOSBAQAogCQkJ
ZmlsZXMgPSAoCiAJCQkJNDA0ODg0QUMwRTJGN0NEOTAwQ0Y3NjU4IC8qIENIQU5HRVMgaW4gUmVz
b3VyY2VzICovLAogCQkJCTQwNDg4NEFEMEUyRjdDRDkwMENGNzY1OCAvKiBDT05UUklCVVRPUlMg
aW4gUmVzb3VyY2VzICovLAotCQkJCTQwNDg4NEFFMEUyRjdDRDkwMENGNzY1OCAvKiBDT1BZSU5H
IGluIFJlc291cmNlcyAqLywKIAkJCQk0MEM4NDk3ODEwMUEzNjU0MDA4MzY0MkEgLyogbGliZ3Rl
c3RfbWFpbi5hIGluIFJlc291cmNlcyAqLywKLQkJCQk0MDQ4ODQ1MDBFMkY3OTlCMDBDRjc2NTgg
LyogUkVBRE1FIGluIFJlc291cmNlcyAqLywKKwkJCQk0MDQ4ODRBRTBFMkY3Q0Q5MDBDRjc2NTgg
LyogTElDRU5TRSBpbiBSZXNvdXJjZXMgKi8sCisJCQkJNDA0ODg0NTAwRTJGNzk5QjAwQ0Y3NjU4
IC8qIFJFQURNRS5tZCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC04MTIsMjAgKzgyNSwyNSBAQAogCQkz
QjIzOEY2MDBFODI4QjU0MDA4NDZFMTEgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9J
TUFHRVMgPSBZRVM7CiAJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POwogCQkJCUdDQ19EWU5BTUlD
X05PX1BJQyA9IE5POwogCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19W
RVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKIAkJCQlQUk9EVUNU
X05BTUUgPSBDaGVjazsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUgPSBE
ZWJ1ZzsKIAkJfTsKIAkJM0IyMzhGNjEwRTgyOEI1NDAwODQ2RTExIC8qIFJlbGVhc2UgKi8gPSB7
CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CiAJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlF
UzsKIAkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKLQkJ
CQlHQ0NfRU5BQkxFX0ZJWF9BTkRfQ09OVElOVUUgPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNv
bS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CiAJCQkJUFJPRFVDVF9OQU1FID0gQ2hl
Y2s7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlaRVJPX0xJTksgPSBOTzsKIAkJCX07CiAJ
CQluYW1lID0gUmVsZWFzZTsKQEAgLTgzMywzNSArODUxLDQ5IEBACiAJCTQwODk5RjQ1MEZGQTcx
ODUwMDBCMjlBRSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21w
aWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9IC4uLzsKIAkJ
CQlQUk9EVUNUX05BTUUgPSAiZ3Rlc3RfdW5pdHRlc3QtZnJhbWV3b3JrIjsKKwkJCQlTREtST09U
ID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKIAkJNDA4OTlGNDYwRkZB
NzE4NTAwMEIyOUFFIC8qIFJlbGVhc2UgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUu
Y29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAuLi87
CiAJCQkJUFJPRFVDVF9OQU1FID0gImd0ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayI7CisJCQkJU0RL
Uk9PVCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKIAkJNDA4OUEw
MTUwRkZBQ0VGRDAwMEIyOUFFIC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFw
cGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKIAkJCQlQUk9EVUNUX05BTUUgPSAic2FtcGxl
MV91bml0dGVzdC1mcmFtZXdvcmsiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQl9OwogCQkJ
bmFtZSA9IERlYnVnOwogCQl9OwogCQk0MDg5QTAxNjBGRkFDRUZEMDAwQjI5QUUgLyogUmVsZWFz
ZSAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4x
XzA7CiAJCQkJUFJPRFVDVF9OQU1FID0gInNhbXBsZTFfdW5pdHRlc3QtZnJhbWV3b3JrIjsKKwkJ
CQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwogCQk0
MEM0NEFERjBFMzc5OEY0MDA4RkNDNTEgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9J
TUFHRVMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0u
Y2xhbmcuMV8wOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CiAJCQkJUFJP
RFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlUQVJHRVRfTkFN
RSA9IGd0ZXN0OwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKQEAgLTg2OSw3ICs5MDEsMTEgQEAK
IAkJNDBDNDRBRTAwRTM3OThGNDAwOEZDQzUxIC8qIFJlbGVhc2UgKi8gPSB7CiAJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9I
SURQSV9JTUFHRVMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJz
Lmxsdm0uY2xhbmcuMV8wOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CiAJ
CQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlUQVJH
RVRfTkFNRSA9IGd0ZXN0OwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwpAQCAtODc4LDkgKzkx
NCwxNiBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDQwODk5RkIzMEZGQTc1NjcwMDBCMjlBRSAvKiBTdGF0aWNMaWJyYXJ5
VGFyZ2V0LnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDT01CSU5FX0hJ
RFBJX0lNQUdFUyA9IFlFUzsKIAkJCQlHQ0NfSU5MSU5FU19BUkVfUFJJVkFURV9FWFRFUk4gPSBZ
RVM7CiAJCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBZRVM7CisJCQkJR0NDX1ZFUlNJ
T04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUhFQURFUl9TRUFS
Q0hfUEFUSFMgPSAoCisJCQkJCS4uLywKKwkJCQkJLi4vaW5jbHVkZS8sCisJCQkJKTsKIAkJCQlQ
Uk9EVUNUX05BTUUgPSBndGVzdDsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5h
bWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTg4OCw5ICs5MzEsMTYgQEAKIAkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0MDg5OUZCMzBG
RkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLzsKIAkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CiAJCQkJR0ND
X0lOTElORVNfQVJFX1BSSVZBVEVfRVhURVJOID0gWUVTOwogCQkJCUdDQ19TWU1CT0xTX1BSSVZB
VEVfRVhURVJOID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5s
bHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLi8sCisJ
CQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJ
U0RLUk9PVCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKQEAgLTg5
OCw3ICs5NDgsMTQgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNv
bmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGlj
TGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09N
QklORV9ISURQSV9JTUFHRVMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29t
cGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJ
CS4uLywKKwkJCQkJLi4vaW5jbHVkZS8sCisJCQkJKTsKIAkJCQlQUk9EVUNUX05BTUUgPSBndGVz
dF9tYWluOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwog
CQl9OwpAQCAtOTA2LDEzNCArOTYzLDcyIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDA4OTlGQjMwRkZBNzU2NzAwMEIy
OUFFIC8qIFN0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCUNPTUJJTkVfSElEUElfSU1BR0VTID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0g
Y29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BB
VEhTID0gKAorCQkJCQkuLi8sCisJCQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7CiAJCQkJUFJPRFVD
VF9OQU1FID0gZ3Rlc3RfbWFpbjsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5h
bWUgPSBSZWxlYXNlOwogCQl9OwogCQk0MEM4NDk4NTEwMUEzNjg1MDA4MzY0MkEgLyogRGVidWcg
Ki8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8w
OworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAuLi87CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rl
c3RfdW5pdHRlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gRGVi
dWc7CiAJCX07CiAJCTQwQzg0OTg2MTAxQTM2ODUwMDgzNjQyQSAvKiBSZWxlYXNlICovID0gewog
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlI
RUFERVJfU0VBUkNIX1BBVEhTID0gLi4vOwogCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0X3VuaXR0
ZXN0OworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJ
CX07CiAJCTQwQzg0OTk1MTAxQTM2QTYwMDgzNjQyQSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlHQ0NfVkVS
U0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CiAJCQkJUFJPRFVDVF9O
QU1FID0gInNhbXBsZTFfdW5pdHRlc3Qtc3RhdGljIjsKKwkJCQlTREtST09UID0gbWFjb3N4Owog
CQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKIAkJNDBDODQ5OTYxMDFBMzZBNjAwODM2NDJB
IC8qIFJlbGVhc2UgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxs
dm0uY2xhbmcuMV8wOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJzYW1wbGUxX3VuaXR0ZXN0LXN0YXRp
YyI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJ
fTsKLQkJNDRDNDhFMDQxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0JCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gNDRDNDhERkYxNEE0MDk4RjAwQTJEOUM3IC8qIFByb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmln
ICovOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCX07Ci0JCQluYW1lID0gUHJvZHVjdGlvbjsK
LQkJfTsKLQkJNDRDNDhFMDUxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0J
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJl
bmNlID0gNDBENENERjIwRTMwRTA3NDAwMjk0ODAxIC8qIEZyYW1ld29ya1RhcmdldC54Y2NvbmZp
ZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJRFlMSUJfQ09NUEFUSUJJTElUWV9WRVJT
SU9OID0gMTsKLQkJCQlEWUxJQl9DVVJSRU5UX1ZFUlNJT04gPSAxOwotCQkJCUlORk9QTElTVF9G
SUxFID0gUmVzb3VyY2VzL0luZm8ucGxpc3Q7Ci0JCQkJSU5GT1BMSVNUX1BSRUZJWF9IRUFERVIg
PSAiJChQUk9KRUNUX1RFTVBfRElSKS9WZXJzaW9uLmgiOwotCQkJCUlORk9QTElTVF9QUkVQUk9D
RVNTID0gWUVTOwotCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0OwotCQkJCVZFUlNJT05JTkdfU1lT
VEVNID0gImFwcGxlLWdlbmVyaWMiOwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9
OwotCQk0NEM0OEUwNjE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSA0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZp
ZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJR0NDX0lOTElORVNfQVJFX1BSSVZBVEVf
RVhURVJOID0gWUVTOwotCQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gWUVTOwotCQkJ
CVBST0RVQ1RfTkFNRSA9IGd0ZXN0OwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9
OwotCQk0NEM0OEUwNzE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSA0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZp
ZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3RfbWFp
bjsKLQkJCX07Ci0JCQluYW1lID0gUHJvZHVjdGlvbjsKLQkJfTsKLQkJNDRDNDhFMDgxNEE0MDlE
RTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gImd0ZXN0X3Vu
aXR0ZXN0LWZyYW1ld29yayI7Ci0JCQl9OwotCQkJbmFtZSA9IFByb2R1Y3Rpb247Ci0JCX07Ci0J
CTQ0QzQ4RTA5MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICovID0gewotCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCVBST0RVQ1Rf
TkFNRSA9IGd0ZXN0X3VuaXR0ZXN0OwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9
OwotCQk0NEM0OEUwQTE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlQUk9E
VUNUX05BTUUgPSAic2FtcGxlMV91bml0dGVzdC1mcmFtZXdvcmsiOwotCQkJfTsKLQkJCW5hbWUg
PSBQcm9kdWN0aW9uOwotCQl9OwotCQk0NEM0OEUwQjE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVj
dGlvbiAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0
aW5ncyA9IHsKLQkJCQlQUk9EVUNUX05BTUUgPSAic2FtcGxlMV91bml0dGVzdC1zdGF0aWMiOwot
CQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9OwotCQk0NEM0OEUwQzE0QTQwOURFMDBB
MkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOwotCQkJ
CURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOwotCQkJCUdDQ19F
TkFCTEVfRklYX0FORF9DT05USU5VRSA9IE5POwotCQkJCVBST0RVQ1RfTkFNRSA9IENoZWNrOwot
CQkJCVpFUk9fTElOSyA9IE5POwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9Owot
CQk0NEM0OEUwRDE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlQUk9EVUNU
X05BTUUgPSBndGVzdDsKLQkJCQlUQVJHRVRfTkFNRSA9IGd0ZXN0OwotCQkJfTsKLQkJCW5hbWUg
PSBQcm9kdWN0aW9uOwotCQl9OwogCQk0RkFEQzI0MzA4QjQxNTZEMDBBQkU1NUUgLyogRGVidWcg
Ki8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0
aW9uUmVmZXJlbmNlID0gNDBENENERjIwRTMwRTA3NDAwMjk0ODAxIC8qIEZyYW1ld29ya1Rhcmdl
dC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9J
TUFHRVMgPSBZRVM7CiAJCQkJRFlMSUJfQ09NUEFUSUJJTElUWV9WRVJTSU9OID0gMTsKIAkJCQlE
WUxJQl9DVVJSRU5UX1ZFUlNJT04gPSAxOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNv
bXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJ
CQkuLi8sCisJCQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSBS
ZXNvdXJjZXMvSW5mby5wbGlzdDsKIAkJCQlJTkZPUExJU1RfUFJFRklYX0hFQURFUiA9ICIkKFBS
T0pFQ1RfVEVNUF9ESVIpL1ZlcnNpb24uaCI7CiAJCQkJSU5GT1BMSVNUX1BSRVBST0NFU1MgPSBZ
RVM7CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJ
CQlWRVJTSU9OSU5HX1NZU1RFTSA9ICJhcHBsZS1nZW5lcmljIjsKIAkJCX07CiAJCQluYW1lID0g
RGVidWc7CkBAIC0xMDQyLDEyICsxMDM3LDE5IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDBENENERjIwRTMwRTA3NDAw
Mjk0ODAxIC8qIEZyYW1ld29ya1RhcmdldC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CiAJCQkJRFlMSUJfQ09NUEFUSUJJ
TElUWV9WRVJTSU9OID0gMTsKIAkJCQlEWUxJQl9DVVJSRU5UX1ZFUlNJT04gPSAxOworCQkJCUdD
Q19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFE
RVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLi8sCisJCQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7
CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSBSZXNvdXJjZXMvSW5mby5wbGlzdDsKIAkJCQlJTkZPUExJ
U1RfUFJFRklYX0hFQURFUiA9ICIkKFBST0pFQ1RfVEVNUF9ESVIpL1ZlcnNpb24uaCI7CiAJCQkJ
SU5GT1BMSVNUX1BSRVBST0NFU1MgPSBZRVM7CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJ
CQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlWRVJTSU9OSU5HX1NZU1RFTSA9ICJhcHBsZS1nZW5l
cmljIjsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKQEAgLTEwNzQsMTAwICsxMDc2LDkwIEBA
CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAogCQkJCTNCMjM4RjYwMEU4MjhCNTQwMDg0NkUx
MSAvKiBEZWJ1ZyAqLywKIAkJCQkzQjIzOEY2MTBFODI4QjU0MDA4NDZFMTEgLyogUmVsZWFzZSAq
LywKLQkJCQk0NEM0OEUwQzE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLywKIAkJCSk7
CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmln
dXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0g
UmVsZWFzZTsKIAkJfTsKIAkJNDA4OTlGNEEwRkZBNzFCQzAwMEIyOUFFIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJndGVzdF91bml0dGVzdC1mcmFtZXdv
cmsiICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmln
dXJhdGlvbnMgPSAoCiAJCQkJNDA4OTlGNDUwRkZBNzE4NTAwMEIyOUFFIC8qIERlYnVnICovLAog
CQkJCTQwODk5RjQ2MEZGQTcxODUwMDBCMjlBRSAvKiBSZWxlYXNlICovLAotCQkJCTQ0QzQ4RTA4
MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICovLAogCQkJKTsKIAkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFBy
b2R1Y3Rpb247CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwogCQl9Owog
CQk0MDg5QTAyNDBGRkFDRjAxMDAwQjI5QUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhOYXRpdmVUYXJnZXQgInNhbXBsZTFfdW5pdHRlc3QtZnJhbWV3b3JrIiAqLyA9IHsKIAkJ
CWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAog
CQkJCTQwODlBMDE1MEZGQUNFRkQwMDBCMjlBRSAvKiBEZWJ1ZyAqLywKIAkJCQk0MDg5QTAxNjBG
RkFDRUZEMDAwQjI5QUUgLyogUmVsZWFzZSAqLywKLQkJCQk0NEM0OEUwQTE0QTQwOURFMDBBMkQ5
QzcgLyogUHJvZHVjdGlvbiAqLywKIAkJCSk7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlz
aWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQkJ
ZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKIAkJfTsKIAkJNDBDNDRBRTQwRTM3
OTkwNTAwOEZDQzUxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRl
VGFyZ2V0ICJWZXJzaW9uIEluZm8iICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlz
dDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCiAJCQkJNDBDNDRBREYwRTM3OThGNDAwOEZD
QzUxIC8qIERlYnVnICovLAogCQkJCTQwQzQ0QUUwMEUzNzk4RjQwMDhGQ0M1MSAvKiBSZWxlYXNl
ICovLAotCQkJCTQ0QzQ4RTBEMTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICovLAogCQkJ
KTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUg
PSBSZWxlYXNlOwogCQl9OwogCQk0MEM4NDkwMjEwMUEyMTJFMDA4MzY0MkEgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0LXN0YXRpYyIgKi8gPSB7
CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKIAkJCQk0MEM4NDhGQjEwMUEyMDlEMDA4MzY0MkEgLyogRGVidWcgKi8sCiAJCQkJNDBDODQ4
RkMxMDFBMjA5RDAwODM2NDJBIC8qIFJlbGVhc2UgKi8sCi0JCQkJNDRDNDhFMDYxNEE0MDlERTAw
QTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8sCiAJCQkpOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25J
c1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsK
KwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CiAJCX07CiAJCTQwQzg0OTEy
MTAxQTIxRDIwMDgzNjQyQSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2
ZVRhcmdldCAiZ3Rlc3RfbWFpbi1zdGF0aWMiICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0
aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCiAJCQkJNDBDODQ5MEUxMDFBMjE3
RjAwODM2NDJBIC8qIERlYnVnICovLAogCQkJCTQwQzg0OTBGMTAxQTIxN0YwMDgzNjQyQSAvKiBS
ZWxlYXNlICovLAotCQkJCTQ0QzQ4RTA3MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICov
LAogCQkJKTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1
bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCQlkZWZhdWx0Q29uZmlndXJhdGlv
bk5hbWUgPSBSZWxlYXNlOwogCQl9OwogCQk0MEM4NDk4NDEwMUEzNjg1MDA4MzY0MkEgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0X3VuaXR0ZXN0
LXN0YXRpYyIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRD
b25maWd1cmF0aW9ucyA9ICgKIAkJCQk0MEM4NDk4NTEwMUEzNjg1MDA4MzY0MkEgLyogRGVidWcg
Ki8sCiAJCQkJNDBDODQ5ODYxMDFBMzY4NTAwODM2NDJBIC8qIFJlbGVhc2UgKi8sCi0JCQkJNDRD
NDhFMDkxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8sCiAJCQkpOwogCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1l
ID0gUHJvZHVjdGlvbjsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CiAJ
CX07CiAJCTQwQzg0OTk0MTAxQTM2QTYwMDgzNjQyQSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAic2FtcGxlMV91bml0dGVzdC1zdGF0aWMiICovID0gewog
CQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAo
CiAJCQkJNDBDODQ5OTUxMDFBMzZBNjAwODM2NDJBIC8qIERlYnVnICovLAogCQkJCTQwQzg0OTk2
MTAxQTM2QTYwMDgzNjQyQSAvKiBSZWxlYXNlICovLAotCQkJCTQ0QzQ4RTBCMTRBNDA5REUwMEEy
RDlDNyAvKiBQcm9kdWN0aW9uICovLAogCQkJKTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNW
aXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJ
CQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwogCQl9OwogCQk0RkFEQzI0MjA4
QjQxNTZEMDBBQkU1NUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVU
YXJnZXQgImd0ZXN0LWZyYW1ld29yayIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25M
aXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKIAkJCQk0RkFEQzI0MzA4QjQxNTZEMDBB
QkU1NUUgLyogRGVidWcgKi8sCiAJCQkJNEZBREMyNDQwOEI0MTU2RDAwQUJFNTVFIC8qIFJlbGVh
c2UgKi8sCi0JCQkJNDRDNDhFMDUxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8sCiAJ
CQkpOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFt
ZSA9IFJlbGVhc2U7CiAJCX07CiAJCTRGQURDMjQ2MDhCNDE1NkQwMEFCRTU1RSAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgImd0ZXN0IiAqLyA9IHsKIAkJCWlzYSA9
IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAogCQkJCTRG
QURDMjQ3MDhCNDE1NkQwMEFCRTU1RSAvKiBEZWJ1ZyAqLywKIAkJCQk0RkFEQzI0ODA4QjQxNTZE
MDBBQkU1NUUgLyogUmVsZWFzZSAqLywKLQkJCQk0NEM0OEUwNDE0QTQwOURFMDBBMkQ5QzcgLyog
UHJvZHVjdGlvbiAqLywKIAkJCSk7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9
IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKIAkJfTsKIC8qIEVuZCBYQ0NvbmZpZ3VyYXRp
b25MaXN0IHNlY3Rpb24gKi8KIAl9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDA3YzJhNTJjMzIwNmY3ODNiOGU1OTI4NmQzZjJmNDA0NDUwZGQ4
MDAuLmUzMzNkNDExYmYyZTYxMzlhNzM3Y2Q0OGQ3NDY1ZWYwMGY2NjkxNWYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxNy0wOS0wOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAg
ICAgICBVcGRhdGUgZ29vZ2xldGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTW92ZWQgd3RmIGhlYWRlciBpbmNsdXNpb24gZnJvbSBndGVzdC1wb3J0
LmggdG8gY29uZmlnLmguCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvbmZpZy5oOgorCiAy
MDE3LTA5LTA3ICBNYXR0aGV3IFN0ZXdhcnQgIDxtYXR0aGV3X3Jfc3Rld2FydEBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIExpdmUgUExUIGltcGxlbWVudGVkIHdpdGggV2ViRHJpdmVyCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb25maWcuaAppbmRleCBmZTQzZjczNWIzY2U3NGQ1OTIyNThlYzhiZGMxOTU3NjA4YzhkYWM4
Li5hYjQ4MWU0MTE4NjhmNzkzMjExMzc1MTY3YzZkZDQyMDY2NTQ5NGM4IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29u
ZmlnLmgKQEAgLTczLDYgKzczLDExIEBACiAKICNpZmRlZiBfX2NwbHVzcGx1cwogI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3Rm
L0V4cG9ydE1hY3Jvcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNFeHBvcnRNYWNyb3MuaD4KKyNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAj
ZW5kaWYKIAogI2lmZGVmIF9fY2xhbmdfXwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348556</attachid>
            <date>2018-08-30 14:53:22 -0700</date>
            <delta_ts>2018-08-30 15:57:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175722-20180830145320.patch</filename>
            <type>text/plain</type>
            <size>2569233</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9DaGFuZ2VMb2cKaW5kZXggZmI1MTE0ZTAz
ZmM3ZTUxZjg2N2YzOWFiZjhkYjIwNDA1YWRhOWJiYS4uZDdmZWEzMzU2ZjJmMTBlMTA3Yjc2MWIx
ODFiYTQ0N2UwNjM5NWQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE4
LTA4LTMwICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAg
ICBVcGRhdGUgZ29vZ2xldGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc1NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBndGVzdC86CisgICAgICAgIFVwZGF0ZSB0byBsYXRlc3QgKHBvc3QtMS44
LjApLgorCiAyMDE4LTA3LTE3ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlh
LmNvbT4KIAogICAgICAgICBbV1BFXVtHVEtdIFVwZGF0ZSB4ZGdtaW1lCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Zjk1MGNhOTU1OWRmMzExOWI5OTg4MDEwODAzZjU0OWRiZWRiYjU1MS4uZDhiODZkZjZjMzA1ZWI5
ZmRhMDY2N2Y4YzQ5ODk5ZTA3MTY5OTY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDE4LTA4LTMwICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAg
ICAgICBVcGRhdGUgZ29vZ2xldGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmg6CisgICAgICAgIEFk
ZCBtaXNzaW5nICNpbmNsdWRlLgorCiAyMDE4LTA4LTMwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bRmxvYXRpbmddIEJsb2NrIGZvcm1hdHRpbmcgY29u
dGV4dCByb290cyBhdm9pZCBmbG9hdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9DSEFOR0VTIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ0hBTkdFUwppbmRleCBlNTc0
NDE1ZWU2ZWQ4MWNmNDkyYmUyOTUzNDZjNDQ0ZWViMTBjZTg4Li4wNTUyMTMyNDIxMmM5MTI4N2Q5
MjQ0ZDQ0YmFiMzA2ZGI2NjRiYWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9DSEFOR0VTCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NIQU5HRVMKQEAgLTEsMyAr
MSw2MiBAQAorQ2hhbmdlcyBmb3IgMS43LjA6CisKKyogTmV3IGZlYXR1cmU6IGRlYXRoIHRlc3Rz
IGFyZSBzdXBwb3J0ZWQgb24gT3BlbkJTRCBhbmQgaW4gaU9TCisgIHNpbXVsYXRvciBub3cuCisq
IE5ldyBmZWF0dXJlOiBHb29nbGUgVGVzdCBub3cgaW1wbGVtZW50cyBhIHByb3RvY29sIHRvIGFs
bG93CisgIGEgdGVzdCBydW5uZXIgdG8gZGV0ZWN0IHRoYXQgYSB0ZXN0IHByb2dyYW0gaGFzIGV4
aXRlZAorICBwcmVtYXR1cmVseSBhbmQgcmVwb3J0IGl0IGFzIGEgZmFpbHVyZSAoYmVmb3JlIGl0
IHdvdWxkIGJlCisgIGZhbHNlbHkgcmVwb3J0ZWQgYXMgYSBzdWNjZXNzIGlmIHRoZSBleGl0IGNv
ZGUgaXMgMCkuCisqIE5ldyBmZWF0dXJlOiBUZXN0OjpSZWNvcmRQcm9wZXJ0eSgpIGNhbiBub3cg
YmUgdXNlZCBvdXRzaWRlIG9mIHRoZQorICBsaWZlc3BhbiBvZiBhIHRlc3QgbWV0aG9kLCBpbiB3
aGljaCBjYXNlIGl0IHdpbGwgYmUgYXR0cmlidXRlZCB0bworICB0aGUgY3VycmVudCB0ZXN0IGNh
c2Ugb3IgdGhlIHRlc3QgcHJvZ3JhbSBpbiB0aGUgWE1MIHJlcG9ydC4KKyogTmV3IGZlYXR1cmUg
KHBvdGVudGlhbGx5IGJyZWFraW5nKTogLS1ndGVzdF9saXN0X3Rlc3RzIG5vdyBwcmludHMKKyAg
dGhlIHR5cGUgcGFyYW1ldGVycyBhbmQgdmFsdWUgcGFyYW1ldGVycyBmb3IgZWFjaCB0ZXN0Lgor
KiBJbXByb3ZlbWVudDogY2hhciBwb2ludGVycyBhbmQgY2hhciBhcnJheXMgYXJlIG5vdyBlc2Nh
cGVkIHByb3Blcmx5CisgIGluIGZhaWx1cmUgbWVzc2FnZXMuCisqIEltcHJvdmVtZW50OiBmYWls
dXJlIHN1bW1hcnkgaW4gWE1MIHJlcG9ydHMgbm93IGluY2x1ZGVzIGZpbGUgYW5kCisgIGxpbmUg
aW5mb3JtYXRpb24uCisqIEltcHJvdmVtZW50OiB0aGUgPHRlc3RzdWl0ZXM+IFhNTCBlbGVtZW50
IG5vdyBoYXMgYSB0aW1lc3RhbXAgYXR0cmlidXRlLgorKiBJbXByb3ZlbWVudDogV2hlbiAtLWd0
ZXN0X2ZpbHRlciBpcyBzcGVjaWZpZWQsIFhNTCByZXBvcnQgbm93IGRvZXNuJ3QKKyAgY29udGFp
biBpbmZvcm1hdGlvbiBhYm91dCB0ZXN0cyB0aGF0IGFyZSBmaWx0ZXJlZCBvdXQuCisqIEZpeGVk
IHRoZSBidWcgd2hlcmUgbG9uZyAtLWd0ZXN0X2ZpbHRlciBmbGFnIHZhbHVlcyBhcmUgdHJ1bmNh
dGVkIGluCisgIGRlYXRoIHRlc3RzLgorKiBQb3RlbnRpYWxseSBicmVha2luZyBjaGFuZ2U6IFJV
Tl9BTExfVEVTVFMoKSBpcyBub3cgaW1wbGVtZW50ZWQgYXMgYQorICBmdW5jdGlvbiBpbnN0ZWFk
IG9mIGEgbWFjcm8gaW4gb3JkZXIgdG8gd29yayBiZXR0ZXIgd2l0aCBDbGFuZy4KKyogQ29tcGF0
aWJpbGl0eSBmaXhlcyB3aXRoIEMrKyAxMSBhbmQgdmFyaW91cyBwbGF0Zm9ybXMuCisqIEJ1Zy93
YXJuaW5nIGZpeGVzLgorCitDaGFuZ2VzIGZvciAxLjYuMDoKKworKiBOZXcgZmVhdHVyZTogQURE
X0ZBSUxVUkVfQVQoKSBmb3IgcmVwb3J0aW5nIGEgdGVzdCBmYWlsdXJlIGF0IHRoZQorICBnaXZl
biBzb3VyY2UgbG9jYXRpb24gLS0gdXNlZnVsIGZvciB3cml0aW5nIHRlc3RpbmcgdXRpbGl0aWVz
LgorKiBOZXcgZmVhdHVyZTogdGhlIHVuaXZlcnNhbCB2YWx1ZSBwcmludGVyIGlzIG1vdmVkIGZy
b20gR29vZ2xlIE1vY2sKKyAgdG8gR29vZ2xlIFRlc3QuCisqIE5ldyBmZWF0dXJlOiB0eXBlIHBh
cmFtZXRlcnMgYW5kIHZhbHVlIHBhcmFtZXRlcnMgYXJlIHJlcG9ydGVkIGluCisgIHRoZSBYTUwg
cmVwb3J0IG5vdy4KKyogQSBndGVzdF9kaXNhYmxlX3B0aHJlYWRzIENNYWtlIG9wdGlvbi4KKyog
Q29sb3JlZCBvdXRwdXQgd29ya3MgaW4gR05VIFNjcmVlbiBzZXNzaW9ucyBub3cuCisqIFBhcmFt
ZXRlcnMgb2YgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgbm93IHByaW50ZWQgaW4gdGhl
CisgIHRleHR1YWwgb3V0cHV0LgorKiBGYWlsdXJlcyBmcm9tIGFkIGhvYyB0ZXN0IGFzc2VydGlv
bnMgcnVuIGJlZm9yZSBSVU5fQUxMX1RFU1RTKCkgYXJlCisgIG5vdyBjb3JyZWN0bHkgcmVwb3J0
ZWQuCisqIEFyZ3VtZW50cyBvZiBBU1NFUlRfWFkgYW5kIEVYUEVDVF9YWSBubyBsb25nZXIgbmVl
ZCB0byBzdXBwb3J0IDw8IHRvCisgIG9zdHJlYW0uCisqIE1vcmUgY29tcGxldGUgaGFuZGxpbmcg
b2YgZXhjZXB0aW9ucy4KKyogR1RFU1RfQVNTRVJUX1hZIGNhbiBiZSB1c2VkIGluc3RlYWQgb2Yg
QVNTRVJUX1hZIGluIGNhc2UgdGhlIGxhdHRlcgorICBuYW1lIGlzIGFscmVhZHkgdXNlZCBieSBh
bm90aGVyIGxpYnJhcnkuCisqIC0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucyBpcyBub3cgdHJ1ZSBi
eSBkZWZhdWx0LCBhbGxvd2luZyBhIHRlc3QKKyAgcHJvZ3JhbSB0byBjb250aW51ZSBhZnRlciBh
biBleGNlcHRpb24gaXMgdGhyb3duLgorKiBWYWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QgZml4dHVy
ZXMgY2FuIG5vdyBkZXJpdmUgZnJvbSBUZXN0IGFuZAorICBXaXRoUGFyYW1JbnRlcmZhY2U8VD4g
c2VwYXJhdGVseSwgZWFzaW5nIGNvbnZlcnNpb24gb2YgbGVnYWN5IHRlc3RzLgorKiBEZWF0aCB0
ZXN0IG1lc3NhZ2VzIGFyZSBjbGVhcmx5IG1hcmtlZCB0byBtYWtlIHRoZW0gbW9yZQorICBkaXN0
aW5ndWlzaGFibGUgZnJvbSBvdGhlciBtZXNzYWdlcy4KKyogQ29tcGF0aWJpbGl0eSBmaXhlcyBm
b3IgQW5kcm9pZCwgR29vZ2xlIE5hdGl2ZSBDbGllbnQsIE1pbkdXLCBIUCBVWCwKKyAgUG93ZXJQ
QywgTHVjaWQgYXV0b3Rvb2xzLCBsaWJDU3RkLCBTdW4gQysrLCBCb3JsYW5kIEMrKyBCdWlsZGVy
IChDb2RlIEdlYXIpLAorICBJQk0gWEwgQysrIChWaXN1YWwgQWdlIEMrKyksIGFuZCBDKysweC4K
KyogQnVnIGZpeGVzIGFuZCBpbXBsZW1lbnRhdGlvbiBjbGVhbi11cHMuCisqIFBvdGVudGlhbGx5
IGluY29tcGF0aWJsZSBjaGFuZ2VzOiBkaXNhYmxlcyB0aGUgaGFybWZ1bCAnbWFrZSBpbnN0YWxs
JworICBjb21tYW5kIGluIGF1dG90b29scy4KKwogQ2hhbmdlcyBmb3IgMS41LjA6CiAKICAqIE5l
dyBmZWF0dXJlOiBhc3NlcnRpb25zIGNhbiBiZSBzYWZlbHkgY2FsbGVkIGluIG11bHRpcGxlIHRo
cmVhZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ01ha2VMaXN0cy50eHQKb2xkIG1vZGUgMTAwNzU1
Cm5ldyBtb2RlIDEwMDY0NAppbmRleCBkZDEwMDVmZTZlNTdjNTIwYmU5N2Y0ZjgwNTJiNDI2ZjBm
ZTA1NjhmLi45ZWU3OTQwOGMyNzdjNGE5NWRiZDNjYzRhYjZmN2VjYzM3YjlhYWRiCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L0NNYWtlTGlzdHMudHh0CkBAIC0xLDU3ICsxLDMzMSBAQAotIyBUaGlzIGlzIGFu
IGFsdGVybmF0aXZlIENNYWtlTGlzdHMudHh0IHRvIHRoZSBleHBlcmltZW50YWwgb25lCi0jIHNo
aXBwZWQgd2l0aCB0aGUgb3JpZ2luYWwgcGFja2FnZS4gSXQgYnVpbGRzIG9ubHkgdGhlIGVzc2Vu
dGlhbAotIyBmb3Igb3VyIHRlc3RzLiBUaGUgV2ViS2l0IHZlcnNpb24gb2YgZ3Rlc3QgbmVlZHMg
YWNjZXNzIHRvIHNvbWUKLSMgaGVhZGVycyBmcm9tIFdURiBhbmQgSlNDIGZvciBjb25maWd1cmF0
aW9uLgotCi1zZXQoR1RFU1RfRElSICIke1RISVJEUEFSVFlfRElSfS9ndGVzdCIpCi0KLXNldChH
VEVTVF9JTkNMVURFX0RJUkVDVE9SSUVTCi0gICAgIiR7R1RFU1RfRElSfSIKLSAgICAiJHtHVEVT
VF9ESVJ9L2luY2x1ZGUiCi0gICAgIiR7Rk9SV0FSRElOR19IRUFERVJTX0RJUn0iCi0pCi0KLXNl
dChHVEVTVF9TT1VSQ0VTCi0gICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC5jYwotICAgICR7R1RF
U1RfRElSfS9zcmMvZ3Rlc3QtZGVhdGgtdGVzdC5jYwotICAgICR7R1RFU1RfRElSfS9zcmMvZ3Rl
c3QtZmlsZXBhdGguY2MKLSAgICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0X21haW4uY2MKLSAgICAk
e0dURVNUX0RJUn0vc3JjL2d0ZXN0LXBvcnQuY2MKLSAgICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0
LXRlc3QtcGFydC5jYwotICAgICR7R1RFU1RfRElSfS9zcmMvZ3Rlc3QtdHlwZWQtdGVzdC5jYwot
KQotCi1pZiAoV0lOMzIpCi0gICAgIyBNU1ZDIDIwMTUgcmVxdWlyZXMgdGhpcyBkZWZpbml0aW9u
IGZvciBJTlRNQVhfTUFYIHRvIGJlIGRlZmluZWQuCi0gICAgYWRkX2RlZmluaXRpb25zKC1EX19T
VERDX0xJTUlUX01BQ1JPUyAtREdURVNUX0NSRUFURV9TSEFSRURfTElCUkFSWT0wKQotICAgICMg
Z3Rlc3QgY3Jhc2hlcyBvbiBleGl0IG9uIFdpbmRvd3MgaWYgaXQgaXMgYSBkbGwuCi0gICAgYWRk
X2xpYnJhcnkoZ3Rlc3QgU1RBVElDICR7R1RFU1RfU09VUkNFU30pCi1lbHNlICgpCi0gICAgYWRk
X2RlZmluaXRpb25zKC1ER1RFU1RfQ1JFQVRFX1NIQVJFRF9MSUJSQVJZPTEpCi0gICAgYWRkX2xp
YnJhcnkoZ3Rlc3QgU0hBUkVEICR7R1RFU1RfU09VUkNFU30pCi1lbmRpZiAoKQotCi1pbmNsdWRl
X2RpcmVjdG9yaWVzKCR7R1RFU1RfSU5DTFVERV9ESVJFQ1RPUklFU30pCi1hZGRfZGVmaW5pdGlv
bnMoLURHVEVTVF9IQVNfUlRUST0wKQotCi1XRUJLSVRfQUREX1RBUkdFVF9DWFhfRkxBR1MoZ3Rl
c3QgLVduby11bmRlZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1Xbm8tc3Ry
aW5nb3AtdHJ1bmNhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1Xbm8t
c3VnZ2VzdC1hdHRyaWJ1dGU9Zm9ybWF0KQotCi0jIEZJWE1FOiBUaGlzIHdvcmtzIGFyb3VuZCBj
b21wYXRpYmlsaXR5IHByb2JsZW1zIGluIHRoZSBvbGQgdmVyc2lvbiBvZiB0aGUgdGhpcmQtcGFy
eQotIyBnb29nbGV0ZXN0IHNvdXJjZSBjb2RlIGNoZWNrb3V0LiBJdCBzaG91bGQgYmUgcmVtb3Zl
ZCBvbmNlIHdlIHVwZ3JhZGUgdG8gYSBuZXdlciB2ZXJzaW9uLgotaWYgKENPTVBJTEVSX0lTX0NM
QU5HKQotICAgIGFkZF9kZWZpbml0aW9ucygtREdURVNUX0hBU19UUjFfVFVQTEU9MCkKLWVuZGlm
ICgpCi0KLXRhcmdldF9saW5rX2xpYnJhcmllcyhndGVzdAotICAgIFdURgotKQotYWRkX2RlcGVu
ZGVuY2llcyhndGVzdCBKYXZhU2NyaXB0Q29yZVByaXZhdGVGb3J3YXJkaW5nSGVhZGVycykKLQot
aWYgKENNQUtFX1VTRV9QVEhSRUFEU19JTklUKQotICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhn
dGVzdCAke0NNQUtFX1RIUkVBRF9MSUJTX0lOSVR9KQotICAgIGFkZF9kZWZpbml0aW9ucygtREdU
RVNUX0hBU19QVEhSRUFEPTEpCi1lbHNlICgpCi0gICAgYWRkX2RlZmluaXRpb25zKC1ER1RFU1Rf
SEFTX1BUSFJFQUQ9MCkKLWVuZGlmICgpCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQ01ha2UgYnVpbGQg
c2NyaXB0IGZvciBHb29nbGUgVGVzdC4KKyMKKyMgVG8gcnVuIHRoZSB0ZXN0cyBmb3IgR29vZ2xl
IFRlc3QgaXRzZWxmIG9uIExpbnV4LCB1c2UgJ21ha2UgdGVzdCcgb3IKKyMgY3Rlc3QuICBZb3Ug
Y2FuIHNlbGVjdCB3aGljaCB0ZXN0cyB0byBydW4gdXNpbmcgJ2N0ZXN0IC1SIHJlZ2V4Jy4KKyMg
Rm9yIG1vcmUgb3B0aW9ucywgcnVuICdjdGVzdCAtLWhlbHAnLgorCisjIFdoZW4gb3RoZXIgbGli
cmFyaWVzIGFyZSB1c2luZyBhIHNoYXJlZCB2ZXJzaW9uIG9mIHJ1bnRpbWUgbGlicmFyaWVzLAor
IyBHb29nbGUgVGVzdCBhbHNvIGhhcyB0byB1c2Ugb25lLgorb3B0aW9uKAorICBndGVzdF9mb3Jj
ZV9zaGFyZWRfY3J0CisgICJVc2Ugc2hhcmVkIChETEwpIHJ1bi10aW1lIGxpYiBldmVuIHdoZW4g
R29vZ2xlIFRlc3QgaXMgYnVpbHQgYXMgc3RhdGljIGxpYi4iCisgIE9GRikKKworb3B0aW9uKGd0
ZXN0X2J1aWxkX3Rlc3RzICJCdWlsZCBhbGwgb2YgZ3Rlc3QncyBvd24gdGVzdHMuIiBPRkYpCisK
K29wdGlvbihndGVzdF9idWlsZF9zYW1wbGVzICJCdWlsZCBndGVzdCdzIHNhbXBsZSBwcm9ncmFt
cy4iIE9GRikKKworb3B0aW9uKGd0ZXN0X2Rpc2FibGVfcHRocmVhZHMgIkRpc2FibGUgdXNlcyBv
ZiBwdGhyZWFkcyBpbiBndGVzdC4iIE9GRikKKworb3B0aW9uKAorICBndGVzdF9oaWRlX2ludGVy
bmFsX3N5bWJvbHMKKyAgIkJ1aWxkIGd0ZXN0IHdpdGggaW50ZXJuYWwgc3ltYm9scyBoaWRkZW4g
aW4gc2hhcmVkIGxpYnJhcmllcy4iCisgIE9GRikKKworIyBEZWZpbmVzIHByZV9wcm9qZWN0X3Nl
dF91cF9oZXJtZXRpY19idWlsZCgpIGFuZCBzZXRfdXBfaGVybWV0aWNfYnVpbGQoKS4KK2luY2x1
ZGUoY21ha2UvaGVybWV0aWNfYnVpbGQuY21ha2UgT1BUSU9OQUwpCisKK2lmIChDT01NQU5EIHBy
ZV9wcm9qZWN0X3NldF91cF9oZXJtZXRpY19idWlsZCkKKyAgcHJlX3Byb2plY3Rfc2V0X3VwX2hl
cm1ldGljX2J1aWxkKCkKK2VuZGlmKCkKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIFByb2plY3Qt
d2lkZSBzZXR0aW5ncworCisjIE5hbWUgb2YgdGhlIHByb2plY3QuCisjCisjIENNYWtlIGZpbGVz
IGluIHRoaXMgcHJvamVjdCBjYW4gcmVmZXIgdG8gdGhlIHJvb3Qgc291cmNlIGRpcmVjdG9yeQor
IyBhcyAke2d0ZXN0X1NPVVJDRV9ESVJ9IGFuZCB0byB0aGUgcm9vdCBiaW5hcnkgZGlyZWN0b3J5
IGFzCisjICR7Z3Rlc3RfQklOQVJZX0RJUn0uCisjIExhbmd1YWdlICJDIiBpcyByZXF1aXJlZCBm
b3IgZmluZF9wYWNrYWdlKFRocmVhZHMpLgoraWYgKENNQUtFX1ZFUlNJT04gVkVSU0lPTl9MRVNT
IDMuMCkKKyAgcHJvamVjdChndGVzdCBDWFggQykKK2Vsc2UoKQorICBjbWFrZV9wb2xpY3koU0VU
IENNUDAwNDggTkVXKQorICBwcm9qZWN0KGd0ZXN0IFZFUlNJT04gJHtHT09HTEVURVNUX1ZFUlNJ
T059IExBTkdVQUdFUyBDWFggQykKK2VuZGlmKCkKK2NtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVS
U0lPTiAyLjYuNCkKKworaWYgKFBPTElDWSBDTVAwMDYzKSAjIFZpc2liaWxpdHkKKyAgY21ha2Vf
cG9saWN5KFNFVCBDTVAwMDYzIE5FVykKK2VuZGlmIChQT0xJQ1kgQ01QMDA2MykKKworaWYgKENP
TU1BTkQgc2V0X3VwX2hlcm1ldGljX2J1aWxkKQorICBzZXRfdXBfaGVybWV0aWNfYnVpbGQoKQor
ZW5kaWYoKQorCisjIFRoZXNlIGNvbW1hbmRzIG9ubHkgcnVuIGlmIHRoaXMgaXMgdGhlIG1haW4g
cHJvamVjdAoraWYoQ01BS0VfUFJPSkVDVF9OQU1FIFNUUkVRVUFMICJndGVzdCIgT1IgQ01BS0Vf
UFJPSkVDVF9OQU1FIFNUUkVRVUFMICJnb29nbGV0ZXN0LWRpc3RyaWJ1dGlvbiIpCisKKyAgIyBC
VUlMRF9TSEFSRURfTElCUyBpcyBhIHN0YW5kYXJkIENNYWtlIHZhcmlhYmxlLCBidXQgd2UgZGVj
bGFyZSBpdCBoZXJlIHRvCisgICMgbWFrZSBpdCBwcm9taW5lbnQgaW4gdGhlIEdVSS4KKyAgb3B0
aW9uKEJVSUxEX1NIQVJFRF9MSUJTICJCdWlsZCBzaGFyZWQgbGlicmFyaWVzIChETExzKS4iIE9G
RikKKworZWxzZSgpCisKKyAgbWFya19hc19hZHZhbmNlZCgKKyAgICBndGVzdF9mb3JjZV9zaGFy
ZWRfY3J0CisgICAgZ3Rlc3RfYnVpbGRfdGVzdHMKKyAgICBndGVzdF9idWlsZF9zYW1wbGVzCisg
ICAgZ3Rlc3RfZGlzYWJsZV9wdGhyZWFkcworICAgIGd0ZXN0X2hpZGVfaW50ZXJuYWxfc3ltYm9s
cykKKworZW5kaWYoKQorCisKK2lmIChndGVzdF9oaWRlX2ludGVybmFsX3N5bWJvbHMpCisgIHNl
dChDTUFLRV9DWFhfVklTSUJJTElUWV9QUkVTRVQgaGlkZGVuKQorICBzZXQoQ01BS0VfVklTSUJJ
TElUWV9JTkxJTkVTX0hJRERFTiAxKQorZW5kaWYoKQorCisjIERlZmluZSBoZWxwZXIgZnVuY3Rp
b25zIGFuZCBtYWNyb3MgdXNlZCBieSBHb29nbGUgVGVzdC4KK2luY2x1ZGUoY21ha2UvaW50ZXJu
YWxfdXRpbHMuY21ha2UpCisKK2NvbmZpZ19jb21waWxlcl9hbmRfbGlua2VyKCkgICMgRGVmaW5l
ZCBpbiBpbnRlcm5hbF91dGlscy5jbWFrZS4KKworIyBDcmVhdGUgdGhlIENNYWtlIHBhY2thZ2Ug
ZmlsZSBkZXNjcmlwdG9ycy4KK2lmIChJTlNUQUxMX0dURVNUKQorICBpbmNsdWRlKENNYWtlUGFj
a2FnZUNvbmZpZ0hlbHBlcnMpCisgIHNldChjbWFrZV9wYWNrYWdlX25hbWUgR1Rlc3QpCisgIHNl
dCh0YXJnZXRzX2V4cG9ydF9uYW1lICR7Y21ha2VfcGFja2FnZV9uYW1lfVRhcmdldHMgQ0FDSEUg
SU5URVJOQUwgIiIpCisgIHNldChnZW5lcmF0ZWRfZGlyICIke0NNQUtFX0NVUlJFTlRfQklOQVJZ
X0RJUn0vZ2VuZXJhdGVkIiBDQUNIRSBJTlRFUk5BTCAiIikKKyAgc2V0KGNtYWtlX2ZpbGVzX2lu
c3RhbGxfZGlyICIke0NNQUtFX0lOU1RBTExfTElCRElSfS9jbWFrZS8ke2NtYWtlX3BhY2thZ2Vf
bmFtZX0iKQorICBzZXQodmVyc2lvbl9maWxlICIke2dlbmVyYXRlZF9kaXJ9LyR7Y21ha2VfcGFj
a2FnZV9uYW1lfUNvbmZpZ1ZlcnNpb24uY21ha2UiKQorICB3cml0ZV9iYXNpY19wYWNrYWdlX3Zl
cnNpb25fZmlsZSgke3ZlcnNpb25fZmlsZX0gQ09NUEFUSUJJTElUWSBBbnlOZXdlclZlcnNpb24p
CisgIGluc3RhbGwoRVhQT1JUICR7dGFyZ2V0c19leHBvcnRfbmFtZX0KKyAgICBOQU1FU1BBQ0Ug
JHtjbWFrZV9wYWNrYWdlX25hbWV9OjoKKyAgICBERVNUSU5BVElPTiAke2NtYWtlX2ZpbGVzX2lu
c3RhbGxfZGlyfSkKKyAgc2V0KGNvbmZpZ19maWxlICIke2dlbmVyYXRlZF9kaXJ9LyR7Y21ha2Vf
cGFja2FnZV9uYW1lfUNvbmZpZy5jbWFrZSIpCisgIGNvbmZpZ3VyZV9wYWNrYWdlX2NvbmZpZ19m
aWxlKCIke2d0ZXN0X1NPVVJDRV9ESVJ9L2NtYWtlL0NvbmZpZy5jbWFrZS5pbiIKKyAgICAiJHtj
b25maWdfZmlsZX0iIElOU1RBTExfREVTVElOQVRJT04gJHtjbWFrZV9maWxlc19pbnN0YWxsX2Rp
cn0pCisgIGluc3RhbGwoRklMRVMgJHt2ZXJzaW9uX2ZpbGV9ICR7Y29uZmlnX2ZpbGV9CisgICAg
REVTVElOQVRJT04gJHtjbWFrZV9maWxlc19pbnN0YWxsX2Rpcn0pCitlbmRpZigpCisKKyMgV2hl
cmUgR29vZ2xlIFRlc3QncyAuaCBmaWxlcyBjYW4gYmUgZm91bmQuCitzZXQoZ3Rlc3RfYnVpbGRf
aW5jbHVkZV9kaXJzCisgICIke2d0ZXN0X1NPVVJDRV9ESVJ9L2luY2x1ZGUiCisgICIke2d0ZXN0
X1NPVVJDRV9ESVJ9IikKK2luY2x1ZGVfZGlyZWN0b3JpZXMoJHtndGVzdF9idWlsZF9pbmNsdWRl
X2RpcnN9KQorCisjIFN1bW1hcnkgb2YgdHVwbGUgc3VwcG9ydCBmb3IgTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW86CisjIENvbXBpbGVyICAgIHZlcnNpb24oTVMpICB2ZXJzaW9uKGNtYWtlKSAgU3Vw
cG9ydAorIyAtLS0tLS0tLS0tICAtLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIDw9IFZTIDIwMTAgIDw9IDEwICAgICAgICA8PSAxNjAw
ICAgICAgICAgVXNlIEdvb2dsZSBUZXN0cydzIG93biB0dXBsZS4KKyMgVlMgMjAxMiAgICAgMTEg
ICAgICAgICAgIDE3MDAgICAgICAgICAgICBzdGQ6OnRyMTo6dHVwbGUgKyBfVkFSSUFESUNfTUFY
PTEwCisjIFZTIDIwMTMgICAgIDEyICAgICAgICAgICAxODAwICAgICAgICAgICAgc3RkOjp0cjE6
OnR1cGxlCisjIFZTIDIwMTUgICAgIDE0ICAgICAgICAgICAxOTAwICAgICAgICAgICAgc3RkOjp0
dXBsZQorIyBWUyAyMDE3ICAgICAxNSAgICAgICAgICAgPj0gMTkxMCAgICAgICAgIHN0ZDo6dHVw
bGUKK2lmIChNU1ZDIEFORCBNU1ZDX1ZFUlNJT04gRVFVQUwgMTcwMCkKKyAgYWRkX2RlZmluaXRp
b25zKC9EIF9WQVJJQURJQ19NQVg9MTApCitlbmRpZigpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIwor
IyBEZWZpbmVzIHRoZSBndGVzdCAmIGd0ZXN0X21haW4gbGlicmFyaWVzLiAgVXNlciB0ZXN0cyBz
aG91bGQgbGluaworIyB3aXRoIG9uZSBvZiB0aGVtLgorCisjIEdvb2dsZSBUZXN0IGxpYnJhcmll
cy4gIFdlIGJ1aWxkIHRoZW0gdXNpbmcgbW9yZSBzdHJpY3Qgd2FybmluZ3MgdGhhbiB3aGF0Cisj
IGFyZSB1c2VkIGZvciBvdGhlciB0YXJnZXRzLCB0byBlbnN1cmUgdGhhdCBndGVzdCBjYW4gYmUg
Y29tcGlsZWQgYnkgYSB1c2VyCisjIGFnZ3Jlc3NpdmUgYWJvdXQgd2FybmluZ3MuCitjeHhfbGli
cmFyeShndGVzdCAiJHtjeHhfc3RyaWN0fSIgc3JjL2d0ZXN0LWFsbC5jYykKK2N4eF9saWJyYXJ5
KGd0ZXN0X21haW4gIiR7Y3h4X3N0cmljdH0iIHNyYy9ndGVzdF9tYWluLmNjKQorIyBJZiB0aGUg
Q01ha2UgdmVyc2lvbiBzdXBwb3J0cyBpdCwgYXR0YWNoIGhlYWRlciBkaXJlY3RvcnkgaW5mb3Jt
YXRpb24KKyMgdG8gdGhlIHRhcmdldHMgZm9yIHdoZW4gd2UgYXJlIHBhcnQgb2YgYSBwYXJlbnQg
YnVpbGQgKGllIGJlaW5nIHB1bGxlZAorIyBpbiB2aWEgYWRkX3N1YmRpcmVjdG9yeSgpIHJhdGhl
ciB0aGFuIGJlaW5nIGEgc3RhbmRhbG9uZSBidWlsZCkuCitpZiAoREVGSU5FRCBDTUFLRV9WRVJT
SU9OIEFORCBOT1QgIiR7Q01BS0VfVkVSU0lPTn0iIFZFUlNJT05fTEVTUyAiMi44LjExIikKKyAg
dGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoZ3Rlc3QgU1lTVEVNIElOVEVSRkFDRQorICAgICIk
PEJVSUxEX0lOVEVSRkFDRToke2d0ZXN0X2J1aWxkX2luY2x1ZGVfZGlyc30+IgorICAgICIkPElO
U1RBTExfSU5URVJGQUNFOiQ8SU5TVEFMTF9QUkVGSVg+LyR7Q01BS0VfSU5TVEFMTF9JTkNMVURF
RElSfT4iKQorICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhndGVzdF9tYWluIFNZU1RFTSBJ
TlRFUkZBQ0UKKyAgICAiJDxCVUlMRF9JTlRFUkZBQ0U6JHtndGVzdF9idWlsZF9pbmNsdWRlX2Rp
cnN9PiIKKyAgICAiJDxJTlNUQUxMX0lOVEVSRkFDRTokPElOU1RBTExfUFJFRklYPi8ke0NNQUtF
X0lOU1RBTExfSU5DTFVERURJUn0+IikKK2VuZGlmKCkKK3RhcmdldF9saW5rX2xpYnJhcmllcyhn
dGVzdF9tYWluIFBVQkxJQyBndGVzdCkKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIEluc3RhbGwg
cnVsZXMKK2luc3RhbGxfcHJvamVjdChndGVzdCBndGVzdF9tYWluKQorCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKyMKKyMgU2FtcGxlcyBvbiBob3cgdG8gbGluayB1c2VyIHRlc3RzIHdpdGggZ3Rlc3Qgb3Ig
Z3Rlc3RfbWFpbi4KKyMKKyMgVGhleSBhcmUgbm90IGJ1aWx0IGJ5IGRlZmF1bHQuICBUbyBidWls
ZCB0aGVtLCBzZXQgdGhlCisjIGd0ZXN0X2J1aWxkX3NhbXBsZXMgb3B0aW9uIHRvIE9OLiAgWW91
IGNhbiBkbyBpdCBieSBydW5uaW5nIGNjbWFrZQorIyBvciBzcGVjaWZ5aW5nIHRoZSAtRGd0ZXN0
X2J1aWxkX3NhbXBsZXM9T04gZmxhZyB3aGVuIHJ1bm5pbmcgY21ha2UuCisKK2lmIChndGVzdF9i
dWlsZF9zYW1wbGVzKQorICBjeHhfZXhlY3V0YWJsZShzYW1wbGUxX3VuaXR0ZXN0IHNhbXBsZXMg
Z3Rlc3RfbWFpbiBzYW1wbGVzL3NhbXBsZTEuY2MpCisgIGN4eF9leGVjdXRhYmxlKHNhbXBsZTJf
dW5pdHRlc3Qgc2FtcGxlcyBndGVzdF9tYWluIHNhbXBsZXMvc2FtcGxlMi5jYykKKyAgY3h4X2V4
ZWN1dGFibGUoc2FtcGxlM191bml0dGVzdCBzYW1wbGVzIGd0ZXN0X21haW4pCisgIGN4eF9leGVj
dXRhYmxlKHNhbXBsZTRfdW5pdHRlc3Qgc2FtcGxlcyBndGVzdF9tYWluIHNhbXBsZXMvc2FtcGxl
NC5jYykKKyAgY3h4X2V4ZWN1dGFibGUoc2FtcGxlNV91bml0dGVzdCBzYW1wbGVzIGd0ZXN0X21h
aW4gc2FtcGxlcy9zYW1wbGUxLmNjKQorICBjeHhfZXhlY3V0YWJsZShzYW1wbGU2X3VuaXR0ZXN0
IHNhbXBsZXMgZ3Rlc3RfbWFpbikKKyAgY3h4X2V4ZWN1dGFibGUoc2FtcGxlN191bml0dGVzdCBz
YW1wbGVzIGd0ZXN0X21haW4pCisgIGN4eF9leGVjdXRhYmxlKHNhbXBsZThfdW5pdHRlc3Qgc2Ft
cGxlcyBndGVzdF9tYWluKQorICBjeHhfZXhlY3V0YWJsZShzYW1wbGU5X3VuaXR0ZXN0IHNhbXBs
ZXMgZ3Rlc3QpCisgIGN4eF9leGVjdXRhYmxlKHNhbXBsZTEwX3VuaXR0ZXN0IHNhbXBsZXMgZ3Rl
c3QpCitlbmRpZigpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBHb29nbGUgVGVzdCdzIG93biB0
ZXN0cy4KKyMKKyMgWW91IGNhbiBza2lwIHRoaXMgc2VjdGlvbiBpZiB5b3UgYXJlbid0IGludGVy
ZXN0ZWQgaW4gdGVzdGluZworIyBHb29nbGUgVGVzdCBpdHNlbGYuCisjCisjIFRoZSB0ZXN0cyBh
cmUgbm90IGJ1aWx0IGJ5IGRlZmF1bHQuICBUbyBidWlsZCB0aGVtLCBzZXQgdGhlCisjIGd0ZXN0
X2J1aWxkX3Rlc3RzIG9wdGlvbiB0byBPTi4gIFlvdSBjYW4gZG8gaXQgYnkgcnVubmluZyBjY21h
a2UKKyMgb3Igc3BlY2lmeWluZyB0aGUgLURndGVzdF9idWlsZF90ZXN0cz1PTiBmbGFnIHdoZW4g
cnVubmluZyBjbWFrZS4KKworaWYgKGd0ZXN0X2J1aWxkX3Rlc3RzKQorICAjIFRoaXMgbXVzdCBi
ZSBzZXQgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IGZvciB0aGUgdGVzdHMgdG8gYmUgcnVuIGJ5Cisg
ICMgJ21ha2UgdGVzdCcgb3IgY3Rlc3QuCisgIGVuYWJsZV90ZXN0aW5nKCkKKworICAjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAg
IyBDKysgdGVzdHMgYnVpbHQgd2l0aCBzdGFuZGFyZCBjb21waWxlciBmbGFncy4KKworICBjeHhf
dGVzdChnb29nbGV0ZXN0LWRlYXRoLXRlc3QtdGVzdCBndGVzdF9tYWluKQorICBjeHhfdGVzdChn
dGVzdF9lbnZpcm9ubWVudF90ZXN0IGd0ZXN0KQorICBjeHhfdGVzdChnb29nbGV0ZXN0LWZpbGVw
YXRoLXRlc3QgZ3Rlc3RfbWFpbikKKyAgY3h4X3Rlc3QoZ29vZ2xldGVzdC1saW5rZWQtcHRyLXRl
c3QgZ3Rlc3RfbWFpbikKKyAgY3h4X3Rlc3QoZ29vZ2xldGVzdC1saXN0ZW5lci10ZXN0IGd0ZXN0
X21haW4pCisgIGN4eF90ZXN0KGd0ZXN0X21haW5fdW5pdHRlc3QgZ3Rlc3RfbWFpbikKKyAgY3h4
X3Rlc3QoZ29vZ2xldGVzdC1tZXNzYWdlLXRlc3QgZ3Rlc3RfbWFpbikKKyAgY3h4X3Rlc3QoZ3Rl
c3Rfbm9fdGVzdF91bml0dGVzdCBndGVzdCkKKyAgY3h4X3Rlc3QoZ29vZ2xldGVzdC1vcHRpb25z
LXRlc3QgZ3Rlc3RfbWFpbikKKyAgY3h4X3Rlc3QoZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3Qg
Z3Rlc3QKKyAgICB0ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdDItdGVzdC5jYykKKyAgY3h4X3Rl
c3QoZ29vZ2xldGVzdC1wb3J0LXRlc3QgZ3Rlc3RfbWFpbikKKyAgY3h4X3Rlc3QoZ3Rlc3RfcHJl
ZF9pbXBsX3VuaXR0ZXN0IGd0ZXN0X21haW4pCisgIGN4eF90ZXN0KGd0ZXN0X3ByZW1hdHVyZV9l
eGl0X3Rlc3QgZ3Rlc3QKKyAgICB0ZXN0L2d0ZXN0X3ByZW1hdHVyZV9leGl0X3Rlc3QuY2MpCisg
IGN4eF90ZXN0KGdvb2dsZXRlc3QtcHJpbnRlcnMtdGVzdCBndGVzdF9tYWluKQorICBjeHhfdGVz
dChndGVzdF9wcm9kX3Rlc3QgZ3Rlc3RfbWFpbgorICAgIHRlc3QvcHJvZHVjdGlvbi5jYykKKyAg
Y3h4X3Rlc3QoZ3Rlc3RfcmVwZWF0X3Rlc3QgZ3Rlc3QpCisgIGN4eF90ZXN0KGd0ZXN0X3NvbGVf
aGVhZGVyX3Rlc3QgZ3Rlc3RfbWFpbikKKyAgY3h4X3Rlc3QoZ3Rlc3Rfc3RyZXNzX3Rlc3QgZ3Rl
c3QpCisgIGN4eF90ZXN0KGdvb2dsZXRlc3QtdGVzdC1wYXJ0LXRlc3QgZ3Rlc3RfbWFpbikKKyAg
Y3h4X3Rlc3QoZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9leF90ZXN0IGd0ZXN0KQorICBjeHhfdGVz
dChndGVzdC10eXBlZC10ZXN0X3Rlc3QgZ3Rlc3RfbWFpbgorICAgIHRlc3QvZ3Rlc3QtdHlwZWQt
dGVzdDJfdGVzdC5jYykKKyAgY3h4X3Rlc3QoZ3Rlc3RfdW5pdHRlc3QgZ3Rlc3RfbWFpbikKKyAg
Y3h4X3Rlc3QoZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QgZ3Rlc3QpCisKKyAgIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICMgQysr
IHRlc3RzIGJ1aWx0IHdpdGggbm9uLXN0YW5kYXJkIGNvbXBpbGVyIGZsYWdzLgorCisgICMgTVNW
QyA3LjEgZG9lcyBub3Qgc3VwcG9ydCBTVEwgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLgorICBp
ZiAoTk9UIE1TVkMgT1IgTVNWQ19WRVJTSU9OIEdSRUFURVIgMTMxMCkKKyAgICBjeHhfbGlicmFy
eShndGVzdF9ub19leGNlcHRpb24gIiR7Y3h4X25vX2V4Y2VwdGlvbn0iCisgICAgICBzcmMvZ3Rl
c3QtYWxsLmNjKQorICAgIGN4eF9saWJyYXJ5KGd0ZXN0X21haW5fbm9fZXhjZXB0aW9uICIke2N4
eF9ub19leGNlcHRpb259IgorICAgICAgc3JjL2d0ZXN0LWFsbC5jYyBzcmMvZ3Rlc3RfbWFpbi5j
YykKKyAgZW5kaWYoKQorICBjeHhfbGlicmFyeShndGVzdF9tYWluX25vX3J0dGkgIiR7Y3h4X25v
X3J0dGl9IgorICAgIHNyYy9ndGVzdC1hbGwuY2Mgc3JjL2d0ZXN0X21haW4uY2MpCisKKyAgY3h4
X3Rlc3Rfd2l0aF9mbGFncyhndGVzdC1kZWF0aC10ZXN0X2V4X25vY2F0Y2hfdGVzdAorICAgICIk
e2N4eF9leGNlcHRpb259IC1ER1RFU1RfRU5BQkxFX0NBVENIX0VYQ0VQVElPTlNfPTAiCisgICAg
Z3Rlc3QgdGVzdC9nb29nbGV0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYykKKyAgY3h4X3Rlc3Rf
d2l0aF9mbGFncyhndGVzdC1kZWF0aC10ZXN0X2V4X2NhdGNoX3Rlc3QKKyAgICAiJHtjeHhfZXhj
ZXB0aW9ufSAtREdURVNUX0VOQUJMRV9DQVRDSF9FWENFUFRJT05TXz0xIgorICAgIGd0ZXN0IHRl
c3QvZ29vZ2xldGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MpCisKKyAgY3h4X3Rlc3Rfd2l0aF9m
bGFncyhndGVzdF9ub19ydHRpX3VuaXR0ZXN0ICIke2N4eF9ub19ydHRpfSIKKyAgICBndGVzdF9t
YWluX25vX3J0dGkgdGVzdC9ndGVzdF91bml0dGVzdC5jYykKKworICBjeHhfc2hhcmVkX2xpYnJh
cnkoZ3Rlc3RfZGxsICIke2N4eF9kZWZhdWx0fSIKKyAgICBzcmMvZ3Rlc3QtYWxsLmNjIHNyYy9n
dGVzdF9tYWluLmNjKQorCisgIGN4eF9leGVjdXRhYmxlX3dpdGhfZmxhZ3MoZ3Rlc3RfZGxsX3Rl
c3RfICIke2N4eF9kZWZhdWx0fSIKKyAgICBndGVzdF9kbGwgdGVzdC9ndGVzdF9hbGxfdGVzdC5j
YykKKyAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKGd0ZXN0X2RsbF90ZXN0XworICAgICAgICAgICAg
ICAgICAgICAgICAgUFJPUEVSVElFUworICAgICAgICAgICAgICAgICAgICAgICAgQ09NUElMRV9E
RUZJTklUSU9OUyAiR1RFU1RfTElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZPTEiKQorCisgIGlmIChO
T1QgTVNWQyBPUiBNU1ZDX1ZFUlNJT04gTEVTUyAxNjAwKSAgIyAxNjAwIGlzIFZpc3VhbCBTdHVk
aW8gMjAxMC4KKyAgICAjIFZpc3VhbCBTdHVkaW8gMjAxMCwgMjAxMiwgYW5kIDIwMTMgZGVmaW5l
IHN5bWJvbHMgaW4gc3RkOjp0cjEgdGhhdAorICAgICMgY29uZmxpY3Qgd2l0aCBvdXIgb3duIGRl
ZmluaXRpb25zLiBUaGVyZWZvcmUgdXNpbmcgb3VyIG93biB0dXBsZSBkb2VzIG5vdAorICAgICMg
d29yayBvbiB0aG9zZSBjb21waWxlcnMuCisgICAgY3h4X2xpYnJhcnkoZ3Rlc3RfbWFpbl91c2Vf
b3duX3R1cGxlICIke2N4eF91c2Vfb3duX3R1cGxlfSIKKyAgICAgIHNyYy9ndGVzdC1hbGwuY2Mg
c3JjL2d0ZXN0X21haW4uY2MpCisKKyAgICBjeHhfdGVzdF93aXRoX2ZsYWdzKGdvb2dsZXRlc3Qt
dHVwbGUtdGVzdCAiJHtjeHhfdXNlX293bl90dXBsZX0iCisgICAgICBndGVzdF9tYWluX3VzZV9v
d25fdHVwbGUgdGVzdC9nb29nbGV0ZXN0LXR1cGxlLXRlc3QuY2MpCisKKyAgICBjeHhfdGVzdF93
aXRoX2ZsYWdzKGd0ZXN0X3VzZV9vd25fdHVwbGVfdGVzdCAiJHtjeHhfdXNlX293bl90dXBsZX0i
CisgICAgICBndGVzdF9tYWluX3VzZV9vd25fdHVwbGUKKyAgICAgIHRlc3QvZ29vZ2xldGVzdC1w
YXJhbS10ZXN0LXRlc3QuY2MgdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QyLXRlc3QuY2MpCisg
IGVuZGlmKCkKKworICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyAgIyBQeXRob24gdGVzdHMuCisKKyAgY3h4X2V4ZWN1dGFibGUo
Z29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0XyB0ZXN0IGd0ZXN0KQorICBweV90
ZXN0KGdvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdCkKKworICAjIFZpc3VhbCBT
dHVkaW8gLk5FVCAyMDAzIGRvZXMgbm90IHN1cHBvcnQgU1RMIHdpdGggZXhjZXB0aW9ucyBkaXNh
YmxlZC4KKyAgaWYgKE5PVCBNU1ZDIE9SIE1TVkNfVkVSU0lPTiBHUkVBVEVSIDEzMTApICAjIDEz
MTAgaXMgVmlzdWFsIFN0dWRpbyAuTkVUIDIwMDMKKyAgICBjeHhfZXhlY3V0YWJsZV93aXRoX2Zs
YWdzKAorICAgICAgZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLW5vLWV4LXRlc3RfCisgICAg
ICAiJHtjeHhfbm9fZXhjZXB0aW9ufSIKKyAgICAgIGd0ZXN0X21haW5fbm9fZXhjZXB0aW9uCisg
ICAgICB0ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0Xy5jYykKKyAgZW5kaWYo
KQorCisgIGN4eF9leGVjdXRhYmxlX3dpdGhfZmxhZ3MoCisgICAgZ29vZ2xldGVzdC1jYXRjaC1l
eGNlcHRpb25zLWV4LXRlc3RfCisgICAgIiR7Y3h4X2V4Y2VwdGlvbn0iCisgICAgZ3Rlc3RfbWFp
bgorICAgIHRlc3QvZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3RfLmNjKQorICBweV90
ZXN0KGdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0KQorCisgIGN4eF9leGVjdXRhYmxl
KGdvb2dsZXRlc3QtY29sb3ItdGVzdF8gdGVzdCBndGVzdCkKKyAgcHlfdGVzdChnb29nbGV0ZXN0
LWNvbG9yLXRlc3QpCisKKyAgY3h4X2V4ZWN1dGFibGUoZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3Rf
IHRlc3QgZ3Rlc3QpCisgIHB5X3Rlc3QoZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3QpCisKKyAgY3h4
X2V4ZWN1dGFibGUoZ29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3RfIHRlc3QgZ3Rlc3QpCisgIHB5
X3Rlc3QoZ29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3QpCisKKyAgY3h4X2V4ZWN1dGFibGUoZ3Rl
c3RfaGVscF90ZXN0XyB0ZXN0IGd0ZXN0X21haW4pCisgIHB5X3Rlc3QoZ3Rlc3RfaGVscF90ZXN0
KQorCisgIGN4eF9leGVjdXRhYmxlKGdvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdF8gdGVz
dCBndGVzdCkKKyAgcHlfdGVzdChnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3QpCisKKyAg
Y3h4X2V4ZWN1dGFibGUoZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8gdGVzdCBndGVzdCkKKyAgcHlf
dGVzdChnb29nbGV0ZXN0LW91dHB1dC10ZXN0IC0tbm9fc3RhY2t0cmFjZV9zdXBwb3J0KQorCisg
IGN4eF9leGVjdXRhYmxlKGdvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0XyB0ZXN0IGd0ZXN0KQorICBw
eV90ZXN0KGdvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0KQorCisgICMgTVNWQyA3LjEgZG9lcyBub3Qg
c3VwcG9ydCBTVEwgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLgorICBpZiAoTk9UIE1TVkMgT1Ig
TVNWQ19WRVJTSU9OIEdSRUFURVIgMTMxMCkKKyAgICBjeHhfZXhlY3V0YWJsZShnb29nbGV0ZXN0
LXRocm93LW9uLWZhaWx1cmUtdGVzdF8gdGVzdCBndGVzdF9ub19leGNlcHRpb24pCisgICAgc2V0
X3RhcmdldF9wcm9wZXJ0aWVzKGdvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0XworICAg
ICAgUFJPUEVSVElFUworICAgICAgQ09NUElMRV9GTEFHUyAiJHtjeHhfbm9fZXhjZXB0aW9ufSIp
CisgICAgcHlfdGVzdChnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdCkKKyAgZW5kaWYo
KQorCisgIGN4eF9leGVjdXRhYmxlKGdvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0XyB0ZXN0
IGd0ZXN0KQorICBweV90ZXN0KGdvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0KQorCisgIGN4
eF9leGVjdXRhYmxlKGd0ZXN0X3htbF9vdXRmaWxlMV90ZXN0XyB0ZXN0IGd0ZXN0X21haW4pCisg
IGN4eF9leGVjdXRhYmxlKGd0ZXN0X3htbF9vdXRmaWxlMl90ZXN0XyB0ZXN0IGd0ZXN0X21haW4p
CisgIHB5X3Rlc3QoZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QpCisgIHB5X3Rlc3QoZ29vZ2xldGVz
dC1qc29uLW91dGZpbGVzLXRlc3QpCisKKyAgY3h4X2V4ZWN1dGFibGUoZ3Rlc3RfeG1sX291dHB1
dF91bml0dGVzdF8gdGVzdCBndGVzdCkKKyAgcHlfdGVzdChndGVzdF94bWxfb3V0cHV0X3VuaXR0
ZXN0IC0tbm9fc3RhY2t0cmFjZV9zdXBwb3J0KQorICBweV90ZXN0KGdvb2dsZXRlc3QtanNvbi1v
dXRwdXQtdW5pdHRlc3QgLS1ub19zdGFja3RyYWNlX3N1cHBvcnQpCitlbmRpZigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DT05UUklCVVRPUlMgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9DT05UUklCVVRPUlMKaW5kZXggMDkzNGFlMTMwNTlhZmNkYzA1ZGY4MTI0N2U2
MWI5YTg0YTIzMTJlMi4uZmVhZTJmYzA0NDEwZGMzMDhlNDY0YWEyNTZmZTFmMmQzMWVkYzk4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09OVFJJQlVUT1JTCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NPTlRSSUJVVE9SUwpAQCAtMjEsNiArMjEsNyBAQCBNYW51
ZWwgS2xpbWVrIDxrbGltZWtAZ29vZ2xlLmNvbT4KIE1hcmt1cyBIZXVsZSA8bWFya3VzLmhldWxl
QGdtYWlsLmNvbT4KIE1pa2EgUmFlbnRvIDxtaWtpZUBpa2kuZmk+CiBNaWtsw7NzIEZhemVrYXMg
PG1mYXpla2FzQHN6ZW1hZm9yLmNvbT4KK1Bhc2kgVmFsbWluZW4gPHBhc2kudmFsbWluZW5AZ21h
aWwuY29tPgogUGF0cmljayBIYW5uYSA8cGhhbm5hQGdvb2dsZS5jb20+CiBQYXRyaWNrIFJpbGV5
IDxwZnJAZ29vZ2xlLmNvbT4KIFBldGVyIEthbWluc2tpIDxwaW90cmtAZ29vZ2xlLmNvbT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NPUFlJTkcgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9DT1BZSU5HCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTQxYTEx
ZjhjZTk0Mzg5MTYwYjQ1ODkyN2EyOWJhMjE3NTQyODE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NPUFlJTkcK
KysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Db3B5cmlnaHQgMjAwOCwgR29vZ2xlIElu
Yy4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotbWV0
OgotCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotZGlzdHJp
YnV0aW9uLgotICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLXRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLVNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0oSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLU9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9MSUNFTlNFIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTQxYTExZjhjZTk0Mzg5MTYwYjQ1ODkyN2Ey
OWJhMjE3NTQyODE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
TElDRU5TRQpAQCAtMCwwICsxLDI4IEBACitDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KK0Fs
bCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0OgorCisg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlzdHJpYnV0aW9u
LgorICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
K0EgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCitPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCitUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9NYWtlZmlsZS5hbSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L01ha2VmaWxlLmFtCmluZGV4IDhkNzVlMzJjYzIwY2RlODNjMTc0ZjRlMDc4ZTI5OTNh
OTMyYTlkMTguLmI0NGM4NDE2YmEwODBjMmYwMTZmMTY2YjE4YjQyYzBmNzNlY2U3YmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L01ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L01ha2VmaWxlLmFtCkBAIC0xLDEzICsxLDE2IEBACiAjIEF1dG9tYWtl
IGZpbGUKIAorQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQKKwogIyBOb25zdGFuZGFyZCBwYWNrYWdl
IGZpbGVzIGZvciBkaXN0cmlidXRpb24KIEVYVFJBX0RJU1QgPSBcCiAgIENIQU5HRVMgXAogICBD
T05UUklCVVRPUlMgXAorICBMSUNFTlNFIFwKICAgaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10
ZXN0LmgucHVtcCBcCisgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1n
ZW5lcmF0ZWQuaC5wdW1wIFwKICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5o
LnB1bXAgXAogICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oLnB1bXAg
XAotICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgu
cHVtcCBcCiAgIG1ha2UvTWFrZWZpbGUgXAogICBzY3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMucHkg
XAogICBzY3JpcHRzL2dlbl9ndGVzdF9wcmVkX2ltcGwucHkgXApAQCAtMTcsMTkgKzIwLDIxIEBA
IEVYVFJBX0RJU1QgPSBcCiAjIGd0ZXN0IHNvdXJjZSBmaWxlcyB0aGF0IHdlIGRvbid0IGNvbXBp
bGUgZGlyZWN0bHkuICBUaGV5IGFyZQogIyAjaW5jbHVkZWQgYnkgZ3Rlc3QtYWxsLmNjLgogR1RF
U1RfU1JDID0gXAotICBzcmMvZ3Rlc3QuY2MgXAogICBzcmMvZ3Rlc3QtZGVhdGgtdGVzdC5jYyBc
CiAgIHNyYy9ndGVzdC1maWxlcGF0aC5jYyBcCiAgIHNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCBc
CiAgIHNyYy9ndGVzdC1wb3J0LmNjIFwKKyAgc3JjL2d0ZXN0LXByaW50ZXJzLmNjIFwKICAgc3Jj
L2d0ZXN0LXRlc3QtcGFydC5jYyBcCi0gIHNyYy9ndGVzdC10eXBlZC10ZXN0LmNjCisgIHNyYy9n
dGVzdC10eXBlZC10ZXN0LmNjIFwKKyAgc3JjL2d0ZXN0LmNjCiAKIEVYVFJBX0RJU1QgKz0gJChH
VEVTVF9TUkMpCiAKICMgU2FtcGxlIGZpbGVzIHRoYXQgd2UgZG9uJ3QgY29tcGlsZS4KIEVYVFJB
X0RJU1QgKz0gXAogICBzYW1wbGVzL3ByaW1lX3RhYmxlcy5oIFwKKyAgc2FtcGxlcy9zYW1wbGUx
X3VuaXR0ZXN0LmNjIFwKICAgc2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0LmNjIFwKICAgc2FtcGxl
cy9zYW1wbGUzX3VuaXR0ZXN0LmNjIFwKICAgc2FtcGxlcy9zYW1wbGU0X3VuaXR0ZXN0LmNjIFwK
QEAgLTQxLDg4ICs0Niw5MSBAQCBFWFRSQV9ESVNUICs9IFwKIAogIyBDKysgdGVzdCBmaWxlcyB0
aGF0IHdlIGRvbid0IGNvbXBpbGUgZGlyZWN0bHkuCiBFWFRSQV9ESVNUICs9IFwKKyAgdGVzdC9n
dGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfdGVz
dC5jYyBcCi0gIHRlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3Qt
ZmlsZXBhdGhfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNjIFwKKyAg
dGVzdC9ndGVzdC1saXN0ZW5lcl90ZXN0LmNjIFwKICAgdGVzdC9ndGVzdC1tZXNzYWdlX3Rlc3Qu
Y2MgXAotICB0ZXN0L2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QuY2MgXAogICB0ZXN0L2d0ZXN0LW9w
dGlvbnNfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmNjIFwKLSAgdGVz
dC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRl
c3QyLXRlc3QuY2MgXAorICB0ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdDItdGVzdC5jYyBcCisg
IHRlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MgXAorICB0ZXN0L2dvb2dsZXRlc3Qt
cGFyYW0tdGVzdC10ZXN0LmNjIFwKICAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaCBcCiAg
IHRlc3QvZ3Rlc3QtcG9ydF90ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdF9wcmVtYXR1cmVfZXhpdF90
ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC1wcmludGVyc190ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC10
ZXN0LXBhcnRfdGVzdC5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC10dXBsZS10ZXN0LmNjIFwKKyAg
dGVzdC9ndGVzdC10eXBlZC10ZXN0Ml90ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC10eXBlZC10ZXN0
X3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oIFwKKyAgdGVzdC9ndGVz
dC11bml0dGVzdC1hcGlfdGVzdC5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC1icmVhay1vbi1mYWls
dXJlLXVuaXR0ZXN0Xy5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRl
c3RfLmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LWNvbG9yLXRlc3RfLmNjIFwKKyAgdGVzdC9nb29n
bGV0ZXN0LWVudi12YXItdGVzdF8uY2MgXAorICB0ZXN0L2d0ZXN0X2Vudmlyb25tZW50X3Rlc3Qu
Y2MgXAorICB0ZXN0L2dvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0Xy5jYyBcCisgIHRlc3QvZ3Rl
c3RfaGVscF90ZXN0Xy5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0
Xy5jYyBcCisgIHRlc3QvZ3Rlc3RfbWFpbl91bml0dGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3Rfbm9f
dGVzdF91bml0dGVzdC5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2MgXAog
ICB0ZXN0L2d0ZXN0X3ByZWRfaW1wbF91bml0dGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3RfcHJvZF90
ZXN0LmNjIFwKLSAgdGVzdC9wcm9kdWN0aW9uLmNjIFwKLSAgdGVzdC9wcm9kdWN0aW9uLmggXAog
ICB0ZXN0L2d0ZXN0X3JlcGVhdF90ZXN0LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LXNodWZmbGUt
dGVzdF8uY2MgXAogICB0ZXN0L2d0ZXN0X3NvbGVfaGVhZGVyX3Rlc3QuY2MgXAogICB0ZXN0L2d0
ZXN0X3N0cmVzc190ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYyBcCiAg
IHRlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9leF90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC10
eXBlZC10ZXN0X3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MgXAot
ICB0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oIFwKKyAgdGVzdC9nb29nbGV0ZXN0LXRocm93
LW9uLWZhaWx1cmUtdGVzdF8uY2MgXAorICB0ZXN0L2dvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10
ZXN0Xy5jYyBcCiAgIHRlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXVuaXR0
ZXN0LWFwaV90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC1saXN0ZW5lcl90ZXN0LmNjIFwKLSAgdGVz
dC9ndGVzdF9tYWluX3VuaXR0ZXN0LmNjIFwKICAgdGVzdC9ndGVzdF91bml0dGVzdC5jYyBcCi0g
IHRlc3QvZ3Rlc3QtdHVwbGVfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0
LmNjIFwKLSAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdF9i
cmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3RfY29sb3JfdGVzdF8u
Y2MgXAotICB0ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X2ZpbHRl
cl91bml0dGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X2hlbHBfdGVzdF8uY2MgXAotICB0ZXN0L2d0
ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF8u
Y2MgXAotICB0ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X3Rocm93
X29uX2ZhaWx1cmVfdGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdF8u
Y2MgXAogICB0ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMV90ZXN0Xy5jYyBcCiAgIHRlc3QvZ3Rlc3Rf
eG1sX291dGZpbGUyX3Rlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0
Xy5jYworICB0ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjIFwKKyAgdGVzdC9wcm9k
dWN0aW9uLmNjIFwKKyAgdGVzdC9wcm9kdWN0aW9uLmgKIAogIyBQeXRob24gdGVzdHMgdGhhdCB3
ZSBkb24ndCBydW4uCiBFWFRSQV9ESVNUICs9IFwKLSAgdGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5
IFwKLSAgdGVzdC9ndGVzdF94bWxfdGVzdF91dGlscy5weSBcCi0gIHRlc3QvZ3Rlc3RfYnJlYWtf
b25fZmFpbHVyZV91bml0dGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weSBcCi0g
IHRlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRl
c3QucHkgXAorICB0ZXN0L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdC5weSBc
CisgIHRlc3QvZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3QucHkgXAorICB0ZXN0L2dv
b2dsZXRlc3QtY29sb3ItdGVzdC5weSBcCisgIHRlc3QvZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3Qu
cHkgXAorICB0ZXN0L2dvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0LnB5IFwKICAgdGVzdC9ndGVz
dF9oZWxwX3Rlc3QucHkgXAotICB0ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3QucHkgXAot
ICB0ZXN0L2d0ZXN0X291dHB1dF90ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9n
b2xkZW5fbGluLnR4dCBcCi0gIHRlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX3dpbi50eHQg
XAotICB0ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3RfdGhyb3dfb25f
ZmFpbHVyZV90ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3QucHkgXAor
ICB0ZXN0L2dvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdC5weSBcCisgIHRlc3QvZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdC5weSBcCisgIHRlc3QvZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF9nb2xk
ZW5fbGluLnR4dCBcCisgIHRlc3QvZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3QucHkgXAorICB0ZXN0
L2d0ZXN0X3Rlc3RfdXRpbHMucHkgXAorICB0ZXN0L2dvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVy
ZS10ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdC5weSBcCiAg
IHRlc3QvZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkgXAogICB0ZXN0L2d0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3QucHkgXAotICB0ZXN0L3J1bl90ZXN0c191dGlsLnB5IFwKLSAgdGVzdC9ydW5f
dGVzdHNfdXRpbF90ZXN0LnB5CisgIHRlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkKIAogIyBD
TWFrZSBzY3JpcHQKIEVYVFJBX0RJU1QgKz0gXAotICBDTWFrZUxpc3RzLnR4dAorICBDTWFrZUxp
c3RzLnR4dCBcCisgIGNtYWtlL2ludGVybmFsX3V0aWxzLmNtYWtlCiAKICMgTVNWQyBwcm9qZWN0
IGZpbGVzCiBFWFRSQV9ESVNUICs9IFwKLSAgbXN2Yy9ndGVzdC1tZC5zbG4gXAotICBtc3ZjL2d0
ZXN0LnNsbiBcCi0gIG1zdmMvZ3Rlc3QtbWQudmNwcm9qIFwKLSAgbXN2Yy9ndGVzdC52Y3Byb2og
XAotICBtc3ZjL2d0ZXN0X21haW4tbWQudmNwcm9qIFwKLSAgbXN2Yy9ndGVzdF9tYWluLnZjcHJv
aiBcCi0gIG1zdmMvZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjcHJvaiBcCi0gIG1zdmMvZ3Rlc3RfcHJv
ZF90ZXN0LnZjcHJvaiBcCi0gIG1zdmMvZ3Rlc3RfdW5pdHRlc3QtbWQudmNwcm9qIFwKLSAgbXN2
Yy9ndGVzdF91bml0dGVzdC52Y3Byb2oKKyAgbXN2Yy8yMDEwL2d0ZXN0LW1kLnNsbiBcCisgIG1z
dmMvMjAxMC9ndGVzdC1tZC52Y3hwcm9qIFwKKyAgbXN2Yy8yMDEwL2d0ZXN0LnNsbiBcCisgIG1z
dmMvMjAxMC9ndGVzdC52Y3hwcm9qIFwKKyAgbXN2Yy8yMDEwL2d0ZXN0X21haW4tbWQudmN4cHJv
aiBcCisgIG1zdmMvMjAxMC9ndGVzdF9tYWluLnZjeHByb2ogXAorICBtc3ZjLzIwMTAvZ3Rlc3Rf
cHJvZF90ZXN0LW1kLnZjeHByb2ogXAorICBtc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHBy
b2ogXAorICBtc3ZjLzIwMTAvZ3Rlc3RfdW5pdHRlc3QtbWQudmN4cHJvaiBcCisgIG1zdmMvMjAx
MC9ndGVzdF91bml0dGVzdC52Y3hwcm9qCiAKICMgeGNvZGUgcHJvamVjdCBmaWxlcwogRVhUUkFf
RElTVCArPSBcCkBAIC0xMzMsMzEgKzE0MSwyNyBAQCBFWFRSQV9ESVNUICs9IFwKICAgeGNvZGUv
Q29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcgXAogICB4Y29kZS9Db25maWcvVGVz
dFRhcmdldC54Y2NvbmZpZyBcCiAgIHhjb2RlL1Jlc291cmNlcy9JbmZvLnBsaXN0IFwKLSAgeGNv
ZGUvU2NyaXB0cy92ZXJzaW9uZ2VuZXJhdGUucHkgXAogICB4Y29kZS9TY3JpcHRzL3J1bnRlc3Rz
LnNoIFwKKyAgeGNvZGUvU2NyaXB0cy92ZXJzaW9uZ2VuZXJhdGUucHkgXAogICB4Y29kZS9ndGVz
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCiAKICMgeGNvZGUgc2FtcGxlIGZpbGVzCiBFWFRS
QV9ESVNUICs9IFwKICAgeGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvSW5mby5wbGlzdCBc
CisgIHhjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL1dpZGdldEZyYW1ld29yay54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIFwKICAgeGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvcnVu
dGVzdHMuc2ggXAotICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS93aWRnZXRfdGVzdC5j
YyBcCiAgIHhjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldC5jYyBcCiAgIHhjb2Rl
L1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldC5oIFwKLSAgeGNvZGUvU2FtcGxlcy9GcmFt
ZXdvcmtTYW1wbGUvV2lkZ2V0RnJhbWV3b3JrLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKyAg
eGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0X3Rlc3QuY2MKIAogIyBDKytCdWls
ZGVyIHByb2plY3QgZmlsZXMKIEVYVFJBX0RJU1QgKz0gXAorICBjb2RlZ2Vhci9ndGVzdC5jYnBy
b2ogXAorICBjb2RlZ2Vhci9ndGVzdC5ncm91cHByb2ogXAogICBjb2RlZ2Vhci9ndGVzdF9hbGwu
Y2MgXAogICBjb2RlZ2Vhci9ndGVzdF9saW5rLmNjIFwKLSAgY29kZWdlYXIvZ3Rlc3QuY2Jwcm9q
IFwKICAgY29kZWdlYXIvZ3Rlc3RfbWFpbi5jYnByb2ogXAotICBjb2RlZ2Vhci9ndGVzdF91bml0
dGVzdC5jYnByb2ogXAotICBjb2RlZ2Vhci9ndGVzdC5ncm91cHByb2oKLQotIyBTY3JpcHRzIGFu
ZCB1dGlsaXRpZXMKLWJpbl9TQ1JJUFRTID0gc2NyaXB0cy9ndGVzdC1jb25maWcKLUNMRUFORklM
RVMgPSAkKGJpbl9TQ1JJUFRTKQorICBjb2RlZ2Vhci9ndGVzdF91bml0dGVzdC5jYnByb2oKIAog
IyBEaXN0cmlidXRlIGFuZCBpbnN0YWxsIE00IG1hY3JvCiBtNGRhdGFkaXIgPSAkKGRhdGFkaXIp
L2FjbG9jYWwKQEAgLTE4MSwxNSArMTg1LDE3IEBAIGxpYl9MVExJQlJBUklFUyA9IGxpYi9saWJn
dGVzdC5sYSBsaWIvbGliZ3Rlc3RfbWFpbi5sYQogCiBsaWJfbGliZ3Rlc3RfbGFfU09VUkNFUyA9
IHNyYy9ndGVzdC1hbGwuY2MKIAotcGtnaW5jbHVkZV9IRUFERVJTID0gaW5jbHVkZS9ndGVzdC9n
dGVzdC5oIFwKLSAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtZGVhdGgt
dGVzdC5oIFwKLSAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtbWVzc2Fn
ZS5oIFwKLSAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVz
dC5oIFwKLSAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBs
LmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmggXAot
ICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVzdC1zcGkuaCBcCi0gICAgICAg
ICAgICAgICAgICAgICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oIFwKLSAgICAgICAg
ICAgICAgICAgICAgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oCitwa2dpbmNsdWRl
X0hFQURFUlMgPSBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIFwKKyAgaW5j
bHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFt
LXRlc3QuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCBcCisgIGluY2x1ZGUv
Z3Rlc3QvZ3Rlc3Qtc3BpLmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oIFwK
KyAgaW5jbHVkZS9ndGVzdC9ndGVzdC10eXBlZC10ZXN0LmggXAorICBpbmNsdWRlL2d0ZXN0L2d0
ZXN0LmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIFwKKyAgaW5jbHVkZS9n
dGVzdC9ndGVzdF9wcm9kLmgKIAogcGtnaW5jbHVkZV9pbnRlcm5hbGRpciA9ICQocGtnaW5jbHVk
ZWRpcikvaW50ZXJuYWwKIHBrZ2luY2x1ZGVfaW50ZXJuYWxfSEVBREVSUyA9IFwKQEAgLTIwMCw2
MSArMjA2LDk3IEBAIHBrZ2luY2x1ZGVfaW50ZXJuYWxfSEVBREVSUyA9IFwKICAgaW5jbHVkZS9n
dGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIFwKICAgaW5jbHVkZS9n
dGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmggXAogICBpbmNsdWRlL2d0ZXN0L2ludGVy
bmFsL2d0ZXN0LXBvcnQuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC1h
cmNoLmggXAogICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIFwKICAgaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oIFwKLSAgaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC10eXBlLXV0aWwuaAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5
cGUtdXRpbC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QuaCBcCisg
IGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXBvcnQuaCBcCisgIGluY2x1ZGUv
Z3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXByaW50ZXJzLmgKIAogbGliX2xpYmd0ZXN0X21h
aW5fbGFfU09VUkNFUyA9IHNyYy9ndGVzdF9tYWluLmNjCiBsaWJfbGliZ3Rlc3RfbWFpbl9sYV9M
SUJBREQgPSBsaWIvbGliZ3Rlc3QubGEKIAotIyBCdWxpZCBydWxlcyBmb3Igc2FtcGxlcyBhbmQg
dGVzdHMuIEF1dG9tYWtlJ3MgbmFtaW5nIGZvciBzb21lIG9mCisjIEJ1aWxkIHJ1bGVzIGZvciBz
YW1wbGVzIGFuZCB0ZXN0cy4gQXV0b21ha2UncyBuYW1pbmcgZm9yIHNvbWUgb2YKICMgdGhlc2Ug
dmFyaWFibGVzIGlzbid0IHRlcnJpYmx5IG9idmlvdXMsIHNvIHRoaXMgaXMgYSBicmllZgogIyBy
ZWZlcmVuY2U6CiAjCiAjIFRFU1RTIC0tIFByb2dyYW1zIHJ1biBhdXRvbWF0aWNhbGx5IGJ5ICJt
YWtlIGNoZWNrIgogIyBjaGVja19QUk9HUkFNUyAtLSBQcm9ncmFtcyBidWlsdCBieSAibWFrZSBj
aGVjayIgYnV0IG5vdCBuZWNlc3NhcmlseSBydW4KIAotbm9pbnN0X0xUTElCUkFSSUVTID0gc2Ft
cGxlcy9saWJzYW1wbGVzLmxhCi0KLXNhbXBsZXNfbGlic2FtcGxlc19sYV9TT1VSQ0VTID0gc2Ft
cGxlcy9zYW1wbGUxLmNjIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxl
cy9zYW1wbGUxLmggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVzL3Nh
bXBsZTIuY2MgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVzL3NhbXBs
ZTIuaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvc2FtcGxlMy1p
bmwuaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvc2FtcGxlNC5j
YyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvc2FtcGxlNC5oCi0K
IFRFU1RTPQogVEVTVFNfRU5WSVJPTk1FTlQgPSBHVEVTVF9TT1VSQ0VfRElSPSIkKHNyY2Rpcikv
dGVzdCIgXAogICAgICAgICAgICAgICAgICAgICBHVEVTVF9CVUlMRF9ESVI9IiQodG9wX2J1aWxk
ZGlyKS90ZXN0IgogY2hlY2tfUFJPR1JBTVM9CiAKICMgQSBzaW1wbGUgc2FtcGxlIG9uIHVzaW5n
IGd0ZXN0LgotVEVTVFMgKz0gc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0Ci1jaGVja19QUk9HUkFN
UyArPSBzYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QKLXNhbXBsZXNfc2FtcGxlMV91bml0dGVzdF9T
T1VSQ0VTID0gc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjCitURVNUUyArPSBzYW1wbGVzL3Nh
bXBsZTFfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlMl91bml0dGVzdCBcCisgICAgc2Ft
cGxlcy9zYW1wbGUzX3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QgXAor
ICAgIHNhbXBsZXMvc2FtcGxlNV91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGU2X3VuaXR0
ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxl
OF91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVz
L3NhbXBsZTEwX3VuaXR0ZXN0CitjaGVja19QUk9HUkFNUyArPSBzYW1wbGVzL3NhbXBsZTFfdW5p
dHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlMl91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1w
bGUzX3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QgXAorICAgIHNhbXBs
ZXMvc2FtcGxlNV91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0IFwKKyAg
ICBzYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlOF91bml0dGVz
dCBcCisgICAgc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTEw
X3VuaXR0ZXN0CisKK3NhbXBsZXNfc2FtcGxlMV91bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9z
YW1wbGUxX3VuaXR0ZXN0LmNjIHNhbXBsZXMvc2FtcGxlMS5jYwogc2FtcGxlc19zYW1wbGUxX3Vu
aXR0ZXN0X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2FtcGxlcy9saWJzYW1wbGVzLmxhCi0KLSMgQW5vdGhlciBzYW1wbGUu
ICBJdCBhbHNvIHZlcmlmaWVzIHRoYXQgbGliZ3Rlc3Qgd29ya3MuCi1URVNUUyArPSBzYW1wbGVz
L3NhbXBsZTEwX3VuaXR0ZXN0Ci1jaGVja19QUk9HUkFNUyArPSBzYW1wbGVzL3NhbXBsZTEwX3Vu
aXR0ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWIvbGliZ3Rlc3QubGEK
K3NhbXBsZXNfc2FtcGxlMl91bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGUyX3VuaXR0
ZXN0LmNjIHNhbXBsZXMvc2FtcGxlMi5jYworc2FtcGxlc19zYW1wbGUyX3VuaXR0ZXN0X0xEQURE
ID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBsZTNfdW5pdHRlc3RfU09VUkNFUyA9IHNh
bXBsZXMvc2FtcGxlM191bml0dGVzdC5jYworc2FtcGxlc19zYW1wbGUzX3VuaXR0ZXN0X0xEQURE
ID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBsZTRfdW5pdHRlc3RfU09VUkNFUyA9IHNh
bXBsZXMvc2FtcGxlNF91bml0dGVzdC5jYyBzYW1wbGVzL3NhbXBsZTQuY2MKK3NhbXBsZXNfc2Ft
cGxlNF91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWluLmxhIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQorc2FtcGxlc19zYW1wbGU1X3Vu
aXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2Mgc2FtcGxlcy9zYW1w
bGUxLmNjCitzYW1wbGVzX3NhbXBsZTVfdW5pdHRlc3RfTERBREQgPSBsaWIvbGliZ3Rlc3RfbWFp
bi5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWIvbGliZ3Rlc3QubGEK
K3NhbXBsZXNfc2FtcGxlNl91bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGU2X3VuaXR0
ZXN0LmNjCitzYW1wbGVzX3NhbXBsZTZfdW5pdHRlc3RfTERBREQgPSBsaWIvbGliZ3Rlc3RfbWFp
bi5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWIvbGliZ3Rlc3QubGEK
K3NhbXBsZXNfc2FtcGxlN191bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGU3X3VuaXR0
ZXN0LmNjCitzYW1wbGVzX3NhbXBsZTdfdW5pdHRlc3RfTERBREQgPSBsaWIvbGliZ3Rlc3RfbWFp
bi5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWIvbGliZ3Rlc3QubGEK
K3NhbXBsZXNfc2FtcGxlOF91bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGU4X3VuaXR0
ZXN0LmNjCitzYW1wbGVzX3NhbXBsZThfdW5pdHRlc3RfTERBREQgPSBsaWIvbGliZ3Rlc3RfbWFp
bi5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWIvbGliZ3Rlc3QubGEK
KworIyBBbHNvIHZlcmlmeSB0aGF0IGxpYmd0ZXN0IHdvcmtzIGJ5IGl0c2VsZi4KK3NhbXBsZXNf
c2FtcGxlOV91bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjCitz
YW1wbGVzX3NhbXBsZTlfdW5pdHRlc3RfTERBREQgPSBsaWIvbGliZ3Rlc3QubGEKIHNhbXBsZXNf
c2FtcGxlMTBfdW5pdHRlc3RfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MK
IHNhbXBsZXNfc2FtcGxlMTBfdW5pdHRlc3RfTERBREQgPSBsaWIvbGliZ3Rlc3QubGEKIAogIyBU
aGlzIHRlc3RzIG1vc3QgY29uc3RydWN0cyBvZiBndGVzdCBhbmQgdmVyaWZpZXMgdGhhdCBsaWJn
dGVzdF9tYWluCi0jIHdvcmtzLgorIyBhbmQgbGliZ3Rlc3Qgd29yay4KIFRFU1RTICs9IHRlc3Qv
Z3Rlc3RfYWxsX3Rlc3QKIGNoZWNrX1BST0dSQU1TICs9IHRlc3QvZ3Rlc3RfYWxsX3Rlc3QKIHRl
c3RfZ3Rlc3RfYWxsX3Rlc3RfU09VUkNFUyA9IHRlc3QvZ3Rlc3RfYWxsX3Rlc3QuY2MKLXRlc3Rf
Z3Rlc3RfYWxsX3Rlc3RfTERBREQgPSBsaWIvbGliZ3Rlc3RfbWFpbi5sYQordGVzdF9ndGVzdF9h
bGxfdGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWluLmxhIFwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsaWIvbGliZ3Rlc3QubGEKIAogIyBUZXN0cyB0aGF0IGZ1c2VkIGd0ZXN0IGZp
bGVzIGNvbXBpbGUgYW5kIHdvcmsuCiBGVVNFRF9HVEVTVF9TUkMgPSBcCiAgIGZ1c2VkLXNyYy9n
dGVzdC9ndGVzdC1hbGwuY2MgXAotICBmdXNlZC1zcmMvZ3Rlc3QvZ3Rlc3RfbWFpbi5jYyBcCi0g
IGZ1c2VkLXNyYy9ndGVzdC9ndGVzdC5oCisgIGZ1c2VkLXNyYy9ndGVzdC9ndGVzdC5oIFwKKyAg
ZnVzZWQtc3JjL2d0ZXN0L2d0ZXN0X21haW4uY2MKIAoraWYgSEFWRV9QWVRIT04KIFRFU1RTICs9
IHRlc3QvZnVzZWRfZ3Rlc3RfdGVzdAogY2hlY2tfUFJPR1JBTVMgKz0gdGVzdC9mdXNlZF9ndGVz
dF90ZXN0CiB0ZXN0X2Z1c2VkX2d0ZXN0X3Rlc3RfU09VUkNFUyA9ICQoRlVTRURfR1RFU1RfU1JD
KSBcCkBAIC0yNzgsNyArMzIwLDIwIEBAIGZ1c2VkLWd0ZXN0OiAkKHBrZ2luY2x1ZGVfSEVBREVS
UykgJChwa2dpbmNsdWRlX2ludGVybmFsX0hFQURFUlMpIFwKIAogbWFpbnRhaW5lci1jbGVhbi1s
b2NhbDoKIAlybSAtcmYgIiQoc3JjZGlyKS9mdXNlZC1zcmMiCitlbmRpZgogCiAjIERlYXRoIHRl
c3RzIG1heSBwcm9kdWNlIGNvcmUgZHVtcHMgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeS4gSW4gY2Fz
ZQogIyB0aGlzIGhhcHBlbnMsIGNsZWFuIHRoZW0gdG8ga2VlcCBkaXN0Y2xlYW5jaGVjayBoYXBw
eS4KLUNMRUFORklMRVMgKz0gY29yZQorQ0xFQU5GSUxFUyA9IGNvcmUKKworIyBEaXNhYmxlcyAn
bWFrZSBpbnN0YWxsJyBhcyBpbnN0YWxsaW5nIGEgY29tcGlsZWQgdmVyc2lvbiBvZiBHb29nbGUK
KyMgVGVzdCBjYW4gbGVhZCB0byB1bmRlZmluZWQgYmVoYXZpb3IgZHVlIHRvIHZpb2xhdGlvbiBv
ZiB0aGUKKyMgT25lLURlZmluaXRpb24gUnVsZS4KKworaW5zdGFsbC1leGVjLWxvY2FsOgorCWVj
aG8gIidtYWtlIGluc3RhbGwnIGlzIGRhbmdlcm91cyBhbmQgbm90IHN1cHBvcnRlZC4gSW5zdGVh
ZCwgc2VlIFJFQURNRSBmb3IgaG93IHRvIGludGVncmF0ZSBHb29nbGUgVGVzdCBpbnRvIHlvdXIg
YnVpbGQgc3lzdGVtLiIKKwlmYWxzZQorCitpbnN0YWxsLWRhdGEtbG9jYWw6CisJZWNobyAiJ21h
a2UgaW5zdGFsbCcgaXMgZGFuZ2Vyb3VzIGFuZCBub3Qgc3VwcG9ydGVkLiBJbnN0ZWFkLCBzZWUg
UkVBRE1FIGZvciBob3cgdG8gaW50ZWdyYXRlIEdvb2dsZSBUZXN0IGludG8geW91ciBidWlsZCBz
eXN0ZW0uIgorCWZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9SRUFE
TUUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9SRUFETUUKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGVjNjExOTAwMjA5OTE1MGQ3MTU3NDlhMTZlMDNjMmY1NzM2ODZiYjUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvUkVBRE1FCisrKyAvZGV2L251bGwKQEAgLTEsNDE3ICswLDAgQEAKLUdvb2dsZSBD
KysgVGVzdGluZyBGcmFtZXdvcmsKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotaHR0
cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3QvCi0KLU92ZXJ2aWV3Ci0tLS0tLS0tLQot
Ci1Hb29nbGUncyBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIHRlc3RzIG9uIGEgdmFyaWV0eSBv
ZiBwbGF0Zm9ybXMKLShMaW51eCwgTWFjIE9TIFgsIFdpbmRvd3MsIFdpbmRvd3MgQ0UsIFN5bWJp
YW4sIGV0YykuICBCYXNlZCBvbiB0aGUKLXhVbml0IGFyY2hpdGVjdHVyZS4gIFN1cHBvcnRzIGF1
dG9tYXRpYyB0ZXN0IGRpc2NvdmVyeSwgYSByaWNoIHNldCBvZgotYXNzZXJ0aW9ucywgdXNlci1k
ZWZpbmVkIGFzc2VydGlvbnMsIGRlYXRoIHRlc3RzLCBmYXRhbCBhbmQgbm9uLWZhdGFsCi1mYWls
dXJlcywgdmFyaW91cyBvcHRpb25zIGZvciBydW5uaW5nIHRoZSB0ZXN0cywgYW5kIFhNTCB0ZXN0
IHJlcG9ydAotZ2VuZXJhdGlvbi4KLQotUGxlYXNlIHNlZSB0aGUgcHJvamVjdCBwYWdlIGFib3Zl
IGZvciBtb3JlIGluZm9ybWF0aW9uIGFzIHdlbGwgYXMgdGhlCi1tYWlsaW5nIGxpc3QgZm9yIHF1
ZXN0aW9ucywgZGlzY3Vzc2lvbnMsIGFuZCBkZXZlbG9wbWVudC4gIFRoZXJlIGlzCi1hbHNvIGFu
IElSQyBjaGFubmVsIG9uIE9GVEMgKGlyYy5vZnRjLm5ldCkgI2d0ZXN0IGF2YWlsYWJsZS4gIFBs
ZWFzZQotam9pbiB1cyEKLQotUmVxdWlyZW1lbnRzIGZvciBFbmQgVXNlcnMKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0KLUdvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHRvIGhhdmUgZmFpcmx5
IG1pbmltYWwgcmVxdWlyZW1lbnRzIHRvIGJ1aWxkCi1hbmQgdXNlIHdpdGggeW91ciBwcm9qZWN0
cywgYnV0IHRoZXJlIGFyZSBzb21lLiAgQ3VycmVudGx5LCB3ZSBzdXBwb3J0Ci1MaW51eCwgV2lu
ZG93cywgTWFjIE9TIFgsIGFuZCBDeWd3aW4uICBXZSB3aWxsIGFsc28gbWFrZSBvdXIgYmVzdAot
ZWZmb3J0IHRvIHN1cHBvcnQgb3RoZXIgcGxhdGZvcm1zIChlLmcuIFNvbGFyaXMsIEFJWCwgYW5k
IHovT1MpLgotSG93ZXZlciwgc2luY2UgY29yZSBtZW1iZXJzIG9mIHRoZSBHb29nbGUgVGVzdCBw
cm9qZWN0IGhhdmUgbm8gYWNjZXNzCi10byB0aGVzZSBwbGF0Zm9ybXMsIEdvb2dsZSBUZXN0IG1h
eSBoYXZlIG91dHN0YW5kaW5nIGlzc3VlcyB0aGVyZS4gIElmCi15b3Ugbm90aWNlIGFueSBwcm9i
bGVtcyBvbiB5b3VyIHBsYXRmb3JtLCBwbGVhc2Ugbm90aWZ5Ci1nb29nbGV0ZXN0ZnJhbWV3b3Jr
QGdvb2dsZWdyb3Vwcy5jb20uICBQYXRjaGVzIGZvciBmaXhpbmcgdGhlbSBhcmUKLWV2ZW4gbW9y
ZSB3ZWxjb21lIQotCi0jIyMgTGludXggUmVxdWlyZW1lbnRzICMjIwotCi1UaGVzZSBhcmUgdGhl
IGJhc2UgcmVxdWlyZW1lbnRzIHRvIGJ1aWxkIGFuZCB1c2UgR29vZ2xlIFRlc3QgZnJvbSBhIHNv
dXJjZQotcGFja2FnZSAoYXMgZGVzY3JpYmVkIGJlbG93KToKLSAgKiBHTlUtY29tcGF0aWJsZSBN
YWtlIG9yIGdtYWtlCi0gICogUE9TSVgtc3RhbmRhcmQgc2hlbGwKLSAgKiBQT1NJWCgtMikgUmVn
dWxhciBFeHByZXNzaW9ucyAocmVnZXguaCkKLSAgKiBBIEMrKzk4LXN0YW5kYXJkLWNvbXBsaWFu
dCBjb21waWxlcgotCi0jIyMgV2luZG93cyBSZXF1aXJlbWVudHMgIyMjCi0KLSAgKiBNaWNyb3Nv
ZnQgVmlzdWFsIEMrKyA3LjEgb3IgbmV3ZXIKLQotIyMjIEN5Z3dpbiBSZXF1aXJlbWVudHMgIyMj
Ci0KLSAgKiBDeWd3aW4gMS41LjI1LTE0IG9yIG5ld2VyCi0KLSMjIyBNYWMgT1MgWCBSZXF1aXJl
bWVudHMgIyMjCi0KLSAgKiBNYWMgT1MgWCAxMC40IFRpZ2VyIG9yIG5ld2VyCi0gICogRGV2ZWxv
cGVyIFRvb2xzIEluc3RhbGxlZAotCi1BbHNvLCB5b3UnbGwgbmVlZCBDTWFrZSAyLjYuNCBvciBo
aWdoZXIgaWYgeW91IHdhbnQgdG8gYnVpbGQgdGhlCi1zYW1wbGVzIHVzaW5nIHRoZSBwcm92aWRl
ZCBDTWFrZSBzY3JpcHQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHBsYXRmb3JtLgotCi1SZXF1aXJlbWVu
dHMgZm9yIENvbnRyaWJ1dG9ycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotV2Ug
d2VsY29tZSBwYXRjaGVzLiAgSWYgeW91IHBsYW4gdG8gY29udHJpYnV0ZSBhIHBhdGNoLCB5b3Ug
bmVlZCB0bwotYnVpbGQgR29vZ2xlIFRlc3QgYW5kIGl0cyBvd24gdGVzdHMgZnJvbSBhbiBTVk4g
Y2hlY2tvdXQgKGRlc2NyaWJlZAotYmVsb3cpLCB3aGljaCBoYXMgZnVydGhlciByZXF1aXJlbWVu
dHM6Ci0KLSAgKiBQeXRob24gdmVyc2lvbiAyLjMgb3IgbmV3ZXIgKGZvciBydW5uaW5nIHNvbWUg
b2YgdGhlIHRlc3RzIGFuZAotICAgIHJlLWdlbmVyYXRpbmcgY2VydGFpbiBzb3VyY2UgZmlsZXMg
ZnJvbSB0ZW1wbGF0ZXMpCi0gICogQ01ha2UgMi42LjQgb3IgbmV3ZXIKLQotR2V0dGluZyB0aGUg
U291cmNlCi0tLS0tLS0tLS0tLS0tLS0tLS0KLQotVGhlcmUgYXJlIHR3byBwcmltYXJ5IHdheXMg
b2YgZ2V0dGluZyBHb29nbGUgVGVzdCdzIHNvdXJjZSBjb2RlOiB5b3UKLWNhbiBkb3dubG9hZCBh
IHN0YWJsZSBzb3VyY2UgcmVsZWFzZSBpbiB5b3VyIHByZWZlcnJlZCBhcmNoaXZlIGZvcm1hdCwK
LW9yIGRpcmVjdGx5IGNoZWNrIG91dCB0aGUgc291cmNlIGZyb20gb3VyIFN1YnZlcnNpb24gKFNW
TikgcmVwb3NpdGFyeS4KLVRoZSBTVk4gY2hlY2tvdXQgcmVxdWlyZXMgYSBmZXcgZXh0cmEgc3Rl
cHMgYW5kIHNvbWUgZXh0cmEgc29mdHdhcmUKLXBhY2thZ2VzIG9uIHlvdXIgc3lzdGVtLCBidXQg
bGV0cyB5b3UgdHJhY2sgdGhlIGxhdGVzdCBkZXZlbG9wbWVudCBhbmQKLW1ha2UgcGF0Y2hlcyBt
dWNoIG1vcmUgZWFzaWx5LCBzbyB3ZSBoaWdobHkgZW5jb3VyYWdlIGl0LgotCi0jIyMgU291cmNl
IFBhY2thZ2UgIyMjCi0KLUdvb2dsZSBUZXN0IGlzIHJlbGVhc2VkIGluIHZlcnNpb25lZCBzb3Vy
Y2UgcGFja2FnZXMgd2hpY2ggY2FuIGJlCi1kb3dubG9hZGVkIGZyb20gdGhlIGRvd25sb2FkIHBh
Z2UgWzFdLiAgU2V2ZXJhbCBkaWZmZXJlbnQgYXJjaGl2ZQotZm9ybWF0cyBhcmUgcHJvdmlkZWQs
IGJ1dCB0aGUgb25seSBkaWZmZXJlbmNlIGlzIHRoZSB0b29scyB1c2VkIHRvCi1tYW5pcHVsYXRl
IHRoZW0sIGFuZCB0aGUgc2l6ZSBvZiB0aGUgcmVzdWx0aW5nIGZpbGUuICBEb3dubG9hZAotd2hp
Y2hldmVyIHlvdSBhcmUgbW9zdCBjb21mb3J0YWJsZSB3aXRoLgotCi0gIFsxXSBodHRwOi8vY29k
ZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC9kb3dubG9hZHMvbGlzdAotCi1PbmNlIHRoZSBwYWNr
YWdlIGlzIGRvd25sb2FkZWQsIGV4cGFuZCBpdCB1c2luZyB3aGljaGV2ZXIgdG9vbHMgeW91Ci1w
cmVmZXIgZm9yIHRoYXQgdHlwZS4gIFRoaXMgd2lsbCByZXN1bHQgaW4gYSBuZXcgZGlyZWN0b3J5
IHdpdGggdGhlCi1uYW1lICJndGVzdC1YLlkuWiIgd2hpY2ggY29udGFpbnMgYWxsIG9mIHRoZSBz
b3VyY2UgY29kZS4gIEhlcmUgYXJlCi1zb21lIGV4YW1wbGVzIG9uIExpbnV4OgotCi0gIHRhciAt
eHZ6ZiBndGVzdC1YLlkuWi50YXIuZ3oKLSAgdGFyIC14dmpmIGd0ZXN0LVguWS5aLnRhci5iejIK
LSAgdW56aXAgZ3Rlc3QtWC5ZLlouemlwCi0KLSMjIyBTVk4gQ2hlY2tvdXQgIyMjCi0KLVRvIGNo
ZWNrIG91dCB0aGUgbWFpbiBicmFuY2ggKGFsc28ga25vd24gYXMgdGhlICJ0cnVuayIpIG9mIEdv
b2dsZQotVGVzdCwgcnVuIHRoZSBmb2xsb3dpbmcgU3VidmVyc2lvbiBjb21tYW5kOgotCi0gIHN2
biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvIGd0
ZXN0LXN2bgotCi1TZXR0aW5nIHVwIHRoZSBCdWlsZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQot
VG8gYnVpbGQgR29vZ2xlIFRlc3QgYW5kIHlvdXIgdGVzdHMgdGhhdCB1c2UgaXQsIHlvdSBuZWVk
IHRvIHRlbGwgeW91cgotYnVpbGQgc3lzdGVtIHdoZXJlIHRvIGZpbmQgaXRzIGhlYWRlcnMgYW5k
IHNvdXJjZSBmaWxlcy4gIFRoZSBleGFjdAotd2F5IHRvIGRvIGl0IGRlcGVuZHMgb24gd2hpY2gg
YnVpbGQgc3lzdGVtIHlvdSB1c2UsIGFuZCBpcyB1c3VhbGx5Ci1zdHJhaWdodGZvcndhcmQuCi0K
LSMjIyBHZW5lcmljIEJ1aWxkIEluc3RydWN0aW9ucyAjIyMKLQotU3VwcG9zZSB5b3UgcHV0IEdv
b2dsZSBUZXN0IGluIGRpcmVjdG9yeSAke0dURVNUX0RJUn0uICBUbyBidWlsZCBpdCwKLWNyZWF0
ZSBhIGxpYnJhcnkgYnVpbGQgdGFyZ2V0IChvciBhIHByb2plY3QgYXMgY2FsbGVkIGJ5IFZpc3Vh
bCBTdHVkaW8KLWFuZCBYY29kZSkgdG8gY29tcGlsZQotCi0gICR7R1RFU1RfRElSfS9zcmMvZ3Rl
c3QtYWxsLmNjCi0KLXdpdGgKLQotICAke0dURVNUX0RJUn0vaW5jbHVkZSBhbmQgJHtHVEVTVF9E
SVJ9Ci0KLWluIHRoZSBoZWFkZXIgc2VhcmNoIHBhdGguICBBc3N1bWluZyBhIExpbnV4LWxpa2Ug
c3lzdGVtIGFuZCBnY2MsCi1zb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nIHdpbGwgZG86Ci0K
LSAgZysrIC1JJHtHVEVTVF9ESVJ9L2luY2x1ZGUgLUkke0dURVNUX0RJUn0gLWMgJHtHVEVTVF9E
SVJ9L3NyYy9ndGVzdC1hbGwuY2MKLSAgYXIgLXJ2IGxpYmd0ZXN0LmEgZ3Rlc3QtYWxsLm8KLQot
TmV4dCwgeW91IHNob3VsZCBjb21waWxlIHlvdXIgdGVzdCBzb3VyY2UgZmlsZSB3aXRoCi0ke0dU
RVNUX0RJUn0vaW5jbHVkZSBpbiB0aGUgaGVhZGVyIHNlYXJjaCBwYXRoLCBhbmQgbGluayBpdCB3
aXRoIGd0ZXN0Ci1hbmQgYW55IG90aGVyIG5lY2Vzc2FyeSBsaWJyYXJpZXM6Ci0KLSAgZysrIC1J
JHtHVEVTVF9ESVJ9L2luY2x1ZGUgcGF0aC90by95b3VyX3Rlc3QuY2MgbGliZ3Rlc3QuYSAtbyB5
b3VyX3Rlc3QKLQotQXMgYW4gZXhhbXBsZSwgdGhlIG1ha2UvIGRpcmVjdG9yeSBjb250YWlucyBh
IE1ha2VmaWxlIHRoYXQgeW91IGNhbgotdXNlIHRvIGJ1aWxkIEdvb2dsZSBUZXN0IG9uIHN5c3Rl
bXMgd2hlcmUgR05VIG1ha2UgaXMgYXZhaWxhYmxlCi0oZS5nLiBMaW51eCwgTWFjIE9TIFgsIGFu
ZCBDeWd3aW4pLiAgSXQgZG9lc24ndCB0cnkgdG8gYnVpbGQgR29vZ2xlCi1UZXN0J3Mgb3duIHRl
c3RzLiAgSW5zdGVhZCwgaXQganVzdCBidWlsZHMgdGhlIEdvb2dsZSBUZXN0IGxpYnJhcnkgYW5k
Ci1hIHNhbXBsZSB0ZXN0LiAgWW91IGNhbiB1c2UgaXQgYXMgYSBzdGFydGluZyBwb2ludCBmb3Ig
eW91ciBvd24gYnVpbGQKLXNjcmlwdC4KLQotSWYgdGhlIGRlZmF1bHQgc2V0dGluZ3MgYXJlIGNv
cnJlY3QgZm9yIHlvdXIgZW52aXJvbm1lbnQsIHRoZQotZm9sbG93aW5nIGNvbW1hbmRzIHNob3Vs
ZCBzdWNjZWVkOgotCi0gIGNkICR7R1RFU1RfRElSfS9tYWtlCi0gIG1ha2UKLSAgLi9zYW1wbGUx
X3VuaXR0ZXN0Ci0KLUlmIHlvdSBzZWUgZXJyb3JzLCB0cnkgdG8gdHdlYWsgdGhlIGNvbnRlbnRz
IG9mIG1ha2UvTWFrZWZpbGUgdG8gbWFrZQotdGhlbSBnbyBhd2F5LiAgVGhlcmUgYXJlIGluc3Ry
dWN0aW9ucyBpbiBtYWtlL01ha2VmaWxlIG9uIGhvdyB0byBkbwotaXQuCi0KLSMjIyBVc2luZyBD
TWFrZSAjIyMKLQotR29vZ2xlIFRlc3QgY29tZXMgd2l0aCBhIENNYWtlIGJ1aWxkIHNjcmlwdCAo
Q01ha2VMaXN0cy50eHQpIHRoYXQgY2FuCi1iZSB1c2VkIG9uIGEgd2lkZSByYW5nZSBvZiBwbGF0
Zm9ybXMgKCJDIiBzdGFuZHMgZm9yIGNyb3NzLXBsYXRvZnJtLikuCi1JZiB5b3UgZG9uJ3QgaGF2
ZSBDTWFrZSBpbnN0YWxsZWQgYWxyZWFkeSwgeW91IGNhbiBkb3dubG9hZCBpdCBmb3IKLWZyZWUg
ZnJvbSBodHRwOi8vd3d3LmNtYWtlLm9yZy8uCi0KLUNNYWtlIHdvcmtzIGJ5IGdlbmVyYXRpbmcg
bmF0aXZlIG1ha2VmaWxlcyBvciBidWlsZCBwcm9qZWN0cyB0aGF0IGNhbgotYmUgdXNlZCBpbiB0
aGUgY29tcGlsZXIgZW52aXJvbm1lbnQgb2YgeW91ciBjaG9pY2UuICBUaGUgdHlwaWNhbAotd29y
a2Zsb3cgc3RhcnRzIHdpdGg6Ci0KLSAgbWtkaXIgbXlidWlsZCAgICAgICAjIENyZWF0ZSBhIGRp
cmVjdG9yeSB0byBob2xkIHRoZSBidWlsZCBvdXRwdXQuCi0gIGNkIG15YnVpbGQKLSAgY21ha2Ug
JHtHVEVTVF9ESVJ9ICAjIEdlbmVyYXRlIG5hdGl2ZSBidWlsZCBzY3JpcHRzLgotCi1JZiB5b3Ug
d2FudCB0byBidWlsZCBHb29nbGUgVGVzdCdzIHNhbXBsZXMsIHlvdSBzaG91bGQgcmVwbGFjZSB0
aGUKLWxhc3QgY29tbWFuZCB3aXRoCi0KLSAgY21ha2UgLURidWlsZF9ndGVzdF9zYW1wbGVzPU9O
ICR7R1RFU1RfRElSfQotCi1JZiB5b3UgYXJlIG9uIGEgKm5peCBzeXN0ZW0sIHlvdSBzaG91bGQg
bm93IHNlZSBhIE1ha2VmaWxlIGluIHRoZQotY3VycmVudCBkaXJlY3RvcnkuICBKdXN0IHR5cGUg
J21ha2UnIHRvIGJ1aWxkIGd0ZXN0LgotCi1JZiB5b3UgdXNlIFdpbmRvd3MgYW5kIGhhdmUgVmlz
dHVhbCBTdHVkaW8gaW5zdGFsbGVkLCBhIGd0ZXN0LnNsbiBmaWxlCi1hbmQgc2V2ZXJhbCAudmNw
cm9qIGZpbGVzIHdpbGwgYmUgY3JlYXRlZC4gIFlvdSBjYW4gdGhlbiBidWlsZCB0aGVtCi11c2lu
ZyBWaXN1YWwgU3R1ZGlvLgotCi1PbiBNYWMgT1MgWCB3aXRoIFhjb2RlIGluc3RhbGxlZCwgYSAu
eGNvZGVwcm9qIGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQuCi0KLSMjIyBMZWdhY3kgQnVpbGQgU2Ny
aXB0cyAjIyMKLQotQmVmb3JlIHNldHRsaW5nIG9uIENNYWtlLCB3ZSBoYXZlIGJlZW4gcHJvdmlk
aW5nIGhhbmQtbWFpbnRhaW5lZCBidWlsZAotcHJvamVjdHMvc2NyaXB0cyBmb3IgVmlzdWFsIFN0
dWRpbywgWGNvZGUsIGFuZCBBdXRvdG9vbHMuICBXaGlsZSB3ZQotY29udGludWUgdG8gcHJvdmlk
ZSB0aGVtIGZvciBjb252ZW5pZW5jZSwgdGhleSBhcmUgbm90IGFjdGl2ZWx5Ci1tYWludGFpbmVk
IGFueSBtb3JlLiAgV2UgaGlnaGx5IHJlY29tbWVuZCB0aGF0IHlvdSBmb2xsb3cgdGhlCi1pbnN0
cnVjdGlvbnMgaW4gdGhlIHByZXZpb3VzIHR3byBzZWN0aW9ucyB0byBpbnRlZ3JhdGUgR29vZ2xl
IFRlc3QKLXdpdGggeW91ciBleGlzdGluZyBidWlsZCBzeXN0ZW0uCi0KLUlmIHlvdSBzdGlsbCBu
ZWVkIHRvIHVzZSB0aGUgbGVnYWN5IGJ1aWxkIHNjcmlwdHMsIGhlcmUncyBob3c6Ci0KLVRoZSBt
c3ZjXCBmb2xkZXIgY29udGFpbnMgdHdvIHNvbHV0aW9ucyB3aXRoIFZpc3VhbCBDKysgcHJvamVj
dHMuCi1PcGVuIHRoZSBndGVzdC5zbG4gb3IgZ3Rlc3QtbWQuc2xuIGZpbGUgdXNpbmcgVmlzdWFs
IFN0dWRpbywgYW5kIHlvdQotYXJlIHJlYWR5IHRvIGJ1aWxkIEdvb2dsZSBUZXN0IHRoZSBzYW1l
IHdheSB5b3UgYnVpbGQgYW55IFZpc3VhbAotU3R1ZGlvIHByb2plY3QuICBGaWxlcyB0aGF0IGhh
dmUgbmFtZXMgZW5kaW5nIHdpdGggLW1kIHVzZSBETEwKLXZlcnNpb25zIG9mIE1pY3Jvc29mdCBy
dW50aW1lIGxpYnJhcmllcyAodGhlIC9NRCBvciB0aGUgL01EZCBjb21waWxlcgotb3B0aW9uKS4g
IEZpbGVzIHdpdGhvdXQgdGhhdCBzdWZmaXggdXNlIHN0YXRpYyB2ZXJzaW9ucyBvZiB0aGUgcnVu
dGltZQotbGlicmFyaWVzICh0aGUgL01UIG9yIHRoZSAvTVRkIG9wdGlvbikuICBQbGVhc2Ugbm90
ZSB0aGF0IG9uZSBtdXN0IHVzZQotdGhlIHNhbWUgb3B0aW9uIHRvIGNvbXBpbGUgYm90aCBndGVz
dCBhbmQgdGhlIHRlc3QgY29kZS4gIElmIHlvdSB1c2UKLVZpc3VhbCBTdHVkaW8gMjAwNSBvciBh
Ym92ZSwgd2UgcmVjb21tZW5kIHRoZSAtbWQgdmVyc2lvbiBhcyAvTUQgaXMKLXRoZSBkZWZhdWx0
IGZvciBuZXcgcHJvamVjdHMgaW4gdGhlc2UgdmVyc2lvbnMgb2YgVmlzdWFsIFN0dWRpby4KLQot
T24gTWFjIE9TIFgsIG9wZW4gdGhlIGd0ZXN0Lnhjb2RlcHJvaiBpbiB0aGUgeGNvZGUvIGZvbGRl
ciB1c2luZwotWGNvZGUuICBCdWlsZCB0aGUgImd0ZXN0IiB0YXJnZXQuICBUaGUgdW5pdmVyc2Fs
IGJpbmFyeSBmcmFtZXdvcmsgd2lsbAotZW5kIHVwIGluIHlvdXIgc2VsZWN0ZWQgYnVpbGQgZGly
ZWN0b3J5IChzZWxlY3RlZCBpbiB0aGUgWGNvZGUKLSJQcmVmZXJlbmNlcy4uLiIgLT4gIkJ1aWxk
aW5nIiBwYW5lIGFuZCBkZWZhdWx0cyB0byB4Y29kZS9idWlsZCkuCi1BbHRlcm5hdGl2ZWx5LCBh
dCB0aGUgY29tbWFuZCBsaW5lLCBlbnRlcjoKLQotICB4Y29kZWJ1aWxkCi0KLVRoaXMgd2lsbCBi
dWlsZCB0aGUgIlJlbGVhc2UiIGNvbmZpZ3VyYXRpb24gb2YgZ3Rlc3QuZnJhbWV3b3JrIGluIHlv
dXIKLWRlZmF1bHQgYnVpbGQgbG9jYXRpb24uICBTZWUgdGhlICJ4Y29kZWJ1aWxkIiBtYW4gcGFn
ZSBmb3IgbW9yZQotaW5mb3JtYXRpb24gYWJvdXQgYnVpbGRpbmcgZGlmZmVyZW50IGNvbmZpZ3Vy
YXRpb25zIGFuZCBidWlsZGluZyBpbgotZGlmZmVyZW50IGxvY2F0aW9ucy4KLQotVHdlYWtpbmcg
R29vZ2xlIFRlc3QKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUdvb2dsZSBUZXN0IGNhbiBiZSB1
c2VkIGluIGRpdmVyc2UgZW52aXJvbm1lbnRzLiAgVGhlIGRlZmF1bHQKLWNvbmZpZ3VyYXRpb24g
bWF5IG5vdCB3b3JrIChvciBtYXkgbm90IHdvcmsgd2VsbCkgb3V0IG9mIHRoZSBib3ggaW4KLXNv
bWUgZW52aXJvbm1lbnRzLiAgSG93ZXZlciwgeW91IGNhbiBlYXNpbHkgdHdlYWsgR29vZ2xlIFRl
c3QgYnkKLWRlZmluaW5nIGNvbnRyb2wgbWFjcm9zIG9uIHRoZSBjb21waWxlciBjb21tYW5kIGxp
bmUuICBHZW5lcmFsbHksCi10aGVzZSBtYWNyb3MgYXJlIG5hbWVkIGxpa2UgR1RFU1RfWFlaIGFu
ZCB5b3UgZGVmaW5lIHRoZW0gdG8gZWl0aGVyIDEKLW9yIDAgdG8gZW5hYmxlIG9yIGRpc2FibGUg
YSBjZXJ0YWluIGZlYXR1cmUuCi0KLVdlIGxpc3QgdGhlIG1vc3QgZnJlcXVlbnRseSB1c2VkIG1h
Y3JvcyBiZWxvdy4gIEZvciBhIGNvbXBsZXRlIGxpc3QsCi1zZWUgZmlsZSBpbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LXBvcnQuaC4KLQotIyMjIENob29zaW5nIGEgVFIxIFR1cGxlIExpYnJh
cnkgIyMjCi0KLVNvbWUgR29vZ2xlIFRlc3QgZmVhdHVyZXMgcmVxdWlyZSB0aGUgQysrIFRlY2hu
aWNhbCBSZXBvcnQgMSAoVFIxKQotdHVwbGUgbGlicmFyeSwgd2hpY2ggaXMgbm90IHlldCBhdmFp
bGFibGUgd2l0aCBhbGwgY29tcGlsZXJzLiAgVGhlCi1nb29kIG5ld3MgaXMgdGhhdCBHb29nbGUg
VGVzdCBpbXBsZW1lbnRzIGEgc3Vic2V0IG9mIFRSMSB0dXBsZSB0aGF0J3MKLWVub3VnaCBmb3Ig
aXRzIG93biBuZWVkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHVzZSB0aGlzIHdoZW4gdGhlCi1j
b21waWxlciBkb2Vzbid0IHByb3ZpZGUgVFIxIHR1cGxlLgotCi1Vc3VhbGx5IHlvdSBkb24ndCBu
ZWVkIHRvIGNhcmUgYWJvdXQgd2hpY2ggdHVwbGUgbGlicmFyeSBHb29nbGUgVGVzdAotdXNlcy4g
IEhvd2V2ZXIsIGlmIHlvdXIgcHJvamVjdCBhbHJlYWR5IHVzZXMgVFIxIHR1cGxlLCB5b3UgbmVl
ZCB0bwotdGVsbCBHb29nbGUgVGVzdCB0byB1c2UgdGhlIHNhbWUgVFIxIHR1cGxlIGxpYnJhcnkg
dGhlIHJlc3Qgb2YgeW91cgotcHJvamVjdCB1c2VzLCBvciB0aGUgdHdvIHR1cGxlIGltcGxlbWVu
dGF0aW9ucyB3aWxsIGNsYXNoLiAgVG8gZG8KLXRoYXQsIGFkZAotCi0gIC1ER1RFU1RfVVNFX09X
Tl9UUjFfVFVQTEU9MAotCi10byB0aGUgY29tcGlsZXIgZmxhZ3Mgd2hpbGUgY29tcGlsaW5nIEdv
b2dsZSBUZXN0IGFuZCB5b3VyIHRlc3RzLiAgSWYKLXlvdSB3YW50IHRvIGZvcmNlIEdvb2dsZSBU
ZXN0IHRvIHVzZSBpdHMgb3duIHR1cGxlIGxpYnJhcnksIGp1c3QgYWRkCi0KLSAgLURHVEVTVF9V
U0VfT1dOX1RSMV9UVVBMRT0xCi0KLXRvIHRoZSBjb21waWxlciBmbGFncyBpbnN0ZWFkLgotCi1J
ZiB5b3UgZG9uJ3Qgd2FudCBHb29nbGUgVGVzdCB0byB1c2UgdHVwbGUgYXQgYWxsLCBhZGQKLQot
ICAtREdURVNUX0hBU19UUjFfVFVQTEU9MAotCi1hbmQgYWxsIGZlYXR1cmVzIHVzaW5nIHR1cGxl
IHdpbGwgYmUgZGlzYWJsZWQuCi0KLSMjIyBNdWx0aS10aHJlYWRlZCBUZXN0cyAjIyMKLQotR29v
Z2xlIFRlc3QgaXMgdGhyZWFkLXNhZmUgd2hlcmUgdGhlIHB0aHJlYWQgbGlicmFyeSBpcyBhdmFp
bGFibGUuCi1BZnRlciAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4sIHlvdSBjYW4gY2hlY2sgdGhl
IEdURVNUX0lTX1RIUkVBRFNBRkUKLW1hY3JvIHRvIHNlZSB3aGV0aGVyIHRoaXMgaXMgdGhlIGNh
c2UgKHllcyBpZiB0aGUgbWFjcm8gaXMgI2RlZmluZWQgdG8KLTEsIG5vIGlmIGl0J3MgdW5kZWZp
bmVkLikuCi0KLUlmIEdvb2dsZSBUZXN0IGRvZXNuJ3QgY29ycmVjdGx5IGRldGVjdCB3aGV0aGVy
IHB0aHJlYWQgaXMgYXZhaWxhYmxlCi1pbiB5b3VyIGVudmlyb25tZW50LCB5b3UgY2FuIGZvcmNl
IGl0IHdpdGgKLQotICAtREdURVNUX0hBU19QVEhSRUFEPTEKLQotb3IKLQotICAtREdURVNUX0hB
U19QVEhSRUFEPTAKLQotV2hlbiBHb29nbGUgVGVzdCB1c2VzIHB0aHJlYWQsIHlvdSBtYXkgbmVl
ZCB0byBhZGQgZmxhZ3MgdG8geW91cgotY29tcGlsZXIgYW5kL29yIGxpbmtlciB0byBzZWxlY3Qg
dGhlIHB0aHJlYWQgbGlicmFyeSwgb3IgeW91J2xsIGdldAotbGluayBlcnJvcnMuICBJZiB5b3Ug
dXNlIHRoZSBDTWFrZSBzY3JpcHQgb3IgdGhlIGRlcHJlY2F0ZWQgQXV0b3Rvb2xzCi1zY3JpcHQs
IHRoaXMgaXMgdGFrZW4gY2FyZSBvZiBmb3IgeW91LiAgSWYgeW91IHVzZSB5b3VyIG93biBidWls
ZAotc2NyaXB0LCB5b3UnbGwgbmVlZCB0byByZWFkIHlvdXIgY29tcGlsZXIgYW5kIGxpbmtlcidz
IG1hbnVhbCB0bwotZmlndXJlIG91dCB3aGF0IGZsYWdzIHRvIGFkZC4KLQotIyMjIEFzIGEgU2hh
cmVkIExpYnJhcnkgKERMTCkgIyMjCi0KLUdvb2dsZSBUZXN0IGlzIGNvbXBhY3QsIHNvIG1vc3Qg
dXNlcnMgY2FuIGJ1aWxkIGFuZCBsaW5rIGl0IGFzIGEKLXN0YXRpYyBsaWJyYXJ5IGZvciB0aGUg
c2ltcGxpY2l0eS4gIFlvdSBjYW4gY2hvb3NlIHRvIHVzZSBHb29nbGUgVGVzdAotYXMgYSBzaGFy
ZWQgbGlicmFyeSAoa25vd24gYXMgYSBETEwgb24gV2luZG93cykgaWYgeW91IHByZWZlci4KLQot
VG8gY29tcGlsZSBndGVzdCBhcyBhIHNoYXJlZCBsaWJyYXJ5LCBhZGQKLQotICAtREdURVNUX0NS
RUFURV9TSEFSRURfTElCUkFSWT0xCi0KLXRvIHRoZSBjb21waWxlciBmbGFncy4gIFlvdSdsbCBh
bHNvIG5lZWQgdG8gdGVsbCB0aGUgbGlua2VyIHRvIHByb2R1Y2UKLWEgc2hhcmVkIGxpYnJhcnkg
aW5zdGVhZCAtIGNvbnN1bHQgeW91ciBsaW5rZXIncyBtYW51YWwgZm9yIGhvdyB0byBkbwotaXQu
Ci0KLVRvIGNvbXBpbGUgeW91ciB0ZXN0cyB0aGF0IHVzZSB0aGUgZ3Rlc3Qgc2hhcmVkIGxpYnJh
cnksIGFkZAotCi0gIC1ER1RFU1RfTElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZPTEKLQotdG8gdGhl
IGNvbXBpbGVyIGZsYWdzLgotCi0jIyMgQXZvaWRpbmcgTWFjcm8gTmFtZSBDbGFzaGVzICMjIwot
Ci1JbiBDKyssIG1hY3JvcyBkb24ndCBvYmV5IG5hbWVzcGFjZXMuICBUaGVyZWZvcmUgdHdvIGxp
YnJhcmllcyB0aGF0Ci1ib3RoIGRlZmluZSBhIG1hY3JvIG9mIHRoZSBzYW1lIG5hbWUgd2lsbCBj
bGFzaCBpZiB5b3UgI2luY2x1ZGUgYm90aAotZGVmaW5pdGlvbnMuICBJbiBjYXNlIGEgR29vZ2xl
IFRlc3QgbWFjcm8gY2xhc2hlcyB3aXRoIGFub3RoZXIKLWxpYnJhcnksIHlvdSBjYW4gZm9yY2Ug
R29vZ2xlIFRlc3QgdG8gcmVuYW1lIGl0cyBtYWNybyB0byBhdm9pZCB0aGUKLWNvbmZsaWN0Lgot
Ci1TcGVjaWZpY2FsbHksIGlmIGJvdGggR29vZ2xlIFRlc3QgYW5kIHNvbWUgb3RoZXIgY29kZSBk
ZWZpbmUgbWFjcm8KLUZPTywgeW91IGNhbiBhZGQKLQotICAtREdURVNUX0RPTlRfREVGSU5FX0ZP
Tz0xCi0KLXRvIHRoZSBjb21waWxlciBmbGFncyB0byB0ZWxsIEdvb2dsZSBUZXN0IHRvIGNoYW5n
ZSB0aGUgbWFjcm8ncyBuYW1lCi1mcm9tIEZPTyB0byBHVEVTVF9GT08uICBDdXJyZW50bHkgRk9P
IGNhbiBiZSBGQUlMLCBTVUNDRUVELCBvciBURVNULgotRm9yIGV4YW1wbGUsIHdpdGggLURHVEVT
VF9ET05UX0RFRklORV9URVNUPTEsIHlvdSdsbCBuZWVkIHRvIHdyaXRlCi0KLSAgR1RFU1RfVEVT
VChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KLQotaW5zdGVhZCBvZgotCi0gIFRFU1QoU29t
ZVRlc3QsIERvZXNUaGlzKSB7IC4uLiB9Ci0KLWluIG9yZGVyIHRvIGRlZmluZSBhIHRlc3QuCi0K
LVVwZ3JhdGluZyBmcm9tIGFuIEVhcmxpZXIgVmVyc2lvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLVdlIHN0cml2ZSB0byBrZWVwIEdvb2dsZSBUZXN0IHJlbGVhc2VzIGJh
Y2t3YXJkIGNvbXBhdGlibGUuCi1Tb21ldGltZXMsIHRob3VnaCwgd2UgaGF2ZSB0byBtYWtlIHNv
bWUgYnJlYWtpbmcgY2hhbmdlcyBmb3IgdGhlCi11c2VycycgbG9uZy10ZXJtIGJlbmVmaXRzLiAg
VGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB3aGF0IHlvdSdsbCBuZWVkIHRvCi1kbyBpZiB5b3UgYXJl
IHVwZ3JhZGluZyBmcm9tIGFuIGVhcmxpZXIgdmVyc2lvbiBvZiBHb29nbGUgVGVzdC4KLQotIyMj
IFVwZ3JhZGluZyBmcm9tIDEuMy4wIG9yIEVhcmxpZXIgIyMjCi0KLVlvdSBtYXkgbmVlZCB0byBl
eHBsaWNpdGx5IGVuYWJsZSBvciBkaXNhYmxlIEdvb2dsZSBUZXN0J3Mgb3duIFRSMQotdHVwbGUg
bGlicmFyeS4gIFNlZSB0aGUgaW5zdHJ1Y3Rpb25zIGluIHNlY3Rpb24gIkNob29zaW5nIGEgVFIx
IFR1cGxlCi1MaWJyYXJ5Ii4KLQotIyMjIFVwZ3JhZGluZyBmcm9tIDEuNC4wIG9yIEVhcmxpZXIg
IyMjCi0KLVRoZSBBdXRvdG9vbHMgYnVpbGQgc2NyaXB0IChjb25maWd1cmUgKyBtYWtlKSBpcyBu
byBsb25nZXIgb2ZmaWNpYWxseQotc3VwcG9ydHRlZC4gIFlvdSBhcmUgZW5jb3VyYWdlZCB0byBt
aWdyYXRlIHRvIHlvdXIgb3duIGJ1aWxkIHN5c3RlbSBvcgotdXNlIENNYWtlLiAgSWYgeW91IHN0
aWxsIG5lZWQgdG8gdXNlIEF1dG90b29scywgeW91IGNhbiBmaW5kCi1pbnN0cnVjdGlvbnMgaW4g
dGhlIFJFQURNRSBmaWxlIGZyb20gR29vZ2xlIFRlc3QgMS40LjAuCi0KLU9uIHBsYXRmb3JtcyB3
aGVyZSB0aGUgcHRocmVhZCBsaWJyYXJ5IGlzIGF2YWlsYWJsZSwgR29vZ2xlIFRlc3QgdXNlcwot
aXQgaW4gb3JkZXIgdG8gYmUgdGhyZWFkLXNhZmUuICBTZWUgdGhlICJNdWx0aS10aHJlYWRlZCBU
ZXN0cyIgc2VjdGlvbgotZm9yIHdoYXQgdGhpcyBtZWFucyB0byB5b3VyIGJ1aWxkIHNjcmlwdC4K
LQotSWYgeW91IHVzZSBNaWNyb3NvZnQgVmlzdWFsIEMrKyA3LjEgd2l0aCBleGNlcHRpb25zIGRp
c2FibGVkLCBHb29nbGUKLVRlc3Qgd2lsbCBubyBsb25nZXIgY29tcGlsZS4gIFRoaXMgc2hvdWxk
IGFmZmVjdCB2ZXJ5IGZldyBwZW9wbGUsIGFzIGEKLWxhcmdlIHBvcnRpb24gb2YgU1RMIChpbmNs
dWRpbmcgPHN0cmluZz4pIGRvZXNuJ3QgY29tcGlsZSBpbiB0aGlzIG1vZGUKLWFueXdheS4gIFdl
IGRlY2lkZWQgdG8gc3RvcCBzdXBwb3J0aW5nIGl0IGluIG9yZGVyIHRvIGdyZWF0bHkgc2ltcGxp
ZnkKLUdvb2dsZSBUZXN0J3MgaW1wbGVtZW50YXRpb24uCi0KLURldmVsb3BpbmcgR29vZ2xlIFRl
c3QKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotVGhpcyBzZWN0aW9uIGRpc2N1c3NlcyBob3cg
dG8gbWFrZSB5b3VyIG93biBjaGFuZ2VzIHRvIEdvb2dsZSBUZXN0LgotCi0jIyMgVGVzdGluZyBH
b29nbGUgVGVzdCBJdHNlbGYgIyMjCi0KLVRvIG1ha2Ugc3VyZSB5b3VyIGNoYW5nZXMgd29yayBh
cyBpbnRlbmRlZCBhbmQgZG9uJ3QgYnJlYWsgZXhpc3RpbmcKLWZ1bmN0aW9uYWxpdHksIHlvdSds
bCB3YW50IHRvIGNvbXBpbGUgYW5kIHJ1biBHb29nbGUgVGVzdCdzIG93biB0ZXN0cy4KLUZvciB0
aGF0IHlvdSBjYW4gdXNlIENNYWtlOgotCi0gIG1rZGlyIG15YnVpbGQKLSAgY2QgbXlidWlsZAot
ICBjbWFrZSAtRGJ1aWxkX2FsbF9ndGVzdF90ZXN0cz1PTiAke0dURVNUX0RJUn0KLQotTWFrZSBz
dXJlIHlvdSBoYXZlIFB5dGhvbiBpbnN0YWxsZWQsIGFzIHNvbWUgb2YgR29vZ2xlIFRlc3QncyB0
ZXN0cwotYXJlIHdyaXR0ZW4gaW4gUHl0aG9uLiAgSWYgdGhlIGNtYWtlIGNvbW1hbmQgY29tcGxh
aW5zIGFib3V0IG5vdCBiZWluZwotYWJsZSB0byBmaW5kIFB5dGhvbiAoIkNvdWxkIE5PVCBmaW5k
IFB5dGhvbkludGVycCAobWlzc2luZzoKLVBZVEhPTl9FWEVDVVRBQkxFKSIpLCB0cnkgdGVsbGlu
ZyBpdCBleHBsaWNpdGx5IHdoZXJlIHlvdXIgUHl0aG9uCi1leGVjdXRhYmxlIGNhbiBiZSBmb3Vu
ZDoKLQotICBjbWFrZSAtRFBZVEhPTl9FWEVDVVRBQkxFPXBhdGgvdG8vcHl0aG9uIC1EYnVpbGRf
YWxsX2d0ZXN0X3Rlc3RzPU9OIFwKLSAgICAgICR7R1RFU1RfRElSfQotCi1OZXh0LCB5b3UgY2Fu
IGJ1aWxkIEdvb2dsZSBUZXN0IGFuZCBhbGwgb2YgaXRzIG93biB0ZXN0cy4gIE9uICpuaXgsCi10
aGlzIGlzIHVzdWFsbHkgZG9uZSBieSAnbWFrZScuICBUbyBydW4gdGhlIHRlc3RzLCBkbwotCi0g
IG1ha2UgdGVzdAotCi1BbGwgdGVzdHMgc2hvdWxkIHBhc3MuCi0KLSMjIyBSZWdlbmVyYXRpbmcg
U291cmNlIEZpbGVzICMjIwotCi1Tb21lIG9mIEdvb2dsZSBUZXN0J3Mgc291cmNlIGZpbGVzIGFy
ZSBnZW5lcmF0ZWQgZnJvbSB0ZW1wbGF0ZXMgKG5vdAotaW4gdGhlIEMrKyBzZW5zZSkgdXNpbmcg
YSBzY3JpcHQuICBBIHRlbXBsYXRlIGZpbGUgaXMgbmFtZWQgRk9PLnB1bXAsCi13aGVyZSBGT08g
aXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgaXQgd2lsbCBnZW5lcmF0ZS4gIEZvciBleGFtcGxlLCB0
aGUKLWZpbGUgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wIGlz
IHVzZWQgdG8gZ2VuZXJhdGUKLWd0ZXN0LXR5cGUtdXRpbC5oIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS4KLQotTm9ybWFsbHkgeW91IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgcmVnZW5lcmF0aW5n
IHRoZSBzb3VyY2UgZmlsZXMsCi11bmxlc3MgeW91IG5lZWQgdG8gbW9kaWZ5IHRoZW0uICBJbiB0
aGF0IGNhc2UsIHlvdSBzaG91bGQgbW9kaWZ5IHRoZQotY29ycmVzcG9uZGluZyAucHVtcCBmaWxl
cyBpbnN0ZWFkIGFuZCBydW4gdGhlIHB1bXAucHkgUHl0aG9uIHNjcmlwdCB0bwotcmVnZW5lcmF0
ZSB0aGVtLiAgWW91IGNhbiBmaW5kIHB1bXAucHkgaW4gdGhlIHNjcmlwdHMvIGRpcmVjdG9yeS4K
LVJlYWQgdGhlIFB1bXAgbWFudWFsIFsyXSBmb3IgaG93IHRvIHVzZSBpdC4KLQotICBbMl0gaHR0
cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvd2lraS9QdW1wTWFudWFsCi0KLSMjIyBD
b250cmlidXRpbmcgYSBQYXRjaCAjIyMKLQotV2Ugd2VsY29tZSBwYXRjaGVzLiAgUGxlYXNlIHJl
YWQgdGhlIEdvb2dsZSBUZXN0IGRldmVsb3BlcidzIGd1aWRlIFszXQotZm9yIGhvdyB5b3UgY2Fu
IGNvbnRyaWJ1dGUuICBJbiBwYXJ0aWN1bGFyLCBtYWtlIHN1cmUgeW91IGhhdmUgc2lnbmVkCi10
aGUgQ29udHJpYnV0b3IgTGljZW5zZSBBZ3JlZW1lbnQsIG9yIHdlIHdvbid0IGJlIGFibGUgdG8g
YWNjZXB0IHRoZQotcGF0Y2guCi0KLSAgWzNdIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29n
bGV0ZXN0L3dpa2kvR29vZ2xlVGVzdERldkd1aWRlCi0KLUhhcHB5IHRlc3RpbmchCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9SRUFETUUuV2ViS2l0IGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvUkVBRE1FLldlYktpdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NmEzMThmZjYyZTMyNDljOGU2NTMyMDkzZjQwZTNjYjQxYzE1ZjlhYy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9S
RUFETUUuV2ViS2l0CisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotR1Rlc3Qgdi4xLjUu
MAotCi1odHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdGFncy9yZWxlYXNlLTEu
NS4wLyAKLQotMjAxNi0wMS0wMiBUaW5nLVdlaSBMYW4gKGxhbnR3NDRAZ21haWwuY29tKQotICAg
ICAgUmVtb3ZlIHVzYWdlIG9mIGVudmlyb24gZ2xvYmFsIHZhcmlhYmxlIHRvIGZpeCB0aGUgYnVp
bGQgb24gRnJlZUJTRC4KLQotMjAxMi0wMS0wNCBEbWl0cnkgTG9tb3YgKGRzbG9tb3ZAZ29vZ2xl
LmNvbSkgIERhdmlkIEtpbHplciAoZGRraWx6ZXJAYXBwbGUuY29tKQotICAgICAgLSBXZWJLaXQg
cG9ydCBvZiBndGVzdCB1c2VzIEZhc3RNYWxsb2MgIm5ldyIgYW5kICJkZWxldGUiIG9wZXJhdG9y
cyBmcm9tIEphdmFTY3JpcHRDb3JlLgotICAgICAgLSBUaGUgZ3Rlc3QuZnJhbWV3b3JrIHRhcmdl
dCBub3cgbGlua3MgdG8gSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrLgotCi0yMDExLTEyLTIyIERh
dmlkIEtpbHplciAoZGRraWx6ZXJAYXBwbGUuY29tKQotICAgICAgQWRkZWQgUHJvZHVjdGlvbiBj
b25maWd1cmF0aW9uIHRvIGd0ZXN0IFhjb2RlIHByb2plY3QuCi0KLTIwMTEtMDUtMDYgRG1pdHJ5
IExvbW92IChkc2xvbW92QGdvb2dsZS5jb20pCi0gICAgICBndGVzdC1tZC52Y3Byb2ogdXBncmFk
ZWQgdG8gVlMgMjAwNSAoOC4wKSBmb3JtYXQgdG8gbWF0Y2ggdGhlIHJlc3Qgb2YgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9SRUFETUUubWQgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTMwZmU4MDQ3MTI3YmVlMTZkMmM3
MWYxNGI1MDlmMzc1NzFhZGQ0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L1JFQURNRS5tZApAQCAtMCwwICsxLDM0MSBAQAorIyMjIEdlbmVyaWMgQnVpbGQgSW5z
dHJ1Y3Rpb25zCisKKyMjIyMgU2V0dXAKKworVG8gYnVpbGQgR29vZ2xlIFRlc3QgYW5kIHlvdXIg
dGVzdHMgdGhhdCB1c2UgaXQsIHlvdSBuZWVkIHRvIHRlbGwgeW91ciBidWlsZAorc3lzdGVtIHdo
ZXJlIHRvIGZpbmQgaXRzIGhlYWRlcnMgYW5kIHNvdXJjZSBmaWxlcy4gVGhlIGV4YWN0IHdheSB0
byBkbyBpdAorZGVwZW5kcyBvbiB3aGljaCBidWlsZCBzeXN0ZW0geW91IHVzZSwgYW5kIGlzIHVz
dWFsbHkgc3RyYWlnaHRmb3J3YXJkLgorCisjIyMjIEJ1aWxkCisKK1N1cHBvc2UgeW91IHB1dCBH
b29nbGUgVGVzdCBpbiBkaXJlY3RvcnkgYCR7R1RFU1RfRElSfWAuIFRvIGJ1aWxkIGl0LCBjcmVh
dGUgYQorbGlicmFyeSBidWlsZCB0YXJnZXQgKG9yIGEgcHJvamVjdCBhcyBjYWxsZWQgYnkgVmlz
dWFsIFN0dWRpbyBhbmQgWGNvZGUpIHRvCitjb21waWxlCisKKyAgICAke0dURVNUX0RJUn0vc3Jj
L2d0ZXN0LWFsbC5jYworCit3aXRoIGAke0dURVNUX0RJUn0vaW5jbHVkZWAgaW4gdGhlIHN5c3Rl
bSBoZWFkZXIgc2VhcmNoIHBhdGggYW5kIGAke0dURVNUX0RJUn1gCitpbiB0aGUgbm9ybWFsIGhl
YWRlciBzZWFyY2ggcGF0aC4gQXNzdW1pbmcgYSBMaW51eC1saWtlIHN5c3RlbSBhbmQgZ2NjLAor
c29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZyB3aWxsIGRvOgorCisgICAgZysrIC1pc3lzdGVt
ICR7R1RFU1RfRElSfS9pbmNsdWRlIC1JJHtHVEVTVF9ESVJ9IFwKKyAgICAgICAgLXB0aHJlYWQg
LWMgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1hbGwuY2MKKyAgICBhciAtcnYgbGliZ3Rlc3QuYSBn
dGVzdC1hbGwubworCisoV2UgbmVlZCBgLXB0aHJlYWRgIGFzIEdvb2dsZSBUZXN0IHVzZXMgdGhy
ZWFkcy4pCisKK05leHQsIHlvdSBzaG91bGQgY29tcGlsZSB5b3VyIHRlc3Qgc291cmNlIGZpbGUg
d2l0aCBgJHtHVEVTVF9ESVJ9L2luY2x1ZGVgIGluCit0aGUgc3lzdGVtIGhlYWRlciBzZWFyY2gg
cGF0aCwgYW5kIGxpbmsgaXQgd2l0aCBndGVzdCBhbmQgYW55IG90aGVyIG5lY2Vzc2FyeQorbGli
cmFyaWVzOgorCisgICAgZysrIC1pc3lzdGVtICR7R1RFU1RfRElSfS9pbmNsdWRlIC1wdGhyZWFk
IHBhdGgvdG8veW91cl90ZXN0LmNjIGxpYmd0ZXN0LmEgXAorICAgICAgICAtbyB5b3VyX3Rlc3QK
KworQXMgYW4gZXhhbXBsZSwgdGhlIG1ha2UvIGRpcmVjdG9yeSBjb250YWlucyBhIE1ha2VmaWxl
IHRoYXQgeW91IGNhbiB1c2UgdG8gYnVpbGQKK0dvb2dsZSBUZXN0IG9uIHN5c3RlbXMgd2hlcmUg
R05VIG1ha2UgaXMgYXZhaWxhYmxlIChlLmcuIExpbnV4LCBNYWMgT1MgWCwgYW5kCitDeWd3aW4p
LiBJdCBkb2Vzbid0IHRyeSB0byBidWlsZCBHb29nbGUgVGVzdCdzIG93biB0ZXN0cy4gSW5zdGVh
ZCwgaXQganVzdAorYnVpbGRzIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5IGFuZCBhIHNhbXBsZSB0
ZXN0LiBZb3UgY2FuIHVzZSBpdCBhcyBhIHN0YXJ0aW5nCitwb2ludCBmb3IgeW91ciBvd24gYnVp
bGQgc2NyaXB0LgorCitJZiB0aGUgZGVmYXVsdCBzZXR0aW5ncyBhcmUgY29ycmVjdCBmb3IgeW91
ciBlbnZpcm9ubWVudCwgdGhlIGZvbGxvd2luZyBjb21tYW5kcworc2hvdWxkIHN1Y2NlZWQ6CisK
KyAgICBjZCAke0dURVNUX0RJUn0vbWFrZQorICAgIG1ha2UKKyAgICAuL3NhbXBsZTFfdW5pdHRl
c3QKKworSWYgeW91IHNlZSBlcnJvcnMsIHRyeSB0byB0d2VhayB0aGUgY29udGVudHMgb2YgYG1h
a2UvTWFrZWZpbGVgIHRvIG1ha2UgdGhlbSBnbworYXdheS4gVGhlcmUgYXJlIGluc3RydWN0aW9u
cyBpbiBgbWFrZS9NYWtlZmlsZWAgb24gaG93IHRvIGRvIGl0LgorCisjIyMgVXNpbmcgQ01ha2UK
KworR29vZ2xlIFRlc3QgY29tZXMgd2l0aCBhIENNYWtlIGJ1aWxkIHNjcmlwdCAoCitbQ01ha2VM
aXN0cy50eHRdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9ibG9iL21hc3Rl
ci9DTWFrZUxpc3RzLnR4dCkpCit0aGF0IGNhbiBiZSB1c2VkIG9uIGEgd2lkZSByYW5nZSBvZiBw
bGF0Zm9ybXMgKCJDIiBzdGFuZHMgZm9yIGNyb3NzLXBsYXRmb3JtLikuCitJZiB5b3UgZG9uJ3Qg
aGF2ZSBDTWFrZSBpbnN0YWxsZWQgYWxyZWFkeSwgeW91IGNhbiBkb3dubG9hZCBpdCBmb3IgZnJl
ZSBmcm9tCis8aHR0cDovL3d3dy5jbWFrZS5vcmcvPi4KKworQ01ha2Ugd29ya3MgYnkgZ2VuZXJh
dGluZyBuYXRpdmUgbWFrZWZpbGVzIG9yIGJ1aWxkIHByb2plY3RzIHRoYXQgY2FuIGJlIHVzZWQg
aW4KK3RoZSBjb21waWxlciBlbnZpcm9ubWVudCBvZiB5b3VyIGNob2ljZS4gWW91IGNhbiBlaXRo
ZXIgYnVpbGQgR29vZ2xlIFRlc3QgYXMgYQorc3RhbmRhbG9uZSBwcm9qZWN0IG9yIGl0IGNhbiBi
ZSBpbmNvcnBvcmF0ZWQgaW50byBhbiBleGlzdGluZyBDTWFrZSBidWlsZCBmb3IKK2Fub3RoZXIg
cHJvamVjdC4KKworIyMjIyBTdGFuZGFsb25lIENNYWtlIFByb2plY3QKKworV2hlbiBidWlsZGlu
ZyBHb29nbGUgVGVzdCBhcyBhIHN0YW5kYWxvbmUgcHJvamVjdCwgdGhlIHR5cGljYWwgd29ya2Zs
b3cgc3RhcnRzCit3aXRoOgorCisgICAgbWtkaXIgbXlidWlsZCAgICAgICAjIENyZWF0ZSBhIGRp
cmVjdG9yeSB0byBob2xkIHRoZSBidWlsZCBvdXRwdXQuCisgICAgY2QgbXlidWlsZAorICAgIGNt
YWtlICR7R1RFU1RfRElSfSAgIyBHZW5lcmF0ZSBuYXRpdmUgYnVpbGQgc2NyaXB0cy4KKworSWYg
eW91IHdhbnQgdG8gYnVpbGQgR29vZ2xlIFRlc3QncyBzYW1wbGVzLCB5b3Ugc2hvdWxkIHJlcGxh
Y2UgdGhlIGxhc3QgY29tbWFuZAord2l0aAorCisgICAgY21ha2UgLURndGVzdF9idWlsZF9zYW1w
bGVzPU9OICR7R1RFU1RfRElSfQorCitJZiB5b3UgYXJlIG9uIGEgXCpuaXggc3lzdGVtLCB5b3Ug
c2hvdWxkIG5vdyBzZWUgYSBNYWtlZmlsZSBpbiB0aGUgY3VycmVudAorZGlyZWN0b3J5LiBKdXN0
IHR5cGUgJ21ha2UnIHRvIGJ1aWxkIGd0ZXN0LgorCitJZiB5b3UgdXNlIFdpbmRvd3MgYW5kIGhh
dmUgVmlzdWFsIFN0dWRpbyBpbnN0YWxsZWQsIGEgYGd0ZXN0LnNsbmAgZmlsZSBhbmQKK3NldmVy
YWwgYC52Y3Byb2pgIGZpbGVzIHdpbGwgYmUgY3JlYXRlZC4gWW91IGNhbiB0aGVuIGJ1aWxkIHRo
ZW0gdXNpbmcgVmlzdWFsCitTdHVkaW8uCisKK09uIE1hYyBPUyBYIHdpdGggWGNvZGUgaW5zdGFs
bGVkLCBhIGAueGNvZGVwcm9qYCBmaWxlIHdpbGwgYmUgZ2VuZXJhdGVkLgorCisjIyMjIEluY29y
cG9yYXRpbmcgSW50byBBbiBFeGlzdGluZyBDTWFrZSBQcm9qZWN0CisKK0lmIHlvdSB3YW50IHRv
IHVzZSBndGVzdCBpbiBhIHByb2plY3Qgd2hpY2ggYWxyZWFkeSB1c2VzIENNYWtlLCB0aGVuIGEg
bW9yZQorcm9idXN0IGFuZCBmbGV4aWJsZSBhcHByb2FjaCBpcyB0byBidWlsZCBndGVzdCBhcyBw
YXJ0IG9mIHRoYXQgcHJvamVjdCBkaXJlY3RseS4KK1RoaXMgaXMgZG9uZSBieSBtYWtpbmcgdGhl
IEdvb2dsZVRlc3Qgc291cmNlIGNvZGUgYXZhaWxhYmxlIHRvIHRoZSBtYWluIGJ1aWxkCithbmQg
YWRkaW5nIGl0IHVzaW5nIENNYWtlJ3MgYGFkZF9zdWJkaXJlY3RvcnkoKWAgY29tbWFuZC4gVGhp
cyBoYXMgdGhlCitzaWduaWZpY2FudCBhZHZhbnRhZ2UgdGhhdCB0aGUgc2FtZSBjb21waWxlciBh
bmQgbGlua2VyIHNldHRpbmdzIGFyZSB1c2VkCitiZXR3ZWVuIGd0ZXN0IGFuZCB0aGUgcmVzdCBv
ZiB5b3VyIHByb2plY3QsIHNvIGlzc3VlcyBhc3NvY2lhdGVkIHdpdGggdXNpbmcKK2luY29tcGF0
aWJsZSBsaWJyYXJpZXMgKGVnIGRlYnVnL3JlbGVhc2UpLCBldGMuIGFyZSBhdm9pZGVkLiBUaGlz
IGlzCitwYXJ0aWN1bGFybHkgdXNlZnVsIG9uIFdpbmRvd3MuIE1ha2luZyBHb29nbGVUZXN0J3Mg
c291cmNlIGNvZGUgYXZhaWxhYmxlIHRvIHRoZQorbWFpbiBidWlsZCBjYW4gYmUgZG9uZSBhIGZl
dyBkaWZmZXJlbnQgd2F5czoKKworKiAgIERvd25sb2FkIHRoZSBHb29nbGVUZXN0IHNvdXJjZSBj
b2RlIG1hbnVhbGx5IGFuZCBwbGFjZSBpdCBhdCBhIGtub3duCisgICAgbG9jYXRpb24uIFRoaXMg
aXMgdGhlIGxlYXN0IGZsZXhpYmxlIGFwcHJvYWNoIGFuZCBjYW4gbWFrZSBpdCBtb3JlIGRpZmZp
Y3VsdAorICAgIHRvIHVzZSB3aXRoIGNvbnRpbnVvdXMgaW50ZWdyYXRpb24gc3lzdGVtcywgZXRj
LgorKiAgIEVtYmVkIHRoZSBHb29nbGVUZXN0IHNvdXJjZSBjb2RlIGFzIGEgZGlyZWN0IGNvcHkg
aW4gdGhlIG1haW4gcHJvamVjdCdzCisgICAgc291cmNlIHRyZWUuIFRoaXMgaXMgb2Z0ZW4gdGhl
IHNpbXBsZXN0IGFwcHJvYWNoLCBidXQgaXMgYWxzbyB0aGUgaGFyZGVzdCB0bworICAgIGtlZXAg
dXAgdG8gZGF0ZS4gU29tZSBvcmdhbml6YXRpb25zIG1heSBub3QgcGVybWl0IHRoaXMgbWV0aG9k
LgorKiAgIEFkZCBHb29nbGVUZXN0IGFzIGEgZ2l0IHN1Ym1vZHVsZSBvciBlcXVpdmFsZW50LiBU
aGlzIG1heSBub3QgYWx3YXlzIGJlCisgICAgcG9zc2libGUgb3IgYXBwcm9wcmlhdGUuIEdpdCBz
dWJtb2R1bGVzLCBmb3IgZXhhbXBsZSwgaGF2ZSB0aGVpciBvd24gc2V0IG9mCisgICAgYWR2YW50
YWdlcyBhbmQgZHJhd2JhY2tzLgorKiAgIFVzZSBDTWFrZSB0byBkb3dubG9hZCBHb29nbGVUZXN0
IGFzIHBhcnQgb2YgdGhlIGJ1aWxkJ3MgY29uZmlndXJlIHN0ZXAuIFRoaXMKKyAgICBpcyBqdXN0
IGEgbGl0dGxlIG1vcmUgY29tcGxleCwgYnV0IGRvZXNuJ3QgaGF2ZSB0aGUgbGltaXRhdGlvbnMg
b2YgdGhlIG90aGVyCisgICAgbWV0aG9kcy4KKworVGhlIGxhc3Qgb2YgdGhlIGFib3ZlIG1ldGhv
ZHMgaXMgaW1wbGVtZW50ZWQgd2l0aCBhIHNtYWxsIHBpZWNlIG9mIENNYWtlIGNvZGUgaW4KK2Eg
c2VwYXJhdGUgZmlsZSAoZS5nLiBgQ01ha2VMaXN0cy50eHQuaW5gKSB3aGljaCBpcyBjb3BpZWQg
dG8gdGhlIGJ1aWxkIGFyZWEgYW5kCit0aGVuIGludm9rZWQgYXMgYSBzdWItYnVpbGQgX2R1cmlu
ZyB0aGUgQ01ha2Ugc3RhZ2VfLiBUaGF0IGRpcmVjdG9yeSBpcyB0aGVuCitwdWxsZWQgaW50byB0
aGUgbWFpbiBidWlsZCB3aXRoIGBhZGRfc3ViZGlyZWN0b3J5KClgLiBGb3IgZXhhbXBsZToKKwor
TmV3IGZpbGUgYENNYWtlTGlzdHMudHh0LmluYDoKKworICAgIGNtYWtlX21pbmltdW1fcmVxdWly
ZWQoVkVSU0lPTiAyLjguMikKKworICAgIHByb2plY3QoZ29vZ2xldGVzdC1kb3dubG9hZCBOT05F
KQorCisgICAgaW5jbHVkZShFeHRlcm5hbFByb2plY3QpCisgICAgRXh0ZXJuYWxQcm9qZWN0X0Fk
ZChnb29nbGV0ZXN0CisgICAgICBHSVRfUkVQT1NJVE9SWSAgICBodHRwczovL2dpdGh1Yi5jb20v
Z29vZ2xlL2dvb2dsZXRlc3QuZ2l0CisgICAgICBHSVRfVEFHICAgICAgICAgICBtYXN0ZXIKKyAg
ICAgIFNPVVJDRV9ESVIgICAgICAgICIke0NNQUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3Qtc3Jj
IgorICAgICAgQklOQVJZX0RJUiAgICAgICAgIiR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVz
dC1idWlsZCIKKyAgICAgIENPTkZJR1VSRV9DT01NQU5EICIiCisgICAgICBCVUlMRF9DT01NQU5E
ICAgICAiIgorICAgICAgSU5TVEFMTF9DT01NQU5EICAgIiIKKyAgICAgIFRFU1RfQ09NTUFORCAg
ICAgICIiCisgICAgKQorCitFeGlzdGluZyBidWlsZCdzIGBDTWFrZUxpc3RzLnR4dGA6CisKKyAg
ICAjIERvd25sb2FkIGFuZCB1bnBhY2sgZ29vZ2xldGVzdCBhdCBjb25maWd1cmUgdGltZQorICAg
IGNvbmZpZ3VyZV9maWxlKENNYWtlTGlzdHMudHh0LmluIGdvb2dsZXRlc3QtZG93bmxvYWQvQ01h
a2VMaXN0cy50eHQpCisgICAgZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgJHtDTUFLRV9DT01NQU5E
fSAtRyAiJHtDTUFLRV9HRU5FUkFUT1J9IiAuCisgICAgICBSRVNVTFRfVkFSSUFCTEUgcmVzdWx0
CisgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke0NNQUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3Qt
ZG93bmxvYWQgKQorICAgIGlmKHJlc3VsdCkKKyAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkNN
YWtlIHN0ZXAgZm9yIGdvb2dsZXRlc3QgZmFpbGVkOiAke3Jlc3VsdH0iKQorICAgIGVuZGlmKCkK
KyAgICBleGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC0tYnVpbGQgLgor
ICAgICAgUkVTVUxUX1ZBUklBQkxFIHJlc3VsdAorICAgICAgV09SS0lOR19ESVJFQ1RPUlkgJHtD
TUFLRV9CSU5BUllfRElSfS9nb29nbGV0ZXN0LWRvd25sb2FkICkKKyAgICBpZihyZXN1bHQpCisg
ICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJCdWlsZCBzdGVwIGZvciBnb29nbGV0ZXN0IGZhaWxl
ZDogJHtyZXN1bHR9IikKKyAgICBlbmRpZigpCisKKyAgICAjIFByZXZlbnQgb3ZlcnJpZGluZyB0
aGUgcGFyZW50IHByb2plY3QncyBjb21waWxlci9saW5rZXIKKyAgICAjIHNldHRpbmdzIG9uIFdp
bmRvd3MKKyAgICBzZXQoZ3Rlc3RfZm9yY2Vfc2hhcmVkX2NydCBPTiBDQUNIRSBCT09MICIiIEZP
UkNFKQorCisgICAgIyBBZGQgZ29vZ2xldGVzdCBkaXJlY3RseSB0byBvdXIgYnVpbGQuIFRoaXMg
ZGVmaW5lcworICAgICMgdGhlIGd0ZXN0IGFuZCBndGVzdF9tYWluIHRhcmdldHMuCisgICAgYWRk
X3N1YmRpcmVjdG9yeSgke0NNQUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3Qtc3JjCisgICAgICAg
ICAgICAgICAgICAgICAke0NNQUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3QtYnVpbGQKKyAgICAg
ICAgICAgICAgICAgICAgIEVYQ0xVREVfRlJPTV9BTEwpCisKKyAgICAjIFRoZSBndGVzdC9ndGVz
dF9tYWluIHRhcmdldHMgY2FycnkgaGVhZGVyIHNlYXJjaCBwYXRoCisgICAgIyBkZXBlbmRlbmNp
ZXMgYXV0b21hdGljYWxseSB3aGVuIHVzaW5nIENNYWtlIDIuOC4xMSBvcgorICAgICMgbGF0ZXIu
IE90aGVyd2lzZSB3ZSBoYXZlIHRvIGFkZCB0aGVtIGhlcmUgb3Vyc2VsdmVzLgorICAgIGlmIChD
TUFLRV9WRVJTSU9OIFZFUlNJT05fTEVTUyAyLjguMTEpCisgICAgICBpbmNsdWRlX2RpcmVjdG9y
aWVzKCIke2d0ZXN0X1NPVVJDRV9ESVJ9L2luY2x1ZGUiKQorICAgIGVuZGlmKCkKKworICAgICMg
Tm93IHNpbXBseSBsaW5rIGFnYWluc3QgZ3Rlc3Qgb3IgZ3Rlc3RfbWFpbiBhcyBuZWVkZWQuIEVn
CisgICAgYWRkX2V4ZWN1dGFibGUoZXhhbXBsZSBleGFtcGxlLmNwcCkKKyAgICB0YXJnZXRfbGlu
a19saWJyYXJpZXMoZXhhbXBsZSBndGVzdF9tYWluKQorICAgIGFkZF90ZXN0KE5BTUUgZXhhbXBs
ZV90ZXN0IENPTU1BTkQgZXhhbXBsZSkKKworTm90ZSB0aGF0IHRoaXMgYXBwcm9hY2ggcmVxdWly
ZXMgQ01ha2UgMi44LjIgb3IgbGF0ZXIgZHVlIHRvIGl0cyB1c2Ugb2YgdGhlCitgRXh0ZXJuYWxQ
cm9qZWN0X0FkZCgpYCBjb21tYW5kLiBUaGUgYWJvdmUgdGVjaG5pcXVlIGlzIGRpc2N1c3NlZCBp
biBtb3JlIGRldGFpbAoraW4gW3RoaXMgc2VwYXJhdGUgYXJ0aWNsZV0oaHR0cDovL2NyYXNjaXQu
Y29tLzIwMTUvMDcvMjUvY21ha2UtZ3Rlc3QvKSB3aGljaAorYWxzbyBjb250YWlucyBhIGxpbmsg
dG8gYSBmdWxseSBnZW5lcmFsaXplZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgdGVjaG5pcXVlLgor
CisjIyMjIyBWaXN1YWwgU3R1ZGlvIER5bmFtaWMgdnMgU3RhdGljIFJ1bnRpbWVzCisKK0J5IGRl
ZmF1bHQsIG5ldyBWaXN1YWwgU3R1ZGlvIHByb2plY3RzIGxpbmsgdGhlIEMgcnVudGltZXMgZHlu
YW1pY2FsbHkgYnV0CitHb29nbGUgVGVzdCBsaW5rcyB0aGVtIHN0YXRpY2FsbHkuIFRoaXMgd2ls
bCBnZW5lcmF0ZSBhbiBlcnJvciB0aGF0IGxvb2tzCitzb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93
aW5nOiBndGVzdC5saWIoZ3Rlc3QtYWxsLm9iaikgOiBlcnJvciBMTksyMDM4OiBtaXNtYXRjaAor
ZGV0ZWN0ZWQgZm9yICdSdW50aW1lTGlicmFyeSc6IHZhbHVlICdNVGRfU3RhdGljRGVidWcnIGRv
ZXNuJ3QgbWF0Y2ggdmFsdWUKKydNRGRfRHluYW1pY0RlYnVnJyBpbiBtYWluLm9iagorCitHb29n
bGUgVGVzdCBhbHJlYWR5IGhhcyBhIENNYWtlIG9wdGlvbiBmb3IgdGhpczogYGd0ZXN0X2ZvcmNl
X3NoYXJlZF9jcnRgCisKK0VuYWJsaW5nIHRoaXMgb3B0aW9uIHdpbGwgbWFrZSBndGVzdCBsaW5r
IHRoZSBydW50aW1lcyBkeW5hbWljYWxseSB0b28sIGFuZAorbWF0Y2ggdGhlIHByb2plY3QgaW4g
d2hpY2ggaXQgaXMgaW5jbHVkZWQuCisKKyMjIyBMZWdhY3kgQnVpbGQgU2NyaXB0cworCitCZWZv
cmUgc2V0dGxpbmcgb24gQ01ha2UsIHdlIGhhdmUgYmVlbiBwcm92aWRpbmcgaGFuZC1tYWludGFp
bmVkIGJ1aWxkCitwcm9qZWN0cy9zY3JpcHRzIGZvciBWaXN1YWwgU3R1ZGlvLCBYY29kZSwgYW5k
IEF1dG90b29scy4gV2hpbGUgd2UgY29udGludWUgdG8KK3Byb3ZpZGUgdGhlbSBmb3IgY29udmVu
aWVuY2UsIHRoZXkgYXJlIG5vdCBhY3RpdmVseSBtYWludGFpbmVkIGFueSBtb3JlLiBXZQoraGln
aGx5IHJlY29tbWVuZCB0aGF0IHlvdSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBpbiB0aGUgYWJv
dmUgc2VjdGlvbnMgdG8KK2ludGVncmF0ZSBHb29nbGUgVGVzdCB3aXRoIHlvdXIgZXhpc3Rpbmcg
YnVpbGQgc3lzdGVtLgorCitJZiB5b3Ugc3RpbGwgbmVlZCB0byB1c2UgdGhlIGxlZ2FjeSBidWls
ZCBzY3JpcHRzLCBoZXJlJ3MgaG93OgorCitUaGUgbXN2Y1wgZm9sZGVyIGNvbnRhaW5zIHR3byBz
b2x1dGlvbnMgd2l0aCBWaXN1YWwgQysrIHByb2plY3RzLiBPcGVuIHRoZQorYGd0ZXN0LnNsbmAg
b3IgYGd0ZXN0LW1kLnNsbmAgZmlsZSB1c2luZyBWaXN1YWwgU3R1ZGlvLCBhbmQgeW91IGFyZSBy
ZWFkeSB0bworYnVpbGQgR29vZ2xlIFRlc3QgdGhlIHNhbWUgd2F5IHlvdSBidWlsZCBhbnkgVmlz
dWFsIFN0dWRpbyBwcm9qZWN0LiBGaWxlcyB0aGF0CitoYXZlIG5hbWVzIGVuZGluZyB3aXRoIC1t
ZCB1c2UgRExMIHZlcnNpb25zIG9mIE1pY3Jvc29mdCBydW50aW1lIGxpYnJhcmllcyAodGhlCisv
TUQgb3IgdGhlIC9NRGQgY29tcGlsZXIgb3B0aW9uKS4gRmlsZXMgd2l0aG91dCB0aGF0IHN1ZmZp
eCB1c2Ugc3RhdGljIHZlcnNpb25zCitvZiB0aGUgcnVudGltZSBsaWJyYXJpZXMgKHRoZSAvTVQg
b3IgdGhlIC9NVGQgb3B0aW9uKS4gUGxlYXNlIG5vdGUgdGhhdCBvbmUgbXVzdAordXNlIHRoZSBz
YW1lIG9wdGlvbiB0byBjb21waWxlIGJvdGggZ3Rlc3QgYW5kIHRoZSB0ZXN0IGNvZGUuIElmIHlv
dSB1c2UgVmlzdWFsCitTdHVkaW8gMjAwNSBvciBhYm92ZSwgd2UgcmVjb21tZW5kIHRoZSAtbWQg
dmVyc2lvbiBhcyAvTUQgaXMgdGhlIGRlZmF1bHQgZm9yIG5ldworcHJvamVjdHMgaW4gdGhlc2Ug
dmVyc2lvbnMgb2YgVmlzdWFsIFN0dWRpby4KKworT24gTWFjIE9TIFgsIG9wZW4gdGhlIGBndGVz
dC54Y29kZXByb2pgIGluIHRoZSBgeGNvZGUvYCBmb2xkZXIgdXNpbmcgWGNvZGUuCitCdWlsZCB0
aGUgImd0ZXN0IiB0YXJnZXQuIFRoZSB1bml2ZXJzYWwgYmluYXJ5IGZyYW1ld29yayB3aWxsIGVu
ZCB1cCBpbiB5b3VyCitzZWxlY3RlZCBidWlsZCBkaXJlY3RvcnkgKHNlbGVjdGVkIGluIHRoZSBY
Y29kZSAiUHJlZmVyZW5jZXMuLi4iIC0+ICJCdWlsZGluZyIKK3BhbmUgYW5kIGRlZmF1bHRzIHRv
IHhjb2RlL2J1aWxkKS4gQWx0ZXJuYXRpdmVseSwgYXQgdGhlIGNvbW1hbmQgbGluZSwgZW50ZXI6
CisKKyAgICB4Y29kZWJ1aWxkCisKK1RoaXMgd2lsbCBidWlsZCB0aGUgIlJlbGVhc2UiIGNvbmZp
Z3VyYXRpb24gb2YgZ3Rlc3QuZnJhbWV3b3JrIGluIHlvdXIgZGVmYXVsdAorYnVpbGQgbG9jYXRp
b24uIFNlZSB0aGUgInhjb2RlYnVpbGQiIG1hbiBwYWdlIGZvciBtb3JlIGluZm9ybWF0aW9uIGFi
b3V0CitidWlsZGluZyBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgYW5kIGJ1aWxkaW5nIGluIGRp
ZmZlcmVudCBsb2NhdGlvbnMuCisKK0lmIHlvdSB3aXNoIHRvIHVzZSB0aGUgR29vZ2xlIFRlc3Qg
WGNvZGUgcHJvamVjdCB3aXRoIFhjb2RlIDQueCBhbmQgYWJvdmUsIHlvdQorbmVlZCB0byBlaXRo
ZXI6CisKKyogICB1cGRhdGUgdGhlIFNESyBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4geGNvZGUv
Q29uZmlnL0dlbmVyYWwueGNvbmZpZy4KKyAgICBDb21tZW50IG9wdGlvbnMgYFNES1JPT1RgLCBg
TUFDT1NfREVQTE9ZTUVOVF9UQVJHRVRgLCBhbmQgYEdDQ19WRVJTSU9OYC4gSWYKKyAgICB5b3Ug
Y2hvb3NlIHRoaXMgcm91dGUgeW91IGxvc2UgdGhlIGFiaWxpdHkgdG8gdGFyZ2V0IGVhcmxpZXIg
dmVyc2lvbnMgb2YKKyAgICBNYWNPUyBYLgorKiAgIEluc3RhbGwgYW4gU0RLIGZvciBhbiBlYXJs
aWVyIHZlcnNpb24uIFRoaXMgZG9lc24ndCBhcHBlYXIgdG8gYmUgc3VwcG9ydGVkCisgICAgYnkg
QXBwbGUsIGJ1dCBoYXMgYmVlbiByZXBvcnRlZCB0byB3b3JrCisgICAgKGh0dHA6Ly9zdGFja292
ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTM3ODUxOCkuCisKKyMjIyBUd2Vha2luZyBHb29nbGUgVGVz
dAorCitHb29nbGUgVGVzdCBjYW4gYmUgdXNlZCBpbiBkaXZlcnNlIGVudmlyb25tZW50cy4gVGhl
IGRlZmF1bHQgY29uZmlndXJhdGlvbiBtYXkKK25vdCB3b3JrIChvciBtYXkgbm90IHdvcmsgd2Vs
bCkgb3V0IG9mIHRoZSBib3ggaW4gc29tZSBlbnZpcm9ubWVudHMuIEhvd2V2ZXIsCit5b3UgY2Fu
IGVhc2lseSB0d2VhayBHb29nbGUgVGVzdCBieSBkZWZpbmluZyBjb250cm9sIG1hY3JvcyBvbiB0
aGUgY29tcGlsZXIKK2NvbW1hbmQgbGluZS4gR2VuZXJhbGx5LCB0aGVzZSBtYWNyb3MgYXJlIG5h
bWVkIGxpa2UgYEdURVNUX1hZWmAgYW5kIHlvdSBkZWZpbmUKK3RoZW0gdG8gZWl0aGVyIDEgb3Ig
MCB0byBlbmFibGUgb3IgZGlzYWJsZSBhIGNlcnRhaW4gZmVhdHVyZS4KKworV2UgbGlzdCB0aGUg
bW9zdCBmcmVxdWVudGx5IHVzZWQgbWFjcm9zIGJlbG93LiBGb3IgYSBjb21wbGV0ZSBsaXN0LCBz
ZWUgZmlsZQorW2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oXShodHRwczovL2dp
dGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvYmxvYi9tYXN0ZXIvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC1wb3J0LmgpLgorCisjIyMgQ2hvb3NpbmcgYSBUUjEgVHVwbGUgTGlicmFyeQor
CitTb21lIEdvb2dsZSBUZXN0IGZlYXR1cmVzIHJlcXVpcmUgdGhlIEMrKyBUZWNobmljYWwgUmVw
b3J0IDEgKFRSMSkgdHVwbGUKK2xpYnJhcnksIHdoaWNoIGlzIG5vdCB5ZXQgYXZhaWxhYmxlIHdp
dGggYWxsIGNvbXBpbGVycy4gVGhlIGdvb2QgbmV3cyBpcyB0aGF0CitHb29nbGUgVGVzdCBpbXBs
ZW1lbnRzIGEgc3Vic2V0IG9mIFRSMSB0dXBsZSB0aGF0J3MgZW5vdWdoIGZvciBpdHMgb3duIG5l
ZWQsIGFuZAord2lsbCBhdXRvbWF0aWNhbGx5IHVzZSB0aGlzIHdoZW4gdGhlIGNvbXBpbGVyIGRv
ZXNuJ3QgcHJvdmlkZSBUUjEgdHVwbGUuCisKK1VzdWFsbHkgeW91IGRvbid0IG5lZWQgdG8gY2Fy
ZSBhYm91dCB3aGljaCB0dXBsZSBsaWJyYXJ5IEdvb2dsZSBUZXN0IHVzZXMuCitIb3dldmVyLCBp
ZiB5b3VyIHByb2plY3QgYWxyZWFkeSB1c2VzIFRSMSB0dXBsZSwgeW91IG5lZWQgdG8gdGVsbCBH
b29nbGUgVGVzdCB0bwordXNlIHRoZSBzYW1lIFRSMSB0dXBsZSBsaWJyYXJ5IHRoZSByZXN0IG9m
IHlvdXIgcHJvamVjdCB1c2VzLCBvciB0aGUgdHdvIHR1cGxlCitpbXBsZW1lbnRhdGlvbnMgd2ls
bCBjbGFzaC4gVG8gZG8gdGhhdCwgYWRkCisKKyAgICAtREdURVNUX1VTRV9PV05fVFIxX1RVUExF
PTAKKwordG8gdGhlIGNvbXBpbGVyIGZsYWdzIHdoaWxlIGNvbXBpbGluZyBHb29nbGUgVGVzdCBh
bmQgeW91ciB0ZXN0cy4gSWYgeW91IHdhbnQgdG8KK2ZvcmNlIEdvb2dsZSBUZXN0IHRvIHVzZSBp
dHMgb3duIHR1cGxlIGxpYnJhcnksIGp1c3QgYWRkCisKKyAgICAtREdURVNUX1VTRV9PV05fVFIx
X1RVUExFPTEKKwordG8gdGhlIGNvbXBpbGVyIGZsYWdzIGluc3RlYWQuCisKK0lmIHlvdSBkb24n
dCB3YW50IEdvb2dsZSBUZXN0IHRvIHVzZSB0dXBsZSBhdCBhbGwsIGFkZAorCisgICAgLURHVEVT
VF9IQVNfVFIxX1RVUExFPTAKKworYW5kIGFsbCBmZWF0dXJlcyB1c2luZyB0dXBsZSB3aWxsIGJl
IGRpc2FibGVkLgorCisjIyMgTXVsdGktdGhyZWFkZWQgVGVzdHMKKworR29vZ2xlIFRlc3QgaXMg
dGhyZWFkLXNhZmUgd2hlcmUgdGhlIHB0aHJlYWQgbGlicmFyeSBpcyBhdmFpbGFibGUuIEFmdGVy
CitgI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiYCwgeW91IGNhbiBjaGVjayB0aGUgYEdURVNUX0lT
X1RIUkVBRFNBRkVgIG1hY3JvIHRvIHNlZQord2hldGhlciB0aGlzIGlzIHRoZSBjYXNlICh5ZXMg
aWYgdGhlIG1hY3JvIGlzIGAjZGVmaW5lZGAgdG8gMSwgbm8gaWYgaXQncwordW5kZWZpbmVkLiku
CisKK0lmIEdvb2dsZSBUZXN0IGRvZXNuJ3QgY29ycmVjdGx5IGRldGVjdCB3aGV0aGVyIHB0aHJl
YWQgaXMgYXZhaWxhYmxlIGluIHlvdXIKK2Vudmlyb25tZW50LCB5b3UgY2FuIGZvcmNlIGl0IHdp
dGgKKworICAgIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MQorCitvcgorCisgICAgLURHVEVTVF9IQVNf
UFRIUkVBRD0wCisKK1doZW4gR29vZ2xlIFRlc3QgdXNlcyBwdGhyZWFkLCB5b3UgbWF5IG5lZWQg
dG8gYWRkIGZsYWdzIHRvIHlvdXIgY29tcGlsZXIgYW5kL29yCitsaW5rZXIgdG8gc2VsZWN0IHRo
ZSBwdGhyZWFkIGxpYnJhcnksIG9yIHlvdSdsbCBnZXQgbGluayBlcnJvcnMuIElmIHlvdSB1c2Ug
dGhlCitDTWFrZSBzY3JpcHQgb3IgdGhlIGRlcHJlY2F0ZWQgQXV0b3Rvb2xzIHNjcmlwdCwgdGhp
cyBpcyB0YWtlbiBjYXJlIG9mIGZvciB5b3UuCitJZiB5b3UgdXNlIHlvdXIgb3duIGJ1aWxkIHNj
cmlwdCwgeW91J2xsIG5lZWQgdG8gcmVhZCB5b3VyIGNvbXBpbGVyIGFuZCBsaW5rZXIncworbWFu
dWFsIHRvIGZpZ3VyZSBvdXQgd2hhdCBmbGFncyB0byBhZGQuCisKKyMjIyBBcyBhIFNoYXJlZCBM
aWJyYXJ5IChETEwpCisKK0dvb2dsZSBUZXN0IGlzIGNvbXBhY3QsIHNvIG1vc3QgdXNlcnMgY2Fu
IGJ1aWxkIGFuZCBsaW5rIGl0IGFzIGEgc3RhdGljIGxpYnJhcnkKK2ZvciB0aGUgc2ltcGxpY2l0
eS4gWW91IGNhbiBjaG9vc2UgdG8gdXNlIEdvb2dsZSBUZXN0IGFzIGEgc2hhcmVkIGxpYnJhcnkg
KGtub3duCithcyBhIERMTCBvbiBXaW5kb3dzKSBpZiB5b3UgcHJlZmVyLgorCitUbyBjb21waWxl
ICpndGVzdCogYXMgYSBzaGFyZWQgbGlicmFyeSwgYWRkCisKKyAgICAtREdURVNUX0NSRUFURV9T
SEFSRURfTElCUkFSWT0xCisKK3RvIHRoZSBjb21waWxlciBmbGFncy4gWW91J2xsIGFsc28gbmVl
ZCB0byB0ZWxsIHRoZSBsaW5rZXIgdG8gcHJvZHVjZSBhIHNoYXJlZAorbGlicmFyeSBpbnN0ZWFk
IC0gY29uc3VsdCB5b3VyIGxpbmtlcidzIG1hbnVhbCBmb3IgaG93IHRvIGRvIGl0LgorCitUbyBj
b21waWxlIHlvdXIgKnRlc3RzKiB0aGF0IHVzZSB0aGUgZ3Rlc3Qgc2hhcmVkIGxpYnJhcnksIGFk
ZAorCisgICAgLURHVEVTVF9MSU5LRURfQVNfU0hBUkVEX0xJQlJBUlk9MQorCit0byB0aGUgY29t
cGlsZXIgZmxhZ3MuCisKK05vdGU6IHdoaWxlIHRoZSBhYm92ZSBzdGVwcyBhcmVuJ3QgdGVjaG5p
Y2FsbHkgbmVjZXNzYXJ5IHRvZGF5IHdoZW4gdXNpbmcgc29tZQorY29tcGlsZXJzIChlLmcuIEdD
QyksIHRoZXkgbWF5IGJlY29tZSBuZWNlc3NhcnkgaW4gdGhlIGZ1dHVyZSwgaWYgd2UgZGVjaWRl
IHRvCitpbXByb3ZlIHRoZSBzcGVlZCBvZiBsb2FkaW5nIHRoZSBsaWJyYXJ5IChzZWUKKzxodHRw
Oi8vZ2NjLmdudS5vcmcvd2lraS9WaXNpYmlsaXR5PiBmb3IgZGV0YWlscykuIFRoZXJlZm9yZSB5
b3UgYXJlIHJlY29tbWVuZGVkCit0byBhbHdheXMgYWRkIHRoZSBhYm92ZSBmbGFncyB3aGVuIHVz
aW5nIEdvb2dsZSBUZXN0IGFzIGEgc2hhcmVkIGxpYnJhcnkuCitPdGhlcndpc2UgYSBmdXR1cmUg
cmVsZWFzZSBvZiBHb29nbGUgVGVzdCBtYXkgYnJlYWsgeW91ciBidWlsZCBzY3JpcHQuCisKKyMj
IyBBdm9pZGluZyBNYWNybyBOYW1lIENsYXNoZXMKKworSW4gQysrLCBtYWNyb3MgZG9uJ3Qgb2Jl
eSBuYW1lc3BhY2VzLiBUaGVyZWZvcmUgdHdvIGxpYnJhcmllcyB0aGF0IGJvdGggZGVmaW5lIGEK
K21hY3JvIG9mIHRoZSBzYW1lIG5hbWUgd2lsbCBjbGFzaCBpZiB5b3UgYCNpbmNsdWRlYCBib3Ro
IGRlZmluaXRpb25zLiBJbiBjYXNlIGEKK0dvb2dsZSBUZXN0IG1hY3JvIGNsYXNoZXMgd2l0aCBh
bm90aGVyIGxpYnJhcnksIHlvdSBjYW4gZm9yY2UgR29vZ2xlIFRlc3QgdG8KK3JlbmFtZSBpdHMg
bWFjcm8gdG8gYXZvaWQgdGhlIGNvbmZsaWN0LgorCitTcGVjaWZpY2FsbHksIGlmIGJvdGggR29v
Z2xlIFRlc3QgYW5kIHNvbWUgb3RoZXIgY29kZSBkZWZpbmUgbWFjcm8gRk9PLCB5b3UgY2FuCith
ZGQKKworICAgIC1ER1RFU1RfRE9OVF9ERUZJTkVfRk9PPTEKKwordG8gdGhlIGNvbXBpbGVyIGZs
YWdzIHRvIHRlbGwgR29vZ2xlIFRlc3QgdG8gY2hhbmdlIHRoZSBtYWNybydzIG5hbWUgZnJvbSBg
Rk9PYAordG8gYEdURVNUX0ZPT2AuIEN1cnJlbnRseSBgRk9PYCBjYW4gYmUgYEZBSUxgLCBgU1VD
Q0VFRGAsIG9yIGBURVNUYC4gRm9yCitleGFtcGxlLCB3aXRoIGAtREdURVNUX0RPTlRfREVGSU5F
X1RFU1Q9MWAsIHlvdSdsbCBuZWVkIHRvIHdyaXRlCisKKyAgICBHVEVTVF9URVNUKFNvbWVUZXN0
LCBEb2VzVGhpcykgeyAuLi4gfQorCitpbnN0ZWFkIG9mCisKKyAgICBURVNUKFNvbWVUZXN0LCBE
b2VzVGhpcykgeyAuLi4gfQorCitpbiBvcmRlciB0byBkZWZpbmUgYSB0ZXN0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvQ29uZmlnLmNtYWtlLmluIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvQ29uZmlnLmNtYWtlLmluCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyYmU0
NDk4YjFhMDc5NjgxYTEyOWUzMWIxN2M1N2UxODEyNmE2M2EKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9Db25maWcuY21ha2UuaW4KQEAgLTAsMCArMSw5
IEBACitAUEFDS0FHRV9JTklUQAoraW5jbHVkZShDTWFrZUZpbmREZXBlbmRlbmN5TWFjcm8pCitp
ZiAoQEdURVNUX0hBU19QVEhSRUFEQCkKKyAgc2V0KFRIUkVBRFNfUFJFRkVSX1BUSFJFQURfRkxB
RyBAVEhSRUFEU19QUkVGRVJfUFRIUkVBRF9GTEFHQCkKKyAgZmluZF9kZXBlbmRlbmN5KFRocmVh
ZHMpCitlbmRpZigpCisKK2luY2x1ZGUoIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vQHRhcmdl
dHNfZXhwb3J0X25hbWVALmNtYWtlIikKK2NoZWNrX3JlcXVpcmVkX2NvbXBvbmVudHMoIkBwcm9q
ZWN0X25hbWVAIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2d0
ZXN0LnBjLmluIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvZ3Rlc3QucGMuaW4KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTc5NjdhZDU2ZmYyYzMyZWQ0YmEwNjcwM2FlYTUyNWRjYWQyY2U3YgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2d0ZXN0LnBjLmluCkBA
IC0wLDAgKzEsOSBAQAorbGliZGlyPUBDTUFLRV9JTlNUQUxMX0ZVTExfTElCRElSQAoraW5jbHVk
ZWRpcj1AQ01BS0VfSU5TVEFMTF9GVUxMX0lOQ0xVREVESVJACisKK05hbWU6IGd0ZXN0CitEZXNj
cmlwdGlvbjogR29vZ2xlVGVzdCAod2l0aG91dCBtYWluKCkgZnVuY3Rpb24pCitWZXJzaW9uOiBA
UFJPSkVDVF9WRVJTSU9OQAorVVJMOiBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRl
c3QKK0xpYnM6IC1MJHtsaWJkaXJ9IC1sZ3Rlc3QgQENNQUtFX1RIUkVBRF9MSUJTX0lOSVRACitD
ZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSBAR1RFU1RfSEFTX1BUSFJFQURfTUFDUk9AIEBDTUFLRV9U
SFJFQURfTElCU19JTklUQApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21h
a2UvZ3Rlc3RfbWFpbi5wYy5pbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2d0ZXN0
X21haW4ucGMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmUyNWQ5YzczYzY4M2I2NDE3Yjk5YmI3MDNjMTNhZTE2
YmE4YTk1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtl
L2d0ZXN0X21haW4ucGMuaW4KQEAgLTAsMCArMSwxMCBAQAorbGliZGlyPUBDTUFLRV9JTlNUQUxM
X0ZVTExfTElCRElSQAoraW5jbHVkZWRpcj1AQ01BS0VfSU5TVEFMTF9GVUxMX0lOQ0xVREVESVJA
CisKK05hbWU6IGd0ZXN0X21haW4KK0Rlc2NyaXB0aW9uOiBHb29nbGVUZXN0ICh3aXRoIG1haW4o
KSBmdW5jdGlvbikKK1ZlcnNpb246IEBQUk9KRUNUX1ZFUlNJT05ACitVUkw6IGh0dHBzOi8vZ2l0
aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdAorUmVxdWlyZXM6IGd0ZXN0CitMaWJzOiAtTCR7bGli
ZGlyfSAtbGd0ZXN0X21haW4gQENNQUtFX1RIUkVBRF9MSUJTX0lOSVRACitDZmxhZ3M6IC1JJHtp
bmNsdWRlZGlyfSBAR1RFU1RfSEFTX1BUSFJFQURfTUFDUk9AIEBDTUFLRV9USFJFQURfTElCU19J
TklUQApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvaW50ZXJuYWxf
dXRpbHMuY21ha2UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9pbnRlcm5hbF91dGls
cy5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44YzFmOWJhOTljZjUwNTc0ZjY2OWRkN2RlYmEzMjRkY2U0MDU5
NWYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvaW50
ZXJuYWxfdXRpbHMuY21ha2UKQEAgLTAsMCArMSwzMTggQEAKKyMgRGVmaW5lcyBmdW5jdGlvbnMg
YW5kIG1hY3JvcyB1c2VmdWwgZm9yIGJ1aWxkaW5nIEdvb2dsZSBUZXN0IGFuZAorIyBHb29nbGUg
TW9jay4KKyMKKyMgTm90ZToKKyMKKyMgLSBUaGlzIGZpbGUgd2lsbCBiZSBydW4gdHdpY2Ugd2hl
biBidWlsZGluZyBHb29nbGUgTW9jayAob25jZSB2aWEKKyMgICBHb29nbGUgVGVzdCdzIENNYWtl
TGlzdHMudHh0LCBhbmQgb25jZSB2aWEgR29vZ2xlIE1vY2sncykuCisjICAgVGhlcmVmb3JlIGl0
IHNob3VsZG4ndCBoYXZlIGFueSBzaWRlIGVmZmVjdHMgb3RoZXIgdGhhbiBkZWZpbmluZworIyAg
IHRoZSBmdW5jdGlvbnMgYW5kIG1hY3Jvcy4KKyMKKyMgLSBUaGUgZnVuY3Rpb25zL21hY3JvcyBk
ZWZpbmVkIGluIHRoaXMgZmlsZSBtYXkgZGVwZW5kIG9uIEdvb2dsZQorIyAgIFRlc3QgYW5kIEdv
b2dsZSBNb2NrJ3Mgb3B0aW9uKCkgZGVmaW5pdGlvbnMsIGFuZCB0aHVzIG11c3QgYmUKKyMgICBj
YWxsZWQgKmFmdGVyKiB0aGUgb3B0aW9ucyBoYXZlIGJlZW4gZGVmaW5lZC4KKworIyBUd2Vha3Mg
Q01ha2UncyBkZWZhdWx0IGNvbXBpbGVyL2xpbmtlciBzZXR0aW5ncyB0byBzdWl0IEdvb2dsZSBU
ZXN0J3MgbmVlZHMuCisjCisjIFRoaXMgbXVzdCBiZSBhIG1hY3JvKCksIGFzIGluc2lkZSBhIGZ1
bmN0aW9uIHN0cmluZygpIGNhbiBvbmx5CisjIHVwZGF0ZSB2YXJpYWJsZXMgaW4gdGhlIGZ1bmN0
aW9uIHNjb3BlLgorbWFjcm8oZml4X2RlZmF1bHRfY29tcGlsZXJfc2V0dGluZ3NfKQorICBpZiAo
TVNWQykKKyAgICAjIEZvciBNU1ZDLCBDTWFrZSBzZXRzIGNlcnRhaW4gZmxhZ3MgdG8gZGVmYXVs
dHMgd2Ugd2FudCB0byBvdmVycmlkZS4KKyAgICAjIFRoaXMgcmVwbGFjZW1lbnQgY29kZSBpcyB0
YWtlbiBmcm9tIHNhbXBsZSBpbiB0aGUgQ01ha2UgV2lraSBhdAorICAgICMgaHR0cHM6Ly9naXRs
YWIua2l0d2FyZS5jb20vY21ha2UvY29tbXVuaXR5L3dpa2lzL0ZBUSNkeW5hbWljLXJlcGxhY2Uu
CisgICAgZm9yZWFjaCAoZmxhZ192YXIKKyAgICAgICAgICAgICBDTUFLRV9DWFhfRkxBR1MgQ01B
S0VfQ1hYX0ZMQUdTX0RFQlVHIENNQUtFX0NYWF9GTEFHU19SRUxFQVNFCisgICAgICAgICAgICAg
Q01BS0VfQ1hYX0ZMQUdTX01JTlNJWkVSRUwgQ01BS0VfQ1hYX0ZMQUdTX1JFTFdJVEhERUJJTkZP
KQorICAgICAgaWYgKE5PVCBCVUlMRF9TSEFSRURfTElCUyBBTkQgTk9UIGd0ZXN0X2ZvcmNlX3No
YXJlZF9jcnQpCisgICAgICAgICMgV2hlbiBHb29nbGUgVGVzdCBpcyBidWlsdCBhcyBhIHNoYXJl
ZCBsaWJyYXJ5LCBpdCBzaG91bGQgYWxzbyB1c2UKKyAgICAgICAgIyBzaGFyZWQgcnVudGltZSBs
aWJyYXJpZXMuICBPdGhlcndpc2UsIGl0IG1heSBlbmQgdXAgd2l0aCBtdWx0aXBsZQorICAgICAg
ICAjIGNvcGllcyBvZiBydW50aW1lIGxpYnJhcnkgZGF0YSBpbiBkaWZmZXJlbnQgbW9kdWxlcywg
cmVzdWx0aW5nIGluCisgICAgICAgICMgaGFyZC10by1maW5kIGNyYXNoZXMuIFdoZW4gaXQgaXMg
YnVpbHQgYXMgYSBzdGF0aWMgbGlicmFyeSwgaXQgaXMKKyAgICAgICAgIyBwcmVmZXJhYmxlIHRv
IHVzZSBDUlQgYXMgc3RhdGljIGxpYnJhcmllcywgYXMgd2UgZG9uJ3QgaGF2ZSB0byByZWx5Cisg
ICAgICAgICMgb24gQ1JUIERMTHMgYmVpbmcgYXZhaWxhYmxlLiBDTWFrZSBhbHdheXMgZGVmYXVs
dHMgdG8gdXNpbmcgc2hhcmVkCisgICAgICAgICMgQ1JUIGxpYnJhcmllcywgc28gd2Ugb3ZlcnJp
ZGUgdGhhdCBkZWZhdWx0IGhlcmUuCisgICAgICAgIHN0cmluZyhSRVBMQUNFICIvTUQiICItTVQi
ICR7ZmxhZ192YXJ9ICIkeyR7ZmxhZ192YXJ9fSIpCisgICAgICBlbmRpZigpCisKKyAgICAgICMg
V2UgcHJlZmVyIG1vcmUgc3RyaWN0IHdhcm5pbmcgY2hlY2tpbmcgZm9yIGJ1aWxkaW5nIEdvb2ds
ZSBUZXN0LgorICAgICAgIyBSZXBsYWNlcyAvVzMgd2l0aCAvVzQgaW4gZGVmYXVsdHMuCisgICAg
ICBzdHJpbmcoUkVQTEFDRSAiL1czIiAiL1c0IiAke2ZsYWdfdmFyfSAiJHske2ZsYWdfdmFyfX0i
KQorCisgICAgICAjIFByZXZlbnQgRDkwMjUgd2FybmluZyBmb3IgdGFyZ2V0cyB0aGF0IGhhdmUg
ZXhjZXB0aW9uIGhhbmRsaW5nCisgICAgICAjIHR1cm5lZCBvZmYgKC9FSHMtYy0gZmxhZykuIFdo
ZXJlIHJlcXVpcmVkLCBleGNlcHRpb25zIGFyZSBleHBsaWNpdGx5CisgICAgICAjIHJlLWVuYWJs
ZWQgdXNpbmcgdGhlIGN4eF9leGNlcHRpb25fZmxhZ3MgdmFyaWFibGUuCisgICAgICBzdHJpbmco
UkVQTEFDRSAiL0VIc2MiICIiICR7ZmxhZ192YXJ9ICIkeyR7ZmxhZ192YXJ9fSIpCisgICAgZW5k
Zm9yZWFjaCgpCisgIGVuZGlmKCkKK2VuZG1hY3JvKCkKKworIyBEZWZpbmVzIHRoZSBjb21waWxl
ci9saW5rZXIgZmxhZ3MgdXNlZCB0byBidWlsZCBHb29nbGUgVGVzdCBhbmQKKyMgR29vZ2xlIE1v
Y2suICBZb3UgY2FuIHR3ZWFrIHRoZXNlIGRlZmluaXRpb25zIHRvIHN1aXQgeW91ciBuZWVkLiAg
QQorIyB2YXJpYWJsZSdzIHZhbHVlIGlzIGVtcHR5IGJlZm9yZSBpdCdzIGV4cGxpY2l0bHkgYXNz
aWduZWQgdG8uCittYWNybyhjb25maWdfY29tcGlsZXJfYW5kX2xpbmtlcikKKyAgIyBOb3RlOiBw
dGhyZWFkcyBvbiBNaW5HVyBpcyBub3Qgc3VwcG9ydGVkLCBldmVuIGlmIGF2YWlsYWJsZQorICAj
IGluc3RlYWQsIHdlIHVzZSB3aW5kb3dzIHRocmVhZGluZyBwcmltaXRpdmVzCisgIHVuc2V0KEdU
RVNUX0hBU19QVEhSRUFEKQorICBpZiAoTk9UIGd0ZXN0X2Rpc2FibGVfcHRocmVhZHMgQU5EIE5P
VCBNSU5HVykKKyAgICAjIERlZmluZXMgQ01BS0VfVVNFX1BUSFJFQURTX0lOSVQgYW5kIENNQUtF
X1RIUkVBRF9MSUJTX0lOSVQuCisgICAgc2V0KFRIUkVBRFNfUFJFRkVSX1BUSFJFQURfRkxBRyBP
TikKKyAgICBmaW5kX3BhY2thZ2UoVGhyZWFkcykKKyAgICBpZiAoQ01BS0VfVVNFX1BUSFJFQURT
X0lOSVQpCisgICAgICBzZXQoR1RFU1RfSEFTX1BUSFJFQUQgT04pCisgICAgZW5kaWYoKQorICBl
bmRpZigpCisKKyAgZml4X2RlZmF1bHRfY29tcGlsZXJfc2V0dGluZ3NfKCkKKyAgaWYgKE1TVkMp
CisgICAgIyBOZXdsaW5lcyBpbnNpZGUgZmxhZ3MgdmFyaWFibGVzIGJyZWFrIENNYWtlJ3MgTk1h
a2UgZ2VuZXJhdG9yLgorICAgICMgVE9ETyh2bGFkbEBnb29nbGUuY29tKTogQWRkIC1SVENzIGFu
ZCAtUlRDdSB0byBkZWJ1ZyBidWlsZHMuCisgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICItR1MgLVc0
IC1XWCAtd2Q0MjUxIC13ZDQyNzUgLW5vbG9nbyAtSiAtWmkiKQorICAgIGlmIChNU1ZDX1ZFUlNJ
T04gTEVTUyAxNDAwKSAgIyAxNDAwIGlzIFZpc3VhbCBTdHVkaW8gMjAwNQorICAgICAgIyBTdXBw
cmVzcyBzcHVyaW91cyB3YXJuaW5ncyBNU1ZDIDcuMSBzb21ldGltZXMgaXNzdWVzLgorICAgICAg
IyBGb3JjaW5nIHZhbHVlIHRvIGJvb2wuCisgICAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4
X2Jhc2VfZmxhZ3N9IC13ZDQ4MDAiKQorICAgICAgIyBDb3B5IGNvbnN0cnVjdG9yIGFuZCBhc3Np
Z25tZW50IG9wZXJhdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQuCisgICAgICBzZXQoY3h4X2Jh
c2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC13ZDQ1MTEgLXdkNDUxMiIpCisgICAgICAjIENv
bXBhdGliaWxpdHkgd2FybmluZ3Mgbm90IGFwcGxpY2FibGUgdG8gR29vZ2xlIFRlc3QuCisgICAg
ICAjIFJlc29sdmVkIG92ZXJsb2FkIHdhcyBmb3VuZCBieSBhcmd1bWVudC1kZXBlbmRlbnQgbG9v
a3VwLgorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtd2Q0Njc1
IikKKyAgICBlbmRpZigpCisgICAgaWYgKE1TVkNfVkVSU0lPTiBMRVNTIDE1MDApICAjIDE1MDAg
aXMgVmlzdWFsIFN0dWRpbyAyMDA4CisgICAgICAjIENvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMg
Y29uc3RhbnQuCisgICAgICAjIFdoZW4gY29tcGlsaW5nIHdpdGggL1c0LCB3ZSBnZXQgc2V2ZXJh
bCBpbnN0YW5jZXMgb2YgQzQxMjcKKyAgICAgICMgKENvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMg
Y29uc3RhbnQpLiBJbiBvdXIgY29kZSwgd2UgZGlzYWJsZSB0aGF0CisgICAgICAjIHdhcm5pbmcg
b24gYSBjYXNlLWJ5LWNhc2UgYmFzaXMuIEhvd2V2ZXIsIG9uIFZpc3VhbCBTdHVkaW8gMjAwNSwK
KyAgICAgICMgdGhlIHdhcm5pbmcgZmlyZXMgb24gc3RkOjpsaXN0LiBUaGVyZWZvcmUgb24gdGhh
dCBjb21waWxlciBhbmQgZWFybGllciwKKyAgICAgICMgd2UgZGlzYWJsZSB0aGUgd2FybmluZyBw
cm9qZWN0LXdpZGUuCisgICAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9
IC13ZDQxMjciKQorICAgIGVuZGlmKCkKKyAgICBpZiAoTk9UIChNU1ZDX1ZFUlNJT04gTEVTUyAx
NzAwKSkgICMgMTcwMCBpcyBWaXN1YWwgU3R1ZGlvIDIwMTIuCisgICAgICAjIFN1cHByZXNzICJ1
bnJlYWNoYWJsZSBjb2RlIiB3YXJuaW5nIG9uIFZTIDIwMTIgYW5kIGxhdGVyLgorICAgICAgIyBo
dHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzMyMzI2NjkgZXhwbGFpbnMgdGhlIGlz
c3VlLgorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtd2Q0NzAy
IikKKyAgICBlbmRpZigpCisKKyAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxh
Z3N9IC1EX1VOSUNPREUgLURVTklDT0RFIC1EV0lOMzIgLURfV0lOMzIiKQorICAgIHNldChjeHhf
YmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLURTVFJJQ1QgLURXSU4zMl9MRUFOX0FORF9N
RUFOIikKKyAgICBzZXQoY3h4X2V4Y2VwdGlvbl9mbGFncyAiLUVIc2MgLURfSEFTX0VYQ0VQVElP
TlM9MSIpCisgICAgc2V0KGN4eF9ub19leGNlcHRpb25fZmxhZ3MgIi1FSHMtYy0gLURfSEFTX0VY
Q0VQVElPTlM9MCIpCisgICAgc2V0KGN4eF9ub19ydHRpX2ZsYWdzICItR1ItIikKKyAgZWxzZWlm
IChDTUFLRV9DT01QSUxFUl9JU19HTlVDWFgpCisgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICItV2Fs
bCAtV3NoYWRvdyAtV2Vycm9yIikKKyAgICBpZihOT1QgQ01BS0VfQ1hYX0NPTVBJTEVSX1ZFUlNJ
T04gVkVSU0lPTl9MRVNTIDcuMC4wKQorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9i
YXNlX2ZsYWdzfSAtV25vLWVycm9yPWRhbmdsaW5nLWVsc2UiKQorICAgIGVuZGlmKCkKKyAgICBz
ZXQoY3h4X2V4Y2VwdGlvbl9mbGFncyAiLWZleGNlcHRpb25zIikKKyAgICBzZXQoY3h4X25vX2V4
Y2VwdGlvbl9mbGFncyAiLWZuby1leGNlcHRpb25zIikKKyAgICAjIFVudGlsIHZlcnNpb24gNC4z
LjIsIEdDQyBkb2Vzbid0IGRlZmluZSBhIG1hY3JvIHRvIGluZGljYXRlCisgICAgIyB3aGV0aGVy
IFJUVEkgaXMgZW5hYmxlZC4gIFRoZXJlZm9yZSB3ZSBkZWZpbmUgR1RFU1RfSEFTX1JUVEkKKyAg
ICAjIGV4cGxpY2l0bHkuCisgICAgc2V0KGN4eF9ub19ydHRpX2ZsYWdzICItZm5vLXJ0dGkgLURH
VEVTVF9IQVNfUlRUST0wIikKKyAgICBzZXQoY3h4X3N0cmljdF9mbGFncworICAgICAgIi1XZXh0
cmEgLVduby11bnVzZWQtcGFyYW1ldGVyIC1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMi
KQorICBlbHNlaWYgKENNQUtFX0NYWF9DT01QSUxFUl9JRCBTVFJFUVVBTCAiU3VuUHJvIikKKyAg
ICBzZXQoY3h4X2V4Y2VwdGlvbl9mbGFncyAiLWZlYXR1cmVzPWV4Y2VwdCIpCisgICAgIyBTdW4g
UHJvIGRvZXNuJ3QgcHJvdmlkZSBtYWNyb3MgdG8gaW5kaWNhdGUgd2hldGhlciBleGNlcHRpb25z
IGFuZAorICAgICMgUlRUSSBhcmUgZW5hYmxlZCwgc28gd2UgZGVmaW5lIEdURVNUX0hBU18qIGV4
cGxpY2l0bHkuCisgICAgc2V0KGN4eF9ub19leGNlcHRpb25fZmxhZ3MgIi1mZWF0dXJlcz1ubyVl
eGNlcHQgLURHVEVTVF9IQVNfRVhDRVBUSU9OUz0wIikKKyAgICBzZXQoY3h4X25vX3J0dGlfZmxh
Z3MgIi1mZWF0dXJlcz1ubyVydHRpIC1ER1RFU1RfSEFTX1JUVEk9MCIpCisgIGVsc2VpZiAoQ01B
S0VfQ1hYX0NPTVBJTEVSX0lEIFNUUkVRVUFMICJWaXN1YWxBZ2UiIE9SCisgICAgICBDTUFLRV9D
WFhfQ09NUElMRVJfSUQgU1RSRVFVQUwgIlhMIikKKyAgICAjIENNYWtlIDIuOCBjaGFuZ2VzIFZp
c3VhbCBBZ2UncyBjb21waWxlciBJRCB0byAiWEwiLgorICAgIHNldChjeHhfZXhjZXB0aW9uX2Zs
YWdzICItcWVoIikKKyAgICBzZXQoY3h4X25vX2V4Y2VwdGlvbl9mbGFncyAiLXFub2VoIikKKyAg
ICAjIFVudGlsIHZlcnNpb24gOS4wLCBWaXN1YWwgQWdlIGRvZXNuJ3QgZGVmaW5lIGEgbWFjcm8g
dG8gaW5kaWNhdGUKKyAgICAjIHdoZXRoZXIgUlRUSSBpcyBlbmFibGVkLiAgVGhlcmVmb3JlIHdl
IGRlZmluZSBHVEVTVF9IQVNfUlRUSQorICAgICMgZXhwbGljaXRseS4KKyAgICBzZXQoY3h4X25v
X3J0dGlfZmxhZ3MgIi1xbm9ydHRpIC1ER1RFU1RfSEFTX1JUVEk9MCIpCisgIGVsc2VpZiAoQ01B
S0VfQ1hYX0NPTVBJTEVSX0lEIFNUUkVRVUFMICJIUCIpCisgICAgc2V0KGN4eF9iYXNlX2ZsYWdz
ICItQUEgLW10IikKKyAgICBzZXQoY3h4X2V4Y2VwdGlvbl9mbGFncyAiLURHVEVTVF9IQVNfRVhD
RVBUSU9OUz0xIikKKyAgICBzZXQoY3h4X25vX2V4Y2VwdGlvbl9mbGFncyAiK25vZWggLURHVEVT
VF9IQVNfRVhDRVBUSU9OUz0wIikKKyAgICAjIFJUVEkgY2FuIG5vdCBiZSBkaXNhYmxlZCBpbiBI
UCBhQ0MgY29tcGlsZXIuCisgICAgc2V0KGN4eF9ub19ydHRpX2ZsYWdzICIiKQorICBlbmRpZigp
CisKKyAgIyBUaGUgcHRocmVhZHMgbGlicmFyeSBpcyBhdmFpbGFibGUgYW5kIGFsbG93ZWQ/Cisg
IGlmIChERUZJTkVEIEdURVNUX0hBU19QVEhSRUFEKQorICAgIHNldChHVEVTVF9IQVNfUFRIUkVB
RF9NQUNSTyAiLURHVEVTVF9IQVNfUFRIUkVBRD0xIikKKyAgZWxzZSgpCisgICAgc2V0KEdURVNU
X0hBU19QVEhSRUFEX01BQ1JPICItREdURVNUX0hBU19QVEhSRUFEPTAiKQorICBlbmRpZigpCisg
IHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gJHtHVEVTVF9IQVNfUFRIUkVB
RF9NQUNST30iKQorCisgICMgRm9yIGJ1aWxkaW5nIGd0ZXN0J3Mgb3duIHRlc3RzIGFuZCBzYW1w
bGVzLgorICBzZXQoY3h4X2V4Y2VwdGlvbiAiJHtjeHhfYmFzZV9mbGFnc30gJHtjeHhfZXhjZXB0
aW9uX2ZsYWdzfSIpCisgIHNldChjeHhfbm9fZXhjZXB0aW9uCisgICAgIiR7Q01BS0VfQ1hYX0ZM
QUdTfSAke2N4eF9iYXNlX2ZsYWdzfSAke2N4eF9ub19leGNlcHRpb25fZmxhZ3N9IikKKyAgc2V0
KGN4eF9kZWZhdWx0ICIke2N4eF9leGNlcHRpb259IikKKyAgc2V0KGN4eF9ub19ydHRpICIke2N4
eF9kZWZhdWx0fSAke2N4eF9ub19ydHRpX2ZsYWdzfSIpCisgIHNldChjeHhfdXNlX293bl90dXBs
ZSAiJHtjeHhfZGVmYXVsdH0gLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0xIikKKworICAjIEZv
ciBidWlsZGluZyB0aGUgZ3Rlc3QgbGlicmFyaWVzLgorICBzZXQoY3h4X3N0cmljdCAiJHtjeHhf
ZGVmYXVsdH0gJHtjeHhfc3RyaWN0X2ZsYWdzfSIpCitlbmRtYWNybygpCisKKyMgRGVmaW5lcyB0
aGUgZ3Rlc3QgJiBndGVzdF9tYWluIGxpYnJhcmllcy4gIFVzZXIgdGVzdHMgc2hvdWxkIGxpbmsK
KyMgd2l0aCBvbmUgb2YgdGhlbS4KK2Z1bmN0aW9uKGN4eF9saWJyYXJ5X3dpdGhfdHlwZSBuYW1l
IHR5cGUgY3h4X2ZsYWdzKQorICAjIHR5cGUgY2FuIGJlIGVpdGhlciBTVEFUSUMgb3IgU0hBUkVE
IHRvIGRlbm90ZSBhIHN0YXRpYyBvciBzaGFyZWQgbGlicmFyeS4KKyAgIyBBUkdOIHJlZmVycyB0
byBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhZnRlciAnY3h4X2ZsYWdzJy4KKyAgYWRkX2xpYnJhcnko
JHtuYW1lfSAke3R5cGV9ICR7QVJHTn0pCisgIHNldF90YXJnZXRfcHJvcGVydGllcygke25hbWV9
CisgICAgUFJPUEVSVElFUworICAgIENPTVBJTEVfRkxBR1MgIiR7Y3h4X2ZsYWdzfSIpCisgICMg
R2VuZXJhdGUgZGVidWcgbGlicmFyeSBuYW1lIHdpdGggYSBwb3N0Zml4LgorICBzZXRfdGFyZ2V0
X3Byb3BlcnRpZXMoJHtuYW1lfQorICAgIFBST1BFUlRJRVMKKyAgICBERUJVR19QT1NURklYICJk
IikKKyAgaWYgKEJVSUxEX1NIQVJFRF9MSUJTIE9SIHR5cGUgU1RSRVFVQUwgIlNIQVJFRCIpCisg
ICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7bmFtZX0KKyAgICAgIFBST1BFUlRJRVMKKyAgICAg
IENPTVBJTEVfREVGSU5JVElPTlMgIkdURVNUX0NSRUFURV9TSEFSRURfTElCUkFSWT0xIikKKyAg
ICBpZiAoTk9UICIke0NNQUtFX1ZFUlNJT059IiBWRVJTSU9OX0xFU1MgIjIuOC4xMSIpCisgICAg
ICB0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucygke25hbWV9IElOVEVSRkFDRQorICAgICAgICAk
PElOU1RBTExfSU5URVJGQUNFOkdURVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFSWT0xPikKKyAg
ICBlbmRpZigpCisgIGVuZGlmKCkKKyAgaWYgKERFRklORUQgR1RFU1RfSEFTX1BUSFJFQUQpCisg
ICAgaWYgKCIke0NNQUtFX1ZFUlNJT059IiBWRVJTSU9OX0xFU1MgIjMuMS4wIikKKyAgICAgIHNl
dCh0aHJlYWRzX3NwZWMgJHtDTUFLRV9USFJFQURfTElCU19JTklUfSkKKyAgICBlbHNlKCkKKyAg
ICAgIHNldCh0aHJlYWRzX3NwZWMgVGhyZWFkczo6VGhyZWFkcykKKyAgICBlbmRpZigpCisgICAg
dGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7bmFtZX0gUFVCTElDICR7dGhyZWFkc19zcGVjfSkKKyAg
ZW5kaWYoKQorZW5kZnVuY3Rpb24oKQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgSGVscGVyIGZ1
bmN0aW9ucyBmb3IgY3JlYXRpbmcgYnVpbGQgdGFyZ2V0cy4KKworZnVuY3Rpb24oY3h4X3NoYXJl
ZF9saWJyYXJ5IG5hbWUgY3h4X2ZsYWdzKQorICBjeHhfbGlicmFyeV93aXRoX3R5cGUoJHtuYW1l
fSBTSEFSRUQgIiR7Y3h4X2ZsYWdzfSIgJHtBUkdOfSkKK2VuZGZ1bmN0aW9uKCkKKworZnVuY3Rp
b24oY3h4X2xpYnJhcnkgbmFtZSBjeHhfZmxhZ3MpCisgIGN4eF9saWJyYXJ5X3dpdGhfdHlwZSgk
e25hbWV9ICIiICIke2N4eF9mbGFnc30iICR7QVJHTn0pCitlbmRmdW5jdGlvbigpCisKKyMgY3h4
X2V4ZWN1dGFibGVfd2l0aF9mbGFncyhuYW1lIGN4eF9mbGFncyBsaWJzIHNyY3MuLi4pCisjCisj
IGNyZWF0ZXMgYSBuYW1lZCBDKysgZXhlY3V0YWJsZSB0aGF0IGRlcGVuZHMgb24gdGhlIGdpdmVu
IGxpYnJhcmllcyBhbmQKKyMgaXMgYnVpbHQgZnJvbSB0aGUgZ2l2ZW4gc291cmNlIGZpbGVzIHdp
dGggdGhlIGdpdmVuIGNvbXBpbGVyIGZsYWdzLgorZnVuY3Rpb24oY3h4X2V4ZWN1dGFibGVfd2l0
aF9mbGFncyBuYW1lIGN4eF9mbGFncyBsaWJzKQorICBhZGRfZXhlY3V0YWJsZSgke25hbWV9ICR7
QVJHTn0pCisgIGlmIChNU1ZDIEFORCAoTk9UIChNU1ZDX1ZFUlNJT04gTEVTUyAxNzAwKSkpICAj
IDE3MDAgaXMgVmlzdWFsIFN0dWRpbyAyMDEyLgorICAgICMgQmlnT2JqIHJlcXVpcmVkIGZvciB0
ZXN0cy4KKyAgICBzZXQoY3h4X2ZsYWdzICIke2N4eF9mbGFnc30gLWJpZ29iaiIpCisgIGVuZGlm
KCkKKyAgaWYgKGN4eF9mbGFncykKKyAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtuYW1lfQor
ICAgICAgUFJPUEVSVElFUworICAgICAgQ09NUElMRV9GTEFHUyAiJHtjeHhfZmxhZ3N9IikKKyAg
ZW5kaWYoKQorICBpZiAoQlVJTERfU0hBUkVEX0xJQlMpCisgICAgc2V0X3RhcmdldF9wcm9wZXJ0
aWVzKCR7bmFtZX0KKyAgICAgIFBST1BFUlRJRVMKKyAgICAgIENPTVBJTEVfREVGSU5JVElPTlMg
IkdURVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFSWT0xIikKKyAgZW5kaWYoKQorICAjIFRvIHN1
cHBvcnQgbWl4aW5nIGxpbmtpbmcgaW4gc3RhdGljIGFuZCBkeW5hbWljIGxpYnJhcmllcywgbGlu
ayBlYWNoCisgICMgbGlicmFyeSBpbiB3aXRoIGFuIGV4dHJhIGNhbGwgdG8gdGFyZ2V0X2xpbmtf
bGlicmFyaWVzLgorICBmb3JlYWNoIChsaWIgIiR7bGlic30iKQorICAgIHRhcmdldF9saW5rX2xp
YnJhcmllcygke25hbWV9ICR7bGlifSkKKyAgZW5kZm9yZWFjaCgpCitlbmRmdW5jdGlvbigpCisK
KyMgY3h4X2V4ZWN1dGFibGUobmFtZSBkaXIgbGliIHNyY3MuLi4pCisjCisjIGNyZWF0ZXMgYSBu
YW1lZCB0YXJnZXQgdGhhdCBkZXBlbmRzIG9uIHRoZSBnaXZlbiBsaWJzIGFuZCBpcyBidWlsdAor
IyBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmlsZXMuICBkaXIvbmFtZS5jYyBpcyBpbXBsaWNpdGx5
IGluY2x1ZGVkIGluCisjIHRoZSBzb3VyY2UgZmlsZSBsaXN0LgorZnVuY3Rpb24oY3h4X2V4ZWN1
dGFibGUgbmFtZSBkaXIgbGlicykKKyAgY3h4X2V4ZWN1dGFibGVfd2l0aF9mbGFncygKKyAgICAk
e25hbWV9ICIke2N4eF9kZWZhdWx0fSIgIiR7bGlic30iICIke2Rpcn0vJHtuYW1lfS5jYyIgJHtB
UkdOfSkKK2VuZGZ1bmN0aW9uKCkKKworIyBTZXRzIFBZVEhPTklOVEVSUF9GT1VORCBhbmQgUFlU
SE9OX0VYRUNVVEFCTEUuCitmaW5kX3BhY2thZ2UoUHl0aG9uSW50ZXJwKQorCisjIGN4eF90ZXN0
X3dpdGhfZmxhZ3MobmFtZSBjeHhfZmxhZ3MgbGlicyBzcmNzLi4uKQorIworIyBjcmVhdGVzIGEg
bmFtZWQgQysrIHRlc3QgdGhhdCBkZXBlbmRzIG9uIHRoZSBnaXZlbiBsaWJzIGFuZCBpcyBidWls
dAorIyBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmlsZXMgd2l0aCB0aGUgZ2l2ZW4gY29tcGlsZXIg
ZmxhZ3MuCitmdW5jdGlvbihjeHhfdGVzdF93aXRoX2ZsYWdzIG5hbWUgY3h4X2ZsYWdzIGxpYnMp
CisgIGN4eF9leGVjdXRhYmxlX3dpdGhfZmxhZ3MoJHtuYW1lfSAiJHtjeHhfZmxhZ3N9IiAiJHts
aWJzfSIgJHtBUkdOfSkKKyAgYWRkX3Rlc3QoTkFNRSAke25hbWV9IENPTU1BTkQgJHtuYW1lfSkK
K2VuZGZ1bmN0aW9uKCkKKworIyBjeHhfdGVzdChuYW1lIGxpYnMgc3Jjcy4uLikKKyMKKyMgY3Jl
YXRlcyBhIG5hbWVkIHRlc3QgdGFyZ2V0IHRoYXQgZGVwZW5kcyBvbiB0aGUgZ2l2ZW4gbGlicyBh
bmQgaXMKKyMgYnVpbHQgZnJvbSB0aGUgZ2l2ZW4gc291cmNlIGZpbGVzLiAgVW5saWtlIGN4eF90
ZXN0X3dpdGhfZmxhZ3MsCisjIHRlc3QvbmFtZS5jYyBpcyBhbHJlYWR5IGltcGxpY2l0bHkgaW5j
bHVkZWQgaW4gdGhlIHNvdXJjZSBmaWxlIGxpc3QuCitmdW5jdGlvbihjeHhfdGVzdCBuYW1lIGxp
YnMpCisgIGN4eF90ZXN0X3dpdGhfZmxhZ3MoIiR7bmFtZX0iICIke2N4eF9kZWZhdWx0fSIgIiR7
bGlic30iCisgICAgInRlc3QvJHtuYW1lfS5jYyIgJHtBUkdOfSkKK2VuZGZ1bmN0aW9uKCkKKwor
IyBweV90ZXN0KG5hbWUpCisjCisjIGNyZWF0ZXMgYSBQeXRob24gdGVzdCB3aXRoIHRoZSBnaXZl
biBuYW1lIHdob3NlIG1haW4gbW9kdWxlIGlzIGluCisjIHRlc3QvbmFtZS5weS4gIEl0IGRvZXMg
bm90aGluZyBpZiBQeXRob24gaXMgbm90IGluc3RhbGxlZC4KK2Z1bmN0aW9uKHB5X3Rlc3QgbmFt
ZSkKKyAgaWYgKFBZVEhPTklOVEVSUF9GT1VORCkKKyAgICBpZiAoJHtDTUFLRV9NQUpPUl9WRVJT
SU9OfS4ke0NNQUtFX01JTk9SX1ZFUlNJT059IEdSRUFURVIgMy4xKQorICAgICAgaWYgKENNQUtF
X0NPTkZJR1VSQVRJT05fVFlQRVMpCisJIyBNdWx0aS1jb25maWd1cmF0aW9uIGJ1aWxkIGdlbmVy
YXRvcnMgYXMgZm9yIFZpc3VhbCBTdHVkaW8gc2F2ZQorCSMgb3V0cHV0IGluIGEgc3ViZGlyZWN0
b3J5IG9mIENNQUtFX0NVUlJFTlRfQklOQVJZX0RJUiAoRGVidWcsCisJIyBSZWxlYXNlIGV0Yy4p
LCBzbyB3ZSBoYXZlIHRvIHByb3ZpZGUgaXQgaGVyZS4KKyAgICAgICAgYWRkX3Rlc3QoCisgICAg
ICAgICAgTkFNRSAke25hbWV9CisgICAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxF
fSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vdGVzdC8ke25hbWV9LnB5CisgICAgICAgICAg
ICAgIC0tYnVpbGRfZGlyPSR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS8kPENPTkZJRz4gJHtB
UkdOfSkKKyAgICAgIGVsc2UgKENNQUtFX0NPTkZJR1VSQVRJT05fVFlQRVMpCisJIyBTaW5nbGUt
Y29uZmlndXJhdGlvbiBidWlsZCBnZW5lcmF0b3JzIGxpa2UgTWFrZWZpbGUgZ2VuZXJhdG9ycwor
CSMgZG9uJ3QgaGF2ZSBzdWJkaXJzIGJlbG93IENNQUtFX0NVUlJFTlRfQklOQVJZX0RJUi4KKyAg
ICAgICAgYWRkX3Rlc3QoCisgICAgICAgICAgTkFNRSAke25hbWV9CisgICAgICAgICAgQ09NTUFO
RCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vdGVzdC8k
e25hbWV9LnB5CisgICAgICAgICAgICAgIC0tYnVpbGRfZGlyPSR7Q01BS0VfQ1VSUkVOVF9CSU5B
UllfRElSfSAke0FSR059KQorICAgICAgZW5kaWYgKENNQUtFX0NPTkZJR1VSQVRJT05fVFlQRVMp
CisgICAgZWxzZSAoJHtDTUFLRV9NQUpPUl9WRVJTSU9OfS4ke0NNQUtFX01JTk9SX1ZFUlNJT059
IEdSRUFURVIgMy4xKQorICAgICAgIyAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0gaXMga25v
d24gYXQgY29uZmlndXJhdGlvbiB0aW1lLCBzbyB3ZSBjYW4KKyAgICAgICMgZGlyZWN0bHkgYmlu
ZCBpdCBmcm9tIGNtYWtlLiAke0NURVNUX0NPTkZJR1VSQVRJT05fVFlQRX0gaXMga25vd24KKyAg
ICAgICMgb25seSBhdCBjdGVzdCBydW50aW1lIChieSBjYWxsaW5nIGN0ZXN0IC1jIDxDb25maWd1
cmF0aW9uPiksIHNvCisgICAgICAjIHdlIGhhdmUgdG8gZXNjYXBlICQgdG8gZGVsYXkgdmFyaWFi
bGUgc3Vic3RpdHV0aW9uIGhlcmUuCisgICAgICBhZGRfdGVzdCgKKyAgICAgICAgJHtuYW1lfQor
ICAgICAgICAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0v
dGVzdC8ke25hbWV9LnB5CisgICAgICAgICAgLS1idWlsZF9kaXI9JHtDTUFLRV9DVVJSRU5UX0JJ
TkFSWV9ESVJ9L1wke0NURVNUX0NPTkZJR1VSQVRJT05fVFlQRX0gJHtBUkdOfSkKKyAgICBlbmRp
ZiAoJHtDTUFLRV9NQUpPUl9WRVJTSU9OfS4ke0NNQUtFX01JTk9SX1ZFUlNJT059IEdSRUFURVIg
My4xKQorICBlbmRpZihQWVRIT05JTlRFUlBfRk9VTkQpCitlbmRmdW5jdGlvbigpCisKKyMgaW5z
dGFsbF9wcm9qZWN0KHRhcmdldHMuLi4pCisjCisjIEluc3RhbGxzIHRoZSBzcGVjaWZpZWQgdGFy
Z2V0cyBhbmQgY29uZmlndXJlcyB0aGUgYXNzb2NpYXRlZCBwa2djb25maWcgZmlsZXMuCitmdW5j
dGlvbihpbnN0YWxsX3Byb2plY3QpCisgIGlmKElOU1RBTExfR1RFU1QpCisgICAgaW5zdGFsbChE
SVJFQ1RPUlkgIiR7UFJPSkVDVF9TT1VSQ0VfRElSfS9pbmNsdWRlLyIKKyAgICAgIERFU1RJTkFU
SU9OICIke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0iKQorICAgICMgSW5zdGFsbCB0aGUgcHJv
amVjdCB0YXJnZXRzLgorICAgIGluc3RhbGwoVEFSR0VUUyAke0FSR059CisgICAgICBFWFBPUlQg
JHt0YXJnZXRzX2V4cG9ydF9uYW1lfQorICAgICAgUlVOVElNRSBERVNUSU5BVElPTiAiJHtDTUFL
RV9JTlNUQUxMX0JJTkRJUn0iCisgICAgICBBUkNISVZFIERFU1RJTkFUSU9OICIke0NNQUtFX0lO
U1RBTExfTElCRElSfSIKKyAgICAgIExJQlJBUlkgREVTVElOQVRJT04gIiR7Q01BS0VfSU5TVEFM
TF9MSUJESVJ9IikKKyAgICAjIENvbmZpZ3VyZSBhbmQgaW5zdGFsbCBwa2djb25maWcgZmlsZXMu
CisgICAgZm9yZWFjaCh0ICR7QVJHTn0pCisgICAgICBzZXQoY29uZmlndXJlZF9wYyAiJHtnZW5l
cmF0ZWRfZGlyfS8ke3R9LnBjIikKKyAgICAgIGNvbmZpZ3VyZV9maWxlKCIke1BST0pFQ1RfU09V
UkNFX0RJUn0vY21ha2UvJHt0fS5wYy5pbiIKKyAgICAgICAgIiR7Y29uZmlndXJlZF9wY30iIEBP
TkxZKQorICAgICAgaW5zdGFsbChGSUxFUyAiJHtjb25maWd1cmVkX3BjfSIKKyAgICAgICAgREVT
VElOQVRJT04gIiR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9L3BrZ2NvbmZpZyIpCisgICAgZW5kZm9y
ZWFjaCgpCisgIGVuZGlmKCkKK2VuZGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2NvZGVnZWFyL2d0ZXN0X2FsbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2NvZGVnZWFyL2d0ZXN0X2FsbC5jYwppbmRleCBiYTdhZDY4YWQxY2FhNWZiMjA4MzhjNzAw
ODk2YTQxODJiYTU5ZDlmLi4xMjFiMmQ4MGU4M2VjN2NkMGZkZjdkYzY3MTI3MmRjNTRmNmU5ZjBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9hbGwu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29kZWdlYXIvZ3Rlc3RfYWxsLmNjCkBA
IC0xLDM4ICsxLDM4IEBACi0vLyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLS8vIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBt
ZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
Ly8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0vLwotLy8gQXV0aG9yOiBKb3NoIEtlbGxleSAoam9zaGtlbEBnbWFpbC5jb20pCi0vLwot
Ly8gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCi0vLwotLy8gQysr
QnVpbGRlcidzIElERSBjYW5ub3QgYnVpbGQgYSBzdGF0aWMgbGlicmFyeSBmcm9tIGZpbGVzIHdp
dGggaHlwaGVucwotLy8gaW4gdGhlaXIgbmFtZS4gIFNlZSBodHRwOi8vcWMuY29kZWdlYXIuY29t
L3djL3FjbWFpbi5hc3B4P2Q9NzA5NzcgLgotLy8gVGhpcyBmaWxlIHNlcnZlcyBhcyBhIHdvcmth
cm91bmQuCi0KLSNpbmNsdWRlICJzcmMvZ3Rlc3QtYWxsLmNjIgorLy8gQ29weXJpZ2h0IDIwMDks
IEdvb2dsZSBJbmMuDQorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLw0KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dA0KKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUNCisvLyBtZXQ6DQorLy8NCisvLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKy8v
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4NCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlDQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcg0KKy8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCisvLyBkaXN0cmli
dXRpb24uDQorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cw0KKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tDQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCisvLw0KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMN
CisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVA0KKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0KKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUDQorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsDQorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVA0KKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0KKy8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQ0KKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQNCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCisvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKy8v
DQorLy8gQXV0aG9yOiBKb3NoIEtlbGxleSAoam9zaGtlbEBnbWFpbC5jb20pDQorLy8NCisvLyBH
b29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkNCisvLw0KKy8vIEMrK0J1
aWxkZXIncyBJREUgY2Fubm90IGJ1aWxkIGEgc3RhdGljIGxpYnJhcnkgZnJvbSBmaWxlcyB3aXRo
IGh5cGhlbnMNCisvLyBpbiB0aGVpciBuYW1lLiAgU2VlIGh0dHA6Ly9xYy5jb2RlZ2Vhci5jb20v
d2MvcWNtYWluLmFzcHg/ZD03MDk3NyAuDQorLy8gVGhpcyBmaWxlIHNlcnZlcyBhcyBhIHdvcmth
cm91bmQuDQorDQorI2luY2x1ZGUgInNyYy9ndGVzdC1hbGwuY2MiDQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29kZWdlYXIvZ3Rlc3RfbGluay5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2NvZGVnZWFyL2d0ZXN0X2xpbmsuY2MKaW5kZXggYjk1NWViZjJmOTExMGU2
MzUzYzY4N2NjMzk0MjM0OGRhNzk3Y2I1MC4uOTE4ZWNjZDE5YjdkYWZhMzJiNTI5MzgwYjcwOTIz
OGM5ZTNhMzYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29kZWdlYXIv
Z3Rlc3RfbGluay5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVz
dF9saW5rLmNjCkBAIC0xLDQwICsxLDQwIEBACi0vLyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIElu
Yy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8v
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiBKb3NoIEtlbGxleSAoam9zaGtlbEBnbWFp
bC5jb20pCi0vLwotLy8gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3Qp
Ci0vLwotLy8gTGlua3MgZ3Rlc3QubGliIGFuZCBndGVzdF9tYWluLmxpYiBpbnRvIHRoZSBjdXJy
ZW50IHByb2plY3QgaW4gQysrQnVpbGRlci4KLS8vIFRoaXMgbWVhbnMgdGhhdCB0aGVzZSBsaWJy
YXJpZXMgY2FuJ3QgYmUgcmVuYW1lZCwgYnV0IGl0J3MgdGhlIG9ubHkgd2F5IHRvCi0vLyBlbnN1
cmUgdGhhdCBEZWJ1ZyB2ZXJzdXMgUmVsZWFzZSB0ZXN0IGJ1aWxkcyBhcmUgbGlua2VkIGFnYWlu
c3QgdGhlCi0vLyBhcHByb3ByaWF0ZSBEZWJ1ZyBvciBSZWxlYXNlIGJ1aWxkIG9mIHRoZSBsaWJy
YXJpZXMuCi0KLSNwcmFnbWEgbGluayAiZ3Rlc3QubGliIgotI3ByYWdtYSBsaW5rICJndGVzdF9t
YWluLmxpYiIKKy8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLg0KKy8vIEFsbCByaWdodHMg
cmVzZXJ2ZWQuDQorLy8NCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlDQorLy8gbWV0
Og0KKy8vDQorLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KKy8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXINCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlDQorLy8gZGlzdHJpYnV0aW9uLg0KKy8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCisvLyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQ0KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uDQorLy8NCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQorLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QNCisvLyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1INCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVA0KKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KKy8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QNCisvLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwNCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkNCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQorLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFDQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCisvLw0KKy8vIEF1dGhvcjogSm9zaCBLZWxsZXkgKGpv
c2hrZWxAZ21haWwuY29tKQ0KKy8vDQorLy8gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAo
R29vZ2xlIFRlc3QpDQorLy8NCisvLyBMaW5rcyBndGVzdC5saWIgYW5kIGd0ZXN0X21haW4ubGli
IGludG8gdGhlIGN1cnJlbnQgcHJvamVjdCBpbiBDKytCdWlsZGVyLg0KKy8vIFRoaXMgbWVhbnMg
dGhhdCB0aGVzZSBsaWJyYXJpZXMgY2FuJ3QgYmUgcmVuYW1lZCwgYnV0IGl0J3MgdGhlIG9ubHkg
d2F5IHRvDQorLy8gZW5zdXJlIHRoYXQgRGVidWcgdmVyc3VzIFJlbGVhc2UgdGVzdCBidWlsZHMg
YXJlIGxpbmtlZCBhZ2FpbnN0IHRoZQ0KKy8vIGFwcHJvcHJpYXRlIERlYnVnIG9yIFJlbGVhc2Ug
YnVpbGQgb2YgdGhlIGxpYnJhcmllcy4NCisNCisjcHJhZ21hIGxpbmsgImd0ZXN0LmxpYiINCisj
cHJhZ21hIGxpbmsgImd0ZXN0X21haW4ubGliIg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2NvbmZpZ3VyZS5hYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NvbmZpZ3Vy
ZS5hYwppbmRleCAxYjkxMjM3NDYxZTM5ZmY2MWI2MzBmM2UwMTlhZGZlZWViNzgzYWU2Li4yNTRj
OGM0YjMxODg1ZDI1NzFmYTIzMDBiNjMxZThiZjlkOTVhZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9jb25maWd1cmUuYWMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvY29uZmlndXJlLmFjCkBAIC01LDEzICs1LDE0IEBAIG00X2luY2x1ZGUobTQvYWN4X3B0aHJl
YWQubTQpCiAjICJbMS4wLjFdIikuIEl0IGFsc28gYXN1bWVzIHRoYXQgdGhlcmUgd29uJ3QgYmUg
YW55IGNsb3NpbmcgcGFyZW50aGVzaXMKICMgYmV0d2VlbiAiQUNfSU5JVCgiIGFuZCB0aGUgY2xv
c2luZyAiKSIgaW5jbHVkaW5nIGNvbW1lbnRzIGFuZCBzdHJpbmdzLgogQUNfSU5JVChbR29vZ2xl
IEMrKyBUZXN0aW5nIEZyYW1ld29ya10sCi0gICAgICAgIFsxLjUuMF0sCisgICAgICAgIFsxLjgu
MF0sCiAgICAgICAgIFtnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb21dLAogICAg
ICAgICBbZ3Rlc3RdKQogCiAjIFByb3ZpZGUgdmFyaW91cyBvcHRpb25zIHRvIGluaXRpYWxpemUg
dGhlIEF1dG9jb25mIGFuZCBjb25maWd1cmUgcHJvY2Vzc2VzLgogQUNfUFJFUkVRKFsyLjU5XSkK
LUFDX0NPTkZJR19TUkNESVIoWy4vQ09QWUlOR10pCitBQ19DT05GSUdfU1JDRElSKFsuL0xJQ0VO
U0VdKQorQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQogQUNfQ09ORklHX0FVWF9ESVIoW2J1aWxk
LWF1eF0pCiBBQ19DT05GSUdfSEVBREVSUyhbYnVpbGQtYXV4L2NvbmZpZy5oXSkKIEFDX0NPTkZJ
R19GSUxFUyhbTWFrZWZpbGVdKQpAQCAtNTQsNyArNTUsNyBAQCBBU19JRihbdGVzdCAieCR3aXRo
X3B0aHJlYWRzIiAhPSAieG5vIl0sCiAgICAgICAgICAgICAgICBbQUNfTVNHX0ZBSUxVUkUoCiAg
ICAgICAgICAgICAgICAgIFstLXdpdGgtcHRocmVhZHMgd2FzIHNwZWNpZmllZCwgYnV0IHVuYWJs
ZSB0byBiZSB1c2VkXSldKV0pCiAgICAgICAgaGF2ZV9wdGhyZWFkcz0iJGFjeF9wdGhyZWFkX29r
Il0pCi1BTV9DT05ESVRJT05BTChbSEFWRV9QVEhSRUFEU10sW3Rlc3QgIngkaGF2ZV9wdGhyZWFk
cyIgPT0gInh5ZXMiXSkKK0FNX0NPTkRJVElPTkFMKFtIQVZFX1BUSFJFQURTXSxbdGVzdCAieCRo
YXZlX3B0aHJlYWRzIiA9ICJ4eWVzIl0pCiBBQ19TVUJTVChQVEhSRUFEX0NGTEFHUykKIEFDX1NV
QlNUKFBUSFJFQURfTElCUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
ZG9jcy9Qa2djb25maWcubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1BrZ2NvbmZp
Zy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45NzYxMjg5NGQyYTNjOGVhZGI0NDJjNTU4NzgwNGZiNzc4NWVhYTcx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9Qa2djb25m
aWcubWQKQEAgLTAsMCArMSwxNDYgQEAKKyMjIFVzaW5nIEdvb2dsZVRlc3QgZnJvbSB2YXJpb3Vz
IGJ1aWxkIHN5c3RlbXMgIyMKKworR29vZ2xlVGVzdCBjb21lcyB3aXRoIHBrZy1jb25maWcgZmls
ZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgYWxsCituZWNlc3NhcnkgZmxhZ3MgZm9y
IGNvbXBpbGluZyBhbmQgbGlua2luZyB0byBHb29nbGVUZXN0IChhbmQgR29vZ2xlTW9jaykuCitQ
a2ctY29uZmlnIGlzIGEgc3RhbmRhcmRpc2VkIHBsYWluLXRleHQgZm9ybWF0IGNvbnRhaW5pbmcK
KworICAqIHRoZSBpbmNsdWRlZGlyICgtSSkgcGF0aAorICAqIG5lY2Vzc2FyeSBtYWNybyAoLUQp
IGRlZmluaXRpb25zCisgICogZnVydGhlciByZXF1aXJlZCBmbGFncyAoLXB0aHJlYWQpCisgICog
dGhlIGxpYnJhcnkgKC1MKSBwYXRoCisgICogdGhlIGxpYnJhcnkgKC1sKSB0byBsaW5rIHRvCisK
K0FsbCBjdXJyZW50IGJ1aWxkIHN5c3RlbXMgc3VwcG9ydCBwa2ctY29uZmlnIGluIG9uZSB3YXkg
b3IgYW5vdGhlci4gRm9yCithbGwgZXhhbXBsZXMgaGVyZSB3ZSBhc3N1bWUgeW91IHdhbnQgdG8g
Y29tcGlsZSB0aGUgc2FtcGxlCitgc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjYC4KKworCisj
IyMgQ01ha2UgIyMjCisKK1VzaW5nIGBwa2ctY29uZmlnYCBpbiBDTWFrZSBpcyBmYWlybHkgZWFz
eToKKworYGBgCitjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMy4wKQorCitjbWFrZV9w
b2xpY3koU0VUIENNUDAwNDggTkVXKQorcHJvamVjdChteV9ndGVzdF9wa2djb25maWcgVkVSU0lP
TiAwLjAuMSBMQU5HVUFHRVMgQ1hYKQorCitmaW5kX3BhY2thZ2UoUGtnQ29uZmlnKQorcGtnX3Nl
YXJjaF9tb2R1bGUoR1RFU1QgUkVRVUlSRUQgZ3Rlc3RfbWFpbikKKworYWRkX2V4ZWN1dGFibGUo
dGVzdGFwcCBzYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MpCit0YXJnZXRfbGlua19saWJyYXJp
ZXModGVzdGFwcCAke0dURVNUX0xERkxBR1N9KQordGFyZ2V0X2NvbXBpbGVfb3B0aW9ucyh0ZXN0
YXBwIFBVQkxJQyAke0dURVNUX0NGTEFHU30pCisKK2luY2x1ZGUoQ1Rlc3QpCithZGRfdGVzdChm
aXJzdF9hbmRfb25seV90ZXN0IHRlc3RhcHApCitgYGAKKworSXQgaXMgZ2VuZXJhbGx5IHJlY29t
bWVuZGVkIHRoYXQgeW91IHVzZSBgdGFyZ2V0X2NvbXBpbGVfb3B0aW9uc2AgKyBgX0NGTEFHU2AK
K292ZXIgYHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzYCArIGBfSU5DTFVERV9ESVJTYCBhcyB0
aGUgZm9ybWVyIGluY2x1ZGVzIG5vdAoranVzdCAtSSBmbGFncyAoR29vZ2xlVGVzdCBtaWdodCBy
ZXF1aXJlIGEgbWFjcm8gaW5kaWNhdGluZyB0byBpbnRlcm5hbCBoZWFkZXJzCit0aGF0IGFsbCBs
aWJyYXJpZXMgaGF2ZSBiZWVuIGNvbXBpbGVkIHdpdGggdGhyZWFkaW5nIGVuYWJsZWQuIEluIGFk
ZGl0aW9uLAorR29vZ2xlVGVzdCBtaWdodCBhbHNvIHJlcXVpcmUgYC1wdGhyZWFkYCBpbiB0aGUg
Y29tcGlsaW5nIHN0ZXAsIGFuZCBhcyBzdWNoCitzcGxpdHRpbmcgdGhlIHBrZy1jb25maWcgYENm
bGFnc2AgdmFyaWFibGUgaW50byBpbmNsdWRlIGRpcnMgYW5kIG1hY3JvcyBmb3IKK2B0YXJnZXRf
Y29tcGlsZV9kZWZpbml0aW9ucygpYCBtaWdodCBzdGlsbCBtaXNzIHRoaXMpLiBUaGUgc2FtZSBy
ZWNvbW1lbmRhdGlvbgorZ29lcyBmb3IgdXNpbmcgYF9MREZMQUdTYCBvdmVyIHRoZSBtb3JlIGNv
bW1vbnBsYWNlIGBfTElCUkFSSUVTYCwgd2hpY2gKK2hhcHBlbnMgdG8gZGlzY2FyZCBgLUxgIGZs
YWdzIGFuZCBgLXB0aHJlYWRgLgorCisKKyMjIyBBdXRvdG9vbHMgIyMjCisKK0ZpbmRpbmcgR29v
Z2xlVGVzdCBpbiBBdXRvY29uZiBhbmQgdXNpbmcgaXQgZnJvbSBBdXRvbWFrZSBpcyBhbHNvIGZh
aXJseSBlYXN5OgorCitJbiB5b3VyIGBjb25maWd1cmUuYWNgOgorCitgYGAKK0FDX1BSRVJFUShb
Mi42OV0pCitBQ19JTklUKFtteV9ndGVzdF9wa2djb25maWddLCBbMC4wLjFdKQorQUNfQ09ORklH
X1NSQ0RJUihbc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjXSkKK0FDX1BST0dfQ1hYCisKK1BL
R19DSEVDS19NT0RVTEVTKFtHVEVTVF0sIFtndGVzdF9tYWluXSkKKworQU1fSU5JVF9BVVRPTUFL
RShbZm9yZWlnbiBzdWJkaXItb2JqZWN0c10pCitBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlXSkK
K0FDX09VVFBVVAorYGBgCisKK2FuZCBpbiB5b3VyIGBNYWtlZmlsZS5hbWA6CisKK2BgYAorY2hl
Y2tfUFJPR1JBTVMgPSB0ZXN0YXBwCitURVNUUyA9ICQoY2hlY2tfUFJPR1JBTVMpCisKK3Rlc3Rh
cHBfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYwordGVzdGFwcF9DWFhGTEFH
UyA9ICQoR1RFU1RfQ0ZMQUdTKQordGVzdGFwcF9MREFERCA9ICQoR1RFU1RfTElCUykKK2BgYAor
CisKKyMjIyBNZXNvbiAjIyMKKworTWVzb24gbmF0aXZlbHkgdXNlcyBwa2djb25maWcgdG8gcXVl
cnkgZGVwZW5kZW5jaWVzOgorCitgYGAKK3Byb2plY3QoJ215X2d0ZXN0X3BrZ2NvbmZpZycsICdj
cHAnLCB2ZXJzaW9uIDogJzAuMC4xJykKKworZ3Rlc3RfZGVwID0gZGVwZW5kZW5jeSgnZ3Rlc3Rf
bWFpbicpCisKK3Rlc3RhcHAgPSBleGVjdXRhYmxlKAorICAndGVzdGFwcCcsCisgIGZpbGVzKFsn
c2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjJ10pLAorICBkZXBlbmRlbmNpZXMgOiBndGVzdF9k
ZXAsCisgIGluc3RhbGwgOiBmYWxzZSkKKwordGVzdCgnZmlyc3RfYW5kX29ubHlfdGVzdCcsIHRl
c3RhcHApCitgYGAKKworCisjIyMgUGxhaW4gTWFrZWZpbGVzICMjIworCitTaW5jZSBgcGtnLWNv
bmZpZ2AgaXMgYSBzbWFsbCBVbml4IGNvbW1hbmQtbGluZSB1dGlsaXR5LCBpdCBjYW4gYmUgdXNl
ZAoraW4gaGFuZHdyaXR0ZW4gYE1ha2VmaWxlYHMgdG9vOgorCitgYGAKK0dURVNUX0NGTEFHUyA9
IGBwa2ctY29uZmlnIC0tY2ZsYWdzIGd0ZXN0X21haW5gCitHVEVTVF9MSUJTID0gYHBrZy1jb25m
aWcgLS1saWJzIGd0ZXN0X21haW5gCisKKy5QSE9OWTogdGVzdHMgYWxsCisKK3Rlc3RzOiBhbGwK
KwkuL3Rlc3RhcHAKKworYWxsOiB0ZXN0YXBwCisKK3Rlc3RhcHA6IHRlc3RhcHAubworCSQoQ1hY
KSAkKENYWEZMQUdTKSAkKExERkxBR1MpICQ8IC1vICRAICQoR1RFU1RfTElCUykKKwordGVzdGFw
cC5vOiBzYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MKKwkkKENYWCkgJChDUFBGTEFHUykgJChD
WFhGTEFHUykgJDwgLWMgLW8gJEAgJChHVEVTVF9DRkxBR1MpCitgYGAKKworCisjIyMgSGVscCEg
cGtnLWNvbmZpZyBjYW4ndCBmaW5kIEdvb2dsZVRlc3QhICMjIworCitMZXQncyBzYXkgeW91IGhh
dmUgYSBgQ01ha2VMaXN0cy50eHRgIGFsb25nIHRoZSBsaW5lcyBvZiB0aGUgb25lIGluIHRoaXMK
K3R1dG9yaWFsIGFuZCB5b3UgdHJ5IHRvIHJ1biBgY21ha2VgLiBJdCBpcyB2ZXJ5IHBvc3NpYmxl
IHRoYXQgeW91IGdldCBhCitmYWlsdXJlIGFsb25nIHRoZSBsaW5lcyBvZjoKKworYGBgCistLSBD
aGVja2luZyBmb3Igb25lIG9mIHRoZSBtb2R1bGVzICdndGVzdF9tYWluJworQ01ha2UgRXJyb3Ig
YXQgL3Vzci9zaGFyZS9jbWFrZS9Nb2R1bGVzL0ZpbmRQa2dDb25maWcuY21ha2U6NjQwIChtZXNz
YWdlKToKKyAgTm9uZSBvZiB0aGUgcmVxdWlyZWQgJ2d0ZXN0X21haW4nIGZvdW5kCitgYGAKKwor
VGhlc2UgZmFpbHVyZXMgYXJlIGNvbW1vbiBpZiB5b3UgaW5zdGFsbGVkIEdvb2dsZVRlc3QgeW91
cnNlbGYgYW5kIGhhdmUgbm90Citzb3VyY2VkIGl0IGZyb20gYSBkaXN0cm8gb3Igb3RoZXIgcGFj
a2FnZSBtYW5hZ2VyLiBJZiBzbywgeW91IG5lZWQgdG8gdGVsbAorcGtnLWNvbmZpZyB3aGVyZSBp
dCBjYW4gZmluZCB0aGUgYC5wY2AgZmlsZXMgY29udGFpbmluZyB0aGUgaW5mb3JtYXRpb24uCitT
YXkgeW91IGluc3RhbGxlZCBHb29nbGVUZXN0IHRvIGAvdXNyL2xvY2FsYCwgdGhlbiBpdCBtaWdo
dCBiZSB0aGF0IHRoZQorYC5wY2AgZmlsZXMgYXJlIGluc3RhbGxlZCB1bmRlciBgL3Vzci9sb2Nh
bC9saWI2NC9wa2djb25maWdgLiBJZiB5b3Ugc2V0CisKK2BgYAorZXhwb3J0IFBLR19DT05GSUdf
UEFUSD0vdXNyL2xvY2FsL2xpYjY0L3BrZ2NvbmZpZworYGBgCisKK3BrZy1jb25maWcgd2lsbCBh
bHNvIHRyeSB0byBsb29rIGluIGBQS0dfQ09ORklHX1BBVEhgIHRvIGZpbmQgYGd0ZXN0X21haW4u
cGNgLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9QdW1wTWFudWFs
Lm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9QdW1wTWFudWFsLm1kCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjgyN2JiMjRiMDQyZGM1NDNhZjRjNDA5YWQwM2UxNDdlYTU5NDliN2IKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1B1bXBNYW51YWwubWQKQEAgLTAs
MCArMSwxNzcgQEAKKworCis8Yj5QPC9iPnVtcCBpcyA8Yj5VPC9iPnNlZnVsIGZvciA8Yj5NPC9i
PmV0YSA8Yj5QPC9iPnJvZ3JhbW1pbmcuCisKKyMgVGhlIFByb2JsZW0gIworCitUZW1wbGF0ZSBh
bmQgbWFjcm8gbGlicmFyaWVzIG9mdGVuIG5lZWQgdG8gZGVmaW5lIG1hbnkgY2xhc3NlcywKK2Z1
bmN0aW9ucywgb3IgbWFjcm9zIHRoYXQgdmFyeSBvbmx5IChvciBhbG1vc3Qgb25seSkgaW4gdGhl
IG51bWJlciBvZgorYXJndW1lbnRzIHRoZXkgdGFrZS4gSXQncyBhIGxvdCBvZiByZXBldGl0aXZl
LCBtZWNoYW5pY2FsLCBhbmQKK2Vycm9yLXByb25lIHdvcmsuCisKK1ZhcmlhZGljIHRlbXBsYXRl
cyBhbmQgdmFyaWFkaWMgbWFjcm9zIGNhbiBhbGxldmlhdGUgdGhlIHByb2JsZW0uCitIb3dldmVy
LCB3aGlsZSBib3RoIGFyZSBiZWluZyBjb25zaWRlcmVkIGJ5IHRoZSBDKysgY29tbWl0dGVlLCBu
ZWl0aGVyCitpcyBpbiB0aGUgc3RhbmRhcmQgeWV0IG9yIHdpZGVseSBzdXBwb3J0ZWQgYnkgY29t
cGlsZXJzLiAgVGh1cyB0aGV5CithcmUgb2Z0ZW4gbm90IGEgZ29vZCBjaG9pY2UsIGVzcGVjaWFs
bHkgd2hlbiB5b3VyIGNvZGUgbmVlZHMgdG8gYmUKK3BvcnRhYmxlLiBBbmQgdGhlaXIgY2FwYWJp
bGl0aWVzIGFyZSBzdGlsbCBsaW1pdGVkLgorCitBcyBhIHJlc3VsdCwgYXV0aG9ycyBvZiBzdWNo
IGxpYnJhcmllcyBvZnRlbiBoYXZlIHRvIHdyaXRlIHNjcmlwdHMgdG8KK2dlbmVyYXRlIHRoZWly
IGltcGxlbWVudGF0aW9uLiBIb3dldmVyLCBvdXIgZXhwZXJpZW5jZSBpcyB0aGF0IGl0J3MKK3Rl
ZGlvdXMgdG8gd3JpdGUgc3VjaCBzY3JpcHRzLCB3aGljaCB0ZW5kIHRvIHJlZmxlY3QgdGhlIHN0
cnVjdHVyZSBvZgordGhlIGdlbmVyYXRlZCBjb2RlIHBvb3JseSBhbmQgYXJlIG9mdGVuIGhhcmQg
dG8gcmVhZCBhbmQgZWRpdC4gRm9yCitleGFtcGxlLCBhIHNtYWxsIGNoYW5nZSBuZWVkZWQgaW4g
dGhlIGdlbmVyYXRlZCBjb2RlIG1heSByZXF1aXJlIHNvbWUKK25vbi1pbnR1aXRpdmUsIG5vbi10
cml2aWFsIGNoYW5nZXMgaW4gdGhlIHNjcmlwdC4gVGhpcyBpcyBlc3BlY2lhbGx5CitwYWluZnVs
IHdoZW4gZXhwZXJpbWVudGluZyB3aXRoIHRoZSBjb2RlLgorCisjIE91ciBTb2x1dGlvbiAjCisK
K1B1bXAgKGZvciBQdW1wIGlzIFVzZWZ1bCBmb3IgTWV0YSBQcm9ncmFtbWluZywgUHJldHR5IFVz
ZWZ1bCBmb3IgTWV0YQorUHJvZ3JhbW1pbmcsIG9yIFByYWN0aWNhbCBVdGlsaXR5IGZvciBNZXRh
IFByb2dyYW1taW5nLCB3aGljaGV2ZXIgeW91CitwcmVmZXIpIGlzIGEgc2ltcGxlIG1ldGEtcHJv
Z3JhbW1pbmcgdG9vbCBmb3IgQysrLiBUaGUgaWRlYSBpcyB0aGF0IGEKK3Byb2dyYW1tZXIgd3Jp
dGVzIGEgYGZvby5wdW1wYCBmaWxlIHdoaWNoIGNvbnRhaW5zIEMrKyBjb2RlIHBsdXMgbWV0YQor
Y29kZSB0aGF0IG1hbmlwdWxhdGVzIHRoZSBDKysgY29kZS4gVGhlIG1ldGEgY29kZSBjYW4gaGFu
ZGxlCitpdGVyYXRpb25zIG92ZXIgYSByYW5nZSwgbmVzdGVkIGl0ZXJhdGlvbnMsIGxvY2FsIG1l
dGEgdmFyaWFibGUKK2RlZmluaXRpb25zLCBzaW1wbGUgYXJpdGhtZXRpYywgYW5kIGNvbmRpdGlv
bmFsIGV4cHJlc3Npb25zLiBZb3UgY2FuCit2aWV3IGl0IGFzIGEgc21hbGwgRG9tYWluLVNwZWNp
ZmljIExhbmd1YWdlLiBUaGUgbWV0YSBsYW5ndWFnZSBpcworZGVzaWduZWQgdG8gYmUgbm9uLWlu
dHJ1c2l2ZSAocy50LiBpdCB3b24ndCBjb25mdXNlIEVtYWNzJyBDKysgbW9kZSwKK2ZvciBleGFt
cGxlKSBhbmQgY29uY2lzZSwgbWFraW5nIFB1bXAgY29kZSBpbnR1aXRpdmUgYW5kIGVhc3kgdG8K
K21haW50YWluLgorCisjIyBIaWdobGlnaHRzICMjCisKKyAgKiBUaGUgaW1wbGVtZW50YXRpb24g
aXMgaW4gYSBzaW5nbGUgUHl0aG9uIHNjcmlwdCBhbmQgdGh1cyB1bHRyYSBwb3J0YWJsZTogbm8g
YnVpbGQgb3IgaW5zdGFsbGF0aW9uIGlzIG5lZWRlZCBhbmQgaXQgd29ya3MgY3Jvc3MgcGxhdGZv
cm1zLgorICAqIFB1bXAgdHJpZXMgdG8gYmUgc21hcnQgd2l0aCByZXNwZWN0IHRvIFtHb29nbGUn
cyBzdHlsZSBndWlkZV0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9zdHlsZWd1aWRlKTogaXQg
YnJlYWtzIGxvbmcgbGluZXMgKGVhc3kgdG8gaGF2ZSB3aGVuIHRoZXkgYXJlIGdlbmVyYXRlZCkg
YXQgYWNjZXB0YWJsZSBwbGFjZXMgdG8gZml0IHdpdGhpbiA4MCBjb2x1bW5zIGFuZCBpbmRlbnQg
dGhlIGNvbnRpbnVhdGlvbiBsaW5lcyBjb3JyZWN0bHkuCisgICogVGhlIGZvcm1hdCBpcyBodW1h
bi1yZWFkYWJsZSBhbmQgbW9yZSBjb25jaXNlIHRoYW4gWE1MLgorICAqIFRoZSBmb3JtYXQgd29y
a3MgcmVsYXRpdmVseSB3ZWxsIHdpdGggRW1hY3MnIEMrKyBtb2RlLgorCisjIyBFeGFtcGxlcyAj
IworCitUaGUgZm9sbG93aW5nIFB1bXAgY29kZSAod2hlcmUgbWV0YSBrZXl3b3JkcyBzdGFydCB3
aXRoIGAkYCwgYFtbYCBhbmQgYF1dYCBhcmUgbWV0YSBicmFja2V0cywgYW5kIGAkJGAgc3RhcnRz
IGEgbWV0YSBjb21tZW50IHRoYXQgZW5kcyB3aXRoIHRoZSBsaW5lKToKKworYGBgCiskdmFyIG4g
PSAzICAgICAkJCBEZWZpbmVzIGEgbWV0YSB2YXJpYWJsZSBuLgorJHJhbmdlIGkgMC4ubiAgJCQg
RGVjbGFyZXMgdGhlIHJhbmdlIG9mIG1ldGEgaXRlcmF0b3IgaSAoaW5jbHVzaXZlKS4KKyRmb3Ig
aSBbWworICAgICAgICAgICAgICAgJCQgTWV0YSBsb29wLgorLy8gRm9vJGkgZG9lcyBibGFoIGZv
ciAkaS1hcnkgcHJlZGljYXRlcy4KKyRyYW5nZSBqIDEuLmkKK3RlbXBsYXRlIDxzaXplX3QgTiAk
Zm9yIGogW1ssIHR5cGVuYW1lIEEkal1dPgorY2xhc3MgRm9vJGkgeworJGlmIGkgPT0gMCBbWwor
ICBibGFoIGE7CitdXSAkZWxpZiBpIDw9IDIgW1sKKyAgYmxhaCBiOworXV0gJGVsc2UgW1sKKyAg
YmxhaCBjOworXV0KK307CisKK11dCitgYGAKKword2lsbCBiZSB0cmFuc2xhdGVkIGJ5IHRoZSBQ
dW1wIGNvbXBpbGVyIHRvOgorCitgYGAKKy8vIEZvbzAgZG9lcyBibGFoIGZvciAwLWFyeSBwcmVk
aWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBOPgorY2xhc3MgRm9vMCB7CisgIGJsYWggYTsKK307
CisKKy8vIEZvbzEgZG9lcyBibGFoIGZvciAxLWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNp
emVfdCBOLCB0eXBlbmFtZSBBMT4KK2NsYXNzIEZvbzEgeworICBibGFoIGI7Cit9OworCisvLyBG
b28yIGRvZXMgYmxhaCBmb3IgMi1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwg
dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgorY2xhc3MgRm9vMiB7CisgIGJsYWggYjsKK307CisK
Ky8vIEZvbzMgZG9lcyBibGFoIGZvciAzLWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVf
dCBOLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzPgorY2xhc3MgRm9vMyB7
CisgIGJsYWggYzsKK307CitgYGAKKworSW4gYW5vdGhlciBleGFtcGxlLAorCitgYGAKKyRyYW5n
ZSBpIDEuLm4KK0Z1bmMoJGZvciBpICsgW1thJGldXSk7CiskJCBUaGUgdGV4dCBiZXR3ZWVuIGkg
YW5kIFtbIGlzIHRoZSBzZXBhcmF0b3IgYmV0d2VlbiBpdGVyYXRpb25zLgorYGBgCisKK3dpbGwg
Z2VuZXJhdGUgb25lIG9mIHRoZSBmb2xsb3dpbmcgbGluZXMgKHdpdGhvdXQgdGhlIGNvbW1lbnRz
KSwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBgbmA6CisKK2BgYAorRnVuYygpOyAgICAgICAg
ICAgICAgLy8gSWYgbiBpcyAwLgorRnVuYyhhMSk7ICAgICAgICAgICAgLy8gSWYgbiBpcyAxLgor
RnVuYyhhMSArIGEyKTsgICAgICAgLy8gSWYgbiBpcyAyLgorRnVuYyhhMSArIGEyICsgYTMpOyAg
Ly8gSWYgbiBpcyAzLgorLy8gQW5kIHNvIG9uLi4uCitgYGAKKworIyMgQ29uc3RydWN0cyAjIwor
CitXZSBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgbWV0YSBwcm9ncmFtbWluZyBjb25zdHJ1Y3RzOgor
Cit8IGAkdmFyIGlkID0gZXhwYCB8IERlZmluZXMgYSBuYW1lZCBjb25zdGFudCB2YWx1ZS4gYCRp
ZGAgaXMgdmFsaWQgdXRpbCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IG1ldGEgbGV4aWNhbCBibG9j
ay4gfAorfDotLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXwKK3wgYCRyYW5nZSBpZCBleHAuLmV4cGAgfCBTZXRzIHRoZSByYW5nZSBvZiBhbiBp
dGVyYXRpb24gdmFyaWFibGUsIHdoaWNoIGNhbiBiZSByZXVzZWQgaW4gbXVsdGlwbGUgbG9vcHMg
bGF0ZXIuICAgICAgICAgIHwKK3wgYCRmb3IgaWQgc2VwIFtbIGNvZGUgXV1gIHwgSXRlcmF0aW9u
LiBUaGUgcmFuZ2Ugb2YgYGlkYCBtdXN0IGhhdmUgYmVlbiBkZWZpbmVkIGVhcmxpZXIuIGAkaWRg
IGlzIHZhbGlkIGluIGBjb2RlYC4gICAgICAgICB8Cit8IGAkKCQpYCAgICAgICAgICB8IEdlbmVy
YXRlcyBhIHNpbmdsZSBgJGAgY2hhcmFjdGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgJGlkYCAgICAgICAgICAgfCBW
YWx1ZSBvZiB0aGUgbmFtZWQgY29uc3RhbnQgb3IgaXRlcmF0aW9uIHZhcmlhYmxlLiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYCQoZXhwKWAgICAgICAg
IHwgVmFsdWUgb2YgdGhlIGV4cHJlc3Npb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGAkaWYgZXhwIFtb
IGNvZGUgXV0gZWxzZV9icmFuY2hgIHwgQ29uZGl0aW9uYWwuICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8Cit8IGBbWyBjb2RlIF1dYCAgICB8IE1ldGEgbGV4aWNhbCBibG9jay4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorfCBgY3BwX2NvZGVgICAgICAgfCBSYXcgQysrIGNvZGUuICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKK3wgYCQkIGNvbW1lbnRgICAgIHwgTWV0YSBjb21tZW50LiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisKKyoqTm90ZToqKiBUbyBnaXZlIHRoZSB1c2VyIHNvbWUgZnJl
ZWRvbSBpbiBmb3JtYXR0aW5nIHRoZSBQdW1wIHNvdXJjZQorY29kZSwgUHVtcCBpZ25vcmVzIGEg
bmV3LWxpbmUgY2hhcmFjdGVyIGlmIGl0J3MgcmlnaHQgYWZ0ZXIgYCRmb3IgZm9vYAorb3IgbmV4
dCB0byBgW1tgIG9yIGBdXWAuIFdpdGhvdXQgdGhpcyBydWxlIHlvdSdsbCBvZnRlbiBiZSBmb3Jj
ZWQgdG8gd3JpdGUKK3ZlcnkgbG9uZyBsaW5lcyB0byBnZXQgdGhlIGRlc2lyZWQgb3V0cHV0LiBU
aGVyZWZvcmUgc29tZXRpbWVzIHlvdSBtYXkKK25lZWQgdG8gaW5zZXJ0IGFuIGV4dHJhIG5ldy1s
aW5lIGluIHN1Y2ggcGxhY2VzIGZvciBhIG5ldy1saW5lIHRvIHNob3cKK3VwIGluIHlvdXIgb3V0
cHV0LgorCisjIyBHcmFtbWFyICMjCisKK2BgYAorY29kZSA6Oj0gYXRvbWljX2NvZGUqCithdG9t
aWNfY29kZSA6Oj0gJHZhciBpZCA9IGV4cAorICAgIHwgJHZhciBpZCA9IFtbIGNvZGUgXV0KKyAg
ICB8ICRyYW5nZSBpZCBleHAuLmV4cAorICAgIHwgJGZvciBpZCBzZXAgW1sgY29kZSBdXQorICAg
IHwgJCgkKQorICAgIHwgJGlkCisgICAgfCAkKGV4cCkKKyAgICB8ICRpZiBleHAgW1sgY29kZSBd
XSBlbHNlX2JyYW5jaAorICAgIHwgW1sgY29kZSBdXQorICAgIHwgY3BwX2NvZGUKK3NlcCA6Oj0g
Y3BwX2NvZGUgfCBlbXB0eV9zdHJpbmcKK2Vsc2VfYnJhbmNoIDo6PSAkZWxzZSBbWyBjb2RlIF1d
CisgICAgfCAkZWxpZiBleHAgW1sgY29kZSBdXSBlbHNlX2JyYW5jaAorICAgIHwgZW1wdHlfc3Ry
aW5nCitleHAgOjo9IHNpbXBsZV9leHByZXNzaW9uX2luX1B5dGhvbl9zeW50YXgKK2BgYAorCisj
IyBDb2RlICMjCisKK1lvdSBjYW4gZmluZCB0aGUgc291cmNlIGNvZGUgb2YgUHVtcCBpbiBbc2Ny
aXB0cy9wdW1wLnB5XSguLi9zY3JpcHRzL3B1bXAucHkpLiBJdCBpcyBzdGlsbAordmVyeSB1bnBv
bGlzaGVkIGFuZCBsYWNrcyBhdXRvbWF0ZWQgdGVzdHMsIGFsdGhvdWdoIGl0IGhhcyBiZWVuCitz
dWNjZXNzZnVsbHkgdXNlZCBtYW55IHRpbWVzLiBJZiB5b3UgZmluZCBhIGNoYW5jZSB0byB1c2Ug
aXQgaW4geW91cgorcHJvamVjdCwgcGxlYXNlIGxldCB1cyBrbm93IHdoYXQgeW91IHRoaW5rISAg
V2UgYWxzbyB3ZWxjb21lIGhlbHAgb24KK2ltcHJvdmluZyBQdW1wLgorCisjIyBSZWFsIEV4YW1w
bGVzICMjCisKK1lvdSBjYW4gZmluZCByZWFsLXdvcmxkIGFwcGxpY2F0aW9ucyBvZiBQdW1wIGlu
IFtHb29nbGUgVGVzdF0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L3RyZWUv
bWFzdGVyL2dvb2dsZXRlc3QpIGFuZCBbR29vZ2xlIE1vY2tdKGh0dHBzOi8vZ2l0aHViLmNvbS9n
b29nbGUvZ29vZ2xldGVzdC90cmVlL21hc3Rlci9nb29nbGVtb2NrKS4gVGhlIHNvdXJjZSBmaWxl
IGBmb28uaC5wdW1wYCBnZW5lcmF0ZXMgYGZvby5oYC4KKworIyMgVGlwcyAjIworCisgICogSWYg
YSBtZXRhIHZhcmlhYmxlIGlzIGZvbGxvd2VkIGJ5IGEgbGV0dGVyIG9yIGRpZ2l0LCB5b3UgY2Fu
IHNlcGFyYXRlIHRoZW0gdXNpbmcgYFtbXV1gLCB3aGljaCBpbnNlcnRzIGFuIGVtcHR5IHN0cmlu
Zy4gRm9yIGV4YW1wbGUgYEZvbyRqW1tdXUhlbHBlcmAgZ2VuZXJhdGUgYEZvbzFIZWxwZXJgIHdo
ZW4gYGpgIGlzIDEuCisgICogVG8gYXZvaWQgZXh0cmEtbG9uZyBQdW1wIHNvdXJjZSBsaW5lcywg
eW91IGNhbiBicmVhayBhIGxpbmUgYW55d2hlcmUgeW91IHdhbnQgYnkgaW5zZXJ0aW5nIGBbW11d
YCBmb2xsb3dlZCBieSBhIG5ldyBsaW5lLiBTaW5jZSBhbnkgbmV3LWxpbmUgY2hhcmFjdGVyIG5l
eHQgdG8gYFtbYCBvciBgXV1gIGlzIGlnbm9yZWQsIHRoZSBnZW5lcmF0ZWQgY29kZSB3b24ndCBj
b250YWluIHRoaXMgbmV3IGxpbmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9kb2NzL1hjb2RlR3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1hjb2Rl
R3VpZGUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMWM2MGEzM2RhZDQzYmFmOTgzODFmN2M5ZjIwZjY5YjU1OGIy
YWFkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvWGNv
ZGVHdWlkZS5tZApAQCAtMCwwICsxLDkzIEBACisKKworVGhpcyBndWlkZSB3aWxsIGV4cGxhaW4g
aG93IHRvIHVzZSB0aGUgR29vZ2xlIFRlc3RpbmcgRnJhbWV3b3JrIGluIHlvdXIgWGNvZGUgcHJv
amVjdHMgb24gTWFjIE9TIFguIFRoaXMgdHV0b3JpYWwgYmVnaW5zIGJ5IHF1aWNrbHkgZXhwbGFp
bmluZyB3aGF0IHRvIGRvIGZvciBleHBlcmllbmNlZCB1c2Vycy4gQWZ0ZXIgdGhlIHF1aWNrIHN0
YXJ0LCB0aGUgZ3VpZGUgZ29lcyBwcm92aWRlcyBhZGRpdGlvbmFsIGV4cGxhbmF0aW9uIGFib3V0
IGVhY2ggc3RlcC4KKworIyBRdWljayBTdGFydCAjCisKK0hlcmUgaXMgdGhlIHF1aWNrIGd1aWRl
IGZvciB1c2luZyBHb29nbGUgVGVzdCBpbiB5b3VyIFhjb2RlIHByb2plY3QuCisKKyAgMS4gRG93
bmxvYWQgdGhlIHNvdXJjZSBmcm9tIHRoZSBbd2Vic2l0ZV0oaHR0cHM6Ly9naXRodWIuY29tL2dv
b2dsZS9nb29nbGV0ZXN0KSB1c2luZyB0aGlzIGNvbW1hbmQ6IGBzdm4gY2hlY2tvdXQgaHR0cDov
L2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rLyBnb29nbGV0ZXN0LXJlYWQtb25s
eWAuCisgIDEuIE9wZW4gdXAgdGhlIGBndGVzdC54Y29kZXByb2pgIGluIHRoZSBgZ29vZ2xldGVz
dC1yZWFkLW9ubHkveGNvZGUvYCBkaXJlY3RvcnkgYW5kIGJ1aWxkIHRoZSBndGVzdC5mcmFtZXdv
cmsuCisgIDEuIENyZWF0ZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0IGluIHlvdXIgWGNvZGUg
cHJvamVjdCBjYWxsZWQgc29tZXRoaW5nIGxpa2UgIlVuaXRUZXN0cyIuCisgIDEuIEFkZCB0aGUg
Z3Rlc3QuZnJhbWV3b3JrIHRvIHlvdXIgcHJvamVjdCBhbmQgYWRkIGl0IHRvIHRoZSAiTGluayBC
aW5hcnkgd2l0aCBMaWJyYXJpZXMiIGJ1aWxkIHBoYXNlIG9mICJVbml0VGVzdHMiLgorICAxLiBB
ZGQgeW91ciB1bml0IHRlc3Qgc291cmNlIGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJjZXMiIGJ1
aWxkIHBoYXNlIG9mICJVbml0VGVzdHMiLgorICAxLiBFZGl0IHRoZSAiVW5pdFRlc3RzIiBleGVj
dXRhYmxlIGFuZCBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZWQgIkRZTERcX0ZSQU1F
V09SS1xfUEFUSCIgd2l0aCBhIHZhbHVlIGVxdWFsIHRvIHRoZSBwYXRoIHRvIHRoZSBmcmFtZXdv
cmsgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHJlbGF0aXZlIHRvIHRoZSBjb21waWxl
ZCBleGVjdXRhYmxlLgorICAxLiBCdWlsZCBhbmQgR28uCisKK1RoZSBmb2xsb3dpbmcgc2VjdGlv
bnMgZnVydGhlciBleHBsYWluIGVhY2ggb2YgdGhlIHN0ZXBzIGxpc3RlZCBhYm92ZSBpbiBkZXB0
aCwgZGVzY3JpYmluZyBpbiBtb3JlIGRldGFpbCBob3cgdG8gY29tcGxldGUgaXQgaW5jbHVkaW5n
IHNvbWUgdmFyaWF0aW9ucy4KKworIyBHZXQgdGhlIFNvdXJjZSAjCisKK0N1cnJlbnRseSwgdGhl
IGd0ZXN0LmZyYW1ld29yayBkaXNjdXNzZWQgaGVyZSBpc24ndCBhdmFpbGFibGUgaW4gYSB0YWdn
ZWQgcmVsZWFzZSBvZiBHb29nbGUgVGVzdCwgaXQgaXMgb25seSBhdmFpbGFibGUgaW4gdGhlIHRy
dW5rLiBBcyBleHBsYWluZWQgYXQgdGhlIEdvb2dsZSBUZXN0IFtzaXRlXShodHRwczovL2dpdGh1
Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QpLCB5b3UgY2FuIGdldCB0aGUgY29kZSBmcm9tIGFub255
bW91cyBTVk4gd2l0aCB0aGlzIGNvbW1hbmQ6CisKK2BgYAorc3ZuIGNoZWNrb3V0IGh0dHA6Ly9n
b29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay8gZ29vZ2xldGVzdC1yZWFkLW9ubHkK
K2BgYAorCitBbHRlcm5hdGl2ZWx5LCBpZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBTdWJ2ZXJzaW9u
IGluIHlvdXIgb3duIGNvZGUgYmFzZSwgeW91IGNhbiBhZGQgR29vZ2xlIFRlc3QgYXMgYW4gZXh0
ZXJuYWwgZGVwZW5kZW5jeSB0byB5b3VyIG93biBTdWJ2ZXJzaW9uIHJlcG9zaXRvcnkuIEJ5IGZv
bGxvd2luZyB0aGlzIGFwcHJvYWNoLCBldmVyeW9uZSB0aGF0IGNoZWNrcyBvdXQgeW91ciBzdm4g
cmVwb3NpdG9yeSB3aWxsIGFsc28gcmVjZWl2ZSBhIGNvcHkgb2YgR29vZ2xlIFRlc3QgKGEgc3Bl
Y2lmaWMgdmVyc2lvbiwgaWYgeW91IHdpc2gpIHdpdGhvdXQgaGF2aW5nIHRvIGNoZWNrIGl0IG91
dCBleHBsaWNpdGx5LiBUaGlzIG1ha2VzIHRoZSBzZXQgdXAgb2YgeW91ciBwcm9qZWN0IHNpbXBs
ZXIgYW5kIHJlZHVjZXMgdGhlIGNvcGllZCBjb2RlIGluIHRoZSByZXBvc2l0b3J5LgorCitUbyB1
c2UgYHN2bjpleHRlcm5hbHNgLCBkZWNpZGUgd2hlcmUgeW91IHdvdWxkIGxpa2UgdG8gaGF2ZSB0
aGUgZXh0ZXJuYWwgc291cmNlIHJlc2lkZS4gWW91IG1pZ2h0IGNob29zZSB0byBwdXQgdGhlIGV4
dGVybmFsIHNvdXJjZSBpbnNpZGUgdGhlIHRydW5rLCBiZWNhdXNlIHlvdSB3YW50IGl0IHRvIGJl
IHBhcnQgb2YgdGhlIGJyYW5jaCB3aGVuIHlvdSBtYWtlIGEgcmVsZWFzZS4gSG93ZXZlciwga2Vl
cGluZyBpdCBvdXRzaWRlIHRoZSB0cnVuayBpbiBhIHZlcnNpb24tdGFnZ2VkIGRpcmVjdG9yeSBj
YWxsZWQgc29tZXRoaW5nIGxpa2UgYHRoaXJkLXBhcnR5L2dvb2dsZXRlc3QvMS4wLjFgLCBpcyBh
bm90aGVyIG9wdGlvbi4gT25jZSB0aGUgbG9jYXRpb24gaXMgZXN0YWJsaXNoZWQsIHVzZSBgc3Zu
IHByb3BlZGl0IHN2bjpleHRlcm5hbHMgX2RpcmVjdG9yeV9gIHRvIHNldCB0aGUgc3ZuOmV4dGVy
bmFscyBwcm9wZXJ0eSBvbiBhIGRpcmVjdG9yeSBpbiB5b3VyIHJlcG9zaXRvcnkuIFRoaXMgZGly
ZWN0b3J5IHdvbid0IGNvbnRhaW4gdGhlIGNvZGUsIGJ1dCBiZSBpdHMgdmVyc2lvbmVkIHBhcmVu
dCBkaXJlY3RvcnkuCisKK1RoZSBjb21tYW5kIGBzdm4gcHJvcGVkaXRgIHdpbGwgYnJpbmcgdXAg
eW91ciBTdWJ2ZXJzaW9uIGVkaXRvciwgbWFraW5nIGVkaXRpbmcgdGhlIGxvbmcsIChwb3RlbnRp
YWxseSBtdWx0aS1saW5lKSBwcm9wZXJ0eSBzaW1wbGVyLiBUaGlzIHNhbWUgbWV0aG9kIGNhbiBi
ZSB1c2VkIHRvIGNoZWNrIG91dCBhIHRhZ2dlZCBicmFuY2gsIGJ5IHVzaW5nIHRoZSBhcHByb3By
aWF0ZSBVUkwgKGUuZy4gYGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9yZWxl
YXNlcy90YWcvcmVsZWFzZS0xLjAuMWApLiBBZGRpdGlvbmFsbHksIHRoZSBzdm46ZXh0ZXJuYWxz
IHByb3BlcnR5IGFsbG93cyB0aGUgc3BlY2lmaWNhdGlvbiBvZiBhIHBhcnRpY3VsYXIgcmV2aXNp
b24gb2YgdGhlIHRydW5rIHdpdGggdGhlIGAtcl8jI19gIG9wdGlvbiAoZS5nLiBgZXh0ZXJuYWxz
L3NyYy9nb29nbGV0ZXN0IC1yNjAgaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3Zu
L3RydW5rYCkuCisKK0hlcmUgaXMgYW4gZXhhbXBsZSBvZiB1c2luZyB0aGUgc3ZuOmV4dGVybmFs
cyBwcm9wZXJ0aWVzIG9uIGEgdHJ1bmsgKHJlYWQgdmlhIGBzdm4gcHJvcGdldGApIG9mIGEgcHJv
amVjdC4gVGhpcyB2YWx1ZSBjaGVja3Mgb3V0IGEgY29weSBvZiBHb29nbGUgVGVzdCBpbnRvIHRo
ZSBgdHJ1bmsvZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0L2AgZGlyZWN0b3J5LgorCitgYGAKK1tD
b21wdXRlcjpzdm5dIHVzZXIkIHN2biBwcm9wZ2V0IHN2bjpleHRlcm5hbHMgdHJ1bmsKK2V4dGVy
bmFscy9zcmMvZ29vZ2xldGVzdCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4v
dHJ1bmsKK2BgYAorCisjIEFkZCB0aGUgRnJhbWV3b3JrIHRvIFlvdXIgUHJvamVjdCAjCisKK1Ro
ZSBuZXh0IHN0ZXAgaXMgdG8gYnVpbGQgYW5kIGFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHRvIHlv
dXIgb3duIHByb2plY3QuIFRoaXMgZ3VpZGUgZGVzY3JpYmVzIHR3byBjb21tb24gd2F5cyBiZWxv
dy4KKworICAqICoqT3B0aW9uIDEqKiAtLS0gVGhlIHNpbXBsZXN0IHdheSB0byBhZGQgR29vZ2xl
IFRlc3QgdG8geW91ciBvd24gcHJvamVjdCwgaXMgdG8gb3BlbiBndGVzdC54Y29kZXByb2ogKGZv
dW5kIGluIHRoZSB4Y29kZS8gZGlyZWN0b3J5IG9mIHRoZSBHb29nbGUgVGVzdCB0cnVuaykgYW5k
IGJ1aWxkIHRoZSBmcmFtZXdvcmsgbWFudWFsbHkuIFRoZW4sIGFkZCB0aGUgYnVpbHQgZnJhbWV3
b3JrIGludG8geW91ciBwcm9qZWN0IHVzaW5nIHRoZSAiQWRkLT5FeGlzdGluZyBGcmFtZXdvcmsu
Li4iIGZyb20gdGhlIGNvbnRleHQgbWVudSBvciAiUHJvamVjdC0+QWRkLi4uIiBmcm9tIHRoZSBt
YWluIG1lbnUuIFRoZSBndGVzdC5mcmFtZXdvcmsgaXMgcmVsb2NhdGFibGUgYW5kIGNvbnRhaW5z
IHRoZSBoZWFkZXJzIGFuZCBvYmplY3QgY29kZSB0aGF0IHlvdSdsbCBuZWVkIHRvIG1ha2UgdGVz
dHMuIFRoaXMgbWV0aG9kIHJlcXVpcmVzIHJlYnVpbGRpbmcgZXZlcnkgdGltZSB5b3UgdXBncmFk
ZSBHb29nbGUgVGVzdCBpbiB5b3VyIHByb2plY3QuCisgICogKipPcHRpb24gMioqIC0tLSBJZiB5
b3UgYXJlIGdvaW5nIHRvIGJlIGxpdmluZyBvZmYgdGhlIHRydW5rIG9mIEdvb2dsZSBUZXN0LCBp
bmNvcnBvcmF0aW5nIGl0cyBsYXRlc3QgZmVhdHVyZXMgaW50byB5b3VyIHVuaXQgdGVzdHMgKG9y
IGFyZSBhIEdvb2dsZSBUZXN0IGRldmVsb3BlciB5b3Vyc2VsZikuIFlvdSdsbCB3YW50IHRvIHJl
YnVpbGQgdGhlIGZyYW1ld29yayBldmVyeSB0aW1lIHRoZSBzb3VyY2UgdXBkYXRlcy4gdG8gZG8g
dGhpcywgeW91J2xsIG5lZWQgdG8gYWRkIHRoZSBndGVzdC54Y29kZXByb2ogZmlsZSwgbm90IHRo
ZSBmcmFtZXdvcmsgaXRzZWxmLCB0byB5b3VyIG93biBYY29kZSBwcm9qZWN0LiBUaGVuLCBmcm9t
IHRoZSBidWlsZCBwcm9kdWN0cyB0aGF0IGFyZSByZXZlYWxlZCBieSB0aGUgcHJvamVjdCdzIGRp
c2Nsb3N1cmUgdHJpYW5nbGUsIHlvdSBjYW4gZmluZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrLCB3aGlj
aCBjYW4gYmUgYWRkZWQgdG8geW91ciB0YXJnZXRzIChkaXNjdXNzZWQgYmVsb3cpLgorCisjIE1h
a2UgYSBUZXN0IFRhcmdldCAjCisKK1RvIHN0YXJ0IHdyaXRpbmcgdGVzdHMsIG1ha2UgYSBuZXcg
IlNoZWxsIFRvb2wiIHRhcmdldC4gVGhpcyB0YXJnZXQgdGVtcGxhdGUgaXMgYXZhaWxhYmxlIHVu
ZGVyIEJTRCwgQ29jb2EsIG9yIENhcmJvbi4gQWRkIHlvdXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2Rl
IHRvIHRoZSAiQ29tcGlsZSBTb3VyY2VzIiBidWlsZCBwaGFzZSBvZiB0aGUgdGFyZ2V0LgorCitO
ZXh0LCB5b3UnbGwgd2FudCB0byBhZGQgZ3Rlc3QuZnJhbWV3b3JrIGluIHR3byBkaWZmZXJlbnQg
d2F5cywgZGVwZW5kaW5nIHVwb24gd2hpY2ggb3B0aW9uIHlvdSBjaG9zZSBhYm92ZS4KKworICAq
ICoqT3B0aW9uIDEqKiAtLS0gRHVyaW5nIGNvbXBpbGF0aW9uLCBYY29kZSB3aWxsIG5lZWQgdG8g
a25vdyB0aGF0IHlvdSBhcmUgbGlua2luZyBhZ2FpbnN0IHRoZSBndGVzdC5mcmFtZXdvcmsuIEFk
ZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHRvIHRoZSAiTGluayBCaW5hcnkgd2l0aCBMaWJyYXJpZXMi
IGJ1aWxkIHBoYXNlIG9mIHlvdXIgdGVzdCB0YXJnZXQuIFRoaXMgd2lsbCBpbmNsdWRlIHRoZSBH
b29nbGUgVGVzdCBoZWFkZXJzIGluIHlvdXIgaGVhZGVyIHNlYXJjaCBwYXRoLCBhbmQgd2lsbCB0
ZWxsIHRoZSBsaW5rZXIgd2hlcmUgdG8gZmluZCB0aGUgbGlicmFyeS4KKyAgKiAqKk9wdGlvbiAy
KiogLS0tIElmIHlvdXIgd29ya2luZyBvdXQgb2YgdGhlIHRydW5rLCB5b3UnbGwgYWxzbyB3YW50
IHRvIGFkZCBndGVzdC5mcmFtZXdvcmsgdG8geW91ciAiTGluayBCaW5hcnkgd2l0aCBMaWJyYXJp
ZXMiIGJ1aWxkIHBoYXNlIG9mIHlvdXIgdGVzdCB0YXJnZXQuIEluIGFkZGl0aW9uLCB5b3UnbGwg
IHdhbnQgdG8gYWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgYXMgYSBkZXBlbmRlbmN5IHRvIHlvdXIg
dW5pdCB0ZXN0IHRhcmdldC4gVGhpcyB3YXksIFhjb2RlIHdpbGwgbWFrZSBzdXJlIHRoYXQgZ3Rl
c3QuZnJhbWV3b3JrIGlzIHVwIHRvIGRhdGUsIGV2ZXJ5IHRpbWUgeW91ciBidWlsZCB5b3VyIHRh
cmdldC4gRmluYWxseSwgaWYgeW91IGRvbid0IHNoYXJlIGJ1aWxkIGRpcmVjdG9yaWVzIHdpdGgg
R29vZ2xlIFRlc3QsIHlvdSdsbCBoYXZlIHRvIGNvcHkgdGhlIGd0ZXN0LmZyYW1ld29yayBpbnRv
IHlvdXIgb3duIGJ1aWxkIHByb2R1Y3RzIGRpcmVjdG9yeSB1c2luZyBhICJSdW4gU2NyaXB0IiBi
dWlsZCBwaGFzZS4KKworIyBTZXQgVXAgdGhlIEV4ZWN1dGFibGUgUnVuIEVudmlyb25tZW50ICMK
KworU2luY2UgdGhlIHVuaXQgdGVzdCBleGVjdXRhYmxlIGlzIGEgc2hlbGwgdG9vbCwgaXQgZG9l
c24ndCBoYXZlIGEgYnVuZGxlIHdpdGggYSBgQ29udGVudHMvRnJhbWV3b3Jrc2AgZGlyZWN0b3J5
LCBpbiB3aGljaCB0byBwbGFjZSBndGVzdC5mcmFtZXdvcmsuIEluc3RlYWQsIHRoZSBkeW5hbWlj
IGxpbmtlciBtdXN0IGJlIHRvbGQgYXQgcnVudGltZSB0byBzZWFyY2ggZm9yIHRoZSBmcmFtZXdv
cmsgaW4gYW5vdGhlciBsb2NhdGlvbi4gVGhpcyBjYW4gYmUgYWNjb21wbGlzaGVkIGJ5IHNldHRp
bmcgdGhlICJEWUxEXF9GUkFNRVdPUktcX1BBVEgiIGVudmlyb25tZW50IHZhcmlhYmxlIGluIHRo
ZSAiRWRpdCBBY3RpdmUgRXhlY3V0YWJsZSAuLi4iIEFyZ3VtZW50cyB0YWIsIHVuZGVyICJWYXJp
YWJsZXMgdG8gYmUgc2V0IGluIHRoZSBlbnZpcm9ubWVudDoiLiBUaGUgcGF0aCBmb3IgdGhpcyB2
YWx1ZSBpcyB0aGUgcGF0aCAocmVsYXRpdmUgb3IgYWJzb2x1dGUpIG9mIHRoZSBkaXJlY3Rvcnkg
Y29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrLgorCitJZiB5b3UgaGF2ZW4ndCBzZXQgdXAg
dGhlIERZTERcX0ZSQU1FV09SS1xfUEFUSCwgY29ycmVjdGx5LCB5b3UgbWlnaHQgZ2V0IGEgbWVz
c2FnZSBsaWtlIHRoaXM6CisKK2BgYAorW1Nlc3Npb24gc3RhcnRlZCBhdCAyMDA4LTA4LTE1IDA2
OjIzOjU3IC0wNjAwLl0KKyAgZHlsZDogTGlicmFyeSBub3QgbG9hZGVkOiBAbG9hZGVyX3BhdGgv
Li4vRnJhbWV3b3Jrcy9ndGVzdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9ndGVzdAorICAgIFJlZmVy
ZW5jZWQgZnJvbTogL1VzZXJzL3VzZXJuYW1lL0RvY3VtZW50cy9TYW5kYm94L2d0ZXN0U2FtcGxl
L2J1aWxkL0RlYnVnL1dpZGdldEZyYW1ld29ya1Rlc3QKKyAgICBSZWFzb246IGltYWdlIG5vdCBm
b3VuZAorYGBgCisKK1RvIGNvcnJlY3QgdGhpcyBwcm9ibGVtLCBnbyB0byB0byB0aGUgZGlyZWN0
b3J5IGNvbnRhaW5pbmcgdGhlIGV4ZWN1dGFibGUgbmFtZWQgaW4gIlJlZmVyZW5jZWQgZnJvbToi
IHZhbHVlIGluIHRoZSBlcnJvciBtZXNzYWdlIGFib3ZlLiBUaGVuLCB3aXRoIHRoZSB0ZXJtaW5h
bCBpbiB0aGlzIGxvY2F0aW9uLCBmaW5kIHRoZSByZWxhdGl2ZSBwYXRoIHRvIHRoZSBkaXJlY3Rv
cnkgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrLiBUaGF0IGlzIHRoZSB2YWx1ZSB5b3Un
bGwgbmVlZCB0byBzZXQgYXMgdGhlIERZTERcX0ZSQU1FV09SS1xfUEFUSC4KKworIyBCdWlsZCBh
bmQgR28gIworCitOb3csIHdoZW4geW91IGNsaWNrICJCdWlsZCBhbmQgR28iLCB0aGUgdGVzdCB3
aWxsIGJlIGV4ZWN1dGVkLiBEdW1waW5nIG91dCBzb21ldGhpbmcgbGlrZSB0aGlzOgorCitgYGAK
K1tTZXNzaW9uIHN0YXJ0ZWQgYXQgMjAwOC0wOC0wNiAwNjozNjoxMyAtMDYwMC5dCitbPT09PT09
PT09PV0gUnVubmluZyAyIHRlc3RzIGZyb20gMSB0ZXN0IGNhc2UuCitbLS0tLS0tLS0tLV0gR2xv
YmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgorWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBX
aWRnZXRJbml0aWFsaXplclRlc3QKK1sgUlVOICAgICAgXSBXaWRnZXRJbml0aWFsaXplclRlc3Qu
VGVzdENvbnN0cnVjdG9yCitbICAgICAgIE9LIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RD
b25zdHJ1Y3RvcgorWyBSVU4gICAgICBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29udmVy
c2lvbgorWyAgICAgICBPSyBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29udmVyc2lvbgor
Wy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgorWz09PT09PT09
PT1dIDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZSByYW4uCitbICBQQVNTRUQgIF0gMiB0ZXN0cy4K
KworVGhlIERlYnVnZ2VyIGhhcyBleGl0ZWQgd2l0aCBzdGF0dXMgMC4gIAorYGBgCisKKyMgU3Vt
bWFyeSAjCisKK1VuaXQgdGVzdGluZyBpcyBhIHZhbHVhYmxlIHdheSB0byBlbnN1cmUgeW91ciBk
YXRhIG1vZGVsIHN0YXlzIHZhbGlkIGV2ZW4gZHVyaW5nIHJhcGlkIGRldmVsb3BtZW50IG9yIHJl
ZmFjdG9yaW5nLiBUaGUgR29vZ2xlIFRlc3RpbmcgRnJhbWV3b3JrIGlzIGEgZ3JlYXQgdW5pdCB0
ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBhbmQgQysrIHdoaWNoIGludGVncmF0ZXMgd2VsbCB3aXRo
IGFuIFhjb2RlIGRldmVsb3BtZW50IGVudmlyb25tZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvZG9jcy9hZHZhbmNlZC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2RvY3MvYWR2YW5jZWQubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA2NWQxOTYyMWE4YjM3ZmI3OGNiNWUwZWQx
Yjg2MThmZTc2MjVkMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2RvY3MvYWR2YW5jZWQubWQKQEAgLTAsMCArMSwyNTIwIEBACisjIEFkdmFuY2VkIGdvb2dsZXRl
c3QgVG9waWNzCisKKworIyMgSW50cm9kdWN0aW9uCisKK05vdyB0aGF0IHlvdSBoYXZlIHJlYWQg
dGhlIFtnb29nbGV0ZXN0IFByaW1lcl0ocHJpbWVyLm1kKSBhbmQgbGVhcm5lZCBob3cgdG8gd3Jp
dGUKK3Rlc3RzIHVzaW5nIGdvb2dsZXRlc3QsIGl0J3MgdGltZSB0byBsZWFybiBzb21lIG5ldyB0
cmlja3MuIFRoaXMgZG9jdW1lbnQgd2lsbAorc2hvdyB5b3UgbW9yZSBhc3NlcnRpb25zIGFzIHdl
bGwgYXMgaG93IHRvIGNvbnN0cnVjdCBjb21wbGV4IGZhaWx1cmUgbWVzc2FnZXMsCitwcm9wYWdh
dGUgZmF0YWwgZmFpbHVyZXMsIHJldXNlIGFuZCBzcGVlZCB1cCB5b3VyIHRlc3QgZml4dHVyZXMs
IGFuZCB1c2UgdmFyaW91cworZmxhZ3Mgd2l0aCB5b3VyIHRlc3RzLgorCisjIyBNb3JlIEFzc2Vy
dGlvbnMKKworVGhpcyBzZWN0aW9uIGNvdmVycyBzb21lIGxlc3MgZnJlcXVlbnRseSB1c2VkLCBi
dXQgc3RpbGwgc2lnbmlmaWNhbnQsCithc3NlcnRpb25zLgorCisjIyMgRXhwbGljaXQgU3VjY2Vz
cyBhbmQgRmFpbHVyZQorCitUaGVzZSB0aHJlZSBhc3NlcnRpb25zIGRvIG5vdCBhY3R1YWxseSB0
ZXN0IGEgdmFsdWUgb3IgZXhwcmVzc2lvbi4gSW5zdGVhZCwgdGhleQorZ2VuZXJhdGUgYSBzdWNj
ZXNzIG9yIGZhaWx1cmUgZGlyZWN0bHkuIExpa2UgdGhlIG1hY3JvcyB0aGF0IGFjdHVhbGx5IHBl
cmZvcm0gYQordGVzdCwgeW91IG1heSBzdHJlYW0gYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlIGlu
dG8gdGhlbS4KKworYGBgYysrCitTVUNDRUVEKCk7CitgYGAKKworR2VuZXJhdGVzIGEgc3VjY2Vz
cy4gVGhpcyBkb2VzICoqTk9UKiogbWFrZSB0aGUgb3ZlcmFsbCB0ZXN0IHN1Y2NlZWQuIEEgdGVz
dCBpcworY29uc2lkZXJlZCBzdWNjZXNzZnVsIG9ubHkgaWYgbm9uZSBvZiBpdHMgYXNzZXJ0aW9u
cyBmYWlsIGR1cmluZyBpdHMgZXhlY3V0aW9uLgorCitOT1RFOiBgU1VDQ0VFRCgpYCBpcyBwdXJl
bHkgZG9jdW1lbnRhcnkgYW5kIGN1cnJlbnRseSBkb2Vzbid0IGdlbmVyYXRlIGFueQordXNlci12
aXNpYmxlIG91dHB1dC4gSG93ZXZlciwgd2UgbWF5IGFkZCBgU1VDQ0VFRCgpYCBtZXNzYWdlcyB0
byBnb29nbGV0ZXN0J3MKK291dHB1dCBpbiB0aGUgZnV0dXJlLgorCitgYGBjKysKK0ZBSUwoKTsK
K0FERF9GQUlMVVJFKCk7CitBRERfRkFJTFVSRV9BVCgiZmlsZV9wYXRoIiwgbGluZV9udW1iZXIp
OworYGBgCisKK2BGQUlMKClgIGdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUsIHdoaWxlIGBBRERf
RkFJTFVSRSgpYCBhbmQgYEFERF9GQUlMVVJFX0FUKClgCitnZW5lcmF0ZSBhIG5vbmZhdGFsIGZh
aWx1cmUuIFRoZXNlIGFyZSB1c2VmdWwgd2hlbiBjb250cm9sIGZsb3csIHJhdGhlciB0aGFuIGEK
K0Jvb2xlYW4gZXhwcmVzc2lvbiwgZGV0ZXJtaW5lcyB0aGUgdGVzdCdzIHN1Y2Nlc3Mgb3IgZmFp
bHVyZS4gRm9yIGV4YW1wbGUsIHlvdQorbWlnaHQgd2FudCB0byB3cml0ZSBzb21ldGhpbmcgbGlr
ZToKKworYGBgYysrCitzd2l0Y2goZXhwcmVzc2lvbikgeworICBjYXNlIDE6CisgICAgIC4uLiBz
b21lIGNoZWNrcyAuLi4KKyAgY2FzZSAyOgorICAgICAuLi4gc29tZSBvdGhlciBjaGVja3MgLi4u
CisgIGRlZmF1bHQ6CisgICAgIEZBSUwoKSA8PCAiV2Ugc2hvdWxkbid0IGdldCBoZXJlLiI7Cit9
CitgYGAKKworTk9URTogeW91IGNhbiBvbmx5IHVzZSBgRkFJTCgpYCBpbiBmdW5jdGlvbnMgdGhh
dCByZXR1cm4gYHZvaWRgLiBTZWUgdGhlCitbQXNzZXJ0aW9uIFBsYWNlbWVudCBzZWN0aW9uXSgj
YXNzZXJ0aW9uLXBsYWNlbWVudCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKyoqQXZhaWxhYmls
aXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBFeGNlcHRpb24gQXNzZXJ0aW9ucwor
CitUaGVzZSBhcmUgZm9yIHZlcmlmeWluZyB0aGF0IGEgcGllY2Ugb2YgY29kZSB0aHJvd3MgKG9y
IGRvZXMgbm90IHRocm93KSBhbgorZXhjZXB0aW9uIG9mIHRoZSBnaXZlbiB0eXBlOgorCitGYXRh
bCBhc3NlcnRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRp
b24gICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJpZmllcworLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0KK2BBU1NFUlRfVEhST1coc3RhdGVtZW50LCBleGNlcHRp
b25fdHlwZSk7YCB8IGBFWFBFQ1RfVEhST1coc3RhdGVtZW50LCBleGNlcHRpb25fdHlwZSk7YCB8
IGBzdGF0ZW1lbnRgIHRocm93cyBhbiBleGNlcHRpb24gb2YgdGhlIGdpdmVuIHR5cGUKK2BBU1NF
UlRfQU5ZX1RIUk9XKHN0YXRlbWVudCk7YCAgICAgICAgICAgICB8IGBFWFBFQ1RfQU5ZX1RIUk9X
KHN0YXRlbWVudCk7YCAgICAgICAgICAgICB8IGBzdGF0ZW1lbnRgIHRocm93cyBhbiBleGNlcHRp
b24gb2YgYW55IHR5cGUKK2BBU1NFUlRfTk9fVEhST1coc3RhdGVtZW50KTtgICAgICAgICAgICAg
ICB8IGBFWFBFQ1RfTk9fVEhST1coc3RhdGVtZW50KTtgICAgICAgICAgICAgICB8IGBzdGF0ZW1l
bnRgIGRvZXNuJ3QgdGhyb3cgYW55IGV4Y2VwdGlvbgorCitFeGFtcGxlczoKKworYGBgYysrCitB
U1NFUlRfVEhST1coRm9vKDUpLCBiYXJfZXhjZXB0aW9uKTsKKworRVhQRUNUX05PX1RIUk9XKHsK
KyAgaW50IG4gPSA1OworICBCYXIoJm4pOworfSk7CitgYGAKKworKipBdmFpbGFiaWxpdHkqKjog
TGludXgsIFdpbmRvd3MsIE1hYzsgcmVxdWlyZXMgZXhjZXB0aW9ucyB0byBiZSBlbmFibGVkIGlu
IHRoZQorYnVpbGQgZW52aXJvbm1lbnQgKG5vdGUgdGhhdCBgZ29vZ2xlM2AgKipkaXNhYmxlcyoq
IGV4Y2VwdGlvbnMpLgorCisjIyMgUHJlZGljYXRlIEFzc2VydGlvbnMgZm9yIEJldHRlciBFcnJv
ciBNZXNzYWdlcworCitFdmVuIHRob3VnaCBnb29nbGV0ZXN0IGhhcyBhIHJpY2ggc2V0IG9mIGFz
c2VydGlvbnMsIHRoZXkgY2FuIG5ldmVyIGJlIGNvbXBsZXRlLAorYXMgaXQncyBpbXBvc3NpYmxl
IChub3IgYSBnb29kIGlkZWEpIHRvIGFudGljaXBhdGUgYWxsIHNjZW5hcmlvcyBhIHVzZXIgbWln
aHQKK3J1biBpbnRvLiBUaGVyZWZvcmUsIHNvbWV0aW1lcyBhIHVzZXIgaGFzIHRvIHVzZSBgRVhQ
RUNUX1RSVUUoKWAgdG8gY2hlY2sgYQorY29tcGxleCBleHByZXNzaW9uLCBmb3IgbGFjayBvZiBh
IGJldHRlciBtYWNyby4gVGhpcyBoYXMgdGhlIHByb2JsZW0gb2Ygbm90CitzaG93aW5nIHlvdSB0
aGUgdmFsdWVzIG9mIHRoZSBwYXJ0cyBvZiB0aGUgZXhwcmVzc2lvbiwgbWFraW5nIGl0IGhhcmQg
dG8KK3VuZGVyc3RhbmQgd2hhdCB3ZW50IHdyb25nLiBBcyBhIHdvcmthcm91bmQsIHNvbWUgdXNl
cnMgY2hvb3NlIHRvIGNvbnN0cnVjdCB0aGUKK2ZhaWx1cmUgbWVzc2FnZSBieSB0aGVtc2VsdmVz
LCBzdHJlYW1pbmcgaXQgaW50byBgRVhQRUNUX1RSVUUoKWAuIEhvd2V2ZXIsIHRoaXMKK2lzIGF3
a3dhcmQgZXNwZWNpYWxseSB3aGVuIHRoZSBleHByZXNzaW9uIGhhcyBzaWRlLWVmZmVjdHMgb3Ig
aXMgZXhwZW5zaXZlIHRvCitldmFsdWF0ZS4KKworZ29vZ2xldGVzdCBnaXZlcyB5b3UgdGhyZWUg
ZGlmZmVyZW50IG9wdGlvbnMgdG8gc29sdmUgdGhpcyBwcm9ibGVtOgorCisjIyMjIFVzaW5nIGFu
IEV4aXN0aW5nIEJvb2xlYW4gRnVuY3Rpb24KKworSWYgeW91IGFscmVhZHkgaGF2ZSBhIGZ1bmN0
aW9uIG9yIGZ1bmN0b3IgdGhhdCByZXR1cm5zIGBib29sYCAob3IgYSB0eXBlIHRoYXQKK2NhbiBi
ZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBgYm9vbGApLCB5b3UgY2FuIHVzZSBpdCBpbiBhICpw
cmVkaWNhdGUKK2Fzc2VydGlvbiogdG8gZ2V0IHRoZSBmdW5jdGlvbiBhcmd1bWVudHMgcHJpbnRl
ZCBmb3IgZnJlZToKKworfCBGYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgICAgIHwgTm9u
ZmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICB8IFZlcmlmaWVzICAgICAgICAgICAgICAg
ICAgICB8Cit8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwK
K3wgYEFTU0VSVF9QUkVEMShwcmVkMSwgdmFsMSk7YCAgICAgICB8IGBFWFBFQ1RfUFJFRDEocHJl
ZDEsIHZhbDEpO2AgICAgICAgfCBgcHJlZDEodmFsMSlgIGlzIHRydWUgICAgICAgfAorfCBgQVNT
RVJUX1BSRUQyKHByZWQyLCB2YWwxLCB2YWwyKTtgIHwgYEVYUEVDVF9QUkVEMihwcmVkMiwgdmFs
MSwgdmFsMik7YCB8IGBwcmVkMih2YWwxLCB2YWwyKWAgaXMgdHJ1ZSB8Cit8IGAuLi5gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCBgLi4uYCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgIHwKKworSW4gdGhlIGFib3ZlLCBgcHJl
ZG5gIGlzIGFuIGBuYC1hcnkgcHJlZGljYXRlIGZ1bmN0aW9uIG9yIGZ1bmN0b3IsIHdoZXJlIGB2
YWwxYCwKK2B2YWwyYCwgLi4uLCBhbmQgYHZhbG5gIGFyZSBpdHMgYXJndW1lbnRzLiBUaGUgYXNz
ZXJ0aW9uIHN1Y2NlZWRzIGlmIHRoZQorcHJlZGljYXRlIHJldHVybnMgYHRydWVgIHdoZW4gYXBw
bGllZCB0byB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBhbmQgZmFpbHMKK290aGVyd2lzZS4gV2hlbiB0
aGUgYXNzZXJ0aW9uIGZhaWxzLCBpdCBwcmludHMgdGhlIHZhbHVlIG9mIGVhY2ggYXJndW1lbnQu
IEluCitlaXRoZXIgY2FzZSwgdGhlIGFyZ3VtZW50cyBhcmUgZXZhbHVhdGVkIGV4YWN0bHkgb25j
ZS4KKworSGVyZSdzIGFuIGV4YW1wbGUuIEdpdmVuCisKK2BgYGMrKworLy8gUmV0dXJucyB0cnVl
IGlmIG0gYW5kIG4gaGF2ZSBubyBjb21tb24gZGl2aXNvcnMgZXhjZXB0IDEuCitib29sIE11dHVh
bGx5UHJpbWUoaW50IG0sIGludCBuKSB7IC4uLiB9CisKK2NvbnN0IGludCBhID0gMzsKK2NvbnN0
IGludCBiID0gNDsKK2NvbnN0IGludCBjID0gMTA7CitgYGAKKwordGhlIGFzc2VydGlvbgorCitg
YGBjKysKKyAgRVhQRUNUX1BSRUQyKE11dHVhbGx5UHJpbWUsIGEsIGIpOworYGBgCisKK3dpbGwg
c3VjY2VlZCwgd2hpbGUgdGhlIGFzc2VydGlvbgorCitgYGBjKysKKyAgRVhQRUNUX1BSRUQyKE11
dHVhbGx5UHJpbWUsIGIsIGMpOworYGBgCisKK3dpbGwgZmFpbCB3aXRoIHRoZSBtZXNzYWdlCisK
K2BgYG5vbmUKK011dHVhbGx5UHJpbWUoYiwgYykgaXMgZmFsc2UsIHdoZXJlCitiIGlzIDQKK2Mg
aXMgMTAKK2BgYAorCis+IE5PVEU6Cis+Cis+IDEuICBJZiB5b3Ugc2VlIGEgY29tcGlsZXIgZXJy
b3IgIm5vIG1hdGNoaW5nIGZ1bmN0aW9uIHRvIGNhbGwiIHdoZW4gdXNpbmcKKz4gICAgIGBBU1NF
UlRfUFJFRCpgIG9yIGBFWFBFQ1RfUFJFRCpgLCBwbGVhc2Ugc2VlCis+ICAgICBbdGhpc10oZmFx
Lm1kI092ZXJsb2FkZWRQcmVkaWNhdGUpIGZvciBob3cgdG8gcmVzb2x2ZSBpdC4KKz4gMS4gIEN1
cnJlbnRseSB3ZSBvbmx5IHByb3ZpZGUgcHJlZGljYXRlIGFzc2VydGlvbnMgb2YgYXJpdHkgPD0g
NS4gSWYgeW91IG5lZWQKKz4gICAgIGEgaGlnaGVyLWFyaXR5IGFzc2VydGlvbiwgbGV0IFt1c10o
aHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2lzc3Vlcykga25vdy4KKworKipB
dmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIyBVc2luZyBhIEZ1bmN0
aW9uIFRoYXQgUmV0dXJucyBhbiBBc3NlcnRpb25SZXN1bHQKKworV2hpbGUgYEVYUEVDVF9QUkVE
KigpYCBhbmQgZnJpZW5kcyBhcmUgaGFuZHkgZm9yIGEgcXVpY2sgam9iLCB0aGUgc3ludGF4IGlz
IG5vdAorc2F0aXNmYWN0b3J5OiB5b3UgaGF2ZSB0byB1c2UgZGlmZmVyZW50IG1hY3JvcyBmb3Ig
ZGlmZmVyZW50IGFyaXRpZXMsIGFuZCBpdAorZmVlbHMgbW9yZSBsaWtlIExpc3AgdGhhbiBDKysu
IFRoZSBgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHRgIGNsYXNzIHNvbHZlcwordGhpcyBwcm9i
bGVtLgorCitBbiBgQXNzZXJ0aW9uUmVzdWx0YCBvYmplY3QgcmVwcmVzZW50cyB0aGUgcmVzdWx0
IG9mIGFuIGFzc2VydGlvbiAod2hldGhlciBpdCdzCithIHN1Y2Nlc3Mgb3IgYSBmYWlsdXJlLCBh
bmQgYW4gYXNzb2NpYXRlZCBtZXNzYWdlKS4gWW91IGNhbiBjcmVhdGUgYW4KK2BBc3NlcnRpb25S
ZXN1bHRgIHVzaW5nIG9uZSBvZiB0aGVzZSBmYWN0b3J5IGZ1bmN0aW9uczoKKworYGBgYysrCitu
YW1lc3BhY2UgdGVzdGluZyB7CisKKy8vIFJldHVybnMgYW4gQXNzZXJ0aW9uUmVzdWx0IG9iamVj
dCB0byBpbmRpY2F0ZSB0aGF0IGFuIGFzc2VydGlvbiBoYXMKKy8vIHN1Y2NlZWRlZC4KK0Fzc2Vy
dGlvblJlc3VsdCBBc3NlcnRpb25TdWNjZXNzKCk7CisKKy8vIFJldHVybnMgYW4gQXNzZXJ0aW9u
UmVzdWx0IG9iamVjdCB0byBpbmRpY2F0ZSB0aGF0IGFuIGFzc2VydGlvbiBoYXMKKy8vIGZhaWxl
ZC4KK0Fzc2VydGlvblJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKCk7CisKK30KK2BgYAorCitZb3Ug
Y2FuIHRoZW4gdXNlIHRoZSBgPDxgIG9wZXJhdG9yIHRvIHN0cmVhbSBtZXNzYWdlcyB0byB0aGUg
YEFzc2VydGlvblJlc3VsdGAKK29iamVjdC4KKworVG8gcHJvdmlkZSBtb3JlIHJlYWRhYmxlIG1l
c3NhZ2VzIGluIEJvb2xlYW4gYXNzZXJ0aW9ucyAoZS5nLiBgRVhQRUNUX1RSVUUoKWApLAord3Jp
dGUgYSBwcmVkaWNhdGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGBBc3NlcnRpb25SZXN1bHRgIGlu
c3RlYWQgb2YgYGJvb2xgLiBGb3IKK2V4YW1wbGUsIGlmIHlvdSBkZWZpbmUgYElzRXZlbigpYCBh
czoKKworYGBgYysrCis6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBJc0V2ZW4oaW50IG4pIHsK
KyAgaWYgKChuICUgMikgPT0gMCkKKyAgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3Vj
Y2VzcygpOworICBlbHNlCisgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUo
KSA8PCBuIDw8ICIgaXMgb2RkIjsKK30KK2BgYAorCitpbnN0ZWFkIG9mOgorCitgYGBjKysKK2Jv
b2wgSXNFdmVuKGludCBuKSB7CisgIHJldHVybiAobiAlIDIpID09IDA7Cit9CitgYGAKKwordGhl
IGZhaWxlZCBhc3NlcnRpb24gYEVYUEVDVF9UUlVFKElzRXZlbihGaWIoNCkpKWAgd2lsbCBwcmlu
dDoKKworYGBgbm9uZQorVmFsdWUgb2Y6IElzRXZlbihGaWIoNCkpCisgIEFjdHVhbDogZmFsc2Ug
KDMgaXMgb2RkKQorRXhwZWN0ZWQ6IHRydWUKK2BgYAorCitpbnN0ZWFkIG9mIGEgbW9yZSBvcGFx
dWUKKworYGBgbm9uZQorVmFsdWUgb2Y6IElzRXZlbihGaWIoNCkpCisgIEFjdHVhbDogZmFsc2UK
K0V4cGVjdGVkOiB0cnVlCitgYGAKKworSWYgeW91IHdhbnQgaW5mb3JtYXRpdmUgbWVzc2FnZXMg
aW4gYEVYUEVDVF9GQUxTRWAgYW5kIGBBU1NFUlRfRkFMU0VgIGFzIHdlbGwKKyhvbmUgdGhpcmQg
b2YgQm9vbGVhbiBhc3NlcnRpb25zIGluIHRoZSBHb29nbGUgY29kZSBiYXNlIGFyZSBuZWdhdGl2
ZSBvbmVzKSwgYW5kCithcmUgZmluZSB3aXRoIG1ha2luZyB0aGUgcHJlZGljYXRlIHNsb3dlciBp
biB0aGUgc3VjY2VzcyBjYXNlLCB5b3UgY2FuIHN1cHBseSBhCitzdWNjZXNzIG1lc3NhZ2U6CisK
K2BgYGMrKworOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgSXNFdmVuKGludCBuKSB7CisgIGlm
ICgobiAlIDIpID09IDApCisgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3Mo
KSA8PCBuIDw8ICIgaXMgZXZlbiI7CisgIGVsc2UKKyAgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNz
ZXJ0aW9uRmFpbHVyZSgpIDw8IG4gPDwgIiBpcyBvZGQiOworfQorYGBgCisKK1RoZW4gdGhlIHN0
YXRlbWVudCBgRVhQRUNUX0ZBTFNFKElzRXZlbihGaWIoNikpKWAgd2lsbCBwcmludAorCitgYGBu
b25lCisgIFZhbHVlIG9mOiBJc0V2ZW4oRmliKDYpKQorICAgICBBY3R1YWw6IHRydWUgKDggaXMg
ZXZlbikKKyAgRXhwZWN0ZWQ6IGZhbHNlCitgYGAKKworKipBdmFpbGFiaWxpdHkqKjogTGludXgs
IFdpbmRvd3MsIE1hYy4KKworIyMjIyBVc2luZyBhIFByZWRpY2F0ZS1Gb3JtYXR0ZXIKKworSWYg
eW91IGZpbmQgdGhlIGRlZmF1bHQgbWVzc2FnZSBnZW5lcmF0ZWQgYnkgYChBU1NFUlR8RVhQRUNU
KV9QUkVEKmAgYW5kCitgKEFTU0VSVHxFWFBFQ1QpXyhUUlVFfEZBTFNFKWAgdW5zYXRpc2ZhY3Rv
cnksIG9yIHNvbWUgYXJndW1lbnRzIHRvIHlvdXIKK3ByZWRpY2F0ZSBkbyBub3Qgc3VwcG9ydCBz
dHJlYW1pbmcgdG8gYG9zdHJlYW1gLCB5b3UgY2FuIGluc3RlYWQgdXNlIHRoZQorZm9sbG93aW5n
ICpwcmVkaWNhdGUtZm9ybWF0dGVyIGFzc2VydGlvbnMqIHRvICpmdWxseSogY3VzdG9taXplIGhv
dyB0aGUgbWVzc2FnZQoraXMgZm9ybWF0dGVkOgorCitGYXRhbCBhc3NlcnRpb24gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCBWZXJpZmllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0KK2BBU1NFUlRfUFJFRF9GT1JNQVQxKHByZWRfZm9y
bWF0MSwgdmFsMSk7YCAgICAgICB8IGBFWFBFQ1RfUFJFRF9GT1JNQVQxKHByZWRfZm9ybWF0MSwg
dmFsMSk7YCAgICAgICB8IGBwcmVkX2Zvcm1hdDEodmFsMSlgIGlzIHN1Y2Nlc3NmdWwKK2BBU1NF
UlRfUFJFRF9GT1JNQVQyKHByZWRfZm9ybWF0MiwgdmFsMSwgdmFsMik7YCB8IGBFWFBFQ1RfUFJF
RF9GT1JNQVQyKHByZWRfZm9ybWF0MiwgdmFsMSwgdmFsMik7YCB8IGBwcmVkX2Zvcm1hdDIodmFs
MSwgdmFsMilgIGlzIHN1Y2Nlc3NmdWwKK2AuLi5gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IGAuLi5gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IC4uLgorCitUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIHRoZSBw
cmV2aW91cyBncm91cCBvZiBtYWNyb3MgaXMgdGhhdCBpbnN0ZWFkIG9mCithIHByZWRpY2F0ZSwg
YChBU1NFUlR8RVhQRUNUKV9QUkVEX0ZPUk1BVCpgIHRha2UgYSAqcHJlZGljYXRlLWZvcm1hdHRl
cioKKyhgcHJlZF9mb3JtYXRuYCksIHdoaWNoIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3RvciB3aXRo
IHRoZSBzaWduYXR1cmU6CisKK2BgYGMrKworOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJl
ZGljYXRlRm9ybWF0dGVybihjb25zdCBjaGFyKiBleHByMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwcjIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHBybiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVDEgdmFsMSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVDIgdmFsMiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRuIHZhbG4pOworYGBgCisKK3do
ZXJlIGB2YWwxYCwgYHZhbDJgLCAuLi4sIGFuZCBgdmFsbmAgYXJlIHRoZSB2YWx1ZXMgb2YgdGhl
IHByZWRpY2F0ZSBhcmd1bWVudHMsCithbmQgYGV4cHIxYCwgYGV4cHIyYCwgLi4uLCBhbmQgYGV4
cHJuYCBhcmUgdGhlIGNvcnJlc3BvbmRpbmcgZXhwcmVzc2lvbnMgYXMgdGhleQorYXBwZWFyIGlu
IHRoZSBzb3VyY2UgY29kZS4gVGhlIHR5cGVzIGBUMWAsIGBUMmAsIC4uLiwgYW5kIGBUbmAgY2Fu
IGJlIGVpdGhlcgordmFsdWUgdHlwZXMgb3IgcmVmZXJlbmNlIHR5cGVzLiBGb3IgZXhhbXBsZSwg
aWYgYW4gYXJndW1lbnQgaGFzIHR5cGUgYEZvb2AsIHlvdQorY2FuIGRlY2xhcmUgaXQgYXMgZWl0
aGVyIGBGb29gIG9yIGBjb25zdCBGb28mYCwgd2hpY2hldmVyIGlzIGFwcHJvcHJpYXRlLgorCitB
cyBhbiBleGFtcGxlLCBsZXQncyBpbXByb3ZlIHRoZSBmYWlsdXJlIG1lc3NhZ2UgaW4gYE11dHVh
bGx5UHJpbWUoKWAsIHdoaWNoIHdhcwordXNlZCB3aXRoIGBFWFBFQ1RfUFJFRDIoKWA6CisKK2Bg
YGMrKworLy8gUmV0dXJucyB0aGUgc21hbGxlc3QgcHJpbWUgY29tbW9uIGRpdmlzb3Igb2YgbSBh
bmQgbiwKKy8vIG9yIDEgd2hlbiBtIGFuZCBuIGFyZSBtdXR1YWxseSBwcmltZS4KK2ludCBTbWFs
bGVzdFByaW1lQ29tbW9uRGl2aXNvcihpbnQgbSwgaW50IG4pIHsgLi4uIH0KKworLy8gQSBwcmVk
aWNhdGUtZm9ybWF0dGVyIGZvciBhc3NlcnRpbmcgdGhhdCB0d28gaW50ZWdlcnMgYXJlIG11dHVh
bGx5IHByaW1lLgorOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgQXNzZXJ0TXV0dWFsbHlQcmlt
ZShjb25zdCBjaGFyKiBtX2V4cHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5fZXhwciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBuKSB7CisgIGlmIChNdXR1YWxseVByaW1lKG0sIG4p
KSByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CisKKyAgcmV0dXJuIDo6dGVz
dGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG1fZXhwciA8PCAiIGFuZCAiIDw8IG5fZXhwcgor
ICAgICAgPDwgIiAoIiA8PCBtIDw8ICIgYW5kICIgPDwgbiA8PCAiKSBhcmUgbm90IG11dHVhbGx5
IHByaW1lLCAiCisgICAgICA8PCAiYXMgdGhleSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgIiA8PCBT
bWFsbGVzdFByaW1lQ29tbW9uRGl2aXNvcihtLCBuKTsKK30KK2BgYAorCitXaXRoIHRoaXMgcHJl
ZGljYXRlLWZvcm1hdHRlciwgd2UgY2FuIHVzZQorCitgYGBjKysKKyAgRVhQRUNUX1BSRURfRk9S
TUFUMihBc3NlcnRNdXR1YWxseVByaW1lLCBiLCBjKTsKK2BgYAorCit0byBnZW5lcmF0ZSB0aGUg
bWVzc2FnZQorCitgYGBub25lCitiIGFuZCBjICg0IGFuZCAxMCkgYXJlIG5vdCBtdXR1YWxseSBw
cmltZSwgYXMgdGhleSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgMi4KK2BgYAorCitBcyB5b3UgbWF5
IGhhdmUgcmVhbGl6ZWQsIG1hbnkgb2YgdGhlIGJ1aWx0LWluIGFzc2VydGlvbnMgd2UgaW50cm9k
dWNlZCBlYXJsaWVyCithcmUgc3BlY2lhbCBjYXNlcyBvZiBgKEVYUEVDVHxBU1NFUlQpX1BSRURf
Rk9STUFUKmAuIEluIGZhY3QsIG1vc3Qgb2YgdGhlbSBhcmUKK2luZGVlZCBkZWZpbmVkIHVzaW5n
IGAoRVhQRUNUfEFTU0VSVClfUFJFRF9GT1JNQVQqYC4KKworKipBdmFpbGFiaWxpdHkqKjogTGlu
dXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIEZsb2F0aW5nLVBvaW50IENvbXBhcmlzb24KKworQ29t
cGFyaW5nIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgaXMgdHJpY2t5LiBEdWUgdG8gcm91bmQtb2Zm
IGVycm9ycywgaXQgaXMgdmVyeQordW5saWtlbHkgdGhhdCB0d28gZmxvYXRpbmctcG9pbnRzIHdp
bGwgbWF0Y2ggZXhhY3RseS4gVGhlcmVmb3JlLCBgQVNTRVJUX0VRYCAncworbmFpdmUgY29tcGFy
aXNvbiB1c3VhbGx5IGRvZXNuJ3Qgd29yay4gQW5kIHNpbmNlIGZsb2F0aW5nLXBvaW50cyBjYW4g
aGF2ZSBhIHdpZGUKK3ZhbHVlIHJhbmdlLCBubyBzaW5nbGUgZml4ZWQgZXJyb3IgYm91bmQgd29y
a3MuIEl0J3MgYmV0dGVyIHRvIGNvbXBhcmUgYnkgYQorZml4ZWQgcmVsYXRpdmUgZXJyb3IgYm91
bmQsIGV4Y2VwdCBmb3IgdmFsdWVzIGNsb3NlIHRvIDAgZHVlIHRvIHRoZSBsb3NzIG9mCitwcmVj
aXNpb24gdGhlcmUuCisKK0luIGdlbmVyYWwsIGZvciBmbG9hdGluZy1wb2ludCBjb21wYXJpc29u
IHRvIG1ha2Ugc2Vuc2UsIHRoZSB1c2VyIG5lZWRzIHRvCitjYXJlZnVsbHkgY2hvb3NlIHRoZSBl
cnJvciBib3VuZC4gSWYgdGhleSBkb24ndCB3YW50IG9yIGNhcmUgdG8sIGNvbXBhcmluZyBpbgor
dGVybXMgb2YgVW5pdHMgaW4gdGhlIExhc3QgUGxhY2UgKFVMUHMpIGlzIGEgZ29vZCBkZWZhdWx0
LCBhbmQgZ29vZ2xldGVzdAorcHJvdmlkZXMgYXNzZXJ0aW9ucyB0byBkbyB0aGlzLiBGdWxsIGRl
dGFpbHMgYWJvdXQgVUxQcyBhcmUgcXVpdGUgbG9uZzsgaWYgeW91Cit3YW50IHRvIGxlYXJuIG1v
cmUsIHNlZQorW2hlcmVdKGh0dHBzOi8vcmFuZG9tYXNjaWkud29yZHByZXNzLmNvbS8yMDEyLzAy
LzI1L2NvbXBhcmluZy1mbG9hdGluZy1wb2ludC1udW1iZXJzLTIwMTItZWRpdGlvbi8pLgorCisj
IyMjIEZsb2F0aW5nLVBvaW50IE1hY3JvcworCit8IEZhdGFsIGFzc2VydGlvbiAgICAgICAgICAg
ICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgfCBWZXJpZmllcyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAorfCBgQVNTRVJUX0ZMT0FUX0VRKHZhbDEsIHZhbDIp
O2AgIHwgYEVYUEVDVF9GTE9BVF9FUSh2YWwxLHZhbDIpO2AgIHwgdGhlIHR3byBgZmxvYXRgIHZh
bHVlcyBhcmUgYWxtb3N0IGVxdWFsICB8Cit8IGBBU1NFUlRfRE9VQkxFX0VRKHZhbDEsIHZhbDIp
O2AgfCBgRVhQRUNUX0RPVUJMRV9FUSh2YWwxLCB2YWwyKTtgfCB0aGUgdHdvIGBkb3VibGVgIHZh
bHVlcyBhcmUgYWxtb3N0IGVxdWFsIHwKKworQnkgImFsbW9zdCBlcXVhbCIgd2UgbWVhbiB0aGUg
dmFsdWVzIGFyZSB3aXRoaW4gNCBVTFAncyBmcm9tIGVhY2ggb3RoZXIuCisKK05PVEU6IGBDSEVD
S19ET1VCTEVfRVEoKWAgaW4gYGJhc2UvbG9nZ2luZy5oYCB1c2VzIGEgZml4ZWQgYWJzb2x1dGUg
ZXJyb3IgYm91bmQsCitzbyBpdHMgcmVzdWx0IG1heSBkaWZmZXIgZnJvbSB0aGF0IG9mIHRoZSBn
b29nbGV0ZXN0IG1hY3Jvcy4gVGhhdCBtYWNybyBpcwordW5zYWZlIGFuZCBoYXMgYmVlbiBkZXBy
ZWNhdGVkLiBQbGVhc2UgZG9uJ3QgdXNlIGl0IGFueSBtb3JlLgorCitUaGUgZm9sbG93aW5nIGFz
c2VydGlvbnMgYWxsb3cgeW91IHRvIGNob29zZSB0aGUgYWNjZXB0YWJsZSBlcnJvciBib3VuZDoK
KworfCBGYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZmF0YWwgYXNz
ZXJ0aW9uICAgICAgICAgICAgICAgICAgICB8IFZlcmlmaWVzICAgICAgICAgICAgICAgICAgfAor
fCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAorfCBg
QVNTRVJUX05FQVIodmFsMSwgdmFsMiwgYWJzX2Vycm9yKTtgIHwgYEVYUEVDVF9ORUFSKHZhbDEs
IHZhbDIsIGFic19lcnJvcik7YCB8IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYHZhbDFgIGFuZCBg
dmFsMmAgZG9lc24ndCBleGNlZWQgdGhlIGdpdmVuIGFic29sdXRlIGVycm9yIHwKKworKipBdmFp
bGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIyBGbG9hdGluZy1Qb2ludCBQ
cmVkaWNhdGUtRm9ybWF0IEZ1bmN0aW9ucworCitTb21lIGZsb2F0aW5nLXBvaW50IG9wZXJhdGlv
bnMgYXJlIHVzZWZ1bCwgYnV0IG5vdCB0aGF0IG9mdGVuIHVzZWQuIEluIG9yZGVyIHRvCithdm9p
ZCBhbiBleHBsb3Npb24gb2YgbmV3IG1hY3Jvcywgd2UgcHJvdmlkZSB0aGVtIGFzIHByZWRpY2F0
ZS1mb3JtYXQgZnVuY3Rpb25zCit0aGF0IGNhbiBiZSB1c2VkIGluIHByZWRpY2F0ZSBhc3NlcnRp
b24gbWFjcm9zIChlLmcuIGBFWFBFQ1RfUFJFRF9GT1JNQVQyYCwKK2V0YykuCisKK2BgYGMrKwor
RVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OkZsb2F0TEUsIHZhbDEsIHZhbDIpOworRVhQ
RUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OkRvdWJsZUxFLCB2YWwxLCB2YWwyKTsKK2BgYAor
CitWZXJpZmllcyB0aGF0IGB2YWwxYCBpcyBsZXNzIHRoYW4sIG9yIGFsbW9zdCBlcXVhbCB0bywg
YHZhbDJgLiBZb3UgY2FuIHJlcGxhY2UKK2BFWFBFQ1RfUFJFRF9GT1JNQVQyYCBpbiB0aGUgYWJv
dmUgdGFibGUgd2l0aCBgQVNTRVJUX1BSRURfRk9STUFUMmAuCisKKyoqQXZhaWxhYmlsaXR5Kio6
IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBBc3NlcnRpbmcgVXNpbmcgZ01vY2sgTWF0Y2hl
cnMKKworR29vZ2xlLWRldmVsb3BlZCBDKysgbW9ja2luZyBmcmFtZXdvcmsgW2dNb2NrXSguLi8u
Li9nb29nbGVtb2NrKSBjb21lcyB3aXRoIGEKK2xpYnJhcnkgb2YgbWF0Y2hlcnMgZm9yIHZhbGlk
YXRpbmcgYXJndW1lbnRzIHBhc3NlZCB0byBtb2NrIG9iamVjdHMuIEEgZ01vY2sKKyptYXRjaGVy
KiBpcyBiYXNpY2FsbHkgYSBwcmVkaWNhdGUgdGhhdCBrbm93cyBob3cgdG8gZGVzY3JpYmUgaXRz
ZWxmLiBJdCBjYW4gYmUKK3VzZWQgaW4gdGhlc2UgYXNzZXJ0aW9uIG1hY3JvczoKKworfCBGYXRh
bCBhc3NlcnRpb24gICAgICAgICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAgICAg
ICAgfCBWZXJpZmllcyAgICAgICAgICAgICAgfAorfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0gfAorfCBgQVNTRVJUX1RIQVQodmFsdWUsIG1hdGNoZXIpO2AgfCBgRVhQRUNUX1RIQVQo
dmFsdWUsIG1hdGNoZXIpO2AgfCB2YWx1ZSBtYXRjaGVzIG1hdGNoZXIgfAorCitGb3IgZXhhbXBs
ZSwgYFN0YXJ0c1dpdGgocHJlZml4KWAgaXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIHN0cmlu
ZyBzdGFydGluZword2l0aCBgcHJlZml4YCwgYW5kIHlvdSBjYW4gd3JpdGU6CisKK2BgYGMrKwor
dXNpbmcgOjp0ZXN0aW5nOjpTdGFydHNXaXRoOworLi4uCisgICAgLy8gVmVyaWZpZXMgdGhhdCBG
b28oKSByZXR1cm5zIGEgc3RyaW5nIHN0YXJ0aW5nIHdpdGggIkhlbGxvIi4KKyAgICBFWFBFQ1Rf
VEhBVChGb28oKSwgU3RhcnRzV2l0aCgiSGVsbG8iKSk7CitgYGAKKworUmVhZCB0aGlzIFtyZWNp
cGVdKC4uLy4uL2dvb2dsZW1vY2svZG9jcy9Db29rQm9vay5tZCN1c2luZy1tYXRjaGVycy1pbi1n
b29nbGUtdGVzdC1hc3NlcnRpb25zKSBpbgordGhlIGdNb2NrIENvb2tib29rIGZvciBtb3JlIGRl
dGFpbHMuCisKK2dNb2NrIGhhcyBhIHJpY2ggc2V0IG9mIG1hdGNoZXJzLiBZb3UgY2FuIGRvIG1h
bnkgdGhpbmdzIGdvb2dsZXRlc3QgY2Fubm90IGRvCithbG9uZSB3aXRoIHRoZW0uIEZvciBhIGxp
c3Qgb2YgbWF0Y2hlcnMgZ01vY2sgcHJvdmlkZXMsIHJlYWQKK1t0aGlzXSguLi8uLi9nb29nbGVt
b2NrL2RvY3MvQ29va0Jvb2subWQjdXNpbmctbWF0Y2hlcnMpLiBFc3BlY2lhbGx5IHVzZWZ1bCBh
bW9uZyB0aGVtIGFyZQorc29tZSBbcHJvdG9jb2wgYnVmZmVyIG1hdGNoZXJzXShodHRwczovL2dp
dGh1Yi5jb20vZ29vZ2xlL251Y2xldXMvYmxvYi9tYXN0ZXIvbnVjbGV1cy90ZXN0aW5nL3Byb3Rv
Y29sLWJ1ZmZlci1tYXRjaGVycy5oKS4gSXQncyBlYXN5IHRvIHdyaXRlCit5b3VyIFtvd24gbWF0
Y2hlcnNdKC4uLy4uL2dvb2dsZW1vY2svZG9jcy9Db29rQm9vay5tZCN3cml0aW5nLW5ldy1tYXRj
aGVycy1xdWlja2x5KSB0b28uCisKK0ZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSBnTW9jaydzCitb
RXF1YWxzUHJvdG9dKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvbnVjbGV1cy9ibG9iL21hc3Rl
ci9udWNsZXVzL3Rlc3RpbmcvcHJvdG9jb2wtYnVmZmVyLW1hdGNoZXJzLmgpCit0byBjb21wYXJl
IHByb3RvcyBpbiB5b3VyIHRlc3RzOgorCitgYGBjKysKKyNpbmNsdWRlICJ0ZXN0aW5nL2Jhc2Uv
cHVibGljL2dtb2NrLmgiCit1c2luZyA6OnRlc3Rpbmc6OkVxdWFsc1Byb3RvOworLi4uCisgICAg
RVhQRUNUX1RIQVQoYWN0dWFsX3Byb3RvLCBFcXVhbHNQcm90bygiZm9vOiAxMjMgYmFyOiAneHl6
JyIpKTsKKyAgICBFWFBFQ1RfVEhBVCgqYWN0dWFsX3Byb3RvX3B0ciwgRXF1YWxzUHJvdG8oZXhw
ZWN0ZWRfcHJvdG8pKTsKK2BgYAorCitnTW9jayBpcyBidW5kbGVkIHdpdGggZ29vZ2xldGVzdCwg
c28geW91IGRvbid0IG5lZWQgdG8gYWRkIGFueSBidWlsZCBkZXBlbmRlbmN5CitpbiBvcmRlciB0
byB0YWtlIGFkdmFudGFnZSBvZiB0aGlzLiBKdXN0IGluY2x1ZGUgYCJ0ZXN0aW5nL2Jhc2UvcHVi
bGljL2dtb2NrLmgiYAorYW5kIHlvdSdyZSByZWFkeSB0byBnby4KKworKipBdmFpbGFiaWxpdHkq
KjogTGludXgsIFdpbmRvd3MsIGFuZCBNYWMuCisKKyMjIyBNb3JlIFN0cmluZyBBc3NlcnRpb25z
CisKKyhQbGVhc2UgcmVhZCB0aGUgW3ByZXZpb3VzXSgjQXNzZXJ0VGhhdCkgc2VjdGlvbiBmaXJz
dCBpZiB5b3UgaGF2ZW4ndC4pCisKK1lvdSBjYW4gdXNlIHRoZSBnTW9jayBbc3RyaW5nIG1hdGNo
ZXJzXSguLi8uLi9nb29nbGVtb2NrL2RvY3MvQ2hlYXRTaGVldC5tZCNzdHJpbmctbWF0Y2hlcnMp
Cit3aXRoIGBFWFBFQ1RfVEhBVCgpYCBvciBgQVNTRVJUX1RIQVQoKWAgdG8gZG8gbW9yZSBzdHJp
bmcgY29tcGFyaXNvbiB0cmlja3MKKyhzdWItc3RyaW5nLCBwcmVmaXgsIHN1ZmZpeCwgcmVndWxh
ciBleHByZXNzaW9uLCBhbmQgZXRjKS4gRm9yIGV4YW1wbGUsCisKK2BgYGMrKwordXNpbmcgOjp0
ZXN0aW5nOjpIYXNTdWJzdHI7Cit1c2luZyA6OnRlc3Rpbmc6Ok1hdGNoZXNSZWdleDsKKy4uLgor
ICBBU1NFUlRfVEhBVChmb29fc3RyaW5nLCBIYXNTdWJzdHIoIm5lZWRsZSIpKTsKKyAgRVhQRUNU
X1RIQVQoYmFyX3N0cmluZywgTWF0Y2hlc1JlZ2V4KCJcXHcqXFxkKyIpKTsKK2BgYAorCisqKkF2
YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCitJZiB0aGUgc3RyaW5nIGNvbnRh
aW5zIGEgd2VsbC1mb3JtZWQgSFRNTCBvciBYTUwgZG9jdW1lbnQsIHlvdSBjYW4gY2hlY2sgd2hl
dGhlcgoraXRzIERPTSB0cmVlIG1hdGNoZXMgYW4gW1hQYXRoCitleHByZXNzaW9uXShodHRwOi8v
d3d3LnczLm9yZy9UUi94cGF0aC8jY29udGVudHMpOgorCitgYGBjKysKKy8vIEN1cnJlbnRseSBz
dGlsbCBpbiAvL3RlbXBsYXRlL3Byb3RvdGVtcGxhdGUvdGVzdGluZzp4cGF0aF9tYXRjaGVyCisj
aW5jbHVkZSAidGVtcGxhdGUvcHJvdG90ZW1wbGF0ZS90ZXN0aW5nL3hwYXRoX21hdGNoZXIuaCIK
K3VzaW5nIHByb3RvdGVtcGxhdGU6OnRlc3Rpbmc6Ok1hdGNoZXNYUGF0aDsKK0VYUEVDVF9USEFU
KGh0bWxfc3RyaW5nLCBNYXRjaGVzWFBhdGgoIi8vYVt0ZXh0KCk9J2NsaWNrIGhlcmUnXSIpKTsK
K2BgYAorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eC4KKworIyMjIFdpbmRvd3MgSFJFU1VMVCBh
c3NlcnRpb25zCisKK1RoZXNlIGFzc2VydGlvbnMgdGVzdCBmb3IgYEhSRVNVTFRgIHN1Y2Nlc3Mg
b3IgZmFpbHVyZS4KKworRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICAgICAgfCBO
b25mYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgICAgICB8IFZlcmlmaWVzCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0KK2BBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoZXhw
cmVzc2lvbilgIHwgYEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChleHByZXNzaW9uKWAgfCBgZXhw
cmVzc2lvbmAgaXMgYSBzdWNjZXNzIGBIUkVTVUxUYAorYEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChl
eHByZXNzaW9uKWAgICAgfCBgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKGV4cHJlc3Npb24pYCAgICB8
IGBleHByZXNzaW9uYCBpcyBhIGZhaWx1cmUgYEhSRVNVTFRgCisKK1RoZSBnZW5lcmF0ZWQgb3V0
cHV0IGNvbnRhaW5zIHRoZSBodW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlIGFzc29jaWF0ZWQg
d2l0aAordGhlIGBIUkVTVUxUYCBjb2RlIHJldHVybmVkIGJ5IGBleHByZXNzaW9uYC4KKworWW91
IG1pZ2h0IHVzZSB0aGVtIGxpa2UgdGhpczoKKworYGBgYysrCitDQ29tUHRyPElTaGVsbERpc3Bh
dGNoMj4gc2hlbGw7CitBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoc2hlbGwuQ29DcmVhdGVJbnN0
YW5jZShMIlNoZWxsLkFwcGxpY2F0aW9uIikpOworQ0NvbVZhcmlhbnQgZW1wdHk7CitBU1NFUlRf
SFJFU1VMVF9TVUNDRUVERUQoc2hlbGwtPlNoZWxsRXhlY3V0ZShDQ29tQlNUUih1cmwpLCBlbXB0
eSwgZW1wdHksIGVtcHR5LCBlbXB0eSkpOworYGBgCisKKyoqQXZhaWxhYmlsaXR5Kio6IFdpbmRv
d3MuCisKKyMjIyBUeXBlIEFzc2VydGlvbnMKKworWW91IGNhbiBjYWxsIHRoZSBmdW5jdGlvbgor
CitgYGBjKysKKzo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4oKTsKK2BgYAor
Cit0byBhc3NlcnQgdGhhdCB0eXBlcyBgVDFgIGFuZCBgVDJgIGFyZSB0aGUgc2FtZS4gVGhlIGZ1
bmN0aW9uIGRvZXMgbm90aGluZyBpZgordGhlIGFzc2VydGlvbiBpcyBzYXRpc2ZpZWQuIElmIHRo
ZSB0eXBlcyBhcmUgZGlmZmVyZW50LCB0aGUgZnVuY3Rpb24gY2FsbCB3aWxsCitmYWlsIHRvIGNv
bXBpbGUsIGFuZCB0aGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZSB3aWxsIGxpa2VseSAoZGVwZW5k
aW5nIG9uIHRoZQorY29tcGlsZXIpIHNob3cgeW91IHRoZSBhY3R1YWwgdmFsdWVzIG9mIGBUMWAg
YW5kIGBUMmAuIFRoaXMgaXMgbWFpbmx5IHVzZWZ1bAoraW5zaWRlIHRlbXBsYXRlIGNvZGUuCisK
KyoqQ2F2ZWF0Kio6IFdoZW4gdXNlZCBpbnNpZGUgYSBtZW1iZXIgZnVuY3Rpb24gb2YgYSBjbGFz
cyB0ZW1wbGF0ZSBvciBhIGZ1bmN0aW9uCit0ZW1wbGF0ZSwgYFN0YXRpY0Fzc2VydFR5cGVFcTxU
MSwgVDI+KClgIGlzIGVmZmVjdGl2ZSBvbmx5IGlmIHRoZSBmdW5jdGlvbiBpcworaW5zdGFudGlh
dGVkLiBGb3IgZXhhbXBsZSwgZ2l2ZW46CisKK2BgYGMrKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGNsYXNzIEZvbyB7CisgcHVibGljOgorICB2b2lkIEJhcigpIHsgOjp0ZXN0aW5nOjpTdGF0aWNB
c3NlcnRUeXBlRXE8aW50LCBUPigpOyB9Cit9OworYGBgCisKK3RoZSBjb2RlOgorCitgYGBjKysK
K3ZvaWQgVGVzdDEoKSB7IEZvbzxib29sPiBmb287IH0KK2BgYAorCit3aWxsIG5vdCBnZW5lcmF0
ZSBhIGNvbXBpbGVyIGVycm9yLCBhcyBgRm9vPGJvb2w+OjpCYXIoKWAgaXMgbmV2ZXIgYWN0dWFs
bHkKK2luc3RhbnRpYXRlZC4gSW5zdGVhZCwgeW91IG5lZWQ6CisKK2BgYGMrKwordm9pZCBUZXN0
MigpIHsgRm9vPGJvb2w+IGZvbzsgZm9vLkJhcigpOyB9CitgYGAKKwordG8gY2F1c2UgYSBjb21w
aWxlciBlcnJvci4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKwor
IyMjIEFzc2VydGlvbiBQbGFjZW1lbnQKKworWW91IGNhbiB1c2UgYXNzZXJ0aW9ucyBpbiBhbnkg
QysrIGZ1bmN0aW9uLiBJbiBwYXJ0aWN1bGFyLCBpdCBkb2Vzbid0IGhhdmUgdG8gYmUKK2EgbWV0
aG9kIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuIFRoZSBvbmUgY29uc3RyYWludCBpcyB0aGF0
IGFzc2VydGlvbnMgdGhhdAorZ2VuZXJhdGUgYSBmYXRhbCBmYWlsdXJlIChgRkFJTCpgIGFuZCBg
QVNTRVJUXypgKSBjYW4gb25seSBiZSB1c2VkIGluCit2b2lkLXJldHVybmluZyBmdW5jdGlvbnMu
IFRoaXMgaXMgYSBjb25zZXF1ZW5jZSBvZiBHb29nbGUncyBub3QgdXNpbmcKK2V4Y2VwdGlvbnMu
IEJ5IHBsYWNpbmcgaXQgaW4gYSBub24tdm9pZCBmdW5jdGlvbiB5b3UnbGwgZ2V0IGEgY29uZnVz
aW5nIGNvbXBpbGUKK2Vycm9yIGxpa2UgYCJlcnJvcjogdm9pZCB2YWx1ZSBub3QgaWdub3JlZCBh
cyBpdCBvdWdodCB0byBiZSJgIG9yIGAiY2Fubm90Citpbml0aWFsaXplIHJldHVybiBvYmplY3Qg
b2YgdHlwZSAnYm9vbCcgd2l0aCBhbiBydmFsdWUgb2YgdHlwZSAndm9pZCciYCBvcgorYCJlcnJv
cjogbm8gdmlhYmxlIGNvbnZlcnNpb24gZnJvbSAndm9pZCcgdG8gJ3N0cmluZyciYC4KKworSWYg
eW91IG5lZWQgdG8gdXNlIGZhdGFsIGFzc2VydGlvbnMgaW4gYSBmdW5jdGlvbiB0aGF0IHJldHVy
bnMgbm9uLXZvaWQsIG9uZQorb3B0aW9uIGlzIHRvIG1ha2UgdGhlIGZ1bmN0aW9uIHJldHVybiB0
aGUgdmFsdWUgaW4gYW4gb3V0IHBhcmFtZXRlciBpbnN0ZWFkLiBGb3IKK2V4YW1wbGUsIHlvdSBj
YW4gcmV3cml0ZSBgVDIgRm9vKFQxIHgpYCB0byBgdm9pZCBGb28oVDEgeCwgVDIqIHJlc3VsdClg
LiBZb3UKK25lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYCpyZXN1bHRgIGNvbnRhaW5zIHNvbWUgc2Vu
c2libGUgdmFsdWUgZXZlbiB3aGVuIHRoZQorZnVuY3Rpb24gcmV0dXJucyBwcmVtYXR1cmVseS4g
QXMgdGhlIGZ1bmN0aW9uIG5vdyByZXR1cm5zIGB2b2lkYCwgeW91IGNhbiB1c2UKK2FueSBhc3Nl
cnRpb24gaW5zaWRlIG9mIGl0LgorCitJZiBjaGFuZ2luZyB0aGUgZnVuY3Rpb24ncyB0eXBlIGlz
IG5vdCBhbiBvcHRpb24sIHlvdSBzaG91bGQganVzdCB1c2UgYXNzZXJ0aW9ucwordGhhdCBnZW5l
cmF0ZSBub24tZmF0YWwgZmFpbHVyZXMsIHN1Y2ggYXMgYEFERF9GQUlMVVJFKmAgYW5kIGBFWFBF
Q1RfKmAuCisKK05PVEU6IENvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMgYXJlIG5vdCBjb25z
aWRlcmVkIHZvaWQtcmV0dXJuaW5nIGZ1bmN0aW9ucywKK2FjY29yZGluZyB0byB0aGUgQysrIGxh
bmd1YWdlIHNwZWNpZmljYXRpb24sIGFuZCBzbyB5b3UgbWF5IG5vdCB1c2UgZmF0YWwKK2Fzc2Vy
dGlvbnMgaW4gdGhlbS4gWW91J2xsIGdldCBhIGNvbXBpbGF0aW9uIGVycm9yIGlmIHlvdSB0cnku
IEEgc2ltcGxlCit3b3JrYXJvdW5kIGlzIHRvIHRyYW5zZmVyIHRoZSBlbnRpcmUgYm9keSBvZiB0
aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciB0byBhCitwcml2YXRlIHZvaWQtcmV0dXJuaW5n
IG1ldGhvZC4gSG93ZXZlciwgeW91IHNob3VsZCBiZSBhd2FyZSB0aGF0IGEgZmF0YWwKK2Fzc2Vy
dGlvbiBmYWlsdXJlIGluIGEgY29uc3RydWN0b3IgZG9lcyBub3QgdGVybWluYXRlIHRoZSBjdXJy
ZW50IHRlc3QsIGFzIHlvdXIKK2ludHVpdGlvbiBtaWdodCBzdWdnZXN0OyBpdCBtZXJlbHkgcmV0
dXJucyBmcm9tIHRoZSBjb25zdHJ1Y3RvciBlYXJseSwgcG9zc2libHkKK2xlYXZpbmcgeW91ciBv
YmplY3QgaW4gYSBwYXJ0aWFsbHktY29uc3RydWN0ZWQgc3RhdGUuIExpa2V3aXNlLCBhIGZhdGFs
Cithc3NlcnRpb24gZmFpbHVyZSBpbiBhIGRlc3RydWN0b3IgbWF5IGxlYXZlIHlvdXIgb2JqZWN0
IGluIGEKK3BhcnRpYWxseS1kZXN0cnVjdGVkIHN0YXRlLiBVc2UgYXNzZXJ0aW9ucyBjYXJlZnVs
bHkgaW4gdGhlc2Ugc2l0dWF0aW9ucyEKKworIyMgVGVhY2hpbmcgZ29vZ2xldGVzdCBIb3cgdG8g
UHJpbnQgWW91ciBWYWx1ZXMKKworV2hlbiBhIHRlc3QgYXNzZXJ0aW9uIHN1Y2ggYXMgYEVYUEVD
VF9FUWAgZmFpbHMsIGdvb2dsZXRlc3QgcHJpbnRzIHRoZSBhcmd1bWVudAordmFsdWVzIHRvIGhl
bHAgeW91IGRlYnVnLiBJdCBkb2VzIHRoaXMgdXNpbmcgYSB1c2VyLWV4dGVuc2libGUgdmFsdWUg
cHJpbnRlci4KKworVGhpcyBwcmludGVyIGtub3dzIGhvdyB0byBwcmludCBidWlsdC1pbiBDKysg
dHlwZXMsIG5hdGl2ZSBhcnJheXMsIFNUTAorY29udGFpbmVycywgYW5kIGFueSB0eXBlIHRoYXQg
c3VwcG9ydHMgdGhlIGA8PGAgb3BlcmF0b3IuIEZvciBvdGhlciB0eXBlcywgaXQKK3ByaW50cyB0
aGUgcmF3IGJ5dGVzIGluIHRoZSB2YWx1ZSBhbmQgaG9wZXMgdGhhdCB5b3UgdGhlIHVzZXIgY2Fu
IGZpZ3VyZSBpdCBvdXQuCisKK0FzIG1lbnRpb25lZCBlYXJsaWVyLCB0aGUgcHJpbnRlciBpcyAq
ZXh0ZW5zaWJsZSouIFRoYXQgbWVhbnMgeW91IGNhbiB0ZWFjaCBpdAordG8gZG8gYSBiZXR0ZXIg
am9iIGF0IHByaW50aW5nIHlvdXIgcGFydGljdWxhciB0eXBlIHRoYW4gdG8gZHVtcCB0aGUgYnl0
ZXMuIFRvCitkbyB0aGF0LCBkZWZpbmUgYDw8YCBmb3IgeW91ciB0eXBlOgorCitgYGBjKysKKy8v
IFN0cmVhbXMgYXJlIGFsbG93ZWQgb25seSBmb3IgbG9nZ2luZy4gIERvbid0IGluY2x1ZGUgdGhp
cyBmb3IKKy8vIGFueSBvdGhlciBwdXJwb3NlLgorI2luY2x1ZGUgPG9zdHJlYW0+CisKK25hbWVz
cGFjZSBmb28geworCitjbGFzcyBCYXIgeyAgLy8gV2Ugd2FudCBnb29nbGV0ZXN0IHRvIGJlIGFi
bGUgdG8gcHJpbnQgaW5zdGFuY2VzIG9mIHRoaXMuCisuLi4KKyAgLy8gQ3JlYXRlIGEgZnJlZSBp
bmxpbmUgZnJpZW5kIGZ1bmN0aW9uLgorICBmcmllbmQgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8
KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IEJhciYgYmFyKSB7CisgICAgcmV0dXJuIG9zIDw8IGJh
ci5EZWJ1Z1N0cmluZygpOyAgLy8gd2hhdGV2ZXIgbmVlZGVkIHRvIHByaW50IGJhciB0byBvcwor
ICB9Cit9OworCisvLyBJZiB5b3UgY2FuJ3QgZGVjbGFyZSB0aGUgZnVuY3Rpb24gaW4gdGhlIGNs
YXNzIGl0J3MgaW1wb3J0YW50IHRoYXQgdGhlCisvLyA8PCBvcGVyYXRvciBpcyBkZWZpbmVkIGlu
IHRoZSBTQU1FIG5hbWVzcGFjZSB0aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11cAorLy8g
cnVsZXMgcmVseSBvbiB0aGF0Lgorc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVh
bSYgb3MsIGNvbnN0IEJhciYgYmFyKSB7CisgIHJldHVybiBvcyA8PCBiYXIuRGVidWdTdHJpbmco
KTsgIC8vIHdoYXRldmVyIG5lZWRlZCB0byBwcmludCBiYXIgdG8gb3MKK30KKworfSAgLy8gbmFt
ZXNwYWNlIGZvbworYGBgCisKK1NvbWV0aW1lcywgdGhpcyBtaWdodCBub3QgYmUgYW4gb3B0aW9u
OiB5b3VyIHRlYW0gbWF5IGNvbnNpZGVyIGl0IGJhZCBzdHlsZSB0bworaGF2ZSBhIGA8PGAgb3Bl
cmF0b3IgZm9yIGBCYXJgLCBvciBgQmFyYCBtYXkgYWxyZWFkeSBoYXZlIGEgYDw8YCBvcGVyYXRv
ciB0aGF0Citkb2Vzbid0IGRvIHdoYXQgeW91IHdhbnQgKGFuZCB5b3UgY2Fubm90IGNoYW5nZSBp
dCkuIElmIHNvLCB5b3UgY2FuIGluc3RlYWQKK2RlZmluZSBhIGBQcmludFRvKClgIGZ1bmN0aW9u
IGxpa2UgdGhpczoKKworYGBgYysrCisvLyBTdHJlYW1zIGFyZSBhbGxvd2VkIG9ubHkgZm9yIGxv
Z2dpbmcuICBEb24ndCBpbmNsdWRlIHRoaXMgZm9yCisvLyBhbnkgb3RoZXIgcHVycG9zZS4KKyNp
bmNsdWRlIDxvc3RyZWFtPgorCituYW1lc3BhY2UgZm9vIHsKKworY2xhc3MgQmFyIHsKKyAgLi4u
CisgIGZyaWVuZCB2b2lkIFByaW50VG8oY29uc3QgQmFyJiBiYXIsIHN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgICAqb3MgPDwgYmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3aGF0ZXZlciBuZWVkZWQgdG8g
cHJpbnQgYmFyIHRvIG9zCisgIH0KK307CisKKy8vIElmIHlvdSBjYW4ndCBkZWNsYXJlIHRoZSBm
dW5jdGlvbiBpbiB0aGUgY2xhc3MgaXQncyBpbXBvcnRhbnQgdGhhdCBQcmludFRvKCkKKy8vIGlz
IGRlZmluZWQgaW4gdGhlIFNBTUUgbmFtZXNwYWNlIHRoYXQgZGVmaW5lcyBCYXIuICBDKysncyBs
b29rLXVwIHJ1bGVzIHJlbHkKKy8vIG9uIHRoYXQuCit2b2lkIFByaW50VG8oY29uc3QgQmFyJiBi
YXIsIHN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8IGJhci5EZWJ1Z1N0cmluZygpOyAgLy8g
d2hhdGV2ZXIgbmVlZGVkIHRvIHByaW50IGJhciB0byBvcworfQorCit9ICAvLyBuYW1lc3BhY2Ug
Zm9vCitgYGAKKworSWYgeW91IGhhdmUgZGVmaW5lZCBib3RoIGA8PGAgYW5kIGBQcmludFRvKClg
LCB0aGUgbGF0dGVyIHdpbGwgYmUgdXNlZCB3aGVuCitnb29nbGV0ZXN0IGlzIGNvbmNlcm5lZC4g
VGhpcyBhbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSBob3cgdGhlIHZhbHVlIGFwcGVhcnMgaW4KK2dv
b2dsZXRlc3QncyBvdXRwdXQgd2l0aG91dCBhZmZlY3RpbmcgY29kZSB0aGF0IHJlbGllcyBvbiB0
aGUgYmVoYXZpb3Igb2YgaXRzCitgPDxgIG9wZXJhdG9yLgorCitJZiB5b3Ugd2FudCB0byBwcmlu
dCBhIHZhbHVlIGB4YCB1c2luZyBnb29nbGV0ZXN0J3MgdmFsdWUgcHJpbnRlciB5b3Vyc2VsZiwg
anVzdAorY2FsbCBgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHgpYCwgd2hpY2ggcmV0dXJucyBh
biBgc3RkOjpzdHJpbmdgOgorCitgYGBjKysKK3ZlY3RvcjxwYWlyPEJhciwgaW50PiA+IGJhcl9p
bnRzID0gR2V0QmFySW50VmVjdG9yKCk7CisKK0VYUEVDVF9UUlVFKElzQ29ycmVjdEJhckludFZl
Y3RvcihiYXJfaW50cykpCisgICAgPDwgImJhcl9pbnRzID0gIiA8PCA6OnRlc3Rpbmc6OlByaW50
VG9TdHJpbmcoYmFyX2ludHMpOworYGBgCisKKyMjIERlYXRoIFRlc3RzCisKK0luIG1hbnkgYXBw
bGljYXRpb25zLCB0aGVyZSBhcmUgYXNzZXJ0aW9ucyB0aGF0IGNhbiBjYXVzZSBhcHBsaWNhdGlv
biBmYWlsdXJlIGlmCithIGNvbmRpdGlvbiBpcyBub3QgbWV0LiBUaGVzZSBzYW5pdHkgY2hlY2tz
LCB3aGljaCBlbnN1cmUgdGhhdCB0aGUgcHJvZ3JhbSBpcyBpbgorYSBrbm93biBnb29kIHN0YXRl
LCBhcmUgdGhlcmUgdG8gZmFpbCBhdCB0aGUgZWFybGllc3QgcG9zc2libGUgdGltZSBhZnRlciBz
b21lCitwcm9ncmFtIHN0YXRlIGlzIGNvcnJ1cHRlZC4gSWYgdGhlIGFzc2VydGlvbiBjaGVja3Mg
dGhlIHdyb25nIGNvbmRpdGlvbiwgdGhlbgordGhlIHByb2dyYW0gbWF5IHByb2NlZWQgaW4gYW4g
ZXJyb25lb3VzIHN0YXRlLCB3aGljaCBjb3VsZCBsZWFkIHRvIG1lbW9yeQorY29ycnVwdGlvbiwg
c2VjdXJpdHkgaG9sZXMsIG9yIHdvcnNlLiBIZW5jZSBpdCBpcyB2aXRhbGx5IGltcG9ydGFudCB0
byB0ZXN0IHRoYXQKK3N1Y2ggYXNzZXJ0aW9uIHN0YXRlbWVudHMgd29yayBhcyBleHBlY3RlZC4K
KworU2luY2UgdGhlc2UgcHJlY29uZGl0aW9uIGNoZWNrcyBjYXVzZSB0aGUgcHJvY2Vzc2VzIHRv
IGRpZSwgd2UgY2FsbCBzdWNoIHRlc3RzCitfZGVhdGggdGVzdHNfLiBNb3JlIGdlbmVyYWxseSwg
YW55IHRlc3QgdGhhdCBjaGVja3MgdGhhdCBhIHByb2dyYW0gdGVybWluYXRlcworKGV4Y2VwdCBi
eSB0aHJvd2luZyBhbiBleGNlcHRpb24pIGluIGFuIGV4cGVjdGVkIGZhc2hpb24gaXMgYWxzbyBh
IGRlYXRoIHRlc3QuCisKKworTm90ZSB0aGF0IGlmIGEgcGllY2Ugb2YgY29kZSB0aHJvd3MgYW4g
ZXhjZXB0aW9uLCB3ZSBkb24ndCBjb25zaWRlciBpdCAiZGVhdGgiCitmb3IgdGhlIHB1cnBvc2Ug
b2YgZGVhdGggdGVzdHMsIGFzIHRoZSBjYWxsZXIgb2YgdGhlIGNvZGUgY291bGQgY2F0Y2ggdGhl
CitleGNlcHRpb24gYW5kIGF2b2lkIHRoZSBjcmFzaC4gSWYgeW91IHdhbnQgdG8gdmVyaWZ5IGV4
Y2VwdGlvbnMgdGhyb3duIGJ5IHlvdXIKK2NvZGUsIHNlZSBbRXhjZXB0aW9uIEFzc2VydGlvbnNd
KCNleGNlcHRpb24tYXNzZXJ0aW9ucykuCisKK0lmIHlvdSB3YW50IHRvIHRlc3QgYEVYUEVDVF8q
KCkvQVNTRVJUXyooKWAgZmFpbHVyZXMgaW4geW91ciB0ZXN0IGNvZGUsIHNlZQorQ2F0Y2hpbmcg
RmFpbHVyZXMKKworIyMjIEhvdyB0byBXcml0ZSBhIERlYXRoIFRlc3QKKworZ29vZ2xldGVzdCBo
YXMgdGhlIGZvbGxvd2luZyBtYWNyb3MgdG8gc3VwcG9ydCBkZWF0aCB0ZXN0czoKKworRmF0YWwg
YXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2Vy
dGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJpZmllcworLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLQorYEFTU0VSVF9ERUFUSChzdGF0
ZW1lbnQsIHJlZ2V4KTtgICAgICAgICAgICAgICB8IGBFWFBFQ1RfREVBVEgoc3RhdGVtZW50LCBy
ZWdleCk7YCAgICAgICAgICAgICAgfCBgc3RhdGVtZW50YCBjcmFzaGVzIHdpdGggdGhlIGdpdmVu
IGVycm9yCitgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KTtgIHwg
YEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCk7YCB8IGlmIGRlYXRo
IHRlc3RzIGFyZSBzdXBwb3J0ZWQsIHZlcmlmaWVzIHRoYXQgYHN0YXRlbWVudGAgY3Jhc2hlcyB3
aXRoIHRoZSBnaXZlbiBlcnJvcjsgb3RoZXJ3aXNlIHZlcmlmaWVzIG5vdGhpbmcKK2BBU1NFUlRf
RVhJVChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpO2AgICAgfCBgRVhQRUNUX0VYSVQoc3Rh
dGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4KTtgICAgIHwgYHN0YXRlbWVudGAgZXhpdHMgd2l0aCB0
aGUgZ2l2ZW4gZXJyb3IsIGFuZCBpdHMgZXhpdCBjb2RlIG1hdGNoZXMgYHByZWRpY2F0ZWAKKwor
d2hlcmUgYHN0YXRlbWVudGAgaXMgYSBzdGF0ZW1lbnQgdGhhdCBpcyBleHBlY3RlZCB0byBjYXVz
ZSB0aGUgcHJvY2VzcyB0byBkaWUsCitgcHJlZGljYXRlYCBpcyBhIGZ1bmN0aW9uIG9yIGZ1bmN0
aW9uIG9iamVjdCB0aGF0IGV2YWx1YXRlcyBhbiBpbnRlZ2VyIGV4aXQKK3N0YXR1cywgYW5kIGBy
ZWdleGAgaXMgYSAoUGVybCkgcmVndWxhciBleHByZXNzaW9uIHRoYXQgdGhlIHN0ZGVyciBvdXRw
dXQgb2YKK2BzdGF0ZW1lbnRgIGlzIGV4cGVjdGVkIHRvIG1hdGNoLiBOb3RlIHRoYXQgYHN0YXRl
bWVudGAgY2FuIGJlICphbnkgdmFsaWQKK3N0YXRlbWVudCogKGluY2x1ZGluZyAqY29tcG91bmQg
c3RhdGVtZW50KikgYW5kIGRvZXNuJ3QgaGF2ZSB0byBiZSBhbgorZXhwcmVzc2lvbi4KKworCitB
cyB1c3VhbCwgdGhlIGBBU1NFUlRgIHZhcmlhbnRzIGFib3J0IHRoZSBjdXJyZW50IHRlc3QgZnVu
Y3Rpb24sIHdoaWxlIHRoZQorYEVYUEVDVGAgdmFyaWFudHMgZG8gbm90LgorCis+IE5PVEU6IFdl
IHVzZSB0aGUgd29yZCAiY3Jhc2giIGhlcmUgdG8gbWVhbiB0aGF0IHRoZSBwcm9jZXNzIHRlcm1p
bmF0ZXMgd2l0aCBhCis+ICpub24temVybyogZXhpdCBzdGF0dXMgY29kZS4gVGhlcmUgYXJlIHR3
byBwb3NzaWJpbGl0aWVzOiBlaXRoZXIgdGhlIHByb2Nlc3MKKz4gaGFzIGNhbGxlZCBgZXhpdCgp
YCBvciBgX2V4aXQoKWAgd2l0aCBhIG5vbi16ZXJvIHZhbHVlLCBvciBpdCBtYXkgYmUga2lsbGVk
IGJ5Cis+IGEgc2lnbmFsLgorPgorPiBUaGlzIG1lYW5zIHRoYXQgaWYgYCpzdGF0ZW1lbnQqYCB0
ZXJtaW5hdGVzIHRoZSBwcm9jZXNzIHdpdGggYSAwIGV4aXQgY29kZSwgaXQKKz4gaXMgKm5vdCog
Y29uc2lkZXJlZCBhIGNyYXNoIGJ5IGBFWFBFQ1RfREVBVEhgLiBVc2UgYEVYUEVDVF9FWElUYCBp
bnN0ZWFkIGlmCis+IHRoaXMgaXMgdGhlIGNhc2UsIG9yIGlmIHlvdSB3YW50IHRvIHJlc3RyaWN0
IHRoZSBleGl0IGNvZGUgbW9yZSBwcmVjaXNlbHkuCisKK0EgcHJlZGljYXRlIGhlcmUgbXVzdCBh
Y2NlcHQgYW4gYGludGAgYW5kIHJldHVybiBhIGBib29sYC4gVGhlIGRlYXRoIHRlc3QKK3N1Y2Nl
ZWRzIG9ubHkgaWYgdGhlIHByZWRpY2F0ZSByZXR1cm5zIGB0cnVlYC4gZ29vZ2xldGVzdCBkZWZp
bmVzIGEgZmV3CitwcmVkaWNhdGVzIHRoYXQgaGFuZGxlIHRoZSBtb3N0IGNvbW1vbiBjYXNlczoK
KworYGBgYysrCis6OnRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKGV4aXRfY29kZSkKK2BgYAorCitU
aGlzIGV4cHJlc3Npb24gaXMgYHRydWVgIGlmIHRoZSBwcm9ncmFtIGV4aXRlZCBub3JtYWxseSB3
aXRoIHRoZSBnaXZlbiBleGl0Citjb2RlLgorCitgYGBjKysKKzo6dGVzdGluZzo6S2lsbGVkQnlT
aWduYWwoc2lnbmFsX251bWJlcikgIC8vIE5vdCBhdmFpbGFibGUgb24gV2luZG93cy4KK2BgYAor
CitUaGlzIGV4cHJlc3Npb24gaXMgYHRydWVgIGlmIHRoZSBwcm9ncmFtIHdhcyBraWxsZWQgYnkg
dGhlIGdpdmVuIHNpZ25hbC4KKworVGhlIGAqX0RFQVRIYCBtYWNyb3MgYXJlIGNvbnZlbmllbnQg
d3JhcHBlcnMgZm9yIGAqX0VYSVRgIHRoYXQgdXNlIGEgcHJlZGljYXRlCit0aGF0IHZlcmlmaWVz
IHRoZSBwcm9jZXNzJyBleGl0IGNvZGUgaXMgbm9uLXplcm8uCisKK05vdGUgdGhhdCBhIGRlYXRo
IHRlc3Qgb25seSBjYXJlcyBhYm91dCB0aHJlZSB0aGluZ3M6CisKKzEuICBkb2VzIGBzdGF0ZW1l
bnRgIGFib3J0IG9yIGV4aXQgdGhlIHByb2Nlc3M/CisyLiAgKGluIHRoZSBjYXNlIG9mIGBBU1NF
UlRfRVhJVGAgYW5kIGBFWFBFQ1RfRVhJVGApIGRvZXMgdGhlIGV4aXQgc3RhdHVzCisgICAgc2F0
aXNmeSBgcHJlZGljYXRlYD8gT3IgKGluIHRoZSBjYXNlIG9mIGBBU1NFUlRfREVBVEhgIGFuZCBg
RVhQRUNUX0RFQVRIYCkKKyAgICBpcyB0aGUgZXhpdCBzdGF0dXMgbm9uLXplcm8/IEFuZAorMy4g
IGRvZXMgdGhlIHN0ZGVyciBvdXRwdXQgbWF0Y2ggYHJlZ2V4YD8KKworSW4gcGFydGljdWxhciwg
aWYgYHN0YXRlbWVudGAgZ2VuZXJhdGVzIGFuIGBBU1NFUlRfKmAgb3IgYEVYUEVDVF8qYCBmYWls
dXJlLCBpdAord2lsbCAqKm5vdCoqIGNhdXNlIHRoZSBkZWF0aCB0ZXN0IHRvIGZhaWwsIGFzIGdv
b2dsZXRlc3QgYXNzZXJ0aW9ucyBkb24ndCBhYm9ydAordGhlIHByb2Nlc3MuCisKK1RvIHdyaXRl
IGEgZGVhdGggdGVzdCwgc2ltcGx5IHVzZSBvbmUgb2YgdGhlIGFib3ZlIG1hY3JvcyBpbnNpZGUg
eW91ciB0ZXN0CitmdW5jdGlvbi4gRm9yIGV4YW1wbGUsCisKK2BgYGMrKworVEVTVChNeURlYXRo
VGVzdCwgRm9vKSB7CisgIC8vIFRoaXMgZGVhdGggdGVzdCB1c2VzIGEgY29tcG91bmQgc3RhdGVt
ZW50LgorICBBU1NFUlRfREVBVEgoeworICAgIGludCBuID0gNTsKKyAgICBGb28oJm4pOworICB9
LCAiRXJyb3Igb24gbGluZSAuKiBvZiBGb28oKSIpOworfQorCitURVNUKE15RGVhdGhUZXN0LCBO
b3JtYWxFeGl0KSB7CisgIEVYUEVDVF9FWElUKE5vcm1hbEV4aXQoKSwgOjp0ZXN0aW5nOjpFeGl0
ZWRXaXRoQ29kZSgwKSwgIlN1Y2Nlc3MiKTsKK30KKworVEVTVChNeURlYXRoVGVzdCwgS2lsbE15
c2VsZikgeworICBFWFBFQ1RfRVhJVChLaWxsTXlzZWxmKCksIDo6dGVzdGluZzo6S2lsbGVkQnlT
aWduYWwoU0lHS0lMTCksCisgICAgICAgICAgICAgICJTZW5kaW5nIG15c2VsZiB1bmJsb2NrYWJs
ZSBzaWduYWwiKTsKK30KK2BgYAorCit2ZXJpZmllcyB0aGF0OgorCisqICAgY2FsbGluZyBgRm9v
KDUpYCBjYXVzZXMgdGhlIHByb2Nlc3MgdG8gZGllIHdpdGggdGhlIGdpdmVuIGVycm9yIG1lc3Nh
Z2UsCisqICAgY2FsbGluZyBgTm9ybWFsRXhpdCgpYCBjYXVzZXMgdGhlIHByb2Nlc3MgdG8gcHJp
bnQgYCJTdWNjZXNzImAgdG8gc3RkZXJyIGFuZAorICAgIGV4aXQgd2l0aCBleGl0IGNvZGUgMCwg
YW5kCisqICAgY2FsbGluZyBgS2lsbE15c2VsZigpYCBraWxscyB0aGUgcHJvY2VzcyB3aXRoIHNp
Z25hbCBgU0lHS0lMTGAuCisKK1RoZSB0ZXN0IGZ1bmN0aW9uIGJvZHkgbWF5IGNvbnRhaW4gb3Ro
ZXIgYXNzZXJ0aW9ucyBhbmQgc3RhdGVtZW50cyBhcyB3ZWxsLCBpZgorbmVjZXNzYXJ5LgorCisj
IyMgRGVhdGggVGVzdCBOYW1pbmcKKworSU1QT1JUQU5UOiBXZSBzdHJvbmdseSByZWNvbW1lbmQg
eW91IHRvIGZvbGxvdyB0aGUgY29udmVudGlvbiBvZiBuYW1pbmcgeW91cgorKip0ZXN0IGNhc2Uq
KiAobm90IHRlc3QpIGAqRGVhdGhUZXN0YCB3aGVuIGl0IGNvbnRhaW5zIGEgZGVhdGggdGVzdCwg
YXMKK2RlbW9uc3RyYXRlZCBpbiB0aGUgYWJvdmUgZXhhbXBsZS4gVGhlIFtEZWF0aCBUZXN0cyBB
bmQKK1RocmVhZHNdKCNkZWF0aC10ZXN0cy1hbmQtdGhyZWFkcykgc2VjdGlvbiBiZWxvdyBleHBs
YWlucyB3aHkuCisKK0lmIGEgdGVzdCBmaXh0dXJlIGNsYXNzIGlzIHNoYXJlZCBieSBub3JtYWwg
dGVzdHMgYW5kIGRlYXRoIHRlc3RzLCB5b3UgY2FuIHVzZQorYHVzaW5nYCBvciBgdHlwZWRlZmAg
dG8gaW50cm9kdWNlIGFuIGFsaWFzIGZvciB0aGUgZml4dHVyZSBjbGFzcyBhbmQgYXZvaWQKK2R1
cGxpY2F0aW5nIGl0cyBjb2RlOgorCitgYGBjKysKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpUZXN0IHsgLi4uIH07CisKK3VzaW5nIEZvb0RlYXRoVGVzdCA9IEZvb1Rlc3Q7CisK
K1RFU1RfRihGb29UZXN0LCBEb2VzVGhpcykgeworICAvLyBub3JtYWwgdGVzdAorfQorCitURVNU
X0YoRm9vRGVhdGhUZXN0LCBEb2VzVGhhdCkgeworICAvLyBkZWF0aCB0ZXN0Cit9CitgYGAKKwor
KipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFi
b3ZlKSwgQ3lnd2luLCBhbmQgTWFjCisKKyMjIyBSZWd1bGFyIEV4cHJlc3Npb24gU3ludGF4CisK
KworT24gUE9TSVggc3lzdGVtcyAoZS5nLiBMaW51eCwgQ3lnd2luLCBhbmQgTWFjKSwgZ29vZ2xl
dGVzdCB1c2VzIHRoZQorW1BPU0lYIGV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbl0oaHR0cDov
L3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Jhc2VkZWZzL3hiZF9jaGFw
MDkuaHRtbCN0YWdfMDlfMDQpCitzeW50YXguIFRvIGxlYXJuIGFib3V0IHRoaXMgc3ludGF4LCB5
b3UgbWF5IHdhbnQgdG8gcmVhZCB0aGlzCitbV2lraXBlZGlhIGVudHJ5XShodHRwOi8vZW4ud2lr
aXBlZGlhLm9yZy93aWtpL1JlZ3VsYXJfZXhwcmVzc2lvbiNQT1NJWF9FeHRlbmRlZF9SZWd1bGFy
X0V4cHJlc3Npb25zKS4KKworT24gV2luZG93cywgZ29vZ2xldGVzdCB1c2VzIGl0cyBvd24gc2lt
cGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiBpbXBsZW1lbnRhdGlvbi4gSXQKK2xhY2tzIG1hbnkgZmVh
dHVyZXMuIEZvciBleGFtcGxlLCB3ZSBkb24ndCBzdXBwb3J0IHVuaW9uIChgInh8eSJgKSwgZ3Jv
dXBpbmcKKyhgIih4eSkiYCksIGJyYWNrZXRzIChgIlt4eV0iYCksIGFuZCByZXBldGl0aW9uIGNv
dW50IChgInh7NSw3fSJgKSwgYW1vbmcKK290aGVycy4gQmVsb3cgaXMgd2hhdCB3ZSBkbyBzdXBw
b3J0IChgQWAgZGVub3RlcyBhIGxpdGVyYWwgY2hhcmFjdGVyLCBwZXJpb2QKKyhgLmApLCBvciBh
IHNpbmdsZSBgXFwgYCBlc2NhcGUgc2VxdWVuY2U7IGB4YCBhbmQgYHlgIGRlbm90ZSByZWd1bGFy
CitleHByZXNzaW9ucy4pOgorCitFeHByZXNzaW9uIHwgTWVhbmluZworLS0tLS0tLS0tLSB8IC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCitgY2AgICAgICAgIHwgbWF0Y2hlcyBhbnkgbGl0ZXJhbCBjaGFyYWN0ZXIgYGNgCitgXFxk
YCAgICAgIHwgbWF0Y2hlcyBhbnkgZGVjaW1hbCBkaWdpdAorYFxcRGAgICAgICB8IG1hdGNoZXMg
YW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgZGVjaW1hbCBkaWdpdAorYFxcZmAgICAgICB8IG1h
dGNoZXMgYFxmYAorYFxcbmAgICAgICB8IG1hdGNoZXMgYFxuYAorYFxccmAgICAgICB8IG1hdGNo
ZXMgYFxyYAorYFxcc2AgICAgICB8IG1hdGNoZXMgYW55IEFTQ0lJIHdoaXRlc3BhY2UsIGluY2x1
ZGluZyBgXG5gCitgXFxTYCAgICAgIHwgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIHRoYXQncyBub3Qg
YSB3aGl0ZXNwYWNlCitgXFx0YCAgICAgIHwgbWF0Y2hlcyBgXHRgCitgXFx2YCAgICAgIHwgbWF0
Y2hlcyBgXHZgCitgXFx3YCAgICAgIHwgbWF0Y2hlcyBhbnkgbGV0dGVyLCBgX2AsIG9yIGRlY2lt
YWwgZGlnaXQKK2BcXFdgICAgICAgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCBgXFx3YCBk
b2Vzbid0IG1hdGNoCitgXFxjYCAgICAgIHwgbWF0Y2hlcyBhbnkgbGl0ZXJhbCBjaGFyYWN0ZXIg
YGNgLCB3aGljaCBtdXN0IGJlIGEgcHVuY3R1YXRpb24KK2AuYCAgICAgICAgfCBtYXRjaGVzIGFu
eSBzaW5nbGUgY2hhcmFjdGVyIGV4Y2VwdCBgXG5gCitgQT9gICAgICAgIHwgbWF0Y2hlcyAwIG9y
IDEgb2NjdXJyZW5jZXMgb2YgYEFgCitgQSpgICAgICAgIHwgbWF0Y2hlcyAwIG9yIG1hbnkgb2Nj
dXJyZW5jZXMgb2YgYEFgCitgQStgICAgICAgIHwgbWF0Y2hlcyAxIG9yIG1hbnkgb2NjdXJyZW5j
ZXMgb2YgYEFgCitgXmAgICAgICAgIHwgbWF0Y2hlcyB0aGUgYmVnaW5uaW5nIG9mIGEgc3RyaW5n
IChub3QgdGhhdCBvZiBlYWNoIGxpbmUpCitgJGAgICAgICAgIHwgbWF0Y2hlcyB0aGUgZW5kIG9m
IGEgc3RyaW5nIChub3QgdGhhdCBvZiBlYWNoIGxpbmUpCitgeHlgICAgICAgIHwgbWF0Y2hlcyBg
eGAgZm9sbG93ZWQgYnkgYHlgCisKK1RvIGhlbHAgeW91IGRldGVybWluZSB3aGljaCBjYXBhYmls
aXR5IGlzIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbSwgZ29vZ2xldGVzdAorZGVmaW5lcyBtYWNy
b3MgdG8gZ292ZXJuIHdoaWNoIHJlZ3VsYXIgZXhwcmVzc2lvbiBpdCBpcyB1c2luZy4gVGhlIG1h
Y3JvcyBhcmU6Cis8IS0tYWJzbDpnb29nbGUzLWJlZ2luKGdvb2dsZTMtb25seSktLT5gR1RFU1Rf
VVNFU19QQ1JFPTFgLCBvcgorPCEtLWFic2w6Z29vZ2xlMy1lbmQtLT4gYEdURVNUX1VTRVNfU0lN
UExFX1JFPTFgIG9yIGBHVEVTVF9VU0VTX1BPU0lYX1JFPTFgLiBJZgoreW91IHdhbnQgeW91ciBk
ZWF0aCB0ZXN0cyB0byB3b3JrIGluIGFsbCBjYXNlcywgeW91IGNhbiBlaXRoZXIgYCNpZmAgb24g
dGhlc2UKK21hY3JvcyBvciB1c2UgdGhlIG1vcmUgbGltaXRlZCBzeW50YXggb25seS4KKworIyMj
IEhvdyBJdCBXb3JrcworCitVbmRlciB0aGUgaG9vZCwgYEFTU0VSVF9FWElUKClgIHNwYXducyBh
IG5ldyBwcm9jZXNzIGFuZCBleGVjdXRlcyB0aGUgZGVhdGggdGVzdAorc3RhdGVtZW50IGluIHRo
YXQgcHJvY2Vzcy4gVGhlIGRldGFpbHMgb2YgaG93IHByZWNpc2VseSB0aGF0IGhhcHBlbnMgZGVw
ZW5kIG9uCit0aGUgcGxhdGZvcm0gYW5kIHRoZSB2YXJpYWJsZSA6OnRlc3Rpbmc6OkdURVNUX0ZM
QUcoZGVhdGhfdGVzdF9zdHlsZSkgKHdoaWNoIGlzCitpbml0aWFsaXplZCBmcm9tIHRoZSBjb21t
YW5kLWxpbmUgZmxhZyBgLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlYCkuCisKKyogICBPbiBQT1NJ
WCBzeXN0ZW1zLCBgZm9yaygpYCAob3IgYGNsb25lKClgIG9uIExpbnV4KSBpcyB1c2VkIHRvIHNw
YXduIHRoZQorICAgIGNoaWxkLCBhZnRlciB3aGljaDoKKyAgICAqICAgSWYgdGhlIHZhcmlhYmxl
J3MgdmFsdWUgaXMgYCJmYXN0ImAsIHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudCBpcworICAgICAg
ICBpbW1lZGlhdGVseSBleGVjdXRlZC4KKyAgICAqICAgSWYgdGhlIHZhcmlhYmxlJ3MgdmFsdWUg
aXMgYCJ0aHJlYWRzYWZlImAsIHRoZSBjaGlsZCBwcm9jZXNzIHJlLWV4ZWN1dGVzCisgICAgICAg
IHRoZSB1bml0IHRlc3QgYmluYXJ5IGp1c3QgYXMgaXQgd2FzIG9yaWdpbmFsbHkgaW52b2tlZCwg
YnV0IHdpdGggc29tZQorICAgICAgICBleHRyYSBmbGFncyB0byBjYXVzZSBqdXN0IHRoZSBzaW5n
bGUgZGVhdGggdGVzdCB1bmRlciBjb25zaWRlcmF0aW9uIHRvCisgICAgICAgIGJlIHJ1bi4KKyog
ICBPbiBXaW5kb3dzLCB0aGUgY2hpbGQgaXMgc3Bhd25lZCB1c2luZyB0aGUgYENyZWF0ZVByb2Nl
c3MoKWAgQVBJLCBhbmQKKyAgICByZS1leGVjdXRlcyB0aGUgYmluYXJ5IHRvIGNhdXNlIGp1c3Qg
dGhlIHNpbmdsZSBkZWF0aCB0ZXN0IHVuZGVyCisgICAgY29uc2lkZXJhdGlvbiB0byBiZSBydW4g
LSBtdWNoIGxpa2UgdGhlIGB0aHJlYWRzYWZlYCBtb2RlIG9uIFBPU0lYLgorCitPdGhlciB2YWx1
ZXMgZm9yIHRoZSB2YXJpYWJsZSBhcmUgaWxsZWdhbCBhbmQgd2lsbCBjYXVzZSB0aGUgZGVhdGgg
dGVzdCB0byBmYWlsLgorQ3VycmVudGx5LCB0aGUgZmxhZydzIGRlZmF1bHQgdmFsdWUgaXMKKyJm
YXN0Ii4gSG93ZXZlciwgd2UgcmVzZXJ2ZQordGhlIHJpZ2h0IHRvIGNoYW5nZSBpdCBpbiB0aGUg
ZnV0dXJlLiBUaGVyZWZvcmUsIHlvdXIgdGVzdHMgc2hvdWxkIG5vdCBkZXBlbmQgb24KK3RoaXMu
IEluIGVpdGhlciBjYXNlLCB0aGUgcGFyZW50IHByb2Nlc3Mgd2FpdHMgZm9yIHRoZSBjaGlsZCBw
cm9jZXNzIHRvCitjb21wbGV0ZSwgYW5kIGNoZWNrcyB0aGF0CisKKzEuICB0aGUgY2hpbGQncyBl
eGl0IHN0YXR1cyBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZSwgYW5kCisyLiAgdGhlIGNoaWxkJ3Mg
c3RkZXJyIG1hdGNoZXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4KKworSWYgdGhlIGRlYXRoIHRl
c3Qgc3RhdGVtZW50IHJ1bnMgdG8gY29tcGxldGlvbiB3aXRob3V0IGR5aW5nLCB0aGUgY2hpbGQg
cHJvY2Vzcword2lsbCBub25ldGhlbGVzcyB0ZXJtaW5hdGUsIGFuZCB0aGUgYXNzZXJ0aW9uIGZh
aWxzLgorCisjIyMgRGVhdGggVGVzdHMgQW5kIFRocmVhZHMKKworVGhlIHJlYXNvbiBmb3IgdGhl
IHR3byBkZWF0aCB0ZXN0IHN0eWxlcyBoYXMgdG8gZG8gd2l0aCB0aHJlYWQgc2FmZXR5LiBEdWUg
dG8KK3dlbGwta25vd24gcHJvYmxlbXMgd2l0aCBmb3JraW5nIGluIHRoZSBwcmVzZW5jZSBvZiB0
aHJlYWRzLCBkZWF0aCB0ZXN0cyBzaG91bGQKK2JlIHJ1biBpbiBhIHNpbmdsZS10aHJlYWRlZCBj
b250ZXh0LiBTb21ldGltZXMsIGhvd2V2ZXIsIGl0IGlzbid0IGZlYXNpYmxlIHRvCithcnJhbmdl
IHRoYXQga2luZCBvZiBlbnZpcm9ubWVudC4gRm9yIGV4YW1wbGUsIHN0YXRpY2FsbHktaW5pdGlh
bGl6ZWQgbW9kdWxlcworbWF5IHN0YXJ0IHRocmVhZHMgYmVmb3JlIG1haW4gaXMgZXZlciByZWFj
aGVkLiBPbmNlIHRocmVhZHMgaGF2ZSBiZWVuIGNyZWF0ZWQsCitpdCBtYXkgYmUgZGlmZmljdWx0
IG9yIGltcG9zc2libGUgdG8gY2xlYW4gdGhlbSB1cC4KKworZ29vZ2xldGVzdCBoYXMgdGhyZWUg
ZmVhdHVyZXMgaW50ZW5kZWQgdG8gcmFpc2UgYXdhcmVuZXNzIG9mIHRocmVhZGluZyBpc3N1ZXMu
CisKKzEuICBBIHdhcm5pbmcgaXMgZW1pdHRlZCBpZiBtdWx0aXBsZSB0aHJlYWRzIGFyZSBydW5u
aW5nIHdoZW4gYSBkZWF0aCB0ZXN0IGlzCisgICAgZW5jb3VudGVyZWQuCisyLiAgVGVzdCBjYXNl
cyB3aXRoIGEgbmFtZSBlbmRpbmcgaW4gIkRlYXRoVGVzdCIgYXJlIHJ1biBiZWZvcmUgYWxsIG90
aGVyIHRlc3RzLgorMy4gIEl0IHVzZXMgYGNsb25lKClgIGluc3RlYWQgb2YgYGZvcmsoKWAgdG8g
c3Bhd24gdGhlIGNoaWxkIHByb2Nlc3Mgb24gTGludXgKKyAgICAoYGNsb25lKClgIGlzIG5vdCBh
dmFpbGFibGUgb24gQ3lnd2luIGFuZCBNYWMpLCBhcyBgZm9yaygpYCBpcyBtb3JlIGxpa2VseQor
ICAgIHRvIGNhdXNlIHRoZSBjaGlsZCB0byBoYW5nIHdoZW4gdGhlIHBhcmVudCBwcm9jZXNzIGhh
cyBtdWx0aXBsZSB0aHJlYWRzLgorCitJdCdzIHBlcmZlY3RseSBmaW5lIHRvIGNyZWF0ZSB0aHJl
YWRzIGluc2lkZSBhIGRlYXRoIHRlc3Qgc3RhdGVtZW50OyB0aGV5IGFyZQorZXhlY3V0ZWQgaW4g
YSBzZXBhcmF0ZSBwcm9jZXNzIGFuZCBjYW5ub3QgYWZmZWN0IHRoZSBwYXJlbnQuCisKKyMjIyBE
ZWF0aCBUZXN0IFN0eWxlcworCisKK1RoZSAidGhyZWFkc2FmZSIgZGVhdGggdGVzdCBzdHlsZSB3
YXMgaW50cm9kdWNlZCBpbiBvcmRlciB0byBoZWxwIG1pdGlnYXRlIHRoZQorcmlza3Mgb2YgdGVz
dGluZyBpbiBhIHBvc3NpYmx5IG11bHRpdGhyZWFkZWQgZW52aXJvbm1lbnQuIEl0IHRyYWRlcyBp
bmNyZWFzZWQKK3Rlc3QgZXhlY3V0aW9uIHRpbWUgKHBvdGVudGlhbGx5IGRyYW1hdGljYWxseSBz
bykgZm9yIGltcHJvdmVkIHRocmVhZCBzYWZldHkuCisKK1RoZSBhdXRvbWF0ZWQgdGVzdGluZyBm
cmFtZXdvcmsgZG9lcyBub3Qgc2V0IHRoZSBzdHlsZSBmbGFnLiBZb3UgY2FuIGNob29zZSBhCitw
YXJ0aWN1bGFyIHN0eWxlIG9mIGRlYXRoIHRlc3RzIGJ5IHNldHRpbmcgdGhlIGZsYWcgcHJvZ3Jh
bW1hdGljYWxseToKKworYGBgYysrCit0ZXN0aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0
eWxlPSJ0aHJlYWRzYWZlIgorYGBgCisKK1lvdSBjYW4gZG8gdGhpcyBpbiBgbWFpbigpYCB0byBz
ZXQgdGhlIHN0eWxlIGZvciBhbGwgZGVhdGggdGVzdHMgaW4gdGhlIGJpbmFyeSwKK29yIGluIGlu
ZGl2aWR1YWwgdGVzdHMuIFJlY2FsbCB0aGF0IGZsYWdzIGFyZSBzYXZlZCBiZWZvcmUgcnVubmlu
ZyBlYWNoIHRlc3QgYW5kCityZXN0b3JlZCBhZnRlcndhcmRzLCBzbyB5b3UgbmVlZCBub3QgZG8g
dGhhdCB5b3Vyc2VsZi4gRm9yIGV4YW1wbGU6CisKK2BgYGMrKworaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KSB7CisgIEluaXRHb29nbGUoYXJndlswXSwgJmFyZ2MsICZhcmd2LCB0cnVl
KTsKKyAgOjp0ZXN0aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0gImZhc3QiOwor
ICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQorCitURVNUKE15RGVhdGhUZXN0LCBUZXN0T25l
KSB7CisgIDo6dGVzdGluZzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJ0aHJlYWRz
YWZlIjsKKyAgLy8gVGhpcyB0ZXN0IGlzIHJ1biBpbiB0aGUgInRocmVhZHNhZmUiIHN0eWxlOgor
ICBBU1NFUlRfREVBVEgoVGhpc1Nob3VsZERpZSgpLCAiIik7Cit9CisKK1RFU1QoTXlEZWF0aFRl
c3QsIFRlc3RUd28pIHsKKyAgLy8gVGhpcyB0ZXN0IGlzIHJ1biBpbiB0aGUgImZhc3QiIHN0eWxl
OgorICBBU1NFUlRfREVBVEgoVGhpc1Nob3VsZERpZSgpLCAiIik7Cit9CitgYGAKKworCisjIyMg
Q2F2ZWF0cworCitUaGUgYHN0YXRlbWVudGAgYXJndW1lbnQgb2YgYEFTU0VSVF9FWElUKClgIGNh
biBiZSBhbnkgdmFsaWQgQysrIHN0YXRlbWVudC4gSWYKK2l0IGxlYXZlcyB0aGUgY3VycmVudCBm
dW5jdGlvbiB2aWEgYSBgcmV0dXJuYCBzdGF0ZW1lbnQgb3IgYnkgdGhyb3dpbmcgYW4KK2V4Y2Vw
dGlvbiwgdGhlIGRlYXRoIHRlc3QgaXMgY29uc2lkZXJlZCB0byBoYXZlIGZhaWxlZC4gU29tZSBn
b29nbGV0ZXN0IG1hY3JvcworbWF5IHJldHVybiBmcm9tIHRoZSBjdXJyZW50IGZ1bmN0aW9uIChl
LmcuIGBBU1NFUlRfVFJVRSgpYCksIHNvIGJlIHN1cmUgdG8gYXZvaWQKK3RoZW0gaW4gYHN0YXRl
bWVudGAuCisKK1NpbmNlIGBzdGF0ZW1lbnRgIHJ1bnMgaW4gdGhlIGNoaWxkIHByb2Nlc3MsIGFu
eSBpbi1tZW1vcnkgc2lkZSBlZmZlY3QgKGUuZy4KK21vZGlmeWluZyBhIHZhcmlhYmxlLCByZWxl
YXNpbmcgbWVtb3J5LCBldGMpIGl0IGNhdXNlcyB3aWxsICpub3QqIGJlIG9ic2VydmFibGUKK2lu
IHRoZSBwYXJlbnQgcHJvY2Vzcy4gSW4gcGFydGljdWxhciwgaWYgeW91IHJlbGVhc2UgbWVtb3J5
IGluIGEgZGVhdGggdGVzdCwKK3lvdXIgcHJvZ3JhbSB3aWxsIGZhaWwgdGhlIGhlYXAgY2hlY2sg
YXMgdGhlIHBhcmVudCBwcm9jZXNzIHdpbGwgbmV2ZXIgc2VlIHRoZQorbWVtb3J5IHJlY2xhaW1l
ZC4gVG8gc29sdmUgdGhpcyBwcm9ibGVtLCB5b3UgY2FuCisKKzEuICB0cnkgbm90IHRvIGZyZWUg
bWVtb3J5IGluIGEgZGVhdGggdGVzdDsKKzIuICBmcmVlIHRoZSBtZW1vcnkgYWdhaW4gaW4gdGhl
IHBhcmVudCBwcm9jZXNzOyBvcgorMy4gIGRvIG5vdCB1c2UgdGhlIGhlYXAgY2hlY2tlciBpbiB5
b3VyIHByb2dyYW0uCisKK0R1ZSB0byBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIHlvdSBjYW5u
b3QgcGxhY2UgbXVsdGlwbGUgZGVhdGggdGVzdCBhc3NlcnRpb25zCitvbiB0aGUgc2FtZSBsaW5l
OyBvdGhlcndpc2UsIGNvbXBpbGF0aW9uIHdpbGwgZmFpbCB3aXRoIGFuIHVub2J2aW91cyBlcnJv
cgorbWVzc2FnZS4KKworRGVzcGl0ZSB0aGUgaW1wcm92ZWQgdGhyZWFkIHNhZmV0eSBhZmZvcmRl
ZCBieSB0aGUgInRocmVhZHNhZmUiIHN0eWxlIG9mIGRlYXRoCit0ZXN0LCB0aHJlYWQgcHJvYmxl
bXMgc3VjaCBhcyBkZWFkbG9jayBhcmUgc3RpbGwgcG9zc2libGUgaW4gdGhlIHByZXNlbmNlIG9m
CitoYW5kbGVycyByZWdpc3RlcmVkIHdpdGggYHB0aHJlYWRfYXRmb3JrKDMpYC4KKworCisjIyBV
c2luZyBBc3NlcnRpb25zIGluIFN1Yi1yb3V0aW5lcworCisjIyMgQWRkaW5nIFRyYWNlcyB0byBB
c3NlcnRpb25zCisKK0lmIGEgdGVzdCBzdWItcm91dGluZSBpcyBjYWxsZWQgZnJvbSBzZXZlcmFs
IHBsYWNlcywgd2hlbiBhbiBhc3NlcnRpb24gaW5zaWRlIGl0CitmYWlscywgaXQgY2FuIGJlIGhh
cmQgdG8gdGVsbCB3aGljaCBpbnZvY2F0aW9uIG9mIHRoZSBzdWItcm91dGluZSB0aGUgZmFpbHVy
ZSBpcworZnJvbS4gCitZb3UgY2FuIGFsbGV2aWF0ZSB0aGlzIHByb2JsZW0gdXNpbmcgZXh0cmEg
bG9nZ2luZyBvciBjdXN0b20gZmFpbHVyZSBtZXNzYWdlcywKK2J1dCB0aGF0IHVzdWFsbHkgY2x1
dHRlcnMgdXAgeW91ciB0ZXN0cy4gQSBiZXR0ZXIgc29sdXRpb24gaXMgdG8gdXNlIHRoZQorYFND
T1BFRF9UUkFDRWAgbWFjcm8gb3IgdGhlIGBTY29wZWRUcmFjZWAgdXRpbGl0eToKKworYGBgYysr
CitTQ09QRURfVFJBQ0UobWVzc2FnZSk7CitTY29wZWRUcmFjZSB0cmFjZSgiZmlsZV9wYXRoIiwg
bGluZV9udW1iZXIsIG1lc3NhZ2UpOworYGBgCisKK3doZXJlIGBtZXNzYWdlYCBjYW4gYmUgYW55
dGhpbmcgc3RyZWFtYWJsZSB0byBgc3RkOjpvc3RyZWFtYC4gYFNDT1BFRF9UUkFDRWAKK21hY3Jv
IHdpbGwgY2F1c2UgdGhlIGN1cnJlbnQgZmlsZSBuYW1lLCBsaW5lIG51bWJlciwgYW5kIHRoZSBn
aXZlbiBtZXNzYWdlIHRvIGJlCithZGRlZCBpbiBldmVyeSBmYWlsdXJlIG1lc3NhZ2UuIGBTY29w
ZWRUcmFjZWAgYWNjZXB0cyBleHBsaWNpdCBmaWxlIG5hbWUgYW5kCitsaW5lIG51bWJlciBpbiBh
cmd1bWVudHMsIHdoaWNoIGlzIHVzZWZ1bCBmb3Igd3JpdGluZyB0ZXN0IGhlbHBlcnMuIFRoZSBl
ZmZlY3QKK3dpbGwgYmUgdW5kb25lIHdoZW4gdGhlIGNvbnRyb2wgbGVhdmVzIHRoZSBjdXJyZW50
IGxleGljYWwgc2NvcGUuCisKK0ZvciBleGFtcGxlLAorCitgYGBjKysKKzEwOiB2b2lkIFN1YjEo
aW50IG4pIHsKKzExOiAgIEVYUEVDVF9FUSgxLCBCYXIobikpOworMTI6ICAgRVhQRUNUX0VRKDIs
IEJhcihuICsgMSkpOworMTM6IH0KKzE0OgorMTU6IFRFU1QoRm9vVGVzdCwgQmFyKSB7CisxNjog
ICB7CisxNzogICAgIFNDT1BFRF9UUkFDRSgiQSIpOyAgLy8gVGhpcyB0cmFjZSBwb2ludCB3aWxs
IGJlIGluY2x1ZGVkIGluCisxODogICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXZlcnkgZmFp
bHVyZSBpbiB0aGlzIHNjb3BlLgorMTk6ICAgICBTdWIxKDEpOworMjA6ICAgfQorMjE6ICAgLy8g
Tm93IGl0IHdvbid0LgorMjI6ICAgU3ViMSg5KTsKKzIzOiB9CitgYGAKKworY291bGQgcmVzdWx0
IGluIG1lc3NhZ2VzIGxpa2UgdGhlc2U6CisKK2BgYG5vbmUKK3BhdGgvdG8vZm9vX3Rlc3QuY2M6
MTE6IEZhaWx1cmUKK1ZhbHVlIG9mOiBCYXIobikKK0V4cGVjdGVkOiAxCisgIEFjdHVhbDogMgor
ICAgVHJhY2U6CitwYXRoL3RvL2Zvb190ZXN0LmNjOjE3OiBBCisKK3BhdGgvdG8vZm9vX3Rlc3Qu
Y2M6MTI6IEZhaWx1cmUKK1ZhbHVlIG9mOiBCYXIobiArIDEpCitFeHBlY3RlZDogMgorICBBY3R1
YWw6IDMKK2BgYAorCitXaXRob3V0IHRoZSB0cmFjZSwgaXQgd291bGQndmUgYmVlbiBkaWZmaWN1
bHQgdG8ga25vdyB3aGljaCBpbnZvY2F0aW9uIG9mCitgU3ViMSgpYCB0aGUgdHdvIGZhaWx1cmVz
IGNvbWUgZnJvbSByZXNwZWN0aXZlbHkuIChZb3UgY291bGQgYWRkCisKK2FuIGV4dHJhIG1lc3Nh
Z2UgdG8gZWFjaCBhc3NlcnRpb24gaW4gYFN1YjEoKWAgdG8gaW5kaWNhdGUgdGhlIHZhbHVlIG9m
IGBuYCwgYnV0Cit0aGF0J3MgdGVkaW91cy4pCisKK1NvbWUgdGlwcyBvbiB1c2luZyBgU0NPUEVE
X1RSQUNFYDoKKworMS4gIFdpdGggYSBzdWl0YWJsZSBtZXNzYWdlLCBpdCdzIG9mdGVuIGVub3Vn
aCB0byB1c2UgYFNDT1BFRF9UUkFDRWAgYXQgdGhlCisgICAgYmVnaW5uaW5nIG9mIGEgc3ViLXJv
dXRpbmUsIGluc3RlYWQgb2YgYXQgZWFjaCBjYWxsIHNpdGUuCisyLiAgV2hlbiBjYWxsaW5nIHN1
Yi1yb3V0aW5lcyBpbnNpZGUgYSBsb29wLCBtYWtlIHRoZSBsb29wIGl0ZXJhdG9yIHBhcnQgb2Yg
dGhlCisgICAgbWVzc2FnZSBpbiBgU0NPUEVEX1RSQUNFYCBzdWNoIHRoYXQgeW91IGNhbiBrbm93
IHdoaWNoIGl0ZXJhdGlvbiB0aGUgZmFpbHVyZQorICAgIGlzIGZyb20uCiszLiAgU29tZXRpbWVz
IHRoZSBsaW5lIG51bWJlciBvZiB0aGUgdHJhY2UgcG9pbnQgaXMgZW5vdWdoIGZvciBpZGVudGlm
eWluZyB0aGUKKyAgICBwYXJ0aWN1bGFyIGludm9jYXRpb24gb2YgYSBzdWItcm91dGluZS4gSW4g
dGhpcyBjYXNlLCB5b3UgZG9uJ3QgaGF2ZSB0bworICAgIGNob29zZSBhIHVuaXF1ZSBtZXNzYWdl
IGZvciBgU0NPUEVEX1RSQUNFYC4gWW91IGNhbiBzaW1wbHkgdXNlIGAiImAuCis0LiAgWW91IGNh
biB1c2UgYFNDT1BFRF9UUkFDRWAgaW4gYW4gaW5uZXIgc2NvcGUgd2hlbiB0aGVyZSBpcyBvbmUg
aW4gdGhlIG91dGVyCisgICAgc2NvcGUuIEluIHRoaXMgY2FzZSwgYWxsIGFjdGl2ZSB0cmFjZSBw
b2ludHMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZmFpbHVyZQorICAgIG1lc3NhZ2VzLCBpbiBy
ZXZlcnNlIG9yZGVyIHRoZXkgYXJlIGVuY291bnRlcmVkLgorNS4gIFRoZSB0cmFjZSBkdW1wIGlz
IGNsaWNrYWJsZSBpbiBFbWFjcyAtIGhpdCBgcmV0dXJuYCBvbiBhIGxpbmUgbnVtYmVyIGFuZAor
ICAgIHlvdSdsbCBiZSB0YWtlbiB0byB0aGF0IGxpbmUgaW4gdGhlIHNvdXJjZSBmaWxlIQorCisq
KkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgUHJvcGFnYXRpbmcg
RmF0YWwgRmFpbHVyZXMKKworQSBjb21tb24gcGl0ZmFsbCB3aGVuIHVzaW5nIGBBU1NFUlRfKmAg
YW5kIGBGQUlMKmAgaXMgbm90IHVuZGVyc3RhbmRpbmcgdGhhdAord2hlbiB0aGV5IGZhaWwgdGhl
eSBvbmx5IGFib3J0IHRoZSBfY3VycmVudCBmdW5jdGlvbl8sIG5vdCB0aGUgZW50aXJlIHRlc3Qu
IEZvcgorZXhhbXBsZSwgdGhlIGZvbGxvd2luZyB0ZXN0IHdpbGwgc2VnZmF1bHQ6CisKK2BgYGMr
Kwordm9pZCBTdWJyb3V0aW5lKCkgeworICAvLyBHZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlIGFu
ZCBhYm9ydHMgdGhlIGN1cnJlbnQgZnVuY3Rpb24uCisgIEFTU0VSVF9FUSgxLCAyKTsKKworICAv
LyBUaGUgZm9sbG93aW5nIHdvbid0IGJlIGV4ZWN1dGVkLgorICAuLi4KK30KKworVEVTVChGb29U
ZXN0LCBCYXIpIHsKKyAgU3Vicm91dGluZSgpOyAgLy8gVGhlIGludGVuZGVkIGJlaGF2aW9yIGlz
IGZvciB0aGUgZmF0YWwgZmFpbHVyZQorICAgICAgICAgICAgICAgICAvLyBpbiBTdWJyb3V0aW5l
KCkgdG8gYWJvcnQgdGhlIGVudGlyZSB0ZXN0LgorCisgIC8vIFRoZSBhY3R1YWwgYmVoYXZpb3I6
IHRoZSBmdW5jdGlvbiBnb2VzIG9uIGFmdGVyIFN1YnJvdXRpbmUoKSByZXR1cm5zLgorICBpbnQq
IHAgPSBOVUxMOworICAqcCA9IDM7ICAvLyBTZWdmYXVsdCEKK30KK2BgYAorCitUbyBhbGxldmlh
dGUgdGhpcywgZ29vZ2xldGVzdCBwcm92aWRlcyB0aHJlZSBkaWZmZXJlbnQgc29sdXRpb25zLiBZ
b3UgY291bGQgdXNlCitlaXRoZXIgZXhjZXB0aW9ucywgdGhlIGAoQVNTRVJUfEVYUEVDVClfTk9f
RkFUQUxfRkFJTFVSRWAgYXNzZXJ0aW9ucyBvciB0aGUKK2BIYXNGYXRhbEZhaWx1cmUoKWAgZnVu
Y3Rpb24uIFRoZXkgYXJlIGRlc2NyaWJlZCBpbiB0aGUgZm9sbG93aW5nIHR3bworc3Vic2VjdGlv
bnMuCisKKyMjIyMgQXNzZXJ0aW5nIG9uIFN1YnJvdXRpbmVzIHdpdGggYW4gZXhjZXB0aW9uCisK
K1RoZSBmb2xsb3dpbmcgY29kZSBjYW4gdHVybiBBU1NFUlQtZmFpbHVyZSBpbnRvIGFuIGV4Y2Vw
dGlvbjoKKworYGBgYysrCitjbGFzcyBUaHJvd0xpc3RlbmVyIDogcHVibGljIHRlc3Rpbmc6OkVt
cHR5VGVzdEV2ZW50TGlzdGVuZXIgeworICB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgdGVz
dGluZzo6VGVzdFBhcnRSZXN1bHQmIHJlc3VsdCkgb3ZlcnJpZGUgeworICAgIGlmIChyZXN1bHQu
dHlwZSgpID09IHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlKSB7CisgICAg
ICB0aHJvdyB0ZXN0aW5nOjpBc3NlcnRpb25FeGNlcHRpb24ocmVzdWx0KTsKKyAgICB9CisgIH0K
K307CitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgLi4uCisgIHRlc3Rpbmc6
OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKS5BcHBlbmQobmV3IFRocm93TGlz
dGVuZXIpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQorYGBgCisKK1RoaXMgbGlzdGVu
ZXIgc2hvdWxkIGJlIGFkZGVkIGFmdGVyIG90aGVyIGxpc3RlbmVycyBpZiB5b3UgaGF2ZSBhbnks
IG90aGVyd2lzZQordGhleSB3b24ndCBzZWUgZmFpbGVkIGBPblRlc3RQYXJ0UmVzdWx0YC4KKwor
IyMjIyBBc3NlcnRpbmcgb24gU3Vicm91dGluZXMKKworQXMgc2hvd24gYWJvdmUsIGlmIHlvdXIg
dGVzdCBjYWxscyBhIHN1YnJvdXRpbmUgdGhhdCBoYXMgYW4gYEFTU0VSVF8qYCBmYWlsdXJlCitp
biBpdCwgdGhlIHRlc3Qgd2lsbCBjb250aW51ZSBhZnRlciB0aGUgc3Vicm91dGluZSByZXR1cm5z
LiBUaGlzIG1heSBub3QgYmUgd2hhdAoreW91IHdhbnQuCisKK09mdGVuIHBlb3BsZSB3YW50IGZh
dGFsIGZhaWx1cmVzIHRvIHByb3BhZ2F0ZSBsaWtlIGV4Y2VwdGlvbnMuIEZvciB0aGF0Citnb29n
bGV0ZXN0IG9mZmVycyB0aGUgZm9sbG93aW5nIG1hY3JvczoKKworRmF0YWwgYXNzZXJ0aW9uICAg
ICAgICAgICAgICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAg
ICAgfCBWZXJpZmllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLQorYEFTU0VSVF9O
T19GQVRBTF9GQUlMVVJFKHN0YXRlbWVudCk7YCB8IGBFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRShz
dGF0ZW1lbnQpO2AgfCBgc3RhdGVtZW50YCBkb2Vzbid0IGdlbmVyYXRlIGFueSBuZXcgZmF0YWwg
ZmFpbHVyZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkLgorCitPbmx5IGZhaWx1cmVzIGluIHRoZSB0
aHJlYWQgdGhhdCBleGVjdXRlcyB0aGUgYXNzZXJ0aW9uIGFyZSBjaGVja2VkIHRvIGRldGVybWlu
ZQordGhlIHJlc3VsdCBvZiB0aGlzIHR5cGUgb2YgYXNzZXJ0aW9ucy4gSWYgYHN0YXRlbWVudGAg
Y3JlYXRlcyBuZXcgdGhyZWFkcywKK2ZhaWx1cmVzIGluIHRoZXNlIHRocmVhZHMgYXJlIGlnbm9y
ZWQuCisKK0V4YW1wbGVzOgorCitgYGBjKysKK0FTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEZvbygp
KTsKKworaW50IGk7CitFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRSh7CisgIGkgPSBCYXIoKTsKK30p
OworYGBgCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuIEFzc2VydGlv
bnMgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIGFyZQorY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgb24g
V2luZG93cy4KKworIyMjIyBDaGVja2luZyBmb3IgRmFpbHVyZXMgaW4gdGhlIEN1cnJlbnQgVGVz
dAorCitgSGFzRmF0YWxGYWlsdXJlKClgIGluIHRoZSBgOjp0ZXN0aW5nOjpUZXN0YCBjbGFzcyBy
ZXR1cm5zIGB0cnVlYCBpZiBhbgorYXNzZXJ0aW9uIGluIHRoZSBjdXJyZW50IHRlc3QgaGFzIHN1
ZmZlcmVkIGEgZmF0YWwgZmFpbHVyZS4gVGhpcyBhbGxvd3MKK2Z1bmN0aW9ucyB0byBjYXRjaCBm
YXRhbCBmYWlsdXJlcyBpbiBhIHN1Yi1yb3V0aW5lIGFuZCByZXR1cm4gZWFybHkuCisKK2BgYGMr
KworY2xhc3MgVGVzdCB7CisgcHVibGljOgorICAuLi4KKyAgc3RhdGljIGJvb2wgSGFzRmF0YWxG
YWlsdXJlKCk7Cit9OworYGBgCisKK1RoZSB0eXBpY2FsIHVzYWdlLCB3aGljaCBiYXNpY2FsbHkg
c2ltdWxhdGVzIHRoZSBiZWhhdmlvciBvZiBhIHRocm93biBleGNlcHRpb24sCitpczoKKworYGBg
YysrCitURVNUKEZvb1Rlc3QsIEJhcikgeworICBTdWJyb3V0aW5lKCk7CisgIC8vIEFib3J0cyBp
ZiBTdWJyb3V0aW5lKCkgaGFkIGEgZmF0YWwgZmFpbHVyZS4KKyAgaWYgKEhhc0ZhdGFsRmFpbHVy
ZSgpKSByZXR1cm47CisKKyAgLy8gVGhlIGZvbGxvd2luZyB3b24ndCBiZSBleGVjdXRlZC4KKyAg
Li4uCit9CitgYGAKKworSWYgYEhhc0ZhdGFsRmFpbHVyZSgpYCBpcyB1c2VkIG91dHNpZGUgb2Yg
YFRFU1QoKWAgLCBgVEVTVF9GKClgICwgb3IgYSB0ZXN0CitmaXh0dXJlLCB5b3UgbXVzdCBhZGQg
dGhlIGA6OnRlc3Rpbmc6OlRlc3Q6OmAgcHJlZml4LCBhcyBpbjoKKworYGBgYysrCitpZiAoOjp0
ZXN0aW5nOjpUZXN0OjpIYXNGYXRhbEZhaWx1cmUoKSkgcmV0dXJuOworYGBgCisKK1NpbWlsYXJs
eSwgYEhhc05vbmZhdGFsRmFpbHVyZSgpYCByZXR1cm5zIGB0cnVlYCBpZiB0aGUgY3VycmVudCB0
ZXN0IGhhcyBhdAorbGVhc3Qgb25lIG5vbi1mYXRhbCBmYWlsdXJlLCBhbmQgYEhhc0ZhaWx1cmUo
KWAgcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGN1cnJlbnQKK3Rlc3QgaGFzIGF0IGxlYXN0IG9uZSBm
YWlsdXJlIG9mIGVpdGhlciBraW5kLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93
cywgTWFjLgorCisjIyBMb2dnaW5nIEFkZGl0aW9uYWwgSW5mb3JtYXRpb24KKworSW4geW91ciB0
ZXN0IGNvZGUsIHlvdSBjYW4gY2FsbCBgUmVjb3JkUHJvcGVydHkoImtleSIsIHZhbHVlKWAgdG8g
bG9nIGFkZGl0aW9uYWwKK2luZm9ybWF0aW9uLCB3aGVyZSBgdmFsdWVgIGNhbiBiZSBlaXRoZXIg
YSBzdHJpbmcgb3IgYW4gYGludGAuIFRoZSAqbGFzdCogdmFsdWUKK3JlY29yZGVkIGZvciBhIGtl
eSB3aWxsIGJlIGVtaXR0ZWQgdG8gdGhlIFtYTUwgb3V0cHV0XSgjZ2VuZXJhdGluZy1hbi14bWwt
cmVwb3J0KSBpZiB5b3UKK3NwZWNpZnkgb25lLiBGb3IgZXhhbXBsZSwgdGhlIHRlc3QKKworYGBg
YysrCitURVNUX0YoV2lkZ2V0VXNhZ2VUZXN0LCBNaW5BbmRNYXhXaWRnZXRzKSB7CisgIFJlY29y
ZFByb3BlcnR5KCJNYXhpbXVtV2lkZ2V0cyIsIENvbXB1dGVNYXhVc2FnZSgpKTsKKyAgUmVjb3Jk
UHJvcGVydHkoIk1pbmltdW1XaWRnZXRzIiwgQ29tcHV0ZU1pblVzYWdlKCkpOworfQorYGBgCisK
K3dpbGwgb3V0cHV0IFhNTCBsaWtlIHRoaXM6CisKK2BgYHhtbAorICAuLi4KKyAgICA8dGVzdGNh
c2UgbmFtZT0iTWluQW5kTWF4V2lkZ2V0cyIgc3RhdHVzPSJydW4iIHRpbWU9IjAuMDA2IiBjbGFz
c25hbWU9IldpZGdldFVzYWdlVGVzdCIgTWF4aW11bVdpZGdldHM9IjEyIiBNaW5pbXVtV2lkZ2V0
cz0iOSIgLz4KKyAgLi4uCitgYGAKKworPiBOT1RFOgorPgorPiAqICAgYFJlY29yZFByb3BlcnR5
KClgIGlzIGEgc3RhdGljIG1lbWJlciBvZiB0aGUgYFRlc3RgIGNsYXNzLiBUaGVyZWZvcmUgaXQK
Kz4gICAgIG5lZWRzIHRvIGJlIHByZWZpeGVkIHdpdGggYDo6dGVzdGluZzo6VGVzdDo6YCBpZiB1
c2VkIG91dHNpZGUgb2YgdGhlCis+ICAgICBgVEVTVGAgYm9keSBhbmQgdGhlIHRlc3QgZml4dHVy
ZSBjbGFzcy4KKz4gKiAgIGAqa2V5KmAgbXVzdCBiZSBhIHZhbGlkIFhNTCBhdHRyaWJ1dGUgbmFt
ZSwgYW5kIGNhbm5vdCBjb25mbGljdCB3aXRoIHRoZQorPiAgICAgb25lcyBhbHJlYWR5IHVzZWQg
YnkgZ29vZ2xldGVzdCAoYG5hbWVgLCBgc3RhdHVzYCwgYHRpbWVgLCBgY2xhc3NuYW1lYCwKKz4g
ICAgIGB0eXBlX3BhcmFtYCwgYW5kIGB2YWx1ZV9wYXJhbWApLgorPiAqICAgQ2FsbGluZyBgUmVj
b3JkUHJvcGVydHkoKWAgb3V0c2lkZSBvZiB0aGUgbGlmZXNwYW4gb2YgYSB0ZXN0IGlzIGFsbG93
ZWQuCis+ICAgICBJZiBpdCdzIGNhbGxlZCBvdXRzaWRlIG9mIGEgdGVzdCBidXQgYmV0d2VlbiBh
IHRlc3QgY2FzZSdzCis+ICAgICBgU2V0VXBUZXN0Q2FzZSgpYCBhbmQgYFRlYXJEb3duVGVzdENh
c2UoKWAgbWV0aG9kcywgaXQgd2lsbCBiZSBhdHRyaWJ1dGVkCis+ICAgICB0byB0aGUgWE1MIGVs
ZW1lbnQgZm9yIHRoZSB0ZXN0IGNhc2UuIElmIGl0J3MgY2FsbGVkIG91dHNpZGUgb2YgYWxsIHRl
c3QKKz4gICAgIGNhc2VzIChlLmcuIGluIGEgdGVzdCBlbnZpcm9ubWVudCksIGl0IHdpbGwgYmUg
YXR0cmlidXRlZCB0byB0aGUgdG9wLWxldmVsCis+ICAgICBYTUwgZWxlbWVudC4KKworKipBdmFp
bGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgU2hhcmluZyBSZXNvdXJjZXMg
QmV0d2VlbiBUZXN0cyBpbiB0aGUgU2FtZSBUZXN0IENhc2UKKworZ29vZ2xldGVzdCBjcmVhdGVz
IGEgbmV3IHRlc3QgZml4dHVyZSBvYmplY3QgZm9yIGVhY2ggdGVzdCBpbiBvcmRlciB0byBtYWtl
Cit0ZXN0cyBpbmRlcGVuZGVudCBhbmQgZWFzaWVyIHRvIGRlYnVnLiBIb3dldmVyLCBzb21ldGlt
ZXMgdGVzdHMgdXNlIHJlc291cmNlcwordGhhdCBhcmUgZXhwZW5zaXZlIHRvIHNldCB1cCwgbWFr
aW5nIHRoZSBvbmUtY29weS1wZXItdGVzdCBtb2RlbCBwcm9oaWJpdGl2ZWx5CitleHBlbnNpdmUu
CisKK0lmIHRoZSB0ZXN0cyBkb24ndCBjaGFuZ2UgdGhlIHJlc291cmNlLCB0aGVyZSdzIG5vIGhh
cm0gaW4gdGhlaXIgc2hhcmluZyBhCitzaW5nbGUgcmVzb3VyY2UgY29weS4gU28sIGluIGFkZGl0
aW9uIHRvIHBlci10ZXN0IHNldC11cC90ZWFyLWRvd24sIGdvb2dsZXRlc3QKK2Fsc28gc3VwcG9y
dHMgcGVyLXRlc3QtY2FzZSBzZXQtdXAvdGVhci1kb3duLiBUbyB1c2UgaXQ6CisKKzEuICBJbiB5
b3VyIHRlc3QgZml4dHVyZSBjbGFzcyAoc2F5IGBGb29UZXN0YCApLCBkZWNsYXJlIGFzIGBzdGF0
aWNgIHNvbWUgbWVtYmVyCisgICAgdmFyaWFibGVzIHRvIGhvbGQgdGhlIHNoYXJlZCByZXNvdXJj
ZXMuCisxLiAgT3V0c2lkZSB5b3VyIHRlc3QgZml4dHVyZSBjbGFzcyAodHlwaWNhbGx5IGp1c3Qg
YmVsb3cgaXQpLCBkZWZpbmUgdGhvc2UKKyAgICBtZW1iZXIgdmFyaWFibGVzLCBvcHRpb25hbGx5
IGdpdmluZyB0aGVtIGluaXRpYWwgdmFsdWVzLgorMS4gIEluIHRoZSBzYW1lIHRlc3QgZml4dHVy
ZSBjbGFzcywgZGVmaW5lIGEgYHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKWAKKyAgICBmdW5j
dGlvbiAocmVtZW1iZXIgbm90IHRvIHNwZWxsIGl0IGFzICoqYFNldHVwVGVzdENhc2VgKiogd2l0
aCBhIHNtYWxsIGB1YCEpCisgICAgdG8gc2V0IHVwIHRoZSBzaGFyZWQgcmVzb3VyY2VzIGFuZCBh
IGBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKClgCisgICAgZnVuY3Rpb24gdG8gdGVhciB0
aGVtIGRvd24uCisKK1RoYXQncyBpdCEgZ29vZ2xldGVzdCBhdXRvbWF0aWNhbGx5IGNhbGxzIGBT
ZXRVcFRlc3RDYXNlKClgIGJlZm9yZSBydW5uaW5nIHRoZQorKmZpcnN0IHRlc3QqIGluIHRoZSBg
Rm9vVGVzdGAgdGVzdCBjYXNlIChpLmUuIGJlZm9yZSBjcmVhdGluZyB0aGUgZmlyc3QKK2BGb29U
ZXN0YCBvYmplY3QpLCBhbmQgY2FsbHMgYFRlYXJEb3duVGVzdENhc2UoKWAgYWZ0ZXIgcnVubmlu
ZyB0aGUgKmxhc3QgdGVzdCoKK2luIGl0IChpLmUuIGFmdGVyIGRlbGV0aW5nIHRoZSBsYXN0IGBG
b29UZXN0YCBvYmplY3QpLiBJbiBiZXR3ZWVuLCB0aGUgdGVzdHMgY2FuCit1c2UgdGhlIHNoYXJl
ZCByZXNvdXJjZXMuCisKK1JlbWVtYmVyIHRoYXQgdGhlIHRlc3Qgb3JkZXIgaXMgdW5kZWZpbmVk
LCBzbyB5b3VyIGNvZGUgY2FuJ3QgZGVwZW5kIG9uIGEgdGVzdAorcHJlY2VkaW5nIG9yIGZvbGxv
d2luZyBhbm90aGVyLiBBbHNvLCB0aGUgdGVzdHMgbXVzdCBlaXRoZXIgbm90IG1vZGlmeSB0aGUg
c3RhdGUKK29mIGFueSBzaGFyZWQgcmVzb3VyY2UsIG9yLCBpZiB0aGV5IGRvIG1vZGlmeSB0aGUg
c3RhdGUsIHRoZXkgbXVzdCByZXN0b3JlIHRoZQorc3RhdGUgdG8gaXRzIG9yaWdpbmFsIHZhbHVl
IGJlZm9yZSBwYXNzaW5nIGNvbnRyb2wgdG8gdGhlIG5leHQgdGVzdC4KKworSGVyZSdzIGFuIGV4
YW1wbGUgb2YgcGVyLXRlc3QtY2FzZSBzZXQtdXAgYW5kIHRlYXItZG93bjoKKworYGBgYysrCitj
bGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAv
LyBQZXItdGVzdC1jYXNlIHNldC11cC4KKyAgLy8gQ2FsbGVkIGJlZm9yZSB0aGUgZmlyc3QgdGVz
dCBpbiB0aGlzIHRlc3QgY2FzZS4KKyAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90IG5lZWRlZC4K
KyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKKyAgICBzaGFyZWRfcmVzb3VyY2VfID0g
bmV3IC4uLjsKKyAgfQorCisgIC8vIFBlci10ZXN0LWNhc2UgdGVhci1kb3duLgorICAvLyBDYWxs
ZWQgYWZ0ZXIgdGhlIGxhc3QgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZS4KKyAgLy8gQ2FuIGJlIG9t
aXR0ZWQgaWYgbm90IG5lZWRlZC4KKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsK
KyAgICBkZWxldGUgc2hhcmVkX3Jlc291cmNlXzsKKyAgICBzaGFyZWRfcmVzb3VyY2VfID0gTlVM
TDsKKyAgfQorCisgIC8vIFlvdSBjYW4gZGVmaW5lIHBlci10ZXN0IHNldC11cCBsb2dpYyBhcyB1
c3VhbC4KKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeyAuLi4gfQorCisgIC8vIFlvdSBjYW4gZGVm
aW5lIHBlci10ZXN0IHRlYXItZG93biBsb2dpYyBhcyB1c3VhbC4KKyAgdmlydHVhbCB2b2lkIFRl
YXJEb3duKCkgeyAuLi4gfQorCisgIC8vIFNvbWUgZXhwZW5zaXZlIHJlc291cmNlIHNoYXJlZCBi
eSBhbGwgdGVzdHMuCisgIHN0YXRpYyBUKiBzaGFyZWRfcmVzb3VyY2VfOworfTsKKworVCogRm9v
VGVzdDo6c2hhcmVkX3Jlc291cmNlXyA9IE5VTEw7CisKK1RFU1RfRihGb29UZXN0LCBUZXN0MSkg
eworICAuLi4geW91IGNhbiByZWZlciB0byBzaGFyZWRfcmVzb3VyY2VfIGhlcmUgLi4uCit9CisK
K1RFU1RfRihGb29UZXN0LCBUZXN0MikgeworICAuLi4geW91IGNhbiByZWZlciB0byBzaGFyZWRf
cmVzb3VyY2VfIGhlcmUgLi4uCit9CitgYGAKKworTk9URTogVGhvdWdoIHRoZSBhYm92ZSBjb2Rl
IGRlY2xhcmVzIGBTZXRVcFRlc3RDYXNlKClgIHByb3RlY3RlZCwgaXQgbWF5Citzb21ldGltZXMg
YmUgbmVjZXNzYXJ5IHRvIGRlY2xhcmUgaXQgcHVibGljLCBzdWNoIGFzIHdoZW4gdXNpbmcgaXQg
d2l0aAorYFRFU1RfUGAuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKKyMjIEdsb2JhbCBTZXQtVXAgYW5kIFRlYXItRG93bgorCitKdXN0IGFzIHlvdSBjYW4gZG8g
c2V0LXVwIGFuZCB0ZWFyLWRvd24gYXQgdGhlIHRlc3QgbGV2ZWwgYW5kIHRoZSB0ZXN0IGNhc2UK
K2xldmVsLCB5b3UgY2FuIGFsc28gZG8gaXQgYXQgdGhlIHRlc3QgcHJvZ3JhbSBsZXZlbC4gSGVy
ZSdzIGhvdy4KKworRmlyc3QsIHlvdSBzdWJjbGFzcyB0aGUgYDo6dGVzdGluZzo6RW52aXJvbm1l
bnRgIGNsYXNzIHRvIGRlZmluZSBhIHRlc3QKK2Vudmlyb25tZW50LCB3aGljaCBrbm93cyBob3cg
dG8gc2V0LXVwIGFuZCB0ZWFyLWRvd246CisKK2BgYGMrKworY2xhc3MgRW52aXJvbm1lbnQgewor
IHB1YmxpYzoKKyAgdmlydHVhbCB+RW52aXJvbm1lbnQoKSB7fQorCisgIC8vIE92ZXJyaWRlIHRo
aXMgdG8gZGVmaW5lIGhvdyB0byBzZXQgdXAgdGhlIGVudmlyb25tZW50LgorICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKSB7fQorCisgIC8vIE92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGhvdyB0byB0ZWFy
IGRvd24gdGhlIGVudmlyb25tZW50LgorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7fQorfTsK
K2BgYAorCitUaGVuLCB5b3UgcmVnaXN0ZXIgYW4gaW5zdGFuY2Ugb2YgeW91ciBlbnZpcm9ubWVu
dCBjbGFzcyB3aXRoIGdvb2dsZXRlc3QgYnkKK2NhbGxpbmcgdGhlIGA6OnRlc3Rpbmc6OkFkZEds
b2JhbFRlc3RFbnZpcm9ubWVudCgpYCBmdW5jdGlvbjoKKworYGBgYysrCitFbnZpcm9ubWVudCog
QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KEVudmlyb25tZW50KiBlbnYpOworYGBgCisKK05vdywg
d2hlbiBgUlVOX0FMTF9URVNUUygpYCBpcyBjYWxsZWQsIGl0IGZpcnN0IGNhbGxzIHRoZSBgU2V0
VXAoKWAgbWV0aG9kIG9mCit0aGUgZW52aXJvbm1lbnQgb2JqZWN0LCB0aGVuIHJ1bnMgdGhlIHRl
c3RzIGlmIHRoZXJlIHdhcyBubyBmYXRhbCBmYWlsdXJlcywgYW5kCitmaW5hbGx5IGNhbGxzIGBU
ZWFyRG93bigpYCBvZiB0aGUgZW52aXJvbm1lbnQgb2JqZWN0LgorCitJdCdzIE9LIHRvIHJlZ2lz
dGVyIG11bHRpcGxlIGVudmlyb25tZW50IG9iamVjdHMuIEluIHRoaXMgY2FzZSwgdGhlaXIgYFNl
dFVwKClgCit3aWxsIGJlIGNhbGxlZCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgcmVnaXN0ZXJlZCwg
YW5kIHRoZWlyIGBUZWFyRG93bigpYCB3aWxsIGJlCitjYWxsZWQgaW4gdGhlIHJldmVyc2Ugb3Jk
ZXIuCisKK05vdGUgdGhhdCBnb29nbGV0ZXN0IHRha2VzIG93bmVyc2hpcCBvZiB0aGUgcmVnaXN0
ZXJlZCBlbnZpcm9ubWVudCBvYmplY3RzLgorVGhlcmVmb3JlICoqZG8gbm90IGRlbGV0ZSB0aGVt
KiogYnkgeW91cnNlbGYuCisKK1lvdSBzaG91bGQgY2FsbCBgQWRkR2xvYmFsVGVzdEVudmlyb25t
ZW50KClgIGJlZm9yZSBgUlVOX0FMTF9URVNUUygpYCBpcyBjYWxsZWQsCitwcm9iYWJseSBpbiBg
bWFpbigpYC4gSWYgeW91IHVzZSBgZ3Rlc3RfbWFpbmAsIHlvdSBuZWVkIHRvIGNhbGwgdGhpcyBi
ZWZvcmUKK2BtYWluKClgIHN0YXJ0cyBmb3IgaXQgdG8gdGFrZSBlZmZlY3QuIE9uZSB3YXkgdG8g
ZG8gdGhpcyBpcyB0byBkZWZpbmUgYSBnbG9iYWwKK3ZhcmlhYmxlIGxpa2UgdGhpczoKKworYGBg
YysrCis6OnRlc3Rpbmc6OkVudmlyb25tZW50KiBjb25zdCBmb29fZW52ID0KKyAgICA6OnRlc3Rp
bmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgRm9vRW52aXJvbm1lbnQpOworYGBgCisK
K0hvd2V2ZXIsIHdlIHN0cm9uZ2x5IHJlY29tbWVuZCB5b3UgdG8gd3JpdGUgeW91ciBvd24gYG1h
aW4oKWAgYW5kIGNhbGwKK2BBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgdGhlcmUsIGFzIHJl
bHlpbmcgb24gaW5pdGlhbGl6YXRpb24gb2YgZ2xvYmFsCit2YXJpYWJsZXMgbWFrZXMgdGhlIGNv
ZGUgaGFyZGVyIHRvIHJlYWQgYW5kIG1heSBjYXVzZSBwcm9ibGVtcyB3aGVuIHlvdSByZWdpc3Rl
cgorbXVsdGlwbGUgZW52aXJvbm1lbnRzIGZyb20gZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXRz
IGFuZCB0aGUgZW52aXJvbm1lbnRzIGhhdmUKK2RlcGVuZGVuY2llcyBhbW9uZyB0aGVtIChyZW1l
bWJlciB0aGF0IHRoZSBjb21waWxlciBkb2Vzbid0IGd1YXJhbnRlZSB0aGUgb3JkZXIKK2luIHdo
aWNoIGdsb2JhbCB2YXJpYWJsZXMgZnJvbSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMgYXJl
IGluaXRpYWxpemVkKS4KKworIyMgVmFsdWUtUGFyYW1ldGVyaXplZCBUZXN0cworCisqVmFsdWUt
cGFyYW1ldGVyaXplZCB0ZXN0cyogYWxsb3cgeW91IHRvIHRlc3QgeW91ciBjb2RlIHdpdGggZGlm
ZmVyZW50CitwYXJhbWV0ZXJzIHdpdGhvdXQgd3JpdGluZyBtdWx0aXBsZSBjb3BpZXMgb2YgdGhl
IHNhbWUgdGVzdC4gVGhpcyBpcyB1c2VmdWwgaW4gYQorbnVtYmVyIG9mIHNpdHVhdGlvbnMsIGZv
ciBleGFtcGxlOgorCisqICAgWW91IGhhdmUgYSBwaWVjZSBvZiBjb2RlIHdob3NlIGJlaGF2aW9y
IGlzIGFmZmVjdGVkIGJ5IG9uZSBvciBtb3JlCisgICAgY29tbWFuZC1saW5lIGZsYWdzLiBZb3Ug
d2FudCB0byBtYWtlIHN1cmUgeW91ciBjb2RlIHBlcmZvcm1zIGNvcnJlY3RseSBmb3IKKyAgICB2
YXJpb3VzIHZhbHVlcyBvZiB0aG9zZSBmbGFncy4KKyogICBZb3Ugd2FudCB0byB0ZXN0IGRpZmZl
cmVudCBpbXBsZW1lbnRhdGlvbnMgb2YgYW4gT08gaW50ZXJmYWNlLgorKiAgIFlvdSB3YW50IHRv
IHRlc3QgeW91ciBjb2RlIG92ZXIgdmFyaW91cyBpbnB1dHMgKGEuay5hLiBkYXRhLWRyaXZlbiB0
ZXN0aW5nKS4KKyAgICBUaGlzIGZlYXR1cmUgaXMgZWFzeSB0byBhYnVzZSwgc28gcGxlYXNlIGV4
ZXJjaXNlIHlvdXIgZ29vZCBzZW5zZSB3aGVuIGRvaW5nCisgICAgaXQhCisKKyMjIyBIb3cgdG8g
V3JpdGUgVmFsdWUtUGFyYW1ldGVyaXplZCBUZXN0cworCitUbyB3cml0ZSB2YWx1ZS1wYXJhbWV0
ZXJpemVkIHRlc3RzLCBmaXJzdCB5b3Ugc2hvdWxkIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MuIEl0
CittdXN0IGJlIGRlcml2ZWQgZnJvbSBib3RoIGA6OnRlc3Rpbmc6OlRlc3RgIGFuZAorYDo6dGVz
dGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPFQ+YCAodGhlIGxhdHRlciBpcyBhIHB1cmUgaW50ZXJm
YWNlKSwgd2hlcmUgYFRgCitpcyB0aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuIEZv
ciBjb252ZW5pZW5jZSwgeW91IGNhbiBqdXN0IGRlcml2ZSB0aGUKK2ZpeHR1cmUgY2xhc3MgZnJv
bSBgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPFQ+YCwgd2hpY2ggaXRzZWxmIGlzIGRlcml2ZWQg
ZnJvbQorYm90aCBgOjp0ZXN0aW5nOjpUZXN0YCBhbmQgYDo6dGVzdGluZzo6V2l0aFBhcmFtSW50
ZXJmYWNlPFQ+YC4gYFRgIGNhbiBiZSBhbnkKK2NvcHlhYmxlIHR5cGUuIElmIGl0J3MgYSByYXcg
cG9pbnRlciwgeW91IGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlCitsaWZlc3BhbiBv
ZiB0aGUgcG9pbnRlZCB2YWx1ZXMuCisKK05PVEU6IElmIHlvdXIgdGVzdCBmaXh0dXJlIGRlZmlu
ZXMgYFNldFVwVGVzdENhc2UoKWAgb3IgYFRlYXJEb3duVGVzdENhc2UoKWAKK3RoZXkgbXVzdCBi
ZSBkZWNsYXJlZCAqKnB1YmxpYyoqIHJhdGhlciB0aGFuICoqcHJvdGVjdGVkKiogaW4gb3JkZXIg
dG8gdXNlCitgVEVTVF9QYC4KKworYGBgYysrCitjbGFzcyBGb29UZXN0IDoKKyAgICBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGNvbnN0IGNoYXIqPiB7CisgIC8vIFlvdSBjYW4gaW1w
bGVtZW50IGFsbCB0aGUgdXN1YWwgZml4dHVyZSBjbGFzcyBtZW1iZXJzIGhlcmUuCisgIC8vIFRv
IGFjY2VzcyB0aGUgdGVzdCBwYXJhbWV0ZXIsIGNhbGwgR2V0UGFyYW0oKSBmcm9tIGNsYXNzCisg
IC8vIFRlc3RXaXRoUGFyYW08VD4uCit9OworCisvLyBPciwgd2hlbiB5b3Ugd2FudCB0byBhZGQg
cGFyYW1ldGVycyB0byBhIHByZS1leGlzdGluZyBmaXh0dXJlIGNsYXNzOgorY2xhc3MgQmFzZVRl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyAgLi4uCit9OworY2xhc3MgQmFyVGVzdCA6
IHB1YmxpYyBCYXNlVGVzdCwKKyAgICAgICAgICAgICAgICBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRo
UGFyYW1JbnRlcmZhY2U8Y29uc3QgY2hhcio+IHsKKyAgLi4uCit9OworYGBgCisKK1RoZW4sIHVz
ZSB0aGUgYFRFU1RfUGAgbWFjcm8gdG8gZGVmaW5lIGFzIG1hbnkgdGVzdCBwYXR0ZXJucyB1c2lu
ZyB0aGlzIGZpeHR1cmUKK2FzIHlvdSB3YW50LiBUaGUgYF9QYCBzdWZmaXggaXMgZm9yICJwYXJh
bWV0ZXJpemVkIiBvciAicGF0dGVybiIsIHdoaWNoZXZlciB5b3UKK3ByZWZlciB0byB0aGluay4K
KworYGBgYysrCitURVNUX1AoRm9vVGVzdCwgRG9lc0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVz
dCwgYWNjZXNzIHRoZSB0ZXN0IHBhcmFtZXRlciB3aXRoIHRoZSBHZXRQYXJhbSgpIG1ldGhvZAor
ICAvLyBvZiB0aGUgVGVzdFdpdGhQYXJhbTxUPiBjbGFzczoKKyAgRVhQRUNUX1RSVUUoZm9vLkJs
YWgoR2V0UGFyYW0oKSkpOworICAuLi4KK30KKworVEVTVF9QKEZvb1Rlc3QsIEhhc0JsYWhCbGFo
KSB7CisgIC4uLgorfQorYGBgCisKK0ZpbmFsbHksIHlvdSBjYW4gdXNlIGBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUGAgdG8gaW5zdGFudGlhdGUgdGhlIHRlc3QgY2FzZSB3aXRoCithbnkgc2V0IG9m
IHBhcmFtZXRlcnMgeW91IHdhbnQuIGdvb2dsZXRlc3QgZGVmaW5lcyBhIG51bWJlciBvZiBmdW5j
dGlvbnMgZm9yCitnZW5lcmF0aW5nIHRlc3QgcGFyYW1ldGVycy4gVGhleSByZXR1cm4gd2hhdCB3
ZSBjYWxsIChzdXJwcmlzZSEpICpwYXJhbWV0ZXIKK2dlbmVyYXRvcnMqLiBIZXJlIGlzIGEgc3Vt
bWFyeSBvZiB0aGVtLCB3aGljaCBhcmUgYWxsIGluIHRoZSBgdGVzdGluZ2AKK25hbWVzcGFjZToK
KworfCBQYXJhbWV0ZXIgR2VuZXJhdG9yICAgICAgICAgIHwgQmVoYXZpb3IgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8Cit8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
fCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKK3wgYFJhbmdl
KGJlZ2luLCBlbmQgWywgc3RlcF0pYCB8IFlpZWxkcyB2YWx1ZXMgYHtiZWdpbiwgYmVnaW4rc3Rl
cCwgYmVnaW4rc3RlcCtzdGVwLCAuLi59YC4gVGhlIHZhbHVlcyBkbyBub3QgaW5jbHVkZSBgZW5k
YC4gYHN0ZXBgIGRlZmF1bHRzIHRvIDEuICAgICAgfAorfCBgVmFsdWVzKHYxLCB2MiwgLi4uLCB2
TilgICAgIHwgWWllbGRzIHZhbHVlcyBge3YxLCB2MiwgLi4uLCB2Tn1gLiAgICAgICAgICB8Cit8
IGBWYWx1ZXNJbihjb250YWluZXIpYCBhbmQgYFZhbHVlc0luKGJlZ2luLGVuZClgICAgfCBZaWVs
ZHMgdmFsdWVzIGZyb20gYSBDLXN0eWxlIGFycmF5LCBhbiBTVEwtc3R5bGUgY29udGFpbmVyLCBv
ciBhbiBpdGVyYXRvciByYW5nZSAgYFtiZWdpbiwgZW5kKWAuIHwKK3wgYEJvb2woKWAgICAgICAg
ICAgICAgICAgICAgICB8IFlpZWxkcyBzZXF1ZW5jZSBge2ZhbHNlLCB0cnVlfWAuICAgICAgICAg
ICAgfAorfCBgQ29tYmluZShnMSwgZzIsIC4uLiwgZ04pYCAgIHwgWWllbGRzIGFsbCBjb21iaW5h
dGlvbnMgKENhcnRlc2lhbiBwcm9kdWN0KSBhcyBzdGRcOlw6dHVwbGVzIG9mIHRoZSB2YWx1ZXMg
Z2VuZXJhdGVkIGJ5IHRoZSBgTmAgZ2VuZXJhdG9ycy4gICAgICAgICAgICB8CisKK0ZvciBtb3Jl
IGRldGFpbHMsIHNlZSB0aGUgY29tbWVudHMgYXQgdGhlIGRlZmluaXRpb25zIG9mIHRoZXNlIGZ1
bmN0aW9ucy4KKworVGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgd2lsbCBpbnN0YW50aWF0ZSB0ZXN0
cyBmcm9tIHRoZSBgRm9vVGVzdGAgdGVzdCBjYXNlIGVhY2gKK3dpdGggcGFyYW1ldGVyIHZhbHVl
cyBgIm1lZW55ImAsIGAibWlueSJgLCBhbmQgYCJtb2UiYC4KKworYGBgYysrCitJTlNUQU5USUFU
RV9URVNUX0NBU0VfUChJbnN0YW50aWF0aW9uTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IEZvb1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygibWVl
bnkiLCAibWlueSIsICJtb2UiKSk7CitgYGAKKworTk9URTogVGhlIGNvZGUgYWJvdmUgbXVzdCBi
ZSBwbGFjZWQgYXQgZ2xvYmFsIG9yIG5hbWVzcGFjZSBzY29wZSwgbm90IGF0CitmdW5jdGlvbiBz
Y29wZS4KKworTk9URTogRG9uJ3QgZm9yZ2V0IHRoaXMgc3RlcCEgSWYgeW91IGRvIHlvdXIgdGVz
dCB3aWxsIHNpbGVudGx5IHBhc3MsIGJ1dCBub25lCitvZiBpdHMgY2FzZXMgd2lsbCBldmVyIHJ1
biEKKworVG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50IGluc3RhbmNlcyBvZiB0aGUgcGF0dGVybiAo
eWVzLCB5b3UgY2FuIGluc3RhbnRpYXRlIGl0Cittb3JlIHRoYW4gb25jZSksIHRoZSBmaXJzdCBh
cmd1bWVudCB0byBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIGlzIGEgcHJlZml4Cit0aGF0IHdp
bGwgYmUgYWRkZWQgdG8gdGhlIGFjdHVhbCB0ZXN0IGNhc2UgbmFtZS4gUmVtZW1iZXIgdG8gcGlj
ayB1bmlxdWUKK3ByZWZpeGVzIGZvciBkaWZmZXJlbnQgaW5zdGFudGlhdGlvbnMuIFRoZSB0ZXN0
cyBmcm9tIHRoZSBpbnN0YW50aWF0aW9uIGFib3ZlCit3aWxsIGhhdmUgdGhlc2UgbmFtZXM6CisK
KyogICBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8wYCBmb3IgYCJtZWVueSJg
CisqICAgYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMWAgZm9yIGAibWlueSJg
CisqICAgYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMmAgZm9yIGAibW9lImAK
KyogICBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8wYCBmb3IgYCJtZWVu
eSJgCisqICAgYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMWAgZm9yIGAi
bWlueSJgCisqICAgYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMmAgZm9y
IGAibW9lImAKKworWW91IGNhbiB1c2UgdGhlc2UgbmFtZXMgaW4gW2AtLWd0ZXN0X2ZpbHRlcmBd
KCNydW5uaW5nLWEtc3Vic2V0LW9mLXRoZS10ZXN0cykuCisKK1RoaXMgc3RhdGVtZW50IHdpbGwg
aW5zdGFudGlhdGUgYWxsIHRlc3RzIGZyb20gYEZvb1Rlc3RgIGFnYWluLCBlYWNoIHdpdGgKK3Bh
cmFtZXRlciB2YWx1ZXMgYCJjYXQiYCBhbmQgYCJkb2ciYDoKKworYGBgYysrCitjb25zdCBjaGFy
KiBwZXRzW10gPSB7ImNhdCIsICJkb2cifTsKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFub3Ro
ZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6
dGVzdGluZzo6VmFsdWVzSW4ocGV0cykpOworYGBgCisKK1RoZSB0ZXN0cyBmcm9tIHRoZSBpbnN0
YW50aWF0aW9uIGFib3ZlIHdpbGwgaGF2ZSB0aGVzZSBuYW1lczoKKworKiAgIGBBbm90aGVySW5z
dGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8wYCBmb3IgYCJjYXQiYAorKiAgIGBBbm90
aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8xYCBmb3IgYCJkb2ciYAorKiAg
IGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8wYCBmb3IgYCJj
YXQiYAorKiAgIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8x
YCBmb3IgYCJkb2ciYAorCitQbGVhc2Ugbm90ZSB0aGF0IGBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UGAgd2lsbCBpbnN0YW50aWF0ZSAqYWxsKiB0ZXN0cyBpbiB0aGUKK2dpdmVuIHRlc3QgY2FzZSwg
d2hldGhlciB0aGVpciBkZWZpbml0aW9ucyBjb21lIGJlZm9yZSBvciAqYWZ0ZXIqIHRoZQorYElO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCBzdGF0ZW1lbnQuCisKK1lvdSBjYW4gc2VlIHNhbXBsZTdf
dW5pdHRlc3QuY2MgYW5kIHNhbXBsZThfdW5pdHRlc3QuY2MgZm9yIG1vcmUgZXhhbXBsZXMuCisK
KyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBh
Ym92ZSksIE1hYworCisjIyMgQ3JlYXRpbmcgVmFsdWUtUGFyYW1ldGVyaXplZCBBYnN0cmFjdCBU
ZXN0cworCitJbiB0aGUgYWJvdmUsIHdlIGRlZmluZSBhbmQgaW5zdGFudGlhdGUgYEZvb1Rlc3Rg
IGluIHRoZSAqc2FtZSogc291cmNlIGZpbGUuCitTb21ldGltZXMgeW91IG1heSB3YW50IHRvIGRl
ZmluZSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGluIGEgbGlicmFyeSBhbmQgbGV0CitvdGhl
ciBwZW9wbGUgaW5zdGFudGlhdGUgdGhlbSBsYXRlci4gVGhpcyBwYXR0ZXJuIGlzIGtub3duIGFz
ICphYnN0cmFjdCB0ZXN0cyouCitBcyBhbiBleGFtcGxlIG9mIGl0cyBhcHBsaWNhdGlvbiwgd2hl
biB5b3UgYXJlIGRlc2lnbmluZyBhbiBpbnRlcmZhY2UgeW91IGNhbgord3JpdGUgYSBzdGFuZGFy
ZCBzdWl0ZSBvZiBhYnN0cmFjdCB0ZXN0cyAocGVyaGFwcyB1c2luZyBhIGZhY3RvcnkgZnVuY3Rp
b24gYXMKK3RoZSB0ZXN0IHBhcmFtZXRlcikgdGhhdCBhbGwgaW1wbGVtZW50YXRpb25zIG9mIHRo
ZSBpbnRlcmZhY2UgYXJlIGV4cGVjdGVkIHRvCitwYXNzLiBXaGVuIHNvbWVvbmUgaW1wbGVtZW50
cyB0aGUgaW50ZXJmYWNlLCB0aGV5IGNhbiBpbnN0YW50aWF0ZSB5b3VyIHN1aXRlIHRvCitnZXQg
YWxsIHRoZSBpbnRlcmZhY2UtY29uZm9ybWFuY2UgdGVzdHMgZm9yIGZyZWUuCisKK1RvIGRlZmlu
ZSBhYnN0cmFjdCB0ZXN0cywgeW91IHNob3VsZCBvcmdhbml6ZSB5b3VyIGNvZGUgbGlrZSB0aGlz
OgorCisxLiAgUHV0IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBwYXJhbWV0ZXJpemVkIHRlc3QgZml4
dHVyZSBjbGFzcyAoZS5nLiBgRm9vVGVzdGApCisgICAgaW4gYSBoZWFkZXIgZmlsZSwgc2F5IGBm
b29fcGFyYW1fdGVzdC5oYC4gVGhpbmsgb2YgdGhpcyBhcyAqZGVjbGFyaW5nKiB5b3VyCisgICAg
YWJzdHJhY3QgdGVzdHMuCisxLiAgUHV0IHRoZSBgVEVTVF9QYCBkZWZpbml0aW9ucyBpbiBgZm9v
X3BhcmFtX3Rlc3QuY2NgLCB3aGljaCBpbmNsdWRlcworICAgIGBmb29fcGFyYW1fdGVzdC5oYC4g
VGhpbmsgb2YgdGhpcyBhcyAqaW1wbGVtZW50aW5nKiB5b3VyIGFic3RyYWN0IHRlc3RzLgorCitP
bmNlIHRoZXkgYXJlIGRlZmluZWQsIHlvdSBjYW4gaW5zdGFudGlhdGUgdGhlbSBieSBpbmNsdWRp
bmcgYGZvb19wYXJhbV90ZXN0LmhgLAoraW52b2tpbmcgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KClgLCBhbmQgZGVwZW5kaW5nIG9uIHRoZSBsaWJyYXJ5IHRhcmdldCB0aGF0Citjb250YWlucyBg
Zm9vX3BhcmFtX3Rlc3QuY2NgLiBZb3UgY2FuIGluc3RhbnRpYXRlIHRoZSBzYW1lIGFic3RyYWN0
IHRlc3QgY2FzZQorbXVsdGlwbGUgdGltZXMsIHBvc3NpYmx5IGluIGRpZmZlcmVudCBzb3VyY2Ug
ZmlsZXMuCisKKyMjIyBTcGVjaWZ5aW5nIE5hbWVzIGZvciBWYWx1ZS1QYXJhbWV0ZXJpemVkIFRl
c3QgUGFyYW1ldGVycworCitUaGUgb3B0aW9uYWwgbGFzdCBhcmd1bWVudCB0byBgSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoKWAgYWxsb3dzIHRoZSB1c2VyIHRvCitzcGVjaWZ5IGEgZnVuY3Rpb24g
b3IgZnVuY3RvciB0aGF0IGdlbmVyYXRlcyBjdXN0b20gdGVzdCBuYW1lIHN1ZmZpeGVzIGJhc2Vk
IG9uCit0aGUgdGVzdCBwYXJhbWV0ZXJzLiBUaGUgZnVuY3Rpb24gc2hvdWxkIGFjY2VwdCBvbmUg
YXJndW1lbnQgb2YgdHlwZQorYHRlc3Rpbmc6OlRlc3RQYXJhbUluZm88Y2xhc3MgUGFyYW1UeXBl
PmAsIGFuZCByZXR1cm4gYHN0ZDo6c3RyaW5nYC4KKworYHRlc3Rpbmc6OlByaW50VG9TdHJpbmdQ
YXJhbU5hbWVgIGlzIGEgYnVpbHRpbiB0ZXN0IHN1ZmZpeCBnZW5lcmF0b3IgdGhhdAorcmV0dXJu
cyB0aGUgdmFsdWUgb2YgYHRlc3Rpbmc6OlByaW50VG9TdHJpbmcoR2V0UGFyYW0oKSlgLiBJdCBk
b2VzIG5vdCB3b3JrIGZvcgorYHN0ZDo6c3RyaW5nYCBvciBDIHN0cmluZ3MuCisKK05PVEU6IHRl
c3QgbmFtZXMgbXVzdCBiZSBub24tZW1wdHksIHVuaXF1ZSwgYW5kIG1heSBvbmx5IGNvbnRhaW4g
QVNDSUkKK2FscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLiBJbiBwYXJ0aWN1bGFyLCB0aGV5IFtzaG91
bGQgbm90IGNvbnRhaW4KK3VuZGVyc2NvcmVzXShodHRwczovL2czZG9jLmNvcnAuZ29vZ2xlLmNv
bS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZzNkb2MvZmFxLm1kI25vLXVuZGVy
c2NvcmVzKS4KKworYGBgYysrCitjbGFzcyBNeVRlc3RDYXNlIDogcHVibGljIHRlc3Rpbmc6OlRl
c3RXaXRoUGFyYW08aW50PiB7fTsKKworVEVTVF9QKE15VGVzdENhc2UsIE15VGVzdCkKK3sKKyAg
c3RkOjpjb3V0IDw8ICJFeGFtcGxlIFRlc3QgUGFyYW06ICIgPDwgR2V0UGFyYW0oKSA8PCBzdGQ6
OmVuZGw7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKE15R3JvdXAsIE15VGVzdENhc2Us
IHRlc3Rpbmc6OlJhbmdlKDAsIDEwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6
OlByaW50VG9TdHJpbmdQYXJhbU5hbWUoKSk7CitgYGAKKworIyMgVHlwZWQgVGVzdHM8L2lkPgor
CitTdXBwb3NlIHlvdSBoYXZlIG11bHRpcGxlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgc2FtZSBp
bnRlcmZhY2UgYW5kIHdhbnQgdG8gbWFrZQorc3VyZSB0aGF0IGFsbCBvZiB0aGVtIHNhdGlzZnkg
c29tZSBjb21tb24gcmVxdWlyZW1lbnRzLiBPciwgeW91IG1heSBoYXZlIGRlZmluZWQKK3NldmVy
YWwgdHlwZXMgdGhhdCBhcmUgc3VwcG9zZWQgdG8gY29uZm9ybSB0byB0aGUgc2FtZSAiY29uY2Vw
dCIgYW5kIHlvdSB3YW50IHRvCit2ZXJpZnkgaXQuIEluIGJvdGggY2FzZXMsIHlvdSB3YW50IHRo
ZSBzYW1lIHRlc3QgbG9naWMgcmVwZWF0ZWQgZm9yIGRpZmZlcmVudAordHlwZXMuCisKK1doaWxl
IHlvdSBjYW4gd3JpdGUgb25lIGBURVNUYCBvciBgVEVTVF9GYCBmb3IgZWFjaCB0eXBlIHlvdSB3
YW50IHRvIHRlc3QgKGFuZAoreW91IG1heSBldmVuIGZhY3RvciB0aGUgdGVzdCBsb2dpYyBpbnRv
IGEgZnVuY3Rpb24gdGVtcGxhdGUgdGhhdCB5b3UgaW52b2tlIGZyb20KK3RoZSBgVEVTVGApLCBp
dCdzIHRlZGlvdXMgYW5kIGRvZXNuJ3Qgc2NhbGU6IGlmIHlvdSB3YW50IGBtYCB0ZXN0cyBvdmVy
IGBuYAordHlwZXMsIHlvdSdsbCBlbmQgdXAgd3JpdGluZyBgbSpuYCBgVEVTVGBzLgorCisqVHlw
ZWQgdGVzdHMqIGFsbG93IHlvdSB0byByZXBlYXQgdGhlIHNhbWUgdGVzdCBsb2dpYyBvdmVyIGEg
bGlzdCBvZiB0eXBlcy4gWW91Citvbmx5IG5lZWQgdG8gd3JpdGUgdGhlIHRlc3QgbG9naWMgb25j
ZSwgYWx0aG91Z2ggeW91IG11c3Qga25vdyB0aGUgdHlwZSBsaXN0Cit3aGVuIHdyaXRpbmcgdHlw
ZWQgdGVzdHMuIEhlcmUncyBob3cgeW91IGRvIGl0OgorCitGaXJzdCwgZGVmaW5lIGEgZml4dHVy
ZSBjbGFzcyB0ZW1wbGF0ZS4gSXQgc2hvdWxkIGJlIHBhcmFtZXRlcml6ZWQgYnkgYSB0eXBlLgor
UmVtZW1iZXIgdG8gZGVyaXZlIGl0IGZyb20gYDo6dGVzdGluZzo6VGVzdGA6CisKK2BgYGMrKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6
VGVzdCB7CisgcHVibGljOgorICAuLi4KKyAgdHlwZWRlZiBzdGQ6Omxpc3Q8VD4gTGlzdDsKKyAg
c3RhdGljIFQgc2hhcmVkXzsKKyAgVCB2YWx1ZV87Cit9OworYGBgCisKK05leHQsIGFzc29jaWF0
ZSBhIGxpc3Qgb2YgdHlwZXMgd2l0aCB0aGUgdGVzdCBjYXNlLCB3aGljaCB3aWxsIGJlIHJlcGVh
dGVkIGZvcgorZWFjaCB0eXBlIGluIHRoZSBsaXN0OgorCitgYGBjKysKK3VzaW5nIE15VHlwZXMg
PSA6OnRlc3Rpbmc6OlR5cGVzPGNoYXIsIGludCwgdW5zaWduZWQgaW50PjsKK1RZUEVEX1RFU1Rf
Q0FTRShGb29UZXN0LCBNeVR5cGVzKTsKK2BgYAorCitUaGUgdHlwZSBhbGlhcyAoYHVzaW5nYCBv
ciBgdHlwZWRlZmApIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIGBUWVBFRF9URVNUX0NBU0VgCittYWNy
byB0byBwYXJzZSBjb3JyZWN0bHkuIE90aGVyd2lzZSB0aGUgY29tcGlsZXIgd2lsbCB0aGluayB0
aGF0IGVhY2ggY29tbWEgaW4KK3RoZSB0eXBlIGxpc3QgaW50cm9kdWNlcyBhIG5ldyBtYWNybyBh
cmd1bWVudC4KKworVGhlbiwgdXNlIGBUWVBFRF9URVNUKClgIGluc3RlYWQgb2YgYFRFU1RfRigp
YCB0byBkZWZpbmUgYSB0eXBlZCB0ZXN0IGZvciB0aGlzCit0ZXN0IGNhc2UuIFlvdSBjYW4gcmVw
ZWF0IHRoaXMgYXMgbWFueSB0aW1lcyBhcyB5b3Ugd2FudDoKKworYGBgYysrCitUWVBFRF9URVNU
KEZvb1Rlc3QsIERvZXNCbGFoKSB7CisgIC8vIEluc2lkZSBhIHRlc3QsIHJlZmVyIHRvIHRoZSBz
cGVjaWFsIG5hbWUgVHlwZVBhcmFtIHRvIGdldCB0aGUgdHlwZQorICAvLyBwYXJhbWV0ZXIuICBT
aW5jZSB3ZSBhcmUgaW5zaWRlIGEgZGVyaXZlZCBjbGFzcyB0ZW1wbGF0ZSwgQysrIHJlcXVpcmVz
CisgIC8vIHVzIHRvIHZpc2l0IHRoZSBtZW1iZXJzIG9mIEZvb1Rlc3QgdmlhICd0aGlzJy4KKyAg
VHlwZVBhcmFtIG4gPSB0aGlzLT52YWx1ZV87CisKKyAgLy8gVG8gdmlzaXQgc3RhdGljIG1lbWJl
cnMgb2YgdGhlIGZpeHR1cmUsIGFkZCB0aGUgJ1Rlc3RGaXh0dXJlOjonCisgIC8vIHByZWZpeC4K
KyAgbiArPSBUZXN0Rml4dHVyZTo6c2hhcmVkXzsKKworICAvLyBUbyByZWZlciB0byB0eXBlZGVm
cyBpbiB0aGUgZml4dHVyZSwgYWRkIHRoZSAndHlwZW5hbWUgVGVzdEZpeHR1cmU6OicKKyAgLy8g
cHJlZml4LiAgVGhlICd0eXBlbmFtZScgaXMgcmVxdWlyZWQgdG8gc2F0aXNmeSB0aGUgY29tcGls
ZXIuCisgIHR5cGVuYW1lIFRlc3RGaXh0dXJlOjpMaXN0IHZhbHVlczsKKworICB2YWx1ZXMucHVz
aF9iYWNrKG4pOworICAuLi4KK30KKworVFlQRURfVEVTVChGb29UZXN0LCBIYXNQcm9wZXJ0eUEp
IHsgLi4uIH0KK2BgYAorCitZb3UgY2FuIHNlZSBzYW1wbGU2X3VuaXR0ZXN0LmNjCisKKyoqQXZh
aWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSks
IE1hYworCisjIyBUeXBlLVBhcmFtZXRlcml6ZWQgVGVzdHMKKworKlR5cGUtcGFyYW1ldGVyaXpl
ZCB0ZXN0cyogYXJlIGxpa2UgdHlwZWQgdGVzdHMsIGV4Y2VwdCB0aGF0IHRoZXkgZG9uJ3QgcmVx
dWlyZQoreW91IHRvIGtub3cgdGhlIGxpc3Qgb2YgdHlwZXMgYWhlYWQgb2YgdGltZS4gSW5zdGVh
ZCwgeW91IGNhbiBkZWZpbmUgdGhlIHRlc3QKK2xvZ2ljIGZpcnN0IGFuZCBpbnN0YW50aWF0ZSBp
dCB3aXRoIGRpZmZlcmVudCB0eXBlIGxpc3RzIGxhdGVyLiBZb3UgY2FuIGV2ZW4KK2luc3RhbnRp
YXRlIGl0IG1vcmUgdGhhbiBvbmNlIGluIHRoZSBzYW1lIHByb2dyYW0uCisKK0lmIHlvdSBhcmUg
ZGVzaWduaW5nIGFuIGludGVyZmFjZSBvciBjb25jZXB0LCB5b3UgY2FuIGRlZmluZSBhIHN1aXRl
IG9mCit0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMgdG8gdmVyaWZ5IHByb3BlcnRpZXMgdGhhdCBh
bnkgdmFsaWQgaW1wbGVtZW50YXRpb24gb2YKK3RoZSBpbnRlcmZhY2UvY29uY2VwdCBzaG91bGQg
aGF2ZS4gVGhlbiwgdGhlIGF1dGhvciBvZiBlYWNoIGltcGxlbWVudGF0aW9uIGNhbgoranVzdCBp
bnN0YW50aWF0ZSB0aGUgdGVzdCBzdWl0ZSB3aXRoIHRoZWlyIHR5cGUgdG8gdmVyaWZ5IHRoYXQg
aXQgY29uZm9ybXMgdG8KK3RoZSByZXF1aXJlbWVudHMsIHdpdGhvdXQgaGF2aW5nIHRvIHdyaXRl
IHNpbWlsYXIgdGVzdHMgcmVwZWF0ZWRseS4gSGVyZSdzIGFuCitleGFtcGxlOgorCitGaXJzdCwg
ZGVmaW5lIGEgZml4dHVyZSBjbGFzcyB0ZW1wbGF0ZSwgYXMgd2UgZGlkIHdpdGggdHlwZWQgdGVz
dHM6CisKK2BgYGMrKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBGb29UZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7CisgIC4uLgorfTsKK2BgYAorCitOZXh0LCBkZWNsYXJlIHRo
YXQgeW91IHdpbGwgZGVmaW5lIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZToKKworYGBg
YysrCitUWVBFRF9URVNUX0NBU0VfUChGb29UZXN0KTsKK2BgYAorCitUaGVuLCB1c2UgYFRZUEVE
X1RFU1RfUCgpYCB0byBkZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4gWW91IGNhbiBy
ZXBlYXQKK3RoaXMgYXMgbWFueSB0aW1lcyBhcyB5b3Ugd2FudDoKKworYGBgYysrCitUWVBFRF9U
RVNUX1AoRm9vVGVzdCwgRG9lc0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIgdG8g
VHlwZVBhcmFtIHRvIGdldCB0aGUgdHlwZSBwYXJhbWV0ZXIuCisgIFR5cGVQYXJhbSBuID0gMDsK
KyAgLi4uCit9CisKK1RZUEVEX1RFU1RfUChGb29UZXN0LCBIYXNQcm9wZXJ0eUEpIHsgLi4uIH0K
K2BgYAorCitOb3cgdGhlIHRyaWNreSBwYXJ0OiB5b3UgbmVlZCB0byByZWdpc3RlciBhbGwgdGVz
dCBwYXR0ZXJucyB1c2luZyB0aGUKK2BSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUGAgbWFjcm8g
YmVmb3JlIHlvdSBjYW4gaW5zdGFudGlhdGUgdGhlbS4gVGhlIGZpcnN0Cithcmd1bWVudCBvZiB0
aGUgbWFjcm8gaXMgdGhlIHRlc3QgY2FzZSBuYW1lOyB0aGUgcmVzdCBhcmUgdGhlIG5hbWVzIG9m
IHRoZSB0ZXN0cworaW4gdGhpcyB0ZXN0IGNhc2U6CisKK2BgYGMrKworUkVHSVNURVJfVFlQRURf
VEVTVF9DQVNFX1AoRm9vVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERvZXNCbGFo
LCBIYXNQcm9wZXJ0eUEpOworYGBgCisKK0ZpbmFsbHksIHlvdSBhcmUgZnJlZSB0byBpbnN0YW50
aWF0ZSB0aGUgcGF0dGVybiB3aXRoIHRoZSB0eXBlcyB5b3Ugd2FudC4gSWYgeW91CitwdXQgdGhl
IGFib3ZlIGNvZGUgaW4gYSBoZWFkZXIgZmlsZSwgeW91IGNhbiBgI2luY2x1ZGVgIGl0IGluIG11
bHRpcGxlIEMrKworc291cmNlIGZpbGVzIGFuZCBpbnN0YW50aWF0ZSBpdCBtdWx0aXBsZSB0aW1l
cy4KKworYGBgYysrCit0eXBlZGVmIDo6dGVzdGluZzo6VHlwZXM8Y2hhciwgaW50LCB1bnNpZ25l
ZCBpbnQ+IE15VHlwZXM7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVz
dCwgTXlUeXBlcyk7CitgYGAKKworVG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50IGluc3RhbmNlcyBv
ZiB0aGUgcGF0dGVybiwgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZQorYElOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QYCBtYWNybyBpcyBhIHByZWZpeCB0aGF0IHdpbGwgYmUgYWRkZWQgdG8g
dGhlCithY3R1YWwgdGVzdCBjYXNlIG5hbWUuIFJlbWVtYmVyIHRvIHBpY2sgdW5pcXVlIHByZWZp
eGVzIGZvciBkaWZmZXJlbnQgaW5zdGFuY2VzLgorCitJbiB0aGUgc3BlY2lhbCBjYXNlIHdoZXJl
IHRoZSB0eXBlIGxpc3QgY29udGFpbnMgb25seSBvbmUgdHlwZSwgeW91IGNhbiB3cml0ZQordGhh
dCB0eXBlIGRpcmVjdGx5IHdpdGhvdXQgYDo6dGVzdGluZzo6VHlwZXM8Li4uPmAsIGxpa2UgdGhp
czoKKworYGBgYysrCitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwg
aW50KTsKK2BgYAorCitZb3UgY2FuIHNlZSBgc2FtcGxlNl91bml0dGVzdC5jY2AgZm9yIGEgY29t
cGxldGUgZXhhbXBsZS4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MgKHJlcXVp
cmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFjCisKKyMjIFRlc3RpbmcgUHJpdmF0ZSBDb2RlCisK
K0lmIHlvdSBjaGFuZ2UgeW91ciBzb2Z0d2FyZSdzIGludGVybmFsIGltcGxlbWVudGF0aW9uLCB5
b3VyIHRlc3RzIHNob3VsZCBub3QKK2JyZWFrIGFzIGxvbmcgYXMgdGhlIGNoYW5nZSBpcyBub3Qg
b2JzZXJ2YWJsZSBieSB1c2Vycy4gVGhlcmVmb3JlLCAqKnBlciB0aGUKK2JsYWNrLWJveCB0ZXN0
aW5nIHByaW5jaXBsZSwgbW9zdCBvZiB0aGUgdGltZSB5b3Ugc2hvdWxkIHRlc3QgeW91ciBjb2Rl
IHRocm91Z2gKK2l0cyBwdWJsaWMgaW50ZXJmYWNlcy4qKgorCisqKklmIHlvdSBzdGlsbCBmaW5k
IHlvdXJzZWxmIG5lZWRpbmcgdG8gdGVzdCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBjb2RlLAor
Y29uc2lkZXIgaWYgdGhlcmUncyBhIGJldHRlciBkZXNpZ24uKiogVGhlIGRlc2lyZSB0byB0ZXN0
IGludGVybmFsCitpbXBsZW1lbnRhdGlvbiBpcyBvZnRlbiBhIHNpZ24gdGhhdCB0aGUgY2xhc3Mg
aXMgZG9pbmcgdG9vIG11Y2guIENvbnNpZGVyCitleHRyYWN0aW5nIGFuIGltcGxlbWVudGF0aW9u
IGNsYXNzLCBhbmQgdGVzdGluZyBpdC4gVGhlbiB1c2UgdGhhdCBpbXBsZW1lbnRhdGlvbgorY2xh
c3MgaW4gdGhlIG9yaWdpbmFsIGNsYXNzLgorCitJZiB5b3UgYWJzb2x1dGVseSBoYXZlIHRvIHRl
c3Qgbm9uLXB1YmxpYyBpbnRlcmZhY2UgY29kZSB0aG91Z2gsIHlvdSBjYW4uIFRoZXJlCithcmUg
dHdvIGNhc2VzIHRvIGNvbnNpZGVyOgorCisqICAgU3RhdGljIGZ1bmN0aW9ucyAoICpub3QqIHRo
ZSBzYW1lIGFzIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zISkgb3IgdW5uYW1lZAorICAgIG5hbWVz
cGFjZXMsIGFuZAorKiAgIFByaXZhdGUgb3IgcHJvdGVjdGVkIGNsYXNzIG1lbWJlcnMKKworVG8g
dGVzdCB0aGVtLCB3ZSB1c2UgdGhlIGZvbGxvd2luZyBzcGVjaWFsIHRlY2huaXF1ZXM6CisKKyog
ICBCb3RoIHN0YXRpYyBmdW5jdGlvbnMgYW5kIGRlZmluaXRpb25zL2RlY2xhcmF0aW9ucyBpbiBh
biB1bm5hbWVkIG5hbWVzcGFjZQorICAgIGFyZSBvbmx5IHZpc2libGUgd2l0aGluIHRoZSBzYW1l
IHRyYW5zbGF0aW9uIHVuaXQuIFRvIHRlc3QgdGhlbSwgeW91IGNhbgorICAgIGAjaW5jbHVkZWAg
dGhlIGVudGlyZSBgLmNjYCBmaWxlIGJlaW5nIHRlc3RlZCBpbiB5b3VyIGAqX3Rlc3QuY2NgIGZp
bGUuCisgICAgKGluY2x1ZGluZyBgLmNjYCBmaWxlcyBpcyBub3QgYSBnb29kIHdheSB0byByZXVz
ZSBjb2RlIC0geW91IHNob3VsZCBub3QgZG8KKyAgICB0aGlzIGluIHByb2R1Y3Rpb24gY29kZSEp
CisKKyAgICBIb3dldmVyLCBhIGJldHRlciBhcHByb2FjaCBpcyB0byBtb3ZlIHRoZSBwcml2YXRl
IGNvZGUgaW50byB0aGUKKyAgICBgZm9vOjppbnRlcm5hbGAgbmFtZXNwYWNlLCB3aGVyZSBgZm9v
YCBpcyB0aGUgbmFtZXNwYWNlIHlvdXIgcHJvamVjdAorICAgIG5vcm1hbGx5IHVzZXMsIGFuZCBw
dXQgdGhlIHByaXZhdGUgZGVjbGFyYXRpb25zIGluIGEgYCotaW50ZXJuYWwuaGAgZmlsZS4KKyAg
ICBZb3VyIHByb2R1Y3Rpb24gYC5jY2AgZmlsZXMgYW5kIHlvdXIgdGVzdHMgYXJlIGFsbG93ZWQg
dG8gaW5jbHVkZSB0aGlzCisgICAgaW50ZXJuYWwgaGVhZGVyLCBidXQgeW91ciBjbGllbnRzIGFy
ZSBub3QuIFRoaXMgd2F5LCB5b3UgY2FuIGZ1bGx5IHRlc3QgeW91cgorICAgIGludGVybmFsIGlt
cGxlbWVudGF0aW9uIHdpdGhvdXQgbGVha2luZyBpdCB0byB5b3VyIGNsaWVudHMuCisKKyogICBQ
cml2YXRlIGNsYXNzIG1lbWJlcnMgYXJlIG9ubHkgYWNjZXNzaWJsZSBmcm9tIHdpdGhpbiB0aGUg
Y2xhc3Mgb3IgYnkKKyAgICBmcmllbmRzLiBUbyBhY2Nlc3MgYSBjbGFzcycgcHJpdmF0ZSBtZW1i
ZXJzLCB5b3UgY2FuIGRlY2xhcmUgeW91ciB0ZXN0CisgICAgZml4dHVyZSBhcyBhIGZyaWVuZCB0
byB0aGUgY2xhc3MgYW5kIGRlZmluZSBhY2Nlc3NvcnMgaW4geW91ciBmaXh0dXJlLiBUZXN0cwor
ICAgIHVzaW5nIHRoZSBmaXh0dXJlIGNhbiB0aGVuIGFjY2VzcyB0aGUgcHJpdmF0ZSBtZW1iZXJz
IG9mIHlvdXIgcHJvZHVjdGlvbgorICAgIGNsYXNzIHZpYSB0aGUgYWNjZXNzb3JzIGluIHRoZSBm
aXh0dXJlLiBOb3RlIHRoYXQgZXZlbiB0aG91Z2ggeW91ciBmaXh0dXJlCisgICAgaXMgYSBmcmll
bmQgdG8geW91ciBwcm9kdWN0aW9uIGNsYXNzLCB5b3VyIHRlc3RzIGFyZSBub3QgYXV0b21hdGlj
YWxseQorICAgIGZyaWVuZHMgdG8gaXQsIGFzIHRoZXkgYXJlIHRlY2huaWNhbGx5IGRlZmluZWQg
aW4gc3ViLWNsYXNzZXMgb2YgdGhlCisgICAgZml4dHVyZS4KKworICAgIEFub3RoZXIgd2F5IHRv
IHRlc3QgcHJpdmF0ZSBtZW1iZXJzIGlzIHRvIHJlZmFjdG9yIHRoZW0gaW50byBhbgorICAgIGlt
cGxlbWVudGF0aW9uIGNsYXNzLCB3aGljaCBpcyB0aGVuIGRlY2xhcmVkIGluIGEgYCotaW50ZXJu
YWwuaGAgZmlsZS4gWW91cgorICAgIGNsaWVudHMgYXJlbid0IGFsbG93ZWQgdG8gaW5jbHVkZSB0
aGlzIGhlYWRlciBidXQgeW91ciB0ZXN0cyBjYW4uIFN1Y2ggaXMKKyAgICBjYWxsZWQgdGhlCisg
ICAgW1BpbXBsXShodHRwczovL3d3dy5nYW1lZGV2Lm5ldC9hcnRpY2xlcy9wcm9ncmFtbWluZy9n
ZW5lcmFsLWFuZC1nYW1lcGxheS1wcm9ncmFtbWluZy90aGUtYy1waW1wbC1yMTc5NC8pCisgICAg
KFByaXZhdGUgSW1wbGVtZW50YXRpb24pIGlkaW9tLgorCisgICAgT3IsIHlvdSBjYW4gZGVjbGFy
ZSBhbiBpbmRpdmlkdWFsIHRlc3QgYXMgYSBmcmllbmQgb2YgeW91ciBjbGFzcyBieSBhZGRpbmcK
KyAgICB0aGlzIGxpbmUgaW4gdGhlIGNsYXNzIGJvZHk6CisKKyAgICBgYGBjKysKKyAgICAgICAg
RlJJRU5EX1RFU1QoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSk7CisgICAgYGBgCisKKyAgICBGb3Ig
ZXhhbXBsZSwKKworICAgIGBgYGMrKworICAgIC8vIGZvby5oCisKKyAgICAjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3RfcHJvZC5oIgorCisgICAgY2xhc3MgRm9vIHsKKyAgICAgIC4uLgorICAgIHByaXZh
dGU6CisgICAgICBGUklFTkRfVEVTVChGb29UZXN0LCBCYXJSZXR1cm5zWmVyb09uTnVsbCk7CisK
KyAgICAgIGludCBCYXIodm9pZCogeCk7CisgICAgfTsKKworICAgIC8vIGZvb190ZXN0LmNjCisg
ICAgLi4uCisgICAgVEVTVChGb29UZXN0LCBCYXJSZXR1cm5zWmVyb09uTnVsbCkgeworICAgICAg
Rm9vIGZvbzsKKyAgICAgIEVYUEVDVF9FUSgwLCBmb28uQmFyKE5VTEwpKTsgIC8vIFVzZXMgRm9v
J3MgcHJpdmF0ZSBtZW1iZXIgQmFyKCkuCisgICAgfQorICAgIGBgYAorCisgICAgUGF5IHNwZWNp
YWwgYXR0ZW50aW9uIHdoZW4geW91ciBjbGFzcyBpcyBkZWZpbmVkIGluIGEgbmFtZXNwYWNlLCBh
cyB5b3UKKyAgICBzaG91bGQgZGVmaW5lIHlvdXIgdGVzdCBmaXh0dXJlcyBhbmQgdGVzdHMgaW4g
dGhlIHNhbWUgbmFtZXNwYWNlIGlmIHlvdSB3YW50CisgICAgdGhlbSB0byBiZSBmcmllbmRzIG9m
IHlvdXIgY2xhc3MuIEZvciBleGFtcGxlLCBpZiB0aGUgY29kZSB0byBiZSB0ZXN0ZWQKKyAgICBs
b29rcyBsaWtlOgorCisgICAgYGBgYysrCisgICAgbmFtZXNwYWNlIG15X25hbWVzcGFjZSB7CisK
KyAgICBjbGFzcyBGb28geworICAgICAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7CisgICAgICBGUklF
TkRfVEVTVChGb29UZXN0LCBCYXIpOworICAgICAgRlJJRU5EX1RFU1QoRm9vVGVzdCwgQmF6KTsK
KyAgICAgIC4uLiBkZWZpbml0aW9uIG9mIHRoZSBjbGFzcyBGb28gLi4uCisgICAgfTsKKworICAg
IH0gIC8vIG5hbWVzcGFjZSBteV9uYW1lc3BhY2UKKyAgICBgYGAKKworICAgIFlvdXIgdGVzdCBj
b2RlIHNob3VsZCBiZSBzb21ldGhpbmcgbGlrZToKKworICAgIGBgYGMrKworICAgIG5hbWVzcGFj
ZSBteV9uYW1lc3BhY2UgeworCisgICAgY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgeworICAgICBwcm90ZWN0ZWQ6CisgICAgICAuLi4KKyAgICB9OworCisgICAgVEVTVF9G
KEZvb1Rlc3QsIEJhcikgeyAuLi4gfQorICAgIFRFU1RfRihGb29UZXN0LCBCYXopIHsgLi4uIH0K
KworICAgIH0gIC8vIG5hbWVzcGFjZSBteV9uYW1lc3BhY2UKKyAgICBgYGAKKworCisjIyAiQ2F0
Y2hpbmciIEZhaWx1cmVzCisKK0lmIHlvdSBhcmUgYnVpbGRpbmcgYSB0ZXN0aW5nIHV0aWxpdHkg
b24gdG9wIG9mIGdvb2dsZXRlc3QsIHlvdSdsbCB3YW50IHRvIHRlc3QKK3lvdXIgdXRpbGl0eS4g
V2hhdCBmcmFtZXdvcmsgd291bGQgeW91IHVzZSB0byB0ZXN0IGl0PyBnb29nbGV0ZXN0LCBvZiBj
b3Vyc2UuCisKK1RoZSBjaGFsbGVuZ2UgaXMgdG8gdmVyaWZ5IHRoYXQgeW91ciB0ZXN0aW5nIHV0
aWxpdHkgcmVwb3J0cyBmYWlsdXJlcyBjb3JyZWN0bHkuCitJbiBmcmFtZXdvcmtzIHRoYXQgcmVw
b3J0IGEgZmFpbHVyZSBieSB0aHJvd2luZyBhbiBleGNlcHRpb24sIHlvdSBjb3VsZCBjYXRjaAor
dGhlIGV4Y2VwdGlvbiBhbmQgYXNzZXJ0IG9uIGl0LiBCdXQgZ29vZ2xldGVzdCBkb2Vzbid0IHVz
ZSBleGNlcHRpb25zLCBzbyBob3cgZG8KK3dlIHRlc3QgdGhhdCBhIHBpZWNlIG9mIGNvZGUgZ2Vu
ZXJhdGVzIGFuIGV4cGVjdGVkIGZhaWx1cmU/CisKK2d1bml0LXNwaS5oIGNvbnRhaW5zIHNvbWUg
Y29uc3RydWN0cyB0byBkbyB0aGlzLiBBZnRlciAjaW5jbHVkaW5nIHRoaXMgaGVhZGVyLAoreW91
IGNhbiB1c2UKKworYGBgYysrCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHN0YXRlbWVudCwgc3Vi
c3RyaW5nKTsKK2BgYAorCit0byBhc3NlcnQgdGhhdCBgc3RhdGVtZW50YCBnZW5lcmF0ZXMgYSBm
YXRhbCAoZS5nLiBgQVNTRVJUXypgKSBmYWlsdXJlIGluIHRoZQorY3VycmVudCB0aHJlYWQgd2hv
c2UgbWVzc2FnZSBjb250YWlucyB0aGUgZ2l2ZW4gYHN1YnN0cmluZ2AsIG9yIHVzZQorCitgYGBj
KysKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoc3RhdGVtZW50LCBzdWJzdHJpbmcpOworYGBg
CisKK2lmIHlvdSBhcmUgZXhwZWN0aW5nIGEgbm9uLWZhdGFsIChlLmcuIGBFWFBFQ1RfKmApIGZh
aWx1cmUuCisKK09ubHkgZmFpbHVyZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkIGFyZSBjaGVja2Vk
IHRvIGRldGVybWluZSB0aGUgcmVzdWx0IG9mIHRoaXMKK3R5cGUgb2YgZXhwZWN0YXRpb25zLiBJ
ZiBgc3RhdGVtZW50YCBjcmVhdGVzIG5ldyB0aHJlYWRzLCBmYWlsdXJlcyBpbiB0aGVzZQordGhy
ZWFkcyBhcmUgYWxzbyBpZ25vcmVkLiBJZiB5b3Ugd2FudCB0byBjYXRjaCBmYWlsdXJlcyBpbiBv
dGhlciB0aHJlYWRzIGFzCit3ZWxsLCB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgbWFjcm9zIGlu
c3RlYWQ6CisKK2BgYGMrKworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhz
dGF0ZW1lbnQsIHN1YnN0cmluZyk7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9U
SFJFQURTKHN0YXRlbWVudCwgc3Vic3RyaW5nKTsKK2BgYAorCitOT1RFOiBBc3NlcnRpb25zIGZy
b20gbXVsdGlwbGUgdGhyZWFkcyBhcmUgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgb24gV2luZG93
cy4KKworRm9yIHRlY2huaWNhbCByZWFzb25zLCB0aGVyZSBhcmUgc29tZSBjYXZlYXRzOgorCisx
LiAgWW91IGNhbm5vdCBzdHJlYW0gYSBmYWlsdXJlIG1lc3NhZ2UgdG8gZWl0aGVyIG1hY3JvLgor
CisxLiAgYHN0YXRlbWVudGAgaW4gYEVYUEVDVF9GQVRBTF9GQUlMVVJFe19PTl9BTExfVEhSRUFE
U30oKWAgY2Fubm90IHJlZmVyZW5jZQorICAgIGxvY2FsIG5vbi1zdGF0aWMgdmFyaWFibGVzIG9y
IG5vbi1zdGF0aWMgbWVtYmVycyBvZiBgdGhpc2Agb2JqZWN0LgorCisxLiAgYHN0YXRlbWVudGAg
aW4gYEVYUEVDVF9GQVRBTF9GQUlMVVJFe19PTl9BTExfVEhSRUFEU30oKSgpYCBjYW5ub3QgcmV0
dXJuIGEKKyAgICB2YWx1ZS4KKworCisjIyBHZXR0aW5nIHRoZSBDdXJyZW50IFRlc3QncyBOYW1l
CisKK1NvbWV0aW1lcyBhIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGtub3cgdGhlIG5hbWUgb2YgdGhl
IGN1cnJlbnRseSBydW5uaW5nIHRlc3QuCitGb3IgZXhhbXBsZSwgeW91IG1heSBiZSB1c2luZyB0
aGUgYFNldFVwKClgIG1ldGhvZCBvZiB5b3VyIHRlc3QgZml4dHVyZSB0byBzZXQKK3RoZSBnb2xk
ZW4gZmlsZSBuYW1lIGJhc2VkIG9uIHdoaWNoIHRlc3QgaXMgcnVubmluZy4gVGhlIGA6OnRlc3Rp
bmc6OlRlc3RJbmZvYAorY2xhc3MgaGFzIHRoaXMgaW5mb3JtYXRpb246CisKK2BgYGMrKworbmFt
ZXNwYWNlIHRlc3RpbmcgeworCitjbGFzcyBUZXN0SW5mbyB7CisgcHVibGljOgorICAvLyBSZXR1
cm5zIHRoZSB0ZXN0IGNhc2UgbmFtZSBhbmQgdGhlIHRlc3QgbmFtZSwgcmVzcGVjdGl2ZWx5Lgor
ICAvLworICAvLyBEbyBOT1QgZGVsZXRlIG9yIGZyZWUgdGhlIHJldHVybiB2YWx1ZSAtIGl0J3Mg
bWFuYWdlZCBieSB0aGUKKyAgLy8gVGVzdEluZm8gY2xhc3MuCisgIGNvbnN0IGNoYXIqIHRlc3Rf
Y2FzZV9uYW1lKCkgY29uc3Q7CisgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKK307CisKK30K
K2BgYAorCitUbyBvYnRhaW4gYSBgVGVzdEluZm9gIG9iamVjdCBmb3IgdGhlIGN1cnJlbnRseSBy
dW5uaW5nIHRlc3QsIGNhbGwKK2BjdXJyZW50X3Rlc3RfaW5mbygpYCBvbiB0aGUgYFVuaXRUZXN0
YCBzaW5nbGV0b24gb2JqZWN0OgorCitgYGBjKysKKyAgLy8gR2V0cyBpbmZvcm1hdGlvbiBhYm91
dCB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdC4KKyAgLy8gRG8gTk9UIGRlbGV0ZSB0aGUgcmV0
dXJuZWQgb2JqZWN0IC0gaXQncyBtYW5hZ2VkIGJ5IHRoZSBVbml0VGVzdCBjbGFzcy4KKyAgY29u
c3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAgICA6OnRlc3Rpbmc6
OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOworCisKKworICBw
cmludGYoIldlIGFyZSBpbiB0ZXN0ICVzIG9mIHRlc3QgY2FzZSAlcy5cbiIsCisgICAgICAgICB0
ZXN0X2luZm8tPm5hbWUoKSwKKyAgICAgICAgIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7
CitgYGAKKworYGN1cnJlbnRfdGVzdF9pbmZvKClgIHJldHVybnMgYSBudWxsIHBvaW50ZXIgaWYg
bm8gdGVzdCBpcyBydW5uaW5nLiBJbgorcGFydGljdWxhciwgeW91IGNhbm5vdCBmaW5kIHRoZSB0
ZXN0IGNhc2UgbmFtZSBpbiBgVGVzdENhc2VTZXRVcCgpYCwKK2BUZXN0Q2FzZVRlYXJEb3duKClg
ICh3aGVyZSB5b3Uga25vdyB0aGUgdGVzdCBjYXNlIG5hbWUgaW1wbGljaXRseSksIG9yCitmdW5j
dGlvbnMgY2FsbGVkIGZyb20gdGhlbS4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRv
d3MsIE1hYy4KKworIyMgRXh0ZW5kaW5nIGdvb2dsZXRlc3QgYnkgSGFuZGxpbmcgVGVzdCBFdmVu
dHMKKworZ29vZ2xldGVzdCBwcm92aWRlcyBhbiAqKmV2ZW50IGxpc3RlbmVyIEFQSSoqIHRvIGxl
dCB5b3UgcmVjZWl2ZSBub3RpZmljYXRpb25zCithYm91dCB0aGUgcHJvZ3Jlc3Mgb2YgYSB0ZXN0
IHByb2dyYW0gYW5kIHRlc3QgZmFpbHVyZXMuIFRoZSBldmVudHMgeW91IGNhbgorbGlzdGVuIHRv
IGluY2x1ZGUgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHRlc3QgcHJvZ3JhbSwgYSB0ZXN0IGNh
c2UsIG9yIGEgdGVzdAorbWV0aG9kLCBhbW9uZyBvdGhlcnMuIFlvdSBtYXkgdXNlIHRoaXMgQVBJ
IHRvIGF1Z21lbnQgb3IgcmVwbGFjZSB0aGUgc3RhbmRhcmQKK2NvbnNvbGUgb3V0cHV0LCByZXBs
YWNlIHRoZSBYTUwgb3V0cHV0LCBvciBwcm92aWRlIGEgY29tcGxldGVseSBkaWZmZXJlbnQgZm9y
bQorb2Ygb3V0cHV0LCBzdWNoIGFzIGEgR1VJIG9yIGEgZGF0YWJhc2UuIFlvdSBjYW4gYWxzbyB1
c2UgdGVzdCBldmVudHMgYXMKK2NoZWNrcG9pbnRzIHRvIGltcGxlbWVudCBhIHJlc291cmNlIGxl
YWsgY2hlY2tlciwgZm9yIGV4YW1wbGUuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5k
b3dzLCBNYWMuCisKKyMjIyBEZWZpbmluZyBFdmVudCBMaXN0ZW5lcnMKKworVG8gZGVmaW5lIGEg
ZXZlbnQgbGlzdGVuZXIsIHlvdSBzdWJjbGFzcyBlaXRoZXIgdGVzdGluZzo6VGVzdEV2ZW50TGlz
dGVuZXIgb3IKK3Rlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgVGhlIGZvcm1lciBpcyBh
biAoYWJzdHJhY3QpIGludGVyZmFjZSwgd2hlcmUKKyplYWNoIHB1cmUgdmlydHVhbCBtZXRob2Qg
Y2FuIGJlIG92ZXJyaWRkZW4gdG8gaGFuZGxlIGEgdGVzdCBldmVudCogKEZvcgorZXhhbXBsZSwg
d2hlbiBhIHRlc3Qgc3RhcnRzLCB0aGUgYE9uVGVzdFN0YXJ0KClgIG1ldGhvZCB3aWxsIGJlIGNh
bGxlZC4pLiBUaGUKK2xhdHRlciBwcm92aWRlcyBhbiBlbXB0eSBpbXBsZW1lbnRhdGlvbiBvZiBh
bGwgbWV0aG9kcyBpbiB0aGUgaW50ZXJmYWNlLCBzdWNoCit0aGF0IGEgc3ViY2xhc3Mgb25seSBu
ZWVkcyB0byBvdmVycmlkZSB0aGUgbWV0aG9kcyBpdCBjYXJlcyBhYm91dC4KKworV2hlbiBhbiBl
dmVudCBpcyBmaXJlZCwgaXRzIGNvbnRleHQgaXMgcGFzc2VkIHRvIHRoZSBoYW5kbGVyIGZ1bmN0
aW9uIGFzIGFuCithcmd1bWVudC4gVGhlIGZvbGxvd2luZyBhcmd1bWVudCB0eXBlcyBhcmUgdXNl
ZDoKKworKiAgIFVuaXRUZXN0IHJlZmxlY3RzIHRoZSBzdGF0ZSBvZiB0aGUgZW50aXJlIHRlc3Qg
cHJvZ3JhbSwKKyogICBUZXN0Q2FzZSBoYXMgaW5mb3JtYXRpb24gYWJvdXQgYSB0ZXN0IGNhc2Us
IHdoaWNoIGNhbiBjb250YWluIG9uZSBvciBtb3JlCisgICAgdGVzdHMsCisqICAgVGVzdEluZm8g
Y29udGFpbnMgdGhlIHN0YXRlIG9mIGEgdGVzdCwgYW5kCisqICAgVGVzdFBhcnRSZXN1bHQgcmVw
cmVzZW50cyB0aGUgcmVzdWx0IG9mIGEgdGVzdCBhc3NlcnRpb24uCisKK0FuIGV2ZW50IGhhbmRs
ZXIgZnVuY3Rpb24gY2FuIGV4YW1pbmUgdGhlIGFyZ3VtZW50IGl0IHJlY2VpdmVzIHRvIGZpbmQg
b3V0CitpbnRlcmVzdGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXZlbnQgYW5kIHRoZSB0ZXN0
IHByb2dyYW0ncyBzdGF0ZS4KKworSGVyZSdzIGFuIGV4YW1wbGU6CisKK2BgYGMrKworICBjbGFz
cyBNaW5pbWFsaXN0UHJpbnRlciA6IHB1YmxpYyA6OnRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlz
dGVuZXIgeworICAgIC8vIENhbGxlZCBiZWZvcmUgYSB0ZXN0IHN0YXJ0cy4KKyAgICB2aXJ0dWFs
IHZvaWQgT25UZXN0U3RhcnQoY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyYgdGVzdF9pbmZvKSB7
CisgICAgICBwcmludGYoIioqKiBUZXN0ICVzLiVzIHN0YXJ0aW5nLlxuIiwKKyAgICAgICAgICAg
ICB0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7CisgICAgfQor
CisgICAgLy8gQ2FsbGVkIGFmdGVyIGEgZmFpbGVkIGFzc2VydGlvbiBvciBhIFNVQ0NFU1MoKS4K
KyAgICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJlc3VsdChjb25zdCA6OnRlc3Rpbmc6OlRlc3RQ
YXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7CisgICAgICBwcmludGYoIiVzIGluICVzOiVk
XG4lc1xuIiwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LmZhaWxlZCgpID8gIioqKiBG
YWlsdXJlIiA6ICJTdWNjZXNzIiwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LmZpbGVf
bmFtZSgpLAorICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQubGluZV9udW1iZXIoKSwKKyAg
ICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LnN1bW1hcnkoKSk7CisgICAgfQorCisgICAgLy8g
Q2FsbGVkIGFmdGVyIGEgdGVzdCBlbmRzLgorICAgIHZpcnR1YWwgdm9pZCBPblRlc3RFbmQoY29u
c3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CisgICAgICBwcmludGYoIioqKiBU
ZXN0ICVzLiVzIGVuZGluZy5cbiIsCisgICAgICAgICAgICAgdGVzdF9pbmZvLnRlc3RfY2FzZV9u
YW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOworICAgIH0KKyAgfTsKK2BgYAorCisjIyMgVXNpbmcg
RXZlbnQgTGlzdGVuZXJzCisKK1RvIHVzZSB0aGUgZXZlbnQgbGlzdGVuZXIgeW91IGhhdmUgZGVm
aW5lZCwgYWRkIGFuIGluc3RhbmNlIG9mIGl0IHRvIHRoZQorZ29vZ2xldGVzdCBldmVudCBsaXN0
ZW5lciBsaXN0IChyZXByZXNlbnRlZCBieSBjbGFzcyBUZXN0RXZlbnRMaXN0ZW5lcnMgLSBub3Rl
Cit0aGUgInMiIGF0IHRoZSBlbmQgb2YgdGhlIG5hbWUpIGluIHlvdXIgYG1haW4oKWAgZnVuY3Rp
b24sIGJlZm9yZSBjYWxsaW5nCitgUlVOX0FMTF9URVNUUygpYDoKKworYGBgYysrCitpbnQgbWFp
bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgm
YXJnYywgYXJndik7CisgIC8vIEdldHMgaG9sZCBvZiB0aGUgZXZlbnQgbGlzdGVuZXIgbGlzdC4K
KyAgOjp0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnMmIGxpc3RlbmVycyA9CisgICAgICAgIDo6
dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpOworICAvLyBBZGRz
IGEgbGlzdGVuZXIgdG8gdGhlIGVuZC4gIGdvb2dsZXRlc3QgdGFrZXMgdGhlIG93bmVyc2hpcC4K
KyAgbGlzdGVuZXJzLkFwcGVuZChuZXcgTWluaW1hbGlzdFByaW50ZXIpOworICByZXR1cm4gUlVO
X0FMTF9URVNUUygpOworfQorYGBgCisKK1RoZXJlJ3Mgb25seSBvbmUgcHJvYmxlbTogdGhlIGRl
ZmF1bHQgdGVzdCByZXN1bHQgcHJpbnRlciBpcyBzdGlsbCBpbiBlZmZlY3QsIHNvCitpdHMgb3V0
cHV0IHdpbGwgbWluZ2xlIHdpdGggdGhlIG91dHB1dCBmcm9tIHlvdXIgbWluaW1hbGlzdCBwcmlu
dGVyLiBUbyBzdXBwcmVzcwordGhlIGRlZmF1bHQgcHJpbnRlciwganVzdCByZWxlYXNlIGl0IGZy
b20gdGhlIGV2ZW50IGxpc3RlbmVyIGxpc3QgYW5kIGRlbGV0ZSBpdC4KK1lvdSBjYW4gZG8gc28g
YnkgYWRkaW5nIG9uZSBsaW5lOgorCitgYGBjKysKKyAgLi4uCisgIGRlbGV0ZSBsaXN0ZW5lcnMu
UmVsZWFzZShsaXN0ZW5lcnMuZGVmYXVsdF9yZXN1bHRfcHJpbnRlcigpKTsKKyAgbGlzdGVuZXJz
LkFwcGVuZChuZXcgTWluaW1hbGlzdFByaW50ZXIpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygp
OworYGBgCisKK05vdywgc2l0IGJhY2sgYW5kIGVuam95IGEgY29tcGxldGVseSBkaWZmZXJlbnQg
b3V0cHV0IGZyb20geW91ciB0ZXN0cy4gRm9yIG1vcmUKK2RldGFpbHMsIHlvdSBjYW4gcmVhZCB0
aGlzIHNhbXBsZTlfdW5pdHRlc3QuY2MKKworWW91IG1heSBhcHBlbmQgbW9yZSB0aGFuIG9uZSBs
aXN0ZW5lciB0byB0aGUgbGlzdC4gV2hlbiBhbiBgT24qU3RhcnQoKWAgb3IKK2BPblRlc3RQYXJ0
UmVzdWx0KClgIGV2ZW50IGlzIGZpcmVkLCB0aGUgbGlzdGVuZXJzIHdpbGwgcmVjZWl2ZSBpdCBp
biB0aGUgb3JkZXIKK3RoZXkgYXBwZWFyIGluIHRoZSBsaXN0IChzaW5jZSBuZXcgbGlzdGVuZXJz
IGFyZSBhZGRlZCB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LAordGhlIGRlZmF1bHQgdGV4dCBwcmlu
dGVyIGFuZCB0aGUgZGVmYXVsdCBYTUwgZ2VuZXJhdG9yIHdpbGwgcmVjZWl2ZSB0aGUgZXZlbnQK
K2ZpcnN0KS4gQW4gYE9uKkVuZCgpYCBldmVudCB3aWxsIGJlIHJlY2VpdmVkIGJ5IHRoZSBsaXN0
ZW5lcnMgaW4gdGhlICpyZXZlcnNlKgorb3JkZXIuIFRoaXMgYWxsb3dzIG91dHB1dCBieSBsaXN0
ZW5lcnMgYWRkZWQgbGF0ZXIgdG8gYmUgZnJhbWVkIGJ5IG91dHB1dCBmcm9tCitsaXN0ZW5lcnMg
YWRkZWQgZWFybGllci4KKworIyMjIEdlbmVyYXRpbmcgRmFpbHVyZXMgaW4gTGlzdGVuZXJzCisK
K1lvdSBtYXkgdXNlIGZhaWx1cmUtcmFpc2luZyBtYWNyb3MgKGBFWFBFQ1RfKigpYCwgYEFTU0VS
VF8qKClgLCBgRkFJTCgpYCwgZXRjKQord2hlbiBwcm9jZXNzaW5nIGFuIGV2ZW50LiBUaGVyZSBh
cmUgc29tZSByZXN0cmljdGlvbnM6CisKKzEuICBZb3UgY2Fubm90IGdlbmVyYXRlIGFueSBmYWls
dXJlIGluIGBPblRlc3RQYXJ0UmVzdWx0KClgIChvdGhlcndpc2UgaXQgd2lsbAorICAgIGNhdXNl
IGBPblRlc3RQYXJ0UmVzdWx0KClgIHRvIGJlIGNhbGxlZCByZWN1cnNpdmVseSkuCisxLiAgQSBs
aXN0ZW5lciB0aGF0IGhhbmRsZXMgYE9uVGVzdFBhcnRSZXN1bHQoKWAgaXMgbm90IGFsbG93ZWQg
dG8gZ2VuZXJhdGUgYW55CisgICAgZmFpbHVyZS4KKworV2hlbiB5b3UgYWRkIGxpc3RlbmVycyB0
byB0aGUgbGlzdGVuZXIgbGlzdCwgeW91IHNob3VsZCBwdXQgbGlzdGVuZXJzIHRoYXQKK2hhbmRs
ZSBgT25UZXN0UGFydFJlc3VsdCgpYCAqYmVmb3JlKiBsaXN0ZW5lcnMgdGhhdCBjYW4gZ2VuZXJh
dGUgZmFpbHVyZXMuIFRoaXMKK2Vuc3VyZXMgdGhhdCBmYWlsdXJlcyBnZW5lcmF0ZWQgYnkgdGhl
IGxhdHRlciBhcmUgYXR0cmlidXRlZCB0byB0aGUgcmlnaHQgdGVzdAorYnkgdGhlIGZvcm1lci4K
KworV2UgaGF2ZSBhIHNhbXBsZSBvZiBmYWlsdXJlLXJhaXNpbmcgbGlzdGVuZXIgc2FtcGxlMTBf
dW5pdHRlc3QuY2MKKworIyMgUnVubmluZyBUZXN0IFByb2dyYW1zOiBBZHZhbmNlZCBPcHRpb25z
CisKK2dvb2dsZXRlc3QgdGVzdCBwcm9ncmFtcyBhcmUgb3JkaW5hcnkgZXhlY3V0YWJsZXMuIE9u
Y2UgYnVpbHQsIHlvdSBjYW4gcnVuIHRoZW0KK2RpcmVjdGx5IGFuZCBhZmZlY3QgdGhlaXIgYmVo
YXZpb3IgdmlhIHRoZSBmb2xsb3dpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzCithbmQvb3IgY29t
bWFuZCBsaW5lIGZsYWdzLiBGb3IgdGhlIGZsYWdzIHRvIHdvcmssIHlvdXIgcHJvZ3JhbXMgbXVz
dCBjYWxsCitgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpYCBiZWZvcmUgY2FsbGluZyBgUlVO
X0FMTF9URVNUUygpYC4KKworVG8gc2VlIGEgbGlzdCBvZiBzdXBwb3J0ZWQgZmxhZ3MgYW5kIHRo
ZWlyIHVzYWdlLCBwbGVhc2UgcnVuIHlvdXIgdGVzdCBwcm9ncmFtCit3aXRoIHRoZSBgLS1oZWxw
YCBmbGFnLiBZb3UgY2FuIGFsc28gdXNlIGAtaGAsIGAtP2AsIG9yIGAvP2AgZm9yIHNob3J0Lgor
CitJZiBhbiBvcHRpb24gaXMgc3BlY2lmaWVkIGJvdGggYnkgYW4gZW52aXJvbm1lbnQgdmFyaWFi
bGUgYW5kIGJ5IGEgZmxhZywgdGhlCitsYXR0ZXIgdGFrZXMgcHJlY2VkZW5jZS4KKworIyMjIFNl
bGVjdGluZyBUZXN0cworCisjIyMjIExpc3RpbmcgVGVzdCBOYW1lcworCitTb21ldGltZXMgaXQg
aXMgbmVjZXNzYXJ5IHRvIGxpc3QgdGhlIGF2YWlsYWJsZSB0ZXN0cyBpbiBhIHByb2dyYW0gYmVm
b3JlCitydW5uaW5nIHRoZW0gc28gdGhhdCBhIGZpbHRlciBtYXkgYmUgYXBwbGllZCBpZiBuZWVk
ZWQuIEluY2x1ZGluZyB0aGUgZmxhZworYC0tZ3Rlc3RfbGlzdF90ZXN0c2Agb3ZlcnJpZGVzIGFs
bCBvdGhlciBmbGFncyBhbmQgbGlzdHMgdGVzdHMgaW4gdGhlIGZvbGxvd2luZworZm9ybWF0Ogor
CitgYGBub25lCitUZXN0Q2FzZTEuCisgIFRlc3ROYW1lMQorICBUZXN0TmFtZTIKK1Rlc3RDYXNl
Mi4KKyAgVGVzdE5hbWUKK2BgYAorCitOb25lIG9mIHRoZSB0ZXN0cyBsaXN0ZWQgYXJlIGFjdHVh
bGx5IHJ1biBpZiB0aGUgZmxhZyBpcyBwcm92aWRlZC4gVGhlcmUgaXMgbm8KK2NvcnJlc3BvbmRp
bmcgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIHRoaXMgZmxhZy4KKworKipBdmFpbGFiaWxpdHkq
KjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIyBSdW5uaW5nIGEgU3Vic2V0IG9mIHRoZSBU
ZXN0cworCitCeSBkZWZhdWx0LCBhIGdvb2dsZXRlc3QgcHJvZ3JhbSBydW5zIGFsbCB0ZXN0cyB0
aGUgdXNlciBoYXMgZGVmaW5lZC4gU29tZXRpbWVzLAoreW91IHdhbnQgdG8gcnVuIG9ubHkgYSBz
dWJzZXQgb2YgdGhlIHRlc3RzIChlLmcuIGZvciBkZWJ1Z2dpbmcgb3IgcXVpY2tseQordmVyaWZ5
aW5nIGEgY2hhbmdlKS4gSWYgeW91IHNldCB0aGUgYEdURVNUX0ZJTFRFUmAgZW52aXJvbm1lbnQg
dmFyaWFibGUgb3IgdGhlCitgLS1ndGVzdF9maWx0ZXJgIGZsYWcgdG8gYSBmaWx0ZXIgc3RyaW5n
LCBnb29nbGV0ZXN0IHdpbGwgb25seSBydW4gdGhlIHRlc3RzCit3aG9zZSBmdWxsIG5hbWVzIChp
biB0aGUgZm9ybSBvZiBgVGVzdENhc2VOYW1lLlRlc3ROYW1lYCkgbWF0Y2ggdGhlIGZpbHRlci4K
KworVGhlIGZvcm1hdCBvZiBhIGZpbHRlciBpcyBhICdgOmAnLXNlcGFyYXRlZCBsaXN0IG9mIHdp
bGRjYXJkIHBhdHRlcm5zIChjYWxsZWQKK3RoZSAqcG9zaXRpdmUgcGF0dGVybnMqKSBvcHRpb25h
bGx5IGZvbGxvd2VkIGJ5IGEgJ2AtYCcgYW5kIGFub3RoZXIKKydgOmAnLXNlcGFyYXRlZCBwYXR0
ZXJuIGxpc3QgKGNhbGxlZCB0aGUgKm5lZ2F0aXZlIHBhdHRlcm5zKikuIEEgdGVzdCBtYXRjaGVz
Cit0aGUgZmlsdGVyIGlmIGFuZCBvbmx5IGlmIGl0IG1hdGNoZXMgYW55IG9mIHRoZSBwb3NpdGl2
ZSBwYXR0ZXJucyBidXQgZG9lcyBub3QKK21hdGNoIGFueSBvZiB0aGUgbmVnYXRpdmUgcGF0dGVy
bnMuCisKK0EgcGF0dGVybiBtYXkgY29udGFpbiBgJyonYCAobWF0Y2hlcyBhbnkgc3RyaW5nKSBv
ciBgJz8nYCAobWF0Y2hlcyBhbnkgc2luZ2xlCitjaGFyYWN0ZXIpLiBGb3IgY29udmVuaWVuY2Us
IHRoZSBmaWx0ZXIKKworYCcqLU5lZ2F0aXZlUGF0dGVybnMnYCBjYW4gYmUgYWxzbyB3cml0dGVu
IGFzIGAnLU5lZ2F0aXZlUGF0dGVybnMnYC4KKworRm9yIGV4YW1wbGU6CisKKyogICBgLi9mb29f
dGVzdGAgSGFzIG5vIGZsYWcsIGFuZCB0aHVzIHJ1bnMgYWxsIGl0cyB0ZXN0cy4KKyogICBgLi9m
b29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj0qYCBBbHNvIHJ1bnMgZXZlcnl0aGluZywgZHVlIHRvIHRo
ZSBzaW5nbGUKKyAgICBtYXRjaC1ldmVyeXRoaW5nIGAqYCB2YWx1ZS4KKyogICBgLi9mb29fdGVz
dCAtLWd0ZXN0X2ZpbHRlcj1Gb29UZXN0LipgIFJ1bnMgZXZlcnl0aGluZyBpbiB0ZXN0IGNhc2Ug
YEZvb1Rlc3RgCisgICAgLgorKiAgIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPSpOdWxsKjoq
Q29uc3RydWN0b3IqYCBSdW5zIGFueSB0ZXN0IHdob3NlIGZ1bGwKKyAgICBuYW1lIGNvbnRhaW5z
IGVpdGhlciBgIk51bGwiYCBvciBgIkNvbnN0cnVjdG9yImAgLgorKiAgIGAuL2Zvb190ZXN0IC0t
Z3Rlc3RfZmlsdGVyPS0qRGVhdGhUZXN0LipgIFJ1bnMgYWxsIG5vbi1kZWF0aCB0ZXN0cy4KKyog
ICBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj1Gb29UZXN0LiotRm9vVGVzdC5CYXJgIFJ1bnMg
ZXZlcnl0aGluZyBpbiB0ZXN0CisgICAgY2FzZSBgRm9vVGVzdGAgZXhjZXB0IGBGb29UZXN0LkJh
cmAuCisqICAgYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Rm9vVGVzdC4qOkJhclRlc3QuKi1G
b29UZXN0LkJhcjpCYXJUZXN0LkZvb2AgUnVucworICAgIGV2ZXJ5dGhpbmcgaW4gdGVzdCBjYXNl
IGBGb29UZXN0YCBleGNlcHQgYEZvb1Rlc3QuQmFyYCBhbmQgZXZlcnl0aGluZyBpbgorICAgIHRl
c3QgY2FzZSBgQmFyVGVzdGAgZXhjZXB0IGBCYXJUZXN0LkZvb2AuCisgICAgCisjIyMjIFRlbXBv
cmFyaWx5IERpc2FibGluZyBUZXN0cworCitJZiB5b3UgaGF2ZSBhIGJyb2tlbiB0ZXN0IHRoYXQg
eW91IGNhbm5vdCBmaXggcmlnaHQgYXdheSwgeW91IGNhbiBhZGQgdGhlCitgRElTQUJMRURfYCBw
cmVmaXggdG8gaXRzIG5hbWUuIFRoaXMgd2lsbCBleGNsdWRlIGl0IGZyb20gZXhlY3V0aW9uLiBU
aGlzIGlzCitiZXR0ZXIgdGhhbiBjb21tZW50aW5nIG91dCB0aGUgY29kZSBvciB1c2luZyBgI2lm
IDBgLCBhcyBkaXNhYmxlZCB0ZXN0cyBhcmUKK3N0aWxsIGNvbXBpbGVkIChhbmQgdGh1cyB3b24n
dCByb3QpLgorCitJZiB5b3UgbmVlZCB0byBkaXNhYmxlIGFsbCB0ZXN0cyBpbiBhIHRlc3QgY2Fz
ZSwgeW91IGNhbiBlaXRoZXIgYWRkIGBESVNBQkxFRF9gCit0byB0aGUgZnJvbnQgb2YgdGhlIG5h
bWUgb2YgZWFjaCB0ZXN0LCBvciBhbHRlcm5hdGl2ZWx5IGFkZCBpdCB0byB0aGUgZnJvbnQgb2YK
K3RoZSB0ZXN0IGNhc2UgbmFtZS4KKworRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVzdHMg
d29uJ3QgYmUgcnVuIGJ5IGdvb2dsZXRlc3QsIGV2ZW4gdGhvdWdoIHRoZXkKK3dpbGwgc3RpbGwg
YmUgY29tcGlsZWQ6CisKK2BgYGMrKworLy8gVGVzdHMgdGhhdCBGb28gZG9lcyBBYmMuCitURVNU
KEZvb1Rlc3QsIERJU0FCTEVEX0RvZXNBYmMpIHsgLi4uIH0KKworY2xhc3MgRElTQUJMRURfQmFy
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKKworLy8gVGVzdHMgdGhhdCBC
YXIgZG9lcyBYeXouCitURVNUX0YoRElTQUJMRURfQmFyVGVzdCwgRG9lc1h5eikgeyAuLi4gfQor
YGBgCisKK05PVEU6IFRoaXMgZmVhdHVyZSBzaG91bGQgb25seSBiZSB1c2VkIGZvciB0ZW1wb3Jh
cnkgcGFpbi1yZWxpZWYuIFlvdSBzdGlsbCBoYXZlCit0byBmaXggdGhlIGRpc2FibGVkIHRlc3Rz
IGF0IGEgbGF0ZXIgZGF0ZS4gQXMgYSByZW1pbmRlciwgZ29vZ2xldGVzdCB3aWxsIHByaW50Cith
IGJhbm5lciB3YXJuaW5nIHlvdSBpZiBhIHRlc3QgcHJvZ3JhbSBjb250YWlucyBhbnkgZGlzYWJs
ZWQgdGVzdHMuCisKK1RJUDogWW91IGNhbiBlYXNpbHkgY291bnQgdGhlIG51bWJlciBvZiBkaXNh
YmxlZCB0ZXN0cyB5b3UgaGF2ZSB1c2luZyBgZ3NlYXJjaGAKK2FuZC9vciBgZ3JlcGAuIFRoaXMg
bnVtYmVyIGNhbiBiZSB1c2VkIGFzIGEgbWV0cmljIGZvciBpbXByb3ZpbmcgeW91ciB0ZXN0Citx
dWFsaXR5LgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMj
IFRlbXBvcmFyaWx5IEVuYWJsaW5nIERpc2FibGVkIFRlc3RzCisKK1RvIGluY2x1ZGUgZGlzYWJs
ZWQgdGVzdHMgaW4gdGVzdCBleGVjdXRpb24sIGp1c3QgaW52b2tlIHRoZSB0ZXN0IHByb2dyYW0g
d2l0aAordGhlIGAtLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzYCBmbGFnIG9yIHNldCB0
aGUKK2BHVEVTVF9BTFNPX1JVTl9ESVNBQkxFRF9URVNUU2AgZW52aXJvbm1lbnQgdmFyaWFibGUg
dG8gYSB2YWx1ZSBvdGhlciB0aGFuIGAwYC4KK1lvdSBjYW4gY29tYmluZSB0aGlzIHdpdGggdGhl
IGAtLWd0ZXN0X2ZpbHRlcmAgZmxhZyB0byBmdXJ0aGVyIHNlbGVjdCB3aGljaAorZGlzYWJsZWQg
dGVzdHMgdG8gcnVuLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgor
CisjIyMgUmVwZWF0aW5nIHRoZSBUZXN0cworCitPbmNlIGluIGEgd2hpbGUgeW91J2xsIHJ1biBp
bnRvIGEgdGVzdCB3aG9zZSByZXN1bHQgaXMgaGl0LW9yLW1pc3MuIFBlcmhhcHMgaXQKK3dpbGwg
ZmFpbCBvbmx5IDElIG9mIHRoZSB0aW1lLCBtYWtpbmcgaXQgcmF0aGVyIGhhcmQgdG8gcmVwcm9k
dWNlIHRoZSBidWcgdW5kZXIKK2EgZGVidWdnZXIuIFRoaXMgY2FuIGJlIGEgbWFqb3Igc291cmNl
IG9mIGZydXN0cmF0aW9uLgorCitUaGUgYC0tZ3Rlc3RfcmVwZWF0YCBmbGFnIGFsbG93cyB5b3Ug
dG8gcmVwZWF0IGFsbCAob3Igc2VsZWN0ZWQpIHRlc3QgbWV0aG9kcyBpbgorYSBwcm9ncmFtIG1h
bnkgdGltZXMuIEhvcGVmdWxseSwgYSBmbGFreSB0ZXN0IHdpbGwgZXZlbnR1YWxseSBmYWlsIGFu
ZCBnaXZlIHlvdQorYSBjaGFuY2UgdG8gZGVidWcuIEhlcmUncyBob3cgdG8gdXNlIGl0OgorCitg
YGBub25lCiskIGZvb190ZXN0IC0tZ3Rlc3RfcmVwZWF0PTEwMDAKK1JlcGVhdCBmb29fdGVzdCAx
MDAwIHRpbWVzIGFuZCBkb24ndCBzdG9wIGF0IGZhaWx1cmVzLgorCiskIGZvb190ZXN0IC0tZ3Rl
c3RfcmVwZWF0PS0xCitBIG5lZ2F0aXZlIGNvdW50IG1lYW5zIHJlcGVhdGluZyBmb3JldmVyLgor
CiskIGZvb190ZXN0IC0tZ3Rlc3RfcmVwZWF0PTEwMDAgLS1ndGVzdF9icmVha19vbl9mYWlsdXJl
CitSZXBlYXQgZm9vX3Rlc3QgMTAwMCB0aW1lcywgc3RvcHBpbmcgYXQgdGhlIGZpcnN0IGZhaWx1
cmUuICBUaGlzCitpcyBlc3BlY2lhbGx5IHVzZWZ1bCB3aGVuIHJ1bm5pbmcgdW5kZXIgYSBkZWJ1
Z2dlcjogd2hlbiB0aGUgdGVzdAorZmFpbHMsIGl0IHdpbGwgZHJvcCBpbnRvIHRoZSBkZWJ1Z2dl
ciBhbmQgeW91IGNhbiB0aGVuIGluc3BlY3QKK3ZhcmlhYmxlcyBhbmQgc3RhY2tzLgorCiskIGZv
b190ZXN0IC0tZ3Rlc3RfcmVwZWF0PTEwMDAgLS1ndGVzdF9maWx0ZXI9Rm9vQmFyLioKK1JlcGVh
dCB0aGUgdGVzdHMgd2hvc2UgbmFtZSBtYXRjaGVzIHRoZSBmaWx0ZXIgMTAwMCB0aW1lcy4KK2Bg
YAorCitJZiB5b3VyIHRlc3QgcHJvZ3JhbSBjb250YWlucyBbZ2xvYmFsIHNldC11cC90ZWFyLWRv
d25dKCNnbG9iYWwtc2V0LXVwLWFuZC10ZWFyLWRvd24pIGNvZGUsIGl0Cit3aWxsIGJlIHJlcGVh
dGVkIGluIGVhY2ggaXRlcmF0aW9uIGFzIHdlbGwsIGFzIHRoZSBmbGFraW5lc3MgbWF5IGJlIGlu
IGl0LiBZb3UKK2NhbiBhbHNvIHNwZWNpZnkgdGhlIHJlcGVhdCBjb3VudCBieSBzZXR0aW5nIHRo
ZSBgR1RFU1RfUkVQRUFUYCBlbnZpcm9ubWVudAordmFyaWFibGUuCisKKyoqQXZhaWxhYmlsaXR5
Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBTaHVmZmxpbmcgdGhlIFRlc3RzCisKK1lv
dSBjYW4gc3BlY2lmeSB0aGUgYC0tZ3Rlc3Rfc2h1ZmZsZWAgZmxhZyAob3Igc2V0IHRoZSBgR1RF
U1RfU0hVRkZMRWAKK2Vudmlyb25tZW50IHZhcmlhYmxlIHRvIGAxYCkgdG8gcnVuIHRoZSB0ZXN0
cyBpbiBhIHByb2dyYW0gaW4gYSByYW5kb20gb3JkZXIuCitUaGlzIGhlbHBzIHRvIHJldmVhbCBi
YWQgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGVzdHMuCisKK0J5IGRlZmF1bHQsIGdvb2dsZXRlc3Qg
dXNlcyBhIHJhbmRvbSBzZWVkIGNhbGN1bGF0ZWQgZnJvbSB0aGUgY3VycmVudCB0aW1lLgorVGhl
cmVmb3JlIHlvdSdsbCBnZXQgYSBkaWZmZXJlbnQgb3JkZXIgZXZlcnkgdGltZS4gVGhlIGNvbnNv
bGUgb3V0cHV0IGluY2x1ZGVzCit0aGUgcmFuZG9tIHNlZWQgdmFsdWUsIHN1Y2ggdGhhdCB5b3Ug
Y2FuIHJlcHJvZHVjZSBhbiBvcmRlci1yZWxhdGVkIHRlc3QgZmFpbHVyZQorbGF0ZXIuIFRvIHNw
ZWNpZnkgdGhlIHJhbmRvbSBzZWVkIGV4cGxpY2l0bHksIHVzZSB0aGUgYC0tZ3Rlc3RfcmFuZG9t
X3NlZWQ9U0VFRGAKK2ZsYWcgKG9yIHNldCB0aGUgYEdURVNUX1JBTkRPTV9TRUVEYCBlbnZpcm9u
bWVudCB2YXJpYWJsZSksIHdoZXJlIGBTRUVEYCBpcyBhbgoraW50ZWdlciBpbiB0aGUgcmFuZ2Ug
WzAsIDk5OTk5XS4gVGhlIHNlZWQgdmFsdWUgMCBpcyBzcGVjaWFsOiBpdCB0ZWxscworZ29vZ2xl
dGVzdCB0byBkbyB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBjYWxjdWxhdGluZyB0aGUgc2VlZCBm
cm9tIHRoZSBjdXJyZW50Cit0aW1lLgorCitJZiB5b3UgY29tYmluZSB0aGlzIHdpdGggYC0tZ3Rl
c3RfcmVwZWF0PU5gLCBnb29nbGV0ZXN0IHdpbGwgcGljayBhIGRpZmZlcmVudAorcmFuZG9tIHNl
ZWQgYW5kIHJlLXNodWZmbGUgdGhlIHRlc3RzIGluIGVhY2ggaXRlcmF0aW9uLgorCisqKkF2YWls
YWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgQ29udHJvbGxpbmcgVGVzdCBP
dXRwdXQKKworIyMjIyBDb2xvcmVkIFRlcm1pbmFsIE91dHB1dAorCitnb29nbGV0ZXN0IGNhbiB1
c2UgY29sb3JzIGluIGl0cyB0ZXJtaW5hbCBvdXRwdXQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc3Bv
dCB0aGUKK2ltcG9ydGFudCBpbmZvcm1hdGlvbjoKKworLi4uPGJyLz4KKzxzcGFuIHN0eWxlPSJj
b2xvcjpncmVlbiI+Wy0tLS0tLS0tLS1dPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4gMSB0ZXN0
IGZyb20gRm9vVGVzdDxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPlsgUlVOICAgICAg
XTxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+IEZvb1Rlc3QuRG9lc0FiYzxici8+Cis8c3BhbiBz
dHlsZT0iY29sb3I6Z3JlZW4iPlsgICAgICAgT0sgXTxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+
IEZvb1Rlc3QuRG9lc0FiYzxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPlstLS0tLS0t
LS0tXTxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+IDIgdGVzdHMgZnJvbSBCYXJUZXN0PGJyLz4K
KzxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbiI+WyBSVU4gICAgICBdPHNwYW4gc3R5bGU9ImNvbG9y
OmJsYWNrIj4gQmFyVGVzdC5IYXNYeXpQcm9wZXJ0eTxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6
Z3JlZW4iPlsgICAgICAgT0sgXTxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+IEJhclRlc3QuSGFz
WHl6UHJvcGVydHk8YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuIj5bIFJVTiAgICAgIF08
c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiBCYXJUZXN0LlJldHVybnNUcnVlT25TdWNjZXNzPGJy
Lz4KKy4uLiBzb21lIGVycm9yIG1lc3NhZ2VzIC4uLjxici8+Cis8c3BhbiAgIHN0eWxlPSJjb2xv
cjpyZWQiPlsgIEZBSUxFRCAgXSA8c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPkJhclRlc3QuUmV0
dXJuc1RydWVPblN1Y2Nlc3M8YnIvPgorLi4uPGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpncmVl
biI+Wz09PT09PT09PT1dPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4gMzAgdGVzdHMgZnJvbSAx
NCB0ZXN0IGNhc2VzIHJhbi48YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuIj5bICBQQVNT
RUQgIF08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiAyOCB0ZXN0cy48YnIvPgorPHNwYW4gc3R5
bGU9ImNvbG9yOnJlZCI+WyAgRkFJTEVEICBdPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4gMiB0
ZXN0cywgbGlzdGVkIGJlbG93Ojxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6cmVkIj5bICBGQUlM
RUQgIF08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiBCYXJUZXN0LlJldHVybnNUcnVlT25TdWNj
ZXNzPGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPlsgIEZBSUxFRCAgXTxzcGFuIHN0eWxl
PSJjb2xvcjpibGFjayI+IEFub3RoZXJUZXN0LkRvZXNYeXo8YnIvPgorICAyIEZBSUxFRCBURVNU
UworCitZb3UgY2FuIHNldCB0aGUgYEdURVNUX0NPTE9SYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBv
ciB0aGUgYC0tZ3Rlc3RfY29sb3JgCitjb21tYW5kIGxpbmUgZmxhZyB0byBgeWVzYCwgYG5vYCwg
b3IgYGF1dG9gICh0aGUgZGVmYXVsdCkgdG8gZW5hYmxlIGNvbG9ycywKK2Rpc2FibGUgY29sb3Jz
LCBvciBsZXQgZ29vZ2xldGVzdCBkZWNpZGUuIFdoZW4gdGhlIHZhbHVlIGlzIGBhdXRvYCwgZ29v
Z2xldGVzdAord2lsbCB1c2UgY29sb3JzIGlmIGFuZCBvbmx5IGlmIHRoZSBvdXRwdXQgZ29lcyB0
byBhIHRlcm1pbmFsIGFuZCAob24gbm9uLVdpbmRvd3MKK3BsYXRmb3JtcykgdGhlIGBURVJNYCBl
bnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQgdG8gYHh0ZXJtYCBvciBgeHRlcm0tY29sb3JgLgor
CisgKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIyBTdXBwcmVz
c2luZyB0aGUgRWxhcHNlZCBUaW1lCisKK0J5IGRlZmF1bHQsIGdvb2dsZXRlc3QgcHJpbnRzIHRo
ZSB0aW1lIGl0IHRha2VzIHRvIHJ1biBlYWNoIHRlc3QuIFRvIGRpc2FibGUKK3RoYXQsIHJ1biB0
aGUgdGVzdCBwcm9ncmFtIHdpdGggdGhlIGAtLWd0ZXN0X3ByaW50X3RpbWU9MGAgY29tbWFuZCBs
aW5lIGZsYWcsIG9yCitzZXQgdGhlIEdURVNUX1BSSU5UX1RJTUUgZW52aXJvbm1lbnQgdmFyaWFi
bGUgdG8gYDBgLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisj
IyMjIFN1cHByZXNzaW5nIFVURi04IFRleHQgT3V0cHV0CisKK0luIGNhc2Ugb2YgYXNzZXJ0aW9u
IGZhaWx1cmVzLCBnb29nbGV0ZXN0IHByaW50cyBleHBlY3RlZCBhbmQgYWN0dWFsIHZhbHVlcyBv
ZgordHlwZSBgc3RyaW5nYCBib3RoIGFzIGhleC1lbmNvZGVkIHN0cmluZ3MgYXMgd2VsbCBhcyBp
biByZWFkYWJsZSBVVEYtOCB0ZXh0IGlmCit0aGV5IGNvbnRhaW4gdmFsaWQgbm9uLUFTQ0lJIFVU
Ri04IGNoYXJhY3RlcnMuIElmIHlvdSB3YW50IHRvIHN1cHByZXNzIHRoZSBVVEYtOAordGV4dCBi
ZWNhdXNlLCBmb3IgZXhhbXBsZSwgeW91IGRvbid0IGhhdmUgYW4gVVRGLTggY29tcGF0aWJsZSBv
dXRwdXQgbWVkaXVtLCBydW4KK3RoZSB0ZXN0IHByb2dyYW0gd2l0aCBgLS1ndGVzdF9wcmludF91
dGY4PTBgIG9yIHNldCB0aGUgYEdURVNUX1BSSU5UX1VURjhgCitlbnZpcm9ubWVudCB2YXJpYWJs
ZSB0byBgMGAuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKwor
IyMjIyBHZW5lcmF0aW5nIGFuIFhNTCBSZXBvcnQKKworZ29vZ2xldGVzdCBjYW4gZW1pdCBhIGRl
dGFpbGVkIFhNTCByZXBvcnQgdG8gYSBmaWxlIGluIGFkZGl0aW9uIHRvIGl0cyBub3JtYWwKK3Rl
eHR1YWwgb3V0cHV0LiBUaGUgcmVwb3J0IGNvbnRhaW5zIHRoZSBkdXJhdGlvbiBvZiBlYWNoIHRl
c3QsIGFuZCB0aHVzIGNhbiBoZWxwCit5b3UgaWRlbnRpZnkgc2xvdyB0ZXN0cy4gVGhlIHJlcG9y
dCBpcyBhbHNvIHVzZWQgYnkgdGhlIGh0dHA6Ly91bml0dGVzdAorZGFzaGJvYXJkIHRvIHNob3cg
cGVyLXRlc3QtbWV0aG9kIGVycm9yIG1lc3NhZ2VzLgorCitUbyBnZW5lcmF0ZSB0aGUgWE1MIHJl
cG9ydCwgc2V0IHRoZSBgR1RFU1RfT1VUUFVUYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUK
K2AtLWd0ZXN0X291dHB1dGAgZmxhZyB0byB0aGUgc3RyaW5nIGAieG1sOnBhdGhfdG9fb3V0cHV0
X2ZpbGUiYCwgd2hpY2ggd2lsbAorY3JlYXRlIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBsb2NhdGlv
bi4gWW91IGNhbiBhbHNvIGp1c3QgdXNlIHRoZSBzdHJpbmcgYCJ4bWwiYCwKK2luIHdoaWNoIGNh
c2UgdGhlIG91dHB1dCBjYW4gYmUgZm91bmQgaW4gdGhlIGB0ZXN0X2RldGFpbC54bWxgIGZpbGUg
aW4gdGhlCitjdXJyZW50IGRpcmVjdG9yeS4KKworSWYgeW91IHNwZWNpZnkgYSBkaXJlY3Rvcnkg
KGZvciBleGFtcGxlLCBgInhtbDpvdXRwdXQvZGlyZWN0b3J5LyJgIG9uIExpbnV4IG9yCitgInht
bDpvdXRwdXRcZGlyZWN0b3J5XCJgIG9uIFdpbmRvd3MpLCBnb29nbGV0ZXN0IHdpbGwgY3JlYXRl
IHRoZSBYTUwgZmlsZSBpbgordGhhdCBkaXJlY3RvcnksIG5hbWVkIGFmdGVyIHRoZSB0ZXN0IGV4
ZWN1dGFibGUgKGUuZy4gYGZvb190ZXN0LnhtbGAgZm9yIHRlc3QKK3Byb2dyYW0gYGZvb190ZXN0
YCBvciBgZm9vX3Rlc3QuZXhlYCkuIElmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzIChwZXJoYXBz
IGxlZnQKK292ZXIgZnJvbSBhIHByZXZpb3VzIHJ1biksIGdvb2dsZXRlc3Qgd2lsbCBwaWNrIGEg
ZGlmZmVyZW50IG5hbWUgKGUuZy4KK2Bmb29fdGVzdF8xLnhtbGApIHRvIGF2b2lkIG92ZXJ3cml0
aW5nIGl0LgorCisKK1RoZSByZXBvcnQgaXMgYmFzZWQgb24gdGhlIGBqdW5pdHJlcG9ydGAgQW50
IHRhc2suIFNpbmNlIHRoYXQgZm9ybWF0IHdhcworb3JpZ2luYWxseSBpbnRlbmRlZCBmb3IgSmF2
YSwgYSBsaXR0bGUgaW50ZXJwcmV0YXRpb24gaXMgcmVxdWlyZWQgdG8gbWFrZSBpdAorYXBwbHkg
dG8gZ29vZ2xldGVzdCB0ZXN0cywgYXMgc2hvd24gaGVyZToKKworYGBgeG1sCis8dGVzdHN1aXRl
cyBuYW1lPSJBbGxUZXN0cyIgLi4uPgorICA8dGVzdHN1aXRlIG5hbWU9InRlc3RfY2FzZV9uYW1l
IiAuLi4+CisgICAgPHRlc3RjYXNlICAgIG5hbWU9InRlc3RfbmFtZSIgLi4uPgorICAgICAgPGZh
aWx1cmUgbWVzc2FnZT0iLi4uIi8+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4KKyAg
ICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiIvPgorICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1
aXRlPgorPC90ZXN0c3VpdGVzPgorYGBgCisKKyogICBUaGUgcm9vdCBgPHRlc3RzdWl0ZXM+YCBl
bGVtZW50IGNvcnJlc3BvbmRzIHRvIHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFtLgorKiAgIGA8dGVz
dHN1aXRlPmAgZWxlbWVudHMgY29ycmVzcG9uZCB0byBnb29nbGV0ZXN0IHRlc3QgY2FzZXMuCisq
ICAgYDx0ZXN0Y2FzZT5gIGVsZW1lbnRzIGNvcnJlc3BvbmQgdG8gZ29vZ2xldGVzdCB0ZXN0IGZ1
bmN0aW9ucy4KKworRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIHByb2dyYW0KKworYGBgYysr
CitURVNUKE1hdGhUZXN0LCBBZGRpdGlvbikgeyAuLi4gfQorVEVTVChNYXRoVGVzdCwgU3VidHJh
Y3Rpb24pIHsgLi4uIH0KK1RFU1QoTG9naWNUZXN0LCBOb25Db250cmFkaWN0aW9uKSB7IC4uLiB9
CitgYGAKKworY291bGQgZ2VuZXJhdGUgdGhpcyByZXBvcnQ6CisKK2BgYHhtbAorPD94bWwgdmVy
c2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIzIiBmYWls
dXJlcz0iMSIgZXJyb3JzPSIwIiB0aW1lPSIwLjAzNSIgdGltZXN0YW1wPSIyMDExLTEwLTMxVDE4
OjUyOjQyIiBuYW1lPSJBbGxUZXN0cyI+CisgIDx0ZXN0c3VpdGUgbmFtZT0iTWF0aFRlc3QiIHRl
c3RzPSIyIiBmYWlsdXJlcz0iMSIgZXJyb3JzPSIwIiB0aW1lPSIwLjAxNSI+CisgICAgPHRlc3Rj
YXNlIG5hbWU9IkFkZGl0aW9uIiBzdGF0dXM9InJ1biIgdGltZT0iMC4wMDciIGNsYXNzbmFtZT0i
Ij4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IlZhbHVlIG9mOiBhZGQoMSwgMSkmI3gwQTsgIEFj
dHVhbDogMyYjeDBBO0V4cGVjdGVkOiAyIiB0eXBlPSIiPi4uLjwvZmFpbHVyZT4KKyAgICAgIDxm
YWlsdXJlIG1lc3NhZ2U9IlZhbHVlIG9mOiBhZGQoMSwgLTEpJiN4MEE7ICBBY3R1YWw6IDEmI3gw
QTtFeHBlY3RlZDogMCIgdHlwZT0iIj4uLi48L2ZhaWx1cmU+CisgICAgPC90ZXN0Y2FzZT4KKyAg
ICA8dGVzdGNhc2UgbmFtZT0iU3VidHJhY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSIwLjAwNSIg
Y2xhc3NuYW1lPSIiPgorICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorICA8dGVzdHN1
aXRlIG5hbWU9IkxvZ2ljVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBlcnJvcnM9IjAiIHRp
bWU9IjAuMDA1Ij4KKyAgICA8dGVzdGNhc2UgbmFtZT0iTm9uQ29udHJhZGljdGlvbiIgc3RhdHVz
PSJydW4iIHRpbWU9IjAuMDA1IiBjbGFzc25hbWU9IiI+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90
ZXN0c3VpdGU+Cis8L3Rlc3RzdWl0ZXM+CitgYGAKKworVGhpbmdzIHRvIG5vdGU6CisKKyogICBU
aGUgYHRlc3RzYCBhdHRyaWJ1dGUgb2YgYSBgPHRlc3RzdWl0ZXM+YCBvciBgPHRlc3RzdWl0ZT5g
IGVsZW1lbnQgdGVsbHMgaG93CisgICAgbWFueSB0ZXN0IGZ1bmN0aW9ucyB0aGUgZ29vZ2xldGVz
dCBwcm9ncmFtIG9yIHRlc3QgY2FzZSBjb250YWlucywgd2hpbGUgdGhlCisgICAgYGZhaWx1cmVz
YCBhdHRyaWJ1dGUgdGVsbHMgaG93IG1hbnkgb2YgdGhlbSBmYWlsZWQuCisKKyogICBUaGUgYHRp
bWVgIGF0dHJpYnV0ZSBleHByZXNzZXMgdGhlIGR1cmF0aW9uIG9mIHRoZSB0ZXN0LCB0ZXN0IGNh
c2UsIG9yCisgICAgZW50aXJlIHRlc3QgcHJvZ3JhbSBpbiBzZWNvbmRzLgorCisqICAgVGhlIGB0
aW1lc3RhbXBgIGF0dHJpYnV0ZSByZWNvcmRzIHRoZSBsb2NhbCBkYXRlIGFuZCB0aW1lIG9mIHRo
ZSB0ZXN0CisgICAgZXhlY3V0aW9uLgorCisqICAgRWFjaCBgPGZhaWx1cmU+YCBlbGVtZW50IGNv
cnJlc3BvbmRzIHRvIGEgc2luZ2xlIGZhaWxlZCBnb29nbGV0ZXN0CisgICAgYXNzZXJ0aW9uLgor
CisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMjIEdlbmVyYXRp
bmcgYW4gSlNPTiBSZXBvcnQKKworZ29vZ2xldGVzdCBjYW4gYWxzbyBlbWl0IGEgSlNPTiByZXBv
cnQgYXMgYW4gYWx0ZXJuYXRpdmUgZm9ybWF0IHRvIFhNTC4gVG8KK2dlbmVyYXRlIHRoZSBKU09O
IHJlcG9ydCwgc2V0IHRoZSBgR1RFU1RfT1VUUFVUYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0
aGUKK2AtLWd0ZXN0X291dHB1dGAgZmxhZyB0byB0aGUgc3RyaW5nIGAianNvbjpwYXRoX3RvX291
dHB1dF9maWxlImAsIHdoaWNoIHdpbGwKK2NyZWF0ZSB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gbG9j
YXRpb24uIFlvdSBjYW4gYWxzbyBqdXN0IHVzZSB0aGUgc3RyaW5nCitgImpzb24iYCwgaW4gd2hp
Y2ggY2FzZSB0aGUgb3V0cHV0IGNhbiBiZSBmb3VuZCBpbiB0aGUgYHRlc3RfZGV0YWlsLmpzb25g
IGZpbGUKK2luIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKworVGhlIHJlcG9ydCBmb3JtYXQgY29u
Zm9ybXMgdG8gdGhlIGZvbGxvd2luZyBKU09OIFNjaGVtYToKKworYGBganNvbgoreworICAiJHNj
aGVtYSI6ICJodHRwOi8vanNvbi1zY2hlbWEub3JnL3NjaGVtYSMiLAorICAidHlwZSI6ICJvYmpl
Y3QiLAorICAiZGVmaW5pdGlvbnMiOiB7CisgICAgIlRlc3RDYXNlIjogeworICAgICAgInR5cGUi
OiAib2JqZWN0IiwKKyAgICAgICJwcm9wZXJ0aWVzIjogeworICAgICAgICAibmFtZSI6IHsgInR5
cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAidGVzdHMiOiB7ICJ0eXBlIjogImludGVnZXIiIH0s
CisgICAgICAgICJmYWlsdXJlcyI6IHsgInR5cGUiOiAiaW50ZWdlciIgfSwKKyAgICAgICAgImRp
c2FibGVkIjogeyAidHlwZSI6ICJpbnRlZ2VyIiB9LAorICAgICAgICAidGltZSI6IHsgInR5cGUi
OiAic3RyaW5nIiB9LAorICAgICAgICAidGVzdHN1aXRlIjogeworICAgICAgICAgICJ0eXBlIjog
ImFycmF5IiwKKyAgICAgICAgICAiaXRlbXMiOiB7CisgICAgICAgICAgICAiJHJlZiI6ICIjL2Rl
ZmluaXRpb25zL1Rlc3RJbmZvIgorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAg
IH0sCisgICAgIlRlc3RJbmZvIjogeworICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICJw
cm9wZXJ0aWVzIjogeworICAgICAgICAibmFtZSI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAorICAg
ICAgICAic3RhdHVzIjogeworICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisgICAgICAgICAg
ImVudW0iOiBbIlJVTiIsICJOT1RSVU4iXQorICAgICAgICB9LAorICAgICAgICAidGltZSI6IHsg
InR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAiY2xhc3NuYW1lIjogeyAidHlwZSI6ICJzdHJp
bmciIH0sCisgICAgICAgICJmYWlsdXJlcyI6IHsKKyAgICAgICAgICAidHlwZSI6ICJhcnJheSIs
CisgICAgICAgICAgIml0ZW1zIjogeworICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9u
cy9GYWlsdXJlIgorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAg
IkZhaWx1cmUiOiB7CisgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgInByb3BlcnRpZXMi
OiB7CisgICAgICAgICJmYWlsdXJlcyI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAi
dHlwZSI6IHsgInR5cGUiOiAic3RyaW5nIiB9CisgICAgICB9CisgICAgfQorICB9LAorICAicHJv
cGVydGllcyI6IHsKKyAgICAidGVzdHMiOiB7ICJ0eXBlIjogImludGVnZXIiIH0sCisgICAgImZh
aWx1cmVzIjogeyAidHlwZSI6ICJpbnRlZ2VyIiB9LAorICAgICJkaXNhYmxlZCI6IHsgInR5cGUi
OiAiaW50ZWdlciIgfSwKKyAgICAiZXJyb3JzIjogeyAidHlwZSI6ICJpbnRlZ2VyIiB9LAorICAg
ICJ0aW1lc3RhbXAiOiB7CisgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgImZvcm1hdCI6
ICJkYXRlLXRpbWUiCisgICAgfSwKKyAgICAidGltZSI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAor
ICAgICJuYW1lIjogeyAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgInRlc3RzdWl0ZXMiOiB7Cisg
ICAgICAidHlwZSI6ICJhcnJheSIsCisgICAgICAiaXRlbXMiOiB7CisgICAgICAgICIkcmVmIjog
IiMvZGVmaW5pdGlvbnMvVGVzdENhc2UiCisgICAgICB9CisgICAgfQorICB9Cit9CitgYGAKKwor
VGhlIHJlcG9ydCB1c2VzIHRoZSBmb3JtYXQgdGhhdCBjb25mb3JtcyB0byB0aGUgZm9sbG93aW5n
IFByb3RvMyB1c2luZyB0aGUgW0pTT04KK2VuY29kaW5nXShodHRwczovL2RldmVsb3BlcnMuZ29v
Z2xlLmNvbS9wcm90b2NvbC1idWZmZXJzL2RvY3MvcHJvdG8zI2pzb24pOgorCitgYGBwcm90bwor
c3ludGF4ID0gInByb3RvMyI7CisKK3BhY2thZ2UgZ29vZ2xldGVzdDsKKworaW1wb3J0ICJnb29n
bGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvIjsKK2ltcG9ydCAiZ29vZ2xlL3Byb3RvYnVmL2R1
cmF0aW9uLnByb3RvIjsKKworbWVzc2FnZSBVbml0VGVzdCB7CisgIGludDMyIHRlc3RzID0gMTsK
KyAgaW50MzIgZmFpbHVyZXMgPSAyOworICBpbnQzMiBkaXNhYmxlZCA9IDM7CisgIGludDMyIGVy
cm9ycyA9IDQ7CisgIGdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAgdGltZXN0YW1wID0gNTsKKyAg
Z29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uIHRpbWUgPSA2OworICBzdHJpbmcgbmFtZSA9IDc7Cisg
IHJlcGVhdGVkIFRlc3RDYXNlIHRlc3RzdWl0ZXMgPSA4OworfQorCittZXNzYWdlIFRlc3RDYXNl
IHsKKyAgc3RyaW5nIG5hbWUgPSAxOworICBpbnQzMiB0ZXN0cyA9IDI7CisgIGludDMyIGZhaWx1
cmVzID0gMzsKKyAgaW50MzIgZGlzYWJsZWQgPSA0OworICBpbnQzMiBlcnJvcnMgPSA1OworICBn
b29nbGUucHJvdG9idWYuRHVyYXRpb24gdGltZSA9IDY7CisgIHJlcGVhdGVkIFRlc3RJbmZvIHRl
c3RzdWl0ZSA9IDc7Cit9CisKK21lc3NhZ2UgVGVzdEluZm8geworICBzdHJpbmcgbmFtZSA9IDE7
CisgIGVudW0gU3RhdHVzIHsKKyAgICBSVU4gPSAwOworICAgIE5PVFJVTiA9IDE7CisgIH0KKyAg
U3RhdHVzIHN0YXR1cyA9IDI7CisgIGdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbiB0aW1lID0gMzsK
KyAgc3RyaW5nIGNsYXNzbmFtZSA9IDQ7CisgIG1lc3NhZ2UgRmFpbHVyZSB7CisgICAgc3RyaW5n
IGZhaWx1cmVzID0gMTsKKyAgICBzdHJpbmcgdHlwZSA9IDI7CisgIH0KKyAgcmVwZWF0ZWQgRmFp
bHVyZSBmYWlsdXJlcyA9IDU7Cit9CitgYGAKKworRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5n
IHByb2dyYW0KKworYGBgYysrCitURVNUKE1hdGhUZXN0LCBBZGRpdGlvbikgeyAuLi4gfQorVEVT
VChNYXRoVGVzdCwgU3VidHJhY3Rpb24pIHsgLi4uIH0KK1RFU1QoTG9naWNUZXN0LCBOb25Db250
cmFkaWN0aW9uKSB7IC4uLiB9CitgYGAKKworY291bGQgZ2VuZXJhdGUgdGhpcyByZXBvcnQ6CisK
K2BgYGpzb24KK3sKKyAgInRlc3RzIjogMywKKyAgImZhaWx1cmVzIjogMSwKKyAgImVycm9ycyI6
IDAsCisgICJ0aW1lIjogIjAuMDM1cyIsCisgICJ0aW1lc3RhbXAiOiAiMjAxMS0xMC0zMVQxODo1
Mjo0MloiCisgICJuYW1lIjogIkFsbFRlc3RzIiwKKyAgInRlc3RzdWl0ZXMiOiBbCisgICAgewor
ICAgICAgIm5hbWUiOiAiTWF0aFRlc3QiLAorICAgICAgInRlc3RzIjogMiwKKyAgICAgICJmYWls
dXJlcyI6IDEsCisgICAgICAiZXJyb3JzIjogMCwKKyAgICAgICJ0aW1lIjogIjAuMDE1cyIsCisg
ICAgICAidGVzdHN1aXRlIjogWworICAgICAgICB7CisgICAgICAgICAgIm5hbWUiOiAiQWRkaXRp
b24iLAorICAgICAgICAgICJzdGF0dXMiOiAiUlVOIiwKKyAgICAgICAgICAidGltZSI6ICIwLjAw
N3MiLAorICAgICAgICAgICJjbGFzc25hbWUiOiAiIiwKKyAgICAgICAgICAiZmFpbHVyZXMiOiBb
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICJtZXNzYWdlIjogIlZhbHVlIG9mOiBhZGQo
MSwgMSlceDBBICBBY3R1YWw6IDNceDBBRXhwZWN0ZWQ6IDIiLAorICAgICAgICAgICAgICAidHlw
ZSI6ICIiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAibWVz
c2FnZSI6ICJWYWx1ZSBvZjogYWRkKDEsIC0xKVx4MEEgIEFjdHVhbDogMVx4MEFFeHBlY3RlZDog
MCIsCisgICAgICAgICAgICAgICJ0eXBlIjogIiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBd
CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAibmFtZSI6ICJTdWJ0cmFjdGlvbiIs
CisgICAgICAgICAgInN0YXR1cyI6ICJSVU4iLAorICAgICAgICAgICJ0aW1lIjogIjAuMDA1cyIs
CisgICAgICAgICAgImNsYXNzbmFtZSI6ICIiCisgICAgICAgIH0KKyAgICAgIF0KKyAgICB9Cisg
ICAgeworICAgICAgIm5hbWUiOiAiTG9naWNUZXN0IiwKKyAgICAgICJ0ZXN0cyI6IDEsCisgICAg
ICAiZmFpbHVyZXMiOiAwLAorICAgICAgImVycm9ycyI6IDAsCisgICAgICAidGltZSI6ICIwLjAw
NXMiLAorICAgICAgInRlc3RzdWl0ZSI6IFsKKyAgICAgICAgeworICAgICAgICAgICJuYW1lIjog
Ik5vbkNvbnRyYWRpY3Rpb24iLAorICAgICAgICAgICJzdGF0dXMiOiAiUlVOIiwKKyAgICAgICAg
ICAidGltZSI6ICIwLjAwNXMiLAorICAgICAgICAgICJjbGFzc25hbWUiOiAiIgorICAgICAgICB9
CisgICAgICBdCisgICAgfQorICBdCit9CitgYGAKKworSU1QT1JUQU5UOiBUaGUgZXhhY3QgZm9y
bWF0IG9mIHRoZSBKU09OIGRvY3VtZW50IGlzIHN1YmplY3QgdG8gY2hhbmdlLgorCisqKkF2YWls
YWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgQ29udHJvbGxpbmcgSG93IEZh
aWx1cmVzIEFyZSBSZXBvcnRlZAorCisjIyMjIFR1cm5pbmcgQXNzZXJ0aW9uIEZhaWx1cmVzIGlu
dG8gQnJlYWstUG9pbnRzCisKK1doZW4gcnVubmluZyB0ZXN0IHByb2dyYW1zIHVuZGVyIGEgZGVi
dWdnZXIsIGl0J3MgdmVyeSBjb252ZW5pZW50IGlmIHRoZQorZGVidWdnZXIgY2FuIGNhdGNoIGFu
IGFzc2VydGlvbiBmYWlsdXJlIGFuZCBhdXRvbWF0aWNhbGx5IGRyb3AgaW50byBpbnRlcmFjdGl2
ZQorbW9kZS4gZ29vZ2xldGVzdCdzICpicmVhay1vbi1mYWlsdXJlKiBtb2RlIHN1cHBvcnRzIHRo
aXMgYmVoYXZpb3IuCisKK1RvIGVuYWJsZSBpdCwgc2V0IHRoZSBgR1RFU1RfQlJFQUtfT05fRkFJ
TFVSRWAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSB2YWx1ZQorb3RoZXIgdGhhbiBgMGAgLiBB
bHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSB0aGUgYC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZWAK
K2NvbW1hbmQgbGluZSBmbGFnLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywg
TWFjLgorCisjIyMjIERpc2FibGluZyBDYXRjaGluZyBUZXN0LVRocm93biBFeGNlcHRpb25zCisK
K2dvb2dsZXRlc3QgY2FuIGJlIHVzZWQgZWl0aGVyIHdpdGggb3Igd2l0aG91dCBleGNlcHRpb25z
IGVuYWJsZWQuIElmIGEgdGVzdAordGhyb3dzIGEgQysrIGV4Y2VwdGlvbiBvciAob24gV2luZG93
cykgYSBzdHJ1Y3R1cmVkIGV4Y2VwdGlvbiAoU0VIKSwgYnkgZGVmYXVsdAorZ29vZ2xldGVzdCBj
YXRjaGVzIGl0LCByZXBvcnRzIGl0IGFzIGEgdGVzdCBmYWlsdXJlLCBhbmQgY29udGludWVzIHdp
dGggdGhlIG5leHQKK3Rlc3QgbWV0aG9kLiBUaGlzIG1heGltaXplcyB0aGUgY292ZXJhZ2Ugb2Yg
YSB0ZXN0IHJ1bi4gQWxzbywgb24gV2luZG93cyBhbgordW5jYXVnaHQgZXhjZXB0aW9uIHdpbGwg
Y2F1c2UgYSBwb3AtdXAgd2luZG93LCBzbyBjYXRjaGluZyB0aGUgZXhjZXB0aW9ucyBhbGxvd3MK
K3lvdSB0byBydW4gdGhlIHRlc3RzIGF1dG9tYXRpY2FsbHkuCisKK1doZW4gZGVidWdnaW5nIHRo
ZSB0ZXN0IGZhaWx1cmVzLCBob3dldmVyLCB5b3UgbWF5IGluc3RlYWQgd2FudCB0aGUgZXhjZXB0
aW9ucwordG8gYmUgaGFuZGxlZCBieSB0aGUgZGVidWdnZXIsIHN1Y2ggdGhhdCB5b3UgY2FuIGV4
YW1pbmUgdGhlIGNhbGwgc3RhY2sgd2hlbiBhbgorZXhjZXB0aW9uIGlzIHRocm93bi4gVG8gYWNo
aWV2ZSB0aGF0LCBzZXQgdGhlIGBHVEVTVF9DQVRDSF9FWENFUFRJT05TYAorZW52aXJvbm1lbnQg
dmFyaWFibGUgdG8gYDBgLCBvciB1c2UgdGhlIGAtLWd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnM9MGAg
ZmxhZyB3aGVuCitydW5uaW5nIHRoZSB0ZXN0cy4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgs
IFdpbmRvd3MsIE1hYy4KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9j
cy9mYXEubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL2ZhcS5tZApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43ZDQyZmY3ZGJhYThmYWJkMGNjNjUyZmQ3MDUyNzk4MTg0ZTk1YzQ5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9mYXEubWQKQEAgLTAsMCArMSw3NzAg
QEAKKyMgR29vZ2xldGVzdCBGQVEKKworCisjIyBXaHkgc2hvdWxkIHRlc3QgY2FzZSBuYW1lcyBh
bmQgdGVzdCBuYW1lcyBub3QgY29udGFpbiB1bmRlcnNjb3JlPworCitVbmRlcnNjb3JlIChgX2Ap
IGlzIHNwZWNpYWwsIGFzIEMrKyByZXNlcnZlcyB0aGUgZm9sbG93aW5nIHRvIGJlIHVzZWQgYnkg
dGhlCitjb21waWxlciBhbmQgdGhlIHN0YW5kYXJkIGxpYnJhcnk6CisKKzEuICBhbnkgaWRlbnRp
ZmllciB0aGF0IHN0YXJ0cyB3aXRoIGFuIGBfYCBmb2xsb3dlZCBieSBhbiB1cHBlci1jYXNlIGxl
dHRlciwgYW5kCisxLiAgYW55IGlkZW50aWZpZXIgdGhhdCBjb250YWlucyB0d28gY29uc2VjdXRp
dmUgdW5kZXJzY29yZXMgKGkuZS4gYF9fYCkKKyAgICAqYW55d2hlcmUqIGluIGl0cyBuYW1lLgor
CitVc2VyIGNvZGUgaXMgKnByb2hpYml0ZWQqIGZyb20gdXNpbmcgc3VjaCBpZGVudGlmaWVycy4K
KworTm93IGxldCdzIGxvb2sgYXQgd2hhdCB0aGlzIG1lYW5zIGZvciBgVEVTVGAgYW5kIGBURVNU
X0ZgLgorCitDdXJyZW50bHkgYFRFU1QoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSlgIGdlbmVyYXRl
cyBhIGNsYXNzIG5hbWVkCitgVGVzdENhc2VOYW1lX1Rlc3ROYW1lX1Rlc3RgLiBXaGF0IGhhcHBl
bnMgaWYgYFRlc3RDYXNlTmFtZWAgb3IgYFRlc3ROYW1lYAorY29udGFpbnMgYF9gPworCisxLiAg
SWYgYFRlc3RDYXNlTmFtZWAgc3RhcnRzIHdpdGggYW4gYF9gIGZvbGxvd2VkIGJ5IGFuIHVwcGVy
LWNhc2UgbGV0dGVyIChzYXksCisgICAgYF9Gb29gKSwgd2UgZW5kIHVwIHdpdGggYF9Gb29fVGVz
dE5hbWVfVGVzdGAsIHdoaWNoIGlzIHJlc2VydmVkIGFuZCB0aHVzCisgICAgaW52YWxpZC4KKzEu
ICBJZiBgVGVzdENhc2VOYW1lYCBlbmRzIHdpdGggYW4gYF9gIChzYXksIGBGb29fYCksIHdlIGdl
dAorICAgIGBGb29fX1Rlc3ROYW1lX1Rlc3RgLCB3aGljaCBpcyBpbnZhbGlkLgorMS4gIElmIGBU
ZXN0TmFtZWAgc3RhcnRzIHdpdGggYW4gYF9gIChzYXksIGBfQmFyYCksIHdlIGdldAorICAgIGBU
ZXN0Q2FzZU5hbWVfX0Jhcl9UZXN0YCwgd2hpY2ggaXMgaW52YWxpZC4KKzEuICBJZiBgVGVzdE5h
bWVgIGVuZHMgd2l0aCBhbiBgX2AgKHNheSwgYEJhcl9gKSwgd2UgZ2V0CisgICAgYFRlc3RDYXNl
TmFtZV9CYXJfX1Rlc3RgLCB3aGljaCBpcyBpbnZhbGlkLgorCitTbyBjbGVhcmx5IGBUZXN0Q2Fz
ZU5hbWVgIGFuZCBgVGVzdE5hbWVgIGNhbm5vdCBzdGFydCBvciBlbmQgd2l0aCBgX2AgKEFjdHVh
bGx5LAorYFRlc3RDYXNlTmFtZWAgY2FuIHN0YXJ0IHdpdGggYF9gIC0tIGFzIGxvbmcgYXMgdGhl
IGBfYCBpc24ndCBmb2xsb3dlZCBieSBhbgordXBwZXItY2FzZSBsZXR0ZXIuIEJ1dCB0aGF0J3Mg
Z2V0dGluZyBjb21wbGljYXRlZC4gU28gZm9yIHNpbXBsaWNpdHkgd2UganVzdCBzYXkKK3RoYXQg
aXQgY2Fubm90IHN0YXJ0IHdpdGggYF9gLikuCisKK0l0IG1heSBzZWVtIGZpbmUgZm9yIGBUZXN0
Q2FzZU5hbWVgIGFuZCBgVGVzdE5hbWVgIHRvIGNvbnRhaW4gYF9gIGluIHRoZSBtaWRkbGUuCitI
b3dldmVyLCBjb25zaWRlciB0aGlzOgorCitgYGBjKysKK1RFU1QoVGltZSwgRmxpZXNfTGlrZV9B
bl9BcnJvdykgeyAuLi4gfQorVEVTVChUaW1lX0ZsaWVzLCBMaWtlX0FuX0Fycm93KSB7IC4uLiB9
CitgYGAKKworTm93LCB0aGUgdHdvIGBURVNUYHMgd2lsbCBib3RoIGdlbmVyYXRlIHRoZSBzYW1l
IGNsYXNzCisoYFRpbWVfRmxpZXNfTGlrZV9Bbl9BcnJvd19UZXN0YCkuIFRoYXQncyBub3QgZ29v
ZC4KKworU28gZm9yIHNpbXBsaWNpdHksIHdlIGp1c3QgYXNrIHRoZSB1c2VycyB0byBhdm9pZCBg
X2AgaW4gYFRlc3RDYXNlTmFtZWAgYW5kCitgVGVzdE5hbWVgLiBUaGUgcnVsZSBpcyBtb3JlIGNv
bnN0cmFpbmluZyB0aGFuIG5lY2Vzc2FyeSwgYnV0IGl0J3Mgc2ltcGxlIGFuZAorZWFzeSB0byBy
ZW1lbWJlci4gSXQgYWxzbyBnaXZlcyBnb29nbGV0ZXN0IHNvbWUgd2lnZ2xlIHJvb20gaW4gY2Fz
ZSBpdHMKK2ltcGxlbWVudGF0aW9uIG5lZWRzIHRvIGNoYW5nZSBpbiB0aGUgZnV0dXJlLgorCitJ
ZiB5b3UgdmlvbGF0ZSB0aGUgcnVsZSwgdGhlcmUgbWF5IG5vdCBiZSBpbW1lZGlhdGUgY29uc2Vx
dWVuY2VzLCBidXQgeW91ciB0ZXN0CittYXkgKGp1c3QgbWF5KSBicmVhayB3aXRoIGEgbmV3IGNv
bXBpbGVyIChvciBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBjb21waWxlciB5b3UKK2FyZSB1c2luZykg
b3Igd2l0aCBhIG5ldyB2ZXJzaW9uIG9mIGdvb2dsZXRlc3QuIFRoZXJlZm9yZSBpdCdzIGJlc3Qg
dG8gZm9sbG93Cit0aGUgcnVsZS4KKworIyMgV2h5IGRvZXMgZ29vZ2xldGVzdCBzdXBwb3J0IGBF
WFBFQ1RfRVEoTlVMTCwgcHRyKWAgYW5kIGBBU1NFUlRfRVEoTlVMTCwgcHRyKWAgYnV0IG5vdCBg
RVhQRUNUX05FKE5VTEwsIHB0cilgIGFuZCBgQVNTRVJUX05FKE5VTEwsIHB0cilgPworCitGaXJz
dCBvZiBhbGwgeW91IGNhbiB1c2UgYEVYUEVDVF9ORShudWxscHRyLCBwdHIpYCBhbmQgYEFTU0VS
VF9ORShudWxscHRyLAorcHRyKWAuIFRoaXMgaXMgdGhlIHByZWZlcnJlZCBzeW50YXggaW4gdGhl
IHN0eWxlIGd1aWRlIGJlY2F1c2UgbnVsbHB0ciBkb2VzIG5vdAoraGF2ZSB0aGUgdHlwZSBwcm9i
bGVtcyB0aGF0IE5VTEwgZG9lcy4gV2hpY2ggaXMgd2h5IE5VTEwgZG9lcyBub3Qgd29yay4KKwor
RHVlIHRvIHNvbWUgcGVjdWxpYXJpdHkgb2YgQysrLCBpdCByZXF1aXJlcyBzb21lIG5vbi10cml2
aWFsIHRlbXBsYXRlIG1ldGEKK3Byb2dyYW1taW5nIHRyaWNrcyB0byBzdXBwb3J0IHVzaW5nIGBO
VUxMYCBhcyBhbiBhcmd1bWVudCBvZiB0aGUgYEVYUEVDVF9YWCgpYAorYW5kIGBBU1NFUlRfWFgo
KWAgbWFjcm9zLiBUaGVyZWZvcmUgd2Ugb25seSBkbyBpdCB3aGVyZSBpdCdzIG1vc3QgbmVlZGVk
Cisob3RoZXJ3aXNlIHdlIG1ha2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGdvb2dsZXRlc3QgaGFy
ZGVyIHRvIG1haW50YWluIGFuZCBtb3JlCitlcnJvci1wcm9uZSB0aGFuIG5lY2Vzc2FyeSkuCisK
K1RoZSBgRVhQRUNUX0VRKClgIG1hY3JvIHRha2VzIHRoZSAqZXhwZWN0ZWQqIHZhbHVlIGFzIGl0
cyBmaXJzdCBhcmd1bWVudCBhbmQgdGhlCisqYWN0dWFsKiB2YWx1ZSBhcyB0aGUgc2Vjb25kLiBJ
dCdzIHJlYXNvbmFibGUgdGhhdCBzb21lb25lIHdhbnRzIHRvIHdyaXRlCitgRVhQRUNUX0VRKE5V
TEwsIHNvbWVfZXhwcmVzc2lvbilgLCBhbmQgdGhpcyBpbmRlZWQgd2FzIHJlcXVlc3RlZCBzZXZl
cmFsIHRpbWVzLgorVGhlcmVmb3JlIHdlIGltcGxlbWVudGVkIGl0LgorCitUaGUgbmVlZCBmb3Ig
YEVYUEVDVF9ORShOVUxMLCBwdHIpYCBpc24ndCBuZWFybHkgYXMgc3Ryb25nLiBXaGVuIHRoZSBh
c3NlcnRpb24KK2ZhaWxzLCB5b3UgYWxyZWFkeSBrbm93IHRoYXQgYHB0cmAgbXVzdCBiZSBgTlVM
TGAsIHNvIGl0IGRvZXNuJ3QgYWRkIGFueQoraW5mb3JtYXRpb24gdG8gcHJpbnQgYHB0cmAgaW4g
dGhpcyBjYXNlLiBUaGF0IG1lYW5zIGBFWFBFQ1RfVFJVRShwdHIgIT0gTlVMTClgCit3b3JrcyBq
dXN0IGFzIHdlbGwuCisKK0lmIHdlIHdlcmUgdG8gc3VwcG9ydCBgRVhQRUNUX05FKE5VTEwsIHB0
cilgLCBmb3IgY29uc2lzdGVuY3kgd2UnbGwgaGF2ZSB0bworc3VwcG9ydCBgRVhQRUNUX05FKHB0
ciwgTlVMTClgIGFzIHdlbGwsIGFzIHVubGlrZSBgRVhQRUNUX0VRYCwgd2UgZG9uJ3QgaGF2ZSBh
Citjb252ZW50aW9uIG9uIHRoZSBvcmRlciBvZiB0aGUgdHdvIGFyZ3VtZW50cyBmb3IgYEVYUEVD
VF9ORWAuIFRoaXMgbWVhbnMgdXNpbmcKK3RoZSB0ZW1wbGF0ZSBtZXRhIHByb2dyYW1taW5nIHRy
aWNrcyB0d2ljZSBpbiB0aGUgaW1wbGVtZW50YXRpb24sIG1ha2luZyBpdCBldmVuCitoYXJkZXIg
dG8gdW5kZXJzdGFuZCBhbmQgbWFpbnRhaW4uIFdlIGJlbGlldmUgdGhlIGJlbmVmaXQgZG9lc24n
dCBqdXN0aWZ5IHRoZQorY29zdC4KKworRmluYWxseSwgd2l0aCB0aGUgZ3Jvd3RoIG9mIHRoZSBn
TW9jayBtYXRjaGVyIGxpYnJhcnksIHdlIGFyZSBlbmNvdXJhZ2luZyBwZW9wbGUKK3RvIHVzZSB0
aGUgdW5pZmllZCBgRVhQRUNUX1RIQVQodmFsdWUsIG1hdGNoZXIpYCBzeW50YXggbW9yZSBvZnRl
biBpbiB0ZXN0cy4gT25lCitzaWduaWZpY2FudCBhZHZhbnRhZ2Ugb2YgdGhlIG1hdGNoZXIgYXBw
cm9hY2ggaXMgdGhhdCBtYXRjaGVycyBjYW4gYmUgZWFzaWx5Citjb21iaW5lZCB0byBmb3JtIG5l
dyBtYXRjaGVycywgd2hpbGUgdGhlIGBFWFBFQ1RfTkVgLCBldGMsIG1hY3JvcyBjYW5ub3QgYmUK
K2Vhc2lseSBjb21iaW5lZC4gVGhlcmVmb3JlIHdlIHdhbnQgdG8gaW52ZXN0IG1vcmUgaW4gdGhl
IG1hdGNoZXJzIHRoYW4gaW4gdGhlCitgRVhQRUNUX1hYKClgIG1hY3Jvcy4KKworIyMgSSBuZWVk
IHRvIHRlc3QgdGhhdCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIG9mIGFuIGludGVyZmFjZSBz
YXRpc2Z5IHNvbWUgY29tbW9uIHJlcXVpcmVtZW50cy4gU2hvdWxkIEkgdXNlIHR5cGVkIHRlc3Rz
IG9yIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHM/CisKK0ZvciB0ZXN0aW5nIHZhcmlvdXMgaW1w
bGVtZW50YXRpb25zIG9mIHRoZSBzYW1lIGludGVyZmFjZSwgZWl0aGVyIHR5cGVkIHRlc3RzIG9y
Cit2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGNhbiBnZXQgaXQgZG9uZS4gSXQncyByZWFsbHkg
dXAgdG8geW91IHRoZSB1c2VyIHRvCitkZWNpZGUgd2hpY2ggaXMgbW9yZSBjb252ZW5pZW50IGZv
ciB5b3UsIGRlcGVuZGluZyBvbiB5b3VyIHBhcnRpY3VsYXIgY2FzZS4gU29tZQorcm91Z2ggZ3Vp
ZGVsaW5lczoKKworKiAgIFR5cGVkIHRlc3RzIGNhbiBiZSBlYXNpZXIgdG8gd3JpdGUgaWYgaW5z
dGFuY2VzIG9mIHRoZSBkaWZmZXJlbnQKKyAgICBpbXBsZW1lbnRhdGlvbnMgY2FuIGJlIGNyZWF0
ZWQgdGhlIHNhbWUgd2F5LCBtb2R1bG8gdGhlIHR5cGUuIEZvciBleGFtcGxlLAorICAgIGlmIGFs
bCB0aGVzZSBpbXBsZW1lbnRhdGlvbnMgaGF2ZSBhIHB1YmxpYyBkZWZhdWx0IGNvbnN0cnVjdG9y
IChzdWNoIHRoYXQKKyAgICB5b3UgY2FuIHdyaXRlIGBuZXcgVHlwZVBhcmFtYCksIG9yIGlmIHRo
ZWlyIGZhY3RvcnkgZnVuY3Rpb25zIGhhdmUgdGhlIHNhbWUKKyAgICBmb3JtIChlLmcuIGBDcmVh
dGVJbnN0YW5jZTxUeXBlUGFyYW0+KClgKS4KKyogICBWYWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3Rz
IGNhbiBiZSBlYXNpZXIgdG8gd3JpdGUgaWYgeW91IG5lZWQgZGlmZmVyZW50IGNvZGUKKyAgICBw
YXR0ZXJucyB0byBjcmVhdGUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucycgaW5zdGFuY2VzLCBl
LmcuIGBuZXcgRm9vYCB2cworICAgIGBuZXcgQmFyKDUpYC4gVG8gYWNjb21tb2RhdGUgZm9yIHRo
ZSBkaWZmZXJlbmNlcywgeW91IGNhbiB3cml0ZSBmYWN0b3J5CisgICAgZnVuY3Rpb24gd3JhcHBl
cnMgYW5kIHBhc3MgdGhlc2UgZnVuY3Rpb24gcG9pbnRlcnMgdG8gdGhlIHRlc3RzIGFzIHRoZWly
CisgICAgcGFyYW1ldGVycy4KKyogICBXaGVuIGEgdHlwZWQgdGVzdCBmYWlscywgdGhlIG91dHB1
dCBpbmNsdWRlcyB0aGUgbmFtZSBvZiB0aGUgdHlwZSwgd2hpY2ggY2FuCisgICAgaGVscCB5b3Ug
cXVpY2tseSBpZGVudGlmeSB3aGljaCBpbXBsZW1lbnRhdGlvbiBpcyB3cm9uZy4gVmFsdWUtcGFy
YW1ldGVyaXplZAorICAgIHRlc3RzIGNhbm5vdCBkbyB0aGlzLCBzbyB0aGVyZSB5b3UnbGwgaGF2
ZSB0byBsb29rIGF0IHRoZSBpdGVyYXRpb24gbnVtYmVyCisgICAgdG8ga25vdyB3aGljaCBpbXBs
ZW1lbnRhdGlvbiB0aGUgZmFpbHVyZSBpcyBmcm9tLCB3aGljaCBpcyBsZXNzIGRpcmVjdC4KKyog
ICBJZiB5b3UgbWFrZSBhIG1pc3Rha2Ugd3JpdGluZyBhIHR5cGVkIHRlc3QsIHRoZSBjb21waWxl
ciBlcnJvcnMgY2FuIGJlCisgICAgaGFyZGVyIHRvIGRpZ2VzdCwgYXMgdGhlIGNvZGUgaXMgdGVt
cGxhdGl6ZWQuCisqICAgV2hlbiB1c2luZyB0eXBlZCB0ZXN0cywgeW91IG5lZWQgdG8gbWFrZSBz
dXJlIHlvdSBhcmUgdGVzdGluZyBhZ2FpbnN0IHRoZQorICAgIGludGVyZmFjZSB0eXBlLCBub3Qg
dGhlIGNvbmNyZXRlIHR5cGVzIChpbiBvdGhlciB3b3JkcywgeW91IHdhbnQgdG8gbWFrZQorICAg
IHN1cmUgYGltcGxpY2l0X2Nhc3Q8TXlJbnRlcmZhY2UqPihteV9jb25jcmV0ZV9pbXBsKWAgd29y
a3MsIG5vdCBqdXN0IHRoYXQKKyAgICBgbXlfY29uY3JldGVfaW1wbGAgd29ya3MpLiBJdCdzIGxl
c3MgbGlrZWx5IHRvIG1ha2UgbWlzdGFrZXMgaW4gdGhpcyBhcmVhCisgICAgd2hlbiB1c2luZyB2
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorCitJIGhvcGUgSSBkaWRuJ3QgY29uZnVzZSB5b3Ug
bW9yZS4gOi0pIElmIHlvdSBkb24ndCBtaW5kLCBJJ2Qgc3VnZ2VzdCB5b3UgdG8gZ2l2ZQorYm90
aCBhcHByb2FjaGVzIGEgdHJ5LiBQcmFjdGljZSBpcyBhIG11Y2ggYmV0dGVyIHdheSB0byBncmFz
cCB0aGUgc3VidGxlCitkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB0d28gdG9vbHMuIE9uY2UgeW91
IGhhdmUgc29tZSBjb25jcmV0ZSBleHBlcmllbmNlLCB5b3UKK2NhbiBtdWNoIG1vcmUgZWFzaWx5
IGRlY2lkZSB3aGljaCBvbmUgdG8gdXNlIHRoZSBuZXh0IHRpbWUuCisKKyMjIE15IGRlYXRoIHRl
c3RzIGJlY2FtZSB2ZXJ5IHNsb3cgLSB3aGF0IGhhcHBlbmVkPworCitJbiBBdWd1c3QgMjAwOCB3
ZSBoYWQgdG8gc3dpdGNoIHRoZSBkZWZhdWx0IGRlYXRoIHRlc3Qgc3R5bGUgZnJvbSBgZmFzdGAg
dG8KK2B0aHJlYWRzYWZlYCwgYXMgdGhlIGZvcm1lciBpcyBubyBsb25nZXIgc2FmZSBub3cgdGhh
dCB0aHJlYWRlZCBsb2dnaW5nIGlzIHRoZQorZGVmYXVsdC4gVGhpcyBjYXVzZWQgbWFueSBkZWF0
aCB0ZXN0cyB0byBzbG93IGRvd24uIFVuZm9ydHVuYXRlbHkgdGhpcyBjaGFuZ2UKK3dhcyBuZWNl
c3NhcnkuCisKK1BsZWFzZSByZWFkIFtGaXhpbmcgRmFpbGluZyBEZWF0aCBUZXN0c10oZGVhdGhf
dGVzdF9zdHlsZXMubWQpIGZvciB3aGF0IHlvdSBjYW4KK2RvLgorCisjIyBJIGdvdCBzb21lIHJ1
bi10aW1lIGVycm9ycyBhYm91dCBpbnZhbGlkIHByb3RvIGRlc2NyaXB0b3JzIHdoZW4gdXNpbmcg
YFByb3RvY29sTWVzc2FnZUVxdWFsc2AuIEhlbHAhCisKKyoqTm90ZToqKiBgUHJvdG9jb2xNZXNz
YWdlRXF1YWxzYCBhbmQgYFByb3RvY29sTWVzc2FnZUVxdWl2YCBhcmUgKmRlcHJlY2F0ZWQqCitu
b3cuIFBsZWFzZSB1c2UgYEVxdWFsc1Byb3RvYCwgZXRjIGluc3RlYWQuCisKK2BQcm90b2NvbE1l
c3NhZ2VFcXVhbHNgIGFuZCBgUHJvdG9jb2xNZXNzYWdlRXF1aXZgIHdlcmUgcmVkZWZpbmVkIHJl
Y2VudGx5IGFuZAorYXJlIG5vdyBsZXNzIHRvbGVyYW50IG9uIGludmFsaWQgcHJvdG9jb2wgYnVm
ZmVyIGRlZmluaXRpb25zLiBJbiBwYXJ0aWN1bGFyLCBpZgoreW91IGhhdmUgYSBgZm9vLnByb3Rv
YCB0aGF0IGRvZXNuJ3QgZnVsbHkgcXVhbGlmeSB0aGUgdHlwZSBvZiBhIHByb3RvY29sIG1lc3Nh
Z2UKK2l0IHJlZmVyZW5jZXMgKGUuZy4gYG1lc3NhZ2U8QmFyPmAgd2hlcmUgaXQgc2hvdWxkIGJl
IGBtZXNzYWdlPGJsYWguQmFyPmApLCB5b3UKK3dpbGwgbm93IGdldCBydW4tdGltZSBlcnJvcnMg
bGlrZToKKworYGBgCisuLi4gZGVzY3JpcHRvci5jYzouLi5dIEludmFsaWQgcHJvdG8gZGVzY3Jp
cHRvciBmb3IgZmlsZSAicGF0aC90by9mb28ucHJvdG8iOgorLi4uIGRlc2NyaXB0b3IuY2M6Li4u
XSAgYmxhaC5NeU1lc3NhZ2UubXlfZmllbGQ6ICIuQmFyIiBpcyBub3QgZGVmaW5lZC4KK2BgYAor
CitJZiB5b3Ugc2VlIHRoaXMsIHlvdXIgYC5wcm90b2AgZmlsZSBpcyBicm9rZW4gYW5kIG5lZWRz
IHRvIGJlIGZpeGVkIGJ5IG1ha2luZwordGhlIHR5cGVzIGZ1bGx5IHF1YWxpZmllZC4gVGhlIG5l
dyBkZWZpbml0aW9uIG9mIGBQcm90b2NvbE1lc3NhZ2VFcXVhbHNgIGFuZAorYFByb3RvY29sTWVz
c2FnZUVxdWl2YCBqdXN0IGhhcHBlbiB0byByZXZlYWwgeW91ciBidWcuCisKKyMjIE15IGRlYXRo
IHRlc3QgbW9kaWZpZXMgc29tZSBzdGF0ZSwgYnV0IHRoZSBjaGFuZ2Ugc2VlbXMgbG9zdCBhZnRl
ciB0aGUgZGVhdGggdGVzdCBmaW5pc2hlcy4gV2h5PworCitEZWF0aCB0ZXN0cyAoYEVYUEVDVF9E
RUFUSGAsIGV0YykgYXJlIGV4ZWN1dGVkIGluIGEgc3ViLXByb2Nlc3Mgcy50LiB0aGUKK2V4cGVj
dGVkIGNyYXNoIHdvbid0IGtpbGwgdGhlIHRlc3QgcHJvZ3JhbSAoaS5lLiB0aGUgcGFyZW50IHBy
b2Nlc3MpLiBBcyBhCityZXN1bHQsIGFueSBpbi1tZW1vcnkgc2lkZSBlZmZlY3RzIHRoZXkgaW5j
dXIgYXJlIG9ic2VydmFibGUgaW4gdGhlaXIgcmVzcGVjdGl2ZQorc3ViLXByb2Nlc3NlcywgYnV0
IG5vdCBpbiB0aGUgcGFyZW50IHByb2Nlc3MuIFlvdSBjYW4gdGhpbmsgb2YgdGhlbSBhcyBydW5u
aW5nCitpbiBhIHBhcmFsbGVsIHVuaXZlcnNlLCBtb3JlIG9yIGxlc3MuCisKK0luIHBhcnRpY3Vs
YXIsIGlmIHlvdSB1c2UgW2dNb2NrXSguLi8uLi9nb29nbGVtb2NrKSBhbmQgdGhlIGRlYXRoIHRl
c3Qgc3RhdGVtZW50CitpbnZva2VzIHNvbWUgbW9jayBtZXRob2RzLCB0aGUgcGFyZW50IHByb2Nl
c3Mgd2lsbCB0aGluayB0aGUgY2FsbHMgaGF2ZSBuZXZlcgorb2NjdXJyZWQuIFRoZXJlZm9yZSwg
eW91IG1heSB3YW50IHRvIG1vdmUgeW91ciBgRVhQRUNUX0NBTExgIHN0YXRlbWVudHMgaW5zaWRl
Cit0aGUgYEVYUEVDVF9ERUFUSGAgbWFjcm8uCisKKyMjIEVYUEVDVF9FUShodG9ubChibGFoKSwg
YmxhaF9ibGFoKSBnZW5lcmF0ZXMgd2VpcmQgY29tcGlsZXIgZXJyb3JzIGluIG9wdCBtb2RlLiBJ
cyB0aGlzIGEgZ29vZ2xldGVzdCBidWc/CisKK0FjdHVhbGx5LCB0aGUgYnVnIGlzIGluIGBodG9u
bCgpYC4KKworQWNjb3JkaW5nIHRvIGAnbWFuIGh0b25sJ2AsIGBodG9ubCgpYCBpcyBhICpmdW5j
dGlvbiosIHdoaWNoIG1lYW5zIGl0J3MgdmFsaWQgdG8KK3VzZSBgaHRvbmxgIGFzIGEgZnVuY3Rp
b24gcG9pbnRlci4gSG93ZXZlciwgaW4gb3B0IG1vZGUgYGh0b25sKClgIGlzIGRlZmluZWQgYXMK
K2EgKm1hY3JvKiwgd2hpY2ggYnJlYWtzIHRoaXMgdXNhZ2UuCisKK1dvcnNlLCB0aGUgbWFjcm8g
ZGVmaW5pdGlvbiBvZiBgaHRvbmwoKWAgdXNlcyBhIGBnY2NgIGV4dGVuc2lvbiBhbmQgaXMgKm5v
dCoKK3N0YW5kYXJkIEMrKy4gVGhhdCBoYWNreSBpbXBsZW1lbnRhdGlvbiBoYXMgc29tZSBhZCBo
b2MgbGltaXRhdGlvbnMuIEluCitwYXJ0aWN1bGFyLCBpdCBwcmV2ZW50cyB5b3UgZnJvbSB3cml0
aW5nIGBGb288c2l6ZW9mKGh0b25sKHgpKT4oKWAsIHdoZXJlIGBGb29gCitpcyBhIHRlbXBsYXRl
IHRoYXQgaGFzIGFuIGludGVncmFsIGFyZ3VtZW50LgorCitUaGUgaW1wbGVtZW50YXRpb24gb2Yg
YEVYUEVDVF9FUShhLCBiKWAgdXNlcyBgc2l6ZW9mKC4uLiBhIC4uLilgIGluc2lkZSBhCit0ZW1w
bGF0ZSBhcmd1bWVudCwgYW5kIHRodXMgZG9lc24ndCBjb21waWxlIGluIG9wdCBtb2RlIHdoZW4g
YGFgIGNvbnRhaW5zIGEgY2FsbAordG8gYGh0b25sKClgLiBJdCBpcyBkaWZmaWN1bHQgdG8gbWFr
ZSBgRVhQRUNUX0VRYCBieXBhc3MgdGhlIGBodG9ubCgpYCBidWcsIGFzCit0aGUgc29sdXRpb24g
bXVzdCB3b3JrIHdpdGggZGlmZmVyZW50IGNvbXBpbGVycyBvbiB2YXJpb3VzIHBsYXRmb3Jtcy4K
KworYGh0b25sKClgIGhhcyBzb21lIG90aGVyIHByb2JsZW1zIGFzIGRlc2NyaWJlZCBpbiBgLy91
dGlsL2VuZGlhbi9lbmRpYW4uaGAsCit3aGljaCBkZWZpbmVzIGBnaHRvbmwoKWAgdG8gcmVwbGFj
ZSBpdC4gYGdodG9ubCgpYCBkb2VzIHRoZSBzYW1lIHRoaW5nIGBodG9ubCgpYAorZG9lcywgb25s
eSB3aXRob3V0IGl0cyBwcm9ibGVtcy4gV2Ugc3VnZ2VzdCB5b3UgdG8gdXNlIGBnaHRvbmwoKWAg
aW5zdGVhZCBvZgorYGh0b25sKClgLCBib3RoIGluIHlvdXIgdGVzdHMgYW5kIHByb2R1Y3Rpb24g
Y29kZS4KKworYC8vdXRpbC9lbmRpYW4vZW5kaWFuLmhgIGFsc28gZGVmaW5lcyBgZ2h0b25zKClg
LCB3aGljaCBzb2x2ZXMgc2ltaWxhciBwcm9ibGVtcworaW4gYGh0b25zKClgLgorCitEb24ndCBm
b3JnZXQgdG8gYWRkIGAvL3V0aWwvZW5kaWFuYCB0byB0aGUgbGlzdCBvZiBkZXBlbmRlbmNpZXMg
aW4gdGhlIGBCVUlMRGAKK2ZpbGUgd2hlcmV2ZXIgYGdodG9ubCgpYCBhbmQgYGdodG9ucygpYCBh
cmUgdXNlZC4gVGhlIGxpYnJhcnkgY29uc2lzdHMgb2YgYQorc2luZ2xlIGhlYWRlciBmaWxlIGFu
ZCB3aWxsIG5vdCBibG9hdCB5b3VyIGJpbmFyeS4KKworIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlu
cyBhYm91dCAidW5kZWZpbmVkIHJlZmVyZW5jZXMiIHRvIHNvbWUgc3RhdGljIGNvbnN0IG1lbWJl
ciB2YXJpYWJsZXMsIGJ1dCBJIGRpZCBkZWZpbmUgdGhlbSBpbiB0aGUgY2xhc3MgYm9keS4gV2hh
dCdzIHdyb25nPworCitJZiB5b3VyIGNsYXNzIGhhcyBhIHN0YXRpYyBkYXRhIG1lbWJlcjoKKwor
YGBgYysrCisvLyBmb28uaAorY2xhc3MgRm9vIHsKKyAgLi4uCisgIHN0YXRpYyBjb25zdCBpbnQg
a0JhciA9IDEwMDsKK307CitgYGAKKworWW91IGFsc28gbmVlZCB0byBkZWZpbmUgaXQgKm91dHNp
ZGUqIG9mIHRoZSBjbGFzcyBib2R5IGluIGBmb28uY2NgOgorCitgYGBjKysKK2NvbnN0IGludCBG
b286OmtCYXI7ICAvLyBObyBpbml0aWFsaXplciBoZXJlLgorYGBgCisKK090aGVyd2lzZSB5b3Vy
IGNvZGUgaXMgKippbnZhbGlkIEMrKyoqLCBhbmQgbWF5IGJyZWFrIGluIHVuZXhwZWN0ZWQgd2F5
cy4gSW4KK3BhcnRpY3VsYXIsIHVzaW5nIGl0IGluIGdvb2dsZXRlc3QgY29tcGFyaXNvbiBhc3Nl
cnRpb25zIChgRVhQRUNUX0VRYCwgZXRjKSB3aWxsCitnZW5lcmF0ZSBhbiAidW5kZWZpbmVkIHJl
ZmVyZW5jZSIgbGlua2VyIGVycm9yLiBUaGUgZmFjdCB0aGF0ICJpdCB1c2VkIHRvIHdvcmsiCitk
b2Vzbid0IG1lYW4gaXQncyB2YWxpZC4gSXQganVzdCBtZWFucyB0aGF0IHlvdSB3ZXJlIGx1Y2t5
LiA6LSkKKworIyMgQ2FuIEkgZGVyaXZlIGEgdGVzdCBmaXh0dXJlIGZyb20gYW5vdGhlcj8KKwor
WWVzLgorCitFYWNoIHRlc3QgZml4dHVyZSBoYXMgYSBjb3JyZXNwb25kaW5nIGFuZCBzYW1lIG5h
bWVkIHRlc3QgY2FzZS4gVGhpcyBtZWFucyBvbmx5CitvbmUgdGVzdCBjYXNlIGNhbiB1c2UgYSBw
YXJ0aWN1bGFyIGZpeHR1cmUuIFNvbWV0aW1lcywgaG93ZXZlciwgbXVsdGlwbGUgdGVzdAorY2Fz
ZXMgbWF5IHdhbnQgdG8gdXNlIHRoZSBzYW1lIG9yIHNsaWdodGx5IGRpZmZlcmVudCBmaXh0dXJl
cy4gRm9yIGV4YW1wbGUsIHlvdQorbWF5IHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIG9mIGEg
R1VJIGxpYnJhcnkncyB0ZXN0IGNhc2VzIGRvbid0IGxlYWsKK2ltcG9ydGFudCBzeXN0ZW0gcmVz
b3VyY2VzIGxpa2UgZm9udHMgYW5kIGJydXNoZXMuCisKK0luIGdvb2dsZXRlc3QsIHlvdSBzaGFy
ZSBhIGZpeHR1cmUgYW1vbmcgdGVzdCBjYXNlcyBieSBwdXR0aW5nIHRoZSBzaGFyZWQgbG9naWMK
K2luIGEgYmFzZSB0ZXN0IGZpeHR1cmUsIHRoZW4gZGVyaXZpbmcgZnJvbSB0aGF0IGJhc2UgYSBz
ZXBhcmF0ZSBmaXh0dXJlIGZvciBlYWNoCit0ZXN0IGNhc2UgdGhhdCB3YW50cyB0byB1c2UgdGhp
cyBjb21tb24gbG9naWMuIFlvdSB0aGVuIHVzZSBgVEVTVF9GKClgIHRvIHdyaXRlCit0ZXN0cyB1
c2luZyBlYWNoIGRlcml2ZWQgZml4dHVyZS4KKworVHlwaWNhbGx5LCB5b3VyIGNvZGUgbG9va3Mg
bGlrZSB0aGlzOgorCitgYGBjKysKKy8vIERlZmluZXMgYSBiYXNlIHRlc3QgZml4dHVyZS4KK2Ns
YXNzIEJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAu
Li4KK307CisKKy8vIERlcml2ZXMgYSBmaXh0dXJlIEZvb1Rlc3QgZnJvbSBCYXNlVGVzdC4KK2Ns
YXNzIEZvb1Rlc3QgOiBwdWJsaWMgQmFzZVRlc3QgeworIHByb3RlY3RlZDoKKyAgdm9pZCBTZXRV
cCgpIG92ZXJyaWRlIHsKKyAgICBCYXNlVGVzdDo6U2V0VXAoKTsgIC8vIFNldHMgdXAgdGhlIGJh
c2UgZml4dHVyZSBmaXJzdC4KKyAgICAuLi4gYWRkaXRpb25hbCBzZXQtdXAgd29yayAuLi4KKyAg
fQorCisgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZSB7CisgICAgLi4uIGNsZWFuLXVwIHdvcmsg
Zm9yIEZvb1Rlc3QgLi4uCisgICAgQmFzZVRlc3Q6OlRlYXJEb3duKCk7ICAvLyBSZW1lbWJlciB0
byB0ZWFyIGRvd24gdGhlIGJhc2UgZml4dHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gYWZ0ZXIgY2xlYW5pbmcgdXAgRm9vVGVzdCEKKyAgfQorCisgIC4uLiBmdW5jdGlvbnMgYW5k
IHZhcmlhYmxlcyBmb3IgRm9vVGVzdCAuLi4KK307CisKKy8vIFRlc3RzIHRoYXQgdXNlIHRoZSBm
aXh0dXJlIEZvb1Rlc3QuCitURVNUX0YoRm9vVGVzdCwgQmFyKSB7IC4uLiB9CitURVNUX0YoRm9v
VGVzdCwgQmF6KSB7IC4uLiB9CisKKy4uLiBhZGRpdGlvbmFsIGZpeHR1cmVzIGRlcml2ZWQgZnJv
bSBCYXNlVGVzdCAuLi4KK2BgYAorCitJZiBuZWNlc3NhcnksIHlvdSBjYW4gY29udGludWUgdG8g
ZGVyaXZlIHRlc3QgZml4dHVyZXMgZnJvbSBhIGRlcml2ZWQgZml4dHVyZS4KK2dvb2dsZXRlc3Qg
aGFzIG5vIGxpbWl0IG9uIGhvdyBkZWVwIHRoZSBoaWVyYXJjaHkgY2FuIGJlLgorCitGb3IgYSBj
b21wbGV0ZSBleGFtcGxlIHVzaW5nIGRlcml2ZWQgdGVzdCBmaXh0dXJlcywgc2VlIFtnb29nbGV0
ZXN0CitzYW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9ibG9iL21h
c3Rlci9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYykKKworIyMgTXkgY29t
cGlsZXIgY29tcGxhaW5zICJ2b2lkIHZhbHVlIG5vdCBpZ25vcmVkIGFzIGl0IG91Z2h0IHRvIGJl
LiIgV2hhdCBkb2VzIHRoaXMgbWVhbj8KKworWW91J3JlIHByb2JhYmx5IHVzaW5nIGFuIGBBU1NF
UlRfKigpYCBpbiBhIGZ1bmN0aW9uIHRoYXQgZG9lc24ndCByZXR1cm4gYHZvaWRgLgorYEFTU0VS
VF8qKClgIGNhbiBvbmx5IGJlIHVzZWQgaW4gYHZvaWRgIGZ1bmN0aW9ucywgZHVlIHRvIGV4Y2Vw
dGlvbnMgYmVpbmcKK2Rpc2FibGVkIGJ5IG91ciBidWlsZCBzeXN0ZW0uIFBsZWFzZSBzZWUgbW9y
ZSBkZXRhaWxzCitbaGVyZV0oYWR2YW5jZWQubWQjYXNzZXJ0aW9uLXBsYWNlbWVudCkuCisKKyMj
IE15IGRlYXRoIHRlc3QgaGFuZ3MgKG9yIHNlZy1mYXVsdHMpLiBIb3cgZG8gSSBmaXggaXQ/CisK
K0luIGdvb2dsZXRlc3QsIGRlYXRoIHRlc3RzIGFyZSBydW4gaW4gYSBjaGlsZCBwcm9jZXNzIGFu
ZCB0aGUgd2F5IHRoZXkgd29yayBpcworZGVsaWNhdGUuIFRvIHdyaXRlIGRlYXRoIHRlc3RzIHlv
dSByZWFsbHkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IHdvcmsuCitQbGVhc2UgbWFrZSBz
dXJlIHlvdSBoYXZlIHJlYWQgW3RoaXNdKGFkdmFuY2VkLm1kI2hvdy1pdC13b3JrcykuCisKK0lu
IHBhcnRpY3VsYXIsIGRlYXRoIHRlc3RzIGRvbid0IGxpa2UgaGF2aW5nIG11bHRpcGxlIHRocmVh
ZHMgaW4gdGhlIHBhcmVudAorcHJvY2Vzcy4gU28gdGhlIGZpcnN0IHRoaW5nIHlvdSBjYW4gdHJ5
IGlzIHRvIGVsaW1pbmF0ZSBjcmVhdGluZyB0aHJlYWRzIG91dHNpZGUKK29mIGBFWFBFQ1RfREVB
VEgoKWAuIEZvciBleGFtcGxlLCB5b3UgbWF5IHdhbnQgdG8gdXNlIFttb2Nrc10oLi4vLi4vZ29v
Z2xlbW9jaykKK29yIGZha2Ugb2JqZWN0cyBpbnN0ZWFkIG9mIHJlYWwgb25lcyBpbiB5b3VyIHRl
c3RzLgorCitTb21ldGltZXMgdGhpcyBpcyBpbXBvc3NpYmxlIGFzIHNvbWUgbGlicmFyeSB5b3Ug
bXVzdCB1c2UgbWF5IGJlIGNyZWF0aW5nCit0aHJlYWRzIGJlZm9yZSBgbWFpbigpYCBpcyBldmVu
IHJlYWNoZWQuIEluIHRoaXMgY2FzZSwgeW91IGNhbiB0cnkgdG8gbWluaW1pemUKK3RoZSBjaGFu
Y2Ugb2YgY29uZmxpY3RzIGJ5IGVpdGhlciBtb3ZpbmcgYXMgbWFueSBhY3Rpdml0aWVzIGFzIHBv
c3NpYmxlIGluc2lkZQorYEVYUEVDVF9ERUFUSCgpYCAoaW4gdGhlIGV4dHJlbWUgY2FzZSwgeW91
IHdhbnQgdG8gbW92ZSBldmVyeXRoaW5nIGluc2lkZSksIG9yCitsZWF2aW5nIGFzIGZldyB0aGlu
Z3MgYXMgcG9zc2libGUgaW4gaXQuIEFsc28sIHlvdSBjYW4gdHJ5IHRvIHNldCB0aGUgZGVhdGgg
dGVzdAorc3R5bGUgdG8gYCJ0aHJlYWRzYWZlImAsIHdoaWNoIGlzIHNhZmVyIGJ1dCBzbG93ZXIs
IGFuZCBzZWUgaWYgaXQgaGVscHMuCisKK0lmIHlvdSBnbyB3aXRoIHRocmVhZC1zYWZlIGRlYXRo
IHRlc3RzLCByZW1lbWJlciB0aGF0IHRoZXkgcmVydW4gdGhlIHRlc3QKK3Byb2dyYW0gZnJvbSB0
aGUgYmVnaW5uaW5nIGluIHRoZSBjaGlsZCBwcm9jZXNzLiBUaGVyZWZvcmUgbWFrZSBzdXJlIHlv
dXIKK3Byb2dyYW0gY2FuIHJ1biBzaWRlLWJ5LXNpZGUgd2l0aCBpdHNlbGYgYW5kIGlzIGRldGVy
bWluaXN0aWMuCisKK0luIHRoZSBlbmQsIHRoaXMgYm9pbHMgZG93biB0byBnb29kIGNvbmN1cnJl
bnQgcHJvZ3JhbW1pbmcuIFlvdSBoYXZlIHRvIG1ha2UKK3N1cmUgdGhhdCB0aGVyZSBpcyBubyBy
YWNlIGNvbmRpdGlvbnMgb3IgZGVhZCBsb2NrcyBpbiB5b3VyIHByb2dyYW0uIE5vIHNpbHZlcgor
YnVsbGV0IC0gc29ycnkhCisKKyMjIFNob3VsZCBJIHVzZSB0aGUgY29uc3RydWN0b3IvZGVzdHJ1
Y3RvciBvZiB0aGUgdGVzdCBmaXh0dXJlIG9yIFNldFVwKCkvVGVhckRvd24oKT8KKworVGhlIGZp
cnN0IHRoaW5nIHRvIHJlbWVtYmVyIGlzIHRoYXQgZ29vZ2xldGVzdCBkb2VzICoqbm90KiogcmV1
c2UgdGhlIHNhbWUgdGVzdAorZml4dHVyZSBvYmplY3QgYWNyb3NzIG11bHRpcGxlIHRlc3RzLiBG
b3IgZWFjaCBgVEVTVF9GYCwgZ29vZ2xldGVzdCB3aWxsIGNyZWF0ZQorYSAqKmZyZXNoKiogdGVz
dCBmaXh0dXJlIG9iamVjdCwgaW1tZWRpYXRlbHkgY2FsbCBgU2V0VXAoKWAsIHJ1biB0aGUgdGVz
dCBib2R5LAorY2FsbCBgVGVhckRvd24oKWAsIGFuZCB0aGVuIGRlbGV0ZSB0aGUgdGVzdCBmaXh0
dXJlIG9iamVjdC4KKworV2hlbiB5b3UgbmVlZCB0byB3cml0ZSBwZXItdGVzdCBzZXQtdXAgYW5k
IHRlYXItZG93biBsb2dpYywgeW91IGhhdmUgdGhlIGNob2ljZQorYmV0d2VlbiB1c2luZyB0aGUg
dGVzdCBmaXh0dXJlIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3Igb3IgYFNldFVwKCkvVGVhckRvd24o
KWAuCitUaGUgZm9ybWVyIGlzIHVzdWFsbHkgcHJlZmVycmVkLCBhcyBpdCBoYXMgdGhlIGZvbGxv
d2luZyBiZW5lZml0czoKKworKiAgIEJ5IGluaXRpYWxpemluZyBhIG1lbWJlciB2YXJpYWJsZSBp
biB0aGUgY29uc3RydWN0b3IsIHdlIGhhdmUgdGhlIG9wdGlvbiB0bworICAgIG1ha2UgaXQgYGNv
bnN0YCwgd2hpY2ggaGVscHMgcHJldmVudCBhY2NpZGVudGFsIGNoYW5nZXMgdG8gaXRzIHZhbHVl
IGFuZAorICAgIG1ha2VzIHRoZSB0ZXN0cyBtb3JlIG9idmlvdXNseSBjb3JyZWN0LgorKiAgIElu
IGNhc2Ugd2UgbmVlZCB0byBzdWJjbGFzcyB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLCB0aGUgc3Vi
Y2xhc3MnCisgICAgY29uc3RydWN0b3IgaXMgZ3VhcmFudGVlZCB0byBjYWxsIHRoZSBiYXNlIGNs
YXNzJyBjb25zdHJ1Y3RvciAqZmlyc3QqLCBhbmQKKyAgICB0aGUgc3ViY2xhc3MnIGRlc3RydWN0
b3IgaXMgZ3VhcmFudGVlZCB0byBjYWxsIHRoZSBiYXNlIGNsYXNzJyBkZXN0cnVjdG9yCisgICAg
KmFmdGVyd2FyZCouIFdpdGggYFNldFVwKCkvVGVhckRvd24oKWAsIGEgc3ViY2xhc3MgbWF5IG1h
a2UgdGhlIG1pc3Rha2Ugb2YKKyAgICBmb3JnZXR0aW5nIHRvIGNhbGwgdGhlIGJhc2UgY2xhc3Mn
IGBTZXRVcCgpL1RlYXJEb3duKClgIG9yIGNhbGwgdGhlbSBhdCB0aGUKKyAgICB3cm9uZyB0aW1l
LgorCitZb3UgbWF5IHN0aWxsIHdhbnQgdG8gdXNlIGBTZXRVcCgpL1RlYXJEb3duKClgIGluIHRo
ZSBmb2xsb3dpbmcgcmFyZSBjYXNlczoKKworKiAgIEluIHRoZSBib2R5IG9mIGEgY29uc3RydWN0
b3IgKG9yIGRlc3RydWN0b3IpLCBpdCdzIG5vdCBwb3NzaWJsZSB0byB1c2UgdGhlCisgICAgYEFT
U0VSVF94eGAgbWFjcm9zLiBUaGVyZWZvcmUsIGlmIHRoZSBzZXQtdXAgb3BlcmF0aW9uIGNvdWxk
IGNhdXNlIGEgZmF0YWwKKyAgICB0ZXN0IGZhaWx1cmUgdGhhdCBzaG91bGQgcHJldmVudCB0aGUg
dGVzdCBmcm9tIHJ1bm5pbmcsIGl0J3MgbmVjZXNzYXJ5IHRvCisgICAgdXNlIGEgYENIRUNLYCBt
YWNybyBvciB0byB1c2UgYFNldFVwKClgIGluc3RlYWQgb2YgYSBjb25zdHJ1Y3Rvci4KKyogICBJ
ZiB0aGUgdGVhci1kb3duIG9wZXJhdGlvbiBjb3VsZCB0aHJvdyBhbiBleGNlcHRpb24sIHlvdSBt
dXN0IHVzZQorICAgIGBUZWFyRG93bigpYCBhcyBvcHBvc2VkIHRvIHRoZSBkZXN0cnVjdG9yLCBh
cyB0aHJvd2luZyBpbiBhIGRlc3RydWN0b3IgbGVhZHMKKyAgICB0byB1bmRlZmluZWQgYmVoYXZp
b3IgYW5kIHVzdWFsbHkgd2lsbCBraWxsIHlvdXIgcHJvZ3JhbSByaWdodCBhd2F5LiBOb3RlCisg
ICAgdGhhdCBtYW55IHN0YW5kYXJkIGxpYnJhcmllcyAobGlrZSBTVEwpIG1heSB0aHJvdyB3aGVu
IGV4Y2VwdGlvbnMgYXJlCisgICAgZW5hYmxlZCBpbiB0aGUgY29tcGlsZXIuIFRoZXJlZm9yZSB5
b3Ugc2hvdWxkIHByZWZlciBgVGVhckRvd24oKWAgaWYgeW91CisgICAgd2FudCB0byB3cml0ZSBw
b3J0YWJsZSB0ZXN0cyB0aGF0IHdvcmsgd2l0aCBvciB3aXRob3V0IGV4Y2VwdGlvbnMuCisqICAg
VGhlIGdvb2dsZXRlc3QgdGVhbSBpcyBjb25zaWRlcmluZyBtYWtpbmcgdGhlIGFzc2VydGlvbiBt
YWNyb3MgdGhyb3cgb24KKyAgICBwbGF0Zm9ybXMgd2hlcmUgZXhjZXB0aW9ucyBhcmUgZW5hYmxl
ZCAoZS5nLiBXaW5kb3dzLCBNYWMgT1MsIGFuZCBMaW51eAorICAgIGNsaWVudC1zaWRlKSwgd2hp
Y2ggd2lsbCBlbGltaW5hdGUgdGhlIG5lZWQgZm9yIHRoZSB1c2VyIHRvIHByb3BhZ2F0ZQorICAg
IGZhaWx1cmVzIGZyb20gYSBzdWJyb3V0aW5lIHRvIGl0cyBjYWxsZXIuIFRoZXJlZm9yZSwgeW91
IHNob3VsZG4ndCB1c2UKKyAgICBnb29nbGV0ZXN0IGFzc2VydGlvbnMgaW4gYSBkZXN0cnVjdG9y
IGlmIHlvdXIgY29kZSBjb3VsZCBydW4gb24gc3VjaCBhCisgICAgcGxhdGZvcm0uCisqICAgSW4g
YSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yLCB5b3UgY2Fubm90IG1ha2UgYSB2aXJ0dWFsIGZ1
bmN0aW9uIGNhbGwgb24KKyAgICB0aGlzIG9iamVjdC4gKFlvdSBjYW4gY2FsbCBhIG1ldGhvZCBk
ZWNsYXJlZCBhcyB2aXJ0dWFsLCBidXQgaXQgd2lsbCBiZQorICAgIHN0YXRpY2FsbHkgYm91bmQu
KSBUaGVyZWZvcmUsIGlmIHlvdSBuZWVkIHRvIGNhbGwgYSBtZXRob2QgdGhhdCB3aWxsIGJlCisg
ICAgb3ZlcnJpZGRlbiBpbiBhIGRlcml2ZWQgY2xhc3MsIHlvdSBoYXZlIHRvIHVzZSBgU2V0VXAo
KS9UZWFyRG93bigpYC4KKworCisjIyBUaGUgY29tcGlsZXIgY29tcGxhaW5zICJubyBtYXRjaGlu
ZyBmdW5jdGlvbiB0byBjYWxsIiB3aGVuIEkgdXNlIEFTU0VSVF9QUkVEKi4gSG93IGRvIEkgZml4
IGl0PworCitJZiB0aGUgcHJlZGljYXRlIGZ1bmN0aW9uIHlvdSB1c2UgaW4gYEFTU0VSVF9QUkVE
KmAgb3IgYEVYUEVDVF9QUkVEKmAgaXMKK292ZXJsb2FkZWQgb3IgYSB0ZW1wbGF0ZSwgdGhlIGNv
bXBpbGVyIHdpbGwgaGF2ZSB0cm91YmxlIGZpZ3VyaW5nIG91dCB3aGljaAorb3ZlcmxvYWRlZCB2
ZXJzaW9uIGl0IHNob3VsZCB1c2UuIGBBU1NFUlRfUFJFRF9GT1JNQVQqYCBhbmQKK2BFWFBFQ1Rf
UFJFRF9GT1JNQVQqYCBkb24ndCBoYXZlIHRoaXMgcHJvYmxlbS4KKworSWYgeW91IHNlZSB0aGlz
IGVycm9yLCB5b3UgbWlnaHQgd2FudCB0byBzd2l0Y2ggdG8KK2AoQVNTRVJUfEVYUEVDVClfUFJF
RF9GT1JNQVQqYCwgd2hpY2ggd2lsbCBhbHNvIGdpdmUgeW91IGEgYmV0dGVyIGZhaWx1cmUKK21l
c3NhZ2UuIElmLCBob3dldmVyLCB0aGF0IGlzIG5vdCBhbiBvcHRpb24sIHlvdSBjYW4gcmVzb2x2
ZSB0aGUgcHJvYmxlbSBieQorZXhwbGljaXRseSB0ZWxsaW5nIHRoZSBjb21waWxlciB3aGljaCB2
ZXJzaW9uIHRvIHBpY2suCisKK0ZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYXZlCisKK2BgYGMr
KworYm9vbCBJc1Bvc2l0aXZlKGludCBuKSB7CisgIHJldHVybiBuID4gMDsKK30KKworYm9vbCBJ
c1Bvc2l0aXZlKGRvdWJsZSB4KSB7CisgIHJldHVybiB4ID4gMDsKK30KK2BgYAorCit5b3Ugd2ls
bCBnZXQgYSBjb21waWxlciBlcnJvciBpZiB5b3Ugd3JpdGUKKworYGBgYysrCitFWFBFQ1RfUFJF
RDEoSXNQb3NpdGl2ZSwgNSk7CitgYGAKKworSG93ZXZlciwgdGhpcyB3aWxsIHdvcms6CisKK2Bg
YGMrKworRVhQRUNUX1BSRUQxKHN0YXRpY19jYXN0PGJvb2wgKCopKGludCk+KElzUG9zaXRpdmUp
LCA1KTsKK2BgYAorCisoVGhlIHN0dWZmIGluc2lkZSB0aGUgYW5nbGVkIGJyYWNrZXRzIGZvciB0
aGUgYHN0YXRpY19jYXN0YCBvcGVyYXRvciBpcyB0aGUgdHlwZQorb2YgdGhlIGZ1bmN0aW9uIHBv
aW50ZXIgZm9yIHRoZSBgaW50YC12ZXJzaW9uIG9mIGBJc1Bvc2l0aXZlKClgLikKKworQXMgYW5v
dGhlciBleGFtcGxlLCB3aGVuIHlvdSBoYXZlIGEgdGVtcGxhdGUgZnVuY3Rpb24KKworYGBgYysr
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Jvb2wgSXNOZWdhdGl2ZShUIHgpIHsKKyAgcmV0dXJu
IHggPCAwOworfQorYGBgCisKK3lvdSBjYW4gdXNlIGl0IGluIGEgcHJlZGljYXRlIGFzc2VydGlv
biBsaWtlIHRoaXM6CisKK2BgYGMrKworQVNTRVJUX1BSRUQxKElzTmVnYXRpdmU8aW50PiwgLTUp
OworYGBgCisKK1RoaW5ncyBhcmUgbW9yZSBpbnRlcmVzdGluZyBpZiB5b3VyIHRlbXBsYXRlIGhh
cyBtb3JlIHRoYW4gb25lIHBhcmFtZXRlcnMuIFRoZQorZm9sbG93aW5nIHdvbid0IGNvbXBpbGU6
CisKK2BgYGMrKworQVNTRVJUX1BSRUQyKEdyZWF0ZXJUaGFuPGludCwgaW50PiwgNSwgMCk7Citg
YGAKKworYXMgdGhlIEMrKyBwcmUtcHJvY2Vzc29yIHRoaW5rcyB5b3UgYXJlIGdpdmluZyBgQVNT
RVJUX1BSRUQyYCA0IGFyZ3VtZW50cywgd2hpY2gKK2lzIG9uZSBtb3JlIHRoYW4gZXhwZWN0ZWQu
IFRoZSB3b3JrYXJvdW5kIGlzIHRvIHdyYXAgdGhlIHByZWRpY2F0ZSBmdW5jdGlvbiBpbgorcGFy
ZW50aGVzZXM6CisKK2BgYGMrKworQVNTRVJUX1BSRUQyKChHcmVhdGVyVGhhbjxpbnQsIGludD4p
LCA1LCAwKTsKK2BgYAorCisKKyMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCAiaWdub3Jp
bmcgcmV0dXJuIHZhbHVlIiB3aGVuIEkgY2FsbCBSVU5fQUxMX1RFU1RTKCkuIFdoeT8KKworU29t
ZSBwZW9wbGUgaGFkIGJlZW4gaWdub3JpbmcgdGhlIHJldHVybiB2YWx1ZSBvZiBgUlVOX0FMTF9U
RVNUUygpYC4gVGhhdCBpcywKK2luc3RlYWQgb2YKKworYGBgYysrCisgIHJldHVybiBSVU5fQUxM
X1RFU1RTKCk7CitgYGAKKwordGhleSB3cml0ZQorCitgYGBjKysKKyAgUlVOX0FMTF9URVNUUygp
OworYGBgCisKK1RoaXMgaXMgKip3cm9uZyBhbmQgZGFuZ2Vyb3VzKiouIFRoZSB0ZXN0aW5nIHNl
cnZpY2VzIG5lZWRzIHRvIHNlZSB0aGUgcmV0dXJuCit2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygp
YCBpbiBvcmRlciB0byBkZXRlcm1pbmUgaWYgYSB0ZXN0IGhhcyBwYXNzZWQuIElmIHlvdXIKK2Bt
YWluKClgIGZ1bmN0aW9uIGlnbm9yZXMgaXQsIHlvdXIgdGVzdCB3aWxsIGJlIGNvbnNpZGVyZWQg
c3VjY2Vzc2Z1bCBldmVuIGlmIGl0CitoYXMgYSBnb29nbGV0ZXN0IGFzc2VydGlvbiBmYWlsdXJl
LiBWZXJ5IGJhZC4KKworV2UgaGF2ZSBkZWNpZGVkIHRvIGZpeCB0aGlzICh0aGFua3MgdG8gTWlj
aGFlbCBDaGFzdGFpbiBmb3IgdGhlIGlkZWEpLiBOb3csIHlvdXIKK2NvZGUgd2lsbCBubyBsb25n
ZXIgYmUgYWJsZSB0byBpZ25vcmUgYFJVTl9BTExfVEVTVFMoKWAgd2hlbiBjb21waWxlZCB3aXRo
CitgZ2NjYC4gSWYgeW91IGRvIHNvLCB5b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IuCisKK0lm
IHlvdSBzZWUgdGhlIGNvbXBpbGVyIGNvbXBsYWluaW5nIGFib3V0IHlvdSBpZ25vcmluZyB0aGUg
cmV0dXJuIHZhbHVlIG9mCitgUlVOX0FMTF9URVNUUygpYCwgdGhlIGZpeCBpcyBzaW1wbGU6IGp1
c3QgbWFrZSBzdXJlIGl0cyB2YWx1ZSBpcyB1c2VkIGFzIHRoZQorcmV0dXJuIHZhbHVlIG9mIGBt
YWluKClgLgorCitCdXQgaG93IGNvdWxkIHdlIGludHJvZHVjZSBhIGNoYW5nZSB0aGF0IGJyZWFr
cyBleGlzdGluZyB0ZXN0cz8gV2VsbCwgaW4gdGhpcworY2FzZSwgdGhlIGNvZGUgd2FzIGFscmVh
ZHkgYnJva2VuIGluIHRoZSBmaXJzdCBwbGFjZSwgc28gd2UgZGlkbid0IGJyZWFrIGl0LiA6LSkK
KworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5zIHRoYXQgYSBjb25zdHJ1Y3RvciAob3IgZGVzdHJ1
Y3RvcikgY2Fubm90IHJldHVybiBhIHZhbHVlLiBXaGF0J3MgZ29pbmcgb24/CisKK0R1ZSB0byBh
IHBlY3VsaWFyaXR5IG9mIEMrKywgaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGUgc3ludGF4IGZvciBz
dHJlYW1pbmcKK21lc3NhZ2VzIHRvIGFuIGBBU1NFUlRfKmAsIGUuZy4KKworYGBgYysrCisgIEFT
U0VSVF9FUSgxLCBGb28oKSkgPDwgImJsYWggYmxhaCIgPDwgZm9vOworYGBgCisKK3dlIGhhZCB0
byBnaXZlIHVwIHVzaW5nIGBBU1NFUlQqYCBhbmQgYEZBSUwqYCAoYnV0IG5vdCBgRVhQRUNUKmAg
YW5kCitgQUREX0ZBSUxVUkUqYCkgaW4gY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycy4gVGhl
IHdvcmthcm91bmQgaXMgdG8gbW92ZSB0aGUKK2NvbnRlbnQgb2YgeW91ciBjb25zdHJ1Y3Rvci9k
ZXN0cnVjdG9yIHRvIGEgcHJpdmF0ZSB2b2lkIG1lbWJlciBmdW5jdGlvbiwgb3IKK3N3aXRjaCB0
byBgRVhQRUNUXyooKWAgaWYgdGhhdCB3b3Jrcy4gVGhpcworW3NlY3Rpb25dKGFkdmFuY2VkLm1k
I2Fzc2VydGlvbi1wbGFjZW1lbnQpIGluIHRoZSB1c2VyJ3MgZ3VpZGUgZXhwbGFpbnMgaXQuCisK
KyMjIE15IFNldFVwKCkgZnVuY3Rpb24gaXMgbm90IGNhbGxlZC4gV2h5PworCitDKysgaXMgY2Fz
ZS1zZW5zaXRpdmUuIERpZCB5b3Ugc3BlbGwgaXQgYXMgYFNldHVwKClgPworCitTaW1pbGFybHks
IHNvbWV0aW1lcyBwZW9wbGUgc3BlbGwgYFNldFVwVGVzdENhc2UoKWAgYXMgYFNldHVwVGVzdENh
c2UoKWAgYW5kCit3b25kZXIgd2h5IGl0J3MgbmV2ZXIgY2FsbGVkLgorCisjIyBIb3cgZG8gSSBq
dW1wIHRvIHRoZSBsaW5lIG9mIGEgZmFpbHVyZSBpbiBFbWFjcyBkaXJlY3RseT8KKworZ29vZ2xl
dGVzdCdzIGZhaWx1cmUgbWVzc2FnZSBmb3JtYXQgaXMgdW5kZXJzdG9vZCBieSBFbWFjcyBhbmQg
bWFueSBvdGhlciBJREVzLAorbGlrZSBhY21lIGFuZCBYQ29kZS4gSWYgYSBnb29nbGV0ZXN0IG1l
c3NhZ2UgaXMgaW4gYSBjb21waWxhdGlvbiBidWZmZXIgaW4KK0VtYWNzLCB0aGVuIGl0J3MgY2xp
Y2thYmxlLgorCisKKyMjIEkgaGF2ZSBzZXZlcmFsIHRlc3QgY2FzZXMgd2hpY2ggc2hhcmUgdGhl
IHNhbWUgdGVzdCBmaXh0dXJlIGxvZ2ljLCBkbyBJIGhhdmUgdG8gZGVmaW5lIGEgbmV3IHRlc3Qg
Zml4dHVyZSBjbGFzcyBmb3IgZWFjaCBvZiB0aGVtPyBUaGlzIHNlZW1zIHByZXR0eSB0ZWRpb3Vz
LgorCitZb3UgZG9uJ3QgaGF2ZSB0by4gSW5zdGVhZCBvZgorCitgYGBjKysKK2NsYXNzIEZvb1Rl
c3QgOiBwdWJsaWMgQmFzZVRlc3Qge307CisKK1RFU1RfRihGb29UZXN0LCBBYmMpIHsgLi4uIH0K
K1RFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0KKworY2xhc3MgQmFyVGVzdCA6IHB1YmxpYyBC
YXNlVGVzdCB7fTsKKworVEVTVF9GKEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRl
c3QsIERlZikgeyAuLi4gfQorYGBgCisKK3lvdSBjYW4gc2ltcGx5IGB0eXBlZGVmYCB0aGUgdGVz
dCBmaXh0dXJlczoKKworYGBgYysrCit0eXBlZGVmIEJhc2VUZXN0IEZvb1Rlc3Q7CisKK1RFU1Rf
RihGb29UZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0KKwor
dHlwZWRlZiBCYXNlVGVzdCBCYXJUZXN0OworCitURVNUX0YoQmFyVGVzdCwgQWJjKSB7IC4uLiB9
CitURVNUX0YoQmFyVGVzdCwgRGVmKSB7IC4uLiB9CitgYGAKKworIyMgZ29vZ2xldGVzdCBvdXRw
dXQgaXMgYnVyaWVkIGluIGEgd2hvbGUgYnVuY2ggb2YgTE9HIG1lc3NhZ2VzLiBXaGF0IGRvIEkg
ZG8/CisKK1RoZSBnb29nbGV0ZXN0IG91dHB1dCBpcyBtZWFudCB0byBiZSBhIGNvbmNpc2UgYW5k
IGh1bWFuLWZyaWVuZGx5IHJlcG9ydC4gSWYKK3lvdXIgdGVzdCBnZW5lcmF0ZXMgdGV4dHVhbCBv
dXRwdXQgaXRzZWxmLCBpdCB3aWxsIG1peCB3aXRoIHRoZSBnb29nbGV0ZXN0CitvdXRwdXQsIG1h
a2luZyBpdCBoYXJkIHRvIHJlYWQuIEhvd2V2ZXIsIHRoZXJlIGlzIGFuIGVhc3kgc29sdXRpb24g
dG8gdGhpcworcHJvYmxlbS4KKworU2luY2UgYExPR2AgbWVzc2FnZXMgZ28gdG8gc3RkZXJyLCB3
ZSBkZWNpZGVkIHRvIGxldCBnb29nbGV0ZXN0IG91dHB1dCBnbyB0bworc3Rkb3V0LiBUaGlzIHdh
eSwgeW91IGNhbiBlYXNpbHkgc2VwYXJhdGUgdGhlIHR3byB1c2luZyByZWRpcmVjdGlvbi4gRm9y
CitleGFtcGxlOgorCitgYGBzaGVsbAorJCAuL215X3Rlc3QgPiBndGVzdF9vdXRwdXQudHh0Citg
YGAKKworCisjIyBXaHkgc2hvdWxkIEkgcHJlZmVyIHRlc3QgZml4dHVyZXMgb3ZlciBnbG9iYWwg
dmFyaWFibGVzPworCitUaGVyZSBhcmUgc2V2ZXJhbCBnb29kIHJlYXNvbnM6CisKKzEuICBJdCdz
IGxpa2VseSB5b3VyIHRlc3QgbmVlZHMgdG8gY2hhbmdlIHRoZSBzdGF0ZXMgb2YgaXRzIGdsb2Jh
bCB2YXJpYWJsZXMuCisgICAgVGhpcyBtYWtlcyBpdCBkaWZmaWN1bHQgdG8ga2VlcCBzaWRlIGVm
ZmVjdHMgZnJvbSBlc2NhcGluZyBvbmUgdGVzdCBhbmQKKyAgICBjb250YW1pbmF0aW5nIG90aGVy
cywgbWFraW5nIGRlYnVnZ2luZyBkaWZmaWN1bHQuIEJ5IHVzaW5nIGZpeHR1cmVzLCBlYWNoCisg
ICAgdGVzdCBoYXMgYSBmcmVzaCBzZXQgb2YgdmFyaWFibGVzIHRoYXQncyBkaWZmZXJlbnQgKGJ1
dCB3aXRoIHRoZSBzYW1lCisgICAgbmFtZXMpLiBUaHVzLCB0ZXN0cyBhcmUga2VwdCBpbmRlcGVu
ZGVudCBvZiBlYWNoIG90aGVyLgorMS4gIEdsb2JhbCB2YXJpYWJsZXMgcG9sbHV0ZSB0aGUgZ2xv
YmFsIG5hbWVzcGFjZS4KKzEuICBUZXN0IGZpeHR1cmVzIGNhbiBiZSByZXVzZWQgdmlhIHN1YmNs
YXNzaW5nLCB3aGljaCBjYW5ub3QgYmUgZG9uZSBlYXNpbHkKKyAgICB3aXRoIGdsb2JhbCB2YXJp
YWJsZXMuIFRoaXMgaXMgdXNlZnVsIGlmIG1hbnkgdGVzdCBjYXNlcyBoYXZlIHNvbWV0aGluZyBp
bgorICAgIGNvbW1vbi4KKworCisgICAgIyMgV2hhdCBjYW4gdGhlIHN0YXRlbWVudCBhcmd1bWVu
dCBpbiBBU1NFUlRfREVBVEgoKSBiZT8KKworYEFTU0VSVF9ERUFUSCgqc3RhdGVtZW50KiwgKnJl
Z2V4KilgIChvciBhbnkgZGVhdGggYXNzZXJ0aW9uIG1hY3JvKSBjYW4gYmUgdXNlZAord2hlcmV2
ZXIgYCpzdGF0ZW1lbnQqYCBpcyB2YWxpZC4gU28gYmFzaWNhbGx5IGAqc3RhdGVtZW50KmAgY2Fu
IGJlIGFueSBDKysKK3N0YXRlbWVudCB0aGF0IG1ha2VzIHNlbnNlIGluIHRoZSBjdXJyZW50IGNv
bnRleHQuIEluIHBhcnRpY3VsYXIsIGl0IGNhbgorcmVmZXJlbmNlIGdsb2JhbCBhbmQvb3IgbG9j
YWwgdmFyaWFibGVzLCBhbmQgY2FuIGJlOgorCisqICAgYSBzaW1wbGUgZnVuY3Rpb24gY2FsbCAo
b2Z0ZW4gdGhlIGNhc2UpLAorKiAgIGEgY29tcGxleCBleHByZXNzaW9uLCBvcgorKiAgIGEgY29t
cG91bmQgc3RhdGVtZW50LgorCitTb21lIGV4YW1wbGVzIGFyZSBzaG93biBoZXJlOgorCitgYGBj
KysKKy8vIEEgZGVhdGggdGVzdCBjYW4gYmUgYSBzaW1wbGUgZnVuY3Rpb24gY2FsbC4KK1RFU1Qo
TXlEZWF0aFRlc3QsIEZ1bmN0aW9uQ2FsbCkgeworICBBU1NFUlRfREVBVEgoWHl6KDUpLCAiWHl6
IGZhaWxlZCIpOworfQorCisvLyBPciBhIGNvbXBsZXggZXhwcmVzc2lvbiB0aGF0IHJlZmVyZW5j
ZXMgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMuCitURVNUKE15RGVhdGhUZXN0LCBDb21wbGV4RXhw
cmVzc2lvbikgeworICBjb25zdCBib29sIGMgPSBDb25kaXRpb24oKTsKKyAgQVNTRVJUX0RFQVRI
KChjID8gRnVuYzEoMCkgOiBvYmplY3QyLk1ldGhvZCgidGVzdCIpKSwKKyAgICAgICAgICAgICAg
ICIoRnVuYzF8TWV0aG9kKSBmYWlsZWQiKTsKK30KKworLy8gRGVhdGggYXNzZXJ0aW9ucyBjYW4g
YmUgdXNlZCBhbnkgd2hlcmUgaW4gYSBmdW5jdGlvbi4gIEluCisvLyBwYXJ0aWN1bGFyLCB0aGV5
IGNhbiBiZSBpbnNpZGUgYSBsb29wLgorVEVTVChNeURlYXRoVGVzdCwgSW5zaWRlTG9vcCkgewor
ICAvLyBWZXJpZmllcyB0aGF0IEZvbygwKSwgRm9vKDEpLCAuLi4sIGFuZCBGb28oNCkgYWxsIGRp
ZS4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICBFWFBFQ1RfREVBVEhfTShG
b28oaSksICJGb28gaGFzIFxcZCsgZXJyb3JzIiwKKyAgICAgICAgICAgICAgICAgICA6OnRlc3Rp
bmc6Ok1lc3NhZ2UoKSA8PCAid2hlcmUgaSBpcyAiIDw8IGkpOworICB9Cit9CisKKy8vIEEgZGVh
dGggYXNzZXJ0aW9uIGNhbiBjb250YWluIGEgY29tcG91bmQgc3RhdGVtZW50LgorVEVTVChNeURl
YXRoVGVzdCwgQ29tcG91bmRTdGF0ZW1lbnQpIHsKKyAgLy8gVmVyaWZpZXMgdGhhdCBhdCBsZWFz
ZSBvbmUgb2YgQmFyKDApLCBCYXIoMSksIC4uLiwgYW5kCisgIC8vIEJhcig0KSBkaWVzLgorICBB
U1NFUlRfREVBVEgoeworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7CisgICAgICBC
YXIoaSk7CisgICAgfQorICB9LAorICAiQmFyIGhhcyBcXGQrIGVycm9ycyIpOworfQorYGBgCisK
K2d0ZXN0LWRlYXRoLXRlc3RfdGVzdC5jYyBjb250YWlucyBtb3JlIGV4YW1wbGVzIGlmIHlvdSBh
cmUgaW50ZXJlc3RlZC4KKworIyMgSSBoYXZlIGEgZml4dHVyZSBjbGFzcyBgRm9vVGVzdGAsIGJ1
dCBgVEVTVF9GKEZvb1Rlc3QsIEJhcilgIGdpdmVzIG1lIGVycm9yIGBgIm5vIG1hdGNoaW5nIGZ1
bmN0aW9uIGZvciBjYWxsIHRvIGBGb29UZXN0OjpGb29UZXN0KCknImBgLiBXaHk/CisKK0dvb2ds
ZXRlc3QgbmVlZHMgdG8gYmUgYWJsZSB0byBjcmVhdGUgb2JqZWN0cyBvZiB5b3VyIHRlc3QgZml4
dHVyZSBjbGFzcywgc28gaXQKK211c3QgaGF2ZSBhIGRlZmF1bHQgY29uc3RydWN0b3IuIE5vcm1h
bGx5IHRoZSBjb21waWxlciB3aWxsIGRlZmluZSBvbmUgZm9yIHlvdS4KK0hvd2V2ZXIsIHRoZXJl
IGFyZSBjYXNlcyB3aGVyZSB5b3UgaGF2ZSB0byBkZWZpbmUgeW91ciBvd246CisKKyogICBJZiB5
b3UgZXhwbGljaXRseSBkZWNsYXJlIGEgbm9uLWRlZmF1bHQgY29uc3RydWN0b3IgZm9yIGNsYXNz
IGBGb29UZXN0YAorICAgIChgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoKWAgZG9lcyB0aGlz
KSwgdGhlbiB5b3UgbmVlZCB0byBkZWZpbmUgYQorICAgIGRlZmF1bHQgY29uc3RydWN0b3IsIGV2
ZW4gaWYgaXQgd291bGQgYmUgZW1wdHkuCisqICAgSWYgYEZvb1Rlc3RgIGhhcyBhIGNvbnN0IG5v
bi1zdGF0aWMgZGF0YSBtZW1iZXIsIHRoZW4geW91IGhhdmUgdG8gZGVmaW5lIHRoZQorICAgIGRl
ZmF1bHQgY29uc3RydWN0b3IgKmFuZCogaW5pdGlhbGl6ZSB0aGUgY29uc3QgbWVtYmVyIGluIHRo
ZSBpbml0aWFsaXplcgorICAgIGxpc3Qgb2YgdGhlIGNvbnN0cnVjdG9yLiAoRWFybHkgdmVyc2lv
bnMgb2YgYGdjY2AgZG9lc24ndCBmb3JjZSB5b3UgdG8KKyAgICBpbml0aWFsaXplIHRoZSBjb25z
dCBtZW1iZXIuIEl0J3MgYSBidWcgdGhhdCBoYXMgYmVlbiBmaXhlZCBpbiBgZ2NjIDRgLikKKwor
IyMgV2h5IGRvZXMgQVNTRVJUX0RFQVRIIGNvbXBsYWluIGFib3V0IHByZXZpb3VzIHRocmVhZHMg
dGhhdCB3ZXJlIGFscmVhZHkgam9pbmVkPworCitXaXRoIHRoZSBMaW51eCBwdGhyZWFkIGxpYnJh
cnksIHRoZXJlIGlzIG5vIHR1cm5pbmcgYmFjayBvbmNlIHlvdSBjcm9zcyB0aGUgbGluZQorZnJv
bSBzaW5nbGUgdGhyZWFkIHRvIG11bHRpcGxlIHRocmVhZHMuIFRoZSBmaXJzdCB0aW1lIHlvdSBj
cmVhdGUgYSB0aHJlYWQsIGEKK21hbmFnZXIgdGhyZWFkIGlzIGNyZWF0ZWQgaW4gYWRkaXRpb24s
IHNvIHlvdSBnZXQgMywgbm90IDIsIHRocmVhZHMuIExhdGVyIHdoZW4KK3RoZSB0aHJlYWQgeW91
IGNyZWF0ZSBqb2lucyB0aGUgbWFpbiB0aHJlYWQsIHRoZSB0aHJlYWQgY291bnQgZGVjcmVtZW50
cyBieSAxLAorYnV0IHRoZSBtYW5hZ2VyIHRocmVhZCB3aWxsIG5ldmVyIGJlIGtpbGxlZCwgc28g
eW91IHN0aWxsIGhhdmUgMiB0aHJlYWRzLCB3aGljaAorbWVhbnMgeW91IGNhbm5vdCBzYWZlbHkg
cnVuIGEgZGVhdGggdGVzdC4KKworVGhlIG5ldyBOUFRMIHRocmVhZCBsaWJyYXJ5IGRvZXNuJ3Qg
c3VmZmVyIGZyb20gdGhpcyBwcm9ibGVtLCBhcyBpdCBkb2Vzbid0CitjcmVhdGUgYSBtYW5hZ2Vy
IHRocmVhZC4gSG93ZXZlciwgaWYgeW91IGRvbid0IGNvbnRyb2wgd2hpY2ggbWFjaGluZSB5b3Vy
IHRlc3QKK3J1bnMgb24sIHlvdSBzaG91bGRuJ3QgZGVwZW5kIG9uIHRoaXMuCisKKyMjIFdoeSBk
b2VzIGdvb2dsZXRlc3QgcmVxdWlyZSB0aGUgZW50aXJlIHRlc3QgY2FzZSwgaW5zdGVhZCBvZiBp
bmRpdmlkdWFsIHRlc3RzLCB0byBiZSBuYW1lZCAqRGVhdGhUZXN0IHdoZW4gaXQgdXNlcyBBU1NF
UlRfREVBVEg/CisKK2dvb2dsZXRlc3QgZG9lcyBub3QgaW50ZXJsZWF2ZSB0ZXN0cyBmcm9tIGRp
ZmZlcmVudCB0ZXN0IGNhc2VzLiBUaGF0IGlzLCBpdCBydW5zCithbGwgdGVzdHMgaW4gb25lIHRl
c3QgY2FzZSBmaXJzdCwgYW5kIHRoZW4gcnVucyBhbGwgdGVzdHMgaW4gdGhlIG5leHQgdGVzdCBj
YXNlLAorYW5kIHNvIG9uLiBnb29nbGV0ZXN0IGRvZXMgdGhpcyBiZWNhdXNlIGl0IG5lZWRzIHRv
IHNldCB1cCBhIHRlc3QgY2FzZSBiZWZvcmUKK3RoZSBmaXJzdCB0ZXN0IGluIGl0IGlzIHJ1biwg
YW5kIHRlYXIgaXQgZG93biBhZnRlcndvcmRzLiBTcGxpdHRpbmcgdXAgdGhlIHRlc3QKK2Nhc2Ug
d291bGQgcmVxdWlyZSBtdWx0aXBsZSBzZXQtdXAgYW5kIHRlYXItZG93biBwcm9jZXNzZXMsIHdo
aWNoIGlzIGluZWZmaWNpZW50CithbmQgbWFrZXMgdGhlIHNlbWFudGljcyB1bmNsZWFuLgorCitJ
ZiB3ZSB3ZXJlIHRvIGRldGVybWluZSB0aGUgb3JkZXIgb2YgdGVzdHMgYmFzZWQgb24gdGVzdCBu
YW1lIGluc3RlYWQgb2YgdGVzdAorY2FzZSBuYW1lLCB0aGVuIHdlIHdvdWxkIGhhdmUgYSBwcm9i
bGVtIHdpdGggdGhlIGZvbGxvd2luZyBzaXR1YXRpb246CisKK2BgYGMrKworVEVTVF9GKEZvb1Rl
c3QsIEFiY0RlYXRoVGVzdCkgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIFV2dykgeyAuLi4gfQor
CitURVNUX0YoQmFyVGVzdCwgRGVmRGVhdGhUZXN0KSB7IC4uLiB9CitURVNUX0YoQmFyVGVzdCwg
WHl6KSB7IC4uLiB9CitgYGAKKworU2luY2UgYEZvb1Rlc3QuQWJjRGVhdGhUZXN0YCBuZWVkcyB0
byBydW4gYmVmb3JlIGBCYXJUZXN0Llh5emAsIGFuZCB3ZSBkb24ndAoraW50ZXJsZWF2ZSB0ZXN0
cyBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLCB3ZSBuZWVkIHRvIHJ1biBhbGwgdGVzdHMgaW4g
dGhlCitgRm9vVGVzdGAgY2FzZSBiZWZvcmUgcnVubmluZyBhbnkgdGVzdCBpbiB0aGUgYEJhclRl
c3RgIGNhc2UuIFRoaXMgY29udHJhZGljdHMKK3dpdGggdGhlIHJlcXVpcmVtZW50IHRvIHJ1biBg
QmFyVGVzdC5EZWZEZWF0aFRlc3RgIGJlZm9yZSBgRm9vVGVzdC5VdndgLgorCisjIyBCdXQgSSBk
b24ndCBsaWtlIGNhbGxpbmcgbXkgZW50aXJlIHRlc3QgY2FzZSBcKkRlYXRoVGVzdCB3aGVuIGl0
IGNvbnRhaW5zIGJvdGggZGVhdGggdGVzdHMgYW5kIG5vbi1kZWF0aCB0ZXN0cy4gV2hhdCBkbyBJ
IGRvPworCitZb3UgZG9uJ3QgaGF2ZSB0bywgYnV0IGlmIHlvdSBsaWtlLCB5b3UgbWF5IHNwbGl0
IHVwIHRoZSB0ZXN0IGNhc2UgaW50bworYEZvb1Rlc3RgIGFuZCBgRm9vRGVhdGhUZXN0YCwgd2hl
cmUgdGhlIG5hbWVzIG1ha2UgaXQgY2xlYXIgdGhhdCB0aGV5IGFyZQorcmVsYXRlZDoKKworYGBg
YysrCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OworCitU
RVNUX0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9
CisKK3VzaW5nIEZvb0RlYXRoVGVzdCA9IEZvb1Rlc3Q7CisKK1RFU1RfRihGb29EZWF0aFRlc3Qs
IFV2dykgeyAuLi4gRVhQRUNUX0RFQVRIKC4uLikgLi4uIH0KK1RFU1RfRihGb29EZWF0aFRlc3Qs
IFh5eikgeyAuLi4gQVNTRVJUX0RFQVRIKC4uLikgLi4uIH0KK2BgYAorCisjIyBnb29nbGV0ZXN0
IHByaW50cyB0aGUgTE9HIG1lc3NhZ2VzIGluIGEgZGVhdGggdGVzdCdzIGNoaWxkIHByb2Nlc3Mg
b25seSB3aGVuIHRoZSB0ZXN0IGZhaWxzLiBIb3cgY2FuIEkgc2VlIHRoZSBMT0cgbWVzc2FnZXMg
d2hlbiB0aGUgZGVhdGggdGVzdCBzdWNjZWVkcz8KKworUHJpbnRpbmcgdGhlIExPRyBtZXNzYWdl
cyBnZW5lcmF0ZWQgYnkgdGhlIHN0YXRlbWVudCBpbnNpZGUgYEVYUEVDVF9ERUFUSCgpYAorbWFr
ZXMgaXQgaGFyZGVyIHRvIHNlYXJjaCBmb3IgcmVhbCBwcm9ibGVtcyBpbiB0aGUgcGFyZW50J3Mg
bG9nLiBUaGVyZWZvcmUsCitnb29nbGV0ZXN0IG9ubHkgcHJpbnRzIHRoZW0gd2hlbiB0aGUgZGVh
dGggdGVzdCBoYXMgZmFpbGVkLgorCitJZiB5b3UgcmVhbGx5IG5lZWQgdG8gc2VlIHN1Y2ggTE9H
IG1lc3NhZ2VzLCBhIHdvcmthcm91bmQgaXMgdG8gdGVtcG9yYXJpbHkKK2JyZWFrIHRoZSBkZWF0
aCB0ZXN0IChlLmcuIGJ5IGNoYW5naW5nIHRoZSByZWdleCBwYXR0ZXJuIGl0IGlzIGV4cGVjdGVk
IHRvCittYXRjaCkuIEFkbWl0dGVkbHksIHRoaXMgaXMgYSBoYWNrLiBXZSdsbCBjb25zaWRlciBh
IG1vcmUgcGVybWFuZW50IHNvbHV0aW9uCithZnRlciB0aGUgZm9yay1hbmQtZXhlYy1zdHlsZSBk
ZWF0aCB0ZXN0cyBhcmUgaW1wbGVtZW50ZWQuCisKKyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMg
YWJvdXQgIm5vIG1hdGNoIGZvciAnb3BlcmF0b3I8PCciIHdoZW4gSSB1c2UgYW4gYXNzZXJ0aW9u
LiBXaGF0IGdpdmVzPworCitJZiB5b3UgdXNlIGEgdXNlci1kZWZpbmVkIHR5cGUgYEZvb1R5cGVg
IGluIGFuIGFzc2VydGlvbiwgeW91IG11c3QgbWFrZSBzdXJlCit0aGVyZSBpcyBhbiBgc3RkOjpv
c3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYsIGNvbnN0IEZvb1R5cGUmKWAgZnVuY3Rp
b24KK2RlZmluZWQgc3VjaCB0aGF0IHdlIGNhbiBwcmludCBhIHZhbHVlIG9mIGBGb29UeXBlYC4K
KworSW4gYWRkaXRpb24sIGlmIGBGb29UeXBlYCBpcyBkZWNsYXJlZCBpbiBhIG5hbWUgc3BhY2Us
IHRoZSBgPDxgIG9wZXJhdG9yIGFsc28KK25lZWRzIHRvIGJlIGRlZmluZWQgaW4gdGhlICpzYW1l
KiBuYW1lIHNwYWNlLiBTZWUgZ28vdG90dy80OSBmb3IgZGV0YWlscy4KKworIyMgSG93IGRvIEkg
c3VwcHJlc3MgdGhlIG1lbW9yeSBsZWFrIG1lc3NhZ2VzIG9uIFdpbmRvd3M/CisKK1NpbmNlIHRo
ZSBzdGF0aWNhbGx5IGluaXRpYWxpemVkIGdvb2dsZXRlc3Qgc2luZ2xldG9uIHJlcXVpcmVzIGFs
bG9jYXRpb25zIG9uCit0aGUgaGVhcCwgdGhlIFZpc3VhbCBDKysgbWVtb3J5IGxlYWsgZGV0ZWN0
b3Igd2lsbCByZXBvcnQgbWVtb3J5IGxlYWtzIGF0IHRoZQorZW5kIG9mIHRoZSBwcm9ncmFtIHJ1
bi4gVGhlIGVhc2llc3Qgd2F5IHRvIGF2b2lkIHRoaXMgaXMgdG8gdXNlIHRoZQorYF9DcnRNZW1D
aGVja3BvaW50YCBhbmQgYF9DcnRNZW1EdW1wQWxsT2JqZWN0c1NpbmNlYCBjYWxscyB0byBub3Qg
cmVwb3J0IGFueQorc3RhdGljYWxseSBpbml0aWFsaXplZCBoZWFwIG9iamVjdHMuIFNlZSBNU0RO
IGZvciBtb3JlIGRldGFpbHMgYW5kIGFkZGl0aW9uYWwKK2hlYXAgY2hlY2svZGVidWcgcm91dGlu
ZXMuCisKKworIyMgSG93IGNhbiBteSBjb2RlIGRldGVjdCBpZiBpdCBpcyBydW5uaW5nIGluIGEg
dGVzdD8KKworSWYgeW91IHdyaXRlIGNvZGUgdGhhdCBzbmlmZnMgd2hldGhlciBpdCdzIHJ1bm5p
bmcgaW4gYSB0ZXN0IGFuZCBkb2VzIGRpZmZlcmVudAordGhpbmdzIGFjY29yZGluZ2x5LCB5b3Ug
YXJlIGxlYWtpbmcgdGVzdC1vbmx5IGxvZ2ljIGludG8gcHJvZHVjdGlvbiBjb2RlIGFuZAordGhl
cmUgaXMgbm8gZWFzeSB3YXkgdG8gZW5zdXJlIHRoYXQgdGhlIHRlc3Qtb25seSBjb2RlIHBhdGhz
IGFyZW4ndCBydW4gYnkKK21pc3Rha2UgaW4gcHJvZHVjdGlvbi4gU3VjaCBjbGV2ZXJuZXNzIGFs
c28gbGVhZHMgdG8KK1tIZWlzZW5idWdzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9I
ZWlzZW5idWcpLiBUaGVyZWZvcmUgd2Ugc3Ryb25nbHkKK2FkdmlzZSBhZ2FpbnN0IHRoZSBwcmFj
dGljZSwgYW5kIGdvb2dsZXRlc3QgZG9lc24ndCBwcm92aWRlIGEgd2F5IHRvIGRvIGl0LgorCitJ
biBnZW5lcmFsLCB0aGUgcmVjb21tZW5kZWQgd2F5IHRvIGNhdXNlIHRoZSBjb2RlIHRvIGJlaGF2
ZSBkaWZmZXJlbnRseSB1bmRlcgordGVzdCBpcyBbRGVwZW5kZW5jeSBJbmplY3Rpb25dKGh0dHBz
Oi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RlcGVuZGVuY3lfaW5qZWN0aW9uKS4gWW91IGNhbiBp
bmplY3QKK2RpZmZlcmVudCBmdW5jdGlvbmFsaXR5IGZyb20gdGhlIHRlc3QgYW5kIGZyb20gdGhl
IHByb2R1Y3Rpb24gY29kZS4gU2luY2UgeW91cgorcHJvZHVjdGlvbiBjb2RlIGRvZXNuJ3QgbGlu
ayBpbiB0aGUgZm9yLXRlc3QgbG9naWMgYXQgYWxsICh0aGUKK1tgdGVzdG9ubHlgXShodHRwczov
L2RvY3MuYmF6ZWwuYnVpbGQvdmVyc2lvbnMvbWFzdGVyL2JlL2NvbW1vbi1kZWZpbml0aW9ucy5o
dG1sI2NvbW1vbi50ZXN0b25seSkKK2F0dHJpYnV0ZSBmb3IgQlVJTEQgdGFyZ2V0cyBoZWxwcyB0
byBlbnN1cmUgdGhhdCksIHRoZXJlIGlzIG5vIGRhbmdlciBpbgorYWNjaWRlbnRhbGx5IHJ1bm5p
bmcgaXQuCisKK0hvd2V2ZXIsIGlmIHlvdSAqcmVhbGx5KiwgKnJlYWxseSosICpyZWFsbHkqIGhh
dmUgbm8gY2hvaWNlLCBhbmQgaWYgeW91IGZvbGxvdwordGhlIHJ1bGUgb2YgZW5kaW5nIHlvdXIg
dGVzdCBwcm9ncmFtIG5hbWVzIHdpdGggYF90ZXN0YCwgeW91IGNhbiB1c2UgdGhlCisqaG9ycmli
bGUqIGhhY2sgb2Ygc25pZmZpbmcgeW91ciBleGVjdXRhYmxlIG5hbWUgKGBhcmd2WzBdYCBpbiBg
bWFpbigpYCkgdG8ga25vdword2hldGhlciB0aGUgY29kZSBpcyB1bmRlciB0ZXN0LgorCisKKyMj
IEhvdyBkbyBJIHRlbXBvcmFyaWx5IGRpc2FibGUgYSB0ZXN0PworCitJZiB5b3UgaGF2ZSBhIGJy
b2tlbiB0ZXN0IHRoYXQgeW91IGNhbm5vdCBmaXggcmlnaHQgYXdheSwgeW91IGNhbiBhZGQgdGhl
CitESVNBQkxFRF8gcHJlZml4IHRvIGl0cyBuYW1lLiBUaGlzIHdpbGwgZXhjbHVkZSBpdCBmcm9t
IGV4ZWN1dGlvbi4gVGhpcyBpcworYmV0dGVyIHRoYW4gY29tbWVudGluZyBvdXQgdGhlIGNvZGUg
b3IgdXNpbmcgI2lmIDAsIGFzIGRpc2FibGVkIHRlc3RzIGFyZSBzdGlsbAorY29tcGlsZWQgKGFu
ZCB0aHVzIHdvbid0IHJvdCkuCisKK1RvIGluY2x1ZGUgZGlzYWJsZWQgdGVzdHMgaW4gdGVzdCBl
eGVjdXRpb24sIGp1c3QgaW52b2tlIHRoZSB0ZXN0IHByb2dyYW0gd2l0aAordGhlIC0tZ3Rlc3Rf
YWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxhZy4KKworIyMgSXMgaXQgT0sgaWYgSSBoYXZlIHR3
byBzZXBhcmF0ZSBgVEVTVChGb28sIEJhcilgIHRlc3QgbWV0aG9kcyBkZWZpbmVkIGluIGRpZmZl
cmVudCBuYW1lc3BhY2VzPworCitZZXMuCisKK1RoZSBydWxlIGlzICoqYWxsIHRlc3QgbWV0aG9k
cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgZml4dHVyZQorY2xhc3Mu
KiogVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgaXMgKiphbGxvd2VkKiogYmVjYXVzZSBi
b3RoIHRlc3RzIHVzZSB0aGUKK3NhbWUgZml4dHVyZSBjbGFzcyAoYDo6dGVzdGluZzo6VGVzdGAp
LgorCitgYGBjKysKK25hbWVzcGFjZSBmb28geworVEVTVChDb29sVGVzdCwgRG9Tb21ldGhpbmcp
IHsKKyAgU1VDQ0VFRCgpOworfQorfSAgLy8gbmFtZXNwYWNlIGZvbworCituYW1lc3BhY2UgYmFy
IHsKK1RFU1QoQ29vbFRlc3QsIERvU29tZXRoaW5nKSB7CisgIFNVQ0NFRUQoKTsKK30KK30gIC8v
IG5hbWVzcGFjZSBiYXIKK2BgYAorCitIb3dldmVyLCB0aGUgZm9sbG93aW5nIGNvZGUgaXMgKipu
b3QgYWxsb3dlZCoqIGFuZCB3aWxsIHByb2R1Y2UgYSBydW50aW1lIGVycm9yCitmcm9tIGdvb2ds
ZXRlc3QgYmVjYXVzZSB0aGUgdGVzdCBtZXRob2RzIGFyZSB1c2luZyBkaWZmZXJlbnQgdGVzdCBm
aXh0dXJlCitjbGFzc2VzIHdpdGggdGhlIHNhbWUgdGVzdCBjYXNlIG5hbWUuCisKK2BgYGMrKwor
bmFtZXNwYWNlIGZvbyB7CitjbGFzcyBDb29sVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qg
e307ICAvLyBGaXh0dXJlIGZvbzo6Q29vbFRlc3QKK1RFU1RfRihDb29sVGVzdCwgRG9Tb21ldGhp
bmcpIHsKKyAgU1VDQ0VFRCgpOworfQorfSAgLy8gbmFtZXNwYWNlIGZvbworCituYW1lc3BhY2Ug
YmFyIHsKK2NsYXNzIENvb2xUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsgIC8vIEZp
eHR1cmU6IGJhcjo6Q29vbFRlc3QKK1RFU1RfRihDb29sVGVzdCwgRG9Tb21ldGhpbmcpIHsKKyAg
U1VDQ0VFRCgpOworfQorfSAgLy8gbmFtZXNwYWNlIGJhcgorYGBgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL3ByaW1lci5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2RvY3MvcHJpbWVyLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhOGVhOGQ3MTdiODM1YmNiZDIzZjg0Yzll
YTA1ZjE2YTg3OGE1ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9kb2NzL3ByaW1lci5tZApAQCAtMCwwICsxLDU2OSBAQAorIyBHb29nbGV0ZXN0IFByaW1lcgor
CisKKyMjIEludHJvZHVjdGlvbjogV2h5IGdvb2dsZXRlc3Q/CisKKypnb29nbGV0ZXN0KiBoZWxw
cyB5b3Ugd3JpdGUgYmV0dGVyIEMrKyB0ZXN0cy4KKworZ29vZ2xldGVzdCBpcyBhIHRlc3Rpbmcg
ZnJhbWV3b3JrIGRldmVsb3BlZCBieSB0aGUgVGVzdGluZworVGVjaG5vbG9neSB0ZWFtIHdpdGgg
R29vZ2xlJ3Mgc3BlY2lmaWMKK3JlcXVpcmVtZW50cyBhbmQgY29uc3RyYWludHMgaW4gbWluZC4g
Tm8gbWF0dGVyIHdoZXRoZXIgeW91IHdvcmsgb24gTGludXgsCitXaW5kb3dzLCBvciBhIE1hYywg
aWYgeW91IHdyaXRlIEMrKyBjb2RlLCBnb29nbGV0ZXN0IGNhbiBoZWxwIHlvdS4gQW5kIGl0Citz
dXBwb3J0cyAqYW55KiBraW5kIG9mIHRlc3RzLCBub3QganVzdCB1bml0IHRlc3RzLgorCitTbyB3
aGF0IG1ha2VzIGEgZ29vZCB0ZXN0LCBhbmQgaG93IGRvZXMgZ29vZ2xldGVzdCBmaXQgaW4/IFdl
IGJlbGlldmU6CisKKzEuICBUZXN0cyBzaG91bGQgYmUgKmluZGVwZW5kZW50KiBhbmQgKnJlcGVh
dGFibGUqLiBJdCdzIGEgcGFpbiB0byBkZWJ1ZyBhIHRlc3QKKyAgICB0aGF0IHN1Y2NlZWRzIG9y
IGZhaWxzIGFzIGEgcmVzdWx0IG9mIG90aGVyIHRlc3RzLiBnb29nbGV0ZXN0IGlzb2xhdGVzIHRo
ZQorICAgIHRlc3RzIGJ5IHJ1bm5pbmcgZWFjaCBvZiB0aGVtIG9uIGEgZGlmZmVyZW50IG9iamVj
dC4gV2hlbiBhIHRlc3QgZmFpbHMsCisgICAgZ29vZ2xldGVzdCBhbGxvd3MgeW91IHRvIHJ1biBp
dCBpbiBpc29sYXRpb24gZm9yIHF1aWNrIGRlYnVnZ2luZy4KKzEuICBUZXN0cyBzaG91bGQgYmUg
d2VsbCAqb3JnYW5pemVkKiBhbmQgcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mIHRoZSB0ZXN0ZWQK
KyAgICBjb2RlLiBnb29nbGV0ZXN0IGdyb3VwcyByZWxhdGVkIHRlc3RzIGludG8gdGVzdCBjYXNl
cyB0aGF0IGNhbiBzaGFyZSBkYXRhCisgICAgYW5kIHN1YnJvdXRpbmVzLiBUaGlzIGNvbW1vbiBw
YXR0ZXJuIGlzIGVhc3kgdG8gcmVjb2duaXplIGFuZCBtYWtlcyB0ZXN0cworICAgIGVhc3kgdG8g
bWFpbnRhaW4uIFN1Y2ggY29uc2lzdGVuY3kgaXMgZXNwZWNpYWxseSBoZWxwZnVsIHdoZW4gcGVv
cGxlIHN3aXRjaAorICAgIHByb2plY3RzIGFuZCBzdGFydCB0byB3b3JrIG9uIGEgbmV3IGNvZGUg
YmFzZS4KKzEuICBUZXN0cyBzaG91bGQgYmUgKnBvcnRhYmxlKiBhbmQgKnJldXNhYmxlKi4gR29v
Z2xlIGhhcyBhIGxvdCBvZiBjb2RlIHRoYXQgaXMKKyAgICBwbGF0Zm9ybS1uZXV0cmFsLCBpdHMg
dGVzdHMgc2hvdWxkIGFsc28gYmUgcGxhdGZvcm0tbmV1dHJhbC4gZ29vZ2xldGVzdAorICAgIHdv
cmtzIG9uIGRpZmZlcmVudCBPU2VzLCB3aXRoIGRpZmZlcmVudCBjb21waWxlcnMgKGdjYywgaWNj
LCBhbmQgTVNWQyksIHdpdGgKKyAgICBvciB3aXRob3V0IGV4Y2VwdGlvbnMsIHNvIGdvb2dsZXRl
c3QgdGVzdHMgY2FuIGVhc2lseSB3b3JrIHdpdGggYSB2YXJpZXR5IG9mCisgICAgY29uZmlndXJh
dGlvbnMuCisxLiAgV2hlbiB0ZXN0cyBmYWlsLCB0aGV5IHNob3VsZCBwcm92aWRlIGFzIG11Y2gg
KmluZm9ybWF0aW9uKiBhYm91dCB0aGUgcHJvYmxlbQorICAgIGFzIHBvc3NpYmxlLiBnb29nbGV0
ZXN0IGRvZXNuJ3Qgc3RvcCBhdCB0aGUgZmlyc3QgdGVzdCBmYWlsdXJlLiBJbnN0ZWFkLCBpdAor
ICAgIG9ubHkgc3RvcHMgdGhlIGN1cnJlbnQgdGVzdCBhbmQgY29udGludWVzIHdpdGggdGhlIG5l
eHQuIFlvdSBjYW4gYWxzbyBzZXQgdXAKKyAgICB0ZXN0cyB0aGF0IHJlcG9ydCBub24tZmF0YWwg
ZmFpbHVyZXMgYWZ0ZXIgd2hpY2ggdGhlIGN1cnJlbnQgdGVzdCBjb250aW51ZXMuCisgICAgVGh1
cywgeW91IGNhbiBkZXRlY3QgYW5kIGZpeCBtdWx0aXBsZSBidWdzIGluIGEgc2luZ2xlIHJ1bi1l
ZGl0LWNvbXBpbGUKKyAgICBjeWNsZS4KKzEuICBUaGUgdGVzdGluZyBmcmFtZXdvcmsgc2hvdWxk
IGxpYmVyYXRlIHRlc3Qgd3JpdGVycyBmcm9tIGhvdXNla2VlcGluZyBjaG9yZXMKKyAgICBhbmQg
bGV0IHRoZW0gZm9jdXMgb24gdGhlIHRlc3QgKmNvbnRlbnQqLiBnb29nbGV0ZXN0IGF1dG9tYXRp
Y2FsbHkga2VlcHMKKyAgICB0cmFjayBvZiBhbGwgdGVzdHMgZGVmaW5lZCwgYW5kIGRvZXNuJ3Qg
cmVxdWlyZSB0aGUgdXNlciB0byBlbnVtZXJhdGUgdGhlbQorICAgIGluIG9yZGVyIHRvIHJ1biB0
aGVtLgorMS4gIFRlc3RzIHNob3VsZCBiZSAqZmFzdCouIFdpdGggZ29vZ2xldGVzdCwgeW91IGNh
biByZXVzZSBzaGFyZWQgcmVzb3VyY2VzCisgICAgYWNyb3NzIHRlc3RzIGFuZCBwYXkgZm9yIHRo
ZSBzZXQtdXAvdGVhci1kb3duIG9ubHkgb25jZSwgd2l0aG91dCBtYWtpbmcKKyAgICB0ZXN0cyBk
ZXBlbmQgb24gZWFjaCBvdGhlci4KKworU2luY2UgZ29vZ2xldGVzdCBpcyBiYXNlZCBvbiB0aGUg
cG9wdWxhciB4VW5pdCBhcmNoaXRlY3R1cmUsIHlvdSdsbCBmZWVsIHJpZ2h0CithdCBob21lIGlm
IHlvdSd2ZSB1c2VkIEpVbml0IG9yIFB5VW5pdCBiZWZvcmUuIElmIG5vdCwgaXQgd2lsbCB0YWtl
IHlvdSBhYm91dCAxMAorbWludXRlcyB0byBsZWFybiB0aGUgYmFzaWNzIGFuZCBnZXQgc3RhcnRl
ZC4gU28gbGV0J3MgZ28hCisKKyMjIEJld2FyZSBvZiB0aGUgbm9tZW5jbGF0dXJlCisKK19Ob3Rl
Ol8gVGhlcmUgbWlnaHQgYmUgc29tZSBjb25mdXNpb24gb2YgaWRlYSBkdWUgdG8gZGlmZmVyZW50
CitkZWZpbml0aW9ucyBvZiB0aGUgdGVybXMgX1Rlc3RfLCBfVGVzdCBDYXNlXyBhbmQgX1Rlc3Qg
U3VpdGVfLCBzbyBiZXdhcmUKK29mIG1pc3VuZGVyc3RhbmRpbmcgdGhlc2UuCisKK0hpc3Rvcmlj
YWxseSwgZ29vZ2xldGVzdCBzdGFydGVkIHRvIHVzZSB0aGUgdGVybSBfVGVzdCBDYXNlXyBmb3Ig
Z3JvdXBpbmcKK3JlbGF0ZWQgdGVzdHMsIHdoZXJlYXMgY3VycmVudCBwdWJsaWNhdGlvbnMgaW5j
bHVkaW5nIHRoZSBJbnRlcm5hdGlvbmFsIFNvZnR3YXJlCitUZXN0aW5nIFF1YWxpZmljYXRpb25z
IEJvYXJkIChbSVNUUUJdKGh0dHA6Ly93d3cuaXN0cWIub3JnLykpIGFuZCB2YXJpb3VzCit0ZXh0
Ym9va3Mgb24gU29mdHdhcmUgUXVhbGl0eSB1c2UgdGhlIHRlcm0gX1tUZXN0CitTdWl0ZV0oaHR0
cDovL2dsb3NzYXJ5LmlzdHFiLm9yZy9zZWFyY2gvdGVzdCUyMHN1aXRlKV8gZm9yIHRoaXMuCisK
K1RoZSByZWxhdGVkIHRlcm0gX1Rlc3RfLCBhcyBpdCBpcyB1c2VkIGluIHRoZSBnb29nbGV0ZXN0
LCBpcyBjb3JyZXNwb25kaW5nIHRvCit0aGUgdGVybSBfW1Rlc3QgQ2FzZV0oaHR0cDovL2dsb3Nz
YXJ5LmlzdHFiLm9yZy9zZWFyY2gvdGVzdCUyMGNhc2UpXyBvZiBJU1RRQgorYW5kIG90aGVycy4K
KworVGhlIHRlcm0gX1Rlc3RfIGlzIGNvbW1vbmx5IG9mIGJyb2FkIGVub3VnaCBzZW5zZSwgaW5j
bHVkaW5nIElTVFFCJ3MKK2RlZmluaXRpb24gb2YgX1Rlc3QgQ2FzZV8sIHNvIGl0J3Mgbm90IG11
Y2ggb2YgYSBwcm9ibGVtIGhlcmUuIEJ1dCB0aGUKK3Rlcm0gX1Rlc3QgQ2FzZV8gYXMgdXNlZCBp
biBHb29nbGUgVGVzdCBpcyBvZiBjb250cmFkaWN0b3J5IHNlbnNlIGFuZCB0aHVzIGNvbmZ1c2lu
Zy4KKworVW5mb3J0dW5hdGVseSByZXBsYWNpbmcgdGhlIHRlcm0gX1Rlc3QgQ2FzZV8gYnkgX1Rl
c3QgU3VpdGVfIHRocm91Z2hvdXQgdGhlCitnb29nbGV0ZXN0IGlzIG5vdCBlYXN5IHdpdGhvdXQg
YnJlYWtpbmcgZGVwZW5kZW50IHByb2plY3RzLCBhcyBgVGVzdENhc2VgIGlzCitwYXJ0IG9mIHRo
ZSBwdWJsaWMgQVBJIGF0IHZhcmlvdXMgcGxhY2VzLgorCitTbyBmb3IgdGhlIHRpbWUgYmVpbmcs
IHBsZWFzZSBiZSBhd2FyZSBvZiB0aGUgZGlmZmVyZW50IGRlZmluaXRpb25zIG9mCit0aGUgdGVy
bXM6CisKK01lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdvb2dsZXRlc3QgVGVybSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbSVNUUUJdKGh0dHA6Ly93d3cuaXN0cWIu
b3JnLykgVGVybQorOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgOi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IDotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCitFeGVyY2lzZSBhIHBhcnRpY3VsYXIgcHJvZ3JhbSBwYXRoIHdpdGgg
c3BlY2lmaWMgaW5wdXQgdmFsdWVzIGFuZCB2ZXJpZnkgdGhlIHJlc3VsdHMgfCBbVEVTVCgpXSgj
c2ltcGxlLXRlc3RzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW1Rlc3QgQ2FzZV0oaHR0
cDovL2dsb3NzYXJ5LmlzdHFiLm9yZy9zZWFyY2gvdGVzdCUyMGNhc2UpCitBIHNldCBvZiBzZXZl
cmFsIHRlc3RzIHJlbGF0ZWQgdG8gb25lIGNvbXBvbmVudCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCBbVGVzdENhc2VdKCNiYXNpYy1jb25jZXB0cykgfCBbVGVzdFN1aXRl
XShodHRwOi8vZ2xvc3NhcnkuaXN0cWIub3JnL3NlYXJjaC90ZXN0JTIwc3VpdGUpCisKKyMjIEJh
c2ljIENvbmNlcHRzCisKK1doZW4gdXNpbmcgZ29vZ2xldGVzdCwgeW91IHN0YXJ0IGJ5IHdyaXRp
bmcgKmFzc2VydGlvbnMqLCB3aGljaCBhcmUgc3RhdGVtZW50cwordGhhdCBjaGVjayB3aGV0aGVy
IGEgY29uZGl0aW9uIGlzIHRydWUuIEFuIGFzc2VydGlvbidzIHJlc3VsdCBjYW4gYmUgKnN1Y2Nl
c3MqLAorKm5vbmZhdGFsIGZhaWx1cmUqLCBvciAqZmF0YWwgZmFpbHVyZSouIElmIGEgZmF0YWwg
ZmFpbHVyZSBvY2N1cnMsIGl0IGFib3J0cyB0aGUKK2N1cnJlbnQgZnVuY3Rpb247IG90aGVyd2lz
ZSB0aGUgcHJvZ3JhbSBjb250aW51ZXMgbm9ybWFsbHkuCisKKypUZXN0cyogdXNlIGFzc2VydGlv
bnMgdG8gdmVyaWZ5IHRoZSB0ZXN0ZWQgY29kZSdzIGJlaGF2aW9yLiBJZiBhIHRlc3QgY3Jhc2hl
cworb3IgaGFzIGEgZmFpbGVkIGFzc2VydGlvbiwgdGhlbiBpdCAqZmFpbHMqOyBvdGhlcndpc2Ug
aXQgKnN1Y2NlZWRzKi4KKworQSAqdGVzdCBjYXNlKiBjb250YWlucyBvbmUgb3IgbWFueSB0ZXN0
cy4gWW91IHNob3VsZCBncm91cCB5b3VyIHRlc3RzIGludG8gdGVzdAorY2FzZXMgdGhhdCByZWZs
ZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3RlZCBjb2RlLiBXaGVuIG11bHRpcGxlIHRlc3Rz
IGluIGEKK3Rlc3QgY2FzZSBuZWVkIHRvIHNoYXJlIGNvbW1vbiBvYmplY3RzIGFuZCBzdWJyb3V0
aW5lcywgeW91IGNhbiBwdXQgdGhlbSBpbnRvIGEKKyp0ZXN0IGZpeHR1cmUqIGNsYXNzLgorCitB
ICp0ZXN0IHByb2dyYW0qIGNhbiBjb250YWluIG11bHRpcGxlIHRlc3QgY2FzZXMuCisKK1dlJ2xs
IG5vdyBleHBsYWluIGhvdyB0byB3cml0ZSBhIHRlc3QgcHJvZ3JhbSwgc3RhcnRpbmcgYXQgdGhl
IGluZGl2aWR1YWwKK2Fzc2VydGlvbiBsZXZlbCBhbmQgYnVpbGRpbmcgdXAgdG8gdGVzdHMgYW5k
IHRlc3QgY2FzZXMuCisKKyMjIEFzc2VydGlvbnMKKworZ29vZ2xldGVzdCBhc3NlcnRpb25zIGFy
ZSBtYWNyb3MgdGhhdCByZXNlbWJsZSBmdW5jdGlvbiBjYWxscy4gWW91IHRlc3QgYSBjbGFzcwor
b3IgZnVuY3Rpb24gYnkgbWFraW5nIGFzc2VydGlvbnMgYWJvdXQgaXRzIGJlaGF2aW9yLiBXaGVu
IGFuIGFzc2VydGlvbiBmYWlscywKK2dvb2dsZXRlc3QgcHJpbnRzIHRoZSBhc3NlcnRpb24ncyBz
b3VyY2UgZmlsZSBhbmQgbGluZSBudW1iZXIgbG9jYXRpb24sIGFsb25nCit3aXRoIGEgZmFpbHVy
ZSBtZXNzYWdlLiBZb3UgbWF5IGFsc28gc3VwcGx5IGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSB3
aGljaCB3aWxsCitiZSBhcHBlbmRlZCB0byBnb29nbGV0ZXN0J3MgbWVzc2FnZS4KKworVGhlIGFz
c2VydGlvbnMgY29tZSBpbiBwYWlycyB0aGF0IHRlc3QgdGhlIHNhbWUgdGhpbmcgYnV0IGhhdmUg
ZGlmZmVyZW50IGVmZmVjdHMKK29uIHRoZSBjdXJyZW50IGZ1bmN0aW9uLiBgQVNTRVJUXypgIHZl
cnNpb25zIGdlbmVyYXRlIGZhdGFsIGZhaWx1cmVzIHdoZW4gdGhleQorZmFpbCwgYW5kICoqYWJv
cnQgdGhlIGN1cnJlbnQgZnVuY3Rpb24qKi4gYEVYUEVDVF8qYCB2ZXJzaW9ucyBnZW5lcmF0ZSBu
b25mYXRhbAorZmFpbHVyZXMsIHdoaWNoIGRvbid0IGFib3J0IHRoZSBjdXJyZW50IGZ1bmN0aW9u
LiBVc3VhbGx5IGBFWFBFQ1RfKmAgYXJlCitwcmVmZXJyZWQsIGFzIHRoZXkgYWxsb3cgbW9yZSB0
aGFuIG9uZSBmYWlsdXJlIHRvIGJlIHJlcG9ydGVkIGluIGEgdGVzdC4KK0hvd2V2ZXIsIHlvdSBz
aG91bGQgdXNlIGBBU1NFUlRfKmAgaWYgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIGNvbnRpbnVl
IHdoZW4gdGhlCithc3NlcnRpb24gaW4gcXVlc3Rpb24gZmFpbHMuCisKK1NpbmNlIGEgZmFpbGVk
IGBBU1NFUlRfKmAgcmV0dXJucyBmcm9tIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGltbWVkaWF0ZWx5
LAorcG9zc2libHkgc2tpcHBpbmcgY2xlYW4tdXAgY29kZSB0aGF0IGNvbWVzIGFmdGVyIGl0LCBp
dCBtYXkgY2F1c2UgYSBzcGFjZSBsZWFrLgorRGVwZW5kaW5nIG9uIHRoZSBuYXR1cmUgb2YgdGhl
IGxlYWssIGl0IG1heSBvciBtYXkgbm90IGJlIHdvcnRoIGZpeGluZyAtIHNvIGtlZXAKK3RoaXMg
aW4gbWluZCBpZiB5b3UgZ2V0IGEgaGVhcCBjaGVja2VyIGVycm9yIGluIGFkZGl0aW9uIHRvIGFz
c2VydGlvbiBlcnJvcnMuCisKK1RvIHByb3ZpZGUgYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlLCBz
aW1wbHkgc3RyZWFtIGl0IGludG8gdGhlIG1hY3JvIHVzaW5nIHRoZQorYDw8YCBvcGVyYXRvciwg
b3IgYSBzZXF1ZW5jZSBvZiBzdWNoIG9wZXJhdG9ycy4gQW4gZXhhbXBsZToKKworYGBgYysrCitB
U1NFUlRfRVEoeC5zaXplKCksIHkuc2l6ZSgpKSA8PCAiVmVjdG9ycyB4IGFuZCB5IGFyZSBvZiB1
bmVxdWFsIGxlbmd0aCI7CisKK2ZvciAoaW50IGkgPSAwOyBpIDwgeC5zaXplKCk7ICsraSkgewor
ICBFWFBFQ1RfRVEoeFtpXSwgeVtpXSkgPDwgIlZlY3RvcnMgeCBhbmQgeSBkaWZmZXIgYXQgaW5k
ZXggIiA8PCBpOworfQorYGBgCisKK0FueXRoaW5nIHRoYXQgY2FuIGJlIHN0cmVhbWVkIHRvIGFu
IGBvc3RyZWFtYCBjYW4gYmUgc3RyZWFtZWQgdG8gYW4gYXNzZXJ0aW9uCittYWNyby0taW4gcGFy
dGljdWxhciwgQyBzdHJpbmdzIGFuZCBgc3RyaW5nYCBvYmplY3RzLiBJZiBhIHdpZGUgc3RyaW5n
CisoYHdjaGFyX3QqYCwgYFRDSEFSKmAgaW4gYFVOSUNPREVgIG1vZGUgb24gV2luZG93cywgb3Ig
YHN0ZDo6d3N0cmluZ2ApIGlzCitzdHJlYW1lZCB0byBhbiBhc3NlcnRpb24sIGl0IHdpbGwgYmUg
dHJhbnNsYXRlZCB0byBVVEYtOCB3aGVuIHByaW50ZWQuCisKKyMjIyBCYXNpYyBBc3NlcnRpb25z
CisKK1RoZXNlIGFzc2VydGlvbnMgZG8gYmFzaWMgdHJ1ZS9mYWxzZSBjb25kaXRpb24gdGVzdGlu
Zy4KKworRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAg
ICAgICB8IFZlcmlmaWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2BBU1NFUlRfVFJVRShjb25k
aXRpb24pO2AgIHwgYEVYUEVDVF9UUlVFKGNvbmRpdGlvbik7YCAgfCBgY29uZGl0aW9uYCBpcyB0
cnVlCitgQVNTRVJUX0ZBTFNFKGNvbmRpdGlvbik7YCB8IGBFWFBFQ1RfRkFMU0UoY29uZGl0aW9u
KTtgIHwgYGNvbmRpdGlvbmAgaXMgZmFsc2UKKworUmVtZW1iZXIsIHdoZW4gdGhleSBmYWlsLCBg
QVNTRVJUXypgIHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUgYW5kIHJldHVybnMgZnJvbSB0aGUKK2N1
cnJlbnQgZnVuY3Rpb24sIHdoaWxlIGBFWFBFQ1RfKmAgeWllbGRzIGEgbm9uZmF0YWwgZmFpbHVy
ZSwgYWxsb3dpbmcgdGhlCitmdW5jdGlvbiB0byBjb250aW51ZSBydW5uaW5nLiBJbiBlaXRoZXIg
Y2FzZSwgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgbWVhbnMgaXRzCitjb250YWluaW5nIHRlc3QgZmFp
bHMuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBCaW5h
cnkgQ29tcGFyaXNvbgorCitUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGFzc2VydGlvbnMgdGhhdCBj
b21wYXJlIHR3byB2YWx1ZXMuCisKK0ZhdGFsIGFzc2VydGlvbiAgICAgICAgICB8IE5vbmZhdGFs
IGFzc2VydGlvbiAgICAgICB8IFZlcmlmaWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLQorYEFTU0VSVF9FUSh2YWwx
LCB2YWwyKTtgIHwgYEVYUEVDVF9FUSh2YWwxLCB2YWwyKTtgIHwgYHZhbDEgPT0gdmFsMmAKK2BB
U1NFUlRfTkUodmFsMSwgdmFsMik7YCB8IGBFWFBFQ1RfTkUodmFsMSwgdmFsMik7YCB8IGB2YWwx
ICE9IHZhbDJgCitgQVNTRVJUX0xUKHZhbDEsIHZhbDIpO2AgfCBgRVhQRUNUX0xUKHZhbDEsIHZh
bDIpO2AgfCBgdmFsMSA8IHZhbDJgCitgQVNTRVJUX0xFKHZhbDEsIHZhbDIpO2AgfCBgRVhQRUNU
X0xFKHZhbDEsIHZhbDIpO2AgfCBgdmFsMSA8PSB2YWwyYAorYEFTU0VSVF9HVCh2YWwxLCB2YWwy
KTtgIHwgYEVYUEVDVF9HVCh2YWwxLCB2YWwyKTtgIHwgYHZhbDEgPiB2YWwyYAorYEFTU0VSVF9H
RSh2YWwxLCB2YWwyKTtgIHwgYEVYUEVDVF9HRSh2YWwxLCB2YWwyKTtgIHwgYHZhbDEgPj0gdmFs
MmAKKworVmFsdWUgYXJndW1lbnRzIG11c3QgYmUgY29tcGFyYWJsZSBieSB0aGUgYXNzZXJ0aW9u
J3MgY29tcGFyaXNvbiBvcGVyYXRvciBvcgoreW91J2xsIGdldCBhIGNvbXBpbGVyIGVycm9yLiBX
ZSB1c2VkIHRvIHJlcXVpcmUgdGhlIGFyZ3VtZW50cyB0byBzdXBwb3J0IHRoZQorYDw8YCBvcGVy
YXRvciBmb3Igc3RyZWFtaW5nIHRvIGFuIGBvc3RyZWFtYCwgYnV0IGl0J3Mgbm8gbG9uZ2VyIG5l
Y2Vzc2FyeS4gSWYKK2A8PGAgaXMgc3VwcG9ydGVkLCBpdCB3aWxsIGJlIGNhbGxlZCB0byBwcmlu
dCB0aGUgYXJndW1lbnRzIHdoZW4gdGhlIGFzc2VydGlvbgorZmFpbHM7IG90aGVyd2lzZSBnb29n
bGV0ZXN0IHdpbGwgYXR0ZW1wdCB0byBwcmludCB0aGVtIGluIHRoZSBiZXN0IHdheSBpdCBjYW4u
CitGb3IgbW9yZSBkZXRhaWxzIGFuZCBob3cgdG8gY3VzdG9taXplIHRoZSBwcmludGluZyBvZiB0
aGUgYXJndW1lbnRzLCBzZWUKK2dNb2NrIFtyZWNpcGVdKC4uLy4uL2dvb2dsZW1vY2svZG9jcy9D
b29rQm9vay5tZCN0ZWFjaGluZy1nb29nbGUtbW9jay1ob3ctdG8tcHJpbnQteW91ci12YWx1ZXMp
LikuCisKK1RoZXNlIGFzc2VydGlvbnMgY2FuIHdvcmsgd2l0aCBhIHVzZXItZGVmaW5lZCB0eXBl
LCBidXQgb25seSBpZiB5b3UgZGVmaW5lIHRoZQorY29ycmVzcG9uZGluZyBjb21wYXJpc29uIG9w
ZXJhdG9yIChlLmcuIGA9PWAsIGA8YCwgZXRjKS4gU2luY2UgdGhpcyBpcworZGlzY291cmFnZWQg
YnkgdGhlIEdvb2dsZSBbQysrIFN0eWxlCitHdWlkZV0oaHR0cHM6Ly9nb29nbGUuZ2l0aHViLmlv
L3N0eWxlZ3VpZGUvY3BwZ3VpZGUuaHRtbCNPcGVyYXRvcl9PdmVybG9hZGluZyksCit5b3UgbWF5
IG5lZWQgdG8gdXNlIGBBU1NFUlRfVFJVRSgpYCBvciBgRVhQRUNUX1RSVUUoKWAgdG8gYXNzZXJ0
IHRoZSBlcXVhbGl0eSBvZgordHdvIG9iamVjdHMgb2YgYSB1c2VyLWRlZmluZWQgdHlwZS4KKwor
SG93ZXZlciwgd2hlbiBwb3NzaWJsZSwgYEFTU0VSVF9FUShhY3R1YWwsIGV4cGVjdGVkKWAgaXMg
cHJlZmVycmVkIHRvCitgQVNTRVJUX1RSVUUoYWN0dWFsID09IGV4cGVjdGVkKWAsIHNpbmNlIGl0
IHRlbGxzIHlvdSBgYWN0dWFsYCBhbmQgYGV4cGVjdGVkYCdzCit2YWx1ZXMgb24gZmFpbHVyZS4K
KworQXJndW1lbnRzIGFyZSBhbHdheXMgZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4gVGhlcmVmb3Jl
LCBpdCdzIE9LIGZvciB0aGUKK2FyZ3VtZW50cyB0byBoYXZlIHNpZGUgZWZmZWN0cy4gSG93ZXZl
ciwgYXMgd2l0aCBhbnkgb3JkaW5hcnkgQy9DKysgZnVuY3Rpb24sCit0aGUgYXJndW1lbnRzJyBl
dmFsdWF0aW9uIG9yZGVyIGlzIHVuZGVmaW5lZCAoaS5lLiB0aGUgY29tcGlsZXIgaXMgZnJlZSB0
bworY2hvb3NlIGFueSBvcmRlcikgYW5kIHlvdXIgY29kZSBzaG91bGQgbm90IGRlcGVuZCBvbiBh
bnkgcGFydGljdWxhciBhcmd1bWVudAorZXZhbHVhdGlvbiBvcmRlci4KKworYEFTU0VSVF9FUSgp
YCBkb2VzIHBvaW50ZXIgZXF1YWxpdHkgb24gcG9pbnRlcnMuIElmIHVzZWQgb24gdHdvIEMgc3Ry
aW5ncywgaXQKK3Rlc3RzIGlmIHRoZXkgYXJlIGluIHRoZSBzYW1lIG1lbW9yeSBsb2NhdGlvbiwg
bm90IGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSB2YWx1ZS4KK1RoZXJlZm9yZSwgaWYgeW91IHdhbnQg
dG8gY29tcGFyZSBDIHN0cmluZ3MgKGUuZy4gYGNvbnN0IGNoYXIqYCkgYnkgdmFsdWUsIHVzZQor
YEFTU0VSVF9TVFJFUSgpYCwgd2hpY2ggd2lsbCBiZSBkZXNjcmliZWQgbGF0ZXIgb24uIEluIHBh
cnRpY3VsYXIsIHRvIGFzc2VydAordGhhdCBhIEMgc3RyaW5nIGlzIGBOVUxMYCwgdXNlIGBBU1NF
UlRfU1RSRVEoY19zdHJpbmcsIE5VTEwpYC4gQ29uc2lkZXIgdXNlCitgQVNTRVJUX0VRKGNfc3Ry
aW5nLCBudWxscHRyKWAgaWYgYysrMTEgaXMgc3VwcG9ydGVkLiBUbyBjb21wYXJlIHR3byBgc3Ry
aW5nYAorb2JqZWN0cywgeW91IHNob3VsZCB1c2UgYEFTU0VSVF9FUWAuCisKK1doZW4gZG9pbmcg
cG9pbnRlciBjb21wYXJpc29ucyB1c2UgYCpfRVEocHRyLCBudWxscHRyKWAgYW5kIGAqX05FKHB0
ciwgbnVsbHB0cilgCitpbnN0ZWFkIG9mIGAqX0VRKHB0ciwgTlVMTClgIGFuZCBgKl9ORShwdHIs
IE5VTEwpYC4gVGhpcyBpcyBiZWNhdXNlIGBudWxscHRyYCBpcwordHlwZWQgd2hpbGUgYE5VTExg
IGlzIG5vdC4gU2VlIFtGQVFdKGZhcS5tZCN3aHktZG9lcy1nb29nbGUtdGVzdC1zdXBwb3J0LWV4
cGVjdF9lcW51bGwtcHRyLWFuZC1hc3NlcnRfZXFudWxsLXB0ci1idXQtbm90LWV4cGVjdF9uZW51
bGwtcHRyLWFuZC1hc3NlcnRfbmVudWxsLXB0cikKK2ZvciBtb3JlIGRldGFpbHMuCisKK0lmIHlv
dSdyZSB3b3JraW5nIHdpdGggZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgeW91IG1heSB3YW50IHRv
IHVzZSB0aGUgZmxvYXRpbmcKK3BvaW50IHZhcmlhdGlvbnMgb2Ygc29tZSBvZiB0aGVzZSBtYWNy
b3MgaW4gb3JkZXIgdG8gYXZvaWQgcHJvYmxlbXMgY2F1c2VkIGJ5Cityb3VuZGluZy4gU2VlIFtB
ZHZhbmNlZCBnb29nbGV0ZXN0IFRvcGljc10oYWR2YW5jZWQubWQpIGZvciBkZXRhaWxzLgorCitN
YWNyb3MgaW4gdGhpcyBzZWN0aW9uIHdvcmsgd2l0aCBib3RoIG5hcnJvdyBhbmQgd2lkZSBzdHJp
bmcgb2JqZWN0cyAoYHN0cmluZ2AKK2FuZCBgd3N0cmluZ2ApLgorCisqKkF2YWlsYWJpbGl0eSoq
OiBMaW51eCwgV2luZG93cywgTWFjLgorCisqKkhpc3RvcmljYWwgbm90ZSoqOiBCZWZvcmUgRmVi
cnVhcnkgMjAxNiBgKl9FUWAgaGFkIGEgY29udmVudGlvbiBvZiBjYWxsaW5nIGl0CithcyBgQVNT
RVJUX0VRKGV4cGVjdGVkLCBhY3R1YWwpYCwgc28gbG90cyBvZiBleGlzdGluZyBjb2RlIHVzZXMg
dGhpcyBvcmRlci4gTm93CitgKl9FUWAgdHJlYXRzIGJvdGggcGFyYW1ldGVycyBpbiB0aGUgc2Ft
ZSB3YXkuCisKKyMjIyBTdHJpbmcgQ29tcGFyaXNvbgorCitUaGUgYXNzZXJ0aW9ucyBpbiB0aGlz
IGdyb3VwIGNvbXBhcmUgdHdvICoqQyBzdHJpbmdzKiouIElmIHlvdSB3YW50IHRvIGNvbXBhcmUK
K3R3byBgc3RyaW5nYCBvYmplY3RzLCB1c2UgYEVYUEVDVF9FUWAsIGBFWFBFQ1RfTkVgLCBhbmQg
ZXRjIGluc3RlYWQuCisKK3wgRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICB8IE5vbmZh
dGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgfCBWZXJpZmllcyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAorfCBgQVNTRVJU
X1NUUkVRKHN0cjEsIHN0cjIpO2AgICAgIHwgYEVYUEVDVF9TVFJFUShzdHIxLCBzdHIyKTtgICAg
ICB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUgdGhlIHNhbWUgY29udGVudCAgICAgICAgICAgICAg
ICAgIHwKK3wgYEFTU0VSVF9TVFJORShzdHIxLCBzdHIyKTtgICAgICB8IGBFWFBFQ1RfU1RSTkUo
c3RyMSwgc3RyMik7YCAgICAgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIGRpZmZlcmVudCBjb250
ZW50cyAgICAgICAgICAgICAgICB8Cit8IGBBU1NFUlRfU1RSQ0FTRUVRKHN0cjEsIHN0cjIpO2Ag
fCBgRVhQRUNUX1NUUkNBU0VFUShzdHIxLCBzdHIyKTtgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2
ZSB0aGUgc2FtZSBjb250ZW50LCBpZ25vcmluZyBjYXNlICAgfAorfCBgQVNTRVJUX1NUUkNBU0VO
RShzdHIxLCBzdHIyKTtgIHwgYEVYUEVDVF9TVFJDQVNFTkUoc3RyMSwgc3RyMik7YCB8IHRoZSB0
d28gQyBzdHJpbmdzIGhhdmUgZGlmZmVyZW50IGNvbnRlbnRzLCBpZ25vcmluZyBjYXNlIHwKKwor
Tm90ZSB0aGF0ICJDQVNFIiBpbiBhbiBhc3NlcnRpb24gbmFtZSBtZWFucyB0aGF0IGNhc2UgaXMg
aWdub3JlZC4gQSBgTlVMTGAKK3BvaW50ZXIgYW5kIGFuIGVtcHR5IHN0cmluZyBhcmUgY29uc2lk
ZXJlZCAqZGlmZmVyZW50Ki4KKworYCpTVFJFUSpgIGFuZCBgKlNUUk5FKmAgYWxzbyBhY2NlcHQg
d2lkZSBDIHN0cmluZ3MgKGB3Y2hhcl90KmApLiBJZiBhIGNvbXBhcmlzb24KK29mIHR3byB3aWRl
IHN0cmluZ3MgZmFpbHMsIHRoZWlyIHZhbHVlcyB3aWxsIGJlIHByaW50ZWQgYXMgVVRGLTggbmFy
cm93IHN0cmluZ3MuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisK
KyoqU2VlIGFsc28qKjogRm9yIG1vcmUgc3RyaW5nIGNvbXBhcmlzb24gdHJpY2tzIChzdWJzdHJp
bmcsIHByZWZpeCwgc3VmZml4LCBhbmQKK3JlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGluZywgZm9y
IGV4YW1wbGUpLCBzZWUKK1t0aGlzXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRl
c3QvYmxvYi9tYXN0ZXIvZ29vZ2xldGVzdC9kb2NzL2FkdmFuY2VkLm1kKQoraW4gdGhlIEFkdmFu
Y2VkIGdvb2dsZXRlc3QgR3VpZGUuCisKKyMjIFNpbXBsZSBUZXN0cworCitUbyBjcmVhdGUgYSB0
ZXN0OgorCisxLiAgVXNlIHRoZSBgVEVTVCgpYCBtYWNybyB0byBkZWZpbmUgYW5kIG5hbWUgYSB0
ZXN0IGZ1bmN0aW9uLCBUaGVzZSBhcmUKKyAgICBvcmRpbmFyeSBDKysgZnVuY3Rpb25zIHRoYXQg
ZG9uJ3QgcmV0dXJuIGEgdmFsdWUuCisxLiAgSW4gdGhpcyBmdW5jdGlvbiwgYWxvbmcgd2l0aCBh
bnkgdmFsaWQgQysrIHN0YXRlbWVudHMgeW91IHdhbnQgdG8gaW5jbHVkZSwKKyAgICB1c2UgdGhl
IHZhcmlvdXMgZ29vZ2xldGVzdCBhc3NlcnRpb25zIHRvIGNoZWNrIHZhbHVlcy4KKzEuICBUaGUg
dGVzdCdzIHJlc3VsdCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBhc3NlcnRpb25zOyBpZiBhbnkgYXNz
ZXJ0aW9uIGluIHRoZQorICAgIHRlc3QgZmFpbHMgKGVpdGhlciBmYXRhbGx5IG9yIG5vbi1mYXRh
bGx5KSwgb3IgaWYgdGhlIHRlc3QgY3Jhc2hlcywgdGhlCisgICAgZW50aXJlIHRlc3QgZmFpbHMu
IE90aGVyd2lzZSwgaXQgc3VjY2VlZHMuCisKK2BgYGMrKworVEVTVChUZXN0Q2FzZU5hbWUsIFRl
c3ROYW1lKSB7CisgIC4uLiB0ZXN0IGJvZHkgLi4uCit9CitgYGAKKworYFRFU1QoKWAgYXJndW1l
bnRzIGdvIGZyb20gZ2VuZXJhbCB0byBzcGVjaWZpYy4gVGhlICpmaXJzdCogYXJndW1lbnQgaXMg
dGhlIG5hbWUKK29mIHRoZSB0ZXN0IGNhc2UsIGFuZCB0aGUgKnNlY29uZCogYXJndW1lbnQgaXMg
dGhlIHRlc3QncyBuYW1lIHdpdGhpbiB0aGUgdGVzdAorY2FzZS4gQm90aCBuYW1lcyBtdXN0IGJl
IHZhbGlkIEMrKyBpZGVudGlmaWVycywgYW5kIHRoZXkgc2hvdWxkIG5vdCBjb250YWluCit1bmRl
cnNjb3JlIChgX2ApLiBBIHRlc3QncyAqZnVsbCBuYW1lKiBjb25zaXN0cyBvZiBpdHMgY29udGFp
bmluZyB0ZXN0IGNhc2UgYW5kCitpdHMgaW5kaXZpZHVhbCBuYW1lLiBUZXN0cyBmcm9tIGRpZmZl
cmVudCB0ZXN0IGNhc2VzIGNhbiBoYXZlIHRoZSBzYW1lCitpbmRpdmlkdWFsIG5hbWUuCisKK0Zv
ciBleGFtcGxlLCBsZXQncyB0YWtlIGEgc2ltcGxlIGludGVnZXIgZnVuY3Rpb246CisKK2BgYGMr
KworaW50IEZhY3RvcmlhbChpbnQgbik7ICAvLyBSZXR1cm5zIHRoZSBmYWN0b3JpYWwgb2Ygbgor
YGBgCisKK0EgdGVzdCBjYXNlIGZvciB0aGlzIGZ1bmN0aW9uIG1pZ2h0IGxvb2sgbGlrZToKKwor
YGBgYysrCisvLyBUZXN0cyBmYWN0b3JpYWwgb2YgMC4KK1RFU1QoRmFjdG9yaWFsVGVzdCwgSGFu
ZGxlc1plcm9JbnB1dCkgeworICBFWFBFQ1RfRVEoRmFjdG9yaWFsKDApLCAxKTsKK30KKworLy8g
VGVzdHMgZmFjdG9yaWFsIG9mIHBvc2l0aXZlIG51bWJlcnMuCitURVNUKEZhY3RvcmlhbFRlc3Qs
IEhhbmRsZXNQb3NpdGl2ZUlucHV0KSB7CisgIEVYUEVDVF9FUShGYWN0b3JpYWwoMSksIDEpOwor
ICBFWFBFQ1RfRVEoRmFjdG9yaWFsKDIpLCAyKTsKKyAgRVhQRUNUX0VRKEZhY3RvcmlhbCgzKSwg
Nik7CisgIEVYUEVDVF9FUShGYWN0b3JpYWwoOCksIDQwMzIwKTsKK30KK2BgYAorCitnb29nbGV0
ZXN0IGdyb3VwcyB0aGUgdGVzdCByZXN1bHRzIGJ5IHRlc3QgY2FzZXMsIHNvIGxvZ2ljYWxseS1y
ZWxhdGVkIHRlc3RzCitzaG91bGQgYmUgaW4gdGhlIHNhbWUgdGVzdCBjYXNlOyBpbiBvdGhlciB3
b3JkcywgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZWlyCitgVEVTVCgpYCBzaG91bGQgYmUgdGhl
IHNhbWUuIEluIHRoZSBhYm92ZSBleGFtcGxlLCB3ZSBoYXZlIHR3byB0ZXN0cywKK2BIYW5kbGVz
WmVyb0lucHV0YCBhbmQgYEhhbmRsZXNQb3NpdGl2ZUlucHV0YCwgdGhhdCBiZWxvbmcgdG8gdGhl
IHNhbWUgdGVzdCBjYXNlCitgRmFjdG9yaWFsVGVzdGAuCisKK1doZW4gbmFtaW5nIHlvdXIgdGVz
dCBjYXNlcyBhbmQgdGVzdHMsIHlvdSBzaG91bGQgZm9sbG93IHRoZSBzYW1lIGNvbnZlbnRpb24g
YXMKK2ZvciBbbmFtaW5nIGZ1bmN0aW9ucyBhbmQKK2NsYXNzZXNdKGh0dHBzOi8vZ29vZ2xlLmdp
dGh1Yi5pby9zdHlsZWd1aWRlL2NwcGd1aWRlLmh0bWwjRnVuY3Rpb25fTmFtZXMpLgorCisqKkF2
YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBUZXN0IEZpeHR1cmVzOiBV
c2luZyB0aGUgU2FtZSBEYXRhIENvbmZpZ3VyYXRpb24gZm9yIE11bHRpcGxlIFRlc3RzCisKK0lm
IHlvdSBmaW5kIHlvdXJzZWxmIHdyaXRpbmcgdHdvIG9yIG1vcmUgdGVzdHMgdGhhdCBvcGVyYXRl
IG9uIHNpbWlsYXIgZGF0YSwgeW91CitjYW4gdXNlIGEgKnRlc3QgZml4dHVyZSouIEl0IGFsbG93
cyB5b3UgdG8gcmV1c2UgdGhlIHNhbWUgY29uZmlndXJhdGlvbiBvZgorb2JqZWN0cyBmb3Igc2V2
ZXJhbCBkaWZmZXJlbnQgdGVzdHMuCisKK1RvIGNyZWF0ZSBhIGZpeHR1cmU6CisKKzEuICBEZXJp
dmUgYSBjbGFzcyBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RgIC4gU3RhcnQgaXRzIGJvZHkgd2l0aCBg
cHJvdGVjdGVkOmAgYXMKKyAgICB3ZSdsbCB3YW50IHRvIGFjY2VzcyBmaXh0dXJlIG1lbWJlcnMg
ZnJvbSBzdWItY2xhc3Nlcy4KKzEuICBJbnNpZGUgdGhlIGNsYXNzLCBkZWNsYXJlIGFueSBvYmpl
Y3RzIHlvdSBwbGFuIHRvIHVzZS4KKzEuICBJZiBuZWNlc3NhcnksIHdyaXRlIGEgZGVmYXVsdCBj
b25zdHJ1Y3RvciBvciBgU2V0VXAoKWAgZnVuY3Rpb24gdG8gcHJlcGFyZQorICAgIHRoZSBvYmpl
Y3RzIGZvciBlYWNoIHRlc3QuIEEgY29tbW9uIG1pc3Rha2UgaXMgdG8gc3BlbGwgYFNldFVwKClg
IGFzCisgICAgKipgU2V0dXAoKWAqKiB3aXRoIGEgc21hbGwgYHVgIC0gVXNlIGBvdmVycmlkZWAg
aW4gQysrMTEgdG8gbWFrZSBzdXJlIHlvdQorICAgIHNwZWxsZWQgaXQgY29ycmVjdGx5CisxLiAg
SWYgbmVjZXNzYXJ5LCB3cml0ZSBhIGRlc3RydWN0b3Igb3IgYFRlYXJEb3duKClgIGZ1bmN0aW9u
IHRvIHJlbGVhc2UgYW55CisgICAgcmVzb3VyY2VzIHlvdSBhbGxvY2F0ZWQgaW4gYFNldFVwKClg
IC4gVG8gbGVhcm4gd2hlbiB5b3Ugc2hvdWxkIHVzZSB0aGUKKyAgICBjb25zdHJ1Y3Rvci9kZXN0
cnVjdG9yIGFuZCB3aGVuIHlvdSBzaG91bGQgdXNlIGBTZXRVcCgpL1RlYXJEb3duKClgLCByZWFk
CisgICAgdGhpcyBbRkFRXShmYXEubWQjc2hvdWxkLWktdXNlLXRoZS1jb25zdHJ1Y3RvcmRlc3Ry
dWN0b3Itb2YtdGhlLXRlc3QtZml4dHVyZS1vci1zZXR1cHRlYXJkb3duKSBlbnRyeS4KKzEuICBJ
ZiBuZWVkZWQsIGRlZmluZSBzdWJyb3V0aW5lcyBmb3IgeW91ciB0ZXN0cyB0byBzaGFyZS4KKwor
V2hlbiB1c2luZyBhIGZpeHR1cmUsIHVzZSBgVEVTVF9GKClgIGluc3RlYWQgb2YgYFRFU1QoKWAg
YXMgaXQgYWxsb3dzIHlvdSB0bworYWNjZXNzIG9iamVjdHMgYW5kIHN1YnJvdXRpbmVzIGluIHRo
ZSB0ZXN0IGZpeHR1cmU6CisKK2BgYGMrKworVEVTVF9GKFRlc3RDYXNlTmFtZSwgVGVzdE5hbWUp
IHsKKyAgLi4uIHRlc3QgYm9keSAuLi4KK30KK2BgYAorCitMaWtlIGBURVNUKClgLCB0aGUgZmly
c3QgYXJndW1lbnQgaXMgdGhlIHRlc3QgY2FzZSBuYW1lLCBidXQgZm9yIGBURVNUX0YoKWAgdGhp
cworbXVzdCBiZSB0aGUgbmFtZSBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLiBZb3UndmUgcHJv
YmFibHkgZ3Vlc3NlZDogYF9GYCBpcyBmb3IKK2ZpeHR1cmUuCisKK1VuZm9ydHVuYXRlbHksIHRo
ZSBDKysgbWFjcm8gc3lzdGVtIGRvZXMgbm90IGFsbG93IHVzIHRvIGNyZWF0ZSBhIHNpbmdsZSBt
YWNybwordGhhdCBjYW4gaGFuZGxlIGJvdGggdHlwZXMgb2YgdGVzdHMuIFVzaW5nIHRoZSB3cm9u
ZyBtYWNybyBjYXVzZXMgYSBjb21waWxlcgorZXJyb3IuCisKK0Fsc28sIHlvdSBtdXN0IGZpcnN0
IGRlZmluZSBhIHRlc3QgZml4dHVyZSBjbGFzcyBiZWZvcmUgdXNpbmcgaXQgaW4gYQorYFRFU1Rf
RigpYCwgb3IgeW91J2xsIGdldCB0aGUgY29tcGlsZXIgZXJyb3IgImB2aXJ0dWFsIG91dHNpZGUg
Y2xhc3MKK2RlY2xhcmF0aW9uYCIuCisKK0ZvciBlYWNoIHRlc3QgZGVmaW5lZCB3aXRoIGBURVNU
X0YoKWAgLCBnb29nbGV0ZXN0IHdpbGwgY3JlYXRlIGEgKmZyZXNoKiB0ZXN0CitmaXh0dXJlIGF0
IHJ1bnRpbWUsIGltbWVkaWF0ZWx5IGluaXRpYWxpemUgaXQgdmlhIGBTZXRVcCgpYCAsIHJ1biB0
aGUgdGVzdCwKK2NsZWFuIHVwIGJ5IGNhbGxpbmcgYFRlYXJEb3duKClgICwgYW5kIHRoZW4gZGVs
ZXRlIHRoZSB0ZXN0IGZpeHR1cmUuIE5vdGUgdGhhdAorZGlmZmVyZW50IHRlc3RzIGluIHRoZSBz
YW1lIHRlc3QgY2FzZSBoYXZlIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgb2JqZWN0cywgYW5kCitn
b29nbGV0ZXN0IGFsd2F5cyBkZWxldGVzIGEgdGVzdCBmaXh0dXJlIGJlZm9yZSBpdCBjcmVhdGVz
IHRoZSBuZXh0IG9uZS4KK2dvb2dsZXRlc3QgZG9lcyAqKm5vdCoqIHJldXNlIHRoZSBzYW1lIHRl
c3QgZml4dHVyZSBmb3IgbXVsdGlwbGUgdGVzdHMuIEFueQorY2hhbmdlcyBvbmUgdGVzdCBtYWtl
cyB0byB0aGUgZml4dHVyZSBkbyBub3QgYWZmZWN0IG90aGVyIHRlc3RzLgorCitBcyBhbiBleGFt
cGxlLCBsZXQncyB3cml0ZSB0ZXN0cyBmb3IgYSBGSUZPIHF1ZXVlIGNsYXNzIG5hbWVkIGBRdWV1
ZWAsIHdoaWNoIGhhcwordGhlIGZvbGxvd2luZyBpbnRlcmZhY2U6CisKK2BgYGMrKwordGVtcGxh
dGUgPHR5cGVuYW1lIEU+ICAvLyBFIGlzIHRoZSBlbGVtZW50IHR5cGUuCitjbGFzcyBRdWV1ZSB7
CisgcHVibGljOgorICBRdWV1ZSgpOworICB2b2lkIEVucXVldWUoY29uc3QgRSYgZWxlbWVudCk7
CisgIEUqIERlcXVldWUoKTsgIC8vIFJldHVybnMgTlVMTCBpZiB0aGUgcXVldWUgaXMgZW1wdHku
CisgIHNpemVfdCBzaXplKCkgY29uc3Q7CisgIC4uLgorfTsKK2BgYAorCitGaXJzdCwgZGVmaW5l
IGEgZml4dHVyZSBjbGFzcy4gQnkgY29udmVudGlvbiwgeW91IHNob3VsZCBnaXZlIGl0IHRoZSBu
YW1lCitgRm9vVGVzdGAgd2hlcmUgYEZvb2AgaXMgdGhlIGNsYXNzIGJlaW5nIHRlc3RlZC4KKwor
YGBgYysrCitjbGFzcyBRdWV1ZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90
ZWN0ZWQ6CisgIHZvaWQgU2V0VXAoKSBvdmVycmlkZSB7CisgICAgIHExXy5FbnF1ZXVlKDEpOwor
ICAgICBxMl8uRW5xdWV1ZSgyKTsKKyAgICAgcTJfLkVucXVldWUoMyk7CisgIH0KKworICAvLyB2
b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUge30KKworICBRdWV1ZTxpbnQ+IHEwXzsKKyAgUXVldWU8
aW50PiBxMV87CisgIFF1ZXVlPGludD4gcTJfOworfTsKK2BgYAorCitJbiB0aGlzIGNhc2UsIGBU
ZWFyRG93bigpYCBpcyBub3QgbmVlZGVkIHNpbmNlIHdlIGRvbid0IGhhdmUgdG8gY2xlYW4gdXAg
YWZ0ZXIKK2VhY2ggdGVzdCwgb3RoZXIgdGhhbiB3aGF0J3MgYWxyZWFkeSBkb25lIGJ5IHRoZSBk
ZXN0cnVjdG9yLgorCitOb3cgd2UnbGwgd3JpdGUgdGVzdHMgdXNpbmcgYFRFU1RfRigpYCBhbmQg
dGhpcyBmaXh0dXJlLgorCitgYGBjKysKK1RFU1RfRihRdWV1ZVRlc3QsIElzRW1wdHlJbml0aWFs
bHkpIHsKKyAgRVhQRUNUX0VRKHEwXy5zaXplKCksIDApOworfQorCitURVNUX0YoUXVldWVUZXN0
LCBEZXF1ZXVlV29ya3MpIHsKKyAgaW50KiBuID0gcTBfLkRlcXVldWUoKTsKKyAgRVhQRUNUX0VR
KG4sIG51bGxwdHIpOworCisgIG4gPSBxMV8uRGVxdWV1ZSgpOworICBBU1NFUlRfTkUobiwgbnVs
bHB0cik7CisgIEVYUEVDVF9FUSgqbiwgMSk7CisgIEVYUEVDVF9FUShxMV8uc2l6ZSgpLCAwKTsK
KyAgZGVsZXRlIG47CisKKyAgbiA9IHEyXy5EZXF1ZXVlKCk7CisgIEFTU0VSVF9ORShuLCBudWxs
cHRyKTsKKyAgRVhQRUNUX0VRKCpuLCAyKTsKKyAgRVhQRUNUX0VRKHEyXy5zaXplKCksIDEpOwor
ICBkZWxldGUgbjsKK30KK2BgYAorCitUaGUgYWJvdmUgdXNlcyBib3RoIGBBU1NFUlRfKmAgYW5k
IGBFWFBFQ1RfKmAgYXNzZXJ0aW9ucy4gVGhlIHJ1bGUgb2YgdGh1bWIgaXMKK3RvIHVzZSBgRVhQ
RUNUXypgIHdoZW4geW91IHdhbnQgdGhlIHRlc3QgdG8gY29udGludWUgdG8gcmV2ZWFsIG1vcmUg
ZXJyb3JzIGFmdGVyCit0aGUgYXNzZXJ0aW9uIGZhaWx1cmUsIGFuZCB1c2UgYEFTU0VSVF8qYCB3
aGVuIGNvbnRpbnVpbmcgYWZ0ZXIgZmFpbHVyZSBkb2Vzbid0CittYWtlIHNlbnNlLiBGb3IgZXhh
bXBsZSwgdGhlIHNlY29uZCBhc3NlcnRpb24gaW4gdGhlIGBEZXF1ZXVlYCB0ZXN0IGlzCis9QVNT
RVJUX05FKG51bGxwdHIsIG4pPSwgYXMgd2UgbmVlZCB0byBkZXJlZmVyZW5jZSB0aGUgcG9pbnRl
ciBgbmAgbGF0ZXIsIHdoaWNoCit3b3VsZCBsZWFkIHRvIGEgc2VnZmF1bHQgd2hlbiBgbmAgaXMg
YE5VTExgLgorCitXaGVuIHRoZXNlIHRlc3RzIHJ1biwgdGhlIGZvbGxvd2luZyBoYXBwZW5zOgor
CisxLiAgZ29vZ2xldGVzdCBjb25zdHJ1Y3RzIGEgYFF1ZXVlVGVzdGAgb2JqZWN0IChsZXQncyBj
YWxsIGl0IGB0MWAgKS4KKzEuICBgdDEuU2V0VXAoKWAgaW5pdGlhbGl6ZXMgYHQxYCAuCisxLiAg
VGhlIGZpcnN0IHRlc3QgKCBgSXNFbXB0eUluaXRpYWxseWAgKSBydW5zIG9uIGB0MWAgLgorMS4g
IGB0MS5UZWFyRG93bigpYCBjbGVhbnMgdXAgYWZ0ZXIgdGhlIHRlc3QgZmluaXNoZXMuCisxLiAg
YHQxYCBpcyBkZXN0cnVjdGVkLgorMS4gIFRoZSBhYm92ZSBzdGVwcyBhcmUgcmVwZWF0ZWQgb24g
YW5vdGhlciBgUXVldWVUZXN0YCBvYmplY3QsIHRoaXMgdGltZQorICAgIHJ1bm5pbmcgdGhlIGBE
ZXF1ZXVlV29ya3NgIHRlc3QuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBN
YWMuCisKKworIyMgSW52b2tpbmcgdGhlIFRlc3RzCisKK2BURVNUKClgIGFuZCBgVEVTVF9GKClg
IGltcGxpY2l0bHkgcmVnaXN0ZXIgdGhlaXIgdGVzdHMgd2l0aCBnb29nbGV0ZXN0LiBTbywKK3Vu
bGlrZSB3aXRoIG1hbnkgb3RoZXIgQysrIHRlc3RpbmcgZnJhbWV3b3JrcywgeW91IGRvbid0IGhh
dmUgdG8gcmUtbGlzdCBhbGwKK3lvdXIgZGVmaW5lZCB0ZXN0cyBpbiBvcmRlciB0byBydW4gdGhl
bS4KKworQWZ0ZXIgZGVmaW5pbmcgeW91ciB0ZXN0cywgeW91IGNhbiBydW4gdGhlbSB3aXRoIGBS
VU5fQUxMX1RFU1RTKClgICwgd2hpY2gKK3JldHVybnMgYDBgIGlmIGFsbCB0aGUgdGVzdHMgYXJl
IHN1Y2Nlc3NmdWwsIG9yIGAxYCBvdGhlcndpc2UuIE5vdGUgdGhhdAorYFJVTl9BTExfVEVTVFMo
KWAgcnVucyAqYWxsIHRlc3RzKiBpbiB5b3VyIGxpbmsgdW5pdCAtLSB0aGV5IGNhbiBiZSBmcm9t
CitkaWZmZXJlbnQgdGVzdCBjYXNlcywgb3IgZXZlbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgor
CitXaGVuIGludm9rZWQsIHRoZSBgUlVOX0FMTF9URVNUUygpYCBtYWNybzoKKworMS4gU2F2ZXMg
dGhlIHN0YXRlIG9mIGFsbCBnb29nbGV0ZXN0IGZsYWdzCisKKyogICBDcmVhdGVzIGEgdGVzdCBm
aXh0dXJlIG9iamVjdCBmb3IgdGhlIGZpcnN0IHRlc3QuCisKKyogICBJbml0aWFsaXplcyBpdCB2
aWEgYFNldFVwKClgLgorCisqICAgUnVucyB0aGUgdGVzdCBvbiB0aGUgZml4dHVyZSBvYmplY3Qu
CisKKyogICBDbGVhbnMgdXAgdGhlIGZpeHR1cmUgdmlhIGBUZWFyRG93bigpYC4KKworKiAgIERl
bGV0ZXMgdGhlIGZpeHR1cmUuCisKKyogUmVzdG9yZXMgdGhlIHN0YXRlIG9mIGFsbCBnb29nbGV0
ZXN0IGZsYWdzCisKKyogICBSZXBlYXRzIHRoZSBhYm92ZSBzdGVwcyBmb3IgdGhlIG5leHQgdGVz
dCwgdW50aWwgYWxsIHRlc3RzIGhhdmUgcnVuLgorCitJZiBhIGZhdGFsIGZhaWx1cmUgaGFwcGVu
cyB0aGUgc3Vic2VxdWVudCBzdGVwcyB3aWxsIGJlIHNraXBwZWQuCisKKz4gSU1QT1JUQU5UOiBZ
b3UgbXVzdCAqKm5vdCoqIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlIG9mIGBSVU5fQUxMX1RFU1RT
KClgLCBvcgorPiB5b3Ugd2lsbCBnZXQgYSBjb21waWxlciBlcnJvci4gVGhlIHJhdGlvbmFsZSBm
b3IgdGhpcyBkZXNpZ24gaXMgdGhhdCB0aGUKKz4gYXV0b21hdGVkIHRlc3Rpbmcgc2VydmljZSBk
ZXRlcm1pbmVzIHdoZXRoZXIgYSB0ZXN0IGhhcyBwYXNzZWQgYmFzZWQgb24gaXRzCis+IGV4aXQg
Y29kZSwgbm90IG9uIGl0cyBzdGRvdXQvc3RkZXJyIG91dHB1dDsgdGh1cyB5b3VyIGBtYWluKClg
IGZ1bmN0aW9uIG11c3QKKz4gcmV0dXJuIHRoZSB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYC4K
Kz4KKz4gQWxzbywgeW91IHNob3VsZCBjYWxsIGBSVU5fQUxMX1RFU1RTKClgIG9ubHkgKipvbmNl
KiouIENhbGxpbmcgaXQgbW9yZSB0aGFuCis+IG9uY2UgY29uZmxpY3RzIHdpdGggc29tZSBhZHZh
bmNlZCBnb29nbGV0ZXN0IGZlYXR1cmVzIChlLmcuIHRocmVhZC1zYWZlIFtkZWF0aAorPiB0ZXN0
c10oYWR2YW5jZWQjZGVhdGgtdGVzdHMpKSBhbmQgdGh1cyBpcyBub3Qgc3VwcG9ydGVkLgorCisq
KkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBXcml0aW5nIHRoZSBt
YWluKCkgRnVuY3Rpb24KKworSW4gYGdvb2dsZTNgLCB0aGUgc2ltcGxlc3QgYXBwcm9hY2ggaXMg
dG8gdXNlIHRoZSBkZWZhdWx0IG1haW4oKSBmdW5jdGlvbgorcHJvdmlkZWQgYnkgbGlua2luZyBp
biBgIi8vdGVzdGluZy9iYXNlL3B1YmxpYzpndGVzdF9tYWluImAuIElmIHRoYXQgZG9lc24ndAor
Y292ZXIgd2hhdCB5b3UgbmVlZCwgeW91IHNob3VsZCB3cml0ZSB5b3VyIG93biBtYWluKCkgZnVu
Y3Rpb24sIHdoaWNoIHNob3VsZAorcmV0dXJuIHRoZSB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygp
YC4gTGluayB0byBgIi8vdGVzdGluZy9iYXNlL3B1YmxpYzpndW5pdCJgLgorWW91IGNhbiBzdGFy
dCBmcm9tIHRoaXMgYm9pbGVycGxhdGU6CisKK2BgYGMrKworI2luY2x1ZGUgInRoaXMvcGFja2Fn
ZS9mb28uaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCisvLyBU
aGUgZml4dHVyZSBmb3IgdGVzdGluZyBjbGFzcyBGb28uCitjbGFzcyBGb29UZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAvLyBZb3UgY2FuIHJlbW92ZSBhbnkg
b3IgYWxsIG9mIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGlmIGl0cyBib2R5CisgIC8vIGlzIGVt
cHR5LgorCisgIEZvb1Rlc3QoKSB7CisgICAgIC8vIFlvdSBjYW4gZG8gc2V0LXVwIHdvcmsgZm9y
IGVhY2ggdGVzdCBoZXJlLgorICB9CisKKyAgfkZvb1Rlc3QoKSBvdmVycmlkZSB7CisgICAgIC8v
IFlvdSBjYW4gZG8gY2xlYW4tdXAgd29yayB0aGF0IGRvZXNuJ3QgdGhyb3cgZXhjZXB0aW9ucyBo
ZXJlLgorICB9CisKKyAgLy8gSWYgdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIGFyZSBu
b3QgZW5vdWdoIGZvciBzZXR0aW5nIHVwCisgIC8vIGFuZCBjbGVhbmluZyB1cCBlYWNoIHRlc3Qs
IHlvdSBjYW4gZGVmaW5lIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKKworICB2b2lkIFNldFVwKCkg
b3ZlcnJpZGUgeworICAgICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkg
YWZ0ZXIgdGhlIGNvbnN0cnVjdG9yIChyaWdodAorICAgICAvLyBiZWZvcmUgZWFjaCB0ZXN0KS4K
KyAgfQorCisgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZSB7CisgICAgIC8vIENvZGUgaGVyZSB3
aWxsIGJlIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlciBlYWNoIHRlc3QgKHJpZ2h0CisgICAgIC8v
IGJlZm9yZSB0aGUgZGVzdHJ1Y3RvcikuCisgIH0KKworICAvLyBPYmplY3RzIGRlY2xhcmVkIGhl
cmUgY2FuIGJlIHVzZWQgYnkgYWxsIHRlc3RzIGluIHRoZSB0ZXN0IGNhc2UgZm9yIEZvby4KK307
CisKKy8vIFRlc3RzIHRoYXQgdGhlIEZvbzo6QmFyKCkgbWV0aG9kIGRvZXMgQWJjLgorVEVTVF9G
KEZvb1Rlc3QsIE1ldGhvZEJhckRvZXNBYmMpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgaW5wdXRf
ZmlsZXBhdGggPSAidGhpcy9wYWNrYWdlL3Rlc3RkYXRhL215aW5wdXRmaWxlLmRhdCI7CisgIGNv
bnN0IHN0ZDo6c3RyaW5nIG91dHB1dF9maWxlcGF0aCA9ICJ0aGlzL3BhY2thZ2UvdGVzdGRhdGEv
bXlvdXRwdXRmaWxlLmRhdCI7CisgIEZvbyBmOworICBFWFBFQ1RfRVEoZi5CYXIoaW5wdXRfZmls
ZXBhdGgsIG91dHB1dF9maWxlcGF0aCksIDApOworfQorCisvLyBUZXN0cyB0aGF0IEZvbyBkb2Vz
IFh5ei4KK1RFU1RfRihGb29UZXN0LCBEb2VzWHl6KSB7CisgIC8vIEV4ZXJjaXNlcyB0aGUgWHl6
IGZlYXR1cmUgb2YgRm9vLgorfQorCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIgKiphcmd2KSB7CisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFy
Z3YpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQorYGBgCisKKworVGhlIGA6OnRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0KClgIGZ1bmN0aW9uIHBhcnNlcyB0aGUgY29tbWFuZCBsaW5lIGZv
cgorZ29vZ2xldGVzdCBmbGFncywgYW5kIHJlbW92ZXMgYWxsIHJlY29nbml6ZWQgZmxhZ3MuIFRo
aXMgYWxsb3dzIHRoZSB1c2VyIHRvCitjb250cm9sIGEgdGVzdCBwcm9ncmFtJ3MgYmVoYXZpb3Ig
dmlhIHZhcmlvdXMgZmxhZ3MsIHdoaWNoIHdlJ2xsIGNvdmVyIGluCitbQWR2YW5jZWRHdWlkZV0o
YWR2YW5jZWQubWQpLiBZb3UgKiptdXN0KiogY2FsbCB0aGlzIGZ1bmN0aW9uIGJlZm9yZSBjYWxs
aW5nCitgUlVOX0FMTF9URVNUUygpYCwgb3IgdGhlIGZsYWdzIHdvbid0IGJlIHByb3Blcmx5IGlu
aXRpYWxpemVkLgorCitPbiBXaW5kb3dzLCBgSW5pdEdvb2dsZVRlc3QoKWAgYWxzbyB3b3JrcyB3
aXRoIHdpZGUgc3RyaW5ncywgc28gaXQgY2FuIGJlIHVzZWQKK2luIHByb2dyYW1zIGNvbXBpbGVk
IGluIGBVTklDT0RFYCBtb2RlIGFzIHdlbGwuCisKK0J1dCBtYXliZSB5b3UgdGhpbmsgdGhhdCB3
cml0aW5nIGFsbCB0aG9zZSBtYWluKCkgZnVuY3Rpb25zIGlzIHRvbyBtdWNoIHdvcms/IFdlCith
Z3JlZSB3aXRoIHlvdSBjb21wbGV0ZWx5IGFuZCB0aGF0J3Mgd2h5IEdvb2dsZSBUZXN0IHByb3Zp
ZGVzIGEgYmFzaWMKK2ltcGxlbWVudGF0aW9uIG9mIG1haW4oKS4gSWYgaXQgZml0cyB5b3VyIG5l
ZWRzLCB0aGVuIGp1c3QgbGluayB5b3VyIHRlc3Qgd2l0aAorZ3Rlc3RcX21haW4gbGlicmFyeSBh
bmQgeW91IGFyZSBnb29kIHRvIGdvLgorCitOT1RFOiBgUGFyc2VHVW5pdEZsYWdzKClgIGlzIGRl
cHJlY2F0ZWQgaW4gZmF2b3Igb2YgYEluaXRHb29nbGVUZXN0KClgLgorCisKKyMjIEtub3duIExp
bWl0YXRpb25zCisKKyogICBHb29nbGUgVGVzdCBpcyBkZXNpZ25lZCB0byBiZSB0aHJlYWQtc2Fm
ZS4gVGhlIGltcGxlbWVudGF0aW9uIGlzIHRocmVhZC1zYWZlCisgICAgb24gc3lzdGVtcyB3aGVy
ZSB0aGUgYHB0aHJlYWRzYCBsaWJyYXJ5IGlzIGF2YWlsYWJsZS4gSXQgaXMgY3VycmVudGx5Cisg
ICAgX3Vuc2FmZV8gdG8gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgZnJvbSB0d28gdGhyZWFk
cyBjb25jdXJyZW50bHkgb24KKyAgICBvdGhlciBzeXN0ZW1zIChlLmcuIFdpbmRvd3MpLiBJbiBt
b3N0IHRlc3RzIHRoaXMgaXMgbm90IGFuIGlzc3VlIGFzIHVzdWFsbHkKKyAgICB0aGUgYXNzZXJ0
aW9ucyBhcmUgZG9uZSBpbiB0aGUgbWFpbiB0aHJlYWQuIElmIHlvdSB3YW50IHRvIGhlbHAsIHlv
dSBjYW4KKyAgICB2b2x1bnRlZXIgdG8gaW1wbGVtZW50IHRoZSBuZWNlc3Nhcnkgc3luY2hyb25p
emF0aW9uIHByaW1pdGl2ZXMgaW4KKyAgICBgZ3Rlc3QtcG9ydC5oYCBmb3IgeW91ciBwbGF0Zm9y
bS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3Mvc2FtcGxlcy5tZCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3Mvc2FtcGxlcy5tZApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOGRj
Y2EzODE0OTFlMTk4MjMzMmM2ZDQ0NzJjYTgyZDBkMDIxNzAyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9zYW1wbGVzLm1kCkBAIC0wLDAgKzEsMjIgQEAK
KyMgR29vZ2xldGVzdCBTYW1wbGVzIHsjc2FtcGxlc30KKworSWYgeW91J3JlIGxpa2UgdXMsIHlv
dSdkIGxpa2UgdG8gbG9vayBhdCBbZ29vZ2xldGVzdAorc2FtcGxlcy5dKGh0dHBzOi8vZ2l0aHVi
LmNvbS9nb29nbGUvZ29vZ2xldGVzdC90cmVlL21hc3Rlci9nb29nbGV0ZXN0L3NhbXBsZXMpCitU
aGUgc2FtcGxlIGRpcmVjdG9yeSBoYXMgYSBudW1iZXIgb2Ygd2VsbC1jb21tZW50ZWQgc2FtcGxl
cyBzaG93aW5nIGhvdyB0byB1c2UgYQordmFyaWV0eSBvZiBnb29nbGV0ZXN0IGZlYXR1cmVzLgor
CisqICAgU2FtcGxlICMxIHNob3dzIHRoZSBiYXNpYyBzdGVwcyBvZiB1c2luZyBnb29nbGV0ZXN0
IHRvIHRlc3QgQysrIGZ1bmN0aW9ucy4KKyogICBTYW1wbGUgIzIgc2hvd3MgYSBtb3JlIGNvbXBs
ZXggdW5pdCB0ZXN0IGZvciBhIGNsYXNzIHdpdGggbXVsdGlwbGUgbWVtYmVyCisgICAgZnVuY3Rp
b25zLgorKiAgIFNhbXBsZSAjMyB1c2VzIGEgdGVzdCBmaXh0dXJlLgorKiAgIFNhbXBsZSAjNCB0
ZWFjaGVzIHlvdSBob3cgdG8gdXNlIGdvb2dsZXRlc3QgYW5kIGBnb29nbGV0ZXN0LmhgIHRvZ2V0
aGVyIHRvCisgICAgZ2V0IHRoZSBiZXN0IG9mIGJvdGggbGlicmFyaWVzLgorKiAgIFNhbXBsZSAj
NSBwdXRzIHNoYXJlZCB0ZXN0aW5nIGxvZ2ljIGluIGEgYmFzZSB0ZXN0IGZpeHR1cmUsIGFuZCBy
ZXVzZXMgaXQgaW4KKyAgICBkZXJpdmVkIGZpeHR1cmVzLgorKiAgIFNhbXBsZSAjNiBkZW1vbnN0
cmF0ZXMgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorKiAgIFNhbXBsZSAjNyB0ZWFjaGVzIHRo
ZSBiYXNpY3Mgb2YgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKyogICBTYW1wbGUgIzggc2hv
d3MgdXNpbmcgYENvbWJpbmUoKWAgaW4gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKyogICBT
YW1wbGUgIzkgc2hvd3MgdXNlIG9mIHRoZSBsaXN0ZW5lciBBUEkgdG8gbW9kaWZ5IEdvb2dsZSBU
ZXN0J3MgY29uc29sZQorICAgIG91dHB1dCBhbmQgdGhlIHVzZSBvZiBpdHMgcmVmbGVjdGlvbiBB
UEkgdG8gaW5zcGVjdCB0ZXN0IHJlc3VsdHMuCisqICAgU2FtcGxlICMxMCBzaG93cyB1c2Ugb2Yg
dGhlIGxpc3RlbmVyIEFQSSB0byBpbXBsZW1lbnQgYSBwcmltaXRpdmUgbWVtb3J5CisgICAgbGVh
ayBjaGVja2VyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdC1kZWF0aC10ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaAppbmRleCAxMjFkYzFmYjVhYzVkNTlhMzNkNTMwMzQw
NThlZWU5MWMyMTJhMjA4Li4yMGM1NGQ4Njk1MTlmNjkzMGU3ZWJmZDJjMDgwNWJhY2E0MjIxNmJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0
LWRlYXRoLXRlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2d0ZXN0LWRlYXRoLXRlc3QuaApAQCAtMjYsMTkgKzI2LDE5IEBACiAvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKIC8vCi0vLyBBdXRob3I6IHdhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFt
ZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2lu
ZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogLy8KIC8vIFRoaXMgaGVhZGVyIGZpbGUgZGVmaW5l
cyB0aGUgcHVibGljIEFQSSBmb3IgZGVhdGggdGVzdHMuICBJdCBpcwogLy8gI2luY2x1ZGVkIGJ5
IGd0ZXN0Lmggc28gYSB1c2VyIGRvZXNuJ3QgbmVlZCB0byBpbmNsdWRlIHRoaXMKIC8vIGRpcmVj
dGx5LgorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQogCiAjaWZuZGVmIEdURVNU
X0lOQ0xVREVfR1RFU1RfR1RFU1RfREVBVEhfVEVTVF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURF
X0dURVNUX0dURVNUX0RFQVRIX1RFU1RfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0
ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVz
dC1kZWF0aC10ZXN0LWludGVybmFsLmgiCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIApAQCAtNTEs
NiArNTEsMTcgQEAgR1RFU1RfREVDTEFSRV9zdHJpbmdfKGRlYXRoX3Rlc3Rfc3R5bGUpOwogCiAj
aWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKIAorbmFtZXNwYWNlIGludGVybmFsIHsKKworLy8gUmV0
dXJucyBhIEJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBjYWxsZXIgaXMgY3Vy
cmVudGx5CisvLyBleGVjdXRpbmcgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGRlYXRoIHRlc3QgY2hp
bGQgcHJvY2Vzcy4gIFRvb2xzIHN1Y2ggYXMKKy8vIFZhbGdyaW5kIGhlYXAgY2hlY2tlcnMgbWF5
IG5lZWQgdGhpcyB0byBtb2RpZnkgdGhlaXIgYmVoYXZpb3IgaW4gZGVhdGgKKy8vIHRlc3RzLiAg
SU1QT1JUQU5UOiBUaGlzIGlzIGFuIGludGVybmFsIHV0aWxpdHkuICBVc2luZyBpdCBtYXkgYnJl
YWsgdGhlCisvLyBpbXBsZW1lbnRhdGlvbiBvZiBkZWF0aCB0ZXN0cy4gIFVzZXIgY29kZSBNVVNU
IE5PVCB1c2UgaXQuCitHVEVTVF9BUElfIGJvb2wgSW5EZWF0aFRlc3RDaGlsZCgpOworCit9ICAv
LyBuYW1lc3BhY2UgaW50ZXJuYWwKKwogLy8gVGhlIGZvbGxvd2luZyBtYWNyb3MgYXJlIHVzZWZ1
bCBmb3Igd3JpdGluZyBkZWF0aCB0ZXN0cy4KIAogLy8gSGVyZSdzIHdoYXQgaGFwcGVucyB3aGVu
IGFuIEFTU0VSVF9ERUFUSCogb3IgRVhQRUNUX0RFQVRIKiBpcwpAQCAtNzUsNyArODYsNyBAQCBH
VEVTVF9ERUNMQVJFX3N0cmluZ18oZGVhdGhfdGVzdF9zdHlsZSk7CiAvLyAgIGZvciAoaW50IGkg
PSAwOyBpIDwgNTsgaSsrKSB7CiAvLyAgICAgRVhQRUNUX0RFQVRIKHNlcnZlci5Qcm9jZXNzUmVx
dWVzdChpKSwKIC8vICAgICAgICAgICAgICAgICAgIkludmFsaWQgcmVxdWVzdCAuKiBpbiBQcm9j
ZXNzUmVxdWVzdCgpIikKLS8vICAgICAgICAgPDwgIkZhaWxlZCB0byBkaWUgb24gcmVxdWVzdCAi
IDw8IGkpOworLy8gICAgICAgICAgICAgICAgICA8PCAiRmFpbGVkIHRvIGRpZSBvbiByZXF1ZXN0
ICIgPDwgaTsKIC8vICAgfQogLy8KIC8vICAgQVNTRVJUX0VYSVQoc2VydmVyLkV4aXROb3coKSwg
Ojp0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgwKSwgIkV4aXRpbmciKTsKQEAgLTg4LDEwICs5OSwx
MSBAQCBHVEVTVF9ERUNMQVJFX3N0cmluZ18oZGVhdGhfdGVzdF9zdHlsZSk7CiAvLwogLy8gT24g
dGhlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdXNlZCBpbiBkZWF0aCB0ZXN0czoKIC8vCisvLyAgIEdP
T0dMRVRFU1RfQ00wMDA1IERPIE5PVCBERUxFVEUKIC8vICAgT24gUE9TSVgtY29tcGxpYW50IHN5
c3RlbXMgKCpuaXgpLCB3ZSB1c2UgdGhlIDxyZWdleC5oPiBsaWJyYXJ5LAogLy8gICB3aGljaCB1
c2VzIHRoZSBQT1NJWCBleHRlbmRlZCByZWdleCBzeW50YXguCiAvLwotLy8gICBPbiBvdGhlciBw
bGF0Zm9ybXMgKGUuZy4gV2luZG93cyksIHdlIG9ubHkgc3VwcG9ydCBhIHNpbXBsZSByZWdleAor
Ly8gICBPbiBvdGhlciBwbGF0Zm9ybXMgKGUuZy4gV2luZG93cyBvciBNYWMpLCB3ZSBvbmx5IHN1
cHBvcnQgYSBzaW1wbGUgcmVnZXgKIC8vICAgc3ludGF4IGltcGxlbWVudGVkIGFzIHBhcnQgb2Yg
R29vZ2xlIFRlc3QuICBUaGlzIGxpbWl0ZWQKIC8vICAgaW1wbGVtZW50YXRpb24gc2hvdWxkIGJl
IGVub3VnaCBtb3N0IG9mIHRoZSB0aW1lIHdoZW4gd3JpdGluZwogLy8gICBkZWF0aCB0ZXN0czsg
dGhvdWdoIGl0IGxhY2tzIG1hbnkgZmVhdHVyZXMgeW91IGNhbiBmaW5kIGluIFBDUkUKQEAgLTE0
OSwyOSArMTYxLDI5IEBAIEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhkZWF0aF90ZXN0X3N0eWxlKTsK
IC8vICAgaXMgcmFyZWx5IGEgcHJvYmxlbSBhcyBwZW9wbGUgdXN1YWxseSBkb24ndCBwdXQgdGhl
IHRlc3QgYmluYXJ5CiAvLyAgIGRpcmVjdG9yeSBpbiBQQVRILgogLy8KLS8vIFRPRE8od2FuQGdv
b2dsZS5jb20pOiBtYWtlIHRocmVhZC1zYWZlIGRlYXRoIHRlc3RzIHNlYXJjaCB0aGUgUEFUSC4K
Ky8vIEZJWE1FOiBtYWtlIHRocmVhZC1zYWZlIGRlYXRoIHRlc3RzIHNlYXJjaCB0aGUgUEFUSC4K
IAogLy8gQXNzZXJ0cyB0aGF0IGEgZ2l2ZW4gc3RhdGVtZW50IGNhdXNlcyB0aGUgcHJvZ3JhbSB0
byBleGl0LCB3aXRoIGFuCiAvLyBpbnRlZ2VyIGV4aXQgc3RhdHVzIHRoYXQgc2F0aXNmaWVzIHBy
ZWRpY2F0ZSwgYW5kIGVtaXR0aW5nIGVycm9yIG91dHB1dAogLy8gdGhhdCBtYXRjaGVzIHJlZ2V4
LgotI2RlZmluZSBBU1NFUlRfRVhJVChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpIFwKLSAg
R1RFU1RfREVBVEhfVEVTVF8oc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4LCBHVEVTVF9GQVRB
TF9GQUlMVVJFXykKKyMgZGVmaW5lIEFTU0VSVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRlLCBy
ZWdleCkgXAorICAgIEdURVNUX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdl
eCwgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCiAKIC8vIExpa2UgQVNTRVJUX0VYSVQsIGJ1dCBjb250
aW51ZXMgb24gdG8gc3VjY2Vzc2l2ZSB0ZXN0cyBpbiB0aGUKIC8vIHRlc3QgY2FzZSwgaWYgYW55
OgotI2RlZmluZSBFWFBFQ1RfRVhJVChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpIFwKLSAg
R1RFU1RfREVBVEhfVEVTVF8oc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4LCBHVEVTVF9OT05G
QVRBTF9GQUlMVVJFXykKKyMgZGVmaW5lIEVYUEVDVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRl
LCByZWdleCkgXAorICAgIEdURVNUX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCBy
ZWdleCwgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8pCiAKIC8vIEFzc2VydHMgdGhhdCBhIGdpdmVu
IHN0YXRlbWVudCBjYXVzZXMgdGhlIHByb2dyYW0gdG8gZXhpdCwgZWl0aGVyIGJ5CiAvLyBleHBs
aWNpdGx5IGV4aXRpbmcgd2l0aCBhIG5vbnplcm8gZXhpdCBjb2RlIG9yIGJlaW5nIGtpbGxlZCBi
eSBhCiAvLyBzaWduYWwsIGFuZCBlbWl0dGluZyBlcnJvciBvdXRwdXQgdGhhdCBtYXRjaGVzIHJl
Z2V4LgotI2RlZmluZSBBU1NFUlRfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAotICBBU1NFUlRf
RVhJVChzdGF0ZW1lbnQsIDo6dGVzdGluZzo6aW50ZXJuYWw6OkV4aXRlZFVuc3VjY2Vzc2Z1bGx5
LCByZWdleCkKKyMgZGVmaW5lIEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgICAg
QVNTRVJUX0VYSVQoc3RhdGVtZW50LCA6OnRlc3Rpbmc6OmludGVybmFsOjpFeGl0ZWRVbnN1Y2Nl
c3NmdWxseSwgcmVnZXgpCiAKIC8vIExpa2UgQVNTRVJUX0RFQVRILCBidXQgY29udGludWVzIG9u
IHRvIHN1Y2Nlc3NpdmUgdGVzdHMgaW4gdGhlCiAvLyB0ZXN0IGNhc2UsIGlmIGFueToKLSNkZWZp
bmUgRVhQRUNUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKLSAgRVhQRUNUX0VYSVQoc3RhdGVt
ZW50LCA6OnRlc3Rpbmc6OmludGVybmFsOjpFeGl0ZWRVbnN1Y2Nlc3NmdWxseSwgcmVnZXgpCisj
IGRlZmluZSBFWFBFQ1RfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAorICAgIEVYUEVDVF9FWElU
KHN0YXRlbWVudCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RXhpdGVkVW5zdWNjZXNzZnVsbHksIHJl
Z2V4KQogCiAvLyBUd28gcHJlZGljYXRlIGNsYXNzZXMgdGhhdCBjYW4gYmUgdXNlZCBpbiB7QVNT
RVJULEVYUEVDVH1fRVhJVCo6CiAKQEAgLTE4Nyw5ICsxOTksMTAgQEAgY2xhc3MgR1RFU1RfQVBJ
XyBFeGl0ZWRXaXRoQ29kZSB7CiAgIGNvbnN0IGludCBleGl0X2NvZGVfOwogfTsKIAotI2lmICFH
VEVTVF9PU19XSU5ET1dTCisjIGlmICFHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19GVUNI
U0lBCiAvLyBUZXN0cyB0aGF0IGFuIGV4aXQgY29kZSBkZXNjcmliZXMgYW4gZXhpdCBkdWUgdG8g
dGVybWluYXRpb24gYnkgYQogLy8gZ2l2ZW4gc2lnbmFsLgorLy8gR09PR0xFVEVTVF9DTTAwMDYg
RE8gTk9UIERFTEVURQogY2xhc3MgR1RFU1RfQVBJXyBLaWxsZWRCeVNpZ25hbCB7CiAgcHVibGlj
OgogICBleHBsaWNpdCBLaWxsZWRCeVNpZ25hbChpbnQgc2lnbnVtKTsKQEAgLTE5Nyw3ICsyMTAs
NyBAQCBjbGFzcyBHVEVTVF9BUElfIEtpbGxlZEJ5U2lnbmFsIHsKICBwcml2YXRlOgogICBjb25z
dCBpbnQgc2lnbnVtXzsKIH07Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlm
ICAvLyAhR1RFU1RfT1NfV0lORE9XUwogCiAvLyBFWFBFQ1RfREVCVUdfREVBVEggYXNzZXJ0cyB0
aGF0IHRoZSBnaXZlbiBzdGF0ZW1lbnRzIGRpZSBpbiBkZWJ1ZyBtb2RlLgogLy8gVGhlIGRlYXRo
IHRlc3RpbmcgZnJhbWV3b3JrIGNhdXNlcyB0aGlzIHRvIGhhdmUgaW50ZXJlc3Rpbmcgc2VtYW50
aWNzLApAQCAtMjQyLDQwICsyNTUsODggQEAgY2xhc3MgR1RFU1RfQVBJXyBLaWxsZWRCeVNpZ25h
bCB7CiAvLyAgIEVYUEVDVF9FUSgxMiwgRGllSW5EZWJ1Z09yMTIoJnNpZGVlZmZlY3QpKTsKIC8v
IH0sICJkZWF0aCIpOwogLy8KLSNpZmRlZiBOREVCVUcKKyMgaWZkZWYgTkRFQlVHCiAKLSNkZWZp
bmUgRVhQRUNUX0RFQlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKLSAgZG8geyBzdGF0ZW1l
bnQ7IH0gd2hpbGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCisjICBkZWZp
bmUgRVhQRUNUX0RFQlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKKyAgR1RFU1RfRVhFQ1VU
RV9TVEFURU1FTlRfKHN0YXRlbWVudCwgcmVnZXgpCiAKLSNkZWZpbmUgQVNTRVJUX0RFQlVHX0RF
QVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKLSAgZG8geyBzdGF0ZW1lbnQ7IH0gd2hpbGUgKDo6dGVz
dGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCisjICBkZWZpbmUgQVNTRVJUX0RFQlVHX0RF
QVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKKyAgR1RFU1RfRVhFQ1VURV9TVEFURU1FTlRfKHN0YXRl
bWVudCwgcmVnZXgpCiAKLSNlbHNlCisjIGVsc2UKIAotI2RlZmluZSBFWFBFQ1RfREVCVUdfREVB
VEgoc3RhdGVtZW50LCByZWdleCkgXAorIyAgZGVmaW5lIEVYUEVDVF9ERUJVR19ERUFUSChzdGF0
ZW1lbnQsIHJlZ2V4KSBcCiAgIEVYUEVDVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KQogCi0jZGVm
aW5lIEFTU0VSVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisjICBkZWZpbmUgQVNT
RVJUX0RFQlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKICAgQVNTRVJUX0RFQVRIKHN0YXRl
bWVudCwgcmVnZXgpCiAKLSNlbmRpZiAgLy8gTkRFQlVHIGZvciBFWFBFQ1RfREVCVUdfREVBVEgK
KyMgZW5kaWYgIC8vIE5ERUJVRyBmb3IgRVhQRUNUX0RFQlVHX0RFQVRICiAjZW5kaWYgIC8vIEdU
RVNUX0hBU19ERUFUSF9URVNUCiAKKy8vIFRoaXMgbWFjcm8gaXMgdXNlZCBmb3IgaW1wbGVtZW50
aW5nIG1hY3JvcyBzdWNoIGFzCisvLyBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEIGFuZCBBU1NF
UlRfREVBVEhfSUZfU1VQUE9SVEVEIG9uIHN5c3RlbXMgd2hlcmUKKy8vIGRlYXRoIHRlc3RzIGFy
ZSBub3Qgc3VwcG9ydGVkLiBUaG9zZSBtYWNyb3MgbXVzdCBjb21waWxlIG9uIHN1Y2ggc3lzdGVt
cworLy8gaWZmIEVYUEVDVF9ERUFUSCBhbmQgQVNTRVJUX0RFQVRIIGNvbXBpbGUgd2l0aCB0aGUg
c2FtZSBwYXJhbWV0ZXJzIG9uCisvLyBzeXN0ZW1zIHRoYXQgc3VwcG9ydCBkZWF0aCB0ZXN0cy4g
VGhpcyBhbGxvd3Mgb25lIHRvIHdyaXRlIHN1Y2ggYSBtYWNybworLy8gb24gYSBzeXN0ZW0gdGhh
dCBkb2VzIG5vdCBzdXBwb3J0IGRlYXRoIHRlc3RzIGFuZCBiZSBzdXJlIHRoYXQgaXQgd2lsbAor
Ly8gY29tcGlsZSBvbiBhIGRlYXRoLXRlc3Qgc3VwcG9ydGluZyBzeXN0ZW0uIEl0IGlzIGV4cG9z
ZWQgcHVibGljbHkgc28gdGhhdAorLy8gc3lzdGVtcyB0aGF0IGhhdmUgZGVhdGgtdGVzdHMgd2l0
aCBzdHJpY3RlciByZXF1aXJlbWVudHMgdGhhbgorLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QgY2Fu
IHdyaXRlIHRoZWlyIG93biBlcXVpdmFsZW50IG9mCisvLyBFWFBFQ1RfREVBVEhfSUZfU1VQUE9S
VEVEIGFuZCBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVELgorLy8KKy8vIFBhcmFtZXRlcnM6Cisv
LyAgIHN0YXRlbWVudCAtICBBIHN0YXRlbWVudCB0aGF0IGEgbWFjcm8gc3VjaCBhcyBFWFBFQ1Rf
REVBVEggd291bGQgdGVzdAorLy8gICAgICAgICAgICAgICAgZm9yIHByb2dyYW0gdGVybWluYXRp
b24uIFRoaXMgbWFjcm8gaGFzIHRvIG1ha2Ugc3VyZSB0aGlzCisvLyAgICAgICAgICAgICAgICBz
dGF0ZW1lbnQgaXMgY29tcGlsZWQgYnV0IG5vdCBleGVjdXRlZCwgdG8gZW5zdXJlIHRoYXQKKy8v
ICAgICAgICAgICAgICAgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQgY29tcGlsZXMgd2l0aCBh
IGNlcnRhaW4KKy8vICAgICAgICAgICAgICAgIHBhcmFtZXRlciBpZmYgRVhQRUNUX0RFQVRIIGNv
bXBpbGVzIHdpdGggaXQuCisvLyAgIHJlZ2V4ICAgICAtICBBIHJlZ2V4IHRoYXQgYSBtYWNybyBz
dWNoIGFzIEVYUEVDVF9ERUFUSCB3b3VsZCB1c2UgdG8gdGVzdAorLy8gICAgICAgICAgICAgICAg
dGhlIG91dHB1dCBvZiBzdGF0ZW1lbnQuICBUaGlzIHBhcmFtZXRlciBoYXMgdG8gYmUKKy8vICAg
ICAgICAgICAgICAgIGNvbXBpbGVkIGJ1dCBub3QgZXZhbHVhdGVkIGJ5IHRoaXMgbWFjcm8sIHRv
IGVuc3VyZSB0aGF0CisvLyAgICAgICAgICAgICAgICB0aGlzIG1hY3JvIG9ubHkgYWNjZXB0cyBl
eHByZXNzaW9ucyB0aGF0IGEgbWFjcm8gc3VjaCBhcworLy8gICAgICAgICAgICAgICAgRVhQRUNU
X0RFQVRIIHdvdWxkIGFjY2VwdC4KKy8vICAgdGVybWluYXRvciAtIE11c3QgYmUgYW4gZW1wdHkg
c3RhdGVtZW50IGZvciBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVECisvLyAgICAgICAgICAgICAg
ICBhbmQgYSByZXR1cm4gc3RhdGVtZW50IGZvciBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVELgor
Ly8gICAgICAgICAgICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgQVNTRVJUX0RFQVRIX0lGX1NVUFBP
UlRFRCB3aWxsIG5vdAorLy8gICAgICAgICAgICAgICAgY29tcGlsZSBpbnNpZGUgZnVuY3Rpb25z
IHdoZXJlIEFTU0VSVF9ERUFUSCBkb2Vzbid0CisvLyAgICAgICAgICAgICAgICBjb21waWxlLgor
Ly8KKy8vICBUaGUgYnJhbmNoIHRoYXQgaGFzIGFuIGFsd2F5cyBmYWxzZSBjb25kaXRpb24gaXMg
dXNlZCB0byBlbnN1cmUgdGhhdAorLy8gIHN0YXRlbWVudCBhbmQgcmVnZXggYXJlIGNvbXBpbGVk
IChhbmQgdGh1cyBzeW50YWN0aWNhbGx5IGNvcnJlY3QpIGJ1dAorLy8gIG5ldmVyIGV4ZWN1dGVk
LiBUaGUgdW5yZWFjaGFibGUgY29kZSBtYWNybyBwcm90ZWN0cyB0aGUgdGVybWluYXRvcgorLy8g
IHN0YXRlbWVudCBmcm9tIGdlbmVyYXRpbmcgYW4gJ3VucmVhY2hhYmxlIGNvZGUnIHdhcm5pbmcg
aW4gY2FzZQorLy8gIHN0YXRlbWVudCB1bmNvbmRpdGlvbmFsbHkgcmV0dXJucyBvciB0aHJvd3Mu
IFRoZSBNZXNzYWdlIGNvbnN0cnVjdG9yIGF0CisvLyAgdGhlIGVuZCBhbGxvd3MgdGhlIHN5bnRh
eCBvZiBzdHJlYW1pbmcgYWRkaXRpb25hbCBtZXNzYWdlcyBpbnRvIHRoZQorLy8gIG1hY3JvLCBm
b3IgY29tcGlsYXRpb25hbCBjb21wYXRpYmlsaXR5IHdpdGggRVhQRUNUX0RFQVRIL0FTU0VSVF9E
RUFUSC4KKyMgZGVmaW5lIEdURVNUX1VOU1VQUE9SVEVEX0RFQVRIX1RFU1Qoc3RhdGVtZW50LCBy
ZWdleCwgdGVybWluYXRvcikgXAorICAgIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwK
KyAgICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKKyAgICAgIEdU
RVNUX0xPR18oV0FSTklORykgXAorICAgICAgICAgIDw8ICJEZWF0aCB0ZXN0cyBhcmUgbm90IHN1
cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLlxuIiBcCisgICAgICAgICAgPDwgIlN0YXRlbWVudCAn
IiAjc3RhdGVtZW50ICInIGNhbm5vdCBiZSB2ZXJpZmllZC4iOyBcCisgICAgfSBlbHNlIGlmICg6
OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgpKSB7IFwKKyAgICAgIDo6dGVzdGluZzo6
aW50ZXJuYWw6OlJFOjpQYXJ0aWFsTWF0Y2goIi4qIiwgKHJlZ2V4KSk7IFwKKyAgICAgIEdURVNU
X1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KTsgXAor
ICAgICAgdGVybWluYXRvcjsgXAorICAgIH0gZWxzZSBcCisgICAgICA6OnRlc3Rpbmc6Ok1lc3Nh
Z2UoKQorCiAvLyBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIGFu
ZAogLy8gQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBleHBhbmQg
dG8gcmVhbCBkZWF0aCB0ZXN0cyBpZgogLy8gZGVhdGggdGVzdHMgYXJlIHN1cHBvcnRlZDsgb3Ro
ZXJ3aXNlIHRoZXkganVzdCBpc3N1ZSBhIHdhcm5pbmcuICBUaGlzIGlzCiAvLyB1c2VmdWwgd2hl
biB5b3UgYXJlIGNvbWJpbmluZyBkZWF0aCB0ZXN0IGFzc2VydGlvbnMgd2l0aCBub3JtYWwgdGVz
dAogLy8gYXNzZXJ0aW9ucyBpbiBvbmUgdGVzdC4KICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAot
I2RlZmluZSBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKKyMg
ZGVmaW5lIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAogICAg
IEVYUEVDVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KQotI2RlZmluZSBBU1NFUlRfREVBVEhfSUZf
U1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKKyMgZGVmaW5lIEFTU0VSVF9ERUFUSF9JRl9T
VVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAogICAgIEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQs
IHJlZ2V4KQogI2Vsc2UKLSNkZWZpbmUgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1l
bnQsIHJlZ2V4KSBcCi0gICAgR1RFU1RfVU5TVVBQT1JURURfREVBVEhfVEVTVF8oc3RhdGVtZW50
LCByZWdleCwgKQotI2RlZmluZSBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwg
cmVnZXgpIFwKLSAgICBHVEVTVF9VTlNVUFBPUlRFRF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHJl
Z2V4LCByZXR1cm4pCisjIGRlZmluZSBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVu
dCwgcmVnZXgpIFwKKyAgICBHVEVTVF9VTlNVUFBPUlRFRF9ERUFUSF9URVNUKHN0YXRlbWVudCwg
cmVnZXgsICkKKyMgZGVmaW5lIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCBy
ZWdleCkgXAorICAgIEdURVNUX1VOU1VQUE9SVEVEX0RFQVRIX1RFU1Qoc3RhdGVtZW50LCByZWdl
eCwgcmV0dXJuKQogI2VuZGlmCiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oCmlu
ZGV4IGYxMzViNjk0MjdmZTllYmUyMzdjNGNkYTdhOWMyZjBkNzhkZDc2OGUuLjVjYTA0MTYxNGNi
MzU1OTIyZjM1NWI4OTNmOWM4NGEzYjdmNTJjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oCkBAIC0yNiwxMCArMjYs
OSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAv
LwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRoZSBH
b29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIFRoZSBHb29nbGUg
QysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAvLyBU
aGlzIGhlYWRlciBmaWxlIGRlZmluZXMgdGhlIE1lc3NhZ2UgY2xhc3MuCiAvLwpAQCAtNDMsMTMg
KzQyLDIxIEBACiAvLyB0byBDSEFOR0UgV0lUSE9VVCBOT1RJQ0UuICBUaGVyZWZvcmUgRE8gTk9U
IERFUEVORCBPTiBJVCBpbiBhIHVzZXIKIC8vIHByb2dyYW0hCiAKKy8vIEdPT0dMRVRFU1RfQ00w
MDAxIERPIE5PVCBERUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX01F
U1NBR0VfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9NRVNTQUdFX0hfCiAK
ICNpbmNsdWRlIDxsaW1pdHM+CiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJp
bmcuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oPgorI2luY2x1
ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKworR1RFU1RfRElTQUJMRV9NU0NfV0FS
TklOR1NfUFVTSF8oNDI1MSBcCisvKiBjbGFzcyBBIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFj
ZSB0byBiZSB1c2VkIGJ5IGNsaWVudHMgb2YgY2xhc3MgQiAqLykKKworLy8gRW5zdXJlcyB0aGF0
IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBvcGVyYXRvcjw8IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNl
LgorLy8gU2VlIE1lc3NhZ2UmIG9wZXJhdG9yPDwoLi4uKSBiZWxvdyBmb3Igd2h5Lgordm9pZCBv
cGVyYXRvcjw8KGNvbnN0IHRlc3Rpbmc6OmludGVybmFsOjpTZWNyZXQmLCBpbnQpOwogCiBuYW1l
c3BhY2UgdGVzdGluZyB7CiAKQEAgLTU4LDcgKzY1LDcgQEAgbmFtZXNwYWNlIHRlc3Rpbmcgewog
Ly8gVHlwaWNhbCB1c2FnZToKIC8vCiAvLyAgIDEuIFlvdSBzdHJlYW0gYSBidW5jaCBvZiB2YWx1
ZXMgdG8gYSBNZXNzYWdlIG9iamVjdC4KLS8vICAgICAgSXQgd2lsbCByZW1lbWJlciB0aGUgdGV4
dCBpbiBhIFN0clN0cmVhbS4KKy8vICAgICAgSXQgd2lsbCByZW1lbWJlciB0aGUgdGV4dCBpbiBh
IHN0cmluZ3N0cmVhbS4KIC8vICAgMi4gVGhlbiB5b3Ugc3RyZWFtIHRoZSBNZXNzYWdlIG9iamVj
dCB0byBhbiBvc3RyZWFtLgogLy8gICAgICBUaGlzIGNhdXNlcyB0aGUgdGV4dCBpbiB0aGUgTWVz
c2FnZSB0byBiZSBzdHJlYW1lZAogLy8gICAgICB0byB0aGUgb3N0cmVhbS4KQEAgLTc0LDcgKzgx
LDcgQEAgbmFtZXNwYWNlIHRlc3RpbmcgewogLy8gTWVzc2FnZSBpcyBub3QgaW50ZW5kZWQgdG8g
YmUgaW5oZXJpdGVkIGZyb20uICBJbiBwYXJ0aWN1bGFyLCBpdHMKIC8vIGRlc3RydWN0b3IgaXMg
bm90IHZpcnR1YWwuCiAvLwotLy8gTm90ZSB0aGF0IFN0clN0cmVhbSBiZWhhdmVzIGRpZmZlcmVu
dGx5IGluIGdjYyBhbmQgaW4gTVNWQy4gIFlvdQorLy8gTm90ZSB0aGF0IHN0cmluZ3N0cmVhbSBi
ZWhhdmVzIGRpZmZlcmVudGx5IGluIGdjYyBhbmQgaW4gTVNWQy4gIFlvdQogLy8gY2FuIHN0cmVh
bSBhIE5VTEwgY2hhciBwb2ludGVyIHRvIGl0IGluIHRoZSBmb3JtZXIsIGJ1dCBub3QgaW4gdGhl
CiAvLyBsYXR0ZXIgKGl0IGNhdXNlcyBhbiBhY2Nlc3MgdmlvbGF0aW9uIGlmIHlvdSBkbykuICBU
aGUgTWVzc2FnZQogLy8gY2xhc3MgaGlkZXMgdGhpcyBkaWZmZXJlbmNlIGJ5IHRyZWF0aW5nIGEg
TlVMTCBjaGFyIHBvaW50ZXIgYXMKQEAgLTg3LDI3ICs5NCwxOCBAQCBjbGFzcyBHVEVTVF9BUElf
IE1lc3NhZ2UgewogCiAgcHVibGljOgogICAvLyBDb25zdHJ1Y3RzIGFuIGVtcHR5IE1lc3NhZ2Uu
Ci0gIC8vIFdlIGFsbG9jYXRlIHRoZSBTdHJTdHJlYW0gc2VwYXJhdGVseSBiZWNhdXNlIGl0IG90
aGVyd2lzZSBlYWNoIHVzZSBvZgotICAvLyBBU1NFUlQvRVhQRUNUIGluIGEgcHJvY2VkdXJlIGFk
ZHMgb3ZlciAyMDAgYnl0ZXMgdG8gdGhlIHByb2NlZHVyZSdzCi0gIC8vIHN0YWNrIGZyYW1lIGxl
YWRpbmcgdG8gaHVnZSBzdGFjayBmcmFtZXMgaW4gc29tZSBjYXNlczsgZ2NjIGRvZXMgbm90IHJl
dXNlCi0gIC8vIHRoZSBzdGFjayBzcGFjZS4KLSAgTWVzc2FnZSgpIDogc3NfKG5ldyBpbnRlcm5h
bDo6U3RyU3RyZWFtKSB7Ci0gICAgLy8gQnkgZGVmYXVsdCwgd2Ugd2FudCB0aGVyZSB0byBiZSBl
bm91Z2ggcHJlY2lzaW9uIHdoZW4gcHJpbnRpbmcKLSAgICAvLyBhIGRvdWJsZSB0byBhIE1lc3Nh
Z2UuCi0gICAgKnNzXyA8PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OmRpZ2l0czEwICsgMik7Ci0gIH0KKyAgTWVzc2FnZSgpOwogCiAgIC8vIENvcHkgY29u
c3RydWN0b3IuCi0gIE1lc3NhZ2UoY29uc3QgTWVzc2FnZSYgbXNnKSA6IHNzXyhuZXcgaW50ZXJu
YWw6OlN0clN0cmVhbSkgeyAgLy8gTk9MSU5UCisgIE1lc3NhZ2UoY29uc3QgTWVzc2FnZSYgbXNn
KSA6IHNzXyhuZXcgOjpzdGQ6OnN0cmluZ3N0cmVhbSkgeyAgLy8gTk9MSU5UCiAgICAgKnNzXyA8
PCBtc2cuR2V0U3RyaW5nKCk7CiAgIH0KIAogICAvLyBDb25zdHJ1Y3RzIGEgTWVzc2FnZSBmcm9t
IGEgQy1zdHJpbmcuCi0gIGV4cGxpY2l0IE1lc3NhZ2UoY29uc3QgY2hhciogc3RyKSA6IHNzXyhu
ZXcgaW50ZXJuYWw6OlN0clN0cmVhbSkgeworICBleHBsaWNpdCBNZXNzYWdlKGNvbnN0IGNoYXIq
IHN0cikgOiBzc18obmV3IDo6c3RkOjpzdHJpbmdzdHJlYW0pIHsKICAgICAqc3NfIDw8IHN0cjsK
ICAgfQogCi0gIH5NZXNzYWdlKCkgeyBkZWxldGUgc3NfOyB9CiAjaWYgR1RFU1RfT1NfU1lNQklB
TgogICAvLyBTdHJlYW1zIGEgdmFsdWUgKGVpdGhlciBhIHBvaW50ZXIgb3Igbm90KSB0byB0aGlz
IG9iamVjdC4KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkBAIC0xMTksNyArMTE3LDIyIEBAIGNs
YXNzIEdURVNUX0FQSV8gTWVzc2FnZSB7CiAgIC8vIFN0cmVhbXMgYSBub24tcG9pbnRlciB2YWx1
ZSB0byB0aGlzIG9iamVjdC4KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIGlubGluZSBNZXNz
YWdlJiBvcGVyYXRvciA8PChjb25zdCBUJiB2YWwpIHsKLSAgICA6OkdUZXN0U3RyZWFtVG9IZWxw
ZXIoc3NfLCB2YWwpOworICAgIC8vIFNvbWUgbGlicmFyaWVzIG92ZXJsb2FkIDw8IGZvciBTVEwg
Y29udGFpbmVycy4gIFRoZXNlCisgICAgLy8gb3ZlcmxvYWRzIGFyZSBkZWZpbmVkIGluIHRoZSBn
bG9iYWwgbmFtZXNwYWNlIGluc3RlYWQgb2YgOjpzdGQuCisgICAgLy8KKyAgICAvLyBDKysncyBz
eW1ib2wgbG9va3VwIHJ1bGUgKGkuZS4gS29lbmlnIGxvb2t1cCkgc2F5cyB0aGF0IHRoZXNlCisg
ICAgLy8gb3ZlcmxvYWRzIGFyZSB2aXNpYmxlIGluIGVpdGhlciB0aGUgc3RkIG5hbWVzcGFjZSBv
ciB0aGUgZ2xvYmFsCisgICAgLy8gbmFtZXNwYWNlLCBidXQgbm90IG90aGVyIG5hbWVzcGFjZXMs
IGluY2x1ZGluZyB0aGUgdGVzdGluZworICAgIC8vIG5hbWVzcGFjZSB3aGljaCBHb29nbGUgVGVz
dCdzIE1lc3NhZ2UgY2xhc3MgaXMgaW4uCisgICAgLy8KKyAgICAvLyBUbyBhbGxvdyBTVEwgY29u
dGFpbmVycyAoYW5kIG90aGVyIHR5cGVzIHRoYXQgaGFzIGEgPDwgb3BlcmF0b3IKKyAgICAvLyBk
ZWZpbmVkIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlKSB0byBiZSB1c2VkIGluIEdvb2dsZSBUZXN0
CisgICAgLy8gYXNzZXJ0aW9ucywgdGVzdGluZzo6TWVzc2FnZSBtdXN0IGFjY2VzcyB0aGUgY3Vz
dG9tIDw8IG9wZXJhdG9yCisgICAgLy8gZnJvbSB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gIFdpdGgg
dGhpcyB1c2luZyBkZWNsYXJhdGlvbiwKKyAgICAvLyBvdmVybG9hZHMgb2YgPDwgZGVmaW5lZCBp
biB0aGUgZ2xvYmFsIG5hbWVzcGFjZSBhbmQgdGhvc2UKKyAgICAvLyB2aXNpYmxlIHZpYSBLb2Vu
aWcgbG9va3VwIGFyZSBib3RoIGV4cG9zZWQgaW4gdGhpcyBmdW5jdGlvbi4KKyAgICB1c2luZyA6
Om9wZXJhdG9yIDw8OworICAgICpzc18gPDwgdmFsOwogICAgIHJldHVybiAqdGhpczsKICAgfQog
CkBAIC0xNDEsNyArMTU0LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBNZXNzYWdlIHsKICAgICBpZiAo
cG9pbnRlciA9PSBOVUxMKSB7CiAgICAgICAqc3NfIDw8ICIobnVsbCkiOwogICAgIH0gZWxzZSB7
Ci0gICAgICA6OkdUZXN0U3RyZWFtVG9IZWxwZXIoc3NfLCBwb2ludGVyKTsKKyAgICAgICpzc18g
PDwgcG9pbnRlcjsKICAgICB9CiAgICAgcmV0dXJuICp0aGlzOwogICB9CkBAIC0xNjUsMTIgKzE3
OCw4IEBAIGNsYXNzIEdURVNUX0FQSV8gTWVzc2FnZSB7CiAKICAgLy8gVGhlc2UgdHdvIG92ZXJs
b2FkcyBhbGxvdyBzdHJlYW1pbmcgYSB3aWRlIEMgc3RyaW5nIHRvIGEgTWVzc2FnZQogICAvLyB1
c2luZyB0aGUgVVRGLTggZW5jb2RpbmcuCi0gIE1lc3NhZ2UmIG9wZXJhdG9yIDw8KGNvbnN0IHdj
aGFyX3QqIHdpZGVfY19zdHIpIHsKLSAgICByZXR1cm4gKnRoaXMgPDwgaW50ZXJuYWw6OlN0cmlu
Zzo6U2hvd1dpZGVDU3RyaW5nKHdpZGVfY19zdHIpOwotICB9Ci0gIE1lc3NhZ2UmIG9wZXJhdG9y
IDw8KHdjaGFyX3QqIHdpZGVfY19zdHIpIHsKLSAgICByZXR1cm4gKnRoaXMgPDwgaW50ZXJuYWw6
OlN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKHdpZGVfY19zdHIpOwotICB9CisgIE1lc3NhZ2UmIG9w
ZXJhdG9yIDw8KGNvbnN0IHdjaGFyX3QqIHdpZGVfY19zdHIpOworICBNZXNzYWdlJiBvcGVyYXRv
ciA8PCh3Y2hhcl90KiB3aWRlX2Nfc3RyKTsKIAogI2lmIEdURVNUX0hBU19TVERfV1NUUklORwog
ICAvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gd2lkZSBzdHJpbmcgdG8gYSBuYXJyb3cgc3RyaW5nIHVz
aW5nIHRoZSBVVEYtOApAQCAtMTg0LDEzICsxOTMsMTEgQEAgY2xhc3MgR1RFU1RfQVBJXyBNZXNz
YWdlIHsKICAgTWVzc2FnZSYgb3BlcmF0b3IgPDwoY29uc3QgOjp3c3RyaW5nJiB3c3RyKTsKICNl
bmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCiAKLSAgLy8gR2V0cyB0aGUgdGV4dCBz
dHJlYW1lZCB0byB0aGlzIG9iamVjdCBzbyBmYXIgYXMgYSBTdHJpbmcuCisgIC8vIEdldHMgdGhl
IHRleHQgc3RyZWFtZWQgdG8gdGhpcyBvYmplY3Qgc28gZmFyIGFzIGFuIHN0ZDo6c3RyaW5nLgog
ICAvLyBFYWNoICdcMCcgY2hhcmFjdGVyIGluIHRoZSBidWZmZXIgaXMgcmVwbGFjZWQgd2l0aCAi
XFwwIi4KICAgLy8KICAgLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElO
IEEgVVNFUiBQUk9HUkFNLgotICBpbnRlcm5hbDo6U3RyaW5nIEdldFN0cmluZygpIGNvbnN0IHsK
LSAgICByZXR1cm4gaW50ZXJuYWw6OlN0clN0cmVhbVRvU3RyaW5nKHNzXyk7Ci0gIH0KKyAgc3Rk
OjpzdHJpbmcgR2V0U3RyaW5nKCkgY29uc3Q7CiAKICBwcml2YXRlOgogI2lmIEdURVNUX09TX1NZ
TUJJQU4KQEAgLTE5OSwyMSArMjA2LDI1IEBAIGNsYXNzIEdURVNUX0FQSV8gTWVzc2FnZSB7CiAg
IC8vIGRlY2lkZSBiZXR3ZWVuIGNsYXNzIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucyBmb3IgVCBh
bmQgVCosIHNvIGEKICAgLy8gdHIxOjp0eXBlX3RyYWl0cy1saWtlIGlzX3BvaW50ZXIgd29ya3Ms
IGFuZCB3ZSBjYW4gb3ZlcmxvYWQgb24gdGhhdC4KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0g
IGlubGluZSB2b2lkIFN0cmVhbUhlbHBlcihpbnRlcm5hbDo6dHJ1ZV90eXBlIC8qZHVtbXkqLywg
VCogcG9pbnRlcikgeworICBpbmxpbmUgdm9pZCBTdHJlYW1IZWxwZXIoaW50ZXJuYWw6OnRydWVf
dHlwZSAvKmlzX3BvaW50ZXIqLywgVCogcG9pbnRlcikgewogICAgIGlmIChwb2ludGVyID09IE5V
TEwpIHsKICAgICAgICpzc18gPDwgIihudWxsKSI7CiAgICAgfSBlbHNlIHsKLSAgICAgIDo6R1Rl
c3RTdHJlYW1Ub0hlbHBlcihzc18sIHBvaW50ZXIpOworICAgICAgKnNzXyA8PCBwb2ludGVyOwog
ICAgIH0KICAgfQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgaW5saW5lIHZvaWQgU3RyZWFt
SGVscGVyKGludGVybmFsOjpmYWxzZV90eXBlIC8qZHVtbXkqLywgY29uc3QgVCYgdmFsdWUpIHsK
LSAgICA6OkdUZXN0U3RyZWFtVG9IZWxwZXIoc3NfLCB2YWx1ZSk7CisgIGlubGluZSB2b2lkIFN0
cmVhbUhlbHBlcihpbnRlcm5hbDo6ZmFsc2VfdHlwZSAvKmlzX3BvaW50ZXIqLywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFQmIHZhbHVlKSB7CisgICAgLy8gU2VlIHRoZSBjb21t
ZW50cyBpbiBNZXNzYWdlJiBvcGVyYXRvciA8PChjb25zdCBUJikgYWJvdmUgZm9yIHdoeQorICAg
IC8vIHdlIG5lZWQgdGhpcyB1c2luZyBzdGF0ZW1lbnQuCisgICAgdXNpbmcgOjpvcGVyYXRvciA8
PDsKKyAgICAqc3NfIDw8IHZhbHVlOwogICB9CiAjZW5kaWYgIC8vIEdURVNUX09TX1NZTUJJQU4K
IAogICAvLyBXZSdsbCBob2xkIHRoZSB0ZXh0IHN0cmVhbWVkIHRvIHRoaXMgb2JqZWN0IGhlcmUu
Ci0gIGludGVybmFsOjpTdHJTdHJlYW0qIGNvbnN0IHNzXzsKKyAgY29uc3QgaW50ZXJuYWw6OnNj
b3BlZF9wdHI8IDo6c3RkOjpzdHJpbmdzdHJlYW0+IHNzXzsKIAogICAvLyBXZSBkZWNsYXJlIChi
dXQgZG9uJ3QgaW1wbGVtZW50KSB0aGlzIHRvIHByZXZlbnQgdGhlIGNvbXBpbGVyCiAgIC8vIGZy
b20gaW1wbGVtZW50aW5nIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLgpAQCAtMjI1LDYgKzIzNiwy
MCBAQCBpbmxpbmUgc3RkOjpvc3RyZWFtJiBvcGVyYXRvciA8PChzdGQ6Om9zdHJlYW0mIG9zLCBj
b25zdCBNZXNzYWdlJiBzYikgewogICByZXR1cm4gb3MgPDwgc2IuR2V0U3RyaW5nKCk7CiB9CiAK
K25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIENvbnZlcnRzIGEgc3RyZWFtYWJsZSB2YWx1ZSB0
byBhbiBzdGQ6OnN0cmluZy4gIEEgTlVMTCBwb2ludGVyIGlzCisvLyBjb252ZXJ0ZWQgdG8gIihu
dWxsKSIuICBXaGVuIHRoZSBpbnB1dCB2YWx1ZSBpcyBhIDo6c3RyaW5nLAorLy8gOjpzdGQ6OnN0
cmluZywgOjp3c3RyaW5nLCBvciA6OnN0ZDo6d3N0cmluZyBvYmplY3QsIGVhY2ggTlVMCisvLyBj
aGFyYWN0ZXIgaW4gaXQgaXMgcmVwbGFjZWQgd2l0aCAiXFwwIi4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorc3RkOjpzdHJpbmcgU3RyZWFtYWJsZVRvU3RyaW5nKGNvbnN0IFQmIHN0cmVhbWFibGUp
IHsKKyAgcmV0dXJuIChNZXNzYWdlKCkgPDwgc3RyZWFtYWJsZSkuR2V0U3RyaW5nKCk7Cit9CisK
K30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAorR1RF
U1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQorCiAjZW5kaWYgIC8vIEdU
RVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfTUVTU0FHRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaAppbmRleCA4
MTAwNjk2NDRkMjNhZDM1NTk3M2NiNTNmY2ViMGE4NTZiMGEwMDZjLi4xZTIyZjY4NTAyNDBmMTNl
YmQ5OWVlOWE5YWY4MzZiYmFiNzNiYzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaApAQCAtMSw0ICsxLDYg
QEAKLS8vIFRoaXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5IGEgc2NyaXB0LiAgRE8gTk9UIEVESVQg
QlkgSEFORCEhIQorLy8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgY29tbWFuZDoKKy8vICAg
ICBwdW1wLnB5IGd0ZXN0LXBhcmFtLXRlc3QuaC5wdW1wCisvLyBETyBOT1QgRURJVCBCWSBIQU5E
ISEhCiAKIC8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgogLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KQEAgLTI5LDEzICszMSwxMyBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogLy8KLS8vIEF1dGhvcnM6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0vLwogLy8g
TWFjcm9zIGFuZCBmdW5jdGlvbnMgZm9yIGltcGxlbWVudGluZyBwYXJhbWV0ZXJpemVkIHRlc3Rz
Ci0vLyBpbiBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIGlu
IEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQog
Ly8KIC8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBETyBOT1QgRURJVCBC
WSBIQU5EIQogLy8KKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKKwogI2lmbmRl
ZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8KICNkZWZpbmUgR1RFU1Rf
SU5DTFVERV9HVEVTVF9HVEVTVF9QQVJBTV9URVNUX0hfCiAKQEAgLTQ4LDEwICs1MCwxMiBAQAog
I2lmIDAKIAogLy8gVG8gd3JpdGUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cywgZmlyc3QgeW91
IHNob3VsZCBkZWZpbmUgYSBmaXh0dXJlCi0vLyBjbGFzcy4gSXQgbXVzdCBiZSBkZXJpdmVkIGZy
b20gdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxUPiwgd2hlcmUgVCBpcwotLy8gdGhlIHR5cGUgb2Yg
eW91ciBwYXJhbWV0ZXIgdmFsdWVzLiBUZXN0V2l0aFBhcmFtPFQ+IGlzIGl0c2VsZiBkZXJpdmVk
Ci0vLyBmcm9tIHRlc3Rpbmc6OlRlc3QuIFQgY2FuIGJlIGFueSBjb3B5YWJsZSB0eXBlLiBJZiBp
dCdzIGEgcmF3IHBvaW50ZXIsCi0vLyB5b3UgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0
aGUgbGlmZXNwYW4gb2YgdGhlIHBvaW50ZWQgdmFsdWVzLgorLy8gY2xhc3MuIEl0IGlzIHVzdWFs
bHkgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08VD4gKHNlZSBiZWxvdyBmb3IK
Ky8vIGFub3RoZXIgaW5oZXJpdGFuY2Ugc2NoZW1lIHRoYXQncyBzb21ldGltZXMgdXNlZnVsIGlu
IG1vcmUgY29tcGxpY2F0ZWQKKy8vIGNsYXNzIGhpZXJhcmNoaWVzKSwgd2hlcmUgdGhlIHR5cGUg
b2YgeW91ciBwYXJhbWV0ZXIgdmFsdWVzLgorLy8gVGVzdFdpdGhQYXJhbTxUPiBpcyBpdHNlbGYg
ZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3QuIFQgY2FuIGJlIGFueQorLy8gY29weWFibGUgdHlw
ZS4gSWYgaXQncyBhIHJhdyBwb2ludGVyLCB5b3UgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2lu
ZyB0aGUKKy8vIGxpZmVzcGFuIG9mIHRoZSBwb2ludGVkIHZhbHVlcy4KIAogY2xhc3MgRm9vVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08Y29uc3QgY2hhcio+IHsKICAgLy8g
WW91IGNhbiBpbXBsZW1lbnQgYWxsIHRoZSB1c3VhbCBjbGFzcyBmaXh0dXJlIG1lbWJlcnMgaGVy
ZS4KQEAgLTc1LDcgKzc5LDcgQEAgVEVTVF9QKEZvb1Rlc3QsIEhhc0JsYWhCbGFoKSB7CiAvLyBG
aW5hbGx5LCB5b3UgY2FuIHVzZSBJTlNUQU5USUFURV9URVNUX0NBU0VfUCB0byBpbnN0YW50aWF0
ZSB0aGUgdGVzdAogLy8gY2FzZSB3aXRoIGFueSBzZXQgb2YgcGFyYW1ldGVycyB5b3Ugd2FudC4g
R29vZ2xlIFRlc3QgZGVmaW5lcyBhIG51bWJlcgogLy8gb2YgZnVuY3Rpb25zIGZvciBnZW5lcmF0
aW5nIHRlc3QgcGFyYW1ldGVycy4gVGhleSByZXR1cm4gd2hhdCB3ZSBjYWxsCi0vLyAoc3VycHJp
c2UhKSBwYXJhbWV0ZXIgZ2VuZXJhdG9ycy4gSGVyZSBpcyBhICBzdW1tYXJ5IG9mIHRoZW0sIHdo
aWNoCisvLyAoc3VycHJpc2UhKSBwYXJhbWV0ZXIgZ2VuZXJhdG9ycy4gSGVyZSBpcyBhIHN1bW1h
cnkgb2YgdGhlbSwgd2hpY2gKIC8vIGFyZSBhbGwgaW4gdGhlIHRlc3RpbmcgbmFtZXNwYWNlOgog
Ly8KIC8vCkBAIC0xNDYsMjMgKzE1MCw0NCBAQCBJTlNUQU5USUFURV9URVNUX0NBU0VfUChBbm90
aGVySW5zdGFudGlhdGlvbk5hbWUsIEZvb1Rlc3QsIFZhbHVlc0luKHBldHMpKTsKIC8vIEluIHRo
ZSBmdXR1cmUsIHdlIHBsYW4gdG8gcHVibGlzaCB0aGUgQVBJIGZvciBkZWZpbmluZyBuZXcgcGFy
YW1ldGVyCiAvLyBnZW5lcmF0b3JzLiBCdXQgZm9yIG5vdyB0aGlzIGludGVyZmFjZSByZW1haW5z
IHBhcnQgb2YgdGhlIGludGVybmFsCiAvLyBpbXBsZW1lbnRhdGlvbiBhbmQgaXMgc3ViamVjdCB0
byBjaGFuZ2UuCisvLworLy8KKy8vIEEgcGFyYW1ldGVyaXplZCB0ZXN0IGZpeHR1cmUgbXVzdCBi
ZSBkZXJpdmVkIGZyb20gdGVzdGluZzo6VGVzdCBhbmQgZnJvbQorLy8gdGVzdGluZzo6V2l0aFBh
cmFtSW50ZXJmYWNlPFQ+LCB3aGVyZSBUIGlzIHRoZSB0eXBlIG9mIHRoZSBwYXJhbWV0ZXIKKy8v
IHZhbHVlcy4gSW5oZXJpdGluZyBmcm9tIFRlc3RXaXRoUGFyYW08VD4gc2F0aXNmaWVzIHRoYXQg
cmVxdWlyZW1lbnQgYmVjYXVzZQorLy8gVGVzdFdpdGhQYXJhbTxUPiBpbmhlcml0cyBmcm9tIGJv
dGggVGVzdCBhbmQgV2l0aFBhcmFtSW50ZXJmYWNlLiBJbiBtb3JlCisvLyBjb21wbGljYXRlZCBo
aWVyYXJjaGllcywgaG93ZXZlciwgaXQgaXMgb2NjYXNpb25hbGx5IHVzZWZ1bCB0byBpbmhlcml0
CisvLyBzZXBhcmF0ZWx5IGZyb20gVGVzdCBhbmQgV2l0aFBhcmFtSW50ZXJmYWNlLiBGb3IgZXhh
bXBsZToKKworY2xhc3MgQmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyAgLy8g
WW91IGNhbiBpbmhlcml0IGFsbCB0aGUgdXN1YWwgbWVtYmVycyBmb3IgYSBub24tcGFyYW1ldGVy
aXplZCB0ZXN0CisgIC8vIGZpeHR1cmUgaGVyZS4KK307CisKK2NsYXNzIERlcml2ZWRUZXN0IDog
cHVibGljIEJhc2VUZXN0LCBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8aW50
PiB7CisgIC8vIFRoZSB1c3VhbCB0ZXN0IGZpeHR1cmUgbWVtYmVycyBnbyBoZXJlIHRvby4KK307
CisKK1RFU1RfRihCYXNlVGVzdCwgSGFzRm9vKSB7CisgIC8vIFRoaXMgaXMgYW4gb3JkaW5hcnkg
bm9uLXBhcmFtZXRlcml6ZWQgdGVzdC4KK30KKworVEVTVF9QKERlcml2ZWRUZXN0LCBEb2VzQmxh
aCkgeworICAvLyBHZXRQYXJhbSB3b3JrcyBqdXN0IHRoZSBzYW1lIGhlcmUgYXMgaWYgeW91IGlu
aGVyaXQgZnJvbSBUZXN0V2l0aFBhcmFtLgorICBFWFBFQ1RfVFJVRShmb28uQmxhaChHZXRQYXJh
bSgpKSk7Cit9CiAKICNlbmRpZiAgLy8gMAogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKIAogI2lm
ICFHVEVTVF9PU19TWU1CSUFOCi0jaW5jbHVkZSA8dXRpbGl0eT4KKyMgaW5jbHVkZSA8dXRpbGl0
eT4KICNlbmRpZgogCi0vLyBzY3JpcHRzL2Z1c2VfZ3Rlc3QucHkgZGVwZW5kcyBvbiBndGVzdCdz
IG93biBoZWFkZXIgYmVpbmcgI2luY2x1ZGVkCi0vLyAqdW5jb25kaXRpb25hbGx5Ki4gIFRoZXJl
Zm9yZSB0aGVzZSAjaW5jbHVkZXMgY2Fubm90IGJlIG1vdmVkCi0vLyBpbnNpZGUgI2lmIEdURVNU
X0hBU19QQVJBTV9URVNULgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFs
Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oPgotI2luY2x1
ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmg+Ci0KLSNpZiBH
VEVTVF9IQVNfUEFSQU1fVEVTVAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVy
bmFsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgiCiAKIG5h
bWVzcGFjZSB0ZXN0aW5nIHsKIApAQCAtMjQzLDcgKzI2OCw3IEBAIGludGVybmFsOjpQYXJhbUdl
bmVyYXRvcjxUPiBSYW5nZShUIHN0YXJ0LCBUIGVuZCkgewogLy8gZWFjaCB3aXRoIEMtc3RyaW5n
IHZhbHVlcyBvZiAiZm9vIiwgImJhciIsIGFuZCAiYmF6IjoKIC8vCiAvLyBjb25zdCBjaGFyKiBz
dHJpbmdzW10gPSB7ImZvbyIsICJiYXIiLCAiYmF6In07Ci0vLyBJTlNUQU5USUFURV9URVNUX0NB
U0VfUChTdHJpbmdTZXF1ZW5jZSwgU3J0aW5nVGVzdCwgVmFsdWVzSW4oc3RyaW5ncykpOworLy8g
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU3RyaW5nU2VxdWVuY2UsIFN0cmluZ1Rlc3QsIFZhbHVl
c0luKHN0cmluZ3MpKTsKIC8vCiAvLyBUaGlzIGluc3RhbnRpYXRlcyB0ZXN0cyBmcm9tIHRlc3Qg
Y2FzZSBTdGxTdHJpbmdUZXN0CiAvLyBlYWNoIHdpdGggU1RMIHN0cmluZ3Mgd2l0aCB2YWx1ZXMg
ImEiIGFuZCAiYiI6CkBAIC0yNzYsMTEgKzMwMSwxMCBAQCBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0
b3I8VD4gUmFuZ2UoVCBzdGFydCwgVCBlbmQpIHsKIC8vCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRm9y
d2FyZEl0ZXJhdG9yPgogaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPAotICAgIHR5cGVuYW1lIDo6
c3RkOjppdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gVmFsdWVz
SW4oCi0gIEZvcndhcmRJdGVyYXRvciBiZWdpbiwKLSAgRm9yd2FyZEl0ZXJhdG9yIGVuZCkgewot
ICB0eXBlZGVmIHR5cGVuYW1lIDo6c3RkOjppdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXJhdG9y
Pjo6dmFsdWVfdHlwZQotICAgICAgUGFyYW1UeXBlOworICB0eXBlbmFtZSA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpJdGVyYXRvclRyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPgorVmFs
dWVzSW4oRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKSB7CisgIHR5
cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2Fy
ZEl0ZXJhdG9yPgorICAgICAgOjp2YWx1ZV90eXBlIFBhcmFtVHlwZTsKICAgcmV0dXJuIGludGVy
bmFsOjpQYXJhbUdlbmVyYXRvcjxQYXJhbVR5cGU+KAogICAgICAgbmV3IGludGVybmFsOjpWYWx1
ZXNJbkl0ZXJhdG9yUmFuZ2VHZW5lcmF0b3I8UGFyYW1UeXBlPihiZWdpbiwgZW5kKSk7CiB9CkBA
IC0xMTkyLDcgKzEyMTYsNyBAQCBpbmxpbmUgaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPGJvb2w+
IEJvb2woKSB7CiAgIHJldHVybiBWYWx1ZXMoZmFsc2UsIHRydWUpOwogfQogCi0jaWYgR1RFU1Rf
SEFTX0NPTUJJTkUKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKIC8vIENvbWJpbmUoKSBhbGxvd3Mg
dGhlIHVzZXIgdG8gY29tYmluZSB0d28gb3IgbW9yZSBzZXF1ZW5jZXMgdG8gcHJvZHVjZQogLy8g
dmFsdWVzIG9mIGEgQ2FydGVzaWFuIHByb2R1Y3Qgb2YgdGhvc2Ugc2VxdWVuY2VzJyBlbGVtZW50
cy4KIC8vCkBAIC0xMjI4LDcgKzEyNTIsNyBAQCBpbmxpbmUgaW50ZXJuYWw6OlBhcmFtR2VuZXJh
dG9yPGJvb2w+IEJvb2woKSB7CiAvLyBCb29sZWFuIGZsYWdzOgogLy8KIC8vIGNsYXNzIEZsYWdE
ZXBlbmRlbnRUZXN0Ci0vLyAgICAgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTx0dXBs
ZShib29sLCBib29sKT4gPiB7CisvLyAgICAgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJh
bTx0dXBsZTxib29sLCBib29sPiA+IHsKIC8vICAgdmlydHVhbCB2b2lkIFNldFVwKCkgewogLy8g
ICAgIC8vIEFzc2lnbnMgZXh0ZXJuYWxfZmxhZ18xIGFuZCBleHRlcm5hbF9mbGFnXzIgdmFsdWVz
IGZyb20gdGhlIHR1cGxlLgogLy8gICAgIHRpZShleHRlcm5hbF9mbGFnXzEsIGV4dGVybmFsX2Zs
YWdfMikgPSBHZXRQYXJhbSgpOwpAQCAtMTM0NCwxMSArMTM2OCw5IEBAIGludGVybmFsOjpDYXJ0
ZXNpYW5Qcm9kdWN0SG9sZGVyMTA8R2VuZXJhdG9yMSwgR2VuZXJhdG9yMiwgR2VuZXJhdG9yMywK
ICAgICAgIEdlbmVyYXRvcjEwPigKICAgICAgIGcxLCBnMiwgZzMsIGc0LCBnNSwgZzYsIGc3LCBn
OCwgZzksIGcxMCk7CiB9Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCi0KLQorIyBlbmRp
ZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKIAotI2RlZmluZSBURVNUX1AodGVzdF9jYXNlX25hbWUs
IHRlc3RfbmFtZSkgXAorIyBkZWZpbmUgVEVTVF9QKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUp
IFwKICAgY2xhc3MgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9u
YW1lKSBcCiAgICAgICA6IHB1YmxpYyB0ZXN0X2Nhc2VfbmFtZSB7IFwKICAgIHB1YmxpYzogXApA
QCAtMTM1OCwxNCArMTM4MCwxNyBAQCBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjEw
PEdlbmVyYXRvcjEsIEdlbmVyYXRvcjIsIEdlbmVyYXRvcjMsCiAgICAgc3RhdGljIGludCBBZGRU
b1JlZ2lzdHJ5KCkgeyBcCiAgICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgp
LT5wYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKS4gXAogICAgICAgICAgIEdldFRlc3RDYXNl
UGF0dGVybkhvbGRlcjx0ZXN0X2Nhc2VfbmFtZT4oXAotICAgICAgICAgICAgICAjdGVzdF9jYXNl
X25hbWUsIF9fRklMRV9fLCBfX0xJTkVfXyktPkFkZFRlc3RQYXR0ZXJuKFwKLSAgICAgICAgICAg
ICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgXAotICAgICAgICAgICAgICAgICAgI3Rlc3RfbmFtZSwg
XAotICAgICAgICAgICAgICAgICAgbmV3IDo6dGVzdGluZzo6aW50ZXJuYWw6OlRlc3RNZXRhRmFj
dG9yeTwgXAotICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVz
dF9jYXNlX25hbWUsIHRlc3RfbmFtZSk+KCkpOyBcCisgICAgICAgICAgICAgICN0ZXN0X2Nhc2Vf
bmFtZSwgXAorICAgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpDb2RlTG9jYXRpb24o
XAorICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKSktPkFkZFRlc3RQYXR0ZXJu
KFwKKyAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9TVFJJTkdJRllfKHRlc3RfY2FzZV9uYW1l
KSwgXAorICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1NUUklOR0lGWV8odGVzdF9uYW1lKSwg
XAorICAgICAgICAgICAgICAgICAgICAgIG5ldyA6OnRlc3Rpbmc6OmludGVybmFsOjpUZXN0TWV0
YUZhY3Rvcnk8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19O
QU1FXyhcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2VfbmFtZSwgdGVz
dF9uYW1lKT4oKSk7IFwKICAgICAgIHJldHVybiAwOyBcCiAgICAgfSBcCi0gICAgc3RhdGljIGlu
dCBndGVzdF9yZWdpc3RlcmluZ19kdW1teV87IFwKKyAgICBzdGF0aWMgaW50IGd0ZXN0X3JlZ2lz
dGVyaW5nX2R1bW15XyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXzsgXAogICAgIEdURVNUX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTl8oXAogICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRl
c3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpKTsgXAogICB9OyBcCkBAIC0xMzc0LDE5ICsxMzk5LDM5
IEBAIGludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMTA8R2VuZXJhdG9yMSwgR2VuZXJh
dG9yMiwgR2VuZXJhdG9yMywKICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNl
X25hbWUsIHRlc3RfbmFtZSk6OkFkZFRvUmVnaXN0cnkoKTsgXAogICB2b2lkIEdURVNUX1RFU1Rf
Q0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSk6OlRlc3RCb2R5KCkKIAotI2Rl
ZmluZSBJTlNUQU5USUFURV9URVNUX0NBU0VfUChwcmVmaXgsIHRlc3RfY2FzZV9uYW1lLCBnZW5l
cmF0b3IpIFwKLSAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dGVzdF9jYXNl
X25hbWU6OlBhcmFtVHlwZT4gXAotICAgICAgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1l
IyNfRXZhbEdlbmVyYXRvcl8oKSB7IHJldHVybiBnZW5lcmF0b3I7IH0gXAotICBpbnQgZ3Rlc3Rf
IyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfZHVtbXlfID0gXAotICAgICAgOjp0ZXN0aW5nOjpV
bml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkuIFwK
LSAgICAgICAgICBHZXRUZXN0Q2FzZVBhdHRlcm5Ib2xkZXI8dGVzdF9jYXNlX25hbWU+KFwKLSAg
ICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBfX0ZJTEVfXywgX19MSU5FX18pLT5BZGRUZXN0
Q2FzZUluc3RhbnRpYXRpb24oXAotICAgICAgICAgICAgICAgICAgI3ByZWZpeCwgXAotICAgICAg
ICAgICAgICAgICAgJmd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0
b3JfLCBcCi0gICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pCisvLyBUaGUgb3B0
aW9uYWwgbGFzdCBhcmd1bWVudCB0byBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBhbGxvd3MgdGhl
IHVzZXIKKy8vIHRvIHNwZWNpZnkgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHRoYXQgZ2VuZXJhdGVz
IGN1c3RvbSB0ZXN0IG5hbWUgc3VmZml4ZXMKKy8vIGJhc2VkIG9uIHRoZSB0ZXN0IHBhcmFtZXRl
cnMuIFRoZSBmdW5jdGlvbiBzaG91bGQgYWNjZXB0IG9uZSBhcmd1bWVudCBvZgorLy8gdHlwZSB0
ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPGNsYXNzIFBhcmFtVHlwZT4sIGFuZCByZXR1cm4gc3RkOjpz
dHJpbmcuCisvLworLy8gdGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSBpcyBhIGJ1aWx0
aW4gdGVzdCBzdWZmaXggZ2VuZXJhdG9yIHRoYXQKKy8vIHJldHVybnMgdGhlIHZhbHVlIG9mIHRl
c3Rpbmc6OlByaW50VG9TdHJpbmcoR2V0UGFyYW0oKSkuCisvLworLy8gTm90ZTogdGVzdCBuYW1l
cyBtdXN0IGJlIG5vbi1lbXB0eSwgdW5pcXVlLCBhbmQgbWF5IG9ubHkgY29udGFpbiBBU0NJSQor
Ly8gYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgb3IgdW5kZXJzY29yZS4gQmVjYXVzZSBQcmludFRv
U3RyaW5nIGFkZHMgcXVvdGVzCisvLyB0byBzdGQ6OnN0cmluZyBhbmQgQyBzdHJpbmdzLCBpdCB3
b24ndCB3b3JrIGZvciB0aGVzZSB0eXBlcy4KKworI2RlZmluZSBJTlNUQU5USUFURV9URVNUX0NB
U0VfUChwcmVmaXgsIHRlc3RfY2FzZV9uYW1lLCBnZW5lcmF0b3IsIC4uLikgICAgICAgIFwKKyAg
c3RhdGljIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPHRlc3RfY2FzZV9uYW1l
OjpQYXJhbVR5cGU+ICAgICAgICBcCisgICAgICBndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25h
bWUjI19FdmFsR2VuZXJhdG9yXygpIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVy
biBnZW5lcmF0b3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHN0YXRpYyA6OnN0ZDo6
c3RyaW5nIGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0ZU5hbWVf
KCAgICAgXAorICAgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHRlc3RfY2FzZV9u
YW1lOjpQYXJhbVR5cGU+JiBpbmZvKSB7ICAgICAgIFwKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6R2V0UGFyYW1OYW1lR2VuPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+KCAgICBc
CisgICAgICAgIF9fVkFfQVJHU19fKShpbmZvKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgc3Rh
dGljIGludCBndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19kdW1teV8gR1RFU1RfQVRU
UklCVVRFX1VOVVNFRF8gPSBcCisgICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5j
ZSgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIC0+
cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAuR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVyPHRlc3RfY2Fz
ZV9uYW1lPiggICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICN0ZXN0
X2Nhc2VfbmFtZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpDb2RlTG9jYXRpb24oX19G
SUxFX18sIF9fTElORV9fKSkgICAgICAgICAgIFwKKyAgICAgICAgICAtPkFkZFRlc3RDYXNlSW5z
dGFudGlhdGlvbiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICAgICNwcmVmaXgsICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19F
dmFsR2VuZXJhdG9yXywgICAgICAgXAorICAgICAgICAgICAgICAmZ3Rlc3RfIyNwcmVmaXgjI3Rl
c3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRlTmFtZV8sIF9fRklMRV9fLCAgIFwKKyAgICAgICAg
ICAgICAgX19MSU5FX18pCiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAKLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1BBUkFNX1RFU1QKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dU
RVNUX1BBUkFNX1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1bXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC5wdW1wCmluZGV4IGEyMzExODgy
N2YxZDQ4MGZiYmI4MjUyZjM0MGYwZWJlZGEzNDZlMjUuLjI3NGYyYjNiNTY5MzMwMDEyZTg1ZWUz
Y2Y0ZmQ1N2ViMGI1NDIxZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1bXAKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcApAQCAtMzAsMTMg
KzMwLDEyIEBAICR2YXIgbWF4dHVwbGUgPSAxMCAgJCQgTWF4aW11bSBudW1iZXIgb2YgQ29tYmlu
ZSBhcmd1bWVudHMgd2Ugd2FudCB0byBzdXBwb3J0LgogLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogLy8KLS8vIEF1dGhvcnM6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0v
LwogLy8gTWFjcm9zIGFuZCBmdW5jdGlvbnMgZm9yIGltcGxlbWVudGluZyBwYXJhbWV0ZXJpemVk
IHRlc3RzCi0vLyBpbiBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkK
Ky8vIGluIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBU
ZXN0KQogLy8KIC8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBETyBOT1Qg
RURJVCBCWSBIQU5EIQogLy8KKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKICNp
Zm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QQVJBTV9URVNUX0hfCiAjZGVmaW5lIEdU
RVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9IXwogCkBAIC00OSwxMCArNDgsMTIg
QEAgJHZhciBtYXh0dXBsZSA9IDEwICAkJCBNYXhpbXVtIG51bWJlciBvZiBDb21iaW5lIGFyZ3Vt
ZW50cyB3ZSB3YW50IHRvIHN1cHBvcnQuCiAjaWYgMAogCiAvLyBUbyB3cml0ZSB2YWx1ZS1wYXJh
bWV0ZXJpemVkIHRlc3RzLCBmaXJzdCB5b3Ugc2hvdWxkIGRlZmluZSBhIGZpeHR1cmUKLS8vIGNs
YXNzLiBJdCBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPFQ+LCB3
aGVyZSBUIGlzCi0vLyB0aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuIFRlc3RXaXRo
UGFyYW08VD4gaXMgaXRzZWxmIGRlcml2ZWQKLS8vIGZyb20gdGVzdGluZzo6VGVzdC4gVCBjYW4g
YmUgYW55IGNvcHlhYmxlIHR5cGUuIElmIGl0J3MgYSByYXcgcG9pbnRlciwKLS8vIHlvdSBhcmUg
cmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBsaWZlc3BhbiBvZiB0aGUgcG9pbnRlZCB2YWx1
ZXMuCisvLyBjbGFzcy4gSXQgaXMgdXN1YWxseSBkZXJpdmVkIGZyb20gdGVzdGluZzo6VGVzdFdp
dGhQYXJhbTxUPiAoc2VlIGJlbG93IGZvcgorLy8gYW5vdGhlciBpbmhlcml0YW5jZSBzY2hlbWUg
dGhhdCdzIHNvbWV0aW1lcyB1c2VmdWwgaW4gbW9yZSBjb21wbGljYXRlZAorLy8gY2xhc3MgaGll
cmFyY2hpZXMpLCB3aGVyZSB0aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuCisvLyBU
ZXN0V2l0aFBhcmFtPFQ+IGlzIGl0c2VsZiBkZXJpdmVkIGZyb20gdGVzdGluZzo6VGVzdC4gVCBj
YW4gYmUgYW55CisvLyBjb3B5YWJsZSB0eXBlLiBJZiBpdCdzIGEgcmF3IHBvaW50ZXIsIHlvdSBh
cmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZQorLy8gbGlmZXNwYW4gb2YgdGhlIHBvaW50
ZWQgdmFsdWVzLgogCiBjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQ
YXJhbTxjb25zdCBjaGFyKj4gewogICAvLyBZb3UgY2FuIGltcGxlbWVudCBhbGwgdGhlIHVzdWFs
IGNsYXNzIGZpeHR1cmUgbWVtYmVycyBoZXJlLgpAQCAtNzYsNyArNzcsNyBAQCBURVNUX1AoRm9v
VGVzdCwgSGFzQmxhaEJsYWgpIHsKIC8vIEZpbmFsbHksIHlvdSBjYW4gdXNlIElOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QIHRvIGluc3RhbnRpYXRlIHRoZSB0ZXN0CiAvLyBjYXNlIHdpdGggYW55IHNl
dCBvZiBwYXJhbWV0ZXJzIHlvdSB3YW50LiBHb29nbGUgVGVzdCBkZWZpbmVzIGEgbnVtYmVyCiAv
LyBvZiBmdW5jdGlvbnMgZm9yIGdlbmVyYXRpbmcgdGVzdCBwYXJhbWV0ZXJzLiBUaGV5IHJldHVy
biB3aGF0IHdlIGNhbGwKLS8vIChzdXJwcmlzZSEpIHBhcmFtZXRlciBnZW5lcmF0b3JzLiBIZXJl
IGlzIGEgIHN1bW1hcnkgb2YgdGhlbSwgd2hpY2gKKy8vIChzdXJwcmlzZSEpIHBhcmFtZXRlciBn
ZW5lcmF0b3JzLiBIZXJlIGlzIGEgc3VtbWFyeSBvZiB0aGVtLCB3aGljaAogLy8gYXJlIGFsbCBp
biB0aGUgdGVzdGluZyBuYW1lc3BhY2U6CiAvLwogLy8KQEAgLTEzNCw5ICsxMzUsMTIgQEAgSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoQW5vdGhlckluc3RhbnRpYXRpb25OYW1lLCBGb29UZXN0LCBW
YWx1ZXNJbihwZXRzKSk7CiAvLyBpbiB0aGUgZ2l2ZW4gdGVzdCBjYXNlLCB3aGV0aGVyIHRoZWly
IGRlZmluaXRpb25zIGNvbWUgYmVmb3JlIG9yCiAvLyBBRlRFUiB0aGUgSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1Agc3RhdGVtZW50LgogLy8KLS8vIFBsZWFzZSBhbHNvIG5vdGUgdGhhdCBnZW5lcmF0
b3IgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCBpbgotLy8gUlVOX0FMTF9URVNUUygpLCBhZnRl
ciBtYWluKCkgaGFzIHN0YXJ0ZWQuIFRoaXMgYWxsb3dzIGV2YWx1YXRpb24gb2YKLS8vIHBhcmFt
ZXRlciBsaXN0IGJhc2VkIG9uIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzLgorLy8gUGxlYXNlIGFs
c28gbm90ZSB0aGF0IGdlbmVyYXRvciBleHByZXNzaW9ucyAoaW5jbHVkaW5nIHBhcmFtZXRlcnMg
dG8gdGhlCisvLyBnZW5lcmF0b3JzKSBhcmUgZXZhbHVhdGVkIGluIEluaXRHb29nbGVUZXN0KCks
IGFmdGVyIG1haW4oKSBoYXMgc3RhcnRlZC4KKy8vIFRoaXMgYWxsb3dzIHRoZSB1c2VyIG9uIG9u
ZSBoYW5kLCB0byBhZGp1c3QgZ2VuZXJhdG9yIHBhcmFtZXRlcnMgaW4gb3JkZXIKKy8vIHRvIGR5
bmFtaWNhbGx5IGRldGVybWluZSBhIHNldCBvZiB0ZXN0cyB0byBydW4gYW5kIG9uIHRoZSBvdGhl
ciBoYW5kLAorLy8gZ2l2ZSB0aGUgdXNlciBhIGNoYW5jZSB0byBpbnNwZWN0IHRoZSBnZW5lcmF0
ZWQgdGVzdHMgd2l0aCBHb29nbGUgVGVzdAorLy8gcmVmbGVjdGlvbiBBUEkgYmVmb3JlIFJVTl9B
TExfVEVTVFMoKSBpcyBleGVjdXRlZC4KIC8vCiAvLyBZb3UgY2FuIHNlZSBzYW1wbGVzL3NhbXBs
ZTdfdW5pdHRlc3QuY2MgYW5kIHNhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYwogLy8gZm9yIG1v
cmUgZXhhbXBsZXMuCkBAIC0xNDQsMjMgKzE0OCw0NCBAQCBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UChBbm90aGVySW5zdGFudGlhdGlvbk5hbWUsIEZvb1Rlc3QsIFZhbHVlc0luKHBldHMpKTsKIC8v
IEluIHRoZSBmdXR1cmUsIHdlIHBsYW4gdG8gcHVibGlzaCB0aGUgQVBJIGZvciBkZWZpbmluZyBu
ZXcgcGFyYW1ldGVyCiAvLyBnZW5lcmF0b3JzLiBCdXQgZm9yIG5vdyB0aGlzIGludGVyZmFjZSBy
ZW1haW5zIHBhcnQgb2YgdGhlIGludGVybmFsCiAvLyBpbXBsZW1lbnRhdGlvbiBhbmQgaXMgc3Vi
amVjdCB0byBjaGFuZ2UuCisvLworLy8KKy8vIEEgcGFyYW1ldGVyaXplZCB0ZXN0IGZpeHR1cmUg
bXVzdCBiZSBkZXJpdmVkIGZyb20gdGVzdGluZzo6VGVzdCBhbmQgZnJvbQorLy8gdGVzdGluZzo6
V2l0aFBhcmFtSW50ZXJmYWNlPFQ+LCB3aGVyZSBUIGlzIHRoZSB0eXBlIG9mIHRoZSBwYXJhbWV0
ZXIKKy8vIHZhbHVlcy4gSW5oZXJpdGluZyBmcm9tIFRlc3RXaXRoUGFyYW08VD4gc2F0aXNmaWVz
IHRoYXQgcmVxdWlyZW1lbnQgYmVjYXVzZQorLy8gVGVzdFdpdGhQYXJhbTxUPiBpbmhlcml0cyBm
cm9tIGJvdGggVGVzdCBhbmQgV2l0aFBhcmFtSW50ZXJmYWNlLiBJbiBtb3JlCisvLyBjb21wbGlj
YXRlZCBoaWVyYXJjaGllcywgaG93ZXZlciwgaXQgaXMgb2NjYXNpb25hbGx5IHVzZWZ1bCB0byBp
bmhlcml0CisvLyBzZXBhcmF0ZWx5IGZyb20gVGVzdCBhbmQgV2l0aFBhcmFtSW50ZXJmYWNlLiBG
b3IgZXhhbXBsZToKKworY2xhc3MgQmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsK
KyAgLy8gWW91IGNhbiBpbmhlcml0IGFsbCB0aGUgdXN1YWwgbWVtYmVycyBmb3IgYSBub24tcGFy
YW1ldGVyaXplZCB0ZXN0CisgIC8vIGZpeHR1cmUgaGVyZS4KK307CisKK2NsYXNzIERlcml2ZWRU
ZXN0IDogcHVibGljIEJhc2VUZXN0LCBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZh
Y2U8aW50PiB7CisgIC8vIFRoZSB1c3VhbCB0ZXN0IGZpeHR1cmUgbWVtYmVycyBnbyBoZXJlIHRv
by4KK307CisKK1RFU1RfRihCYXNlVGVzdCwgSGFzRm9vKSB7CisgIC8vIFRoaXMgaXMgYW4gb3Jk
aW5hcnkgbm9uLXBhcmFtZXRlcml6ZWQgdGVzdC4KK30KKworVEVTVF9QKERlcml2ZWRUZXN0LCBE
b2VzQmxhaCkgeworICAvLyBHZXRQYXJhbSB3b3JrcyBqdXN0IHRoZSBzYW1lIGhlcmUgYXMgaWYg
eW91IGluaGVyaXQgZnJvbSBUZXN0V2l0aFBhcmFtLgorICBFWFBFQ1RfVFJVRShmb28uQmxhaChH
ZXRQYXJhbSgpKSk7Cit9CiAKICNlbmRpZiAgLy8gMAogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcG9ydC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIK
IAogI2lmICFHVEVTVF9PU19TWU1CSUFOCi0jaW5jbHVkZSA8dXRpbGl0eT4KKyMgaW5jbHVkZSA8
dXRpbGl0eT4KICNlbmRpZgogCi0vLyBzY3JpcHRzL2Z1c2VfZ3Rlc3QucHkgZGVwZW5kcyBvbiBn
dGVzdCdzIG93biBoZWFkZXIgYmVpbmcgI2luY2x1ZGVkCi0vLyAqdW5jb25kaXRpb25hbGx5Ki4g
IFRoZXJlZm9yZSB0aGVzZSAjaW5jbHVkZXMgY2Fubm90IGJlIG1vdmVkCi0vLyBpbnNpZGUgI2lm
IEdURVNUX0hBU19QQVJBTV9URVNULgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWlu
dGVybmFsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oPgot
I2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmg+Ci0K
LSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0
LWludGVybmFsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5o
IgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgi
CiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIApAQCAtMjQxLDcgKzI2Niw3IEBAIGludGVybmFsOjpQ
YXJhbUdlbmVyYXRvcjxUPiBSYW5nZShUIHN0YXJ0LCBUIGVuZCkgewogLy8gZWFjaCB3aXRoIEMt
c3RyaW5nIHZhbHVlcyBvZiAiZm9vIiwgImJhciIsIGFuZCAiYmF6IjoKIC8vCiAvLyBjb25zdCBj
aGFyKiBzdHJpbmdzW10gPSB7ImZvbyIsICJiYXIiLCAiYmF6In07Ci0vLyBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUChTdHJpbmdTZXF1ZW5jZSwgU3J0aW5nVGVzdCwgVmFsdWVzSW4oc3RyaW5ncykp
OworLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU3RyaW5nU2VxdWVuY2UsIFN0cmluZ1Rlc3Qs
IFZhbHVlc0luKHN0cmluZ3MpKTsKIC8vCiAvLyBUaGlzIGluc3RhbnRpYXRlcyB0ZXN0cyBmcm9t
IHRlc3QgY2FzZSBTdGxTdHJpbmdUZXN0CiAvLyBlYWNoIHdpdGggU1RMIHN0cmluZ3Mgd2l0aCB2
YWx1ZXMgImEiIGFuZCAiYiI6CkBAIC0yNzQsMTEgKzI5OSwxMCBAQCBpbnRlcm5hbDo6UGFyYW1H
ZW5lcmF0b3I8VD4gUmFuZ2UoVCBzdGFydCwgVCBlbmQpIHsKIC8vCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRm9yd2FyZEl0ZXJhdG9yPgogaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPAotICAgIHR5cGVu
YW1lIDo6c3RkOjppdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4g
VmFsdWVzSW4oCi0gIEZvcndhcmRJdGVyYXRvciBiZWdpbiwKLSAgRm9yd2FyZEl0ZXJhdG9yIGVu
ZCkgewotICB0eXBlZGVmIHR5cGVuYW1lIDo6c3RkOjppdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0
ZXJhdG9yPjo6dmFsdWVfdHlwZQotICAgICAgUGFyYW1UeXBlOworICB0eXBlbmFtZSA6OnRlc3Rp
bmc6OmludGVybmFsOjpJdGVyYXRvclRyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBl
PgorVmFsdWVzSW4oRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKSB7
CisgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8
Rm9yd2FyZEl0ZXJhdG9yPgorICAgICAgOjp2YWx1ZV90eXBlIFBhcmFtVHlwZTsKICAgcmV0dXJu
IGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxQYXJhbVR5cGU+KAogICAgICAgbmV3IGludGVybmFs
OjpWYWx1ZXNJbkl0ZXJhdG9yUmFuZ2VHZW5lcmF0b3I8UGFyYW1UeXBlPihiZWdpbiwgZW5kKSk7
CiB9CkBAIC0zNDgsNyArMzcyLDcgQEAgaW5saW5lIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxi
b29sPiBCb29sKCkgewogICByZXR1cm4gVmFsdWVzKGZhbHNlLCB0cnVlKTsKIH0KIAotI2lmIEdU
RVNUX0hBU19DT01CSU5FCisjIGlmIEdURVNUX0hBU19DT01CSU5FCiAvLyBDb21iaW5lKCkgYWxs
b3dzIHRoZSB1c2VyIHRvIGNvbWJpbmUgdHdvIG9yIG1vcmUgc2VxdWVuY2VzIHRvIHByb2R1Y2UK
IC8vIHZhbHVlcyBvZiBhIENhcnRlc2lhbiBwcm9kdWN0IG9mIHRob3NlIHNlcXVlbmNlcycgZWxl
bWVudHMuCiAvLwpAQCAtMzg0LDcgKzQwOCw3IEBAIGlubGluZSBpbnRlcm5hbDo6UGFyYW1HZW5l
cmF0b3I8Ym9vbD4gQm9vbCgpIHsKIC8vIEJvb2xlYW4gZmxhZ3M6CiAvLwogLy8gY2xhc3MgRmxh
Z0RlcGVuZGVudFRlc3QKLS8vICAgICA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHR1
cGxlKGJvb2wsIGJvb2wpPiA+IHsKKy8vICAgICA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBh
cmFtPHR1cGxlPGJvb2wsIGJvb2w+ID4gewogLy8gICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CiAv
LyAgICAgLy8gQXNzaWducyBleHRlcm5hbF9mbGFnXzEgYW5kIGV4dGVybmFsX2ZsYWdfMiB2YWx1
ZXMgZnJvbSB0aGUgdHVwbGUuCiAvLyAgICAgdGllKGV4dGVybmFsX2ZsYWdfMSwgZXh0ZXJuYWxf
ZmxhZ18yKSA9IEdldFBhcmFtKCk7CkBAIC00MDksMTEgKzQzMyw5IEBAIGludGVybmFsOjpDYXJ0
ZXNpYW5Qcm9kdWN0SG9sZGVyJGk8JGZvciBqLCBbW0dlbmVyYXRvciRqXV0+IENvbWJpbmUoCiB9
CiAKIF1dCi0jZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCi0KLQorIyBlbmRpZiAgLy8gR1RF
U1RfSEFTX0NPTUJJTkUKIAotI2RlZmluZSBURVNUX1AodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFt
ZSkgXAorIyBkZWZpbmUgVEVTVF9QKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIFwKICAgY2xh
c3MgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBcCiAg
ICAgICA6IHB1YmxpYyB0ZXN0X2Nhc2VfbmFtZSB7IFwKICAgIHB1YmxpYzogXApAQCAtNDIzLDE0
ICs0NDUsMTcgQEAgaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIkaTwkZm9yIGosIFtb
R2VuZXJhdG9yJGpdXT4gQ29tYmluZSgKICAgICBzdGF0aWMgaW50IEFkZFRvUmVnaXN0cnkoKSB7
IFwKICAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRlcml6
ZWRfdGVzdF9yZWdpc3RyeSgpLiBcCiAgICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVy
PHRlc3RfY2FzZV9uYW1lPihcCi0gICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgX19GSUxF
X18sIF9fTElORV9fKS0+QWRkVGVzdFBhdHRlcm4oXAotICAgICAgICAgICAgICAgICAgI3Rlc3Rf
Y2FzZV9uYW1lLCBcCi0gICAgICAgICAgICAgICAgICAjdGVzdF9uYW1lLCBcCi0gICAgICAgICAg
ICAgICAgICBuZXcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdE1ldGFGYWN0b3J5PCBcCi0gICAg
ICAgICAgICAgICAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwg
dGVzdF9uYW1lKT4oKSk7IFwKKyAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCisgICAg
ICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihcCisgICAgICAgICAg
ICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pKS0+QWRkVGVzdFBhdHRlcm4oXAorICAgICAgICAg
ICAgICAgICAgICAgIEdURVNUX1NUUklOR0lGWV8odGVzdF9jYXNlX25hbWUpLCBcCisgICAgICAg
ICAgICAgICAgICAgICAgR1RFU1RfU1RSSU5HSUZZXyh0ZXN0X25hbWUpLCBcCisgICAgICAgICAg
ICAgICAgICAgICAgbmV3IDo6dGVzdGluZzo6aW50ZXJuYWw6OlRlc3RNZXRhRmFjdG9yeTwgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpPigpKTsg
XAogICAgICAgcmV0dXJuIDA7IFwKICAgICB9IFwKLSAgICBzdGF0aWMgaW50IGd0ZXN0X3JlZ2lz
dGVyaW5nX2R1bW15XzsgXAorICAgIHN0YXRpYyBpbnQgZ3Rlc3RfcmVnaXN0ZXJpbmdfZHVtbXlf
IEdURVNUX0FUVFJJQlVURV9VTlVTRURfOyBcCiAgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOXyhcCiAgICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUs
IHRlc3RfbmFtZSkpOyBcCiAgIH07IFwKQEAgLTQzOSwxOSArNDY0LDM3IEBAIGludGVybmFsOjpD
YXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyJGk8JGZvciBqLCBbW0dlbmVyYXRvciRqXV0+IENvbWJpbmUo
CiAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUp
OjpBZGRUb1JlZ2lzdHJ5KCk7IFwKICAgdm9pZCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3Rf
Y2FzZV9uYW1lLCB0ZXN0X25hbWUpOjpUZXN0Qm9keSgpCiAKLSNkZWZpbmUgSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AocHJlZml4LCB0ZXN0X2Nhc2VfbmFtZSwgZ2VuZXJhdG9yKSBcCi0gIDo6dGVz
dGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+
IFwKKy8vIFRoZSBvcHRpb25hbCBsYXN0IGFyZ3VtZW50IHRvIElOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QIGFsbG93cyB0aGUgdXNlcgorLy8gdG8gc3BlY2lmeSBhIGZ1bmN0aW9uIG9yIGZ1bmN0b3Ig
dGhhdCBnZW5lcmF0ZXMgY3VzdG9tIHRlc3QgbmFtZSBzdWZmaXhlcworLy8gYmFzZWQgb24gdGhl
IHRlc3QgcGFyYW1ldGVycy4gVGhlIGZ1bmN0aW9uIHNob3VsZCBhY2NlcHQgb25lIGFyZ3VtZW50
IG9mCisvLyB0eXBlIHRlc3Rpbmc6OlRlc3RQYXJhbUluZm88Y2xhc3MgUGFyYW1UeXBlPiwgYW5k
IHJldHVybiBzdGQ6OnN0cmluZy4KKy8vCisvLyB0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1O
YW1lIGlzIGEgYnVpbHRpbiB0ZXN0IHN1ZmZpeCBnZW5lcmF0b3IgdGhhdAorLy8gcmV0dXJucyB0
aGUgdmFsdWUgb2YgdGVzdGluZzo6UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgpKS4KKy8vCisvLyBO
b3RlOiB0ZXN0IG5hbWVzIG11c3QgYmUgbm9uLWVtcHR5LCB1bmlxdWUsIGFuZCBtYXkgb25seSBj
b250YWluIEFTQ0lJCisvLyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBvciB1bmRlcnNjb3JlLiBC
ZWNhdXNlIFByaW50VG9TdHJpbmcgYWRkcyBxdW90ZXMKKy8vIHRvIHN0ZDo6c3RyaW5nIGFuZCBD
IHN0cmluZ3MsIGl0IHdvbid0IHdvcmsgZm9yIHRoZXNlIHR5cGVzLgorCisjIGRlZmluZSBJTlNU
QU5USUFURV9URVNUX0NBU0VfUChwcmVmaXgsIHRlc3RfY2FzZV9uYW1lLCBnZW5lcmF0b3IsIC4u
LikgXAorICBzdGF0aWMgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dGVzdF9j
YXNlX25hbWU6OlBhcmFtVHlwZT4gXAogICAgICAgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9u
YW1lIyNfRXZhbEdlbmVyYXRvcl8oKSB7IHJldHVybiBnZW5lcmF0b3I7IH0gXAotICBpbnQgZ3Rl
c3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfZHVtbXlfID0gXAorICBzdGF0aWMgOjpzdGQ6
OnN0cmluZyBndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdGVOYW1l
XyggXAorICAgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHRlc3RfY2FzZV9uYW1l
OjpQYXJhbVR5cGU+JiBpbmZvKSB7IFwKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6
R2V0UGFyYW1OYW1lR2VuPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+IFwKKyAgICAgICAgKF9f
VkFfQVJHU19fKShpbmZvKTsgXAorICB9IFwKKyAgc3RhdGljIGludCBndGVzdF8jI3ByZWZpeCMj
dGVzdF9jYXNlX25hbWUjI19kdW1teV8gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gPSBcCiAgICAg
ICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5wYXJhbWV0ZXJpemVkX3Rlc3Rf
cmVnaXN0cnkoKS4gXAogICAgICAgICAgIEdldFRlc3RDYXNlUGF0dGVybkhvbGRlcjx0ZXN0X2Nh
c2VfbmFtZT4oXAotICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIF9fRklMRV9fLCBfX0xJ
TkVfXyktPkFkZFRlc3RDYXNlSW5zdGFudGlhdGlvbihcCi0gICAgICAgICAgICAgICAgICAjcHJl
Zml4LCBcCi0gICAgICAgICAgICAgICAgICAmZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1l
IyNfRXZhbEdlbmVyYXRvcl8sIFwKLSAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVf
XykKKyAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCisgICAgICAgICAgICAgIDo6dGVz
dGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihcCisgICAgICAgICAgICAgICAgICBfX0ZJTEVf
XywgX19MSU5FX18pKS0+QWRkVGVzdENhc2VJbnN0YW50aWF0aW9uKFwKKyAgICAgICAgICAgICAg
ICAgICAgICAjcHJlZml4LCBcCisgICAgICAgICAgICAgICAgICAgICAgJmd0ZXN0XyMjcHJlZml4
IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0b3JfLCBcCisgICAgICAgICAgICAgICAgICAg
ICAgJmd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0ZU5hbWVfLCBc
CisgICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKQogCiB9ICAvLyBuYW1l
c3BhY2UgdGVzdGluZwogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCi0KICNlbmRp
ZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QQVJBTV9URVNUX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXByaW50ZXJzLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXByaW50ZXJzLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTE4NjVmODRlNmY2ZmEzZTBmY2UxOTg3MDBiNWE1ZGZlNWY2NTUwZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rl
c3QtcHJpbnRlcnMuaApAQCAtMCwwICsxLDExMDcgQEAKKy8vIENvcHlyaWdodCAyMDA3LCBHb29n
bGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBHb29nbGUgVGVzdCAtIFRoZSBHb29nbGUgQysr
IFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrCisvLworLy8gVGhpcyBmaWxlIGltcGxlbWVu
dHMgYSB1bml2ZXJzYWwgdmFsdWUgcHJpbnRlciB0aGF0IGNhbiBwcmludCBhCisvLyB2YWx1ZSBv
ZiBhbnkgdHlwZSBUOgorLy8KKy8vICAgdm9pZCA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJz
YWxQcmludGVyPFQ+OjpQcmludCh2YWx1ZSwgb3N0cmVhbV9wdHIpOworLy8KKy8vIEEgdXNlciBj
YW4gdGVhY2ggdGhpcyBmdW5jdGlvbiBob3cgdG8gcHJpbnQgYSBjbGFzcyB0eXBlIFQgYnkKKy8v
IGRlZmluaW5nIGVpdGhlciBvcGVyYXRvcjw8KCkgb3IgUHJpbnRUbygpIGluIHRoZSBuYW1lc3Bh
Y2UgdGhhdAorLy8gZGVmaW5lcyBULiAgTW9yZSBzcGVjaWZpY2FsbHksIHRoZSBGSVJTVCBkZWZp
bmVkIGZ1bmN0aW9uIGluIHRoZQorLy8gZm9sbG93aW5nIGxpc3Qgd2lsbCBiZSB1c2VkIChhc3N1
bWluZyBUIGlzIGRlZmluZWQgaW4gbmFtZXNwYWNlCisvLyBmb28pOgorLy8KKy8vICAgMS4gZm9v
OjpQcmludFRvKGNvbnN0IFQmLCBvc3RyZWFtKikKKy8vICAgMi4gb3BlcmF0b3I8PChvc3RyZWFt
JiwgY29uc3QgVCYpIGRlZmluZWQgaW4gZWl0aGVyIGZvbyBvciB0aGUKKy8vICAgICAgZ2xvYmFs
IG5hbWVzcGFjZS4KKy8vCisvLyBIb3dldmVyIGlmIFQgaXMgYW4gU1RMLXN0eWxlIGNvbnRhaW5l
ciB0aGVuIGl0IGlzIHByaW50ZWQgZWxlbWVudC13aXNlCisvLyB1bmxlc3MgZm9vOjpQcmludFRv
KGNvbnN0IFQmLCBvc3RyZWFtKikgaXMgZGVmaW5lZC4gTm90ZSB0aGF0CisvLyBvcGVyYXRvcjw8
KCkgaXMgaWdub3JlZCBmb3IgY29udGFpbmVyIHR5cGVzLgorLy8KKy8vIElmIG5vbmUgb2YgdGhl
IGFib3ZlIGlzIGRlZmluZWQsIGl0IHdpbGwgcHJpbnQgdGhlIGRlYnVnIHN0cmluZyBvZgorLy8g
dGhlIHZhbHVlIGlmIGl0IGlzIGEgcHJvdG9jb2wgYnVmZmVyLCBvciBwcmludCB0aGUgcmF3IGJ5
dGVzIGluIHRoZQorLy8gdmFsdWUgb3RoZXJ3aXNlLgorLy8KKy8vIFRvIGFpZCBkZWJ1Z2dpbmc6
IHdoZW4gVCBpcyBhIHJlZmVyZW5jZSB0eXBlLCB0aGUgYWRkcmVzcyBvZiB0aGUKKy8vIHZhbHVl
IGlzIGFsc28gcHJpbnRlZDsgd2hlbiBUIGlzIGEgKGNvbnN0KSBjaGFyIHBvaW50ZXIsIGJvdGgg
dGhlCisvLyBwb2ludGVyIHZhbHVlIGFuZCB0aGUgTlVMLXRlcm1pbmF0ZWQgc3RyaW5nIGl0IHBv
aW50cyB0byBhcmUKKy8vIHByaW50ZWQuCisvLworLy8gV2UgYWxzbyBwcm92aWRlIHNvbWUgY29u
dmVuaWVudCB3cmFwcGVyczoKKy8vCisvLyAgIC8vIFByaW50cyBhIHZhbHVlIHRvIGEgc3RyaW5n
LiAgRm9yIGEgKGNvbnN0IG9yIG5vdCkgY2hhcgorLy8gICAvLyBwb2ludGVyLCB0aGUgTlVMLXRl
cm1pbmF0ZWQgc3RyaW5nIChidXQgbm90IHRoZSBwb2ludGVyKSBpcworLy8gICAvLyBwcmludGVk
LgorLy8gICBzdGQ6OnN0cmluZyA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoY29uc3QgVCYgdmFs
dWUpOworLy8KKy8vICAgLy8gUHJpbnRzIGEgdmFsdWUgdGVyc2VseTogZm9yIGEgcmVmZXJlbmNl
IHR5cGUsIHRoZSByZWZlcmVuY2VkCisvLyAgIC8vIHZhbHVlIChidXQgbm90IHRoZSBhZGRyZXNz
KSBpcyBwcmludGVkOyBmb3IgYSAoY29uc3Qgb3Igbm90KSBjaGFyCisvLyAgIC8vIHBvaW50ZXIs
IHRoZSBOVUwtdGVybWluYXRlZCBzdHJpbmcgKGJ1dCBub3QgdGhlIHBvaW50ZXIpIGlzCisvLyAg
IC8vIHByaW50ZWQuCisvLyAgIHZvaWQgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVy
c2VQcmludChjb25zdCBUJiB2YWx1ZSwgb3N0cmVhbSopOworLy8KKy8vICAgLy8gUHJpbnRzIHZh
bHVlIHVzaW5nIHRoZSB0eXBlIGluZmVycmVkIGJ5IHRoZSBjb21waWxlci4gIFRoZSBkaWZmZXJl
bmNlCisvLyAgIC8vIGZyb20gVW5pdmVyc2FsVGVyc2VQcmludCgpIGlzIHRoYXQgdGhpcyBmdW5j
dGlvbiBwcmludHMgYm90aCB0aGUKKy8vICAgLy8gcG9pbnRlciBhbmQgdGhlIE5VTC10ZXJtaW5h
dGVkIHN0cmluZyBmb3IgYSAoY29uc3Qgb3Igbm90KSBjaGFyIHBvaW50ZXIuCisvLyAgIHZvaWQg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnQoY29uc3QgVCYgdmFsdWUsIG9zdHJl
YW0qKTsKKy8vCisvLyAgIC8vIFByaW50cyB0aGUgZmllbGRzIG9mIGEgdHVwbGUgdGVyc2VseSB0
byBhIHN0cmluZyB2ZWN0b3IsIG9uZQorLy8gICAvLyBlbGVtZW50IGZvciBlYWNoIGZpZWxkLiBU
dXBsZSBzdXBwb3J0IG11c3QgYmUgZW5hYmxlZCBpbgorLy8gICAvLyBndGVzdC1wb3J0LmguCisv
LyAgIHN0ZDo6dmVjdG9yPHN0cmluZz4gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9T
dHJpbmdzKAorLy8gICAgICAgY29uc3QgVHVwbGUmIHZhbHVlKTsKKy8vCisvLyBLbm93biBsaW1p
dGF0aW9uOgorLy8KKy8vIFRoZSBwcmludCBwcmltaXRpdmVzIHByaW50IHRoZSBlbGVtZW50cyBv
ZiBhbiBTVEwtc3R5bGUgY29udGFpbmVyCisvLyB1c2luZyB0aGUgY29tcGlsZXItaW5mZXJyZWQg
dHlwZSBvZiAqaXRlciB3aGVyZSBpdGVyIGlzIGEKKy8vIGNvbnN0X2l0ZXJhdG9yIG9mIHRoZSBj
b250YWluZXIuICBXaGVuIGNvbnN0X2l0ZXJhdG9yIGlzIGFuIGlucHV0CisvLyBpdGVyYXRvciBi
dXQgbm90IGEgZm9yd2FyZCBpdGVyYXRvciwgdGhpcyBpbmZlcnJlZCB0eXBlIG1heSBub3QKKy8v
IG1hdGNoIHZhbHVlX3R5cGUsIGFuZCB0aGUgcHJpbnQgb3V0cHV0IG1heSBiZSBpbmNvcnJlY3Qu
ICBJbgorLy8gcHJhY3RpY2UsIHRoaXMgaXMgcmFyZWx5IGEgcHJvYmxlbSBhcyBmb3IgbW9zdCBj
b250YWluZXJzCisvLyBjb25zdF9pdGVyYXRvciBpcyBhIGZvcndhcmQgaXRlcmF0b3IuICBXZSds
bCBmaXggdGhpcyBpZiB0aGVyZSdzIGFuCisvLyBhY3R1YWwgbmVlZCBmb3IgaXQuICBOb3RlIHRo
YXQgdGhpcyBmaXggY2Fubm90IHJlbHkgb24gdmFsdWVfdHlwZQorLy8gYmVpbmcgZGVmaW5lZCBh
cyBtYW55IHVzZXItZGVmaW5lZCBjb250YWluZXIgdHlwZXMgZG9uJ3QgaGF2ZQorLy8gdmFsdWVf
dHlwZS4KKworLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCisjaWZuZGVmIEdU
RVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJJTlRFUlNfSF8KKyNkZWZpbmUgR1RFU1RfSU5DTFVE
RV9HVEVTVF9HVEVTVF9QUklOVEVSU19IXworCisjaW5jbHVkZSA8b3N0cmVhbT4gIC8vIE5PTElO
VAorI2luY2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHV0aWxp
dHk+CisjaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oIgorCisjaWYg
R1RFU1RfSEFTX1NURF9UVVBMRV8KKyMgaW5jbHVkZSA8dHVwbGU+CisjZW5kaWYKKworI2lmIEdU
RVNUX0hBU19BQlNMCisjaW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisjaW5j
bHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvdmFyaWFu
dC5oIgorI2VuZGlmICAvLyBHVEVTVF9IQVNfQUJTTAorCituYW1lc3BhY2UgdGVzdGluZyB7CisK
Ky8vIERlZmluaXRpb25zIGluIHRoZSAnaW50ZXJuYWwnIGFuZCAnaW50ZXJuYWwyJyBuYW1lIHNw
YWNlcyBhcmUKKy8vIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLiAgRE8gTk9UIFVT
RSBUSEVNIElOIFVTRVIgQ09ERSEKK25hbWVzcGFjZSBpbnRlcm5hbDIgeworCisvLyBQcmludHMg
dGhlIGdpdmVuIG51bWJlciBvZiBieXRlcyBpbiB0aGUgZ2l2ZW4gb2JqZWN0IHRvIHRoZSBnaXZl
bgorLy8gb3N0cmVhbS4KK0dURVNUX0FQSV8gdm9pZCBQcmludEJ5dGVzSW5PYmplY3RUbyhjb25z
dCB1bnNpZ25lZCBjaGFyKiBvYmpfYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDo6c3RkOjpvc3RyZWFtKiBvcyk7CisKKy8vIEZvciBzZWxlY3Rpbmcgd2hpY2ggcHJpbnRl
ciB0byB1c2Ugd2hlbiBhIGdpdmVuIHR5cGUgaGFzIG5laXRoZXIgPDwKKy8vIG5vciBQcmludFRv
KCkuCitlbnVtIFR5cGVLaW5kIHsKKyAga1Byb3RvYnVmLCAgICAgICAgICAgICAgLy8gYSBwcm90
b2J1ZiB0eXBlCisgIGtDb252ZXJ0aWJsZVRvSW50ZWdlciwgIC8vIGEgdHlwZSBpbXBsaWNpdGx5
IGNvbnZlcnRpYmxlIHRvIEJpZ2dlc3RJbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
KGUuZy4gYSBuYW1lZCBvciB1bm5hbWVkIGVudW0gdHlwZSkKKyNpZiBHVEVTVF9IQVNfQUJTTAor
ICBrQ29udmVydGlibGVUb1N0cmluZ1ZpZXcsICAvLyBhIHR5cGUgaW1wbGljaXRseSBjb252ZXJ0
aWJsZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhYnNsOjpzdHJpbmdfdmll
dworI2VuZGlmCisgIGtPdGhlclR5cGUgIC8vIGFueXRoaW5nIGVsc2UKK307CisKKy8vIFR5cGVX
aXRob3V0Rm9ybWF0dGVyPFQsIGtUeXBlS2luZD46OlByaW50VmFsdWUodmFsdWUsIG9zKSBpcyBj
YWxsZWQKKy8vIGJ5IHRoZSB1bml2ZXJzYWwgcHJpbnRlciB0byBwcmludCBhIHZhbHVlIG9mIHR5
cGUgVCB3aGVuIG5laXRoZXIKKy8vIG9wZXJhdG9yPDwgbm9yIFByaW50VG8oKSBpcyBkZWZpbmVk
IGZvciBULCB3aGVyZSBrVHlwZUtpbmQgaXMgdGhlCisvLyAia2luZCIgb2YgVCBhcyBkZWZpbmVk
IGJ5IGVudW0gVHlwZUtpbmQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgVHlwZUtpbmQga1R5cGVL
aW5kPgorY2xhc3MgVHlwZVdpdGhvdXRGb3JtYXR0ZXIgeworIHB1YmxpYzoKKyAgLy8gVGhpcyBk
ZWZhdWx0IHZlcnNpb24gaXMgY2FsbGVkIHdoZW4ga1R5cGVLaW5kIGlzIGtPdGhlclR5cGUuCisg
IHN0YXRpYyB2b2lkIFByaW50VmFsdWUoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBv
cykgeworICAgIFByaW50Qnl0ZXNJbk9iamVjdFRvKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIqPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB2b2lkKj4oJnZhbHVlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHZh
bHVlKSwgb3MpOworICB9Cit9OworCisvLyBXZSBwcmludCBhIHByb3RvYnVmIHVzaW5nIGl0cyBT
aG9ydERlYnVnU3RyaW5nKCkgd2hlbiB0aGUgc3RyaW5nCisvLyBkb2Vzbid0IGV4Y2VlZCB0aGlz
IG1hbnkgY2hhcmFjdGVyczsgb3RoZXJ3aXNlIHdlIHByaW50IGl0IHVzaW5nCisvLyBEZWJ1Z1N0
cmluZygpIGZvciBiZXR0ZXIgcmVhZGFiaWxpdHkuCitjb25zdCBzaXplX3Qga1Byb3RvYnVmT25l
TGluZXJNYXhMZW5ndGggPSA1MDsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBl
V2l0aG91dEZvcm1hdHRlcjxULCBrUHJvdG9idWY+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lk
IFByaW50VmFsdWUoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIHN0
ZDo6c3RyaW5nIHByZXR0eV9zdHIgPSB2YWx1ZS5TaG9ydERlYnVnU3RyaW5nKCk7CisgICAgaWYg
KHByZXR0eV9zdHIubGVuZ3RoKCkgPiBrUHJvdG9idWZPbmVMaW5lck1heExlbmd0aCkgeworICAg
ICAgcHJldHR5X3N0ciA9ICJcbiIgKyB2YWx1ZS5EZWJ1Z1N0cmluZygpOworICAgIH0KKyAgICAq
b3MgPDwgKCI8IiArIHByZXR0eV9zdHIgKyAiPiIpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2NsYXNzIFR5cGVXaXRob3V0Rm9ybWF0dGVyPFQsIGtDb252ZXJ0aWJsZVRvSW50
ZWdlcj4geworIHB1YmxpYzoKKyAgLy8gU2luY2UgVCBoYXMgbm8gPDwgb3BlcmF0b3Igb3IgUHJp
bnRUbygpIGJ1dCBjYW4gYmUgaW1wbGljaXRseQorICAvLyBjb252ZXJ0ZWQgdG8gQmlnZ2VzdElu
dCwgd2UgcHJpbnQgaXQgYXMgYSBCaWdnZXN0SW50LgorICAvLworICAvLyBNb3N0IGxpa2VseSBU
IGlzIGFuIGVudW0gdHlwZSAoZWl0aGVyIG5hbWVkIG9yIHVubmFtZWQpLCBpbiB3aGljaAorICAv
LyBjYXNlIHByaW50aW5nIGl0IGFzIGFuIGludGVnZXIgaXMgdGhlIGRlc2lyZWQgYmVoYXZpb3Iu
ICBJbiBjYXNlCisgIC8vIFQgaXMgbm90IGFuIGVudW0sIHByaW50aW5nIGl0IGFzIGFuIGludGVn
ZXIgaXMgdGhlIGJlc3Qgd2UgY2FuIGRvCisgIC8vIGdpdmVuIHRoYXQgaXQgaGFzIG5vIHVzZXIt
ZGVmaW5lZCBwcmludGVyLgorICBzdGF0aWMgdm9pZCBQcmludFZhbHVlKGNvbnN0IFQmIHZhbHVl
LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBjb25zdCBpbnRlcm5hbDo6QmlnZ2VzdEludCBr
QmlnSW50ID0gdmFsdWU7CisgICAgKm9zIDw8IGtCaWdJbnQ7CisgIH0KK307CisKKyNpZiBHVEVT
VF9IQVNfQUJTTAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlV2l0aG91dEZvcm1h
dHRlcjxULCBrQ29udmVydGlibGVUb1N0cmluZ1ZpZXc+IHsKKyBwdWJsaWM6CisgIC8vIFNpbmNl
IFQgaGFzIG5laXRoZXIgb3BlcmF0b3I8PCBub3IgUHJpbnRUbygpIGJ1dCBjYW4gYmUgaW1wbGlj
aXRseQorICAvLyBjb252ZXJ0ZWQgdG8gYWJzbDo6c3RyaW5nX3ZpZXcsIHdlIHByaW50IGl0IGFz
IGEgYWJzbDo6c3RyaW5nX3ZpZXcuCisgIC8vCisgIC8vIE5vdGU6IHRoZSBpbXBsZW1lbnRhdGlv
biBpcyBmdXJ0aGVyIGJlbG93LCBhcyBpdCBkZXBlbmRzIG9uCisgIC8vIGludGVybmFsOjpQcmlu
dFRvIHN5bWJvbCB3aGljaCBpcyBkZWZpbmVkIGxhdGVyIGluIHRoZSBmaWxlLgorICBzdGF0aWMg
dm9pZCBQcmludFZhbHVlKGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworfTsK
KyNlbmRpZgorCisvLyBQcmludHMgdGhlIGdpdmVuIHZhbHVlIHRvIHRoZSBnaXZlbiBvc3RyZWFt
LiAgSWYgdGhlIHZhbHVlIGlzIGEKKy8vIHByb3RvY29sIG1lc3NhZ2UsIGl0cyBkZWJ1ZyBzdHJp
bmcgaXMgcHJpbnRlZDsgaWYgaXQncyBhbiBlbnVtIG9yCisvLyBvZiBhIHR5cGUgaW1wbGljaXRs
eSBjb252ZXJ0aWJsZSB0byBCaWdnZXN0SW50LCBpdCdzIHByaW50ZWQgYXMgYW4KKy8vIGludGVn
ZXI7IG90aGVyd2lzZSB0aGUgYnl0ZXMgaW4gdGhlIHZhbHVlIGFyZSBwcmludGVkLiAgVGhpcyBp
cworLy8gd2hhdCBVbml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCgpIGRvZXMgd2hlbiBpdCBrbm93
cyBub3RoaW5nIGFib3V0CisvLyB0eXBlIFQgYW5kIFQgaGFzIG5laXRoZXIgPDwgb3BlcmF0b3Ig
bm9yIFByaW50VG8oKS4KKy8vCisvLyBBIHVzZXIgY2FuIG92ZXJyaWRlIHRoaXMgYmVoYXZpb3Ig
Zm9yIGEgY2xhc3MgdHlwZSBGb28gYnkgZGVmaW5pbmcKKy8vIGEgPDwgb3BlcmF0b3IgaW4gdGhl
IG5hbWVzcGFjZSB3aGVyZSBGb28gaXMgZGVmaW5lZC4KKy8vCisvLyBXZSBwdXQgdGhpcyBvcGVy
YXRvciBpbiBuYW1lc3BhY2UgJ2ludGVybmFsMicgaW5zdGVhZCBvZiAnaW50ZXJuYWwnCisvLyB0
byBzaW1wbGlmeSB0aGUgaW1wbGVtZW50YXRpb24sIGFzIG11Y2ggY29kZSBpbiAnaW50ZXJuYWwn
IG5lZWRzIHRvCisvLyB1c2UgPDwgaW4gU1RMLCB3aGljaCB3b3VsZCBjb25mbGljdCB3aXRoIG91
ciBvd24gPDwgd2VyZSBpdCBkZWZpbmVkCisvLyBpbiAnaW50ZXJuYWwnLgorLy8KKy8vIE5vdGUg
dGhhdCB0aGlzIG9wZXJhdG9yPDwgdGFrZXMgYSBnZW5lcmljIHN0ZDo6YmFzaWNfb3N0cmVhbTxD
aGFyLAorLy8gQ2hhclRyYWl0cz4gdHlwZSBpbnN0ZWFkIG9mIHRoZSBtb3JlIHJlc3RyaWN0ZWQg
c3RkOjpvc3RyZWFtLiAgSWYKKy8vIHdlIGRlZmluZSBpdCB0byB0YWtlIGFuIHN0ZDo6b3N0cmVh
bSBpbnN0ZWFkLCB3ZSdsbCBnZXQgYW4KKy8vICJhbWJpZ3VvdXMgb3ZlcmxvYWRzIiBjb21waWxl
ciBlcnJvciB3aGVuIHRyeWluZyB0byBwcmludCBhIHR5cGUKKy8vIEZvbyB0aGF0IHN1cHBvcnRz
IHN0cmVhbWluZyB0byBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwKKy8vIENoYXJUcmFpdHM+LCBh
cyB0aGUgY29tcGlsZXIgY2Fubm90IHRlbGwgd2hldGhlcgorLy8gb3BlcmF0b3I8PChzdGQ6Om9z
dHJlYW0mLCBjb25zdCBUJikgb3IKKy8vIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19zdHJlYW08Q2hh
ciwgQ2hhclRyYWl0cz4sIGNvbnN0IEZvbyYpIGlzIG1vcmUKKy8vIHNwZWNpZmljLgordGVtcGxh
dGUgPHR5cGVuYW1lIENoYXIsIHR5cGVuYW1lIENoYXJUcmFpdHMsIHR5cGVuYW1lIFQ+Cis6OnN0
ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICA6OnN0
ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYgb3MsIGNvbnN0IFQmIHgpIHsKKyAg
VHlwZVdpdGhvdXRGb3JtYXR0ZXI8VCwgKGludGVybmFsOjpJc0FQcm90b2NvbE1lc3NhZ2U8VD46
OnZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBrUHJvdG9idWYKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6IGludGVybmFsOjpJbXBsaWNpdGx5Q29udmVydGli
bGU8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCYsIGludGVy
bmFsOjpCaWdnZXN0SW50Pjo6dmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA/IGtDb252ZXJ0aWJsZVRvSW50ZWdlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDoKKyNpZiBHVEVTVF9IQVNfQUJTTAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludGVybmFsOjpJbXBsaWNpdGx5Q29udmVydGlibGU8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQmLCBhYnNsOjpzdHJpbmdfdmll
dz46OnZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ga0Nv
bnZlcnRpYmxlVG9TdHJpbmdWaWV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDoKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrT3RoZXJUeXBlKT46OlByaW50VmFsdWUoeCwgJm9zKTsKKyAgcmV0dXJuIG9zOworfQorCit9
ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwyCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCisvLyBU
aGlzIG5hbWVzcGFjZSBNVVNUIE5PVCBCRSBORVNURUQgSU4gOjp0ZXN0aW5nLCBvciB0aGUgbmFt
ZSBsb29rLXVwCisvLyBtYWdpYyBuZWVkZWQgZm9yIGltcGxlbWVudGluZyBVbml2ZXJzYWxQcmlu
dGVyIHdvbid0IHdvcmsuCituYW1lc3BhY2UgdGVzdGluZ19pbnRlcm5hbCB7CisKKy8vIFVzZWQg
dG8gcHJpbnQgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBTVEwtc3R5bGUgY29udGFpbmVyIHdoZW4g
dGhlCisvLyB1c2VyIGRvZXNuJ3QgZGVmaW5lIFByaW50VG8oKSBmb3IgaXQuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK3ZvaWQgRGVmYXVsdFByaW50Tm9uQ29udGFpbmVyVG8oY29uc3QgVCYgdmFs
dWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAvLyBXaXRoIHRoZSBmb2xsb3dpbmcgc3RhdGVt
ZW50LCBkdXJpbmcgdW5xdWFsaWZpZWQgbmFtZSBsb29rdXAsCisgIC8vIHRlc3Rpbmc6OmludGVy
bmFsMjo6b3BlcmF0b3I8PCBhcHBlYXJzIGFzIGlmIGl0IHdhcyBkZWNsYXJlZCBpbgorICAvLyB0
aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlIHRoYXQgY29udGFpbnMgYm90aAorICAvLyA6
OnRlc3RpbmdfaW50ZXJuYWwgYW5kIDo6dGVzdGluZzo6aW50ZXJuYWwyLCBpLmUuIHRoZSBnbG9i
YWwKKyAgLy8gbmFtZXNwYWNlLiAgRm9yIG1vcmUgZGV0YWlscywgcmVmZXIgdG8gdGhlIEMrKyBT
dGFuZGFyZCBzZWN0aW9uCisgIC8vIDcuMy40LTEgW25hbWVzcGFjZS51ZGlyXS4gIFRoaXMgYWxs
b3dzIHVzIHRvIGZhbGwgYmFjayBvbnRvCisgIC8vIHRlc3Rpbmc6OmludGVybmFsMjo6b3BlcmF0
b3I8PCBpbiBjYXNlIFQgZG9lc24ndCBjb21lIHdpdGggYSA8PAorICAvLyBvcGVyYXRvci4KKyAg
Ly8KKyAgLy8gV2UgY2Fubm90IHdyaXRlICd1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsMjo6b3Bl
cmF0b3I8PDsnLCB3aGljaAorICAvLyBnY2MgMy4zIGZhaWxzIHRvIGNvbXBpbGUgZHVlIHRvIGEg
Y29tcGlsZXIgYnVnLgorICB1c2luZyBuYW1lc3BhY2UgOjp0ZXN0aW5nOjppbnRlcm5hbDI7ICAv
LyBOT0xJTlQKKworICAvLyBBc3N1bWluZyBUIGlzIGRlZmluZWQgaW4gbmFtZXNwYWNlIGZvbywg
aW4gdGhlIG5leHQgc3RhdGVtZW50LAorICAvLyB0aGUgY29tcGlsZXIgd2lsbCBjb25zaWRlciBh
bGwgb2Y6CisgIC8vCisgIC8vICAgMS4gZm9vOjpvcGVyYXRvcjw8ICh0aGFua3MgdG8gS29lbmln
IGxvb2stdXApLAorICAvLyAgIDIuIDo6b3BlcmF0b3I8PCAoYXMgdGhlIGN1cnJlbnQgbmFtZXNw
YWNlIGlzIGVuY2xvc2VkIGluIDo6KSwKKyAgLy8gICAzLiB0ZXN0aW5nOjppbnRlcm5hbDI6Om9w
ZXJhdG9yPDwgKHRoYW5rcyB0byB0aGUgdXNpbmcgc3RhdGVtZW50IGFib3ZlKS4KKyAgLy8KKyAg
Ly8gVGhlIG9wZXJhdG9yPDwgd2hvc2UgdHlwZSBtYXRjaGVzIFQgYmVzdCB3aWxsIGJlIHBpY2tl
ZC4KKyAgLy8KKyAgLy8gV2UgZGVsaWJlcmF0ZWx5IGFsbG93ICMyIHRvIGJlIGEgY2FuZGlkYXRl
LCBhcyBzb21ldGltZXMgaXQncworICAvLyBpbXBvc3NpYmxlIHRvIGRlZmluZSAjMSAoZS5nLiB3
aGVuIGZvbyBpcyA6OnN0ZCwgZGVmaW5pbmcKKyAgLy8gYW55dGhpbmcgaW4gaXQgaXMgdW5kZWZp
bmVkIGJlaGF2aW9yIHVubGVzcyB5b3UgYXJlIGEgY29tcGlsZXIKKyAgLy8gdmVuZG9yLikuCisg
ICpvcyA8PCB2YWx1ZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmdfaW50ZXJuYWwKKwor
bmFtZXNwYWNlIHRlc3RpbmcgeworbmFtZXNwYWNlIGludGVybmFsIHsKKworLy8gRm9ybWF0Rm9y
Q29tcGFyaXNvbjxUb1ByaW50LCBPdGhlck9wZXJhbmQ+OjpGb3JtYXQodmFsdWUpIGZvcm1hdHMg
YQorLy8gdmFsdWUgb2YgdHlwZSBUb1ByaW50IHRoYXQgaXMgYW4gb3BlcmFuZCBvZiBhIGNvbXBh
cmlzb24gYXNzZXJ0aW9uCisvLyAoZS5nLiBBU1NFUlRfRVEpLiAgT3RoZXJPcGVyYW5kIGlzIHRo
ZSB0eXBlIG9mIHRoZSBvdGhlciBvcGVyYW5kIGluCisvLyB0aGUgY29tcGFyaXNvbiwgYW5kIGlz
IHVzZWQgdG8gaGVscCBkZXRlcm1pbmUgdGhlIGJlc3Qgd2F5IHRvCisvLyBmb3JtYXQgdGhlIHZh
bHVlLiAgSW4gcGFydGljdWxhciwgd2hlbiB0aGUgdmFsdWUgaXMgYSBDIHN0cmluZworLy8gKGNo
YXIgcG9pbnRlcikgYW5kIHRoZSBvdGhlciBvcGVyYW5kIGlzIGFuIFNUTCBzdHJpbmcgb2JqZWN0
LCB3ZQorLy8gd2FudCB0byBmb3JtYXQgdGhlIEMgc3RyaW5nIGFzIGEgc3RyaW5nLCBzaW5jZSB3
ZSBrbm93IGl0IGlzCisvLyBjb21wYXJlZCBieSB2YWx1ZSB3aXRoIHRoZSBzdHJpbmcgb2JqZWN0
LiAgSWYgdGhlIHZhbHVlIGlzIGEgY2hhcgorLy8gcG9pbnRlciBidXQgdGhlIG90aGVyIG9wZXJh
bmQgaXMgbm90IGFuIFNUTCBzdHJpbmcgb2JqZWN0LCB3ZSBkb24ndAorLy8ga25vdyB3aGV0aGVy
IHRoZSBwb2ludGVyIGlzIHN1cHBvc2VkIHRvIHBvaW50IHRvIGEgTlVMLXRlcm1pbmF0ZWQKKy8v
IHN0cmluZywgYW5kIHRodXMgd2FudCB0byBwcmludCBpdCBhcyBhIHBvaW50ZXIgdG8gYmUgc2Fm
ZS4KKy8vCisvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VS
IFBST0dSQU0uCisKKy8vIFRoZSBkZWZhdWx0IGNhc2UuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVG9Q
cmludCwgdHlwZW5hbWUgT3RoZXJPcGVyYW5kPgorY2xhc3MgRm9ybWF0Rm9yQ29tcGFyaXNvbiB7
CisgcHVibGljOgorICBzdGF0aWMgOjpzdGQ6OnN0cmluZyBGb3JtYXQoY29uc3QgVG9QcmludCYg
dmFsdWUpIHsKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHZhbHVlKTsKKyAg
fQorfTsKKworLy8gQXJyYXkuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVG9QcmludCwgc2l6ZV90IE4s
IHR5cGVuYW1lIE90aGVyT3BlcmFuZD4KK2NsYXNzIEZvcm1hdEZvckNvbXBhcmlzb248VG9Qcmlu
dFtOXSwgT3RoZXJPcGVyYW5kPiB7CisgcHVibGljOgorICBzdGF0aWMgOjpzdGQ6OnN0cmluZyBG
b3JtYXQoY29uc3QgVG9QcmludCogdmFsdWUpIHsKKyAgICByZXR1cm4gRm9ybWF0Rm9yQ29tcGFy
aXNvbjxjb25zdCBUb1ByaW50KiwgT3RoZXJPcGVyYW5kPjo6Rm9ybWF0KHZhbHVlKTsKKyAgfQor
fTsKKworLy8gQnkgZGVmYXVsdCwgcHJpbnQgQyBzdHJpbmcgYXMgcG9pbnRlcnMgdG8gYmUgc2Fm
ZSwgYXMgd2UgZG9uJ3Qga25vdworLy8gd2hldGhlciB0aGV5IGFjdHVhbGx5IHBvaW50IHRvIGEg
TlVMLXRlcm1pbmF0ZWQgc3RyaW5nLgorCisjZGVmaW5lIEdURVNUX0lNUExfRk9STUFUX0NfU1RS
SU5HX0FTX1BPSU5URVJfKENoYXJUeXBlKSAgICAgICAgICAgICAgICBcCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBPdGhlck9wZXJhbmQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgIGNsYXNzIEZvcm1hdEZvckNvbXBhcmlzb248Q2hhclR5cGUqLCBPdGhlck9wZXJhbmQ+
IHsgICAgICAgICAgICAgICAgICBcCisgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RhdGljIDo6c3Rk
OjpzdHJpbmcgRm9ybWF0KENoYXJUeXBlKiB2YWx1ZSkgeyAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICByZXR1cm4gOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHN0YXRpY19jYXN0PGNvbnN0
IHZvaWQqPih2YWx1ZSkpOyBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworR1RFU1RfSU1QTF9G
T1JNQVRfQ19TVFJJTkdfQVNfUE9JTlRFUl8oY2hhcik7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NU
UklOR19BU19QT0lOVEVSXyhjb25zdCBjaGFyKTsKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5H
X0FTX1BPSU5URVJfKHdjaGFyX3QpOworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfUE9J
TlRFUl8oY29uc3Qgd2NoYXJfdCk7CisKKyN1bmRlZiBHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklO
R19BU19QT0lOVEVSXworCisvLyBJZiBhIEMgc3RyaW5nIGlzIGNvbXBhcmVkIHdpdGggYW4gU1RM
IHN0cmluZyBvYmplY3QsIHdlIGtub3cgaXQncyBtZWFudAorLy8gdG8gcG9pbnQgdG8gYSBOVUwt
dGVybWluYXRlZCBzdHJpbmcsIGFuZCB0aHVzIGNhbiBwcmludCBpdCBhcyBhIHN0cmluZy4KKwor
I2RlZmluZSBHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKENoYXJUeXBlLCBP
dGhlclN0cmluZ1R5cGUpIFwKKyAgdGVtcGxhdGUgPD4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgY2xhc3MgRm9ybWF0Rm9yQ29t
cGFyaXNvbjxDaGFyVHlwZSosIE90aGVyU3RyaW5nVHlwZT4geyAgICAgICAgICAgICAgIFwKKyAg
IHB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgOjpzdGQ6OnN0cmluZyBGb3JtYXQoQ2hhclR5cGUq
IHZhbHVlKSB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHJldHVybiA6OnRlc3Rpbmc6
OlByaW50VG9TdHJpbmcodmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgfQorCitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdf
KGNoYXIsIDo6c3RkOjpzdHJpbmcpOworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RS
SU5HXyhjb25zdCBjaGFyLCA6OnN0ZDo6c3RyaW5nKTsKKworI2lmIEdURVNUX0hBU19HTE9CQUxf
U1RSSU5HCitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNoYXIsIDo6c3Ry
aW5nKTsKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18oY29uc3QgY2hhciwg
OjpzdHJpbmcpOworI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKK0dURVNU
X0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18od2NoYXJfdCwgOjp3c3RyaW5nKTsKK0dU
RVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18oY29uc3Qgd2NoYXJfdCwgOjp3c3Ry
aW5nKTsKKyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCitHVEVTVF9JTVBMX0ZP
Uk1BVF9DX1NUUklOR19BU19TVFJJTkdfKHdjaGFyX3QsIDo6c3RkOjp3c3RyaW5nKTsKK0dURVNU
X0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18oY29uc3Qgd2NoYXJfdCwgOjpzdGQ6Ondz
dHJpbmcpOworI2VuZGlmCisKKyN1bmRlZiBHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19T
VFJJTkdfCisKKy8vIEZvcm1hdHMgYSBjb21wYXJpc29uIGFzc2VydGlvbiAoZS5nLiBBU1NFUlRf
RVEsIEVYUEVDVF9MVCwgYW5kIGV0YykKKy8vIG9wZXJhbmQgdG8gYmUgdXNlZCBpbiBhIGZhaWx1
cmUgbWVzc2FnZS4gIFRoZSB0eXBlIChidXQgbm90IHZhbHVlKQorLy8gb2YgdGhlIG90aGVyIG9w
ZXJhbmQgbWF5IGFmZmVjdCB0aGUgZm9ybWF0LiAgVGhpcyBhbGxvd3MgdXMgdG8KKy8vIHByaW50
IGEgY2hhciogYXMgYSByYXcgcG9pbnRlciB3aGVuIGl0IGlzIGNvbXBhcmVkIGFnYWluc3QgYW5v
dGhlcgorLy8gY2hhciogb3Igdm9pZCosIGFuZCBwcmludCBpdCBhcyBhIEMgc3RyaW5nIHdoZW4g
aXQgaXMgY29tcGFyZWQKKy8vIGFnYWluc3QgYW4gc3RkOjpzdHJpbmcgb2JqZWN0LCBmb3IgZXhh
bXBsZS4KKy8vCisvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBV
U0VSIFBST0dSQU0uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorc3RkOjpz
dHJpbmcgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKAorICAgIGNvbnN0IFQxJiB2
YWx1ZSwgY29uc3QgVDImIC8qIG90aGVyX29wZXJhbmQgKi8pIHsKKyAgcmV0dXJuIEZvcm1hdEZv
ckNvbXBhcmlzb248VDEsIFQyPjo6Rm9ybWF0KHZhbHVlKTsKK30KKworLy8gVW5pdmVyc2FsUHJp
bnRlcjxUPjo6UHJpbnQodmFsdWUsIG9zdHJlYW1fcHRyKSBwcmludHMgdGhlIGdpdmVuCisvLyB2
YWx1ZSB0byB0aGUgZ2l2ZW4gb3N0cmVhbS4gIFRoZSBjYWxsZXIgbXVzdCBlbnN1cmUgdGhhdAor
Ly8gJ29zdHJlYW1fcHRyJyBpcyBub3QgTlVMTCwgb3IgdGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5l
ZC4KKy8vCisvLyBXZSBkZWZpbmUgVW5pdmVyc2FsUHJpbnRlciBhcyBhIGNsYXNzIHRlbXBsYXRl
IChhcyBvcHBvc2VkIHRvIGEKKy8vIGZ1bmN0aW9uIHRlbXBsYXRlKSwgYXMgd2UgbmVlZCB0byBw
YXJ0aWFsbHkgc3BlY2lhbGl6ZSBpdCBmb3IKKy8vIHJlZmVyZW5jZSB0eXBlcywgd2hpY2ggY2Fu
bm90IGJlIGRvbmUgd2l0aCBmdW5jdGlvbiB0ZW1wbGF0ZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK2NsYXNzIFVuaXZlcnNhbFByaW50ZXI7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9p
ZCBVbml2ZXJzYWxQcmludChjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKKwor
ZW51bSBEZWZhdWx0UHJpbnRlclR5cGUgeworICBrUHJpbnRDb250YWluZXIsCisgIGtQcmludFBv
aW50ZXIsCisgIGtQcmludEZ1bmN0aW9uUG9pbnRlciwKKyAga1ByaW50T3RoZXIsCit9OwordGVt
cGxhdGUgPERlZmF1bHRQcmludGVyVHlwZSB0eXBlPiBzdHJ1Y3QgV3JhcFByaW50ZXJUeXBlIHt9
OworCisvLyBVc2VkIHRvIHByaW50IGFuIFNUTC1zdHlsZSBjb250YWluZXIgd2hlbiB0aGUgdXNl
ciBkb2Vzbid0IGRlZmluZQorLy8gYSBQcmludFRvKCkgZm9yIGl0LgordGVtcGxhdGUgPHR5cGVu
YW1lIEM+Cit2b2lkIERlZmF1bHRQcmludFRvKFdyYXBQcmludGVyVHlwZTxrUHJpbnRDb250YWlu
ZXI+IC8qIGR1bW15ICovLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBDJiBjb250YWluZXIs
IDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBjb25zdCBzaXplX3Qga01heENvdW50ID0gMzI7ICAv
LyBUaGUgbWF4aW11bSBudW1iZXIgb2YgZWxlbWVudHMgdG8gcHJpbnQuCisgICpvcyA8PCAneyc7
CisgIHNpemVfdCBjb3VudCA9IDA7CisgIGZvciAodHlwZW5hbWUgQzo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBjb250YWluZXIuYmVnaW4oKTsKKyAgICAgICBpdCAhPSBjb250YWluZXIuZW5kKCk7ICsr
aXQsICsrY291bnQpIHsKKyAgICBpZiAoY291bnQgPiAwKSB7CisgICAgICAqb3MgPDwgJywnOwor
ICAgICAgaWYgKGNvdW50ID09IGtNYXhDb3VudCkgeyAgLy8gRW5vdWdoIGhhcyBiZWVuIHByaW50
ZWQuCisgICAgICAgICpvcyA8PCAiIC4uLiI7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAg
IH0KKyAgICAqb3MgPDwgJyAnOworICAgIC8vIFdlIGNhbm5vdCBjYWxsIFByaW50VG8oKml0LCBv
cykgaGVyZSBhcyBQcmludFRvKCkgZG9lc24ndAorICAgIC8vIGhhbmRsZSAqaXQgYmVpbmcgYSBu
YXRpdmUgYXJyYXkuCisgICAgaW50ZXJuYWw6OlVuaXZlcnNhbFByaW50KCppdCwgb3MpOworICB9
CisKKyAgaWYgKGNvdW50ID4gMCkgeworICAgICpvcyA8PCAnICc7CisgIH0KKyAgKm9zIDw8ICd9
JzsKK30KKworLy8gVXNlZCB0byBwcmludCBhIHBvaW50ZXIgdGhhdCBpcyBuZWl0aGVyIGEgY2hh
ciBwb2ludGVyIG5vciBhIG1lbWJlcgorLy8gcG9pbnRlciwgd2hlbiB0aGUgdXNlciBkb2Vzbid0
IGRlZmluZSBQcmludFRvKCkgZm9yIGl0LiAgKEEgbWVtYmVyCisvLyB2YXJpYWJsZSBwb2ludGVy
IG9yIG1lbWJlciBmdW5jdGlvbiBwb2ludGVyIGRvZXNuJ3QgcmVhbGx5IHBvaW50IHRvCisvLyBh
IGxvY2F0aW9uIGluIHRoZSBhZGRyZXNzIHNwYWNlLiAgVGhlaXIgcmVwcmVzZW50YXRpb24gaXMK
Ky8vIGltcGxlbWVudGF0aW9uLWRlZmluZWQuICBUaGVyZWZvcmUgdGhleSB3aWxsIGJlIHByaW50
ZWQgYXMgcmF3CisvLyBieXRlcy4pCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgRGVmYXVs
dFByaW50VG8oV3JhcFByaW50ZXJUeXBlPGtQcmludFBvaW50ZXI+IC8qIGR1bW15ICovLAorICAg
ICAgICAgICAgICAgICAgICBUKiBwLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgaWYgKHAgPT0g
TlVMTCkgeworICAgICpvcyA8PCAiTlVMTCI7CisgIH0gZWxzZSB7CisgICAgLy8gVCBpcyBub3Qg
YSBmdW5jdGlvbiB0eXBlLiAgV2UganVzdCBjYWxsIDw8IHRvIHByaW50IHAsCisgICAgLy8gcmVs
eWluZyBvbiBBREwgdG8gcGljayB1cCB1c2VyLWRlZmluZWQgPDwgZm9yIHRoZWlyIHBvaW50ZXIK
KyAgICAvLyB0eXBlcywgaWYgYW55LgorICAgICpvcyA8PCBwOworICB9Cit9Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK3ZvaWQgRGVmYXVsdFByaW50VG8oV3JhcFByaW50ZXJUeXBlPGtQcmludEZ1
bmN0aW9uUG9pbnRlcj4gLyogZHVtbXkgKi8sCisgICAgICAgICAgICAgICAgICAgIFQqIHAsIDo6
c3RkOjpvc3RyZWFtKiBvcykgeworICBpZiAocCA9PSBOVUxMKSB7CisgICAgKm9zIDw8ICJOVUxM
IjsKKyAgfSBlbHNlIHsKKyAgICAvLyBUIGlzIGEgZnVuY3Rpb24gdHlwZSwgc28gJypvcyA8PCBw
JyBkb2Vzbid0IGRvIHdoYXQgd2Ugd2FudAorICAgIC8vIChpdCBqdXN0IHByaW50cyBwIGFzIGJv
b2wpLiAgV2Ugd2FudCB0byBwcmludCBwIGFzIGEgY29uc3QKKyAgICAvLyB2b2lkKi4KKyAgICAq
b3MgPDwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4ocCk7CisgIH0KK30KKworLy8gVXNl
ZCB0byBwcmludCBhIG5vbi1jb250YWluZXIsIG5vbi1wb2ludGVyIHZhbHVlIHdoZW4gdGhlIHVz
ZXIKKy8vIGRvZXNuJ3QgZGVmaW5lIFByaW50VG8oKSBmb3IgaXQuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK3ZvaWQgRGVmYXVsdFByaW50VG8oV3JhcFByaW50ZXJUeXBlPGtQcmludE90aGVyPiAv
KiBkdW1teSAqLywKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpv
c3RyZWFtKiBvcykgeworICA6OnRlc3RpbmdfaW50ZXJuYWw6OkRlZmF1bHRQcmludE5vbkNvbnRh
aW5lclRvKHZhbHVlLCBvcyk7Cit9CisKKy8vIFByaW50cyB0aGUgZ2l2ZW4gdmFsdWUgdXNpbmcg
dGhlIDw8IG9wZXJhdG9yIGlmIGl0IGhhcyBvbmU7CisvLyBvdGhlcndpc2UgcHJpbnRzIHRoZSBi
eXRlcyBpbiBpdC4gIFRoaXMgaXMgd2hhdAorLy8gVW5pdmVyc2FsUHJpbnRlcjxUPjo6UHJpbnQo
KSBkb2VzIHdoZW4gUHJpbnRUbygpIGlzIG5vdCBzcGVjaWFsaXplZAorLy8gb3Igb3ZlcmxvYWRl
ZCBmb3IgdHlwZSBULgorLy8KKy8vIEEgdXNlciBjYW4gb3ZlcnJpZGUgdGhpcyBiZWhhdmlvciBm
b3IgYSBjbGFzcyB0eXBlIEZvbyBieSBkZWZpbmluZworLy8gYW4gb3ZlcmxvYWQgb2YgUHJpbnRU
bygpIGluIHRoZSBuYW1lc3BhY2Ugd2hlcmUgRm9vIGlzIGRlZmluZWQuICBXZQorLy8gZ2l2ZSB0
aGUgdXNlciB0aGlzIG9wdGlvbiBhcyBzb21ldGltZXMgZGVmaW5pbmcgYSA8PCBvcGVyYXRvciBm
b3IKKy8vIEZvbyBpcyBub3QgZGVzaXJhYmxlIChlLmcuIHRoZSBjb2Rpbmcgc3R5bGUgbWF5IHBy
ZXZlbnQgZG9pbmcgaXQsCisvLyBvciB0aGVyZSBpcyBhbHJlYWR5IGEgPDwgb3BlcmF0b3IgYnV0
IGl0IGRvZXNuJ3QgZG8gd2hhdCB0aGUgdXNlcgorLy8gd2FudHMpLgordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Cit2b2lkIFByaW50VG8oY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykg
eworICAvLyBEZWZhdWx0UHJpbnRUbygpIGlzIG92ZXJsb2FkZWQuICBUaGUgdHlwZSBvZiBpdHMg
Zmlyc3QgYXJndW1lbnQKKyAgLy8gZGV0ZXJtaW5lcyB3aGljaCB2ZXJzaW9uIHdpbGwgYmUgcGlj
a2VkLgorICAvLworICAvLyBOb3RlIHRoYXQgd2UgY2hlY2sgZm9yIGNvbnRhaW5lciB0eXBlcyBo
ZXJlLCBwcmlvciB0byB3ZSBjaGVjaworICAvLyBmb3IgcHJvdG9jb2wgbWVzc2FnZSB0eXBlcyBp
biBvdXIgb3BlcmF0b3I8PC4gIFRoZSByYXRpb25hbGUgaXM6CisgIC8vCisgIC8vIEZvciBwcm90
b2NvbCBtZXNzYWdlcywgd2Ugd2FudCB0byBnaXZlIHBlb3BsZSBhIGNoYW5jZSB0bworICAvLyBv
dmVycmlkZSBHb29nbGUgTW9jaydzIGZvcm1hdCBieSBkZWZpbmluZyBhIFByaW50VG8oKSBvcgor
ICAvLyBvcGVyYXRvcjw8LiAgRm9yIFNUTCBjb250YWluZXJzLCBvdGhlciBmb3JtYXRzIGNhbiBi
ZQorICAvLyBpbmNvbXBhdGlibGUgd2l0aCBHb29nbGUgTW9jaydzIGZvcm1hdCBmb3IgdGhlIGNv
bnRhaW5lcgorICAvLyBlbGVtZW50czsgdGhlcmVmb3JlIHdlIGNoZWNrIGZvciBjb250YWluZXIg
dHlwZXMgaGVyZSB0byBlbnN1cmUKKyAgLy8gdGhhdCBvdXIgZm9ybWF0IGlzIHVzZWQuCisgIC8v
CisgIC8vIE5vdGUgdGhhdCBNU1ZDIGFuZCBjbGFuZy1jbCBkbyBhbGxvdyBhbiBpbXBsaWNpdCBj
b252ZXJzaW9uIGZyb20KKyAgLy8gcG9pbnRlci10by1mdW5jdGlvbiB0byBwb2ludGVyLXRvLW9i
amVjdCwgYnV0IGNsYW5nLWNsIHdhcm5zIG9uIGl0LgorICAvLyBTbyBkb24ndCB1c2UgSW1wbGlj
aXRseUNvbnZlcnRpYmxlIGlmIGl0IGNhbiBiZSBoZWxwZWQgc2luY2UgaXQgd2lsbAorICAvLyBj
YXVzZSB0aGlzIHdhcm5pbmcsIGFuZCB1c2UgYSBzZXBhcmF0ZSBvdmVybG9hZCBvZiBEZWZhdWx0
UHJpbnRUbyBmb3IKKyAgLy8gZnVuY3Rpb24gcG9pbnRlcnMgc28gdGhhdCB0aGUgYCpvcyA8PCBw
YCBpbiB0aGUgb2JqZWN0IHBvaW50ZXIgb3ZlcmxvYWQKKyAgLy8gZG9lc24ndCBjYXVzZSB0aGF0
IHdhcm5pbmcgZWl0aGVyLgorICBEZWZhdWx0UHJpbnRUbygKKyAgICAgIFdyYXBQcmludGVyVHlw
ZSA8CisgICAgICAgICAgICAgICAgICAoc2l6ZW9mKElzQ29udGFpbmVyVGVzdDxUPigwKSkgPT0g
c2l6ZW9mKElzQ29udGFpbmVyKSkgJiYKKyAgICAgICAgICAgICAgIUlzUmVjdXJzaXZlQ29udGFp
bmVyPFQ+Ojp2YWx1ZQorICAgICAgICAgID8ga1ByaW50Q29udGFpbmVyCisgICAgICAgICAgOiAh
aXNfcG9pbnRlcjxUPjo6dmFsdWUKKyAgICAgICAgICAgICAgICA/IGtQcmludE90aGVyCisjaWYg
R1RFU1RfTEFOR19DWFgxMQorICAgICAgICAgICAgICAgIDogc3RkOjppc19mdW5jdGlvbjx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWUKKyNlbHNlCisgICAgICAg
ICAgICAgICAgOiAhaW50ZXJuYWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTxULCBjb25zdCB2b2lk
Kj46OnZhbHVlCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICA/IGtQcmludEZ1bmN0aW9u
UG9pbnRlcgorICAgICAgICAgICAgICAgICAgICAgIDoga1ByaW50UG9pbnRlciA+ICgpLAorICAg
ICAgdmFsdWUsIG9zKTsKK30KKworLy8gVGhlIGZvbGxvd2luZyBsaXN0IG9mIFByaW50VG8oKSBv
dmVybG9hZHMgdGVsbHMKKy8vIFVuaXZlcnNhbFByaW50ZXI8VD46OlByaW50KCkgaG93IHRvIHBy
aW50IHN0YW5kYXJkIHR5cGVzIChidWlsdC1pbgorLy8gdHlwZXMsIHN0cmluZ3MsIHBsYWluIGFy
cmF5cywgYW5kIHBvaW50ZXJzKS4KKworLy8gT3ZlcmxvYWRzIGZvciB2YXJpb3VzIGNoYXIgdHlw
ZXMuCitHVEVTVF9BUElfIHZvaWQgUHJpbnRUbyh1bnNpZ25lZCBjaGFyIGMsIDo6c3RkOjpvc3Ry
ZWFtKiBvcyk7CitHVEVTVF9BUElfIHZvaWQgUHJpbnRUbyhzaWduZWQgY2hhciBjLCA6OnN0ZDo6
b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhjaGFyIGMsIDo6c3RkOjpvc3RyZWFt
KiBvcykgeworICAvLyBXaGVuIHByaW50aW5nIGEgcGxhaW4gY2hhciwgd2UgYWx3YXlzIHRyZWF0
IGl0IGFzIHVuc2lnbmVkLiAgVGhpcworICAvLyB3YXksIHRoZSBvdXRwdXQgd29uJ3QgYmUgYWZm
ZWN0ZWQgYnkgd2hldGhlciB0aGUgY29tcGlsZXIgdGhpbmtzCisgIC8vIGNoYXIgaXMgc2lnbmVk
IG9yIG5vdC4KKyAgUHJpbnRUbyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKSwgb3MpOwor
fQorCisvLyBPdmVybG9hZHMgZm9yIG90aGVyIHNpbXBsZSBidWlsdC1pbiB0eXBlcy4KK2lubGlu
ZSB2b2lkIFByaW50VG8oYm9vbCB4LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8ICh4
ID8gInRydWUiIDogImZhbHNlIik7Cit9CisKKy8vIE92ZXJsb2FkIGZvciB3Y2hhcl90IHR5cGUu
CisvLyBQcmludHMgYSB3Y2hhcl90IGFzIGEgc3ltYm9sIGlmIGl0IGlzIHByaW50YWJsZSBvciBh
cyBpdHMgaW50ZXJuYWwKKy8vIGNvZGUgb3RoZXJ3aXNlIGFuZCBhbHNvIGFzIGl0cyBkZWNpbWFs
IGNvZGUgKGV4Y2VwdCBmb3IgTCdcMCcpLgorLy8gVGhlIEwnXDAnIGNoYXIgaXMgcHJpbnRlZCBh
cyAiTCdcXDAnIi4gVGhlIGRlY2ltYWwgY29kZSBpcyBwcmludGVkCisvLyBhcyBzaWduZWQgaW50
ZWdlciB3aGVuIHdjaGFyX3QgaXMgaW1wbGVtZW50ZWQgYnkgdGhlIGNvbXBpbGVyCisvLyBhcyBh
IHNpZ25lZCB0eXBlIGFuZCBpcyBwcmludGVkIGFzIGFuIHVuc2lnbmVkIGludGVnZXIgd2hlbiB3
Y2hhcl90CisvLyBpcyBpbXBsZW1lbnRlZCBhcyBhbiB1bnNpZ25lZCB0eXBlLgorR1RFU1RfQVBJ
XyB2b2lkIFByaW50VG8od2NoYXJfdCB3YywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKKworLy8gT3Zl
cmxvYWRzIGZvciBDIHN0cmluZ3MuCitHVEVTVF9BUElfIHZvaWQgUHJpbnRUbyhjb25zdCBjaGFy
KiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhjaGFyKiBzLCA6
OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUbyhJbXBsaWNpdENhc3RfPGNvbnN0IGNoYXIq
PihzKSwgb3MpOworfQorCisvLyBzaWduZWQvdW5zaWduZWQgY2hhciBpcyBvZnRlbiB1c2VkIGZv
ciByZXByZXNlbnRpbmcgYmluYXJ5IGRhdGEsIHNvCisvLyB3ZSBwcmludCBwb2ludGVycyB0byBp
dCBhcyB2b2lkKiB0byBiZSBzYWZlLgoraW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCBzaWduZWQg
Y2hhciogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGljaXRDYXN0Xzxj
b25zdCB2b2lkKj4ocyksIG9zKTsKK30KK2lubGluZSB2b2lkIFByaW50VG8oc2lnbmVkIGNoYXIq
IHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFRvKEltcGxpY2l0Q2FzdF88Y29uc3Qg
dm9pZCo+KHMpLCBvcyk7Cit9CitpbmxpbmUgdm9pZCBQcmludFRvKGNvbnN0IHVuc2lnbmVkIGNo
YXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFRvKEltcGxpY2l0Q2FzdF88Y29u
c3Qgdm9pZCo+KHMpLCBvcyk7Cit9CitpbmxpbmUgdm9pZCBQcmludFRvKHVuc2lnbmVkIGNoYXIq
IHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFRvKEltcGxpY2l0Q2FzdF88Y29uc3Qg
dm9pZCo+KHMpLCBvcyk7Cit9CisKKy8vIE1TVkMgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gZGVmaW5l
IHdjaGFyX3QgYXMgYSB0eXBlZGVmIG9mIHVuc2lnbmVkCisvLyBzaG9ydC4gIEl0IGRlZmluZXMg
X05BVElWRV9XQ0hBUl9UX0RFRklORUQgd2hlbiB3Y2hhcl90IGlzIGEgbmF0aXZlCisvLyB0eXBl
LiAgV2hlbiB3Y2hhcl90IGlzIGEgdHlwZWRlZiwgZGVmaW5pbmcgYW4gb3ZlcmxvYWQgZm9yIGNv
bnN0CisvLyB3Y2hhcl90KiB3b3VsZCBjYXVzZSB1bnNpZ25lZCBzaG9ydCogYmUgcHJpbnRlZCBh
cyBhIHdpZGUgc3RyaW5nLAorLy8gcG9zc2libHkgY2F1c2luZyBpbnZhbGlkIG1lbW9yeSBhY2Nl
c3Nlcy4KKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfTkFUSVZFX1dDSEFSX1Rf
REVGSU5FRCkKKy8vIE92ZXJsb2FkcyBmb3Igd2lkZSBDIHN0cmluZ3MKK0dURVNUX0FQSV8gdm9p
ZCBQcmludFRvKGNvbnN0IHdjaGFyX3QqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7CitpbmxpbmUg
dm9pZCBQcmludFRvKHdjaGFyX3QqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFRv
KEltcGxpY2l0Q2FzdF88Y29uc3Qgd2NoYXJfdCo+KHMpLCBvcyk7Cit9CisjZW5kaWYKKworLy8g
T3ZlcmxvYWQgZm9yIEMgYXJyYXlzLiAgTXVsdGktZGltZW5zaW9uYWwgYXJyYXlzIGFyZSBwcmlu
dGVkCisvLyBwcm9wZXJseS4KKworLy8gUHJpbnRzIHRoZSBnaXZlbiBudW1iZXIgb2YgZWxlbWVu
dHMgaW4gYW4gYXJyYXksIHdpdGhvdXQgcHJpbnRpbmcKKy8vIHRoZSBjdXJseSBicmFjZXMuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgUHJpbnRSYXdBcnJheVRvKGNvbnN0IFQgYVtdLCBz
aXplX3QgY291bnQsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBVbml2ZXJzYWxQcmludChhWzBd
LCBvcyk7CisgIGZvciAoc2l6ZV90IGkgPSAxOyBpICE9IGNvdW50OyBpKyspIHsKKyAgICAqb3Mg
PDwgIiwgIjsKKyAgICBVbml2ZXJzYWxQcmludChhW2ldLCBvcyk7CisgIH0KK30KKworLy8gT3Zl
cmxvYWRzIGZvciA6OnN0cmluZyBhbmQgOjpzdGQ6OnN0cmluZy4KKyNpZiBHVEVTVF9IQVNfR0xP
QkFMX1NUUklORworR1RFU1RfQVBJXyB2b2lkIFByaW50U3RyaW5nVG8oY29uc3QgOjpzdHJpbmcm
cywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKK2lubGluZSB2b2lkIFByaW50VG8oY29uc3QgOjpzdHJp
bmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFN0cmluZ1RvKHMsIG9zKTsKK30K
KyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKworR1RFU1RfQVBJXyB2b2lkIFBy
aW50U3RyaW5nVG8oY29uc3QgOjpzdGQ6OnN0cmluZyZzLCA6OnN0ZDo6b3N0cmVhbSogb3MpOwor
aW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6c3RyaW5nJiBzLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgUHJpbnRTdHJpbmdUbyhzLCBvcyk7Cit9CisKKy8vIE92ZXJsb2FkcyBmb3Ig
Ojp3c3RyaW5nIGFuZCA6OnN0ZDo6d3N0cmluZy4KKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJ
TkcKK0dURVNUX0FQSV8gdm9pZCBQcmludFdpZGVTdHJpbmdUbyhjb25zdCA6OndzdHJpbmcmcywg
OjpzdGQ6Om9zdHJlYW0qIG9zKTsKK2lubGluZSB2b2lkIFByaW50VG8oY29uc3QgOjp3c3RyaW5n
JiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRXaWRlU3RyaW5nVG8ocywgb3MpOwor
fQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKKworI2lmIEdURVNUX0hBU19T
VERfV1NUUklORworR1RFU1RfQVBJXyB2b2lkIFByaW50V2lkZVN0cmluZ1RvKGNvbnN0IDo6c3Rk
Ojp3c3RyaW5nJnMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRvKGNv
bnN0IDo6c3RkOjp3c3RyaW5nJiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRXaWRl
U3RyaW5nVG8ocywgb3MpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKKwor
I2lmIEdURVNUX0hBU19BQlNMCisvLyBPdmVybG9hZCBmb3IgYWJzbDo6c3RyaW5nX3ZpZXcuCitp
bmxpbmUgdm9pZCBQcmludFRvKGFic2w6OnN0cmluZ192aWV3IHNwLCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgUHJpbnRUbyg6OnN0ZDo6c3RyaW5nKHNwKSwgb3MpOworfQorI2VuZGlmICAvLyBH
VEVTVF9IQVNfQUJTTAorCisjaWYgR1RFU1RfTEFOR19DWFgxMQoraW5saW5lIHZvaWQgUHJpbnRU
byhzdGQ6Om51bGxwdHJfdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7ICpvcyA8PCAiKG51bGxwdHIp
IjsgfQorI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisKKyNpZiBHVEVTVF9IQVNfVFIxX1RV
UExFIHx8IEdURVNUX0hBU19TVERfVFVQTEVfCisvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHByaW50
aW5nIGEgdHVwbGUuICBUIG11c3QgYmUgaW5zdGFudGlhdGVkIHdpdGgKKy8vIGEgdHVwbGUgdHlw
ZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBQcmludFR1cGxlVG8oY29uc3QgVCYgdCwg
OjpzdGQ6Om9zdHJlYW0qIG9zKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRSB8fCBH
VEVTVF9IQVNfU1REX1RVUExFXworCisjaWYgR1RFU1RfSEFTX1RSMV9UVVBMRQorLy8gT3Zlcmxv
YWQgZm9yIDo6c3RkOjp0cjE6OnR1cGxlLiAgTmVlZGVkIGZvciBwcmludGluZyBmdW5jdGlvbiBh
cmd1bWVudHMsCisvLyB3aGljaCBhcmUgcGFja2VkIGFzIHR1cGxlcy4KKworLy8gT3ZlcmxvYWRl
ZCBQcmludFRvKCkgZm9yIHR1cGxlcyBvZiB2YXJpb3VzIGFyaXRpZXMuICBXZSBzdXBwb3J0Cisv
LyB0dXBsZXMgb2YgdXAtdG8gMTAgZmllbGRzLiAgVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlv
biB3b3JrcworLy8gcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRyMTo6dHVwbGUgaXMgaW1wbGVtZW50
ZWQgdXNpbmcgdGhlCisvLyBub24tc3RhbmRhcmQgdmFyaWFkaWMgdGVtcGxhdGUgZmVhdHVyZSBv
ciBub3QuCisKK2lubGluZSB2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8PiYg
dCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUMT4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBs
ZTxUMT4mIHQsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFR1cGxlVG8odCwgb3MpOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgordm9pZCBQcmludFRvKGNv
bnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMj4mIHQsIDo6c3RkOjpvc3RyZWFtKiBvcykgewor
ICBQcmludFR1cGxlVG8odCwgb3MpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMz4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBs
ZTxUMSwgVDIsIFQzPiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0
LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzLCB0eXBlbmFtZSBUND4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxU
MSwgVDIsIFQzLCBUND4mIHQsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFR1cGxlVG8o
dCwgb3MpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Pgordm9pZCBQcmludFRvKGNvbnN0IDo6c3Rk
Ojp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4mIHQsCisgICAgICAgICAgICAgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDUsCisgICAgICAgICAgdHlwZW5hbWUgVDY+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6
OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4mIHQsCisgICAgICAgICAgICAgOjpz
dGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlw
ZW5hbWUgVDUsCisgICAgICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Pgordm9pZCBQcmlu
dFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PiYg
dCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQs
IG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUg
VDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0eXBlbmFtZSBUNiwgdHlw
ZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Pgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4mIHQsCisgICAgICAgICAgICAgOjpz
dGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlw
ZW5hbWUgVDUsCisgICAgICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBU
OCwgdHlwZW5hbWUgVDk+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4mIHQsCisgICAgICAgICAgICAgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDUsCisgICAgICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwg
dHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMD4KK3ZvaWQgUHJpbnRUbygKKyAgICBjb25zdCA6OnN0
ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTA+JiB0
LAorICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFR1cGxlVG8odCwgb3MpOworfQor
I2VuZGlmICAvLyBHVEVTVF9IQVNfVFIxX1RVUExFCisKKyNpZiBHVEVTVF9IQVNfU1REX1RVUExF
XwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFR5cGVzPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3Rk
Ojp0dXBsZTxUeXBlcy4uLj4mIHQsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFR1cGxl
VG8odCwgb3MpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1RVUExFXworCisvLyBPdmVy
bG9hZCBmb3Igc3RkOjpwYWlyLgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4K
K3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6cGFpcjxUMSwgVDI+JiB2YWx1ZSwgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgICpvcyA8PCAnKCc7CisgIC8vIFdlIGNhbm5vdCB1c2UgVW5pdmVyc2Fs
UHJpbnQodmFsdWUuZmlyc3QsIG9zKSBoZXJlLCBhcyBUMSBtYXkgYmUKKyAgLy8gYSByZWZlcmVu
Y2UgdHlwZS4gIFRoZSBzYW1lIGZvciBwcmludGluZyB2YWx1ZS5zZWNvbmQuCisgIFVuaXZlcnNh
bFByaW50ZXI8VDE+OjpQcmludCh2YWx1ZS5maXJzdCwgb3MpOworICAqb3MgPDwgIiwgIjsKKyAg
VW5pdmVyc2FsUHJpbnRlcjxUMj46OlByaW50KHZhbHVlLnNlY29uZCwgb3MpOworICAqb3MgPDwg
JyknOworfQorCisvLyBJbXBsZW1lbnRzIHByaW50aW5nIGEgbm9uLXJlZmVyZW5jZSB0eXBlIFQg
YnkgbGV0dGluZyB0aGUgY29tcGlsZXIKKy8vIHBpY2sgdGhlIHJpZ2h0IG92ZXJsb2FkIG9mIFBy
aW50VG8oKSBmb3IgVC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVW5pdmVyc2FsUHJp
bnRlciB7CisgcHVibGljOgorICAvLyBNU1ZDIHdhcm5zIGFib3V0IGFkZGluZyBjb25zdCB0byBh
IGZ1bmN0aW9uIHR5cGUsIHNvIHdlIHdhbnQgdG8KKyAgLy8gZGlzYWJsZSB0aGUgd2FybmluZy4K
KyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDE4MCkKKworICAvLyBOb3RlOiB3
ZSBkZWxpYmVyYXRlbHkgZG9uJ3QgY2FsbCB0aGlzIFByaW50VG8oKSwgYXMgdGhhdCBuYW1lCisg
IC8vIGNvbmZsaWN0cyB3aXRoIDo6dGVzdGluZzo6aW50ZXJuYWw6OlByaW50VG8gaW4gdGhlIGJv
ZHkgb2YgdGhlCisgIC8vIGZ1bmN0aW9uLgorICBzdGF0aWMgdm9pZCBQcmludChjb25zdCBUJiB2
YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgLy8gQnkgZGVmYXVsdCwgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6UHJpbnRUbygpIGlzIHVzZWQgZm9yIHByaW50aW5nCisgICAgLy8gdGhlIHZh
bHVlLgorICAgIC8vCisgICAgLy8gVGhhbmtzIHRvIEtvZW5pZyBsb29rLXVwLCBpZiBUIGlzIGEg
Y2xhc3MgYW5kIGhhcyBpdHMgb3duCisgICAgLy8gUHJpbnRUbygpIGZ1bmN0aW9uIGRlZmluZWQg
aW4gaXRzIG5hbWVzcGFjZSwgdGhhdCBmdW5jdGlvbiB3aWxsCisgICAgLy8gYmUgdmlzaWJsZSBo
ZXJlLiAgU2luY2UgaXQgaXMgbW9yZSBzcGVjaWZpYyB0aGFuIHRoZSBnZW5lcmljIG9uZXMKKyAg
ICAvLyBpbiA6OnRlc3Rpbmc6OmludGVybmFsLCBpdCB3aWxsIGJlIHBpY2tlZCBieSB0aGUgY29t
cGlsZXIgaW4gdGhlCisgICAgLy8gZm9sbG93aW5nIHN0YXRlbWVudCAtIGV4YWN0bHkgd2hhdCB3
ZSB3YW50LgorICAgIFByaW50VG8odmFsdWUsIG9zKTsKKyAgfQorCisgIEdURVNUX0RJU0FCTEVf
TVNDX1dBUk5JTkdTX1BPUF8oKQorfTsKKworI2lmIEdURVNUX0hBU19BQlNMCisKKy8vIFByaW50
ZXIgZm9yIGFic2w6Om9wdGlvbmFsCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVW5p
dmVyc2FsUHJpbnRlcjw6OmFic2w6Om9wdGlvbmFsPFQ+PiB7CisgcHVibGljOgorICBzdGF0aWMg
dm9pZCBQcmludChjb25zdCA6OmFic2w6Om9wdGlvbmFsPFQ+JiB2YWx1ZSwgOjpzdGQ6Om9zdHJl
YW0qIG9zKSB7CisgICAgKm9zIDw8ICcoJzsKKyAgICBpZiAoIXZhbHVlKSB7CisgICAgICAqb3Mg
PDwgIm51bGxvcHQiOworICAgIH0gZWxzZSB7CisgICAgICBVbml2ZXJzYWxQcmludCgqdmFsdWUs
IG9zKTsKKyAgICB9CisgICAgKm9zIDw8ICcpJzsKKyAgfQorfTsKKworLy8gUHJpbnRlciBmb3Ig
YWJzbDo6dmFyaWFudAorCit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVD4KK2NsYXNzIFVuaXZlcnNh
bFByaW50ZXI8OjphYnNsOjp2YXJpYW50PFQuLi4+PiB7CisgcHVibGljOgorICBzdGF0aWMgdm9p
ZCBQcmludChjb25zdCA6OmFic2w6OnZhcmlhbnQ8VC4uLj4mIHZhbHVlLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgICAqb3MgPDwgJygnOworICAgIGFic2w6OnZpc2l0KFZpc2l0b3J7b3N9LCB2
YWx1ZSk7CisgICAgKm9zIDw8ICcpJzsKKyAgfQorCisgcHJpdmF0ZToKKyAgc3RydWN0IFZpc2l0
b3IgeworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICAgIHZvaWQgb3BlcmF0b3IoKShjb25z
dCBVJiB1KSBjb25zdCB7CisgICAgICAqb3MgPDwgIiciIDw8IEdldFR5cGVOYW1lPFU+KCkgPDwg
Iicgd2l0aCB2YWx1ZSAiOworICAgICAgVW5pdmVyc2FsUHJpbnQodSwgb3MpOworICAgIH0KKyAg
ICA6OnN0ZDo6b3N0cmVhbSogb3M7CisgIH07Cit9OworCisjZW5kaWYgIC8vIEdURVNUX0hBU19B
QlNMCisKKy8vIFVuaXZlcnNhbFByaW50QXJyYXkoYmVnaW4sIGxlbiwgb3MpIHByaW50cyBhbiBh
cnJheSBvZiAnbGVuJworLy8gZWxlbWVudHMsIHN0YXJ0aW5nIGF0IGFkZHJlc3MgJ2JlZ2luJy4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBVbml2ZXJzYWxQcmludEFycmF5KGNvbnN0IFQq
IGJlZ2luLCBzaXplX3QgbGVuLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgaWYgKGxlbiA9PSAw
KSB7CisgICAgKm9zIDw8ICJ7fSI7CisgIH0gZWxzZSB7CisgICAgKm9zIDw8ICJ7ICI7CisgICAg
Y29uc3Qgc2l6ZV90IGtUaHJlc2hvbGQgPSAxODsKKyAgICBjb25zdCBzaXplX3Qga0NodW5rU2l6
ZSA9IDg7CisgICAgLy8gSWYgdGhlIGFycmF5IGhhcyBtb3JlIHRoYW4ga1RocmVzaG9sZCBlbGVt
ZW50cywgd2UnbGwgaGF2ZSB0bworICAgIC8vIG9taXQgc29tZSBkZXRhaWxzIGJ5IHByaW50aW5n
IG9ubHkgdGhlIGZpcnN0IGFuZCB0aGUgbGFzdAorICAgIC8vIGtDaHVua1NpemUgZWxlbWVudHMu
CisgICAgLy8gRklYTUU6IGxldCB0aGUgdXNlciBjb250cm9sIHRoZSB0aHJlc2hvbGQgdXNpbmcg
YSBmbGFnLgorICAgIGlmIChsZW4gPD0ga1RocmVzaG9sZCkgeworICAgICAgUHJpbnRSYXdBcnJh
eVRvKGJlZ2luLCBsZW4sIG9zKTsKKyAgICB9IGVsc2UgeworICAgICAgUHJpbnRSYXdBcnJheVRv
KGJlZ2luLCBrQ2h1bmtTaXplLCBvcyk7CisgICAgICAqb3MgPDwgIiwgLi4uLCAiOworICAgICAg
UHJpbnRSYXdBcnJheVRvKGJlZ2luICsgbGVuIC0ga0NodW5rU2l6ZSwga0NodW5rU2l6ZSwgb3Mp
OworICAgIH0KKyAgICAqb3MgPDwgIiB9IjsKKyAgfQorfQorLy8gVGhpcyBvdmVybG9hZCBwcmlu
dHMgYSAoY29uc3QpIGNoYXIgYXJyYXkgY29tcGFjdGx5LgorR1RFU1RfQVBJXyB2b2lkIFVuaXZl
cnNhbFByaW50QXJyYXkoCisgICAgY29uc3QgY2hhciogYmVnaW4sIHNpemVfdCBsZW4sIDo6c3Rk
Ojpvc3RyZWFtKiBvcyk7CisKKy8vIFRoaXMgb3ZlcmxvYWQgcHJpbnRzIGEgKGNvbnN0KSB3Y2hh
cl90IGFycmF5IGNvbXBhY3RseS4KK0dURVNUX0FQSV8gdm9pZCBVbml2ZXJzYWxQcmludEFycmF5
KAorICAgIGNvbnN0IHdjaGFyX3QqIGJlZ2luLCBzaXplX3QgbGVuLCA6OnN0ZDo6b3N0cmVhbSog
b3MpOworCisvLyBJbXBsZW1lbnRzIHByaW50aW5nIGFuIGFycmF5IHR5cGUgVFtOXS4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KK2NsYXNzIFVuaXZlcnNhbFByaW50ZXI8VFtOXT4g
eworIHB1YmxpYzoKKyAgLy8gUHJpbnRzIHRoZSBnaXZlbiBhcnJheSwgb21pdHRpbmcgc29tZSBl
bGVtZW50cyB3aGVuIHRoZXJlIGFyZSB0b28KKyAgLy8gbWFueS4KKyAgc3RhdGljIHZvaWQgUHJp
bnQoY29uc3QgVCAoJmEpW05dLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBVbml2ZXJzYWxQ
cmludEFycmF5KGEsIE4sIG9zKTsKKyAgfQorfTsKKworLy8gSW1wbGVtZW50cyBwcmludGluZyBh
IHJlZmVyZW5jZSB0eXBlIFQmLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbml2ZXJz
YWxQcmludGVyPFQmPiB7CisgcHVibGljOgorICAvLyBNU1ZDIHdhcm5zIGFib3V0IGFkZGluZyBj
b25zdCB0byBhIGZ1bmN0aW9uIHR5cGUsIHNvIHdlIHdhbnQgdG8KKyAgLy8gZGlzYWJsZSB0aGUg
d2FybmluZy4KKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDE4MCkKKworICBz
dGF0aWMgdm9pZCBQcmludChjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Cisg
ICAgLy8gUHJpbnRzIHRoZSBhZGRyZXNzIG9mIHRoZSB2YWx1ZS4gIFdlIHVzZSByZWludGVycHJl
dF9jYXN0IGhlcmUKKyAgICAvLyBhcyBzdGF0aWNfY2FzdCBkb2Vzbid0IGNvbXBpbGUgd2hlbiBU
IGlzIGEgZnVuY3Rpb24gdHlwZS4KKyAgICAqb3MgPDwgIkAiIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgdm9pZCo+KCZ2YWx1ZSkgPDwgIiAiOworCisgICAgLy8gVGhlbiBwcmludHMgdGhlIHZh
bHVlIGl0c2VsZi4KKyAgICBVbml2ZXJzYWxQcmludCh2YWx1ZSwgb3MpOworICB9CisKKyAgR1RF
U1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCit9OworCisvLyBQcmludHMgYSB2YWx1ZSB0
ZXJzZWx5OiBmb3IgYSByZWZlcmVuY2UgdHlwZSwgdGhlIHJlZmVyZW5jZWQgdmFsdWUKKy8vIChi
dXQgbm90IHRoZSBhZGRyZXNzKSBpcyBwcmludGVkOyBmb3IgYSAoY29uc3QpIGNoYXIgcG9pbnRl
ciwgdGhlCisvLyBOVUwtdGVybWluYXRlZCBzdHJpbmcgKGJ1dCBub3QgdGhlIHBvaW50ZXIpIGlz
IHByaW50ZWQuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVW5pdmVyc2FsVGVyc2VQ
cmludGVyIHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQmIHZhbHVlLCA6
OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBVbml2ZXJzYWxQcmludCh2YWx1ZSwgb3MpOworICB9
Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbml2ZXJzYWxUZXJzZVByaW50ZXI8
VCY+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0
ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBVbml2ZXJzYWxQcmludCh2YWx1ZSwgb3MpOworICB9Cit9
OwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgorY2xhc3MgVW5pdmVyc2FsVGVyc2VQ
cmludGVyPFRbTl0+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQgKCZ2
YWx1ZSlbTl0sIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIFVuaXZlcnNhbFByaW50ZXI8VFtO
XT46OlByaW50KHZhbHVlLCBvcyk7CisgIH0KK307Cit0ZW1wbGF0ZSA8PgorY2xhc3MgVW5pdmVy
c2FsVGVyc2VQcmludGVyPGNvbnN0IGNoYXIqPiB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBQ
cmludChjb25zdCBjaGFyKiBzdHIsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIGlmIChzdHIg
PT0gTlVMTCkgeworICAgICAgKm9zIDw8ICJOVUxMIjsKKyAgICB9IGVsc2UgeworICAgICAgVW5p
dmVyc2FsUHJpbnQoc3RkOjpzdHJpbmcoc3RyKSwgb3MpOworICAgIH0KKyAgfQorfTsKK3RlbXBs
YXRlIDw+CitjbGFzcyBVbml2ZXJzYWxUZXJzZVByaW50ZXI8Y2hhcio+IHsKKyBwdWJsaWM6Cisg
IHN0YXRpYyB2b2lkIFByaW50KGNoYXIqIHN0ciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAg
VW5pdmVyc2FsVGVyc2VQcmludGVyPGNvbnN0IGNoYXIqPjo6UHJpbnQoc3RyLCBvcyk7CisgIH0K
K307CisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKK3RlbXBsYXRlIDw+CitjbGFzcyBVbml2
ZXJzYWxUZXJzZVByaW50ZXI8Y29uc3Qgd2NoYXJfdCo+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2
b2lkIFByaW50KGNvbnN0IHdjaGFyX3QqIHN0ciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAg
aWYgKHN0ciA9PSBOVUxMKSB7CisgICAgICAqb3MgPDwgIk5VTEwiOworICAgIH0gZWxzZSB7Cisg
ICAgICBVbml2ZXJzYWxQcmludCg6OnN0ZDo6d3N0cmluZyhzdHIpLCBvcyk7CisgICAgfQorICB9
Cit9OworI2VuZGlmCisKK3RlbXBsYXRlIDw+CitjbGFzcyBVbml2ZXJzYWxUZXJzZVByaW50ZXI8
d2NoYXJfdCo+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFByaW50KHdjaGFyX3QqIHN0ciwg
OjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVW5pdmVyc2FsVGVyc2VQcmludGVyPGNvbnN0IHdj
aGFyX3QqPjo6UHJpbnQoc3RyLCBvcyk7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
Pgordm9pZCBVbml2ZXJzYWxUZXJzZVByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgVW5pdmVyc2FsVGVyc2VQcmludGVyPFQ+OjpQcmludCh2YWx1ZSwgb3MpOwor
fQorCisvLyBQcmludHMgYSB2YWx1ZSB1c2luZyB0aGUgdHlwZSBpbmZlcnJlZCBieSB0aGUgY29t
cGlsZXIuICBUaGUKKy8vIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIGFuZCBVbml2ZXJzYWxUZXJz
ZVByaW50KCkgaXMgdGhhdCBmb3IgYQorLy8gKGNvbnN0KSBjaGFyIHBvaW50ZXIsIHRoaXMgcHJp
bnRzIGJvdGggdGhlIHBvaW50ZXIgYW5kIHRoZQorLy8gTlVMLXRlcm1pbmF0ZWQgc3RyaW5nLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFByaW50KGNvbnN0IFQmIHZhbHVl
LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgLy8gQSB3b3JrYXJvbmQgZm9yIHRoZSBidWcgaW4g
VkMrKyA3LjEgdGhhdCBwcmV2ZW50cyB1cyBmcm9tIGluc3RhbnRpYXRpbmcKKyAgLy8gVW5pdmVy
c2FsUHJpbnRlciB3aXRoIFQgZGlyZWN0bHkuCisgIHR5cGVkZWYgVCBUMTsKKyAgVW5pdmVyc2Fs
UHJpbnRlcjxUMT46OlByaW50KHZhbHVlLCBvcyk7Cit9CisKK3R5cGVkZWYgOjpzdGQ6OnZlY3Rv
cjwgOjpzdGQ6OnN0cmluZz4gU3RyaW5nczsKKworLy8gVHVwbGVQb2xpY3k8VHVwbGVUPiBtdXN0
IHByb3ZpZGU6CisvLyAtIHR1cGxlX3NpemUKKy8vICAgICBzaXplIG9mIHR1cGxlIFR1cGxlVC4K
Ky8vIC0gZ2V0PHNpemVfdCBJPihjb25zdCBUdXBsZVQmIHQpCisvLyAgICAgc3RhdGljIGZ1bmN0
aW9uIGV4dHJhY3RpbmcgZWxlbWVudCBJIG9mIHR1cGxlIFR1cGxlVC4KKy8vIC0gdHVwbGVfZWxl
bWVudDxzaXplX3QgST46OnR5cGUKKy8vICAgICB0eXBlIG9mIGVsZW1lbnQgSSBvZiB0dXBsZSBU
dXBsZVQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGVUPgorc3RydWN0IFR1cGxlUG9saWN5Owor
CisjaWYgR1RFU1RfSEFTX1RSMV9UVVBMRQordGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlVD4KK3N0
cnVjdCBUdXBsZVBvbGljeSB7CisgIHR5cGVkZWYgVHVwbGVUIFR1cGxlOworICBzdGF0aWMgY29u
c3Qgc2l6ZV90IHR1cGxlX3NpemUgPSA6OnN0ZDo6dHIxOjp0dXBsZV9zaXplPFR1cGxlPjo6dmFs
dWU7CisKKyAgdGVtcGxhdGUgPHNpemVfdCBJPgorICBzdHJ1Y3QgdHVwbGVfZWxlbWVudCA6IDo6
c3RkOjp0cjE6OnR1cGxlX2VsZW1lbnQ8c3RhdGljX2Nhc3Q8aW50PihJKSwgVHVwbGU+IHsKKyAg
fTsKKworICB0ZW1wbGF0ZSA8c2l6ZV90IEk+CisgIHN0YXRpYyB0eXBlbmFtZSBBZGRSZWZlcmVu
Y2U8Y29uc3QgdHlwZW5hbWUgOjpzdGQ6OnRyMTo6dHVwbGVfZWxlbWVudDwKKyAgICAgIHN0YXRp
Y19jYXN0PGludD4oSSksIFR1cGxlPjo6dHlwZT46OnR5cGUKKyAgZ2V0KGNvbnN0IFR1cGxlJiB0
dXBsZSkgeworICAgIHJldHVybiA6OnN0ZDo6dHIxOjpnZXQ8ST4odHVwbGUpOworICB9Cit9Owor
dGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlVD4KK2NvbnN0IHNpemVfdCBUdXBsZVBvbGljeTxUdXBs
ZVQ+Ojp0dXBsZV9zaXplOworI2VuZGlmICAvLyBHVEVTVF9IQVNfVFIxX1RVUExFCisKKyNpZiBH
VEVTVF9IQVNfU1REX1RVUExFXwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFR5cGVzPgorc3RydWN0
IFR1cGxlUG9saWN5PCA6OnN0ZDo6dHVwbGU8VHlwZXMuLi4+ID4geworICB0eXBlZGVmIDo6c3Rk
Ojp0dXBsZTxUeXBlcy4uLj4gVHVwbGU7CisgIHN0YXRpYyBjb25zdCBzaXplX3QgdHVwbGVfc2l6
ZSA9IDo6c3RkOjp0dXBsZV9zaXplPFR1cGxlPjo6dmFsdWU7CisKKyAgdGVtcGxhdGUgPHNpemVf
dCBJPgorICBzdHJ1Y3QgdHVwbGVfZWxlbWVudCA6IDo6c3RkOjp0dXBsZV9lbGVtZW50PEksIFR1
cGxlPiB7fTsKKworICB0ZW1wbGF0ZSA8c2l6ZV90IEk+CisgIHN0YXRpYyBjb25zdCB0eXBlbmFt
ZSA6OnN0ZDo6dHVwbGVfZWxlbWVudDxJLCBUdXBsZT46OnR5cGUmIGdldCgKKyAgICAgIGNvbnN0
IFR1cGxlJiB0dXBsZSkgeworICAgIHJldHVybiA6OnN0ZDo6Z2V0PEk+KHR1cGxlKTsKKyAgfQor
fTsKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBUeXBlcz4KK2NvbnN0IHNpemVfdCBUdXBsZVBvbGlj
eTwgOjpzdGQ6OnR1cGxlPFR5cGVzLi4uPiA+Ojp0dXBsZV9zaXplOworI2VuZGlmICAvLyBHVEVT
VF9IQVNfU1REX1RVUExFXworCisjaWYgR1RFU1RfSEFTX1RSMV9UVVBMRSB8fCBHVEVTVF9IQVNf
U1REX1RVUExFXworLy8gVGhpcyBoZWxwZXIgdGVtcGxhdGUgYWxsb3dzIFByaW50VG8oKSBmb3Ig
dHVwbGVzIGFuZAorLy8gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKCkg
dG8gYmUgZGVmaW5lZCBieQorLy8gaW5kdWN0aW9uIG9uIHRoZSBudW1iZXIgb2YgdHVwbGUgZmll
bGRzLiAgVGhlIGlkZWEgaXMgdGhhdAorLy8gVHVwbGVQcmVmaXhQcmludGVyPE4+OjpQcmludFBy
ZWZpeFRvKHQsIG9zKSBwcmludHMgdGhlIGZpcnN0IE4KKy8vIGZpZWxkcyBpbiB0dXBsZSB0LCBh
bmQgY2FuIGJlIGRlZmluZWQgaW4gdGVybXMgb2YKKy8vIFR1cGxlUHJlZml4UHJpbnRlcjxOIC0g
MT4uCisvLworLy8gVGhlIGluZHVjdGl2ZSBjYXNlLgordGVtcGxhdGUgPHNpemVfdCBOPgorc3Ry
dWN0IFR1cGxlUHJlZml4UHJpbnRlciB7CisgIC8vIFByaW50cyB0aGUgZmlyc3QgTiBmaWVsZHMg
b2YgYSB0dXBsZS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPgorICBzdGF0aWMgdm9pZCBQ
cmludFByZWZpeFRvKGNvbnN0IFR1cGxlJiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBU
dXBsZVByZWZpeFByaW50ZXI8TiAtIDE+OjpQcmludFByZWZpeFRvKHQsIG9zKTsKKyAgICBHVEVT
VF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BVU0hfKCkKKyAgICBpZiAoTiA+IDEpIHsKKyAgICBH
VEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BPUF8oKQorICAgICAgKm9zIDw8ICIsICI7Cisg
ICAgfQorICAgIFVuaXZlcnNhbFByaW50ZXI8CisgICAgICAgIHR5cGVuYW1lIFR1cGxlUG9saWN5
PFR1cGxlPjo6dGVtcGxhdGUgdHVwbGVfZWxlbWVudDxOIC0gMT46OnR5cGU+CisgICAgICAgIDo6
UHJpbnQoVHVwbGVQb2xpY3k8VHVwbGU+Ojp0ZW1wbGF0ZSBnZXQ8TiAtIDE+KHQpLCBvcyk7Cisg
IH0KKworICAvLyBUZXJzZWx5IHByaW50cyB0aGUgZmlyc3QgTiBmaWVsZHMgb2YgYSB0dXBsZSB0
byBhIHN0cmluZyB2ZWN0b3IsCisgIC8vIG9uZSBlbGVtZW50IGZvciBlYWNoIGZpZWxkLgorICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+CisgIHN0YXRpYyB2b2lkIFRlcnNlUHJpbnRQcmVmaXhU
b1N0cmluZ3MoY29uc3QgVHVwbGUmIHQsIFN0cmluZ3MqIHN0cmluZ3MpIHsKKyAgICBUdXBsZVBy
ZWZpeFByaW50ZXI8TiAtIDE+OjpUZXJzZVByaW50UHJlZml4VG9TdHJpbmdzKHQsIHN0cmluZ3Mp
OworICAgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgICAgVW5pdmVyc2FsVGVyc2VQcmludChU
dXBsZVBvbGljeTxUdXBsZT46OnRlbXBsYXRlIGdldDxOIC0gMT4odCksICZzcyk7CisgICAgc3Ry
aW5ncy0+cHVzaF9iYWNrKHNzLnN0cigpKTsKKyAgfQorfTsKKworLy8gQmFzZSBjYXNlLgordGVt
cGxhdGUgPD4KK3N0cnVjdCBUdXBsZVByZWZpeFByaW50ZXI8MD4geworICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVHVwbGU+CisgIHN0YXRpYyB2b2lkIFByaW50UHJlZml4VG8oY29uc3QgVHVwbGUmLCA6
OnN0ZDo6b3N0cmVhbSopIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPgorICBzdGF0
aWMgdm9pZCBUZXJzZVByaW50UHJlZml4VG9TdHJpbmdzKGNvbnN0IFR1cGxlJiwgU3RyaW5ncyop
IHt9Cit9OworCisvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHByaW50aW5nIGEgdHVwbGUuCisvLyBU
dXBsZSBtdXN0IGJlIGVpdGhlciBzdGQ6OnRyMTo6dHVwbGUgb3Igc3RkOjp0dXBsZSB0eXBlLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPgordm9pZCBQcmludFR1cGxlVG8oY29uc3QgVHVwbGUm
IHQsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAqb3MgPDwgIigiOworICBUdXBsZVByZWZpeFBy
aW50ZXI8VHVwbGVQb2xpY3k8VHVwbGU+Ojp0dXBsZV9zaXplPjo6UHJpbnRQcmVmaXhUbyh0LCBv
cyk7CisgICpvcyA8PCAiKSI7Cit9CisKKy8vIFByaW50cyB0aGUgZmllbGRzIG9mIGEgdHVwbGUg
dGVyc2VseSB0byBhIHN0cmluZyB2ZWN0b3IsIG9uZQorLy8gZWxlbWVudCBmb3IgZWFjaCBmaWVs
ZC4gIFNlZSB0aGUgY29tbWVudCBiZWZvcmUKKy8vIFVuaXZlcnNhbFRlcnNlUHJpbnQoKSBmb3Ig
aG93IHdlIGRlZmluZSAidGVyc2VseSIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+CitTdHJp
bmdzIFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncyhjb25zdCBUdXBsZSYg
dmFsdWUpIHsKKyAgU3RyaW5ncyByZXN1bHQ7CisgIFR1cGxlUHJlZml4UHJpbnRlcjxUdXBsZVBv
bGljeTxUdXBsZT46OnR1cGxlX3NpemU+OjoKKyAgICAgIFRlcnNlUHJpbnRQcmVmaXhUb1N0cmlu
Z3ModmFsdWUsICZyZXN1bHQpOworICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmICAvLyBHVEVT
VF9IQVNfVFIxX1RVUExFIHx8IEdURVNUX0hBU19TVERfVFVQTEVfCisKK30gIC8vIG5hbWVzcGFj
ZSBpbnRlcm5hbAorCisjaWYgR1RFU1RfSEFTX0FCU0wKK25hbWVzcGFjZSBpbnRlcm5hbDIgewor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFR5cGVXaXRob3V0Rm9ybWF0dGVyPFQsIGtDb252
ZXJ0aWJsZVRvU3RyaW5nVmlldz46OlByaW50VmFsdWUoCisgICAgY29uc3QgVCYgdmFsdWUsIDo6
c3RkOjpvc3RyZWFtKiBvcykgeworICBpbnRlcm5hbDo6UHJpbnRUbyhhYnNsOjpzdHJpbmdfdmll
dyh2YWx1ZSksIG9zKTsKK30KK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbDIKKyNlbmRpZgorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKzo6c3RkOjpzdHJpbmcgUHJpbnRUb1N0cmluZyhjb25zdCBU
JiB2YWx1ZSkgeworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICBpbnRlcm5hbDo6VW5pdmVy
c2FsVGVyc2VQcmludGVyPFQ+OjpQcmludCh2YWx1ZSwgJnNzKTsKKyAgcmV0dXJuIHNzLnN0cigp
OworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCisvLyBJbmNsdWRlIGFueSBjdXN0b20g
cHJpbnRlciBhZGRlZCBieSB0aGUgbG9jYWwgaW5zdGFsbGF0aW9uLgorLy8gV2UgbXVzdCBpbmNs
dWRlIHRoaXMgaGVhZGVyIGF0IHRoZSBlbmQgdG8gbWFrZSBzdXJlIGl0IGNhbiB1c2UgdGhlCisv
LyBkZWNsYXJhdGlvbnMgZnJvbSB0aGlzIGZpbGUuCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwv
Y3VzdG9tL2d0ZXN0LXByaW50ZXJzLmgiCisKKyNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVT
VF9HVEVTVF9QUklOVEVSU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9ndGVzdC1zcGkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvZ3Rlc3Qtc3BpLmgKaW5kZXggYzQxZGE0ODQ0NzYwM2U5NjVmYjc3MmFiY2EyZjE0
NWVlODJhNjA2Zi4uMWU4OTgzOTM4ZWEyNzkyYzUyNjkwZWFkMjliMDBhYjU4Y2RhYWU5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1zcGku
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXNwaS5o
CkBAIC0yNiwxNiArMjYsMjAgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4p
CisKIC8vCiAvLyBVdGlsaXRpZXMgZm9yIHRlc3RpbmcgR29vZ2xlIFRlc3QgaXRzZWxmIGFuZCBj
b2RlIHRoYXQgdXNlcyBHb29nbGUgVGVzdAogLy8gKGUuZy4gZnJhbWV3b3JrcyBidWlsdCBvbiB0
b3Agb2YgR29vZ2xlIFRlc3QpLgogCisvLyBHT09HTEVURVNUX0NNMDAwNCBETyBOT1QgREVMRVRF
CisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9TUElfSF8KICNkZWZpbmUgR1RF
U1RfSU5DTFVERV9HVEVTVF9HVEVTVF9TUElfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1Nf
UFVTSF8oNDI1MSBcCisvKiBjbGFzcyBBIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBi
ZSB1c2VkIGJ5IGNsaWVudHMgb2YgY2xhc3MgQiAqLykKIAogbmFtZXNwYWNlIHRlc3Rpbmcgewog
CkBAIC05NywxMyArMTAxLDEyIEBAIGNsYXNzIEdURVNUX0FQSV8gU2luZ2xlRmFpbHVyZUNoZWNr
ZXIgewogIHB1YmxpYzoKICAgLy8gVGhlIGNvbnN0cnVjdG9yIHJlbWVtYmVycyB0aGUgYXJndW1l
bnRzLgogICBTaW5nbGVGYWlsdXJlQ2hlY2tlcihjb25zdCBUZXN0UGFydFJlc3VsdEFycmF5KiBy
ZXN1bHRzLAotICAgICAgICAgICAgICAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBl
LAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzdWJzdHIpOworICAgICAgICAg
ICAgICAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlLCBjb25zdCBzdGQ6OnN0cmlu
ZyYgc3Vic3RyKTsKICAgflNpbmdsZUZhaWx1cmVDaGVja2VyKCk7CiAgcHJpdmF0ZToKICAgY29u
c3QgVGVzdFBhcnRSZXN1bHRBcnJheSogY29uc3QgcmVzdWx0c187CiAgIGNvbnN0IFRlc3RQYXJ0
UmVzdWx0OjpUeXBlIHR5cGVfOwotICBjb25zdCBTdHJpbmcgc3Vic3RyXzsKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcgc3Vic3RyXzsKIAogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNp
bmdsZUZhaWx1cmVDaGVja2VyKTsKIH07CkBAIC0xMTIsNiArMTE1LDggQEAgY2xhc3MgR1RFU1Rf
QVBJXyBTaW5nbGVGYWlsdXJlQ2hlY2tlciB7CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAK
K0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQyNTEKKwogLy8gQSBzZXQg
b2YgbWFjcm9zIGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgb3IgY29kZSB0aGF0
J3MgZXhwZWN0ZWQKIC8vIHRvIGdlbmVyYXRlIEdvb2dsZSBUZXN0IGZhdGFsIGZhaWx1cmVzLiAg
SXQgdmVyaWZpZXMgdGhhdCB0aGUgZ2l2ZW4KIC8vIHN0YXRlbWVudCB3aWxsIGNhdXNlIGV4YWN0
bHkgb25lIGZhdGFsIEdvb2dsZSBUZXN0IGZhaWx1cmUgd2l0aCAnc3Vic3RyJwpAQCAtMjIzLDcg
KzIyOCw3IEBAIGNsYXNzIEdURVNUX0FQSV8gU2luZ2xlRmFpbHVyZUNoZWNrZXIgewogICAgICAg
ICAoc3Vic3RyKSk7XAogICAgIHtcCiAgICAgICA6OnRlc3Rpbmc6OlNjb3BlZEZha2VUZXN0UGFy
dFJlc3VsdFJlcG9ydGVyIGd0ZXN0X3JlcG9ydGVyKFwKLSAgICAgICAgICA6OnRlc3Rpbmc6OlNj
b3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpJTlRFUkNFUFRfQUxMX1RIUkVBRFMsXAor
ICAgICAgICAgIDo6dGVzdGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6OklO
VEVSQ0VQVF9BTExfVEhSRUFEUywgXAogICAgICAgICAgICZndGVzdF9mYWlsdXJlcyk7XAogICAg
ICAgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBzdGF0ZW1lbnQ7IH1c
CiAgICAgfVwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvZ3Rlc3QtdGVzdC1wYXJ0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2d0ZXN0LXRlc3QtcGFydC5oCmluZGV4IGY3MTQ3NTkwNjc2MzlmMWVhNGVjMGExMjYzNDdk
ZWMxMjA0ODI0MzkuLjFjN2I4OWUwODc5NmQ5NzMwZjlmOGVlYWU0MDYyMjcxNzdkYmE1MTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVz
dC1wYXJ0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVz
dC10ZXN0LXBhcnQuaApAQCAtMjcsMTYgKzI3LDE4IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAvLwotLy8gQXV0aG9yOiBtaGV1bGVAZ29vZ2xlLmNvbSAoTWFya3VzIEhldWxl
KQotLy8KKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKIAogI2lmbmRlZiBHVEVT
VF9JTkNMVURFX0dURVNUX0dURVNUX1RFU1RfUEFSVF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURF
X0dURVNUX0dURVNUX1RFU1RfUEFSVF9IXwogCiAjaW5jbHVkZSA8aW9zZndkPgogI2luY2x1ZGUg
PHZlY3Rvcj4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oPgotI2lu
Y2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oPgorI2luY2x1ZGUgImd0ZXN0L2lu
dGVybmFsL2d0ZXN0LWludGVybmFsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
c3RyaW5nLmgiCisKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQyNTEgXAorLyog
Y2xhc3MgQSBuZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBieSBjbGllbnRz
IG9mIGNsYXNzIEIgKi8pCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIApAQCAtNjIsNyArNjQsNyBA
QCBjbGFzcyBHVEVTVF9BUElfIFRlc3RQYXJ0UmVzdWx0IHsKICAgICAgICAgICAgICAgICAgaW50
IGFfbGluZV9udW1iZXIsCiAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfbWVzc2FnZSkK
ICAgICAgIDogdHlwZV8oYV90eXBlKSwKLSAgICAgICAgZmlsZV9uYW1lXyhhX2ZpbGVfbmFtZSks
CisgICAgICAgIGZpbGVfbmFtZV8oYV9maWxlX25hbWUgPT0gTlVMTCA/ICIiIDogYV9maWxlX25h
bWUpLAogICAgICAgICBsaW5lX251bWJlcl8oYV9saW5lX251bWJlciksCiAgICAgICAgIHN1bW1h
cnlfKEV4dHJhY3RTdW1tYXJ5KGFfbWVzc2FnZSkpLAogICAgICAgICBtZXNzYWdlXyhhX21lc3Nh
Z2UpIHsKQEAgLTczLDcgKzc1LDkgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0UGFydFJlc3VsdCB7
CiAKICAgLy8gR2V0cyB0aGUgbmFtZSBvZiB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3Qg
cGFydCB0b29rIHBsYWNlLCBvcgogICAvLyBOVUxMIGlmIGl0J3MgdW5rbm93bi4KLSAgY29uc3Qg
Y2hhciogZmlsZV9uYW1lKCkgY29uc3QgeyByZXR1cm4gZmlsZV9uYW1lXy5jX3N0cigpOyB9Cisg
IGNvbnN0IGNoYXIqIGZpbGVfbmFtZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gZmlsZV9uYW1lXy5l
bXB0eSgpID8gTlVMTCA6IGZpbGVfbmFtZV8uY19zdHIoKTsKKyAgfQogCiAgIC8vIEdldHMgdGhl
IGxpbmUgaW4gdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRoZSB0ZXN0IHBhcnQgdG9vayBwbGFjZSwK
ICAgLy8gb3IgLTEgaWYgaXQncyB1bmtub3duLgpAQCAtOTYsMjEgKzEwMCwyMiBAQCBjbGFzcyBH
VEVTVF9BUElfIFRlc3RQYXJ0UmVzdWx0IHsKIAogICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB0
ZXN0IHBhcnQgZmF0YWxseSBmYWlsZWQuCiAgIGJvb2wgZmF0YWxseV9mYWlsZWQoKSBjb25zdCB7
IHJldHVybiB0eXBlXyA9PSBrRmF0YWxGYWlsdXJlOyB9CisKICBwcml2YXRlOgogICBUeXBlIHR5
cGVfOwogCiAgIC8vIEdldHMgdGhlIHN1bW1hcnkgb2YgdGhlIGZhaWx1cmUgbWVzc2FnZSBieSBv
bWl0dGluZyB0aGUgc3RhY2sKICAgLy8gdHJhY2UgaW4gaXQuCi0gIHN0YXRpYyBpbnRlcm5hbDo6
U3RyaW5nIEV4dHJhY3RTdW1tYXJ5KGNvbnN0IGNoYXIqIG1lc3NhZ2UpOworICBzdGF0aWMgc3Rk
OjpzdHJpbmcgRXh0cmFjdFN1bW1hcnkoY29uc3QgY2hhciogbWVzc2FnZSk7CiAKICAgLy8gVGhl
IG5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRoZSB0ZXN0IHBhcnQgdG9vayBwbGFjZSwg
b3IKLSAgLy8gTlVMTCBpZiB0aGUgc291cmNlIGZpbGUgaXMgdW5rbm93bi4KLSAgaW50ZXJuYWw6
OlN0cmluZyBmaWxlX25hbWVfOworICAvLyAiIiBpZiB0aGUgc291cmNlIGZpbGUgaXMgdW5rbm93
bi4KKyAgc3RkOjpzdHJpbmcgZmlsZV9uYW1lXzsKICAgLy8gVGhlIGxpbmUgaW4gdGhlIHNvdXJj
ZSBmaWxlIHdoZXJlIHRoZSB0ZXN0IHBhcnQgdG9vayBwbGFjZSwgb3IgLTEKICAgLy8gaWYgdGhl
IGxpbmUgbnVtYmVyIGlzIHVua25vd24uCiAgIGludCBsaW5lX251bWJlcl87Ci0gIGludGVybmFs
OjpTdHJpbmcgc3VtbWFyeV87ICAvLyBUaGUgdGVzdCBmYWlsdXJlIHN1bW1hcnkuCi0gIGludGVy
bmFsOjpTdHJpbmcgbWVzc2FnZV87ICAvLyBUaGUgdGVzdCBmYWlsdXJlIG1lc3NhZ2UuCisgIHN0
ZDo6c3RyaW5nIHN1bW1hcnlfOyAgLy8gVGhlIHRlc3QgZmFpbHVyZSBzdW1tYXJ5LgorICBzdGQ6
OnN0cmluZyBtZXNzYWdlXzsgIC8vIFRoZSB0ZXN0IGZhaWx1cmUgbWVzc2FnZS4KIH07CiAKIC8v
IFByaW50cyBhIFRlc3RQYXJ0UmVzdWx0IG9iamVjdC4KQEAgLTE0MCw3ICsxNDUsNyBAQCBjbGFz
cyBHVEVTVF9BUElfIFRlc3RQYXJ0UmVzdWx0QXJyYXkgewogfTsKIAogLy8gVGhpcyBpbnRlcmZh
Y2Uga25vd3MgaG93IHRvIHJlcG9ydCBhIHRlc3QgcGFydCByZXN1bHQuCi1jbGFzcyBUZXN0UGFy
dFJlc3VsdFJlcG9ydGVySW50ZXJmYWNlIHsKK2NsYXNzIEdURVNUX0FQSV8gVGVzdFBhcnRSZXN1
bHRSZXBvcnRlckludGVyZmFjZSB7CiAgcHVibGljOgogICB2aXJ0dWFsIH5UZXN0UGFydFJlc3Vs
dFJlcG9ydGVySW50ZXJmYWNlKCkge30KIApAQCAtMTczLDQgKzE3OCw2IEBAIGNsYXNzIEdURVNU
X0FQSV8gSGFzTmV3RmF0YWxGYWlsdXJlSGVscGVyCiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5n
CiAKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQyNTEKKwogI2VuZGlm
ICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1RFU1RfUEFSVF9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10eXBlZC10ZXN0Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXR5cGVkLXRlc3Qu
aAppbmRleCAxZWM4ZWI4ZDMwOTM5OGQ1MmJkNDk2Mzg0Y2Y0NzQ4M2FlMTE1MmVlLi4yOWIwODU5
OTJkZTBlZTRmMzdiNjc2MmZjM2UyMzY0M2NjZWFkNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaApAQCAt
MjYsOCArMjYsOSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKworCisv
LyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCiAKICNpZm5kZWYgR1RFU1RfSU5DTFVE
RV9HVEVTVF9HVEVTVF9UWVBFRF9URVNUX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1Rf
R1RFU1RfVFlQRURfVEVTVF9IXwpAQCAtODIsNiArODMsMjQgQEAgVFlQRURfVEVTVChGb29UZXN0
LCBEb2VzQmxhaCkgewogCiBUWVBFRF9URVNUKEZvb1Rlc3QsIEhhc1Byb3BlcnR5QSkgeyAuLi4g
fQogCisvLyBUWVBFRF9URVNUX0NBU0UgdGFrZXMgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQg
d2hpY2ggYWxsb3dzIHRvIHNwZWNpZnkgYQorLy8gY2xhc3MgdGhhdCBnZW5lcmF0ZXMgY3VzdG9t
IHRlc3QgbmFtZSBzdWZmaXhlcyBiYXNlZCBvbiB0aGUgdHlwZS4gVGhpcyBzaG91bGQKKy8vIGJl
IGEgY2xhc3Mgd2hpY2ggaGFzIGEgc3RhdGljIHRlbXBsYXRlIGZ1bmN0aW9uIEdldE5hbWUoaW50
IGluZGV4KSByZXR1cm5pbmcKKy8vIGEgc3RyaW5nIGZvciBlYWNoIHR5cGUuIFRoZSBwcm92aWRl
ZCBpbnRlZ2VyIGluZGV4IGVxdWFscyB0aGUgaW5kZXggb2YgdGhlCisvLyB0eXBlIGluIHRoZSBw
cm92aWRlZCB0eXBlIGxpc3QuIEluIG1hbnkgY2FzZXMgdGhlIGluZGV4IGNhbiBiZSBpZ25vcmVk
LgorLy8KKy8vIEZvciBleGFtcGxlOgorLy8gICBjbGFzcyBNeVR5cGVOYW1lcyB7CisvLyAgICBw
dWJsaWM6CisvLyAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisvLyAgICAgc3RhdGljIHN0ZDo6
c3RyaW5nIEdldE5hbWUoaW50KSB7CisvLyAgICAgICBpZiAoc3RkOjppc19zYW1lPFQsIGNoYXI+
KCkpIHJldHVybiAiY2hhciI7CisvLyAgICAgICBpZiAoc3RkOjppc19zYW1lPFQsIGludD4oKSkg
cmV0dXJuICJpbnQiOworLy8gICAgICAgaWYgKHN0ZDo6aXNfc2FtZTxULCB1bnNpZ25lZCBpbnQ+
KCkpIHJldHVybiAidW5zaWduZWRfaW50IjsKKy8vICAgICB9CisvLyAgIH07CisvLyAgIFRZUEVE
X1RFU1RfQ0FTRShGb29UZXN0LCBNeVR5cGVzLCBNeVR5cGVOYW1lcyk7CisKICNlbmRpZiAgLy8g
MAogCiAvLyBUeXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGFic3RyYWN0IHRlc3QgcGF0dGVy
bnMgcGFyYW1ldGVyaXplZApAQCAtMTQzLDExICsxNjIsMTYgQEAgSU5TVEFOVElBVEVfVFlQRURf
VEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMpOwogLy8gSWYgdGhlIHR5cGUgbGlzdCBj
b250YWlucyBvbmx5IG9uZSB0eXBlLCB5b3UgY2FuIHdyaXRlIHRoYXQgdHlwZQogLy8gZGlyZWN0
bHkgd2l0aG91dCBUeXBlczwuLi4+OgogLy8gICBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0Vf
UChNeSwgRm9vVGVzdCwgaW50KTsKKy8vCisvLyBTaW1pbGFyIHRvIHRoZSBvcHRpb25hbCBhcmd1
bWVudCBvZiBUWVBFRF9URVNUX0NBU0UgYWJvdmUsCisvLyBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UCB0YWtlcyBhbiBvcHRpb25hbCBmb3VydGggYXJndW1lbnQgd2hpY2ggYWxsb3dzIHRvCisvLyBn
ZW5lcmF0ZSBjdXN0b20gbmFtZXMuCisvLyAgIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9Q
KE15LCBGb29UZXN0LCBNeVR5cGVzLCBNeVR5cGVOYW1lcyk7CiAKICNlbmRpZiAgLy8gMAogCi0j
aW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgotI2luY2x1ZGUgPGd0ZXN0L2lu
dGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0
LXBvcnQuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCIKIAog
Ly8gSW1wbGVtZW50cyB0eXBlZCB0ZXN0cy4KIApAQCAtMTU3LDMzICsxODEsNDcgQEAgSU5TVEFO
VElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMpOwogLy8KIC8vIEV4
cGFuZHMgdG8gdGhlIG5hbWUgb2YgdGhlIHR5cGVkZWYgZm9yIHRoZSB0eXBlIHBhcmFtZXRlcnMg
b2YgdGhlCiAvLyBnaXZlbiB0ZXN0IGNhc2UuCi0jZGVmaW5lIEdURVNUX1RZUEVfUEFSQU1TXyhU
ZXN0Q2FzZU5hbWUpIGd0ZXN0X3R5cGVfcGFyYW1zXyMjVGVzdENhc2VOYW1lIyNfCisjIGRlZmlu
ZSBHVEVTVF9UWVBFX1BBUkFNU18oVGVzdENhc2VOYW1lKSBndGVzdF90eXBlX3BhcmFtc18jI1Rl
c3RDYXNlTmFtZSMjXworCisvLyBFeHBhbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSB0eXBlZGVmIGZv
ciB0aGUgTmFtZUdlbmVyYXRvciwgcmVzcG9uc2libGUgZm9yCisvLyBjcmVhdGluZyB0aGUgc3Vm
Zml4ZXMgb2YgdGhlIG5hbWUuCisjZGVmaW5lIEdURVNUX05BTUVfR0VORVJBVE9SXyhUZXN0Q2Fz
ZU5hbWUpIFwKKyAgZ3Rlc3RfdHlwZV9wYXJhbXNfIyNUZXN0Q2FzZU5hbWUjI19OYW1lR2VuZXJh
dG9yCiAKIC8vIFRoZSAnVHlwZXMnIHRlbXBsYXRlIGFyZ3VtZW50IGJlbG93IG11c3QgaGF2ZSBz
cGFjZXMgYXJvdW5kIGl0CiAvLyBzaW5jZSBzb21lIGNvbXBpbGVycyBtYXkgY2hva2Ugb24gJz4+
JyB3aGVuIHBhc3NpbmcgYSB0ZW1wbGF0ZQogLy8gaW5zdGFuY2UgKGUuZy4gVHlwZXM8aW50PikK
LSNkZWZpbmUgVFlQRURfVEVTVF9DQVNFKENhc2VOYW1lLCBUeXBlcykgXAotICB0eXBlZGVmIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlR5cGVMaXN0PCBUeXBlcyA+Ojp0eXBlIFwKLSAgICAgIEdURVNU
X1RZUEVfUEFSQU1TXyhDYXNlTmFtZSkKLQotI2RlZmluZSBUWVBFRF9URVNUKENhc2VOYW1lLCBU
ZXN0TmFtZSkgXAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgZ3Rlc3RfVHlwZVBhcmFtXz4gXAotICBj
bGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVfKENhc2VOYW1lLCBUZXN0TmFtZSkgXAotICAgICAg
OiBwdWJsaWMgQ2FzZU5hbWU8Z3Rlc3RfVHlwZVBhcmFtXz4geyBcCi0gICBwcml2YXRlOiBcCi0g
ICAgdHlwZWRlZiBDYXNlTmFtZTxndGVzdF9UeXBlUGFyYW1fPiBUZXN0Rml4dHVyZTsgXAotICAg
IHR5cGVkZWYgZ3Rlc3RfVHlwZVBhcmFtXyBUeXBlUGFyYW07IFwKLSAgICB2aXJ0dWFsIHZvaWQg
VGVzdEJvZHkoKTsgXAotICB9OyBcCi0gIGJvb2wgZ3Rlc3RfIyNDYXNlTmFtZSMjXyMjVGVzdE5h
bWUjI19yZWdpc3RlcmVkXyA9IFwKLSAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlR5cGVQYXJh
bWV0ZXJpemVkVGVzdDwgXAotICAgICAgICAgIENhc2VOYW1lLCBcCi0gICAgICAgICAgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6VGVtcGxhdGVTZWw8IFwKLSAgICAgICAgICAgICAgR1RFU1RfVEVTVF9D
TEFTU19OQU1FXyhDYXNlTmFtZSwgVGVzdE5hbWUpPiwgXAotICAgICAgICAgIEdURVNUX1RZUEVf
UEFSQU1TXyhDYXNlTmFtZSk+OjpSZWdpc3RlcihcCi0gICAgICAgICAgICAgICIiLCAjQ2FzZU5h
bWUsICNUZXN0TmFtZSwgMCk7IFwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIGd0ZXN0X1R5cGVQYXJh
bV8+IFwKLSAgdm9pZCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKENhc2VOYW1lLCBUZXN0TmFtZSk8
Z3Rlc3RfVHlwZVBhcmFtXz46OlRlc3RCb2R5KCkKKyMgZGVmaW5lIFRZUEVEX1RFU1RfQ0FTRShD
YXNlTmFtZSwgVHlwZXMsIC4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgdHlw
ZWRlZiA6OnRlc3Rpbmc6OmludGVybmFsOjpUeXBlTGlzdDwgVHlwZXMgPjo6dHlwZSBHVEVTVF9U
WVBFX1BBUkFNU18oIFwKKyAgICAgIENhc2VOYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6
OmludGVybmFsOjpOYW1lR2VuZXJhdG9yU2VsZWN0b3I8X19WQV9BUkdTX18+Ojp0eXBlICAgIFwK
KyAgICAgIEdURVNUX05BTUVfR0VORVJBVE9SXyhDYXNlTmFtZSkKKworIyBkZWZpbmUgVFlQRURf
VEVTVChDYXNlTmFtZSwgVGVzdE5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgZ3Rlc3RfVHlwZVBhcmFtXz4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBjbGFzcyBHVEVTVF9URVNUX0NMQVNT
X05BTUVfKENhc2VOYW1lLCBUZXN0TmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgOiBwdWJsaWMgQ2FzZU5hbWU8Z3Rlc3RfVHlwZVBhcmFtXz4geyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgcHJpdmF0ZTogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHR5cGVk
ZWYgQ2FzZU5hbWU8Z3Rlc3RfVHlwZVBhcmFtXz4gVGVzdEZpeHR1cmU7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIHR5cGVkZWYgZ3Rlc3RfVHlwZVBhcmFtXyBUeXBlUGFyYW07ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZpcnR1YWwgdm9pZCBU
ZXN0Qm9keSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBib29sIGd0ZXN0XyMjQ2FzZU5hbWUjI18j
I1Rlc3ROYW1lIyNfcmVnaXN0ZXJlZF8gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gPSAgXAorICAg
ICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZVBhcmFtZXRlcml6ZWRUZXN0PCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIENhc2VOYW1lLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlRlbXBsYXRlU2VsPEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8oQ2Fz
ZU5hbWUsICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGVzdE5hbWUpPiwgXAorICAgICAgICAgIEdURVNUX1RZUEVf
UEFSQU1TXyggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgICBDYXNlTmFtZSk+OjpSZWdpc3RlcigiIiwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpDb2RlTG9jYXRpb24oICAgICAgICAgXAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKSwgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjQ2Fz
ZU5hbWUsICNUZXN0TmFtZSwgMCwgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpHZW5lcmF0ZU5hbWVzPCAg
ICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfTkFN
RV9HRU5FUkFUT1JfKENhc2VOYW1lKSwgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR1RFU1RfVFlQRV9QQVJBTVNfKENhc2VOYW1lKT4oKSk7ICAgICAgXAor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgZ3Rlc3RfVHlwZVBhcmFtXz4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICB2b2lkIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8oQ2Fz
ZU5hbWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGVzdE5hbWUpPGd0ZXN0X1R5cGVQYXJhbV8+OjpUZXN0Qm9k
eSgpCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QKIApAQCAtMTk2LDMxICsyMzQs
MzEgQEAgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMp
OwogLy8gRXhwYW5kcyB0byB0aGUgbmFtZXNwYWNlIG5hbWUgdGhhdCB0aGUgdHlwZS1wYXJhbWV0
ZXJpemVkIHRlc3RzIGZvcgogLy8gdGhlIGdpdmVuIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IGNh
c2UgYXJlIGRlZmluZWQgaW4uICBUaGUgZXhhY3QKIC8vIG5hbWUgb2YgdGhlIG5hbWVzcGFjZSBp
cyBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4KLSNkZWZpbmUgR1RFU1RfQ0FTRV9O
QU1FU1BBQ0VfKFRlc3RDYXNlTmFtZSkgXAorIyBkZWZpbmUgR1RFU1RfQ0FTRV9OQU1FU1BBQ0Vf
KFRlc3RDYXNlTmFtZSkgXAogICBndGVzdF9jYXNlXyMjVGVzdENhc2VOYW1lIyNfCiAKIC8vIElO
VEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCiAvLwogLy8g
RXhwYW5kcyB0byB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgdXNlZCB0byByZW1lbWJlciB0aGUg
bmFtZXMgb2YKIC8vIHRoZSBkZWZpbmVkIHRlc3RzIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UuCi0j
ZGVmaW5lIEdURVNUX1RZUEVEX1RFU1RfQ0FTRV9QX1NUQVRFXyhUZXN0Q2FzZU5hbWUpIFwKKyMg
ZGVmaW5lIEdURVNUX1RZUEVEX1RFU1RfQ0FTRV9QX1NUQVRFXyhUZXN0Q2FzZU5hbWUpIFwKICAg
Z3Rlc3RfdHlwZWRfdGVzdF9jYXNlX3Bfc3RhdGVfIyNUZXN0Q2FzZU5hbWUjI18KIAogLy8gSU5U
RVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERSBESVJFQ1RMWS4K
IC8vCiAvLyBFeHBhbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSB1c2VkIHRvIHJlbWVt
YmVyIHRoZSBuYW1lcyBvZgogLy8gdGhlIHJlZ2lzdGVyZWQgdGVzdHMgaW4gdGhlIGdpdmVuIHRl
c3QgY2FzZS4KLSNkZWZpbmUgR1RFU1RfUkVHSVNURVJFRF9URVNUX05BTUVTXyhUZXN0Q2FzZU5h
bWUpIFwKKyMgZGVmaW5lIEdURVNUX1JFR0lTVEVSRURfVEVTVF9OQU1FU18oVGVzdENhc2VOYW1l
KSBcCiAgIGd0ZXN0X3JlZ2lzdGVyZWRfdGVzdF9uYW1lc18jI1Rlc3RDYXNlTmFtZSMjXwogCiAv
LyBUaGUgdmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IG1h
Y3JvcyBhcmUKIC8vIHN0YXRpYyBhcyB0eXBpY2FsbHkgdGhlc2UgbWFjcm9zIGFyZSB1c2VkIGlu
IGEgLmggZmlsZSB0aGF0IGNhbiBiZQogLy8gI2luY2x1ZGVkIGluIG11bHRpcGxlIHRyYW5zbGF0
aW9uIHVuaXRzIGxpbmtlZCB0b2dldGhlci4KLSNkZWZpbmUgVFlQRURfVEVTVF9DQVNFX1AoQ2Fz
ZU5hbWUpIFwKKyMgZGVmaW5lIFRZUEVEX1RFU1RfQ0FTRV9QKENhc2VOYW1lKSBcCiAgIHN0YXRp
YyA6OnRlc3Rpbmc6OmludGVybmFsOjpUeXBlZFRlc3RDYXNlUFN0YXRlIFwKICAgICAgIEdURVNU
X1RZUEVEX1RFU1RfQ0FTRV9QX1NUQVRFXyhDYXNlTmFtZSkKIAotI2RlZmluZSBUWVBFRF9URVNU
X1AoQ2FzZU5hbWUsIFRlc3ROYW1lKSBcCisjIGRlZmluZSBUWVBFRF9URVNUX1AoQ2FzZU5hbWUs
IFRlc3ROYW1lKSBcCiAgIG5hbWVzcGFjZSBHVEVTVF9DQVNFX05BTUVTUEFDRV8oQ2FzZU5hbWUp
IHsgXAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgZ3Rlc3RfVHlwZVBhcmFtXz4gXAogICBjbGFzcyBU
ZXN0TmFtZSA6IHB1YmxpYyBDYXNlTmFtZTxndGVzdF9UeXBlUGFyYW1fPiB7IFwKQEAgLTIyOSwz
MCArMjY3LDM4IEBAIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBN
eVR5cGVzKTsKICAgICB0eXBlZGVmIGd0ZXN0X1R5cGVQYXJhbV8gVHlwZVBhcmFtOyBcCiAgICAg
dmlydHVhbCB2b2lkIFRlc3RCb2R5KCk7IFwKICAgfTsgXAotICBzdGF0aWMgYm9vbCBndGVzdF8j
I1Rlc3ROYW1lIyNfZGVmaW5lZF8gPSBcCisgIHN0YXRpYyBib29sIGd0ZXN0XyMjVGVzdE5hbWUj
I19kZWZpbmVkXyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9IFwKICAgICAgIEdURVNUX1RZUEVE
X1RFU1RfQ0FTRV9QX1NUQVRFXyhDYXNlTmFtZSkuQWRkVGVzdE5hbWUoXAogICAgICAgICAgIF9f
RklMRV9fLCBfX0xJTkVfXywgI0Nhc2VOYW1lLCAjVGVzdE5hbWUpOyBcCiAgIH0gXAogICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgZ3Rlc3RfVHlwZVBhcmFtXz4gXAogICB2b2lkIEdURVNUX0NBU0VfTkFN
RVNQQUNFXyhDYXNlTmFtZSk6OlRlc3ROYW1lPGd0ZXN0X1R5cGVQYXJhbV8+OjpUZXN0Qm9keSgp
CiAKLSNkZWZpbmUgUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoQ2FzZU5hbWUsIC4uLikgXAor
IyBkZWZpbmUgUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoQ2FzZU5hbWUsIC4uLikgXAogICBu
YW1lc3BhY2UgR1RFU1RfQ0FTRV9OQU1FU1BBQ0VfKENhc2VOYW1lKSB7IFwKICAgdHlwZWRlZiA6
OnRlc3Rpbmc6OmludGVybmFsOjpUZW1wbGF0ZXM8X19WQV9BUkdTX18+Ojp0eXBlIGd0ZXN0X0Fs
bFRlc3RzXzsgXAogICB9IFwKLSAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEdURVNUX1JFR0lT
VEVSRURfVEVTVF9OQU1FU18oQ2FzZU5hbWUpID0gXAotICAgICAgR1RFU1RfVFlQRURfVEVTVF9D
QVNFX1BfU1RBVEVfKENhc2VOYW1lKS5WZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVzKFwKLSAgICAg
ICAgICBfX0ZJTEVfXywgX19MSU5FX18sICNfX1ZBX0FSR1NfXykKKyAgc3RhdGljIGNvbnN0IGNo
YXIqIGNvbnN0IEdURVNUX1JFR0lTVEVSRURfVEVTVF9OQU1FU18oQ2FzZU5hbWUpIFwKKyAgICAg
IEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gXAorICAgICAgICAgIEdURVNUX1RZUEVEX1RFU1Rf
Q0FTRV9QX1NUQVRFXyhDYXNlTmFtZSkuVmVyaWZ5UmVnaXN0ZXJlZFRlc3ROYW1lcyggXAorICAg
ICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sICNfX1ZBX0FSR1NfXykKIAogLy8gVGhlICdU
eXBlcycgdGVtcGxhdGUgYXJndW1lbnQgYmVsb3cgbXVzdCBoYXZlIHNwYWNlcyBhcm91bmQgaXQK
IC8vIHNpbmNlIHNvbWUgY29tcGlsZXJzIG1heSBjaG9rZSBvbiAnPj4nIHdoZW4gcGFzc2luZyBh
IHRlbXBsYXRlCiAvLyBpbnN0YW5jZSAoZS5nLiBUeXBlczxpbnQ+KQotI2RlZmluZSBJTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChQcmVmaXgsIENhc2VOYW1lLCBUeXBlcykgXAotICBib29s
IGd0ZXN0XyMjUHJlZml4IyNfIyNDYXNlTmFtZSA9IFwKLSAgICAgIDo6dGVzdGluZzo6aW50ZXJu
YWw6OlR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2U8Q2FzZU5hbWUsIFwKLSAgICAgICAgICBHVEVT
VF9DQVNFX05BTUVTUEFDRV8oQ2FzZU5hbWUpOjpndGVzdF9BbGxUZXN0c18sIFwKLSAgICAgICAg
ICA6OnRlc3Rpbmc6OmludGVybmFsOjpUeXBlTGlzdDwgVHlwZXMgPjo6dHlwZT46OlJlZ2lzdGVy
KFwKLSAgICAgICAgICAgICAgI1ByZWZpeCwgI0Nhc2VOYW1lLCBHVEVTVF9SRUdJU1RFUkVEX1RF
U1RfTkFNRVNfKENhc2VOYW1lKSkKKyMgZGVmaW5lIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FT
RV9QKFByZWZpeCwgQ2FzZU5hbWUsIFR5cGVzLCAuLi4pICAgICAgXAorICBib29sIGd0ZXN0XyMj
UHJlZml4IyNfIyNDYXNlTmFtZSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9ICAgICAgICAgICAg
ICBcCisgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNl
PCAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBDYXNlTmFtZSwgR1RFU1RfQ0FTRV9O
QU1FU1BBQ0VfKENhc2VOYW1lKTo6Z3Rlc3RfQWxsVGVzdHNfLCAgICAgXAorICAgICAgICAgIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlR5cGVMaXN0PCBUeXBlcyA+Ojp0eXBlPjo6ICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgUmVnaXN0ZXIoI1ByZWZpeCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6
OmludGVybmFsOjpDb2RlTG9jYXRpb24oX19GSUxFX18sIF9fTElORV9fKSwgXAorICAgICAgICAg
ICAgICAgICAgICZHVEVTVF9UWVBFRF9URVNUX0NBU0VfUF9TVEFURV8oQ2FzZU5hbWUpLCAjQ2Fz
ZU5hbWUsICBcCisgICAgICAgICAgICAgICAgICAgR1RFU1RfUkVHSVNURVJFRF9URVNUX05BTUVT
XyhDYXNlTmFtZSksICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICA6OnRlc3Rp
bmc6OmludGVybmFsOjpHZW5lcmF0ZU5hbWVzPCAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpOYW1lR2VuZXJhdG9yU2VsZWN0
b3I8ICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1ZBX0FSR1NfXz46OnR5
cGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZUxpc3Q8IFR5cGVzID46OnR5cGU+KCkpCiAKICNlbmRp
ZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgKaW5kZXggOTIxZmFkMTFmY2M4ZjI0YzBkZDIyMzk0YTQ4
NjdhYjI0YjZlYTBjMy4uMmJlOGIxMTJjNjM3YjEwZGFjZmQwNjlmYjk3MWZlNjg2NmE4ZDg3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaApAQCAt
MjYsMTAgKzI2LDkgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKwogLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8v
Ci0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBU
aGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3Qp
CiAvLwogLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVzIHRoZSBwdWJsaWMgQVBJIGZvciBHb29n
bGUgVGVzdC4gIEl0IHNob3VsZCBiZQogLy8gaW5jbHVkZWQgYnkgYW55IHRlc3QgcHJvZ3JhbSB0
aGF0IHVzZXMgR29vZ2xlIFRlc3QuCkBAIC00OCwzOCArNDcsNTQgQEAKIC8vIHJlZ2lzdHJhdGlv
biBmcm9tIEJhcnRoZWxlbXkgRGFnZW5haXMnIChiYXJ0aGVsZW15QHByb2xvZ2lxdWUuY29tKQog
Ly8gZWFzeVVuaXQgZnJhbWV3b3JrLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVM
RVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9IXwogI2RlZmluZSBHVEVT
VF9JTkNMVURFX0dURVNUX0dURVNUX0hfCiAKICNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8
b3N0cmVhbT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9n
dGVzdC1pbnRlcm5hbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5o
PgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9n
dGVzdC1tZXNzYWdlLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oPgotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0X3Byb2QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC10ZXN0LXBh
cnQuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC10eXBlZC10ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9n
dGVzdC1zdHJpbmcuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgiCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXBhcmFt
LXRlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1wcmludGVycy5oIgorI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0X3Byb2QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC10ZXN0LXBhcnQuaCIKKyNp
bmNsdWRlICJndGVzdC9ndGVzdC10eXBlZC10ZXN0LmgiCisKK0dURVNUX0RJU0FCTEVfTVNDX1dB
Uk5JTkdTX1BVU0hfKDQyNTEgXAorLyogY2xhc3MgQSBuZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZh
Y2UgdG8gYmUgdXNlZCBieSBjbGllbnRzIG9mIGNsYXNzIEIgKi8pCiAKIC8vIERlcGVuZGluZyBv
biB0aGUgcGxhdGZvcm0sIGRpZmZlcmVudCBzdHJpbmcgY2xhc3NlcyBhcmUgYXZhaWxhYmxlLgog
Ly8gT24gTGludXgsIGluIGFkZGl0aW9uIHRvIDo6c3RkOjpzdHJpbmcsIEdvb2dsZSBhbHNvIG1h
a2VzIHVzZSBvZgogLy8gY2xhc3MgOjpzdHJpbmcsIHdoaWNoIGhhcyB0aGUgc2FtZSBpbnRlcmZh
Y2UgYXMgOjpzdGQ6OnN0cmluZywgYnV0CiAvLyBoYXMgYSBkaWZmZXJlbnQgaW1wbGVtZW50YXRp
b24uCiAvLwotLy8gVGhlIHVzZXIgY2FuIGRlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORyB0
byAxIHRvIGluZGljYXRlIHRoYXQKKy8vIFlvdSBjYW4gZGVmaW5lIEdURVNUX0hBU19HTE9CQUxf
U1RSSU5HIHRvIDEgdG8gaW5kaWNhdGUgdGhhdAogLy8gOjpzdHJpbmcgaXMgYXZhaWxhYmxlIEFO
RCBpcyBhIGRpc3RpbmN0IHR5cGUgdG8gOjpzdGQ6OnN0cmluZywgb3IKIC8vIGRlZmluZSBpdCB0
byAwIHRvIGluZGljYXRlIG90aGVyd2lzZS4KIC8vCi0vLyBJZiB0aGUgdXNlcidzIDo6c3RkOjpz
dHJpbmcgYW5kIDo6c3RyaW5nIGFyZSB0aGUgc2FtZSBjbGFzcyBkdWUgdG8KLS8vIGFsaWFzaW5n
LCBoZSBzaG91bGQgZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HIHRvIDAuCisvLyBJZiA6
OnN0ZDo6c3RyaW5nIGFuZCA6OnN0cmluZyBhcmUgdGhlIHNhbWUgY2xhc3Mgb24geW91ciBwbGF0
Zm9ybQorLy8gZHVlIHRvIGFsaWFzaW5nLCB5b3Ugc2hvdWxkIGRlZmluZSBHVEVTVF9IQVNfR0xP
QkFMX1NUUklORyB0byAwLgogLy8KLS8vIElmIHRoZSB1c2VyIGRvZXNuJ3QgZGVmaW5lIEdURVNU
X0hBU19HTE9CQUxfU1RSSU5HLCBpdCBpcyBkZWZpbmVkCisvLyBJZiB5b3UgZG8gbm90IGRlZmlu
ZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORywgaXQgaXMgZGVmaW5lZAogLy8gaGV1cmlzdGljYWxs
eS4KIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCisvLyBTaWxlbmNlIEM0MTAwICh1bnJlZmVyZW5j
ZWQgZm9ybWFsIHBhcmFtZXRlcikgYW5kIDQ4MDUKKy8vIHVuc2FmZSBtaXggb2YgdHlwZSAnY29u
c3QgaW50JyBhbmQgdHlwZSAnY29uc3QgYm9vbCcKKyNpZmRlZiBfTVNDX1ZFUgorIyBwcmFnbWEg
d2FybmluZyhwdXNoKQorIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ4MDUpCisjIHByYWdtYSB3
YXJuaW5nKGRpc2FibGU6NDEwMCkKKyNlbmRpZgorCisKIC8vIERlY2xhcmVzIHRoZSBmbGFncy4K
IAogLy8gVGhpcyBmbGFnIHRlbXBvcmFyeSBlbmFibGVzIHRoZSBkaXNhYmxlZCB0ZXN0cy4KQEAg
LTExMyw2ICsxMjgsOSBAQCBHVEVTVF9ERUNMQVJFX3N0cmluZ18ob3V0cHV0KTsKIC8vIHRlc3Qu
CiBHVEVTVF9ERUNMQVJFX2Jvb2xfKHByaW50X3RpbWUpOwogCisvLyBUaGlzIGZsYWdzIGNvbnRy
b2wgd2hldGhlciBHb29nbGUgVGVzdCBwcmludHMgVVRGOCBjaGFyYWN0ZXJzIGFzIHRleHQuCitH
VEVTVF9ERUNMQVJFX2Jvb2xfKHByaW50X3V0ZjgpOworCiAvLyBUaGlzIGZsYWcgc3BlY2lmaWVz
IHRoZSByYW5kb20gbnVtYmVyIHNlZWQuCiBHVEVTVF9ERUNMQVJFX2ludDMyXyhyYW5kb21fc2Vl
ZCk7CiAKQEAgLTEzMyw5ICsxNTEsMTQgQEAgR1RFU1RfREVDTEFSRV9pbnQzMl8oc3RhY2tfdHJh
Y2VfZGVwdGgpOwogCiAvLyBXaGVuIHRoaXMgZmxhZyBpcyBzcGVjaWZpZWQsIGEgZmFpbGVkIGFz
c2VydGlvbiB3aWxsIHRocm93IGFuCiAvLyBleGNlcHRpb24gaWYgZXhjZXB0aW9ucyBhcmUgZW5h
YmxlZCwgb3IgZXhpdCB0aGUgcHJvZ3JhbSB3aXRoIGEKLS8vIG5vbi16ZXJvIGNvZGUgb3RoZXJ3
aXNlLgorLy8gbm9uLXplcm8gY29kZSBvdGhlcndpc2UuIEZvciB1c2Ugd2l0aCBhbiBleHRlcm5h
bCB0ZXN0IGZyYW1ld29yay4KIEdURVNUX0RFQ0xBUkVfYm9vbF8odGhyb3dfb25fZmFpbHVyZSk7
CiAKKy8vIFdoZW4gdGhpcyBmbGFnIGlzIHNldCB3aXRoIGEgImhvc3Q6cG9ydCIgc3RyaW5nLCBv
biBzdXBwb3J0ZWQKKy8vIHBsYXRmb3JtcyB0ZXN0IHJlc3VsdHMgYXJlIHN0cmVhbWVkIHRvIHRo
ZSBzcGVjaWZpZWQgcG9ydCBvbgorLy8gdGhlIHNwZWNpZmllZCBob3N0IG1hY2hpbmUuCitHVEVT
VF9ERUNMQVJFX3N0cmluZ18oc3RyZWFtX3Jlc3VsdF90byk7CisKIC8vIFRoZSB1cHBlciBsaW1p
dCBmb3IgdmFsaWQgc3RhY2sgdHJhY2UgZGVwdGhzLgogY29uc3QgaW50IGtNYXhTdGFja1RyYWNl
RGVwdGggPSAxMDA7CiAKQEAgLTE0NywzMSArMTcwLDI3IEBAIGNsYXNzIEV4ZWNEZWF0aFRlc3Q7
CiBjbGFzcyBOb0V4ZWNEZWF0aFRlc3Q7CiBjbGFzcyBGaW5hbFN1Y2Nlc3NDaGVja2VyOwogY2xh
c3MgR1Rlc3RGbGFnU2F2ZXI7Ci1jbGFzcyBUZXN0SW5mb0ltcGw7CitjbGFzcyBTdHJlYW1pbmdM
aXN0ZW5lclRlc3Q7CiBjbGFzcyBUZXN0UmVzdWx0QWNjZXNzb3I7CiBjbGFzcyBUZXN0RXZlbnRM
aXN0ZW5lcnNBY2Nlc3NvcjsKIGNsYXNzIFRlc3RFdmVudFJlcGVhdGVyOworY2xhc3MgVW5pdFRl
c3RSZWNvcmRQcm9wZXJ0eVRlc3RIZWxwZXI7CiBjbGFzcyBXaW5kb3dzRGVhdGhUZXN0OworY2xh
c3MgRnVjaHNpYURlYXRoVGVzdDsKIGNsYXNzIFVuaXRUZXN0SW1wbCogR2V0VW5pdFRlc3RJbXBs
KCk7CiB2b2lkIFJlcG9ydEZhaWx1cmVJblVua25vd25Mb2NhdGlvbihUZXN0UGFydFJlc3VsdDo6
VHlwZSByZXN1bHRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7Ci1jbGFzcyBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI7
Ci1jbGFzcyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI7Ci0KLS8vIENvbnZlcnRzIGEgc3RyZWFt
YWJsZSB2YWx1ZSB0byBhIFN0cmluZy4gIEEgTlVMTCBwb2ludGVyIGlzCi0vLyBjb252ZXJ0ZWQg
dG8gIihudWxsKSIuICBXaGVuIHRoZSBpbnB1dCB2YWx1ZSBpcyBhIDo6c3RyaW5nLAotLy8gOjpz
dGQ6OnN0cmluZywgOjp3c3RyaW5nLCBvciA6OnN0ZDo6d3N0cmluZyBvYmplY3QsIGVhY2ggTlVM
Ci0vLyBjaGFyYWN0ZXIgaW4gaXQgaXMgcmVwbGFjZWQgd2l0aCAiXFwwIi4KLS8vIERlY2xhcmVk
IGluIGd0ZXN0LWludGVybmFsLmggYnV0IGRlZmluZWQgaGVyZSwgc28gdGhhdCBpdCBoYXMgYWNj
ZXNzCi0vLyB0byB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgTWVzc2FnZSBjbGFzcywgcmVxdWlyZWQg
YnkgdGhlIEFSTQotLy8gY29tcGlsZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVN0cmluZyBT
dHJlYW1hYmxlVG9TdHJpbmcoY29uc3QgVCYgc3RyZWFtYWJsZSkgewotICByZXR1cm4gKE1lc3Nh
Z2UoKSA8PCBzdHJlYW1hYmxlKS5HZXRTdHJpbmcoKTsKLX0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKTsKIAogfSAgLy8gbmFt
ZXNwYWNlIGludGVybmFsCiAKKy8vIFRoZSBmcmllbmQgcmVsYXRpb25zaGlwIG9mIHNvbWUgb2Yg
dGhlc2UgY2xhc3NlcyBpcyBjeWNsaWMuCisvLyBJZiB3ZSBkb24ndCBmb3J3YXJkIGRlY2xhcmUg
dGhlbSB0aGUgY29tcGlsZXIgbWlnaHQgY29uZnVzZSB0aGUgY2xhc3NlcworLy8gaW4gZnJpZW5k
c2hpcCBjbGF1c2VzIHdpdGggc2FtZSBuYW1lZCBjbGFzc2VzIG9uIHRoZSBzY29wZS4KK2NsYXNz
IFRlc3Q7CitjbGFzcyBUZXN0Q2FzZTsKK2NsYXNzIFRlc3RJbmZvOworY2xhc3MgVW5pdFRlc3Q7
CisKIC8vIEEgY2xhc3MgZm9yIGluZGljYXRpbmcgd2hldGhlciBhbiBhc3NlcnRpb24gd2FzIHN1
Y2Nlc3NmdWwuICBXaGVuCiAvLyB0aGUgYXNzZXJ0aW9uIHdhc24ndCBzdWNjZXNzZnVsLCB0aGUg
QXNzZXJ0aW9uUmVzdWx0IG9iamVjdAogLy8gcmVtZW1iZXJzIGEgbm9uLWVtcHR5IG1lc3NhZ2Ug
dGhhdCBkZXNjcmliZXMgaG93IGl0IGZhaWxlZC4KQEAgLTI1Niw4ICsyNzUsMzUgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgewogICAvLyBDb3B5IGNvbnN0cnVjdG9yLgogICAv
LyBVc2VkIGluIEVYUEVDVF9UUlVFL0ZBTFNFKGFzc2VydGlvbl9yZXN1bHQpLgogICBBc3NlcnRp
b25SZXN1bHQoY29uc3QgQXNzZXJ0aW9uUmVzdWx0JiBvdGhlcik7CisKKyNpZiBkZWZpbmVkKF9N
U0NfVkVSKSAmJiBfTVNDX1ZFUiA8IDE5MTAKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1Nf
UFVTSF8oNDgwMCAvKiBmb3JjaW5nIHZhbHVlIHRvIGJvb2wgKi8pCisjZW5kaWYKKwogICAvLyBV
c2VkIGluIHRoZSBFWFBFQ1RfVFJVRS9GQUxTRShib29sX2V4cHJlc3Npb24pLgotICBleHBsaWNp
dCBBc3NlcnRpb25SZXN1bHQoYm9vbCBzdWNjZXNzKSA6IHN1Y2Nlc3NfKHN1Y2Nlc3MpIHt9Cisg
IC8vCisgIC8vIFQgbXVzdCBiZSBjb250ZXh0dWFsbHkgY29udmVydGlibGUgdG8gYm9vbC4KKyAg
Ly8KKyAgLy8gVGhlIHNlY29uZCBwYXJhbWV0ZXIgcHJldmVudHMgdGhpcyBvdmVybG9hZCBmcm9t
IGJlaW5nIGNvbnNpZGVyZWQgaWYKKyAgLy8gdGhlIGFyZ3VtZW50IGlzIGltcGxpY2l0bHkgY29u
dmVydGlibGUgdG8gQXNzZXJ0aW9uUmVzdWx0LiBJbiB0aGF0IGNhc2UKKyAgLy8gd2Ugd2FudCBB
c3NlcnRpb25SZXN1bHQncyBjb3B5IGNvbnN0cnVjdG9yIHRvIGJlIHVzZWQuCisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgorICBleHBsaWNpdCBBc3NlcnRpb25SZXN1bHQoCisgICAgICBjb25zdCBU
JiBzdWNjZXNzLAorICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkVuYWJsZUlmPAorICAgICAgICAg
ICFpbnRlcm5hbDo6SW1wbGljaXRseUNvbnZlcnRpYmxlPFQsIEFzc2VydGlvblJlc3VsdD46OnZh
bHVlPjo6dHlwZSoKKyAgICAgICAgICAvKmVuYWJsZXIqLyA9IE5VTEwpCisgICAgICA6IHN1Y2Nl
c3NfKHN1Y2Nlc3MpIHt9CisKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA8IDE5
MTAKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCisjZW5kaWYKKworICAvLyBB
c3NpZ25tZW50IG9wZXJhdG9yLgorICBBc3NlcnRpb25SZXN1bHQmIG9wZXJhdG9yPShBc3NlcnRp
b25SZXN1bHQgb3RoZXIpIHsKKyAgICBzd2FwKG90aGVyKTsKKyAgICByZXR1cm4gKnRoaXM7Cisg
IH0KIAogICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBhc3NlcnRpb24gc3VjY2VlZGVkLgogICBv
cGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gc3VjY2Vzc187IH0gIC8vIE5PTElOVApAQCAt
MjcwLDIwICszMTYsMzYgQEAgY2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgewogICAv
LyBhc3NlcnRpb24ncyBleHBlY3RhdGlvbikuIFdoZW4gbm90aGluZyBoYXMgYmVlbiBzdHJlYW1l
ZCBpbnRvIHRoZQogICAvLyBvYmplY3QsIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLgogICBjb25z
dCBjaGFyKiBtZXNzYWdlKCkgY29uc3QgewotICAgIHJldHVybiBtZXNzYWdlXy5nZXQoKSAhPSBO
VUxMICYmIG1lc3NhZ2VfLT5jX3N0cigpICE9IE5VTEwgPwotICAgICAgICAgICBtZXNzYWdlXy0+
Y19zdHIoKSA6ICIiOworICAgIHJldHVybiBtZXNzYWdlXy5nZXQoKSAhPSBOVUxMID8gIG1lc3Nh
Z2VfLT5jX3N0cigpIDogIiI7CiAgIH0KLSAgLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogUmVt
b3ZlIHRoaXMgYWZ0ZXIgbWFraW5nIHN1cmUgbm8gY2xpZW50cyB1c2UgaXQuCisgIC8vIEZJWE1F
OiBSZW1vdmUgdGhpcyBhZnRlciBtYWtpbmcgc3VyZSBubyBjbGllbnRzIHVzZSBpdC4KICAgLy8g
RGVwcmVjYXRlZDsgcGxlYXNlIHVzZSBtZXNzYWdlKCkgaW5zdGVhZC4KICAgY29uc3QgY2hhciog
ZmFpbHVyZV9tZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbWVzc2FnZSgpOyB9CiAKICAgLy8gU3Ry
ZWFtcyBhIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2UgaW50byB0aGlzIG9iamVjdC4KLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IEFzc2VydGlvblJlc3VsdCYgb3BlcmF0b3I8PChjb25zdCBUJiB2YWx1
ZSk7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBBc3NlcnRpb25SZXN1bHQmIG9wZXJhdG9yPDwo
Y29uc3QgVCYgdmFsdWUpIHsKKyAgICBBcHBlbmRNZXNzYWdlKE1lc3NhZ2UoKSA8PCB2YWx1ZSk7
CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgLy8gQWxsb3dzIHN0cmVhbWluZyBiYXNpYyBv
dXRwdXQgbWFuaXB1bGF0b3JzIHN1Y2ggYXMgZW5kbCBvciBmbHVzaCBpbnRvCisgIC8vIHRoaXMg
b2JqZWN0LgorICBBc3NlcnRpb25SZXN1bHQmIG9wZXJhdG9yPDwoCisgICAgICA6OnN0ZDo6b3N0
cmVhbSYgKCpiYXNpY19tYW5pcHVsYXRvcikoOjpzdGQ6Om9zdHJlYW0mIHN0cmVhbSkpIHsKKyAg
ICBBcHBlbmRNZXNzYWdlKE1lc3NhZ2UoKSA8PCBiYXNpY19tYW5pcHVsYXRvcik7CisgICAgcmV0
dXJuICp0aGlzOworICB9CiAKICBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIHdl
IHdhbnQgQXNzZXJ0aW9uUmVzdWx0IHRvIGJlCi0gIC8vIGNvcHktY29uc3RydWN0aWJsZSBidXQg
bm90IGFzc2lnbmFibGUuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IEFzc2VydGlvblJlc3VsdCYg
b3RoZXIpOworICAvLyBBcHBlbmRzIHRoZSBjb250ZW50cyBvZiBtZXNzYWdlIHRvIG1lc3NhZ2Vf
LgorICB2b2lkIEFwcGVuZE1lc3NhZ2UoY29uc3QgTWVzc2FnZSYgYV9tZXNzYWdlKSB7CisgICAg
aWYgKG1lc3NhZ2VfLmdldCgpID09IE5VTEwpCisgICAgICBtZXNzYWdlXy5yZXNldChuZXcgOjpz
dGQ6OnN0cmluZyk7CisgICAgbWVzc2FnZV8tPmFwcGVuZChhX21lc3NhZ2UuR2V0U3RyaW5nKCku
Y19zdHIoKSk7CisgIH0KKworICAvLyBTd2FwIHRoZSBjb250ZW50cyBvZiB0aGlzIEFzc2VydGlv
blJlc3VsdCB3aXRoIG90aGVyLgorICB2b2lkIHN3YXAoQXNzZXJ0aW9uUmVzdWx0JiBvdGhlcik7
CiAKICAgLy8gU3RvcmVzIHJlc3VsdCBvZiB0aGUgYXNzZXJ0aW9uIHByZWRpY2F0ZS4KICAgYm9v
bCBzdWNjZXNzXzsKQEAgLTI5MSwxOSArMzUzLDggQEAgY2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRp
b25SZXN1bHQgewogICAvLyBjb25zdHJ1Y3QgaXMgbm90IHNhdGlzZmllZCB3aXRoIHRoZSBwcmVk
aWNhdGUncyBvdXRjb21lLgogICAvLyBSZWZlcmVuY2VkIHZpYSBhIHBvaW50ZXIgdG8gYXZvaWQg
dGFraW5nIHRvbyBtdWNoIHN0YWNrIGZyYW1lIHNwYWNlCiAgIC8vIHdpdGggdGVzdCBhc3NlcnRp
b25zLgotICBpbnRlcm5hbDo6c2NvcGVkX3B0cjxpbnRlcm5hbDo6U3RyaW5nPiBtZXNzYWdlXzsK
LX07ICAvLyBjbGFzcyBBc3NlcnRpb25SZXN1bHQKLQotLy8gU3RyZWFtcyBhIGN1c3RvbSBmYWls
dXJlIG1lc3NhZ2UgaW50byB0aGlzIG9iamVjdC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQXNz
ZXJ0aW9uUmVzdWx0JiBBc3NlcnRpb25SZXN1bHQ6Om9wZXJhdG9yPDwoY29uc3QgVCYgdmFsdWUp
IHsKLSAgTWVzc2FnZSBtc2c7Ci0gIGlmIChtZXNzYWdlXy5nZXQoKSAhPSBOVUxMKQotICAgIG1z
ZyA8PCAqbWVzc2FnZV87Ci0gIG1zZyA8PCB2YWx1ZTsKLSAgbWVzc2FnZV8ucmVzZXQobmV3IGlu
dGVybmFsOjpTdHJpbmcobXNnLkdldFN0cmluZygpKSk7Ci0gIHJldHVybiAqdGhpczsKLX0KKyAg
aW50ZXJuYWw6OnNjb3BlZF9wdHI8IDo6c3RkOjpzdHJpbmc+IG1lc3NhZ2VfOworfTsKIAogLy8g
TWFrZXMgYSBzdWNjZXNzZnVsIGFzc2VydGlvbiByZXN1bHQuCiBHVEVTVF9BUElfIEFzc2VydGlv
blJlc3VsdCBBc3NlcnRpb25TdWNjZXNzKCk7CkBAIC0zMTUsNiArMzY2LDE1IEBAIEdURVNUX0FQ
SV8gQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvbkZhaWx1cmUoKTsKIC8vIERlcHJlY2F0ZWQ7IHVz
ZSBBc3NlcnRpb25GYWlsdXJlKCkgPDwgbXNnLgogR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQg
QXNzZXJ0aW9uRmFpbHVyZShjb25zdCBNZXNzYWdlJiBtc2cpOwogCit9ICAvLyBuYW1lc3BhY2Ug
dGVzdGluZworCisvLyBJbmNsdWRlcyB0aGUgYXV0by1nZW5lcmF0ZWQgaGVhZGVyIHRoYXQgaW1w
bGVtZW50cyBhIGZhbWlseSBvZiBnZW5lcmljCisvLyBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3Jv
cy4gVGhpcyBpbmNsdWRlIGNvbWVzIGxhdGUgYmVjYXVzZSBpdCByZWxpZXMgb24KKy8vIEFQSXMg
ZGVjbGFyZWQgYWJvdmUuCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmgiCisKK25h
bWVzcGFjZSB0ZXN0aW5nIHsKKwogLy8gVGhlIGFic3RyYWN0IGNsYXNzIHRoYXQgYWxsIHRlc3Rz
IGluaGVyaXQgZnJvbS4KIC8vCiAvLyBJbiBHb29nbGUgVGVzdCwgYSB1bml0IHRlc3QgcHJvZ3Jh
bSBjb250YWlucyBvbmUgb3IgbWFueSBUZXN0Q2FzZXMsIGFuZApAQCAtMzI1LDEyICszODUsMTIg
QEAgR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uRmFpbHVyZShjb25zdCBNZXNz
YWdlJiBtc2cpOwogLy8gdGhpcyBmb3IgeW91LgogLy8KIC8vIFRoZSBvbmx5IHRpbWUgeW91IGRl
cml2ZSBmcm9tIFRlc3QgaXMgd2hlbiBkZWZpbmluZyBhIHRlc3QgZml4dHVyZQotLy8gdG8gYmUg
dXNlZCBhIFRFU1RfRi4gIEZvciBleGFtcGxlOgorLy8gdG8gYmUgdXNlZCBpbiBhIFRFU1RfRi4g
IEZvciBleGFtcGxlOgogLy8KIC8vICAgY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKIC8vICAgIHByb3RlY3RlZDoKLS8vICAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IC4u
LiB9Ci0vLyAgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeyAuLi4gfQorLy8gICAgIHZvaWQg
U2V0VXAoKSBvdmVycmlkZSB7IC4uLiB9CisvLyAgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRl
IHsgLi4uIH0KIC8vICAgICAuLi4KIC8vICAgfTsKIC8vCkBAIC0zNDAsNyArNDAwLDcgQEAgR1RF
U1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uRmFpbHVyZShjb25zdCBNZXNzYWdlJiBt
c2cpOwogLy8gVGVzdCBpcyBub3QgY29weWFibGUuCiBjbGFzcyBHVEVTVF9BUElfIFRlc3Qgewog
IHB1YmxpYzoKLSAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpUZXN0SW5mb0ltcGw7CisgIGZyaWVu
ZCBjbGFzcyBUZXN0SW5mbzsKIAogICAvLyBEZWZpbmVzIHR5cGVzIGZvciBwb2ludGVycyB0byBm
dW5jdGlvbnMgdGhhdCBzZXQgdXAgYW5kIHRlYXIgZG93bgogICAvLyBhIHRlc3QgY2FzZS4KQEAg
LTM3NiwyMCArNDM2LDIxIEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdCB7CiAgIC8vIG5vbi1mYXRh
bCkgZmFpbHVyZS4KICAgc3RhdGljIGJvb2wgSGFzRmFpbHVyZSgpIHsgcmV0dXJuIEhhc0ZhdGFs
RmFpbHVyZSgpIHx8IEhhc05vbmZhdGFsRmFpbHVyZSgpOyB9CiAKLSAgLy8gTG9ncyBhIHByb3Bl
cnR5IGZvciB0aGUgY3VycmVudCB0ZXN0LiAgT25seSB0aGUgbGFzdCB2YWx1ZSBmb3IgYSBnaXZl
bgotICAvLyBrZXkgaXMgcmVtZW1iZXJlZC4KLSAgLy8gVGhlc2UgYXJlIHB1YmxpYyBzdGF0aWMg
c28gdGhleSBjYW4gYmUgY2FsbGVkIGZyb20gdXRpbGl0eSBmdW5jdGlvbnMKLSAgLy8gdGhhdCBh
cmUgbm90IG1lbWJlcnMgb2YgdGhlIHRlc3QgZml4dHVyZS4KLSAgLy8gVGhlIGFyZ3VtZW50cyBh
cmUgY29uc3QgY2hhciogaW5zdGVhZCBzdHJpbmdzLCBhcyBHb29nbGUgVGVzdCBpcyB1c2VkCi0g
IC8vIG9uIHBsYXRmb3JtcyB3aGVyZSBzdHJpbmcgZG9lc24ndCBjb21waWxlLgotICAvLwotICAv
LyBOb3RlIHRoYXQgYSBkcml2aW5nIGNvbnNpZGVyYXRpb24gZm9yIHRoZXNlIFJlY29yZFByb3Bl
cnR5IG1ldGhvZHMKLSAgLy8gd2FzIHRvIHByb2R1Y2UgeG1sIG91dHB1dCBzdWl0ZWQgdG8gdGhl
IEdyZWVuc3BhbiBjaGFydGluZyB1dGlsaXR5LAotICAvLyB3aGljaCBhdCBwcmVzZW50IHdpbGwg
b25seSBjaGFydCB2YWx1ZXMgdGhhdCBmaXQgaW4gYSAzMi1iaXQgaW50LiBJdAotICAvLyBpcyB0
aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRvIHJlc3RyaWN0IHRoZWlyIHZhbHVlcyB0byAzMi1i
aXQgaW50cwotICAvLyBpZiB0aGV5IGludGVuZCB0aGVtIHRvIGJlIHVzZWQgd2l0aCBHcmVlbnNw
YW4uCi0gIHN0YXRpYyB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0IGNoYXIqIGtleSwgY29uc3Qg
Y2hhciogdmFsdWUpOwotICBzdGF0aWMgdm9pZCBSZWNvcmRQcm9wZXJ0eShjb25zdCBjaGFyKiBr
ZXksIGludCB2YWx1ZSk7CisgIC8vIExvZ3MgYSBwcm9wZXJ0eSBmb3IgdGhlIGN1cnJlbnQgdGVz
dCwgdGVzdCBjYXNlLCBvciBmb3IgdGhlIGVudGlyZQorICAvLyBpbnZvY2F0aW9uIG9mIHRoZSB0
ZXN0IHByb2dyYW0gd2hlbiB1c2VkIG91dHNpZGUgb2YgdGhlIGNvbnRleHQgb2YgYQorICAvLyB0
ZXN0IGNhc2UuICBPbmx5IHRoZSBsYXN0IHZhbHVlIGZvciBhIGdpdmVuIGtleSBpcyByZW1lbWJl
cmVkLiAgVGhlc2UKKyAgLy8gYXJlIHB1YmxpYyBzdGF0aWMgc28gdGhleSBjYW4gYmUgY2FsbGVk
IGZyb20gdXRpbGl0eSBmdW5jdGlvbnMgdGhhdCBhcmUKKyAgLy8gbm90IG1lbWJlcnMgb2YgdGhl
IHRlc3QgZml4dHVyZS4gIENhbGxzIHRvIFJlY29yZFByb3BlcnR5IG1hZGUgZHVyaW5nCisgIC8v
IGxpZmVzcGFuIG9mIHRoZSB0ZXN0IChmcm9tIHRoZSBtb21lbnQgaXRzIGNvbnN0cnVjdG9yIHN0
YXJ0cyB0byB0aGUKKyAgLy8gbW9tZW50IGl0cyBkZXN0cnVjdG9yIGZpbmlzaGVzKSB3aWxsIGJl
IG91dHB1dCBpbiBYTUwgYXMgYXR0cmlidXRlcyBvZgorICAvLyB0aGUgPHRlc3RjYXNlPiBlbGVt
ZW50LiAgUHJvcGVydGllcyByZWNvcmRlZCBmcm9tIGZpeHR1cmUncworICAvLyBTZXRVcFRlc3RD
YXNlIG9yIFRlYXJEb3duVGVzdENhc2UgYXJlIGxvZ2dlZCBhcyBhdHRyaWJ1dGVzIG9mIHRoZQor
ICAvLyBjb3JyZXNwb25kaW5nIDx0ZXN0c3VpdGU+IGVsZW1lbnQuICBDYWxscyB0byBSZWNvcmRQ
cm9wZXJ0eSBtYWRlIGluIHRoZQorICAvLyBnbG9iYWwgY29udGV4dCAoYmVmb3JlIG9yIGFmdGVy
IGludm9jYXRpb24gb2YgUlVOX0FMTF9URVNUUyBhbmQgZnJvbQorICAvLyBTZXRVcC9UZWFyRG93
biBtZXRob2Qgb2YgRW52aXJvbm1lbnQgb2JqZWN0cyByZWdpc3RlcmVkIHdpdGggR29vZ2xlCisg
IC8vIFRlc3QpIHdpbGwgYmUgb3V0cHV0IGFzIGF0dHJpYnV0ZXMgb2YgdGhlIDx0ZXN0c3VpdGVz
PiBlbGVtZW50LgorICBzdGF0aWMgdm9pZCBSZWNvcmRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmlu
ZyYga2V5LCBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpOworICBzdGF0aWMgdm9pZCBSZWNvcmRQ
cm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYga2V5LCBpbnQgdmFsdWUpOwogCiAgcHJvdGVjdGVk
OgogICAvLyBDcmVhdGVzIGEgVGVzdCBvYmplY3QuCkBAIC00MTcsMjAgKzQ3OCwyMyBAQCBjbGFz
cyBHVEVTVF9BUElfIFRlc3QgewogICAvLyBTZXRzIHVwLCBleGVjdXRlcywgYW5kIHRlYXJzIGRv
d24gdGhlIHRlc3QuCiAgIHZvaWQgUnVuKCk7CiAKLSAgLy8gVXNlcyBhIEdUZXN0RmxhZ1NhdmVy
IHRvIHNhdmUgYW5kIHJlc3RvcmUgYWxsIEdvb2dsZSBUZXN0IGZsYWdzLgotICBjb25zdCBpbnRl
cm5hbDo6R1Rlc3RGbGFnU2F2ZXIqIGNvbnN0IGd0ZXN0X2ZsYWdfc2F2ZXJfOworICAvLyBEZWxl
dGVzIHNlbGYuICBXZSBkZWxpYmVyYXRlbHkgcGljayBhbiB1bnVzdWFsIG5hbWUgZm9yIHRoaXMK
KyAgLy8gaW50ZXJuYWwgbWV0aG9kIHRvIGF2b2lkIGNsYXNoaW5nIHdpdGggbmFtZXMgdXNlZCBp
biB1c2VyIFRFU1RzLgorICB2b2lkIERlbGV0ZVNlbGZfKCkgeyBkZWxldGUgdGhpczsgfQogCi0g
IC8vIE9mdGVuIGEgdXNlciBtaXMtc3BlbGxzIFNldFVwKCkgYXMgU2V0dXAoKSBhbmQgc3BlbmRz
IGEgbG9uZyB0aW1lCisgIGNvbnN0IGludGVybmFsOjpzY29wZWRfcHRyPCBHVEVTVF9GTEFHX1NB
VkVSXyA+IGd0ZXN0X2ZsYWdfc2F2ZXJfOworCisgIC8vIE9mdGVuIGEgdXNlciBtaXNzcGVsbHMg
U2V0VXAoKSBhcyBTZXR1cCgpIGFuZCBzcGVuZHMgYSBsb25nIHRpbWUKICAgLy8gd29uZGVyaW5n
IHdoeSBpdCBpcyBuZXZlciBjYWxsZWQgYnkgR29vZ2xlIFRlc3QuICBUaGUgZGVjbGFyYXRpb24g
b2YKICAgLy8gdGhlIGZvbGxvd2luZyBtZXRob2QgaXMgc29sZWx5IGZvciBjYXRjaGluZyBzdWNo
IGFuIGVycm9yIGF0CiAgIC8vIGNvbXBpbGUgdGltZToKICAgLy8KICAgLy8gICAtIFRoZSByZXR1
cm4gdHlwZSBpcyBkZWxpYmVyYXRlbHkgY2hvc2VuIHRvIGJlIG5vdCB2b2lkLCBzbyBpdAotICAv
LyAgIHdpbGwgYmUgYSBjb25mbGljdCBpZiBhIHVzZXIgZGVjbGFyZXMgdm9pZCBTZXR1cCgpIGlu
IGhpcyB0ZXN0Ci0gIC8vICAgZml4dHVyZS4KKyAgLy8gICB3aWxsIGJlIGEgY29uZmxpY3QgaWYg
dm9pZCBTZXR1cCgpIGlzIGRlY2xhcmVkIGluIHRoZSB1c2VyJ3MKKyAgLy8gICB0ZXN0IGZpeHR1
cmUuCiAgIC8vCiAgIC8vICAgLSBUaGlzIG1ldGhvZCBpcyBwcml2YXRlLCBzbyBpdCB3aWxsIGJl
IGFub3RoZXIgY29tcGlsZXIgZXJyb3IKLSAgLy8gICBpZiBhIHVzZXIgY2FsbHMgaXQgZnJvbSBo
aXMgdGVzdCBmaXh0dXJlLgorICAvLyAgIGlmIHRoZSBtZXRob2QgaXMgY2FsbGVkIGZyb20gdGhl
IHVzZXIncyB0ZXN0IGZpeHR1cmUuCiAgIC8vCiAgIC8vIERPIE5PVCBPVkVSUklERSBUSElTIEZV
TkNUSU9OLgogICAvLwpAQCAtNDU0LDcgKzUxOCw3IEBAIGNsYXNzIFRlc3RQcm9wZXJ0eSB7CiAg
IC8vIEMndG9yLiAgVGVzdFByb3BlcnR5IGRvZXMgTk9UIGhhdmUgYSBkZWZhdWx0IGNvbnN0cnVj
dG9yLgogICAvLyBBbHdheXMgdXNlIHRoaXMgY29uc3RydWN0b3IgKHdpdGggcGFyYW1ldGVycykg
dG8gY3JlYXRlIGEKICAgLy8gVGVzdFByb3BlcnR5IG9iamVjdC4KLSAgVGVzdFByb3BlcnR5KGNv
bnN0IGNoYXIqIGFfa2V5LCBjb25zdCBjaGFyKiBhX3ZhbHVlKSA6CisgIFRlc3RQcm9wZXJ0eShj
b25zdCBzdGQ6OnN0cmluZyYgYV9rZXksIGNvbnN0IHN0ZDo6c3RyaW5nJiBhX3ZhbHVlKSA6CiAg
ICAga2V5XyhhX2tleSksIHZhbHVlXyhhX3ZhbHVlKSB7CiAgIH0KIApAQCAtNDY5LDE1ICs1MzMs
MTUgQEAgY2xhc3MgVGVzdFByb3BlcnR5IHsKICAgfQogCiAgIC8vIFNldHMgYSBuZXcgdmFsdWUs
IG92ZXJyaWRpbmcgdGhlIG9uZSBzdXBwbGllZCBpbiB0aGUgY29uc3RydWN0b3IuCi0gIHZvaWQg
U2V0VmFsdWUoY29uc3QgY2hhciogbmV3X3ZhbHVlKSB7CisgIHZvaWQgU2V0VmFsdWUoY29uc3Qg
c3RkOjpzdHJpbmcmIG5ld192YWx1ZSkgewogICAgIHZhbHVlXyA9IG5ld192YWx1ZTsKICAgfQog
CiAgcHJpdmF0ZToKICAgLy8gVGhlIGtleSBzdXBwbGllZCBieSB0aGUgdXNlci4KLSAgaW50ZXJu
YWw6OlN0cmluZyBrZXlfOworICBzdGQ6OnN0cmluZyBrZXlfOwogICAvLyBUaGUgdmFsdWUgc3Vw
cGxpZWQgYnkgdGhlIHVzZXIuCi0gIGludGVybmFsOjpTdHJpbmcgdmFsdWVfOworICBzdGQ6OnN0
cmluZyB2YWx1ZV87CiB9OwogCiAvLyBUaGUgcmVzdWx0IG9mIGEgc2luZ2xlIFRlc3QuICBUaGlz
IGluY2x1ZGVzIGEgbGlzdCBvZgpAQCAtNTE2LDkgKzU4MCw4IEBAIGNsYXNzIEdURVNUX0FQSV8g
VGVzdFJlc3VsdCB7CiAgIC8vIFJldHVybnMgdGhlIGVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNv
bmRzLgogICBUaW1lSW5NaWxsaXMgZWxhcHNlZF90aW1lKCkgY29uc3QgeyByZXR1cm4gZWxhcHNl
ZF90aW1lXzsgfQogCi0gIC8vIFJldHVybnMgdGhlIGktdGggdGVzdCBwYXJ0IHJlc3VsdCBhbW9u
ZyBhbGwgdGhlIHJlc3VsdHMuIGkgY2FuIHJhbmdlCi0gIC8vIGZyb20gMCB0byB0ZXN0X3Byb3Bl
cnR5X2NvdW50KCkgLSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCBhYm9ydHMKLSAgLy8g
dGhlIHByb2dyYW0uCisgIC8vIFJldHVybnMgdGhlIGktdGggdGVzdCBwYXJ0IHJlc3VsdCBhbW9u
ZyBhbGwgdGhlIHJlc3VsdHMuIGkgY2FuIHJhbmdlIGZyb20gMAorICAvLyB0byB0b3RhbF9wYXJ0
X2NvdW50KCkgLSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCBhYm9ydHMgdGhlIHByb2dy
YW0uCiAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBHZXRUZXN0UGFydFJlc3VsdChpbnQgaSkgY29u
c3Q7CiAKICAgLy8gUmV0dXJucyB0aGUgaS10aCB0ZXN0IHByb3BlcnR5LiBpIGNhbiByYW5nZSBm
cm9tIDAgdG8KQEAgLTUyOCwxMyArNTkxLDE0IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFJlc3Vs
dCB7CiAKICBwcml2YXRlOgogICBmcmllbmQgY2xhc3MgVGVzdEluZm87CisgIGZyaWVuZCBjbGFz
cyBUZXN0Q2FzZTsKICAgZnJpZW5kIGNsYXNzIFVuaXRUZXN0OwogICBmcmllbmQgY2xhc3MgaW50
ZXJuYWw6OkRlZmF1bHRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyOwogICBmcmllbmQgY2xh
c3MgaW50ZXJuYWw6OkV4ZWNEZWF0aFRlc3Q7Ci0gIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VGVz
dEluZm9JbXBsOwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlRlc3RSZXN1bHRBY2Nlc3NvcjsK
ICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpVbml0VGVzdEltcGw7CiAgIGZyaWVuZCBjbGFzcyBp
bnRlcm5hbDo6V2luZG93c0RlYXRoVGVzdDsKKyAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpGdWNo
c2lhRGVhdGhUZXN0OwogCiAgIC8vIEdldHMgdGhlIHZlY3RvciBvZiBUZXN0UGFydFJlc3VsdHMu
CiAgIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RQYXJ0UmVzdWx0PiYgdGVzdF9wYXJ0X3Jlc3VsdHMo
KSBjb25zdCB7CkBAIC01NTMsMTMgKzYxNywxNiBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RSZXN1
bHQgewogICAvLyBhIG5vbi1mYXRhbCBmYWlsdXJlIGlmIGludmFsaWQgKGUuZy4sIGlmIGl0IGNv
bmZsaWN0cyB3aXRoIHJlc2VydmVkCiAgIC8vIGtleSBuYW1lcykuIElmIGEgcHJvcGVydHkgaXMg
YWxyZWFkeSByZWNvcmRlZCBmb3IgdGhlIHNhbWUga2V5LCB0aGUKICAgLy8gdmFsdWUgd2lsbCBi
ZSB1cGRhdGVkLCByYXRoZXIgdGhhbiBzdG9yaW5nIG11bHRpcGxlIHZhbHVlcyBmb3IgdGhlIHNh
bWUKLSAgLy8ga2V5LgotICB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0IFRlc3RQcm9wZXJ0eSYg
dGVzdF9wcm9wZXJ0eSk7CisgIC8vIGtleS4gIHhtbF9lbGVtZW50IHNwZWNpZmllcyB0aGUgZWxl
bWVudCBmb3Igd2hpY2ggdGhlIHByb3BlcnR5IGlzIGJlaW5nCisgIC8vIHJlY29yZGVkIGFuZCBp
cyB1c2VkIGZvciB2YWxpZGF0aW9uLgorICB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6
c3RyaW5nJiB4bWxfZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UHJv
cGVydHkmIHRlc3RfcHJvcGVydHkpOwogCiAgIC8vIEFkZHMgYSBmYWlsdXJlIGlmIHRoZSBrZXkg
aXMgYSByZXNlcnZlZCBhdHRyaWJ1dGUgb2YgR29vZ2xlIFRlc3QKICAgLy8gdGVzdGNhc2UgdGFn
cy4gIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvcGVydHkgaXMgdmFsaWQuCi0gIC8vIFRPRE8ocnVz
c3IpOiBWYWxpZGF0ZSBhdHRyaWJ1dGUgbmFtZXMgYXJlIGxlZ2FsIGFuZCBodW1hbiByZWFkYWJs
ZS4KLSAgc3RhdGljIGJvb2wgVmFsaWRhdGVUZXN0UHJvcGVydHkoY29uc3QgVGVzdFByb3BlcnR5
JiB0ZXN0X3Byb3BlcnR5KTsKKyAgLy8gRklYTUU6IFZhbGlkYXRlIGF0dHJpYnV0ZSBuYW1lcyBh
cmUgbGVnYWwgYW5kIGh1bWFuIHJlYWRhYmxlLgorICBzdGF0aWMgYm9vbCBWYWxpZGF0ZVRlc3RQ
cm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgeG1sX2VsZW1lbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSk7CiAK
ICAgLy8gQWRkcyBhIHRlc3QgcGFydCByZXN1bHQgdG8gdGhlIGxpc3QuCiAgIHZvaWQgQWRkVGVz
dFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpOwpAQCAt
NjExLDIwICs2NzgsMzkgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0SW5mbyB7CiAgIH5UZXN0SW5m
bygpOwogCiAgIC8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBuYW1lLgotICBjb25zdCBjaGFyKiB0
ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0OworICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIHRlc3RfY2FzZV9uYW1lXy5jX3N0cigpOyB9CiAKICAgLy8gUmV0dXJucyB0
aGUgdGVzdCBuYW1lLgotICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Q7CisgIGNvbnN0IGNoYXIq
IG5hbWUoKSBjb25zdCB7IHJldHVybiBuYW1lXy5jX3N0cigpOyB9CisKKyAgLy8gUmV0dXJucyB0
aGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIHR5cGUsIG9yIE5VTEwgaWYgdGhpcyBpcyBub3QgYSB0
eXBlZAorICAvLyBvciBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LgorICBjb25zdCBjaGFyKiB0
eXBlX3BhcmFtKCkgY29uc3QgeworICAgIGlmICh0eXBlX3BhcmFtXy5nZXQoKSAhPSBOVUxMKQor
ICAgICAgcmV0dXJuIHR5cGVfcGFyYW1fLT5jX3N0cigpOworICAgIHJldHVybiBOVUxMOworICB9
CisKKyAgLy8gUmV0dXJucyB0aGUgdGV4dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFsdWUgcGFy
YW1ldGVyLCBvciBOVUxMIGlmIHRoaXMKKyAgLy8gaXMgbm90IGEgdmFsdWUtcGFyYW1ldGVyaXpl
ZCB0ZXN0LgorICBjb25zdCBjaGFyKiB2YWx1ZV9wYXJhbSgpIGNvbnN0IHsKKyAgICBpZiAodmFs
dWVfcGFyYW1fLmdldCgpICE9IE5VTEwpCisgICAgICByZXR1cm4gdmFsdWVfcGFyYW1fLT5jX3N0
cigpOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgLy8gUmV0dXJucyB0aGUgZmlsZSBuYW1l
IHdoZXJlIHRoaXMgdGVzdCBpcyBkZWZpbmVkLgorICBjb25zdCBjaGFyKiBmaWxlKCkgY29uc3Qg
eyByZXR1cm4gbG9jYXRpb25fLmZpbGUuY19zdHIoKTsgfQogCi0gIC8vIFJldHVybnMgdGhlIHRl
c3QgY2FzZSBjb21tZW50LgotICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfY29tbWVudCgpIGNvbnN0
OworICAvLyBSZXR1cm5zIHRoZSBsaW5lIHdoZXJlIHRoaXMgdGVzdCBpcyBkZWZpbmVkLgorICBp
bnQgbGluZSgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9uXy5saW5lOyB9CiAKLSAgLy8gUmV0dXJu
cyB0aGUgdGVzdCBjb21tZW50LgotICBjb25zdCBjaGFyKiBjb21tZW50KCkgY29uc3Q7CisgIC8v
IFJldHVybiB0cnVlIGlmIHRoaXMgdGVzdCBzaG91bGQgbm90IGJlIHJ1biBiZWNhdXNlIGl0J3Mg
aW4gYW5vdGhlciBzaGFyZC4KKyAgYm9vbCBpc19pbl9hbm90aGVyX3NoYXJkKCkgY29uc3QgeyBy
ZXR1cm4gaXNfaW5fYW5vdGhlcl9zaGFyZF87IH0KIAotICAvLyBSZXR1cm5zIHRydWUgaWYgdGhp
cyB0ZXN0IHNob3VsZCBydW4sIHRoYXQgaXMgaWYgdGhlIHRlc3QgaXMgbm90IGRpc2FibGVkCi0g
IC8vIChvciBpdCBpcyBkaXNhYmxlZCBidXQgdGhlIGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIGZs
YWcgaGFzIGJlZW4gc3BlY2lmaWVkKQotICAvLyBhbmQgaXRzIGZ1bGwgbmFtZSBtYXRjaGVzIHRo
ZSB1c2VyLXNwZWNpZmllZCBmaWx0ZXIuCisgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRlc3Qg
c2hvdWxkIHJ1biwgdGhhdCBpcyBpZiB0aGUgdGVzdCBpcyBub3QKKyAgLy8gZGlzYWJsZWQgKG9y
IGl0IGlzIGRpc2FibGVkIGJ1dCB0aGUgYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxhZyBoYXMK
KyAgLy8gYmVlbiBzcGVjaWZpZWQpIGFuZCBpdHMgZnVsbCBuYW1lIG1hdGNoZXMgdGhlIHVzZXIt
c3BlY2lmaWVkIGZpbHRlci4KICAgLy8KICAgLy8gR29vZ2xlIFRlc3QgYWxsb3dzIHRoZSB1c2Vy
IHRvIGZpbHRlciB0aGUgdGVzdHMgYnkgdGhlaXIgZnVsbCBuYW1lcy4KICAgLy8gVGhlIGZ1bGwg
bmFtZSBvZiBhIHRlc3QgQmFyIGluIHRlc3QgY2FzZSBGb28gaXMgZGVmaW5lZCBhcwpAQCAtNjM4
LDEwICs3MjQsMTcgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0SW5mbyB7CiAgIC8vCiAgIC8vIEZv
ciBleGFtcGxlLCAqQSo6Rm9vLiogaXMgYSBmaWx0ZXIgdGhhdCBtYXRjaGVzIGFueSBzdHJpbmcg
dGhhdAogICAvLyBjb250YWlucyB0aGUgY2hhcmFjdGVyICdBJyBvciBzdGFydHMgd2l0aCAiRm9v
LiIuCi0gIGJvb2wgc2hvdWxkX3J1bigpIGNvbnN0OworICBib29sIHNob3VsZF9ydW4oKSBjb25z
dCB7IHJldHVybiBzaG91bGRfcnVuXzsgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyB0
ZXN0IHdpbGwgYXBwZWFyIGluIHRoZSBYTUwgcmVwb3J0LgorICBib29sIGlzX3JlcG9ydGFibGUo
KSBjb25zdCB7CisgICAgLy8gVGhlIFhNTCByZXBvcnQgaW5jbHVkZXMgdGVzdHMgbWF0Y2hpbmcg
dGhlIGZpbHRlciwgZXhjbHVkaW5nIHRob3NlCisgICAgLy8gcnVuIGluIG90aGVyIHNoYXJkcy4K
KyAgICByZXR1cm4gbWF0Y2hlc19maWx0ZXJfICYmICFpc19pbl9hbm90aGVyX3NoYXJkXzsKKyAg
fQogCiAgIC8vIFJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgdGVzdC4KLSAgY29uc3QgVGVzdFJl
c3VsdCogcmVzdWx0KCkgY29uc3Q7CisgIGNvbnN0IFRlc3RSZXN1bHQqIHJlc3VsdCgpIGNvbnN0
IHsgcmV0dXJuICZyZXN1bHRfOyB9CiAKICBwcml2YXRlOgogI2lmIEdURVNUX0hBU19ERUFUSF9U
RVNUCkBAIC02NDksMzYgKzc0Miw2NSBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RJbmZvIHsKICNl
bmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKICAgZnJpZW5kIGNsYXNzIFRlc3Q7CiAgIGZy
aWVuZCBjbGFzcyBUZXN0Q2FzZTsKLSAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpUZXN0SW5mb0lt
cGw7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsOworICBmcmllbmQgY2xh
c3MgaW50ZXJuYWw6OlN0cmVhbWluZ0xpc3RlbmVyVGVzdDsKICAgZnJpZW5kIFRlc3RJbmZvKiBp
bnRlcm5hbDo6TWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8oCi0gICAgICBjb25zdCBjaGFyKiB0ZXN0
X2Nhc2VfbmFtZSwgY29uc3QgY2hhciogbmFtZSwKLSAgICAgIGNvbnN0IGNoYXIqIHRlc3RfY2Fz
ZV9jb21tZW50LCBjb25zdCBjaGFyKiBjb21tZW50LAorICAgICAgY29uc3QgY2hhciogdGVzdF9j
YXNlX25hbWUsCisgICAgICBjb25zdCBjaGFyKiBuYW1lLAorICAgICAgY29uc3QgY2hhciogdHlw
ZV9wYXJhbSwKKyAgICAgIGNvbnN0IGNoYXIqIHZhbHVlX3BhcmFtLAorICAgICAgaW50ZXJuYWw6
OkNvZGVMb2NhdGlvbiBjb2RlX2xvY2F0aW9uLAogICAgICAgaW50ZXJuYWw6OlR5cGVJZCBmaXh0
dXJlX2NsYXNzX2lkLAogICAgICAgVGVzdDo6U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAog
ICAgICAgVGVzdDo6VGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3RjLAogICAgICAgaW50
ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSk7CiAKLSAgLy8gUmV0dXJucyB0cnVlIGlm
IHRoaXMgdGVzdCBtYXRjaGVzIHRoZSB1c2VyLXNwZWNpZmllZCBmaWx0ZXIuCi0gIGJvb2wgbWF0
Y2hlc19maWx0ZXIoKSBjb25zdDsKKyAgLy8gQ29uc3RydWN0cyBhIFRlc3RJbmZvIG9iamVjdC4g
VGhlIG5ld2x5IGNvbnN0cnVjdGVkIGluc3RhbmNlIGFzc3VtZXMKKyAgLy8gb3duZXJzaGlwIG9m
IHRoZSBmYWN0b3J5IG9iamVjdC4KKyAgVGVzdEluZm8oY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3Rf
Y2FzZV9uYW1lLAorICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKKyAgICAgICAg
ICAgY29uc3QgY2hhciogYV90eXBlX3BhcmFtLCAgIC8vIE5VTEwgaWYgbm90IGEgdHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3QKKyAgICAgICAgICAgY29uc3QgY2hhciogYV92YWx1ZV9wYXJhbSwgIC8v
IE5VTEwgaWYgbm90IGEgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0CisgICAgICAgICAgIGludGVy
bmFsOjpDb2RlTG9jYXRpb24gYV9jb2RlX2xvY2F0aW9uLAorICAgICAgICAgICBpbnRlcm5hbDo6
VHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCisgICAgICAgICAgIGludGVybmFsOjpUZXN0RmFjdG9y
eUJhc2UqIGZhY3RvcnkpOwogCiAgIC8vIEluY3JlbWVudHMgdGhlIG51bWJlciBvZiBkZWF0aCB0
ZXN0cyBlbmNvdW50ZXJlZCBpbiB0aGlzIHRlc3Qgc28KICAgLy8gZmFyLgotICBpbnQgaW5jcmVt
ZW50X2RlYXRoX3Rlc3RfY291bnQoKTsKKyAgaW50IGluY3JlbWVudF9kZWF0aF90ZXN0X2NvdW50
KCkgeworICAgIHJldHVybiByZXN1bHRfLmluY3JlbWVudF9kZWF0aF90ZXN0X2NvdW50KCk7Cisg
IH0KIAotICAvLyBBY2Nlc3NvcnMgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvYmplY3QuCi0gIGlu
dGVybmFsOjpUZXN0SW5mb0ltcGwqIGltcGwoKSB7IHJldHVybiBpbXBsXzsgfQotICBjb25zdCBp
bnRlcm5hbDo6VGVzdEluZm9JbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gaW1wbF87IH0KKyAg
Ly8gQ3JlYXRlcyB0aGUgdGVzdCBvYmplY3QsIHJ1bnMgaXQsIHJlY29yZHMgaXRzIHJlc3VsdCwg
YW5kIHRoZW4KKyAgLy8gZGVsZXRlcyBpdC4KKyAgdm9pZCBSdW4oKTsKIAotICAvLyBDb25zdHJ1
Y3RzIGEgVGVzdEluZm8gb2JqZWN0LiBUaGUgbmV3bHkgY29uc3RydWN0ZWQgaW5zdGFuY2UgYXNz
dW1lcwotICAvLyBvd25lcnNoaXAgb2YgdGhlIGZhY3Rvcnkgb2JqZWN0LgotICBUZXN0SW5mbyhj
b25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwgY29uc3QgY2hhciogbmFtZSwKLSAgICAgICAgICAg
Y29uc3QgY2hhciogdGVzdF9jYXNlX2NvbW1lbnQsIGNvbnN0IGNoYXIqIGNvbW1lbnQsCi0gICAg
ICAgICAgIGludGVybmFsOjpUeXBlSWQgZml4dHVyZV9jbGFzc19pZCwKLSAgICAgICAgICAgaW50
ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSk7CisgIHN0YXRpYyB2b2lkIENsZWFyVGVz
dFJlc3VsdChUZXN0SW5mbyogdGVzdF9pbmZvKSB7CisgICAgdGVzdF9pbmZvLT5yZXN1bHRfLkNs
ZWFyKCk7CisgIH0KIAotICAvLyBBbiBvcGFxdWUgaW1wbGVtZW50YXRpb24gb2JqZWN0LgotICBp
bnRlcm5hbDo6VGVzdEluZm9JbXBsKiBpbXBsXzsKKyAgLy8gVGhlc2UgZmllbGRzIGFyZSBpbW11
dGFibGUgcHJvcGVydGllcyBvZiB0aGUgdGVzdC4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdF9j
YXNlX25hbWVfOyAgICAgLy8gVGVzdCBjYXNlIG5hbWUKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbmFt
ZV87ICAgICAgICAgICAgICAgLy8gVGVzdCBuYW1lCisgIC8vIE5hbWUgb2YgdGhlIHBhcmFtZXRl
ciB0eXBlLCBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEgdHlwZWQgb3IgYQorICAvLyB0eXBlLXBh
cmFtZXRlcml6ZWQgdGVzdC4KKyAgY29uc3QgaW50ZXJuYWw6OnNjb3BlZF9wdHI8Y29uc3QgOjpz
dGQ6OnN0cmluZz4gdHlwZV9wYXJhbV87CisgIC8vIFRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhl
IHZhbHVlIHBhcmFtZXRlciwgb3IgTlVMTCBpZiB0aGlzIGlzIG5vdCBhCisgIC8vIHZhbHVlLXBh
cmFtZXRlcml6ZWQgdGVzdC4KKyAgY29uc3QgaW50ZXJuYWw6OnNjb3BlZF9wdHI8Y29uc3QgOjpz
dGQ6OnN0cmluZz4gdmFsdWVfcGFyYW1fOworICBpbnRlcm5hbDo6Q29kZUxvY2F0aW9uIGxvY2F0
aW9uXzsKKyAgY29uc3QgaW50ZXJuYWw6OlR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkXzsgICAvLyBJ
RCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzCisgIGJvb2wgc2hvdWxkX3J1bl87ICAgICAgICAg
ICAgICAgICAvLyBUcnVlIGlmZiB0aGlzIHRlc3Qgc2hvdWxkIHJ1bgorICBib29sIGlzX2Rpc2Fi
bGVkXzsgICAgICAgICAgICAgICAgLy8gVHJ1ZSBpZmYgdGhpcyB0ZXN0IGlzIGRpc2FibGVkCisg
IGJvb2wgbWF0Y2hlc19maWx0ZXJfOyAgICAgICAgICAgICAvLyBUcnVlIGlmIHRoaXMgdGVzdCBt
YXRjaGVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlci1z
cGVjaWZpZWQgZmlsdGVyLgorICBib29sIGlzX2luX2Fub3RoZXJfc2hhcmRfOyAgICAgICAgLy8g
V2lsbCBiZSBydW4gaW4gYW5vdGhlciBzaGFyZC4KKyAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFz
ZSogY29uc3QgZmFjdG9yeV87ICAvLyBUaGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgdGVzdCBvYmplY3QK
KworICAvLyBUaGlzIGZpZWxkIGlzIG11dGFibGUgYW5kIG5lZWRzIHRvIGJlIHJlc2V0IGJlZm9y
ZSBydW5uaW5nIHRoZQorICAvLyB0ZXN0IGZvciB0aGUgc2Vjb25kIHRpbWUuCisgIFRlc3RSZXN1
bHQgcmVzdWx0XzsKIAogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRlc3RJbmZv
KTsKIH07CkBAIC02OTYsOSArODE4LDExIEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdENhc2Ugewog
ICAvLyBBcmd1bWVudHM6CiAgIC8vCiAgIC8vICAgbmFtZTogICAgICAgICBuYW1lIG9mIHRoZSB0
ZXN0IGNhc2UKKyAgLy8gICBhX3R5cGVfcGFyYW06IHRoZSBuYW1lIG9mIHRoZSB0ZXN0J3MgdHlw
ZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYKKyAgLy8gICAgICAgICAgICAgICAgIHRoaXMgaXMgbm90
IGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCiAgIC8vICAgc2V0X3VwX3RjOiAgICBwb2ludGVy
IHRvIHRoZSBmdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIHRlc3QgY2FzZQogICAvLyAgIHRlYXJf
ZG93bl90YzogcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCB0ZWFycyBkb3duIHRoZSB0ZXN0
IGNhc2UKLSAgVGVzdENhc2UoY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogY29tbWVudCwK
KyAgVGVzdENhc2UoY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogYV90eXBlX3BhcmFtLAog
ICAgICAgICAgICBUZXN0OjpTZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCiAgICAgICAgICAg
IFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90Yyk7CiAKQEAgLTcwOCw4ICs4
MzIsMTMgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIEdldHMgdGhlIG5hbWUg
b2YgdGhlIFRlc3RDYXNlLgogICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbmFt
ZV8uY19zdHIoKTsgfQogCi0gIC8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBjb21tZW50LgotICBj
b25zdCBjaGFyKiBjb21tZW50KCkgY29uc3QgeyByZXR1cm4gY29tbWVudF8uY19zdHIoKTsgfQor
ICAvLyBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdHlwZSwgb3IgTlVMTCBpZiB0
aGlzIGlzIG5vdCBhCisgIC8vIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UuCisgIGNvbnN0
IGNoYXIqIHR5cGVfcGFyYW0oKSBjb25zdCB7CisgICAgaWYgKHR5cGVfcGFyYW1fLmdldCgpICE9
IE5VTEwpCisgICAgICByZXR1cm4gdHlwZV9wYXJhbV8tPmNfc3RyKCk7CisgICAgcmV0dXJuIE5V
TEw7CisgIH0KIAogICAvLyBSZXR1cm5zIHRydWUgaWYgYW55IHRlc3QgaW4gdGhpcyB0ZXN0IGNh
c2Ugc2hvdWxkIHJ1bi4KICAgYm9vbCBzaG91bGRfcnVuKCkgY29uc3QgeyByZXR1cm4gc2hvdWxk
X3J1bl87IH0KQEAgLTcyMCw5ICs4NDksMTUgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7
CiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2Uu
CiAgIGludCBmYWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0OwogCisgIC8vIEdldHMgdGhlIG51bWJl
ciBvZiBkaXNhYmxlZCB0ZXN0cyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhNTCByZXBv
cnQuCisgIGludCByZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdDsKKwogICAv
LyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCiAg
IGludCBkaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CiAKKyAgLy8gR2V0cyB0aGUgbnVtYmVy
IG9mIHRlc3RzIHRvIGJlIHByaW50ZWQgaW4gdGhlIFhNTCByZXBvcnQuCisgIGludCByZXBvcnRh
YmxlX3Rlc3RfY291bnQoKSBjb25zdDsKKwogICAvLyBHZXQgdGhlIG51bWJlciBvZiB0ZXN0cyBp
biB0aGlzIHRlc3QgY2FzZSB0aGF0IHNob3VsZCBydW4uCiAgIGludCB0ZXN0X3RvX3J1bl9jb3Vu
dCgpIGNvbnN0OwogCkBAIC03NDIsNiArODc3LDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdENh
c2UgewogICAvLyB0b3RhbF90ZXN0X2NvdW50KCkgLSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJh
bmdlLCByZXR1cm5zIE5VTEwuCiAgIGNvbnN0IFRlc3RJbmZvKiBHZXRUZXN0SW5mbyhpbnQgaSkg
Y29uc3Q7CiAKKyAgLy8gUmV0dXJucyB0aGUgVGVzdFJlc3VsdCB0aGF0IGhvbGRzIHRlc3QgcHJv
cGVydGllcyByZWNvcmRlZCBkdXJpbmcKKyAgLy8gZXhlY3V0aW9uIG9mIFNldFVwVGVzdENhc2Ug
YW5kIFRlYXJEb3duVGVzdENhc2UuCisgIGNvbnN0IFRlc3RSZXN1bHQmIGFkX2hvY190ZXN0X3Jl
c3VsdCgpIGNvbnN0IHsgcmV0dXJuIGFkX2hvY190ZXN0X3Jlc3VsdF87IH0KKwogIHByaXZhdGU6
CiAgIGZyaWVuZCBjbGFzcyBUZXN0OwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlVuaXRUZXN0
SW1wbDsKQEAgLTc3NiwxNyArOTE1LDQ0IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdENhc2Ugewog
ICAvLyBSdW5zIGV2ZXJ5IHRlc3QgaW4gdGhpcyBUZXN0Q2FzZS4KICAgdm9pZCBSdW4oKTsKIAor
ICAvLyBSdW5zIFNldFVwVGVzdENhc2UoKSBmb3IgdGhpcyBUZXN0Q2FzZS4gIFRoaXMgd3JhcHBl
ciBpcyBuZWVkZWQKKyAgLy8gZm9yIGNhdGNoaW5nIGV4Y2VwdGlvbnMgdGhyb3duIGZyb20gU2V0
VXBUZXN0Q2FzZSgpLgorICB2b2lkIFJ1blNldFVwVGVzdENhc2UoKSB7ICgqc2V0X3VwX3RjXyko
KTsgfQorCisgIC8vIFJ1bnMgVGVhckRvd25UZXN0Q2FzZSgpIGZvciB0aGlzIFRlc3RDYXNlLiAg
VGhpcyB3cmFwcGVyIGlzCisgIC8vIG5lZWRlZCBmb3IgY2F0Y2hpbmcgZXhjZXB0aW9ucyB0aHJv
d24gZnJvbSBUZWFyRG93blRlc3RDYXNlKCkuCisgIHZvaWQgUnVuVGVhckRvd25UZXN0Q2FzZSgp
IHsgKCp0ZWFyX2Rvd25fdGNfKSgpOyB9CisKICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0IHBh
c3NlZC4KLSAgc3RhdGljIGJvb2wgVGVzdFBhc3NlZChjb25zdCBUZXN0SW5mbyAqIHRlc3RfaW5m
byk7CisgIHN0YXRpYyBib29sIFRlc3RQYXNzZWQoY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykg
eworICAgIHJldHVybiB0ZXN0X2luZm8tPnNob3VsZF9ydW4oKSAmJiB0ZXN0X2luZm8tPnJlc3Vs
dCgpLT5QYXNzZWQoKTsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGVzdCBmYWlsZWQu
Ci0gIHN0YXRpYyBib29sIFRlc3RGYWlsZWQoY29uc3QgVGVzdEluZm8gKiB0ZXN0X2luZm8pOwor
ICBzdGF0aWMgYm9vbCBUZXN0RmFpbGVkKGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKKyAg
ICByZXR1cm4gdGVzdF9pbmZvLT5zaG91bGRfcnVuKCkgJiYgdGVzdF9pbmZvLT5yZXN1bHQoKS0+
RmFpbGVkKCk7CisgIH0KKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB0ZXN0IGlzIGRpc2Fi
bGVkIGFuZCB3aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwKKyAgLy8gcmVwb3J0LgorICBzdGF0
aWMgYm9vbCBUZXN0UmVwb3J0YWJsZURpc2FibGVkKGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8p
IHsKKyAgICByZXR1cm4gdGVzdF9pbmZvLT5pc19yZXBvcnRhYmxlKCkgJiYgdGVzdF9pbmZvLT5p
c19kaXNhYmxlZF87CisgIH0KIAogICAvLyBSZXR1cm5zIHRydWUgaWZmIHRlc3QgaXMgZGlzYWJs
ZWQuCi0gIHN0YXRpYyBib29sIFRlc3REaXNhYmxlZChjb25zdCBUZXN0SW5mbyAqIHRlc3RfaW5m
byk7CisgIHN0YXRpYyBib29sIFRlc3REaXNhYmxlZChjb25zdCBUZXN0SW5mbyogdGVzdF9pbmZv
KSB7CisgICAgcmV0dXJuIHRlc3RfaW5mby0+aXNfZGlzYWJsZWRfOworICB9CisKKyAgLy8gUmV0
dXJucyB0cnVlIGlmZiB0aGlzIHRlc3Qgd2lsbCBhcHBlYXIgaW4gdGhlIFhNTCByZXBvcnQuCisg
IHN0YXRpYyBib29sIFRlc3RSZXBvcnRhYmxlKGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsK
KyAgICByZXR1cm4gdGVzdF9pbmZvLT5pc19yZXBvcnRhYmxlKCk7CisgIH0KIAogICAvLyBSZXR1
cm5zIHRydWUgaWYgdGhlIGdpdmVuIHRlc3Qgc2hvdWxkIHJ1bi4KLSAgc3RhdGljIGJvb2wgU2hv
dWxkUnVuVGVzdChjb25zdCBUZXN0SW5mbyAqdGVzdF9pbmZvKTsKKyAgc3RhdGljIGJvb2wgU2hv
dWxkUnVuVGVzdChjb25zdCBUZXN0SW5mbyogdGVzdF9pbmZvKSB7CisgICAgcmV0dXJuIHRlc3Rf
aW5mby0+c2hvdWxkX3J1bigpOworICB9CiAKICAgLy8gU2h1ZmZsZXMgdGhlIHRlc3RzIGluIHRo
aXMgdGVzdCBjYXNlLgogICB2b2lkIFNodWZmbGVUZXN0cyhpbnRlcm5hbDo6UmFuZG9tKiByYW5k
b20pOwpAQCAtNzk1LDkgKzk2MSwxMCBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RDYXNlIHsKICAg
dm9pZCBVbnNodWZmbGVUZXN0cygpOwogCiAgIC8vIE5hbWUgb2YgdGhlIHRlc3QgY2FzZS4KLSAg
aW50ZXJuYWw6OlN0cmluZyBuYW1lXzsKLSAgLy8gQ29tbWVudCBvbiB0aGUgdGVzdCBjYXNlLgot
ICBpbnRlcm5hbDo6U3RyaW5nIGNvbW1lbnRfOworICBzdGQ6OnN0cmluZyBuYW1lXzsKKyAgLy8g
TmFtZSBvZiB0aGUgcGFyYW1ldGVyIHR5cGUsIG9yIE5VTEwgaWYgdGhpcyBpcyBub3QgYSB0eXBl
ZCBvciBhCisgIC8vIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LgorICBjb25zdCBpbnRlcm5hbDo6
c2NvcGVkX3B0cjxjb25zdCA6OnN0ZDo6c3RyaW5nPiB0eXBlX3BhcmFtXzsKICAgLy8gVGhlIHZl
Y3RvciBvZiBUZXN0SW5mb3MgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIuICBJdCBvd25zIHRoZQog
ICAvLyBlbGVtZW50cyBpbiB0aGUgdmVjdG9yLgogICBzdGQ6OnZlY3RvcjxUZXN0SW5mbyo+IHRl
c3RfaW5mb19saXN0XzsKQEAgLTgxMywxMyArOTgwLDE2IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVz
dENhc2UgewogICBib29sIHNob3VsZF9ydW5fOwogICAvLyBFbGFwc2VkIHRpbWUsIGluIG1pbGxp
c2Vjb25kcy4KICAgVGltZUluTWlsbGlzIGVsYXBzZWRfdGltZV87CisgIC8vIEhvbGRzIHRlc3Qg
cHJvcGVydGllcyByZWNvcmRlZCBkdXJpbmcgZXhlY3V0aW9uIG9mIFNldFVwVGVzdENhc2UgYW5k
CisgIC8vIFRlYXJEb3duVGVzdENhc2UuCisgIFRlc3RSZXN1bHQgYWRfaG9jX3Rlc3RfcmVzdWx0
XzsKIAogICAvLyBXZSBkaXNhbGxvdyBjb3B5aW5nIFRlc3RDYXNlcy4KICAgR1RFU1RfRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0Q2FzZSk7CiB9OwogCiAvLyBBbiBFbnZpcm9ubWVudCBv
YmplY3QgaXMgY2FwYWJsZSBvZiBzZXR0aW5nIHVwIGFuZCB0ZWFyaW5nIGRvd24gYW4KLS8vIGVu
dmlyb25tZW50LiAgVGhlIHVzZXIgc2hvdWxkIHN1YmNsYXNzIHRoaXMgdG8gZGVmaW5lIGhpcyBv
d24KKy8vIGVudmlyb25tZW50LiAgWW91IHNob3VsZCBzdWJjbGFzcyB0aGlzIHRvIGRlZmluZSB5
b3VyIG93bgogLy8gZW52aXJvbm1lbnQocykuCiAvLwogLy8gQW4gRW52aXJvbm1lbnQgb2JqZWN0
IGRvZXMgdGhlIHNldC11cCBhbmQgdGVhci1kb3duIGluIHZpcnR1YWwKQEAgLTg0OSw2ICsxMDE5
LDE4IEBAIGNsYXNzIEVudmlyb25tZW50IHsKICAgdmlydHVhbCBTZXR1cF9zaG91bGRfYmVfc3Bl
bGxlZF9TZXRVcCogU2V0dXAoKSB7IHJldHVybiBOVUxMOyB9CiB9OwogCisjaWYgR1RFU1RfSEFT
X0VYQ0VQVElPTlMKKworLy8gRXhjZXB0aW9uIHdoaWNoIGNhbiBiZSB0aHJvd24gZnJvbSBUZXN0
RXZlbnRMaXN0ZW5lcjo6T25UZXN0UGFydFJlc3VsdC4KK2NsYXNzIEdURVNUX0FQSV8gQXNzZXJ0
aW9uRXhjZXB0aW9uCisgICAgOiBwdWJsaWMgaW50ZXJuYWw6Okdvb2dsZVRlc3RGYWlsdXJlRXhj
ZXB0aW9uIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEFzc2VydGlvbkV4Y2VwdGlvbihjb25zdCBU
ZXN0UGFydFJlc3VsdCYgcmVzdWx0KQorICAgICAgOiBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlv
bihyZXN1bHQpIHt9Cit9OworCisjZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCisKIC8v
IFRoZSBpbnRlcmZhY2UgZm9yIHRyYWNpbmcgZXhlY3V0aW9uIG9mIHRlc3RzLiBUaGUgbWV0aG9k
cyBhcmUgb3JnYW5pemVkIGluCiAvLyB0aGUgb3JkZXIgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnRz
IGFyZSBmaXJlZC4KIGNsYXNzIFRlc3RFdmVudExpc3RlbmVyIHsKQEAgLTg3Niw3ICsxMDU4LDkg
QEAgY2xhc3MgVGVzdEV2ZW50TGlzdGVuZXIgewogICAvLyBGaXJlZCBiZWZvcmUgdGhlIHRlc3Qg
c3RhcnRzLgogICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8mIHRlc3Rf
aW5mbykgPSAwOwogCi0gIC8vIEZpcmVkIGFmdGVyIGEgZmFpbGVkIGFzc2VydGlvbiBvciBhIFNV
Q0NFU1MoKS4KKyAgLy8gRmlyZWQgYWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VF
RCgpIGludm9jYXRpb24uCisgIC8vIElmIHlvdSB3YW50IHRvIHRocm93IGFuIGV4Y2VwdGlvbiBm
cm9tIHRoaXMgZnVuY3Rpb24gdG8gc2tpcCB0byB0aGUgbmV4dAorICAvLyBURVNULCBpdCBtdXN0
IGJlIEFzc2VydGlvbkV4Y2VwdGlvbiBkZWZpbmVkIGFib3ZlLCBvciBpbmhlcml0ZWQgZnJvbSBp
dC4KICAgdmlydHVhbCB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQm
IHRlc3RfcGFydF9yZXN1bHQpID0gMDsKIAogICAvLyBGaXJlZCBhZnRlciB0aGUgdGVzdCBlbmRz
LgpAQCAtOTYxLDEwICsxMTQ1LDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdEV2ZW50TGlzdGVu
ZXJzIHsKIAogIHByaXZhdGU6CiAgIGZyaWVuZCBjbGFzcyBUZXN0Q2FzZTsKKyAgZnJpZW5kIGNs
YXNzIFRlc3RJbmZvOwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkRlZmF1bHRHbG9iYWxUZXN0
UGFydFJlc3VsdFJlcG9ydGVyOwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6Ok5vRXhlY0RlYXRo
VGVzdDsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3Nv
cjsKLSAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpUZXN0SW5mb0ltcGw7CiAgIGZyaWVuZCBjbGFz
cyBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsOwogCiAgIC8vIFJldHVybnMgcmVwZWF0ZXIgdGhhdCBi
cm9hZGNhc3RzIHRoZSBUZXN0RXZlbnRMaXN0ZW5lciBldmVudHMgdG8gYWxsCkBAIC0xMDMyLDIy
ICsxMjE2LDIzIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3QgewogCiAgIC8vIFJldHVybnMg
dGhlIFRlc3RDYXNlIG9iamVjdCBmb3IgdGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5n
LAogICAvLyBvciBOVUxMIGlmIG5vIHRlc3QgaXMgcnVubmluZy4KLSAgY29uc3QgVGVzdENhc2Uq
IGN1cnJlbnRfdGVzdF9jYXNlKCkgY29uc3Q7CisgIGNvbnN0IFRlc3RDYXNlKiBjdXJyZW50X3Rl
c3RfY2FzZSgpIGNvbnN0CisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCiAg
IC8vIFJldHVybnMgdGhlIFRlc3RJbmZvIG9iamVjdCBmb3IgdGhlIHRlc3QgdGhhdCdzIGN1cnJl
bnRseSBydW5uaW5nLAogICAvLyBvciBOVUxMIGlmIG5vIHRlc3QgaXMgcnVubmluZy4KLSAgY29u
c3QgVGVzdEluZm8qIGN1cnJlbnRfdGVzdF9pbmZvKCkgY29uc3Q7CisgIGNvbnN0IFRlc3RJbmZv
KiBjdXJyZW50X3Rlc3RfaW5mbygpIGNvbnN0CisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyht
dXRleF8pOwogCiAgIC8vIFJldHVybnMgdGhlIHJhbmRvbSBzZWVkIHVzZWQgYXQgdGhlIHN0YXJ0
IG9mIHRoZSBjdXJyZW50IHRlc3QgcnVuLgogICBpbnQgcmFuZG9tX3NlZWQoKSBjb25zdDsKIAot
I2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiAgIC8vIFJldHVybnMgdGhlIFBhcmFtZXRlcml6ZWRU
ZXN0Q2FzZVJlZ2lzdHJ5IG9iamVjdCB1c2VkIHRvIGtlZXAgdHJhY2sgb2YKICAgLy8gdmFsdWUt
cGFyYW1ldGVyaXplZCB0ZXN0cyBhbmQgaW5zdGFudGlhdGUgYW5kIHJlZ2lzdGVyIHRoZW0uCiAg
IC8vCiAgIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIg
UFJPR1JBTS4KLSAgaW50ZXJuYWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5JiBwYXJh
bWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RF
U1QKKyAgaW50ZXJuYWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5JiBwYXJhbWV0ZXJp
emVkX3Rlc3RfcmVnaXN0cnkoKQorICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKTsK
IAogICAvLyBHZXRzIHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCB0ZXN0IGNhc2VzLgogICBpbnQg
c3VjY2Vzc2Z1bF90ZXN0X2Nhc2VfY291bnQoKSBjb25zdDsKQEAgLTEwNjgsMTUgKzEyNTMsMjUg
QEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdCB7CiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBm
YWlsZWQgdGVzdHMuCiAgIGludCBmYWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0OwogCisgIC8vIEdl
dHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgaW4g
dGhlIFhNTCByZXBvcnQuCisgIGludCByZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSBj
b25zdDsKKwogICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMuCiAgIGludCBk
aXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CiAKKyAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRl
c3RzIHRvIGJlIHByaW50ZWQgaW4gdGhlIFhNTCByZXBvcnQuCisgIGludCByZXBvcnRhYmxlX3Rl
c3RfY291bnQoKSBjb25zdDsKKwogICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgYWxsIHRlc3RzLgog
ICBpbnQgdG90YWxfdGVzdF9jb3VudCgpIGNvbnN0OwogCiAgIC8vIEdldHMgdGhlIG51bWJlciBv
ZiB0ZXN0cyB0aGF0IHNob3VsZCBydW4uCiAgIGludCB0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0
OwogCisgIC8vIEdldHMgdGhlIHRpbWUgb2YgdGhlIHRlc3QgcHJvZ3JhbSBzdGFydCwgaW4gbXMg
ZnJvbSB0aGUgc3RhcnQgb2YgdGhlCisgIC8vIFVOSVggZXBvY2guCisgIFRpbWVJbk1pbGxpcyBz
dGFydF90aW1lc3RhbXAoKSBjb25zdDsKKwogICAvLyBHZXRzIHRoZSBlbGFwc2VkIHRpbWUsIGlu
IG1pbGxpc2Vjb25kcy4KICAgVGltZUluTWlsbGlzIGVsYXBzZWRfdGltZSgpIGNvbnN0OwogCkBA
IC0xMDkxLDYgKzEyODYsMTAgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdCB7CiAgIC8vIHRv
dGFsX3Rlc3RfY2FzZV9jb3VudCgpIC0gMS4gSWYgaSBpcyBub3QgaW4gdGhhdCByYW5nZSwgcmV0
dXJucyBOVUxMLgogICBjb25zdCBUZXN0Q2FzZSogR2V0VGVzdENhc2UoaW50IGkpIGNvbnN0Owog
CisgIC8vIFJldHVybnMgdGhlIFRlc3RSZXN1bHQgY29udGFpbmluZyBpbmZvcm1hdGlvbiBvbiB0
ZXN0IGZhaWx1cmVzIGFuZAorICAvLyBwcm9wZXJ0aWVzIGxvZ2dlZCBvdXRzaWRlIG9mIGluZGl2
aWR1YWwgdGVzdCBjYXNlcy4KKyAgY29uc3QgVGVzdFJlc3VsdCYgYWRfaG9jX3Rlc3RfcmVzdWx0
KCkgY29uc3Q7CisKICAgLy8gUmV0dXJucyB0aGUgbGlzdCBvZiBldmVudCBsaXN0ZW5lcnMgdGhh
dCBjYW4gYmUgdXNlZCB0byB0cmFjayBldmVudHMKICAgLy8gaW5zaWRlIEdvb2dsZSBUZXN0Lgog
ICBUZXN0RXZlbnRMaXN0ZW5lcnMmIGxpc3RlbmVycygpOwpAQCAtMTExNCwxMiArMTMxMywxNiBA
QCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0IHsKICAgdm9pZCBBZGRUZXN0UGFydFJlc3VsdChU
ZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBmaWxlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxp
bmVfbnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludGVybmFsOjpTdHJp
bmcmIG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJuYWw6OlN0
cmluZyYgb3Nfc3RhY2tfdHJhY2UpOworICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBvc19zdGFja190cmFjZSkKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4
Xyk7CiAKLSAgLy8gQWRkcyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUgY3VycmVudCBUZXN0UmVzdWx0
IG9iamVjdC4gSWYgdGhlIHJlc3VsdCBhbHJlYWR5Ci0gIC8vIGNvbnRhaW5zIGEgcHJvcGVydHkg
d2l0aCB0aGUgc2FtZSBrZXksIHRoZSB2YWx1ZSB3aWxsIGJlIHVwZGF0ZWQuCi0gIHZvaWQgUmVj
b3JkUHJvcGVydHlGb3JDdXJyZW50VGVzdChjb25zdCBjaGFyKiBrZXksIGNvbnN0IGNoYXIqIHZh
bHVlKTsKKyAgLy8gQWRkcyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUgY3VycmVudCBUZXN0UmVzdWx0
IG9iamVjdCB3aGVuIGludm9rZWQgZnJvbQorICAvLyBpbnNpZGUgYSB0ZXN0LCB0byBjdXJyZW50
IFRlc3RDYXNlJ3MgYWRfaG9jX3Rlc3RfcmVzdWx0XyB3aGVuIGludm9rZWQKKyAgLy8gZnJvbSBT
ZXRVcFRlc3RDYXNlIG9yIFRlYXJEb3duVGVzdENhc2UsIG9yIHRvIHRoZSBnbG9iYWwgcHJvcGVy
dHkgc2V0CisgIC8vIHdoZW4gaW52b2tlZCBlbHNld2hlcmUuICBJZiB0aGUgcmVzdWx0IGFscmVh
ZHkgY29udGFpbnMgYSBwcm9wZXJ0eSB3aXRoCisgIC8vIHRoZSBzYW1lIGtleSwgdGhlIHZhbHVl
IHdpbGwgYmUgdXBkYXRlZC4KKyAgdm9pZCBSZWNvcmRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmlu
ZyYga2V5LCBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpOwogCiAgIC8vIEdldHMgdGhlIGktdGgg
dGVzdCBjYXNlIGFtb25nIGFsbCB0aGUgdGVzdCBjYXNlcy4gaSBjYW4gcmFuZ2UgZnJvbSAwIHRv
CiAgIC8vIHRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpIC0gMS4gSWYgaSBpcyBub3QgaW4gdGhhdCBy
YW5nZSwgcmV0dXJucyBOVUxMLgpAQCAtMTEyOSwxNiArMTMzMiwxOCBAQCBjbGFzcyBHVEVTVF9B
UElfIFVuaXRUZXN0IHsKICAgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCogaW1wbCgpIHsgcmV0dXJu
IGltcGxfOyB9CiAgIGNvbnN0IGludGVybmFsOjpVbml0VGVzdEltcGwqIGltcGwoKSBjb25zdCB7
IHJldHVybiBpbXBsXzsgfQogCi0gIC8vIFRoZXNlIGNsYXNzZXMgYW5kIGZ1bmNpb25zIGFyZSBm
cmllbmRzIGFzIHRoZXkgbmVlZCB0byBhY2Nlc3MgcHJpdmF0ZQorICAvLyBUaGVzZSBjbGFzc2Vz
IGFuZCBmdW5jdGlvbnMgYXJlIGZyaWVuZHMgYXMgdGhleSBuZWVkIHRvIGFjY2VzcyBwcml2YXRl
CiAgIC8vIG1lbWJlcnMgb2YgVW5pdFRlc3QuCisgIGZyaWVuZCBjbGFzcyBTY29wZWRUcmFjZTsK
ICAgZnJpZW5kIGNsYXNzIFRlc3Q7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6QXNzZXJ0SGVs
cGVyOwotICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlNjb3BlZFRyYWNlOworICBmcmllbmQgY2xh
c3MgaW50ZXJuYWw6OlN0cmVhbWluZ0xpc3RlbmVyVGVzdDsKKyAgZnJpZW5kIGNsYXNzIGludGVy
bmFsOjpVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdEhlbHBlcjsKICAgZnJpZW5kIEVudmlyb25t
ZW50KiBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoRW52aXJvbm1lbnQqIGVudik7CiAgIGZyaWVu
ZCBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBpbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCk7CiAg
IGZyaWVuZCB2b2lkIGludGVybmFsOjpSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oCiAg
ICAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKLSAgICAgIGNvbnN0IGludGVy
bmFsOjpTdHJpbmcmIG1lc3NhZ2UpOworICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2Up
OwogCiAgIC8vIENyZWF0ZXMgYW4gZW1wdHkgVW5pdFRlc3QuCiAgIFVuaXRUZXN0KCk7CkBAIC0x
MTQ4LDEwICsxMzUzLDEyIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3QgewogCiAgIC8vIFB1
c2hlcyBhIHRyYWNlIGRlZmluZWQgYnkgU0NPUEVEX1RSQUNFKCkgb24gdG8gdGhlIHBlci10aHJl
YWQKICAgLy8gR29vZ2xlIFRlc3QgdHJhY2Ugc3RhY2suCi0gIHZvaWQgUHVzaEdUZXN0VHJhY2Uo
Y29uc3QgaW50ZXJuYWw6OlRyYWNlSW5mbyYgdHJhY2UpOworICB2b2lkIFB1c2hHVGVzdFRyYWNl
KGNvbnN0IGludGVybmFsOjpUcmFjZUluZm8mIHRyYWNlKQorICAgICAgR1RFU1RfTE9DS19FWENM
VURFRF8obXV0ZXhfKTsKIAogICAvLyBQb3BzIGEgdHJhY2UgZnJvbSB0aGUgcGVyLXRocmVhZCBH
b29nbGUgVGVzdCB0cmFjZSBzdGFjay4KLSAgdm9pZCBQb3BHVGVzdFRyYWNlKCk7CisgIHZvaWQg
UG9wR1Rlc3RUcmFjZSgpCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCiAg
IC8vIFByb3RlY3RzIG11dGFibGUgc3RhdGUgaW4gKmltcGxfLiAgVGhpcyBpcyBtdXRhYmxlIGFz
IHNvbWUgY29uc3QKICAgLy8gbWV0aG9kcyBuZWVkIHRvIGxvY2sgaXQgdG9vLgpAQCAtMTIwNiw4
MiArMTQxMyw0MCBAQCBHVEVTVF9BUElfIHZvaWQgSW5pdEdvb2dsZVRlc3QoaW50KiBhcmdjLCB3
Y2hhcl90KiogYXJndik7CiAKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKLS8vIFRoZXNlIG92ZXJs
b2FkZWQgdmVyc2lvbnMgaGFuZGxlIDo6c3RkOjpzdHJpbmcgYW5kIDo6c3RkOjp3c3RyaW5nLgot
R1RFU1RfQVBJXyBpbmxpbmUgU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKGNvbnN0IDo6
c3RkOjpzdHJpbmcmIHN0cikgewotICByZXR1cm4gKE1lc3NhZ2UoKSA8PCAnIicgPDwgc3RyIDw8
ICciJykuR2V0U3RyaW5nKCk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKLUdURVNU
X0FQSV8gaW5saW5lIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjb25zdCA6OnN0ZDo6
d3N0cmluZyYgd3N0cikgewotICByZXR1cm4gKE1lc3NhZ2UoKSA8PCAiTFwiIiA8PCB3c3RyIDw8
ICciJykuR2V0U3RyaW5nKCk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORwot
Ci0vLyBUaGVzZSBvdmVybG9hZGVkIHZlcnNpb25zIGhhbmRsZSA6OnN0cmluZyBhbmQgOjp3c3Ry
aW5nLgotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi1HVEVTVF9BUElfIGlubGluZSBTdHJp
bmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3QgOjpzdHJpbmcmIHN0cikgewotICByZXR1
cm4gKE1lc3NhZ2UoKSA8PCAnIicgPDwgc3RyIDw8ICciJykuR2V0U3RyaW5nKCk7Ci19Ci0jZW5k
aWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0KLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1dT
VFJJTkcKLUdURVNUX0FQSV8gaW5saW5lIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShj
b25zdCA6OndzdHJpbmcmIHdzdHIpIHsKLSAgcmV0dXJuIChNZXNzYWdlKCkgPDwgIkxcIiIgPDwg
d3N0ciA8PCAnIicpLkdldFN0cmluZygpOwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFM
X1dTVFJJTkcKLQotLy8gRm9ybWF0cyBhIGNvbXBhcmlzb24gYXNzZXJ0aW9uIChlLmcuIEFTU0VS
VF9FUSwgRVhQRUNUX0xULCBhbmQgZXRjKQotLy8gb3BlcmFuZCB0byBiZSB1c2VkIGluIGEgZmFp
bHVyZSBtZXNzYWdlLiAgVGhlIHR5cGUgKGJ1dCBub3QgdmFsdWUpCi0vLyBvZiB0aGUgb3RoZXIg
b3BlcmFuZCBtYXkgYWZmZWN0IHRoZSBmb3JtYXQuICBUaGlzIGFsbG93cyB1cyB0bwotLy8gcHJp
bnQgYSBjaGFyKiBhcyBhIHJhdyBwb2ludGVyIHdoZW4gaXQgaXMgY29tcGFyZWQgYWdhaW5zdCBh
bm90aGVyCi0vLyBjaGFyKiwgYW5kIHByaW50IGl0IGFzIGEgQyBzdHJpbmcgd2hlbiBpdCBpcyBj
b21wYXJlZCBhZ2FpbnN0IGFuCi0vLyBzdGQ6OnN0cmluZyBvYmplY3QsIGZvciBleGFtcGxlLgot
Ly8KLS8vIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlnbm9yZXMgdGhlIHR5cGUgb2YgdGhl
IG90aGVyIG9wZXJhbmQuCi0vLyBTb21lIHNwZWNpYWxpemVkIHZlcnNpb25zIGFyZSB1c2VkIHRv
IGhhbmRsZSBmb3JtYXR0aW5nIHdpZGUgb3IKLS8vIG5hcnJvdyBDIHN0cmluZ3MuCi0vLwotLy8g
SU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgor
Ly8gU2VwYXJhdGUgdGhlIGVycm9yIGdlbmVyYXRpbmcgY29kZSBmcm9tIHRoZSBjb2RlIHBhdGgg
dG8gcmVkdWNlIHRoZSBzdGFjaworLy8gZnJhbWUgc2l6ZSBvZiBDbXBIZWxwZXJFUS4gVGhpcyBo
ZWxwcyByZWR1Y2UgdGhlIG92ZXJoZWFkIG9mIHNvbWUgc2FuaXRpemVycworLy8gd2hlbiBjYWxs
aW5nIEVYUEVDVF8qIGluIGEgdGlnaHQgbG9vcC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDI+Ci1TdHJpbmcgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKGNvbnN0
IFQxJiB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVDImIC8qIG90aGVyX29wZXJhbmQgKi8pIHsKLSAgcmV0dXJuIEZvcm1hdEZvckZhaWx1cmVN
ZXNzYWdlKHZhbHVlKTsKK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJFUUZhaWx1cmUoY29uc3Qg
Y2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUMSYgbGhzLCBjb25zdCBUMiYgcmhzKSB7CisgIHJldHVybiBFcUZhaWx1
cmUobGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKGxocywg
cmhzKSwKKyAgICAgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2UocmhzLCBsaHMpLAorICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKIH0KIAogLy8gVGhlIGhl
bHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X0VRLgogdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMj4KLUFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJFUShjb25zdCBjaGFy
KiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFQxJiBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYg
YWN0dWFsKSB7Ci0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhwdXNoKSAgICAgICAg
ICAvLyBTYXZlcyB0aGUgY3VycmVudCB3YXJuaW5nIHN0YXRlLgotI3ByYWdtYSB3YXJuaW5nKGRp
c2FibGU6NDM4OSkgIC8vIFRlbXBvcmFyaWx5IGRpc2FibGVzIHdhcm5pbmcgb24KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2guCi0jZW5k
aWYKLQotICBpZiAoZXhwZWN0ZWQgPT0gYWN0dWFsKSB7CitBc3NlcnRpb25SZXN1bHQgQ21wSGVs
cGVyRVEoY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVDEmIGxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
MiYgcmhzKSB7CisgIGlmIChsaHMgPT0gcmhzKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nl
c3MoKTsKICAgfQogCi0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhwb3ApICAgICAg
ICAgIC8vIFJlc3RvcmVzIHRoZSB3YXJuaW5nIHN0YXRlLgotI2VuZGlmCi0KLSAgcmV0dXJuIEVx
RmFpbHVyZShleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIGFjdHVhbF9l
eHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJl
TWVzc2FnZShleHBlY3RlZCwgYWN0dWFsKSwKLSAgICAgICAgICAgICAgICAgICBGb3JtYXRGb3JD
b21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoYWN0dWFsLCBleHBlY3RlZCksCi0gICAgICAgICAgICAg
ICAgICAgZmFsc2UpOworICByZXR1cm4gQ21wSGVscGVyRVFGYWlsdXJlKGxoc19leHByZXNzaW9u
LCByaHNfZXhwcmVzc2lvbiwgbGhzLCByaHMpOwogfQogCiAvLyBXaXRoIHRoaXMgb3ZlcmxvYWRl
ZCB2ZXJzaW9uLCB3ZSBhbGxvdyBhbm9ueW1vdXMgZW51bXMgdG8gYmUgdXNlZAogLy8gaW4ge0FT
U0VSVHxFWFBFQ1R9X0VRIHdoZW4gY29tcGlsZWQgd2l0aCBnY2MgNCwgYXMgYW5vbnltb3VzIGVu
dW1zCiAvLyBjYW4gYmUgaW1wbGljaXRseSBjYXN0IHRvIEJpZ2dlc3RJbnQuCi1HVEVTVF9BUElf
IEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJFUShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNz
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
YWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCaWdnZXN0SW50IGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQmlnZ2VzdEludCBhY3R1YWwpOworR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21w
SGVscGVyRVEoY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgbGhzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCByaHMpOwogCiAvLyBUaGUg
aGVscGVyIGNsYXNzIGZvciB7QVNTRVJUfEVYUEVDVH1fRVEuICBUaGUgdGVtcGxhdGUgYXJndW1l
bnQKIC8vIGxoc19pc19udWxsX2xpdGVyYWwgaXMgdHJ1ZSBpZmYgdGhlIGZpcnN0IGFyZ3VtZW50
IHRvIEFTU0VSVF9FUSgpCkBAIC0xMjkyLDEyICsxNDU3LDExIEBAIGNsYXNzIEVxSGVscGVyIHsK
ICBwdWJsaWM6CiAgIC8vIFRoaXMgdGVtcGxhdGl6ZWQgdmVyc2lvbiBpcyBmb3IgdGhlIGdlbmVy
YWwgY2FzZS4KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgc3RhdGlj
IEFzc2VydGlvblJlc3VsdCBDb21wYXJlKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhw
cmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiBleHBl
Y3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiBhY3R1YWwp
IHsKLSAgICByZXR1cm4gQ21wSGVscGVyRVEoZXhwZWN0ZWRfZXhwcmVzc2lvbiwgYWN0dWFsX2V4
cHJlc3Npb24sIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWwpOworICBz
dGF0aWMgQXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUoY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVz
c2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiBsaHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgcmhzKSB7CisgICAgcmV0
dXJuIENtcEhlbHBlckVRKGxoc19leHByZXNzaW9uLCByaHNfZXhwcmVzc2lvbiwgbGhzLCByaHMp
OwogICB9CiAKICAgLy8gV2l0aCB0aGlzIG92ZXJsb2FkZWQgdmVyc2lvbiwgd2UgYWxsb3cgYW5v
bnltb3VzIGVudW1zIHRvIGJlIHVzZWQKQEAgLTEzMDYsMTcgKzE0NzAsMTYgQEAgY2xhc3MgRXFI
ZWxwZXIgewogICAvLwogICAvLyBFdmVuIHRob3VnaCBpdHMgYm9keSBsb29rcyB0aGUgc2FtZSBh
cyB0aGUgYWJvdmUgdmVyc2lvbiwgd2UKICAgLy8gY2Fubm90IG1lcmdlIHRoZSB0d28sIGFzIGl0
IHdpbGwgbWFrZSBhbm9ueW1vdXMgZW51bXMgdW5oYXBweS4KLSAgc3RhdGljIEFzc2VydGlvblJl
c3VsdCBDb21wYXJlKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgZXhwZWN0ZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGFjdHVhbCkgewotICAgIHJl
dHVybiBDbXBIZWxwZXJFUShleHBlY3RlZF9leHByZXNzaW9uLCBhY3R1YWxfZXhwcmVzc2lvbiwg
ZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbCk7CisgIHN0YXRpYyBBc3Nl
cnRpb25SZXN1bHQgQ29tcGFyZShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBsaHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IHJocykgeworICAgIHJldHVybiBDbXBI
ZWxwZXJFUShsaHNfZXhwcmVzc2lvbiwgcmhzX2V4cHJlc3Npb24sIGxocywgcmhzKTsKICAgfQog
fTsKIAogLy8gVGhpcyBzcGVjaWFsaXphdGlvbiBpcyB1c2VkIHdoZW4gdGhlIGZpcnN0IGFyZ3Vt
ZW50IHRvIEFTU0VSVF9FUSgpCi0vLyBpcyBhIG51bGwgcG9pbnRlciBsaXRlcmFsLgorLy8gaXMg
YSBudWxsIHBvaW50ZXIgbGl0ZXJhbCwgbGlrZSBOVUxMLCBmYWxzZSwgb3IgMC4KIHRlbXBsYXRl
IDw+CiBjbGFzcyBFcUhlbHBlcjx0cnVlPiB7CiAgcHVibGljOgpAQCAtMTMyNSwyNyArMTQ4OCw1
MyBAQCBjbGFzcyBFcUhlbHBlcjx0cnVlPiB7CiAgIC8vIE5PVCBhIHBvaW50ZXIsIGUuZy4gQVNT
RVJUX0VRKDAsIEFuSW50RnVuY3Rpb24oKSkgb3IKICAgLy8gRVhQRUNUX0VRKGZhbHNlLCBhX2Jv
b2wpLgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICBzdGF0aWMgQXNz
ZXJ0aW9uUmVzdWx0IENvbXBhcmUoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNz
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGV4cGVjdGVk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDImIGFjdHVhbCkgewot
ICAgIHJldHVybiBDbXBIZWxwZXJFUShleHBlY3RlZF9leHByZXNzaW9uLCBhY3R1YWxfZXhwcmVz
c2lvbiwgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbCk7CisgIHN0YXRp
YyBBc3NlcnRpb25SZXN1bHQgQ29tcGFyZSgKKyAgICAgIGNvbnN0IGNoYXIqIGxoc19leHByZXNz
aW9uLAorICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICBjb25zdCBUMSYg
bGhzLAorICAgICAgY29uc3QgVDImIHJocywKKyAgICAgIC8vIFRoZSBmb2xsb3dpbmcgbGluZSBw
cmV2ZW50cyB0aGlzIG92ZXJsb2FkIGZyb20gYmVpbmcgY29uc2lkZXJlZCBpZiBUMgorICAgICAg
Ly8gaXMgbm90IGEgcG9pbnRlciB0eXBlLiAgV2UgbmVlZCB0aGlzIGJlY2F1c2UgQVNTRVJUX0VR
KE5VTEwsIG15X3B0cikKKyAgICAgIC8vIGV4cGFuZHMgdG8gQ29tcGFyZSgiIiwgIiIsIE5VTEws
IG15X3B0ciksIHdoaWNoIHJlcXVpcmVzIGEgY29udmVyc2lvbgorICAgICAgLy8gdG8gbWF0Y2gg
dGhlIFNlY3JldCogaW4gdGhlIG90aGVyIG92ZXJsb2FkLCB3aGljaCB3b3VsZCBvdGhlcndpc2Ug
bWFrZQorICAgICAgLy8gdGhpcyB0ZW1wbGF0ZSBtYXRjaCBiZXR0ZXIuCisgICAgICB0eXBlbmFt
ZSBFbmFibGVJZjwhaXNfcG9pbnRlcjxUMj46OnZhbHVlPjo6dHlwZSogPSAwKSB7CisgICAgcmV0
dXJuIENtcEhlbHBlckVRKGxoc19leHByZXNzaW9uLCByaHNfZXhwcmVzc2lvbiwgbGhzLCByaHMp
OwogICB9CiAKLSAgLy8gVGhpcyB2ZXJzaW9uIHdpbGwgYmUgcGlja2VkIHdoZW4gdGhlIHNlY29u
ZCBhcmd1bWVudCB0bwotICAvLyBBU1NFUlRfRVEoKSBpcyBhIHBvaW50ZXIsIGUuZy4gQVNTRVJU
X0VRKE5VTEwsIGFfcG9pbnRlcikuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDI+Ci0gIHN0YXRpYyBBc3NlcnRpb25SZXN1bHQgQ29tcGFyZShjb25zdCBjaGFyKiBleHBlY3Rl
ZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUMSYgLyogZXhwZWN0ZWQgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUMiogYWN0dWFsKSB7Ci0gICAgLy8gV2UgYWxyZWFkeSBrbm93IHRoYXQgJ2V4cGVjdGVkJyBp
cyBhIG51bGwgcG9pbnRlci4KLSAgICByZXR1cm4gQ21wSGVscGVyRVEoZXhwZWN0ZWRfZXhwcmVz
c2lvbiwgYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PFQyKj4oTlVMTCksIGFjdHVhbCk7CisgIC8vIFRoaXMgdmVyc2lvbiB3aWxsIGJlIHBpY2tl
ZCB3aGVuIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gQVNTRVJUX0VRKCkgaXMgYQorICAvLyBwb2lu
dGVyLCBlLmcuIEFTU0VSVF9FUShOVUxMLCBhX3BvaW50ZXIpLgorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KKyAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBDb21wYXJlKAorICAgICAgY29uc3QgY2hh
ciogbGhzX2V4cHJlc3Npb24sCisgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAg
ICAgIC8vIFdlIHVzZWQgdG8gaGF2ZSBhIHNlY29uZCB0ZW1wbGF0ZSBwYXJhbWV0ZXIgaW5zdGVh
ZCBvZiBTZWNyZXQqLiAgVGhhdAorICAgICAgLy8gdGVtcGxhdGUgcGFyYW1ldGVyIHdvdWxkIGRl
ZHVjZSB0byAnbG9uZycsIG1ha2luZyB0aGlzIGEgYmV0dGVyIG1hdGNoCisgICAgICAvLyB0aGFu
IHRoZSBmaXJzdCBvdmVybG9hZCBldmVuIHdpdGhvdXQgdGhlIGZpcnN0IG92ZXJsb2FkJ3MgRW5h
YmxlSWYuCisgICAgICAvLyBVbmZvcnR1bmF0ZWx5LCBnY2Mgd2l0aCAtV2NvbnZlcnNpb24tbnVs
bCB3YXJucyB3aGVuICJwYXNzaW5nIE5VTEwgdG8KKyAgICAgIC8vIG5vbi1wb2ludGVyIGFyZ3Vt
ZW50IiAoZXZlbiBhIGRlZHVjZWQgaW50ZWdyYWwgYXJndW1lbnQpLCBzbyB0aGUgb2xkCisgICAg
ICAvLyBpbXBsZW1lbnRhdGlvbiBjYXVzZWQgd2FybmluZ3MgaW4gdXNlciBjb2RlLgorICAgICAg
U2VjcmV0KiAvKiBsaHMgKE5VTEwpICovLAorICAgICAgVCogcmhzKSB7CisgICAgLy8gV2UgYWxy
ZWFkeSBrbm93IHRoYXQgJ2xocycgaXMgYSBudWxsIHBvaW50ZXIuCisgICAgcmV0dXJuIENtcEhl
bHBlckVRKGxoc19leHByZXNzaW9uLCByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8VCo+KE5VTEwpLCByaHMpOwogICB9CiB9OwogCisvLyBTZXBhcmF0
ZSB0aGUgZXJyb3IgZ2VuZXJhdGluZyBjb2RlIGZyb20gdGhlIGNvZGUgcGF0aCB0byByZWR1Y2Ug
dGhlIHN0YWNrCisvLyBmcmFtZSBzaXplIG9mIENtcEhlbHBlck9QLiBUaGlzIGhlbHBzIHJlZHVj
ZSB0aGUgb3ZlcmhlYWQgb2Ygc29tZSBzYW5pdGl6ZXJzCisvLyB3aGVuIGNhbGxpbmcgRVhQRUNU
X09QIGluIGEgdGlnaHQgbG9vcC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+
CitBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyT3BGYWlsdXJlKGNvbnN0IGNoYXIqIGV4cHIxLCBj
b25zdCBjaGFyKiBleHByMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVDEmIHZhbDEsIGNvbnN0IFQyJiB2YWwyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBvcCkgeworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpCisg
ICAgICAgICA8PCAiRXhwZWN0ZWQ6ICgiIDw8IGV4cHIxIDw8ICIpICIgPDwgb3AgPDwgIiAoIiA8
PCBleHByMgorICAgICAgICAgPDwgIiksIGFjdHVhbDogIiA8PCBGb3JtYXRGb3JDb21wYXJpc29u
RmFpbHVyZU1lc3NhZ2UodmFsMSwgdmFsMikKKyAgICAgICAgIDw8ICIgdnMgIiA8PCBGb3JtYXRG
b3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UodmFsMiwgdmFsMSk7Cit9CisKIC8vIEEgbWFjcm8g
Zm9yIGltcGxlbWVudGluZyB0aGUgaGVscGVyIGZ1bmN0aW9ucyBuZWVkZWQgdG8gaW1wbGVtZW50
CiAvLyBBU1NFUlRfPz8gYW5kIEVYUEVDVF8/Py4gIEl0IGlzIGhlcmUganVzdCB0byBhdm9pZCBj
b3B5LWFuZC1wYXN0ZQogLy8gb2Ygc2ltaWxhciBjb2RlLgpAQCAtMTM1Niw2ICsxNTQ1LDcgQEAg
Y2xhc3MgRXFIZWxwZXI8dHJ1ZT4gewogLy8gd2l0aCBnY2MgNC4KIC8vCiAvLyBJTlRFUk5BTCBJ
TVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCisKICNkZWZpbmUg
R1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhvcF9uYW1lLCBvcClcCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyPlwKIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXIjI29wX25hbWUoY29u
c3QgY2hhciogZXhwcjEsIGNvbnN0IGNoYXIqIGV4cHIyLCBcCkBAIC0xMzYzLDExICsxNTUzLDcg
QEAgQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlciMjb3BfbmFtZShjb25zdCBjaGFyKiBleHByMSwg
Y29uc3QgY2hhciogZXhwcjIsIFwKICAgaWYgKHZhbDEgb3AgdmFsMikge1wKICAgICByZXR1cm4g
QXNzZXJ0aW9uU3VjY2VzcygpO1wKICAgfSBlbHNlIHtcCi0gICAgTWVzc2FnZSBtc2c7XAotICAg
IG1zZyA8PCAiRXhwZWN0ZWQ6ICgiIDw8IGV4cHIxIDw8ICIpICIgI29wICIgKCIgPDwgZXhwcjJc
Ci0gICAgICAgIDw8ICIpLCBhY3R1YWw6ICIgPDwgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVN
ZXNzYWdlKHZhbDEsIHZhbDIpXAotICAgICAgICA8PCAiIHZzICIgPDwgRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlKHZhbDIsIHZhbDEpO1wKLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFp
bHVyZShtc2cpO1wKKyAgICByZXR1cm4gQ21wSGVscGVyT3BGYWlsdXJlKGV4cHIxLCBleHByMiwg
dmFsMSwgdmFsMiwgI29wKTtcCiAgIH1cCiB9XAogR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQg
Q21wSGVscGVyIyNvcF9uYW1lKFwKQEAgLTEzODAsMjkgKzE1NjYsMjkgQEAgR1RFU1RfSU1QTF9D
TVBfSEVMUEVSXyhORSwgIT0pOwogLy8gSW1wbGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9uIGZv
ciB7QVNTRVJUfEVYUEVDVH1fTEUKIEdURVNUX0lNUExfQ01QX0hFTFBFUl8oTEUsIDw9KTsKIC8v
IEltcGxlbWVudHMgdGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X0xUCi1H
VEVTVF9JTVBMX0NNUF9IRUxQRVJfKExULCA8ICk7CitHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKExU
LCA8KTsKIC8vIEltcGxlbWVudHMgdGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBF
Q1R9X0dFCiBHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKEdFLCA+PSk7CiAvLyBJbXBsZW1lbnRzIHRo
ZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9HVAotR1RFU1RfSU1QTF9DTVBf
SEVMUEVSXyhHVCwgPiApOworR1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhHVCwgPik7CiAKICN1bmRl
ZiBHVEVTVF9JTVBMX0NNUF9IRUxQRVJfCiAKIC8vIFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtB
U1NFUlR8RVhQRUNUfV9TVFJFUS4KIC8vCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERP
IE5PVCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCi1HVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBD
bXBIZWxwZXJTVFJFUShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJl
c3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGFjdHVhbCk7CitHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxw
ZXJTVFJFUShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczJfZXhwcmVzc2lvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczIpOwogCiAv
LyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fU1RSQ0FTRUVRLgogLy8K
IC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JB
TS4KLUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VFUShjb25zdCBj
aGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGFjdHVhbCk7CitHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJDQVNF
RVEoY29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMl9leHByZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMxLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMy
KTsKIAogLy8gVGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NUUk5FLgog
Ly8KQEAgLTE0MjQsMTAgKzE2MTAsMTAgQEAgR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21w
SGVscGVyU1RSQ0FTRU5FKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24sCiAvLyBIZWxwZXIgZnVu
Y3Rpb24gZm9yICpfU1RSRVEgb24gd2lkZSBzdHJpbmdzLgogLy8KIC8vIElOVEVSTkFMIElNUExF
TUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KLUdURVNUX0FQSV8gQXNz
ZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHdjaGFyX3QqIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogYWN0dWFsKTsKK0dURVNUX0FQSV8gQXNz
ZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMl9l
eHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgd2NoYXJfdCogczEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB3Y2hhcl90KiBzMik7CiAKIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgKl9TVFJORSBv
biB3aWRlIHN0cmluZ3MuCiAvLwpAQCAtMTQ4NSwyOCArMTY3MSwyOCBAQCBuYW1lc3BhY2UgaW50
ZXJuYWwgewogLy8KIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBB
IFVTRVIgUFJPR1JBTS4KIHRlbXBsYXRlIDx0eXBlbmFtZSBSYXdUeXBlPgotQXNzZXJ0aW9uUmVz
dWx0IENtcEhlbHBlckZsb2F0aW5nUG9pbnRFUShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNz
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmF3VHlwZSBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmF3VHlwZSBhY3R1YWwpIHsKLSAgY29uc3QgRmxvYXRpbmdQb2ludDxSYXdUeXBl
PiBsaHMoZXhwZWN0ZWQpLCByaHMoYWN0dWFsKTsKK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJG
bG9hdGluZ1BvaW50RVEoY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdUeXBlIGxoc192YWx1
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmF3VHlwZSByaHNf
dmFsdWUpIHsKKyAgY29uc3QgRmxvYXRpbmdQb2ludDxSYXdUeXBlPiBsaHMobGhzX3ZhbHVlKSwg
cmhzKHJoc192YWx1ZSk7CiAKICAgaWYgKGxocy5BbG1vc3RFcXVhbHMocmhzKSkgewogICAgIHJl
dHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAgIH0KIAotICBTdHJTdHJlYW0gZXhwZWN0ZWRfc3M7
Ci0gIGV4cGVjdGVkX3NzIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8
UmF3VHlwZT46OmRpZ2l0czEwICsgMikKLSAgICAgICAgICAgICAgPDwgZXhwZWN0ZWQ7CisgIDo6
c3RkOjpzdHJpbmdzdHJlYW0gbGhzX3NzOworICBsaHNfc3MgPDwgc3RkOjpzZXRwcmVjaXNpb24o
c3RkOjpudW1lcmljX2xpbWl0czxSYXdUeXBlPjo6ZGlnaXRzMTAgKyAyKQorICAgICAgICAgPDwg
bGhzX3ZhbHVlOwogCi0gIFN0clN0cmVhbSBhY3R1YWxfc3M7Ci0gIGFjdHVhbF9zcyA8PCBzdGQ6
OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+OjpkaWdpdHMxMCArIDIp
Ci0gICAgICAgICAgICA8PCBhY3R1YWw7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gcmhzX3NzOwor
ICByaHNfc3MgPDwgc3RkOjpzZXRwcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxSYXdUeXBl
Pjo6ZGlnaXRzMTAgKyAyKQorICAgICAgICAgPDwgcmhzX3ZhbHVlOwogCi0gIHJldHVybiBFcUZh
aWx1cmUoZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBhY3R1YWxfZXhw
cmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBTdHJTdHJlYW1Ub1N0cmluZygmZXhwZWN0ZWRf
c3MpLAotICAgICAgICAgICAgICAgICAgIFN0clN0cmVhbVRvU3RyaW5nKCZhY3R1YWxfc3MpLAor
ICByZXR1cm4gRXFGYWlsdXJlKGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIHJo
c19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIFN0cmluZ1N0cmVhbVRvU3RyaW5nKCZs
aHNfc3MpLAorICAgICAgICAgICAgICAgICAgIFN0cmluZ1N0cmVhbVRvU3RyaW5nKCZyaHNfc3Mp
LAogICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKIH0KIApAQCAtMTU0OCw5ICsxNzM0LDkgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRIZWxwZXIgewogICAgICAgICA6IHR5cGUodCksIGZpbGUo
c3JjZmlsZSksIGxpbmUobGluZV9udW0pLCBtZXNzYWdlKG1zZykgeyB9CiAKICAgICBUZXN0UGFy
dFJlc3VsdDo6VHlwZSBjb25zdCB0eXBlOwotICAgIGNvbnN0IGNoYXIqICAgICAgICBjb25zdCBm
aWxlOwotICAgIGludCAgICAgICAgICAgICAgICBjb25zdCBsaW5lOwotICAgIFN0cmluZyAgICAg
ICAgICAgICBjb25zdCBtZXNzYWdlOworICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZpbGU7CisgICAg
aW50IGNvbnN0IGxpbmU7CisgICAgc3RkOjpzdHJpbmcgY29uc3QgbWVzc2FnZTsKIAogICAgcHJp
dmF0ZToKICAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEFzc2VydEhlbHBlckRh
dGEpOwpAQCAtMTU2MywxMCArMTc0OSwxMyBAQCBjbGFzcyBHVEVTVF9BUElfIEFzc2VydEhlbHBl
ciB7CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RF
U1QKLS8vIFRoZSBhYnN0cmFjdCBiYXNlIGNsYXNzIHRoYXQgYWxsIHZhbHVlLXBhcmFtZXRlcml6
ZWQgdGVzdHMgaW5oZXJpdCBmcm9tLgorLy8gVGhlIHB1cmUgaW50ZXJmYWNlIGNsYXNzIHRoYXQg
YWxsIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgaW5oZXJpdCBmcm9tLgorLy8gQSB2YWx1ZS1w
YXJhbWV0ZXJpemVkIGNsYXNzIG11c3QgaW5oZXJpdCBmcm9tIGJvdGggOjp0ZXN0aW5nOjpUZXN0
IGFuZAorLy8gOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2UuIEluIG1vc3QgY2FzZXMgdGhh
dCBqdXN0IG1lYW5zIGluaGVyaXRpbmcKKy8vIGZyb20gOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFt
LCBidXQgbW9yZSBjb21wbGljYXRlZCB0ZXN0IGhpZXJhcmNoaWVzCisvLyBtYXkgbmVlZCB0byBp
bmhlcml0IGZyb20gVGVzdCBhbmQgV2l0aFBhcmFtSW50ZXJmYWNlIGF0IGRpZmZlcmVudCBsZXZl
bHMuCiAvLwotLy8gVGhpcyBjbGFzcyBhZGRzIHN1cHBvcnQgZm9yIGFjY2Vzc2luZyB0aGUgdGVz
dCBwYXJhbWV0ZXIgdmFsdWUgdmlhCisvLyBUaGlzIGludGVyZmFjZSBoYXMgc3VwcG9ydCBmb3Ig
YWNjZXNzaW5nIHRoZSB0ZXN0IHBhcmFtZXRlciB2YWx1ZSB2aWEKIC8vIHRoZSBHZXRQYXJhbSgp
IG1ldGhvZC4KIC8vCiAvLyBVc2UgaXQgd2l0aCBvbmUgb2YgdGhlIHBhcmFtZXRlciBnZW5lcmF0
b3IgZGVmaW5pbmcgZnVuY3Rpb25zLCBsaWtlIFJhbmdlKCksCkBAIC0xNTk1LDEzICsxNzg0LDIy
IEBAIGNsYXNzIEdURVNUX0FQSV8gQXNzZXJ0SGVscGVyIHsKIC8vIElOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QKE9uZVRvVGVuUmFuZ2UsIEZvb1Rlc3QsIDo6dGVzdGluZzo6UmFuZ2UoMSwgMTApKTsK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBUZXN0V2l0aFBhcmFtIDogcHVibGljIFRl
c3QgeworY2xhc3MgV2l0aFBhcmFtSW50ZXJmYWNlIHsKICBwdWJsaWM6CiAgIHR5cGVkZWYgVCBQ
YXJhbVR5cGU7CisgIHZpcnR1YWwgfldpdGhQYXJhbUludGVyZmFjZSgpIHt9CiAKICAgLy8gVGhl
IGN1cnJlbnQgcGFyYW1ldGVyIHZhbHVlLiBJcyBhbHNvIGF2YWlsYWJsZSBpbiB0aGUgdGVzdCBm
aXh0dXJlJ3MKLSAgLy8gY29uc3RydWN0b3IuCi0gIGNvbnN0IFBhcmFtVHlwZSYgR2V0UGFyYW0o
KSBjb25zdCB7IHJldHVybiAqcGFyYW1ldGVyXzsgfQorICAvLyBjb25zdHJ1Y3Rvci4gVGhpcyBt
ZW1iZXIgZnVuY3Rpb24gaXMgbm9uLXN0YXRpYywgZXZlbiB0aG91Z2ggaXQgb25seQorICAvLyBy
ZWZlcmVuY2VzIHN0YXRpYyBkYXRhLCB0byByZWR1Y2UgdGhlIG9wcG9ydHVuaXR5IGZvciBpbmNv
cnJlY3QgdXNlcworICAvLyBsaWtlIHdyaXRpbmcgJ1dpdGhQYXJhbUludGVyZmFjZTxib29sPjo6
R2V0UGFyYW0oKScgZm9yIGEgdGVzdCB0aGF0CisgIC8vIHVzZXMgYSBmaXh0dXJlIHdob3NlIHBh
cmFtZXRlciB0eXBlIGlzIGludC4KKyAgY29uc3QgUGFyYW1UeXBlJiBHZXRQYXJhbSgpIGNvbnN0
IHsKKyAgICBHVEVTVF9DSEVDS18ocGFyYW1ldGVyXyAhPSBOVUxMKQorICAgICAgICA8PCAiR2V0
UGFyYW0oKSBjYW4gb25seSBiZSBjYWxsZWQgaW5zaWRlIGEgdmFsdWUtcGFyYW1ldGVyaXplZCB0
ZXN0ICIKKyAgICAgICAgPDwgIi0tIGRpZCB5b3UgaW50ZW5kIHRvIHdyaXRlIFRFU1RfUCBpbnN0
ZWFkIG9mIFRFU1RfRj8iOworICAgIHJldHVybiAqcGFyYW1ldGVyXzsKKyAgfQogCiAgcHJpdmF0
ZToKICAgLy8gU2V0cyBwYXJhbWV0ZXIgdmFsdWUuIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUg
Zm9yIG1ha2luZyBzdXJlIHRoZSB2YWx1ZQpAQCAtMTYxMywxNCArMTgxMSwxOSBAQCBjbGFzcyBU
ZXN0V2l0aFBhcmFtIDogcHVibGljIFRlc3QgewogICAvLyBTdGF0aWMgdmFsdWUgdXNlZCBmb3Ig
YWNjZXNzaW5nIHBhcmFtZXRlciBkdXJpbmcgYSB0ZXN0IGxpZmV0aW1lLgogICBzdGF0aWMgY29u
c3QgUGFyYW1UeXBlKiBwYXJhbWV0ZXJfOwogCi0gIC8vIFRlc3RDbGFzcyBtdXN0IGJlIGEgc3Vi
Y2xhc3Mgb2YgVGVzdFdpdGhQYXJhbTxUPi4KKyAgLy8gVGVzdENsYXNzIG11c3QgYmUgYSBzdWJj
bGFzcyBvZiBXaXRoUGFyYW1JbnRlcmZhY2U8VD4gYW5kIFRlc3QuCiAgIHRlbXBsYXRlIDxjbGFz
cyBUZXN0Q2xhc3M+IGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RGYWN0
b3J5OwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jb25zdCBUKiBUZXN0V2l0aFBhcmFt
PFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKK2NvbnN0IFQqIFdpdGhQYXJhbUludGVyZmFjZTxUPjo6
cGFyYW1ldGVyXyA9IE5VTEw7CisKKy8vIE1vc3QgdmFsdWUtcGFyYW1ldGVyaXplZCBjbGFzc2Vz
IGNhbiBpZ25vcmUgdGhlIGV4aXN0ZW5jZSBvZgorLy8gV2l0aFBhcmFtSW50ZXJmYWNlLCBhbmQg
Y2FuIGp1c3QgaW5oZXJpdCBmcm9tIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbS4KIAotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBU
ZXN0V2l0aFBhcmFtIDogcHVibGljIFRlc3QsIHB1YmxpYyBXaXRoUGFyYW1JbnRlcmZhY2U8VD4g
eworfTsKIAogLy8gTWFjcm9zIGZvciBpbmRpY2F0aW5nIHN1Y2Nlc3MvZmFpbHVyZSBpbiB0ZXN0
IGNvZGUuCiAKQEAgLTE2NDAsMjMgKzE4NDMsMjMgQEAgY29uc3QgVCogVGVzdFdpdGhQYXJhbTxU
Pjo6cGFyYW1ldGVyXyA9IE5VTEw7CiAvLyB1c3VhbGx5IHdhbnQgdGhlIGZhaWwtZmFzdCBiZWhh
dmlvciBvZiBGQUlMIGFuZCBBU1NFUlRfKiwgYnV0IHRob3NlCiAvLyB3cml0aW5nIGRhdGEtZHJp
dmVuIHRlc3RzIG9mdGVuIGZpbmQgdGhlbXNlbHZlcyB1c2luZyBBRERfRkFJTFVSRQogLy8gYW5k
IEVYUEVDVF8qIG1vcmUuCi0vLwotLy8gRXhhbXBsZXM6Ci0vLwotLy8gICBFWFBFQ1RfVFJVRShz
ZXJ2ZXIuU3RhdHVzSXNPSygpKTsKLS8vICAgQVNTRVJUX0ZBTFNFKHNlcnZlci5IYXNQZW5kaW5n
UmVxdWVzdChwb3J0KSkKLS8vICAgICAgIDw8ICJUaGVyZSBhcmUgc3RpbGwgcGVuZGluZyByZXF1
ZXN0cyAiIDw8ICJvbiBwb3J0ICIgPDwgcG9ydDsKIAogLy8gR2VuZXJhdGVzIGEgbm9uZmF0YWwg
ZmFpbHVyZSB3aXRoIGEgZ2VuZXJpYyBtZXNzYWdlLgogI2RlZmluZSBBRERfRkFJTFVSRSgpIEdU
RVNUX05PTkZBVEFMX0ZBSUxVUkVfKCJGYWlsZWQiKQogCisvLyBHZW5lcmF0ZXMgYSBub25mYXRh
bCBmYWlsdXJlIGF0IHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlvbiB3aXRoCisvLyBhIGdl
bmVyaWMgbWVzc2FnZS4KKyNkZWZpbmUgQUREX0ZBSUxVUkVfQVQoZmlsZSwgbGluZSkgXAorICBH
VEVTVF9NRVNTQUdFX0FUXyhmaWxlLCBsaW5lLCAiRmFpbGVkIiwgXAorICAgICAgICAgICAgICAg
ICAgICA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlKQorCiAvLyBH
ZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlIHdpdGggYSBnZW5lcmljIG1lc3NhZ2UuCiAjZGVmaW5l
IEdURVNUX0ZBSUwoKSBHVEVTVF9GQVRBTF9GQUlMVVJFXygiRmFpbGVkIikKIAogLy8gRGVmaW5l
IHRoaXMgbWFjcm8gdG8gMSB0byBvbWl0IHRoZSBkZWZpbml0aW9uIG9mIEZBSUwoKSwgd2hpY2gg
aXMgYQogLy8gZ2VuZXJpYyBuYW1lIGFuZCBjbGFzaGVzIHdpdGggc29tZSBvdGhlciBsaWJyYXJp
ZXMuCiAjaWYgIUdURVNUX0RPTlRfREVGSU5FX0ZBSUwKLSNkZWZpbmUgRkFJTCgpIEdURVNUX0ZB
SUwoKQorIyBkZWZpbmUgRkFJTCgpIEdURVNUX0ZBSUwoKQogI2VuZGlmCiAKIC8vIEdlbmVyYXRl
cyBhIHN1Y2Nlc3Mgd2l0aCBhIGdlbmVyaWMgbWVzc2FnZS4KQEAgLTE2NjUsNyArMTg2OCw3IEBA
IGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogLy8gRGVmaW5l
IHRoaXMgbWFjcm8gdG8gMSB0byBvbWl0IHRoZSBkZWZpbml0aW9uIG9mIFNVQ0NFRUQoKSwgd2hp
Y2gKIC8vIGlzIGEgZ2VuZXJpYyBuYW1lIGFuZCBjbGFzaGVzIHdpdGggc29tZSBvdGhlciBsaWJy
YXJpZXMuCiAjaWYgIUdURVNUX0RPTlRfREVGSU5FX1NVQ0NFRUQKLSNkZWZpbmUgU1VDQ0VFRCgp
IEdURVNUX1NVQ0NFRUQoKQorIyBkZWZpbmUgU1VDQ0VFRCgpIEdURVNUX1NVQ0NFRUQoKQogI2Vu
ZGlmCiAKIC8vIE1hY3JvcyBmb3IgdGVzdGluZyBleGNlcHRpb25zLgpAQCAtMTcwNiwxOCArMTkw
OSwxNCBAQCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKICAg
R1RFU1RfVEVTVF9CT09MRUFOXyghKGNvbmRpdGlvbiksICNjb25kaXRpb24sIHRydWUsIGZhbHNl
LCBcCiAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCiAKLS8vIElu
Y2x1ZGVzIHRoZSBhdXRvLWdlbmVyYXRlZCBoZWFkZXIgdGhhdCBpbXBsZW1lbnRzIGEgZmFtaWx5
IG9mCi0vLyBnZW5lcmljIHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9zLgotI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oPgotCiAvLyBNYWNyb3MgZm9yIHRlc3RpbmcgZXF1YWxpdGll
cyBhbmQgaW5lcXVhbGl0aWVzLgogLy8KLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0VRKGV4cGVj
dGVkLCBhY3R1YWwpOiBUZXN0cyB0aGF0IGV4cGVjdGVkID09IGFjdHVhbAotLy8gICAgKiB7QVNT
RVJUfEVYUEVDVH1fTkUodjEsIHYyKTogICAgICAgICAgIFRlc3RzIHRoYXQgdjEgIT0gdjIKLS8v
ICAgICoge0FTU0VSVHxFWFBFQ1R9X0xUKHYxLCB2Mik6ICAgICAgICAgICBUZXN0cyB0aGF0IHYx
IDwgdjIKLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0xFKHYxLCB2Mik6ICAgICAgICAgICBUZXN0
cyB0aGF0IHYxIDw9IHYyCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9HVCh2MSwgdjIpOiAgICAg
ICAgICAgVGVzdHMgdGhhdCB2MSA+IHYyCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9HRSh2MSwg
djIpOiAgICAgICAgICAgVGVzdHMgdGhhdCB2MSA+PSB2MgorLy8gICAgKiB7QVNTRVJUfEVYUEVD
VH1fRVEodjEsIHYyKTogVGVzdHMgdGhhdCB2MSA9PSB2MgorLy8gICAgKiB7QVNTRVJUfEVYUEVD
VH1fTkUodjEsIHYyKTogVGVzdHMgdGhhdCB2MSAhPSB2MgorLy8gICAgKiB7QVNTRVJUfEVYUEVD
VH1fTFQodjEsIHYyKTogVGVzdHMgdGhhdCB2MSA8IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNU
fV9MRSh2MSwgdjIpOiBUZXN0cyB0aGF0IHYxIDw9IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNU
fV9HVCh2MSwgdjIpOiBUZXN0cyB0aGF0IHYxID4gdjIKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9
X0dFKHYxLCB2Mik6IFRlc3RzIHRoYXQgdjEgPj0gdjIKIC8vCiAvLyBXaGVuIHRoZXkgYXJlIG5v
dCwgR29vZ2xlIFRlc3QgcHJpbnRzIGJvdGggdGhlIHRlc3RlZCBleHByZXNzaW9ucyBhbmQKIC8v
IHRoZWlyIGFjdHVhbCB2YWx1ZXMuICBUaGUgdmFsdWVzIG11c3QgYmUgY29tcGF0aWJsZSBidWls
dC1pbiB0eXBlcywKQEAgLTE3MzksOCArMTkzOCw4IEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08
VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogLy8gICBhcmUgcmVsYXRlZCwgbm90IGhvdyB0aGVpciBj
b250ZW50IGlzIHJlbGF0ZWQuICBUbyBjb21wYXJlIHR3byBDCiAvLyAgIHN0cmluZ3MgYnkgY29u
dGVudCwgdXNlIHtBU1NFUlR8RVhQRUNUfV9TVFIqKCkuCiAvLwotLy8gICAzLiB7QVNTRVJUfEVY
UEVDVH1fRVEoZXhwZWN0ZWQsIGFjdHVhbCkgaXMgcHJlZmVycmVkIHRvCi0vLyAgIHtBU1NFUlR8
RVhQRUNUfV9UUlVFKGV4cGVjdGVkID09IGFjdHVhbCksIGFzIHRoZSBmb3JtZXIgdGVsbHMgeW91
CisvLyAgIDMuIHtBU1NFUlR8RVhQRUNUfV9FUSh2MSwgdjIpIGlzIHByZWZlcnJlZCB0bworLy8g
ICB7QVNTRVJUfEVYUEVDVH1fVFJVRSh2MSA9PSB2MiksIGFzIHRoZSBmb3JtZXIgdGVsbHMgeW91
CiAvLyAgIHdoYXQgdGhlIGFjdHVhbCB2YWx1ZSBpcyB3aGVuIGl0IGZhaWxzLCBhbmQgc2ltaWxh
cmx5IGZvciB0aGUKIC8vICAgb3RoZXIgY29tcGFyaXNvbnMuCiAvLwpAQCAtMTc1MSwxNyArMTk1
MCwxNyBAQCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIC8v
CiAvLyBFeGFtcGxlczoKIC8vCi0vLyAgIEVYUEVDVF9ORSg1LCBGb28oKSk7Ci0vLyAgIEVYUEVD
VF9FUShOVUxMLCBhX3BvaW50ZXIpOworLy8gICBFWFBFQ1RfTkUoRm9vKCksIDUpOworLy8gICBF
WFBFQ1RfRVEoYV9wb2ludGVyLCBOVUxMKTsKIC8vICAgQVNTRVJUX0xUKGksIGFycmF5X3NpemUp
OwogLy8gICBBU1NFUlRfR1QocmVjb3Jkcy5zaXplKCksIDApIDw8ICJUaGVyZSBpcyBubyByZWNv
cmQgbGVmdC4iOwogCi0jZGVmaW5lIEVYUEVDVF9FUShleHBlY3RlZCwgYWN0dWFsKSBcCisjZGVm
aW5lIEVYUEVDVF9FUSh2YWwxLCB2YWwyKSBcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0
aW5nOjppbnRlcm5hbDo6IFwKLSAgICAgICAgICAgICAgICAgICAgICBFcUhlbHBlcjxHVEVTVF9J
U19OVUxMX0xJVEVSQUxfKGV4cGVjdGVkKT46OkNvbXBhcmUsIFwKLSAgICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZCwgYWN0dWFsKQotI2RlZmluZSBFWFBFQ1RfTkUoZXhwZWN0ZWQsIGFjdHVh
bCkgXAotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBl
ck5FLCBleHBlY3RlZCwgYWN0dWFsKQorICAgICAgICAgICAgICAgICAgICAgIEVxSGVscGVyPEdU
RVNUX0lTX05VTExfTElURVJBTF8odmFsMSk+OjpDb21wYXJlLCBcCisgICAgICAgICAgICAgICAg
ICAgICAgdmFsMSwgdmFsMikKKyNkZWZpbmUgRVhQRUNUX05FKHZhbDEsIHZhbDIpIFwKKyAgRVhQ
RUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJORSwgdmFsMSwg
dmFsMikKICNkZWZpbmUgRVhQRUNUX0xFKHZhbDEsIHZhbDIpIFwKICAgRVhQRUNUX1BSRURfRk9S
TUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJMRSwgdmFsMSwgdmFsMikKICNkZWZp
bmUgRVhQRUNUX0xUKHZhbDEsIHZhbDIpIFwKQEAgLTE3NzEsMjIgKzE5NzAsNDkgQEAgY29uc3Qg
VCogVGVzdFdpdGhQYXJhbTxUPjo6cGFyYW1ldGVyXyA9IE5VTEw7CiAjZGVmaW5lIEVYUEVDVF9H
VCh2YWwxLCB2YWwyKSBcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q21wSGVscGVyR1QsIHZhbDEsIHZhbDIpCiAKLSNkZWZpbmUgQVNTRVJUX0VRKGV4cGVjdGVk
LCBhY3R1YWwpIFwKKyNkZWZpbmUgR1RFU1RfQVNTRVJUX0VRKHZhbDEsIHZhbDIpIFwKICAgQVNT
RVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjogXAotICAgICAgICAgICAgICAg
ICAgICAgIEVxSGVscGVyPEdURVNUX0lTX05VTExfTElURVJBTF8oZXhwZWN0ZWQpPjo6Q29tcGFy
ZSwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLCBhY3R1YWwpCi0jZGVmaW5lIEFT
U0VSVF9ORSh2YWwxLCB2YWwyKSBcCisgICAgICAgICAgICAgICAgICAgICAgRXFIZWxwZXI8R1RF
U1RfSVNfTlVMTF9MSVRFUkFMXyh2YWwxKT46OkNvbXBhcmUsIFwKKyAgICAgICAgICAgICAgICAg
ICAgICB2YWwxLCB2YWwyKQorI2RlZmluZSBHVEVTVF9BU1NFUlRfTkUodmFsMSwgdmFsMikgXAog
ICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlck5FLCB2
YWwxLCB2YWwyKQotI2RlZmluZSBBU1NFUlRfTEUodmFsMSwgdmFsMikgXAorI2RlZmluZSBHVEVT
VF9BU1NFUlRfTEUodmFsMSwgdmFsMikgXAogICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkNtcEhlbHBlckxFLCB2YWwxLCB2YWwyKQotI2RlZmluZSBBU1NFUlRfTFQo
dmFsMSwgdmFsMikgXAorI2RlZmluZSBHVEVTVF9BU1NFUlRfTFQodmFsMSwgdmFsMikgXAogICBB
U1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckxULCB2YWwx
LCB2YWwyKQotI2RlZmluZSBBU1NFUlRfR0UodmFsMSwgdmFsMikgXAorI2RlZmluZSBHVEVTVF9B
U1NFUlRfR0UodmFsMSwgdmFsMikgXAogICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6
aW50ZXJuYWw6OkNtcEhlbHBlckdFLCB2YWwxLCB2YWwyKQotI2RlZmluZSBBU1NFUlRfR1QodmFs
MSwgdmFsMikgXAorI2RlZmluZSBHVEVTVF9BU1NFUlRfR1QodmFsMSwgdmFsMikgXAogICBBU1NF
UlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckdULCB2YWwxLCB2
YWwyKQogCi0vLyBDIFN0cmluZyBDb21wYXJpc29ucy4gIEFsbCB0ZXN0cyB0cmVhdCBOVUxMIGFu
ZCBhbnkgbm9uLU5VTEwgc3RyaW5nCisvLyBEZWZpbmUgbWFjcm8gR1RFU1RfRE9OVF9ERUZJTkVf
QVNTRVJUX1hZIHRvIDEgdG8gb21pdCB0aGUgZGVmaW5pdGlvbiBvZgorLy8gQVNTRVJUX1hZKCks
IHdoaWNoIGNsYXNoZXMgd2l0aCBzb21lIHVzZXJzJyBvd24gY29kZS4KKworI2lmICFHVEVTVF9E
T05UX0RFRklORV9BU1NFUlRfRVEKKyMgZGVmaW5lIEFTU0VSVF9FUSh2YWwxLCB2YWwyKSBHVEVT
VF9BU1NFUlRfRVEodmFsMSwgdmFsMikKKyNlbmRpZgorCisjaWYgIUdURVNUX0RPTlRfREVGSU5F
X0FTU0VSVF9ORQorIyBkZWZpbmUgQVNTRVJUX05FKHZhbDEsIHZhbDIpIEdURVNUX0FTU0VSVF9O
RSh2YWwxLCB2YWwyKQorI2VuZGlmCisKKyNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX0xF
CisjIGRlZmluZSBBU1NFUlRfTEUodmFsMSwgdmFsMikgR1RFU1RfQVNTRVJUX0xFKHZhbDEsIHZh
bDIpCisjZW5kaWYKKworI2lmICFHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfTFQKKyMgZGVmaW5l
IEFTU0VSVF9MVCh2YWwxLCB2YWwyKSBHVEVTVF9BU1NFUlRfTFQodmFsMSwgdmFsMikKKyNlbmRp
ZgorCisjaWYgIUdURVNUX0RPTlRfREVGSU5FX0FTU0VSVF9HRQorIyBkZWZpbmUgQVNTRVJUX0dF
KHZhbDEsIHZhbDIpIEdURVNUX0FTU0VSVF9HRSh2YWwxLCB2YWwyKQorI2VuZGlmCisKKyNpZiAh
R1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX0dUCisjIGRlZmluZSBBU1NFUlRfR1QodmFsMSwgdmFs
MikgR1RFU1RfQVNTRVJUX0dUKHZhbDEsIHZhbDIpCisjZW5kaWYKKworLy8gQy1zdHJpbmcgQ29t
cGFyaXNvbnMuICBBbGwgdGVzdHMgdHJlYXQgTlVMTCBhbmQgYW55IG5vbi1OVUxMIHN0cmluZwog
Ly8gYXMgZGlmZmVyZW50LiAgVHdvIE5VTExzIGFyZSBlcXVhbC4KIC8vCiAvLyAgICAqIHtBU1NF
UlR8RVhQRUNUfV9TVFJFUShzMSwgczIpOiAgICAgVGVzdHMgdGhhdCBzMSA9PSBzMgpAQCAtMTgw
MiwyOSArMjAyOCwyOSBAQCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0g
TlVMTDsKIC8vCiAvLyBUaGVzZSBtYWNyb3MgZXZhbHVhdGUgdGhlaXIgYXJndW1lbnRzIGV4YWN0
bHkgb25jZS4KIAotI2RlZmluZSBFWFBFQ1RfU1RSRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAotICBF
WFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkVRLCBl
eHBlY3RlZCwgYWN0dWFsKQorI2RlZmluZSBFWFBFQ1RfU1RSRVEoczEsIHMyKSBcCisgIEVYUEVD
VF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSRVEsIHMxLCBz
MikKICNkZWZpbmUgRVhQRUNUX1NUUk5FKHMxLCBzMikgXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUk5FLCBzMSwgczIpCi0jZGVmaW5lIEVY
UEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAotICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkNBU0VFUSwgZXhwZWN0ZWQsIGFjdHVh
bCkKKyNkZWZpbmUgRVhQRUNUX1NUUkNBU0VFUShzMSwgczIpIFwKKyAgRVhQRUNUX1BSRURfRk9S
TUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJDQVNFRVEsIHMxLCBzMikKICNk
ZWZpbmUgRVhQRUNUX1NUUkNBU0VORShzMSwgczIpXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6
dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkNBU0VORSwgczEsIHMyKQogCi0jZGVmaW5l
IEFTU0VSVF9TVFJFUShleHBlY3RlZCwgYWN0dWFsKSBcCi0gIEFTU0VSVF9QUkVEX0ZPUk1BVDIo
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSRVEsIGV4cGVjdGVkLCBhY3R1YWwpCisj
ZGVmaW5lIEFTU0VSVF9TVFJFUShzMSwgczIpIFwKKyAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRl
c3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJFUSwgczEsIHMyKQogI2RlZmluZSBBU1NFUlRf
U1RSTkUoczEsIHMyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q21wSGVscGVyU1RSTkUsIHMxLCBzMikKLSNkZWZpbmUgQVNTRVJUX1NUUkNBU0VFUShleHBl
Y3RlZCwgYWN0dWFsKSBcCi0gIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q21wSGVscGVyU1RSQ0FTRUVRLCBleHBlY3RlZCwgYWN0dWFsKQorI2RlZmluZSBBU1NFUlRf
U1RSQ0FTRUVRKHMxLCBzMikgXAorICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkNtcEhlbHBlclNUUkNBU0VFUSwgczEsIHMyKQogI2RlZmluZSBBU1NFUlRfU1RSQ0FT
RU5FKHMxLCBzMilcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
Q21wSGVscGVyU1RSQ0FTRU5FLCBzMSwgczIpCiAKIC8vIE1hY3JvcyBmb3IgY29tcGFyaW5nIGZs
b2F0aW5nLXBvaW50IG51bWJlcnMuCiAvLwotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fRkxPQVRf
RVEoZXhwZWN0ZWQsIGFjdHVhbCk6CisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9GTE9BVF9FUSh2
YWwxLCB2YWwyKToKIC8vICAgICAgICAgVGVzdHMgdGhhdCB0d28gZmxvYXQgdmFsdWVzIGFyZSBh
bG1vc3QgZXF1YWwuCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9ET1VCTEVfRVEoZXhwZWN0ZWQs
IGFjdHVhbCk6CisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9ET1VCTEVfRVEodmFsMSwgdmFsMik6
CiAvLyAgICAgICAgIFRlc3RzIHRoYXQgdHdvIGRvdWJsZSB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVh
bC4KIC8vICAgICoge0FTU0VSVHxFWFBFQ1R9X05FQVIodjEsIHYyLCBhYnNfZXJyb3IpOgogLy8g
ICAgICAgICBUZXN0cyB0aGF0IHYxIGFuZCB2MiBhcmUgd2l0aGluIHRoZSBnaXZlbiBkaXN0YW5j
ZSB0byBlYWNoIG90aGVyLgpAQCAtMTgzNCwyMSArMjA2MCwyMSBAQCBjb25zdCBUKiBUZXN0V2l0
aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIC8vIEZsb2F0aW5nUG9pbnQgdGVtcGxhdGUg
Y2xhc3MgaW4gZ3Rlc3QtaW50ZXJuYWwuaCBpZiB5b3UgYXJlCiAvLyBpbnRlcmVzdGVkIGluIHRo
ZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgogCi0jZGVmaW5lIEVYUEVDVF9GTE9BVF9FUShleHBl
Y3RlZCwgYWN0dWFsKVwKKyNkZWZpbmUgRVhQRUNUX0ZMT0FUX0VRKHZhbDEsIHZhbDIpXAogICBF
WFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckZsb2F0aW5n
UG9pbnRFUTxmbG9hdD4sIFwKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwgYWN0dWFs
KQorICAgICAgICAgICAgICAgICAgICAgIHZhbDEsIHZhbDIpCiAKLSNkZWZpbmUgRVhQRUNUX0RP
VUJMRV9FUShleHBlY3RlZCwgYWN0dWFsKVwKKyNkZWZpbmUgRVhQRUNUX0RPVUJMRV9FUSh2YWwx
LCB2YWwyKVwKICAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBI
ZWxwZXJGbG9hdGluZ1BvaW50RVE8ZG91YmxlPiwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4
cGVjdGVkLCBhY3R1YWwpCisgICAgICAgICAgICAgICAgICAgICAgdmFsMSwgdmFsMikKIAotI2Rl
ZmluZSBBU1NFUlRfRkxPQVRfRVEoZXhwZWN0ZWQsIGFjdHVhbClcCisjZGVmaW5lIEFTU0VSVF9G
TE9BVF9FUSh2YWwxLCB2YWwyKVwKICAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6Omlu
dGVybmFsOjpDbXBIZWxwZXJGbG9hdGluZ1BvaW50RVE8ZmxvYXQ+LCBcCi0gICAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0ZWQsIGFjdHVhbCkKKyAgICAgICAgICAgICAgICAgICAgICB2YWwxLCB2
YWwyKQogCi0jZGVmaW5lIEFTU0VSVF9ET1VCTEVfRVEoZXhwZWN0ZWQsIGFjdHVhbClcCisjZGVm
aW5lIEFTU0VSVF9ET1VCTEVfRVEodmFsMSwgdmFsMilcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIo
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyRmxvYXRpbmdQb2ludEVRPGRvdWJsZT4sIFwK
LSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwgYWN0dWFsKQorICAgICAgICAgICAgICAg
ICAgICAgIHZhbDEsIHZhbDIpCiAKICNkZWZpbmUgRVhQRUNUX05FQVIodmFsMSwgdmFsMiwgYWJz
X2Vycm9yKVwKICAgRVhQRUNUX1BSRURfRk9STUFUMyg6OnRlc3Rpbmc6OmludGVybmFsOjpEb3Vi
bGVOZWFyUHJlZEZvcm1hdCwgXApAQCAtMTg4MiwxNiArMjEwOCwxNiBAQCBHVEVTVF9BUElfIEFz
c2VydGlvblJlc3VsdCBEb3VibGVMRShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhw
cjIsCiAvLyBleHBlY3RlZCByZXN1bHQgYW5kIHRoZSBhY3R1YWwgcmVzdWx0IHdpdGggYm90aCBh
IGh1bWFuLXJlYWRhYmxlCiAvLyBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGVycm9yLCBp
ZiBhdmFpbGFibGUsIGFzIHdlbGwgYXMgdGhlCiAvLyBoZXggcmVzdWx0IGNvZGUuCi0jZGVmaW5l
IEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChleHByKSBcCisjIGRlZmluZSBFWFBFQ1RfSFJFU1VM
VF9TVUNDRUVERUQoZXhwcikgXAogICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDEoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6SXNIUkVTVUxUU3VjY2VzcywgKGV4cHIpKQogCi0jZGVmaW5lIEFTU0VSVF9IUkVT
VUxUX1NVQ0NFRURFRChleHByKSBcCisjIGRlZmluZSBBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQo
ZXhwcikgXAogICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDEoOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXNI
UkVTVUxUU3VjY2VzcywgKGV4cHIpKQogCi0jZGVmaW5lIEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChl
eHByKSBcCisjIGRlZmluZSBFWFBFQ1RfSFJFU1VMVF9GQUlMRUQoZXhwcikgXAogICAgIEVYUEVD
VF9QUkVEX0ZPUk1BVDEoOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXNIUkVTVUxURmFpbHVyZSwgKGV4
cHIpKQogCi0jZGVmaW5lIEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChleHByKSBcCisjIGRlZmluZSBB
U1NFUlRfSFJFU1VMVF9GQUlMRUQoZXhwcikgXAogICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDEoOjp0
ZXN0aW5nOjppbnRlcm5hbDo6SXNIUkVTVUxURmFpbHVyZSwgKGV4cHIpKQogCiAjZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1MKQEAgLTE5MTEsNiArMjEzNyw1NyBAQCBHVEVTVF9BUElfIEFzc2Vy
dGlvblJlc3VsdCBEb3VibGVMRShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIs
CiAjZGVmaW5lIEVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKHN0YXRlbWVudCkgXAogICAgIEdURVNU
X1RFU1RfTk9fRkFUQUxfRkFJTFVSRV8oc3RhdGVtZW50LCBHVEVTVF9OT05GQVRBTF9GQUlMVVJF
XykKIAorLy8gQ2F1c2VzIGEgdHJhY2UgKGluY2x1ZGluZyB0aGUgZ2l2ZW4gc291cmNlIGZpbGUg
cGF0aCBhbmQgbGluZSBudW1iZXIsCisvLyBhbmQgdGhlIGdpdmVuIG1lc3NhZ2UpIHRvIGJlIGlu
Y2x1ZGVkIGluIGV2ZXJ5IHRlc3QgZmFpbHVyZSBtZXNzYWdlIGdlbmVyYXRlZAorLy8gYnkgY29k
ZSBpbiB0aGUgc2NvcGUgb2YgdGhlIGxpZmV0aW1lIG9mIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xh
c3MuIFRoZSBlZmZlY3QKKy8vIGlzIHVuZG9uZSB3aXRoIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUg
aW5zdGFuY2UuCisvLworLy8gVGhlIG1lc3NhZ2UgYXJndW1lbnQgY2FuIGJlIGFueXRoaW5nIHN0
cmVhbWFibGUgdG8gc3RkOjpvc3RyZWFtLgorLy8KKy8vIEV4YW1wbGU6CisvLyAgIHRlc3Rpbmc6
OlNjb3BlZFRyYWNlIHRyYWNlKCJmaWxlLmNjIiwgMTIzLCAibWVzc2FnZSIpOworLy8KK2NsYXNz
IEdURVNUX0FQSV8gU2NvcGVkVHJhY2UgeworIHB1YmxpYzoKKyAgLy8gVGhlIGMndG9yIHB1c2hl
cyB0aGUgZ2l2ZW4gc291cmNlIGZpbGUgbG9jYXRpb24gYW5kIG1lc3NhZ2Ugb250bworICAvLyBh
IHRyYWNlIHN0YWNrIG1haW50YWluZWQgYnkgR29vZ2xlIFRlc3QuCisKKyAgLy8gVGVtcGxhdGUg
dmVyc2lvbi4gVXNlcyBNZXNzYWdlKCkgdG8gY29udmVydCB0aGUgdmFsdWVzIGludG8gc3RyaW5n
cy4KKyAgLy8gU2xvdywgYnV0IGZsZXhpYmxlLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAg
U2NvcGVkVHJhY2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IFQmIG1lc3NhZ2Up
IHsKKyAgICBQdXNoVHJhY2UoZmlsZSwgbGluZSwgKE1lc3NhZ2UoKSA8PCBtZXNzYWdlKS5HZXRT
dHJpbmcoKSk7CisgIH0KKworICAvLyBPcHRpbWl6ZSBmb3Igc29tZSBrbm93biB0eXBlcy4KKyAg
U2NvcGVkVHJhY2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIG1lc3Nh
Z2UpIHsKKyAgICBQdXNoVHJhY2UoZmlsZSwgbGluZSwgbWVzc2FnZSA/IG1lc3NhZ2UgOiAiKG51
bGwpIik7CisgIH0KKworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisgIFNjb3BlZFRyYWNl
KGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCA6OnN0cmluZyYgbWVzc2FnZSkgewor
ICAgIFB1c2hUcmFjZShmaWxlLCBsaW5lLCBtZXNzYWdlKTsKKyAgfQorI2VuZGlmCisKKyAgU2Nv
cGVkVHJhY2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IHN0ZDo6c3RyaW5nJiBt
ZXNzYWdlKSB7CisgICAgUHVzaFRyYWNlKGZpbGUsIGxpbmUsIG1lc3NhZ2UpOworICB9CisKKyAg
Ly8gVGhlIGQndG9yIHBvcHMgdGhlIGluZm8gcHVzaGVkIGJ5IHRoZSBjJ3Rvci4KKyAgLy8KKyAg
Ly8gTm90ZSB0aGF0IHRoZSBkJ3RvciBpcyBub3QgdmlydHVhbCBpbiBvcmRlciB0byBiZSBlZmZp
Y2llbnQuCisgIC8vIERvbid0IGluaGVyaXQgZnJvbSBTY29wZWRUcmFjZSEKKyAgflNjb3BlZFRy
YWNlKCk7CisKKyBwcml2YXRlOgorICB2b2lkIFB1c2hUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBp
bnQgbGluZSwgc3RkOjpzdHJpbmcgbWVzc2FnZSk7CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOXyhTY29wZWRUcmFjZSk7Cit9IEdURVNUX0FUVFJJQlVURV9VTlVTRURfOyAgLy8g
QSBTY29wZWRUcmFjZSBvYmplY3QgZG9lcyBpdHMgam9iIGluIGl0cworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGMndG9yIGFuZCBkJ3Rvci4gIFRoZXJlZm9yZSBpdCBkb2Vzbid0Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmVlZCB0byBiZSB1c2VkIG90aGVyd2lzZS4K
KwogLy8gQ2F1c2VzIGEgdHJhY2UgKGluY2x1ZGluZyB0aGUgc291cmNlIGZpbGUgcGF0aCwgdGhl
IGN1cnJlbnQgbGluZQogLy8gbnVtYmVyLCBhbmQgdGhlIGdpdmVuIG1lc3NhZ2UpIHRvIGJlIGlu
Y2x1ZGVkIGluIGV2ZXJ5IHRlc3QgZmFpbHVyZQogLy8gbWVzc2FnZSBnZW5lcmF0ZWQgYnkgY29k
ZSBpbiB0aGUgY3VycmVudCBzY29wZS4gIFRoZSBlZmZlY3QgaXMKQEAgLTE5MjIsMjAgKzIxOTks
MTQgQEAgR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgRG91YmxlTEUoY29uc3QgY2hhciogZXhw
cjEsIGNvbnN0IGNoYXIqIGV4cHIyLAogLy8gb2YgdGhlIGR1bW15IHZhcmlhYmxlIG5hbWUsIHRo
dXMgYWxsb3dpbmcgbXVsdGlwbGUgU0NPUEVEX1RSQUNFKClzCiAvLyB0byBhcHBlYXIgaW4gdGhl
IHNhbWUgYmxvY2sgLSBhcyBsb25nIGFzIHRoZXkgYXJlIG9uIGRpZmZlcmVudAogLy8gbGluZXMu
CisvLworLy8gQXNzdW1pbmcgdGhhdCBlYWNoIHRocmVhZCBtYWludGFpbnMgaXRzIG93biBzdGFj
ayBvZiB0cmFjZXMuCisvLyBUaGVyZWZvcmUsIGEgU0NPUEVEX1RSQUNFKCkgd291bGQgKGNvcnJl
Y3RseSkgb25seSBhZmZlY3QgdGhlCisvLyBhc3NlcnRpb25zIGluIGl0cyBvd24gdGhyZWFkLgog
I2RlZmluZSBTQ09QRURfVFJBQ0UobWVzc2FnZSkgXAotICA6OnRlc3Rpbmc6OmludGVybmFsOjpT
Y29wZWRUcmFjZSBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X3RyYWNlXywgX19MSU5FX18pKFwK
LSAgICBfX0ZJTEVfXywgX19MSU5FX18sIDo6dGVzdGluZzo6TWVzc2FnZSgpIDw8IChtZXNzYWdl
KSkKLQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8gVGhpcyB0ZW1wbGF0ZSBpcyBkZWNsYXJl
ZCwgYnV0IGludGVudGlvbmFsbHkgdW5kZWZpbmVkLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMj4KLXN0cnVjdCBTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI7Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotc3RydWN0IFN0YXRpY0Fzc2VydFR5cGVFcUhlbHBlcjxULCBUPiB7fTsK
KyAgOjp0ZXN0aW5nOjpTY29wZWRUcmFjZSBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X3RyYWNl
XywgX19MSU5FX18pKFwKKyAgICBfX0ZJTEVfXywgX19MSU5FX18sIChtZXNzYWdlKSkKIAotfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCiAKIC8vIENvbXBpbGUtdGltZSBhc3NlcnRpb24gZm9yIHR5
cGUgZXF1YWxpdHkuCiAvLyBTdGF0aWNBc3NlcnRUeXBlRXE8dHlwZTEsIHR5cGUyPigpIGNvbXBp
bGVzIGlmZiB0eXBlMSBhbmQgdHlwZTIgYXJlCkBAIC0xOTY5LDcgKzIyNDAsNyBAQCBzdHJ1Y3Qg
U3RhdGljQXNzZXJ0VHlwZUVxSGVscGVyPFQsIFQ+IHt9OwogLy8gdG8gY2F1c2UgYSBjb21waWxl
ciBlcnJvci4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CiBib29sIFN0YXRp
Y0Fzc2VydFR5cGVFcSgpIHsKLSAgaW50ZXJuYWw6OlN0YXRpY0Fzc2VydFR5cGVFcUhlbHBlcjxU
MSwgVDI+KCk7CisgICh2b2lkKWludGVybmFsOjpTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI8VDEs
IFQyPigpOwogICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTk4MSw4ICsyMjUyLDggQEAgYm9vbCBT
dGF0aWNBc3NlcnRUeXBlRXEoKSB7CiAvLyBUaGUgY29udmVudGlvbiBpcyB0byBlbmQgdGhlIHRl
c3QgY2FzZSBuYW1lIHdpdGggIlRlc3QiLiAgRm9yCiAvLyBleGFtcGxlLCBhIHRlc3QgY2FzZSBm
b3IgdGhlIEZvbyBjbGFzcyBjYW4gYmUgbmFtZWQgRm9vVGVzdC4KIC8vCi0vLyBUaGUgdXNlciBz
aG91bGQgcHV0IGhpcyB0ZXN0IGNvZGUgYmV0d2VlbiBicmFjZXMgYWZ0ZXIgdXNpbmcgdGhpcwot
Ly8gbWFjcm8uICBFeGFtcGxlOgorLy8gVGVzdCBjb2RlIHNob3VsZCBhcHBlYXIgYmV0d2VlbiBi
cmFjZXMgYWZ0ZXIgYW4gaW52b2NhdGlvbiBvZgorLy8gdGhpcyBtYWNyby4gIEV4YW1wbGU6CiAv
LwogLy8gICBURVNUKEZvb1Rlc3QsIEluaXRpYWxpemVzQ29ycmVjdGx5KSB7CiAvLyAgICAgRm9v
IGZvbzsKQEAgLTIwMDUsNyArMjI3Niw3IEBAIGJvb2wgU3RhdGljQXNzZXJ0VHlwZUVxKCkgewog
Ly8gRGVmaW5lIHRoaXMgbWFjcm8gdG8gMSB0byBvbWl0IHRoZSBkZWZpbml0aW9uIG9mIFRFU1Qo
KSwgd2hpY2gKIC8vIGlzIGEgZ2VuZXJpYyBuYW1lIGFuZCBjbGFzaGVzIHdpdGggc29tZSBvdGhl
ciBsaWJyYXJpZXMuCiAjaWYgIUdURVNUX0RPTlRfREVGSU5FX1RFU1QKLSNkZWZpbmUgVEVTVCh0
ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBHVEVTVF9URVNUKHRlc3RfY2FzZV9uYW1lLCB0ZXN0
X25hbWUpCisjIGRlZmluZSBURVNUKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIEdURVNUX1RF
U1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkKICNlbmRpZgogCiAvLyBEZWZpbmVzIGEgdGVz
dCB0aGF0IHVzZXMgYSB0ZXN0IGZpeHR1cmUuCkBAIC0yMDE1LDcgKzIyODYsNyBAQCBib29sIFN0
YXRpY0Fzc2VydFR5cGVFcSgpIHsKIC8vIG5hbWUgb2YgdGhlIHRlc3Qgd2l0aGluIHRoZSB0ZXN0
IGNhc2UuCiAvLwogLy8gQSB0ZXN0IGZpeHR1cmUgY2xhc3MgbXVzdCBiZSBkZWNsYXJlZCBlYXJs
aWVyLiAgVGhlIHVzZXIgc2hvdWxkIHB1dAotLy8gaGlzIHRlc3QgY29kZSBiZXR3ZWVuIGJyYWNl
cyBhZnRlciB1c2luZyB0aGlzIG1hY3JvLiAgRXhhbXBsZToKKy8vIHRoZSB0ZXN0IGNvZGUgYmV0
d2VlbiBicmFjZXMgYWZ0ZXIgdXNpbmcgdGhpcyBtYWNyby4gIEV4YW1wbGU6CiAvLwogLy8gICBj
bGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogLy8gICAgcHJvdGVjdGVkOgpA
QCAtMjAzMCwyMyArMjMwMSwzOCBAQCBib29sIFN0YXRpY0Fzc2VydFR5cGVFcSgpIHsKIC8vICAg
fQogLy8KIC8vICAgVEVTVF9GKEZvb1Rlc3QsIFJldHVybnNFbGVtZW50Q291bnRDb3JyZWN0bHkp
IHsKLS8vICAgICBFWFBFQ1RfRVEoMCwgYV8uc2l6ZSgpKTsKLS8vICAgICBFWFBFQ1RfRVEoMSwg
Yl8uc2l6ZSgpKTsKKy8vICAgICBFWFBFQ1RfRVEoYV8uc2l6ZSgpLCAwKTsKKy8vICAgICBFWFBF
Q1RfRVEoYl8uc2l6ZSgpLCAxKTsKIC8vICAgfQogCiAjZGVmaW5lIFRFU1RfRih0ZXN0X2ZpeHR1
cmUsIHRlc3RfbmFtZSlcCiAgIEdURVNUX1RFU1RfKHRlc3RfZml4dHVyZSwgdGVzdF9uYW1lLCB0
ZXN0X2ZpeHR1cmUsIFwKICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VHlw
ZUlkPHRlc3RfZml4dHVyZT4oKSkKIAotLy8gVXNlIHRoaXMgbWFjcm8gaW4gbWFpbigpIHRvIHJ1
biBhbGwgdGVzdHMuICBJdCByZXR1cm5zIDAgaWYgYWxsCisvLyBSZXR1cm5zIGEgcGF0aCB0byB0
ZW1wb3JhcnkgZGlyZWN0b3J5LgorLy8gVHJpZXMgdG8gZGV0ZXJtaW5lIGFuIGFwcHJvcHJpYXRl
IGRpcmVjdG9yeSBmb3IgdGhlIHBsYXRmb3JtLgorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBUZW1w
RGlyKCk7CisKKyNpZmRlZiBfTVNDX1ZFUgorIyAgcHJhZ21hIHdhcm5pbmcocG9wKQorI2VuZGlm
CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKy8vIFVzZSB0aGlzIGZ1bmN0aW9uIGluIG1h
aW4oKSB0byBydW4gYWxsIHRlc3RzLiAgSXQgcmV0dXJucyAwIGlmIGFsbAogLy8gdGVzdHMgYXJl
IHN1Y2Nlc3NmdWwsIG9yIDEgb3RoZXJ3aXNlLgogLy8KIC8vIFJVTl9BTExfVEVTVFMoKSBzaG91
bGQgYmUgaW52b2tlZCBhZnRlciB0aGUgY29tbWFuZCBsaW5lIGhhcyBiZWVuCiAvLyBwYXJzZWQg
YnkgSW5pdEdvb2dsZVRlc3QoKS4KKy8vCisvLyBUaGlzIGZ1bmN0aW9uIHdhcyBmb3JtZXJseSBh
IG1hY3JvOyB0aHVzLCBpdCBpcyBpbiB0aGUgZ2xvYmFsCisvLyBuYW1lc3BhY2UgYW5kIGhhcyBh
biBhbGwtY2FwcyBuYW1lLgoraW50IFJVTl9BTExfVEVTVFMoKSBHVEVTVF9NVVNUX1VTRV9SRVNV
TFRfOwogCi0jZGVmaW5lIFJVTl9BTExfVEVTVFMoKVwKLSAgKDo6dGVzdGluZzo6VW5pdFRlc3Q6
OkdldEluc3RhbmNlKCktPlJ1bigpKQoraW5saW5lIGludCBSVU5fQUxMX1RFU1RTKCkgeworICBy
ZXR1cm4gOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+UnVuKCk7Cit9CiAKLX0g
IC8vIG5hbWVzcGFjZSB0ZXN0aW5nCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkg
IC8vICA0MjUxCiAKICNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcmVk
X2ltcGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJl
ZF9pbXBsLmgKaW5kZXggZTFlMmY4YzRjODg3YThkZWZjYjc1OGNhMGNhYWIzYjdjZWI5ZDQxYS4u
MGMxMTA1Y2I4ZWIyZWY3YzI2MTZlNjdmZjU1NTZhYWIyOWZmMmQxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcmVkX2ltcGwuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5o
CkBAIC0yNywxOCArMjcsMTkgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAot
Ly8gVGhpcyBmaWxlIGlzIEFVVE9NQVRJQ0FMTFkgR0VORVJBVEVEIG9uIDEwLzAyLzIwMDggYnkg
Y29tbWFuZAorLy8gVGhpcyBmaWxlIGlzIEFVVE9NQVRJQ0FMTFkgR0VORVJBVEVEIG9uIDAxLzAy
LzIwMTggYnkgY29tbWFuZAogLy8gJ2dlbl9ndGVzdF9wcmVkX2ltcGwucHkgNScuICBETyBOT1Qg
RURJVCBCWSBIQU5EIQogLy8KIC8vIEltcGxlbWVudHMgYSBmYW1pbHkgb2YgZ2VuZXJpYyBwcmVk
aWNhdGUgYXNzZXJ0aW9uIG1hY3Jvcy4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERF
TEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJFRF9JTVBMX0hfCiAj
ZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJFRF9JTVBMX0hfCiAKLS8vIE1ha2Vz
IHN1cmUgdGhpcyBoZWFkZXIgaXMgbm90IGluY2x1ZGVkIGJlZm9yZSBndGVzdC5oLgotI2lmbmRl
ZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0hfCi0jZXJyb3IgRG8gbm90IGluY2x1ZGUgZ3Rl
c3RfcHJlZF9pbXBsLmggZGlyZWN0bHkuICBJbmNsdWRlIGd0ZXN0LmggaW5zdGVhZC4KLSNlbmRp
ZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9IXworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKIAogLy8gVGhpcyBoZWFkZXIgaW1wbGVtZW50cyBh
IGZhbWlseSBvZiBnZW5lcmljIHByZWRpY2F0ZSBhc3NlcnRpb24KIC8vIG1hY3JvczoKQEAgLTY2
LDggKzY3LDYgQEAKIC8vIFdlIGFsc28gZGVmaW5lIHRoZSBFWFBFQ1RfKiB2YXJpYXRpb25zLgog
Ly8KIC8vIEZvciBub3cgd2Ugb25seSBzdXBwb3J0IHByZWRpY2F0ZXMgd2hvc2UgYXJpdHkgaXMg
YXQgbW9zdCA1LgotLy8gUGxlYXNlIGVtYWlsIGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3Jv
dXBzLmNvbSBpZiB5b3UgbmVlZAotLy8gc3VwcG9ydCBmb3IgaGlnaGVyIGFyaXRpZXMuCiAKIC8v
IEdURVNUX0FTU0VSVF8gaXMgdGhlIGJhc2ljIHN0YXRlbWVudCB0byB3aGljaCBhbGwgb2YgdGhl
IGFzc2VydGlvbnMKIC8vIGluIHRoaXMgZmlsZSByZWR1Y2UuICBEb24ndCB1c2UgdGhpcyBpbiB5
b3VyIGNvZGUuCkBAIC05MCwxNyArODksMTUgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQx
SGVscGVyKGNvbnN0IGNoYXIqIHByZWRfdGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUMSYgdjEpIHsKICAgaWYgKHByZWQodjEpKSByZXR1cm4gQXNzZXJ0aW9u
U3VjY2VzcygpOwogCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgcHJlZF90ZXh0IDw8ICIoIgot
ICAgICAgPDwgZTEgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKLSAgICAgIDw8ICJc
biIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MTsKLSAgcmV0dXJuIEFzc2VydGlvbkZh
aWx1cmUobXNnKTsKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBwcmVkX3RleHQgPDwg
IigiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTEgPDwgIikgZXZhbHVhdGVzIHRv
IGZhbHNlLCB3aGVyZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUx
IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjE7CiB9CiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBp
bXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRURfRk9STUFUMS4KIC8vIERvbid0IHVzZSB0
aGlzIGluIHlvdXIgY29kZS4KICNkZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQxXyhwcmVkX2Zvcm1h
dCwgdjEsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgdjEp
LFwKKyAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsIHYxKSwgXAogICAgICAgICAgICAg
ICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VY
UEVDVHxBU1NFUlR9X1BSRUQxLiAgRG9uJ3QgdXNlCkBAIC0xMzYsMTkgKzEzMywxNyBAQCBBc3Nl
cnRpb25SZXN1bHQgQXNzZXJ0UHJlZDJIZWxwZXIoY29uc3QgY2hhciogcHJlZF90ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiB2MikgewogICBpZiAocHJl
ZCh2MSwgdjIpKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIE1lc3NhZ2UgbXNnOwot
ICBtc2cgPDwgcHJlZF90ZXh0IDw8ICIoIgotICAgICAgPDwgZTEgPDwgIiwgIgotICAgICAgPDwg
ZTIgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKLSAgICAgIDw8ICJcbiIgPDwgZTEg
PDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MQotICAgICAgPDwgIlxuIiA8PCBlMiA8PCAiIGV2YWx1
YXRlcyB0byAiIDw8IHYyOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1
cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8PCBlMSA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PDwgZTIgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjEKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIg
PDwgdjI7CiB9CiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxB
U1NFUlR9X1BSRURfRk9STUFUMi4KIC8vIERvbid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KICNk
ZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQyXyhwcmVkX2Zvcm1hdCwgdjEsIHYyLCBvbl9mYWlsdXJl
KVwKLSAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgdjEsIHYyKSxcCisgIEdU
RVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoI3YxLCAjdjIsIHYxLCB2MiksIFwKICAgICAgICAgICAg
ICAgICBvbl9mYWlsdXJlKQogCiAvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtF
WFBFQ1R8QVNTRVJUfV9QUkVEMi4gIERvbid0IHVzZQpAQCAtMTg5LDIxICsxODQsMTkgQEAgQXNz
ZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQzSGVscGVyKGNvbnN0IGNoYXIqIHByZWRfdGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMyYgdjMpIHsKICAgaWYgKHBy
ZWQodjEsIHYyLCB2MykpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBt
c2c7Ci0gIG1zZyA8PCBwcmVkX3RleHQgPDwgIigiCi0gICAgICA8PCBlMSA8PCAiLCAiCi0gICAg
ICA8PCBlMiA8PCAiLCAiCi0gICAgICA8PCBlMyA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdo
ZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxCi0gICAg
ICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjIKLSAgICAgIDw8ICJcbiIg
PDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MzsKLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1
cmUobXNnKTsKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBwcmVkX3RleHQgPDwgIigi
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTEgPDwgIiwgIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8IGUyIDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCBlMyA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8g
IiA8PCB2MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBl
dmFsdWF0ZXMgdG8gIiA8PCB2MzsKIH0KIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVu
dGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQzLgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4g
eW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDNfKHByZWRfZm9ybWF0LCB2MSwg
djIsIHYzLCBvbl9mYWlsdXJlKVwKLSAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2
MiwgI3YzLCB2MSwgdjIsIHYzKSxcCisgIEdURVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoI3YxLCAj
djIsICN2MywgdjEsIHYyLCB2MyksIFwKICAgICAgICAgICAgICAgICBvbl9mYWlsdXJlKQogCiAv
LyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEMy4g
IERvbid0IHVzZQpAQCAtMjQ5LDIzICsyNDIsMjEgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFBy
ZWQ0SGVscGVyKGNvbnN0IGNoYXIqIHByZWRfdGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUNCYgdjQpIHsKICAgaWYgKHByZWQodjEsIHYyLCB2MywgdjQpKSBy
ZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgcHJl
ZF90ZXh0IDw8ICIoIgotICAgICAgPDwgZTEgPDwgIiwgIgotICAgICAgPDwgZTIgPDwgIiwgIgot
ICAgICAgPDwgZTMgPDwgIiwgIgotICAgICAgPDwgZTQgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNl
LCB3aGVyZSIKLSAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MQot
ICAgICAgPDwgIlxuIiA8PCBlMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYyCi0gICAgICA8PCAi
XG4iIDw8IGUzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjMKLSAgICAgIDw8ICJcbiIgPDwgZTQg
PDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NDsKLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNn
KTsKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBwcmVkX3RleHQgPDwgIigiCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTEgPDwgIiwgIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDw8IGUyIDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBl
MyA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTQgPDwgIikgZXZhbHVh
dGVzIHRvIGZhbHNlLCB3aGVyZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4i
IDw8IGUxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjEKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjMK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGU0IDw8ICIgZXZhbHVhdGVz
IHRvICIgPDwgdjQ7CiB9CiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VY
UEVDVHxBU1NFUlR9X1BSRURfRk9STUFUNC4KIC8vIERvbid0IHVzZSB0aGlzIGluIHlvdXIgY29k
ZS4KICNkZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQ0XyhwcmVkX2Zvcm1hdCwgdjEsIHYyLCB2Mywg
djQsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAj
djMsICN2NCwgdjEsIHYyLCB2MywgdjQpLFwKKyAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgj
djEsICN2MiwgI3YzLCAjdjQsIHYxLCB2MiwgdjMsIHY0KSwgXAogICAgICAgICAgICAgICAgIG9u
X2ZhaWx1cmUpCiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxB
U1NFUlR9X1BSRUQ0LiAgRG9uJ3QgdXNlCkBAIC0zMTYsMjUgKzMwNywyMyBAQCBBc3NlcnRpb25S
ZXN1bHQgQXNzZXJ0UHJlZDVIZWxwZXIoY29uc3QgY2hhciogcHJlZF90ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQ1JiB2NSkgewogICBpZiAocHJlZCh2MSwg
djIsIHYzLCB2NCwgdjUpKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIE1lc3NhZ2Ug
bXNnOwotICBtc2cgPDwgcHJlZF90ZXh0IDw8ICIoIgotICAgICAgPDwgZTEgPDwgIiwgIgotICAg
ICAgPDwgZTIgPDwgIiwgIgotICAgICAgPDwgZTMgPDwgIiwgIgotICAgICAgPDwgZTQgPDwgIiwg
IgotICAgICAgPDwgZTUgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKLSAgICAgIDw8
ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MQotICAgICAgPDwgIlxuIiA8PCBl
MiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYyCi0gICAgICA8PCAiXG4iIDw8IGUzIDw8ICIgZXZh
bHVhdGVzIHRvICIgPDwgdjMKLSAgICAgIDw8ICJcbiIgPDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8g
IiA8PCB2NAotICAgICAgPDwgIlxuIiA8PCBlNSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHY1Owot
ICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVy
ZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBl
MSA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTIgPDwgIiwgIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUzIDw8ICIsICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCBlNCA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
ZTUgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjEKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwg
djIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUzIDw8ICIgZXZhbHVh
dGVzIHRvICIgPDwgdjMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGU0
IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
PCAiXG4iIDw8IGU1IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjU7CiB9CiAKIC8vIEludGVybmFs
IG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRURfRk9STUFUNS4KIC8v
IERvbid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KICNkZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQ1
XyhwcmVkX2Zvcm1hdCwgdjEsIHYyLCB2MywgdjQsIHY1LCBvbl9mYWlsdXJlKVwKLSAgR1RFU1Rf
QVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3YzLCAjdjQsICN2NSwgdjEsIHYyLCB2Mywg
djQsIHY1KSxcCisgIEdURVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoI3YxLCAjdjIsICN2MywgI3Y0
LCAjdjUsIHYxLCB2MiwgdjMsIHY0LCB2NSksIFwKICAgICAgICAgICAgICAgICBvbl9mYWlsdXJl
KQogCiAvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9Q
UkVENS4gIERvbid0IHVzZQpAQCAtMzY1LDQgKzM1NCw2IEBAIEFzc2VydGlvblJlc3VsdCBBc3Nl
cnRQcmVkNUhlbHBlcihjb25zdCBjaGFyKiBwcmVkX3RleHQsCiAKIAogCit9ICAvLyBuYW1lc3Bh
Y2UgdGVzdGluZworCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJFRF9J
TVBMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2d0ZXN0X3Byb2QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rl
c3RfcHJvZC5oCmluZGV4IGRhODBkZGM2YzcwZWUyZGM3NzNlZDY3NjVhNGY4OWRmYThjYjM4ZTgu
LmU2NTE2NzFlYmRlODU5ZmM3MzFiNTQ1OWJkYzA2NjFhZjA3NTdjYjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oCkBAIC0yNiwx
MCArMjYsMTAgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKwogLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0v
LyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGRlZmluaXRpb25zIHVzZWZ1bCBpbiBwcm9k
dWN0aW9uIGNvZGUuCisvLyBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3Jr
IGRlZmluaXRpb25zIHVzZWZ1bCBpbiBwcm9kdWN0aW9uIGNvZGUuCisvLyBHT09HTEVURVNUX0NN
MDAwMyBETyBOT1QgREVMRVRFCiAKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9Q
Uk9EX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJPRF9IXwpAQCAtNDAs
MTcgKzQwLDIwIEBACiAvLwogLy8gY2xhc3MgTXlDbGFzcyB7CiAvLyAgcHJpdmF0ZToKLS8vICAg
dm9pZCBNeU1ldGhvZCgpOwotLy8gICBGUklFTkRfVEVTVChNeUNsYXNzVGVzdCwgTXlNZXRob2Qp
OworLy8gICB2b2lkIFByaXZhdGVNZXRob2QoKTsKKy8vICAgRlJJRU5EX1RFU1QoTXlDbGFzc1Rl
c3QsIFByaXZhdGVNZXRob2RXb3Jrcyk7CiAvLyB9OwogLy8KIC8vIGNsYXNzIE15Q2xhc3NUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogLy8gICAvLyAuLi4KIC8vIH07CiAvLwotLy8gVEVT
VF9GKE15Q2xhc3NUZXN0LCBNeU1ldGhvZCkgewotLy8gICAvLyBDYW4gY2FsbCBNeUNsYXNzOjpN
eU1ldGhvZCgpIGhlcmUuCisvLyBURVNUX0YoTXlDbGFzc1Rlc3QsIFByaXZhdGVNZXRob2RXb3Jr
cykgeworLy8gICAvLyBDYW4gY2FsbCBNeUNsYXNzOjpQcml2YXRlTWV0aG9kKCkgaGVyZS4KIC8v
IH0KKy8vCisvLyBOb3RlOiBUaGUgdGVzdCBjbGFzcyBtdXN0IGJlIGluIHRoZSBzYW1lIG5hbWVz
cGFjZSBhcyB0aGUgY2xhc3MgYmVpbmcgdGVzdGVkLgorLy8gRm9yIGV4YW1wbGUsIHB1dHRpbmcg
TXlDbGFzc1Rlc3QgaW4gYW4gYW5vbnltb3VzIG5hbWVzcGFjZSB3aWxsIG5vdCB3b3JrLgogCiAj
ZGVmaW5lIEZSSUVORF9URVNUKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpXAogZnJpZW5kIGNs
YXNzIHRlc3RfY2FzZV9uYW1lIyNfIyN0ZXN0X25hbWUjI19UZXN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9SRUFETUUu
bWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3Rv
bS9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmYzOTFmYjRlMmI1NzY1Y2FjOGM2OTQzMzU5YjE1YmJk
NWY0ZjE0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL1JFQURNRS5tZApAQCAtMCwwICsxLDU2IEBACisjIEN1
c3RvbWl6YXRpb24gUG9pbnRzCisKK1RoZSBjdXN0b20gZGlyZWN0b3J5IGlzIGFuIGluamVjdGlv
biBwb2ludCBmb3IgY3VzdG9tIHVzZXIgY29uZmlndXJhdGlvbnMuCisKKyMjIEhlYWRlciBgZ3Rl
c3QuaGAKKworIyMjIFRoZSBmb2xsb3dpbmcgbWFjcm9zIGNhbiBiZSBkZWZpbmVkOgorCisqICAg
YEdURVNUX09TX1NUQUNLX1RSQUNFX0dFVFRFUl9gIC0gVGhlIG5hbWUgb2YgYW4gaW1wbGVtZW50
YXRpb24gb2YKKyAgICBgT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlYC4KKyogICBgR1RFU1Rf
Q1VTVE9NX1RFTVBESVJfRlVOQ1RJT05fYCAtIEFuIG92ZXJyaWRlIGZvciBgdGVzdGluZzo6VGVt
cERpcigpYC4gU2VlCisgICAgYHRlc3Rpbmc6OlRlbXBEaXJgIGZvciBzZW1hbnRpY3MgYW5kIHNp
Z25hdHVyZS4KKworIyMgSGVhZGVyIGBndGVzdC1wb3J0LmhgCisKK1RoZSBmb2xsb3dpbmcgbWFj
cm9zIGNhbiBiZSBkZWZpbmVkOgorCisjIyMgRmxhZyByZWxhdGVkIG1hY3JvczoKKworKiAgIGBH
VEVTVF9GTEFHKGZsYWdfbmFtZSlgCisqICAgYEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR19g
IC0gRGVmaW5lIHRvIDAgd2hlbiB0aGUgc3lzdGVtIHByb3ZpZGVzIGl0cworICAgIG93biBmbGFn
ZmlsZSBmbGFnIHBhcnNpbmcuCisqICAgYEdURVNUX0RFQ0xBUkVfYm9vbF8obmFtZSlgCisqICAg
YEdURVNUX0RFQ0xBUkVfaW50MzJfKG5hbWUpYAorKiAgIGBHVEVTVF9ERUNMQVJFX3N0cmluZ18o
bmFtZSlgCisqICAgYEdURVNUX0RFRklORV9ib29sXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKWAK
KyogICBgR1RFU1RfREVGSU5FX2ludDMyXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKWAKKyogICBg
R1RFU1RfREVGSU5FX3N0cmluZ18obmFtZSwgZGVmYXVsdF92YWwsIGRvYylgCisKKyMjIyBMb2dn
aW5nOgorCisqICAgYEdURVNUX0xPR18oc2V2ZXJpdHkpYAorKiAgIGBHVEVTVF9DSEVDS18oY29u
ZGl0aW9uKWAKKyogICBGdW5jdGlvbnMgYExvZ1RvU3RkZXJyKClgIGFuZCBgRmx1c2hJbmZvTG9n
KClgIGhhdmUgdG8gYmUgcHJvdmlkZWQgdG9vLgorCisjIyMgVGhyZWFkaW5nOgorCisqICAgYEdU
RVNUX0hBU19OT1RJRklDQVRJT05fYCAtIEVuYWJsZWQgaWYgTm90aWZpY2F0aW9uIGlzIGFscmVh
ZHkgcHJvdmlkZWQuCisqICAgYEdURVNUX0hBU19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMX2AgLSBF
bmFibGVkIGlmIGBNdXRleGAgYW5kIGBUaHJlYWRMb2NhbGAKKyAgICBhcmUgYWxyZWFkeSBwcm92
aWRlZC4gTXVzdCBhbHNvIHByb3ZpZGUgYEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRl
eClgCisgICAgYW5kIGBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhtdXRleClgCisqICAgYEdU
RVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhsb2NrcylgCisqICAgYEdURVNUX0xPQ0tfRVhD
TFVERURfKGxvY2tzKWAKKworIyMjIFVuZGVybHlpbmcgbGlicmFyeSBzdXBwb3J0IGZlYXR1cmVz
CisKKyogICBgR1RFU1RfSEFTX0NYWEFCSV9IX2AKKworIyMjIEV4cG9ydGluZyBBUEkgc3ltYm9s
czoKKworKiAgIGBHVEVTVF9BUElfYCAtIFNwZWNpZmllciBmb3IgZXhwb3J0ZWQgc3ltYm9scy4K
KworIyMgSGVhZGVyIGBndGVzdC1wcmludGVycy5oYAorCisqICAgU2VlIGRvY3VtZW50YXRpb24g
YXQgYGd0ZXN0L2d0ZXN0LXByaW50ZXJzLmhgIGZvciBkZXRhaWxzIG9uIGhvdyB0byBkZWZpbmUg
YQorICAgIGN1c3RvbSBwcmludGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmNkODVkOTU2ZDJkYzE3YmQ1MzdmMjE0MjM0MGJkZjU4ZjQ3MzcxMTgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmgKQEAgLTAsMCArMSwzNyBAQAorLy8gQ29weXJpZ2h0
IDIwMTUsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24u
CisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEluamVjdGlvbiBwb2ludCBm
b3IgY3VzdG9tIHVzZXIgY29uZmlndXJhdGlvbnMuIFNlZSBSRUFETUUgZm9yIGRldGFpbHMKKy8v
CisvLyAqKiBDdXN0b20gaW1wbGVtZW50YXRpb24gc3RhcnRzIGhlcmUgKioKKworI2lmbmRlZiBH
VEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0NVU1RPTV9HVEVTVF9QT1JUX0hfCisjZGVmaW5l
IEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX1BPUlRfSF8KKworI2Vu
ZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0NVU1RPTV9HVEVTVF9QT1JUX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVy
bmFsL2N1c3RvbS9ndGVzdC1wcmludGVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcHJpbnRlcnMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
YjQ0NjdhYmNhYmVhN2ZmNzZmOWQyZDUyNzM4N2M5ZGE4MTAxNDhiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20v
Z3Rlc3QtcHJpbnRlcnMuaApAQCAtMCwwICsxLDQyIEBACisvLyBDb3B5cmlnaHQgMjAxNSwgR29v
Z2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gVGhpcyBmaWxlIHByb3ZpZGVzIGFuIGluamVj
dGlvbiBwb2ludCBmb3IgY3VzdG9tIHByaW50ZXJzIGluIGEgbG9jYWwKKy8vIGluc3RhbGxhdGlv
biBvZiBnVGVzdC4KKy8vIEl0IHdpbGwgYmUgaW5jbHVkZWQgZnJvbSBndGVzdC1wcmludGVycy5o
IGFuZCB0aGUgb3ZlcnJpZGVzIGluIHRoaXMgZmlsZQorLy8gd2lsbCBiZSB2aXNpYmxlIHRvIGV2
ZXJ5b25lLgorLy8KKy8vIEluamVjdGlvbiBwb2ludCBmb3IgY3VzdG9tIHVzZXIgY29uZmlndXJh
dGlvbnMuIFNlZSBSRUFETUUgZm9yIGRldGFpbHMKKy8vCisvLyAqKiBDdXN0b20gaW1wbGVtZW50
YXRpb24gc3RhcnRzIGhlcmUgKioKKworI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVS
TkFMX0NVU1RPTV9HVEVTVF9QUklOVEVSU19IXworI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNU
X0lOVEVSTkFMX0NVU1RPTV9HVEVTVF9QUklOVEVSU19IXworCisjZW5kaWYgIC8vIEdURVNUX0lO
Q0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX1BSSU5URVJTX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9n
dGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9j
dXN0b20vZ3Rlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzhlMDdiZTIzZjFmZDYxNTlhZmVmMmVlZmQ3NDQ0
MDM0ZGQwNjA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QuaApAQCAtMCwwICsxLDM3IEBACisvLyBD
b3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3Ry
aWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gSW5qZWN0aW9u
IHBvaW50IGZvciBjdXN0b20gdXNlciBjb25maWd1cmF0aW9ucy4gU2VlIFJFQURNRSBmb3IgZGV0
YWlscworLy8KKy8vICoqIEN1c3RvbSBpbXBsZW1lbnRhdGlvbiBzdGFydHMgaGVyZSAqKgorCisj
aWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX0hfCisjZGVm
aW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX0hfCisKKyNlbmRp
ZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RFU1RfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmgKaW5kZXggZTQzMzA4
NDhkNGVhZTU3MGYyODBkYWM1N2NmMDBiMjk3MjJjN2QwYy4uMGE5YjQyYzhhNTcyYTg3MTk0YzY1
MTA5MDNlMjFlYTIyNjBmYWM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1kZWF0
aC10ZXN0LWludGVybmFsLmgKQEAgLTI3LDE3ICsyNywxOCBAQAogLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogLy8KLS8vIEF1dGhvcnM6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBX
YW4pLCBlZWZhY21AZ21haWwuY29tIChTZWFuIE1jYWZlZSkKLS8vCi0vLyBUaGUgR29vZ2xlIEMr
KyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0
aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBoZWFk
ZXIgZmlsZSBkZWZpbmVzIGludGVybmFsIHV0aWxpdGllcyBuZWVkZWQgZm9yIGltcGxlbWVudGlu
ZwogLy8gZGVhdGggdGVzdHMuICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5v
dGljZS4KKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKIAogI2lmbmRlZiBHVEVT
VF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0RFQVRIX1RFU1RfSU5URVJOQUxfSF8KICNk
ZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9ERUFUSF9URVNUX0lOVEVS
TkFMX0hfCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oPgorI2lu
Y2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgiCisKKyNpbmNsdWRlIDxzdGRp
by5oPgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewpAQCAtNTEs
NiArNTIsOSBAQCBjb25zdCBjaGFyIGtJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWdbXSA9ICJpbnRl
cm5hbF9ydW5fZGVhdGhfdGVzdCI7CiAKICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogCitHVEVT
VF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MjUxIFwKKy8qIGNsYXNzIEEgbmVlZHMgdG8g
aGF2ZSBkbGwtaW50ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50cyBvZiBjbGFzcyBCICovKQor
CiAvLyBEZWF0aFRlc3QgaXMgYSBjbGFzcyB0aGF0IGhpZGVzIG11Y2ggb2YgdGhlIGNvbXBsZXhp
dHkgb2YgdGhlCiAvLyBHVEVTVF9ERUFUSF9URVNUXyBtYWNyby4gIEl0IGlzIGFic3RyYWN0OyBp
dHMgc3RhdGljIENyZWF0ZSBtZXRob2QKIC8vIHJldHVybnMgYSBjb25jcmV0ZSBjbGFzcyB0aGF0
IGRlcGVuZHMgb24gdGhlIHByZXZhaWxpbmcgZGVhdGggdGVzdApAQCAtOTYsOCArMTAwLDEyIEBA
IGNsYXNzIEdURVNUX0FQSV8gRGVhdGhUZXN0IHsKICAgLy8gdGVzdCwgdGhlbiB3YWl0IGZvciBp
dCB0byBjb21wbGV0ZS4KICAgZW51bSBUZXN0Um9sZSB7IE9WRVJTRUVfVEVTVCwgRVhFQ1VURV9U
RVNUIH07CiAKLSAgLy8gQW4gZW51bWVyYXRpb24gb2YgdGhlIHR3byByZWFzb25zIHRoYXQgYSB0
ZXN0IG1pZ2h0IGJlIGFib3J0ZWQuCi0gIGVudW0gQWJvcnRSZWFzb24geyBURVNUX0VOQ09VTlRF
UkVEX1JFVFVSTl9TVEFURU1FTlQsIFRFU1RfRElEX05PVF9ESUUgfTsKKyAgLy8gQW4gZW51bWVy
YXRpb24gb2YgdGhlIHRocmVlIHJlYXNvbnMgdGhhdCBhIHRlc3QgbWlnaHQgYmUgYWJvcnRlZC4K
KyAgZW51bSBBYm9ydFJlYXNvbiB7CisgICAgVEVTVF9FTkNPVU5URVJFRF9SRVRVUk5fU1RBVEVN
RU5ULAorICAgIFRFU1RfVEhSRVdfRVhDRVBUSU9OLAorICAgIFRFU1RfRElEX05PVF9ESUUKKyAg
fTsKIAogICAvLyBBc3N1bWVzIG9uZSBvZiB0aGUgYWJvdmUgcm9sZXMuCiAgIHZpcnR1YWwgVGVz
dFJvbGUgQXNzdW1lUm9sZSgpID0gMDsKQEAgLTEyMSwxNSArMTI5LDE3IEBAIGNsYXNzIEdURVNU
X0FQSV8gRGVhdGhUZXN0IHsKICAgLy8gdGhlIGxhc3QgZGVhdGggdGVzdC4KICAgc3RhdGljIGNv
bnN0IGNoYXIqIExhc3RNZXNzYWdlKCk7CiAKLSAgc3RhdGljIHZvaWQgc2V0X2xhc3RfZGVhdGhf
dGVzdF9tZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgIHN0YXRpYyB2b2lkIHNldF9s
YXN0X2RlYXRoX3Rlc3RfbWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSk7CiAKICBw
cml2YXRlOgogICAvLyBBIHN0cmluZyBjb250YWluaW5nIGEgZGVzY3JpcHRpb24gb2YgdGhlIG91
dGNvbWUgb2YgdGhlIGxhc3QgZGVhdGggdGVzdC4KLSAgc3RhdGljIFN0cmluZyBsYXN0X2RlYXRo
X3Rlc3RfbWVzc2FnZV87CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBsYXN0X2RlYXRoX3Rlc3RfbWVz
c2FnZV87CiAKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhEZWF0aFRlc3QpOwog
fTsKIAorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQorCiAvLyBG
YWN0b3J5IGludGVyZmFjZSBmb3IgZGVhdGggdGVzdHMuICBNYXkgYmUgbW9ja2VkIG91dCBmb3Ig
dGVzdGluZy4KIGNsYXNzIERlYXRoVGVzdEZhY3RvcnkgewogIHB1YmxpYzoKQEAgLTE0OSw5ICsx
NTksMzQgQEAgY2xhc3MgRGVmYXVsdERlYXRoVGVzdEZhY3RvcnkgOiBwdWJsaWMgRGVhdGhUZXN0
RmFjdG9yeSB7CiAvLyBieSBhIHNpZ25hbCwgb3IgZXhpdGVkIG5vcm1hbGx5IHdpdGggYSBub256
ZXJvIGV4aXQgY29kZS4KIEdURVNUX0FQSV8gYm9vbCBFeGl0ZWRVbnN1Y2Nlc3NmdWxseShpbnQg
ZXhpdF9zdGF0dXMpOwogCisvLyBUcmFwcyBDKysgZXhjZXB0aW9ucyBlc2NhcGluZyBzdGF0ZW1l
bnQgYW5kIHJlcG9ydHMgdGhlbSBhcyB0ZXN0CisvLyBmYWlsdXJlcy4gTm90ZSB0aGF0IHRyYXBw
aW5nIFNFSCBleGNlcHRpb25zIGlzIG5vdCBpbXBsZW1lbnRlZCBoZXJlLgorIyBpZiBHVEVTVF9I
QVNfRVhDRVBUSU9OUworIyAgZGVmaW5lIEdURVNUX0VYRUNVVEVfREVBVEhfVEVTVF9TVEFURU1F
TlRfKHN0YXRlbWVudCwgZGVhdGhfdGVzdCkgXAorICB0cnkgeyBcCisgICAgR1RFU1RfU1VQUFJF
U1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCisgIH0gY2F0
Y2ggKGNvbnN0IDo6c3RkOjpleGNlcHRpb24mIGd0ZXN0X2V4Y2VwdGlvbikgeyBcCisgICAgZnBy
aW50ZihcCisgICAgICAgIHN0ZGVyciwgXAorICAgICAgICAiXG4lczogQ2F1Z2h0IHN0ZDo6ZXhj
ZXB0aW9uLWRlcml2ZWQgZXhjZXB0aW9uIGVzY2FwaW5nIHRoZSAiIFwKKyAgICAgICAgImRlYXRo
IHRlc3Qgc3RhdGVtZW50LiBFeGNlcHRpb24gbWVzc2FnZTogJXNcbiIsIFwKKyAgICAgICAgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0RmlsZUxvY2F0aW9uKF9fRklMRV9fLCBfX0xJTkVfXyku
Y19zdHIoKSwgXAorICAgICAgICBndGVzdF9leGNlcHRpb24ud2hhdCgpKTsgXAorICAgIGZmbHVz
aChzdGRlcnIpOyBcCisgICAgZGVhdGhfdGVzdC0+QWJvcnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
RGVhdGhUZXN0OjpURVNUX1RIUkVXX0VYQ0VQVElPTik7IFwKKyAgfSBjYXRjaCAoLi4uKSB7IFwK
KyAgICBkZWF0aF90ZXN0LT5BYm9ydCg6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OlRF
U1RfVEhSRVdfRVhDRVBUSU9OKTsgXAorICB9CisKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0VY
RUNVVEVfREVBVEhfVEVTVF9TVEFURU1FTlRfKHN0YXRlbWVudCwgZGVhdGhfdGVzdCkgXAorICBH
VEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCkK
KworIyBlbmRpZgorCiAvLyBUaGlzIG1hY3JvIGlzIGZvciBpbXBsZW1lbnRpbmcgQVNTRVJUX0RF
QVRIKiwgRVhQRUNUX0RFQVRIKiwKIC8vIEFTU0VSVF9FWElUKiwgYW5kIEVYUEVDVF9FWElUKi4K
LSNkZWZpbmUgR1RFU1RfREVBVEhfVEVTVF8oc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4LCBm
YWlsKSBcCisjIGRlZmluZSBHVEVTVF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwg
cmVnZXgsIGZhaWwpIFwKICAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAogICBpZiAo
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKICAgICBjb25zdCA6OnRlc3Rp
bmc6OmludGVybmFsOjpSRSYgZ3Rlc3RfcmVnZXggPSAocmVnZXgpOyBcCkBAIC0xNzIsMTAgKzIw
NywxMiBAQCBHVEVTVF9BUElfIGJvb2wgRXhpdGVkVW5zdWNjZXNzZnVsbHkoaW50IGV4aXRfc3Rh
dHVzKTsKICAgICAgICAgY2FzZSA6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OkVYRUNV
VEVfVEVTVDogeyBcCiAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0OjpS
ZXR1cm5TZW50aW5lbCBcCiAgICAgICAgICAgICAgIGd0ZXN0X3NlbnRpbmVsKGd0ZXN0X2R0KTsg
XAotICAgICAgICAgIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxP
V18oc3RhdGVtZW50KTsgXAorICAgICAgICAgIEdURVNUX0VYRUNVVEVfREVBVEhfVEVTVF9TVEFU
RU1FTlRfKHN0YXRlbWVudCwgZ3Rlc3RfZHQpOyBcCiAgICAgICAgICAgZ3Rlc3RfZHQtPkFib3J0
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVzdDo6VEVTVF9ESURfTk9UX0RJRSk7IFwKICAg
ICAgICAgICBicmVhazsgXAogICAgICAgICB9IFwKKyAgICAgICAgZGVmYXVsdDogXAorICAgICAg
ICAgIGJyZWFrOyBcCiAgICAgICB9IFwKICAgICB9IFwKICAgfSBlbHNlIFwKQEAgLTE4NCwxMiAr
MjIxLDI3IEBAIEdURVNUX0FQSV8gYm9vbCBFeGl0ZWRVbnN1Y2Nlc3NmdWxseShpbnQgZXhpdF9z
dGF0dXMpOwogLy8gVGhlIHN5bWJvbCAiZmFpbCIgaGVyZSBleHBhbmRzIHRvIHNvbWV0aGluZyBp
bnRvIHdoaWNoIGEgbWVzc2FnZQogLy8gY2FuIGJlIHN0cmVhbWVkLgogCisvLyBUaGlzIG1hY3Jv
IGlzIGZvciBpbXBsZW1lbnRpbmcgQVNTRVJUL0VYUEVDVF9ERUJVR19ERUFUSCB3aGVuIGNvbXBp
bGVkIGluCisvLyBOREVCVUcgbW9kZS4gSW4gdGhpcyBjYXNlIHdlIG5lZWQgdGhlIHN0YXRlbWVu
dHMgdG8gYmUgZXhlY3V0ZWQgYW5kIHRoZSBtYWNybworLy8gbXVzdCBhY2NlcHQgYSBzdHJlYW1l
ZCBtZXNzYWdlIGV2ZW4gdGhvdWdoIHRoZSBtZXNzYWdlIGlzIG5ldmVyIHByaW50ZWQuCisvLyBU
aGUgcmVnZXggb2JqZWN0IGlzIG5vdCBldmFsdWF0ZWQsIGJ1dCBpdCBpcyB1c2VkIHRvIHByZXZl
bnQgInVudXNlZCIKKy8vIHdhcm5pbmdzIGFuZCB0byBhdm9pZCBhbiBleHByZXNzaW9uIHRoYXQg
ZG9lc24ndCBjb21waWxlIGluIGRlYnVnIG1vZGUuCisjZGVmaW5lIEdURVNUX0VYRUNVVEVfU1RB
VEVNRU5UXyhzdGF0ZW1lbnQsIHJlZ2V4KSAgICAgICAgICAgICBcCisgIEdURVNUX0FNQklHVU9V
U19FTFNFX0JMT0NLRVJfICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGlmICg6
OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgICAgICAgICAgICAgICAgICAgICBc
CisgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0
ZW1lbnQpOyBcCisgIH0gZWxzZSBpZiAoITo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUo
KSkgeyAgICAgICAgICAgICBcCisgICAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UkUmIGd0
ZXN0X3JlZ2V4ID0gKHJlZ2V4KTsgICAgICBcCisgICAgc3RhdGljX2Nhc3Q8dm9pZD4oZ3Rlc3Rf
cmVnZXgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gZWxzZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgOjp0ZXN0
aW5nOjpNZXNzYWdlKCkKKwogLy8gQSBjbGFzcyByZXByZXNlbnRpbmcgdGhlIHBhcnNlZCBjb250
ZW50cyBvZiB0aGUKIC8vIC0tZ3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QgZmxhZywgYXMg
aXQgZXhpc3RlZCB3aGVuCiAvLyBSVU5fQUxMX1RFU1RTIHdhcyBjYWxsZWQuCiBjbGFzcyBJbnRl
cm5hbFJ1bkRlYXRoVGVzdEZsYWcgewogIHB1YmxpYzoKLSAgSW50ZXJuYWxSdW5EZWF0aFRlc3RG
bGFnKGNvbnN0IFN0cmluZyYgYV9maWxlLAorICBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoY29u
c3Qgc3RkOjpzdHJpbmcmIGFfZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBh
X2xpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYW5faW5kZXgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgYV93cml0ZV9mZCkKQEAgLTIwMSwxMyArMjUzLDEzIEBA
IGNsYXNzIEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyB7CiAgICAgICBwb3NpeDo6Q2xvc2Uod3Jp
dGVfZmRfKTsKICAgfQogCi0gIFN0cmluZyBmaWxlKCkgY29uc3QgeyByZXR1cm4gZmlsZV87IH0K
KyAgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGUoKSBjb25zdCB7IHJldHVybiBmaWxlXzsgfQogICBp
bnQgbGluZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmVfOyB9CiAgIGludCBpbmRleCgpIGNvbnN0IHsg
cmV0dXJuIGluZGV4XzsgfQogICBpbnQgd3JpdGVfZmQoKSBjb25zdCB7IHJldHVybiB3cml0ZV9m
ZF87IH0KIAogIHByaXZhdGU6Ci0gIFN0cmluZyBmaWxlXzsKKyAgc3RkOjpzdHJpbmcgZmlsZV87
CiAgIGludCBsaW5lXzsKICAgaW50IGluZGV4XzsKICAgaW50IHdyaXRlX2ZkXzsKQEAgLTIyMCw1
MyArMjcyLDYgQEAgY2xhc3MgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnIHsKIC8vIHRoZSBmbGFn
IGlzIHNwZWNpZmllZDsgb3RoZXJ3aXNlIHJldHVybnMgTlVMTC4KIEludGVybmFsUnVuRGVhdGhU
ZXN0RmxhZyogUGFyc2VJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoKTsKIAotI2Vsc2UgIC8vIEdU
RVNUX0hBU19ERUFUSF9URVNUCi0KLS8vIFRoaXMgbWFjcm8gaXMgdXNlZCBmb3IgaW1wbGVtZW50
aW5nIG1hY3JvcyBzdWNoIGFzCi0vLyBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEIGFuZCBBU1NF
UlRfREVBVEhfSUZfU1VQUE9SVEVEIG9uIHN5c3RlbXMgd2hlcmUKLS8vIGRlYXRoIHRlc3RzIGFy
ZSBub3Qgc3VwcG9ydGVkLiBUaG9zZSBtYWNyb3MgbXVzdCBjb21waWxlIG9uIHN1Y2ggc3lzdGVt
cwotLy8gaWZmIEVYUEVDVF9ERUFUSCBhbmQgQVNTRVJUX0RFQVRIIGNvbXBpbGUgd2l0aCB0aGUg
c2FtZSBwYXJhbWV0ZXJzIG9uCi0vLyBzeXN0ZW1zIHRoYXQgc3VwcG9ydCBkZWF0aCB0ZXN0cy4g
VGhpcyBhbGxvd3Mgb25lIHRvIHdyaXRlIHN1Y2ggYSBtYWNybwotLy8gb24gYSBzeXN0ZW0gdGhh
dCBkb2VzIG5vdCBzdXBwb3J0IGRlYXRoIHRlc3RzIGFuZCBiZSBzdXJlIHRoYXQgaXQgd2lsbAot
Ly8gY29tcGlsZSBvbiBhIGRlYXRoLXRlc3Qgc3VwcG9ydGluZyBzeXN0ZW0uCi0vLwotLy8gUGFy
YW1ldGVyczoKLS8vICAgc3RhdGVtZW50IC0gIEEgc3RhdGVtZW50IHRoYXQgYSBtYWNybyBzdWNo
IGFzIEVYUEVDVF9ERUFUSCB3b3VsZCB0ZXN0Ci0vLyAgICAgICAgICAgICAgICBmb3IgcHJvZ3Jh
bSB0ZXJtaW5hdGlvbi4gVGhpcyBtYWNybyBoYXMgdG8gbWFrZSBzdXJlIHRoaXMKLS8vICAgICAg
ICAgICAgICAgIHN0YXRlbWVudCBpcyBjb21waWxlZCBidXQgbm90IGV4ZWN1dGVkLCB0byBlbnN1
cmUgdGhhdAotLy8gICAgICAgICAgICAgICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCBjb21w
aWxlcyB3aXRoIGEgY2VydGFpbgotLy8gICAgICAgICAgICAgICAgcGFyYW1ldGVyIGlmZiBFWFBF
Q1RfREVBVEggY29tcGlsZXMgd2l0aCBpdC4KLS8vICAgcmVnZXggICAgIC0gIEEgcmVnZXggdGhh
dCBhIG1hY3JvIHN1Y2ggYXMgRVhQRUNUX0RFQVRIIHdvdWxkIHVzZSB0byB0ZXN0Ci0vLyAgICAg
ICAgICAgICAgICB0aGUgb3V0cHV0IG9mIHN0YXRlbWVudC4gIFRoaXMgcGFyYW1ldGVyIGhhcyB0
byBiZQotLy8gICAgICAgICAgICAgICAgY29tcGlsZWQgYnV0IG5vdCBldmFsdWF0ZWQgYnkgdGhp
cyBtYWNybywgdG8gZW5zdXJlIHRoYXQKLS8vICAgICAgICAgICAgICAgIHRoaXMgbWFjcm8gb25s
eSBhY2NlcHRzIGV4cHJlc3Npb25zIHRoYXQgYSBtYWNybyBzdWNoIGFzCi0vLyAgICAgICAgICAg
ICAgICBFWFBFQ1RfREVBVEggd291bGQgYWNjZXB0LgotLy8gICB0ZXJtaW5hdG9yIC0gTXVzdCBi
ZSBhbiBlbXB0eSBzdGF0ZW1lbnQgZm9yIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQKLS8vICAg
ICAgICAgICAgICAgIGFuZCBhIHJldHVybiBzdGF0ZW1lbnQgZm9yIEFTU0VSVF9ERUFUSF9JRl9T
VVBQT1JURUQuCi0vLyAgICAgICAgICAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCBBU1NFUlRfREVB
VEhfSUZfU1VQUE9SVEVEIHdpbGwgbm90Ci0vLyAgICAgICAgICAgICAgICBjb21waWxlIGluc2lk
ZSBmdW5jdGlvbnMgd2hlcmUgQVNTRVJUX0RFQVRIIGRvZXNuJ3QKLS8vICAgICAgICAgICAgICAg
IGNvbXBpbGUuCi0vLwotLy8gIFRoZSBicmFuY2ggdGhhdCBoYXMgYW4gYWx3YXlzIGZhbHNlIGNv
bmRpdGlvbiBpcyB1c2VkIHRvIGVuc3VyZSB0aGF0Ci0vLyAgc3RhdGVtZW50IGFuZCByZWdleCBh
cmUgY29tcGlsZWQgKGFuZCB0aHVzIHN5bnRhY3RpY2FsbHkgY29ycmVjdCkgYnV0Ci0vLyAgbmV2
ZXIgZXhlY3V0ZWQuIFRoZSB1bnJlYWNoYWJsZSBjb2RlIG1hY3JvIHByb3RlY3RzIHRoZSB0ZXJt
aW5hdG9yCi0vLyAgc3RhdGVtZW50IGZyb20gZ2VuZXJhdGluZyBhbiAndW5yZWFjaGFibGUgY29k
ZScgd2FybmluZyBpbiBjYXNlCi0vLyAgc3RhdGVtZW50IHVuY29uZGl0aW9uYWxseSByZXR1cm5z
IG9yIHRocm93cy4gVGhlIE1lc3NhZ2UgY29uc3RydWN0b3IgYXQKLS8vICB0aGUgZW5kIGFsbG93
cyB0aGUgc3ludGF4IG9mIHN0cmVhbWluZyBhZGRpdGlvbmFsIG1lc3NhZ2VzIGludG8gdGhlCi0v
LyAgbWFjcm8sIGZvciBjb21waWxhdGlvbmFsIGNvbXBhdGliaWxpdHkgd2l0aCBFWFBFQ1RfREVB
VEgvQVNTRVJUX0RFQVRILgotI2RlZmluZSBHVEVTVF9VTlNVUFBPUlRFRF9ERUFUSF9URVNUXyhz
dGF0ZW1lbnQsIHJlZ2V4LCB0ZXJtaW5hdG9yKSBcCi0gICAgR1RFU1RfQU1CSUdVT1VTX0VMU0Vf
QkxPQ0tFUl8gXAotICAgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsg
XAotICAgICAgR1RFU1RfTE9HXyhXQVJOSU5HKSBcCi0gICAgICAgICAgPDwgIkRlYXRoIHRlc3Rz
IGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uXG4iIFwKLSAgICAgICAgICA8PCAi
U3RhdGVtZW50ICciICNzdGF0ZW1lbnQgIicgY2Fubm90IGJlIHZlcmlmaWVkLiI7IFwKLSAgICB9
IGVsc2UgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpIHsgXAotICAgICAg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6UkU6OlBhcnRpYWxNYXRjaCgiLioiLCAocmVnZXgpKTsgXAot
ICAgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0
ZW1lbnQpOyBcCi0gICAgICB0ZXJtaW5hdG9yOyBcCi0gICAgfSBlbHNlIFwKLSAgICAgIDo6dGVz
dGluZzo6TWVzc2FnZSgpCi0KICNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKIAogfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgKaW5kZXgg
NGI3NmQ3OTUwNmIwMjZhYmEzNzE2NDcyZmM0M2NlZmMxYTdlMzg4YS4uYWUzOGQ5NWJmODQ0ZmE5
ZGMyMTczOWNmODIxMjc2ZDViMzQxN2UzYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGgu
aApAQCAtMjcsMjAgKzI3LDIzIEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAv
LwotLy8gQXV0aG9yOiBrZWl0aC5yYXlAZ21haWwuY29tIChLZWl0aCBSYXkpCi0vLwogLy8gR29v
Z2xlIFRlc3QgZmlsZXBhdGggdXRpbGl0aWVzCiAvLwogLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWNs
YXJlcyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5IGJ5CiAvLyBHb29nbGUg
VGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgogLy8KLS8v
IFRoaXMgZmlsZSBpcyAjaW5jbHVkZWQgaW4gPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFs
Lmg+LgorLy8gVGhpcyBmaWxlIGlzICNpbmNsdWRlZCBpbiBndGVzdC9pbnRlcm5hbC9ndGVzdC1p
bnRlcm5hbC5oLgogLy8gRG8gbm90IGluY2x1ZGUgdGhpcyBoZWFkZXIgZmlsZSBzZXBhcmF0ZWx5
IQogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1Rf
SU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9GSUxFUEFUSF9IXwogI2RlZmluZSBHVEVTVF9J
TkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0ZJTEVQQVRIX0hfCiAKLSNpbmNsdWRlIDxndGVz
dC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVz
dC1zdHJpbmcuaCIKKworR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDI1MSBcCisv
KiBjbGFzcyBBIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2VkIGJ5IGNsaWVu
dHMgb2YgY2xhc3MgQiAqLykKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVy
bmFsIHsKQEAgLTYxLDExICs2NCw3IEBAIGNsYXNzIEdURVNUX0FQSV8gRmlsZVBhdGggewogICBG
aWxlUGF0aCgpIDogcGF0aG5hbWVfKCIiKSB7IH0KICAgRmlsZVBhdGgoY29uc3QgRmlsZVBhdGgm
IHJocykgOiBwYXRobmFtZV8ocmhzLnBhdGhuYW1lXykgeyB9CiAKLSAgZXhwbGljaXQgRmlsZVBh
dGgoY29uc3QgY2hhciogcGF0aG5hbWUpIDogcGF0aG5hbWVfKHBhdGhuYW1lKSB7Ci0gICAgTm9y
bWFsaXplKCk7Ci0gIH0KLQotICBleHBsaWNpdCBGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGhu
YW1lKSA6IHBhdGhuYW1lXyhwYXRobmFtZSkgeworICBleHBsaWNpdCBGaWxlUGF0aChjb25zdCBz
dGQ6OnN0cmluZyYgcGF0aG5hbWUpIDogcGF0aG5hbWVfKHBhdGhuYW1lKSB7CiAgICAgTm9ybWFs
aXplKCk7CiAgIH0KIApAQCAtNzgsNyArNzcsNyBAQCBjbGFzcyBHVEVTVF9BUElfIEZpbGVQYXRo
IHsKICAgICBwYXRobmFtZV8gPSByaHMucGF0aG5hbWVfOwogICB9CiAKLSAgU3RyaW5nIFRvU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gcGF0aG5hbWVfOyB9CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBz
dHJpbmcoKSBjb25zdCB7IHJldHVybiBwYXRobmFtZV87IH0KICAgY29uc3QgY2hhciogY19zdHIo
KSBjb25zdCB7IHJldHVybiBwYXRobmFtZV8uY19zdHIoKTsgfQogCiAgIC8vIFJldHVybnMgdGhl
IGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksIG9yICIiIGlmIHVuc3VjY2Vzc2Z1bC4KQEAgLTEx
MSw4ICsxMTAsOCBAQCBjbGFzcyBHVEVTVF9BUElfIEZpbGVQYXRoIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmlsZVBhdGgmIGJhc2VfbmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0ZW5z
aW9uKTsKIAotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBwYXRoIGlzIE5VTEwgb3IgIiIuCi0g
IGJvb2wgSXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIGNfc3RyKCkgPT0gTlVMTCB8fCAqY19zdHIo
KSA9PSAnXDAnOyB9CisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHBhdGggaXMgIiIuCisgIGJv
b2wgSXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHBhdGhuYW1lXy5lbXB0eSgpOyB9CiAKICAgLy8g
SWYgaW5wdXQgbmFtZSBoYXMgYSB0cmFpbGluZyBzZXBhcmF0b3IgY2hhcmFjdGVyLCByZW1vdmVz
IGl0IGFuZCByZXR1cm5zCiAgIC8vIHRoZSBuYW1lLCBvdGhlcndpc2UgcmV0dXJuIHRoZSBuYW1l
IHN0cmluZyB1bm1vZGlmaWVkLgpAQCAtMjAxLDEwICsyMDAsMTIgQEAgY2xhc3MgR1RFU1RfQVBJ
XyBGaWxlUGF0aCB7CiAgIC8vIHNlcGFyYXRvcnMuIFJldHVybnMgTlVMTCBpZiBubyBwYXRoIHNl
cGFyYXRvciB3YXMgZm91bmQuCiAgIGNvbnN0IGNoYXIqIEZpbmRMYXN0UGF0aFNlcGFyYXRvcigp
IGNvbnN0OwogCi0gIFN0cmluZyBwYXRobmFtZV87CisgIHN0ZDo6c3RyaW5nIHBhdGhuYW1lXzsK
IH07ICAvLyBjbGFzcyBGaWxlUGF0aAogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8v
IG5hbWVzcGFjZSB0ZXN0aW5nCiAKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAg
Ly8gIDQyNTEKKwogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNU
X0ZJTEVQQVRIX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgKaW5kZXggMzFhNjZlOTlk
M2M0ODIxNTFlNDBmYzM1YTQwMjcwMDY5MDMyYTFkNS4uYjc2MmY2MWZjNTNjM2RiOWNmYjc1Mzk0
MGQ5MWI1ZDU0YWIzNjM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaApAQCAtMjcs
MzQgKzI3LDQzIEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQXV0
aG9yczogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiksIGVlZmFjbUBnbWFpbC5jb20gKFNl
YW4gTWNhZmVlKQotLy8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29n
bGUgVGVzdCkKKy8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3Jr
IChHb29nbGUgVGVzdCkKIC8vCiAvLyBUaGlzIGhlYWRlciBmaWxlIGRlY2xhcmVzIGZ1bmN0aW9u
cyBhbmQgbWFjcm9zIHVzZWQgaW50ZXJuYWxseSBieQogLy8gR29vZ2xlIFRlc3QuICBUaGV5IGFy
ZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4KIAorLy8gR09PR0xFVEVTVF9DTTAw
MDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxf
R1RFU1RfSU5URVJOQUxfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9H
VEVTVF9JTlRFUk5BTF9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5o
PgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKIAogI2lmIEdURVNUX09T
X0xJTlVYCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5j
bHVkZSA8c3lzL3dhaXQuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KKyMgaW5jbHVkZSA8c3RkbGli
Lmg+CisjIGluY2x1ZGUgPHN5cy90eXBlcy5oPgorIyBpbmNsdWRlIDxzeXMvd2FpdC5oPgorIyBp
bmNsdWRlIDx1bmlzdGQuaD4KICNlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKIAorI2lmIEdURVNU
X0hBU19FWENFUFRJT05TCisjIGluY2x1ZGUgPHN0ZGV4Y2VwdD4KKyNlbmRpZgorCiAjaW5jbHVk
ZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxmbG9hdC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2lu
Y2x1ZGUgPGlvbWFuaXA+CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPG1hcD4KICNpbmNs
dWRlIDxzZXQ+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1
ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVy
bmFsL2d0ZXN0LWZpbGVwYXRoLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlw
ZS11dGlsLmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgorI2luY2x1ZGUgImd0
ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3Qtc3RyaW5nLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGls
LmgiCiAKIC8vIER1ZSB0byBDKysgcHJlcHJvY2Vzc29yIHdlaXJkbmVzcywgd2UgbmVlZCBkb3Vi
bGUgaW5kaXJlY3Rpb24gdG8KIC8vIGNvbmNhdGVuYXRlIHR3byB0b2tlbnMgd2hlbiBvbmUgb2Yg
dGhlbSBpcyBfX0xJTkVfXy4gIFdyaXRpbmcKQEAgLTY3LDM5ICs3NiwxNSBAQAogI2RlZmluZSBH
VEVTVF9DT05DQVRfVE9LRU5fKGZvbywgYmFyKSBHVEVTVF9DT05DQVRfVE9LRU5fSU1QTF8oZm9v
LCBiYXIpCiAjZGVmaW5lIEdURVNUX0NPTkNBVF9UT0tFTl9JTVBMXyhmb28sIGJhcikgZm9vICMj
IGJhcgogCi0vLyBHb29nbGUgVGVzdCBkZWZpbmVzIHRoZSB0ZXN0aW5nOjpNZXNzYWdlIGNsYXNz
IHRvIGFsbG93IGNvbnN0cnVjdGlvbiBvZgotLy8gdGVzdCBtZXNzYWdlcyB2aWEgdGhlIDw8IG9w
ZXJhdG9yLiAgVGhlIGlkZWEgaXMgdGhhdCBhbnl0aGluZwotLy8gc3RyZWFtYWJsZSB0byBzdGQ6
Om9zdHJlYW0gY2FuIGJlIHN0cmVhbWVkIHRvIGEgdGVzdGluZzo6TWVzc2FnZS4KLS8vIFRoaXMg
YWxsb3dzIGEgdXNlciB0byB1c2UgaGlzIG93biB0eXBlcyBpbiBHb29nbGUgVGVzdCBhc3NlcnRp
b25zIGJ5Ci0vLyBvdmVybG9hZGluZyB0aGUgPDwgb3BlcmF0b3IuCi0vLwotLy8gdXRpbC9ndGwv
c3RsX2xvZ2dpbmctaW5sLmggb3ZlcmxvYWRzIDw8IGZvciBTVEwgY29udGFpbmVycy4gIFRoZXNl
Ci0vLyBvdmVybG9hZHMgY2Fubm90IGJlIGRlZmluZWQgaW4gdGhlIHN0ZCBuYW1lc3BhY2UsIGFz
IHRoYXQgd2lsbCBiZQotLy8gdW5kZWZpbmVkIGJlaGF2aW9yLiAgVGhlcmVmb3JlLCB0aGV5IGFy
ZSBkZWZpbmVkIGluIHRoZSBnbG9iYWwKLS8vIG5hbWVzcGFjZSBpbnN0ZWFkLgotLy8KLS8vIEMr
KydzIHN5bWJvbCBsb29rdXAgcnVsZSAoaS5lLiBLb2VuaWcgbG9va3VwKSBzYXlzIHRoYXQgdGhl
c2UKLS8vIG92ZXJsb2FkcyBhcmUgdmlzaWJsZSBpbiBlaXRoZXIgdGhlIHN0ZCBuYW1lc3BhY2Ug
b3IgdGhlIGdsb2JhbAotLy8gbmFtZXNwYWNlLCBidXQgbm90IG90aGVyIG5hbWVzcGFjZXMsIGlu
Y2x1ZGluZyB0aGUgdGVzdGluZwotLy8gbmFtZXNwYWNlIHdoaWNoIEdvb2dsZSBUZXN0J3MgTWVz
c2FnZSBjbGFzcyBpcyBpbi4KLS8vCi0vLyBUbyBhbGxvdyBTVEwgY29udGFpbmVycyAoYW5kIG90
aGVyIHR5cGVzIHRoYXQgaGFzIGEgPDwgb3BlcmF0b3IKLS8vIGRlZmluZWQgaW4gdGhlIGdsb2Jh
bCBuYW1lc3BhY2UpIHRvIGJlIHVzZWQgaW4gR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucywKLS8vIHRl
c3Rpbmc6Ok1lc3NhZ2UgbXVzdCBhY2Nlc3MgdGhlIGN1c3RvbSA8PCBvcGVyYXRvciBmcm9tIHRo
ZSBnbG9iYWwKLS8vIG5hbWVzcGFjZS4gIEhlbmNlIHRoaXMgaGVscGVyIGZ1bmN0aW9uLgotLy8K
LS8vIE5vdGU6IEplZmZyZXkgWWFzc2tpbiBzdWdnZXN0ZWQgYW4gYWx0ZXJuYXRpdmUgZml4IGJ5
ICJ1c2luZwotLy8gOjpvcGVyYXRvcjw8OyIgaW4gdGhlIGRlZmluaXRpb24gb2YgTWVzc2FnZSdz
IG9wZXJhdG9yPDwuICBUaGF0IGZpeAotLy8gZG9lc24ndCByZXF1aXJlIGEgaGVscGVyIGZ1bmN0
aW9uLCBidXQgdW5mb3J0dW5hdGVseSBkb2Vzbid0Ci0vLyBjb21waWxlIHdpdGggTVNWQy4KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgR1Rlc3RTdHJlYW1Ub0hlbHBlcihzdGQ6
Om9zdHJlYW0qIG9zLCBjb25zdCBUJiB2YWwpIHsKLSAgKm9zIDw8IHZhbDsKLX0KKy8vIFN0cmlu
Z2lmaWVzIGl0cyBhcmd1bWVudC4KKyNkZWZpbmUgR1RFU1RfU1RSSU5HSUZZXyhuYW1lKSAjbmFt
ZQorCitjbGFzcyBQcm90b2NvbE1lc3NhZ2U7CituYW1lc3BhY2UgcHJvdG8yIHsgY2xhc3MgTWVz
c2FnZTsgfQogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKLS8vIEZvcndhcmQgZGVjbGFyYXRpb24g
b2YgY2xhc3Nlcy4KKy8vIEZvcndhcmQgZGVjbGFyYXRpb25zLgogCiBjbGFzcyBBc3NlcnRpb25S
ZXN1bHQ7ICAgICAgICAgICAgICAgICAvLyBSZXN1bHQgb2YgYW4gYXNzZXJ0aW9uLgogY2xhc3Mg
TWVzc2FnZTsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVwcmVzZW50cyBhIGZhaWx1cmUg
bWVzc2FnZS4KQEAgLTEwOCwyNSArOTMsMTkgQEAgY2xhc3MgVGVzdEluZm87ICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gSW5mb3JtYXRpb24gYWJvdXQgYSB0ZXN0LgogY2xhc3MgVGVzdFBhcnRS
ZXN1bHQ7ICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0IG9mIGEgdGVzdCBwYXJ0LgogY2xhc3Mg
VW5pdFRlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSBjb2xsZWN0aW9uIG9mIHRlc3Qg
Y2FzZXMuCiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorOjpzdGQ6OnN0cmluZyBQcmludFRvU3Ry
aW5nKGNvbnN0IFQmIHZhbHVlKTsKKwogbmFtZXNwYWNlIGludGVybmFsIHsKIAogc3RydWN0IFRy
YWNlSW5mbzsgICAgICAgICAgICAgICAgICAgICAgLy8gSW5mb3JtYXRpb24gYWJvdXQgYSB0cmFj
ZSBwb2ludC4KLWNsYXNzIFNjb3BlZFRyYWNlOyAgICAgICAgICAgICAgICAgICAgIC8vIEltcGxl
bWVudHMgc2NvcGVkIHRyYWNlLgogY2xhc3MgVGVzdEluZm9JbXBsOyAgICAgICAgICAgICAgICAg
ICAgLy8gT3BhcXVlIGltcGxlbWVudGF0aW9uIG9mIFRlc3RJbmZvCiBjbGFzcyBVbml0VGVzdElt
cGw7ICAgICAgICAgICAgICAgICAgICAvLyBPcGFxdWUgaW1wbGVtZW50YXRpb24gb2YgVW5pdFRl
c3QKIAotLy8gSG93IG1hbnkgdGltZXMgSW5pdEdvb2dsZVRlc3QoKSBoYXMgYmVlbiBjYWxsZWQu
Ci1leHRlcm4gaW50IGdfaW5pdF9ndGVzdF9jb3VudDsKLQogLy8gVGhlIHRleHQgdXNlZCBpbiBm
YWlsdXJlIG1lc3NhZ2VzIHRvIGluZGljYXRlIHRoZSBzdGFydCBvZiB0aGUKIC8vIHN0YWNrIHRy
YWNlLgogR1RFU1RfQVBJXyBleHRlcm4gY29uc3QgY2hhciBrU3RhY2tUcmFjZU1hcmtlcltdOwog
Ci0vLyBBIHNlY3JldCB0eXBlIHRoYXQgR29vZ2xlIFRlc3QgdXNlcnMgZG9uJ3Qga25vdyBhYm91
dC4gIEl0IGhhcyBubwotLy8gZGVmaW5pdGlvbiBvbiBwdXJwb3NlLiAgVGhlcmVmb3JlIGl0J3Mg
aW1wb3NzaWJsZSB0byBjcmVhdGUgYQotLy8gU2VjcmV0IG9iamVjdCwgd2hpY2ggaXMgd2hhdCB3
ZSB3YW50LgotY2xhc3MgU2VjcmV0OwotCiAvLyBUd28gb3ZlcmxvYWRlZCBoZWxwZXJzIGZvciBj
aGVja2luZyBhdCBjb21waWxlIHRpbWUgd2hldGhlciBhbgogLy8gZXhwcmVzc2lvbiBpcyBhIG51
bGwgcG9pbnRlciBsaXRlcmFsIChpLmUuIE5VTEwgb3IgYW55IDAtdmFsdWVkCiAvLyBjb21waWxl
LXRpbWUgaW50ZWdyYWwgY29uc3RhbnQpLiAgVGhlaXIgcmV0dXJuIHZhbHVlcyBoYXZlCkBAIC0x
NTAsMTI3ICsxMjksNjUgQEAgY2hhciAoJklzTnVsbExpdGVyYWxIZWxwZXIoLi4uKSlbMl07ICAv
LyBOT0xJTlQKICNpZmRlZiBHVEVTVF9FTExJUFNJU19ORUVEU19QT0RfCiAvLyBXZSBsb3NlIHN1
cHBvcnQgZm9yIE5VTEwgZGV0ZWN0aW9uIHdoZXJlIHRoZSBjb21waWxlciBkb2Vzbid0IGxpa2UK
IC8vIHBhc3Npbmcgbm9uLVBPRCBjbGFzc2VzIHRocm91Z2ggZWxsaXBzaXMgKC4uLikuCi0jZGVm
aW5lIEdURVNUX0lTX05VTExfTElURVJBTF8oeCkgZmFsc2UKKyMgZGVmaW5lIEdURVNUX0lTX05V
TExfTElURVJBTF8oeCkgZmFsc2UKICNlbHNlCi0jZGVmaW5lIEdURVNUX0lTX05VTExfTElURVJB
TF8oeCkgXAorIyBkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBcCiAgICAgKHNpemVv
Zig6OnRlc3Rpbmc6OmludGVybmFsOjpJc051bGxMaXRlcmFsSGVscGVyKHgpKSA9PSAxKQogI2Vu
ZGlmICAvLyBHVEVTVF9FTExJUFNJU19ORUVEU19QT0RfCiAKIC8vIEFwcGVuZHMgdGhlIHVzZXIt
c3VwcGxpZWQgbWVzc2FnZSB0byB0aGUgR29vZ2xlLVRlc3QtZ2VuZXJhdGVkIG1lc3NhZ2UuCi1H
VEVTVF9BUElfIFN0cmluZyBBcHBlbmRVc2VyTWVzc2FnZShjb25zdCBTdHJpbmcmIGd0ZXN0X21z
ZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1lc3NhZ2UmIHVz
ZXJfbXNnKTsKLQotLy8gQSBoZWxwZXIgY2xhc3MgZm9yIGNyZWF0aW5nIHNjb3BlZCB0cmFjZXMg
aW4gdXNlciBwcm9ncmFtcy4KLWNsYXNzIEdURVNUX0FQSV8gU2NvcGVkVHJhY2UgewotIHB1Ymxp
YzoKLSAgLy8gVGhlIGMndG9yIHB1c2hlcyB0aGUgZ2l2ZW4gc291cmNlIGZpbGUgbG9jYXRpb24g
YW5kIG1lc3NhZ2Ugb250bwotICAvLyBhIHRyYWNlIHN0YWNrIG1haW50YWluZWQgYnkgR29vZ2xl
IFRlc3QuCi0gIFNjb3BlZFRyYWNlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBN
ZXNzYWdlJiBtZXNzYWdlKTsKLQotICAvLyBUaGUgZCd0b3IgcG9wcyB0aGUgaW5mbyBwdXNoZWQg
YnkgdGhlIGMndG9yLgotICAvLwotICAvLyBOb3RlIHRoYXQgdGhlIGQndG9yIGlzIG5vdCB2aXJ0
dWFsIGluIG9yZGVyIHRvIGJlIGVmZmljaWVudC4KLSAgLy8gRG9uJ3QgaW5oZXJpdCBmcm9tIFNj
b3BlZFRyYWNlIQotICB+U2NvcGVkVHJhY2UoKTsKLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTl8oU2NvcGVkVHJhY2UpOwotfSBHVEVTVF9BVFRSSUJVVEVfVU5V
U0VEXzsgIC8vIEEgU2NvcGVkVHJhY2Ugb2JqZWN0IGRvZXMgaXRzIGpvYiBpbiBpdHMKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBjJ3RvciBhbmQgZCd0b3IuICBUaGVyZWZvcmUgaXQg
ZG9lc24ndAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gYmUgdXNlZCBv
dGhlcndpc2UuCi0KLS8vIENvbnZlcnRzIGEgc3RyZWFtYWJsZSB2YWx1ZSB0byBhIFN0cmluZy4g
IEEgTlVMTCBwb2ludGVyIGlzCi0vLyBjb252ZXJ0ZWQgdG8gIihudWxsKSIuICBXaGVuIHRoZSBp
bnB1dCB2YWx1ZSBpcyBhIDo6c3RyaW5nLAotLy8gOjpzdGQ6OnN0cmluZywgOjp3c3RyaW5nLCBv
ciA6OnN0ZDo6d3N0cmluZyBvYmplY3QsIGVhY2ggTlVMCi0vLyBjaGFyYWN0ZXIgaW4gaXQgaXMg
cmVwbGFjZWQgd2l0aCAiXFwwIi4KLS8vIERlY2xhcmVkIGhlcmUgYnV0IGRlZmluZWQgaW4gZ3Rl
c3QuaCwgc28gdGhhdCBpdCBoYXMgYWNjZXNzCi0vLyB0byB0aGUgZGVmaW5pdGlvbiBvZiB0aGUg
TWVzc2FnZSBjbGFzcywgcmVxdWlyZWQgYnkgdGhlIEFSTQotLy8gY29tcGlsZXIuCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLVN0cmluZyBTdHJlYW1hYmxlVG9TdHJpbmcoY29uc3QgVCYgc3RyZWFt
YWJsZSk7Ci0KLS8vIEZvcm1hdHMgYSB2YWx1ZSB0byBiZSB1c2VkIGluIGEgZmFpbHVyZSBtZXNz
YWdlLgotCi0jaWZkZWYgR1RFU1RfTkVFRFNfSVNfUE9JTlRFUl8KLQotLy8gVGhlc2UgYXJlIG5l
ZWRlZCBhcyB0aGUgTm9raWEgU3ltYmlhbiBhbmQgSUJNIFhMIEMvQysrIGNvbXBpbGVycwotLy8g
Y2Fubm90IGRlY2lkZSBiZXR3ZWVuIGNvbnN0IFQmIGFuZCBjb25zdCBUKiBpbiBhIGZ1bmN0aW9u
IHRlbXBsYXRlLgotLy8gVGhlc2UgY29tcGlsZXJzIF9jYW5fIGRlY2lkZSBiZXR3ZWVuIGNsYXNz
IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucwotLy8gZm9yIFQgYW5kIFQqLCBzbyBhIHRyMTo6dHlw
ZV90cmFpdHMtbGlrZSBpc19wb2ludGVyIHdvcmtzLCBhbmQgd2UKLS8vIGNhbiBvdmVybG9hZCBv
biB0aGF0LgorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBBcHBlbmRVc2VyTWVzc2FnZSgKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyYgZ3Rlc3RfbXNnLCBjb25zdCBNZXNzYWdlJiB1c2VyX21zZyk7CiAK
LS8vIFRoaXMgb3ZlcmxvYWQgbWFrZXMgc3VyZSB0aGF0IGFsbCBwb2ludGVycyAoaW5jbHVkaW5n
Ci0vLyB0aG9zZSB0byBjaGFyIG9yIHdjaGFyX3QpIGFyZSBwcmludGVkIGFzIHJhdyBwb2ludGVy
cy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFN0cmluZyBGb3JtYXRWYWx1ZUZvckZh
aWx1cmVNZXNzYWdlKGludGVybmFsOjp0cnVlX3R5cGUgLypkdW1teSovLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQqIHBvaW50ZXIpIHsKLSAgcmV0dXJuIFN0
cmVhbWFibGVUb1N0cmluZyhzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4ocG9pbnRlcikpOwotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBTdHJpbmcgRm9ybWF0VmFsdWVGb3JGYWls
dXJlTWVzc2FnZShpbnRlcm5hbDo6ZmFsc2VfdHlwZSAvKmR1bW15Ki8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCYgdmFsdWUpIHsKLSAgcmV0dXJu
IFN0cmVhbWFibGVUb1N0cmluZyh2YWx1ZSk7Ci19CisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMK
IAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVN
ZXNzYWdlKGNvbnN0IFQmIHZhbHVlKSB7Ci0gIHJldHVybiBGb3JtYXRWYWx1ZUZvckZhaWx1cmVN
ZXNzYWdlKAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OmlzX3BvaW50ZXI8VD46OnR5cGUoKSwg
dmFsdWUpOwotfQorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDI3NSBcCisvKiBh
biBleHBvcnRlZCBjbGFzcyB3YXMgZGVyaXZlZCBmcm9tIGEgY2xhc3MgdGhhdCB3YXMgbm90IGV4
cG9ydGVkICovKQogCi0jZWxzZQorLy8gVGhpcyBleGNlcHRpb24gaXMgdGhyb3duIGJ5IChhbmQg
b25seSBieSkgYSBmYWlsZWQgR29vZ2xlIFRlc3QKKy8vIGFzc2VydGlvbiB3aGVuIEdURVNUX0ZM
QUcodGhyb3dfb25fZmFpbHVyZSkgaXMgdHJ1ZSAoaWYgZXhjZXB0aW9ucworLy8gYXJlIGVuYWJs
ZWQpLiAgV2UgZGVyaXZlIGl0IGZyb20gc3RkOjpydW50aW1lX2Vycm9yLCB3aGljaCBpcyBmb3IK
Ky8vIGVycm9ycyBwcmVzdW1hYmx5IGRldGVjdGFibGUgb25seSBhdCBydW4gdGltZS4gIFNpbmNl
CisvLyBzdGQ6OnJ1bnRpbWVfZXJyb3IgaW5oZXJpdHMgZnJvbSBzdGQ6OmV4Y2VwdGlvbiwgbWFu
eSB0ZXN0aW5nCisvLyBmcmFtZXdvcmtzIGtub3cgaG93IHRvIGV4dHJhY3QgYW5kIHByaW50IHRo
ZSBtZXNzYWdlIGluc2lkZSBpdC4KK2NsYXNzIEdURVNUX0FQSV8gR29vZ2xlVGVzdEZhaWx1cmVF
eGNlcHRpb24gOiBwdWJsaWMgOjpzdGQ6OnJ1bnRpbWVfZXJyb3IgeworIHB1YmxpYzoKKyAgZXhw
bGljaXQgR29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24oY29uc3QgVGVzdFBhcnRSZXN1bHQmIGZh
aWx1cmUpOworfTsKIAotLy8gVGhlc2UgYXJlIG5lZWRlZCBhcyB0aGUgYWJvdmUgc29sdXRpb24g
dXNpbmcgaXNfcG9pbnRlciBoYXMgdGhlCi0vLyBsaW1pdGF0aW9uIHRoYXQgVCBjYW5ub3QgYmUg
YSB0eXBlIHdpdGhvdXQgZXh0ZXJuYWwgbGlua2FnZSwgd2hlbgotLy8gY29tcGlsZWQgdXNpbmcg
TVNWQy4KK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQyNzUKIAotdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdl
KGNvbnN0IFQmIHZhbHVlKSB7Ci0gIHJldHVybiBTdHJlYW1hYmxlVG9TdHJpbmcodmFsdWUpOwot
fQorI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUwogCi0vLyBUaGlzIG92ZXJsb2FkIG1h
a2VzIHN1cmUgdGhhdCBhbGwgcG9pbnRlcnMgKGluY2x1ZGluZwotLy8gdGhvc2UgdG8gY2hhciBv
ciB3Y2hhcl90KSBhcmUgcHJpbnRlZCBhcyByYXcgcG9pbnRlcnMuCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLWlubGluZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoVCogcG9pbnRlcikg
ewotICByZXR1cm4gU3RyZWFtYWJsZVRvU3RyaW5nKHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihw
b2ludGVyKSk7Ci19CituYW1lc3BhY2UgZWRpdF9kaXN0YW5jZSB7CisvLyBSZXR1cm5zIHRoZSBv
cHRpbWFsIGVkaXRzIHRvIGdvIGZyb20gJ2xlZnQnIHRvICdyaWdodCcuCisvLyBBbGwgZWRpdHMg
Y29zdCB0aGUgc2FtZSwgd2l0aCByZXBsYWNlIGhhdmluZyBsb3dlciBwcmlvcml0eSB0aGFuCisv
LyBhZGQvcmVtb3ZlLgorLy8gU2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBXYWduZXItRmlz
Y2hlciBhbGdvcml0aG0uCisvLyBTZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XYWdu
ZXItRmlzY2hlcl9hbGdvcml0aG0KK2VudW0gRWRpdFR5cGUgeyBrTWF0Y2gsIGtBZGQsIGtSZW1v
dmUsIGtSZXBsYWNlIH07CitHVEVTVF9BUElfIHN0ZDo6dmVjdG9yPEVkaXRUeXBlPiBDYWxjdWxh
dGVPcHRpbWFsRWRpdHMoCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2l6ZV90PiYgbGVmdCwgY29u
c3Qgc3RkOjp2ZWN0b3I8c2l6ZV90PiYgcmlnaHQpOwogCi0jZW5kaWYgIC8vIEdURVNUX05FRURT
X0lTX1BPSU5URVJfCi0KLS8vIFRoZXNlIG92ZXJsb2FkZWQgdmVyc2lvbnMgaGFuZGxlIG5hcnJv
dyBhbmQgd2lkZSBjaGFyYWN0ZXJzLgotR1RFU1RfQVBJXyBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVy
ZU1lc3NhZ2UoY2hhciBjaCk7Ci1HVEVTVF9BUElfIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVz
c2FnZSh3Y2hhcl90IHdjaGFyKTsKLQotLy8gV2hlbiB0aGlzIG9wZXJhbmQgaXMgYSBjb25zdCBj
aGFyKiBvciBjaGFyKiwgYW5kIHRoZSBvdGhlciBvcGVyYW5kCi0vLyBpcyBhIDo6c3RkOjpzdHJp
bmcgb3IgOjpzdHJpbmcsIHdlIHByaW50IHRoaXMgb3BlcmFuZCBhcyBhIEMgc3RyaW5nCi0vLyBy
YXRoZXIgdGhhbiBhIHBvaW50ZXIuICBXZSBkbyB0aGUgc2FtZSBmb3Igd2lkZSBzdHJpbmdzLgot
Ci0vLyBUaGlzIGludGVybmFsIG1hY3JvIGlzIHVzZWQgdG8gYXZvaWQgZHVwbGljYXRlZCBjb2Rl
LgotI2RlZmluZSBHVEVTVF9GT1JNQVRfSU1QTF8ob3BlcmFuZDJfdHlwZSwgb3BlcmFuZDFfcHJp
bnRlcilcCi1pbmxpbmUgU3RyaW5nIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShc
Ci0gICAgb3BlcmFuZDJfdHlwZTo6dmFsdWVfdHlwZSogc3RyLCBjb25zdCBvcGVyYW5kMl90eXBl
JiAvKm9wZXJhbmQyKi8pIHtcCi0gIHJldHVybiBvcGVyYW5kMV9wcmludGVyKHN0cik7XAotfVwK
LWlubGluZSBTdHJpbmcgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKFwKLSAgICBj
b25zdCBvcGVyYW5kMl90eXBlOjp2YWx1ZV90eXBlKiBzdHIsIGNvbnN0IG9wZXJhbmQyX3R5cGUm
IC8qb3BlcmFuZDIqLykge1wKLSAgcmV0dXJuIG9wZXJhbmQxX3ByaW50ZXIoc3RyKTtcCi19Cisv
LyBTYW1lIGFzIGFib3ZlLCBidXQgdGhlIGlucHV0IGlzIHJlcHJlc2VudGVkIGFzIHN0cmluZ3Mu
CitHVEVTVF9BUElfIHN0ZDo6dmVjdG9yPEVkaXRUeXBlPiBDYWxjdWxhdGVPcHRpbWFsRWRpdHMo
CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBsZWZ0LAorICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgcmlnaHQpOwogCi1HVEVTVF9GT1JNQVRfSU1QTF8oOjpz
dGQ6OnN0cmluZywgU3RyaW5nOjpTaG93Q1N0cmluZ1F1b3RlZCkKLSNpZiBHVEVTVF9IQVNfU1RE
X1dTVFJJTkcKLUdURVNUX0ZPUk1BVF9JTVBMXyg6OnN0ZDo6d3N0cmluZywgU3RyaW5nOjpTaG93
V2lkZUNTdHJpbmdRdW90ZWQpCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORworLy8g
Q3JlYXRlIGEgZGlmZiBvZiB0aGUgaW5wdXQgc3RyaW5ncyBpbiBVbmlmaWVkIGRpZmYgZm9ybWF0
LgorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBDcmVhdGVVbmlmaWVkRGlmZihjb25zdCBzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4mIGxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgcmlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb250ZXh0ID0gMik7CiAK
LSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotR1RFU1RfRk9STUFUX0lNUExfKDo6c3RyaW5n
LCBTdHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFM
X1NUUklORwotI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotR1RFU1RfRk9STUFUX0lNUExf
KDo6d3N0cmluZywgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQpCi0jZW5kaWYgIC8vIEdU
RVNUX0hBU19HTE9CQUxfV1NUUklORworfSAgLy8gbmFtZXNwYWNlIGVkaXRfZGlzdGFuY2UKIAot
I3VuZGVmIEdURVNUX0ZPUk1BVF9JTVBMXworLy8gQ2FsY3VsYXRlIHRoZSBkaWZmIGJldHdlZW4g
J2xlZnQnIGFuZCAncmlnaHQnIGFuZCByZXR1cm4gaXQgaW4gdW5pZmllZCBkaWZmCisvLyBmb3Jt
YXQuCisvLyBJZiBub3QgbnVsbCwgc3RvcmVzIGluICd0b3RhbF9saW5lX2NvdW50JyB0aGUgdG90
YWwgbnVtYmVyIG9mIGxpbmVzIGZvdW5kCisvLyBpbiBsZWZ0ICsgcmlnaHQuCitHVEVTVF9BUElf
IHN0ZDo6c3RyaW5nIERpZmZTdHJpbmdzKGNvbnN0IHN0ZDo6c3RyaW5nJiBsZWZ0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcmlnaHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogdG90YWxfbGluZV9jb3Vu
dCk7CiAKIC8vIENvbnN0cnVjdHMgYW5kIHJldHVybnMgdGhlIG1lc3NhZ2UgZm9yIGFuIGVxdWFs
aXR5IGFzc2VydGlvbgogLy8gKGUuZy4gQVNTRVJUX0VRLCBFWFBFQ1RfU1RSRVEsIGV0YykgZmFp
bHVyZS4KQEAgLTI4OSwxMiArMjA2LDEyIEBAIEdURVNUX0ZPUk1BVF9JTVBMXyg6OndzdHJpbmcs
IFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVvdGVkKQogLy8gYmUgaW5zZXJ0ZWQgaW50byB0aGUg
bWVzc2FnZS4KIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IEVxRmFpbHVyZShjb25zdCBjaGFy
KiBleHBlY3RlZF9leHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRfdmFsdWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBhY3R1YWxfdmFsdWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGV4
cGVjdGVkX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBhY3R1YWxfdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBpZ25vcmluZ19jYXNlKTsKIAogLy8gQ29uc3RydWN0cyBhIGZhaWx1cmUg
bWVzc2FnZSBmb3IgQm9vbGVhbiBhc3NlcnRpb25zIHN1Y2ggYXMgRVhQRUNUX1RSVUUuCi1HVEVT
VF9BUElfIFN0cmluZyBHZXRCb29sQXNzZXJ0aW9uRmFpbHVyZU1lc3NhZ2UoCitHVEVTVF9BUElf
IHN0ZDo6c3RyaW5nIEdldEJvb2xBc3NlcnRpb25GYWlsdXJlTWVzc2FnZSgKICAgICBjb25zdCBB
c3NlcnRpb25SZXN1bHQmIGFzc2VydGlvbl9yZXN1bHQsCiAgICAgY29uc3QgY2hhciogZXhwcmVz
c2lvbl90ZXh0LAogICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9wcmVkaWNhdGVfdmFsdWUsCkBAIC0z
NjksNyArMjg2LDcgQEAgY2xhc3MgRmxvYXRpbmdQb2ludCB7CiAgIC8vIGJpdHMuICBUaGVyZWZv
cmUsIDQgc2hvdWxkIGJlIGVub3VnaCBmb3Igb3JkaW5hcnkgdXNlLgogICAvLwogICAvLyBTZWUg
dGhlIGZvbGxvd2luZyBhcnRpY2xlIGZvciBtb3JlIGRldGFpbHMgb24gVUxQOgotICAvLyBodHRw
Oi8vd3d3LmN5Z251cy1zb2Z0d2FyZS5jb20vcGFwZXJzL2NvbXBhcmluZ2Zsb2F0cy9jb21wYXJp
bmdmbG9hdHMuaHRtLgorICAvLyBodHRwOi8vcmFuZG9tYXNjaWkud29yZHByZXNzLmNvbS8yMDEy
LzAyLzI1L2NvbXBhcmluZy1mbG9hdGluZy1wb2ludC1udW1iZXJzLTIwMTItZWRpdGlvbi8KICAg
c3RhdGljIGNvbnN0IHNpemVfdCBrTWF4VWxwcyA9IDQ7CiAKICAgLy8gQ29uc3RydWN0cyBhIEZs
b2F0aW5nUG9pbnQgZnJvbSBhIHJhdyBmbG9hdGluZy1wb2ludCBudW1iZXIuCkBAIC0zOTYsNiAr
MzEzLDkgQEAgY2xhc3MgRmxvYXRpbmdQb2ludCB7CiAgICAgcmV0dXJuIFJlaW50ZXJwcmV0Qml0
cyhrRXhwb25lbnRCaXRNYXNrKTsKICAgfQogCisgIC8vIFJldHVybnMgdGhlIG1heGltdW0gcmVw
cmVzZW50YWJsZSBmaW5pdGUgZmxvYXRpbmctcG9pbnQgbnVtYmVyLgorICBzdGF0aWMgUmF3VHlw
ZSBNYXgoKTsKKwogICAvLyBOb24tc3RhdGljIG1ldGhvZHMKIAogICAvLyBSZXR1cm5zIHRoZSBi
aXRzIHRoYXQgcmVwcmVzZW50cyB0aGlzIG51bWJlci4KQEAgLTQ3Niw2ICszOTYsMTMgQEAgY2xh
c3MgRmxvYXRpbmdQb2ludCB7CiAgIEZsb2F0aW5nUG9pbnRVbmlvbiB1XzsKIH07CiAKKy8vIFdl
IGNhbm5vdCB1c2Ugc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCkgYXMgaXQgY2xhc2hlcyB3
aXRoIHRoZSBtYXgoKQorLy8gbWFjcm8gZGVmaW5lZCBieSA8d2luZG93cy5oPi4KK3RlbXBsYXRl
IDw+CitpbmxpbmUgZmxvYXQgRmxvYXRpbmdQb2ludDxmbG9hdD46Ok1heCgpIHsgcmV0dXJuIEZM
VF9NQVg7IH0KK3RlbXBsYXRlIDw+CitpbmxpbmUgZG91YmxlIEZsb2F0aW5nUG9pbnQ8ZG91Ymxl
Pjo6TWF4KCkgeyByZXR1cm4gREJMX01BWDsgfQorCiAvLyBUeXBlZGVmcyB0aGUgaW5zdGFuY2Vz
IG9mIHRoZSBGbG9hdGluZ1BvaW50IHRlbXBsYXRlIGNsYXNzIHRoYXQgd2UKIC8vIGNhcmUgdG8g
dXNlLgogdHlwZWRlZiBGbG9hdGluZ1BvaW50PGZsb2F0PiBGbG9hdDsKQEAgLTU1OCwyNCArNDg1
LDE4IEBAIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IElzSFJFU1VMVEZhaWx1cmUoY29uc3Qg
Y2hhciogZXhwciwKIAogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKLS8vIEZvcm1hdHMg
YSBzb3VyY2UgZmlsZSBwYXRoIGFuZCBhIGxpbmUgbnVtYmVyIGFzIHRoZXkgd291bGQgYXBwZWFy
Ci0vLyBpbiBhIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2UuCi1pbmxpbmUgU3RyaW5nIEZvcm1hdEZp
bGVMb2NhdGlvbihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSkgewotICBjb25zdCBjaGFyKiBj
b25zdCBmaWxlX25hbWUgPSBmaWxlID09IE5VTEwgPyAidW5rbm93biBmaWxlIiA6IGZpbGU7Ci0g
IGlmIChsaW5lIDwgMCkgewotICAgIHJldHVybiBTdHJpbmc6OkZvcm1hdCgiJXM6IiwgZmlsZV9u
YW1lKTsKLSAgfQotI2lmZGVmIF9NU0NfVkVSCi0gIHJldHVybiBTdHJpbmc6OkZvcm1hdCgiJXMo
JWQpOiIsIGZpbGVfbmFtZSwgbGluZSk7Ci0jZWxzZQotICByZXR1cm4gU3RyaW5nOjpGb3JtYXQo
IiVzOiVkOiIsIGZpbGVfbmFtZSwgbGluZSk7Ci0jZW5kaWYgIC8vIF9NU0NfVkVSCi19Ci0KIC8v
IFR5cGVzIG9mIFNldFVwVGVzdENhc2UoKSBhbmQgVGVhckRvd25UZXN0Q2FzZSgpIGZ1bmN0aW9u
cy4KIHR5cGVkZWYgdm9pZCAoKlNldFVwVGVzdENhc2VGdW5jKSgpOwogdHlwZWRlZiB2b2lkICgq
VGVhckRvd25UZXN0Q2FzZUZ1bmMpKCk7CiAKK3N0cnVjdCBDb2RlTG9jYXRpb24geworICBDb2Rl
TG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIGFfZmlsZSwgaW50IGFfbGluZSkKKyAgICAgIDog
ZmlsZShhX2ZpbGUpLCBsaW5lKGFfbGluZSkge30KKworICBzdGQ6OnN0cmluZyBmaWxlOworICBp
bnQgbGluZTsKK307CisKIC8vIENyZWF0ZXMgYSBuZXcgVGVzdEluZm8gb2JqZWN0IGFuZCByZWdp
c3RlcnMgaXQgd2l0aCBHb29nbGUgVGVzdDsKIC8vIHJldHVybnMgdGhlIGNyZWF0ZWQgb2JqZWN0
LgogLy8KQEAgLTU4MywxMCArNTA0LDExIEBAIHR5cGVkZWYgdm9pZCAoKlRlYXJEb3duVGVzdENh
c2VGdW5jKSgpOwogLy8KIC8vICAgdGVzdF9jYXNlX25hbWU6ICAgbmFtZSBvZiB0aGUgdGVzdCBj
YXNlCiAvLyAgIG5hbWU6ICAgICAgICAgICAgIG5hbWUgb2YgdGhlIHRlc3QKLS8vICAgdGVzdF9j
YXNlX2NvbW1lbnQ6IGEgY29tbWVudCBvbiB0aGUgdGVzdCBjYXNlIHRoYXQgd2lsbCBiZSBpbmNs
dWRlZCBpbgotLy8gICAgICAgICAgICAgICAgICAgICAgdGhlIHRlc3Qgb3V0cHV0Ci0vLyAgIGNv
bW1lbnQ6ICAgICAgICAgIGEgY29tbWVudCBvbiB0aGUgdGVzdCB0aGF0IHdpbGwgYmUgaW5jbHVk
ZWQgaW4gdGhlCi0vLyAgICAgICAgICAgICAgICAgICAgIHRlc3Qgb3V0cHV0CisvLyAgIHR5cGVf
cGFyYW0gICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0ZXN0J3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5V
TEwgaWYKKy8vICAgICAgICAgICAgICAgICAgICAgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhIHR5
cGUtcGFyYW1ldGVyaXplZCB0ZXN0LgorLy8gICB2YWx1ZV9wYXJhbSAgICAgICB0ZXh0IHJlcHJl
c2VudGF0aW9uIG9mIHRoZSB0ZXN0J3MgdmFsdWUgcGFyYW1ldGVyLAorLy8gICAgICAgICAgICAg
ICAgICAgICBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3Qu
CisvLyAgIGNvZGVfbG9jYXRpb246ICAgIGNvZGUgbG9jYXRpb24gd2hlcmUgdGhlIHRlc3QgaXMg
ZGVmaW5lZAogLy8gICBmaXh0dXJlX2NsYXNzX2lkOiBJRCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNs
YXNzCiAvLyAgIHNldF91cF90YzogICAgICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQg
c2V0cyB1cCB0aGUgdGVzdCBjYXNlCiAvLyAgIHRlYXJfZG93bl90YzogICAgIHBvaW50ZXIgdG8g
dGhlIGZ1bmN0aW9uIHRoYXQgdGVhcnMgZG93biB0aGUgdGVzdCBjYXNlCkBAIC01OTQsOCArNTE2
LDExIEBAIHR5cGVkZWYgdm9pZCAoKlRlYXJEb3duVGVzdENhc2VGdW5jKSgpOwogLy8gICAgICAg
ICAgICAgICAgICAgICBUaGUgbmV3bHkgY3JlYXRlZCBUZXN0SW5mbyBpbnN0YW5jZSB3aWxsIGFz
c3VtZQogLy8gICAgICAgICAgICAgICAgICAgICBvd25lcnNoaXAgb2YgdGhlIGZhY3Rvcnkgb2Jq
ZWN0LgogR1RFU1RfQVBJXyBUZXN0SW5mbyogTWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8oCi0gICAg
Y29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsIGNvbnN0IGNoYXIqIG5hbWUsCi0gICAgY29uc3Qg
Y2hhciogdGVzdF9jYXNlX2NvbW1lbnQsIGNvbnN0IGNoYXIqIGNvbW1lbnQsCisgICAgY29uc3Qg
Y2hhciogdGVzdF9jYXNlX25hbWUsCisgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICBjb25zdCBj
aGFyKiB0eXBlX3BhcmFtLAorICAgIGNvbnN0IGNoYXIqIHZhbHVlX3BhcmFtLAorICAgIENvZGVM
b2NhdGlvbiBjb2RlX2xvY2F0aW9uLAogICAgIFR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkLAogICAg
IFNldFVwVGVzdENhc2VGdW5jIHNldF91cF90YywKICAgICBUZWFyRG93blRlc3RDYXNlRnVuYyB0
ZWFyX2Rvd25fdGMsCkBAIC02MDQsMTAgKzUyOSwxMyBAQCBHVEVTVF9BUElfIFRlc3RJbmZvKiBN
YWtlQW5kUmVnaXN0ZXJUZXN0SW5mbygKIC8vIElmICpwc3RyIHN0YXJ0cyB3aXRoIHRoZSBnaXZl
biBwcmVmaXgsIG1vZGlmaWVzICpwc3RyIHRvIGJlIHJpZ2h0CiAvLyBwYXN0IHRoZSBwcmVmaXgg
YW5kIHJldHVybnMgdHJ1ZTsgb3RoZXJ3aXNlIGxlYXZlcyAqcHN0ciB1bmNoYW5nZWQKIC8vIGFu
ZCByZXR1cm5zIGZhbHNlLiAgTm9uZSBvZiBwc3RyLCAqcHN0ciwgYW5kIHByZWZpeCBjYW4gYmUg
TlVMTC4KLWJvb2wgU2tpcFByZWZpeChjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IGNoYXIqKiBw
c3RyKTsKK0dURVNUX0FQSV8gYm9vbCBTa2lwUHJlZml4KGNvbnN0IGNoYXIqIHByZWZpeCwgY29u
c3QgY2hhcioqIHBzdHIpOwogCiAjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFT
X1RZUEVEX1RFU1RfUAogCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MjUxIFwK
Ky8qIGNsYXNzIEEgbmVlZHMgdG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xp
ZW50cyBvZiBjbGFzcyBCICovKQorCiAvLyBTdGF0ZSBvZiB0aGUgZGVmaW5pdGlvbiBvZiBhIHR5
cGUtcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UuCiBjbGFzcyBHVEVTVF9BUElfIFR5cGVkVGVzdENh
c2VQU3RhdGUgewogIHB1YmxpYzoKQEAgLTYyNSwxMCArNTUzLDIxIEBAIGNsYXNzIEdURVNUX0FQ
SV8gVHlwZWRUZXN0Q2FzZVBTdGF0ZSB7CiAgICAgICBmZmx1c2goc3RkZXJyKTsKICAgICAgIHBv
c2l4OjpBYm9ydCgpOwogICAgIH0KLSAgICBkZWZpbmVkX3Rlc3RfbmFtZXNfLmluc2VydCh0ZXN0
X25hbWUpOworICAgIHJlZ2lzdGVyZWRfdGVzdHNfLmluc2VydCgKKyAgICAgICAgOjpzdGQ6Om1h
a2VfcGFpcih0ZXN0X25hbWUsIENvZGVMb2NhdGlvbihmaWxlLCBsaW5lKSkpOwogICAgIHJldHVy
biB0cnVlOwogICB9CiAKKyAgYm9vbCBUZXN0RXhpc3RzKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0
X25hbWUpIGNvbnN0IHsKKyAgICByZXR1cm4gcmVnaXN0ZXJlZF90ZXN0c18uY291bnQodGVzdF9u
YW1lKSA+IDA7CisgIH0KKworICBjb25zdCBDb2RlTG9jYXRpb24mIEdldENvZGVMb2NhdGlvbihj
b25zdCBzdGQ6OnN0cmluZyYgdGVzdF9uYW1lKSBjb25zdCB7CisgICAgUmVnaXN0ZXJlZFRlc3Rz
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHJlZ2lzdGVyZWRfdGVzdHNfLmZpbmQodGVzdF9uYW1l
KTsKKyAgICBHVEVTVF9DSEVDS18oaXQgIT0gcmVnaXN0ZXJlZF90ZXN0c18uZW5kKCkpOworICAg
IHJldHVybiBpdC0+c2Vjb25kOworICB9CisKICAgLy8gVmVyaWZpZXMgdGhhdCByZWdpc3RlcmVk
X3Rlc3RzIG1hdGNoIHRoZSB0ZXN0IG5hbWVzIGluCiAgIC8vIGRlZmluZWRfdGVzdF9uYW1lc187
IHJldHVybnMgcmVnaXN0ZXJlZF90ZXN0cyBpZiBzdWNjZXNzZnVsLCBvcgogICAvLyBhYm9ydHMg
dGhlIHByb2dyYW0gb3RoZXJ3aXNlLgpAQCAtNjM2LDEwICs1NzUsMTQgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBUeXBlZFRlc3RDYXNlUFN0YXRlIHsKICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsIGludCBs
aW5lLCBjb25zdCBjaGFyKiByZWdpc3RlcmVkX3Rlc3RzKTsKIAogIHByaXZhdGU6CisgIHR5cGVk
ZWYgOjpzdGQ6Om1hcDxzdGQ6OnN0cmluZywgQ29kZUxvY2F0aW9uPiBSZWdpc3RlcmVkVGVzdHNN
YXA7CisKICAgYm9vbCByZWdpc3RlcmVkXzsKLSAgOjpzdGQ6OnNldDxjb25zdCBjaGFyKj4gZGVm
aW5lZF90ZXN0X25hbWVzXzsKKyAgUmVnaXN0ZXJlZFRlc3RzTWFwIHJlZ2lzdGVyZWRfdGVzdHNf
OwogfTsKIAorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQorCiAv
LyBTa2lwcyB0byB0aGUgZmlyc3Qgbm9uLXNwYWNlIGNoYXIgYWZ0ZXIgdGhlIGZpcnN0IGNvbW1h
IGluICdzdHInOwogLy8gcmV0dXJucyBOVUxMIGlmIG5vIGNvbW1hIGlzIGZvdW5kIGluICdzdHIn
LgogaW5saW5lIGNvbnN0IGNoYXIqIFNraXBDb21tYShjb25zdCBjaGFyKiBzdHIpIHsKQEAgLTY0
NywxNSArNTkwLDUxIEBAIGlubGluZSBjb25zdCBjaGFyKiBTa2lwQ29tbWEoY29uc3QgY2hhciog
c3RyKSB7CiAgIGlmIChjb21tYSA9PSBOVUxMKSB7CiAgICAgcmV0dXJuIE5VTEw7CiAgIH0KLSAg
d2hpbGUgKGlzc3BhY2UoKigrK2NvbW1hKSkpIHt9CisgIHdoaWxlIChJc1NwYWNlKCooKytjb21t
YSkpKSB7fQogICByZXR1cm4gY29tbWE7CiB9CiAKIC8vIFJldHVybnMgdGhlIHByZWZpeCBvZiAn
c3RyJyBiZWZvcmUgdGhlIGZpcnN0IGNvbW1hIGluIGl0OyByZXR1cm5zCiAvLyB0aGUgZW50aXJl
IHN0cmluZyBpZiBpdCBjb250YWlucyBubyBjb21tYS4KLWlubGluZSBTdHJpbmcgR2V0UHJlZml4
VW50aWxDb21tYShjb25zdCBjaGFyKiBzdHIpIHsKK2lubGluZSBzdGQ6OnN0cmluZyBHZXRQcmVm
aXhVbnRpbENvbW1hKGNvbnN0IGNoYXIqIHN0cikgewogICBjb25zdCBjaGFyKiBjb21tYSA9IHN0
cmNocihzdHIsICcsJyk7Ci0gIHJldHVybiBjb21tYSA9PSBOVUxMID8gU3RyaW5nKHN0cikgOiBT
dHJpbmcoc3RyLCBjb21tYSAtIHN0cik7CisgIHJldHVybiBjb21tYSA9PSBOVUxMID8gc3RyIDog
c3RkOjpzdHJpbmcoc3RyLCBjb21tYSk7Cit9CisKKy8vIFNwbGl0cyBhIGdpdmVuIHN0cmluZyBv
biBhIGdpdmVuIGRlbGltaXRlciwgcG9wdWxhdGluZyBhIGdpdmVuCisvLyB2ZWN0b3Igd2l0aCB0
aGUgZmllbGRzLgordm9pZCBTcGxpdFN0cmluZyhjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIsIGNo
YXIgZGVsaW1pdGVyLAorICAgICAgICAgICAgICAgICA6OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6c3Ry
aW5nPiogZGVzdCk7CisKKy8vIFRoZSBkZWZhdWx0IGFyZ3VtZW50IHRvIHRoZSB0ZW1wbGF0ZSBi
ZWxvdyBmb3IgdGhlIGNhc2Ugd2hlbiB0aGUgdXNlciBkb2VzCisvLyBub3QgcHJvdmlkZSBhIG5h
bWUgZ2VuZXJhdG9yLgorc3RydWN0IERlZmF1bHROYW1lR2VuZXJhdG9yIHsKKyAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBHZXROYW1lKGludCBpKSB7CisgICAg
cmV0dXJuIFN0cmVhbWFibGVUb1N0cmluZyhpKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFByb3ZpZGVkID0gRGVmYXVsdE5hbWVHZW5lcmF0b3I+CitzdHJ1Y3QgTmFtZUdlbmVyYXRv
clNlbGVjdG9yIHsKKyAgdHlwZWRlZiBQcm92aWRlZCB0eXBlOworfTsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIE5hbWVHZW5lcmF0b3I+Cit2b2lkIEdlbmVyYXRlTmFtZXNSZWN1cnNpdmVseShUeXBl
czAsIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiosIGludCkge30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIE5hbWVHZW5lcmF0b3IsIHR5cGVuYW1lIFR5cGVzPgordm9pZCBHZW5lcmF0ZU5hbWVzUmVj
dXJzaXZlbHkoVHlwZXMsIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiogcmVzdWx0LCBpbnQgaSkg
eworICByZXN1bHQtPnB1c2hfYmFjayhOYW1lR2VuZXJhdG9yOjp0ZW1wbGF0ZSBHZXROYW1lPHR5
cGVuYW1lIFR5cGVzOjpIZWFkPihpKSk7CisgIEdlbmVyYXRlTmFtZXNSZWN1cnNpdmVseTxOYW1l
R2VuZXJhdG9yPih0eXBlbmFtZSBUeXBlczo6VGFpbCgpLCByZXN1bHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICsgMSk7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBOYW1lR2VuZXJhdG9yLCB0eXBlbmFtZSBUeXBlcz4KK3N0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiBHZW5lcmF0ZU5hbWVzKCkgeworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gcmVzdWx0
OworICBHZW5lcmF0ZU5hbWVzUmVjdXJzaXZlbHk8TmFtZUdlbmVyYXRvcj4oVHlwZXMoKSwgJnJl
c3VsdCwgMCk7CisgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8vIFR5cGVQYXJhbWV0ZXJpemVkVGVz
dDxGaXh0dXJlLCBUZXN0U2VsLCBUeXBlcz46OlJlZ2lzdGVyKCkKQEAgLTY3Miw4ICs2NTEsMTAg
QEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0IHsKICAgLy8gc3BlY2lmaWVkIGluIElOU1RB
TlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFByZWZpeCwgVGVzdENhc2UsCiAgIC8vIFR5cGVzKS4g
IFZhbGlkIHZhbHVlcyBmb3IgJ2luZGV4JyBhcmUgWzAsIE4gLSAxXSB3aGVyZSBOIGlzIHRoZQog
ICAvLyBsZW5ndGggb2YgVHlwZXMuCi0gIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIq
IHByZWZpeCwgY29uc3QgY2hhciogY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiB0ZXN0X25hbWVzLCBpbnQgaW5kZXgpIHsKKyAgc3RhdGljIGJvb2wgUmVnaXN0
ZXIoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBDb2RlTG9jYXRpb24mIGNvZGVfbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNhc2VfbmFtZSwgY29uc3QgY2hh
ciogdGVzdF9uYW1lcywgaW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHR5cGVfbmFtZXMgPQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR2VuZXJhdGVOYW1lczxEZWZhdWx0TmFtZUdlbmVyYXRvciwgVHlwZXM+KCkpIHsK
ICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjpIZWFkIFR5cGU7CiAgICAgdHlwZWRlZiBGaXh0
dXJlPFR5cGU+IEZpeHR1cmVDbGFzczsKICAgICB0eXBlZGVmIHR5cGVuYW1lIEdURVNUX0JJTkRf
KFRlc3RTZWwsIFR5cGUpIFRlc3RDbGFzczsKQEAgLTY4MSwxOSArNjYyLDIzIEBAIGNsYXNzIFR5
cGVQYXJhbWV0ZXJpemVkVGVzdCB7CiAgICAgLy8gRmlyc3QsIHJlZ2lzdGVycyB0aGUgZmlyc3Qg
dHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgaW4gdGhlIHR5cGUKICAgICAvLyBsaXN0LgogICAgIE1h
a2VBbmRSZWdpc3RlclRlc3RJbmZvKAotICAgICAgICBTdHJpbmc6OkZvcm1hdCgiJXMlcyVzLyVk
IiwgcHJlZml4LCBwcmVmaXhbMF0gPT0gJ1wwJyA/ICIiIDogIi8iLAotICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlX25hbWUsIGluZGV4KS5jX3N0cigpLAotICAgICAgICBHZXRQcmVmaXhVbnRp
bENvbW1hKHRlc3RfbmFtZXMpLmNfc3RyKCksCi0gICAgICAgIFN0cmluZzo6Rm9ybWF0KCJUeXBl
UGFyYW0gPSAlcyIsIEdldFR5cGVOYW1lPFR5cGU+KCkuY19zdHIoKSkuY19zdHIoKSwKLSAgICAg
ICAgIiIsCi0gICAgICAgIEdldFR5cGVJZDxGaXh0dXJlQ2xhc3M+KCksCi0gICAgICAgIFRlc3RD
bGFzczo6U2V0VXBUZXN0Q2FzZSwKLSAgICAgICAgVGVzdENsYXNzOjpUZWFyRG93blRlc3RDYXNl
LAotICAgICAgICBuZXcgVGVzdEZhY3RvcnlJbXBsPFRlc3RDbGFzcz4pOworICAgICAgICAoc3Rk
OjpzdHJpbmcocHJlZml4KSArIChwcmVmaXhbMF0gPT0gJ1wwJyA/ICIiIDogIi8iKSArIGNhc2Vf
bmFtZSArCisgICAgICAgICAiLyIgKyB0eXBlX25hbWVzW2luZGV4XSkKKyAgICAgICAgICAgIC5j
X3N0cigpLAorICAgICAgICBTdHJpcFRyYWlsaW5nU3BhY2VzKEdldFByZWZpeFVudGlsQ29tbWEo
dGVzdF9uYW1lcykpLmNfc3RyKCksCisgICAgICAgIEdldFR5cGVOYW1lPFR5cGU+KCkuY19zdHIo
KSwKKyAgICAgICAgTlVMTCwgIC8vIE5vIHZhbHVlIHBhcmFtZXRlci4KKyAgICAgICAgY29kZV9s
b2NhdGlvbiwgR2V0VHlwZUlkPEZpeHR1cmVDbGFzcz4oKSwgVGVzdENsYXNzOjpTZXRVcFRlc3RD
YXNlLAorICAgICAgICBUZXN0Q2xhc3M6OlRlYXJEb3duVGVzdENhc2UsIG5ldyBUZXN0RmFjdG9y
eUltcGw8VGVzdENsYXNzPik7CiAKICAgICAvLyBOZXh0LCByZWN1cnNlcyAoYXQgY29tcGlsZSB0
aW1lKSB3aXRoIHRoZSB0YWlsIG9mIHRoZSB0eXBlIGxpc3QuCi0gICAgcmV0dXJuIFR5cGVQYXJh
bWV0ZXJpemVkVGVzdDxGaXh0dXJlLCBUZXN0U2VsLCB0eXBlbmFtZSBUeXBlczo6VGFpbD4KLSAg
ICAgICAgOjpSZWdpc3RlcihwcmVmaXgsIGNhc2VfbmFtZSwgdGVzdF9uYW1lcywgaW5kZXggKyAx
KTsKKyAgICByZXR1cm4gVHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIFRlc3RTZWwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlczo6VGFpbD46OlJl
Z2lzdGVyKHByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29kZV9sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZV9uYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0X25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCArIDEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVf
bmFtZXMpOwogICB9CiB9OwogCkBAIC03MDEsOCArNjg2LDExIEBAIGNsYXNzIFR5cGVQYXJhbWV0
ZXJpemVkVGVzdCB7CiB0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIEZpeHR1cmUsIGNsYXNzIFRl
c3RTZWw+CiBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3Q8Rml4dHVyZSwgVGVzdFNlbCwgVHlw
ZXMwPiB7CiAgcHVibGljOgotICBzdGF0aWMgYm9vbCBSZWdpc3Rlcihjb25zdCBjaGFyKiAvKnBy
ZWZpeCovLCBjb25zdCBjaGFyKiAvKmNhc2VfbmFtZSovLAotICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiAvKnRlc3RfbmFtZXMqLywgaW50IC8qaW5kZXgqLykgeworICBzdGF0aWMg
Ym9vbCBSZWdpc3Rlcihjb25zdCBjaGFyKiAvKnByZWZpeCovLCBjb25zdCBDb2RlTG9jYXRpb24m
LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKmNhc2VfbmFtZSovLCBjb25z
dCBjaGFyKiAvKnRlc3RfbmFtZXMqLywKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IC8qaW5k
ZXgqLywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+JiA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4oKSAvKnR5cGVfbmFtZXMqLykgewogICAgIHJldHVybiB0cnVlOwogICB9CiB9OwpAQCAtNzE0
LDE3ICs3MDIsMzUgQEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIFRlc3RT
ZWwsIFR5cGVzMD4gewogdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBGaXh0dXJlLCB0eXBlbmFt
ZSBUZXN0cywgdHlwZW5hbWUgVHlwZXM+CiBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNl
IHsKICBwdWJsaWM6Ci0gIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIqIHByZWZpeCwg
Y29uc3QgY2hhciogY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiB0ZXN0X25hbWVzKSB7CisgIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIqIHByZWZp
eCwgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFR5cGVkVGVzdENhc2VQU3RhdGUqIHN0YXRlLCBjb25zdCBjaGFyKiBjYXNlX25hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRlc3RfbmFtZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgdHlwZV9uYW1lcyA9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU5hbWVzPERlZmF1bHROYW1lR2Vu
ZXJhdG9yLCBUeXBlcz4oKSkgeworICAgIHN0ZDo6c3RyaW5nIHRlc3RfbmFtZSA9IFN0cmlwVHJh
aWxpbmdTcGFjZXMoCisgICAgICAgIEdldFByZWZpeFVudGlsQ29tbWEodGVzdF9uYW1lcykpOwor
ICAgIGlmICghc3RhdGUtPlRlc3RFeGlzdHModGVzdF9uYW1lKSkgeworICAgICAgZnByaW50Zihz
dGRlcnIsICJGYWlsZWQgdG8gZ2V0IGNvZGUgbG9jYXRpb24gZm9yIHRlc3QgJXMuJXMgYXQgJXMu
IiwKKyAgICAgICAgICAgICAgY2FzZV9uYW1lLCB0ZXN0X25hbWUuY19zdHIoKSwKKyAgICAgICAg
ICAgICAgRm9ybWF0RmlsZUxvY2F0aW9uKGNvZGVfbG9jYXRpb24uZmlsZS5jX3N0cigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZV9sb2NhdGlvbi5saW5lKS5jX3N0cigp
KTsKKyAgICAgIGZmbHVzaChzdGRlcnIpOworICAgICAgcG9zaXg6OkFib3J0KCk7CisgICAgfQor
ICAgIGNvbnN0IENvZGVMb2NhdGlvbiYgdGVzdF9sb2NhdGlvbiA9IHN0YXRlLT5HZXRDb2RlTG9j
YXRpb24odGVzdF9uYW1lKTsKKwogICAgIHR5cGVkZWYgdHlwZW5hbWUgVGVzdHM6OkhlYWQgSGVh
ZDsKIAogICAgIC8vIEZpcnN0LCByZWdpc3RlciB0aGUgZmlyc3QgdGVzdCBpbiAnVGVzdCcgZm9y
IGVhY2ggdHlwZSBpbiAnVHlwZXMnLgogICAgIFR5cGVQYXJhbWV0ZXJpemVkVGVzdDxGaXh0dXJl
LCBIZWFkLCBUeXBlcz46OlJlZ2lzdGVyKAotICAgICAgICBwcmVmaXgsIGNhc2VfbmFtZSwgdGVz
dF9uYW1lcywgMCk7CisgICAgICAgIHByZWZpeCwgdGVzdF9sb2NhdGlvbiwgY2FzZV9uYW1lLCB0
ZXN0X25hbWVzLCAwLCB0eXBlX25hbWVzKTsKIAogICAgIC8vIE5leHQsIHJlY3Vyc2VzIChhdCBj
b21waWxlIHRpbWUpIHdpdGggdGhlIHRhaWwgb2YgdGhlIHRlc3QgbGlzdC4KLSAgICByZXR1cm4g
VHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTxGaXh0dXJlLCB0eXBlbmFtZSBUZXN0czo6VGFpbCwg
VHlwZXM+Ci0gICAgICAgIDo6UmVnaXN0ZXIocHJlZml4LCBjYXNlX25hbWUsIFNraXBDb21tYSh0
ZXN0X25hbWVzKSk7CisgICAgcmV0dXJuIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2U8Rml4dHVy
ZSwgdHlwZW5hbWUgVGVzdHM6OlRhaWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVHlwZXM+OjpSZWdpc3RlcihwcmVmaXgsIGNvZGVfbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSwgY2FzZV9u
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2tpcENvbW1hKHRlc3RfbmFtZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV9uYW1lcyk7CiAgIH0KIH07CiAKQEAgLTczMiwx
NSArNzM4LDE4IEBAIGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UgewogdGVtcGxhdGUg
PEdURVNUX1RFTVBMQVRFXyBGaXh0dXJlLCB0eXBlbmFtZSBUeXBlcz4KIGNsYXNzIFR5cGVQYXJh
bWV0ZXJpemVkVGVzdENhc2U8Rml4dHVyZSwgVGVtcGxhdGVzMCwgVHlwZXM+IHsKICBwdWJsaWM6
Ci0gIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIqIC8qcHJlZml4Ki8sIGNvbnN0IGNo
YXIqIC8qY2FzZV9uYW1lKi8sCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8q
dGVzdF9uYW1lcyovKSB7CisgIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIqIC8qcHJl
Zml4Ki8sIGNvbnN0IENvZGVMb2NhdGlvbiYsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFR5cGVkVGVzdENhc2VQU3RhdGUqIC8qc3RhdGUqLywKKyAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogLypjYXNlX25hbWUqLywgY29uc3QgY2hhciogLyp0ZXN0X25hbWVzKi8sCisg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgPQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KCkgLyp0
eXBlX25hbWVzKi8pIHsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQogfTsKIAogI2VuZGlmICAvLyBH
VEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCiAKLS8vIFJldHVy
bnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYSBTdHJpbmcuCisvLyBSZXR1cm5zIHRo
ZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFzIGFuIHN0ZDo6c3RyaW5nLgogLy8KIC8vIFRoZSBt
YXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMgdG8gYmUgaW5jbHVkZWQgaXMgc3BlY2lmaWVk
IGJ5CiAvLyB0aGUgZ3Rlc3Rfc3RhY2tfdHJhY2VfZGVwdGggZmxhZy4gIFRoZSBza2lwX2NvdW50
IHBhcmFtZXRlcgpAQCAtNzUwLDggKzc1OSw4IEBAIGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVkVGVz
dENhc2U8Rml4dHVyZSwgVGVtcGxhdGVzMCwgVHlwZXM+IHsKIC8vIEZvciBleGFtcGxlLCBpZiBG
b28oKSBjYWxscyBCYXIoKSwgd2hpY2ggaW4gdHVybiBjYWxscwogLy8gR2V0Q3VycmVudE9zU3Rh
Y2tUcmFjZUV4Y2VwdFRvcCguLi4sIDEpLCBGb28oKSB3aWxsIGJlIGluY2x1ZGVkIGluCiAvLyB0
aGUgdHJhY2UgYnV0IEJhcigpIGFuZCBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKCkg
d29uJ3QuCi1HVEVTVF9BUElfIFN0cmluZyBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9w
KFVuaXRUZXN0KiB1bml0X3Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBza2lwX2NvdW50KTsKK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcg
R2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgKKyAgICBVbml0VGVzdCogdW5pdF90ZXN0
LCBpbnQgc2tpcF9jb3VudCk7CiAKIC8vIEhlbHBlcnMgZm9yIHN1cHByZXNzaW5nIHdhcm5pbmdz
IG9uIHVucmVhY2hhYmxlIGNvZGUgb3IgY29uc3RhbnQKIC8vIGNvbmRpdGlvbi4KQEAgLTc2Miw2
ICs3NzEsMTUgQEAgR1RFU1RfQVBJXyBib29sIEFsd2F5c1RydWUoKTsKIC8vIEFsd2F5cyByZXR1
cm5zIGZhbHNlLgogaW5saW5lIGJvb2wgQWx3YXlzRmFsc2UoKSB7IHJldHVybiAhQWx3YXlzVHJ1
ZSgpOyB9CiAKKy8vIEhlbHBlciBmb3Igc3VwcHJlc3NpbmcgZmFsc2Ugd2FybmluZyBmcm9tIENs
YW5nIG9uIGEgY29uc3QgY2hhcioKKy8vIHZhcmlhYmxlIGRlY2xhcmVkIGluIGEgY29uZGl0aW9u
YWwgZXhwcmVzc2lvbiBhbHdheXMgYmVpbmcgTlVMTCBpbgorLy8gdGhlIGVsc2UgYnJhbmNoLgor
c3RydWN0IEdURVNUX0FQSV8gQ29uc3RDaGFyUHRyIHsKKyAgQ29uc3RDaGFyUHRyKGNvbnN0IGNo
YXIqIHN0cikgOiB2YWx1ZShzdHIpIHt9CisgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CisgIGNvbnN0IGNoYXIqIHZhbHVlOworfTsKKwogLy8gQSBzaW1wbGUgTGluZWFy
IENvbmdydWVudGlhbCBHZW5lcmF0b3IgZm9yIGdlbmVyYXRpbmcgcmFuZG9tCiAvLyBudW1iZXJz
IHdpdGggYSB1bmlmb3JtIGRpc3RyaWJ1dGlvbi4gIFVubGlrZSByYW5kKCkgYW5kIHNyYW5kKCks
IGl0CiAvLyBkb2Vzbid0IHVzZSBnbG9iYWwgc3RhdGUgKGFuZCB0aGVyZWZvcmUgY2FuJ3QgaW50
ZXJmZXJlIHdpdGggdXNlcgpAQCAtNzg0LDEzICs4MDIsNDAzIEBAIGNsYXNzIEdURVNUX0FQSV8g
UmFuZG9tIHsKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhSYW5kb20pOwogfTsK
IAorLy8gRGVmaW5pbmcgYSB2YXJpYWJsZSBvZiB0eXBlIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFs
PFQxLCBUMj4gd2lsbCBjYXVzZSBhCisvLyBjb21waWxlciBlcnJvciBpZmYgVDEgYW5kIFQyIGFy
ZSBkaWZmZXJlbnQgdHlwZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgor
c3RydWN0IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K3N0cnVjdCBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxULCBUPiB7Cit9OworCisvLyBSZW1vdmVz
IHRoZSByZWZlcmVuY2UgZnJvbSBhIHR5cGUgaWYgaXQgaXMgYSByZWZlcmVuY2UgdHlwZSwKKy8v
IG90aGVyd2lzZSBsZWF2ZXMgaXQgdW5jaGFuZ2VkLiAgVGhpcyBpcyB0aGUgc2FtZSBhcworLy8g
dHIxOjpyZW1vdmVfcmVmZXJlbmNlLCB3aGljaCBpcyBub3Qgd2lkZWx5IGF2YWlsYWJsZSB5ZXQu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBSZW1vdmVSZWZlcmVuY2UgeyB0eXBlZGVm
IFQgdHlwZTsgfTsgIC8vIE5PTElOVAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUmVt
b3ZlUmVmZXJlbmNlPFQmPiB7IHR5cGVkZWYgVCB0eXBlOyB9OyAgLy8gTk9MSU5UCisKKy8vIEEg
aGFuZHkgd3JhcHBlciBhcm91bmQgUmVtb3ZlUmVmZXJlbmNlIHRoYXQgd29ya3Mgd2hlbiB0aGUg
YXJndW1lbnQKKy8vIFQgZGVwZW5kcyBvbiB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgorI2RlZmluZSBH
VEVTVF9SRU1PVkVfUkVGRVJFTkNFXyhUKSBcCisgICAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6UmVtb3ZlUmVmZXJlbmNlPFQ+Ojp0eXBlCisKKy8vIFJlbW92ZXMgY29uc3QgZnJvbSBh
IHR5cGUgaWYgaXQgaXMgYSBjb25zdCB0eXBlLCBvdGhlcndpc2UgbGVhdmVzCisvLyBpdCB1bmNo
YW5nZWQuICBUaGlzIGlzIHRoZSBzYW1lIGFzIHRyMTo6cmVtb3ZlX2NvbnN0LCB3aGljaCBpcyBu
b3QKKy8vIHdpZGVseSBhdmFpbGFibGUgeWV0LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1
Y3QgUmVtb3ZlQ29uc3QgeyB0eXBlZGVmIFQgdHlwZTsgfTsgIC8vIE5PTElOVAordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUmVtb3ZlQ29uc3Q8Y29uc3QgVD4geyB0eXBlZGVmIFQgdHlw
ZTsgfTsgIC8vIE5PTElOVAorCisvLyBNU1ZDIDguMCwgU3VuIEMrKywgYW5kIElCTSBYTCBDKysg
aGF2ZSBhIGJ1ZyB3aGljaCBjYXVzZXMgdGhlIGFib3ZlCisvLyBkZWZpbml0aW9uIHRvIGZhaWwg
dG8gcmVtb3ZlIHRoZSBjb25zdCBpbiAnY29uc3QgaW50WzNdJyBhbmQgJ2NvbnN0CisvLyBjaGFy
WzNdWzRdJy4gIFRoZSBmb2xsb3dpbmcgc3BlY2lhbGl6YXRpb24gd29ya3MgYXJvdW5kIHRoZSBi
dWcuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitzdHJ1Y3QgUmVtb3ZlQ29uc3Q8
Y29uc3QgVFtOXT4geworICB0eXBlZGVmIHR5cGVuYW1lIFJlbW92ZUNvbnN0PFQ+Ojp0eXBlIHR5
cGVbTl07Cit9OworCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPCAxNDAwCisv
LyBUaGlzIGlzIHRoZSBvbmx5IHNwZWNpYWxpemF0aW9uIHRoYXQgYWxsb3dzIFZDKysgNy4xIHRv
IHJlbW92ZSBjb25zdCBpbgorLy8gJ2NvbnN0IGludFszXSBhbmQgJ2NvbnN0IGludFszXVs0XScu
ICBIb3dldmVyLCBpdCBjYXVzZXMgdHJvdWJsZSB3aXRoIEdDQworLy8gYW5kIHRodXMgbmVlZHMg
dG8gYmUgY29uZGl0aW9uYWxseSBjb21waWxlZC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXpl
X3QgTj4KK3N0cnVjdCBSZW1vdmVDb25zdDxUW05dPiB7CisgIHR5cGVkZWYgdHlwZW5hbWUgUmVt
b3ZlQ29uc3Q8VD46OnR5cGUgdHlwZVtOXTsKK307CisjZW5kaWYKKworLy8gQSBoYW5keSB3cmFw
cGVyIGFyb3VuZCBSZW1vdmVDb25zdCB0aGF0IHdvcmtzIHdoZW4gdGhlIGFyZ3VtZW50CisvLyBU
IGRlcGVuZHMgb24gdGVtcGxhdGUgcGFyYW1ldGVycy4KKyNkZWZpbmUgR1RFU1RfUkVNT1ZFX0NP
TlNUXyhUKSBcCisgICAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UmVtb3ZlQ29uc3Q8
VD46OnR5cGUKKworLy8gVHVybnMgY29uc3QgVSYsIFUmLCBjb25zdCBVLCBhbmQgVSBhbGwgaW50
byBVLgorI2RlZmluZSBHVEVTVF9SRU1PVkVfUkVGRVJFTkNFX0FORF9DT05TVF8oVCkgXAorICAg
IEdURVNUX1JFTU9WRV9DT05TVF8oR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV8oVCkpCisKKy8vIElt
cGxpY2l0bHlDb252ZXJ0aWJsZTxGcm9tLCBUbz46OnZhbHVlIGlzIGEgY29tcGlsZS10aW1lIGJv
b2wKKy8vIGNvbnN0YW50IHRoYXQncyB0cnVlIGlmZiB0eXBlIEZyb20gY2FuIGJlIGltcGxpY2l0
bHkgY29udmVydGVkIHRvCisvLyB0eXBlIFRvLgordGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5
cGVuYW1lIFRvPgorY2xhc3MgSW1wbGljaXRseUNvbnZlcnRpYmxlIHsKKyBwcml2YXRlOgorICAv
LyBXZSBuZWVkIHRoZSBmb2xsb3dpbmcgaGVscGVyIGZ1bmN0aW9ucyBvbmx5IGZvciB0aGVpciB0
eXBlcy4KKyAgLy8gVGhleSBoYXZlIG5vIGltcGxlbWVudGF0aW9ucy4KKworICAvLyBNYWtlRnJv
bSgpIGlzIGFuIGV4cHJlc3Npb24gd2hvc2UgdHlwZSBpcyBGcm9tLiAgV2UgY2Fubm90IHNpbXBs
eQorICAvLyB1c2UgRnJvbSgpLCBhcyB0aGUgdHlwZSBGcm9tIG1heSBub3QgaGF2ZSBhIHB1Ymxp
YyBkZWZhdWx0CisgIC8vIGNvbnN0cnVjdG9yLgorICBzdGF0aWMgdHlwZW5hbWUgQWRkUmVmZXJl
bmNlPEZyb20+Ojp0eXBlIE1ha2VGcm9tKCk7CisKKyAgLy8gVGhlc2UgdHdvIGZ1bmN0aW9ucyBh
cmUgb3ZlcmxvYWRlZC4gIEdpdmVuIGFuIGV4cHJlc3Npb24KKyAgLy8gSGVscGVyKHgpLCB0aGUg
Y29tcGlsZXIgd2lsbCBwaWNrIHRoZSBmaXJzdCB2ZXJzaW9uIGlmIHggY2FuIGJlCisgIC8vIGlt
cGxpY2l0bHkgY29udmVydGVkIHRvIHR5cGUgVG87IG90aGVyd2lzZSBpdCB3aWxsIHBpY2sgdGhl
CisgIC8vIHNlY29uZCB2ZXJzaW9uLgorICAvLworICAvLyBUaGUgZmlyc3QgdmVyc2lvbiByZXR1
cm5zIGEgdmFsdWUgb2Ygc2l6ZSAxLCBhbmQgdGhlIHNlY29uZAorICAvLyB2ZXJzaW9uIHJldHVy
bnMgYSB2YWx1ZSBvZiBzaXplIDIuICBUaGVyZWZvcmUsIGJ5IGNoZWNraW5nIHRoZQorICAvLyBz
aXplIG9mIEhlbHBlcih4KSwgd2hpY2ggY2FuIGJlIGRvbmUgYXQgY29tcGlsZSB0aW1lLCB3ZSBj
YW4gdGVsbAorICAvLyB3aGljaCB2ZXJzaW9uIG9mIEhlbHBlcigpIGlzIHVzZWQsIGFuZCBoZW5j
ZSB3aGV0aGVyIHggY2FuIGJlCisgIC8vIGltcGxpY2l0bHkgY29udmVydGVkIHRvIHR5cGUgVG8u
CisgIHN0YXRpYyBjaGFyIEhlbHBlcihUbyk7CisgIHN0YXRpYyBjaGFyICgmSGVscGVyKC4uLikp
WzJdOyAgLy8gTk9MSU5UCisKKyAgLy8gV2UgaGF2ZSB0byBwdXQgdGhlICdwdWJsaWMnIHNlY3Rp
b24gYWZ0ZXIgdGhlICdwcml2YXRlJyBzZWN0aW9uLAorICAvLyBvciBNU1ZDIHJlZnVzZXMgdG8g
Y29tcGlsZSB0aGUgY29kZS4KKyBwdWJsaWM6CisjaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCisg
IC8vIEMrK0J1aWxkZXIgY2Fubm90IHVzZSBtZW1iZXIgb3ZlcmxvYWQgcmVzb2x1dGlvbiBkdXJp
bmcgdGVtcGxhdGUKKyAgLy8gaW5zdGFudGlhdGlvbi4gIFRoZSBzaW1wbGVzdCB3b3JrYXJvdW5k
IGlzIHRvIHVzZSBpdHMgQysrMHggdHlwZSB0cmFpdHMKKyAgLy8gZnVuY3Rpb25zIChDKytCdWls
ZGVyIDIwMDkgYW5kIGFib3ZlIG9ubHkpLgorICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IF9f
aXNfY29udmVydGlibGUoRnJvbSwgVG8pOworI2Vsc2UKKyAgLy8gTVNWQyB3YXJucyBhYm91dCBp
bXBsaWNpdGx5IGNvbnZlcnRpbmcgZnJvbSBkb3VibGUgdG8gaW50IGZvcgorICAvLyBwb3NzaWJs
ZSBsb3NzIG9mIGRhdGEsIHNvIHdlIG5lZWQgdG8gdGVtcG9yYXJpbHkgZGlzYWJsZSB0aGUKKyAg
Ly8gd2FybmluZy4KKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDI0NCkKKyAg
c3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPQorICAgICAgc2l6ZW9mKEhlbHBlcihJbXBsaWNpdGx5
Q29udmVydGlibGU6Ok1ha2VGcm9tKCkpKSA9PSAxOworICBHVEVTVF9ESVNBQkxFX01TQ19XQVJO
SU5HU19QT1BfKCkKKyNlbmRpZiAgLy8gX19CT1JMQU5EQ19fCit9OwordGVtcGxhdGUgPHR5cGVu
YW1lIEZyb20sIHR5cGVuYW1lIFRvPgorY29uc3QgYm9vbCBJbXBsaWNpdGx5Q29udmVydGlibGU8
RnJvbSwgVG8+Ojp2YWx1ZTsKKworLy8gSXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZSBpcyBh
IGNvbXBpbGUtdGltZSBib29sIGNvbnN0YW50IHRoYXQncworLy8gdHJ1ZSBpZmYgVCBpcyB0eXBl
IFByb3RvY29sTWVzc2FnZSwgcHJvdG8yOjpNZXNzYWdlLCBvciBhIHN1YmNsYXNzCisvLyBvZiB0
aG9zZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IElzQVByb3RvY29sTWVzc2FnZQor
ICAgIDogcHVibGljIGJvb2xfY29uc3RhbnQ8CisgIEltcGxpY2l0bHlDb252ZXJ0aWJsZTxjb25z
dCBUKiwgY29uc3QgOjpQcm90b2NvbE1lc3NhZ2UqPjo6dmFsdWUgfHwKKyAgSW1wbGljaXRseUNv
bnZlcnRpYmxlPGNvbnN0IFQqLCBjb25zdCA6OnByb3RvMjo6TWVzc2FnZSo+Ojp2YWx1ZT4gewor
fTsKKworLy8gV2hlbiB0aGUgY29tcGlsZXIgc2VlcyBleHByZXNzaW9uIElzQ29udGFpbmVyVGVz
dDxDPigwKSwgaWYgQyBpcyBhbgorLy8gU1RMLXN0eWxlIGNvbnRhaW5lciBjbGFzcywgdGhlIGZp
cnN0IG92ZXJsb2FkIG9mIElzQ29udGFpbmVyVGVzdAorLy8gd2lsbCBiZSB2aWFibGUgKHNpbmNl
IGJvdGggQzo6aXRlcmF0b3IqIGFuZCBDOjpjb25zdF9pdGVyYXRvciogYXJlCisvLyB2YWxpZCB0
eXBlcyBhbmQgTlVMTCBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gdGhlbSkuICBJdCB3
aWxsCisvLyBiZSBwaWNrZWQgb3ZlciB0aGUgc2Vjb25kIG92ZXJsb2FkIGFzICdpbnQnIGlzIGEg
cGVyZmVjdCBtYXRjaCBmb3IKKy8vIHRoZSB0eXBlIG9mIGFyZ3VtZW50IDAuICBJZiBDOjppdGVy
YXRvciBvciBDOjpjb25zdF9pdGVyYXRvciBpcyBub3QKKy8vIGEgdmFsaWQgdHlwZSwgdGhlIGZp
cnN0IG92ZXJsb2FkIGlzIG5vdCB2aWFibGUsIGFuZCB0aGUgc2Vjb25kCisvLyBvdmVybG9hZCB3
aWxsIGJlIHBpY2tlZC4gIFRoZXJlZm9yZSwgd2UgY2FuIGRldGVybWluZSB3aGV0aGVyIEMgaXMK
Ky8vIGEgY29udGFpbmVyIGNsYXNzIGJ5IGNoZWNraW5nIHRoZSB0eXBlIG9mIElzQ29udGFpbmVy
VGVzdDxDPigwKS4KKy8vIFRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpcyBpbnNpZ25pZmlj
YW50LgorLy8KKy8vIEluIEMrKzExIG1vZGUgd2UgY2hlY2sgdGhlIGV4aXN0ZW5jZSBvZiBhIGNv
bnN0X2l0ZXJhdG9yIGFuZCB0aGF0IGFuCisvLyBpdGVyYXRvciBpcyBwcm9wZXJseSBpbXBsZW1l
bnRlZCBmb3IgdGhlIGNvbnRhaW5lci4KKy8vCisvLyBGb3IgcHJlLUMrKzExIHRoYXQgd2UgbG9v
ayBmb3IgYm90aCBDOjppdGVyYXRvciBhbmQgQzo6Y29uc3RfaXRlcmF0b3IuCisvLyBUaGUgcmVh
c29uIGlzIHRoYXQgQysrIGluamVjdHMgdGhlIG5hbWUgb2YgYSBjbGFzcyBhcyBhIG1lbWJlciBv
ZiB0aGUKKy8vIGNsYXNzIGl0c2VsZiAoZS5nLiB5b3UgY2FuIHJlZmVyIHRvIGNsYXNzIGl0ZXJh
dG9yIGFzIGVpdGhlcgorLy8gJ2l0ZXJhdG9yJyBvciAnaXRlcmF0b3I6Oml0ZXJhdG9yJykuICBJ
ZiB3ZSBsb29rIGZvciBDOjppdGVyYXRvcgorLy8gb25seSwgZm9yIGV4YW1wbGUsIHdlIHdvdWxk
IG1pc3Rha2VubHkgdGhpbmsgdGhhdCBhIGNsYXNzIG5hbWVkCisvLyBpdGVyYXRvciBpcyBhbiBT
VEwgY29udGFpbmVyLgorLy8KKy8vIEFsc28gbm90ZSB0aGF0IHRoZSBzaW1wbGVyIGFwcHJvYWNo
IG9mIG92ZXJsb2FkaW5nCisvLyBJc0NvbnRhaW5lclRlc3QodHlwZW5hbWUgQzo6Y29uc3RfaXRl
cmF0b3IqKSBhbmQKKy8vIElzQ29udGFpbmVyVGVzdCguLi4pIGRvZXNuJ3Qgd29yayB3aXRoIFZp
c3VhbCBBZ2UgQysrIGFuZCBTdW4gQysrLgordHlwZWRlZiBpbnQgSXNDb250YWluZXI7CisjaWYg
R1RFU1RfTEFOR19DWFgxMQordGVtcGxhdGUgPGNsYXNzIEMsCisgICAgICAgICAgY2xhc3MgSXRl
cmF0b3IgPSBkZWNsdHlwZSg6OnN0ZDo6ZGVjbHZhbDxjb25zdCBDJj4oKS5iZWdpbigpKSwKKyAg
ICAgICAgICBjbGFzcyA9IGRlY2x0eXBlKDo6c3RkOjpkZWNsdmFsPGNvbnN0IEMmPigpLmVuZCgp
KSwKKyAgICAgICAgICBjbGFzcyA9IGRlY2x0eXBlKCsrOjpzdGQ6OmRlY2x2YWw8SXRlcmF0b3Im
PigpKSwKKyAgICAgICAgICBjbGFzcyA9IGRlY2x0eXBlKCo6OnN0ZDo6ZGVjbHZhbDxJdGVyYXRv
cj4oKSksCisgICAgICAgICAgY2xhc3MgPSB0eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvcj4KK0lz
Q29udGFpbmVyIElzQ29udGFpbmVyVGVzdChpbnQgLyogZHVtbXkgKi8pIHsKKyAgcmV0dXJuIDA7
Cit9CisjZWxzZQordGVtcGxhdGUgPGNsYXNzIEM+CitJc0NvbnRhaW5lciBJc0NvbnRhaW5lclRl
c3QoaW50IC8qIGR1bW15ICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1l
IEM6Oml0ZXJhdG9yKiAvKiBpdCAqLyA9IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHlwZW5hbWUgQzo6Y29uc3RfaXRlcmF0b3IqIC8qIGNvbnN0X2l0ICovID0gTlVMTCkgewor
ICByZXR1cm4gMDsKK30KKyNlbmRpZiAgLy8gR1RFU1RfTEFOR19DWFgxMQorCit0eXBlZGVmIGNo
YXIgSXNOb3RDb250YWluZXI7Cit0ZW1wbGF0ZSA8Y2xhc3MgQz4KK0lzTm90Q29udGFpbmVyIElz
Q29udGFpbmVyVGVzdChsb25nIC8qIGR1bW15ICovKSB7IHJldHVybiAnXDAnOyB9CisKKy8vIFRy
YWl0IHRvIGRldGVjdCB3aGV0aGVyIGEgdHlwZSBUIGlzIGEgaGFzaCB0YWJsZS4KKy8vIFRoZSBo
ZXVyaXN0aWMgdXNlZCBpcyB0aGF0IHRoZSB0eXBlIGNvbnRhaW5zIGFuIGlubmVyIHR5cGUgYGhh
c2hlcmAgYW5kIGRvZXMKKy8vIG5vdCBjb250YWluIGFuIGlubmVyIHR5cGUgYHJldmVyc2VfaXRl
cmF0b3JgLgorLy8gSWYgdGhlIGNvbnRhaW5lciBpcyBpdGVyYWJsZSBpbiByZXZlcnNlLCB0aGVu
IG9yZGVyIG1pZ2h0IGFjdHVhbGx5IG1hdHRlci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3Ry
dWN0IElzSGFzaFRhYmxlIHsKKyBwcml2YXRlOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAg
c3RhdGljIGNoYXIgdGVzdCh0eXBlbmFtZSBVOjpoYXNoZXIqLCB0eXBlbmFtZSBVOjpyZXZlcnNl
X2l0ZXJhdG9yKik7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICBzdGF0aWMgaW50IHRlc3Qo
dHlwZW5hbWUgVTo6aGFzaGVyKiwgLi4uKTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIHN0
YXRpYyBjaGFyIHRlc3QoLi4uKTsKKworIHB1YmxpYzoKKyAgc3RhdGljIGNvbnN0IGJvb2wgdmFs
dWUgPSBzaXplb2YodGVzdDxUPigwLCAwKSkgPT0gc2l6ZW9mKGludCk7Cit9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK2NvbnN0IGJvb2wgSXNIYXNoVGFibGU8VD46OnZhbHVlOworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IFZvaWRUIHsKKyAgICB0eXBlZGVmIHZvaWQgdmFsdWVf
dHlwZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHZvaWQ+CitzdHJ1
Y3QgSGFzVmFsdWVUeXBlIDogZmFsc2VfdHlwZSB7fTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
c3RydWN0IEhhc1ZhbHVlVHlwZTxULCBWb2lkVDx0eXBlbmFtZSBUOjp2YWx1ZV90eXBlPiA+IDog
dHJ1ZV90eXBlIHsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDLAorICAgICAgICAgIGJvb2wg
PSBzaXplb2YoSXNDb250YWluZXJUZXN0PEM+KDApKSA9PSBzaXplb2YoSXNDb250YWluZXIpLAor
ICAgICAgICAgIGJvb2wgPSBIYXNWYWx1ZVR5cGU8Qz46OnZhbHVlPgorc3RydWN0IElzUmVjdXJz
aXZlQ29udGFpbmVySW1wbDsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEMsIGJvb2wgSFY+CitzdHJ1
Y3QgSXNSZWN1cnNpdmVDb250YWluZXJJbXBsPEMsIGZhbHNlLCBIVj4gOiBwdWJsaWMgZmFsc2Vf
dHlwZSB7fTsKKworLy8gU2luY2UgdGhlIElzUmVjdXJzaXZlQ29udGFpbmVySW1wbCBkZXBlbmRz
IG9uIHRoZSBJc0NvbnRhaW5lclRlc3Qgd2UgbmVlZCB0bworLy8gb2JleSB0aGUgc2FtZSBpbmNv
bnNpc3RlbmNpZXMgYXMgdGhlIElzQ29udGFpbmVyVGVzdCwgbmFtZWx5IGNoZWNrIGlmCisvLyBz
b21ldGhpbmcgaXMgYSBjb250YWluZXIgaXMgcmVseWluZyBvbiBvbmx5IGNvbnN0X2l0ZXJhdG9y
IGluIEMrKzExIGFuZAorLy8gaXMgcmVseWluZyBvbiBib3RoIGNvbnN0X2l0ZXJhdG9yIGFuZCBp
dGVyYXRvciBvdGhlcndpc2UKK3RlbXBsYXRlIDx0eXBlbmFtZSBDPgorc3RydWN0IElzUmVjdXJz
aXZlQ29udGFpbmVySW1wbDxDLCB0cnVlLCBmYWxzZT4gOiBwdWJsaWMgZmFsc2VfdHlwZSB7fTsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIEM+CitzdHJ1Y3QgSXNSZWN1cnNpdmVDb250YWluZXJJbXBs
PEMsIHRydWUsIHRydWU+IHsKKyAgI2lmIEdURVNUX0xBTkdfQ1hYMTEKKyAgdHlwZWRlZiB0eXBl
bmFtZSBJdGVyYXRvclRyYWl0czx0eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvcj46OnZhbHVlX3R5
cGUKKyAgICAgIHZhbHVlX3R5cGU7CisjZWxzZQorICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9y
VHJhaXRzPHR5cGVuYW1lIEM6Oml0ZXJhdG9yPjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOworI2Vu
ZGlmCisgIHR5cGVkZWYgaXNfc2FtZTx2YWx1ZV90eXBlLCBDPiB0eXBlOworfTsKKworLy8gSXNS
ZWN1cnNpdmVDb250YWluZXI8VHlwZT4gaXMgYSB1bmFyeSBjb21waWxlLXRpbWUgcHJlZGljYXRl
IHRoYXQKKy8vIGV2YWx1YXRlcyB3aGV0aGVyIEMgaXMgYSByZWN1cnNpdmUgY29udGFpbmVyIHR5
cGUuIEEgcmVjdXJzaXZlIGNvbnRhaW5lcgorLy8gdHlwZSBpcyBhIGNvbnRhaW5lciB0eXBlIHdo
b3NlIHZhbHVlX3R5cGUgaXMgZXF1YWwgdG8gdGhlIGNvbnRhaW5lciB0eXBlCisvLyBpdHNlbGYu
IEFuIGV4YW1wbGUgZm9yIGEgcmVjdXJzaXZlIGNvbnRhaW5lciB0eXBlIGlzCisvLyBib29zdDo6
ZmlsZXN5c3RlbTo6cGF0aCwgd2hvc2UgaXRlcmF0b3IgaGFzIGEgdmFsdWVfdHlwZSB0aGF0IGlz
IGVxdWFsIHRvCisvLyBib29zdDo6ZmlsZXN5c3RlbTo6cGF0aC4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBDPgorc3RydWN0IElzUmVjdXJzaXZlQ29udGFpbmVyIDogcHVibGljIElzUmVjdXJzaXZlQ29u
dGFpbmVySW1wbDxDPjo6dHlwZSB7fTsKKworLy8gRW5hYmxlSWY8Y29uZGl0aW9uPjo6dHlwZSBp
cyB2b2lkIHdoZW4gJ0NvbmQnIGlzIHRydWUsIGFuZAorLy8gdW5kZWZpbmVkIHdoZW4gJ0NvbmQn
IGlzIGZhbHNlLiAgVG8gdXNlIFNGSU5BRSB0byBtYWtlIGEgZnVuY3Rpb24KKy8vIG92ZXJsb2Fk
IG9ubHkgYXBwbHkgd2hlbiBhIHBhcnRpY3VsYXIgZXhwcmVzc2lvbiBpcyB0cnVlLCBhZGQKKy8v
ICJ0eXBlbmFtZSBFbmFibGVJZjxleHByZXNzaW9uPjo6dHlwZSogPSAwIiBhcyB0aGUgbGFzdCBw
YXJhbWV0ZXIuCit0ZW1wbGF0ZTxib29sPiBzdHJ1Y3QgRW5hYmxlSWY7Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBFbmFibGVJZjx0cnVlPiB7IHR5cGVkZWYgdm9pZCB0eXBlOyB9OyAgLy8gTk9MSU5UCisK
Ky8vIFV0aWxpdGllcyBmb3IgbmF0aXZlIGFycmF5cy4KKworLy8gQXJyYXlFcSgpIGNvbXBhcmVz
IHR3byBrLWRpbWVuc2lvbmFsIG5hdGl2ZSBhcnJheXMgdXNpbmcgdGhlCisvLyBlbGVtZW50cycg
b3BlcmF0b3I9PSwgd2hlcmUgayBjYW4gYmUgYW55IGludGVnZXIgPj0gMC4gIFdoZW4gayBpcwor
Ly8gMCwgQXJyYXlFcSgpIGRlZ2VuZXJhdGVzIGludG8gY29tcGFyaW5nIGEgc2luZ2xlIHBhaXIg
b2YgdmFsdWVzLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2Jvb2wgQXJy
YXlFcShjb25zdCBUKiBsaHMsIHNpemVfdCBzaXplLCBjb25zdCBVKiByaHMpOworCisvLyBUaGlz
IGdlbmVyaWMgdmVyc2lvbiBpcyB1c2VkIHdoZW4gayBpcyAwLgordGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+CitpbmxpbmUgYm9vbCBBcnJheUVxKGNvbnN0IFQmIGxocywgY29uc3Qg
VSYgcmhzKSB7IHJldHVybiBsaHMgPT0gcmhzOyB9CisKKy8vIFRoaXMgb3ZlcmxvYWQgaXMgdXNl
ZCB3aGVuIGsgPj0gMS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3Qg
Tj4KK2lubGluZSBib29sIEFycmF5RXEoY29uc3QgVCgmbGhzKVtOXSwgY29uc3QgVSgmcmhzKVtO
XSkgeworICByZXR1cm4gaW50ZXJuYWw6OkFycmF5RXEobGhzLCBOLCByaHMpOworfQorCisvLyBU
aGlzIGhlbHBlciByZWR1Y2VzIGNvZGUgYmxvYXQuICBJZiB3ZSBpbnN0ZWFkIHB1dCBpdHMgbG9n
aWMgaW5zaWRlCisvLyB0aGUgcHJldmlvdXMgQXJyYXlFcSgpIGZ1bmN0aW9uLCBhcnJheXMgd2l0
aCBkaWZmZXJlbnQgc2l6ZXMgd291bGQKKy8vIGxlYWQgdG8gZGlmZmVyZW50IGNvcGllcyBvZiB0
aGUgdGVtcGxhdGUgY29kZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorYm9v
bCBBcnJheUVxKGNvbnN0IFQqIGxocywgc2l6ZV90IHNpemUsIGNvbnN0IFUqIHJocykgeworICBm
b3IgKHNpemVfdCBpID0gMDsgaSAhPSBzaXplOyBpKyspIHsKKyAgICBpZiAoIWludGVybmFsOjpB
cnJheUVxKGxoc1tpXSwgcmhzW2ldKSkKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgfQorICByZXR1
cm4gdHJ1ZTsKK30KKworLy8gRmluZHMgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIGl0ZXJhdG9y
IHJhbmdlIFtiZWdpbiwgZW5kKSB0aGF0CisvLyBlcXVhbHMgZWxlbS4gIEVsZW1lbnQgbWF5IGJl
IGEgbmF0aXZlIGFycmF5IHR5cGUgaXRzZWxmLgordGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXIsIHR5
cGVuYW1lIEVsZW1lbnQ+CitJdGVyIEFycmF5QXdhcmVGaW5kKEl0ZXIgYmVnaW4sIEl0ZXIgZW5k
LCBjb25zdCBFbGVtZW50JiBlbGVtKSB7CisgIGZvciAoSXRlciBpdCA9IGJlZ2luOyBpdCAhPSBl
bmQ7ICsraXQpIHsKKyAgICBpZiAoaW50ZXJuYWw6OkFycmF5RXEoKml0LCBlbGVtKSkKKyAgICAg
IHJldHVybiBpdDsKKyAgfQorICByZXR1cm4gZW5kOworfQorCisvLyBDb3B5QXJyYXkoKSBjb3Bp
ZXMgYSBrLWRpbWVuc2lvbmFsIG5hdGl2ZSBhcnJheSB1c2luZyB0aGUgZWxlbWVudHMnCisvLyBv
cGVyYXRvcj0sIHdoZXJlIGsgY2FuIGJlIGFueSBpbnRlZ2VyID49IDAuICBXaGVuIGsgaXMgMCwK
Ky8vIENvcHlBcnJheSgpIGRlZ2VuZXJhdGVzIGludG8gY29weWluZyBhIHNpbmdsZSB2YWx1ZS4K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Cit2b2lkIENvcHlBcnJheShjb25z
dCBUKiBmcm9tLCBzaXplX3Qgc2l6ZSwgVSogdG8pOworCisvLyBUaGlzIGdlbmVyaWMgdmVyc2lv
biBpcyB1c2VkIHdoZW4gayBpcyAwLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
CitpbmxpbmUgdm9pZCBDb3B5QXJyYXkoY29uc3QgVCYgZnJvbSwgVSogdG8pIHsgKnRvID0gZnJv
bTsgfQorCisvLyBUaGlzIG92ZXJsb2FkIGlzIHVzZWQgd2hlbiBrID49IDEuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IE4+CitpbmxpbmUgdm9pZCBDb3B5QXJyYXko
Y29uc3QgVCgmZnJvbSlbTl0sIFUoKnRvKVtOXSkgeworICBpbnRlcm5hbDo6Q29weUFycmF5KGZy
b20sIE4sICp0byk7Cit9CisKKy8vIFRoaXMgaGVscGVyIHJlZHVjZXMgY29kZSBibG9hdC4gIElm
IHdlIGluc3RlYWQgcHV0IGl0cyBsb2dpYyBpbnNpZGUKKy8vIHRoZSBwcmV2aW91cyBDb3B5QXJy
YXkoKSBmdW5jdGlvbiwgYXJyYXlzIHdpdGggZGlmZmVyZW50IHNpemVzCisvLyB3b3VsZCBsZWFk
IHRvIGRpZmZlcmVudCBjb3BpZXMgb2YgdGhlIHRlbXBsYXRlIGNvZGUuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3ZvaWQgQ29weUFycmF5KGNvbnN0IFQqIGZyb20sIHNpemVf
dCBzaXplLCBVKiB0bykgeworICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBzaXplOyBpKyspIHsK
KyAgICBpbnRlcm5hbDo6Q29weUFycmF5KGZyb21baV0sIHRvICsgaSk7CisgIH0KK30KKworLy8g
VGhlIHJlbGF0aW9uIGJldHdlZW4gYW4gTmF0aXZlQXJyYXkgb2JqZWN0IChzZWUgYmVsb3cpIGFu
ZCB0aGUKKy8vIG5hdGl2ZSBhcnJheSBpdCByZXByZXNlbnRzLgorLy8gV2UgdXNlIDIgZGlmZmVy
ZW50IHN0cnVjdHMgdG8gYWxsb3cgbm9uLWNvcHlhYmxlIHR5cGVzIHRvIGJlIHVzZWQsIGFzIGxv
bmcKKy8vIGFzIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSBpcyBwYXNzZWQuCitzdHJ1Y3Qg
UmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSB7fTsKK3N0cnVjdCBSZWxhdGlvblRvU291cmNlQ29w
eSB7fTsKKworLy8gQWRhcHRzIGEgbmF0aXZlIGFycmF5IHRvIGEgcmVhZC1vbmx5IFNUTC1zdHls
ZSBjb250YWluZXIuICBJbnN0ZWFkCisvLyBvZiB0aGUgY29tcGxldGUgU1RMIGNvbnRhaW5lciBj
b25jZXB0LCB0aGlzIGFkYXB0b3Igb25seSBpbXBsZW1lbnRzCisvLyBtZW1iZXJzIHVzZWZ1bCBm
b3IgR29vZ2xlIE1vY2sncyBjb250YWluZXIgbWF0Y2hlcnMuICBOZXcgbWVtYmVycworLy8gc2hv
dWxkIGJlIGFkZGVkIGFzIG5lZWRlZC4gIFRvIHNpbXBsaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbiwg
d2Ugb25seQorLy8gc3VwcG9ydCBFbGVtZW50IGJlaW5nIGEgcmF3IHR5cGUgKGkuZS4gaGF2aW5n
IG5vIHRvcC1sZXZlbCBjb25zdCBvcgorLy8gcmVmZXJlbmNlIG1vZGlmaWVyKS4gIEl0J3MgdGhl
IGNsaWVudCdzIHJlc3BvbnNpYmlsaXR5IHRvIHNhdGlzZnkKKy8vIHRoaXMgcmVxdWlyZW1lbnQu
ICBFbGVtZW50IGNhbiBiZSBhbiBhcnJheSB0eXBlIGl0c2VsZiAoaGVuY2UKKy8vIG11bHRpLWRp
bWVuc2lvbmFsIGFycmF5cyBhcmUgc3VwcG9ydGVkKS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50PgorY2xhc3MgTmF0aXZlQXJyYXkgeworIHB1YmxpYzoKKyAgLy8gU1RMLXN0eWxlIGNvbnRh
aW5lciB0eXBlZGVmcy4KKyAgdHlwZWRlZiBFbGVtZW50IHZhbHVlX3R5cGU7CisgIHR5cGVkZWYg
RWxlbWVudCogaXRlcmF0b3I7CisgIHR5cGVkZWYgY29uc3QgRWxlbWVudCogY29uc3RfaXRlcmF0
b3I7CisKKyAgLy8gQ29uc3RydWN0cyBmcm9tIGEgbmF0aXZlIGFycmF5LiBSZWZlcmVuY2VzIHRo
ZSBzb3VyY2UuCisgIE5hdGl2ZUFycmF5KGNvbnN0IEVsZW1lbnQqIGFycmF5LCBzaXplX3QgY291
bnQsIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UpIHsKKyAgICBJbml0UmVmKGFycmF5LCBjb3Vu
dCk7CisgIH0KKworICAvLyBDb25zdHJ1Y3RzIGZyb20gYSBuYXRpdmUgYXJyYXkuIENvcGllcyB0
aGUgc291cmNlLgorICBOYXRpdmVBcnJheShjb25zdCBFbGVtZW50KiBhcnJheSwgc2l6ZV90IGNv
dW50LCBSZWxhdGlvblRvU291cmNlQ29weSkgeworICAgIEluaXRDb3B5KGFycmF5LCBjb3VudCk7
CisgIH0KKworICAvLyBDb3B5IGNvbnN0cnVjdG9yLgorICBOYXRpdmVBcnJheShjb25zdCBOYXRp
dmVBcnJheSYgcmhzKSB7CisgICAgKHRoaXMtPipyaHMuY2xvbmVfKShyaHMuYXJyYXlfLCByaHMu
c2l6ZV8pOworICB9CisKKyAgfk5hdGl2ZUFycmF5KCkgeworICAgIGlmIChjbG9uZV8gIT0gJk5h
dGl2ZUFycmF5OjpJbml0UmVmKQorICAgICAgZGVsZXRlW10gYXJyYXlfOworICB9CisKKyAgLy8g
U1RMLXN0eWxlIGNvbnRhaW5lciBtZXRob2RzLgorICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIHNpemVfOyB9CisgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gYXJy
YXlfOyB9CisgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGFycmF5XyArIHNp
emVfOyB9CisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOYXRpdmVBcnJheSYgcmhzKSBjb25zdCB7
CisgICAgcmV0dXJuIHNpemUoKSA9PSByaHMuc2l6ZSgpICYmCisgICAgICAgIEFycmF5RXEoYmVn
aW4oKSwgc2l6ZSgpLCByaHMuYmVnaW4oKSk7CisgIH0KKworIHByaXZhdGU6CisgIGVudW0gewor
ICAgIGtDaGVja1R5cGVJc05vdENvbnN0T3JBUmVmZXJlbmNlID0gU3RhdGljQXNzZXJ0VHlwZUVx
SGVscGVyPAorICAgICAgICBFbGVtZW50LCBHVEVTVF9SRU1PVkVfUkVGRVJFTkNFX0FORF9DT05T
VF8oRWxlbWVudCk+Ojp2YWx1ZQorICB9OworCisgIC8vIEluaXRpYWxpemVzIHRoaXMgb2JqZWN0
IHdpdGggYSBjb3B5IG9mIHRoZSBpbnB1dC4KKyAgdm9pZCBJbml0Q29weShjb25zdCBFbGVtZW50
KiBhcnJheSwgc2l6ZV90IGFfc2l6ZSkgeworICAgIEVsZW1lbnQqIGNvbnN0IGNvcHkgPSBuZXcg
RWxlbWVudFthX3NpemVdOworICAgIENvcHlBcnJheShhcnJheSwgYV9zaXplLCBjb3B5KTsKKyAg
ICBhcnJheV8gPSBjb3B5OworICAgIHNpemVfID0gYV9zaXplOworICAgIGNsb25lXyA9ICZOYXRp
dmVBcnJheTo6SW5pdENvcHk7CisgIH0KKworICAvLyBJbml0aWFsaXplcyB0aGlzIG9iamVjdCB3
aXRoIGEgcmVmZXJlbmNlIG9mIHRoZSBpbnB1dC4KKyAgdm9pZCBJbml0UmVmKGNvbnN0IEVsZW1l
bnQqIGFycmF5LCBzaXplX3QgYV9zaXplKSB7CisgICAgYXJyYXlfID0gYXJyYXk7CisgICAgc2l6
ZV8gPSBhX3NpemU7CisgICAgY2xvbmVfID0gJk5hdGl2ZUFycmF5OjpJbml0UmVmOworICB9CisK
KyAgY29uc3QgRWxlbWVudCogYXJyYXlfOworICBzaXplX3Qgc2l6ZV87CisgIHZvaWQgKE5hdGl2
ZUFycmF5OjoqY2xvbmVfKShjb25zdCBFbGVtZW50Kiwgc2l6ZV90KTsKKworICBHVEVTVF9ESVNB
TExPV19BU1NJR05fKE5hdGl2ZUFycmF5KTsKK307CisKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5h
bAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotI2RlZmluZSBHVEVTVF9NRVNTQUdFXyhtZXNz
YWdlLCByZXN1bHRfdHlwZSkgXAotICA6OnRlc3Rpbmc6OmludGVybmFsOjpBc3NlcnRIZWxwZXIo
cmVzdWx0X3R5cGUsIF9fRklMRV9fLCBfX0xJTkVfXywgbWVzc2FnZSkgXAorI2RlZmluZSBHVEVT
VF9NRVNTQUdFX0FUXyhmaWxlLCBsaW5lLCBtZXNzYWdlLCByZXN1bHRfdHlwZSkgXAorICA6OnRl
c3Rpbmc6OmludGVybmFsOjpBc3NlcnRIZWxwZXIocmVzdWx0X3R5cGUsIGZpbGUsIGxpbmUsIG1l
c3NhZ2UpIFwKICAgICA9IDo6dGVzdGluZzo6TWVzc2FnZSgpCiAKKyNkZWZpbmUgR1RFU1RfTUVT
U0FHRV8obWVzc2FnZSwgcmVzdWx0X3R5cGUpIFwKKyAgR1RFU1RfTUVTU0FHRV9BVF8oX19GSUxF
X18sIF9fTElORV9fLCBtZXNzYWdlLCByZXN1bHRfdHlwZSkKKwogI2RlZmluZSBHVEVTVF9GQVRB
TF9GQUlMVVJFXyhtZXNzYWdlKSBcCiAgIHJldHVybiBHVEVTVF9NRVNTQUdFXyhtZXNzYWdlLCA6
OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlKQogCkBAIC04MDAsNyArMTIw
OCw3IEBAIGNsYXNzIEdURVNUX0FQSV8gUmFuZG9tIHsKICNkZWZpbmUgR1RFU1RfU1VDQ0VTU18o
bWVzc2FnZSkgXAogICBHVEVTVF9NRVNTQUdFXyhtZXNzYWdlLCA6OnRlc3Rpbmc6OlRlc3RQYXJ0
UmVzdWx0OjprU3VjY2VzcykKIAotLy8gU3VwcHJlc3NlcyBNU1ZDIHdhcm5pbmdzIDQwNzIgKHVu
cmVhY2hhYmxlIGNvZGUpIGZvciB0aGUgY29kZSBmb2xsb3dpbmcKKy8vIFN1cHByZXNzIE1TVkMg
d2FybmluZyA0NzAyICh1bnJlYWNoYWJsZSBjb2RlKSBmb3IgdGhlIGNvZGUgZm9sbG93aW5nCiAv
LyBzdGF0ZW1lbnQgaWYgaXQgcmV0dXJucyBvciB0aHJvd3MgKG9yIGRvZXNuJ3QgcmV0dXJuIG9y
IHRocm93IGluIHNvbWUKIC8vIHNpdHVhdGlvbnMpLgogI2RlZmluZSBHVEVTVF9TVVBQUkVTU19V
TlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCkgXApAQCAtODA4LDcgKzEy
MTYsNyBAQCBjbGFzcyBHVEVTVF9BUElfIFJhbmRvbSB7CiAKICNkZWZpbmUgR1RFU1RfVEVTVF9U
SFJPV18oc3RhdGVtZW50LCBleHBlY3RlZF9leGNlcHRpb24sIGZhaWwpIFwKICAgR1RFU1RfQU1C
SUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAotICBpZiAoY29uc3QgY2hhciogZ3Rlc3RfbXNnID0gIiIp
IHsgXAorICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29uc3RDaGFyUHRyIGd0ZXN0X21zZyA9
ICIiKSB7IFwKICAgICBib29sIGd0ZXN0X2NhdWdodF9leHBlY3RlZCA9IGZhbHNlOyBcCiAgICAg
dHJ5IHsgXAogICAgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JF
TE9XXyhzdGF0ZW1lbnQpOyBcCkBAIC04MTcsMzggKzEyMjUsMzggQEAgY2xhc3MgR1RFU1RfQVBJ
XyBSYW5kb20gewogICAgICAgZ3Rlc3RfY2F1Z2h0X2V4cGVjdGVkID0gdHJ1ZTsgXAogICAgIH0g
XAogICAgIGNhdGNoICguLi4pIHsgXAotICAgICAgZ3Rlc3RfbXNnID0gIkV4cGVjdGVkOiAiICNz
dGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5cGUgIiBcCi0gICAgICAgICAgICAg
ICAgICAjZXhwZWN0ZWRfZXhjZXB0aW9uICIuXG4gIEFjdHVhbDogaXQgdGhyb3dzIGEgZGlmZmVy
ZW50ICIgXAotICAgICAgICAgICAgICAgICAgInR5cGUuIjsgXAorICAgICAgZ3Rlc3RfbXNnLnZh
bHVlID0gXAorICAgICAgICAgICJFeHBlY3RlZDogIiAjc3RhdGVtZW50ICIgdGhyb3dzIGFuIGV4
Y2VwdGlvbiBvZiB0eXBlICIgXAorICAgICAgICAgICNleHBlY3RlZF9leGNlcHRpb24gIi5cbiAg
QWN0dWFsOiBpdCB0aHJvd3MgYSBkaWZmZXJlbnQgdHlwZS4iOyBcCiAgICAgICBnb3RvIEdURVNU
X0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdHRocm93XywgX19MSU5FX18pOyBcCiAgICAg
fSBcCiAgICAgaWYgKCFndGVzdF9jYXVnaHRfZXhwZWN0ZWQpIHsgXAotICAgICAgZ3Rlc3RfbXNn
ID0gIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5cGUg
IiBcCi0gICAgICAgICAgICAgICAgICAjZXhwZWN0ZWRfZXhjZXB0aW9uICIuXG4gIEFjdHVhbDog
aXQgdGhyb3dzIG5vdGhpbmcuIjsgXAorICAgICAgZ3Rlc3RfbXNnLnZhbHVlID0gXAorICAgICAg
ICAgICJFeHBlY3RlZDogIiAjc3RhdGVtZW50ICIgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiB0eXBl
ICIgXAorICAgICAgICAgICNleHBlY3RlZF9leGNlcHRpb24gIi5cbiAgQWN0dWFsOiBpdCB0aHJv
d3Mgbm90aGluZy4iOyBcCiAgICAgICBnb3RvIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFi
ZWxfdGVzdHRocm93XywgX19MSU5FX18pOyBcCiAgICAgfSBcCiAgIH0gZWxzZSBcCiAgICAgR1RF
U1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0dGhyb3dfLCBfX0xJTkVfXyk6IFwKLSAg
ICAgIGZhaWwoZ3Rlc3RfbXNnKQorICAgICAgZmFpbChndGVzdF9tc2cudmFsdWUpCiAKICNkZWZp
bmUgR1RFU1RfVEVTVF9OT19USFJPV18oc3RhdGVtZW50LCBmYWlsKSBcCiAgIEdURVNUX0FNQklH
VU9VU19FTFNFX0JMT0NLRVJfIFwKLSAgaWYgKGNvbnN0IGNoYXIqIGd0ZXN0X21zZyA9ICIiKSB7
IFwKKyAgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBcCiAgICAgdHJ5
IHsgXAogICAgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9X
XyhzdGF0ZW1lbnQpOyBcCiAgICAgfSBcCiAgICAgY2F0Y2ggKC4uLikgeyBcCi0gICAgICBndGVz
dF9tc2cgPSAiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgdGhyb3cgYW4gZXhjZXB0
aW9uLlxuIiBcCi0gICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IGl0IHRocm93cy4iOyBcCiAg
ICAgICBnb3RvIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdG5vdGhyb3dfLCBf
X0xJTkVfXyk7IFwKICAgICB9IFwKICAgfSBlbHNlIFwKICAgICBHVEVTVF9DT05DQVRfVE9LRU5f
KGd0ZXN0X2xhYmVsX3Rlc3Rub3Rocm93XywgX19MSU5FX18pOiBcCi0gICAgICBmYWlsKGd0ZXN0
X21zZykKKyAgICAgIGZhaWwoIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiBkb2Vzbid0IHRocm93
IGFuIGV4Y2VwdGlvbi5cbiIgXAorICAgICAgICAgICAiICBBY3R1YWw6IGl0IHRocm93cy4iKQog
CiAjZGVmaW5lIEdURVNUX1RFU1RfQU5ZX1RIUk9XXyhzdGF0ZW1lbnQsIGZhaWwpIFwKICAgR1RF
U1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAotICBpZiAoY29uc3QgY2hhciogZ3Rlc3RfbXNn
ID0gIiIpIHsgXAorICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwK
ICAgICBib29sIGd0ZXN0X2NhdWdodF9hbnkgPSBmYWxzZTsgXAogICAgIHRyeSB7IFwKICAgICAg
IEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50
KTsgXApAQCAtODU3LDEzICsxMjY1LDEyIEBAIGNsYXNzIEdURVNUX0FQSV8gUmFuZG9tIHsKICAg
ICAgIGd0ZXN0X2NhdWdodF9hbnkgPSB0cnVlOyBcCiAgICAgfSBcCiAgICAgaWYgKCFndGVzdF9j
YXVnaHRfYW55KSB7IFwKLSAgICAgIGd0ZXN0X21zZyA9ICJFeHBlY3RlZDogIiAjc3RhdGVtZW50
ICIgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cbiIgXAotICAgICAgICAgICAgICAgICAgIiAgQWN0dWFs
OiBpdCBkb2Vzbid0LiI7IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9s
YWJlbF90ZXN0YW55dGhyb3dfLCBfX0xJTkVfXyk7IFwKICAgICB9IFwKICAgfSBlbHNlIFwKICAg
ICBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3Rhbnl0aHJvd18sIF9fTElORV9f
KTogXAotICAgICAgZmFpbChndGVzdF9tc2cpCisgICAgICBmYWlsKCJFeHBlY3RlZDogIiAjc3Rh
dGVtZW50ICIgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cbiIgXAorICAgICAgICAgICAiICBBY3R1YWw6
IGl0IGRvZXNuJ3QuIikKIAogCiAvLyBJbXBsZW1lbnRzIEJvb2xlYW4gdGVzdCBhc3NlcnRpb25z
IHN1Y2ggYXMgRVhQRUNUX1RSVUUuIGV4cHJlc3Npb24gY2FuIGJlCkBAIC04ODAsMTggKzEyODcs
MTcgQEAgY2xhc3MgR1RFU1RfQVBJXyBSYW5kb20gewogCiAjZGVmaW5lIEdURVNUX1RFU1RfTk9f
RkFUQUxfRkFJTFVSRV8oc3RhdGVtZW50LCBmYWlsKSBcCiAgIEdURVNUX0FNQklHVU9VU19FTFNF
X0JMT0NLRVJfIFwKLSAgaWYgKGNvbnN0IGNoYXIqIGd0ZXN0X21zZyA9ICIiKSB7IFwKKyAgaWYg
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBcCiAgICAgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6SGFzTmV3RmF0YWxGYWlsdXJlSGVscGVyIGd0ZXN0X2ZhdGFsX2ZhaWx1cmVfY2hl
Y2tlcjsgXAogICAgIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxP
V18oc3RhdGVtZW50KTsgXAogICAgIGlmIChndGVzdF9mYXRhbF9mYWlsdXJlX2NoZWNrZXIuaGFz
X25ld19mYXRhbF9mYWlsdXJlKCkpIHsgXAotICAgICAgZ3Rlc3RfbXNnID0gIkV4cGVjdGVkOiAi
ICNzdGF0ZW1lbnQgIiBkb2Vzbid0IGdlbmVyYXRlIG5ldyBmYXRhbCAiIFwKLSAgICAgICAgICAg
ICAgICAgICJmYWlsdXJlcyBpbiB0aGUgY3VycmVudCB0aHJlYWQuXG4iIFwKLSAgICAgICAgICAg
ICAgICAgICIgIEFjdHVhbDogaXQgZG9lcy4iOyBcCiAgICAgICBnb3RvIEdURVNUX0NPTkNBVF9U
T0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdG5vZmF0YWxfLCBfX0xJTkVfXyk7IFwKICAgICB9IFwKICAg
fSBlbHNlIFwKICAgICBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3Rub2ZhdGFs
XywgX19MSU5FX18pOiBcCi0gICAgICBmYWlsKGd0ZXN0X21zZykKKyAgICAgIGZhaWwoIkV4cGVj
dGVkOiAiICNzdGF0ZW1lbnQgIiBkb2Vzbid0IGdlbmVyYXRlIG5ldyBmYXRhbCAiIFwKKyAgICAg
ICAgICAgImZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZC5cbiIgXAorICAgICAgICAgICAi
ICBBY3R1YWw6IGl0IGRvZXMuIikKIAogLy8gRXhwYW5kcyB0byB0aGUgbmFtZSBvZiB0aGUgY2xh
c3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBnaXZlbiB0ZXN0LgogI2RlZmluZSBHVEVTVF9URVNUX0NM
QVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIFwKQEAgLTkwNCw3ICsxMzEwLDcg
QEAgY2xhc3MgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1l
KSA6IHB1YmxpYyBwYXJlbnRfY2xhc3Mge1wKICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0
X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSgpIHt9XAogIHByaXZhdGU6XAogICB2aXJ0dWFsIHZvaWQg
VGVzdEJvZHkoKTtcCi0gIHN0YXRpYyA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2lu
Zm9fO1wKKyAgc3RhdGljIDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mb18gR1RF
U1RfQVRUUklCVVRFX1VOVVNFRF87XAogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05f
KFwKICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFt
ZSkpO1wKIH07XApAQCAtOTEyLDcgKzEzMTgsOCBAQCBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05B
TUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIDogcHVibGljIHBhcmVudF9jbGFzcyB7XAog
Ojp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nh
c2VfbmFtZSwgdGVzdF9uYW1lKVwKICAgOjp0ZXN0X2luZm9fID1cCiAgICAgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6TWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8oXAotICAgICAgICAjdGVzdF9jYXNlX25h
bWUsICN0ZXN0X25hbWUsICIiLCAiIiwgXAorICAgICAgICAjdGVzdF9jYXNlX25hbWUsICN0ZXN0
X25hbWUsIE5VTEwsIE5VTEwsIFwKKyAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxv
Y2F0aW9uKF9fRklMRV9fLCBfX0xJTkVfXyksIFwKICAgICAgICAgKHBhcmVudF9pZCksIFwKICAg
ICAgICAgcGFyZW50X2NsYXNzOjpTZXRVcFRlc3RDYXNlLCBcCiAgICAgICAgIHBhcmVudF9jbGFz
czo6VGVhckRvd25UZXN0Q2FzZSwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRyLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaApp
bmRleCA1NDBlZjRjZDQ0ZTcyYjU1ODY1NzA4MWE1ZjA3YTBmMjhiM2U0MGUzLi4wODJiODcyODlh
ZTE3YzhhYTdiOTZkOGU4YzkyYjk2ZTAxOGM3NjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWxp
bmtlZF9wdHIuaApAQCAtMjcsOCArMjcsNiBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogLy8KLS8vIEF1dGhvcnM6IERhbiBFZ25vciAoZWdub3JAZ29vZ2xlLmNvbSkKLS8vCiAv
LyBBICJzbWFydCIgcG9pbnRlciB0eXBlIHdpdGggcmVmZXJlbmNlIHRyYWNraW5nLiAgRXZlcnkg
cG9pbnRlciB0byBhCiAvLyBwYXJ0aWN1bGFyIG9iamVjdCBpcyBrZXB0IG9uIGEgY2lyY3VsYXIg
bGlua2VkIGxpc3QuICBXaGVuIHRoZSBsYXN0IHBvaW50ZXIKIC8vIHRvIGFuIG9iamVjdCBpcyBk
ZXN0cm95ZWQgb3IgcmVhc3NpZ25lZCwgdGhlIG9iamVjdCBpcyBkZWxldGVkLgpAQCAtNjIsMTYg
KzYwLDE4IEBACiAvLyAgICAgICByYXcgcG9pbnRlciAoZS5nLiB2aWEgZ2V0KCkpIGNvbmN1cnJl
bnRseSwgYW5kCiAvLyAgICAgLSBpdCdzIHNhZmUgdG8gd3JpdGUgdG8gdHdvIGxpbmtlZF9wdHJz
IHRoYXQgcG9pbnQgdG8gdGhlIHNhbWUKIC8vICAgICAgIHNoYXJlZCBvYmplY3QgY29uY3VycmVu
dGx5LgotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHJlbmFtZSB0aGlzIHRvIHNhZmVfbGlua2Vk
X3B0ciB0byBhdm9pZAorLy8gRklYTUU6IHJlbmFtZSB0aGlzIHRvIHNhZmVfbGlua2VkX3B0ciB0
byBhdm9pZAogLy8gY29uZnVzaW9uIHdpdGggbm9ybWFsIGxpbmtlZF9wdHIuCiAKKy8vIEdPT0dM
RVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNU
X0lOVEVSTkFMX0dURVNUX0xJTktFRF9QVFJfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVT
VF9JTlRFUk5BTF9HVEVTVF9MSU5LRURfUFRSX0hfCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNp
bmNsdWRlIDxhc3NlcnQuaD4KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQu
aD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKIG5hbWVzcGFjZSB0
ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CkBAIC0xMDUsMjUgKzEwNSwzNSBAQCBjbGFz
cyBsaW5rZWRfcHRyX2ludGVybmFsIHsKICAgLy8gZnJhbWV3b3JrLgogCiAgIC8vIEpvaW4gYW4g
ZXhpc3RpbmcgY2lyY2xlLgotICAvLyBMIDwgZ19saW5rZWRfcHRyX211dGV4Ci0gIHZvaWQgam9p
bihsaW5rZWRfcHRyX2ludGVybmFsIGNvbnN0KiBwdHIpIHsKKyAgdm9pZCBqb2luKGxpbmtlZF9w
dHJfaW50ZXJuYWwgY29uc3QqIHB0cikKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGdfbGlu
a2VkX3B0cl9tdXRleCkgewogICAgIE11dGV4TG9jayBsb2NrKCZnX2xpbmtlZF9wdHJfbXV0ZXgp
OwogCiAgICAgbGlua2VkX3B0cl9pbnRlcm5hbCBjb25zdCogcCA9IHB0cjsKLSAgICB3aGlsZSAo
cC0+bmV4dF8gIT0gcHRyKSBwID0gcC0+bmV4dF87CisgICAgd2hpbGUgKHAtPm5leHRfICE9IHB0
cikgeworICAgICAgYXNzZXJ0KHAtPm5leHRfICE9IHRoaXMgJiYKKyAgICAgICAgICAgICAiVHJ5
aW5nIHRvIGpvaW4oKSBhIGxpbmtlZCByaW5nIHdlIGFyZSBhbHJlYWR5IGluLiAiCisgICAgICAg
ICAgICAgIklzIEdNb2NrIHRocmVhZCBzYWZldHkgZW5hYmxlZD8iKTsKKyAgICAgIHAgPSBwLT5u
ZXh0XzsKKyAgICB9CiAgICAgcC0+bmV4dF8gPSB0aGlzOwogICAgIG5leHRfID0gcHRyOwogICB9
CiAKICAgLy8gTGVhdmUgd2hhdGV2ZXIgY2lyY2xlIHdlJ3JlIHBhcnQgb2YuICBSZXR1cm5zIHRy
dWUgaWYgd2Ugd2VyZSB0aGUKICAgLy8gbGFzdCBtZW1iZXIgb2YgdGhlIGNpcmNsZS4gIE9uY2Ug
dGhpcyBpcyBkb25lLCB5b3UgY2FuIGpvaW4oKSBhbm90aGVyLgotICAvLyBMIDwgZ19saW5rZWRf
cHRyX211dGV4Ci0gIGJvb2wgZGVwYXJ0KCkgeworICBib29sIGRlcGFydCgpCisgICAgICBHVEVT
VF9MT0NLX0VYQ0xVREVEXyhnX2xpbmtlZF9wdHJfbXV0ZXgpIHsKICAgICBNdXRleExvY2sgbG9j
aygmZ19saW5rZWRfcHRyX211dGV4KTsKIAogICAgIGlmIChuZXh0XyA9PSB0aGlzKSByZXR1cm4g
dHJ1ZTsKICAgICBsaW5rZWRfcHRyX2ludGVybmFsIGNvbnN0KiBwID0gbmV4dF87Ci0gICAgd2hp
bGUgKHAtPm5leHRfICE9IHRoaXMpIHAgPSBwLT5uZXh0XzsKKyAgICB3aGlsZSAocC0+bmV4dF8g
IT0gdGhpcykgeworICAgICAgYXNzZXJ0KHAtPm5leHRfICE9IG5leHRfICYmCisgICAgICAgICAg
ICAgIlRyeWluZyB0byBkZXBhcnQoKSBhIGxpbmtlZCByaW5nIHdlIGFyZSBub3QgaW4uICIKKyAg
ICAgICAgICAgICAiSXMgR01vY2sgdGhyZWFkIHNhZmV0eSBlbmFibGVkPyIpOworICAgICAgcCA9
IHAtPm5leHRfOworICAgIH0KICAgICBwLT5uZXh0XyA9IG5leHRfOwogICAgIHJldHVybiBmYWxz
ZTsKICAgfQpAQCAtMTcyLDE1ICsxODIsNiBAQCBjbGFzcyBsaW5rZWRfcHRyIHsKICAgVCogZ2V0
KCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CiAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiB2YWx1ZV87IH0KICAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKnZhbHVlXzsg
fQotICAvLyBSZWxlYXNlIG93bmVyc2hpcCBvZiB0aGUgcG9pbnRlZCBvYmplY3QgYW5kIHJldHVy
bnMgaXQuCi0gIC8vIFNvbGUgb3duZXJzaGlwIGJ5IHRoaXMgbGlua2VkX3B0ciBvYmplY3QgaXMg
cmVxdWlyZWQuCi0gIFQqIHJlbGVhc2UoKSB7Ci0gICAgYm9vbCBsYXN0ID0gbGlua18uZGVwYXJ0
KCk7Ci0gICAgYXNzZXJ0KGxhc3QpOwotICAgIFQqIHYgPSB2YWx1ZV87Ci0gICAgdmFsdWVfID0g
TlVMTDsKLSAgICByZXR1cm4gdjsKLSAgfQogCiAgIGJvb2wgb3BlcmF0b3I9PShUKiBwKSBjb25z
dCB7IHJldHVybiB2YWx1ZV8gPT0gcDsgfQogICBib29sIG9wZXJhdG9yIT0oVCogcCkgY29uc3Qg
eyByZXR1cm4gdmFsdWVfICE9IHA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFy
YW0tdXRpbC1nZW5lcmF0ZWQuaAppbmRleCA2MmI1YWUxM2UyOGU1NjZiMWU4ODUxMjdkYmIwN2Nk
MTcyYTI2ZjE5Li5mNGRmNTk5MTkwNTcyZTdiMDllOWQ3YjBjZTg5OTQ3MmRjN2ViOTE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oCkBAIC0x
LDQgKzEsNiBAQAotLy8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgYSBzY3JpcHQuICBETyBO
T1QgRURJVCBCWSBIQU5EISEhCisvLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBjb21tYW5k
OgorLy8gICAgIHB1bXAucHkgZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCisvLyBE
TyBOT1QgRURJVCBCWSBIQU5EISEhCiAKIC8vIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJbmMuCiAv
LyBBbGwgUmlnaHRzIFJlc2VydmVkLgpAQCAtMjgsOCArMzAsNyBAQAogLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAog
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29v
Z2xlLmNvbSAoVmxhZCBMb3NldikKKwogCiAvLyBUeXBlIGFuZCBmdW5jdGlvbiB1dGlsaXRpZXMg
Zm9yIGltcGxlbWVudGluZyBwYXJhbWV0ZXJpemVkIHRlc3RzLgogLy8gVGhpcyBmaWxlIGlzIGdl
bmVyYXRlZCBieSBhIFNDUklQVC4gIERPIE5PVCBFRElUIEJZIEhBTkQhCkBAIC00MSwxNiArNDIs
MTMgQEAKIC8vIGJ5IHRoZSBtYXhpbXVtIGFyaXR5IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0
dXBsZSB3aGljaCBpcwogLy8gY3VycmVudGx5IHNldCBhdCAxMC4KIAorLy8gR09PR0xFVEVTVF9D
TTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJO
QUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFURURfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9H
VEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0dFTkVSQVRFRF9IXwogCi0vLyBzY3JpcHRz
L2Z1c2VfZ3Rlc3QucHkgZGVwZW5kcyBvbiBndGVzdCdzIG93biBoZWFkZXIgYmVpbmcgI2luY2x1
ZGVkCi0vLyAqdW5jb25kaXRpb25hbGx5Ki4gIFRoZXJlZm9yZSB0aGVzZSAjaW5jbHVkZXMgY2Fu
bm90IGJlIG1vdmVkCi0vLyBpbnNpZGUgI2lmIEdURVNUX0hBU19QQVJBTV9URVNULgotI2luY2x1
ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaD4KLSNpbmNsdWRlIDxndGVzdC9p
bnRlcm5hbC9ndGVzdC1wb3J0Lmg+Ci0KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAorI2luY2x1
ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaCIKKyNpbmNsdWRlICJndGVzdC9p
bnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIApAQCAtNTgsOCAr
NTYsOCBAQCBuYW1lc3BhY2UgdGVzdGluZyB7CiAvLyBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFt
LXRlc3QuaC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+CiBpbnRlcm5hbDo6
UGFyYW1HZW5lcmF0b3I8Ci0gICAgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxGb3J3
YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKLSAgICAgICAgRm9yd2FyZEl0ZXJh
dG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKTsKKyAgdHlwZW5hbWUgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4KK1Zh
bHVlc0luKEZvcndhcmRJdGVyYXRvciBiZWdpbiwgRm9yd2FyZEl0ZXJhdG9yIGVuZCk7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxU
PiBWYWx1ZXNJbihjb25zdCBUICgmYXJyYXkpW05dKTsKQEAgLTc3LDcgKzc1LDEwIEBAIGNsYXNz
IFZhbHVlQXJyYXkxIHsKICAgZXhwbGljaXQgVmFsdWVBcnJheTEoVDEgdjEpIDogdjFfKHYxKSB7
fQogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PigpIGNvbnN0IHsgcmV0dXJuIFZhbHVlc0luKCZ2MV8sICZ2MV8gKyAxKTsgfQorICBvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3Rh
dGljX2Nhc3Q8VD4odjFfKX07CisgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKKyAgfQogCiAg
cHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9y
dGVkLgpAQCAtOTMsNyArOTQsNyBAQCBjbGFzcyBWYWx1ZUFycmF5MiB7CiAKICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyl9OwogICAgIHJldHVybiBWYWx1
ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTEyLDcgKzExMyw4IEBAIGNsYXNzIFZhbHVlQXJyYXkz
IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8
VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M199OworICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2
Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pfTsKICAgICByZXR1cm4gVmFsdWVzSW4o
YXJyYXkpOwogICB9CiAKQEAgLTEzMyw3ICsxMzUsOCBAQCBjbGFzcyBWYWx1ZUFycmF5NCB7CiAK
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkg
Y29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF99OworICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2
Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pfTsK
ICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTE1NSw3ICsxNTgsOCBAQCBj
bGFzcyBWYWx1ZUFycmF5NSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8s
IHYyXywgdjNfLCB2NF8sIHY1X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0
PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
XyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyl9OwogICAgIHJldHVy
biBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTc5LDcgKzE4Myw5IEBAIGNsYXNzIFZhbHVl
QXJyYXk2IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5l
cmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18s
IHY0XywgdjVfLCB2Nl99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2
MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBz
dGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2Nl8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTIw
NCw3ICsyMTAsOSBAQCBjbGFzcyBWYWx1ZUFycmF5NyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N199OworICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNf
Y2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxU
Pih2N18pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTIzMSw3ICsy
MzksOSBAQCBjbGFzcyBWYWx1ZUFycmF5OCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAg
IG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlb
XSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4X307CisgICAgY29uc3Qg
VCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19j
YXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+
KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7
CiAgIH0KIApAQCAtMjU5LDcgKzI2OSwxMCBAQCBjbGFzcyBWYWx1ZUFycmF5OSB7CiAKICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qg
ewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2
N18sIHY4XywgdjlffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
ICAgfQogCkBAIC0yODgsNyArMzAxLDEwIEBAIGNsYXNzIFZhbHVlQXJyYXkxMCB7CiAKICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qg
ewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2
N18sIHY4XywgdjlfLCB2MTBffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8
VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNf
KSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyl9Owog
ICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMzE5LDcgKzMzNSwxMCBAQCBj
bGFzcyBWYWx1ZUFycmF5MTEgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFf
LCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExX307Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKX07CiAg
ICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0zNTEsOCArMzcwLDExIEBAIGNs
YXNzIFZhbHVlQXJyYXkxMiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8s
IHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAg
ICAgICB2MTJffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0
PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKX07CiAgICAgcmV0dXJuIFZh
bHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0zODYsOCArNDA4LDExIEBAIGNsYXNzIFZhbHVlQXJy
YXkxMyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJh
dG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2
NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2
MTNffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyl9
OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtNDIyLDggKzQ0NywxMSBA
QCBjbGFzcyBWYWx1ZUFycmF5MTQgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVy
YXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7
djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywK
LSAgICAgICAgdjEyXywgdjEzXywgdjE0X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRp
Y19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0
PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYx
MF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyks
IHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKX07CiAgICAgcmV0dXJu
IFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC00NTksOCArNDg3LDEyIEBAIGNsYXNzIFZhbHVl
QXJyYXkxNSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNf
LCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJf
LCB2MTNfLCB2MTRfLCB2MTVffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8
VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNf
KSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0
YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTVfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC00OTks
OCArNTMxLDEyIEBAIGNsYXNzIFZhbHVlQXJyYXkxNiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2
MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZffTsKKyAgICBj
b25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3Rh
dGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nh
c3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0
PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4o
djE2Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtNTQwLDggKzU3
NiwxMiBAQCBjbGFzcyBWYWx1ZUFycmF5MTcgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
ICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5
W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywg
djExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3X307CisgICAg
Y29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYy
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0
YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19j
YXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2Fz
dDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+
KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5
KTsKICAgfQogCkBAIC01ODIsOCArNjIyLDEzIEBAIGNsYXNzIFZhbHVlQXJyYXkxOCB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2
MTVfLCB2MTZfLCB2MTdfLCB2MThffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nh
c3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4o
djhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyks
IHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3Rh
dGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCkBAIC02MjUsOCArNjcwLDEzIEBAIGNsYXNzIFZhbHVlQXJyYXkxOSB7CiAK
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkg
Y29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1Xywg
djZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRf
LCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7
c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGlj
X2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8
VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0
PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4o
djE5Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtNjcwLDggKzcy
MCwxMyBAQCBjbGFzcyBWYWx1ZUFycmF5MjAgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
ICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5
W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywg
djExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4Xywg
djE5XywgdjIwX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyks
IHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRp
Y19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2Fz
dDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+
KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1
XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC03MTcsOCAr
NzcyLDE0IEBAIGNsYXNzIFZhbHVlQXJyYXkyMSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJy
YXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBf
LCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThf
LCB2MTlfLCB2MjBfLCB2MjFffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8
VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNf
KSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0
YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRp
Y19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKX07CiAgICAgcmV0
dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC03NjUsOCArODI2LDE0IEBAIGNsYXNzIFZh
bHVlQXJyYXkyMiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFt
R2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywg
djNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2
MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFf
LCB2MjJffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3Rh
dGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nh
c3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+
KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEz
XyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwg
c3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYy
MF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyl9
OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtODE1LDkgKzg4MiwxNCBA
QCBjbGFzcyBWYWx1ZUFycmF5MjMgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVy
YXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7
djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywK
LSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5Xywg
djIwXywgdjIxXywgdjIyXywKLSAgICAgICAgdjIzX307CisgICAgY29uc3QgVCBhcnJheVtdID0g
e3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRp
Y19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0
PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2Fz
dDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+
KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIx
XyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKX07CiAgICAgcmV0
dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC04NjcsOSArOTM5LDE1IEBAIGNsYXNzIFZh
bHVlQXJyYXkyNCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFt
R2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywg
djNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2
MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFf
LCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3Rh
dGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nh
c3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4o
djEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJf
KSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+
KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5
XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjRfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBA
IC05MjAsOSArOTk4LDE1IEBAIGNsYXNzIFZhbHVlQXJyYXkyNSB7CiAKICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywg
djlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2
MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2
MjVffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyks
IHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0
YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI1Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAt
OTc1LDkgKzEwNTksMTUgQEAgY2xhc3MgVmFsdWVBcnJheTI2IHsKIAogICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29u
c3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2
OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYx
N18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYy
NV8sIHYyNl99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBz
dGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNf
Y2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8
VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2
MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8p
LCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4o
djIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJf
KSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBz
dGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2Xyl9OwogICAgIHJldHVybiBW
YWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTAzMiw5ICsxMTIyLDE2IEBAIGNsYXNzIFZhbHVl
QXJyYXkyNyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNf
LCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJf
LCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2
MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdffTsKKyAgICBjb25zdCBU
IGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nh
c3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4o
djdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwg
c3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYx
NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2Xyks
IHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0
YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0xMDkwLDkgKzExODcsMTYgQEAgY2xh
c3MgVmFsdWVBcnJheTI4IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3Ig
UGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywg
djJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAg
ICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8s
IHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF99
OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2Fz
dDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2
NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBz
dGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNf
Y2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGlj
X2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2Fz
dDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5
KTsKICAgfQogCkBAIC0xMTQ5LDkgKzEyNTMsMTYgQEAgY2xhc3MgVmFsdWVBcnJheTI5IHsKIAog
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBj
b25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2
Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8s
IHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0g
ICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV99OworICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2Fz
dDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2
N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBz
dGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwg
c3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0
aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNf
Y2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJ
bihhcnJheSk7CiAgIH0KIApAQCAtMTIxMCw5ICsxMzIxLDE3IEBAIGNsYXNzIFZhbHVlQXJyYXkz
MCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9y
PFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8s
IHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNf
LCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2
MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBffTsK
KyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRp
Y19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nh
c3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19j
YXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8
VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAg
fQogCkBAIC0xMjczLDkgKzEzOTIsMTcgQEAgY2xhc3MgVmFsdWVBcnJheTMxIHsKIAogICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7
Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3
XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8s
IHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAg
IHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV99OworICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0
aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2Fz
dDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8
VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2
MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8p
LCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4o
djIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVf
KSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBz
dGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKX07CiAgICAgcmV0dXJuIFZhbHVl
c0luKGFycmF5KTsKICAgfQogCkBAIC0xMzM3LDkgKzE0NjQsMTcgQEAgY2xhc3MgVmFsdWVBcnJh
eTMyIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0
XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYx
M18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8s
IHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8s
IHYzMV8sIHYzMl99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8p
LCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0
aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nh
c3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
NV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8
VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2
MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8p
LCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4o
djI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFf
KSwgc3RhdGljX2Nhc3Q8VD4odjMyXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAg
IH0KIApAQCAtMTQwMyw5ICsxNTM4LDE4IEBAIGNsYXNzIFZhbHVlQXJyYXkzMyB7CiAKICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qg
ewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2
N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVf
LCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAg
ICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2
MzNffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyks
IHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0
YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRp
Y19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKX07CiAgICAgcmV0
dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0xNDcwLDkgKzE2MTQsMTggQEAgY2xhc3Mg
VmFsdWVBcnJheTM0IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFy
YW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJf
LCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAg
IHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYy
MV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYy
OV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9
IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0
aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2Fz
dDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nh
c3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYy
MV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8
VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2
MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8p
LCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKX07CiAgICAgcmV0dXJuIFZh
bHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0xNTM4LDEwICsxNjkxLDE4IEBAIGNsYXNzIFZhbHVl
QXJyYXkzNSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNf
LCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJf
LCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2
MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2
MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLAotICAgICAgICB2MzVffTsKKyAgICBjb25zdCBU
IGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nh
c3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4o
djdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwg
c3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYx
NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2Xyks
IHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0
YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRp
Y19jYXN0PFQ+KHYzNV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAg
LTE2MDksMTAgKzE3NzAsMTkgQEAgY2xhc3MgVmFsdWVBcnJheTM2IHsKIAogICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAg
Y29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3Xywgdjhf
LCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8s
IHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8s
IHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYz
NF8sIHYzNV8sCi0gICAgICAgIHYzNl99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNf
Y2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxU
Pih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBf
KSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBz
dGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwg
c3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0
aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNf
Y2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkp
OwogICB9CiAKQEAgLTE2ODIsMTAgKzE4NTIsMTkgQEAgY2xhc3MgVmFsdWVBcnJheTM3IHsKIAog
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBj
b25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2
Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8s
IHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0g
ICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYz
Ml8sIHYzM18sIHYzNF8sIHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN199OworICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2Fz
dDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2
N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBz
dGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwg
c3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0
aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNf
Y2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2Fz
dDxUPih2MzdfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0xNzU2
LDEwICsxOTM1LDE5IEBAIGNsYXNzIFZhbHVlQXJyYXkzOCB7CiAKICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywgdjlf
LCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdf
LCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVf
LCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2
MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7
c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGlj
X2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8
VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0
PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4o
djE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+
KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4
XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwg
c3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYz
NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3Xyks
IHN0YXRpY19jYXN0PFQ+KHYzOF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9
CiAKQEAgLTE4MzEsMTAgKzIwMTksMjAgQEAgY2xhc3MgVmFsdWVBcnJheTM5IHsKIAogICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7
Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3
XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8s
IHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAg
IHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYz
M18sIHYzNF8sIHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYzOV99OworICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0
aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2Fz
dDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8
VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2
MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8p
LCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4o
djIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVf
KSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBz
dGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMy
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwg
c3RhdGljX2Nhc3Q8VD4odjM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0
aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzOV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTE5
MDgsMTAgKzIxMDYsMjAgQEAgY2xhc3MgVmFsdWVBcnJheTQwIHsKIAogICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29u
c3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2
OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYx
N18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYy
NV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8s
IHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYzOV8sIHY0MF99OworICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNf
Y2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxU
Pih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8p
LCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4o
djE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZf
KSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBz
dGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIz
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwg
c3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0
aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3Rh
dGljX2Nhc3Q8VD4odjM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNf
Y2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2NDBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCkBAIC0xOTg3LDEwICsyMTk1LDIwIEBAIGNsYXNzIFZhbHVlQXJyYXk0MSB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2
MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNf
LAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFf
LCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2Mzlf
LCB2NDBfLCB2NDFffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8
VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0
PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+
KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMx
XyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwg
c3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYz
OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyks
IHN0YXRpY19jYXN0PFQ+KHY0MV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9
CiAKQEAgLTIwNjcsMTAgKzIyODUsMjEgQEAgY2xhc3MgVmFsdWVBcnJheTQyIHsKIAogICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7
Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3
XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8s
IHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAg
IHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYz
M18sIHYzNF8sIHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYzOV8sIHY0MF8sIHY0
MV8sIHY0Ml99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBz
dGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNf
Y2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8
VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2
MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8p
LCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4o
djIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJf
KSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBz
dGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwg
c3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0
aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2NDBfKSwgc3Rh
dGljX2Nhc3Q8VD4odjQxXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0Ml8pfTsKICAgICBy
ZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTIxNDgsMTAgKzIzNzcsMjEgQEAgY2xh
c3MgVmFsdWVBcnJheTQzIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3Ig
UGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywg
djJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAg
ICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8s
IHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8s
IHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8sCi0gICAgICAgIHYzNl8s
IHYzN18sIHYzOF8sIHYzOV8sIHY0MF8sIHY0MV8sIHY0Ml8sIHY0M199OworICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2Fz
dDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2
N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBz
dGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwg
c3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0
aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNf
Y2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2Fz
dDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHY0Ml8pLCBzdGF0aWNfY2FzdDxUPih2NDNfKX07CiAgICAgcmV0
dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0yMjMxLDEwICsyNDcxLDIxIEBAIGNsYXNz
IFZhbHVlQXJyYXk0NCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYy
XywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAg
ICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2
MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2
MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2
MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJfLCB2NDNfLCB2NDRffTsKKyAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+
KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2
XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwg
c3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYy
M18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0
YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0YXRp
Y19jYXN0PFQ+KHY0NF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAg
LTIzMTUsMTAgKzI1NjYsMjIgQEAgY2xhc3MgVmFsdWVBcnJheTQ1IHsKIAogICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAg
Y29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3Xywgdjhf
LCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8s
IHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8s
IHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYz
NF8sIHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYzOV8sIHY0MF8sIHY0MV8sIHY0
Ml8sIHY0M18sIHY0NF8sIHY0NV99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2Fz
dDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2
OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwg
c3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0
aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3Rh
dGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2Fz
dDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nh
c3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxU
Pih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0
Ml8pLCBzdGF0aWNfY2FzdDxUPih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4odjQ0XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY0NV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9
CiAKQEAgLTI0MDEsMTAgKzI2NjQsMjIgQEAgY2xhc3MgVmFsdWVBcnJheTQ2IHsKIAogICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7
Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3
XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8s
IHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAg
IHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYz
M18sIHYzNF8sIHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYzOV8sIHY0MF8sIHY0
MV8sIHY0Ml8sIHY0M18sIHY0NF8sIHY0NV8sIHY0Nl99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9
IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0
aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2Fz
dDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nh
c3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYy
MV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8
VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2
MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8p
LCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4o
djM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2Mzdf
KSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBz
dGF0aWNfY2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY0Ml8pLCBzdGF0aWNfY2FzdDxUPih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4odjQ0
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0NV8pLCBzdGF0aWNfY2FzdDxUPih2NDZfKX07
CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0yNDg5LDExICsyNzY0LDIy
IEBAIGNsYXNzIFZhbHVlQXJyYXk0NyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9w
ZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9
IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFf
LAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlf
LCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2Mjdf
LCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAg
ICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJfLCB2NDNfLCB2NDRfLCB2
NDVfLCB2NDZfLAotICAgICAgICB2NDdffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGlj
X2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8
VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEw
XyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwg
c3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYx
N18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5Xyks
IHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3Rh
dGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0
YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGlj
X2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRp
Y19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nh
c3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2NDVfKSwgc3RhdGljX2Nhc3Q8VD4odjQ2XyksIHN0YXRpY19j
YXN0PFQ+KHY0N18pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTI1
NzksMTEgKzI4NjUsMjMgQEAgY2xhc3MgVmFsdWVBcnJheTQ4IHsKIAogICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29u
c3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2
OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYx
N18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYy
NV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8s
IHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYzOV8sIHY0MF8sIHY0MV8sIHY0Ml8s
IHY0M18sIHY0NF8sIHY0NV8sIHY0Nl8sIHY0N18sCi0gICAgICAgIHY0OF99OworICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNf
Y2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxU
Pih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8p
LCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4o
djE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZf
KSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBz
dGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIz
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwg
c3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0
aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3Rh
dGljX2Nhc3Q8VD4odjM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNf
Y2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0Ml8pLCBzdGF0aWNfY2FzdDxUPih2NDNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjQ0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0NV8pLCBzdGF0aWNfY2Fz
dDxUPih2NDZfKSwgc3RhdGljX2Nhc3Q8VD4odjQ3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY0OF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTI2NzAsMTEg
KzI5NjgsMjMgQEAgY2xhc3MgVmFsdWVBcnJheTQ5IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBh
cnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYx
MF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYx
OF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYy
Nl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8s
Ci0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYzOV8sIHY0MF8sIHY0MV8sIHY0Ml8sIHY0M18s
IHY0NF8sIHY0NV8sIHY0Nl8sIHY0N18sCi0gICAgICAgIHY0OF8sIHY0OV99OworICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNf
Y2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxU
Pih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8p
LCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4o
djE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZf
KSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBz
dGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIz
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwg
c3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0
aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3Rh
dGljX2Nhc3Q8VD4odjM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNf
Y2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0Ml8pLCBzdGF0aWNfY2FzdDxUPih2NDNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjQ0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0NV8pLCBzdGF0aWNfY2Fz
dDxUPih2NDZfKSwgc3RhdGljX2Nhc3Q8VD4odjQ3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY0OF8pLCBzdGF0aWNfY2FzdDxUPih2NDlfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5
KTsKICAgfQogCkBAIC0yNzYyLDExICszMDcyLDIzIEBAIGNsYXNzIFZhbHVlQXJyYXk1MCB7CiAK
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkg
Y29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1Xywg
djZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRf
LCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAot
ICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2
MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2
NDBfLCB2NDFfLCB2NDJfLCB2NDNfLCB2NDRfLCB2NDVfLCB2NDZfLCB2NDdfLAotICAgICAgICB2
NDhfLCB2NDlfLCB2NTBffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4o
djFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwg
c3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRp
Y19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nh
c3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19j
YXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0
PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4o
djMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNf
KSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+
KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQw
XyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwg
c3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2NDVfKSwgc3RhdGljX2Nhc3Q8VD4odjQ2XyksIHN0YXRpY19jYXN0PFQ+KHY0
N18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDhfKSwgc3RhdGljX2Nhc3Q8VD4odjQ5Xyks
IHN0YXRpY19jYXN0PFQ+KHY1MF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9
CiAKQEAgLTI4MjYsNyArMzE0OCw3IEBAIGNsYXNzIFZhbHVlQXJyYXk1MCB7CiAgIGNvbnN0IFQ1
MCB2NTBfOwogfTsKIAotI2lmIEdURVNUX0hBU19DT01CSU5FCisjIGlmIEdURVNUX0hBU19DT01C
SU5FCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RF
LgogLy8KIC8vIEdlbmVyYXRlcyB2YWx1ZXMgZnJvbSB0aGUgQ2FydGVzaWFuIHByb2R1Y3Qgb2Yg
dmFsdWVzIHByb2R1Y2VkCkBAIC0yODM0LDkgKzMxNTYsOSBAQCBjbGFzcyBWYWx1ZUFycmF5NTAg
ewogLy8KIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CiBjbGFzcyBDYXJ0ZXNp
YW5Qcm9kdWN0R2VuZXJhdG9yMgotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNl
PCA6OnN0ZDo6dHVwbGU8VDEsIFQyPiA+IHsKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvcklu
dGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDI+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRl
ZiA6OnN0ZDo6dHVwbGU8VDEsIFQyPiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0
dXBsZTxUMSwgVDI+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMihj
b25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8
VDI+JiBnMikKQEAgLTI4ODIsNyArMzIwNCw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3IyCiAgICAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENs
b25lKCkgY29uc3QgewogICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQot
ICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1
cnJlbnRfdmFsdWVfOyB9CisgICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBj
b25zdCB7IHJldHVybiBjdXJyZW50X3ZhbHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBF
cXVhbHMoY29uc3QgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29u
c3QgewogICAgICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMg
dGhhdCB0aGUgb3RoZXIKICAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5k
IHdlIGNhbiBkb3duY2FzdC4KQEAgLTI5MTQsNyArMzIzNiw3IEBAIGNsYXNzIENhcnRlc2lhblBy
b2R1Y3RHZW5lcmF0b3IyCiAKICAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAg
ICBpZiAoIUF0RW5kKCkpCi0gICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJy
ZW50MV8sICpjdXJyZW50Ml8pOworICAgICAgICBjdXJyZW50X3ZhbHVlXy5yZXNldChuZXcgUGFy
YW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8pKTsKICAgICB9CiAgICAgYm9vbCBBdEVuZCgp
IGNvbnN0IHsKICAgICAgIC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBv
ZiB0aGUgcmFuZ2Ugd2hlbiBlaXRoZXIgb2YgdGhlCkBAIC0yOTM2LDcgKzMyNTgsNyBAQCBjbGFz
cyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMgogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFQyPjo6aXRlcmF0b3IgYmVnaW4yXzsKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdl
bmVyYXRvcjxUMj46Oml0ZXJhdG9yIGVuZDJfOwogICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9y
PFQyPjo6aXRlcmF0b3IgY3VycmVudDJfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsK
KyAgICBsaW5rZWRfcHRyPFBhcmFtVHlwZT4gY3VycmVudF92YWx1ZV87CiAgIH07ICAvLyBjbGFz
cyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMjo6SXRlcmF0b3IKIAogICAvLyBObyBpbXBsZW1l
bnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC0yOTQ5LDkgKzMyNzEsOSBA
QCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMgogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3IzCi0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6c3RkOjp0dXBs
ZTxUMSwgVDIsIFQzPiA+IHsKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwg
Ojp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzPiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpz
dGQ6OnR1cGxlPFQxLCBUMiwgVDM+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1
cGxlPFQxLCBUMiwgVDM+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9y
Myhjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29uc3QgUGFyYW1HZW5lcmF0
b3I8VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMykKQEAgLTMwMDUsNyArMzMy
Nyw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IzCiAgICAgdmlydHVhbCBQYXJh
bUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3QgewogICAgICAgcmV0
dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1U
eXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9CisgICAgdmly
dHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiBjdXJyZW50X3Zh
bHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRv
ckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAgICAgLy8gSGF2aW5nIHRo
ZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKICAgICAgIC8v
IGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KQEAgLTMw
NDEsNyArMzM2Myw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IzCiAKICAgICB2
b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkpCi0gICAgICAg
IGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8sICpjdXJy
ZW50M18pOworICAgICAgICBjdXJyZW50X3ZhbHVlXy5yZXNldChuZXcgUGFyYW1UeXBlKCpjdXJy
ZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18pKTsKICAgICB9CiAgICAgYm9vbCBBdEVuZCgp
IGNvbnN0IHsKICAgICAgIC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBv
ZiB0aGUgcmFuZ2Ugd2hlbiBlaXRoZXIgb2YgdGhlCkBAIC0zMDY3LDcgKzMzODksNyBAQCBjbGFz
cyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMwogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFQzPjo6aXRlcmF0b3IgYmVnaW4zXzsKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdl
bmVyYXRvcjxUMz46Oml0ZXJhdG9yIGVuZDNfOwogICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9y
PFQzPjo6aXRlcmF0b3IgY3VycmVudDNfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsK
KyAgICBsaW5rZWRfcHRyPFBhcmFtVHlwZT4gY3VycmVudF92YWx1ZV87CiAgIH07ICAvLyBjbGFz
cyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMzo6SXRlcmF0b3IKIAogICAvLyBObyBpbXBsZW1l
bnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC0zMDgxLDkgKzM0MDMsOSBA
QCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+CiBjbGFzcyBDYXJ0ZXNp
YW5Qcm9kdWN0R2VuZXJhdG9yNAotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNl
PCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+ID4geworICAgIDogcHVibGljIFBhcmFtR2Vu
ZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiA+IHsKICBw
dWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiBQYXJhbVR5cGU7
CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gUGFyYW1UeXBlOwog
CiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYg
ZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVy
YXRvcjxUMz4mIGczLApAQCAtMzE0Niw3ICszNDY4LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjQKICAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBl
PiogQ2xvbmUoKSBjb25zdCB7CiAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAg
ICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVy
biAmY3VycmVudF92YWx1ZV87IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVu
dCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBi
b29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVy
KSBjb25zdCB7CiAgICAgICAvLyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFu
dGVlcyB0aGF0IHRoZSBvdGhlcgogICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlw
ZSBhbmQgd2UgY2FuIGRvd25jYXN0LgpAQCAtMzE4Niw4ICszNTA4LDggQEAgY2xhc3MgQ2FydGVz
aWFuUHJvZHVjdEdlbmVyYXRvcjQKIAogICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsK
ICAgICAgIGlmICghQXRFbmQoKSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUo
KmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKLSAgICAgICAgICAgICpjdXJyZW50
NF8pOworICAgICAgICBjdXJyZW50X3ZhbHVlXy5yZXNldChuZXcgUGFyYW1UeXBlKCpjdXJyZW50
MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18sCisgICAgICAgICAgICAqY3VycmVudDRfKSk7CiAg
ICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAvLyBXZSBtdXN0IHJlcG9ydCBp
dGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQpAQCAt
MzIxNyw3ICszNTM5LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQKICAgICBj
b25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yIGJlZ2luNF87CiAgICAg
Y29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDQ+OjppdGVyYXRvciBlbmQ0XzsKICAgICB0
eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yIGN1cnJlbnQ0XzsKLSAgICBQYXJh
bVR5cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0cjxQYXJhbVR5cGU+IGN1cnJlbnRf
dmFsdWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQ6Okl0ZXJh
dG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVk
LgpAQCAtMzIzMiw5ICszNTU0LDkgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVu
YW1lIFQ0LCB0eXBlbmFtZSBUNT4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1Ci0g
ICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6c3RkOjp0dXBsZTxUMSwgVDIs
IFQzLCBUNCwgVDU+ID4geworICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6
OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gPiB7CiAgcHVibGljOgotICB0eXBl
ZGVmIDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+IFBhcmFtVHlwZTsKKyAgdHlwZWRl
ZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gUGFyYW1UeXBlOwogCiAgIENh
cnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAg
ICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxU
Mz4mIGczLApAQCAtMzMwNCw3ICszNjI2LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVy
YXRvcjUKICAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xv
bmUoKSBjb25zdCB7CiAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0g
ICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3Vy
cmVudF92YWx1ZV87IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNv
bnN0IHsgcmV0dXJuIGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVx
dWFscyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25z
dCB7CiAgICAgICAvLyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0
aGF0IHRoZSBvdGhlcgogICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQg
d2UgY2FuIGRvd25jYXN0LgpAQCAtMzM0OCw4ICszNjcwLDggQEAgY2xhc3MgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjUKIAogICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKICAgICAg
IGlmICghQXRFbmQoKSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJl
bnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKLSAgICAgICAgICAgICpjdXJyZW50NF8sICpj
dXJyZW50NV8pOworICAgICAgICBjdXJyZW50X3ZhbHVlXy5yZXNldChuZXcgUGFyYW1UeXBlKCpj
dXJyZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18sCisgICAgICAgICAgICAqY3VycmVudDRf
LCAqY3VycmVudDVfKSk7CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAv
LyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4g
ZWl0aGVyIG9mIHRoZQpAQCAtMzM4Myw3ICszNzA1LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjUKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJh
dG9yIGJlZ2luNV87CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+OjppdGVy
YXRvciBlbmQ1XzsKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJhdG9yIGN1
cnJlbnQ1XzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0cjxQ
YXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjU6Okl0ZXJhdG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25t
ZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtMzQwMCwxMCArMzcyMiwxMCBAQCBjbGFzcyBDYXJ0ZXNp
YW5Qcm9kdWN0R2VuZXJhdG9yNQogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICB0eXBlbmFtZSBUNj4K
IGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2Ci0gICAgOiBwdWJsaWMgUGFyYW1HZW5l
cmF0b3JJbnRlcmZhY2U8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsCisgICAgOiBw
dWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBU
MywgVDQsIFQ1LAogICAgICAgICBUNj4gPiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0
dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0
aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiBQYXJhbVR5cGU7CiAKICAgQ2FydGVz
aWFuUHJvZHVjdEdlbmVyYXRvcjYoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAg
IGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYg
ZzMsCkBAIC0zNDgxLDcgKzM4MDMsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9y
NgogICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgp
IGNvbnN0IHsKICAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwogICAgIH0KLSAgICB2
aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50
X3ZhbHVlXzsgfQorICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3Qg
eyByZXR1cm4gY3VycmVudF92YWx1ZV8uZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgRXF1YWxz
KGNvbnN0IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsK
ICAgICAgIC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQg
dGhlIG90aGVyCiAgICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBj
YW4gZG93bmNhc3QuCkBAIC0zNTI5LDggKzM4NTEsOCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0
R2VuZXJhdG9yNgogCiAgICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYg
KCFBdEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFf
LCAqY3VycmVudDJfLCAqY3VycmVudDNfLAotICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1cnJl
bnQ1XywgKmN1cnJlbnQ2Xyk7CisgICAgICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJh
bVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKKyAgICAgICAgICAgICpj
dXJyZW50NF8sICpjdXJyZW50NV8sICpjdXJyZW50Nl8pKTsKICAgICB9CiAgICAgYm9vbCBBdEVu
ZCgpIGNvbnN0IHsKICAgICAgIC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVu
ZCBvZiB0aGUgcmFuZ2Ugd2hlbiBlaXRoZXIgb2YgdGhlCkBAIC0zNTY4LDcgKzM4OTAsNyBAQCBj
bGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNgogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQ2Pjo6aXRlcmF0b3IgYmVnaW42XzsKICAgICBjb25zdCB0eXBlbmFtZSBQYXJh
bUdlbmVyYXRvcjxUNj46Oml0ZXJhdG9yIGVuZDZfOwogICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFQ2Pjo6aXRlcmF0b3IgY3VycmVudDZfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVl
XzsKKyAgICBsaW5rZWRfcHRyPFBhcmFtVHlwZT4gY3VycmVudF92YWx1ZV87CiAgIH07ICAvLyBj
bGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNjo6SXRlcmF0b3IKIAogICAvLyBObyBpbXBs
ZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC0zNTg2LDEwICszOTA4
LDEwIEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2CiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1
LAogICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RH
ZW5lcmF0b3I3Ci0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6c3RkOjp0
dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAorICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9y
SW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCiAgICAg
ICAgIFQ3PiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3PiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1
Y3RHZW5lcmF0b3I3KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLApAQCAt
MzY3NSw3ICszOTk3LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjcKICAgICB2
aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7
CiAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBj
b25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87
IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJu
IGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQ
YXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAv
LyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhl
cgogICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25j
YXN0LgpAQCAtMzcyNyw4ICs0MDQ5LDggQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjcKIAogICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKICAgICAgIGlmICghQXRFbmQo
KSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJl
bnQyXywgKmN1cnJlbnQzXywKLSAgICAgICAgICAgICpjdXJyZW50NF8sICpjdXJyZW50NV8sICpj
dXJyZW50Nl8sICpjdXJyZW50N18pOworICAgICAgICBjdXJyZW50X3ZhbHVlXy5yZXNldChuZXcg
UGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18sCisgICAgICAgICAg
ICAqY3VycmVudDRfLCAqY3VycmVudDVfLCAqY3VycmVudDZfLCAqY3VycmVudDdfKSk7CiAgICAg
fQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVy
YXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQpAQCAtMzc3
MCw3ICs0MDkyLDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjcKICAgICBjb25z
dCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNz46Oml0ZXJhdG9yIGJlZ2luN187CiAgICAgY29u
c3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDc+OjppdGVyYXRvciBlbmQ3XzsKICAgICB0eXBl
bmFtZSBQYXJhbUdlbmVyYXRvcjxUNz46Oml0ZXJhdG9yIGN1cnJlbnQ3XzsKLSAgICBQYXJhbVR5
cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFs
dWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjc6Okl0ZXJhdG9y
CiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgpA
QCAtMzc4OSwxMCArNDExMSwxMCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNwog
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNSwKICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1l
IFQ4PgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjgKLSAgICA6IHB1YmxpYyBQYXJh
bUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
CisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKICAgICAgICAgVDcsIFQ4PiA+IHsKICBwdWJsaWM6Ci0g
IHR5cGVkZWYgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4gUGFy
YW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4PiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjgoY29u
c3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQy
PiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBAIC0zODg4LDcgKzQyMTAsNyBA
QCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOAogICAgIHZpcnR1YWwgUGFyYW1JdGVy
YXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKICAgICAgIHJldHVybiBu
ZXcgSXRlcmF0b3IoKnRoaXMpOwogICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSog
Q3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQorICAgIHZpcnR1YWwg
Y29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gY3VycmVudF92YWx1ZV8u
Z2V0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0b3JJbnRl
cmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKICAgICAgIC8vIEhhdmluZyB0aGUgc2Ft
ZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCiAgICAgICAvLyBpdGVy
YXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCkBAIC0zOTQ0LDgg
KzQyNjYsOCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOAogCiAgICAgdm9pZCBD
b21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBjdXJy
ZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNf
LAotICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1cnJl
bnQ3XywgKmN1cnJlbnQ4Xyk7CisgICAgICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJh
bVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKKyAgICAgICAgICAgICpj
dXJyZW50NF8sICpjdXJyZW50NV8sICpjdXJyZW50Nl8sICpjdXJyZW50N18sICpjdXJyZW50OF8p
KTsKICAgICB9CiAgICAgYm9vbCBBdEVuZCgpIGNvbnN0IHsKICAgICAgIC8vIFdlIG11c3QgcmVw
b3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2hlbiBlaXRoZXIgb2YgdGhl
CkBAIC0zOTkxLDcgKzQzMTMsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOAog
ICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ4Pjo6aXRlcmF0b3IgYmVnaW44XzsK
ICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOD46Oml0ZXJhdG9yIGVuZDhfOwog
ICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ4Pjo6aXRlcmF0b3IgY3VycmVudDhfOwotICAg
IFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKKyAgICBsaW5rZWRfcHRyPFBhcmFtVHlwZT4gY3Vy
cmVudF92YWx1ZV87CiAgIH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yODo6
SXRlcmF0b3IKIAogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBw
b3J0ZWQuCkBAIC00MDExLDEwICs0MzMzLDEwIEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3I4CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywg
dHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5PgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjkKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsCisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZh
Y2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKICAgICAgICAgVDcs
IFQ4LCBUOT4gPiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0aW5n
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiBQYXJhbVR5cGU7CiAK
ICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjkoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBn
MSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPFQzPiYgZzMsCkBAIC00MTE3LDcgKzQ0MzksNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0
R2VuZXJhdG9yOQogICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+
KiBDbG9uZSgpIGNvbnN0IHsKICAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwogICAg
IH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJu
ICZjdXJyZW50X3ZhbHVlXzsgfQorICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50
KCkgY29uc3QgeyByZXR1cm4gY3VycmVudF92YWx1ZV8uZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGJv
b2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIp
IGNvbnN0IHsKICAgICAgIC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50
ZWVzIHRoYXQgdGhlIG90aGVyCiAgICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBl
IGFuZCB3ZSBjYW4gZG93bmNhc3QuCkBAIC00MTc3LDkgKzQ0OTksOSBAQCBjbGFzcyBDYXJ0ZXNp
YW5Qcm9kdWN0R2VuZXJhdG9yOQogCiAgICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewog
ICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgq
Y3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAorICAgICAgICBjdXJyZW50X3ZhbHVl
Xy5yZXNldChuZXcgUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18s
CiAgICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVudDVfLCAqY3VycmVudDZfLCAqY3VycmVu
dDdfLCAqY3VycmVudDhfLAotICAgICAgICAgICAgKmN1cnJlbnQ5Xyk7CisgICAgICAgICAgICAq
Y3VycmVudDlfKSk7CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAvLyBX
ZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0
aGVyIG9mIHRoZQpAQCAtNDIyOSw3ICs0NTUxLDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdl
bmVyYXRvcjkKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOT46Oml0ZXJhdG9y
IGJlZ2luOV87CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDk+OjppdGVyYXRv
ciBlbmQ5XzsKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOT46Oml0ZXJhdG9yIGN1cnJl
bnQ5XzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0cjxQYXJh
bVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdl
bmVyYXRvcjk6Okl0ZXJhdG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50
IGlzIHVuc3VwcG9ydGVkLgpAQCAtNDI1MCwxMCArNDU3MiwxMCBAQCBjbGFzcyBDYXJ0ZXNpYW5Q
cm9kdWN0R2VuZXJhdG9yOQogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlw
ZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICB0eXBlbmFtZSBUNiwgdHlw
ZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgogY2xhc3Mg
Q2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjEwCi0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJ
bnRlcmZhY2U8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAorICAgIDogcHVi
bGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsCiAgICAgICAgIFQ3LCBUOCwgVDksIFQxMD4gPiB7CiAgcHVibGljOgotICB0
eXBlZGVmIDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBU
MTA+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1
Y3RHZW5lcmF0b3IxMChjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKQEAg
LTQzNjQsNyArNDY4Niw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IxMAogICAg
IHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0
IHsKICAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwogICAgIH0KLSAgICB2aXJ0dWFs
IGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVl
XzsgfQorICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1
cm4gY3VycmVudF92YWx1ZV8uZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0
IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKICAgICAg
IC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90
aGVyCiAgICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93
bmNhc3QuCkBAIC00NDI4LDkgKzQ3NTAsOSBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJh
dG9yMTAKIAogICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKICAgICAgIGlmICghQXRF
bmQoKSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1
cnJlbnQyXywgKmN1cnJlbnQzXywKKyAgICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBh
cmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAogICAgICAgICAgICAg
KmN1cnJlbnQ0XywgKmN1cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1cnJlbnQ3XywgKmN1cnJlbnQ4
XywKLSAgICAgICAgICAgICpjdXJyZW50OV8sICpjdXJyZW50MTBfKTsKKyAgICAgICAgICAgICpj
dXJyZW50OV8sICpjdXJyZW50MTBfKSk7CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7
CiAgICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJh
bmdlIHdoZW4gZWl0aGVyIG9mIHRoZQpAQCAtNDQ4NCw3ICs0ODA2LDcgQEAgY2xhc3MgQ2FydGVz
aWFuUHJvZHVjdEdlbmVyYXRvcjEwCiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8
VDEwPjo6aXRlcmF0b3IgYmVnaW4xMF87CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0
b3I8VDEwPjo6aXRlcmF0b3IgZW5kMTBfOwogICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQx
MD46Oml0ZXJhdG9yIGN1cnJlbnQxMF87Ci0gICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFsdWVfOwor
ICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsKICAgfTsgIC8vIGNsYXNz
IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IxMDo6SXRlcmF0b3IKIAogICAvLyBObyBpbXBsZW1l
bnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC00NTE1LDggKzQ4MzcsOCBA
QCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMiB7CiBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVy
Mihjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIpCiAgICAgICA6IGcx
XyhnMSksIGcyXyhnMikge30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4K
LSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDI+ID4oKSBjb25z
dCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyPiA+KAor
ICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDI+ID4oKSBj
b25zdCB7CisgICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBU
Mj4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IyPFQxLCBUMj4oCiAg
ICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcxXyksCiAgICAgICAgIHN0
YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXykpKTsKQEAgLTQ1MzcsOCArNDg1OSw4
IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXIzKGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBH
ZW5lcmF0b3IyJiBnMiwKICAgICBjb25zdCBHZW5lcmF0b3IzJiBnMykKICAgICAgIDogZzFfKGcx
KSwgZzJfKGcyKSwgZzNfKGczKSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMz4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBs
ZTxUMSwgVDIsIFQzPiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpz
dGQ6OnR1cGxlPFQxLCBUMiwgVDM+ID4oCisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRl
c3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDM+ID4oKSBjb25zdCB7CisgICAgcmV0dXJuIFBhcmFtR2Vu
ZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDM+ID4oCiAgICAgICAgIG5ldyBDYXJ0
ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMzxUMSwgVDIsIFQzPigKICAgICAgICAgc3RhdGljX2Nhc3Q8
UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5l
cmF0b3I8VDI+ID4oZzJfKSwKQEAgLTQ1NjIsOCArNDg4NCw4IEBAIENhcnRlc2lhblByb2R1Y3RI
b2xkZXI0KGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKICAgICBj
b25zdCBHZW5lcmF0b3IzJiBnMywgY29uc3QgR2VuZXJhdG9yNCYgZzQpCiAgICAgICA6IGcxXyhn
MSksIGcyXyhnMiksIGczXyhnMyksIGc0XyhnNCkge30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0PgotICBvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiA+KCkgY29uc3QgewotICAg
IHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiA+KAor
ICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBU
ND4gPigpIGNvbnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVw
bGU8VDEsIFQyLCBUMywgVDQ+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJh
dG9yNDxUMSwgVDIsIFQzLCBUND4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9y
PFQxPiA+KGcxXyksCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcy
XyksCkBAIC00NTg5LDggKzQ5MTEsOCBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNShjb25zdCBH
ZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgY29uc3QgR2VuZXJhdG9y
MyYgZzMsIGNvbnN0IEdlbmVyYXRvcjQmIGc0LCBjb25zdCBHZW5lcmF0b3I1JiBnNSkKICAgICAg
IDogZzFfKGcxKSwgZzJfKGcyKSwgZzNfKGczKSwgZzRfKGc0KSwgZzVfKGc1KSB7fQogICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQs
IHR5cGVuYW1lIFQ1PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNT4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8
IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+ID4oCisgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gPigpIGNvbnN0IHsK
KyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywg
VDQsIFQ1PiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjU8VDEsIFQy
LCBUMywgVDQsIFQ1PigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4o
ZzFfKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwKQEAg
LTQ2MjAsOCArNDk0Miw4IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXI2KGNvbnN0IEdlbmVyYXRv
cjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKICAgICAgIDogZzFfKGcxKSwgZzJfKGcyKSwg
ZzNfKGczKSwgZzRfKGc0KSwgZzVfKGc1KSwgZzZfKGc2KSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1
LAogICAgICAgdHlwZW5hbWUgVDY+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFy
YW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiA+KAorICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2PiA+KCkgY29uc3QgeworICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5n
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjY8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4oCiAgICAgICAgIHN0YXRp
Y19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcxXyksCiAgICAgICAgIHN0YXRpY19jYXN0PFBh
cmFtR2VuZXJhdG9yPFQyPiA+KGcyXyksCkBAIC00NjUzLDkgKzQ5NzUsOSBAQCBDYXJ0ZXNpYW5Q
cm9kdWN0SG9sZGVyNyhjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIs
CiAgICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhnMyksIGc0XyhnNCksIGc1XyhnNSksIGc2
XyhnNiksIGc3XyhnNykge30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICAgIHR5cGVuYW1lIFQ2
LCB0eXBlbmFtZSBUNz4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0
aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAogICAgICAgVDc+ID4oKSBjb25zdCB7
Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDc+ID4oCisgICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjc8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+KAogICAgICAgICBz
dGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLAogICAgICAgICBzdGF0aWNfY2Fz
dDxQYXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pLApAQCAtNDY5MSw5ICs1MDEzLDkgQEAgQ2FydGVz
aWFuUHJvZHVjdEhvbGRlcjgoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjIm
IGcyLAogICAgICAgICAgIGc4XyhnOCkge30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICAgIHR5
cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+Ci0gIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsCisgIG9wZXJh
dG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDYsIFQ3LAogICAgICAgVDg+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9y
PCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiA+KAorICAgIHJl
dHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDg+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yODxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJh
bUdlbmVyYXRvcjxUMT4gPihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRv
cjxUMj4gPihnMl8pLApAQCAtNDczMiw5ICs1MDU0LDkgQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRl
cjkoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICAgICAgICAg
IGc5XyhnOSkge30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5h
bWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBl
bmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5PgotICBvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwKKyAgb3Bl
cmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4LAogICAgICAgVDk+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2Vu
ZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LAorICAg
IHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsCiAgICAgICAgIFQ5PiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjk8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4oCiAgICAg
ICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcxXyksCkBAIC00Nzc2LDEwICs1
MDk4LDEwIEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXIxMChjb25zdCBHZW5lcmF0b3IxJiBnMSwg
Y29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgICAgICAgZzlfKGc5KSwgZzEwXyhnMTApIHt9CiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVu
YW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgotICBvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwKLSAgICAg
IFQ5LCBUMTA+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LAotICAgICAgICBUOSwgVDEwPiA+
KAorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LAorICAgICAgVDEwPiA+KCkgY29uc3QgeworICAgIHJl
dHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDgsIFQ5LAorICAgICAgICBUMTA+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Q
cm9kdWN0R2VuZXJhdG9yMTA8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwKICAg
ICAgICAgICAgIFQxMD4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+
KGcxXyksCkBAIC00ODEwLDExICs1MTMyLDkgQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjEwKGNv
bnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKICAgY29uc3QgR2VuZXJh
dG9yMTAgZzEwXzsKIH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMTAKIAotI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUK
IAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCi0j
ZW5kaWYgIC8vICBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xV
REVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFURURfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
cGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oLnB1bXAKaW5k
ZXggYmFlZGZiYzJkN2U4MzQxYjViNTU5ZDljZTMzYjhkODc0NTNkZWQ0Mi4uYWU4YzU3YjUyYmEx
Zjc4NTkxYzUzYTU5Mjk4MzY5NDc0MTY2OGJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRl
ZC5oLnB1bXAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oLnB1bXAKQEAgLTI5LDggKzI5LDcgQEAg
JHZhciBtYXh0dXBsZSA9IDEwICAkJCBNYXhpbXVtIG51bWJlciBvZiBDb21iaW5lIGFyZ3VtZW50
cyB3ZSB3YW50IHRvIHN1cHBvcnQuCiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2
KQorCiAKIC8vIFR5cGUgYW5kIGZ1bmN0aW9uIHV0aWxpdGllcyBmb3IgaW1wbGVtZW50aW5nIHBh
cmFtZXRlcml6ZWQgdGVzdHMuCiAvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBU
LiAgRE8gTk9UIEVESVQgQlkgSEFORCEKQEAgLTM5LDE5ICszOCwxNiBAQCAkdmFyIG1heHR1cGxl
ID0gMTAgICQkIE1heGltdW0gbnVtYmVyIG9mIENvbWJpbmUgYXJndW1lbnRzIHdlIHdhbnQgdG8g
c3VwcG9ydC4KIC8vIGFuZCBhdCBtb3N0ICRtYXh0dXBsZSBhcmd1bWVudHMgaW4gQ29tYmluZS4g
UGxlYXNlIGNvbnRhY3QKIC8vIGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbSBp
ZiB5b3UgbmVlZCBtb3JlLgogLy8gUGxlYXNlIG5vdGUgdGhhdCB0aGUgbnVtYmVyIG9mIGFyZ3Vt
ZW50cyB0byBDb21iaW5lIGlzIGxpbWl0ZWQKLS8vIGJ5IHRoZSBtYXhpbXVtIGFyaXR5IG9mIHRo
ZSBpbXBsZW1lbnRhdGlvbiBvZiB0cjE6OnR1cGxlIHdoaWNoIGlzCisvLyBieSB0aGUgbWF4aW11
bSBhcml0eSBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdHVwbGUgd2hpY2ggaXMKIC8vIGN1cnJl
bnRseSBzZXQgYXQgJG1heHR1cGxlLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVM
RVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9V
VElMX0dFTkVSQVRFRF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dU
RVNUX1BBUkFNX1VUSUxfR0VORVJBVEVEX0hfCiAKLS8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBk
ZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKLS8vICp1bmNvbmRp
dGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKLS8v
IGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcGFyYW0tdXRpbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaD4KLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcGFyYW0tdXRpbC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC01OSw4ICs1NSw4IEBAIG5hbWVzcGFj
ZSB0ZXN0aW5nIHsKIC8vIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLgogdGVtcGxh
dGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcj4KIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjwK
LSAgICB0eXBlbmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZh
bHVlX3R5cGU+IFZhbHVlc0luKAotICAgICAgICBGb3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndh
cmRJdGVyYXRvciBlbmQpOworICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVyYXRv
clRyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPgorVmFsdWVzSW4oRm9yd2FyZEl0
ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHNpemVfdCBOPgogaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFZhbHVlc0luKGNvbnN0
IFQgKCZhcnJheSlbTl0pOwpAQCAtNzIsMzMgKzY4LDE4IEBAIGludGVybmFsOjpQYXJhbUdlbmVy
YXRvcjx0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGU+IFZhbHVlc0luKAogbmFtZXNwYWNl
IGludGVybmFsIHsKIAogLy8gVXNlZCBpbiB0aGUgVmFsdWVzKCkgZnVuY3Rpb24gdG8gcHJvdmlk
ZSBwb2x5bW9ycGhpYyBjYXBhYmlsaXRpZXMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDE+Ci1jbGFz
cyBWYWx1ZUFycmF5MSB7Ci0gcHVibGljOgotICBleHBsaWNpdCBWYWx1ZUFycmF5MShUMSB2MSkg
OiB2MV8odjEpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFt
R2VuZXJhdG9yPFQ+KCkgY29uc3QgeyByZXR1cm4gVmFsdWVzSW4oJnYxXywgJnYxXyArIDEpOyB9
Ci0KLSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5z
dXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkxJiBvdGhlcik7Ci0K
LSAgY29uc3QgVDEgdjFfOwotfTsKLQotJHJhbmdlIGkgMi4ubgorJHJhbmdlIGkgMS4ubgogJGZv
ciBpIFtbCiAkcmFuZ2UgaiAxLi5pCiAKIHRlbXBsYXRlIDwkZm9yIGosIFtbdHlwZW5hbWUgVCRq
XV0+CiBjbGFzcyBWYWx1ZUFycmF5JGkgewogIHB1YmxpYzoKLSAgVmFsdWVBcnJheSRpKCRmb3Ig
aiwgW1tUJGogdiRqXV0pIDogJGZvciBqLCBbW3YkKGopXyh2JGopXV0ge30KKyAgJGlmIGk9PTEg
W1tleHBsaWNpdCBdXVZhbHVlQXJyYXkkaSgkZm9yIGosIFtbVCRqIHYkal1dKSA6ICRmb3Igaiwg
W1t2JChqKV8odiRqKV1dIHt9CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHskZm9y
IGosIFtbdiQoailfXV19OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHskZm9yIGosIFtbc3RhdGlj
X2Nhc3Q8VD4odiQoailfKV1dfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAK
QEAgLTExNSw3ICs5Niw3IEBAICRmb3IgaiBbWwogCiBdXQogCi0jaWYgR1RFU1RfSEFTX0NPTUJJ
TkUKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0g
RE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCiAvLwogLy8gR2VuZXJhdGVzIHZhbHVlcyBmcm9tIHRo
ZSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB2YWx1ZXMgcHJvZHVjZWQKQEAgLTEyOCw5ICsxMDksOSBA
QCAkcmFuZ2UgayAyLi5pCiAKIHRlbXBsYXRlIDwkZm9yIGosIFtbdHlwZW5hbWUgVCRqXV0+CiBj
bGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yJGkKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVy
YXRvckludGVyZmFjZTwgOjpzdGQ6OnRyMTo6dHVwbGU8JGZvciBqLCBbW1Qkal1dPiA+IHsKKyAg
ICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTwkZm9y
IGosIFtbVCRqXV0+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHIxOjp0dXBsZTwk
Zm9yIGosIFtbVCRqXV0+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPCRm
b3IgaiwgW1tUJGpdXT4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3Ik
aSgkZm9yIGosIFtbY29uc3QgUGFyYW1HZW5lcmF0b3I8VCRqPiYgZyRqXV0pCiAgICAgICA6ICRm
b3IgaiwgW1tnJChqKV8oZyRqKV1dIHt9CkBAIC0xODAsNyArMTYxLDcgQEAgJGZvciBrIFtbCiAg
ICAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29u
c3QgewogICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1
YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFs
dWVfOyB9CisgICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJl
dHVybiBjdXJyZW50X3ZhbHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29u
c3QgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAg
ICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUg
b3RoZXIKICAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBk
b3duY2FzdC4KQEAgLTIxMiw3ICsxOTMsNyBAQCAkZm9yIGsgW1sKIAogICAgIHZvaWQgQ29tcHV0
ZUN1cnJlbnRWYWx1ZSgpIHsKICAgICAgIGlmICghQXRFbmQoKSkKLSAgICAgICAgY3VycmVudF92
YWx1ZV8gPSBQYXJhbVR5cGUoJGZvciBqLCBbWypjdXJyZW50JChqKV9dXSk7CisgICAgICAgIGN1
cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJhbVR5cGUoJGZvciBqLCBbWypjdXJyZW50JChqKV9d
XSkpOwogICAgIH0KICAgICBib29sIEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCBy
ZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0
aGUKQEAgLTIzNyw3ICsyMTgsNyBAQCAkZm9yIGogW1sKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVy
YXRvcjxUJGo+OjppdGVyYXRvciBjdXJyZW50JChqKV87CiBdXQogCi0gICAgUGFyYW1UeXBlIGN1
cnJlbnRfdmFsdWVfOworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsK
ICAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IkaTo6SXRlcmF0b3IKIAog
ICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC0y
NjksOCArMjUwLDggQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEhvbGRlciRpIHsKIENhcnRlc2lh
blByb2R1Y3RIb2xkZXIkaSgkZm9yIGosIFtbY29uc3QgR2VuZXJhdG9yJGomIGckal1dKQogICAg
ICAgOiAkZm9yIGosIFtbZyQoailfKGckaildXSB7fQogICB0ZW1wbGF0ZSA8JGZvciBqLCBbW3R5
cGVuYW1lIFQkal1dPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnRyMTo6dHVw
bGU8JGZvciBqLCBbW1Qkal1dPiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRv
cjwgOjpzdGQ6OnRyMTo6dHVwbGU8JGZvciBqLCBbW1Qkal1dPiA+KAorICBvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4oKSBjb25zdCB7
CisgICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPCRmb3IgaiwgW1tU
JGpdXT4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IkaTwkZm9yIGos
IFtbVCRqXV0+KAogJGZvciBqLFtbCiAKQEAgLTI5MSwxMSArMjcyLDkgQEAgJGZvciBqIFtbCiAK
IF1dCiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKKyMgZW5kaWYgIC8vIEdURVNUX0hB
U19DT01CSU5FCiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRl
c3RpbmcKIAotI2VuZGlmICAvLyAgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQogI2VuZGlmICAvLyBH
VEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BBUkFNX1VUSUxfR0VORVJBVEVEX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVy
bmFsL2d0ZXN0LXBhcmFtLXV0aWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUv
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oCmluZGV4IDBjYmI1OGMyMWI3Yjg5Y2Q0
OGE4ZDFjNWNiNTIwZjMxMTM3NGNkZTIuLmQ2NGY2MjBjNGM2NzQzNDY3M2MwYTYxZTIzOTYwYjYx
NWMzNGU3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oCkBAIC0yNiwyOCAr
MjYsNDkgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCisKIAogLy8gVHlw
ZSBhbmQgZnVuY3Rpb24gdXRpbGl0aWVzIGZvciBpbXBsZW1lbnRpbmcgcGFyYW1ldGVyaXplZCB0
ZXN0cy4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdU
RVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9IXwogI2RlZmluZSBH
VEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BBUkFNX1VUSUxfSF8KIAorI2luY2x1
ZGUgPGN0eXBlLmg+CisKICNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRlIDxzZXQ+CiAjaW5j
bHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLS8vIHNjcmlwdHMvZnVzZV9ndGVz
dC5weSBkZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKLS8vICp1
bmNvbmRpdGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92
ZWQKLS8vIGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVz
dC1saW5rZWRfcHRyLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgot
Ci0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVz
dC1pbnRlcm5hbC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIu
aCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QtcHJpbnRlcnMuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgeworCisvLyBJbnB1dCB0
byBhIHBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lIGdlbmVyYXRvciwgZGVzY3JpYmluZyBhIHRlc3Qg
cGFyYW1ldGVyLgorLy8gQ29uc2lzdHMgb2YgdGhlIHBhcmFtZXRlciB2YWx1ZSBhbmQgdGhlIGlu
dGVnZXIgcGFyYW1ldGVyIGluZGV4LgordGVtcGxhdGUgPGNsYXNzIFBhcmFtVHlwZT4KK3N0cnVj
dCBUZXN0UGFyYW1JbmZvIHsKKyAgVGVzdFBhcmFtSW5mbyhjb25zdCBQYXJhbVR5cGUmIGFfcGFy
YW0sIHNpemVfdCBhbl9pbmRleCkgOgorICAgIHBhcmFtKGFfcGFyYW0pLAorICAgIGluZGV4KGFu
X2luZGV4KSB7fQorICBQYXJhbVR5cGUgcGFyYW07CisgIHNpemVfdCBpbmRleDsKK307CisKKy8v
IEEgYnVpbHRpbiBwYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSBnZW5lcmF0b3Igd2hpY2ggcmV0dXJu
cyB0aGUgcmVzdWx0IG9mCisvLyB0ZXN0aW5nOjpQcmludFRvU3RyaW5nLgorc3RydWN0IFByaW50
VG9TdHJpbmdQYXJhbU5hbWUgeworICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgorICBzdGQ6
OnN0cmluZyBvcGVyYXRvcigpKGNvbnN0IFRlc3RQYXJhbUluZm88UGFyYW1UeXBlPiYgaW5mbykg
Y29uc3QgeworICAgIHJldHVybiBQcmludFRvU3RyaW5nKGluZm8ucGFyYW0pOworICB9Cit9Owor
CiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERP
IE5PVCBVU0UgSU4gVVNFUiBDT0RFLgpAQCAtNTcsNyArNzgsNyBAQCBuYW1lc3BhY2UgaW50ZXJu
YWwgewogLy8gVEVTVF9QIG1hY3JvIGlzIHVzZWQgdG8gZGVmaW5lIHR3byB0ZXN0cyB3aXRoIHRo
ZSBzYW1lIG5hbWUKIC8vIGJ1dCBpbiBkaWZmZXJlbnQgbmFtZXNwYWNlcy4KIEdURVNUX0FQSV8g
dm9pZCBSZXBvcnRJbnZhbGlkVGVzdENhc2VUeXBlKGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24pOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWU+IGNs
YXNzIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlOwogdGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFzcyBQ
YXJhbUdlbmVyYXRvcjsKQEAgLTE3MSw3ICsxOTIsNyBAQCBjbGFzcyBQYXJhbUdlbmVyYXRvciB7
CiAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKGltcGxfLT5FbmQoKSk7
IH0KIAogIHByaXZhdGU6Ci0gIDo6dGVzdGluZzo6aW50ZXJuYWw6OmxpbmtlZF9wdHI8Y29uc3Qg
UGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4gPiBpbXBsXzsKKyAgbGlua2VkX3B0cjxjb25zdCBQ
YXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiA+IGltcGxfOwogfTsKIAogLy8gR2VuZXJhdGVzIHZh
bHVlcyBmcm9tIGEgcmFuZ2Ugb2YgdHdvIGNvbXBhcmFibGUgdmFsdWVzLiBDYW4gYmUgdXNlZCB0
bwpAQCAtMjA1LDcgKzIyNiw3IEBAIGNsYXNzIFJhbmdlR2VuZXJhdG9yIDogcHVibGljIFBhcmFt
R2VuZXJhdG9ySW50ZXJmYWNlPFQ+IHsKICAgICAgIHJldHVybiBiYXNlXzsKICAgICB9CiAgICAg
dmlydHVhbCB2b2lkIEFkdmFuY2UoKSB7Ci0gICAgICB2YWx1ZV8gPSB2YWx1ZV8gKyBzdGVwXzsK
KyAgICAgIHZhbHVlXyA9IHN0YXRpY19jYXN0PFQ+KHZhbHVlXyArIHN0ZXBfKTsKICAgICAgIGlu
ZGV4XysrOwogICAgIH0KICAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8VD4qIENs
b25lKCkgY29uc3QgewpAQCAtMjQyLDcgKzI2Myw3IEBAIGNsYXNzIFJhbmdlR2VuZXJhdG9yIDog
cHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUJiBlbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgSW5jcmVtZW50VCYgc3RlcCkgewogICAgIGludCBlbmRfaW5kZXggPSAwOwotICAgIGZv
ciAoVCBpID0gYmVnaW47IGkgPCBlbmQ7IGkgPSBpICsgc3RlcCkKKyAgICBmb3IgKFQgaSA9IGJl
Z2luOyBpIDwgZW5kOyBpID0gc3RhdGljX2Nhc3Q8VD4oaSArIHN0ZXApKQogICAgICAgZW5kX2lu
ZGV4Kys7CiAgICAgcmV0dXJuIGVuZF9pbmRleDsKICAgfQpAQCAtMjg1LDcgKzMwNiw3IEBAIGNs
YXNzIFZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvciA6IHB1YmxpYyBQYXJhbUdlbmVyYXRv
ckludGVyZmFjZTxUPiB7CiAgICBwdWJsaWM6CiAgICAgSXRlcmF0b3IoY29uc3QgUGFyYW1HZW5l
cmF0b3JJbnRlcmZhY2U8VD4qIGJhc2UsCiAgICAgICAgICAgICAgdHlwZW5hbWUgQ29udGFpbmVy
VHlwZTo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3IpCi0gICAgICAgIDogIGJhc2VfKGJhc2UpLCBp
dGVyYXRvcl8oaXRlcmF0b3IpIHt9CisgICAgICAgIDogYmFzZV8oYmFzZSksIGl0ZXJhdG9yXyhp
dGVyYXRvcikge30KICAgICB2aXJ0dWFsIH5JdGVyYXRvcigpIHt9CiAKICAgICB2aXJ0dWFsIGNv
bnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+KiBCYXNlR2VuZXJhdG9yKCkgY29uc3QgewpA
QCAtMzQ0LDYgKzM2NSwzNyBAQCBjbGFzcyBWYWx1ZXNJbkl0ZXJhdG9yUmFuZ2VHZW5lcmF0b3Ig
OiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4gewogICBjb25zdCBDb250YWluZXJU
eXBlIGNvbnRhaW5lcl87CiB9OyAgLy8gY2xhc3MgVmFsdWVzSW5JdGVyYXRvclJhbmdlR2VuZXJh
dG9yCiAKKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENP
REUuCisvLworLy8gRGVmYXVsdCBwYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSBnZW5lcmF0b3IsIHJl
dHVybnMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUKKy8vIGludGVnZXIgdGVzdCBwYXJhbWV0ZXIg
aW5kZXguCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgorc3RkOjpzdHJpbmcgRGVmYXVsdFBh
cmFtTmFtZShjb25zdCBUZXN0UGFyYW1JbmZvPFBhcmFtVHlwZT4mIGluZm8pIHsKKyAgTWVzc2Fn
ZSBuYW1lX3N0cmVhbTsKKyAgbmFtZV9zdHJlYW0gPDwgaW5mby5pbmRleDsKKyAgcmV0dXJuIG5h
bWVfc3RyZWFtLkdldFN0cmluZygpOworfQorCisvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAt
IERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgorLy8KKy8vIFBhcmFtZXRlcml6ZWQgdGVzdCBuYW1l
IG92ZXJsb2FkIGhlbHBlcnMsIHdoaWNoIGhlbHAgdGhlCisvLyBJTlNUQU5USUFURV9URVNUX0NB
U0VfUCBtYWNybyBjaG9vc2UgYmV0d2VlbiB0aGUgZGVmYXVsdCBwYXJhbWV0ZXJpemVkCisvLyB0
ZXN0IG5hbWUgZ2VuZXJhdG9yIGFuZCB1c2VyIHBhcmFtIG5hbWUgZ2VuZXJhdG9yLgordGVtcGxh
dGUgPGNsYXNzIFBhcmFtVHlwZSwgY2xhc3MgUGFyYW1OYW1lR2VuRnVuY3Rvcj4KK1BhcmFtTmFt
ZUdlbkZ1bmN0b3IgR2V0UGFyYW1OYW1lR2VuKFBhcmFtTmFtZUdlbkZ1bmN0b3IgZnVuYykgewor
ICByZXR1cm4gZnVuYzsKK30KKwordGVtcGxhdGUgPGNsYXNzIFBhcmFtVHlwZT4KK3N0cnVjdCBQ
YXJhbU5hbWVHZW5GdW5jIHsKKyAgdHlwZWRlZiBzdGQ6OnN0cmluZyBUeXBlKGNvbnN0IFRlc3RQ
YXJhbUluZm88UGFyYW1UeXBlPiYpOworfTsKKwordGVtcGxhdGUgPGNsYXNzIFBhcmFtVHlwZT4K
K3R5cGVuYW1lIFBhcmFtTmFtZUdlbkZ1bmM8UGFyYW1UeXBlPjo6VHlwZSAqR2V0UGFyYW1OYW1l
R2VuKCkgeworICByZXR1cm4gRGVmYXVsdFBhcmFtTmFtZTsKK30KKwogLy8gSU5URVJOQUwgSU1Q
TEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KIC8vCiAvLyBTdG9yZXMgYSBw
YXJhbWV0ZXIgdmFsdWUgYW5kIGxhdGVyIGNyZWF0ZXMgdGVzdHMgcGFyYW1ldGVyaXplZCB3aXRo
IHRoYXQKQEAgLTQxNiw3ICs0NjgsNyBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZv
QmFzZSB7CiAgIHZpcnR1YWwgflBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9CYXNlKCkge30KIAog
ICAvLyBCYXNlIHBhcnQgb2YgdGVzdCBjYXNlIG5hbWUgZm9yIGRpc3BsYXkgcHVycG9zZXMuCi0g
IHZpcnR1YWwgY29uc3QgU3RyaW5nJiBHZXRUZXN0Q2FzZU5hbWUoKSBjb25zdCA9IDA7CisgIHZp
cnR1YWwgY29uc3Qgc3RkOjpzdHJpbmcmIEdldFRlc3RDYXNlTmFtZSgpIGNvbnN0ID0gMDsKICAg
Ly8gVGVzdCBjYXNlIGlkIHRvIHZlcmlmeSBpZGVudGl0eS4KICAgdmlydHVhbCBUeXBlSWQgR2V0
VGVzdENhc2VUeXBlSWQoKSBjb25zdCA9IDA7CiAgIC8vIFVuaXRUZXN0IGNsYXNzIGludm9rZXMg
dGhpcyBtZXRob2QgdG8gcmVnaXN0ZXIgdGVzdHMgaW4gdGhpcwpAQCAtNDQ4LDEyICs1MDAsMTQg
QEAgY2xhc3MgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbyA6IHB1YmxpYyBQYXJhbWV0ZXJpemVk
VGVzdENhc2VJbmZvQmFzZSB7CiAgIHR5cGVkZWYgdHlwZW5hbWUgVGVzdENhc2U6OlBhcmFtVHlw
ZSBQYXJhbVR5cGU7CiAgIC8vIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIGluc3RhbmNlIG9m
IGFwcHJvcHJpYXRlIGdlbmVyYXRvciB0eXBlLgogICB0eXBlZGVmIFBhcmFtR2VuZXJhdG9yPFBh
cmFtVHlwZT4oR2VuZXJhdG9yQ3JlYXRpb25GdW5jKSgpOworICB0eXBlZGVmIHR5cGVuYW1lIFBh
cmFtTmFtZUdlbkZ1bmM8UGFyYW1UeXBlPjo6VHlwZSBQYXJhbU5hbWVHZW5lcmF0b3JGdW5jOwog
Ci0gIGV4cGxpY2l0IFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8oY29uc3QgY2hhciogbmFtZSkK
LSAgICAgIDogdGVzdF9jYXNlX25hbWVfKG5hbWUpIHt9CisgIGV4cGxpY2l0IFBhcmFtZXRlcml6
ZWRUZXN0Q2FzZUluZm8oCisgICAgICBjb25zdCBjaGFyKiBuYW1lLCBDb2RlTG9jYXRpb24gY29k
ZV9sb2NhdGlvbikKKyAgICAgIDogdGVzdF9jYXNlX25hbWVfKG5hbWUpLCBjb2RlX2xvY2F0aW9u
Xyhjb2RlX2xvY2F0aW9uKSB7fQogCiAgIC8vIFRlc3QgY2FzZSBiYXNlIG5hbWUgZm9yIGRpc3Bs
YXkgcHVycG9zZXMuCi0gIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBHZXRUZXN0Q2FzZU5hbWUoKSBj
b25zdCB7IHJldHVybiB0ZXN0X2Nhc2VfbmFtZV87IH0KKyAgdmlydHVhbCBjb25zdCBzdGQ6OnN0
cmluZyYgR2V0VGVzdENhc2VOYW1lKCkgY29uc3QgeyByZXR1cm4gdGVzdF9jYXNlX25hbWVfOyB9
CiAgIC8vIFRlc3QgY2FzZSBpZCB0byB2ZXJpZnkgaWRlbnRpdHkuCiAgIHZpcnR1YWwgVHlwZUlk
IEdldFRlc3RDYXNlVHlwZUlkKCkgY29uc3QgeyByZXR1cm4gR2V0VHlwZUlkPFRlc3RDYXNlPigp
OyB9CiAgIC8vIFRFU1RfUCBtYWNybyB1c2VzIEFkZFRlc3RQYXR0ZXJuKCkgdG8gcmVjb3JkIGlu
Zm9ybWF0aW9uCkBAIC00NzEsMTEgKzUyNSwxMiBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENh
c2VJbmZvIDogcHVibGljIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9CYXNlIHsKICAgfQogICAv
LyBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBtYWNybyB1c2VzIEFkZEdlbmVyYXRvcigpIHRvIHJl
Y29yZCBpbmZvcm1hdGlvbgogICAvLyBhYm91dCBhIGdlbmVyYXRvci4KLSAgaW50IEFkZFRlc3RD
YXNlSW5zdGFudGlhdGlvbihjb25zdCBjaGFyKiBpbnN0YW50aWF0aW9uX25hbWUsCisgIGludCBB
ZGRUZXN0Q2FzZUluc3RhbnRpYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIGluc3RhbnRpYXRpb25f
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3JDcmVhdGlvbkZ1
bmMqIGZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLyog
ZmlsZSAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgLyogbGluZSAqLykg
ewotICAgIGluc3RhbnRpYXRpb25zXy5wdXNoX2JhY2soOjpzdGQ6Om1ha2VfcGFpcihpbnN0YW50
aWF0aW9uX25hbWUsIGZ1bmMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJh
bU5hbWVHZW5lcmF0b3JGdW5jKiBuYW1lX2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpIHsKKyAgICBpbnN0YW50aWF0aW9uc18u
cHVzaF9iYWNrKAorICAgICAgICBJbnN0YW50aWF0aW9uSW5mbyhpbnN0YW50aWF0aW9uX25hbWUs
IGZ1bmMsIG5hbWVfZnVuYywgZmlsZSwgbGluZSkpOwogICAgIHJldHVybiAwOyAgLy8gUmV0dXJu
IHZhbHVlIHVzZWQgb25seSB0byBydW4gdGhpcyBtZXRob2QgaW4gbmFtZXNwYWNlIHNjb3BlLgog
ICB9CiAgIC8vIFVuaXRUZXN0IGNsYXNzIGludm9rZXMgdGhpcyBtZXRob2QgdG8gcmVnaXN0ZXIg
dGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UKQEAgLTQ5MCwyNiArNTQ1LDQ1IEBAIGNsYXNzIFBhcmFt
ZXRlcml6ZWRUZXN0Q2FzZUluZm8gOiBwdWJsaWMgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jh
c2UgewogICAgICAgZm9yICh0eXBlbmFtZSBJbnN0YW50aWF0aW9uQ29udGFpbmVyOjppdGVyYXRv
ciBnZW5faXQgPQogICAgICAgICAgICAgICAgaW5zdGFudGlhdGlvbnNfLmJlZ2luKCk7IGdlbl9p
dCAhPSBpbnN0YW50aWF0aW9uc18uZW5kKCk7CiAgICAgICAgICAgICAgICArK2dlbl9pdCkgewot
ICAgICAgICBjb25zdCBTdHJpbmcmIGluc3RhbnRpYXRpb25fbmFtZSA9IGdlbl9pdC0+Zmlyc3Q7
Ci0gICAgICAgIFBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT4gZ2VuZXJhdG9yKCgqZ2VuX2l0LT5z
ZWNvbmQpKCkpOworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5zdGFudGlhdGlvbl9uYW1l
ID0gZ2VuX2l0LT5uYW1lOworICAgICAgICBQYXJhbUdlbmVyYXRvcjxQYXJhbVR5cGU+IGdlbmVy
YXRvcigoKmdlbl9pdC0+Z2VuZXJhdG9yKSgpKTsKKyAgICAgICAgUGFyYW1OYW1lR2VuZXJhdG9y
RnVuYyogbmFtZV9mdW5jID0gZ2VuX2l0LT5uYW1lX2Z1bmM7CisgICAgICAgIGNvbnN0IGNoYXIq
IGZpbGUgPSBnZW5faXQtPmZpbGU7CisgICAgICAgIGludCBsaW5lID0gZ2VuX2l0LT5saW5lOwog
Ci0gICAgICAgIE1lc3NhZ2UgdGVzdF9jYXNlX25hbWVfc3RyZWFtOworICAgICAgICBzdGQ6OnN0
cmluZyB0ZXN0X2Nhc2VfbmFtZTsKICAgICAgICAgaWYgKCAhaW5zdGFudGlhdGlvbl9uYW1lLmVt
cHR5KCkgKQotICAgICAgICAgIHRlc3RfY2FzZV9uYW1lX3N0cmVhbSA8PCBpbnN0YW50aWF0aW9u
X25hbWUuY19zdHIoKSA8PCAiLyI7Ci0gICAgICAgIHRlc3RfY2FzZV9uYW1lX3N0cmVhbSA8PCB0
ZXN0X2luZm8tPnRlc3RfY2FzZV9iYXNlX25hbWUuY19zdHIoKTsKKyAgICAgICAgICB0ZXN0X2Nh
c2VfbmFtZSA9IGluc3RhbnRpYXRpb25fbmFtZSArICIvIjsKKyAgICAgICAgdGVzdF9jYXNlX25h
bWUgKz0gdGVzdF9pbmZvLT50ZXN0X2Nhc2VfYmFzZV9uYW1lOwogCi0gICAgICAgIGludCBpID0g
MDsKKyAgICAgICAgc2l6ZV90IGkgPSAwOworICAgICAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4g
dGVzdF9wYXJhbV9uYW1lczsKICAgICAgICAgZm9yICh0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxQ
YXJhbVR5cGU+OjppdGVyYXRvciBwYXJhbV9pdCA9CiAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5iZWdpbigpOwogICAgICAgICAgICAgIHBhcmFtX2l0ICE9IGdlbmVyYXRvci5lbmQoKTsgKytw
YXJhbV9pdCwgKytpKSB7CiAgICAgICAgICAgTWVzc2FnZSB0ZXN0X25hbWVfc3RyZWFtOwotICAg
ICAgICAgIHRlc3RfbmFtZV9zdHJlYW0gPDwgdGVzdF9pbmZvLT50ZXN0X2Jhc2VfbmFtZS5jX3N0
cigpIDw8ICIvIiA8PCBpOwotICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok1ha2VBbmRS
ZWdpc3RlclRlc3RJbmZvKAotICAgICAgICAgICAgICB0ZXN0X2Nhc2VfbmFtZV9zdHJlYW0uR2V0
U3RyaW5nKCkuY19zdHIoKSwKKworICAgICAgICAgIHN0ZDo6c3RyaW5nIHBhcmFtX25hbWUgPSBu
YW1lX2Z1bmMoCisgICAgICAgICAgICAgIFRlc3RQYXJhbUluZm88UGFyYW1UeXBlPigqcGFyYW1f
aXQsIGkpKTsKKworICAgICAgICAgIEdURVNUX0NIRUNLXyhJc1ZhbGlkUGFyYW1OYW1lKHBhcmFt
X25hbWUpKQorICAgICAgICAgICAgICA8PCAiUGFyYW1ldGVyaXplZCB0ZXN0IG5hbWUgJyIgPDwg
cGFyYW1fbmFtZQorICAgICAgICAgICAgICA8PCAiJyBpcyBpbnZhbGlkLCBpbiAiIDw8IGZpbGUK
KyAgICAgICAgICAgICAgPDwgIiBsaW5lICIgPDwgbGluZSA8PCBzdGQ6OmVuZGw7CisKKyAgICAg
ICAgICBHVEVTVF9DSEVDS18odGVzdF9wYXJhbV9uYW1lcy5jb3VudChwYXJhbV9uYW1lKSA9PSAw
KQorICAgICAgICAgICAgICA8PCAiRHVwbGljYXRlIHBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lICci
IDw8IHBhcmFtX25hbWUKKyAgICAgICAgICAgICAgPDwgIicsIGluICIgPDwgZmlsZSA8PCAiIGxp
bmUgIiA8PCBsaW5lIDw8IHN0ZDo6ZW5kbDsKKworICAgICAgICAgIHRlc3RfcGFyYW1fbmFtZXMu
aW5zZXJ0KHBhcmFtX25hbWUpOworCisgICAgICAgICAgdGVzdF9uYW1lX3N0cmVhbSA8PCB0ZXN0
X2luZm8tPnRlc3RfYmFzZV9uYW1lIDw8ICIvIiA8PCBwYXJhbV9uYW1lOworICAgICAgICAgIE1h
a2VBbmRSZWdpc3RlclRlc3RJbmZvKAorICAgICAgICAgICAgICB0ZXN0X2Nhc2VfbmFtZS5jX3N0
cigpLAogICAgICAgICAgICAgICB0ZXN0X25hbWVfc3RyZWFtLkdldFN0cmluZygpLmNfc3RyKCks
Ci0gICAgICAgICAgICAgICIiLCAgLy8gdGVzdF9jYXNlX2NvbW1lbnQKLSAgICAgICAgICAgICAg
IiIsICAvLyBjb21tZW50OyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBwcm92aWRlIHBhcmFtZXRl
ciB2YWx1ZQotICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcHJlc2VudGF0aW9uLgorICAgICAgICAgICAgICBOVUxMLCAgLy8gTm8gdHlwZSBw
YXJhbWV0ZXIuCisgICAgICAgICAgICAgIFByaW50VG9TdHJpbmcoKnBhcmFtX2l0KS5jX3N0cigp
LAorICAgICAgICAgICAgICBjb2RlX2xvY2F0aW9uXywKICAgICAgICAgICAgICAgR2V0VGVzdENh
c2VUeXBlSWQoKSwKICAgICAgICAgICAgICAgVGVzdENhc2U6OlNldFVwVGVzdENhc2UsCiAgICAg
ICAgICAgICAgIFRlc3RDYXNlOjpUZWFyRG93blRlc3RDYXNlLApAQCAtNTMwLDE3ICs2MDQsNTAg
QEAgY2xhc3MgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbyA6IHB1YmxpYyBQYXJhbWV0ZXJpemVk
VGVzdENhc2VJbmZvQmFzZSB7CiAgICAgICAgIHRlc3RfYmFzZV9uYW1lKGFfdGVzdF9iYXNlX25h
bWUpLAogICAgICAgICB0ZXN0X21ldGFfZmFjdG9yeShhX3Rlc3RfbWV0YV9mYWN0b3J5KSB7fQog
Ci0gICAgY29uc3QgU3RyaW5nIHRlc3RfY2FzZV9iYXNlX25hbWU7Ci0gICAgY29uc3QgU3RyaW5n
IHRlc3RfYmFzZV9uYW1lOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RfY2FzZV9iYXNlX25h
bWU7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdF9iYXNlX25hbWU7CiAgICAgY29uc3Qgc2Nv
cGVkX3B0cjxUZXN0TWV0YUZhY3RvcnlCYXNlPFBhcmFtVHlwZT4gPiB0ZXN0X21ldGFfZmFjdG9y
eTsKICAgfTsKICAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGxpbmtlZF9wdHI8VGVzdEluZm8+ID4g
VGVzdEluZm9Db250YWluZXI7Ci0gIC8vIEtlZXBzIHBhaXJzIG9mIDxJbnN0YW50aWF0aW9uIG5h
bWUsIFNlcXVlbmNlIGdlbmVyYXRvciBjcmVhdGlvbiBmdW5jdGlvbj4KLSAgLy8gcmVjZWl2ZWQg
ZnJvbSBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBtYWNyb3MuCi0gIHR5cGVkZWYgOjpzdGQ6OnZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBHZW5lcmF0b3JDcmVhdGlvbkZ1bmMqPiA+Ci0gICAgICBJ
bnN0YW50aWF0aW9uQ29udGFpbmVyOworICAvLyBSZWNvcmRzIGRhdGEgcmVjZWl2ZWQgZnJvbSBJ
TlNUQU5USUFURV9URVNUX0NBU0VfUCBtYWNyb3M6CisgIC8vICA8SW5zdGFudGlhdGlvbiBuYW1l
LCBTZXF1ZW5jZSBnZW5lcmF0b3IgY3JlYXRpb24gZnVuY3Rpb24sCisgIC8vICAgICBOYW1lIGdl
bmVyYXRvciBmdW5jdGlvbiwgU291cmNlIGZpbGUsIFNvdXJjZSBsaW5lPgorICBzdHJ1Y3QgSW5z
dGFudGlhdGlvbkluZm8geworICAgICAgSW5zdGFudGlhdGlvbkluZm8oY29uc3Qgc3RkOjpzdHJp
bmcgJm5hbWVfaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3JDcmVhdGlvbkZ1
bmMqIGdlbmVyYXRvcl9pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtTmFtZUdlbmVy
YXRvckZ1bmMqIG5hbWVfZnVuY19pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGZpbGVfaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZV9pbikKKyAgICAg
ICAgICA6IG5hbWUobmFtZV9pbiksCisgICAgICAgICAgICBnZW5lcmF0b3IoZ2VuZXJhdG9yX2lu
KSwKKyAgICAgICAgICAgIG5hbWVfZnVuYyhuYW1lX2Z1bmNfaW4pLAorICAgICAgICAgICAgZmls
ZShmaWxlX2luKSwKKyAgICAgICAgICAgIGxpbmUobGluZV9pbikge30KKworICAgICAgc3RkOjpz
dHJpbmcgbmFtZTsKKyAgICAgIEdlbmVyYXRvckNyZWF0aW9uRnVuYyogZ2VuZXJhdG9yOworICAg
ICAgUGFyYW1OYW1lR2VuZXJhdG9yRnVuYyogbmFtZV9mdW5jOworICAgICAgY29uc3QgY2hhciog
ZmlsZTsKKyAgICAgIGludCBsaW5lOworICB9OworICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8SW5z
dGFudGlhdGlvbkluZm8+IEluc3RhbnRpYXRpb25Db250YWluZXI7CiAKLSAgY29uc3QgU3RyaW5n
IHRlc3RfY2FzZV9uYW1lXzsKKyAgc3RhdGljIGJvb2wgSXNWYWxpZFBhcmFtTmFtZShjb25zdCBz
dGQ6OnN0cmluZyYgbmFtZSkgeworICAgIC8vIENoZWNrIGZvciBlbXB0eSBzdHJpbmcKKyAgICBp
ZiAobmFtZS5lbXB0eSgpKQorICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQ2hlY2sgZm9y
IGludmFsaWQgY2hhcmFjdGVycworICAgIGZvciAoc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBpbmRl
eCA9IDA7IGluZGV4IDwgbmFtZS5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgIGlmICghaXNhbG51
bShuYW1lW2luZGV4XSkgJiYgbmFtZVtpbmRleF0gIT0gJ18nKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7CisgIH0KKworICBjb25zdCBzdGQ6OnN0cmlu
ZyB0ZXN0X2Nhc2VfbmFtZV87CisgIENvZGVMb2NhdGlvbiBjb2RlX2xvY2F0aW9uXzsKICAgVGVz
dEluZm9Db250YWluZXIgdGVzdHNfOwogICBJbnN0YW50aWF0aW9uQ29udGFpbmVyIGluc3RhbnRp
YXRpb25zXzsKIApAQCAtNTY4LDggKzY3NSw3IEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2Fz
ZVJlZ2lzdHJ5IHsKICAgdGVtcGxhdGUgPGNsYXNzIFRlc3RDYXNlPgogICBQYXJhbWV0ZXJpemVk
VGVzdENhc2VJbmZvPFRlc3RDYXNlPiogR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVyKAogICAgICAg
Y29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAgICBjb25zdCBjaGFyKiBmaWxlLAotICAg
ICAgaW50IGxpbmUpIHsKKyAgICAgIENvZGVMb2NhdGlvbiBjb2RlX2xvY2F0aW9uKSB7CiAgICAg
UGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbzxUZXN0Q2FzZT4qIHR5cGVkX3Rlc3RfaW5mbyA9IE5V
TEw7CiAgICAgZm9yIChUZXN0Q2FzZUluZm9Db250YWluZXI6Oml0ZXJhdG9yIGl0ID0gdGVzdF9j
YXNlX2luZm9zXy5iZWdpbigpOwogICAgICAgICAgaXQgIT0gdGVzdF9jYXNlX2luZm9zXy5lbmQo
KTsgKytpdCkgewpAQCAtNTc4LDggKzY4NCw4IEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2Fz
ZVJlZ2lzdHJ5IHsKICAgICAgICAgICAvLyBDb21wbGFpbiBhYm91dCBpbmNvcnJlY3QgdXNhZ2Ug
b2YgR29vZ2xlIFRlc3QgZmFjaWxpdGllcwogICAgICAgICAgIC8vIGFuZCB0ZXJtaW5hdGUgdGhl
IHByb2dyYW0gc2luY2Ugd2UgY2Fubm90IGd1YXJhbnR5IGNvcnJlY3QKICAgICAgICAgICAvLyB0
ZXN0IGNhc2Ugc2V0dXAgYW5kIHRlYXItZG93biBpbiB0aGlzIGNhc2UuCi0gICAgICAgICAgUmVw
b3J0SW52YWxpZFRlc3RDYXNlVHlwZSh0ZXN0X2Nhc2VfbmFtZSwgIGZpbGUsIGxpbmUpOwotICAg
ICAgICAgIGFib3J0KCk7CisgICAgICAgICAgUmVwb3J0SW52YWxpZFRlc3RDYXNlVHlwZSh0ZXN0
X2Nhc2VfbmFtZSwgY29kZV9sb2NhdGlvbik7CisgICAgICAgICAgcG9zaXg6OkFib3J0KCk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBhcmUgc3VyZSB0
aGF0IHRoZSBvYmplY3Qgd2UgZm91bmQgaXMgb2YgdGhlIHNhbWUKICAgICAgICAgICAvLyB0eXBl
IHdlIGFyZSBsb29raW5nIGZvciwgc28gd2UgZG93bmNhc3QgaXQgdG8gdGhhdCB0eXBlCkBAIC01
OTEsNyArNjk3LDggQEAgY2xhc3MgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgewogICAg
ICAgfQogICAgIH0KICAgICBpZiAodHlwZWRfdGVzdF9pbmZvID09IE5VTEwpIHsKLSAgICAgIHR5
cGVkX3Rlc3RfaW5mbyA9IG5ldyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvPFRlc3RDYXNlPih0
ZXN0X2Nhc2VfbmFtZSk7CisgICAgICB0eXBlZF90ZXN0X2luZm8gPSBuZXcgUGFyYW1ldGVyaXpl
ZFRlc3RDYXNlSW5mbzxUZXN0Q2FzZT4oCisgICAgICAgICAgdGVzdF9jYXNlX25hbWUsIGNvZGVf
bG9jYXRpb24pOwogICAgICAgdGVzdF9jYXNlX2luZm9zXy5wdXNoX2JhY2sodHlwZWRfdGVzdF9p
bmZvKTsKICAgICB9CiAgICAgcmV0dXJuIHR5cGVkX3Rlc3RfaW5mbzsKQEAgLTYxNCw2ICs3MjEs
NCBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSB7CiB9ICAvLyBuYW1lc3Bh
Y2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAKLSNlbmRpZiAgLy8gIEdURVNU
X0hBU19QQVJBTV9URVNUCi0KICNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5B
TF9HVEVTVF9QQVJBTV9VVElMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LWFyY2guaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mODM3MDBlMDZkOThjMzZmNjQ4NzI5MWMzZjkzMTgwN2FmMzUzZjc0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC1wb3J0LWFyY2guaApAQCAtMCwwICsxLDEwMCBAQAorLy8gQ29weXJpZ2h0IDIwMTUs
IEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIFRoZSBHb29nbGUgQysrIFRlc3Rpbmcg
YW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vCisvLyBUaGlzIGhlYWRlciBm
aWxlIGRlZmluZXMgdGhlIEdURVNUX09TXyogbWFjcm8uCisvLyBJdCBpcyBzZXBhcmF0ZSBmcm9t
IGd0ZXN0LXBvcnQuaCBzbyB0aGF0IGN1c3RvbS9ndGVzdC1wb3J0LmggY2FuIGluY2x1ZGUgaXQu
CisKKyNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QT1JUX0FSQ0hf
SF8KKyNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QT1JUX0FSQ0hf
SF8KKworLy8gRGV0ZXJtaW5lcyB0aGUgcGxhdGZvcm0gb24gd2hpY2ggR29vZ2xlIFRlc3QgaXMg
Y29tcGlsZWQuCisjaWZkZWYgX19DWUdXSU5fXworIyBkZWZpbmUgR1RFU1RfT1NfQ1lHV0lOIDEK
KyNlbGlmIGRlZmluZWQgX19TWU1CSUFOMzJfXworIyBkZWZpbmUgR1RFU1RfT1NfU1lNQklBTiAx
CisjZWxpZiBkZWZpbmVkIF9XSU4zMgorIyBkZWZpbmUgR1RFU1RfT1NfV0lORE9XUyAxCisjIGlm
ZGVmIF9XSU4zMl9XQ0UKKyMgIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTX01PQklMRSAxCisjIGVs
aWYgZGVmaW5lZChfX01JTkdXX18pIHx8IGRlZmluZWQoX19NSU5HVzMyX18pCisjICBkZWZpbmUg
R1RFU1RfT1NfV0lORE9XU19NSU5HVyAxCisjIGVsaWYgZGVmaW5lZChXSU5BUElfRkFNSUxZKQor
IyAgaW5jbHVkZSA8d2luYXBpZmFtaWx5Lmg+CisjICBpZiBXSU5BUElfRkFNSUxZX1BBUlRJVElP
TihXSU5BUElfUEFSVElUSU9OX0RFU0tUT1ApCisjICAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1Nf
REVTS1RPUCAxCisjICBlbGlmIFdJTkFQSV9GQU1JTFlfUEFSVElUSU9OKFdJTkFQSV9QQVJUSVRJ
T05fUEhPTkVfQVBQKQorIyAgIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTX1BIT05FIDEKKyMgIGVs
aWYgV0lOQVBJX0ZBTUlMWV9QQVJUSVRJT04oV0lOQVBJX1BBUlRJVElPTl9BUFApCisjICAgZGVm
aW5lIEdURVNUX09TX1dJTkRPV1NfUlQgMQorIyAgZWxpZiBXSU5BUElfRkFNSUxZX1BBUlRJVElP
TihXSU5BUElfUEFSVElUSU9OX1RWX1RJVExFKQorIyAgIGRlZmluZSBHVEVTVF9PU19XSU5ET1dT
X1BIT05FIDEKKyMgICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19UVl9USVRMRSAxCisjICBlbHNl
CisgICAgLy8gV0lOQVBJX0ZBTUlMWSBkZWZpbmVkIGJ1dCBubyBrbm93biBwYXJ0aXRpb24gbWF0
Y2hlZC4KKyAgICAvLyBEZWZhdWx0IHRvIGRlc2t0b3AuCisjICAgZGVmaW5lIEdURVNUX09TX1dJ
TkRPV1NfREVTS1RPUCAxCisjICBlbmRpZgorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfT1NfV0lO
RE9XU19ERVNLVE9QIDEKKyMgZW5kaWYgIC8vIF9XSU4zMl9XQ0UKKyNlbGlmIGRlZmluZWQgX19B
UFBMRV9fCisjIGRlZmluZSBHVEVTVF9PU19NQUMgMQorIyBpZiBUQVJHRVRfT1NfSVBIT05FCisj
ICBkZWZpbmUgR1RFU1RfT1NfSU9TIDEKKyMgZW5kaWYKKyNlbGlmIGRlZmluZWQgX19GcmVlQlNE
X18KKyMgZGVmaW5lIEdURVNUX09TX0ZSRUVCU0QgMQorI2VsaWYgZGVmaW5lZCBfX0Z1Y2hzaWFf
XworIyBkZWZpbmUgR1RFU1RfT1NfRlVDSFNJQSAxCisjZWxpZiBkZWZpbmVkIF9fbGludXhfXwor
IyBkZWZpbmUgR1RFU1RfT1NfTElOVVggMQorIyBpZiBkZWZpbmVkIF9fQU5EUk9JRF9fCisjICBk
ZWZpbmUgR1RFU1RfT1NfTElOVVhfQU5EUk9JRCAxCisjIGVuZGlmCisjZWxpZiBkZWZpbmVkIF9f
TVZTX18KKyMgZGVmaW5lIEdURVNUX09TX1pPUyAxCisjZWxpZiBkZWZpbmVkKF9fc3VuKSAmJiBk
ZWZpbmVkKF9fU1ZSNCkKKyMgZGVmaW5lIEdURVNUX09TX1NPTEFSSVMgMQorI2VsaWYgZGVmaW5l
ZChfQUlYKQorIyBkZWZpbmUgR1RFU1RfT1NfQUlYIDEKKyNlbGlmIGRlZmluZWQoX19ocHV4KQor
IyBkZWZpbmUgR1RFU1RfT1NfSFBVWCAxCisjZWxpZiBkZWZpbmVkIF9fbmF0aXZlX2NsaWVudF9f
CisjIGRlZmluZSBHVEVTVF9PU19OQUNMIDEKKyNlbGlmIGRlZmluZWQgX19OZXRCU0RfXworIyBk
ZWZpbmUgR1RFU1RfT1NfTkVUQlNEIDEKKyNlbGlmIGRlZmluZWQgX19PcGVuQlNEX18KKyMgZGVm
aW5lIEdURVNUX09TX09QRU5CU0QgMQorI2VsaWYgZGVmaW5lZCBfX1FOWF9fCisjIGRlZmluZSBH
VEVTVF9PU19RTlggMQorI2VuZGlmICAvLyBfX0NZR1dJTl9fCisKKyNlbmRpZiAgLy8gR1RFU1Rf
SU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QT1JUX0FSQ0hfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5o
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1w
b3J0LmgKaW5kZXggZjhiZTgwOTI2Zjg5ODdkM2M5NTgyODYxNjAyMDEwYmZmNmU2NGQ2ZC4uNzg2
NDk3ZDg1NGM5N2YxYjZhYjkzNzJhMjQxYzFmYTE1NWEzMGE1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1w
b3J0LmgKQEAgLTI3LDI5ICsyNyw1NyBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogLy8KLS8vIEF1dGhvcnM6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwogLy8g
TG93LWxldmVsIHR5cGVzIGFuZCB1dGlsaXRpZXMgZm9yIHBvcnRpbmcgR29vZ2xlIFRlc3QgdG8g
dmFyaW91cwotLy8gcGxhdGZvcm1zLiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91
dCBub3RpY2UuICBETyBOT1QgVVNFCi0vLyBUSEVNIElOIFVTRVIgQ09ERS4KKy8vIHBsYXRmb3Jt
cy4gIEFsbCBtYWNyb3MgZW5kaW5nIHdpdGggXyBhbmQgc3ltYm9scyBkZWZpbmVkIGluIGFuCisv
LyBpbnRlcm5hbCBuYW1lc3BhY2UgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNl
LiAgQ29kZQorLy8gb3V0c2lkZSBHb29nbGUgVGVzdCBNVVNUIE5PVCBVU0UgVEhFTSBESVJFQ1RM
WS4gIE1hY3JvcyB0aGF0IGRvbid0CisvLyBlbmQgd2l0aCBfIGFyZSBwYXJ0IG9mIEdvb2dsZSBU
ZXN0J3MgcHVibGljIEFQSSBhbmQgY2FuIGJlIHVzZWQgYnkKKy8vIGNvZGUgb3V0c2lkZSBHb29n
bGUgVGVzdC4KKy8vCisvLyBUaGlzIGZpbGUgaXMgZnVuZGFtZW50YWwgdG8gR29vZ2xlIFRlc3Qu
ICBBbGwgb3RoZXIgR29vZ2xlIFRlc3Qgc291cmNlCisvLyBmaWxlcyBhcmUgZXhwZWN0ZWQgdG8g
I2luY2x1ZGUgdGhpcy4gIFRoZXJlZm9yZSwgaXQgY2Fubm90ICNpbmNsdWRlCisvLyBhbnkgb3Ro
ZXIgR29vZ2xlIFRlc3QgaGVhZGVyLgorCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVM
RVRFCiAKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QT1JUX0hf
CiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUE9SVF9IXwogCi0v
LyBUaGUgdXNlciBjYW4gZGVmaW5lIHRoZSBmb2xsb3dpbmcgbWFjcm9zIGluIHRoZSBidWlsZCBz
Y3JpcHQgdG8KLS8vIGNvbnRyb2wgR29vZ2xlIFRlc3QncyBiZWhhdmlvci4gIElmIHRoZSB1c2Vy
IGRvZXNuJ3QgZGVmaW5lIGEgbWFjcm8KLS8vIGluIHRoaXMgbGlzdCwgR29vZ2xlIFRlc3Qgd2ls
bCBkZWZpbmUgaXQuCisvLyBFbnZpcm9ubWVudC1kZXNjcmliaW5nIG1hY3JvcworLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBHb29nbGUgVGVzdCBjYW4gYmUgdXNlZCBp
biBtYW55IGRpZmZlcmVudCBlbnZpcm9ubWVudHMuICBNYWNyb3MgaW4KKy8vIHRoaXMgc2VjdGlv
biB0ZWxsIEdvb2dsZSBUZXN0IHdoYXQga2luZCBvZiBlbnZpcm9ubWVudCBpdCBpcyBiZWluZwor
Ly8gdXNlZCBpbiwgc3VjaCB0aGF0IEdvb2dsZSBUZXN0IGNhbiBwcm92aWRlIGVudmlyb25tZW50
LXNwZWNpZmljCisvLyBmZWF0dXJlcyBhbmQgaW1wbGVtZW50YXRpb25zLgorLy8KKy8vIEdvb2ds
ZSBUZXN0IHRyaWVzIHRvIGF1dG9tYXRpY2FsbHkgZGV0ZWN0IHRoZSBwcm9wZXJ0aWVzIG9mIGl0
cworLy8gZW52aXJvbm1lbnQsIHNvIHVzZXJzIHVzdWFsbHkgZG9uJ3QgbmVlZCB0byB3b3JyeSBh
Ym91dCB0aGVzZQorLy8gbWFjcm9zLiAgSG93ZXZlciwgdGhlIGF1dG9tYXRpYyBkZXRlY3Rpb24g
aXMgbm90IHBlcmZlY3QuCisvLyBTb21ldGltZXMgaXQncyBuZWNlc3NhcnkgZm9yIGEgdXNlciB0
byBkZWZpbmUgc29tZSBvZiB0aGUgZm9sbG93aW5nCisvLyBtYWNyb3MgaW4gdGhlIGJ1aWxkIHNj
cmlwdCB0byBvdmVycmlkZSBHb29nbGUgVGVzdCdzIGRlY2lzaW9ucy4KKy8vCisvLyBJZiB0aGUg
dXNlciBkb2Vzbid0IGRlZmluZSBhIG1hY3JvIGluIHRoZSBsaXN0LCBHb29nbGUgVGVzdCB3aWxs
CisvLyBwcm92aWRlIGEgZGVmYXVsdCBkZWZpbml0aW9uLiAgQWZ0ZXIgdGhpcyBoZWFkZXIgaXMg
I2luY2x1ZGVkLCBhbGwKKy8vIG1hY3JvcyBpbiB0aGlzIGxpc3Qgd2lsbCBiZSBkZWZpbmVkIHRv
IGVpdGhlciAxIG9yIDAuCisvLworLy8gTm90ZXMgdG8gbWFpbnRhaW5lcnM6CisvLyAgIC0gRWFj
aCBtYWNybyBoZXJlIGlzIGEgdXNlci10d2Vha2FibGUga25vYjsgZG8gbm90IGdyb3cgdGhlIGxp
c3QKKy8vICAgICBsaWdodGx5LgorLy8gICAtIFVzZSAjaWYgdG8ga2V5IG9mZiB0aGVzZSBtYWNy
b3MuICBEb24ndCB1c2UgI2lmZGVmIG9yICIjaWYKKy8vICAgICBkZWZpbmVkKC4uLikiLCB3aGlj
aCB3aWxsIG5vdCB3b3JrIGFzIHRoZXNlIG1hY3JvcyBhcmUgQUxXQVlTCisvLyAgICAgZGVmaW5l
ZC4KIC8vCiAvLyAgIEdURVNUX0hBU19DTE9ORSAgICAgICAgICAtIERlZmluZSBpdCB0byAxLzAg
dG8gaW5kaWNhdGUgdGhhdCBjbG9uZSgyKQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpcy9pc24ndCBhdmFpbGFibGUuCiAvLyAgIEdURVNUX0hBU19FWENFUFRJT05TICAgICAtIERl
ZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCBleGNlcHRpb25zCiAvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFyZSBlbmFibGVkLgogLy8gICBHVEVTVF9IQVNfR0xPQkFMX1NU
UklORyAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgOjpzdHJpbmcKLS8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlIChzb21lIHN5c3Rl
bXMgZGVmaW5lCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6c3RyaW5nLCB3aGlj
aCBpcyBkaWZmZXJlbnQgdG8gc3RkOjpzdHJpbmcpLgotLy8gICBHVEVTVF9IQVNfR0xPQkFMX1dT
VFJJTkcgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgOjpzdHJpbmcKLS8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlIChzb21lIHN5c3Rl
bXMgZGVmaW5lCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6d3N0cmluZywgd2hp
Y2ggaXMgZGlmZmVyZW50IHRvIHN0ZDo6d3N0cmluZykuCisvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlzL2lzbid0IGF2YWlsYWJsZQorLy8gICBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJ
TkcgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgOjp3c3RyaW5nCisvLyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlzL2lzbid0IGF2YWlsYWJsZQorLy8gICBHVEVTVF9I
QVNfUE9TSVhfUkUgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgUE9T
SVggcmVndWxhcgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9ucyBh
cmUvYXJlbid0IGF2YWlsYWJsZS4KIC8vICAgR1RFU1RfSEFTX1BUSFJFQUQgICAgICAgIC0gRGVm
aW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB0aGF0IDxwdGhyZWFkLmg+CiAvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlzL2lzbid0IGF2YWlsYWJsZS4KIC8vICAgR1RFU1RfSEFTX1JU
VEkgICAgICAgICAgIC0gRGVmaW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB0aGF0IFJUVEkgaXMv
aXNuJ3QKQEAgLTYyLDEwICs5MCwxNiBAQAogLy8gICBHVEVTVF9IQVNfU0VIICAgICAgICAgICAg
LSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlCiAvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbXBpbGVyIHN1cHBvcnRzIE1pY3Jvc29mdCdzICJTdHJ1Y3R1
cmVkCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbiBIYW5kbGluZyIu
CisvLyAgIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KKy8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC0gRGVmaW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZQorLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybSBzdXBwb3J0cyBJL08gc3RyZWFt
IHJlZGlyZWN0aW9uIHVzaW5nCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cCgp
IGFuZCBkdXAyKCkuCiAvLyAgIEdURVNUX1VTRV9PV05fVFIxX1RVUExFICAtIERlZmluZSBpdCB0
byAxLzAgdG8gaW5kaWNhdGUgd2hldGhlciBHb29nbGUKIC8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGVzdCdzIG93biB0cjEgdHVwbGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGJlCiAv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQuICBVbnVzZWQgd2hlbiB0aGUgdXNl
ciBzZXRzCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX0hBU19UUjFfVFVQ
TEUgdG8gMC4KKy8vICAgR1RFU1RfTEFOR19DWFgxMSAgICAgICAgIC0gRGVmaW5lIGl0IHRvIDEv
MCB0byBpbmRpY2F0ZSB0aGF0IEdvb2dsZSBUZXN0CisvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlzIGJ1aWxkaW5nIGluIEMrKzExL0MrKzk4IG1vZGUuCiAvLyAgIEdURVNUX0xJTktF
RF9BU19TSEFSRURfTElCUkFSWQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBEZWZp
bmUgdG8gMSB3aGVuIGNvbXBpbGluZyB0ZXN0cyB0aGF0IHVzZQogLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHb29nbGUgVGVzdCBhcyBhIHNoYXJlZCBsaWJyYXJ5IChrbm93biBhcwpA
QCAtNzMsMjMgKzEwNyw0MyBAQAogLy8gICBHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJBUlkKIC8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gRGVmaW5lIHRvIDEgd2hlbiBjb21waWxpbmcg
R29vZ2xlIFRlc3QgaXRzZWxmCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGEg
c2hhcmVkIGxpYnJhcnkuCi0KLS8vIFRoaXMgaGVhZGVyIGRlZmluZXMgdGhlIGZvbGxvd2luZyB1
dGlsaXRpZXM6CisvLyAgIEdURVNUX0RFRkFVTFRfREVBVEhfVEVTVF9TVFlMRQorLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLSBUaGUgZGVmYXVsdCB2YWx1ZSBvZiAtLWd0ZXN0X2RlYXRo
X3Rlc3Rfc3R5bGUuCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBsZWdhY3kg
ZGVmYXVsdCBoYXMgYmVlbiAiZmFzdCIgaW4gdGhlIG9wZW4KKy8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc291cmNlIHZlcnNpb24gc2luY2UgMjAwOC4gVGhlIHJlY29tbWVuZGVkIHZh
bHVlCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzICJ0aHJlYWRzYWZlIiwgYW5k
IGNhbiBiZSBzZXQgaW4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tL2d0
ZXN0LXBvcnQuaC4KKworLy8gUGxhdGZvcm0taW5kaWNhdGluZyBtYWNyb3MKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWFjcm9zIGluZGljYXRpbmcgdGhlIHBsYXRmb3Jt
IG9uIHdoaWNoIEdvb2dsZSBUZXN0IGlzIGJlaW5nIHVzZWQKKy8vIChhIG1hY3JvIGlzIGRlZmlu
ZWQgdG8gMSBpZiBjb21waWxlZCBvbiB0aGUgZ2l2ZW4gcGxhdGZvcm07CisvLyBvdGhlcndpc2Ug
VU5ERUZJTkVEIC0tIGl0J3MgbmV2ZXIgZGVmaW5lZCB0byAwLikuICBHb29nbGUgVGVzdAorLy8g
ZGVmaW5lcyB0aGVzZSBtYWNyb3MgYXV0b21hdGljYWxseS4gIENvZGUgb3V0c2lkZSBHb29nbGUg
VGVzdCBNVVNUCisvLyBOT1QgZGVmaW5lIHRoZW0uCiAvLwotLy8gTWFjcm9zIGluZGljYXRpbmcg
dGhlIGN1cnJlbnQgcGxhdGZvcm0gKGRlZmluZWQgdG8gMSBpZiBjb21waWxlZCBvbgotLy8gdGhl
IGdpdmVuIHBsYXRmb3JtOyBvdGhlcndpc2UgdW5kZWZpbmVkKToKIC8vICAgR1RFU1RfT1NfQUlY
ICAgICAgLSBJQk0gQUlYCiAvLyAgIEdURVNUX09TX0NZR1dJTiAgIC0gQ3lnd2luCi0vLyAgIEdU
RVNUX09TX0xJTlVYICAgIC0gTGludXgKIC8vICAgR1RFU1RfT1NfRlJFRUJTRCAgLSBGcmVlQlNE
Ci0vLyAgIEdURVNUX09TX0hVUkQgICAgIC0gR05VL0h1cmQKKy8vICAgR1RFU1RfT1NfRlVDSFNJ
QSAgLSBGdWNoc2lhCisvLyAgIEdURVNUX09TX0hQVVggICAgIC0gSFAtVVgKKy8vICAgR1RFU1Rf
T1NfTElOVVggICAgLSBMaW51eAorLy8gICAgIEdURVNUX09TX0xJTlVYX0FORFJPSUQgLSBHb29n
bGUgQW5kcm9pZAogLy8gICBHVEVTVF9PU19NQUMgICAgICAtIE1hYyBPUyBYCisvLyAgICAgR1RF
U1RfT1NfSU9TICAgIC0gaU9TCisvLyAgIEdURVNUX09TX05BQ0wgICAgIC0gR29vZ2xlIE5hdGl2
ZSBDbGllbnQgKE5hQ2wpCisvLyAgIEdURVNUX09TX05FVEJTRCAgIC0gTmV0QlNECisvLyAgIEdU
RVNUX09TX09QRU5CU0QgIC0gT3BlbkJTRAorLy8gICBHVEVTVF9PU19RTlggICAgICAtIFFOWAog
Ly8gICBHVEVTVF9PU19TT0xBUklTICAtIFN1biBTb2xhcmlzCiAvLyAgIEdURVNUX09TX1NZTUJJ
QU4gIC0gU3ltYmlhbgogLy8gICBHVEVTVF9PU19XSU5ET1dTICAtIFdpbmRvd3MgKERlc2t0b3As
IE1pbkdXLCBvciBNb2JpbGUpCiAvLyAgICAgR1RFU1RfT1NfV0lORE9XU19ERVNLVE9QICAtIFdp
bmRvd3MgRGVza3RvcAogLy8gICAgIEdURVNUX09TX1dJTkRPV1NfTUlOR1cgICAgLSBNaW5HVwog
Ly8gICAgIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFICAgLSBXaW5kb3dzIE1vYmlsZQorLy8gICAg
IEdURVNUX09TX1dJTkRPV1NfUEhPTkUgICAgLSBXaW5kb3dzIFBob25lCisvLyAgICAgR1RFU1Rf
T1NfV0lORE9XU19SVCAgICAgICAtIFdpbmRvd3MgU3RvcmUgQXBwL1dpblJUCiAvLyAgIEdURVNU
X09TX1pPUyAgICAgIC0gei9PUwogLy8KIC8vIEFtb25nIHRoZSBwbGF0Zm9ybXMsIEN5Z3dpbiwg
TGludXgsIE1heCBPUyBYLCBhbmQgV2luZG93cyBoYXZlIHRoZQpAQCAtOTksMjAgKzE1Myw1MCBA
QAogLy8gZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tIChwYXRjaGVzIGZvciBm
aXhpbmcgdGhlbSBhcmUKIC8vIGV2ZW4gbW9yZSB3ZWxjb21lISkuCiAvLwotLy8gTm90ZSB0aGF0
IGl0IGlzIHBvc3NpYmxlIHRoYXQgbm9uZSBvZiB0aGUgR1RFU1RfT1NfKiBtYWNyb3MgYXJlIGRl
ZmluZWQuCisvLyBJdCBpcyBwb3NzaWJsZSB0aGF0IG5vbmUgb2YgdGhlIEdURVNUX09TXyogbWFj
cm9zIGFyZSBkZWZpbmVkLgorCisvLyBGZWF0dXJlLWluZGljYXRpbmcgbWFjcm9zCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWFjcm9zIGluZGljYXRpbmcgd2hpY2ggR29v
Z2xlIFRlc3QgZmVhdHVyZXMgYXJlIGF2YWlsYWJsZSAoYSBtYWNybworLy8gaXMgZGVmaW5lZCB0
byAxIGlmIHRoZSBjb3JyZXNwb25kaW5nIGZlYXR1cmUgaXMgc3VwcG9ydGVkOworLy8gb3RoZXJ3
aXNlIFVOREVGSU5FRCAtLSBpdCdzIG5ldmVyIGRlZmluZWQgdG8gMC4pLiAgR29vZ2xlIFRlc3QK
Ky8vIGRlZmluZXMgdGhlc2UgbWFjcm9zIGF1dG9tYXRpY2FsbHkuICBDb2RlIG91dHNpZGUgR29v
Z2xlIFRlc3QgTVVTVAorLy8gTk9UIGRlZmluZSB0aGVtLgorLy8KKy8vIFRoZXNlIG1hY3JvcyBh
cmUgcHVibGljIHNvIHRoYXQgcG9ydGFibGUgdGVzdHMgY2FuIGJlIHdyaXR0ZW4uCisvLyBTdWNo
IHRlc3RzIHR5cGljYWxseSBzdXJyb3VuZCBjb2RlIHVzaW5nIGEgZmVhdHVyZSB3aXRoIGFuICNp
ZgorLy8gd2hpY2ggY29udHJvbHMgdGhhdCBjb2RlLiAgRm9yIGV4YW1wbGU6CisvLworLy8gI2lm
IEdURVNUX0hBU19ERUFUSF9URVNUCisvLyAgIEVYUEVDVF9ERUFUSChEb1NvbWV0aGluZ0RlYWRs
eSgpKTsKKy8vICNlbmRpZgogLy8KLS8vIE1hY3JvcyBpbmRpY2F0aW5nIGF2YWlsYWJsZSBHb29n
bGUgVGVzdCBmZWF0dXJlcyAoZGVmaW5lZCB0byAxIGlmCi0vLyB0aGUgY29ycmVzcG9uZGluZyBm
ZWF0dXJlIGlzIHN1cHBvcnRlZDsgb3RoZXJ3aXNlIHVuZGVmaW5lZCk6CiAvLyAgIEdURVNUX0hB
U19DT01CSU5FICAgICAgLSB0aGUgQ29tYmluZSgpIGZ1bmN0aW9uIChmb3IgdmFsdWUtcGFyYW1l
dGVyaXplZAogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMpCiAvLyAgIEdURVNU
X0hBU19ERUFUSF9URVNUICAgLSBkZWF0aCB0ZXN0cwotLy8gICBHVEVTVF9IQVNfUEFSQU1fVEVT
VCAgIC0gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cwogLy8gICBHVEVTVF9IQVNfVFlQRURfVEVT
VCAgIC0gdHlwZWQgdGVzdHMKIC8vICAgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUCAtIHR5cGUtcGFy
YW1ldGVyaXplZCB0ZXN0cwotLy8gICBHVEVTVF9VU0VTX1BPU0lYX1JFICAgIC0gZW5oYW5jZWQg
UE9TSVggcmVnZXggaXMgdXNlZC4KKy8vICAgR1RFU1RfSVNfVEhSRUFEU0FGRSAgICAtIEdvb2ds
ZSBUZXN0IGlzIHRocmVhZC1zYWZlLgorLy8gICBHT09HTEVURVNUX0NNMDAwNyBETyBOT1QgREVM
RVRFCisvLyAgIEdURVNUX1VTRVNfUE9TSVhfUkUgICAgLSBlbmhhbmNlZCBQT1NJWCByZWdleCBp
cyB1c2VkLiBEbyBub3QgY29uZnVzZSB3aXRoCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHVEVTVF9IQVNfUE9TSVhfUkUgKHNlZSBhYm92ZSkgd2hpY2ggdXNlcnMgY2FuCisvLyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgdGhlbXNlbHZlcy4KIC8vICAgR1RFU1RfVVNF
U19TSU1QTEVfUkUgICAtIG91ciBvd24gc2ltcGxlIHJlZ2V4IGlzIHVzZWQ7Ci0vLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aGUgYWJvdmUgdHdvIGFyZSBtdXR1YWxseSBleGNsdXNpdmUu
CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYWJvdmUgUkVcYihzKSBhcmUgbXV0
dWFsbHkgZXhjbHVzaXZlLgogLy8gICBHVEVTVF9DQU5fQ09NUEFSRV9OVUxMIC0gYWNjZXB0cyB1
bnR5cGVkIE5VTEwgaW4gRVhQRUNUX0VRKCkuCisKKy8vIE1pc2MgcHVibGljIG1hY3JvcworLy8g
LS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gICBHVEVTVF9GTEFHKGZsYWdfbmFtZSkgIC0gcmVm
ZXJlbmNlcyB0aGUgdmFyaWFibGUgY29ycmVzcG9uZGluZyB0bworLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhlIGdpdmVuIEdvb2dsZSBUZXN0IGZsYWcuCisKKy8vIEludGVybmFsIHV0
aWxpdGllcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gVGhlIGZvbGxvd2luZyBtYWNy
b3MgYW5kIHV0aWxpdGllcyBhcmUgZm9yIEdvb2dsZSBUZXN0J3MgSU5URVJOQUwKKy8vIHVzZSBv
bmx5LiAgQ29kZSBvdXRzaWRlIEdvb2dsZSBUZXN0IE1VU1QgTk9UIFVTRSBUSEVNIERJUkVDVExZ
LgogLy8KIC8vIE1hY3JvcyBmb3IgYmFzaWMgQysrIGNvZGluZzoKIC8vICAgR1RFU1RfQU1CSUdV
T1VTX0VMU0VfQkxPQ0tFUl8gLSBmb3IgZGlzYWJsaW5nIGEgZ2NjIHdhcm5pbmcuCkBAIC0xMjEs
MjUgKzIwNSwzNCBAQAogLy8gICBHVEVTVF9ESVNBTExPV19BU1NJR05fICAgLSBkaXNhYmxlcyBv
cGVyYXRvcj0uCiAvLyAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8gLSBkaXNhYmxl
cyBjb3B5IGN0b3IgYW5kIG9wZXJhdG9yPS4KIC8vICAgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXyAg
IC0gZGVjbGFyZXMgdGhhdCBhIGZ1bmN0aW9uJ3MgcmVzdWx0IG11c3QgYmUgdXNlZC4KKy8vICAg
R1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QVVNIXyAtIHN0YXJ0IGNvZGUgc2VjdGlvbiB3
aGVyZSBNU1ZDIEM0MTI3IGlzCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdXBwcmVzc2VkIChjb25zdGFudCBjb25kaXRpb25hbCkuCisvLyAgIEdURVNUX0lOVEVO
VElPTkFMX0NPTlNUX0NPTkRfUE9QXyAgLSBmaW5pc2ggY29kZSBzZWN0aW9uIHdoZXJlIE1TVkMg
QzQxMjcKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHN1cHBy
ZXNzZWQuCisvLworLy8gQysrMTEgZmVhdHVyZSB3cmFwcGVyczoKKy8vCisvLyAgIHRlc3Rpbmc6
OmludGVybmFsOjpmb3J3YXJkIC0gcG9ydGFiaWxpdHkgd3JhcHBlciBmb3Igc3RkOjpmb3J3YXJk
LgorLy8gICB0ZXN0aW5nOjppbnRlcm5hbDo6bW92ZSAgLSBwb3J0YWJpbGl0eSB3cmFwcGVyIGZv
ciBzdGQ6Om1vdmUuCiAvLwogLy8gU3luY2hyb25pemF0aW9uOgogLy8gICBNdXRleCwgTXV0ZXhM
b2NrLCBUaHJlYWRMb2NhbCwgR2V0VGhyZWFkQ291bnQoKQotLy8gICAgICAgICAgICAgICAgICAt
IHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzLgotLy8gICBHVEVTVF9JU19USFJFQURTQUZFIC0g
ZGVmaW5lZCB0byAxIHRvIGluZGljYXRlIHRoYXQgdGhlIGFib3ZlCi0vLyAgICAgICAgICAgICAg
ICAgICAgICAgICBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyBoYXZlIHJlYWwgaW1wbGVtZW50
YXRpb25zCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgR29vZ2xlIFRlc3QgaXMgdGhy
ZWFkLXNhZmU7IG9yIDAgb3RoZXJ3aXNlLgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
LSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcy4KIC8vCiAvLyBUZW1wbGF0ZSBtZXRhIHByb2dy
YW1taW5nOgogLy8gICBpc19wb2ludGVyICAgICAtIGFzIGluIFRSMTsgbmVlZGVkIG9uIFN5bWJp
YW4gYW5kIElCTSBYTCBDL0MrKyBvbmx5LgorLy8gICBJdGVyYXRvclRyYWl0cyAtIHBhcnRpYWwg
aW1wbGVtZW50YXRpb24gb2Ygc3RkOjppdGVyYXRvcl90cmFpdHMsIHdoaWNoCisvLyAgICAgICAg
ICAgICAgICAgICAgaXMgbm90IGF2YWlsYWJsZSBpbiBsaWJDc3RkIHdoZW4gY29tcGlsZWQgd2l0
aCBTdW4gQysrLgogLy8KIC8vIFNtYXJ0IHBvaW50ZXJzOgogLy8gICBzY29wZWRfcHRyICAgICAt
IGFzIGluIFRSMi4KIC8vCiAvLyBSZWd1bGFyIGV4cHJlc3Npb25zOgogLy8gICBSRSAgICAgICAg
ICAgICAtIGEgc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiBjbGFzcyB1c2luZyB0aGUgUE9TSVgK
LS8vICAgICAgICAgICAgICAgICAgICBFeHRlbmRlZCBSZWd1bGFyIEV4cHJlc3Npb24gc3ludGF4
LiAgTm90IGF2YWlsYWJsZSBvbgotLy8gICAgICAgICAgICAgICAgICAgIFdpbmRvd3MuCi0vLwor
Ly8gICAgICAgICAgICAgICAgICAgIEV4dGVuZGVkIFJlZ3VsYXIgRXhwcmVzc2lvbiBzeW50YXgg
b24gVU5JWC1saWtlIHBsYXRmb3JtcworLy8gICAgICAgICAgICAgICAgICAgIEdPT0dMRVRFU1Rf
Q00wMDA4IERPIE5PVCBERUxFVEUKKy8vICAgICAgICAgICAgICAgICAgICBvciBhIHJlZHVjZWQg
cmVndWxhciBleGNlcHRpb24gc3ludGF4IG9uIG90aGVyCisvLyAgICAgICAgICAgICAgICAgICAg
cGxhdGZvcm1zLCBpbmNsdWRpbmcgV2luZG93cy4KIC8vIExvZ2dpbmc6CiAvLyAgIEdURVNUX0xP
R18oKSAgIC0gbG9ncyBtZXNzYWdlcyBhdCB0aGUgc3BlY2lmaWVkIHNldmVyaXR5IGxldmVsLgog
Ly8gICBMb2dUb1N0ZGVycigpICAtIGRpcmVjdHMgYWxsIGxvZyBtZXNzYWdlcyB0byBzdGRlcnIu
CkBAIC0xNjAsMTAgKzI1Myw5IEBACiAvLyAgIEJpZ2dlc3RJbnQgICAgIC0gdGhlIGJpZ2dlc3Qg
c2lnbmVkIGludGVnZXIgdHlwZS4KIC8vCiAvLyBDb21tYW5kLWxpbmUgdXRpbGl0aWVzOgotLy8g
ICBHVEVTVF9GTEFHKCkgICAgICAgLSByZWZlcmVuY2VzIGEgZmxhZy4KIC8vICAgR1RFU1RfREVD
TEFSRV8qKCkgIC0gZGVjbGFyZXMgYSBmbGFnLgogLy8gICBHVEVTVF9ERUZJTkVfKigpICAgLSBk
ZWZpbmVzIGEgZmxhZy4KLS8vICAgR2V0QXJndnMoKSAgICAgICAgIC0gcmV0dXJucyB0aGUgY29t
bWFuZCBsaW5lIGFzIGEgdmVjdG9yIG9mIHN0cmluZ3MuCisvLyAgIEdldEluamVjdGFibGVBcmd2
cygpIC0gcmV0dXJucyB0aGUgY29tbWFuZCBsaW5lIGFzIGEgdmVjdG9yIG9mIHN0cmluZ3MuCiAv
LwogLy8gRW52aXJvbm1lbnQgdmFyaWFibGUgdXRpbGl0aWVzOgogLy8gICBHZXRFbnYoKSAgICAg
ICAgICAgICAtIGdldHMgdGhlIHZhbHVlIG9mIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLgpAQCAt
MTcxLDE3MSArMjYzLDMwNSBAQAogLy8gICBJbnQzMkZyb21HVGVzdEVudigpICAtIHBhcnNlcyBh
biBJbnQzMiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KIC8vICAgU3RyaW5nRnJvbUdUZXN0RW52KCkg
LSBwYXJzZXMgYSBzdHJpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUuCiAKLSNpbmNsdWRlIDxzdGRk
ZWYuaD4gIC8vIEZvciBwdHJkaWZmX3QKKyNpbmNsdWRlIDxjdHlwZS5oPiAgIC8vIGZvciBpc3Nw
YWNlLCBldGMKKyNpbmNsdWRlIDxzdGRkZWYuaD4gIC8vIGZvciBwdHJkaWZmX3QKICNpbmNsdWRl
IDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2lm
bmRlZiBfV0lOMzJfV0NFCi0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyMgaW5jbHVkZSA8c3lzL3R5
cGVzLmg+CisjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjZW5kaWYgIC8vICFfV0lOMzJfV0NFCiAK
LSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLSNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNFeHBvcnRNYWNyb3MuaD4KLSNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaWYgZGVmaW5l
ZCBfX0FQUExFX18KKyMgaW5jbHVkZSA8QXZhaWxhYmlsaXR5TWFjcm9zLmg+CisjIGluY2x1ZGUg
PFRhcmdldENvbmRpdGlvbmFscy5oPgorI2VuZGlmCiAKKy8vIEJyaW5ncyBpbiB0aGUgZGVmaW5p
dGlvbiBvZiBIQVNfR0xPQkFMX1NUUklORy4gIFRoaXMgbXVzdCBiZSBkb25lCisvLyBCRUZPUkUg
d2UgdGVzdCBIQVNfR0xPQkFMX1NUUklORy4KKyNpbmNsdWRlIDxzdHJpbmc+ICAvLyBOT0xJTlQK
KyNpbmNsdWRlIDxhbGdvcml0aG0+ICAvLyBOT0xJTlQKICNpbmNsdWRlIDxpb3N0cmVhbT4gIC8v
IE5PTElOVAogI2luY2x1ZGUgPHNzdHJlYW0+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDxzdHJpbmc+
ICAvLyBOT0xJTlQKKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHZlY3Rvcj4gIC8vIE5P
TElOVAorCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC1hcmNoLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXBvcnQuaCIKKworI2lmICFkZWZpbmVk
KEdURVNUX0RFVl9FTUFJTF8pCisjIGRlZmluZSBHVEVTVF9ERVZfRU1BSUxfICJnb29nbGV0ZXN0
ZnJhbWV3b3JrQEBnb29nbGVncm91cHMuY29tIgorIyBkZWZpbmUgR1RFU1RfRkxBR19QUkVGSVhf
ICJndGVzdF8iCisjIGRlZmluZSBHVEVTVF9GTEFHX1BSRUZJWF9EQVNIXyAiZ3Rlc3QtIgorIyBk
ZWZpbmUgR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJHVEVTVF8iCisjIGRlZmluZSBHVEVTVF9O
QU1FXyAiR29vZ2xlIFRlc3QiCisjIGRlZmluZSBHVEVTVF9QUk9KRUNUX1VSTF8gImh0dHBzOi8v
Z2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC8iCisjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNU
X0RFVl9FTUFJTF8pCiAKLSNkZWZpbmUgR1RFU1RfREVWX0VNQUlMXyAiZ29vZ2xldGVzdGZyYW1l
d29ya0BAZ29vZ2xlZ3JvdXBzLmNvbSIKLSNkZWZpbmUgR1RFU1RfRkxBR19QUkVGSVhfICJndGVz
dF8iCi0jZGVmaW5lIEdURVNUX0ZMQUdfUFJFRklYX0RBU0hfICJndGVzdC0iCi0jZGVmaW5lIEdU
RVNUX0ZMQUdfUFJFRklYX1VQUEVSXyAiR1RFU1RfIgotI2RlZmluZSBHVEVTVF9OQU1FXyAiR29v
Z2xlIFRlc3QiCi0jZGVmaW5lIEdURVNUX1BST0pFQ1RfVVJMXyAiaHR0cDovL2NvZGUuZ29vZ2xl
LmNvbS9wL2dvb2dsZXRlc3QvIgorI2lmICFkZWZpbmVkKEdURVNUX0lOSVRfR09PR0xFX1RFU1Rf
TkFNRV8pCisjIGRlZmluZSBHVEVTVF9JTklUX0dPT0dMRV9URVNUX05BTUVfICJ0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdCIKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfSU5JVF9HT09HTEVfVEVT
VF9OQU1FXykKIAogLy8gRGV0ZXJtaW5lcyB0aGUgdmVyc2lvbiBvZiBnY2MgdGhhdCBpcyB1c2Vk
IHRvIGNvbXBpbGUgdGhpcy4KICNpZmRlZiBfX0dOVUNfXwogLy8gNDAzMDIgbWVhbnMgdmVyc2lv
biA0LjMuMi4KLSNkZWZpbmUgR1RFU1RfR0NDX1ZFUl8gXAorIyBkZWZpbmUgR1RFU1RfR0NDX1ZF
Ul8gXAogICAgIChfX0dOVUNfXyoxMDAwMCArIF9fR05VQ19NSU5PUl9fKjEwMCArIF9fR05VQ19Q
QVRDSExFVkVMX18pCiAjZW5kaWYgIC8vIF9fR05VQ19fCiAKLS8vIERldGVybWluZXMgdGhlIHBs
YXRmb3JtIG9uIHdoaWNoIEdvb2dsZSBUZXN0IGlzIGNvbXBpbGVkLgotI2lmZGVmIF9fQ1lHV0lO
X18KLSNkZWZpbmUgR1RFU1RfT1NfQ1lHV0lOIDEKLSNlbGlmIGRlZmluZWQgX19TWU1CSUFOMzJf
XwotI2RlZmluZSBHVEVTVF9PU19TWU1CSUFOIDEKLSNlbGlmIGRlZmluZWQgX1dJTjMyCi0jZGVm
aW5lIEdURVNUX09TX1dJTkRPV1MgMQotI2lmZGVmIF9XSU4zMl9XQ0UKLSNkZWZpbmUgR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUgMQotI2VsaWYgZGVmaW5lZChfX01JTkdXX18pIHx8IGRlZmluZWQo
X19NSU5HVzMyX18pCi0jZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfTUlOR1cgMQorLy8gTWFjcm9z
IGZvciBkaXNhYmxpbmcgTWljcm9zb2Z0IFZpc3VhbCBDKysgd2FybmluZ3MuCisvLworLy8gICBH
VEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0ODAwIDQzODUpCisvLyAgIC8qIGNvZGUg
dGhhdCB0cmlnZ2VycyB3YXJuaW5ncyBDNDgwMCBhbmQgQzQzODUgKi8KKy8vICAgR1RFU1RfRElT
QUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCisjaWYgX01TQ19WRVIgPj0gMTQwMAorIyBkZWZpbmUg
R1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8od2FybmluZ3MpIFwKKyAgICBfX3ByYWdt
YSh3YXJuaW5nKHB1c2gpKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBfX3ByYWdtYSh3
YXJuaW5nKGRpc2FibGU6IHdhcm5pbmdzKSkKKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVNDX1dB
Uk5JTkdTX1BPUF8oKSAgICAgICAgICBcCisgICAgX19wcmFnbWEod2FybmluZyhwb3ApKQogI2Vs
c2UKLSNkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19ERVNLVE9QIDEKLSNlbmRpZiAgLy8gX1dJTjMy
X1dDRQotI2VsaWYgZGVmaW5lZCBfX0FQUExFX18KLSNkZWZpbmUgR1RFU1RfT1NfTUFDIDEKLSNl
bGlmIGRlZmluZWQgX19saW51eF9fCi0jZGVmaW5lIEdURVNUX09TX0xJTlVYIDEKLSNlbGlmIGRl
ZmluZWQgX19HTlVfXwotI2RlZmluZSBHVEVTVF9PU19IVVJEIDEKLSNlbGlmIGRlZmluZWQoX19G
cmVlQlNEX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0Rf
a2VybmVsX18pCi0jZGVmaW5lIEdURVNUX09TX0ZSRUVCU0QgMQotI2VsaWYgZGVmaW5lZCBfX01W
U19fCi0jZGVmaW5lIEdURVNUX09TX1pPUyAxCi0jZWxpZiBkZWZpbmVkKF9fc3VuKSAmJiBkZWZp
bmVkKF9fU1ZSNCkKLSNkZWZpbmUgR1RFU1RfT1NfU09MQVJJUyAxCi0jZWxpZiBkZWZpbmVkKF9B
SVgpCi0jZGVmaW5lIEdURVNUX09TX0FJWCAxCi0jZW5kaWYgIC8vIF9fQ1lHV0lOX18KLQotI2lm
IEdURVNUX09TX0NZR1dJTiB8fCBHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19NQUMgfHwgR1RF
U1RfT1NfU1lNQklBTiB8fCBcCi0gICAgR1RFU1RfT1NfU09MQVJJUyB8fCBHVEVTVF9PU19BSVgg
fHwgR1RFU1RfT1NfRlJFRUJTRCB8fCBHVEVTVF9PU19IVVJECisvLyBPbGRlciB2ZXJzaW9ucyBv
ZiBNU1ZDIGRvbid0IGhhdmUgX19wcmFnbWEuCisjIGRlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19X
QVJOSU5HU19QVVNIXyh3YXJuaW5ncykKKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5J
TkdTX1BPUF8oKQorI2VuZGlmCisKKy8vIENsYW5nIG9uIFdpbmRvd3MgZG9lcyBub3QgdW5kZXJz
dGFuZCBNU1ZDJ3MgcHJhZ21hIHdhcm5pbmcuCisvLyBXZSBuZWVkIGNsYW5nLXNwZWNpZmljIHdh
eSB0byBkaXNhYmxlIGZ1bmN0aW9uIGRlcHJlY2F0aW9uIHdhcm5pbmcuCisjaWZkZWYgX19jbGFu
Z19fCisjIGRlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BVU0hfKCkgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIF9QcmFnbWEoImNsYW5nIGRpYWdub3N0aWMgcHVzaCIp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBfUHJhZ21hKCJjbGFuZyBk
aWFnbm9zdGljIGlnbm9yZWQgXCItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zXCIiKSBcCisgICAg
X1ByYWdtYSgiY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVdkZXByZWNhdGVkLWltcGxlbWVu
dGF0aW9uc1wiIikKKyNkZWZpbmUgR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRFRF9QT1BfKCkg
XAorICAgIF9QcmFnbWEoImNsYW5nIGRpYWdub3N0aWMgcG9wIikKKyNlbHNlCisjIGRlZmluZSBH
VEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BVU0hfKCkgXAorICAgIEdURVNUX0RJU0FCTEVf
TVNDX1dBUk5JTkdTX1BVU0hfKDQ5OTYpCisjIGRlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19ERVBS
RUNBVEVEX1BPUF8oKSBcCisgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCisj
ZW5kaWYKKworI2lmbmRlZiBHVEVTVF9MQU5HX0NYWDExCisvLyBnY2MgYW5kIGNsYW5nIGRlZmlu
ZSBfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXyB3aGVuCisvLyAtc3RkPXtjLGdudX0rK3sweCwx
MX0gaXMgcGFzc2VkLiAgVGhlIEMrKzExIHN0YW5kYXJkIHNwZWNpZmllcyBhCisvLyB2YWx1ZSBm
b3IgX19jcGx1c3BsdXMsIGFuZCByZWNlbnQgdmVyc2lvbnMgb2YgY2xhbmcsIGdjYywgYW5kCisv
LyBwcm9iYWJseSBvdGhlciBjb21waWxlcnMgc2V0IHRoYXQgdG9vIGluIEMrKzExIG1vZGUuCisj
IGlmIF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fIHx8IF9fY3BsdXNwbHVzID49IDIwMTEwM0wg
fHwgX01TQ19WRVIgPj0gMTkwMAorLy8gQ29tcGlsaW5nIGluIGF0IGxlYXN0IEMrKzExIG1vZGUu
CisjICBkZWZpbmUgR1RFU1RfTEFOR19DWFgxMSAxCisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9M
QU5HX0NYWDExIDAKKyMgZW5kaWYKKyNlbmRpZgorCisvLyBEaXN0aW5jdCBmcm9tIEMrKzExIGxh
bmd1YWdlIHN1cHBvcnQsIHNvbWUgZW52aXJvbm1lbnRzIGRvbid0IHByb3ZpZGUKKy8vIHByb3Bl
ciBDKysxMSBsaWJyYXJ5IHN1cHBvcnQuIE5vdGFibHksIGl0J3MgcG9zc2libGUgdG8gYnVpbGQg
aW4KKy8vIEMrKzExIG1vZGUgd2hlbiB0YXJnZXRpbmcgTWFjIE9TIFggMTAuNiwgd2hpY2ggaGFz
IGFuIG9sZCBsaWJzdGRjKysKKy8vIHdpdGggbm8gQysrMTEgc3VwcG9ydC4KKy8vCisvLyBsaWJz
dGRjKysgaGFzIHN1ZmZpY2llbnQgQysrMTEgc3VwcG9ydCBhcyBvZiBHQ0MgNC42LjAsIF9fR0xJ
QkNYWF9fCisvLyAyMDExMDMyNSwgYnV0IG1haW50ZW5hbmNlIHJlbGVhc2VzIGluIHRoZSA0LjQg
YW5kIDQuNSBzZXJpZXMgZm9sbG93ZWQKKy8vIHRoaXMgZGF0ZSwgc28gY2hlY2sgZm9yIHRob3Nl
IHZlcnNpb25zIGJ5IHRoZWlyIGRhdGUgc3RhbXBzLgorLy8gaHR0cHM6Ly9nY2MuZ251Lm9yZy9v
bmxpbmVkb2NzL2xpYnN0ZGMrKy9tYW51YWwvYWJpLmh0bWwjYWJpLnZlcnNpb25pbmcKKyNpZiBH
VEVTVF9MQU5HX0NYWDExICYmIFwKKyAgICAoIWRlZmluZWQoX19HTElCQ1hYX18pIHx8ICggXAor
ICAgICAgICBfX0dMSUJDWFhfXyA+PSAyMDExMDMyNXVsICYmICAvKiBHQ0MgPj0gNC42LjAgKi8g
XAorICAgICAgICAvKiBCbGFja2xpc3Qgb2YgcGF0Y2ggcmVsZWFzZXMgb2Ygb2xkZXIgYnJhbmNo
ZXM6ICovIFwKKyAgICAgICAgX19HTElCQ1hYX18gIT0gMjAxMTA0MTZ1bCAmJiAgLyogR0NDIDQu
NC42ICovIFwKKyAgICAgICAgX19HTElCQ1hYX18gIT0gMjAxMjAzMTN1bCAmJiAgLyogR0NDIDQu
NC43ICovIFwKKyAgICAgICAgX19HTElCQ1hYX18gIT0gMjAxMTA0Mjh1bCAmJiAgLyogR0NDIDQu
NS4zICovIFwKKyAgICAgICAgX19HTElCQ1hYX18gIT0gMjAxMjA3MDJ1bCkpICAgLyogR0NDIDQu
NS40ICovCisjIGRlZmluZSBHVEVTVF9TVERMSUJfQ1hYMTEgMQorI2VuZGlmCisKKy8vIE9ubHkg
dXNlIEMrKzExIGxpYnJhcnkgZmVhdHVyZXMgaWYgdGhlIGxpYnJhcnkgcHJvdmlkZXMgdGhlbS4K
KyNpZiBHVEVTVF9TVERMSUJfQ1hYMTEKKyMgZGVmaW5lIEdURVNUX0hBU19TVERfQkVHSU5fQU5E
X0VORF8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9GT1JXQVJEX0xJU1RfIDEKKyMgaWYgIWRl
ZmluZWQoX01TQ19WRVIpIHx8IChfTVNDX0ZVTExfVkVSID49IDE5MDAyMzgyNCkKKy8vIHdvcmtz
IG9ubHkgd2l0aCBWUzIwMTVVMiBhbmQgYmV0dGVyCisjICAgZGVmaW5lIEdURVNUX0hBU19TVERf
RlVOQ1RJT05fIDEKKyMgZW5kaWYKKyMgZGVmaW5lIEdURVNUX0hBU19TVERfSU5JVElBTElaRVJf
TElTVF8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9NT1ZFXyAxCisjIGRlZmluZSBHVEVTVF9I
QVNfU1REX1VOSVFVRV9QVFJfIDEKKyMgZGVmaW5lIEdURVNUX0hBU19TVERfU0hBUkVEX1BUUl8g
MQorIyBkZWZpbmUgR1RFU1RfSEFTX1VOT1JERVJFRF9NQVBfIDEKKyMgZGVmaW5lIEdURVNUX0hB
U19VTk9SREVSRURfU0VUXyAxCisjZW5kaWYKKworLy8gQysrMTEgc3BlY2lmaWVzIHRoYXQgPHR1
cGxlPiBwcm92aWRlcyBzdGQ6OnR1cGxlLgorLy8gU29tZSBwbGF0Zm9ybXMgc3RpbGwgbWlnaHQg
bm90IGhhdmUgaXQsIGhvd2V2ZXIuCisjaWYgR1RFU1RfTEFOR19DWFgxMQorIyBkZWZpbmUgR1RF
U1RfSEFTX1NURF9UVVBMRV8gMQorIyBpZiBkZWZpbmVkKF9fY2xhbmdfXykKKy8vIEluc3BpcmVk
IGJ5CisvLyBodHRwczovL2NsYW5nLmxsdm0ub3JnL2RvY3MvTGFuZ3VhZ2VFeHRlbnNpb25zLmh0
bWwjaW5jbHVkZS1maWxlLWNoZWNraW5nLW1hY3JvcworIyAgaWYgZGVmaW5lZChfX2hhc19pbmNs
dWRlKSAmJiAhX19oYXNfaW5jbHVkZSg8dHVwbGU+KQorIyAgIHVuZGVmIEdURVNUX0hBU19TVERf
VFVQTEVfCisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX01TQ19WRVIpCisvLyBJbnNwaXJlZCBi
eSBib29zdC9jb25maWcvc3RkbGliL2Rpbmt1bXdhcmUuaHBwCisjICBpZiBkZWZpbmVkKF9DUFBM
SUJfVkVSKSAmJiBfQ1BQTElCX1ZFUiA8IDUyMAorIyAgIHVuZGVmIEdURVNUX0hBU19TVERfVFVQ
TEVfCisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19HTElCQ1hYX18pCisvLyBJbnNwaXJlZCBi
eSBib29zdC9jb25maWcvc3RkbGliL2xpYnN0ZGNwcDMuaHBwLAorLy8gaHR0cDovL2djYy5nbnUu
b3JnL2djYy00LjIvY2hhbmdlcy5odG1sIGFuZAorLy8gaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcv
d2ViLzIwMTQwMjI3MDQ0NDI5L2djYy5nbnUub3JnL29ubGluZWRvY3MvbGlic3RkYysrL21hbnVh
bC9iazAxcHQwMWNoMDEuaHRtbCNtYW51YWwuaW50cm8uc3RhdHVzLnN0YW5kYXJkLjIwMHgKKyMg
IGlmIF9fR05VQ19fIDwgNCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDIp
CisjICAgdW5kZWYgR1RFU1RfSEFTX1NURF9UVVBMRV8KKyMgIGVuZGlmCisjIGVuZGlmCisjZW5k
aWYKKworLy8gQnJpbmdzIGluIGRlZmluaXRpb25zIGZvciBmdW5jdGlvbnMgdXNlZCBpbiB0aGUg
dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4CisvLyBuYW1lc3BhY2UgKHJlYWQsIHdyaXRlLCBjbG9z
ZSwgY2hkaXIsIGlzYXR0eSwgc3RhdCkuIFdlIGRvIG5vdCBjdXJyZW50bHkKKy8vIHVzZSB0aGVt
IG9uIFdpbmRvd3MgTW9iaWxlLgorI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgIUdURVNUX09T
X1dJTkRPV1NfTU9CSUxFCisjICBpbmNsdWRlIDxkaXJlY3QuaD4KKyMgIGluY2x1ZGUgPGlvLmg+
CisjIGVuZGlmCisvLyBJbiBvcmRlciB0byBhdm9pZCBoYXZpbmcgdG8gaW5jbHVkZSA8d2luZG93
cy5oPiwgdXNlIGZvcndhcmQgZGVjbGFyYXRpb24KKyNpZiBHVEVTVF9PU19XSU5ET1dTX01JTkdX
ICYmICFkZWZpbmVkKF9fTUlOR1c2NF9WRVJTSU9OX01BSk9SKQorLy8gTWluR1cgZGVmaW5lZCBf
Q1JJVElDQUxfU0VDVElPTiBhbmQgX1JUTF9DUklUSUNBTF9TRUNUSU9OIGFzIHR3bworLy8gc2Vw
YXJhdGUgKGVxdWl2YWxlbnQpIHN0cnVjdHMsIGluc3RlYWQgb2YgdXNpbmcgdHlwZWRlZgordHlw
ZWRlZiBzdHJ1Y3QgX0NSSVRJQ0FMX1NFQ1RJT04gR1RFU1RfQ1JJVElDQUxfU0VDVElPTjsKKyNl
bHNlCisvLyBBc3N1bWUgQ1JJVElDQUxfU0VDVElPTiBpcyBhIHR5cGVkZWYgb2YgX1JUTF9DUklU
SUNBTF9TRUNUSU9OLgorLy8gVGhpcyBhc3N1bXB0aW9uIGlzIHZlcmlmaWVkIGJ5CisvLyBXaW5k
b3dzVHlwZXNUZXN0LkNSSVRJQ0FMX1NFQ1RJT05Jc19SVExfQ1JJVElDQUxfU0VDVElPTi4KK3R5
cGVkZWYgc3RydWN0IF9SVExfQ1JJVElDQUxfU0VDVElPTiBHVEVTVF9DUklUSUNBTF9TRUNUSU9O
OworI2VuZGlmCisjZWxzZQorLy8gVGhpcyBhc3N1bWVzIHRoYXQgbm9uLVdpbmRvd3MgT1NlcyBw
cm92aWRlIHVuaXN0ZC5oLiBGb3IgT1NlcyB3aGVyZSB0aGlzCisvLyBpcyBub3QgdGhlIGNhc2Us
IHdlIG5lZWQgdG8gaW5jbHVkZSBoZWFkZXJzIHRoYXQgcHJvdmlkZSB0aGUgZnVuY3Rpb25zCisv
LyBtZW50aW9uZWQgYWJvdmUuCisjIGluY2x1ZGUgPHVuaXN0ZC5oPgorIyBpbmNsdWRlIDxzdHJp
bmdzLmg+CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworI2lmIEdURVNUX09TX0xJTlVY
X0FORFJPSUQKKy8vIFVzZWQgdG8gZGVmaW5lIF9fQU5EUk9JRF9BUElfXyBtYXRjaGluZyB0aGUg
dGFyZ2V0IE5ESyBBUEkgbGV2ZWwuCisjICBpbmNsdWRlIDxhbmRyb2lkL2FwaS1sZXZlbC5oPiAg
Ly8gTk9MSU5UCisjZW5kaWYKKworLy8gRGVmaW5lcyB0aGlzIHRvIHRydWUgaWZmIEdvb2dsZSBU
ZXN0IGNhbiB1c2UgUE9TSVggcmVndWxhciBleHByZXNzaW9ucy4KKyNpZm5kZWYgR1RFU1RfSEFT
X1BPU0lYX1JFCisjIGlmIEdURVNUX09TX0xJTlVYX0FORFJPSUQKKy8vIE9uIEFuZHJvaWQsIDxy
ZWdleC5oPiBpcyBvbmx5IGF2YWlsYWJsZSBzdGFydGluZyB3aXRoIEdpbmdlcmJyZWFkLgorIyAg
ZGVmaW5lIEdURVNUX0hBU19QT1NJWF9SRSAoX19BTkRST0lEX0FQSV9fID49IDkpCisjIGVsc2UK
KyMgIGRlZmluZSBHVEVTVF9IQVNfUE9TSVhfUkUgKCFHVEVTVF9PU19XSU5ET1dTKQorIyBlbmRp
ZgorI2VuZGlmCisKKyNpZiBHVEVTVF9VU0VTX1BDUkUKKy8vIFRoZSBhcHByb3ByaWF0ZSBoZWFk
ZXJzIGhhdmUgYWxyZWFkeSBiZWVuIGluY2x1ZGVkLgorCisjZWxpZiBHVEVTVF9IQVNfUE9TSVhf
UkUKIAogLy8gT24gc29tZSBwbGF0Zm9ybXMsIDxyZWdleC5oPiBuZWVkcyBzb21lb25lIHRvIGRl
ZmluZSBzaXplX3QsIGFuZAogLy8gd29uJ3QgY29tcGlsZSBvdGhlcndpc2UuICBXZSBjYW4gI2lu
Y2x1ZGUgaXQgaGVyZSBhcyB3ZSBhbHJlYWR5CiAvLyBpbmNsdWRlZCA8c3RkbGliLmg+LCB3aGlj
aCBpcyBndWFyYW50ZWVkIHRvIGRlZmluZSBzaXplX3QgdGhyb3VnaAogLy8gPHN0ZGRlZi5oPi4K
LSNpZiBIQVZFKFJFR0VYX0gpCi0jaW5jbHVkZSA8cmVnZXguaD4gIC8vIE5PTElOVAotI2RlZmlu
ZSBHVEVTVF9VU0VTX1BPU0lYX1JFIDEKLSNlbHNlCi0jZGVmaW5lIEdURVNUX1VTRVNfU0lNUExF
X1JFIDEKLSNlbmRpZgotI2luY2x1ZGUgPHN0cmluZ3MuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUg
PHN5cy90eXBlcy5oPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8dGltZS5oPiAgLy8gTk9MSU5UCi0j
aW5jbHVkZSA8dW5pc3RkLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8cmVnZXguaD4gIC8vIE5P
TElOVAogCisjIGRlZmluZSBHVEVTVF9VU0VTX1BPU0lYX1JFIDEKIAogI2VsaWYgR1RFU1RfT1Nf
V0lORE9XUwogCi0jaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0jaW5jbHVkZSA8ZGlyZWN0
Lmg+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDxpby5oPiAgLy8gTk9MSU5UCi0jZW5kaWYKLQogLy8g
PHJlZ2V4Lmg+IGlzIG5vdCBhdmFpbGFibGUgb24gV2luZG93cy4gIFVzZSBvdXIgb3duIHNpbXBs
ZSByZWdleAogLy8gaW1wbGVtZW50YXRpb24gaW5zdGVhZC4KLSNkZWZpbmUgR1RFU1RfVVNFU19T
SU1QTEVfUkUgMQorIyBkZWZpbmUgR1RFU1RfVVNFU19TSU1QTEVfUkUgMQogCiAjZWxzZQogCiAv
LyA8cmVnZXguaD4gbWF5IG5vdCBiZSBhdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybS4gIFVzZSBv
dXIgb3duCiAvLyBzaW1wbGUgcmVnZXggaW1wbGVtZW50YXRpb24gaW5zdGVhZC4KLSNkZWZpbmUg
R1RFU1RfVVNFU19TSU1QTEVfUkUgMQorIyBkZWZpbmUgR1RFU1RfVVNFU19TSU1QTEVfUkUgMQog
Ci0jZW5kaWYgIC8vIEdURVNUX09TX0NZR1dJTiB8fCBHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9P
U19NQUMgfHwKLSAgICAgICAgLy8gR1RFU1RfT1NfU1lNQklBTiB8fCBHVEVTVF9PU19TT0xBUklT
IHx8IEdURVNUX09TX0FJWCB8fAotICAgICAgICAvLyBHVEVTVF9PU19GUkVFQlNEIHx8IEdURVNU
X09TX0hVUkQKKyNlbmRpZiAgLy8gR1RFU1RfVVNFU19QQ1JFCiAKICNpZm5kZWYgR1RFU1RfSEFT
X0VYQ0VQVElPTlMKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIHdoZXRoZXIgZXhjZXB0aW9u
cyBhcmUgZW5hYmxlZCwgc28gd2UgbmVlZAogLy8gdG8gZmlndXJlIGl0IG91dC4KLSNpZiBkZWZp
bmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykKLS8vIE1TVkMncyBhbmQgQysr
QnVpbGRlcidzIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgU1RMIHVzZSB0aGUgX0hBU19FWENFUFRJ
T05TCisjIGlmIGRlZmluZWQoX01TQ19WRVIpICYmIGRlZmluZWQoX0NQUFVOV0lORCkKKy8vIE1T
VkMgZGVmaW5lcyBfQ1BQVU5XSU5EIHRvIDEgaWZmIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQuCisj
ICBkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMQorIyBlbGlmIGRlZmluZWQoX19CT1JMQU5E
Q19fKQorLy8gQysrQnVpbGRlcidzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTVEwgdXNlcyB0aGUg
X0hBU19FWENFUFRJT05TCiAvLyBtYWNybyB0byBlbmFibGUgZXhjZXB0aW9ucywgc28gd2UnbGwg
ZG8gdGhlIHNhbWUuCiAvLyBBc3N1bWVzIHRoYXQgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCBieSBk
ZWZhdWx0LgotI2lmbmRlZiBfSEFTX0VYQ0VQVElPTlMKLSNkZWZpbmUgX0hBU19FWENFUFRJT05T
IDEKLSNlbmRpZiAgLy8gX0hBU19FWENFUFRJT05TCi0jZGVmaW5lIEdURVNUX0hBU19FWENFUFRJ
T05TIF9IQVNfRVhDRVBUSU9OUwotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19FWENFUFRJ
T05TCisjICBpZm5kZWYgX0hBU19FWENFUFRJT05TCisjICAgZGVmaW5lIF9IQVNfRVhDRVBUSU9O
UyAxCisjICBlbmRpZiAgLy8gX0hBU19FWENFUFRJT05TCisjICBkZWZpbmUgR1RFU1RfSEFTX0VY
Q0VQVElPTlMgX0hBU19FWENFUFRJT05TCisjIGVsaWYgZGVmaW5lZChfX2NsYW5nX18pCisvLyBj
bGFuZyBkZWZpbmVzIF9fRVhDRVBUSU9OUyBpZmYgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCBiZWZv
cmUgY2xhbmcgMjIwNzE0LAorLy8gYnV0IGlmZiBjbGVhbnVwcyBhcmUgZW5hYmxlZCBhZnRlciB0
aGF0LiBJbiBPYmotQysrIGZpbGVzLCB0aGVyZSBjYW4gYmUKKy8vIGNsZWFudXBzIGZvciBPYmpD
IGV4Y2VwdGlvbnMgd2hpY2ggYWxzbyBuZWVkIGNsZWFudXBzLCBldmVuIGlmIEMrKyBleGNlcHRp
b25zCisvLyBhcmUgZGlzYWJsZWQuIGNsYW5nIGhhcyBfX2hhc19mZWF0dXJlKGN4eF9leGNlcHRp
b25zKSB3aGljaCBjaGVja3MgZm9yIEMrKworLy8gZXhjZXB0aW9ucyBzdGFydGluZyBhdCBjbGFu
ZyByMjA2MzUyLCBidXQgd2hpY2ggY2hlY2tlZCBmb3IgY2xlYW51cHMgcHJpb3IgdG8KKy8vIHRo
YXQuIFRvIHJlbGlhYmx5IGNoZWNrIGZvciBDKysgZXhjZXB0aW9uIGF2YWlsYWJpbGl0eSB3aXRo
IGNsYW5nLCBjaGVjayBmb3IKKy8vIF9fRVhDRVBUSU9OUyAmJiBfX2hhc19mZWF0dXJlKGN4eF9l
eGNlcHRpb25zKS4KKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAoX19FWENFUFRJT05T
ICYmIF9faGFzX2ZlYXR1cmUoY3h4X2V4Y2VwdGlvbnMpKQorIyBlbGlmIGRlZmluZWQoX19HTlVD
X18pICYmIF9fRVhDRVBUSU9OUwogLy8gZ2NjIGRlZmluZXMgX19FWENFUFRJT05TIHRvIDEgaWZm
IGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQuCi0jZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIDEK
LSNlbGlmIGRlZmluZWQoX19TVU5QUk9fQ0MpCisjICBkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElP
TlMgMQorIyBlbGlmIGRlZmluZWQoX19TVU5QUk9fQ0MpCiAvLyBTdW4gUHJvIENDIHN1cHBvcnRz
IGV4Y2VwdGlvbnMuICBIb3dldmVyLCB0aGVyZSBpcyBubyBjb21waWxlLXRpbWUgd2F5IG9mCiAv
LyBkZXRlY3Rpbmcgd2hldGhlciB0aGV5IGFyZSBlbmFibGVkIG9yIG5vdC4gIFRoZXJlZm9yZSwg
d2UgYXNzdW1lIHRoYXQKIC8vIHRoZXkgYXJlIGVuYWJsZWQgdW5sZXNzIHRoZSB1c2VyIHRlbGxz
IHVzIG90aGVyd2lzZS4KLSNkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMQotI2VsaWYgZGVm
aW5lZChfX0lCTUNQUF9fKSAmJiBfX0VYQ0VQVElPTlMKKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhD
RVBUSU9OUyAxCisjIGVsaWYgZGVmaW5lZChfX0lCTUNQUF9fKSAmJiBfX0VYQ0VQVElPTlMKIC8v
IHhsQyBkZWZpbmVzIF9fRVhDRVBUSU9OUyB0byAxIGlmZiBleGNlcHRpb25zIGFyZSBlbmFibGVk
LgotI2RlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCi0jZWxzZQorIyAgZGVmaW5lIEdURVNU
X0hBU19FWENFUFRJT05TIDEKKyMgZWxpZiBkZWZpbmVkKF9fSFBfYUNDKQorLy8gRXhjZXB0aW9u
IGhhbmRsaW5nIGlzIGluIGVmZmVjdCBieSBkZWZhdWx0IGluIEhQIGFDQyBjb21waWxlci4gSXQg
aGFzIHRvCisvLyBiZSB0dXJuZWQgb2YgYnkgK25vZWggY29tcGlsZXIgb3B0aW9uIGlmIGRlc2ly
ZWQuCisjICBkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMQorIyBlbHNlCiAvLyBGb3Igb3Ro
ZXIgY29tcGlsZXJzLCB3ZSBhc3N1bWUgZXhjZXB0aW9ucyBhcmUgZGlzYWJsZWQgdG8gYmUKIC8v
IGNvbnNlcnZhdGl2ZS4KLSNkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMAotI2VuZGlmICAv
LyBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykKKyMgIGRlZmluZSBH
VEVTVF9IQVNfRVhDRVBUSU9OUyAwCisjIGVuZGlmICAvLyBkZWZpbmVkKF9NU0NfVkVSKSB8fCBk
ZWZpbmVkKF9fQk9STEFORENfXykKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKIAog
I2lmICFkZWZpbmVkKEdURVNUX0hBU19TVERfU1RSSU5HKQogLy8gRXZlbiB0aG91Z2ggd2UgZG9u
J3QgdXNlIHRoaXMgbWFjcm8gYW55IGxvbmdlciwgd2Uga2VlcCBpdCBpbiBjYXNlCiAvLyBzb21l
IGNsaWVudHMgc3RpbGwgZGVwZW5kIG9uIGl0LgotI2RlZmluZSBHVEVTVF9IQVNfU1REX1NUUklO
RyAxCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX1NUUklORyAxCiAjZWxpZiAhR1RFU1RfSEFTX1NU
RF9TVFJJTkcKIC8vIFRoZSB1c2VyIHRvbGQgdXMgdGhhdCA6OnN0ZDo6c3RyaW5nIGlzbid0IGF2
YWlsYWJsZS4KLSNlcnJvciAiR29vZ2xlIFRlc3QgY2Fubm90IGJlIHVzZWQgd2hlcmUgOjpzdGQ6
OnN0cmluZyBpc24ndCBhdmFpbGFibGUuIgorIyBlcnJvciAiOjpzdGQ6OnN0cmluZyBpc24ndCBh
dmFpbGFibGUuIgogI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9IQVNfU1REX1NUUklORykKIAog
I2lmbmRlZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwg
dXMgd2hldGhlciA6OnN0cmluZyBpcyBhdmFpbGFibGUsIHNvIHdlIG5lZWQKLS8vIHRvIGZpZ3Vy
ZSBpdCBvdXQuCi0KLSNkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgMAotCisjIGRlZmlu
ZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORyAwCiAjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxf
U1RSSU5HCiAKICNpZm5kZWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCiAvLyBUaGUgdXNlciBkaWRu
J3QgdGVsbCB1cyB3aGV0aGVyIDo6c3RkOjp3c3RyaW5nIGlzIGF2YWlsYWJsZSwgc28gd2UgbmVl
ZAogLy8gdG8gZmlndXJlIGl0IG91dC4KLS8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiB1c2VzIGF1
dG9jb25mIHRvIGRldGVjdCB3aGV0aGVyIDo6c3RkOjp3c3RyaW5nCisvLyBGSVhNRTogdXNlcyBh
dXRvY29uZiB0byBkZXRlY3Qgd2hldGhlciA6OnN0ZDo6d3N0cmluZwogLy8gICBpcyBhdmFpbGFi
bGUuCiAKLS8vIEN5Z3dpbiAxLjUgYW5kIGJlbG93IGRvZXNuJ3Qgc3VwcG9ydCA6OnN0ZDo6d3N0
cmluZy4KLS8vIEN5Z3dpbiAxLjcgbWlnaHQgYWRkIHdzdHJpbmcgc3VwcG9ydDsgdGhpcyBzaG91
bGQgYmUgdXBkYXRlZCB3aGVuIGNsZWFyLgotLy8gU29sYXJpcycgbGliYysrIGRvZXNuJ3Qgc3Vw
cG9ydCBpdCBlaXRoZXIuCi0jZGVmaW5lIEdURVNUX0hBU19TVERfV1NUUklORyAoIShHVEVTVF9P
U19DWUdXSU4gfHwgR1RFU1RfT1NfU09MQVJJUykpCisvLyBDeWd3aW4gMS43IGFuZCBiZWxvdyBk
b2Vzbid0IHN1cHBvcnQgOjpzdGQ6OndzdHJpbmcuCisvLyBTb2xhcmlzJyBsaWJjKysgZG9lc24n
dCBzdXBwb3J0IGl0IGVpdGhlci4gIEFuZHJvaWQgaGFzCisvLyBubyBzdXBwb3J0IGZvciBpdCBh
dCBsZWFzdCBhcyByZWNlbnQgYXMgRnJveW8gKDIuMikuCisjIGRlZmluZSBHVEVTVF9IQVNfU1RE
X1dTVFJJTkcgXAorICAgICghKEdURVNUX09TX0xJTlVYX0FORFJPSUQgfHwgR1RFU1RfT1NfQ1lH
V0lOIHx8IEdURVNUX09TX1NPTEFSSVMpKQogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NU
UklORwogCiAjaWZuZGVmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwogLy8gVGhlIHVzZXIgZGlk
bid0IHRlbGwgdXMgd2hldGhlciA6OndzdHJpbmcgaXMgYXZhaWxhYmxlLCBzbyB3ZSBuZWVkCiAv
LyB0byBmaWd1cmUgaXQgb3V0LgotI2RlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcgXAor
IyBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HIFwKICAgICAoR1RFU1RfSEFTX1NURF9X
U1RSSU5HICYmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HKQogI2VuZGlmICAvLyBHVEVTVF9IQVNf
R0xPQkFMX1dTVFJJTkcKIApAQCAtMzQ0LDEzMyArNTcwLDIxMiBAQAogLy8gVGhlIHVzZXIgZGlk
bid0IHRlbGwgdXMgd2hldGhlciBSVFRJIGlzIGVuYWJsZWQsIHNvIHdlIG5lZWQgdG8KIC8vIGZp
Z3VyZSBpdCBvdXQuCiAKLSNpZmRlZiBfTVNDX1ZFUgorIyBpZmRlZiBfTVNDX1ZFUgogCi0jaWZk
ZWYgX0NQUFJUVEkgIC8vIE1TVkMgZGVmaW5lcyB0aGlzIG1hY3JvIGlmZiBSVFRJIGlzIGVuYWJs
ZWQuCi0jZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKLSNlbHNlCi0jZGVmaW5lIEdURVNUX0hBU19S
VFRJIDAKLSNlbmRpZgorIyAgaWZkZWYgX0NQUFJUVEkgIC8vIE1TVkMgZGVmaW5lcyB0aGlzIG1h
Y3JvIGlmZiBSVFRJIGlzIGVuYWJsZWQuCisjICAgZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKKyMg
IGVsc2UKKyMgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAorIyAgZW5kaWYKIAogLy8gU3RhcnRp
bmcgd2l0aCB2ZXJzaW9uIDQuMy4yLCBnY2MgZGVmaW5lcyBfX0dYWF9SVFRJIGlmZiBSVFRJIGlz
IGVuYWJsZWQuCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0g
NDAzMDIpCi0KLSNpZmRlZiBfX0dYWF9SVFRJCi0jZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKLSNl
bHNlCi0jZGVmaW5lIEdURVNUX0hBU19SVFRJIDAKLSNlbmRpZiAgLy8gX19HWFhfUlRUSQorIyBl
bGlmIGRlZmluZWQoX19HTlVDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSA0MDMwMikKKworIyAg
aWZkZWYgX19HWFhfUlRUSQorLy8gV2hlbiBidWlsZGluZyBhZ2FpbnN0IFNUTHBvcnQgd2l0aCB0
aGUgQW5kcm9pZCBOREsgYW5kIHdpdGgKKy8vIC1mcnR0aSAtZm5vLWV4Y2VwdGlvbnMsIHRoZSBi
dWlsZCBmYWlscyBhdCBsaW5rIHRpbWUgd2l0aCB1bmRlZmluZWQKKy8vIHJlZmVyZW5jZXMgdG8g
X19jeGFfYmFkX3R5cGVpZC4gTm90ZSBzdXJlIGlmIFNUTCBvciB0b29sY2hhaW4gYnVnLAorLy8g
c28gZGlzYWJsZSBSVFRJIHdoZW4gZGV0ZWN0ZWQuCisjICAgaWYgR1RFU1RfT1NfTElOVVhfQU5E
Uk9JRCAmJiBkZWZpbmVkKF9TVExQT1JUX01BSk9SKSAmJiBcCisgICAgICAgIWRlZmluZWQoX19F
WENFUFRJT05TKQorIyAgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAorIyAgIGVsc2UKKyMgICAg
ZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKKyMgICBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVhfQU5E
Uk9JRCAmJiBfX1NUTFBPUlRfTUFKT1IgJiYgIV9fRVhDRVBUSU9OUworIyAgZWxzZQorIyAgIGRl
ZmluZSBHVEVTVF9IQVNfUlRUSSAwCisjICBlbmRpZiAgLy8gX19HWFhfUlRUSQorCisvLyBDbGFu
ZyBkZWZpbmVzIF9fR1hYX1JUVEkgc3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDMuMCwgYnV0IGl0cyBt
YW51YWwgcmVjb21tZW5kcworLy8gdXNpbmcgaGFzX2ZlYXR1cmUgaW5zdGVhZC4gaGFzX2ZlYXR1
cmUoY3h4X3J0dGkpIGlzIHN1cHBvcnRlZCBzaW5jZSAyLjcsIHRoZQorLy8gZmlyc3QgdmVyc2lv
biB3aXRoIEMrKyBzdXBwb3J0LgorIyBlbGlmIGRlZmluZWQoX19jbGFuZ19fKQorCisjICBkZWZp
bmUgR1RFU1RfSEFTX1JUVEkgX19oYXNfZmVhdHVyZShjeHhfcnR0aSkKIAogLy8gU3RhcnRpbmcg
d2l0aCB2ZXJzaW9uIDkuMCBJQk0gVmlzdWFsIEFnZSBkZWZpbmVzIF9fUlRUSV9BTExfXyB0byAx
IGlmCiAvLyBib3RoIHRoZSB0eXBlaWQgYW5kIGR5bmFtaWNfY2FzdCBmZWF0dXJlcyBhcmUgcHJl
c2VudC4KLSNlbGlmIGRlZmluZWQoX19JQk1DUFBfXykgJiYgKF9fSUJNQ1BQX18gPj0gOTAwKQor
IyBlbGlmIGRlZmluZWQoX19JQk1DUFBfXykgJiYgKF9fSUJNQ1BQX18gPj0gOTAwKQogCi0jaWZk
ZWYgX19SVFRJX0FMTF9fCi0jZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKLSNlbHNlCi0jZGVmaW5l
IEdURVNUX0hBU19SVFRJIDAKLSNlbmRpZgorIyAgaWZkZWYgX19SVFRJX0FMTF9fCisjICAgZGVm
aW5lIEdURVNUX0hBU19SVFRJIDEKKyMgIGVsc2UKKyMgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkg
MAorIyAgZW5kaWYKIAotI2Vsc2UKKyMgZWxzZQogCiAvLyBGb3IgYWxsIG90aGVyIGNvbXBpbGVy
cywgd2UgYXNzdW1lIFJUVEkgaXMgZW5hYmxlZC4KLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQor
IyAgZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKIAotI2VuZGlmICAvLyBfTVNDX1ZFUgorIyBlbmRp
ZiAgLy8gX01TQ19WRVIKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfUlRUSQogCiAvLyBJdCdzIHRo
aXMgaGVhZGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gI2luY2x1ZGUgPHR5cGVpbmZvPiB3aGVuIFJU
VEkKIC8vIGlzIGVuYWJsZWQuCiAjaWYgR1RFU1RfSEFTX1JUVEkKLSNpbmNsdWRlIDx0eXBlaW5m
bz4KKyMgaW5jbHVkZSA8dHlwZWluZm8+CiAjZW5kaWYKIAogLy8gRGV0ZXJtaW5lcyB3aGV0aGVy
IEdvb2dsZSBUZXN0IGNhbiB1c2UgdGhlIHB0aHJlYWRzIGxpYnJhcnkuCiAjaWZuZGVmIEdURVNU
X0hBU19QVEhSRUFECi0vLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cyBleHBsaWNpdGx5LCBzbyB3
ZSBhc3N1bWUgcHRocmVhZHMgc3VwcG9ydCBpcwotLy8gYXZhaWxhYmxlIG9uIExpbnV4IGFuZCBN
YWMuCisvLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cyBleHBsaWNpdGx5LCBzbyB3ZSBtYWtlIHJl
YXNvbmFibGUgYXNzdW1wdGlvbnMgYWJvdXQKKy8vIHdoaWNoIHBsYXRmb3JtcyBoYXZlIHB0aHJl
YWRzIHN1cHBvcnQuCiAvLwogLy8gVG8gZGlzYWJsZSB0aHJlYWRpbmcgc3VwcG9ydCBpbiBHb29n
bGUgVGVzdCwgYWRkIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MAogLy8gdG8geW91ciBjb21waWxlciBm
bGFncy4KLSNkZWZpbmUgR1RFU1RfSEFTX1BUSFJFQUQgKEdURVNUX09TX0xJTlVYIHx8IEdURVNU
X09TX0ZSRUVCU0QgfHwgR1RFU1RfT1NfSFVSRCB8fCBHVEVTVF9PU19NQUMpCisjZGVmaW5lIEdU
RVNUX0hBU19QVEhSRUFEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAoR1RFU1RfT1NfTElOVVggfHwgR1RFU1RfT1NfTUFDIHx8IEdURVNUX09TX0hQVVgg
fHwgR1RFU1RfT1NfUU5YIHx8IFwKKyAgIEdURVNUX09TX0ZSRUVCU0QgfHwgR1RFU1RfT1NfTkFD
TCB8fCBHVEVTVF9PU19ORVRCU0QgfHwgR1RFU1RfT1NfRlVDSFNJQSkKICNlbmRpZiAgLy8gR1RF
U1RfSEFTX1BUSFJFQUQKIAorI2lmIEdURVNUX0hBU19QVEhSRUFECisvLyBndGVzdC1wb3J0Lmgg
Z3VhcmFudGVlcyB0byAjaW5jbHVkZSA8cHRocmVhZC5oPiB3aGVuIEdURVNUX0hBU19QVEhSRUFE
IGlzCisvLyB0cnVlLgorIyBpbmNsdWRlIDxwdGhyZWFkLmg+ICAvLyBOT0xJTlQKKworLy8gRm9y
IHRpbWVzcGVjIGFuZCBuYW5vc2xlZXAsIHVzZWQgYmVsb3cuCisjIGluY2x1ZGUgPHRpbWUuaD4g
IC8vIE5PTElOVAorI2VuZGlmCisKKy8vIERldGVybWluZXMgaWYgaGFzaF9tYXAvaGFzaF9zZXQg
YXJlIGF2YWlsYWJsZS4KKy8vIE9ubHkgdXNlZCBmb3IgdGVzdGluZyBhZ2FpbnN0IHRob3NlIGNv
bnRhaW5lcnMuCisjaWYgIWRlZmluZWQoR1RFU1RfSEFTX0hBU0hfTUFQXykKKyMgaWYgZGVmaW5l
ZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSIDwgMTkwMCkKKyMgIGRlZmluZSBHVEVTVF9IQVNfSEFT
SF9NQVBfIDEgIC8vIEluZGljYXRlcyB0aGF0IGhhc2hfbWFwIGlzIGF2YWlsYWJsZS4KKyMgIGRl
ZmluZSBHVEVTVF9IQVNfSEFTSF9TRVRfIDEgIC8vIEluZGljYXRlcyB0aGF0IGhhc2hfc2V0IGlz
IGF2YWlsYWJsZS4KKyMgZW5kaWYgIC8vIF9NU0NfVkVSCisjZW5kaWYgIC8vICFkZWZpbmVkKEdU
RVNUX0hBU19IQVNIX01BUF8pCisKIC8vIERldGVybWluZXMgd2hldGhlciBHb29nbGUgVGVzdCBj
YW4gdXNlIHRyMS90dXBsZS4gIFlvdSBjYW4gZGVmaW5lCiAvLyB0aGlzIG1hY3JvIHRvIDAgdG8g
cHJldmVudCBHb29nbGUgVGVzdCBmcm9tIHVzaW5nIHR1cGxlIChhbnkKIC8vIGZlYXR1cmUgZGVw
ZW5kaW5nIG9uIHR1cGxlIHdpdGggYmUgZGlzYWJsZWQgaW4gdGhpcyBtb2RlKS4KICNpZm5kZWYg
R1RFU1RfSEFTX1RSMV9UVVBMRQorIyBpZiBHVEVTVF9PU19MSU5VWF9BTkRST0lEICYmIGRlZmlu
ZWQoX1NUTFBPUlRfTUFKT1IpCisvLyBTVExwb3J0LCBwcm92aWRlZCB3aXRoIHRoZSBBbmRyb2lk
IE5ESywgaGFzIG5laXRoZXIgPHRyMS90dXBsZT4gb3IgPHR1cGxlPi4KKyMgIGRlZmluZSBHVEVT
VF9IQVNfVFIxX1RVUExFIDAKKyMgZWxpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIg
Pj0gMTkxMCkKKy8vIFByZXZlbnQgYHdhcm5pbmcgQzQ5OTY6ICdzdGQ6OnRyMSc6IHdhcm5pbmcg
U1RMNDAwMjoKKy8vIFRoZSBub24tU3RhbmRhcmQgc3RkOjp0cjEgbmFtZXNwYWNlIGFuZCBUUjEt
b25seSBtYWNoaW5lcnkKKy8vIGFyZSBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFJFTU9WRUQuYAor
IyAgZGVmaW5lIEdURVNUX0hBU19UUjFfVFVQTEUgMAorIyBlbGlmIEdURVNUX0xBTkdfQ1hYMTEg
JiYgZGVmaW5lZChfTElCQ1BQX1ZFUlNJT04pCisvLyBsaWJjKysgZG9lc24ndCBzdXBwb3J0IFRS
MS4KKyMgIGRlZmluZSBHVEVTVF9IQVNfVFIxX1RVUExFIDAKKyMgZWxzZQogLy8gVGhlIHVzZXIg
ZGlkbid0IHRlbGwgdXMgbm90IHRvIGRvIGl0LCBzbyB3ZSBhc3N1bWUgaXQncyBPSy4KLSNkZWZp
bmUgR1RFU1RfSEFTX1RSMV9UVVBMRSAxCisjICBkZWZpbmUgR1RFU1RfSEFTX1RSMV9UVVBMRSAx
CisjIGVuZGlmCiAjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUKIAogLy8gRGV0ZXJtaW5l
cyB3aGV0aGVyIEdvb2dsZSBUZXN0J3Mgb3duIHRyMSB0dXBsZSBpbXBsZW1lbnRhdGlvbgogLy8g
c2hvdWxkIGJlIHVzZWQuCiAjaWZuZGVmIEdURVNUX1VTRV9PV05fVFIxX1RVUExFCisvLyBXZSB1
c2Ugb3VyIG93biB0dXBsZSBpbXBsZW1lbnRhdGlvbiBvbiBTeW1iaWFuLgorIyBpZiBHVEVTVF9P
U19TWU1CSUFOCisjICBkZWZpbmUgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgMQorIyBlbHNlCiAv
LyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cywgc28gd2UgbmVlZCB0byBmaWd1cmUgaXQgb3V0Lgog
CiAvLyBXZSB1c2Ugb3VyIG93biBUUjEgdHVwbGUgaWYgd2UgYXJlbid0IHN1cmUgdGhlIHVzZXIg
aGFzIGFuCi0vLyBpbXBsZW1lbnRhdGlvbiBvZiBpdCBhbHJlYWR5LiAgQXQgdGhpcyB0aW1lLCBH
Q0MgNC4wLjArIGFuZCBNU1ZDCi0vLyAyMDEwIGFyZSB0aGUgb25seSBtYWluc3RyZWFtIGNvbXBp
bGVycyB0aGF0IGNvbWUgd2l0aCBhIFRSMSB0dXBsZQotLy8gaW1wbGVtZW50YXRpb24uICBOVklE
SUEncyBDVURBIE5WQ0MgY29tcGlsZXIgcHJldGVuZHMgdG8gYmUgR0NDIGJ5Ci0vLyBkZWZpbmlu
ZyBfX0dOVUNfXyBhbmQgZnJpZW5kcywgYnV0IGNhbm5vdCBjb21waWxlIEdDQydzIHR1cGxlCi0v
LyBpbXBsZW1lbnRhdGlvbi4gIE1TVkMgMjAwOCAoOS4wKSBwcm92aWRlcyBUUjEgdHVwbGUgaW4g
YSAzMjMgTUIKLS8vIEZlYXR1cmUgUGFjayBkb3dubG9hZCwgd2hpY2ggd2UgY2Fubm90IGFzc3Vt
ZSB0aGUgdXNlciBoYXMuCi0jaWYgKGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fQ1VE
QUNDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSA0MDAwMCkpIFwKLSAgICB8fCBfTVNDX1ZFUiA+
PSAxNjAwCi0jZGVmaW5lIEdURVNUX1VTRV9PV05fVFIxX1RVUExFIDAKLSNlbHNlCi0jZGVmaW5l
IEdURVNUX1VTRV9PV05fVFIxX1RVUExFIDEKLSNlbmRpZgotCisvLyBpbXBsZW1lbnRhdGlvbiBv
ZiBpdCBhbHJlYWR5LiAgQXQgdGhpcyB0aW1lLCBsaWJzdGRjKysgNC4wLjArIGFuZAorLy8gTVNW
QyAyMDEwIGFyZSB0aGUgb25seSBtYWluc3RyZWFtIHN0YW5kYXJkIGxpYnJhcmllcyB0aGF0IGNv
bWUKKy8vIHdpdGggYSBUUjEgdHVwbGUgaW1wbGVtZW50YXRpb24uICBOVklESUEncyBDVURBIE5W
Q0MgY29tcGlsZXIKKy8vIHByZXRlbmRzIHRvIGJlIEdDQyBieSBkZWZpbmluZyBfX0dOVUNfXyBh
bmQgZnJpZW5kcywgYnV0IGNhbm5vdAorLy8gY29tcGlsZSBHQ0MncyB0dXBsZSBpbXBsZW1lbnRh
dGlvbi4gIE1TVkMgMjAwOCAoOS4wKSBwcm92aWRlcyBUUjEKKy8vIHR1cGxlIGluIGEgMzIzIE1C
IEZlYXR1cmUgUGFjayBkb3dubG9hZCwgd2hpY2ggd2UgY2Fubm90IGFzc3VtZSB0aGUKKy8vIHVz
ZXIgaGFzLiAgUU5YJ3MgUUNDIGNvbXBpbGVyIGlzIGEgbW9kaWZpZWQgR0NDIGJ1dCBpdCBkb2Vz
bid0CisvLyBzdXBwb3J0IFRSMSB0dXBsZS4gIGxpYmMrKyBvbmx5IHByb3ZpZGVzIHN0ZDo6dHVw
bGUsIGluIEMrKzExIG1vZGUsCisvLyBhbmQgaXQgY2FuIGJlIHVzZWQgd2l0aCBzb21lIGNvbXBp
bGVycyB0aGF0IGRlZmluZSBfX0dOVUNfXy4KKyMgaWYgKGRlZmluZWQoX19HTlVDX18pICYmICFk
ZWZpbmVkKF9fQ1VEQUNDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSA0MDAwMCkgXAorICAgICAg
JiYgIUdURVNUX09TX1FOWCAmJiAhZGVmaW5lZChfTElCQ1BQX1ZFUlNJT04pKSBcCisgICAgICB8
fCAoX01TQ19WRVIgPj0gMTYwMCAmJiBfTVNDX1ZFUiA8IDE5MDApCisjICBkZWZpbmUgR1RFU1Rf
RU5WX0hBU19UUjFfVFVQTEVfIDEKKyMgZW5kaWYKKworLy8gQysrMTEgc3BlY2lmaWVzIHRoYXQg
PHR1cGxlPiBwcm92aWRlcyBzdGQ6OnR1cGxlLiBVc2UgdGhhdCBpZiBndGVzdCBpcyB1c2VkCisv
LyBpbiBDKysxMSBtb2RlIGFuZCBsaWJzdGRjKysgaXNuJ3QgdmVyeSBvbGQgKGJpbmFyaWVzIHRh
cmdldGluZyBPUyBYIDEwLjYKKy8vIGNhbiBidWlsZCB3aXRoIGNsYW5nIGJ1dCBuZWVkIHRvIHVz
ZSBnY2M0LjIncyBsaWJzdGRjKyspLgorIyBpZiBHVEVTVF9MQU5HX0NYWDExICYmICghZGVmaW5l
ZChfX0dMSUJDWFhfXykgfHwgX19HTElCQ1hYX18gPiAyMDExMDMyNSkKKyMgIGRlZmluZSBHVEVT
VF9FTlZfSEFTX1NURF9UVVBMRV8gMQorIyBlbmRpZgorCisjIGlmIEdURVNUX0VOVl9IQVNfVFIx
X1RVUExFXyB8fCBHVEVTVF9FTlZfSEFTX1NURF9UVVBMRV8KKyMgIGRlZmluZSBHVEVTVF9VU0Vf
T1dOX1RSMV9UVVBMRSAwCisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9VU0VfT1dOX1RSMV9UVVBM
RSAxCisjIGVuZGlmCisjIGVuZGlmICAvLyBHVEVTVF9PU19TWU1CSUFOCiAjZW5kaWYgIC8vIEdU
RVNUX1VTRV9PV05fVFIxX1RVUExFCiAKLS8vIFRvIGF2b2lkIGNvbmRpdGlvbmFsIGNvbXBpbGF0
aW9uIGV2ZXJ5d2hlcmUsIHdlIG1ha2UgaXQKLS8vIGd0ZXN0LXBvcnQuaCdzIHJlc3BvbnNpYmls
aXR5IHRvICNpbmNsdWRlIHRoZSBoZWFkZXIgaW1wbGVtZW50aW5nCi0vLyB0cjEvdHVwbGUuCisv
LyBUbyBhdm9pZCBjb25kaXRpb25hbCBjb21waWxhdGlvbiB3ZSBtYWtlIGl0IGd0ZXN0LXBvcnQu
aCdzIHJlc3BvbnNpYmlsaXR5CisvLyB0byAjaW5jbHVkZSB0aGUgaGVhZGVyIGltcGxlbWVudGlu
ZyB0dXBsZS4KKyNpZiBHVEVTVF9IQVNfU1REX1RVUExFXworIyBpbmNsdWRlIDx0dXBsZT4gIC8v
IElXWVUgcHJhZ21hOiBleHBvcnQKKyMgZGVmaW5lIEdURVNUX1RVUExFX05BTUVTUEFDRV8gOjpz
dGQKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9UVVBMRV8KKworLy8gV2UgaW5jbHVkZSB0cjE6
OnR1cGxlIGV2ZW4gaWYgc3RkOjp0dXBsZSBpcyBhdmFpbGFibGUgdG8gZGVmaW5lIHByaW50ZXJz
IGZvcgorLy8gdGhlbS4KICNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCisjIGlmbmRlZiBHVEVTVF9U
VVBMRV9OQU1FU1BBQ0VfCisjICBkZWZpbmUgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXyA6OnN0ZDo6
dHIxCisjIGVuZGlmICAvLyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfCiAKLSNpZiBHVEVTVF9VU0Vf
T1dOX1RSMV9UVVBMRQotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmg+Ci0j
ZWxpZiBHVEVTVF9PU19TWU1CSUFOCisjIGlmIEdURVNUX1VTRV9PV05fVFIxX1RVUExFCisjICBp
bmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oIiAgLy8gSVdZVSBwcmFnbWE6IGV4
cG9ydCAgLy8gTk9MSU5UCisjIGVsaWYgR1RFU1RfT1NfU1lNQklBTgogCiAvLyBPbiBTeW1iaWFu
LCBCT09TVF9IQVNfVFIxX1RVUExFIGNhdXNlcyBCb29zdCdzIFRSMSB0dXBsZSBsaWJyYXJ5IHRv
CiAvLyB1c2UgU1RMcG9ydCdzIHR1cGxlIGltcGxlbWVudGF0aW9uLCB3aGljaCB1bmZvcnR1bmF0
ZWx5IGRvZXNuJ3QKIC8vIHdvcmsgYXMgdGhlIGNvcHkgb2YgU1RMcG9ydCBkaXN0cmlidXRlZCB3
aXRoIFN5bWJpYW4gaXMgaW5jb21wbGV0ZS4KIC8vIEJ5IG1ha2luZyBzdXJlIEJPT1NUX0hBU19U
UjFfVFVQTEUgaXMgdW5kZWZpbmVkLCB3ZSBmb3JjZSBCb29zdCB0bwogLy8gdXNlIGl0cyBvd24g
dHVwbGUgaW1wbGVtZW50YXRpb24uCi0jaWZkZWYgQk9PU1RfSEFTX1RSMV9UVVBMRQotI3VuZGVm
IEJPT1NUX0hBU19UUjFfVFVQTEUKLSNlbmRpZiAgLy8gQk9PU1RfSEFTX1RSMV9UVVBMRQorIyAg
aWZkZWYgQk9PU1RfSEFTX1RSMV9UVVBMRQorIyAgIHVuZGVmIEJPT1NUX0hBU19UUjFfVFVQTEUK
KyMgIGVuZGlmICAvLyBCT09TVF9IQVNfVFIxX1RVUExFCiAKIC8vIFRoaXMgcHJldmVudHMgPGJv
b3N0L3RyMS9kZXRhaWwvY29uZmlnLmhwcD4sIHdoaWNoIGRlZmluZXMKIC8vIEJPT1NUX0hBU19U
UjFfVFVQTEUsIGZyb20gYmVpbmcgI2luY2x1ZGVkIGJ5IEJvb3N0J3MgPHR1cGxlPi4KLSNkZWZp
bmUgQk9PU1RfVFIxX0RFVEFJTF9DT05GSUdfSFBQX0lOQ0xVREVECi0jaW5jbHVkZSA8dHVwbGU+
CisjICBkZWZpbmUgQk9PU1RfVFIxX0RFVEFJTF9DT05GSUdfSFBQX0lOQ0xVREVECisjICBpbmNs
dWRlIDx0dXBsZT4gIC8vIElXWVUgcHJhZ21hOiBleHBvcnQgIC8vIE5PTElOVAogCi0jZWxpZiBk
ZWZpbmVkKF9fR05VQ19fKSAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0gNDAwMDApCisjIGVsaWYgZGVm
aW5lZChfX0dOVUNfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMDAwKQogLy8gR0NDIDQuMCsg
aW1wbGVtZW50cyB0cjEvdHVwbGUgaW4gdGhlIDx0cjEvdHVwbGU+IGhlYWRlci4gIFRoaXMgZG9l
cwogLy8gbm90IGNvbmZvcm0gdG8gdGhlIFRSMSBzcGVjLCB3aGljaCByZXF1aXJlcyB0aGUgaGVh
ZGVyIHRvIGJlIDx0dXBsZT4uCiAKLSNpZiAhR1RFU1RfSEFTX1JUVEkgJiYgR1RFU1RfR0NDX1ZF
Ul8gPCA0MDMwMgorIyAgaWYgIUdURVNUX0hBU19SVFRJICYmIEdURVNUX0dDQ19WRVJfIDwgNDAz
MDIKIC8vIFVudGlsIHZlcnNpb24gNC4zLjIsIGdjYyBoYXMgYSBidWcgdGhhdCBjYXVzZXMgPHRy
MS9mdW5jdGlvbmFsPiwKIC8vIHdoaWNoIGlzICNpbmNsdWRlZCBieSA8dHIxL3R1cGxlPiwgdG8g
bm90IGNvbXBpbGUgd2hlbiBSVFRJIGlzCiAvLyBkaXNhYmxlZC4gIF9UUjFfRlVOQ1RJT05BTCBp
cyB0aGUgaGVhZGVyIGd1YXJkIGZvcgotLy8gPHRyMS9mdW5jdGlvbmFsPi4gIEhlbmNlIHRoZSBm
b2xsb3dpbmcgI2RlZmluZSBpcyBhIGhhY2sgdG8gcHJldmVudAorLy8gPHRyMS9mdW5jdGlvbmFs
Pi4gIEhlbmNlIHRoZSBmb2xsb3dpbmcgI2RlZmluZSBpcyB1c2VkIHRvIHByZXZlbnQKIC8vIDx0
cjEvZnVuY3Rpb25hbD4gZnJvbSBiZWluZyBpbmNsdWRlZC4KLSNkZWZpbmUgX1RSMV9GVU5DVElP
TkFMIDEKLSNpbmNsdWRlIDx0cjEvdHVwbGU+Ci0jdW5kZWYgX1RSMV9GVU5DVElPTkFMICAvLyBB
bGxvd3MgdGhlIHVzZXIgdG8gI2luY2x1ZGUKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIDx0
cjEvZnVuY3Rpb25hbD4gaWYgaGUgY2hvb3NlcyB0by4KLSNlbHNlCi0jaW5jbHVkZSA8dHIxL3R1
cGxlPiAgLy8gTk9MSU5UCi0jZW5kaWYgIC8vICFHVEVTVF9IQVNfUlRUSSAmJiBHVEVTVF9HQ0Nf
VkVSXyA8IDQwMzAyCi0KLSNlbHNlCi0vLyBJZiB0aGUgY29tcGlsZXIgaXMgbm90IEdDQyA0LjAr
LCB3ZSBhc3N1bWUgdGhlIHVzZXIgaXMgdXNpbmcgYQotLy8gc3BlYy1jb25mb3JtaW5nIFRSMSBp
bXBsZW1lbnRhdGlvbi4KLSNpbmNsdWRlIDx0dXBsZT4gIC8vIE5PTElOVAotI2VuZGlmICAvLyBH
VEVTVF9VU0VfT1dOX1RSMV9UVVBMRQorIyAgIGRlZmluZSBfVFIxX0ZVTkNUSU9OQUwgMQorIyAg
IGluY2x1ZGUgPHRyMS90dXBsZT4KKyMgICB1bmRlZiBfVFIxX0ZVTkNUSU9OQUwgIC8vIEFsbG93
cyB0aGUgdXNlciB0byAjaW5jbHVkZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gPHRyMS9m
dW5jdGlvbmFsPiBpZiB0aGV5IGNob29zZSB0by4KKyMgIGVsc2UKKyMgICBpbmNsdWRlIDx0cjEv
dHVwbGU+ICAvLyBOT0xJTlQKKyMgIGVuZGlmICAvLyAhR1RFU1RfSEFTX1JUVEkgJiYgR1RFU1Rf
R0NDX1ZFUl8gPCA0MDMwMgorCisvLyBWUyAyMDEwIG5vdyBoYXMgdHIxIHN1cHBvcnQuCisjIGVs
aWYgX01TQ19WRVIgPj0gMTYwMAorIyAgaW5jbHVkZSA8dHVwbGU+ICAvLyBJV1lVIHByYWdtYTog
ZXhwb3J0ICAvLyBOT0xJTlQKKworIyBlbHNlICAvLyBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRQor
IyAgaW5jbHVkZSA8dHIxL3R1cGxlPiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydCAgLy8gTk9MSU5U
CisjIGVuZGlmICAvLyBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRQogCiAjZW5kaWYgIC8vIEdURVNU
X0hBU19UUjFfVFVQTEUKIApAQCAtNDgxLDU5ICs3ODYsODAgQEAKICNpZm5kZWYgR1RFU1RfSEFT
X0NMT05FCiAvLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cywgc28gd2UgbmVlZCB0byBmaWd1cmUg
aXQgb3V0LgogCi0jaWYgR1RFU1RfT1NfTElOVVggJiYgIWRlZmluZWQoX19pYTY0X18pCi0jZGVm
aW5lIEdURVNUX0hBU19DTE9ORSAxCi0jZWxzZQotI2RlZmluZSBHVEVTVF9IQVNfQ0xPTkUgMAot
I2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWCAmJiAhZGVmaW5lZChfX2lhNjRfXykKKyMgaWYgR1RF
U1RfT1NfTElOVVggJiYgIWRlZmluZWQoX19pYTY0X18pCisjICBpZiBHVEVTVF9PU19MSU5VWF9B
TkRST0lECisvLyBPbiBBbmRyb2lkLCBjbG9uZSgpIGJlY2FtZSBhdmFpbGFibGUgYXQgZGlmZmVy
ZW50IEFQSSBsZXZlbHMgZm9yIGVhY2ggMzItYml0CisvLyBhcmNoaXRlY3R1cmUuCisjICAgIGlm
IGRlZmluZWQoX19MUDY0X18pIHx8IFwKKyAgICAgICAgKGRlZmluZWQoX19hcm1fXykgJiYgX19B
TkRST0lEX0FQSV9fID49IDkpIHx8IFwKKyAgICAgICAgKGRlZmluZWQoX19taXBzX18pICYmIF9f
QU5EUk9JRF9BUElfXyA+PSAxMikgfHwgXAorICAgICAgICAoZGVmaW5lZChfX2kzODZfXykgJiYg
X19BTkRST0lEX0FQSV9fID49IDE3KQorIyAgICAgZGVmaW5lIEdURVNUX0hBU19DTE9ORSAxCisj
ICAgIGVsc2UKKyMgICAgIGRlZmluZSBHVEVTVF9IQVNfQ0xPTkUgMAorIyAgICBlbmRpZgorIyAg
ZWxzZQorIyAgIGRlZmluZSBHVEVTVF9IQVNfQ0xPTkUgMQorIyAgZW5kaWYKKyMgZWxzZQorIyAg
ZGVmaW5lIEdURVNUX0hBU19DTE9ORSAwCisjIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWCAmJiAh
ZGVmaW5lZChfX2lhNjRfXykKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUKIAogLy8gRGV0
ZXJtaW5lcyB3aGV0aGVyIHRvIHN1cHBvcnQgc3RyZWFtIHJlZGlyZWN0aW9uLiBUaGlzIGlzIHVz
ZWQgdG8gdGVzdAogLy8gb3V0cHV0IGNvcnJlY3RuZXNzIGFuZCB0byBpbXBsZW1lbnQgZGVhdGgg
dGVzdHMuCi0jaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFICYmICFHVEVTVF9PU19TWU1CSUFO
Ci0jZGVmaW5lIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fIDEKLSNlbmRpZiAgLy8gIUdU
RVNUX09TX1dJTkRPV1NfTU9CSUxFICYmICFHVEVTVF9PU19TWU1CSUFOCisjaWZuZGVmIEdURVNU
X0hBU19TVFJFQU1fUkVESVJFQ1RJT04KKy8vIEJ5IGRlZmF1bHQsIHdlIGFzc3VtZSB0aGF0IHN0
cmVhbSByZWRpcmVjdGlvbiBpcyBzdXBwb3J0ZWQgb24gYWxsCisvLyBwbGF0Zm9ybXMgZXhjZXB0
IGtub3duIG1vYmlsZSBvbmVzLgorIyBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRSB8fCBHVEVT
VF9PU19TWU1CSUFOIHx8IFwKKyAgICBHVEVTVF9PU19XSU5ET1dTX1BIT05FIHx8IEdURVNUX09T
X1dJTkRPV1NfUlQKKyMgIGRlZmluZSBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OIDAKKyMg
ZWxzZQorIyAgZGVmaW5lIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04gMQorIyBlbmRpZiAg
Ly8gIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFICYmICFHVEVTVF9PU19TWU1CSUFOCisjZW5kaWYg
IC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KIAogLy8gRGV0ZXJtaW5lcyB3aGV0aGVy
IHRvIHN1cHBvcnQgZGVhdGggdGVzdHMuCiAvLyBHb29nbGUgVGVzdCBkb2VzIG5vdCBzdXBwb3J0
IGRlYXRoIHRlc3RzIGZvciBWQyA3LjEgYW5kIGVhcmxpZXIgYXMKIC8vIGFib3J0KCkgaW4gYSBW
QyA3LjEgYXBwbGljYXRpb24gY29tcGlsZWQgYXMgR1VJIGluIGRlYnVnIGNvbmZpZwogLy8gcG9w
cyB1cCBhIGRpYWxvZyB3aW5kb3cgdGhhdCBjYW5ub3QgYmUgc3VwcHJlc3NlZCBwcm9ncmFtbWF0
aWNhbGx5LgotI2lmIChHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19GUkVFQlNEIHx8IEdURVNU
X09TX0hVUkQgfHwgXAotICAgICBHVEVTVF9PU19NQUMgfHwgR1RFU1RfT1NfQ1lHV0lOIHx8IEdU
RVNUX09TX1NPTEFSSVMgfHwgXAotICAgICAoR1RFU1RfT1NfV0lORE9XU19ERVNLVE9QICYmIF9N
U0NfVkVSID49IDE0MDApIHx8IFwKLSAgICAgR1RFU1RfT1NfV0lORE9XU19NSU5HVyB8fCBHVEVT
VF9PU19BSVgpCi0jZGVmaW5lIEdURVNUX0hBU19ERUFUSF9URVNUIDEKLSNpbmNsdWRlIDx2ZWN0
b3I+ICAvLyBOT0xJTlQKKyNpZiAoR1RFU1RfT1NfTElOVVggfHwgR1RFU1RfT1NfQ1lHV0lOIHx8
IEdURVNUX09TX1NPTEFSSVMgfHwgICBcCisgICAgIChHVEVTVF9PU19NQUMgJiYgIUdURVNUX09T
X0lPUykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoR1RFU1RfT1NfV0lORE9X
U19ERVNLVE9QICYmIF9NU0NfVkVSID49IDE0MDApIHx8ICAgICAgICAgIFwKKyAgICAgR1RFU1Rf
T1NfV0lORE9XU19NSU5HVyB8fCBHVEVTVF9PU19BSVggfHwgR1RFU1RfT1NfSFBVWCB8fCBcCisg
ICAgIEdURVNUX09TX09QRU5CU0QgfHwgR1RFU1RfT1NfUU5YIHx8IEdURVNUX09TX0ZSRUVCU0Qg
fHwgXAorICAgICBHVEVTVF9PU19ORVRCU0QgfHwgR1RFU1RfT1NfRlVDSFNJQSkKKyMgZGVmaW5l
IEdURVNUX0hBU19ERUFUSF9URVNUIDEKICNlbmRpZgogCi0vLyBXZSBkb24ndCBzdXBwb3J0IE1T
VkMgNy4xIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZCBub3cuICBUaGVyZWZvcmUKLS8vIGFsbCB0
aGUgY29tcGlsZXJzIHdlIGNhcmUgYWJvdXQgYXJlIGFkZXF1YXRlIGZvciBzdXBwb3J0aW5nCi0v
LyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgotI2RlZmluZSBHVEVTVF9IQVNfUEFSQU1fVEVT
VCAxCi0KIC8vIERldGVybWluZXMgd2hldGhlciB0byBzdXBwb3J0IHR5cGUtZHJpdmVuIHRlc3Rz
LgogCiAvLyBUeXBlZCB0ZXN0cyBuZWVkIDx0eXBlaW5mbz4gYW5kIHZhcmlhZGljIG1hY3Jvcywg
d2hpY2ggR0NDLCBWQysrIDguMCwKLS8vIFN1biBQcm8gQ0MsIGFuZCBJQk0gVmlzdWFsIEFnZSBz
dXBwb3J0LgorLy8gU3VuIFBybyBDQywgSUJNIFZpc3VhbCBBZ2UsIGFuZCBIUCBhQ0Mgc3VwcG9y
dC4KICNpZiBkZWZpbmVkKF9fR05VQ19fKSB8fCAoX01TQ19WRVIgPj0gMTQwMCkgfHwgZGVmaW5l
ZChfX1NVTlBST19DQykgfHwgXAotICAgIGRlZmluZWQoX19JQk1DUFBfXykKLSNkZWZpbmUgR1RF
U1RfSEFTX1RZUEVEX1RFU1QgMQotI2RlZmluZSBHVEVTVF9IQVNfVFlQRURfVEVTVF9QIDEKKyAg
ICBkZWZpbmVkKF9fSUJNQ1BQX18pIHx8IGRlZmluZWQoX19IUF9hQ0MpCisjIGRlZmluZSBHVEVT
VF9IQVNfVFlQRURfVEVTVCAxCisjIGRlZmluZSBHVEVTVF9IQVNfVFlQRURfVEVTVF9QIDEKICNl
bmRpZgogCiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc3VwcG9ydCBDb21iaW5lKCkuIFRoaXMg
b25seSBtYWtlcyBzZW5zZSB3aGVuCiAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBl
bmFibGVkLiAgVGhlIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QKIC8vIHdvcmsgb24gU3VuIFN0dWRp
byBzaW5jZSBpdCBkb2Vzbid0IHVuZGVyc3RhbmQgdGVtcGxhdGVkIGNvbnZlcnNpb24KIC8vIG9w
ZXJhdG9ycy4KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVCAmJiBHVEVTVF9IQVNfVFIxX1RVUExF
ICYmICFkZWZpbmVkKF9fU1VOUFJPX0NDKQotI2RlZmluZSBHVEVTVF9IQVNfQ09NQklORSAxCisj
aWYgKEdURVNUX0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8pICYmICFkZWZp
bmVkKF9fU1VOUFJPX0NDKQorIyBkZWZpbmUgR1RFU1RfSEFTX0NPTUJJTkUgMQogI2VuZGlmCiAK
IC8vIERldGVybWluZXMgd2hldGhlciB0aGUgc3lzdGVtIGNvbXBpbGVyIHVzZXMgVVRGLTE2IGZv
ciBlbmNvZGluZyB3aWRlIHN0cmluZ3MuCiAjZGVmaW5lIEdURVNUX1dJREVfU1RSSU5HX1VTRVNf
VVRGMTZfIFwKICAgICAoR1RFU1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19DWUdXSU4gfHwgR1RF
U1RfT1NfU1lNQklBTiB8fCBHVEVTVF9PU19BSVgpCiAKKy8vIERldGVybWluZXMgd2hldGhlciB0
ZXN0IHJlc3VsdHMgY2FuIGJlIHN0cmVhbWVkIHRvIGEgc29ja2V0LgorI2lmIEdURVNUX09TX0xJ
TlVYCisjIGRlZmluZSBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfIDEKKyNlbmRpZgorCiAvLyBE
ZWZpbmVzIHNvbWUgdXRpbGl0eSBtYWNyb3MuCiAKIC8vIFRoZSBHTlUgY29tcGlsZXIgZW1pdHMg
YSB3YXJuaW5nIGlmIG5lc3RlZCAiaWYiIHN0YXRlbWVudHMgYXJlIGZvbGxvd2VkIGJ5CkBAIC01
NDUsOSArODcxLDkgQEAKIC8vCiAvLyBUaGUgInN3aXRjaCAoMCkgY2FzZSAwOiIgaWRpb20gaXMg
dXNlZCB0byBzdXBwcmVzcyB0aGlzLgogI2lmZGVmIF9fSU5URUxfQ09NUElMRVIKLSNkZWZpbmUg
R1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8KKyMgZGVmaW5lIEdURVNUX0FNQklHVU9VU19F
TFNFX0JMT0NLRVJfCiAjZWxzZQotI2RlZmluZSBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VS
XyBzd2l0Y2ggKDApIGNhc2UgMDogIC8vIE5PTElOVAorIyBkZWZpbmUgR1RFU1RfQU1CSUdVT1VT
X0VMU0VfQkxPQ0tFUl8gc3dpdGNoICgwKSBjYXNlIDA6IGRlZmF1bHQ6ICAvLyBOT0xJTlQKICNl
bmRpZgogCiAvLyBVc2UgdGhpcyBhbm5vdGF0aW9uIGF0IHRoZSBlbmQgb2YgYSBzdHJ1Y3QvY2xh
c3MgZGVmaW5pdGlvbiB0bwpAQCAtNTYyLDIwICs4ODgsNDkgQEAKIC8vIEFsc28gdXNlIGl0IGFm
dGVyIGEgdmFyaWFibGUgb3IgcGFyYW1ldGVyIGRlY2xhcmF0aW9uIHRvIHRlbGwgdGhlCiAvLyBj
b21waWxlciB0aGUgdmFyaWFibGUvcGFyYW1ldGVyIGRvZXMgbm90IGhhdmUgdG8gYmUgdXNlZC4K
ICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChDT01QSUxFUl9JQ0MpCi0jZGVmaW5l
IEdURVNUX0FUVFJJQlVURV9VTlVTRURfIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQorIyBkZWZp
bmUgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCisjZWxp
ZiBkZWZpbmVkKF9fY2xhbmdfXykKKyMgaWYgX19oYXNfYXR0cmlidXRlKHVudXNlZCkKKyMgIGRl
ZmluZSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKKyMg
ZW5kaWYKKyNlbmRpZgorI2lmbmRlZiBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXworIyBkZWZpbmUg
R1RFU1RfQVRUUklCVVRFX1VOVVNFRF8KKyNlbmRpZgorCisjaWYgR1RFU1RfTEFOR19DWFgxMQor
IyBkZWZpbmUgR1RFU1RfQ1hYMTFfRVFVQUxTX0RFTEVURV8gPSBkZWxldGUKKyNlbHNlICAvLyBH
VEVTVF9MQU5HX0NYWDExCisjIGRlZmluZSBHVEVTVF9DWFgxMV9FUVVBTFNfREVMRVRFXworI2Vu
ZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisKKy8vIFVzZSB0aGlzIGFubm90YXRpb24gYmVmb3Jl
IGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHByaW50ZiBmb3JtYXQgc3RyaW5nLgorI2lmIChkZWZp
bmVkKF9fR05VQ19fKSB8fCBkZWZpbmVkKF9fY2xhbmdfXykpICYmICFkZWZpbmVkKENPTVBJTEVS
X0lDQykKKyMgaWYgZGVmaW5lZChfX01JTkdXX1BSSU5URl9GT1JNQVQpCisvLyBNaW5HVyBoYXMg
dHdvIGRpZmZlcmVudCBwcmludGYgaW1wbGVtZW50YXRpb25zLiBFbnN1cmUgdGhlIGZvcm1hdCBt
YWNybworLy8gbWF0Y2hlcyB0aGUgc2VsZWN0ZWQgaW1wbGVtZW50YXRpb24uIFNlZQorLy8gaHR0
cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9taW5ndy13NjQvd2lraTIvZ251JTIwcHJpbnRmLy4KKyMg
IGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfUFJJTlRGXyhzdHJpbmdfaW5kZXgsIGZpcnN0X3RvX2No
ZWNrKSBcCisgICAgICAgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhfX01JTkdXX1BSSU5URl9G
T1JNQVQsIHN0cmluZ19pbmRleCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zmlyc3RfdG9fY2hlY2spKSkKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9QUklO
VEZfKHN0cmluZ19pbmRleCwgZmlyc3RfdG9fY2hlY2spIFwKKyAgICAgICBfX2F0dHJpYnV0ZV9f
KChfX2Zvcm1hdF9fKF9fcHJpbnRmX18sIHN0cmluZ19pbmRleCwgZmlyc3RfdG9fY2hlY2spKSkK
KyMgZW5kaWYKICNlbHNlCi0jZGVmaW5lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfCisjIGRlZmlu
ZSBHVEVTVF9BVFRSSUJVVEVfUFJJTlRGXyhzdHJpbmdfaW5kZXgsIGZpcnN0X3RvX2NoZWNrKQog
I2VuZGlmCiAKKwogLy8gQSBtYWNybyB0byBkaXNhbGxvdyBvcGVyYXRvcj0KIC8vIFRoaXMgc2hv
dWxkIGJlIHVzZWQgaW4gdGhlIHByaXZhdGU6IGRlY2xhcmF0aW9ucyBmb3IgYSBjbGFzcy4KLSNk
ZWZpbmUgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyh0eXBlKVwKLSAgdm9pZCBvcGVyYXRvcj0odHlw
ZSBjb25zdCAmKQorI2RlZmluZSBHVEVTVF9ESVNBTExPV19BU1NJR05fKHR5cGUpIFwKKyAgdm9p
ZCBvcGVyYXRvcj0odHlwZSBjb25zdCAmKSBHVEVTVF9DWFgxMV9FUVVBTFNfREVMRVRFXwogCiAv
LyBBIG1hY3JvIHRvIGRpc2FsbG93IGNvcHkgY29uc3RydWN0b3IgYW5kIG9wZXJhdG9yPQogLy8g
VGhpcyBzaG91bGQgYmUgdXNlZCBpbiB0aGUgcHJpdmF0ZTogZGVjbGFyYXRpb25zIGZvciBhIGNs
YXNzLgotI2RlZmluZSBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKHR5cGUpXAotICB0
eXBlKHR5cGUgY29uc3QgJik7XAorI2RlZmluZSBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJ
R05fKHR5cGUpIFwKKyAgdHlwZSh0eXBlIGNvbnN0ICYpIEdURVNUX0NYWDExX0VRVUFMU19ERUxF
VEVfOyBcCiAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8odHlwZSkKIAogLy8gVGVsbCB0aGUgY29t
cGlsZXIgdG8gd2FybiBhYm91dCB1bnVzZWQgcmV0dXJuIHZhbHVlcyBmb3IgZnVuY3Rpb25zIGRl
Y2xhcmVkCkBAIC01ODQsNzIgKzkzOSwyNTAgQEAKIC8vCiAvLyAgIFNwcm9ja2V0KiBBbGxvY2F0
ZVNwcm9ja2V0KCkgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXzsKICNpZiBkZWZpbmVkKF9fR05VQ19f
KSAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0gMzA0MDApICYmICFkZWZpbmVkKENPTVBJTEVSX0lDQykK
LSNkZWZpbmUgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXyBfX2F0dHJpYnV0ZV9fICgod2Fybl91bnVz
ZWRfcmVzdWx0KSkKKyMgZGVmaW5lIEdURVNUX01VU1RfVVNFX1JFU1VMVF8gX19hdHRyaWJ1dGVf
XyAoKHdhcm5fdW51c2VkX3Jlc3VsdCkpCiAjZWxzZQotI2RlZmluZSBHVEVTVF9NVVNUX1VTRV9S
RVNVTFRfCisjIGRlZmluZSBHVEVTVF9NVVNUX1VTRV9SRVNVTFRfCiAjZW5kaWYgIC8vIF9fR05V
Q19fICYmIChHVEVTVF9HQ0NfVkVSXyA+PSAzMDQwMCkgJiYgIUNPTVBJTEVSX0lDQwogCisvLyBN
UyBDKysgY29tcGlsZXIgZW1pdHMgd2FybmluZyB3aGVuIGEgY29uZGl0aW9uYWwgZXhwcmVzc2lv
biBpcyBjb21waWxlIHRpbWUKKy8vIGNvbnN0YW50LiBJbiBzb21lIGNvbnRleHRzIHRoaXMgd2Fy
bmluZyBpcyBmYWxzZSBwb3NpdGl2ZSBhbmQgbmVlZHMgdG8gYmUKKy8vIHN1cHByZXNzZWQuIFVz
ZSB0aGUgZm9sbG93aW5nIHR3byBtYWNyb3MgaW4gc3VjaCBjYXNlczoKKy8vCisvLyBHVEVTVF9J
TlRFTlRJT05BTF9DT05TVF9DT05EX1BVU0hfKCkKKy8vIHdoaWxlICh0cnVlKSB7CisvLyBHVEVT
VF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BPUF8oKQorLy8gfQorIyBkZWZpbmUgR1RFU1RfSU5U
RU5USU9OQUxfQ09OU1RfQ09ORF9QVVNIXygpIFwKKyAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJO
SU5HU19QVVNIXyg0MTI3KQorIyBkZWZpbmUgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9Q
T1BfKCkgXAorICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQorCiAvLyBEZXRl
cm1pbmUgd2hldGhlciB0aGUgY29tcGlsZXIgc3VwcG9ydHMgTWljcm9zb2Z0J3MgU3RydWN0dXJl
ZCBFeGNlcHRpb24KIC8vIEhhbmRsaW5nLiAgVGhpcyBpcyBzdXBwb3J0ZWQgYnkgc2V2ZXJhbCBX
aW5kb3dzIGNvbXBpbGVycyBidXQgZ2VuZXJhbGx5CiAvLyBkb2VzIG5vdCBleGlzdCBvbiBhbnkg
b3RoZXIgc3lzdGVtLgogI2lmbmRlZiBHVEVTVF9IQVNfU0VICiAvLyBUaGUgdXNlciBkaWRuJ3Qg
dGVsbCB1cywgc28gd2UgbmVlZCB0byBmaWd1cmUgaXQgb3V0LgogCi0jaWYgZGVmaW5lZChfTVND
X1ZFUikgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pCisjIGlmIGRlZmluZWQoX01TQ19WRVIpIHx8
IGRlZmluZWQoX19CT1JMQU5EQ19fKQogLy8gVGhlc2UgdHdvIGNvbXBpbGVycyBhcmUga25vd24g
dG8gc3VwcG9ydCBTRUguCi0jZGVmaW5lIEdURVNUX0hBU19TRUggMQotI2Vsc2UKKyMgIGRlZmlu
ZSBHVEVTVF9IQVNfU0VIIDEKKyMgZWxzZQogLy8gQXNzdW1lIG5vIFNFSC4KLSNkZWZpbmUgR1RF
U1RfSEFTX1NFSCAwCi0jZW5kaWYKKyMgIGRlZmluZSBHVEVTVF9IQVNfU0VIIDAKKyMgZW5kaWYK
IAotI2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICisjZGVmaW5lIEdURVNUX0lTX1RIUkVBRFNBRkUg
XAorICAgIChHVEVTVF9IQVNfTVVURVhfQU5EX1RIUkVBRF9MT0NBTF8gXAorICAgICB8fCAoR1RF
U1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lO
RE9XU19SVCkgXAorICAgICB8fCBHVEVTVF9IQVNfUFRIUkVBRCkKIAotI2lmZGVmIF9NU0NfVkVS
CisjZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKIAotI2lmIEdURVNUX0xJTktFRF9BU19TSEFSRURf
TElCUkFSWQotI2RlZmluZSBHVEVTVF9BUElfIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotI2VsaWYg
R1RFU1RfQ1JFQVRFX1NIQVJFRF9MSUJSQVJZCi0jZGVmaW5lIEdURVNUX0FQSV8gX19kZWNsc3Bl
YyhkbGxleHBvcnQpCi0jZW5kaWYKKy8vIEdURVNUX0FQSV8gcXVhbGlmaWVzIGFsbCBzeW1ib2xz
IHRoYXQgbXVzdCBiZSBleHBvcnRlZC4gVGhlIGRlZmluaXRpb25zIGJlbG93CisvLyBhcmUgZ3Vh
cmRlZCBieSAjaWZuZGVmIHRvIGdpdmUgZW1iZWRkZXJzIGEgY2hhbmNlIHRvIGRlZmluZSBHVEVT
VF9BUElfIGluCisvLyBndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oCisjaWZuZGVm
IEdURVNUX0FQSV8KIAorI2lmZGVmIF9NU0NfVkVSCisjIGlmIEdURVNUX0xJTktFRF9BU19TSEFS
RURfTElCUkFSWQorIyAgZGVmaW5lIEdURVNUX0FQSV8gX19kZWNsc3BlYyhkbGxpbXBvcnQpCisj
IGVsaWYgR1RFU1RfQ1JFQVRFX1NIQVJFRF9MSUJSQVJZCisjICBkZWZpbmUgR1RFU1RfQVBJXyBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkKKyMgZW5kaWYKKyNlbGlmIF9fR05VQ19fID49IDQgfHwgZGVm
aW5lZChfX2NsYW5nX18pCisjIGRlZmluZSBHVEVTVF9BUElfIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkgKCJkZWZhdWx0IikpKQogI2VuZGlmICAvLyBfTVNDX1ZFUgogCisjZW5kaWYgIC8vIEdU
RVNUX0FQSV8KKwogI2lmbmRlZiBHVEVTVF9BUElfCi0jZGVmaW5lIEdURVNUX0FQSV8KKyMgZGVm
aW5lIEdURVNUX0FQSV8KKyNlbmRpZiAgLy8gR1RFU1RfQVBJXworCisjaWZuZGVmIEdURVNUX0RF
RkFVTFRfREVBVEhfVEVTVF9TVFlMRQorIyBkZWZpbmUgR1RFU1RfREVGQVVMVF9ERUFUSF9URVNU
X1NUWUxFICAiZmFzdCIKKyNlbmRpZiAgLy8gR1RFU1RfREVGQVVMVF9ERUFUSF9URVNUX1NUWUxF
CisKKyNpZmRlZiBfX0dOVUNfXworLy8gQXNrIHRoZSBjb21waWxlciB0byBuZXZlciBpbmxpbmUg
YSBnaXZlbiBmdW5jdGlvbi4KKyMgZGVmaW5lIEdURVNUX05PX0lOTElORV8gX19hdHRyaWJ1dGVf
Xygobm9pbmxpbmUpKQorI2Vsc2UKKyMgZGVmaW5lIEdURVNUX05PX0lOTElORV8KICNlbmRpZgog
CisvLyBfTElCQ1BQX1ZFUlNJT04gaXMgZGVmaW5lZCBieSB0aGUgbGliYysrIGxpYnJhcnkgZnJv
bSB0aGUgTExWTSBwcm9qZWN0LgorI2lmICFkZWZpbmVkKEdURVNUX0hBU19DWFhBQklfSF8pCisj
IGlmIGRlZmluZWQoX19HTElCQ1hYX18pIHx8IChkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikgJiYg
IWRlZmluZWQoX01TQ19WRVIpKQorIyAgZGVmaW5lIEdURVNUX0hBU19DWFhBQklfSF8gMQorIyBl
bHNlCisjICBkZWZpbmUgR1RFU1RfSEFTX0NYWEFCSV9IXyAwCisjIGVuZGlmCisjZW5kaWYKKwor
Ly8gQSBmdW5jdGlvbiBsZXZlbCBhdHRyaWJ1dGUgdG8gZGlzYWJsZSBjaGVja2luZyBmb3IgdXNl
IG9mIHVuaW5pdGlhbGl6ZWQKKy8vIG1lbW9yeSB3aGVuIGJ1aWx0IHdpdGggTWVtb3J5U2FuaXRp
emVyLgorI2lmIGRlZmluZWQoX19jbGFuZ19fKQorIyBpZiBfX2hhc19mZWF0dXJlKG1lbW9yeV9z
YW5pdGl6ZXIpCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8g
XAorICAgICAgIF9fYXR0cmlidXRlX18oKG5vX3Nhbml0aXplX21lbW9yeSkpCisjIGVsc2UKKyMg
IGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfTUVNT1JZXworIyBlbmRpZiAgLy8g
X19oYXNfZmVhdHVyZShtZW1vcnlfc2FuaXRpemVyKQorI2Vsc2UKKyMgZGVmaW5lIEdURVNUX0FU
VFJJQlVURV9OT19TQU5JVElaRV9NRU1PUllfCisjZW5kaWYgIC8vIF9fY2xhbmdfXworCisvLyBB
IGZ1bmN0aW9uIGxldmVsIGF0dHJpYnV0ZSB0byBkaXNhYmxlIEFkZHJlc3NTYW5pdGl6ZXIgaW5z
dHJ1bWVudGF0aW9uLgorI2lmIGRlZmluZWQoX19jbGFuZ19fKQorIyBpZiBfX2hhc19mZWF0dXJl
KGFkZHJlc3Nfc2FuaXRpemVyKQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVEla
RV9BRERSRVNTXyBcCisgICAgICAgX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfYWRkcmVzcykp
CisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTU18K
KyMgZW5kaWYgIC8vIF9faGFzX2ZlYXR1cmUoYWRkcmVzc19zYW5pdGl6ZXIpCisjZWxzZQorIyBk
ZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX0FERFJFU1NfCisjZW5kaWYgIC8vIF9f
Y2xhbmdfXworCisvLyBBIGZ1bmN0aW9uIGxldmVsIGF0dHJpYnV0ZSB0byBkaXNhYmxlIFRocmVh
ZFNhbml0aXplciBpbnN0cnVtZW50YXRpb24uCisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisjIGlm
IF9faGFzX2ZlYXR1cmUodGhyZWFkX3Nhbml0aXplcikKKyMgIGRlZmluZSBHVEVTVF9BVFRSSUJV
VEVfTk9fU0FOSVRJWkVfVEhSRUFEXyBcCisgICAgICAgX19hdHRyaWJ1dGVfXygobm9fc2FuaXRp
emVfdGhyZWFkKSkKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVEla
RV9USFJFQURfCisjIGVuZGlmICAvLyBfX2hhc19mZWF0dXJlKHRocmVhZF9zYW5pdGl6ZXIpCisj
ZWxzZQorIyBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KKyNlbmRp
ZiAgLy8gX19jbGFuZ19fCisKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIAogY2xhc3MgTWVzc2FnZTsK
IAorI2lmIGRlZmluZWQoR1RFU1RfVFVQTEVfTkFNRVNQQUNFXykKKy8vIEltcG9ydCB0dXBsZSBh
bmQgZnJpZW5kcyBpbnRvIHRoZSA6OnRlc3RpbmcgbmFtZXNwYWNlLgorLy8gSXQgaXMgcGFydCBv
ZiBvdXIgaW50ZXJmYWNlLCBoYXZpbmcgdGhlbSBpbiA6OnRlc3RpbmcgYWxsb3dzIHVzIHRvIGNo
YW5nZQorLy8gdGhlaXIgdHlwZXMgYXMgbmVlZGVkLgordXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQ
QUNFXzo6Z2V0OwordXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXzo6bWFrZV90dXBsZTsKK3Vz
aW5nIEdURVNUX1RVUExFX05BTUVTUEFDRV86OnR1cGxlOwordXNpbmcgR1RFU1RfVFVQTEVfTkFN
RVNQQUNFXzo6dHVwbGVfc2l6ZTsKK3VzaW5nIEdURVNUX1RVUExFX05BTUVTUEFDRV86OnR1cGxl
X2VsZW1lbnQ7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfVFVQTEVfTkFNRVNQQUNFXykKKwog
bmFtZXNwYWNlIGludGVybmFsIHsKIAotY2xhc3MgU3RyaW5nOworLy8gQSBzZWNyZXQgdHlwZSB0
aGF0IEdvb2dsZSBUZXN0IHVzZXJzIGRvbid0IGtub3cgYWJvdXQuICBJdCBoYXMgbm8KKy8vIGRl
ZmluaXRpb24gb24gcHVycG9zZS4gIFRoZXJlZm9yZSBpdCdzIGltcG9zc2libGUgdG8gY3JlYXRl
IGEKKy8vIFNlY3JldCBvYmplY3QsIHdoaWNoIGlzIHdoYXQgd2Ugd2FudC4KK2NsYXNzIFNlY3Jl
dDsKIAotY2xhc3MgU3RyU3RyZWFtIDogcHVibGljIDo6c3RkOjpzdHJpbmdzdHJlYW0gewotIHB1
YmxpYzoKLSAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsg
fQotICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0K
Ky8vIFRoZSBHVEVTVF9DT01QSUxFX0FTU0VSVF8gbWFjcm8gY2FuIGJlIHVzZWQgdG8gdmVyaWZ5
IHRoYXQgYSBjb21waWxlIHRpbWUKKy8vIGV4cHJlc3Npb24gaXMgdHJ1ZS4gRm9yIGV4YW1wbGUs
IHlvdSBjb3VsZCB1c2UgaXQgdG8gdmVyaWZ5IHRoZQorLy8gc2l6ZSBvZiBhIHN0YXRpYyBhcnJh
eToKKy8vCisvLyAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhHVEVTVF9BUlJBWV9TSVpFXyhuYW1l
cykgPT0gTlVNX05BTUVTLAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNfaW5jb3Jy
ZWN0X3NpemUpOworLy8KKy8vIG9yIHRvIG1ha2Ugc3VyZSBhIHN0cnVjdCBpcyBzbWFsbGVyIHRo
YW4gYSBjZXJ0YWluIHNpemU6CisvLworLy8gICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oc2l6ZW9m
KGZvbykgPCAxMjgsIGZvb190b29fbGFyZ2UpOworLy8KKy8vIFRoZSBzZWNvbmQgYXJndW1lbnQg
dG8gdGhlIG1hY3JvIGlzIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZS4gSWYKKy8vIHRoZSBleHBy
ZXNzaW9uIGlzIGZhbHNlLCBtb3N0IGNvbXBpbGVycyB3aWxsIGlzc3VlIGEgd2FybmluZy9lcnJv
cgorLy8gY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUuCisKKyNpZiBHVEVTVF9M
QU5HX0NYWDExCisjIGRlZmluZSBHVEVTVF9DT01QSUxFX0FTU0VSVF8oZXhwciwgbXNnKSBzdGF0
aWNfYXNzZXJ0KGV4cHIsICNtc2cpCisjZWxzZSAgLy8gIUdURVNUX0xBTkdfQ1hYMTEKK3RlbXBs
YXRlIDxib29sPgorICBzdHJ1Y3QgQ29tcGlsZUFzc2VydCB7Cit9OwogCi0gIHZvaWQqIG9wZXJh
dG9yIG5ldyhzaXplX3Qgc2l6ZSkgewotICAgIHJldHVybiBtYWxsb2Moc2l6ZSk7Ci0gIH0KKyMg
ZGVmaW5lIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhleHByLCBtc2cpIFwKKyAgdHlwZWRlZiA6OnRl
c3Rpbmc6OmludGVybmFsOjpDb21waWxlQXNzZXJ0PChzdGF0aWNfY2FzdDxib29sPihleHByKSk+
IFwKKyAgICAgIG1zZ1tzdGF0aWNfY2FzdDxib29sPihleHByKSA/IDEgOiAtMV0gR1RFU1RfQVRU
UklCVVRFX1VOVVNFRF8KKyNlbmRpZiAgLy8gIUdURVNUX0xBTkdfQ1hYMTEKIAotICB2b2lkIG9w
ZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7Ci0gICAgZnJlZShwKTsKLSAgfQorLy8gSW1wbGVtZW50
YXRpb24gZGV0YWlscyBvZiBHVEVTVF9DT01QSUxFX0FTU0VSVF86CisvLworLy8gKEluIEMrKzEx
LCB3ZSBzaW1wbHkgdXNlIHN0YXRpY19hc3NlcnQgaW5zdGVhZCBvZiB0aGUgZm9sbG93aW5nKQor
Ly8KKy8vIC0gR1RFU1RfQ09NUElMRV9BU1NFUlRfIHdvcmtzIGJ5IGRlZmluaW5nIGFuIGFycmF5
IHR5cGUgdGhhdCBoYXMgLTEKKy8vICAgZWxlbWVudHMgKGFuZCB0aHVzIGlzIGludmFsaWQpIHdo
ZW4gdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UuCisvLworLy8gLSBUaGUgc2ltcGxlciBkZWZpbml0
aW9uCisvLworLy8gICAgI2RlZmluZSBHVEVTVF9DT01QSUxFX0FTU0VSVF8oZXhwciwgbXNnKSB0
eXBlZGVmIGNoYXIgbXNnWyhleHByKSA/IDEgOiAtMV0KKy8vCisvLyAgIGRvZXMgbm90IHdvcmss
IGFzIGdjYyBzdXBwb3J0cyB2YXJpYWJsZS1sZW5ndGggYXJyYXlzIHdob3NlIHNpemVzCisvLyAg
IGFyZSBkZXRlcm1pbmVkIGF0IHJ1bi10aW1lICh0aGlzIGlzIGdjYydzIGV4dGVuc2lvbiBhbmQg
bm90IHBhcnQKKy8vICAgb2YgdGhlIEMrKyBzdGFuZGFyZCkuICBBcyBhIHJlc3VsdCwgZ2NjIGZh
aWxzIHRvIHJlamVjdCB0aGUKKy8vICAgZm9sbG93aW5nIGNvZGUgd2l0aCB0aGUgc2ltcGxlIGRl
ZmluaXRpb246CisvLworLy8gICAgIGludCBmb287CisvLyAgICAgR1RFU1RfQ09NUElMRV9BU1NF
UlRfKGZvbywgbXNnKTsgLy8gbm90IHN1cHBvc2VkIHRvIGNvbXBpbGUgYXMgZm9vIGlzCisvLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90IGEgY29tcGlsZS10aW1l
IGNvbnN0YW50LgorLy8KKy8vIC0gQnkgdXNpbmcgdGhlIHR5cGUgQ29tcGlsZUFzc2VydDwoYm9v
bChleHByKSk+LCB3ZSBlbnN1cmVzIHRoYXQKKy8vICAgZXhwciBpcyBhIGNvbXBpbGUtdGltZSBj
b25zdGFudC4gIChUZW1wbGF0ZSBhcmd1bWVudHMgbXVzdCBiZQorLy8gICBkZXRlcm1pbmVkIGF0
IGNvbXBpbGUtdGltZS4pCisvLworLy8gLSBUaGUgb3V0dGVyIHBhcmVudGhlc2VzIGluIENvbXBp
bGVBc3NlcnQ8KGJvb2woZXhwcikpPiBhcmUgbmVjZXNzYXJ5CisvLyAgIHRvIHdvcmsgYXJvdW5k
IGEgYnVnIGluIGdjYyAzLjQuNCBhbmQgNC4wLjEuICBJZiB3ZSBoYWQgd3JpdHRlbgorLy8KKy8v
ICAgICBDb21waWxlQXNzZXJ0PGJvb2woZXhwcik+CisvLworLy8gICBpbnN0ZWFkLCB0aGVzZSBj
b21waWxlcnMgd2lsbCByZWZ1c2UgdG8gY29tcGlsZQorLy8KKy8vICAgICBHVEVTVF9DT01QSUxF
X0FTU0VSVF8oNSA+IDAsIHNvbWVfbWVzc2FnZSk7CisvLworLy8gICAoVGhleSBzZWVtIHRvIHRo
aW5rIHRoZSAiPiIgaW4gIjUgPiAwIiBtYXJrcyB0aGUgZW5kIG9mIHRoZQorLy8gICB0ZW1wbGF0
ZSBhcmd1bWVudCBsaXN0LikKKy8vCisvLyAtIFRoZSBhcnJheSBzaXplIGlzIChib29sKGV4cHIp
ID8gMSA6IC0xKSwgaW5zdGVhZCBvZiBzaW1wbHkKKy8vCisvLyAgICAgKChleHByKSA/IDEgOiAt
MSkuCisvLworLy8gICBUaGlzIGlzIHRvIGF2b2lkIHJ1bm5pbmcgaW50byBhIGJ1ZyBpbiBNUyBW
QyA3LjEsIHdoaWNoCisvLyAgIGNhdXNlcyAoKDAuMCkgPyAxIDogLTEpIHRvIGluY29ycmVjdGx5
IGV2YWx1YXRlIHRvIDEuCiAKLSAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsK
LSAgICByZXR1cm4gbWFsbG9jKHNpemUpOwotICB9CisvLyBTdGF0aWNBc3NlcnRUeXBlRXFIZWxw
ZXIgaXMgdXNlZCBieSBTdGF0aWNBc3NlcnRUeXBlRXEgZGVmaW5lZCBpbiBndGVzdC5oLgorLy8K
Ky8vIFRoaXMgdGVtcGxhdGUgaXMgZGVjbGFyZWQsIGJ1dCBpbnRlbnRpb25hbGx5IHVuZGVmaW5l
ZC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitzdHJ1Y3QgU3RhdGljQXNz
ZXJ0VHlwZUVxSGVscGVyOwogCi0gIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgewot
ICAgIGZyZWUocCk7Ci0gIH0KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IFN0YXRpY0Fz
c2VydFR5cGVFcUhlbHBlcjxULCBUPiB7CisgIGVudW0geyB2YWx1ZSA9IHRydWUgfTsKIH07CiAK
Ky8vIFNhbWUgYXMgc3RkOjppc19zYW1lPD4uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KK3N0cnVjdCBJc1NhbWUgeworICBlbnVtIHsgdmFsdWUgPSBmYWxzZSB9OworfTsKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IElzU2FtZTxULCBUPiB7CisgIGVudW0geyB2YWx1
ZSA9IHRydWUgfTsKK307CiAKKy8vIEV2YWx1YXRlcyB0byB0aGUgbnVtYmVyIG9mIGVsZW1lbnRz
IGluICdhcnJheScuCisjZGVmaW5lIEdURVNUX0FSUkFZX1NJWkVfKGFycmF5KSAoc2l6ZW9mKGFy
cmF5KSAvIHNpemVvZihhcnJheVswXSkpCisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwor
dHlwZWRlZiA6OnN0cmluZyBzdHJpbmc7CisjZWxzZQordHlwZWRlZiA6OnN0ZDo6c3RyaW5nIHN0
cmluZzsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKworI2lmIEdURVNUX0hB
U19HTE9CQUxfV1NUUklORwordHlwZWRlZiA6OndzdHJpbmcgd3N0cmluZzsKKyNlbGlmIEdURVNU
X0hBU19TVERfV1NUUklORwordHlwZWRlZiA6OnN0ZDo6d3N0cmluZyB3c3RyaW5nOworI2VuZGlm
ICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKIAogLy8gQSBoZWxwZXIgZm9yIHN1cHByZXNz
aW5nIHdhcm5pbmdzIG9uIGNvbnN0YW50IGNvbmRpdGlvbi4gIEl0IGp1c3QKIC8vIHJldHVybnMg
J2NvbmRpdGlvbicuCkBAIC02ODUsNiArMTIxOCwxMiBAQCBjbGFzcyBzY29wZWRfcHRyIHsKICAg
ICAgIHB0cl8gPSBwOwogICAgIH0KICAgfQorCisgIGZyaWVuZCB2b2lkIHN3YXAoc2NvcGVkX3B0
ciYgYSwgc2NvcGVkX3B0ciYgYikgeworICAgIHVzaW5nIHN0ZDo6c3dhcDsKKyAgICBzd2FwKGEu
cHRyXywgYi5wdHJfKTsKKyAgfQorCiAgcHJpdmF0ZToKICAgVCogcHRyXzsKIApAQCAtNjkzLDYg
KzEyMzIsMTAgQEAgY2xhc3Mgc2NvcGVkX3B0ciB7CiAKIC8vIERlZmluZXMgUkUuCiAKKyNpZiBH
VEVTVF9VU0VTX1BDUkUKKy8vIGlmIHVzZWQsIFBDUkUgaXMgaW5qZWN0ZWQgYnkgY3VzdG9tL2d0
ZXN0LXBvcnQuaAorI2VsaWYgR1RFU1RfVVNFU19QT1NJWF9SRSB8fCBHVEVTVF9VU0VTX1NJTVBM
RV9SRQorCiAvLyBBIHNpbXBsZSBDKysgd3JhcHBlciBmb3IgPHJlZ2V4Lmg+LiAgSXQgdXNlcyB0
aGUgUE9TSVggRXh0ZW5kZWQKIC8vIFJlZ3VsYXIgRXhwcmVzc2lvbiBzeW50YXguCiBjbGFzcyBH
VEVTVF9BUElfIFJFIHsKQEAgLTcwNCw5ICsxMjQ3LDExIEBAIGNsYXNzIEdURVNUX0FQSV8gUkUg
ewogICAvLyBDb25zdHJ1Y3RzIGFuIFJFIGZyb20gYSBzdHJpbmcuCiAgIFJFKGNvbnN0IDo6c3Rk
OjpzdHJpbmcmIHJlZ2V4KSB7IEluaXQocmVnZXguY19zdHIoKSk7IH0gIC8vIE5PTElOVAogCi0j
aWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKyMgaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcK
KwogICBSRShjb25zdCA6OnN0cmluZyYgcmVnZXgpIHsgSW5pdChyZWdleC5jX3N0cigpKTsgfSAg
Ly8gTk9MSU5UCi0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKKyMgZW5kaWYg
IC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCiAKICAgUkUoY29uc3QgY2hhciogcmVnZXgpIHsg
SW5pdChyZWdleCk7IH0gIC8vIE5PTElOVAogICB+UkUoKTsKQEAgLTcxOSw3ICsxMjY0LDcgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBSRSB7CiAgIC8vIFBhcnRpYWxNYXRjaChzdHIsIHJlKSByZXR1cm5z
IHRydWUgaWZmIHJlZ3VsYXIgZXhwcmVzc2lvbiByZQogICAvLyBtYXRjaGVzIGEgc3Vic3RyaW5n
IG9mIHN0ciAoaW5jbHVkaW5nIHN0ciBpdHNlbGYpLgogICAvLwotICAvLyBUT0RPKHdhbkBnb29n
bGUuY29tKTogbWFrZSBGdWxsTWF0Y2goKSBhbmQgUGFydGlhbE1hdGNoKCkgd29yaworICAvLyBG
SVhNRTogbWFrZSBGdWxsTWF0Y2goKSBhbmQgUGFydGlhbE1hdGNoKCkgd29yawogICAvLyB3aGVu
IHN0ciBjb250YWlucyBOVUwgY2hhcmFjdGVycy4KICAgc3RhdGljIGJvb2wgRnVsbE1hdGNoKGNv
bnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgY29uc3QgUkUmIHJlKSB7CiAgICAgcmV0dXJuIEZ1bGxN
YXRjaChzdHIuY19zdHIoKSwgcmUpOwpAQCAtNzI4LDE0ICsxMjczLDE2IEBAIGNsYXNzIEdURVNU
X0FQSV8gUkUgewogICAgIHJldHVybiBQYXJ0aWFsTWF0Y2goc3RyLmNfc3RyKCksIHJlKTsKICAg
fQogCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKyMgaWYgR1RFU1RfSEFTX0dMT0JBTF9T
VFJJTkcKKwogICBzdGF0aWMgYm9vbCBGdWxsTWF0Y2goY29uc3QgOjpzdHJpbmcmIHN0ciwgY29u
c3QgUkUmIHJlKSB7CiAgICAgcmV0dXJuIEZ1bGxNYXRjaChzdHIuY19zdHIoKSwgcmUpOwogICB9
CiAgIHN0YXRpYyBib29sIFBhcnRpYWxNYXRjaChjb25zdCA6OnN0cmluZyYgc3RyLCBjb25zdCBS
RSYgcmUpIHsKICAgICByZXR1cm4gUGFydGlhbE1hdGNoKHN0ci5jX3N0cigpLCByZSk7CiAgIH0K
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKworIyBlbmRpZiAgLy8gR1RFU1Rf
SEFTX0dMT0JBTF9TVFJJTkcKIAogICBzdGF0aWMgYm9vbCBGdWxsTWF0Y2goY29uc3QgY2hhciog
c3RyLCBjb25zdCBSRSYgcmUpOwogICBzdGF0aWMgYm9vbCBQYXJ0aWFsTWF0Y2goY29uc3QgY2hh
ciogc3RyLCBjb25zdCBSRSYgcmUpOwpAQCAtNzQzLDIyICsxMjkwLDM4IEBAIGNsYXNzIEdURVNU
X0FQSV8gUkUgewogIHByaXZhdGU6CiAgIHZvaWQgSW5pdChjb25zdCBjaGFyKiByZWdleCk7CiAK
LSAgLy8gV2UgdXNlIGEgY29uc3QgY2hhciogaW5zdGVhZCBvZiBhIHN0cmluZywgYXMgR29vZ2xl
IFRlc3QgbWF5IGJlIHVzZWQKLSAgLy8gd2hlcmUgc3RyaW5nIGlzIG5vdCBhdmFpbGFibGUuICBX
ZSBhbHNvIGRvIG5vdCB1c2UgR29vZ2xlIFRlc3QncyBvd24KLSAgLy8gU3RyaW5nIHR5cGUgaGVy
ZSwgaW4gb3JkZXIgdG8gc2ltcGxpZnkgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlCi0gIC8vIGZp
bGVzLgorICAvLyBXZSB1c2UgYSBjb25zdCBjaGFyKiBpbnN0ZWFkIG9mIGFuIHN0ZDo6c3RyaW5n
LCBhcyBHb29nbGUgVGVzdCB1c2VkIHRvIGJlCisgIC8vIHVzZWQgd2hlcmUgc3RkOjpzdHJpbmcg
aXMgbm90IGF2YWlsYWJsZS4gIEZJWE1FOiBjaGFuZ2UgdG8KKyAgLy8gc3RkOjpzdHJpbmcuCiAg
IGNvbnN0IGNoYXIqIHBhdHRlcm5fOwogICBib29sIGlzX3ZhbGlkXzsKLSNpZiBHVEVTVF9VU0VT
X1BPU0lYX1JFCisKKyMgaWYgR1RFU1RfVVNFU19QT1NJWF9SRQorCiAgIHJlZ2V4X3QgZnVsbF9y
ZWdleF87ICAgICAvLyBGb3IgRnVsbE1hdGNoKCkuCiAgIHJlZ2V4X3QgcGFydGlhbF9yZWdleF87
ICAvLyBGb3IgUGFydGlhbE1hdGNoKCkuCi0jZWxzZSAgLy8gR1RFU1RfVVNFU19TSU1QTEVfUkUK
KworIyBlbHNlICAvLyBHVEVTVF9VU0VTX1NJTVBMRV9SRQorCiAgIGNvbnN0IGNoYXIqIGZ1bGxf
cGF0dGVybl87ICAvLyBGb3IgRnVsbE1hdGNoKCk7Ci0jZW5kaWYKKworIyBlbmRpZgogCiAgIEdU
RVNUX0RJU0FMTE9XX0FTU0lHTl8oUkUpOwogfTsKIAorI2VuZGlmICAvLyBHVEVTVF9VU0VTX1BD
UkUKKworLy8gRm9ybWF0cyBhIHNvdXJjZSBmaWxlIHBhdGggYW5kIGEgbGluZSBudW1iZXIgYXMg
dGhleSB3b3VsZCBhcHBlYXIKKy8vIGluIGFuIGVycm9yIG1lc3NhZ2UgZnJvbSB0aGUgY29tcGls
ZXIgdXNlZCB0byBjb21waWxlIHRoaXMgY29kZS4KK0dURVNUX0FQSV8gOjpzdGQ6OnN0cmluZyBG
b3JtYXRGaWxlTG9jYXRpb24oY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpOworCisvLyBGb3Jt
YXRzIGEgZmlsZSBsb2NhdGlvbiBmb3IgY29tcGlsZXItaW5kZXBlbmRlbnQgWE1MIG91dHB1dC4K
Ky8vIEFsdGhvdWdoIHRoaXMgZnVuY3Rpb24gaXMgbm90IHBsYXRmb3JtIGRlcGVuZGVudCwgd2Ug
cHV0IGl0IG5leHQgdG8KKy8vIEZvcm1hdEZpbGVMb2NhdGlvbiBpbiBvcmRlciB0byBjb250cmFz
dCB0aGUgdHdvIGZ1bmN0aW9ucy4KK0dURVNUX0FQSV8gOjpzdGQ6OnN0cmluZyBGb3JtYXRDb21w
aWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uKGNvbnN0IGNoYXIqIGZpbGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
bGluZSk7CisKIC8vIERlZmluZXMgbG9nZ2luZyB1dGlsaXRpZXM6CiAvLyAgIEdURVNUX0xPR18o
c2V2ZXJpdHkpIC0gbG9ncyBtZXNzYWdlcyBhdCB0aGUgc3BlY2lmaWVkIHNldmVyaXR5IGxldmVs
LiBUaGUKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlIGl0c2VsZiBpcyBzdHJl
YW1lZCBpbnRvIHRoZSBtYWNyby4KQEAgLTc5MCwxMyArMTM1MywxOCBAQCBjbGFzcyBHVEVTVF9B
UElfIEdUZXN0TG9nIHsKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhHVGVzdExv
Zyk7CiB9OwogCi0jZGVmaW5lIEdURVNUX0xPR18oc2V2ZXJpdHkpIFwKKyNpZiAhZGVmaW5lZChH
VEVTVF9MT0dfKQorCisjIGRlZmluZSBHVEVTVF9MT0dfKHNldmVyaXR5KSBcCiAgICAgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6R1Rlc3RMb2coOjp0ZXN0aW5nOjppbnRlcm5hbDo6R1RFU1RfIyNzZXZl
cml0eSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJ
TkVfXykuR2V0U3RyZWFtKCkKIAogaW5saW5lIHZvaWQgTG9nVG9TdGRlcnIoKSB7fQogaW5saW5l
IHZvaWQgRmx1c2hJbmZvTG9nKCkgeyBmZmx1c2goTlVMTCk7IH0KIAorI2VuZGlmICAvLyAhZGVm
aW5lZChHVEVTVF9MT0dfKQorCisjaWYgIWRlZmluZWQoR1RFU1RfQ0hFQ0tfKQogLy8gSU5URVJO
QUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFLgogLy8KIC8vIEdURVNUX0NIRUNLXyBpcyBh
biBhbGwtbW9kZSBhc3NlcnQuIEl0IGFib3J0cyB0aGUgcHJvZ3JhbSBpZiB0aGUgY29uZGl0aW9u
CkBAIC04MTEsMTIgKzEzNzksMTMgQEAgaW5saW5lIHZvaWQgRmx1c2hJbmZvTG9nKCkgeyBmZmx1
c2goTlVMTCk7IH0KIC8vICAgIGNvbmRpdGlvbiBpdHNlbGYsIHBsdXMgYWRkaXRpb25hbCBtZXNz
YWdlIHN0cmVhbWVkIGludG8gaXQsIGlmIGFueSwKIC8vICAgIGFuZCB0aGVuIGl0IGFib3J0cyB0
aGUgcHJvZ3JhbS4gSXQgYWJvcnRzIHRoZSBwcm9ncmFtIGlycmVzcGVjdGl2ZSBvZgogLy8gICAg
d2hldGhlciBpdCBpcyBidWlsdCBpbiB0aGUgZGVidWcgbW9kZSBvciBub3QuCi0jZGVmaW5lIEdU
RVNUX0NIRUNLXyhjb25kaXRpb24pIFwKKyMgZGVmaW5lIEdURVNUX0NIRUNLXyhjb25kaXRpb24p
IFwKICAgICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCiAgICAgaWYgKDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OklzVHJ1ZShjb25kaXRpb24pKSBcCiAgICAgICA7IFwKICAgICBlbHNlIFwK
ICAgICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICJDb25kaXRpb24gIiAjY29uZGl0aW9uICIgZmFp
bGVkLiAiCisjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0NIRUNLXykKIAogLy8gQW4gYWxsLW1v
ZGUgYXNzZXJ0IHRvIHZlcmlmeSB0aGF0IHRoZSBnaXZlbiBQT1NJWC1zdHlsZSBmdW5jdGlvbgog
Ly8gY2FsbCByZXR1cm5zIDAgKGluZGljYXRpbmcgc3VjY2VzcykuICBLbm93biBsaW1pdGF0aW9u
OiB0aGlzCkBAIC04MjgsOCArMTM5NywxMjUgQEAgaW5saW5lIHZvaWQgRmx1c2hJbmZvTG9nKCkg
eyBmZmx1c2goTlVMTCk7IH0KICAgICBHVEVTVF9MT0dfKEZBVEFMKSA8PCAjcG9zaXhfY2FsbCA8
PCAiZmFpbGVkIHdpdGggZXJyb3IgIiBcCiAgICAgICAgICAgICAgICAgICAgICAgPDwgZ3Rlc3Rf
ZXJyb3IKIAorLy8gQWRkcyByZWZlcmVuY2UgdG8gYSB0eXBlIGlmIGl0IGlzIG5vdCBhIHJlZmVy
ZW5jZSB0eXBlLAorLy8gb3RoZXJ3aXNlIGxlYXZlcyBpdCB1bmNoYW5nZWQuICBUaGlzIGlzIHRo
ZSBzYW1lIGFzCisvLyB0cjE6OmFkZF9yZWZlcmVuY2UsIHdoaWNoIGlzIG5vdCB3aWRlbHkgYXZh
aWxhYmxlIHlldC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEFkZFJlZmVyZW5jZSB7
IHR5cGVkZWYgVCYgdHlwZTsgfTsgIC8vIE5PTElOVAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citz
dHJ1Y3QgQWRkUmVmZXJlbmNlPFQmPiB7IHR5cGVkZWYgVCYgdHlwZTsgfTsgIC8vIE5PTElOVAor
CisvLyBBIGhhbmR5IHdyYXBwZXIgYXJvdW5kIEFkZFJlZmVyZW5jZSB0aGF0IHdvcmtzIHdoZW4g
dGhlIGFyZ3VtZW50IFQKKy8vIGRlcGVuZHMgb24gdGVtcGxhdGUgcGFyYW1ldGVycy4KKyNkZWZp
bmUgR1RFU1RfQUREX1JFRkVSRU5DRV8oVCkgXAorICAgIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50
ZXJuYWw6OkFkZFJlZmVyZW5jZTxUPjo6dHlwZQorCisvLyBUcmFuc2Zvcm1zICJUIiBpbnRvICJj
b25zdCBUJiIgYWNjb3JkaW5nIHRvIHN0YW5kYXJkIHJlZmVyZW5jZSBjb2xsYXBzaW5nCisvLyBy
dWxlcyAodGhpcyBpcyBvbmx5IG5lZWRlZCBhcyBhIGJhY2twb3J0IGZvciBDKys5OCBjb21waWxl
cnMgdGhhdCBkbyBub3QKKy8vIHN1cHBvcnQgcmVmZXJlbmNlIGNvbGxhcHNpbmcpLiBTcGVjaWZp
Y2FsbHksIGl0IHRyYW5zZm9ybXM6CisvLworLy8gICBjaGFyICAgICAgICAgPT0+IGNvbnN0IGNo
YXImCisvLyAgIGNvbnN0IGNoYXIgICA9PT4gY29uc3QgY2hhciYKKy8vICAgY2hhciYgICAgICAg
ID09PiBjaGFyJgorLy8gICBjb25zdCBjaGFyJiAgPT0+IGNvbnN0IGNoYXImCisvLworLy8gTm90
ZSB0aGF0IHRoZSBub24tY29uc3QgcmVmZXJlbmNlIHdpbGwgbm90IGhhdmUgImNvbnN0IiBhZGRl
ZC4gVGhpcyBpcworLy8gc3RhbmRhcmQsIGFuZCBuZWNlc3Nhcnkgc28gdGhhdCAiVCIgY2FuIGFs
d2F5cyBiaW5kIHRvICJjb25zdCBUJiIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBD
b25zdFJlZiB7IHR5cGVkZWYgY29uc3QgVCYgdHlwZTsgfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
Pgorc3RydWN0IENvbnN0UmVmPFQmPiB7IHR5cGVkZWYgVCYgdHlwZTsgfTsKKworLy8gVGhlIGFy
Z3VtZW50IFQgbXVzdCBkZXBlbmQgb24gc29tZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgorI2RlZmlu
ZSBHVEVTVF9SRUZFUkVOQ0VfVE9fQ09OU1RfKFQpIFwKKyAgdHlwZW5hbWUgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6Q29uc3RSZWY8VD46OnR5cGUKKworI2lmIEdURVNUX0hBU19TVERfTU9WRV8KK3Vz
aW5nIHN0ZDo6Zm9yd2FyZDsKK3VzaW5nIHN0ZDo6bW92ZTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitzdHJ1Y3QgUnZhbHVlUmVmIHsKKyAgdHlwZWRlZiBUJiYgdHlwZTsKK307CisjZWxzZSAg
Ly8gR1RFU1RfSEFTX1NURF9NT1ZFXwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25zdCBUJiBt
b3ZlKGNvbnN0IFQmIHQpIHsKKyAgcmV0dXJuIHQ7Cit9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K0dURVNUX0FERF9SRUZFUkVOQ0VfKFQpIGZvcndhcmQoR1RFU1RfQUREX1JFRkVSRU5DRV8oVCkg
dCkgeyByZXR1cm4gdDsgfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBSdmFsdWVS
ZWYgeworICB0eXBlZGVmIGNvbnN0IFQmIHR5cGU7Cit9OworI2VuZGlmICAvLyBHVEVTVF9IQVNf
U1REX01PVkVfCisKIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBV
U0VSIENPREUuCiAvLworLy8gVXNlIEltcGxpY2l0Q2FzdF8gYXMgYSBzYWZlIHZlcnNpb24gb2Yg
c3RhdGljX2Nhc3QgZm9yIHVwY2FzdGluZyBpbgorLy8gdGhlIHR5cGUgaGllcmFyY2h5IChlLmcu
IGNhc3RpbmcgYSBGb28qIHRvIGEgU3VwZXJjbGFzc09mRm9vKiBvciBhCisvLyBjb25zdCBGb28q
KS4gIFdoZW4geW91IHVzZSBJbXBsaWNpdENhc3RfLCB0aGUgY29tcGlsZXIgY2hlY2tzIHRoYXQK
Ky8vIHRoZSBjYXN0IGlzIHNhZmUuICBTdWNoIGV4cGxpY2l0IEltcGxpY2l0Q2FzdF9zIGFyZSBu
ZWNlc3NhcnkgaW4KKy8vIHN1cnByaXNpbmdseSBtYW55IHNpdHVhdGlvbnMgd2hlcmUgQysrIGRl
bWFuZHMgYW4gZXhhY3QgdHlwZSBtYXRjaAorLy8gaW5zdGVhZCBvZiBhbiBhcmd1bWVudCB0eXBl
IGNvbnZlcnRhYmxlIHRvIGEgdGFyZ2V0IHR5cGUuCisvLworLy8gVGhlIHN5bnRheCBmb3IgdXNp
bmcgSW1wbGljaXRDYXN0XyBpcyB0aGUgc2FtZSBhcyBmb3Igc3RhdGljX2Nhc3Q6CisvLworLy8g
ICBJbXBsaWNpdENhc3RfPFRvVHlwZT4oZXhwcikKKy8vCisvLyBJbXBsaWNpdENhc3RfIHdvdWxk
IGhhdmUgYmVlbiBwYXJ0IG9mIHRoZSBDKysgc3RhbmRhcmQgbGlicmFyeSwKKy8vIGJ1dCB0aGUg
cHJvcG9zYWwgd2FzIHN1Ym1pdHRlZCB0b28gbGF0ZS4gIEl0IHdpbGwgcHJvYmFibHkgbWFrZQor
Ly8gaXRzIHdheSBpbnRvIHRoZSBsYW5ndWFnZSBpbiB0aGUgZnV0dXJlLgorLy8KKy8vIFRoaXMg
cmVsYXRpdmVseSB1Z2x5IG5hbWUgaXMgaW50ZW50aW9uYWwuIEl0IHByZXZlbnRzIGNsYXNoZXMg
d2l0aAorLy8gc2ltaWxhciBmdW5jdGlvbnMgdXNlcnMgbWF5IGhhdmUgKGUuZy4sIGltcGxpY2l0
X2Nhc3QpLiBUaGUgaW50ZXJuYWwKKy8vIG5hbWVzcGFjZSBhbG9uZSBpcyBub3QgZW5vdWdoIGJl
Y2F1c2UgdGhlIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBieSBBREwuCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUbz4KK2lubGluZSBUbyBJbXBsaWNpdENhc3RfKFRvIHgpIHsgcmV0dXJuIHg7IH0KKworLy8g
V2hlbiB5b3UgdXBjYXN0ICh0aGF0IGlzLCBjYXN0IGEgcG9pbnRlciBmcm9tIHR5cGUgRm9vIHRv
IHR5cGUKKy8vIFN1cGVyY2xhc3NPZkZvbyksIGl0J3MgZmluZSB0byB1c2UgSW1wbGljaXRDYXN0
Xzw+LCBzaW5jZSB1cGNhc3RzCisvLyBhbHdheXMgc3VjY2VlZC4gIFdoZW4geW91IGRvd25jYXN0
ICh0aGF0IGlzLCBjYXN0IGEgcG9pbnRlciBmcm9tCisvLyB0eXBlIEZvbyB0byB0eXBlIFN1YmNs
YXNzT2ZGb28pLCBzdGF0aWNfY2FzdDw+IGlzbid0IHNhZmUsIGJlY2F1c2UKKy8vIGhvdyBkbyB5
b3Uga25vdyB0aGUgcG9pbnRlciBpcyByZWFsbHkgb2YgdHlwZSBTdWJjbGFzc09mRm9vPyAgSXQK
Ky8vIGNvdWxkIGJlIGEgYmFyZSBGb28sIG9yIG9mIHR5cGUgRGlmZmVyZW50U3ViY2xhc3NPZkZv
by4gIFRodXMsCisvLyB3aGVuIHlvdSBkb3duY2FzdCwgeW91IHNob3VsZCB1c2UgdGhpcyBtYWNy
by4gIEluIGRlYnVnIG1vZGUsIHdlCisvLyB1c2UgZHluYW1pY19jYXN0PD4gdG8gZG91YmxlLWNo
ZWNrIHRoZSBkb3duY2FzdCBpcyBsZWdhbCAod2UgZGllCisvLyBpZiBpdCdzIG5vdCkuICBJbiBu
b3JtYWwgbW9kZSwgd2UgZG8gdGhlIGVmZmljaWVudCBzdGF0aWNfY2FzdDw+CisvLyBpbnN0ZWFk
LiAgVGh1cywgaXQncyBpbXBvcnRhbnQgdG8gdGVzdCBpbiBkZWJ1ZyBtb2RlIHRvIG1ha2Ugc3Vy
ZQorLy8gdGhlIGNhc3QgaXMgbGVnYWwhCisvLyAgICBUaGlzIGlzIHRoZSBvbmx5IHBsYWNlIGlu
IHRoZSBjb2RlIHdlIHNob3VsZCB1c2UgZHluYW1pY19jYXN0PD4uCisvLyBJbiBwYXJ0aWN1bGFy
LCB5b3UgU0hPVUxETidUIGJlIHVzaW5nIGR5bmFtaWNfY2FzdDw+IGluIG9yZGVyIHRvCisvLyBk
byBSVFRJIChlZyBjb2RlIGxpa2UgdGhpczoKKy8vICAgIGlmIChkeW5hbWljX2Nhc3Q8U3ViY2xh
c3MxPihmb28pKSBIYW5kbGVBU3ViY2xhc3MxT2JqZWN0KGZvbyk7CisvLyAgICBpZiAoZHluYW1p
Y19jYXN0PFN1YmNsYXNzMj4oZm9vKSkgSGFuZGxlQVN1YmNsYXNzMk9iamVjdChmb28pOworLy8g
WW91IHNob3VsZCBkZXNpZ24gdGhlIGNvZGUgc29tZSBvdGhlciB3YXkgbm90IHRvIG5lZWQgdGhp
cy4KKy8vCisvLyBUaGlzIHJlbGF0aXZlbHkgdWdseSBuYW1lIGlzIGludGVudGlvbmFsLiBJdCBw
cmV2ZW50cyBjbGFzaGVzIHdpdGgKKy8vIHNpbWlsYXIgZnVuY3Rpb25zIHVzZXJzIG1heSBoYXZl
IChlLmcuLCBkb3duX2Nhc3QpLiBUaGUgaW50ZXJuYWwKKy8vIG5hbWVzcGFjZSBhbG9uZSBpcyBu
b3QgZW5vdWdoIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBieSBBREwuCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUbywgdHlwZW5hbWUgRnJvbT4gIC8vIHVzZSBsaWtlIHRoaXM6IERvd25D
YXN0XzxUKj4oZm9vKTsKK2lubGluZSBUbyBEb3duQ2FzdF8oRnJvbSogZikgeyAgLy8gc28gd2Ug
b25seSBhY2NlcHQgcG9pbnRlcnMKKyAgLy8gRW5zdXJlcyB0aGF0IFRvIGlzIGEgc3ViLXR5cGUg
b2YgRnJvbSAqLiAgVGhpcyB0ZXN0IGlzIGhlcmUgb25seQorICAvLyBmb3IgY29tcGlsZS10aW1l
IHR5cGUgY2hlY2tpbmcsIGFuZCBoYXMgbm8gb3ZlcmhlYWQgaW4gYW4KKyAgLy8gb3B0aW1pemVk
IGJ1aWxkIGF0IHJ1bi10aW1lLCBhcyBpdCB3aWxsIGJlIG9wdGltaXplZCBhd2F5CisgIC8vIGNv
bXBsZXRlbHkuCisgIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUFVTSF8oKQorICBpZiAo
ZmFsc2UpIHsKKyAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QT1BfKCkKKyAgICBjb25z
dCBUbyB0byA9IE5VTEw7CisgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxG
cm9tKj4odG8pOworICB9CisKKyNpZiBHVEVTVF9IQVNfUlRUSQorICAvLyBSVFRJOiBkZWJ1ZyBt
b2RlIG9ubHkhCisgIEdURVNUX0NIRUNLXyhmID09IE5VTEwgfHwgZHluYW1pY19jYXN0PFRvPihm
KSAhPSBOVUxMKTsKKyNlbmRpZgorICByZXR1cm4gc3RhdGljX2Nhc3Q8VG8+KGYpOworfQorCiAv
LyBEb3duY2FzdHMgdGhlIHBvaW50ZXIgb2YgdHlwZSBCYXNlIHRvIERlcml2ZWQuCiAvLyBEZXJp
dmVkIG11c3QgYmUgYSBzdWJjbGFzcyBvZiBCYXNlLiBUaGUgcGFyYW1ldGVyIE1VU1QKIC8vIHBv
aW50IHRvIGEgY2xhc3Mgb2YgdHlwZSBEZXJpdmVkLCBub3QgYW55IHN1YmNsYXNzIG9mIGl0LgpA
QCAtODM5LDEzICsxNTI1LDE4IEBAIHRlbXBsYXRlIDxjbGFzcyBEZXJpdmVkLCBjbGFzcyBCYXNl
PgogRGVyaXZlZCogQ2hlY2tlZERvd25jYXN0VG9BY3R1YWxUeXBlKEJhc2UqIGJhc2UpIHsKICNp
ZiBHVEVTVF9IQVNfUlRUSQogICBHVEVTVF9DSEVDS18odHlwZWlkKCpiYXNlKSA9PSB0eXBlaWQo
RGVyaXZlZCkpOworI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfRE9XTkNBU1RfCisgIHJldHVybiA6
OmRvd25fY2FzdDxEZXJpdmVkKj4oYmFzZSk7CisjZWxpZiBHVEVTVF9IQVNfUlRUSQogICByZXR1
cm4gZHluYW1pY19jYXN0PERlcml2ZWQqPihiYXNlKTsgIC8vIE5PTElOVAogI2Vsc2UKICAgcmV0
dXJuIHN0YXRpY19jYXN0PERlcml2ZWQqPihiYXNlKTsgIC8vIFBvb3IgbWFuJ3MgZG93bmNhc3Qu
CiAjZW5kaWYKIH0KIAotI2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCisjaWYgR1RF
U1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgogCiAvLyBEZWZpbmVzIHRoZSBzdGRlcnIgY2FwdHVy
ZXI6CiAvLyAgIENhcHR1cmVTdGRvdXQgICAgIC0gc3RhcnRzIGNhcHR1cmluZyBzdGRvdXQuCkBA
IC04NTQsMzAgKzE1NDUsMzkgQEAgRGVyaXZlZCogQ2hlY2tlZERvd25jYXN0VG9BY3R1YWxUeXBl
KEJhc2UqIGJhc2UpIHsKIC8vICAgR2V0Q2FwdHVyZWRTdGRlcnIgLSBzdG9wcyBjYXB0dXJpbmcg
c3RkZXJyIGFuZCByZXR1cm5zIHRoZSBjYXB0dXJlZCBzdHJpbmcuCiAvLwogR1RFU1RfQVBJXyB2
b2lkIENhcHR1cmVTdGRvdXQoKTsKLUdURVNUX0FQSV8gU3RyaW5nIEdldENhcHR1cmVkU3Rkb3V0
KCk7CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIEdldENhcHR1cmVkU3Rkb3V0KCk7CiBHVEVTVF9B
UElfIHZvaWQgQ2FwdHVyZVN0ZGVycigpOwotR1RFU1RfQVBJXyBTdHJpbmcgR2V0Q2FwdHVyZWRT
dGRlcnIoKTsKK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgR2V0Q2FwdHVyZWRTdGRlcnIoKTsKIAot
I2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXworI2VuZGlmICAvLyBHVEVT
VF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCisvLyBSZXR1cm5zIHRoZSBzaXplIChpbiBieXRlcykg
b2YgYSBmaWxlLgorR1RFU1RfQVBJXyBzaXplX3QgR2V0RmlsZVNpemUoRklMRSogZmlsZSk7CiAK
Ky8vIFJlYWRzIHRoZSBlbnRpcmUgY29udGVudCBvZiBhIGZpbGUgYXMgYSBzdHJpbmcuCitHVEVT
VF9BUElfIHN0ZDo6c3RyaW5nIFJlYWRFbnRpcmVGaWxlKEZJTEUqIGZpbGUpOwogCi0jaWYgR1RF
U1RfSEFTX0RFQVRIX1RFU1QKKy8vIEFsbCBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgorR1RFU1Rf
QVBJXyBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0QXJndnMoKTsKIAotLy8gQSBjb3B5IG9m
IGFsbCBjb21tYW5kIGxpbmUgYXJndW1lbnRzLiAgU2V0IGJ5IEluaXRHb29nbGVUZXN0KCkuCi1l
eHRlcm4gOjpzdGQ6OnZlY3RvcjxTdHJpbmc+IGdfYXJndnM7CisjaWYgR1RFU1RfSEFTX0RFQVRI
X1RFU1QKIAotLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QgaW1wbGllcyB3ZSBoYXZlIDo6c3RkOjpz
dHJpbmcuCi1jb25zdCA6OnN0ZDo6dmVjdG9yPFN0cmluZz4mIEdldEFyZ3ZzKCk7CitzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4gR2V0SW5qZWN0YWJsZUFyZ3ZzKCk7CisvLyBEZXByZWNhdGVkOiBw
YXNzIHRoZSBhcmdzIHZlY3RvciBieSB2YWx1ZSBpbnN0ZWFkLgordm9pZCBTZXRJbmplY3RhYmxl
QXJndnMoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiBuZXdfYXJndnMpOwordm9pZCBT
ZXRJbmplY3RhYmxlQXJndnMoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBuZXdfYXJn
dnMpOworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCit2b2lkIFNldEluamVjdGFibGVBcmd2
cyhjb25zdCBzdGQ6OnZlY3RvcjwgOjpzdHJpbmc+JiBuZXdfYXJndnMpOworI2VuZGlmICAvLyBH
VEVTVF9IQVNfR0xPQkFMX1NUUklORwordm9pZCBDbGVhckluamVjdGFibGVBcmd2cygpOwogCiAj
ZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCiAKIC8vIERlZmluZXMgc3luY2hyb25pemF0
aW9uIHByaW1pdGl2ZXMuCi0KLSNpZiBHVEVTVF9IQVNfUFRIUkVBRAotCi0vLyBTbGVlcHMgZm9y
IChyb3VnaGx5KSBuIG1pbGxpLXNlY29uZHMuICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZm9yCi0v
LyB0ZXN0aW5nIEdvb2dsZSBUZXN0J3Mgb3duIGNvbnN0cnVjdHMuICBEb24ndCB1c2UgaXQgaW4g
dXNlciB0ZXN0cywKLS8vIGVpdGhlciBkaXJlY3RseSBvciBpbmRpcmVjdGx5LgorI2lmIEdURVNU
X0lTX1RIUkVBRFNBRkUKKyMgaWYgR1RFU1RfSEFTX1BUSFJFQUQKKy8vIFNsZWVwcyBmb3IgKHJv
dWdobHkpIG4gbWlsbGlzZWNvbmRzLiAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGZvciB0ZXN0aW5n
CisvLyBHb29nbGUgVGVzdCdzIG93biBjb25zdHJ1Y3RzLiAgRG9uJ3QgdXNlIGl0IGluIHVzZXIg
dGVzdHMsIGVpdGhlcgorLy8gZGlyZWN0bHkgb3IgaW5kaXJlY3RseS4KIGlubGluZSB2b2lkIFNs
ZWVwTWlsbGlzZWNvbmRzKGludCBuKSB7CiAgIGNvbnN0IHRpbWVzcGVjIHRpbWUgPSB7CiAgICAg
MCwgICAgICAgICAgICAgICAgICAvLyAwIHNlY29uZHMuCkBAIC04ODUsNyArMTU4NSwxMyBAQCBp
bmxpbmUgdm9pZCBTbGVlcE1pbGxpc2Vjb25kcyhpbnQgbikgewogICB9OwogICBuYW5vc2xlZXAo
JnRpbWUsIE5VTEwpOwogfQorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX1BUSFJFQUQKIAorIyBpZiBH
VEVTVF9IQVNfTk9USUZJQ0FUSU9OXworLy8gTm90aWZpY2F0aW9uIGhhcyBhbHJlYWR5IGJlZW4g
aW1wb3J0ZWQgaW50byB0aGUgbmFtZXNwYWNlLgorLy8gTm90aGluZyB0byBkbyBoZXJlLgorCisj
IGVsaWYgR1RFU1RfSEFTX1BUSFJFQUQKIC8vIEFsbG93cyBhIGNvbnRyb2xsZXIgdGhyZWFkIHRv
IHBhdXNlIGV4ZWN1dGlvbiBvZiBuZXdseSBjcmVhdGVkCiAvLyB0aHJlYWRzIHVudGlsIG5vdGlm
aWVkLiAgSW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MgbXVzdCBiZSBjcmVhdGVkCiAvLyBhbmQgZGVz
dHJveWVkIGluIHRoZSBjb250cm9sbGVyIHRocmVhZC4KQEAgLTg5NCwyNSArMTYwMCw5NiBAQCBp
bmxpbmUgdm9pZCBTbGVlcE1pbGxpc2Vjb25kcyhpbnQgbikgewogLy8gdXNlIGl0IGluIHVzZXIg
dGVzdHMsIGVpdGhlciBkaXJlY3RseSBvciBpbmRpcmVjdGx5LgogY2xhc3MgTm90aWZpY2F0aW9u
IHsKICBwdWJsaWM6Ci0gIE5vdGlmaWNhdGlvbigpIDogbm90aWZpZWRfKGZhbHNlKSB7fQorICBO
b3RpZmljYXRpb24oKSA6IG5vdGlmaWVkXyhmYWxzZSkgeworICAgIEdURVNUX0NIRUNLX1BPU0lY
X1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhfaW5pdCgmbXV0ZXhfLCBOVUxMKSk7CisgIH0KKyAgfk5v
dGlmaWNhdGlvbigpIHsKKyAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm11dGV4Xyk7CisgIH0K
IAogICAvLyBOb3RpZmllcyBhbGwgdGhyZWFkcyBjcmVhdGVkIHdpdGggdGhpcyBub3RpZmljYXRp
b24gdG8gc3RhcnQuIE11c3QKICAgLy8gYmUgY2FsbGVkIGZyb20gdGhlIGNvbnRyb2xsZXIgdGhy
ZWFkLgotICB2b2lkIE5vdGlmeSgpIHsgbm90aWZpZWRfID0gdHJ1ZTsgfQorICB2b2lkIE5vdGlm
eSgpIHsKKyAgICBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4Xyk7CisgICAgbm90aWZpZWRfID0g
dHJ1ZTsKKyAgICBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXhfKTsKKyAgfQogCiAgIC8vIEJs
b2NrcyB1bnRpbCB0aGUgY29udHJvbGxlciB0aHJlYWQgbm90aWZpZXMuIE11c3QgYmUgY2FsbGVk
IGZyb20gYSB0ZXN0CiAgIC8vIHRocmVhZC4KICAgdm9pZCBXYWl0Rm9yTm90aWZpY2F0aW9uKCkg
ewotICAgIHdoaWxlKCFub3RpZmllZF8pIHsKKyAgICBmb3IgKDs7KSB7CisgICAgICBwdGhyZWFk
X211dGV4X2xvY2soJm11dGV4Xyk7CisgICAgICBjb25zdCBib29sIG5vdGlmaWVkID0gbm90aWZp
ZWRfOworICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4Xyk7CisgICAgICBpZiAobm90
aWZpZWQpCisgICAgICAgIGJyZWFrOwogICAgICAgU2xlZXBNaWxsaXNlY29uZHMoMTApOwogICAg
IH0KICAgfQogCiAgcHJpdmF0ZToKLSAgdm9sYXRpbGUgYm9vbCBub3RpZmllZF87CisgIHB0aHJl
YWRfbXV0ZXhfdCBtdXRleF87CisgIGJvb2wgbm90aWZpZWRfOworCisgIEdURVNUX0RJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTl8oTm90aWZpY2F0aW9uKTsKK307CisKKyMgZWxpZiBHVEVTVF9PU19X
SU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JU
CisKK0dURVNUX0FQSV8gdm9pZCBTbGVlcE1pbGxpc2Vjb25kcyhpbnQgbik7CisKKy8vIFByb3Zp
ZGVzIGxlYWstc2FmZSBXaW5kb3dzIGtlcm5lbCBoYW5kbGUgb3duZXJzaGlwLgorLy8gVXNlZCBp
biBkZWF0aCB0ZXN0cyBhbmQgaW4gdGhyZWFkaW5nIHN1cHBvcnQuCitjbGFzcyBHVEVTVF9BUElf
IEF1dG9IYW5kbGUgeworIHB1YmxpYzoKKyAgLy8gQXNzdW1lIHRoYXQgV2luMzIgSEFORExFIHR5
cGUgaXMgZXF1aXZhbGVudCB0byB2b2lkKi4gRG9pbmcgc28gYWxsb3dzIHVzIHRvCisgIC8vIGF2
b2lkIGluY2x1ZGluZyA8d2luZG93cy5oPiBpbiB0aGlzIGhlYWRlciBmaWxlLiBJbmNsdWRpbmcg
PHdpbmRvd3MuaD4gaXMKKyAgLy8gdW5kZXNpcmFibGUgYmVjYXVzZSBpdCBkZWZpbmVzIGEgbG90
IG9mIHN5bWJvbHMgYW5kIG1hY3JvcyB0aGF0IHRlbmQgdG8KKyAgLy8gY29uZmxpY3Qgd2l0aCBj
bGllbnQgY29kZS4gVGhpcyBhc3N1bXB0aW9uIGlzIHZlcmlmaWVkIGJ5CisgIC8vIFdpbmRvd3NU
eXBlc1Rlc3QuSEFORExFSXNWb2lkU3Rhci4KKyAgdHlwZWRlZiB2b2lkKiBIYW5kbGU7CisgIEF1
dG9IYW5kbGUoKTsKKyAgZXhwbGljaXQgQXV0b0hhbmRsZShIYW5kbGUgaGFuZGxlKTsKKworICB+
QXV0b0hhbmRsZSgpOworCisgIEhhbmRsZSBHZXQoKSBjb25zdDsKKyAgdm9pZCBSZXNldCgpOwor
ICB2b2lkIFJlc2V0KEhhbmRsZSBoYW5kbGUpOworCisgcHJpdmF0ZToKKyAgLy8gUmV0dXJucyB0
cnVlIGlmZiB0aGUgaGFuZGxlIGlzIGEgdmFsaWQgaGFuZGxlIG9iamVjdCB0aGF0IGNhbiBiZSBj
bG9zZWQuCisgIGJvb2wgSXNDbG9zZWFibGUoKSBjb25zdDsKKworICBIYW5kbGUgaGFuZGxlXzsK
KworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEF1dG9IYW5kbGUpOworfTsKKwor
Ly8gQWxsb3dzIGEgY29udHJvbGxlciB0aHJlYWQgdG8gcGF1c2UgZXhlY3V0aW9uIG9mIG5ld2x5
IGNyZWF0ZWQKKy8vIHRocmVhZHMgdW50aWwgbm90aWZpZWQuICBJbnN0YW5jZXMgb2YgdGhpcyBj
bGFzcyBtdXN0IGJlIGNyZWF0ZWQKKy8vIGFuZCBkZXN0cm95ZWQgaW4gdGhlIGNvbnRyb2xsZXIg
dGhyZWFkLgorLy8KKy8vIFRoaXMgY2xhc3MgaXMgb25seSBmb3IgdGVzdGluZyBHb29nbGUgVGVz
dCdzIG93biBjb25zdHJ1Y3RzLiBEbyBub3QKKy8vIHVzZSBpdCBpbiB1c2VyIHRlc3RzLCBlaXRo
ZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseS4KK2NsYXNzIEdURVNUX0FQSV8gTm90aWZpY2F0aW9u
IHsKKyBwdWJsaWM6CisgIE5vdGlmaWNhdGlvbigpOworICB2b2lkIE5vdGlmeSgpOworICB2b2lk
IFdhaXRGb3JOb3RpZmljYXRpb24oKTsKKworIHByaXZhdGU6CisgIEF1dG9IYW5kbGUgZXZlbnRf
OwogCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTm90aWZpY2F0aW9uKTsKIH07
CisjIGVuZGlmICAvLyBHVEVTVF9IQVNfTk9USUZJQ0FUSU9OXworCisvLyBPbiBNaW5HVywgd2Ug
Y2FuIGhhdmUgYm90aCBHVEVTVF9PU19XSU5ET1dTIGFuZCBHVEVTVF9IQVNfUFRIUkVBRAorLy8g
ZGVmaW5lZCwgYnV0IHdlIGRvbid0IHdhbnQgdG8gdXNlIE1pbkdXJ3MgcHRocmVhZHMgaW1wbGVt
ZW50YXRpb24sIHdoaWNoCisvLyBoYXMgY29uZm9ybWFuY2UgcHJvYmxlbXMgd2l0aCBzb21lIHZl
cnNpb25zIG9mIHRoZSBQT1NJWCBzdGFuZGFyZC4KKyMgaWYgR1RFU1RfSEFTX1BUSFJFQUQgJiYg
IUdURVNUX09TX1dJTkRPV1NfTUlOR1cKIAogLy8gQXMgYSBDLWZ1bmN0aW9uLCBUaHJlYWRGdW5j
V2l0aENMaW5rYWdlIGNhbm5vdCBiZSB0ZW1wbGF0ZWQgaXRzZWxmLgogLy8gQ29uc2VxdWVudGx5
LCBpdCBjYW5ub3Qgc2VsZWN0IGEgY29ycmVjdCBpbnN0YW50aWF0aW9uIG9mIFRocmVhZFdpdGhQ
YXJhbQpAQCAtOTUxLDEwICsxNzI4LDkgQEAgZXh0ZXJuICJDIiBpbmxpbmUgdm9pZCogVGhyZWFk
RnVuY1dpdGhDTGlua2FnZSh2b2lkKiB0aHJlYWQpIHsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
Y2xhc3MgVGhyZWFkV2l0aFBhcmFtIDogcHVibGljIFRocmVhZFdpdGhQYXJhbUJhc2UgewogIHB1
YmxpYzoKLSAgdHlwZWRlZiB2b2lkICgqVXNlclRocmVhZEZ1bmMpKFQpOworICB0eXBlZGVmIHZv
aWQgVXNlclRocmVhZEZ1bmMoVCk7CiAKLSAgVGhyZWFkV2l0aFBhcmFtKAotICAgICAgVXNlclRo
cmVhZEZ1bmMgZnVuYywgVCBwYXJhbSwgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KQor
ICBUaHJlYWRXaXRoUGFyYW0oVXNlclRocmVhZEZ1bmMqIGZ1bmMsIFQgcGFyYW0sIE5vdGlmaWNh
dGlvbiogdGhyZWFkX2Nhbl9zdGFydCkKICAgICAgIDogZnVuY18oZnVuYyksCiAgICAgICAgIHBh
cmFtXyhwYXJhbSksCiAgICAgICAgIHRocmVhZF9jYW5fc3RhcnRfKHRocmVhZF9jYW5fc3RhcnQp
LApAQCAtOTgxLDcgKzE3NTcsNyBAQCBjbGFzcyBUaHJlYWRXaXRoUGFyYW0gOiBwdWJsaWMgVGhy
ZWFkV2l0aFBhcmFtQmFzZSB7CiAgIH0KIAogIHByaXZhdGU6Ci0gIGNvbnN0IFVzZXJUaHJlYWRG
dW5jIGZ1bmNfOyAgLy8gVXNlci1zdXBwbGllZCB0aHJlYWQgZnVuY3Rpb24uCisgIFVzZXJUaHJl
YWRGdW5jKiBjb25zdCBmdW5jXzsgIC8vIFVzZXItc3VwcGxpZWQgdGhyZWFkIGZ1bmN0aW9uLgog
ICBjb25zdCBUIHBhcmFtXzsgIC8vIFVzZXItc3VwcGxpZWQgcGFyYW1ldGVyIHRvIHRoZSB0aHJl
YWQgZnVuY3Rpb24uCiAgIC8vIFdoZW4gbm9uLU5VTEwsIHVzZWQgdG8gYmxvY2sgZXhlY3V0aW9u
IHVudGlsIHRoZSBjb250cm9sbGVyIHRocmVhZAogICAvLyBub3RpZmllcy4KQEAgLTk5MSw1MSAr
MTc2NywzMTYgQEAgY2xhc3MgVGhyZWFkV2l0aFBhcmFtIDogcHVibGljIFRocmVhZFdpdGhQYXJh
bUJhc2UgewogCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkV2l0aFBh
cmFtKTsKIH07CisjIGVuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUyAmJiBHVEVTVF9IQVNfUFRI
UkVBRCB8fAorICAgICAgICAgLy8gR1RFU1RfSEFTX01VVEVYX0FORF9USFJFQURfTE9DQUxfCiAK
LS8vIGd0ZXN0LXBvcnQuaCBndWFyYW50ZWVzIHRvICNpbmNsdWRlIDxwdGhyZWFkLmg+IHdoZW4g
R1RFU1RfSEFTX1BUSFJFQUQgaXMKLS8vIHRydWUuCi0jaW5jbHVkZSA8cHRocmVhZC5oPgorIyBp
ZiBHVEVTVF9IQVNfTVVURVhfQU5EX1RIUkVBRF9MT0NBTF8KKy8vIE11dGV4IGFuZCBUaHJlYWRM
b2NhbCBoYXZlIGFscmVhZHkgYmVlbiBpbXBvcnRlZCBpbnRvIHRoZSBuYW1lc3BhY2UuCisvLyBO
b3RoaW5nIHRvIGRvIGhlcmUuCiAKLS8vIE11dGV4QmFzZSBhbmQgTXV0ZXggaW1wbGVtZW50IG11
dGV4IG9uIHB0aHJlYWRzLWJhc2VkIHBsYXRmb3Jtcy4gVGhleQotLy8gYXJlIHVzZWQgaW4gY29u
anVuY3Rpb24gd2l0aCBjbGFzcyBNdXRleExvY2s6CisjIGVsaWYgR1RFU1RfT1NfV0lORE9XUyAm
JiAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lORE9XU19SVAorCisvLyBN
dXRleCBpbXBsZW1lbnRzIG11dGV4IG9uIFdpbmRvd3MgcGxhdGZvcm1zLiAgSXQgaXMgdXNlZCBp
biBjb25qdW5jdGlvbgorLy8gd2l0aCBjbGFzcyBNdXRleExvY2s6CiAvLwogLy8gICBNdXRleCBt
dXRleDsKIC8vICAgLi4uCi0vLyAgIE11dGV4TG9jayBsb2NrKCZtdXRleCk7ICAvLyBBY3F1aXJl
cyB0aGUgbXV0ZXggYW5kIHJlbGVhc2VzIGl0IGF0IHRoZSBlbmQKLS8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIG9mIHRoZSBjdXJyZW50IHNjb3BlLgotLy8KLS8vIE11dGV4QmFzZSBp
bXBsZW1lbnRzIGJlaGF2aW9yIGZvciBib3RoIHN0YXRpY2FsbHkgYW5kIGR5bmFtaWNhbGx5Ci0v
LyBhbGxvY2F0ZWQgbXV0ZXhlcy4gIERvIG5vdCB1c2UgTXV0ZXhCYXNlIGRpcmVjdGx5LiAgSW5z
dGVhZCwgd3JpdGUKLS8vIHRoZSBmb2xsb3dpbmcgdG8gZGVmaW5lIGEgc3RhdGljIG11dGV4Ogor
Ly8gICBNdXRleExvY2sgbG9jaygmbXV0ZXgpOyAgLy8gQWNxdWlyZXMgdGhlIG11dGV4IGFuZCBy
ZWxlYXNlcyBpdCBhdCB0aGUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuZCBv
ZiB0aGUgY3VycmVudCBzY29wZS4KIC8vCisvLyBBIHN0YXRpYyBNdXRleCAqbXVzdCogYmUgZGVm
aW5lZCBvciBkZWNsYXJlZCB1c2luZyBvbmUgb2YgdGhlIGZvbGxvd2luZworLy8gbWFjcm9zOgog
Ly8gICBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhnX3NvbWVfbXV0ZXgpOworLy8gICBHVEVT
VF9ERUNMQVJFX1NUQVRJQ19NVVRFWF8oZ19zb21lX211dGV4KTsKKy8vCisvLyAoQSBub24tc3Rh
dGljIE11dGV4IGlzIGRlZmluZWQvZGVjbGFyZWQgaW4gdGhlIHVzdWFsIHdheSkuCitjbGFzcyBH
VEVTVF9BUElfIE11dGV4IHsKKyBwdWJsaWM6CisgIGVudW0gTXV0ZXhUeXBlIHsga1N0YXRpYyA9
IDAsIGtEeW5hbWljID0gMSB9OworICAvLyBXZSByZWx5IG9uIGtTdGF0aWNNdXRleCBiZWluZyAw
IGFzIGl0IGlzIHRvIHdoYXQgdGhlIGxpbmtlciBpbml0aWFsaXplcworICAvLyB0eXBlXyBpbiBz
dGF0aWMgbXV0ZXhlcy4gIGNyaXRpY2FsX3NlY3Rpb25fIHdpbGwgYmUgaW5pdGlhbGl6ZWQgbGF6
aWx5CisgIC8vIGluIFRocmVhZFNhZmVMYXp5SW5pdCgpLgorICBlbnVtIFN0YXRpY0NvbnN0cnVj
dG9yU2VsZWN0b3IgeyBrU3RhdGljTXV0ZXggPSAwIH07CisKKyAgLy8gVGhpcyBjb25zdHJ1Y3Rv
ciBpbnRlbnRpb25hbGx5IGRvZXMgbm90aGluZy4gIEl0IHJlbGllcyBvbiB0eXBlXyBiZWluZwor
ICAvLyBzdGF0aWNhbGx5IGluaXRpYWxpemVkIHRvIDAgKGVmZmVjdGl2ZWx5IHNldHRpbmcgaXQg
dG8ga1N0YXRpYykgYW5kIG9uCisgIC8vIFRocmVhZFNhZmVMYXp5SW5pdCgpIHRvIGxhemlseSBp
bml0aWFsaXplIHRoZSByZXN0IG9mIHRoZSBtZW1iZXJzLgorICBleHBsaWNpdCBNdXRleChTdGF0
aWNDb25zdHJ1Y3RvclNlbGVjdG9yIC8qZHVtbXkqLykge30KKworICBNdXRleCgpOworICB+TXV0
ZXgoKTsKKworICB2b2lkIExvY2soKTsKKworICB2b2lkIFVubG9jaygpOworCisgIC8vIERvZXMg
bm90aGluZyBpZiB0aGUgY3VycmVudCB0aHJlYWQgaG9sZHMgdGhlIG11dGV4LiBPdGhlcndpc2Us
IGNyYXNoZXMKKyAgLy8gd2l0aCBoaWdoIHByb2JhYmlsaXR5LgorICB2b2lkIEFzc2VydEhlbGQo
KTsKKworIHByaXZhdGU6CisgIC8vIEluaXRpYWxpemVzIG93bmVyX3RocmVhZF9pZF8gYW5kIGNy
aXRpY2FsX3NlY3Rpb25fIGluIHN0YXRpYyBtdXRleGVzLgorICB2b2lkIFRocmVhZFNhZmVMYXp5
SW5pdCgpOworCisgIC8vIFBlciBodHRwczovL2Jsb2dzLm1zZG4ubWljcm9zb2Z0LmNvbS9vbGRu
ZXd0aGluZy8yMDA0MDIyMy0wMC8/cD00MDUwMywKKyAgLy8gd2UgYXNzdW1lIHRoYXQgMCBpcyBh
biBpbnZhbGlkIHZhbHVlIGZvciB0aHJlYWQgSURzLgorICB1bnNpZ25lZCBpbnQgb3duZXJfdGhy
ZWFkX2lkXzsKKworICAvLyBGb3Igc3RhdGljIG11dGV4ZXMsIHdlIHJlbHkgb24gdGhlc2UgbWVt
YmVycyBiZWluZyBpbml0aWFsaXplZCB0byB6ZXJvcworICAvLyBieSB0aGUgbGlua2VyLgorICBN
dXRleFR5cGUgdHlwZV87CisgIGxvbmcgY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXzsgIC8v
IE5PTElOVAorICBHVEVTVF9DUklUSUNBTF9TRUNUSU9OKiBjcml0aWNhbF9zZWN0aW9uXzsKKwor
ICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE11dGV4KTsKK307CisKKyMgZGVmaW5l
IEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRleCkgXAorICAgIGV4dGVybiA6OnRlc3Rp
bmc6OmludGVybmFsOjpNdXRleCBtdXRleAorCisjIGRlZmluZSBHVEVTVF9ERUZJTkVfU1RBVElD
X01VVEVYXyhtdXRleCkgXAorICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4IG11dGV4KDo6
dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4OjprU3RhdGljTXV0ZXgpCisKKy8vIFdlIGNhbm5vdCBu
YW1lIHRoaXMgY2xhc3MgTXV0ZXhMb2NrIGJlY2F1c2UgdGhlIGN0b3IgZGVjbGFyYXRpb24gd291
bGQKKy8vIGNvbmZsaWN0IHdpdGggYSBtYWNybyBuYW1lZCBNdXRleExvY2ssIHdoaWNoIGlzIGRl
ZmluZWQgb24gc29tZQorLy8gcGxhdGZvcm1zLiBUaGF0IG1hY3JvIGlzIHVzZWQgYXMgYSBkZWZl
bnNpdmUgbWVhc3VyZSB0byBwcmV2ZW50IGFnYWluc3QKKy8vIGluYWR2ZXJ0ZW50IG1pc3VzZXMg
b2YgTXV0ZXhMb2NrIGxpa2UgIk11dGV4TG9jaygmbXUpIiByYXRoZXIgdGhhbgorLy8gIk11dGV4
TG9jayBsKCZtdSkiLiAgSGVuY2UgdGhlIHR5cGVkZWYgdHJpY2sgYmVsb3cuCitjbGFzcyBHVGVz
dE11dGV4TG9jayB7CisgcHVibGljOgorICBleHBsaWNpdCBHVGVzdE11dGV4TG9jayhNdXRleCog
bXV0ZXgpCisgICAgICA6IG11dGV4XyhtdXRleCkgeyBtdXRleF8tPkxvY2soKTsgfQorCisgIH5H
VGVzdE11dGV4TG9jaygpIHsgbXV0ZXhfLT5VbmxvY2soKTsgfQorCisgcHJpdmF0ZToKKyAgTXV0
ZXgqIGNvbnN0IG11dGV4XzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEdU
ZXN0TXV0ZXhMb2NrKTsKK307CisKK3R5cGVkZWYgR1Rlc3RNdXRleExvY2sgTXV0ZXhMb2NrOwor
CisvLyBCYXNlIGNsYXNzIGZvciBWYWx1ZUhvbGRlcjxUPi4gIEFsbG93cyBhIGNhbGxlciB0byBo
b2xkIGFuZCBkZWxldGUgYSB2YWx1ZQorLy8gd2l0aG91dCBrbm93aW5nIGl0cyB0eXBlLgorY2xh
c3MgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UgeworIHB1YmxpYzoKKyAgdmlydHVhbCB+VGhy
ZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UoKSB7fQorfTsKKworLy8gUHJvdmlkZXMgYSB3YXkgZm9y
IGEgdGhyZWFkIHRvIHNlbmQgbm90aWZpY2F0aW9ucyB0byBhIFRocmVhZExvY2FsCisvLyByZWdh
cmRsZXNzIG9mIGl0cyBwYXJhbWV0ZXIgdHlwZS4KK2NsYXNzIFRocmVhZExvY2FsQmFzZSB7Cisg
cHVibGljOgorICAvLyBDcmVhdGVzIGEgbmV3IFZhbHVlSG9sZGVyPFQ+IG9iamVjdCBob2xkaW5n
IGEgZGVmYXVsdCB2YWx1ZSBwYXNzZWQgdG8KKyAgLy8gdGhpcyBUaHJlYWRMb2NhbDxUPidzIGNv
bnN0cnVjdG9yIGFuZCByZXR1cm5zIGl0LiAgSXQgaXMgdGhlIGNhbGxlcidzCisgIC8vIHJlc3Bv
bnNpYmlsaXR5IG5vdCB0byBjYWxsIHRoaXMgd2hlbiB0aGUgVGhyZWFkTG9jYWw8VD4gaW5zdGFu
Y2UgYWxyZWFkeQorICAvLyBoYXMgYSB2YWx1ZSBvbiB0aGUgY3VycmVudCB0aHJlYWQuCisgIHZp
cnR1YWwgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UqIE5ld1ZhbHVlRm9yQ3VycmVudFRocmVh
ZCgpIGNvbnN0ID0gMDsKKworIHByb3RlY3RlZDoKKyAgVGhyZWFkTG9jYWxCYXNlKCkge30KKyAg
dmlydHVhbCB+VGhyZWFkTG9jYWxCYXNlKCkge30KKworIHByaXZhdGU6CisgIEdURVNUX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkTG9jYWxCYXNlKTsKK307CisKKy8vIE1hcHMgYSB0
aHJlYWQgdG8gYSBzZXQgb2YgVGhyZWFkTG9jYWxzIHRoYXQgaGF2ZSB2YWx1ZXMgaW5zdGFudGlh
dGVkIG9uIHRoYXQKKy8vIHRocmVhZCBhbmQgbm90aWZpZXMgdGhlbSB3aGVuIHRoZSB0aHJlYWQg
ZXhpdHMuICBBIFRocmVhZExvY2FsIGluc3RhbmNlIGlzCisvLyBleHBlY3RlZCB0byBwZXJzaXN0
IHVudGlsIGFsbCB0aHJlYWRzIGl0IGhhcyB2YWx1ZXMgb24gaGF2ZSB0ZXJtaW5hdGVkLgorY2xh
c3MgR1RFU1RfQVBJXyBUaHJlYWRMb2NhbFJlZ2lzdHJ5IHsKKyBwdWJsaWM6CisgIC8vIFJlZ2lz
dGVycyB0aHJlYWRfbG9jYWxfaW5zdGFuY2UgYXMgaGF2aW5nIHZhbHVlIG9uIHRoZSBjdXJyZW50
IHRocmVhZC4KKyAgLy8gUmV0dXJucyBhIHZhbHVlIHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRp
ZnkgdGhlIHRocmVhZCBmcm9tIG90aGVyIHRocmVhZHMuCisgIHN0YXRpYyBUaHJlYWRMb2NhbFZh
bHVlSG9sZGVyQmFzZSogR2V0VmFsdWVPbkN1cnJlbnRUaHJlYWQoCisgICAgICBjb25zdCBUaHJl
YWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9pbnN0YW5jZSk7CisKKyAgLy8gSW52b2tlZCB3aGVu
IGEgVGhyZWFkTG9jYWwgaW5zdGFuY2UgaXMgZGVzdHJveWVkLgorICBzdGF0aWMgdm9pZCBPblRo
cmVhZExvY2FsRGVzdHJveWVkKAorICAgICAgY29uc3QgVGhyZWFkTG9jYWxCYXNlKiB0aHJlYWRf
bG9jYWxfaW5zdGFuY2UpOworfTsKKworY2xhc3MgR1RFU1RfQVBJXyBUaHJlYWRXaXRoUGFyYW1C
YXNlIHsKKyBwdWJsaWM6CisgIHZvaWQgSm9pbigpOworCisgcHJvdGVjdGVkOgorICBjbGFzcyBS
dW5uYWJsZSB7CisgICBwdWJsaWM6CisgICAgdmlydHVhbCB+UnVubmFibGUoKSB7fQorICAgIHZp
cnR1YWwgdm9pZCBSdW4oKSA9IDA7CisgIH07CisKKyAgVGhyZWFkV2l0aFBhcmFtQmFzZShSdW5u
YWJsZSAqcnVubmFibGUsIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydCk7CisgIHZpcnR1
YWwgflRocmVhZFdpdGhQYXJhbUJhc2UoKTsKKworIHByaXZhdGU6CisgIEF1dG9IYW5kbGUgdGhy
ZWFkXzsKK307CisKKy8vIEhlbHBlciBjbGFzcyBmb3IgdGVzdGluZyBHb29nbGUgVGVzdCdzIG11
bHRpLXRocmVhZGluZyBjb25zdHJ1Y3RzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBU
aHJlYWRXaXRoUGFyYW0gOiBwdWJsaWMgVGhyZWFkV2l0aFBhcmFtQmFzZSB7CisgcHVibGljOgor
ICB0eXBlZGVmIHZvaWQgVXNlclRocmVhZEZ1bmMoVCk7CisKKyAgVGhyZWFkV2l0aFBhcmFtKFVz
ZXJUaHJlYWRGdW5jKiBmdW5jLCBUIHBhcmFtLCBOb3RpZmljYXRpb24qIHRocmVhZF9jYW5fc3Rh
cnQpCisgICAgICA6IFRocmVhZFdpdGhQYXJhbUJhc2UobmV3IFJ1bm5hYmxlSW1wbChmdW5jLCBw
YXJhbSksIHRocmVhZF9jYW5fc3RhcnQpIHsKKyAgfQorICB2aXJ0dWFsIH5UaHJlYWRXaXRoUGFy
YW0oKSB7fQorCisgcHJpdmF0ZToKKyAgY2xhc3MgUnVubmFibGVJbXBsIDogcHVibGljIFJ1bm5h
YmxlIHsKKyAgIHB1YmxpYzoKKyAgICBSdW5uYWJsZUltcGwoVXNlclRocmVhZEZ1bmMqIGZ1bmMs
IFQgcGFyYW0pCisgICAgICAgIDogZnVuY18oZnVuYyksCisgICAgICAgICAgcGFyYW1fKHBhcmFt
KSB7CisgICAgfQorICAgIHZpcnR1YWwgflJ1bm5hYmxlSW1wbCgpIHt9CisgICAgdmlydHVhbCB2
b2lkIFJ1bigpIHsKKyAgICAgIGZ1bmNfKHBhcmFtXyk7CisgICAgfQorCisgICBwcml2YXRlOgor
ICAgIFVzZXJUaHJlYWRGdW5jKiBjb25zdCBmdW5jXzsKKyAgICBjb25zdCBUIHBhcmFtXzsKKwor
ICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oUnVubmFibGVJbXBsKTsKKyAgfTsK
KworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRocmVhZFdpdGhQYXJhbSk7Cit9
OworCisvLyBJbXBsZW1lbnRzIHRocmVhZC1sb2NhbCBzdG9yYWdlIG9uIFdpbmRvd3Mgc3lzdGVt
cy4KIC8vCi0vLyBZb3UgY2FuIGZvcndhcmQgZGVjbGFyZSBhIHN0YXRpYyBtdXRleCBsaWtlIHRo
aXM6CisvLyAgIC8vIFRocmVhZCAxCisvLyAgIFRocmVhZExvY2FsPGludD4gdGwoMTAwKTsgIC8v
IDEwMCBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgZWFjaCB0aHJlYWQuCiAvLwotLy8gICBHVEVT
VF9ERUNMQVJFX1NUQVRJQ19NVVRFWF8oZ19zb21lX211dGV4KTsKKy8vICAgLy8gVGhyZWFkIDIK
Ky8vICAgdGwuc2V0KDE1MCk7ICAvLyBDaGFuZ2VzIHRoZSB2YWx1ZSBmb3IgdGhyZWFkIDIgb25s
eS4KKy8vICAgRVhQRUNUX0VRKDE1MCwgdGwuZ2V0KCkpOwogLy8KLS8vIFRvIGNyZWF0ZSBhIGR5
bmFtaWMgbXV0ZXgsIGp1c3QgZGVmaW5lIGFuIG9iamVjdCBvZiB0eXBlIE11dGV4LgorLy8gICAv
LyBUaHJlYWQgMQorLy8gICBFWFBFQ1RfRVEoMTAwLCB0bC5nZXQoKSk7ICAvLyBJbiB0aHJlYWQg
MSwgdGwgaGFzIHRoZSBvcmlnaW5hbCB2YWx1ZS4KKy8vICAgdGwuc2V0KDIwMCk7CisvLyAgIEVY
UEVDVF9FUSgyMDAsIHRsLmdldCgpKTsKKy8vCisvLyBUaGUgdGVtcGxhdGUgdHlwZSBhcmd1bWVu
dCBUIG11c3QgaGF2ZSBhIHB1YmxpYyBjb3B5IGNvbnN0cnVjdG9yLgorLy8gSW4gYWRkaXRpb24s
IHRoZSBkZWZhdWx0IFRocmVhZExvY2FsIGNvbnN0cnVjdG9yIHJlcXVpcmVzIFQgdG8gaGF2ZQor
Ly8gYSBwdWJsaWMgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KKy8vCisvLyBUaGUgdXNlcnMgb2YgYSBU
aGVhZExvY2FsIGluc3RhbmNlIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIGJ1dCBvbmUKKy8v
IHRocmVhZHMgKGluY2x1ZGluZyB0aGUgbWFpbiBvbmUpIHVzaW5nIHRoYXQgaW5zdGFuY2UgaGF2
ZSBleGl0ZWQgYmVmb3JlCisvLyBkZXN0cm95aW5nIGl0LiBPdGhlcndpc2UsIHRoZSBwZXItdGhy
ZWFkIG9iamVjdHMgbWFuYWdlZCBmb3IgdGhlbSBieSB0aGUKKy8vIFRocmVhZExvY2FsIGluc3Rh
bmNlIGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSBkZXN0cm95ZWQgb24gYWxsIHBsYXRmb3Jtcy4K
Ky8vCisvLyBHb29nbGUgVGVzdCBvbmx5IHVzZXMgZ2xvYmFsIFRocmVhZExvY2FsIG9iamVjdHMu
ICBUaGF0IG1lYW5zIHRoZXkKKy8vIHdpbGwgZGllIGFmdGVyIG1haW4oKSBoYXMgcmV0dXJuZWQu
ICBUaGVyZWZvcmUsIG5vIHBlci10aHJlYWQKKy8vIG9iamVjdCBtYW5hZ2VkIGJ5IEdvb2dsZSBU
ZXN0IHdpbGwgYmUgbGVha2VkIGFzIGxvbmcgYXMgYWxsIHRocmVhZHMKKy8vIHVzaW5nIEdvb2ds
ZSBUZXN0IGhhdmUgZXhpdGVkIHdoZW4gbWFpbigpIHJldHVybnMuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK2NsYXNzIFRocmVhZExvY2FsIDogcHVibGljIFRocmVhZExvY2FsQmFzZSB7CisgcHVi
bGljOgorICBUaHJlYWRMb2NhbCgpIDogZGVmYXVsdF9mYWN0b3J5XyhuZXcgRGVmYXVsdFZhbHVl
SG9sZGVyRmFjdG9yeSgpKSB7fQorICBleHBsaWNpdCBUaHJlYWRMb2NhbChjb25zdCBUJiB2YWx1
ZSkKKyAgICAgIDogZGVmYXVsdF9mYWN0b3J5XyhuZXcgSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3Rv
cnkodmFsdWUpKSB7fQorCisgIH5UaHJlYWRMb2NhbCgpIHsgVGhyZWFkTG9jYWxSZWdpc3RyeTo6
T25UaHJlYWRMb2NhbERlc3Ryb3llZCh0aGlzKTsgfQorCisgIFQqIHBvaW50ZXIoKSB7IHJldHVy
biBHZXRPckNyZWF0ZVZhbHVlKCk7IH0KKyAgY29uc3QgVCogcG9pbnRlcigpIGNvbnN0IHsgcmV0
dXJuIEdldE9yQ3JlYXRlVmFsdWUoKTsgfQorICBjb25zdCBUJiBnZXQoKSBjb25zdCB7IHJldHVy
biAqcG9pbnRlcigpOyB9CisgIHZvaWQgc2V0KGNvbnN0IFQmIHZhbHVlKSB7ICpwb2ludGVyKCkg
PSB2YWx1ZTsgfQorCisgcHJpdmF0ZToKKyAgLy8gSG9sZHMgYSB2YWx1ZSBvZiBULiAgQ2FuIGJl
IGRlbGV0ZWQgdmlhIGl0cyBiYXNlIGNsYXNzIHdpdGhvdXQgdGhlIGNhbGxlcgorICAvLyBrbm93
aW5nIHRoZSB0eXBlIG9mIFQuCisgIGNsYXNzIFZhbHVlSG9sZGVyIDogcHVibGljIFRocmVhZExv
Y2FsVmFsdWVIb2xkZXJCYXNlIHsKKyAgIHB1YmxpYzoKKyAgICBWYWx1ZUhvbGRlcigpIDogdmFs
dWVfKCkge30KKyAgICBleHBsaWNpdCBWYWx1ZUhvbGRlcihjb25zdCBUJiB2YWx1ZSkgOiB2YWx1
ZV8odmFsdWUpIHt9CisKKyAgICBUKiBwb2ludGVyKCkgeyByZXR1cm4gJnZhbHVlXzsgfQorCisg
ICBwcml2YXRlOgorICAgIFQgdmFsdWVfOworICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oVmFsdWVIb2xkZXIpOworICB9OworCisKKyAgVCogR2V0T3JDcmVhdGVWYWx1ZSgpIGNv
bnN0IHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmFsdWVIb2xkZXIqPigKKyAgICAgICAgVGhy
ZWFkTG9jYWxSZWdpc3RyeTo6R2V0VmFsdWVPbkN1cnJlbnRUaHJlYWQodGhpcykpLT5wb2ludGVy
KCk7CisgIH0KKworICB2aXJ0dWFsIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlKiBOZXdWYWx1
ZUZvckN1cnJlbnRUaHJlYWQoKSBjb25zdCB7CisgICAgcmV0dXJuIGRlZmF1bHRfZmFjdG9yeV8t
Pk1ha2VOZXdIb2xkZXIoKTsKKyAgfQorCisgIGNsYXNzIFZhbHVlSG9sZGVyRmFjdG9yeSB7Cisg
ICBwdWJsaWM6CisgICAgVmFsdWVIb2xkZXJGYWN0b3J5KCkge30KKyAgICB2aXJ0dWFsIH5WYWx1
ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xk
ZXIoKSBjb25zdCA9IDA7CisKKyAgIHByaXZhdGU6CisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOXyhWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9OworCisgIGNsYXNzIERlZmF1bHRW
YWx1ZUhvbGRlckZhY3RvcnkgOiBwdWJsaWMgVmFsdWVIb2xkZXJGYWN0b3J5IHsKKyAgIHB1Ymxp
YzoKKyAgICBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5KCkge30KKyAgICB2aXJ0dWFsIFZhbHVl
SG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkgY29uc3QgeyByZXR1cm4gbmV3IFZhbHVlSG9sZGVyKCk7
IH0KKworICAgcHJpdmF0ZToKKyAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKERl
ZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9OworCisgIGNsYXNzIEluc3RhbmNlVmFsdWVI
b2xkZXJGYWN0b3J5IDogcHVibGljIFZhbHVlSG9sZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6Cisg
ICAgZXhwbGljaXQgSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkoY29uc3QgVCYgdmFsdWUpIDog
dmFsdWVfKHZhbHVlKSB7fQorICAgIHZpcnR1YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIo
KSBjb25zdCB7CisgICAgICByZXR1cm4gbmV3IFZhbHVlSG9sZGVyKHZhbHVlXyk7CisgICAgfQor
CisgICBwcml2YXRlOgorICAgIGNvbnN0IFQgdmFsdWVfOyAgLy8gVGhlIHZhbHVlIGZvciBlYWNo
IHRocmVhZC4KKworICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oSW5zdGFuY2VW
YWx1ZUhvbGRlckZhY3RvcnkpOworICB9OworCisgIHNjb3BlZF9wdHI8VmFsdWVIb2xkZXJGYWN0
b3J5PiBkZWZhdWx0X2ZhY3RvcnlfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oVGhyZWFkTG9jYWwpOworfTsKKworIyBlbGlmIEdURVNUX0hBU19QVEhSRUFECisKKy8vIE11
dGV4QmFzZSBhbmQgTXV0ZXggaW1wbGVtZW50IG11dGV4IG9uIHB0aHJlYWRzLWJhc2VkIHBsYXRm
b3Jtcy4KIGNsYXNzIE11dGV4QmFzZSB7CiAgcHVibGljOgogICAvLyBBY3F1aXJlcyB0aGlzIG11
dGV4LgogICB2b2lkIExvY2soKSB7CiAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRo
cmVhZF9tdXRleF9sb2NrKCZtdXRleF8pKTsKICAgICBvd25lcl8gPSBwdGhyZWFkX3NlbGYoKTsK
KyAgICBoYXNfb3duZXJfID0gdHJ1ZTsKICAgfQogCiAgIC8vIFJlbGVhc2VzIHRoaXMgbXV0ZXgu
CiAgIHZvaWQgVW5sb2NrKCkgewotICAgIC8vIFdlIGRvbid0IHByb3RlY3Qgd3JpdGluZyB0byBv
d25lcl8gaGVyZSwgYXMgaXQncyB0aGUgY2FsbGVyJ3MKLSAgICAvLyByZXNwb25zaWJpbGl0eSB0
byBlbnN1cmUgdGhhdCB0aGUgY3VycmVudCB0aHJlYWQgaG9sZHMgdGhlCisgICAgLy8gU2luY2Ug
dGhlIGxvY2sgaXMgYmVpbmcgcmVsZWFzZWQgdGhlIG93bmVyXyBmaWVsZCBzaG91bGQgbm8gbG9u
Z2VyIGJlCisgICAgLy8gY29uc2lkZXJlZCB2YWxpZC4gV2UgZG9uJ3QgcHJvdGVjdCB3cml0aW5n
IHRvIGhhc19vd25lcl8gaGVyZSwgYXMgaXQncworICAgIC8vIHRoZSBjYWxsZXIncyByZXNwb25z
aWJpbGl0eSB0byBlbnN1cmUgdGhhdCB0aGUgY3VycmVudCB0aHJlYWQgaG9sZHMgdGhlCiAgICAg
Ly8gbXV0ZXggd2hlbiB0aGlzIGlzIGNhbGxlZC4KLSAgICBvd25lcl8gPSAwOworICAgIGhhc19v
d25lcl8gPSBmYWxzZTsKICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211
dGV4X3VubG9jaygmbXV0ZXhfKSk7CiAgIH0KIAogICAvLyBEb2VzIG5vdGhpbmcgaWYgdGhlIGN1
cnJlbnQgdGhyZWFkIGhvbGRzIHRoZSBtdXRleC4gT3RoZXJ3aXNlLCBjcmFzaGVzCiAgIC8vIHdp
dGggaGlnaCBwcm9iYWJpbGl0eS4KICAgdm9pZCBBc3NlcnRIZWxkKCkgY29uc3QgewotICAgIEdU
RVNUX0NIRUNLXyhvd25lcl8gPT0gcHRocmVhZF9zZWxmKCkpCisgICAgR1RFU1RfQ0hFQ0tfKGhh
c19vd25lcl8gJiYgcHRocmVhZF9lcXVhbChvd25lcl8sIHB0aHJlYWRfc2VsZigpKSkKICAgICAg
ICAgPDwgIlRoZSBjdXJyZW50IHRocmVhZCBpcyBub3QgaG9sZGluZyB0aGUgbXV0ZXggQCIgPDwg
dGhpczsKICAgfQogCkBAIC0xMDQ2LDE2ICsyMDg3LDI4IEBAIGNsYXNzIE11dGV4QmFzZSB7CiAg
IC8vIGhhdmUgdG8gYmUgcHVibGljLgogIHB1YmxpYzoKICAgcHRocmVhZF9tdXRleF90IG11dGV4
XzsgIC8vIFRoZSB1bmRlcmx5aW5nIHB0aHJlYWQgbXV0ZXguCi0gIHB0aHJlYWRfdCBvd25lcl87
ICAvLyBUaGUgdGhyZWFkIGhvbGRpbmcgdGhlIG11dGV4OyAwIG1lYW5zIG5vIG9uZSBob2xkcyBp
dC4KKyAgLy8gaGFzX293bmVyXyBpbmRpY2F0ZXMgd2hldGhlciB0aGUgb3duZXJfIGZpZWxkIGJl
bG93IGNvbnRhaW5zIGEgdmFsaWQgdGhyZWFkCisgIC8vIElEIGFuZCBpcyB0aGVyZWZvcmUgc2Fm
ZSB0byBpbnNwZWN0IChlLmcuLCB0byB1c2UgaW4gcHRocmVhZF9lcXVhbCgpKS4gQWxsCisgIC8v
IGFjY2Vzc2VzIHRvIHRoZSBvd25lcl8gZmllbGQgc2hvdWxkIGJlIHByb3RlY3RlZCBieSBhIGNo
ZWNrIG9mIHRoaXMgZmllbGQuCisgIC8vIEFuIGFsdGVybmF0aXZlIG1pZ2h0IGJlIHRvIG1lbXNl
dCgpIG93bmVyXyB0byBhbGwgemVyb3MsIGJ1dCB0aGVyZSdzIG5vCisgIC8vIGd1YXJhbnRlZSB0
aGF0IGEgemVybydkIHB0aHJlYWRfdCBpcyBuZWNlc3NhcmlseSBpbnZhbGlkIG9yIGV2ZW4gZGlm
ZmVyZW50CisgIC8vIGZyb20gcHRocmVhZF9zZWxmKCkuCisgIGJvb2wgaGFzX293bmVyXzsKKyAg
cHRocmVhZF90IG93bmVyXzsgIC8vIFRoZSB0aHJlYWQgaG9sZGluZyB0aGUgbXV0ZXguCiB9Owog
CiAvLyBGb3J3YXJkLWRlY2xhcmVzIGEgc3RhdGljIG11dGV4LgotI2RlZmluZSBHVEVTVF9ERUNM
QVJFX1NUQVRJQ19NVVRFWF8obXV0ZXgpIFwKLSAgICBleHRlcm4gOjp0ZXN0aW5nOjppbnRlcm5h
bDo6TXV0ZXhCYXNlIG11dGV4CisjICBkZWZpbmUgR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVURVhf
KG11dGV4KSBcCisgICAgIGV4dGVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpNdXRleEJhc2UgbXV0
ZXgKIAogLy8gRGVmaW5lcyBhbmQgc3RhdGljYWxseSAoaS5lLiBhdCBsaW5rIHRpbWUpIGluaXRp
YWxpemVzIGEgc3RhdGljIG11dGV4LgorLy8gVGhlIGluaXRpYWxpemF0aW9uIGxpc3QgaGVyZSBk
b2VzIG5vdCBleHBsaWNpdGx5IGluaXRpYWxpemUgZWFjaCBmaWVsZCwKKy8vIGluc3RlYWQgcmVs
eWluZyBvbiBkZWZhdWx0IGluaXRpYWxpemF0aW9uIGZvciB0aGUgdW5zcGVjaWZpZWQgZmllbGRz
LiBJbgorLy8gcGFydGljdWxhciwgdGhlIG93bmVyXyBmaWVsZCAoYSBwdGhyZWFkX3QpIGlzIG5v
dCBleHBsaWNpdGx5IGluaXRpYWxpemVkLgorLy8gVGhpcyBhbGxvd3MgaW5pdGlhbGl6YXRpb24g
dG8gd29yayB3aGV0aGVyIHB0aHJlYWRfdCBpcyBhIHNjYWxhciBvciBzdHJ1Y3QuCisvLyBUaGUg
ZmxhZyAtV21pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIG11c3Qgbm90IGJlIHNwZWNpZmllZCBm
b3IgdGhpcyB0byB3b3JrLgogI2RlZmluZSBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhtdXRl
eCkgXAotICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4QmFzZSBtdXRleCA9IHsgUFRIUkVB
RF9NVVRFWF9JTklUSUFMSVpFUiwgMCB9CisgIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4QmFz
ZSBtdXRleCA9IHtQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSLCBmYWxzZSwgMH0KIAogLy8gVGhl
IE11dGV4IGNsYXNzIGNhbiBvbmx5IGJlIHVzZWQgZm9yIG11dGV4ZXMgY3JlYXRlZCBhdCBydW50
aW1lLiBJdAogLy8gc2hhcmVzIGl0cyBBUEkgd2l0aCBNdXRleEJhc2Ugb3RoZXJ3aXNlLgpAQCAt
MTA2Myw3ICsyMTE2LDcgQEAgY2xhc3MgTXV0ZXggOiBwdWJsaWMgTXV0ZXhCYXNlIHsKICBwdWJs
aWM6CiAgIE11dGV4KCkgewogICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRf
bXV0ZXhfaW5pdCgmbXV0ZXhfLCBOVUxMKSk7Ci0gICAgb3duZXJfID0gMDsKKyAgICBoYXNfb3du
ZXJfID0gZmFsc2U7CiAgIH0KICAgfk11dGV4KCkgewogICAgIEdURVNUX0NIRUNLX1BPU0lYX1NV
Q0NFU1NfKHB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmbXV0ZXhfKSk7CkBAIC0xMDczLDkgKzIxMjYs
MTEgQEAgY2xhc3MgTXV0ZXggOiBwdWJsaWMgTXV0ZXhCYXNlIHsKICAgR1RFU1RfRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOXyhNdXRleCk7CiB9OwogCi0vLyBXZSBjYW5ub3QgbmFtZSB0aGlzIGNs
YXNzIE11dGV4TG9jayBhcyB0aGUgY3RvciBkZWNsYXJhdGlvbiB3b3VsZAorLy8gV2UgY2Fubm90
IG5hbWUgdGhpcyBjbGFzcyBNdXRleExvY2sgYmVjYXVzZSB0aGUgY3RvciBkZWNsYXJhdGlvbiB3
b3VsZAogLy8gY29uZmxpY3Qgd2l0aCBhIG1hY3JvIG5hbWVkIE11dGV4TG9jaywgd2hpY2ggaXMg
ZGVmaW5lZCBvbiBzb21lCi0vLyBwbGF0Zm9ybXMuICBIZW5jZSB0aGUgdHlwZWRlZiB0cmljayBi
ZWxvdy4KKy8vIHBsYXRmb3Jtcy4gVGhhdCBtYWNybyBpcyB1c2VkIGFzIGEgZGVmZW5zaXZlIG1l
YXN1cmUgdG8gcHJldmVudCBhZ2FpbnN0CisvLyBpbmFkdmVydGVudCBtaXN1c2VzIG9mIE11dGV4
TG9jayBsaWtlICJNdXRleExvY2soJm11KSIgcmF0aGVyIHRoYW4KKy8vICJNdXRleExvY2sgbCgm
bXUpIi4gIEhlbmNlIHRoZSB0eXBlZGVmIHRyaWNrIGJlbG93LgogY2xhc3MgR1Rlc3RNdXRleExv
Y2sgewogIHB1YmxpYzoKICAgZXhwbGljaXQgR1Rlc3RNdXRleExvY2soTXV0ZXhCYXNlKiBtdXRl
eCkKQEAgLTExMDksNDEgKzIxNjQsMTQgQEAgZXh0ZXJuICJDIiBpbmxpbmUgdm9pZCBEZWxldGVU
aHJlYWRMb2NhbFZhbHVlKHZvaWQqIHZhbHVlX2hvbGRlcikgewogfQogCiAvLyBJbXBsZW1lbnRz
IHRocmVhZC1sb2NhbCBzdG9yYWdlIG9uIHB0aHJlYWRzLWJhc2VkIHN5c3RlbXMuCi0vLwotLy8g
ICAvLyBUaHJlYWQgMQotLy8gICBUaHJlYWRMb2NhbDxpbnQ+IHRsKDEwMCk7ICAvLyAxMDAgaXMg
dGhlIGRlZmF1bHQgdmFsdWUgZm9yIGVhY2ggdGhyZWFkLgotLy8KLS8vICAgLy8gVGhyZWFkIDIK
LS8vICAgdGwuc2V0KDE1MCk7ICAvLyBDaGFuZ2VzIHRoZSB2YWx1ZSBmb3IgdGhyZWFkIDIgb25s
eS4KLS8vICAgRVhQRUNUX0VRKDE1MCwgdGwuZ2V0KCkpOwotLy8KLS8vICAgLy8gVGhyZWFkIDEK
LS8vICAgRVhQRUNUX0VRKDEwMCwgdGwuZ2V0KCkpOyAgLy8gSW4gdGhyZWFkIDEsIHRsIGhhcyB0
aGUgb3JpZ2luYWwgdmFsdWUuCi0vLyAgIHRsLnNldCgyMDApOwotLy8gICBFWFBFQ1RfRVEoMjAw
LCB0bC5nZXQoKSk7Ci0vLwotLy8gVGhlIHRlbXBsYXRlIHR5cGUgYXJndW1lbnQgVCBtdXN0IGhh
dmUgYSBwdWJsaWMgY29weSBjb25zdHJ1Y3Rvci4KLS8vIEluIGFkZGl0aW9uLCB0aGUgZGVmYXVs
dCBUaHJlYWRMb2NhbCBjb25zdHJ1Y3RvciByZXF1aXJlcyBUIHRvIGhhdmUKLS8vIGEgcHVibGlj
IGRlZmF1bHQgY29uc3RydWN0b3IuCi0vLwotLy8gQW4gb2JqZWN0IG1hbmFnZWQgZm9yIGEgdGhy
ZWFkIGJ5IGEgVGhyZWFkTG9jYWwgaW5zdGFuY2UgaXMgZGVsZXRlZAotLy8gd2hlbiB0aGUgdGhy
ZWFkIGV4aXRzLiAgT3IsIGlmIHRoZSBUaHJlYWRMb2NhbCBpbnN0YW5jZSBkaWVzIGluCi0vLyB0
aGF0IHRocmVhZCwgd2hlbiB0aGUgVGhyZWFkTG9jYWwgZGllcy4gIEl0J3MgdGhlIHVzZXIncwot
Ly8gcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoYXQgYWxsIG90aGVyIHRocmVhZHMgdXNpbmcg
YSBUaHJlYWRMb2NhbAotLy8gaGF2ZSBleGl0ZWQgd2hlbiBpdCBkaWVzLCBvciB0aGUgcGVyLXRo
cmVhZCBvYmplY3RzIGZvciB0aG9zZQotLy8gdGhyZWFkcyB3aWxsIG5vdCBiZSBkZWxldGVkLgot
Ly8KLS8vIEdvb2dsZSBUZXN0IG9ubHkgdXNlcyBnbG9iYWwgVGhyZWFkTG9jYWwgb2JqZWN0cy4g
IFRoYXQgbWVhbnMgdGhleQotLy8gd2lsbCBkaWUgYWZ0ZXIgbWFpbigpIGhhcyByZXR1cm5lZC4g
IFRoZXJlZm9yZSwgbm8gcGVyLXRocmVhZAotLy8gb2JqZWN0IG1hbmFnZWQgYnkgR29vZ2xlIFRl
c3Qgd2lsbCBiZSBsZWFrZWQgYXMgbG9uZyBhcyBhbGwgdGhyZWFkcwotLy8gdXNpbmcgR29vZ2xl
IFRlc3QgaGF2ZSBleGl0ZWQgd2hlbiBtYWluKCkgcmV0dXJucy4KIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotY2xhc3MgVGhyZWFkTG9jYWwgeworY2xhc3MgR1RFU1RfQVBJXyBUaHJlYWRMb2NhbCB7
CiAgcHVibGljOgotICBUaHJlYWRMb2NhbCgpIDoga2V5XyhDcmVhdGVLZXkoKSksCi0gICAgICAg
ICAgICAgICAgICBkZWZhdWx0XygpIHt9Ci0gIGV4cGxpY2l0IFRocmVhZExvY2FsKGNvbnN0IFQm
IHZhbHVlKSA6IGtleV8oQ3JlYXRlS2V5KCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0Xyh2YWx1ZSkge30KKyAgVGhyZWFkTG9jYWwoKQorICAgICAg
OiBrZXlfKENyZWF0ZUtleSgpKSwgZGVmYXVsdF9mYWN0b3J5XyhuZXcgRGVmYXVsdFZhbHVlSG9s
ZGVyRmFjdG9yeSgpKSB7fQorICBleHBsaWNpdCBUaHJlYWRMb2NhbChjb25zdCBUJiB2YWx1ZSkK
KyAgICAgIDoga2V5XyhDcmVhdGVLZXkoKSksCisgICAgICAgIGRlZmF1bHRfZmFjdG9yeV8obmV3
IEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5KHZhbHVlKSkge30KIAogICB+VGhyZWFkTG9jYWwo
KSB7CiAgICAgLy8gRGVzdHJveXMgdGhlIG1hbmFnZWQgb2JqZWN0IGZvciB0aGUgY3VycmVudCB0
aHJlYWQsIGlmIGFueS4KQEAgLTExNjMsNiArMjE5MSw3IEBAIGNsYXNzIFRocmVhZExvY2FsIHsK
ICAgLy8gSG9sZHMgYSB2YWx1ZSBvZiB0eXBlIFQuCiAgIGNsYXNzIFZhbHVlSG9sZGVyIDogcHVi
bGljIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlIHsKICAgIHB1YmxpYzoKKyAgICBWYWx1ZUhv
bGRlcigpIDogdmFsdWVfKCkge30KICAgICBleHBsaWNpdCBWYWx1ZUhvbGRlcihjb25zdCBUJiB2
YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9CiAKICAgICBUKiBwb2ludGVyKCkgeyByZXR1cm4gJnZh
bHVlXzsgfQpAQCAtMTE4OCwyMiArMjIxNyw1NCBAQCBjbGFzcyBUaHJlYWRMb2NhbCB7CiAgICAg
ICByZXR1cm4gQ2hlY2tlZERvd25jYXN0VG9BY3R1YWxUeXBlPFZhbHVlSG9sZGVyPihob2xkZXIp
LT5wb2ludGVyKCk7CiAgICAgfQogCi0gICAgVmFsdWVIb2xkZXIqIGNvbnN0IG5ld19ob2xkZXIg
PSBuZXcgVmFsdWVIb2xkZXIoZGVmYXVsdF8pOworICAgIFZhbHVlSG9sZGVyKiBjb25zdCBuZXdf
aG9sZGVyID0gZGVmYXVsdF9mYWN0b3J5Xy0+TWFrZU5ld0hvbGRlcigpOwogICAgIFRocmVhZExv
Y2FsVmFsdWVIb2xkZXJCYXNlKiBjb25zdCBob2xkZXJfYmFzZSA9IG5ld19ob2xkZXI7CiAgICAg
R1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9zZXRzcGVjaWZpYyhrZXlfLCBob2xk
ZXJfYmFzZSkpOwogICAgIHJldHVybiBuZXdfaG9sZGVyLT5wb2ludGVyKCk7CiAgIH0KIAorICBj
bGFzcyBWYWx1ZUhvbGRlckZhY3RvcnkgeworICAgcHVibGljOgorICAgIFZhbHVlSG9sZGVyRmFj
dG9yeSgpIHt9CisgICAgdmlydHVhbCB+VmFsdWVIb2xkZXJGYWN0b3J5KCkge30KKyAgICB2aXJ0
dWFsIFZhbHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkgY29uc3QgPSAwOworCisgICBwcml2YXRl
OgorICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVmFsdWVIb2xkZXJGYWN0b3J5
KTsKKyAgfTsKKworICBjbGFzcyBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5IDogcHVibGljIFZh
bHVlSG9sZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAgRGVmYXVsdFZhbHVlSG9sZGVyRmFj
dG9yeSgpIHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRlciogTWFrZU5ld0hvbGRlcigpIGNvbnN0
IHsgcmV0dXJuIG5ldyBWYWx1ZUhvbGRlcigpOyB9CisKKyAgIHByaXZhdGU6CisgICAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5KTsKKyAg
fTsKKworICBjbGFzcyBJbnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeSA6IHB1YmxpYyBWYWx1ZUhv
bGRlckZhY3RvcnkgeworICAgcHVibGljOgorICAgIGV4cGxpY2l0IEluc3RhbmNlVmFsdWVIb2xk
ZXJGYWN0b3J5KGNvbnN0IFQmIHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KKyAgICB2aXJ0dWFs
IFZhbHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkgY29uc3QgeworICAgICAgcmV0dXJuIG5ldyBW
YWx1ZUhvbGRlcih2YWx1ZV8pOworICAgIH0KKworICAgcHJpdmF0ZToKKyAgICBjb25zdCBUIHZh
bHVlXzsgIC8vIFRoZSB2YWx1ZSBmb3IgZWFjaCB0aHJlYWQuCisKKyAgICBHVEVTVF9ESVNBTExP
V19DT1BZX0FORF9BU1NJR05fKEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5KTsKKyAgfTsKKwog
ICAvLyBBIGtleSBwdGhyZWFkcyB1c2VzIGZvciBsb29raW5nIHVwIHBlci10aHJlYWQgdmFsdWVz
LgogICBjb25zdCBwdGhyZWFkX2tleV90IGtleV87Ci0gIGNvbnN0IFQgZGVmYXVsdF87ICAvLyBU
aGUgZGVmYXVsdCB2YWx1ZSBmb3IgZWFjaCB0aHJlYWQuCisgIHNjb3BlZF9wdHI8VmFsdWVIb2xk
ZXJGYWN0b3J5PiBkZWZhdWx0X2ZhY3RvcnlfOwogCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8oVGhyZWFkTG9jYWwpOwogfTsKIAotI2RlZmluZSBHVEVTVF9JU19USFJFQURTQUZF
IDEKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMXwogCi0jZWxz
ZSAgLy8gR1RFU1RfSEFTX1BUSFJFQUQKKyNlbHNlICAvLyBHVEVTVF9JU19USFJFQURTQUZFCiAK
IC8vIEEgZHVtbXkgaW1wbGVtZW50YXRpb24gb2Ygc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMg
KG11dGV4LCBsb2NrLAogLy8gYW5kIHRocmVhZC1sb2NhbCB2YXJpYWJsZSkuICBOZWNlc3Nhcnkg
Zm9yIGNvbXBpbGluZyBHb29nbGUgVGVzdCB3aGVyZQpAQCAtMTIxMywxNCArMjI3NCwyMSBAQCBj
bGFzcyBUaHJlYWRMb2NhbCB7CiBjbGFzcyBNdXRleCB7CiAgcHVibGljOgogICBNdXRleCgpIHt9
CisgIHZvaWQgTG9jaygpIHt9CisgIHZvaWQgVW5sb2NrKCkge30KICAgdm9pZCBBc3NlcnRIZWxk
KCkgY29uc3Qge30KIH07CiAKLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVURVhfKG11
dGV4KSBcCisjIGRlZmluZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRFWF8obXV0ZXgpIFwKICAg
ZXh0ZXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4IG11dGV4CiAKLSNkZWZpbmUgR1RFU1Rf
REVGSU5FX1NUQVRJQ19NVVRFWF8obXV0ZXgpIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4IG11
dGV4CisjIGRlZmluZSBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhtdXRleCkgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6TXV0ZXggbXV0ZXgKIAorLy8gV2UgY2Fubm90IG5hbWUgdGhpcyBjbGFzcyBN
dXRleExvY2sgYmVjYXVzZSB0aGUgY3RvciBkZWNsYXJhdGlvbiB3b3VsZAorLy8gY29uZmxpY3Qg
d2l0aCBhIG1hY3JvIG5hbWVkIE11dGV4TG9jaywgd2hpY2ggaXMgZGVmaW5lZCBvbiBzb21lCisv
LyBwbGF0Zm9ybXMuIFRoYXQgbWFjcm8gaXMgdXNlZCBhcyBhIGRlZmVuc2l2ZSBtZWFzdXJlIHRv
IHByZXZlbnQgYWdhaW5zdAorLy8gaW5hZHZlcnRlbnQgbWlzdXNlcyBvZiBNdXRleExvY2sgbGlr
ZSAiTXV0ZXhMb2NrKCZtdSkiIHJhdGhlciB0aGFuCisvLyAiTXV0ZXhMb2NrIGwoJm11KSIuICBI
ZW5jZSB0aGUgdHlwZWRlZiB0cmljayBiZWxvdy4KIGNsYXNzIEdUZXN0TXV0ZXhMb2NrIHsKICBw
dWJsaWM6CiAgIGV4cGxpY2l0IEdUZXN0TXV0ZXhMb2NrKE11dGV4Kikge30gIC8vIE5PTElOVApA
QCAtMTIyOSw3ICsyMjk3LDcgQEAgY2xhc3MgR1Rlc3RNdXRleExvY2sgewogdHlwZWRlZiBHVGVz
dE11dGV4TG9jayBNdXRleExvY2s7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgVGhy
ZWFkTG9jYWwgeworY2xhc3MgR1RFU1RfQVBJXyBUaHJlYWRMb2NhbCB7CiAgcHVibGljOgogICBU
aHJlYWRMb2NhbCgpIDogdmFsdWVfKCkge30KICAgZXhwbGljaXQgVGhyZWFkTG9jYWwoY29uc3Qg
VCYgdmFsdWUpIDogdmFsdWVfKHZhbHVlKSB7fQpAQCAtMTI0MSwyOCArMjMwOSwyNSBAQCBjbGFz
cyBUaHJlYWRMb2NhbCB7CiAgIFQgdmFsdWVfOwogfTsKIAotLy8gVGhlIGFib3ZlIHN5bmNocm9u
aXphdGlvbiBwcmltaXRpdmVzIGhhdmUgZHVtbXkgaW1wbGVtZW50YXRpb25zLgotLy8gVGhlcmVm
b3JlIEdvb2dsZSBUZXN0IGlzIG5vdCB0aHJlYWQtc2FmZS4KLSNkZWZpbmUgR1RFU1RfSVNfVEhS
RUFEU0FGRSAwCi0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BUSFJFQUQKKyNlbmRpZiAgLy8gR1RF
U1RfSVNfVEhSRUFEU0FGRQogCiAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBydW5u
aW5nIGluIHRoZSBwcm9jZXNzLCBvciAwIHRvIGluZGljYXRlIHRoYXQKIC8vIHdlIGNhbm5vdCBk
ZXRlY3QgaXQuCiBHVEVTVF9BUElfIHNpemVfdCBHZXRUaHJlYWRDb3VudCgpOwogCiAvLyBQYXNz
aW5nIG5vbi1QT0QgY2xhc3NlcyB0aHJvdWdoIGVsbGlwc2lzICguLi4pIGNyYXNoZXMgdGhlIEFS
TQotLy8gY29tcGlsZXIgYW5kIGdlbmVyYXRlcyBhIHdhcm5pbmcgaW4gU3VuIFN0dWRpby4gIFRo
ZSBOb2tpYSBTeW1iaWFuCisvLyBjb21waWxlciBhbmQgZ2VuZXJhdGVzIGEgd2FybmluZyBpbiBT
dW4gU3R1ZGlvIGJlZm9yZSAxMnU0LiBUaGUgTm9raWEgU3ltYmlhbgogLy8gYW5kIHRoZSBJQk0g
WEwgQy9DKysgY29tcGlsZXIgdHJ5IHRvIGluc3RhbnRpYXRlIGEgY29weSBjb25zdHJ1Y3Rvcgog
Ly8gZm9yIG9iamVjdHMgcGFzc2VkIHRocm91Z2ggZWxsaXBzaXMgKC4uLiksIGZhaWxpbmcgZm9y
IHVuY29weWFibGUKIC8vIG9iamVjdHMuICBXZSBkZWZpbmUgdGhpcyB0byBlbnN1cmUgdGhhdCBv
bmx5IFBPRCBpcyBwYXNzZWQgdGhyb3VnaAogLy8gZWxsaXBzaXMgb24gdGhlc2Ugc3lzdGVtcy4K
LSNpZiBkZWZpbmVkKF9fU1lNQklBTjMyX18pIHx8IGRlZmluZWQoX19JQk1DUFBfXykgfHwgZGVm
aW5lZChfX1NVTlBST19DQykKKyNpZiBkZWZpbmVkKF9fU1lNQklBTjMyX18pIHx8IGRlZmluZWQo
X19JQk1DUFBfXykgfHwgXAorICAgICAoZGVmaW5lZChfX1NVTlBST19DQykgJiYgX19TVU5QUk9f
Q0MgPCAweDUxMzApCiAvLyBXZSBsb3NlIHN1cHBvcnQgZm9yIE5VTEwgZGV0ZWN0aW9uIHdoZXJl
IHRoZSBjb21waWxlciBkb2Vzbid0IGxpa2UKIC8vIHBhc3Npbmcgbm9uLVBPRCBjbGFzc2VzIHRo
cm91Z2ggZWxsaXBzaXMgKC4uLikuCi0jZGVmaW5lIEdURVNUX0VMTElQU0lTX05FRURTX1BPRF8g
MQorIyBkZWZpbmUgR1RFU1RfRUxMSVBTSVNfTkVFRFNfUE9EXyAxCiAjZWxzZQotI2RlZmluZSBH
VEVTVF9DQU5fQ09NUEFSRV9OVUxMIDEKKyMgZGVmaW5lIEdURVNUX0NBTl9DT01QQVJFX05VTEwg
MQogI2VuZGlmCiAKIC8vIFRoZSBOb2tpYSBTeW1iaWFuIGFuZCBJQk0gWEwgQy9DKysgY29tcGls
ZXJzIGNhbm5vdCBkZWNpZGUgYmV0d2VlbgpAQCAtMTI3MCw3ICsyMzM1LDcgQEAgR1RFU1RfQVBJ
XyBzaXplX3QgR2V0VGhyZWFkQ291bnQoKTsKIC8vIF9jYW5fIGRlY2lkZSBiZXR3ZWVuIGNsYXNz
IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucyBmb3IgVCBhbmQgVCosCiAvLyBzbyBhIHRyMTo6dHlw
ZV90cmFpdHMtbGlrZSBpc19wb2ludGVyIHdvcmtzLgogI2lmIGRlZmluZWQoX19TWU1CSUFOMzJf
XykgfHwgZGVmaW5lZChfX0lCTUNQUF9fKQotI2RlZmluZSBHVEVTVF9ORUVEU19JU19QT0lOVEVS
XyAxCisjIGRlZmluZSBHVEVTVF9ORUVEU19JU19QT0lOVEVSXyAxCiAjZW5kaWYKIAogdGVtcGxh
dGUgPGJvb2wgYm9vbF92YWx1ZT4KQEAgLTEyODMsMjMgKzIzNDgsOTMgQEAgdGVtcGxhdGUgPGJv
b2wgYm9vbF92YWx1ZT4gY29uc3QgYm9vbCBib29sX2NvbnN0YW50PGJvb2xfdmFsdWU+Ojp2YWx1
ZTsKIHR5cGVkZWYgYm9vbF9jb25zdGFudDxmYWxzZT4gZmFsc2VfdHlwZTsKIHR5cGVkZWYgYm9v
bF9jb25zdGFudDx0cnVlPiB0cnVlX3R5cGU7CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPgorc3RydWN0IGlzX3NhbWUgOiBwdWJsaWMgZmFsc2VfdHlwZSB7fTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXNfc2FtZTxULCBUPiA6IHB1YmxpYyB0cnVlX3R5cGUg
e307CisKKwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgaXNfcG9pbnRlciA6IHB1Ymxp
YyBmYWxzZV90eXBlIHt9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0cnVjdCBpc19wb2lu
dGVyPFQqPiA6IHB1YmxpYyB0cnVlX3R5cGUge307CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBJdGVy
YXRvcj4KK3N0cnVjdCBJdGVyYXRvclRyYWl0cyB7CisgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0
b3I6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKK307CisKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitzdHJ1Y3QgSXRlcmF0b3JUcmFpdHM8VCo+IHsKKyAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Cit9
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBJdGVyYXRvclRyYWl0czxjb25zdCBU
Kj4geworICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKK307CisKICNpZiBHVEVTVF9PU19XSU5ET1dT
Ci0jZGVmaW5lIEdURVNUX1BBVEhfU0VQXyAiXFwiCi0jZGVmaW5lIEdURVNUX0hBU19BTFRfUEFU
SF9TRVBfIDEKKyMgZGVmaW5lIEdURVNUX1BBVEhfU0VQXyAiXFwiCisjIGRlZmluZSBHVEVTVF9I
QVNfQUxUX1BBVEhfU0VQXyAxCiAvLyBUaGUgYmlnZ2VzdCBzaWduZWQgaW50ZWdlciB0eXBlIHRo
ZSBjb21waWxlciBzdXBwb3J0cy4KIHR5cGVkZWYgX19pbnQ2NCBCaWdnZXN0SW50OwogI2Vsc2UK
LSNkZWZpbmUgR1RFU1RfUEFUSF9TRVBfICIvIgotI2RlZmluZSBHVEVTVF9IQVNfQUxUX1BBVEhf
U0VQXyAwCisjIGRlZmluZSBHVEVTVF9QQVRIX1NFUF8gIi8iCisjIGRlZmluZSBHVEVTVF9IQVNf
QUxUX1BBVEhfU0VQXyAwCiB0eXBlZGVmIGxvbmcgbG9uZyBCaWdnZXN0SW50OyAgLy8gTk9MSU5U
CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAorLy8gVXRpbGl0aWVzIGZvciBjaGFyLgor
CisvLyBpc3NwYWNlKGludCBjaCkgYW5kIGZyaWVuZHMgYWNjZXB0IGFuIHVuc2lnbmVkIGNoYXIg
b3IgRU9GLiAgY2hhcgorLy8gbWF5IGJlIHNpZ25lZCwgZGVwZW5kaW5nIG9uIHRoZSBjb21waWxl
ciAob3IgY29tcGlsZXIgZmxhZ3MpLgorLy8gVGhlcmVmb3JlIHdlIG5lZWQgdG8gY2FzdCBhIGNo
YXIgdG8gdW5zaWduZWQgY2hhciBiZWZvcmUgY2FsbGluZworLy8gaXNzcGFjZSgpLCBldGMuCisK
K2lubGluZSBib29sIElzQWxwaGEoY2hhciBjaCkgeworICByZXR1cm4gaXNhbHBoYShzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpICE9IDA7Cit9CitpbmxpbmUgYm9vbCBJc0FsTnVtKGNo
YXIgY2gpIHsKKyAgcmV0dXJuIGlzYWxudW0oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gp
KSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNEaWdpdChjaGFyIGNoKSB7CisgIHJldHVybiBpc2Rp
Z2l0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKK30KK2lubGluZSBib29s
IElzTG93ZXIoY2hhciBjaCkgeworICByZXR1cm4gaXNsb3dlcihzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPihjaCkpICE9IDA7Cit9CitpbmxpbmUgYm9vbCBJc1NwYWNlKGNoYXIgY2gpIHsKKyAg
cmV0dXJuIGlzc3BhY2Uoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOworfQor
aW5saW5lIGJvb2wgSXNVcHBlcihjaGFyIGNoKSB7CisgIHJldHVybiBpc3VwcGVyKHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKK30KK2lubGluZSBib29sIElzWERpZ2l0KGNo
YXIgY2gpIHsKKyAgcmV0dXJuIGlzeGRpZ2l0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNo
KSkgIT0gMDsKK30KK2lubGluZSBib29sIElzWERpZ2l0KHdjaGFyX3QgY2gpIHsKKyAgY29uc3Qg
dW5zaWduZWQgY2hhciBsb3dfYnl0ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKTsK
KyAgcmV0dXJuIGNoID09IGxvd19ieXRlICYmIGlzeGRpZ2l0KGxvd19ieXRlKSAhPSAwOworfQor
CitpbmxpbmUgY2hhciBUb0xvd2VyKGNoYXIgY2gpIHsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PGNo
YXI+KHRvbG93ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSk7Cit9CitpbmxpbmUg
Y2hhciBUb1VwcGVyKGNoYXIgY2gpIHsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXI+KHRvdXBw
ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSk7Cit9CisKK2lubGluZSBzdGQ6OnN0
cmluZyBTdHJpcFRyYWlsaW5nU3BhY2VzKHN0ZDo6c3RyaW5nIHN0cikgeworICBzdGQ6OnN0cmlu
Zzo6aXRlcmF0b3IgaXQgPSBzdHIuZW5kKCk7CisgIHdoaWxlIChpdCAhPSBzdHIuYmVnaW4oKSAm
JiBJc1NwYWNlKCotLWl0KSkKKyAgICBpdCA9IHN0ci5lcmFzZShpdCk7CisgIHJldHVybiBzdHI7
Cit9CisKIC8vIFRoZSB0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXggbmFtZXNwYWNlIGhvbGRzIHdy
YXBwZXJzIGZvciBjb21tb24KIC8vIFBPU0lYIGZ1bmN0aW9ucy4gIFRoZXNlIHdyYXBwZXJzIGhp
ZGUgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4KIC8vIFdpbmRvd3MvTVNWQyBhbmQgUE9TSVggc3lz
dGVtcy4gIFNpbmNlIHNvbWUgY29tcGlsZXJzIGRlZmluZSB0aGVzZQpAQCAtMTMxNCwzNiArMjQ0
OSwzNiBAQCBuYW1lc3BhY2UgcG9zaXggewogCiB0eXBlZGVmIHN0cnVjdCBfc3RhdCBTdGF0U3Ry
dWN0OwogCi0jaWZkZWYgX19CT1JMQU5EQ19fCisjIGlmZGVmIF9fQk9STEFORENfXwogaW5saW5l
IGludCBJc0FUVFkoaW50IGZkKSB7IHJldHVybiBpc2F0dHkoZmQpOyB9CiBpbmxpbmUgaW50IFN0
ckNhc2VDbXAoY29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyKSB7CiAgIHJldHVybiBzdHJp
Y21wKHMxLCBzMik7CiB9CiBpbmxpbmUgY2hhciogU3RyRHVwKGNvbnN0IGNoYXIqIHNyYykgeyBy
ZXR1cm4gc3RyZHVwKHNyYyk7IH0KLSNlbHNlICAvLyAhX19CT1JMQU5EQ19fCi0jaWYgR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKKyMgZWxzZSAgLy8gIV9fQk9STEFORENfXworIyAgaWYgR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKIGlubGluZSBpbnQgSXNBVFRZKGludCAvKiBmZCAqLykgeyByZXR1
cm4gMDsgfQotI2Vsc2UKKyMgIGVsc2UKIGlubGluZSBpbnQgSXNBVFRZKGludCBmZCkgeyByZXR1
cm4gX2lzYXR0eShmZCk7IH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMg
IGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogaW5saW5lIGludCBTdHJDYXNlQ21w
KGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMikgewogICByZXR1cm4gX3N0cmljbXAoczEs
IHMyKTsKIH0KIGlubGluZSBjaGFyKiBTdHJEdXAoY29uc3QgY2hhciogc3JjKSB7IHJldHVybiBf
c3RyZHVwKHNyYyk7IH0KLSNlbmRpZiAgLy8gX19CT1JMQU5EQ19fCisjIGVuZGlmICAvLyBfX0JP
UkxBTkRDX18KIAotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGlmIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCiBpbmxpbmUgaW50IEZpbGVObyhGSUxFKiBmaWxlKSB7IHJldHVybiByZWlu
dGVycHJldF9jYXN0PGludD4oX2ZpbGVubyhmaWxlKSk7IH0KIC8vIFN0YXQoKSwgUm1EaXIoKSwg
YW5kIElzRGlyKCkgYXJlIG5vdCBuZWVkZWQgb24gV2luZG93cyBDRSBhdCB0aGlzCiAvLyB0aW1l
IGFuZCB0aHVzIG5vdCBkZWZpbmVkIHRoZXJlLgotI2Vsc2UKKyMgZWxzZQogaW5saW5lIGludCBG
aWxlTm8oRklMRSogZmlsZSkgeyByZXR1cm4gX2ZpbGVubyhmaWxlKTsgfQogaW5saW5lIGludCBT
dGF0KGNvbnN0IGNoYXIqIHBhdGgsIFN0YXRTdHJ1Y3QqIGJ1ZikgeyByZXR1cm4gX3N0YXQocGF0
aCwgYnVmKTsgfQogaW5saW5lIGludCBSbURpcihjb25zdCBjaGFyKiBkaXIpIHsgcmV0dXJuIF9y
bWRpcihkaXIpOyB9CiBpbmxpbmUgYm9vbCBJc0Rpcihjb25zdCBTdGF0U3RydWN0JiBzdCkgewog
ICByZXR1cm4gKF9TX0lGRElSICYgc3Quc3RfbW9kZSkgIT0gMDsKIH0KLSNlbmRpZiAgLy8gR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxF
CiAKICNlbHNlCiAKQEAgLTEzNjMsMTEgKzI0OTgsNyBAQCBpbmxpbmUgYm9vbCBJc0Rpcihjb25z
dCBTdGF0U3RydWN0JiBzdCkgeyByZXR1cm4gU19JU0RJUihzdC5zdF9tb2RlKTsgfQogCiAvLyBG
dW5jdGlvbnMgZGVwcmVjYXRlZCBieSBNU1ZDIDguMC4KIAotI2lmZGVmIF9NU0NfVkVSCi0vLyBU
ZW1wb3JhcmlseSBkaXNhYmxlIHdhcm5pbmcgNDk5NiAoZGVwcmVjYXRlZCBmdW5jdGlvbikuCi0j
cHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5OTYpCi0jZW5k
aWYKK0dURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVTSF8oKQogCiBpbmxpbmUgY29uc3Qg
Y2hhciogU3RyTkNweShjaGFyKiBkZXN0LCBjb25zdCBjaGFyKiBzcmMsIHNpemVfdCBuKSB7CiAg
IHJldHVybiBzdHJuY3B5KGRlc3QsIHNyYywgbik7CkBAIC0xMzc3LDcgKzI1MDgsNyBAQCBpbmxp
bmUgY29uc3QgY2hhciogU3RyTkNweShjaGFyKiBkZXN0LCBjb25zdCBjaGFyKiBzcmMsIHNpemVf
dCBuKSB7CiAvLyBTdHJFcnJvcigpIGFyZW4ndCBuZWVkZWQgb24gV2luZG93cyBDRSBhdCB0aGlz
IHRpbWUgYW5kIHRodXMgbm90CiAvLyBkZWZpbmVkIHRoZXJlLgogCi0jaWYgIUdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCisjaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFICYmICFHVEVTVF9PU19X
SU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUCiBpbmxpbmUgaW50IENoRGlyKGNv
bnN0IGNoYXIqIGRpcikgeyByZXR1cm4gY2hkaXIoZGlyKTsgfQogI2VuZGlmCiBpbmxpbmUgRklM
RSogRk9wZW4oY29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciogbW9kZSkgewpAQCAtMTQwMSw4
ICsyNTMyLDkgQEAgaW5saW5lIGludCBDbG9zZShpbnQgZmQpIHsgcmV0dXJuIGNsb3NlKGZkKTsg
fQogaW5saW5lIGNvbnN0IGNoYXIqIFN0ckVycm9yKGludCBlcnJudW0pIHsgcmV0dXJuIHN0cmVy
cm9yKGVycm51bSk7IH0KICNlbmRpZgogaW5saW5lIGNvbnN0IGNoYXIqIEdldEVudihjb25zdCBj
aGFyKiBuYW1lKSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyNpZiBHVEVTVF9PU19X
SU5ET1dTX01PQklMRSB8fCBHVEVTVF9PU19XSU5ET1dTX1BIT05FIHx8IEdURVNUX09TX1dJTkRP
V1NfUlQKICAgLy8gV2UgYXJlIG9uIFdpbmRvd3MgQ0UsIHdoaWNoIGhhcyBubyBlbnZpcm9ubWVu
dCB2YXJpYWJsZXMuCisgIHN0YXRpY19jYXN0PHZvaWQ+KG5hbWUpOyAgLy8gVG8gcHJldmVudCAn
dW51c2VkIGFyZ3VtZW50JyB3YXJuaW5nLgogICByZXR1cm4gTlVMTDsKICNlbGlmIGRlZmluZWQo
X19CT1JMQU5EQ19fKSB8fCBkZWZpbmVkKF9fU3VuT1NfNV84KSB8fCBkZWZpbmVkKF9fU3VuT1Nf
NV85KQogICAvLyBFbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hpY2ggd2UgcHJvZ3JhbW1hdGljYWxs
eSBjbGVhciB3aWxsIGJlIHNldCB0byB0aGUKQEAgLTE0MTQsOSArMjU0Niw3IEBAIGlubGluZSBj
b25zdCBjaGFyKiBHZXRFbnYoY29uc3QgY2hhciogbmFtZSkgewogI2VuZGlmCiB9CiAKLSNpZmRl
ZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHBvcCkgIC8vIFJlc3RvcmVzIHRoZSB3YXJuaW5n
IHN0YXRlLgotI2VuZGlmCitHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BPUF8oKQogCiAj
aWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIC8vIFdpbmRvd3MgQ0UgaGFzIG5vIEMgbGlicmFy
eS4gVGhlIGFib3J0KCkgZnVuY3Rpb24gaXMgdXNlZCBpbgpAQCAtMTQyOSw2ICsyNTU5LDIzIEBA
IGlubGluZSB2b2lkIEFib3J0KCkgeyBhYm9ydCgpOyB9CiAKIH0gIC8vIG5hbWVzcGFjZSBwb3Np
eAogCisvLyBNU1ZDICJkZXByZWNhdGVzIiBzbnByaW50ZiBhbmQgaXNzdWVzIHdhcm5pbmdzIHdo
ZXJldmVyIGl0IGlzIHVzZWQuICBJbgorLy8gb3JkZXIgdG8gYXZvaWQgdGhlc2Ugd2FybmluZ3Ms
IHdlIG5lZWQgdG8gdXNlIF9zbnByaW50ZiBvciBfc25wcmludGZfcyBvbgorLy8gTVNWQy1iYXNl
ZCBwbGF0Zm9ybXMuICBXZSBtYXAgdGhlIEdURVNUX1NOUFJJTlRGXyBtYWNybyB0byB0aGUgYXBw
cm9wcmlhdGUKKy8vIGZ1bmN0aW9uIGluIG9yZGVyIHRvIGFjaGlldmUgdGhhdC4gIFdlIHVzZSBt
YWNybyBkZWZpbml0aW9uIGhlcmUgYmVjYXVzZQorLy8gc25wcmludGYgaXMgYSB2YXJpYWRpYyBm
dW5jdGlvbi4KKyNpZiBfTVNDX1ZFUiA+PSAxNDAwICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklM
RQorLy8gTVNWQyAyMDA1IGFuZCBhYm92ZSBzdXBwb3J0IHZhcmlhZGljIG1hY3Jvcy4KKyMgZGVm
aW5lIEdURVNUX1NOUFJJTlRGXyhidWZmZXIsIHNpemUsIGZvcm1hdCwgLi4uKSBcCisgICAgIF9z
bnByaW50Zl9zKGJ1ZmZlciwgc2l6ZSwgc2l6ZSwgZm9ybWF0LCBfX1ZBX0FSR1NfXykKKyNlbGlm
IGRlZmluZWQoX01TQ19WRVIpCisvLyBXaW5kb3dzIENFIGRvZXMgbm90IGRlZmluZSBfc25wcmlu
dGZfcyBhbmQgTVNWQyBwcmlvciB0byAyMDA1IGRvZXNuJ3QKKy8vIGNvbXBsYWluIGFib3V0IF9z
bnByaW50Zi4KKyMgZGVmaW5lIEdURVNUX1NOUFJJTlRGXyBfc25wcmludGYKKyNlbHNlCisjIGRl
ZmluZSBHVEVTVF9TTlBSSU5URl8gc25wcmludGYKKyNlbmRpZgorCiAvLyBUaGUgbWF4aW11bSBu
dW1iZXIgYSBCaWdnZXN0SW50IGNhbiByZXByZXNlbnQuICBUaGlzIGRlZmluaXRpb24KIC8vIHdv
cmtzIG5vIG1hdHRlciBCaWdnZXN0SW50IGlzIHJlcHJlc2VudGVkIGluIG9uZSdzIGNvbXBsZW1l
bnQgb3IKIC8vIHR3bydzIGNvbXBsZW1lbnQuCkBAIC0xNTAwLDI3ICsyNjQ3LDQ0IEBAIHR5cGVk
ZWYgVHlwZVdpdGhTaXplPDg+OjpJbnQgVGltZUluTWlsbGlzOyAgLy8gUmVwcmVzZW50cyB0aW1l
IGluIG1pbGxpc2Vjb25kcy4KIC8vIFV0aWxpdGllcyBmb3IgY29tbWFuZCBsaW5lIGZsYWdzIGFu
ZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCiAKIC8vIE1hY3JvIGZvciByZWZlcmVuY2luZyBmbGFn
cy4KLSNkZWZpbmUgR1RFU1RfRkxBRyhuYW1lKSBGTEFHU19ndGVzdF8jI25hbWUKKyNpZiAhZGVm
aW5lZChHVEVTVF9GTEFHKQorIyBkZWZpbmUgR1RFU1RfRkxBRyhuYW1lKSBGTEFHU19ndGVzdF8j
I25hbWUKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfRkxBRykKKworI2lmICFkZWZpbmVkKEdU
RVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18pCisjIGRlZmluZSBHVEVTVF9VU0VfT1dOX0ZMQUdG
SUxFX0ZMQUdfIDEKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfVVNFX09XTl9GTEFHRklMRV9G
TEFHXykKKworI2lmICFkZWZpbmVkKEdURVNUX0RFQ0xBUkVfYm9vbF8pCisjIGRlZmluZSBHVEVT
VF9GTEFHX1NBVkVSXyA6OnRlc3Rpbmc6OmludGVybmFsOjpHVGVzdEZsYWdTYXZlcgogCiAvLyBN
YWNyb3MgZm9yIGRlY2xhcmluZyBmbGFncy4KLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9ib29sXyhu
YW1lKSBHVEVTVF9BUElfIGV4dGVybiBib29sIEdURVNUX0ZMQUcobmFtZSkKLSNkZWZpbmUgR1RF
U1RfREVDTEFSRV9pbnQzMl8obmFtZSkgXAorIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9ib29sXyhu
YW1lKSBHVEVTVF9BUElfIGV4dGVybiBib29sIEdURVNUX0ZMQUcobmFtZSkKKyMgZGVmaW5lIEdU
RVNUX0RFQ0xBUkVfaW50MzJfKG5hbWUpIFwKICAgICBHVEVTVF9BUElfIGV4dGVybiA6OnRlc3Rp
bmc6OmludGVybmFsOjpJbnQzMiBHVEVTVF9GTEFHKG5hbWUpCi0jZGVmaW5lIEdURVNUX0RFQ0xB
UkVfc3RyaW5nXyhuYW1lKSBcCi0gICAgR1RFU1RfQVBJXyBleHRlcm4gOjp0ZXN0aW5nOjppbnRl
cm5hbDo6U3RyaW5nIEdURVNUX0ZMQUcobmFtZSkKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfc3Ry
aW5nXyhuYW1lKSBcCisgICAgR1RFU1RfQVBJXyBleHRlcm4gOjpzdGQ6OnN0cmluZyBHVEVTVF9G
TEFHKG5hbWUpCiAKIC8vIE1hY3JvcyBmb3IgZGVmaW5pbmcgZmxhZ3MuCi0jZGVmaW5lIEdURVNU
X0RFRklORV9ib29sXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCisjIGRlZmluZSBHVEVTVF9E
RUZJTkVfYm9vbF8obmFtZSwgZGVmYXVsdF92YWwsIGRvYykgXAogICAgIEdURVNUX0FQSV8gYm9v
bCBHVEVTVF9GTEFHKG5hbWUpID0gKGRlZmF1bHRfdmFsKQotI2RlZmluZSBHVEVTVF9ERUZJTkVf
aW50MzJfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpIFwKKyMgZGVmaW5lIEdURVNUX0RFRklORV9p
bnQzMl8obmFtZSwgZGVmYXVsdF92YWwsIGRvYykgXAogICAgIEdURVNUX0FQSV8gOjp0ZXN0aW5n
OjppbnRlcm5hbDo6SW50MzIgR1RFU1RfRkxBRyhuYW1lKSA9IChkZWZhdWx0X3ZhbCkKLSNkZWZp
bmUgR1RFU1RfREVGSU5FX3N0cmluZ18obmFtZSwgZGVmYXVsdF92YWwsIGRvYykgXAotICAgIEdU
RVNUX0FQSV8gOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nIEdURVNUX0ZMQUcobmFtZSkgPSAo
ZGVmYXVsdF92YWwpCisjIGRlZmluZSBHVEVTVF9ERUZJTkVfc3RyaW5nXyhuYW1lLCBkZWZhdWx0
X3ZhbCwgZG9jKSBcCisgICAgR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEdURVNUX0ZMQUcobmFt
ZSkgPSAoZGVmYXVsdF92YWwpCisKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfREVDTEFSRV9i
b29sXykKKworLy8gVGhyZWFkIGFubm90YXRpb25zCisjaWYgIWRlZmluZWQoR1RFU1RfRVhDTFVT
SVZFX0xPQ0tfUkVRVUlSRURfKQorIyBkZWZpbmUgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlS
RURfKGxvY2tzKQorIyBkZWZpbmUgR1RFU1RfTE9DS19FWENMVURFRF8obG9ja3MpCisjZW5kaWYg
IC8vICFkZWZpbmVkKEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXykKIAogLy8gUGFyc2Vz
ICdzdHInIGZvciBhIDMyLWJpdCBzaWduZWQgaW50ZWdlci4gIElmIHN1Y2Nlc3NmdWwsIHdyaXRl
cyB0aGUgcmVzdWx0CiAvLyB0byAqdmFsdWUgYW5kIHJldHVybnMgdHJ1ZTsgb3RoZXJ3aXNlIGxl
YXZlcyAqdmFsdWUgdW5jaGFuZ2VkIGFuZCByZXR1cm5zCiAvLyBmYWxzZS4KLS8vIFRPRE8oY2hh
bmRsZXJjKTogRmluZCBhIGJldHRlciB3YXkgdG8gcmVmYWN0b3IgZmxhZyBhbmQgZW52aXJvbm1l
bnQgcGFyc2luZworLy8gRklYTUU6IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIHJlZmFjdG9yIGZsYWcg
YW5kIGVudmlyb25tZW50IHBhcnNpbmcKIC8vIG91dCBvZiBib3RoIGd0ZXN0LXBvcnQuY2MgYW5k
IGd0ZXN0LmNjIHRvIGF2b2lkIGV4cG9ydGluZyB0aGlzIHV0aWxpdHkKIC8vIGZ1bmN0aW9uLgog
Ym9vbCBQYXJzZUludDMyKGNvbnN0IE1lc3NhZ2UmIHNyY190ZXh0LCBjb25zdCBjaGFyKiBzdHIs
IEludDMyKiB2YWx1ZSk7CkBAIC0xNTI5LDYgKzI2OTMsNyBAQCBib29sIFBhcnNlSW50MzIoY29u
c3QgTWVzc2FnZSYgc3JjX3RleHQsIGNvbnN0IGNoYXIqIHN0ciwgSW50MzIqIHZhbHVlKTsKIC8v
IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIEdvb2dsZSBUZXN0IGZsYWcuCiBib29sIEJvb2xG
cm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywgYm9vbCBkZWZhdWx0X3ZhbCk7CiBHVEVTVF9B
UElfIEludDMyIEludDMyRnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIEludDMyIGRlZmF1
bHRfdmFsKTsKK3N0ZDo6c3RyaW5nIE91dHB1dEZsYWdBbHNvQ2hlY2tFbnZWYXIoKTsKIGNvbnN0
IGNoYXIqIFN0cmluZ0Zyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBjb25zdCBjaGFyKiBk
ZWZhdWx0X3ZhbCk7CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
c3RyaW5nLmgKaW5kZXggYWZmMDkzZGVjOGRiMzk5MDc0ZWEzYjcxYmI3MjI3ZGE3ZTk2NzMwYS4u
NGM5YjYyNjJjM2MxMDM3MjZhYTNjYWI0YzE5OTk1YmFlZjk1OGI5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXN0cmluZy5oCkBAIC0yNyw3MCArMjcsMzggQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIC8vCi0vLyBBdXRob3JzOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKSwg
ZWVmYWNtQGdtYWlsLmNvbSAoU2VhbiBNY2FmZWUpCi0vLwotLy8gVGhlIEdvb2dsZSBDKysgVGVz
dGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBh
bmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogLy8KIC8vIFRoaXMgaGVhZGVyIGZp
bGUgZGVjbGFyZXMgdGhlIFN0cmluZyBjbGFzcyBhbmQgZnVuY3Rpb25zIHVzZWQgaW50ZXJuYWxs
eSBieQogLy8gR29vZ2xlIFRlc3QuICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0
IG5vdGljZS4gVGhleSBzaG91bGQgbm90IHVzZWQKIC8vIGJ5IGNvZGUgZXh0ZXJuYWwgdG8gR29v
Z2xlIFRlc3QuCiAvLwotLy8gVGhpcyBoZWFkZXIgZmlsZSBpcyAjaW5jbHVkZWQgYnkgPGd0ZXN0
L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg+LgorLy8gVGhpcyBoZWFkZXIgZmlsZSBpcyAjaW5j
bHVkZWQgYnkgZ3Rlc3QtaW50ZXJuYWwuaC4KIC8vIEl0IHNob3VsZCBub3QgYmUgI2luY2x1ZGVk
IGJ5IG90aGVyIGZpbGVzLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisK
ICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9TVFJJTkdfSF8KICNk
ZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9TVFJJTkdfSF8KIAogI2lm
ZGVmIF9fQk9STEFORENfXwogLy8gc3RyaW5nLmggaXMgbm90IGd1YXJhbnRlZWQgdG8gcHJvdmlk
ZSBzdHJjcHkgb24gQysrIEJ1aWxkZXIuCi0jaW5jbHVkZSA8bWVtLmg+CisjIGluY2x1ZGUgPG1l
bS5oPgogI2VuZGlmCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRl
cm5hbC9ndGVzdC1wb3J0Lmg+Ci0KICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlICJndGVz
dC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCisKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFj
ZSBpbnRlcm5hbCB7CiAKLS8vIFN0cmluZyAtIGEgVVRGLTggc3RyaW5nIGNsYXNzLgotLy8KLS8v
IEZvciBoaXN0b3JpYyByZWFzb25zLCB3ZSBkb24ndCB1c2Ugc3RkOjpzdHJpbmcuCi0vLwotLy8g
VE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHJlcGxhY2UgdGhpcyBjbGFzcyB3aXRoIHN0ZDo6c3RyaW5n
IG9yCi0vLyBpbXBsZW1lbnQgaXQgaW4gdGVybXMgb2YgdGhlIGxhdHRlci4KLS8vCi0vLyBOb3Rl
IHRoYXQgU3RyaW5nIGNhbiByZXByZXNlbnQgYm90aCBOVUxMIGFuZCB0aGUgZW1wdHkgc3RyaW5n
LAotLy8gd2hpbGUgc3RkOjpzdHJpbmcgY2Fubm90IHJlcHJlc2VudCBOVUxMLgotLy8KLS8vIE5V
TEwgYW5kIHRoZSBlbXB0eSBzdHJpbmcgYXJlIGNvbnNpZGVyZWQgZGlmZmVyZW50LiAgTlVMTCBp
cyBsZXNzCi0vLyB0aGFuIGFueXRoaW5nIChpbmNsdWRpbmcgdGhlIGVtcHR5IHN0cmluZykgZXhj
ZXB0IGl0c2VsZi4KLS8vCi0vLyBUaGlzIGNsYXNzIG9ubHkgcHJvdmlkZXMgbWluaW11bSBmdW5j
dGlvbmFsaXR5IG5lY2Vzc2FyeSBmb3IKLS8vIGltcGxlbWVudGluZyBHb29nbGUgVGVzdC4gIFdl
IGRvIG5vdCBpbnRlbmQgdG8gaW1wbGVtZW50IGEgZnVsbC1mbGVkZ2VkCi0vLyBzdHJpbmcgY2xh
c3MgaGVyZS4KLS8vCi0vLyBTaW5jZSB0aGUgcHVycG9zZSBvZiB0aGlzIGNsYXNzIGlzIHRvIHBy
b3ZpZGUgYSBzdWJzdGl0dXRlIGZvcgotLy8gc3RkOjpzdHJpbmcgb24gcGxhdGZvcm1zIHdoZXJl
IGl0IGNhbm5vdCBiZSB1c2VkLCB3ZSBkZWZpbmUgYSBjb3B5Ci0vLyBjb25zdHJ1Y3RvciBhbmQg
YXNzaWdubWVudCBvcGVyYXRvcnMgc3VjaCB0aGF0IHdlIGRvbid0IG5lZWQKLS8vIGNvbmRpdGlv
bmFsIGNvbXBpbGF0aW9uIGluIGEgbG90IG9mIHBsYWNlcy4KLS8vCi0vLyBJbiBvcmRlciB0byBt
YWtlIHRoZSByZXByZXNlbnRhdGlvbiBlZmZpY2llbnQsIHRoZSBkJ3RvciBvZiBTdHJpbmcKLS8v
IGlzIG5vdCB2aXJ0dWFsLiAgVGhlcmVmb3JlIERPIE5PVCBJTkhFUklUIEZST00gU3RyaW5nLgor
Ly8gU3RyaW5nIC0gYW4gYWJzdHJhY3QgY2xhc3MgaG9sZGluZyBzdGF0aWMgc3RyaW5nIHV0aWxp
dGllcy4KIGNsYXNzIEdURVNUX0FQSV8gU3RyaW5nIHsKICBwdWJsaWM6CiAgIC8vIFN0YXRpYyB1
dGlsaXR5IG1ldGhvZHMKIAotICAvLyBSZXR1cm5zIHRoZSBpbnB1dCBlbmNsb3NlZCBpbiBkb3Vi
bGUgcXVvdGVzIGlmIGl0J3Mgbm90IE5VTEw7Ci0gIC8vIG90aGVyd2lzZSByZXR1cm5zICIobnVs
bCkiLiAgRm9yIGV4YW1wbGUsICJcIkhlbGxvXCIiIGlzIHJldHVybmVkCi0gIC8vIGZvciBpbnB1
dCAiSGVsbG8iLgotICAvLwotICAvLyBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJpbnRpbmcgYSBDIHN0
cmluZyBpbiB0aGUgc3ludGF4IG9mIGEgbGl0ZXJhbC4KLSAgLy8KLSAgLy8gS25vd24gaXNzdWU6
IGVzY2FwZSBzZXF1ZW5jZXMgYXJlIG5vdCBoYW5kbGVkIHlldC4KLSAgc3RhdGljIFN0cmluZyBT
aG93Q1N0cmluZ1F1b3RlZChjb25zdCBjaGFyKiBjX3N0cik7Ci0KICAgLy8gQ2xvbmVzIGEgMC10
ZXJtaW5hdGVkIEMgc3RyaW5nLCBhbGxvY2F0aW5nIG1lbW9yeSB1c2luZyBuZXcuICBUaGUKICAg
Ly8gY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUgcmV0dXJuIHZhbHVlIHVz
aW5nCiAgIC8vIGRlbGV0ZVtdLiAgUmV0dXJucyB0aGUgY2xvbmVkIHN0cmluZywgb3IgTlVMTCBp
ZiB0aGUgaW5wdXQgaXMKQEAgLTEzNywxMSArMTA1LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBTdHJp
bmcgewogICAvLyBOVUxMIHdpbGwgYmUgY29udmVydGVkIHRvICIobnVsbCkiLiAgSWYgYW4gZXJy
b3Igb2NjdXJyZWQgZHVyaW5nCiAgIC8vIHRoZSBjb252ZXJzaW9uLCAiKGZhaWxlZCB0byBjb252
ZXJ0IGZyb20gd2lkZSBzdHJpbmcpIiBpcwogICAvLyByZXR1cm5lZC4KLSAgc3RhdGljIFN0cmlu
ZyBTaG93V2lkZUNTdHJpbmcoY29uc3Qgd2NoYXJfdCogd2lkZV9jX3N0cik7Ci0KLSAgLy8gU2lt
aWxhciB0byBTaG93V2lkZUNTdHJpbmcoKSwgZXhjZXB0IHRoYXQgdGhpcyBmdW5jdGlvbiBlbmNs
b3NlcwotICAvLyB0aGUgY29udmVydGVkIHN0cmluZyBpbiBkb3VibGUgcXVvdGVzLgotICBzdGF0
aWMgU3RyaW5nIFNob3dXaWRlQ1N0cmluZ1F1b3RlZChjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3Ry
KTsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIFNob3dXaWRlQ1N0cmluZyhjb25zdCB3Y2hhcl90KiB3
aWRlX2Nfc3RyKTsKIAogICAvLyBDb21wYXJlcyB0d28gd2lkZSBDIHN0cmluZ3MuICBSZXR1cm5z
IHRydWUgaWZmIHRoZXkgaGF2ZSB0aGUgc2FtZQogICAvLyBjb250ZW50LgpAQCAtMTc1LDE3NCAr
MTM5LDI3IEBAIGNsYXNzIEdURVNUX0FQSV8gU3RyaW5nIHsKICAgc3RhdGljIGJvb2wgQ2FzZUlu
c2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMoY29uc3Qgd2NoYXJfdCogbGhzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiByaHMp
OwogCi0gIC8vIEZvcm1hdHMgYSBsaXN0IG9mIGFyZ3VtZW50cyB0byBhIFN0cmluZywgdXNpbmcg
dGhlIHNhbWUgZm9ybWF0Ci0gIC8vIHNwZWMgc3RyaW5nIGFzIGZvciBwcmludGYuCi0gIC8vCi0g
IC8vIFdlIGRvIG5vdCB1c2UgdGhlIFN0cmluZ1ByaW50ZiBjbGFzcyBhcyBpdCBpcyBub3QgdW5p
dmVyc2FsbHkKLSAgLy8gYXZhaWxhYmxlLgotICAvLwotICAvLyBUaGUgcmVzdWx0IGlzIGxpbWl0
ZWQgdG8gNDA5NiBjaGFyYWN0ZXJzIChpbmNsdWRpbmcgdGhlIHRhaWxpbmcKLSAgLy8gMCkuICBJ
ZiA0MDk2IGNoYXJhY3RlcnMgYXJlIG5vdCBlbm91Z2ggdG8gZm9ybWF0IHRoZSBpbnB1dCwKLSAg
Ly8gIjxidWZmZXIgZXhjZWVkZWQ+IiBpcyByZXR1cm5lZC4KLSAgc3RhdGljIFN0cmluZyBGb3Jt
YXQoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pOwotCi0gIC8vIEMndG9ycwotCi0gIC8vIFRoZSBk
ZWZhdWx0IGMndG9yIGNvbnN0cnVjdHMgYSBOVUxMIHN0cmluZy4KLSAgU3RyaW5nKCkgOiBjX3N0
cl8oTlVMTCksIGxlbmd0aF8oMCkge30KLQotICAvLyBDb25zdHJ1Y3RzIGEgU3RyaW5nIGJ5IGNs
b25pbmcgYSAwLXRlcm1pbmF0ZWQgQyBzdHJpbmcuCi0gIFN0cmluZyhjb25zdCBjaGFyKiBhX2Nf
c3RyKSB7ICAvLyBOT0xJTlQKLSAgICBpZiAoYV9jX3N0ciA9PSBOVUxMKSB7Ci0gICAgICBjX3N0
cl8gPSBOVUxMOwotICAgICAgbGVuZ3RoXyA9IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgIENvbnN0
cnVjdE5vbk51bGwoYV9jX3N0ciwgc3RybGVuKGFfY19zdHIpKTsKLSAgICB9Ci0gIH0KKyAgLy8g
UmV0dXJucyB0cnVlIGlmZiB0aGUgZ2l2ZW4gc3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3Vm
Zml4LCBpZ25vcmluZworICAvLyBjYXNlLiBBbnkgc3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5k
IHdpdGggYW4gZW1wdHkgc3VmZml4LgorICBzdGF0aWMgYm9vbCBFbmRzV2l0aENhc2VJbnNlbnNp
dGl2ZSgKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIsIGNvbnN0IHN0ZDo6c3RyaW5nJiBz
dWZmaXgpOwogCi0gIC8vIENvbnN0cnVjdHMgYSBTdHJpbmcgYnkgY29weWluZyBhIGdpdmVuIG51
bWJlciBvZiBjaGFycyBmcm9tIGEKLSAgLy8gYnVmZmVyLiAgRS5nLiBTdHJpbmcoImhlbGxvIiwg
MykgY3JlYXRlcyB0aGUgc3RyaW5nICJoZWwiLAotICAvLyBTdHJpbmcoImFcMGJjZCIsIDQpIGNy
ZWF0ZXMgImFcMGJjIiwgU3RyaW5nKE5VTEwsIDApIGNyZWF0ZXMgIiIsCi0gIC8vIGFuZCBTdHJp
bmcoTlVMTCwgMSkgcmVzdWx0cyBpbiBhY2Nlc3MgdmlvbGF0aW9uLgotICBTdHJpbmcoY29uc3Qg
Y2hhciogYnVmZmVyLCBzaXplX3QgYV9sZW5ndGgpIHsKLSAgICBDb25zdHJ1Y3ROb25OdWxsKGJ1
ZmZlciwgYV9sZW5ndGgpOwotICB9CisgIC8vIEZvcm1hdHMgYW4gaW50IHZhbHVlIGFzICIlMDJk
Ii4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdEludFdpZHRoMihpbnQgdmFsdWUpOyAgLy8g
IiUwMmQiIGZvciB3aWR0aCA9PSAyCiAKLSAgLy8gVGhlIGNvcHkgYyd0b3IgY3JlYXRlcyBhIG5l
dyBjb3B5IG9mIHRoZSBzdHJpbmcuICBUaGUgdHdvCi0gIC8vIFN0cmluZyBvYmplY3RzIGRvIG5v
dCBzaGFyZSBjb250ZW50LgotICBTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHIpIDogY19zdHJfKE5V
TEwpLCBsZW5ndGhfKDApIHsgKnRoaXMgPSBzdHI7IH0KKyAgLy8gRm9ybWF0cyBhbiBpbnQgdmFs
dWUgYXMgIiVYIi4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdEhleEludChpbnQgdmFsdWUp
OwogCi0gIC8vIEQndG9yLiAgU3RyaW5nIGlzIGludGVuZGVkIHRvIGJlIGEgZmluYWwgY2xhc3Ms
IHNvIHRoZSBkJ3RvcgotICAvLyBkb2Vzbid0IG5lZWQgdG8gYmUgdmlydHVhbC4KLSAgflN0cmlu
ZygpIHsgZGVsZXRlW10gY19zdHJfOyB9Ci0KLSAgLy8gQWxsb3dzIGEgU3RyaW5nIHRvIGJlIGlt
cGxpY2l0bHkgY29udmVydGVkIHRvIGFuIDo6c3RkOjpzdHJpbmcgb3IKLSAgLy8gOjpzdHJpbmcs
IGFuZCB2aWNlIHZlcnNhLiAgQ29udmVydGluZyBhIFN0cmluZyBjb250YWluaW5nIGEgTlVMTAot
ICAvLyBwb2ludGVyIHRvIDo6c3RkOjpzdHJpbmcgb3IgOjpzdHJpbmcgaXMgdW5kZWZpbmVkIGJl
aGF2aW9yLgotICAvLyBDb252ZXJ0aW5nIGEgOjpzdGQ6OnN0cmluZyBvciA6OnN0cmluZyBjb250
YWluaW5nIGFuIGVtYmVkZGVkIE5VTAotICAvLyBjaGFyYWN0ZXIgdG8gYSBTdHJpbmcgd2lsbCBy
ZXN1bHQgaW4gdGhlIHByZWZpeCB1cCB0byB0aGUgZmlyc3QKLSAgLy8gTlVMIGNoYXJhY3Rlci4K
LSAgU3RyaW5nKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0cikgewotICAgIENvbnN0cnVjdE5vbk51
bGwoc3RyLmNfc3RyKCksIHN0ci5sZW5ndGgoKSk7Ci0gIH0KLQotICBvcGVyYXRvciA6OnN0ZDo6
c3RyaW5nKCkgY29uc3QgeyByZXR1cm4gOjpzdGQ6OnN0cmluZyhjX3N0cigpLCBsZW5ndGgoKSk7
IH0KLQotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0gIFN0cmluZyhjb25zdCA6OnN0cmlu
ZyYgc3RyKSB7Ci0gICAgQ29uc3RydWN0Tm9uTnVsbChzdHIuY19zdHIoKSwgc3RyLmxlbmd0aCgp
KTsKLSAgfQotCi0gIG9wZXJhdG9yIDo6c3RyaW5nKCkgY29uc3QgeyByZXR1cm4gOjpzdHJpbmco
Y19zdHIoKSwgbGVuZ3RoKCkpOyB9Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5H
Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIGlzIGFuIGVtcHR5IHN0cmluZyAoaS5lLiAi
IikuCi0gIGJvb2wgZW1wdHkoKSBjb25zdCB7IHJldHVybiAoY19zdHIoKSAhPSBOVUxMKSAmJiAo
bGVuZ3RoKCkgPT0gMCk7IH0KLQotICAvLyBDb21wYXJlcyB0aGlzIHdpdGggYW5vdGhlciBTdHJp
bmcuCi0gIC8vIFJldHVybnMgPCAwIGlmIHRoaXMgaXMgbGVzcyB0aGFuIHJocywgMCBpZiB0aGlz
IGlzIGVxdWFsIHRvIHJocywgb3IgPiAwCi0gIC8vIGlmIHRoaXMgaXMgZ3JlYXRlciB0aGFuIHJo
cy4KLSAgaW50IENvbXBhcmUoY29uc3QgU3RyaW5nJiByaHMpIGNvbnN0OwotCi0gIC8vIFJldHVy
bnMgdHJ1ZSBpZmYgdGhpcyBTdHJpbmcgZXF1YWxzIHRoZSBnaXZlbiBDIHN0cmluZy4gIEEgTlVM
TAotICAvLyBzdHJpbmcgYW5kIGEgbm9uLU5VTEwgc3RyaW5nIGFyZSBjb25zaWRlcmVkIG5vdCBl
cXVhbC4KLSAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNoYXIqIGFfY19zdHIpIGNvbnN0IHsgcmV0
dXJuIENvbXBhcmUoYV9jX3N0cikgPT0gMDsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhp
cyBTdHJpbmcgaXMgbGVzcyB0aGFuIHRoZSBnaXZlbiBTdHJpbmcuICBBCi0gIC8vIE5VTEwgc3Ry
aW5nIGlzIGNvbnNpZGVyZWQgbGVzcyB0aGFuICIiLgotICBib29sIG9wZXJhdG9yPChjb25zdCBT
dHJpbmcmIHJocykgY29uc3QgeyByZXR1cm4gQ29tcGFyZShyaHMpIDwgMDsgfQotCi0gIC8vIFJl
dHVybnMgdHJ1ZSBpZmYgdGhpcyBTdHJpbmcgZG9lc24ndCBlcXVhbCB0aGUgZ2l2ZW4gQyBzdHJp
bmcuICBBIE5VTEwKLSAgLy8gc3RyaW5nIGFuZCBhIG5vbi1OVUxMIHN0cmluZyBhcmUgY29uc2lk
ZXJlZCBub3QgZXF1YWwuCi0gIGJvb2wgb3BlcmF0b3IhPShjb25zdCBjaGFyKiBhX2Nfc3RyKSBj
b25zdCB7IHJldHVybiAhKCp0aGlzID09IGFfY19zdHIpOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVl
IGlmZiB0aGlzIFN0cmluZyBlbmRzIHdpdGggdGhlIGdpdmVuIHN1ZmZpeC4gICpBbnkqCi0gIC8v
IFN0cmluZyBpcyBjb25zaWRlcmVkIHRvIGVuZCB3aXRoIGEgTlVMTCBvciBlbXB0eSBzdWZmaXgu
Ci0gIGJvb2wgRW5kc1dpdGgoY29uc3QgY2hhciogc3VmZml4KSBjb25zdDsKLQotICAvLyBSZXR1
cm5zIHRydWUgaWZmIHRoaXMgU3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LCBub3Qg
Y29uc2lkZXJpbmcKLSAgLy8gY2FzZS4gQW55IFN0cmluZyBpcyBjb25zaWRlcmVkIHRvIGVuZCB3
aXRoIGEgTlVMTCBvciBlbXB0eSBzdWZmaXguCi0gIGJvb2wgRW5kc1dpdGhDYXNlSW5zZW5zaXRp
dmUoY29uc3QgY2hhciogc3VmZml4KSBjb25zdDsKLQotICAvLyBSZXR1cm5zIHRoZSBsZW5ndGgg
b2YgdGhlIGVuY2Fwc3VsYXRlZCBzdHJpbmcsIG9yIDAgaWYgdGhlCi0gIC8vIHN0cmluZyBpcyBO
VUxMLgotICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbGVuZ3RoXzsgfQotCi0gIC8v
IEdldHMgdGhlIDAtdGVybWluYXRlZCBDIHN0cmluZyB0aGlzIFN0cmluZyBvYmplY3QgcmVwcmVz
ZW50cy4KLSAgLy8gVGhlIFN0cmluZyBvYmplY3Qgc3RpbGwgb3ducyB0aGUgc3RyaW5nLiAgVGhl
cmVmb3JlIHRoZSBjYWxsZXIKLSAgLy8gc2hvdWxkIE5PVCBkZWxldGUgdGhlIHJldHVybiB2YWx1
ZS4KLSAgY29uc3QgY2hhciogY19zdHIoKSBjb25zdCB7IHJldHVybiBjX3N0cl87IH0KLQotICAv
LyBBc3NpZ25zIGEgQyBzdHJpbmcgdG8gdGhpcyBvYmplY3QuICBTZWxmLWFzc2lnbm1lbnQgd29y
a3MuCi0gIGNvbnN0IFN0cmluZyYgb3BlcmF0b3I9KGNvbnN0IGNoYXIqIGFfY19zdHIpIHsKLSAg
ICByZXR1cm4gKnRoaXMgPSBTdHJpbmcoYV9jX3N0cik7Ci0gIH0KLQotICAvLyBBc3NpZ25zIGEg
U3RyaW5nIG9iamVjdCB0byB0aGlzIG9iamVjdC4gIFNlbGYtYXNzaWdubWVudCB3b3Jrcy4KLSAg
Y29uc3QgU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgU3RyaW5nJiByaHMpIHsKLSAgICBpZiAodGhp
cyAhPSAmcmhzKSB7Ci0gICAgICBkZWxldGVbXSBjX3N0cl87Ci0gICAgICBpZiAocmhzLmNfc3Ry
KCkgPT0gTlVMTCkgewotICAgICAgICBjX3N0cl8gPSBOVUxMOwotICAgICAgICBsZW5ndGhfID0g
MDsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIENvbnN0cnVjdE5vbk51bGwocmhzLmNfc3RyKCks
IHJocy5sZW5ndGgoKSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuICp0aGlzOwotICB9
CisgIC8vIEZvcm1hdHMgYSBieXRlIGFzICIlMDJYIi4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZv
cm1hdEJ5dGUodW5zaWduZWQgY2hhciB2YWx1ZSk7CiAKICBwcml2YXRlOgotICAvLyBDb25zdHJ1
Y3RzIGEgbm9uLU5VTEwgU3RyaW5nIGZyb20gdGhlIGdpdmVuIGNvbnRlbnQuICBUaGlzCi0gIC8v
IGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIGRhdGFfIGhhcyBub3QgYmVlbiBhbGxv
Y2F0ZWQuCi0gIC8vIENvbnN0cnVjdE5vbk51bGwoTlVMTCwgMCkgcmVzdWx0cyBpbiBhbiBlbXB0
eSBzdHJpbmcgKCIiKS4KLSAgLy8gQ29uc3RydWN0Tm9uTnVsbChOVUxMLCBub25femVybykgaXMg
dW5kZWZpbmVkIGJlaGF2aW9yLgotICB2b2lkIENvbnN0cnVjdE5vbk51bGwoY29uc3QgY2hhciog
YnVmZmVyLCBzaXplX3QgYV9sZW5ndGgpIHsKLSAgICBjaGFyKiBjb25zdCBzdHIgPSBuZXcgY2hh
clthX2xlbmd0aCArIDFdOwotICAgIG1lbWNweShzdHIsIGJ1ZmZlciwgYV9sZW5ndGgpOwotICAg
IHN0clthX2xlbmd0aF0gPSAnXDAnOwotICAgIGNfc3RyXyA9IHN0cjsKLSAgICBsZW5ndGhfID0g
YV9sZW5ndGg7Ci0gIH0KLQotICBjb25zdCBjaGFyKiBjX3N0cl87Ci0gIHNpemVfdCBsZW5ndGhf
OworICBTdHJpbmcoKTsgIC8vIE5vdCBtZWFudCB0byBiZSBpbnN0YW50aWF0ZWQuCiB9OyAgLy8g
Y2xhc3MgU3RyaW5nCiAKLS8vIFN0cmVhbXMgYSBTdHJpbmcgdG8gYW4gb3N0cmVhbS4gIEVhY2gg
J1wwJyBjaGFyYWN0ZXIgaW4gdGhlIFN0cmluZwotLy8gaXMgcmVwbGFjZWQgd2l0aCAiXFwwIi4K
LWlubGluZSA6OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNv
bnN0IFN0cmluZyYgc3RyKSB7Ci0gIGlmIChzdHIuY19zdHIoKSA9PSBOVUxMKSB7Ci0gICAgb3Mg
PDwgIihudWxsKSI7Ci0gIH0gZWxzZSB7Ci0gICAgY29uc3QgY2hhciogY29uc3QgY19zdHIgPSBz
dHIuY19zdHIoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBzdHIubGVuZ3RoKCk7IGkr
KykgewotICAgICAgaWYgKGNfc3RyW2ldID09ICdcMCcpIHsKLSAgICAgICAgb3MgPDwgIlxcMCI7
Ci0gICAgICB9IGVsc2UgewotICAgICAgICBvcyA8PCBjX3N0cltpXTsKLSAgICAgIH0KLSAgICB9
Ci0gIH0KLSAgcmV0dXJuIG9zOwotfQotCi0vLyBHZXRzIHRoZSBjb250ZW50IG9mIHRoZSBTdHJT
dHJlYW0ncyBidWZmZXIgYXMgYSBTdHJpbmcuICBFYWNoICdcMCcKKy8vIEdldHMgdGhlIGNvbnRl
bnQgb2YgdGhlIHN0cmluZ3N0cmVhbSdzIGJ1ZmZlciBhcyBhbiBzdGQ6OnN0cmluZy4gIEVhY2gg
J1wwJwogLy8gY2hhcmFjdGVyIGluIHRoZSBidWZmZXIgaXMgcmVwbGFjZWQgd2l0aCAiXFwwIi4K
LUdURVNUX0FQSV8gU3RyaW5nIFN0clN0cmVhbVRvU3RyaW5nKFN0clN0cmVhbSogc3RyZWFtKTsK
LQotLy8gQ29udmVydHMgYSBzdHJlYW1hYmxlIHZhbHVlIHRvIGEgU3RyaW5nLiAgQSBOVUxMIHBv
aW50ZXIgaXMKLS8vIGNvbnZlcnRlZCB0byAiKG51bGwpIi4gIFdoZW4gdGhlIGlucHV0IHZhbHVl
IGlzIGEgOjpzdHJpbmcsCi0vLyA6OnN0ZDo6c3RyaW5nLCA6OndzdHJpbmcsIG9yIDo6c3RkOjp3
c3RyaW5nIG9iamVjdCwgZWFjaCBOVUwKLS8vIGNoYXJhY3RlciBpbiBpdCBpcyByZXBsYWNlZCB3
aXRoICJcXDAiLgotCi0vLyBEZWNsYXJlZCBoZXJlIGJ1dCBkZWZpbmVkIGluIGd0ZXN0LmgsIHNv
IHRoYXQgaXQgaGFzIGFjY2VzcwotLy8gdG8gdGhlIGRlZmluaXRpb24gb2YgdGhlIE1lc3NhZ2Ug
Y2xhc3MsIHJlcXVpcmVkIGJ5IHRoZSBBUk0KLS8vIGNvbXBpbGVyLgotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1TdHJpbmcgU3RyZWFtYWJsZVRvU3RyaW5nKGNvbnN0IFQmIHN0cmVhbWFibGUpOwor
R1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBTdHJpbmdTdHJlYW1Ub1N0cmluZyg6OnN0ZDo6c3RyaW5n
c3RyZWFtKiBzdHJlYW0pOwogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVz
cGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9p
bmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgKaW5kZXggYzI3ZjNhNDIxZDljNDk3
MWVkZTQ5Y2MzMzI5MTJkNGE4MzYwYzVhNS4uNzhhM2E2YTAxZmFjNzU1MTdlYWI4MzEzMTI0Mjdl
MTVkNWU0ZWJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaApAQCAtMSw0ICsxLDYgQEAKLS8v
IFRoaXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5IGEgc2NyaXB0LiAgRE8gTk9UIEVESVQgQlkgSEFO
RCEhIQorLy8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgY29tbWFuZDoKKy8vICAgICBwdW1w
LnB5IGd0ZXN0LXR1cGxlLmgucHVtcAorLy8gRE8gTk9UIEVESVQgQlkgSEFORCEhIQogCiAvLyBD
b3B5cmlnaHQgMjAwOSBHb29nbGUgSW5jLgogLy8gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KQEAgLTI4
LDExICszMCwxMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAv
LyBJbXBsZW1lbnRzIGEgc3Vic2V0IG9mIFRSMSB0dXBsZSBuZWVkZWQgYnkgR29vZ2xlIFRlc3Qg
YW5kIEdvb2dsZSBNb2NrLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisK
ICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UVVBMRV9IXwogI2Rl
ZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RVUExFX0hfCiAKQEAgLTQw
LDE3ICs0MywyNSBAQAogCiAvLyBUaGUgY29tcGlsZXIgdXNlZCBpbiBTeW1iaWFuIGhhcyBhIGJ1
ZyB0aGF0IHByZXZlbnRzIHVzIGZyb20gZGVjbGFyaW5nIHRoZQogLy8gdHVwbGUgdGVtcGxhdGUg
YXMgYSBmcmllbmQgKGl0IGNvbXBsYWlucyB0aGF0IHR1cGxlIGlzIHJlZGVmaW5lZCkuICBUaGlz
Ci0vLyBoYWNrIGJ5cGFzc2VzIHRoZSBidWcgYnkgZGVjbGFyaW5nIHRoZSBtZW1iZXJzIHRoYXQg
c2hvdWxkIG90aGVyd2lzZSBiZQorLy8gYnlwYXNzZXMgdGhlIGJ1ZyBieSBkZWNsYXJpbmcgdGhl
IG1lbWJlcnMgdGhhdCBzaG91bGQgb3RoZXJ3aXNlIGJlCiAvLyBwcml2YXRlIGFzIHB1YmxpYy4K
IC8vIFN1biBTdHVkaW8gdmVyc2lvbnMgPCAxMiBhbHNvIGhhdmUgdGhlIGFib3ZlIGJ1Zy4KICNp
ZiBkZWZpbmVkKF9fU1lNQklBTjMyX18pIHx8IChkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiBfX1NV
TlBST19DQyA8IDB4NTkwKQotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8g
cHVibGljOgorIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIHB1YmxpYzoK
ICNlbHNlCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBcCisjIGRlZmlu
ZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8gXAogICAgIHRlbXBsYXRlIDxHVEVTVF8x
MF9UWVBFTkFNRVNfKFUpPiBmcmllbmQgY2xhc3MgdHVwbGU7IFwKICAgIHByaXZhdGU6CiAjZW5k
aWYKIAorLy8gVmlzdWFsIFN0dWRpbyAyMDEwLCAyMDEyLCBhbmQgMjAxMyBkZWZpbmUgc3ltYm9s
cyBpbiBzdGQ6OnRyMSB0aGF0IGNvbmZsaWN0CisvLyB3aXRoIG91ciBvd24gZGVmaW5pdGlvbnMu
IFRoZXJlZm9yZSB1c2luZyBvdXIgb3duIHR1cGxlIGRvZXMgbm90IHdvcmsgb24KKy8vIHRob3Nl
IGNvbXBpbGVycy4KKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxNjAwICAv
KiAxNjAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxMCAqLworIyBlcnJvciAiZ3Rlc3QncyB0dXBsZSBk
b2Vzbid0IGNvbXBpbGUgb24gVmlzdWFsIFN0dWRpbyAyMDEwIG9yIGxhdGVyLiBcCitHVEVTVF9V
U0VfT1dOX1RSMV9UVVBMRSBtdXN0IGJlIHNldCB0byAwIG9uIHRob3NlIGNvbXBpbGVycy4iCisj
ZW5kaWYKKwogLy8gR1RFU1Rfbl9UVVBMRV8oVCkgaXMgdGhlIHR5cGUgb2YgYW4gbi10dXBsZS4K
ICNkZWZpbmUgR1RFU1RfMF9UVVBMRV8oVCkgdHVwbGU8PgogI2RlZmluZSBHVEVTVF8xX1RVUExF
XyhUKSB0dXBsZTxUIyMwLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkLCBcCkBA
IC0xNDAsMzQgKzE1MSw1NCBAQCB0ZW1wbGF0ZSA8Ym9vbCBrSW5kZXhWYWxpZCwgaW50IGtJbmRl
eCwgY2xhc3MgVHVwbGU+CiBzdHJ1Y3QgVHVwbGVFbGVtZW50OwogCiB0ZW1wbGF0ZSA8R1RFU1Rf
MTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgMCwgR1RFU1RfMTBf
VFVQTEVfKFQpPiB7IHR5cGVkZWYgVDAgdHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1
ZSwgMCwgR1RFU1RfMTBfVFVQTEVfKFQpID4geworICB0eXBlZGVmIFQwIHR5cGU7Cit9OwogCiB0
ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1
ZSwgMSwgR1RFU1RfMTBfVFVQTEVfKFQpPiB7IHR5cGVkZWYgVDEgdHlwZTsgfTsKK3N0cnVjdCBU
dXBsZUVsZW1lbnQ8dHJ1ZSwgMSwgR1RFU1RfMTBfVFVQTEVfKFQpID4geworICB0eXBlZGVmIFQx
IHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCBU
dXBsZUVsZW1lbnQ8dHJ1ZSwgMiwgR1RFU1RfMTBfVFVQTEVfKFQpPiB7IHR5cGVkZWYgVDIgdHlw
ZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgMiwgR1RFU1RfMTBfVFVQTEVfKFQpID4g
eworICB0eXBlZGVmIFQyIHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVT
XyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgMywgR1RFU1RfMTBfVFVQTEVfKFQpPiB7
IHR5cGVkZWYgVDMgdHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgMywgR1RFU1Rf
MTBfVFVQTEVfKFQpID4geworICB0eXBlZGVmIFQzIHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8R1RF
U1RfMTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgNCwgR1RFU1Rf
MTBfVFVQTEVfKFQpPiB7IHR5cGVkZWYgVDQgdHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8
dHJ1ZSwgNCwgR1RFU1RfMTBfVFVQTEVfKFQpID4geworICB0eXBlZGVmIFQ0IHR5cGU7Cit9Owog
CiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8
dHJ1ZSwgNSwgR1RFU1RfMTBfVFVQTEVfKFQpPiB7IHR5cGVkZWYgVDUgdHlwZTsgfTsKK3N0cnVj
dCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgNSwgR1RFU1RfMTBfVFVQTEVfKFQpID4geworICB0eXBlZGVm
IFQ1IHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVj
dCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgNiwgR1RFU1RfMTBfVFVQTEVfKFQpPiB7IHR5cGVkZWYgVDYg
dHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgNiwgR1RFU1RfMTBfVFVQTEVfKFQp
ID4geworICB0eXBlZGVmIFQ2IHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5B
TUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgNywgR1RFU1RfMTBfVFVQTEVfKFQp
PiB7IHR5cGVkZWYgVDcgdHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgNywgR1RF
U1RfMTBfVFVQTEVfKFQpID4geworICB0eXBlZGVmIFQ3IHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8
R1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgOCwgR1RF
U1RfMTBfVFVQTEVfKFQpPiB7IHR5cGVkZWYgVDggdHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1l
bnQ8dHJ1ZSwgOCwgR1RFU1RfMTBfVFVQTEVfKFQpID4geworICB0eXBlZGVmIFQ4IHR5cGU7Cit9
OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1l
bnQ8dHJ1ZSwgOSwgR1RFU1RfMTBfVFVQTEVfKFQpPiB7IHR5cGVkZWYgVDkgdHlwZTsgfTsKK3N0
cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgOSwgR1RFU1RfMTBfVFVQTEVfKFQpID4geworICB0eXBl
ZGVmIFQ5IHR5cGU7Cit9OwogCiB9ICAvLyBuYW1lc3BhY2UgZ3Rlc3RfaW50ZXJuYWwKIApAQCAt
NzA4LDM3ICs3MzksNTkgQEAgaW5saW5lIEdURVNUXzEwX1RVUExFXyhUKSBtYWtlX3R1cGxlKGNv
bnN0IFQwJiBmMCwgY29uc3QgVDEmIGYxLCBjb25zdCBUMiYgZjIsCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVHVwbGU+IHN0cnVjdCB0dXBsZV9zaXplOwogCiB0ZW1wbGF0ZSA8R1RFU1RfMF9UWVBFTkFN
RVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfMF9UVVBMRV8oVCk+IHsgc3RhdGljIGNv
bnN0IGludCB2YWx1ZSA9IDA7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8wX1RVUExFXyhU
KSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDA7Cit9OwogCiB0ZW1wbGF0ZSA8R1RF
U1RfMV9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfMV9UVVBMRV8oVCk+
IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDE7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVT
VF8xX1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDE7Cit9OwogCiB0
ZW1wbGF0ZSA8R1RFU1RfMl9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1Rf
Ml9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDI7IH07CitzdHJ1Y3QgdHVw
bGVfc2l6ZTxHVEVTVF8yX1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9
IDI7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfM19UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxl
X3NpemU8R1RFU1RfM19UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDM7IH07
CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8zX1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0
IGludCB2YWx1ZSA9IDM7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfNF9UWVBFTkFNRVNfKFQpPgot
c3RydWN0IHR1cGxlX3NpemU8R1RFU1RfNF9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2
YWx1ZSA9IDQ7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF80X1RVUExFXyhUKSA+IHsKKyAg
c3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDQ7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfNV9UWVBF
TkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfNV9UVVBMRV8oVCk+IHsgc3RhdGlj
IGNvbnN0IGludCB2YWx1ZSA9IDU7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF81X1RVUExF
XyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDU7Cit9OwogCiB0ZW1wbGF0ZSA8
R1RFU1RfNl9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfNl9UVVBMRV8o
VCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDY7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxH
VEVTVF82X1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDY7Cit9Owog
CiB0ZW1wbGF0ZSA8R1RFU1RfN19UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RF
U1RfN19UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDc7IH07CitzdHJ1Y3Qg
dHVwbGVfc2l6ZTxHVEVTVF83X1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1
ZSA9IDc7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfOF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1
cGxlX3NpemU8R1RFU1RfOF9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDg7
IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF84X1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNv
bnN0IGludCB2YWx1ZSA9IDg7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfOV9UWVBFTkFNRVNfKFQp
Pgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfOV9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGlu
dCB2YWx1ZSA9IDk7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF85X1RVUExFXyhUKSA+IHsK
KyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDk7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMTBf
VFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzEwX1RVUExFXyhUKT4geyBz
dGF0aWMgY29uc3QgaW50IHZhbHVlID0gMTA7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8x
MF9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAxMDsKK307CiAKIHRl
bXBsYXRlIDxpbnQgaywgY2xhc3MgVHVwbGU+CiBzdHJ1Y3QgdHVwbGVfZWxlbWVudCB7CkBAIC05
MTIsNyArOTY1LDcgQEAgc3RydWN0IFNhbWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9yPGssIGs+
IHsKICAgdGVtcGxhdGUgPGNsYXNzIFR1cGxlMSwgY2xhc3MgVHVwbGUyPgogICBzdGF0aWMgYm9v
bCBFcShjb25zdCBUdXBsZTEmIHQxLCBjb25zdCBUdXBsZTImIHQyKSB7CiAgICAgcmV0dXJuIFNh
bWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9yPGsgLSAxLCBrIC0gMT46OkVxKHQxLCB0MikgJiYK
LSAgICAgICAgOjpzdGQ6OmdldDxrIC0gMT4odDEpID09IDo6c3RkOjpnZXQ8ayAtIDE+KHQyKTsK
KyAgICAgICAgOjpzdGQ6OnRyMTo6Z2V0PGsgLSAxPih0MSkgPT0gOjpzdGQ6OnRyMTo6Z2V0PGsg
LSAxPih0Mik7CiAgIH0KIH07CiAKQEAgLTkyMiw4ICs5NzUsOCBAQCB0ZW1wbGF0ZSA8R1RFU1Rf
MTBfVFlQRU5BTUVTXyhUKSwgR1RFU1RfMTBfVFlQRU5BTUVTXyhVKT4KIGlubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgR1RFU1RfMTBfVFVQTEVfKFQpJiB0LAogICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHVEVTVF8xMF9UVVBMRV8oVSkmIHUpIHsKICAgcmV0dXJuIGd0ZXN0X2ludGVy
bmFsOjpTYW1lU2l6ZVR1cGxlUHJlZml4Q29tcGFyYXRvcjwKLSAgICAgIHR1cGxlX3NpemU8R1RF
U1RfMTBfVFVQTEVfKFQpPjo6dmFsdWUsCi0gICAgICB0dXBsZV9zaXplPEdURVNUXzEwX1RVUExF
XyhVKT46OnZhbHVlPjo6RXEodCwgdSk7CisgICAgICB0dXBsZV9zaXplPEdURVNUXzEwX1RVUExF
XyhUKSA+Ojp2YWx1ZSwKKyAgICAgIHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFUpID46OnZh
bHVlPjo6RXEodCwgdSk7CiB9CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpLCBH
VEVTVF8xMF9UWVBFTkFNRVNfKFUpPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oLnB1bXAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcApp
bmRleCA4NWViYzgwNjJlZTEwNDQ3MzdiMzZlOGE0MDg1ZDI2N2YxOGRjMjA1Li5iYjYyNmUwNDlm
MDg3ODBmZmNlOTZkNDg1MmNiOGVkNWQzZWY1ZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1
cGxlLmgucHVtcApAQCAtMjksMTEgKzI5LDEyIEBAICQkIFRoaXMgbWV0YSBjb21tZW50IGZpeGVz
IGF1dG8taW5kZW50YXRpb24gaW4gRW1hY3MuIH19CiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhh
bnlvbmcgV2FuKQorCiAKIC8vIEltcGxlbWVudHMgYSBzdWJzZXQgb2YgVFIxIHR1cGxlIG5lZWRl
ZCBieSBHb29nbGUgVGVzdCBhbmQgR29vZ2xlIE1vY2suCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAx
IERPIE5PVCBERUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dU
RVNUX1RVUExFX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1Rf
VFVQTEVfSF8KIApAQCAtNDEsMTcgKzQyLDI1IEBAICQkIFRoaXMgbWV0YSBjb21tZW50IGZpeGVz
IGF1dG8taW5kZW50YXRpb24gaW4gRW1hY3MuIH19CiAKIC8vIFRoZSBjb21waWxlciB1c2VkIGlu
IFN5bWJpYW4gaGFzIGEgYnVnIHRoYXQgcHJldmVudHMgdXMgZnJvbSBkZWNsYXJpbmcgdGhlCiAv
LyB0dXBsZSB0ZW1wbGF0ZSBhcyBhIGZyaWVuZCAoaXQgY29tcGxhaW5zIHRoYXQgdHVwbGUgaXMg
cmVkZWZpbmVkKS4gIFRoaXMKLS8vIGhhY2sgYnlwYXNzZXMgdGhlIGJ1ZyBieSBkZWNsYXJpbmcg
dGhlIG1lbWJlcnMgdGhhdCBzaG91bGQgb3RoZXJ3aXNlIGJlCisvLyBieXBhc3NlcyB0aGUgYnVn
IGJ5IGRlY2xhcmluZyB0aGUgbWVtYmVycyB0aGF0IHNob3VsZCBvdGhlcndpc2UgYmUKIC8vIHBy
aXZhdGUgYXMgcHVibGljLgogLy8gU3VuIFN0dWRpbyB2ZXJzaW9ucyA8IDEyIGFsc28gaGF2ZSB0
aGUgYWJvdmUgYnVnLgogI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgfHwgKGRlZmluZWQoX19T
VU5QUk9fQ0MpICYmIF9fU1VOUFJPX0NDIDwgMHg1OTApCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVf
VFVQTEVfQVNfRlJJRU5EXyBwdWJsaWM6CisjIGRlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FT
X0ZSSUVORF8gcHVibGljOgogI2Vsc2UKLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19G
UklFTkRfIFwKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBcCiAgICAg
dGVtcGxhdGUgPEdURVNUXyQobilfVFlQRU5BTUVTXyhVKT4gZnJpZW5kIGNsYXNzIHR1cGxlOyBc
CiAgICBwcml2YXRlOgogI2VuZGlmCiAKKy8vIFZpc3VhbCBTdHVkaW8gMjAxMCwgMjAxMiwgYW5k
IDIwMTMgZGVmaW5lIHN5bWJvbHMgaW4gc3RkOjp0cjEgdGhhdCBjb25mbGljdAorLy8gd2l0aCBv
dXIgb3duIGRlZmluaXRpb25zLiBUaGVyZWZvcmUgdXNpbmcgb3VyIG93biB0dXBsZSBkb2VzIG5v
dCB3b3JrIG9uCisvLyB0aG9zZSBjb21waWxlcnMuCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYg
X01TQ19WRVIgPj0gMTYwMCAgLyogMTYwMCBpcyBWaXN1YWwgU3R1ZGlvIDIwMTAgKi8KKyMgZXJy
b3IgImd0ZXN0J3MgdHVwbGUgZG9lc24ndCBjb21waWxlIG9uIFZpc3VhbCBTdHVkaW8gMjAxMCBv
ciBsYXRlci4gXAorR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgbXVzdCBiZSBzZXQgdG8gMCBvbiB0
aG9zZSBjb21waWxlcnMuIgorI2VuZGlmCisKIAogJHJhbmdlIGkgMC4ubi0xCiAkcmFuZ2UgaiAw
Li5uCkBAIC0xMTgsOCArMTI3LDkgQEAgc3RydWN0IFR1cGxlRWxlbWVudDsKIAogJGZvciBpIFtb
CiB0ZW1wbGF0ZSA8R1RFU1RfJChuKV9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVu
dDx0cnVlLCAkaSwgR1RFU1RfJChuKV9UVVBMRV8oVCk+IFtbXV0KLXsgdHlwZWRlZiBUJGkgdHlw
ZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgJGksIEdURVNUXyQobilfVFVQTEVfKFQp
ID4geworICB0eXBlZGVmIFQkaSB0eXBlOworfTsKIAogCiBdXQpAQCAtMjIwLDcgKzIzMCw5IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4gc3RydWN0IHR1cGxlX3NpemU7CiAKICRmb3IgaiBb
WwogdGVtcGxhdGUgPEdURVNUXyQoailfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXpl
PEdURVNUXyQoailfVFVQTEVfKFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAkajsgfTsK
K3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXyQoailfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29u
c3QgaW50IHZhbHVlID0gJGo7Cit9OwogCiAKIF1dCkBAIC0zMDIsOCArMzE0LDggQEAgdGVtcGxh
dGUgPEdURVNUXyQobilfVFlQRU5BTUVTXyhUKSwgR1RFU1RfJChuKV9UWVBFTkFNRVNfKFUpPgog
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHVEVTVF8kKG4pX1RVUExFXyhUKSYgdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR1RFU1RfJChuKV9UVVBMRV8oVSkmIHUpIHsKICAg
cmV0dXJuIGd0ZXN0X2ludGVybmFsOjpTYW1lU2l6ZVR1cGxlUHJlZml4Q29tcGFyYXRvcjwKLSAg
ICAgIHR1cGxlX3NpemU8R1RFU1RfJChuKV9UVVBMRV8oVCk+Ojp2YWx1ZSwKLSAgICAgIHR1cGxl
X3NpemU8R1RFU1RfJChuKV9UVVBMRV8oVSk+Ojp2YWx1ZT46OkVxKHQsIHUpOworICAgICAgdHVw
bGVfc2l6ZTxHVEVTVF8kKG4pX1RVUExFXyhUKSA+Ojp2YWx1ZSwKKyAgICAgIHR1cGxlX3NpemU8
R1RFU1RfJChuKV9UVVBMRV8oVSkgPjo6dmFsdWU+OjpFcSh0LCB1KTsKIH0KIAogdGVtcGxhdGUg
PEdURVNUXyQobilfVFlQRU5BTUVTXyhUKSwgR1RFU1RfJChuKV9UWVBFTkFNRVNfKFUpPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9n
dGVzdC10eXBlLXV0aWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgKaW5kZXggMDkzZWVlNmYwMTk2MzU1NjlmNDA0YWU2
MzU3YjhkZTQ4YjcxOGU4MS4uMjhlNDExMjQ1MzYxYzA4ZjI4NzA3ZTkyNDhlNmQwMzMyMGU2ODYx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC10eXBlLXV0aWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oCkBAIC0zMCw4ICszMCw3IEBACiAv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0
aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCiAKIC8vIFR5cGUgdXRpbGl0aWVz
IG5lZWRlZCBmb3IgaW1wbGVtZW50aW5nIHR5cGVkIGFuZCB0eXBlLXBhcmFtZXRlcml6ZWQKIC8v
IHRlc3RzLiAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBhIFNDUklQVC4gIERPIE5PVCBFRElU
IEJZIEhBTkQhCkBAIC00MSw1OCArNDAsODQgQEAKIC8vIFBsZWFzZSBjb250YWN0IGdvb2dsZXRl
c3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbSBpZiB5b3UgbmVlZAogLy8gbW9yZS4KIAorLy8g
R09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVf
R1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVf
R1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRl
cm5hbC9ndGVzdC1wb3J0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5n
Lmg+Ci0KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9Q
CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAvLyAjaWZkZWYgX19H
TlVDX18gaXMgdG9vIGdlbmVyYWwgaGVyZS4gIEl0IGlzIHBvc3NpYmxlIHRvIHVzZSBnY2Mgd2l0
aG91dCB1c2luZwogLy8gbGlic3RkYysrICh3aGljaCBpcyB3aGVyZSBjeHhhYmkuaCBjb21lcyBm
cm9tKS4KLSNpZmRlZiBfX0dMSUJDWFhfXwotI2luY2x1ZGUgPGN4eGFiaS5oPgotI2VuZGlmICAv
LyBfX0dMSUJDWFhfXworIyBpZiBHVEVTVF9IQVNfQ1hYQUJJX0hfCisjICBpbmNsdWRlIDxjeHhh
YmkuaD4KKyMgZWxpZiBkZWZpbmVkKF9fSFBfYUNDKQorIyAgaW5jbHVkZSA8YWN4eF9kZW1hbmds
ZS5oPgorIyBlbmRpZiAgLy8gR1RFU1RfSEFTSF9DWFhBQklfSF8KIAogbmFtZXNwYWNlIHRlc3Rp
bmcgewogbmFtZXNwYWNlIGludGVybmFsIHsKIAotLy8gQXNzZXJ0eVR5cGVFcTxUMSwgVDI+Ojp0
eXBlIGlzIGRlZmluZWQgaWZmIFQxIGFuZCBUMiBhcmUgdGhlIHNhbWUKLS8vIHR5cGUuICBUaGlz
IGNhbiBiZSB1c2VkIGFzIGEgY29tcGlsZS10aW1lIGFzc2VydGlvbiB0byBlbnN1cmUgdGhhdAot
Ly8gdHdvIHR5cGVzIGFyZSBlcXVhbC4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMj4KLXN0cnVjdCBBc3NlcnRUeXBlRXE7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3Ry
dWN0IEFzc2VydFR5cGVFcTxULCBUPiB7Ci0gIHR5cGVkZWYgYm9vbCB0eXBlOwotfTsKKy8vIENh
bm9uaWNhbGl6ZXMgYSBnaXZlbiBuYW1lIHdpdGggcmVzcGVjdCB0byB0aGUgU3RhbmRhcmQgQysr
IExpYnJhcnkuCisvLyBUaGlzIGhhbmRsZXMgcmVtb3ZpbmcgdGhlIGlubGluZSBuYW1lc3BhY2Ug
d2l0aGluIGBzdGRgIHRoYXQgaXMKKy8vIHVzZWQgYnkgdmFyaW91cyBzdGFuZGFyZCBsaWJyYXJp
ZXMgKGUuZy4sIGBzdGQ6Ol9fMWApLiAgTmFtZXMgb3V0c2lkZQorLy8gb2YgbmFtZXNwYWNlIHN0
ZCBhcmUgcmV0dXJuZWQgdW5tb2RpZmllZC4KK2lubGluZSBzdGQ6OnN0cmluZyBDYW5vbmljYWxp
emVGb3JTdGRMaWJWZXJzaW9uaW5nKHN0ZDo6c3RyaW5nIHMpIHsKKyAgc3RhdGljIGNvbnN0IGNo
YXIgcHJlZml4W10gPSAic3RkOjpfXyI7CisgIGlmIChzLmNvbXBhcmUoMCwgc3RybGVuKHByZWZp
eCksIHByZWZpeCkgPT0gMCkgeworICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgZW5kID0gcy5m
aW5kKCI6OiIsIHN0cmxlbihwcmVmaXgpKTsKKyAgICBpZiAoZW5kICE9IHMubnBvcykgeworICAg
ICAgLy8gRXJhc2UgZXZlcnl0aGluZyBiZXR3ZWVuIHRoZSBpbml0aWFsIGBzdGRgIGFuZCB0aGUg
c2Vjb25kIGA6OmAuCisgICAgICBzLmVyYXNlKHN0cmxlbigic3RkIiksIGVuZCAtIHN0cmxlbigi
c3RkIikpOworICAgIH0KKyAgfQorICByZXR1cm4gczsKK30KIAogLy8gR2V0VHlwZU5hbWU8VD4o
KSByZXR1cm5zIGEgaHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0eXBlIFQuCisvLyBOQjogVGhpcyBm
dW5jdGlvbiBpcyBhbHNvIHVzZWQgaW4gR29vZ2xlIE1vY2ssIHNvIGRvbid0IG1vdmUgaXQgaW5z
aWRlIG9mCisvLyB0aGUgdHlwZWQtdGVzdC1vbmx5IHNlY3Rpb24gYmVsb3cuCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLVN0cmluZyBHZXRUeXBlTmFtZSgpIHsKLSNpZiBHVEVTVF9IQVNfUlRUSQor
c3RkOjpzdHJpbmcgR2V0VHlwZU5hbWUoKSB7CisjIGlmIEdURVNUX0hBU19SVFRJCiAKICAgY29u
c3QgY2hhciogY29uc3QgbmFtZSA9IHR5cGVpZChUKS5uYW1lKCk7Ci0jaWZkZWYgX19HTElCQ1hY
X18KKyMgIGlmIEdURVNUX0hBU19DWFhBQklfSF8gfHwgZGVmaW5lZChfX0hQX2FDQykKICAgaW50
IHN0YXR1cyA9IDA7CiAgIC8vIGdjYydzIGltcGxlbWVudGF0aW9uIG9mIHR5cGVpZChUKS5uYW1l
KCkgbWFuZ2xlcyB0aGUgdHlwZSBuYW1lLAogICAvLyBzbyB3ZSBoYXZlIHRvIGRlbWFuZ2xlIGl0
LgotICBjaGFyKiBjb25zdCByZWFkYWJsZV9uYW1lID0gYWJpOjpfX2N4YV9kZW1hbmdsZShuYW1l
LCAwLCAwLCAmc3RhdHVzKTsKLSAgY29uc3QgU3RyaW5nIG5hbWVfc3RyKHN0YXR1cyA9PSAwID8g
cmVhZGFibGVfbmFtZSA6IG5hbWUpOworIyAgIGlmIEdURVNUX0hBU19DWFhBQklfSF8KKyAgdXNp
bmcgYWJpOjpfX2N4YV9kZW1hbmdsZTsKKyMgICBlbmRpZiAgLy8gR1RFU1RfSEFTX0NYWEFCSV9I
XworICBjaGFyKiBjb25zdCByZWFkYWJsZV9uYW1lID0gX19jeGFfZGVtYW5nbGUobmFtZSwgMCwg
MCwgJnN0YXR1cyk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG5hbWVfc3RyKHN0YXR1cyA9PSAwID8g
cmVhZGFibGVfbmFtZSA6IG5hbWUpOwogICBmcmVlKHJlYWRhYmxlX25hbWUpOwotICByZXR1cm4g
bmFtZV9zdHI7Ci0jZWxzZQorICByZXR1cm4gQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmlu
ZyhuYW1lX3N0cik7CisjICBlbHNlCiAgIHJldHVybiBuYW1lOwotI2VuZGlmICAvLyBfX0dMSUJD
WFhfXworIyAgZW5kaWYgIC8vIEdURVNUX0hBU19DWFhBQklfSF8gfHwgX19IUF9hQ0MKKworIyBl
bHNlCiAKLSNlbHNlCiAgIHJldHVybiAiPHR5cGU+IjsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1JU
VEkKKworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX1JUVEkKIH0KIAorI2lmIEdURVNUX0hBU19UWVBF
RF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AKKworLy8gQXNzZXJ0eVR5cGVFcTxUMSwg
VDI+Ojp0eXBlIGlzIGRlZmluZWQgaWZmIFQxIGFuZCBUMiBhcmUgdGhlIHNhbWUKKy8vIHR5cGUu
ICBUaGlzIGNhbiBiZSB1c2VkIGFzIGEgY29tcGlsZS10aW1lIGFzc2VydGlvbiB0byBlbnN1cmUg
dGhhdAorLy8gdHdvIHR5cGVzIGFyZSBlcXVhbC4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMj4KK3N0cnVjdCBBc3NlcnRUeXBlRXE7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
Pgorc3RydWN0IEFzc2VydFR5cGVFcTxULCBUPiB7CisgIHR5cGVkZWYgYm9vbCB0eXBlOworfTsK
KwogLy8gQSB1bmlxdWUgdHlwZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgYXJn
dW1lbnRzIG9mIGNsYXNzCiAvLyB0ZW1wbGF0ZSBUeXBlcy4gIFRoaXMgYWxsb3dzIHVzIHRvIHNp
bXVsYXRlIHZhcmlhZGljIHRlbXBsYXRlcwogLy8gKGUuZy4gVHlwZXM8aW50PiwgVHlwZTxpbnQs
IGRvdWJsZT4sIGFuZCBldGMpLCB3aGljaCBDKysgZG9lc24ndApAQCAtMTYxMSw3ICsxNjM2LDcg
QEAgc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCiAKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKLSNkZWZp
bmUgR1RFU1RfVEVNUExBVEVfIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcworIyBkZWZpbmUg
R1RFU1RfVEVNUExBVEVfIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcwogCiAvLyBUaGUgdGVt
cGxhdGUgInNlbGVjdG9yIiBzdHJ1Y3QgVGVtcGxhdGVTZWw8VG1wbD4gaXMgdXNlZCB0bwogLy8g
cmVwcmVzZW50IFRtcGwsIHdoaWNoIG11c3QgYmUgYSBjbGFzcyB0ZW1wbGF0ZSB3aXRoIG9uZSB0
eXBlCkBAIC0xNjI5LDcgKzE2NTQsNyBAQCBzdHJ1Y3QgVGVtcGxhdGVTZWwgewogICB9OwogfTsK
IAotI2RlZmluZSBHVEVTVF9CSU5EXyhUbXBsU2VsLCBUKSBcCisjIGRlZmluZSBHVEVTVF9CSU5E
XyhUbXBsU2VsLCBUKSBcCiAgIFRtcGxTZWw6OnRlbXBsYXRlIEJpbmQ8VD46OnR5cGUKIAogLy8g
QSB1bmlxdWUgc3RydWN0IHRlbXBsYXRlIHVzZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRo
ZQpAQCAtMzI5MSw3ICszMzE2LDkgQEAgc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKIC8vIElOU1RBTlRJ
QVRFX1RZUEVEX1RFU1RfQ0FTRV9QKCkuCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0
IFR5cGVMaXN0IHsgdHlwZWRlZiBUeXBlczE8VD4gdHlwZTsgfTsKK3N0cnVjdCBUeXBlTGlzdCB7
CisgIHR5cGVkZWYgVHlwZXMxPFQ+IHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEs
IHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAg
IHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBl
bmFtZSBUMTAsCkBAIC0zMzEzLDkgKzMzNDAsOSBAQCBzdHJ1Y3QgVHlwZUxpc3Q8VHlwZXM8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAogICAg
ICAgVDQxLCBUNDIsIFQ0MywgVDQ0LCBUNDUsIFQ0NiwgVDQ3LCBUNDgsIFQ0OSwgVDUwPjo6dHlw
ZSB0eXBlOwogfTsKIAorI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9I
QVNfVFlQRURfVEVTVF9QCisKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNw
YWNlIHRlc3RpbmcKIAotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9I
QVNfVFlQRURfVEVTVF9QCi0KICNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5B
TF9HVEVTVF9UWVBFX1VUSUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgucHVtcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgu
cHVtcAppbmRleCA1YWVkMWU1NTQ0ZmEyZGExNTg5NzM0Y2JjM2I0MTQxYjU4N2ExZjMyLi4wMDAx
YTVkMzlkZmE2ZDI0YzdjNDFhMTZhMTVmMmUyYTVjZTk0OWRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5o
LnB1bXAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wCkBAIC0yOCw4ICsyOCw3IEBAICR2YXIgbiA9IDUwICAk
JCBNYXhpbXVtIGxlbmd0aCBvZiB0eXBlIGxpc3RzIHdlIHdhbnQgdG8gc3VwcG9ydC4KIC8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6
IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogLy8gVHlwZSB1dGlsaXRpZXMgbmVl
ZGVkIGZvciBpbXBsZW1lbnRpbmcgdHlwZWQgYW5kIHR5cGUtcGFyYW1ldGVyaXplZAogLy8gdGVz
dHMuICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBULiAgRE8gTk9UIEVESVQgQlkg
SEFORCEKQEAgLTM5LDU4ICszOCw4NCBAQCAkdmFyIG4gPSA1MCAgJCQgTWF4aW11bSBsZW5ndGgg
b2YgdHlwZSBsaXN0cyB3ZSB3YW50IHRvIHN1cHBvcnQuCiAvLyBQbGVhc2UgY29udGFjdCBnb29n
bGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20gaWYgeW91IG5lZWQKIC8vIG1vcmUuCiAK
Ky8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNM
VURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RZUEVfVVRJTF9IXwogI2RlZmluZSBHVEVTVF9JTkNM
VURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RZUEVfVVRJTF9IXwogCi0jaW5jbHVkZSA8Z3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0
cmluZy5oPgotCi0jaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RF
U1RfUAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKIAogLy8gI2lmZGVm
IF9fR05VQ19fIGlzIHRvbyBnZW5lcmFsIGhlcmUuICBJdCBpcyBwb3NzaWJsZSB0byB1c2UgZ2Nj
IHdpdGhvdXQgdXNpbmcKIC8vIGxpYnN0ZGMrKyAod2hpY2ggaXMgd2hlcmUgY3h4YWJpLmggY29t
ZXMgZnJvbSkuCi0jaWZkZWYgX19HTElCQ1hYX18KLSNpbmNsdWRlIDxjeHhhYmkuaD4KLSNlbmRp
ZiAgLy8gX19HTElCQ1hYX18KKyMgaWYgR1RFU1RfSEFTX0NYWEFCSV9IXworIyAgaW5jbHVkZSA8
Y3h4YWJpLmg+CisjIGVsaWYgZGVmaW5lZChfX0hQX2FDQykKKyMgIGluY2x1ZGUgPGFjeHhfZGVt
YW5nbGUuaD4KKyMgZW5kaWYgIC8vIEdURVNUX0hBU0hfQ1hYQUJJX0hfCiAKIG5hbWVzcGFjZSB0
ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKLS8vIEFzc2VydHlUeXBlRXE8VDEsIFQy
Pjo6dHlwZSBpcyBkZWZpbmVkIGlmZiBUMSBhbmQgVDIgYXJlIHRoZSBzYW1lCi0vLyB0eXBlLiAg
VGhpcyBjYW4gYmUgdXNlZCBhcyBhIGNvbXBpbGUtdGltZSBhc3NlcnRpb24gdG8gZW5zdXJlIHRo
YXQKLS8vIHR3byB0eXBlcyBhcmUgZXF1YWwuCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDI+Ci1zdHJ1Y3QgQXNzZXJ0VHlwZUVxOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LXN0cnVjdCBBc3NlcnRUeXBlRXE8VCwgVD4gewotICB0eXBlZGVmIGJvb2wgdHlwZTsKLX07Cisv
LyBDYW5vbmljYWxpemVzIGEgZ2l2ZW4gbmFtZSB3aXRoIHJlc3BlY3QgdG8gdGhlIFN0YW5kYXJk
IEMrKyBMaWJyYXJ5LgorLy8gVGhpcyBoYW5kbGVzIHJlbW92aW5nIHRoZSBpbmxpbmUgbmFtZXNw
YWNlIHdpdGhpbiBgc3RkYCB0aGF0IGlzCisvLyB1c2VkIGJ5IHZhcmlvdXMgc3RhbmRhcmQgbGli
cmFyaWVzIChlLmcuLCBgc3RkOjpfXzFgKS4gIE5hbWVzIG91dHNpZGUKKy8vIG9mIG5hbWVzcGFj
ZSBzdGQgYXJlIHJldHVybmVkIHVubW9kaWZpZWQuCitpbmxpbmUgc3RkOjpzdHJpbmcgQ2Fub25p
Y2FsaXplRm9yU3RkTGliVmVyc2lvbmluZyhzdGQ6OnN0cmluZyBzKSB7CisgIHN0YXRpYyBjb25z
dCBjaGFyIHByZWZpeFtdID0gInN0ZDo6X18iOworICBpZiAocy5jb21wYXJlKDAsIHN0cmxlbihw
cmVmaXgpLCBwcmVmaXgpID09IDApIHsKKyAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGVuZCA9
IHMuZmluZCgiOjoiLCBzdHJsZW4ocHJlZml4KSk7CisgICAgaWYgKGVuZCAhPSBzLm5wb3MpIHsK
KyAgICAgIC8vIEVyYXNlIGV2ZXJ5dGhpbmcgYmV0d2VlbiB0aGUgaW5pdGlhbCBgc3RkYCBhbmQg
dGhlIHNlY29uZCBgOjpgLgorICAgICAgcy5lcmFzZShzdHJsZW4oInN0ZCIpLCBlbmQgLSBzdHJs
ZW4oInN0ZCIpKTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHM7Cit9CiAKIC8vIEdldFR5cGVOYW1l
PFQ+KCkgcmV0dXJucyBhIGh1bWFuLXJlYWRhYmxlIG5hbWUgb2YgdHlwZSBULgorLy8gTkI6IFRo
aXMgZnVuY3Rpb24gaXMgYWxzbyB1c2VkIGluIEdvb2dsZSBNb2NrLCBzbyBkb24ndCBtb3ZlIGl0
IGluc2lkZSBvZgorLy8gdGhlIHR5cGVkLXRlc3Qtb25seSBzZWN0aW9uIGJlbG93LgogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1TdHJpbmcgR2V0VHlwZU5hbWUoKSB7Ci0jaWYgR1RFU1RfSEFTX1JU
VEkKK3N0ZDo6c3RyaW5nIEdldFR5cGVOYW1lKCkgeworIyBpZiBHVEVTVF9IQVNfUlRUSQogCiAg
IGNvbnN0IGNoYXIqIGNvbnN0IG5hbWUgPSB0eXBlaWQoVCkubmFtZSgpOwotI2lmZGVmIF9fR0xJ
QkNYWF9fCisjICBpZiBHVEVTVF9IQVNfQ1hYQUJJX0hfIHx8IGRlZmluZWQoX19IUF9hQ0MpCiAg
IGludCBzdGF0dXMgPSAwOwogICAvLyBnY2MncyBpbXBsZW1lbnRhdGlvbiBvZiB0eXBlaWQoVCku
bmFtZSgpIG1hbmdsZXMgdGhlIHR5cGUgbmFtZSwKICAgLy8gc28gd2UgaGF2ZSB0byBkZW1hbmds
ZSBpdC4KLSAgY2hhciogY29uc3QgcmVhZGFibGVfbmFtZSA9IGFiaTo6X19jeGFfZGVtYW5nbGUo
bmFtZSwgMCwgMCwgJnN0YXR1cyk7Ci0gIGNvbnN0IFN0cmluZyBuYW1lX3N0cihzdGF0dXMgPT0g
MCA/IHJlYWRhYmxlX25hbWUgOiBuYW1lKTsKKyMgICBpZiBHVEVTVF9IQVNfQ1hYQUJJX0hfCisg
IHVzaW5nIGFiaTo6X19jeGFfZGVtYW5nbGU7CisjICAgZW5kaWYgIC8vIEdURVNUX0hBU19DWFhB
QklfSF8KKyAgY2hhciogY29uc3QgcmVhZGFibGVfbmFtZSA9IF9fY3hhX2RlbWFuZ2xlKG5hbWUs
IDAsIDAsICZzdGF0dXMpOworICBjb25zdCBzdGQ6OnN0cmluZyBuYW1lX3N0cihzdGF0dXMgPT0g
MCA/IHJlYWRhYmxlX25hbWUgOiBuYW1lKTsKICAgZnJlZShyZWFkYWJsZV9uYW1lKTsKLSAgcmV0
dXJuIG5hbWVfc3RyOwotI2Vsc2UKKyAgcmV0dXJuIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNp
b25pbmcobmFtZV9zdHIpOworIyAgZWxzZQogICByZXR1cm4gbmFtZTsKLSNlbmRpZiAgLy8gX19H
TElCQ1hYX18KKyMgIGVuZGlmICAvLyBHVEVTVF9IQVNfQ1hYQUJJX0hfIHx8IF9fSFBfYUNDCisK
KyMgZWxzZQogCi0jZWxzZQogICByZXR1cm4gIjx0eXBlPiI7Ci0jZW5kaWYgIC8vIEdURVNUX0hB
U19SVFRJCisKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19SVFRJCiB9CiAKKyNpZiBHVEVTVF9IQVNf
VFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisKKy8vIEFzc2VydHlUeXBlRXE8
VDEsIFQyPjo6dHlwZSBpcyBkZWZpbmVkIGlmZiBUMSBhbmQgVDIgYXJlIHRoZSBzYW1lCisvLyB0
eXBlLiAgVGhpcyBjYW4gYmUgdXNlZCBhcyBhIGNvbXBpbGUtdGltZSBhc3NlcnRpb24gdG8gZW5z
dXJlIHRoYXQKKy8vIHR3byB0eXBlcyBhcmUgZXF1YWwuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
MSwgdHlwZW5hbWUgVDI+CitzdHJ1Y3QgQXNzZXJ0VHlwZUVxOworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK3N0cnVjdCBBc3NlcnRUeXBlRXE8VCwgVD4geworICB0eXBlZGVmIGJvb2wgdHlwZTsK
K307CisKIC8vIEEgdW5pcXVlIHR5cGUgdXNlZCBhcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhl
IGFyZ3VtZW50cyBvZiBjbGFzcwogLy8gdGVtcGxhdGUgVHlwZXMuICBUaGlzIGFsbG93cyB1cyB0
byBzaW11bGF0ZSB2YXJpYWRpYyB0ZW1wbGF0ZXMKIC8vIChlLmcuIFR5cGVzPGludD4sIFR5cGU8
aW50LCBkb3VibGU+LCBhbmQgZXRjKSwgd2hpY2ggQysrIGRvZXNuJ3QKQEAgLTE2OSw3ICsxOTQs
NyBAQCBzdHJ1Y3QgVHlwZXM8JGZvciBqLCBbW1Qkal1dJGZvciBrW1ssIGludGVybmFsOjpOb25l
XV0+IHsKIAogbmFtZXNwYWNlIGludGVybmFsIHsKIAotI2RlZmluZSBHVEVTVF9URU1QTEFURV8g
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzCisjIGRlZmluZSBHVEVTVF9URU1QTEFURV8gdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzCiAKIC8vIFRoZSB0ZW1wbGF0ZSAic2VsZWN0b3IiIHN0
cnVjdCBUZW1wbGF0ZVNlbDxUbXBsPiBpcyB1c2VkIHRvCiAvLyByZXByZXNlbnQgVG1wbCwgd2hp
Y2ggbXVzdCBiZSBhIGNsYXNzIHRlbXBsYXRlIHdpdGggb25lIHR5cGUKQEAgLTE4Nyw3ICsyMTIs
NyBAQCBzdHJ1Y3QgVGVtcGxhdGVTZWwgewogICB9OwogfTsKIAotI2RlZmluZSBHVEVTVF9CSU5E
XyhUbXBsU2VsLCBUKSBcCisjIGRlZmluZSBHVEVTVF9CSU5EXyhUbXBsU2VsLCBUKSBcCiAgIFRt
cGxTZWw6OnRlbXBsYXRlIEJpbmQ8VD46OnR5cGUKIAogLy8gQSB1bmlxdWUgc3RydWN0IHRlbXBs
YXRlIHVzZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZQpAQCAtMjcwLDcgKzI5NSw5IEBA
IHN0cnVjdCBUZW1wbGF0ZXM8JGZvciBqLCBbW1Qkal1dJGZvciBrW1ssIE5vbmVUXV0+IHsKIC8v
IElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKCkuCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
Pgotc3RydWN0IFR5cGVMaXN0IHsgdHlwZWRlZiBUeXBlczE8VD4gdHlwZTsgfTsKK3N0cnVjdCBU
eXBlTGlzdCB7CisgIHR5cGVkZWYgVHlwZXMxPFQ+IHR5cGU7Cit9OwogCiAKICRyYW5nZSBpIDEu
Lm4KQEAgLTI3OSw5ICszMDYsOSBAQCBzdHJ1Y3QgVHlwZUxpc3Q8VHlwZXM8JGZvciBpLCBbW1Qk
aV1dPiA+IHsKICAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlczwkZm9yIGksIFtbVCRpXV0+Ojp0eXBl
IHR5cGU7CiB9OwogCisjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hB
U19UWVBFRF9URVNUX1AKKwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3Bh
Y2UgdGVzdGluZwogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hB
U19UWVBFRF9URVNUX1AKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFM
X0dURVNUX1RZUEVfVVRJTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
bWFrZS9NYWtlZmlsZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21ha2UvTWFrZWZpbGUKaW5k
ZXggNWIyN2I2YTJjYmIxM2UzODBlZTc1ZDE4NmY1NTNiZmI1ZmExNDRiNS4uOWFjNzQ0OTNiYTU1
MjQ2NTk3ZTkwYjg5OGZhZTg0N2FlMzU4ZWFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvbWFrZS9NYWtlZmlsZQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tYWtl
L01ha2VmaWxlCkBAIC0yMCwxMCArMjAsMTIgQEAgR1RFU1RfRElSID0gLi4KIFVTRVJfRElSID0g
Li4vc2FtcGxlcwogCiAjIEZsYWdzIHBhc3NlZCB0byB0aGUgcHJlcHJvY2Vzc29yLgotQ1BQRkxB
R1MgKz0gLUkkKEdURVNUX0RJUikvaW5jbHVkZQorIyBTZXQgR29vZ2xlIFRlc3QncyBoZWFkZXIg
ZGlyZWN0b3J5IGFzIGEgc3lzdGVtIGRpcmVjdG9yeSwgc3VjaCB0aGF0CisjIHRoZSBjb21waWxl
ciBkb2Vzbid0IGdlbmVyYXRlIHdhcm5pbmdzIGluIEdvb2dsZSBUZXN0IGhlYWRlcnMuCitDUFBG
TEFHUyArPSAtaXN5c3RlbSAkKEdURVNUX0RJUikvaW5jbHVkZQogCiAjIEZsYWdzIHBhc3NlZCB0
byB0aGUgQysrIGNvbXBpbGVyLgotQ1hYRkxBR1MgKz0gLWcgLVdhbGwgLVdleHRyYQorQ1hYRkxB
R1MgKz0gLWcgLVdhbGwgLVdleHRyYSAtcHRocmVhZAogCiAjIEFsbCB0ZXN0cyBwcm9kdWNlZCBi
eSB0aGlzIE1ha2VmaWxlLiAgUmVtZW1iZXIgdG8gYWRkIG5ldyB0ZXN0cyB5b3UKICMgY3JlYXRl
ZCB0byB0aGUgbGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMv
MjAxMC9ndGVzdC1tZC5zbG4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rl
c3QtbWQuc2xuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzNmIzM2I2MjE1YzM3NGFmYzExNmI1MjA4NGIxNmY0MTQ4
ODA0N2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIw
MTAvZ3Rlc3QtbWQuc2xuCkBAIC0wLDAgKzEsNTUgQEAKK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
IFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDExLjAwCisjIFZpc3VhbCBDKysgRXhwcmVz
cyAyMDEwCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIp
ID0gImd0ZXN0LW1kIiwgImd0ZXN0LW1kLnZjeHByb2oiLCAie0M4RjZDMTcyLTU2RjItNEU3Ni1C
NUZBLUMzQjQyM0IzMUJFOH0iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0x
MUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0X21haW4tbWQiLCAiZ3Rlc3RfbWFpbi1t
ZC52Y3hwcm9qIiwgInszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9IgorRW5k
UHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0i
KSA9ICJndGVzdF9wcm9kX3Rlc3QtbWQiLCAiZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjeHByb2oiLCAi
ezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0iCitFbmRQcm9qZWN0CitQcm9q
ZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0X3Vu
aXR0ZXN0LW1kIiwgImd0ZXN0X3VuaXR0ZXN0LW1kLnZjeHByb2oiLCAiezREOUZERkI1LTk4NkEt
NDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0iCitFbmRQcm9qZWN0CitHbG9iYWwKKwlHbG9iYWxTZWN0
aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbgorCQlEZWJ1
Z3xXaW4zMiA9IERlYnVnfFdpbjMyCisJCURlYnVnfHg2NCA9IERlYnVnfHg2NAorCQlSZWxlYXNl
fFdpbjMyID0gUmVsZWFzZXxXaW4zMgorCQlSZWxlYXNlfHg2NCA9IFJlbGVhc2V8eDY0CisJRW5k
R2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9y
bXMpID0gcG9zdFNvbHV0aW9uCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFC
RTh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtDOEY2QzE3Mi01NkYy
LTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4z
MgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU4fS5EZWJ1Z3x4NjQuQWN0
aXZlQ2ZnID0gRGVidWd8eDY0CisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFC
RTh9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtDOEY2QzE3Mi01NkYyLTRFNzYt
QjVGQS1DM0I0MjNCMzFCRTh9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4z
MgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU4fS5SZWxlYXNlfFdpbjMy
LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0
MjNCMzFCRTh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtDOEY2QzE3
Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxl
YXNlfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5EZWJ1Z3xX
aW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDct
RjY4RUQ5ODYyMDMzfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezNBRjU0
QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzM30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERl
YnVnfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5EZWJ1Z3x4
NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5
ODYyMDMzfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezNBRjU0
QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzM30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0g
UmVsZWFzZXxXaW4zMgorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5S
ZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMy
LTkxNDctRjY4RUQ5ODYyMDMzfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJ
ezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uRGVidWd8V2luMzIuQWN0aXZl
Q2ZnID0gRGVidWd8V2luMzIKKwkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VD
Qn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3
RTgtOUE5RC1FQTRENDlCQzNFQ0J9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJ
ezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uRGVidWd8eDY0LkJ1aWxkLjAg
PSBEZWJ1Z3x4NjQKKwkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uUmVs
ZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3
RTgtOUE5RC1FQTRENDlCQzNFQ0J9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2lu
MzIKKwkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uUmVsZWFzZXx4NjQu
QWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0
OUJDM0VDQn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXs0RDlGREZCNS05
ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTJ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVn
fFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTJ9LkRlYnVnfFdp
bjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRF
RTBFRDQ4MUEyfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXs0RDlGREZCNS05
ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTJ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0
CisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTJ9LlJlbGVhc2V8V2luMzIu
QWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRF
RTBFRDQ4MUEyfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXs0RDlG
REZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTJ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9
IFJlbGVhc2V8eDY0CisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTJ9LlJl
bGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9i
YWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbgorCQlIaWRlU29sdXRp
b25Ob2RlID0gRkFMU0UKKwlFbmRHbG9iYWxTZWN0aW9uCitFbmRHbG9iYWwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC1tZC52Y3hwcm9qIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1kLnZjeHByb2oKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTZhNmZmMTJmN2I1NzkwMTVhYmIxNDE1ODBlMmYyZDRmZGE2ZjljMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC1tZC52Y3hwcm9q
CkBAIC0wLDAgKzEsMTQ5IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYt
OCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIg
eG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAw
MyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFBy
b2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1
cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0
Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJh
dGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0Nv
bmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2pl
Y3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxl
YXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+
CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3Vy
YXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4K
KyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxh
dGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0
ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0
R3VpZD57QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU4fTwvUHJvamVjdEd1aWQ+
CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+Cisg
IDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQu
cHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAg
ICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Cisg
ICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1U
b29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJv
cGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlw
ZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11
bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZv
cm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0i
Q29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0Nv
bmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJT
ZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJv
cGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAg
PENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAg
IDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9v
bHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9y
dCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJ
bXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgor
ICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwv
SW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAg
ICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29m
dC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZv
cm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5
U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxB
cHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVs
PSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCck
KFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFi
ZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVy
dHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Q
cm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAg
IDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29u
ZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFt
ZSlcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1l
KVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+
JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgIDwvUHJvcGVydHlHcm91cD4KKyAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUp
XCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91
dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdGQ8L1Rh
cmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxP
dXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1
cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwv
SW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5
R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdGQ8L1Rhcmdl
dE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPFRh
cmdldE5hbWU+Z3Rlc3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1E
ZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRp
c2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lO
MzI7X1ZBUklBRElDX01BWD0xMDtfREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25z
KTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwv
TWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVj
a3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVh
ZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgor
ICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9X
YXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGlu
dWU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAg
PExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXph
dGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFY
PTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwv
QmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRE
ZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAg
ICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5p
bmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwv
RGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGli
IC8+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+
CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtf
VkFSSUFESUNfTUFYPTEwO05ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9Q
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVh
ZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAg
IDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2Fybmlu
Z0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9E
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWIg
Lz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Cisg
ICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFS
SUFESUNfTUFYPTEwO05ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVk
RExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xl
dmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWIgLz4K
KyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cLi5cc3JjXGd0ZXN0LWFsbC5jYyI+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgor
ICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jv
c29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJn
ZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rl
c3QtbWQudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEw
L2d0ZXN0LW1kLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWVkZWZmMjMwNmUxZmFjOTNl
NzdjNTUzZjA1NmI3MGZkMmE2ODU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1kLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDE4
IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3Qg
VG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2Rl
dmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVk
ZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1
LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVu
c2lvbnM+Y3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+
CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAg
ICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJG
Qn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5s
O2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8
SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXGd0ZXN0LWFsbC5j
YyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxl
PgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3Quc2xu
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LnNsbgpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jYWNkNWMwY2U2YjkzMjg2YmE1MjcwZjgzMTFmN2Q2NDkyMWUwMmU2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LnNsbgpAQCAtMCww
ICsxLDU1IEBACitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQg
VmVyc2lvbiAxMS4wMAorIyBWaXN1YWwgQysrIEV4cHJlc3MgMjAxMAorUHJvamVjdCgiezhCQzlD
RUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdCIsICJndGVzdC52Y3hw
cm9qIiwgIntDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9IgorRW5kUHJvamVj
dAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJn
dGVzdF9tYWluIiwgImd0ZXN0X21haW4udmN4cHJvaiIsICJ7M0FGNTRDOEEtMTBCRi00MzMyLTkx
NDctRjY4RUQ5ODYyMDMyfSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTEx
RDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3RfdW5pdHRlc3QiLCAiZ3Rlc3RfdW5pdHRl
c3QudmN4cHJvaiIsICJ7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUExfSIKK0Vu
ZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9
IikgPSAiZ3Rlc3RfcHJvZF90ZXN0IiwgImd0ZXN0X3Byb2RfdGVzdC52Y3hwcm9qIiwgInsyNDg0
ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9IgorRW5kUHJvamVjdAorR2xvYmFsCisJ
R2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRp
b24KKwkJRGVidWd8V2luMzIgPSBEZWJ1Z3xXaW4zMgorCQlEZWJ1Z3x4NjQgPSBEZWJ1Z3x4NjQK
KwkJUmVsZWFzZXxXaW4zMiA9IFJlbGVhc2V8V2luMzIKKwkJUmVsZWFzZXx4NjQgPSBSZWxlYXNl
fHg2NAorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0
aW9uUGxhdGZvcm1zKSA9IHBvc3RTb2x1dGlvbgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEt
QzNCNDIzQjMxQkU3fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7QzhG
NkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0g
RGVidWd8V2luMzIKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30uRGVi
dWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEt
QzNCNDIzQjMxQkU3fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7QzhGNkMxNzIt
NTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJl
bGVhc2V8V2luMzIKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30uUmVs
ZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7QzhGNkMxNzItNTZGMi00RTc2
LUI1RkEtQzNCNDIzQjMxQkU3fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAor
CQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fS5SZWxlYXNlfHg2NC5CdWls
ZC4wID0gUmVsZWFzZXx4NjQKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAz
Mn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezNBRjU0QzhBLTEwQkYt
NDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMy
CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzJ9LkRlYnVnfHg2NC5BY3Rp
dmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAz
Mn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05
MTQ3LUY2OEVEOTg2MjAzMn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMy
CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzJ9LlJlbGVhc2V8V2luMzIu
QnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVE
OTg2MjAzMn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezNBRjU0QzhB
LTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVh
c2V8eDY0CisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9LkRlYnVnfFdp
bjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1G
NEVFMEVENDgxQTF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7NEQ5RkRG
QjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUExfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVi
dWd8eDY0CisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9LkRlYnVnfHg2
NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVE
NDgxQTF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7NEQ5RkRG
QjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUExfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBS
ZWxlYXNlfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9LlJl
bGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXs0RDlGREZCNS05ODZBLTQxMzkt
ODIzQy1GNEVFMEVENDgxQTF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7
MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVD
ZmcgPSBEZWJ1Z3xXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNB
fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezI0ODQ4NTUxLUVGNEYtNDdF
OC05QTlELUVBNEQ0OUJDM0VDQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7
MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9
IERlYnVnfHg2NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfS5SZWxl
YXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezI0ODQ4NTUxLUVGNEYtNDdF
OC05QTlELUVBNEQ0OUJDM0VDQX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4z
MgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfS5SZWxlYXNlfHg2NC5B
Y3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5
QkMzRUNBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwlFbmRHbG9iYWxTZWN0
aW9uCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24KKwkJ
SGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFCisJRW5kR2xvYmFsU2VjdGlvbgorRW5kR2xvYmFsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QudmN4cHJv
aiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC52Y3hwcm9qCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE0NmY1YzdhZjI0NTM4ZDM5OGMzNjI2YzhlY2NlOTE0OGM5NmYwMWQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QudmN4cHJv
agpAQCAtMCwwICsxLDE0OSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRm
LTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAi
IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIw
MDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmln
dXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxh
dGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3Vy
YXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9D
b25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9q
ZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVs
ZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9u
PgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1
cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+
CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBs
YXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9J
dGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVj
dEd1aWQ+e0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN308L1Byb2plY3RHdWlk
PgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0
LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Cisg
ICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgor
ICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3Jt
VG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFBy
b3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5
cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5N
dWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRm
b3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9
IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9D
b25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVy
U2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAg
IDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAg
ICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRv
b2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBv
cnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8
SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4K
KyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQ
cm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJv
cHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxh
dGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8
L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Cisg
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRm
b3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0
eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2Fs
QXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJl
bD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilc
TWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygn
JChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExh
YmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3Bl
cnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxf
UHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAg
ICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENv
bmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKXRlbXBcJChQcm9q
ZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRp
b25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnRE
aXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0
eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNv
bHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8
SW50RGlyPiQoT3V0RGlyKXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdl
dE5hbWU+Z3Rlc3RkPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0
eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXx4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxh
dGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERpcil0
ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0PC9UYXJn
ZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8VGFy
Z2V0TmFtZT5ndGVzdGQ8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3Bl
cnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3Q8L1RhcmdldE5hbWU+CisgIDwvUHJv
cGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+Cisg
ICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8UHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtfREVCVUc7X0xJQjslKFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8
TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1l
Q2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50
aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFBy
ZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJu
aW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZv
cm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAg
PC9DbENvbXBpbGU+CisgICAgPExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJ
dGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+
RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5X
SU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+
RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJy
YXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGls
ZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZl
bD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlBy
b2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29t
cGlsZT4KKyAgICA8TGliIC8+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZp
bml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGli
cmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhl
YWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxl
dmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3Jh
bURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxl
PgorICAgIDxMaWIgLz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRp
b25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5N
dWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4K
KyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwv
V2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFi
YXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAg
IDxMaWIgLz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXGd0ZXN0LWFsbC5jYyI+CisgICAgICA8QWRkaXRp
b25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRp
b25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xD
b21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1Bh
dGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRl
bnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3Zj
LzIwMTAvZ3Rlc3QudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2
Yy8yMDEwL2d0ZXN0LnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWVkZWZmMjMwNmUxZmFj
OTNlNzdjNTUzZjA1NmI3MGZkMmE2ODU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDE4
IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3Qg
VG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2Rl
dmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVk
ZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1
LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVu
c2lvbnM+Y3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+
CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAg
ICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJG
Qn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5s
O2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8
SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXGd0ZXN0LWFsbC5j
YyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxl
PgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFp
bi1tZC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X21h
aW4tbWQudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDc3Mzg5NWI3MDIzZGU4NDc0MGQ2MmJiYTYzZWM5
MDBmNzRjOTI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2
Yy8yMDEwL2d0ZXN0X21haW4tbWQudmN4cHJvagpAQCAtMCwwICsxLDE1NCBAQAor77u/PD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRz
PSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3Nv
ZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9q
ZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJE
ZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4K
KyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJh
dGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAg
ICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3Jt
Png2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVj
dENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJh
dGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0
Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJh
dGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNl
PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Q
cm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExh
YmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3
LUY2OEVEOTg2MjAzM308L1Byb2plY3RHdWlkPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5
d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRz
UGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
IiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xp
YnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9D
aGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+
CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0
aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlv
blR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8
UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3Vw
PgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1
cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFj
dGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEw
MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIg
TGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJy
YXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hh
cmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0Pgor
ICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxN
aWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNl
dHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9w
ZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJS
b290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9Ikxv
Y2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCci
IExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhp
c3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMn
KSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8
SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0
PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENv
bmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9y
dEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBv
cnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2Vy
LnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4k
KFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4K
KyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+
CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTku
MTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29s
dXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJ
bnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+
JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9u
KVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50
RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE91dERpcj4k
KFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24p
XDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+
CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfbWFpbmQ8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlH
cm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNv
bHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8
SW50RGlyPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1l
Pmd0ZXN0X21haW48L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X21haW5kPC9UYXJnZXROYW1lPgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0
X21haW48L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9u
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9P
cHRpbWl6YXRpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklB
RElDX01BWD0xMDtfREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJl
YnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2lj
UnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdE
TEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9Q
cmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2
ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4u
LlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgor
ICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPENs
Q29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAg
ICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJV
RztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50
aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwv
UnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNv
bXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4K
KyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZv
cm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4u
XGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGliIC8+CisgIDwv
SXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENs
Q29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNf
TUFYPTEwO05ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9S
dW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29t
cGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgor
ICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9y
bWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5c
aW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWIgLz4KKyAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPENsQ29t
cGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFY
PTEwO05ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50
aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGls
ZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAg
ICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0
aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5j
bHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWIgLz4KKyAgPC9JdGVt
RGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cLi5cc3JjXGd0ZXN0X21haW4uY2MiPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVt
R3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iZ3Rl
c3QtbWQudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57YzhmNmMxNzItNTZmMi00ZTc2LWI1ZmEt
YzNiNDIzYjMxYmU4fTwvUHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRl
bUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNw
cC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgor
ICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9tYWlu
LW1kLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9n
dGVzdF9tYWluLW1kLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjZjNzczY2NiMTc3NmE1
OGQ2ZjRmZDY1YTE2Y2I1MGY0MjJkMTU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X21haW4tbWQudmN4cHJvai5maWx0ZXJzCkBAIC0w
LDAgKzEsMTggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8
UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29m
dC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRl
ciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzcz
N0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAg
ICA8RXh0ZW5zaW9ucz5jcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0
ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxl
cyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1
RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4
eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3Jv
dXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rl
c3RfbWFpbi5jYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwv
Q2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAv
Z3Rlc3RfbWFpbi52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0
ZXN0X21haW4udmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZmIyNTg5N2M4YjFjMmRiYjNjZjZjMTNlOWI0
MTkzZmM5YWUwNTBiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
bXN2Yy8yMDEwL2d0ZXN0X21haW4udmN4cHJvagpAQCAtMCwwICsxLDE2MiBAQAor77u/PD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRz
PSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3Nv
ZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9q
ZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJE
ZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4K
KyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJh
dGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAg
ICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3Jt
Png2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVj
dENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJh
dGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0
Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJh
dGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNl
PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Q
cm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExh
YmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3
LUY2OEVEOTg2MjAzMn08L1Byb2plY3RHdWlkPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5
d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRz
UGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
IiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xp
YnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9D
aGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+
CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0
aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlv
blR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8
UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3Vw
PgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1
cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFj
dGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEw
MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIg
TGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJy
YXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hh
cmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0Pgor
ICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxN
aWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNl
dHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9w
ZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJS
b290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9Ikxv
Y2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCci
IExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhp
c3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMn
KSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8
SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0
PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENv
bmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9y
dEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBv
cnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2Vy
LnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4k
KFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4K
KyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+
CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTku
MTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29s
dXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJ
bnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPiQoT3V0RGlyKXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPE91dERp
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3Vy
YXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpdGVtcFwkKFByb2plY3RO
YW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAg
IDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25m
aWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKXRlbXBcJChQcm9qZWN0
TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfbWFpbmQ8L1RhcmdldE5hbWU+
CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxPdXREaXI+JChT
b2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8
L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnRE
aXI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfbWFpbjwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0
eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfbWFpbmQ8
L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Cisg
ICAgPFRhcmdldE5hbWU+Z3Rlc3RfbWFpbjwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3Vw
PgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRp
bWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVi
dWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5h
YmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5
Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5M
ZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRB
bmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGls
ZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSlk
LmxpYjwvT3V0cHV0RmlsZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgor
ICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0
aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtfREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmlu
aXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QmFzaWNSdW50aW1lQ2hl
Y2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1l
TGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNv
bXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5n
TGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1h
dD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9D
bENvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVj
dE5hbWUpZC5saWI8L091dHB1dEZpbGU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25H
cm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAg
IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztf
TElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4K
KyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAg
ICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAg
ICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAg
ICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERp
cikkKFByb2plY3ROYW1lKS5saWI8L091dHB1dEZpbGU+CisgICAgPC9MaWI+CisgIDwvSXRlbURl
ZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxDbENvbXBpbGU+
CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtO
REVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJh
cnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVy
PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1h
dD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5c
Li47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+
JChPdXREaXIpJChQcm9qZWN0TmFtZSkubGliPC9PdXRwdXRGaWxlPgorICAgIDwvTGliPgorICA8
L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlwuLlxzcmNcZ3Rlc3RfbWFpbi5jYyI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3x4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICA8
L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRl
PSJndGVzdC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjOGY2YzE3Mi01NmYyLTRlNzYtYjVm
YS1jM2I0MjNiMzFiZTd9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9J
dGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQu
Q3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+
CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X21h
aW4udmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0
ZXN0X21haW4udmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyNmM3NzNjY2IxNzc2YTU4ZDZm
NGZkNjVhMTZjYjUwZjQyMmQxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwx
OCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0
IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9k
ZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1
ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdB
NS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRl
bnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25z
PgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAg
ICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVC
RkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lu
bDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAg
PEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xndGVzdF9tYWlu
LmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBp
bGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9w
cm9kX3Rlc3QtbWQudmN4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9n
dGVzdF9wcm9kX3Rlc3QtbWQudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzBlNWRjZTQxMDYyM2MxNWI2
OGZlYTcxOGVkOTRjNDU3ZjA3MGY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qCkBAIC0wLDAgKzEs
MTk5IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2pl
Y3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6
Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVt
R3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1
cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVn
PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8
L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRl
PSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+
CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0
aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4K
KyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxh
dGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAg
PFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25m
aWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9Q
bGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAg
PFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57MjQ4NDg1
NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdv
cmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJv
amVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Cisg
IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJh
dGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJT
ZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9Q
bGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExh
YmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248
L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0
ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwv
UHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4K
KyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgor
ICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3Jt
VG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFBy
b3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBl
PkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRp
Qnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1U
b29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1Rhcmdl
dHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4
dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExh
YmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3Rz
KCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIg
TGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1w
b3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIk
KFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRp
dGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVz
ZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdy
b3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9y
dCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIu
cHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQo
UGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgor
ICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgor
ICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9z
b2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0
Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJN
YWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEw
LjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKFNvbHV0aW9u
RGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGly
PgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxM
aW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVu
dGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0
JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikk
KFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAg
ICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxMaW5r
SW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVu
dGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4
NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9w
ZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBs
YXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIp
JChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfcHJvZF90ZXN0
PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAg
ICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29u
ZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERpcikkKFByb2plY3ROYW1l
KVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9wcm9kX3Rlc3Q8L1RhcmdldE5hbWU+
CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxUYXJnZXROYW1l
Pmd0ZXN0X3Byb2RfdGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJv
cGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9wcm9kX3Rlc3Q8L1RhcmdldE5h
bWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxD
bENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Cisg
ICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtfREVC
VUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmlu
aXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAg
ICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVj
a3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1l
TGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVy
PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1h
dD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5c
Li47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURl
YnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFBy
b2dyYW1EYXRhYmFzZUZpbGU+JChPdXREaXIpZ3Rlc3RfcHJvZF90ZXN0LnBkYjwvUHJvZ3JhbURh
dGFiYXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAg
PFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+Cisg
IDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8Q2xD
b21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAg
ICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVH
O19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNS
dW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RM
TDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21w
aWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Cisg
ICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxp
bmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8
R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4K
KyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKWd0ZXN0X3Byb2RfdGVzdC5wZGI8
L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3Rl
bT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0
aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxp
YnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGls
ZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2
ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFt
RGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+
CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVy
YXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVt
PgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+Cisg
ICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAg
ICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+
CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAg
IDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklB
RElDX01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1By
ZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFk
ZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJl
Y29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVs
PgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0lu
Zm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5c
Li5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAg
ICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRp
b24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxPcHRpbWl6
ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPEVuYWJsZUNPTURB
VEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICA8L0xpbms+CisgIDwvSXRl
bURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXC4uXHRlc3RcZ3Rlc3RfcHJvZF90ZXN0LmNjIj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
KTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVy
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
KTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2
NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RccHJvZHVjdGlvbi5jYyI+CisgICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJl
Y29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3xXaW4zMiciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVj
b21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJl
Y29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFBy
ZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgPC9DbENv
bXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cLi5cdGVzdFxwcm9kdWN0aW9uLmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRl
bUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Imd0ZXN0X21haW4tbWQudmN4
cHJvaiI+CisgICAgICA8UHJvamVjdD57M2FmNTRjOGEtMTBiZi00MzMyLTkxNDctZjY4ZWQ5ODYy
MDMzfTwvUHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgor
ICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRz
IiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9y
dEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9wcm9kX3Rlc3QtbWQu
dmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0
X3Byb2RfdGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWMzNjczMTBhZWU2MjZm
NGVjOWMxZGZmZGE3MzNhNTBmMmE1YzVlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9wcm9kX3Rlc3QtbWQudmN4cHJvai5maWx0ZXJz
CkBAIC0wLDAgKzEsMjYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04
Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1p
Y3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAg
PEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+
ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+
CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNt
eDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRl
ciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4
RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7
aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9J
dGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx0
ZXN0XGd0ZXN0X3Byb2RfdGVzdC5jYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmls
dGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVz
dFxwcm9kdWN0aW9uLmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxwcm9kdWN0aW9uLmgiPgorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+Cis8
L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC52Y3hwcm9qIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC52Y3hwcm9qCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ0MmUxMzUxMWRmMjhhNTMyMjI0MjA1N2U3NTQxZjk2NTY3MGRkYTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJv
ZF90ZXN0LnZjeHByb2oKQEAgLTAsMCArMSwxOTEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xz
VmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9w
ZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRp
b25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgor
ICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZv
cm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFBy
b2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJh
dGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3Jt
PgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9u
IEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwv
Q29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Q
cm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0i
UmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlv
bj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3Vy
YXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+
CisgICAgPFByb2plY3RHdWlkPnsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9
PC9Qcm9qZWN0R3VpZD4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJv
cGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29m
dC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZp
Z3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJh
dGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAg
ICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdy
b3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25m
aWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJh
Y3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYx
MDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNh
dGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0No
YXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4K
KyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9u
Ij4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBl
PgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRm
b3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAg
PEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+
CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdy
b3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1w
b3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+
CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRz
Ij4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRh
UGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlBy
b3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0i
TG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
IExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhp
c3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMn
KSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8
UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+Cisg
ICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9u
PgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0p
LSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpdGVtcFwk
KFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9MaW5r
SW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4K
KyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0p
LSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE91dERpcil0ZW1w
XCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8
L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3Jl
bWVudGFsPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE91dERp
cj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRp
b24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8
L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE91
dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3Vy
YXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1l
KVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+
CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXph
dGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFY
PTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVp
bGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVu
dGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1
bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRI
ZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAg
PERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVk
ZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVy
YXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAg
ICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF9wcm9kX3Rlc3QucGRiPC9Qcm9n
cmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Cisg
ICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGlu
az4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAg
IDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+
CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtf
REVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRl
ZmluaXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9C
YXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERl
YnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNv
bXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4K
KyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZv
cm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4u
XGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAg
IDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9u
PgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChPdXREaXIpZ3Rlc3RfcHJvZF90ZXN0LnBk
YjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lz
dGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmlu
aXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmlu
aXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1l
TGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxl
ZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZl
bDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1E
YXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4K
KyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJh
dGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+
CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAg
ICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAg
ICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4K
KyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAg
PENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFE
SUNfTUFYPTEwO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRl
ZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21w
aWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Cisg
ICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxp
bmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8
R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4K
KyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPE9wdGltaXplUmVm
ZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8RW5hYmxlQ09NREFURm9s
ZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVm
aW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Li5cdGVzdFxndGVzdF9wcm9kX3Rlc3QuY2MiPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4K
KyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAg
ICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
PgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+
CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxwcm9kdWN0aW9uLmNjIj4KKyAgICAgIDxBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRp
b25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21w
aWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21w
aWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29t
cGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8L0NsQ29tcGls
ZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24uaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3Jv
dXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iZ3Rlc3RfbWFpbi52Y3hwcm9qIj4K
KyAgICAgIDxQcm9qZWN0PnszYWY1NGM4YS0xMGJmLTQzMzItOTE0Ny1mNjhlZDk4NjIwMzJ9PC9Q
cm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBv
cnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+Cisg
IDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+
Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC52Y3hwcm9qLmZp
bHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0
LnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzM2NzMxMGFlZTYyNmY0ZWM5YzFkZmZkYTcz
M2E1MGYyYTVjNWVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
bXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwyNiBA
QAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRv
b2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZl
bG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9
IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00
Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNp
b25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgor
ICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAg
IDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9
PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtp
bmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0
ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfcHJvZF90
ZXN0LmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENv
bXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24uY2Mi
PgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4K
KyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlwuLlx0ZXN0XHByb2R1Y3Rpb24uaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9tc3ZjLzIwMTAvZ3Rlc3RfdW5pdHRlc3QtbWQudmN4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC1tZC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkz
YjBkYzRlMWE0ZTAzYWU4ZDYzZWZmMzZjNjdiZmU4MjM2NWYxODgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfdW5pdHRlc3QtbWQudmN4
cHJvagpAQCAtMCwwICsxLDE4OCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
dXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0
LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxk
LzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAg
IDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29u
ZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwv
UGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZp
Z3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVn
PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Q
cm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0i
UmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0
aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25m
aWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2
NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAg
PFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAg
PC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJv
amVjdEd1aWQ+ezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn08L1Byb2plY3RH
dWlkPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3Vw
PgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZh
dWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+
CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4K
KyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9y
bVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQ
cm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25U
eXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11
bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZv
cm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0i
Q29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25m
aWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0
PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3Bl
cnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxD
b25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENo
YXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0
PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFBy
b2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9y
dEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJ
bXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVj
dD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBD
b25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3Jt
KS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBv
cnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJ
bXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51
c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNw
cC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIg
Lz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVl
dHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4k
KFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilc
TWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERh
dGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlBy
b3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0i
TG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdy
b3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2pl
Y3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPE91
dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdp
bjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1
cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8
L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+Cisg
ICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8T3V0RGlyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
PiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlv
bilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0lu
dERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Cisg
ICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgPC9Qcm9wZXJ0
eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNv
bHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8
SW50RGlyPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1l
Pmd0ZXN0X3VuaXR0ZXN0PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9w
ZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXx4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQo
UGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERp
cikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF91bml0dGVz
dDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Cisg
ICAgPFRhcmdldE5hbWU+Z3Rlc3RfdW5pdHRlc3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlH
cm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfdW5pdHRl
c3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRp
bWl6YXRpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElD
X01BWD0xMDtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxS
ZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNp
Y1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVn
RExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNv
bXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4K
KyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZv
cm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4u
XGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAg
IDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9u
PgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChPdXREaXIpZ3Rlc3RfdW5pdHRlc3QucGRi
PC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0
ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAg
IDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
PgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6
YXRpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01B
WD0xMDtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hl
Y2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJl
YWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5V
c2U8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5p
bmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwv
RGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGlu
az4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0lu
Zm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChPdXREaXIpZ3Rlc3RfdW5p
dHRlc3QucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xl
PC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJ
dGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAg
PFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2Fybmlu
Z0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3Jt
YXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwv
Q2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50
cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8
L1N1YlN5c3RlbT4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZl
cmVuY2VzPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9s
ZGluZz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+Cisg
ICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4
NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJ
TjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5N
dWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
cj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dh
cm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFz
ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
KTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8
TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1
Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAg
ICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxF
bmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgPC9MaW5r
PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XGd0ZXN0X3VuaXR0ZXN0LmNjIj4KKyAgICAgIDxPcHRpbWl6
YXRpb24gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPk1pblNwYWNlPC9PcHRpbWl6YXRpb24+CisgICAgICA8T3B0aW1pemF0aW9uIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+TWluU3Bh
Y2U8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4u
LjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4u
Oy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3MgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkRlZmF1bHQ8L0Jh
c2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3MgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5EZWZhdWx0PC9CYXNp
Y1J1bnRpbWVDaGVja3M+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgICAgPC9QcmVj
b21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgICAgPC9QcmVjb21w
aWxlZEhlYWRlcj4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0IENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5Qcm9ncmFtRGF0YWJh
c2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1h
dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJl
Y29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFBy
ZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgPC9DbENv
bXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJl
bmNlIEluY2x1ZGU9Imd0ZXN0X21haW4tbWQudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57M2Fm
NTRjOGEtMTBiZi00MzMyLTkxNDctZjY4ZWQ5ODYyMDMzfTwvUHJvamVjdD4KKyAgICA8L1Byb2pl
Y3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJn
ZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9
IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfdW5pdHRlc3QtbWQudmN4cHJvai5maWx0ZXJz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA0N2RhZTUxM2U4NjAxNTNhNWNlYzJmNDViNDhjZGJjNzVmOWI2Y2UKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3Rf
dW5pdHRlc3QtbWQudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTggQEAKK++7vzw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQu
MCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQv
MjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMi
PgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJE
NzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjeHg7
ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4K
KyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRp
Zmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRp
Zmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5z
aW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XGd0ZXN0X3VuaXR0ZXN0LmNjIj4KKyAgICAg
IDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRl
bUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC52Y3hw
cm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0LnZj
eHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWM2YWJkZTdkYTE3ZTI5ZWQyNDc2ZjcwYzY5NDE1YWU5NjhmMjFm
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9n
dGVzdF91bml0dGVzdC52Y3hwcm9qCkBAIC0wLDAgKzEsMTgwIEBACivvu788P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxk
IiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20v
ZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25m
aWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdp
bjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAg
PFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgor
ICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENv
bmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9Q
bGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmln
dXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJl
bGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgor
ICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIElu
Y2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZp
Z3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RD
b25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikds
b2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBF
RDQ4MUExfTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgor
ICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxN
aWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVs
PSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0Nv
bmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJT
ZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJv
cGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAg
ICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAg
IDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9v
bHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3Bl
cnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+
QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlC
eXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRv
b2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmln
dXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0
aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAg
IDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3Jv
dXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnBy
b3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9J
bXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Cisg
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRm
b3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0
eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2Fs
QXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExh
YmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3Rz
KCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIg
TGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1w
b3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChV
c2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRp
b249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2Vy
LnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91
cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdy
b3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxl
VmVyc2lvbj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBs
YXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoT3V0RGly
KXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1
ZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9MaW5rSW5jcmVt
ZW50YWw+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBs
YXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChPdXRE
aXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
PmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+ZmFsc2U8L0xp
bmtJbmNyZW1lbnRhbD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAg
IDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25m
aWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKXRlbXBcJChQcm9qZWN0
TmFtZSlcPC9JbnREaXI+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgor
ICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChD
b25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKXRlbXBcJChQcm9q
ZWN0TmFtZSlcPC9JbnREaXI+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9u
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9P
cHRpbWl6YXRpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklB
RElDX01BWD0xMDtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1By
ZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmlt
YWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9C
YXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERl
YnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNv
bXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4K
KyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZv
cm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4u
XGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAg
IDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9u
PgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChPdXREaXIpZ3Rlc3RfdW5pdHRlc3QucGRi
PC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0
ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAg
IDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
PgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6
YXRpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01B
WD0xMDtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hl
Y2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJl
YWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8
L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdM
ZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVi
dWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
Pi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4K
KyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9y
bWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChPdXREaXIpZ3Rlc3RfdW5pdHRl
c3QucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9T
dWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1
bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNv
bXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVs
PkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJv
Z3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21w
aWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9H
ZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5
c3RlbT4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2Vz
PgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4K
KyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9M
aW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4K
KyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19W
QVJJQURJQ19NQVg9MTA7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMp
PC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRo
cmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1By
ZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZl
bD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4u
XC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAg
ICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0
aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8T3B0aW1p
emVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxFbmFibGVDT01E
QVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgPC9MaW5rPgorICA8L0l0
ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlwuLlx0ZXN0XGd0ZXN0X3VuaXR0ZXN0LmNjIj4KKyAgICAgIDxPcHRpbWl6YXRpb24gQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPk1p
blNwYWNlPC9PcHRpbWl6YXRpb24+CisgICAgICA8T3B0aW1pemF0aW9uIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+TWluU3BhY2U8L09wdGlt
aXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLjsuLlxpbmNs
dWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1
ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3MgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkRlZmF1bHQ8L0Jhc2ljUnVudGlt
ZUNoZWNrcz4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3MgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5EZWZhdWx0PC9CYXNpY1J1bnRpbWVD
aGVja3M+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgICAgPC9QcmVjb21waWxlZEhl
YWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRl
cj4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPlByb2dyYW1E
YXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fFdpbjMyJyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXx4NjQnIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgPC9DbENvbXBpbGU+Cisg
IDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1
ZGU9Imd0ZXN0X21haW4udmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57M2FmNTRjOGEtMTBiZi00
MzMyLTkxNDctZjY4ZWQ5ODYyMDMyfTwvUHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+
CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWlj
cm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRh
cmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9n
dGVzdF91bml0dGVzdC52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9t
c3ZjLzIwMTAvZ3Rlc3RfdW5pdHRlc3QudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0N2Rh
ZTUxM2U4NjAxNTNhNWNlYzJmNDViNDhjZGJjNzVmOWI2Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfdW5pdHRlc3QudmN4cHJvai5m
aWx0ZXJzCkBAIC0wLDAgKzEsMTggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hl
bWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+
CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50
aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50
aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDth
c207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9
IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00
YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNp
b25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4K
KyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlwuLlx0ZXN0XGd0ZXN0X3VuaXR0ZXN0LmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0Pgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21z
dmMvZ3Rlc3QtbWQudmN4cHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTAwNzhl
NGFhYjY5MTcxMmExMDNjMmViNjNlZTdkYWMxZWY0OTliZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0
ZXN0LW1kLnZjeHByb2oKKysrIC9kZXYvbnVsbApAQCAtMSwzNjAgKzAsMCBAQAot77u/PD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRz
PSJCdWlsZCIgVG9vbHNWZXJzaW9uPSIxNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9z
b2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJv
amVjdENvbmZpZ3VyYXRpb25zIj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0i
RGVidWdTdWZmaXh8V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWdTdWZmaXg8L0Nv
bmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJv
amVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRl
YnVnU3VmZml4fHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Z1N1ZmZpeDwvQ29uZmln
dXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENv
bmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnX1dp
bkNhaXJvfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnX1dpbkNhaXJvPC9Db25m
aWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2pl
Y3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1
Z19XaW5DYWlyb3x4NjQiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWdfV2luQ2Fpcm88L0Nv
bmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2pl
Y3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1
Z3xXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KLSAg
ICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlv
bj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KLSAgICAg
IDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2
NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENv
bmZpZ3VyYXRpb24gSW5jbHVkZT0iUHJvZHVjdGlvbnxXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJh
dGlvbj5Qcm9kdWN0aW9uPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9Q
bGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmln
dXJhdGlvbiBJbmNsdWRlPSJQcm9kdWN0aW9ufHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5Q
cm9kdWN0aW9uPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+
Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24g
SW5jbHVkZT0iUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5S
ZWxlYXNlX1dpbkNhaXJvPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9Q
bGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmln
dXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlX1dpbkNhaXJvfHg2NCI+Ci0gICAgICA8Q29uZmlndXJh
dGlvbj5SZWxlYXNlX1dpbkNhaXJvPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2
NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENv
bmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlv
bj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9y
bT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlv
biBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9D
b25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9q
ZWN0Q29uZmlndXJhdGlvbj4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVs
PSJHbG9iYWxzIj4KLSAgICA8UHJvamVjdEd1aWQ+e0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMz
QjQyM0IzMUJFOH08L1Byb2plY3RHdWlkPgotICAgIDxSb290TmFtZXNwYWNlPmd0ZXN0LW1kPC9S
b290TmFtZXNwYWNlPgotICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KLSAgICA8V2lu
ZG93c1RhcmdldFBsYXRmb3JtVmVyc2lvbj44LjE8L1dpbmRvd3NUYXJnZXRQbGF0Zm9ybVZlcnNp
b24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1Bh
dGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIg
TGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJy
YXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hh
cmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0Pgot
ICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlv
biI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25U
eXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBs
YXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4K
LSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAg
IDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAg
ICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRv
b2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9w
ZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZV9XaW5DYWlyb3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3Vy
YXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0
ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQw
PC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdp
bjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0
aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0
ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29s
c2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIiBMYWJlbD0iQ29u
ZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZp
Z3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+
Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVy
dHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8
Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAg
PENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29s
c2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVy
dHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3Rh
dGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5
dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9v
bHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyIgTGFi
ZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5
PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFj
dGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8
L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyIgTGFiZWw9IkNvbmZpZ3Vy
YXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0
aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAg
IDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3Jv
dXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAg
PENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAg
IDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9v
bHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3Bl
cnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z1N1ZmZpeHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25U
eXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+
TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0
Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZD
VGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+Ci0gIDxJbXBvcnRHcm91cCBMYWJl
bD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMy
JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJl
eGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0
PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8
L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0g
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRm
b3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2
c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5D
YWlyb3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0
PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENv
bmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBv
cnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9w
cyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIiBMYWJlbD0i
UHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWlj
cm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChV
c2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVs
PSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0
X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3Jv
dXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1Byb2R1Y3Rpb258V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJ
bXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51
c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNw
cC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIg
Lz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9w
c1xjb21tb24ucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyIg
TGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlz
dHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycp
IiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIk
KFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0lt
cG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAg
PEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3Jt
IiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3By
b3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFi
ZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMo
JyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBM
YWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdl
YktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9y
dEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+
Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxh
dGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNy
b3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBs
YXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29s
c1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2lu
Q2Fpcm98eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9
IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29u
ZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9y
dCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3Bz
IiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciIExhYmVsPSJQcm9w
ZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJS
b290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9Ikxv
Y2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGli
cmFyaWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2pl
Y3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xkZWJ1Z3N1ZmZpeC5wcm9wcyIg
Lz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyIgTGFiZWw9IlByb3BlcnR5
U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxB
cHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJp
ZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0i
JChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGRlYnVnc3VmZml4LnByb3BzIiAvPgot
ICA8L0ltcG9ydEdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4K
LSAgPFByb3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4x
PC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChD
b25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGly
PgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgot
ICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z1N1ZmZpeHxXaW4zMiciPiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXRE
aXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERp
cj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj4kKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0g
ICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1By
b2R1Y3Rpb258eDY0JyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmd0ZXN0JChEZWJ1Z1N1ZmZp
eCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1Rh
cmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+Z3Rlc3QkKERlYnVnU3VmZml4
KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+Z3Rlc3QkKERlYnVnU3Vm
Zml4KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj5ndGVzdCQoRGVidWdTdWZm
aXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj5ndGVzdCQoRGVidWdTdWZmaXgp
PC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJn
ZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4K
LSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFt
ZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5h
bWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5h
bWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1l
PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KLSAgICA8Q2xD
b21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAg
ICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVj
dERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVc
Rm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0
ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3Jl
OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UHJlY29tcGls
ZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPEJhc2ljUnVudGlt
ZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgPC9DbENv
bXBpbGU+Ci0gICAgPExpYj4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKWd0ZXN0JChEZWJ1
Z1N1ZmZpeCkubGliPC9PdXRwdXRGaWxlPgotICAgIDwvTGliPgotICA8L0l0ZW1EZWZpbml0aW9u
R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxP
cHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVkZTsk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJz
OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1By
ZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAg
PC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFz
dENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWI+
Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilndGVzdCQoRGVidWdTdWZmaXgpLmxpYjwvT3V0
cHV0RmlsZT4KLSAgICA8L0xpYj4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURl
ZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6
YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVkZTskKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nl
c3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8
L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVj
b21waWxlZEhlYWRlcj4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNr
czwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWI+Ci0gICAg
ICA8T3V0cHV0RmlsZT4kKE91dERpcilndGVzdC5saWI8L091dHB1dEZpbGU+Ci0gICAgPC9MaWI+
Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQn
Ij4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1p
emF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGly
KS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNs
dWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGlu
Y2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEph
dmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjsl
KFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAg
ICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAg
ICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAg
PEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+
Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYj4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGly
KWd0ZXN0LmxpYjwvT3V0cHV0RmlsZT4KLSAgICA8L0xpYj4KLSAgPC9JdGVtRGVmaW5pdGlvbkdy
b3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAg
ICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5j
bHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdI
ZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAg
ICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgot
ICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5h
YmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgIDwvQ2xDb21waWxlPgotICAg
IDxMaWI+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilndGVzdCQoRGVidWdTdWZmaXgpLmxp
YjwvT3V0cHV0RmlsZT4KLSAgICA8L0xpYj4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8
SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnU3VmZml4fHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1p
emF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJl
Y29tcGlsZWRIZWFkZXI+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVj
a3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliPgotICAg
ICAgPE91dHB1dEZpbGU+JChPdXREaXIpZ3Rlc3QkKERlYnVnU3VmZml4KS5saWI8L091dHB1dEZp
bGU+Ci0gICAgPC9MaWI+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0
aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVkZTskKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxQcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliIC8+Ci0gIDwvSXRlbURl
ZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxDbENvbXBpbGU+
Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQ
cm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxw
cml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlw
dENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGls
ZWRIZWFkZXI+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nl
c3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBp
bGU+Ci0gICAgPExpYiAvPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5p
dGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZV9XaW5DYWlyb3xXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1
ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVh
ZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAg
IDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwv
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYiAvPgot
ICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQn
Ij4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVk
ZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+
Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRp
b25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRp
b25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdy
b3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAg
ICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVj
dERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVc
Rm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0
ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3Jl
OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVh
ZGVyPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgot
ICAgIDxMaWIgLz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25H
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVkZTskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliIC8+Ci0gIDwvSXRlbURlZmlu
aXRpb25Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNy
Y1xndGVzdC1kZWF0aC10ZXN0LmNjIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3Jj
XGd0ZXN0LWZpbGVwYXRoLmNjIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0
ZXN0LXBvcnQuY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QtdGVz
dC1wYXJ0LmNjIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LXR5cGVk
LXRlc3QuY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QuY2MiIC8+
Ci0gIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmgiIC8+
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0LWRlYXRoLXRl
c3QuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJu
YWxcZ3Rlc3QtZmlsZXBhdGguaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHNyY1xn
dGVzdC1pbnRlcm5hbC1pbmwuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1
ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rlc3QtaW50ZXJuYWwuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtbWVzc2FnZS5oIiAvPgotICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1wb3J0LmgiIC8+Ci0g
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0LXNwaS5oIiAvPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1z
dHJpbmcuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rl
c3QuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3Rf
cHJlZF9pbXBsLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0
XGd0ZXN0X3Byb2QuaCIgLz4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJbXBvcnQgUHJvamVjdD0iJChW
Q1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+Ci0gIDxJbXBvcnRHcm91cCBM
YWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0LW1kLnZjeHByb2ou
ZmlsdGVycyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4cHJvai5m
aWx0ZXJzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzdkMWM5YjRkY2E2YTE0ZWM3
MDZiYzRhOGMxMzFmNmI1YzgzODAwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4cHJv
ai5maWx0ZXJzCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAot77u/PD94bWwgdmVyc2lv
bj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4
bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAz
Ij4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+Ci0g
ICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJB
MkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KLSAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7
b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgotICAgIDwvRmlsdGVyPgotICAg
IDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVy
Pns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVy
PgotICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25z
PgotICAgIDwvRmlsdGVyPgotICA8L0l0ZW1Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC1kZWF0aC10ZXN0LmNjIj4KLSAgICAgIDxGaWx0
ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QtZmlsZXBhdGguY2MiPgotICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHNyY1xndGVzdC1wb3J0LmNjIj4KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9G
aWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNc
Z3Rlc3QtdGVzdC1wYXJ0LmNjIj4KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+
Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3Qt
dHlwZWQtdGVzdC5jYyI+Ci0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgotICAg
IDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LmNjIj4K
LSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0g
IDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmgiPgotICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtZGVhdGgtdGVzdC5oIj4K
LSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0g
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LWZp
bGVwYXRoLmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0Ns
SW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC1pbnRlcm5hbC1p
bmwuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNs
dWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxn
dGVzdC1pbnRlcm5hbC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0g
ICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0
XGd0ZXN0LW1lc3NhZ2UuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgot
ICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVz
dFxpbnRlcm5hbFxndGVzdC1wb3J0LmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0Zp
bHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1
ZGVcZ3Rlc3RcZ3Rlc3Qtc3BpLmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVc
Z3Rlc3RcaW50ZXJuYWxcZ3Rlc3Qtc3RyaW5nLmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmls
ZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmls
dGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVk
ZVxndGVzdFxndGVzdF9wcmVkX2ltcGwuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwv
RmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5j
bHVkZVxndGVzdFxndGVzdF9wcm9kLmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0Zp
bHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvcnVuX3Rlc3RzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvcnVuX3Rlc3RzLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlMTA4NDA1NmUyM2JkZDVjZmNmNDRmMDY3NmMx
ZDYyOGFlNjNkNzYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3J1bl90ZXN0cy5weQorKysgL2Rldi9udWxsCkBA
IC0xLDYwICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAw
OCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LSIiIlJ1bnMgdGhlIHNwZWNpZmllZCB0ZXN0cyBmb3IgR29vZ2xlIFRlc3QuCi0KLVRoaXMgc2Ny
aXB0IHJlcXVpcmVzIFB5dGhvbiAyLjMgb3IgaGlnaGVyLiAgVG8gbGVhcm4gdGhlIHVzYWdlLCBy
dW4gaXQKLXdpdGggLWguCi0iIiIKLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLVNDUklQVF9E
SVIgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pIG9yICcuJwotCi1zeXMucGF0aC5hcHBlbmQo
b3MucGF0aC5qb2luKFNDUklQVF9ESVIsICd0ZXN0JykpCi1pbXBvcnQgcnVuX3Rlc3RzX3V0aWwK
LQotCi1kZWYgX01haW4oKToKLSAgIiIiUnVucyBhbGwgdGVzdHMgZm9yIEdvb2dsZSBUZXN0LiIi
IgotCi0gIG9wdGlvbnMsIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoJ2d0ZXN0JykK
LSAgdGVzdF9ydW5uZXIgPSBydW5fdGVzdHNfdXRpbC5UZXN0UnVubmVyKHNjcmlwdF9kaXI9U0NS
SVBUX0RJUikKLSAgdGVzdHMgPSB0ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKGFyZ3MsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmNvbmZpZ3VyYXRpb25zLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5idWlsdF9jb25maWd1
cmF0aW9ucykKLSAgaWYgbm90IHRlc3RzOgotICAgIHN5cy5leGl0KDEpICAjIEluY29ycmVjdCBw
YXJhbWV0ZXJzIGdpdmVuLCBhYm9ydCBleGVjdXRpb24uCi0KLSAgc3lzLmV4aXQodGVzdF9ydW5u
ZXIuUnVuVGVzdHModGVzdHNbMF0sIHRlc3RzWzFdKSkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFp
bl9fJzoKLSAgX01haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ft
cGxlcy9wcmltZV90YWJsZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvcHJp
bWVfdGFibGVzLmgKaW5kZXggOTJjZTE2YTAxNDRkNTAyZmQwZTQ1YjczZjM3ZDMyYmJlZGYxYzNm
My4uNTIzYzUwYjlhZmIxYTA5MTkxNjgwOTRkNzFmZGYzNzZiNjRhZjZiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9wcmltZV90YWJsZXMuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3ByaW1lX3RhYmxlcy5oCkBAIC0yNiw5ICsyNiw4
IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwot
Ly8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8gQXV0aG9yOiB2bGFk
bEBnb29nbGUuY29tIChWbGFkIExvc2V2KQorCisKIAogLy8gVGhpcyBwcm92aWRlcyBpbnRlcmZh
Y2UgUHJpbWVUYWJsZSB0aGF0IGRldGVybWluZXMgd2hldGhlciBhIG51bWJlciBpcyBhCiAvLyBw
cmltZSBhbmQgZGV0ZXJtaW5lcyBhIG5leHQgcHJpbWUgbnVtYmVyLiBUaGlzIGludGVyZmFjZSBp
cyB1c2VkCkBAIC0xMDMsMTEgKzEwMiwxNSBAQCBjbGFzcyBQcmVDYWxjdWxhdGVkUHJpbWVUYWJs
ZSA6IHB1YmxpYyBQcmltZVRhYmxlIHsKICAgICA6OnN0ZDo6ZmlsbChpc19wcmltZV8sIGlzX3By
aW1lXyArIGlzX3ByaW1lX3NpemVfLCB0cnVlKTsKICAgICBpc19wcmltZV9bMF0gPSBpc19wcmlt
ZV9bMV0gPSBmYWxzZTsKIAotICAgIGZvciAoaW50IGkgPSAyOyBpIDw9IG1heDsgaSsrKSB7Cisg
ICAgLy8gQ2hlY2tzIGV2ZXJ5IGNhbmRpZGF0ZSBmb3IgcHJpbWUgbnVtYmVyICh3ZSBrbm93IHRo
YXQgMiBpcyB0aGUgb25seSBldmVuCisgICAgLy8gcHJpbWUpLgorICAgIGZvciAoaW50IGkgPSAy
OyBpKmkgPD0gbWF4OyBpICs9IGklMisxKSB7CiAgICAgICBpZiAoIWlzX3ByaW1lX1tpXSkgY29u
dGludWU7CiAKICAgICAgIC8vIE1hcmtzIGFsbCBtdWx0aXBsZXMgb2YgaSAoZXhjZXB0IGkgaXRz
ZWxmKSBhcyBub24tcHJpbWUuCi0gICAgICBmb3IgKGludCBqID0gMippOyBqIDw9IG1heDsgaiAr
PSBpKSB7CisgICAgICAvLyBXZSBhcmUgc3RhcnRpbmcgaGVyZSBmcm9tIGktdGggbXVsdGlwbGll
ciwgYmVjYXVzZSBhbGwgc21hbGxlcgorICAgICAgLy8gY29tcGxleCBudW1iZXJzIHdlcmUgYWxy
ZWFkeSBtYXJrZWQuCisgICAgICBmb3IgKGludCBqID0gaSppOyBqIDw9IG1heDsgaiArPSBpKSB7
CiAgICAgICAgIGlzX3ByaW1lX1tqXSA9IGZhbHNlOwogICAgICAgfQogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMS5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMS5jYwppbmRleCBmMTcxZTI2MDlkMjUxMzIy
ODQ2MjFmYjYyY2YzYmE4NmUxZTY5OTI1Li4xM2NlYzFkMGZiZmFiZGFhZjFjNmM0MWIxYTg2YmMx
ZDA5MDg5ODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3Nh
bXBsZTEuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmNj
CkBAIC0yOCw4ICsyOCw2IEBACiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAvLyBBIHNhbXBsZSBwcm9ncmFt
IGRlbW9uc3RyYXRpbmcgdXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0v
LyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAKICNpbmNsdWRlICJzYW1w
bGUxLmgiCiAKQEAgLTU1LDcgKzUzLDcgQEAgYm9vbCBJc1ByaW1lKGludCBuKSB7CiAKICAgLy8g
VHJ5IHRvIGRpdmlkZSBuIGJ5IGV2ZXJ5IG9kZCBudW1iZXIgaSwgc3RhcnRpbmcgZnJvbSAzCiAg
IGZvciAoaW50IGkgPSAzOyA7IGkgKz0gMikgewotICAgIC8vIFdlIG9ubHkgaGF2ZSB0byB0cnkg
aSB1cCB0byB0aGUgc3F1cmUgcm9vdCBvZiBuCisgICAgLy8gV2Ugb25seSBoYXZlIHRvIHRyeSBp
IHVwIHRvIHRoZSBzcXVhcmUgcm9vdCBvZiBuCiAgICAgaWYgKGkgPiBuL2kpIGJyZWFrOwogCiAg
ICAgLy8gTm93LCB3ZSBoYXZlIGkgPD0gbi9pIDwgbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMS5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGUxLmgKaW5kZXggM2RmZWI5OGM0NTAzMDE0NWY5ZWExOGQ3OTUzMWM5MWM4
MWVlODQ5YS4uMmMzZTlmMDVmMWExMGE0NDI1Zjc3YjI4NzE2ZTgwNTk2ODIxOTYxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmgKQEAgLTI4LDggKzI4LDYgQEAK
IC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2lu
ZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbikKIAogI2lmbmRlZiBHVEVTVF9TQU1QTEVTX1NBTVBMRTFfSF8K
ICNkZWZpbmUgR1RFU1RfU0FNUExFU19TQU1QTEUxX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYwppbmRleCAzYWQ2ZmQ2NTM4
MjYxN2Y3ZDZiNDAxZjRkMWJkODNmYzg2ZWQ4NGZlLi43Y2U5NTUwZjg4M2FhMzQyZDI1YjA0ODU5
M2ZhYTk2Y2FiZDhlMWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1w
bGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nh
bXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MKQEAgLTI1LDggKzI1LDcgQEAKIC8vIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRs
QGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCisKIAogLy8gVGhpcyBzYW1wbGUgc2hvd3MgaG93IHRv
IHVzZSBHb29nbGUgVGVzdCBsaXN0ZW5lciBBUEkgdG8gaW1wbGVtZW50CiAvLyBhIHByaW1pdGl2
ZSBsZWFrIGNoZWNrZXIuCkBAIC0zNCwxOSArMzMsMTYgQEAKICNpbmNsdWRlIDxzdGRpby5oPgog
I2luY2x1ZGUgPHN0ZGxpYi5oPgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQorI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCiB1c2luZyA6OnRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVu
ZXI7CiB1c2luZyA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0OwogdXNpbmcgOjp0ZXN0aW5nOjpU
ZXN0OwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0Q2FzZTsKIHVzaW5nIDo6dGVzdGluZzo6VGVzdEV2
ZW50TGlzdGVuZXJzOwogdXNpbmcgOjp0ZXN0aW5nOjpUZXN0SW5mbzsKIHVzaW5nIDo6dGVzdGlu
Zzo6VGVzdFBhcnRSZXN1bHQ7CiB1c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OwogCiBuYW1lc3Bh
Y2UgewotCiAvLyBXZSB3aWxsIHRyYWNrIG1lbW9yeSB1c2VkIGJ5IHRoaXMgY2xhc3MuCiBjbGFz
cyBXYXRlciB7CiAgcHVibGljOgpAQCAtODksOCArODUsNyBAQCBjbGFzcyBMZWFrQ2hlY2tlciA6
IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKICAgICAvLyBZb3UgY2FuIGdlbmVyYXRl
IGEgZmFpbHVyZSBpbiBhbnkgZXZlbnQgaGFuZGxlciBleGNlcHQKICAgICAvLyBPblRlc3RQYXJ0
UmVzdWx0LiBKdXN0IHVzZSBhbiBhcHByb3ByaWF0ZSBHb29nbGUgVGVzdCBhc3NlcnRpb24gdG8g
ZG8KICAgICAvLyBpdC4KLSAgICBFWFBFQ1RfVFJVRShkaWZmZXJlbmNlIDw9IDApCi0gICAgICAg
IDw8ICJMZWFrZWQgIiA8PCBkaWZmZXJlbmNlIDw8ICIgdW5pdChzKSBvZiBXYXRlciEiOworICAg
IEVYUEVDVF9MRShkaWZmZXJlbmNlLCAwKSA8PCAiTGVha2VkICIgPDwgZGlmZmVyZW5jZSA8PCAi
IHVuaXQocykgb2YgV2F0ZXIhIjsKICAgfQogCiAgIGludCBpbml0aWFsbHlfYWxsb2NhdGVkXzsK
QEAgLTEwNyw3ICsxMDIsNiBAQCBURVNUKExpc3RlbmVyc1Rlc3QsIExlYWtzV2F0ZXIpIHsKICAg
V2F0ZXIqIHdhdGVyID0gbmV3IFdhdGVyOwogICBFWFBFQ1RfVFJVRSh3YXRlciAhPSBOVUxMKTsK
IH0KLQogfSAgLy8gbmFtZXNwYWNlCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxX3VuaXR0
ZXN0LmNjCmluZGV4IDAxZWI1NDYyZjgxYWQ1NGIzOGFjNWVlNjMzNzk3MmVhYTA0ZDdhZGUuLmNi
MDhiNjFhNTlhOWUxNmIzNjU3ODYxZjFjOTYwOTAwMWQyMDk2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QuY2MKQEAgLTI4LDkg
KzI4LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJh
dGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQogCiAvLyBUaGlzIHNhbXBsZSBzaG93cyBo
b3cgdG8gd3JpdGUgYSBzaW1wbGUgdW5pdCB0ZXN0IGZvciBhIGZ1bmN0aW9uLAogLy8gdXNpbmcg
R29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KQEAgLTQ1LDggKzQyLDggQEAKIAogI2luY2x1
ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgInNhbXBsZTEuaCIKLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgotCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKK25hbWVzcGFjZSB7CiAKIC8vIFN0ZXAg
Mi4gVXNlIHRoZSBURVNUIG1hY3JvIHRvIGRlZmluZSB5b3VyIHRlc3RzLgogLy8KQEAgLTgxLDcg
Kzc4LDcgQEAgVEVTVChGYWN0b3JpYWxUZXN0LCBOZWdhdGl2ZSkgewogICAvLyB0ZXN0IGNhc2Uu
CiAgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoLTUpKTsKICAgRVhQRUNUX0VRKDEsIEZhY3Rvcmlh
bCgtMSkpOwotICBFWFBFQ1RfVFJVRShGYWN0b3JpYWwoLTEwKSA+IDApOworICBFWFBFQ1RfR1Qo
RmFjdG9yaWFsKC0xMCksIDApOwogCiAgIC8vIDxUZWNobmljYWxEZXRhaWxzPgogICAvLwpAQCAt
MTM5LDYgKzEzNiw3IEBAIFRFU1QoSXNQcmltZVRlc3QsIFBvc2l0aXZlKSB7CiAgIEVYUEVDVF9G
QUxTRShJc1ByaW1lKDYpKTsKICAgRVhQRUNUX1RSVUUoSXNQcmltZSgyMykpOwogfQorfSAgLy8g
bmFtZXNwYWNlCiAKIC8vIFN0ZXAgMy4gQ2FsbCBSVU5fQUxMX1RFU1RTKCkgaW4gbWFpbigpLgog
Ly8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMi5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMi5jYwppbmRleCA1Zjc2
M2I5YmRmOGQ3YWJjMTNjNjFjNTY4MzMxZDIxYjlmYTQ5NzVkLi5mM2I3MjJmY2FjZmVlZTdkODkw
YjJkMWYxOWJjOTc0MTVlY2E0OWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zYW1wbGVzL3NhbXBsZTIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxl
cy9zYW1wbGUyLmNjCkBAIC0yOCw4ICsyOCw2IEBACiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAvLyBBIHNh
bXBsZSBwcm9ncmFtIGRlbW9uc3RyYXRpbmcgdXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1l
d29yay4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAKICNp
bmNsdWRlICJzYW1wbGUyLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NhbXBsZXMvc2FtcGxlMi5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1w
bGUyLmgKaW5kZXggNWI1N2U2MDgyZmE0ZjZiNzI0YmZiNTgyNjg3YmZlMGE2MzE5ZjJhNy4uNThm
MzYwZjQ1Yzc2NThjMDE5N2UzZmZjNjVlYzhiMzc1ZmIzMzZiMCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUyLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUyLmgKQEAgLTI4LDggKzI4LDYgQEAKIC8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysr
IHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKIAogI2lmbmRlZiBHVEVTVF9TQU1QTEVTX1NBTVBMRTJfSF8KICNkZWZpbmUgR1RF
U1RfU0FNUExFU19TQU1QTEUyX0hfCkBAIC00NCw3ICs0Miw2IEBAIGNsYXNzIE15U3RyaW5nIHsK
ICAgY29uc3QgTXlTdHJpbmcmIG9wZXJhdG9yPShjb25zdCBNeVN0cmluZyYgcmhzKTsKIAogIHB1
YmxpYzoKLQogICAvLyBDbG9uZXMgYSAwLXRlcm1pbmF0ZWQgQyBzdHJpbmcsIGFsbG9jYXRpbmcg
bWVtb3J5IHVzaW5nIG5ldy4KICAgc3RhdGljIGNvbnN0IGNoYXIqIENsb25lQ1N0cmluZyhjb25z
dCBjaGFyKiBhX2Nfc3RyaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0LmNjCmluZGV4IDMyMjMyZDk4YzBiZDI1NDgyMWM4ZjY5
MWE2Yjg1NWYxZjE2MTZmYjguLjA4NDg4MjYxOTJjYzY2ZmNiNzkwNmVmMmMwYWFlZjY2YWY4NDNm
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMl91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTJf
dW5pdHRlc3QuY2MKQEAgLTI4LDkgKzI4LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEgc2Ft
cGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3
b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQogCiAv
LyBUaGlzIHNhbXBsZSBzaG93cyBob3cgdG8gd3JpdGUgYSBtb3JlIGNvbXBsZXggdW5pdCB0ZXN0
IGZvciBhIGNsYXNzCiAvLyB0aGF0IGhhcyBtdWx0aXBsZSBtZW1iZXIgZnVuY3Rpb25zLgpAQCAt
NDEsOCArMzgsOCBAQAogLy8gbmVlZGVkLgogCiAjaW5jbHVkZSAic2FtcGxlMi5oIgotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorbmFtZXNwYWNl
IHsKIC8vIEluIHRoaXMgZXhhbXBsZSwgd2UgdGVzdCB0aGUgTXlTdHJpbmcgY2xhc3MgKGEgc2lt
cGxlIHN0cmluZykuCiAKIC8vIFRlc3RzIHRoZSBkZWZhdWx0IGMndG9yLgpAQCAtNzksNyArNzYs
NyBAQCBjb25zdCBjaGFyIGtIZWxsb1N0cmluZ1tdID0gIkhlbGxvLCB3b3JsZCEiOwogLy8gVGVz
dHMgdGhlIGMndG9yIHRoYXQgYWNjZXB0cyBhIEMgc3RyaW5nLgogVEVTVChNeVN0cmluZywgQ29u
c3RydWN0b3JGcm9tQ1N0cmluZykgewogICBjb25zdCBNeVN0cmluZyBzKGtIZWxsb1N0cmluZyk7
Ci0gIEVYUEVDVF9UUlVFKHN0cmNtcChzLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykgPT0gMCk7
CisgIEVYUEVDVF9FUSgwLCBzdHJjbXAocy5jX3N0cmluZygpLCBrSGVsbG9TdHJpbmcpKTsKICAg
RVhQRUNUX0VRKHNpemVvZihrSGVsbG9TdHJpbmcpL3NpemVvZihrSGVsbG9TdHJpbmdbMF0pIC0g
MSwKICAgICAgICAgICAgIHMuTGVuZ3RoKCkpOwogfQpAQCAtODgsNyArODUsNyBAQCBURVNUKE15
U3RyaW5nLCBDb25zdHJ1Y3RvckZyb21DU3RyaW5nKSB7CiBURVNUKE15U3RyaW5nLCBDb3B5Q29u
c3RydWN0b3IpIHsKICAgY29uc3QgTXlTdHJpbmcgczEoa0hlbGxvU3RyaW5nKTsKICAgY29uc3Qg
TXlTdHJpbmcgczIgPSBzMTsKLSAgRVhQRUNUX1RSVUUoc3RyY21wKHMyLmNfc3RyaW5nKCksIGtI
ZWxsb1N0cmluZykgPT0gMCk7CisgIEVYUEVDVF9FUSgwLCBzdHJjbXAoczIuY19zdHJpbmcoKSwg
a0hlbGxvU3RyaW5nKSk7CiB9CiAKIC8vIFRlc3RzIHRoZSBTZXQgbWV0aG9kLgpAQCAtOTYsMTQg
KzkzLDE1IEBAIFRFU1QoTXlTdHJpbmcsIFNldCkgewogICBNeVN0cmluZyBzOwogCiAgIHMuU2V0
KGtIZWxsb1N0cmluZyk7Ci0gIEVYUEVDVF9UUlVFKHN0cmNtcChzLmNfc3RyaW5nKCksIGtIZWxs
b1N0cmluZykgPT0gMCk7CisgIEVYUEVDVF9FUSgwLCBzdHJjbXAocy5jX3N0cmluZygpLCBrSGVs
bG9TdHJpbmcpKTsKIAogICAvLyBTZXQgc2hvdWxkIHdvcmsgd2hlbiB0aGUgaW5wdXQgcG9pbnRl
ciBpcyB0aGUgc2FtZSBhcyB0aGUgb25lCiAgIC8vIGFscmVhZHkgaW4gdGhlIE15U3RyaW5nIG9i
amVjdC4KICAgcy5TZXQocy5jX3N0cmluZygpKTsKLSAgRVhQRUNUX1RSVUUoc3RyY21wKHMuY19z
dHJpbmcoKSwga0hlbGxvU3RyaW5nKSA9PSAwKTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzLmNf
c3RyaW5nKCksIGtIZWxsb1N0cmluZykpOwogCiAgIC8vIENhbiB3ZSBzZXQgdGhlIE15U3RyaW5n
IHRvIE5VTEw/CiAgIHMuU2V0KE5VTEwpOwogICBFWFBFQ1RfU1RSRVEoTlVMTCwgcy5jX3N0cmlu
ZygpKTsKIH0KK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2FtcGxlcy9zYW1wbGUzLWlubC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ft
cGxlcy9zYW1wbGUzLWlubC5oCmluZGV4IDQ2MzY5YTA3NmQ4NWM0MTE0MjNhY2FhOThkZDQ1NWU1
NTllZDMwMGEuLjFhMjljZTkyOTZhNjRkZmU5N2E5ZjdmZGM2ZGE4NjM4N2RjMGI3NWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMy1pbmwuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTMtaW5sLmgKQEAgLTI4LDgg
KzI4LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJh
dGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAogI2lmbmRlZiBHVEVTVF9TQU1QTEVTX1NB
TVBMRTNfSU5MX0hfCiAjZGVmaW5lIEdURVNUX1NBTVBMRVNfU0FNUExFM19JTkxfSF8KQEAgLTYw
LDcgKzU4LDcgQEAgY2xhc3MgUXVldWVOb2RlIHsKICBwcml2YXRlOgogICAvLyBDcmVhdGVzIGEg
bm9kZSB3aXRoIGEgZ2l2ZW4gZWxlbWVudCB2YWx1ZS4gIFRoZSBuZXh0IHBvaW50ZXIgaXMKICAg
Ly8gc2V0IHRvIE5VTEwuCi0gIFF1ZXVlTm9kZShjb25zdCBFJiBhbl9lbGVtZW50KSA6IGVsZW1l
bnRfKGFuX2VsZW1lbnQpLCBuZXh0XyhOVUxMKSB7fQorICBleHBsaWNpdCBRdWV1ZU5vZGUoY29u
c3QgRSYgYW5fZWxlbWVudCkgOiBlbGVtZW50Xyhhbl9lbGVtZW50KSwgbmV4dF8oTlVMTCkge30K
IAogICAvLyBXZSBkaXNhYmxlIHRoZSBkZWZhdWx0IGFzc2lnbm1lbnQgb3BlcmF0b3IgYW5kIGNv
cHkgYyd0b3IuCiAgIGNvbnN0IFF1ZXVlTm9kZSYgb3BlcmF0b3IgPSAoY29uc3QgUXVldWVOb2Rl
Jik7CkBAIC03Miw4ICs3MCw3IEBAIGNsYXNzIFF1ZXVlTm9kZSB7CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBFPiAgLy8gRSBpcyB0aGUgZWxlbWVudCB0eXBlLgogY2xhc3MgUXVldWUgewotcHVibGlj
OgotCisgcHVibGljOgogICAvLyBDcmVhdGVzIGFuIGVtcHR5IHF1ZXVlLgogICBRdWV1ZSgpIDog
aGVhZF8oTlVMTCksIGxhc3RfKE5VTEwpLCBzaXplXygwKSB7fQogCkBAIC0xNjgsNiArMTY1LDYg
QEAgcHVibGljOgogICAvLyBXZSBkaXNhbGxvdyBjb3B5aW5nIGEgcXVldWUuCiAgIFF1ZXVlKGNv
bnN0IFF1ZXVlJik7CiAgIGNvbnN0IFF1ZXVlJiBvcGVyYXRvciA9IChjb25zdCBRdWV1ZSYpOwot
IH07Cit9OwogCiAjZW5kaWYgIC8vIEdURVNUX1NBTVBMRVNfU0FNUExFM19JTkxfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlM191bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYwpp
bmRleCAzNGMxY2E4NjU2ZWFiNTY0MTgxNTYwZGJmMTQ5ZDBhMmFhOTJjYzFkLi5lMDkzYzI1ODg1
NzNmOTYyNzBhNWVkNDEyNDVhYzdlODlmNDg1MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjCkBAIC0yOCw5ICsyOCw2IEBA
CiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogCiAvLyBBIHNhbXBsZSBwcm9ncmFtIGRlbW9uc3RyYXRpbmcgdXNp
bmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pCi0KIAogLy8gSW4gdGhpcyBleGFtcGxlLCB3ZSB1c2UgYSBt
b3JlIGFkdmFuY2VkIGZlYXR1cmUgb2YgR29vZ2xlIFRlc3QgY2FsbGVkCiAvLyB0ZXN0IGZpeHR1
cmUuCkBAIC02NCwxNSArNjEsMTUgQEAKIC8vIDwvVGVjaG5pY2FsRGV0YWlscz4KIAogI2luY2x1
ZGUgInNhbXBsZTMtaW5sLmgiCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQorI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCituYW1lc3BhY2UgewogLy8gVG8gdXNlIGEgdGVzdCBmaXh0dXJlLCBk
ZXJpdmUgYSBjbGFzcyBmcm9tIHRlc3Rpbmc6OlRlc3QuCi1jbGFzcyBRdWV1ZVRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7CitjbGFzcyBRdWV1ZVRlc3RTbXBsMyA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKICBwcm90ZWN0ZWQ6ICAvLyBZb3Ugc2hvdWxkIG1ha2UgdGhlIG1lbWJlcnMgcHJv
dGVjdGVkIHMudC4gdGhleSBjYW4gYmUKICAgICAgICAgICAgICAvLyBhY2Nlc3NlZCBmcm9tIHN1
Yi1jbGFzc2VzLgogCiAgIC8vIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHdpbGwgYmUgY2FsbGVkIGJl
Zm9yZSBlYWNoIHRlc3QgaXMgcnVuLiAgWW91Ci0gIC8vIHNob3VsZCBkZWZpbmUgaXQgaWYgeW91
IG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGUgdmFyYWlibGVzLgorICAvLyBzaG91bGQgZGVmaW5lIGl0
IGlmIHlvdSBuZWVkIHRvIGluaXRpYWxpemUgdGhlIHZhcmlhYmxlcy4KICAgLy8gT3RoZXJ3aXNl
LCB0aGlzIGNhbiBiZSBza2lwcGVkLgogICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CiAgICAgcTFf
LkVucXVldWUoMSk7CkBAIC0xMjAsMTMgKzExNywxMyBAQCBjbGFzcyBRdWV1ZVRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7CiAvLyBpbnN0ZWFkIG9mIFRFU1QuCiAKIC8vIFRlc3RzIHRoZSBk
ZWZhdWx0IGMndG9yLgotVEVTVF9GKFF1ZXVlVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yKSB7CitU
RVNUX0YoUXVldWVUZXN0U21wbDMsIERlZmF1bHRDb25zdHJ1Y3RvcikgewogICAvLyBZb3UgY2Fu
IGFjY2VzcyBkYXRhIGluIHRoZSB0ZXN0IGZpeHR1cmUgaGVyZS4KICAgRVhQRUNUX0VRKDB1LCBx
MF8uU2l6ZSgpKTsKIH0KIAogLy8gVGVzdHMgRGVxdWV1ZSgpLgotVEVTVF9GKFF1ZXVlVGVzdCwg
RGVxdWV1ZSkgeworVEVTVF9GKFF1ZXVlVGVzdFNtcGwzLCBEZXF1ZXVlKSB7CiAgIGludCAqIG4g
PSBxMF8uRGVxdWV1ZSgpOwogICBFWFBFQ1RfVFJVRShuID09IE5VTEwpOwogCkBAIC0xNDQsOCAr
MTQxLDkgQEAgVEVTVF9GKFF1ZXVlVGVzdCwgRGVxdWV1ZSkgewogfQogCiAvLyBUZXN0cyB0aGUg
UXVldWU6Ok1hcCgpIGZ1bmN0aW9uLgotVEVTVF9GKFF1ZXVlVGVzdCwgTWFwKSB7CitURVNUX0Yo
UXVldWVUZXN0U21wbDMsIE1hcCkgewogICBNYXBUZXN0ZXIoJnEwXyk7CiAgIE1hcFRlc3Rlcigm
cTFfKTsKICAgTWFwVGVzdGVyKCZxMl8pOwogfQorfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTQuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTQuY2MKaW5kZXggYWU0NGJkYTZmMWJhZDUzZmYz
YzZmMTRlMDMwMmJkM2JiMzA5Y2JhNy4uYjBlZTYwOTNiNGEyNTBjZjExOTM2Y2NjODIwOGE2MTIy
OTFiODE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1w
bGU0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNC5jYwpA
QCAtMjgsOCArMjgsNiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBk
ZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCiAjaW5jbHVkZSA8c3RkaW8u
aD4KIApAQCAtNDAsNiArMzgsMTYgQEAgaW50IENvdW50ZXI6OkluY3JlbWVudCgpIHsKICAgcmV0
dXJuIGNvdW50ZXJfKys7CiB9CiAKKy8vIFJldHVybnMgdGhlIGN1cnJlbnQgY291bnRlciB2YWx1
ZSwgYW5kIGRlY3JlbWVudHMgaXQuCisvLyBjb3VudGVyIGNhbiBub3QgYmUgbGVzcyB0aGFuIDAs
IHJldHVybiAwIGluIHRoaXMgY2FzZQoraW50IENvdW50ZXI6OkRlY3JlbWVudCgpIHsKKyAgaWYg
KGNvdW50ZXJfID09IDApIHsKKyAgICByZXR1cm4gY291bnRlcl87CisgIH0gZWxzZSAgeworICAg
IHJldHVybiBjb3VudGVyXy0tOworICB9Cit9CisKIC8vIFByaW50cyB0aGUgY3VycmVudCBjb3Vu
dGVyIHZhbHVlIHRvIFNURE9VVC4KIHZvaWQgQ291bnRlcjo6UHJpbnQoKSBjb25zdCB7CiAgIHBy
aW50ZigiJWQiLCBjb3VudGVyXyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zYW1wbGVzL3NhbXBsZTQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2Ft
cGxlNC5oCmluZGV4IGNkNjBmMGRkMmQxODYwNzM3YjdmMGVhNDVjNTY3NWEzYThlYTcyMWYuLmUy
NTZmNDA2NGZlOTFhN2YwMWE5NDU1MGQzMmMzYmIxMWIwYTRmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNC5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNC5oCkBAIC0yOCw5ICsyOCw2IEBACiAvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogCiAvLyBBIHNhbXBsZSBwcm9ncmFtIGRlbW9uc3RyYXRpbmcgdXNpbmcgR29vZ2xlIEMr
KyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFu
eW9uZyBXYW4pCi0KICNpZm5kZWYgR1RFU1RfU0FNUExFU19TQU1QTEU0X0hfCiAjZGVmaW5lIEdU
RVNUX1NBTVBMRVNfU0FNUExFNF9IXwogCkBAIC00Niw2ICs0Myw5IEBAIGNsYXNzIENvdW50ZXIg
ewogICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IGNvdW50ZXIgdmFsdWUsIGFuZCBpbmNyZW1lbnRz
IGl0LgogICBpbnQgSW5jcmVtZW50KCk7CiAKKyAgLy8gUmV0dXJucyB0aGUgY3VycmVudCBjb3Vu
dGVyIHZhbHVlLCBhbmQgZGVjcmVtZW50cyBpdC4KKyAgaW50IERlY3JlbWVudCgpOworCiAgIC8v
IFByaW50cyB0aGUgY3VycmVudCBjb3VudGVyIHZhbHVlIHRvIFNURE9VVC4KICAgdm9pZCBQcmlu
dCgpIGNvbnN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBs
ZXMvc2FtcGxlNF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMv
c2FtcGxlNF91bml0dGVzdC5jYwppbmRleCBiNGZiMzczNmFiYmZmODNmNzlhZjQ0N2NhNGJjNmI5
MTA1ODY5MzJlLi5kNTE0NGMwZDAwZjVjNzYwMDY5M2VhMDI1ODAyYzBkN2Q1MjUwZDJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0X3VuaXR0ZXN0
LmNjCkBAIC0yNiwyMCArMjYsMjggQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBX
YW4pCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCiAjaW5jbHVkZSAic2FtcGxlNC5oIgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKK25hbWVzcGFjZSB7CiAvLyBUZXN0cyB0aGUgSW5j
cmVtZW50KCkgbWV0aG9kLgorCiBURVNUKENvdW50ZXIsIEluY3JlbWVudCkgewogICBDb3VudGVy
IGM7CiAKKyAgLy8gVGVzdCB0aGF0IGNvdW50ZXIgMCByZXR1cm5zIDAKKyAgRVhQRUNUX0VRKDAs
IGMuRGVjcmVtZW50KCkpOworCiAgIC8vIEVYUEVDVF9FUSgpIGV2YWx1YXRlcyBpdHMgYXJndW1l
bnRzIGV4YWN0bHkgb25jZSwgc28gdGhleQogICAvLyBjYW4gaGF2ZSBzaWRlIGVmZmVjdHMuCiAK
ICAgRVhQRUNUX0VRKDAsIGMuSW5jcmVtZW50KCkpOwogICBFWFBFQ1RfRVEoMSwgYy5JbmNyZW1l
bnQoKSk7CiAgIEVYUEVDVF9FUSgyLCBjLkluY3JlbWVudCgpKTsKKworICBFWFBFQ1RfRVEoMywg
Yy5EZWNyZW1lbnQoKSk7CiB9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjCmluZGV4IDQ5ZGFlN2M2
OWZhNzZlOGE0ODYwNzcwNmI0YTE2MmM2NDJmMGEwODUuLmQ4YTg3ODhjNmQwZmRhMjM4NjQ2ZmVh
MjkwZTA5N2NjNzYyNzc4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nh
bXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9z
YW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MKQEAgLTI2LDggKzI2LDcgQEAKIC8vIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBn
b29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogLy8gVGhpcyBzYW1wbGUgdGVhY2hlcyBob3cg
dG8gcmV1c2UgYSB0ZXN0IGZpeHR1cmUgaW4gbXVsdGlwbGUgdGVzdAogLy8gY2FzZXMgYnkgZGVy
aXZpbmcgc3ViLWZpeHR1cmVzIGZyb20gaXQuCkBAIC00NiwxMCArNDUsMTAgQEAKIAogI2luY2x1
ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHRpbWUuaD4KLSNpbmNsdWRlICJzYW1wbGUzLWlubC5o
IgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKICNp
bmNsdWRlICJzYW1wbGUxLmgiCi0KKyNpbmNsdWRlICJzYW1wbGUzLWlubC5oIgorbmFtZXNwYWNl
IHsKIC8vIEluIHRoaXMgc2FtcGxlLCB3ZSB3YW50IHRvIGVuc3VyZSB0aGF0IGV2ZXJ5IHRlc3Qg
ZmluaXNoZXMgd2l0aGluCiAvLyB+NSBzZWNvbmRzLiAgSWYgYSB0ZXN0IHRha2VzIGxvbmdlciB0
byBydW4sIHdlIGNvbnNpZGVyIGl0IGEKIC8vIGZhaWx1cmUuCkBAIC0xMDEsNyArMTAwLDcgQEAg
VEVTVF9GKEludGVnZXJGdW5jdGlvblRlc3QsIEZhY3RvcmlhbCkgewogICAvLyBUZXN0cyBmYWN0
b3JpYWwgb2YgbmVnYXRpdmUgbnVtYmVycy4KICAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgtNSkp
OwogICBFWFBFQ1RfRVEoMSwgRmFjdG9yaWFsKC0xKSk7Ci0gIEVYUEVDVF9UUlVFKEZhY3Rvcmlh
bCgtMTApID4gMCk7CisgIEVYUEVDVF9HVChGYWN0b3JpYWwoLTEwKSwgMCk7CiAKICAgLy8gVGVz
dHMgZmFjdG9yaWFsIG9mIDAuCiAgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoMCkpOwpAQCAtMTE3
LDIwICsxMTYsMjAgQEAgVEVTVF9GKEludGVnZXJGdW5jdGlvblRlc3QsIEZhY3RvcmlhbCkgewog
Ly8gVGVzdHMgSXNQcmltZSgpCiBURVNUX0YoSW50ZWdlckZ1bmN0aW9uVGVzdCwgSXNQcmltZSkg
ewogICAvLyBUZXN0cyBuZWdhdGl2ZSBpbnB1dC4KLSAgRVhQRUNUX1RSVUUoIUlzUHJpbWUoLTEp
KTsKLSAgRVhQRUNUX1RSVUUoIUlzUHJpbWUoLTIpKTsKLSAgRVhQRUNUX1RSVUUoIUlzUHJpbWUo
SU5UX01JTikpOworICBFWFBFQ1RfRkFMU0UoSXNQcmltZSgtMSkpOworICBFWFBFQ1RfRkFMU0Uo
SXNQcmltZSgtMikpOworICBFWFBFQ1RfRkFMU0UoSXNQcmltZShJTlRfTUlOKSk7CiAKICAgLy8g
VGVzdHMgc29tZSB0cml2aWFsIGNhc2VzLgotICBFWFBFQ1RfVFJVRSghSXNQcmltZSgwKSk7Ci0g
IEVYUEVDVF9UUlVFKCFJc1ByaW1lKDEpKTsKKyAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoMCkpOwor
ICBFWFBFQ1RfRkFMU0UoSXNQcmltZSgxKSk7CiAgIEVYUEVDVF9UUlVFKElzUHJpbWUoMikpOwog
ICBFWFBFQ1RfVFJVRShJc1ByaW1lKDMpKTsKIAogICAvLyBUZXN0cyBwb3NpdGl2ZSBpbnB1dC4K
LSAgRVhQRUNUX1RSVUUoIUlzUHJpbWUoNCkpOworICBFWFBFQ1RfRkFMU0UoSXNQcmltZSg0KSk7
CiAgIEVYUEVDVF9UUlVFKElzUHJpbWUoNSkpOwotICBFWFBFQ1RfVFJVRSghSXNQcmltZSg2KSk7
CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKDYpKTsKICAgRVhQRUNUX1RSVUUoSXNQcmltZSgyMykp
OwogfQogCkBAIC0xOTEsNyArMTkwLDcgQEAgVEVTVF9GKFF1ZXVlVGVzdCwgRGVxdWV1ZSkgewog
ICBFWFBFQ1RfRVEoMXUsIHEyXy5TaXplKCkpOwogICBkZWxldGUgbjsKIH0KLQorfSAgLy8gbmFt
ZXNwYWNlCiAvLyBJZiBuZWNlc3NhcnksIHlvdSBjYW4gZGVyaXZlIGZ1cnRoZXIgdGVzdCBmaXh0
dXJlcyBmcm9tIGEgZGVyaXZlZAogLy8gZml4dHVyZSBpdHNlbGYuICBGb3IgZXhhbXBsZSwgeW91
IGNhbiBkZXJpdmUgYW5vdGhlciBmaXh0dXJlIGZyb20KIC8vIFF1ZXVlVGVzdC4gIEdvb2dsZSBU
ZXN0IGltcG9zZXMgbm8gbGltaXQgb24gaG93IGRlZXAgdGhlIGhpZXJhcmNoeQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjCmluZGV4
IGRkMGRmMzFmMGJiN2NiZjI2MTYwNzM0MmU4NjQwNGQ3NWE4NTM0M2UuLmRkZjJmMWMxM2JiZTAz
NDgxMzQ0OTM2YjBhNzJkYmIyYTBiMjg0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2MKQEAgLTI2LDggKzI2LDcgQEAKIC8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRo
b3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogLy8gVGhpcyBzYW1wbGUgc2hv
d3MgaG93IHRvIHRlc3QgY29tbW9uIHByb3BlcnRpZXMgb2YgbXVsdGlwbGUKIC8vIGltcGxlbWVu
dGF0aW9ucyBvZiB0aGUgc2FtZSBpbnRlcmZhY2UgKGFrYSBpbnRlcmZhY2UgdGVzdHMpLgpAQCAt
MzUsOCArMzQsOCBAQAogLy8gVGhlIGludGVyZmFjZSBhbmQgaXRzIGltcGxlbWVudGF0aW9ucyBh
cmUgaW4gdGhpcyBoZWFkZXIuCiAjaW5jbHVkZSAicHJpbWVfdGFibGVzLmgiCiAKLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgotCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKK25hbWVzcGFjZSB7
CiAvLyBGaXJzdCwgd2UgZGVmaW5lIHNvbWUgZmFjdG9yeSBmdW5jdGlvbnMgZm9yIGNyZWF0aW5n
IGluc3RhbmNlcyBvZgogLy8gdGhlIGltcGxlbWVudGF0aW9ucy4gIFlvdSBtYXkgYmUgYWJsZSB0
byBza2lwIHRoaXMgc3RlcCBpZiBhbGwgeW91cgogLy8gaW1wbGVtZW50YXRpb25zIGNhbiBiZSBj
b25zdHJ1Y3RlZCB0aGUgc2FtZSB3YXkuCkBAIC0yMjIsMyArMjIxLDQgQEAgSU5TVEFOVElBVEVf
VFlQRURfVEVTVF9DQVNFX1AoT25UaGVGbHlBbmRQcmVDYWxjdWxhdGVkLCAgICAvLyBJbnN0YW5j
ZSBuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltZVRhYmxlSW1wbGVtZW50
YXRpb25zKTsgIC8vIFR5cGUgbGlzdAogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNU
X1AKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGU3X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ft
cGxlcy9zYW1wbGU3X3VuaXR0ZXN0LmNjCmluZGV4IGY0NTUyODI3ZWQ5YjgzMDZjZGQzMTlhYTU3
ZjNlZDA2NzYyYjRmNWYuLmMxYWU4YmRlZGM5YWZjOWExMWQwZDkyMDIxZWY3Njc3ZDM5OGE5Yzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlN191bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTdfdW5p
dHRlc3QuY2MKQEAgLTI2LDggKzI2LDcgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQg
TG9zZXYpCisKIAogLy8gVGhpcyBzYW1wbGUgc2hvd3MgaG93IHRvIHRlc3QgY29tbW9uIHByb3Bl
cnRpZXMgb2YgbXVsdGlwbGUKIC8vIGltcGxlbWVudGF0aW9ucyBvZiBhbiBpbnRlcmZhY2UgKGFr
YSBpbnRlcmZhY2UgdGVzdHMpIHVzaW5nCkBAIC0zOCwxOSArMzcsMTcgQEAKIC8vIFRoZSBpbnRl
cmZhY2UgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbnMgYXJlIGluIHRoaXMgaGVhZGVyLgogI2luY2x1
ZGUgInByaW1lX3RhYmxlcy5oIgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2lmIEdU
RVNUX0hBU19QQVJBTV9URVNUCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKK25hbWVzcGFjZSB7
CiAKIHVzaW5nIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTsKIHVzaW5nIDo6dGVzdGluZzo6VmFs
dWVzOwogCi0vLyBBcyBhIGdlbmVyYWwgcnVsZSwgdGVzdGVkIG9iamVjdHMgc2hvdWxkIG5vdCBi
ZSByZXVzZWQgYmV0d2VlbiB0ZXN0cy4KLS8vIEFsc28sIHRoZWlyIGNvbnN0cnVjdG9ycyBhbmQg
ZGVzdHJ1Y3RvcnMgb2YgdGVzdGVkIG9iamVjdHMgY2FuIGhhdmUKLS8vIHNpZGUgZWZmZWN0cy4g
VGh1cyB5b3Ugc2hvdWxkIGNyZWF0ZSBhbmQgZGVzdHJveSB0aGVtIGZvciBlYWNoIHRlc3QuCi0v
LyBJbiB0aGlzIHNhbXBsZSB3ZSB3aWxsIGRlZmluZSBhIHNpbXBsZSBmYWN0b3J5IGZ1bmN0aW9u
IGZvciBQcmltZVRhYmxlCi0vLyBvYmplY3RzLiBXZSB3aWxsIGluc3RhbnRpYXRlIG9iamVjdHMg
aW4gdGVzdCdzIFNldFVwKCkgbWV0aG9kIGFuZAotLy8gZGVsZXRlIHRoZW0gaW4gVGVhckRvd24o
KSBtZXRob2QuCisvLyBBcyBhIGdlbmVyYWwgcnVsZSwgdG8gcHJldmVudCBhIHRlc3QgZnJvbSBh
ZmZlY3RpbmcgdGhlIHRlc3RzIHRoYXQgY29tZQorLy8gYWZ0ZXIgaXQsIHlvdSBzaG91bGQgY3Jl
YXRlIGFuZCBkZXN0cm95IHRoZSB0ZXN0ZWQgb2JqZWN0cyBmb3IgZWFjaCB0ZXN0CisvLyBpbnN0
ZWFkIG9mIHJldXNpbmcgdGhlbS4gIEluIHRoaXMgc2FtcGxlIHdlIHdpbGwgZGVmaW5lIGEgc2lt
cGxlIGZhY3RvcnkKKy8vIGZ1bmN0aW9uIGZvciBQcmltZVRhYmxlIG9iamVjdHMuICBXZSB3aWxs
IGluc3RhbnRpYXRlIG9iamVjdHMgaW4gdGVzdCdzCisvLyBTZXRVcCgpIG1ldGhvZCBhbmQgZGVs
ZXRlIHRoZW0gaW4gVGVhckRvd24oKSBtZXRob2QuCiB0eXBlZGVmIFByaW1lVGFibGUqIENyZWF0
ZVByaW1lVGFibGVGdW5jKCk7CiAKIFByaW1lVGFibGUqIENyZWF0ZU9uVGhlRmx5UHJpbWVUYWJs
ZSgpIHsKQEAgLTYyLDE0ICs1OSwxMyBAQCBQcmltZVRhYmxlKiBDcmVhdGVQcmVDYWxjdWxhdGVk
UHJpbWVUYWJsZSgpIHsKICAgcmV0dXJuIG5ldyBQcmVDYWxjdWxhdGVkUHJpbWVUYWJsZShtYXhf
cHJlY2FsY3VsYXRlZCk7CiB9CiAKLS8vIEluc2lkZSB0aGUgdGVzdCBib2R5LCBmaXh0dXJlIGNv
bnN0cnVjdG9yLCBTZXRVcCgpLCBhbmQgVGVhckRvd24oKQotLy8geW91IGNhbiByZWZlciB0byB0
aGUgdGVzdCBwYXJhbWV0ZXIgYnkgR2V0UGFyYW0oKS4KLS8vIEluIHRoaXMgY2FzZSwgdGhlIHRl
c3QgcGFyYW1ldGVyIGlzIGEgUHJpbWVUYWJsZUZhY3RvcnkgaW50ZXJmYWNlIHBvaW50ZXIKLS8v
IHdoaWNoIHdlIHVzZSBpbiBmaXh0dXJlJ3MgU2V0VXAoKSB0byBjcmVhdGUgYW5kIHN0b3JlIGFu
IGluc3RhbmNlIG9mCi0vLyBQcmltZVRhYmxlLgotY2xhc3MgUHJpbWVUYWJsZVRlc3QgOiBwdWJs
aWMgVGVzdFdpdGhQYXJhbTxDcmVhdGVQcmltZVRhYmxlRnVuYyo+IHsKKy8vIEluc2lkZSB0aGUg
dGVzdCBib2R5LCBmaXh0dXJlIGNvbnN0cnVjdG9yLCBTZXRVcCgpLCBhbmQgVGVhckRvd24oKSB5
b3UKKy8vIGNhbiByZWZlciB0byB0aGUgdGVzdCBwYXJhbWV0ZXIgYnkgR2V0UGFyYW0oKS4gIElu
IHRoaXMgY2FzZSwgdGhlIHRlc3QKKy8vIHBhcmFtZXRlciBpcyBhIGZhY3RvcnkgZnVuY3Rpb24g
d2hpY2ggd2UgY2FsbCBpbiBmaXh0dXJlJ3MgU2V0VXAoKSB0bworLy8gY3JlYXRlIGFuZCBzdG9y
ZSBhbiBpbnN0YW5jZSBvZiBQcmltZVRhYmxlLgorY2xhc3MgUHJpbWVUYWJsZVRlc3RTbXBsNyA6
IHB1YmxpYyBUZXN0V2l0aFBhcmFtPENyZWF0ZVByaW1lVGFibGVGdW5jKj4gewogIHB1YmxpYzoK
LSAgdmlydHVhbCB+UHJpbWVUYWJsZVRlc3QoKSB7IGRlbGV0ZSB0YWJsZV87IH0KKyAgdmlydHVh
bCB+UHJpbWVUYWJsZVRlc3RTbXBsNygpIHsgZGVsZXRlIHRhYmxlXzsgfQogICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKSB7IHRhYmxlXyA9ICgqR2V0UGFyYW0oKSkoKTsgfQogICB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKSB7CiAgICAgZGVsZXRlIHRhYmxlXzsKQEAgLTgwLDcgKzc2LDcgQEAgY2xhc3Mg
UHJpbWVUYWJsZVRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxDcmVhdGVQcmltZVRhYmxlRnVu
Yyo+IHsKICAgUHJpbWVUYWJsZSogdGFibGVfOwogfTsKIAotVEVTVF9QKFByaW1lVGFibGVUZXN0
LCBSZXR1cm5zRmFsc2VGb3JOb25QcmltZXMpIHsKK1RFU1RfUChQcmltZVRhYmxlVGVzdFNtcGw3
LCBSZXR1cm5zRmFsc2VGb3JOb25QcmltZXMpIHsKICAgRVhQRUNUX0ZBTFNFKHRhYmxlXy0+SXNQ
cmltZSgtNSkpOwogICBFWFBFQ1RfRkFMU0UodGFibGVfLT5Jc1ByaW1lKDApKTsKICAgRVhQRUNU
X0ZBTFNFKHRhYmxlXy0+SXNQcmltZSgxKSk7CkBAIC04OSw3ICs4NSw3IEBAIFRFU1RfUChQcmlt
ZVRhYmxlVGVzdCwgUmV0dXJuc0ZhbHNlRm9yTm9uUHJpbWVzKSB7CiAgIEVYUEVDVF9GQUxTRSh0
YWJsZV8tPklzUHJpbWUoMTAwKSk7CiB9CiAKLVRFU1RfUChQcmltZVRhYmxlVGVzdCwgUmV0dXJu
c1RydWVGb3JQcmltZXMpIHsKK1RFU1RfUChQcmltZVRhYmxlVGVzdFNtcGw3LCBSZXR1cm5zVHJ1
ZUZvclByaW1lcykgewogICBFWFBFQ1RfVFJVRSh0YWJsZV8tPklzUHJpbWUoMikpOwogICBFWFBF
Q1RfVFJVRSh0YWJsZV8tPklzUHJpbWUoMykpOwogICBFWFBFQ1RfVFJVRSh0YWJsZV8tPklzUHJp
bWUoNSkpOwpAQCAtOTgsNyArOTQsNyBAQCBURVNUX1AoUHJpbWVUYWJsZVRlc3QsIFJldHVybnNU
cnVlRm9yUHJpbWVzKSB7CiAgIEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSgxMzEpKTsKIH0K
IAotVEVTVF9QKFByaW1lVGFibGVUZXN0LCBDYW5HZXROZXh0UHJpbWUpIHsKK1RFU1RfUChQcmlt
ZVRhYmxlVGVzdFNtcGw3LCBDYW5HZXROZXh0UHJpbWUpIHsKICAgRVhQRUNUX0VRKDIsIHRhYmxl
Xy0+R2V0TmV4dFByaW1lKDApKTsKICAgRVhQRUNUX0VRKDMsIHRhYmxlXy0+R2V0TmV4dFByaW1l
KDIpKTsKICAgRVhQRUNUX0VRKDUsIHRhYmxlXy0+R2V0TmV4dFByaW1lKDMpKTsKQEAgLTExNCwx
OSArMTEwLDggQEAgVEVTVF9QKFByaW1lVGFibGVUZXN0LCBDYW5HZXROZXh0UHJpbWUpIHsKIC8v
CiAvLyBIZXJlLCB3ZSBpbnN0YW50aWF0ZSBvdXIgdGVzdHMgd2l0aCBhIGxpc3Qgb2YgdHdvIFBy
aW1lVGFibGUgb2JqZWN0CiAvLyBmYWN0b3J5IGZ1bmN0aW9uczoKLUlOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QKAotICAgIE9uVGhlRmx5QW5kUHJlQ2FsY3VsYXRlZCwKLSAgICBQcmltZVRhYmxlVGVz
dCwKLSAgICBWYWx1ZXMoJkNyZWF0ZU9uVGhlRmx5UHJpbWVUYWJsZSwgJkNyZWF0ZVByZUNhbGN1
bGF0ZWRQcmltZVRhYmxlPDEwMDA+KSk7Ci0KLSNlbHNlCi0KLS8vIEdvb2dsZSBUZXN0IG1heSBu
b3Qgc3VwcG9ydCB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIHdpdGggc29tZQotLy8gY29tcGls
ZXJzLiBJZiB3ZSB1c2UgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gY29tcGlsZSBvdXQgYWxs
Ci0vLyBjb2RlIHJlZmVycmluZyB0byB0aGUgZ3Rlc3RfbWFpbiBsaWJyYXJ5LCBNU1ZDIGxpbmtl
ciB3aWxsIG5vdCBsaW5rCi0vLyB0aGF0IGxpYnJhcnkgYXQgYWxsIGFuZCBjb25zZXF1ZW50bHkg
Y29tcGxhaW4gYWJvdXQgbWlzc2luZyBlbnRyeQotLy8gcG9pbnQgZGVmaW5lZCBpbiB0aGF0IGxp
YnJhcnkgKGZhdGFsIGVycm9yIExOSzE1NjE6IGVudHJ5IHBvaW50Ci0vLyBtdXN0IGJlIGRlZmlu
ZWQpLiBUaGlzIGR1bW15IHRlc3Qga2VlcHMgZ3Rlc3RfbWFpbiBsaW5rZWQgaW4uCi1URVNUKER1
bW15VGVzdCwgVmFsdWVQYXJhbWV0ZXJpemVkVGVzdHNBcmVOb3RTdXBwb3J0ZWRPblRoaXNQbGF0
Zm9ybSkge30KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKE9uVGhlRmx5QW5kUHJlQ2FsY3VsYXRl
ZCwgUHJpbWVUYWJsZVRlc3RTbXBsNywKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygm
Q3JlYXRlT25UaGVGbHlQcmltZVRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZDcmVhdGVQcmVDYWxjdWxhdGVkUHJpbWVUYWJsZTwxMDAwPikpOwogCi0jZW5kaWYgIC8vIEdU
RVNUX0hBU19QQVJBTV9URVNUCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYwppbmRleCBjY2Y2MWQ5MmI4
NWMzMTJmN2YyZWMyZjZkOGE2NzNkZmY0YjAyZDY2Li5jZTc1Y2YwMzA4NzBjMzc2ZGZlYzYwMzFk
YjI0NzExMDg3MDM4M2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1w
bGVzL3NhbXBsZThfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ft
cGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjCkBAIC0yNiw4ICsyNiw3IEBACiAvLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2bGFkbEBn
b29nbGUuY29tIChWbGFkIExvc2V2KQorCiAKIC8vIFRoaXMgc2FtcGxlIHNob3dzIGhvdyB0byB0
ZXN0IGNvZGUgcmVseWluZyBvbiBzb21lIGdsb2JhbCBmbGFnIHZhcmlhYmxlcy4KIC8vIENvbWJp
bmUoKSBoZWxwcyB3aXRoIGdlbmVyYXRpbmcgYWxsIHBvc3NpYmxlIGNvbWJpbmF0aW9ucyBvZiBz
dWNoIGZsYWdzLApAQCAtMzYsOCArMzUsOCBAQAogLy8gVXNlIGNsYXNzIGRlZmluaXRpb25zIHRv
IHRlc3QgZnJvbSB0aGlzIGhlYWRlci4KICNpbmNsdWRlICJwcmltZV90YWJsZXMuaCIKIAotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorbmFtZXNw
YWNlIHsKICNpZiBHVEVTVF9IQVNfQ09NQklORQogCiAvLyBTdXBwb3NlIHdlIHdhbnQgdG8gaW50
cm9kdWNlIGEgbmV3LCBpbXByb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBQcmltZVRhYmxlCkBAIC05
MCw3ICs4OSw3IEBAIHVzaW5nIDo6dGVzdGluZzo6Q29tYmluZTsKIC8vIFByZUNhbGN1bGF0ZWRQ
cmltZVRhYmxlIGRpc2FibGVkLiBXZSBkbyB0aGlzIGJ5IGRlZmluaW5nIGZpeHR1cmUgd2hpY2gg
d2lsbAogLy8gYWNjZXB0IGRpZmZlcmVudCBjb21iaW5hdGlvbnMgb2YgcGFyYW1ldGVycyBmb3Ig
aW5zdGFudGlhdGluZyBhCiAvLyBIeWJyaWRQcmltZVRhYmxlIGluc3RhbmNlLgotY2xhc3MgUHJp
bWVUYWJsZVRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTwgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9v
bCwgaW50PiA+IHsKK2NsYXNzIFByaW1lVGFibGVUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08
IDo6dGVzdGluZzo6dHVwbGU8Ym9vbCwgaW50PiA+IHsKICBwcm90ZWN0ZWQ6CiAgIHZpcnR1YWwg
dm9pZCBTZXRVcCgpIHsKICAgICAvLyBUaGlzIGNhbiBiZSB3cml0dGVuIGFzCkBAIC0xMDEsOCAr
MTAwLDggQEAgY2xhc3MgUHJpbWVUYWJsZVRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTwgOjpz
dGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50PiA+IHsKICAgICAvLwogICAgIC8vIG9uY2UgdGhlIEdv
b2dsZSBDKysgU3R5bGUgR3VpZGUgYWxsb3dzIHVzZSBvZiA6OnN0ZDo6dHIxOjp0aWUuCiAgICAg
Ly8KLSAgICBib29sIGZvcmNlX29uX3RoZV9mbHkgPSA6OnN0ZDo6dHIxOjpnZXQ8MD4oR2V0UGFy
YW0oKSk7Ci0gICAgaW50IG1heF9wcmVjYWxjdWxhdGVkID0gOjpzdGQ6OnRyMTo6Z2V0PDE+KEdl
dFBhcmFtKCkpOworICAgIGJvb2wgZm9yY2Vfb25fdGhlX2ZseSA9IDo6dGVzdGluZzo6Z2V0PDA+
KEdldFBhcmFtKCkpOworICAgIGludCBtYXhfcHJlY2FsY3VsYXRlZCA9IDo6dGVzdGluZzo6Z2V0
PDE+KEdldFBhcmFtKCkpOwogICAgIHRhYmxlXyA9IG5ldyBIeWJyaWRQcmltZVRhYmxlKGZvcmNl
X29uX3RoZV9mbHksIG1heF9wcmVjYWxjdWxhdGVkKTsKICAgfQogICB2aXJ0dWFsIHZvaWQgVGVh
ckRvd24oKSB7CkBAIC0xNzEsMyArMTcwLDQgQEAgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoTWVh
bmluZ2Z1bFRlc3RQYXJhbWV0ZXJzLAogVEVTVChEdW1teVRlc3QsIENvbWJpbmVJc05vdFN1cHBv
cnRlZE9uVGhpc1BsYXRmb3JtKSB7fQogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCit9
ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBs
ZXMvc2FtcGxlOV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMv
c2FtcGxlOV91bml0dGVzdC5jYwppbmRleCBkODI4ZWY0ZDg2Yjc0NmIyNTY5N2JkZDQ2ZDIxMDBh
NDQ2MTQyZDMxLi41M2Y5YWY1YmExZGZjMjY5NTY2MDc4ZjIzNmY2OTU1OTlkYzUyYWRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0
LmNjCkBAIC0yNSw4ICsyNSw3IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2
KQorCiAKIC8vIFRoaXMgc2FtcGxlIHNob3dzIGhvdyB0byB1c2UgR29vZ2xlIFRlc3QgbGlzdGVu
ZXIgQVBJIHRvIGltcGxlbWVudAogLy8gYW4gYWx0ZXJuYXRpdmUgY29uc29sZSBvdXRwdXQgYW5k
IGhvdyB0byB1c2UgdGhlIFVuaXRUZXN0IHJlZmxlY3Rpb24gQVBJCkBAIC0zNCw3ICszMyw3IEBA
CiAKICNpbmNsdWRlIDxzdGRpby5oPgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgogCiB1c2luZyA6OnRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlz
dGVuZXI7CiB1c2luZyA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0OwpAQCAtNDQsOSArNDMsNyBA
QCB1c2luZyA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyczsKIHVzaW5nIDo6dGVzdGluZzo6
VGVzdEluZm87CiB1c2luZyA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OwogdXNpbmcgOjp0ZXN0
aW5nOjpVbml0VGVzdDsKLQogbmFtZXNwYWNlIHsKLQogLy8gUHJvdmlkZXMgYWx0ZXJuYXRpdmUg
b3V0cHV0IG1vZGUgd2hpY2ggcHJvZHVjZXMgbWluaW1hbCBhbW91bnQgb2YKIC8vIGluZm9ybWF0
aW9uIGFib3V0IHRlc3RzLgogY2xhc3MgVGVyc2VQcmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2
ZW50TGlzdGVuZXIgewpAQCAtNjksNyArNjYsNyBAQCBjbGFzcyBUZXJzZVByaW50ZXIgOiBwdWJs
aWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CiAgICAgZmZsdXNoKHN0ZG91dCk7CiAgIH0KIAot
ICAvLyBDYWxsZWQgYWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VTUygpLgorICAv
LyBDYWxsZWQgYWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VFRCgpIGludm9jYXRp
b24uCiAgIHZpcnR1YWwgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0
JiB0ZXN0X3BhcnRfcmVzdWx0KSB7CiAgICAgZnByaW50ZihzdGRvdXQsCiAgICAgICAgICAgICAi
JXMgaW4gJXM6JWRcbiVzXG4iLApAQCAtMTAyLDcgKzk5LDYgQEAgVEVTVChDdXN0b21PdXRwdXRU
ZXN0LCBGYWlscykgewogICBFWFBFQ1RfRVEoMSwgMikKICAgICAgIDw8ICJUaGlzIHRlc3QgZmFp
bHMgaW4gb3JkZXIgdG8gZGVtb25zdHJhdGUgYWx0ZXJuYXRpdmUgZmFpbHVyZSBtZXNzYWdlcyI7
CiB9Ci0KIH0gIC8vIG5hbWVzcGFjZQogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvY29tbW9uLnB5
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9jb21tb24ucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2MwMzQ3YTc1YmRmZjMxODgwOTc3NDUwMTVhNTgwMzc2NGFkNzQxYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvY29tbW9uLnB5CkBAIC0wLDAgKzEs
ODMgQEAKKyMgQ29weXJpZ2h0IDIwMTMgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlNoYXJlZCB1dGlsaXRpZXMgZm9yIHdyaXRpbmcgc2Ny
aXB0cyBmb3IgR29vZ2xlIFRlc3QvTW9jay4iIiIKKworX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKScKKworCitpbXBvcnQgb3MKK2ltcG9ydCByZQorCisKKyMgTWF0
Y2hlcyB0aGUgbGluZSBmcm9tICdzdm4gaW5mbyAuJyBvdXRwdXQgdGhhdCBkZXNjcmliZXMgd2hh
dCBTVk4KKyMgcGF0aCB0aGUgY3VycmVudCBsb2NhbCBkaXJlY3RvcnkgY29ycmVzcG9uZHMgdG8u
ICBGb3IgZXhhbXBsZSwgaW4KKyMgYSBnb29nbGV0ZXN0IFNWTiB3b3Jrc3BhY2UncyB0cnVuay90
ZXN0IGRpcmVjdG9yeSwgdGhlIG91dHB1dCB3aWxsIGJlOgorIworIyBVUkw6IGh0dHBzOi8vZ29v
Z2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvdGVzdAorX1NWTl9JTkZPX1VSTF9SRSA9
IHJlLmNvbXBpbGUocideVVJMOiBodHRwczovLyhcdyspXC5nb29nbGVjb2RlXC5jb20vc3ZuKC4q
KScpCisKKworZGVmIEdldENvbW1hbmRPdXRwdXQoY29tbWFuZCk6CisgICIiIlJ1bnMgdGhlIHNo
ZWxsIGNvbW1hbmQgYW5kIHJldHVybnMgaXRzIHN0ZG91dCBhcyBhIGxpc3Qgb2YgbGluZXMuIiIi
CisKKyAgZiA9IG9zLnBvcGVuKGNvbW1hbmQsICdyJykKKyAgbGluZXMgPSBbbGluZS5zdHJpcCgp
IGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCldCisgIGYuY2xvc2UoKQorICByZXR1cm4gbGluZXMK
KworCitkZWYgR2V0U3ZuSW5mbygpOgorICAiIiJSZXR1cm5zIHRoZSBwcm9qZWN0IG5hbWUgYW5k
IHRoZSBjdXJyZW50IFNWTiB3b3Jrc3BhY2UncyByb290IHBhdGguIiIiCisKKyAgZm9yIGxpbmUg
aW4gR2V0Q29tbWFuZE91dHB1dCgnc3ZuIGluZm8gLicpOgorICAgIG0gPSBfU1ZOX0lORk9fVVJM
X1JFLm1hdGNoKGxpbmUpCisgICAgaWYgbToKKyAgICAgIHByb2plY3QgPSBtLmdyb3VwKDEpICAj
IGdvb2dsZXRlc3Qgb3IgZ29vZ2xlbW9jaworICAgICAgcmVsX3BhdGggPSBtLmdyb3VwKDIpCisg
ICAgICByb290ID0gb3MucGF0aC5yZWFscGF0aChyZWxfcGF0aC5jb3VudCgnLycpICogJy4uLycp
CisgICAgICByZXR1cm4gcHJvamVjdCwgcm9vdAorCisgIHJldHVybiBOb25lLCBOb25lCisKKwor
ZGVmIEdldFN2blRydW5rKCk6CisgICIiIlJldHVybnMgdGhlIGN1cnJlbnQgU1ZOIHdvcmtzcGFj
ZSdzIHRydW5rIHJvb3QgcGF0aC4iIiIKKworICBfLCByb290ID0gR2V0U3ZuSW5mbygpCisgIHJl
dHVybiByb290ICsgJy90cnVuaycgaWYgcm9vdCBlbHNlIE5vbmUKKworCitkZWYgSXNJbkdUZXN0
U3ZuKCk6CisgIHByb2plY3QsIF8gPSBHZXRTdm5JbmZvKCkKKyAgcmV0dXJuIHByb2plY3QgPT0g
J2dvb2dsZXRlc3QnCisKKworZGVmIElzSW5HTW9ja1N2bigpOgorICBwcm9qZWN0LCBfID0gR2V0
U3ZuSW5mbygpCisgIHJldHVybiBwcm9qZWN0ID09ICdnb29nbGVtb2NrJwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9mdXNlX2d0ZXN0X2ZpbGVzLnB5IGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9mdXNlX2d0ZXN0X2ZpbGVzLnB5CmluZGV4IDE0
ODQ0NGNhNzExYjFlZGFhYWZlYThkNzgyNmQzY2ZkNGMwMWRlMGIuLmQwZGQ0NjRmZThiNTljNTQx
MGEzZDFiODVkYjQ3OTViYmQwMzFkODkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NjcmlwdHMvZnVzZV9ndGVzdF9maWxlcy5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zY3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMucHkKQEAgLTUyLDcgKzUyLDcgQEAgRVhBTVBM
RVMKIFRoaXMgdG9vbCBpcyBleHBlcmltZW50YWwuICBJbiBwYXJ0aWN1bGFyLCBpdCBhc3N1bWVz
IHRoYXQgdGhlcmUgaXMgbm8KIGNvbmRpdGlvbmFsIGluY2x1c2lvbiBvZiBHb29nbGUgVGVzdCBo
ZWFkZXJzLiAgUGxlYXNlIHJlcG9ydCBhbnkKIHByb2JsZW1zIHRvIGdvb2dsZXRlc3RmcmFtZXdv
cmtAZ29vZ2xlZ3JvdXBzLmNvbS4gIFlvdSBjYW4gcmVhZAotaHR0cDovL2NvZGUuZ29vZ2xlLmNv
bS9wL2dvb2dsZXRlc3Qvd2lraS9Hb29nbGVUZXN0QWR2YW5jZWRHdWlkZSBmb3IKK2h0dHBzOi8v
Z2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9ibG9iL21hc3Rlci9nb29nbGV0ZXN0L2RvY3Mv
YWR2YW5jZWQubWQgZm9yCiBtb3JlIGluZm9ybWF0aW9uLgogIiIiCiAKQEAgLTYwLDE1ICs2MCwx
OCBAQCBfX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwogCiBpbXBv
cnQgb3MKIGltcG9ydCByZQotaW1wb3J0IHNldHMKK3RyeToKKyAgZnJvbSBzZXRzIGltcG9ydCBT
ZXQgYXMgc2V0ICAjIEZvciBQeXRob24gMi4zIGNvbXBhdGliaWxpdHkKK2V4Y2VwdCBJbXBvcnRF
cnJvcjoKKyAgcGFzcwogaW1wb3J0IHN5cwogCiAjIFdlIGFzc3VtZSB0aGF0IHRoaXMgZmlsZSBp
cyBpbiB0aGUgc2NyaXB0cy8gZGlyZWN0b3J5IGluIHRoZSBHb29nbGUKICMgVGVzdCByb290IGRp
cmVjdG9yeS4KIERFRkFVTFRfR1RFU1RfUk9PVF9ESVIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5k
aXJuYW1lKF9fZmlsZV9fKSwgJy4uJykKIAotIyBSZWdleCBmb3IgbWF0Y2hpbmcgJyNpbmNsdWRl
IDxndGVzdC8uLi4+Jy4KLUlOQ0xVREVfR1RFU1RfRklMRV9SRUdFWCA9IHJlLmNvbXBpbGUocide
XHMqI1xzKmluY2x1ZGVccyo8KGd0ZXN0Ly4rKT4nKQorIyBSZWdleCBmb3IgbWF0Y2hpbmcgJyNp
bmNsdWRlICJndGVzdC8uLi4iJy4KK0lOQ0xVREVfR1RFU1RfRklMRV9SRUdFWCA9IHJlLmNvbXBp
bGUocideXHMqI1xzKmluY2x1ZGVccyoiKGd0ZXN0Ly4rKSInKQogCiAjIFJlZ2V4IGZvciBtYXRj
aGluZyAnI2luY2x1ZGUgInNyYy8uLi4iJy4KIElOQ0xVREVfU1JDX0ZJTEVfUkVHRVggPSByZS5j
b21waWxlKHInXlxzKiNccyppbmNsdWRlXHMqIihzcmMvLispIicpCkBAIC05MCwxMCArOTMsMTAg
QEAgZGVmIFZlcmlmeUZpbGVFeGlzdHMoZGlyZWN0b3J5LCByZWxhdGl2ZV9wYXRoKToKICAgIiIi
CiAKICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkaXJlY3RvcnksIHJlbGF0
aXZlX3BhdGgpKToKLSAgICBwcmludCAnRVJST1I6IENhbm5vdCBmaW5kICVzIGluIGRpcmVjdG9y
eSAlcy4nICUgKHJlbGF0aXZlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkpCi0gICAgcHJpbnQgKCdQbGVhc2UgZWl0
aGVyIHNwZWNpZnkgYSB2YWxpZCBwcm9qZWN0IHJvb3QgZGlyZWN0b3J5ICcKLSAgICAgICAgICAg
J29yIG9taXQgaXQgb24gdGhlIGNvbW1hbmQgbGluZS4nKQorICAgIHByaW50KCdFUlJPUjogQ2Fu
bm90IGZpbmQgJXMgaW4gZGlyZWN0b3J5ICVzLicgJSAocmVsYXRpdmVfcGF0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSkp
CisgICAgcHJpbnQoJ1BsZWFzZSBlaXRoZXIgc3BlY2lmeSBhIHZhbGlkIHByb2plY3Qgcm9vdCBk
aXJlY3RvcnkgJworICAgICAgICAgICdvciBvbWl0IGl0IG9uIHRoZSBjb21tYW5kIGxpbmUuJykK
ICAgICBzeXMuZXhpdCgxKQogCiAKQEAgLTExOSwxMSArMTIyLDExIEBAIGRlZiBWZXJpZnlPdXRw
dXRGaWxlKG91dHB1dF9kaXIsIHJlbGF0aXZlX3BhdGgpOgogICAgICMgVE9ETyh3YW5AZ29vZ2xl
LmNvbSk6IFRoZSBmb2xsb3dpbmcgdXNlci1pbnRlcmFjdGlvbiBkb2Vzbid0CiAgICAgIyB3b3Jr
IHdpdGggYXV0b21hdGVkIHByb2Nlc3Nlcy4gIFdlIHNob3VsZCBwcm92aWRlIGEgd2F5IGZvciB0
aGUKICAgICAjIE1ha2VmaWxlIHRvIGZvcmNlIG92ZXJ3cml0aW5nIHRoZSBmaWxlcy4KLSAgICBw
cmludCAoJyVzIGFscmVhZHkgZXhpc3RzIGluIGRpcmVjdG9yeSAlcyAtIG92ZXJ3cml0ZSBpdD8g
KHkvTikgJyAlCi0gICAgICAgICAgIChyZWxhdGl2ZV9wYXRoLCBvdXRwdXRfZGlyKSkKKyAgICBw
cmludCgnJXMgYWxyZWFkeSBleGlzdHMgaW4gZGlyZWN0b3J5ICVzIC0gb3ZlcndyaXRlIGl0PyAo
eS9OKSAnICUKKyAgICAgICAgICAocmVsYXRpdmVfcGF0aCwgb3V0cHV0X2RpcikpCiAgICAgYW5z
d2VyID0gc3lzLnN0ZGluLnJlYWRsaW5lKCkuc3RyaXAoKQogICAgIGlmIGFuc3dlciBub3QgaW4g
Wyd5JywgJ1knXToKLSAgICAgIHByaW50ICdBQk9SVEVELicKKyAgICAgIHByaW50KCdBQk9SVEVE
LicpCiAgICAgICBzeXMuZXhpdCgxKQogCiAgICMgTWFrZXMgc3VyZSB0aGUgZGlyZWN0b3J5IGhv
bGRpbmcgdGhlIG91dHB1dCBmaWxlIGV4aXN0czsgY3JlYXRlcwpAQCAtMTQ2LDggKzE0OSw4IEBA
IGRlZiBWYWxpZGF0ZU91dHB1dERpcihvdXRwdXRfZGlyKToKIGRlZiBGdXNlR1Rlc3RIKGd0ZXN0
X3Jvb3QsIG91dHB1dF9kaXIpOgogICAiIiJTY2FucyBmb2xkZXIgZ3Rlc3Rfcm9vdCB0byBnZW5l
cmF0ZSBndGVzdC9ndGVzdC5oIGluIG91dHB1dF9kaXIuIiIiCiAKLSAgb3V0cHV0X2ZpbGUgPSBm
aWxlKG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCBHVEVTVF9IX09VVFBVVCksICd3JykKLSAgcHJv
Y2Vzc2VkX2ZpbGVzID0gc2V0cy5TZXQoKSAgIyBIb2xkcyBhbGwgZ3Rlc3QgaGVhZGVycyB3ZSd2
ZSBwcm9jZXNzZWQuCisgIG91dHB1dF9maWxlID0gb3Blbihvcy5wYXRoLmpvaW4ob3V0cHV0X2Rp
ciwgR1RFU1RfSF9PVVRQVVQpLCAndycpCisgIHByb2Nlc3NlZF9maWxlcyA9IHNldCgpICAjIEhv
bGRzIGFsbCBndGVzdCBoZWFkZXJzIHdlJ3ZlIHByb2Nlc3NlZC4KIAogICBkZWYgUHJvY2Vzc0Zp
bGUoZ3Rlc3RfaGVhZGVyX3BhdGgpOgogICAgICIiIlByb2Nlc3NlcyB0aGUgZ2l2ZW4gZ3Rlc3Qg
aGVhZGVyIGZpbGUuIiIiCkBAIC0xNTksMTAgKzE2MiwxMCBAQCBkZWYgRnVzZUdUZXN0SChndGVz
dF9yb290LCBvdXRwdXRfZGlyKToKICAgICBwcm9jZXNzZWRfZmlsZXMuYWRkKGd0ZXN0X2hlYWRl
cl9wYXRoKQogCiAgICAgIyBSZWFkcyBlYWNoIGxpbmUgaW4gdGhlIGdpdmVuIGd0ZXN0IGhlYWRl
ci4KLSAgICBmb3IgbGluZSBpbiBmaWxlKG9zLnBhdGguam9pbihndGVzdF9yb290LCBndGVzdF9o
ZWFkZXJfcGF0aCksICdyJyk6CisgICAgZm9yIGxpbmUgaW4gb3Blbihvcy5wYXRoLmpvaW4oZ3Rl
c3Rfcm9vdCwgZ3Rlc3RfaGVhZGVyX3BhdGgpLCAncicpOgogICAgICAgbSA9IElOQ0xVREVfR1RF
U1RfRklMRV9SRUdFWC5tYXRjaChsaW5lKQogICAgICAgaWYgbToKLSAgICAgICAgIyBJdCdzICcj
aW5jbHVkZSA8Z3Rlc3QvLi4uPicgLSBsZXQncyBwcm9jZXNzIGl0IHJlY3Vyc2l2ZWx5LgorICAg
ICAgICAjIEl0J3MgJyNpbmNsdWRlICJndGVzdC8uLi4iJyAtIGxldCdzIHByb2Nlc3MgaXQgcmVj
dXJzaXZlbHkuCiAgICAgICAgIFByb2Nlc3NGaWxlKCdpbmNsdWRlLycgKyBtLmdyb3VwKDEpKQog
ICAgICAgZWxzZToKICAgICAgICAgIyBPdGhlcndpc2Ugd2UgY29weSB0aGUgbGluZSB1bmNoYW5n
ZWQgdG8gdGhlIG91dHB1dCBmaWxlLgpAQCAtMTc1LDcgKzE3OCw3IEBAIGRlZiBGdXNlR1Rlc3RI
KGd0ZXN0X3Jvb3QsIG91dHB1dF9kaXIpOgogZGVmIEZ1c2VHVGVzdEFsbENjVG9GaWxlKGd0ZXN0
X3Jvb3QsIG91dHB1dF9maWxlKToKICAgIiIiU2NhbnMgZm9sZGVyIGd0ZXN0X3Jvb3QgdG8gZ2Vu
ZXJhdGUgZ3Rlc3QvZ3Rlc3QtYWxsLmNjIGluIG91dHB1dF9maWxlLiIiIgogCi0gIHByb2Nlc3Nl
ZF9maWxlcyA9IHNldHMuU2V0KCkKKyAgcHJvY2Vzc2VkX2ZpbGVzID0gc2V0KCkKIAogICBkZWYg
UHJvY2Vzc0ZpbGUoZ3Rlc3Rfc291cmNlX2ZpbGUpOgogICAgICIiIlByb2Nlc3NlcyB0aGUgZ2l2
ZW4gZ3Rlc3Qgc291cmNlIGZpbGUuIiIiCkBAIC0xODcsMjMgKzE5MCwyMyBAQCBkZWYgRnVzZUdU
ZXN0QWxsQ2NUb0ZpbGUoZ3Rlc3Rfcm9vdCwgb3V0cHV0X2ZpbGUpOgogICAgIHByb2Nlc3NlZF9m
aWxlcy5hZGQoZ3Rlc3Rfc291cmNlX2ZpbGUpCiAKICAgICAjIFJlYWRzIGVhY2ggbGluZSBpbiB0
aGUgZ2l2ZW4gZ3Rlc3Qgc291cmNlIGZpbGUuCi0gICAgZm9yIGxpbmUgaW4gZmlsZShvcy5wYXRo
LmpvaW4oZ3Rlc3Rfcm9vdCwgZ3Rlc3Rfc291cmNlX2ZpbGUpLCAncicpOgorICAgIGZvciBsaW5l
IGluIG9wZW4ob3MucGF0aC5qb2luKGd0ZXN0X3Jvb3QsIGd0ZXN0X3NvdXJjZV9maWxlKSwgJ3In
KToKICAgICAgIG0gPSBJTkNMVURFX0dURVNUX0ZJTEVfUkVHRVgubWF0Y2gobGluZSkKICAgICAg
IGlmIG06CiAgICAgICAgIGlmICdpbmNsdWRlLycgKyBtLmdyb3VwKDEpID09IEdURVNUX1NQSV9I
X1NFRUQ6Ci0gICAgICAgICAgIyBJdCdzICcjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+Jy4g
IFRoaXMgZmlsZSBpcyBub3QKLSAgICAgICAgICAjICNpbmNsdWRlZCBieSA8Z3Rlc3QvZ3Rlc3Qu
aD4sIHNvIHdlIG5lZWQgdG8gcHJvY2VzcyBpdC4KKyAgICAgICAgICAjIEl0J3MgJyNpbmNsdWRl
ICJndGVzdC9ndGVzdC1zcGkuaCInLiAgVGhpcyBmaWxlIGlzIG5vdAorICAgICAgICAgICMgI2lu
Y2x1ZGVkIGJ5ICJndGVzdC9ndGVzdC5oIiwgc28gd2UgbmVlZCB0byBwcm9jZXNzIGl0LgogICAg
ICAgICAgIFByb2Nlc3NGaWxlKEdURVNUX1NQSV9IX1NFRUQpCiAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgIyBJdCdzICcjaW5jbHVkZSA8Z3Rlc3QvZm9vLmg+JyB3aGVyZSBmb28gaXMgbm90IGd0
ZXN0LXNwaS4KLSAgICAgICAgICAjIFdlIHRyZWF0IGl0IGFzICcjaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4nLCBhcyBhbGwgb3RoZXIKKyAgICAgICAgICAjIEl0J3MgJyNpbmNsdWRlICJndGVzdC9m
b28uaCInIHdoZXJlIGZvbyBpcyBub3QgZ3Rlc3Qtc3BpLgorICAgICAgICAgICMgV2UgdHJlYXQg
aXQgYXMgJyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIicsIGFzIGFsbCBvdGhlcgogICAgICAgICAg
ICMgZ3Rlc3QgaGVhZGVycyBhcmUgYmVpbmcgZnVzZWQgaW50byBndGVzdC5oIGFuZCBjYW5ub3Qg
YmUKICAgICAgICAgICAjICNpbmNsdWRlZCBkaXJlY3RseS4KIAotICAgICAgICAgICMgVGhlcmUg
aXMgbm8gbmVlZCB0byAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4gbW9yZSB0aGFuIG9uY2UuCisg
ICAgICAgICAgIyBUaGVyZSBpcyBubyBuZWVkIHRvICNpbmNsdWRlICJndGVzdC9ndGVzdC5oIiBt
b3JlIHRoYW4gb25jZS4KICAgICAgICAgICBpZiBub3QgR1RFU1RfSF9TRUVEIGluIHByb2Nlc3Nl
ZF9maWxlczoKICAgICAgICAgICAgIHByb2Nlc3NlZF9maWxlcy5hZGQoR1RFU1RfSF9TRUVEKQot
ICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoJyNpbmNsdWRlIDwlcz5cbicgJSAoR1RFU1Rf
SF9PVVRQVVQsKSkKKyAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKCcjaW5jbHVkZSAiJXMi
XG4nICUgKEdURVNUX0hfT1VUUFVULCkpCiAgICAgICBlbHNlOgogICAgICAgICBtID0gSU5DTFVE
RV9TUkNfRklMRV9SRUdFWC5tYXRjaChsaW5lKQogICAgICAgICBpZiBtOgpAQCAtMjE4LDcgKzIy
MSw3IEBAIGRlZiBGdXNlR1Rlc3RBbGxDY1RvRmlsZShndGVzdF9yb290LCBvdXRwdXRfZmlsZSk6
CiBkZWYgRnVzZUdUZXN0QWxsQ2MoZ3Rlc3Rfcm9vdCwgb3V0cHV0X2Rpcik6CiAgICIiIlNjYW5z
IGZvbGRlciBndGVzdF9yb290IHRvIGdlbmVyYXRlIGd0ZXN0L2d0ZXN0LWFsbC5jYyBpbiBvdXRw
dXRfZGlyLiIiIgogCi0gIG91dHB1dF9maWxlID0gZmlsZShvcy5wYXRoLmpvaW4ob3V0cHV0X2Rp
ciwgR1RFU1RfQUxMX0NDX09VVFBVVCksICd3JykKKyAgb3V0cHV0X2ZpbGUgPSBvcGVuKG9zLnBh
dGguam9pbihvdXRwdXRfZGlyLCBHVEVTVF9BTExfQ0NfT1VUUFVUKSwgJ3cnKQogICBGdXNlR1Rl
c3RBbGxDY1RvRmlsZShndGVzdF9yb290LCBvdXRwdXRfZmlsZSkKICAgb3V0cHV0X2ZpbGUuY2xv
c2UoKQogCkBAIC0yNDIsNyArMjQ1LDcgQEAgZGVmIG1haW4oKToKICAgICAjIGZ1c2VfZ3Rlc3Rf
ZmlsZXMucHkgR1RFU1RfUk9PVF9ESVIgT1VUUFVUX0RJUgogICAgIEZ1c2VHVGVzdChzeXMuYXJn
dlsxXSwgc3lzLmFyZ3ZbMl0pCiAgIGVsc2U6Ci0gICAgcHJpbnQgX19kb2NfXworICAgIHByaW50
KF9fZG9jX18pCiAgICAgc3lzLmV4aXQoMSkKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zY3JpcHRzL2dlbl9ndGVzdF9wcmVkX2ltcGwucHkgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zY3JpcHRzL2dlbl9ndGVzdF9wcmVkX2ltcGwucHkKaW5kZXggODMwNzEzNGFk
YWY0ZGEyYmU4ZmEyMzMyMjkxNTIwZDM5Yzk0YmIxMi4uYjQzZWZkZjQxZTVjMDI3NDBmNzJiMzU1
MzJiZTVjZjA0OTc5NDgzNSAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ny
aXB0cy9nZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NjcmlwdHMvZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weQpAQCAtMTE1LDEwICsxMTUsOSBAQCBkZWYg
SGVhZGVyUHJlYW1ibGUobik6CiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJF
RF9JTVBMX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJFRF9JTVBMX0hf
CiAKLS8vIE1ha2VzIHN1cmUgdGhpcyBoZWFkZXIgaXMgbm90IGluY2x1ZGVkIGJlZm9yZSBndGVz
dC5oLgotI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0hfCi0jZXJyb3IgRG8gbm90
IGluY2x1ZGUgZ3Rlc3RfcHJlZF9pbXBsLmggZGlyZWN0bHkuICBJbmNsdWRlIGd0ZXN0LmggaW5z
dGVhZC4KLSNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9IXworI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKIAogLy8gVGhpcyBoZWFkZXIg
aW1wbGVtZW50cyBhIGZhbWlseSBvZiBnZW5lcmljIHByZWRpY2F0ZSBhc3NlcnRpb24KIC8vIG1h
Y3JvczoKQEAgLTIzOCwyNyArMjM3LDI1IEBAIEFzc2VydGlvblJlc3VsdCBBc3NlcnRQcmVkJShu
KXNIZWxwZXIoY29uc3QgY2hhciogcHJlZF90ZXh0IiIiICUgREVGUwogICBpbXBsICs9ICIiIikg
ewogICBpZiAocHJlZCglKHZzKXMpKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIE1l
c3NhZ2UgbXNnOwogIiIiICUgREVGUwogCi0gIGltcGwgKz0gJyAgbXNnIDw8IHByZWRfdGV4dCA8
PCAiKCInCisgIGltcGwgKz0gJyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBwcmVkX3Rl
eHQgPDwgIigiJwogCiAgIGltcGwgKz0gSXRlcihuLCAiIiIKLSAgICAgIDw8IGUlcyIiIiwgc2Vw
PScgPDwgIiwgIicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZSVzIiIiLCBzZXA9
JyA8PCAiLCAiJykKIAogICBpbXBsICs9ICcgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVy
ZSInCiAKICAgaW1wbCArPSBJdGVyKG4sICIiIgotICAgICAgPDwgIlxcbiIgPDwgZSVzIDw8ICIg
ZXZhbHVhdGVzIHRvICIgPDwgdiVzIiIiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICJcXG4iIDw8IGUlcyA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYlcyIiIikKIAogICBpbXBsICs9
ICIiIjsKLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKIH0KIAogLy8gSW50ZXJuYWwg
bWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQlKG4pcy4K
IC8vIERvbid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KICNkZWZpbmUgR1RFU1RfUFJFRF9GT1JN
QVQlKG4pc18ocHJlZF9mb3JtYXQsICUodnMpcywgb25fZmFpbHVyZSlcXAotICBHVEVTVF9BU1NF
UlRfKHByZWRfZm9ybWF0KCUodnRzKXMsICUodnMpcyksXFwKKyAgR1RFU1RfQVNTRVJUXyhwcmVk
X2Zvcm1hdCglKHZ0cylzLCAlKHZzKXMpLCBcXAogICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUp
CiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BS
RUQlKG4pcy4gIERvbid0IHVzZQpAQCAtMjk3LDE2ICsyOTQsMTcgQEAgZGVmIEhlYWRlclBvc3Rh
bWJsZSgpOgogCiAgIHJldHVybiAiIiIKIAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKwogI2Vu
ZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BSRURfSU1QTF9IXwogIiIiCiAKIAog
ZGVmIEdlbmVyYXRlRmlsZShwYXRoLCBjb250ZW50KToKLSAgIiIiR2l2ZW4gYSBmaWxlIHBhdGgg
YW5kIGEgY29udGVudCBzdHJpbmcsIG92ZXJ3cml0ZXMgaXQgd2l0aCB0aGUKLSAgZ2l2ZW4gY29u
dGVudC4iIiIKLQorICAiIiJHaXZlbiBhIGZpbGUgcGF0aCBhbmQgYSBjb250ZW50IHN0cmluZwor
ICAgICBvdmVyd3JpdGVzIGl0IHdpdGggdGhlIGdpdmVuIGNvbnRlbnQuCisgICIiIgogICBwcmlu
dCAnVXBkYXRpbmcgZmlsZSAlcyAuIC4gLicgJSBwYXRoCi0KICAgZiA9IGZpbGUocGF0aCwgJ3cr
JykKICAgcHJpbnQgPj5mLCBjb250ZW50LAogICBmLmNsb3NlKCkKQEAgLTMxNiw4ICszMTQsOCBA
QCBkZWYgR2VuZXJhdGVGaWxlKHBhdGgsIGNvbnRlbnQpOgogCiBkZWYgR2VuZXJhdGVIZWFkZXIo
bik6CiAgICIiIkdpdmVuIHRoZSBtYXhpbXVtIGFyaXR5IG4sIHVwZGF0ZXMgdGhlIGhlYWRlciBm
aWxlIHRoYXQgaW1wbGVtZW50cwotICB0aGUgcHJlZGljYXRlIGFzc2VydGlvbnMuIiIiCi0KKyAg
dGhlIHByZWRpY2F0ZSBhc3NlcnRpb25zLgorICAiIiIKICAgR2VuZXJhdGVGaWxlKEhFQURFUiwK
ICAgICAgICAgICAgICAgIEhlYWRlclByZWFtYmxlKG4pCiAgICAgICAgICAgICAgICArICcnLmpv
aW4oW0ltcGxlbWVudGF0aW9uRm9yQXJpdHkoaSkgZm9yIGkgaW4gT25lVG8obildKQpAQCAtMzg2
LDggKzM4NCw4IEBAIGRlZiBVbml0VGVzdFByZWFtYmxlKCk6CiAKICNpbmNsdWRlIDxpb3N0cmVh
bT4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3Bp
Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGku
aCIKIAogLy8gQSB1c2VyLWRlZmluZWQgZGF0YSB0eXBlLgogc3RydWN0IEJvb2wgewpAQCAtNDc4
LDE1ICs0NzYsMTQgQEAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRGb3JtYXRGdW5jdGlv
biUobilzKCIiIiAlIERFRlMKICAgaWYgKFByZWRGdW5jdGlvbiUobilzKCUodnMpcykpCiAgICAg
cmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5nOjpNZXNzYWdl
IG1zZzsKLSAgbXNnIDw8ICIiIiAlIERFRlMKKyAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZh
aWx1cmUoKQorICAgICAgPDwgIiIiICUgREVGUwogCiAgIHRlc3RzICs9IEl0ZXIobiwgJ2Ulcycs
IHNlcD0nIDw8ICIgKyAiIDw8ICcpCiAKICAgdGVzdHMgKz0gIiIiCiAgICAgICA8PCAiIGlzIGV4
cGVjdGVkIHRvIGJlIHBvc2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKICAgICAgIDw8ICUodl9z
dW0pcyA8PCAiLiI7Ci0gIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9
CiAiIiIgJSBERUZTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Njcmlw
dHMvZ3Rlc3QtY29uZmlnLmluIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9ndGVz
dC1jb25maWcuaW4KaW5kZXggOWM3MjYzODU0YjlmODYzYjYxOGM3MDhkZTFlZmUwZThiMWY3Mjgw
YS4uNzgwZjg0MzJlZmNjMWFlZWFhYWQwNzA2MDg2ZDNmZjY0MTI4NWI2OCAxMDA3NTUKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9ndGVzdC1jb25maWcuaW4KKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9ndGVzdC1jb25maWcuaW4KQEAgLTIwOSw3ICsy
MDksNyBAQCBpZiB0ZXN0ICIke3RoaXNfYmluZGlyfSIgPSAiJHt0aGlzX2JpbmRpciUke2JpbmRp
cn19IjsgdGhlbgogICAjIFRoZSBwYXRoIHRvIHRoZSBzY3JpcHQgZG9lc24ndCBlbmQgaW4gdGhl
IGJpbmRpciBzZXF1ZW5jZSBmcm9tIEF1dG9jb25mLAogICAjIGFzc3VtZSB0aGF0IHdlIGFyZSBp
biBhIGJ1aWxkIHRyZWUuCiAgIGJ1aWxkX2Rpcj1gZGlybmFtZSAke3RoaXNfYmluZGlyfWAKLSAg
c3JjX2Rpcj1gY2QgJHt0aGlzX2JpbmRpcn0vQHRvcF9zcmNkaXJAOyBwd2QgLVBgCisgIHNyY19k
aXI9YGNkICR7dGhpc19iaW5kaXJ9OyBjZCBAdG9wX3NyY2RpckA7IHB3ZCAtUGAKIAogICAjIFRP
RE8oY2hhbmRsZXJjQGdvb2dsZS5jb20pOiBUaGlzIGlzIGEgZGFuZ2Vyb3VzIGRlcGVuZGVuY3kg
b24gbGlidG9vbCwgd2UKICAgIyBzaG91bGQgd29yayB0byByZW1vdmUgaXQsIGFuZC9vciByZW1v
dmUgbGlidG9vbCBhbHRvZ2V0aGVyLCByZXBsYWNpbmcgaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcHVtcC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NjcmlwdHMvcHVtcC5weQppbmRleCBmMTVjMWI2Y2ViNGI4YjFiYjBiZjRlODNlM2VhOTNiMzhj
Nzg1ODAwLi41ZWZiNjUzYzIwN2QxZjFjMmFlY2M0ZDY5MGJmNzMyZTNjMWQ3MWFiIDEwMDc1NQot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3B1bXAucHkKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9wdW1wLnB5CkBAIC0yOSw3ICsyOSw3IEBACiAjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0iIiJwdW1wIHYwLjEgLSBQcmV0dHkgVXNlZnVs
IGZvciBNZXRhIFByb2dyYW1taW5nLgorIiIicHVtcCB2MC4yLjAgLSBQcmV0dHkgVXNlZnVsIGZv
ciBNZXRhIFByb2dyYW1taW5nLgogCiBBIHRvb2wgZm9yIHByZXByb2Nlc3NvciBtZXRhIHByb2dy
YW1taW5nLiAgVXNlZnVsIGZvciBnZW5lcmF0aW5nCiByZXBldGl0aXZlIGJvaWxlcnBsYXRlIGNv
ZGUuICBFc3BlY2lhbGx5IHVzZWZ1bCBmb3Igd3JpdGluZyBDKysKQEAgLTc4LDcgKzc4LDYgQEAg
VE9LRU5fVEFCTEUgPSBbCiAgICAgKHJlLmNvbXBpbGUocidcJHJhbmdlXHMrJyksICckcmFuZ2Un
KSwKICAgICAocmUuY29tcGlsZShyJ1wkW19BLVphLXpdXHcqJyksICckaWQnKSwKICAgICAocmUu
Y29tcGlsZShyJ1wkXChcJFwpJyksICckKCQpJyksCi0gICAgKHJlLmNvbXBpbGUocidcJFwkLion
KSwgJyQkJyksCiAgICAgKHJlLmNvbXBpbGUocidcJCcpLCAnJCcpLAogICAgIChyZS5jb21waWxl
KHInXFtcW1xuPycpLCAnW1snKSwKICAgICAocmUuY29tcGlsZShyJ1xdXF1cbj8nKSwgJ11dJyks
CkBAIC0yMjQsNiArMjIzLDE3IEBAIGRlZiBTdWJTdHJpbmcobGluZXMsIHN0YXJ0LCBlbmQpOgog
ICByZXR1cm4gJycuam9pbihyZXN1bHRfbGluZXMpCiAKIAorZGVmIFN0cmlwTWV0YUNvbW1lbnRz
KHN0cik6CisgICIiIlN0cmlwIG1ldGEgY29tbWVudHMgZnJvbSBlYWNoIGxpbmUgaW4gdGhlIGdp
dmVuIHN0cmluZy4iIiIKKworICAjIEZpcnN0LCBjb21wbGV0ZWx5IHJlbW92ZSBsaW5lcyBjb250
YWluaW5nIG5vdGhpbmcgYnV0IGEgbWV0YQorICAjIGNvbW1lbnQsIGluY2x1ZGluZyB0aGUgdHJh
aWxpbmcgXG4uCisgIHN0ciA9IHJlLnN1YihyJ15ccypcJFwkLipcbicsICcnLCBzdHIpCisKKyAg
IyBUaGVuLCByZW1vdmUgbWV0YSBjb21tZW50cyBmcm9tIGNvbnRlbnRmdWwgbGluZXMuCisgIHJl
dHVybiByZS5zdWIocidccypcJFwkLionLCAnJywgc3RyKQorCisKIGRlZiBNYWtlVG9rZW4obGlu
ZXMsIHN0YXJ0LCBlbmQsIHRva2VuX3R5cGUpOgogICAiIiJDcmVhdGVzIGEgbmV3IGluc3RhbmNl
IG9mIFRva2VuLiIiIgogCkBAIC0zMTEsMTEgKzMyMSw3IEBAIGRlZiBUb2tlbml6ZUxpbmVzKGxp
bmVzLCBwb3MpOgogICAgICAgcHJldl90b2tlbiA9IE1ha2VUb2tlbihsaW5lcywgcG9zLCBmb3Vu
ZC5zdGFydCwgJ2NvZGUnKQogICAgICAgcHJldl90b2tlbl9yc3RyaXBwZWQgPSBSU3RyaXBOZXdM
aW5lRnJvbVRva2VuKHByZXZfdG9rZW4pCiAKLSAgICBpZiBmb3VuZC50b2tlbl90eXBlID09ICck
JCc6ICAjIEEgbWV0YSBjb21tZW50LgotICAgICAgaWYgcHJldl90b2tlbl9yc3RyaXBwZWQ6Ci0g
ICAgICAgIHlpZWxkIHByZXZfdG9rZW5fcnN0cmlwcGVkCi0gICAgICBwb3MgPSBDdXJzb3IoZm91
bmQuZW5kLmxpbmUgKyAxLCAwKQotICAgIGVsaWYgZm91bmQudG9rZW5fdHlwZSA9PSAnJHZhcic6
CisgICAgaWYgZm91bmQudG9rZW5fdHlwZSA9PSAnJHZhcic6CiAgICAgICBpZiBwcmV2X3Rva2Vu
X3JzdHJpcHBlZDoKICAgICAgICAgeWllbGQgcHJldl90b2tlbl9yc3RyaXBwZWQKICAgICAgIHlp
ZWxkIGZvdW5kCkBAIC0zNzQsOCArMzgwLDExIEBAIGRlZiBUb2tlbml6ZUxpbmVzKGxpbmVzLCBw
b3MpOgogCiAKIGRlZiBUb2tlbml6ZShzKToKLSAgbGluZXMgPSBzLnNwbGl0bGluZXMoVHJ1ZSkK
LSAgcmV0dXJuIFRva2VuaXplTGluZXMobGluZXMsIEN1cnNvcigwLCAwKSkKKyAgIiIiQSBnZW5l
cmF0b3IgdGhhdCB5aWVsZHMgdGhlIHRva2VucyBpbiB0aGUgZ2l2ZW4gc3RyaW5nLiIiIgorICBp
ZiBzICE9ICcnOgorICAgIGxpbmVzID0gcy5zcGxpdGxpbmVzKFRydWUpCisgICAgZm9yIHRva2Vu
IGluIFRva2VuaXplTGluZXMobGluZXMsIEN1cnNvcigwLCAwKSk6CisgICAgICB5aWVsZCB0b2tl
bgogCiAKIGNsYXNzIENvZGVOb2RlOgpAQCAtNTY1LDExICs1NzQsOSBAQCBkZWYgUGFyc2VDb2Rl
Tm9kZSh0b2tlbnMpOgogICByZXR1cm4gQ29kZU5vZGUoYXRvbWljX2NvZGVfbGlzdCkKIAogCi1k
ZWYgQ29udmVydChmaWxlX3BhdGgpOgotICBzID0gZmlsZShmaWxlX3BhdGgsICdyJykucmVhZCgp
Ci0gIHRva2VucyA9IFtdCi0gIGZvciB0b2tlbiBpbiBUb2tlbml6ZShzKToKLSAgICB0b2tlbnMu
YXBwZW5kKHRva2VuKQorZGVmIFBhcnNlVG9BU1QocHVtcF9zcmNfdGV4dCk6CisgICIiIkNvbnZl
cnQgdGhlIGdpdmVuIFB1bXAgc291cmNlIHRleHQgaW50byBhbiBBU1QuIiIiCisgIHRva2VucyA9
IGxpc3QoVG9rZW5pemUocHVtcF9zcmNfdGV4dCkpCiAgIGNvZGVfbm9kZSA9IFBhcnNlQ29kZU5v
ZGUodG9rZW5zKQogICByZXR1cm4gY29kZV9ub2RlCiAKQEAgLTY5NywxNCArNzA0LDE0IEBAIGRl
ZiBSdW5Db2RlKGVudiwgY29kZV9ub2RlLCBvdXRwdXQpOgogICAgIFJ1bkF0b21pY0NvZGUoZW52
LCBhdG9taWNfY29kZSwgb3V0cHV0KQogCiAKLWRlZiBJc0NvbW1lbnQoY3VyX2xpbmUpOgorZGVm
IElzU2luZ2xlTGluZUNvbW1lbnQoY3VyX2xpbmUpOgogICByZXR1cm4gJy8vJyBpbiBjdXJfbGlu
ZQogCiAKLWRlZiBJc0luUHJlcHJvY2Vzc29yRGlyZXZhdGl2ZShwcmV2X2xpbmVzLCBjdXJfbGlu
ZSk6CitkZWYgSXNJblByZXByb2Nlc3NvckRpcmVjdGl2ZShwcmV2X2xpbmVzLCBjdXJfbGluZSk6
CiAgIGlmIGN1cl9saW5lLmxzdHJpcCgpLnN0YXJ0c3dpdGgoJyMnKToKICAgICByZXR1cm4gVHJ1
ZQotICByZXR1cm4gcHJldl9saW5lcyAhPSBbXSBhbmQgcHJldl9saW5lc1stMV0uZW5kc3dpdGgo
J1xcJykKKyAgcmV0dXJuIHByZXZfbGluZXMgYW5kIHByZXZfbGluZXNbLTFdLmVuZHN3aXRoKCdc
XCcpCiAKIAogZGVmIFdyYXBDb21tZW50KGxpbmUsIG91dHB1dCk6CkBAIC03NjEsNyArNzY4LDcg
QEAgZGVmIFdyYXBDb2RlKGxpbmUsIGxpbmVfY29uY2F0LCBvdXRwdXQpOgogICAgIG91dHB1dC5h
cHBlbmQocHJlZml4ICsgY3VyX2xpbmUuc3RyaXAoKSkKIAogCi1kZWYgV3JhcFByZXByb2Nlc3Nv
ckRpcmV2YXRpdmUobGluZSwgb3V0cHV0KToKK2RlZiBXcmFwUHJlcHJvY2Vzc29yRGlyZWN0aXZl
KGxpbmUsIG91dHB1dCk6CiAgIFdyYXBDb2RlKGxpbmUsICcgXFwnLCBvdXRwdXQpCiAKIApAQCAt
NzY5LDI5ICs3NzYsMzcgQEAgZGVmIFdyYXBQbGFpbkNvZGUobGluZSwgb3V0cHV0KToKICAgV3Jh
cENvZGUobGluZSwgJycsIG91dHB1dCkKIAogCi1kZWYgSXNIZWFkZXJHdWFyZE9ySW5jbHVkZShs
aW5lKToKK2RlZiBJc011bHRpTGluZUlXWVVQcmFnbWEobGluZSk6CisgIHJldHVybiByZS5zZWFy
Y2gocicvXCogSVdZVSBwcmFnbWE6ICcsIGxpbmUpCisKKworZGVmIElzSGVhZGVyR3VhcmRJbmNs
dWRlT3JPbmVMaW5lSVdZVVByYWdtYShsaW5lKToKICAgcmV0dXJuIChyZS5tYXRjaChyJ14jKGlm
bmRlZnxkZWZpbmV8ZW5kaWZccyovLylccypbXHdfXStccyokJywgbGluZSkgb3IKLSAgICAgICAg
ICByZS5tYXRjaChyJ14jaW5jbHVkZVxzJywgbGluZSkpCisgICAgICAgICAgcmUubWF0Y2gocide
I2luY2x1ZGVccycsIGxpbmUpIG9yCisgICAgICAgICAgIyBEb24ndCBicmVhayBJV1lVIHByYWdt
YXMsIGVpdGhlcjsgdGhhdCBjYXVzZXMgaXd5dS5weSBwcm9ibGVtcy4KKyAgICAgICAgICByZS5z
ZWFyY2gocicvLyBJV1lVIHByYWdtYTogJywgbGluZSkpCiAKIAogZGVmIFdyYXBMb25nTGluZShs
aW5lLCBvdXRwdXQpOgogICBsaW5lID0gbGluZS5yc3RyaXAoKQogICBpZiBsZW4obGluZSkgPD0g
ODA6CiAgICAgb3V0cHV0LmFwcGVuZChsaW5lKQotICBlbGlmIElzQ29tbWVudChsaW5lKToKLSAg
ICBpZiBJc0hlYWRlckd1YXJkT3JJbmNsdWRlKGxpbmUpOgotICAgICAgIyBUaGUgc3R5bGUgZ3Vp
ZGUgbWFkZSBhbiBleGNlcHRpb24gdG8gYWxsb3cgbG9uZyBoZWFkZXIgZ3VhcmQgbGluZXMKLSAg
ICAgICMgYW5kIGluY2x1ZGVzLgorICBlbGlmIElzU2luZ2xlTGluZUNvbW1lbnQobGluZSk6Cisg
ICAgaWYgSXNIZWFkZXJHdWFyZEluY2x1ZGVPck9uZUxpbmVJV1lVUHJhZ21hKGxpbmUpOgorICAg
ICAgIyBUaGUgc3R5bGUgZ3VpZGUgbWFkZSBhbiBleGNlcHRpb24gdG8gYWxsb3cgbG9uZyBoZWFk
ZXIgZ3VhcmQgbGluZXMsCisgICAgICAjIGluY2x1ZGVzIGFuZCBJV1lVIHByYWdtYXMuCiAgICAg
ICBvdXRwdXQuYXBwZW5kKGxpbmUpCiAgICAgZWxzZToKICAgICAgIFdyYXBDb21tZW50KGxpbmUs
IG91dHB1dCkKLSAgZWxpZiBJc0luUHJlcHJvY2Vzc29yRGlyZXZhdGl2ZShvdXRwdXQsIGxpbmUp
OgotICAgIGlmIElzSGVhZGVyR3VhcmRPckluY2x1ZGUobGluZSk6Ci0gICAgICAjIFRoZSBzdHls
ZSBndWlkZSBtYWRlIGFuIGV4Y2VwdGlvbiB0byBhbGxvdyBsb25nIGhlYWRlciBndWFyZCBsaW5l
cwotICAgICAgIyBhbmQgaW5jbHVkZXMuCisgIGVsaWYgSXNJblByZXByb2Nlc3NvckRpcmVjdGl2
ZShvdXRwdXQsIGxpbmUpOgorICAgIGlmIElzSGVhZGVyR3VhcmRJbmNsdWRlT3JPbmVMaW5lSVdZ
VVByYWdtYShsaW5lKToKKyAgICAgICMgVGhlIHN0eWxlIGd1aWRlIG1hZGUgYW4gZXhjZXB0aW9u
IHRvIGFsbG93IGxvbmcgaGVhZGVyIGd1YXJkIGxpbmVzLAorICAgICAgIyBpbmNsdWRlcyBhbmQg
SVdZVSBwcmFnbWFzLgogICAgICAgb3V0cHV0LmFwcGVuZChsaW5lKQogICAgIGVsc2U6Ci0gICAg
ICBXcmFwUHJlcHJvY2Vzc29yRGlyZXZhdGl2ZShsaW5lLCBvdXRwdXQpCisgICAgICBXcmFwUHJl
cHJvY2Vzc29yRGlyZWN0aXZlKGxpbmUsIG91dHB1dCkKKyAgZWxpZiBJc011bHRpTGluZUlXWVVQ
cmFnbWEobGluZSk6CisgICAgb3V0cHV0LmFwcGVuZChsaW5lKQogICBlbHNlOgogICAgIFdyYXBQ
bGFpbkNvZGUobGluZSwgb3V0cHV0KQogCkBAIC04MDUsMTYgKzgyMCwyMSBAQCBkZWYgQmVhdXRp
ZnlDb2RlKHN0cmluZyk6CiAgIHJldHVybiAnXG4nLmpvaW4ob3V0cHV0MikgKyAnXG4nCiAKIAor
ZGVmIENvbnZlcnRGcm9tUHVtcFNvdXJjZShzcmNfdGV4dCk6CisgICIiIlJldHVybiB0aGUgdGV4
dCBnZW5lcmF0ZWQgZnJvbSB0aGUgZ2l2ZW4gUHVtcCBzb3VyY2UgdGV4dC4iIiIKKyAgYXN0ID0g
UGFyc2VUb0FTVChTdHJpcE1ldGFDb21tZW50cyhzcmNfdGV4dCkpCisgIG91dHB1dCA9IE91dHB1
dCgpCisgIFJ1bkNvZGUoRW52KCksIGFzdCwgb3V0cHV0KQorICByZXR1cm4gQmVhdXRpZnlDb2Rl
KG91dHB1dC5zdHJpbmcpCisKKwogZGVmIG1haW4oYXJndik6CiAgIGlmIGxlbihhcmd2KSA9PSAx
OgogICAgIHByaW50IF9fZG9jX18KICAgICBzeXMuZXhpdCgxKQogCiAgIGZpbGVfcGF0aCA9IGFy
Z3ZbLTFdCi0gIGFzdCA9IENvbnZlcnQoZmlsZV9wYXRoKQotICBvdXRwdXQgPSBPdXRwdXQoKQot
ICBSdW5Db2RlKEVudigpLCBhc3QsIG91dHB1dCkKLSAgb3V0cHV0X3N0ciA9IEJlYXV0aWZ5Q29k
ZShvdXRwdXQuc3RyaW5nKQorICBvdXRwdXRfc3RyID0gQ29udmVydEZyb21QdW1wU291cmNlKGZp
bGUoZmlsZV9wYXRoLCAncicpLnJlYWQoKSkKICAgaWYgZmlsZV9wYXRoLmVuZHN3aXRoKCcucHVt
cCcpOgogICAgIG91dHB1dF9maWxlX3BhdGggPSBmaWxlX3BhdGhbOi01XQogICBlbHNlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9yZWxlYXNlX2RvY3MucHkg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3JlbGVhc2VfZG9jcy5weQpuZXcgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xMjkxMzQ3ZjY3NGFmZDdhZjg0OTYxNWE3NWIxMzhkNTI5M2Y5Y2Y0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9yZWxlYXNlX2RvY3MucHkK
QEAgLTAsMCArMSwxNTggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQg
MjAxMyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworIiIiU2NyaXB0IGZvciBicmFuY2hpbmcgR29vZ2xlIFRlc3QvTW9jayB3aWtpIHBhZ2VzIGZv
ciBhIG5ldyB2ZXJzaW9uLgorCitTWU5PUFNJUworICAgICAgIHJlbGVhc2VfZG9jcy5weSBORVdf
UkVMRUFTRV9WRVJTSU9OCisKKyAgICAgICBHb29nbGUgVGVzdCBhbmQgR29vZ2xlIE1vY2sncyBl
eHRlcm5hbCB1c2VyIGRvY3VtZW50YXRpb24gaXMgaW4KKyAgICAgICBpbnRlcmxpbmtlZCB3aWtp
IGZpbGVzLiAgV2hlbiB3ZSByZWxlYXNlIGEgbmV3IHZlcnNpb24gb2YKKyAgICAgICBHb29nbGUg
VGVzdCBvciBHb29nbGUgTW9jaywgd2UgbmVlZCB0byBicmFuY2ggdGhlIHdpa2kgZmlsZXMKKyAg
ICAgICBzdWNoIHRoYXQgdXNlcnMgb2YgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIEdvb2dsZSBUZXN0
L01vY2sgY2FuCisgICAgICAgbG9vayB1cCBkb2N1bWVuYXRpb24gcmVsZXZhbnQgZm9yIHRoYXQg
dmVyc2lvbi4gIFRoaXMgc2NyaXB0CisgICAgICAgYXV0b21hdGVzIHRoYXQgcHJvY2VzcyBieToK
KworICAgICAgICAgLSBicmFuY2hpbmcgdGhlIGN1cnJlbnQgd2lraSBwYWdlcyAod2hpY2ggZG9j
dW1lbnQgdGhlCisgICAgICAgICAgIGJlaGF2aW9yIG9mIHRoZSBTVk4gdHJ1bmsgaGVhZCkgdG8g
cGFnZXMgZm9yIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgICAgdmVyc2lvbiAoZS5nLiBicmFuY2hp
bmcgRkFRLndpa2kgdG8gVjJfNl9GQVEud2lraSB3aGVuCisgICAgICAgICAgIE5FV19SRUxFQVNF
X1ZFUlNJT04gaXMgMi42KTsKKyAgICAgICAgIC0gdXBkYXRpbmcgdGhlIGxpbmtzIGluIHRoZSBi
cmFuY2hlZCBmaWxlcyB0byBwb2ludCB0byB0aGUgYnJhbmNoZWQKKyAgICAgICAgICAgdmVyc2lv
biAoZS5nLiBhIGxpbmsgaW4gVjJfNl9GQVEud2lraSB0aGF0IHBvaW50ZWQgdG8KKyAgICAgICAg
ICAgUHJpbWVyLndpa2kjQW5jaG9yIHdpbGwgbm93IHBvaW50IHRvIFYyXzZfUHJpbWVyLndpa2kj
QW5jaG9yKS4KKworICAgICAgIE5PVEU6IE5FV19SRUxFQVNFX1ZFUlNJT04gbXVzdCBiZSBhIE5F
VyB2ZXJzaW9uIG51bWJlciBmb3IKKyAgICAgICB3aGljaCB0aGUgd2lraSBwYWdlcyBkb24ndCB5
ZXQgZXhpc3Q7IG90aGVyd2lzZSB5b3UnbGwgZ2V0IFNWTgorICAgICAgIGVycm9ycyBsaWtlICJz
dm46IFBhdGggJ1YxXzdfUHVtcE1hbnVhbC53aWtpJyBpcyBub3QgYQorICAgICAgIGRpcmVjdG9y
eSIgd2hlbiBydW5uaW5nIHRoZSBzY3JpcHQuCisKK0VYQU1QTEUKKyAgICAgICAkIGNkIFBBVEgv
VE8vR1RFU1RfU1ZOX1dPUktTUEFDRS90cnVuaworICAgICAgICQgc2NyaXB0cy9yZWxlYXNlX2Rv
Y3MucHkgMi42ICAjIGNyZWF0ZSB3aWtpIHBhZ2VzIGZvciB2Mi42CisgICAgICAgJCBzdm4gc3Rh
dHVzICAgICAgICAgICAgICAgICAgICMgdmVyaWZ5IHRoZSBmaWxlIGxpc3QKKyAgICAgICAkIHN2
biBkaWZmICAgICAgICAgICAgICAgICAgICAgIyB2ZXJpZnkgdGhlIGZpbGUgY29udGVudHMKKyAg
ICAgICAkIHN2biBjb21taXQgLW0gInJlbGVhc2Ugd2lraSBwYWdlcyBmb3IgdjIuNiIKKyIiIgor
CitfX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJworCitpbXBvcnQg
b3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworCitpbXBvcnQgY29tbW9uCisKKworIyBXaWtpIHBh
Z2VzIHRoYXQgc2hvdWxkbid0IGJlIGJyYW5jaGVkIGZvciBldmVyeSBndGVzdC9nbW9jayByZWxl
YXNlLgorR1RFU1RfVU5WRVJTSU9ORURfV0lLSVMgPSBbJ0Rldkd1aWRlLndpa2knXQorR01PQ0tf
VU5WRVJTSU9ORURfV0lLSVMgPSBbCisgICAgJ0Rlc2lnbkRvYy53aWtpJywKKyAgICAnRGV2R3Vp
ZGUud2lraScsCisgICAgJ0tub3duSXNzdWVzLndpa2knCisgICAgXQorCisKK2RlZiBEcm9wV2lr
aVN1ZmZpeCh3aWtpX2ZpbGVuYW1lKToKKyAgIiIiUmVtb3ZlcyB0aGUgLndpa2kgc3VmZml4IChp
ZiBhbnkpIGZyb20gdGhlIGdpdmVuIGZpbGVuYW1lLiIiIgorCisgIHJldHVybiAod2lraV9maWxl
bmFtZVs6LWxlbignLndpa2knKV0gaWYgd2lraV9maWxlbmFtZS5lbmRzd2l0aCgnLndpa2knKQor
ICAgICAgICAgIGVsc2Ugd2lraV9maWxlbmFtZSkKKworCitjbGFzcyBXaWtpQnJhbmNoZXIob2Jq
ZWN0KToKKyAgIiIiQnJhbmNoZXMgLi4uIiIiCisKKyAgZGVmIF9faW5pdF9fKHNlbGYsIGRvdF92
ZXJzaW9uKToKKyAgICBzZWxmLnByb2plY3QsIHN2bl9yb290X3BhdGggPSBjb21tb24uR2V0U3Zu
SW5mbygpCisgICAgaWYgc2VsZi5wcm9qZWN0IG5vdCBpbiAoJ2dvb2dsZXRlc3QnLCAnZ29vZ2xl
bW9jaycpOgorICAgICAgc3lzLmV4aXQoJ1RoaXMgc2NyaXB0IG11c3QgYmUgcnVuIGluIGEgZ3Rl
c3Qgb3IgZ21vY2sgU1ZOIHdvcmtzcGFjZS4nKQorICAgIHNlbGYud2lraV9kaXIgPSBzdm5fcm9v
dF9wYXRoICsgJy93aWtpJworICAgICMgVHVybiAnMi42JyB0byAnVjJfNl8nLgorICAgIHNlbGYu
dmVyc2lvbl9wcmVmaXggPSAnVicgKyBkb3RfdmVyc2lvbi5yZXBsYWNlKCcuJywgJ18nKSArICdf
JworICAgIHNlbGYuZmlsZXNfdG9fYnJhbmNoID0gc2VsZi5HZXRGaWxlc1RvQnJhbmNoKCkKKyAg
ICBwYWdlX25hbWVzID0gW0Ryb3BXaWtpU3VmZml4KGYpIGZvciBmIGluIHNlbGYuZmlsZXNfdG9f
YnJhbmNoXQorICAgICMgQSBsaW5rIHRvIEZvby53aWtpIGlzIGluIG9uZSBvZiB0aGUgZm9sbG93
aW5nIGZvcm1zOgorICAgICMgICBbRm9vIHdvcmRzXQorICAgICMgICBbRm9vI0FuY2hvciB3b3Jk
c10KKyAgICAjICAgW2h0dHA6Ly9jb2RlLmdvb2dsZS5jb20vLi4uL3dpa2kvRm9vIHdvcmRzXQor
ICAgICMgICBbaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS8uLi4vd2lraS9Gb28jQW5jaG9yIHdvcmRz
XQorICAgICMgV2Ugd2FudCB0byByZXBsYWNlICdGb28nIHdpdGggJ1YyXzZfRm9vJyBpbiB0aGUg
YWJvdmUgY2FzZXMuCisgICAgc2VsZi5zZWFyY2hfZm9yX3JlID0gcmUuY29tcGlsZSgKKyAgICAg
ICAgIyBUaGlzIHJlZ2V4IG1hdGNoZXMgZWl0aGVyCisgICAgICAgICMgICBbRm9vCisgICAgICAg
ICMgb3IKKyAgICAgICAgIyAgIC93aWtpL0ZvbworICAgICAgICAjIGZvbGxvd2VkIGJ5IGEgc3Bh
Y2Ugb3IgYSAjLCB3aGVyZSBGb28gaXMgdGhlIG5hbWUgb2YgYW4KKyAgICAgICAgIyB1bnZlcnNp
b25lZCB3aWtpIHBhZ2UuCisgICAgICAgIHInKFxbfC93aWtpLykoJXMpKFsgI10pJyAlICd8Jy5q
b2luKHBhZ2VfbmFtZXMpKQorICAgIHNlbGYucmVwbGFjZV93aXRoID0gcidcMSVzXDJcMycgJSAo
c2VsZi52ZXJzaW9uX3ByZWZpeCwpCisKKyAgZGVmIEdldEZpbGVzVG9CcmFuY2goc2VsZik6Cisg
ICAgIiIiUmV0dXJucyBhIGxpc3Qgb2YgLndpa2kgZmlsZSBuYW1lcyB0aGF0IG5lZWQgdG8gYmUg
YnJhbmNoZWQuIiIiCisKKyAgICB1bnZlcnNpb25lZF93aWtpcyA9IChHVEVTVF9VTlZFUlNJT05F
RF9XSUtJUyBpZiBzZWxmLnByb2plY3QgPT0gJ2dvb2dsZXRlc3QnCisgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSBHTU9DS19VTlZFUlNJT05FRF9XSUtJUykKKyAgICByZXR1cm4gW2YgZm9y
IGYgaW4gb3MubGlzdGRpcihzZWxmLndpa2lfZGlyKQorICAgICAgICAgICAgaWYgKGYuZW5kc3dp
dGgoJy53aWtpJykgYW5kCisgICAgICAgICAgICAgICAgbm90IHJlLm1hdGNoKHInXlZcZCcsIGYp
IGFuZCAgIyBFeGNsdWRlZCB2ZXJzaW9uZWQgLndpa2kgZmlsZXMuCisgICAgICAgICAgICAgICAg
ZiBub3QgaW4gdW52ZXJzaW9uZWRfd2lraXMpXQorCisgIGRlZiBCcmFuY2hGaWxlcyhzZWxmKToK
KyAgICAiIiJCcmFuY2hlcyB0aGUgLndpa2kgZmlsZXMgbmVlZGVkIHRvIGJlIGJyYW5jaGVkLiIi
IgorCisgICAgcHJpbnQgJ0JyYW5jaGluZyAlZCAud2lraSBmaWxlczonICUgKGxlbihzZWxmLmZp
bGVzX3RvX2JyYW5jaCksKQorICAgIG9zLmNoZGlyKHNlbGYud2lraV9kaXIpCisgICAgZm9yIGYg
aW4gc2VsZi5maWxlc190b19icmFuY2g6CisgICAgICBjb21tYW5kID0gJ3N2biBjcCAlcyAlcyVz
JyAlIChmLCBzZWxmLnZlcnNpb25fcHJlZml4LCBmKQorICAgICAgcHJpbnQgY29tbWFuZAorICAg
ICAgb3Muc3lzdGVtKGNvbW1hbmQpCisKKyAgZGVmIFVwZGF0ZUxpbmtzSW5CcmFuY2hlZEZpbGVz
KHNlbGYpOgorCisgICAgZm9yIGYgaW4gc2VsZi5maWxlc190b19icmFuY2g6CisgICAgICBzb3Vy
Y2VfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndpa2lfZGlyLCBmKQorICAgICAgdmVyc2lvbmVk
X2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi53aWtpX2Rpciwgc2VsZi52ZXJzaW9uX3ByZWZpeCAr
IGYpCisgICAgICBwcmludCAnVXBkYXRpbmcgbGlua3MgaW4gJXMuJyAlICh2ZXJzaW9uZWRfZmls
ZSwpCisgICAgICB0ZXh0ID0gZmlsZShzb3VyY2VfZmlsZSwgJ3InKS5yZWFkKCkKKyAgICAgIG5l
d190ZXh0ID0gc2VsZi5zZWFyY2hfZm9yX3JlLnN1YihzZWxmLnJlcGxhY2Vfd2l0aCwgdGV4dCkK
KyAgICAgIGZpbGUodmVyc2lvbmVkX2ZpbGUsICd3Jykud3JpdGUobmV3X3RleHQpCisKKworZGVm
IG1haW4oKToKKyAgaWYgbGVuKHN5cy5hcmd2KSAhPSAyOgorICAgIHN5cy5leGl0KF9fZG9jX18p
CisKKyAgYnJhbmNoZXIgPSBXaWtpQnJhbmNoZXIoc3lzLmFyZ3ZbMV0pCisgIGJyYW5jaGVyLkJy
YW5jaEZpbGVzKCkKKyAgYnJhbmNoZXIuVXBkYXRlTGlua3NJbkJyYW5jaGVkRmlsZXMoKQorCisK
K2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIG1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy90ZXN0L01ha2VmaWxlIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc2NyaXB0cy90ZXN0L01ha2VmaWxlCmluZGV4IGZmYzBjOTBhZDk5NTcyZGY5NGFm
YjViNjQxMzZhOWMyOTQ4OGFlMDYuLmNkZmY1ODQ2MzdiN2E2ZTlkZjFmYTQzY2U4ZjU4OGM0Mzgx
NWU1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvdGVzdC9N
YWtlZmlsZQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3Rlc3QvTWFrZWZp
bGUKQEAgLTIxLDcgKzIxLDkgQEAgU0FNUExFX0RJUiA9IC4uLy4uL3NhbXBsZXMKIEdURVNUX01B
SU5fQ0MgPSAuLi8uLi9zcmMvZ3Rlc3RfbWFpbi5jYwogCiAjIEZsYWdzIHBhc3NlZCB0byB0aGUg
cHJlcHJvY2Vzc29yLgotQ1BQRkxBR1MgKz0gLUkkKEZVU0VEX0dURVNUX0RJUikKKyMgV2UgaGF2
ZSBubyBpZGVhIGhlcmUgd2hldGhlciBwdGhyZWFkcyBpcyBhdmFpbGFibGUgaW4gdGhlIHN5c3Rl
bSwgc28KKyMgZGlzYWJsZSBpdHMgdXNlLgorQ1BQRkxBR1MgKz0gLUkkKEZVU0VEX0dURVNUX0RJ
UikgLURHVEVTVF9IQVNfUFRIUkVBRD0wCiAKICMgRmxhZ3MgcGFzc2VkIHRvIHRoZSBDKysgY29t
cGlsZXIuCiBDWFhGTEFHUyArPSAtZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2NyaXB0cy91cGxvYWQucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3Vw
bG9hZC5weQppbmRleCA2ZTZmOWExNDcxOWVmOGM5ZmRiNjAzYWQ1MGJkZDM1ZGM3OTk2ZTJkLi5j
ODUyZTRjOTFlMDZlZjdjNDllMDM4NjgzNTA5ZmZkOTQ5NWM4MjBmIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3VwbG9hZC5weQorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zY3JpcHRzL3VwbG9hZC5weQpAQCAtMjQyLDcgKzI0Miw3IEBAIGNsYXNzIEFi
c3RyYWN0UnBjU2VydmVyKG9iamVjdCk6CiAgICAgVGhlIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3Mg
d29ya3MgYXMgZm9sbG93czoKICAgICAgMSkgV2UgZ2V0IGEgdXNlcm5hbWUgYW5kIHBhc3N3b3Jk
IGZyb20gdGhlIHVzZXIKICAgICAgMikgV2UgdXNlIENsaWVudExvZ2luIHRvIG9idGFpbiBhbiBB
VVRIIHRva2VuIGZvciB0aGUgdXNlcgotICAgICAgICAoc2VlIGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vYXBpcy9hY2NvdW50cy9BdXRoRm9ySW5zdGFsbGVkQXBwcy5odG1sKS4KKyAgICAgICAgKHNl
ZSBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9pZGVudGl0eS9wcm90b2NvbHMvQXV0aEZv
ckluc3RhbGxlZEFwcHMpLgogICAgICAzKSBXZSBwYXNzIHRoZSBhdXRoIHRva2VuIHRvIC9fYWgv
bG9naW4gb24gdGhlIHNlcnZlciB0byBvYnRhaW4gYW4KICAgICAgICAgYXV0aGVudGljYXRpb24g
Y29va2llLiBJZiBsb2dpbiB3YXMgc3VjY2Vzc2Z1bCwgaXQgdHJpZXMgdG8gcmVkaXJlY3QKICAg
ICAgICAgdXMgdG8gdGhlIFVSTCB3ZSBwcm92aWRlZC4KQEAgLTUwNiw3ICs1MDYsNyBAQCBkZWYg
RW5jb2RlTXVsdGlwYXJ0Rm9ybURhdGEoZmllbGRzLCBmaWxlcyk6CiAgICAgKGNvbnRlbnRfdHlw
ZSwgYm9keSkgcmVhZHkgZm9yIGh0dHBsaWIuSFRUUCBpbnN0YW5jZS4KIAogICBTb3VyY2U6Ci0g
ICAgaHR0cDovL2FzcG4uYWN0aXZlc3RhdGUuY29tL0FTUE4vQ29va2Jvb2svUHl0aG9uL1JlY2lw
ZS8xNDYzMDYKKyAgICBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjAxMTYwNTIwMDEv
Y29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy8xNDYzMDYKICAgIiIiCiAgIEJPVU5EQVJZID0g
Jy1NLUEtRy1JLUMtLS1CLU8tVS1OLUQtQS1SLVktJwogICBDUkxGID0gJ1xyXG4nCkBAIC03MzIs
NyArNzMyLDcgQEAgY2xhc3MgU3VidmVyc2lvblZDUyhWZXJzaW9uQ29udHJvbFN5c3RlbSk6CiAg
ICAgZWxzZToKICAgICAgIHNlbGYucmV2X3N0YXJ0ID0gc2VsZi5yZXZfZW5kID0gTm9uZQogICAg
ICMgQ2FjaGUgb3V0cHV0IGZyb20gInN2biBsaXN0IC1yIFJFVk5PIGRpcm5hbWUiLgotICAgICMg
S2V5czogZGlybmFtZSwgVmFsdWVzOiAyLXR1cGxlIChvdXB1dCBmb3Igc3RhcnQgcmV2IGFuZCBl
bmQgcmV2KS4KKyAgICAjIEtleXM6IGRpcm5hbWUsIFZhbHVlczogMi10dXBsZSAob3V0cHV0IGZv
ciBzdGFydCByZXYgYW5kIGVuZCByZXYpLgogICAgIHNlbGYuc3ZubHNfY2FjaGUgPSB7fQogICAg
ICMgU1ZOIGJhc2UgVVJMIGlzIHJlcXVpcmVkIHRvIGZldGNoIGZpbGVzIGRlbGV0ZWQgaW4gYW4g
b2xkZXIgcmV2aXNpb24uCiAgICAgIyBSZXN1bHQgaXMgY2FjaGVkIHRvIG5vdCBndWVzcyBpdCBv
dmVyIGFuZCBvdmVyIGFnYWluIGluIEdldEJhc2VGaWxlKCkuCkBAIC04MDcsNyArODA3LDcgQEAg
Y2xhc3MgU3VidmVyc2lvblZDUyhWZXJzaW9uQ29udHJvbFN5c3RlbSk6CiAgICAgIyBzdm4gY2F0
IHRyYW5zbGF0ZXMga2V5d29yZHMgYnV0IHN2biBkaWZmIGRvZXNuJ3QuIEFzIGEgcmVzdWx0IG9m
IHRoaXMKICAgICAjIGJlaGF2aW9yIHBhdGNoaW5nLlBhdGNoQ2h1bmtzKCkgZmFpbHMgd2l0aCBh
IGNodW5rIG1pc21hdGNoIGVycm9yLgogICAgICMgVGhpcyBwYXJ0IHdhcyBvcmlnaW5hbGx5IHdy
aXR0ZW4gYnkgdGhlIFJldmlldyBCb2FyZCBkZXZlbG9wbWVudCB0ZWFtCi0gICAgIyB3aG8gaGFk
IHRoZSBzYW1lIHByb2JsZW0gKGh0dHA6Ly9yZXZpZXdzLnJldmlldy1ib2FyZC5vcmcvci8yNzYv
KS4KKyAgICAjIHdobyBoYWQgdGhlIHNhbWUgcHJvYmxlbSAoaHR0cHM6Ly9yZXZpZXdzLnJldmll
d2JvYXJkLm9yZy9yLzI3Ni8pLgogICAgICMgTWFwcGluZyBvZiBrZXl3b3JkcyB0byBrbm93biBh
bGlhc2VzCiAgICAgc3ZuX2tleXdvcmRzID0gewogICAgICAgIyBTdGFuZGFyZCBrZXl3b3JkcwpA
QCAtODYwLDcgKzg2MCw3IEBAIGNsYXNzIFN1YnZlcnNpb25WQ1MoVmVyc2lvbkNvbnRyb2xTeXN0
ZW0pOgogICAgICAgc3RhdHVzX2xpbmVzID0gc3RhdHVzLnNwbGl0bGluZXMoKQogICAgICAgIyBJ
ZiBmaWxlIGlzIGluIGEgY2wsIHRoZSBvdXRwdXQgd2lsbCBiZWdpbiB3aXRoCiAgICAgICAjICJc
bi0tLSBDaGFuZ2VsaXN0ICdjbF9uYW1lJzpcbiIuICBTZWUKLSAgICAgICMgaHR0cDovL3N2bi5j
b2xsYWIubmV0L3JlcG9zL3N2bi90cnVuay9ub3Rlcy9jaGFuZ2VsaXN0LWRlc2lnbi50eHQKKyAg
ICAgICMgaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMDkwOTE4MjM0ODE1L3N2bi5jb2xs
YWIubmV0L3JlcG9zL3N2bi90cnVuay9ub3Rlcy9jaGFuZ2VsaXN0LWRlc2lnbi50eHQKICAgICAg
IGlmIChsZW4oc3RhdHVzX2xpbmVzKSA9PSAzIGFuZAogICAgICAgICAgIG5vdCBzdGF0dXNfbGlu
ZXNbMF0gYW5kCiAgICAgICAgICAgc3RhdHVzX2xpbmVzWzFdLnN0YXJ0c3dpdGgoIi0tLSBDaGFu
Z2VsaXN0IikpOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0
LWFsbC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1hbGwuY2MKaW5kZXgg
ZmUzNDc2NWZiNjcyMThhNTZjYjVlMjUyYTcwZTY4YTM2YmM4OGQwNy4uYjIxN2ExODAwNmIwYzhi
ZGFmNGE5ZjliNmQwNmRlNGZkOGFkOWVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc3JjL2d0ZXN0LWFsbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMv
Z3Rlc3QtYWxsLmNjCkBAIC0yNiwyMiArMjYsMjIgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwogLy8KLS8vIEF1dGhvcjogbWhldWxlQGdvb2dsZS5j
b20gKE1hcmt1cyBIZXVsZSkKLS8vCi0vLyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChH
b29nbGUgVGVzdCkKKy8vIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsg
KEdvb2dsZSBUZXN0KQogLy8KIC8vIFNvbWV0aW1lcyBpdCdzIGRlc2lyYWJsZSB0byBidWlsZCBH
b29nbGUgVGVzdCBieSBjb21waWxpbmcgYSBzaW5nbGUgZmlsZS4KIC8vIFRoaXMgZmlsZSBzZXJ2
ZXMgdGhpcyBwdXJwb3NlLgogCiAvLyBUaGlzIGxpbmUgZW5zdXJlcyB0aGF0IGd0ZXN0LmggY2Fu
IGJlIGNvbXBpbGVkIG9uIGl0cyBvd24sIGV2ZW4KIC8vIHdoZW4gaXQncyBmdXNlZC4KLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIC8vIFRoZSBm
b2xsb3dpbmcgbGluZXMgcHVsbCBpbiB0aGUgcmVhbCBndGVzdCAqLmNjIGZpbGVzLgogI2luY2x1
ZGUgInNyYy9ndGVzdC5jYyIKICNpbmNsdWRlICJzcmMvZ3Rlc3QtZGVhdGgtdGVzdC5jYyIKICNp
bmNsdWRlICJzcmMvZ3Rlc3QtZmlsZXBhdGguY2MiCiAjaW5jbHVkZSAic3JjL2d0ZXN0LXBvcnQu
Y2MiCisjaW5jbHVkZSAic3JjL2d0ZXN0LXByaW50ZXJzLmNjIgogI2luY2x1ZGUgInNyYy9ndGVz
dC10ZXN0LXBhcnQuY2MiCiAjaW5jbHVkZSAic3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtZGVhdGgtdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1kZWF0aC10ZXN0LmNjCmluZGV4IDBj
Zjc4MjViY2FjNzlmYTM1ZDBhMTI0OGUyMzA4YTI0YWE2MjdiOGEuLjA5MDgzNTUxNjEyZTNjM2I5
YjNiZDdkMWVlNjA2YzE4ZmZiNWY3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NyYy9ndGVzdC1kZWF0aC10ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NyYy9ndGVzdC1kZWF0aC10ZXN0LmNjCkBAIC0yNiw1MiArMjYsNjUgQEAKIC8vIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBn
b29nbGUuY29tIChaaGFueW9uZyBXYW4pLCB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQor
CiAvLwogLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgZGVhdGggdGVzdHMuCiAKLSNpbmNsdWRlIDxn
dGVzdC9ndGVzdC1kZWF0aC10ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
cG9ydC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaCIKKyNpbmNsdWRlICJn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvY3Vz
dG9tL2d0ZXN0LmgiCiAKICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogCi0jaWYgR1RFU1RfT1Nf
TUFDCi0jaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4KLSNlbmRpZiAgLy8gR1RFU1RfT1NfTUFDCisj
IGlmIEdURVNUX09TX01BQworIyAgaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4KKyMgZW5kaWYgIC8v
IEdURVNUX09TX01BQwogCi0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxmY250bC5oPgot
I2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHN0ZGFyZy5oPgorIyBpbmNsdWRlIDxlcnJu
by5oPgorIyBpbmNsdWRlIDxmY250bC5oPgorIyBpbmNsdWRlIDxsaW1pdHMuaD4KIAotI2lmIEdU
RVNUX09TX1dJTkRPV1MKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZWxzZQotI2luY2x1ZGUgPHN5
cy9tbWFuLmg+Ci0jaW5jbHVkZSA8c3lzL3dhaXQuaD4KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lO
RE9XUworIyBpZiBHVEVTVF9PU19MSU5VWAorIyAgaW5jbHVkZSA8c2lnbmFsLmg+CisjIGVuZGlm
ICAvLyBHVEVTVF9PU19MSU5VWAogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCisj
IGluY2x1ZGUgPHN0ZGFyZy5oPgorCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKyMgIGluY2x1ZGUg
PHdpbmRvd3MuaD4KKyMgZWxzZQorIyAgaW5jbHVkZSA8c3lzL21tYW4uaD4KKyMgIGluY2x1ZGUg
PHN5cy93YWl0Lmg+CisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKyMgaWYgR1RFU1Rf
T1NfUU5YCisjICBpbmNsdWRlIDxzcGF3bi5oPgorIyBlbmRpZiAgLy8gR1RFU1RfT1NfUU5YCisK
KyMgaWYgR1RFU1RfT1NfRlVDSFNJQQorIyAgaW5jbHVkZSA8bGliL2ZkaW8vaW8uaD4KKyMgIGlu
Y2x1ZGUgPGxpYi9mZGlvL3NwYXduLmg+CisjICBpbmNsdWRlIDx6aXJjb24vcHJvY2Vzc2FyZ3Mu
aD4KKyMgIGluY2x1ZGUgPHppcmNvbi9zeXNjYWxscy5oPgorIyAgaW5jbHVkZSA8emlyY29uL3N5
c2NhbGxzL3BvcnQuaD4KKyMgZW5kaWYgIC8vIEdURVNUX09TX0ZVQ0hTSUEKIAotI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1z
dHJpbmcuaD4KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKIAotLy8gSW5kaWNhdGVz
IHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8g
aW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5o
IGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhp
cyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVk
aW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1Rf
SU1QTEVNRU5UQVRJT05fIDEKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1tZXNzYWdlLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgiCiAjaW5jbHVkZSAic3JjL2d0ZXN0
LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwogCiBuYW1lc3Bh
Y2UgdGVzdGluZyB7CiAKIC8vIENvbnN0YW50cy4KIAogLy8gVGhlIGRlZmF1bHQgZGVhdGggdGVz
dCBzdHlsZS4KLXN0YXRpYyBjb25zdCBjaGFyIGtEZWZhdWx0RGVhdGhUZXN0U3R5bGVbXSA9ICJm
YXN0IjsKKy8vCisvLyBUaGlzIGlzIGRlZmluZWQgaW4gaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIGFz
ICJmYXN0IiwgYnV0IGNhbiBiZSBvdmVycmlkZGVuIGJ5CisvLyBhIGRlZmluaXRpb24gaW4gaW50
ZXJuYWwvY3VzdG9tL2d0ZXN0LXBvcnQuaC4gVGhlIHJlY29tbWVuZGVkIHZhbHVlLCB3aGljaCBp
cworLy8gdXNlZCBpbnRlcm5hbGx5IGF0IEdvb2dsZSwgaXMgInRocmVhZHNhZmUiLgorc3RhdGlj
IGNvbnN0IGNoYXIga0RlZmF1bHREZWF0aFRlc3RTdHlsZVtdID0gR1RFU1RfREVGQVVMVF9ERUFU
SF9URVNUX1NUWUxFOwogCiBHVEVTVF9ERUZJTkVfc3RyaW5nXygKICAgICBkZWF0aF90ZXN0X3N0
eWxlLApAQCAtMTAwLDM2ICsxMTMsNzkgQEAgR1RFU1RfREVGSU5FX3N0cmluZ18oCiAgICAgIklu
ZGljYXRlcyB0aGUgZmlsZSwgbGluZSBudW1iZXIsIHRlbXBvcmFsIGluZGV4IG9mICIKICAgICAi
dGhlIHNpbmdsZSBkZWF0aCB0ZXN0IHRvIHJ1biwgYW5kIGEgZmlsZSBkZXNjcmlwdG9yIHRvICIK
ICAgICAid2hpY2ggYSBzdWNjZXNzIGNvZGUgbWF5IGJlIHNlbnQsIGFsbCBzZXBhcmF0ZWQgYnkg
IgotICAgICJjb2xvbnMuICBUaGlzIGZsYWcgaXMgc3BlY2lmaWVkIGlmIGFuZCBvbmx5IGlmIHRo
ZSBjdXJyZW50ICIKKyAgICAidGhlICd8JyBjaGFyYWN0ZXJzLiAgVGhpcyBmbGFnIGlzIHNwZWNp
ZmllZCBpZiBhbmQgb25seSBpZiB0aGUgY3VycmVudCAiCiAgICAgInByb2Nlc3MgaXMgYSBzdWIt
cHJvY2VzcyBsYXVuY2hlZCBmb3IgcnVubmluZyBhIHRocmVhZC1zYWZlICIKICAgICAiZGVhdGgg
dGVzdC4gIEZPUiBJTlRFUk5BTCBVU0UgT05MWS4iKTsKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5h
bAogCiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKIAorbmFtZXNwYWNlIGludGVybmFsIHsKKwor
Ly8gVmFsaWQgb25seSBmb3IgZmFzdCBkZWF0aCB0ZXN0cy4gSW5kaWNhdGVzIHRoZSBjb2RlIGlz
IHJ1bm5pbmcgaW4gdGhlCisvLyBjaGlsZCBwcm9jZXNzIG9mIGEgZmFzdCBzdHlsZSBkZWF0aCB0
ZXN0LgorIyBpZiAhR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfRlVDSFNJQQorc3RhdGlj
IGJvb2wgZ19pbl9mYXN0X2RlYXRoX3Rlc3RfY2hpbGQgPSBmYWxzZTsKKyMgZW5kaWYKKworLy8g
UmV0dXJucyBhIEJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBjYWxsZXIgaXMg
Y3VycmVudGx5CisvLyBleGVjdXRpbmcgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGRlYXRoIHRlc3Qg
Y2hpbGQgcHJvY2Vzcy4gIFRvb2xzIHN1Y2ggYXMKKy8vIFZhbGdyaW5kIGhlYXAgY2hlY2tlcnMg
bWF5IG5lZWQgdGhpcyB0byBtb2RpZnkgdGhlaXIgYmVoYXZpb3IgaW4gZGVhdGgKKy8vIHRlc3Rz
LiAgSU1QT1JUQU5UOiBUaGlzIGlzIGFuIGludGVybmFsIHV0aWxpdHkuICBVc2luZyBpdCBtYXkg
YnJlYWsgdGhlCisvLyBpbXBsZW1lbnRhdGlvbiBvZiBkZWF0aCB0ZXN0cy4gIFVzZXIgY29kZSBN
VVNUIE5PVCB1c2UgaXQuCitib29sIEluRGVhdGhUZXN0Q2hpbGQoKSB7CisjIGlmIEdURVNUX09T
X1dJTkRPV1MgfHwgR1RFU1RfT1NfRlVDSFNJQQorCisgIC8vIE9uIFdpbmRvd3MgYW5kIEZ1Y2hz
aWEsIGRlYXRoIHRlc3RzIGFyZSB0aHJlYWQtc2FmZSByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZQor
ICAvLyBvZiB0aGUgZGVhdGhfdGVzdF9zdHlsZSBmbGFnLgorICByZXR1cm4gIUdURVNUX0ZMQUco
aW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpLmVtcHR5KCk7CisKKyMgZWxzZQorCisgIGlmIChHVEVT
VF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZlIikKKyAgICByZXR1cm4gIUdU
RVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpLmVtcHR5KCk7CisgIGVsc2UKKyAgICBy
ZXR1cm4gZ19pbl9mYXN0X2RlYXRoX3Rlc3RfY2hpbGQ7CisjZW5kaWYKK30KKworfSAgLy8gbmFt
ZXNwYWNlIGludGVybmFsCisKIC8vIEV4aXRlZFdpdGhDb2RlIGNvbnN0cnVjdG9yLgogRXhpdGVk
V2l0aENvZGU6OkV4aXRlZFdpdGhDb2RlKGludCBleGl0X2NvZGUpIDogZXhpdF9jb2RlXyhleGl0
X2NvZGUpIHsKIH0KIAogLy8gRXhpdGVkV2l0aENvZGUgZnVuY3Rpb24tY2FsbCBvcGVyYXRvci4K
IGJvb2wgRXhpdGVkV2l0aENvZGU6Om9wZXJhdG9yKCkoaW50IGV4aXRfc3RhdHVzKSBjb25zdCB7
Ci0jaWYgR1RFU1RfT1NfV0lORE9XUworIyBpZiBHVEVTVF9PU19XSU5ET1dTIHx8IEdURVNUX09T
X0ZVQ0hTSUEKKwogICByZXR1cm4gZXhpdF9zdGF0dXMgPT0gZXhpdF9jb2RlXzsKLSNlbHNlCisK
KyMgZWxzZQorCiAgIHJldHVybiBXSUZFWElURUQoZXhpdF9zdGF0dXMpICYmIFdFWElUU1RBVFVT
KGV4aXRfc3RhdHVzKSA9PSBleGl0X2NvZGVfOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dT
CisKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfRlVDSFNJQQogfQog
Ci0jaWYgIUdURVNUX09TX1dJTkRPV1MKKyMgaWYgIUdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNU
X09TX0ZVQ0hTSUEKIC8vIEtpbGxlZEJ5U2lnbmFsIGNvbnN0cnVjdG9yLgogS2lsbGVkQnlTaWdu
YWw6OktpbGxlZEJ5U2lnbmFsKGludCBzaWdudW0pIDogc2lnbnVtXyhzaWdudW0pIHsKIH0KIAog
Ly8gS2lsbGVkQnlTaWduYWwgZnVuY3Rpb24tY2FsbCBvcGVyYXRvci4KIGJvb2wgS2lsbGVkQnlT
aWduYWw6Om9wZXJhdG9yKCkoaW50IGV4aXRfc3RhdHVzKSBjb25zdCB7CisjICBpZiBkZWZpbmVk
KEdURVNUX0tJTExFRF9CWV9TSUdOQUxfT1ZFUlJJREVfKQorICB7CisgICAgYm9vbCByZXN1bHQ7
CisgICAgaWYgKEdURVNUX0tJTExFRF9CWV9TSUdOQUxfT1ZFUlJJREVfKHNpZ251bV8sIGV4aXRf
c3RhdHVzLCAmcmVzdWx0KSkgeworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgIH0KKyMg
IGVuZGlmICAvLyBkZWZpbmVkKEdURVNUX0tJTExFRF9CWV9TSUdOQUxfT1ZFUlJJREVfKQogICBy
ZXR1cm4gV0lGU0lHTkFMRUQoZXhpdF9zdGF0dXMpICYmIFdURVJNU0lHKGV4aXRfc3RhdHVzKSA9
PSBzaWdudW1fOwogfQotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8g
IUdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX0ZVQ0hTSUEKIAogbmFtZXNwYWNlIGludGVy
bmFsIHsKIApAQCAtMTM3LDIyICsxOTMsMjcgQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIAogLy8g
R2VuZXJhdGVzIGEgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiBhIGdpdmVuIGV4aXQgY29kZSwgaW4g
dGhlIGZvcm1hdAogLy8gc3BlY2lmaWVkIGJ5IHdhaXQoMikuCi1zdGF0aWMgU3RyaW5nIEV4aXRT
dW1tYXJ5KGludCBleGl0X2NvZGUpIHsKK3N0YXRpYyBzdGQ6OnN0cmluZyBFeGl0U3VtbWFyeShp
bnQgZXhpdF9jb2RlKSB7CiAgIE1lc3NhZ2UgbTsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisKKyMg
aWYgR1RFU1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19GVUNIU0lBCisKICAgbSA8PCAiRXhpdGVk
IHdpdGggZXhpdCBzdGF0dXMgIiA8PCBleGl0X2NvZGU7Ci0jZWxzZQorCisjIGVsc2UKKwogICBp
ZiAoV0lGRVhJVEVEKGV4aXRfY29kZSkpIHsKICAgICBtIDw8ICJFeGl0ZWQgd2l0aCBleGl0IHN0
YXR1cyAiIDw8IFdFWElUU1RBVFVTKGV4aXRfY29kZSk7CiAgIH0gZWxzZSBpZiAoV0lGU0lHTkFM
RUQoZXhpdF9jb2RlKSkgewogICAgIG0gPDwgIlRlcm1pbmF0ZWQgYnkgc2lnbmFsICIgPDwgV1RF
Uk1TSUcoZXhpdF9jb2RlKTsKICAgfQotI2lmZGVmIFdDT1JFRFVNUAorIyAgaWZkZWYgV0NPUkVE
VU1QCiAgIGlmIChXQ09SRURVTVAoZXhpdF9jb2RlKSkgewogICAgIG0gPDwgIiAoY29yZSBkdW1w
ZWQpIjsKICAgfQotI2VuZGlmCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgIGVuZGlm
CisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTIHx8IEdURVNUX09TX0ZVQ0hTSUEKKwogICBy
ZXR1cm4gbS5HZXRTdHJpbmcoKTsKIH0KIApAQCAtMTYyLDQyICsyMjMsNTkgQEAgYm9vbCBFeGl0
ZWRVbnN1Y2Nlc3NmdWxseShpbnQgZXhpdF9zdGF0dXMpIHsKICAgcmV0dXJuICFFeGl0ZWRXaXRo
Q29kZSgwKShleGl0X3N0YXR1cyk7CiB9CiAKLSNpZiAhR1RFU1RfT1NfV0lORE9XUworIyBpZiAh
R1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfRlVDSFNJQQogLy8gR2VuZXJhdGVzIGEgdGV4
dHVhbCBmYWlsdXJlIG1lc3NhZ2Ugd2hlbiBhIGRlYXRoIHRlc3QgZmluZHMgbW9yZSB0aGFuCiAv
LyBvbmUgdGhyZWFkIHJ1bm5pbmcsIG9yIGNhbm5vdCBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiB0
aHJlYWRzLCBwcmlvcgogLy8gdG8gZXhlY3V0aW5nIHRoZSBnaXZlbiBzdGF0ZW1lbnQuICBJdCBp
cyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlCiAvLyBjYWxsZXIgbm90IHRvIHBhc3MgYSB0aHJl
YWRfY291bnQgb2YgMS4KLXN0YXRpYyBTdHJpbmcgRGVhdGhUZXN0VGhyZWFkV2FybmluZyhzaXpl
X3QgdGhyZWFkX2NvdW50KSB7CitzdGF0aWMgc3RkOjpzdHJpbmcgRGVhdGhUZXN0VGhyZWFkV2Fy
bmluZyhzaXplX3QgdGhyZWFkX2NvdW50KSB7CiAgIE1lc3NhZ2UgbXNnOwogICBtc2cgPDwgIkRl
YXRoIHRlc3RzIHVzZSBmb3JrKCksIHdoaWNoIGlzIHVuc2FmZSBwYXJ0aWN1bGFybHkiCiAgICAg
ICA8PCAiIGluIGEgdGhyZWFkZWQgY29udGV4dC4gRm9yIHRoaXMgdGVzdCwgIiA8PCBHVEVTVF9O
QU1FXyA8PCAiICI7Ci0gIGlmICh0aHJlYWRfY291bnQgPT0gMCkKKyAgaWYgKHRocmVhZF9jb3Vu
dCA9PSAwKSB7CiAgICAgbXNnIDw8ICJjb3VsZG4ndCBkZXRlY3QgdGhlIG51bWJlciBvZiB0aHJl
YWRzLiI7Ci0gIGVsc2UKKyAgfSBlbHNlIHsKICAgICBtc2cgPDwgImRldGVjdGVkICIgPDwgdGhy
ZWFkX2NvdW50IDw8ICIgdGhyZWFkcy4iOworICB9CisgIG1zZyA8PCAiIFNlZSAiCisgICAgICAg
ICAiaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2ds
ZXRlc3QvZG9jcy8iCisgICAgICAgICAiYWR2YW5jZWQubWQjZGVhdGgtdGVzdHMtYW5kLXRocmVh
ZHMiCisgICAgICA8PCAiIGZvciBtb3JlIGV4cGxhbmF0aW9uIGFuZCBzdWdnZXN0ZWQgc29sdXRp
b25zLCBlc3BlY2lhbGx5IGlmIgorICAgICAgPDwgIiB0aGlzIGlzIHRoZSBsYXN0IG1lc3NhZ2Ug
eW91IHNlZSBiZWZvcmUgeW91ciB0ZXN0IHRpbWVzIG91dC4iOwogICByZXR1cm4gbXNnLkdldFN0
cmluZygpOwogfQotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gIUdU
RVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX0ZVQ0hTSUEKIAogLy8gRmxhZyBjaGFyYWN0ZXJz
IGZvciByZXBvcnRpbmcgYSBkZWF0aCB0ZXN0IHRoYXQgZGlkIG5vdCBkaWUuCiBzdGF0aWMgY29u
c3QgY2hhciBrRGVhdGhUZXN0TGl2ZWQgPSAnTCc7CiBzdGF0aWMgY29uc3QgY2hhciBrRGVhdGhU
ZXN0UmV0dXJuZWQgPSAnUic7CitzdGF0aWMgY29uc3QgY2hhciBrRGVhdGhUZXN0VGhyZXcgPSAn
VCc7CiBzdGF0aWMgY29uc3QgY2hhciBrRGVhdGhUZXN0SW50ZXJuYWxFcnJvciA9ICdJJzsKIAot
Ly8gQW4gZW51bWVyYXRpb24gZGVzY3JpYmluZyBhbGwgb2YgdGhlIHBvc3NpYmxlIHdheXMgdGhh
dCBhIGRlYXRoIHRlc3QKLS8vIGNhbiBjb25jbHVkZS4gIERJRUQgbWVhbnMgdGhhdCB0aGUgcHJv
Y2VzcyBkaWVkIHdoaWxlIGV4ZWN1dGluZyB0aGUKLS8vIHRlc3QgY29kZTsgTElWRUQgbWVhbnMg
dGhhdCBwcm9jZXNzIGxpdmVkIGJleW9uZCB0aGUgZW5kIG9mIHRoZSB0ZXN0Ci0vLyBjb2RlOyBh
bmQgUkVUVVJORUQgbWVhbnMgdGhhdCB0aGUgdGVzdCBzdGF0ZW1lbnQgYXR0ZW1wdGVkIGEgInJl
dHVybiwiCi0vLyB3aGljaCBpcyBub3QgYWxsb3dlZC4gIElOX1BST0dSRVNTIG1lYW5zIHRoZSB0
ZXN0IGhhcyBub3QgeWV0Ci0vLyBjb25jbHVkZWQuCi1lbnVtIERlYXRoVGVzdE91dGNvbWUgeyBJ
Tl9QUk9HUkVTUywgRElFRCwgTElWRUQsIFJFVFVSTkVEIH07CisjaWYgR1RFU1RfT1NfRlVDSFNJ
QQorCisvLyBGaWxlIGRlc2NyaXB0b3IgdXNlZCBmb3IgdGhlIHBpcGUgaW4gdGhlIGNoaWxkIHBy
b2Nlc3MuCitzdGF0aWMgY29uc3QgaW50IGtGdWNoc2lhUmVhZFBpcGVGZCA9IDM7CisKKyNlbmRp
ZgorCisvLyBBbiBlbnVtZXJhdGlvbiBkZXNjcmliaW5nIGFsbCBvZiB0aGUgcG9zc2libGUgd2F5
cyB0aGF0IGEgZGVhdGggdGVzdCBjYW4KKy8vIGNvbmNsdWRlLiAgRElFRCBtZWFucyB0aGF0IHRo
ZSBwcm9jZXNzIGRpZWQgd2hpbGUgZXhlY3V0aW5nIHRoZSB0ZXN0CisvLyBjb2RlOyBMSVZFRCBt
ZWFucyB0aGF0IHByb2Nlc3MgbGl2ZWQgYmV5b25kIHRoZSBlbmQgb2YgdGhlIHRlc3QgY29kZTsK
Ky8vIFJFVFVSTkVEIG1lYW5zIHRoYXQgdGhlIHRlc3Qgc3RhdGVtZW50IGF0dGVtcHRlZCB0byBl
eGVjdXRlIGEgcmV0dXJuCisvLyBzdGF0ZW1lbnQsIHdoaWNoIGlzIG5vdCBhbGxvd2VkOyBUSFJF
VyBtZWFucyB0aGF0IHRoZSB0ZXN0IHN0YXRlbWVudAorLy8gcmV0dXJuZWQgY29udHJvbCBieSB0
aHJvd2luZyBhbiBleGNlcHRpb24uICBJTl9QUk9HUkVTUyBtZWFucyB0aGUgdGVzdAorLy8gaGFz
IG5vdCB5ZXQgY29uY2x1ZGVkLgorLy8gRklYTUU6IFVuaWZ5IG5hbWVzIGFuZCBwb3NzaWJseSB2
YWx1ZXMgZm9yCisvLyBBYm9ydFJlYXNvbiwgRGVhdGhUZXN0T3V0Y29tZSwgYW5kIGZsYWcgY2hh
cmFjdGVycyBhYm92ZS4KK2VudW0gRGVhdGhUZXN0T3V0Y29tZSB7IElOX1BST0dSRVNTLCBESUVE
LCBMSVZFRCwgUkVUVVJORUQsIFRIUkVXIH07CiAKIC8vIFJvdXRpbmUgZm9yIGFib3J0aW5nIHRo
ZSBwcm9ncmFtIHdoaWNoIGlzIHNhZmUgdG8gY2FsbCBmcm9tIGFuCiAvLyBleGVjLXN0eWxlIGRl
YXRoIHRlc3QgY2hpbGQgcHJvY2VzcywgaW4gd2hpY2ggY2FzZSB0aGUgZXJyb3IKIC8vIG1lc3Nh
Z2UgaXMgcHJvcGFnYXRlZCBiYWNrIHRvIHRoZSBwYXJlbnQgcHJvY2Vzcy4gIE90aGVyd2lzZSwg
dGhlCiAvLyBtZXNzYWdlIGlzIHNpbXBseSBwcmludGVkIHRvIHN0ZGVyci4gIEluIGVpdGhlciBj
YXNlLCB0aGUgcHJvZ3JhbQogLy8gdGhlbiBleGl0cyB3aXRoIHN0YXR1cyAxLgotdm9pZCBEZWF0
aFRlc3RBYm9ydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsKK3N0YXRpYyB2b2lkIERlYXRoVGVz
dEFib3J0KGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7CiAgIC8vIE9uIGEgUE9TSVggc3lz
dGVtLCB0aGlzIGZ1bmN0aW9uIG1heSBiZSBjYWxsZWQgZnJvbSBhIHRocmVhZHNhZmUtc3R5bGUK
ICAgLy8gZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzLCB3aGljaCBvcGVyYXRlcyBvbiBhIHZlcnkg
c21hbGwgc3RhY2suICBVc2UKICAgLy8gdGhlIGhlYXAgZm9yIGFueSBhZGRpdGlvbmFsIG5vbi1t
aW51c2N1bGUgbWVtb3J5IHJlcXVpcmVtZW50cy4KQEAgLTIxMiwxOCArMjkwLDE5IEBAIHZvaWQg
RGVhdGhUZXN0QWJvcnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7CiAgIH0gZWxzZSB7CiAgICAg
ZnByaW50ZihzdGRlcnIsICIlcyIsIG1lc3NhZ2UuY19zdHIoKSk7CiAgICAgZmZsdXNoKHN0ZGVy
cik7Ci0gICAgYWJvcnQoKTsKKyAgICBwb3NpeDo6QWJvcnQoKTsKICAgfQogfQogCiAvLyBBIHJl
cGxhY2VtZW50IGZvciBDSEVDSyB0aGF0IGNhbGxzIERlYXRoVGVzdEFib3J0IGlmIHRoZSBhc3Nl
cnRpb24KIC8vIGZhaWxzLgotI2RlZmluZSBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhleHByZXNz
aW9uKSBcCisjIGRlZmluZSBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhleHByZXNzaW9uKSBcCiAg
IGRvIHsgXAogICAgIGlmICghOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXNUcnVlKGV4cHJlc3Npb24p
KSB7IFwKLSAgICAgIERlYXRoVGVzdEFib3J0KDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZzo6
Rm9ybWF0KCBcCi0gICAgICAgICAgIkNIRUNLIGZhaWxlZDogRmlsZSAlcywgbGluZSAlZDogJXMi
LCBcCi0gICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCAjZXhwcmVzc2lvbikpOyBcCisgICAg
ICBEZWF0aFRlc3RBYm9ydCggXAorICAgICAgICAgIDo6c3RkOjpzdHJpbmcoIkNIRUNLIGZhaWxl
ZDogRmlsZSAiKSArIF9fRklMRV9fICsgICIsIGxpbmUgIiBcCisgICAgICAgICAgKyA6OnRlc3Rp
bmc6OmludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcoX19MSU5FX18pICsgIjogIiBcCisgICAg
ICAgICAgKyAjZXhwcmVzc2lvbik7IFwKICAgICB9IFwKICAgfSB3aGlsZSAoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6QWx3YXlzRmFsc2UoKSkKIApAQCAtMjM0LDIyICszMTMsMjMgQEAgdm9pZCBEZWF0
aFRlc3RBYm9ydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsKIC8vIGV2YWx1YXRlcyB0aGUgZXhw
cmVzc2lvbiBhcyBsb25nIGFzIGl0IGV2YWx1YXRlcyB0byAtMSBhbmQgc2V0cwogLy8gZXJybm8g
dG8gRUlOVFIuICBJZiB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gLTEgYnV0IGVycm5vIGlz
CiAvLyBzb21ldGhpbmcgb3RoZXIgdGhhbiBFSU5UUiwgRGVhdGhUZXN0QWJvcnQgaXMgY2FsbGVk
LgotI2RlZmluZSBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGV4cHJlc3Npb24pIFwK
KyMgZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oZXhwcmVzc2lvbikgXAog
ICBkbyB7IFwKICAgICBpbnQgZ3Rlc3RfcmV0dmFsOyBcCiAgICAgZG8geyBcCiAgICAgICBndGVz
dF9yZXR2YWwgPSAoZXhwcmVzc2lvbik7IFwKICAgICB9IHdoaWxlIChndGVzdF9yZXR2YWwgPT0g
LTEgJiYgZXJybm8gPT0gRUlOVFIpOyBcCiAgICAgaWYgKGd0ZXN0X3JldHZhbCA9PSAtMSkgeyBc
Ci0gICAgICBEZWF0aFRlc3RBYm9ydCg6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmc6OkZvcm1h
dCggXAotICAgICAgICAgICJDSEVDSyBmYWlsZWQ6IEZpbGUgJXMsIGxpbmUgJWQ6ICVzICE9IC0x
IiwgXAotICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgI2V4cHJlc3Npb24pKTsgXAorICAg
ICAgRGVhdGhUZXN0QWJvcnQoIFwKKyAgICAgICAgICA6OnN0ZDo6c3RyaW5nKCJDSEVDSyBmYWls
ZWQ6IEZpbGUgIikgKyBfX0ZJTEVfXyArICIsIGxpbmUgIiBcCisgICAgICAgICAgKyA6OnRlc3Rp
bmc6OmludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcoX19MSU5FX18pICsgIjogIiBcCisgICAg
ICAgICAgKyAjZXhwcmVzc2lvbiArICIgIT0gLTEiKTsgXAogICAgIH0gXAogICB9IHdoaWxlICg6
OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgpKQogCiAvLyBSZXR1cm5zIHRoZSBtZXNz
YWdlIGRlc2NyaWJpbmcgdGhlIGxhc3Qgc3lzdGVtIGVycm9yIGluIGVycm5vLgotU3RyaW5nIEdl
dExhc3RFcnJub0Rlc2NyaXB0aW9uKCkgewotICAgIHJldHVybiBTdHJpbmcoZXJybm8gPT0gMCA/
ICIiIDogcG9zaXg6OlN0ckVycm9yKGVycm5vKSk7CitzdGQ6OnN0cmluZyBHZXRMYXN0RXJybm9E
ZXNjcmlwdGlvbigpIHsKKyAgICByZXR1cm4gZXJybm8gPT0gMCA/ICIiIDogcG9zaXg6OlN0ckVy
cm9yKGVycm5vKTsKIH0KIAogLy8gVGhpcyBpcyBjYWxsZWQgZnJvbSBhIGRlYXRoIHRlc3QgcGFy
ZW50IHByb2Nlc3MgdG8gcmVhZCBhIGZhaWx1cmUKQEAgLTI5OSwxMSArMzc5LDExIEBAIGNvbnN0
IGNoYXIqIERlYXRoVGVzdDo6TGFzdE1lc3NhZ2UoKSB7CiAgIHJldHVybiBsYXN0X2RlYXRoX3Rl
c3RfbWVzc2FnZV8uY19zdHIoKTsKIH0KIAotdm9pZCBEZWF0aFRlc3Q6OnNldF9sYXN0X2RlYXRo
X3Rlc3RfbWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsKK3ZvaWQgRGVhdGhUZXN0Ojpz
ZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsK
ICAgbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2VfID0gbWVzc2FnZTsKIH0KIAotU3RyaW5nIERlYXRo
VGVzdDo6bGFzdF9kZWF0aF90ZXN0X21lc3NhZ2VfOworc3RkOjpzdHJpbmcgRGVhdGhUZXN0Ojps
YXN0X2RlYXRoX3Rlc3RfbWVzc2FnZV87CiAKIC8vIFByb3ZpZGVzIGNyb3NzIHBsYXRmb3JtIGlt
cGxlbWVudGF0aW9uIGZvciBzb21lIGRlYXRoIGZ1bmN0aW9uYWxpdHkuCiBjbGFzcyBEZWF0aFRl
c3RJbXBsIDogcHVibGljIERlYXRoVGVzdCB7CkBAIC0zODgsNiArNDY4LDkgQEAgdm9pZCBEZWF0
aFRlc3RJbXBsOjpSZWFkQW5kSW50ZXJwcmV0U3RhdHVzQnl0ZSgpIHsKICAgICAgIGNhc2Uga0Rl
YXRoVGVzdFJldHVybmVkOgogICAgICAgICBzZXRfb3V0Y29tZShSRVRVUk5FRCk7CiAgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBrRGVhdGhUZXN0VGhyZXc6CisgICAgICAgIHNldF9vdXRjb21l
KFRIUkVXKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIGtEZWF0aFRlc3RMaXZlZDoKICAg
ICAgICAgc2V0X291dGNvbWUoTElWRUQpOwogICAgICAgICBicmVhazsKQEAgLTQxNiwxOSArNDk5
LDQ2IEBAIHZvaWQgRGVhdGhUZXN0SW1wbDo6QWJvcnQoQWJvcnRSZWFzb24gcmVhc29uKSB7CiAg
IC8vIGl0IGZpbmRzIGFueSBkYXRhIGluIG91ciBwaXBlLiAgU28sIGhlcmUgd2Ugd3JpdGUgYSBz
aW5nbGUgZmxhZyBieXRlCiAgIC8vIHRvIHRoZSBwaXBlLCB0aGVuIGV4aXQuCiAgIGNvbnN0IGNo
YXIgc3RhdHVzX2NoID0KLSAgICAgIHJlYXNvbiA9PSBURVNUX0RJRF9OT1RfRElFID8ga0RlYXRo
VGVzdExpdmVkIDoga0RlYXRoVGVzdFJldHVybmVkOworICAgICAgcmVhc29uID09IFRFU1RfRElE
X05PVF9ESUUgPyBrRGVhdGhUZXN0TGl2ZWQgOgorICAgICAgcmVhc29uID09IFRFU1RfVEhSRVdf
RVhDRVBUSU9OID8ga0RlYXRoVGVzdFRocmV3IDoga0RlYXRoVGVzdFJldHVybmVkOworCiAgIEdU
RVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8ocG9zaXg6OldyaXRlKHdyaXRlX2ZkKCksICZz
dGF0dXNfY2gsIDEpKTsKLSAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhwb3NpeDo6
Q2xvc2Uod3JpdGVfZmQoKSkpOworICAvLyBXZSBhcmUgbGVha2luZyB0aGUgZGVzY3JpcHRvciBo
ZXJlIGJlY2F1c2Ugb24gc29tZSBwbGF0Zm9ybXMgKGkuZS4sCisgIC8vIHdoZW4gYnVpbHQgYXMg
V2luZG93cyBETEwpLCBkZXN0cnVjdG9ycyBvZiBnbG9iYWwgb2JqZWN0cyB3aWxsIHN0aWxsCisg
IC8vIHJ1biBhZnRlciBjYWxsaW5nIF9leGl0KCkuIE9uIHN1Y2ggc3lzdGVtcywgd3JpdGVfZmRf
IHdpbGwgYmUKKyAgLy8gaW5kaXJlY3RseSBjbG9zZWQgZnJvbSB0aGUgZGVzdHJ1Y3RvciBvZiBV
bml0VGVzdEltcGwsIGNhdXNpbmcgZG91YmxlCisgIC8vIGNsb3NlIGlmIGl0IGlzIGFsc28gY2xv
c2VkIGhlcmUuIE9uIGRlYnVnIGNvbmZpZ3VyYXRpb25zLCBkb3VibGUgY2xvc2UKKyAgLy8gbWF5
IGFzc2VydC4gQXMgdGhlcmUgYXJlIG5vIGluLXByb2Nlc3MgYnVmZmVycyB0byBmbHVzaCBoZXJl
LCB3ZSBhcmUKKyAgLy8gcmVseWluZyBvbiB0aGUgT1MgdG8gY2xvc2UgdGhlIGRlc2NyaXB0b3Ig
YWZ0ZXIgdGhlIHByb2Nlc3MgdGVybWluYXRlcworICAvLyB3aGVuIHRoZSBkZXN0cnVjdG9ycyBh
cmUgbm90IHJ1bi4KICAgX2V4aXQoMSk7ICAvLyBFeGl0cyB3L28gYW55IG5vcm1hbCBleGl0IGhv
b2tzICh3ZSB3ZXJlIHN1cHBvc2VkIHRvIGNyYXNoKQogfQogCisvLyBSZXR1cm5zIGFuIGluZGVu
dGVkIGNvcHkgb2Ygc3RkZXJyIG91dHB1dCBmb3IgYSBkZWF0aCB0ZXN0LgorLy8gVGhpcyBtYWtl
cyBkaXN0aW5ndWlzaGluZyBkZWF0aCB0ZXN0IG91dHB1dCBsaW5lcyBmcm9tIHJlZ3VsYXIgbG9n
IGxpbmVzCisvLyBtdWNoIGVhc2llci4KK3N0YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1hdERlYXRo
VGVzdE91dHB1dChjb25zdCA6OnN0ZDo6c3RyaW5nJiBvdXRwdXQpIHsKKyAgOjpzdGQ6OnN0cmlu
ZyByZXQ7CisgIGZvciAoc2l6ZV90IGF0ID0gMDsgOyApIHsKKyAgICBjb25zdCBzaXplX3QgbGlu
ZV9lbmQgPSBvdXRwdXQuZmluZCgnXG4nLCBhdCk7CisgICAgcmV0ICs9ICJbICBERUFUSCAgIF0g
IjsKKyAgICBpZiAobGluZV9lbmQgPT0gOjpzdGQ6OnN0cmluZzo6bnBvcykgeworICAgICAgcmV0
ICs9IG91dHB1dC5zdWJzdHIoYXQpOworICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldCArPSBv
dXRwdXQuc3Vic3RyKGF0LCBsaW5lX2VuZCArIDEgLSBhdCk7CisgICAgYXQgPSBsaW5lX2VuZCAr
IDE7CisgIH0KKyAgcmV0dXJuIHJldDsKK30KKwogLy8gQXNzZXNzZXMgdGhlIHN1Y2Nlc3Mgb3Ig
ZmFpbHVyZSBvZiBhIGRlYXRoIHRlc3QsIHVzaW5nIGJvdGggcHJpdmF0ZQogLy8gbWVtYmVycyB3
aGljaCBoYXZlIHByZXZpb3VzbHkgYmVlbiBzZXQsIGFuZCBvbmUgYXJndW1lbnQ6CiAvLwogLy8g
UHJpdmF0ZSBkYXRhIG1lbWJlcnM6CiAvLyAgIG91dGNvbWU6ICBBbiBlbnVtZXJhdGlvbiBkZXNj
cmliaW5nIGhvdyB0aGUgZGVhdGggdGVzdAotLy8gICAgICAgICAgICAgY29uY2x1ZGVkOiBESUVE
LCBMSVZFRCwgb3IgUkVUVVJORUQuICBUaGUgZGVhdGggdGVzdCBmYWlscwotLy8gICAgICAgICAg
ICAgaW4gdGhlIGxhdHRlciB0d28gY2FzZXMuCisvLyAgICAgICAgICAgICBjb25jbHVkZWQ6IERJ
RUQsIExJVkVELCBUSFJFVywgb3IgUkVUVVJORUQuICBUaGUgZGVhdGggdGVzdAorLy8gICAgICAg
ICAgICAgZmFpbHMgaW4gdGhlIGxhdHRlciB0aHJlZSBjYXNlcy4KIC8vICAgc3RhdHVzOiAgIFRo
ZSBleGl0IHN0YXR1cyBvZiB0aGUgY2hpbGQgcHJvY2Vzcy4gT24gKm5peCwgaXQgaXMgaW4gdGhl
CiAvLyAgICAgICAgICAgICBpbiB0aGUgZm9ybWF0IHNwZWNpZmllZCBieSB3YWl0KDIpLiBPbiBX
aW5kb3dzLCB0aGlzIGlzIHRoZQogLy8gICAgICAgICAgICAgdmFsdWUgc3VwcGxpZWQgdG8gdGhl
IEV4aXRQcm9jZXNzKCkgQVBJIG9yIGEgbnVtZXJpYyBjb2RlCkBAIC00NDgsNyArNTU4LDcgQEAg
Ym9vbCBEZWF0aFRlc3RJbXBsOjpQYXNzZWQoYm9vbCBzdGF0dXNfb2spIHsKICAgaWYgKCFzcGF3
bmVkKCkpCiAgICAgcmV0dXJuIGZhbHNlOwogCi0gIGNvbnN0IFN0cmluZyBlcnJvcl9tZXNzYWdl
ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZXJyb3JfbWVzc2Fn
ZSA9IEdldENhcHR1cmVkU3RkZXJyKCk7CiAKICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgIE1l
c3NhZ2UgYnVmZmVyOwpAQCAtNDU3LDI1ICs1NjcsMzUgQEAgYm9vbCBEZWF0aFRlc3RJbXBsOjpQ
YXNzZWQoYm9vbCBzdGF0dXNfb2spIHsKICAgc3dpdGNoIChvdXRjb21lKCkpIHsKICAgICBjYXNl
IExJVkVEOgogICAgICAgYnVmZmVyIDw8ICIgICAgUmVzdWx0OiBmYWlsZWQgdG8gZGllLlxuIgot
ICAgICAgICAgICAgIDw8ICIgRXJyb3IgbXNnOiAiIDw8IGVycm9yX21lc3NhZ2U7CisgICAgICAg
ICAgICAgPDwgIiBFcnJvciBtc2c6XG4iIDw8IEZvcm1hdERlYXRoVGVzdE91dHB1dChlcnJvcl9t
ZXNzYWdlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgVEhSRVc6CisgICAgICBidWZmZXIgPDwg
IiAgICBSZXN1bHQ6IHRocmV3IGFuIGV4Y2VwdGlvbi5cbiIKKyAgICAgICAgICAgICA8PCAiIEVy
cm9yIG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGVycm9yX21lc3NhZ2UpOwogICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBSRVRVUk5FRDoKICAgICAgIGJ1ZmZlciA8PCAiICAgIFJlc3Vs
dDogaWxsZWdhbCByZXR1cm4gaW4gdGVzdCBzdGF0ZW1lbnQuXG4iCi0gICAgICAgICAgICAgPDwg
IiBFcnJvciBtc2c6ICIgPDwgZXJyb3JfbWVzc2FnZTsKKyAgICAgICAgICAgICA8PCAiIEVycm9y
IG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGVycm9yX21lc3NhZ2UpOwogICAgICAg
YnJlYWs7CiAgICAgY2FzZSBESUVEOgogICAgICAgaWYgKHN0YXR1c19vaykgeworIyBpZiBHVEVT
VF9VU0VTX1BDUkUKKyAgICAgICAgLy8gUENSRSByZWdleGVzIHN1cHBvcnQgZW1iZWRkZWQgTlVM
cy4KKyAgICAgICAgY29uc3QgYm9vbCBtYXRjaGVkID0gUkU6OlBhcnRpYWxNYXRjaChlcnJvcl9t
ZXNzYWdlLCAqcmVnZXgoKSk7CisjIGVsc2UKICAgICAgICAgY29uc3QgYm9vbCBtYXRjaGVkID0g
UkU6OlBhcnRpYWxNYXRjaChlcnJvcl9tZXNzYWdlLmNfc3RyKCksICpyZWdleCgpKTsKKyMgZW5k
aWYgIC8vIEdURVNUX1VTRVNfUENSRQogICAgICAgICBpZiAobWF0Y2hlZCkgewogICAgICAgICAg
IHN1Y2Nlc3MgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgIGJ1ZmZlciA8PCAi
ICAgIFJlc3VsdDogZGllZCBidXQgbm90IHdpdGggZXhwZWN0ZWQgZXJyb3IuXG4iCiAgICAgICAg
ICAgICAgICAgIDw8ICIgIEV4cGVjdGVkOiAiIDw8IHJlZ2V4KCktPnBhdHRlcm4oKSA8PCAiXG4i
Ci0gICAgICAgICAgICAgICAgIDw8ICJBY3R1YWwgbXNnOiAiIDw8IGVycm9yX21lc3NhZ2U7Cisg
ICAgICAgICAgICAgICAgIDw8ICJBY3R1YWwgbXNnOlxuIiA8PCBGb3JtYXREZWF0aFRlc3RPdXRw
dXQoZXJyb3JfbWVzc2FnZSk7CiAgICAgICAgIH0KICAgICAgIH0gZWxzZSB7CiAgICAgICAgIGJ1
ZmZlciA8PCAiICAgIFJlc3VsdDogZGllZCBidXQgbm90IHdpdGggZXhwZWN0ZWQgZXhpdCBjb2Rl
OlxuIgotICAgICAgICAgICAgICAgPDwgIiAgICAgICAgICAgICIgPDwgRXhpdFN1bW1hcnkoc3Rh
dHVzKCkpIDw8ICJcbiI7CisgICAgICAgICAgICAgICA8PCAiICAgICAgICAgICAgIiA8PCBFeGl0
U3VtbWFyeShzdGF0dXMoKSkgPDwgIlxuIgorICAgICAgICAgICAgICAgPDwgIkFjdHVhbCBtc2c6
XG4iIDw8IEZvcm1hdERlYXRoVGVzdE91dHB1dChlcnJvcl9tZXNzYWdlKTsKICAgICAgIH0KICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSU5fUFJPR1JFU1M6CkBAIC00ODgsNyArNjA4LDcgQEAgYm9v
bCBEZWF0aFRlc3RJbXBsOjpQYXNzZWQoYm9vbCBzdGF0dXNfb2spIHsKICAgcmV0dXJuIHN1Y2Nl
c3M7CiB9CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MKIC8v
IFdpbmRvd3NEZWF0aFRlc3QgaW1wbGVtZW50cyBkZWF0aCB0ZXN0cyBvbiBXaW5kb3dzLiBEdWUg
dG8gdGhlCiAvLyBzcGVjaWZpY3Mgb2Ygc3RhcnRpbmcgbmV3IHByb2Nlc3NlcyBvbiBXaW5kb3dz
LCBkZWF0aCB0ZXN0cyB0aGVyZSBhcmUKIC8vIGFsd2F5cyB0aHJlYWRzYWZlLCBhbmQgR29vZ2xl
IFRlc3QgY29uc2lkZXJzIHRoZQpAQCAtNTE5LDExICs2MzksMTEgQEAgYm9vbCBEZWF0aFRlc3RJ
bXBsOjpQYXNzZWQoYm9vbCBzdGF0dXNfb2spIHsKIC8vCiBjbGFzcyBXaW5kb3dzRGVhdGhUZXN0
IDogcHVibGljIERlYXRoVGVzdEltcGwgewogIHB1YmxpYzoKLSAgV2luZG93c0RlYXRoVGVzdChj
b25zdCBjaGFyKiBzdGF0ZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgUkUqIHJlZ2V4
LAorICBXaW5kb3dzRGVhdGhUZXN0KGNvbnN0IGNoYXIqIGFfc3RhdGVtZW50LAorICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFJFKiBhX3JlZ2V4LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGZpbGUsCiAgICAgICAgICAgICAgICAgICAgaW50IGxpbmUpCi0gICAgICA6IERlYXRoVGVz
dEltcGwoc3RhdGVtZW50LCByZWdleCksIGZpbGVfKGZpbGUpLCBsaW5lXyhsaW5lKSB7fQorICAg
ICAgOiBEZWF0aFRlc3RJbXBsKGFfc3RhdGVtZW50LCBhX3JlZ2V4KSwgZmlsZV8oZmlsZSksIGxp
bmVfKGxpbmUpIHt9CiAKICAgLy8gQWxsIG9mIHRoZXNlIHZpcnR1YWwgZnVuY3Rpb25zIGFyZSBp
bmhlcml0ZWQgZnJvbSBEZWF0aFRlc3QuCiAgIHZpcnR1YWwgaW50IFdhaXQoKTsKQEAgLTU4MCwx
MiArNzAwLDEyIEBAIGludCBXaW5kb3dzRGVhdGhUZXN0OjpXYWl0KCkgewogICBHVEVTVF9ERUFU
SF9URVNUX0NIRUNLXygKICAgICAgIFdBSVRfT0JKRUNUXzAgPT0gOjpXYWl0Rm9yU2luZ2xlT2Jq
ZWN0KGNoaWxkX2hhbmRsZV8uR2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJTkZJTklURSkpOwotICBEV09SRCBzdGF0dXM7Ci0gIEdURVNUX0RFQVRI
X1RFU1RfQ0hFQ0tfKDo6R2V0RXhpdENvZGVQcm9jZXNzKGNoaWxkX2hhbmRsZV8uR2V0KCksICZz
dGF0dXMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICE9IEZBTFNFKTsKKyAgRFdPUkQgc3Rh
dHVzX2NvZGU7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKAorICAgICAgOjpHZXRFeGl0Q29k
ZVByb2Nlc3MoY2hpbGRfaGFuZGxlXy5HZXQoKSwgJnN0YXR1c19jb2RlKSAhPSBGQUxTRSk7CiAg
IGNoaWxkX2hhbmRsZV8uUmVzZXQoKTsKLSAgc2V0X3N0YXR1cyhzdGF0aWNfY2FzdDxpbnQ+KHN0
YXR1cykpOwotICByZXR1cm4gdGhpcy0+c3RhdHVzKCk7CisgIHNldF9zdGF0dXMoc3RhdGljX2Nh
c3Q8aW50PihzdGF0dXNfY29kZSkpOworICByZXR1cm4gc3RhdHVzKCk7CiB9CiAKIC8vIFRoZSBB
c3N1bWVSb2xlIHByb2Nlc3MgZm9yIGEgV2luZG93cyBkZWF0aCB0ZXN0LiAgSXQgY3JlYXRlcyBh
IGNoaWxkCkBAIC02MjUsMjIgKzc0NSwxOSBAQCBEZWF0aFRlc3Q6OlRlc3RSb2xlIFdpbmRvd3NE
ZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAgICAgICBGQUxTRSwgICAvLyBUaGUgaW5pdGlhbCBz
dGF0ZSBpcyBub24tc2lnbmFsbGVkLgogICAgICAgTlVMTCkpOyAgLy8gVGhlIGV2ZW4gaXMgdW5u
YW1lZC4KICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oZXZlbnRfaGFuZGxlXy5HZXQoKSAhPSBO
VUxMKTsKLSAgY29uc3QgU3RyaW5nIGZpbHRlcl9mbGFnID0gU3RyaW5nOjpGb3JtYXQoIi0tJXMl
cz0lcy4lcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdU
RVNUX0ZMQUdfUFJFRklYXywga0ZpbHRlckZsYWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluZm8tPnRlc3RfY2FzZV9uYW1lKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8tPm5hbWUoKSk7Ci0gIGNvbnN0IFN0
cmluZyBpbnRlcm5hbF9mbGFnID0gU3RyaW5nOjpGb3JtYXQoCi0gICAgIi0tJXMlcz0lc3wlZHwl
ZHwldXwlSXV8JUl1IiwKLSAgICAgIEdURVNUX0ZMQUdfUFJFRklYXywKLSAgICAgIGtJbnRlcm5h
bFJ1bkRlYXRoVGVzdEZsYWcsCi0gICAgICBmaWxlXywgbGluZV8sCi0gICAgICBkZWF0aF90ZXN0
X2luZGV4LAotICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pig6OkdldEN1cnJlbnRQcm9j
ZXNzSWQoKSksCi0gICAgICAvLyBzaXplX3QgaGFzIHRoZSBzYW1lIHdpdGggYXMgcG9pbnRlcnMg
b24gYm90aCAzMi1iaXQgYW5kIDY0LWJpdAorICBjb25zdCBzdGQ6OnN0cmluZyBmaWx0ZXJfZmxh
ZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0iKSArIEdURVNUX0ZMQUdfUFJFRklYXyArIGtGaWx0
ZXJGbGFnICsgIj0iICsKKyAgICAgIGluZm8tPnRlc3RfY2FzZV9uYW1lKCkgKyAiLiIgKyBpbmZv
LT5uYW1lKCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGludGVybmFsX2ZsYWcgPQorICAgICAgc3Rk
OjpzdHJpbmcoIi0tIikgKyBHVEVTVF9GTEFHX1BSRUZJWF8gKyBrSW50ZXJuYWxSdW5EZWF0aFRl
c3RGbGFnICsKKyAgICAgICI9IiArIGZpbGVfICsgInwiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGxp
bmVfKSArICJ8IiArCisgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcoZGVhdGhfdGVzdF9pbmRleCkg
KyAifCIgKworICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkIGlu
dD4oOjpHZXRDdXJyZW50UHJvY2Vzc0lkKCkpKSArCisgICAgICAvLyBzaXplX3QgaGFzIHRoZSBz
YW1lIHdpZHRoIGFzIHBvaW50ZXJzIG9uIGJvdGggMzItYml0IGFuZCA2NC1iaXQKICAgICAgIC8v
IFdpbmRvd3MgcGxhdGZvcm1zLgogICAgICAgLy8gU2VlIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5j
b20vZW4tdXMvbGlicmFyeS90Y3hmMWR3Ni5hc3B4LgotICAgICAgcmVpbnRlcnByZXRfY2FzdDxz
aXplX3Q+KHdyaXRlX2hhbmRsZSksCi0gICAgICByZWludGVycHJldF9jYXN0PHNpemVfdD4oZXZl
bnRfaGFuZGxlXy5HZXQoKSkpOworICAgICAgInwiICsgU3RyZWFtYWJsZVRvU3RyaW5nKHJlaW50
ZXJwcmV0X2Nhc3Q8c2l6ZV90Pih3cml0ZV9oYW5kbGUpKSArCisgICAgICAifCIgKyBTdHJlYW1h
YmxlVG9TdHJpbmcocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KGV2ZW50X2hhbmRsZV8uR2V0KCkp
KTsKIAogICBjaGFyIGV4ZWN1dGFibGVfcGF0aFtfTUFYX1BBVEggKyAxXTsgIC8vIE5PTElOVAog
ICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXygKQEAgLTY0OCwxMCArNzY1LDkgQEAgRGVhdGhUZXN0
OjpUZXN0Um9sZSBXaW5kb3dzRGVhdGhUZXN0OjpBc3N1bWVSb2xlKCkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlX3BhdGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NQVhfUEFUSCkpOwogCi0gIFN0
cmluZyBjb21tYW5kX2xpbmUgPSBTdHJpbmc6OkZvcm1hdCgiJXMgJXMgXCIlc1wiIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6R2V0Q29tbWFuZExpbmVBKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfZmxhZy5jX3N0cigp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxfZmxhZy5j
X3N0cigpKTsKKyAgc3RkOjpzdHJpbmcgY29tbWFuZF9saW5lID0KKyAgICAgIHN0ZDo6c3RyaW5n
KDo6R2V0Q29tbWFuZExpbmVBKCkpICsgIiAiICsgZmlsdGVyX2ZsYWcgKyAiIFwiIiArCisgICAg
ICBpbnRlcm5hbF9mbGFnICsgIlwiIjsKIAogICBEZWF0aFRlc3Q6OnNldF9sYXN0X2RlYXRoX3Rl
c3RfbWVzc2FnZSgiIik7CiAKQEAgLTY4NCw3ICs4MDAsMjAwIEBAIERlYXRoVGVzdDo6VGVzdFJv
bGUgV2luZG93c0RlYXRoVGVzdDo6QXNzdW1lUm9sZSgpIHsKICAgc2V0X3NwYXduZWQodHJ1ZSk7
CiAgIHJldHVybiBPVkVSU0VFX1RFU1Q7CiB9Ci0jZWxzZSAgLy8gV2UgYXJlIG5vdCBvbiBXaW5k
b3dzLgorCisjIGVsaWYgR1RFU1RfT1NfRlVDSFNJQQorCitjbGFzcyBGdWNoc2lhRGVhdGhUZXN0
IDogcHVibGljIERlYXRoVGVzdEltcGwgeworIHB1YmxpYzoKKyAgRnVjaHNpYURlYXRoVGVzdChj
b25zdCBjaGFyKiBhX3N0YXRlbWVudCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBSRSogYV9y
ZWdleCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLAorICAgICAgICAgICAg
ICAgICAgIGludCBsaW5lKQorICAgICAgOiBEZWF0aFRlc3RJbXBsKGFfc3RhdGVtZW50LCBhX3Jl
Z2V4KSwgZmlsZV8oZmlsZSksIGxpbmVfKGxpbmUpIHt9CisgIHZpcnR1YWwgfkZ1Y2hzaWFEZWF0
aFRlc3QoKSB7CisgICAgenhfc3RhdHVzX3Qgc3RhdHVzID0genhfaGFuZGxlX2Nsb3NlKGNoaWxk
X3Byb2Nlc3NfKTsKKyAgICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhzdGF0dXMgPT0gWlhfT0sp
OworICAgIHN0YXR1cyA9IHp4X2hhbmRsZV9jbG9zZShwb3J0Xyk7CisgICAgR1RFU1RfREVBVEhf
VEVTVF9DSEVDS18oc3RhdHVzID09IFpYX09LKTsKKyAgfQorCisgIC8vIEFsbCBvZiB0aGVzZSB2
aXJ0dWFsIGZ1bmN0aW9ucyBhcmUgaW5oZXJpdGVkIGZyb20gRGVhdGhUZXN0LgorICB2aXJ0dWFs
IGludCBXYWl0KCk7CisgIHZpcnR1YWwgVGVzdFJvbGUgQXNzdW1lUm9sZSgpOworCisgcHJpdmF0
ZToKKyAgLy8gVGhlIG5hbWUgb2YgdGhlIGZpbGUgaW4gd2hpY2ggdGhlIGRlYXRoIHRlc3QgaXMg
bG9jYXRlZC4KKyAgY29uc3QgY2hhciogY29uc3QgZmlsZV87CisgIC8vIFRoZSBsaW5lIG51bWJl
ciBvbiB3aGljaCB0aGUgZGVhdGggdGVzdCBpcyBsb2NhdGVkLgorICBjb25zdCBpbnQgbGluZV87
CisKKyAgenhfaGFuZGxlX3QgY2hpbGRfcHJvY2Vzc18gPSBaWF9IQU5ETEVfSU5WQUxJRDsKKyAg
enhfaGFuZGxlX3QgcG9ydF8gPSBaWF9IQU5ETEVfSU5WQUxJRDsKK307CisKKy8vIFV0aWxpdHkg
Y2xhc3MgZm9yIGFjY3VtdWxhdGluZyBjb21tYW5kLWxpbmUgYXJndW1lbnRzLgorY2xhc3MgQXJn
dW1lbnRzIHsKKyBwdWJsaWM6CisgIEFyZ3VtZW50cygpIHsKKyAgICBhcmdzXy5wdXNoX2JhY2so
TlVMTCk7CisgIH0KKworICB+QXJndW1lbnRzKCkgeworICAgIGZvciAoc3RkOjp2ZWN0b3I8Y2hh
cio+OjppdGVyYXRvciBpID0gYXJnc18uYmVnaW4oKTsgaSAhPSBhcmdzXy5lbmQoKTsKKyAgICAg
ICAgICsraSkgeworICAgICAgZnJlZSgqaSk7CisgICAgfQorICB9CisgIHZvaWQgQWRkQXJndW1l
bnQoY29uc3QgY2hhciogYXJndW1lbnQpIHsKKyAgICBhcmdzXy5pbnNlcnQoYXJnc18uZW5kKCkg
LSAxLCBwb3NpeDo6U3RyRHVwKGFyZ3VtZW50KSk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgU3RyPgorICB2b2lkIEFkZEFyZ3VtZW50cyhjb25zdCA6OnN0ZDo6dmVjdG9yPFN0cj4mIGFy
Z3VtZW50cykgeworICAgIGZvciAodHlwZW5hbWUgOjpzdGQ6OnZlY3RvcjxTdHI+Ojpjb25zdF9p
dGVyYXRvciBpID0gYXJndW1lbnRzLmJlZ2luKCk7CisgICAgICAgICBpICE9IGFyZ3VtZW50cy5l
bmQoKTsKKyAgICAgICAgICsraSkgeworICAgICAgYXJnc18uaW5zZXJ0KGFyZ3NfLmVuZCgpIC0g
MSwgcG9zaXg6OlN0ckR1cChpLT5jX3N0cigpKSk7CisgICAgfQorICB9CisgIGNoYXIqIGNvbnN0
KiBBcmd2KCkgeworICAgIHJldHVybiAmYXJnc19bMF07CisgIH0KKworICBpbnQgc2l6ZSgpIHsK
KyAgICByZXR1cm4gYXJnc18uc2l6ZSgpIC0gMTsKKyAgfQorCisgcHJpdmF0ZToKKyAgc3RkOjp2
ZWN0b3I8Y2hhcio+IGFyZ3NfOworfTsKKworLy8gV2FpdHMgZm9yIHRoZSBjaGlsZCBpbiBhIGRl
YXRoIHRlc3QgdG8gZXhpdCwgcmV0dXJuaW5nIGl0cyBleGl0CisvLyBzdGF0dXMsIG9yIDAgaWYg
bm8gY2hpbGQgcHJvY2VzcyBleGlzdHMuICBBcyBhIHNpZGUgZWZmZWN0LCBzZXRzIHRoZQorLy8g
b3V0Y29tZSBkYXRhIG1lbWJlci4KK2ludCBGdWNoc2lhRGVhdGhUZXN0OjpXYWl0KCkgeworICBp
ZiAoIXNwYXduZWQoKSkKKyAgICByZXR1cm4gMDsKKworICAvLyBSZWdpc3RlciB0byB3YWl0IGZv
ciB0aGUgY2hpbGQgcHJvY2VzcyB0byB0ZXJtaW5hdGUuCisgIHp4X3N0YXR1c190IHN0YXR1c196
eDsKKyAgc3RhdHVzX3p4ID0genhfb2JqZWN0X3dhaXRfYXN5bmMoY2hpbGRfcHJvY2Vzc18sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwIC8qIGtleSAqLywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWlhfUFJPQ0VTU19URVJNSU5BVEVELAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBaWF9XQUlUX0FTWU5DX09OQ0UpOworICBHVEVTVF9ERUFUSF9URVNUX0NI
RUNLXyhzdGF0dXNfenggPT0gWlhfT0spOworCisgIC8vIFdhaXQgZm9yIGl0IHRvIHRlcm1pbmF0
ZSwgb3IgYW4gZXhjZXB0aW9uIHRvIGJlIHJlY2VpdmVkLgorICB6eF9wb3J0X3BhY2tldF90IHBh
Y2tldDsKKyAgc3RhdHVzX3p4ID0genhfcG9ydF93YWl0KHBvcnRfLCBaWF9USU1FX0lORklOSVRF
LCAmcGFja2V0KTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhdHVzX3p4ID09IFpYX09L
KTsKKworICBpZiAoWlhfUEtUX0lTX0VYQ0VQVElPTihwYWNrZXQudHlwZSkpIHsKKyAgICAvLyBQ
cm9jZXNzIGVuY291bnRlcmVkIGFuIGV4Y2VwdGlvbi4gS2lsbCBpdCBkaXJlY3RseSByYXRoZXIg
dGhhbiBsZXR0aW5nCisgICAgLy8gb3RoZXIgaGFuZGxlcnMgcHJvY2VzcyB0aGUgZXZlbnQuCisg
ICAgc3RhdHVzX3p4ID0genhfdGFza19raWxsKGNoaWxkX3Byb2Nlc3NfKTsKKyAgICBHVEVTVF9E
RUFUSF9URVNUX0NIRUNLXyhzdGF0dXNfenggPT0gWlhfT0spOworCisgICAgLy8gTm93IHdhaXQg
Zm9yIHxjaGlsZF9wcm9jZXNzX3wgdG8gdGVybWluYXRlLgorICAgIHp4X3NpZ25hbHNfdCBzaWdu
YWxzID0gMDsKKyAgICBzdGF0dXNfenggPSB6eF9vYmplY3Rfd2FpdF9vbmUoCisgICAgICAgIGNo
aWxkX3Byb2Nlc3NfLCBaWF9QUk9DRVNTX1RFUk1JTkFURUQsIFpYX1RJTUVfSU5GSU5JVEUsICZz
aWduYWxzKTsKKyAgICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhzdGF0dXNfenggPT0gWlhfT0sp
OworICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHNpZ25hbHMgJiBaWF9QUk9DRVNTX1RFUk1J
TkFURUQpOworICB9IGVsc2UgeworICAgIC8vIFByb2Nlc3MgdGVybWluYXRlZC4KKyAgICBHVEVT
VF9ERUFUSF9URVNUX0NIRUNLXyhaWF9QS1RfSVNfU0lHTkFMX09ORShwYWNrZXQudHlwZSkpOwor
ICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHBhY2tldC5zaWduYWwub2JzZXJ2ZWQgJiBaWF9Q
Uk9DRVNTX1RFUk1JTkFURUQpOworICB9CisKKyAgUmVhZEFuZEludGVycHJldFN0YXR1c0J5dGUo
KTsKKworICB6eF9pbmZvX3Byb2Nlc3NfdCBidWZmZXI7CisgIHN0YXR1c196eCA9IHp4X29iamVj
dF9nZXRfaW5mbygKKyAgICAgIGNoaWxkX3Byb2Nlc3NfLAorICAgICAgWlhfSU5GT19QUk9DRVNT
LAorICAgICAgJmJ1ZmZlciwKKyAgICAgIHNpemVvZihidWZmZXIpLAorICAgICAgbnVsbHB0ciwK
KyAgICAgIG51bGxwdHIpOworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhzdGF0dXNfenggPT0g
WlhfT0spOworCisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGJ1ZmZlci5leGl0ZWQpOworICBz
ZXRfc3RhdHVzKGJ1ZmZlci5yZXR1cm5fY29kZSk7CisgIHJldHVybiBzdGF0dXMoKTsKK30KKwor
Ly8gVGhlIEFzc3VtZVJvbGUgcHJvY2VzcyBmb3IgYSBGdWNoc2lhIGRlYXRoIHRlc3QuICBJdCBj
cmVhdGVzIGEgY2hpbGQKKy8vIHByb2Nlc3Mgd2l0aCB0aGUgc2FtZSBleGVjdXRhYmxlIGFzIHRo
ZSBjdXJyZW50IHByb2Nlc3MgdG8gcnVuIHRoZQorLy8gZGVhdGggdGVzdC4gIFRoZSBjaGlsZCBw
cm9jZXNzIGlzIGdpdmVuIHRoZSAtLWd0ZXN0X2ZpbHRlciBhbmQKKy8vIC0tZ3Rlc3RfaW50ZXJu
YWxfcnVuX2RlYXRoX3Rlc3QgZmxhZ3Mgc3VjaCB0aGF0IGl0IGtub3dzIHRvIHJ1biB0aGUKKy8v
IGN1cnJlbnQgZGVhdGggdGVzdCBvbmx5LgorRGVhdGhUZXN0OjpUZXN0Um9sZSBGdWNoc2lhRGVh
dGhUZXN0OjpBc3N1bWVSb2xlKCkgeworICBjb25zdCBVbml0VGVzdEltcGwqIGNvbnN0IGltcGwg
PSBHZXRVbml0VGVzdEltcGwoKTsKKyAgY29uc3QgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBj
b25zdCBmbGFnID0KKyAgICAgIGltcGwtPmludGVybmFsX3J1bl9kZWF0aF90ZXN0X2ZsYWcoKTsK
KyAgY29uc3QgVGVzdEluZm8qIGNvbnN0IGluZm8gPSBpbXBsLT5jdXJyZW50X3Rlc3RfaW5mbygp
OworICBjb25zdCBpbnQgZGVhdGhfdGVzdF9pbmRleCA9IGluZm8tPnJlc3VsdCgpLT5kZWF0aF90
ZXN0X2NvdW50KCk7CisKKyAgaWYgKGZsYWcgIT0gTlVMTCkgeworICAgIC8vIFBhcnNlSW50ZXJu
YWxSdW5EZWF0aFRlc3RGbGFnKCkgaGFzIHBlcmZvcm1lZCBhbGwgdGhlIG5lY2Vzc2FyeQorICAg
IC8vIHByb2Nlc3NpbmcuCisgICAgc2V0X3dyaXRlX2ZkKGtGdWNoc2lhUmVhZFBpcGVGZCk7Cisg
ICAgcmV0dXJuIEVYRUNVVEVfVEVTVDsKKyAgfQorCisgIENhcHR1cmVTdGRlcnIoKTsKKyAgLy8g
Rmx1c2ggdGhlIGxvZyBidWZmZXJzIHNpbmNlIHRoZSBsb2cgc3RyZWFtcyBhcmUgc2hhcmVkIHdp
dGggdGhlIGNoaWxkLgorICBGbHVzaEluZm9Mb2coKTsKKworICAvLyBCdWlsZCB0aGUgY2hpbGQg
cHJvY2VzcyBjb21tYW5kIGxpbmUuCisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbHRlcl9mbGFnID0K
KyAgICAgIHN0ZDo6c3RyaW5nKCItLSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsga0ZpbHRlckZs
YWcgKyAiPSIKKyAgICAgICsgaW5mby0+dGVzdF9jYXNlX25hbWUoKSArICIuIiArIGluZm8tPm5h
bWUoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgaW50ZXJuYWxfZmxhZyA9CisgICAgICBzdGQ6OnN0
cmluZygiLS0iKSArIEdURVNUX0ZMQUdfUFJFRklYXyArIGtJbnRlcm5hbFJ1bkRlYXRoVGVzdEZs
YWcgKyAiPSIKKyAgICAgICsgZmlsZV8gKyAifCIKKyAgICAgICsgU3RyZWFtYWJsZVRvU3RyaW5n
KGxpbmVfKSArICJ8IgorICAgICAgKyBTdHJlYW1hYmxlVG9TdHJpbmcoZGVhdGhfdGVzdF9pbmRl
eCk7CisgIEFyZ3VtZW50cyBhcmdzOworICBhcmdzLkFkZEFyZ3VtZW50cyhHZXRJbmplY3RhYmxl
QXJndnMoKSk7CisgIGFyZ3MuQWRkQXJndW1lbnQoZmlsdGVyX2ZsYWcuY19zdHIoKSk7CisgIGFy
Z3MuQWRkQXJndW1lbnQoaW50ZXJuYWxfZmxhZy5jX3N0cigpKTsKKworICAvLyBCdWlsZCB0aGUg
cGlwZSBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBjaGlsZC4KKyAgenhfc3RhdHVzX3Qgc3Rh
dHVzOworICB6eF9oYW5kbGVfdCBjaGlsZF9waXBlX2hhbmRsZTsKKyAgdWludDMyX3QgdHlwZTsK
KyAgc3RhdHVzID0gZmRpb19waXBlX2hhbGYoJmNoaWxkX3BpcGVfaGFuZGxlLCAmdHlwZSk7Cisg
IEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1cyA+PSAwKTsKKyAgc2V0X3JlYWRfZmQoc3Rh
dHVzKTsKKworICAvLyBTZXQgdGhlIHBpcGUgaGFuZGxlIGZvciB0aGUgY2hpbGQuCisgIGZkaW9f
c3Bhd25fYWN0aW9uX3QgYWRkX2hhbmRsZV9hY3Rpb24gPSB7fTsKKyAgYWRkX2hhbmRsZV9hY3Rp
b24uYWN0aW9uID0gRkRJT19TUEFXTl9BQ1RJT05fQUREX0hBTkRMRTsKKyAgYWRkX2hhbmRsZV9h
Y3Rpb24uaC5pZCA9IFBBX0hORCh0eXBlLCBrRnVjaHNpYVJlYWRQaXBlRmQpOworICBhZGRfaGFu
ZGxlX2FjdGlvbi5oLmhhbmRsZSA9IGNoaWxkX3BpcGVfaGFuZGxlOworCisgIC8vIFNwYXduIHRo
ZSBjaGlsZCBwcm9jZXNzLgorICBzdGF0dXMgPSBmZGlvX3NwYXduX2V0YyhaWF9IQU5ETEVfSU5W
QUxJRCwgRkRJT19TUEFXTl9DTE9ORV9BTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFy
Z3MuQXJndigpWzBdLCBhcmdzLkFyZ3YoKSwgbnVsbHB0ciwgMSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgJmFkZF9oYW5kbGVfYWN0aW9uLCAmY2hpbGRfcHJvY2Vzc18sIG51bGxwdHIpOwor
ICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhzdGF0dXMgPT0gWlhfT0spOworCisgIC8vIENyZWF0
ZSBhbiBleGNlcHRpb24gcG9ydCBhbmQgYXR0YWNoIGl0IHRvIHRoZSB8Y2hpbGRfcHJvY2Vzc198
LCB0byBhbGxvdworICAvLyB1cyB0byBzdXBwcmVzcyB0aGUgc3lzdGVtIGRlZmF1bHQgZXhjZXB0
aW9uIGhhbmRsZXIgZnJvbSBmaXJpbmcuCisgIHN0YXR1cyA9IHp4X3BvcnRfY3JlYXRlKDAsICZw
b3J0Xyk7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1cyA9PSBaWF9PSyk7CisgIHN0
YXR1cyA9IHp4X3Rhc2tfYmluZF9leGNlcHRpb25fcG9ydCgKKyAgICAgIGNoaWxkX3Byb2Nlc3Nf
LCBwb3J0XywgMCAvKiBrZXkgKi8sIDAgLypvcHRpb25zICovKTsKKyAgR1RFU1RfREVBVEhfVEVT
VF9DSEVDS18oc3RhdHVzID09IFpYX09LKTsKKworICBzZXRfc3Bhd25lZCh0cnVlKTsKKyAgcmV0
dXJuIE9WRVJTRUVfVEVTVDsKK30KKworI2Vsc2UgIC8vIFdlIGFyZSBuZWl0aGVyIG9uIFdpbmRv
d3MsIG5vciBvbiBGdWNoc2lhLgogCiAvLyBGb3JraW5nRGVhdGhUZXN0IHByb3ZpZGVzIGltcGxl
bWVudGF0aW9ucyBmb3IgbW9zdCBvZiB0aGUgYWJzdHJhY3QKIC8vIG1ldGhvZHMgb2YgdGhlIERl
YXRoVGVzdCBpbnRlcmZhY2UuICBPbmx5IHRoZSBBc3N1bWVSb2xlIG1ldGhvZCBpcwpAQCAtNzY4
LDYgKzEwNzcsNyBAQCBEZWF0aFRlc3Q6OlRlc3RSb2xlIE5vRXhlY0RlYXRoVGVzdDo6QXNzdW1l
Um9sZSgpIHsKICAgICAvLyBFdmVudCBmb3J3YXJkaW5nIHRvIHRoZSBsaXN0ZW5lcnMgb2YgZXZl
bnQgbGlzdGVuZXIgQVBJIG11c2ggYmUgc2h1dAogICAgIC8vIGRvd24gaW4gZGVhdGggdGVzdCBz
dWJwcm9jZXNzZXMuCiAgICAgR2V0VW5pdFRlc3RJbXBsKCktPmxpc3RlbmVycygpLT5TdXBwcmVz
c0V2ZW50Rm9yd2FyZGluZygpOworICAgIGdfaW5fZmFzdF9kZWF0aF90ZXN0X2NoaWxkID0gdHJ1
ZTsKICAgICByZXR1cm4gRVhFQ1VURV9URVNUOwogICB9IGVsc2UgewogICAgIEdURVNUX0RFQVRI
X1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oY2xvc2UocGlwZV9mZFsxXSkpOwpAQCAtNzg3LDYgKzEwOTcs
MTUgQEAgY2xhc3MgRXhlY0RlYXRoVGVzdCA6IHB1YmxpYyBGb3JraW5nRGVhdGhUZXN0IHsKICAg
ICAgIEZvcmtpbmdEZWF0aFRlc3QoYV9zdGF0ZW1lbnQsIGFfcmVnZXgpLCBmaWxlXyhmaWxlKSwg
bGluZV8obGluZSkgeyB9CiAgIHZpcnR1YWwgVGVzdFJvbGUgQXNzdW1lUm9sZSgpOwogIHByaXZh
dGU6CisgIHN0YXRpYyA6OnN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRBcmd2c0ZvckRlYXRo
VGVzdENoaWxkUHJvY2VzcygpIHsKKyAgICA6OnN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBhcmdz
ID0gR2V0SW5qZWN0YWJsZUFyZ3ZzKCk7CisjICBpZiBkZWZpbmVkKEdURVNUX0VYVFJBX0RFQVRI
X1RFU1RfQ09NTUFORF9MSU5FX0FSR1NfKQorICAgIDo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
IGV4dHJhX2FyZ3MgPQorICAgICAgICBHVEVTVF9FWFRSQV9ERUFUSF9URVNUX0NPTU1BTkRfTElO
RV9BUkdTXygpOworICAgIGFyZ3MuaW5zZXJ0KGFyZ3MuZW5kKCksIGV4dHJhX2FyZ3MuYmVnaW4o
KSwgZXh0cmFfYXJncy5lbmQoKSk7CisjICBlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9FWFRSQV9E
RUFUSF9URVNUX0NPTU1BTkRfTElORV9BUkdTXykKKyAgICByZXR1cm4gYXJnczsKKyAgfQogICAv
LyBUaGUgbmFtZSBvZiB0aGUgZmlsZSBpbiB3aGljaCB0aGUgZGVhdGggdGVzdCBpcyBsb2NhdGVk
LgogICBjb25zdCBjaGFyKiBjb25zdCBmaWxlXzsKICAgLy8gVGhlIGxpbmUgbnVtYmVyIG9uIHdo
aWNoIHRoZSBkZWF0aCB0ZXN0IGlzIGxvY2F0ZWQuCkBAIC04MjEsNiArMTE0MCw3IEBAIGNsYXNz
IEFyZ3VtZW50cyB7CiAgIGNoYXIqIGNvbnN0KiBBcmd2KCkgewogICAgIHJldHVybiAmYXJnc19b
MF07CiAgIH0KKwogIHByaXZhdGU6CiAgIHN0ZDo6dmVjdG9yPGNoYXIqPiBhcmdzXzsKIH07CkBA
IC04MzIsNiArMTE1MiwyMSBAQCBzdHJ1Y3QgRXhlY0RlYXRoVGVzdEFyZ3MgewogICBpbnQgY2xv
c2VfZmQ7ICAgICAgIC8vIEZpbGUgZGVzY3JpcHRvciB0byBjbG9zZTsgdGhlIHJlYWQgZW5kIG9m
IGEgcGlwZQogfTsKIAorIyAgaWYgR1RFU1RfT1NfTUFDCitpbmxpbmUgY2hhcioqIEdldEVudmly
b24oKSB7CisgIC8vIFdoZW4gR29vZ2xlIFRlc3QgaXMgYnVpbHQgYXMgYSBmcmFtZXdvcmsgb24g
TWFjT1MgWCwgdGhlIGVudmlyb24gdmFyaWFibGUKKyAgLy8gaXMgdW5hdmFpbGFibGUuIEFwcGxl
J3MgZG9jdW1lbnRhdGlvbiAobWFuIGVudmlyb24pIHJlY29tbWVuZHMgdXNpbmcKKyAgLy8gX05T
R2V0RW52aXJvbigpIGluc3RlYWQuCisgIHJldHVybiAqX05TR2V0RW52aXJvbigpOworfQorIyAg
ZWxzZQorLy8gU29tZSBQT1NJWCBwbGF0Zm9ybXMgZXhwZWN0IHlvdSB0byBkZWNsYXJlIGVudmly
b24uIGV4dGVybiAiQyIgbWFrZXMKKy8vIGl0IHJlc2lkZSBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFj
ZS4KK2V4dGVybiAiQyIgY2hhcioqIGVudmlyb247CitpbmxpbmUgY2hhcioqIEdldEVudmlyb24o
KSB7IHJldHVybiBlbnZpcm9uOyB9CisjICBlbmRpZiAgLy8gR1RFU1RfT1NfTUFDCisKKyMgIGlm
ICFHVEVTVF9PU19RTlgKIC8vIFRoZSBtYWluIGZ1bmN0aW9uIGZvciBhIHRocmVhZHNhZmUtc3R5
bGUgZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzLgogLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQg
aW4gYSBjbG9uZSgpLWVkIHByb2Nlc3MgYW5kIHRodXMgbXVzdCBhdm9pZAogLy8gYW55IHBvdGVu
dGlhbGx5IHVuc2FmZSBvcGVyYXRpb25zIGxpa2UgbWFsbG9jIG9yIGxpYmMgZnVuY3Rpb25zLgpA
QCAtODQ2LDkgKzExODEsOCBAQCBzdGF0aWMgaW50IEV4ZWNEZWF0aFRlc3RDaGlsZE1haW4odm9p
ZCogY2hpbGRfYXJnKSB7CiAgICAgICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+b3JpZ2luYWxf
d29ya2luZ19kaXIoKTsKICAgLy8gV2UgY2FuIHNhZmVseSBjYWxsIGNoZGlyKCkgYXMgaXQncyBh
IGRpcmVjdCBzeXN0ZW0gY2FsbC4KICAgaWYgKGNoZGlyKG9yaWdpbmFsX2RpcikgIT0gMCkgewot
ICAgIERlYXRoVGVzdEFib3J0KFN0cmluZzo6Rm9ybWF0KCJjaGRpcihcIiVzXCIpIGZhaWxlZDog
JXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsX2RpciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigp
LmNfc3RyKCkpKTsKKyAgICBEZWF0aFRlc3RBYm9ydChzdGQ6OnN0cmluZygiY2hkaXIoXCIiKSAr
IG9yaWdpbmFsX2RpciArICJcIikgZmFpbGVkOiAiICsKKyAgICAgICAgICAgICAgICAgICBHZXRM
YXN0RXJybm9EZXNjcmlwdGlvbigpKTsKICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICB9CiAK
QEAgLTg1Nyw0MCArMTE5MSw5NyBAQCBzdGF0aWMgaW50IEV4ZWNEZWF0aFRlc3RDaGlsZE1haW4o
dm9pZCogY2hpbGRfYXJnKSB7CiAgIC8vIHVuc2FmZS4gIFNpbmNlIGV4ZWN2ZSgpIGRvZXNuJ3Qg
c2VhcmNoIHRoZSBQQVRILCB0aGUgdXNlciBtdXN0CiAgIC8vIGludm9rZSB0aGUgdGVzdCBwcm9n
cmFtIHZpYSBhIHZhbGlkIHBhdGggdGhhdCBjb250YWlucyBhdCBsZWFzdAogICAvLyBvbmUgcGF0
aCBzZXBhcmF0b3IuCi0gIC8vIFdlIGhhdmUgcmVwbGFjZWQgZXhlY3ZlKCkgd2l0aCBleGVjdigp
IGZvciBXZWJLaXQgdG8gYXZvaWQgdXNpbmcKLSAgLy8gZW52aXJvbi4gSXQgc2hvdWxkIGJlIHNh
ZmUgYmVjYXVzZSBleGVjdigpIGlzIGp1c3QgYSBzaW1wbGUgd3JhcHBlcgotICAvLyBvZiBleGVj
dmUoKS4KLSAgZXhlY3YoYXJncy0+YXJndlswXSwgYXJncy0+YXJndik7Ci0gIERlYXRoVGVzdEFi
b3J0KFN0cmluZzo6Rm9ybWF0KCJleGVjdiglcywgLi4uKSBpbiAlcyBmYWlsZWQ6ICVzIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+YXJndlswXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxfZGlyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpLmNfc3RyKCkpKTsKKyAgZXhlY3Zl
KGFyZ3MtPmFyZ3ZbMF0sIGFyZ3MtPmFyZ3YsIEdldEVudmlyb24oKSk7CisgIERlYXRoVGVzdEFi
b3J0KHN0ZDo6c3RyaW5nKCJleGVjdmUoIikgKyBhcmdzLT5hcmd2WzBdICsgIiwgLi4uKSBpbiAi
ICsKKyAgICAgICAgICAgICAgICAgb3JpZ2luYWxfZGlyICsgIiBmYWlsZWQ6ICIgKworICAgICAg
ICAgICAgICAgICBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpKTsKICAgcmV0dXJuIEVYSVRfRkFJ
TFVSRTsKIH0KKyMgIGVuZGlmICAvLyAhR1RFU1RfT1NfUU5YCiAKKyMgIGlmIEdURVNUX0hBU19D
TE9ORQogLy8gVHdvIHV0aWxpdHkgcm91dGluZXMgdGhhdCB0b2dldGhlciBkZXRlcm1pbmUgdGhl
IGRpcmVjdGlvbiB0aGUgc3RhY2sKIC8vIGdyb3dzLgogLy8gVGhpcyBjb3VsZCBiZSBhY2NvbXBs
aXNoZWQgbW9yZSBlbGVnYW50bHkgYnkgYSBzaW5nbGUgcmVjdXJzaXZlCiAvLyBmdW5jdGlvbiwg
YnV0IHdlIHdhbnQgdG8gZ3VhcmQgYWdhaW5zdCB0aGUgdW5saWtlbHkgcG9zc2liaWxpdHkgb2YK
IC8vIGEgc21hcnQgY29tcGlsZXIgb3B0aW1pemluZyB0aGUgcmVjdXJzaW9uIGF3YXkuCi1ib29s
IFN0YWNrTG93ZXJUaGFuQWRkcmVzcyhjb25zdCB2b2lkKiBwdHIpIHsKKy8vCisvLyBHVEVTVF9O
T19JTkxJTkVfIGlzIHJlcXVpcmVkIHRvIHByZXZlbnQgR0NDIDQuNiBmcm9tIGlubGluaW5nCisv
LyBTdGFja0xvd2VyVGhhbkFkZHJlc3MgaW50byBTdGFja0dyb3dzRG93biwgd2hpY2ggdGhlbiBk
b2Vzbid0IGdpdmUKKy8vIGNvcnJlY3QgYW5zd2VyLgorc3RhdGljIHZvaWQgU3RhY2tMb3dlclRo
YW5BZGRyZXNzKGNvbnN0IHZvaWQqIHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sKiByZXN1bHQpIEdURVNUX05PX0lOTElORV87CitzdGF0aWMgdm9pZCBTdGFja0xv
d2VyVGhhbkFkZHJlc3MoY29uc3Qgdm9pZCogcHRyLCBib29sKiByZXN1bHQpIHsKICAgaW50IGR1
bW15OwotICByZXR1cm4gJmR1bW15IDwgcHRyOworICAqcmVzdWx0ID0gKCZkdW1teSA8IHB0cik7
CiB9CiAKLWJvb2wgU3RhY2tHcm93c0Rvd24oKSB7CisvLyBNYWtlIHN1cmUgQWRkcmVzc1Nhbml0
aXplciBkb2VzIG5vdCB0YW1wZXIgd2l0aCB0aGUgc3RhY2sgaGVyZS4KK0dURVNUX0FUVFJJQlVU
RV9OT19TQU5JVElaRV9BRERSRVNTXworc3RhdGljIGJvb2wgU3RhY2tHcm93c0Rvd24oKSB7CiAg
IGludCBkdW1teTsKLSAgcmV0dXJuIFN0YWNrTG93ZXJUaGFuQWRkcmVzcygmZHVtbXkpOworICBi
b29sIHJlc3VsdDsKKyAgU3RhY2tMb3dlclRoYW5BZGRyZXNzKCZkdW1teSwgJnJlc3VsdCk7Cisg
IHJldHVybiByZXN1bHQ7CiB9Ci0KLS8vIEEgdGhyZWFkc2FmZSBpbXBsZW1lbnRhdGlvbiBvZiBm
b3JrKDIpIGZvciB0aHJlYWRzYWZlLXN0eWxlIGRlYXRoIHRlc3RzCi0vLyB0aGF0IHVzZXMgY2xv
bmUoMikuICBJdCBkaWVzIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpZiBhbnl0aGluZyBnb2VzCi0v
LyB3cm9uZy4KLXN0YXRpYyBwaWRfdCBFeGVjRGVhdGhUZXN0Rm9yayhjaGFyKiBjb25zdCogYXJn
diwgaW50IGNsb3NlX2ZkKSB7CisjICBlbmRpZiAgLy8gR1RFU1RfSEFTX0NMT05FCisKKy8vIFNw
YXducyBhIGNoaWxkIHByb2Nlc3Mgd2l0aCB0aGUgc2FtZSBleGVjdXRhYmxlIGFzIHRoZSBjdXJy
ZW50IHByb2Nlc3MgaW4KKy8vIGEgdGhyZWFkLXNhZmUgbWFubmVyIGFuZCBpbnN0cnVjdHMgaXQg
dG8gcnVuIHRoZSBkZWF0aCB0ZXN0LiAgVGhlCisvLyBpbXBsZW1lbnRhdGlvbiB1c2VzIGZvcmso
MikgKyBleGVjLiAgT24gc3lzdGVtcyB3aGVyZSBjbG9uZSgyKSBpcworLy8gYXZhaWxhYmxlLCBp
dCBpcyB1c2VkIGluc3RlYWQsIGJlaW5nIHNsaWdodGx5IG1vcmUgdGhyZWFkLXNhZmUuICBPbiBR
TlgsCisvLyBmb3JrIHN1cHBvcnRzIG9ubHkgc2luZ2xlLXRocmVhZGVkIGVudmlyb25tZW50cywg
c28gdGhpcyBmdW5jdGlvbiB1c2VzCisvLyBzcGF3bigyKSB0aGVyZSBpbnN0ZWFkLiAgVGhlIGZ1
bmN0aW9uIGRpZXMgd2l0aCBhbiBlcnJvciBtZXNzYWdlIGlmCisvLyBhbnl0aGluZyBnb2VzIHdy
b25nLgorc3RhdGljIHBpZF90IEV4ZWNEZWF0aFRlc3RTcGF3bkNoaWxkKGNoYXIqIGNvbnN0KiBh
cmd2LCBpbnQgY2xvc2VfZmQpIHsKICAgRXhlY0RlYXRoVGVzdEFyZ3MgYXJncyA9IHsgYXJndiwg
Y2xvc2VfZmQgfTsKICAgcGlkX3QgY2hpbGRfcGlkID0gLTE7CiAKLSNpZiBHVEVTVF9IQVNfQ0xP
TkUKKyMgIGlmIEdURVNUX09TX1FOWAorICAvLyBPYnRhaW5zIHRoZSBjdXJyZW50IGRpcmVjdG9y
eSBhbmQgc2V0cyBpdCB0byBiZSBjbG9zZWQgaW4gdGhlIGNoaWxkCisgIC8vIHByb2Nlc3MuCisg
IGNvbnN0IGludCBjd2RfZmQgPSBvcGVuKCIuIiwgT19SRE9OTFkpOworICBHVEVTVF9ERUFUSF9U
RVNUX0NIRUNLXyhjd2RfZmQgIT0gLTEpOworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NB
TExfKGZjbnRsKGN3ZF9mZCwgRl9TRVRGRCwgRkRfQ0xPRVhFQykpOworICAvLyBXZSBuZWVkIHRv
IGV4ZWN1dGUgdGhlIHRlc3QgcHJvZ3JhbSBpbiB0aGUgc2FtZSBlbnZpcm9ubWVudCB3aGVyZQor
ICAvLyBpdCB3YXMgb3JpZ2luYWxseSBpbnZva2VkLiAgVGhlcmVmb3JlIHdlIGNoYW5nZSB0byB0
aGUgb3JpZ2luYWwKKyAgLy8gd29ya2luZyBkaXJlY3RvcnkgZmlyc3QuCisgIGNvbnN0IGNoYXIq
IGNvbnN0IG9yaWdpbmFsX2RpciA9CisgICAgICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+b3Jp
Z2luYWxfd29ya2luZ19kaXIoKTsKKyAgLy8gV2UgY2FuIHNhZmVseSBjYWxsIGNoZGlyKCkgYXMg
aXQncyBhIGRpcmVjdCBzeXN0ZW0gY2FsbC4KKyAgaWYgKGNoZGlyKG9yaWdpbmFsX2RpcikgIT0g
MCkgeworICAgIERlYXRoVGVzdEFib3J0KHN0ZDo6c3RyaW5nKCJjaGRpcihcIiIpICsgb3JpZ2lu
YWxfZGlyICsgIlwiKSBmYWlsZWQ6ICIgKworICAgICAgICAgICAgICAgICAgIEdldExhc3RFcnJu
b0Rlc2NyaXB0aW9uKCkpOworICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgIH0KKworICBpbnQg
ZmRfZmxhZ3M7CisgIC8vIFNldCBjbG9zZV9mZCB0byBiZSBjbG9zZWQgYWZ0ZXIgc3Bhd24uCisg
IEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oZmRfZmxhZ3MgPSBmY250bChjbG9zZV9m
ZCwgRl9HRVRGRCkpOworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGZjbnRsKGNs
b3NlX2ZkLCBGX1NFVEZELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZkX2ZsYWdzIHwgRkRfQ0xPRVhFQykpOworICBzdHJ1Y3QgaW5oZXJpdGFuY2UgaW5oZXJpdCA9
IHswfTsKKyAgLy8gc3Bhd24gaXMgYSBzeXN0ZW0gY2FsbC4KKyAgY2hpbGRfcGlkID0gc3Bhd24o
YXJncy5hcmd2WzBdLCAwLCBOVUxMLCAmaW5oZXJpdCwgYXJncy5hcmd2LCBHZXRFbnZpcm9uKCkp
OworICAvLyBSZXN0b3JlcyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KKyAgR1RFU1Rf
REVBVEhfVEVTVF9DSEVDS18oZmNoZGlyKGN3ZF9mZCkgIT0gLTEpOworICBHVEVTVF9ERUFUSF9U
RVNUX0NIRUNLX1NZU0NBTExfKGNsb3NlKGN3ZF9mZCkpOworCisjICBlbHNlICAgLy8gR1RFU1Rf
T1NfUU5YCisjICAgaWYgR1RFU1RfT1NfTElOVVgKKyAgLy8gV2hlbiBhIFNJR1BST0Ygc2lnbmFs
IGlzIHJlY2VpdmVkIHdoaWxlIGZvcmsoKSBvciBjbG9uZSgpIGFyZSBleGVjdXRpbmcsCisgIC8v
IHRoZSBwcm9jZXNzIG1heSBoYW5nLiBUbyBhdm9pZCB0aGlzLCB3ZSBpZ25vcmUgU0lHUFJPRiBo
ZXJlIGFuZCByZS1lbmFibGUKKyAgLy8gaXQgYWZ0ZXIgdGhlIGNhbGwgdG8gZm9yaygpL2Nsb25l
KCkgaXMgY29tcGxldGUuCisgIHN0cnVjdCBzaWdhY3Rpb24gc2F2ZWRfc2lncHJvZl9hY3Rpb247
CisgIHN0cnVjdCBzaWdhY3Rpb24gaWdub3JlX3NpZ3Byb2ZfYWN0aW9uOworICBtZW1zZXQoJmln
bm9yZV9zaWdwcm9mX2FjdGlvbiwgMCwgc2l6ZW9mKGlnbm9yZV9zaWdwcm9mX2FjdGlvbikpOwor
ICBzaWdlbXB0eXNldCgmaWdub3JlX3NpZ3Byb2ZfYWN0aW9uLnNhX21hc2spOworICBpZ25vcmVf
c2lncHJvZl9hY3Rpb24uc2FfaGFuZGxlciA9IFNJR19JR047CisgIEdURVNUX0RFQVRIX1RFU1Rf
Q0hFQ0tfU1lTQ0FMTF8oc2lnYWN0aW9uKAorICAgICAgU0lHUFJPRiwgJmlnbm9yZV9zaWdwcm9m
X2FjdGlvbiwgJnNhdmVkX3NpZ3Byb2ZfYWN0aW9uKSk7CisjICAgZW5kaWYgIC8vIEdURVNUX09T
X0xJTlVYCisKKyMgICBpZiBHVEVTVF9IQVNfQ0xPTkUKICAgY29uc3QgYm9vbCB1c2VfZm9yayA9
IEdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yayk7CiAKICAgaWYgKCF1c2VfZm9yaykgewpA
QCAtOTAwLDIxICsxMjkxLDM3IEBAIHN0YXRpYyBwaWRfdCBFeGVjRGVhdGhUZXN0Rm9yayhjaGFy
KiBjb25zdCogYXJndiwgaW50IGNsb3NlX2ZkKSB7CiAgICAgdm9pZCogY29uc3Qgc3RhY2sgPSBt
bWFwKE5VTEwsIHN0YWNrX3NpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE1BUF9BTk9OIHwgTUFQX1BSSVZBVEUsIC0xLCAwKTsKICAgICBH
VEVTVF9ERUFUSF9URVNUX0NIRUNLXyhzdGFjayAhPSBNQVBfRkFJTEVEKTsKKworICAgIC8vIE1h
eGltdW0gc3RhY2sgYWxpZ25tZW50IGluIGJ5dGVzOiAgRm9yIGEgZG93bndhcmQtZ3Jvd2luZyBz
dGFjaywgdGhpcworICAgIC8vIGFtb3VudCBpcyBzdWJ0cmFjdGVkIGZyb20gc2l6ZSBvZiB0aGUg
c3RhY2sgc3BhY2UgdG8gZ2V0IGFuIGFkZHJlc3MKKyAgICAvLyB0aGF0IGlzIHdpdGhpbiB0aGUg
c3RhY2sgc3BhY2UgYW5kIGlzIGFsaWduZWQgb24gYWxsIHN5c3RlbXMgd2UgY2FyZQorICAgIC8v
IGFib3V0LiAgQXMgZmFyIGFzIEkga25vdyB0aGVyZSBpcyBubyBBQkkgd2l0aCBzdGFjayBhbGln
bm1lbnQgZ3JlYXRlcgorICAgIC8vIHRoYW4gNjQuICBXZSBhc3N1bWUgc3RhY2sgYW5kIHN0YWNr
X3NpemUgYWxyZWFkeSBoYXZlIGFsaWdubWVudCBvZgorICAgIC8vIGtNYXhTdGFja0FsaWdubWVu
dC4KKyAgICBjb25zdCBzaXplX3Qga01heFN0YWNrQWxpZ25tZW50ID0gNjQ7CiAgICAgdm9pZCog
Y29uc3Qgc3RhY2tfdG9wID0KLSAgICAgICAgc3RhdGljX2Nhc3Q8Y2hhcio+KHN0YWNrKSArIChz
dGFja19ncm93c19kb3duID8gc3RhY2tfc2l6ZSA6IDApOworICAgICAgICBzdGF0aWNfY2FzdDxj
aGFyKj4oc3RhY2spICsKKyAgICAgICAgICAgIChzdGFja19ncm93c19kb3duID8gc3RhY2tfc2l6
ZSAtIGtNYXhTdGFja0FsaWdubWVudCA6IDApOworICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tf
KHN0YWNrX3NpemUgPiBrTWF4U3RhY2tBbGlnbm1lbnQgJiYKKyAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4oc3RhY2tfdG9wKSAlIGtNYXhTdGFja0FsaWdubWVudCA9PSAwKTsKIAog
ICAgIGNoaWxkX3BpZCA9IGNsb25lKCZFeGVjRGVhdGhUZXN0Q2hpbGRNYWluLCBzdGFja190b3As
IFNJR0NITEQsICZhcmdzKTsKIAogICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKG11bm1hcChz
dGFjaywgc3RhY2tfc2l6ZSkgIT0gLTEpOwogICB9Ci0jZWxzZQorIyAgIGVsc2UKICAgY29uc3Qg
Ym9vbCB1c2VfZm9yayA9IHRydWU7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORQorIyAgIGVu
ZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUKIAogICBpZiAodXNlX2ZvcmsgJiYgKGNoaWxkX3BpZCA9
IGZvcmsoKSkgPT0gMCkgewogICAgICAgRXhlY0RlYXRoVGVzdENoaWxkTWFpbigmYXJncyk7CiAg
ICAgICBfZXhpdCgwKTsKICAgfQorIyAgZW5kaWYgIC8vIEdURVNUX09TX1FOWAorIyAgaWYgR1RF
U1RfT1NfTElOVVgKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXygKKyAgICAgIHNp
Z2FjdGlvbihTSUdQUk9GLCAmc2F2ZWRfc2lncHJvZl9hY3Rpb24sIE5VTEwpKTsKKyMgIGVuZGlm
ICAvLyBHVEVTVF9PU19MSU5VWAogCiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGNoaWxkX3Bp
ZCAhPSAtMSk7CiAgIHJldHVybiBjaGlsZF9waWQ7CkBAIC05NDIsMTYgKzEzNDksMTYgQEAgRGVh
dGhUZXN0OjpUZXN0Um9sZSBFeGVjRGVhdGhUZXN0OjpBc3N1bWVSb2xlKCkgewogICAvLyBpdCBi
ZSBjbG9zZWQgd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBkb2VzIGFuIGV4ZWM6CiAgIEdURVNUX0RF
QVRIX1RFU1RfQ0hFQ0tfKGZjbnRsKHBpcGVfZmRbMV0sIEZfU0VURkQsIDApICE9IC0xKTsKIAot
ICBjb25zdCBTdHJpbmcgZmlsdGVyX2ZsYWcgPQotICAgICAgU3RyaW5nOjpGb3JtYXQoIi0tJXMl
cz0lcy4lcyIsCi0gICAgICAgICAgICAgICAgICAgICBHVEVTVF9GTEFHX1BSRUZJWF8sIGtGaWx0
ZXJGbGFnLAotICAgICAgICAgICAgICAgICAgICAgaW5mby0+dGVzdF9jYXNlX25hbWUoKSwgaW5m
by0+bmFtZSgpKTsKLSAgY29uc3QgU3RyaW5nIGludGVybmFsX2ZsYWcgPQotICAgICAgU3RyaW5n
OjpGb3JtYXQoIi0tJXMlcz0lc3wlZHwlZHwlZCIsCi0gICAgICAgICAgICAgICAgICAgICBHVEVT
VF9GTEFHX1BSRUZJWF8sIGtJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcsCi0gICAgICAgICAgICAg
ICAgICAgICBmaWxlXywgbGluZV8sIGRlYXRoX3Rlc3RfaW5kZXgsIHBpcGVfZmRbMV0pOworICBj
b25zdCBzdGQ6OnN0cmluZyBmaWx0ZXJfZmxhZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0iKSAr
IEdURVNUX0ZMQUdfUFJFRklYXyArIGtGaWx0ZXJGbGFnICsgIj0iCisgICAgICArIGluZm8tPnRl
c3RfY2FzZV9uYW1lKCkgKyAiLiIgKyBpbmZvLT5uYW1lKCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5n
IGludGVybmFsX2ZsYWcgPQorICAgICAgc3RkOjpzdHJpbmcoIi0tIikgKyBHVEVTVF9GTEFHX1BS
RUZJWF8gKyBrSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnICsgIj0iCisgICAgICArIGZpbGVfICsg
InwiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGxpbmVfKSArICJ8IgorICAgICAgKyBTdHJlYW1hYmxl
VG9TdHJpbmcoZGVhdGhfdGVzdF9pbmRleCkgKyAifCIKKyAgICAgICsgU3RyZWFtYWJsZVRvU3Ry
aW5nKHBpcGVfZmRbMV0pOwogICBBcmd1bWVudHMgYXJnczsKLSAgYXJncy5BZGRBcmd1bWVudHMo
R2V0QXJndnMoKSk7CisgIGFyZ3MuQWRkQXJndW1lbnRzKEdldEFyZ3ZzRm9yRGVhdGhUZXN0Q2hp
bGRQcm9jZXNzKCkpOwogICBhcmdzLkFkZEFyZ3VtZW50KGZpbHRlcl9mbGFnLmNfc3RyKCkpOwog
ICBhcmdzLkFkZEFyZ3VtZW50KGludGVybmFsX2ZsYWcuY19zdHIoKSk7CiAKQEAgLTk2Miw3ICsx
MzY5LDcgQEAgRGVhdGhUZXN0OjpUZXN0Um9sZSBFeGVjRGVhdGhUZXN0OjpBc3N1bWVSb2xlKCkg
ewogICAvLyBpcyBuZWNlc3NhcnkuCiAgIEZsdXNoSW5mb0xvZygpOwogCi0gIGNvbnN0IHBpZF90
IGNoaWxkX3BpZCA9IEV4ZWNEZWF0aFRlc3RGb3JrKGFyZ3MuQXJndigpLCBwaXBlX2ZkWzBdKTsK
KyAgY29uc3QgcGlkX3QgY2hpbGRfcGlkID0gRXhlY0RlYXRoVGVzdFNwYXduQ2hpbGQoYXJncy5B
cmd2KCksIHBpcGVfZmRbMF0pOwogICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGNs
b3NlKHBpcGVfZmRbMV0pKTsKICAgc2V0X2NoaWxkX3BpZChjaGlsZF9waWQpOwogICBzZXRfcmVh
ZF9mZChwaXBlX2ZkWzBdKTsKQEAgLTk3MCw3ICsxMzc3LDcgQEAgRGVhdGhUZXN0OjpUZXN0Um9s
ZSBFeGVjRGVhdGhUZXN0OjpBc3N1bWVSb2xlKCkgewogICByZXR1cm4gT1ZFUlNFRV9URVNUOwog
fQogCi0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyAhR1RFU1RfT1Nf
V0lORE9XUwogCiAvLyBDcmVhdGVzIGEgY29uY3JldGUgRGVhdGhUZXN0LWRlcml2ZWQgY2xhc3Mg
dGhhdCBkZXBlbmRzIG9uIHRoZQogLy8gLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlIGZsYWcsIGFu
ZCBzZXRzIHRoZSBwb2ludGVyIHBvaW50ZWQgdG8KQEAgLTk4OCw5ICsxMzk1LDEwIEBAIGJvb2wg
RGVmYXVsdERlYXRoVGVzdEZhY3Rvcnk6OkNyZWF0ZShjb25zdCBjaGFyKiBzdGF0ZW1lbnQsIGNv
bnN0IFJFKiByZWdleCwKIAogICBpZiAoZmxhZyAhPSBOVUxMKSB7CiAgICAgaWYgKGRlYXRoX3Rl
c3RfaW5kZXggPiBmbGFnLT5pbmRleCgpKSB7Ci0gICAgICBEZWF0aFRlc3Q6OnNldF9sYXN0X2Rl
YXRoX3Rlc3RfbWVzc2FnZShTdHJpbmc6OkZvcm1hdCgKLSAgICAgICAgICAiRGVhdGggdGVzdCBj
b3VudCAoJWQpIHNvbWVob3cgZXhjZWVkZWQgZXhwZWN0ZWQgbWF4aW11bSAoJWQpIiwKLSAgICAg
ICAgICBkZWF0aF90ZXN0X2luZGV4LCBmbGFnLT5pbmRleCgpKSk7CisgICAgICBEZWF0aFRlc3Q6
OnNldF9sYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZSgKKyAgICAgICAgICAiRGVhdGggdGVzdCBjb3Vu
dCAoIiArIFN0cmVhbWFibGVUb1N0cmluZyhkZWF0aF90ZXN0X2luZGV4KQorICAgICAgICAgICsg
Iikgc29tZWhvdyBleGNlZWRlZCBleHBlY3RlZCBtYXhpbXVtICgiCisgICAgICAgICAgKyBTdHJl
YW1hYmxlVG9TdHJpbmcoZmxhZy0+aW5kZXgoKSkgKyAiKSIpOwogICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtMTAwMSw2NCArMTQwOSw1NiBAQCBib29sIERlZmF1bHREZWF0aFRlc3RG
YWN0b3J5OjpDcmVhdGUoY29uc3QgY2hhciogc3RhdGVtZW50LCBjb25zdCBSRSogcmVnZXgsCiAg
ICAgfQogICB9CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MK
KwogICBpZiAoR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAidGhyZWFkc2FmZSIgfHwK
ICAgICAgIEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPT0gImZhc3QiKSB7CiAgICAgKnRl
c3QgPSBuZXcgV2luZG93c0RlYXRoVGVzdChzdGF0ZW1lbnQsIHJlZ2V4LCBmaWxlLCBsaW5lKTsK
ICAgfQotI2Vsc2UKKworIyBlbGlmIEdURVNUX09TX0ZVQ0hTSUEKKworICBpZiAoR1RFU1RfRkxB
RyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAidGhyZWFkc2FmZSIgfHwKKyAgICAgIEdURVNUX0ZMQUco
ZGVhdGhfdGVzdF9zdHlsZSkgPT0gImZhc3QiKSB7CisgICAgKnRlc3QgPSBuZXcgRnVjaHNpYURl
YXRoVGVzdChzdGF0ZW1lbnQsIHJlZ2V4LCBmaWxlLCBsaW5lKTsKKyAgfQorCisjIGVsc2UKKwog
ICBpZiAoR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAidGhyZWFkc2FmZSIpIHsKICAg
ICAqdGVzdCA9IG5ldyBFeGVjRGVhdGhUZXN0KHN0YXRlbWVudCwgcmVnZXgsIGZpbGUsIGxpbmUp
OwogICB9IGVsc2UgaWYgKEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPT0gImZhc3QiKSB7
CiAgICAgKnRlc3QgPSBuZXcgTm9FeGVjRGVhdGhUZXN0KHN0YXRlbWVudCwgcmVnZXgpOwogICB9
Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lO
RE9XUworCiAgIGVsc2UgeyAgLy8gTk9MSU5UIC0gdGhpcyBpcyBtb3JlIHJlYWRhYmxlIHRoYW4g
dW5iYWxhbmNlZCBicmFja2V0cyBpbnNpZGUgI2lmLgotICAgIERlYXRoVGVzdDo6c2V0X2xhc3Rf
ZGVhdGhfdGVzdF9tZXNzYWdlKFN0cmluZzo6Rm9ybWF0KAotICAgICAgICAiVW5rbm93biBkZWF0
aCB0ZXN0IHN0eWxlIFwiJXNcIiBlbmNvdW50ZXJlZCIsCi0gICAgICAgIEdURVNUX0ZMQUcoZGVh
dGhfdGVzdF9zdHlsZSkuY19zdHIoKSkpOworICAgIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVhdGhf
dGVzdF9tZXNzYWdlKAorICAgICAgICAiVW5rbm93biBkZWF0aCB0ZXN0IHN0eWxlIFwiIiArIEdU
RVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkKKyAgICAgICAgKyAiXCIgZW5jb3VudGVyZWQiKTsK
ICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAogICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gU3BsaXRz
IGEgZ2l2ZW4gc3RyaW5nIG9uIGEgZ2l2ZW4gZGVsaW1pdGVyLCBwb3B1bGF0aW5nIGEgZ2l2ZW4K
LS8vIHZlY3RvciB3aXRoIHRoZSBmaWVsZHMuICBHVEVTVF9IQVNfREVBVEhfVEVTVCBpbXBsaWVz
IHRoYXQgd2UgaGF2ZQotLy8gOjpzdGQ6OnN0cmluZywgc28gd2UgY2FuIHVzZSBpdCBoZXJlLgot
c3RhdGljIHZvaWQgU3BsaXRTdHJpbmcoY29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyLCBjaGFyIGRl
bGltaXRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpz
dHJpbmc+KiBkZXN0KSB7Ci0gIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpzdHJpbmc+IHBhcnNlZDsK
LSAgOjpzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHBvcyA9IDA7Ci0gIHdoaWxlICg6OnRlc3Rpbmc6
OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsKLSAgICBjb25zdCA6OnN0ZDo6c3RyaW5nOjpzaXpl
X3R5cGUgY29sb24gPSBzdHIuZmluZChkZWxpbWl0ZXIsIHBvcyk7Ci0gICAgaWYgKGNvbG9uID09
IDo6c3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAgICAgIHBhcnNlZC5wdXNoX2JhY2soc3RyLnN1YnN0
cihwb3MpKTsKLSAgICAgIGJyZWFrOwotICAgIH0gZWxzZSB7Ci0gICAgICBwYXJzZWQucHVzaF9i
YWNrKHN0ci5zdWJzdHIocG9zLCBjb2xvbiAtIHBvcykpOwotICAgICAgcG9zID0gY29sb24gKyAx
OwotICAgIH0KLSAgfQotICBkZXN0LT5zd2FwKHBhcnNlZCk7Ci19Ci0KLSNpZiBHVEVTVF9PU19X
SU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MKIC8vIFJlY3JlYXRlcyB0aGUgcGlwZSBhbmQg
ZXZlbnQgaGFuZGxlcyBmcm9tIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLAogLy8gc2lnbmFscyB0
aGUgZXZlbnQsIGFuZCByZXR1cm5zIGEgZmlsZSBkZXNjcmlwdG9yIHdyYXBwZWQgYXJvdW5kIHRo
ZSBwaXBlCiAvLyBoYW5kbGUuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIHRoZSBjaGlsZCBw
cm9jZXNzIG9ubHkuCi1pbnQgR2V0U3RhdHVzRmlsZURlc2NyaXB0b3IodW5zaWduZWQgaW50IHBh
cmVudF9wcm9jZXNzX2lkLAorc3RhdGljIGludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNp
Z25lZCBpbnQgcGFyZW50X3Byb2Nlc3NfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IHdyaXRlX2hhbmRsZV9hc19zaXplX3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGV2ZW50X2hhbmRsZV9hc19zaXplX3QpIHsKICAgQXV0b0hhbmRsZSBwYXJlbnRf
cHJvY2Vzc19oYW5kbGUoOjpPcGVuUHJvY2VzcyhQUk9DRVNTX0RVUF9IQU5ETEUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwgIC8vIE5v
bi1pbmhlcml0YWJsZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmVudF9wcm9jZXNzX2lkKSk7CiAgIGlmIChwYXJlbnRfcHJvY2Vzc19oYW5k
bGUuR2V0KCkgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICBEZWF0aFRlc3RBYm9ydChT
dHJpbmc6OkZvcm1hdCgiVW5hYmxlIHRvIG9wZW4gcGFyZW50IHByb2Nlc3MgJXUiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudF9wcm9jZXNzX2lkKSk7CisgICAgRGVh
dGhUZXN0QWJvcnQoIlVuYWJsZSB0byBvcGVuIHBhcmVudCBwcm9jZXNzICIgKworICAgICAgICAg
ICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhwYXJlbnRfcHJvY2Vzc19pZCkpOwogICB9CiAK
LSAgLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogUmVwbGFjZSB0aGUgZm9sbG93aW5nIGNoZWNr
IHdpdGggYQorICAvLyBGSVhNRTogUmVwbGFjZSB0aGUgZm9sbG93aW5nIGNoZWNrIHdpdGggYQog
ICAvLyBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHdoZW4gYXZhaWxhYmxlLgogICBHVEVTVF9DSEVD
S18oc2l6ZW9mKEhBTkRMRSkgPD0gc2l6ZW9mKHNpemVfdCkpOwogCkBAIC0xMDY2LDcgKzE0NjYs
NyBAQCBpbnQgR2V0U3RhdHVzRmlsZURlc2NyaXB0b3IodW5zaWduZWQgaW50IHBhcmVudF9wcm9j
ZXNzX2lkLAogICAgICAgcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KHdyaXRlX2hhbmRsZV9hc19z
aXplX3QpOwogICBIQU5ETEUgZHVwX3dyaXRlX2hhbmRsZTsKIAotICAvLyBUaGUgbmV3bHkgaW5p
dGlhbGl6ZWQgaGFuZGxlIGlzIGFjY2Vzc2libGUgb25seSBpbiBpbiB0aGUgcGFyZW50CisgIC8v
IFRoZSBuZXdseSBpbml0aWFsaXplZCBoYW5kbGUgaXMgYWNjZXNzaWJsZSBvbmx5IGluIHRoZSBw
YXJlbnQKICAgLy8gcHJvY2Vzcy4gVG8gb2J0YWluIG9uZSBhY2Nlc3NpYmxlIHdpdGhpbiB0aGUg
Y2hpbGQsIHdlIG5lZWQgdG8gdXNlCiAgIC8vIER1cGxpY2F0ZUhhbmRsZS4KICAgaWYgKCE6OkR1
cGxpY2F0ZUhhbmRsZShwYXJlbnRfcHJvY2Vzc19oYW5kbGUuR2V0KCksIHdyaXRlX2hhbmRsZSwK
QEAgLTEwNzUsOSArMTQ3NSwxMCBAQCBpbnQgR2V0U3RhdHVzRmlsZURlc2NyaXB0b3IodW5zaWdu
ZWQgaW50IHBhcmVudF9wcm9jZXNzX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gRFVQTElDQVRFX1NBTUVfQUNDRVNTIGlzIHVzZWQuCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgRkFMU0UsICAvLyBSZXF1ZXN0IG5vbi1pbmhlcml0YWJsZSBoYW5kbGVyLgogICAgICAg
ICAgICAgICAgICAgICAgICAgIERVUExJQ0FURV9TQU1FX0FDQ0VTUykpIHsKLSAgICBEZWF0aFRl
c3RBYm9ydChTdHJpbmc6OkZvcm1hdCgKLSAgICAgICAgIlVuYWJsZSB0byBkdXBsaWNhdGUgdGhl
IHBpcGUgaGFuZGxlICVJdSBmcm9tIHRoZSBwYXJlbnQgcHJvY2VzcyAldSIsCi0gICAgICAgIHdy
aXRlX2hhbmRsZV9hc19zaXplX3QsIHBhcmVudF9wcm9jZXNzX2lkKSk7CisgICAgRGVhdGhUZXN0
QWJvcnQoIlVuYWJsZSB0byBkdXBsaWNhdGUgdGhlIHBpcGUgaGFuZGxlICIgKworICAgICAgICAg
ICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh3cml0ZV9oYW5kbGVfYXNfc2l6ZV90KSArCisg
ICAgICAgICAgICAgICAgICAgIiBmcm9tIHRoZSBwYXJlbnQgcHJvY2VzcyAiICsKKyAgICAgICAg
ICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcocGFyZW50X3Byb2Nlc3NfaWQpKTsKICAgfQog
CiAgIGNvbnN0IEhBTkRMRSBldmVudF9oYW5kbGUgPSByZWludGVycHJldF9jYXN0PEhBTkRMRT4o
ZXZlbnRfaGFuZGxlX2FzX3NpemVfdCk7CkBAIC0xMDg4LDE3ICsxNDg5LDE4IEBAIGludCBHZXRT
dGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBpbnQgcGFyZW50X3Byb2Nlc3NfaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHgwLAogICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNF
LAogICAgICAgICAgICAgICAgICAgICAgICAgIERVUExJQ0FURV9TQU1FX0FDQ0VTUykpIHsKLSAg
ICBEZWF0aFRlc3RBYm9ydChTdHJpbmc6OkZvcm1hdCgKLSAgICAgICAgIlVuYWJsZSB0byBkdXBs
aWNhdGUgdGhlIGV2ZW50IGhhbmRsZSAlSXUgZnJvbSB0aGUgcGFyZW50IHByb2Nlc3MgJXUiLAot
ICAgICAgICBldmVudF9oYW5kbGVfYXNfc2l6ZV90LCBwYXJlbnRfcHJvY2Vzc19pZCkpOworICAg
IERlYXRoVGVzdEFib3J0KCJVbmFibGUgdG8gZHVwbGljYXRlIHRoZSBldmVudCBoYW5kbGUgIiAr
CisgICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKGV2ZW50X2hhbmRsZV9hc19z
aXplX3QpICsKKyAgICAgICAgICAgICAgICAgICAiIGZyb20gdGhlIHBhcmVudCBwcm9jZXNzICIg
KworICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhwYXJlbnRfcHJvY2Vzc19p
ZCkpOwogICB9CiAKICAgY29uc3QgaW50IHdyaXRlX2ZkID0KICAgICAgIDo6X29wZW5fb3NmaGFu
ZGxlKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGR1cF93cml0ZV9oYW5kbGUpLCBPX0FQUEVO
RCk7CiAgIGlmICh3cml0ZV9mZCA9PSAtMSkgewotICAgIERlYXRoVGVzdEFib3J0KFN0cmluZzo6
Rm9ybWF0KAotICAgICAgICAiVW5hYmxlIHRvIGNvbnZlcnQgcGlwZSBoYW5kbGUgJUl1IHRvIGEg
ZmlsZSBkZXNjcmlwdG9yIiwKLSAgICAgICAgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCkpOworICAg
IERlYXRoVGVzdEFib3J0KCJVbmFibGUgdG8gY29udmVydCBwaXBlIGhhbmRsZSAiICsKKyAgICAg
ICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcod3JpdGVfaGFuZGxlX2FzX3NpemVfdCkg
KworICAgICAgICAgICAgICAgICAgICIgdG8gYSBmaWxlIGRlc2NyaXB0b3IiKTsKICAgfQogCiAg
IC8vIFNpZ25hbHMgdGhlIHBhcmVudCB0aGF0IHRoZSB3cml0ZSBlbmQgb2YgdGhlIHBpcGUgaGFz
IGJlZW4gYWNxdWlyZWQKQEAgLTExMDcsNyArMTUwOSw3IEBAIGludCBHZXRTdGF0dXNGaWxlRGVz
Y3JpcHRvcih1bnNpZ25lZCBpbnQgcGFyZW50X3Byb2Nlc3NfaWQsCiAKICAgcmV0dXJuIHdyaXRl
X2ZkOwogfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCiAKIC8vIFJldHVybnMgYSBuZXdseSBjcmVhdGVkIEludGVybmFsUnVuRGVhdGhU
ZXN0RmxhZyBvYmplY3Qgd2l0aCBmaWVsZHMKIC8vIGluaXRpYWxpemVkIGZyb20gdGhlIEdURVNU
X0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpIGZsYWcgaWYKQEAgLTExMjMsNyArMTUyNSw4
IEBAIEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyogUGFyc2VJbnRlcm5hbFJ1bkRlYXRoVGVzdEZs
YWcoKSB7CiAgIFNwbGl0U3RyaW5nKEdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3Qp
LmNfc3RyKCksICd8JywgJmZpZWxkcyk7CiAgIGludCB3cml0ZV9mZCA9IC0xOwogCi0jaWYgR1RF
U1RfT1NfV0lORE9XUworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisKICAgdW5zaWduZWQgaW50IHBh
cmVudF9wcm9jZXNzX2lkID0gMDsKICAgc2l6ZV90IHdyaXRlX2hhbmRsZV9hc19zaXplX3QgPSAw
OwogICBzaXplX3QgZXZlbnRfaGFuZGxlX2FzX3NpemVfdCA9IDA7CkBAIC0xMTM0LDIzICsxNTM3
LDM0IEBAIEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyogUGFyc2VJbnRlcm5hbFJ1bkRlYXRoVGVz
dEZsYWcoKSB7CiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1szXSwgJnBhcmVu
dF9wcm9jZXNzX2lkKQogICAgICAgfHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVsZHNbNF0sICZ3
cml0ZV9oYW5kbGVfYXNfc2l6ZV90KQogICAgICAgfHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVs
ZHNbNV0sICZldmVudF9oYW5kbGVfYXNfc2l6ZV90KSkgewotICAgIERlYXRoVGVzdEFib3J0KFN0
cmluZzo6Rm9ybWF0KAotICAgICAgICAiQmFkIC0tZ3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rl
c3QgZmxhZzogJXMiLAotICAgICAgICBHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0
KS5jX3N0cigpKSk7CisgICAgRGVhdGhUZXN0QWJvcnQoIkJhZCAtLWd0ZXN0X2ludGVybmFsX3J1
bl9kZWF0aF90ZXN0IGZsYWc6ICIgKworICAgICAgICAgICAgICAgICAgIEdURVNUX0ZMQUcoaW50
ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpKTsKICAgfQogICB3cml0ZV9mZCA9IEdldFN0YXR1c0ZpbGVE
ZXNjcmlwdG9yKHBhcmVudF9wcm9jZXNzX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdyaXRlX2hhbmRsZV9hc19zaXplX3QsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXZlbnRfaGFuZGxlX2FzX3NpemVfdCk7Ci0jZWxzZQorCisjIGVsaWYg
R1RFU1RfT1NfRlVDSFNJQQorCisgIGlmIChmaWVsZHMuc2l6ZSgpICE9IDMKKyAgICAgIHx8ICFQ
YXJzZU5hdHVyYWxOdW1iZXIoZmllbGRzWzFdLCAmbGluZSkKKyAgICAgIHx8ICFQYXJzZU5hdHVy
YWxOdW1iZXIoZmllbGRzWzJdLCAmaW5kZXgpKSB7CisgICAgRGVhdGhUZXN0QWJvcnQoIkJhZCAt
LWd0ZXN0X2ludGVybmFsX3J1bl9kZWF0aF90ZXN0IGZsYWc6ICIKKyAgICAgICAgKyBHVEVTVF9G
TEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KSk7CisgIH0KKworIyBlbHNlCisKICAgaWYgKGZp
ZWxkcy5zaXplKCkgIT0gNAogICAgICAgfHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVsZHNbMV0s
ICZsaW5lKQogICAgICAgfHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVsZHNbMl0sICZpbmRleCkK
ICAgICAgIHx8ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmllbGRzWzNdLCAmd3JpdGVfZmQpKSB7Ci0g
ICAgRGVhdGhUZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICJCYWQgLS1ndGVzdF9p
bnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFnOiAlcyIsCi0gICAgICAgIEdURVNUX0ZMQUcoaW50
ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpLmNfc3RyKCkpKTsKKyAgICBEZWF0aFRlc3RBYm9ydCgiQmFk
IC0tZ3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QgZmxhZzogIgorICAgICAgICArIEdURVNU
X0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpKTsKICAgfQotI2VuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCisKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKwogICByZXR1cm4gbmV3
IEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyhmaWVsZHNbMF0sIGxpbmUsIGluZGV4LCB3cml0ZV9m
ZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1m
aWxlcGF0aC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1maWxlcGF0aC5j
YwppbmRleCBjMWVmOTE4OGFkODVhYjhhMDQ3YTMzYmY5OTQ1ZTFjZDBjYzczZWZmLi5hN2U2NWMw
ODJhNzVmYzZmYjAzOGEwMjNkNWIxZDNlMDllNDc5ZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtZmlsZXBhdGguY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc3JjL2d0ZXN0LWZpbGVwYXRoLmNjCkBAIC0yNiwzOSArMjYsMzggQEAKIC8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3Jz
OiBrZWl0aC5yYXlAZ21haWwuY29tIChLZWl0aCBSYXkpCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRl
cm5hbC9ndGVzdC1maWxlcGF0aC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oIgogCiAjaW5j
bHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCIKIAogI2lmIEdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFCi0jaW5jbHVkZSA8d2luZG93cy5oPgorIyBpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZWxp
ZiBHVEVTVF9PU19XSU5ET1dTCi0jaW5jbHVkZSA8ZGlyZWN0Lmg+Ci0jaW5jbHVkZSA8aW8uaD4K
KyMgaW5jbHVkZSA8ZGlyZWN0Lmg+CisjIGluY2x1ZGUgPGlvLmg+CiAjZWxpZiBHVEVTVF9PU19T
WU1CSUFOCiAvLyBTeW1iaWFuIE9wZW5DIGhhcyBQQVRIX01BWCBpbiBzeXMvc3lzbGltaXRzLmgK
LSNpbmNsdWRlIDxzeXMvc3lzbGltaXRzLmg+CisjIGluY2x1ZGUgPHN5cy9zeXNsaW1pdHMuaD4K
ICNlbHNlCi0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8Y2xpbWl0cz4gIC8vIFNvbWUg
TGludXggZGlzdHJpYnV0aW9ucyBkZWZpbmUgUEFUSF9NQVggaGVyZS4KKyMgaW5jbHVkZSA8bGlt
aXRzLmg+CisjIGluY2x1ZGUgPGNsaW1pdHM+ICAvLyBTb21lIExpbnV4IGRpc3RyaWJ1dGlvbnMg
ZGVmaW5lIFBBVEhfTUFYIGhlcmUuCiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxF
CiAKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKKwogI2lmIEdURVNU
X09TX1dJTkRPV1MKLSNkZWZpbmUgR1RFU1RfUEFUSF9NQVhfIF9NQVhfUEFUSAorIyBkZWZpbmUg
R1RFU1RfUEFUSF9NQVhfIF9NQVhfUEFUSAogI2VsaWYgZGVmaW5lZChQQVRIX01BWCkKLSNkZWZp
bmUgR1RFU1RfUEFUSF9NQVhfIFBBVEhfTUFYCisjIGRlZmluZSBHVEVTVF9QQVRIX01BWF8gUEFU
SF9NQVgKICNlbGlmIGRlZmluZWQoX1hPUEVOX1BBVEhfTUFYKQotI2RlZmluZSBHVEVTVF9QQVRI
X01BWF8gX1hPUEVOX1BBVEhfTUFYCisjIGRlZmluZSBHVEVTVF9QQVRIX01BWF8gX1hPUEVOX1BB
VEhfTUFYCiAjZWxzZQotI2RlZmluZSBHVEVTVF9QQVRIX01BWF8gX1BPU0lYX1BBVEhfTUFYCisj
IGRlZmluZSBHVEVTVF9QQVRIX01BWF8gX1BPU0lYX1BBVEhfTUFYCiAjZW5kaWYgIC8vIEdURVNU
X09TX1dJTkRPV1MKIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oPgot
CiBuYW1lc3BhY2UgdGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCkBAIC02OSwyMSAr
NjgsMTkgQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIC8vIG9mIHRoZW0uCiBjb25zdCBjaGFyIGtQ
YXRoU2VwYXJhdG9yID0gJ1xcJzsKIGNvbnN0IGNoYXIga0FsdGVybmF0ZVBhdGhTZXBhcmF0b3Ig
PSAnLyc7Ci1jb25zdCBjaGFyIGtQYXRoU2VwYXJhdG9yU3RyaW5nW10gPSAiXFwiOwogY29uc3Qg
Y2hhciBrQWx0ZXJuYXRlUGF0aFNlcGFyYXRvclN0cmluZ1tdID0gIi8iOwotI2lmIEdURVNUX09T
X1dJTkRPV1NfTU9CSUxFCisjIGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAvLyBXaW5kb3dz
IENFIGRvZXNuJ3QgaGF2ZSBhIGN1cnJlbnQgZGlyZWN0b3J5LiBZb3Ugc2hvdWxkIG5vdCB1c2UK
IC8vIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpbiB0ZXN0cyBvbiBXaW5kb3dzIENFLCBidXQgdGhp
cyBhdCBsZWFzdAogLy8gcHJvdmlkZXMgYSByZWFzb25hYmxlIGZhbGxiYWNrLgogY29uc3QgY2hh
ciBrQ3VycmVudERpcmVjdG9yeVN0cmluZ1tdID0gIlxcIjsKIC8vIFdpbmRvd3MgQ0UgZG9lc24n
dCBkZWZpbmUgSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMKIGNvbnN0IERXT1JEIGtJbnZhbGlkRmls
ZUF0dHJpYnV0ZXMgPSAweGZmZmZmZmZmOwotI2Vsc2UKKyMgZWxzZQogY29uc3QgY2hhciBrQ3Vy
cmVudERpcmVjdG9yeVN0cmluZ1tdID0gIi5cXCI7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogI2Vsc2UKIGNv
bnN0IGNoYXIga1BhdGhTZXBhcmF0b3IgPSAnLyc7Ci1jb25zdCBjaGFyIGtQYXRoU2VwYXJhdG9y
U3RyaW5nW10gPSAiLyI7CiBjb25zdCBjaGFyIGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nW10gPSAi
Li8iOwogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKQEAgLTk4LDcgKzk1LDcgQEAgc3Rh
dGljIGJvb2wgSXNQYXRoU2VwYXJhdG9yKGNoYXIgYykgewogCiAvLyBSZXR1cm5zIHRoZSBjdXJy
ZW50IHdvcmtpbmcgZGlyZWN0b3J5LCBvciAiIiBpZiB1bnN1Y2Nlc3NmdWwuCiBGaWxlUGF0aCBG
aWxlUGF0aDo6R2V0Q3VycmVudERpcigpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQor
I2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNUX09TX1dJTkRPV1NfUEhPTkUgfHwg
R1RFU1RfT1NfV0lORE9XU19SVAogICAvLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSBhIGN1cnJl
bnQgZGlyZWN0b3J5LCBzbyB3ZSBqdXN0IHJldHVybgogICAvLyBzb21ldGhpbmcgcmVhc29uYWJs
ZS4KICAgcmV0dXJuIEZpbGVQYXRoKGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nKTsKQEAgLTEwNyw3
ICsxMDQsMTQgQEAgRmlsZVBhdGggRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKSB7CiAgIHJldHVy
biBGaWxlUGF0aChfZ2V0Y3dkKGN3ZCwgc2l6ZW9mKGN3ZCkpID09IE5VTEwgPyAiIiA6IGN3ZCk7
CiAjZWxzZQogICBjaGFyIGN3ZFtHVEVTVF9QQVRIX01BWF8gKyAxXSA9IHsgJ1wwJyB9OwotICBy
ZXR1cm4gRmlsZVBhdGgoZ2V0Y3dkKGN3ZCwgc2l6ZW9mKGN3ZCkpID09IE5VTEwgPyAiIiA6IGN3
ZCk7CisgIGNoYXIqIHJlc3VsdCA9IGdldGN3ZChjd2QsIHNpemVvZihjd2QpKTsKKyMgaWYgR1RF
U1RfT1NfTkFDTAorICAvLyBnZXRjd2Qgd2lsbCBsaWtlbHkgZmFpbCBpbiBOYUNsIGR1ZSB0byB0
aGUgc2FuZGJveCwgc28gcmV0dXJuIHNvbWV0aGluZworICAvLyByZWFzb25hYmxlLiBUaGUgdXNl
ciBtYXkgaGF2ZSBwcm92aWRlZCBhIHNoaW0gaW1wbGVtZW50YXRpb24gZm9yIGdldGN3ZCwKKyAg
Ly8gaG93ZXZlciwgc28gZmFsbGJhY2sgb25seSB3aGVuIGZhaWx1cmUgaXMgZGV0ZWN0ZWQuCisg
IHJldHVybiBGaWxlUGF0aChyZXN1bHQgPT0gTlVMTCA/IGtDdXJyZW50RGlyZWN0b3J5U3RyaW5n
IDogY3dkKTsKKyMgZW5kaWYgIC8vIEdURVNUX09TX05BQ0wKKyAgcmV0dXJuIEZpbGVQYXRoKHJl
c3VsdCA9PSBOVUxMID8gIiIgOiBjd2QpOwogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01P
QklMRQogfQogCkBAIC0xMTYsMTQgKzEyMCwxNSBAQCBGaWxlUGF0aCBGaWxlUGF0aDo6R2V0Q3Vy
cmVudERpcigpIHsKIC8vIEZpbGVQYXRoKCJkaXIvZmlsZSIpLiBJZiBhIGNhc2UtaW5zZW5zaXRp
dmUgZXh0ZW5zaW9uIGlzIG5vdAogLy8gZm91bmQsIHJldHVybnMgYSBjb3B5IG9mIHRoZSBvcmln
aW5hbCBGaWxlUGF0aC4KIEZpbGVQYXRoIEZpbGVQYXRoOjpSZW1vdmVFeHRlbnNpb24oY29uc3Qg
Y2hhciogZXh0ZW5zaW9uKSBjb25zdCB7Ci0gIFN0cmluZyBkb3RfZXh0ZW5zaW9uKFN0cmluZzo6
Rm9ybWF0KCIuJXMiLCBleHRlbnNpb24pKTsKLSAgaWYgKHBhdGhuYW1lXy5FbmRzV2l0aENhc2VJ
bnNlbnNpdGl2ZShkb3RfZXh0ZW5zaW9uLmNfc3RyKCkpKSB7Ci0gICAgcmV0dXJuIEZpbGVQYXRo
KFN0cmluZyhwYXRobmFtZV8uY19zdHIoKSwgcGF0aG5hbWVfLmxlbmd0aCgpIC0gNCkpOworICBj
b25zdCBzdGQ6OnN0cmluZyBkb3RfZXh0ZW5zaW9uID0gc3RkOjpzdHJpbmcoIi4iKSArIGV4dGVu
c2lvbjsKKyAgaWYgKFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUocGF0aG5hbWVfLCBk
b3RfZXh0ZW5zaW9uKSkgeworICAgIHJldHVybiBGaWxlUGF0aChwYXRobmFtZV8uc3Vic3RyKAor
ICAgICAgICAwLCBwYXRobmFtZV8ubGVuZ3RoKCkgLSBkb3RfZXh0ZW5zaW9uLmxlbmd0aCgpKSk7
CiAgIH0KICAgcmV0dXJuICp0aGlzOwogfQogCi0vLyBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUg
bGFzdCBvY2N1cmVuY2Ugb2YgYSB2YWxpZCBwYXRoIHNlcGFyYXRvciBpbgorLy8gUmV0dXJucyBh
IHBvaW50ZXIgdG8gdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBhIHZhbGlkIHBhdGggc2VwYXJhdG9y
IGluCiAvLyB0aGUgRmlsZVBhdGguIE9uIFdpbmRvd3MsIGZvciBleGFtcGxlLCBib3RoICcvJyBh
bmQgJ1wnIGFyZSB2YWxpZCBwYXRoCiAvLyBzZXBhcmF0b3JzLiBSZXR1cm5zIE5VTEwgaWYgbm8g
cGF0aCBzZXBhcmF0b3Igd2FzIGZvdW5kLgogY29uc3QgY2hhciogRmlsZVBhdGg6OkZpbmRMYXN0
UGF0aFNlcGFyYXRvcigpIGNvbnN0IHsKQEAgLTE0Nyw3ICsxNTIsNyBAQCBjb25zdCBjaGFyKiBG
aWxlUGF0aDo6RmluZExhc3RQYXRoU2VwYXJhdG9yKCkgY29uc3QgewogLy8gT24gV2luZG93cyBw
bGF0Zm9ybSwgJ1wnIGlzIHRoZSBwYXRoIHNlcGFyYXRvciwgb3RoZXJ3aXNlIGl0IGlzICcvJy4K
IEZpbGVQYXRoIEZpbGVQYXRoOjpSZW1vdmVEaXJlY3RvcnlOYW1lKCkgY29uc3QgewogICBjb25z
dCBjaGFyKiBjb25zdCBsYXN0X3NlcCA9IEZpbmRMYXN0UGF0aFNlcGFyYXRvcigpOwotICByZXR1
cm4gbGFzdF9zZXAgPyBGaWxlUGF0aChTdHJpbmcobGFzdF9zZXAgKyAxKSkgOiAqdGhpczsKKyAg
cmV0dXJuIGxhc3Rfc2VwID8gRmlsZVBhdGgobGFzdF9zZXAgKyAxKSA6ICp0aGlzOwogfQogCiAv
LyBSZW1vdmVGaWxlTmFtZSByZXR1cm5zIHRoZSBkaXJlY3RvcnkgcGF0aCB3aXRoIHRoZSBmaWxl
bmFtZSByZW1vdmVkLgpAQCAtMTU4LDkgKzE2Myw5IEBAIEZpbGVQYXRoIEZpbGVQYXRoOjpSZW1v
dmVEaXJlY3RvcnlOYW1lKCkgY29uc3QgewogLy8gT24gV2luZG93cyBwbGF0Zm9ybSwgJ1wnIGlz
IHRoZSBwYXRoIHNlcGFyYXRvciwgb3RoZXJ3aXNlIGl0IGlzICcvJy4KIEZpbGVQYXRoIEZpbGVQ
YXRoOjpSZW1vdmVGaWxlTmFtZSgpIGNvbnN0IHsKICAgY29uc3QgY2hhciogY29uc3QgbGFzdF9z
ZXAgPSBGaW5kTGFzdFBhdGhTZXBhcmF0b3IoKTsKLSAgU3RyaW5nIGRpcjsKKyAgc3RkOjpzdHJp
bmcgZGlyOwogICBpZiAobGFzdF9zZXApIHsKLSAgICBkaXIgPSBTdHJpbmcoY19zdHIoKSwgbGFz
dF9zZXAgKyAxIC0gY19zdHIoKSk7CisgICAgZGlyID0gc3RkOjpzdHJpbmcoY19zdHIoKSwgbGFz
dF9zZXAgKyAxIC0gY19zdHIoKSk7CiAgIH0gZWxzZSB7CiAgICAgZGlyID0ga0N1cnJlbnREaXJl
Y3RvcnlTdHJpbmc7CiAgIH0KQEAgLTE3NywxMSArMTgyLDEyIEBAIEZpbGVQYXRoIEZpbGVQYXRo
OjpNYWtlRmlsZU5hbWUoY29uc3QgRmlsZVBhdGgmIGRpcmVjdG9yeSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgRmlsZVBhdGgmIGJhc2VfbmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IG51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogZXh0ZW5zaW9uKSB7Ci0gIFN0cmluZyBmaWxlOworICBzdGQ6
OnN0cmluZyBmaWxlOwogICBpZiAobnVtYmVyID09IDApIHsKLSAgICBmaWxlID0gU3RyaW5nOjpG
b3JtYXQoIiVzLiVzIiwgYmFzZV9uYW1lLmNfc3RyKCksIGV4dGVuc2lvbik7CisgICAgZmlsZSA9
IGJhc2VfbmFtZS5zdHJpbmcoKSArICIuIiArIGV4dGVuc2lvbjsKICAgfSBlbHNlIHsKLSAgICBm
aWxlID0gU3RyaW5nOjpGb3JtYXQoIiVzXyVkLiVzIiwgYmFzZV9uYW1lLmNfc3RyKCksIG51bWJl
ciwgZXh0ZW5zaW9uKTsKKyAgICBmaWxlID0gYmFzZV9uYW1lLnN0cmluZygpICsgIl8iICsgU3Ry
ZWFtYWJsZVRvU3RyaW5nKG51bWJlcikKKyAgICAgICAgKyAiLiIgKyBleHRlbnNpb247CiAgIH0K
ICAgcmV0dXJuIENvbmNhdFBhdGhzKGRpcmVjdG9yeSwgRmlsZVBhdGgoZmlsZSkpOwogfQpAQCAt
MTkzLDggKzE5OSw3IEBAIEZpbGVQYXRoIEZpbGVQYXRoOjpDb25jYXRQYXRocyhjb25zdCBGaWxl
UGF0aCYgZGlyZWN0b3J5LAogICBpZiAoZGlyZWN0b3J5LklzRW1wdHkoKSkKICAgICByZXR1cm4g
cmVsYXRpdmVfcGF0aDsKICAgY29uc3QgRmlsZVBhdGggZGlyKGRpcmVjdG9yeS5SZW1vdmVUcmFp
bGluZ1BhdGhTZXBhcmF0b3IoKSk7Ci0gIHJldHVybiBGaWxlUGF0aChTdHJpbmc6OkZvcm1hdCgi
JXMlYyVzIiwgZGlyLmNfc3RyKCksIGtQYXRoU2VwYXJhdG9yLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVsYXRpdmVfcGF0aC5jX3N0cigpKSk7CisgIHJldHVybiBGaWxlUGF0
aChkaXIuc3RyaW5nKCkgKyBrUGF0aFNlcGFyYXRvciArIHJlbGF0aXZlX3BhdGguc3RyaW5nKCkp
OwogfQogCiAvLyBSZXR1cm5zIHRydWUgaWYgcGF0aG5hbWUgZGVzY3JpYmVzIHNvbWV0aGluZyBm
aW5kYWJsZSBpbiB0aGUgZmlsZS1zeXN0ZW0sCkBAIC0yNDUsNyArMjUwLDcgQEAgYm9vbCBGaWxl
UGF0aDo6RGlyZWN0b3J5RXhpc3RzKCkgY29uc3QgewogLy8gcm9vdCBkaXJlY3RvcnkgcGVyIGRp
c2sgZHJpdmUuKQogYm9vbCBGaWxlUGF0aDo6SXNSb290RGlyZWN0b3J5KCkgY29uc3QgewogI2lm
IEdURVNUX09TX1dJTkRPV1MKLSAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IG9uIFdpbmRvd3Mg
YSBuZXR3b3JrIHNoYXJlIGxpa2UKKyAgLy8gRklYTUU6IG9uIFdpbmRvd3MgYSBuZXR3b3JrIHNo
YXJlIGxpa2UKICAgLy8gXFxzZXJ2ZXJcc2hhcmUgY2FuIGJlIGEgcm9vdCBkaXJlY3RvcnksIGFs
dGhvdWdoIGl0IGNhbm5vdCBiZSB0aGUKICAgLy8gY3VycmVudCBkaXJlY3RvcnkuICBIYW5kbGUg
dGhpcyBwcm9wZXJseS4KICAgcmV0dXJuIHBhdGhuYW1lXy5sZW5ndGgoKSA9PSAzICYmIElzQWJz
b2x1dGVQYXRoKCk7CkBAIC0zMzgsMTQgKzM0MywxNCBAQCBib29sIEZpbGVQYXRoOjpDcmVhdGVG
b2xkZXIoKSBjb25zdCB7CiAvLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCB1c2VzIFwgYXMgdGhlIHNl
cGFyYXRvciwgb3RoZXIgcGxhdGZvcm1zIHVzZSAvLgogRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92
ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpIGNvbnN0IHsKICAgcmV0dXJuIElzRGlyZWN0b3J5KCkK
LSAgICAgID8gRmlsZVBhdGgoU3RyaW5nKHBhdGhuYW1lXy5jX3N0cigpLCBwYXRobmFtZV8ubGVu
Z3RoKCkgLSAxKSkKKyAgICAgID8gRmlsZVBhdGgocGF0aG5hbWVfLnN1YnN0cigwLCBwYXRobmFt
ZV8ubGVuZ3RoKCkgLSAxKSkKICAgICAgIDogKnRoaXM7CiB9CiAKIC8vIFJlbW92ZXMgYW55IHJl
ZHVuZGFudCBzZXBhcmF0b3JzIHRoYXQgbWlnaHQgYmUgaW4gdGhlIHBhdGhuYW1lLgogLy8gRm9y
IGV4YW1wbGUsICJiYXIvLy9mb28iIGJlY29tZXMgImJhci9mb28iLiBEb2VzIG5vdCBlbGltaW5h
dGUgb3RoZXIKIC8vIHJlZHVuZGFuY2llcyB0aGF0IG1pZ2h0IGJlIGluIGEgcGF0aG5hbWUgaW52
b2x2aW5nICIuIiBvciAiLi4iLgotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IGhhbmRsZSBXaW5k
b3dzIG5ldHdvcmsgc2hhcmVzIChlLmcuIFxcc2VydmVyXHNoYXJlKS4KKy8vIEZJWE1FOiBoYW5k
bGUgV2luZG93cyBuZXR3b3JrIHNoYXJlcyAoZS5nLiBcXHNlcnZlclxzaGFyZSkuCiB2b2lkIEZp
bGVQYXRoOjpOb3JtYWxpemUoKSB7CiAgIGlmIChwYXRobmFtZV8uY19zdHIoKSA9PSBOVUxMKSB7
CiAgICAgcGF0aG5hbWVfID0gIiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMv
Z3Rlc3QtaW50ZXJuYWwtaW5sLmgKaW5kZXggMDE0MTVmN2Q5NTlkY2EwNzA5ZmFjMTc2NjEwZGI3
Mzg4ZjYwNDU1OS4uNDc5MDA0MTQ5YjQ4YzI4NTY0ZTIwNWUwMjEwYzZjNDMxMDQxOGI1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWludGVybmFsLWlubC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaApA
QCAtMjcsMjYgKzI3LDE1IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLS8v
IFV0aWxpdHkgZnVuY3Rpb25zIGFuZCBjbGFzc2VzIHVzZWQgYnkgdGhlIEdvb2dsZSBDKysgdGVz
dGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcg
V2FuKQotLy8KKy8vIFV0aWxpdHkgZnVuY3Rpb25zIGFuZCBjbGFzc2VzIHVzZWQgYnkgdGhlIEdv
b2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuLy8KIC8vIFRoaXMgZmlsZSBjb250YWlucyBwdXJl
bHkgR29vZ2xlIFRlc3QncyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4gIFBsZWFzZQogLy8gRE8g
Tk9UICNJTkNMVURFIElUIElOIEEgVVNFUiBQUk9HUkFNLgogCiAjaWZuZGVmIEdURVNUX1NSQ19H
VEVTVF9JTlRFUk5BTF9JTkxfSF8KICNkZWZpbmUgR1RFU1RfU1JDX0dURVNUX0lOVEVSTkFMX0lO
TF9IXwogCi0vLyBHVEVTVF9JTVBMRU1FTlRBVElPTl8gaXMgZGVmaW5lZCB0byAxIGlmZiB0aGUg
Y3VycmVudCB0cmFuc2xhdGlvbiB1bml0IGlzCi0vLyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MgaW1w
bGVtZW50YXRpb247IG90aGVyd2lzZSBpdCdzIHVuZGVmaW5lZC4KLSNpZiAhR1RFU1RfSU1QTEVN
RU5UQVRJT05fCi0vLyBBIHVzZXIgaXMgdHJ5aW5nIHRvIGluY2x1ZGUgdGhpcyBmcm9tIGhpcyBj
b2RlIC0ganVzdCBzYXkgbm8uCi0jZXJyb3IgImd0ZXN0LWludGVybmFsLWlubC5oIGlzIHBhcnQg
b2YgR29vZ2xlIFRlc3QncyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4iCi0jZXJyb3IgIkl0IG11
c3Qgbm90IGJlIGluY2x1ZGVkIGV4Y2VwdCBieSBHb29nbGUgVGVzdCBpdHNlbGYuIgotI2VuZGlm
ICAvLyBHVEVTVF9JTVBMRU1FTlRBVElPTl8KLQogI2lmbmRlZiBfV0lOMzJfV0NFCi0jaW5jbHVk
ZSA8ZXJybm8uaD4KKyMgaW5jbHVkZSA8ZXJybm8uaD4KICNlbmRpZiAgLy8gIV9XSU4zMl9XQ0UK
ICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4gIC8vIEZvciBzdHJ0b2xs
L19zdHJ0b3VsNjQvbWFsbG9jL2ZyZWUuCkBAIC01NiwxNCArNDUsMjIgQEAKICNpbmNsdWRlIDxz
dHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKworI2lm
IEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKyMgaW5jbHVkZSA8YXJwYS9pbmV0Lmg+ICAvLyBO
T0xJTlQKKyMgaW5jbHVkZSA8bmV0ZGIuaD4gIC8vIE5PTElOVAorI2VuZGlmCiAKICNpZiBHVEVT
VF9PU19XSU5ET1dTCi0jaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gRm9yIERXT1JELgorIyBpbmNs
dWRlIDx3aW5kb3dzLmg+ICAvLyBOT0xJTlQKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwog
Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0LXNwaS5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3Qtc3BpLmgiCisKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQyNTEgXAorLyog
Y2xhc3MgQSBuZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBieSBjbGllbnRz
IG9mIGNsYXNzIEIgKi8pCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIApAQCAtODksMTEgKzg2LDE0
IEBAIGNvbnN0IGNoYXIga0ZpbHRlckZsYWdbXSA9ICJmaWx0ZXIiOwogY29uc3QgY2hhciBrTGlz
dFRlc3RzRmxhZ1tdID0gImxpc3RfdGVzdHMiOwogY29uc3QgY2hhciBrT3V0cHV0RmxhZ1tdID0g
Im91dHB1dCI7CiBjb25zdCBjaGFyIGtQcmludFRpbWVGbGFnW10gPSAicHJpbnRfdGltZSI7Citj
b25zdCBjaGFyIGtQcmludFVURjhGbGFnW10gPSAicHJpbnRfdXRmOCI7CiBjb25zdCBjaGFyIGtS
YW5kb21TZWVkRmxhZ1tdID0gInJhbmRvbV9zZWVkIjsKIGNvbnN0IGNoYXIga1JlcGVhdEZsYWdb
XSA9ICJyZXBlYXQiOwogY29uc3QgY2hhciBrU2h1ZmZsZUZsYWdbXSA9ICJzaHVmZmxlIjsKIGNv
bnN0IGNoYXIga1N0YWNrVHJhY2VEZXB0aEZsYWdbXSA9ICJzdGFja190cmFjZV9kZXB0aCI7Citj
b25zdCBjaGFyIGtTdHJlYW1SZXN1bHRUb0ZsYWdbXSA9ICJzdHJlYW1fcmVzdWx0X3RvIjsKIGNv
bnN0IGNoYXIga1Rocm93T25GYWlsdXJlRmxhZ1tdID0gInRocm93X29uX2ZhaWx1cmUiOworY29u
c3QgY2hhciBrRmxhZ2ZpbGVGbGFnW10gPSAiZmxhZ2ZpbGUiOwogCiAvLyBBIHZhbGlkIHJhbmRv
bSBzZWVkIG11c3QgYmUgaW4gWzEsIGtNYXhSYW5kb21TZWVkXS4KIGNvbnN0IGludCBrTWF4UmFu
ZG9tU2VlZCA9IDk5OTk5OwpAQCAtMTExLDYgKzExMSwxMiBAQCBHVEVTVF9BUElfIGJvb2wgU2hv
dWxkVXNlQ29sb3IoYm9vbCBzdGRvdXRfaXNfdHR5KTsKIC8vIEZvcm1hdHMgdGhlIGdpdmVuIHRp
bWUgaW4gbWlsbGlzZWNvbmRzIGFzIHNlY29uZHMuCiBHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIEZv
cm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyhUaW1lSW5NaWxsaXMgbXMpOwogCisvLyBDb252ZXJ0
cyB0aGUgZ2l2ZW4gdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gYSBkYXRlIHN0cmluZyBpbiB0aGUg
SVNPIDg2MDEKKy8vIGZvcm1hdCwgd2l0aG91dCB0aGUgdGltZXpvbmUgaW5mb3JtYXRpb24uICBO
LkIuOiBkdWUgdG8gdGhlIHVzZSB0aGUKKy8vIG5vbi1yZWVudHJhbnQgbG9jYWx0aW1lKCkgZnVu
Y3Rpb24sIHRoaXMgZnVuY3Rpb24gaXMgbm90IHRocmVhZCBzYWZlLiAgRG8KKy8vIG5vdCB1c2Ug
aXQgaW4gYW55IGNvZGUgdGhhdCBjYW4gYmUgY2FsbGVkIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4K
K0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEo
VGltZUluTWlsbGlzIG1zKTsKKwogLy8gUGFyc2VzIGEgc3RyaW5nIGZvciBhbiBJbnQzMiBmbGFn
LCBpbiB0aGUgZm9ybSBvZiAiLS1mbGFnPXZhbHVlIi4KIC8vCiAvLyBPbiBzdWNjZXNzLCBzdG9y
ZXMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIGluICp2YWx1ZSwgYW5kIHJldHVybnMKQEAgLTE2MSwx
MCArMTY3LDEyIEBAIGNsYXNzIEdUZXN0RmxhZ1NhdmVyIHsKICAgICBsaXN0X3Rlc3RzXyA9IEdU
RVNUX0ZMQUcobGlzdF90ZXN0cyk7CiAgICAgb3V0cHV0XyA9IEdURVNUX0ZMQUcob3V0cHV0KTsK
ICAgICBwcmludF90aW1lXyA9IEdURVNUX0ZMQUcocHJpbnRfdGltZSk7CisgICAgcHJpbnRfdXRm
OF8gPSBHVEVTVF9GTEFHKHByaW50X3V0ZjgpOwogICAgIHJhbmRvbV9zZWVkXyA9IEdURVNUX0ZM
QUcocmFuZG9tX3NlZWQpOwogICAgIHJlcGVhdF8gPSBHVEVTVF9GTEFHKHJlcGVhdCk7CiAgICAg
c2h1ZmZsZV8gPSBHVEVTVF9GTEFHKHNodWZmbGUpOwogICAgIHN0YWNrX3RyYWNlX2RlcHRoXyA9
IEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpOworICAgIHN0cmVhbV9yZXN1bHRfdG9fID0g
R1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKTsKICAgICB0aHJvd19vbl9mYWlsdXJlXyA9IEdU
RVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSk7CiAgIH0KIApAQCAtMTgxLDQxICsxODksNDQgQEAg
Y2xhc3MgR1Rlc3RGbGFnU2F2ZXIgewogICAgIEdURVNUX0ZMQUcobGlzdF90ZXN0cykgPSBsaXN0
X3Rlc3RzXzsKICAgICBHVEVTVF9GTEFHKG91dHB1dCkgPSBvdXRwdXRfOwogICAgIEdURVNUX0ZM
QUcocHJpbnRfdGltZSkgPSBwcmludF90aW1lXzsKKyAgICBHVEVTVF9GTEFHKHByaW50X3V0Zjgp
ID0gcHJpbnRfdXRmOF87CiAgICAgR1RFU1RfRkxBRyhyYW5kb21fc2VlZCkgPSByYW5kb21fc2Vl
ZF87CiAgICAgR1RFU1RfRkxBRyhyZXBlYXQpID0gcmVwZWF0XzsKICAgICBHVEVTVF9GTEFHKHNo
dWZmbGUpID0gc2h1ZmZsZV87CiAgICAgR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkgPSBz
dGFja190cmFjZV9kZXB0aF87CisgICAgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSA9IHN0
cmVhbV9yZXN1bHRfdG9fOwogICAgIEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSB0aHJv
d19vbl9mYWlsdXJlXzsKICAgfQorCiAgcHJpdmF0ZToKICAgLy8gRmllbGRzIGZvciBzYXZpbmcg
dGhlIG9yaWdpbmFsIHZhbHVlcyBvZiBmbGFncy4KICAgYm9vbCBhbHNvX3J1bl9kaXNhYmxlZF90
ZXN0c187CiAgIGJvb2wgYnJlYWtfb25fZmFpbHVyZV87CiAgIGJvb2wgY2F0Y2hfZXhjZXB0aW9u
c187Ci0gIFN0cmluZyBjb2xvcl87Ci0gIFN0cmluZyBkZWF0aF90ZXN0X3N0eWxlXzsKKyAgc3Rk
OjpzdHJpbmcgY29sb3JfOworICBzdGQ6OnN0cmluZyBkZWF0aF90ZXN0X3N0eWxlXzsKICAgYm9v
bCBkZWF0aF90ZXN0X3VzZV9mb3JrXzsKLSAgU3RyaW5nIGZpbHRlcl87Ci0gIFN0cmluZyBpbnRl
cm5hbF9ydW5fZGVhdGhfdGVzdF87CisgIHN0ZDo6c3RyaW5nIGZpbHRlcl87CisgIHN0ZDo6c3Ry
aW5nIGludGVybmFsX3J1bl9kZWF0aF90ZXN0XzsKICAgYm9vbCBsaXN0X3Rlc3RzXzsKLSAgU3Ry
aW5nIG91dHB1dF87CisgIHN0ZDo6c3RyaW5nIG91dHB1dF87CiAgIGJvb2wgcHJpbnRfdGltZV87
CisgIGJvb2wgcHJpbnRfdXRmOF87CiAgIGludGVybmFsOjpJbnQzMiByYW5kb21fc2VlZF87CiAg
IGludGVybmFsOjpJbnQzMiByZXBlYXRfOwogICBib29sIHNodWZmbGVfOwogICBpbnRlcm5hbDo6
SW50MzIgc3RhY2tfdHJhY2VfZGVwdGhfOworICBzdGQ6OnN0cmluZyBzdHJlYW1fcmVzdWx0X3Rv
XzsKICAgYm9vbCB0aHJvd19vbl9mYWlsdXJlXzsKIH0gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF87
CiAKIC8vIENvbnZlcnRzIGEgVW5pY29kZSBjb2RlIHBvaW50IHRvIGEgbmFycm93IHN0cmluZyBp
biBVVEYtOCBlbmNvZGluZy4KIC8vIGNvZGVfcG9pbnQgcGFyYW1ldGVyIGlzIG9mIHR5cGUgVUlu
dDMyIGJlY2F1c2Ugd2NoYXJfdCBtYXkgbm90IGJlCiAvLyB3aWRlIGVub3VnaCB0byBjb250YWlu
IGEgY29kZSBwb2ludC4KLS8vIFRoZSBvdXRwdXQgYnVmZmVyIHN0ciBtdXN0IGNvbnRhaW50IGF0
IGxlYXN0IDMyIGNoYXJhY3RlcnMuCi0vLyBUaGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgYWRkcmVz
cyBvZiB0aGUgb3V0cHV0IGJ1ZmZlci4KIC8vIElmIHRoZSBjb2RlX3BvaW50IGlzIG5vdCBhIHZh
bGlkIFVuaWNvZGUgY29kZSBwb2ludAotLy8gKGkuZS4gb3V0c2lkZSBvZiBVbmljb2RlIHJhbmdl
IFUrMCB0byBVKzEwRkZGRikgaXQgd2lsbCBiZSBvdXRwdXQKLS8vIGFzICcoSW52YWxpZCBVbmlj
b2RlIDB4WFhYWFhYWFgpJy4KLUdURVNUX0FQSV8gY2hhciogQ29kZVBvaW50VG9VdGY4KFVJbnQz
MiBjb2RlX3BvaW50LCBjaGFyKiBzdHIpOworLy8gKGkuZS4gb3V0c2lkZSBvZiBVbmljb2RlIHJh
bmdlIFUrMCB0byBVKzEwRkZGRikgaXQgd2lsbCBiZSBjb252ZXJ0ZWQKKy8vIHRvICIoSW52YWxp
ZCBVbmljb2RlIDB4WFhYWFhYWFgpIi4KK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgQ29kZVBvaW50
VG9VdGY4KFVJbnQzMiBjb2RlX3BvaW50KTsKIAogLy8gQ29udmVydHMgYSB3aWRlIHN0cmluZyB0
byBhIG5hcnJvdyBzdHJpbmcgaW4gVVRGLTggZW5jb2RpbmcuCiAvLyBUaGUgd2lkZSBzdHJpbmcg
aXMgYXNzdW1lZCB0byBoYXZlIHRoZSBmb2xsb3dpbmcgZW5jb2Rpbmc6CkBAIC0yMzAsNyArMjQx
LDcgQEAgR1RFU1RfQVBJXyBjaGFyKiBDb2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQs
IGNoYXIqIHN0cik7CiAvLyBhcyAnKEludmFsaWQgVW5pY29kZSAweFhYWFhYWFhYKScuIElmIHRo
ZSBzdHJpbmcgaXMgaW4gVVRGMTYgZW5jb2RpbmcKIC8vIGFuZCBjb250YWlucyBpbnZhbGlkIFVU
Ri0xNiBzdXJyb2dhdGUgcGFpcnMsIHZhbHVlcyBpbiB0aG9zZSBwYWlycwogLy8gd2lsbCBiZSBl
bmNvZGVkIGFzIGluZGl2aWR1YWwgVW5pY29kZSBjaGFyYWN0ZXJzIGZyb20gQmFzaWMgTm9ybWFs
IFBsYW5lLgotR1RFU1RfQVBJXyBTdHJpbmcgV2lkZVN0cmluZ1RvVXRmOChjb25zdCB3Y2hhcl90
KiBzdHIsIGludCBudW1fY2hhcnMpOworR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBXaWRlU3RyaW5n
VG9VdGY4KGNvbnN0IHdjaGFyX3QqIHN0ciwgaW50IG51bV9jaGFycyk7CiAKIC8vIFJlYWRzIHRo
ZSBHVEVTVF9TSEFSRF9TVEFUVVNfRklMRSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYW5kIGNyZWF0
ZXMgdGhlIGZpbGUKIC8vIGlmIHRoZSB2YXJpYWJsZSBpcyBwcmVzZW50LiBJZiBhIGZpbGUgYWxy
ZWFkeSBleGlzdHMgYXQgdGhpcyBsb2NhdGlvbiwgdGhpcwpAQCAtMjY2LDcgKzI3NywxNCBAQCBH
VEVTVF9BUElfIGJvb2wgU2hvdWxkUnVuVGVzdE9uU2hhcmQoCiAvLyB0aGUgZ2l2ZW4gcHJlZGlj
YXRlLgogdGVtcGxhdGUgPGNsYXNzIENvbnRhaW5lciwgdHlwZW5hbWUgUHJlZGljYXRlPgogaW5s
aW5lIGludCBDb3VudElmKGNvbnN0IENvbnRhaW5lciYgYywgUHJlZGljYXRlIHByZWRpY2F0ZSkg
ewotICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzdGQ6OmNvdW50X2lmKGMuYmVnaW4oKSwgYy5l
bmQoKSwgcHJlZGljYXRlKSk7CisgIC8vIEltcGxlbWVudGVkIGFzIGFuIGV4cGxpY2l0IGxvb3Ag
c2luY2Ugc3RkOjpjb3VudF9pZigpIGluIGxpYkNzdGQgb24KKyAgLy8gU29sYXJpcyBoYXMgYSBu
b24tc3RhbmRhcmQgc2lnbmF0dXJlLgorICBpbnQgY291bnQgPSAwOworICBmb3IgKHR5cGVuYW1l
IENvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjLmJlZ2luKCk7IGl0ICE9IGMuZW5kKCk7
ICsraXQpIHsKKyAgICBpZiAocHJlZGljYXRlKCppdCkpCisgICAgICArK2NvdW50OworICB9Cisg
IHJldHVybiBjb3VudDsKIH0KIAogLy8gQXBwbGllcyBhIGZ1bmN0aW9uL2Z1bmN0b3IgdG8gZWFj
aCBlbGVtZW50IGluIHRoZSBjb250YWluZXIuCkBAIC0zMjcsOTUgKzM0NSwxNSBAQCBjbGFzcyBU
ZXN0UHJvcGVydHlLZXlJcyB7CiAgIC8vIENvbnN0cnVjdG9yLgogICAvLwogICAvLyBUZXN0UHJv
cGVydHlLZXlJcyBoYXMgTk8gZGVmYXVsdCBjb25zdHJ1Y3Rvci4KLSAgZXhwbGljaXQgVGVzdFBy
b3BlcnR5S2V5SXMoY29uc3QgY2hhcioga2V5KQotICAgICAgOiBrZXlfKGtleSkge30KKyAgZXhw
bGljaXQgVGVzdFByb3BlcnR5S2V5SXMoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSkgOiBrZXlfKGtl
eSkge30KIAogICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB0ZXN0IG5hbWUgb2YgdGVzdCBwcm9w
ZXJ0eSBtYXRjaGVzIG9uIGtleV8uCiAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBUZXN0UHJvcGVy
dHkmIHRlc3RfcHJvcGVydHkpIGNvbnN0IHsKLSAgICByZXR1cm4gU3RyaW5nKHRlc3RfcHJvcGVy
dHkua2V5KCkpLkNvbXBhcmUoa2V5XykgPT0gMDsKLSAgfQotCi0gcHJpdmF0ZToKLSAgU3RyaW5n
IGtleV87Ci19OwotCi1jbGFzcyBUZXN0SW5mb0ltcGwgewotIHB1YmxpYzoKLSAgVGVzdEluZm9J
bXBsKFRlc3RJbmZvKiBwYXJlbnQsIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAotICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogdGVzdF9jYXNlX2NvbW1lbnQs
Ci0gICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb21tZW50LCBUeXBlSWQgZml4dHVyZV9jbGFz
c19pZCwKLSAgICAgICAgICAgICAgIGludGVybmFsOjpUZXN0RmFjdG9yeUJhc2UqIGZhY3Rvcnkp
OwotICB+VGVzdEluZm9JbXBsKCk7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBz
aG91bGQgcnVuLgotICBib29sIHNob3VsZF9ydW4oKSBjb25zdCB7IHJldHVybiBzaG91bGRfcnVu
XzsgfQotCi0gIC8vIFNldHMgdGhlIHNob3VsZF9ydW4gbWVtYmVyLgotICB2b2lkIHNldF9zaG91
bGRfcnVuKGJvb2wgc2hvdWxkKSB7IHNob3VsZF9ydW5fID0gc2hvdWxkOyB9Ci0KLSAgLy8gUmV0
dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBpcyBkaXNhYmxlZC4gRGlzYWJsZWQgdGVzdHMgYXJlIG5v
dCBydW4uCi0gIGJvb2wgaXNfZGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBpc19kaXNhYmxlZF87
IH0KLQotICAvLyBTZXRzIHRoZSBpc19kaXNhYmxlZCBtZW1iZXIuCi0gIHZvaWQgc2V0X2lzX2Rp
c2FibGVkKGJvb2wgaXMpIHsgaXNfZGlzYWJsZWRfID0gaXM7IH0KLQotICAvLyBSZXR1cm5zIHRy
dWUgaWYgdGhpcyB0ZXN0IG1hdGNoZXMgdGhlIGZpbHRlciBzcGVjaWZpZWQgYnkgdGhlIHVzZXIu
Ci0gIGJvb2wgbWF0Y2hlc19maWx0ZXIoKSBjb25zdCB7IHJldHVybiBtYXRjaGVzX2ZpbHRlcl87
IH0KLQotICAvLyBTZXRzIHRoZSBtYXRjaGVzX2ZpbHRlciBtZW1iZXIuCi0gIHZvaWQgc2V0X21h
dGNoZXNfZmlsdGVyKGJvb2wgbWF0Y2hlcykgeyBtYXRjaGVzX2ZpbHRlcl8gPSBtYXRjaGVzOyB9
Ci0KLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIG5hbWUuCi0gIGNvbnN0IGNoYXIqIHRlc3Rf
Y2FzZV9uYW1lKCkgY29uc3QgeyByZXR1cm4gdGVzdF9jYXNlX25hbWVfLmNfc3RyKCk7IH0KLQot
ICAvLyBSZXR1cm5zIHRoZSB0ZXN0IG5hbWUuCi0gIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7
IHJldHVybiBuYW1lXy5jX3N0cigpOyB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIGNv
bW1lbnQuCi0gIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9jb21tZW50KCkgY29uc3QgeyByZXR1cm4g
dGVzdF9jYXNlX2NvbW1lbnRfLmNfc3RyKCk7IH0KLQotICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNv
bW1lbnQuCi0gIGNvbnN0IGNoYXIqIGNvbW1lbnQoKSBjb25zdCB7IHJldHVybiBjb21tZW50Xy5j
X3N0cigpOyB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgSUQgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFz
cy4KLSAgVHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQoKSBjb25zdCB7IHJldHVybiBmaXh0dXJlX2Ns
YXNzX2lkXzsgfQotCi0gIC8vIFJldHVybnMgdGhlIHRlc3QgcmVzdWx0LgotICBUZXN0UmVzdWx0
KiByZXN1bHQoKSB7IHJldHVybiAmcmVzdWx0XzsgfQotICBjb25zdCBUZXN0UmVzdWx0KiByZXN1
bHQoKSBjb25zdCB7IHJldHVybiAmcmVzdWx0XzsgfQotCi0gIC8vIENyZWF0ZXMgdGhlIHRlc3Qg
b2JqZWN0LCBydW5zIGl0LCByZWNvcmRzIGl0cyByZXN1bHQsIGFuZCB0aGVuCi0gIC8vIGRlbGV0
ZXMgaXQuCi0gIHZvaWQgUnVuKCk7Ci0KLSAgLy8gQ2xlYXJzIHRoZSB0ZXN0IHJlc3VsdC4KLSAg
dm9pZCBDbGVhclJlc3VsdCgpIHsgcmVzdWx0Xy5DbGVhcigpOyB9Ci0KLSAgLy8gQ2xlYXJzIHRo
ZSB0ZXN0IHJlc3VsdCBpbiB0aGUgZ2l2ZW4gVGVzdEluZm8gb2JqZWN0LgotICBzdGF0aWMgdm9p
ZCBDbGVhclRlc3RSZXN1bHQoVGVzdEluZm8gKiB0ZXN0X2luZm8pIHsKLSAgICB0ZXN0X2luZm8t
PmltcGwoKS0+Q2xlYXJSZXN1bHQoKTsKKyAgICByZXR1cm4gdGVzdF9wcm9wZXJ0eS5rZXkoKSA9
PSBrZXlfOwogICB9CiAKICBwcml2YXRlOgotICAvLyBUaGVzZSBmaWVsZHMgYXJlIGltbXV0YWJs
ZSBwcm9wZXJ0aWVzIG9mIHRoZSB0ZXN0LgotICBUZXN0SW5mbyogY29uc3QgcGFyZW50XzsgICAg
ICAgICAgLy8gVGhlIG93bmVyIG9mIHRoaXMgb2JqZWN0Ci0gIGNvbnN0IFN0cmluZyB0ZXN0X2Nh
c2VfbmFtZV87ICAgICAvLyBUZXN0IGNhc2UgbmFtZQotICBjb25zdCBTdHJpbmcgbmFtZV87ICAg
ICAgICAgICAgICAgLy8gVGVzdCBuYW1lCi0gIGNvbnN0IFN0cmluZyB0ZXN0X2Nhc2VfY29tbWVu
dF87ICAvLyBUZXN0IGNhc2UgY29tbWVudAotICBjb25zdCBTdHJpbmcgY29tbWVudF87ICAgICAg
ICAgICAgLy8gVGVzdCBjb21tZW50Ci0gIGNvbnN0IFR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkXzsg
ICAvLyBJRCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzCi0gIGJvb2wgc2hvdWxkX3J1bl87ICAg
ICAgICAgICAgICAgICAvLyBUcnVlIGlmZiB0aGlzIHRlc3Qgc2hvdWxkIHJ1bgotICBib29sIGlz
X2Rpc2FibGVkXzsgICAgICAgICAgICAgICAgLy8gVHJ1ZSBpZmYgdGhpcyB0ZXN0IGlzIGRpc2Fi
bGVkCi0gIGJvb2wgbWF0Y2hlc19maWx0ZXJfOyAgICAgICAgICAgICAvLyBUcnVlIGlmIHRoaXMg
dGVzdCBtYXRjaGVzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
dXNlci1zcGVjaWZpZWQgZmlsdGVyLgotICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBjb25z
dCBmYWN0b3J5XzsgIC8vIFRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB0ZXN0IG9iamVjdAotCi0gIC8v
IFRoaXMgZmllbGQgaXMgbXV0YWJsZSBhbmQgbmVlZHMgdG8gYmUgcmVzZXQgYmVmb3JlIHJ1bm5p
bmcgdGhlCi0gIC8vIHRlc3QgZm9yIHRoZSBzZWNvbmQgdGltZS4KLSAgVGVzdFJlc3VsdCByZXN1
bHRfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdEluZm9JbXBsKTsK
KyAgc3RkOjpzdHJpbmcga2V5XzsKIH07CiAKIC8vIENsYXNzIFVuaXRUZXN0T3B0aW9ucy4KQEAg
LTQzMywxMiArMzcxLDEyIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RPcHRpb25zIHsKICAg
Ly8gRnVuY3Rpb25zIGZvciBwcm9jZXNzaW5nIHRoZSBndGVzdF9vdXRwdXQgZmxhZy4KIAogICAv
LyBSZXR1cm5zIHRoZSBvdXRwdXQgZm9ybWF0LCBvciAiIiBmb3Igbm9ybWFsIHByaW50ZWQgb3V0
cHV0LgotICBzdGF0aWMgU3RyaW5nIEdldE91dHB1dEZvcm1hdCgpOworICBzdGF0aWMgc3RkOjpz
dHJpbmcgR2V0T3V0cHV0Rm9ybWF0KCk7CiAKICAgLy8gUmV0dXJucyB0aGUgYWJzb2x1dGUgcGF0
aCBvZiB0aGUgcmVxdWVzdGVkIG91dHB1dCBmaWxlLCBvciB0aGUKICAgLy8gZGVmYXVsdCAodGVz
dF9kZXRhaWwueG1sIGluIHRoZSBvcmlnaW5hbCB3b3JraW5nIGRpcmVjdG9yeSkgaWYKICAgLy8g
bm9uZSB3YXMgZXhwbGljaXRseSBzcGVjaWZpZWQuCi0gIHN0YXRpYyBTdHJpbmcgR2V0QWJzb2x1
dGVQYXRoVG9PdXRwdXRGaWxlKCk7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBHZXRBYnNvbHV0ZVBh
dGhUb091dHB1dEZpbGUoKTsKIAogICAvLyBGdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgdGhlIGd0
ZXN0X2ZpbHRlciBmbGFnLgogCkBAIC00NTEsOCArMzg5LDggQEAgY2xhc3MgR1RFU1RfQVBJXyBV
bml0VGVzdE9wdGlvbnMgewogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHVzZXItc3BlY2lm
aWVkIGZpbHRlciBtYXRjaGVzIHRoZSB0ZXN0IGNhc2UKICAgLy8gbmFtZSBhbmQgdGhlIHRlc3Qg
bmFtZS4KLSAgc3RhdGljIGJvb2wgRmlsdGVyTWF0Y2hlc1Rlc3QoY29uc3QgU3RyaW5nICZ0ZXN0
X2Nhc2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5n
ICZ0ZXN0X25hbWUpOworICBzdGF0aWMgYm9vbCBGaWx0ZXJNYXRjaGVzVGVzdChjb25zdCBzdGQ6
OnN0cmluZyAmdGVzdF9jYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0X25hbWUpOwogCiAjaWYgR1RFU1RfT1NfV0lORE9XUwog
ICAvLyBGdW5jdGlvbiBmb3Igc3VwcG9ydGluZyB0aGUgZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uIGZs
YWcuCkBAIC00NjUsNyArNDAzLDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdE9wdGlvbnMg
ewogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZiAibmFtZSIgbWF0Y2hlcyB0aGUgJzonIHNlcGFyYXRl
ZCBsaXN0IG9mIGdsb2Itc3R5bGUKICAgLy8gZmlsdGVycyBpbiAiZmlsdGVyIi4KLSAgc3RhdGlj
IGJvb2wgTWF0Y2hlc0ZpbHRlcihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IGNoYXIqIGZpbHRl
cik7CisgIHN0YXRpYyBib29sIE1hdGNoZXNGaWx0ZXIoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUs
IGNvbnN0IGNoYXIqIGZpbHRlcik7CiB9OwogCiAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IGFwcGxp
Y2F0aW9uJ3MgbmFtZSwgcmVtb3ZpbmcgZGlyZWN0b3J5IHBhdGggaWYgdGhhdApAQCAtNDc4LDE5
ICs0MTYsMjMgQEAgY2xhc3MgT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlIHsKICAgT3NTdGFj
a1RyYWNlR2V0dGVySW50ZXJmYWNlKCkge30KICAgdmlydHVhbCB+T3NTdGFja1RyYWNlR2V0dGVy
SW50ZXJmYWNlKCkge30KIAotICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNl
IGFzIGEgU3RyaW5nLiAgUGFyYW1ldGVyczoKKyAgLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBz
dGFjayB0cmFjZSBhcyBhbiBzdGQ6OnN0cmluZy4gIFBhcmFtZXRlcnM6CiAgIC8vCiAgIC8vICAg
bWF4X2RlcHRoICAtIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMgdG8gYmUgaW5j
bHVkZWQKICAgLy8gICAgICAgICAgICAgICAgaW4gdGhlIHRyYWNlLgogICAvLyAgIHNraXBfY291
bnQgLSB0aGUgbnVtYmVyIG9mIHRvcCBmcmFtZXMgdG8gYmUgc2tpcHBlZDsgZG9lc24ndCBjb3Vu
dAogICAvLyAgICAgICAgICAgICAgICBhZ2FpbnN0IG1heF9kZXB0aC4KLSAgdmlydHVhbCBTdHJp
bmcgQ3VycmVudFN0YWNrVHJhY2UoaW50IG1heF9kZXB0aCwgaW50IHNraXBfY291bnQpID0gMDsK
KyAgdmlydHVhbCBzdGQ6OnN0cmluZyBDdXJyZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBp
bnQgc2tpcF9jb3VudCkgPSAwOwogCiAgIC8vIFVwb25MZWF2aW5nR1Rlc3QoKSBzaG91bGQgYmUg
Y2FsbGVkIGltbWVkaWF0ZWx5IGJlZm9yZSBHb29nbGUgVGVzdCBjYWxscwogICAvLyB1c2VyIGNv
ZGUuIEl0IHNhdmVzIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgc3RhY2sgdGhh
dAogICAvLyBDdXJyZW50U3RhY2tUcmFjZSgpIHdpbGwgdXNlIHRvIGZpbmQgYW5kIGhpZGUgR29v
Z2xlIFRlc3Qgc3RhY2sgZnJhbWVzLgogICB2aXJ0dWFsIHZvaWQgVXBvbkxlYXZpbmdHVGVzdCgp
ID0gMDsKIAorICAvLyBUaGlzIHN0cmluZyBpcyBpbnNlcnRlZCBpbiBwbGFjZSBvZiBzdGFjayBm
cmFtZXMgdGhhdCBhcmUgcGFydCBvZgorICAvLyBHb29nbGUgVGVzdCdzIGltcGxlbWVudGF0aW9u
LgorICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qga0VsaWRlZEZyYW1lc01hcmtlcjsKKwogIHBy
aXZhdGU6CiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oT3NTdGFja1RyYWNlR2V0
dGVySW50ZXJmYWNlKTsKIH07CkBAIC00OTgsMjIgKzQ0MCwyMSBAQCBjbGFzcyBPc1N0YWNrVHJh
Y2VHZXR0ZXJJbnRlcmZhY2UgewogLy8gQSB3b3JraW5nIGltcGxlbWVudGF0aW9uIG9mIHRoZSBP
c1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UgaW50ZXJmYWNlLgogY2xhc3MgT3NTdGFja1RyYWNl
R2V0dGVyIDogcHVibGljIE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSB7CiAgcHVibGljOgot
ICBPc1N0YWNrVHJhY2VHZXR0ZXIoKSA6IGNhbGxlcl9mcmFtZV8oTlVMTCkge30KLSAgdmlydHVh
bCBTdHJpbmcgQ3VycmVudFN0YWNrVHJhY2UoaW50IG1heF9kZXB0aCwgaW50IHNraXBfY291bnQp
OwotICB2aXJ0dWFsIHZvaWQgVXBvbkxlYXZpbmdHVGVzdCgpOworICBPc1N0YWNrVHJhY2VHZXR0
ZXIoKSB7fQogCi0gIC8vIFRoaXMgc3RyaW5nIGlzIGluc2VydGVkIGluIHBsYWNlIG9mIHN0YWNr
IGZyYW1lcyB0aGF0IGFyZSBwYXJ0IG9mCi0gIC8vIEdvb2dsZSBUZXN0J3MgaW1wbGVtZW50YXRp
b24uCi0gIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBrRWxpZGVkRnJhbWVzTWFya2VyOworICB2
aXJ0dWFsIHN0ZDo6c3RyaW5nIEN1cnJlbnRTdGFja1RyYWNlKGludCBtYXhfZGVwdGgsIGludCBz
a2lwX2NvdW50KTsKKyAgdmlydHVhbCB2b2lkIFVwb25MZWF2aW5nR1Rlc3QoKTsKIAogIHByaXZh
dGU6Ci0gIE11dGV4IG11dGV4XzsgIC8vIHByb3RlY3RzIGFsbCBpbnRlcm5hbCBzdGF0ZQorI2lm
IEdURVNUX0hBU19BQlNMCisgIE11dGV4IG11dGV4XzsgIC8vIFByb3RlY3RzIGFsbCBpbnRlcm5h
bCBzdGF0ZS4KIAogICAvLyBXZSBzYXZlIHRoZSBzdGFjayBmcmFtZSBiZWxvdyB0aGUgZnJhbWUg
dGhhdCBjYWxscyB1c2VyIGNvZGUuCiAgIC8vIFdlIGRvIHRoaXMgYmVjYXVzZSB0aGUgYWRkcmVz
cyBvZiB0aGUgZnJhbWUgaW1tZWRpYXRlbHkgYmVsb3cKICAgLy8gdGhlIHVzZXIgY29kZSBjaGFu
Z2VzIGJldHdlZW4gdGhlIGNhbGwgdG8gVXBvbkxlYXZpbmdHVGVzdCgpCi0gIC8vIGFuZCBhbnkg
Y2FsbHMgdG8gQ3VycmVudFN0YWNrVHJhY2UoKSBmcm9tIHdpdGhpbiB0aGUgdXNlciBjb2RlLgot
ICB2b2lkKiBjYWxsZXJfZnJhbWVfOworICAvLyBhbmQgYW55IGNhbGxzIHRvIHRoZSBzdGFjayB0
cmFjZSBjb2RlIGZyb20gd2l0aGluIHRoZSB1c2VyIGNvZGUuCisgIHZvaWQqIGNhbGxlcl9mcmFt
ZV8gPSBudWxscHRyOworI2VuZGlmICAvLyBHVEVTVF9IQVNfQUJTTAogCiAgIEdURVNUX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTl8oT3NTdGFja1RyYWNlR2V0dGVyKTsKIH07CkBAIC01MjIsNyAr
NDYzLDcgQEAgY2xhc3MgT3NTdGFja1RyYWNlR2V0dGVyIDogcHVibGljIE9zU3RhY2tUcmFjZUdl
dHRlckludGVyZmFjZSB7CiBzdHJ1Y3QgVHJhY2VJbmZvIHsKICAgY29uc3QgY2hhciogZmlsZTsK
ICAgaW50IGxpbmU7Ci0gIFN0cmluZyBtZXNzYWdlOworICBzdGQ6OnN0cmluZyBtZXNzYWdlOwog
fTsKIAogLy8gVGhpcyBpcyB0aGUgZGVmYXVsdCBnbG9iYWwgdGVzdCBwYXJ0IHJlc3VsdCByZXBv
cnRlciB1c2VkIGluIFVuaXRUZXN0SW1wbC4KQEAgLTYwNiwxNSArNTQ3LDI1IEBAIGNsYXNzIEdU
RVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0
ZXN0cy4KICAgaW50IGZhaWxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CiAKKyAgLy8gR2V0cyB0aGUg
bnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHRoYXQgd2lsbCBiZSByZXBvcnRlZCBpbiB0aGUgWE1M
IHJlcG9ydC4KKyAgaW50IHJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0Owor
CiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cy4KICAgaW50IGRpc2FibGVk
X3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8g
YmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFibGVfdGVzdF9jb3Vu
dCgpIGNvbnN0OworCiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdHMuCiAgIGludCB0
b3RhbF90ZXN0X2NvdW50KCkgY29uc3Q7CiAKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3Rz
IHRoYXQgc2hvdWxkIHJ1bi4KICAgaW50IHRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3Q7CiAKKyAg
Ly8gR2V0cyB0aGUgdGltZSBvZiB0aGUgdGVzdCBwcm9ncmFtIHN0YXJ0LCBpbiBtcyBmcm9tIHRo
ZSBzdGFydCBvZiB0aGUKKyAgLy8gVU5JWCBlcG9jaC4KKyAgVGltZUluTWlsbGlzIHN0YXJ0X3Rp
bWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0X3RpbWVzdGFtcF87IH0KKwogICAvLyBHZXRz
IHRoZSBlbGFwc2VkIHRpbWUsIGluIG1pbGxpc2Vjb25kcy4KICAgVGltZUluTWlsbGlzIGVsYXBz
ZWRfdGltZSgpIGNvbnN0IHsgcmV0dXJuIGVsYXBzZWRfdGltZV87IH0KIApAQCAtNjYzLDcgKzYx
NCw3IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gZ2V0dGVyLCBhbmQg
cmV0dXJucyBpdC4KICAgT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlKiBvc19zdGFja190cmFj
ZV9nZXR0ZXIoKTsKIAotICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFz
IGEgU3RyaW5nLgorICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFzIGFu
IHN0ZDo6c3RyaW5nLgogICAvLwogICAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhY2sgZnJh
bWVzIHRvIGJlIGluY2x1ZGVkIGlzIHNwZWNpZmllZCBieQogICAvLyB0aGUgZ3Rlc3Rfc3RhY2tf
dHJhY2VfZGVwdGggZmxhZy4gIFRoZSBza2lwX2NvdW50IHBhcmFtZXRlcgpAQCAtNjczLDcgKzYy
NCw3IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gRm9yIGV4YW1wbGUs
IGlmIEZvbygpIGNhbGxzIEJhcigpLCB3aGljaCBpbiB0dXJuIGNhbGxzCiAgIC8vIEN1cnJlbnRP
c1N0YWNrVHJhY2VFeGNlcHRUb3AoMSksIEZvbygpIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlCiAg
IC8vIHRyYWNlIGJ1dCBCYXIoKSBhbmQgQ3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgpIHdv
bid0LgotICBTdHJpbmcgQ3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcChpbnQgc2tpcF9jb3Vu
dCk7CisgIHN0ZDo6c3RyaW5nIEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoaW50IHNraXBf
Y291bnQpIEdURVNUX05PX0lOTElORV87CiAKICAgLy8gRmluZHMgYW5kIHJldHVybnMgYSBUZXN0
Q2FzZSB3aXRoIHRoZSBnaXZlbiBuYW1lLiAgSWYgb25lIGRvZXNuJ3QKICAgLy8gZXhpc3QsIGNy
ZWF0ZXMgb25lIGFuZCByZXR1cm5zIGl0LgpAQCAtNjgxLDEwICs2MzIsMTIgQEAgY2xhc3MgR1RF
U1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBBcmd1bWVudHM6CiAgIC8vCiAgIC8vICAgdGVz
dF9jYXNlX25hbWU6IG5hbWUgb2YgdGhlIHRlc3QgY2FzZQorICAvLyAgIHR5cGVfcGFyYW06ICAg
ICB0aGUgbmFtZSBvZiB0aGUgdGVzdCdzIHR5cGUgcGFyYW1ldGVyLCBvciBOVUxMIGlmCisgIC8v
ICAgICAgICAgICAgICAgICAgIHRoaXMgaXMgbm90IGEgdHlwZWQgb3IgYSB0eXBlLXBhcmFtZXRl
cml6ZWQgdGVzdC4KICAgLy8gICBzZXRfdXBfdGM6ICAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rp
b24gdGhhdCBzZXRzIHVwIHRoZSB0ZXN0IGNhc2UKICAgLy8gICB0ZWFyX2Rvd25fdGM6ICAgcG9p
bnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UKICAgVGVz
dENhc2UqIEdldFRlc3RDYXNlKGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogY29tbWVudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0
OjpTZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCiAgICAgICAgICAgICAgICAgICAgICAgICBU
ZXN0OjpUZWFyRG93blRlc3RDYXNlRnVuYyB0ZWFyX2Rvd25fdGMpOwogCkBAIC02OTcsNyArNjUw
LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyAgIHRlc3RfaW5mbzog
ICAgdGhlIFRlc3RJbmZvIG9iamVjdAogICB2b2lkIEFkZFRlc3RJbmZvKFRlc3Q6OlNldFVwVGVz
dENhc2VGdW5jIHNldF91cF90YywKICAgICAgICAgICAgICAgICAgICBUZXN0OjpUZWFyRG93blRl
c3RDYXNlRnVuYyB0ZWFyX2Rvd25fdGMsCi0gICAgICAgICAgICAgICAgICAgVGVzdEluZm8gKiB0
ZXN0X2luZm8pIHsKKyAgICAgICAgICAgICAgICAgICBUZXN0SW5mbyogdGVzdF9pbmZvKSB7CiAg
ICAgLy8gSW4gb3JkZXIgdG8gc3VwcG9ydCB0aHJlYWQtc2FmZSBkZWF0aCB0ZXN0cywgd2UgbmVl
ZCB0bwogICAgIC8vIHJlbWVtYmVyIHRoZSBvcmlnaW5hbCB3b3JraW5nIGRpcmVjdG9yeSB3aGVu
IHRoZSB0ZXN0IHByb2dyYW0KICAgICAvLyB3YXMgZmlyc3QgaW52b2tlZC4gIFdlIGNhbm5vdCBk
byB0aGlzIGluIFJVTl9BTExfVEVTVFMoKSwgYXMKQEAgLTcxMiwxOCArNjY1LDE2IEBAIGNsYXNz
IEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgICB9CiAKICAgICBHZXRUZXN0Q2FzZSh0ZXN0
X2luZm8tPnRlc3RfY2FzZV9uYW1lKCksCi0gICAgICAgICAgICAgICAgdGVzdF9pbmZvLT50ZXN0
X2Nhc2VfY29tbWVudCgpLAorICAgICAgICAgICAgICAgIHRlc3RfaW5mby0+dHlwZV9wYXJhbSgp
LAogICAgICAgICAgICAgICAgIHNldF91cF90YywKICAgICAgICAgICAgICAgICB0ZWFyX2Rvd25f
dGMpLT5BZGRUZXN0SW5mbyh0ZXN0X2luZm8pOwogICB9CiAKLSNpZiBHVEVTVF9IQVNfUEFSQU1f
VEVTVAogICAvLyBSZXR1cm5zIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IG9iamVjdCB1
c2VkIHRvIGtlZXAgdHJhY2sgb2YKICAgLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhbmQg
aW5zdGFudGlhdGUgYW5kIHJlZ2lzdGVyIHRoZW0uCiAgIGludGVybmFsOjpQYXJhbWV0ZXJpemVk
VGVzdENhc2VSZWdpc3RyeSYgcGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkgewogICAgIHJl
dHVybiBwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnlfOwogICB9Ci0jZW5kaWYgIC8vIEdURVNU
X0hBU19QQVJBTV9URVNUCiAKICAgLy8gU2V0cyB0aGUgVGVzdENhc2Ugb2JqZWN0IGZvciB0aGUg
dGVzdCB0aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcuCiAgIHZvaWQgc2V0X2N1cnJlbnRfdGVzdF9j
YXNlKFRlc3RDYXNlKiBhX2N1cnJlbnRfdGVzdF9jYXNlKSB7CkBAIC03MzgsMjcgKzY4OSwzNSBA
QCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIH0KIAogICAvLyBSZWdpc3RlcnMg
YWxsIHBhcmFtZXRlcml6ZWQgdGVzdHMgZGVmaW5lZCB1c2luZyBURVNUX1AgYW5kCi0gIC8vIElO
U1RBTlRJQVRFX1RFU1RfUCwgY3JlYXRpbmcgcmVndWxhciB0ZXN0cyBmb3IgZWFjaCB0ZXN0L3Bh
cmFtZXRlcgotICAvLyBjb21iaW5hdGlvbi4gVGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCBtb3Jl
IHRoZW4gb25jZTsgaXQgaGFzCi0gIC8vIGd1YXJkcyBwcm90ZWN0aW5nIGZyb20gcmVnaXN0ZXJp
bmcgdGhlIHRlc3RzIG1vcmUgdGhlbiBvbmNlLgotICAvLyBJZiB2YWx1ZS1wYXJhbWV0ZXJpemVk
IHRlc3RzIGFyZSBkaXNhYmxlZCwgUmVnaXN0ZXJQYXJhbWV0ZXJpemVkVGVzdHMKLSAgLy8gaXMg
cHJlc2VudCBidXQgZG9lcyBub3RoaW5nLgorICAvLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUCwg
Y3JlYXRpbmcgcmVndWxhciB0ZXN0cyBmb3IgZWFjaCB0ZXN0L3BhcmFtZXRlcgorICAvLyBjb21i
aW5hdGlvbi4gVGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCBtb3JlIHRoZW4gb25jZTsgaXQgaGFz
IGd1YXJkcworICAvLyBwcm90ZWN0aW5nIGZyb20gcmVnaXN0ZXJpbmcgdGhlIHRlc3RzIG1vcmUg
dGhlbiBvbmNlLiAgSWYKKyAgLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZGlzYWJs
ZWQsIFJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzIGlzCisgIC8vIHByZXNlbnQgYnV0IGRvZXMg
bm90aGluZy4KICAgdm9pZCBSZWdpc3RlclBhcmFtZXRlcml6ZWRUZXN0cygpOwogCiAgIC8vIFJ1
bnMgYWxsIHRlc3RzIGluIHRoaXMgVW5pdFRlc3Qgb2JqZWN0LCBwcmludHMgdGhlIHJlc3VsdCwg
YW5kCi0gIC8vIHJldHVybnMgMCBpZiBhbGwgdGVzdHMgYXJlIHN1Y2Nlc3NmdWwsIG9yIDEgb3Ro
ZXJ3aXNlLiAgSWYgYW55Ci0gIC8vIGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIGEgdGVzdCBv
biBXaW5kb3dzLCB0aGlzIHRlc3QgaXMKLSAgLy8gY29uc2lkZXJlZCB0byBiZSBmYWlsZWQsIGJ1
dCB0aGUgcmVzdCBvZiB0aGUgdGVzdHMgd2lsbCBzdGlsbCBiZQotICAvLyBydW4uICAoV2UgZGlz
YWJsZSBleGNlcHRpb25zIG9uIExpbnV4IGFuZCBNYWMgT1MgWCwgc28gdGhlIGlzc3VlCi0gIC8v
IGRvZXNuJ3QgYXBwbHkgdGhlcmUuKQotICBpbnQgUnVuQWxsVGVzdHMoKTsKLQotICAvLyBDbGVh
cnMgdGhlIHJlc3VsdHMgb2YgYWxsIHRlc3RzLCBpbmNsdWRpbmcgdGhlIGFkIGhvYyB0ZXN0Lgot
ICB2b2lkIENsZWFyUmVzdWx0KCkgeworICAvLyByZXR1cm5zIHRydWUgaWYgYWxsIHRlc3RzIGFy
ZSBzdWNjZXNzZnVsLiAgSWYgYW55IGV4Y2VwdGlvbiBpcworICAvLyB0aHJvd24gZHVyaW5nIGEg
dGVzdCwgdGhpcyB0ZXN0IGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFpbGVkLCBidXQKKyAgLy8gdGhl
IHJlc3Qgb2YgdGhlIHRlc3RzIHdpbGwgc3RpbGwgYmUgcnVuLgorICBib29sIFJ1bkFsbFRlc3Rz
KCk7CisKKyAgLy8gQ2xlYXJzIHRoZSByZXN1bHRzIG9mIGFsbCB0ZXN0cywgZXhjZXB0IHRoZSBh
ZCBob2MgdGVzdHMuCisgIHZvaWQgQ2xlYXJOb25BZEhvY1Rlc3RSZXN1bHQoKSB7CiAgICAgRm9y
RWFjaCh0ZXN0X2Nhc2VzXywgVGVzdENhc2U6OkNsZWFyVGVzdENhc2VSZXN1bHQpOworICB9CisK
KyAgLy8gQ2xlYXJzIHRoZSByZXN1bHRzIG9mIGFkLWhvYyB0ZXN0IGFzc2VydGlvbnMuCisgIHZv
aWQgQ2xlYXJBZEhvY1Rlc3RSZXN1bHQoKSB7CiAgICAgYWRfaG9jX3Rlc3RfcmVzdWx0Xy5DbGVh
cigpOwogICB9CiAKKyAgLy8gQWRkcyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUgY3VycmVudCBUZXN0
UmVzdWx0IG9iamVjdCB3aGVuIGludm9rZWQgaW4gYQorICAvLyBjb250ZXh0IG9mIGEgdGVzdCBv
ciBhIHRlc3QgY2FzZSwgb3IgdG8gdGhlIGdsb2JhbCBwcm9wZXJ0eSBzZXQuIElmIHRoZQorICAv
LyByZXN1bHQgYWxyZWFkeSBjb250YWlucyBhIHByb3BlcnR5IHdpdGggdGhlIHNhbWUga2V5LCB0
aGUgdmFsdWUgd2lsbCBiZQorICAvLyB1cGRhdGVkLgorICB2b2lkIFJlY29yZFByb3BlcnR5KGNv
bnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSk7CisKICAgZW51bSBSZWFjdGlvblRvU2hh
cmRpbmcgewogICAgIEhPTk9SX1NIQVJESU5HX1BST1RPQ09MLAogICAgIElHTk9SRV9TSEFSRElO
R19QUk9UT0NPTApAQCAtODE3LDYgKzc3NiwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0
SW1wbCB7CiAgIC8vIFVuaXRUZXN0T3B0aW9ucy4gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBJ
bml0R29vZ2xlVGVzdC4KICAgdm9pZCBDb25maWd1cmVYbWxPdXRwdXQoKTsKIAorI2lmIEdURVNU
X0NBTl9TVFJFQU1fUkVTVUxUU18KKyAgLy8gSW5pdGlhbGl6ZXMgdGhlIGV2ZW50IGxpc3RlbmVy
IGZvciBzdHJlYW1pbmcgdGVzdCByZXN1bHRzIHRvIGEgc29ja2V0LgorICAvLyBNdXN0IG5vdCBi
ZSBjYWxsZWQgYmVmb3JlIEluaXRHb29nbGVUZXN0LgorICB2b2lkIENvbmZpZ3VyZVN0cmVhbWlu
Z091dHB1dCgpOworI2VuZGlmCisKICAgLy8gUGVyZm9ybXMgaW5pdGlhbGl6YXRpb24gZGVwZW5k
ZW50IHVwb24gZmxhZyB2YWx1ZXMgb2J0YWluZWQgaW4KICAgLy8gUGFyc2VHb29nbGVUZXN0Rmxh
Z3NPbmx5LiAgSXMgY2FsbGVkIGZyb20gSW5pdEdvb2dsZVRlc3QgYWZ0ZXIgdGhlIGNhbGwgdG8K
ICAgLy8gUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5LiAgSW4gY2FzZSBhIHVzZXIgbmVnbGVjdHMg
dG8gY2FsbCBJbml0R29vZ2xlVGVzdApAQCAtODM3LDkgKzgwMiwxNyBAQCBjbGFzcyBHVEVTVF9B
UElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vIFJlc3RvcmVzIHRoZSB0ZXN0IGNhc2VzIGFuZCB0ZXN0
cyB0byB0aGVpciBvcmRlciBiZWZvcmUgdGhlIGZpcnN0IHNodWZmbGUuCiAgIHZvaWQgVW5zaHVm
ZmxlVGVzdHMoKTsKIAorICAvLyBSZXR1cm5zIHRoZSB2YWx1ZSBvZiBHVEVTVF9GTEFHKGNhdGNo
X2V4Y2VwdGlvbnMpIGF0IHRoZSBtb21lbnQKKyAgLy8gVW5pdFRlc3Q6OlJ1bigpIHN0YXJ0cy4K
KyAgYm9vbCBjYXRjaF9leGNlcHRpb25zKCkgY29uc3QgeyByZXR1cm4gY2F0Y2hfZXhjZXB0aW9u
c187IH0KKwogIHByaXZhdGU6CiAgIGZyaWVuZCBjbGFzcyA6OnRlc3Rpbmc6OlVuaXRUZXN0Owog
CisgIC8vIFVzZWQgYnkgVW5pdFRlc3Q6OlJ1bigpIHRvIGNhcHR1cmUgdGhlIHN0YXRlIG9mCisg
IC8vIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgYXQgdGhlIG1vbWVudCBpdCBzdGFydHMu
CisgIHZvaWQgc2V0X2NhdGNoX2V4Y2VwdGlvbnMoYm9vbCB2YWx1ZSkgeyBjYXRjaF9leGNlcHRp
b25zXyA9IHZhbHVlOyB9CisKICAgLy8gVGhlIFVuaXRUZXN0IG9iamVjdCB0aGF0IG93bnMgdGhp
cyBpbXBsZW1lbnRhdGlvbiBvYmplY3QuCiAgIFVuaXRUZXN0KiBjb25zdCBwYXJlbnRfOwogCkBA
IC04NzYsMTQgKzg0OSwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8v
IHNodWZmbGVkIG9yZGVyLgogICBzdGQ6OnZlY3RvcjxpbnQ+IHRlc3RfY2FzZV9pbmRpY2VzXzsK
IAotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiAgIC8vIFBhcmFtZXRlcml6ZWRUZXN0UmVnaXN0
cnkgb2JqZWN0IHVzZWQgdG8gcmVnaXN0ZXIgdmFsdWUtcGFyYW1ldGVyaXplZAogICAvLyB0ZXN0
cy4KICAgaW50ZXJuYWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IHBhcmFtZXRlcml6
ZWRfdGVzdF9yZWdpc3RyeV87CiAKICAgLy8gSW5kaWNhdGVzIHdoZXRoZXIgUmVnaXN0ZXJQYXJh
bWV0ZXJpemVkVGVzdHMoKSBoYXMgYmVlbiBjYWxsZWQgYWxyZWFkeS4KICAgYm9vbCBwYXJhbWV0
ZXJpemVkX3Rlc3RzX3JlZ2lzdGVyZWRfOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVT
VAogCiAgIC8vIEluZGV4IG9mIHRoZSBsYXN0IGRlYXRoIHRlc3QgY2FzZSByZWdpc3RlcmVkLiAg
SW5pdGlhbGx5IC0xLgogICBpbnQgbGFzdF9kZWF0aF90ZXN0X2Nhc2VfOwpAQCAtOTI5LDYgKzkw
MCwxMCBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vIE91ciByYW5kb20g
bnVtYmVyIGdlbmVyYXRvci4KICAgaW50ZXJuYWw6OlJhbmRvbSByYW5kb21fOwogCisgIC8vIFRo
ZSB0aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0gc3RhcnQsIGluIG1zIGZyb20gdGhlIHN0YXJ0IG9m
IHRoZQorICAvLyBVTklYIGVwb2NoLgorICBUaW1lSW5NaWxsaXMgc3RhcnRfdGltZXN0YW1wXzsK
KwogICAvLyBIb3cgbG9uZyB0aGUgdGVzdCB0b29rIHRvIHJ1biwgaW4gbWlsbGlzZWNvbmRzLgog
ICBUaW1lSW5NaWxsaXMgZWxhcHNlZF90aW1lXzsKIApAQCAtOTQyLDYgKzkxNywxMCBAQCBjbGFz
cyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vIEEgcGVyLXRocmVhZCBzdGFjayBvZiB0
cmFjZXMgY3JlYXRlZCBieSB0aGUgU0NPUEVEX1RSQUNFKCkgbWFjcm8uCiAgIGludGVybmFsOjpU
aHJlYWRMb2NhbDxzdGQ6OnZlY3RvcjxUcmFjZUluZm8+ID4gZ3Rlc3RfdHJhY2Vfc3RhY2tfOwog
CisgIC8vIFRoZSB2YWx1ZSBvZiBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpIGF0IHRoZSBt
b21lbnQgUnVuQWxsVGVzdHMoKQorICAvLyBzdGFydHMuCisgIGJvb2wgY2F0Y2hfZXhjZXB0aW9u
c187CisKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhVbml0VGVzdEltcGwpOwog
fTsgIC8vIGNsYXNzIFVuaXRUZXN0SW1wbAogCkBAIC05NTEsMTQgKzkzMCwxNiBAQCBpbmxpbmUg
VW5pdFRlc3RJbXBsKiBHZXRVbml0VGVzdEltcGwoKSB7CiAgIHJldHVybiBVbml0VGVzdDo6R2V0
SW5zdGFuY2UoKS0+aW1wbCgpOwogfQogCisjaWYgR1RFU1RfVVNFU19TSU1QTEVfUkUKKwogLy8g
SW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucyBmb3IgaW1wbGVtZW50aW5nIHRoZSBzaW1wbGUgcmVn
dWxhcgogLy8gZXhwcmVzc2lvbiBtYXRjaGVyLgogR1RFU1RfQVBJXyBib29sIElzSW5TZXQoY2hh
ciBjaCwgY29uc3QgY2hhciogc3RyKTsKLUdURVNUX0FQSV8gYm9vbCBJc0RpZ2l0KGNoYXIgY2gp
OwotR1RFU1RfQVBJXyBib29sIElzUHVuY3QoY2hhciBjaCk7CitHVEVTVF9BUElfIGJvb2wgSXNB
c2NpaURpZ2l0KGNoYXIgY2gpOworR1RFU1RfQVBJXyBib29sIElzQXNjaWlQdW5jdChjaGFyIGNo
KTsKIEdURVNUX0FQSV8gYm9vbCBJc1JlcGVhdChjaGFyIGNoKTsKLUdURVNUX0FQSV8gYm9vbCBJ
c1doaXRlU3BhY2UoY2hhciBjaCk7Ci1HVEVTVF9BUElfIGJvb2wgSXNXb3JkQ2hhcihjaGFyIGNo
KTsKK0dURVNUX0FQSV8gYm9vbCBJc0FzY2lpV2hpdGVTcGFjZShjaGFyIGNoKTsKK0dURVNUX0FQ
SV8gYm9vbCBJc0FzY2lpV29yZENoYXIoY2hhciBjaCk7CiBHVEVTVF9BUElfIGJvb2wgSXNWYWxp
ZEVzY2FwZShjaGFyIGNoKTsKIEdURVNUX0FQSV8gYm9vbCBBdG9tTWF0Y2hlc0NoYXIoYm9vbCBl
c2NhcGVkLCBjaGFyIHBhdHRlcm4sIGNoYXIgY2gpOwogR1RFU1RfQVBJXyBib29sIFZhbGlkYXRl
UmVnZXgoY29uc3QgY2hhciogcmVnZXgpOwpAQCAtOTY3LDYgKzk0OCw4IEBAIEdURVNUX0FQSV8g
Ym9vbCBNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZCgKICAgICBib29sIGVzY2FwZWQsIGNo
YXIgY2gsIGNoYXIgcmVwZWF0LCBjb25zdCBjaGFyKiByZWdleCwgY29uc3QgY2hhciogc3RyKTsK
IEdURVNUX0FQSV8gYm9vbCBNYXRjaFJlZ2V4QW55d2hlcmUoY29uc3QgY2hhciogcmVnZXgsIGNv
bnN0IGNoYXIqIHN0cik7CiAKKyNlbmRpZiAgLy8gR1RFU1RfVVNFU19TSU1QTEVfUkUKKwogLy8g
UGFyc2VzIHRoZSBjb21tYW5kIGxpbmUgZm9yIEdvb2dsZSBUZXN0IGZsYWdzLCB3aXRob3V0IGlu
aXRpYWxpemluZwogLy8gb3RoZXIgcGFydHMgb2YgR29vZ2xlIFRlc3QuCiBHVEVTVF9BUElfIHZv
aWQgUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5KGludCogYXJnYywgY2hhcioqIGFyZ3YpOwpAQCAt
OTc2LDMzICs5NTksNyBAQCBHVEVTVF9BUElfIHZvaWQgUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5
KGludCogYXJnYywgd2NoYXJfdCoqIGFyZ3YpOwogCiAvLyBSZXR1cm5zIHRoZSBtZXNzYWdlIGRl
c2NyaWJpbmcgdGhlIGxhc3Qgc3lzdGVtIGVycm9yLCByZWdhcmRsZXNzIG9mIHRoZQogLy8gcGxh
dGZvcm0uCi1TdHJpbmcgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKTsKLQotI2lmIEdURVNUX09T
X1dJTkRPV1MKLS8vIFByb3ZpZGVzIGxlYWstc2FmZSBXaW5kb3dzIGtlcm5lbCBoYW5kbGUgb3du
ZXJzaGlwLgotY2xhc3MgQXV0b0hhbmRsZSB7Ci0gcHVibGljOgotICBBdXRvSGFuZGxlKCkgOiBo
YW5kbGVfKElOVkFMSURfSEFORExFX1ZBTFVFKSB7fQotICBleHBsaWNpdCBBdXRvSGFuZGxlKEhB
TkRMRSBoYW5kbGUpIDogaGFuZGxlXyhoYW5kbGUpIHt9Ci0KLSAgfkF1dG9IYW5kbGUoKSB7IFJl
c2V0KCk7IH0KLQotICBIQU5ETEUgR2V0KCkgY29uc3QgeyByZXR1cm4gaGFuZGxlXzsgfQotICB2
b2lkIFJlc2V0KCkgeyBSZXNldChJTlZBTElEX0hBTkRMRV9WQUxVRSk7IH0KLSAgdm9pZCBSZXNl
dChIQU5ETEUgaGFuZGxlKSB7Ci0gICAgaWYgKGhhbmRsZSAhPSBoYW5kbGVfKSB7Ci0gICAgICBp
ZiAoaGFuZGxlXyAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgOjpDbG9zZUhhbmRs
ZShoYW5kbGVfKTsKLSAgICAgIGhhbmRsZV8gPSBoYW5kbGU7Ci0gICAgfQotICB9Ci0KLSBwcml2
YXRlOgotICBIQU5ETEUgaGFuZGxlXzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJ
R05fKEF1dG9IYW5kbGUpOwotfTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworR1RFU1Rf
QVBJXyBzdGQ6OnN0cmluZyBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpOwogCiAvLyBBdHRlbXB0
cyB0byBwYXJzZSBhIHN0cmluZyBpbnRvIGEgcG9zaXRpdmUgaW50ZWdlciBwb2ludGVkIHRvIGJ5
IHRoZQogLy8gbnVtYmVyIHBhcmFtZXRlci4gIFJldHVybnMgdHJ1ZSBpZiB0aGF0IGlzIHBvc3Np
YmxlLgpAQCAtMTAxMyw3ICs5NzAsNyBAQCBib29sIFBhcnNlTmF0dXJhbE51bWJlcihjb25zdCA6
OnN0ZDo6c3RyaW5nJiBzdHIsIEludGVnZXIqIG51bWJlcikgewogICAvLyBGYWlsIGZhc3QgaWYg
dGhlIGdpdmVuIHN0cmluZyBkb2VzIG5vdCBiZWdpbiB3aXRoIGEgZGlnaXQ7CiAgIC8vIHRoaXMg
YnlwYXNzZXMgc3RydG9YWFgncyAib3B0aW9uYWwgbGVhZGluZyB3aGl0ZXNwYWNlIGFuZCBwbHVz
CiAgIC8vIG9yIG1pbnVzIHNpZ24iIHNlbWFudGljcywgd2hpY2ggYXJlIHVuZGVzaXJhYmxlIGhl
cmUuCi0gIGlmIChzdHIuZW1wdHkoKSB8fCAhaXNkaWdpdChzdHJbMF0pKSB7CisgIGlmIChzdHIu
ZW1wdHkoKSB8fCAhSXNEaWdpdChzdHJbMF0pKSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAg
IGVycm5vID0gMDsKQEAgLTEwMjEsMTcgKzk3OCwyMyBAQCBib29sIFBhcnNlTmF0dXJhbE51bWJl
cihjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIsIEludGVnZXIqIG51bWJlcikgewogICBjaGFyKiBl
bmQ7CiAgIC8vIEJpZ2dlc3RDb252ZXJ0aWJsZSBpcyB0aGUgbGFyZ2VzdCBpbnRlZ2VyIHR5cGUg
dGhhdCBzeXN0ZW0tcHJvdmlkZWQKICAgLy8gc3RyaW5nLXRvLW51bWJlciBjb252ZXJzaW9uIHJv
dXRpbmVzIGNhbiByZXR1cm4uCi0jaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhZGVmaW5lZChfX0dO
VUNfXykKKworIyBpZiBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVkKF9fR05VQ19fKQorCiAg
IC8vIE1TVkMgYW5kIEMrKyBCdWlsZGVyIGRlZmluZSBfX2ludDY0IGluc3RlYWQgb2YgdGhlIHN0
YW5kYXJkIGxvbmcgbG9uZy4KICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IEJpZ2dlc3RDb252
ZXJ0aWJsZTsKICAgY29uc3QgQmlnZ2VzdENvbnZlcnRpYmxlIHBhcnNlZCA9IF9zdHJ0b3VpNjQo
c3RyLmNfc3RyKCksICZlbmQsIDEwKTsKLSNlbHNlCisKKyMgZWxzZQorCiAgIHR5cGVkZWYgdW5z
aWduZWQgbG9uZyBsb25nIEJpZ2dlc3RDb252ZXJ0aWJsZTsgIC8vIE5PTElOVAogICBjb25zdCBC
aWdnZXN0Q29udmVydGlibGUgcGFyc2VkID0gc3RydG91bGwoc3RyLmNfc3RyKCksICZlbmQsIDEw
KTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUyAmJiAhZGVmaW5lZChfX0dOVUNfXykKKwor
IyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUyAmJiAhZGVmaW5lZChfX0dOVUNfXykKKwogICBj
b25zdCBib29sIHBhcnNlX3N1Y2Nlc3MgPSAqZW5kID09ICdcMCcgJiYgZXJybm8gPT0gMDsKIAot
ICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBDb252ZXJ0IHRoaXMgdG8gY29tcGlsZSB0aW1l
IGFzc2VydGlvbiB3aGVuIGl0IGlzCisgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gY29tcGls
ZSB0aW1lIGFzc2VydGlvbiB3aGVuIGl0IGlzCiAgIC8vIGF2YWlsYWJsZS4KICAgR1RFU1RfQ0hF
Q0tfKHNpemVvZihJbnRlZ2VyKSA8PSBzaXplb2YocGFyc2VkKSk7CiAKQEAgLTEwNTMsOCArMTAx
Niw5IEBAIGJvb2wgUGFyc2VOYXR1cmFsTnVtYmVyKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwg
SW50ZWdlciogbnVtYmVyKSB7CiBjbGFzcyBUZXN0UmVzdWx0QWNjZXNzb3IgewogIHB1YmxpYzoK
ICAgc3RhdGljIHZvaWQgUmVjb3JkUHJvcGVydHkoVGVzdFJlc3VsdCogdGVzdF9yZXN1bHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB4bWxfZWxlbWVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFByb3BlcnR5JiBwcm9w
ZXJ0eSkgewotICAgIHRlc3RfcmVzdWx0LT5SZWNvcmRQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAg
dGVzdF9yZXN1bHQtPlJlY29yZFByb3BlcnR5KHhtbF9lbGVtZW50LCBwcm9wZXJ0eSk7CiAgIH0K
IAogICBzdGF0aWMgdm9pZCBDbGVhclRlc3RQYXJ0UmVzdWx0cyhUZXN0UmVzdWx0KiB0ZXN0X3Jl
c3VsdCkgewpAQCAtMTA2Nyw3ICsxMDMxLDE1NyBAQCBjbGFzcyBUZXN0UmVzdWx0QWNjZXNzb3Ig
ewogICB9CiB9OwogCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworCisvLyBTdHJlYW1z
IHRlc3QgcmVzdWx0cyB0byB0aGUgZ2l2ZW4gcG9ydCBvbiB0aGUgZ2l2ZW4gaG9zdCBtYWNoaW5l
LgorY2xhc3MgU3RyZWFtaW5nTGlzdGVuZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5l
ciB7CisgcHVibGljOgorICAvLyBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB3cml0aW5nIHN0cmlu
Z3MgdG8gYSBzb2NrZXQuCisgIGNsYXNzIEFic3RyYWN0U29ja2V0V3JpdGVyIHsKKyAgIHB1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5BYnN0cmFjdFNvY2tldFdyaXRlcigpIHt9CisKKyAgICAvLyBTZW5k
cyBhIHN0cmluZyB0byB0aGUgc29ja2V0LgorICAgIHZpcnR1YWwgdm9pZCBTZW5kKGNvbnN0IHN0
ZDo6c3RyaW5nJiBtZXNzYWdlKSA9IDA7CisKKyAgICAvLyBDbG9zZXMgdGhlIHNvY2tldC4KKyAg
ICB2aXJ0dWFsIHZvaWQgQ2xvc2VDb25uZWN0aW9uKCkge30KKworICAgIC8vIFNlbmRzIGEgc3Ry
aW5nIGFuZCBhIG5ld2xpbmUgdG8gdGhlIHNvY2tldC4KKyAgICB2b2lkIFNlbmRMbihjb25zdCBz
dGQ6OnN0cmluZyYgbWVzc2FnZSkgeyBTZW5kKG1lc3NhZ2UgKyAiXG4iKTsgfQorICB9OworCisg
IC8vIENvbmNyZXRlIGNsYXNzIGZvciBhY3R1YWxseSB3cml0aW5nIHN0cmluZ3MgdG8gYSBzb2Nr
ZXQuCisgIGNsYXNzIFNvY2tldFdyaXRlciA6IHB1YmxpYyBBYnN0cmFjdFNvY2tldFdyaXRlciB7
CisgICBwdWJsaWM6CisgICAgU29ja2V0V3JpdGVyKGNvbnN0IHN0ZDo6c3RyaW5nJiBob3N0LCBj
b25zdCBzdGQ6OnN0cmluZyYgcG9ydCkKKyAgICAgICAgOiBzb2NrZmRfKC0xKSwgaG9zdF9uYW1l
Xyhob3N0KSwgcG9ydF9udW1fKHBvcnQpIHsKKyAgICAgIE1ha2VDb25uZWN0aW9uKCk7CisgICAg
fQorCisgICAgdmlydHVhbCB+U29ja2V0V3JpdGVyKCkgeworICAgICAgaWYgKHNvY2tmZF8gIT0g
LTEpCisgICAgICAgIENsb3NlQ29ubmVjdGlvbigpOworICAgIH0KKworICAgIC8vIFNlbmRzIGEg
c3RyaW5nIHRvIHRoZSBzb2NrZXQuCisgICAgdmlydHVhbCB2b2lkIFNlbmQoY29uc3Qgc3RkOjpz
dHJpbmcmIG1lc3NhZ2UpIHsKKyAgICAgIEdURVNUX0NIRUNLXyhzb2NrZmRfICE9IC0xKQorICAg
ICAgICAgIDw8ICJTZW5kKCkgY2FuIGJlIGNhbGxlZCBvbmx5IHdoZW4gdGhlcmUgaXMgYSBjb25u
ZWN0aW9uLiI7CisKKyAgICAgIGNvbnN0IGludCBsZW4gPSBzdGF0aWNfY2FzdDxpbnQ+KG1lc3Nh
Z2UubGVuZ3RoKCkpOworICAgICAgaWYgKHdyaXRlKHNvY2tmZF8sIG1lc3NhZ2UuY19zdHIoKSwg
bGVuKSAhPSBsZW4pIHsKKyAgICAgICAgR1RFU1RfTE9HXyhXQVJOSU5HKQorICAgICAgICAgICAg
PDwgInN0cmVhbV9yZXN1bHRfdG86IGZhaWxlZCB0byBzdHJlYW0gdG8gIgorICAgICAgICAgICAg
PDwgaG9zdF9uYW1lXyA8PCAiOiIgPDwgcG9ydF9udW1fOworICAgICAgfQorICAgIH0KKworICAg
cHJpdmF0ZToKKyAgICAvLyBDcmVhdGVzIGEgY2xpZW50IHNvY2tldCBhbmQgY29ubmVjdHMgdG8g
dGhlIHNlcnZlci4KKyAgICB2b2lkIE1ha2VDb25uZWN0aW9uKCk7CisKKyAgICAvLyBDbG9zZXMg
dGhlIHNvY2tldC4KKyAgICB2b2lkIENsb3NlQ29ubmVjdGlvbigpIHsKKyAgICAgIEdURVNUX0NI
RUNLXyhzb2NrZmRfICE9IC0xKQorICAgICAgICAgIDw8ICJDbG9zZUNvbm5lY3Rpb24oKSBjYW4g
YmUgY2FsbGVkIG9ubHkgd2hlbiB0aGVyZSBpcyBhIGNvbm5lY3Rpb24uIjsKKworICAgICAgY2xv
c2Uoc29ja2ZkXyk7CisgICAgICBzb2NrZmRfID0gLTE7CisgICAgfQorCisgICAgaW50IHNvY2tm
ZF87ICAvLyBzb2NrZXQgZmlsZSBkZXNjcmlwdG9yCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgaG9z
dF9uYW1lXzsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBwb3J0X251bV87CisKKyAgICBHVEVTVF9E
SVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNvY2tldFdyaXRlcik7CisgIH07ICAvLyBjbGFzcyBT
b2NrZXRXcml0ZXIKKworICAvLyBFc2NhcGVzICc9JywgJyYnLCAnJScsIGFuZCAnXG4nIGNoYXJh
Y3RlcnMgaW4gc3RyIGFzICIleHgiLgorICBzdGF0aWMgc3RkOjpzdHJpbmcgVXJsRW5jb2RlKGNv
bnN0IGNoYXIqIHN0cik7CisKKyAgU3RyZWFtaW5nTGlzdGVuZXIoY29uc3Qgc3RkOjpzdHJpbmcm
IGhvc3QsIGNvbnN0IHN0ZDo6c3RyaW5nJiBwb3J0KQorICAgICAgOiBzb2NrZXRfd3JpdGVyXyhu
ZXcgU29ja2V0V3JpdGVyKGhvc3QsIHBvcnQpKSB7CisgICAgU3RhcnQoKTsKKyAgfQorCisgIGV4
cGxpY2l0IFN0cmVhbWluZ0xpc3RlbmVyKEFic3RyYWN0U29ja2V0V3JpdGVyKiBzb2NrZXRfd3Jp
dGVyKQorICAgICAgOiBzb2NrZXRfd3JpdGVyXyhzb2NrZXRfd3JpdGVyKSB7IFN0YXJ0KCk7IH0K
KworICB2b2lkIE9uVGVzdFByb2dyYW1TdGFydChjb25zdCBVbml0VGVzdCYgLyogdW5pdF90ZXN0
ICovKSB7CisgICAgU2VuZExuKCJldmVudD1UZXN0UHJvZ3JhbVN0YXJ0Iik7CisgIH0KKworICB2
b2lkIE9uVGVzdFByb2dyYW1FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCkgeworICAgIC8v
IE5vdGUgdGhhdCBHb29nbGUgVGVzdCBjdXJyZW50IG9ubHkgcmVwb3J0IGVsYXBzZWQgdGltZSBm
b3IgZWFjaAorICAgIC8vIHRlc3QgaXRlcmF0aW9uLCBub3QgZm9yIHRoZSBlbnRpcmUgdGVzdCBw
cm9ncmFtLgorICAgIFNlbmRMbigiZXZlbnQ9VGVzdFByb2dyYW1FbmQmcGFzc2VkPSIgKyBGb3Jt
YXRCb29sKHVuaXRfdGVzdC5QYXNzZWQoKSkpOworCisgICAgLy8gTm90aWZ5IHRoZSBzdHJlYW1p
bmcgc2VydmVyIHRvIHN0b3AuCisgICAgc29ja2V0X3dyaXRlcl8tPkNsb3NlQ29ubmVjdGlvbigp
OworICB9CisKKyAgdm9pZCBPblRlc3RJdGVyYXRpb25TdGFydChjb25zdCBVbml0VGVzdCYgLyog
dW5pdF90ZXN0ICovLCBpbnQgaXRlcmF0aW9uKSB7CisgICAgU2VuZExuKCJldmVudD1UZXN0SXRl
cmF0aW9uU3RhcnQmaXRlcmF0aW9uPSIgKworICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmco
aXRlcmF0aW9uKSk7CisgIH0KKworICB2b2lkIE9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0
VGVzdCYgdW5pdF90ZXN0LCBpbnQgLyogaXRlcmF0aW9uICovKSB7CisgICAgU2VuZExuKCJldmVu
dD1UZXN0SXRlcmF0aW9uRW5kJnBhc3NlZD0iICsKKyAgICAgICAgICAgRm9ybWF0Qm9vbCh1bml0
X3Rlc3QuUGFzc2VkKCkpICsgIiZlbGFwc2VkX3RpbWU9IiArCisgICAgICAgICAgIFN0cmVhbWFi
bGVUb1N0cmluZyh1bml0X3Rlc3QuZWxhcHNlZF90aW1lKCkpICsgIm1zIik7CisgIH0KKworICB2
b2lkIE9uVGVzdENhc2VTdGFydChjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKSB7CisgICAgU2Vu
ZExuKHN0ZDo6c3RyaW5nKCJldmVudD1UZXN0Q2FzZVN0YXJ0Jm5hbWU9IikgKyB0ZXN0X2Nhc2Uu
bmFtZSgpKTsKKyAgfQorCisgIHZvaWQgT25UZXN0Q2FzZUVuZChjb25zdCBUZXN0Q2FzZSYgdGVz
dF9jYXNlKSB7CisgICAgU2VuZExuKCJldmVudD1UZXN0Q2FzZUVuZCZwYXNzZWQ9IiArIEZvcm1h
dEJvb2wodGVzdF9jYXNlLlBhc3NlZCgpKQorICAgICAgICAgICArICImZWxhcHNlZF90aW1lPSIg
KyBTdHJlYW1hYmxlVG9TdHJpbmcodGVzdF9jYXNlLmVsYXBzZWRfdGltZSgpKQorICAgICAgICAg
ICArICJtcyIpOworICB9CisKKyAgdm9pZCBPblRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYgdGVz
dF9pbmZvKSB7CisgICAgU2VuZExuKHN0ZDo6c3RyaW5nKCJldmVudD1UZXN0U3RhcnQmbmFtZT0i
KSArIHRlc3RfaW5mby5uYW1lKCkpOworICB9CisKKyAgdm9pZCBPblRlc3RFbmQoY29uc3QgVGVz
dEluZm8mIHRlc3RfaW5mbykgeworICAgIFNlbmRMbigiZXZlbnQ9VGVzdEVuZCZwYXNzZWQ9IiAr
CisgICAgICAgICAgIEZvcm1hdEJvb2woKHRlc3RfaW5mby5yZXN1bHQoKSktPlBhc3NlZCgpKSAr
CisgICAgICAgICAgICImZWxhcHNlZF90aW1lPSIgKworICAgICAgICAgICBTdHJlYW1hYmxlVG9T
dHJpbmcoKHRlc3RfaW5mby5yZXN1bHQoKSktPmVsYXBzZWRfdGltZSgpKSArICJtcyIpOworICB9
CisKKyAgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3Bh
cnRfcmVzdWx0KSB7CisgICAgY29uc3QgY2hhciogZmlsZV9uYW1lID0gdGVzdF9wYXJ0X3Jlc3Vs
dC5maWxlX25hbWUoKTsKKyAgICBpZiAoZmlsZV9uYW1lID09IE5VTEwpCisgICAgICBmaWxlX25h
bWUgPSAiIjsKKyAgICBTZW5kTG4oImV2ZW50PVRlc3RQYXJ0UmVzdWx0JmZpbGU9IiArIFVybEVu
Y29kZShmaWxlX25hbWUpICsKKyAgICAgICAgICAgIiZsaW5lPSIgKyBTdHJlYW1hYmxlVG9TdHJp
bmcodGVzdF9wYXJ0X3Jlc3VsdC5saW5lX251bWJlcigpKSArCisgICAgICAgICAgICImbWVzc2Fn
ZT0iICsgVXJsRW5jb2RlKHRlc3RfcGFydF9yZXN1bHQubWVzc2FnZSgpKSk7CisgIH0KKworIHBy
aXZhdGU6CisgIC8vIFNlbmRzIHRoZSBnaXZlbiBtZXNzYWdlIGFuZCBhIG5ld2xpbmUgdG8gdGhl
IHNvY2tldC4KKyAgdm9pZCBTZW5kTG4oY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsgc29j
a2V0X3dyaXRlcl8tPlNlbmRMbihtZXNzYWdlKTsgfQorCisgIC8vIENhbGxlZCBhdCB0aGUgc3Rh
cnQgb2Ygc3RyZWFtaW5nIHRvIG5vdGlmeSB0aGUgcmVjZWl2ZXIgd2hhdAorICAvLyBwcm90b2Nv
bCB3ZSBhcmUgdXNpbmcuCisgIHZvaWQgU3RhcnQoKSB7IFNlbmRMbigiZ3Rlc3Rfc3RyZWFtaW5n
X3Byb3RvY29sX3ZlcnNpb249MS4wIik7IH0KKworICBzdGQ6OnN0cmluZyBGb3JtYXRCb29sKGJv
b2wgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID8gIjEiIDogIjAiOyB9CisKKyAgY29uc3Qgc2NvcGVk
X3B0cjxBYnN0cmFjdFNvY2tldFdyaXRlcj4gc29ja2V0X3dyaXRlcl87CisKKyAgR1RFU1RfRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTdHJlYW1pbmdMaXN0ZW5lcik7Cit9OyAgLy8gY2xhc3Mg
U3RyZWFtaW5nTGlzdGVuZXIKKworI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNf
CisKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAor
R1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQorCiAjZW5kaWYgIC8v
IEdURVNUX1NSQ19HVEVTVF9JTlRFUk5BTF9JTkxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1wb3J0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c3JjL2d0ZXN0LXBvcnQuY2MKaW5kZXggYjk1MDRmNTZhZTZmOTNlMTI2ZDJiNTY4YTdkOTdkYjUx
N2ZiODNlNC4uZmVjYjVkMTFjMjEyOTZhOTE4MWExMTI4MDIyNjA2N2I2NDNlZGQwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXBvcnQuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXBvcnQuY2MKQEAgLTI2LDQyICsyNiw1MiBA
QAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8v
IEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAotI2luY2x1ZGUgPGd0ZXN0
L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KKworI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0
LXBvcnQuaCIKIAogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2lu
Y2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZnN0cmVhbT4K
IAotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0jaW5jbHVkZSA8d2luZG93cy5oPiAgLy8g
Rm9yIFRlcm1pbmF0ZVByb2Nlc3MoKQotI2VsaWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1ZGUg
PGlvLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGlu
Y2x1ZGUgPHdpbmRvd3MuaD4KKyMgaW5jbHVkZSA8aW8uaD4KKyMgaW5jbHVkZSA8c3lzL3N0YXQu
aD4KKyMgaW5jbHVkZSA8bWFwPiAgLy8gVXNlZCBpbiBUaHJlYWRMb2NhbC4KICNlbHNlCi0jaW5j
bHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGlu
Y2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKICNpZiBHVEVT
VF9PU19NQUMKLSNpbmNsdWRlIDxtYWNoL21hY2hfaW5pdC5oPgotI2luY2x1ZGUgPG1hY2gvdGFz
ay5oPgotI2luY2x1ZGUgPG1hY2gvdm1fbWFwLmg+CisjIGluY2x1ZGUgPG1hY2gvbWFjaF9pbml0
Lmg+CisjIGluY2x1ZGUgPG1hY2gvdGFzay5oPgorIyBpbmNsdWRlIDxtYWNoL3ZtX21hcC5oPgog
I2VuZGlmICAvLyBHVEVTVF9PU19NQUMKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5h
bC9ndGVzdC1zdHJpbmcuaD4KLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1
bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0
IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhl
cmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVu
dCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5o
IGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKKyNpZiBH
VEVTVF9PU19RTlgKKyMgaW5jbHVkZSA8ZGV2Y3RsLmg+CisjIGluY2x1ZGUgPGZjbnRsLmg+Cisj
IGluY2x1ZGUgPHN5cy9wcm9jZnMuaD4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfUU5YCisKKyNpZiBH
VEVTVF9PU19BSVgKKyMgaW5jbHVkZSA8cHJvY2luZm8uaD4KKyMgaW5jbHVkZSA8c3lzL3R5cGVz
Lmg+CisjZW5kaWYgIC8vIEdURVNUX09TX0FJWAorCisjaWYgR1RFU1RfT1NfRlVDSFNJQQorIyBp
bmNsdWRlIDx6aXJjb24vcHJvY2Vzcy5oPgorIyBpbmNsdWRlIDx6aXJjb24vc3lzY2FsbHMuaD4K
KyNlbmRpZiAgLy8gR1RFU1RfT1NfRlVDSFNJQQorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3Bp
LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgorI2luY2x1ZGUgImd0ZXN0L2lu
dGVybmFsL2d0ZXN0LWludGVybmFsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
c3RyaW5nLmgiCiAjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdU
RVNUX0lNUExFTUVOVEFUSU9OXwogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiBuYW1lc3BhY2UgaW50
ZXJuYWwgewpAQCAtNzUsMTAgKzg1LDMxIEBAIGNvbnN0IGludCBrU3RkT3V0RmlsZW5vID0gU1RE
T1VUX0ZJTEVOTzsKIGNvbnN0IGludCBrU3RkRXJyRmlsZW5vID0gU1RERVJSX0ZJTEVOTzsKICNl
bmRpZiAgLy8gX01TQ19WRVIKIAotI2lmIEdURVNUX09TX01BQworI2lmIEdURVNUX09TX0xJTlVY
CisKK25hbWVzcGFjZSB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1QgUmVhZFByb2NGaWxlRmll
bGQoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lLCBpbnQgZmllbGQpIHsKKyAgc3RkOjpzdHJp
bmcgZHVtbXk7CisgIHN0ZDo6aWZzdHJlYW0gZmlsZShmaWxlbmFtZS5jX3N0cigpKTsKKyAgd2hp
bGUgKGZpZWxkLS0gPiAwKSB7CisgICAgZmlsZSA+PiBkdW1teTsKKyAgfQorICBUIG91dHB1dCA9
IDA7CisgIGZpbGUgPj4gb3V0cHV0OworICByZXR1cm4gb3V0cHV0OworfQorfSAgLy8gbmFtZXNw
YWNlCisKKy8vIFJldHVybnMgdGhlIG51bWJlciBvZiBhY3RpdmUgdGhyZWFkcywgb3IgMCB3aGVu
IHRoZXJlIGlzIGFuIGVycm9yLgorc2l6ZV90IEdldFRocmVhZENvdW50KCkgeworICBjb25zdCBz
dGQ6OnN0cmluZyBmaWxlbmFtZSA9CisgICAgICAoTWVzc2FnZSgpIDw8ICIvcHJvYy8iIDw8IGdl
dHBpZCgpIDw8ICIvc3RhdCIpLkdldFN0cmluZygpOworICByZXR1cm4gUmVhZFByb2NGaWxlRmll
bGQ8aW50PihmaWxlbmFtZSwgMTkpOworfQorCisjZWxpZiBHVEVTVF9PU19NQUMKIAotLy8gUmV0
dXJucyB0aGUgbnVtYmVyIG9mIHRocmVhZHMgcnVubmluZyBpbiB0aGUgcHJvY2Vzcywgb3IgMCB0
byBpbmRpY2F0ZSB0aGF0Ci0vLyB3ZSBjYW5ub3QgZGV0ZWN0IGl0Lgogc2l6ZV90IEdldFRocmVh
ZENvdW50KCkgewogICBjb25zdCB0YXNrX3QgdGFzayA9IG1hY2hfdGFza19zZWxmKCk7CiAgIG1h
Y2hfbXNnX3R5cGVfbnVtYmVyX3QgdGhyZWFkX2NvdW50OwpAQCAtOTYsNiArMTI3LDU4IEBAIHNp
emVfdCBHZXRUaHJlYWRDb3VudCgpIHsKICAgfQogfQogCisjZWxpZiBHVEVTVF9PU19RTlgKKwor
Ly8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHRocmVhZHMgcnVubmluZyBpbiB0aGUgcHJvY2Vzcywg
b3IgMCB0byBpbmRpY2F0ZSB0aGF0CisvLyB3ZSBjYW5ub3QgZGV0ZWN0IGl0Lgorc2l6ZV90IEdl
dFRocmVhZENvdW50KCkgeworICBjb25zdCBpbnQgZmQgPSBvcGVuKCIvcHJvYy9zZWxmL2FzIiwg
T19SRE9OTFkpOworICBpZiAoZmQgPCAwKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKyAgcHJvY2Zz
X2luZm8gcHJvY2Vzc19pbmZvOworICBjb25zdCBpbnQgc3RhdHVzID0KKyAgICAgIGRldmN0bChm
ZCwgRENNRF9QUk9DX0lORk8sICZwcm9jZXNzX2luZm8sIHNpemVvZihwcm9jZXNzX2luZm8pLCBO
VUxMKTsKKyAgY2xvc2UoZmQpOworICBpZiAoc3RhdHVzID09IEVPSykgeworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxzaXplX3Q+KHByb2Nlc3NfaW5mby5udW1fdGhyZWFkcyk7CisgIH0gZWxzZSB7
CisgICAgcmV0dXJuIDA7CisgIH0KK30KKworI2VsaWYgR1RFU1RfT1NfQUlYCisKK3NpemVfdCBH
ZXRUaHJlYWRDb3VudCgpIHsKKyAgc3RydWN0IHByb2NlbnRyeTY0IGVudHJ5OworICBwaWRfdCBw
aWQgPSBnZXRwaWQoKTsKKyAgaW50IHN0YXR1cyA9IGdldHByb2NzNjQoJmVudHJ5LCBzaXplb2Yo
ZW50cnkpLCBOVUxMLCAwLCAmcGlkLCAxKTsKKyAgaWYgKHN0YXR1cyA9PSAxKSB7CisgICAgcmV0
dXJuIGVudHJ5LnBpX3RoY291bnQ7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30K
KworI2VsaWYgR1RFU1RfT1NfRlVDSFNJQQorCitzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7Cisg
IGludCBkdW1teV9idWZmZXI7CisgIHNpemVfdCBhdmFpbDsKKyAgenhfc3RhdHVzX3Qgc3RhdHVz
ID0genhfb2JqZWN0X2dldF9pbmZvKAorICAgICAgenhfcHJvY2Vzc19zZWxmKCksCisgICAgICBa
WF9JTkZPX1BST0NFU1NfVEhSRUFEUywKKyAgICAgICZkdW1teV9idWZmZXIsCisgICAgICAwLAor
ICAgICAgbnVsbHB0ciwKKyAgICAgICZhdmFpbCk7CisgIGlmIChzdGF0dXMgPT0gWlhfT0spIHsK
KyAgICByZXR1cm4gYXZhaWw7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKwog
I2Vsc2UKIAogc2l6ZV90IEdldFRocmVhZENvdW50KCkgewpAQCAtMTA0LDcgKzE4Nyw0MzIgQEAg
c2l6ZV90IEdldFRocmVhZENvdW50KCkgewogICByZXR1cm4gMDsKIH0KIAotI2VuZGlmICAvLyBH
VEVTVF9PU19NQUMKKyNlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKKworI2lmIEdURVNUX0lTX1RI
UkVBRFNBRkUgJiYgR1RFU1RfT1NfV0lORE9XUworCit2b2lkIFNsZWVwTWlsbGlzZWNvbmRzKGlu
dCBuKSB7CisgIDo6U2xlZXAobik7Cit9CisKK0F1dG9IYW5kbGU6OkF1dG9IYW5kbGUoKQorICAg
IDogaGFuZGxlXyhJTlZBTElEX0hBTkRMRV9WQUxVRSkge30KKworQXV0b0hhbmRsZTo6QXV0b0hh
bmRsZShIYW5kbGUgaGFuZGxlKQorICAgIDogaGFuZGxlXyhoYW5kbGUpIHt9CisKK0F1dG9IYW5k
bGU6On5BdXRvSGFuZGxlKCkgeworICBSZXNldCgpOworfQorCitBdXRvSGFuZGxlOjpIYW5kbGUg
QXV0b0hhbmRsZTo6R2V0KCkgY29uc3QgeworICByZXR1cm4gaGFuZGxlXzsKK30KKwordm9pZCBB
dXRvSGFuZGxlOjpSZXNldCgpIHsKKyAgUmVzZXQoSU5WQUxJRF9IQU5ETEVfVkFMVUUpOworfQor
Cit2b2lkIEF1dG9IYW5kbGU6OlJlc2V0KEhBTkRMRSBoYW5kbGUpIHsKKyAgLy8gUmVzZXR0aW5n
IHdpdGggdGhlIHNhbWUgaGFuZGxlIHdlIGFscmVhZHkgb3duIGlzIGludmFsaWQuCisgIGlmICho
YW5kbGVfICE9IGhhbmRsZSkgeworICAgIGlmIChJc0Nsb3NlYWJsZSgpKSB7CisgICAgICA6OkNs
b3NlSGFuZGxlKGhhbmRsZV8pOworICAgIH0KKyAgICBoYW5kbGVfID0gaGFuZGxlOworICB9IGVs
c2UgeworICAgIEdURVNUX0NIRUNLXyghSXNDbG9zZWFibGUoKSkKKyAgICAgICAgPDwgIlJlc2V0
dGluZyBhIHZhbGlkIGhhbmRsZSB0byBpdHNlbGYgaXMgbGlrZWx5IGEgcHJvZ3JhbW1lciBlcnJv
ciAiCisgICAgICAgICAgICAiYW5kIHRodXMgbm90IGFsbG93ZWQuIjsKKyAgfQorfQorCitib29s
IEF1dG9IYW5kbGU6OklzQ2xvc2VhYmxlKCkgY29uc3QgeworICAvLyBEaWZmZXJlbnQgV2luZG93
cyBBUElzIG1heSB1c2UgZWl0aGVyIG9mIHRoZXNlIHZhbHVlcyB0byByZXByZXNlbnQgYW4KKyAg
Ly8gaW52YWxpZCBoYW5kbGUuCisgIHJldHVybiBoYW5kbGVfICE9IE5VTEwgJiYgaGFuZGxlXyAh
PSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKK30KKworTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24o
KQorICAgIDogZXZlbnRfKDo6Q3JlYXRlRXZlbnQoTlVMTCwgICAvLyBEZWZhdWx0IHNlY3VyaXR5
IGF0dHJpYnV0ZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLCAgIC8vIERvIG5v
dCByZXNldCBhdXRvbWF0aWNhbGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0Us
ICAvLyBJbml0aWFsbHkgdW5zZXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSkg
eyAgLy8gQW5vbnltb3VzIGV2ZW50LgorICBHVEVTVF9DSEVDS18oZXZlbnRfLkdldCgpICE9IE5V
TEwpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6Tm90aWZ5KCkgeworICBHVEVTVF9DSEVDS18o
OjpTZXRFdmVudChldmVudF8uR2V0KCkpICE9IEZBTFNFKTsKK30KKwordm9pZCBOb3RpZmljYXRp
b246OldhaXRGb3JOb3RpZmljYXRpb24oKSB7CisgIEdURVNUX0NIRUNLXygKKyAgICAgIDo6V2Fp
dEZvclNpbmdsZU9iamVjdChldmVudF8uR2V0KCksIElORklOSVRFKSA9PSBXQUlUX09CSkVDVF8w
KTsKK30KKworTXV0ZXg6Ok11dGV4KCkKKyAgICA6IG93bmVyX3RocmVhZF9pZF8oMCksCisgICAg
ICB0eXBlXyhrRHluYW1pYyksCisgICAgICBjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhhc2VfKDAp
LAorICAgICAgY3JpdGljYWxfc2VjdGlvbl8obmV3IENSSVRJQ0FMX1NFQ1RJT04pIHsKKyAgOjpJ
bml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb25fKTsKK30KKworTXV0ZXg6
On5NdXRleCgpIHsKKyAgLy8gU3RhdGljIG11dGV4ZXMgYXJlIGxlYWtlZCBpbnRlbnRpb25hbGx5
LiBJdCBpcyBub3QgdGhyZWFkLXNhZmUgdG8gdHJ5CisgIC8vIHRvIGNsZWFuIHRoZW0gdXAuCisg
IC8vIEZJWE1FOiBTd2l0Y2ggdG8gU2xpbSBSZWFkZXIvV3JpdGVyIChTUlcpIExvY2tzLCB3aGlj
aCByZXF1aXJlcworICAvLyBub3RoaW5nIHRvIGNsZWFuIGl0IHVwIGJ1dCBpcyBhdmFpbGFibGUg
b25seSBvbiBWaXN0YSBhbmQgbGF0ZXIuCisgIC8vIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29t
L2VuLXVzL3dpbmRvd3MvZGVza3RvcC9TeW5jL3NsaW0tcmVhZGVyLXdyaXRlci0tc3J3LS1sb2Nr
cworICBpZiAodHlwZV8gPT0ga0R5bmFtaWMpIHsKKyAgICA6OkRlbGV0ZUNyaXRpY2FsU2VjdGlv
bihjcml0aWNhbF9zZWN0aW9uXyk7CisgICAgZGVsZXRlIGNyaXRpY2FsX3NlY3Rpb25fOworICAg
IGNyaXRpY2FsX3NlY3Rpb25fID0gTlVMTDsKKyAgfQorfQorCit2b2lkIE11dGV4OjpMb2NrKCkg
eworICBUaHJlYWRTYWZlTGF6eUluaXQoKTsKKyAgOjpFbnRlckNyaXRpY2FsU2VjdGlvbihjcml0
aWNhbF9zZWN0aW9uXyk7CisgIG93bmVyX3RocmVhZF9pZF8gPSA6OkdldEN1cnJlbnRUaHJlYWRJ
ZCgpOworfQorCit2b2lkIE11dGV4OjpVbmxvY2soKSB7CisgIFRocmVhZFNhZmVMYXp5SW5pdCgp
OworICAvLyBXZSBkb24ndCBwcm90ZWN0IHdyaXRpbmcgdG8gb3duZXJfdGhyZWFkX2lkXyBoZXJl
LCBhcyBpdCdzIHRoZQorICAvLyBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhh
dCB0aGUgY3VycmVudCB0aHJlYWQgaG9sZHMgdGhlCisgIC8vIG11dGV4IHdoZW4gdGhpcyBpcyBj
YWxsZWQuCisgIG93bmVyX3RocmVhZF9pZF8gPSAwOworICA6OkxlYXZlQ3JpdGljYWxTZWN0aW9u
KGNyaXRpY2FsX3NlY3Rpb25fKTsKK30KKworLy8gRG9lcyBub3RoaW5nIGlmIHRoZSBjdXJyZW50
IHRocmVhZCBob2xkcyB0aGUgbXV0ZXguIE90aGVyd2lzZSwgY3Jhc2hlcworLy8gd2l0aCBoaWdo
IHByb2JhYmlsaXR5Lgordm9pZCBNdXRleDo6QXNzZXJ0SGVsZCgpIHsKKyAgVGhyZWFkU2FmZUxh
enlJbml0KCk7CisgIEdURVNUX0NIRUNLXyhvd25lcl90aHJlYWRfaWRfID09IDo6R2V0Q3VycmVu
dFRocmVhZElkKCkpCisgICAgICA8PCAiVGhlIGN1cnJlbnQgdGhyZWFkIGlzIG5vdCBob2xkaW5n
IHRoZSBtdXRleCBAIiA8PCB0aGlzOworfQorCituYW1lc3BhY2UgeworCisvLyBVc2UgdGhlIFJB
SUkgaWRpb20gdG8gZmxhZyBtZW0gYWxsb2NzIHRoYXQgYXJlIGludGVudGlvbmFsbHkgbmV2ZXIK
Ky8vIGRlYWxsb2NhdGVkLiBUaGUgbW90aXZhdGlvbiBpcyB0byBzaWxlbmNlIHRoZSBmYWxzZSBw
b3NpdGl2ZSBtZW0gbGVha3MKKy8vIHRoYXQgYXJlIHJlcG9ydGVkIGJ5IHRoZSBkZWJ1ZyB2ZXJz
aW9uIG9mIE1TJ3MgQ1JUIHdoaWNoIGNhbiBvbmx5IGRldGVjdAorLy8gaWYgYW4gYWxsb2MgaXMg
bWlzc2luZyBhIG1hdGNoaW5nIGRlYWxsb2NhdGlvbi4KKy8vIEV4YW1wbGU6CisvLyAgICBNZW1v
cnlJc05vdERlYWxsb2NhdGVkIG1lbW9yeV9pc19ub3RfZGVhbGxvY2F0ZWQ7CisvLyAgICBjcml0
aWNhbF9zZWN0aW9uXyA9IG5ldyBDUklUSUNBTF9TRUNUSU9OOworLy8KK2NsYXNzIE1lbW9yeUlz
Tm90RGVhbGxvY2F0ZWQKK3sKKyBwdWJsaWM6CisgIE1lbW9yeUlzTm90RGVhbGxvY2F0ZWQoKSA6
IG9sZF9jcnRkYmdfZmxhZ18oMCkgeworI2lmZGVmIF9NU0NfVkVSCisgICAgb2xkX2NydGRiZ19m
bGFnXyA9IF9DcnRTZXREYmdGbGFnKF9DUlREQkdfUkVQT1JUX0ZMQUcpOworICAgIC8vIFNldCBo
ZWFwIGFsbG9jYXRpb24gYmxvY2sgdHlwZSB0byBfSUdOT1JFX0JMT0NLIHNvIHRoYXQgTVMgZGVi
dWcgQ1JUCisgICAgLy8gZG9lc24ndCByZXBvcnQgbWVtIGxlYWsgaWYgdGhlcmUncyBubyBtYXRj
aGluZyBkZWFsbG9jYXRpb24uCisgICAgX0NydFNldERiZ0ZsYWcob2xkX2NydGRiZ19mbGFnXyAm
IH5fQ1JUREJHX0FMTE9DX01FTV9ERik7CisjZW5kaWYgIC8vICBfTVNDX1ZFUgorICB9CisKKyAg
fk1lbW9yeUlzTm90RGVhbGxvY2F0ZWQoKSB7CisjaWZkZWYgX01TQ19WRVIKKyAgICAvLyBSZXN0
b3JlIHRoZSBvcmlnaW5hbCBfQ1JUREJHX0FMTE9DX01FTV9ERiBmbGFnCisgICAgX0NydFNldERi
Z0ZsYWcob2xkX2NydGRiZ19mbGFnXyk7CisjZW5kaWYgIC8vICBfTVNDX1ZFUgorICB9CisKKyBw
cml2YXRlOgorICBpbnQgb2xkX2NydGRiZ19mbGFnXzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZ
X0FORF9BU1NJR05fKE1lbW9yeUlzTm90RGVhbGxvY2F0ZWQpOworfTsKKworfSAgLy8gbmFtZXNw
YWNlCisKKy8vIEluaXRpYWxpemVzIG93bmVyX3RocmVhZF9pZF8gYW5kIGNyaXRpY2FsX3NlY3Rp
b25fIGluIHN0YXRpYyBtdXRleGVzLgordm9pZCBNdXRleDo6VGhyZWFkU2FmZUxhenlJbml0KCkg
eworICAvLyBEeW5hbWljIG11dGV4ZXMgYXJlIGluaXRpYWxpemVkIGluIHRoZSBjb25zdHJ1Y3Rv
ci4KKyAgaWYgKHR5cGVfID09IGtTdGF0aWMpIHsKKyAgICBzd2l0Y2ggKAorICAgICAgICA6Oklu
dGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKCZjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhhc2VfLCAx
TCwgMEwpKSB7CisgICAgICBjYXNlIDA6CisgICAgICAgIC8vIElmIGNyaXRpY2FsX3NlY3Rpb25f
aW5pdF9waGFzZV8gd2FzIDAgYmVmb3JlIHRoZSBleGNoYW5nZSwgd2UKKyAgICAgICAgLy8gYXJl
IHRoZSBmaXJzdCB0byB0ZXN0IGl0IGFuZCBuZWVkIHRvIHBlcmZvcm0gdGhlIGluaXRpYWxpemF0
aW9uLgorICAgICAgICBvd25lcl90aHJlYWRfaWRfID0gMDsKKyAgICAgICAgeworICAgICAgICAg
IC8vIFVzZSBSQUlJIHRvIGZsYWcgdGhhdCBmb2xsb3dpbmcgbWVtIGFsbG9jIGlzIG5ldmVyIGRl
YWxsb2NhdGVkLgorICAgICAgICAgIE1lbW9yeUlzTm90RGVhbGxvY2F0ZWQgbWVtb3J5X2lzX25v
dF9kZWFsbG9jYXRlZDsKKyAgICAgICAgICBjcml0aWNhbF9zZWN0aW9uXyA9IG5ldyBDUklUSUNB
TF9TRUNUSU9OOworICAgICAgICB9CisgICAgICAgIDo6SW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlv
bihjcml0aWNhbF9zZWN0aW9uXyk7CisgICAgICAgIC8vIFVwZGF0ZXMgdGhlIGNyaXRpY2FsX3Nl
Y3Rpb25faW5pdF9waGFzZV8gdG8gMiB0byBzaWduYWwKKyAgICAgICAgLy8gaW5pdGlhbGl6YXRp
b24gY29tcGxldGUuCisgICAgICAgIEdURVNUX0NIRUNLXyg6OkludGVybG9ja2VkQ29tcGFyZUV4
Y2hhbmdlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAmY3JpdGljYWxfc2VjdGlvbl9pbml0
X3BoYXNlXywgMkwsIDFMKSA9PQorICAgICAgICAgICAgICAgICAgICAgIDFMKTsKKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIDE6CisgICAgICAgIC8vIFNvbWVib2R5IGVsc2UgaXMgYWxyZWFk
eSBpbml0aWFsaXppbmcgdGhlIG11dGV4OyBzcGluIHVudGlsIHRoZXkKKyAgICAgICAgLy8gYXJl
IGRvbmUuCisgICAgICAgIHdoaWxlICg6OkludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKCZjcml0
aWNhbF9zZWN0aW9uX2luaXRfcGhhc2VfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMkwpICE9IDJMKSB7CisgICAgICAgICAgLy8gUG9zc2libHkgeWllbGRzIHRoZSByZXN0
IG9mIHRoZSB0aHJlYWQncyB0aW1lIHNsaWNlIHRvIG90aGVyCisgICAgICAgICAgLy8gdGhyZWFk
cy4KKyAgICAgICAgICA6OlNsZWVwKDApOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisg
ICAgICBjYXNlIDI6CisgICAgICAgIGJyZWFrOyAgLy8gVGhlIG11dGV4IGlzIGFscmVhZHkgaW5p
dGlhbGl6ZWQgYW5kIHJlYWR5IGZvciB1c2UuCisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIEdU
RVNUX0NIRUNLXyhmYWxzZSkKKyAgICAgICAgICAgIDw8ICJVbmV4cGVjdGVkIHZhbHVlIG9mIGNy
aXRpY2FsX3NlY3Rpb25faW5pdF9waGFzZV8gIgorICAgICAgICAgICAgPDwgIndoaWxlIGluaXRp
YWxpemluZyBhIHN0YXRpYyBtdXRleC4iOworICAgIH0KKyAgfQorfQorCituYW1lc3BhY2Ugewor
CitjbGFzcyBUaHJlYWRXaXRoUGFyYW1TdXBwb3J0IDogcHVibGljIFRocmVhZFdpdGhQYXJhbUJh
c2UgeworIHB1YmxpYzoKKyAgc3RhdGljIEhBTkRMRSBDcmVhdGVUaHJlYWQoUnVubmFibGUqIHJ1
bm5hYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24qIHRocmVh
ZF9jYW5fc3RhcnQpIHsKKyAgICBUaHJlYWRNYWluUGFyYW0qIHBhcmFtID0gbmV3IFRocmVhZE1h
aW5QYXJhbShydW5uYWJsZSwgdGhyZWFkX2Nhbl9zdGFydCk7CisgICAgRFdPUkQgdGhyZWFkX2lk
OworICAgIC8vIEZJWE1FOiBDb25zaWRlciB0byB1c2UgX2JlZ2ludGhyZWFkZXggaW5zdGVhZC4K
KyAgICBIQU5ETEUgdGhyZWFkX2hhbmRsZSA9IDo6Q3JlYXRlVGhyZWFkKAorICAgICAgICBOVUxM
LCAgICAvLyBEZWZhdWx0IHNlY3VyaXR5LgorICAgICAgICAwLCAgICAgICAvLyBEZWZhdWx0IHN0
YWNrIHNpemUuCisgICAgICAgICZUaHJlYWRXaXRoUGFyYW1TdXBwb3J0OjpUaHJlYWRNYWluLAor
ICAgICAgICBwYXJhbSwgICAvLyBQYXJhbWV0ZXIgdG8gVGhyZWFkTWFpblN0YXRpYworICAgICAg
ICAweDAsICAgICAvLyBEZWZhdWx0IGNyZWF0aW9uIGZsYWdzLgorICAgICAgICAmdGhyZWFkX2lk
KTsgIC8vIE5lZWQgYSB2YWxpZCBwb2ludGVyIGZvciB0aGUgY2FsbCB0byB3b3JrIHVuZGVyIFdp
bjk4LgorICAgIEdURVNUX0NIRUNLXyh0aHJlYWRfaGFuZGxlICE9IE5VTEwpIDw8ICJDcmVhdGVU
aHJlYWQgZmFpbGVkIHdpdGggZXJyb3IgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDw8IDo6R2V0TGFzdEVycm9yKCkgPDwgIi4iOworICAgIGlmICh0aHJlYWRfaGFu
ZGxlID09IE5VTEwpIHsKKyAgICAgIGRlbGV0ZSBwYXJhbTsKKyAgICB9CisgICAgcmV0dXJuIHRo
cmVhZF9oYW5kbGU7CisgIH0KKworIHByaXZhdGU6CisgIHN0cnVjdCBUaHJlYWRNYWluUGFyYW0g
eworICAgIFRocmVhZE1haW5QYXJhbShSdW5uYWJsZSogcnVubmFibGUsIE5vdGlmaWNhdGlvbiog
dGhyZWFkX2Nhbl9zdGFydCkKKyAgICAgICAgOiBydW5uYWJsZV8ocnVubmFibGUpLAorICAgICAg
ICAgIHRocmVhZF9jYW5fc3RhcnRfKHRocmVhZF9jYW5fc3RhcnQpIHsKKyAgICB9CisgICAgc2Nv
cGVkX3B0cjxSdW5uYWJsZT4gcnVubmFibGVfOworICAgIC8vIERvZXMgbm90IG93bi4KKyAgICBO
b3RpZmljYXRpb24qIHRocmVhZF9jYW5fc3RhcnRfOworICB9OworCisgIHN0YXRpYyBEV09SRCBX
SU5BUEkgVGhyZWFkTWFpbih2b2lkKiBwdHIpIHsKKyAgICAvLyBUcmFuc2ZlcnMgb3duZXJzaGlw
LgorICAgIHNjb3BlZF9wdHI8VGhyZWFkTWFpblBhcmFtPiBwYXJhbShzdGF0aWNfY2FzdDxUaHJl
YWRNYWluUGFyYW0qPihwdHIpKTsKKyAgICBpZiAocGFyYW0tPnRocmVhZF9jYW5fc3RhcnRfICE9
IE5VTEwpCisgICAgICBwYXJhbS0+dGhyZWFkX2Nhbl9zdGFydF8tPldhaXRGb3JOb3RpZmljYXRp
b24oKTsKKyAgICBwYXJhbS0+cnVubmFibGVfLT5SdW4oKTsKKyAgICByZXR1cm4gMDsKKyAgfQor
CisgIC8vIFByb2hpYml0IGluc3RhbnRpYXRpb24uCisgIFRocmVhZFdpdGhQYXJhbVN1cHBvcnQo
KTsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRocmVhZFdpdGhQYXJhbVN1
cHBvcnQpOworfTsKKworfSAgLy8gbmFtZXNwYWNlCisKK1RocmVhZFdpdGhQYXJhbUJhc2U6OlRo
cmVhZFdpdGhQYXJhbUJhc2UoUnVubmFibGUgKnJ1bm5hYmxlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24qIHRocmVhZF9jYW5fc3RhcnQpCisg
ICAgICA6IHRocmVhZF8oVGhyZWFkV2l0aFBhcmFtU3VwcG9ydDo6Q3JlYXRlVGhyZWFkKHJ1bm5h
YmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aHJlYWRfY2FuX3N0YXJ0KSkgeworfQorCitUaHJlYWRXaXRoUGFyYW1CYXNlOjp+VGhyZWFk
V2l0aFBhcmFtQmFzZSgpIHsKKyAgSm9pbigpOworfQorCit2b2lkIFRocmVhZFdpdGhQYXJhbUJh
c2U6OkpvaW4oKSB7CisgIEdURVNUX0NIRUNLXyg6OldhaXRGb3JTaW5nbGVPYmplY3QodGhyZWFk
Xy5HZXQoKSwgSU5GSU5JVEUpID09IFdBSVRfT0JKRUNUXzApCisgICAgICA8PCAiRmFpbGVkIHRv
IGpvaW4gdGhlIHRocmVhZCB3aXRoIGVycm9yICIgPDwgOjpHZXRMYXN0RXJyb3IoKSA8PCAiLiI7
Cit9CisKKy8vIE1hcHMgYSB0aHJlYWQgdG8gYSBzZXQgb2YgVGhyZWFkSWRUb1RocmVhZExvY2Fs
cyB0aGF0IGhhdmUgdmFsdWVzCisvLyBpbnN0YW50aWF0ZWQgb24gdGhhdCB0aHJlYWQgYW5kIG5v
dGlmaWVzIHRoZW0gd2hlbiB0aGUgdGhyZWFkIGV4aXRzLiAgQQorLy8gVGhyZWFkTG9jYWwgaW5z
dGFuY2UgaXMgZXhwZWN0ZWQgdG8gcGVyc2lzdCB1bnRpbCBhbGwgdGhyZWFkcyBpdCBoYXMKKy8v
IHZhbHVlcyBvbiBoYXZlIHRlcm1pbmF0ZWQuCitjbGFzcyBUaHJlYWRMb2NhbFJlZ2lzdHJ5SW1w
bCB7CisgcHVibGljOgorICAvLyBSZWdpc3RlcnMgdGhyZWFkX2xvY2FsX2luc3RhbmNlIGFzIGhh
dmluZyB2YWx1ZSBvbiB0aGUgY3VycmVudCB0aHJlYWQuCisgIC8vIFJldHVybnMgYSB2YWx1ZSB0
aGF0IGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IHRoZSB0aHJlYWQgZnJvbSBvdGhlciB0aHJlYWRz
LgorICBzdGF0aWMgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UqIEdldFZhbHVlT25DdXJyZW50
VGhyZWFkKAorICAgICAgY29uc3QgVGhyZWFkTG9jYWxCYXNlKiB0aHJlYWRfbG9jYWxfaW5zdGFu
Y2UpIHsKKyAgICBEV09SRCBjdXJyZW50X3RocmVhZCA9IDo6R2V0Q3VycmVudFRocmVhZElkKCk7
CisgICAgTXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7CisgICAgVGhyZWFkSWRUb1RocmVhZExvY2Fs
cyogY29uc3QgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMgPQorICAgICAgICBHZXRUaHJlYWRMb2Nh
bHNNYXBMb2NrZWQoKTsKKyAgICBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzOjppdGVyYXRvciB0aHJl
YWRfbG9jYWxfcG9zID0KKyAgICAgICAgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmZpbmQoY3Vy
cmVudF90aHJlYWQpOworICAgIGlmICh0aHJlYWRfbG9jYWxfcG9zID09IHRocmVhZF90b190aHJl
YWRfbG9jYWxzLT5lbmQoKSkgeworICAgICAgdGhyZWFkX2xvY2FsX3BvcyA9IHRocmVhZF90b190
aHJlYWRfbG9jYWxzLT5pbnNlcnQoCisgICAgICAgICAgc3RkOjptYWtlX3BhaXIoY3VycmVudF90
aHJlYWQsIFRocmVhZExvY2FsVmFsdWVzKCkpKS5maXJzdDsKKyAgICAgIFN0YXJ0V2F0Y2hlclRo
cmVhZEZvcihjdXJyZW50X3RocmVhZCk7CisgICAgfQorICAgIFRocmVhZExvY2FsVmFsdWVzJiB0
aHJlYWRfbG9jYWxfdmFsdWVzID0gdGhyZWFkX2xvY2FsX3Bvcy0+c2Vjb25kOworICAgIFRocmVh
ZExvY2FsVmFsdWVzOjppdGVyYXRvciB2YWx1ZV9wb3MgPQorICAgICAgICB0aHJlYWRfbG9jYWxf
dmFsdWVzLmZpbmQodGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKKyAgICBpZiAodmFsdWVfcG9zID09
IHRocmVhZF9sb2NhbF92YWx1ZXMuZW5kKCkpIHsKKyAgICAgIHZhbHVlX3BvcyA9CisgICAgICAg
ICAgdGhyZWFkX2xvY2FsX3ZhbHVlcworICAgICAgICAgICAgICAuaW5zZXJ0KHN0ZDo6bWFrZV9w
YWlyKAorICAgICAgICAgICAgICAgICAgdGhyZWFkX2xvY2FsX2luc3RhbmNlLAorICAgICAgICAg
ICAgICAgICAgbGlua2VkX3B0cjxUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZT4oCisgICAgICAg
ICAgICAgICAgICAgICAgdGhyZWFkX2xvY2FsX2luc3RhbmNlLT5OZXdWYWx1ZUZvckN1cnJlbnRU
aHJlYWQoKSkpKQorICAgICAgICAgICAgICAuZmlyc3Q7CisgICAgfQorICAgIHJldHVybiB2YWx1
ZV9wb3MtPnNlY29uZC5nZXQoKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIE9uVGhyZWFkTG9jYWxE
ZXN0cm95ZWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9pbnN0
YW5jZSkgeworICAgIHN0ZDo6dmVjdG9yPGxpbmtlZF9wdHI8VGhyZWFkTG9jYWxWYWx1ZUhvbGRl
ckJhc2U+ID4gdmFsdWVfaG9sZGVyczsKKyAgICAvLyBDbGVhbiB1cCB0aGUgVGhyZWFkTG9jYWxW
YWx1ZXMgZGF0YSBzdHJ1Y3R1cmUgd2hpbGUgaG9sZGluZyB0aGUgbG9jaywgYnV0CisgICAgLy8g
ZGVmZXIgdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZXMu
CisgICAgeworICAgICAgTXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7CisgICAgICBUaHJlYWRJZFRv
VGhyZWFkTG9jYWxzKiBjb25zdCB0aHJlYWRfdG9fdGhyZWFkX2xvY2FscyA9CisgICAgICAgICAg
R2V0VGhyZWFkTG9jYWxzTWFwTG9ja2VkKCk7CisgICAgICBmb3IgKFRocmVhZElkVG9UaHJlYWRM
b2NhbHM6Oml0ZXJhdG9yIGl0ID0KKyAgICAgICAgICB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+
YmVnaW4oKTsKKyAgICAgICAgICBpdCAhPSB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+ZW5kKCk7
CisgICAgICAgICAgKytpdCkgeworICAgICAgICBUaHJlYWRMb2NhbFZhbHVlcyYgdGhyZWFkX2xv
Y2FsX3ZhbHVlcyA9IGl0LT5zZWNvbmQ7CisgICAgICAgIFRocmVhZExvY2FsVmFsdWVzOjppdGVy
YXRvciB2YWx1ZV9wb3MgPQorICAgICAgICAgICAgdGhyZWFkX2xvY2FsX3ZhbHVlcy5maW5kKHRo
cmVhZF9sb2NhbF9pbnN0YW5jZSk7CisgICAgICAgIGlmICh2YWx1ZV9wb3MgIT0gdGhyZWFkX2xv
Y2FsX3ZhbHVlcy5lbmQoKSkgeworICAgICAgICAgIHZhbHVlX2hvbGRlcnMucHVzaF9iYWNrKHZh
bHVlX3Bvcy0+c2Vjb25kKTsKKyAgICAgICAgICB0aHJlYWRfbG9jYWxfdmFsdWVzLmVyYXNlKHZh
bHVlX3Bvcyk7CisgICAgICAgICAgLy8gVGhpcyAnaWYnIGNhbiBvbmx5IGJlIHN1Y2Nlc3NmdWwg
YXQgbW9zdCBvbmNlLCBzbyB0aGVvcmV0aWNhbGx5IHdlCisgICAgICAgICAgLy8gY291bGQgYnJl
YWsgb3V0IG9mIHRoZSBsb29wIGhlcmUsIGJ1dCB3ZSBkb24ndCBib3RoZXIgZG9pbmcgc28uCisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgLy8gT3V0c2lkZSB0aGUgbG9jaywgbGV0IHRo
ZSBkZXN0cnVjdG9yIGZvciAndmFsdWVfaG9sZGVycycgZGVhbGxvY2F0ZSB0aGUKKyAgICAvLyBU
aHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZXMuCisgIH0KKworICBzdGF0aWMgdm9pZCBPblRocmVh
ZEV4aXQoRFdPUkQgdGhyZWFkX2lkKSB7CisgICAgR1RFU1RfQ0hFQ0tfKHRocmVhZF9pZCAhPSAw
KSA8PCA6OkdldExhc3RFcnJvcigpOworICAgIHN0ZDo6dmVjdG9yPGxpbmtlZF9wdHI8VGhyZWFk
TG9jYWxWYWx1ZUhvbGRlckJhc2U+ID4gdmFsdWVfaG9sZGVyczsKKyAgICAvLyBDbGVhbiB1cCB0
aGUgVGhyZWFkSWRUb1RocmVhZExvY2FscyBkYXRhIHN0cnVjdHVyZSB3aGlsZSBob2xkaW5nIHRo
ZQorICAgIC8vIGxvY2ssIGJ1dCBkZWZlciB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhlIFRocmVhZExv
Y2FsVmFsdWVIb2xkZXJCYXNlcy4KKyAgICB7CisgICAgICBNdXRleExvY2sgbG9jaygmbXV0ZXhf
KTsKKyAgICAgIFRocmVhZElkVG9UaHJlYWRMb2NhbHMqIGNvbnN0IHRocmVhZF90b190aHJlYWRf
bG9jYWxzID0KKyAgICAgICAgICBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKTsKKyAgICAgIFRo
cmVhZElkVG9UaHJlYWRMb2NhbHM6Oml0ZXJhdG9yIHRocmVhZF9sb2NhbF9wb3MgPQorICAgICAg
ICAgIHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5maW5kKHRocmVhZF9pZCk7CisgICAgICBpZiAo
dGhyZWFkX2xvY2FsX3BvcyAhPSB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+ZW5kKCkpIHsKKyAg
ICAgICAgVGhyZWFkTG9jYWxWYWx1ZXMmIHRocmVhZF9sb2NhbF92YWx1ZXMgPSB0aHJlYWRfbG9j
YWxfcG9zLT5zZWNvbmQ7CisgICAgICAgIGZvciAoVGhyZWFkTG9jYWxWYWx1ZXM6Oml0ZXJhdG9y
IHZhbHVlX3BvcyA9CisgICAgICAgICAgICB0aHJlYWRfbG9jYWxfdmFsdWVzLmJlZ2luKCk7Cisg
ICAgICAgICAgICB2YWx1ZV9wb3MgIT0gdGhyZWFkX2xvY2FsX3ZhbHVlcy5lbmQoKTsKKyAgICAg
ICAgICAgICsrdmFsdWVfcG9zKSB7CisgICAgICAgICAgdmFsdWVfaG9sZGVycy5wdXNoX2JhY2so
dmFsdWVfcG9zLT5zZWNvbmQpOworICAgICAgICB9CisgICAgICAgIHRocmVhZF90b190aHJlYWRf
bG9jYWxzLT5lcmFzZSh0aHJlYWRfbG9jYWxfcG9zKTsKKyAgICAgIH0KKyAgICB9CisgICAgLy8g
T3V0c2lkZSB0aGUgbG9jaywgbGV0IHRoZSBkZXN0cnVjdG9yIGZvciAndmFsdWVfaG9sZGVycycg
ZGVhbGxvY2F0ZSB0aGUKKyAgICAvLyBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZXMuCisgIH0K
KworIHByaXZhdGU6CisgIC8vIEluIGEgcGFydGljdWxhciB0aHJlYWQsIG1hcHMgYSBUaHJlYWRM
b2NhbCBvYmplY3QgdG8gaXRzIHZhbHVlLgorICB0eXBlZGVmIHN0ZDo6bWFwPGNvbnN0IFRocmVh
ZExvY2FsQmFzZSosCisgICAgICAgICAgICAgICAgICAgbGlua2VkX3B0cjxUaHJlYWRMb2NhbFZh
bHVlSG9sZGVyQmFzZT4gPiBUaHJlYWRMb2NhbFZhbHVlczsKKyAgLy8gU3RvcmVzIGFsbCBUaHJl
YWRJZFRvVGhyZWFkTG9jYWxzIGhhdmluZyB2YWx1ZXMgaW4gYSB0aHJlYWQsIGluZGV4ZWQgYnkK
KyAgLy8gdGhyZWFkJ3MgSUQuCisgIHR5cGVkZWYgc3RkOjptYXA8RFdPUkQsIFRocmVhZExvY2Fs
VmFsdWVzPiBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzOworCisgIC8vIEhvbGRzIHRoZSB0aHJlYWQg
aWQgYW5kIHRocmVhZCBoYW5kbGUgdGhhdCB3ZSBwYXNzIGZyb20KKyAgLy8gU3RhcnRXYXRjaGVy
VGhyZWFkRm9yIHRvIFdhdGNoZXJUaHJlYWRGdW5jLgorICB0eXBlZGVmIHN0ZDo6cGFpcjxEV09S
RCwgSEFORExFPiBUaHJlYWRJZEFuZEhhbmRsZTsKKworICBzdGF0aWMgdm9pZCBTdGFydFdhdGNo
ZXJUaHJlYWRGb3IoRFdPUkQgdGhyZWFkX2lkKSB7CisgICAgLy8gVGhlIHJldHVybmVkIGhhbmRs
ZSB3aWxsIGJlIGtlcHQgaW4gdGhyZWFkX21hcCBhbmQgY2xvc2VkIGJ5CisgICAgLy8gd2F0Y2hl
cl90aHJlYWQgaW4gV2F0Y2hlclRocmVhZEZ1bmMuCisgICAgSEFORExFIHRocmVhZCA9IDo6T3Bl
blRocmVhZChTWU5DSFJPTklaRSB8IFRIUkVBRF9RVUVSWV9JTkZPUk1BVElPTiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhyZWFkX2lkKTsKKyAgICBHVEVTVF9DSEVDS18odGhyZWFkICE9IE5VTEwpOwor
ICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBhIHZhbGlkIHRocmVhZCBJRCBwb2ludGVyIGludG8gQ3Jl
YXRlVGhyZWFkIGZvciBpdAorICAgIC8vIHRvIHdvcmsgY29ycmVjdGx5IHVuZGVyIFdpbjk4Lgor
ICAgIERXT1JEIHdhdGNoZXJfdGhyZWFkX2lkOworICAgIEhBTkRMRSB3YXRjaGVyX3RocmVhZCA9
IDo6Q3JlYXRlVGhyZWFkKAorICAgICAgICBOVUxMLCAgIC8vIERlZmF1bHQgc2VjdXJpdHkuCisg
ICAgICAgIDAsICAgICAgLy8gRGVmYXVsdCBzdGFjayBzaXplCisgICAgICAgICZUaHJlYWRMb2Nh
bFJlZ2lzdHJ5SW1wbDo6V2F0Y2hlclRocmVhZEZ1bmMsCisgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8TFBWT0lEPihuZXcgVGhyZWFkSWRBbmRIYW5kbGUodGhyZWFkX2lkLCB0aHJlYWQpKSwKKyAg
ICAgICAgQ1JFQVRFX1NVU1BFTkRFRCwKKyAgICAgICAgJndhdGNoZXJfdGhyZWFkX2lkKTsKKyAg
ICBHVEVTVF9DSEVDS18od2F0Y2hlcl90aHJlYWQgIT0gTlVMTCk7CisgICAgLy8gR2l2ZSB0aGUg
d2F0Y2hlciB0aHJlYWQgdGhlIHNhbWUgcHJpb3JpdHkgYXMgb3VycyB0byBhdm9pZCBiZWluZwor
ICAgIC8vIGJsb2NrZWQgYnkgaXQuCisgICAgOjpTZXRUaHJlYWRQcmlvcml0eSh3YXRjaGVyX3Ro
cmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6R2V0VGhyZWFkUHJpb3JpdHkoOjpHZXRD
dXJyZW50VGhyZWFkKCkpKTsKKyAgICA6OlJlc3VtZVRocmVhZCh3YXRjaGVyX3RocmVhZCk7Cisg
ICAgOjpDbG9zZUhhbmRsZSh3YXRjaGVyX3RocmVhZCk7CisgIH0KKworICAvLyBNb25pdG9ycyBl
eGl0IGZyb20gYSBnaXZlbiB0aHJlYWQgYW5kIG5vdGlmaWVzIHRob3NlCisgIC8vIFRocmVhZElk
VG9UaHJlYWRMb2NhbHMgYWJvdXQgdGhyZWFkIHRlcm1pbmF0aW9uLgorICBzdGF0aWMgRFdPUkQg
V0lOQVBJIFdhdGNoZXJUaHJlYWRGdW5jKExQVk9JRCBwYXJhbSkgeworICAgIGNvbnN0IFRocmVh
ZElkQW5kSGFuZGxlKiB0YWggPQorICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IFRocmVh
ZElkQW5kSGFuZGxlKj4ocGFyYW0pOworICAgIEdURVNUX0NIRUNLXygKKyAgICAgICAgOjpXYWl0
Rm9yU2luZ2xlT2JqZWN0KHRhaC0+c2Vjb25kLCBJTkZJTklURSkgPT0gV0FJVF9PQkpFQ1RfMCk7
CisgICAgT25UaHJlYWRFeGl0KHRhaC0+Zmlyc3QpOworICAgIDo6Q2xvc2VIYW5kbGUodGFoLT5z
ZWNvbmQpOworICAgIGRlbGV0ZSB0YWg7CisgICAgcmV0dXJuIDA7CisgIH0KKworICAvLyBSZXR1
cm5zIG1hcCBvZiB0aHJlYWQgbG9jYWwgaW5zdGFuY2VzLgorICBzdGF0aWMgVGhyZWFkSWRUb1Ro
cmVhZExvY2FscyogR2V0VGhyZWFkTG9jYWxzTWFwTG9ja2VkKCkgeworICAgIG11dGV4Xy5Bc3Nl
cnRIZWxkKCk7CisgICAgTWVtb3J5SXNOb3REZWFsbG9jYXRlZCBtZW1vcnlfaXNfbm90X2RlYWxs
b2NhdGVkOworICAgIHN0YXRpYyBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzKiBtYXAgPSBuZXcgVGhy
ZWFkSWRUb1RocmVhZExvY2FscygpOworICAgIHJldHVybiBtYXA7CisgIH0KKworICAvLyBQcm90
ZWN0cyBhY2Nlc3MgdG8gR2V0VGhyZWFkTG9jYWxzTWFwTG9ja2VkKCkgYW5kIGl0cyByZXR1cm4g
dmFsdWUuCisgIHN0YXRpYyBNdXRleCBtdXRleF87CisgIC8vIFByb3RlY3RzIGFjY2VzcyB0byBH
ZXRUaHJlYWRNYXBMb2NrZWQoKSBhbmQgaXRzIHJldHVybiB2YWx1ZS4KKyAgc3RhdGljIE11dGV4
IHRocmVhZF9tYXBfbXV0ZXhfOworfTsKKworTXV0ZXggVGhyZWFkTG9jYWxSZWdpc3RyeUltcGw6
Om11dGV4XyhNdXRleDo6a1N0YXRpY011dGV4KTsKK011dGV4IFRocmVhZExvY2FsUmVnaXN0cnlJ
bXBsOjp0aHJlYWRfbWFwX211dGV4XyhNdXRleDo6a1N0YXRpY011dGV4KTsKKworVGhyZWFkTG9j
YWxWYWx1ZUhvbGRlckJhc2UqIFRocmVhZExvY2FsUmVnaXN0cnk6OkdldFZhbHVlT25DdXJyZW50
VGhyZWFkKAorICAgICAgY29uc3QgVGhyZWFkTG9jYWxCYXNlKiB0aHJlYWRfbG9jYWxfaW5zdGFu
Y2UpIHsKKyAgcmV0dXJuIFRocmVhZExvY2FsUmVnaXN0cnlJbXBsOjpHZXRWYWx1ZU9uQ3VycmVu
dFRocmVhZCgKKyAgICAgIHRocmVhZF9sb2NhbF9pbnN0YW5jZSk7Cit9CisKK3ZvaWQgVGhyZWFk
TG9jYWxSZWdpc3RyeTo6T25UaHJlYWRMb2NhbERlc3Ryb3llZCgKKyAgICAgIGNvbnN0IFRocmVh
ZExvY2FsQmFzZSogdGhyZWFkX2xvY2FsX2luc3RhbmNlKSB7CisgIFRocmVhZExvY2FsUmVnaXN0
cnlJbXBsOjpPblRocmVhZExvY2FsRGVzdHJveWVkKHRocmVhZF9sb2NhbF9pbnN0YW5jZSk7Cit9
CisKKyNlbmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFEU0FGRSAmJiBHVEVTVF9PU19XSU5ET1dTCiAK
ICNpZiBHVEVTVF9VU0VTX1BPU0lYX1JFCiAKQEAgLTE4MCwyMCArNjg4LDIwIEBAIGJvb2wgSXNJ
blNldChjaGFyIGNoLCBjb25zdCBjaGFyKiBzdHIpIHsKIC8vIFJldHVybnMgdHJ1ZSBpZmYgY2gg
YmVsb25ncyB0byB0aGUgZ2l2ZW4gY2xhc3NpZmljYXRpb24uICBVbmxpa2UKIC8vIHNpbWlsYXIg
ZnVuY3Rpb25zIGluIDxjdHlwZS5oPiwgdGhlc2UgYXJlbid0IGFmZmVjdGVkIGJ5IHRoZQogLy8g
Y3VycmVudCBsb2NhbGUuCi1ib29sIElzRGlnaXQoY2hhciBjaCkgeyByZXR1cm4gJzAnIDw9IGNo
ICYmIGNoIDw9ICc5JzsgfQotYm9vbCBJc1B1bmN0KGNoYXIgY2gpIHsKK2Jvb2wgSXNBc2NpaURp
Z2l0KGNoYXIgY2gpIHsgcmV0dXJuICcwJyA8PSBjaCAmJiBjaCA8PSAnOSc7IH0KK2Jvb2wgSXNB
c2NpaVB1bmN0KGNoYXIgY2gpIHsKICAgcmV0dXJuIElzSW5TZXQoY2gsICJeLSFcIiMkJSYnKCkq
KywuLzo7PD0+P0BbXFxdX2B7fH1+Iik7CiB9CiBib29sIElzUmVwZWF0KGNoYXIgY2gpIHsgcmV0
dXJuIElzSW5TZXQoY2gsICI/KisiKTsgfQotYm9vbCBJc1doaXRlU3BhY2UoY2hhciBjaCkgeyBy
ZXR1cm4gSXNJblNldChjaCwgIiBcZlxuXHJcdFx2Iik7IH0KLWJvb2wgSXNXb3JkQ2hhcihjaGFy
IGNoKSB7Citib29sIElzQXNjaWlXaGl0ZVNwYWNlKGNoYXIgY2gpIHsgcmV0dXJuIElzSW5TZXQo
Y2gsICIgXGZcblxyXHRcdiIpOyB9Citib29sIElzQXNjaWlXb3JkQ2hhcihjaGFyIGNoKSB7CiAg
IHJldHVybiAoJ2EnIDw9IGNoICYmIGNoIDw9ICd6JykgfHwgKCdBJyA8PSBjaCAmJiBjaCA8PSAn
WicpIHx8CiAgICAgICAoJzAnIDw9IGNoICYmIGNoIDw9ICc5JykgfHwgY2ggPT0gJ18nOwogfQog
CiAvLyBSZXR1cm5zIHRydWUgaWZmICJcXGMiIGlzIGEgc3VwcG9ydGVkIGVzY2FwZSBzZXF1ZW5j
ZS4KIGJvb2wgSXNWYWxpZEVzY2FwZShjaGFyIGMpIHsKLSAgcmV0dXJuIChJc1B1bmN0KGMpIHx8
IElzSW5TZXQoYywgImREZm5yc1N0dndXIikpOworICByZXR1cm4gKElzQXNjaWlQdW5jdChjKSB8
fCBJc0luU2V0KGMsICJkRGZucnNTdHZ3VyIpKTsKIH0KIAogLy8gUmV0dXJucyB0cnVlIGlmZiB0
aGUgZ2l2ZW4gYXRvbSAoc3BlY2lmaWVkIGJ5IGVzY2FwZWQgYW5kIHBhdHRlcm4pCkBAIC0yMDEs
MjYgKzcwOSwyNiBAQCBib29sIElzVmFsaWRFc2NhcGUoY2hhciBjKSB7CiBib29sIEF0b21NYXRj
aGVzQ2hhcihib29sIGVzY2FwZWQsIGNoYXIgcGF0dGVybl9jaGFyLCBjaGFyIGNoKSB7CiAgIGlm
IChlc2NhcGVkKSB7ICAvLyAiXFxwIiB3aGVyZSBwIGlzIHBhdHRlcm5fY2hhci4KICAgICBzd2l0
Y2ggKHBhdHRlcm5fY2hhcikgewotICAgICAgY2FzZSAnZCc6IHJldHVybiBJc0RpZ2l0KGNoKTsK
LSAgICAgIGNhc2UgJ0QnOiByZXR1cm4gIUlzRGlnaXQoY2gpOworICAgICAgY2FzZSAnZCc6IHJl
dHVybiBJc0FzY2lpRGlnaXQoY2gpOworICAgICAgY2FzZSAnRCc6IHJldHVybiAhSXNBc2NpaURp
Z2l0KGNoKTsKICAgICAgIGNhc2UgJ2YnOiByZXR1cm4gY2ggPT0gJ1xmJzsKICAgICAgIGNhc2Ug
J24nOiByZXR1cm4gY2ggPT0gJ1xuJzsKICAgICAgIGNhc2UgJ3InOiByZXR1cm4gY2ggPT0gJ1xy
JzsKLSAgICAgIGNhc2UgJ3MnOiByZXR1cm4gSXNXaGl0ZVNwYWNlKGNoKTsKLSAgICAgIGNhc2Ug
J1MnOiByZXR1cm4gIUlzV2hpdGVTcGFjZShjaCk7CisgICAgICBjYXNlICdzJzogcmV0dXJuIElz
QXNjaWlXaGl0ZVNwYWNlKGNoKTsKKyAgICAgIGNhc2UgJ1MnOiByZXR1cm4gIUlzQXNjaWlXaGl0
ZVNwYWNlKGNoKTsKICAgICAgIGNhc2UgJ3QnOiByZXR1cm4gY2ggPT0gJ1x0JzsKICAgICAgIGNh
c2UgJ3YnOiByZXR1cm4gY2ggPT0gJ1x2JzsKLSAgICAgIGNhc2UgJ3cnOiByZXR1cm4gSXNXb3Jk
Q2hhcihjaCk7Ci0gICAgICBjYXNlICdXJzogcmV0dXJuICFJc1dvcmRDaGFyKGNoKTsKKyAgICAg
IGNhc2UgJ3cnOiByZXR1cm4gSXNBc2NpaVdvcmRDaGFyKGNoKTsKKyAgICAgIGNhc2UgJ1cnOiBy
ZXR1cm4gIUlzQXNjaWlXb3JkQ2hhcihjaCk7CiAgICAgfQotICAgIHJldHVybiBJc1B1bmN0KHBh
dHRlcm5fY2hhcikgJiYgcGF0dGVybl9jaGFyID09IGNoOworICAgIHJldHVybiBJc0FzY2lpUHVu
Y3QocGF0dGVybl9jaGFyKSAmJiBwYXR0ZXJuX2NoYXIgPT0gY2g7CiAgIH0KIAogICByZXR1cm4g
KHBhdHRlcm5fY2hhciA9PSAnLicgJiYgY2ggIT0gJ1xuJykgfHwgcGF0dGVybl9jaGFyID09IGNo
OwogfQogCiAvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBWYWxpZGF0ZVJlZ2V4KCkgdG8gZm9y
bWF0IGVycm9yIG1lc3NhZ2VzLgotU3RyaW5nIEZvcm1hdFJlZ2V4U3ludGF4RXJyb3IoY29uc3Qg
Y2hhciogcmVnZXgsIGludCBpbmRleCkgeworc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFJlZ2V4
U3ludGF4RXJyb3IoY29uc3QgY2hhciogcmVnZXgsIGludCBpbmRleCkgewogICByZXR1cm4gKE1l
c3NhZ2UoKSA8PCAiU3ludGF4IGVycm9yIGF0IGluZGV4ICIgPDwgaW5kZXgKICAgICAgICAgICA8
PCAiIGluIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24gXCIiIDw8IHJlZ2V4IDw8ICJcIjogIiku
R2V0U3RyaW5nKCk7CiB9CkBAIC0yMjksNyArNzM3LDcgQEAgU3RyaW5nIEZvcm1hdFJlZ2V4U3lu
dGF4RXJyb3IoY29uc3QgY2hhciogcmVnZXgsIGludCBpbmRleCkgewogLy8gb3RoZXJ3aXNlIHJl
dHVybnMgdHJ1ZS4KIGJvb2wgVmFsaWRhdGVSZWdleChjb25zdCBjaGFyKiByZWdleCkgewogICBp
ZiAocmVnZXggPT0gTlVMTCkgewotICAgIC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBmaXggdGhl
IHNvdXJjZSBmaWxlIGxvY2F0aW9uIGluIHRoZQorICAgIC8vIEZJWE1FOiBmaXggdGhlIHNvdXJj
ZSBmaWxlIGxvY2F0aW9uIGluIHRoZQogICAgIC8vIGFzc2VydGlvbiBmYWlsdXJlcyB0byBtYXRj
aCB3aGVyZSB0aGUgcmVnZXggaXMgdXNlZCBpbiB1c2VyCiAgICAgLy8gY29kZS4KICAgICBBRERf
RkFJTFVSRSgpIDw8ICJOVUxMIGlzIG5vdCBhIHZhbGlkIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Np
b24uIjsKQEAgLTQyMiw2ICs5MzAsMzcgQEAgdm9pZCBSRTo6SW5pdChjb25zdCBjaGFyKiByZWdl
eCkgewogCiAjZW5kaWYgIC8vIEdURVNUX1VTRVNfUE9TSVhfUkUKIAorY29uc3QgY2hhciBrVW5r
bm93bkZpbGVbXSA9ICJ1bmtub3duIGZpbGUiOworCisvLyBGb3JtYXRzIGEgc291cmNlIGZpbGUg
cGF0aCBhbmQgYSBsaW5lIG51bWJlciBhcyB0aGV5IHdvdWxkIGFwcGVhcgorLy8gaW4gYW4gZXJy
b3IgbWVzc2FnZSBmcm9tIHRoZSBjb21waWxlciB1c2VkIHRvIGNvbXBpbGUgdGhpcyBjb2RlLgor
R1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEZvcm1hdEZpbGVMb2NhdGlvbihjb25zdCBjaGFyKiBm
aWxlLCBpbnQgbGluZSkgeworICBjb25zdCBzdGQ6OnN0cmluZyBmaWxlX25hbWUoZmlsZSA9PSBO
VUxMID8ga1Vua25vd25GaWxlIDogZmlsZSk7CisKKyAgaWYgKGxpbmUgPCAwKSB7CisgICAgcmV0
dXJuIGZpbGVfbmFtZSArICI6IjsKKyAgfQorI2lmZGVmIF9NU0NfVkVSCisgIHJldHVybiBmaWxl
X25hbWUgKyAiKCIgKyBTdHJlYW1hYmxlVG9TdHJpbmcobGluZSkgKyAiKToiOworI2Vsc2UKKyAg
cmV0dXJuIGZpbGVfbmFtZSArICI6IiArIFN0cmVhbWFibGVUb1N0cmluZyhsaW5lKSArICI6IjsK
KyNlbmRpZiAgLy8gX01TQ19WRVIKK30KKworLy8gRm9ybWF0cyBhIGZpbGUgbG9jYXRpb24gZm9y
IGNvbXBpbGVyLWluZGVwZW5kZW50IFhNTCBvdXRwdXQuCisvLyBBbHRob3VnaCB0aGlzIGZ1bmN0
aW9uIGlzIG5vdCBwbGF0Zm9ybSBkZXBlbmRlbnQsIHdlIHB1dCBpdCBuZXh0IHRvCisvLyBGb3Jt
YXRGaWxlTG9jYXRpb24gaW4gb3JkZXIgdG8gY29udHJhc3QgdGhlIHR3byBmdW5jdGlvbnMuCisv
LyBOb3RlIHRoYXQgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvbigpIGRvZXMg
Tk9UIGFwcGVuZCBjb2xvbgorLy8gdG8gdGhlIGZpbGUgbG9jYXRpb24gaXQgcHJvZHVjZXMsIHVu
bGlrZSBGb3JtYXRGaWxlTG9jYXRpb24oKS4KK0dURVNUX0FQSV8gOjpzdGQ6OnN0cmluZyBGb3Jt
YXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uKAorICAgIGNvbnN0IGNoYXIqIGZpbGUs
IGludCBsaW5lKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbGVfbmFtZShmaWxlID09IE5VTEwg
PyBrVW5rbm93bkZpbGUgOiBmaWxlKTsKKworICBpZiAobGluZSA8IDApCisgICAgcmV0dXJuIGZp
bGVfbmFtZTsKKyAgZWxzZQorICAgIHJldHVybiBmaWxlX25hbWUgKyAiOiIgKyBTdHJlYW1hYmxl
VG9TdHJpbmcobGluZSk7Cit9CiAKIEdUZXN0TG9nOjpHVGVzdExvZyhHVGVzdExvZ1NldmVyaXR5
IHNldmVyaXR5LCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSkKICAgICA6IHNldmVyaXR5Xyhz
ZXZlcml0eSkgewpAQCAtNDQxLDIxICs5ODAsMTkgQEAgR1Rlc3RMb2c6On5HVGVzdExvZygpIHsK
ICAgICBwb3NpeDo6QWJvcnQoKTsKICAgfQogfQorCiAvLyBEaXNhYmxlIE1pY3Jvc29mdCBkZXBy
ZWNhdGlvbiB3YXJuaW5ncyBmb3IgUE9TSVggZnVuY3Rpb25zIGNhbGxlZCBmcm9tCiAvLyB0aGlz
IGNsYXNzIChjcmVhdCwgZHVwLCBkdXAyLCBhbmQgY2xvc2UpCi0jaWZkZWYgX01TQ19WRVIKLSNw
cmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ5OTYpCi0jZW5k
aWYgIC8vIF9NU0NfVkVSCitHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BVU0hfKCkKIAot
I2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCisjaWYgR1RFU1RfSEFTX1NUUkVBTV9S
RURJUkVDVElPTgogCiAvLyBPYmplY3QgdGhhdCBjYXB0dXJlcyBhbiBvdXRwdXQgc3RyZWFtIChz
dGRvdXQvc3RkZXJyKS4KIGNsYXNzIENhcHR1cmVkU3RyZWFtIHsKICBwdWJsaWM6CiAgIC8vIFRo
ZSBjdG9yIHJlZGlyZWN0cyB0aGUgc3RyZWFtIHRvIGEgdGVtcG9yYXJ5IGZpbGUuCi0gIENhcHR1
cmVkU3RyZWFtKGludCBmZCkgOiBmZF8oZmQpLCB1bmNhcHR1cmVkX2ZkXyhkdXAoZmQpKSB7Ci0j
aWYgR1RFU1RfT1NfV0lORE9XUworICBleHBsaWNpdCBDYXB0dXJlZFN0cmVhbShpbnQgZmQpIDog
ZmRfKGZkKSwgdW5jYXB0dXJlZF9mZF8oZHVwKGZkKSkgeworIyBpZiBHVEVTVF9PU19XSU5ET1dT
CiAgICAgY2hhciB0ZW1wX2Rpcl9wYXRoW01BWF9QQVRIICsgMV0gPSB7ICdcMCcgfTsgIC8vIE5P
TElOVAogICAgIGNoYXIgdGVtcF9maWxlX3BhdGhbTUFYX1BBVEggKyAxXSA9IHsgJ1wwJyB9OyAg
Ly8gTk9MSU5UCiAKQEAgLTQ3MCwxNCArMTAwNywzMyBAQCBjbGFzcyBDYXB0dXJlZFN0cmVhbSB7
CiAgICAgR1RFU1RfQ0hFQ0tfKGNhcHR1cmVkX2ZkICE9IC0xKSA8PCAiVW5hYmxlIHRvIG9wZW4g
dGVtcG9yYXJ5IGZpbGUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
dGVtcF9maWxlX3BhdGg7CiAgICAgZmlsZW5hbWVfID0gdGVtcF9maWxlX3BhdGg7Ci0jZWxzZQot
ICAgIC8vIFRoZXJlJ3Mgbm8gZ3VhcmFudGVlIHRoYXQgYSB0ZXN0IGhhcyB3cml0ZSBhY2Nlc3Mg
dG8gdGhlCi0gICAgLy8gY3VycmVudCBkaXJlY3RvcnksIHNvIHdlIGNyZWF0ZSB0aGUgdGVtcG9y
YXJ5IGZpbGUgaW4gdGhlIC90bXAKLSAgICAvLyBkaXJlY3RvcnkgaW5zdGVhZC4KKyMgZWxzZQor
ICAgIC8vIFRoZXJlJ3Mgbm8gZ3VhcmFudGVlIHRoYXQgYSB0ZXN0IGhhcyB3cml0ZSBhY2Nlc3Mg
dG8gdGhlIGN1cnJlbnQKKyAgICAvLyBkaXJlY3RvcnksIHNvIHdlIGNyZWF0ZSB0aGUgdGVtcG9y
YXJ5IGZpbGUgaW4gdGhlIC90bXAgZGlyZWN0b3J5CisgICAgLy8gaW5zdGVhZC4gV2UgdXNlIC90
bXAgb24gbW9zdCBzeXN0ZW1zLCBhbmQgL3NkY2FyZCBvbiBBbmRyb2lkLgorICAgIC8vIFRoYXQn
cyBiZWNhdXNlIEFuZHJvaWQgZG9lc24ndCBoYXZlIC90bXAuCisjICBpZiBHVEVTVF9PU19MSU5V
WF9BTkRST0lECisgICAgLy8gTm90ZTogQW5kcm9pZCBhcHBsaWNhdGlvbnMgYXJlIGV4cGVjdGVk
IHRvIGNhbGwgdGhlIGZyYW1ld29yaydzCisgICAgLy8gQ29udGV4dC5nZXRFeHRlcm5hbFN0b3Jh
Z2VEaXJlY3RvcnkoKSBtZXRob2QgdGhyb3VnaCBKTkkgdG8gZ2V0CisgICAgLy8gdGhlIGxvY2F0
aW9uIG9mIHRoZSB3b3JsZC13cml0YWJsZSBTRCBDYXJkIGRpcmVjdG9yeS4gSG93ZXZlciwKKyAg
ICAvLyB0aGlzIHJlcXVpcmVzIGEgQ29udGV4dCBoYW5kbGUsIHdoaWNoIGNhbm5vdCBiZSByZXRy
aWV2ZWQKKyAgICAvLyBnbG9iYWxseSBmcm9tIG5hdGl2ZSBjb2RlLiBEb2luZyBzbyBhbHNvIHBy
ZWNsdWRlcyBydW5uaW5nIHRoZQorICAgIC8vIGNvZGUgYXMgcGFydCBvZiBhIHJlZ3VsYXIgc3Rh
bmRhbG9uZSBleGVjdXRhYmxlLCB3aGljaCBkb2Vzbid0CisgICAgLy8gcnVuIGluIGEgRGFsdmlr
IHByb2Nlc3MgKGUuZy4gd2hlbiBydW5uaW5nIGl0IHRocm91Z2ggJ2FkYiBzaGVsbCcpLgorICAg
IC8vCisgICAgLy8gVGhlIGxvY2F0aW9uIC9zZGNhcmQgaXMgZGlyZWN0bHkgYWNjZXNzaWJsZSBm
cm9tIG5hdGl2ZSBjb2RlCisgICAgLy8gYW5kIGlzIHRoZSBvbmx5IGxvY2F0aW9uICh1bm9mZmlj
aWFsbHkpIHN1cHBvcnRlZCBieSB0aGUgQW5kcm9pZAorICAgIC8vIHRlYW0uIEl0J3MgZ2VuZXJh
bGx5IGEgc3ltbGluayB0byB0aGUgcmVhbCBTRCBDYXJkIG1vdW50IHBvaW50CisgICAgLy8gd2hp
Y2ggY2FuIGJlIC9tbnQvc2RjYXJkLCAvbW50L3NkY2FyZDAsIC9zeXN0ZW0vbWVkaWEvc2RjYXJk
LCBvcgorICAgIC8vIG90aGVyIE9FTS1jdXN0b21pemVkIGxvY2F0aW9ucy4gTmV2ZXIgcmVseSBv
biB0aGVzZSwgYW5kIGFsd2F5cworICAgIC8vIHVzZSAvc2RjYXJkLgorICAgIGNoYXIgbmFtZV90
ZW1wbGF0ZVtdID0gIi9zZGNhcmQvZ3Rlc3RfY2FwdHVyZWRfc3RyZWFtLlhYWFhYWCI7CisjICBl
bHNlCiAgICAgY2hhciBuYW1lX3RlbXBsYXRlW10gPSAiL3RtcC9jYXB0dXJlZF9zdHJlYW0uWFhY
WFhYIjsKKyMgIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWF9BTkRST0lECiAgICAgY29uc3QgaW50
IGNhcHR1cmVkX2ZkID0gbWtzdGVtcChuYW1lX3RlbXBsYXRlKTsKICAgICBmaWxlbmFtZV8gPSBu
YW1lX3RlbXBsYXRlOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyBH
VEVTVF9PU19XSU5ET1dTCiAgICAgZmZsdXNoKE5VTEwpOwogICAgIGR1cDIoY2FwdHVyZWRfZmQs
IGZkXyk7CiAgICAgY2xvc2UoY2FwdHVyZWRfZmQpOwpAQCAtNDg3LDcgKzEwNDMsNyBAQCBjbGFz
cyBDYXB0dXJlZFN0cmVhbSB7CiAgICAgcmVtb3ZlKGZpbGVuYW1lXy5jX3N0cigpKTsKICAgfQog
Ci0gIFN0cmluZyBHZXRDYXB0dXJlZFN0cmluZygpIHsKKyAgc3RkOjpzdHJpbmcgR2V0Q2FwdHVy
ZWRTdHJpbmcoKSB7CiAgICAgaWYgKHVuY2FwdHVyZWRfZmRfICE9IC0xKSB7CiAgICAgICAvLyBS
ZXN0b3JlcyB0aGUgb3JpZ2luYWwgc3RyZWFtLgogICAgICAgZmZsdXNoKE5VTEwpOwpAQCAtNDk3
LDE4ICsxMDUzLDEyIEBAIGNsYXNzIENhcHR1cmVkU3RyZWFtIHsKICAgICB9CiAKICAgICBGSUxF
KiBjb25zdCBmaWxlID0gcG9zaXg6OkZPcGVuKGZpbGVuYW1lXy5jX3N0cigpLCAiciIpOwotICAg
IGNvbnN0IFN0cmluZyBjb250ZW50ID0gUmVhZEVudGlyZUZpbGUoZmlsZSk7CisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgY29udGVudCA9IFJlYWRFbnRpcmVGaWxlKGZpbGUpOwogICAgIHBvc2l4OjpG
Q2xvc2UoZmlsZSk7CiAgICAgcmV0dXJuIGNvbnRlbnQ7CiAgIH0KIAogIHByaXZhdGU6Ci0gIC8v
IFJlYWRzIHRoZSBlbnRpcmUgY29udGVudCBvZiBhIGZpbGUgYXMgYSBTdHJpbmcuCi0gIHN0YXRp
YyBTdHJpbmcgUmVhZEVudGlyZUZpbGUoRklMRSogZmlsZSk7Ci0KLSAgLy8gUmV0dXJucyB0aGUg
c2l6ZSAoaW4gYnl0ZXMpIG9mIGEgZmlsZS4KLSAgc3RhdGljIHNpemVfdCBHZXRGaWxlU2l6ZShG
SUxFKiBmaWxlKTsKLQogICBjb25zdCBpbnQgZmRfOyAgLy8gQSBzdHJlYW0gdG8gY2FwdHVyZS4K
ICAgaW50IHVuY2FwdHVyZWRfZmRfOwogICAvLyBOYW1lIG9mIHRoZSB0ZW1wb3JhcnkgZmlsZSBo
b2xkaW5nIHRoZSBzdGRlcnIgb3V0cHV0LgpAQCAtNTE3LDQ0ICsxMDY3LDE0IEBAIGNsYXNzIENh
cHR1cmVkU3RyZWFtIHsKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhDYXB0dXJl
ZFN0cmVhbSk7CiB9OwogCi0vLyBSZXR1cm5zIHRoZSBzaXplIChpbiBieXRlcykgb2YgYSBmaWxl
Lgotc2l6ZV90IENhcHR1cmVkU3RyZWFtOjpHZXRGaWxlU2l6ZShGSUxFKiBmaWxlKSB7Ci0gIGZz
ZWVrKGZpbGUsIDAsIFNFRUtfRU5EKTsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oZnRl
bGwoZmlsZSkpOwotfQotCi0vLyBSZWFkcyB0aGUgZW50aXJlIGNvbnRlbnQgb2YgYSBmaWxlIGFz
IGEgc3RyaW5nLgotU3RyaW5nIENhcHR1cmVkU3RyZWFtOjpSZWFkRW50aXJlRmlsZShGSUxFKiBm
aWxlKSB7Ci0gIGNvbnN0IHNpemVfdCBmaWxlX3NpemUgPSBHZXRGaWxlU2l6ZShmaWxlKTsKLSAg
Y2hhciogY29uc3QgYnVmZmVyID0gbmV3IGNoYXJbZmlsZV9zaXplXTsKLQotICBzaXplX3QgYnl0
ZXNfbGFzdF9yZWFkID0gMDsgIC8vICMgb2YgYnl0ZXMgcmVhZCBpbiB0aGUgbGFzdCBmcmVhZCgp
Ci0gIHNpemVfdCBieXRlc19yZWFkID0gMDsgICAgICAgLy8gIyBvZiBieXRlcyByZWFkIHNvIGZh
cgotCi0gIGZzZWVrKGZpbGUsIDAsIFNFRUtfU0VUKTsKLQotICAvLyBLZWVwcyByZWFkaW5nIHRo
ZSBmaWxlIHVudGlsIHdlIGNhbm5vdCByZWFkIGZ1cnRoZXIgb3IgdGhlCi0gIC8vIHByZS1kZXRl
cm1pbmVkIGZpbGUgc2l6ZSBpcyByZWFjaGVkLgotICBkbyB7Ci0gICAgYnl0ZXNfbGFzdF9yZWFk
ID0gZnJlYWQoYnVmZmVyK2J5dGVzX3JlYWQsIDEsIGZpbGVfc2l6ZS1ieXRlc19yZWFkLCBmaWxl
KTsKLSAgICBieXRlc19yZWFkICs9IGJ5dGVzX2xhc3RfcmVhZDsKLSAgfSB3aGlsZSAoYnl0ZXNf
bGFzdF9yZWFkID4gMCAmJiBieXRlc19yZWFkIDwgZmlsZV9zaXplKTsKLQotICBjb25zdCBTdHJp
bmcgY29udGVudChidWZmZXIsIGJ5dGVzX3JlYWQpOwotICBkZWxldGVbXSBidWZmZXI7Ci0KLSAg
cmV0dXJuIGNvbnRlbnQ7Ci19Ci0KLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHBv
cCkKLSNlbmRpZiAgLy8gX01TQ19WRVIKK0dURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUE9Q
XygpCiAKIHN0YXRpYyBDYXB0dXJlZFN0cmVhbSogZ19jYXB0dXJlZF9zdGRlcnIgPSBOVUxMOwog
c3RhdGljIENhcHR1cmVkU3RyZWFtKiBnX2NhcHR1cmVkX3N0ZG91dCA9IE5VTEw7CiAKIC8vIFN0
YXJ0cyBjYXB0dXJpbmcgYW4gb3V0cHV0IHN0cmVhbSAoc3Rkb3V0L3N0ZGVycikuCi12b2lkIENh
cHR1cmVTdHJlYW0oaW50IGZkLCBjb25zdCBjaGFyKiBzdHJlYW1fbmFtZSwgQ2FwdHVyZWRTdHJl
YW0qKiBzdHJlYW0pIHsKK3N0YXRpYyB2b2lkIENhcHR1cmVTdHJlYW0oaW50IGZkLCBjb25zdCBj
aGFyKiBzdHJlYW1fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FwdHVyZWRTdHJl
YW0qKiBzdHJlYW0pIHsKICAgaWYgKCpzdHJlYW0gIT0gTlVMTCkgewogICAgIEdURVNUX0xPR18o
RkFUQUwpIDw8ICJPbmx5IG9uZSAiIDw8IHN0cmVhbV9uYW1lCiAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIiBjYXB0dXJlciBjYW4gZXhpc3QgYXQgYSB0aW1lLiI7CkBAIC01NjMsOCArMTA4Myw4
IEBAIHZvaWQgQ2FwdHVyZVN0cmVhbShpbnQgZmQsIGNvbnN0IGNoYXIqIHN0cmVhbV9uYW1lLCBD
YXB0dXJlZFN0cmVhbSoqIHN0cmVhbSkgewogfQogCiAvLyBTdG9wcyBjYXB0dXJpbmcgdGhlIG91
dHB1dCBzdHJlYW0gYW5kIHJldHVybnMgdGhlIGNhcHR1cmVkIHN0cmluZy4KLVN0cmluZyBHZXRD
YXB0dXJlZFN0cmVhbShDYXB0dXJlZFN0cmVhbSoqIGNhcHR1cmVkX3N0cmVhbSkgewotICBjb25z
dCBTdHJpbmcgY29udGVudCA9ICgqY2FwdHVyZWRfc3RyZWFtKS0+R2V0Q2FwdHVyZWRTdHJpbmco
KTsKK3N0YXRpYyBzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0cmVhbShDYXB0dXJlZFN0cmVhbSoq
IGNhcHR1cmVkX3N0cmVhbSkgeworICBjb25zdCBzdGQ6OnN0cmluZyBjb250ZW50ID0gKCpjYXB0
dXJlZF9zdHJlYW0pLT5HZXRDYXB0dXJlZFN0cmluZygpOwogCiAgIGRlbGV0ZSAqY2FwdHVyZWRf
c3RyZWFtOwogICAqY2FwdHVyZWRfc3RyZWFtID0gTlVMTDsKQEAgLTU4MywyMSArMTEwMyw3OSBA
QCB2b2lkIENhcHR1cmVTdGRlcnIoKSB7CiB9CiAKIC8vIFN0b3BzIGNhcHR1cmluZyBzdGRvdXQg
YW5kIHJldHVybnMgdGhlIGNhcHR1cmVkIHN0cmluZy4KLVN0cmluZyBHZXRDYXB0dXJlZFN0ZG91
dCgpIHsgcmV0dXJuIEdldENhcHR1cmVkU3RyZWFtKCZnX2NhcHR1cmVkX3N0ZG91dCk7IH0KK3N0
ZDo6c3RyaW5nIEdldENhcHR1cmVkU3Rkb3V0KCkgeworICByZXR1cm4gR2V0Q2FwdHVyZWRTdHJl
YW0oJmdfY2FwdHVyZWRfc3Rkb3V0KTsKK30KIAogLy8gU3RvcHMgY2FwdHVyaW5nIHN0ZGVyciBh
bmQgcmV0dXJucyB0aGUgY2FwdHVyZWQgc3RyaW5nLgotU3RyaW5nIEdldENhcHR1cmVkU3RkZXJy
KCkgeyByZXR1cm4gR2V0Q2FwdHVyZWRTdHJlYW0oJmdfY2FwdHVyZWRfc3RkZXJyKTsgfQorc3Rk
OjpzdHJpbmcgR2V0Q2FwdHVyZWRTdGRlcnIoKSB7CisgIHJldHVybiBHZXRDYXB0dXJlZFN0cmVh
bSgmZ19jYXB0dXJlZF9zdGRlcnIpOworfQogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1f
UkVESVJFQ1RJT05fCisjZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KKwor
CisKKworCitzaXplX3QgR2V0RmlsZVNpemUoRklMRSogZmlsZSkgeworICBmc2VlayhmaWxlLCAw
LCBTRUVLX0VORCk7CisgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGZ0ZWxsKGZpbGUpKTsK
K30KKworc3RkOjpzdHJpbmcgUmVhZEVudGlyZUZpbGUoRklMRSogZmlsZSkgeworICBjb25zdCBz
aXplX3QgZmlsZV9zaXplID0gR2V0RmlsZVNpemUoZmlsZSk7CisgIGNoYXIqIGNvbnN0IGJ1ZmZl
ciA9IG5ldyBjaGFyW2ZpbGVfc2l6ZV07CisKKyAgc2l6ZV90IGJ5dGVzX2xhc3RfcmVhZCA9IDA7
ICAvLyAjIG9mIGJ5dGVzIHJlYWQgaW4gdGhlIGxhc3QgZnJlYWQoKQorICBzaXplX3QgYnl0ZXNf
cmVhZCA9IDA7ICAgICAgIC8vICMgb2YgYnl0ZXMgcmVhZCBzbyBmYXIKKworICBmc2VlayhmaWxl
LCAwLCBTRUVLX1NFVCk7CisKKyAgLy8gS2VlcHMgcmVhZGluZyB0aGUgZmlsZSB1bnRpbCB3ZSBj
YW5ub3QgcmVhZCBmdXJ0aGVyIG9yIHRoZQorICAvLyBwcmUtZGV0ZXJtaW5lZCBmaWxlIHNpemUg
aXMgcmVhY2hlZC4KKyAgZG8geworICAgIGJ5dGVzX2xhc3RfcmVhZCA9IGZyZWFkKGJ1ZmZlciti
eXRlc19yZWFkLCAxLCBmaWxlX3NpemUtYnl0ZXNfcmVhZCwgZmlsZSk7CisgICAgYnl0ZXNfcmVh
ZCArPSBieXRlc19sYXN0X3JlYWQ7CisgIH0gd2hpbGUgKGJ5dGVzX2xhc3RfcmVhZCA+IDAgJiYg
Ynl0ZXNfcmVhZCA8IGZpbGVfc2l6ZSk7CisKKyAgY29uc3Qgc3RkOjpzdHJpbmcgY29udGVudChi
dWZmZXIsIGJ5dGVzX3JlYWQpOworICBkZWxldGVbXSBidWZmZXI7CisKKyAgcmV0dXJuIGNvbnRl
bnQ7Cit9CiAKICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorc3RhdGljIGNvbnN0IHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiogZ19pbmplY3RlZF90ZXN0X2FyZ3ZzID0gTlVMTDsgIC8vIE93bmVk
LgogCi0vLyBBIGNvcHkgb2YgYWxsIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuICBTZXQgYnkgSW5p
dEdvb2dsZVRlc3QoKS4KLTo6c3RkOjp2ZWN0b3I8U3RyaW5nPiBnX2FyZ3ZzOworc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+IEdldEluamVjdGFibGVBcmd2cygpIHsKKyAgaWYgKGdfaW5qZWN0ZWRf
dGVzdF9hcmd2cyAhPSBOVUxMKSB7CisgICAgcmV0dXJuICpnX2luamVjdGVkX3Rlc3RfYXJndnM7
CisgIH0KKyAgcmV0dXJuIEdldEFyZ3ZzKCk7Cit9CisKK3ZvaWQgU2V0SW5qZWN0YWJsZUFyZ3Zz
KGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiogbmV3X2FyZ3ZzKSB7CisgIGlmIChnX2lu
amVjdGVkX3Rlc3RfYXJndnMgIT0gbmV3X2FyZ3ZzKSBkZWxldGUgZ19pbmplY3RlZF90ZXN0X2Fy
Z3ZzOworICBnX2luamVjdGVkX3Rlc3RfYXJndnMgPSBuZXdfYXJndnM7Cit9CiAKLS8vIFJldHVy
bnMgdGhlIGNvbW1hbmQgbGluZSBhcyBhIHZlY3RvciBvZiBzdHJpbmdzLgotY29uc3QgOjpzdGQ6
OnZlY3RvcjxTdHJpbmc+JiBHZXRBcmd2cygpIHsgcmV0dXJuIGdfYXJndnM7IH0KK3ZvaWQgU2V0
SW5qZWN0YWJsZUFyZ3ZzKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgbmV3X2FyZ3Zz
KSB7CisgIFNldEluamVjdGFibGVBcmd2cygKKyAgICAgIG5ldyBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4obmV3X2FyZ3ZzLmJlZ2luKCksIG5ld19hcmd2cy5lbmQoKSkpOworfQorCisjaWYgR1RF
U1RfSEFTX0dMT0JBTF9TVFJJTkcKK3ZvaWQgU2V0SW5qZWN0YWJsZUFyZ3ZzKGNvbnN0IHN0ZDo6
dmVjdG9yPCA6OnN0cmluZz4mIG5ld19hcmd2cykgeworICBTZXRJbmplY3RhYmxlQXJndnMoCisg
ICAgICBuZXcgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KG5ld19hcmd2cy5iZWdpbigpLCBuZXdf
YXJndnMuZW5kKCkpKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKIAor
dm9pZCBDbGVhckluamVjdGFibGVBcmd2cygpIHsKKyAgZGVsZXRlIGdfaW5qZWN0ZWRfdGVzdF9h
cmd2czsKKyAgZ19pbmplY3RlZF90ZXN0X2FyZ3ZzID0gTlVMTDsKK30KICNlbmRpZiAgLy8gR1RF
U1RfSEFTX0RFQVRIX1RFU1QKIAogI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCkBAIC02MTIs
MTMgKzExOTAsMTMgQEAgdm9pZCBBYm9ydCgpIHsKIC8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhl
IGVudmlyb25tZW50IHZhcmlhYmxlIGNvcnJlc3BvbmRpbmcgdG8gdGhlCiAvLyBnaXZlbiBmbGFn
LiAgRm9yIGV4YW1wbGUsIEZsYWdUb0VudlZhcigiZm9vIikgd2lsbCByZXR1cm4KIC8vICJHVEVT
VF9GT08iIGluIHRoZSBvcGVuLXNvdXJjZSB2ZXJzaW9uLgotc3RhdGljIFN0cmluZyBGbGFnVG9F
bnZWYXIoY29uc3QgY2hhciogZmxhZykgewotICBjb25zdCBTdHJpbmcgZnVsbF9mbGFnID0KK3N0
YXRpYyBzdGQ6OnN0cmluZyBGbGFnVG9FbnZWYXIoY29uc3QgY2hhciogZmxhZykgeworICBjb25z
dCBzdGQ6OnN0cmluZyBmdWxsX2ZsYWcgPQogICAgICAgKE1lc3NhZ2UoKSA8PCBHVEVTVF9GTEFH
X1BSRUZJWF8gPDwgZmxhZykuR2V0U3RyaW5nKCk7CiAKICAgTWVzc2FnZSBlbnZfdmFyOwogICBm
b3IgKHNpemVfdCBpID0gMDsgaSAhPSBmdWxsX2ZsYWcubGVuZ3RoKCk7IGkrKykgewotICAgIGVu
dl92YXIgPDwgc3RhdGljX2Nhc3Q8Y2hhcj4odG91cHBlcihmdWxsX2ZsYWcuY19zdHIoKVtpXSkp
OworICAgIGVudl92YXIgPDwgVG9VcHBlcihmdWxsX2ZsYWcuY19zdHIoKVtpXSk7CiAgIH0KIAog
ICByZXR1cm4gZW52X3Zhci5HZXRTdHJpbmcoKTsKQEAgLTY3MCwxNyArMTI0OCwyNCBAQCBib29s
IFBhcnNlSW50MzIoY29uc3QgTWVzc2FnZSYgc3JjX3RleHQsIGNvbnN0IGNoYXIqIHN0ciwgSW50
MzIqIHZhbHVlKSB7CiAvLwogLy8gVGhlIHZhbHVlIGlzIGNvbnNpZGVyZWQgdHJ1ZSBpZmYgaXQn
cyBub3QgIjAiLgogYm9vbCBCb29sRnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIGJvb2wg
ZGVmYXVsdF92YWx1ZSkgewotICBjb25zdCBTdHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihm
bGFnKTsKKyNpZiBkZWZpbmVkKEdURVNUX0dFVF9CT09MX0ZST01fRU5WXykKKyAgcmV0dXJuIEdU
RVNUX0dFVF9CT09MX0ZST01fRU5WXyhmbGFnLCBkZWZhdWx0X3ZhbHVlKTsKKyNlbHNlCisgIGNv
bnN0IHN0ZDo6c3RyaW5nIGVudl92YXIgPSBGbGFnVG9FbnZWYXIoZmxhZyk7CiAgIGNvbnN0IGNo
YXIqIGNvbnN0IHN0cmluZ192YWx1ZSA9IHBvc2l4OjpHZXRFbnYoZW52X3Zhci5jX3N0cigpKTsK
ICAgcmV0dXJuIHN0cmluZ192YWx1ZSA9PSBOVUxMID8KICAgICAgIGRlZmF1bHRfdmFsdWUgOiBz
dHJjbXAoc3RyaW5nX3ZhbHVlLCAiMCIpICE9IDA7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1Rf
R0VUX0JPT0xfRlJPTV9FTlZfKQogfQogCiAvLyBSZWFkcyBhbmQgcmV0dXJucyBhIDMyLWJpdCBp
bnRlZ2VyIHN0b3JlZCBpbiB0aGUgZW52aXJvbm1lbnQKIC8vIHZhcmlhYmxlIGNvcnJlc3BvbmRp
bmcgdG8gdGhlIGdpdmVuIGZsYWc7IGlmIGl0IGlzbid0IHNldCBvcgogLy8gZG9lc24ndCByZXBy
ZXNlbnQgYSB2YWxpZCAzMi1iaXQgaW50ZWdlciwgcmV0dXJucyBkZWZhdWx0X3ZhbHVlLgogSW50
MzIgSW50MzJGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywgSW50MzIgZGVmYXVsdF92YWx1
ZSkgewotICBjb25zdCBTdHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFnKTsKKyNpZiBk
ZWZpbmVkKEdURVNUX0dFVF9JTlQzMl9GUk9NX0VOVl8pCisgIHJldHVybiBHVEVTVF9HRVRfSU5U
MzJfRlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOworI2Vsc2UKKyAgY29uc3Qgc3RkOjpz
dHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFnKTsKICAgY29uc3QgY2hhciogY29uc3Qg
c3RyaW5nX3ZhbHVlID0gcG9zaXg6OkdldEVudihlbnZfdmFyLmNfc3RyKCkpOwogICBpZiAoc3Ry
aW5nX3ZhbHVlID09IE5VTEwpIHsKICAgICAvLyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMg
bm90IHNldC4KQEAgLTY5NywxNCArMTI4MiwzNiBAQCBJbnQzMiBJbnQzMkZyb21HVGVzdEVudihj
b25zdCBjaGFyKiBmbGFnLCBJbnQzMiBkZWZhdWx0X3ZhbHVlKSB7CiAgIH0KIAogICByZXR1cm4g
cmVzdWx0OworI2VuZGlmICAvLyBkZWZpbmVkKEdURVNUX0dFVF9JTlQzMl9GUk9NX0VOVl8pCit9
CisKKy8vIEFzIGEgc3BlY2lhbCBjYXNlIGZvciB0aGUgJ291dHB1dCcgZmxhZywgaWYgR1RFU1Rf
T1VUUFVUIGlzIG5vdAorLy8gc2V0LCB3ZSBsb29rIGZvciBYTUxfT1VUUFVUX0ZJTEUsIHdoaWNo
IGlzIHNldCBieSB0aGUgQmF6ZWwgYnVpbGQKKy8vIHN5c3RlbS4gIFRoZSB2YWx1ZSBvZiBYTUxf
T1VUUFVUX0ZJTEUgaXMgYSBmaWxlbmFtZSB3aXRob3V0IHRoZQorLy8gInhtbDoiIHByZWZpeCBv
ZiBHVEVTVF9PVVRQVVQuCisvLyBOb3RlIHRoYXQgdGhpcyBpcyBtZWFudCB0byBiZSBjYWxsZWQg
YXQgdGhlIGNhbGwgc2l0ZSBzbyBpdCBkb2VzCisvLyBub3QgY2hlY2sgdGhhdCB0aGUgZmxhZyBp
cyAnb3V0cHV0JworLy8gSW4gZXNzZW5jZSB0aGlzIGNoZWNrcyBhbiBlbnYgdmFyaWFibGUgY2Fs
bGVkIFhNTF9PVVRQVVRfRklMRQorLy8gYW5kIGlmIGl0IGlzIHNldCB3ZSBwcmVwZW5kICJ4bWw6
IiB0byBpdHMgdmFsdWUsIGlmIGl0IG5vdCBzZXQgd2UgcmV0dXJuICIiCitzdGQ6OnN0cmluZyBP
dXRwdXRGbGFnQWxzb0NoZWNrRW52VmFyKCl7CisgIHN0ZDo6c3RyaW5nIGRlZmF1bHRfdmFsdWVf
Zm9yX291dHB1dF9mbGFnID0gIiI7CisgIGNvbnN0IGNoYXIqIHhtbF9vdXRwdXRfZmlsZV9lbnYg
PSBwb3NpeDo6R2V0RW52KCJYTUxfT1VUUFVUX0ZJTEUiKTsKKyAgaWYgKE5VTEwgIT0geG1sX291
dHB1dF9maWxlX2VudikgeworICAgIGRlZmF1bHRfdmFsdWVfZm9yX291dHB1dF9mbGFnID0gc3Rk
OjpzdHJpbmcoInhtbDoiKSArIHhtbF9vdXRwdXRfZmlsZV9lbnY7CisgIH0KKyAgcmV0dXJuIGRl
ZmF1bHRfdmFsdWVfZm9yX291dHB1dF9mbGFnOwogfQogCiAvLyBSZWFkcyBhbmQgcmV0dXJucyB0
aGUgc3RyaW5nIGVudmlyb25tZW50IHZhcmlhYmxlIGNvcnJlc3BvbmRpbmcgdG8KIC8vIHRoZSBn
aXZlbiBmbGFnOyBpZiBpdCdzIG5vdCBzZXQsIHJldHVybnMgZGVmYXVsdF92YWx1ZS4KIGNvbnN0
IGNoYXIqIFN0cmluZ0Zyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBjb25zdCBjaGFyKiBk
ZWZhdWx0X3ZhbHVlKSB7Ci0gIGNvbnN0IFN0cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52VmFyKGZs
YWcpOworI2lmIGRlZmluZWQoR1RFU1RfR0VUX1NUUklOR19GUk9NX0VOVl8pCisgIHJldHVybiBH
VEVTVF9HRVRfU1RSSU5HX0ZST01fRU5WXyhmbGFnLCBkZWZhdWx0X3ZhbHVlKTsKKyNlbHNlCisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGVudl92YXIgPSBGbGFnVG9FbnZWYXIoZmxhZyk7CiAgIGNvbnN0
IGNoYXIqIGNvbnN0IHZhbHVlID0gcG9zaXg6OkdldEVudihlbnZfdmFyLmNfc3RyKCkpOwogICBy
ZXR1cm4gdmFsdWUgPT0gTlVMTCA/IGRlZmF1bHRfdmFsdWUgOiB2YWx1ZTsKKyNlbmRpZiAgLy8g
ZGVmaW5lZChHVEVTVF9HRVRfU1RSSU5HX0ZST01fRU5WXykKIH0KIAogfSAgLy8gbmFtZXNwYWNl
IGludGVybmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3Qt
cHJpbnRlcnMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcHJpbnRlcnMu
Y2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGU0ZDI0NWU5ZmM4ODk3YWYyMTM3Njc5ZDkxM2Q2NjVmZDg0MzZlMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1wcmlu
dGVycy5jYwpAQCAtMCwwICsxLDQ1NyBAQAorLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMu
CisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisKKy8vIEdvb2dsZSBUZXN0IC0gVGhlIEdvb2dsZSBDKysgVGVzdGlu
ZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsKKy8vCisvLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBhIHVu
aXZlcnNhbCB2YWx1ZSBwcmludGVyIHRoYXQgY2FuIHByaW50IGEKKy8vIHZhbHVlIG9mIGFueSB0
eXBlIFQ6CisvLworLy8gICB2b2lkIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFByaW50
ZXI8VD46OlByaW50KHZhbHVlLCBvc3RyZWFtX3B0cik7CisvLworLy8gSXQgdXNlcyB0aGUgPDwg
b3BlcmF0b3Igd2hlbiBwb3NzaWJsZSwgYW5kIHByaW50cyB0aGUgYnl0ZXMgaW4gdGhlCisvLyBv
YmplY3Qgb3RoZXJ3aXNlLiAgQSB1c2VyIGNhbiBvdmVycmlkZSBpdHMgYmVoYXZpb3IgZm9yIGEg
Y2xhc3MKKy8vIHR5cGUgRm9vIGJ5IGRlZmluaW5nIGVpdGhlciBvcGVyYXRvcjw8KDo6c3RkOjpv
c3RyZWFtJiwgY29uc3QgRm9vJikKKy8vIG9yIHZvaWQgUHJpbnRUbyhjb25zdCBGb28mLCA6OnN0
ZDo6b3N0cmVhbSopIGluIHRoZSBuYW1lc3BhY2UgdGhhdAorLy8gZGVmaW5lcyBGb28uCisKKyNp
bmNsdWRlICJndGVzdC9ndGVzdC1wcmludGVycy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5j
bHVkZSA8Y2N0eXBlPgorI2luY2x1ZGUgPGN3Y2hhcj4KKyNpbmNsdWRlIDxvc3RyZWFtPiAgLy8g
Tk9MSU5UCisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0
LXBvcnQuaCIKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCisKK25hbWVzcGFj
ZSB0ZXN0aW5nIHsKKworbmFtZXNwYWNlIHsKKwordXNpbmcgOjpzdGQ6Om9zdHJlYW07CisKKy8v
IFByaW50cyBhIHNlZ21lbnQgb2YgYnl0ZXMgaW4gdGhlIGdpdmVuIG9iamVjdC4KK0dURVNUX0FU
VFJJQlVURV9OT19TQU5JVElaRV9NRU1PUllfCitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVf
QUREUkVTU18KK0dURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9USFJFQURfCit2b2lkIFByaW50
Qnl0ZVNlZ21lbnRJbk9iamVjdFRvKGNvbnN0IHVuc2lnbmVkIGNoYXIqIG9ial9ieXRlcywgc2l6
ZV90IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQs
IG9zdHJlYW0qIG9zKSB7CisgIGNoYXIgdGV4dFs1XSA9ICIiOworICBmb3IgKHNpemVfdCBpID0g
MDsgaSAhPSBjb3VudDsgaSsrKSB7CisgICAgY29uc3Qgc2l6ZV90IGogPSBzdGFydCArIGk7Cisg
ICAgaWYgKGkgIT0gMCkgeworICAgICAgLy8gT3JnYW5pemVzIHRoZSBieXRlcyBpbnRvIGdyb3Vw
cyBvZiAyIGZvciBlYXN5IHBhcnNpbmcgYnkKKyAgICAgIC8vIGh1bWFuLgorICAgICAgaWYgKChq
ICUgMikgPT0gMCkKKyAgICAgICAgKm9zIDw8ICcgJzsKKyAgICAgIGVsc2UKKyAgICAgICAgKm9z
IDw8ICctJzsKKyAgICB9CisgICAgR1RFU1RfU05QUklOVEZfKHRleHQsIHNpemVvZih0ZXh0KSwg
IiUwMlgiLCBvYmpfYnl0ZXNbal0pOworICAgICpvcyA8PCB0ZXh0OworICB9Cit9CisKKy8vIFBy
aW50cyB0aGUgYnl0ZXMgaW4gdGhlIGdpdmVuIHZhbHVlIHRvIHRoZSBnaXZlbiBvc3RyZWFtLgor
dm9pZCBQcmludEJ5dGVzSW5PYmplY3RUb0ltcGwoY29uc3QgdW5zaWduZWQgY2hhciogb2JqX2J5
dGVzLCBzaXplX3QgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvc3RyZWFt
KiBvcykgeworICAvLyBUZWxscyB0aGUgdXNlciBob3cgYmlnIHRoZSBvYmplY3QgaXMuCisgICpv
cyA8PCBjb3VudCA8PCAiLWJ5dGUgb2JqZWN0IDwiOworCisgIGNvbnN0IHNpemVfdCBrVGhyZXNo
b2xkID0gMTMyOworICBjb25zdCBzaXplX3Qga0NodW5rU2l6ZSA9IDY0OworICAvLyBJZiB0aGUg
b2JqZWN0IHNpemUgaXMgYmlnZ2VyIHRoYW4ga1RocmVzaG9sZCwgd2UnbGwgaGF2ZSB0byBvbWl0
CisgIC8vIHNvbWUgZGV0YWlscyBieSBwcmludGluZyBvbmx5IHRoZSBmaXJzdCBhbmQgdGhlIGxh
c3Qga0NodW5rU2l6ZQorICAvLyBieXRlcy4KKyAgLy8gRklYTUU6IGxldCB0aGUgdXNlciBjb250
cm9sIHRoZSB0aHJlc2hvbGQgdXNpbmcgYSBmbGFnLgorICBpZiAoY291bnQgPCBrVGhyZXNob2xk
KSB7CisgICAgUHJpbnRCeXRlU2VnbWVudEluT2JqZWN0VG8ob2JqX2J5dGVzLCAwLCBjb3VudCwg
b3MpOworICB9IGVsc2UgeworICAgIFByaW50Qnl0ZVNlZ21lbnRJbk9iamVjdFRvKG9ial9ieXRl
cywgMCwga0NodW5rU2l6ZSwgb3MpOworICAgICpvcyA8PCAiIC4uLiAiOworICAgIC8vIFJvdW5k
cyB1cCB0byAyLWJ5dGUgYm91bmRhcnkuCisgICAgY29uc3Qgc2l6ZV90IHJlc3VtZV9wb3MgPSAo
Y291bnQgLSBrQ2h1bmtTaXplICsgMSkvMioyOworICAgIFByaW50Qnl0ZVNlZ21lbnRJbk9iamVj
dFRvKG9ial9ieXRlcywgcmVzdW1lX3BvcywgY291bnQgLSByZXN1bWVfcG9zLCBvcyk7CisgIH0K
KyAgKm9zIDw8ICI+IjsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK25hbWVzcGFjZSBpbnRlcm5h
bDIgeworCisvLyBEZWxlZ2F0ZXMgdG8gUHJpbnRCeXRlc0luT2JqZWN0VG9JbXBsKCkgdG8gcHJp
bnQgdGhlIGJ5dGVzIGluIHRoZQorLy8gZ2l2ZW4gb2JqZWN0LiAgVGhlIGRlbGVnYXRpb24gc2lt
cGxpZmllcyB0aGUgaW1wbGVtZW50YXRpb24sIHdoaWNoCisvLyB1c2VzIHRoZSA8PCBvcGVyYXRv
ciBhbmQgdGh1cyBpcyBlYXNpZXIgZG9uZSBvdXRzaWRlIG9mIHRoZQorLy8gOjp0ZXN0aW5nOjpp
bnRlcm5hbCBuYW1lc3BhY2UsIHdoaWNoIGNvbnRhaW5zIGEgPDwgb3BlcmF0b3IgdGhhdAorLy8g
c29tZXRpbWVzIGNvbmZsaWN0cyB3aXRoIHRoZSBvbmUgaW4gU1RMLgordm9pZCBQcmludEJ5dGVz
SW5PYmplY3RUbyhjb25zdCB1bnNpZ25lZCBjaGFyKiBvYmpfYnl0ZXMsIHNpemVfdCBjb3VudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgb3N0cmVhbSogb3MpIHsKKyAgUHJpbnRCeXRlc0lu
T2JqZWN0VG9JbXBsKG9ial9ieXRlcywgY291bnQsIG9zKTsKK30KKworfSAgLy8gbmFtZXNwYWNl
IGludGVybmFsMgorCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBEZXBlbmRpbmcgb24gdGhl
IHZhbHVlIG9mIGEgY2hhciAob3Igd2NoYXJfdCksIHdlIHByaW50IGl0IGluIG9uZQorLy8gb2Yg
dGhyZWUgZm9ybWF0czoKKy8vICAgLSBhcyBpcyBpZiBpdCdzIGEgcHJpbnRhYmxlIEFTQ0lJIChl
LmcuICdhJywgJzInLCAnICcpLAorLy8gICAtIGFzIGEgaGV4YWRlY2ltYWwgZXNjYXBlIHNlcXVl
bmNlIChlLmcuICdceDdGJyksIG9yCisvLyAgIC0gYXMgYSBzcGVjaWFsIGVzY2FwZSBzZXF1ZW5j
ZSAoZS5nLiAnXHInLCAnXG4nKS4KK2VudW0gQ2hhckZvcm1hdCB7CisgIGtBc0lzLAorICBrSGV4
RXNjYXBlLAorICBrU3BlY2lhbEVzY2FwZQorfTsKKworLy8gUmV0dXJucyB0cnVlIGlmIGMgaXMg
YSBwcmludGFibGUgQVNDSUkgY2hhcmFjdGVyLiAgV2UgdGVzdCB0aGUKKy8vIHZhbHVlIG9mIGMg
ZGlyZWN0bHkgaW5zdGVhZCBvZiBjYWxsaW5nIGlzcHJpbnQoKSwgd2hpY2ggaXMgYnVnZ3kgb24K
Ky8vIFdpbmRvd3MgTW9iaWxlLgoraW5saW5lIGJvb2wgSXNQcmludGFibGVBc2NpaSh3Y2hhcl90
IGMpIHsKKyAgcmV0dXJuIDB4MjAgPD0gYyAmJiBjIDw9IDB4N0U7Cit9CisKKy8vIFByaW50cyBh
IHdpZGUgb3IgbmFycm93IGNoYXIgYyBhcyBhIGNoYXJhY3RlciBsaXRlcmFsIHdpdGhvdXQgdGhl
CisvLyBxdW90ZXMsIGVzY2FwaW5nIGl0IHdoZW4gbmVjZXNzYXJ5OyByZXR1cm5zIGhvdyBjIHdh
cyBmb3JtYXR0ZWQuCisvLyBUaGUgdGVtcGxhdGUgYXJndW1lbnQgVW5zaWduZWRDaGFyIGlzIHRo
ZSB1bnNpZ25lZCB2ZXJzaW9uIG9mIENoYXIsCisvLyB3aGljaCBpcyB0aGUgdHlwZSBvZiBjLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFVuc2lnbmVkQ2hhciwgdHlwZW5hbWUgQ2hhcj4KK3N0YXRpYyBD
aGFyRm9ybWF0IFByaW50QXNDaGFyTGl0ZXJhbFRvKENoYXIgYywgb3N0cmVhbSogb3MpIHsKKyAg
c3dpdGNoIChzdGF0aWNfY2FzdDx3Y2hhcl90PihjKSkgeworICAgIGNhc2UgTCdcMCc6CisgICAg
ICAqb3MgPDwgIlxcMCI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwnXCcnOgorICAgICAgKm9z
IDw8ICJcXCciOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1xcJzoKKyAgICAgICpvcyA8PCAi
XFxcXCI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwnXGEnOgorICAgICAgKm9zIDw8ICJcXGEi
OworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1xiJzoKKyAgICAgICpvcyA8PCAiXFxiIjsKKyAg
ICAgIGJyZWFrOworICAgIGNhc2UgTCdcZic6CisgICAgICAqb3MgPDwgIlxcZiI7CisgICAgICBi
cmVhazsKKyAgICBjYXNlIEwnXG4nOgorICAgICAgKm9zIDw8ICJcXG4iOworICAgICAgYnJlYWs7
CisgICAgY2FzZSBMJ1xyJzoKKyAgICAgICpvcyA8PCAiXFxyIjsKKyAgICAgIGJyZWFrOworICAg
IGNhc2UgTCdcdCc6CisgICAgICAqb3MgPDwgIlxcdCI7CisgICAgICBicmVhazsKKyAgICBjYXNl
IEwnXHYnOgorICAgICAgKm9zIDw8ICJcXHYiOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgIGlmIChJc1ByaW50YWJsZUFzY2lpKGMpKSB7CisgICAgICAgICpvcyA8PCBzdGF0aWNf
Y2FzdDxjaGFyPihjKTsKKyAgICAgICAgcmV0dXJuIGtBc0lzOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgb3N0cmVhbTo6Zm10ZmxhZ3MgZmxhZ3MgPSBvcy0+ZmxhZ3MoKTsKKyAgICAgICAgKm9z
IDw8ICJcXHgiIDw8IHN0ZDo6aGV4IDw8IHN0ZDo6dXBwZXJjYXNlCisgICAgICAgICAgICA8PCBz
dGF0aWNfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PFVuc2lnbmVkQ2hhcj4oYykpOworICAgICAgICBv
cy0+ZmxhZ3MoZmxhZ3MpOworICAgICAgICByZXR1cm4ga0hleEVzY2FwZTsKKyAgICAgIH0KKyAg
fQorICByZXR1cm4ga1NwZWNpYWxFc2NhcGU7Cit9CisKKy8vIFByaW50cyBhIHdjaGFyX3QgYyBh
cyBpZiBpdCdzIHBhcnQgb2YgYSBzdHJpbmcgbGl0ZXJhbCwgZXNjYXBpbmcgaXQgd2hlbgorLy8g
bmVjZXNzYXJ5OyByZXR1cm5zIGhvdyBjIHdhcyBmb3JtYXR0ZWQuCitzdGF0aWMgQ2hhckZvcm1h
dCBQcmludEFzU3RyaW5nTGl0ZXJhbFRvKHdjaGFyX3QgYywgb3N0cmVhbSogb3MpIHsKKyAgc3dp
dGNoIChjKSB7CisgICAgY2FzZSBMJ1wnJzoKKyAgICAgICpvcyA8PCAiJyI7CisgICAgICByZXR1
cm4ga0FzSXM7CisgICAgY2FzZSBMJyInOgorICAgICAgKm9zIDw8ICJcXFwiIjsKKyAgICAgIHJl
dHVybiBrU3BlY2lhbEVzY2FwZTsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIFByaW50QXND
aGFyTGl0ZXJhbFRvPHdjaGFyX3Q+KGMsIG9zKTsKKyAgfQorfQorCisvLyBQcmludHMgYSBjaGFy
IGMgYXMgaWYgaXQncyBwYXJ0IG9mIGEgc3RyaW5nIGxpdGVyYWwsIGVzY2FwaW5nIGl0IHdoZW4K
Ky8vIG5lY2Vzc2FyeTsgcmV0dXJucyBob3cgYyB3YXMgZm9ybWF0dGVkLgorc3RhdGljIENoYXJG
b3JtYXQgUHJpbnRBc1N0cmluZ0xpdGVyYWxUbyhjaGFyIGMsIG9zdHJlYW0qIG9zKSB7CisgIHJl
dHVybiBQcmludEFzU3RyaW5nTGl0ZXJhbFRvKAorICAgICAgc3RhdGljX2Nhc3Q8d2NoYXJfdD4o
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYykpLCBvcyk7Cit9CisKKy8vIFByaW50cyBhIHdp
ZGUgb3IgbmFycm93IGNoYXJhY3RlciBjIGFuZCBpdHMgY29kZS4gICdcMCcgaXMgcHJpbnRlZAor
Ly8gYXMgIidcXDAnIiwgb3RoZXIgdW5wcmludGFibGUgY2hhcmFjdGVycyBhcmUgYWxzbyBwcm9w
ZXJseSBlc2NhcGVkCisvLyB1c2luZyB0aGUgc3RhbmRhcmQgQysrIGVzY2FwZSBzZXF1ZW5jZS4g
IFRoZSB0ZW1wbGF0ZSBhcmd1bWVudAorLy8gVW5zaWduZWRDaGFyIGlzIHRoZSB1bnNpZ25lZCB2
ZXJzaW9uIG9mIENoYXIsIHdoaWNoIGlzIHRoZSB0eXBlIG9mIGMuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVW5zaWduZWRDaGFyLCB0eXBlbmFtZSBDaGFyPgordm9pZCBQcmludENoYXJBbmRDb2RlVG8o
Q2hhciBjLCBvc3RyZWFtKiBvcykgeworICAvLyBGaXJzdCwgcHJpbnQgYyBhcyBhIGxpdGVyYWwg
aW4gdGhlIG1vc3QgcmVhZGFibGUgZm9ybSB3ZSBjYW4gZmluZC4KKyAgKm9zIDw8ICgoc2l6ZW9m
KGMpID4gMSkgPyAiTCciIDogIiciKTsKKyAgY29uc3QgQ2hhckZvcm1hdCBmb3JtYXQgPSBQcmlu
dEFzQ2hhckxpdGVyYWxUbzxVbnNpZ25lZENoYXI+KGMsIG9zKTsKKyAgKm9zIDw8ICInIjsKKwor
ICAvLyBUbyBhaWQgdXNlciBkZWJ1Z2dpbmcsIHdlIGFsc28gcHJpbnQgYydzIGNvZGUgaW4gZGVj
aW1hbCwgdW5sZXNzCisgIC8vIGl0J3MgMCAoaW4gd2hpY2ggY2FzZSBjIHdhcyBwcmludGVkIGFz
ICdcXDAnLCBtYWtpbmcgdGhlIGNvZGUKKyAgLy8gb2J2aW91cykuCisgIGlmIChjID09IDApCisg
ICAgcmV0dXJuOworICAqb3MgPDwgIiAoIiA8PCBzdGF0aWNfY2FzdDxpbnQ+KGMpOworCisgIC8v
IEZvciBtb3JlIGNvbnZlbmllbmNlLCB3ZSBwcmludCBjJ3MgY29kZSBhZ2FpbiBpbiBoZXhhZGVj
aW1hbCwKKyAgLy8gdW5sZXNzIGMgd2FzIGFscmVhZHkgcHJpbnRlZCBpbiB0aGUgZm9ybSAnXHgj
Iycgb3IgdGhlIGNvZGUgaXMgaW4KKyAgLy8gWzEsIDldLgorICBpZiAoZm9ybWF0ID09IGtIZXhF
c2NhcGUgfHwgKDEgPD0gYyAmJiBjIDw9IDkpKSB7CisgICAgLy8gRG8gbm90aGluZy4KKyAgfSBl
bHNlIHsKKyAgICAqb3MgPDwgIiwgMHgiIDw8IFN0cmluZzo6Rm9ybWF0SGV4SW50KHN0YXRpY19j
YXN0PFVuc2lnbmVkQ2hhcj4oYykpOworICB9CisgICpvcyA8PCAiKSI7Cit9CisKK3ZvaWQgUHJp
bnRUbyh1bnNpZ25lZCBjaGFyIGMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludENoYXJB
bmRDb2RlVG88dW5zaWduZWQgY2hhcj4oYywgb3MpOworfQordm9pZCBQcmludFRvKHNpZ25lZCBj
aGFyIGMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludENoYXJBbmRDb2RlVG88dW5zaWdu
ZWQgY2hhcj4oYywgb3MpOworfQorCisvLyBQcmludHMgYSB3Y2hhcl90IGFzIGEgc3ltYm9sIGlm
IGl0IGlzIHByaW50YWJsZSBvciBhcyBpdHMgaW50ZXJuYWwKKy8vIGNvZGUgb3RoZXJ3aXNlIGFu
ZCBhbHNvIGFzIGl0cyBjb2RlLiAgTCdcMCcgaXMgcHJpbnRlZCBhcyAiTCdcXDAnIi4KK3ZvaWQg
UHJpbnRUbyh3Y2hhcl90IHdjLCBvc3RyZWFtKiBvcykgeworICBQcmludENoYXJBbmRDb2RlVG88
d2NoYXJfdD4od2MsIG9zKTsKK30KKworLy8gUHJpbnRzIHRoZSBnaXZlbiBhcnJheSBvZiBjaGFy
YWN0ZXJzIHRvIHRoZSBvc3RyZWFtLiAgQ2hhclR5cGUgbXVzdCBiZSBlaXRoZXIKKy8vIGNoYXIg
b3Igd2NoYXJfdC4KKy8vIFRoZSBhcnJheSBzdGFydHMgYXQgYmVnaW4sIHRoZSBsZW5ndGggaXMg
bGVuLCBpdCBtYXkgaW5jbHVkZSAnXDAnIGNoYXJhY3RlcnMKKy8vIGFuZCBtYXkgbm90IGJlIE5V
TC10ZXJtaW5hdGVkLgordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorR1RFU1RfQVRUUklC
VVRFX05PX1NBTklUSVpFX01FTU9SWV8KK0dURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERS
RVNTXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KK3N0YXRpYyBDaGFyRm9y
bWF0IFByaW50Q2hhcnNBc1N0cmluZ1RvKAorICAgIGNvbnN0IENoYXJUeXBlKiBiZWdpbiwgc2l6
ZV90IGxlbiwgb3N0cmVhbSogb3MpIHsKKyAgY29uc3QgY2hhciogY29uc3Qga1F1b3RlQmVnaW4g
PSBzaXplb2YoQ2hhclR5cGUpID09IDEgPyAiXCIiIDogIkxcIiI7CisgICpvcyA8PCBrUXVvdGVC
ZWdpbjsKKyAgYm9vbCBpc19wcmV2aW91c19oZXggPSBmYWxzZTsKKyAgQ2hhckZvcm1hdCBwcmlu
dF9mb3JtYXQgPSBrQXNJczsKKyAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGxlbjsg
KytpbmRleCkgeworICAgIGNvbnN0IENoYXJUeXBlIGN1ciA9IGJlZ2luW2luZGV4XTsKKyAgICBp
ZiAoaXNfcHJldmlvdXNfaGV4ICYmIElzWERpZ2l0KGN1cikpIHsKKyAgICAgIC8vIFByZXZpb3Vz
IGNoYXJhY3RlciBpcyBvZiAnXHguLicgZm9ybSBhbmQgdGhpcyBjaGFyYWN0ZXIgY2FuIGJlCisg
ICAgICAvLyBpbnRlcnByZXRlZCBhcyBhbm90aGVyIGhleGFkZWNpbWFsIGRpZ2l0IGluIGl0cyBu
dW1iZXIuIEJyZWFrIHN0cmluZyB0bworICAgICAgLy8gZGlzYW1iaWd1YXRlLgorICAgICAgKm9z
IDw8ICJcIiAiIDw8IGtRdW90ZUJlZ2luOworICAgIH0KKyAgICBpc19wcmV2aW91c19oZXggPSBQ
cmludEFzU3RyaW5nTGl0ZXJhbFRvKGN1ciwgb3MpID09IGtIZXhFc2NhcGU7CisgICAgLy8gUmVt
ZW1iZXIgaWYgYW55IGNoYXJhY3RlcnMgcmVxdWlyZWQgaGV4IGVzY2FwaW5nLgorICAgIGlmIChp
c19wcmV2aW91c19oZXgpIHsKKyAgICAgIHByaW50X2Zvcm1hdCA9IGtIZXhFc2NhcGU7CisgICAg
fQorICB9CisgICpvcyA8PCAiXCIiOworICByZXR1cm4gcHJpbnRfZm9ybWF0OworfQorCisvLyBQ
cmludHMgYSAoY29uc3QpIGNoYXIvd2NoYXJfdCBhcnJheSBvZiAnbGVuJyBlbGVtZW50cywgc3Rh
cnRpbmcgYXQgYWRkcmVzcworLy8gJ2JlZ2luJy4gIENoYXJUeXBlIG11c3QgYmUgZWl0aGVyIGNo
YXIgb3Igd2NoYXJfdC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KK0dURVNUX0FUVFJJ
QlVURV9OT19TQU5JVElaRV9NRU1PUllfCitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQURE
UkVTU18KK0dURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9USFJFQURfCitzdGF0aWMgdm9pZCBV
bml2ZXJzYWxQcmludENoYXJBcnJheSgKKyAgICBjb25zdCBDaGFyVHlwZSogYmVnaW4sIHNpemVf
dCBsZW4sIG9zdHJlYW0qIG9zKSB7CisgIC8vIFRoZSBjb2RlCisgIC8vICAgY29uc3QgY2hhciBr
Rm9vW10gPSAiZm9vIjsKKyAgLy8gZ2VuZXJhdGVzIGFuIGFycmF5IG9mIDQsIG5vdCAzLCBlbGVt
ZW50cywgd2l0aCB0aGUgbGFzdCBvbmUgYmVpbmcgJ1wwJy4KKyAgLy8KKyAgLy8gVGhlcmVmb3Jl
IHdoZW4gcHJpbnRpbmcgYSBjaGFyIGFycmF5LCB3ZSBkb24ndCBwcmludCB0aGUgbGFzdCBlbGVt
ZW50IGlmCisgIC8vIGl0J3MgJ1wwJywgc3VjaCB0aGF0IHRoZSBvdXRwdXQgbWF0Y2hlcyB0aGUg
c3RyaW5nIGxpdGVyYWwgYXMgaXQncworICAvLyB3cml0dGVuIGluIHRoZSBzb3VyY2UgY29kZS4K
KyAgaWYgKGxlbiA+IDAgJiYgYmVnaW5bbGVuIC0gMV0gPT0gJ1wwJykgeworICAgIFByaW50Q2hh
cnNBc1N0cmluZ1RvKGJlZ2luLCBsZW4gLSAxLCBvcyk7CisgICAgcmV0dXJuOworICB9CisKKyAg
Ly8gSWYsIGhvd2V2ZXIsIHRoZSBsYXN0IGVsZW1lbnQgaW4gdGhlIGFycmF5IGlzIG5vdCAnXDAn
LCBlLmcuCisgIC8vICAgIGNvbnN0IGNoYXIga0Zvb1tdID0geyAnZicsICdvJywgJ28nIH07Cisg
IC8vIHdlIG11c3QgcHJpbnQgdGhlIGVudGlyZSBhcnJheS4gIFdlIGFsc28gcHJpbnQgYSBtZXNz
YWdlIHRvIGluZGljYXRlCisgIC8vIHRoYXQgdGhlIGFycmF5IGlzIG5vdCBOVUwtdGVybWluYXRl
ZC4KKyAgUHJpbnRDaGFyc0FzU3RyaW5nVG8oYmVnaW4sIGxlbiwgb3MpOworICAqb3MgPDwgIiAo
bm8gdGVybWluYXRpbmcgTlVMKSI7Cit9CisKKy8vIFByaW50cyBhIChjb25zdCkgY2hhciBhcnJh
eSBvZiAnbGVuJyBlbGVtZW50cywgc3RhcnRpbmcgYXQgYWRkcmVzcyAnYmVnaW4nLgordm9pZCBV
bml2ZXJzYWxQcmludEFycmF5KGNvbnN0IGNoYXIqIGJlZ2luLCBzaXplX3QgbGVuLCBvc3RyZWFt
KiBvcykgeworICBVbml2ZXJzYWxQcmludENoYXJBcnJheShiZWdpbiwgbGVuLCBvcyk7Cit9CisK
Ky8vIFByaW50cyBhIChjb25zdCkgd2NoYXJfdCBhcnJheSBvZiAnbGVuJyBlbGVtZW50cywgc3Rh
cnRpbmcgYXQgYWRkcmVzcworLy8gJ2JlZ2luJy4KK3ZvaWQgVW5pdmVyc2FsUHJpbnRBcnJheShj
b25zdCB3Y2hhcl90KiBiZWdpbiwgc2l6ZV90IGxlbiwgb3N0cmVhbSogb3MpIHsKKyAgVW5pdmVy
c2FsUHJpbnRDaGFyQXJyYXkoYmVnaW4sIGxlbiwgb3MpOworfQorCisvLyBQcmludHMgdGhlIGdp
dmVuIEMgc3RyaW5nIHRvIHRoZSBvc3RyZWFtLgordm9pZCBQcmludFRvKGNvbnN0IGNoYXIqIHMs
IG9zdHJlYW0qIG9zKSB7CisgIGlmIChzID09IE5VTEwpIHsKKyAgICAqb3MgPDwgIk5VTEwiOwor
ICB9IGVsc2UgeworICAgICpvcyA8PCBJbXBsaWNpdENhc3RfPGNvbnN0IHZvaWQqPihzKSA8PCAi
IHBvaW50aW5nIHRvICI7CisgICAgUHJpbnRDaGFyc0FzU3RyaW5nVG8ocywgc3RybGVuKHMpLCBv
cyk7CisgIH0KK30KKworLy8gTVNWQyBjb21waWxlciBjYW4gYmUgY29uZmlndXJlZCB0byBkZWZp
bmUgd2hhcl90IGFzIGEgdHlwZWRlZgorLy8gb2YgdW5zaWduZWQgc2hvcnQuIERlZmluaW5nIGFu
IG92ZXJsb2FkIGZvciBjb25zdCB3Y2hhcl90KiBpbiB0aGF0IGNhc2UKKy8vIHdvdWxkIGNhdXNl
IHBvaW50ZXJzIHRvIHVuc2lnbmVkIHNob3J0cyBiZSBwcmludGVkIGFzIHdpZGUgc3RyaW5ncywK
Ky8vIHBvc3NpYmx5IGFjY2Vzc2luZyBtb3JlIG1lbW9yeSB0aGFuIGludGVuZGVkIGFuZCBjYXVz
aW5nIGludmFsaWQKKy8vIG1lbW9yeSBhY2Nlc3Nlcy4gTVNWQyBkZWZpbmVzIF9OQVRJVkVfV0NI
QVJfVF9ERUZJTkVEIHN5bWJvbCB3aGVuCisvLyB3Y2hhcl90IGlzIGltcGxlbWVudGVkIGFzIGEg
bmF0aXZlIHR5cGUuCisjaWYgIWRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX05BVElWRV9X
Q0hBUl9UX0RFRklORUQpCisvLyBQcmludHMgdGhlIGdpdmVuIHdpZGUgQyBzdHJpbmcgdG8gdGhl
IG9zdHJlYW0uCit2b2lkIFByaW50VG8oY29uc3Qgd2NoYXJfdCogcywgb3N0cmVhbSogb3MpIHsK
KyAgaWYgKHMgPT0gTlVMTCkgeworICAgICpvcyA8PCAiTlVMTCI7CisgIH0gZWxzZSB7CisgICAg
Km9zIDw8IEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMpIDw8ICIgcG9pbnRpbmcgdG8gIjsK
KyAgICBQcmludENoYXJzQXNTdHJpbmdUbyhzLCBzdGQ6Ondjc2xlbihzKSwgb3MpOworICB9Cit9
CisjZW5kaWYgIC8vIHdjaGFyX3QgaXMgbmF0aXZlCisKK25hbWVzcGFjZSB7CisKK2Jvb2wgQ29u
dGFpbnNVbnByaW50YWJsZUNvbnRyb2xDb2Rlcyhjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW5n
dGgpIHsKKyAgY29uc3QgdW5zaWduZWQgY2hhciAqcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhciAqPihzdHIpOworCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3Ro
OyBpKyspIHsKKyAgICB1bnNpZ25lZCBjaGFyIGNoID0gKnMrKzsKKyAgICBpZiAoc3RkOjppc2Nu
dHJsKGNoKSkgeworICAgICAgICBzd2l0Y2ggKGNoKSB7CisgICAgICAgIGNhc2UgJ1x0JzoKKyAg
ICAgICAgY2FzZSAnXG4nOgorICAgICAgICBjYXNlICdccic6CisgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAg
IH0KKyAgfQorICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSXNVVEY4VHJhaWxCeXRlKHVuc2ln
bmVkIGNoYXIgdCkgeyByZXR1cm4gMHg4MCA8PSB0ICYmIHQ8PSAweGJmOyB9CisKK2Jvb2wgSXNW
YWxpZFVURjgoY29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuZ3RoKSB7CisgIGNvbnN0IHVuc2ln
bmVkIGNoYXIgKnMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4oc3Ry
KTsKKworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDspIHsKKyAgICB1bnNpZ25lZCBj
aGFyIGxlYWQgPSBzW2krK107CisKKyAgICBpZiAobGVhZCA8PSAweDdmKSB7CisgICAgICBjb250
aW51ZTsgIC8vIHNpbmdsZS1ieXRlIGNoYXJhY3RlciAoQVNDSUkpIDAuLjdGCisgICAgfQorICAg
IGlmIChsZWFkIDwgMHhjMikgeworICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gdHJhaWwgYnl0ZSBv
ciBub24tc2hvcnRlc3QgZm9ybQorICAgIH0gZWxzZSBpZiAobGVhZCA8PSAweGRmICYmIChpICsg
MSkgPD0gbGVuZ3RoICYmIElzVVRGOFRyYWlsQnl0ZShzW2ldKSkgeworICAgICAgKytpOyAgLy8g
Mi1ieXRlIGNoYXJhY3RlcgorICAgIH0gZWxzZSBpZiAoMHhlMCA8PSBsZWFkICYmIGxlYWQgPD0g
MHhlZiAmJiAoaSArIDIpIDw9IGxlbmd0aCAmJgorICAgICAgICAgICAgICAgSXNVVEY4VHJhaWxC
eXRlKHNbaV0pICYmCisgICAgICAgICAgICAgICBJc1VURjhUcmFpbEJ5dGUoc1tpICsgMV0pICYm
CisgICAgICAgICAgICAgICAvLyBjaGVjayBmb3Igbm9uLXNob3J0ZXN0IGZvcm0gYW5kIHN1cnJv
Z2F0ZQorICAgICAgICAgICAgICAgKGxlYWQgIT0gMHhlMCB8fCBzW2ldID49IDB4YTApICYmCisg
ICAgICAgICAgICAgICAobGVhZCAhPSAweGVkIHx8IHNbaV0gPCAweGEwKSkgeworICAgICAgaSAr
PSAyOyAgLy8gMy1ieXRlIGNoYXJhY3RlcgorICAgIH0gZWxzZSBpZiAoMHhmMCA8PSBsZWFkICYm
IGxlYWQgPD0gMHhmNCAmJiAoaSArIDMpIDw9IGxlbmd0aCAmJgorICAgICAgICAgICAgICAgSXNV
VEY4VHJhaWxCeXRlKHNbaV0pICYmCisgICAgICAgICAgICAgICBJc1VURjhUcmFpbEJ5dGUoc1tp
ICsgMV0pICYmCisgICAgICAgICAgICAgICBJc1VURjhUcmFpbEJ5dGUoc1tpICsgMl0pICYmCisg
ICAgICAgICAgICAgICAvLyBjaGVjayBmb3Igbm9uLXNob3J0ZXN0IGZvcm0KKyAgICAgICAgICAg
ICAgIChsZWFkICE9IDB4ZjAgfHwgc1tpXSA+PSAweDkwKSAmJgorICAgICAgICAgICAgICAgKGxl
YWQgIT0gMHhmNCB8fCBzW2ldIDwgMHg5MCkpIHsKKyAgICAgIGkgKz0gMzsgIC8vIDQtYnl0ZSBj
aGFyYWN0ZXIKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQor
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDb25kaXRpb25hbFByaW50QXNUZXh0KGNvbnN0IGNo
YXIqIHN0ciwgc2l6ZV90IGxlbmd0aCwgb3N0cmVhbSogb3MpIHsKKyAgaWYgKCFDb250YWluc1Vu
cHJpbnRhYmxlQ29udHJvbENvZGVzKHN0ciwgbGVuZ3RoKSAmJgorICAgICAgSXNWYWxpZFVURjgo
c3RyLCBsZW5ndGgpKSB7CisgICAgKm9zIDw8ICJcbiAgICBBcyBUZXh0OiBcIiIgPDwgc3RyIDw8
ICJcIiI7CisgIH0KK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCisvLyBQcmludHMg
YSA6OnN0cmluZyBvYmplY3QuCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK3ZvaWQgUHJp
bnRTdHJpbmdUbyhjb25zdCA6OnN0cmluZyYgcywgb3N0cmVhbSogb3MpIHsKKyAgaWYgKFByaW50
Q2hhcnNBc1N0cmluZ1RvKHMuZGF0YSgpLCBzLnNpemUoKSwgb3MpID09IGtIZXhFc2NhcGUpIHsK
KyAgICBpZiAoR1RFU1RfRkxBRyhwcmludF91dGY4KSkgeworICAgICAgQ29uZGl0aW9uYWxQcmlu
dEFzVGV4dChzLmRhdGEoKSwgcy5zaXplKCksIG9zKTsKKyAgICB9CisgIH0KK30KKyNlbmRpZiAg
Ly8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKwordm9pZCBQcmludFN0cmluZ1RvKGNvbnN0IDo6
c3RkOjpzdHJpbmcmIHMsIG9zdHJlYW0qIG9zKSB7CisgIGlmIChQcmludENoYXJzQXNTdHJpbmdU
byhzLmRhdGEoKSwgcy5zaXplKCksIG9zKSA9PSBrSGV4RXNjYXBlKSB7CisgICAgaWYgKEdURVNU
X0ZMQUcocHJpbnRfdXRmOCkpIHsKKyAgICAgIENvbmRpdGlvbmFsUHJpbnRBc1RleHQocy5kYXRh
KCksIHMuc2l6ZSgpLCBvcyk7CisgICAgfQorICB9Cit9CisKKy8vIFByaW50cyBhIDo6d3N0cmlu
ZyBvYmplY3QuCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCit2b2lkIFByaW50V2lkZVN0
cmluZ1RvKGNvbnN0IDo6d3N0cmluZyYgcywgb3N0cmVhbSogb3MpIHsKKyAgUHJpbnRDaGFyc0Fz
U3RyaW5nVG8ocy5kYXRhKCksIHMuc2l6ZSgpLCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hB
U19HTE9CQUxfV1NUUklORworCisjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCit2b2lkIFByaW50
V2lkZVN0cmluZ1RvKGNvbnN0IDo6c3RkOjp3c3RyaW5nJiBzLCBvc3RyZWFtKiBvcykgeworICBQ
cmludENoYXJzQXNTdHJpbmdUbyhzLmRhdGEoKSwgcy5zaXplKCksIG9zKTsKK30KKyNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1NURF9XU1RSSU5HCisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCit9
ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc3JjL2d0ZXN0LXRlc3QtcGFydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9n
dGVzdC10ZXN0LXBhcnQuY2MKaW5kZXggNWQxODNhNDQ2ZjI5NGNlOWUxYTg1ODdjOGI5MTIwYTli
ZWM4ODdkZC4uYzg4ODYwZDkyMzg1NjE5ZWE2NzY0ODg0NTgzOWQxNDU4M2YxMTE0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXRlc3QtcGFydC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjCkBAIC0yNiwy
MSArMjYsMTIgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLS8vCi0vLyBBdXRob3I6IG1oZXVsZUBnb29nbGUuY29tIChNYXJrdXMgSGV1bGUpCi0vLwot
Ly8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogCi0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0Lmg+CisvLworLy8gVGhlIEdvb2dsZSBDKysgVGVz
dGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogCi0vLyBJbmRpY2F0ZXMg
dGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBp
bXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmgg
aXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlz
IHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRp
bmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9J
TVBMRU1FTlRBVElPTl8gMQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oIgogI2lu
Y2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRB
VElPTl8KIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC00OCwxMCArMzksMTAgQEAgdXNpbmcg
aW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbDsKIAogLy8gR2V0cyB0aGUgc3VtbWFyeSBvZiB0aGUg
ZmFpbHVyZSBtZXNzYWdlIGJ5IG9taXR0aW5nIHRoZSBzdGFjayB0cmFjZQogLy8gaW4gaXQuCi1p
bnRlcm5hbDo6U3RyaW5nIFRlc3RQYXJ0UmVzdWx0OjpFeHRyYWN0U3VtbWFyeShjb25zdCBjaGFy
KiBtZXNzYWdlKSB7CitzdGQ6OnN0cmluZyBUZXN0UGFydFJlc3VsdDo6RXh0cmFjdFN1bW1hcnko
Y29uc3QgY2hhciogbWVzc2FnZSkgewogICBjb25zdCBjaGFyKiBjb25zdCBzdGFja190cmFjZSA9
IHN0cnN0cihtZXNzYWdlLCBpbnRlcm5hbDo6a1N0YWNrVHJhY2VNYXJrZXIpOwotICByZXR1cm4g
c3RhY2tfdHJhY2UgPT0gTlVMTCA/IGludGVybmFsOjpTdHJpbmcobWVzc2FnZSkgOgotICAgICAg
aW50ZXJuYWw6OlN0cmluZyhtZXNzYWdlLCBzdGFja190cmFjZSAtIG1lc3NhZ2UpOworICByZXR1
cm4gc3RhY2tfdHJhY2UgPT0gTlVMTCA/IG1lc3NhZ2UgOgorICAgICAgc3RkOjpzdHJpbmcobWVz
c2FnZSwgc3RhY2tfdHJhY2UpOwogfQogCiAvLyBQcmludHMgYSBUZXN0UGFydFJlc3VsdCBvYmpl
Y3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtdHlwZWQt
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10eXBlZC10ZXN0LmNj
CmluZGV4IDNjYzRiNWRlMmFhY2I3NTk4OTExOWM1Zjk2YzdmNGY4MGVhZDVjYWUuLjFkYzJhZDM4
YmFiOThiYzE0NmMxNjE1OGE0N2RhMWUzOTRiZjM4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10eXBlZC10ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3NyYy9ndGVzdC10eXBlZC10ZXN0LmNjCkBAIC0yNiwxMSArMjYsMTEgQEAKIC8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRo
b3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC10eXBlZC10ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaCIKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIG5h
bWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CkBAIC00MCwzOCArNDAsNDYg
QEAgbmFtZXNwYWNlIGludGVybmFsIHsKIC8vIFNraXBzIHRvIHRoZSBmaXJzdCBub24tc3BhY2Ug
Y2hhciBpbiBzdHIuIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGlmIHN0cgogLy8gY29udGFpbnMg
b25seSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMuCiBzdGF0aWMgY29uc3QgY2hhciogU2tpcFNwYWNl
cyhjb25zdCBjaGFyKiBzdHIpIHsKLSAgd2hpbGUgKGlzc3BhY2UoKnN0cikpCisgIHdoaWxlIChJ
c1NwYWNlKCpzdHIpKQogICAgIHN0cisrOwogICByZXR1cm4gc3RyOwogfQogCitzdGF0aWMgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+IFNwbGl0SW50b1Rlc3ROYW1lcyhjb25zdCBjaGFyKiBzcmMp
IHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG5hbWVfdmVjOworICBzcmMgPSBTa2lwU3Bh
Y2VzKHNyYyk7CisgIGZvciAoOyBzcmMgIT0gTlVMTDsgc3JjID0gU2tpcENvbW1hKHNyYykpIHsK
KyAgICBuYW1lX3ZlYy5wdXNoX2JhY2soU3RyaXBUcmFpbGluZ1NwYWNlcyhHZXRQcmVmaXhVbnRp
bENvbW1hKHNyYykpKTsKKyAgfQorICByZXR1cm4gbmFtZV92ZWM7Cit9CisKIC8vIFZlcmlmaWVz
IHRoYXQgcmVnaXN0ZXJlZF90ZXN0cyBtYXRjaCB0aGUgdGVzdCBuYW1lcyBpbgotLy8gZGVmaW5l
ZF90ZXN0X25hbWVzXzsgcmV0dXJucyByZWdpc3RlcmVkX3Rlc3RzIGlmIHN1Y2Nlc3NmdWwsIG9y
CisvLyByZWdpc3RlcmVkX3Rlc3RzXzsgcmV0dXJucyByZWdpc3RlcmVkX3Rlc3RzIGlmIHN1Y2Nl
c3NmdWwsIG9yCiAvLyBhYm9ydHMgdGhlIHByb2dyYW0gb3RoZXJ3aXNlLgogY29uc3QgY2hhciog
VHlwZWRUZXN0Q2FzZVBTdGF0ZTo6VmVyaWZ5UmVnaXN0ZXJlZFRlc3ROYW1lcygKICAgICBjb25z
dCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogcmVnaXN0ZXJlZF90ZXN0cykgewot
ICB0eXBlZGVmIDo6c3RkOjpzZXQ8Y29uc3QgY2hhcio+Ojpjb25zdF9pdGVyYXRvciBEZWZpbmVk
VGVzdEl0ZXI7CisgIHR5cGVkZWYgUmVnaXN0ZXJlZFRlc3RzTWFwOjpjb25zdF9pdGVyYXRvciBS
ZWdpc3RlcmVkVGVzdEl0ZXI7CiAgIHJlZ2lzdGVyZWRfID0gdHJ1ZTsKIAotICAvLyBTa2lwIGlu
aXRpYWwgd2hpdGVzcGFjZSBpbiByZWdpc3RlcmVkX3Rlc3RzIHNpbmNlIHNvbWUKLSAgLy8gcHJl
cHJvY2Vzc29ycyBwcmVmaXggc3RyaW5naXppZWQgbGl0ZXJhbHMgd2l0aCB3aGl0ZXNwYWNlLgot
ICByZWdpc3RlcmVkX3Rlc3RzID0gU2tpcFNwYWNlcyhyZWdpc3RlcmVkX3Rlc3RzKTsKKyAgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+IG5hbWVfdmVjID0gU3BsaXRJbnRvVGVzdE5hbWVzKHJlZ2lz
dGVyZWRfdGVzdHMpOwogCiAgIE1lc3NhZ2UgZXJyb3JzOwotICA6OnN0ZDo6c2V0PFN0cmluZz4g
dGVzdHM7Ci0gIGZvciAoY29uc3QgY2hhciogbmFtZXMgPSByZWdpc3RlcmVkX3Rlc3RzOyBuYW1l
cyAhPSBOVUxMOwotICAgICAgIG5hbWVzID0gU2tpcENvbW1hKG5hbWVzKSkgewotICAgIGNvbnN0
IFN0cmluZyBuYW1lID0gR2V0UHJlZml4VW50aWxDb21tYShuYW1lcyk7CisKKyAgc3RkOjpzZXQ8
c3RkOjpzdHJpbmc+IHRlc3RzOworICBmb3IgKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPjo6Y29u
c3RfaXRlcmF0b3IgbmFtZV9pdCA9IG5hbWVfdmVjLmJlZ2luKCk7CisgICAgICAgbmFtZV9pdCAh
PSBuYW1lX3ZlYy5lbmQoKTsgKytuYW1lX2l0KSB7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5h
bWUgPSAqbmFtZV9pdDsKICAgICBpZiAodGVzdHMuY291bnQobmFtZSkgIT0gMCkgewogICAgICAg
ZXJyb3JzIDw8ICJUZXN0ICIgPDwgbmFtZSA8PCAiIGlzIGxpc3RlZCBtb3JlIHRoYW4gb25jZS5c
biI7CiAgICAgICBjb250aW51ZTsKICAgICB9CiAKICAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0g
ICAgZm9yIChEZWZpbmVkVGVzdEl0ZXIgaXQgPSBkZWZpbmVkX3Rlc3RfbmFtZXNfLmJlZ2luKCk7
Ci0gICAgICAgICBpdCAhPSBkZWZpbmVkX3Rlc3RfbmFtZXNfLmVuZCgpOworICAgIGZvciAoUmVn
aXN0ZXJlZFRlc3RJdGVyIGl0ID0gcmVnaXN0ZXJlZF90ZXN0c18uYmVnaW4oKTsKKyAgICAgICAg
IGl0ICE9IHJlZ2lzdGVyZWRfdGVzdHNfLmVuZCgpOwogICAgICAgICAgKytpdCkgewotICAgICAg
aWYgKG5hbWUgPT0gKml0KSB7CisgICAgICBpZiAobmFtZSA9PSBpdC0+Zmlyc3QpIHsKICAgICAg
ICAgZm91bmQgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICAgIH0KQEAgLTg1LDE1ICs5Mywx
NSBAQCBjb25zdCBjaGFyKiBUeXBlZFRlc3RDYXNlUFN0YXRlOjpWZXJpZnlSZWdpc3RlcmVkVGVz
dE5hbWVzKAogICAgIH0KICAgfQogCi0gIGZvciAoRGVmaW5lZFRlc3RJdGVyIGl0ID0gZGVmaW5l
ZF90ZXN0X25hbWVzXy5iZWdpbigpOwotICAgICAgIGl0ICE9IGRlZmluZWRfdGVzdF9uYW1lc18u
ZW5kKCk7CisgIGZvciAoUmVnaXN0ZXJlZFRlc3RJdGVyIGl0ID0gcmVnaXN0ZXJlZF90ZXN0c18u
YmVnaW4oKTsKKyAgICAgICBpdCAhPSByZWdpc3RlcmVkX3Rlc3RzXy5lbmQoKTsKICAgICAgICAr
K2l0KSB7Ci0gICAgaWYgKHRlc3RzLmNvdW50KCppdCkgPT0gMCkgewotICAgICAgZXJyb3JzIDw8
ICJZb3UgZm9yZ290IHRvIGxpc3QgdGVzdCAiIDw8ICppdCA8PCAiLlxuIjsKKyAgICBpZiAodGVz
dHMuY291bnQoaXQtPmZpcnN0KSA9PSAwKSB7CisgICAgICBlcnJvcnMgPDwgIllvdSBmb3Jnb3Qg
dG8gbGlzdCB0ZXN0ICIgPDwgaXQtPmZpcnN0IDw8ICIuXG4iOwogICAgIH0KICAgfQogCi0gIGNv
bnN0IFN0cmluZyYgZXJyb3JzX3N0ciA9IGVycm9ycy5HZXRTdHJpbmcoKTsKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcmIGVycm9yc19zdHIgPSBlcnJvcnMuR2V0U3RyaW5nKCk7CiAgIGlmIChlcnJvcnNf
c3RyICE9ICIiKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICIlcyAlcyIsIEZvcm1hdEZpbGVMb2Nh
dGlvbihmaWxlLCBsaW5lKS5jX3N0cigpLAogICAgICAgICAgICAgZXJyb3JzX3N0ci5jX3N0cigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC5jYwppbmRleCA1Yjg3MWMwYWRiMGExYzRj
ZmEyMzc1NTQwNTdkNTE2MDg0NjE5NTBlLi45Nzk2NjM3NzQ5YTdhZGE5NDAzZDZhZDhkNjVjMmE2
Njc1NWQ0MTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LmNjCkBAIC0yNiwxMTIg
KzI2LDEzMSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8v
IFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIFRoZSBH
b29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIAot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+Cisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9jdXN0b20v
Z3Rlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKIAogI2luY2x1ZGUgPGN0eXBl
Lmg+CiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0
ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1ZGUg
PHdjaGFyLmg+CiAjaW5jbHVkZSA8d2N0eXBlLmg+CiAKICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0j
aW5jbHVkZSA8b3N0cmVhbT4KKyNpbmNsdWRlIDxpb21hbmlwPgorI2luY2x1ZGUgPGxpbWl0cz4K
KyNpbmNsdWRlIDxsaXN0PgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxvc3RyZWFtPiAgLy8g
Tk9MSU5UCiAjaW5jbHVkZSA8c3N0cmVhbT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpZiBHVEVT
VF9PU19MSU5VWAogCi0vLyBUT0RPKGtlbnRvbkBnb29nbGUuY29tKTogVXNlIGF1dG9jb25mIHRv
IGRldGVjdCBhdmFpbGFiaWxpdHkgb2YKKy8vIEZJWE1FOiBVc2UgYXV0b2NvbmYgdG8gZGV0ZWN0
IGF2YWlsYWJpbGl0eSBvZgogLy8gZ2V0dGltZW9mZGF5KCkuCi0jZGVmaW5lIEdURVNUX0hBU19H
RVRUSU1FT0ZEQVlfIDEKKyMgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKIAotI2lu
Y2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8c2NoZWQuaD4K
KyMgaW5jbHVkZSA8ZmNudGwuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxsaW1pdHMuaD4gIC8v
IE5PTElOVAorIyBpbmNsdWRlIDxzY2hlZC5oPiAgLy8gTk9MSU5UCiAvLyBEZWNsYXJlcyB2c25w
cmludGYoKS4gIFRoaXMgaGVhZGVyIGlzIG5vdCBhdmFpbGFibGUgb24gV2luZG93cy4KLSNpbmNs
dWRlIDxzdHJpbmdzLmg+Ci0jaW5jbHVkZSA8c3lzL21tYW4uaD4KLSNpbmNsdWRlIDxzeXMvdGlt
ZS5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx2
ZWN0b3I+CisjIGluY2x1ZGUgPHN0cmluZ3MuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxzeXMv
bW1hbi5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMg
aW5jbHVkZSA8dW5pc3RkLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3RyaW5nPgogCiAjZWxp
ZiBHVEVTVF9PU19TWU1CSUFOCi0jZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKLSNp
bmNsdWRlIDxzeXMvdGltZS5oPiAgLy8gTk9MSU5UCisjIGRlZmluZSBHVEVTVF9IQVNfR0VUVElN
RU9GREFZXyAxCisjIGluY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKIAogI2VsaWYgR1RF
U1RfT1NfWk9TCi0jZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKLSNpbmNsdWRlIDxz
eXMvdGltZS5oPiAgLy8gTk9MSU5UCisjIGRlZmluZSBHVEVTVF9IQVNfR0VUVElNRU9GREFZXyAx
CisjIGluY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKIAogLy8gT24gei9PUyB3ZSBhZGRp
dGlvbmFsbHkgbmVlZCBzdHJpbmdzLmggZm9yIHN0cmNhc2VjbXAuCi0jaW5jbHVkZSA8c3RyaW5n
cy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN0cmluZ3MuaD4gIC8vIE5PTElOVAogCiAjZWxp
ZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRSAgLy8gV2UgYXJlIG9uIFdpbmRvd3MgQ0UuCiAKLSNp
bmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8d2luZG93cy5oPiAgLy8g
Tk9MSU5UCisjIHVuZGVmIG1pbgogCiAjZWxpZiBHVEVTVF9PU19XSU5ET1dTICAvLyBXZSBhcmUg
b24gV2luZG93cyBwcm9wZXIuCiAKLSNpbmNsdWRlIDxpby5oPiAgLy8gTk9MSU5UCi0jaW5jbHVk
ZSA8c3lzL3RpbWViLmg+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4gIC8vIE5P
TElOVAotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8aW8uaD4g
IC8vIE5PTElOVAorIyBpbmNsdWRlIDxzeXMvdGltZWIuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRl
IDxzeXMvdHlwZXMuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxzeXMvc3RhdC5oPiAgLy8gTk9M
SU5UCiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01JTkdXCisjIGlmIEdURVNUX09TX1dJTkRPV1Nf
TUlOR1cKIC8vIE1pbkdXIGhhcyBnZXR0aW1lb2ZkYXkoKSBidXQgbm90IF9mdGltZTY0KCkuCi0v
LyBUT0RPKGtlbnRvbkBnb29nbGUuY29tKTogVXNlIGF1dG9jb25mIHRvIGRldGVjdCBhdmFpbGFi
aWxpdHkgb2YKKy8vIEZJWE1FOiBVc2UgYXV0b2NvbmYgdG8gZGV0ZWN0IGF2YWlsYWJpbGl0eSBv
ZgogLy8gICBnZXR0aW1lb2ZkYXkoKS4KLS8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBUaGVy
ZSBhcmUgb3RoZXIgd2F5cyB0byBnZXQgdGhlIHRpbWUgb24KKy8vIEZJWE1FOiBUaGVyZSBhcmUg
b3RoZXIgd2F5cyB0byBnZXQgdGhlIHRpbWUgb24KIC8vICAgV2luZG93cywgbGlrZSBHZXRUaWNr
Q291bnQoKSBvciBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgpLiAgTWluR1cKIC8vICAgc3VwcG9y
dHMgdGhlc2UuICBjb25zaWRlciB1c2luZyB0aGVtIGluc3RlYWQuCi0jZGVmaW5lIEdURVNUX0hB
U19HRVRUSU1FT0ZEQVlfIDEKLSNpbmNsdWRlIDxzeXMvdGltZS5oPiAgLy8gTk9MSU5UCi0jZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTUlOR1cKKyMgIGRlZmluZSBHVEVTVF9IQVNfR0VUVElN
RU9GREFZXyAxCisjICBpbmNsdWRlIDxzeXMvdGltZS5oPiAgLy8gTk9MSU5UCisjIGVuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTX01JTkdXCiAKIC8vIGNwcGxpbnQgdGhpbmtzIHRoYXQgdGhlIGhl
YWRlciBpcyBhbHJlYWR5IGluY2x1ZGVkLCBzbyB3ZSB3YW50IHRvCiAvLyBzaWxlbmNlIGl0Lgot
I2luY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDx3aW5kb3dzLmg+ICAv
LyBOT0xJTlQKKyMgdW5kZWYgbWluCiAKICNlbHNlCiAKIC8vIEFzc3VtZSBvdGhlciBwbGF0Zm9y
bXMgaGF2ZSBnZXR0aW1lb2ZkYXkoKS4KLS8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBVc2Ug
YXV0b2NvbmYgdG8gZGV0ZWN0IGF2YWlsYWJpbGl0eSBvZgorLy8gRklYTUU6IFVzZSBhdXRvY29u
ZiB0byBkZXRlY3QgYXZhaWxhYmlsaXR5IG9mCiAvLyAgIGdldHRpbWVvZmRheSgpLgotI2RlZmlu
ZSBHVEVTVF9IQVNfR0VUVElNRU9GREFZXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfR0VUVElNRU9G
REFZXyAxCiAKIC8vIGNwcGxpbnQgdGhpbmtzIHRoYXQgdGhlIGhlYWRlciBpcyBhbHJlYWR5IGlu
Y2x1ZGVkLCBzbyB3ZSB3YW50IHRvCiAvLyBzaWxlbmNlIGl0LgotI2luY2x1ZGUgPHN5cy90aW1l
Lmg+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDx1bmlzdGQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRl
IDxzeXMvdGltZS5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHVuaXN0ZC5oPiAgLy8gTk9MSU5U
CiAKICNlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKIAogI2lmIEdURVNUX0hBU19FWENFUFRJT05T
Ci0jaW5jbHVkZSA8c3RkZXhjZXB0PgorIyBpbmNsdWRlIDxzdGRleGNlcHQ+CisjZW5kaWYKKwor
I2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKyMgaW5jbHVkZSA8YXJwYS9pbmV0Lmg+ICAv
LyBOT0xJTlQKKyMgaW5jbHVkZSA8bmV0ZGIuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxzeXMv
c29ja2V0Lmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAvLyBOT0xJTlQK
ICNlbmRpZgogCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFy
dCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZv
cmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJl
IGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBm
cm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhp
cyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQogI2luY2x1ZGUgInNyYy9n
dGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KIAogI2lm
IEdURVNUX09TX1dJTkRPV1MKLSNkZWZpbmUgdnNucHJpbnRmIF92c25wcmludGYKKyMgZGVmaW5l
IHZzbnByaW50ZiBfdnNucHJpbnRmCiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAorI2lm
IEdURVNUX09TX01BQworI2lmbmRlZiBHVEVTVF9PU19JT1MKKyNpbmNsdWRlIDxjcnRfZXh0ZXJu
cy5oPgorI2VuZGlmCisjZW5kaWYKKworI2lmIEdURVNUX0hBU19BQlNMCisjaW5jbHVkZSAiYWJz
bC9kZWJ1Z2dpbmcvZmFpbHVyZV9zaWduYWxfaGFuZGxlci5oIgorI2luY2x1ZGUgImFic2wvZGVi
dWdnaW5nL3N0YWNrdHJhY2UuaCIKKyNpbmNsdWRlICJhYnNsL2RlYnVnZ2luZy9zeW1ib2xpemUu
aCIKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgorI2VuZGlmICAvLyBHVEVTVF9I
QVNfQUJTTAorCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKIHVzaW5nIGludGVybmFsOjpDb3VudElm
OwpAQCAtMTUzLDggKzE3MiwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciBrRGVhdGhUZXN0Q2FzZUZp
bHRlcltdID0gIipEZWF0aFRlc3Q6KkRlYXRoVGVzdC8qIjsKIC8vIEEgdGVzdCBmaWx0ZXIgdGhh
dCBtYXRjaGVzIGV2ZXJ5dGhpbmcuCiBzdGF0aWMgY29uc3QgY2hhciBrVW5pdmVyc2FsRmlsdGVy
W10gPSAiKiI7CiAKLS8vIFRoZSBkZWZhdWx0IG91dHB1dCBmaWxlIGZvciBYTUwgb3V0cHV0Lgot
c3RhdGljIGNvbnN0IGNoYXIga0RlZmF1bHRPdXRwdXRGaWxlW10gPSAidGVzdF9kZXRhaWwueG1s
IjsKKy8vIFRoZSBkZWZhdWx0IG91dHB1dCBmb3JtYXQuCitzdGF0aWMgY29uc3QgY2hhciBrRGVm
YXVsdE91dHB1dEZvcm1hdFtdID0gInhtbCI7CisvLyBUaGUgZGVmYXVsdCBvdXRwdXQgZmlsZS4K
K3N0YXRpYyBjb25zdCBjaGFyIGtEZWZhdWx0T3V0cHV0RmlsZVtdID0gInRlc3RfZGV0YWlsIjsK
IAogLy8gVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUgZm9yIHRoZSB0ZXN0IHNoYXJkIGlu
ZGV4Lgogc3RhdGljIGNvbnN0IGNoYXIga1Rlc3RTaGFyZEluZGV4W10gPSAiR1RFU1RfU0hBUkRf
SU5ERVgiOwpAQCAtMTczLDggKzE5NCwzNCBAQCBjb25zdCBjaGFyIGtTdGFja1RyYWNlTWFya2Vy
W10gPSAiXG5TdGFjayB0cmFjZTpcbiI7CiAvLyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGlu
ZS4KIGJvb2wgZ19oZWxwX2ZsYWcgPSBmYWxzZTsKIAorLy8gVXRpbHR5IGZ1bmN0aW9uIHRvIE9w
ZW4gRmlsZSBmb3IgV3JpdGluZworc3RhdGljIEZJTEUqIE9wZW5GaWxlRm9yV3JpdGluZyhjb25z
dCBzdGQ6OnN0cmluZyYgb3V0cHV0X2ZpbGUpIHsKKyAgRklMRSogZmlsZW91dCA9IE5VTEw7Cisg
IEZpbGVQYXRoIG91dHB1dF9maWxlX3BhdGgob3V0cHV0X2ZpbGUpOworICBGaWxlUGF0aCBvdXRw
dXRfZGlyKG91dHB1dF9maWxlX3BhdGguUmVtb3ZlRmlsZU5hbWUoKSk7CisKKyAgaWYgKG91dHB1
dF9kaXIuQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKSB7CisgICAgZmlsZW91dCA9IHBv
c2l4OjpGT3BlbihvdXRwdXRfZmlsZS5jX3N0cigpLCAidyIpOworICB9CisgIGlmIChmaWxlb3V0
ID09IE5VTEwpIHsKKyAgICBHVEVTVF9MT0dfKEZBVEFMKSA8PCAiVW5hYmxlIHRvIG9wZW4gZmls
ZSBcIiIgPDwgb3V0cHV0X2ZpbGUgPDwgIlwiIjsKKyAgfQorICByZXR1cm4gZmlsZW91dDsKK30K
KwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiAKKy8vIEJhemVsIHBhc3NlcyBpbiB0aGUgYXJn
dW1lbnQgdG8gJy0tdGVzdF9maWx0ZXInIHZpYSB0aGUgVEVTVEJSSURHRV9URVNUX09OTFkKKy8v
IGVudmlyb25tZW50IHZhcmlhYmxlLgorc3RhdGljIGNvbnN0IGNoYXIqIEdldERlZmF1bHRGaWx0
ZXIoKSB7CisgIGNvbnN0IGNoYXIqIGNvbnN0IHRlc3RicmlkZ2VfdGVzdF9vbmx5ID0KKyAgICAg
IGludGVybmFsOjpwb3NpeDo6R2V0RW52KCJURVNUQlJJREdFX1RFU1RfT05MWSIpOworICBpZiAo
dGVzdGJyaWRnZV90ZXN0X29ubHkgIT0gTlVMTCkgeworICAgIHJldHVybiB0ZXN0YnJpZGdlX3Rl
c3Rfb25seTsKKyAgfQorICByZXR1cm4ga1VuaXZlcnNhbEZpbHRlcjsKK30KKwogR1RFU1RfREVG
SU5FX2Jvb2xfKAogICAgIGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzLAogICAgIGludGVybmFsOjpC
b29sRnJvbUdUZXN0RW52KCJhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyIsIGZhbHNlKSwKQEAgLTE4
Nyw3ICsyMzQsNyBAQCBHVEVTVF9ERUZJTkVfYm9vbF8oCiAKIEdURVNUX0RFRklORV9ib29sXygK
ICAgICBjYXRjaF9leGNlcHRpb25zLAotICAgIGludGVybmFsOjpCb29sRnJvbUdUZXN0RW52KCJj
YXRjaF9leGNlcHRpb25zIiwgZmFsc2UpLAorICAgIGludGVybmFsOjpCb29sRnJvbUdUZXN0RW52
KCJjYXRjaF9leGNlcHRpb25zIiwgdHJ1ZSksCiAgICAgIlRydWUgaWZmICIgR1RFU1RfTkFNRV8K
ICAgICAiIHNob3VsZCBjYXRjaCBleGNlcHRpb25zIGFuZCB0cmVhdCB0aGVtIGFzIHRlc3QgZmFp
bHVyZXMuIik7CiAKQEAgLTE5NywyNiArMjQ0LDM5IEBAIEdURVNUX0RFRklORV9zdHJpbmdfKAog
ICAgICJXaGV0aGVyIHRvIHVzZSBjb2xvcnMgaW4gdGhlIG91dHB1dC4gIFZhbGlkIHZhbHVlczog
eWVzLCBubywgIgogICAgICJhbmQgYXV0by4gICdhdXRvJyBtZWFucyB0byB1c2UgY29sb3JzIGlm
IHRoZSBvdXRwdXQgaXMgIgogICAgICJiZWluZyBzZW50IHRvIGEgdGVybWluYWwgYW5kIHRoZSBU
RVJNIGVudmlyb25tZW50IHZhcmlhYmxlICIKLSAgICAiaXMgc2V0IHRvIHh0ZXJtLCB4dGVybS1j
b2xvciwgeHRlcm0tMjU2Y29sb3IsIGxpbnV4IG9yIGN5Z3dpbi4iKTsKKyAgICAiaXMgc2V0IHRv
IGEgdGVybWluYWwgdHlwZSB0aGF0IHN1cHBvcnRzIGNvbG9ycy4iKTsKIAogR1RFU1RfREVGSU5F
X3N0cmluZ18oCiAgICAgZmlsdGVyLAotICAgIGludGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYo
ImZpbHRlciIsIGtVbml2ZXJzYWxGaWx0ZXIpLAorICAgIGludGVybmFsOjpTdHJpbmdGcm9tR1Rl
c3RFbnYoImZpbHRlciIsIEdldERlZmF1bHRGaWx0ZXIoKSksCiAgICAgIkEgY29sb24tc2VwYXJh
dGVkIGxpc3Qgb2YgZ2xvYiAobm90IHJlZ2V4KSBwYXR0ZXJucyAiCiAgICAgImZvciBmaWx0ZXJp
bmcgdGhlIHRlc3RzIHRvIHJ1biwgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhICIKICAgICAiJy0n
IGFuZCBhIDogc2VwYXJhdGVkIGxpc3Qgb2YgbmVnYXRpdmUgcGF0dGVybnMgKHRlc3RzIHRvICIK
ICAgICAiZXhjbHVkZSkuICBBIHRlc3QgaXMgcnVuIGlmIGl0IG1hdGNoZXMgb25lIG9mIHRoZSBw
b3NpdGl2ZSAiCiAgICAgInBhdHRlcm5zIGFuZCBkb2VzIG5vdCBtYXRjaCBhbnkgb2YgdGhlIG5l
Z2F0aXZlIHBhdHRlcm5zLiIpOwogCitHVEVTVF9ERUZJTkVfYm9vbF8oCisgICAgaW5zdGFsbF9m
YWlsdXJlX3NpZ25hbF9oYW5kbGVyLAorICAgIGludGVybmFsOjpCb29sRnJvbUdUZXN0RW52KCJp
bnN0YWxsX2ZhaWx1cmVfc2lnbmFsX2hhbmRsZXIiLCBmYWxzZSksCisgICAgIklmIHRydWUgYW5k
IHN1cHBvcnRlZCBvbiB0aGUgY3VycmVudCBwbGF0Zm9ybSwgIiBHVEVTVF9OQU1FXyAiIHNob3Vs
ZCAiCisgICAgImluc3RhbGwgYSBzaWduYWwgaGFuZGxlciB0aGF0IGR1bXBzIGRlYnVnZ2luZyBp
bmZvcm1hdGlvbiB3aGVuIGZhdGFsICIKKyAgICAic2lnbmFscyBhcmUgcmFpc2VkLiIpOworCiBH
VEVTVF9ERUZJTkVfYm9vbF8obGlzdF90ZXN0cywgZmFsc2UsCiAgICAgICAgICAgICAgICAgICAg
Ikxpc3QgYWxsIHRlc3RzIHdpdGhvdXQgcnVubmluZyB0aGVtLiIpOwogCisvLyBUaGUgbmV0IHBy
aW9yaXR5IG9yZGVyIGFmdGVyIGZsYWcgcHJvY2Vzc2luZyBpcyB0aHVzOgorLy8gICAtLWd0ZXN0
X291dHB1dCBjb21tYW5kIGxpbmUgZmxhZworLy8gICBHVEVTVF9PVVRQVVQgZW52aXJvbm1lbnQg
dmFyaWFibGUKKy8vICAgWE1MX09VVFBVVF9GSUxFIGVudmlyb25tZW50IHZhcmlhYmxlCisvLyAg
ICcnCiBHVEVTVF9ERUZJTkVfc3RyaW5nXygKICAgICBvdXRwdXQsCi0gICAgaW50ZXJuYWw6OlN0
cmluZ0Zyb21HVGVzdEVudigib3V0cHV0IiwgIiIpLAotICAgICJBIGZvcm1hdCAoY3VycmVudGx5
IG11c3QgYmUgXCJ4bWxcIiksIG9wdGlvbmFsbHkgZm9sbG93ZWQgIgotICAgICJieSBhIGNvbG9u
IGFuZCBhbiBvdXRwdXQgZmlsZSBuYW1lIG9yIGRpcmVjdG9yeS4gQSBkaXJlY3RvcnkgIgotICAg
ICJpcyBpbmRpY2F0ZWQgYnkgYSB0cmFpbGluZyBwYXRobmFtZSBzZXBhcmF0b3IuICIKKyAgICBp
bnRlcm5hbDo6U3RyaW5nRnJvbUdUZXN0RW52KCJvdXRwdXQiLAorICAgICAgaW50ZXJuYWw6Ok91
dHB1dEZsYWdBbHNvQ2hlY2tFbnZWYXIoKS5jX3N0cigpKSwKKyAgICAiQSBmb3JtYXQgKGRlZmF1
bHRzIHRvIFwieG1sXCIgYnV0IGNhbiBiZSBzcGVjaWZpZWQgdG8gYmUgXCJqc29uXCIpLCAiCisg
ICAgIm9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSBjb2xvbiBhbmQgYW4gb3V0cHV0IGZpbGUgbmFt
ZSBvciBkaXJlY3RvcnkuICIKKyAgICAiQSBkaXJlY3RvcnkgaXMgaW5kaWNhdGVkIGJ5IGEgdHJh
aWxpbmcgcGF0aG5hbWUgc2VwYXJhdG9yLiAiCiAgICAgIkV4YW1wbGVzOiBcInhtbDpmaWxlbmFt
ZS54bWxcIiwgXCJ4bWw6OmRpcmVjdG9yeW5hbWUvXCIuICIKICAgICAiSWYgYSBkaXJlY3Rvcnkg
aXMgc3BlY2lmaWVkLCBvdXRwdXQgZmlsZXMgd2lsbCBiZSBjcmVhdGVkICIKICAgICAid2l0aGlu
IHRoYXQgZGlyZWN0b3J5LCB3aXRoIGZpbGUtbmFtZXMgYmFzZWQgb24gdGhlIHRlc3QgIgpAQCAt
MjI5LDYgKzI4OSwxMiBAQCBHVEVTVF9ERUZJTkVfYm9vbF8oCiAgICAgIlRydWUgaWZmICIgR1RF
U1RfTkFNRV8KICAgICAiIHNob3VsZCBkaXNwbGF5IGVsYXBzZWQgdGltZSBpbiB0ZXh0IG91dHB1
dC4iKTsKIAorR1RFU1RfREVGSU5FX2Jvb2xfKAorICAgIHByaW50X3V0ZjgsCisgICAgaW50ZXJu
YWw6OkJvb2xGcm9tR1Rlc3RFbnYoInByaW50X3V0ZjgiLCB0cnVlKSwKKyAgICAiVHJ1ZSBpZmYg
IiBHVEVTVF9OQU1FXworICAgICIgcHJpbnRzIFVURjggY2hhcmFjdGVycyBhcyB0ZXh0LiIpOwor
CiBHVEVTVF9ERUZJTkVfaW50MzJfKAogICAgIHJhbmRvbV9zZWVkLAogICAgIGludGVybmFsOjpJ
bnQzMkZyb21HVGVzdEVudigicmFuZG9tX3NlZWQiLCAwKSwKQEAgLTI1OCwxMiArMzI0LDI2IEBA
IEdURVNUX0RFRklORV9pbnQzMl8oCiAgICAgIlRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBm
cmFtZXMgdG8gcHJpbnQgd2hlbiBhbiAiCiAgICAgImFzc2VydGlvbiBmYWlscy4gIFRoZSB2YWxp
ZCByYW5nZSBpcyAwIHRocm91Z2ggMTAwLCBpbmNsdXNpdmUuIik7CiAKK0dURVNUX0RFRklORV9z
dHJpbmdfKAorICAgIHN0cmVhbV9yZXN1bHRfdG8sCisgICAgaW50ZXJuYWw6OlN0cmluZ0Zyb21H
VGVzdEVudigic3RyZWFtX3Jlc3VsdF90byIsICIiKSwKKyAgICAiVGhpcyBmbGFnIHNwZWNpZmll
cyB0aGUgaG9zdCBuYW1lIGFuZCB0aGUgcG9ydCBudW1iZXIgb24gd2hpY2ggdG8gc3RyZWFtICIK
KyAgICAidGVzdCByZXN1bHRzLiBFeGFtcGxlOiBcImxvY2FsaG9zdDo1NTVcIi4gVGhlIGZsYWcg
aXMgZWZmZWN0aXZlIG9ubHkgb24gIgorICAgICJMaW51eC4iKTsKKwogR1RFU1RfREVGSU5FX2Jv
b2xfKAogICAgIHRocm93X29uX2ZhaWx1cmUsCiAgICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RF
bnYoInRocm93X29uX2ZhaWx1cmUiLCBmYWxzZSksCiAgICAgIldoZW4gdGhpcyBmbGFnIGlzIHNw
ZWNpZmllZCwgYSBmYWlsZWQgYXNzZXJ0aW9uIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uICIKICAg
ICAiaWYgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCBvciBleGl0IHRoZSBwcm9ncmFtIHdpdGggYSBu
b24temVybyBjb2RlICIKLSAgICAib3RoZXJ3aXNlLiIpOworICAgICJvdGhlcndpc2UuIEZvciB1
c2Ugd2l0aCBhbiBleHRlcm5hbCB0ZXN0IGZyYW1ld29yay4iKTsKKworI2lmIEdURVNUX1VTRV9P
V05fRkxBR0ZJTEVfRkxBR18KK0dURVNUX0RFRklORV9zdHJpbmdfKAorICAgIGZsYWdmaWxlLAor
ICAgIGludGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYoImZsYWdmaWxlIiwgIiIpLAorICAgICJU
aGlzIGZsYWcgc3BlY2lmaWVzIHRoZSBmbGFnZmlsZSB0byByZWFkIGNvbW1hbmQtbGluZSBmbGFn
cyBmcm9tLiIpOworI2VuZGlmICAvLyBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCiAKIG5h
bWVzcGFjZSBpbnRlcm5hbCB7CiAKQEAgLTI3Miw3ICszNTIsOCBAQCBuYW1lc3BhY2UgaW50ZXJu
YWwgewogLy8gdGhhbiBrTWF4UmFuZ2UuCiBVSW50MzIgUmFuZG9tOjpHZW5lcmF0ZShVSW50MzIg
cmFuZ2UpIHsKICAgLy8gVGhlc2UgY29uc3RhbnRzIGFyZSB0aGUgc2FtZSBhcyBhcmUgdXNlZCBp
biBnbGliYydzIHJhbmQoMykuCi0gIHN0YXRlXyA9ICgxMTAzNTE1MjQ1VSpzdGF0ZV8gKyAxMjM0
NVUpICUga01heFJhbmdlOworICAvLyBVc2Ugd2lkZXIgdHlwZXMgdGhhbiBuZWNlc3NhcnkgdG8g
cHJldmVudCB1bnNpZ25lZCBvdmVyZmxvdyBkaWFnbm9zdGljcy4KKyAgc3RhdGVfID0gc3RhdGlj
X2Nhc3Q8VUludDMyPigxMTAzNTE1MjQ1VUxMKnN0YXRlXyArIDEyMzQ1VSkgJSBrTWF4UmFuZ2U7
CiAKICAgR1RFU1RfQ0hFQ0tfKHJhbmdlID4gMCkKICAgICAgIDw8ICJDYW5ub3QgZ2VuZXJhdGUg
YSBudW1iZXIgaW4gdGhlIHJhbmdlIFswLCAwKS4iOwpAQCAtMjg5LDEzICszNzAsNyBAQCBVSW50
MzIgUmFuZG9tOjpHZW5lcmF0ZShVSW50MzIgcmFuZ2UpIHsKIC8vIEdUZXN0SXNJbml0aWFsaXpl
ZCgpIHJldHVybnMgdHJ1ZSBpZmYgdGhlIHVzZXIgaGFzIGluaXRpYWxpemVkCiAvLyBHb29nbGUg
VGVzdC4gIFVzZWZ1bCBmb3IgY2F0Y2hpbmcgdGhlIHVzZXIgbWlzdGFrZSBvZiBub3QgaW5pdGlh
bGl6aW5nCiAvLyBHb29nbGUgVGVzdCBiZWZvcmUgY2FsbGluZyBSVU5fQUxMX1RFU1RTKCkuCi0v
LwotLy8gQSB1c2VyIG11c3QgY2FsbCB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpIHRvIGluaXRp
YWxpemUgR29vZ2xlCi0vLyBUZXN0LiAgZ19pbml0X2d0ZXN0X2NvdW50IGlzIHNldCB0byB0aGUg
bnVtYmVyIG9mIHRpbWVzCi0vLyBJbml0R29vZ2xlVGVzdCgpIGhhcyBiZWVuIGNhbGxlZC4gIFdl
IGRvbid0IHByb3RlY3QgdGhpcyB2YXJpYWJsZQotLy8gdW5kZXIgYSBtdXRleCBhcyBpdCBpcyBv
bmx5IGFjY2Vzc2VkIGluIHRoZSBtYWluIHRocmVhZC4KLWludCBnX2luaXRfZ3Rlc3RfY291bnQg
PSAwOwotc3RhdGljIGJvb2wgR1Rlc3RJc0luaXRpYWxpemVkKCkgeyByZXR1cm4gZ19pbml0X2d0
ZXN0X2NvdW50ICE9IDA7IH0KK3N0YXRpYyBib29sIEdUZXN0SXNJbml0aWFsaXplZCgpIHsgcmV0
dXJuIEdldEFyZ3ZzKCkuc2l6ZSgpID4gMDsgfQogCiAvLyBJdGVyYXRlcyBvdmVyIGEgdmVjdG9y
IG9mIFRlc3RDYXNlcywga2VlcGluZyBhIHJ1bm5pbmcgc3VtIG9mIHRoZQogLy8gcmVzdWx0cyBv
ZiBjYWxsaW5nIGEgZ2l2ZW4gaW50LXJldHVybmluZyBtZXRob2Qgb24gZWFjaC4KQEAgLTM0OSwx
MCArNDI0LDIxIEBAIHZvaWQgQXNzZXJ0SGVscGVyOjpvcGVyYXRvcj0oY29uc3QgTWVzc2FnZSYg
bWVzc2FnZSkgY29uc3QgewogfQogCiAvLyBNdXRleCBmb3IgbGlua2VkIHBvaW50ZXJzLgotR1RF
U1RfREVGSU5FX1NUQVRJQ19NVVRFWF8oZ19saW5rZWRfcHRyX211dGV4KTsKK0dURVNUX0FQSV8g
R1RFU1RfREVGSU5FX1NUQVRJQ19NVVRFWF8oZ19saW5rZWRfcHRyX211dGV4KTsKIAotLy8gQXBw
bGljYXRpb24gcGF0aG5hbWUgZ290dGVuIGluIEluaXRHb29nbGVUZXN0LgotU3RyaW5nIGdfZXhl
Y3V0YWJsZV9wYXRoOworLy8gQSBjb3B5IG9mIGFsbCBjb21tYW5kIGxpbmUgYXJndW1lbnRzLiAg
U2V0IGJ5IEluaXRHb29nbGVUZXN0KCkuCis6OnN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBnX2Fy
Z3ZzOworCis6OnN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRBcmd2cygpIHsKKyNpZiBkZWZp
bmVkKEdURVNUX0NVU1RPTV9HRVRfQVJHVlNfKQorICAvLyBHVEVTVF9DVVNUT01fR0VUX0FSR1ZT
XygpIG1heSByZXR1cm4gYSBjb250YWluZXIgb2Ygc3RkOjpzdHJpbmcgb3IKKyAgLy8gOjpzdHJp
bmcuIFRoaXMgY29kZSBjb252ZXJ0cyBpdCB0byB0aGUgYXBwcm9wcmlhdGUgdHlwZS4KKyAgY29u
c3QgYXV0byYgY3VzdG9tID0gR1RFU1RfQ1VTVE9NX0dFVF9BUkdWU18oKTsKKyAgcmV0dXJuIDo6
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KGN1c3RvbS5iZWdpbigpLCBjdXN0b20uZW5kKCkpOwor
I2Vsc2UgICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9HRVRfQVJHVlNfKQorICByZXR1cm4gZ19h
cmd2czsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01fR0VUX0FSR1ZTXykKK30KIAog
Ly8gUmV0dXJucyB0aGUgY3VycmVudCBhcHBsaWNhdGlvbidzIG5hbWUsIHJlbW92aW5nIGRpcmVj
dG9yeSBwYXRoIGlmIHRoYXQKIC8vIGlzIHByZXNlbnQuCkBAIC0zNjAsOSArNDQ2LDkgQEAgRmls
ZVBhdGggR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkgewogICBGaWxlUGF0aCByZXN1bHQ7CiAK
ICNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIHJlc3VsdC5TZXQoRmlsZVBhdGgoZ19leGVjdXRhYmxl
X3BhdGgpLlJlbW92ZUV4dGVuc2lvbigiZXhlIikpOworICByZXN1bHQuU2V0KEZpbGVQYXRoKEdl
dEFyZ3ZzKClbMF0pLlJlbW92ZUV4dGVuc2lvbigiZXhlIikpOwogI2Vsc2UKLSAgcmVzdWx0LlNl
dChGaWxlUGF0aChnX2V4ZWN1dGFibGVfcGF0aCkpOworICByZXN1bHQuU2V0KEZpbGVQYXRoKEdl
dEFyZ3ZzKClbMF0pKTsKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCiAgIHJldHVybiBy
ZXN1bHQuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpOwpAQCAtMzcxLDMzICs0NTcsMzQgQEAgRmlsZVBh
dGggR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkgewogLy8gRnVuY3Rpb25zIGZvciBwcm9jZXNz
aW5nIHRoZSBndGVzdF9vdXRwdXQgZmxhZy4KIAogLy8gUmV0dXJucyB0aGUgb3V0cHV0IGZvcm1h
dCwgb3IgIiIgZm9yIG5vcm1hbCBwcmludGVkIG91dHB1dC4KLVN0cmluZyBVbml0VGVzdE9wdGlv
bnM6OkdldE91dHB1dEZvcm1hdCgpIHsKK3N0ZDo6c3RyaW5nIFVuaXRUZXN0T3B0aW9uczo6R2V0
T3V0cHV0Rm9ybWF0KCkgewogICBjb25zdCBjaGFyKiBjb25zdCBndGVzdF9vdXRwdXRfZmxhZyA9
IEdURVNUX0ZMQUcob3V0cHV0KS5jX3N0cigpOwotICBpZiAoZ3Rlc3Rfb3V0cHV0X2ZsYWcgPT0g
TlVMTCkgcmV0dXJuIFN0cmluZygiIik7Ci0KICAgY29uc3QgY2hhciogY29uc3QgY29sb24gPSBz
dHJjaHIoZ3Rlc3Rfb3V0cHV0X2ZsYWcsICc6Jyk7CiAgIHJldHVybiAoY29sb24gPT0gTlVMTCkg
PwotICAgICAgU3RyaW5nKGd0ZXN0X291dHB1dF9mbGFnKSA6Ci0gICAgICBTdHJpbmcoZ3Rlc3Rf
b3V0cHV0X2ZsYWcsIGNvbG9uIC0gZ3Rlc3Rfb3V0cHV0X2ZsYWcpOworICAgICAgc3RkOjpzdHJp
bmcoZ3Rlc3Rfb3V0cHV0X2ZsYWcpIDoKKyAgICAgIHN0ZDo6c3RyaW5nKGd0ZXN0X291dHB1dF9m
bGFnLCBjb2xvbiAtIGd0ZXN0X291dHB1dF9mbGFnKTsKIH0KIAogLy8gUmV0dXJucyB0aGUgbmFt
ZSBvZiB0aGUgcmVxdWVzdGVkIG91dHB1dCBmaWxlLCBvciB0aGUgZGVmYXVsdCBpZiBub25lCiAv
LyB3YXMgZXhwbGljaXRseSBzcGVjaWZpZWQuCi1TdHJpbmcgVW5pdFRlc3RPcHRpb25zOjpHZXRB
YnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSB7CitzdGQ6OnN0cmluZyBVbml0VGVzdE9wdGlvbnM6
OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpIHsKICAgY29uc3QgY2hhciogY29uc3QgZ3Rl
c3Rfb3V0cHV0X2ZsYWcgPSBHVEVTVF9GTEFHKG91dHB1dCkuY19zdHIoKTsKLSAgaWYgKGd0ZXN0
X291dHB1dF9mbGFnID09IE5VTEwpCi0gICAgcmV0dXJuIFN0cmluZygiIik7CisKKyAgc3RkOjpz
dHJpbmcgZm9ybWF0ID0gR2V0T3V0cHV0Rm9ybWF0KCk7CisgIGlmIChmb3JtYXQuZW1wdHkoKSkK
KyAgICBmb3JtYXQgPSBzdGQ6OnN0cmluZyhrRGVmYXVsdE91dHB1dEZvcm1hdCk7CiAKICAgY29u
c3QgY2hhciogY29uc3QgY29sb24gPSBzdHJjaHIoZ3Rlc3Rfb3V0cHV0X2ZsYWcsICc6Jyk7CiAg
IGlmIChjb2xvbiA9PSBOVUxMKQotICAgIHJldHVybiBTdHJpbmcoaW50ZXJuYWw6OkZpbGVQYXRo
OjpDb25jYXRQYXRocygKLSAgICAgICAgICAgICAgIGludGVybmFsOjpGaWxlUGF0aCgKLSAgICAg
ICAgICAgICAgICAgICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+b3JpZ2luYWxfd29ya2luZ19k
aXIoKSksCi0gICAgICAgICAgICAgICBpbnRlcm5hbDo6RmlsZVBhdGgoa0RlZmF1bHRPdXRwdXRG
aWxlKSkuVG9TdHJpbmcoKSApOworICAgIHJldHVybiBpbnRlcm5hbDo6RmlsZVBhdGg6Ok1ha2VG
aWxlTmFtZSgKKyAgICAgICAgaW50ZXJuYWw6OkZpbGVQYXRoKAorICAgICAgICAgICAgVW5pdFRl
c3Q6OkdldEluc3RhbmNlKCktPm9yaWdpbmFsX3dvcmtpbmdfZGlyKCkpLAorICAgICAgICBpbnRl
cm5hbDo6RmlsZVBhdGgoa0RlZmF1bHRPdXRwdXRGaWxlKSwgMCwKKyAgICAgICAgZm9ybWF0LmNf
c3RyKCkpLnN0cmluZygpOwogCiAgIGludGVybmFsOjpGaWxlUGF0aCBvdXRwdXRfbmFtZShjb2xv
biArIDEpOwogICBpZiAoIW91dHB1dF9uYW1lLklzQWJzb2x1dGVQYXRoKCkpCi0gICAgLy8gVE9E
Tyh3YW5AZ29vZ2xlLmNvbSk6IG9uIFdpbmRvd3MgXHNvbWVccGF0aCBpcyBub3QgYW4gYWJzb2x1
dGUKKyAgICAvLyBGSVhNRTogb24gV2luZG93cyBcc29tZVxwYXRoIGlzIG5vdCBhbiBhYnNvbHV0
ZQogICAgIC8vIHBhdGggKGFzIGl0cyBtZWFuaW5nIGRlcGVuZHMgb24gdGhlIGN1cnJlbnQgZHJp
dmUpLCB5ZXQgdGhlCiAgICAgLy8gZm9sbG93aW5nIGxvZ2ljIGZvciB0dXJuaW5nIGl0IGludG8g
YW4gYWJzb2x1dGUgcGF0aCBpcyB3cm9uZy4KICAgICAvLyBGaXggaXQuCkBAIC00MDYsMTIgKzQ5
MywxMiBAQCBTdHJpbmcgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZp
bGUoKSB7CiAgICAgICAgIGludGVybmFsOjpGaWxlUGF0aChjb2xvbiArIDEpKTsKIAogICBpZiAo
IW91dHB1dF9uYW1lLklzRGlyZWN0b3J5KCkpCi0gICAgcmV0dXJuIG91dHB1dF9uYW1lLlRvU3Ry
aW5nKCk7CisgICAgcmV0dXJuIG91dHB1dF9uYW1lLnN0cmluZygpOwogCiAgIGludGVybmFsOjpG
aWxlUGF0aCByZXN1bHQoaW50ZXJuYWw6OkZpbGVQYXRoOjpHZW5lcmF0ZVVuaXF1ZUZpbGVOYW1l
KAogICAgICAgb3V0cHV0X25hbWUsIGludGVybmFsOjpHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUo
KSwKICAgICAgIEdldE91dHB1dEZvcm1hdCgpLmNfc3RyKCkpKTsKLSAgcmV0dXJuIHJlc3VsdC5U
b1N0cmluZygpOworICByZXR1cm4gcmVzdWx0LnN0cmluZygpOwogfQogCiAvLyBSZXR1cm5zIHRy
dWUgaWZmIHRoZSB3aWxkY2FyZCBwYXR0ZXJuIG1hdGNoZXMgdGhlIHN0cmluZy4gIFRoZQpAQCAt
NDM2LDcgKzUyMyw4IEBAIGJvb2wgVW5pdFRlc3RPcHRpb25zOjpQYXR0ZXJuTWF0Y2hlc1N0cmlu
Zyhjb25zdCBjaGFyICpwYXR0ZXJuLAogICB9CiB9CiAKLWJvb2wgVW5pdFRlc3RPcHRpb25zOjpN
YXRjaGVzRmlsdGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgY2hhciogZmlsdGVyKSB7Citi
b29sIFVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcigKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbmFtZSwgY29uc3QgY2hhciogZmlsdGVyKSB7CiAgIGNvbnN0IGNoYXIgKmN1cl9wYXR0ZXJu
ID0gZmlsdGVyOwogICBmb3IgKDs7KSB7CiAgICAgaWYgKFBhdHRlcm5NYXRjaGVzU3RyaW5nKGN1
cl9wYXR0ZXJuLCBuYW1lLmNfc3RyKCkpKSB7CkBAIC00NTYsMjggKzU0NCwyNCBAQCBib29sIFVu
aXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IGNo
YXIqIGZpbHRlcikgewogICB9CiB9CiAKLS8vIFRPRE8oa2VpdGhyYXkpOiBtb3ZlIFN0cmluZyBm
dW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMgdG8gZ3Rlc3Qtc3RyaW5nLmNjLgotCiAvLyBSZXR1cm5z
IHRydWUgaWZmIHRoZSB1c2VyLXNwZWNpZmllZCBmaWx0ZXIgbWF0Y2hlcyB0aGUgdGVzdCBjYXNl
CiAvLyBuYW1lIGFuZCB0aGUgdGVzdCBuYW1lLgotYm9vbCBVbml0VGVzdE9wdGlvbnM6OkZpbHRl
ck1hdGNoZXNUZXN0KGNvbnN0IFN0cmluZyAmdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nICZ0ZXN0X25hbWUpIHsKLSAg
Y29uc3QgU3RyaW5nJiBmdWxsX25hbWUgPSBTdHJpbmc6OkZvcm1hdCgiJXMuJXMiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY2FzZV9uYW1lLmNfc3Ry
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9uYW1l
LmNfc3RyKCkpOworYm9vbCBVbml0VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KGNvbnN0
IHN0ZDo6c3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdGVzdF9uYW1lKSB7CisgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBmdWxsX25hbWUgPSB0ZXN0X2Nhc2VfbmFtZSArICIuIiArIHRlc3RfbmFtZS5j
X3N0cigpOwogCiAgIC8vIFNwbGl0IC0tZ3Rlc3RfZmlsdGVyIGF0ICctJywgaWYgdGhlcmUgaXMg
b25lLCB0byBzZXBhcmF0ZSBpbnRvCiAgIC8vIHBvc2l0aXZlIGZpbHRlciBhbmQgbmVnYXRpdmUg
ZmlsdGVyIHBvcnRpb25zCiAgIGNvbnN0IGNoYXIqIGNvbnN0IHAgPSBHVEVTVF9GTEFHKGZpbHRl
cikuY19zdHIoKTsKICAgY29uc3QgY2hhciogY29uc3QgZGFzaCA9IHN0cmNocihwLCAnLScpOwot
ICBTdHJpbmcgcG9zaXRpdmU7Ci0gIFN0cmluZyBuZWdhdGl2ZTsKKyAgc3RkOjpzdHJpbmcgcG9z
aXRpdmU7CisgIHN0ZDo6c3RyaW5nIG5lZ2F0aXZlOwogICBpZiAoZGFzaCA9PSBOVUxMKSB7CiAg
ICAgcG9zaXRpdmUgPSBHVEVTVF9GTEFHKGZpbHRlcikuY19zdHIoKTsgIC8vIFdob2xlIHN0cmlu
ZyBpcyBhIHBvc2l0aXZlIGZpbHRlcgotICAgIG5lZ2F0aXZlID0gU3RyaW5nKCIiKTsKKyAgICBu
ZWdhdGl2ZSA9ICIiOwogICB9IGVsc2UgewotICAgIHBvc2l0aXZlID0gU3RyaW5nKHAsIGRhc2gg
LSBwKTsgIC8vIEV2ZXJ5dGhpbmcgdXAgdG8gdGhlIGRhc2gKLSAgICBuZWdhdGl2ZSA9IFN0cmlu
ZyhkYXNoKzEpOyAgICAgICAvLyBFdmVyeXRoaW5nIGFmdGVyIHRoZSBkYXNoCisgICAgcG9zaXRp
dmUgPSBzdGQ6OnN0cmluZyhwLCBkYXNoKTsgICAvLyBFdmVyeXRoaW5nIHVwIHRvIHRoZSBkYXNo
CisgICAgbmVnYXRpdmUgPSBzdGQ6OnN0cmluZyhkYXNoICsgMSk7ICAvLyBFdmVyeXRoaW5nIGFm
dGVyIHRoZSBkYXNoCiAgICAgaWYgKHBvc2l0aXZlLmVtcHR5KCkpIHsKICAgICAgIC8vIFRyZWF0
ICctdGVzdDEnIGFzIHRoZSBzYW1lIGFzICcqLXRlc3QxJwogICAgICAgcG9zaXRpdmUgPSBrVW5p
dmVyc2FsRmlsdGVyOwpAQCAtNDkwLDIwICs1NzQsMzMgQEAgYm9vbCBVbml0VGVzdE9wdGlvbnM6
OkZpbHRlck1hdGNoZXNUZXN0KGNvbnN0IFN0cmluZyAmdGVzdF9jYXNlX25hbWUsCiAgICAgICAg
ICAgIU1hdGNoZXNGaWx0ZXIoZnVsbF9uYW1lLCBuZWdhdGl2ZS5jX3N0cigpKSk7CiB9CiAKLSNp
ZiBHVEVTVF9PU19XSU5ET1dTCisjaWYgR1RFU1RfSEFTX1NFSAogLy8gUmV0dXJucyBFWENFUFRJ
T05fRVhFQ1VURV9IQU5ETEVSIGlmIEdvb2dsZSBUZXN0IHNob3VsZCBoYW5kbGUgdGhlCiAvLyBn
aXZlbiBTRUggZXhjZXB0aW9uLCBvciBFWENFUFRJT05fQ09OVElOVUVfU0VBUkNIIG90aGVyd2lz
ZS4KIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIGFzIGFuIF9fZXhjZXB0IGNvbmRpdGlvbi4K
IGludCBVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSChEV09SRCBleGNlcHRp
b25fY29kZSkgewotICAvLyBHb29nbGUgVGVzdCBzaG91bGQgaGFuZGxlIGFuIGV4Y2VwdGlvbiBp
ZjoKKyAgLy8gR29vZ2xlIFRlc3Qgc2hvdWxkIGhhbmRsZSBhIFNFSCBleGNlcHRpb24gaWY6CiAg
IC8vICAgMS4gdGhlIHVzZXIgd2FudHMgaXQgdG8sIEFORAotICAvLyAgIDIuIHRoaXMgaXMgbm90
IGEgYnJlYWtwb2ludCBleGNlcHRpb24uCi0gIHJldHVybiAoR1RFU1RfRkxBRyhjYXRjaF9leGNl
cHRpb25zKSAmJgotICAgICAgICAgIGV4Y2VwdGlvbl9jb2RlICE9IEVYQ0VQVElPTl9CUkVBS1BP
SU5UKSA/Ci0gICAgICBFWENFUFRJT05fRVhFQ1VURV9IQU5ETEVSIDoKLSAgICAgIEVYQ0VQVElP
Tl9DT05USU5VRV9TRUFSQ0g7CisgIC8vICAgMi4gdGhpcyBpcyBub3QgYSBicmVha3BvaW50IGV4
Y2VwdGlvbiwgQU5ECisgIC8vICAgMy4gdGhpcyBpcyBub3QgYSBDKysgZXhjZXB0aW9uIChWQysr
IGltcGxlbWVudHMgdGhlbSB2aWEgU0VILAorICAvLyAgICAgIGFwcGFyZW50bHkpLgorICAvLwor
ICAvLyBTRUggZXhjZXB0aW9uIGNvZGUgZm9yIEMrKyBleGNlcHRpb25zLgorICAvLyAoc2VlIGh0
dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20va2IvMTg1Mjk0IGZvciBtb3JlIGluZm9ybWF0aW9u
KS4KKyAgY29uc3QgRFdPUkQga0N4eEV4Y2VwdGlvbkNvZGUgPSAweGUwNmQ3MzYzOworCisgIGJv
b2wgc2hvdWxkX2hhbmRsZSA9IHRydWU7CisKKyAgaWYgKCFHVEVTVF9GTEFHKGNhdGNoX2V4Y2Vw
dGlvbnMpKQorICAgIHNob3VsZF9oYW5kbGUgPSBmYWxzZTsKKyAgZWxzZSBpZiAoZXhjZXB0aW9u
X2NvZGUgPT0gRVhDRVBUSU9OX0JSRUFLUE9JTlQpCisgICAgc2hvdWxkX2hhbmRsZSA9IGZhbHNl
OworICBlbHNlIGlmIChleGNlcHRpb25fY29kZSA9PSBrQ3h4RXhjZXB0aW9uQ29kZSkKKyAgICBz
aG91bGRfaGFuZGxlID0gZmFsc2U7CisKKyAgcmV0dXJuIHNob3VsZF9oYW5kbGUgPyBFWENFUFRJ
T05fRVhFQ1VURV9IQU5ETEVSIDogRVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJDSDsKIH0KLSNlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XUworI2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICiAKIH0gIC8v
IG5hbWVzcGFjZSBpbnRlcm5hbAogCkBAIC01NzgsMTMgKzY3NSwxMyBAQCBleHRlcm4gY29uc3Qg
VHlwZUlkIGtUZXN0VHlwZUlkSW5Hb29nbGVUZXN0ID0gR2V0VGVzdFR5cGVJZCgpOwogLy8gVGhp
cyBwcmVkaWNhdGUtZm9ybWF0dGVyIGNoZWNrcyB0aGF0ICdyZXN1bHRzJyBjb250YWlucyBhIHRl
c3QgcGFydAogLy8gZmFpbHVyZSBvZiB0aGUgZ2l2ZW4gdHlwZSBhbmQgdGhhdCB0aGUgZmFpbHVy
ZSBtZXNzYWdlIGNvbnRhaW5zIHRoZQogLy8gZ2l2ZW4gc3Vic3RyaW5nLgotQXNzZXJ0aW9uUmVz
dWx0IEhhc09uZUZhaWx1cmUoY29uc3QgY2hhciogLyogcmVzdWx0c19leHByICovLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLyogdHlwZV9leHByICovLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLyogc3Vic3RyX2V4cHIgKi8s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UGFydFJlc3VsdEFycmF5
JiByZXN1bHRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdFBhcnRSZXN1bHQ6
OlR5cGUgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN1
YnN0cikgewotICBjb25zdCBTdHJpbmcgZXhwZWN0ZWQodHlwZSA9PSBUZXN0UGFydFJlc3VsdDo6
a0ZhdGFsRmFpbHVyZSA/CitzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IEhhc09uZUZhaWx1cmUoY29u
c3QgY2hhciogLyogcmVzdWx0c19leHByICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIC8qIHR5cGVfZXhwciAqLywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKiBzdWJzdHJfZXhwciAqLywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UGFydFJlc3VsdEFycmF5
JiByZXN1bHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0
UmVzdWx0OjpUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHN1YnN0cikgeworICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3Rl
ZCh0eXBlID09IFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlID8KICAgICAgICAgICAgICAg
ICAgICAgICAgICIxIGZhdGFsIGZhaWx1cmUiIDoKICAgICAgICAgICAgICAgICAgICAgICAgICIx
IG5vbi1mYXRhbCBmYWlsdXJlIik7CiAgIE1lc3NhZ2UgbXNnOwpAQCAtNTk0LDIzICs2OTEsMjEg
QEAgQXNzZXJ0aW9uUmVzdWx0IEhhc09uZUZhaWx1cmUoY29uc3QgY2hhciogLyogcmVzdWx0c19l
eHByICovLAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7IGkrKykgewog
ICAgICAgbXNnIDw8ICJcbiIgPDwgcmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdChpKTsKICAgICB9
Ci0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgICByZXR1cm4gQXNzZXJ0aW9u
RmFpbHVyZSgpIDw8IG1zZzsKICAgfQogCiAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiByID0gcmVz
dWx0cy5HZXRUZXN0UGFydFJlc3VsdCgwKTsKICAgaWYgKHIudHlwZSgpICE9IHR5cGUpIHsKLSAg
ICBtc2cgPDwgIkV4cGVjdGVkOiAiIDw8IGV4cGVjdGVkIDw8ICJcbiIKLSAgICAgICAgPDwgIiAg
QWN0dWFsOlxuIgotICAgICAgICA8PCByOwotICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1z
Zyk7CisgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiRXhwZWN0ZWQ6ICIgPDwgZXhw
ZWN0ZWQgPDwgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiAgQWN0dWFs
OlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcjsKICAgfQogCi0gIGlmIChz
dHJzdHIoci5tZXNzYWdlKCksIHN1YnN0cikgPT0gTlVMTCkgewotICAgIG1zZyA8PCAiRXhwZWN0
ZWQ6ICIgPDwgZXhwZWN0ZWQgPDwgIiBjb250YWluaW5nIFwiIgotICAgICAgICA8PCBzdWJzdHIg
PDwgIlwiXG4iCi0gICAgICAgIDw8ICIgIEFjdHVhbDpcbiIKLSAgICAgICAgPDwgcjsKLSAgICBy
ZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICBpZiAoc3Ryc3RyKHIubWVzc2FnZSgpLCBz
dWJzdHIuY19zdHIoKSkgPT0gTlVMTCkgeworICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkg
PDwgIkV4cGVjdGVkOiAiIDw8IGV4cGVjdGVkIDw8ICIgY29udGFpbmluZyBcIiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8IHN1YnN0ciA8PCAiXCJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8ICIgIEFjdHVhbDpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8IHI7CiAgIH0KIAogICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwpAQCAtNjE5
LDIwICs3MTQsMTcgQEAgQXNzZXJ0aW9uUmVzdWx0IEhhc09uZUZhaWx1cmUoY29uc3QgY2hhciog
LyogcmVzdWx0c19leHByICovLAogLy8gVGhlIGNvbnN0cnVjdG9yIG9mIFNpbmdsZUZhaWx1cmVD
aGVja2VyIHJlbWVtYmVycyB3aGVyZSB0byBsb29rIHVwCiAvLyB0ZXN0IHBhcnQgcmVzdWx0cywg
d2hhdCB0eXBlIG9mIGZhaWx1cmUgd2UgZXhwZWN0LCBhbmQgd2hhdAogLy8gc3Vic3RyaW5nIHRo
ZSBmYWlsdXJlIG1lc3NhZ2Ugc2hvdWxkIGNvbnRhaW4uCi1TaW5nbGVGYWlsdXJlQ2hlY2tlcjo6
IFNpbmdsZUZhaWx1cmVDaGVja2VyKAotICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0QXJyYXkqIHJl
c3VsdHMsCi0gICAgVGVzdFBhcnRSZXN1bHQ6OlR5cGUgdHlwZSwKLSAgICBjb25zdCBjaGFyKiBz
dWJzdHIpCi0gICAgOiByZXN1bHRzXyhyZXN1bHRzKSwKLSAgICAgIHR5cGVfKHR5cGUpLAotICAg
ICAgc3Vic3RyXyhzdWJzdHIpIHt9CitTaW5nbGVGYWlsdXJlQ2hlY2tlcjo6U2luZ2xlRmFpbHVy
ZUNoZWNrZXIoY29uc3QgVGVzdFBhcnRSZXN1bHRBcnJheSogcmVzdWx0cywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBzdWJzdHIpCisgICAgOiByZXN1bHRzXyhyZXN1bHRzKSwgdHlwZV8odHlwZSksIHN1
YnN0cl8oc3Vic3RyKSB7fQogCiAvLyBUaGUgZGVzdHJ1Y3RvciBvZiBTaW5nbGVGYWlsdXJlQ2hl
Y2tlciB2ZXJpZmllcyB0aGF0IHRoZSBnaXZlbgogLy8gVGVzdFBhcnRSZXN1bHRBcnJheSBjb250
YWlucyBleGFjdGx5IG9uZSBmYWlsdXJlIHRoYXQgaGFzIHRoZSBnaXZlbgogLy8gdHlwZSBhbmQg
Y29udGFpbnMgdGhlIGdpdmVuIHN1YnN0cmluZy4gIElmIHRoYXQncyBub3QgdGhlIGNhc2UsIGEK
IC8vIG5vbi1mYXRhbCBmYWlsdXJlIHdpbGwgYmUgZ2VuZXJhdGVkLgogU2luZ2xlRmFpbHVyZUNo
ZWNrZXI6On5TaW5nbGVGYWlsdXJlQ2hlY2tlcigpIHsKLSAgRVhQRUNUX1BSRURfRk9STUFUMyhI
YXNPbmVGYWlsdXJlLCAqcmVzdWx0c18sIHR5cGVfLCBzdWJzdHJfLmNfc3RyKCkpOworICBFWFBF
Q1RfUFJFRF9GT1JNQVQzKEhhc09uZUZhaWx1cmUsICpyZXN1bHRzXywgdHlwZV8sIHN1YnN0cl8p
OwogfQogCiBEZWZhdWx0R2xvYmFsVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjo6RGVmYXVsdEdsb2Jh
bFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIoCkBAIC03MDksMTEgKzgwMSwyMiBAQCBpbnQgVW5pdFRl
c3RJbXBsOjpmYWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJuIFN1bU92ZXJUZXN0
Q2FzZUxpc3QodGVzdF9jYXNlc18sICZUZXN0Q2FzZTo6ZmFpbGVkX3Rlc3RfY291bnQpOwogfQog
CisvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9y
dGVkIGluIHRoZSBYTUwgcmVwb3J0LgoraW50IFVuaXRUZXN0SW1wbDo6cmVwb3J0YWJsZV9kaXNh
YmxlZF90ZXN0X2NvdW50KCkgY29uc3QgeworICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0
ZXN0X2Nhc2VzXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlRlc3RDYXNlOjpyZXBv
cnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQpOworfQorCiAvLyBHZXRzIHRoZSBudW1iZXIgb2Yg
ZGlzYWJsZWQgdGVzdHMuCiBpbnQgVW5pdFRlc3RJbXBsOjpkaXNhYmxlZF90ZXN0X2NvdW50KCkg
Y29uc3QgewogICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0ZXN0X2Nhc2VzXywgJlRlc3RD
YXNlOjpkaXNhYmxlZF90ZXN0X2NvdW50KTsKIH0KIAorLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRl
c3RzIHRvIGJlIHByaW50ZWQgaW4gdGhlIFhNTCByZXBvcnQuCitpbnQgVW5pdFRlc3RJbXBsOjpy
ZXBvcnRhYmxlX3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBTdW1PdmVyVGVzdENhc2VM
aXN0KHRlc3RfY2FzZXNfLCAmVGVzdENhc2U6OnJlcG9ydGFibGVfdGVzdF9jb3VudCk7Cit9CisK
IC8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdHMuCiBpbnQgVW5pdFRlc3RJbXBsOjp0b3Rh
bF90ZXN0X2NvdW50KCkgY29uc3QgewogICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0ZXN0
X2Nhc2VzXywgJlRlc3RDYXNlOjp0b3RhbF90ZXN0X2NvdW50KTsKQEAgLTcyNCw3ICs4MjcsNyBA
QCBpbnQgVW5pdFRlc3RJbXBsOjp0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJu
IFN1bU92ZXJUZXN0Q2FzZUxpc3QodGVzdF9jYXNlc18sICZUZXN0Q2FzZTo6dGVzdF90b19ydW5f
Y291bnQpOwogfQogCi0vLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFzIGEg
U3RyaW5nLgorLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBhcyBhbiBzdGQ6
OnN0cmluZy4KIC8vCiAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIHRvIGJl
IGluY2x1ZGVkIGlzIHNwZWNpZmllZCBieQogLy8gdGhlIGd0ZXN0X3N0YWNrX3RyYWNlX2RlcHRo
IGZsYWcuICBUaGUgc2tpcF9jb3VudCBwYXJhbWV0ZXIKQEAgLTczNCw5ICs4MzcsMTMgQEAgaW50
IFVuaXRUZXN0SW1wbDo6dGVzdF90b19ydW5fY291bnQoKSBjb25zdCB7CiAvLyBGb3IgZXhhbXBs
ZSwgaWYgRm9vKCkgY2FsbHMgQmFyKCksIHdoaWNoIGluIHR1cm4gY2FsbHMKIC8vIEN1cnJlbnRP
c1N0YWNrVHJhY2VFeGNlcHRUb3AoMSksIEZvbygpIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlCiAv
LyB0cmFjZSBidXQgQmFyKCkgYW5kIEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoKSB3b24n
dC4KLVN0cmluZyBVbml0VGVzdEltcGw6OkN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoaW50
IHNraXBfY291bnQpIHsKLSAgKHZvaWQpc2tpcF9jb3VudDsKLSAgcmV0dXJuIFN0cmluZygiIik7
CitzdGQ6OnN0cmluZyBVbml0VGVzdEltcGw6OkN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3Ao
aW50IHNraXBfY291bnQpIHsKKyAgcmV0dXJuIG9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5DdXJy
ZW50U3RhY2tUcmFjZSgKKyAgICAgIHN0YXRpY19jYXN0PGludD4oR1RFU1RfRkxBRyhzdGFja190
cmFjZV9kZXB0aCkpLAorICAgICAgc2tpcF9jb3VudCArIDEKKyAgICAgIC8vIFNraXBzIHRoZSB1
c2VyLXNwZWNpZmllZCBudW1iZXIgb2YgZnJhbWVzIHBsdXMgdGhpcyBmdW5jdGlvbgorICAgICAg
Ly8gaXRzZWxmLgorICAgICAgKTsgIC8vIE5PTElOVAogfQogCiAvLyBSZXR1cm5zIHRoZSBjdXJy
ZW50IHRpbWUgaW4gbWlsbGlzZWNvbmRzLgpAQCAtNzUxLDcgKzg1OCw3IEBAIFRpbWVJbk1pbGxp
cyBHZXRUaW1lSW5NaWxsaXMoKSB7CiAgIFNZU1RFTVRJTUUgbm93X3N5c3RpbWU7CiAgIEZJTEVU
SU1FIG5vd19maWxldGltZTsKICAgVUxBUkdFX0lOVEVHRVIgbm93X2ludDY0OwotICAvLyBUT0RP
KGtlbnRvbkBnb29nbGUuY29tKTogU2hvdWxkbid0IHRoaXMganVzdCB1c2UKKyAgLy8gRklYTUU6
IFNob3VsZG4ndCB0aGlzIGp1c3QgdXNlCiAgIC8vICAgR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUo
KT8KICAgR2V0U3lzdGVtVGltZSgmbm93X3N5c3RpbWUpOwogICBpZiAoU3lzdGVtVGltZVRvRmls
ZVRpbWUoJm5vd19zeXN0aW1lLCAmbm93X2ZpbGV0aW1lKSkgewpAQCAtNzY0LDY1ICs4NzEsMjgg
QEAgVGltZUluTWlsbGlzIEdldFRpbWVJbk1pbGxpcygpIHsKICAgcmV0dXJuIDA7CiAjZWxpZiBH
VEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9IQVNfR0VUVElNRU9GREFZXwogICBfX3RpbWViNjQg
bm93OwotI2lmZGVmIF9NU0NfVkVSCisKICAgLy8gTVNWQyA4IGRlcHJlY2F0ZXMgX2Z0aW1lNjQo
KSwgc28gd2Ugd2FudCB0byBzdXBwcmVzcyB3YXJuaW5nIDQ5OTYKICAgLy8gKGRlcHJlY2F0ZWQg
ZnVuY3Rpb24pIHRoZXJlLgotICAvLyBUT0RPKGtlbnRvbkBnb29nbGUuY29tKTogVXNlIEdldFRp
Y2tDb3VudCgpPyAgT3IgdXNlCisgIC8vIEZJWE1FOiBVc2UgR2V0VGlja0NvdW50KCk/ICBPciB1
c2UKICAgLy8gICBTeXN0ZW1UaW1lVG9GaWxlVGltZSgpCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkg
ICAgICAgICAgLy8gU2F2ZXMgdGhlIGN1cnJlbnQgd2FybmluZyBzdGF0ZS4KLSNwcmFnbWEgd2Fy
bmluZyhkaXNhYmxlOjQ5OTYpICAvLyBUZW1wb3JhcmlseSBkaXNhYmxlcyB3YXJuaW5nIDQ5OTYu
CisgIEdURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVTSF8oKQogICBfZnRpbWU2NCgmbm93
KTsKLSNwcmFnbWEgd2FybmluZyhwb3ApICAgICAgICAgICAvLyBSZXN0b3JlcyB0aGUgd2Fybmlu
ZyBzdGF0ZS4KLSNlbHNlCi0gIF9mdGltZTY0KCZub3cpOwotI2VuZGlmICAvLyBfTVNDX1ZFUgor
ICBHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BPUF8oKQorCiAgIHJldHVybiBzdGF0aWNf
Y2FzdDxUaW1lSW5NaWxsaXM+KG5vdy50aW1lKSAqIDEwMDAgKyBub3cubWlsbGl0bTsKICNlbGlm
IEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfCiAgIHN0cnVjdCB0aW1ldmFsIG5vdzsKICAgZ2V0dGlt
ZW9mZGF5KCZub3csIE5VTEwpOwogICByZXR1cm4gc3RhdGljX2Nhc3Q8VGltZUluTWlsbGlzPihu
b3cudHZfc2VjKSAqIDEwMDAgKyBub3cudHZfdXNlYyAvIDEwMDA7CiAjZWxzZQotI2Vycm9yICJE
b24ndCBrbm93IGhvdyB0byBnZXQgdGhlIGN1cnJlbnQgdGltZSBvbiB5b3VyIHN5c3RlbS4iCisj
IGVycm9yICJEb24ndCBrbm93IGhvdyB0byBnZXQgdGhlIGN1cnJlbnQgdGltZSBvbiB5b3VyIHN5
c3RlbS4iCiAjZW5kaWYKIH0KIAogLy8gVXRpbGl0aWVzCiAKLS8vIGNsYXNzIFN0cmluZwotCi0v
LyBSZXR1cm5zIHRoZSBpbnB1dCBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzIGlmIGl0J3Mgbm90
IE5VTEw7Ci0vLyBvdGhlcndpc2UgcmV0dXJucyAiKG51bGwpIi4gIEZvciBleGFtcGxlLCAiXCJI
ZWxsb1wiIiBpcyByZXR1cm5lZAotLy8gZm9yIGlucHV0ICJIZWxsbyIuCi0vLwotLy8gVGhpcyBp
cyB1c2VmdWwgZm9yIHByaW50aW5nIGEgQyBzdHJpbmcgaW4gdGhlIHN5bnRheCBvZiBhIGxpdGVy
YWwuCi0vLwotLy8gS25vd24gaXNzdWU6IGVzY2FwZSBzZXF1ZW5jZXMgYXJlIG5vdCBoYW5kbGVk
IHlldC4KLVN0cmluZyBTdHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKGNvbnN0IGNoYXIqIGNfc3Ry
KSB7Ci0gIHJldHVybiBjX3N0ciA/IFN0cmluZzo6Rm9ybWF0KCJcIiVzXCIiLCBjX3N0cikgOiBT
dHJpbmcoIihudWxsKSIpOwotfQotCi0vLyBDb3BpZXMgYXQgbW9zdCBsZW5ndGggY2hhcmFjdGVy
cyBmcm9tIHN0ciBpbnRvIGEgbmV3bHktYWxsb2NhdGVkCi0vLyBwaWVjZSBvZiBtZW1vcnkgb2Yg
c2l6ZSBsZW5ndGgrMS4gIFRoZSBtZW1vcnkgaXMgYWxsb2NhdGVkIHdpdGggbmV3W10uCi0vLyBB
IHRlcm1pbmF0aW5nIG51bGwgYnl0ZSBpcyB3cml0dGVuIHRvIHRoZSBtZW1vcnksIGFuZCBhIHBv
aW50ZXIgdG8gaXQKLS8vIGlzIHJldHVybmVkLiAgSWYgc3RyIGlzIE5VTEwsIE5VTEwgaXMgcmV0
dXJuZWQuCi1zdGF0aWMgY2hhciogQ2xvbmVTdHJpbmcoY29uc3QgY2hhciogc3RyLCBzaXplX3Qg
bGVuZ3RoKSB7Ci0gIGlmIChzdHIgPT0gTlVMTCkgewotICAgIHJldHVybiBOVUxMOwotICB9IGVs
c2UgewotICAgIGNoYXIqIGNvbnN0IGNsb25lID0gbmV3IGNoYXJbbGVuZ3RoICsgMV07Ci0gICAg
cG9zaXg6OlN0ck5DcHkoY2xvbmUsIHN0ciwgbGVuZ3RoKTsKLSAgICBjbG9uZVtsZW5ndGhdID0g
J1wwJzsKLSAgICByZXR1cm4gY2xvbmU7Ci0gIH0KLX0KLQotLy8gQ2xvbmVzIGEgMC10ZXJtaW5h
dGVkIEMgc3RyaW5nLCBhbGxvY2F0aW5nIG1lbW9yeSB1c2luZyBuZXcuICBUaGUKLS8vIGNhbGxl
ciBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmdbXSB0aGUgcmV0dXJuIHZhbHVlLiAgUmV0dXJu
cyB0aGUKLS8vIGNsb25lZCBzdHJpbmcsIG9yIE5VTEwgaWYgdGhlIGlucHV0IGlzIE5VTEwuCi1j
b25zdCBjaGFyICogU3RyaW5nOjpDbG9uZUNTdHJpbmcoY29uc3QgY2hhciogY19zdHIpIHsKLSAg
cmV0dXJuIChjX3N0ciA9PSBOVUxMKSA/Ci0gICAgICAgICAgICAgICAgICAgIE5VTEwgOiBDbG9u
ZVN0cmluZyhjX3N0ciwgc3RybGVuKGNfc3RyKSk7Ci19CisvLyBjbGFzcyBTdHJpbmcuCiAKICNp
ZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogLy8gQ3JlYXRlcyBhIFVURi0xNiB3aWRlIHN0cmlu
ZyBmcm9tIHRoZSBnaXZlbiBBTlNJIHN0cmluZywgYWxsb2NhdGluZwpAQCAtODc5LDExICs5NDks
NiBAQCBib29sIFN0cmluZzo6Q1N0cmluZ0VxdWFscyhjb25zdCBjaGFyICogbGhzLCBjb25zdCBj
aGFyICogcmhzKSB7CiAvLyBlbmNvZGluZywgYW5kIHN0cmVhbXMgdGhlIHJlc3VsdCB0byB0aGUg
Z2l2ZW4gTWVzc2FnZSBvYmplY3QuCiBzdGF0aWMgdm9pZCBTdHJlYW1XaWRlQ2hhcnNUb01lc3Nh
Z2UoY29uc3Qgd2NoYXJfdCogd3N0ciwgc2l6ZV90IGxlbmd0aCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBNZXNzYWdlKiBtc2cpIHsKLSAgLy8gVE9ETyh3YW4pOiBjb25z
aWRlciBhbGxvd2luZyBhIHRlc3Rpbmc6OlN0cmluZyBvYmplY3QgdG8KLSAgLy8gY29udGFpbiAn
XDAnLiAgVGhpcyB3aWxsIG1ha2UgaXQgYmVoYXZlIG1vcmUgbGlrZSBzdGQ6OnN0cmluZywKLSAg
Ly8gYW5kIHdpbGwgYWxsb3cgVG9VdGY4U3RyaW5nKCkgdG8gcmV0dXJuIHRoZSBjb3JyZWN0IGVu
Y29kaW5nCi0gIC8vIGZvciAnXDAnIHMudC4gd2UgY2FuIGdldCByaWQgb2YgdGhlIGNvbmRpdGlv
bmFsIGhlcmUgKGFuZCBpbgotICAvLyBzZXZlcmFsIG90aGVyIHBsYWNlcykuCiAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpICE9IGxlbmd0aDsgKSB7ICAvLyBOT0xJTlQKICAgICBpZiAod3N0cltpXSAh
PSBMJ1wwJykgewogICAgICAgKm1zZyA8PCBXaWRlU3RyaW5nVG9VdGY4KHdzdHIgKyBpLCBzdGF0
aWNfY2FzdDxpbnQ+KGxlbmd0aCAtIGkpKTsKQEAgLTg5OCw4ICs5NjMsNDUgQEAgc3RhdGljIHZv
aWQgU3RyZWFtV2lkZUNoYXJzVG9NZXNzYWdlKGNvbnN0IHdjaGFyX3QqIHdzdHIsIHNpemVfdCBs
ZW5ndGgsCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RSSU5HIHx8IEdURVNUX0hBU19H
TE9CQUxfV1NUUklORwogCit2b2lkIFNwbGl0U3RyaW5nKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0
ciwgY2hhciBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAgIDo6c3RkOjp2ZWN0b3I8IDo6c3Rk
OjpzdHJpbmc+KiBkZXN0KSB7CisgIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpzdHJpbmc+IHBhcnNl
ZDsKKyAgOjpzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHBvcyA9IDA7CisgIHdoaWxlICg6OnRlc3Rp
bmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsKKyAgICBjb25zdCA6OnN0ZDo6c3RyaW5nOjpz
aXplX3R5cGUgY29sb24gPSBzdHIuZmluZChkZWxpbWl0ZXIsIHBvcyk7CisgICAgaWYgKGNvbG9u
ID09IDo6c3RkOjpzdHJpbmc6Om5wb3MpIHsKKyAgICAgIHBhcnNlZC5wdXNoX2JhY2soc3RyLnN1
YnN0cihwb3MpKTsKKyAgICAgIGJyZWFrOworICAgIH0gZWxzZSB7CisgICAgICBwYXJzZWQucHVz
aF9iYWNrKHN0ci5zdWJzdHIocG9zLCBjb2xvbiAtIHBvcykpOworICAgICAgcG9zID0gY29sb24g
KyAxOworICAgIH0KKyAgfQorICBkZXN0LT5zd2FwKHBhcnNlZCk7Cit9CisKIH0gIC8vIG5hbWVz
cGFjZSBpbnRlcm5hbAogCisvLyBDb25zdHJ1Y3RzIGFuIGVtcHR5IE1lc3NhZ2UuCisvLyBXZSBh
bGxvY2F0ZSB0aGUgc3RyaW5nc3RyZWFtIHNlcGFyYXRlbHkgYmVjYXVzZSBvdGhlcndpc2UgZWFj
aCB1c2Ugb2YKKy8vIEFTU0VSVC9FWFBFQ1QgaW4gYSBwcm9jZWR1cmUgYWRkcyBvdmVyIDIwMCBi
eXRlcyB0byB0aGUgcHJvY2VkdXJlJ3MKKy8vIHN0YWNrIGZyYW1lIGxlYWRpbmcgdG8gaHVnZSBz
dGFjayBmcmFtZXMgaW4gc29tZSBjYXNlczsgZ2NjIGRvZXMgbm90IHJldXNlCisvLyB0aGUgc3Rh
Y2sgc3BhY2UuCitNZXNzYWdlOjpNZXNzYWdlKCkgOiBzc18obmV3IDo6c3RkOjpzdHJpbmdzdHJl
YW0pIHsKKyAgLy8gQnkgZGVmYXVsdCwgd2Ugd2FudCB0aGVyZSB0byBiZSBlbm91Z2ggcHJlY2lz
aW9uIHdoZW4gcHJpbnRpbmcKKyAgLy8gYSBkb3VibGUgdG8gYSBNZXNzYWdlLgorICAqc3NfIDw8
IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZGlnaXRzMTAg
KyAyKTsKK30KKworLy8gVGhlc2UgdHdvIG92ZXJsb2FkcyBhbGxvdyBzdHJlYW1pbmcgYSB3aWRl
IEMgc3RyaW5nIHRvIGEgTWVzc2FnZQorLy8gdXNpbmcgdGhlIFVURi04IGVuY29kaW5nLgorTWVz
c2FnZSYgTWVzc2FnZTo6b3BlcmF0b3IgPDwoY29uc3Qgd2NoYXJfdCogd2lkZV9jX3N0cikgewor
ICByZXR1cm4gKnRoaXMgPDwgaW50ZXJuYWw6OlN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKHdpZGVf
Y19zdHIpOworfQorTWVzc2FnZSYgTWVzc2FnZTo6b3BlcmF0b3IgPDwod2NoYXJfdCogd2lkZV9j
X3N0cikgeworICByZXR1cm4gKnRoaXMgPDwgaW50ZXJuYWw6OlN0cmluZzo6U2hvd1dpZGVDU3Ry
aW5nKHdpZGVfY19zdHIpOworfQorCiAjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCiAvLyBDb252
ZXJ0cyB0aGUgZ2l2ZW4gd2lkZSBzdHJpbmcgdG8gYSBuYXJyb3cgc3RyaW5nIHVzaW5nIHRoZSBV
VEYtOAogLy8gZW5jb2RpbmcsIGFuZCBzdHJlYW1zIHRoZSByZXN1bHQgdG8gdGhpcyBNZXNzYWdl
IG9iamVjdC4KQEAgLTkxOCw1NSArMTAyMCwyNiBAQCBNZXNzYWdlJiBNZXNzYWdlOjpvcGVyYXRv
ciA8PChjb25zdCA6OndzdHJpbmcmIHdzdHIpIHsKIH0KICNlbmRpZiAgLy8gR1RFU1RfSEFTX0dM
T0JBTF9XU1RSSU5HCiAKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIEZvcm1hdHMgYSB2YWx1
ZSB0byBiZSB1c2VkIGluIGEgZmFpbHVyZSBtZXNzYWdlLgotCi0vLyBGb3IgYSBjaGFyIHZhbHVl
LCB3ZSBwcmludCBpdCBhcyBhIEMrKyBjaGFyIGxpdGVyYWwgYW5kIGFzIGFuCi0vLyB1bnNpZ25l
ZCBpbnRlZ2VyIChib3RoIGluIGRlY2ltYWwgYW5kIGluIGhleGFkZWNpbWFsKS4KLVN0cmluZyBG
b3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjaGFyIGNoKSB7Ci0gIGNvbnN0IHVuc2lnbmVkIGludCBj
aF9hc191aW50ID0gY2g7Ci0gIC8vIEEgU3RyaW5nIG9iamVjdCBjYW5ub3QgY29udGFpbiAnXDAn
LCBzbyB3ZSBwcmludCAiXFwwIiB3aGVuIGNoIGlzCi0gIC8vICdcMCcuCi0gIHJldHVybiBTdHJp
bmc6OkZvcm1hdCgiJyVzJyAoJXUsIDB4JVgpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNo
ID8gU3RyaW5nOjpGb3JtYXQoIiVjIiwgY2gpLmNfc3RyKCkgOiAiXFwwIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNoX2FzX3VpbnQsIGNoX2FzX3VpbnQpOwotfQotCi0vLyBGb3IgYSB3Y2hh
cl90IHZhbHVlLCB3ZSBwcmludCBpdCBhcyBhIEMrKyB3Y2hhcl90IGxpdGVyYWwgYW5kIGFzIGFu
Ci0vLyB1bnNpZ25lZCBpbnRlZ2VyIChib3RoIGluIGRlY2ltYWwgYW5kIGluIGhleGlkZWNpbWFs
KS4KLVN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZSh3Y2hhcl90IHdjaGFyKSB7Ci0gIC8v
IFRoZSBDKysgc3RhbmRhcmQgZG9lc24ndCBzcGVjaWZ5IHRoZSBleGFjdCBzaXplIG9mIHRoZSB3
Y2hhcl90Ci0gIC8vIHR5cGUuICBJdCBqdXN0IHNheXMgdGhhdCBpdCBzaGFsbCBoYXZlIHRoZSBz
YW1lIHNpemUgYXMgYW5vdGhlcgotICAvLyBpbnRlZ3JhbCB0eXBlLCBjYWxsZWQgaXRzIHVuZGVy
bHlpbmcgdHlwZS4KLSAgLy8KLSAgLy8gVGhlcmVmb3JlLCBpbiBvcmRlciB0byBwcmludCBhIHdj
aGFyX3QgdmFsdWUgaW4gdGhlIG51bWVyaWMgZm9ybSwKLSAgLy8gd2UgZmlyc3QgY29udmVydCBp
dCB0byB0aGUgbGFyZ2VzdCBpbnRlZ3JhbCB0eXBlIChVSW50NjQpIGFuZAotICAvLyB0aGVuIHBy
aW50IHRoZSBjb252ZXJ0ZWQgdmFsdWUuCi0gIC8vCi0gIC8vIFdlIHVzZSBzdHJlYW1pbmcgdG8g
cHJpbnQgdGhlIHZhbHVlIGFzICIlbGx1IiBkb2Vzbid0IHdvcmsKLSAgLy8gY29ycmVjdGx5IHdp
dGggTVNWQyA3LjEuCi0gIGNvbnN0IFVJbnQ2NCB3Y2hhcl9hc191aW50NjQgPSB3Y2hhcjsKLSAg
TWVzc2FnZSBtc2c7Ci0gIC8vIEEgU3RyaW5nIG9iamVjdCBjYW5ub3QgY29udGFpbiAnXDAnLCBz
byB3ZSBwcmludCAiXFwwIiB3aGVuIHdjaGFyIGlzCi0gIC8vIEwnXDAnLgotICBjaGFyIGJ1ZmZl
clszMl07ICAvLyBDb2RlUG9pbnRUb1V0ZjggcmVxdWlyZXMgYSBidWZmZXIgdGhhdCBiaWcuCi0g
IG1zZyA8PCAiTCciCi0gICAgICA8PCAod2NoYXIgPyBDb2RlUG9pbnRUb1V0Zjgoc3RhdGljX2Nh
c3Q8VUludDMyPih3Y2hhciksIGJ1ZmZlcikgOiAiXFwwIikKLSAgICAgIDw8ICInICgiIDw8IHdj
aGFyX2FzX3VpbnQ2NCA8PCAiLCAweCIgPDwgOjpzdGQ6OnNldGJhc2UoMTYpCi0gICAgICA8PCB3
Y2hhcl9hc191aW50NjQgPDwgIikiOwotICByZXR1cm4gbXNnLkdldFN0cmluZygpOworLy8gR2V0
cyB0aGUgdGV4dCBzdHJlYW1lZCB0byB0aGlzIG9iamVjdCBzbyBmYXIgYXMgYW4gc3RkOjpzdHJp
bmcuCisvLyBFYWNoICdcMCcgY2hhcmFjdGVyIGluIHRoZSBidWZmZXIgaXMgcmVwbGFjZWQgd2l0
aCAiXFwwIi4KK3N0ZDo6c3RyaW5nIE1lc3NhZ2U6OkdldFN0cmluZygpIGNvbnN0IHsKKyAgcmV0
dXJuIGludGVybmFsOjpTdHJpbmdTdHJlYW1Ub1N0cmluZyhzc18uZ2V0KCkpOwogfQogCi19ICAv
LyBuYW1lc3BhY2UgaW50ZXJuYWwKLQogLy8gQXNzZXJ0aW9uUmVzdWx0IGNvbnN0cnVjdG9ycy4K
IC8vIFVzZWQgaW4gRVhQRUNUX1RSVUUvRkFMU0UoYXNzZXJ0aW9uX3Jlc3VsdCkuCiBBc3NlcnRp
b25SZXN1bHQ6OkFzc2VydGlvblJlc3VsdChjb25zdCBBc3NlcnRpb25SZXN1bHQmIG90aGVyKQog
ICAgIDogc3VjY2Vzc18ob3RoZXIuc3VjY2Vzc18pLAogICAgICAgbWVzc2FnZV8ob3RoZXIubWVz
c2FnZV8uZ2V0KCkgIT0gTlVMTCA/Ci0gICAgICAgICAgICAgICBuZXcgaW50ZXJuYWw6OlN0cmlu
Zygqb3RoZXIubWVzc2FnZV8pIDoKLSAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludGVybmFs
OjpTdHJpbmcqPihOVUxMKSkgeworICAgICAgICAgICAgICAgbmV3IDo6c3RkOjpzdHJpbmcoKm90
aGVyLm1lc3NhZ2VfKSA6CisgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDwgOjpzdGQ6OnN0cmlu
Zyo+KE5VTEwpKSB7Cit9CisKKy8vIFN3YXBzIHR3byBBc3NlcnRpb25SZXN1bHRzLgordm9pZCBB
c3NlcnRpb25SZXN1bHQ6OnN3YXAoQXNzZXJ0aW9uUmVzdWx0JiBvdGhlcikgeworICB1c2luZyBz
dGQ6OnN3YXA7CisgIHN3YXAoc3VjY2Vzc18sIG90aGVyLnN1Y2Nlc3NfKTsKKyAgc3dhcChtZXNz
YWdlXywgb3RoZXIubWVzc2FnZV8pOwogfQogCiAvLyBSZXR1cm5zIHRoZSBhc3NlcnRpb24ncyBu
ZWdhdGlvbi4gVXNlZCB3aXRoIEVYUEVDVC9BU1NFUlRfRkFMU0UuCkBAIC05OTUsNiArMTA2OCwy
NzYgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvbkZhaWx1cmUoY29uc3QgTWVzc2FnZSYgbWVz
c2FnZSkgewogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCituYW1lc3BhY2UgZWRpdF9kaXN0YW5j
ZSB7CitzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKGNvbnN0IHN0
ZDo6dmVjdG9yPHNpemVfdD4mIGxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIHJpZ2h0KSB7CisgIHN0ZDo6
dmVjdG9yPHN0ZDo6dmVjdG9yPGRvdWJsZT4gPiBjb3N0cygKKyAgICAgIGxlZnQuc2l6ZSgpICsg
MSwgc3RkOjp2ZWN0b3I8ZG91YmxlPihyaWdodC5zaXplKCkgKyAxKSk7CisgIHN0ZDo6dmVjdG9y
PHN0ZDo6dmVjdG9yPEVkaXRUeXBlPiA+IGJlc3RfbW92ZSgKKyAgICAgIGxlZnQuc2l6ZSgpICsg
MSwgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+KHJpZ2h0LnNpemUoKSArIDEpKTsKKworICAvLyBQb3B1
bGF0ZSBmb3IgZW1wdHkgcmlnaHQuCisgIGZvciAoc2l6ZV90IGxfaSA9IDA7IGxfaSA8IGNvc3Rz
LnNpemUoKTsgKytsX2kpIHsKKyAgICBjb3N0c1tsX2ldWzBdID0gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihsX2kpOworICAgIGJlc3RfbW92ZVtsX2ldWzBdID0ga1JlbW92ZTsKKyAgfQorICAvLyBQb3B1
bGF0ZSBmb3IgZW1wdHkgbGVmdC4KKyAgZm9yIChzaXplX3Qgcl9pID0gMTsgcl9pIDwgY29zdHNb
MF0uc2l6ZSgpOyArK3JfaSkgeworICAgIGNvc3RzWzBdW3JfaV0gPSBzdGF0aWNfY2FzdDxkb3Vi
bGU+KHJfaSk7CisgICAgYmVzdF9tb3ZlWzBdW3JfaV0gPSBrQWRkOworICB9CisKKyAgZm9yIChz
aXplX3QgbF9pID0gMDsgbF9pIDwgbGVmdC5zaXplKCk7ICsrbF9pKSB7CisgICAgZm9yIChzaXpl
X3Qgcl9pID0gMDsgcl9pIDwgcmlnaHQuc2l6ZSgpOyArK3JfaSkgeworICAgICAgaWYgKGxlZnRb
bF9pXSA9PSByaWdodFtyX2ldKSB7CisgICAgICAgIC8vIEZvdW5kIGEgbWF0Y2guIENvbnN1bWUg
aXQuCisgICAgICAgIGNvc3RzW2xfaSArIDFdW3JfaSArIDFdID0gY29zdHNbbF9pXVtyX2ldOwor
ICAgICAgICBiZXN0X21vdmVbbF9pICsgMV1bcl9pICsgMV0gPSBrTWF0Y2g7CisgICAgICAgIGNv
bnRpbnVlOworICAgICAgfQorCisgICAgICBjb25zdCBkb3VibGUgYWRkID0gY29zdHNbbF9pICsg
MV1bcl9pXTsKKyAgICAgIGNvbnN0IGRvdWJsZSByZW1vdmUgPSBjb3N0c1tsX2ldW3JfaSArIDFd
OworICAgICAgY29uc3QgZG91YmxlIHJlcGxhY2UgPSBjb3N0c1tsX2ldW3JfaV07CisgICAgICBp
ZiAoYWRkIDwgcmVtb3ZlICYmIGFkZCA8IHJlcGxhY2UpIHsKKyAgICAgICAgY29zdHNbbF9pICsg
MV1bcl9pICsgMV0gPSBhZGQgKyAxOworICAgICAgICBiZXN0X21vdmVbbF9pICsgMV1bcl9pICsg
MV0gPSBrQWRkOworICAgICAgfSBlbHNlIGlmIChyZW1vdmUgPCBhZGQgJiYgcmVtb3ZlIDwgcmVw
bGFjZSkgeworICAgICAgICBjb3N0c1tsX2kgKyAxXVtyX2kgKyAxXSA9IHJlbW92ZSArIDE7Cisg
ICAgICAgIGJlc3RfbW92ZVtsX2kgKyAxXVtyX2kgKyAxXSA9IGtSZW1vdmU7CisgICAgICB9IGVs
c2UgeworICAgICAgICAvLyBXZSBtYWtlIHJlcGxhY2UgYSBsaXR0bGUgbW9yZSBleHBlbnNpdmUg
dGhhbiBhZGQvcmVtb3ZlIHRvIGxvd2VyCisgICAgICAgIC8vIHRoZWlyIHByaW9yaXR5LgorICAg
ICAgICBjb3N0c1tsX2kgKyAxXVtyX2kgKyAxXSA9IHJlcGxhY2UgKyAxLjAwMDAxOworICAgICAg
ICBiZXN0X21vdmVbbF9pICsgMV1bcl9pICsgMV0gPSBrUmVwbGFjZTsKKyAgICAgIH0KKyAgICB9
CisgIH0KKworICAvLyBSZWNvbnN0cnVjdCB0aGUgYmVzdCBwYXRoLiBXZSBkbyBpdCBpbiByZXZl
cnNlIG9yZGVyLgorICBzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gYmVzdF9wYXRoOworICBmb3IgKHNp
emVfdCBsX2kgPSBsZWZ0LnNpemUoKSwgcl9pID0gcmlnaHQuc2l6ZSgpOyBsX2kgPiAwIHx8IHJf
aSA+IDA7KSB7CisgICAgRWRpdFR5cGUgbW92ZSA9IGJlc3RfbW92ZVtsX2ldW3JfaV07CisgICAg
YmVzdF9wYXRoLnB1c2hfYmFjayhtb3ZlKTsKKyAgICBsX2kgLT0gbW92ZSAhPSBrQWRkOworICAg
IHJfaSAtPSBtb3ZlICE9IGtSZW1vdmU7CisgIH0KKyAgc3RkOjpyZXZlcnNlKGJlc3RfcGF0aC5i
ZWdpbigpLCBiZXN0X3BhdGguZW5kKCkpOworICByZXR1cm4gYmVzdF9wYXRoOworfQorCituYW1l
c3BhY2UgeworCisvLyBIZWxwZXIgY2xhc3MgdG8gY29udmVydCBzdHJpbmcgaW50byBpZHMgd2l0
aCBkZWR1cGxpY2F0aW9uLgorY2xhc3MgSW50ZXJuYWxTdHJpbmdzIHsKKyBwdWJsaWM6CisgIHNp
emVfdCBHZXRJZChjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7CisgICAgSWRNYXA6Oml0ZXJhdG9y
IGl0ID0gaWRzXy5maW5kKHN0cik7CisgICAgaWYgKGl0ICE9IGlkc18uZW5kKCkpIHJldHVybiBp
dC0+c2Vjb25kOworICAgIHNpemVfdCBpZCA9IGlkc18uc2l6ZSgpOworICAgIHJldHVybiBpZHNf
W3N0cl0gPSBpZDsKKyAgfQorCisgcHJpdmF0ZToKKyAgdHlwZWRlZiBzdGQ6Om1hcDxzdGQ6OnN0
cmluZywgc2l6ZV90PiBJZE1hcDsKKyAgSWRNYXAgaWRzXzsKK307CisKK30gIC8vIG5hbWVzcGFj
ZQorCitzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKAorICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgbGVmdCwKKyAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4mIHJpZ2h0KSB7CisgIHN0ZDo6dmVjdG9yPHNpemVfdD4gbGVmdF9pZHMs
IHJpZ2h0X2lkczsKKyAgeworICAgIEludGVybmFsU3RyaW5ncyBpbnRlcm5fdGFibGU7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZWZ0LnNpemUoKTsgKytpKSB7CisgICAgICBsZWZ0X2lk
cy5wdXNoX2JhY2soaW50ZXJuX3RhYmxlLkdldElkKGxlZnRbaV0pKTsKKyAgICB9CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCByaWdodC5zaXplKCk7ICsraSkgeworICAgICAgcmlnaHRfaWRz
LnB1c2hfYmFjayhpbnRlcm5fdGFibGUuR2V0SWQocmlnaHRbaV0pKTsKKyAgICB9CisgIH0KKyAg
cmV0dXJuIENhbGN1bGF0ZU9wdGltYWxFZGl0cyhsZWZ0X2lkcywgcmlnaHRfaWRzKTsKK30KKwor
bmFtZXNwYWNlIHsKKworLy8gSGVscGVyIGNsYXNzIHRoYXQgaG9sZHMgdGhlIHN0YXRlIGZvciBv
bmUgaHVuayBhbmQgcHJpbnRzIGl0IG91dCB0byB0aGUKKy8vIHN0cmVhbS4KKy8vIEl0IHJlb3Jk
ZXJzIGFkZHMvcmVtb3ZlcyB3aGVuIHBvc3NpYmxlIHRvIGdyb3VwIGFsbCByZW1vdmVzIGJlZm9y
ZSBhbGwKKy8vIGFkZHMuIEl0IGFsc28gYWRkcyB0aGUgaHVuayBoZWFkZXIgYmVmb3JlIHByaW50
aW50IGludG8gdGhlIHN0cmVhbS4KK2NsYXNzIEh1bmsgeworIHB1YmxpYzoKKyAgSHVuayhzaXpl
X3QgbGVmdF9zdGFydCwgc2l6ZV90IHJpZ2h0X3N0YXJ0KQorICAgICAgOiBsZWZ0X3N0YXJ0Xyhs
ZWZ0X3N0YXJ0KSwKKyAgICAgICAgcmlnaHRfc3RhcnRfKHJpZ2h0X3N0YXJ0KSwKKyAgICAgICAg
YWRkc18oKSwKKyAgICAgICAgcmVtb3Zlc18oKSwKKyAgICAgICAgY29tbW9uXygpIHt9CisKKyAg
dm9pZCBQdXNoTGluZShjaGFyIGVkaXQsIGNvbnN0IGNoYXIqIGxpbmUpIHsKKyAgICBzd2l0Y2gg
KGVkaXQpIHsKKyAgICAgIGNhc2UgJyAnOgorICAgICAgICArK2NvbW1vbl87CisgICAgICAgIEZs
dXNoRWRpdHMoKTsKKyAgICAgICAgaHVua18ucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKCcgJywg
bGluZSkpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJy0nOgorICAgICAgICArK3JlbW92
ZXNfOworICAgICAgICBodW5rX3JlbW92ZXNfLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcignLScs
IGxpbmUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICcrJzoKKyAgICAgICAgKythZGRz
XzsKKyAgICAgICAgaHVua19hZGRzXy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoJysnLCBsaW5l
KSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgfQorCisgIHZvaWQgUHJpbnRUbyhzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgICAgUHJpbnRIZWFkZXIob3MpOworICAgIEZsdXNoRWRpdHMoKTsKKyAg
ICBmb3IgKHN0ZDo6bGlzdDxzdGQ6OnBhaXI8Y2hhciwgY29uc3QgY2hhcio+ID46OmNvbnN0X2l0
ZXJhdG9yIGl0ID0KKyAgICAgICAgICAgICBodW5rXy5iZWdpbigpOworICAgICAgICAgaXQgIT0g
aHVua18uZW5kKCk7ICsraXQpIHsKKyAgICAgICpvcyA8PCBpdC0+Zmlyc3QgPDwgaXQtPnNlY29u
ZCA8PCAiXG4iOworICAgIH0KKyAgfQorCisgIGJvb2wgaGFzX2VkaXRzKCkgY29uc3QgeyByZXR1
cm4gYWRkc18gfHwgcmVtb3Zlc187IH0KKworIHByaXZhdGU6CisgIHZvaWQgRmx1c2hFZGl0cygp
IHsKKyAgICBodW5rXy5zcGxpY2UoaHVua18uZW5kKCksIGh1bmtfcmVtb3Zlc18pOworICAgIGh1
bmtfLnNwbGljZShodW5rXy5lbmQoKSwgaHVua19hZGRzXyk7CisgIH0KKworICAvLyBQcmludCBh
IHVuaWZpZWQgZGlmZiBoZWFkZXIgZm9yIG9uZSBodW5rLgorICAvLyBUaGUgZm9ybWF0IGlzCisg
IC8vICAgIkBAIC08bGVmdF9zdGFydD4sPGxlZnRfbGVuZ3RoPiArPHJpZ2h0X3N0YXJ0Piw8cmln
aHRfbGVuZ3RoPiBAQCIKKyAgLy8gd2hlcmUgdGhlIGxlZnQvcmlnaHQgcGFydHMgYXJlIG9taXR0
ZWQgaWYgdW5uZWNlc3NhcnkuCisgIHZvaWQgUHJpbnRIZWFkZXIoc3RkOjpvc3RyZWFtKiBzcykg
Y29uc3QgeworICAgICpzcyA8PCAiQEAgIjsKKyAgICBpZiAocmVtb3Zlc18pIHsKKyAgICAgICpz
cyA8PCAiLSIgPDwgbGVmdF9zdGFydF8gPDwgIiwiIDw8IChyZW1vdmVzXyArIGNvbW1vbl8pOwor
ICAgIH0KKyAgICBpZiAocmVtb3Zlc18gJiYgYWRkc18pIHsKKyAgICAgICpzcyA8PCAiICI7Cisg
ICAgfQorICAgIGlmIChhZGRzXykgeworICAgICAgKnNzIDw8ICIrIiA8PCByaWdodF9zdGFydF8g
PDwgIiwiIDw8IChhZGRzXyArIGNvbW1vbl8pOworICAgIH0KKyAgICAqc3MgPDwgIiBAQFxuIjsK
KyAgfQorCisgIHNpemVfdCBsZWZ0X3N0YXJ0XywgcmlnaHRfc3RhcnRfOworICBzaXplX3QgYWRk
c18sIHJlbW92ZXNfLCBjb21tb25fOworICBzdGQ6Omxpc3Q8c3RkOjpwYWlyPGNoYXIsIGNvbnN0
IGNoYXIqPiA+IGh1bmtfLCBodW5rX2FkZHNfLCBodW5rX3JlbW92ZXNfOworfTsKKworfSAgLy8g
bmFtZXNwYWNlCisKKy8vIENyZWF0ZSBhIGxpc3Qgb2YgZGlmZiBodW5rcyBpbiBVbmlmaWVkIGRp
ZmYgZm9ybWF0LgorLy8gRWFjaCBodW5rIGhhcyBhIGhlYWRlciBnZW5lcmF0ZWQgYnkgUHJpbnRI
ZWFkZXIgYWJvdmUgcGx1cyBhIGJvZHkgd2l0aAorLy8gbGluZXMgcHJlZml4ZWQgd2l0aCAnICcg
Zm9yIG5vIGNoYW5nZSwgJy0nIGZvciBkZWxldGlvbiBhbmQgJysnIGZvcgorLy8gYWRkaXRpb24u
CisvLyAnY29udGV4dCcgcmVwcmVzZW50cyB0aGUgZGVzaXJlZCB1bmNoYW5nZWQgcHJlZml4L3N1
ZmZpeCBhcm91bmQgdGhlIGRpZmYuCisvLyBJZiB0d28gaHVua3MgYXJlIGNsb3NlIGVub3VnaCB0
aGF0IHRoZWlyIGNvbnRleHRzIG92ZXJsYXAsIHRoZW4gdGhleSBhcmUKKy8vIGpvaW5lZCBpbnRv
IG9uZSBodW5rLgorc3RkOjpzdHJpbmcgQ3JlYXRlVW5pZmllZERpZmYoY29uc3Qgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+JiBsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiByaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBjb250ZXh0KSB7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPEVkaXRUeXBl
PiBlZGl0cyA9IENhbGN1bGF0ZU9wdGltYWxFZGl0cyhsZWZ0LCByaWdodCk7CisKKyAgc2l6ZV90
IGxfaSA9IDAsIHJfaSA9IDAsIGVkaXRfaSA9IDA7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOwor
ICB3aGlsZSAoZWRpdF9pIDwgZWRpdHMuc2l6ZSgpKSB7CisgICAgLy8gRmluZCBmaXJzdCBlZGl0
LgorICAgIHdoaWxlIChlZGl0X2kgPCBlZGl0cy5zaXplKCkgJiYgZWRpdHNbZWRpdF9pXSA9PSBr
TWF0Y2gpIHsKKyAgICAgICsrbF9pOworICAgICAgKytyX2k7CisgICAgICArK2VkaXRfaTsKKyAg
ICB9CisKKyAgICAvLyBGaW5kIHRoZSBmaXJzdCBsaW5lIHRvIGluY2x1ZGUgaW4gdGhlIGh1bmsu
CisgICAgY29uc3Qgc2l6ZV90IHByZWZpeF9jb250ZXh0ID0gc3RkOjptaW4obF9pLCBjb250ZXh0
KTsKKyAgICBIdW5rIGh1bmsobF9pIC0gcHJlZml4X2NvbnRleHQgKyAxLCByX2kgLSBwcmVmaXhf
Y29udGV4dCArIDEpOworICAgIGZvciAoc2l6ZV90IGkgPSBwcmVmaXhfY29udGV4dDsgaSA+IDA7
IC0taSkgeworICAgICAgaHVuay5QdXNoTGluZSgnICcsIGxlZnRbbF9pIC0gaV0uY19zdHIoKSk7
CisgICAgfQorCisgICAgLy8gSXRlcmF0ZSB0aGUgZWRpdHMgdW50aWwgd2UgZm91bmQgZW5vdWdo
IHN1ZmZpeCBmb3IgdGhlIGh1bmsgb3IgdGhlIGlucHV0CisgICAgLy8gaXMgb3Zlci4KKyAgICBz
aXplX3Qgbl9zdWZmaXggPSAwOworICAgIGZvciAoOyBlZGl0X2kgPCBlZGl0cy5zaXplKCk7ICsr
ZWRpdF9pKSB7CisgICAgICBpZiAobl9zdWZmaXggPj0gY29udGV4dCkgeworICAgICAgICAvLyBD
b250aW51ZSBvbmx5IGlmIHRoZSBuZXh0IGh1bmsgaXMgdmVyeSBjbG9zZS4KKyAgICAgICAgc3Rk
Ojp2ZWN0b3I8RWRpdFR5cGU+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGVkaXRzLmJlZ2luKCkgKyBl
ZGl0X2k7CisgICAgICAgIHdoaWxlIChpdCAhPSBlZGl0cy5lbmQoKSAmJiAqaXQgPT0ga01hdGNo
KSArK2l0OworICAgICAgICBpZiAoaXQgPT0gZWRpdHMuZW5kKCkgfHwgKGl0IC0gZWRpdHMuYmVn
aW4oKSkgLSBlZGl0X2kgPj0gY29udGV4dCkgeworICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG5l
eHQgZWRpdCBvciBpdCBpcyB0b28gZmFyIGF3YXkuCisgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgIH0KKworICAgICAgRWRpdFR5cGUgZWRpdCA9IGVkaXRzW2VkaXRfaV07CisgICAg
ICAvLyBSZXNldCBjb3VudCB3aGVuIGEgbm9uIG1hdGNoIGlzIGZvdW5kLgorICAgICAgbl9zdWZm
aXggPSBlZGl0ID09IGtNYXRjaCA/IG5fc3VmZml4ICsgMSA6IDA7CisKKyAgICAgIGlmIChlZGl0
ID09IGtNYXRjaCB8fCBlZGl0ID09IGtSZW1vdmUgfHwgZWRpdCA9PSBrUmVwbGFjZSkgeworICAg
ICAgICBodW5rLlB1c2hMaW5lKGVkaXQgPT0ga01hdGNoID8gJyAnIDogJy0nLCBsZWZ0W2xfaV0u
Y19zdHIoKSk7CisgICAgICB9CisgICAgICBpZiAoZWRpdCA9PSBrQWRkIHx8IGVkaXQgPT0ga1Jl
cGxhY2UpIHsKKyAgICAgICAgaHVuay5QdXNoTGluZSgnKycsIHJpZ2h0W3JfaV0uY19zdHIoKSk7
CisgICAgICB9CisKKyAgICAgIC8vIEFkdmFuY2UgaW5kaWNlcywgZGVwZW5kaW5nIG9uIGVkaXQg
dHlwZS4KKyAgICAgIGxfaSArPSBlZGl0ICE9IGtBZGQ7CisgICAgICByX2kgKz0gZWRpdCAhPSBr
UmVtb3ZlOworICAgIH0KKworICAgIGlmICghaHVuay5oYXNfZWRpdHMoKSkgeworICAgICAgLy8g
V2UgYXJlIGRvbmUuIFdlIGRvbid0IHdhbnQgdGhpcyBodW5rLgorICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgaHVuay5QcmludFRvKCZzcyk7CisgIH0KKyAgcmV0dXJuIHNzLnN0cigpOworfQor
Cit9ICAvLyBuYW1lc3BhY2UgZWRpdF9kaXN0YW5jZQorCituYW1lc3BhY2UgeworCisvLyBUaGUg
c3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2YWx1ZXMgcmVjZWl2ZWQgaW4gRXFGYWlsdXJl
KCkgYXJlIGFscmVhZHkKKy8vIGVzY2FwZWQuIFNwbGl0IHRoZW0gb24gZXNjYXBlZCAnXG4nIGJv
dW5kYXJpZXMuIExlYXZlIGFsbCBvdGhlciBlc2NhcGVkCisvLyBjaGFyYWN0ZXJzIHRoZSBzYW1l
Lgorc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IFNwbGl0RXNjYXBlZFN0cmluZyhjb25zdCBzdGQ6
OnN0cmluZyYgc3RyKSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBsaW5lczsKKyAgc2l6
ZV90IHN0YXJ0ID0gMCwgZW5kID0gc3RyLnNpemUoKTsKKyAgaWYgKGVuZCA+IDIgJiYgc3RyWzBd
ID09ICciJyAmJiBzdHJbZW5kIC0gMV0gPT0gJyInKSB7CisgICAgKytzdGFydDsKKyAgICAtLWVu
ZDsKKyAgfQorICBib29sIGVzY2FwZWQgPSBmYWxzZTsKKyAgZm9yIChzaXplX3QgaSA9IHN0YXJ0
OyBpICsgMSA8IGVuZDsgKytpKSB7CisgICAgaWYgKGVzY2FwZWQpIHsKKyAgICAgIGVzY2FwZWQg
PSBmYWxzZTsKKyAgICAgIGlmIChzdHJbaV0gPT0gJ24nKSB7CisgICAgICAgIGxpbmVzLnB1c2hf
YmFjayhzdHIuc3Vic3RyKHN0YXJ0LCBpIC0gc3RhcnQgLSAxKSk7CisgICAgICAgIHN0YXJ0ID0g
aSArIDE7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIGVzY2FwZWQgPSBzdHJbaV0gPT0g
J1xcJzsKKyAgICB9CisgIH0KKyAgbGluZXMucHVzaF9iYWNrKHN0ci5zdWJzdHIoc3RhcnQsIGVu
ZCAtIHN0YXJ0KSk7CisgIHJldHVybiBsaW5lczsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKIC8v
IENvbnN0cnVjdHMgYW5kIHJldHVybnMgdGhlIG1lc3NhZ2UgZm9yIGFuIGVxdWFsaXR5IGFzc2Vy
dGlvbgogLy8gKGUuZy4gQVNTRVJUX0VRLCBFWFBFQ1RfU1RSRVEsIGV0YykgZmFpbHVyZS4KIC8v
CkBAIC0xMDAyLDQxICsxMzQ1LDU0IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLyBhbmQgdGhl
aXIgdmFsdWVzLCBhcyBzdHJpbmdzLiAgRm9yIGV4YW1wbGUsIGZvciBBU1NFUlRfRVEoZm9vLCBi
YXIpCiAvLyB3aGVyZSBmb28gaXMgNSBhbmQgYmFyIGlzIDYsIHdlIGhhdmU6CiAvLwotLy8gICBl
eHBlY3RlZF9leHByZXNzaW9uOiAiZm9vIgotLy8gICBhY3R1YWxfZXhwcmVzc2lvbjogICAiYmFy
IgotLy8gICBleHBlY3RlZF92YWx1ZTogICAgICAiNSIKLS8vICAgYWN0dWFsX3ZhbHVlOiAgICAg
ICAgIjYiCisvLyAgIGxoc19leHByZXNzaW9uOiAiZm9vIgorLy8gICByaHNfZXhwcmVzc2lvbjog
ImJhciIKKy8vICAgbGhzX3ZhbHVlOiAgICAgICI1IgorLy8gICByaHNfdmFsdWU6ICAgICAgIjYi
CiAvLwogLy8gVGhlIGlnbm9yaW5nX2Nhc2UgcGFyYW1ldGVyIGlzIHRydWUgaWZmIHRoZSBhc3Nl
cnRpb24gaXMgYQotLy8gKl9TVFJDQVNFRVEqLiAgV2hlbiBpdCdzIHRydWUsIHRoZSBzdHJpbmcg
IiAoaWdub3JpbmcgY2FzZSkiIHdpbGwKKy8vICpfU1RSQ0FTRUVRKi4gIFdoZW4gaXQncyB0cnVl
LCB0aGUgc3RyaW5nICJJZ25vcmluZyBjYXNlIiB3aWxsCiAvLyBiZSBpbnNlcnRlZCBpbnRvIHRo
ZSBtZXNzYWdlLgotQXNzZXJ0aW9uUmVzdWx0IEVxRmFpbHVyZShjb25zdCBjaGFyKiBleHBlY3Rl
ZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1
YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBl
eHBlY3RlZF92YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBh
Y3R1YWxfdmFsdWUsCitBc3NlcnRpb25SZXN1bHQgRXFGYWlsdXJlKGNvbnN0IGNoYXIqIGxoc19l
eHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhw
cmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxo
c192YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHJo
c192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25vcmluZ19jYXNlKSB7
CiAgIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgIlZhbHVlIG9mOiAiIDw8IGFjdHVhbF9leHByZXNz
aW9uOwotICBpZiAoYWN0dWFsX3ZhbHVlICE9IGFjdHVhbF9leHByZXNzaW9uKSB7Ci0gICAgbXNn
IDw8ICJcbiAgQWN0dWFsOiAiIDw8IGFjdHVhbF92YWx1ZTsKKyAgbXNnIDw8ICJFeHBlY3RlZCBl
cXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6IjsKKyAgbXNnIDw8ICJcbiAgIiA8PCBsaHNfZXhwcmVz
c2lvbjsKKyAgaWYgKGxoc192YWx1ZSAhPSBsaHNfZXhwcmVzc2lvbikgeworICAgIG1zZyA8PCAi
XG4gICAgV2hpY2ggaXM6ICIgPDwgbGhzX3ZhbHVlOworICB9CisgIG1zZyA8PCAiXG4gICIgPDwg
cmhzX2V4cHJlc3Npb247CisgIGlmIChyaHNfdmFsdWUgIT0gcmhzX2V4cHJlc3Npb24pIHsKKyAg
ICBtc2cgPDwgIlxuICAgIFdoaWNoIGlzOiAiIDw8IHJoc192YWx1ZTsKICAgfQogCi0gIG1zZyA8
PCAiXG5FeHBlY3RlZDogIiA8PCBleHBlY3RlZF9leHByZXNzaW9uOwogICBpZiAoaWdub3Jpbmdf
Y2FzZSkgewotICAgIG1zZyA8PCAiIChpZ25vcmluZyBjYXNlKSI7CisgICAgbXNnIDw8ICJcbkln
bm9yaW5nIGNhc2UiOwogICB9Ci0gIGlmIChleHBlY3RlZF92YWx1ZSAhPSBleHBlY3RlZF9leHBy
ZXNzaW9uKSB7Ci0gICAgbXNnIDw8ICJcbldoaWNoIGlzOiAiIDw8IGV4cGVjdGVkX3ZhbHVlOwor
CisgIGlmICghbGhzX3ZhbHVlLmVtcHR5KCkgJiYgIXJoc192YWx1ZS5lbXB0eSgpKSB7CisgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGxoc19saW5lcyA9CisgICAgICAgIFNwbGl0
RXNjYXBlZFN0cmluZyhsaHNfdmFsdWUpOworICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiByaHNfbGluZXMgPQorICAgICAgICBTcGxpdEVzY2FwZWRTdHJpbmcocmhzX3ZhbHVlKTsK
KyAgICBpZiAobGhzX2xpbmVzLnNpemUoKSA+IDEgfHwgcmhzX2xpbmVzLnNpemUoKSA+IDEpIHsK
KyAgICAgIG1zZyA8PCAiXG5XaXRoIGRpZmY6XG4iCisgICAgICAgICAgPDwgZWRpdF9kaXN0YW5j
ZTo6Q3JlYXRlVW5pZmllZERpZmYobGhzX2xpbmVzLCByaHNfbGluZXMpOworICAgIH0KICAgfQog
Ci0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIHJldHVybiBBc3NlcnRpb25GYWls
dXJlKCkgPDwgbXNnOwogfQogCiAvLyBDb25zdHJ1Y3RzIGEgZmFpbHVyZSBtZXNzYWdlIGZvciBC
b29sZWFuIGFzc2VydGlvbnMgc3VjaCBhcyBFWFBFQ1RfVFJVRS4KLVN0cmluZyBHZXRCb29sQXNz
ZXJ0aW9uRmFpbHVyZU1lc3NhZ2UoY29uc3QgQXNzZXJ0aW9uUmVzdWx0JiBhc3NlcnRpb25fcmVz
dWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBl
eHByZXNzaW9uX3RleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGFjdHVhbF9wcmVkaWNhdGVfdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkX3ByZWRpY2F0ZV92YWx1ZSkgewor
c3RkOjpzdHJpbmcgR2V0Qm9vbEFzc2VydGlvbkZhaWx1cmVNZXNzYWdlKAorICAgIGNvbnN0IEFz
c2VydGlvblJlc3VsdCYgYXNzZXJ0aW9uX3Jlc3VsdCwKKyAgICBjb25zdCBjaGFyKiBleHByZXNz
aW9uX3RleHQsCisgICAgY29uc3QgY2hhciogYWN0dWFsX3ByZWRpY2F0ZV92YWx1ZSwKKyAgICBj
b25zdCBjaGFyKiBleHBlY3RlZF9wcmVkaWNhdGVfdmFsdWUpIHsKICAgY29uc3QgY2hhciogYWN0
dWFsX21lc3NhZ2UgPSBhc3NlcnRpb25fcmVzdWx0Lm1lc3NhZ2UoKTsKICAgTWVzc2FnZSBtc2c7
CiAgIG1zZyA8PCAiVmFsdWUgb2Y6ICIgPDwgZXhwcmVzc2lvbl90ZXh0CkBAIC0xMDU3LDE1ICsx
NDEzLDE0IEBAIEFzc2VydGlvblJlc3VsdCBEb3VibGVOZWFyUHJlZEZvcm1hdChjb25zdCBjaGFy
KiBleHByMSwKICAgY29uc3QgZG91YmxlIGRpZmYgPSBmYWJzKHZhbDEgLSB2YWwyKTsKICAgaWYg
KGRpZmYgPD0gYWJzX2Vycm9yKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIC8vIFRP
RE8od2FuKTogZG8gbm90IHByaW50IHRoZSB2YWx1ZSBvZiBhbiBleHByZXNzaW9uIGlmIGl0J3MK
KyAgLy8gRklYTUU6IGRvIG5vdCBwcmludCB0aGUgdmFsdWUgb2YgYW4gZXhwcmVzc2lvbiBpZiBp
dCdzCiAgIC8vIGFscmVhZHkgYSBsaXRlcmFsLgotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8ICJU
aGUgZGlmZmVyZW5jZSBiZXR3ZWVuICIgPDwgZXhwcjEgPDwgIiBhbmQgIiA8PCBleHByMgorICBy
ZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCAiVGhlIGRpZmZlcmVuY2UgYmV0d2Vl
biAiIDw8IGV4cHIxIDw8ICIgYW5kICIgPDwgZXhwcjIKICAgICAgIDw8ICIgaXMgIiA8PCBkaWZm
IDw8ICIsIHdoaWNoIGV4Y2VlZHMgIiA8PCBhYnNfZXJyb3JfZXhwciA8PCAiLCB3aGVyZVxuIgog
ICAgICAgPDwgZXhwcjEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2YWwxIDw8ICIsXG4iCiAgICAg
ICA8PCBleHByMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHZhbDIgPDwgIiwgYW5kXG4iCiAgICAg
ICA8PCBhYnNfZXJyb3JfZXhwciA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IGFic19lcnJvciA8PCAi
LiI7Ci0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIApAQCAtMTA5MCwyMCAr
MTQ0NSwxOCBAQCBBc3NlcnRpb25SZXN1bHQgRmxvYXRpbmdQb2ludExFKGNvbnN0IGNoYXIqIGV4
cHIxLAogICAvLyB2YWwyIGlzIE5hTiwgYXMgdGhlIElFRUUgZmxvYXRpbmctcG9pbnQgc3RhbmRh
cmQgcmVxdWlyZXMgdGhhdAogICAvLyBhbnkgcHJlZGljYXRlIGludm9sdmluZyBhIE5hTiBtdXN0
IHJldHVybiBmYWxzZS4KIAotICBTdHJTdHJlYW0gdmFsMV9zczsKKyAgOjpzdGQ6OnN0cmluZ3N0
cmVhbSB2YWwxX3NzOwogICB2YWwxX3NzIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJp
Y19saW1pdHM8UmF3VHlwZT46OmRpZ2l0czEwICsgMikKICAgICAgICAgICA8PCB2YWwxOwogCi0g
IFN0clN0cmVhbSB2YWwyX3NzOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHZhbDJfc3M7CiAgIHZh
bDJfc3MgPDwgc3RkOjpzZXRwcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxSYXdUeXBlPjo6
ZGlnaXRzMTAgKyAyKQogICAgICAgICAgIDw8IHZhbDI7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1z
ZyA8PCAiRXhwZWN0ZWQ6ICgiIDw8IGV4cHIxIDw8ICIpIDw9ICgiIDw8IGV4cHIyIDw8ICIpXG4i
Ci0gICAgICA8PCAiICBBY3R1YWw6ICIgPDwgU3RyU3RyZWFtVG9TdHJpbmcoJnZhbDFfc3MpIDw8
ICIgdnMgIgotICAgICAgPDwgU3RyU3RyZWFtVG9TdHJpbmcoJnZhbDJfc3MpOwotCi0gIHJldHVy
biBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkKKyAg
ICAgIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgPD0gKCIgPDwgZXhwcjIgPDwgIilc
biIKKyAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBTdHJpbmdTdHJlYW1Ub1N0cmluZygmdmFsMV9z
cykgPDwgIiB2cyAiCisgICAgICA8PCBTdHJpbmdTdHJlYW1Ub1N0cmluZygmdmFsMl9zcyk7CiB9
CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbApAQCAtMTEyNiwxOCArMTQ3OSwxOCBAQCBuYW1l
c3BhY2UgaW50ZXJuYWwgewogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVY
UEVDVH1fRVEgd2l0aCBpbnQgb3IgZW51bQogLy8gYXJndW1lbnRzLgotQXNzZXJ0aW9uUmVzdWx0
IENtcEhlbHBlckVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBleHBlY3RlZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBCaWdnZXN0SW50IGFjdHVhbCkgewotICBpZiAoZXhwZWN0ZWQgPT0gYWN0
dWFsKSB7CitBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRVEoY29uc3QgY2hhciogbGhzX2V4cHJl
c3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJl
c3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBsaHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCByaHMpIHsKKyAgaWYgKGxocyA9PSBy
aHMpIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9CiAKLSAgcmV0dXJuIEVx
RmFpbHVyZShleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIGFjdHVhbF9l
eHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJl
TWVzc2FnZShleHBlY3RlZCwgYWN0dWFsKSwKLSAgICAgICAgICAgICAgICAgICBGb3JtYXRGb3JD
b21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoYWN0dWFsLCBleHBlY3RlZCksCisgIHJldHVybiBFcUZh
aWx1cmUobGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24s
CisgICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKGxo
cywgcmhzKSwKKyAgICAgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2UocmhzLCBsaHMpLAogICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKIH0KIApAQCAtMTE1
MCwxMSArMTUwMywxMCBAQCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyIyNvcF9uYW1lKGNvbnN0
IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwgXAogICBpZiAodmFsMSBvcCB2YWwyKSB7
XAogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7XAogICB9IGVsc2Uge1wKLSAgICBNZXNz
YWdlIG1zZztcCi0gICAgbXNnIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgIiAjb3Ag
IiAoIiA8PCBleHByMlwKKyAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIFwKKyAgICAgICAg
PDwgIkV4cGVjdGVkOiAoIiA8PCBleHByMSA8PCAiKSAiICNvcCAiICgiIDw8IGV4cHIyXAogICAg
ICAgICA8PCAiKSwgYWN0dWFsOiAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2Fn
ZSh2YWwxLCB2YWwyKVwKICAgICAgICAgPDwgIiB2cyAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZSh2YWwyLCB2YWwxKTtcCi0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUo
bXNnKTtcCiAgIH1cCiB9CiAKQEAgLTExNzcsMzQgKzE1MjksMzQgQEAgR1RFU1RfSU1QTF9DTVBf
SEVMUEVSXyhHVCwgPiApCiAjdW5kZWYgR1RFU1RfSU1QTF9DTVBfSEVMUEVSXwogCiAvLyBUaGUg
aGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fU1RSRVEuCi1Bc3NlcnRpb25SZXN1
bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHBlY3RlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWwpIHsKLSAgaWYg
KFN0cmluZzo6Q1N0cmluZ0VxdWFscyhleHBlY3RlZCwgYWN0dWFsKSkgeworQXNzZXJ0aW9uUmVz
dWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxocywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHMpIHsKKyAgaWYgKFN0cmluZzo6Q1N0cmlu
Z0VxdWFscyhsaHMsIHJocykpIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9
CiAKLSAgcmV0dXJuIEVxRmFpbHVyZShleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAg
ICAgICAgIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIFN0cmluZzo6U2hv
d0NTdHJpbmdRdW90ZWQoZXhwZWN0ZWQpLAotICAgICAgICAgICAgICAgICAgIFN0cmluZzo6U2hv
d0NTdHJpbmdRdW90ZWQoYWN0dWFsKSwKKyAgcmV0dXJuIEVxRmFpbHVyZShsaHNfZXhwcmVzc2lv
biwKKyAgICAgICAgICAgICAgICAgICByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAg
ICBQcmludFRvU3RyaW5nKGxocyksCisgICAgICAgICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhy
aHMpLAogICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKIH0KIAogLy8gVGhlIGhlbHBlciBmdW5j
dGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NUUkNBU0VFUS4KLUFzc2VydGlvblJlc3VsdCBDbXBI
ZWxwZXJTVFJDQVNFRVEoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWwp
IHsKLSAgaWYgKFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFscyhleHBlY3RlZCwg
YWN0dWFsKSkgeworQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VFUShjb25zdCBjaGFy
KiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogcmhzKSB7CisgIGlmIChTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZUNTdHJpbmdF
cXVhbHMobGhzLCByaHMpKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQog
Ci0gIHJldHVybiBFcUZhaWx1cmUoZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAg
ICAgICBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBTdHJpbmc6OlNob3dD
U3RyaW5nUXVvdGVkKGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAgICAgICBTdHJpbmc6OlNob3dD
U3RyaW5nUXVvdGVkKGFjdHVhbCksCisgIHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Npb24s
CisgICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAg
UHJpbnRUb1N0cmluZyhsaHMpLAorICAgICAgICAgICAgICAgICAgIFByaW50VG9TdHJpbmcocmhz
KSwKICAgICAgICAgICAgICAgICAgICB0cnVlKTsKIH0KIApAQCAtMTIxNiwxMSArMTU2OCw5IEBA
IEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJORShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9u
LAogICBpZiAoIVN0cmluZzo6Q1N0cmluZ0VxdWFscyhzMSwgczIpKSB7CiAgICAgcmV0dXJuIEFz
c2VydGlvblN1Y2Nlc3MoKTsKICAgfSBlbHNlIHsKLSAgICBNZXNzYWdlIG1zZzsKLSAgICBtc2cg
PDwgIkV4cGVjdGVkOiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgiCi0gICAgICAgIDw8
IHMyX2V4cHJlc3Npb24gPDwgIiksIGFjdHVhbDogXCIiCi0gICAgICAgIDw8IHMxIDw8ICJcIiB2
cyBcIiIgPDwgczIgPDwgIlwiIjsKLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwor
ICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgIkV4cGVjdGVkOiAoIiA8PCBzMV9leHBy
ZXNzaW9uIDw8ICIpICE9ICgiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzMl9l
eHByZXNzaW9uIDw8ICIpLCBhY3R1YWw6IFwiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgczEgPDwgIlwiIHZzIFwiIiA8PCBzMiA8PCAiXCIiOwogICB9CiB9CiAKQEAgLTEyMzIs
MTEgKzE1ODIsMTAgQEAgQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VORShjb25zdCBj
aGFyKiBzMV9leHByZXNzaW9uLAogICBpZiAoIVN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlQ1N0cmlu
Z0VxdWFscyhzMSwgczIpKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfSBl
bHNlIHsKLSAgICBNZXNzYWdlIG1zZzsKLSAgICBtc2cgPDwgIkV4cGVjdGVkOiAoIiA8PCBzMV9l
eHByZXNzaW9uIDw8ICIpICE9ICgiCisgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKQorICAg
ICAgICA8PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4cHJlc3Npb24gPDwgIikgIT0gKCIKICAgICAg
ICAgPDwgczJfZXhwcmVzc2lvbiA8PCAiKSAoaWdub3JpbmcgY2FzZSksIGFjdHVhbDogXCIiCiAg
ICAgICAgIDw8IHMxIDw8ICJcIiB2cyBcIiIgPDwgczIgPDwgIlwiIjsKLSAgICByZXR1cm4gQXNz
ZXJ0aW9uRmFpbHVyZShtc2cpOwogICB9CiB9CiAKQEAgLTEyODUsMTMgKzE2MzQsMTIgQEAgQXNz
ZXJ0aW9uUmVzdWx0IElzU3Vic3RyaW5nSW1wbCgKIAogICBjb25zdCBib29sIGlzX3dpZGVfc3Ry
aW5nID0gc2l6ZW9mKG5lZWRsZVswXSkgPiAxOwogICBjb25zdCBjaGFyKiBjb25zdCBiZWdpbl9z
dHJpbmdfcXVvdGUgPSBpc193aWRlX3N0cmluZyA/ICJMXCIiIDogIlwiIjsKLSAgcmV0dXJuIEFz
c2VydGlvbkZhaWx1cmUoCi0gICAgICBNZXNzYWdlKCkKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1
cmUoKQogICAgICAgPDwgIlZhbHVlIG9mOiAiIDw8IG5lZWRsZV9leHByIDw8ICJcbiIKICAgICAg
IDw8ICIgIEFjdHVhbDogIiA8PCBiZWdpbl9zdHJpbmdfcXVvdGUgPDwgbmVlZGxlIDw8ICJcIlxu
IgogICAgICAgPDwgIkV4cGVjdGVkOiAiIDw8IChleHBlY3RlZF90b19iZV9zdWJzdHJpbmcgPyAi
IiA6ICJub3QgIikKICAgICAgIDw8ICJhIHN1YnN0cmluZyBvZiAiIDw8IGhheXN0YWNrX2V4cHIg
PDwgIlxuIgotICAgICAgPDwgIldoaWNoIGlzOiAiIDw8IGJlZ2luX3N0cmluZ19xdW90ZSA8PCBo
YXlzdGFjayA8PCAiXCIiKTsKKyAgICAgIDw8ICJXaGljaCBpczogIiA8PCBiZWdpbl9zdHJpbmdf
cXVvdGUgPDwgaGF5c3RhY2sgPDwgIlwiIjsKIH0KIAogfSAgLy8gbmFtZXNwYWNlCkBAIC0xMzYw
LDE2ICsxNzA4LDE5IEBAIG5hbWVzcGFjZSB7CiBBc3NlcnRpb25SZXN1bHQgSFJFU1VMVEZhaWx1
cmVIZWxwZXIoY29uc3QgY2hhciogZXhwciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsb25nIGhyKSB7ICAvLyBOT0xJTlQKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01P
QklMRQorIyBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRSB8fCBHVEVTVF9PU19XSU5ET1dTX1RW
X1RJVExFCisKICAgLy8gV2luZG93cyBDRSBkb2Vzbid0IHN1cHBvcnQgRm9ybWF0TWVzc2FnZS4K
ICAgY29uc3QgY2hhciBlcnJvcl90ZXh0W10gPSAiIjsKLSNlbHNlCisKKyMgZWxzZQorCiAgIC8v
IExvb2tzIHVwIHRoZSBodW1hbi1yZWFkYWJsZSBzeXN0ZW0gbWVzc2FnZSBmb3IgdGhlIEhSRVNV
TFQgY29kZQogICAvLyBhbmQgc2luY2Ugd2UncmUgbm90IHBhc3NpbmcgYW55IHBhcmFtcyB0byBG
b3JtYXRNZXNzYWdlLCB3ZSBkb24ndAogICAvLyB3YW50IGluc2VydHMgZXhwYW5kZWQuCiAgIGNv
bnN0IERXT1JEIGtGbGFncyA9IEZPUk1BVF9NRVNTQUdFX0ZST01fU1lTVEVNIHwKICAgICAgICAg
ICAgICAgICAgICAgICAgRk9STUFUX01FU1NBR0VfSUdOT1JFX0lOU0VSVFM7Ci0gIGNvbnN0IERX
T1JEIGtCdWZTaXplID0gNDA5NjsgIC8vIFN0cmluZzo6Rm9ybWF0IGNhbid0IGV4Y2VlZCB0aGlz
IGxlbmd0aC4KKyAgY29uc3QgRFdPUkQga0J1ZlNpemUgPSA0MDk2OwogICAvLyBHZXRzIHRoZSBz
eXN0ZW0ncyBodW1hbiByZWFkYWJsZSBtZXNzYWdlIHN0cmluZyBmb3IgdGhpcyBIUkVTVUxULgog
ICBjaGFyIGVycm9yX3RleHRba0J1ZlNpemVdID0geyAnXDAnIH07CiAgIERXT1JEIG1lc3NhZ2Vf
bGVuZ3RoID0gOjpGb3JtYXRNZXNzYWdlQShrRmxhZ3MsCkBAIC0xMzc5LDE5ICsxNzMwLDE4IEBA
IEFzc2VydGlvblJlc3VsdCBIUkVTVUxURmFpbHVyZUhlbHBlcihjb25zdCBjaGFyKiBleHByLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfdGV4dCwgIC8v
IG91dHB1dCBidWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGtCdWZTaXplLCAgLy8gYnVmIHNpemUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5VTEwpOyAgLy8gbm8gYXJndW1lbnRzIGZvciBpbnNlcnRzCi0gIC8vIFRyaW1z
IHRhaWxpbmcgd2hpdGUgc3BhY2UgKEZvcm1hdE1lc3NhZ2UgbGVhdmVzIGEgdHJhaWxpbmcgY3It
bGYpCi0gIGZvciAoOyBtZXNzYWdlX2xlbmd0aCAmJiBpc3NwYWNlKGVycm9yX3RleHRbbWVzc2Fn
ZV9sZW5ndGggLSAxXSk7CisgIC8vIFRyaW1zIHRhaWxpbmcgd2hpdGUgc3BhY2UgKEZvcm1hdE1l
c3NhZ2UgbGVhdmVzIGEgdHJhaWxpbmcgQ1ItTEYpCisgIGZvciAoOyBtZXNzYWdlX2xlbmd0aCAm
JiBJc1NwYWNlKGVycm9yX3RleHRbbWVzc2FnZV9sZW5ndGggLSAxXSk7CiAgICAgICAgICAgLS1t
ZXNzYWdlX2xlbmd0aCkgewogICAgIGVycm9yX3RleHRbbWVzc2FnZV9sZW5ndGggLSAxXSA9ICdc
MCc7CiAgIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIAotICBjb25zdCBT
dHJpbmcgZXJyb3JfaGV4KFN0cmluZzo6Rm9ybWF0KCIweCUwOFggIiwgaHIpKTsKLSAgTWVzc2Fn
ZSBtc2c7Ci0gIG1zZyA8PCAiRXhwZWN0ZWQ6ICIgPDwgZXhwciA8PCAiICIgPDwgZXhwZWN0ZWQg
PDwgIi5cbiIKLSAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBlcnJvcl9oZXggPDwgZXJyb3JfdGV4
dCA8PCAiXG4iOworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIAotICByZXR1
cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIGNvbnN0IHN0ZDo6c3RyaW5n
IGVycm9yX2hleCgiMHgiICsgU3RyaW5nOjpGb3JtYXRIZXhJbnQoaHIpKTsKKyAgcmV0dXJuIDo6
dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCAiRXhwZWN0ZWQ6ICIgPDwgZXhw
ciA8PCAiICIgPDwgZXhwZWN0ZWQgPDwgIi5cbiIKKyAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBl
cnJvcl9oZXggPDwgIiAiIDw8IGVycm9yX3RleHQgPDwgIlxuIjsKIH0KIAogfSAgLy8gbmFtZXNw
YWNlCkBAIC0xNDE1LDcgKzE3NjUsNyBAQCBBc3NlcnRpb25SZXN1bHQgSXNIUkVTVUxURmFpbHVy
ZShjb25zdCBjaGFyKiBleHByLCBsb25nIGhyKSB7ICAvLyBOT0xJTlQKIC8vIFV0aWxpdHkgZnVu
Y3Rpb25zIGZvciBlbmNvZGluZyBVbmljb2RlIHRleHQgKHdpZGUgc3RyaW5ncykgaW4KIC8vIFVU
Ri04LgogCi0vLyBBIFVuaWNvZGUgY29kZS1wb2ludCBjYW4gaGF2ZSB1cHRvIDIxIGJpdHMsIGFu
ZCBpcyBlbmNvZGVkIGluIFVURi04CisvLyBBIFVuaWNvZGUgY29kZS1wb2ludCBjYW4gaGF2ZSB1
cCB0byAyMSBiaXRzLCBhbmQgaXMgZW5jb2RlZCBpbiBVVEYtOAogLy8gbGlrZSB0aGlzOgogLy8K
IC8vIENvZGUtcG9pbnQgbGVuZ3RoICAgRW5jb2RpbmcKQEAgLTE0NDgsMTIgKzE3OTgsMTUgQEAg
aW5saW5lIFVJbnQzMiBDaG9wTG93Qml0cyhVSW50MzIqIGJpdHMsIGludCBuKSB7CiAvLyBDb252
ZXJ0cyBhIFVuaWNvZGUgY29kZSBwb2ludCB0byBhIG5hcnJvdyBzdHJpbmcgaW4gVVRGLTggZW5j
b2RpbmcuCiAvLyBjb2RlX3BvaW50IHBhcmFtZXRlciBpcyBvZiB0eXBlIFVJbnQzMiBiZWNhdXNl
IHdjaGFyX3QgbWF5IG5vdCBiZQogLy8gd2lkZSBlbm91Z2ggdG8gY29udGFpbiBhIGNvZGUgcG9p
bnQuCi0vLyBUaGUgb3V0cHV0IGJ1ZmZlciBzdHIgbXVzdCBjb250YWludCBhdCBsZWFzdCAzMiBj
aGFyYWN0ZXJzLgotLy8gVGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIGFkZHJlc3Mgb2YgdGhlIG91
dHB1dCBidWZmZXIuCiAvLyBJZiB0aGUgY29kZV9wb2ludCBpcyBub3QgYSB2YWxpZCBVbmljb2Rl
IGNvZGUgcG9pbnQKLS8vIChpLmUuIG91dHNpZGUgb2YgVW5pY29kZSByYW5nZSBVKzAgdG8gVSsx
MEZGRkYpIGl0IHdpbGwgYmUgb3V0cHV0Ci0vLyBhcyAnKEludmFsaWQgVW5pY29kZSAweFhYWFhY
WFhYKScuCi1jaGFyKiBDb2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQsIGNoYXIqIHN0
cikgeworLy8gKGkuZS4gb3V0c2lkZSBvZiBVbmljb2RlIHJhbmdlIFUrMCB0byBVKzEwRkZGRikg
aXQgd2lsbCBiZSBjb252ZXJ0ZWQKKy8vIHRvICIoSW52YWxpZCBVbmljb2RlIDB4WFhYWFhYWFgp
Ii4KK3N0ZDo6c3RyaW5nIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9wb2ludCkgeworICBp
ZiAoY29kZV9wb2ludCA+IGtNYXhDb2RlUG9pbnQ0KSB7CisgICAgcmV0dXJuICIoSW52YWxpZCBV
bmljb2RlIDB4IiArIFN0cmluZzo6Rm9ybWF0SGV4SW50KGNvZGVfcG9pbnQpICsgIikiOworICB9
CisKKyAgY2hhciBzdHJbNV07ICAvLyBCaWcgZW5vdWdoIGZvciB0aGUgbGFyZ2VzdCB2YWxpZCBj
b2RlIHBvaW50LgogICBpZiAoY29kZV9wb2ludCA8PSBrTWF4Q29kZVBvaW50MSkgewogICAgIHN0
clsxXSA9ICdcMCc7CiAgICAgc3RyWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oY29kZV9wb2ludCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAweHh4eHh4eApAQCAtMTQ2NiwyNyArMTgxOSwx
NyBAQCBjaGFyKiBDb2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQsIGNoYXIqIHN0cikg
ewogICAgIHN0clsyXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgfCBDaG9wTG93Qml0cygmY29k
ZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKICAgICBzdHJbMV0gPSBzdGF0aWNfY2FzdDxjaGFy
PigweDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVfcG9pbnQsIDYpKTsgIC8vIDEweHh4eHh4CiAgICAg
c3RyWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHhFMCB8IGNvZGVfcG9pbnQpOyAgICAgICAgICAg
ICAgICAgICAvLyAxMTEweHh4eAotICB9IGVsc2UgaWYgKGNvZGVfcG9pbnQgPD0ga01heENvZGVQ
b2ludDQpIHsKKyAgfSBlbHNlIHsgIC8vIGNvZGVfcG9pbnQgPD0ga01heENvZGVQb2ludDQKICAg
ICBzdHJbNF0gPSAnXDAnOwogICAgIHN0clszXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgfCBD
aG9wTG93Qml0cygmY29kZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKICAgICBzdHJbMl0gPSBz
dGF0aWNfY2FzdDxjaGFyPigweDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVfcG9pbnQsIDYpKTsgIC8v
IDEweHh4eHh4CiAgICAgc3RyWzFdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHg4MCB8IENob3BMb3dC
aXRzKCZjb2RlX3BvaW50LCA2KSk7ICAvLyAxMHh4eHh4eAogICAgIHN0clswXSA9IHN0YXRpY19j
YXN0PGNoYXI+KDB4RjAgfCBjb2RlX3BvaW50KTsgICAgICAgICAgICAgICAgICAgLy8gMTExMTB4
eHgKLSAgfSBlbHNlIHsKLSAgICAvLyBUaGUgbG9uZ2VzdCBzdHJpbmcgU3RyaW5nOjpGb3JtYXQg
Y2FuIHByb2R1Y2Ugd2hlbiBpbnZva2VkCi0gICAgLy8gd2l0aCB0aGVzZSBwYXJhbWV0ZXJzIGlz
IDI4IGNoYXJhY3RlciBsb25nIChub3QgaW5jbHVkaW5nCi0gICAgLy8gdGhlIHRlcm1pbmF0aW5n
IG51bCBjaGFyYWN0ZXIpLiBXZSBhcmUgYXNraW5nIGZvciAzMiBjaGFyYWN0ZXIKLSAgICAvLyBi
dWZmZXIganVzdCBpbiBjYXNlLiBUaGlzIGlzIGFsc28gZW5vdWdoIGZvciBzdHJuY3B5IHRvCi0g
ICAgLy8gbnVsbC10ZXJtaW5hdGUgdGhlIGRlc3RpbmF0aW9uIHN0cmluZy4KLSAgICBwb3NpeDo6
U3RyTkNweSgKLSAgICAgICAgc3RyLCBTdHJpbmc6OkZvcm1hdCgiKEludmFsaWQgVW5pY29kZSAw
eCVYKSIsIGNvZGVfcG9pbnQpLmNfc3RyKCksIDMyKTsKLSAgICBzdHJbMzFdID0gJ1wwJzsgIC8v
IE1ha2VzIHN1cmUgbm8gY2hhbmdlIGluIHRoZSBmb3JtYXQgdG8gc3RybmNweSBsZWF2ZXMKLSAg
ICAgICAgICAgICAgICAgICAgIC8vIHRoZSByZXN1bHQgdW50ZXJtaW5hdGVkLgogICB9CiAgIHJl
dHVybiBzdHI7CiB9CiAKLS8vIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBvbmx5IG1ha2Ug
c2Vuc2UgaWYgdGhlIHRoZSBzeXN0ZW0KKy8vIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBv
bmx5IG1ha2Ugc2Vuc2UgaWYgdGhlIHN5c3RlbQogLy8gdXNlcyBVVEYtMTYgZm9yIHdpZGUgc3Ry
aW5nIGVuY29kaW5nLiBBbGwgc3VwcG9ydGVkIHN5c3RlbXMKIC8vIHdpdGggMTYgYml0IHdjaGFy
X3QgKFdpbmRvd3MsIEN5Z3dpbiwgU3ltYmlhbiBPUykgZG8gdXNlIFVURi0xNi4KIApAQCAtMTUy
MiwxMSArMTg2NSwxMSBAQCBpbmxpbmUgVUludDMyIENyZWF0ZUNvZGVQb2ludEZyb21VdGYxNlN1
cnJvZ2F0ZVBhaXIod2NoYXJfdCBmaXJzdCwKIC8vIGFzICcoSW52YWxpZCBVbmljb2RlIDB4WFhY
WFhYWFgpJy4gSWYgdGhlIHN0cmluZyBpcyBpbiBVVEYxNiBlbmNvZGluZwogLy8gYW5kIGNvbnRh
aW5zIGludmFsaWQgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycywgdmFsdWVzIGluIHRob3NlIHBhaXJz
CiAvLyB3aWxsIGJlIGVuY29kZWQgYXMgaW5kaXZpZHVhbCBVbmljb2RlIGNoYXJhY3RlcnMgZnJv
bSBCYXNpYyBOb3JtYWwgUGxhbmUuCi1TdHJpbmcgV2lkZVN0cmluZ1RvVXRmOChjb25zdCB3Y2hh
cl90KiBzdHIsIGludCBudW1fY2hhcnMpIHsKK3N0ZDo6c3RyaW5nIFdpZGVTdHJpbmdUb1V0Zjgo
Y29uc3Qgd2NoYXJfdCogc3RyLCBpbnQgbnVtX2NoYXJzKSB7CiAgIGlmIChudW1fY2hhcnMgPT0g
LTEpCiAgICAgbnVtX2NoYXJzID0gc3RhdGljX2Nhc3Q8aW50Pih3Y3NsZW4oc3RyKSk7CiAKLSAg
U3RyU3RyZWFtIHN0cmVhbTsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07CiAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbnVtX2NoYXJzOyArK2kpIHsKICAgICBVSW50MzIgdW5pY29kZV9jb2Rl
X3BvaW50OwogCkBAIC0xNTQwLDI3ICsxODgzLDE3IEBAIFN0cmluZyBXaWRlU3RyaW5nVG9VdGY4
KGNvbnN0IHdjaGFyX3QqIHN0ciwgaW50IG51bV9jaGFycykgewogICAgICAgdW5pY29kZV9jb2Rl
X3BvaW50ID0gc3RhdGljX2Nhc3Q8VUludDMyPihzdHJbaV0pOwogICAgIH0KIAotICAgIGNoYXIg
YnVmZmVyWzMyXTsgIC8vIENvZGVQb2ludFRvVXRmOCByZXF1aXJlcyBhIGJ1ZmZlciB0aGlzIGJp
Zy4KLSAgICBzdHJlYW0gPDwgQ29kZVBvaW50VG9VdGY4KHVuaWNvZGVfY29kZV9wb2ludCwgYnVm
ZmVyKTsKKyAgICBzdHJlYW0gPDwgQ29kZVBvaW50VG9VdGY4KHVuaWNvZGVfY29kZV9wb2ludCk7
CiAgIH0KLSAgcmV0dXJuIFN0clN0cmVhbVRvU3RyaW5nKCZzdHJlYW0pOworICByZXR1cm4gU3Ry
aW5nU3RyZWFtVG9TdHJpbmcoJnN0cmVhbSk7CiB9CiAKLS8vIENvbnZlcnRzIGEgd2lkZSBDIHN0
cmluZyB0byBhIFN0cmluZyB1c2luZyB0aGUgVVRGLTggZW5jb2RpbmcuCisvLyBDb252ZXJ0cyBh
IHdpZGUgQyBzdHJpbmcgdG8gYW4gc3RkOjpzdHJpbmcgdXNpbmcgdGhlIFVURi04IGVuY29kaW5n
LgogLy8gTlVMTCB3aWxsIGJlIGNvbnZlcnRlZCB0byAiKG51bGwpIi4KLVN0cmluZyBTdHJpbmc6
OlNob3dXaWRlQ1N0cmluZyhjb25zdCB3Y2hhcl90ICogd2lkZV9jX3N0cikgewotICBpZiAod2lk
ZV9jX3N0ciA9PSBOVUxMKSByZXR1cm4gU3RyaW5nKCIobnVsbCkiKTsKLQotICByZXR1cm4gU3Ry
aW5nKGludGVybmFsOjpXaWRlU3RyaW5nVG9VdGY4KHdpZGVfY19zdHIsIC0xKS5jX3N0cigpKTsK
LX0KLQotLy8gU2ltaWxhciB0byBTaG93V2lkZUNTdHJpbmcoKSwgZXhjZXB0IHRoYXQgdGhpcyBm
dW5jdGlvbiBlbmNsb3NlcwotLy8gdGhlIGNvbnZlcnRlZCBzdHJpbmcgaW4gZG91YmxlIHF1b3Rl
cy4KLVN0cmluZyBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChjb25zdCB3Y2hhcl90KiB3
aWRlX2Nfc3RyKSB7Ci0gIGlmICh3aWRlX2Nfc3RyID09IE5VTEwpIHJldHVybiBTdHJpbmcoIihu
dWxsKSIpOworc3RkOjpzdHJpbmcgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmcoY29uc3Qgd2NoYXJf
dCAqIHdpZGVfY19zdHIpIHsKKyAgaWYgKHdpZGVfY19zdHIgPT0gTlVMTCkgIHJldHVybiAiKG51
bGwpIjsKIAotICByZXR1cm4gU3RyaW5nOjpGb3JtYXQoIkxcIiVzXCIiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmcod2lkZV9jX3N0cikuY19zdHIoKSk7
CisgIHJldHVybiBpbnRlcm5hbDo6V2lkZVN0cmluZ1RvVXRmOCh3aWRlX2Nfc3RyLCAtMSk7CiB9
CiAKIC8vIENvbXBhcmVzIHR3byB3aWRlIEMgc3RyaW5ncy4gIFJldHVybnMgdHJ1ZSBpZmYgdGhl
eSBoYXZlIHRoZSBzYW1lCkBAIC0xNTc4LDE4ICsxOTExLDE4IEBAIGJvb2wgU3RyaW5nOjpXaWRl
Q1N0cmluZ0VxdWFscyhjb25zdCB3Y2hhcl90ICogbGhzLCBjb25zdCB3Y2hhcl90ICogcmhzKSB7
CiB9CiAKIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgKl9TVFJFUSBvbiB3aWRlIHN0cmluZ3MuCi1B
c3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVz
c2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxf
ZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90
KiBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90
KiBhY3R1YWwpIHsKLSAgaWYgKFN0cmluZzo6V2lkZUNTdHJpbmdFcXVhbHMoZXhwZWN0ZWQsIGFj
dHVhbCkpIHsKK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJFUShjb25zdCBjaGFyKiBsaHNf
ZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBy
aHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hh
cl90KiBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCog
cmhzKSB7CisgIGlmIChTdHJpbmc6OldpZGVDU3RyaW5nRXF1YWxzKGxocywgcmhzKSkgewogICAg
IHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAgIH0KIAotICByZXR1cm4gRXFGYWlsdXJlKGV4
cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgYWN0dWFsX2V4cHJlc3Npb24s
Ci0gICAgICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoZXhwZWN0
ZWQpLAotICAgICAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVvdGVkKGFj
dHVhbCksCisgIHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAg
ICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhs
aHMpLAorICAgICAgICAgICAgICAgICAgIFByaW50VG9TdHJpbmcocmhzKSwKICAgICAgICAgICAg
ICAgICAgICBmYWxzZSk7CiB9CiAKQEAgLTE2MDIsMTIgKzE5MzUsMTAgQEAgQXNzZXJ0aW9uUmVz
dWx0IENtcEhlbHBlclNUUk5FKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24sCiAgICAgcmV0dXJu
IEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQogCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgIkV4
cGVjdGVkOiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgiCi0gICAgICA8PCBzMl9leHBy
ZXNzaW9uIDw8ICIpLCBhY3R1YWw6ICIKLSAgICAgIDw8IFN0cmluZzo6U2hvd1dpZGVDU3RyaW5n
UXVvdGVkKHMxKQotICAgICAgPDwgIiB2cyAiIDw8IFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVv
dGVkKHMyKTsKLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgcmV0dXJuIEFzc2Vy
dGlvbkZhaWx1cmUoKSA8PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4cHJlc3Npb24gPDwgIikgIT0g
KCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzMl9leHByZXNzaW9uIDw8ICIpLCBh
Y3R1YWw6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBQcmludFRvU3RyaW5nKHMx
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgdnMgIiA8PCBQcmludFRvU3RyaW5n
KHMyKTsKIH0KIAogLy8gQ29tcGFyZXMgdHdvIEMgc3RyaW5ncywgaWdub3JpbmcgY2FzZS4gIFJl
dHVybnMgdHJ1ZSBpZmYgdGhleSBoYXZlCkBAIC0xNjM4LDE3ICsxOTY5LDE3IEBAIGJvb2wgU3Ry
aW5nOjpDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGNvbnN0IGNoYXIgKiBsaHMsIGNvbnN0
IGNoYXIgKiByaHMpIHsKICAgLy8gY3VycmVudCBsb2NhbGUuCiBib29sIFN0cmluZzo6Q2FzZUlu
c2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMoY29uc3Qgd2NoYXJfdCogbGhzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIHJocykg
ewotICBpZiAoIGxocyA9PSBOVUxMICkgcmV0dXJuIHJocyA9PSBOVUxMOworICBpZiAobGhzID09
IE5VTEwpIHJldHVybiByaHMgPT0gTlVMTDsKIAotICBpZiAoIHJocyA9PSBOVUxMICkgcmV0dXJu
IGZhbHNlOworICBpZiAocmhzID09IE5VTEwpIHJldHVybiBmYWxzZTsKIAogI2lmIEdURVNUX09T
X1dJTkRPV1MKICAgcmV0dXJuIF93Y3NpY21wKGxocywgcmhzKSA9PSAwOwotI2VsaWYgR1RFU1Rf
T1NfTElOVVgKKyNlbGlmIEdURVNUX09TX0xJTlVYICYmICFHVEVTVF9PU19MSU5VWF9BTkRST0lE
CiAgIHJldHVybiB3Y3NjYXNlY21wKGxocywgcmhzKSA9PSAwOwogI2Vsc2UKLSAgLy8gTWFjIE9T
IFggYW5kIEN5Z3dpbiBkb24ndCBkZWZpbmUgd2NzY2FzZWNtcC4gIE90aGVyIHVua25vd24gT1Nl
cwotICAvLyBtYXkgbm90IGRlZmluZSBpdCBlaXRoZXIuCisgIC8vIEFuZHJvaWQsIE1hYyBPUyBY
IGFuZCBDeWd3aW4gZG9uJ3QgZGVmaW5lIHdjc2Nhc2VjbXAuCisgIC8vIE90aGVyIHVua25vd24g
T1NlcyBtYXkgbm90IGRlZmluZSBpdCBlaXRoZXIuCiAgIHdpbnRfdCBsZWZ0LCByaWdodDsKICAg
ZG8gewogICAgIGxlZnQgPSB0b3dsb3dlcigqbGhzKyspOwpAQCAtMTY1OCwxMzMgKzE5ODksNjkg
QEAgYm9vbCBTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZVdpZGVDU3RyaW5nRXF1YWxzKGNvbnN0IHdj
aGFyX3QqIGxocywKICNlbmRpZiAgLy8gT1Mgc2VsZWN0b3IKIH0KIAotLy8gQ29tcGFyZXMgdGhp
cyB3aXRoIGFub3RoZXIgU3RyaW5nLgotLy8gUmV0dXJucyA8IDAgaWYgdGhpcyBpcyBsZXNzIHRo
YW4gcmhzLCAwIGlmIHRoaXMgaXMgZXF1YWwgdG8gcmhzLCBvciA+IDAKLS8vIGlmIHRoaXMgaXMg
Z3JlYXRlciB0aGFuIHJocy4KLWludCBTdHJpbmc6OkNvbXBhcmUoY29uc3QgU3RyaW5nICYgcmhz
KSBjb25zdCB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IGxoc19jX3N0ciA9IGNfc3RyKCk7Ci0gIGNv
bnN0IGNoYXIqIGNvbnN0IHJoc19jX3N0ciA9IHJocy5jX3N0cigpOwotCi0gIGlmIChsaHNfY19z
dHIgPT0gTlVMTCkgewotICAgIHJldHVybiByaHNfY19zdHIgPT0gTlVMTCA/IDAgOiAtMTsgIC8v
IE5VTEwgPCBhbnl0aGluZyBleGNlcHQgTlVMTAotICB9IGVsc2UgaWYgKHJoc19jX3N0ciA9PSBO
VUxMKSB7Ci0gICAgcmV0dXJuIDE7Ci0gIH0KLQotICBjb25zdCBzaXplX3Qgc2hvcnRlcl9zdHJf
bGVuID0KLSAgICAgIGxlbmd0aCgpIDw9IHJocy5sZW5ndGgoKSA/IGxlbmd0aCgpIDogcmhzLmxl
bmd0aCgpOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBzaG9ydGVyX3N0cl9sZW47IGkrKykg
ewotICAgIGlmIChsaHNfY19zdHJbaV0gPCByaHNfY19zdHJbaV0pIHsKLSAgICAgIHJldHVybiAt
MTsKLSAgICB9IGVsc2UgaWYgKGxoc19jX3N0cltpXSA+IHJoc19jX3N0cltpXSkgewotICAgICAg
cmV0dXJuIDE7Ci0gICAgfQotICB9Ci0gIHJldHVybiAobGVuZ3RoKCkgPCByaHMubGVuZ3RoKCkp
ID8gLTEgOgotICAgICAgKGxlbmd0aCgpID4gcmhzLmxlbmd0aCgpKSA/IDEgOiAwOworLy8gUmV0
dXJucyB0cnVlIGlmZiBzdHIgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXgsIGlnbm9yaW5nIGNh
c2UuCisvLyBBbnkgc3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGggYW4gZW1wdHkgc3Vm
Zml4LgorYm9vbCBTdHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKAorICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBzdHIsIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdWZmaXgpIHsKKyAgY29uc3Qgc2l6
ZV90IHN0cl9sZW4gPSBzdHIubGVuZ3RoKCk7CisgIGNvbnN0IHNpemVfdCBzdWZmaXhfbGVuID0g
c3VmZml4Lmxlbmd0aCgpOworICByZXR1cm4gKHN0cl9sZW4gPj0gc3VmZml4X2xlbikgJiYKKyAg
ICAgICAgIENhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMoc3RyLmNfc3RyKCkgKyBzdHJfbGVu
IC0gc3VmZml4X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vm
Zml4LmNfc3RyKCkpOwogfQogCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgU3RyaW5nIGVuZHMg
d2l0aCB0aGUgZ2l2ZW4gc3VmZml4LiAgKkFueSoKLS8vIFN0cmluZyBpcyBjb25zaWRlcmVkIHRv
IGVuZCB3aXRoIGEgTlVMTCBvciBlbXB0eSBzdWZmaXguCi1ib29sIFN0cmluZzo6RW5kc1dpdGgo
Y29uc3QgY2hhciogc3VmZml4KSBjb25zdCB7Ci0gIGlmIChzdWZmaXggPT0gTlVMTCB8fCBDU3Ry
aW5nRXF1YWxzKHN1ZmZpeCwgIiIpKSByZXR1cm4gdHJ1ZTsKLQotICBpZiAoY19zdHIoKSA9PSBO
VUxMKSByZXR1cm4gZmFsc2U7Ci0KLSAgY29uc3Qgc2l6ZV90IHRoaXNfbGVuID0gc3RybGVuKGNf
c3RyKCkpOwotICBjb25zdCBzaXplX3Qgc3VmZml4X2xlbiA9IHN0cmxlbihzdWZmaXgpOwotICBy
ZXR1cm4gKHRoaXNfbGVuID49IHN1ZmZpeF9sZW4pICYmCi0gICAgICAgICBDU3RyaW5nRXF1YWxz
KGNfc3RyKCkgKyB0aGlzX2xlbiAtIHN1ZmZpeF9sZW4sIHN1ZmZpeCk7CisvLyBGb3JtYXRzIGFu
IGludCB2YWx1ZSBhcyAiJTAyZCIuCitzdGQ6OnN0cmluZyBTdHJpbmc6OkZvcm1hdEludFdpZHRo
MihpbnQgdmFsdWUpIHsKKyAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIHNzIDw8IHN0ZDo6c2V0
ZmlsbCgnMCcpIDw8IHN0ZDo6c2V0dygyKSA8PCB2YWx1ZTsKKyAgcmV0dXJuIHNzLnN0cigpOwog
fQogCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgU3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4g
c3VmZml4LCBpZ25vcmluZyBjYXNlLgotLy8gQW55IFN0cmluZyBpcyBjb25zaWRlcmVkIHRvIGVu
ZCB3aXRoIGEgTlVMTCBvciBlbXB0eSBzdWZmaXguCi1ib29sIFN0cmluZzo6RW5kc1dpdGhDYXNl
SW5zZW5zaXRpdmUoY29uc3QgY2hhciogc3VmZml4KSBjb25zdCB7Ci0gIGlmIChzdWZmaXggPT0g
TlVMTCB8fCBDU3RyaW5nRXF1YWxzKHN1ZmZpeCwgIiIpKSByZXR1cm4gdHJ1ZTsKLQotICBpZiAo
Y19zdHIoKSA9PSBOVUxMKSByZXR1cm4gZmFsc2U7Ci0KLSAgY29uc3Qgc2l6ZV90IHRoaXNfbGVu
ID0gc3RybGVuKGNfc3RyKCkpOwotICBjb25zdCBzaXplX3Qgc3VmZml4X2xlbiA9IHN0cmxlbihz
dWZmaXgpOwotICByZXR1cm4gKHRoaXNfbGVuID49IHN1ZmZpeF9sZW4pICYmCi0gICAgICAgICBD
YXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGNfc3RyKCkgKyB0aGlzX2xlbiAtIHN1ZmZpeF9s
ZW4sIHN1ZmZpeCk7CisvLyBGb3JtYXRzIGFuIGludCB2YWx1ZSBhcyAiJVgiLgorc3RkOjpzdHJp
bmcgU3RyaW5nOjpGb3JtYXRIZXhJbnQoaW50IHZhbHVlKSB7CisgIHN0ZDo6c3RyaW5nc3RyZWFt
IHNzOworICBzcyA8PCBzdGQ6OmhleCA8PCBzdGQ6OnVwcGVyY2FzZSA8PCB2YWx1ZTsKKyAgcmV0
dXJuIHNzLnN0cigpOwogfQogCi0vLyBGb3JtYXRzIGEgbGlzdCBvZiBhcmd1bWVudHMgdG8gYSBT
dHJpbmcsIHVzaW5nIHRoZSBzYW1lIGZvcm1hdAotLy8gc3BlYyBzdHJpbmcgYXMgZm9yIHByaW50
Zi4KLS8vCi0vLyBXZSBkbyBub3QgdXNlIHRoZSBTdHJpbmdQcmludGYgY2xhc3MgYXMgaXQgaXMg
bm90IHVuaXZlcnNhbGx5Ci0vLyBhdmFpbGFibGUuCi0vLwotLy8gVGhlIHJlc3VsdCBpcyBsaW1p
dGVkIHRvIDQwOTYgY2hhcmFjdGVycyAoaW5jbHVkaW5nIHRoZSB0YWlsaW5nIDApLgotLy8gSWYg
NDA5NiBjaGFyYWN0ZXJzIGFyZSBub3QgZW5vdWdoIHRvIGZvcm1hdCB0aGUgaW5wdXQsIG9yIGlm
Ci0vLyB0aGVyZSdzIGFuIGVycm9yLCAiPGZvcm1hdHRpbmcgZXJyb3Igb3IgYnVmZmVyIGV4Y2Vl
ZGVkPiIgaXMKLS8vIHJldHVybmVkLgotU3RyaW5nIFN0cmluZzo6Rm9ybWF0KGNvbnN0IGNoYXIg
KiBmb3JtYXQsIC4uLikgewotICB2YV9saXN0IGFyZ3M7Ci0gIHZhX3N0YXJ0KGFyZ3MsIGZvcm1h
dCk7Ci0KLSAgY2hhciBidWZmZXJbNDA5Nl07Ci0gIGNvbnN0IGludCBrQnVmZmVyU2l6ZSA9IHNp
emVvZihidWZmZXIpL3NpemVvZihidWZmZXJbMF0pOwotCi0gIC8vIE1TVkMgOCBkZXByZWNhdGVz
IHZzbnByaW50ZigpLCBzbyB3ZSB3YW50IHRvIHN1cHByZXNzIHdhcm5pbmcKLSAgLy8gNDk5NiAo
ZGVwcmVjYXRlZCBmdW5jdGlvbikgdGhlcmUuCi0jaWZkZWYgX01TQ19WRVIgIC8vIFdlIGFyZSB1
c2luZyBNU1ZDLgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpICAgICAgICAgIC8vIFNhdmVzIHRoZSBj
dXJyZW50IHdhcm5pbmcgc3RhdGUuCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0OTk2KSAgLy8g
VGVtcG9yYXJpbHkgZGlzYWJsZXMgd2FybmluZyA0OTk2LgotICBjb25zdCBpbnQgc2l6ZSA9IHZz
bnByaW50ZihidWZmZXIsIGtCdWZmZXJTaXplLCBmb3JtYXQsIGFyZ3MpOwotI3ByYWdtYSB3YXJu
aW5nKHBvcCkgICAgICAgICAgIC8vIFJlc3RvcmVzIHRoZSB3YXJuaW5nIHN0YXRlLgotI2Vsc2Ug
IC8vIFdlIGFyZSBub3QgdXNpbmcgTVNWQy4KLSAgY29uc3QgaW50IHNpemUgPSB2c25wcmludGYo
YnVmZmVyLCBrQnVmZmVyU2l6ZSwgZm9ybWF0LCBhcmdzKTsKLSNlbmRpZiAgLy8gX01TQ19WRVIK
LSAgdmFfZW5kKGFyZ3MpOwotCi0gIC8vIHZzbnByaW50ZigpJ3MgYmVoYXZpb3IgaXMgbm90IHBv
cnRhYmxlLiAgV2hlbiB0aGUgYnVmZmVyIGlzIG5vdAotICAvLyBiaWcgZW5vdWdoLCBpdCByZXR1
cm5zIGEgbmVnYXRpdmUgdmFsdWUgaW4gTVNWQywgYW5kIHJldHVybnMgdGhlCi0gIC8vIG5lZWRl
ZCBidWZmZXIgc2l6ZSBvbiBMaW51eC4gIFdoZW4gdGhlcmUgaXMgYW4gb3V0cHV0IGVycm9yLCBp
dAotICAvLyBhbHdheXMgcmV0dXJucyBhIG5lZ2F0aXZlIHZhbHVlLiAgRm9yIHNpbXBsaWNpdHks
IHdlIGx1bXAgdGhlIHR3bwotICAvLyBlcnJvciBjYXNlcyB0b2dldGhlci4KLSAgaWYgKHNpemUg
PCAwIHx8IHNpemUgPj0ga0J1ZmZlclNpemUpIHsKLSAgICByZXR1cm4gU3RyaW5nKCI8Zm9ybWF0
dGluZyBlcnJvciBvciBidWZmZXIgZXhjZWVkZWQ+Iik7Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJu
IFN0cmluZyhidWZmZXIsIHNpemUpOwotICB9CisvLyBGb3JtYXRzIGEgYnl0ZSBhcyAiJTAyWCIu
CitzdGQ6OnN0cmluZyBTdHJpbmc6OkZvcm1hdEJ5dGUodW5zaWduZWQgY2hhciB2YWx1ZSkgewor
ICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgc3MgPDwgc3RkOjpzZXRmaWxsKCcwJykgPDwgc3Rk
OjpzZXR3KDIpIDw8IHN0ZDo6aGV4IDw8IHN0ZDo6dXBwZXJjYXNlCisgICAgIDw8IHN0YXRpY19j
YXN0PHVuc2lnbmVkIGludD4odmFsdWUpOworICByZXR1cm4gc3Muc3RyKCk7CiB9CiAKLS8vIENv
bnZlcnRzIHRoZSBidWZmZXIgaW4gYSBTdHJTdHJlYW0gdG8gYSBTdHJpbmcsIGNvbnZlcnRpbmcg
TlVMCisvLyBDb252ZXJ0cyB0aGUgYnVmZmVyIGluIGEgc3RyaW5nc3RyZWFtIHRvIGFuIHN0ZDo6
c3RyaW5nLCBjb252ZXJ0aW5nIE5VTAogLy8gYnl0ZXMgdG8gIlxcMCIgYWxvbmcgdGhlIHdheS4K
LVN0cmluZyBTdHJTdHJlYW1Ub1N0cmluZyhTdHJTdHJlYW0qIHNzKSB7CitzdGQ6OnN0cmluZyBT
dHJpbmdTdHJlYW1Ub1N0cmluZyg6OnN0ZDo6c3RyaW5nc3RyZWFtKiBzcykgewogICBjb25zdCA6
OnN0ZDo6c3RyaW5nJiBzdHIgPSBzcy0+c3RyKCk7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IHN0YXJ0
ID0gc3RyLmNfc3RyKCk7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGVuZCA9IHN0YXJ0ICsgc3RyLmxl
bmd0aCgpOwogCi0gIC8vIFdlIG5lZWQgdG8gdXNlIGEgaGVscGVyIFN0clN0cmVhbSB0byBkbyB0
aGlzIHRyYW5zZm9ybWF0aW9uCi0gIC8vIGJlY2F1c2UgU3RyaW5nIGRvZXNuJ3Qgc3VwcG9ydCBw
dXNoX2JhY2soKS4KLSAgU3RyU3RyZWFtIGhlbHBlcjsKKyAgc3RkOjpzdHJpbmcgcmVzdWx0Owor
ICByZXN1bHQucmVzZXJ2ZSgyICogKGVuZCAtIHN0YXJ0KSk7CiAgIGZvciAoY29uc3QgY2hhciog
Y2ggPSBzdGFydDsgY2ggIT0gZW5kOyArK2NoKSB7CiAgICAgaWYgKCpjaCA9PSAnXDAnKSB7Ci0g
ICAgICBoZWxwZXIgPDwgIlxcMCI7ICAvLyBSZXBsYWNlcyBOVUwgd2l0aCAiXFwwIjsKKyAgICAg
IHJlc3VsdCArPSAiXFwwIjsgIC8vIFJlcGxhY2VzIE5VTCB3aXRoICJcXDAiOwogICAgIH0gZWxz
ZSB7Ci0gICAgICBoZWxwZXIucHV0KCpjaCk7CisgICAgICByZXN1bHQgKz0gKmNoOwogICAgIH0K
ICAgfQogCi0gIHJldHVybiBTdHJpbmcoaGVscGVyLnN0cigpLmNfc3RyKCkpOworICByZXR1cm4g
cmVzdWx0OwogfQogCiAvLyBBcHBlbmRzIHRoZSB1c2VyLXN1cHBsaWVkIG1lc3NhZ2UgdG8gdGhl
IEdvb2dsZS1UZXN0LWdlbmVyYXRlZCBtZXNzYWdlLgotU3RyaW5nIEFwcGVuZFVzZXJNZXNzYWdl
KGNvbnN0IFN0cmluZyYgZ3Rlc3RfbXNnLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IE1lc3NhZ2UmIHVzZXJfbXNnKSB7CitzdGQ6OnN0cmluZyBBcHBlbmRVc2VyTWVzc2FnZShjb25z
dCBzdGQ6OnN0cmluZyYgZ3Rlc3RfbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgTWVzc2FnZSYgdXNlcl9tc2cpIHsKICAgLy8gQXBwZW5kcyB0aGUgdXNlciBtZXNzYWdl
IGlmIGl0J3Mgbm9uLWVtcHR5LgotICBjb25zdCBTdHJpbmcgdXNlcl9tc2dfc3RyaW5nID0gdXNl
cl9tc2cuR2V0U3RyaW5nKCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHVzZXJfbXNnX3N0cmluZyA9
IHVzZXJfbXNnLkdldFN0cmluZygpOwogICBpZiAodXNlcl9tc2dfc3RyaW5nLmVtcHR5KCkpIHsK
ICAgICByZXR1cm4gZ3Rlc3RfbXNnOwogICB9CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBn
dGVzdF9tc2cgPDwgIlxuIiA8PCB1c2VyX21zZ19zdHJpbmc7Ci0KLSAgcmV0dXJuIG1zZy5HZXRT
dHJpbmcoKTsKKyAgcmV0dXJuIGd0ZXN0X21zZyArICJcbiIgKyB1c2VyX21zZ19zdHJpbmc7CiB9
CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbApAQCAtMTgzMiw4ICsyMDk5LDkgQEAgdm9pZCBU
ZXN0UmVzdWx0OjpBZGRUZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9w
YXJ0X3Jlc3VsdCkgewogLy8gQWRkcyBhIHRlc3QgcHJvcGVydHkgdG8gdGhlIGxpc3QuIElmIGEg
cHJvcGVydHkgd2l0aCB0aGUgc2FtZSBrZXkgYXMgdGhlCiAvLyBzdXBwbGllZCBwcm9wZXJ0eSBp
cyBhbHJlYWR5IHJlcHJlc2VudGVkLCB0aGUgdmFsdWUgb2YgdGhpcyB0ZXN0X3Byb3BlcnR5CiAv
LyByZXBsYWNlcyB0aGUgb2xkIHZhbHVlIGZvciB0aGF0IGtleS4KLXZvaWQgVGVzdFJlc3VsdDo6
UmVjb3JkUHJvcGVydHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5KSB7Ci0gIGlm
ICghVmFsaWRhdGVUZXN0UHJvcGVydHkodGVzdF9wcm9wZXJ0eSkpIHsKK3ZvaWQgVGVzdFJlc3Vs
dDo6UmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVy
dHkpIHsKKyAgaWYgKCFWYWxpZGF0ZVRlc3RQcm9wZXJ0eSh4bWxfZWxlbWVudCwgdGVzdF9wcm9w
ZXJ0eSkpIHsKICAgICByZXR1cm47CiAgIH0KICAgaW50ZXJuYWw6Ok11dGV4TG9jayBsb2NrKCZ0
ZXN0X3Byb3Blcml0ZXNfbXV0ZXhfKTsKQEAgLTE4NDcsMjEgKzIxMTUsOTAgQEAgdm9pZCBUZXN0
UmVzdWx0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkp
IHsKICAgcHJvcGVydHlfd2l0aF9tYXRjaGluZ19rZXktPlNldFZhbHVlKHRlc3RfcHJvcGVydHku
dmFsdWUoKSk7CiB9CiAKLS8vIEFkZHMgYSBmYWlsdXJlIGlmIHRoZSBrZXkgaXMgYSByZXNlcnZl
ZCBhdHRyaWJ1dGUgb2YgR29vZ2xlIFRlc3QKLS8vIHRlc3RjYXNlIHRhZ3MuICBSZXR1cm5zIHRy
dWUgaWYgdGhlIHByb3BlcnR5IGlzIHZhbGlkLgotYm9vbCBUZXN0UmVzdWx0OjpWYWxpZGF0ZVRl
c3RQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpIHsKLSAgaW50ZXJu
YWw6OlN0cmluZyBrZXkodGVzdF9wcm9wZXJ0eS5rZXkoKSk7Ci0gIGlmIChrZXkgPT0gIm5hbWUi
IHx8IGtleSA9PSAic3RhdHVzIiB8fCBrZXkgPT0gInRpbWUiIHx8IGtleSA9PSAiY2xhc3NuYW1l
IikgewotICAgIEFERF9GQUlMVVJFKCkKLSAgICAgICAgPDwgIlJlc2VydmVkIGtleSB1c2VkIGlu
IFJlY29yZFByb3BlcnR5KCk6ICIKLSAgICAgICAgPDwga2V5Ci0gICAgICAgIDw8ICIgKCduYW1l
JywgJ3N0YXR1cycsICd0aW1lJywgYW5kICdjbGFzc25hbWUnIGFyZSByZXNlcnZlZCBieSAiCi0g
ICAgICAgIDw8IEdURVNUX05BTUVfIDw8ICIpIjsKKy8vIFRoZSBsaXN0IG9mIHJlc2VydmVkIGF0
dHJpYnV0ZXMgdXNlZCBpbiB0aGUgPHRlc3RzdWl0ZXM+IGVsZW1lbnQgb2YgWE1MCisvLyBvdXRw
dXQuCitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qga1Jlc2VydmVkVGVzdFN1aXRlc0F0dHJpYnV0
ZXNbXSA9IHsKKyAgImRpc2FibGVkIiwKKyAgImVycm9ycyIsCisgICJmYWlsdXJlcyIsCisgICJu
YW1lIiwKKyAgInJhbmRvbV9zZWVkIiwKKyAgInRlc3RzIiwKKyAgInRpbWUiLAorICAidGltZXN0
YW1wIgorfTsKKworLy8gVGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgYXR0cmlidXRlcyB1c2VkIGluIHRo
ZSA8dGVzdHN1aXRlPiBlbGVtZW50IG9mIFhNTAorLy8gb3V0cHV0Lgorc3RhdGljIGNvbnN0IGNo
YXIqIGNvbnN0IGtSZXNlcnZlZFRlc3RTdWl0ZUF0dHJpYnV0ZXNbXSA9IHsKKyAgImRpc2FibGVk
IiwKKyAgImVycm9ycyIsCisgICJmYWlsdXJlcyIsCisgICJuYW1lIiwKKyAgInRlc3RzIiwKKyAg
InRpbWUiCit9OworCisvLyBUaGUgbGlzdCBvZiByZXNlcnZlZCBhdHRyaWJ1dGVzIHVzZWQgaW4g
dGhlIDx0ZXN0Y2FzZT4gZWxlbWVudCBvZiBYTUwgb3V0cHV0Lgorc3RhdGljIGNvbnN0IGNoYXIq
IGNvbnN0IGtSZXNlcnZlZFRlc3RDYXNlQXR0cmlidXRlc1tdID0geworICAgICJjbGFzc25hbWUi
LCAgIm5hbWUiLCAgICAgICAgInN0YXR1cyIsICJ0aW1lIiwKKyAgICAidHlwZV9wYXJhbSIsICJ2
YWx1ZV9wYXJhbSIsICJmaWxlIiwgICAibGluZSJ9OworCit0ZW1wbGF0ZSA8aW50IGtTaXplPgor
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEFycmF5QXNWZWN0b3IoY29uc3QgY2hhciogY29uc3Qg
KCZhcnJheSlba1NpemVdKSB7CisgIHJldHVybiBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oYXJy
YXksIGFycmF5ICsga1NpemUpOworfQorCitzdGF0aWMgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
IEdldFJlc2VydmVkQXR0cmlidXRlc0ZvckVsZW1lbnQoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IHhtbF9lbGVtZW50KSB7CisgIGlmICh4bWxfZWxlbWVudCA9PSAidGVzdHN1aXRlcyIpIHsKKyAg
ICByZXR1cm4gQXJyYXlBc1ZlY3RvcihrUmVzZXJ2ZWRUZXN0U3VpdGVzQXR0cmlidXRlcyk7Cisg
IH0gZWxzZSBpZiAoeG1sX2VsZW1lbnQgPT0gInRlc3RzdWl0ZSIpIHsKKyAgICByZXR1cm4gQXJy
YXlBc1ZlY3RvcihrUmVzZXJ2ZWRUZXN0U3VpdGVBdHRyaWJ1dGVzKTsKKyAgfSBlbHNlIGlmICh4
bWxfZWxlbWVudCA9PSAidGVzdGNhc2UiKSB7CisgICAgcmV0dXJuIEFycmF5QXNWZWN0b3Ioa1Jl
c2VydmVkVGVzdENhc2VBdHRyaWJ1dGVzKTsKKyAgfSBlbHNlIHsKKyAgICBHVEVTVF9DSEVDS18o
ZmFsc2UpIDw8ICJVbnJlY29nbml6ZWQgeG1sX2VsZW1lbnQgcHJvdmlkZWQ6ICIgPDwgeG1sX2Vs
ZW1lbnQ7CisgIH0KKyAgLy8gVGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGJ1dCBzb21lIGNvbXBp
bGVycyBtYXkgbm90IHJlYWxpemVzIHRoYXQuCisgIHJldHVybiBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4oKTsKK30KKworc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFdvcmRMaXN0KGNvbnN0IHN0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgd29yZHMpIHsKKyAgTWVzc2FnZSB3b3JkX2xpc3Q7Cisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHMuc2l6ZSgpOyArK2kpIHsKKyAgICBpZiAoaSA+
IDAgJiYgd29yZHMuc2l6ZSgpID4gMikgeworICAgICAgd29yZF9saXN0IDw8ICIsICI7CisgICAg
fQorICAgIGlmIChpID09IHdvcmRzLnNpemUoKSAtIDEpIHsKKyAgICAgIHdvcmRfbGlzdCA8PCAi
YW5kICI7CisgICAgfQorICAgIHdvcmRfbGlzdCA8PCAiJyIgPDwgd29yZHNbaV0gPDwgIiciOwor
ICB9CisgIHJldHVybiB3b3JkX2xpc3QuR2V0U3RyaW5nKCk7Cit9CisKK3N0YXRpYyBib29sIFZh
bGlkYXRlVGVzdFByb3BlcnR5TmFtZSgKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgcHJvcGVydHlf
bmFtZSwKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHJlc2VydmVkX25hbWVz
KSB7CisgIGlmIChzdGQ6OmZpbmQocmVzZXJ2ZWRfbmFtZXMuYmVnaW4oKSwgcmVzZXJ2ZWRfbmFt
ZXMuZW5kKCksIHByb3BlcnR5X25hbWUpICE9CisgICAgICAgICAgcmVzZXJ2ZWRfbmFtZXMuZW5k
KCkpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJSZXNlcnZlZCBrZXkgdXNlZCBpbiBSZWNvcmRQ
cm9wZXJ0eSgpOiAiIDw8IHByb3BlcnR5X25hbWUKKyAgICAgICAgICAgICAgICAgIDw8ICIgKCIg
PDwgRm9ybWF0V29yZExpc3QocmVzZXJ2ZWRfbmFtZXMpCisgICAgICAgICAgICAgICAgICA8PCAi
IGFyZSByZXNlcnZlZCBieSAiIDw8IEdURVNUX05BTUVfIDw8ICIpIjsKICAgICByZXR1cm4gZmFs
c2U7CiAgIH0KICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIEFkZHMgYSBmYWlsdXJlIGlmIHRoZSBr
ZXkgaXMgYSByZXNlcnZlZCBhdHRyaWJ1dGUgb2YgdGhlIGVsZW1lbnQgbmFtZWQKKy8vIHhtbF9l
bGVtZW50LiAgUmV0dXJucyB0cnVlIGlmIHRoZSBwcm9wZXJ0eSBpcyB2YWxpZC4KK2Jvb2wgVGVz
dFJlc3VsdDo6VmFsaWRhdGVUZXN0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9lbGVt
ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UHJv
cGVydHkmIHRlc3RfcHJvcGVydHkpIHsKKyAgcmV0dXJuIFZhbGlkYXRlVGVzdFByb3BlcnR5TmFt
ZSh0ZXN0X3Byb3BlcnR5LmtleSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdldFJlc2VydmVkQXR0cmlidXRlc0ZvckVsZW1lbnQoeG1sX2VsZW1lbnQpKTsKK30KKwogLy8g
Q2xlYXJzIHRoZSBvYmplY3QuCiB2b2lkIFRlc3RSZXN1bHQ6OkNsZWFyKCkgewogICB0ZXN0X3Bh
cnRfcmVzdWx0c18uY2xlYXIoKTsKQEAgLTE5MTQsMTQgKzIyNTEsMTUgQEAgaW50IFRlc3RSZXN1
bHQ6OnRlc3RfcHJvcGVydHlfY291bnQoKSBjb25zdCB7CiAKIC8vIENyZWF0ZXMgYSBUZXN0IG9i
amVjdC4KIAotLy8gVGhlIGMndG9yIHNhdmVzIHRoZSB2YWx1ZXMgb2YgYWxsIEdvb2dsZSBUZXN0
IGZsYWdzLgorLy8gVGhlIGMndG9yIHNhdmVzIHRoZSBzdGF0ZXMgb2YgYWxsIGZsYWdzLgogVGVz
dDo6VGVzdCgpCi0gICAgOiBndGVzdF9mbGFnX3NhdmVyXyhuZXcgaW50ZXJuYWw6OkdUZXN0Rmxh
Z1NhdmVyKSB7CisgICAgOiBndGVzdF9mbGFnX3NhdmVyXyhuZXcgR1RFU1RfRkxBR19TQVZFUl8p
IHsKIH0KIAotLy8gVGhlIGQndG9yIHJlc3RvcmVzIHRoZSB2YWx1ZXMgb2YgYWxsIEdvb2dsZSBU
ZXN0IGZsYWdzLgorLy8gVGhlIGQndG9yIHJlc3RvcmVzIHRoZSBzdGF0ZXMgb2YgYWxsIGZsYWdz
LiAgVGhlIGFjdHVhbCB3b3JrIGlzCisvLyBkb25lIGJ5IHRoZSBkJ3RvciBvZiB0aGUgZ3Rlc3Rf
ZmxhZ19zYXZlcl8gZmllbGQsIGFuZCB0aHVzIG5vdAorLy8gdmlzaWJsZSBoZXJlLgogVGVzdDo6
flRlc3QoKSB7Ci0gIGRlbGV0ZSBndGVzdF9mbGFnX3NhdmVyXzsKIH0KIAogLy8gU2V0cyB1cCB0
aGUgdGVzdCBmaXh0dXJlLgpAQCAtMTkzNywxMiArMjI3NSwxMiBAQCB2b2lkIFRlc3Q6OlRlYXJE
b3duKCkgewogfQogCiAvLyBBbGxvd3MgdXNlciBzdXBwbGllZCBrZXkgdmFsdWUgcGFpcnMgdG8g
YmUgcmVjb3JkZWQgZm9yIGxhdGVyIG91dHB1dC4KLXZvaWQgVGVzdDo6UmVjb3JkUHJvcGVydHko
Y29uc3QgY2hhcioga2V5LCBjb25zdCBjaGFyKiB2YWx1ZSkgewotICBVbml0VGVzdDo6R2V0SW5z
dGFuY2UoKS0+UmVjb3JkUHJvcGVydHlGb3JDdXJyZW50VGVzdChrZXksIHZhbHVlKTsKK3ZvaWQg
VGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwgY29uc3Qgc3RkOjpz
dHJpbmcmIHZhbHVlKSB7CisgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5SZWNvcmRQcm9wZXJ0
eShrZXksIHZhbHVlKTsKIH0KIAogLy8gQWxsb3dzIHVzZXIgc3VwcGxpZWQga2V5IHZhbHVlIHBh
aXJzIHRvIGJlIHJlY29yZGVkIGZvciBsYXRlciBvdXRwdXQuCi12b2lkIFRlc3Q6OlJlY29yZFBy
b3BlcnR5KGNvbnN0IGNoYXIqIGtleSwgaW50IHZhbHVlKSB7Cit2b2lkIFRlc3Q6OlJlY29yZFBy
b3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGludCB2YWx1ZSkgewogICBNZXNzYWdlIHZh
bHVlX21lc3NhZ2U7CiAgIHZhbHVlX21lc3NhZ2UgPDwgdmFsdWU7CiAgIFJlY29yZFByb3BlcnR5
KGtleSwgdmFsdWVfbWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0cigpKTsKQEAgLTE5NTEsNyArMjI4
OSw3IEBAIHZvaWQgVGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBpbnQgdmFs
dWUpIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIHZvaWQgUmVwb3J0RmFpbHVyZUluVW5rbm93
bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkg
ewogICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGEgZnJpZW5kIG9mIFVuaXRUZXN0IGFuZCBhcyBzdWNo
IGhhcyBhY2Nlc3MgdG8KICAgLy8gQWRkVGVzdFBhcnRSZXN1bHQuCiAgIFVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5BZGRUZXN0UGFydFJlc3VsdCgKQEAgLTE5NTksMjcgKzIyOTcsMTEgQEAgdm9p
ZCBSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVz
dWx0X3R5cGUsCiAgICAgICBOVUxMLCAgLy8gTm8gaW5mbyBhYm91dCB0aGUgc291cmNlIGZpbGUg
d2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4KICAgICAgIC0xLCAgICAvLyBXZSBoYXZlIG5v
IGluZm8gb24gd2hpY2ggbGluZSBjYXVzZWQgdGhlIGV4Y2VwdGlvbi4KICAgICAgIG1lc3NhZ2Us
Ci0gICAgICBTdHJpbmcoKSk7ICAvLyBObyBzdGFjayB0cmFjZSwgZWl0aGVyLgorICAgICAgIiIp
OyAgIC8vIE5vIHN0YWNrIHRyYWNlLCBlaXRoZXIuCiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRl
cm5hbAogCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotLy8gV2UgYXJlIG9uIFdpbmRvd3MuCi0KLS8v
IEFkZHMgYW4gImV4Y2VwdGlvbiB0aHJvd24iIGZhdGFsIGZhaWx1cmUgdG8gdGhlIGN1cnJlbnQg
dGVzdC4KLXN0YXRpYyB2b2lkIEFkZEV4Y2VwdGlvblRocm93bkZhaWx1cmUoRFdPUkQgZXhjZXB0
aW9uX2NvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGxvY2F0aW9uKSB7Ci0gIE1lc3NhZ2UgbWVzc2FnZTsKLSAgbWVzc2FnZSA8PCAiRXhjZXB0
aW9uIHRocm93biB3aXRoIGNvZGUgMHgiIDw8IHN0ZDo6c2V0YmFzZSgxNikgPDwKLSAgICBleGNl
cHRpb25fY29kZSA8PCBzdGQ6OnNldGJhc2UoMTApIDw8ICIgaW4gIiA8PCBsb2NhdGlvbiA8PCAi
LiI7Ci0KLSAgaW50ZXJuYWw6OlJlcG9ydEZhaWx1cmVJblVua25vd25Mb2NhdGlvbihUZXN0UGFy
dFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZXNzYWdlLkdldFN0cmluZygpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCi0KIC8vIEdvb2dsZSBUZXN0IHJlcXVpcmVzIGFsbCB0ZXN0cyBpbiB0aGUgc2Ft
ZSB0ZXN0IGNhc2UgdG8gdXNlIHRoZSBzYW1lIHRlc3QKIC8vIGZpeHR1cmUgY2xhc3MuICBUaGlz
IGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgY3VycmVudCB0ZXN0IGhhcyB0aGUKIC8vIHNhbWUgZml4
dHVyZSBjbGFzcyBhcyB0aGUgZmlyc3QgdGVzdCBpbiB0aGUgY3VycmVudCB0ZXN0IGNhc2UuICBJ
ZgpAQCAtMTk5MCwxNSArMjMxMiwxMyBAQCBib29sIFRlc3Q6Okhhc1NhbWVGaXh0dXJlQ2xhc3Mo
KSB7CiAgIGNvbnN0IFRlc3RDYXNlKiBjb25zdCB0ZXN0X2Nhc2UgPSBpbXBsLT5jdXJyZW50X3Rl
c3RfY2FzZSgpOwogCiAgIC8vIEluZm8gYWJvdXQgdGhlIGZpcnN0IHRlc3QgaW4gdGhlIGN1cnJl
bnQgdGVzdCBjYXNlLgotICBjb25zdCBpbnRlcm5hbDo6VGVzdEluZm9JbXBsKiBjb25zdCBmaXJz
dF90ZXN0X2luZm8gPQotICAgICAgdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpWzBdLT5pbXBs
KCk7Ci0gIGNvbnN0IGludGVybmFsOjpUeXBlSWQgZmlyc3RfZml4dHVyZV9pZCA9IGZpcnN0X3Rl
c3RfaW5mby0+Zml4dHVyZV9jbGFzc19pZCgpOworICBjb25zdCBUZXN0SW5mbyogY29uc3QgZmly
c3RfdGVzdF9pbmZvID0gdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpWzBdOworICBjb25zdCBp
bnRlcm5hbDo6VHlwZUlkIGZpcnN0X2ZpeHR1cmVfaWQgPSBmaXJzdF90ZXN0X2luZm8tPmZpeHR1
cmVfY2xhc3NfaWRfOwogICBjb25zdCBjaGFyKiBjb25zdCBmaXJzdF90ZXN0X25hbWUgPSBmaXJz
dF90ZXN0X2luZm8tPm5hbWUoKTsKIAogICAvLyBJbmZvIGFib3V0IHRoZSBjdXJyZW50IHRlc3Qu
Ci0gIGNvbnN0IGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGNvbnN0IHRoaXNfdGVzdF9pbmZvID0K
LSAgICAgIGltcGwtPmN1cnJlbnRfdGVzdF9pbmZvKCktPmltcGwoKTsKLSAgY29uc3QgaW50ZXJu
YWw6OlR5cGVJZCB0aGlzX2ZpeHR1cmVfaWQgPSB0aGlzX3Rlc3RfaW5mby0+Zml4dHVyZV9jbGFz
c19pZCgpOworICBjb25zdCBUZXN0SW5mbyogY29uc3QgdGhpc190ZXN0X2luZm8gPSBpbXBsLT5j
dXJyZW50X3Rlc3RfaW5mbygpOworICBjb25zdCBpbnRlcm5hbDo6VHlwZUlkIHRoaXNfZml4dHVy
ZV9pZCA9IHRoaXNfdGVzdF9pbmZvLT5maXh0dXJlX2NsYXNzX2lkXzsKICAgY29uc3QgY2hhciog
Y29uc3QgdGhpc190ZXN0X25hbWUgPSB0aGlzX3Rlc3RfaW5mby0+bmFtZSgpOwogCiAgIGlmICh0
aGlzX2ZpeHR1cmVfaWQgIT0gZmlyc3RfZml4dHVyZV9pZCkgewpAQCAtMjAwOCw4ICsyMzI4LDgg
QEAgYm9vbCBUZXN0OjpIYXNTYW1lRml4dHVyZUNsYXNzKCkgewogICAgIGNvbnN0IGJvb2wgdGhp
c19pc19URVNUID0gdGhpc19maXh0dXJlX2lkID09IGludGVybmFsOjpHZXRUZXN0VHlwZUlkKCk7
CiAKICAgICBpZiAoZmlyc3RfaXNfVEVTVCB8fCB0aGlzX2lzX1RFU1QpIHsKLSAgICAgIC8vIFRo
ZSB1c2VyIG1peGVkIFRFU1QgYW5kIFRFU1RfRiBpbiB0aGlzIHRlc3QgY2FzZSAtIHdlJ2xsIHRl
bGwKLSAgICAgIC8vIGhpbS9oZXIgaG93IHRvIGZpeCBpdC4KKyAgICAgIC8vIEJvdGggVEVTVCBh
bmQgVEVTVF9GIGFwcGVhciBpbiBzYW1lIHRlc3QgY2FzZSwgd2hpY2ggaXMgaW5jb3JyZWN0Lgor
ICAgICAgLy8gVGVsbCB0aGUgdXNlciBob3cgdG8gZml4IHRoaXMuCiAKICAgICAgIC8vIEdldHMg
dGhlIG5hbWUgb2YgdGhlIFRFU1QgYW5kIHRoZSBuYW1lIG9mIHRoZSBURVNUX0YuICBOb3RlCiAg
ICAgICAvLyB0aGF0IGZpcnN0X2lzX1RFU1QgYW5kIHRoaXNfaXNfVEVTVCBjYW5ub3QgYm90aCBi
ZSB0cnVlLCBhcwpAQCAtMjAyOSw4ICsyMzQ5LDggQEAgYm9vbCBUZXN0OjpIYXNTYW1lRml4dHVy
ZUNsYXNzKCkgewogICAgICAgICAgIDw8ICJ3YW50IHRvIGNoYW5nZSB0aGUgVEVTVCB0byBURVNU
X0Ygb3IgbW92ZSBpdCB0byBhbm90aGVyIHRlc3RcbiIKICAgICAgICAgICA8PCAiY2FzZS4iOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAvLyBUaGUgdXNlciBkZWZpbmVkIHR3byBmaXh0dXJlIGNsYXNz
ZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGluCi0gICAgICAvLyB0d28gbmFtZXNwYWNlcyAtIHdlJ2xs
IHRlbGwgaGltL2hlciBob3cgdG8gZml4IGl0LgorICAgICAgLy8gVHdvIGZpeHR1cmUgY2xhc3Nl
cyB3aXRoIHRoZSBzYW1lIG5hbWUgYXBwZWFyIGluIHR3byBkaWZmZXJlbnQKKyAgICAgIC8vIG5h
bWVzcGFjZXMsIHdoaWNoIGlzIG5vdCBhbGxvd2VkLiBUZWxsIHRoZSB1c2VyIGhvdyB0byBmaXgg
dGhpcy4KICAgICAgIEFERF9GQUlMVVJFKCkKICAgICAgICAgICA8PCAiQWxsIHRlc3RzIGluIHRo
ZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmVcbiIKICAgICAg
ICAgICA8PCAiY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgIgpAQCAtMjA0OCw2MiArMjM2
OCwxNjQgQEAgYm9vbCBUZXN0OjpIYXNTYW1lRml4dHVyZUNsYXNzKCkgewogICByZXR1cm4gdHJ1
ZTsKIH0KIAotLy8gUnVucyB0aGUgdGVzdCBhbmQgdXBkYXRlcyB0aGUgdGVzdCByZXN1bHQuCi12
b2lkIFRlc3Q6OlJ1bigpIHsKLSAgaWYgKCFIYXNTYW1lRml4dHVyZUNsYXNzKCkpIHJldHVybjsK
LQotICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0gaW50ZXJuYWw6OkdldFVu
aXRUZXN0SW1wbCgpOwogI2lmIEdURVNUX0hBU19TRUgKLSAgLy8gQ2F0Y2ggU0VILXN0eWxlIGV4
Y2VwdGlvbnMuCi0gIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dU
ZXN0KCk7Ci0gIF9fdHJ5IHsKLSAgICBTZXRVcCgpOwotICB9IF9fZXhjZXB0KGludGVybmFsOjpV
bml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCgKLSAgICAgIEdldEV4Y2VwdGlv
bkNvZGUoKSkpIHsKLSAgICBBZGRFeGNlcHRpb25UaHJvd25GYWlsdXJlKEdldEV4Y2VwdGlvbkNv
ZGUoKSwgIlNldFVwKCkiKTsKLSAgfQogCi0gIC8vIFdlIHdpbGwgcnVuIHRoZSB0ZXN0IG9ubHkg
aWYgU2V0VXAoKSBoYWQgbm8gZmF0YWwgZmFpbHVyZS4KLSAgaWYgKCFIYXNGYXRhbEZhaWx1cmUo
KSkgewotICAgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0
KCk7Ci0gICAgX190cnkgewotICAgICAgVGVzdEJvZHkoKTsKLSAgICB9IF9fZXhjZXB0KGludGVy
bmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCgKLSAgICAgICAgR2V0
RXhjZXB0aW9uQ29kZSgpKSkgewotICAgICAgQWRkRXhjZXB0aW9uVGhyb3duRmFpbHVyZShHZXRF
eGNlcHRpb25Db2RlKCksICJ0aGUgdGVzdCBib2R5Iik7Ci0gICAgfQotICB9CisvLyBBZGRzIGFu
ICJleGNlcHRpb24gdGhyb3duIiBmYXRhbCBmYWlsdXJlIHRvIHRoZSBjdXJyZW50IHRlc3QuICBU
aGlzCisvLyBmdW5jdGlvbiByZXR1cm5zIGl0cyByZXN1bHQgdmlhIGFuIG91dHB1dCBwYXJhbWV0
ZXIgcG9pbnRlciBiZWNhdXNlIFZDKysKKy8vIHByb2hpYml0cyBjcmVhdGlvbiBvZiBvYmplY3Rz
IHdpdGggZGVzdHJ1Y3RvcnMgb24gc3RhY2sgaW4gZnVuY3Rpb25zCisvLyB1c2luZyBfX3RyeSAo
c2VlIGVycm9yIEMyNzEyKS4KK3N0YXRpYyBzdGQ6OnN0cmluZyogRm9ybWF0U2VoRXhjZXB0aW9u
TWVzc2FnZShEV09SRCBleGNlcHRpb25fY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBsb2NhdGlvbikgeworICBNZXNzYWdlIG1l
c3NhZ2U7CisgIG1lc3NhZ2UgPDwgIlNFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4IiA8PCBzdGQ6
OnNldGJhc2UoMTYpIDw8CisgICAgZXhjZXB0aW9uX2NvZGUgPDwgc3RkOjpzZXRiYXNlKDEwKSA8
PCAiIHRocm93biBpbiAiIDw8IGxvY2F0aW9uIDw8ICIuIjsKIAotICAvLyBIb3dldmVyLCB3ZSB3
YW50IHRvIGNsZWFuIHVwIGFzIG11Y2ggYXMgcG9zc2libGUuICBIZW5jZSB3ZSB3aWxsCi0gIC8v
IGFsd2F5cyBjYWxsIFRlYXJEb3duKCksIGV2ZW4gaWYgU2V0VXAoKSBvciB0aGUgdGVzdCBib2R5
IGhhcwotICAvLyBmYWlsZWQuCi0gIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9u
TGVhdmluZ0dUZXN0KCk7CisgIHJldHVybiBuZXcgc3RkOjpzdHJpbmcobWVzc2FnZS5HZXRTdHJp
bmcoKSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAorCituYW1lc3BhY2UgaW50ZXJu
YWwgeworCisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworLy8gQWRkcyBhbiAiZXhjZXB0aW9u
IHRocm93biIgZmF0YWwgZmFpbHVyZSB0byB0aGUgY3VycmVudCB0ZXN0Lgorc3RhdGljIHN0ZDo6
c3RyaW5nIEZvcm1hdEN4eEV4Y2VwdGlvbk1lc3NhZ2UoY29uc3QgY2hhciogZGVzY3JpcHRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBsb2NhdGlvbikgeworICBNZXNzYWdlIG1lc3NhZ2U7CisgIGlmIChkZXNjcmlwdGlvbiAhPSBO
VUxMKSB7CisgICAgbWVzc2FnZSA8PCAiQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uIFwi
IiA8PCBkZXNjcmlwdGlvbiA8PCAiXCIiOworICB9IGVsc2UgeworICAgIG1lc3NhZ2UgPDwgIlVu
a25vd24gQysrIGV4Y2VwdGlvbiI7CisgIH0KKyAgbWVzc2FnZSA8PCAiIHRocm93biBpbiAiIDw8
IGxvY2F0aW9uIDw8ICIuIjsKKworICByZXR1cm4gbWVzc2FnZS5HZXRTdHJpbmcoKTsKK30KKwor
c3RhdGljIHN0ZDo6c3RyaW5nIFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmluZygKKyAgICBjb25z
dCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCk7CisKK0dvb2dsZVRlc3RGYWlsdXJl
RXhjZXB0aW9uOjpHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbigKKyAgICBjb25zdCBUZXN0UGFy
dFJlc3VsdCYgZmFpbHVyZSkKKyAgICA6IDo6c3RkOjpydW50aW1lX2Vycm9yKFByaW50VGVzdFBh
cnRSZXN1bHRUb1N0cmluZyhmYWlsdXJlKS5jX3N0cigpKSB7fQorCisjZW5kaWYgIC8vIEdURVNU
X0hBU19FWENFUFRJT05TCisKKy8vIFdlIHB1dCB0aGVzZSBoZWxwZXIgZnVuY3Rpb25zIGluIHRo
ZSBpbnRlcm5hbCBuYW1lc3BhY2UgYXMgSUJNJ3MgeGxDCisvLyBjb21waWxlciByZWplY3RzIHRo
ZSBjb2RlIGlmIHRoZXkgd2VyZSBkZWNsYXJlZCBzdGF0aWMuCisKKy8vIFJ1bnMgdGhlIGdpdmVu
IG1ldGhvZCBhbmQgaGFuZGxlcyBTRUggZXhjZXB0aW9ucyBpdCB0aHJvd3MsIHdoZW4KKy8vIFNF
SCBpcyBzdXBwb3J0ZWQ7IHJldHVybnMgdGhlIDAtdmFsdWUgZm9yIHR5cGUgUmVzdWx0IGluIGNh
c2Ugb2YgYW4KKy8vIFNFSCBleGNlcHRpb24uICAoTWljcm9zb2Z0IGNvbXBpbGVycyBjYW5ub3Qg
aGFuZGxlIFNFSCBhbmQgQysrCisvLyBleGNlcHRpb25zIGluIHRoZSBzYW1lIGZ1bmN0aW9uLiAg
VGhlcmVmb3JlLCB3ZSBwcm92aWRlIGEgc2VwYXJhdGUKKy8vIHdyYXBwZXIgZnVuY3Rpb24gZm9y
IGhhbmRsaW5nIFNFSCBleGNlcHRpb25zLikKK3RlbXBsYXRlIDxjbGFzcyBULCB0eXBlbmFtZSBS
ZXN1bHQ+CitSZXN1bHQgSGFuZGxlU2VoRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisg
ICAgVCogb2JqZWN0LCBSZXN1bHQgKFQ6OiptZXRob2QpKCksIGNvbnN0IGNoYXIqIGxvY2F0aW9u
KSB7CisjaWYgR1RFU1RfSEFTX1NFSAogICBfX3RyeSB7Ci0gICAgVGVhckRvd24oKTsKLSAgfSBf
X2V4Y2VwdChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpHVGVzdFNob3VsZFByb2Nlc3NTRUgo
CisgICAgcmV0dXJuIChvYmplY3QtPiptZXRob2QpKCk7CisgIH0gX19leGNlcHQgKGludGVybmFs
OjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCggIC8vIE5PTElOVAogICAg
ICAgR2V0RXhjZXB0aW9uQ29kZSgpKSkgewotICAgIEFkZEV4Y2VwdGlvblRocm93bkZhaWx1cmUo
R2V0RXhjZXB0aW9uQ29kZSgpLCAiVGVhckRvd24oKSIpOworICAgIC8vIFdlIGNyZWF0ZSB0aGUg
ZXhjZXB0aW9uIG1lc3NhZ2Ugb24gdGhlIGhlYXAgYmVjYXVzZSBWQysrIHByb2hpYml0cworICAg
IC8vIGNyZWF0aW9uIG9mIG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycyBvbiBzdGFjayBpbiBmdW5j
dGlvbnMgdXNpbmcgX190cnkKKyAgICAvLyAoc2VlIGVycm9yIEMyNzEyKS4KKyAgICBzdGQ6OnN0
cmluZyogZXhjZXB0aW9uX21lc3NhZ2UgPSBGb3JtYXRTZWhFeGNlcHRpb25NZXNzYWdlKAorICAg
ICAgICBHZXRFeGNlcHRpb25Db2RlKCksIGxvY2F0aW9uKTsKKyAgICBpbnRlcm5hbDo6UmVwb3J0
RmFpbHVyZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4Y2VwdGlvbl9t
ZXNzYWdlKTsKKyAgICBkZWxldGUgZXhjZXB0aW9uX21lc3NhZ2U7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFJlc3VsdD4oMCk7CiAgIH0KKyNlbHNlCisgICh2b2lkKWxvY2F0aW9uOworICByZXR1
cm4gKG9iamVjdC0+Km1ldGhvZCkoKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAorfQogCi0j
ZWxzZSAgLy8gV2UgYXJlIG9uIGEgY29tcGlsZXIgb3IgcGxhdGZvcm0gdGhhdCBkb2Vzbid0IHN1
cHBvcnQgU0VILgotICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdH
VGVzdCgpOwotICBTZXRVcCgpOworLy8gUnVucyB0aGUgZ2l2ZW4gbWV0aG9kIGFuZCBjYXRjaGVz
IGFuZCByZXBvcnRzIEMrKyBhbmQvb3IgU0VILXN0eWxlCisvLyBleGNlcHRpb25zLCBpZiB0aGV5
IGFyZSBzdXBwb3J0ZWQ7IHJldHVybnMgdGhlIDAtdmFsdWUgZm9yIHR5cGUKKy8vIFJlc3VsdCBp
biBjYXNlIG9mIGFuIFNFSCBleGNlcHRpb24uCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgdHlwZW5hbWUg
UmVzdWx0PgorUmVzdWx0IEhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAorICAg
IFQqIG9iamVjdCwgUmVzdWx0IChUOjoqbWV0aG9kKSgpLCBjb25zdCBjaGFyKiBsb2NhdGlvbikg
eworICAvLyBOT1RFOiBUaGUgdXNlciBjb2RlIGNhbiBhZmZlY3QgdGhlIHdheSBpbiB3aGljaCBH
b29nbGUgVGVzdCBoYW5kbGVzCisgIC8vIGV4Y2VwdGlvbnMgYnkgc2V0dGluZyBHVEVTVF9GTEFH
KGNhdGNoX2V4Y2VwdGlvbnMpLCBidXQgb25seSBiZWZvcmUKKyAgLy8gUlVOX0FMTF9URVNUUygp
IHN0YXJ0cy4gSXQgaXMgdGVjaG5pY2FsbHkgcG9zc2libGUgdG8gY2hlY2sgdGhlIGZsYWcKKyAg
Ly8gYWZ0ZXIgdGhlIGV4Y2VwdGlvbiBpcyBjYXVnaHQgYW5kIGVpdGhlciByZXBvcnQgb3IgcmUt
dGhyb3cgdGhlCisgIC8vIGV4Y2VwdGlvbiBiYXNlZCBvbiB0aGUgZmxhZydzIHZhbHVlOgorICAv
LworICAvLyB0cnkgeworICAvLyAgIC8vIFBlcmZvcm0gdGhlIHRlc3QgbWV0aG9kLgorICAvLyB9
IGNhdGNoICguLi4pIHsKKyAgLy8gICBpZiAoR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSkK
KyAgLy8gICAgIC8vIFJlcG9ydCB0aGUgZXhjZXB0aW9uIGFzIGZhaWx1cmUuCisgIC8vICAgZWxz
ZQorICAvLyAgICAgdGhyb3c7ICAvLyBSZS10aHJvd3MgdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbi4K
KyAgLy8gfQorICAvLworICAvLyBIb3dldmVyLCB0aGUgcHVycG9zZSBvZiB0aGlzIGZsYWcgaXMg
dG8gYWxsb3cgdGhlIHByb2dyYW0gdG8gZHJvcCBpbnRvCisgIC8vIHRoZSBkZWJ1Z2dlciB3aGVu
IHRoZSBleGNlcHRpb24gaXMgdGhyb3duLiBPbiBtb3N0IHBsYXRmb3Jtcywgb25jZSB0aGUKKyAg
Ly8gY29udHJvbCBlbnRlcnMgdGhlIGNhdGNoIGJsb2NrLCB0aGUgZXhjZXB0aW9uIG9yaWdpbiBp
bmZvcm1hdGlvbiBpcworICAvLyBsb3N0IGFuZCB0aGUgZGVidWdnZXIgd2lsbCBzdG9wIHRoZSBw
cm9ncmFtIGF0IHRoZSBwb2ludCBvZiB0aGUKKyAgLy8gcmUtdGhyb3cgaW4gdGhpcyBmdW5jdGlv
biAtLSBpbnN0ZWFkIG9mIGF0IHRoZSBwb2ludCBvZiB0aGUgb3JpZ2luYWwKKyAgLy8gdGhyb3cg
c3RhdGVtZW50IGluIHRoZSBjb2RlIHVuZGVyIHRlc3QuICBGb3IgdGhpcyByZWFzb24sIHdlIHBl
cmZvcm0KKyAgLy8gdGhlIGNoZWNrIGVhcmx5LCBzYWNyaWZpY2luZyB0aGUgYWJpbGl0eSB0byBh
ZmZlY3QgR29vZ2xlIFRlc3QncworICAvLyBleGNlcHRpb24gaGFuZGxpbmcgaW4gdGhlIG1ldGhv
ZCB3aGVyZSB0aGUgZXhjZXB0aW9uIGlzIHRocm93bi4KKyAgaWYgKGludGVybmFsOjpHZXRVbml0
VGVzdEltcGwoKS0+Y2F0Y2hfZXhjZXB0aW9ucygpKSB7CisjaWYgR1RFU1RfSEFTX0VYQ0VQVElP
TlMKKyAgICB0cnkgeworICAgICAgcmV0dXJuIEhhbmRsZVNlaEV4Y2VwdGlvbnNJbk1ldGhvZElm
U3VwcG9ydGVkKG9iamVjdCwgbWV0aG9kLCBsb2NhdGlvbik7CisgICAgfSBjYXRjaCAoY29uc3Qg
QXNzZXJ0aW9uRXhjZXB0aW9uJikgeyAgLy8gTk9MSU5UCisgICAgICAvLyBUaGlzIGZhaWx1cmUg
d2FzIHJlcG9ydGVkIGFscmVhZHkuCisgICAgfSBjYXRjaCAoY29uc3QgaW50ZXJuYWw6Okdvb2ds
ZVRlc3RGYWlsdXJlRXhjZXB0aW9uJikgeyAgLy8gTk9MSU5UCisgICAgICAvLyBUaGlzIGV4Y2Vw
dGlvbiB0eXBlIGNhbiBvbmx5IGJlIHRocm93biBieSBhIGZhaWxlZCBHb29nbGUKKyAgICAgIC8v
IFRlc3QgYXNzZXJ0aW9uIHdpdGggdGhlIGludGVudGlvbiBvZiBsZXR0aW5nIGFub3RoZXIgdGVz
dGluZworICAgICAgLy8gZnJhbWV3b3JrIGNhdGNoIGl0LiAgVGhlcmVmb3JlIHdlIGp1c3QgcmUt
dGhyb3cgaXQuCisgICAgICB0aHJvdzsKKyAgICB9IGNhdGNoIChjb25zdCBzdGQ6OmV4Y2VwdGlv
biYgZSkgeyAgLy8gTk9MSU5UCisgICAgICBpbnRlcm5hbDo6UmVwb3J0RmFpbHVyZUluVW5rbm93
bkxvY2F0aW9uKAorICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLAorICAg
ICAgICAgIEZvcm1hdEN4eEV4Y2VwdGlvbk1lc3NhZ2UoZS53aGF0KCksIGxvY2F0aW9uKSk7Cisg
ICAgfSBjYXRjaCAoLi4uKSB7ICAvLyBOT0xJTlQKKyAgICAgIGludGVybmFsOjpSZXBvcnRGYWls
dXJlSW5Vbmtub3duTG9jYXRpb24oCisgICAgICAgICAgVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZh
aWx1cmUsCisgICAgICAgICAgRm9ybWF0Q3h4RXhjZXB0aW9uTWVzc2FnZShOVUxMLCBsb2NhdGlv
bikpOworICAgIH0KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzdWx0PigwKTsKKyNlbHNlCisg
ICAgcmV0dXJuIEhhbmRsZVNlaEV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKG9iamVjdCwg
bWV0aG9kLCBsb2NhdGlvbik7CisjZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCisgIH0g
ZWxzZSB7CisgICAgcmV0dXJuIChvYmplY3QtPiptZXRob2QpKCk7CisgIH0KK30KKworfSAgLy8g
bmFtZXNwYWNlIGludGVybmFsCiAKKy8vIFJ1bnMgdGhlIHRlc3QgYW5kIHVwZGF0ZXMgdGhlIHRl
c3QgcmVzdWx0Lgordm9pZCBUZXN0OjpSdW4oKSB7CisgIGlmICghSGFzU2FtZUZpeHR1cmVDbGFz
cygpKSByZXR1cm47CisKKyAgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCogY29uc3QgaW1wbCA9IGlu
dGVybmFsOjpHZXRVbml0VGVzdEltcGwoKTsKKyAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVy
KCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKKyAgaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1l
dGhvZElmU3VwcG9ydGVkKHRoaXMsICZUZXN0OjpTZXRVcCwgIlNldFVwKCkiKTsKICAgLy8gV2Ug
d2lsbCBydW4gdGhlIHRlc3Qgb25seSBpZiBTZXRVcCgpIHdhcyBzdWNjZXNzZnVsLgogICBpZiAo
IUhhc0ZhdGFsRmFpbHVyZSgpKSB7CiAgICAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCkt
PlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgICBUZXN0Qm9keSgpOworICAgIGludGVybmFsOjpIYW5k
bGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAgICAgICAgdGhpcywgJlRlc3Q6OlRl
c3RCb2R5LCAidGhlIHRlc3QgYm9keSIpOwogICB9CiAKICAgLy8gSG93ZXZlciwgd2Ugd2FudCB0
byBjbGVhbiB1cCBhcyBtdWNoIGFzIHBvc3NpYmxlLiAgSGVuY2Ugd2Ugd2lsbAogICAvLyBhbHdh
eXMgY2FsbCBUZWFyRG93bigpLCBldmVuIGlmIFNldFVwKCkgb3IgdGhlIHRlc3QgYm9keSBoYXMK
ICAgLy8gZmFpbGVkLgogICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZp
bmdHVGVzdCgpOwotICBUZWFyRG93bigpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICisgIGlu
dGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAgICAgIHRoaXMs
ICZUZXN0OjpUZWFyRG93biwgIlRlYXJEb3duKCkiKTsKIH0KIAotCiAvLyBSZXR1cm5zIHRydWUg
aWZmIHRoZSBjdXJyZW50IHRlc3QgaGFzIGEgZmF0YWwgZmFpbHVyZS4KIGJvb2wgVGVzdDo6SGFz
RmF0YWxGYWlsdXJlKCkgewogICByZXR1cm4gaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpLT5j
dXJyZW50X3Rlc3RfcmVzdWx0KCktPkhhc0ZhdGFsRmFpbHVyZSgpOwpAQCAtMjExOCwyMiArMjU0
MCwyOCBAQCBib29sIFRlc3Q6Okhhc05vbmZhdGFsRmFpbHVyZSgpIHsKIC8vIGNsYXNzIFRlc3RJ
bmZvCiAKIC8vIENvbnN0cnVjdHMgYSBUZXN0SW5mbyBvYmplY3QuIEl0IGFzc3VtZXMgb3duZXJz
aGlwIG9mIHRoZSB0ZXN0IGZhY3RvcnkKLS8vIG9iamVjdCB2aWEgaW1wbF8uCi1UZXN0SW5mbzo6
VGVzdEluZm8oY29uc3QgY2hhciogYV90ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBhX25hbWUsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV90
ZXN0X2Nhc2VfY29tbWVudCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX2NvbW1l
bnQsCisvLyBvYmplY3QuCitUZXN0SW5mbzo6VGVzdEluZm8oY29uc3Qgc3RkOjpzdHJpbmcmIGFf
dGVzdF9jYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFf
bmFtZSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sCisgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV92YWx1ZV9wYXJhbSwKKyAgICAgICAgICAgICAg
ICAgICBpbnRlcm5hbDo6Q29kZUxvY2F0aW9uIGFfY29kZV9sb2NhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICBpbnRlcm5hbDo6VHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCi0gICAgICAgICAgICAg
ICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSkgewotICBpbXBsXyA9IG5l
dyBpbnRlcm5hbDo6VGVzdEluZm9JbXBsKHRoaXMsIGFfdGVzdF9jYXNlX25hbWUsIGFfbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhX3Rlc3RfY2FzZV9jb21tZW50
LCBhX2NvbW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4dHVy
ZV9jbGFzc19pZCwgZmFjdG9yeSk7Ci19CisgICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OlRl
c3RGYWN0b3J5QmFzZSogZmFjdG9yeSkKKyAgICA6IHRlc3RfY2FzZV9uYW1lXyhhX3Rlc3RfY2Fz
ZV9uYW1lKSwKKyAgICAgIG5hbWVfKGFfbmFtZSksCisgICAgICB0eXBlX3BhcmFtXyhhX3R5cGVf
cGFyYW0gPyBuZXcgc3RkOjpzdHJpbmcoYV90eXBlX3BhcmFtKSA6IE5VTEwpLAorICAgICAgdmFs
dWVfcGFyYW1fKGFfdmFsdWVfcGFyYW0gPyBuZXcgc3RkOjpzdHJpbmcoYV92YWx1ZV9wYXJhbSkg
OiBOVUxMKSwKKyAgICAgIGxvY2F0aW9uXyhhX2NvZGVfbG9jYXRpb24pLAorICAgICAgZml4dHVy
ZV9jbGFzc19pZF8oZml4dHVyZV9jbGFzc19pZCksCisgICAgICBzaG91bGRfcnVuXyhmYWxzZSks
CisgICAgICBpc19kaXNhYmxlZF8oZmFsc2UpLAorICAgICAgbWF0Y2hlc19maWx0ZXJfKGZhbHNl
KSwKKyAgICAgIGZhY3RvcnlfKGZhY3RvcnkpLAorICAgICAgcmVzdWx0XygpIHt9CiAKIC8vIERl
c3RydWN0cyBhIFRlc3RJbmZvIG9iamVjdC4KLVRlc3RJbmZvOjp+VGVzdEluZm8oKSB7Ci0gIGRl
bGV0ZSBpbXBsXzsKLX0KK1Rlc3RJbmZvOjp+VGVzdEluZm8oKSB7IGRlbGV0ZSBmYWN0b3J5Xzsg
fQogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCkBAIC0yMTQ0LDEwICsyNTcyLDExIEBAIG5hbWVz
cGFjZSBpbnRlcm5hbCB7CiAvLwogLy8gICB0ZXN0X2Nhc2VfbmFtZTogICBuYW1lIG9mIHRoZSB0
ZXN0IGNhc2UKIC8vICAgbmFtZTogICAgICAgICAgICAgbmFtZSBvZiB0aGUgdGVzdAotLy8gICB0
ZXN0X2Nhc2VfY29tbWVudDogYSBjb21tZW50IG9uIHRoZSB0ZXN0IGNhc2UgdGhhdCB3aWxsIGJl
IGluY2x1ZGVkIGluCi0vLyAgICAgICAgICAgICAgICAgICAgICB0aGUgdGVzdCBvdXRwdXQKLS8v
ICAgY29tbWVudDogICAgICAgICAgYSBjb21tZW50IG9uIHRoZSB0ZXN0IHRoYXQgd2lsbCBiZSBp
bmNsdWRlZCBpbiB0aGUKLS8vICAgICAgICAgICAgICAgICAgICAgdGVzdCBvdXRwdXQKKy8vICAg
dHlwZV9wYXJhbTogICAgICAgdGhlIG5hbWUgb2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwg
b3IgTlVMTCBpZgorLy8gICAgICAgICAgICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9y
IGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisvLyAgIHZhbHVlX3BhcmFtOiAgICAgIHRleHQg
cmVwcmVzZW50YXRpb24gb2YgdGhlIHRlc3QncyB2YWx1ZSBwYXJhbWV0ZXIsCisvLyAgICAgICAg
ICAgICAgICAgICAgIG9yIE5VTEwgaWYgdGhpcyBpcyBub3QgYSB2YWx1ZS1wYXJhbWV0ZXJpemVk
IHRlc3QuCisvLyAgIGNvZGVfbG9jYXRpb246ICAgIGNvZGUgbG9jYXRpb24gd2hlcmUgdGhlIHRl
c3QgaXMgZGVmaW5lZAogLy8gICBmaXh0dXJlX2NsYXNzX2lkOiBJRCBvZiB0aGUgdGVzdCBmaXh0
dXJlIGNsYXNzCiAvLyAgIHNldF91cF90YzogICAgICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9u
IHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBjYXNlCiAvLyAgIHRlYXJfZG93bl90YzogICAgIHBvaW50
ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgdGVhcnMgZG93biB0aGUgdGVzdCBjYXNlCkBAIC0yMTU1
LDIyICsyNTg0LDI0IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLyAgICAgICAgICAgICAgICAg
ICAgIFRoZSBuZXdseSBjcmVhdGVkIFRlc3RJbmZvIGluc3RhbmNlIHdpbGwgYXNzdW1lCiAvLyAg
ICAgICAgICAgICAgICAgICAgIG93bmVyc2hpcCBvZiB0aGUgZmFjdG9yeSBvYmplY3QuCiBUZXN0
SW5mbyogTWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8oCi0gICAgY29uc3QgY2hhciogdGVzdF9jYXNl
X25hbWUsIGNvbnN0IGNoYXIqIG5hbWUsCi0gICAgY29uc3QgY2hhciogdGVzdF9jYXNlX2NvbW1l
bnQsIGNvbnN0IGNoYXIqIGNvbW1lbnQsCisgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUs
CisgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICBjb25zdCBjaGFyKiB0eXBlX3BhcmFtLAorICAg
IGNvbnN0IGNoYXIqIHZhbHVlX3BhcmFtLAorICAgIENvZGVMb2NhdGlvbiBjb2RlX2xvY2F0aW9u
LAogICAgIFR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkLAogICAgIFNldFVwVGVzdENhc2VGdW5jIHNl
dF91cF90YywKICAgICBUZWFyRG93blRlc3RDYXNlRnVuYyB0ZWFyX2Rvd25fdGMsCiAgICAgVGVz
dEZhY3RvcnlCYXNlKiBmYWN0b3J5KSB7CiAgIFRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQot
ICAgICAgbmV3IFRlc3RJbmZvKHRlc3RfY2FzZV9uYW1lLCBuYW1lLCB0ZXN0X2Nhc2VfY29tbWVu
dCwgY29tbWVudCwKLSAgICAgICAgICAgICAgICAgICBmaXh0dXJlX2NsYXNzX2lkLCBmYWN0b3J5
KTsKKyAgICAgIG5ldyBUZXN0SW5mbyh0ZXN0X2Nhc2VfbmFtZSwgbmFtZSwgdHlwZV9wYXJhbSwg
dmFsdWVfcGFyYW0sCisgICAgICAgICAgICAgICAgICAgY29kZV9sb2NhdGlvbiwgZml4dHVyZV9j
bGFzc19pZCwgZmFjdG9yeSk7CiAgIEdldFVuaXRUZXN0SW1wbCgpLT5BZGRUZXN0SW5mbyhzZXRf
dXBfdGMsIHRlYXJfZG93bl90YywgdGVzdF9pbmZvKTsKICAgcmV0dXJuIHRlc3RfaW5mbzsKIH0K
IAotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiB2b2lkIFJlcG9ydEludmFsaWRUZXN0Q2FzZVR5
cGUoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbikgewogICBNZXNzYWdlIGVycm9y
czsKICAgZXJyb3JzCiAgICAgICA8PCAiQXR0ZW1wdGVkIHJlZGVmaW5pdGlvbiBvZiB0ZXN0IGNh
c2UgIiA8PCB0ZXN0X2Nhc2VfbmFtZSA8PCAiLlxuIgpAQCAtMjE4Miw0OCArMjYxMywxMiBAQCB2
b2lkIFJlcG9ydEludmFsaWRUZXN0Q2FzZVR5cGUoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUs
CiAgICAgICA8PCAicHJvYmFibHkgcmVuYW1lIG9uZSBvZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhl
IHRlc3RzIGludG8gZGlmZmVyZW50XG4iCiAgICAgICA8PCAidGVzdCBjYXNlcy4iOwogCi0gIGZw
cmludGYoc3RkZXJyLCAiJXMgJXMiLCBGb3JtYXRGaWxlTG9jYXRpb24oZmlsZSwgbGluZSkuY19z
dHIoKSwKLSAgICAgICAgICBlcnJvcnMuR2V0U3RyaW5nKCkuY19zdHIoKSk7CisgIEdURVNUX0xP
R18oRVJST1IpIDw8IEZvcm1hdEZpbGVMb2NhdGlvbihjb2RlX2xvY2F0aW9uLmZpbGUuY19zdHIo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVfbG9jYXRp
b24ubGluZSkKKyAgICAgICAgICAgICAgICAgICAgPDwgIiAiIDw8IGVycm9ycy5HZXRTdHJpbmco
KTsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQogfSAgLy8gbmFtZXNwYWNl
IGludGVybmFsCiAKLS8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBuYW1lLgotY29uc3QgY2hhciog
VGVzdEluZm86OnRlc3RfY2FzZV9uYW1lKCkgY29uc3QgewotICByZXR1cm4gaW1wbF8tPnRlc3Rf
Y2FzZV9uYW1lKCk7Ci19Ci0KLS8vIFJldHVybnMgdGhlIHRlc3QgbmFtZS4KLWNvbnN0IGNoYXIq
IFRlc3RJbmZvOjpuYW1lKCkgY29uc3QgewotICByZXR1cm4gaW1wbF8tPm5hbWUoKTsKLX0KLQot
Ly8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIGNvbW1lbnQuCi1jb25zdCBjaGFyKiBUZXN0SW5mbzo6
dGVzdF9jYXNlX2NvbW1lbnQoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBsXy0+dGVzdF9jYXNlX2Nv
bW1lbnQoKTsKLX0KLQotLy8gUmV0dXJucyB0aGUgdGVzdCBjb21tZW50LgotY29uc3QgY2hhciog
VGVzdEluZm86OmNvbW1lbnQoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBsXy0+Y29tbWVudCgpOwot
fQotCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IHNob3VsZCBydW4uCi1ib29sIFRlc3RJ
bmZvOjpzaG91bGRfcnVuKCkgY29uc3QgeyByZXR1cm4gaW1wbF8tPnNob3VsZF9ydW4oKTsgfQot
Ci0vLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IG1hdGNoZXMgdGhlIHVzZXItc3BlY2lmaWVk
IGZpbHRlci4KLWJvb2wgVGVzdEluZm86Om1hdGNoZXNfZmlsdGVyKCkgY29uc3QgeyByZXR1cm4g
aW1wbF8tPm1hdGNoZXNfZmlsdGVyKCk7IH0KLQotLy8gUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRo
ZSB0ZXN0LgotY29uc3QgVGVzdFJlc3VsdCogVGVzdEluZm86OnJlc3VsdCgpIGNvbnN0IHsgcmV0
dXJuIGltcGxfLT5yZXN1bHQoKTsgfQotCi0vLyBJbmNyZW1lbnRzIHRoZSBudW1iZXIgb2YgZGVh
dGggdGVzdHMgZW5jb3VudGVyZWQgaW4gdGhpcyB0ZXN0IHNvCi0vLyBmYXIuCi1pbnQgVGVzdElu
Zm86OmluY3JlbWVudF9kZWF0aF90ZXN0X2NvdW50KCkgewotICByZXR1cm4gaW1wbF8tPnJlc3Vs
dCgpLT5pbmNyZW1lbnRfZGVhdGhfdGVzdF9jb3VudCgpOwotfQotCiBuYW1lc3BhY2UgewogCiAv
LyBBIHByZWRpY2F0ZSB0aGF0IGNoZWNrcyB0aGUgdGVzdCBuYW1lIG9mIGEgVGVzdEluZm8gYWdh
aW5zdCBhIGtub3duCkBAIC0yMjQ0LDExICsyNjM5LDExIEBAIGNsYXNzIFRlc3ROYW1lSXMgewog
CiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgbmFtZSBvZiB0ZXN0X2luZm8gbWF0Y2hl
cyBuYW1lXy4KICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKSBj
b25zdCB7Ci0gICAgcmV0dXJuIHRlc3RfaW5mbyAmJiBpbnRlcm5hbDo6U3RyaW5nKHRlc3RfaW5m
by0+bmFtZSgpKS5Db21wYXJlKG5hbWVfKSA9PSAwOworICAgIHJldHVybiB0ZXN0X2luZm8gJiYg
dGVzdF9pbmZvLT5uYW1lKCkgPT0gbmFtZV87CiAgIH0KIAogIHByaXZhdGU6Ci0gIGludGVybmFs
OjpTdHJpbmcgbmFtZV87CisgIHN0ZDo6c3RyaW5nIG5hbWVfOwogfTsKIAogfSAgLy8gbmFtZXNw
YWNlCkBAIC0yMjU5LDc4ICsyNjU0LDYwIEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLyBhbmQg
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgaW50byByZWd1bGFyIHRlc3RzIGFuZCByZWdpc3RlcnMg
dGhvc2UuCiAvLyBUaGlzIHdpbGwgYmUgZG9uZSBqdXN0IG9uY2UgZHVyaW5nIHRoZSBwcm9ncmFt
IHJ1bnRpbWUuCiB2b2lkIFVuaXRUZXN0SW1wbDo6UmVnaXN0ZXJQYXJhbWV0ZXJpemVkVGVzdHMo
KSB7Ci0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgaWYgKCFwYXJhbWV0ZXJpemVkX3Rlc3Rz
X3JlZ2lzdGVyZWRfKSB7CiAgICAgcGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5Xy5SZWdpc3Rl
clRlc3RzKCk7CiAgICAgcGFyYW1ldGVyaXplZF90ZXN0c19yZWdpc3RlcmVkXyA9IHRydWU7CiAg
IH0KLSNlbmRpZgogfQogCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKwogLy8gQ3JlYXRlcyB0
aGUgdGVzdCBvYmplY3QsIHJ1bnMgaXQsIHJlY29yZHMgaXRzIHJlc3VsdCwgYW5kIHRoZW4KIC8v
IGRlbGV0ZXMgaXQuCi12b2lkIFRlc3RJbmZvSW1wbDo6UnVuKCkgewordm9pZCBUZXN0SW5mbzo6
UnVuKCkgewogICBpZiAoIXNob3VsZF9ydW5fKSByZXR1cm47CiAKICAgLy8gVGVsbHMgVW5pdFRl
c3Qgd2hlcmUgdG8gc3RvcmUgdGVzdCByZXN1bHQuCi0gIFVuaXRUZXN0SW1wbCogY29uc3QgaW1w
bCA9IGludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKTsKLSAgaW1wbC0+c2V0X2N1cnJlbnRfdGVz
dF9pbmZvKHBhcmVudF8pOworICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0g
aW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpOworICBpbXBsLT5zZXRfY3VycmVudF90ZXN0X2lu
Zm8odGhpcyk7CiAKICAgVGVzdEV2ZW50TGlzdGVuZXIqIHJlcGVhdGVyID0gVW5pdFRlc3Q6Okdl
dEluc3RhbmNlKCktPmxpc3RlbmVycygpLnJlcGVhdGVyKCk7CiAKICAgLy8gTm90aWZpZXMgdGhl
IHVuaXQgdGVzdCBldmVudCBsaXN0ZW5lcnMgdGhhdCBhIHRlc3QgaXMgYWJvdXQgdG8gc3RhcnQu
Ci0gIHJlcGVhdGVyLT5PblRlc3RTdGFydCgqcGFyZW50Xyk7CisgIHJlcGVhdGVyLT5PblRlc3RT
dGFydCgqdGhpcyk7CiAKLSAgY29uc3QgVGltZUluTWlsbGlzIHN0YXJ0ID0gR2V0VGltZUluTWls
bGlzKCk7CisgIGNvbnN0IFRpbWVJbk1pbGxpcyBzdGFydCA9IGludGVybmFsOjpHZXRUaW1lSW5N
aWxsaXMoKTsKIAogICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdH
VGVzdCgpOwotI2lmIEdURVNUX0hBU19TRUgKLSAgLy8gQ2F0Y2ggU0VILXN0eWxlIGV4Y2VwdGlv
bnMuCi0gIFRlc3QqIHRlc3QgPSBOVUxMOwotCi0gIF9fdHJ5IHsKLSAgICAvLyBDcmVhdGVzIHRo
ZSB0ZXN0IG9iamVjdC4KLSAgICB0ZXN0ID0gZmFjdG9yeV8tPkNyZWF0ZVRlc3QoKTsKLSAgfSBf
X2V4Y2VwdChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpHVGVzdFNob3VsZFByb2Nlc3NTRUgo
Ci0gICAgICBHZXRFeGNlcHRpb25Db2RlKCkpKSB7Ci0gICAgQWRkRXhjZXB0aW9uVGhyb3duRmFp
bHVyZShHZXRFeGNlcHRpb25Db2RlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
dGhlIHRlc3QgZml4dHVyZSdzIGNvbnN0cnVjdG9yIik7Ci0gICAgcmV0dXJuOwotICB9Ci0jZWxz
ZSAgLy8gV2UgYXJlIG9uIGEgY29tcGlsZXIgb3IgcGxhdGZvcm0gdGhhdCBkb2Vzbid0IHN1cHBv
cnQgU0VILgotCi0gIC8vIFRPRE8od2FuKTogSWYgdGVzdC0+UnVuKCkgdGhyb3dzLCB0ZXN0IHdv
bid0IGJlIGRlbGV0ZWQuICBUaGlzIGlzCi0gIC8vIG5vdCBhIHByb2JsZW0gbm93IGFzIHdlIGRv
bid0IHVzZSBleGNlcHRpb25zLiAgSWYgd2Ugd2VyZSB0bwotICAvLyBlbmFibGUgZXhjZXB0aW9u
cywgd2Ugc2hvdWxkIHJldmlzZSB0aGUgZm9sbG93aW5nIHRvIGJlCi0gIC8vIGV4Y2VwdGlvbi1z
YWZlLgogCiAgIC8vIENyZWF0ZXMgdGhlIHRlc3Qgb2JqZWN0LgotICBUZXN0KiB0ZXN0ID0gZmFj
dG9yeV8tPkNyZWF0ZVRlc3QoKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAorICBUZXN0KiBj
b25zdCB0ZXN0ID0gaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVk
KAorICAgICAgZmFjdG9yeV8sICZpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlOjpDcmVhdGVUZXN0
LAorICAgICAgInRoZSB0ZXN0IGZpeHR1cmUncyBjb25zdHJ1Y3RvciIpOwogCi0gIC8vIFJ1bnMg
dGhlIHRlc3Qgb25seSBpZiB0aGUgY29uc3RydWN0b3Igb2YgdGhlIHRlc3QgZml4dHVyZSBkaWRu
J3QKLSAgLy8gZ2VuZXJhdGUgYSBmYXRhbCBmYWlsdXJlLgorICAvLyBSdW5zIHRoZSB0ZXN0IGlm
IHRoZSBjb25zdHJ1Y3RvciBkaWRuJ3QgZ2VuZXJhdGUgYSBmYXRhbCBmYWlsdXJlLgorICAvLyBO
b3RlIHRoYXQgdGhlIG9iamVjdCB3aWxsIG5vdCBiZSBudWxsCiAgIGlmICghVGVzdDo6SGFzRmF0
YWxGYWlsdXJlKCkpIHsKKyAgICAvLyBUaGlzIGRvZXNuJ3QgdGhyb3cgYXMgYWxsIHVzZXIgY29k
ZSB0aGF0IGNhbiB0aHJvdyBhcmUgd3JhcHBlZCBpbnRvCisgICAgLy8gZXhjZXB0aW9uIGhhbmRs
aW5nIGNvZGUuCiAgICAgdGVzdC0+UnVuKCk7CiAgIH0KIAotICAvLyBEZWxldGVzIHRoZSB0ZXN0
IG9iamVjdC4KLSAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rl
c3QoKTsKLSAgZGVsZXRlIHRlc3Q7Ci0gIHRlc3QgPSBOVUxMOworICAgIC8vIERlbGV0ZXMgdGhl
IHRlc3Qgb2JqZWN0LgorICAgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVh
dmluZ0dUZXN0KCk7CisgICAgaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3Vw
cG9ydGVkKAorICAgICAgICB0ZXN0LCAmVGVzdDo6RGVsZXRlU2VsZl8sICJ0aGUgdGVzdCBmaXh0
dXJlJ3MgZGVzdHJ1Y3RvciIpOwogCi0gIHJlc3VsdF8uc2V0X2VsYXBzZWRfdGltZShHZXRUaW1l
SW5NaWxsaXMoKSAtIHN0YXJ0KTsKKyAgcmVzdWx0Xy5zZXRfZWxhcHNlZF90aW1lKGludGVybmFs
OjpHZXRUaW1lSW5NaWxsaXMoKSAtIHN0YXJ0KTsKIAogICAvLyBOb3RpZmllcyB0aGUgdW5pdCB0
ZXN0IGV2ZW50IGxpc3RlbmVyIHRoYXQgYSB0ZXN0IGhhcyBqdXN0IGZpbmlzaGVkLgotICByZXBl
YXRlci0+T25UZXN0RW5kKCpwYXJlbnRfKTsKKyAgcmVwZWF0ZXItPk9uVGVzdEVuZCgqdGhpcyk7
CiAKICAgLy8gVGVsbHMgVW5pdFRlc3QgdG8gc3RvcCBhc3NvY2lhdGluZyBhc3NlcnRpb24gcmVz
dWx0cyB0byB0aGlzCiAgIC8vIHRlc3QuCiAgIGltcGwtPnNldF9jdXJyZW50X3Rlc3RfaW5mbyhO
VUxMKTsKIH0KIAotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KIC8vIGNsYXNzIFRlc3RDYXNl
CiAKIC8vIEdldHMgdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIHRlc3RzIGluIHRoaXMgdGVzdCBj
YXNlLgpAQCAtMjM0MywxMCArMjcyMCwyMSBAQCBpbnQgVGVzdENhc2U6OmZhaWxlZF90ZXN0X2Nv
dW50KCkgY29uc3QgewogICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlzdF8sIFRlc3RGYWls
ZWQpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxs
IGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0LgoraW50IFRlc3RDYXNlOjpyZXBvcnRhYmxl
X2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBDb3VudElmKHRlc3RfaW5m
b19saXN0XywgVGVzdFJlcG9ydGFibGVEaXNhYmxlZCk7Cit9CisKKy8vIEdldHMgdGhlIG51bWJl
ciBvZiBkaXNhYmxlZCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KIGludCBUZXN0Q2FzZTo6ZGlz
YWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJuIENvdW50SWYodGVzdF9pbmZvX2xp
c3RfLCBUZXN0RGlzYWJsZWQpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8g
YmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KK2ludCBUZXN0Q2FzZTo6cmVwb3J0YWJsZV90
ZXN0X2NvdW50KCkgY29uc3QgeworICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlzdF8sIFRl
c3RSZXBvcnRhYmxlKTsKK30KKwogLy8gR2V0IHRoZSBudW1iZXIgb2YgdGVzdHMgaW4gdGhpcyB0
ZXN0IGNhc2UgdGhhdCBzaG91bGQgcnVuLgogaW50IFRlc3RDYXNlOjp0ZXN0X3RvX3J1bl9jb3Vu
dCgpIGNvbnN0IHsKICAgcmV0dXJuIENvdW50SWYodGVzdF9pbmZvX2xpc3RfLCBTaG91bGRSdW5U
ZXN0KTsKQEAgLTIzNjIsMTMgKzI3NTAsMTUgQEAgaW50IFRlc3RDYXNlOjp0b3RhbF90ZXN0X2Nv
dW50KCkgY29uc3QgewogLy8gQXJndW1lbnRzOgogLy8KIC8vICAgbmFtZTogICAgICAgICBuYW1l
IG9mIHRoZSB0ZXN0IGNhc2UKKy8vICAgYV90eXBlX3BhcmFtOiB0aGUgbmFtZSBvZiB0aGUgdGVz
dCBjYXNlJ3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYKKy8vICAgICAgICAgICAgICAgICB0
aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZS4KIC8v
ICAgc2V0X3VwX3RjOiAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhl
IHRlc3QgY2FzZQogLy8gICB0ZWFyX2Rvd25fdGM6IHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRo
YXQgdGVhcnMgZG93biB0aGUgdGVzdCBjYXNlCi1UZXN0Q2FzZTo6VGVzdENhc2UoY29uc3QgY2hh
ciogYV9uYW1lLCBjb25zdCBjaGFyKiBhX2NvbW1lbnQsCitUZXN0Q2FzZTo6VGVzdENhc2UoY29u
c3QgY2hhciogYV9uYW1lLCBjb25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sCiAgICAgICAgICAgICAg
ICAgICAgVGVzdDo6U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAgICAgICAgICAgICAg
ICAgIFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YykKICAgICA6IG5hbWVf
KGFfbmFtZSksCi0gICAgICBjb21tZW50XyhhX2NvbW1lbnQpLAorICAgICAgdHlwZV9wYXJhbV8o
YV90eXBlX3BhcmFtID8gbmV3IHN0ZDo6c3RyaW5nKGFfdHlwZV9wYXJhbSkgOiBOVUxMKSwKICAg
ICAgIHNldF91cF90Y18oc2V0X3VwX3RjKSwKICAgICAgIHRlYXJfZG93bl90Y18odGVhcl9kb3du
X3RjKSwKICAgICAgIHNob3VsZF9ydW5fKGZhbHNlKSwKQEAgLTI0MTMsNDUgKzI4MDMsMjcgQEAg
dm9pZCBUZXN0Q2FzZTo6UnVuKCkgewogCiAgIHJlcGVhdGVyLT5PblRlc3RDYXNlU3RhcnQoKnRo
aXMpOwogICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgp
OwotICBzZXRfdXBfdGNfKCk7CisgIGludGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJ
ZlN1cHBvcnRlZCgKKyAgICAgIHRoaXMsICZUZXN0Q2FzZTo6UnVuU2V0VXBUZXN0Q2FzZSwgIlNl
dFVwVGVzdENhc2UoKSIpOwogCiAgIGNvbnN0IGludGVybmFsOjpUaW1lSW5NaWxsaXMgc3RhcnQg
PSBpbnRlcm5hbDo6R2V0VGltZUluTWlsbGlzKCk7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG90
YWxfdGVzdF9jb3VudCgpOyBpKyspIHsKLSAgICBHZXRNdXRhYmxlVGVzdEluZm8oaSktPmltcGwo
KS0+UnVuKCk7CisgICAgR2V0TXV0YWJsZVRlc3RJbmZvKGkpLT5SdW4oKTsKICAgfQogICBlbGFw
c2VkX3RpbWVfID0gaW50ZXJuYWw6OkdldFRpbWVJbk1pbGxpcygpIC0gc3RhcnQ7CiAKICAgaW1w
bC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgdGVhcl9k
b3duX3RjXygpOworICBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0
ZWQoCisgICAgICB0aGlzLCAmVGVzdENhc2U6OlJ1blRlYXJEb3duVGVzdENhc2UsICJUZWFyRG93
blRlc3RDYXNlKCkiKTsKKwogICByZXBlYXRlci0+T25UZXN0Q2FzZUVuZCgqdGhpcyk7CiAgIGlt
cGwtPnNldF9jdXJyZW50X3Rlc3RfY2FzZShOVUxMKTsKIH0KIAogLy8gQ2xlYXJzIHRoZSByZXN1
bHRzIG9mIGFsbCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KIHZvaWQgVGVzdENhc2U6OkNsZWFy
UmVzdWx0KCkgewotICBGb3JFYWNoKHRlc3RfaW5mb19saXN0XywgaW50ZXJuYWw6OlRlc3RJbmZv
SW1wbDo6Q2xlYXJUZXN0UmVzdWx0KTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0IHBh
c3NlZC4KLWJvb2wgVGVzdENhc2U6OlRlc3RQYXNzZWQoY29uc3QgVGVzdEluZm8gKiB0ZXN0X2lu
Zm8pIHsKLSAgY29uc3QgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbCogY29uc3QgaW1wbCA9IHRlc3Rf
aW5mby0+aW1wbCgpOwotICByZXR1cm4gaW1wbC0+c2hvdWxkX3J1bigpICYmIGltcGwtPnJlc3Vs
dCgpLT5QYXNzZWQoKTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0IGZhaWxlZC4KLWJv
b2wgVGVzdENhc2U6OlRlc3RGYWlsZWQoY29uc3QgVGVzdEluZm8gKiB0ZXN0X2luZm8pIHsKLSAg
Y29uc3QgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbCogY29uc3QgaW1wbCA9IHRlc3RfaW5mby0+aW1w
bCgpOwotICByZXR1cm4gaW1wbC0+c2hvdWxkX3J1bigpICYmIGltcGwtPnJlc3VsdCgpLT5GYWls
ZWQoKTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0IGlzIGRpc2FibGVkLgotYm9vbCBU
ZXN0Q2FzZTo6VGVzdERpc2FibGVkKGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKSB7Ci0gIHJl
dHVybiB0ZXN0X2luZm8tPmltcGwoKS0+aXNfZGlzYWJsZWQoKTsKLX0KLQotLy8gUmV0dXJucyB0
cnVlIGlmIHRoZSBnaXZlbiB0ZXN0IHNob3VsZCBydW4uCi1ib29sIFRlc3RDYXNlOjpTaG91bGRS
dW5UZXN0KGNvbnN0IFRlc3RJbmZvICp0ZXN0X2luZm8pIHsKLSAgcmV0dXJuIHRlc3RfaW5mby0+
aW1wbCgpLT5zaG91bGRfcnVuKCk7CisgIGFkX2hvY190ZXN0X3Jlc3VsdF8uQ2xlYXIoKTsKKyAg
Rm9yRWFjaCh0ZXN0X2luZm9fbGlzdF8sIFRlc3RJbmZvOjpDbGVhclRlc3RSZXN1bHQpOwogfQog
CiAvLyBTaHVmZmxlcyB0aGUgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCkBAIC0yNDcxLDIwICsy
ODQzLDIwIEBAIHZvaWQgVGVzdENhc2U6OlVuc2h1ZmZsZVRlc3RzKCkgewogLy8KIC8vIEZvcm1h
dENvdW50YWJsZU5vdW4oMSwgImZvcm11bGEiLCAiZm9ybXVsaSIpIHJldHVybnMgIjEgZm9ybXVs
YSIuCiAvLyBGb3JtYXRDb3VudGFibGVOb3VuKDUsICJib29rIiwgImJvb2tzIikgcmV0dXJucyAi
NSBib29rcyIuCi1zdGF0aWMgaW50ZXJuYWw6OlN0cmluZyBGb3JtYXRDb3VudGFibGVOb3VuKGlu
dCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqIHNpbmd1bGFyX2Zvcm0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBwbHVyYWxfZm9ybSkgewotICByZXR1cm4gaW50ZXJu
YWw6OlN0cmluZzo6Rm9ybWF0KCIlZCAlcyIsIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvdW50ID09IDEgPyBzaW5ndWxhcl9mb3JtIDogcGx1cmFsX2Zvcm0pOwor
c3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdENvdW50YWJsZU5vdW4oaW50IGNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIHNpbmd1bGFyX2Zv
cm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICog
cGx1cmFsX2Zvcm0pIHsKKyAgcmV0dXJuIGludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcoY291
bnQpICsgIiAiICsKKyAgICAgIChjb3VudCA9PSAxID8gc2luZ3VsYXJfZm9ybSA6IHBsdXJhbF9m
b3JtKTsKIH0KIAogLy8gRm9ybWF0cyB0aGUgY291bnQgb2YgdGVzdHMuCi1zdGF0aWMgaW50ZXJu
YWw6OlN0cmluZyBGb3JtYXRUZXN0Q291bnQoaW50IHRlc3RfY291bnQpIHsKK3N0YXRpYyBzdGQ6
OnN0cmluZyBGb3JtYXRUZXN0Q291bnQoaW50IHRlc3RfY291bnQpIHsKICAgcmV0dXJuIEZvcm1h
dENvdW50YWJsZU5vdW4odGVzdF9jb3VudCwgInRlc3QiLCAidGVzdHMiKTsKIH0KIAogLy8gRm9y
bWF0cyB0aGUgY291bnQgb2YgdGVzdCBjYXNlcy4KLXN0YXRpYyBpbnRlcm5hbDo6U3RyaW5nIEZv
cm1hdFRlc3RDYXNlQ291bnQoaW50IHRlc3RfY2FzZV9jb3VudCkgeworc3RhdGljIHN0ZDo6c3Ry
aW5nIEZvcm1hdFRlc3RDYXNlQ291bnQoaW50IHRlc3RfY2FzZV9jb3VudCkgewogICByZXR1cm4g
Rm9ybWF0Q291bnRhYmxlTm91bih0ZXN0X2Nhc2VfY291bnQsICJ0ZXN0IGNhc2UiLCAidGVzdCBj
YXNlcyIpOwogfQogCkBAIC0yNTA0LDEzICsyODc2LDE1IEBAIHN0YXRpYyBjb25zdCBjaGFyICog
VGVzdFBhcnRSZXN1bHRUeXBlVG9TdHJpbmcoVGVzdFBhcnRSZXN1bHQ6OlR5cGUgdHlwZSkgewog
I2Vsc2UKICAgICAgIHJldHVybiAiRmFpbHVyZVxuIjsKICNlbmRpZgorICAgIGRlZmF1bHQ6Cisg
ICAgICByZXR1cm4gIlVua25vd24gcmVzdWx0IHR5cGUiOwogICB9Ci0KLSAgcmV0dXJuICJVbmtu
b3duIHJlc3VsdCB0eXBlIjsKIH0KIAotLy8gUHJpbnRzIGEgVGVzdFBhcnRSZXN1bHQgdG8gYSBT
dHJpbmcuCi1zdGF0aWMgaW50ZXJuYWw6OlN0cmluZyBQcmludFRlc3RQYXJ0UmVzdWx0VG9TdHJp
bmcoCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBQcmludHMgYSBUZXN0UGFydFJlc3VsdCB0
byBhbiBzdGQ6OnN0cmluZy4KK3N0YXRpYyBzdGQ6OnN0cmluZyBQcmludFRlc3RQYXJ0UmVzdWx0
VG9TdHJpbmcoCiAgICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsK
ICAgcmV0dXJuIChNZXNzYWdlKCkKICAgICAgICAgICA8PCBpbnRlcm5hbDo6Rm9ybWF0RmlsZUxv
Y2F0aW9uKHRlc3RfcGFydF9yZXN1bHQuZmlsZV9uYW1lKCksCkBAIC0yNTIxLDcgKzI4OTUsNyBA
QCBzdGF0aWMgaW50ZXJuYWw6OlN0cmluZyBQcmludFRlc3RQYXJ0UmVzdWx0VG9TdHJpbmcoCiAK
IC8vIFByaW50cyBhIFRlc3RQYXJ0UmVzdWx0Lgogc3RhdGljIHZvaWQgUHJpbnRUZXN0UGFydFJl
c3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgewotICBjb25zdCBp
bnRlcm5hbDo6U3RyaW5nJiByZXN1bHQgPQorICBjb25zdCBzdGQ6OnN0cmluZyYgcmVzdWx0ID0K
ICAgICAgIFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmluZyh0ZXN0X3BhcnRfcmVzdWx0KTsKICAg
cHJpbnRmKCIlc1xuIiwgcmVzdWx0LmNfc3RyKCkpOwogICBmZmx1c2goc3Rkb3V0KTsKQEAgLTI1
NDAsOCArMjkxNCw2IEBAIHN0YXRpYyB2b2lkIFByaW50VGVzdFBhcnRSZXN1bHQoY29uc3QgVGVz
dFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKIAogLy8gY2xhc3MgUHJldHR5VW5pdFRl
c3RSZXN1bHRQcmludGVyCiAKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KIGVudW0gR1Rlc3RDb2xv
ciB7CiAgIENPTE9SX0RFRkFVTFQsCiAgIENPTE9SX1JFRCwKQEAgLTI1NDksMTAgKzI5MjEsMTEg
QEAgZW51bSBHVGVzdENvbG9yIHsKICAgQ09MT1JfWUVMTE9XCiB9OwogCi0jaWYgR1RFU1RfT1Nf
V0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyNpZiBHVEVTVF9PU19XSU5ET1dT
ICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRSAmJiBcCisgICAgIUdURVNUX09TX1dJTkRPV1Nf
UEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQgJiYgIUdURVNUX09TX1dJTkRPV1NfTUlOR1cK
IAogLy8gUmV0dXJucyB0aGUgY2hhcmFjdGVyIGF0dHJpYnV0ZSBmb3IgdGhlIGdpdmVuIGNvbG9y
LgotV09SRCBHZXRDb2xvckF0dHJpYnV0ZShHVGVzdENvbG9yIGNvbG9yKSB7CitzdGF0aWMgV09S
RCBHZXRDb2xvckF0dHJpYnV0ZShHVGVzdENvbG9yIGNvbG9yKSB7CiAgIHN3aXRjaCAoY29sb3Ip
IHsKICAgICBjYXNlIENPTE9SX1JFRDogICAgcmV0dXJuIEZPUkVHUk9VTkRfUkVEOwogICAgIGNh
c2UgQ09MT1JfR1JFRU46ICByZXR1cm4gRk9SRUdST1VORF9HUkVFTjsKQEAgLTI1NjEsMTEgKzI5
MzQsNDIgQEAgV09SRCBHZXRDb2xvckF0dHJpYnV0ZShHVGVzdENvbG9yIGNvbG9yKSB7CiAgIH0K
IH0KIAorc3RhdGljIGludCBHZXRCaXRPZmZzZXQoV09SRCBjb2xvcl9tYXNrKSB7CisgIGlmIChj
b2xvcl9tYXNrID09IDApIHJldHVybiAwOworCisgIGludCBiaXRPZmZzZXQgPSAwOworICB3aGls
ZSAoKGNvbG9yX21hc2sgJiAxKSA9PSAwKSB7CisgICAgY29sb3JfbWFzayA+Pj0gMTsKKyAgICAr
K2JpdE9mZnNldDsKKyAgfQorICByZXR1cm4gYml0T2Zmc2V0OworfQorCitzdGF0aWMgV09SRCBH
ZXROZXdDb2xvcihHVGVzdENvbG9yIGNvbG9yLCBXT1JEIG9sZF9jb2xvcl9hdHRycykgeworICAv
LyBMZXQncyByZXVzZSB0aGUgQkcKKyAgc3RhdGljIGNvbnN0IFdPUkQgYmFja2dyb3VuZF9tYXNr
ID0gQkFDS0dST1VORF9CTFVFIHwgQkFDS0dST1VORF9HUkVFTiB8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEJBQ0tHUk9VTkRfUkVEIHwgQkFDS0dST1VORF9JTlRFTlNJ
VFk7CisgIHN0YXRpYyBjb25zdCBXT1JEIGZvcmVncm91bmRfbWFzayA9IEZPUkVHUk9VTkRfQkxV
RSB8IEZPUkVHUk9VTkRfR1JFRU4gfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGT1JFR1JPVU5EX1JFRCB8IEZPUkVHUk9VTkRfSU5URU5TSVRZOworICBjb25zdCBXT1JE
IGV4aXN0aW5nX2JnID0gb2xkX2NvbG9yX2F0dHJzICYgYmFja2dyb3VuZF9tYXNrOworCisgIFdP
UkQgbmV3X2NvbG9yID0KKyAgICAgIEdldENvbG9yQXR0cmlidXRlKGNvbG9yKSB8IGV4aXN0aW5n
X2JnIHwgRk9SRUdST1VORF9JTlRFTlNJVFk7CisgIHN0YXRpYyBjb25zdCBpbnQgYmdfYml0T2Zm
c2V0ID0gR2V0Qml0T2Zmc2V0KGJhY2tncm91bmRfbWFzayk7CisgIHN0YXRpYyBjb25zdCBpbnQg
ZmdfYml0T2Zmc2V0ID0gR2V0Qml0T2Zmc2V0KGZvcmVncm91bmRfbWFzayk7CisKKyAgaWYgKCgo
bmV3X2NvbG9yICYgYmFja2dyb3VuZF9tYXNrKSA+PiBiZ19iaXRPZmZzZXQpID09CisgICAgICAo
KG5ld19jb2xvciAmIGZvcmVncm91bmRfbWFzaykgPj4gZmdfYml0T2Zmc2V0KSkgeworICAgIG5l
d19jb2xvciBePSBGT1JFR1JPVU5EX0lOVEVOU0lUWTsgIC8vIGludmVydCBpbnRlbnNpdHkKKyAg
fQorICByZXR1cm4gbmV3X2NvbG9yOworfQorCiAjZWxzZQogCiAvLyBSZXR1cm5zIHRoZSBBTlNJ
IGNvbG9yIGNvZGUgZm9yIHRoZSBnaXZlbiBjb2xvci4gIENPTE9SX0RFRkFVTFQgaXMKIC8vIGFu
IGludmFsaWQgaW5wdXQuCi1jb25zdCBjaGFyKiBHZXRBbnNpQ29sb3JDb2RlKEdUZXN0Q29sb3Ig
Y29sb3IpIHsKK3N0YXRpYyBjb25zdCBjaGFyKiBHZXRBbnNpQ29sb3JDb2RlKEdUZXN0Q29sb3Ig
Y29sb3IpIHsKICAgc3dpdGNoIChjb2xvcikgewogICAgIGNhc2UgQ09MT1JfUkVEOiAgICAgcmV0
dXJuICIxIjsKICAgICBjYXNlIENPTE9SX0dSRUVOOiAgIHJldHVybiAiMiI7CkBAIC0yNTgxLDcg
KzI5ODUsNyBAQCBib29sIFNob3VsZFVzZUNvbG9yKGJvb2wgc3Rkb3V0X2lzX3R0eSkgewogICBj
b25zdCBjaGFyKiBjb25zdCBndGVzdF9jb2xvciA9IEdURVNUX0ZMQUcoY29sb3IpLmNfc3RyKCk7
CiAKICAgaWYgKFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFscyhndGVzdF9jb2xv
ciwgImF1dG8iKSkgewotI2lmIEdURVNUX09TX1dJTkRPV1MKKyNpZiBHVEVTVF9PU19XSU5ET1dT
ICYmICFHVEVTVF9PU19XSU5ET1dTX01JTkdXCiAgICAgLy8gT24gV2luZG93cyB0aGUgVEVSTSB2
YXJpYWJsZSBpcyB1c3VhbGx5IG5vdCBzZXQsIGJ1dCB0aGUKICAgICAvLyBjb25zb2xlIHRoZXJl
IGRvZXMgc3VwcG9ydCBjb2xvcnMuCiAgICAgcmV0dXJuIHN0ZG91dF9pc190dHk7CkBAIC0yNTky
LDYgKzI5OTYsMTIgQEAgYm9vbCBTaG91bGRVc2VDb2xvcihib29sIHN0ZG91dF9pc190dHkpIHsK
ICAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJ4dGVybSIpIHx8CiAgICAgICAg
IFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAieHRlcm0tY29sb3IiKSB8fAogICAgICAgICBT
dHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgInh0ZXJtLTI1NmNvbG9yIikgfHwKKyAgICAgICAg
U3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJzY3JlZW4iKSB8fAorICAgICAgICBTdHJpbmc6
OkNTdHJpbmdFcXVhbHModGVybSwgInNjcmVlbi0yNTZjb2xvciIpIHx8CisgICAgICAgIFN0cmlu
Zzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAidG11eCIpIHx8CisgICAgICAgIFN0cmluZzo6Q1N0cmlu
Z0VxdWFscyh0ZXJtLCAidG11eC0yNTZjb2xvciIpIHx8CisgICAgICAgIFN0cmluZzo6Q1N0cmlu
Z0VxdWFscyh0ZXJtLCAicnh2dC11bmljb2RlIikgfHwKKyAgICAgICAgU3RyaW5nOjpDU3RyaW5n
RXF1YWxzKHRlcm0sICJyeHZ0LXVuaWNvZGUtMjU2Y29sb3IiKSB8fAogICAgICAgICBTdHJpbmc6
OkNTdHJpbmdFcXVhbHModGVybSwgImxpbnV4IikgfHwKICAgICAgICAgU3RyaW5nOjpDU3RyaW5n
RXF1YWxzKHRlcm0sICJjeWd3aW4iKTsKICAgICByZXR1cm4gc3Rkb3V0X2lzX3R0eSAmJiB0ZXJt
X3N1cHBvcnRzX2NvbG9yOwpAQCAtMjYxMSwxMiArMzAyMSwxMyBAQCBib29sIFNob3VsZFVzZUNv
bG9yKGJvb2wgc3Rkb3V0X2lzX3R0eSkgewogLy8gY2Fubm90IHNpbXBseSBlbWl0IHNwZWNpYWwg
Y2hhcmFjdGVycyBhbmQgaGF2ZSB0aGUgdGVybWluYWwgY2hhbmdlIGNvbG9ycy4KIC8vIFRoaXMg
cm91dGluZSBtdXN0IGFjdHVhbGx5IGVtaXQgdGhlIGNoYXJhY3RlcnMgcmF0aGVyIHRoYW4gcmV0
dXJuIGEgc3RyaW5nCiAvLyB0aGF0IHdvdWxkIGJlIGNvbG9yZWQgd2hlbiBwcmludGVkLCBhcyBj
YW4gYmUgZG9uZSBvbiBMaW51eC4KLXZvaWQgQ29sb3JlZFByaW50ZihHVGVzdENvbG9yIGNvbG9y
LCBjb25zdCBjaGFyKiBmbXQsIC4uLikgeworc3RhdGljIHZvaWQgQ29sb3JlZFByaW50ZihHVGVz
dENvbG9yIGNvbG9yLCBjb25zdCBjaGFyKiBmbXQsIC4uLikgewogICB2YV9saXN0IGFyZ3M7CiAg
IHZhX3N0YXJ0KGFyZ3MsIGZtdCk7CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRSB8fCBH
VEVTVF9PU19TWU1CSUFOIHx8IEdURVNUX09TX1pPUwotICBjb25zdCBib29sIHVzZV9jb2xvciA9
IGZhbHNlOworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNUX09TX1NZTUJJQU4g
fHwgR1RFU1RfT1NfWk9TIHx8IFwKKyAgICBHVEVTVF9PU19JT1MgfHwgR1RFU1RfT1NfV0lORE9X
U19QSE9ORSB8fCBHVEVTVF9PU19XSU5ET1dTX1JUCisgIGNvbnN0IGJvb2wgdXNlX2NvbG9yID0g
QWx3YXlzRmFsc2UoKTsKICNlbHNlCiAgIHN0YXRpYyBjb25zdCBib29sIGluX2NvbG9yX21vZGUg
PQogICAgICAgU2hvdWxkVXNlQ29sb3IocG9zaXg6OklzQVRUWShwb3NpeDo6RmlsZU5vKHN0ZG91
dCkpICE9IDApOwpAQCAtMjYzMCwyMCArMzA0MSwyMiBAQCB2b2lkIENvbG9yZWRQcmludGYoR1Rl
c3RDb2xvciBjb2xvciwgY29uc3QgY2hhciogZm10LCAuLi4pIHsKICAgICByZXR1cm47CiAgIH0K
IAotI2lmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjaWYg
R1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgXAorICAgICFH
VEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUICYmICFHVEVTVF9P
U19XSU5ET1dTX01JTkdXCiAgIGNvbnN0IEhBTkRMRSBzdGRvdXRfaGFuZGxlID0gR2V0U3RkSGFu
ZGxlKFNURF9PVVRQVVRfSEFORExFKTsKIAogICAvLyBHZXRzIHRoZSBjdXJyZW50IHRleHQgY29s
b3IuCiAgIENPTlNPTEVfU0NSRUVOX0JVRkZFUl9JTkZPIGJ1ZmZlcl9pbmZvOwogICBHZXRDb25z
b2xlU2NyZWVuQnVmZmVySW5mbyhzdGRvdXRfaGFuZGxlLCAmYnVmZmVyX2luZm8pOwogICBjb25z
dCBXT1JEIG9sZF9jb2xvcl9hdHRycyA9IGJ1ZmZlcl9pbmZvLndBdHRyaWJ1dGVzOworICBjb25z
dCBXT1JEIG5ld19jb2xvciA9IEdldE5ld0NvbG9yKGNvbG9yLCBvbGRfY29sb3JfYXR0cnMpOwog
CiAgIC8vIFdlIG5lZWQgdG8gZmx1c2ggdGhlIHN0cmVhbSBidWZmZXJzIGludG8gdGhlIGNvbnNv
bGUgYmVmb3JlIGVhY2gKICAgLy8gU2V0Q29uc29sZVRleHRBdHRyaWJ1dGUgY2FsbCBsZXN0IGl0
IGFmZmVjdCB0aGUgdGV4dCB0aGF0IGlzIGFscmVhZHkKICAgLy8gcHJpbnRlZCBidXQgaGFzIG5v
dCB5ZXQgcmVhY2hlZCB0aGUgY29uc29sZS4KICAgZmZsdXNoKHN0ZG91dCk7Ci0gIFNldENvbnNv
bGVUZXh0QXR0cmlidXRlKHN0ZG91dF9oYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IEdldENvbG9yQXR0cmlidXRlKGNvbG9yKSB8IEZPUkVHUk9VTkRfSU5URU5TSVRZKTsKKyAgU2V0
Q29uc29sZVRleHRBdHRyaWJ1dGUoc3Rkb3V0X2hhbmRsZSwgbmV3X2NvbG9yKTsKKwogICB2cHJp
bnRmKGZtdCwgYXJncyk7CiAKICAgZmZsdXNoKHN0ZG91dCk7CkBAIC0yNjU3LDYgKzMwNzAsMjgg
QEAgdm9pZCBDb2xvcmVkUHJpbnRmKEdUZXN0Q29sb3IgY29sb3IsIGNvbnN0IGNoYXIqIGZtdCwg
Li4uKSB7CiAgIHZhX2VuZChhcmdzKTsKIH0KIAorLy8gVGV4dCBwcmludGVkIGluIEdvb2dsZSBU
ZXN0J3MgdGV4dCBvdXRwdXQgYW5kIC0tZ3Rlc3RfbGlzdF90ZXN0cworLy8gb3V0cHV0IHRvIGxh
YmVsIHRoZSB0eXBlIHBhcmFtZXRlciBhbmQgdmFsdWUgcGFyYW1ldGVyIGZvciBhIHRlc3QuCitz
dGF0aWMgY29uc3QgY2hhciBrVHlwZVBhcmFtTGFiZWxbXSA9ICJUeXBlUGFyYW0iOworc3RhdGlj
IGNvbnN0IGNoYXIga1ZhbHVlUGFyYW1MYWJlbFtdID0gIkdldFBhcmFtKCkiOworCitzdGF0aWMg
dm9pZCBQcmludEZ1bGxUZXN0Q29tbWVudElmUHJlc2VudChjb25zdCBUZXN0SW5mbyYgdGVzdF9p
bmZvKSB7CisgIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVfcGFyYW0gPSB0ZXN0X2luZm8udHlwZV9w
YXJhbSgpOworICBjb25zdCBjaGFyKiBjb25zdCB2YWx1ZV9wYXJhbSA9IHRlc3RfaW5mby52YWx1
ZV9wYXJhbSgpOworCisgIGlmICh0eXBlX3BhcmFtICE9IE5VTEwgfHwgdmFsdWVfcGFyYW0gIT0g
TlVMTCkgeworICAgIHByaW50ZigiLCB3aGVyZSAiKTsKKyAgICBpZiAodHlwZV9wYXJhbSAhPSBO
VUxMKSB7CisgICAgICBwcmludGYoIiVzID0gJXMiLCBrVHlwZVBhcmFtTGFiZWwsIHR5cGVfcGFy
YW0pOworICAgICAgaWYgKHZhbHVlX3BhcmFtICE9IE5VTEwpCisgICAgICAgIHByaW50ZigiIGFu
ZCAiKTsKKyAgICB9CisgICAgaWYgKHZhbHVlX3BhcmFtICE9IE5VTEwpIHsKKyAgICAgIHByaW50
ZigiJXMgPSAlcyIsIGtWYWx1ZVBhcmFtTGFiZWwsIHZhbHVlX3BhcmFtKTsKKyAgICB9CisgIH0K
K30KKwogLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBUZXN0RXZlbnRMaXN0ZW5lciBpbnRl
cmZhY2UuCiAvLwogLy8gQ2xhc3MgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyIGlzIGNvcHlh
YmxlLgpAQCAtMjY4NCw4ICszMTE5LDYgQEAgY2xhc3MgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmlu
dGVyIDogcHVibGljIFRlc3RFdmVudExpc3RlbmVyIHsKIAogIHByaXZhdGU6CiAgIHN0YXRpYyB2
b2lkIFByaW50RmFpbGVkVGVzdHMoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCk7Ci0KLSAgaW50
ZXJuYWw6OlN0cmluZyB0ZXN0X2Nhc2VfbmFtZV87CiB9OwogCiAgIC8vIEZpcmVkIGJlZm9yZSBl
YWNoIGl0ZXJhdGlvbiBvZiB0ZXN0cyBzdGFydHMuCkBAIC0yNjk4LDE1ICszMTMxLDE2IEBAIHZv
aWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RJdGVyYXRpb25TdGFydCgKIAog
ICAvLyBQcmludHMgdGhlIGZpbHRlciBpZiBpdCdzIG5vdCAqLiAgVGhpcyByZW1pbmRzIHRoZSB1
c2VyIHRoYXQgc29tZQogICAvLyB0ZXN0cyBtYXkgYmUgc2tpcHBlZC4KLSAgaWYgKCFpbnRlcm5h
bDo6U3RyaW5nOjpDU3RyaW5nRXF1YWxzKGZpbHRlciwga1VuaXZlcnNhbEZpbHRlcikpIHsKKyAg
aWYgKCFTdHJpbmc6OkNTdHJpbmdFcXVhbHMoZmlsdGVyLCBrVW5pdmVyc2FsRmlsdGVyKSkgewog
ICAgIENvbG9yZWRQcmludGYoQ09MT1JfWUVMTE9XLAogICAgICAgICAgICAgICAgICAgIk5vdGU6
ICVzIGZpbHRlciA9ICVzXG4iLCBHVEVTVF9OQU1FXywgZmlsdGVyKTsKICAgfQogCiAgIGlmIChp
bnRlcm5hbDo6U2hvdWxkU2hhcmQoa1Rlc3RUb3RhbFNoYXJkcywga1Rlc3RTaGFyZEluZGV4LCBm
YWxzZSkpIHsKKyAgICBjb25zdCBJbnQzMiBzaGFyZF9pbmRleCA9IEludDMyRnJvbUVudk9yRGll
KGtUZXN0U2hhcmRJbmRleCwgLTEpOwogICAgIENvbG9yZWRQcmludGYoQ09MT1JfWUVMTE9XLAot
ICAgICAgICAgICAgICAgICAgIk5vdGU6IFRoaXMgaXMgdGVzdCBzaGFyZCAlcyBvZiAlcy5cbiIs
Ci0gICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cG9zaXg6OkdldEVudihrVGVzdFNoYXJkSW5k
ZXgpLAorICAgICAgICAgICAgICAgICAgIk5vdGU6IFRoaXMgaXMgdGVzdCBzaGFyZCAlZCBvZiAl
cy5cbiIsCisgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHNoYXJkX2luZGV4KSAr
IDEsCiAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cG9zaXg6OkdldEVudihrVGVzdFRvdGFs
U2hhcmRzKSk7CiAgIH0KIApAQCAtMjczMSwyNyArMzE2NSwyMiBAQCB2b2lkIFByZXR0eVVuaXRU
ZXN0UmVzdWx0UHJpbnRlcjo6T25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0KAogfQogCiB2b2lkIFBy
ZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0Q2FzZVN0YXJ0KGNvbnN0IFRlc3RDYXNl
JiB0ZXN0X2Nhc2UpIHsKLSAgdGVzdF9jYXNlX25hbWVfID0gdGVzdF9jYXNlLm5hbWUoKTsKLSAg
Y29uc3QgaW50ZXJuYWw6OlN0cmluZyBjb3VudHMgPQorICBjb25zdCBzdGQ6OnN0cmluZyBjb3Vu
dHMgPQogICAgICAgRm9ybWF0Q291bnRhYmxlTm91bih0ZXN0X2Nhc2UudGVzdF90b19ydW5fY291
bnQoKSwgInRlc3QiLCAidGVzdHMiKTsKICAgQ29sb3JlZFByaW50ZihDT0xPUl9HUkVFTiwgIlst
LS0tLS0tLS0tXSAiKTsKLSAgcHJpbnRmKCIlcyBmcm9tICVzIiwgY291bnRzLmNfc3RyKCksIHRl
c3RfY2FzZV9uYW1lXy5jX3N0cigpKTsKLSAgaWYgKHRlc3RfY2FzZS5jb21tZW50KClbMF0gPT0g
J1wwJykgeworICBwcmludGYoIiVzIGZyb20gJXMiLCBjb3VudHMuY19zdHIoKSwgdGVzdF9jYXNl
Lm5hbWUoKSk7CisgIGlmICh0ZXN0X2Nhc2UudHlwZV9wYXJhbSgpID09IE5VTEwpIHsKICAgICBw
cmludGYoIlxuIik7CiAgIH0gZWxzZSB7Ci0gICAgcHJpbnRmKCIsIHdoZXJlICVzXG4iLCB0ZXN0
X2Nhc2UuY29tbWVudCgpKTsKKyAgICBwcmludGYoIiwgd2hlcmUgJXMgPSAlc1xuIiwga1R5cGVQ
YXJhbUxhYmVsLCB0ZXN0X2Nhc2UudHlwZV9wYXJhbSgpKTsKICAgfQogICBmZmx1c2goc3Rkb3V0
KTsKIH0KIAogdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdFN0YXJ0KGNv
bnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKICAgQ29sb3JlZFByaW50ZihDT0xPUl9HUkVFTiwg
ICJbIFJVTiAgICAgIF0gIik7Ci0gIFByaW50VGVzdE5hbWUodGVzdF9jYXNlX25hbWVfLmNfc3Ry
KCksIHRlc3RfaW5mby5uYW1lKCkpOwotICBpZiAodGVzdF9pbmZvLmNvbW1lbnQoKVswXSA9PSAn
XDAnKSB7Ci0gICAgcHJpbnRmKCJcbiIpOwotICB9IGVsc2UgewotICAgIHByaW50ZigiLCB3aGVy
ZSAlc1xuIiwgdGVzdF9pbmZvLmNvbW1lbnQoKSk7Ci0gIH0KKyAgUHJpbnRUZXN0TmFtZSh0ZXN0
X2luZm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7CisgIHByaW50ZigiXG4i
KTsKICAgZmZsdXNoKHN0ZG91dCk7CiB9CiAKQEAgLTI3NzMsNyArMzIwMiwxMCBAQCB2b2lkIFBy
ZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0RW5kKGNvbnN0IFRlc3RJbmZvJiB0ZXN0
X2luZm8pIHsKICAgfSBlbHNlIHsKICAgICBDb2xvcmVkUHJpbnRmKENPTE9SX1JFRCwgIlsgIEZB
SUxFRCAgXSAiKTsKICAgfQotICBQcmludFRlc3ROYW1lKHRlc3RfY2FzZV9uYW1lXy5jX3N0cigp
LCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgUHJpbnRUZXN0TmFtZSh0ZXN0X2luZm8udGVzdF9jYXNl
X25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7CisgIGlmICh0ZXN0X2luZm8ucmVzdWx0KCktPkZh
aWxlZCgpKQorICAgIFByaW50RnVsbFRlc3RDb21tZW50SWZQcmVzZW50KHRlc3RfaW5mbyk7CisK
ICAgaWYgKEdURVNUX0ZMQUcocHJpbnRfdGltZSkpIHsKICAgICBwcmludGYoIiAoJXMgbXMpXG4i
LCBpbnRlcm5hbDo6U3RyZWFtYWJsZVRvU3RyaW5nKAogICAgICAgICAgICB0ZXN0X2luZm8ucmVz
dWx0KCktPmVsYXBzZWRfdGltZSgpKS5jX3N0cigpKTsKQEAgLTI3ODYsMTIgKzMyMTgsMTEgQEAg
dm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdEVuZChjb25zdCBUZXN0SW5m
byYgdGVzdF9pbmZvKSB7CiB2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0
Q2FzZUVuZChjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKSB7CiAgIGlmICghR1RFU1RfRkxBRyhw
cmludF90aW1lKSkgcmV0dXJuOwogCi0gIHRlc3RfY2FzZV9uYW1lXyA9IHRlc3RfY2FzZS5uYW1l
KCk7Ci0gIGNvbnN0IGludGVybmFsOjpTdHJpbmcgY291bnRzID0KKyAgY29uc3Qgc3RkOjpzdHJp
bmcgY291bnRzID0KICAgICAgIEZvcm1hdENvdW50YWJsZU5vdW4odGVzdF9jYXNlLnRlc3RfdG9f
cnVuX2NvdW50KCksICJ0ZXN0IiwgInRlc3RzIik7CiAgIENvbG9yZWRQcmludGYoQ09MT1JfR1JF
RU4sICJbLS0tLS0tLS0tLV0gIik7CiAgIHByaW50ZigiJXMgZnJvbSAlcyAoJXMgbXMgdG90YWwp
XG5cbiIsCi0gICAgICAgICBjb3VudHMuY19zdHIoKSwgdGVzdF9jYXNlX25hbWVfLmNfc3RyKCks
CisgICAgICAgICBjb3VudHMuY19zdHIoKSwgdGVzdF9jYXNlLm5hbWUoKSwKICAgICAgICAgIGlu
dGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcodGVzdF9jYXNlLmVsYXBzZWRfdGltZSgpKS5jX3N0
cigpKTsKICAgZmZsdXNoKHN0ZG91dCk7CiB9CkBAIC0yODIyLDIxICszMjUzLDE0IEBAIHZvaWQg
UHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludEZhaWxlZFRlc3RzKGNvbnN0IFVuaXRU
ZXN0JiB1bml0X3Rlc3QpIHsKICAgICAgIH0KICAgICAgIENvbG9yZWRQcmludGYoQ09MT1JfUkVE
LCAiWyAgRkFJTEVEICBdICIpOwogICAgICAgcHJpbnRmKCIlcy4lcyIsIHRlc3RfY2FzZS5uYW1l
KCksIHRlc3RfaW5mby5uYW1lKCkpOwotICAgICAgaWYgKHRlc3RfY2FzZS5jb21tZW50KClbMF0g
IT0gJ1wwJyB8fAotICAgICAgICAgIHRlc3RfaW5mby5jb21tZW50KClbMF0gIT0gJ1wwJykgewot
ICAgICAgICBwcmludGYoIiwgd2hlcmUgJXMiLCB0ZXN0X2Nhc2UuY29tbWVudCgpKTsKLSAgICAg
ICAgaWYgKHRlc3RfY2FzZS5jb21tZW50KClbMF0gIT0gJ1wwJyAmJgotICAgICAgICAgICAgdGVz
dF9pbmZvLmNvbW1lbnQoKVswXSAhPSAnXDAnKSB7Ci0gICAgICAgICAgcHJpbnRmKCIgYW5kICIp
OwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBwcmludGYoIiVzXG4iLCB0ZXN0X2luZm8uY29t
bWVudCgpKTsKKyAgICAgIFByaW50RnVsbFRlc3RDb21tZW50SWZQcmVzZW50KHRlc3RfaW5mbyk7
CisgICAgICBwcmludGYoIlxuIik7CiAgICAgfQogICB9CiB9CiAKLSB2b2lkIFByZXR0eVVuaXRU
ZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0
X3Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgLyppdGVyYXRpb24qLykgewordm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50
ZXI6Ok9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgLyppdGVy
YXRpb24qLykgewogICBDb2xvcmVkUHJpbnRmKENPTE9SX0dSRUVOLCAgIls9PT09PT09PT09XSAi
KTsKICAgcHJpbnRmKCIlcyBmcm9tICVzIHJhbi4iLAogICAgICAgICAgRm9ybWF0VGVzdENvdW50
KHVuaXRfdGVzdC50ZXN0X3RvX3J1bl9jb3VudCgpKS5jX3N0cigpLApAQCAtMjg1OSw3ICszMjgz
LDcgQEAgdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6OlByaW50RmFpbGVkVGVzdHMo
Y29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgbnVt
X2ZhaWx1cmVzID09IDEgPyAiVEVTVCIgOiAiVEVTVFMiKTsKICAgfQogCi0gIGludCBudW1fZGlz
YWJsZWQgPSB1bml0X3Rlc3QuZGlzYWJsZWRfdGVzdF9jb3VudCgpOworICBpbnQgbnVtX2Rpc2Fi
bGVkID0gdW5pdF90ZXN0LnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpOwogICBpZiAo
bnVtX2Rpc2FibGVkICYmICFHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzKSkgewog
ICAgIGlmICghbnVtX2ZhaWx1cmVzKSB7CiAgICAgICBwcmludGYoIlxuIik7ICAvLyBBZGQgYSBz
cGFjZXIgaWYgbm8gRkFJTFVSRSBiYW5uZXIgaXMgZGlzcGxheWVkLgpAQCAtMjkyMiw3ICszMzQ2
LDcgQEAgdm9pZCBUZXN0RXZlbnRSZXBlYXRlcjo6QXBwZW5kKFRlc3RFdmVudExpc3RlbmVyICps
aXN0ZW5lcikgewogICBsaXN0ZW5lcnNfLnB1c2hfYmFjayhsaXN0ZW5lcik7CiB9CiAKLS8vIFRP
RE8odmxhZGxAZ29vZ2xlLmNvbSk6IEZhY3RvciB0aGUgc2VhcmNoIGZ1bmN0aW9uYWxpdHkgaW50
byBWZWN0b3I6OkZpbmQuCisvLyBGSVhNRTogRmFjdG9yIHRoZSBzZWFyY2ggZnVuY3Rpb25hbGl0
eSBpbnRvIFZlY3Rvcjo6RmluZC4KIFRlc3RFdmVudExpc3RlbmVyKiBUZXN0RXZlbnRSZXBlYXRl
cjo6UmVsZWFzZShUZXN0RXZlbnRMaXN0ZW5lciAqbGlzdGVuZXIpIHsKICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsaXN0ZW5lcnNfLnNpemUoKTsgKytpKSB7CiAgICAgaWYgKGxpc3RlbmVyc19b
aV0gPT0gbGlzdGVuZXIpIHsKQEAgLTI5OTYsNiArMzQyMCwxMSBAQCBjbGFzcyBYbWxVbml0VGVz
dFJlc3VsdFByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CiAgIGV4cGxp
Y2l0IFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcihjb25zdCBjaGFyKiBvdXRwdXRfZmlsZSk7CiAK
ICAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90
ZXN0LCBpbnQgaXRlcmF0aW9uKTsKKyAgdm9pZCBMaXN0VGVzdHNNYXRjaGluZ0ZpbHRlcihjb25z
dCBzdGQ6OnZlY3RvcjxUZXN0Q2FzZSo+JiB0ZXN0X2Nhc2VzKTsKKworICAvLyBQcmludHMgYW4g
WE1MIHN1bW1hcnkgb2YgYWxsIHVuaXQgdGVzdHMuCisgIHN0YXRpYyB2b2lkIFByaW50WG1sVGVz
dHNMaXN0KHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnZlY3RvcjxUZXN0Q2FzZSo+JiB0ZXN0X2Nhc2VzKTsKIAogIHByaXZh
dGU6CiAgIC8vIElzIGMgYSB3aGl0ZXNwYWNlIGNoYXJhY3RlciB0aGF0IGlzIG5vcm1hbGl6ZWQg
dG8gYSBzcGFjZSBjaGFyYWN0ZXIKQEAgLTMwMTMsMTggKzM0NDIsMjcgQEAgY2xhc3MgWG1sVW5p
dFRlc3RSZXN1bHRQcmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewogICAv
LyBpc19hdHRyaWJ1dGUgaXMgdHJ1ZSwgdGhlIHRleHQgaXMgbWVhbnQgdG8gYXBwZWFyIGFzIGFu
IGF0dHJpYnV0ZQogICAvLyB2YWx1ZSwgYW5kIG5vcm1hbGl6YWJsZSB3aGl0ZXNwYWNlIGlzIHBy
ZXNlcnZlZCBieSByZXBsYWNpbmcgaXQKICAgLy8gd2l0aCBjaGFyYWN0ZXIgcmVmZXJlbmNlcy4K
LSAgc3RhdGljIFN0cmluZyBFc2NhcGVYbWwoY29uc3QgY2hhciogc3RyLCBib29sIGlzX2F0dHJp
YnV0ZSk7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFc2NhcGVYbWwoY29uc3Qgc3RkOjpzdHJpbmcm
IHN0ciwgYm9vbCBpc19hdHRyaWJ1dGUpOwogCiAgIC8vIFJldHVybnMgdGhlIGdpdmVuIHN0cmlu
ZyB3aXRoIGFsbCBjaGFyYWN0ZXJzIGludmFsaWQgaW4gWE1MIHJlbW92ZWQuCi0gIHN0YXRpYyBT
dHJpbmcgUmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoY29uc3QgY2hhciogc3RyKTsKKyAgc3Rh
dGljIHN0ZDo6c3RyaW5nIFJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBzdHIpOwogCiAgIC8vIENvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIEVzY2FwZVhtbCB3
aGVuIHN0ciBpcyBhbiBhdHRyaWJ1dGUgdmFsdWUuCi0gIHN0YXRpYyBTdHJpbmcgRXNjYXBlWG1s
QXR0cmlidXRlKGNvbnN0IGNoYXIqIHN0cikgeworICBzdGF0aWMgc3RkOjpzdHJpbmcgRXNjYXBl
WG1sQXR0cmlidXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKICAgICByZXR1cm4gRXNjYXBl
WG1sKHN0ciwgdHJ1ZSk7CiAgIH0KIAogICAvLyBDb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCBF
c2NhcGVYbWwgd2hlbiBzdHIgaXMgbm90IGFuIGF0dHJpYnV0ZSB2YWx1ZS4KLSAgc3RhdGljIFN0
cmluZyBFc2NhcGVYbWxUZXh0KGNvbnN0IGNoYXIqIHN0cikgeyByZXR1cm4gRXNjYXBlWG1sKHN0
ciwgZmFsc2UpOyB9CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFc2NhcGVYbWxUZXh0KGNvbnN0IGNo
YXIqIHN0cikgeworICAgIHJldHVybiBFc2NhcGVYbWwoc3RyLCBmYWxzZSk7CisgIH0KKworICAv
LyBWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBhdHRyaWJ1dGUgYmVsb25ncyB0byB0aGUgZ2l2ZW4g
ZWxlbWVudCBhbmQKKyAgLy8gc3RyZWFtcyB0aGUgYXR0cmlidXRlIGFzIFhNTC4KKyAgc3RhdGlj
IHZvaWQgT3V0cHV0WG1sQXR0cmlidXRlKHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGVsZW1lbnRfbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZh
bHVlKTsKIAogICAvLyBTdHJlYW1zIGFuIFhNTCBDREFUQSBzZWN0aW9uLCBlc2NhcGluZyBpbnZh
bGlkIENEQVRBIHNlcXVlbmNlcyBhcyBuZWVkZWQuCiAgIHN0YXRpYyB2b2lkIE91dHB1dFhtbENE
YXRhU2VjdGlvbig6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLCBjb25zdCBjaGFyKiBkYXRhKTsKQEAg
LTMwMzUsMTkgKzM0NzMsMjYgQEAgY2xhc3MgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyIDogcHVi
bGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKTsKIAogICAvLyBQcmludHMgYW4gWE1MIHJl
cHJlc2VudGF0aW9uIG9mIGEgVGVzdENhc2Ugb2JqZWN0Ci0gIHN0YXRpYyB2b2lkIFByaW50WG1s
VGVzdENhc2UoRklMRSogb3V0LCBjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKTsKKyAgc3RhdGlj
IHZvaWQgUHJpbnRYbWxUZXN0Q2FzZSg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpOwogCiAgIC8v
IFByaW50cyBhbiBYTUwgc3VtbWFyeSBvZiB1bml0X3Rlc3QgdG8gb3V0cHV0IHN0cmVhbSBvdXQu
Ci0gIHN0YXRpYyB2b2lkIFByaW50WG1sVW5pdFRlc3QoRklMRSogb3V0LCBjb25zdCBVbml0VGVz
dCYgdW5pdF90ZXN0KTsKKyAgc3RhdGljIHZvaWQgUHJpbnRYbWxVbml0VGVzdCg6OnN0ZDo6b3N0
cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaXRU
ZXN0JiB1bml0X3Rlc3QpOwogCiAgIC8vIFByb2R1Y2VzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0
aGUgdGVzdCBwcm9wZXJ0aWVzIGluIGEgcmVzdWx0IGFzIHNwYWNlCiAgIC8vIGRlbGltaXRlZCBY
TUwgYXR0cmlidXRlcyBiYXNlZCBvbiB0aGUgcHJvcGVydHkga2V5PSJ2YWx1ZSIgcGFpcnMuCi0g
IC8vIFdoZW4gdGhlIFN0cmluZyBpcyBub3QgZW1wdHksIGl0IGluY2x1ZGVzIGEgc3BhY2UgYXQg
dGhlIGJlZ2lubmluZywKKyAgLy8gV2hlbiB0aGUgc3RkOjpzdHJpbmcgaXMgbm90IGVtcHR5LCBp
dCBpbmNsdWRlcyBhIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcsCiAgIC8vIHRvIGRlbGltaXQgdGhp
cyBhdHRyaWJ1dGUgZnJvbSBwcmlvciBhdHRyaWJ1dGVzLgotICBzdGF0aWMgU3RyaW5nIFRlc3RQ
cm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCk7CisgIHN0
YXRpYyBzdGQ6OnN0cmluZyBUZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRlcyhjb25zdCBUZXN0
UmVzdWx0JiByZXN1bHQpOworCisgIC8vIFN0cmVhbXMgYW4gWE1MIHJlcHJlc2VudGF0aW9uIG9m
IHRoZSB0ZXN0IHByb3BlcnRpZXMgb2YgYSBUZXN0UmVzdWx0CisgIC8vIG9iamVjdC4KKyAgc3Rh
dGljIHZvaWQgT3V0cHV0WG1sVGVzdFByb3BlcnRpZXMoc3RkOjpvc3RyZWFtKiBzdHJlYW0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RSZXN1bHQmIHJl
c3VsdCk7CiAKICAgLy8gVGhlIG91dHB1dCBmaWxlLgotICBjb25zdCBTdHJpbmcgb3V0cHV0X2Zp
bGVfOworICBjb25zdCBzdGQ6OnN0cmluZyBvdXRwdXRfZmlsZV87CiAKICAgR1RFU1RfRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOXyhYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIpOwogfTsKQEAgLTMw
NTUsNDEgKzM1MDAsMjcgQEAgY2xhc3MgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyIDogcHVibGlj
IEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewogLy8gQ3JlYXRlcyBhIG5ldyBYbWxVbml0VGVzdFJl
c3VsdFByaW50ZXIuCiBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlhtbFVuaXRUZXN0UmVzdWx0
UHJpbnRlcihjb25zdCBjaGFyKiBvdXRwdXRfZmlsZSkKICAgICA6IG91dHB1dF9maWxlXyhvdXRw
dXRfZmlsZSkgewotICBpZiAob3V0cHV0X2ZpbGVfLmNfc3RyKCkgPT0gTlVMTCB8fCBvdXRwdXRf
ZmlsZV8uZW1wdHkoKSkgewotICAgIGZwcmludGYoc3RkZXJyLCAiWE1MIG91dHB1dCBmaWxlIG1h
eSBub3QgYmUgbnVsbFxuIik7Ci0gICAgZmZsdXNoKHN0ZGVycik7Ci0gICAgZXhpdChFWElUX0ZB
SUxVUkUpOworICBpZiAob3V0cHV0X2ZpbGVfLmVtcHR5KCkpIHsKKyAgICBHVEVTVF9MT0dfKEZB
VEFMKSA8PCAiWE1MIG91dHB1dCBmaWxlIG1heSBub3QgYmUgbnVsbCI7CiAgIH0KIH0KIAogLy8g
Q2FsbGVkIGFmdGVyIHRoZSB1bml0IHRlc3QgZW5kcy4KIHZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQ
cmludGVyOjpPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IC8qaXRl
cmF0aW9uKi8pIHsKLSAgRklMRSogeG1sb3V0ID0gTlVMTDsKLSAgRmlsZVBhdGggb3V0cHV0X2Zp
bGUob3V0cHV0X2ZpbGVfKTsKLSAgRmlsZVBhdGggb3V0cHV0X2RpcihvdXRwdXRfZmlsZS5SZW1v
dmVGaWxlTmFtZSgpKTsKKyAgRklMRSogeG1sb3V0ID0gT3BlbkZpbGVGb3JXcml0aW5nKG91dHB1
dF9maWxlXyk7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgUHJpbnRYbWxVbml0VGVz
dCgmc3RyZWFtLCB1bml0X3Rlc3QpOworICBmcHJpbnRmKHhtbG91dCwgIiVzIiwgU3RyaW5nU3Ry
ZWFtVG9TdHJpbmcoJnN0cmVhbSkuY19zdHIoKSk7CisgIGZjbG9zZSh4bWxvdXQpOworfQogCi0g
IGlmIChvdXRwdXRfZGlyLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKSkgewotICAgIHht
bG91dCA9IHBvc2l4OjpGT3BlbihvdXRwdXRfZmlsZV8uY19zdHIoKSwgInciKTsKLSAgfQotICBp
ZiAoeG1sb3V0ID09IE5VTEwpIHsKLSAgICAvLyBUT0RPKHdhbik6IHJlcG9ydCB0aGUgcmVhc29u
IG9mIHRoZSBmYWlsdXJlLgotICAgIC8vCi0gICAgLy8gV2UgZG9uJ3QgZG8gaXQgZm9yIG5vdyBh
czoKLSAgICAvLwotICAgIC8vICAgMS4gVGhlcmUgaXMgbm8gdXJnZW50IG5lZWQgZm9yIGl0Lgot
ICAgIC8vICAgMi4gSXQncyBhIGJpdCBpbnZvbHZlZCB0byBtYWtlIHRoZSBlcnJubyB2YXJpYWJs
ZSB0aHJlYWQtc2FmZSBvbgotICAgIC8vICAgICAgYWxsIHRocmVlIG9wZXJhdGluZyBzeXN0ZW1z
IChMaW51eCwgV2luZG93cywgYW5kIE1hYyBPUykuCi0gICAgLy8gICAzLiBUbyBpbnRlcnByZXQg
dGhlIG1lYW5pbmcgb2YgZXJybm8gaW4gYSB0aHJlYWQtc2FmZSB3YXksCi0gICAgLy8gICAgICB3
ZSBuZWVkIHRoZSBzdHJlcnJvcl9yKCkgZnVuY3Rpb24sIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUg
b24KLSAgICAvLyAgICAgIFdpbmRvd3MuCi0gICAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAg
ICAiVW5hYmxlIHRvIG9wZW4gZmlsZSBcIiVzXCJcbiIsCi0gICAgICAgICAgICBvdXRwdXRfZmls
ZV8uY19zdHIoKSk7Ci0gICAgZmZsdXNoKHN0ZGVycik7Ci0gICAgZXhpdChFWElUX0ZBSUxVUkUp
OwotICB9Ci0gIFByaW50WG1sVW5pdFRlc3QoeG1sb3V0LCB1bml0X3Rlc3QpOwordm9pZCBYbWxV
bml0VGVzdFJlc3VsdFByaW50ZXI6Okxpc3RUZXN0c01hdGNoaW5nRmlsdGVyKAorICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMpIHsKKyAgRklMRSogeG1sb3V0ID0g
T3BlbkZpbGVGb3JXcml0aW5nKG91dHB1dF9maWxlXyk7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0
cmVhbTsKKyAgUHJpbnRYbWxUZXN0c0xpc3QoJnN0cmVhbSwgdGVzdF9jYXNlcyk7CisgIGZwcmlu
dGYoeG1sb3V0LCAiJXMiLCBTdHJpbmdTdHJlYW1Ub1N0cmluZygmc3RyZWFtKS5jX3N0cigpKTsK
ICAgZmNsb3NlKHhtbG91dCk7CiB9CiAKQEAgLTMxMDMsNDQgKzM1MzQsNDUgQEAgdm9pZCBYbWxV
bml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYg
dW5pdF90ZXN0LAogLy8gbW9kdWxlIHdpbGwgY29uc2lzdCBvZiBvcmRpbmFyeSBFbmdsaXNoIHRl
eHQuCiAvLyBJZiB0aGlzIG1vZHVsZSBpcyBldmVyIG1vZGlmaWVkIHRvIHByb2R1Y2UgdmVyc2lv
biAxLjEgWE1MIG91dHB1dCwKIC8vIG1vc3QgaW52YWxpZCBjaGFyYWN0ZXJzIGNhbiBiZSByZXRh
aW5lZCB1c2luZyBjaGFyYWN0ZXIgcmVmZXJlbmNlcy4KLS8vIFRPRE8od2FuKTogSXQgbWlnaHQg
YmUgbmljZSB0byBoYXZlIGEgbWluaW1hbGx5IGludmFzaXZlLCBodW1hbi1yZWFkYWJsZQorLy8g
RklYTUU6IEl0IG1pZ2h0IGJlIG5pY2UgdG8gaGF2ZSBhIG1pbmltYWxseSBpbnZhc2l2ZSwgaHVt
YW4tcmVhZGFibGUKIC8vIGVzY2FwaW5nIHNjaGVtZSBmb3IgaW52YWxpZCBjaGFyYWN0ZXJzLCBy
YXRoZXIgdGhhbiBkcm9wcGluZyB0aGVtLgotU3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRl
cjo6RXNjYXBlWG1sKGNvbnN0IGNoYXIqIHN0ciwgYm9vbCBpc19hdHRyaWJ1dGUpIHsKK3N0ZDo6
c3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6RXNjYXBlWG1sKAorICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBzdHIsIGJvb2wgaXNfYXR0cmlidXRlKSB7CiAgIE1lc3NhZ2UgbTsKIAotICBp
ZiAoc3RyICE9IE5VTEwpIHsKLSAgICBmb3IgKGNvbnN0IGNoYXIqIHNyYyA9IHN0cjsgKnNyYzsg
KytzcmMpIHsKLSAgICAgIHN3aXRjaCAoKnNyYykgewotICAgICAgICBjYXNlICc8JzoKLSAgICAg
ICAgICBtIDw8ICImbHQ7IjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnPic6Ci0g
ICAgICAgICAgbSA8PCAiJmd0OyI7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJyYn
OgotICAgICAgICAgIG0gPDwgIiZhbXA7IjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSAnXCcnOgotICAgICAgICAgIGlmIChpc19hdHRyaWJ1dGUpCi0gICAgICAgICAgICBtIDw8ICIm
YXBvczsiOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG0gPDwgJ1wnJzsKLSAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSAnIic6Ci0gICAgICAgICAgaWYgKGlzX2F0dHJpYnV0ZSkK
LSAgICAgICAgICAgIG0gPDwgIiZxdW90OyI7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3Ry
LnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgY2hhciBjaCA9IHN0cltpXTsKKyAgICBzd2l0Y2gg
KGNoKSB7CisgICAgICBjYXNlICc8JzoKKyAgICAgICAgbSA8PCAiJmx0OyI7CisgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSAnPic6CisgICAgICAgIG0gPDwgIiZndDsiOworICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgJyYnOgorICAgICAgICBtIDw8ICImYW1wOyI7CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSAnXCcnOgorICAgICAgICBpZiAoaXNfYXR0cmlidXRlKQorICAgICAgICAg
IG0gPDwgIiZhcG9zOyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBtIDw8ICdcJyc7CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSAnIic6CisgICAgICAgIGlmIChpc19hdHRyaWJ1dGUpCisg
ICAgICAgICAgbSA8PCAiJnF1b3Q7IjsKKyAgICAgICAgZWxzZQorICAgICAgICAgIG0gPDwgJyIn
OworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChJc1ZhbGlkWG1s
Q2hhcmFjdGVyKGNoKSkgeworICAgICAgICAgIGlmIChpc19hdHRyaWJ1dGUgJiYgSXNOb3JtYWxp
emFibGVXaGl0ZXNwYWNlKGNoKSkKKyAgICAgICAgICAgIG0gPDwgIiYjeCIgPDwgU3RyaW5nOjpG
b3JtYXRCeXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkKKyAgICAgICAgICAgICAg
PDwgIjsiOwogICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG0gPDwgJyInOwotICAgICAgICAg
IGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgIGlmIChJc1ZhbGlkWG1sQ2hhcmFj
dGVyKCpzcmMpKSB7Ci0gICAgICAgICAgICBpZiAoaXNfYXR0cmlidXRlICYmIElzTm9ybWFsaXph
YmxlV2hpdGVzcGFjZSgqc3JjKSkKLSAgICAgICAgICAgICAgbSA8PCBTdHJpbmc6OkZvcm1hdCgi
JiN4JTAyWDsiLCB1bnNpZ25lZCgqc3JjKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgIG0gPDwgKnNyYzsKLSAgICAgICAgICB9Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICB9Cisg
ICAgICAgICAgICBtIDw8IGNoOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIH0KICAg
fQogCkBAIC0zMTUwLDIxICszNTgyLDIwIEBAIFN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50
ZXI6OkVzY2FwZVhtbChjb25zdCBjaGFyKiBzdHIsIGJvb2wgaXNfYXR0cmlidXRlKSB7CiAvLyBS
ZXR1cm5zIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBhbGwgY2hhcmFjdGVycyBpbnZhbGlkIGluIFhN
TCByZW1vdmVkLgogLy8gQ3VycmVudGx5IGludmFsaWQgY2hhcmFjdGVycyBhcmUgZHJvcHBlZCBm
cm9tIHRoZSBzdHJpbmcuIEFuCiAvLyBhbHRlcm5hdGl2ZSBpcyB0byByZXBsYWNlIHRoZW0gd2l0
aCBjZXJ0YWluIGNoYXJhY3RlcnMgc3VjaCBhcyAuIG9yID8uCi1TdHJpbmcgWG1sVW5pdFRlc3RS
ZXN1bHRQcmludGVyOjpSZW1vdmVJbnZhbGlkWG1sQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBzdHIp
IHsKLSAgY2hhciogY29uc3Qgb3V0cHV0ID0gbmV3IGNoYXJbc3RybGVuKHN0cikgKyAxXTsKLSAg
Y2hhciogYXBwZW5kZXIgPSBvdXRwdXQ7Ci0gIGZvciAoY2hhciBjaCA9ICpzdHI7IGNoICE9ICdc
MCc7IGNoID0gKisrc3RyKQotICAgIGlmIChJc1ZhbGlkWG1sQ2hhcmFjdGVyKGNoKSkKLSAgICAg
ICphcHBlbmRlcisrID0gY2g7Ci0gICphcHBlbmRlciA9ICdcMCc7CitzdGQ6OnN0cmluZyBYbWxV
bml0VGVzdFJlc3VsdFByaW50ZXI6OlJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKAorICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKKyAgc3RkOjpzdHJpbmcgb3V0cHV0OworICBvdXRwdXQu
cmVzZXJ2ZShzdHIuc2l6ZSgpKTsKKyAgZm9yIChzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBzdHIuYmVnaW4oKTsgaXQgIT0gc3RyLmVuZCgpOyArK2l0KQorICAgIGlmIChJc1ZhbGlk
WG1sQ2hhcmFjdGVyKCppdCkpCisgICAgICBvdXRwdXQucHVzaF9iYWNrKCppdCk7CiAKLSAgU3Ry
aW5nIHJldF92YWx1ZShvdXRwdXQpOwotICBkZWxldGVbXSBvdXRwdXQ7Ci0gIHJldHVybiByZXRf
dmFsdWU7CisgIHJldHVybiBvdXRwdXQ7CiB9CiAKIC8vIFRoZSBmb2xsb3dpbmcgcm91dGluZXMg
Z2VuZXJhdGUgYW4gWE1MIHJlcHJlc2VudGF0aW9uIG9mIGEgVW5pdFRlc3QKIC8vIG9iamVjdC4K
Ky8vIEdPT0dMRVRFU1RfQ00wMDA5IERPIE5PVCBERUxFVEUKIC8vCiAvLyBUaGlzIGlzIGhvdyBH
b29nbGUgVGVzdCBjb25jZXB0cyBtYXAgdG8gdGhlIERURDoKIC8vCkBAIC0zMTgyLDEwICszNjEz
LDQxIEBAIFN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlJlbW92ZUludmFsaWRYbWxD
aGFyYWN0ZXJzKGNvbnN0IGNoYXIqIHN0cikgewogLy8gRm9ybWF0cyB0aGUgZ2l2ZW4gdGltZSBp
biBtaWxsaXNlY29uZHMgYXMgc2Vjb25kcy4KIHN0ZDo6c3RyaW5nIEZvcm1hdFRpbWVJbk1pbGxp
c0FzU2Vjb25kcyhUaW1lSW5NaWxsaXMgbXMpIHsKICAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsK
LSAgc3MgPDwgbXMvMTAwMC4wOworICBzcyA8PCAoc3RhdGljX2Nhc3Q8ZG91YmxlPihtcykgKiAx
ZS0zKTsKICAgcmV0dXJuIHNzLnN0cigpOwogfQogCitzdGF0aWMgYm9vbCBQb3J0YWJsZUxvY2Fs
dGltZSh0aW1lX3Qgc2Vjb25kcywgc3RydWN0IHRtKiBvdXQpIHsKKyNpZiBkZWZpbmVkKF9NU0Nf
VkVSKQorICByZXR1cm4gbG9jYWx0aW1lX3Mob3V0LCAmc2Vjb25kcykgPT0gMDsKKyNlbGlmIGRl
ZmluZWQoX19NSU5HVzMyX18pIHx8IGRlZmluZWQoX19NSU5HVzY0X18pCisgIC8vIE1JTkdXIDx0
aW1lLmg+IHByb3ZpZGVzIG5laXRoZXIgbG9jYWx0aW1lX3Igbm9yIGxvY2FsdGltZV9zLCBidXQg
dXNlcworICAvLyBXaW5kb3dzJyBsb2NhbHRpbWUoKSwgd2hpY2ggaGFzIGEgdGhyZWFkLWxvY2Fs
IHRtIGJ1ZmZlci4KKyAgc3RydWN0IHRtKiB0bV9wdHIgPSBsb2NhbHRpbWUoJnNlY29uZHMpOyAg
Ly8gTk9MSU5UCisgIGlmICh0bV9wdHIgPT0gTlVMTCkKKyAgICByZXR1cm4gZmFsc2U7CisgICpv
dXQgPSAqdG1fcHRyOworICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgIHJldHVybiBsb2NhbHRpbWVf
cigmc2Vjb25kcywgb3V0KSAhPSBOVUxMOworI2VuZGlmCit9CisKKy8vIENvbnZlcnRzIHRoZSBn
aXZlbiBlcG9jaCB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byBhIGRhdGUgc3RyaW5nIGluIHRoZSBJ
U08KKy8vIDg2MDEgZm9ybWF0LCB3aXRob3V0IHRoZSB0aW1lem9uZSBpbmZvcm1hdGlvbi4KK3N0
ZDo6c3RyaW5nIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKFRpbWVJbk1pbGxpcyBt
cykgeworICBzdHJ1Y3QgdG0gdGltZV9zdHJ1Y3Q7CisgIGlmICghUG9ydGFibGVMb2NhbHRpbWUo
c3RhdGljX2Nhc3Q8dGltZV90PihtcyAvIDEwMDApLCAmdGltZV9zdHJ1Y3QpKQorICAgIHJldHVy
biAiIjsKKyAgLy8gWVlZWS1NTS1ERFRoaDptbTpzcworICByZXR1cm4gU3RyZWFtYWJsZVRvU3Ry
aW5nKHRpbWVfc3RydWN0LnRtX3llYXIgKyAxOTAwKSArICItIiArCisgICAgICBTdHJpbmc6OkZv
cm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9tb24gKyAxKSArICItIiArCisgICAgICBTdHJp
bmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9tZGF5KSArICJUIiArCisgICAgICBT
dHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9ob3VyKSArICI6IiArCisgICAg
ICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9taW4pICsgIjoiICsKKyAg
ICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX3NlYyk7Cit9CisKIC8v
IFN0cmVhbXMgYW4gWE1MIENEQVRBIHNlY3Rpb24sIGVzY2FwaW5nIGludmFsaWQgQ0RBVEEgc2Vx
dWVuY2VzIGFzIG5lZWRlZC4KIHZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPdXRwdXRY
bWxDRGF0YVNlY3Rpb24oOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSkgewpA
QCAtMzIwNiw4OSArMzY2OCwxNzkgQEAgdm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91
dHB1dFhtbENEYXRhU2VjdGlvbig6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAogICAqc3RyZWFtIDw8
ICJdXT4iOwogfQogCit2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T3V0cHV0WG1sQXR0
cmlidXRlKAorICAgIHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBlbGVtZW50X25hbWUsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCisgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIHZhbHVlKSB7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYg
YWxsb3dlZF9uYW1lcyA9CisgICAgICBHZXRSZXNlcnZlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KGVs
ZW1lbnRfbmFtZSk7CisKKyAgR1RFU1RfQ0hFQ0tfKHN0ZDo6ZmluZChhbGxvd2VkX25hbWVzLmJl
Z2luKCksIGFsbG93ZWRfbmFtZXMuZW5kKCksIG5hbWUpICE9CisgICAgICAgICAgICAgICAgICAg
YWxsb3dlZF9uYW1lcy5lbmQoKSkKKyAgICAgIDw8ICJBdHRyaWJ1dGUgIiA8PCBuYW1lIDw8ICIg
aXMgbm90IGFsbG93ZWQgZm9yIGVsZW1lbnQgPCIgPDwgZWxlbWVudF9uYW1lCisgICAgICA8PCAi
Pi4iOworCisgICpzdHJlYW0gPDwgIiAiIDw8IG5hbWUgPDwgIj1cIiIgPDwgRXNjYXBlWG1sQXR0
cmlidXRlKHZhbHVlKSA8PCAiXCIiOworfQorCiAvLyBQcmludHMgYW4gWE1MIHJlcHJlc2VudGF0
aW9uIG9mIGEgVGVzdEluZm8gb2JqZWN0LgotLy8gVE9ETyh3YW4pOiBUaGVyZSBpcyBhbHNvIHZh
bHVlIGluIHByaW50aW5nIHByb3BlcnRpZXMgd2l0aCB0aGUgcGxhaW4gcHJpbnRlci4KKy8vIEZJ
WE1FOiBUaGVyZSBpcyBhbHNvIHZhbHVlIGluIHByaW50aW5nIHByb3BlcnRpZXMgd2l0aCB0aGUg
cGxhaW4gcHJpbnRlci4KIHZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPdXRwdXRYbWxU
ZXN0SW5mbyg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RJ
bmZvJiB0ZXN0X2luZm8pIHsKICAgY29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0ID0gKnRlc3RfaW5m
by5yZXN1bHQoKTsKLSAgKnN0cmVhbSA8PCAiICAgIDx0ZXN0Y2FzZSBuYW1lPVwiIgotICAgICAg
ICAgIDw8IEVzY2FwZVhtbEF0dHJpYnV0ZSh0ZXN0X2luZm8ubmFtZSgpKS5jX3N0cigpCi0gICAg
ICAgICAgPDwgIlwiIHN0YXR1cz1cIiIKLSAgICAgICAgICA8PCAodGVzdF9pbmZvLnNob3VsZF9y
dW4oKSA/ICJydW4iIDogIm5vdHJ1biIpCi0gICAgICAgICAgPDwgIlwiIHRpbWU9XCIiCi0gICAg
ICAgICAgPDwgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKHJlc3VsdC5lbGFwc2VkX3RpbWUo
KSkKLSAgICAgICAgICA8PCAiXCIgY2xhc3NuYW1lPVwiIiA8PCBFc2NhcGVYbWxBdHRyaWJ1dGUo
dGVzdF9jYXNlX25hbWUpLmNfc3RyKCkKLSAgICAgICAgICA8PCAiXCIiIDw8IFRlc3RQcm9wZXJ0
aWVzQXNYbWxBdHRyaWJ1dGVzKHJlc3VsdCkuY19zdHIoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcg
a1Rlc3RjYXNlID0gInRlc3RjYXNlIjsKKworICBpZiAodGVzdF9pbmZvLmlzX2luX2Fub3RoZXJf
c2hhcmQoKSkgeworICAgIHJldHVybjsKKyAgfQorCisgICpzdHJlYW0gPDwgIiAgICA8dGVzdGNh
c2UiOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJuYW1lIiwgdGVz
dF9pbmZvLm5hbWUoKSk7CisKKyAgaWYgKHRlc3RfaW5mby52YWx1ZV9wYXJhbSgpICE9IE5VTEwp
IHsKKyAgICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJ2YWx1ZV9wYXJh
bSIsCisgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfaW5mby52YWx1ZV9wYXJhbSgpKTsKKyAg
fQorICBpZiAodGVzdF9pbmZvLnR5cGVfcGFyYW0oKSAhPSBOVUxMKSB7CisgICAgT3V0cHV0WG1s
QXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNlLCAidHlwZV9wYXJhbSIsIHRlc3RfaW5mby50eXBl
X3BhcmFtKCkpOworICB9CisgIGlmIChHVEVTVF9GTEFHKGxpc3RfdGVzdHMpKSB7CisgICAgT3V0
cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNlLCAiZmlsZSIsIHRlc3RfaW5mby5maWxl
KCkpOworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgImxpbmUiLAor
ICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodGVzdF9pbmZvLmxpbmUo
KSkpOworICAgICpzdHJlYW0gPDwgIiAvPlxuIjsKKyAgICByZXR1cm47CisgIH0KKworICBPdXRw
dXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJzdGF0dXMiLAorICAgICAgICAgICAg
ICAgICAgICAgdGVzdF9pbmZvLnNob3VsZF9ydW4oKSA/ICJydW4iIDogIm5vdHJ1biIpOworICBP
dXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJ0aW1lIiwKKyAgICAgICAgICAg
ICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyhyZXN1bHQuZWxhcHNlZF90aW1l
KCkpKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNlLCAiY2xhc3NuYW1l
IiwgdGVzdF9jYXNlX25hbWUpOwogCiAgIGludCBmYWlsdXJlcyA9IDA7CiAgIGZvciAoaW50IGkg
PSAwOyBpIDwgcmVzdWx0LnRvdGFsX3BhcnRfY291bnQoKTsgKytpKSB7CiAgICAgY29uc3QgVGVz
dFBhcnRSZXN1bHQmIHBhcnQgPSByZXN1bHQuR2V0VGVzdFBhcnRSZXN1bHQoaSk7CiAgICAgaWYg
KHBhcnQuZmFpbGVkKCkpIHsKLSAgICAgIGlmICgrK2ZhaWx1cmVzID09IDEpCisgICAgICBpZiAo
KytmYWlsdXJlcyA9PSAxKSB7CiAgICAgICAgICpzdHJlYW0gPDwgIj5cbiI7CisgICAgICB9Cisg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyBsb2NhdGlvbiA9CisgICAgICAgICAgaW50ZXJuYWw6OkZv
cm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24ocGFydC5maWxlX25hbWUoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJ0LmxpbmVfbnVtYmVyKCkpOworICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgc3VtbWFyeSA9IGxv
Y2F0aW9uICsgIlxuIiArIHBhcnQuc3VtbWFyeSgpOwogICAgICAgKnN0cmVhbSA8PCAiICAgICAg
PGZhaWx1cmUgbWVzc2FnZT1cIiIKLSAgICAgICAgICAgICAgPDwgRXNjYXBlWG1sQXR0cmlidXRl
KHBhcnQuc3VtbWFyeSgpKS5jX3N0cigpCisgICAgICAgICAgICAgIDw8IEVzY2FwZVhtbEF0dHJp
YnV0ZShzdW1tYXJ5LmNfc3RyKCkpCiAgICAgICAgICAgICAgIDw8ICJcIiB0eXBlPVwiXCI+IjsK
LSAgICAgIGNvbnN0IFN0cmluZyBtZXNzYWdlID0gUmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMo
U3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICAgIiVzOiVkXG4lcyIsCi0gICAgICAgICAgcGFydC5m
aWxlX25hbWUoKSwgcGFydC5saW5lX251bWJlcigpLAotICAgICAgICAgIHBhcnQubWVzc2FnZSgp
KS5jX3N0cigpKTsKLSAgICAgIE91dHB1dFhtbENEYXRhU2VjdGlvbihzdHJlYW0sIG1lc3NhZ2Uu
Y19zdHIoKSk7CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyBkZXRhaWwgPSBsb2NhdGlvbiArICJc
biIgKyBwYXJ0Lm1lc3NhZ2UoKTsKKyAgICAgIE91dHB1dFhtbENEYXRhU2VjdGlvbihzdHJlYW0s
IFJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGRldGFpbCkuY19zdHIoKSk7CiAgICAgICAqc3Ry
ZWFtIDw8ICI8L2ZhaWx1cmU+XG4iOwogICAgIH0KICAgfQogCi0gIGlmIChmYWlsdXJlcyA9PSAw
KQorICBpZiAoZmFpbHVyZXMgPT0gMCAmJiByZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpID09
IDApIHsKICAgICAqc3RyZWFtIDw8ICIgLz5cbiI7Ci0gIGVsc2UKKyAgfSBlbHNlIHsKKyAgICBp
ZiAoZmFpbHVyZXMgPT0gMCkgeworICAgICAgKnN0cmVhbSA8PCAiPlxuIjsKKyAgICB9CisgICAg
T3V0cHV0WG1sVGVzdFByb3BlcnRpZXMoc3RyZWFtLCByZXN1bHQpOwogICAgICpzdHJlYW0gPDwg
IiAgICA8L3Rlc3RjYXNlPlxuIjsKKyAgfQogfQogCiAvLyBQcmludHMgYW4gWE1MIHJlcHJlc2Vu
dGF0aW9uIG9mIGEgVGVzdENhc2Ugb2JqZWN0Ci12b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRl
cjo6UHJpbnRYbWxUZXN0Q2FzZShGSUxFKiBvdXQsCit2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJp
bnRlcjo6UHJpbnRYbWxUZXN0Q2FzZShzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RDYXNlJiB0ZXN0
X2Nhc2UpIHsKLSAgZnByaW50ZihvdXQsCi0gICAgICAgICAgIiAgPHRlc3RzdWl0ZSBuYW1lPVwi
JXNcIiB0ZXN0cz1cIiVkXCIgZmFpbHVyZXM9XCIlZFwiICIKLSAgICAgICAgICAiZGlzYWJsZWQ9
XCIlZFwiICIsCi0gICAgICAgICAgRXNjYXBlWG1sQXR0cmlidXRlKHRlc3RfY2FzZS5uYW1lKCkp
LmNfc3RyKCksCi0gICAgICAgICAgdGVzdF9jYXNlLnRvdGFsX3Rlc3RfY291bnQoKSwKLSAgICAg
ICAgICB0ZXN0X2Nhc2UuZmFpbGVkX3Rlc3RfY291bnQoKSwKLSAgICAgICAgICB0ZXN0X2Nhc2Uu
ZGlzYWJsZWRfdGVzdF9jb3VudCgpKTsKLSAgZnByaW50ZihvdXQsCi0gICAgICAgICAgImVycm9y
cz1cIjBcIiB0aW1lPVwiJXNcIj5cbiIsCi0gICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNT
ZWNvbmRzKHRlc3RfY2FzZS5lbGFwc2VkX3RpbWUoKSkuY19zdHIoKSk7CisgIGNvbnN0IHN0ZDo6
c3RyaW5nIGtUZXN0c3VpdGUgPSAidGVzdHN1aXRlIjsKKyAgKnN0cmVhbSA8PCAiICA8IiA8PCBr
VGVzdHN1aXRlOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlLCAibmFt
ZSIsIHRlc3RfY2FzZS5uYW1lKCkpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVz
dHN1aXRlLCAidGVzdHMiLAorICAgICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5n
KHRlc3RfY2FzZS5yZXBvcnRhYmxlX3Rlc3RfY291bnQoKSkpOworICBpZiAoIUdURVNUX0ZMQUco
bGlzdF90ZXN0cykpIHsKKyAgICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRl
LCAiZmFpbHVyZXMiLAorICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmco
dGVzdF9jYXNlLmZhaWxlZF90ZXN0X2NvdW50KCkpKTsKKyAgICBPdXRwdXRYbWxBdHRyaWJ1dGUo
CisgICAgICAgIHN0cmVhbSwga1Rlc3RzdWl0ZSwgImRpc2FibGVkIiwKKyAgICAgICAgU3RyZWFt
YWJsZVRvU3RyaW5nKHRlc3RfY2FzZS5yZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSkp
OworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUsICJlcnJvcnMiLCAi
MCIpOworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUsICJ0aW1lIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKHRlc3Rf
Y2FzZS5lbGFwc2VkX3RpbWUoKSkpOworICAgICpzdHJlYW0gPDwgVGVzdFByb3BlcnRpZXNBc1ht
bEF0dHJpYnV0ZXModGVzdF9jYXNlLmFkX2hvY190ZXN0X3Jlc3VsdCgpKTsKKyAgfQorICAqc3Ry
ZWFtIDw8ICI+XG4iOwogICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RfY2FzZS50b3RhbF90ZXN0
X2NvdW50KCk7ICsraSkgewotICAgIFN0clN0cmVhbSBzdHJlYW07Ci0gICAgT3V0cHV0WG1sVGVz
dEluZm8oJnN0cmVhbSwgdGVzdF9jYXNlLm5hbWUoKSwgKnRlc3RfY2FzZS5HZXRUZXN0SW5mbyhp
KSk7Ci0gICAgZnByaW50ZihvdXQsICIlcyIsIFN0clN0cmVhbVRvU3RyaW5nKCZzdHJlYW0pLmNf
c3RyKCkpOworICAgIGlmICh0ZXN0X2Nhc2UuR2V0VGVzdEluZm8oaSktPmlzX3JlcG9ydGFibGUo
KSkKKyAgICAgIE91dHB1dFhtbFRlc3RJbmZvKHN0cmVhbSwgdGVzdF9jYXNlLm5hbWUoKSwgKnRl
c3RfY2FzZS5HZXRUZXN0SW5mbyhpKSk7CiAgIH0KLSAgZnByaW50ZihvdXQsICIgIDwvdGVzdHN1
aXRlPlxuIik7CisgICpzdHJlYW0gPDwgIiAgPC8iIDw8IGtUZXN0c3VpdGUgPDwgIj5cbiI7CiB9
CiAKIC8vIFByaW50cyBhbiBYTUwgc3VtbWFyeSBvZiB1bml0X3Rlc3QgdG8gb3V0cHV0IHN0cmVh
bSBvdXQuCi12b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRYbWxVbml0VGVzdChG
SUxFKiBvdXQsCit2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRYbWxVbml0VGVz
dChzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpIHsKLSAgZnByaW50Zihv
dXQsICI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz5cbiIpOwotICBm
cHJpbnRmKG91dCwKLSAgICAgICAgICAiPHRlc3RzdWl0ZXMgdGVzdHM9XCIlZFwiIGZhaWx1cmVz
PVwiJWRcIiBkaXNhYmxlZD1cIiVkXCIgIgotICAgICAgICAgICJlcnJvcnM9XCIwXCIgdGltZT1c
IiVzXCIgIiwKLSAgICAgICAgICB1bml0X3Rlc3QudG90YWxfdGVzdF9jb3VudCgpLAotICAgICAg
ICAgIHVuaXRfdGVzdC5mYWlsZWRfdGVzdF9jb3VudCgpLAotICAgICAgICAgIHVuaXRfdGVzdC5k
aXNhYmxlZF90ZXN0X2NvdW50KCksCi0gICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNv
bmRzKHVuaXRfdGVzdC5lbGFwc2VkX3RpbWUoKSkuY19zdHIoKSk7CisgIGNvbnN0IHN0ZDo6c3Ry
aW5nIGtUZXN0c3VpdGVzID0gInRlc3RzdWl0ZXMiOworCisgICpzdHJlYW0gPDwgIjw/eG1sIHZl
cnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCI/PlxuIjsKKyAgKnN0cmVhbSA8PCAiPCIg
PDwga1Rlc3RzdWl0ZXM7CisKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0
ZXMsICJ0ZXN0cyIsCisgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodW5p
dF90ZXN0LnJlcG9ydGFibGVfdGVzdF9jb3VudCgpKSk7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShz
dHJlYW0sIGtUZXN0c3VpdGVzLCAiZmFpbHVyZXMiLAorICAgICAgICAgICAgICAgICAgICAgU3Ry
ZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5mYWlsZWRfdGVzdF9jb3VudCgpKSk7CisgIE91dHB1
dFhtbEF0dHJpYnV0ZSgKKyAgICAgIHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJkaXNhYmxlZCIsCisg
ICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodW5pdF90ZXN0LnJlcG9ydGFibGVfZGlzYWJsZWRfdGVz
dF9jb3VudCgpKSk7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGVzLCAi
ZXJyb3JzIiwgIjAiKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKAorICAgICAgc3RyZWFtLCBrVGVz
dHN1aXRlcywgInRpbWVzdGFtcCIsCisgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNv
ODYwMSh1bml0X3Rlc3Quc3RhcnRfdGltZXN0YW1wKCkpKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRl
KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0aW1lIiwKKyAgICAgICAgICAgICAgICAgICAgIEZvcm1h
dFRpbWVJbk1pbGxpc0FzU2Vjb25kcyh1bml0X3Rlc3QuZWxhcHNlZF90aW1lKCkpKTsKKwogICBp
ZiAoR1RFU1RfRkxBRyhzaHVmZmxlKSkgewotICAgIGZwcmludGYob3V0LCAicmFuZG9tX3NlZWQ9
XCIlZFwiICIsIHVuaXRfdGVzdC5yYW5kb21fc2VlZCgpKTsKKyAgICBPdXRwdXRYbWxBdHRyaWJ1
dGUoc3RyZWFtLCBrVGVzdHN1aXRlcywgInJhbmRvbV9zZWVkIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5yYW5kb21fc2VlZCgpKSk7CisgIH0K
KyAgKnN0cmVhbSA8PCBUZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRlcyh1bml0X3Rlc3QuYWRf
aG9jX3Rlc3RfcmVzdWx0KCkpOworCisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0
c3VpdGVzLCAibmFtZSIsICJBbGxUZXN0cyIpOworICAqc3RyZWFtIDw8ICI+XG4iOworCisgIGZv
ciAoaW50IGkgPSAwOyBpIDwgdW5pdF90ZXN0LnRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpOyArK2kp
IHsKKyAgICBpZiAodW5pdF90ZXN0LkdldFRlc3RDYXNlKGkpLT5yZXBvcnRhYmxlX3Rlc3RfY291
bnQoKSA+IDApCisgICAgICBQcmludFhtbFRlc3RDYXNlKHN0cmVhbSwgKnVuaXRfdGVzdC5HZXRU
ZXN0Q2FzZShpKSk7CiAgIH0KLSAgZnByaW50ZihvdXQsICJuYW1lPVwiQWxsVGVzdHNcIj5cbiIp
OwotICBmb3IgKGludCBpID0gMDsgaSA8IHVuaXRfdGVzdC50b3RhbF90ZXN0X2Nhc2VfY291bnQo
KTsgKytpKQotICAgIFByaW50WG1sVGVzdENhc2Uob3V0LCAqdW5pdF90ZXN0LkdldFRlc3RDYXNl
KGkpKTsKLSAgZnByaW50ZihvdXQsICI8L3Rlc3RzdWl0ZXM+XG4iKTsKKyAgKnN0cmVhbSA8PCAi
PC8iIDw8IGtUZXN0c3VpdGVzIDw8ICI+XG4iOworfQorCit2b2lkIFhtbFVuaXRUZXN0UmVzdWx0
UHJpbnRlcjo6UHJpbnRYbWxUZXN0c0xpc3QoCisgICAgc3RkOjpvc3RyZWFtKiBzdHJlYW0sIGNv
bnN0IHN0ZDo6dmVjdG9yPFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMpIHsKKyAgY29uc3Qgc3RkOjpz
dHJpbmcga1Rlc3RzdWl0ZXMgPSAidGVzdHN1aXRlcyI7CisKKyAgKnN0cmVhbSA8PCAiPD94bWwg
dmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIj8+XG4iOworICAqc3RyZWFtIDw8ICI8
IiA8PCBrVGVzdHN1aXRlczsKKworICBpbnQgdG90YWxfdGVzdHMgPSAwOworICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHRlc3RfY2FzZXMuc2l6ZSgpOyArK2kpIHsKKyAgICB0b3RhbF90ZXN0cyAr
PSB0ZXN0X2Nhc2VzW2ldLT50b3RhbF90ZXN0X2NvdW50KCk7CisgIH0KKyAgT3V0cHV0WG1sQXR0
cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0ZXN0cyIsCisgICAgICAgICAgICAgICAgICAg
ICBTdHJlYW1hYmxlVG9TdHJpbmcodG90YWxfdGVzdHMpKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRl
KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJuYW1lIiwgIkFsbFRlc3RzIik7CisgICpzdHJlYW0gPDwg
Ij5cbiI7CisKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0X2Nhc2VzLnNpemUoKTsgKytp
KSB7CisgICAgUHJpbnRYbWxUZXN0Q2FzZShzdHJlYW0sICp0ZXN0X2Nhc2VzW2ldKTsKKyAgfQor
ICAqc3RyZWFtIDw8ICI8LyIgPDwga1Rlc3RzdWl0ZXMgPDwgIj5cbiI7CiB9CiAKIC8vIFByb2R1
Y2VzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdGVzdCBwcm9wZXJ0aWVzIGluIGEgcmVzdWx0
IGFzIHNwYWNlCiAvLyBkZWxpbWl0ZWQgWE1MIGF0dHJpYnV0ZXMgYmFzZWQgb24gdGhlIHByb3Bl
cnR5IGtleT0idmFsdWUiIHBhaXJzLgotU3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6
VGVzdFByb3BlcnRpZXNBc1htbEF0dHJpYnV0ZXMoCitzdGQ6OnN0cmluZyBYbWxVbml0VGVzdFJl
c3VsdFByaW50ZXI6OlRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKAogICAgIGNvbnN0IFRl
c3RSZXN1bHQmIHJlc3VsdCkgewogICBNZXNzYWdlIGF0dHJpYnV0ZXM7CiAgIGZvciAoaW50IGkg
PSAwOyBpIDwgcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKTsgKytpKSB7CkBAIC0zMjk5LDUy
ICszODUxLDU2MiBAQCBTdHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpUZXN0UHJvcGVy
dGllc0FzWG1sQXR0cmlidXRlcygKICAgcmV0dXJuIGF0dHJpYnV0ZXMuR2V0U3RyaW5nKCk7CiB9
CiAKK3ZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPdXRwdXRYbWxUZXN0UHJvcGVydGll
cygKKyAgICBzdGQ6Om9zdHJlYW0qIHN0cmVhbSwgY29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0KSB7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtQcm9wZXJ0aWVzID0gInByb3BlcnRpZXMiOworICBjb25z
dCBzdGQ6OnN0cmluZyBrUHJvcGVydHkgPSAicHJvcGVydHkiOworCisgIGlmIChyZXN1bHQudGVz
dF9wcm9wZXJ0eV9jb3VudCgpIDw9IDApIHsKKyAgICByZXR1cm47CisgIH0KKworICAqc3RyZWFt
IDw8ICI8IiA8PCBrUHJvcGVydGllcyA8PCAiPlxuIjsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBy
ZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpOyArK2kpIHsKKyAgICBjb25zdCBUZXN0UHJvcGVy
dHkmIHByb3BlcnR5ID0gcmVzdWx0LkdldFRlc3RQcm9wZXJ0eShpKTsKKyAgICAqc3RyZWFtIDw8
ICI8IiA8PCBrUHJvcGVydHk7CisgICAgKnN0cmVhbSA8PCAiIG5hbWU9XCIiIDw8IEVzY2FwZVht
bEF0dHJpYnV0ZShwcm9wZXJ0eS5rZXkoKSkgPDwgIlwiIjsKKyAgICAqc3RyZWFtIDw8ICIgdmFs
dWU9XCIiIDw8IEVzY2FwZVhtbEF0dHJpYnV0ZShwcm9wZXJ0eS52YWx1ZSgpKSA8PCAiXCIiOwor
ICAgICpzdHJlYW0gPDwgIi8+XG4iOworICB9CisgICpzdHJlYW0gPDwgIjwvIiA8PCBrUHJvcGVy
dGllcyA8PCAiPlxuIjsKK30KKwogLy8gRW5kIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcgogCi0v
LyBDbGFzcyBTY29wZWRUcmFjZQorLy8gVGhpcyBjbGFzcyBnZW5lcmF0ZXMgYW4gSlNPTiBvdXRw
dXQgZmlsZS4KK2NsYXNzIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIgOiBwdWJsaWMgRW1wdHlU
ZXN0RXZlbnRMaXN0ZW5lciB7CisgcHVibGljOgorICBleHBsaWNpdCBKc29uVW5pdFRlc3RSZXN1
bHRQcmludGVyKGNvbnN0IGNoYXIqIG91dHB1dF9maWxlKTsKIAotLy8gUHVzaGVzIHRoZSBnaXZl
biBzb3VyY2UgZmlsZSBsb2NhdGlvbiBhbmQgbWVzc2FnZSBvbnRvIGEgcGVyLXRocmVhZAotLy8g
dHJhY2Ugc3RhY2sgbWFpbnRhaW5lZCBieSBHb29nbGUgVGVzdC4KLS8vIEwgPCBVbml0VGVzdDo6
bXV0ZXhfCi1TY29wZWRUcmFjZTo6U2NvcGVkVHJhY2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxp
bmUsIGNvbnN0IE1lc3NhZ2UmIG1lc3NhZ2UpIHsKLSAgVHJhY2VJbmZvIHRyYWNlOwotICB0cmFj
ZS5maWxlID0gZmlsZTsKLSAgdHJhY2UubGluZSA9IGxpbmU7Ci0gIHRyYWNlLm1lc3NhZ2UgPSBt
ZXNzYWdlLkdldFN0cmluZygpOworICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uRW5kKGNv
bnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsIGludCBpdGVyYXRpb24pOwogCi0gIFVuaXRUZXN0OjpH
ZXRJbnN0YW5jZSgpLT5QdXNoR1Rlc3RUcmFjZSh0cmFjZSk7CisgIC8vIFByaW50cyBhbiBKU09O
IHN1bW1hcnkgb2YgYWxsIHVuaXQgdGVzdHMuCisgIHN0YXRpYyB2b2lkIFByaW50SnNvblRlc3RM
aXN0KDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMpOworCisgcHJpdmF0
ZToKKyAgLy8gUmV0dXJucyBhbiBKU09OLWVzY2FwZWQgY29weSBvZiB0aGUgaW5wdXQgc3RyaW5n
IHN0ci4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEVzY2FwZUpzb24oY29uc3Qgc3RkOjpzdHJpbmcm
IHN0cik7CisKKyAgLy8vLyBWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBhdHRyaWJ1dGUgYmVsb25n
cyB0byB0aGUgZ2l2ZW4gZWxlbWVudCBhbmQKKyAgLy8vLyBzdHJlYW1zIHRoZSBhdHRyaWJ1dGUg
YXMgSlNPTi4KKyAgc3RhdGljIHZvaWQgT3V0cHV0SnNvbktleShzdGQ6Om9zdHJlYW0qIHN0cmVh
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZWxlbWVu
dF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5kZW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29tbWEgPSB0cnVlKTsKKyAgc3Rh
dGljIHZvaWQgT3V0cHV0SnNvbktleShzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZWxlbWVudF9uYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgaW5kZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgY29tbWEgPSB0cnVlKTsKKworICAvLyBTdHJlYW1zIGEgSlNPTiByZXByZXNlbnRhdGlv
biBvZiBhIFRlc3RJbmZvIG9iamVjdC4KKyAgc3RhdGljIHZvaWQgT3V0cHV0SnNvblRlc3RJbmZv
KDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pOworCisgIC8vIFByaW50cyBhIEpTT04g
cmVwcmVzZW50YXRpb24gb2YgYSBUZXN0Q2FzZSBvYmplY3QKKyAgc3RhdGljIHZvaWQgUHJpbnRK
c29uVGVzdENhc2UoOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSk7CisKKyAgLy8gUHJpbnRzIGEg
SlNPTiBzdW1tYXJ5IG9mIHVuaXRfdGVzdCB0byBvdXRwdXQgc3RyZWFtIG91dC4KKyAgc3RhdGlj
IHZvaWQgUHJpbnRKc29uVW5pdFRlc3QoOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCk7CisKKyAg
Ly8gUHJvZHVjZXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0ZXN0IHByb3BlcnRpZXMgaW4g
YSByZXN1bHQgYXMKKyAgLy8gYSBKU09OIGRpY3Rpb25hcnkuCisgIHN0YXRpYyBzdGQ6OnN0cmlu
ZyBUZXN0UHJvcGVydGllc0FzSnNvbihjb25zdCBUZXN0UmVzdWx0JiByZXN1bHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5k
ZW50KTsKKworICAvLyBUaGUgb3V0cHV0IGZpbGUuCisgIGNvbnN0IHN0ZDo6c3RyaW5nIG91dHB1
dF9maWxlXzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEpzb25Vbml0VGVz
dFJlc3VsdFByaW50ZXIpOworfTsKKworLy8gQ3JlYXRlcyBhIG5ldyBKc29uVW5pdFRlc3RSZXN1
bHRQcmludGVyLgorSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6SnNvblVuaXRUZXN0UmVzdWx0
UHJpbnRlcihjb25zdCBjaGFyKiBvdXRwdXRfZmlsZSkKKyAgICA6IG91dHB1dF9maWxlXyhvdXRw
dXRfZmlsZSkgeworICBpZiAob3V0cHV0X2ZpbGVfLmVtcHR5KCkpIHsKKyAgICBHVEVTVF9MT0df
KEZBVEFMKSA8PCAiSlNPTiBvdXRwdXQgZmlsZSBtYXkgbm90IGJlIG51bGwiOworICB9CiB9CiAK
LS8vIFBvcHMgdGhlIGluZm8gcHVzaGVkIGJ5IHRoZSBjJ3Rvci4KLS8vIEwgPCBVbml0VGVzdDo6
bXV0ZXhfCi1TY29wZWRUcmFjZTo6flNjb3BlZFRyYWNlKCkgewotICBVbml0VGVzdDo6R2V0SW5z
dGFuY2UoKS0+UG9wR1Rlc3RUcmFjZSgpOwordm9pZCBKc29uVW5pdFRlc3RSZXN1bHRQcmludGVy
OjpPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IC8qaXRlcmF0aW9u
Ki8pIHsKKyAgRklMRSoganNvbm91dCA9IE9wZW5GaWxlRm9yV3JpdGluZyhvdXRwdXRfZmlsZV8p
OworICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07CisgIFByaW50SnNvblVuaXRUZXN0KCZzdHJl
YW0sIHVuaXRfdGVzdCk7CisgIGZwcmludGYoanNvbm91dCwgIiVzIiwgU3RyaW5nU3RyZWFtVG9T
dHJpbmcoJnN0cmVhbSkuY19zdHIoKSk7CisgIGZjbG9zZShqc29ub3V0KTsKIH0KIAorLy8gUmV0
dXJucyBhbiBKU09OLWVzY2FwZWQgY29weSBvZiB0aGUgaW5wdXQgc3RyaW5nIHN0ci4KK3N0ZDo6
c3RyaW5nIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6OkVzY2FwZUpzb24oY29uc3Qgc3RkOjpz
dHJpbmcmIHN0cikgeworICBNZXNzYWdlIG07CiAKLS8vIGNsYXNzIE9zU3RhY2tUcmFjZUdldHRl
cgorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ci5zaXplKCk7ICsraSkgeworICAgIGNvbnN0
IGNoYXIgY2ggPSBzdHJbaV07CisgICAgc3dpdGNoIChjaCkgeworICAgICAgY2FzZSAnXFwnOgor
ICAgICAgY2FzZSAnIic6CisgICAgICBjYXNlICcvJzoKKyAgICAgICAgbSA8PCAnXFwnIDw8IGNo
OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ1xiJzoKKyAgICAgICAgbSA8PCAiXFxiIjsK
KyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdcdCc6CisgICAgICAgIG0gPDwgIlxcdCI7Cisg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnXG4nOgorICAgICAgICBtIDw8ICJcXG4iOworICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgJ1xmJzoKKyAgICAgICAgbSA8PCAiXFxmIjsKKyAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlICdccic6CisgICAgICAgIG0gPDwgIlxcciI7CisgICAgICAg
IGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKGNoIDwgJyAnKSB7CisgICAgICAg
ICAgbSA8PCAiXFx1MDAiIDw8IFN0cmluZzo6Rm9ybWF0Qnl0ZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPihjaCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIG0gPDwgY2g7CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICB9CiAKLS8vIFJldHVybnMgdGhlIGN1cnJl
bnQgT1Mgc3RhY2sgdHJhY2UgYXMgYSBTdHJpbmcuICBQYXJhbWV0ZXJzOgotLy8KLS8vICAgbWF4
X2RlcHRoICAtIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMgdG8gYmUgaW5jbHVk
ZWQKLS8vICAgICAgICAgICAgICAgIGluIHRoZSB0cmFjZS4KLS8vICAgc2tpcF9jb3VudCAtIHRo
ZSBudW1iZXIgb2YgdG9wIGZyYW1lcyB0byBiZSBza2lwcGVkOyBkb2Vzbid0IGNvdW50Ci0vLyAg
ICAgICAgICAgICAgICBhZ2FpbnN0IG1heF9kZXB0aC4KLS8vCi0vLyBMIDwgbXV0ZXhfCi0vLyBX
ZSB1c2UgIkwgPCBtdXRleF8iIHRvIGRlbm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBtYXkgYWNxdWly
ZSBtdXRleF8uCi1TdHJpbmcgT3NTdGFja1RyYWNlR2V0dGVyOjpDdXJyZW50U3RhY2tUcmFjZShp
bnQsIGludCkgewotICByZXR1cm4gU3RyaW5nKCIiKTsKKyAgcmV0dXJuIG0uR2V0U3RyaW5nKCk7
CiB9CiAKLS8vIEwgPCBtdXRleF8KLXZvaWQgT3NTdGFja1RyYWNlR2V0dGVyOjpVcG9uTGVhdmlu
Z0dUZXN0KCkgeworLy8gVGhlIGZvbGxvd2luZyByb3V0aW5lcyBnZW5lcmF0ZSBhbiBKU09OIHJl
cHJlc2VudGF0aW9uIG9mIGEgVW5pdFRlc3QKKy8vIG9iamVjdC4KKworLy8gRm9ybWF0cyB0aGUg
Z2l2ZW4gdGltZSBpbiBtaWxsaXNlY29uZHMgYXMgc2Vjb25kcy4KK3N0YXRpYyBzdGQ6OnN0cmlu
ZyBGb3JtYXRUaW1lSW5NaWxsaXNBc0R1cmF0aW9uKFRpbWVJbk1pbGxpcyBtcykgeworICA6OnN0
ZDo6c3RyaW5nc3RyZWFtIHNzOworICBzcyA8PCAoc3RhdGljX2Nhc3Q8ZG91YmxlPihtcykgKiAx
ZS0zKSA8PCAicyI7CisgIHJldHVybiBzcy5zdHIoKTsKIH0KIAotY29uc3QgY2hhciogY29uc3QK
LU9zU3RhY2tUcmFjZUdldHRlcjo6a0VsaWRlZEZyYW1lc01hcmtlciA9CisvLyBDb252ZXJ0cyB0
aGUgZ2l2ZW4gZXBvY2ggdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gYSBkYXRlIHN0cmluZyBpbiB0
aGUKKy8vIFJGQzMzMzkgZm9ybWF0LCB3aXRob3V0IHRoZSB0aW1lem9uZSBpbmZvcm1hdGlvbi4K
K3N0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzUkZDMzMzOShUaW1l
SW5NaWxsaXMgbXMpIHsKKyAgc3RydWN0IHRtIHRpbWVfc3RydWN0OworICBpZiAoIVBvcnRhYmxl
TG9jYWx0aW1lKHN0YXRpY19jYXN0PHRpbWVfdD4obXMgLyAxMDAwKSwgJnRpbWVfc3RydWN0KSkK
KyAgICByZXR1cm4gIiI7CisgIC8vIFlZWVktTU0tRERUaGg6bW06c3MKKyAgcmV0dXJuIFN0cmVh
bWFibGVUb1N0cmluZyh0aW1lX3N0cnVjdC50bV95ZWFyICsgMTkwMCkgKyAiLSIgKworICAgICAg
U3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1fbW9uICsgMSkgKyAiLSIgKwor
ICAgICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1fbWRheSkgKyAiVCIg
KworICAgICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1faG91cikgKyAi
OiIgKworICAgICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1fbWluKSAr
ICI6IiArCisgICAgICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9zZWMp
ICsgIloiOworfQorCitzdGF0aWMgaW5saW5lIHN0ZDo6c3RyaW5nIEluZGVudChpbnQgd2lkdGgp
IHsKKyAgcmV0dXJuIHN0ZDo6c3RyaW5nKHdpZHRoLCAnICcpOworfQorCit2b2lkIEpzb25Vbml0
VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dEpzb25LZXkoCisgICAgc3RkOjpvc3RyZWFtKiBzdHJl
YW0sCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGVsZW1lbnRfbmFtZSwKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyYgbmFtZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUsCisgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIGluZGVudCwKKyAgICBib29sIGNvbW1hKSB7CisgIGNvbnN0IHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiYgYWxsb3dlZF9uYW1lcyA9CisgICAgICBHZXRSZXNlcnZlZEF0dHJp
YnV0ZXNGb3JFbGVtZW50KGVsZW1lbnRfbmFtZSk7CisKKyAgR1RFU1RfQ0hFQ0tfKHN0ZDo6Zmlu
ZChhbGxvd2VkX25hbWVzLmJlZ2luKCksIGFsbG93ZWRfbmFtZXMuZW5kKCksIG5hbWUpICE9Cisg
ICAgICAgICAgICAgICAgICAgYWxsb3dlZF9uYW1lcy5lbmQoKSkKKyAgICAgIDw8ICJLZXkgXCIi
IDw8IG5hbWUgPDwgIlwiIGlzIG5vdCBhbGxvd2VkIGZvciB2YWx1ZSBcIiIgPDwgZWxlbWVudF9u
YW1lCisgICAgICA8PCAiXCIuIjsKKworICAqc3RyZWFtIDw8IGluZGVudCA8PCAiXCIiIDw8IG5h
bWUgPDwgIlwiOiBcIiIgPDwgRXNjYXBlSnNvbih2YWx1ZSkgPDwgIlwiIjsKKyAgaWYgKGNvbW1h
KQorICAgICpzdHJlYW0gPDwgIixcbiI7Cit9CisKK3ZvaWQgSnNvblVuaXRUZXN0UmVzdWx0UHJp
bnRlcjo6T3V0cHV0SnNvbktleSgKKyAgICBzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyYgZWxlbWVudF9uYW1lLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1l
LAorICAgIGludCB2YWx1ZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5kZW50LAorICAgIGJv
b2wgY29tbWEpIHsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBhbGxvd2VkX25h
bWVzID0KKyAgICAgIEdldFJlc2VydmVkQXR0cmlidXRlc0ZvckVsZW1lbnQoZWxlbWVudF9uYW1l
KTsKKworICBHVEVTVF9DSEVDS18oc3RkOjpmaW5kKGFsbG93ZWRfbmFtZXMuYmVnaW4oKSwgYWxs
b3dlZF9uYW1lcy5lbmQoKSwgbmFtZSkgIT0KKyAgICAgICAgICAgICAgICAgICBhbGxvd2VkX25h
bWVzLmVuZCgpKQorICAgICAgPDwgIktleSBcIiIgPDwgbmFtZSA8PCAiXCIgaXMgbm90IGFsbG93
ZWQgZm9yIHZhbHVlIFwiIiA8PCBlbGVtZW50X25hbWUKKyAgICAgIDw8ICJcIi4iOworCisgICpz
dHJlYW0gPDwgaW5kZW50IDw8ICJcIiIgPDwgbmFtZSA8PCAiXCI6ICIgPDwgU3RyZWFtYWJsZVRv
U3RyaW5nKHZhbHVlKTsKKyAgaWYgKGNvbW1hKQorICAgICpzdHJlYW0gPDwgIixcbiI7Cit9CisK
Ky8vIFByaW50cyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgYSBUZXN0SW5mbyBvYmplY3QuCit2
b2lkIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dEpzb25UZXN0SW5mbyg6OnN0ZDo6
b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0SW5mbyYgdGVzdF9p
bmZvKSB7CisgIGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCA9ICp0ZXN0X2luZm8ucmVzdWx0KCk7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0Y2FzZSA9ICJ0ZXN0Y2FzZSI7CisgIGNvbnN0IHN0
ZDo6c3RyaW5nIGtJbmRlbnQgPSBJbmRlbnQoMTApOworCisgICpzdHJlYW0gPDwgSW5kZW50KDgp
IDw8ICJ7XG4iOworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RjYXNlLCAibmFtZSIsIHRl
c3RfaW5mby5uYW1lKCksIGtJbmRlbnQpOworCisgIGlmICh0ZXN0X2luZm8udmFsdWVfcGFyYW0o
KSAhPSBOVUxMKSB7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0Y2FzZSwgInZhbHVl
X3BhcmFtIiwKKyAgICAgICAgICAgICAgICAgIHRlc3RfaW5mby52YWx1ZV9wYXJhbSgpLCBrSW5k
ZW50KTsKKyAgfQorICBpZiAodGVzdF9pbmZvLnR5cGVfcGFyYW0oKSAhPSBOVUxMKSB7CisgICAg
T3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0Y2FzZSwgInR5cGVfcGFyYW0iLCB0ZXN0X2luZm8u
dHlwZV9wYXJhbSgpLAorICAgICAgICAgICAgICAgICAga0luZGVudCk7CisgIH0KKyAgaWYgKEdU
RVNUX0ZMQUcobGlzdF90ZXN0cykpIHsKKyAgICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3Rj
YXNlLCAiZmlsZSIsIHRlc3RfaW5mby5maWxlKCksIGtJbmRlbnQpOworICAgIE91dHB1dEpzb25L
ZXkoc3RyZWFtLCBrVGVzdGNhc2UsICJsaW5lIiwgdGVzdF9pbmZvLmxpbmUoKSwga0luZGVudCwg
ZmFsc2UpOworICAgICpzdHJlYW0gPDwgIlxuIiA8PCBJbmRlbnQoOCkgPDwgIn0iOworICAgIHJl
dHVybjsKKyAgfQorCisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdGNhc2UsICJzdGF0dXMi
LAorICAgICAgICAgICAgICAgIHRlc3RfaW5mby5zaG91bGRfcnVuKCkgPyAiUlVOIiA6ICJOT1RS
VU4iLCBrSW5kZW50KTsKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0Y2FzZSwgInRpbWUi
LAorICAgICAgICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzRHVyYXRpb24ocmVzdWx0LmVs
YXBzZWRfdGltZSgpKSwga0luZGVudCk7CisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdGNh
c2UsICJjbGFzc25hbWUiLCB0ZXN0X2Nhc2VfbmFtZSwga0luZGVudCwgZmFsc2UpOworICAqc3Ry
ZWFtIDw8IFRlc3RQcm9wZXJ0aWVzQXNKc29uKHJlc3VsdCwga0luZGVudCk7CisKKyAgaW50IGZh
aWx1cmVzID0gMDsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHQudG90YWxfcGFydF9jb3Vu
dCgpOyArK2kpIHsKKyAgICBjb25zdCBUZXN0UGFydFJlc3VsdCYgcGFydCA9IHJlc3VsdC5HZXRU
ZXN0UGFydFJlc3VsdChpKTsKKyAgICBpZiAocGFydC5mYWlsZWQoKSkgeworICAgICAgKnN0cmVh
bSA8PCAiLFxuIjsKKyAgICAgIGlmICgrK2ZhaWx1cmVzID09IDEpIHsKKyAgICAgICAgKnN0cmVh
bSA8PCBrSW5kZW50IDw8ICJcIiIgPDwgImZhaWx1cmVzIiA8PCAiXCI6IFtcbiI7CisgICAgICB9
CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyBsb2NhdGlvbiA9CisgICAgICAgICAgaW50ZXJuYWw6
OkZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24ocGFydC5maWxlX25hbWUoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXJ0LmxpbmVfbnVtYmVyKCkpOworICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgbWVzc2FnZSA9
IEVzY2FwZUpzb24obG9jYXRpb24gKyAiXG4iICsgcGFydC5tZXNzYWdlKCkpOworICAgICAgKnN0
cmVhbSA8PCBrSW5kZW50IDw8ICIgIHtcbiIKKyAgICAgICAgICAgICAgPDwga0luZGVudCA8PCAi
ICAgIFwiZmFpbHVyZVwiOiBcIiIgPDwgbWVzc2FnZSA8PCAiXCIsXG4iCisgICAgICAgICAgICAg
IDw8IGtJbmRlbnQgPDwgIiAgICBcInR5cGVcIjogXCJcIlxuIgorICAgICAgICAgICAgICA8PCBr
SW5kZW50IDw8ICIgIH0iOworICAgIH0KKyAgfQorCisgIGlmIChmYWlsdXJlcyA+IDApCisgICAg
KnN0cmVhbSA8PCAiXG4iIDw8IGtJbmRlbnQgPDwgIl0iOworICAqc3RyZWFtIDw8ICJcbiIgPDwg
SW5kZW50KDgpIDw8ICJ9IjsKK30KKworLy8gUHJpbnRzIGFuIEpTT04gcmVwcmVzZW50YXRpb24g
b2YgYSBUZXN0Q2FzZSBvYmplY3QKK3ZvaWQgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJp
bnRKc29uVGVzdENhc2Uoc3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2Up
IHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RzdWl0ZSA9ICJ0ZXN0c3VpdGUiOworICBjb25z
dCBzdGQ6OnN0cmluZyBrSW5kZW50ID0gSW5kZW50KDYpOworCisgICpzdHJlYW0gPDwgSW5kZW50
KDQpIDw8ICJ7XG4iOworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZSwgIm5hbWUi
LCB0ZXN0X2Nhc2UubmFtZSgpLCBrSW5kZW50KTsKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtU
ZXN0c3VpdGUsICJ0ZXN0cyIsIHRlc3RfY2FzZS5yZXBvcnRhYmxlX3Rlc3RfY291bnQoKSwKKyAg
ICAgICAgICAgICAgICBrSW5kZW50KTsKKyAgaWYgKCFHVEVTVF9GTEFHKGxpc3RfdGVzdHMpKSB7
CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGUsICJmYWlsdXJlcyIsIHRlc3Rf
Y2FzZS5mYWlsZWRfdGVzdF9jb3VudCgpLAorICAgICAgICAgICAgICAgICAga0luZGVudCk7Cisg
ICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGUsICJkaXNhYmxlZCIsCisgICAgICAg
ICAgICAgICAgICB0ZXN0X2Nhc2UucmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCksIGtJ
bmRlbnQpOworICAgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRlLCAiZXJyb3JzIiwg
MCwga0luZGVudCk7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGUsICJ0aW1l
IiwKKyAgICAgICAgICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzRHVyYXRpb24odGVzdF9j
YXNlLmVsYXBzZWRfdGltZSgpKSwKKyAgICAgICAgICAgICAgICAgIGtJbmRlbnQsIGZhbHNlKTsK
KyAgICAqc3RyZWFtIDw8IFRlc3RQcm9wZXJ0aWVzQXNKc29uKHRlc3RfY2FzZS5hZF9ob2NfdGVz
dF9yZXN1bHQoKSwga0luZGVudCkKKyAgICAgICAgICAgIDw8ICIsXG4iOworICB9CisKKyAgKnN0
cmVhbSA8PCBrSW5kZW50IDw8ICJcIiIgPDwga1Rlc3RzdWl0ZSA8PCAiXCI6IFtcbiI7CisKKyAg
Ym9vbCBjb21tYSA9IGZhbHNlOworICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RfY2FzZS50b3Rh
bF90ZXN0X2NvdW50KCk7ICsraSkgeworICAgIGlmICh0ZXN0X2Nhc2UuR2V0VGVzdEluZm8oaSkt
PmlzX3JlcG9ydGFibGUoKSkgeworICAgICAgaWYgKGNvbW1hKSB7CisgICAgICAgICpzdHJlYW0g
PDwgIixcbiI7CisgICAgICB9IGVsc2UgeworICAgICAgICBjb21tYSA9IHRydWU7CisgICAgICB9
CisgICAgICBPdXRwdXRKc29uVGVzdEluZm8oc3RyZWFtLCB0ZXN0X2Nhc2UubmFtZSgpLCAqdGVz
dF9jYXNlLkdldFRlc3RJbmZvKGkpKTsKKyAgICB9CisgIH0KKyAgKnN0cmVhbSA8PCAiXG4iIDw8
IGtJbmRlbnQgPDwgIl1cbiIgPDwgSW5kZW50KDQpIDw8ICJ9IjsKK30KKworLy8gUHJpbnRzIGEg
SlNPTiBzdW1tYXJ5IG9mIHVuaXRfdGVzdCB0byBvdXRwdXQgc3RyZWFtIG91dC4KK3ZvaWQgSnNv
blVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRKc29uVW5pdFRlc3Qoc3RkOjpvc3RyZWFtKiBz
dHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3Rz
dWl0ZXMgPSAidGVzdHN1aXRlcyI7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtJbmRlbnQgPSBJbmRl
bnQoMik7CisgICpzdHJlYW0gPDwgIntcbiI7CisKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtU
ZXN0c3VpdGVzLCAidGVzdHMiLCB1bml0X3Rlc3QucmVwb3J0YWJsZV90ZXN0X2NvdW50KCksCisg
ICAgICAgICAgICAgICAga0luZGVudCk7CisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1
aXRlcywgImZhaWx1cmVzIiwgdW5pdF90ZXN0LmZhaWxlZF90ZXN0X2NvdW50KCksCisgICAgICAg
ICAgICAgICAga0luZGVudCk7CisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRlcywg
ImRpc2FibGVkIiwKKyAgICAgICAgICAgICAgICB1bml0X3Rlc3QucmVwb3J0YWJsZV9kaXNhYmxl
ZF90ZXN0X2NvdW50KCksIGtJbmRlbnQpOworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3Rz
dWl0ZXMsICJlcnJvcnMiLCAwLCBrSW5kZW50KTsKKyAgaWYgKEdURVNUX0ZMQUcoc2h1ZmZsZSkp
IHsKKyAgICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJyYW5kb21fc2VlZCIs
IHVuaXRfdGVzdC5yYW5kb21fc2VlZCgpLAorICAgICAgICAgICAgICAgICAga0luZGVudCk7Cisg
IH0KKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAidGltZXN0YW1wIiwKKyAg
ICAgICAgICAgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzUkZDMzMzOSh1bml0X3Rlc3Qu
c3RhcnRfdGltZXN0YW1wKCkpLAorICAgICAgICAgICAgICAgIGtJbmRlbnQpOworICBPdXRwdXRK
c29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0aW1lIiwKKyAgICAgICAgICAgICAgICBGb3Jt
YXRUaW1lSW5NaWxsaXNBc0R1cmF0aW9uKHVuaXRfdGVzdC5lbGFwc2VkX3RpbWUoKSksIGtJbmRl
bnQsCisgICAgICAgICAgICAgICAgZmFsc2UpOworCisgICpzdHJlYW0gPDwgVGVzdFByb3BlcnRp
ZXNBc0pzb24odW5pdF90ZXN0LmFkX2hvY190ZXN0X3Jlc3VsdCgpLCBrSW5kZW50KQorICAgICAg
ICAgIDw8ICIsXG4iOworCisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRlcywgIm5h
bWUiLCAiQWxsVGVzdHMiLCBrSW5kZW50KTsKKyAgKnN0cmVhbSA8PCBrSW5kZW50IDw8ICJcIiIg
PDwga1Rlc3RzdWl0ZXMgPDwgIlwiOiBbXG4iOworCisgIGJvb2wgY29tbWEgPSBmYWxzZTsKKyAg
Zm9yIChpbnQgaSA9IDA7IGkgPCB1bml0X3Rlc3QudG90YWxfdGVzdF9jYXNlX2NvdW50KCk7ICsr
aSkgeworICAgIGlmICh1bml0X3Rlc3QuR2V0VGVzdENhc2UoaSktPnJlcG9ydGFibGVfdGVzdF9j
b3VudCgpID4gMCkgeworICAgICAgaWYgKGNvbW1hKSB7CisgICAgICAgICpzdHJlYW0gPDwgIixc
biI7CisgICAgICB9IGVsc2UgeworICAgICAgICBjb21tYSA9IHRydWU7CisgICAgICB9CisgICAg
ICBQcmludEpzb25UZXN0Q2FzZShzdHJlYW0sICp1bml0X3Rlc3QuR2V0VGVzdENhc2UoaSkpOwor
ICAgIH0KKyAgfQorCisgICpzdHJlYW0gPDwgIlxuIiA8PCBrSW5kZW50IDw8ICJdXG4iIDw8ICJ9
XG4iOworfQorCit2b2lkIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6OlByaW50SnNvblRlc3RM
aXN0KAorICAgIHN0ZDo6b3N0cmVhbSogc3RyZWFtLCBjb25zdCBzdGQ6OnZlY3RvcjxUZXN0Q2Fz
ZSo+JiB0ZXN0X2Nhc2VzKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0c3VpdGVzID0gInRl
c3RzdWl0ZXMiOworICBjb25zdCBzdGQ6OnN0cmluZyBrSW5kZW50ID0gSW5kZW50KDIpOworICAq
c3RyZWFtIDw8ICJ7XG4iOworICBpbnQgdG90YWxfdGVzdHMgPSAwOworICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHRlc3RfY2FzZXMuc2l6ZSgpOyArK2kpIHsKKyAgICB0b3RhbF90ZXN0cyArPSB0
ZXN0X2Nhc2VzW2ldLT50b3RhbF90ZXN0X2NvdW50KCk7CisgIH0KKyAgT3V0cHV0SnNvbktleShz
dHJlYW0sIGtUZXN0c3VpdGVzLCAidGVzdHMiLCB0b3RhbF90ZXN0cywga0luZGVudCk7CisKKyAg
T3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAibmFtZSIsICJBbGxUZXN0cyIsIGtJ
bmRlbnQpOworICAqc3RyZWFtIDw8IGtJbmRlbnQgPDwgIlwiIiA8PCBrVGVzdHN1aXRlcyA8PCAi
XCI6IFtcbiI7CisKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0X2Nhc2VzLnNpemUoKTsg
KytpKSB7CisgICAgaWYgKGkgIT0gMCkgeworICAgICAgKnN0cmVhbSA8PCAiLFxuIjsKKyAgICB9
CisgICAgUHJpbnRKc29uVGVzdENhc2Uoc3RyZWFtLCAqdGVzdF9jYXNlc1tpXSk7CisgIH0KKwor
ICAqc3RyZWFtIDw8ICJcbiIKKyAgICAgICAgICA8PCBrSW5kZW50IDw8ICJdXG4iCisgICAgICAg
ICAgPDwgIn1cbiI7Cit9CisvLyBQcm9kdWNlcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHRl
c3QgcHJvcGVydGllcyBpbiBhIHJlc3VsdCBhcworLy8gYSBKU09OIGRpY3Rpb25hcnkuCitzdGQ6
OnN0cmluZyBKc29uVW5pdFRlc3RSZXN1bHRQcmludGVyOjpUZXN0UHJvcGVydGllc0FzSnNvbigK
KyAgICBjb25zdCBUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbmRlbnQp
IHsKKyAgTWVzc2FnZSBhdHRyaWJ1dGVzOworICBmb3IgKGludCBpID0gMDsgaSA8IHJlc3VsdC50
ZXN0X3Byb3BlcnR5X2NvdW50KCk7ICsraSkgeworICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgcHJv
cGVydHkgPSByZXN1bHQuR2V0VGVzdFByb3BlcnR5KGkpOworICAgIGF0dHJpYnV0ZXMgPDwgIixc
biIgPDwgaW5kZW50IDw8ICJcIiIgPDwgcHJvcGVydHkua2V5KCkgPDwgIlwiOiAiCisgICAgICAg
ICAgICAgICA8PCAiXCIiIDw8IEVzY2FwZUpzb24ocHJvcGVydHkudmFsdWUoKSkgPDwgIlwiIjsK
KyAgfQorICByZXR1cm4gYXR0cmlidXRlcy5HZXRTdHJpbmcoKTsKK30KKworLy8gRW5kIEpzb25V
bml0VGVzdFJlc3VsdFByaW50ZXIKKworI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKwor
Ly8gQ2hlY2tzIGlmIHN0ciBjb250YWlucyAnPScsICcmJywgJyUnIG9yICdcbicgY2hhcmFjdGVy
cy4gSWYgeWVzLAorLy8gcmVwbGFjZXMgdGhlbSBieSAiJXh4IiB3aGVyZSB4eCBpcyB0aGVpciBo
ZXhhZGVjaW1hbCB2YWx1ZS4gRm9yCisvLyBleGFtcGxlLCByZXBsYWNlcyAiPSIgd2l0aCAiJTNE
Ii4gIFRoaXMgYWxnb3JpdGhtIGlzIE8oc3RybGVuKHN0cikpCisvLyBpbiBib3RoIHRpbWUgYW5k
IHNwYWNlIC0tIGltcG9ydGFudCBhcyB0aGUgaW5wdXQgc3RyIG1heSBjb250YWluIGFuCisvLyBh
cmJpdHJhcmlseSBsb25nIHRlc3QgZmFpbHVyZSBtZXNzYWdlIGFuZCBzdGFjayB0cmFjZS4KK3N0
ZDo6c3RyaW5nIFN0cmVhbWluZ0xpc3RlbmVyOjpVcmxFbmNvZGUoY29uc3QgY2hhciogc3RyKSB7
CisgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKKyAgcmVzdWx0LnJlc2VydmUoc3RybGVuKHN0cikgKyAx
KTsKKyAgZm9yIChjaGFyIGNoID0gKnN0cjsgY2ggIT0gJ1wwJzsgY2ggPSAqKytzdHIpIHsKKyAg
ICBzd2l0Y2ggKGNoKSB7CisgICAgICBjYXNlICclJzoKKyAgICAgIGNhc2UgJz0nOgorICAgICAg
Y2FzZSAnJic6CisgICAgICBjYXNlICdcbic6CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIiUiICsg
U3RyaW5nOjpGb3JtYXRCeXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkpOworICAg
ICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soY2gp
OworICAgICAgICBicmVhazsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9p
ZCBTdHJlYW1pbmdMaXN0ZW5lcjo6U29ja2V0V3JpdGVyOjpNYWtlQ29ubmVjdGlvbigpIHsKKyAg
R1RFU1RfQ0hFQ0tfKHNvY2tmZF8gPT0gLTEpCisgICAgICA8PCAiTWFrZUNvbm5lY3Rpb24oKSBj
YW4ndCBiZSBjYWxsZWQgd2hlbiB0aGVyZSBpcyBhbHJlYWR5IGEgY29ubmVjdGlvbi4iOworCisg
IGFkZHJpbmZvIGhpbnRzOworICBtZW1zZXQoJmhpbnRzLCAwLCBzaXplb2YoaGludHMpKTsKKyAg
aGludHMuYWlfZmFtaWx5ID0gQUZfVU5TUEVDOyAgICAvLyBUbyBhbGxvdyBib3RoIElQdjQgYW5k
IElQdjYgYWRkcmVzc2VzLgorICBoaW50cy5haV9zb2NrdHlwZSA9IFNPQ0tfU1RSRUFNOworICBh
ZGRyaW5mbyogc2VydmluZm8gPSBOVUxMOworCisgIC8vIFVzZSB0aGUgZ2V0YWRkcmluZm8oKSB0
byBnZXQgYSBsaW5rZWQgbGlzdCBvZiBJUCBhZGRyZXNzZXMgZm9yCisgIC8vIHRoZSBnaXZlbiBo
b3N0IG5hbWUuCisgIGNvbnN0IGludCBlcnJvcl9udW0gPSBnZXRhZGRyaW5mbygKKyAgICAgIGhv
c3RfbmFtZV8uY19zdHIoKSwgcG9ydF9udW1fLmNfc3RyKCksICZoaW50cywgJnNlcnZpbmZvKTsK
KyAgaWYgKGVycm9yX251bSAhPSAwKSB7CisgICAgR1RFU1RfTE9HXyhXQVJOSU5HKSA8PCAic3Ry
ZWFtX3Jlc3VsdF90bzogZ2V0YWRkcmluZm8oKSBmYWlsZWQ6ICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIDw8IGdhaV9zdHJlcnJvcihlcnJvcl9udW0pOworICB9CisKKyAgLy8gTG9vcCB0aHJv
dWdoIGFsbCB0aGUgcmVzdWx0cyBhbmQgY29ubmVjdCB0byB0aGUgZmlyc3Qgd2UgY2FuLgorICBm
b3IgKGFkZHJpbmZvKiBjdXJfYWRkciA9IHNlcnZpbmZvOyBzb2NrZmRfID09IC0xICYmIGN1cl9h
ZGRyICE9IE5VTEw7CisgICAgICAgY3VyX2FkZHIgPSBjdXJfYWRkci0+YWlfbmV4dCkgeworICAg
IHNvY2tmZF8gPSBzb2NrZXQoCisgICAgICAgIGN1cl9hZGRyLT5haV9mYW1pbHksIGN1cl9hZGRy
LT5haV9zb2NrdHlwZSwgY3VyX2FkZHItPmFpX3Byb3RvY29sKTsKKyAgICBpZiAoc29ja2ZkXyAh
PSAtMSkgeworICAgICAgLy8gQ29ubmVjdCB0aGUgY2xpZW50IHNvY2tldCB0byB0aGUgc2VydmVy
IHNvY2tldC4KKyAgICAgIGlmIChjb25uZWN0KHNvY2tmZF8sIGN1cl9hZGRyLT5haV9hZGRyLCBj
dXJfYWRkci0+YWlfYWRkcmxlbikgPT0gLTEpIHsKKyAgICAgICAgY2xvc2Uoc29ja2ZkXyk7Cisg
ICAgICAgIHNvY2tmZF8gPSAtMTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICBmcmVlYWRkcmlu
Zm8oc2VydmluZm8pOyAgLy8gYWxsIGRvbmUgd2l0aCB0aGlzIHN0cnVjdHVyZQorCisgIGlmIChz
b2NrZmRfID09IC0xKSB7CisgICAgR1RFU1RfTE9HXyhXQVJOSU5HKSA8PCAic3RyZWFtX3Jlc3Vs
dF90bzogZmFpbGVkIHRvIGNvbm5lY3QgdG8gIgorICAgICAgICAgICAgICAgICAgICAgICAgPDwg
aG9zdF9uYW1lXyA8PCAiOiIgPDwgcG9ydF9udW1fOworICB9Cit9CisKKy8vIEVuZCBvZiBjbGFz
cyBTdHJlYW1pbmcgTGlzdGVuZXIKKyNlbmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRT
X18KKworLy8gY2xhc3MgT3NTdGFja1RyYWNlR2V0dGVyCisKK2NvbnN0IGNoYXIqIGNvbnN0IE9z
U3RhY2tUcmFjZUdldHRlckludGVyZmFjZTo6a0VsaWRlZEZyYW1lc01hcmtlciA9CiAgICAgIi4u
LiAiIEdURVNUX05BTUVfICIgaW50ZXJuYWwgZnJhbWVzIC4uLiI7CiAKK3N0ZDo6c3RyaW5nIE9z
U3RhY2tUcmFjZUdldHRlcjo6Q3VycmVudFN0YWNrVHJhY2UoaW50IG1heF9kZXB0aCwgaW50IHNr
aXBfY291bnQpCisgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7CisjaWYgR1RFU1Rf
SEFTX0FCU0wKKyAgc3RkOjpzdHJpbmcgcmVzdWx0OworCisgIGlmIChtYXhfZGVwdGggPD0gMCkg
eworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworICBtYXhfZGVwdGggPSBzdGQ6Om1pbihtYXhf
ZGVwdGgsIGtNYXhTdGFja1RyYWNlRGVwdGgpOworCisgIHN0ZDo6dmVjdG9yPHZvaWQqPiByYXdf
c3RhY2sobWF4X2RlcHRoKTsKKyAgLy8gU2tpcHMgdGhlIGZyYW1lcyByZXF1ZXN0ZWQgYnkgdGhl
IGNhbGxlciwgcGx1cyB0aGlzIGZ1bmN0aW9uLgorICBjb25zdCBpbnQgcmF3X3N0YWNrX3NpemUg
PQorICAgICAgYWJzbDo6R2V0U3RhY2tUcmFjZSgmcmF3X3N0YWNrWzBdLCBtYXhfZGVwdGgsIHNr
aXBfY291bnQgKyAxKTsKKworICB2b2lkKiBjYWxsZXJfZnJhbWUgPSBudWxscHRyOworICB7Cisg
ICAgTXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7CisgICAgY2FsbGVyX2ZyYW1lID0gY2FsbGVyX2Zy
YW1lXzsKKyAgfQorCisgIGZvciAoaW50IGkgPSAwOyBpIDwgcmF3X3N0YWNrX3NpemU7ICsraSkg
eworICAgIGlmIChyYXdfc3RhY2tbaV0gPT0gY2FsbGVyX2ZyYW1lICYmCisgICAgICAgICFHVEVT
VF9GTEFHKHNob3dfaW50ZXJuYWxfc3RhY2tfZnJhbWVzKSkgeworICAgICAgLy8gQWRkIGEgbWFy
a2VyIHRvIHRoZSB0cmFjZSBhbmQgc3RvcCBhZGRpbmcgZnJhbWVzLgorICAgICAgYWJzbDo6U3Ry
QXBwZW5kKCZyZXN1bHQsIGtFbGlkZWRGcmFtZXNNYXJrZXIsICJcbiIpOworICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgY2hhciB0bXBbMTAyNF07CisgICAgY29uc3QgY2hhciogc3ltYm9sID0g
Iih1bmtub3duKSI7CisgICAgaWYgKGFic2w6OlN5bWJvbGl6ZShyYXdfc3RhY2tbaV0sIHRtcCwg
c2l6ZW9mKHRtcCkpKSB7CisgICAgICBzeW1ib2wgPSB0bXA7CisgICAgfQorCisgICAgY2hhciBs
aW5lWzEwMjRdOworICAgIHNucHJpbnRmKGxpbmUsIHNpemVvZihsaW5lKSwgIiAgJXA6ICVzXG4i
LCByYXdfc3RhY2tbaV0sIHN5bWJvbCk7CisgICAgcmVzdWx0ICs9IGxpbmU7CisgIH0KKworICBy
ZXR1cm4gcmVzdWx0OworCisjZWxzZSAgLy8gIUdURVNUX0hBU19BQlNMCisgIHN0YXRpY19jYXN0
PHZvaWQ+KG1heF9kZXB0aCk7CisgIHN0YXRpY19jYXN0PHZvaWQ+KHNraXBfY291bnQpOworICBy
ZXR1cm4gIiI7CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCit9CisKK3ZvaWQgT3NTdGFja1Ry
YWNlR2V0dGVyOjpVcG9uTGVhdmluZ0dUZXN0KCkgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhf
KSB7CisjaWYgR1RFU1RfSEFTX0FCU0wKKyAgdm9pZCogY2FsbGVyX2ZyYW1lID0gbnVsbHB0cjsK
KyAgaWYgKGFic2w6OkdldFN0YWNrVHJhY2UoJmNhbGxlcl9mcmFtZSwgMSwgMykgPD0gMCkgewor
ICAgIGNhbGxlcl9mcmFtZSA9IG51bGxwdHI7CisgIH0KKworICBNdXRleExvY2sgbG9jaygmbXV0
ZXhfKTsKKyAgY2FsbGVyX2ZyYW1lXyA9IGNhbGxlcl9mcmFtZTsKKyNlbmRpZiAgLy8gR1RFU1Rf
SEFTX0FCU0wKK30KKworLy8gQSBoZWxwZXIgY2xhc3MgdGhhdCBjcmVhdGVzIHRoZSBwcmVtYXR1
cmUtZXhpdCBmaWxlIGluIGl0cworLy8gY29uc3RydWN0b3IgYW5kIGRlbGV0ZXMgdGhlIGZpbGUg
aW4gaXRzIGRlc3RydWN0b3IuCitjbGFzcyBTY29wZWRQcmVtYXR1cmVFeGl0RmlsZSB7CisgcHVi
bGljOgorICBleHBsaWNpdCBTY29wZWRQcmVtYXR1cmVFeGl0RmlsZShjb25zdCBjaGFyKiBwcmVt
YXR1cmVfZXhpdF9maWxlcGF0aCkKKyAgICAgIDogcHJlbWF0dXJlX2V4aXRfZmlsZXBhdGhfKHBy
ZW1hdHVyZV9leGl0X2ZpbGVwYXRoID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoIDogIiIpIHsKKyAgICAvLyBJZiBhIHBhdGggdG8gdGhl
IHByZW1hdHVyZS1leGl0IGZpbGUgaXMgc3BlY2lmaWVkLi4uCisgICAgaWYgKCFwcmVtYXR1cmVf
ZXhpdF9maWxlcGF0aF8uZW1wdHkoKSkgeworICAgICAgLy8gY3JlYXRlIHRoZSBmaWxlIHdpdGgg
YSBzaW5nbGUgIjAiIGNoYXJhY3RlciBpbiBpdC4gIEkvTworICAgICAgLy8gZXJyb3JzIGFyZSBp
Z25vcmVkIGFzIHRoZXJlJ3Mgbm90aGluZyBiZXR0ZXIgd2UgY2FuIGRvIGFuZCB3ZQorICAgICAg
Ly8gZG9uJ3Qgd2FudCB0byBmYWlsIHRoZSB0ZXN0IGJlY2F1c2Ugb2YgdGhpcy4KKyAgICAgIEZJ
TEUqIHBmaWxlID0gcG9zaXg6OkZPcGVuKHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoLCAidyIpOwor
ICAgICAgZndyaXRlKCIwIiwgMSwgMSwgcGZpbGUpOworICAgICAgZmNsb3NlKHBmaWxlKTsKKyAg
ICB9CisgIH0KKworICB+U2NvcGVkUHJlbWF0dXJlRXhpdEZpbGUoKSB7CisgICAgaWYgKCFwcmVt
YXR1cmVfZXhpdF9maWxlcGF0aF8uZW1wdHkoKSkgeworICAgICAgaW50IHJldHZhbCA9IHJlbW92
ZShwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8uY19zdHIoKSk7CisgICAgICBpZiAocmV0dmFsKSB7
CisgICAgICAgIEdURVNUX0xPR18oRVJST1IpIDw8ICJGYWlsZWQgdG8gcmVtb3ZlIHByZW1hdHVy
ZSBleGl0IGZpbGVwYXRoIFwiIgorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBwcmVtYXR1
cmVfZXhpdF9maWxlcGF0aF8gPDwgIlwiIHdpdGggZXJyb3IgIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCByZXR2YWw7CisgICAgICB9CisgICAgfQorICB9CisKKyBwcml2YXRlOgorICBj
b25zdCBzdGQ6OnN0cmluZyBwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF87CisKKyAgR1RFU1RfRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTY29wZWRQcmVtYXR1cmVFeGl0RmlsZSk7Cit9OworCiB9
ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAogLy8gY2xhc3MgVGVzdEV2ZW50TGlzdGVuZXJzCkBA
IC0zNDMxLDcgKzQ0OTMsNyBAQCB2b2lkIFRlc3RFdmVudExpc3RlbmVyczo6U3VwcHJlc3NFdmVu
dEZvcndhcmRpbmcoKSB7CiAvLyBXZSBkb24ndCBwcm90ZWN0IHRoaXMgdW5kZXIgbXV0ZXhfIGFz
IGEgdXNlciBpcyBub3Qgc3VwcG9zZWQgdG8KIC8vIGNhbGwgdGhpcyBiZWZvcmUgbWFpbigpIHN0
YXJ0cywgZnJvbSB3aGljaCBwb2ludCBvbiB0aGUgcmV0dXJuCiAvLyB2YWx1ZSB3aWxsIG5ldmVy
IGNoYW5nZS4KLVVuaXRUZXN0ICogVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkgeworVW5pdFRlc3Qq
IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpIHsKICAgLy8gV2hlbiBjb21waWxlZCB3aXRoIE1TVkMg
Ny4xIGluIG9wdGltaXplZCBtb2RlLCBkZXN0cm95aW5nIHRoZQogICAvLyBVbml0VGVzdCBvYmpl
Y3QgdXBvbiBleGl0aW5nIHRoZSBwcm9ncmFtIG1lc3NlcyB1cCB0aGUgZXhpdCBjb2RlLAogICAv
LyBjYXVzaW5nIHN1Y2Nlc3NmdWwgdGVzdHMgdG8gYXBwZWFyIGZhaWxlZC4gIFdlIGhhdmUgdG8g
dXNlIGEKQEAgLTM0ODEsMTcgKzQ1NDMsMzMgQEAgaW50IFVuaXRUZXN0OjpzdWNjZXNzZnVsX3Rl
c3RfY291bnQoKSBjb25zdCB7CiAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZmFpbGVkIHRlc3RzLgog
aW50IFVuaXRUZXN0OjpmYWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsgcmV0dXJuIGltcGwoKS0+
ZmFpbGVkX3Rlc3RfY291bnQoKTsgfQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQg
dGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0LgoraW50IFVuaXRU
ZXN0OjpyZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBp
bXBsKCktPnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpOworfQorCiAvLyBHZXRzIHRo
ZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMuCiBpbnQgVW5pdFRlc3Q6OmRpc2FibGVkX3Rlc3Rf
Y291bnQoKSBjb25zdCB7CiAgIHJldHVybiBpbXBsKCktPmRpc2FibGVkX3Rlc3RfY291bnQoKTsK
IH0KIAorLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50ZWQgaW4gdGhlIFhN
TCByZXBvcnQuCitpbnQgVW5pdFRlc3Q6OnJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNvbnN0IHsK
KyAgcmV0dXJuIGltcGwoKS0+cmVwb3J0YWJsZV90ZXN0X2NvdW50KCk7Cit9CisKIC8vIEdldHMg
dGhlIG51bWJlciBvZiBhbGwgdGVzdHMuCiBpbnQgVW5pdFRlc3Q6OnRvdGFsX3Rlc3RfY291bnQo
KSBjb25zdCB7IHJldHVybiBpbXBsKCktPnRvdGFsX3Rlc3RfY291bnQoKTsgfQogCiAvLyBHZXRz
IHRoZSBudW1iZXIgb2YgdGVzdHMgdGhhdCBzaG91bGQgcnVuLgogaW50IFVuaXRUZXN0Ojp0ZXN0
X3RvX3J1bl9jb3VudCgpIGNvbnN0IHsgcmV0dXJuIGltcGwoKS0+dGVzdF90b19ydW5fY291bnQo
KTsgfQogCisvLyBHZXRzIHRoZSB0aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0gc3RhcnQsIGluIG1z
IGZyb20gdGhlIHN0YXJ0IG9mIHRoZQorLy8gVU5JWCBlcG9jaC4KK2ludGVybmFsOjpUaW1lSW5N
aWxsaXMgVW5pdFRlc3Q6OnN0YXJ0X3RpbWVzdGFtcCgpIGNvbnN0IHsKKyAgICByZXR1cm4gaW1w
bCgpLT5zdGFydF90aW1lc3RhbXAoKTsKK30KKwogLy8gR2V0cyB0aGUgZWxhcHNlZCB0aW1lLCBp
biBtaWxsaXNlY29uZHMuCiBpbnRlcm5hbDo6VGltZUluTWlsbGlzIFVuaXRUZXN0OjplbGFwc2Vk
X3RpbWUoKSBjb25zdCB7CiAgIHJldHVybiBpbXBsKCktPmVsYXBzZWRfdGltZSgpOwpAQCAtMzUx
MCw2ICs0NTg4LDEyIEBAIGNvbnN0IFRlc3RDYXNlKiBVbml0VGVzdDo6R2V0VGVzdENhc2UoaW50
IGkpIGNvbnN0IHsKICAgcmV0dXJuIGltcGwoKS0+R2V0VGVzdENhc2UoaSk7CiB9CiAKKy8vIFJl
dHVybnMgdGhlIFRlc3RSZXN1bHQgY29udGFpbmluZyBpbmZvcm1hdGlvbiBvbiB0ZXN0IGZhaWx1
cmVzIGFuZAorLy8gcHJvcGVydGllcyBsb2dnZWQgb3V0c2lkZSBvZiBpbmRpdmlkdWFsIHRlc3Qg
Y2FzZXMuCitjb25zdCBUZXN0UmVzdWx0JiBVbml0VGVzdDo6YWRfaG9jX3Rlc3RfcmVzdWx0KCkg
Y29uc3QgeworICByZXR1cm4gKmltcGwoKS0+YWRfaG9jX3Rlc3RfcmVzdWx0KCk7Cit9CisKIC8v
IEdldHMgdGhlIGktdGggdGVzdCBjYXNlIGFtb25nIGFsbCB0aGUgdGVzdCBjYXNlcy4gaSBjYW4g
cmFuZ2UgZnJvbSAwIHRvCiAvLyB0b3RhbF90ZXN0X2Nhc2VfY291bnQoKSAtIDEuIElmIGkgaXMg
bm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVMTC4KIFRlc3RDYXNlKiBVbml0VGVzdDo6R2V0
TXV0YWJsZVRlc3RDYXNlKGludCBpKSB7CkBAIC0zNTQxLDI5ICs0NjI1LDE2IEBAIEVudmlyb25t
ZW50KiBVbml0VGVzdDo6QWRkRW52aXJvbm1lbnQoRW52aXJvbm1lbnQqIGVudikgewogICByZXR1
cm4gZW52OwogfQogCi0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLS8vIEEgZmFpbGVkIEdvb2ds
ZSBUZXN0IGFzc2VydGlvbiB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBvZiB0aGlzIHR5cGUKLS8v
IHdoZW4gZXhjZXB0aW9ucyBhcmUgZW5hYmxlZC4gIFdlIGRlcml2ZSBpdCBmcm9tIHN0ZDo6cnVu
dGltZV9lcnJvciwKLS8vIHdoaWNoIGlzIGZvciBlcnJvcnMgcHJlc3VtYWJseSBkZXRlY3RhYmxl
IG9ubHkgYXQgcnVuIHRpbWUuICBTaW5jZQotLy8gc3RkOjpydW50aW1lX2Vycm9yIGluaGVyaXRz
IGZyb20gc3RkOjpleGNlcHRpb24sIG1hbnkgdGVzdGluZwotLy8gZnJhbWV3b3JrcyBrbm93IGhv
dyB0byBleHRyYWN0IGFuZCBwcmludCB0aGUgbWVzc2FnZSBpbnNpZGUgaXQuCi1jbGFzcyBHb29n
bGVUZXN0RmFpbHVyZUV4Y2VwdGlvbiA6IHB1YmxpYyA6OnN0ZDo6cnVudGltZV9lcnJvciB7Ci0g
cHVibGljOgotICBleHBsaWNpdCBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbihjb25zdCBUZXN0
UGFydFJlc3VsdCYgZmFpbHVyZSkKLSAgICAgIDogOjpzdGQ6OnJ1bnRpbWVfZXJyb3IoUHJpbnRU
ZXN0UGFydFJlc3VsdFRvU3RyaW5nKGZhaWx1cmUpLmNfc3RyKCkpIHt9Ci19OwotI2VuZGlmCi0K
IC8vIEFkZHMgYSBUZXN0UGFydFJlc3VsdCB0byB0aGUgY3VycmVudCBUZXN0UmVzdWx0IG9iamVj
dC4gIEFsbCBHb29nbGUgVGVzdAogLy8gYXNzZXJ0aW9uIG1hY3JvcyAoZS5nLiBBU1NFUlRfVFJV
RSwgRVhQRUNUX0VRLCBldGMpIGV2ZW50dWFsbHkgY2FsbAogLy8gdGhpcyB0byByZXBvcnQgdGhl
aXIgcmVzdWx0cy4gIFRoZSB1c2VyIGNvZGUgc2hvdWxkIHVzZSB0aGUKIC8vIGFzc2VydGlvbiBt
YWNyb3MgaW5zdGVhZCBvZiBjYWxsaW5nIHRoaXMgZGlyZWN0bHkuCi0vLyBMIDwgbXV0ZXhfCi12
b2lkIFVuaXRUZXN0OjpBZGRUZXN0UGFydFJlc3VsdChUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1
bHRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZp
bGVfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lX251bWJl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludGVybmFsOjpTdHJp
bmcmIG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnRl
cm5hbDo6U3RyaW5nJiBvc19zdGFja190cmFjZSkgewordm9pZCBVbml0VGVzdDo6QWRkVGVzdFBh
cnRSZXN1bHQoCisgICAgVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCisgICAgY29u
c3QgY2hhciogZmlsZV9uYW1lLAorICAgIGludCBsaW5lX251bWJlciwKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyYgbWVzc2FnZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3Nfc3RhY2tfdHJhY2Up
IEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4XykgewogICBNZXNzYWdlIG1zZzsKICAgbXNnIDw8
IG1lc3NhZ2U7CiAKQEAgLTM1OTYsMTcgKzQ2NjcsMjYgQEAgdm9pZCBVbml0VGVzdDo6QWRkVGVz
dFBhcnRSZXN1bHQoVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCiAgICAgLy8gd2l0
aCBhbm90aGVyIHRlc3RpbmcgZnJhbWV3b3JrKSBhbmQgc3BlY2lmeSB0aGUgZm9ybWVyIG9uIHRo
ZQogICAgIC8vIGNvbW1hbmQgbGluZSBmb3IgZGVidWdnaW5nLgogICAgIGlmIChHVEVTVF9GTEFH
KGJyZWFrX29uX2ZhaWx1cmUpKSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUworI2lmIEdURVNUX09T
X1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1Nf
UlQKICAgICAgIC8vIFVzaW5nIERlYnVnQnJlYWsgb24gV2luZG93cyBhbGxvd3MgZ3Rlc3QgdG8g
c3RpbGwgYnJlYWsgaW50byBhIGRlYnVnZ2VyCiAgICAgICAvLyB3aGVuIGEgZmFpbHVyZSBoYXBw
ZW5zIGFuZCBib3RoIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgYW5kCiAgICAgICAvLyB0
aGUgLS1ndGVzdF9jYXRjaF9leGNlcHRpb25zIGZsYWdzIGFyZSBzcGVjaWZpZWQuCiAgICAgICBE
ZWJ1Z0JyZWFrKCk7CisjZWxpZiAoIWRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pKSAmJiAgICAg
ICAgICAgIFwKKyAgICAoKGRlZmluZWQoX19jbGFuZ19fKSB8fCBkZWZpbmVkKF9fR05VQ19fKSkg
JiYgXAorICAgICAoZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9faTM4Nl9fKSkpCisg
ICAgICAvLyB3aXRoIGNsYW5nL2djYyB3ZSBjYW4gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3Qgb24g
eDg2IGJ5IGludm9raW5nIGludDMKKyAgICAgIGFzbSgiaW50MyIpOwogI2Vsc2UKKyAgICAgIC8v
IERlcmVmZXJlbmNlIE5VTEwgdGhyb3VnaCBhIHZvbGF0aWxlIHBvaW50ZXIgdG8gcHJldmVudCB0
aGUgY29tcGlsZXIKKyAgICAgIC8vIGZyb20gcmVtb3ZpbmcuIFdlIHVzZSB0aGlzIHJhdGhlciB0
aGFuIGFib3J0KCkgb3IgX19idWlsdGluX3RyYXAoKSBmb3IKKyAgICAgIC8vIHBvcnRhYmlsaXR5
OiBTeW1iaWFuIGRvZXNuJ3QgaW1wbGVtZW50IGFib3J0KCkgd2VsbCwgYW5kIHNvbWUgZGVidWdn
ZXJzCisgICAgICAvLyBkb24ndCBjb3JyZWN0bHkgdHJhcCBhYm9ydCgpLgogICAgICAgKnN0YXRp
Y19jYXN0PHZvbGF0aWxlIGludCo+KE5VTEwpID0gMTsKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lO
RE9XUwogICAgIH0gZWxzZSBpZiAoR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSkgewogI2lm
IEdURVNUX0hBU19FWENFUFRJT05TCi0gICAgICB0aHJvdyBHb29nbGVUZXN0RmFpbHVyZUV4Y2Vw
dGlvbihyZXN1bHQpOworICAgICAgdGhyb3cgaW50ZXJuYWw6Okdvb2dsZVRlc3RGYWlsdXJlRXhj
ZXB0aW9uKHJlc3VsdCk7CiAjZWxzZQogICAgICAgLy8gV2UgY2Fubm90IGNhbGwgYWJvcnQoKSBh
cyBpdCBnZW5lcmF0ZXMgYSBwb3AtdXAgaW4gZGVidWcgbW9kZQogICAgICAgLy8gdGhhdCBjYW5u
b3QgYmUgc3VwcHJlc3NlZCBpbiBWQyA3LjEgb3IgYmVsb3cuCkBAIC0zNjE2LDEyICs0Njk2LDE0
IEBAIHZvaWQgVW5pdFRlc3Q6OkFkZFRlc3RQYXJ0UmVzdWx0KFRlc3RQYXJ0UmVzdWx0OjpUeXBl
IHJlc3VsdF90eXBlLAogICB9CiB9CiAKLS8vIENyZWF0ZXMgYW5kIGFkZHMgYSBwcm9wZXJ0eSB0
byB0aGUgY3VycmVudCBUZXN0UmVzdWx0LiBJZiBhIHByb3BlcnR5IG1hdGNoaW5nCi0vLyB0aGUg
c3VwcGxpZWQgdmFsdWUgYWxyZWFkeSBleGlzdHMsIHVwZGF0ZXMgaXRzIHZhbHVlIGluc3RlYWQu
Ci12b2lkIFVuaXRUZXN0OjpSZWNvcmRQcm9wZXJ0eUZvckN1cnJlbnRUZXN0KGNvbnN0IGNoYXIq
IGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogdmFsdWUpIHsKLSAgY29uc3QgVGVzdFByb3BlcnR5IHRlc3RfcHJvcGVydHkoa2V5LCB2
YWx1ZSk7Ci0gIGltcGxfLT5jdXJyZW50X3Rlc3RfcmVzdWx0KCktPlJlY29yZFByb3BlcnR5KHRl
c3RfcHJvcGVydHkpOworLy8gQWRkcyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUgY3VycmVudCBUZXN0
UmVzdWx0IG9iamVjdCB3aGVuIGludm9rZWQgZnJvbQorLy8gaW5zaWRlIGEgdGVzdCwgdG8gY3Vy
cmVudCBUZXN0Q2FzZSdzIGFkX2hvY190ZXN0X3Jlc3VsdF8gd2hlbiBpbnZva2VkCisvLyBmcm9t
IFNldFVwVGVzdENhc2Ugb3IgVGVhckRvd25UZXN0Q2FzZSwgb3IgdG8gdGhlIGdsb2JhbCBwcm9w
ZXJ0eSBzZXQKKy8vIHdoZW4gaW52b2tlZCBlbHNld2hlcmUuICBJZiB0aGUgcmVzdWx0IGFscmVh
ZHkgY29udGFpbnMgYSBwcm9wZXJ0eSB3aXRoCisvLyB0aGUgc2FtZSBrZXksIHRoZSB2YWx1ZSB3
aWxsIGJlIHVwZGF0ZWQuCit2b2lkIFVuaXRUZXN0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBzdGQ6
OnN0cmluZyYga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIHZhbHVlKSB7CisgIGltcGxfLT5SZWNvcmRQcm9wZXJ0eShUZXN0UHJvcGVydHkoa2V5
LCB2YWx1ZSkpOwogfQogCiAvLyBSdW5zIGFsbCB0ZXN0cyBpbiB0aGlzIFVuaXRUZXN0IG9iamVj
dCBhbmQgcHJpbnRzIHRoZSByZXN1bHQuCkBAIC0zNjMwLDMxICs0NzEyLDU4IEBAIHZvaWQgVW5p
dFRlc3Q6OlJlY29yZFByb3BlcnR5Rm9yQ3VycmVudFRlc3QoY29uc3QgY2hhcioga2V5LAogLy8g
V2UgZG9uJ3QgcHJvdGVjdCB0aGlzIHVuZGVyIG11dGV4XywgYXMgd2Ugb25seSBzdXBwb3J0IGNh
bGxpbmcgaXQKIC8vIGZyb20gdGhlIG1haW4gdGhyZWFkLgogaW50IFVuaXRUZXN0OjpSdW4oKSB7
Ci0jaWYgR1RFU1RfSEFTX1NFSAotICAvLyBDYXRjaCBTRUgtc3R5bGUgZXhjZXB0aW9ucy4KLQog
ICBjb25zdCBib29sIGluX2RlYXRoX3Rlc3RfY2hpbGRfcHJvY2VzcyA9CiAgICAgICBpbnRlcm5h
bDo6R1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkubGVuZ3RoKCkgPiAwOwogCisg
IC8vIEdvb2dsZSBUZXN0IGltcGxlbWVudHMgdGhpcyBwcm90b2NvbCBmb3IgY2F0Y2hpbmcgdGhh
dCBhIHRlc3QKKyAgLy8gcHJvZ3JhbSBleGl0cyBiZWZvcmUgcmV0dXJuaW5nIGNvbnRyb2wgdG8g
R29vZ2xlIFRlc3Q6CisgIC8vCisgIC8vICAgMS4gVXBvbiBzdGFydCwgR29vZ2xlIFRlc3QgY3Jl
YXRlcyBhIGZpbGUgd2hvc2UgYWJzb2x1dGUgcGF0aAorICAvLyAgICAgIGlzIHNwZWNpZmllZCBi
eSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgLy8gICAgICBURVNUX1BSRU1BVFVSRV9FWElU
X0ZJTEUuCisgIC8vICAgMi4gV2hlbiBHb29nbGUgVGVzdCBoYXMgZmluaXNoZWQgaXRzIHdvcmss
IGl0IGRlbGV0ZXMgdGhlIGZpbGUuCisgIC8vCisgIC8vIFRoaXMgYWxsb3dzIGEgdGVzdCBydW5u
ZXIgdG8gc2V0IFRFU1RfUFJFTUFUVVJFX0VYSVRfRklMRSBiZWZvcmUKKyAgLy8gcnVubmluZyBh
IEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QgcHJvZ3JhbSBhbmQgY2hlY2sgdGhlIGV4aXN0ZW5jZQor
ICAvLyBvZiB0aGUgZmlsZSBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0IGV4ZWN1dGlvbiB0byBzZWUg
aWYgaXQgaGFzCisgIC8vIGV4aXRlZCBwcmVtYXR1cmVseS4KKworICAvLyBJZiB3ZSBhcmUgaW4g
dGhlIGNoaWxkIHByb2Nlc3Mgb2YgYSBkZWF0aCB0ZXN0LCBkb24ndAorICAvLyBjcmVhdGUvZGVs
ZXRlIHRoZSBwcmVtYXR1cmUgZXhpdCBmaWxlLCBhcyBkb2luZyBzbyBpcyB1bm5lY2Vzc2FyeQor
ICAvLyBhbmQgd2lsbCBjb25mdXNlIHRoZSBwYXJlbnQgcHJvY2Vzcy4gIE90aGVyd2lzZSwgY3Jl
YXRlL2RlbGV0ZQorICAvLyB0aGUgZmlsZSB1cG9uIGVudGVyaW5nL2xlYXZpbmcgdGhpcyBmdW5j
dGlvbi4gIElmIHRoZSBwcm9ncmFtCisgIC8vIHNvbWVob3cgZXhpdHMgYmVmb3JlIHRoaXMgZnVu
Y3Rpb24gaGFzIGEgY2hhbmNlIHRvIHJldHVybiwgdGhlCisgIC8vIHByZW1hdHVyZS1leGl0IGZp
bGUgd2lsbCBiZSBsZWZ0IHVuZGVsZXRlZCwgY2F1c2luZyBhIHRlc3QgcnVubmVyCisgIC8vIHRo
YXQgdW5kZXJzdGFuZHMgdGhlIHByZW1hdHVyZS1leGl0LWZpbGUgcHJvdG9jb2wgdG8gcmVwb3J0
IHRoZQorICAvLyB0ZXN0IGFzIGhhdmluZyBmYWlsZWQuCisgIGNvbnN0IGludGVybmFsOjpTY29w
ZWRQcmVtYXR1cmVFeGl0RmlsZSBwcmVtYXR1cmVfZXhpdF9maWxlKAorICAgICAgaW5fZGVhdGhf
dGVzdF9jaGlsZF9wcm9jZXNzID8KKyAgICAgIE5VTEwgOiBpbnRlcm5hbDo6cG9zaXg6OkdldEVu
digiVEVTVF9QUkVNQVRVUkVfRVhJVF9GSUxFIikpOworCisgIC8vIENhcHR1cmVzIHRoZSB2YWx1
ZSBvZiBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpLiAgVGhpcyB2YWx1ZSB3aWxsIGJlCisg
IC8vIHVzZWQgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgcHJvZ3JhbS4KKyAgaW1wbCgpLT5zZXRf
Y2F0Y2hfZXhjZXB0aW9ucyhHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKTsKKworI2lmIEdU
RVNUX09TX1dJTkRPV1MKICAgLy8gRWl0aGVyIHRoZSB1c2VyIHdhbnRzIEdvb2dsZSBUZXN0IHRv
IGNhdGNoIGV4Y2VwdGlvbnMgdGhyb3duIGJ5IHRoZQogICAvLyB0ZXN0cyBvciB0aGlzIGlzIGV4
ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiBkZWF0aCB0ZXN0IGNoaWxkCiAgIC8vIHByb2Nlc3Mu
IEluIGVpdGhlciBjYXNlIHRoZSB1c2VyIGRvZXMgbm90IHdhbnQgdG8gc2VlIHBvcC11cCBkaWFs
b2dzCi0gIC8vIGFib3V0IGNyYXNoZXMgLSB0aGV5IGFyZSBleHBlY3RlZC4uCi0gIGlmIChHVEVT
VF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpIHx8IGluX2RlYXRoX3Rlc3RfY2hpbGRfcHJvY2Vzcykg
ewotI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorICAvLyBhYm91dCBjcmFzaGVzIC0gdGhl
eSBhcmUgZXhwZWN0ZWQuCisgIGlmIChpbXBsKCktPmNhdGNoX2V4Y2VwdGlvbnMoKSB8fCBpbl9k
ZWF0aF90ZXN0X2NoaWxkX3Byb2Nlc3MpIHsKKyMgaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxF
ICYmICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUCiAgICAg
Ly8gU2V0RXJyb3JNb2RlIGRvZXNuJ3QgZXhpc3Qgb24gQ0UuCiAgICAgU2V0RXJyb3JNb2RlKFNF
TV9GQUlMQ1JJVElDQUxFUlJPUlMgfCBTRU1fTk9BTElHTk1FTlRGQVVMVEVYQ0VQVCB8CiAgICAg
ICAgICAgICAgICAgIFNFTV9OT0dQRkFVTFRFUlJPUkJPWCB8IFNFTV9OT09QRU5GSUxFRVJST1JC
T1gpOwotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgZW5kaWYgIC8vICFH
VEVTVF9PU19XSU5ET1dTX01PQklMRQogCi0jaWYgKGRlZmluZWQoX01TQ19WRVIpIHx8IEdURVNU
X09TX1dJTkRPV1NfTUlOR1cpICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBpZiAoZGVm
aW5lZChfTVNDX1ZFUikgfHwgR1RFU1RfT1NfV0lORE9XU19NSU5HVykgJiYgIUdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCiAgICAgLy8gRGVhdGggdGVzdCBjaGlsZHJlbiBjYW4gYmUgdGVybWluYXRl
ZCB3aXRoIF9hYm9ydCgpLiAgT24gV2luZG93cywKICAgICAvLyBfYWJvcnQoKSBjYW4gc2hvdyBh
IGRpYWxvZyB3aXRoIGEgd2FybmluZyBtZXNzYWdlLiAgVGhpcyBmb3JjZXMgdGhlCiAgICAgLy8g
YWJvcnQgbWVzc2FnZSB0byBnbyB0byBzdGRlcnIgaW5zdGVhZC4KICAgICBfc2V0X2Vycm9yX21v
ZGUoX09VVF9UT19TVERFUlIpOwotI2VuZGlmCisjIGVuZGlmCiAKLSNpZiBfTVNDX1ZFUiA+PSAx
NDAwICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBpZiBfTVNDX1ZFUiA+PSAxNDAwICYm
ICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQogICAgIC8vIEluIHRoZSBkZWJ1ZyB2ZXJzaW9uLCBW
aXN1YWwgU3R1ZGlvIHBvcHMgdXAgYSBzZXBhcmF0ZSBkaWFsb2cKICAgICAvLyBvZmZlcmluZyBh
IGNob2ljZSB0byBkZWJ1ZyB0aGUgYWJvcnRlZCBwcm9ncmFtLiBXZSBuZWVkIHRvIHN1cHByZXNz
CiAgICAgLy8gdGhpcyBkaWFsb2cgb3IgaXQgd2lsbCBwb3AgdXAgZm9yIGV2ZXJ5IEVYUEVDVC9B
U1NFUlRfREVBVEggc3RhdGVtZW50CkBAIC0zNjY0LDI4ICs0NzczLDIwIEBAIGludCBVbml0VGVz
dDo6UnVuKCkgewogICAgIC8vIFZDKysgZG9lc24ndCBkZWZpbmUgX3NldF9hYm9ydF9iZWhhdmlv
cigpIHByaW9yIHRvIHRoZSB2ZXJzaW9uIDguMC4KICAgICAvLyBVc2VycyBvZiBwcmlvciBWQyB2
ZXJzaW9ucyBzaGFsbCBzdWZmZXIgdGhlIGFnb255IGFuZCBwYWluIG9mCiAgICAgLy8gY2xpY2tp
bmcgdGhyb3VnaCB0aGUgY291bnRsZXNzIGRlYnVnIGRpYWxvZ3MuCi0gICAgLy8gVE9ETyh2bGFk
bEBnb29nbGUuY29tKTogZmluZCBhIHdheSB0byBzdXBwcmVzcyB0aGUgYWJvcnQgZGlhbG9nKCkg
aW4gdGhlCisgICAgLy8gRklYTUU6IGZpbmQgYSB3YXkgdG8gc3VwcHJlc3MgdGhlIGFib3J0IGRp
YWxvZygpIGluIHRoZQogICAgIC8vIGRlYnVnIG1vZGUgd2hlbiBjb21waWxlZCB3aXRoIFZDIDcu
MSBvciBsb3dlci4KICAgICBpZiAoIUdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSkpCiAgICAg
ICBfc2V0X2Fib3J0X2JlaGF2aW9yKAogICAgICAgICAgIDB4MCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBDbGVhciB0aGUgZm9sbG93aW5nIGZsYWdzOgogICAgICAgICAg
IF9XUklURV9BQk9SVF9NU0cgfCBfQ0FMTF9SRVBPUlRGQVVMVCk7ICAvLyBwb3AtdXAgd2luZG93
LCBjb3JlIGR1bXAuCi0jZW5kaWYKKyMgZW5kaWYKICAgfQorI2VuZGlmICAvLyBHVEVTVF9PU19X
SU5ET1dTCiAKLSAgX190cnkgewotICAgIHJldHVybiBpbXBsXy0+UnVuQWxsVGVzdHMoKTsKLSAg
fSBfX2V4Y2VwdChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpHVGVzdFNob3VsZFByb2Nlc3NT
RUgoCi0gICAgICBHZXRFeGNlcHRpb25Db2RlKCkpKSB7Ci0gICAgcHJpbnRmKCJFeGNlcHRpb24g
dGhyb3duIHdpdGggY29kZSAweCV4LlxuRkFJTFxuIiwgR2V0RXhjZXB0aW9uQ29kZSgpKTsKLSAg
ICBmZmx1c2goc3Rkb3V0KTsKLSAgICByZXR1cm4gMTsKLSAgfQotCi0jZWxzZSAgLy8gV2UgYXJl
IG9uIGEgY29tcGlsZXIgb3IgcGxhdGZvcm0gdGhhdCBkb2Vzbid0IHN1cHBvcnQgU0VILgotCi0g
IHJldHVybiBpbXBsXy0+UnVuQWxsVGVzdHMoKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAor
ICByZXR1cm4gaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAor
ICAgICAgaW1wbCgpLAorICAgICAgJmludGVybmFsOjpVbml0VGVzdEltcGw6OlJ1bkFsbFRlc3Rz
LAorICAgICAgImF1eGlsaWFyeSB0ZXN0IGNvZGUgKGVudmlyb25tZW50cyBvciBldmVudCBsaXN0
ZW5lcnMpIikgPyAwIDogMTsKIH0KIAogLy8gUmV0dXJucyB0aGUgd29ya2luZyBkaXJlY3Rvcnkg
d2hlbiB0aGUgZmlyc3QgVEVTVCgpIG9yIFRFU1RfRigpIHdhcwpAQCAtMzY5NiwxNiArNDc5Nywx
NiBAQCBjb25zdCBjaGFyKiBVbml0VGVzdDo6b3JpZ2luYWxfd29ya2luZ19kaXIoKSBjb25zdCB7
CiAKIC8vIFJldHVybnMgdGhlIFRlc3RDYXNlIG9iamVjdCBmb3IgdGhlIHRlc3QgdGhhdCdzIGN1
cnJlbnRseSBydW5uaW5nLAogLy8gb3IgTlVMTCBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcuCi0vLyBM
IDwgbXV0ZXhfCi1jb25zdCBUZXN0Q2FzZSogVW5pdFRlc3Q6OmN1cnJlbnRfdGVzdF9jYXNlKCkg
Y29uc3QgeworY29uc3QgVGVzdENhc2UqIFVuaXRUZXN0OjpjdXJyZW50X3Rlc3RfY2FzZSgpIGNv
bnN0CisgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7CiAgIGludGVybmFsOjpNdXRl
eExvY2sgbG9jaygmbXV0ZXhfKTsKICAgcmV0dXJuIGltcGxfLT5jdXJyZW50X3Rlc3RfY2FzZSgp
OwogfQogCiAvLyBSZXR1cm5zIHRoZSBUZXN0SW5mbyBvYmplY3QgZm9yIHRoZSB0ZXN0IHRoYXQn
cyBjdXJyZW50bHkgcnVubmluZywKIC8vIG9yIE5VTEwgaWYgbm8gdGVzdCBpcyBydW5uaW5nLgot
Ly8gTCA8IG11dGV4XwotY29uc3QgVGVzdEluZm8qIFVuaXRUZXN0OjpjdXJyZW50X3Rlc3RfaW5m
bygpIGNvbnN0IHsKK2NvbnN0IFRlc3RJbmZvKiBVbml0VGVzdDo6Y3VycmVudF90ZXN0X2luZm8o
KSBjb25zdAorICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4XykgewogICBpbnRlcm5hbDo6
TXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7CiAgIHJldHVybiBpbXBsXy0+Y3VycmVudF90ZXN0X2lu
Zm8oKTsKIH0KQEAgLTM3MTMsMTUgKzQ4MTQsMTMgQEAgY29uc3QgVGVzdEluZm8qIFVuaXRUZXN0
OjpjdXJyZW50X3Rlc3RfaW5mbygpIGNvbnN0IHsKIC8vIFJldHVybnMgdGhlIHJhbmRvbSBzZWVk
IHVzZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50IHRlc3QgcnVuLgogaW50IFVuaXRUZXN0
OjpyYW5kb21fc2VlZCgpIGNvbnN0IHsgcmV0dXJuIGltcGxfLT5yYW5kb21fc2VlZCgpOyB9CiAK
LSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAogLy8gUmV0dXJucyBQYXJhbWV0ZXJpemVkVGVzdENh
c2VSZWdpc3RyeSBvYmplY3QgdXNlZCB0byBrZWVwIHRyYWNrIG9mCiAvLyB2YWx1ZS1wYXJhbWV0
ZXJpemVkIHRlc3RzIGFuZCBpbnN0YW50aWF0ZSBhbmQgcmVnaXN0ZXIgdGhlbS4KLS8vIEwgPCBt
dXRleF8KIGludGVybmFsOjpQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSYKLSAgICBVbml0
VGVzdDo6cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkgeworICAgIFVuaXRUZXN0OjpwYXJh
bWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKQorICAgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyht
dXRleF8pIHsKICAgcmV0dXJuIGltcGxfLT5wYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKTsK
IH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIAogLy8gQ3JlYXRlcyBhbiBlbXB0
eSBVbml0VGVzdC4KIFVuaXRUZXN0OjpVbml0VGVzdCgpIHsKQEAgLTM3MzUsMTUgKzQ4MzQsMTUg
QEAgVW5pdFRlc3Q6On5Vbml0VGVzdCgpIHsKIAogLy8gUHVzaGVzIGEgdHJhY2UgZGVmaW5lZCBi
eSBTQ09QRURfVFJBQ0UoKSBvbiB0byB0aGUgcGVyLXRocmVhZAogLy8gR29vZ2xlIFRlc3QgdHJh
Y2Ugc3RhY2suCi0vLyBMIDwgbXV0ZXhfCi12b2lkIFVuaXRUZXN0OjpQdXNoR1Rlc3RUcmFjZShj
b25zdCBpbnRlcm5hbDo6VHJhY2VJbmZvJiB0cmFjZSkgewordm9pZCBVbml0VGVzdDo6UHVzaEdU
ZXN0VHJhY2UoY29uc3QgaW50ZXJuYWw6OlRyYWNlSW5mbyYgdHJhY2UpCisgICAgR1RFU1RfTE9D
S19FWENMVURFRF8obXV0ZXhfKSB7CiAgIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXhf
KTsKICAgaW1wbF8tPmd0ZXN0X3RyYWNlX3N0YWNrKCkucHVzaF9iYWNrKHRyYWNlKTsKIH0KIAog
Ly8gUG9wcyBhIHRyYWNlIGZyb20gdGhlIHBlci10aHJlYWQgR29vZ2xlIFRlc3QgdHJhY2Ugc3Rh
Y2suCi0vLyBMIDwgbXV0ZXhfCi12b2lkIFVuaXRUZXN0OjpQb3BHVGVzdFRyYWNlKCkgewordm9p
ZCBVbml0VGVzdDo6UG9wR1Rlc3RUcmFjZSgpCisgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0
ZXhfKSB7CiAgIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKICAgaW1wbF8tPmd0
ZXN0X3RyYWNlX3N0YWNrKCkucG9wX2JhY2soKTsKIH0KQEAgLTM3NTIsMjUgKzQ4NTEsMTYgQEAg
bmFtZXNwYWNlIGludGVybmFsIHsKIAogVW5pdFRlc3RJbXBsOjpVbml0VGVzdEltcGwoVW5pdFRl
c3QqIHBhcmVudCkKICAgICA6IHBhcmVudF8ocGFyZW50KSwKLSNpZmRlZiBfTVNDX1ZFUgotI3By
YWdtYSB3YXJuaW5nKHB1c2gpICAgICAgICAgICAgICAgICAgICAvLyBTYXZlcyB0aGUgY3VycmVu
dCB3YXJuaW5nIHN0YXRlLgotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDM1NSkgICAgICAgICAg
ICAvLyBUZW1wb3JhcmlseSBkaXNhYmxlcyB3YXJuaW5nIDQzNTUKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHVzaW5nIHRoaXMgaW4gaW5pdGlhbGl6ZXIpLgot
ICAgICAgZGVmYXVsdF9nbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8odGhpcyksCi0g
ICAgICBkZWZhdWx0X3Blcl90aHJlYWRfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8odGhpcyks
Ci0jcHJhZ21hIHdhcm5pbmcocG9wKSAgICAgICAgICAgICAgICAgICAgIC8vIFJlc3RvcmVzIHRo
ZSB3YXJuaW5nIHN0YXRlIGFnYWluLgotI2Vsc2UKKyAgICAgIEdURVNUX0RJU0FCTEVfTVNDX1dB
Uk5JTkdTX1BVU0hfKDQzNTUgLyogdXNpbmcgdGhpcyBpbiBpbml0aWFsaXplciAqLykKICAgICAg
IGRlZmF1bHRfZ2xvYmFsX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfKHRoaXMpLAogICAgICAg
ZGVmYXVsdF9wZXJfdGhyZWFkX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfKHRoaXMpLAotI2Vu
ZGlmICAvLyBfTVNDX1ZFUgorICAgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygp
CiAgICAgICBnbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvdGVyXygKICAgICAgICAgICAmZGVm
YXVsdF9nbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8pLAogICAgICAgcGVyX3RocmVh
ZF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXygKICAgICAgICAgICAmZGVmYXVsdF9wZXJfdGhy
ZWFkX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfKSwKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVT
VAogICAgICAgcGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5XygpLAogICAgICAgcGFyYW1ldGVy
aXplZF90ZXN0c19yZWdpc3RlcmVkXyhmYWxzZSksCi0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJB
TV9URVNUCiAgICAgICBsYXN0X2RlYXRoX3Rlc3RfY2FzZV8oLTEpLAogICAgICAgY3VycmVudF90
ZXN0X2Nhc2VfKE5VTEwpLAogICAgICAgY3VycmVudF90ZXN0X2luZm9fKE5VTEwpLApAQCAtMzc3
OSwxMyArNDg2OSwxMyBAQCBVbml0VGVzdEltcGw6OlVuaXRUZXN0SW1wbChVbml0VGVzdCogcGFy
ZW50KQogICAgICAgcG9zdF9mbGFnX3BhcnNlX2luaXRfcGVyZm9ybWVkXyhmYWxzZSksCiAgICAg
ICByYW5kb21fc2VlZF8oMCksICAvLyBXaWxsIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGZsYWcgYmVm
b3JlIGZpcnN0IHVzZS4KICAgICAgIHJhbmRvbV8oMCksICAvLyBXaWxsIGJlIHJlc2VlZGVkIGJl
Zm9yZSBmaXJzdCB1c2UuCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKyAgICAgIHN0YXJ0X3Rp
bWVzdGFtcF8oMCksCiAgICAgICBlbGFwc2VkX3RpbWVfKDApLAotICAgICAgaW50ZXJuYWxfcnVu
X2RlYXRoX3Rlc3RfZmxhZ18oTlVMTCksCi0gICAgICBkZWF0aF90ZXN0X2ZhY3RvcnlfKG5ldyBE
ZWZhdWx0RGVhdGhUZXN0RmFjdG9yeSkgewotI2Vsc2UKLSAgICAgIGVsYXBzZWRfdGltZV8oMCkg
ewotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorI2lmIEdURVNUX0hBU19ERUFUSF9U
RVNUCisgICAgICBkZWF0aF90ZXN0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0RGVhdGhUZXN0RmFjdG9y
eSksCisjZW5kaWYKKyAgICAgIC8vIFdpbGwgYmUgb3ZlcnJpZGRlbiBieSB0aGUgZmxhZyBiZWZv
cmUgZmlyc3QgdXNlLgorICAgICAgY2F0Y2hfZXhjZXB0aW9uc18oZmFsc2UpIHsKICAgbGlzdGVu
ZXJzKCktPlNldERlZmF1bHRSZXN1bHRQcmludGVyKG5ldyBQcmV0dHlVbml0VGVzdFJlc3VsdFBy
aW50ZXIpOwogfQogCkBAIC0zNzk5LDYgKzQ4ODksMjggQEAgVW5pdFRlc3RJbXBsOjp+VW5pdFRl
c3RJbXBsKCkgewogICBkZWxldGUgb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXzsKIH0KIAorLy8gQWRk
cyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUgY3VycmVudCBUZXN0UmVzdWx0IG9iamVjdCB3aGVuIGlu
dm9rZWQgaW4gYQorLy8gY29udGV4dCBvZiBhIHRlc3QsIHRvIGN1cnJlbnQgdGVzdCBjYXNlJ3Mg
YWRfaG9jX3Rlc3RfcmVzdWx0IHdoZW4gaW52b2tlCisvLyBmcm9tIFNldFVwVGVzdENhc2UvVGVh
ckRvd25UZXN0Q2FzZSwgb3IgdG8gdGhlIGdsb2JhbCBwcm9wZXJ0eSBzZXQKKy8vIG90aGVyd2lz
ZS4gIElmIHRoZSByZXN1bHQgYWxyZWFkeSBjb250YWlucyBhIHByb3BlcnR5IHdpdGggdGhlIHNh
bWUga2V5LAorLy8gdGhlIHZhbHVlIHdpbGwgYmUgdXBkYXRlZC4KK3ZvaWQgVW5pdFRlc3RJbXBs
OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpIHsKKyAg
c3RkOjpzdHJpbmcgeG1sX2VsZW1lbnQ7CisgIFRlc3RSZXN1bHQqIHRlc3RfcmVzdWx0OyAgLy8g
VGVzdFJlc3VsdCBhcHByb3ByaWF0ZSBmb3IgcHJvcGVydHkgcmVjb3JkaW5nLgorCisgIGlmIChj
dXJyZW50X3Rlc3RfaW5mb18gIT0gTlVMTCkgeworICAgIHhtbF9lbGVtZW50ID0gInRlc3RjYXNl
IjsKKyAgICB0ZXN0X3Jlc3VsdCA9ICYoY3VycmVudF90ZXN0X2luZm9fLT5yZXN1bHRfKTsKKyAg
fSBlbHNlIGlmIChjdXJyZW50X3Rlc3RfY2FzZV8gIT0gTlVMTCkgeworICAgIHhtbF9lbGVtZW50
ID0gInRlc3RzdWl0ZSI7CisgICAgdGVzdF9yZXN1bHQgPSAmKGN1cnJlbnRfdGVzdF9jYXNlXy0+
YWRfaG9jX3Rlc3RfcmVzdWx0Xyk7CisgIH0gZWxzZSB7CisgICAgeG1sX2VsZW1lbnQgPSAidGVz
dHN1aXRlcyI7CisgICAgdGVzdF9yZXN1bHQgPSAmYWRfaG9jX3Rlc3RfcmVzdWx0XzsKKyAgfQor
ICB0ZXN0X3Jlc3VsdC0+UmVjb3JkUHJvcGVydHkoeG1sX2VsZW1lbnQsIHRlc3RfcHJvcGVydHkp
OworfQorCiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKIC8vIERpc2FibGVzIGV2ZW50IGZvcndh
cmRpbmcgaWYgdGhlIGNvbnRyb2wgaXMgY3VycmVudGx5IGluIGEgZGVhdGggdGVzdAogLy8gc3Vi
cHJvY2Vzcy4gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBJbml0R29vZ2xlVGVzdC4KQEAgLTM4
MTEsMTcgKzQ5MjMsMzcgQEAgdm9pZCBVbml0VGVzdEltcGw6OlN1cHByZXNzVGVzdEV2ZW50c0lm
SW5TdWJwcm9jZXNzKCkgewogLy8gSW5pdGlhbGl6ZXMgZXZlbnQgbGlzdGVuZXJzIHBlcmZvcm1p
bmcgWE1MIG91dHB1dCBhcyBzcGVjaWZpZWQgYnkKIC8vIFVuaXRUZXN0T3B0aW9ucy4gTXVzdCBu
b3QgYmUgY2FsbGVkIGJlZm9yZSBJbml0R29vZ2xlVGVzdC4KIHZvaWQgVW5pdFRlc3RJbXBsOjpD
b25maWd1cmVYbWxPdXRwdXQoKSB7Ci0gIGNvbnN0IFN0cmluZyYgb3V0cHV0X2Zvcm1hdCA9IFVu
aXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBv
dXRwdXRfZm9ybWF0ID0gVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQoKTsKICAgaWYg
KG91dHB1dF9mb3JtYXQgPT0gInhtbCIpIHsKICAgICBsaXN0ZW5lcnMoKS0+U2V0RGVmYXVsdFht
bEdlbmVyYXRvcihuZXcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyKAogICAgICAgICBVbml0VGVz
dE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpKTsKKyAgfSBl
bHNlIGlmIChvdXRwdXRfZm9ybWF0ID09ICJqc29uIikgeworICAgIGxpc3RlbmVycygpLT5TZXRE
ZWZhdWx0WG1sR2VuZXJhdG9yKG5ldyBKc29uVW5pdFRlc3RSZXN1bHRQcmludGVyKAorICAgICAg
ICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkp
KTsKICAgfSBlbHNlIGlmIChvdXRwdXRfZm9ybWF0ICE9ICIiKSB7Ci0gICAgcHJpbnRmKCJXQVJO
SU5HOiB1bnJlY29nbml6ZWQgb3V0cHV0IGZvcm1hdCBcIiVzXCIgaWdub3JlZC5cbiIsCi0gICAg
ICAgICAgIG91dHB1dF9mb3JtYXQuY19zdHIoKSk7Ci0gICAgZmZsdXNoKHN0ZG91dCk7CisgICAg
R1RFU1RfTE9HXyhXQVJOSU5HKSA8PCAiV0FSTklORzogdW5yZWNvZ25pemVkIG91dHB1dCBmb3Jt
YXQgXCIiCisgICAgICAgICAgICAgICAgICAgICAgICA8PCBvdXRwdXRfZm9ybWF0IDw8ICJcIiBp
Z25vcmVkLiI7CiAgIH0KIH0KIAorI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKy8vIElu
aXRpYWxpemVzIGV2ZW50IGxpc3RlbmVycyBmb3Igc3RyZWFtaW5nIHRlc3QgcmVzdWx0cyBpbiBz
dHJpbmcgZm9ybS4KKy8vIE11c3Qgbm90IGJlIGNhbGxlZCBiZWZvcmUgSW5pdEdvb2dsZVRlc3Qu
Cit2b2lkIFVuaXRUZXN0SW1wbDo6Q29uZmlndXJlU3RyZWFtaW5nT3V0cHV0KCkgeworICBjb25z
dCBzdGQ6OnN0cmluZyYgdGFyZ2V0ID0gR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKTsKKyAg
aWYgKCF0YXJnZXQuZW1wdHkoKSkgeworICAgIGNvbnN0IHNpemVfdCBwb3MgPSB0YXJnZXQuZmlu
ZCgnOicpOworICAgIGlmIChwb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKKyAgICAgIGxpc3Rl
bmVycygpLT5BcHBlbmQobmV3IFN0cmVhbWluZ0xpc3RlbmVyKHRhcmdldC5zdWJzdHIoMCwgcG9z
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdl
dC5zdWJzdHIocG9zKzEpKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIEdURVNUX0xPR18oV0FSTklO
RykgPDwgInVucmVjb2duaXplZCBzdHJlYW1pbmcgdGFyZ2V0IFwiIiA8PCB0YXJnZXQKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgIlwiIGlnbm9yZWQuIjsKKyAgICB9CisgIH0KK30KKyNl
bmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworCiAvLyBQZXJmb3JtcyBpbml0aWFs
aXphdGlvbiBkZXBlbmRlbnQgdXBvbiBmbGFnIHZhbHVlcyBvYnRhaW5lZCBpbgogLy8gUGFyc2VH
b29nbGVUZXN0RmxhZ3NPbmx5LiAgSXMgY2FsbGVkIGZyb20gSW5pdEdvb2dsZVRlc3QgYWZ0ZXIg
dGhlIGNhbGwgdG8KIC8vIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seS4gIEluIGNhc2UgYSB1c2Vy
IG5lZ2xlY3RzIHRvIGNhbGwgSW5pdEdvb2dsZVRlc3QKQEAgLTM4MzIsNiArNDk2NCwxMSBAQCB2
b2lkIFVuaXRUZXN0SW1wbDo6UG9zdEZsYWdQYXJzaW5nSW5pdCgpIHsKICAgaWYgKCFwb3N0X2Zs
YWdfcGFyc2VfaW5pdF9wZXJmb3JtZWRfKSB7CiAgICAgcG9zdF9mbGFnX3BhcnNlX2luaXRfcGVy
Zm9ybWVkXyA9IHRydWU7CiAKKyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9URVNUX0VWRU5UX0xJ
U1RFTkVSXykKKyAgICAvLyBSZWdpc3RlciB0byBzZW5kIG5vdGlmaWNhdGlvbnMgYWJvdXQga2V5
IHByb2Nlc3Mgc3RhdGUgY2hhbmdlcy4KKyAgICBsaXN0ZW5lcnMoKS0+QXBwZW5kKG5ldyBHVEVT
VF9DVVNUT01fVEVTVF9FVkVOVF9MSVNURU5FUl8oKSk7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RF
U1RfQ1VTVE9NX1RFU1RfRVZFTlRfTElTVEVORVJfKQorCiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RF
U1QKICAgICBJbml0RGVhdGhUZXN0U3VicHJvY2Vzc0NvbnRyb2xJbmZvKCk7CiAgICAgU3VwcHJl
c3NUZXN0RXZlbnRzSWZJblN1YnByb2Nlc3MoKTsKQEAgLTM4NDUsNiArNDk4MiwxOCBAQCB2b2lk
IFVuaXRUZXN0SW1wbDo6UG9zdEZsYWdQYXJzaW5nSW5pdCgpIHsKICAgICAvLyBDb25maWd1cmVz
IGxpc3RlbmVycyBmb3IgWE1MIG91dHB1dC4gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgdXNl
cnMKICAgICAvLyB0byBzaHV0IGRvd24gdGhlIGRlZmF1bHQgWE1MIG91dHB1dCBiZWZvcmUgaW52
b2tpbmcgUlVOX0FMTF9URVNUUy4KICAgICBDb25maWd1cmVYbWxPdXRwdXQoKTsKKworI2lmIEdU
RVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKyAgICAvLyBDb25maWd1cmVzIGxpc3RlbmVycyBmb3Ig
c3RyZWFtaW5nIHRlc3QgcmVzdWx0cyB0byB0aGUgc3BlY2lmaWVkIHNlcnZlci4KKyAgICBDb25m
aWd1cmVTdHJlYW1pbmdPdXRwdXQoKTsKKyNlbmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9SRVNV
TFRTXworCisjaWYgR1RFU1RfSEFTX0FCU0wKKyAgICBpZiAoR1RFU1RfRkxBRyhpbnN0YWxsX2Zh
aWx1cmVfc2lnbmFsX2hhbmRsZXIpKSB7CisgICAgICBhYnNsOjpGYWlsdXJlU2lnbmFsSGFuZGxl
ck9wdGlvbnMgb3B0aW9uczsKKyAgICAgIGFic2w6Okluc3RhbGxGYWlsdXJlU2lnbmFsSGFuZGxl
cihvcHRpb25zKTsKKyAgICB9CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCiAgIH0KIH0KIApA
QCAtMzg1OSw3ICs1MDA4LDcgQEAgdm9pZCBVbml0VGVzdEltcGw6OlBvc3RGbGFnUGFyc2luZ0lu
aXQoKSB7CiBjbGFzcyBUZXN0Q2FzZU5hbWVJcyB7CiAgcHVibGljOgogICAvLyBDb25zdHJ1Y3Rv
ci4KLSAgZXhwbGljaXQgVGVzdENhc2VOYW1lSXMoY29uc3QgU3RyaW5nJiBuYW1lKQorICBleHBs
aWNpdCBUZXN0Q2FzZU5hbWVJcyhjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkKICAgICAgIDogbmFt
ZV8obmFtZSkge30KIAogICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBuYW1lIG9mIHRlc3RfY2Fz
ZSBtYXRjaGVzIG5hbWVfLgpAQCAtMzg2OCw3ICs1MDE3LDcgQEAgY2xhc3MgVGVzdENhc2VOYW1l
SXMgewogICB9CiAKICBwcml2YXRlOgotICBTdHJpbmcgbmFtZV87CisgIHN0ZDo6c3RyaW5nIG5h
bWVfOwogfTsKIAogLy8gRmluZHMgYW5kIHJldHVybnMgYSBUZXN0Q2FzZSB3aXRoIHRoZSBnaXZl
biBuYW1lLiAgSWYgb25lIGRvZXNuJ3QKQEAgLTM4NzksMjYgKzUwMjgsMjggQEAgY2xhc3MgVGVz
dENhc2VOYW1lSXMgewogLy8gQXJndW1lbnRzOgogLy8KIC8vICAgdGVzdF9jYXNlX25hbWU6IG5h
bWUgb2YgdGhlIHRlc3QgY2FzZQorLy8gICB0eXBlX3BhcmFtOiAgICAgdGhlIG5hbWUgb2YgdGhl
IHRlc3QgY2FzZSdzIHR5cGUgcGFyYW1ldGVyLCBvciBOVUxMIGlmCisvLyAgICAgICAgICAgICAg
ICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2Fz
ZS4KIC8vICAgc2V0X3VwX3RjOiAgICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0
cyB1cCB0aGUgdGVzdCBjYXNlCiAvLyAgIHRlYXJfZG93bl90YzogICBwb2ludGVyIHRvIHRoZSBm
dW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQogVGVzdENhc2UqIFVuaXRUZXN0
SW1wbDo6R2V0VGVzdENhc2UoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb21tZW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdHlwZV9wYXJhbSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3Q6OlNldFVwVGVzdENhc2VGdW5jIHNl
dF91cF90YywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3Q6OlRlYXJE
b3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YykgewogICAvLyBDYW4gd2UgZmluZCBhIFRlc3RD
YXNlIHdpdGggdGhlIGdpdmVuIG5hbWU/Ci0gIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RDYXNlKj46
OmNvbnN0X2l0ZXJhdG9yIHRlc3RfY2FzZSA9Ci0gICAgICBzdGQ6OmZpbmRfaWYodGVzdF9jYXNl
c18uYmVnaW4oKSwgdGVzdF9jYXNlc18uZW5kKCksCisgIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RD
YXNlKj46OmNvbnN0X3JldmVyc2VfaXRlcmF0b3IgdGVzdF9jYXNlID0KKyAgICAgIHN0ZDo6Zmlu
ZF9pZih0ZXN0X2Nhc2VzXy5yYmVnaW4oKSwgdGVzdF9jYXNlc18ucmVuZCgpLAogICAgICAgICAg
ICAgICAgICAgIFRlc3RDYXNlTmFtZUlzKHRlc3RfY2FzZV9uYW1lKSk7CiAKLSAgaWYgKHRlc3Rf
Y2FzZSAhPSB0ZXN0X2Nhc2VzXy5lbmQoKSkKKyAgaWYgKHRlc3RfY2FzZSAhPSB0ZXN0X2Nhc2Vz
Xy5yZW5kKCkpCiAgICAgcmV0dXJuICp0ZXN0X2Nhc2U7CiAKICAgLy8gTm8uICBMZXQncyBjcmVh
dGUgb25lLgogICBUZXN0Q2FzZSogY29uc3QgbmV3X3Rlc3RfY2FzZSA9Ci0gICAgICBuZXcgVGVz
dENhc2UodGVzdF9jYXNlX25hbWUsIGNvbW1lbnQsIHNldF91cF90YywgdGVhcl9kb3duX3RjKTsK
KyAgICAgIG5ldyBUZXN0Q2FzZSh0ZXN0X2Nhc2VfbmFtZSwgdHlwZV9wYXJhbSwgc2V0X3VwX3Rj
LCB0ZWFyX2Rvd25fdGMpOwogCiAgIC8vIElzIHRoaXMgYSBkZWF0aCB0ZXN0IGNhc2U/Ci0gIGlm
IChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpNYXRjaGVzRmlsdGVyKFN0cmluZyh0ZXN0X2Nh
c2VfbmFtZSksCisgIGlmIChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpNYXRjaGVzRmlsdGVy
KHRlc3RfY2FzZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrRGVhdGhUZXN0Q2FzZUZpbHRlcikpIHsKICAgICAvLyBZZXMuICBJbnNlcnRzIHRo
ZSB0ZXN0IGNhc2UgYWZ0ZXIgdGhlIGxhc3QgZGVhdGggdGVzdCBjYXNlCiAgICAgLy8gZGVmaW5l
ZCBzbyBmYXIuICBUaGlzIG9ubHkgd29ya3Mgd2hlbiB0aGUgdGVzdCBjYXNlcyBoYXZlbid0CkBA
IC0zOTIyLDI3ICs1MDczLDIxIEBAIHN0YXRpYyB2b2lkIFNldFVwRW52aXJvbm1lbnQoRW52aXJv
bm1lbnQqIGVudikgeyBlbnYtPlNldFVwKCk7IH0KIHN0YXRpYyB2b2lkIFRlYXJEb3duRW52aXJv
bm1lbnQoRW52aXJvbm1lbnQqIGVudikgeyBlbnYtPlRlYXJEb3duKCk7IH0KIAogLy8gUnVucyBh
bGwgdGVzdHMgaW4gdGhpcyBVbml0VGVzdCBvYmplY3QsIHByaW50cyB0aGUgcmVzdWx0LCBhbmQK
LS8vIHJldHVybnMgMCBpZiBhbGwgdGVzdHMgYXJlIHN1Y2Nlc3NmdWwsIG9yIDEgb3RoZXJ3aXNl
LiAgSWYgYW55Ci0vLyBleGNlcHRpb24gaXMgdGhyb3duIGR1cmluZyBhIHRlc3Qgb24gV2luZG93
cywgdGhpcyB0ZXN0IGlzCi0vLyBjb25zaWRlcmVkIHRvIGJlIGZhaWxlZCwgYnV0IHRoZSByZXN0
IG9mIHRoZSB0ZXN0cyB3aWxsIHN0aWxsIGJlCi0vLyBydW4uICAoV2UgZGlzYWJsZSBleGNlcHRp
b25zIG9uIExpbnV4IGFuZCBNYWMgT1MgWCwgc28gdGhlIGlzc3VlCi0vLyBkb2Vzbid0IGFwcGx5
IHRoZXJlLikKKy8vIHJldHVybnMgdHJ1ZSBpZiBhbGwgdGVzdHMgYXJlIHN1Y2Nlc3NmdWwuICBJ
ZiBhbnkgZXhjZXB0aW9uIGlzCisvLyB0aHJvd24gZHVyaW5nIGEgdGVzdCwgdGhlIHRlc3QgaXMg
Y29uc2lkZXJlZCB0byBiZSBmYWlsZWQsIGJ1dCB0aGUKKy8vIHJlc3Qgb2YgdGhlIHRlc3RzIHdp
bGwgc3RpbGwgYmUgcnVuLgorLy8KIC8vIFdoZW4gcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZW5h
YmxlZCwgaXQgZXhwYW5kcyBhbmQgcmVnaXN0ZXJzCiAvLyBwYXJhbWV0ZXJpemVkIHRlc3RzIGZp
cnN0IGluIFJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzKCkuCiAvLyBBbGwgb3RoZXIgZnVuY3Rp
b25zIGNhbGxlZCBmcm9tIFJ1bkFsbFRlc3RzKCkgbWF5IHNhZmVseSBhc3N1bWUgdGhhdAogLy8g
cGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgcmVhZHkgdG8gYmUgY291bnRlZCBhbmQgcnVuLgotaW50
IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7Ci0gIC8vIE1ha2VzIHN1cmUgSW5pdEdvb2ds
ZVRlc3QoKSB3YXMgY2FsbGVkLgotICBpZiAoIUdUZXN0SXNJbml0aWFsaXplZCgpKSB7Ci0gICAg
cHJpbnRmKCIlcyIsCi0gICAgICAgICAgICJcblRoaXMgdGVzdCBwcm9ncmFtIGRpZCBOT1QgY2Fs
bCA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0ICIKLSAgICAgICAgICAgImJlZm9yZSBjYWxsaW5n
IFJVTl9BTExfVEVTVFMoKS4gIFBsZWFzZSBmaXggaXQuXG4iKTsKLSAgICByZXR1cm4gMTsKLSAg
fQorYm9vbCBVbml0VGVzdEltcGw6OlJ1bkFsbFRlc3RzKCkgeworICAvLyBUcnVlIGlmZiBHb29n
bGUgVGVzdCBpcyBpbml0aWFsaXplZCBiZWZvcmUgUlVOX0FMTF9URVNUUygpIGlzIGNhbGxlZC4K
KyAgY29uc3QgYm9vbCBndGVzdF9pc19pbml0aWFsaXplZF9iZWZvcmVfcnVuX2FsbF90ZXN0cyA9
IEdUZXN0SXNJbml0aWFsaXplZCgpOwogCiAgIC8vIERvIG5vdCBydW4gYW55IHRlc3QgaWYgdGhl
IC0taGVscCBmbGFnIHdhcyBzcGVjaWZpZWQuCiAgIGlmIChnX2hlbHBfZmxhZykKLSAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gdHJ1ZTsKIAogICAvLyBSZXBlYXRzIHRoZSBjYWxsIHRvIHRoZSBw
b3N0LWZsYWcgcGFyc2luZyBpbml0aWFsaXphdGlvbiBpbiBjYXNlIHRoZQogICAvLyB1c2VyIGRp
ZG4ndCBjYWxsIEluaXRHb29nbGVUZXN0LgpAQCAtMzk1OSw2ICs1MTA0LDExIEBAIGludCBVbml0
VGVzdEltcGw6OlJ1bkFsbFRlc3RzKCkgewogCiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKICAg
aW5fc3VicHJvY2Vzc19mb3JfZGVhdGhfdGVzdCA9IChpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdF9m
bGFnXy5nZXQoKSAhPSBOVUxMKTsKKyMgaWYgZGVmaW5lZChHVEVTVF9FWFRSQV9ERUFUSF9URVNU
X0NISUxEX1NFVFVQXykKKyAgaWYgKGluX3N1YnByb2Nlc3NfZm9yX2RlYXRoX3Rlc3QpIHsKKyAg
ICBHVEVTVF9FWFRSQV9ERUFUSF9URVNUX0NISUxEX1NFVFVQXygpOworICB9CisjIGVuZGlmICAv
LyBkZWZpbmVkKEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ0hJTERfU0VUVVBfKQogI2VuZGlmICAv
LyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCiAgIGNvbnN0IGJvb2wgc2hvdWxkX3NoYXJkID0gU2hv
dWxkU2hhcmQoa1Rlc3RUb3RhbFNoYXJkcywga1Rlc3RTaGFyZEluZGV4LApAQCAtMzk3NCw3ICs1
MTI0LDcgQEAgaW50IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7CiAgIGlmIChHVEVTVF9G
TEFHKGxpc3RfdGVzdHMpKSB7CiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCAqYWZ0ZXIqIEZp
bHRlclRlc3RzKCkgaGFzIGJlZW4gY2FsbGVkLgogICAgIExpc3RUZXN0c01hdGNoaW5nRmlsdGVy
KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHRydWU7CiAgIH0KIAogICByYW5kb21fc2Vl
ZF8gPSBHVEVTVF9GTEFHKHNodWZmbGUpID8KQEAgLTM5ODUsNiArNTEzNSw3IEBAIGludCBVbml0
VGVzdEltcGw6OlJ1bkFsbFRlc3RzKCkgewogCiAgIFRlc3RFdmVudExpc3RlbmVyKiByZXBlYXRl
ciA9IGxpc3RlbmVycygpLT5yZXBlYXRlcigpOwogCisgIHN0YXJ0X3RpbWVzdGFtcF8gPSBHZXRU
aW1lSW5NaWxsaXMoKTsKICAgcmVwZWF0ZXItPk9uVGVzdFByb2dyYW1TdGFydCgqcGFyZW50Xyk7
CiAKICAgLy8gSG93IG1hbnkgdGltZXMgdG8gcmVwZWF0IHRoZSB0ZXN0cz8gIFdlIGRvbid0IHdh
bnQgdG8gcmVwZWF0IHRoZW0KQEAgLTM5OTMsNyArNTE0NCw5IEBAIGludCBVbml0VGVzdEltcGw6
OlJ1bkFsbFRlc3RzKCkgewogICAvLyBSZXBlYXRzIGZvcmV2ZXIgaWYgdGhlIHJlcGVhdCBjb3Vu
dCBpcyBuZWdhdGl2ZS4KICAgY29uc3QgYm9vbCBmb3JldmVyID0gcmVwZWF0IDwgMDsKICAgZm9y
IChpbnQgaSA9IDA7IGZvcmV2ZXIgfHwgaSAhPSByZXBlYXQ7IGkrKykgewotICAgIENsZWFyUmVz
dWx0KCk7CisgICAgLy8gV2Ugd2FudCB0byBwcmVzZXJ2ZSBmYWlsdXJlcyBnZW5lcmF0ZWQgYnkg
YWQtaG9jIHRlc3QKKyAgICAvLyBhc3NlcnRpb25zIGV4ZWN1dGVkIGJlZm9yZSBSVU5fQUxMX1RF
U1RTKCkuCisgICAgQ2xlYXJOb25BZEhvY1Rlc3RSZXN1bHQoKTsKIAogICAgIGNvbnN0IFRpbWVJ
bk1pbGxpcyBzdGFydCA9IEdldFRpbWVJbk1pbGxpcygpOwogCkBAIC00MDU4LDggKzUyMTEsMjEg
QEAgaW50IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7CiAKICAgcmVwZWF0ZXItPk9uVGVz
dFByb2dyYW1FbmQoKnBhcmVudF8pOwogCi0gIC8vIFJldHVybnMgMCBpZiBhbGwgdGVzdHMgcGFz
c2VkLCBvciAxIG90aGVyIHdpc2UuCi0gIHJldHVybiBmYWlsZWQgPyAxIDogMDsKKyAgaWYgKCFn
dGVzdF9pc19pbml0aWFsaXplZF9iZWZvcmVfcnVuX2FsbF90ZXN0cykgeworICAgIENvbG9yZWRQ
cmludGYoCisgICAgICAgIENPTE9SX1JFRCwKKyAgICAgICAgIlxuSU1QT1JUQU5UIE5PVElDRSAt
IERPIE5PVCBJR05PUkU6XG4iCisgICAgICAgICJUaGlzIHRlc3QgcHJvZ3JhbSBkaWQgTk9UIGNh
bGwgIiBHVEVTVF9JTklUX0dPT0dMRV9URVNUX05BTUVfCisgICAgICAgICIoKSBiZWZvcmUgY2Fs
bGluZyBSVU5fQUxMX1RFU1RTKCkuIFRoaXMgaXMgSU5WQUxJRC4gU29vbiAiIEdURVNUX05BTUVf
CisgICAgICAgICIgd2lsbCBzdGFydCB0byBlbmZvcmNlIHRoZSB2YWxpZCB1c2FnZS4gIgorICAg
ICAgICAiUGxlYXNlIGZpeCBpdCBBU0FQLCBvciBJVCBXSUxMIFNUQVJUIFRPIEZBSUwuXG4iKTsg
IC8vIE5PTElOVAorI2lmIEdURVNUX0ZPUl9HT09HTEVfCisgICAgQ29sb3JlZFByaW50ZihDT0xP
Ul9SRUQsCisgICAgICAgICAgICAgICAgICAiRm9yIG1vcmUgZGV0YWlscywgc2VlIGh0dHA6Ly93
aWtpL01haW4vVmFsaWRHVW5pdE1haW4uXG4iKTsKKyNlbmRpZiAgLy8gR1RFU1RfRk9SX0dPT0dM
RV8KKyAgfQorCisgIHJldHVybiAhZmFpbGVkOwogfQogCiAvLyBSZWFkcyB0aGUgR1RFU1RfU0hB
UkRfU1RBVFVTX0ZJTEUgZW52aXJvbm1lbnQgdmFyaWFibGUsIGFuZCBjcmVhdGVzIHRoZSBmaWxl
CkBAIC00MTMzLDcgKzUyOTksNyBAQCBib29sIFNob3VsZFNoYXJkKGNvbnN0IGNoYXIqIHRvdGFs
X3NoYXJkc19lbnYsCiAvLyBQYXJzZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHZhciBhcyBh
biBJbnQzMi4gSWYgaXQgaXMgdW5zZXQsCiAvLyByZXR1cm5zIGRlZmF1bHRfdmFsLiBJZiBpdCBp
cyBub3QgYW4gSW50MzIsIHByaW50cyBhbiBlcnJvcgogLy8gYW5kIGFib3J0cy4KLUludDMyIElu
dDMyRnJvbUVudk9yRGllKGNvbnN0IGNoYXIqIGNvbnN0IHZhciwgSW50MzIgZGVmYXVsdF92YWwp
IHsKK0ludDMyIEludDMyRnJvbUVudk9yRGllKGNvbnN0IGNoYXIqIHZhciwgSW50MzIgZGVmYXVs
dF92YWwpIHsKICAgY29uc3QgY2hhciogc3RyX3ZhbCA9IHBvc2l4OjpHZXRFbnYodmFyKTsKICAg
aWYgKHN0cl92YWwgPT0gTlVMTCkgewogICAgIHJldHVybiBkZWZhdWx0X3ZhbDsKQEAgLTQxNjAs
OCArNTMyNiw4IEBAIGJvb2wgU2hvdWxkUnVuVGVzdE9uU2hhcmQoaW50IHRvdGFsX3NoYXJkcywg
aW50IHNoYXJkX2luZGV4LCBpbnQgdGVzdF9pZCkgewogLy8gZWFjaCBUZXN0Q2FzZSBhbmQgVGVz
dEluZm8gb2JqZWN0LgogLy8gSWYgc2hhcmRfdGVzdHMgPT0gdHJ1ZSwgZnVydGhlciBmaWx0ZXJz
IHRlc3RzIGJhc2VkIG9uIHNoYXJkaW5nCiAvLyB2YXJpYWJsZXMgaW4gdGhlIGVudmlyb25tZW50
IC0gc2VlCi0vLyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL0dvb2ds
ZVRlc3RBZHZhbmNlZEd1aWRlLgotLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRoYXQg
c2hvdWxkIHJ1bi4KKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9ibG9i
L21hc3Rlci9nb29nbGV0ZXN0L2RvY3MvYWR2YW5jZWQubWQKKy8vIC4gUmV0dXJucyB0aGUgbnVt
YmVyIG9mIHRlc3RzIHRoYXQgc2hvdWxkIHJ1bi4KIGludCBVbml0VGVzdEltcGw6OkZpbHRlclRl
c3RzKFJlYWN0aW9uVG9TaGFyZGluZyBzaGFyZF90ZXN0cykgewogICBjb25zdCBJbnQzMiB0b3Rh
bF9zaGFyZHMgPSBzaGFyZF90ZXN0cyA9PSBIT05PUl9TSEFSRElOR19QUk9UT0NPTCA/CiAgICAg
ICBJbnQzMkZyb21FbnZPckRpZShrVGVzdFRvdGFsU2hhcmRzLCAtMSkgOiAtMTsKQEAgLTQxNzYs
MTIgKzUzNDIsMTIgQEAgaW50IFVuaXRUZXN0SW1wbDo6RmlsdGVyVGVzdHMoUmVhY3Rpb25Ub1No
YXJkaW5nIHNoYXJkX3Rlc3RzKSB7CiAgIGludCBudW1fc2VsZWN0ZWRfdGVzdHMgPSAwOwogICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXNfLnNpemUoKTsgaSsrKSB7CiAgICAgVGVz
dENhc2UqIGNvbnN0IHRlc3RfY2FzZSA9IHRlc3RfY2FzZXNfW2ldOwotICAgIGNvbnN0IFN0cmlu
ZyAmdGVzdF9jYXNlX25hbWUgPSB0ZXN0X2Nhc2UtPm5hbWUoKTsKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyAmdGVzdF9jYXNlX25hbWUgPSB0ZXN0X2Nhc2UtPm5hbWUoKTsKICAgICB0ZXN0X2Nhc2Ut
PnNldF9zaG91bGRfcnVuKGZhbHNlKTsKIAogICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgdGVz
dF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpLnNpemUoKTsgaisrKSB7CiAgICAgICBUZXN0SW5mbyog
Y29uc3QgdGVzdF9pbmZvID0gdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpW2pdOwotICAgICAg
Y29uc3QgU3RyaW5nIHRlc3RfbmFtZSh0ZXN0X2luZm8tPm5hbWUoKSk7CisgICAgICBjb25zdCBz
dGQ6OnN0cmluZyB0ZXN0X25hbWUodGVzdF9pbmZvLT5uYW1lKCkpOwogICAgICAgLy8gQSB0ZXN0
IGlzIGRpc2FibGVkIGlmIHRlc3QgY2FzZSBuYW1lIG9yIHRlc3QgbmFtZSBtYXRjaGVzCiAgICAg
ICAvLyBrRGlzYWJsZVRlc3RGaWx0ZXIuCiAgICAgICBjb25zdCBib29sIGlzX2Rpc2FibGVkID0K
QEAgLTQxODksMzQgKzUzNTUsNjAgQEAgaW50IFVuaXRUZXN0SW1wbDo6RmlsdGVyVGVzdHMoUmVh
Y3Rpb25Ub1NoYXJkaW5nIHNoYXJkX3Rlc3RzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBrRGlzYWJsZVRlc3RGaWx0ZXIpIHx8CiAgICAgICAg
ICAgaW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcih0ZXN0X25hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrRGlzYWJs
ZVRlc3RGaWx0ZXIpOwotICAgICAgdGVzdF9pbmZvLT5pbXBsKCktPnNldF9pc19kaXNhYmxlZChp
c19kaXNhYmxlZCk7CisgICAgICB0ZXN0X2luZm8tPmlzX2Rpc2FibGVkXyA9IGlzX2Rpc2FibGVk
OwogCiAgICAgICBjb25zdCBib29sIG1hdGNoZXNfZmlsdGVyID0KICAgICAgICAgICBpbnRlcm5h
bDo6VW5pdFRlc3RPcHRpb25zOjpGaWx0ZXJNYXRjaGVzVGVzdCh0ZXN0X2Nhc2VfbmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
X25hbWUpOwotICAgICAgdGVzdF9pbmZvLT5pbXBsKCktPnNldF9tYXRjaGVzX2ZpbHRlcihtYXRj
aGVzX2ZpbHRlcik7CisgICAgICB0ZXN0X2luZm8tPm1hdGNoZXNfZmlsdGVyXyA9IG1hdGNoZXNf
ZmlsdGVyOwogCiAgICAgICBjb25zdCBib29sIGlzX3J1bm5hYmxlID0KICAgICAgICAgICAoR1RF
U1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cykgfHwgIWlzX2Rpc2FibGVkKSAmJgogICAg
ICAgICAgIG1hdGNoZXNfZmlsdGVyOwogCi0gICAgICBjb25zdCBib29sIGlzX3NlbGVjdGVkID0g
aXNfcnVubmFibGUgJiYKLSAgICAgICAgICAoc2hhcmRfdGVzdHMgPT0gSUdOT1JFX1NIQVJESU5H
X1BST1RPQ09MIHx8Ci0gICAgICAgICAgIFNob3VsZFJ1blRlc3RPblNoYXJkKHRvdGFsX3NoYXJk
cywgc2hhcmRfaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bV9ydW5u
YWJsZV90ZXN0cykpOworICAgICAgY29uc3QgYm9vbCBpc19pbl9hbm90aGVyX3NoYXJkID0KKyAg
ICAgICAgICBzaGFyZF90ZXN0cyAhPSBJR05PUkVfU0hBUkRJTkdfUFJPVE9DT0wgJiYKKyAgICAg
ICAgICAhU2hvdWxkUnVuVGVzdE9uU2hhcmQodG90YWxfc2hhcmRzLCBzaGFyZF9pbmRleCwgbnVt
X3J1bm5hYmxlX3Rlc3RzKTsKKyAgICAgIHRlc3RfaW5mby0+aXNfaW5fYW5vdGhlcl9zaGFyZF8g
PSBpc19pbl9hbm90aGVyX3NoYXJkOworICAgICAgY29uc3QgYm9vbCBpc19zZWxlY3RlZCA9IGlz
X3J1bm5hYmxlICYmICFpc19pbl9hbm90aGVyX3NoYXJkOwogCiAgICAgICBudW1fcnVubmFibGVf
dGVzdHMgKz0gaXNfcnVubmFibGU7CiAgICAgICBudW1fc2VsZWN0ZWRfdGVzdHMgKz0gaXNfc2Vs
ZWN0ZWQ7CiAKLSAgICAgIHRlc3RfaW5mby0+aW1wbCgpLT5zZXRfc2hvdWxkX3J1bihpc19zZWxl
Y3RlZCk7CisgICAgICB0ZXN0X2luZm8tPnNob3VsZF9ydW5fID0gaXNfc2VsZWN0ZWQ7CiAgICAg
ICB0ZXN0X2Nhc2UtPnNldF9zaG91bGRfcnVuKHRlc3RfY2FzZS0+c2hvdWxkX3J1bigpIHx8IGlz
X3NlbGVjdGVkKTsKICAgICB9CiAgIH0KICAgcmV0dXJuIG51bV9zZWxlY3RlZF90ZXN0czsKIH0K
IAorLy8gUHJpbnRzIHRoZSBnaXZlbiBDLXN0cmluZyBvbiBhIHNpbmdsZSBsaW5lIGJ5IHJlcGxh
Y2luZyBhbGwgJ1xuJworLy8gY2hhcmFjdGVycyB3aXRoIHN0cmluZyAiXFxuIi4gIElmIHRoZSBv
dXRwdXQgdGFrZXMgbW9yZSB0aGFuCisvLyBtYXhfbGVuZ3RoIGNoYXJhY3RlcnMsIG9ubHkgcHJp
bnRzIHRoZSBmaXJzdCBtYXhfbGVuZ3RoIGNoYXJhY3RlcnMKKy8vIGFuZCAiLi4uIi4KK3N0YXRp
YyB2b2lkIFByaW50T25PbmVMaW5lKGNvbnN0IGNoYXIqIHN0ciwgaW50IG1heF9sZW5ndGgpIHsK
KyAgaWYgKHN0ciAhPSBOVUxMKSB7CisgICAgZm9yIChpbnQgaSA9IDA7ICpzdHIgIT0gJ1wwJzsg
KytzdHIpIHsKKyAgICAgIGlmIChpID49IG1heF9sZW5ndGgpIHsKKyAgICAgICAgcHJpbnRmKCIu
Li4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBpZiAoKnN0ciA9PSAnXG4nKSB7
CisgICAgICAgIHByaW50ZigiXFxuIik7CisgICAgICAgIGkgKz0gMjsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHByaW50ZigiJWMiLCAqc3RyKTsKKyAgICAgICAgKytpOworICAgICAgfQorICAg
IH0KKyAgfQorfQorCiAvLyBQcmludHMgdGhlIG5hbWVzIG9mIHRoZSB0ZXN0cyBtYXRjaGluZyB0
aGUgdXNlci1zcGVjaWZpZWQgZmlsdGVyIGZsYWcuCiB2b2lkIFVuaXRUZXN0SW1wbDo6TGlzdFRl
c3RzTWF0Y2hpbmdGaWx0ZXIoKSB7CisgIC8vIFByaW50IGF0IG1vc3QgdGhpcyBtYW55IGNoYXJh
Y3RlcnMgZm9yIGVhY2ggdHlwZS92YWx1ZSBwYXJhbWV0ZXIuCisgIGNvbnN0IGludCBrTWF4UGFy
YW1MZW5ndGggPSAyNTA7CisKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0X2Nhc2VzXy5z
aXplKCk7IGkrKykgewogICAgIGNvbnN0IFRlc3RDYXNlKiBjb25zdCB0ZXN0X2Nhc2UgPSB0ZXN0
X2Nhc2VzX1tpXTsKICAgICBib29sIHByaW50ZWRfdGVzdF9jYXNlX25hbWUgPSBmYWxzZTsKQEAg
LTQyMjQsMTYgKzU0MTYsNDcgQEAgdm9pZCBVbml0VGVzdEltcGw6Okxpc3RUZXN0c01hdGNoaW5n
RmlsdGVyKCkgewogICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgdGVzdF9jYXNlLT50ZXN0X2lu
Zm9fbGlzdCgpLnNpemUoKTsgaisrKSB7CiAgICAgICBjb25zdCBUZXN0SW5mbyogY29uc3QgdGVz
dF9pbmZvID0KICAgICAgICAgICB0ZXN0X2Nhc2UtPnRlc3RfaW5mb19saXN0KClbal07Ci0gICAg
ICBpZiAodGVzdF9pbmZvLT5tYXRjaGVzX2ZpbHRlcigpKSB7CisgICAgICBpZiAodGVzdF9pbmZv
LT5tYXRjaGVzX2ZpbHRlcl8pIHsKICAgICAgICAgaWYgKCFwcmludGVkX3Rlc3RfY2FzZV9uYW1l
KSB7CiAgICAgICAgICAgcHJpbnRlZF90ZXN0X2Nhc2VfbmFtZSA9IHRydWU7Ci0gICAgICAgICAg
cHJpbnRmKCIlcy5cbiIsIHRlc3RfY2FzZS0+bmFtZSgpKTsKKyAgICAgICAgICBwcmludGYoIiVz
LiIsIHRlc3RfY2FzZS0+bmFtZSgpKTsKKyAgICAgICAgICBpZiAodGVzdF9jYXNlLT50eXBlX3Bh
cmFtKCkgIT0gTlVMTCkgeworICAgICAgICAgICAgcHJpbnRmKCIgICMgJXMgPSAiLCBrVHlwZVBh
cmFtTGFiZWwpOworICAgICAgICAgICAgLy8gV2UgcHJpbnQgdGhlIHR5cGUgcGFyYW1ldGVyIG9u
IGEgc2luZ2xlIGxpbmUgdG8gbWFrZQorICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBlYXN5IHRv
IHBhcnNlIGJ5IGEgcHJvZ3JhbS4KKyAgICAgICAgICAgIFByaW50T25PbmVMaW5lKHRlc3RfY2Fz
ZS0+dHlwZV9wYXJhbSgpLCBrTWF4UGFyYW1MZW5ndGgpOworICAgICAgICAgIH0KKyAgICAgICAg
ICBwcmludGYoIlxuIik7CisgICAgICAgIH0KKyAgICAgICAgcHJpbnRmKCIgICVzIiwgdGVzdF9p
bmZvLT5uYW1lKCkpOworICAgICAgICBpZiAodGVzdF9pbmZvLT52YWx1ZV9wYXJhbSgpICE9IE5V
TEwpIHsKKyAgICAgICAgICBwcmludGYoIiAgIyAlcyA9ICIsIGtWYWx1ZVBhcmFtTGFiZWwpOwor
ICAgICAgICAgIC8vIFdlIHByaW50IHRoZSB2YWx1ZSBwYXJhbWV0ZXIgb24gYSBzaW5nbGUgbGlu
ZSB0byBtYWtlIHRoZQorICAgICAgICAgIC8vIG91dHB1dCBlYXN5IHRvIHBhcnNlIGJ5IGEgcHJv
Z3JhbS4KKyAgICAgICAgICBQcmludE9uT25lTGluZSh0ZXN0X2luZm8tPnZhbHVlX3BhcmFtKCks
IGtNYXhQYXJhbUxlbmd0aCk7CiAgICAgICAgIH0KLSAgICAgICAgcHJpbnRmKCIgICVzXG4iLCB0
ZXN0X2luZm8tPm5hbWUoKSk7CisgICAgICAgIHByaW50ZigiXG4iKTsKICAgICAgIH0KICAgICB9
CiAgIH0KICAgZmZsdXNoKHN0ZG91dCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZm9y
bWF0ID0gVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQoKTsKKyAgaWYgKG91dHB1dF9m
b3JtYXQgPT0gInhtbCIgfHwgb3V0cHV0X2Zvcm1hdCA9PSAianNvbiIpIHsKKyAgICBGSUxFKiBm
aWxlb3V0ID0gT3BlbkZpbGVGb3JXcml0aW5nKAorICAgICAgICBVbml0VGVzdE9wdGlvbnM6Okdl
dEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOworICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIHN0cmVhbTsKKyAgICBpZiAob3V0cHV0X2Zvcm1hdCA9PSAieG1sIikgeworICAgICAgWG1s
VW5pdFRlc3RSZXN1bHRQcmludGVyKAorICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJz
b2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSkKKyAgICAgICAgICAuUHJpbnRYbWxUZXN0
c0xpc3QoJnN0cmVhbSwgdGVzdF9jYXNlc18pOworICAgIH0gZWxzZSBpZiAob3V0cHV0X2Zvcm1h
dCA9PSAianNvbiIpIHsKKyAgICAgIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIoCisgICAgICAg
ICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0cigp
KQorICAgICAgICAgIC5QcmludEpzb25UZXN0TGlzdCgmc3RyZWFtLCB0ZXN0X2Nhc2VzXyk7Cisg
ICAgfQorICAgIGZwcmludGYoZmlsZW91dCwgIiVzIiwgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnN0
cmVhbSkuY19zdHIoKSk7CisgICAgZmNsb3NlKGZpbGVvdXQpOworICB9CiB9CiAKIC8vIFNldHMg
dGhlIE9TIHN0YWNrIHRyYWNlIGdldHRlci4KQEAgLTQyNTQsMTcgKzU0NzcsMjUgQEAgdm9pZCBV
bml0VGVzdEltcGw6OnNldF9vc19zdGFja190cmFjZV9nZXR0ZXIoCiAvLyBnZXR0ZXIsIGFuZCBy
ZXR1cm5zIGl0LgogT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlKiBVbml0VGVzdEltcGw6Om9z
X3N0YWNrX3RyYWNlX2dldHRlcigpIHsKICAgaWYgKG9zX3N0YWNrX3RyYWNlX2dldHRlcl8gPT0g
TlVMTCkgeworI2lmZGVmIEdURVNUX09TX1NUQUNLX1RSQUNFX0dFVFRFUl8KKyAgICBvc19zdGFj
a190cmFjZV9nZXR0ZXJfID0gbmV3IEdURVNUX09TX1NUQUNLX1RSQUNFX0dFVFRFUl87CisjZWxz
ZQogICAgIG9zX3N0YWNrX3RyYWNlX2dldHRlcl8gPSBuZXcgT3NTdGFja1RyYWNlR2V0dGVyOwor
I2VuZGlmICAvLyBHVEVTVF9PU19TVEFDS19UUkFDRV9HRVRURVJfCiAgIH0KIAogICByZXR1cm4g
b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXzsKIH0KIAotLy8gUmV0dXJucyB0aGUgVGVzdFJlc3VsdCBm
b3IgdGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLCBvcgotLy8gdGhlIFRlc3RSZXN1
bHQgZm9yIHRoZSBhZCBob2MgdGVzdCBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcuCisvLyBSZXR1cm5z
IHRoZSBtb3N0IHNwZWNpZmljIFRlc3RSZXN1bHQgY3VycmVudGx5IHJ1bm5pbmcuCiBUZXN0UmVz
dWx0KiBVbml0VGVzdEltcGw6OmN1cnJlbnRfdGVzdF9yZXN1bHQoKSB7Ci0gIHJldHVybiBjdXJy
ZW50X3Rlc3RfaW5mb18gPwotICAgIGN1cnJlbnRfdGVzdF9pbmZvXy0+aW1wbCgpLT5yZXN1bHQo
KSA6ICZhZF9ob2NfdGVzdF9yZXN1bHRfOworICBpZiAoY3VycmVudF90ZXN0X2luZm9fICE9IE5V
TEwpIHsKKyAgICByZXR1cm4gJmN1cnJlbnRfdGVzdF9pbmZvXy0+cmVzdWx0XzsKKyAgfQorICBp
ZiAoY3VycmVudF90ZXN0X2Nhc2VfICE9IE5VTEwpIHsKKyAgICByZXR1cm4gJmN1cnJlbnRfdGVz
dF9jYXNlXy0+YWRfaG9jX3Rlc3RfcmVzdWx0XzsKKyAgfQorICByZXR1cm4gJmFkX2hvY190ZXN0
X3Jlc3VsdF87CiB9CiAKIC8vIFNodWZmbGVzIGFsbCB0ZXN0IGNhc2VzLCBhbmQgdGhlIHRlc3Rz
IHdpdGhpbiBlYWNoIHRlc3QgY2FzZSwKQEAgLTQyOTMsMzMgKzU1MjQsNyBAQCB2b2lkIFVuaXRU
ZXN0SW1wbDo6VW5zaHVmZmxlVGVzdHMoKSB7CiAgIH0KIH0KIAotLy8gVGVzdEluZm9JbXBsIGNv
bnN0cnVjdG9yLiBUaGUgbmV3IGluc3RhbmNlIGFzc3VtZXMgb3duZXJzaGlwIG9mIHRoZSB0ZXN0
Ci0vLyBmYWN0b3J5IG9iamVjdC4KLVRlc3RJbmZvSW1wbDo6VGVzdEluZm9JbXBsKFRlc3RJbmZv
KiBwYXJlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX3Rlc3Rf
Y2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV9uYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV90ZXN0X2Nhc2VfY29t
bWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfY29tbWVudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVJZCBhX2ZpeHR1cmVfY2xhc3NfaWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0
b3J5KSA6Ci0gICAgcGFyZW50XyhwYXJlbnQpLAotICAgIHRlc3RfY2FzZV9uYW1lXyhTdHJpbmco
YV90ZXN0X2Nhc2VfbmFtZSkpLAotICAgIG5hbWVfKFN0cmluZyhhX25hbWUpKSwKLSAgICB0ZXN0
X2Nhc2VfY29tbWVudF8oU3RyaW5nKGFfdGVzdF9jYXNlX2NvbW1lbnQpKSwKLSAgICBjb21tZW50
XyhTdHJpbmcoYV9jb21tZW50KSksCi0gICAgZml4dHVyZV9jbGFzc19pZF8oYV9maXh0dXJlX2Ns
YXNzX2lkKSwKLSAgICBzaG91bGRfcnVuXyhmYWxzZSksCi0gICAgaXNfZGlzYWJsZWRfKGZhbHNl
KSwKLSAgICBtYXRjaGVzX2ZpbHRlcl8oZmFsc2UpLAotICAgIGZhY3RvcnlfKGZhY3RvcnkpIHsK
LX0KLQotLy8gVGVzdEluZm9JbXBsIGRlc3RydWN0b3IuCi1UZXN0SW5mb0ltcGw6On5UZXN0SW5m
b0ltcGwoKSB7Ci0gIGRlbGV0ZSBmYWN0b3J5XzsKLX0KLQotLy8gUmV0dXJucyB0aGUgY3VycmVu
dCBPUyBzdGFjayB0cmFjZSBhcyBhIFN0cmluZy4KKy8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mg
c3RhY2sgdHJhY2UgYXMgYW4gc3RkOjpzdHJpbmcuCiAvLwogLy8gVGhlIG1heGltdW0gbnVtYmVy
IG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZCBpcyBzcGVjaWZpZWQgYnkKIC8vIHRoZSBn
dGVzdF9zdGFja190cmFjZV9kZXB0aCBmbGFnLiAgVGhlIHNraXBfY291bnQgcGFyYW1ldGVyCkBA
IC00MzI5LDE1ICs1NTM0LDE1IEBAIFRlc3RJbmZvSW1wbDo6flRlc3RJbmZvSW1wbCgpIHsKIC8v
IEZvciBleGFtcGxlLCBpZiBGb28oKSBjYWxscyBCYXIoKSwgd2hpY2ggaW4gdHVybiBjYWxscwog
Ly8gR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCguLi4sIDEpLCBGb28oKSB3aWxsIGJl
IGluY2x1ZGVkIGluCiAvLyB0aGUgdHJhY2UgYnV0IEJhcigpIGFuZCBHZXRDdXJyZW50T3NTdGFj
a1RyYWNlRXhjZXB0VG9wKCkgd29uJ3QuCi1TdHJpbmcgR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4
Y2VwdFRvcChVbml0VGVzdCogLyp1bml0X3Rlc3QqLywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBza2lwX2NvdW50KSB7CitzdGQ6OnN0cmluZyBHZXRDdXJyZW50
T3NTdGFja1RyYWNlRXhjZXB0VG9wKFVuaXRUZXN0KiAvKnVuaXRfdGVzdCovLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2tpcF9jb3VudCkgewogICAv
LyBXZSBwYXNzIHNraXBfY291bnQgKyAxIHRvIHNraXAgdGhpcyB3cmFwcGVyIGZ1bmN0aW9uIGlu
IGFkZGl0aW9uCiAgIC8vIHRvIHdoYXQgdGhlIHVzZXIgcmVhbGx5IHdhbnRzIHRvIHNraXAuCiAg
IHJldHVybiBHZXRVbml0VGVzdEltcGwoKS0+Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcChz
a2lwX2NvdW50ICsgMSk7CiB9CiAKLS8vIFVzZWQgYnkgdGhlIEdURVNUX0hJREVfVU5SRUFDSEFC
TEVfQ09ERV8gbWFjcm8gdG8gc3VwcHJlc3MgdW5yZWFjaGFibGUKLS8vIGNvZGUgd2FybmluZ3Mu
CisvLyBVc2VkIGJ5IHRoZSBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdf
QkVMT1dfIG1hY3JvIHRvCisvLyBzdXBwcmVzcyB1bnJlYWNoYWJsZSBjb2RlIHdhcm5pbmdzLgog
bmFtZXNwYWNlIHsKIGNsYXNzIENsYXNzVW5pcXVlVG9BbHdheXNUcnVlIHt9OwogfQpAQCAtNDM3
MSwxNCArNTU3NiwxMyBAQCBib29sIFNraXBQcmVmaXgoY29uc3QgY2hhciogcHJlZml4LCBjb25z
dCBjaGFyKiogcHN0cikgewogLy8gcGFydCBjYW4gYmUgb21pdHRlZC4KIC8vCiAvLyBSZXR1cm5z
IHRoZSB2YWx1ZSBvZiB0aGUgZmxhZywgb3IgTlVMTCBpZiB0aGUgcGFyc2luZyBmYWlsZWQuCi1j
b25zdCBjaGFyKiBQYXJzZUZsYWdWYWx1ZShjb25zdCBjaGFyKiBzdHIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmbGFnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBkZWZfb3B0aW9uYWwpIHsKK3N0YXRpYyBjb25zdCBjaGFyKiBQYXJzZUZsYWdWYWx1
ZShjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBkZWZfb3B0aW9uYWwpIHsKICAgLy8gc3RyIGFuZCBmbGFnIG11
c3Qgbm90IGJlIE5VTEwuCiAgIGlmIChzdHIgPT0gTlVMTCB8fCBmbGFnID09IE5VTEwpIHJldHVy
biBOVUxMOwogCiAgIC8vIFRoZSBmbGFnIG11c3Qgc3RhcnQgd2l0aCAiLS0iIGZvbGxvd2VkIGJ5
IEdURVNUX0ZMQUdfUFJFRklYXy4KLSAgY29uc3QgU3RyaW5nIGZsYWdfc3RyID0gU3RyaW5nOjpG
b3JtYXQoIi0tJXMlcyIsIEdURVNUX0ZMQUdfUFJFRklYXywgZmxhZyk7CisgIGNvbnN0IHN0ZDo6
c3RyaW5nIGZsYWdfc3RyID0gc3RkOjpzdHJpbmcoIi0tIikgKyBHVEVTVF9GTEFHX1BSRUZJWF8g
KyBmbGFnOwogICBjb25zdCBzaXplX3QgZmxhZ19sZW4gPSBmbGFnX3N0ci5sZW5ndGgoKTsKICAg
aWYgKHN0cm5jbXAoc3RyLCBmbGFnX3N0ci5jX3N0cigpLCBmbGFnX2xlbikgIT0gMCkgcmV0dXJu
IE5VTEw7CiAKQEAgLTQ0MDksNyArNTYxMyw3IEBAIGNvbnN0IGNoYXIqIFBhcnNlRmxhZ1ZhbHVl
KGNvbnN0IGNoYXIqIHN0ciwKIC8vCiAvLyBPbiBzdWNjZXNzLCBzdG9yZXMgdGhlIHZhbHVlIG9m
IHRoZSBmbGFnIGluICp2YWx1ZSwgYW5kIHJldHVybnMKIC8vIHRydWUuICBPbiBmYWlsdXJlLCBy
ZXR1cm5zIGZhbHNlIHdpdGhvdXQgY2hhbmdpbmcgKnZhbHVlLgotYm9vbCBQYXJzZUJvb2xGbGFn
KGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgY2hhciogZmxhZywgYm9vbCogdmFsdWUpIHsKK3N0YXRp
YyBib29sIFBhcnNlQm9vbEZsYWcoY29uc3QgY2hhciogc3RyLCBjb25zdCBjaGFyKiBmbGFnLCBi
b29sKiB2YWx1ZSkgewogICAvLyBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyBhcyBhIHN0cmlu
Zy4KICAgY29uc3QgY2hhciogY29uc3QgdmFsdWVfc3RyID0gUGFyc2VGbGFnVmFsdWUoc3RyLCBm
bGFnLCB0cnVlKTsKIApAQCAtNDQ0Myw3ICs1NjQ3LDggQEAgYm9vbCBQYXJzZUludDMyRmxhZyhj
b25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsIEludDMyKiB2YWx1ZSkgewogLy8KIC8v
IE9uIHN1Y2Nlc3MsIHN0b3JlcyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcgaW4gKnZhbHVlLCBhbmQg
cmV0dXJucwogLy8gdHJ1ZS4gIE9uIGZhaWx1cmUsIHJldHVybnMgZmFsc2Ugd2l0aG91dCBjaGFu
Z2luZyAqdmFsdWUuCi1ib29sIFBhcnNlU3RyaW5nRmxhZyhjb25zdCBjaGFyKiBzdHIsIGNvbnN0
IGNoYXIqIGZsYWcsIFN0cmluZyogdmFsdWUpIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBTdHJpbmc+
CitzdGF0aWMgYm9vbCBQYXJzZVN0cmluZ0ZsYWcoY29uc3QgY2hhciogc3RyLCBjb25zdCBjaGFy
KiBmbGFnLCBTdHJpbmcqIHZhbHVlKSB7CiAgIC8vIEdldHMgdGhlIHZhbHVlIG9mIHRoZSBmbGFn
IGFzIGEgc3RyaW5nLgogICBjb25zdCBjaGFyKiBjb25zdCB2YWx1ZV9zdHIgPSBQYXJzZUZsYWdW
YWx1ZShzdHIsIGZsYWcsIGZhbHNlKTsKIApAQCAtNDQ3OSw3ICs1Njg0LDcgQEAgc3RhdGljIGJv
b2wgSGFzR29vZ2xlVGVzdEZsYWdQcmVmaXgoY29uc3QgY2hhciogc3RyKSB7CiAvLyAgIEBZICAg
IGNoYW5nZXMgdGhlIGNvbG9yIHRvIHllbGxvdy4KIC8vICAgQEQgICAgY2hhbmdlcyB0byB0aGUg
ZGVmYXVsdCB0ZXJtaW5hbCB0ZXh0IGNvbG9yLgogLy8KLS8vIFRPRE8od2FuQGdvb2dsZS5jb20p
OiBXcml0ZSB0ZXN0cyBmb3IgdGhpcyBvbmNlIHdlIGFkZCBzdGRvdXQKKy8vIEZJWE1FOiBXcml0
ZSB0ZXN0cyBmb3IgdGhpcyBvbmNlIHdlIGFkZCBzdGRvdXQKIC8vIGNhcHR1cmluZyB0byBHb29n
bGUgVGVzdC4KIHN0YXRpYyB2b2lkIFByaW50Q29sb3JFbmNvZGVkKGNvbnN0IGNoYXIqIHN0cikg
ewogICBHVGVzdENvbG9yIGNvbG9yID0gQ09MT1JfREVGQVVMVDsgIC8vIFRoZSBjdXJyZW50IGNv
bG9yLgpAQCAtNDQ5NSw3ICs1NzAwLDcgQEAgc3RhdGljIHZvaWQgUHJpbnRDb2xvckVuY29kZWQo
Y29uc3QgY2hhciogc3RyKSB7CiAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQ29sb3JlZFBy
aW50Zihjb2xvciwgIiVzIiwgU3RyaW5nKHN0ciwgcCAtIHN0cikuY19zdHIoKSk7CisgICAgQ29s
b3JlZFByaW50Zihjb2xvciwgIiVzIiwgc3RkOjpzdHJpbmcoc3RyLCBwKS5jX3N0cigpKTsKIAog
ICAgIGNvbnN0IGNoYXIgY2ggPSBwWzFdOwogICAgIHN0ciA9IHAgKyAyOwpAQCAtNDU0NSwyNCAr
NTc1MCwyOCBAQCBzdGF0aWMgY29uc3QgY2hhciBrQ29sb3JFbmNvZGVkSGVscE1lc3NhZ2VbXSA9
CiAiICAgICAgRW5hYmxlL2Rpc2FibGUgY29sb3JlZCBvdXRwdXQuIFRoZSBkZWZhdWx0IGlzIEBH
YXV0b0BELlxuIgogIiAgLUBHLSIgR1RFU1RfRkxBR19QUkVGSVhfICJwcmludF90aW1lPTBARFxu
IgogIiAgICAgIERvbid0IHByaW50IHRoZSBlbGFwc2VkIHRpbWUgb2YgZWFjaCB0ZXN0LlxuIgot
IiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJvdXRwdXQ9eG1sQFlbQEc6QFlESVJFQ1RPUllf
UEFUSEBHIgorIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJvdXRwdXQ9QFkoQEdqc29uQFl8
QEd4bWxAWSlbQEc6QFlESVJFQ1RPUllfUEFUSEBHIgogICAgIEdURVNUX1BBVEhfU0VQXyAiQFl8
QEc6QFlGSUxFX1BBVEhdQERcbiIKLSIgICAgICBHZW5lcmF0ZSBhbiBYTUwgcmVwb3J0IGluIHRo
ZSBnaXZlbiBkaXJlY3Rvcnkgb3Igd2l0aCB0aGUgZ2l2ZW4gZmlsZVxuIgotIiAgICAgIG5hbWUu
IEBZRklMRV9QQVRIQEQgZGVmYXVsdHMgdG8gQEd0ZXN0X2RldGFpbHMueG1sQEQuXG4iCisiICAg
ICAgR2VuZXJhdGUgYSBKU09OIG9yIFhNTCByZXBvcnQgaW4gdGhlIGdpdmVuIGRpcmVjdG9yeSBv
ciB3aXRoIHRoZSBnaXZlblxuIgorIiAgICAgIGZpbGUgbmFtZS4gQFlGSUxFX1BBVEhARCBkZWZh
dWx0cyB0byBAR3Rlc3RfZGV0YWlscy54bWxARC5cbiIKKyMgaWYgR1RFU1RfQ0FOX1NUUkVBTV9S
RVNVTFRTXworIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJzdHJlYW1fcmVzdWx0X3RvPUBZ
SE9TVEBHOkBZUE9SVEBEXG4iCisiICAgICAgU3RyZWFtIHRlc3QgcmVzdWx0cyB0byB0aGUgZ2l2
ZW4gc2VydmVyLlxuIgorIyBlbmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXwogIlxu
IgogIkFzc2VydGlvbiBCZWhhdmlvcjpcbiIKLSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVCAmJiAh
R1RFU1RfT1NfV0lORE9XUworIyBpZiBHVEVTVF9IQVNfREVBVEhfVEVTVCAmJiAhR1RFU1RfT1Nf
V0lORE9XUwogIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJkZWF0aF90ZXN0X3N0eWxlPUBZ
KEBHZmFzdEBZfEBHdGhyZWFkc2FmZUBZKUBEXG4iCiAiICAgICAgU2V0IHRoZSBkZWZhdWx0IGRl
YXRoIHRlc3Qgc3R5bGUuXG4iCi0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUICYmICFH
VEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVCAmJiAhR1RF
U1RfT1NfV0lORE9XUwogIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJicmVha19vbl9mYWls
dXJlQERcbiIKICIgICAgICBUdXJuIGFzc2VydGlvbiBmYWlsdXJlcyBpbnRvIGRlYnVnZ2VyIGJy
ZWFrLXBvaW50cy5cbiIKICIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAidGhyb3dfb25fZmFp
bHVyZUBEXG4iCi0iICAgICAgVHVybiBhc3NlcnRpb24gZmFpbHVyZXMgaW50byBDKysgZXhjZXB0
aW9ucy5cbiIKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0iICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJ
WF8gImNhdGNoX2V4Y2VwdGlvbnNARFxuIgotIiAgICAgIFN1cHByZXNzIHBvcC11cHMgY2F1c2Vk
IGJ5IGV4Y2VwdGlvbnMuXG4iCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyIgICAgICBU
dXJuIGFzc2VydGlvbiBmYWlsdXJlcyBpbnRvIEMrKyBleGNlcHRpb25zIGZvciB1c2UgYnkgYW4g
ZXh0ZXJuYWxcbiIKKyIgICAgICB0ZXN0IGZyYW1ld29yay5cbiIKKyIgIEBHLS0iIEdURVNUX0ZM
QUdfUFJFRklYXyAiY2F0Y2hfZXhjZXB0aW9ucz0wQERcbiIKKyIgICAgICBEbyBub3QgcmVwb3J0
IGV4Y2VwdGlvbnMgYXMgdGVzdCBmYWlsdXJlcy4gSW5zdGVhZCwgYWxsb3cgdGhlbVxuIgorIiAg
ICAgIHRvIGNyYXNoIHRoZSBwcm9ncmFtIG9yIHRocm93IGEgcG9wLXVwIChvbiBXaW5kb3dzKS5c
biIKICJcbiIKICJFeGNlcHQgZm9yIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAibGlzdF90ZXN0
c0BELCB5b3UgY2FuIGFsdGVybmF0aXZlbHkgc2V0ICIKICAgICAidGhlIGNvcnJlc3BvbmRpbmdc
biIKQEAgLTQ1NzYsNDUgKzU3ODUsODcgQEAgc3RhdGljIGNvbnN0IGNoYXIga0NvbG9yRW5jb2Rl
ZEhlbHBNZXNzYWdlW10gPQogIihub3Qgb25lIGluIHlvdXIgb3duIGNvZGUgb3IgdGVzdHMpLCBw
bGVhc2UgcmVwb3J0IGl0IHRvXG4iCiAiQEc8IiBHVEVTVF9ERVZfRU1BSUxfICI+QEQuXG4iOwog
CitzdGF0aWMgYm9vbCBQYXJzZUdvb2dsZVRlc3RGbGFnKGNvbnN0IGNoYXIqIGNvbnN0IGFyZykg
eworICByZXR1cm4gUGFyc2VCb29sRmxhZyhhcmcsIGtBbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcs
CisgICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rl
c3RzKSkgfHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrQnJlYWtPbkZhaWx1cmVGbGFnLAor
ICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJlKSkgfHwKKyAg
ICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrQ2F0Y2hFeGNlcHRpb25zRmxhZywKKyAgICAgICAgICAg
ICAgICAgICAgJkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykpIHx8CisgICAgICBQYXJzZVN0
cmluZ0ZsYWcoYXJnLCBrQ29sb3JGbGFnLCAmR1RFU1RfRkxBRyhjb2xvcikpIHx8CisgICAgICBQ
YXJzZVN0cmluZ0ZsYWcoYXJnLCBrRGVhdGhUZXN0U3R5bGVGbGFnLAorICAgICAgICAgICAgICAg
ICAgICAgICZHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpKSB8fAorICAgICAgUGFyc2VCb29s
RmxhZyhhcmcsIGtEZWF0aFRlc3RVc2VGb3JrLAorICAgICAgICAgICAgICAgICAgICAmR1RFU1Rf
RkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKSkgfHwKKyAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcs
IGtGaWx0ZXJGbGFnLCAmR1RFU1RfRkxBRyhmaWx0ZXIpKSB8fAorICAgICAgUGFyc2VTdHJpbmdG
bGFnKGFyZywga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZywKKyAgICAgICAgICAgICAgICAgICAg
ICAmR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkpIHx8CisgICAgICBQYXJzZUJv
b2xGbGFnKGFyZywga0xpc3RUZXN0c0ZsYWcsICZHVEVTVF9GTEFHKGxpc3RfdGVzdHMpKSB8fAor
ICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga091dHB1dEZsYWcsICZHVEVTVF9GTEFHKG91dHB1
dCkpIHx8CisgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga1ByaW50VGltZUZsYWcsICZHVEVTVF9G
TEFHKHByaW50X3RpbWUpKSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtQcmludFVURjhG
bGFnLCAmR1RFU1RfRkxBRyhwcmludF91dGY4KSkgfHwKKyAgICAgIFBhcnNlSW50MzJGbGFnKGFy
Zywga1JhbmRvbVNlZWRGbGFnLCAmR1RFU1RfRkxBRyhyYW5kb21fc2VlZCkpIHx8CisgICAgICBQ
YXJzZUludDMyRmxhZyhhcmcsIGtSZXBlYXRGbGFnLCAmR1RFU1RfRkxBRyhyZXBlYXQpKSB8fAor
ICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtTaHVmZmxlRmxhZywgJkdURVNUX0ZMQUcoc2h1ZmZs
ZSkpIHx8CisgICAgICBQYXJzZUludDMyRmxhZyhhcmcsIGtTdGFja1RyYWNlRGVwdGhGbGFnLAor
ICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpKSB8fAor
ICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga1N0cmVhbVJlc3VsdFRvRmxhZywKKyAgICAgICAg
ICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSkgfHwKKyAgICAgIFBh
cnNlQm9vbEZsYWcoYXJnLCBrVGhyb3dPbkZhaWx1cmVGbGFnLAorICAgICAgICAgICAgICAgICAg
ICAmR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSk7Cit9CisKKyNpZiBHVEVTVF9VU0VfT1dO
X0ZMQUdGSUxFX0ZMQUdfCitzdGF0aWMgdm9pZCBMb2FkRmxhZ3NGcm9tRmlsZShjb25zdCBzdGQ6
OnN0cmluZyYgcGF0aCkgeworICBGSUxFKiBmbGFnZmlsZSA9IHBvc2l4OjpGT3BlbihwYXRoLmNf
c3RyKCksICJyIik7CisgIGlmICghZmxhZ2ZpbGUpIHsKKyAgICBHVEVTVF9MT0dfKEZBVEFMKSA8
PCAiVW5hYmxlIHRvIG9wZW4gZmlsZSBcIiIgPDwgR1RFU1RfRkxBRyhmbGFnZmlsZSkKKyAgICAg
ICAgICAgICAgICAgICAgICA8PCAiXCIiOworICB9CisgIHN0ZDo6c3RyaW5nIGNvbnRlbnRzKFJl
YWRFbnRpcmVGaWxlKGZsYWdmaWxlKSk7CisgIHBvc2l4OjpGQ2xvc2UoZmxhZ2ZpbGUpOworICBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbGluZXM7CisgIFNwbGl0U3RyaW5nKGNvbnRlbnRzLCAn
XG4nLCAmbGluZXMpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpbmVzLnNpemUoKTsgKytp
KSB7CisgICAgaWYgKGxpbmVzW2ldLmVtcHR5KCkpCisgICAgICBjb250aW51ZTsKKyAgICBpZiAo
IVBhcnNlR29vZ2xlVGVzdEZsYWcobGluZXNbaV0uY19zdHIoKSkpCisgICAgICBnX2hlbHBfZmxh
ZyA9IHRydWU7CisgIH0KK30KKyNlbmRpZiAgLy8gR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFH
XworCiAvLyBQYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IgR29vZ2xlIFRlc3QgZmxhZ3MsIHdp
dGhvdXQgaW5pdGlhbGl6aW5nCiAvLyBvdGhlciBwYXJ0cyBvZiBHb29nbGUgVGVzdC4gIFRoZSB0
eXBlIHBhcmFtZXRlciBDaGFyVHlwZSBjYW4gYmUKIC8vIGluc3RhbnRpYXRlZCB0byBlaXRoZXIg
Y2hhciBvciB3Y2hhcl90LgogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogdm9pZCBQYXJz
ZUdvb2dsZVRlc3RGbGFnc09ubHlJbXBsKGludCogYXJnYywgQ2hhclR5cGUqKiBhcmd2KSB7CiAg
IGZvciAoaW50IGkgPSAxOyBpIDwgKmFyZ2M7IGkrKykgewotICAgIGNvbnN0IFN0cmluZyBhcmdf
c3RyaW5nID0gU3RyZWFtYWJsZVRvU3RyaW5nKGFyZ3ZbaV0pOworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIGFyZ19zdHJpbmcgPSBTdHJlYW1hYmxlVG9TdHJpbmcoYXJndltpXSk7CiAgICAgY29uc3Qg
Y2hhciogY29uc3QgYXJnID0gYXJnX3N0cmluZy5jX3N0cigpOwogCiAgICAgdXNpbmcgaW50ZXJu
YWw6OlBhcnNlQm9vbEZsYWc7CiAgICAgdXNpbmcgaW50ZXJuYWw6OlBhcnNlSW50MzJGbGFnOwog
ICAgIHVzaW5nIGludGVybmFsOjpQYXJzZVN0cmluZ0ZsYWc7CiAKLSAgICAvLyBEbyB3ZSBzZWUg
YSBHb29nbGUgVGVzdCBmbGFnPwotICAgIGlmIChQYXJzZUJvb2xGbGFnKGFyZywga0Fsc29SdW5E
aXNhYmxlZFRlc3RzRmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhhbHNv
X3J1bl9kaXNhYmxlZF90ZXN0cykpIHx8Ci0gICAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrQnJl
YWtPbkZhaWx1cmVGbGFnLAotICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGJyZWFr
X29uX2ZhaWx1cmUpKSB8fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0NhdGNoRXhjZXB0
aW9uc0ZsYWcsCi0gICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0
aW9ucykpIHx8Ci0gICAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtDb2xvckZsYWcsICZHVEVT
VF9GTEFHKGNvbG9yKSkgfHwKLSAgICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga0RlYXRoVGVz
dFN0eWxlRmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGRlYXRoX3Rl
c3Rfc3R5bGUpKSB8fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0RlYXRoVGVzdFVzZUZv
cmssCi0gICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9y
aykpIHx8Ci0gICAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtGaWx0ZXJGbGFnLCAmR1RFU1Rf
RkxBRyhmaWx0ZXIpKSB8fAotICAgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrSW50ZXJuYWxS
dW5EZWF0aFRlc3RGbGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoaW50
ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpKSB8fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0xp
c3RUZXN0c0ZsYWcsICZHVEVTVF9GTEFHKGxpc3RfdGVzdHMpKSB8fAotICAgICAgICBQYXJzZVN0
cmluZ0ZsYWcoYXJnLCBrT3V0cHV0RmxhZywgJkdURVNUX0ZMQUcob3V0cHV0KSkgfHwKLSAgICAg
ICAgUGFyc2VCb29sRmxhZyhhcmcsIGtQcmludFRpbWVGbGFnLCAmR1RFU1RfRkxBRyhwcmludF90
aW1lKSkgfHwKLSAgICAgICAgUGFyc2VJbnQzMkZsYWcoYXJnLCBrUmFuZG9tU2VlZEZsYWcsICZH
VEVTVF9GTEFHKHJhbmRvbV9zZWVkKSkgfHwKLSAgICAgICAgUGFyc2VJbnQzMkZsYWcoYXJnLCBr
UmVwZWF0RmxhZywgJkdURVNUX0ZMQUcocmVwZWF0KSkgfHwKLSAgICAgICAgUGFyc2VCb29sRmxh
ZyhhcmcsIGtTaHVmZmxlRmxhZywgJkdURVNUX0ZMQUcoc2h1ZmZsZSkpIHx8Ci0gICAgICAgIFBh
cnNlSW50MzJGbGFnKGFyZywga1N0YWNrVHJhY2VEZXB0aEZsYWcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICZHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSkgfHwKLSAgICAgICAgUGFyc2VC
b29sRmxhZyhhcmcsIGtUaHJvd09uRmFpbHVyZUZsYWcsICZHVEVTVF9GTEFHKHRocm93X29uX2Zh
aWx1cmUpKQotICAgICAgICApIHsKLSAgICAgIC8vIFllcy4gIFNoaWZ0IHRoZSByZW1haW5kZXIg
b2YgdGhlIGFyZ3YgbGlzdCBsZWZ0IGJ5IG9uZS4gIE5vdGUKKyAgICBib29sIHJlbW92ZV9mbGFn
ID0gZmFsc2U7CisgICAgaWYgKFBhcnNlR29vZ2xlVGVzdEZsYWcoYXJnKSkgeworICAgICAgcmVt
b3ZlX2ZsYWcgPSB0cnVlOworI2lmIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KKyAgICB9
IGVsc2UgaWYgKFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtGbGFnZmlsZUZsYWcsICZHVEVTVF9GTEFH
KGZsYWdmaWxlKSkpIHsKKyAgICAgIExvYWRGbGFnc0Zyb21GaWxlKEdURVNUX0ZMQUcoZmxhZ2Zp
bGUpKTsKKyAgICAgIHJlbW92ZV9mbGFnID0gdHJ1ZTsKKyNlbmRpZiAgLy8gR1RFU1RfVVNFX09X
Tl9GTEFHRklMRV9GTEFHXworICAgIH0gZWxzZSBpZiAoYXJnX3N0cmluZyA9PSAiLS1oZWxwIiB8
fCBhcmdfc3RyaW5nID09ICItaCIgfHwKKyAgICAgICAgICAgICAgIGFyZ19zdHJpbmcgPT0gIi0/
IiB8fCBhcmdfc3RyaW5nID09ICIvPyIgfHwKKyAgICAgICAgICAgICAgIEhhc0dvb2dsZVRlc3RG
bGFnUHJlZml4KGFyZykpIHsKKyAgICAgIC8vIEJvdGggaGVscCBmbGFnIGFuZCB1bnJlY29nbml6
ZWQgR29vZ2xlIFRlc3QgZmxhZ3MgKGV4Y2x1ZGluZworICAgICAgLy8gaW50ZXJuYWwgb25lcykg
dHJpZ2dlciBoZWxwIGRpc3BsYXkuCisgICAgICBnX2hlbHBfZmxhZyA9IHRydWU7CisgICAgfQor
CisgICAgaWYgKHJlbW92ZV9mbGFnKSB7CisgICAgICAvLyBTaGlmdCB0aGUgcmVtYWluZGVyIG9m
IHRoZSBhcmd2IGxpc3QgbGVmdCBieSBvbmUuICBOb3RlCiAgICAgICAvLyB0aGF0IGFyZ3YgaGFz
ICgqYXJnYyArIDEpIGVsZW1lbnRzLCB0aGUgbGFzdCBvbmUgYWx3YXlzIGJlaW5nCiAgICAgICAv
LyBOVUxMLiAgVGhlIGZvbGxvd2luZyBsb29wIG1vdmVzIHRoZSB0cmFpbGluZyBOVUxMIGVsZW1l
bnQgYXMKICAgICAgIC8vIHdlbGwuCkBAIC00NjI4LDEyICs1ODc5LDYgQEAgdm9pZCBQYXJzZUdv
b2dsZVRlc3RGbGFnc09ubHlJbXBsKGludCogYXJnYywgQ2hhclR5cGUqKiBhcmd2KSB7CiAgICAg
ICAvLyBXZSBhbHNvIG5lZWQgdG8gZGVjcmVtZW50IHRoZSBpdGVyYXRvciBhcyB3ZSBqdXN0IHJl
bW92ZWQKICAgICAgIC8vIGFuIGVsZW1lbnQuCiAgICAgICBpLS07Ci0gICAgfSBlbHNlIGlmIChh
cmdfc3RyaW5nID09ICItLWhlbHAiIHx8IGFyZ19zdHJpbmcgPT0gIi1oIiB8fAotICAgICAgICAg
ICAgICAgYXJnX3N0cmluZyA9PSAiLT8iIHx8IGFyZ19zdHJpbmcgPT0gIi8/IiB8fAotICAgICAg
ICAgICAgICAgSGFzR29vZ2xlVGVzdEZsYWdQcmVmaXgoYXJnKSkgewotICAgICAgLy8gQm90aCBo
ZWxwIGZsYWcgYW5kIHVucmVjb2duaXplZCBHb29nbGUgVGVzdCBmbGFncyAoZXhjbHVkaW5nCi0g
ICAgICAvLyBpbnRlcm5hbCBvbmVzKSB0cmlnZ2VyIGhlbHAgZGlzcGxheS4KLSAgICAgIGdfaGVs
cF9mbGFnID0gdHJ1ZTsKICAgICB9CiAgIH0KIApAQCAtNDY0OSw2ICs1ODk0LDE3IEBAIHZvaWQg
UGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5SW1wbChpbnQqIGFyZ2MsIENoYXJUeXBlKiogYXJndikg
ewogLy8gb3RoZXIgcGFydHMgb2YgR29vZ2xlIFRlc3QuCiB2b2lkIFBhcnNlR29vZ2xlVGVzdEZs
YWdzT25seShpbnQqIGFyZ2MsIGNoYXIqKiBhcmd2KSB7CiAgIFBhcnNlR29vZ2xlVGVzdEZsYWdz
T25seUltcGwoYXJnYywgYXJndik7CisKKyAgLy8gRml4IHRoZSB2YWx1ZSBvZiAqX05TR2V0QXJn
YygpIG9uIG1hY09TLCBidXQgaWZmCisgIC8vICpfTlNHZXRBcmd2KCkgPT0gYXJndgorICAvLyBP
bmx5IGFwcGxpY2FibGUgdG8gY2hhcioqIHZlcnNpb24gb2YgYXJndgorI2lmIEdURVNUX09TX01B
QworI2lmbmRlZiBHVEVTVF9PU19JT1MKKyAgaWYgKCpfTlNHZXRBcmd2KCkgPT0gYXJndikgewor
ICAgICpfTlNHZXRBcmdjKCkgPSAqYXJnYzsKKyAgfQorI2VuZGlmCisjZW5kaWYKIH0KIHZvaWQg
UGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5KGludCogYXJnYywgd2NoYXJfdCoqIGFyZ3YpIHsKICAg
UGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5SW1wbChhcmdjLCBhcmd2KTsKQEAgLTQ2NjAsMjEgKzU5
MTYsMTkgQEAgdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoaW50KiBhcmdjLCB3Y2hhcl90
KiogYXJndikgewogLy8gd2NoYXJfdC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KIHZv
aWQgSW5pdEdvb2dsZVRlc3RJbXBsKGludCogYXJnYywgQ2hhclR5cGUqKiBhcmd2KSB7Ci0gIGdf
aW5pdF9ndGVzdF9jb3VudCsrOwotCiAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcnVuIHRoZSBpbml0
aWFsaXphdGlvbiBjb2RlIHR3aWNlLgotICBpZiAoZ19pbml0X2d0ZXN0X2NvdW50ICE9IDEpIHJl
dHVybjsKKyAgaWYgKEdUZXN0SXNJbml0aWFsaXplZCgpKSByZXR1cm47CiAKICAgaWYgKCphcmdj
IDw9IDApIHJldHVybjsKIAotICBpbnRlcm5hbDo6Z19leGVjdXRhYmxlX3BhdGggPSBpbnRlcm5h
bDo6U3RyZWFtYWJsZVRvU3RyaW5nKGFyZ3ZbMF0pOwotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RF
U1QKICAgZ19hcmd2cy5jbGVhcigpOwogICBmb3IgKGludCBpID0gMDsgaSAhPSAqYXJnYzsgaSsr
KSB7CiAgICAgZ19hcmd2cy5wdXNoX2JhY2soU3RyZWFtYWJsZVRvU3RyaW5nKGFyZ3ZbaV0pKTsK
ICAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisjaWYgR1RFU1RfSEFTX0FC
U0wKKyAgYWJzbDo6SW5pdGlhbGl6ZVN5bWJvbGl6ZXIoZ19hcmd2c1swXS5jX3N0cigpKTsKKyNl
bmRpZiAgLy8gR1RFU1RfSEFTX0FCU0wKIAogICBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoYXJn
YywgYXJndik7CiAgIEdldFVuaXRUZXN0SW1wbCgpLT5Qb3N0RmxhZ1BhcnNpbmdJbml0KCk7CkBA
IC00NjkyLDEzICs1OTQ2LDYyIEBAIHZvaWQgSW5pdEdvb2dsZVRlc3RJbXBsKGludCogYXJnYywg
Q2hhclR5cGUqKiBhcmd2KSB7CiAvLwogLy8gQ2FsbGluZyB0aGUgZnVuY3Rpb24gZm9yIHRoZSBz
ZWNvbmQgdGltZSBoYXMgbm8gdXNlci12aXNpYmxlIGVmZmVjdC4KIHZvaWQgSW5pdEdvb2dsZVRl
c3QoaW50KiBhcmdjLCBjaGFyKiogYXJndikgeworI2lmIGRlZmluZWQoR1RFU1RfQ1VTVE9NX0lO
SVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQorICBHVEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVT
VF9GVU5DVElPTl8oYXJnYywgYXJndik7CisjZWxzZSAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01f
SU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8pCiAgIGludGVybmFsOjpJbml0R29vZ2xlVGVzdElt
cGwoYXJnYywgYXJndik7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfQ1VTVE9NX0lOSVRfR09P
R0xFX1RFU1RfRlVOQ1RJT05fKQogfQogCiAvLyBUaGlzIG92ZXJsb2FkZWQgdmVyc2lvbiBjYW4g
YmUgdXNlZCBpbiBXaW5kb3dzIHByb2dyYW1zIGNvbXBpbGVkIGluCiAvLyBVTklDT0RFIG1vZGUu
CiB2b2lkIEluaXRHb29nbGVUZXN0KGludCogYXJnYywgd2NoYXJfdCoqIGFyZ3YpIHsKKyNpZiBk
ZWZpbmVkKEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9OXykKKyAgR1RFU1Rf
Q1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKGFyZ2MsIGFyZ3YpOworI2Vsc2UgIC8v
IGRlZmluZWQoR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQogICBpbnRl
cm5hbDo6SW5pdEdvb2dsZVRlc3RJbXBsKGFyZ2MsIGFyZ3YpOworI2VuZGlmICAvLyBkZWZpbmVk
KEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9OXykKK30KKworc3RkOjpzdHJp
bmcgVGVtcERpcigpIHsKKyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9URU1QRElSX0ZVTkNUSU9O
XykKKyAgcmV0dXJuIEdURVNUX0NVU1RPTV9URU1QRElSX0ZVTkNUSU9OXygpOworI2VuZGlmCisK
KyNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorICByZXR1cm4gIlxcdGVtcFxcIjsKKyNlbGlm
IEdURVNUX09TX1dJTkRPV1MKKyAgY29uc3QgY2hhciogdGVtcF9kaXIgPSBpbnRlcm5hbDo6cG9z
aXg6OkdldEVudigiVEVNUCIpOworICBpZiAodGVtcF9kaXIgPT0gTlVMTCB8fCB0ZW1wX2Rpclsw
XSA9PSAnXDAnKQorICAgIHJldHVybiAiXFx0ZW1wXFwiOworICBlbHNlIGlmICh0ZW1wX2Rpcltz
dHJsZW4odGVtcF9kaXIpIC0gMV0gPT0gJ1xcJykKKyAgICByZXR1cm4gdGVtcF9kaXI7CisgIGVs
c2UKKyAgICByZXR1cm4gc3RkOjpzdHJpbmcodGVtcF9kaXIpICsgIlxcIjsKKyNlbGlmIEdURVNU
X09TX0xJTlVYX0FORFJPSUQKKyAgcmV0dXJuICIvc2RjYXJkLyI7CisjZWxzZQorICByZXR1cm4g
Ii90bXAvIjsKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKK30KKworLy8gQ2xh
c3MgU2NvcGVkVHJhY2UKKworLy8gUHVzaGVzIHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlv
biBhbmQgbWVzc2FnZSBvbnRvIGEgcGVyLXRocmVhZAorLy8gdHJhY2Ugc3RhY2sgbWFpbnRhaW5l
ZCBieSBHb29nbGUgVGVzdC4KK3ZvaWQgU2NvcGVkVHJhY2U6OlB1c2hUcmFjZShjb25zdCBjaGFy
KiBmaWxlLCBpbnQgbGluZSwgc3RkOjpzdHJpbmcgbWVzc2FnZSkgeworICBpbnRlcm5hbDo6VHJh
Y2VJbmZvIHRyYWNlOworICB0cmFjZS5maWxlID0gZmlsZTsKKyAgdHJhY2UubGluZSA9IGxpbmU7
CisgIHRyYWNlLm1lc3NhZ2Uuc3dhcChtZXNzYWdlKTsKKworICBVbml0VGVzdDo6R2V0SW5zdGFu
Y2UoKS0+UHVzaEdUZXN0VHJhY2UodHJhY2UpOworfQorCisvLyBQb3BzIHRoZSBpbmZvIHB1c2hl
ZCBieSB0aGUgYyd0b3IuCitTY29wZWRUcmFjZTo6flNjb3BlZFRyYWNlKCkKKyAgICBHVEVTVF9M
T0NLX0VYQ0xVREVEXygmVW5pdFRlc3Q6Om11dGV4XykgeworICBVbml0VGVzdDo6R2V0SW5zdGFu
Y2UoKS0+UG9wR1Rlc3RUcmFjZSgpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0X21haW4uY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3RfbWFpbi5jYwppbmRleCBkMjBjMDJmZGZiMGE5
NDYxZGNjMmEyNzg5YzQ5MjJiNWIzMDU2MzUyLi4yMTEzZjYyMWU2NTQzMGU1NTcwZGZiMjAxNTg4
NGEyZDRmNGNmMGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rl
c3RfbWFpbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3RfbWFpbi5j
YwpAQCAtMjcsMTMgKzI3LDExIEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAK
LSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLWludCBt
YWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotICBzdGQ6OmNvdXQgPDwgIlJ1bm5pbmcgbWFp
bigpIGZyb20gZ3Rlc3RfbWFpbi5jY1xuIjsKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCiAKK0dURVNUX0FQSV8gaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiph
cmd2KSB7CisgIHByaW50ZigiUnVubmluZyBtYWluKCkgZnJvbSAlc1xuIiwgX19GSUxFX18pOwog
ICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CiAgIHJldHVybiBSVU5fQUxM
X1RFU1RTKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L0JV
SUxELmJhemVsIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9CVUlMRC5iYXplbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hOTMwZDY1ZTA0NDAxNDQ0MTZhZTg4YWIyNzU4ZmQ5MzQwYTA5MzdiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9CVUlMRC5iYXplbApAQCAt
MCwwICsxLDUyNyBAQAorIyBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLgorIyBBbGwgUmlnaHRz
IFJlc2VydmVkLgorIworIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgQXV0aG9yOiBtaXN0ZXJnQGdv
b2dsZS5jb20gKEdlbm5hZGl5IENpdmlsKQorIworIyBCYXplbCBCVUlMRCBmb3IgVGhlIEdvb2ds
ZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorCitsaWNlbnNlcyhbIm5vdGlj
ZSJdKQorCitjb25maWdfc2V0dGluZygKKyAgICBuYW1lID0gIndpbmRvd3MiLAorICAgIHZhbHVl
cyA9IHsiY3B1IjogIng2NF93aW5kb3dzIn0sCispCisKK2NvbmZpZ19zZXR0aW5nKAorICAgIG5h
bWUgPSAid2luZG93c19tc3ZjIiwKKyAgICB2YWx1ZXMgPSB7ImNwdSI6ICJ4NjRfd2luZG93c19t
c3ZjIn0sCispCisKK2NvbmZpZ19zZXR0aW5nKAorICAgIG5hbWUgPSAiaGFzX2Fic2wiLAorICAg
IHZhbHVlcyA9IHsiZGVmaW5lIjogImFic2w9MSJ9LAorKQorCisjb24gd2luZG93cyBleGNsdWRl
IGd0ZXN0LXR1cGxlLmggYW5kIGdvb2dsZXRlc3QtdHVwbGUtdGVzdC5jYworY2NfdGVzdCgKKyAg
ICBuYW1lID0gImd0ZXN0X2FsbF90ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNz
ID0gZ2xvYigKKyAgICAgICAgaW5jbHVkZSA9IFsKKyAgICAgICAgICAgICJndGVzdC0qLmNjIiwK
KyAgICAgICAgICAgICJnb29nbGV0ZXN0LSouY2MiLAorICAgICAgICAgICAgIiouaCIsCisgICAg
ICAgICAgICAiZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0LyoqLyouaCIsCisgICAgICAgIF0sCisg
ICAgICAgIGV4Y2x1ZGUgPSBbCisgICAgICAgICAgICAiZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3Qu
Y2MiLAorICAgICAgICAgICAgImdvb2dsZXRlc3QtdHVwbGUtdGVzdC5jYyIsCisgICAgICAgICAg
ICAiZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtYWxsLmNjIiwKKyAgICAgICAgICAgICJndGVzdF9hbGxf
dGVzdC5jYyIsCisgICAgICAgICAgICAiZ3Rlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNjIiwKKyAg
ICAgICAgICAgICJndGVzdC1saXN0ZW5lcl90ZXN0LmNjIiwKKyAgICAgICAgICAgICJndGVzdC11
bml0dGVzdC1hcGlfdGVzdC5jYyIsCisgICAgICAgICAgICAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0
LXRlc3QuY2MiLAorICAgICAgICAgICAgImdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0
Xy5jYyIsCisgICAgICAgICAgICAiZ29vZ2xldGVzdC1jb2xvci10ZXN0Xy5jYyIsCisgICAgICAg
ICAgICAiZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3RfLmNjIiwKKyAgICAgICAgICAgICJnb29nbGV0
ZXN0LWZpbHRlci11bml0dGVzdF8uY2MiLAorICAgICAgICAgICAgImdvb2dsZXRlc3QtYnJlYWst
b24tZmFpbHVyZS11bml0dGVzdF8uY2MiLAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LWxpc3Rl
bmVyLXRlc3QuY2MiLAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYyIs
CisgICAgICAgICAgICAgImdvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdF8uY2MiLAorICAg
ICAgICAgICAgICJnb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8uY2MiLAorICAgICAgICAgICAgICJn
b29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdF8uY2MiLAorICAgICAgICAgICAgICJnb29nbGV0
ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYyIsCisgICAgICAgICAgICAgImdvb2dsZXRlc3QtcGFy
YW0tdGVzdC10ZXN0IiwKKyAgICAgICAgICAgICAiZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJl
LXRlc3RfLmNjIiwKKyAgICAgICAgICAgICAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQt
bmFtZTEtdGVzdF8uY2MiLAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52
YWxpZC1uYW1lMi10ZXN0Xy5jYyIsCisKKyAgICAgICAgXSwKKyAgICApICsgc2VsZWN0KHsKKyAg
ICAgICAgIi8vOndpbmRvd3MiOiBbXSwKKyAgICAgICAgIi8vOndpbmRvd3NfbXN2YyI6IFtdLAor
ICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbCisgICAgICAgICAgICAiZ29vZ2xldGVz
dC10dXBsZS10ZXN0LmNjIiwKKyAgICAgICAgXSwKKyAgICB9KSwKKyAgICBjb3B0cyA9IHNlbGVj
dCh7CisgICAgICAgICIvLzp3aW5kb3dzIjogWyItREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTAi
XSwKKyAgICAgICAgIi8vOndpbmRvd3NfbXN2YyI6IFsiLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBM
RT0wIl0sCisgICAgICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsiLURHVEVTVF9VU0VfT1dO
X1RSMV9UVVBMRT0xIl0sCisgICAgfSksCisgICAgaW5jbHVkZXMgPSBbCisgICAgICAgICJnb29n
bGV0ZXN0IiwKKyAgICAgICAgImdvb2dsZXRlc3QvaW5jbHVkZSIsCisgICAgICAgICJnb29nbGV0
ZXN0L2luY2x1ZGUvaW50ZXJuYWwiLAorICAgICAgICAiZ29vZ2xldGVzdC90ZXN0IiwKKyAgICBd
LAorICAgIGxpbmtvcHRzID0gc2VsZWN0KHsKKyAgICAgICAgIi8vOndpbmRvd3MiOiBbXSwKKyAg
ICAgICAgIi8vOndpbmRvd3NfbXN2YyI6IFtdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1
bHQiOiBbCisgICAgICAgICAgICAiLXB0aHJlYWQiLAorICAgICAgICBdLAorICAgIH0pLAorICAg
IGRlcHMgPSBbIi8vOmd0ZXN0X21haW4iXSwKKykKKworCisjIFRlc3RzIGRlYXRoIHRlc3RzLgor
Y2NfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtZGVhdGgtdGVzdC10ZXN0IiwKKyAgICBz
aXplID0gIm1lZGl1bSIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1kZWF0aC10ZXN0LXRlc3Qu
Y2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdF9tYWluIl0sCispCisKK2NjX3Rlc3QoCisgICAg
bmFtZSA9ICJndGVzdF90ZXN0X21hY3JvX3N0YWNrX2Zvb3RwcmludF90ZXN0IiwKKyAgICBzaXpl
ID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJndGVzdF90ZXN0X21hY3JvX3N0YWNrX2Zvb3Rwcmlu
dF90ZXN0LmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworI1RoZXNlIGdvb2ds
ZXRlc3QgdGVzdHMgaGF2ZSB0aGVpciBvd24gbWFpbigpCitjY190ZXN0KAorICAgIG5hbWUgPSAi
Z29vZ2xldGVzdC1saXN0ZW5lci10ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNz
ID0gWyJnb29nbGV0ZXN0LWxpc3RlbmVyLXRlc3QuY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVz
dF9tYWluIl0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJndGVzdC11bml0dGVzdC1hcGlf
dGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImd0ZXN0
LXVuaXR0ZXN0LWFwaV90ZXN0LmNjIiwKKyAgICBdLAorICAgIGRlcHMgPSBbCisgICAgICAgICIv
LzpndGVzdCIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3Qt
cGFyYW0tdGVzdC10ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWworICAg
ICAgICAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MiLAorICAgICAgICAiZ29vZ2xldGVz
dC1wYXJhbS10ZXN0LXRlc3QuaCIsCisgICAgICAgICJnb29nbGV0ZXN0LXBhcmFtLXRlc3QyLXRl
c3QuY2MiLAorICAgIF0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworY2NfdGVzdCgK
KyAgICBuYW1lID0gImd0ZXN0X3VuaXR0ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBz
cmNzID0gWyJndGVzdF91bml0dGVzdC5jYyJdLAorICAgIGFyZ3MgPSBbIi0taGVhcF9jaGVjaz1z
dHJpY3QiXSwKKyAgICBzaGFyZF9jb3VudCA9IDIsCisgICAgZGVwcyA9IFsiLy86Z3Rlc3RfbWFp
biJdLAorKQorCisjICBQeSB0ZXN0cworCitweV9saWJyYXJ5KAorICAgIG5hbWUgPSAiZ3Rlc3Rf
dGVzdF91dGlscyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImd0ZXN0X3Rlc3Rf
dXRpbHMucHkiXSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ3Rlc3RfaGVscF90ZXN0
XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImd0ZXN0X2hlbHBfdGVzdF8uY2Mi
XSwKKyAgICBkZXBzID0gWyIvLzpndGVzdF9tYWluIl0sCispCisKK3B5X3Rlc3QoCisgICAgbmFt
ZSA9ICJndGVzdF9oZWxwX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBb
Imd0ZXN0X2hlbHBfdGVzdC5weSJdLAorICAgIGRhdGEgPSBbIjpndGVzdF9oZWxwX3Rlc3RfIl0s
CisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworY2NfYmluYXJ5KAorICAg
IG5hbWUgPSAiZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAg
ICBzcmNzID0gWyJnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8v
Omd0ZXN0Il0sCispCisKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3Qtb3V0cHV0
LXRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3Qtb3V0
cHV0LXRlc3QucHkiXSwKKyAgICBhcmdzID0gc2VsZWN0KHsKKyAgICAgICAgIjpoYXNfYWJzbCI6
IFtdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi0tbm9fc3RhY2t0cmFjZV9z
dXBwb3J0Il0sCisgICAgfSksCisgICAgZGF0YSA9IFsKKyAgICAgICAgImdvb2dsZXRlc3Qtb3V0
cHV0LXRlc3QtZ29sZGVuLWxpbi50eHQiLAorICAgICAgICAiOmdvb2dsZXRlc3Qtb3V0cHV0LXRl
c3RfIiwKKyAgICBdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK2Nj
X2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtY29sb3ItdGVzdF8iLAorICAgIHRlc3Rv
bmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWNvbG9yLXRlc3RfLmNjIl0sCisgICAg
ZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRl
c3QtY29sb3ItdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xl
dGVzdC1jb2xvci10ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmdvb2dsZXRlc3QtY29sb3ItdGVz
dF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5hcnko
CisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWVudi12YXItdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0g
MSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWVudi12YXItdGVzdF8uY2MiXSwKKyAgICBkZXBz
ID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1l
bnYtdmFyLXRlc3QiLAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNzID0gWyJnb29nbGV0
ZXN0LWVudi12YXItdGVzdC5weSJdLAorICAgIGRhdGEgPSBbIjpnb29nbGV0ZXN0LWVudi12YXIt
dGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5h
cnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8iLAorICAgIHRlc3Rv
bmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8uY2MiXSwK
KyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29v
Z2xldGVzdC1maWx0ZXItdW5pdHRlc3QiLAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNz
ID0gWyJnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdC5weSJdLAorICAgIGRhdGEgPSBbIjpnb29n
bGV0ZXN0LWZpbHRlci11bml0dGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGls
cyJdLAorKQorCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtYnJlYWstb24t
ZmFpbHVyZS11bml0dGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29n
bGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86
Z3Rlc3QiXSwKKykKKworCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWJyZWFr
LW9uLWZhaWx1cmUtdW5pdHRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBb
Imdvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdC5weSJdLAorICAgIGRhdGEgPSBb
Ijpnb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3RfIl0sCisgICAgZGVwcyA9IFsi
Omd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworCitjY190ZXN0KAorICAgIG5hbWUgPSAiZ3Rlc3Rf
YXNzZXJ0X2J5X2V4Y2VwdGlvbl90ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNz
ID0gWyJndGVzdF9hc3NlcnRfYnlfZXhjZXB0aW9uX3Rlc3QuY2MiXSwKKyAgICBkZXBzID0gWyIv
LzpndGVzdCJdLAorKQorCisKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC10
aHJvdy1vbi1mYWlsdXJlLXRlc3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsi
Z29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86
Z3Rlc3QiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtdGhyb3ctb24t
ZmFpbHVyZS10ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJnb29nbGV0
ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdC5weSJdLAorICAgIGRhdGEgPSBbIjpnb29nbGV0ZXN0
LXRocm93LW9uLWZhaWx1cmUtdGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGls
cyJdLAorKQorCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtbGlzdC10ZXN0
cy11bml0dGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0
LWxpc3QtdGVzdHMtdW5pdHRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykK
KworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdCIs
CisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1saXN0LXRlc3Rz
LXVuaXR0ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmdvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0
dGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5h
cnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8iLAorICAgIHNyY3MgPSBb
Imdvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0s
CispCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXNodWZmbGUtdGVzdCIsCisg
ICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3Qu
cHkiXSwKKyAgICBkYXRhID0gWyI6Z29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfIl0sCisgICAgZGVw
cyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAi
Z29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLW5vLWV4LXRlc3RfIiwKKyAgICB0ZXN0b25seSA9
IDEsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3RfLmNjIl0s
CisgICAgZGVwcyA9IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFt
ZSA9ICJnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtZXgtdGVzdF8iLAorICAgIHRlc3Rvbmx5
ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdF8uY2Mi
XSwKKyAgICBjb3B0cyA9IFsiLWZleGNlcHRpb25zIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3Rf
bWFpbiJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1jYXRjaC1leGNl
cHRpb25zLXRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImdvb2dsZXRl
c3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsKKyAgICAgICAgIjpn
b29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtZXgtdGVzdF8iLAorICAgICAgICAiOmdvb2dsZXRl
c3QtY2F0Y2gtZXhjZXB0aW9ucy1uby1leC10ZXN0XyIsCisgICAgXSwKKyAgICBkZXBzID0gWyI6
Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJndGVzdF94
bWxfb3V0cHV0X3VuaXR0ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImd0
ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwK
KykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0X25vX3Rlc3RfdW5pdHRlc3QiLAorICAg
IHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImd0ZXN0X25vX3Rlc3RfdW5pdHRlc3QuY2Mi
XSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAi
Z3Rlc3RfeG1sX291dHB1dF91bml0dGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3Jj
cyA9IFsKKyAgICAgICAgImd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3QucHkiLAorICAgICAgICAi
Z3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkiLAorICAgIF0sCisgICAgYXJncyA9IHNlbGVjdCh7Cisg
ICAgICAgICI6aGFzX2Fic2wiOiBbXSwKKyAgICAgICAgIi8vY29uZGl0aW9uczpkZWZhdWx0Ijog
WyItLW5vX3N0YWNrdHJhY2Vfc3VwcG9ydCJdLAorICAgIH0pLAorICAgIGRhdGEgPSBbCisgICAg
ICAgICMgV2UgaW52b2tlIGd0ZXN0X25vX3Rlc3RfdW5pdHRlc3QgdG8gdmVyaWZ5IHRoZSBYTUwg
b3V0cHV0CisgICAgICAgICMgd2hlbiB0aGUgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIG5vIHRlc3Qg
ZGVmaW5pdGlvbi4KKyAgICAgICAgIjpndGVzdF9ub190ZXN0X3VuaXR0ZXN0IiwKKyAgICAgICAg
IjpndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0XyIsCisgICAgXSwKKyAgICBkZXBzID0gWyI6Z3Rl
c3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJndGVzdF94bWxf
b3V0ZmlsZTFfdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJndGVzdF94
bWxfb3V0ZmlsZTFfdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdF9tYWluIl0sCisp
CisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImd0ZXN0X3htbF9vdXRmaWxlMl90ZXN0XyIsCisg
ICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImd0ZXN0X3htbF9vdXRmaWxlMl90ZXN0Xy5j
YyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0X21haW4iXSwKKykKKworcHlfdGVzdCgKKyAgICBu
YW1lID0gImd0ZXN0X3htbF9vdXRmaWxlc190ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAg
ICBzcmNzID0gWworICAgICAgICAiZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkiLAorICAgICAg
ICAiZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkiLAorICAgIF0sCisgICAgZGF0YSA9IFsKKyAgICAg
ICAgIjpndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8iLAorICAgICAgICAiOmd0ZXN0X3htbF9vdXRm
aWxlMl90ZXN0XyIsCisgICAgXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAor
KQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVz
dF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LXVuaW5pdGlh
bGl6ZWQtdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0
KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3QiLAorICAgIHNpemUg
PSAibWVkaXVtIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdC5w
eSJdLAorICAgIGRhdGEgPSBbImdvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0XyJdLAorICAg
IGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1l
ID0gImd0ZXN0X3Rlc3RicmlkZ2VfdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNz
ID0gWyJndGVzdF90ZXN0YnJpZGdlX3Rlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3Rf
bWFpbiJdLAorKQorCisjIFRlc3RzIHRoYXQgZmlsdGVyaW5nIHZpYSB0ZXN0YnJpZGdlIHdvcmtz
CitweV90ZXN0KAorICAgIG5hbWUgPSAiZ3Rlc3RfdGVzdGJyaWRnZV90ZXN0IiwKKyAgICBzaXpl
ID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJndGVzdF90ZXN0YnJpZGdlX3Rlc3QucHkiXSwKKyAg
ICBkYXRhID0gWyI6Z3Rlc3RfdGVzdGJyaWRnZV90ZXN0XyJdLAorICAgIGRlcHMgPSBbIjpndGVz
dF90ZXN0X3V0aWxzIl0sCispCisKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3Qt
anNvbi1vdXRmaWxlcy10ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWwor
ICAgICAgICAiZ29vZ2xldGVzdC1qc29uLW91dGZpbGVzLXRlc3QucHkiLAorICAgICAgICAiZ3Rl
c3RfanNvbl90ZXN0X3V0aWxzLnB5IiwKKyAgICBdLAorICAgIGRhdGEgPSBbCisgICAgICAgICI6
Z3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfIiwKKyAgICAgICAgIjpndGVzdF94bWxfb3V0ZmlsZTJf
dGVzdF8iLAorICAgIF0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKwor
cHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtanNvbi1vdXRwdXQtdW5pdHRlc3QiLAor
ICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNzID0gWworICAgICAgICAiZ29vZ2xldGVzdC1q
c29uLW91dHB1dC11bml0dGVzdC5weSIsCisgICAgICAgICJndGVzdF9qc29uX3Rlc3RfdXRpbHMu
cHkiLAorICAgIF0sCisgICAgZGF0YSA9IFsKKyAgICAgICAgIyBXZSBpbnZva2UgZ3Rlc3Rfbm9f
dGVzdF91bml0dGVzdCB0byB2ZXJpZnkgdGhlIEpTT04gb3V0cHV0CisgICAgICAgICMgd2hlbiB0
aGUgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIG5vIHRlc3QgZGVmaW5pdGlvbi4KKyAgICAgICAgIjpn
dGVzdF9ub190ZXN0X3VuaXR0ZXN0IiwKKyAgICAgICAgIjpndGVzdF94bWxfb3V0cHV0X3VuaXR0
ZXN0XyIsCisgICAgXSwKKyAgICBhcmdzID0gc2VsZWN0KHsKKyAgICAgICAgIjpoYXNfYWJzbCI6
IFtdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi0tbm9fc3RhY2t0cmFjZV9z
dXBwb3J0Il0sCisgICAgfSksCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykK
KyMgVmVyaWZpZXMgaW50ZXJhY3Rpb24gb2YgZGVhdGggdGVzdHMgYW5kIGV4Y2VwdGlvbnMuCitj
Y190ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1kZWF0aC10ZXN0X2V4X2NhdGNoX3Rlc3Qi
LAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWRlYXRoLXRl
c3RfZXhfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gWyItZmV4Y2VwdGlvbnMiXSwKKyAgICBkZWZp
bmVzID0gWyJHVEVTVF9FTkFCTEVfQ0FUQ0hfRVhDRVBUSU9OU189MSJdLAorICAgIGRlcHMgPSBb
Ii8vOmd0ZXN0Il0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtcGFy
YW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3Jj
cyA9IFsiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdF8uY2MiXSwKKyAg
ICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29n
bGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAx
LAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRlc3Rf
LmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1l
ID0gImdvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3QiLAorICAgIHNpemUg
PSAic21hbGwiLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5h
bWUxLXRlc3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFs
aWQtbmFtZTEtdGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQor
CitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFt
ZTItdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1w
YXJhbS10ZXN0LWludmFsaWQtbmFtZTItdGVzdC5weSJdLAorICAgIGRhdGEgPSBbIjpnb29nbGV0
ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0XyJdLAorICAgIGRlcHMgPSBbIjpndGVz
dF90ZXN0X3V0aWxzIl0sCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdC5weSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0LnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE1ZGZiYzY5M2I0M2ExYjE5ZTM4NDdkY2JjYWI4ODZkMmY0ZDI4ZTYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qt
YnJlYWstb24tZmFpbHVyZS11bml0dGVzdC5weQpAQCAtMCwwICsxLDIwOCBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgorIyBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVW5pdCB0ZXN0IGZvciBHb29n
bGUgVGVzdCdzIGJyZWFrLW9uLWZhaWx1cmUgbW9kZS4KKworQSB1c2VyIGNhbiBhc2sgR29vZ2xl
IFRlc3QgdG8gc2VnLWZhdWx0IHdoZW4gYW4gYXNzZXJ0aW9uIGZhaWxzLCB1c2luZworZWl0aGVy
IHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQor
LS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWcuICBUaGlzIHNjcmlwdCB0ZXN0cyBzdWNoIGZ1
bmN0aW9uYWxpdHkKK2J5IGludm9raW5nIGdvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0
dGVzdF8gKGEgcHJvZ3JhbSB3cml0dGVuIHdpdGgKK0dvb2dsZSBUZXN0KSB3aXRoIGRpZmZlcmVu
dCBlbnZpcm9ubWVudHMgYW5kIGNvbW1hbmQgbGluZSBmbGFncy4KKyIiIgorCitpbXBvcnQgb3MK
K2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKKyMgQ29uc3RhbnRzLgorCitJU19XSU5ET1dTID0g
b3MubmFtZSA9PSAnbnQnCisKKyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciBlbmFibGlu
Zy9kaXNhYmxpbmcgdGhlIGJyZWFrLW9uLWZhaWx1cmUgbW9kZS4KK0JSRUFLX09OX0ZBSUxVUkVf
RU5WX1ZBUiA9ICdHVEVTVF9CUkVBS19PTl9GQUlMVVJFJworCisjIFRoZSBjb21tYW5kIGxpbmUg
ZmxhZyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBicmVhay1vbi1mYWlsdXJlIG1vZGUuCitC
UkVBS19PTl9GQUlMVVJFX0ZMQUcgPSAnZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZScKKworIyBUaGUg
ZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgdGhyb3ctb24t
ZmFpbHVyZSBtb2RlLgorVEhST1dfT05fRkFJTFVSRV9FTlZfVkFSID0gJ0dURVNUX1RIUk9XX09O
X0ZBSUxVUkUnCisKKyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciBlbmFibGluZy9kaXNh
YmxpbmcgdGhlIGNhdGNoLWV4Y2VwdGlvbnMgbW9kZS4KK0NBVENIX0VYQ0VQVElPTlNfRU5WX1ZB
UiA9ICdHVEVTVF9DQVRDSF9FWENFUFRJT05TJworCisjIFBhdGggdG8gdGhlIGdvb2dsZXRlc3Qt
YnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8gcHJvZ3JhbS4KK0VYRV9QQVRIID0gZ3Rlc3RfdGVz
dF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisgICAgJ2dvb2dsZXRlc3QtYnJlYWstb24t
ZmFpbHVyZS11bml0dGVzdF8nKQorCisKK2Vudmlyb24gPSBndGVzdF90ZXN0X3V0aWxzLmVudmly
b24KK1NldEVudlZhciA9IGd0ZXN0X3Rlc3RfdXRpbHMuU2V0RW52VmFyCisKKyMgVGVzdHMgaW4g
dGhpcyBmaWxlIHJ1biBhIEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QgcHJvZ3JhbSBhbmQgZXhwZWN0
IGl0CisjIHRvIHRlcm1pbmF0ZSBwcmVtYXR1cmVseS4gIFRoZXJlZm9yZSB0aGV5IGFyZSBpbmNv
bXBhdGlibGUgd2l0aAorIyB0aGUgcHJlbWF0dXJlLWV4aXQtZmlsZSBwcm90b2NvbCBieSBkZXNp
Z24uICBVbnNldCB0aGUKKyMgcHJlbWF0dXJlLWV4aXQgZmlsZXBhdGggdG8gcHJldmVudCBHb29n
bGUgVGVzdCBmcm9tIGNyZWF0aW5nCisjIHRoZSBmaWxlLgorU2V0RW52VmFyKGd0ZXN0X3Rlc3Rf
dXRpbHMuUFJFTUFUVVJFX0VYSVRfRklMRV9FTlZfVkFSLCBOb25lKQorCisKK2RlZiBSdW4oY29t
bWFuZCk6CisgICIiIlJ1bnMgYSBjb21tYW5kOyByZXR1cm5zIDEgaWYgaXQgd2FzIGtpbGxlZCBi
eSBhIHNpZ25hbCwgb3IgMCBvdGhlcndpc2UuIiIiCisKKyAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
U3VicHJvY2Vzcyhjb21tYW5kLCBlbnY9ZW52aXJvbikKKyAgaWYgcC50ZXJtaW5hdGVkX2J5X3Np
Z25hbDoKKyAgICByZXR1cm4gMQorICBlbHNlOgorICAgIHJldHVybiAwCisKKworIyBUaGUgdGVz
dHMuCisKKworY2xhc3MgR1Rlc3RCcmVha09uRmFpbHVyZVVuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRp
bHMuVGVzdENhc2UpOgorICAiIiJUZXN0cyB1c2luZyB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVS
RSBlbnZpcm9ubWVudCB2YXJpYWJsZSBvcgorICB0aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJl
IGZsYWcgdG8gdHVybiBhc3NlcnRpb24gZmFpbHVyZXMgaW50bworICBzZWdtZW50YXRpb24gZmF1
bHRzLgorICAiIiIKKworICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGVudl92YXJfdmFsdWUsIGZs
YWdfdmFsdWUsIGV4cGVjdF9zZWdfZmF1bHQpOgorICAgICIiIlJ1bnMgZ29vZ2xldGVzdC1icmVh
ay1vbi1mYWlsdXJlLXVuaXR0ZXN0XyBhbmQgdmVyaWZpZXMgdGhhdCBpdCBkb2VzCisgICAgKG9y
IGRvZXMgbm90KSBoYXZlIGEgc2VnLWZhdWx0LgorCisgICAgQXJnczoKKyAgICAgIGVudl92YXJf
dmFsdWU6ICAgIHZhbHVlIG9mIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50
CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZTsgTm9uZSBpZiB0aGUgdmFyaWFibGUg
c2hvdWxkIGJlIHVuc2V0LgorICAgICAgZmxhZ192YWx1ZTogICAgICAgdmFsdWUgb2YgdGhlIC0t
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnOworICAgICAgICAgICAgICAgICAgICAgICAgTm9u
ZSBpZiB0aGUgZmxhZyBzaG91bGQgbm90IGJlIHByZXNlbnQuCisgICAgICBleHBlY3Rfc2VnX2Zh
dWx0OiAxIGlmIHRoZSBwcm9ncmFtIGlzIGV4cGVjdGVkIHRvIGdlbmVyYXRlIGEgc2VnLWZhdWx0
OworICAgICAgICAgICAgICAgICAgICAgICAgMCBvdGhlcndpc2UuCisgICAgIiIiCisKKyAgICBT
ZXRFbnZWYXIoQlJFQUtfT05fRkFJTFVSRV9FTlZfVkFSLCBlbnZfdmFyX3ZhbHVlKQorCisgICAg
aWYgZW52X3Zhcl92YWx1ZSBpcyBOb25lOgorICAgICAgZW52X3Zhcl92YWx1ZV9tc2cgPSAnIGlz
IG5vdCBzZXQnCisgICAgZWxzZToKKyAgICAgIGVudl92YXJfdmFsdWVfbXNnID0gJz0nICsgZW52
X3Zhcl92YWx1ZQorCisgICAgaWYgZmxhZ192YWx1ZSBpcyBOb25lOgorICAgICAgZmxhZyA9ICcn
CisgICAgZWxpZiBmbGFnX3ZhbHVlID09ICcwJzoKKyAgICAgIGZsYWcgPSAnLS0lcz0wJyAlIEJS
RUFLX09OX0ZBSUxVUkVfRkxBRworICAgIGVsc2U6CisgICAgICBmbGFnID0gJy0tJXMnICUgQlJF
QUtfT05fRkFJTFVSRV9GTEFHCisKKyAgICBjb21tYW5kID0gW0VYRV9QQVRIXQorICAgIGlmIGZs
YWc6CisgICAgICBjb21tYW5kLmFwcGVuZChmbGFnKQorCisgICAgaWYgZXhwZWN0X3NlZ19mYXVs
dDoKKyAgICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxkJworICAgIGVsc2U6CisgICAgICBzaG91
bGRfb3Jfbm90ID0gJ3Nob3VsZCBub3QnCisKKyAgICBoYXNfc2VnX2ZhdWx0ID0gUnVuKGNvbW1h
bmQpCisKKyAgICBTZXRFbnZWYXIoQlJFQUtfT05fRkFJTFVSRV9FTlZfVkFSLCBOb25lKQorCisg
ICAgbXNnID0gKCd3aGVuICVzJXMsIGFuIGFzc2VydGlvbiBmYWlsdXJlIGluICIlcyIgJXMgY2F1
c2UgYSBzZWctZmF1bHQuJyAlCisgICAgICAgICAgIChCUkVBS19PTl9GQUlMVVJFX0VOVl9WQVIs
IGVudl92YXJfdmFsdWVfbXNnLCAnICcuam9pbihjb21tYW5kKSwKKyAgICAgICAgICAgIHNob3Vs
ZF9vcl9ub3QpKQorICAgIHNlbGYuYXNzZXJ0XyhoYXNfc2VnX2ZhdWx0ID09IGV4cGVjdF9zZWdf
ZmF1bHQsIG1zZykKKworICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcihzZWxmKToKKyAgICAiIiJU
ZXN0cyB0aGUgYmVoYXZpb3Igb2YgdGhlIGRlZmF1bHQgbW9kZS4iIiIKKworICAgIHNlbGYuUnVu
QW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBmbGFn
X3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0wKQor
CisgIGRlZiB0ZXN0RW52VmFyKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5nIHRoZSBHVEVTVF9C
UkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlhYmxlLiIiIgorCisgICAgc2VsZi5SdW5B
bmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192
YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MCkKKyAg
ICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAg
ICAgICBmbGFnX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19m
YXVsdD0xKQorCisgIGRlZiB0ZXN0RmxhZyhzZWxmKToKKyAgICAiIiJUZXN0cyB1c2luZyB0aGUg
LS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWcuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlm
eShlbnZfdmFyX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0n
MCcsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0wKQorICAgIHNlbGYu
UnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBm
bGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEp
CisKKyAgZGVmIHRlc3RGbGFnT3ZlcnJpZGVzRW52VmFyKHNlbGYpOgorICAgICIiIlRlc3RzIHRo
YXQgdGhlIGZsYWcgb3ZlcnJpZGVzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS4iIiIKKworICAg
IHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAg
ICAgIGZsYWdfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1
bHQ9MCkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScwJywKKyAgICAgICAg
ICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBl
Y3Rfc2VnX2ZhdWx0PTEpCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScs
CisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAg
ICAgICAgZXhwZWN0X3NlZ19mYXVsdD0wKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJf
dmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAorICAgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKKworICBkZWYgdGVzdEJyZWFrT25G
YWlsdXJlT3ZlcnJpZGVzVGhyb3dPbkZhaWx1cmUoc2VsZik6CisgICAgIiIiVGVzdHMgdGhhdCBn
dGVzdF9icmVha19vbl9mYWlsdXJlIG92ZXJyaWRlcyBndGVzdF90aHJvd19vbl9mYWlsdXJlLiIi
IgorCisgICAgU2V0RW52VmFyKFRIUk9XX09OX0ZBSUxVUkVfRU5WX1ZBUiwgJzEnKQorICAgIHRy
eToKKyAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0X3NlZ19mYXVsdD0xKQorICAgIGZpbmFsbHk6CisgICAgICBTZXRFbnZWYXIoVEhST1df
T05fRkFJTFVSRV9FTlZfVkFSLCBOb25lKQorCisgIGlmIElTX1dJTkRPV1M6CisgICAgZGVmIHRl
c3RDYXRjaEV4Y2VwdGlvbnNEb2VzTm90SW50ZXJmZXJlKHNlbGYpOgorICAgICAgIiIiVGVzdHMg
dGhhdCBndGVzdF9jYXRjaF9leGNlcHRpb25zIGRvZXNuJ3QgaW50ZXJmZXJlLiIiIgorCisgICAg
ICBTZXRFbnZWYXIoQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSLCAnMScpCisgICAgICB0cnk6Cisg
ICAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0X3NlZ19mYXVsdD0xKQorICAgICAgZmluYWxseToKKyAgICAgICAgU2V0RW52VmFyKENB
VENIX0VYQ0VQVElPTlNfRU5WX1ZBUiwgTm9uZSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3RfLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1
cmUtdW5pdHRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4NDk1N2EyZDAzYjU2MjYwYzhlMmMwYWU4ZjVh
MjdiZWI2ZjYzNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8uY2MKQEAgLTAsMCArMSw4
NiBAQAorLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8v
IFVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyBicmVhay1vbi1mYWlsdXJlIG1vZGUuCisvLwor
Ly8gQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gc2VnLWZhdWx0IHdoZW4gYW4gYXNzZXJ0
aW9uIGZhaWxzLCB1c2luZworLy8gZWl0aGVyIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVu
dmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQorLy8gLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZs
YWcuICBUaGlzIGZpbGUgaXMgdXNlZCBmb3IgdGVzdGluZyBzdWNoCisvLyBmdW5jdGlvbmFsaXR5
LgorLy8KKy8vIFRoaXMgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0
IHRlc3QuICBJdCBpcworLy8gZXhwZWN0ZWQgdG8gZmFpbC4gIERvbid0IHJ1biBpdCBkaXJlY3Rs
eS4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisj
IGluY2x1ZGUgPHdpbmRvd3MuaD4KKyMgaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKworbmFt
ZXNwYWNlIHsKKworLy8gQSB0ZXN0IHRoYXQncyBleHBlY3RlZCB0byBmYWlsLgorVEVTVChGb28s
IEJhcikgeworICBFWFBFQ1RfRVEoMiwgMyk7Cit9CisKKyNpZiBHVEVTVF9IQVNfU0VIICYmICFH
VEVTVF9PU19XSU5ET1dTX01PQklMRQorLy8gT24gV2luZG93cyBNb2JpbGUgZ2xvYmFsIGV4Y2Vw
dGlvbiBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZC4KK0xPTkcgV0lOQVBJIEV4aXRXaXRoRXhj
ZXB0aW9uQ29kZSgKKyAgICBzdHJ1Y3QgX0VYQ0VQVElPTl9QT0lOVEVSUyogZXhjZXB0aW9uX3Bv
aW50ZXJzKSB7CisgIGV4aXQoZXhjZXB0aW9uX3BvaW50ZXJzLT5FeGNlcHRpb25SZWNvcmQtPkV4
Y2VwdGlvbkNvZGUpOworfQorI2VuZGlmCisKK30gIC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihp
bnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIC8vIFN1cHBy
ZXNzZXMgZGlzcGxheSBvZiB0aGUgV2luZG93cyBlcnJvciBkaWFsb2cgdXBvbiBlbmNvdW50ZXJp
bmcKKyAgLy8gYSBnZW5lcmFsIHByb3RlY3Rpb24gZmF1bHQgKHNlZ21lbnQgdmlvbGF0aW9uKS4K
KyAgU2V0RXJyb3JNb2RlKFNFTV9OT0dQRkFVTFRFUlJPUkJPWCB8IFNFTV9GQUlMQ1JJVElDQUxF
UlJPUlMpOworCisjIGlmIEdURVNUX0hBU19TRUggJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxF
CisKKyAgLy8gVGhlIGRlZmF1bHQgdW5oYW5kbGVkIGV4Y2VwdGlvbiBmaWx0ZXIgZG9lcyBub3Qg
YWx3YXlzIGV4aXQKKyAgLy8gd2l0aCB0aGUgZXhjZXB0aW9uIGNvZGUgYXMgZXhpdCBjb2RlIC0g
Zm9yIGV4YW1wbGUgaXQgZXhpdHMgd2l0aAorICAvLyAwIGZvciBFWENFUFRJT05fQUNDRVNTX1ZJ
T0xBVElPTiBhbmQgMSBmb3IgRVhDRVBUSU9OX0JSRUFLUE9JTlQKKyAgLy8gaWYgdGhlIGFwcGxp
Y2F0aW9uIGlzIGNvbXBpbGVkIGluIGRlYnVnIG1vZGUuIFRodXMgd2UgdXNlIG91ciBvd24KKyAg
Ly8gZmlsdGVyIHdoaWNoIGFsd2F5cyBleGl0cyB3aXRoIHRoZSBleGNlcHRpb24gY29kZSBmb3Ig
dW5oYW5kbGVkCisgIC8vIGV4Y2VwdGlvbnMuCisgIFNldFVuaGFuZGxlZEV4Y2VwdGlvbkZpbHRl
cihFeGl0V2l0aEV4Y2VwdGlvbkNvZGUpOworCisjIGVuZGlmCisjZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIHJl
dHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0LnB5IGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41ZDQ5YzEwMjNjNTBlZjE2ODMzZTZiOGUyYThlNjIwMjQ4NDMyYWMzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNh
dGNoLWV4Y2VwdGlvbnMtdGVzdC5weQpAQCAtMCwwICsxLDIzMyBAQAorIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCisjCisjIENvcHlyaWdodCAyMDEwIEdvb2dsZSBJbmMuICBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVGVzdHMgR29vZ2xlIFRlc3QncyBleGNlcHRp
b24gY2F0Y2hpbmcgYmVoYXZpb3IuCisKK1RoaXMgc2NyaXB0IGludm9rZXMgZ29vZ2xldGVzdC1j
YXRjaC1leGNlcHRpb25zLXRlc3RfIGFuZAorZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLWV4
LXRlc3RfIChwcm9ncmFtcyB3cml0dGVuIHdpdGgKK0dvb2dsZSBUZXN0KSBhbmQgdmVyaWZpZXMg
dGhlaXIgb3V0cHV0LgorIiIiCisKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKKyMgQ29uc3Rh
bnRzLgorRkxBR19QUkVGSVggPSAnLS1ndGVzdF8nCitMSVNUX1RFU1RTX0ZMQUcgPSBGTEFHX1BS
RUZJWCArICdsaXN0X3Rlc3RzJworTk9fQ0FUQ0hfRVhDRVBUSU9OU19GTEFHID0gRkxBR19QUkVG
SVggKyAnY2F0Y2hfZXhjZXB0aW9ucz0wJworRklMVEVSX0ZMQUcgPSBGTEFHX1BSRUZJWCArICdm
aWx0ZXInCisKKyMgUGF0aCB0byB0aGUgZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLWV4LXRl
c3RfIGJpbmFyeSwgY29tcGlsZWQgd2l0aAorIyBleGNlcHRpb25zIGVuYWJsZWQuCitFWF9FWEVf
UEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKAorICAgICdnb29n
bGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtZXgtdGVzdF8nKQorCisjIFBhdGggdG8gdGhlIGdvb2ds
ZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0XyBiaW5hcnksIGNvbXBpbGVkIHdpdGgKKyMgZXhj
ZXB0aW9ucyBkaXNhYmxlZC4KK0VYRV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhl
Y3V0YWJsZVBhdGgoCisgICAgJ2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy1uby1leC10ZXN0
XycpCisKK2Vudmlyb24gPSBndGVzdF90ZXN0X3V0aWxzLmVudmlyb24KK1NldEVudlZhciA9IGd0
ZXN0X3Rlc3RfdXRpbHMuU2V0RW52VmFyCisKKyMgVGVzdHMgaW4gdGhpcyBmaWxlIHJ1biBhIEdv
b2dsZS1UZXN0LWJhc2VkIHRlc3QgcHJvZ3JhbSBhbmQgZXhwZWN0IGl0CisjIHRvIHRlcm1pbmF0
ZSBwcmVtYXR1cmVseS4gIFRoZXJlZm9yZSB0aGV5IGFyZSBpbmNvbXBhdGlibGUgd2l0aAorIyB0
aGUgcHJlbWF0dXJlLWV4aXQtZmlsZSBwcm90b2NvbCBieSBkZXNpZ24uICBVbnNldCB0aGUKKyMg
cHJlbWF0dXJlLWV4aXQgZmlsZXBhdGggdG8gcHJldmVudCBHb29nbGUgVGVzdCBmcm9tIGNyZWF0
aW5nCisjIHRoZSBmaWxlLgorU2V0RW52VmFyKGd0ZXN0X3Rlc3RfdXRpbHMuUFJFTUFUVVJFX0VY
SVRfRklMRV9FTlZfVkFSLCBOb25lKQorCitURVNUX0xJU1QgPSBndGVzdF90ZXN0X3V0aWxzLlN1
YnByb2Nlc3MoCisgICAgW0VYRV9QQVRILCBMSVNUX1RFU1RTX0ZMQUddLCBlbnY9ZW52aXJvbiku
b3V0cHV0CisKK1NVUFBPUlRTX1NFSF9FWENFUFRJT05TID0gJ1Rocm93c1NlaEV4Y2VwdGlvbicg
aW4gVEVTVF9MSVNUCisKK2lmIFNVUFBPUlRTX1NFSF9FWENFUFRJT05TOgorICBCSU5BUllfT1VU
UFVUID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtFWEVfUEFUSF0sIGVudj1lbnZpcm9u
KS5vdXRwdXQKKworRVhfQklOQVJZX09VVFBVVCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vz
cygKKyAgICBbRVhfRVhFX1BBVEhdLCBlbnY9ZW52aXJvbikub3V0cHV0CisKKworIyBUaGUgdGVz
dHMuCitpZiBTVVBQT1JUU19TRUhfRVhDRVBUSU9OUzoKKyAgIyBweWxpbnQ6ZGlzYWJsZS1tc2c9
QzYzMDIKKyAgY2xhc3MgQ2F0Y2hTZWhFeGNlcHRpb25zVGVzdChndGVzdF90ZXN0X3V0aWxzLlRl
c3RDYXNlKToKKyAgICAiIiJUZXN0cyBleGNlcHRpb24tY2F0Y2hpbmcgYmVoYXZpb3IuIiIiCisK
KworICAgIGRlZiBUZXN0U2VoRXhjZXB0aW9ucyhzZWxmLCB0ZXN0X291dHB1dCk6CisgICAgICBz
ZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhyb3duICcKKyAgICAg
ICAgICAgICAgICAgICAnaW4gdGhlIHRlc3QgZml4dHVyZVwncyBjb25zdHJ1Y3RvcicKKyAgICAg
ICAgICAgICAgICAgICBpbiB0ZXN0X291dHB1dCkKKyAgICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4
Y2VwdGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24gJworICAgICAgICAgICAgICAgICAgICdpbiB0
aGUgdGVzdCBmaXh0dXJlXCdzIGRlc3RydWN0b3InCisgICAgICAgICAgICAgICAgICAgaW4gdGVz
dF9vdXRwdXQpCisgICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4
MmEgdGhyb3duIGluIFNldFVwVGVzdENhc2UoKScKKyAgICAgICAgICAgICAgICAgICBpbiB0ZXN0
X291dHB1dCkKKyAgICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgy
YSB0aHJvd24gaW4gVGVhckRvd25UZXN0Q2FzZSgpJworICAgICAgICAgICAgICAgICAgIGluIHRl
c3Rfb3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGggY29kZSAw
eDJhIHRocm93biBpbiBTZXRVcCgpJworICAgICAgICAgICAgICAgICAgIGluIHRlc3Rfb3V0cHV0
KQorICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGggY29kZSAweDJhIHRocm93
biBpbiBUZWFyRG93bigpJworICAgICAgICAgICAgICAgICAgIGluIHRlc3Rfb3V0cHV0KQorICAg
ICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGggY29kZSAweDJhIHRocm93biBpbiB0
aGUgdGVzdCBib2R5JworICAgICAgICAgICAgICAgICAgIGluIHRlc3Rfb3V0cHV0KQorCisgICAg
ZGVmIHRlc3RDYXRjaGVzU2VoRXhjZXB0aW9uc1dpdGhDeHhFeGNlcHRpb25zRW5hYmxlZChzZWxm
KToKKyAgICAgIHNlbGYuVGVzdFNlaEV4Y2VwdGlvbnMoRVhfQklOQVJZX09VVFBVVCkKKworICAg
IGRlZiB0ZXN0Q2F0Y2hlc1NlaEV4Y2VwdGlvbnNXaXRoQ3h4RXhjZXB0aW9uc0Rpc2FibGVkKHNl
bGYpOgorICAgICAgc2VsZi5UZXN0U2VoRXhjZXB0aW9ucyhCSU5BUllfT1VUUFVUKQorCisKK2Ns
YXNzIENhdGNoQ3h4RXhjZXB0aW9uc1Rlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Cisg
ICIiIlRlc3RzIEMrKyBleGNlcHRpb24tY2F0Y2hpbmcgYmVoYXZpb3IuCisKKyAgICAgVGVzdHMg
aW4gdGhpcyB0ZXN0IGNhc2UgdmVyaWZ5IHRoYXQ6CisgICAgICogQysrIGV4Y2VwdGlvbnMgYXJl
IGNhdWdodCBhbmQgbG9nZ2VkIGFzIEMrKyAobm90IFNFSCkgZXhjZXB0aW9ucworICAgICAqIEV4
Y2VwdGlvbiB0aHJvd24gYWZmZWN0IHRoZSByZW1haW5kZXIgb2YgdGhlIHRlc3Qgd29yayBmbG93
IGluIHRoZQorICAgICAgIGV4cGVjdGVkIG1hbm5lci4KKyAgIiIiCisKKyAgZGVmIHRlc3RDYXRj
aGVzQ3h4RXhjZXB0aW9uc0luRml4dHVyZUNvbnN0cnVjdG9yKHNlbGYpOgorICAgIHNlbGYuYXNz
ZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICcKKyAgICAgICAgICAgICAgICAg
JyJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIiB0aHJvd24gJworICAgICAgICAgICAgICAgICAnaW4g
dGhlIHRlc3QgZml4dHVyZVwncyBjb25zdHJ1Y3RvcicKKyAgICAgICAgICAgICAgICAgaW4gRVhf
QklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ3VuZXhwZWN0ZWQnIG5vdCBpbiBFWF9C
SU5BUllfT1VUUFVULAorICAgICAgICAgICAgICAgICAnVGhpcyBmYWlsdXJlIGJlbG9uZ3MgaW4g
dGhpcyB0ZXN0IG9ubHkgaWYgJworICAgICAgICAgICAgICAgICAnIkN4eEV4Y2VwdGlvbkluQ29u
c3RydWN0b3JUZXN0IiAobm8gcXVvdGVzKSAnCisgICAgICAgICAgICAgICAgICdhcHBlYXJzIG9u
IHRoZSBzYW1lIGxpbmUgYXMgd29yZHMgImNhbGxlZCB1bmV4cGVjdGVkbHkiJykKKworICBpZiAo
J0N4eEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3QuVGhyb3dzRXhjZXB0aW9uSW5EZXN0cnVjdG9y
JyBpbgorICAgICAgRVhfQklOQVJZX09VVFBVVCk6CisKKyAgICBkZWYgdGVzdENhdGNoZXNDeHhF
eGNlcHRpb25zSW5GaXh0dXJlRGVzdHJ1Y3RvcihzZWxmKToKKyAgICAgIHNlbGYuYXNzZXJ0Xygn
QysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICcKKyAgICAgICAgICAgICAgICAgICAnIlN0
YW5kYXJkIEMrKyBleGNlcHRpb24iIHRocm93biAnCisgICAgICAgICAgICAgICAgICAgJ2luIHRo
ZSB0ZXN0IGZpeHR1cmVcJ3MgZGVzdHJ1Y3RvcicKKyAgICAgICAgICAgICAgICAgICBpbiBFWF9C
SU5BUllfT1VUUFVUKQorICAgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JbkRlc3RydWN0
b3JUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgJworICAgICAgICAgICAgICAgICAgICdjYWxsZWQg
YXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisK
KyAgZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luU2V0VXBUZXN0Q2FzZShzZWxmKToKKyAg
ICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlvbiAiU3RhbmRhcmQg
QysrIGV4Y2VwdGlvbiInCisgICAgICAgICAgICAgICAgICcgdGhyb3duIGluIFNldFVwVGVzdENh
c2UoKScKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFz
c2VydF8oJ0N4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkg
JworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAg
ICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbklu
U2V0VXBUZXN0Q2FzZVRlc3QgY29uc3RydWN0b3IgJworICAgICAgICAgICAgICAgICAnY2FsbGVk
IGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAg
ICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgZGVzdHJ1Y3Rv
ciAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAg
ICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9u
SW5TZXRVcFRlc3RDYXNlVGVzdDo6U2V0VXAoKSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQg
YXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAg
IHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6VGVhckRvd24o
KSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAg
ICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9u
SW5TZXRVcFRlc3RDYXNlVGVzdCB0ZXN0IGJvZHkgJworICAgICAgICAgICAgICAgICAnY2FsbGVk
IGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKwor
ICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5UZWFyRG93blRlc3RDYXNlKHNlbGYpOgor
ICAgIHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICJTdGFuZGFy
ZCBDKysgZXhjZXB0aW9uIicKKyAgICAgICAgICAgICAgICAgJyB0aHJvd24gaW4gVGVhckRvd25U
ZXN0Q2FzZSgpJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorCisgIGRl
ZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJblNldFVwKHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0
XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICJTdGFuZGFyZCBDKysgZXhjZXB0aW9u
IicKKyAgICAgICAgICAgICAgICAgJyB0aHJvd24gaW4gU2V0VXAoKScKKyAgICAgICAgICAgICAg
ICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbklu
U2V0VXBUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgJworICAgICAgICAgICAgICAgICAnY2FsbGVk
IGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAg
ICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0IGRlc3RydWN0b3IgJworICAg
ICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4g
RVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBU
ZXN0OjpUZWFyRG93bigpICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4n
CisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRf
KCd1bmV4cGVjdGVkJyBub3QgaW4gRVhfQklOQVJZX09VVFBVVCwKKyAgICAgICAgICAgICAgICAg
J1RoaXMgZmFpbHVyZSBiZWxvbmdzIGluIHRoaXMgdGVzdCBvbmx5IGlmICcKKyAgICAgICAgICAg
ICAgICAgJyJDeHhFeGNlcHRpb25JblNldFVwVGVzdCIgKG5vIHF1b3RlcykgJworICAgICAgICAg
ICAgICAgICAnYXBwZWFycyBvbiB0aGUgc2FtZSBsaW5lIGFzIHdvcmRzICJjYWxsZWQgdW5leHBl
Y3RlZGx5IicpCisKKyAgZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luVGVhckRvd24oc2Vs
Zik6CisgICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gIlN0
YW5kYXJkIEMrKyBleGNlcHRpb24iJworICAgICAgICAgICAgICAgICAnIHRocm93biBpbiBUZWFy
RG93bigpJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYu
YXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAn
CisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAg
ICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5U
ZWFyRG93blRlc3QgZGVzdHJ1Y3RvciAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhw
ZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorCisgIGRlZiB0
ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJblRlc3RCb2R5KHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0
XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICJTdGFuZGFyZCBDKysgZXhjZXB0aW9u
IicKKyAgICAgICAgICAgICAgICAgJyB0aHJvd24gaW4gdGhlIHRlc3QgYm9keScKKyAgICAgICAg
ICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2Vw
dGlvbkluVGVzdEJvZHlUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgJworICAgICAgICAgICAgICAg
ICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09V
VFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0IGRlc3Ry
dWN0b3IgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAg
ICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2Vw
dGlvbkluVGVzdEJvZHlUZXN0OjpUZWFyRG93bigpICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxl
ZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisK
KyAgZGVmIHRlc3RDYXRjaGVzTm9uU3RkQ3h4RXhjZXB0aW9ucyhzZWxmKToKKyAgICBzZWxmLmFz
c2VydF8oJ1Vua25vd24gQysrIGV4Y2VwdGlvbiB0aHJvd24gaW4gdGhlIHRlc3QgYm9keScKKyAg
ICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKworICBkZWYgdGVzdFVuaGFuZGxl
ZEN4eEV4Y2VwdGlvbnNBYm9ydFRoZVByb2dyYW0oc2VsZik6CisgICAgIyBGaWx0ZXJzIG91dCBT
RUggZXhjZXB0aW9uIHRlc3RzIG9uIFdpbmRvd3MuIFVuaGFuZGxlZCBTRUggZXhjZXB0aW9ucwor
ICAgICMgY2F1c2UgdGVzdHMgdG8gc2hvdyBwb3AtdXAgd2luZG93cyB0aGVyZS4KKyAgICBGSVRM
RVJfT1VUX1NFSF9URVNUU19GTEFHID0gRklMVEVSX0ZMQUcgKyAnPS0qU2VoKicKKyAgICAjIEJ5
IGRlZmF1bHQsIEdvb2dsZSBUZXN0IGRvZXNuJ3QgY2F0Y2ggdGhlIGV4Y2VwdGlvbnMuCisgICAg
dW5jYXVnaHRfZXhjZXB0aW9uc19leF9iaW5hcnlfb3V0cHV0ID0gZ3Rlc3RfdGVzdF91dGlscy5T
dWJwcm9jZXNzKAorICAgICAgICBbRVhfRVhFX1BBVEgsCisgICAgICAgICBOT19DQVRDSF9FWENF
UFRJT05TX0ZMQUcsCisgICAgICAgICBGSVRMRVJfT1VUX1NFSF9URVNUU19GTEFHXSwKKyAgICAg
ICAgZW52PWVudmlyb24pLm91dHB1dAorCisgICAgc2VsZi5hc3NlcnRfKCdVbmhhbmRsZWQgQysr
IGV4Y2VwdGlvbiB0ZXJtaW5hdGluZyB0aGUgcHJvZ3JhbScKKyAgICAgICAgICAgICAgICAgaW4g
dW5jYXVnaHRfZXhjZXB0aW9uc19leF9iaW5hcnlfb3V0cHV0KQorICAgIHNlbGYuYXNzZXJ0Xygn
dW5leHBlY3RlZCcgbm90IGluIHVuY2F1Z2h0X2V4Y2VwdGlvbnNfZXhfYmluYXJ5X291dHB1dCkK
KworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNh
dGNoLWV4Y2VwdGlvbnMtdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWRhZTcwMDMw
YTMzYWVhYmEwNjBhYWVmOTdhOTc5YThmNTgwNGFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdF8u
Y2MKQEAgLTAsMCArMSwzMTEgQEAKKy8vIENvcHlyaWdodCAyMDEwLCBHb29nbGUgSW5jLgorLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
Ky8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
Ky8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworLy8KKy8vIFRlc3RzIGZvciBHb29nbGUgVGVzdCBpdHNlbGYuIFRlc3RzIGlu
IHRoaXMgZmlsZSB0aHJvdyBDKysgb3IgU0VICisvLyBleGNlcHRpb25zLCBhbmQgdGhlIG91dHB1
dCBpcyB2ZXJpZmllZCBieQorLy8gZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3QucHku
CisKKyNpbmNsdWRlIDxzdGRpby5oPiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8c3RkbGliLmg+ICAv
LyBGb3IgZXhpdCgpLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lmIEdURVNUX0hB
U19TRUgKKyMgaW5jbHVkZSA8d2luZG93cy5oPgorI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfRVhD
RVBUSU9OUworIyBpbmNsdWRlIDxleGNlcHRpb24+ICAvLyBGb3Igc2V0X3Rlcm1pbmF0ZSgpLgor
IyBpbmNsdWRlIDxzdGRleGNlcHQ+CisjZW5kaWYKKwordXNpbmcgdGVzdGluZzo6VGVzdDsKKwor
I2lmIEdURVNUX0hBU19TRUgKKworY2xhc3MgU2VoRXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Qg
OiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBTZWhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVz
dCgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2Vo
RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QsIFRocm93c0V4Y2VwdGlvbkluQ29uc3RydWN0b3Ip
IHt9CisKK2NsYXNzIFNlaEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3QgOiBwdWJsaWMgVGVzdCB7
CisgcHVibGljOgorICB+U2VoRXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCgpIHsgUmFpc2VFeGNl
cHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhjZXB0aW9uSW5EZXN0
cnVjdG9yVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5EZXN0cnVjdG9yKSB7fQorCitjbGFzcyBTZWhF
eGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAg
c3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5V
TEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCwgVGhy
b3dzRXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlKSB7fQorCitjbGFzcyBTZWhFeGNlcHRpb25JblRl
YXJEb3duVGVzdENhc2VUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljIHZv
aWQgVGVhckRvd25UZXN0Q2FzZSgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9
Cit9OworCitURVNUX0YoU2VoRXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNlVGVzdCwgVGhyb3dz
RXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNlKSB7fQorCitjbGFzcyBTZWhFeGNlcHRpb25JblNl
dFVwVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9pZCBTZXRV
cCgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2Vo
RXhjZXB0aW9uSW5TZXRVcFRlc3QsIFRocm93c0V4Y2VwdGlvbkluU2V0VXApIHt9CisKK2NsYXNz
IFNlaEV4Y2VwdGlvbkluVGVhckRvd25UZXN0IDogcHVibGljIFRlc3QgeworIHByb3RlY3RlZDoK
KyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeyBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVM
TCk7IH0KK307CisKK1RFU1RfRihTZWhFeGNlcHRpb25JblRlYXJEb3duVGVzdCwgVGhyb3dzRXhj
ZXB0aW9uSW5UZWFyRG93bikge30KKworVEVTVChTZWhFeGNlcHRpb25UZXN0LCBUaHJvd3NTZWhF
eGNlcHRpb24pIHsKKyAgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOworfQorCisjZW5k
aWYgIC8vIEdURVNUX0hBU19TRUgKKworI2lmIEdURVNUX0hBU19FWENFUFRJT05TCisKK2NsYXNz
IEN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoK
KyAgQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QoKSB7CisgICAgLy8gV2l0aG91dCB0aGlz
IG1hY3JvIFZDKysgY29tcGxhaW5zIGFib3V0IHVucmVhY2hhYmxlIGNvZGUgYXQgdGhlIGVuZCBv
ZgorICAgIC8vIHRoZSBjb25zdHJ1Y3Rvci4KKyAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJM
RV9DT0RFX1dBUk5JTkdfQkVMT1dfKAorICAgICAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3Io
IlN0YW5kYXJkIEMrKyBleGNlcHRpb24iKSk7CisgIH0KKworICBzdGF0aWMgdm9pZCBUZWFyRG93
blRlc3RDYXNlKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9u
SW5Db25zdHJ1Y3RvclRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCisgICAgICAgICAgICJjYWxs
ZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICB+Q3h4RXhjZXB0aW9u
SW5Db25zdHJ1Y3RvclRlc3QoKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiQ3h4RXhjZXB0aW9u
SW5Db25zdHJ1Y3RvclRlc3QgZGVzdHJ1Y3RvciAiCisgICAgICAgICAgICAgICAgICA8PCAiY2Fs
bGVkIHVuZXhwZWN0ZWRseS4iOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAg
IEFERF9GQUlMVVJFKCkgPDwgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0OjpTZXRVcCgp
ICIKKyAgICAgICAgICAgICAgICAgIDw8ICJjYWxsZWQgdW5leHBlY3RlZGx5LiI7CisgIH0KKwor
ICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiQ3h4RXhj
ZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Q6OlRlYXJEb3duKCkgIgorICAgICAgICAgICAgICAgICAg
PDwgImNhbGxlZCB1bmV4cGVjdGVkbHkuIjsKKyAgfQorfTsKKworVEVTVF9GKEN4eEV4Y2VwdGlv
bkluQ29uc3RydWN0b3JUZXN0LCBUaHJvd3NFeGNlcHRpb25JbkNvbnN0cnVjdG9yKSB7CisgIEFE
RF9GQUlMVVJFKCkgPDwgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0IHRlc3QgYm9keSAi
CisgICAgICAgICAgICAgICAgPDwgImNhbGxlZCB1bmV4cGVjdGVkbHkuIjsKK30KKworLy8gRXhj
ZXB0aW9ucyBpbiBkZXN0cnVjdG9ycyBhcmUgbm90IHN1cHBvcnRlZCBpbiBDKysxMS4KKyNpZiAh
R1RFU1RfTEFOR19DWFgxMQorY2xhc3MgQ3h4RXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCA6IHB1
YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7
CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JbkRlc3RydWN0b3JU
ZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVk
LlxuIik7CisgIH0KKworIHByb3RlY3RlZDoKKyAgfkN4eEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRl
c3QoKSB7CisgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9X
XygKKyAgICAgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0
aW9uIikpOworICB9Cit9OworCitURVNUX0YoQ3h4RXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCwg
VGhyb3dzRXhjZXB0aW9uSW5EZXN0cnVjdG9yKSB7fQorI2VuZGlmICAvLyBDKysxMSBtb2RlCisK
K2NsYXNzIEN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgVGVzdCB7Cisg
cHVibGljOgorICBDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0KCkgeworICAgIHByaW50
ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCBjb25z
dHJ1Y3RvciAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisg
IHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7CisgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vy
cm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIik7CisgIH0KKworICBzdGF0aWMgdm9pZCBUZWFy
RG93blRlc3RDYXNlKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0
aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIKKyAgICAgICAgICAg
ImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIH5DeHhFeGNl
cHRpb25JblNldFVwVGVzdENhc2VUZXN0KCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAg
ICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCBkZXN0cnVjdG9yICIKKyAgICAgICAg
ICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNldFVw
KCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRl
c3RDYXNlVGVzdDo6U2V0VXAoKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4i
KTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBwcmludGYoIiVzIiwK
KyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3Q6OlRlYXJEb3duKCkg
IgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KK307CisKK1RFU1Rf
RihDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0LCBUaHJvd3NFeGNlcHRpb25JblNldFVw
VGVzdENhc2UpIHsKKyAgcHJpbnRmKCIlcyIsCisgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRV
cFRlc3RDYXNlVGVzdCB0ZXN0IGJvZHkgIgorICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5c
biIpOworfQorCitjbGFzcyBDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdENhc2VUZXN0IDogcHVi
bGljIFRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsK
KyAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iKTsK
KyAgfQorfTsKKworVEVTVF9GKEN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0Q2FzZVRlc3QsIFRo
cm93c0V4Y2VwdGlvbkluVGVhckRvd25UZXN0Q2FzZSkge30KKworY2xhc3MgQ3h4RXhjZXB0aW9u
SW5TZXRVcFRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBUZWFy
RG93blRlc3RDYXNlKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0
aW9uSW5TZXRVcFRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCisgICAgICAgICAgICJjYWxsZWQg
YXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICB+Q3h4RXhjZXB0aW9uSW5T
ZXRVcFRlc3QoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25J
blNldFVwVGVzdCBkZXN0cnVjdG9yICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5c
biIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeyB0aHJvdyBzdGQ6OnJ1bnRpbWVf
ZXJyb3IoIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iKTsgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0
VXBUZXN0OjpUZWFyRG93bigpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIp
OworICB9Cit9OworCitURVNUX0YoQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QsIFRocm93c0V4Y2Vw
dGlvbkluU2V0VXApIHsKKyAgQUREX0ZBSUxVUkUoKSA8PCAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRl
c3QgdGVzdCBib2R5ICIKKyAgICAgICAgICAgICAgICA8PCAiY2FsbGVkIHVuZXhwZWN0ZWRseS4i
OworfQorCitjbGFzcyBDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCA6IHB1YmxpYyBUZXN0IHsK
KyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7CisgICAgcHJpbnRm
KCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdDo6VGVhckRvd25U
ZXN0Q2FzZSgpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisK
KyBwcm90ZWN0ZWQ6CisgIH5DeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCgpIHsKKyAgICBwcmlu
dGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0IGRlc3RydWN0
b3IgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFu
ZGFyZCBDKysgZXhjZXB0aW9uIik7CisgIH0KK307CisKK1RFU1RfRihDeHhFeGNlcHRpb25JblRl
YXJEb3duVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5UZWFyRG93bikge30KKworY2xhc3MgQ3h4RXhj
ZXB0aW9uSW5UZXN0Qm9keVRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBzdGF0aWMg
dm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAi
Q3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCisgICAgICAg
ICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICB+Q3h4
RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAg
ICJDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdCBkZXN0cnVjdG9yICIKKyAgICAgICAgICAgImNh
bGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkg
eworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRl
c3Q6OlRlYXJEb3duKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7Cisg
IH0KK307CisKK1RFU1RfRihDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdCwgVGhyb3dzU3RkQ3h4
RXhjZXB0aW9uKSB7CisgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcigiU3RhbmRhcmQgQysrIGV4
Y2VwdGlvbiIpOworfQorCitURVNUKEN4eEV4Y2VwdGlvblRlc3QsIFRocm93c05vblN0ZEN4eEV4
Y2VwdGlvbikgeworICB0aHJvdyAiQy1zdHJpbmciOworfQorCisvLyBUaGlzIHRlcm1pbmF0ZSBo
YW5kbGVyIGFib3J0cyB0aGUgcHJvZ3JhbSB1c2luZyBleGl0KCkgcmF0aGVyIHRoYW4gYWJvcnQo
KS4KKy8vIFRoaXMgYXZvaWRzIHNob3dpbmcgcG9wLXVwcyBvbiBXaW5kb3dzIHN5c3RlbXMgYW5k
IGNvcmUgZHVtcHMgb24gVW5peC1saWtlCisvLyBvbmVzLgordm9pZCBUZXJtaW5hdGVIYW5kbGVy
KCkgeworICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCAiVW5oYW5kbGVkIEMrKyBleGNlcHRpb24g
dGVybWluYXRpbmcgdGhlIHByb2dyYW0uIik7CisgIGZmbHVzaChOVUxMKTsKKyAgZXhpdCgzKTsK
K30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUworCitpbnQgbWFpbihpbnQgYXJn
YywgY2hhcioqIGFyZ3YpIHsKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworICBzdGQ6OnNldF90
ZXJtaW5hdGUoJlRlcm1pbmF0ZUhhbmRsZXIpOworI2VuZGlmCisgIHRlc3Rpbmc6OkluaXRHb29n
bGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1jb2xvci10ZXN0
LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNvbG9yLXRlc3Qu
cHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjNiN2M5OTkwYmNmNDRhNjUwMzZjMjUzZTdhMDE4NDVhZjljMzcxNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVz
dC1jb2xvci10ZXN0LnB5CkBAIC0wLDAgKzEsMTI3IEBACisjIS91c3IvYmluL2VudiBweXRob24K
KyMKKyMgQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJWZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IGNvcnJl
Y3RseSBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlIGNvbG9ycy4iIiIKKworaW1wb3J0IG9zCitp
bXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitJU19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCisK
K0NPTE9SX0VOVl9WQVIgPSAnR1RFU1RfQ09MT1InCitDT0xPUl9GTEFHID0gJ2d0ZXN0X2NvbG9y
JworQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdnb29n
bGV0ZXN0LWNvbG9yLXRlc3RfJykKKworCitkZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToK
KyAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxlIHRvICd2YWx1ZSc7IHVuc2V0cyBpdCB3aGVuICd2
YWx1ZScgaXMgTm9uZS4iIiIKKworICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKKyAgICBvcy5lbnZp
cm9uW2Vudl92YXJdID0gdmFsdWUKKyAgZWxpZiBlbnZfdmFyIGluIG9zLmVudmlyb246CisgICAg
ZGVsIG9zLmVudmlyb25bZW52X3Zhcl0KKworCitkZWYgVXNlc0NvbG9yKHRlcm0sIGNvbG9yX2Vu
dl92YXIsIGNvbG9yX2ZsYWcpOgorICAiIiJSdW5zIGdvb2dsZXRlc3QtY29sb3ItdGVzdF8gYW5k
IHJldHVybnMgaXRzIGV4aXQgY29kZS4iIiIKKworICBTZXRFbnZWYXIoJ1RFUk0nLCB0ZXJtKQor
ICBTZXRFbnZWYXIoQ09MT1JfRU5WX1ZBUiwgY29sb3JfZW52X3ZhcikKKworICBpZiBjb2xvcl9m
bGFnIGlzIE5vbmU6CisgICAgYXJncyA9IFtdCisgIGVsc2U6CisgICAgYXJncyA9IFsnLS0lcz0l
cycgJSAoQ09MT1JfRkxBRywgY29sb3JfZmxhZyldCisgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1
YnByb2Nlc3MoW0NPTU1BTkRdICsgYXJncykKKyAgcmV0dXJuIG5vdCBwLmV4aXRlZCBvciBwLmV4
aXRfY29kZQorCisKK2NsYXNzIEdUZXN0Q29sb3JUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENh
c2UpOgorICBkZWYgdGVzdE5vRW52VmFyTm9GbGFnKHNlbGYpOgorICAgICIiIlRlc3RzIHRoZSBj
YXNlIHdoZW4gdGhlcmUncyBuZWl0aGVyIEdURVNUX0NPTE9SIG5vciAtLWd0ZXN0X2NvbG9yLiIi
IgorCisgICAgaWYgbm90IElTX1dJTkRPV1M6CisgICAgICBzZWxmLmFzc2VydF8obm90IFVzZXND
b2xvcignZHVtYicsIE5vbmUsIE5vbmUpKQorICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29s
b3IoJ2VtYWNzJywgTm9uZSwgTm9uZSkpCisgICAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xv
cigneHRlcm0tbW9ubycsIE5vbmUsIE5vbmUpKQorICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2Vz
Q29sb3IoJ3Vua25vd24nLCBOb25lLCBOb25lKSkKKyAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNl
c0NvbG9yKE5vbmUsIE5vbmUsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2xp
bnV4JywgTm9uZSwgTm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignY3lnd2luJywg
Tm9uZSwgTm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0nLCBOb25lLCBO
b25lKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsIE5vbmUsIE5v
bmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLTI1NmNvbG9yJywgTm9uZSwg
Tm9uZSkpCisKKyAgZGVmIHRlc3RGbGFnT25seShzZWxmKToKKyAgICAiIiJUZXN0cyB0aGUgY2Fz
ZSB3aGVuIHRoZXJlJ3MgLS1ndGVzdF9jb2xvciBidXQgbm90IEdURVNUX0NPTE9SLiIiIgorCisg
ICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAnbm8nKSkKKyAgICBz
ZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0tY29sb3InLCBOb25lLCAnbm8nKSkKKyAg
ICBpZiBub3QgSVNfV0lORE9XUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdl
bWFjcycsIE5vbmUsICdhdXRvJykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0n
LCBOb25lLCAnYXV0bycpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCBOb25l
LCAneWVzJykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0nLCBOb25lLCAneWVz
JykpCisKKyAgZGVmIHRlc3RFbnZWYXJPbmx5KHNlbGYpOgorICAgICIiIlRlc3RzIHRoZSBjYXNl
IHdoZW4gdGhlcmUncyBHVEVTVF9DT0xPUiBidXQgbm90IC0tZ3Rlc3RfY29sb3IuIiIiCisKKyAg
ICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcignZHVtYicsICdubycsIE5vbmUpKQorICAgIHNl
bGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsICdubycsIE5vbmUpKQorICAg
IGlmIG5vdCBJU19XSU5ET1dTOgorICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ2R1
bWInLCAnYXV0bycsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLWNv
bG9yJywgJ2F1dG8nLCBOb25lKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywg
J3llcycsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywg
J3llcycsIE5vbmUpKQorCisgIGRlZiB0ZXN0RW52VmFyQW5kRmxhZyhzZWxmKToKKyAgICAiIiJU
ZXN0cyB0aGUgY2FzZSB3aGVuIHRoZXJlIGFyZSBib3RoIEdURVNUX0NPTE9SIGFuZCAtLWd0ZXN0
X2NvbG9yLiIiIgorCisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9y
JywgJ25vJywgJ25vJykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsICdubycs
ICd5ZXMnKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsICdubycs
ICdhdXRvJykpCisKKyAgZGVmIHRlc3RBbGlhc2VzT2ZZZXNBbmRObyhzZWxmKToKKyAgICAiIiJU
ZXN0cyB1c2luZyBhbGlhc2VzIGluIHNwZWNpZnlpbmcgLS1ndGVzdF9jb2xvci4iIiIKKworICAg
IHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAndHJ1ZScpKQorICAgIHNlbGYu
YXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAnWUVTJykpCisgICAgc2VsZi5hc3NlcnRf
KFVzZXNDb2xvcignZHVtYicsIE5vbmUsICdUJykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xv
cignZHVtYicsIE5vbmUsICcxJykpCisKKyAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcign
eHRlcm0nLCBOb25lLCAnZicpKQorICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVy
bScsIE5vbmUsICdmYWxzZScpKQorICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVy
bScsIE5vbmUsICcwJykpCisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtJywg
Tm9uZSwgJ3Vua25vd24nKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVz
dF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9nb29nbGV0ZXN0LWNvbG9yLXRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9nb29nbGV0ZXN0LWNvbG9yLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyMGEzYTAwNTQ4ZmRi
MWU5MzVhM2RhMTZkZjU2M2E1MGUxNzlhOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY29sb3ItdGVzdF8uY2MKQEAgLTAsMCArMSw2
MiBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8v
IEEgaGVscGVyIHByb2dyYW0gZm9yIHRlc3RpbmcgaG93IEdvb2dsZSBUZXN0IGRldGVybWluZXMg
d2hldGhlciB0byB1c2UKKy8vIGNvbG9ycyBpbiB0aGUgb3V0cHV0LiAgSXQgcHJpbnRzICJZRVMi
IGFuZCByZXR1cm5zIDEgaWYgR29vZ2xlIFRlc3QKKy8vIGRlY2lkZXMgdG8gdXNlIGNvbG9ycywg
YW5kIHByaW50cyAiTk8iIGFuZCByZXR1cm5zIDAgb3RoZXJ3aXNlLgorCisjaW5jbHVkZSA8c3Rk
aW8uaD4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAic3JjL2d0ZXN0LWlu
dGVybmFsLWlubC5oIgorCit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxkVXNlQ29sb3I7
CisKKy8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIFVuaXRUZXN0
IHNpbmdsZXRvbiBpcworLy8gY3JlYXRlZCBiZWZvcmUgbWFpbigpIGlzIGVudGVyZWQsIGFuZCB0
aHVzIHRoYXQgU2hvdWxkVXNlQ29sb3IoKQorLy8gd29ya3MgdGhlIHNhbWUgd2F5IGFzIGluIGEg
cmVhbCBHb29nbGUtVGVzdC1iYXNlZCB0ZXN0LiAgV2UgZG9uJ3QgYWN0dWFsCisvLyBydW4gdGhl
IFRFU1QgaXRzZWxmLgorVEVTVChHVGVzdENvbG9yVGVzdCwgRHVtbXkpIHsKK30KKworaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZh
cmdjLCBhcmd2KTsKKworICBpZiAoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpIHsKKyAgICAvLyBHb29n
bGUgVGVzdCBkZWNpZGVzIHRvIHVzZSBjb2xvcnMgaW4gdGhlIG91dHB1dCAoYXNzdW1pbmcgaXQK
KyAgICAvLyBnb2VzIHRvIGEgVFRZKS4KKyAgICBwcmludGYoIllFU1xuIik7CisgICAgcmV0dXJu
IDE7CisgIH0gZWxzZSB7CisgICAgLy8gR29vZ2xlIFRlc3QgZGVjaWRlcyBub3QgdG8gdXNlIGNv
bG9ycyBpbiB0aGUgb3V0cHV0LgorICAgIHByaW50ZigiTk9cbiIpOworICAgIHJldHVybiAwOwor
ICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtZGVhdGgtdGVzdC10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LWRlYXRoLXRlc3QtdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGMzMDI2ZmI1ODk1NjYwYWQy
YzlkNjVmYmQ5OWI1ZmFmOWFkNDhjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWRlYXRoLXRlc3QtdGVzdC5jYwpAQCAtMCwwICsxLDE0
MjMgQEAKKy8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8K
Ky8vIFRlc3RzIGZvciBkZWF0aCB0ZXN0cy4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LWRlYXRo
LXRlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVy
bmFsL2d0ZXN0LWZpbGVwYXRoLmgiCisKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNG
YWxzZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlOworCisjaWYgR1RFU1Rf
SEFTX0RFQVRIX1RFU1QKKworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisjICBpbmNsdWRlIDxkaXJl
Y3QuaD4gICAgICAgICAgLy8gRm9yIGNoZGlyKCkuCisjIGVsc2UKKyMgIGluY2x1ZGUgPHVuaXN0
ZC5oPgorIyAgaW5jbHVkZSA8c3lzL3dhaXQuaD4gICAgICAgIC8vIEZvciB3YWl0cGlkLgorIyBl
bmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjIGluY2x1ZGUgPGxpbWl0cy5oPgorIyBpbmNs
dWRlIDxzaWduYWwuaD4KKyMgaW5jbHVkZSA8c3RkaW8uaD4KKworIyBpZiBHVEVTVF9PU19MSU5V
WAorIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCisK
KyMgaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCisjIGluY2x1ZGUgInNyYy9ndGVzdC1pbnRl
cm5hbC1pbmwuaCIKKworbmFtZXNwYWNlIHBvc2l4ID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9z
aXg7CisKK3VzaW5nIHRlc3Rpbmc6Ok1lc3NhZ2U7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6
RGVhdGhUZXN0OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVzdEZhY3Rvcnk7Cit1
c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RmlsZVBhdGg7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6R2V0TGFzdEVycm5vRGVzY3JpcHRpb247Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0
VW5pdFRlc3RJbXBsOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkluRGVhdGhUZXN0Q2hpbGQ7
Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UGFyc2VOYXR1cmFsTnVtYmVyOworCituYW1lc3Bh
Y2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBBIGhlbHBlciBjbGFzcyB3
aG9zZSBvYmplY3RzIHJlcGxhY2UgdGhlIGRlYXRoIHRlc3QgZmFjdG9yeSBmb3IgYQorLy8gc2lu
Z2xlIFVuaXRUZXN0IG9iamVjdCBkdXJpbmcgdGhlaXIgbGlmZXRpbWVzLgorY2xhc3MgUmVwbGFj
ZURlYXRoVGVzdEZhY3RvcnkgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgUmVwbGFjZURlYXRoVGVz
dEZhY3RvcnkoRGVhdGhUZXN0RmFjdG9yeSogbmV3X2ZhY3RvcnkpCisgICAgICA6IHVuaXRfdGVz
dF9pbXBsXyhHZXRVbml0VGVzdEltcGwoKSkgeworICAgIG9sZF9mYWN0b3J5XyA9IHVuaXRfdGVz
dF9pbXBsXy0+ZGVhdGhfdGVzdF9mYWN0b3J5Xy5yZWxlYXNlKCk7CisgICAgdW5pdF90ZXN0X2lt
cGxfLT5kZWF0aF90ZXN0X2ZhY3RvcnlfLnJlc2V0KG5ld19mYWN0b3J5KTsKKyAgfQorCisgIH5S
ZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSgpIHsKKyAgICB1bml0X3Rlc3RfaW1wbF8tPmRlYXRoX3Rl
c3RfZmFjdG9yeV8ucmVsZWFzZSgpOworICAgIHVuaXRfdGVzdF9pbXBsXy0+ZGVhdGhfdGVzdF9m
YWN0b3J5Xy5yZXNldChvbGRfZmFjdG9yeV8pOworICB9CisgcHJpdmF0ZToKKyAgLy8gUHJldmVu
dHMgY29weWluZyBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSBvYmplY3RzLgorICBSZXBsYWNlRGVh
dGhUZXN0RmFjdG9yeShjb25zdCBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSYpOworICB2b2lkIG9w
ZXJhdG9yPShjb25zdCBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSYpOworCisgIFVuaXRUZXN0SW1w
bCogdW5pdF90ZXN0X2ltcGxfOworICBEZWF0aFRlc3RGYWN0b3J5KiBvbGRfZmFjdG9yeV87Cit9
OworCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisK
K3ZvaWQgRGllV2l0aE1lc3NhZ2UoY29uc3QgOjpzdGQ6OnN0cmluZyYgbWVzc2FnZSkgeworICBm
cHJpbnRmKHN0ZGVyciwgIiVzIiwgbWVzc2FnZS5jX3N0cigpKTsKKyAgZmZsdXNoKHN0ZGVycik7
ICAvLyBNYWtlIHN1cmUgdGhlIHRleHQgaXMgcHJpbnRlZCBiZWZvcmUgdGhlIHByb2Nlc3MgZXhp
dHMuCisKKyAgLy8gV2UgY2FsbCBfZXhpdCgpIGluc3RlYWQgb2YgZXhpdCgpLCBhcyB0aGUgZm9y
bWVyIGlzIGEgZGlyZWN0CisgIC8vIHN5c3RlbSBjYWxsIGFuZCB0aHVzIHNhZmVyIGluIHRoZSBw
cmVzZW5jZSBvZiB0aHJlYWRzLiAgZXhpdCgpCisgIC8vIHdpbGwgaW52b2tlIHVzZXItZGVmaW5l
ZCBleGl0LWhvb2tzLCB3aGljaCBtYXkgZG8gZGFuZ2Vyb3VzCisgIC8vIHRoaW5ncyB0aGF0IGNv
bmZsaWN0IHdpdGggZGVhdGggdGVzdHMuCisgIC8vCisgIC8vIFNvbWUgY29tcGlsZXJzIGNhbiBy
ZWNvZ25pemUgdGhhdCBfZXhpdCgpIG5ldmVyIHJldHVybnMgYW5kIGlzc3VlIHRoZQorICAvLyAn
dW5yZWFjaGFibGUgY29kZScgd2FybmluZyBmb3IgY29kZSBmb2xsb3dpbmcgdGhpcyBmdW5jdGlv
biwgdW5sZXNzCisgIC8vIGZvb2xlZCBieSBhIGZha2UgY29uZGl0aW9uLgorICBpZiAoQWx3YXlz
VHJ1ZSgpKQorICAgIF9leGl0KDEpOworfQorCit2b2lkIERpZUluc2lkZShjb25zdCA6OnN0ZDo6
c3RyaW5nJiBmdW5jdGlvbikgeworICBEaWVXaXRoTWVzc2FnZSgiZGVhdGggaW5zaWRlICIgKyBm
dW5jdGlvbiArICIoKS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyB3b3JrLgor
CitjbGFzcyBUZXN0Rm9yRGVhdGhUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHByb3Rl
Y3RlZDoKKyAgVGVzdEZvckRlYXRoVGVzdCgpIDogb3JpZ2luYWxfZGlyXyhGaWxlUGF0aDo6R2V0
Q3VycmVudERpcigpKSB7fQorCisgIHZpcnR1YWwgflRlc3RGb3JEZWF0aFRlc3QoKSB7CisgICAg
cG9zaXg6OkNoRGlyKG9yaWdpbmFsX2Rpcl8uY19zdHIoKSk7CisgIH0KKworICAvLyBBIHN0YXRp
YyBtZW1iZXIgZnVuY3Rpb24gdGhhdCdzIGV4cGVjdGVkIHRvIGRpZS4KKyAgc3RhdGljIHZvaWQg
U3RhdGljTWVtYmVyRnVuY3Rpb24oKSB7IERpZUluc2lkZSgiU3RhdGljTWVtYmVyRnVuY3Rpb24i
KTsgfQorCisgIC8vIEEgbWV0aG9kIG9mIHRoZSB0ZXN0IGZpeHR1cmUgdGhhdCBtYXkgZGllLgor
ICB2b2lkIE1lbWJlckZ1bmN0aW9uKCkgeworICAgIGlmIChzaG91bGRfZGllXykKKyAgICAgIERp
ZUluc2lkZSgiTWVtYmVyRnVuY3Rpb24iKTsKKyAgfQorCisgIC8vIFRydWUgaWZmIE1lbWJlckZ1
bmN0aW9uKCkgc2hvdWxkIGRpZS4KKyAgYm9vbCBzaG91bGRfZGllXzsKKyAgY29uc3QgRmlsZVBh
dGggb3JpZ2luYWxfZGlyXzsKK307CisKKy8vIEEgY2xhc3Mgd2l0aCBhIG1lbWJlciBmdW5jdGlv
biB0aGF0IG1heSBkaWUuCitjbGFzcyBNYXlEaWUgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgTWF5
RGllKGJvb2wgc2hvdWxkX2RpZSkgOiBzaG91bGRfZGllXyhzaG91bGRfZGllKSB7fQorCisgIC8v
IEEgbWVtYmVyIGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KKyAgdm9pZCBNZW1iZXJGdW5jdGlvbigp
IGNvbnN0IHsKKyAgICBpZiAoc2hvdWxkX2RpZV8pCisgICAgICBEaWVJbnNpZGUoIk1heURpZTo6
TWVtYmVyRnVuY3Rpb24iKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gVHJ1ZSBpZmYgTWVtYmVy
RnVuY3Rpb24oKSBzaG91bGQgZGllLgorICBib29sIHNob3VsZF9kaWVfOworfTsKKworLy8gQSBn
bG9iYWwgZnVuY3Rpb24gdGhhdCdzIGV4cGVjdGVkIHRvIGRpZS4KK3ZvaWQgR2xvYmFsRnVuY3Rp
b24oKSB7IERpZUluc2lkZSgiR2xvYmFsRnVuY3Rpb24iKTsgfQorCisvLyBBIG5vbi12b2lkIGZ1
bmN0aW9uIHRoYXQncyBleHBlY3RlZCB0byBkaWUuCitpbnQgTm9uVm9pZEZ1bmN0aW9uKCkgewor
ICBEaWVJbnNpZGUoIk5vblZvaWRGdW5jdGlvbiIpOworICByZXR1cm4gMTsKK30KKworLy8gQSB1
bmFyeSBmdW5jdGlvbiB0aGF0IG1heSBkaWUuCit2b2lkIERpZUlmKGJvb2wgc2hvdWxkX2RpZSkg
eworICBpZiAoc2hvdWxkX2RpZSkKKyAgICBEaWVJbnNpZGUoIkRpZUlmIik7Cit9CisKKy8vIEEg
YmluYXJ5IGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KK2Jvb2wgRGllSWZMZXNzVGhhbihpbnQgeCwg
aW50IHkpIHsKKyAgaWYgKHggPCB5KSB7CisgICAgRGllSW5zaWRlKCJEaWVJZkxlc3NUaGFuIik7
CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQVRIIGNh
biBiZSB1c2VkIG91dHNpZGUgYSBURVNULCBURVNUX0YsIG9yIHRlc3QgZml4dHVyZS4KK3ZvaWQg
RGVhdGhUZXN0U3Vicm91dGluZSgpIHsKKyAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCks
ICJkZWF0aC4qR2xvYmFsRnVuY3Rpb24iKTsKKyAgQVNTRVJUX0RFQVRIKEdsb2JhbEZ1bmN0aW9u
KCksICJkZWF0aC4qR2xvYmFsRnVuY3Rpb24iKTsKK30KKworLy8gRGVhdGggaW4gZGJnLCBub3Qg
b3B0LgoraW50IERpZUluRGVidWdFbHNlMTIoaW50KiBzaWRlZWZmZWN0KSB7CisgIGlmIChzaWRl
ZWZmZWN0KSAqc2lkZWVmZmVjdCA9IDEyOworCisjIGlmbmRlZiBOREVCVUcKKworICBEaWVJbnNp
ZGUoIkRpZUluRGVidWdFbHNlMTIiKTsKKworIyBlbmRpZiAgLy8gTkRFQlVHCisKKyAgcmV0dXJu
IDEyOworfQorCisjIGlmIEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfRlVDSFNJQQorCisv
LyBUZXN0cyB0aGUgRXhpdGVkV2l0aENvZGUgcHJlZGljYXRlLgorVEVTVChFeGl0U3RhdHVzUHJl
ZGljYXRlVGVzdCwgRXhpdGVkV2l0aENvZGUpIHsKKyAgLy8gT24gV2luZG93cywgdGhlIHByb2Nl
c3MncyBleGl0IGNvZGUgaXMgdGhlIHNhbWUgYXMgaXRzIGV4aXQgc3RhdHVzLAorICAvLyBzbyB0
aGUgcHJlZGljYXRlIGp1c3QgY29tcGFyZXMgdGhlIGl0cyBpbnB1dCB3aXRoIGl0cyBwYXJhbWV0
ZXIuCisgIEVYUEVDVF9UUlVFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApKDApKTsKKyAgRVhQ
RUNUX1RSVUUodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSkoMSkpOworICBFWFBFQ1RfVFJVRSh0
ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSg0MikoNDIpKTsKKyAgRVhQRUNUX0ZBTFNFKHRlc3Rpbmc6
OkV4aXRlZFdpdGhDb2RlKDApKDEpKTsKKyAgRVhQRUNUX0ZBTFNFKHRlc3Rpbmc6OkV4aXRlZFdp
dGhDb2RlKDEpKDApKTsKK30KKworIyBlbHNlCisKKy8vIFJldHVybnMgdGhlIGV4aXQgc3RhdHVz
IG9mIGEgcHJvY2VzcyB0aGF0IGNhbGxzIF9leGl0KDIpIHdpdGggYQorLy8gZ2l2ZW4gZXhpdCBj
b2RlLiAgVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgdGhlCisvLyBFeGl0U3RhdHVzUHJl
ZGljYXRlVGVzdCB0ZXN0IHN1aXRlLgorc3RhdGljIGludCBOb3JtYWxFeGl0U3RhdHVzKGludCBl
eGl0X2NvZGUpIHsKKyAgcGlkX3QgY2hpbGRfcGlkID0gZm9yaygpOworICBpZiAoY2hpbGRfcGlk
ID09IDApIHsKKyAgICBfZXhpdChleGl0X2NvZGUpOworICB9CisgIGludCBzdGF0dXM7CisgIHdh
aXRwaWQoY2hpbGRfcGlkLCAmc3RhdHVzLCAwKTsKKyAgcmV0dXJuIHN0YXR1czsKK30KKworLy8g
UmV0dXJucyB0aGUgZXhpdCBzdGF0dXMgb2YgYSBwcm9jZXNzIHRoYXQgcmFpc2VzIGEgZ2l2ZW4g
c2lnbmFsLgorLy8gSWYgdGhlIHNpZ25hbCBkb2VzIG5vdCBjYXVzZSB0aGUgcHJvY2VzcyB0byBk
aWUsIHRoZW4gaXQgcmV0dXJucworLy8gaW5zdGVhZCB0aGUgZXhpdCBzdGF0dXMgb2YgYSBwcm9j
ZXNzIHRoYXQgZXhpdHMgbm9ybWFsbHkgd2l0aCBleGl0CisvLyBjb2RlIDEuICBUaGlzIGlzIGEg
aGVscGVyIGZ1bmN0aW9uIGZvciB0aGUgRXhpdFN0YXR1c1ByZWRpY2F0ZVRlc3QKKy8vIHRlc3Qg
c3VpdGUuCitzdGF0aWMgaW50IEtpbGxlZEV4aXRTdGF0dXMoaW50IHNpZ251bSkgeworICBwaWRf
dCBjaGlsZF9waWQgPSBmb3JrKCk7CisgIGlmIChjaGlsZF9waWQgPT0gMCkgeworICAgIHJhaXNl
KHNpZ251bSk7CisgICAgX2V4aXQoMSk7CisgIH0KKyAgaW50IHN0YXR1czsKKyAgd2FpdHBpZChj
aGlsZF9waWQsICZzdGF0dXMsIDApOworICByZXR1cm4gc3RhdHVzOworfQorCisvLyBUZXN0cyB0
aGUgRXhpdGVkV2l0aENvZGUgcHJlZGljYXRlLgorVEVTVChFeGl0U3RhdHVzUHJlZGljYXRlVGVz
dCwgRXhpdGVkV2l0aENvZGUpIHsKKyAgY29uc3QgaW50IHN0YXR1czAgID0gTm9ybWFsRXhpdFN0
YXR1cygwKTsKKyAgY29uc3QgaW50IHN0YXR1czEgID0gTm9ybWFsRXhpdFN0YXR1cygxKTsKKyAg
Y29uc3QgaW50IHN0YXR1czQyID0gTm9ybWFsRXhpdFN0YXR1cyg0Mik7CisgIGNvbnN0IHRlc3Rp
bmc6OkV4aXRlZFdpdGhDb2RlIHByZWQwKDApOworICBjb25zdCB0ZXN0aW5nOjpFeGl0ZWRXaXRo
Q29kZSBwcmVkMSgxKTsKKyAgY29uc3QgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUgcHJlZDQyKDQy
KTsKKyAgRVhQRUNUX1BSRUQxKHByZWQwLCAgc3RhdHVzMCk7CisgIEVYUEVDVF9QUkVEMShwcmVk
MSwgIHN0YXR1czEpOworICBFWFBFQ1RfUFJFRDEocHJlZDQyLCBzdGF0dXM0Mik7CisgIEVYUEVD
VF9GQUxTRShwcmVkMChzdGF0dXMxKSk7CisgIEVYUEVDVF9GQUxTRShwcmVkNDIoc3RhdHVzMCkp
OworICBFWFBFQ1RfRkFMU0UocHJlZDEoc3RhdHVzNDIpKTsKK30KKworLy8gVGVzdHMgdGhlIEtp
bGxlZEJ5U2lnbmFsIHByZWRpY2F0ZS4KK1RFU1QoRXhpdFN0YXR1c1ByZWRpY2F0ZVRlc3QsIEtp
bGxlZEJ5U2lnbmFsKSB7CisgIGNvbnN0IGludCBzdGF0dXNfc2VndiA9IEtpbGxlZEV4aXRTdGF0
dXMoU0lHU0VHVik7CisgIGNvbnN0IGludCBzdGF0dXNfa2lsbCA9IEtpbGxlZEV4aXRTdGF0dXMo
U0lHS0lMTCk7CisgIGNvbnN0IHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsIHByZWRfc2VndihTSUdT
RUdWKTsKKyAgY29uc3QgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwgcHJlZF9raWxsKFNJR0tJTEwp
OworICBFWFBFQ1RfUFJFRDEocHJlZF9zZWd2LCBzdGF0dXNfc2Vndik7CisgIEVYUEVDVF9QUkVE
MShwcmVkX2tpbGwsIHN0YXR1c19raWxsKTsKKyAgRVhQRUNUX0ZBTFNFKHByZWRfc2VndihzdGF0
dXNfa2lsbCkpOworICBFWFBFQ1RfRkFMU0UocHJlZF9raWxsKHN0YXR1c19zZWd2KSk7Cit9CisK
KyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfRlVDSFNJQQorCisvLyBU
ZXN0cyB0aGF0IHRoZSBkZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29kZSB3aGljaCBtYXkg
b3IgbWF5IG5vdAorLy8gYmUgZm9sbG93ZWQgYnkgb3BlcmF0b3I8PCwgYW5kIHRoYXQgaW4gZWl0
aGVyIGNhc2UgdGhlIGNvbXBsZXRlIHRleHQKKy8vIGNvbXByaXNlcyBvbmx5IGEgc2luZ2xlIEMr
KyBzdGF0ZW1lbnQuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU2luZ2xlU3RhdGVtZW50KSB7
CisgIGlmIChBbHdheXNGYWxzZSgpKQorICAgIC8vIFRoaXMgd291bGQgZmFpbCBpZiBleGVjdXRl
ZDsgdGhpcyBpcyBhIGNvbXBpbGF0aW9uIHRlc3Qgb25seQorICAgIEFTU0VSVF9ERUFUSChyZXR1
cm4sICIiKTsKKworICBpZiAoQWx3YXlzVHJ1ZSgpKQorICAgIEVYUEVDVF9ERUFUSChfZXhpdCgx
KSwgIiIpOworICBlbHNlCisgICAgLy8gVGhpcyBlbXB0eSAiZWxzZSIgYnJhbmNoIGlzIG1lYW50
IHRvIGVuc3VyZSB0aGF0IEVYUEVDVF9ERUFUSAorICAgIC8vIGRvZXNuJ3QgZXhwYW5kIGludG8g
YW4gImlmIiBzdGF0ZW1lbnQgd2l0aG91dCBhbiAiZWxzZSIKKyAgICA7CisKKyAgaWYgKEFsd2F5
c0ZhbHNlKCkpCisgICAgQVNTRVJUX0RFQVRIKHJldHVybiwgIiIpIDw8ICJkaWQgbm90IGRpZSI7
CisKKyAgaWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgOworICBlbHNlCisgICAgRVhQRUNUX0RFQVRI
KF9leGl0KDEpLCAiIikgPDwgMSA8PCAyIDw8IDM7Cit9CisKK3ZvaWQgRGllV2l0aEVtYmVkZGVk
TnVsKCkgeworICBmcHJpbnRmKHN0ZGVyciwgIkhlbGxvJWNteSBudWxsIHdvcmxkLlxuIiwgJ1ww
Jyk7CisgIGZmbHVzaChzdGRlcnIpOworICBfZXhpdCgxKTsKK30KKworIyBpZiBHVEVTVF9VU0VT
X1BDUkUKKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEggYW5kIEFTU0VSVF9ERUFUSCB3b3Jr
IHdoZW4gdGhlIGVycm9yCisvLyBtZXNzYWdlIGhhcyBhIE5VTCBjaGFyYWN0ZXIgaW4gaXQuCitU
RVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRW1iZWRkZWROdWxJbk1lc3NhZ2UpIHsKKyAgRVhQRUNU
X0RFQVRIKERpZVdpdGhFbWJlZGRlZE51bCgpLCAibXkgbnVsbCB3b3JsZCIpOworICBBU1NFUlRf
REVBVEgoRGllV2l0aEVtYmVkZGVkTnVsKCksICJteSBudWxsIHdvcmxkIik7Cit9CisKKyMgZW5k
aWYgIC8vIEdURVNUX1VTRVNfUENSRQorCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3QgbWFjcm9z
IGV4cGFuZCB0byBjb2RlIHdoaWNoIGludGVyYWN0cyB3ZWxsIHdpdGggc3dpdGNoCisvLyBzdGF0
ZW1lbnRzLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFN3aXRjaFN0YXRlbWVudCkgeworICAv
LyBNaWNyb3NvZnQgY29tcGlsZXIgdXN1YWxseSBjb21wbGFpbnMgYWJvdXQgc3dpdGNoIHN0YXRl
bWVudHMgd2l0aG91dAorICAvLyBjYXNlIGxhYmVscy4gV2Ugc3VwcHJlc3MgdGhhdCB3YXJuaW5n
IGZvciB0aGlzIHRlc3QuCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQwNjUp
CisKKyAgc3dpdGNoICgwKQorICAgIGRlZmF1bHQ6CisgICAgICBBU1NFUlRfREVBVEgoX2V4aXQo
MSksICIiKSA8PCAiZXhpdCBpbiBkZWZhdWx0IHN3aXRjaCBoYW5kbGVyIjsKKworICBzd2l0Y2gg
KDApCisgICAgY2FzZSAwOgorICAgICAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgImV4
aXQgaW4gc3dpdGNoIGNhc2UiOworCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8o
KQorfQorCisvLyBUZXN0cyB0aGF0IGEgc3RhdGljIG1lbWJlciBmdW5jdGlvbiBjYW4gYmUgdXNl
ZCBpbiBhICJmYXN0IiBzdHlsZQorLy8gZGVhdGggdGVzdC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhU
ZXN0LCBTdGF0aWNNZW1iZXJGdW5jdGlvbkZhc3RTdHlsZSkgeworICB0ZXN0aW5nOjpHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOworICBBU1NFUlRfREVBVEgoU3RhdGljTWVt
YmVyRnVuY3Rpb24oKSwgImRlYXRoLipTdGF0aWNNZW1iZXIiKTsKK30KKworLy8gVGVzdHMgdGhh
dCBhIG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNhbiBiZSB1c2VkIGluIGEgImZhc3QiCisv
LyBzdHlsZSBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE1lbWJlckZ1bmN0
aW9uRmFzdFN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkg
PSAiZmFzdCI7CisgIHNob3VsZF9kaWVfID0gdHJ1ZTsKKyAgRVhQRUNUX0RFQVRIKE1lbWJlckZ1
bmN0aW9uKCksICJpbnNpZGUuKk1lbWJlckZ1bmN0aW9uIik7Cit9CisKK3ZvaWQgQ2hhbmdlVG9S
b290RGlyKCkgeyBwb3NpeDo6Q2hEaXIoR1RFU1RfUEFUSF9TRVBfKTsgfQorCisvLyBUZXN0cyB0
aGF0IGRlYXRoIHRlc3RzIHdvcmsgZXZlbiBpZiB0aGUgY3VycmVudCBkaXJlY3RvcnkgaGFzIGJl
ZW4KKy8vIGNoYW5nZWQuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRmFzdERlYXRoVGVzdElu
Q2hhbmdlZERpcikgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0g
ImZhc3QiOworCisgIENoYW5nZVRvUm9vdERpcigpOworICBFWFBFQ1RfRVhJVChfZXhpdCgxKSwg
dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSksICIiKTsKKworICBDaGFuZ2VUb1Jvb3REaXIoKTsK
KyAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAiIik7Cit9CisKKyMgaWYgR1RFU1RfT1NfTElOVVgK
K3ZvaWQgU2lncHJvZkFjdGlvbihpbnQsIHNpZ2luZm9fdCosIHZvaWQqKSB7IC8qIG5vIG9wICov
IH0KKworLy8gU2V0cyBTSUdQUk9GIGFjdGlvbiBhbmQgSVRJTUVSX1BST0YgdGltZXIgKGludGVy
dmFsOiAxbXMpLgordm9pZCBTZXRTaWdwcm9mQWN0aW9uQW5kVGltZXIoKSB7CisgIHN0cnVjdCBp
dGltZXJ2YWwgdGltZXI7CisgIHRpbWVyLml0X2ludGVydmFsLnR2X3NlYyA9IDA7CisgIHRpbWVy
Lml0X2ludGVydmFsLnR2X3VzZWMgPSAxOworICB0aW1lci5pdF92YWx1ZSA9IHRpbWVyLml0X2lu
dGVydmFsOworICBBU1NFUlRfRVEoMCwgc2V0aXRpbWVyKElUSU1FUl9QUk9GLCAmdGltZXIsIE5V
TEwpKTsKKyAgc3RydWN0IHNpZ2FjdGlvbiBzaWduYWxfYWN0aW9uOworICBtZW1zZXQoJnNpZ25h
bF9hY3Rpb24sIDAsIHNpemVvZihzaWduYWxfYWN0aW9uKSk7CisgIHNpZ2VtcHR5c2V0KCZzaWdu
YWxfYWN0aW9uLnNhX21hc2spOworICBzaWduYWxfYWN0aW9uLnNhX3NpZ2FjdGlvbiA9IFNpZ3By
b2ZBY3Rpb247CisgIHNpZ25hbF9hY3Rpb24uc2FfZmxhZ3MgPSBTQV9SRVNUQVJUIHwgU0FfU0lH
SU5GTzsKKyAgQVNTRVJUX0VRKDAsIHNpZ2FjdGlvbihTSUdQUk9GLCAmc2lnbmFsX2FjdGlvbiwg
TlVMTCkpOworfQorCisvLyBEaXNhYmxlcyBJVElNRVJfUFJPRiB0aW1lciBhbmQgaWdub3JlcyBT
SUdQUk9GIHNpZ25hbC4KK3ZvaWQgRGlzYWJsZVNpZ3Byb2ZBY3Rpb25BbmRUaW1lcihzdHJ1Y3Qg
c2lnYWN0aW9uKiBvbGRfc2lnbmFsX2FjdGlvbikgeworICBzdHJ1Y3QgaXRpbWVydmFsIHRpbWVy
OworICB0aW1lci5pdF9pbnRlcnZhbC50dl9zZWMgPSAwOworICB0aW1lci5pdF9pbnRlcnZhbC50
dl91c2VjID0gMDsKKyAgdGltZXIuaXRfdmFsdWUgPSB0aW1lci5pdF9pbnRlcnZhbDsKKyAgQVNT
RVJUX0VRKDAsIHNldGl0aW1lcihJVElNRVJfUFJPRiwgJnRpbWVyLCBOVUxMKSk7CisgIHN0cnVj
dCBzaWdhY3Rpb24gc2lnbmFsX2FjdGlvbjsKKyAgbWVtc2V0KCZzaWduYWxfYWN0aW9uLCAwLCBz
aXplb2Yoc2lnbmFsX2FjdGlvbikpOworICBzaWdlbXB0eXNldCgmc2lnbmFsX2FjdGlvbi5zYV9t
YXNrKTsKKyAgc2lnbmFsX2FjdGlvbi5zYV9oYW5kbGVyID0gU0lHX0lHTjsKKyAgQVNTRVJUX0VR
KDAsIHNpZ2FjdGlvbihTSUdQUk9GLCAmc2lnbmFsX2FjdGlvbiwgb2xkX3NpZ25hbF9hY3Rpb24p
KTsKK30KKworLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyB3b3JrIHdoZW4gU0lHUFJPRiBoYW5k
bGVyIGFuZCB0aW1lciBhcmUgc2V0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEZhc3RTaWdw
cm9mQWN0aW9uU2V0KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkg
PSAiZmFzdCI7CisgIFNldFNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigpOworICBFWFBFQ1RfREVBVEgo
X2V4aXQoMSksICIiKTsKKyAgc3RydWN0IHNpZ2FjdGlvbiBvbGRfc2lnbmFsX2FjdGlvbjsKKyAg
RGlzYWJsZVNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigmb2xkX3NpZ25hbF9hY3Rpb24pOworICBFWFBF
Q1RfVFJVRShvbGRfc2lnbmFsX2FjdGlvbi5zYV9zaWdhY3Rpb24gPT0gU2lncHJvZkFjdGlvbik7
Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUaHJlYWRTYWZlU2lncHJvZkFjdGlvblNl
dCkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNh
ZmUiOworICBTZXRTaWdwcm9mQWN0aW9uQW5kVGltZXIoKTsKKyAgRVhQRUNUX0RFQVRIKF9leGl0
KDEpLCAiIik7CisgIHN0cnVjdCBzaWdhY3Rpb24gb2xkX3NpZ25hbF9hY3Rpb247CisgIERpc2Fi
bGVTaWdwcm9mQWN0aW9uQW5kVGltZXIoJm9sZF9zaWduYWxfYWN0aW9uKTsKKyAgRVhQRUNUX1RS
VUUob2xkX3NpZ25hbF9hY3Rpb24uc2Ffc2lnYWN0aW9uID09IFNpZ3Byb2ZBY3Rpb24pOworfQor
IyBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKKworLy8gUmVwZWF0cyBhIHJlcHJlc2VudGF0aXZl
IHNhbXBsZSBvZiBkZWF0aCB0ZXN0cyBpbiB0aGUgInRocmVhZHNhZmUiIHN0eWxlOgorCitURVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgU3RhdGljTWVtYmVyRnVuY3Rpb25UaHJlYWRzYWZlU3R5bGUp
IHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZl
IjsKKyAgQVNTRVJUX0RFQVRIKFN0YXRpY01lbWJlckZ1bmN0aW9uKCksICJkZWF0aC4qU3RhdGlj
TWVtYmVyIik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNZW1iZXJGdW5jdGlvblRo
cmVhZHNhZmVTdHlsZSkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUp
ID0gInRocmVhZHNhZmUiOworICBzaG91bGRfZGllXyA9IHRydWU7CisgIEVYUEVDVF9ERUFUSChN
ZW1iZXJGdW5jdGlvbigpLCAiaW5zaWRlLipNZW1iZXJGdW5jdGlvbiIpOworfQorCitURVNUX0Yo
VGVzdEZvckRlYXRoVGVzdCwgVGhyZWFkc2FmZURlYXRoVGVzdEluTG9vcCkgeworICB0ZXN0aW5n
OjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOworCisgIGZvciAo
aW50IGkgPSAwOyBpIDwgMzsgKytpKQorICAgIEVYUEVDVF9FWElUKF9leGl0KGkpLCB0ZXN0aW5n
OjpFeGl0ZWRXaXRoQ29kZShpKSwgIiIpIDw8ICI6IGkgPSAiIDw8IGk7Cit9CisKK1RFU1RfRihU
ZXN0Rm9yRGVhdGhUZXN0LCBUaHJlYWRzYWZlRGVhdGhUZXN0SW5DaGFuZ2VkRGlyKSB7CisgIHRl
c3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7CisKKyAg
Q2hhbmdlVG9Sb290RGlyKCk7CisgIEVYUEVDVF9FWElUKF9leGl0KDEpLCB0ZXN0aW5nOjpFeGl0
ZWRXaXRoQ29kZSgxKSwgIiIpOworCisgIENoYW5nZVRvUm9vdERpcigpOworICBBU1NFUlRfREVB
VEgoX2V4aXQoMSksICIiKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE1peGVkU3R5
bGVzKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFk
c2FmZSI7CisgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOworICB0ZXN0aW5nOjpHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOworICBFWFBFQ1RfREVBVEgoX2V4aXQoMSks
ICIiKTsKK30KKworIyBpZiBHVEVTVF9IQVNfQ0xPTkUgJiYgR1RFU1RfSEFTX1BUSFJFQUQKKwor
bmFtZXNwYWNlIHsKKworYm9vbCBwdGhyZWFkX2ZsYWc7CisKK3ZvaWQgU2V0UHRocmVhZEZsYWco
KSB7CisgIHB0aHJlYWRfZmxhZyA9IHRydWU7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitURVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgRG9lc05vdEV4ZWN1dGVBdGZvcmtIb29rcykgeworICBpZiAo
IXRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yaykpIHsKKyAgICB0ZXN0aW5n
OjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOworICAgIHB0aHJl
YWRfZmxhZyA9IGZhbHNlOworICAgIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0Zm9yaygmU2V0UHRo
cmVhZEZsYWcsIE5VTEwsIE5VTEwpKTsKKyAgICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIiKTsK
KyAgICBBU1NFUlRfRkFMU0UocHRocmVhZF9mbGFnKTsKKyAgfQorfQorCisjIGVuZGlmICAvLyBH
VEVTVF9IQVNfQ0xPTkUgJiYgR1RFU1RfSEFTX1BUSFJFQUQKKworLy8gVGVzdHMgdGhhdCBhIG1l
dGhvZCBvZiBhbm90aGVyIGNsYXNzIGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KK1RFU1Rf
RihUZXN0Rm9yRGVhdGhUZXN0LCBNZXRob2RPZkFub3RoZXJDbGFzcykgeworICBjb25zdCBNYXlE
aWUgeCh0cnVlKTsKKyAgQVNTRVJUX0RFQVRIKHguTWVtYmVyRnVuY3Rpb24oKSwgIk1heURpZVxc
OlxcOk1lbWJlckZ1bmN0aW9uIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBnbG9iYWwgZnVuY3Rp
b24gY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3Qs
IEdsb2JhbEZ1bmN0aW9uKSB7CisgIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCAiR2xv
YmFsRnVuY3Rpb24iKTsKK30KKworLy8gVGVzdHMgdGhhdCBhbnkgdmFsdWUgY29udmVydGlibGUg
dG8gYW4gUkUgd29ya3MgYXMgYSBzZWNvbmQKKy8vIGFyZ3VtZW50IHRvIEVYUEVDVF9ERUFUSC4K
K1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBY2NlcHRzQW55dGhpbmdDb252ZXJ0aWJsZVRvUkUp
IHsKKyAgc3RhdGljIGNvbnN0IGNoYXIgcmVnZXhfY19zdHJbXSA9ICJHbG9iYWxGdW5jdGlvbiI7
CisgIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleF9jX3N0cik7CisKKyAgY29u
c3QgdGVzdGluZzo6aW50ZXJuYWw6OlJFIHJlZ2V4KHJlZ2V4X2Nfc3RyKTsKKyAgRVhQRUNUX0RF
QVRIKEdsb2JhbEZ1bmN0aW9uKCksIHJlZ2V4KTsKKworIyBpZiBHVEVTVF9IQVNfR0xPQkFMX1NU
UklORworCisgIGNvbnN0IDo6c3RyaW5nIHJlZ2V4X3N0cihyZWdleF9jX3N0cik7CisgIEVYUEVD
VF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleF9zdHIpOworCisjIGVuZGlmICAvLyBHVEVT
VF9IQVNfR0xPQkFMX1NUUklORworCisjIGlmICFHVEVTVF9VU0VTX1BDUkUKKworICBjb25zdCA6
OnN0ZDo6c3RyaW5nIHJlZ2V4X3N0ZF9zdHIocmVnZXhfY19zdHIpOworICBFWFBFQ1RfREVBVEgo
R2xvYmFsRnVuY3Rpb24oKSwgcmVnZXhfc3RkX3N0cik7CisKKyMgZW5kaWYgIC8vICFHVEVTVF9V
U0VTX1BDUkUKK30KKworLy8gVGVzdHMgdGhhdCBhIG5vbi12b2lkIGZ1bmN0aW9uIGNhbiBiZSB1
c2VkIGluIGEgZGVhdGggdGVzdC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBOb25Wb2lkRnVu
Y3Rpb24pIHsKKyAgQVNTRVJUX0RFQVRIKE5vblZvaWRGdW5jdGlvbigpLCAiTm9uVm9pZEZ1bmN0
aW9uIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgZnVuY3Rpb25zIHRoYXQgdGFrZSBwYXJhbWV0ZXIo
cykgY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3Qs
IEZ1bmN0aW9uV2l0aFBhcmFtZXRlcikgeworICBFWFBFQ1RfREVBVEgoRGllSWYodHJ1ZSksICJE
aWVJZlxcKFxcKSIpOworICBFWFBFQ1RfREVBVEgoRGllSWZMZXNzVGhhbigyLCAzKSwgIkRpZUlm
TGVzc1RoYW4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVBVEggY2FuIGJlIHVzZWQg
b3V0c2lkZSBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdCBmaXh0dXJlLgorVEVTVF9GKFRlc3RGb3JE
ZWF0aFRlc3QsIE91dHNpZGVGaXh0dXJlKSB7CisgIERlYXRoVGVzdFN1YnJvdXRpbmUoKTsKK30K
KworLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyBjYW4gYmUgZG9uZSBpbnNpZGUgYSBsb29wLgor
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEluc2lkZUxvb3ApIHsKKyAgZm9yIChpbnQgaSA9IDA7
IGkgPCA1OyBpKyspIHsKKyAgICBFWFBFQ1RfREVBVEgoRGllSWZMZXNzVGhhbigtMSwgaSksICJE
aWVJZkxlc3NUaGFuIikgPDwgIndoZXJlIGkgPT0gIiA8PCBpOworICB9Cit9CisKKy8vIFRlc3Rz
IHRoYXQgYSBjb21wb3VuZCBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0Lgor
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIENvbXBvdW5kU3RhdGVtZW50KSB7CisgIEVYUEVDVF9E
RUFUSCh7ICAvLyBOT0xJTlQKKyAgICBjb25zdCBpbnQgeCA9IDI7CisgICAgY29uc3QgaW50IHkg
PSB4ICsgMTsKKyAgICBEaWVJZkxlc3NUaGFuKHgsIHkpOworICB9LAorICAiRGllSWZMZXNzVGhh
biIpOworfQorCisvLyBUZXN0cyB0aGF0IGNvZGUgdGhhdCBkb2Vzbid0IGRpZSBjYXVzZXMgYSBk
ZWF0aCB0ZXN0IHRvIGZhaWwuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRG9lc05vdERpZSkg
eworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgoRGllSWYoZmFsc2UpLCAi
RGllSWYiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBkaWUiKTsKK30K
KworLy8gVGVzdHMgdGhhdCBhIGRlYXRoIHRlc3QgZmFpbHMgd2hlbiB0aGUgZXJyb3IgbWVzc2Fn
ZSBpc24ndCBleHBlY3RlZC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFcnJvck1lc3NhZ2VN
aXNtYXRjaCkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBF
WFBFQ1RfREVBVEgoRGllSWYodHJ1ZSksICJEaWVJZkxlc3NUaGFuIikgPDwgIkVuZCBvZiBkZWF0
aCB0ZXN0IG1lc3NhZ2UuIjsKKyAgfSwgImRpZWQgYnV0IG5vdCB3aXRoIGV4cGVjdGVkIGVycm9y
Iik7Cit9CisKKy8vIE9uIGV4aXQsICphYm9ydGVkIHdpbGwgYmUgdHJ1ZSBpZmYgdGhlIEVYUEVD
VF9ERUFUSCgpIHN0YXRlbWVudAorLy8gYWJvcnRlZCB0aGUgZnVuY3Rpb24uCit2b2lkIEV4cGVj
dERlYXRoVGVzdEhlbHBlcihib29sKiBhYm9ydGVkKSB7CisgICphYm9ydGVkID0gdHJ1ZTsKKyAg
RVhQRUNUX0RFQVRIKERpZUlmKGZhbHNlKSwgIkRpZUlmIik7ICAvLyBUaGlzIGFzc2VydGlvbiBz
aG91bGQgZmFpbC4KKyAgKmFib3J0ZWQgPSBmYWxzZTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBF
Q1RfREVBVEggZG9lc24ndCBhYm9ydCB0aGUgdGVzdCBvbiBmYWlsdXJlLgorVEVTVF9GKFRlc3RG
b3JEZWF0aFRlc3QsIEVYUEVDVF9ERUFUSCkgeworICBib29sIGFib3J0ZWQgPSB0cnVlOworICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFeHBlY3REZWF0aFRlc3RIZWxwZXIoJmFib3J0ZWQpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGRpZSIpOworICBFWFBFQ1RfRkFM
U0UoYWJvcnRlZCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQVRIIGRvZXMgYWJvcnQg
dGhlIHRlc3Qgb24gZmFpbHVyZS4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBU1NFUlRfREVB
VEgpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAg
Ly8gTk9MSU5UCisgICAgYWJvcnRlZCA9IHRydWU7CisgICAgQVNTRVJUX0RFQVRIKERpZUlmKGZh
bHNlKSwgIkRpZUlmIik7ICAvLyBUaGlzIGFzc2VydGlvbiBzaG91bGQgZmFpbC4KKyAgICBhYm9y
dGVkID0gZmFsc2U7CisgIH0sICJmYWlsZWQgdG8gZGllIik7CisgIEVYUEVDVF9UUlVFKGFib3J0
ZWQpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSCBldmFsdWF0ZXMgdGhlIGFyZ3Vt
ZW50cyBleGFjdGx5IG9uY2UuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU2luZ2xlRXZhbHVh
dGlvbikgeworICBpbnQgeCA9IDM7CisgIEVYUEVDVF9ERUFUSChEaWVJZigoKyt4KSA9PSA0KSwg
IkRpZUlmIik7CisKKyAgY29uc3QgY2hhciogcmVnZXggPSAiRGllSWYiOworICBjb25zdCBjaGFy
KiByZWdleF9zYXZlID0gcmVnZXg7CisgIEVYUEVDVF9ERUFUSChEaWVJZkxlc3NUaGFuKDMsIDQp
LCByZWdleCsrKTsKKyAgRVhQRUNUX0VRKHJlZ2V4X3NhdmUgKyAxLCByZWdleCk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgcnVuLWF3YXkgZGVhdGggdGVzdHMgYXJlIHJlcG9ydGVkIGFzIGZhaWx1cmVz
LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFJ1bmF3YXlJc0ZhaWx1cmUpIHsKKyAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKHN0YXRpY19jYXN0PHZvaWQ+KDApLCAiRm9v
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZGllLiIpOworfQorCisv
LyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHJlcG9ydCBleGVjdXRpbmcgJ3JldHVybicgaW4gdGhl
IHN0YXRlbWVudCBhcworLy8gZmFpbHVyZS4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBSZXR1
cm5Jc0ZhaWx1cmUpIHsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0RFQVRIKHJldHVy
biwgIkJhciIpLAorICAgICAgICAgICAgICAgICAgICAgICAiaWxsZWdhbCByZXR1cm4gaW4gdGVz
dCBzdGF0ZW1lbnQuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQlVHX0RFQVRIIHdv
cmtzIGFzIGV4cGVjdGVkLCB0aGF0IGlzLCB5b3UgY2FuIHN0cmVhbSBhCisvLyBtZXNzYWdlIHRv
IGl0LCBhbmQgaW4gZGVidWcgbW9kZSBpdDoKKy8vIDEuIEFzc2VydHMgb24gZGVhdGguCisvLyAy
LiBIYXMgbm8gc2lkZSBlZmZlY3QuCisvLworLy8gQW5kIGluIG9wdCBtb2RlLCBpdDoKKy8vIDEu
ICBIYXMgc2lkZSBlZmZlY3RzIGJ1dCBkb2VzIG5vdCBhc3NlcnQuCitURVNUX0YoVGVzdEZvckRl
YXRoVGVzdCwgVGVzdEV4cGVjdERlYnVnRGVhdGgpIHsKKyAgaW50IHNpZGVlZmZlY3QgPSAwOwor
CisgIC8vIFB1dCB0aGUgcmVnZXggaW4gYSBsb2NhbCB2YXJpYWJsZSB0byBtYWtlIHN1cmUgd2Ug
ZG9uJ3QgZ2V0IGFuICJ1bnVzZWQiCisgIC8vIHdhcm5pbmcgaW4gb3B0IG1vZGUuCisgIGNvbnN0
IGNoYXIqIHJlZ2V4ID0gImRlYXRoLipEaWVJbkRlYnVnRWxzZTEyIjsKKworICBFWFBFQ1RfREVC
VUdfREVBVEgoRGllSW5EZWJ1Z0Vsc2UxMigmc2lkZWVmZmVjdCksIHJlZ2V4KQorICAgICAgPDwg
Ik11c3QgYWNjZXB0IGEgc3RyZWFtZWQgbWVzc2FnZSI7CisKKyMgaWZkZWYgTkRFQlVHCisKKyAg
Ly8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgb2NjdXJzIGluIG9wdCBtb2RlIChzaWRlZWZm
ZWN0KS4KKyAgRVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0KTsKKworIyBlbHNlCisKKyAgLy8gQ2hl
Y2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgZG9lcyBub3Qgb2NjdXIgaW4gZGJnIG1vZGUgKG5vIHNp
ZGVlZmZlY3QpLgorICBFWFBFQ1RfRVEoMCwgc2lkZWVmZmVjdCk7CisKKyMgZW5kaWYKK30KKwor
Ly8gVGVzdHMgdGhhdCBBU1NFUlRfREVCVUdfREVBVEggd29ya3MgYXMgZXhwZWN0ZWQsIHRoYXQg
aXMsIHlvdSBjYW4gc3RyZWFtIGEKKy8vIG1lc3NhZ2UgdG8gaXQsIGFuZCBpbiBkZWJ1ZyBtb2Rl
IGl0OgorLy8gMS4gQXNzZXJ0cyBvbiBkZWF0aC4KKy8vIDIuIEhhcyBubyBzaWRlIGVmZmVjdC4K
Ky8vCisvLyBBbmQgaW4gb3B0IG1vZGUsIGl0OgorLy8gMS4gIEhhcyBzaWRlIGVmZmVjdHMgYnV0
IGRvZXMgbm90IGFzc2VydC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUZXN0QXNzZXJ0RGVi
dWdEZWF0aCkgeworICBpbnQgc2lkZWVmZmVjdCA9IDA7CisKKyAgQVNTRVJUX0RFQlVHX0RFQVRI
KERpZUluRGVidWdFbHNlMTIoJnNpZGVlZmZlY3QpLCAiZGVhdGguKkRpZUluRGVidWdFbHNlMTIi
KQorICAgICAgPDwgIk11c3QgYWNjZXB0IGEgc3RyZWFtZWQgbWVzc2FnZSI7CisKKyMgaWZkZWYg
TkRFQlVHCisKKyAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgb2NjdXJzIGluIG9wdCBt
b2RlIChzaWRlZWZmZWN0KS4KKyAgRVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0KTsKKworIyBlbHNl
CisKKyAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgZG9lcyBub3Qgb2NjdXIgaW4gZGJn
IG1vZGUgKG5vIHNpZGVlZmZlY3QpLgorICBFWFBFQ1RfRVEoMCwgc2lkZWVmZmVjdCk7CisKKyMg
ZW5kaWYKK30KKworIyBpZm5kZWYgTkRFQlVHCisKK3ZvaWQgRXhwZWN0RGVidWdEZWF0aEhlbHBl
cihib29sKiBhYm9ydGVkKSB7CisgICphYm9ydGVkID0gdHJ1ZTsKKyAgRVhQRUNUX0RFQlVHX0RF
QVRIKHJldHVybiwgIiIpIDw8ICJUaGlzIGlzIGV4cGVjdGVkIHRvIGZhaWwuIjsKKyAgKmFib3J0
ZWQgPSBmYWxzZTsKK30KKworIyAgaWYgR1RFU1RfT1NfV0lORE9XUworVEVTVChQb3BVcERlYXRo
VGVzdCwgRG9lc05vdFNob3dQb3BVcE9uQWJvcnQpIHsKKyAgcHJpbnRmKCJUaGlzIHRlc3Qgc2hv
dWxkIGJlIGNvbnNpZGVyZWQgZmFpbGluZyBpZiBpdCBzaG93cyAiCisgICAgICAgICAiYW55IHBv
cC11cCBkaWFsb2dzLlxuIik7CisgIGZmbHVzaChzdGRvdXQpOworCisgIEVYUEVDVF9ERUFUSCh7
CisgICAgdGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA9IGZhbHNlOworICAg
IGFib3J0KCk7CisgIH0sICIiKTsKK30KKyMgIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisK
Ky8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQlVHX0RFQVRIIGluIGRlYnVnIG1vZGUgZG9lcyBub3Qg
YWJvcnQKKy8vIHRoZSBmdW5jdGlvbi4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFeHBlY3RE
ZWJ1Z0RlYXRoRG9lc05vdEFib3J0KSB7CisgIGJvb2wgYWJvcnRlZCA9IHRydWU7CisgIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKEV4cGVjdERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7
CisgIEVYUEVDVF9GQUxTRShhYm9ydGVkKTsKK30KKwordm9pZCBBc3NlcnREZWJ1Z0RlYXRoSGVs
cGVyKGJvb2wqIGFib3J0ZWQpIHsKKyAgKmFib3J0ZWQgPSB0cnVlOworICBHVEVTVF9MT0dfKElO
Rk8pIDw8ICJCZWZvcmUgQVNTRVJUX0RFQlVHX0RFQVRIIjsKKyAgQVNTRVJUX0RFQlVHX0RFQVRI
KEdURVNUX0xPR18oSU5GTykgPDwgIkluIEFTU0VSVF9ERUJVR19ERUFUSCI7IHJldHVybiwgIiIp
CisgICAgICA8PCAiVGhpcyBpcyBleHBlY3RlZCB0byBmYWlsLiI7CisgIEdURVNUX0xPR18oSU5G
TykgPDwgIkFmdGVyIEFTU0VSVF9ERUJVR19ERUFUSCI7CisgICphYm9ydGVkID0gZmFsc2U7Cit9
CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQlVHX0RFQVRIIGluIGRlYnVnIG1vZGUgYWJvcnRz
IHRoZSBmdW5jdGlvbiBvbgorLy8gZmFpbHVyZS4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBB
c3NlcnREZWJ1Z0RlYXRoQWJvcnRzKSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7CisgIGFib3J0
ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBl
cigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKK1RFU1RfRihU
ZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzMikgeworICBzdGF0aWMgYm9v
bCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFz
c2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVFKGFib3J0
ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0
czMpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZhbHNlOworICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwgIiIpOwor
ICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFz
c2VydERlYnVnRGVhdGhBYm9ydHM0KSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7CisgIGFib3J0
ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBl
cigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKK1RFU1RfRihU
ZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzNSkgeworICBzdGF0aWMgYm9v
bCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFz
c2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVFKGFib3J0
ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0
czYpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZhbHNlOworICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwgIiIpOwor
ICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFz
c2VydERlYnVnRGVhdGhBYm9ydHM3KSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7CisgIGFib3J0
ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBl
cigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKK1RFU1RfRihU
ZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzOCkgeworICBzdGF0aWMgYm9v
bCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFz
c2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVFKGFib3J0
ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0
czkpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZhbHNlOworICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwgIiIpOwor
ICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFz
c2VydERlYnVnRGVhdGhBYm9ydHMxMCkgeworICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9y
dGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxw
ZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOworfQorCisjIGVuZGlm
ICAvLyBfTkRFQlVHCisKKy8vIFRlc3RzIHRoZSAqX0VYSVQgZmFtaWx5IG9mIG1hY3JvcywgdXNp
bmcgYSB2YXJpZXR5IG9mIHByZWRpY2F0ZXMuCitzdGF0aWMgdm9pZCBUZXN0RXhpdE1hY3Jvcygp
IHsKKyAgRVhQRUNUX0VYSVQoX2V4aXQoMSksICB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSwg
ICIiKTsKKyAgQVNTRVJUX0VYSVQoX2V4aXQoNDIpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSg0
MiksICIiKTsKKworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisKKyAgLy8gT2YgYWxsIHNpZ25hbHMg
ZWZmZWN0cyBvbiB0aGUgcHJvY2VzcyBleGl0IGNvZGUsIG9ubHkgdGhvc2Ugb2YgU0lHQUJSVAor
ICAvLyBhcmUgZG9jdW1lbnRlZCBvbiBXaW5kb3dzLgorICAvLyBTZWUgaHR0cHM6Ly9tc2RuLm1p
Y3Jvc29mdC5jb20vZW4tdXMvcXVlcnktYmkvbS9kd3d6a3Q0Yy4KKyAgRVhQRUNUX0VYSVQocmFp
c2UoU0lHQUJSVCksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDMpLCAiIikgPDwgImJfYXIiOwor
CisjIGVsaWYgIUdURVNUX09TX0ZVQ0hTSUEKKworICAvLyBGdWNoc2lhIGhhcyBubyB1bml4IHNp
Z25hbHMuCisgIEVYUEVDVF9FWElUKHJhaXNlKFNJR0tJTEwpLCB0ZXN0aW5nOjpLaWxsZWRCeVNp
Z25hbChTSUdLSUxMKSwgIiIpIDw8ICJmb28iOworICBBU1NFUlRfRVhJVChyYWlzZShTSUdVU1Iy
KSwgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHVVNSMiksICIiKSA8PCAiYmFyIjsKKworICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfRVhJVChfZXhpdCgw
KSwgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHU0VHViksICIiKQorICAgICAgPDwgIlRoaXMg
ZmFpbHVyZSBpcyBleHBlY3RlZCwgdG9vLiI7CisgIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0
ZWQsIHRvby4iKTsKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9FWElUKHJhaXNlKFNJR1NF
R1YpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgwKSwgIiIpCisgICAgICA8PCAiVGhpcyBmYWls
dXJlIGlzIGV4cGVjdGVkLiI7CisgIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIik7Cit9
CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFeGl0TWFjcm9zKSB7CisgIFRlc3RFeGl0TWFj
cm9zKCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFeGl0TWFjcm9zVXNpbmdGb3Jr
KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yaykgPSB0cnVlOwor
ICBUZXN0RXhpdE1hY3JvcygpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgSW52YWxp
ZFN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAicm9j
b2NvIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNU
X0RFQVRIKF9leGl0KDApLCAiIikgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4iOworICB9
LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgRGVhdGhUZXN0RmFpbGVkT3V0cHV0KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVh
dGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAorICAg
ICAgRVhQRUNUX0RFQVRIKERpZVdpdGhNZXNzYWdlKCJkZWF0aFxuIiksCisgICAgICAgICAgICAg
ICAgICAgImV4cGVjdGVkIG1lc3NhZ2UiKSwKKyAgICAgICJBY3R1YWwgbXNnOlxuIgorICAgICAg
IlsgIERFQVRIICAgXSBkZWF0aFxuIik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBE
ZWF0aFRlc3RVbmV4cGVjdGVkUmV0dXJuT3V0cHV0KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUco
ZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAor
ICAgICAgRVhQRUNUX0RFQVRIKHsKKyAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInJldHVybmlu
Z1xuIik7CisgICAgICAgICAgZmZsdXNoKHN0ZGVycik7CisgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9LCAiIiksCisgICAgICAiICAgIFJlc3VsdDogaWxsZWdhbCByZXR1cm4gaW4gdGVzdCBz
dGF0ZW1lbnQuXG4iCisgICAgICAiIEVycm9yIG1zZzpcbiIKKyAgICAgICJbICBERUFUSCAgIF0g
cmV0dXJuaW5nXG4iKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERlYXRoVGVzdEJh
ZEV4aXRDb2RlT3V0cHV0KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHls
ZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAorICAgICAgRVhQRUNUX0VY
SVQoRGllV2l0aE1lc3NhZ2UoImV4aXRpbmcgd2l0aCByYyAxXG4iKSwKKyAgICAgICAgICAgICAg
ICAgIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDMpLAorICAgICAgICAgICAgICAgICAgImV4cGVj
dGVkIG1lc3NhZ2UiKSwKKyAgICAgICIgICAgUmVzdWx0OiBkaWVkIGJ1dCBub3Qgd2l0aCBleHBl
Y3RlZCBleGl0IGNvZGU6XG4iCisgICAgICAiICAgICAgICAgICAgRXhpdGVkIHdpdGggZXhpdCBz
dGF0dXMgMVxuIgorICAgICAgIkFjdHVhbCBtc2c6XG4iCisgICAgICAiWyAgREVBVEggICBdIGV4
aXRpbmcgd2l0aCByYyAxXG4iKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERlYXRo
VGVzdE11bHRpTGluZU1hdGNoRmFpbCkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rl
c3Rfc3R5bGUpID0gImZhc3QiOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKKyAgICAgIEVY
UEVDVF9ERUFUSChEaWVXaXRoTWVzc2FnZSgibGluZSAxXG5saW5lIDJcbmxpbmUgM1xuIiksCisg
ICAgICAgICAgICAgICAgICAgImxpbmUgMVxueHl6XG5saW5lIDNcbiIpLAorICAgICAgIkFjdHVh
bCBtc2c6XG4iCisgICAgICAiWyAgREVBVEggICBdIGxpbmUgMVxuIgorICAgICAgIlsgIERFQVRI
ICAgXSBsaW5lIDJcbiIKKyAgICAgICJbICBERUFUSCAgIF0gbGluZSAzXG4iKTsKK30KKworVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIERlYXRoVGVzdE11bHRpTGluZU1hdGNoUGFzcykgeworICB0
ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOworICBFWFBFQ1Rf
REVBVEgoRGllV2l0aE1lc3NhZ2UoImxpbmUgMVxubGluZSAyXG5saW5lIDNcbiIpLAorICAgICAg
ICAgICAgICAgImxpbmUgMVxubGluZSAyXG5saW5lIDNcbiIpOworfQorCisvLyBBIERlYXRoVGVz
dEZhY3RvcnkgdGhhdCByZXR1cm5zIE1vY2tEZWF0aFRlc3RzLgorY2xhc3MgTW9ja0RlYXRoVGVz
dEZhY3RvcnkgOiBwdWJsaWMgRGVhdGhUZXN0RmFjdG9yeSB7CisgcHVibGljOgorICBNb2NrRGVh
dGhUZXN0RmFjdG9yeSgpOworICB2aXJ0dWFsIGJvb2wgQ3JlYXRlKGNvbnN0IGNoYXIqIHN0YXRl
bWVudCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpS
RSogcmVnZXgsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwgaW50IGxp
bmUsIERlYXRoVGVzdCoqIHRlc3QpOworCisgIC8vIFNldHMgdGhlIHBhcmFtZXRlcnMgZm9yIHN1
YnNlcXVlbnQgY2FsbHMgdG8gQ3JlYXRlLgorICB2b2lkIFNldFBhcmFtZXRlcnMoYm9vbCBjcmVh
dGUsIERlYXRoVGVzdDo6VGVzdFJvbGUgcm9sZSwKKyAgICAgICAgICAgICAgICAgICAgIGludCBz
dGF0dXMsIGJvb2wgcGFzc2VkKTsKKworICAvLyBBY2Nlc3NvcnMuCisgIGludCBBc3N1bWVSb2xl
Q2FsbHMoKSBjb25zdCB7IHJldHVybiBhc3N1bWVfcm9sZV9jYWxsc187IH0KKyAgaW50IFdhaXRD
YWxscygpIGNvbnN0IHsgcmV0dXJuIHdhaXRfY2FsbHNfOyB9CisgIHNpemVfdCBQYXNzZWRDYWxs
cygpIGNvbnN0IHsgcmV0dXJuIHBhc3NlZF9hcmdzXy5zaXplKCk7IH0KKyAgYm9vbCBQYXNzZWRB
cmd1bWVudChpbnQgbikgY29uc3QgeyByZXR1cm4gcGFzc2VkX2FyZ3NfW25dOyB9CisgIHNpemVf
dCBBYm9ydENhbGxzKCkgY29uc3QgeyByZXR1cm4gYWJvcnRfYXJnc18uc2l6ZSgpOyB9CisgIERl
YXRoVGVzdDo6QWJvcnRSZWFzb24gQWJvcnRBcmd1bWVudChpbnQgbikgY29uc3QgeworICAgIHJl
dHVybiBhYm9ydF9hcmdzX1tuXTsKKyAgfQorICBib29sIFRlc3REZWxldGVkKCkgY29uc3QgeyBy
ZXR1cm4gdGVzdF9kZWxldGVkXzsgfQorCisgcHJpdmF0ZToKKyAgZnJpZW5kIGNsYXNzIE1vY2tE
ZWF0aFRlc3Q7CisgIC8vIElmIHRydWUsIENyZWF0ZSB3aWxsIHJldHVybiBhIE1vY2tEZWF0aFRl
c3Q7IG90aGVyd2lzZSBpdCByZXR1cm5zCisgIC8vIE5VTEwuCisgIGJvb2wgY3JlYXRlXzsKKyAg
Ly8gVGhlIHZhbHVlIGEgTW9ja0RlYXRoVGVzdCB3aWxsIHJldHVybiBmcm9tIGl0cyBBc3N1bWVS
b2xlIG1ldGhvZC4KKyAgRGVhdGhUZXN0OjpUZXN0Um9sZSByb2xlXzsKKyAgLy8gVGhlIHZhbHVl
IGEgTW9ja0RlYXRoVGVzdCB3aWxsIHJldHVybiBmcm9tIGl0cyBXYWl0IG1ldGhvZC4KKyAgaW50
IHN0YXR1c187CisgIC8vIFRoZSB2YWx1ZSBhIE1vY2tEZWF0aFRlc3Qgd2lsbCByZXR1cm4gZnJv
bSBpdHMgUGFzc2VkIG1ldGhvZC4KKyAgYm9vbCBwYXNzZWRfOworCisgIC8vIE51bWJlciBvZiB0
aW1lcyBBc3N1bWVSb2xlIHdhcyBjYWxsZWQuCisgIGludCBhc3N1bWVfcm9sZV9jYWxsc187Cisg
IC8vIE51bWJlciBvZiB0aW1lcyBXYWl0IHdhcyBjYWxsZWQuCisgIGludCB3YWl0X2NhbGxzXzsK
KyAgLy8gVGhlIGFyZ3VtZW50cyB0byB0aGUgY2FsbHMgdG8gUGFzc2VkIHNpbmNlIHRoZSBsYXN0
IGNhbGwgdG8KKyAgLy8gU2V0UGFyYW1ldGVycy4KKyAgc3RkOjp2ZWN0b3I8Ym9vbD4gcGFzc2Vk
X2FyZ3NfOworICAvLyBUaGUgYXJndW1lbnRzIHRvIHRoZSBjYWxscyB0byBBYm9ydCBzaW5jZSB0
aGUgbGFzdCBjYWxsIHRvCisgIC8vIFNldFBhcmFtZXRlcnMuCisgIHN0ZDo6dmVjdG9yPERlYXRo
VGVzdDo6QWJvcnRSZWFzb24+IGFib3J0X2FyZ3NfOworICAvLyBUcnVlIGlmIHRoZSBsYXN0IE1v
Y2tEZWF0aFRlc3QgcmV0dXJuZWQgYnkgQ3JlYXRlIGhhcyBiZWVuCisgIC8vIGRlbGV0ZWQuCisg
IGJvb2wgdGVzdF9kZWxldGVkXzsKK307CisKKworLy8gQSBEZWF0aFRlc3QgaW1wbGVtZW50YXRp
b24gdXNlZnVsIGluIHRlc3RpbmcuICBJdCByZXR1cm5zIHZhbHVlcyBzZXQKKy8vIGF0IGl0cyBj
cmVhdGlvbiBmcm9tIGl0cyB2YXJpb3VzIGluaGVyaXRlZCBEZWF0aFRlc3QgbWV0aG9kcywgYW5k
CisvLyByZXBvcnRzIGNhbGxzIHRvIHRob3NlIG1ldGhvZHMgdG8gaXRzIHBhcmVudCBNb2NrRGVh
dGhUZXN0RmFjdG9yeQorLy8gb2JqZWN0LgorY2xhc3MgTW9ja0RlYXRoVGVzdCA6IHB1YmxpYyBE
ZWF0aFRlc3QgeworIHB1YmxpYzoKKyAgTW9ja0RlYXRoVGVzdChNb2NrRGVhdGhUZXN0RmFjdG9y
eSAqcGFyZW50LAorICAgICAgICAgICAgICAgIFRlc3RSb2xlIHJvbGUsIGludCBzdGF0dXMsIGJv
b2wgcGFzc2VkKSA6CisgICAgICBwYXJlbnRfKHBhcmVudCksIHJvbGVfKHJvbGUpLCBzdGF0dXNf
KHN0YXR1cyksIHBhc3NlZF8ocGFzc2VkKSB7CisgIH0KKyAgdmlydHVhbCB+TW9ja0RlYXRoVGVz
dCgpIHsKKyAgICBwYXJlbnRfLT50ZXN0X2RlbGV0ZWRfID0gdHJ1ZTsKKyAgfQorICB2aXJ0dWFs
IFRlc3RSb2xlIEFzc3VtZVJvbGUoKSB7CisgICAgKytwYXJlbnRfLT5hc3N1bWVfcm9sZV9jYWxs
c187CisgICAgcmV0dXJuIHJvbGVfOworICB9CisgIHZpcnR1YWwgaW50IFdhaXQoKSB7CisgICAg
KytwYXJlbnRfLT53YWl0X2NhbGxzXzsKKyAgICByZXR1cm4gc3RhdHVzXzsKKyAgfQorICB2aXJ0
dWFsIGJvb2wgUGFzc2VkKGJvb2wgZXhpdF9zdGF0dXNfb2spIHsKKyAgICBwYXJlbnRfLT5wYXNz
ZWRfYXJnc18ucHVzaF9iYWNrKGV4aXRfc3RhdHVzX29rKTsKKyAgICByZXR1cm4gcGFzc2VkXzsK
KyAgfQorICB2aXJ0dWFsIHZvaWQgQWJvcnQoQWJvcnRSZWFzb24gcmVhc29uKSB7CisgICAgcGFy
ZW50Xy0+YWJvcnRfYXJnc18ucHVzaF9iYWNrKHJlYXNvbik7CisgIH0KKworIHByaXZhdGU6Cisg
IE1vY2tEZWF0aFRlc3RGYWN0b3J5KiBjb25zdCBwYXJlbnRfOworICBjb25zdCBUZXN0Um9sZSBy
b2xlXzsKKyAgY29uc3QgaW50IHN0YXR1c187CisgIGNvbnN0IGJvb2wgcGFzc2VkXzsKK307CisK
KworLy8gTW9ja0RlYXRoVGVzdEZhY3RvcnkgY29uc3RydWN0b3IuCitNb2NrRGVhdGhUZXN0RmFj
dG9yeTo6TW9ja0RlYXRoVGVzdEZhY3RvcnkoKQorICAgIDogY3JlYXRlXyh0cnVlKSwKKyAgICAg
IHJvbGVfKERlYXRoVGVzdDo6T1ZFUlNFRV9URVNUKSwKKyAgICAgIHN0YXR1c18oMCksCisgICAg
ICBwYXNzZWRfKHRydWUpLAorICAgICAgYXNzdW1lX3JvbGVfY2FsbHNfKDApLAorICAgICAgd2Fp
dF9jYWxsc18oMCksCisgICAgICBwYXNzZWRfYXJnc18oKSwKKyAgICAgIGFib3J0X2FyZ3NfKCkg
eworfQorCisKKy8vIFNldHMgdGhlIHBhcmFtZXRlcnMgZm9yIHN1YnNlcXVlbnQgY2FsbHMgdG8g
Q3JlYXRlLgordm9pZCBNb2NrRGVhdGhUZXN0RmFjdG9yeTo6U2V0UGFyYW1ldGVycyhib29sIGNy
ZWF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVhdGhUZXN0
OjpUZXN0Um9sZSByb2xlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgc3RhdHVzLCBib29sIHBhc3NlZCkgeworICBjcmVhdGVfID0gY3JlYXRlOworICByb2xl
XyA9IHJvbGU7CisgIHN0YXR1c18gPSBzdGF0dXM7CisgIHBhc3NlZF8gPSBwYXNzZWQ7CisKKyAg
YXNzdW1lX3JvbGVfY2FsbHNfID0gMDsKKyAgd2FpdF9jYWxsc18gPSAwOworICBwYXNzZWRfYXJn
c18uY2xlYXIoKTsKKyAgYWJvcnRfYXJnc18uY2xlYXIoKTsKK30KKworCisvLyBTZXRzIHRlc3Qg
dG8gTlVMTCAoaWYgY3JlYXRlXyBpcyBmYWxzZSkgb3IgdG8gdGhlIGFkZHJlc3Mgb2YgYSBuZXcK
Ky8vIE1vY2tEZWF0aFRlc3Qgb2JqZWN0IHdpdGggcGFyYW1ldGVycyB0YWtlbiBmcm9tIHRoZSBs
YXN0IGNhbGwKKy8vIHRvIFNldFBhcmFtZXRlcnMgKGlmIGNyZWF0ZV8gaXMgdHJ1ZSkuICBBbHdh
eXMgcmV0dXJucyB0cnVlLgorYm9vbCBNb2NrRGVhdGhUZXN0RmFjdG9yeTo6Q3JlYXRlKGNvbnN0
IGNoYXIqIC8qc3RhdGVtZW50Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UkUqIC8qcmVnZXgqLywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKmZpbGUqLywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgLypsaW5lKi8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRGVhdGhUZXN0KiogdGVzdCkgeworICB0ZXN0X2RlbGV0ZWRfID0gZmFsc2U7
CisgIGlmIChjcmVhdGVfKSB7CisgICAgKnRlc3QgPSBuZXcgTW9ja0RlYXRoVGVzdCh0aGlzLCBy
b2xlXywgc3RhdHVzXywgcGFzc2VkXyk7CisgIH0gZWxzZSB7CisgICAgKnRlc3QgPSBOVUxMOwor
ICB9CisgIHJldHVybiB0cnVlOworfQorCisvLyBBIHRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyB0
aGUgbG9naWMgb2YgdGhlIEdURVNUX0RFQVRIX1RFU1RfIG1hY3JvLgorLy8gSXQgaW5zdGFsbHMg
YSBNb2NrRGVhdGhUZXN0RmFjdG9yeSB0aGF0IGlzIHVzZWQgZm9yIHRoZSBkdXJhdGlvbgorLy8g
b2YgdGhlIHRlc3QgY2FzZS4KK2NsYXNzIE1hY3JvTG9naWNEZWF0aFRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICBzdGF0aWMgdGVzdGluZzo6aW50ZXJuYWw6OlJl
cGxhY2VEZWF0aFRlc3RGYWN0b3J5KiByZXBsYWNlcl87CisgIHN0YXRpYyBNb2NrRGVhdGhUZXN0
RmFjdG9yeSogZmFjdG9yeV87CisKKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKKyAg
ICBmYWN0b3J5XyA9IG5ldyBNb2NrRGVhdGhUZXN0RmFjdG9yeTsKKyAgICByZXBsYWNlcl8gPSBu
ZXcgdGVzdGluZzo6aW50ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KGZhY3RvcnlfKTsK
KyAgfQorCisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7CisgICAgZGVsZXRlIHJl
cGxhY2VyXzsKKyAgICByZXBsYWNlcl8gPSBOVUxMOworICAgIGRlbGV0ZSBmYWN0b3J5XzsKKyAg
ICBmYWN0b3J5XyA9IE5VTEw7CisgIH0KKworICAvLyBSdW5zIGEgZGVhdGggdGVzdCB0aGF0IGJy
ZWFrcyB0aGUgcnVsZXMgYnkgcmV0dXJuaW5nLiAgU3VjaCBhIGRlYXRoCisgIC8vIHRlc3QgY2Fu
bm90IGJlIHJ1biBkaXJlY3RseSBmcm9tIGEgdGVzdCByb3V0aW5lIHRoYXQgdXNlcyBhCisgIC8v
IE1vY2tEZWF0aFRlc3QsIG9yIHRoZSByZW1haW5kZXIgb2YgdGhlIHJvdXRpbmUgd2lsbCBub3Qg
YmUgZXhlY3V0ZWQuCisgIHN0YXRpYyB2b2lkIFJ1blJldHVybmluZ0RlYXRoVGVzdChib29sKiBm
bGFnKSB7CisgICAgQVNTRVJUX0RFQVRIKHsgIC8vIE5PTElOVAorICAgICAgKmZsYWcgPSB0cnVl
OworICAgICAgcmV0dXJuOworICAgIH0sICIiKTsKKyAgfQorfTsKKwordGVzdGluZzo6aW50ZXJu
YWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KiBNYWNyb0xvZ2ljRGVhdGhUZXN0OjpyZXBsYWNl
cl8KKyAgICA9IE5VTEw7CitNb2NrRGVhdGhUZXN0RmFjdG9yeSogTWFjcm9Mb2dpY0RlYXRoVGVz
dDo6ZmFjdG9yeV8gPSBOVUxMOworCisKKy8vIFRlc3QgdGhhdCBub3RoaW5nIGhhcHBlbnMgd2hl
biB0aGUgZmFjdG9yeSBkb2Vzbid0IHJldHVybiBhIERlYXRoVGVzdDoKK1RFU1RfRihNYWNyb0xv
Z2ljRGVhdGhUZXN0LCBOb3RoaW5nSGFwcGVucykgeworICBib29sIGZsYWcgPSBmYWxzZTsKKyAg
ZmFjdG9yeV8tPlNldFBhcmFtZXRlcnMoZmFsc2UsIERlYXRoVGVzdDo6T1ZFUlNFRV9URVNULCAw
LCB0cnVlKTsKKyAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7CisgIEVYUEVDVF9GQUxT
RShmbGFnKTsKKyAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5Bc3N1bWVSb2xlQ2FsbHMoKSk7Cisg
IEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+V2FpdENhbGxzKCkpOworICBFWFBFQ1RfRVEoMFUsIGZh
Y3RvcnlfLT5QYXNzZWRDYWxscygpKTsKKyAgRVhQRUNUX0VRKDBVLCBmYWN0b3J5Xy0+QWJvcnRD
YWxscygpKTsKKyAgRVhQRUNUX0ZBTFNFKGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsKK30KKwor
Ly8gVGVzdCB0aGF0IHRoZSBwYXJlbnQgcHJvY2VzcyBkb2Vzbid0IHJ1biB0aGUgZGVhdGggdGVz
dCBjb2RlLAorLy8gYW5kIHRoYXQgdGhlIFBhc3NlZCBtZXRob2QgcmV0dXJucyBmYWxzZSB3aGVu
IHRoZSAoc2ltdWxhdGVkKQorLy8gY2hpbGQgcHJvY2VzcyBleGl0cyB3aXRoIHN0YXR1cyAwOgor
VEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxkRXhpdHNTdWNjZXNzZnVsbHkpIHsKKyAg
Ym9vbCBmbGFnID0gZmFsc2U7CisgIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJzKHRydWUsIERlYXRo
VGVzdDo6T1ZFUlNFRV9URVNULCAwLCB0cnVlKTsKKyAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0cnVl
LCAiIik7CisgIEVYUEVDVF9GQUxTRShmbGFnKTsKKyAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5B
c3N1bWVSb2xlQ2FsbHMoKSk7CisgIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+V2FpdENhbGxzKCkp
OworICBBU1NFUlRfRVEoMVUsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKKyAgRVhQRUNUX0ZB
TFNFKGZhY3RvcnlfLT5QYXNzZWRBcmd1bWVudCgwKSk7CisgIEVYUEVDVF9FUSgwVSwgZmFjdG9y
eV8tPkFib3J0Q2FsbHMoKSk7CisgIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgp
KTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgUGFzc2VkIG1ldGhvZCB3YXMgZ2l2ZW4gdGhlIGFy
Z3VtZW50ICJ0cnVlIiB3aGVuCisvLyB0aGUgKHNpbXVsYXRlZCkgY2hpbGQgcHJvY2VzcyBleGl0
cyB3aXRoIHN0YXR1cyAxOgorVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxkRXhpdHNV
bnN1Y2Nlc3NmdWxseSkgeworICBib29sIGZsYWcgPSBmYWxzZTsKKyAgZmFjdG9yeV8tPlNldFBh
cmFtZXRlcnModHJ1ZSwgRGVhdGhUZXN0OjpPVkVSU0VFX1RFU1QsIDEsIHRydWUpOworICBFWFBF
Q1RfREVBVEgoZmxhZyA9IHRydWUsICIiKTsKKyAgRVhQRUNUX0ZBTFNFKGZsYWcpOworICBFWFBF
Q1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKKyAgRVhQRUNUX0VRKDEsIGZh
Y3RvcnlfLT5XYWl0Q2FsbHMoKSk7CisgIEFTU0VSVF9FUSgxVSwgZmFjdG9yeV8tPlBhc3NlZENh
bGxzKCkpOworICBFWFBFQ1RfVFJVRShmYWN0b3J5Xy0+UGFzc2VkQXJndW1lbnQoMCkpOworICBF
WFBFQ1RfRVEoMFUsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOworICBFWFBFQ1RfVFJVRShmYWN0
b3J5Xy0+VGVzdERlbGV0ZWQoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIChzaW11bGF0ZWQp
IGNoaWxkIHByb2Nlc3MgZXhlY3V0ZXMgdGhlIGRlYXRoIHRlc3QKKy8vIGNvZGUsIGFuZCBpcyBh
Ym9ydGVkIHdpdGggdGhlIGNvcnJlY3QgQWJvcnRSZWFzb24gaWYgaXQKKy8vIGV4ZWN1dGVzIGEg
cmV0dXJuIHN0YXRlbWVudC4KK1RFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBDaGlsZFBlcmZv
cm1zUmV0dXJuKSB7CisgIGJvb2wgZmxhZyA9IGZhbHNlOworICBmYWN0b3J5Xy0+U2V0UGFyYW1l
dGVycyh0cnVlLCBEZWF0aFRlc3Q6OkVYRUNVVEVfVEVTVCwgMCwgdHJ1ZSk7CisgIFJ1blJldHVy
bmluZ0RlYXRoVGVzdCgmZmxhZyk7CisgIEVYUEVDVF9UUlVFKGZsYWcpOworICBFWFBFQ1RfRVEo
MSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKKyAgRVhQRUNUX0VRKDAsIGZhY3Rvcnlf
LT5XYWl0Q2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkp
OworICBFWFBFQ1RfRVEoMVUsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOworICBFWFBFQ1RfRVEo
RGVhdGhUZXN0OjpURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQsCisgICAgICAgICAg
ICBmYWN0b3J5Xy0+QWJvcnRBcmd1bWVudCgwKSk7CisgIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5U
ZXN0RGVsZXRlZCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgKHNpbXVsYXRlZCkgY2hpbGQg
cHJvY2VzcyBpcyBhYm9ydGVkIHdpdGggdGhlCisvLyBjb3JyZWN0IEFib3J0UmVhc29uIGlmIGl0
IGRvZXMgbm90IGRpZS4KK1RFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBDaGlsZERvZXNOb3RE
aWUpIHsKKyAgYm9vbCBmbGFnID0gZmFsc2U7CisgIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJzKHRy
dWUsIERlYXRoVGVzdDo6RVhFQ1VURV9URVNULCAwLCB0cnVlKTsKKyAgRVhQRUNUX0RFQVRIKGZs
YWcgPSB0cnVlLCAiIik7CisgIEVYUEVDVF9UUlVFKGZsYWcpOworICBFWFBFQ1RfRVEoMSwgZmFj
dG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKKyAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5XYWl0
Q2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOworICAv
LyBUaGlzIHRpbWUgdGhlcmUgYXJlIHR3byBjYWxscyB0byBBYm9ydDogb25lIHNpbmNlIHRoZSB0
ZXN0IGRpZG4ndAorICAvLyBkaWUsIGFuZCBhbm90aGVyIGZyb20gdGhlIFJldHVyblNlbnRpbmVs
IHdoZW4gaXQncyBkZXN0cm95ZWQuICBUaGUKKyAgLy8gc2VudGluZWwgbm9ybWFsbHkgaXNuJ3Qg
ZGVzdHJveWVkIGlmIGEgdGVzdCBkb2Vzbid0IGRpZSwgc2luY2UKKyAgLy8gX2V4aXQoMikgaXMg
Y2FsbGVkIGluIHRoYXQgY2FzZSBieSBGb3JraW5nRGVhdGhUZXN0LCBidXQgbm90IGJ5CisgIC8v
IG91ciBNb2NrRGVhdGhUZXN0LgorICBBU1NFUlRfRVEoMlUsIGZhY3RvcnlfLT5BYm9ydENhbGxz
KCkpOworICBFWFBFQ1RfRVEoRGVhdGhUZXN0OjpURVNUX0RJRF9OT1RfRElFLAorICAgICAgICAg
ICAgZmFjdG9yeV8tPkFib3J0QXJndW1lbnQoMCkpOworICBFWFBFQ1RfRVEoRGVhdGhUZXN0OjpU
RVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQsCisgICAgICAgICAgICBmYWN0b3J5Xy0+
QWJvcnRBcmd1bWVudCgxKSk7CisgIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgp
KTsKK30KKworLy8gVGVzdHMgdGhhdCBhIHN1Y2Nlc3NmdWwgZGVhdGggdGVzdCBkb2VzIG5vdCBy
ZWdpc3RlciBhIHN1Y2Nlc3NmdWwKKy8vIHRlc3QgcGFydC4KK1RFU1QoU3VjY2Vzc1JlZ2lzdHJh
dGlvbkRlYXRoVGVzdCwgTm9TdWNjZXNzUGFydCkgeworICBFWFBFQ1RfREVBVEgoX2V4aXQoMSks
ICIiKTsKKyAgRVhQRUNUX0VRKDAsIEdldFVuaXRUZXN0SW1wbCgpLT5jdXJyZW50X3Rlc3RfcmVz
dWx0KCktPnRvdGFsX3BhcnRfY291bnQoKSk7Cit9CisKK1RFU1QoU3RyZWFtaW5nQXNzZXJ0aW9u
c0RlYXRoVGVzdCwgRGVhdGhUZXN0KSB7CisgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8
ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOworICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIiKSA8PCAi
dW5leHBlY3RlZCBmYWlsdXJlIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9M
SU5UCisgICAgRVhQRUNUX0RFQVRIKF9leGl0KDApLCAiIikgPDwgImV4cGVjdGVkIGZhaWx1cmUi
OworICB9LCAiZXhwZWN0ZWQgZmFpbHVyZSIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAv
LyBOT0xJTlQKKyAgICBBU1NFUlRfREVBVEgoX2V4aXQoMCksICIiKSA8PCAiZXhwZWN0ZWQgZmFp
bHVyZSI7CisgIH0sICJleHBlY3RlZCBmYWlsdXJlIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgR2V0
TGFzdEVycm5vRGVzY3JpcHRpb24gcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgd2hlbiB0aGUKKy8v
IGxhc3QgZXJyb3IgaXMgMCBhbmQgbm9uLWVtcHR5IHN0cmluZyB3aGVuIGl0IGlzIG5vbi16ZXJv
LgorVEVTVChHZXRMYXN0RXJybm9EZXNjcmlwdGlvbiwgR2V0TGFzdEVycm5vRGVzY3JpcHRpb25X
b3JrcykgeworICBlcnJubyA9IEVOT0VOVDsKKyAgRVhQRUNUX1NUUk5FKCIiLCBHZXRMYXN0RXJy
bm9EZXNjcmlwdGlvbigpLmNfc3RyKCkpOworICBlcnJubyA9IDA7CisgIEVYUEVDVF9TVFJFUSgi
IiwgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKS5jX3N0cigpKTsKK30KKworIyBpZiBHVEVTVF9P
U19XSU5ET1dTCitURVNUKEF1dG9IYW5kbGVUZXN0LCBBdXRvSGFuZGxlV29ya3MpIHsKKyAgSEFO
RExFIGhhbmRsZSA9IDo6Q3JlYXRlRXZlbnQoTlVMTCwgRkFMU0UsIEZBTFNFLCBOVUxMKTsKKyAg
QVNTRVJUX05FKElOVkFMSURfSEFORExFX1ZBTFVFLCBoYW5kbGUpOworCisgIC8vIFRlc3RzIHRo
YXQgdGhlIEF1dG9IYW5kbGUgaXMgY29ycmVjdGx5IGluaXRpYWxpemVkIHdpdGggYSBoYW5kbGUu
CisgIHRlc3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxlIGF1dG9faGFuZGxlKGhhbmRsZSk7Cisg
IEVYUEVDVF9FUShoYW5kbGUsIGF1dG9faGFuZGxlLkdldCgpKTsKKworICAvLyBUZXN0cyB0aGF0
IFJlc2V0IGFzc2lnbnMgSU5WQUxJRF9IQU5ETEVfVkFMVUUuCisgIC8vIE5vdGUgdGhhdCB0aGlz
IGNhbm5vdCB2ZXJpZnkgd2hldGhlciB0aGUgb3JpZ2luYWwgaGFuZGxlIGlzIGNsb3NlZC4KKyAg
YXV0b19oYW5kbGUuUmVzZXQoKTsKKyAgRVhQRUNUX0VRKElOVkFMSURfSEFORExFX1ZBTFVFLCBh
dXRvX2hhbmRsZS5HZXQoKSk7CisKKyAgLy8gVGVzdHMgdGhhdCBSZXNldCBhc3NpZ25zIHRoZSBu
ZXcgaGFuZGxlLgorICAvLyBOb3RlIHRoYXQgdGhpcyBjYW5ub3QgdmVyaWZ5IHdoZXRoZXIgdGhl
IG9yaWdpbmFsIGhhbmRsZSBpcyBjbG9zZWQuCisgIGhhbmRsZSA9IDo6Q3JlYXRlRXZlbnQoTlVM
TCwgRkFMU0UsIEZBTFNFLCBOVUxMKTsKKyAgQVNTRVJUX05FKElOVkFMSURfSEFORExFX1ZBTFVF
LCBoYW5kbGUpOworICBhdXRvX2hhbmRsZS5SZXNldChoYW5kbGUpOworICBFWFBFQ1RfRVEoaGFu
ZGxlLCBhdXRvX2hhbmRsZS5HZXQoKSk7CisKKyAgLy8gVGVzdHMgdGhhdCBBdXRvSGFuZGxlIGNv
bnRhaW5zIElOVkFMSURfSEFORExFX1ZBTFVFIGJ5IGRlZmF1bHQuCisgIHRlc3Rpbmc6OmludGVy
bmFsOjpBdXRvSGFuZGxlIGF1dG9faGFuZGxlMjsKKyAgRVhQRUNUX0VRKElOVkFMSURfSEFORExF
X1ZBTFVFLCBhdXRvX2hhbmRsZTIuR2V0KCkpOworfQorIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lO
RE9XUworCisjIGlmIEdURVNUX09TX1dJTkRPV1MKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCBC
aWdnZXN0UGFyc2FibGU7Cit0eXBlZGVmIHNpZ25lZCBfX2ludDY0IEJpZ2dlc3RTaWduZWRQYXJz
YWJsZTsKKyMgZWxzZQordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgQmlnZ2VzdFBhcnNhYmxl
OwordHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIEJpZ2dlc3RTaWduZWRQYXJzYWJsZTsKKyMgZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworLy8gV2UgY2Fubm90IHVzZSBzdGQ6Om51bWVyaWNf
bGltaXRzPFQ+OjptYXgoKSBhcyBpdCBjbGFzaGVzIHdpdGggdGhlCisvLyBtYXgoKSBtYWNybyBk
ZWZpbmVkIGJ5IDx3aW5kb3dzLmg+LgorY29uc3QgQmlnZ2VzdFBhcnNhYmxlIGtCaWdnZXN0UGFy
c2FibGVNYXggPSBVTExPTkdfTUFYOworY29uc3QgQmlnZ2VzdFNpZ25lZFBhcnNhYmxlIGtCaWdn
ZXN0U2lnbmVkUGFyc2FibGVNYXggPSBMTE9OR19NQVg7CisKK1RFU1QoUGFyc2VOYXR1cmFsTnVt
YmVyVGVzdCwgUmVqZWN0c0ludmFsaWRGb3JtYXQpIHsKKyAgQmlnZ2VzdFBhcnNhYmxlIHJlc3Vs
dCA9IDA7CisKKyAgLy8gUmVqZWN0cyBub24tbnVtYmVycy4KKyAgRVhQRUNUX0ZBTFNFKFBhcnNl
TmF0dXJhbE51bWJlcigibm9uLW51bWJlciBzdHJpbmciLCAmcmVzdWx0KSk7CisKKyAgLy8gUmVq
ZWN0cyBudW1iZXJzIHdpdGggd2hpdGVzcGFjZSBwcmVmaXguCisgIEVYUEVDVF9GQUxTRShQYXJz
ZU5hdHVyYWxOdW1iZXIoIiAxMjMiLCAmcmVzdWx0KSk7CisKKyAgLy8gUmVqZWN0cyBuZWdhdGl2
ZSBudW1iZXJzLgorICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCItMTIzIiwgJnJl
c3VsdCkpOworCisgIC8vIFJlamVjdHMgbnVtYmVycyBzdGFydGluZyB3aXRoIGEgcGx1cyBzaWdu
LgorICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCIrMTIzIiwgJnJlc3VsdCkpOwor
ICBlcnJubyA9IDA7Cit9CisKK1RFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgUmVqZWN0c092
ZXJmbG93bk51bWJlcnMpIHsKKyAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7CisKKyAgRVhQ
RUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcigiOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkiLCAm
cmVzdWx0KSk7CisKKyAgc2lnbmVkIGNoYXIgY2hhcl9yZXN1bHQgPSAwOworICBFWFBFQ1RfRkFM
U0UoUGFyc2VOYXR1cmFsTnVtYmVyKCIyMDAiLCAmY2hhcl9yZXN1bHQpKTsKKyAgZXJybm8gPSAw
OworfQorCitURVNUKFBhcnNlTmF0dXJhbE51bWJlclRlc3QsIEFjY2VwdHNWYWxpZE51bWJlcnMp
IHsKKyAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7CisKKyAgcmVzdWx0ID0gMDsKKyAgQVNT
RVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKCIxMjMiLCAmcmVzdWx0KSk7CisgIEVYUEVDVF9F
USgxMjNVLCByZXN1bHQpOworCisgIC8vIENoZWNrIDAgYXMgYW4gZWRnZSBjYXNlLgorICByZXN1
bHQgPSAxOworICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjAiLCAmcmVzdWx0KSk7
CisgIEVYUEVDVF9FUSgwVSwgcmVzdWx0KTsKKworICByZXN1bHQgPSAxOworICBBU1NFUlRfVFJV
RShQYXJzZU5hdHVyYWxOdW1iZXIoIjAwMDAwIiwgJnJlc3VsdCkpOworICBFWFBFQ1RfRVEoMFUs
IHJlc3VsdCk7Cit9CisKK1RFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgQWNjZXB0c1R5cGVM
aW1pdHMpIHsKKyAgTWVzc2FnZSBtc2c7CisgIG1zZyA8PCBrQmlnZ2VzdFBhcnNhYmxlTWF4Owor
CisgIEJpZ2dlc3RQYXJzYWJsZSByZXN1bHQgPSAwOworICBFWFBFQ1RfVFJVRShQYXJzZU5hdHVy
YWxOdW1iZXIobXNnLkdldFN0cmluZygpLCAmcmVzdWx0KSk7CisgIEVYUEVDVF9FUShrQmlnZ2Vz
dFBhcnNhYmxlTWF4LCByZXN1bHQpOworCisgIE1lc3NhZ2UgbXNnMjsKKyAgbXNnMiA8PCBrQmln
Z2VzdFNpZ25lZFBhcnNhYmxlTWF4OworCisgIEJpZ2dlc3RTaWduZWRQYXJzYWJsZSBzaWduZWRf
cmVzdWx0ID0gMDsKKyAgRVhQRUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKG1zZzIuR2V0U3Ry
aW5nKCksICZzaWduZWRfcmVzdWx0KSk7CisgIEVYUEVDVF9FUShrQmlnZ2VzdFNpZ25lZFBhcnNh
YmxlTWF4LCBzaWduZWRfcmVzdWx0KTsKKworICBNZXNzYWdlIG1zZzM7CisgIG1zZzMgPDwgSU5U
X01BWDsKKworICBpbnQgaW50X3Jlc3VsdCA9IDA7CisgIEVYUEVDVF9UUlVFKFBhcnNlTmF0dXJh
bE51bWJlcihtc2czLkdldFN0cmluZygpLCAmaW50X3Jlc3VsdCkpOworICBFWFBFQ1RfRVEoSU5U
X01BWCwgaW50X3Jlc3VsdCk7CisKKyAgTWVzc2FnZSBtc2c0OworICBtc2c0IDw8IFVJTlRfTUFY
OworCisgIHVuc2lnbmVkIGludCB1aW50X3Jlc3VsdCA9IDA7CisgIEVYUEVDVF9UUlVFKFBhcnNl
TmF0dXJhbE51bWJlcihtc2c0LkdldFN0cmluZygpLCAmdWludF9yZXN1bHQpKTsKKyAgRVhQRUNU
X0VRKFVJTlRfTUFYLCB1aW50X3Jlc3VsdCk7Cit9CisKK1RFU1QoUGFyc2VOYXR1cmFsTnVtYmVy
VGVzdCwgV29ya3NGb3JTaG9ydGVySW50ZWdlcnMpIHsKKyAgc2hvcnQgc2hvcnRfcmVzdWx0ID0g
MDsKKyAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKCIxMjMiLCAmc2hvcnRfcmVzdWx0
KSk7CisgIEVYUEVDVF9FUSgxMjMsIHNob3J0X3Jlc3VsdCk7CisKKyAgc2lnbmVkIGNoYXIgY2hh
cl9yZXN1bHQgPSAwOworICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjEyMyIsICZj
aGFyX3Jlc3VsdCkpOworICBFWFBFQ1RfRVEoMTIzLCBjaGFyX3Jlc3VsdCk7Cit9CisKKyMgaWYg
R1RFU1RfT1NfV0lORE9XUworVEVTVChFbnZpcm9ubWVudFRlc3QsIEhhbmRsZUZpdHNJbnRvU2l6
ZVQpIHsKKyAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHRlc3QgYWZ0ZXIgdGhpcyBjb25kaXRpb24g
aXMgdmVyaWZpZWQKKyAgLy8gaW4gYSBzdGF0aWMgYXNzZXJ0aW9uIGluIGd0ZXN0LWRlYXRoLXRl
c3QuY2MgaW4gdGhlIGZ1bmN0aW9uCisgIC8vIEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9yLgorICBB
U1NFUlRfVFJVRShzaXplb2YoSEFORExFKSA8PSBzaXplb2Yoc2l6ZV90KSk7Cit9CisjIGVuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRIX0lGX1NV
UFBPUlRFRC9BU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEIHRyaWdnZXIKKy8vIGZhaWx1cmVzIHdo
ZW4gZGVhdGggdGVzdHMgYXJlIGF2YWlsYWJsZSBvbiB0aGUgc3lzdGVtLgorVEVTVChDb25kaXRp
b25hbERlYXRoTWFjcm9zRGVhdGhUZXN0LCBFeHBlY3RzRGVhdGhXaGVuRGVhdGhUZXN0c0F2YWls
YWJsZSkgeworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKERpZUluc2lkZSgiQ29uZERlYXRo
VGVzdEV4cGVjdE1hY3JvIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlYXRoIGlu
c2lkZSBDb25kRGVhdGhUZXN0RXhwZWN0TWFjcm8iKTsKKyAgQVNTRVJUX0RFQVRIX0lGX1NVUFBP
UlRFRChEaWVJbnNpZGUoIkNvbmREZWF0aFRlc3RBc3NlcnRNYWNybyIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJkZWF0aCBpbnNpZGUgQ29uZERlYXRoVGVzdEFzc2VydE1hY3JvIik7
CisKKyAgLy8gRW1wdHkgc3RhdGVtZW50IHdpbGwgbm90IGNyYXNoLCB3aGljaCBtdXN0IHRyaWdn
ZXIgYSBmYWlsdXJlLgorICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEhfSUZf
U1VQUE9SVEVEKDssICIiKSwgIiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfREVB
VEhfSUZfU1VQUE9SVEVEKDssICIiKSwgIiIpOworfQorCitURVNUKEluRGVhdGhUZXN0Q2hpbGRE
ZWF0aFRlc3QsIFJlcG9ydHNEZWF0aFRlc3RDb3JyZWN0bHlJbkZhc3RTdHlsZSkgeworICB0ZXN0
aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOworICBFWFBFQ1RfRkFM
U0UoSW5EZWF0aFRlc3RDaGlsZCgpKTsKKyAgRVhQRUNUX0RFQVRIKHsKKyAgICBmcHJpbnRmKHN0
ZGVyciwgSW5EZWF0aFRlc3RDaGlsZCgpID8gIkluc2lkZSIgOiAiT3V0c2lkZSIpOworICAgIGZm
bHVzaChzdGRlcnIpOworICAgIF9leGl0KDEpOworICB9LCAiSW5zaWRlIik7Cit9CisKK1RFU1Qo
SW5EZWF0aFRlc3RDaGlsZERlYXRoVGVzdCwgUmVwb3J0c0RlYXRoVGVzdENvcnJlY3RseUluVGhy
ZWFkU2FmZVN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkg
PSAidGhyZWFkc2FmZSI7CisgIEVYUEVDVF9GQUxTRShJbkRlYXRoVGVzdENoaWxkKCkpOworICBF
WFBFQ1RfREVBVEgoeworICAgIGZwcmludGYoc3RkZXJyLCBJbkRlYXRoVGVzdENoaWxkKCkgPyAi
SW5zaWRlIiA6ICJPdXRzaWRlIik7CisgICAgZmZsdXNoKHN0ZGVycik7CisgICAgX2V4aXQoMSk7
CisgIH0sICJJbnNpZGUiKTsKK30KKworI2Vsc2UgIC8vICFHVEVTVF9IQVNfREVBVEhfVEVTVCBm
b2xsb3dzCisKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpDYXB0dXJlU3RkZXJyOwordXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OkdldENhcHR1cmVkU3RkZXJyOworCisvLyBUZXN0cyB0aGF0IEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQvQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCBhcmUgc3Rp
bGwKKy8vIGRlZmluZWQgYnV0IGRvIG5vdCB0cmlnZ2VyIGZhaWx1cmVzIHdoZW4gZGVhdGggdGVz
dHMgYXJlIG5vdCBhdmFpbGFibGUgb24KKy8vIHRoZSBzeXN0ZW0uCitURVNUKENvbmRpdGlvbmFs
RGVhdGhNYWNyb3NUZXN0LCBXYXJuc1doZW5EZWF0aFRlc3RzTm90QXZhaWxhYmxlKSB7CisgIC8v
IEVtcHR5IHN0YXRlbWVudCB3aWxsIG5vdCBjcmFzaCwgYnV0IHRoYXQgc2hvdWxkIG5vdCB0cmln
Z2VyIGEgZmFpbHVyZQorICAvLyB3aGVuIGRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkLgor
ICBDYXB0dXJlU3RkZXJyKCk7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIpOwor
ICBzdGQ6OnN0cmluZyBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVycigpOworICBBU1NFUlRfVFJV
RShOVUxMICE9IHN0cnN0cihvdXRwdXQuY19zdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKSk7
CisgIEFTU0VSVF9UUlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLCAiOyIpKTsKKwor
ICAvLyBUaGUgc3RyZWFtZWQgbWVzc2FnZSBzaG91bGQgbm90IGJlIHByaW50ZWQgYXMgdGhlcmUg
aXMgbm8gdGVzdCBmYWlsdXJlLgorICBDYXB0dXJlU3RkZXJyKCk7CisgIEVYUEVDVF9ERUFUSF9J
Rl9TVVBQT1JURUQoOywgIiIpIDw8ICJzdHJlYW1lZCBtZXNzYWdlIjsKKyAgb3V0cHV0ID0gR2V0
Q2FwdHVyZWRTdGRlcnIoKTsKKyAgQVNTRVJUX1RSVUUoTlVMTCA9PSBzdHJzdHIob3V0cHV0LmNf
c3RyKCksICJzdHJlYW1lZCBtZXNzYWdlIikpOworCisgIENhcHR1cmVTdGRlcnIoKTsKKyAgQVNT
RVJUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIik7ICAvLyBOT0xJTlQKKyAgb3V0cHV0ID0gR2V0
Q2FwdHVyZWRTdGRlcnIoKTsKKyAgQVNTRVJUX1RSVUUoTlVMTCAhPSBzdHJzdHIob3V0cHV0LmNf
c3RyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWF0aCB0ZXN0cyBhcmUgbm90
IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikpOworICBBU1NFUlRfVFJVRShOVUxMICE9IHN0
cnN0cihvdXRwdXQuY19zdHIoKSwgIjsiKSk7CisKKyAgQ2FwdHVyZVN0ZGVycigpOworICBBU1NF
UlRfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKSA8PCAic3RyZWFtZWQgbWVzc2FnZSI7ICAvLyBO
T0xJTlQKKyAgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKKyAgQVNTRVJUX1RSVUUoTlVM
TCA9PSBzdHJzdHIob3V0cHV0LmNfc3RyKCksICJzdHJlYW1lZCBtZXNzYWdlIikpOworfQorCit2
b2lkIEZ1bmNXaXRoQXNzZXJ0KGludCogbikgeworICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVE
KHJldHVybjssICIiKTsKKyAgKCpuKSsrOworfQorCisvLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUFU
SF9JRl9TVVBQT1JURUQgZG9lcyBub3QgcmV0dXJuIGZyb20gdGhlIGN1cnJlbnQKKy8vIGZ1bmN0
aW9uIChhcyBBU1NFUlRfREVBVEggZG9lcykgaWYgZGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0
ZWQuCitURVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NUZXN0LCBBc3NlcnREZWF0RG9lc05vdFJl
dHVybmhJZlVuc3VwcG9ydGVkKSB7CisgIGludCBuID0gMDsKKyAgRnVuY1dpdGhBc3NlcnQoJm4p
OworICBFWFBFQ1RfRVEoMSwgbik7Cit9CisKKyNlbmRpZiAgLy8gIUdURVNUX0hBU19ERUFUSF9U
RVNUCisKKy8vIFRlc3RzIHRoYXQgdGhlIGRlYXRoIHRlc3QgbWFjcm9zIGV4cGFuZCB0byBjb2Rl
IHdoaWNoIG1heSBvciBtYXkgbm90CisvLyBiZSBmb2xsb3dlZCBieSBvcGVyYXRvcjw8LCBhbmQg
dGhhdCBpbiBlaXRoZXIgY2FzZSB0aGUgY29tcGxldGUgdGV4dAorLy8gY29tcHJpc2VzIG9ubHkg
YSBzaW5nbGUgQysrIHN0YXRlbWVudC4KKy8vCisvLyBUaGUgc3ludGF4IHNob3VsZCB3b3JrIHdo
ZXRoZXIgZGVhdGggdGVzdHMgYXJlIGF2YWlsYWJsZSBvciBub3QuCitURVNUKENvbmRpdGlvbmFs
RGVhdGhNYWNyb3NTeW50YXhEZWF0aFRlc3QsIFNpbmdsZVN0YXRlbWVudCkgeworICBpZiAoQWx3
YXlzRmFsc2UoKSkKKyAgICAvLyBUaGlzIHdvdWxkIGZhaWwgaWYgZXhlY3V0ZWQ7IHRoaXMgaXMg
YSBjb21waWxhdGlvbiB0ZXN0IG9ubHkKKyAgICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHJl
dHVybiwgIiIpOworCisgIGlmIChBbHdheXNUcnVlKCkpCisgICAgRVhQRUNUX0RFQVRIX0lGX1NV
UFBPUlRFRChfZXhpdCgxKSwgIiIpOworICBlbHNlCisgICAgLy8gVGhpcyBlbXB0eSAiZWxzZSIg
YnJhbmNoIGlzIG1lYW50IHRvIGVuc3VyZSB0aGF0IEVYUEVDVF9ERUFUSAorICAgIC8vIGRvZXNu
J3QgZXhwYW5kIGludG8gYW4gImlmIiBzdGF0ZW1lbnQgd2l0aG91dCBhbiAiZWxzZSIKKyAgICA7
ICAvLyBOT0xJTlQKKworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICBBU1NFUlRfREVBVEhfSUZf
U1VQUE9SVEVEKHJldHVybiwgIiIpIDw8ICJkaWQgbm90IGRpZSI7CisKKyAgaWYgKEFsd2F5c0Zh
bHNlKCkpCisgICAgOyAgLy8gTk9MSU5UCisgIGVsc2UKKyAgICBFWFBFQ1RfREVBVEhfSUZfU1VQ
UE9SVEVEKF9leGl0KDEpLCAiIikgPDwgMSA8PCAyIDw8IDM7Cit9CisKKy8vIFRlc3RzIHRoYXQg
Y29uZGl0aW9uYWwgZGVhdGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUgd2hpY2ggaW50ZXJh
Y3RzCisvLyB3ZWxsIHdpdGggc3dpdGNoIHN0YXRlbWVudHMuCitURVNUKENvbmRpdGlvbmFsRGVh
dGhNYWNyb3NTeW50YXhEZWF0aFRlc3QsIFN3aXRjaFN0YXRlbWVudCkgeworICAvLyBNaWNyb3Nv
ZnQgY29tcGlsZXIgdXN1YWxseSBjb21wbGFpbnMgYWJvdXQgc3dpdGNoIHN0YXRlbWVudHMgd2l0
aG91dAorICAvLyBjYXNlIGxhYmVscy4gV2Ugc3VwcHJlc3MgdGhhdCB3YXJuaW5nIGZvciB0aGlz
IHRlc3QuCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQwNjUpCisKKyAgc3dp
dGNoICgwKQorICAgIGRlZmF1bHQ6CisgICAgICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKF9l
eGl0KDEpLCAiIikKKyAgICAgICAgICA8PCAiZXhpdCBpbiBkZWZhdWx0IHN3aXRjaCBoYW5kbGVy
IjsKKworICBzd2l0Y2ggKDApCisgICAgY2FzZSAwOgorICAgICAgRVhQRUNUX0RFQVRIX0lGX1NV
UFBPUlRFRChfZXhpdCgxKSwgIiIpIDw8ICJleGl0IGluIHN3aXRjaCBjYXNlIjsKKworICBHVEVT
VF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKK30KKworLy8gVGVzdHMgdGhhdCBhIHRlc3Qg
Y2FzZSB3aG9zZSBuYW1lIGVuZHMgd2l0aCAiRGVhdGhUZXN0IiB3b3JrcyBmaW5lCisvLyBvbiBX
aW5kb3dzLgorVEVTVChOb3RBRGVhdGhUZXN0LCBUZXN0KSB7CisgIFNVQ0NFRUQoKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1kZWF0aC10
ZXN0X2V4X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qt
ZGVhdGgtdGVzdF9leF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4Yjk0NzBmYzg4YWQxN2FhZWI2NjRk
NDdjMjcwY2ZjYWE3MzFiZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNjCkBAIC0wLDAgKzEsOTIg
QEAKKy8vIENvcHlyaWdodCAyMDEwLCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
Ly8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8KKy8v
IFRlc3RzIHRoYXQgdmVyaWZ5IGludGVyYWN0aW9uIG9mIGV4Y2VwdGlvbnMgYW5kIGRlYXRoIHRl
c3RzLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgorI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LmgiCisKKyNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisjIGlmIEdURVNUX0hB
U19TRUgKKyMgIGluY2x1ZGUgPHdpbmRvd3MuaD4gICAgICAgICAgLy8gRm9yIFJhaXNlRXhjZXB0
aW9uKCkuCisjIGVuZGlmCisKKyMgaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCisKKyMgaWYg
R1RFU1RfSEFTX0VYQ0VQVElPTlMKKworIyAgaW5jbHVkZSA8ZXhjZXB0aW9uPiAgLy8gRm9yIHN0
ZDo6ZXhjZXB0aW9uLgorCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHJlcG9ydCB0aHJvd24g
ZXhjZXB0aW9ucyBhcyBmYWlsdXJlcyBhbmQgdGhhdCB0aGUKKy8vIGV4Y2VwdGlvbnMgZG8gbm90
IGVzY2FwZSBkZWF0aCB0ZXN0IG1hY3Jvcy4KK1RFU1QoQ3h4RXhjZXB0aW9uRGVhdGhUZXN0LCBF
eGNlcHRpb25Jc0ZhaWx1cmUpIHsKKyAgdHJ5IHsKKyAgICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShFWFBFQ1RfREVBVEgodGhyb3cgMSwgIiIpLCAidGhyZXcgYW4gZXhjZXB0aW9uIik7CisgIH0g
Y2F0Y2ggKC4uLikgeyAgLy8gTk9MSU5UCisgICAgRkFJTCgpIDw8ICJBbiBleGNlcHRpb24gZXNj
YXBlZCBhIGRlYXRoIHRlc3QgbWFjcm8gaW52b2NhdGlvbiAiCisgICAgICAgICAgIDw8ICJ3aXRo
IGNhdGNoX2V4Y2VwdGlvbnMgIgorICAgICAgICAgICA8PCAodGVzdGluZzo6R1RFU1RfRkxBRyhj
YXRjaF9leGNlcHRpb25zKSA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpOworICB9Cit9CisKK2Ns
YXNzIFRlc3RFeGNlcHRpb24gOiBwdWJsaWMgc3RkOjpleGNlcHRpb24geworIHB1YmxpYzoKKyAg
dmlydHVhbCBjb25zdCBjaGFyKiB3aGF0KCkgY29uc3QgdGhyb3coKSB7IHJldHVybiAiZXhjZXB0
aW9uYWwgbWVzc2FnZSI7IH0KK307CisKK1RFU1QoQ3h4RXhjZXB0aW9uRGVhdGhUZXN0LCBQcmlu
dHNNZXNzYWdlRm9yU3RkRXhjZXB0aW9ucykgeworICAvLyBWZXJpZmllcyB0aGF0IHRoZSBleGNl
cHRpb24gbWVzc2FnZSBpcyBxdW90ZWQgaW4gdGhlIGZhaWx1cmUgdGV4dC4KKyAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKHRocm93IFRlc3RFeGNlcHRpb24oKSwgIiIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0aW9uYWwgbWVzc2FnZSIpOworICAvLyBW
ZXJpZmllcyB0aGF0IHRoZSBsb2NhdGlvbiBpcyBtZW50aW9uZWQgaW4gdGhlIGZhaWx1cmUgdGV4
dC4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKHRocm93IFRlc3RFeGNl
cHRpb24oKSwgIiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZ29vZ2xldGVzdC1kZWF0
aC10ZXN0X2V4X3Rlc3QuY2MiKTsKK30KKyMgZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05T
CisKKyMgaWYgR1RFU1RfSEFTX1NFSAorLy8gVGVzdHMgdGhhdCBlbmFibGluZyBpbnRlcmNlcHRp
b24gb2YgU0VIIGV4Y2VwdGlvbnMgd2l0aCB0aGUKKy8vIGNhdGNoX2V4Y2VwdGlvbnMgZmxhZyBk
b2VzIG5vdCBpbnRlcmZlcmUgd2l0aCBTRUggZXhjZXB0aW9ucyBiZWluZworLy8gdHJlYXRlZCBh
cyBkZWF0aCBieSBkZWF0aCB0ZXN0cy4KK1RFU1QoU2VoRXhjZXB0aW9uRGVhc1Rlc3QsIENhdGNo
RXhjZXB0aW9uc0RvZXNOb3RJbnRlcmZlcmUpIHsKKyAgRVhQRUNUX0RFQVRIKFJhaXNlRXhjZXB0
aW9uKDQyLCAweDAsIDAsIE5VTEwpLCAiIikKKyAgICAgIDw8ICJ3aXRoIGNhdGNoX2V4Y2VwdGlv
bnMgIgorICAgICAgPDwgKHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgPyAi
ZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKK30KKyMgZW5kaWYKKworI2VuZGlmICAvLyBHVEVTVF9I
QVNfREVBVEhfVEVTVAorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgdGVz
dGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICB0ZXN0aW5nOjpHVEVTVF9GTEFH
KGNhdGNoX2V4Y2VwdGlvbnMpID0gR1RFU1RfRU5BQkxFX0NBVENIX0VYQ0VQVElPTlNfICE9IDA7
CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0LnB5IGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWVudi12YXItdGVzdC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
MWVmZWVlMWVhYjhjNmRhY2I1ZDI5MjZmNGI1YzkwODA5MzhkYjEzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWVudi12YXItdGVzdC5w
eQpAQCAtMCwwICsxLDExNyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdo
dCAyMDA4LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworIiIiVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCBjb3JyZWN0bHkgcGFyc2VzIGVu
dmlyb25tZW50IHZhcmlhYmxlcy4iIiIKKworaW1wb3J0IG9zCitpbXBvcnQgZ3Rlc3RfdGVzdF91
dGlscworCisKK0lTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdudCcKK0lTX0xJTlVYID0gb3MubmFt
ZSA9PSAncG9zaXgnIGFuZCBvcy51bmFtZSgpWzBdID09ICdMaW51eCcKKworQ09NTUFORCA9IGd0
ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdnb29nbGV0ZXN0LWVudi12YXIt
dGVzdF8nKQorCitlbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkKKworCitkZWYgQXNzZXJ0RXEo
ZXhwZWN0ZWQsIGFjdHVhbCk6CisgIGlmIGV4cGVjdGVkICE9IGFjdHVhbDoKKyAgICBwcmludCAn
RXhwZWN0ZWQ6ICVzJyAlIChleHBlY3RlZCwpCisgICAgcHJpbnQgJyAgQWN0dWFsOiAlcycgJSAo
YWN0dWFsLCkKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCisKK2RlZiBTZXRFbnZWYXIoZW52
X3ZhciwgdmFsdWUpOgorICAiIiJTZXRzIHRoZSBlbnYgdmFyaWFibGUgdG8gJ3ZhbHVlJzsgdW5z
ZXRzIGl0IHdoZW4gJ3ZhbHVlJyBpcyBOb25lLiIiIgorCisgIGlmIHZhbHVlIGlzIG5vdCBOb25l
OgorICAgIGVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQorICBlbGlmIGVudl92YXIgaW4gZW52aXJv
bjoKKyAgICBkZWwgZW52aXJvbltlbnZfdmFyXQorCisKK2RlZiBHZXRGbGFnKGZsYWcpOgorICAi
IiJSdW5zIGdvb2dsZXRlc3QtZW52LXZhci10ZXN0XyBhbmQgcmV0dXJucyBpdHMgb3V0cHV0LiIi
IgorCisgIGFyZ3MgPSBbQ09NTUFORF0KKyAgaWYgZmxhZyBpcyBub3QgTm9uZToKKyAgICBhcmdz
ICs9IFtmbGFnXQorICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGFyZ3MsIGVu
dj1lbnZpcm9uKS5vdXRwdXQKKworCitkZWYgVGVzdEZsYWcoZmxhZywgdGVzdF92YWwsIGRlZmF1
bHRfdmFsKToKKyAgIiIiVmVyaWZpZXMgdGhhdCB0aGUgZ2l2ZW4gZmxhZyBpcyBhZmZlY3RlZCBi
eSB0aGUgY29ycmVzcG9uZGluZyBlbnYgdmFyLiIiIgorCisgIGVudl92YXIgPSAnR1RFU1RfJyAr
IGZsYWcudXBwZXIoKQorICBTZXRFbnZWYXIoZW52X3ZhciwgdGVzdF92YWwpCisgIEFzc2VydEVx
KHRlc3RfdmFsLCBHZXRGbGFnKGZsYWcpKQorICBTZXRFbnZWYXIoZW52X3ZhciwgTm9uZSkKKyAg
QXNzZXJ0RXEoZGVmYXVsdF92YWwsIEdldEZsYWcoZmxhZykpCisKKworY2xhc3MgR1Rlc3RFbnZW
YXJUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorCisgIGRlZiB0ZXN0RW52VmFyQWZm
ZWN0c0ZsYWcoc2VsZik6CisgICAgIiIiVGVzdHMgdGhhdCBlbnZpcm9ubWVudCB2YXJpYWJsZSBz
aG91bGQgYWZmZWN0IHRoZSBjb3JyZXNwb25kaW5nIGZsYWcuIiIiCisKKyAgICBUZXN0RmxhZygn
YnJlYWtfb25fZmFpbHVyZScsICcxJywgJzAnKQorICAgIFRlc3RGbGFnKCdjb2xvcicsICd5ZXMn
LCAnYXV0bycpCisgICAgVGVzdEZsYWcoJ2ZpbHRlcicsICdGb29UZXN0LkJhcicsICcqJykKKyAg
ICBTZXRFbnZWYXIoJ1hNTF9PVVRQVVRfRklMRScsIE5vbmUpICAjIEZvciAnb3V0cHV0JyB0ZXN0
CisgICAgVGVzdEZsYWcoJ291dHB1dCcsICd4bWw6dG1wL2Zvby54bWwnLCAnJykKKyAgICBUZXN0
RmxhZygncHJpbnRfdGltZScsICcwJywgJzEnKQorICAgIFRlc3RGbGFnKCdyZXBlYXQnLCAnOTk5
JywgJzEnKQorICAgIFRlc3RGbGFnKCd0aHJvd19vbl9mYWlsdXJlJywgJzEnLCAnMCcpCisgICAg
VGVzdEZsYWcoJ2RlYXRoX3Rlc3Rfc3R5bGUnLCAndGhyZWFkc2FmZScsICdmYXN0JykKKyAgICBU
ZXN0RmxhZygnY2F0Y2hfZXhjZXB0aW9ucycsICcwJywgJzEnKQorCisgICAgaWYgSVNfTElOVVg6
CisgICAgICBUZXN0RmxhZygnZGVhdGhfdGVzdF91c2VfZm9yaycsICcxJywgJzAnKQorICAgICAg
VGVzdEZsYWcoJ3N0YWNrX3RyYWNlX2RlcHRoJywgJzAnLCAnMTAwJykKKworCisgIGRlZiB0ZXN0
WG1sT3V0cHV0RmlsZShzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0ICRYTUxfT1VUUFVUX0ZJTEUg
YWZmZWN0cyB0aGUgb3V0cHV0IGZsYWcuIiIiCisKKyAgICBTZXRFbnZWYXIoJ0dURVNUX09VVFBV
VCcsIE5vbmUpCisgICAgU2V0RW52VmFyKCdYTUxfT1VUUFVUX0ZJTEUnLCAndG1wL2Jhci54bWwn
KQorICAgIEFzc2VydEVxKCd4bWw6dG1wL2Jhci54bWwnLCBHZXRGbGFnKCdvdXRwdXQnKSkKKwor
ICBkZWYgdGVzdFhtbE91dHB1dEZpbGVPdmVycmlkZShzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0
ICRYTUxfT1VUUFVUX0ZJTEUgaXMgb3ZlcnJpZGRlbiBieSAkR1RFU1RfT1VUUFVULiIiIgorCisg
ICAgU2V0RW52VmFyKCdHVEVTVF9PVVRQVVQnLCAneG1sOnRtcC9mb28ueG1sJykKKyAgICBTZXRF
bnZWYXIoJ1hNTF9PVVRQVVRfRklMRScsICd0bXAvYmFyLnhtbCcpCisgICAgQXNzZXJ0RXEoJ3ht
bDp0bXAvZm9vLnhtbCcsIEdldEZsYWcoJ291dHB1dCcpKQorCitpZiBfX25hbWVfXyA9PSAnX19t
YWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWVudi12YXItdGVzdF8uY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0Xy5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mZDJhYTgyZjc0ZmFhMjEyMDFlNzlhZTBlNWMzYjU2ODU1M2RmMzM3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWVudi12YXIt
dGVzdF8uY2MKQEAgLTAsMCArMSwxMjIgQEAKKy8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5j
LgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworCisvLyBBIGhlbHBlciBwcm9ncmFtIGZvciB0ZXN0aW5nIHRoYXQg
R29vZ2xlIFRlc3QgcGFyc2VzIHRoZSBlbnZpcm9ubWVudAorLy8gdmFyaWFibGVzIGNvcnJlY3Rs
eS4KKworI2luY2x1ZGUgPGlvc3RyZWFtPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNp
bmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCisKK3VzaW5nIDo6c3RkOjpjb3V0Owor
CituYW1lc3BhY2UgdGVzdGluZyB7CisKKy8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gbWFr
ZSB0aGUgdGVzdCBtb3JlIHJlYWxpc3RpYyBieSBlbnN1cmluZworLy8gdGhhdCB0aGUgVW5pdFRl
c3Qgc2luZ2xldG9uIGlzIGNyZWF0ZWQgYmVmb3JlIG1haW4oKSBpcyBlbnRlcmVkLgorLy8gV2Ug
ZG9uJ3QgYWN0dWFsIHJ1biB0aGUgVEVTVCBpdHNlbGYuCitURVNUKEdUZXN0RW52VmFyVGVzdCwg
RHVtbXkpIHsKK30KKwordm9pZCBQcmludEZsYWcoY29uc3QgY2hhciogZmxhZykgeworICBpZiAo
c3RyY21wKGZsYWcsICJicmVha19vbl9mYWlsdXJlIikgPT0gMCkgeworICAgIGNvdXQgPDwgR1RF
U1RfRkxBRyhicmVha19vbl9mYWlsdXJlKTsKKyAgICByZXR1cm47CisgIH0KKworICBpZiAoc3Ry
Y21wKGZsYWcsICJjYXRjaF9leGNlcHRpb25zIikgPT0gMCkgeworICAgIGNvdXQgPDwgR1RFU1Rf
RkxBRyhjYXRjaF9leGNlcHRpb25zKTsKKyAgICByZXR1cm47CisgIH0KKworICBpZiAoc3RyY21w
KGZsYWcsICJjb2xvciIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZMQUcoY29sb3IpOwor
ICAgIHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgImRlYXRoX3Rlc3Rfc3R5bGUi
KSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpOworICAg
IHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgImRlYXRoX3Rlc3RfdXNlX2Zvcmsi
KSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspOwor
ICAgIHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgImZpbHRlciIpID09IDApIHsK
KyAgICBjb3V0IDw8IEdURVNUX0ZMQUcoZmlsdGVyKTsKKyAgICByZXR1cm47CisgIH0KKworICBp
ZiAoc3RyY21wKGZsYWcsICJvdXRwdXQiKSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFH
KG91dHB1dCk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChmbGFnLCAicHJpbnRf
dGltZSIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZMQUcocHJpbnRfdGltZSk7CisgICAg
cmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChmbGFnLCAicmVwZWF0IikgPT0gMCkgeworICAg
IGNvdXQgPDwgR1RFU1RfRkxBRyhyZXBlYXQpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChz
dHJjbXAoZmxhZywgInN0YWNrX3RyYWNlX2RlcHRoIikgPT0gMCkgeworICAgIGNvdXQgPDwgR1RF
U1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0
cmNtcChmbGFnLCAidGhyb3dfb25fZmFpbHVyZSIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNU
X0ZMQUcodGhyb3dfb25fZmFpbHVyZSk7CisgICAgcmV0dXJuOworICB9CisKKyAgY291dCA8PCAi
SW52YWxpZCBmbGFnIG5hbWUgIiA8PCBmbGFnCisgICAgICAgPDwgIi4gIFZhbGlkIG5hbWVzIGFy
ZSBicmVha19vbl9mYWlsdXJlLCBjb2xvciwgZmlsdGVyLCBldGMuXG4iOworICBleGl0KDEpOwor
fQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpIHsKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIGlm
IChhcmdjICE9IDIpIHsKKyAgICBjb3V0IDw8ICJVc2FnZTogZ29vZ2xldGVzdC1lbnYtdmFyLXRl
c3RfIE5BTUVfT0ZfRkxBR1xuIjsKKyAgICByZXR1cm4gMTsKKyAgfQorCisgIHRlc3Rpbmc6OlBy
aW50RmxhZyhhcmd2WzFdKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZmlsZXBhdGgtdGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1maWxlcGF0aC10ZXN0LmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjM3ZjAyZmI0YmQ3Nzk3ZDE0ZDM4M2EwNWZhMTk3YzM2YjMxODI1ZjIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZmlsZXBhdGgt
dGVzdC5jYwpAQCAtMCwwICsxLDY1MSBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMu
CisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorLy8KKy8vIEdvb2dsZSBUZXN0IGZpbGVwYXRoIHV0aWxpdGllcworLy8K
Ky8vIFRoaXMgZmlsZSB0ZXN0cyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5
IGJ5CisvLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQg
bm90aWNlLgorLy8KKy8vIFRoaXMgZmlsZSBpcyAjaW5jbHVkZWQgZnJvbSBndGVzdC1pbnRlcm5h
bC5oLgorLy8gRG8gbm90ICNpbmNsdWRlIHRoaXMgZmlsZSBhbnl3aGVyZSBlbHNlIQorCisjaW5j
bHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCIKKyNpbmNsdWRlICJndGVzdC9n
dGVzdC5oIgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKworI2lmIEdURVNU
X09TX1dJTkRPV1NfTU9CSUxFCisjIGluY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAorI2Vs
aWYgR1RFU1RfT1NfV0lORE9XUworIyBpbmNsdWRlIDxkaXJlY3QuaD4gIC8vIE5PTElOVAorI2Vu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCituYW1lc3BhY2UgdGVzdGluZyB7Citu
YW1lc3BhY2UgaW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKworI2lmIEdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFCisvLyBGSVhNRTogTW92ZSB0aGVzZSB0byB0aGUgUE9TSVggYWRhcHRlciBzZWN0aW9u
IGluCisvLyBndGVzdC1wb3J0LmguCisKKy8vIFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlIHRoZSBy
ZW1vdmUgQyBmdW5jdGlvbi4KK2ludCByZW1vdmUoY29uc3QgY2hhciogcGF0aCkgeworICBMUENX
U1RSIHdwYXRoID0gU3RyaW5nOjpBbnNpVG9VdGYxNihwYXRoKTsKKyAgaW50IHJldCA9IERlbGV0
ZUZpbGUod3BhdGgpID8gMCA6IC0xOworICBkZWxldGUgW10gd3BhdGg7CisgIHJldHVybiByZXQ7
Cit9CisvLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSB0aGUgX3JtZGlyIEMgZnVuY3Rpb24uCitp
bnQgX3JtZGlyKGNvbnN0IGNoYXIqIHBhdGgpIHsKKyAgRmlsZVBhdGggZmlsZXBhdGgocGF0aCk7
CisgIExQQ1dTVFIgd3BhdGggPSBTdHJpbmc6OkFuc2lUb1V0ZjE2KAorICAgICAgZmlsZXBhdGgu
UmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7CisgIGludCByZXQgPSBSZW1v
dmVEaXJlY3Rvcnkod3BhdGgpID8gMCA6IC0xOworICBkZWxldGUgW10gd3BhdGg7CisgIHJldHVy
biByZXQ7Cit9CisKKyNlbHNlCisKK1RFU1QoR2V0Q3VycmVudERpclRlc3QsIFJldHVybnNDdXJy
ZW50RGlyKSB7CisgIGNvbnN0IEZpbGVQYXRoIG9yaWdpbmFsX2RpciA9IEZpbGVQYXRoOjpHZXRD
dXJyZW50RGlyKCk7CisgIEVYUEVDVF9GQUxTRShvcmlnaW5hbF9kaXIuSXNFbXB0eSgpKTsKKwor
ICBwb3NpeDo6Q2hEaXIoR1RFU1RfUEFUSF9TRVBfKTsKKyAgY29uc3QgRmlsZVBhdGggY3dkID0g
RmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKTsKKyAgcG9zaXg6OkNoRGlyKG9yaWdpbmFsX2Rpci5j
X3N0cigpKTsKKworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisKKyAgLy8gU2tpcHMgdGhlICI6Ii4K
KyAgY29uc3QgY2hhciogY29uc3QgY3dkX3dpdGhvdXRfZHJpdmUgPSBzdHJjaHIoY3dkLmNfc3Ry
KCksICc6Jyk7CisgIEFTU0VSVF9UUlVFKGN3ZF93aXRob3V0X2RyaXZlICE9IE5VTEwpOworICBF
WFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLCBjd2Rfd2l0aG91dF9kcml2ZSArIDEpOworCisj
IGVsc2UKKworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfLCBjd2Quc3RyaW5nKCkpOworCisj
IGVuZGlmCit9CisKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKworVEVTVChJ
c0VtcHR5VGVzdCwgUmV0dXJuc1RydWVGb3JFbXB0eVBhdGgpIHsKKyAgRVhQRUNUX1RSVUUoRmls
ZVBhdGgoIiIpLklzRW1wdHkoKSk7Cit9CisKK1RFU1QoSXNFbXB0eVRlc3QsIFJldHVybnNGYWxz
ZUZvck5vbkVtcHR5UGF0aCkgeworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImEiKS5Jc0VtcHR5
KCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIi4iKS5Jc0VtcHR5KCkpOworICBFWFBFQ1Rf
RkFMU0UoRmlsZVBhdGgoImEvYiIpLklzRW1wdHkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0
aCgiYVxcYlxcIikuSXNFbXB0eSgpKTsKK30KKworLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiIiAt
PiAiIgorVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgV2hlbkVtcHR5TmFtZSkgeworICBF
WFBFQ1RfRVEoIiIsIEZpbGVQYXRoKCIiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkp
OworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZmlsZSIgLT4gImFmaWxlIgorVEVTVChS
ZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgQnV0Tm9EaXJlY3RvcnkpIHsKKyAgRVhQRUNUX0VRKCJh
ZmlsZSIsCisgICAgICBGaWxlUGF0aCgiYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3Ry
aW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lICIvYWZpbGUiIC0+ICJhZmlsZSIK
K1RFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFJvb3RGaWxlU2hvdWxkR2l2ZUZpbGVOYW1l
KSB7CisgIEVYUEVDVF9FUSgiYWZpbGUiLAorICAgICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBf
ICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92
ZURpcmVjdG9yeU5hbWUgImFkaXIvIiAtPiAiIgorVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVz
dCwgV2hlcmVUaGVyZUlzTm9GaWxlTmFtZSkgeworICBFWFBFQ1RfRVEoIiIsCisgICAgICBGaWxl
UGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5n
KCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZGlyL2FmaWxlIiAtPiAiYWZpbGUi
CitURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRHaXZlRmlsZU5hbWUpIHsKKyAg
RVhQRUNUX0VRKCJhZmlsZSIsCisgICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBf
ICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92
ZURpcmVjdG9yeU5hbWUgImFkaXIvc3ViZGlyL2FmaWxlIiAtPiAiYWZpbGUiCitURVNUKFJlbW92
ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRBbHNvR2l2ZUZpbGVOYW1lKSB7CisgIEVYUEVDVF9F
USgiYWZpbGUiLAorICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAic3ViZGly
IiBHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikKKyAgICAgIC5SZW1vdmVEaXJlY3RvcnlOYW1lKCku
c3RyaW5nKCkpOworfQorCisjaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KKworLy8gVGVzdHMg
dGhhdCBSZW1vdmVEaXJlY3RvcnlOYW1lKCkgd29ya3Mgd2l0aCB0aGUgYWx0ZXJuYXRlIHNlcGFy
YXRvcgorLy8gb24gV2luZG93cy4KKworLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgiL2FmaWxlIikg
LT4gImFmaWxlIgorVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgUm9vdEZpbGVTaG91bGRH
aXZlRmlsZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNUX0VRKCJhZmlsZSIs
IEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQor
CisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCJhZGlyLyIpIC0+ICIiCitURVNUKFJlbW92ZURpcmVj
dG9yeU5hbWVUZXN0LCBXaGVyZVRoZXJlSXNOb0ZpbGVOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9y
KSB7CisgIEVYUEVDVF9FUSgiIiwgRmlsZVBhdGgoImFkaXIvIikuUmVtb3ZlRGlyZWN0b3J5TmFt
ZSgpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgiYWRpci9hZmlsZSIp
IC0+ICJhZmlsZSIKK1RFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEdpdmVGaWxl
TmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEoImFmaWxlIiwgRmlsZVBh
dGgoImFkaXIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisv
LyBSZW1vdmVEaXJlY3RvcnlOYW1lKCJhZGlyL3N1YmRpci9hZmlsZSIpIC0+ICJhZmlsZSIKK1RF
U1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEFsc29HaXZlRmlsZU5hbWVGb3JBbHRl
cm5hdGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNUX0VRKCJhZmlsZSIsCisgICAgICAgICAgICBGaWxl
UGF0aCgiYWRpci9zdWJkaXIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkp
OworfQorCisjZW5kaWYKKworLy8gUmVtb3ZlRmlsZU5hbWUgIiIgLT4gIi4vIgorVEVTVChSZW1v
dmVGaWxlTmFtZVRlc3QsIEVtcHR5TmFtZSkgeworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxF
CisgIC8vIE9uIFdpbmRvd3MgQ0UsIHdlIHVzZSB0aGUgcm9vdCBhcyB0aGUgY3VycmVudCBkaXJl
Y3RvcnkuCisgIEVYUEVDVF9FUShHVEVTVF9QQVRIX1NFUF8sIEZpbGVQYXRoKCIiKS5SZW1vdmVG
aWxlTmFtZSgpLnN0cmluZygpKTsKKyNlbHNlCisgIEVYUEVDVF9FUSgiLiIgR1RFU1RfUEFUSF9T
RVBfLCBGaWxlUGF0aCgiIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7CisjZW5kaWYKK30K
KworLy8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvIiAtPiAiYWRpci8iCitURVNUKFJlbW92ZUZpbGVO
YW1lVGVzdCwgQnV0Tm9GaWxlKSB7CisgIEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBf
LAorICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXykuUmVtb3ZlRmlsZU5hbWUo
KS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZUZpbGVOYW1lICJhZGlyL2FmaWxlIiAtPiAiYWRp
ci8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNEaXJOYW1lKSB7CisgIEVYUEVDVF9F
USgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIiIEdU
RVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKK30KKwor
Ly8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvc3ViZGlyL2FmaWxlIiAtPiAiYWRpci9zdWJkaXIvIgor
VEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzRGlyQW5kU3ViRGlyTmFtZSkgeworICBFWFBF
Q1RfRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8sCisg
ICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhf
U0VQXyAiYWZpbGUiKQorICAgICAgLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOworfQorCisv
LyBSZW1vdmVGaWxlTmFtZSAiL2FmaWxlIiAtPiAiLyIKK1RFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0
LCBHaXZlc1Jvb3REaXIpIHsKKyAgRVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQXywKKyAgICAgIEZp
bGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygp
KTsKK30KKworI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCisKKy8vIFRlc3RzIHRoYXQgUmVt
b3ZlRmlsZU5hbWUoKSB3b3JrcyB3aXRoIHRoZSBhbHRlcm5hdGUgc2VwYXJhdG9yIG9uCisvLyBX
aW5kb3dzLgorCisvLyBSZW1vdmVGaWxlTmFtZSgiYWRpci8iKSAtPiAiYWRpci8iCitURVNUKFJl
bW92ZUZpbGVOYW1lVGVzdCwgQnV0Tm9GaWxlRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7CisgIEVY
UEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgoImFk
aXIvIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZUZpbGVOYW1l
KCJhZGlyL2FmaWxlIikgLT4gImFkaXIvIgorVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVz
RGlyTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEoImFkaXIiIEdURVNU
X1BBVEhfU0VQXywKKyAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL2FmaWxlIikuUmVtb3ZlRmls
ZU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZUZpbGVOYW1lKCJhZGlyL3N1YmRpci9h
ZmlsZSIpIC0+ICJhZGlyL3N1YmRpci8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNE
aXJBbmRTdWJEaXJOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7CisgIEVYUEVDVF9FUSgiYWRp
ciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXywKKyAgICAgICAgICAg
IEZpbGVQYXRoKCJhZGlyL3N1YmRpci9hZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkp
OworfQorCisvLyBSZW1vdmVGaWxlTmFtZSgiL2FmaWxlIikgLT4gIlwiCitURVNUKFJlbW92ZUZp
bGVOYW1lVGVzdCwgR2l2ZXNSb290RGlyRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7CisgIEVYUEVD
VF9FUShHVEVTVF9QQVRIX1NFUF8sIEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgp
LnN0cmluZygpKTsKK30KKworI2VuZGlmCisKK1RFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJh
dGVXaGVuTnVtYmVySXNaZXJvKSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtl
RmlsZU5hbWUoRmlsZVBhdGgoImZvbyIpLCBGaWxlUGF0aCgiYmFyIiksCisgICAgICAwLCAieG1s
Iik7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwu
c3RyaW5nKCkpOworfQorCitURVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlRmlsZU5hbWVO
dW1iZXJHdFplcm8pIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFt
ZShGaWxlUGF0aCgiZm9vIiksIEZpbGVQYXRoKCJiYXIiKSwKKyAgICAgIDEyLCAieG1sIik7Cisg
IEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhcl8xMi54bWwiLCBhY3R1YWwuc3Ry
aW5nKCkpOworfQorCitURVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlRmlsZU5hbWVXaXRo
U2xhc2hOdW1iZXJJc1plcm8pIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VG
aWxlTmFtZShGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAorICAgICAgRmlsZVBhdGgo
ImJhciIpLCAwLCAieG1sIik7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJh
ci54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdl
bmVyYXRlRmlsZU5hbWVXaXRoU2xhc2hOdW1iZXJHdFplcm8pIHsKKyAgRmlsZVBhdGggYWN0dWFs
ID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8p
LAorICAgICAgRmlsZVBhdGgoImJhciIpLCAxMiwgInhtbCIpOworICBFWFBFQ1RfRVEoImZvbyIg
R1RFU1RfUEFUSF9TRVBfICJiYXJfMTIueG1sIiwgYWN0dWFsLnN0cmluZygpKTsKK30KKworVEVT
VChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZVdoZW5OdW1iZXJJc1plcm9BbmREaXJJc0VtcHR5
KSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgo
IiIpLCBGaWxlUGF0aCgiYmFyIiksCisgICAgICAwLCAieG1sIik7CisgIEVYUEVDVF9FUSgiYmFy
LnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2Vu
ZXJhdGVXaGVuTnVtYmVySXNOb3RaZXJvQW5kRGlySXNFbXB0eSkgeworICBGaWxlUGF0aCBhY3R1
YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCIiKSwgRmlsZVBhdGgoImJhciIp
LAorICAgICAgMTQsICJ4bWwiKTsKKyAgRVhQRUNUX0VRKCJiYXJfMTQueG1sIiwgYWN0dWFsLnN0
cmluZygpKTsKK30KKworVEVTVChDb25jYXRQYXRoc1Rlc3QsIFdvcmtzV2hlbkRpckRvZXNOb3RF
bmRXaXRoUGF0aFNlcCkgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0
aHMoRmlsZVBhdGgoImZvbyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRmlsZVBhdGgoImJhci54bWwiKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRI
X1NFUF8gImJhci54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKENvbmNhdFBhdGhz
VGVzdCwgV29ya3NXaGVuUGF0aDFFbmRzV2l0aFBhdGhTZXApIHsKKyAgRmlsZVBhdGggYWN0dWFs
ID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiYmFy
LnhtbCIpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFj
dHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMUJlaW5nRW1w
dHkpIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRo
KCIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRo
KCJiYXIueG1sIikpOworICBFWFBFQ1RfRVEoImJhci54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOwor
fQorCitURVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDJCZWluZ0VtcHR5KSB7CisgIEZpbGVQYXRo
IGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiksIEZpbGVQYXRo
KCIiKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sIGFjdHVhbC5zdHJpbmco
KSk7Cit9CisKK1RFU1QoQ29uY2F0UGF0aHNUZXN0LCBCb3RoUGF0aEJlaW5nRW1wdHkpIHsKKyAg
RmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCIiKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCIiKSk7Cisg
IEVYUEVDVF9FUSgiIiwgYWN0dWFsLnN0cmluZygpKTsKK30KKworVEVTVChDb25jYXRQYXRoc1Rl
c3QsIFBhdGgxQ29udGFpbnNQYXRoU2VwKSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRo
OjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvb2Jhci54
bWwiKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1RfUEFU
SF9TRVBfICJmb29iYXIueG1sIiwKKyAgICAgICAgICAgIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisK
K1RFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMkNvbnRhaW5zUGF0aFNlcCkgeworICBGaWxlUGF0
aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoCisgICAgICBGaWxlUGF0aCgiZm9vIiBH
VEVTVF9QQVRIX1NFUF8pLAorICAgICAgRmlsZVBhdGgoImJhciIgR1RFU1RfUEFUSF9TRVBfICJi
YXIueG1sIikpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNU
X1BBVEhfU0VQXyAiYmFyLnhtbCIsCisgICAgICAgICAgICBhY3R1YWwuc3RyaW5nKCkpOworfQor
CitURVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDJFbmRzV2l0aFBhdGhTZXApIHsKKyAgRmlsZVBh
dGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJiYXIiIEdURVNU
X1BBVEhfU0VQXykpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdU
RVNUX1BBVEhfU0VQXywgYWN0dWFsLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlVHJhaWxpbmdQ
YXRoU2VwYXJhdG9yICIiIC0+ICIiCitURVNUKFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvclRl
c3QsIEVtcHR5U3RyaW5nKSB7CisgIEVYUEVDVF9FUSgiIiwgRmlsZVBhdGgoIiIpLlJlbW92ZVRy
YWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlVHJhaWxpbmdQ
YXRoU2VwYXJhdG9yICJmb28iIC0+ICJmb28iCitURVNUKFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFy
YXRvclRlc3QsIEZpbGVOb1NsYXNoU3RyaW5nKSB7CisgIEVYUEVDVF9FUSgiZm9vIiwgRmlsZVBh
dGgoImZvbyIpLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKK30KKwor
Ly8gUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28vIiAtPiAiZm9vIgorVEVTVChSZW1v
dmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBTaG91bGRSZW1vdmVUcmFpbGluZ1NlcGFyYXRv
cikgeworICBFWFBFQ1RfRVEoImZvbyIsCisgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRI
X1NFUF8pLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKKyNpZiBHVEVT
VF9IQVNfQUxUX1BBVEhfU0VQXworICBFWFBFQ1RfRVEoImZvbyIsIEZpbGVQYXRoKCJmb28vIiku
UmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuc3RyaW5nKCkpOworI2VuZGlmCit9CisKKy8v
IFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiZm9vL2Jhci8iIC0+ICJmb28vYmFyLyIKK1RF
U1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgU2hvdWxkUmVtb3ZlTGFzdFNlcGFy
YXRvcikgeworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgICAg
ICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQ
XykKKyAgICAgICAgICAgICAgICAuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuc3RyaW5n
KCkpOworfQorCisvLyBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IgImZvby9iYXIiIC0+ICJm
b28vYmFyIgorVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBTaG91bGRSZXR1
cm5Vbm1vZGlmaWVkKSB7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIs
CisgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIpCisgICAg
ICAgICAgICAgICAgLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKK30K
KworVEVTVChEaXJlY3RvcnlUZXN0LCBSb290RGlyZWN0b3J5RXhpc3RzKSB7CisjaWYgR1RFU1Rf
T1NfV0lORE9XUyAgLy8gV2UgYXJlIG9uIFdpbmRvd3MuCisgIGNoYXIgY3VycmVudF9kcml2ZVtf
TUFYX1BBVEhdOyAgLy8gTk9MSU5UCisgIGN1cnJlbnRfZHJpdmVbMF0gPSBzdGF0aWNfY2FzdDxj
aGFyPihfZ2V0ZHJpdmUoKSArICdBJyAtIDEpOworICBjdXJyZW50X2RyaXZlWzFdID0gJzonOwor
ICBjdXJyZW50X2RyaXZlWzJdID0gJ1xcJzsKKyAgY3VycmVudF9kcml2ZVszXSA9ICdcMCc7Cisg
IEVYUEVDVF9UUlVFKEZpbGVQYXRoKGN1cnJlbnRfZHJpdmUpLkRpcmVjdG9yeUV4aXN0cygpKTsK
KyNlbHNlCisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIvIikuRGlyZWN0b3J5RXhpc3RzKCkpOwor
I2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCit9CisKKyNpZiBHVEVTVF9PU19XSU5ET1dTCitU
RVNUKERpcmVjdG9yeVRlc3QsIFJvb3RPZldyb25nRHJpdmVEb2VzTm90RXhpc3RzKSB7CisgIGNv
bnN0IGludCBzYXZlZF9kcml2ZV8gPSBfZ2V0ZHJpdmUoKTsKKyAgLy8gRmluZCBhIGRyaXZlIHRo
YXQgZG9lc24ndCBleGlzdC4gU3RhcnQgd2l0aCAnWicgdG8gYXZvaWQgY29tbW9uIG9uZXMuCisg
IGZvciAoY2hhciBkcml2ZSA9ICdaJzsgZHJpdmUgPj0gJ0EnOyBkcml2ZS0tKQorICAgIGlmIChf
Y2hkcml2ZShkcml2ZSAtICdBJyArIDEpID09IC0xKSB7CisgICAgICBjaGFyIG5vbl9kcml2ZVtf
TUFYX1BBVEhdOyAgLy8gTk9MSU5UCisgICAgICBub25fZHJpdmVbMF0gPSBkcml2ZTsKKyAgICAg
IG5vbl9kcml2ZVsxXSA9ICc6JzsKKyAgICAgIG5vbl9kcml2ZVsyXSA9ICdcXCc7CisgICAgICBu
b25fZHJpdmVbM10gPSAnXDAnOworICAgICAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKG5vbl9kcml2
ZSkuRGlyZWN0b3J5RXhpc3RzKCkpOworICAgICAgYnJlYWs7CisgICAgfQorICBfY2hkcml2ZShz
YXZlZF9kcml2ZV8pOworfQorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKyNpZiAhR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKKy8vIFdpbmRvd3MgQ0UgX2RvZXNfIGNvbnNpZGVyIGFuIGVt
cHR5IGRpcmVjdG9yeSB0byBleGlzdC4KK1RFU1QoRGlyZWN0b3J5VGVzdCwgRW1wdHlQYXRoRGly
ZWN0b3J5RG9lc05vdEV4aXN0KSB7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiIikuRGlyZWN0
b3J5RXhpc3RzKCkpOworfQorI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKwor
VEVTVChEaXJlY3RvcnlUZXN0LCBDdXJyZW50RGlyZWN0b3J5RXhpc3RzKSB7CisjaWYgR1RFU1Rf
T1NfV0lORE9XUyAgLy8gV2UgYXJlIG9uIFdpbmRvd3MuCisjIGlmbmRlZiBfV0lOMzJfQ0UgIC8v
IFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlIGEgY3VycmVudCBkaXJlY3RvcnkuCisKKyAgRVhQRUNU
X1RSVUUoRmlsZVBhdGgoIi4iKS5EaXJlY3RvcnlFeGlzdHMoKSk7CisgIEVYUEVDVF9UUlVFKEZp
bGVQYXRoKCIuXFwiKS5EaXJlY3RvcnlFeGlzdHMoKSk7CisKKyMgZW5kaWYgIC8vIF9XSU4zMl9D
RQorI2Vsc2UKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi4iKS5EaXJlY3RvcnlFeGlzdHMoKSk7
CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIuLyIpLkRpcmVjdG9yeUV4aXN0cygpKTsKKyNlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XUworfQorCisvLyAiZm9vL2JhciIgPT0gZm9vLy9iYXIiID09
ICJmb28vLy9iYXIiCitURVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRpcGxlQ29uc2VjdXRpdmVTZXBh
cGFyYXRvcnNJbk1pZHN0cmluZykgeworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBf
ICJiYXIiLAorICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIi
KS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCisg
ICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBf
ICJiYXIiKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJh
ciIsCisgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFU
SF9TRVBfCisgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8gImJhciIpLnN0cmlu
ZygpKTsKK30KKworLy8gIi9iYXIiID09IC8vYmFyIiA9PSAiLy8vYmFyIgorVEVTVChOb3JtYWxp
emVUZXN0LCBNdWx0aXBsZUNvbnNlY3V0aXZlU2VwYXBhcmF0b3JzQXRTdHJpbmdTdGFydCkgewor
ICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgIEZpbGVQYXRoKEdURVNUX1BB
VEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfICJi
YXIiLAorICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gImJhciIp
LnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKKyAgICBGaWxl
UGF0aChHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAiYmFy
Iikuc3RyaW5nKCkpOworfQorCisvLyAiZm9vLyIgPT0gZm9vLy8iID09ICJmb28vLy8iCitURVNU
KE5vcm1hbGl6ZVRlc3QsIE11bHRpcGxlQ29uc2VjdXRpdmVTZXBhcGFyYXRvcnNBdFN0cmluZ0Vu
ZCkgeworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAgIEZpbGVQYXRoKCJm
b28iIEdURVNUX1BBVEhfU0VQXykuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1Rf
UEFUSF9TRVBfLAorICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRI
X1NFUF8pLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKKyAg
ICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BB
VEhfU0VQXykuc3RyaW5nKCkpOworfQorCisjaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KKwor
Ly8gVGVzdHMgdGhhdCBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBhcmUgbm9y
bWFsaXplZAorLy8gcmVnYXJkbGVzcyBvZiB0aGVpciBjb21iaW5hdGlvbiAoZS5nLiAiZm9vXCIg
PT0iZm9vL1wiID09CisvLyAiZm9vXFwvIikuCitURVNUKE5vcm1hbGl6ZVRlc3QsIE1peEFsdGVy
bmF0ZVNlcGFyYXRvckF0U3RyaW5nRW5kKSB7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRI
X1NFUF8sCisgICAgICAgICAgICBGaWxlUGF0aCgiZm9vLyIpLnN0cmluZygpKTsKKyAgRVhQRUNU
X0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKKyAgICAgICAgICAgIEZpbGVQYXRoKCJmb28iIEdU
RVNUX1BBVEhfU0VQXyAiLyIpLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BB
VEhfU0VQXywKKyAgICAgICAgICAgIEZpbGVQYXRoKCJmb28vLyIgR1RFU1RfUEFUSF9TRVBfKS5z
dHJpbmcoKSk7Cit9CisKKyNlbmRpZgorCitURVNUKEFzc2lnbm1lbnRPcGVyYXRvclRlc3QsIERl
ZmF1bHRBc3NpZ25lZFRvTm9uRGVmYXVsdCkgeworICBGaWxlUGF0aCBkZWZhdWx0X3BhdGg7Cisg
IEZpbGVQYXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgiKTsKKyAgbm9uX2RlZmF1bHRfcGF0aCA9
IGRlZmF1bHRfcGF0aDsKKyAgRVhQRUNUX0VRKCIiLCBub25fZGVmYXVsdF9wYXRoLnN0cmluZygp
KTsKKyAgRVhQRUNUX0VRKCIiLCBkZWZhdWx0X3BhdGguc3RyaW5nKCkpOyAgLy8gUkhTIHZhciBp
cyB1bmNoYW5nZWQuCit9CisKK1RFU1QoQXNzaWdubWVudE9wZXJhdG9yVGVzdCwgTm9uRGVmYXVs
dEFzc2lnbmVkVG9EZWZhdWx0KSB7CisgIEZpbGVQYXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgi
KTsKKyAgRmlsZVBhdGggZGVmYXVsdF9wYXRoOworICBkZWZhdWx0X3BhdGggPSBub25fZGVmYXVs
dF9wYXRoOworICBFWFBFQ1RfRVEoInBhdGgiLCBkZWZhdWx0X3BhdGguc3RyaW5nKCkpOworICBF
WFBFQ1RfRVEoInBhdGgiLCBub25fZGVmYXVsdF9wYXRoLnN0cmluZygpKTsgIC8vIFJIUyB2YXIg
aXMgdW5jaGFuZ2VkLgorfQorCitURVNUKEFzc2lnbm1lbnRPcGVyYXRvclRlc3QsIENvbnN0QXNz
aWduZWRUb05vbkNvbnN0KSB7CisgIGNvbnN0IEZpbGVQYXRoIGNvbnN0X2RlZmF1bHRfcGF0aCgi
Y29uc3RfcGF0aCIpOworICBGaWxlUGF0aCBub25fZGVmYXVsdF9wYXRoKCJwYXRoIik7CisgIG5v
bl9kZWZhdWx0X3BhdGggPSBjb25zdF9kZWZhdWx0X3BhdGg7CisgIEVYUEVDVF9FUSgiY29uc3Rf
cGF0aCIsIG5vbl9kZWZhdWx0X3BhdGguc3RyaW5nKCkpOworfQorCitjbGFzcyBEaXJlY3RvcnlD
cmVhdGlvblRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIHZvaWQg
U2V0VXAoKSB7CisgICAgdGVzdGRhdGFfcGF0aF8uU2V0KEZpbGVQYXRoKAorICAgICAgICBUZW1w
RGlyKCkgKyBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmcoKSArCisgICAgICAgICJf
ZGlyZWN0b3J5X2NyZWF0aW9uIiBHVEVTVF9QQVRIX1NFUF8gInRlc3QiIEdURVNUX1BBVEhfU0VQ
XykpOworICAgIHRlc3RkYXRhX2ZpbGVfLlNldCh0ZXN0ZGF0YV9wYXRoXy5SZW1vdmVUcmFpbGlu
Z1BhdGhTZXBhcmF0b3IoKSk7CisKKyAgICB1bmlxdWVfZmlsZTBfLlNldChGaWxlUGF0aDo6TWFr
ZUZpbGVOYW1lKHRlc3RkYXRhX3BhdGhfLCBGaWxlUGF0aCgidW5pcXVlIiksCisgICAgICAgIDAs
ICJ0eHQiKSk7CisgICAgdW5pcXVlX2ZpbGUxXy5TZXQoRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZSh0
ZXN0ZGF0YV9wYXRoXywgRmlsZVBhdGgoInVuaXF1ZSIpLAorICAgICAgICAxLCAidHh0IikpOwor
CisgICAgcmVtb3ZlKHRlc3RkYXRhX2ZpbGVfLmNfc3RyKCkpOworICAgIHJlbW92ZSh1bmlxdWVf
ZmlsZTBfLmNfc3RyKCkpOworICAgIHJlbW92ZSh1bmlxdWVfZmlsZTFfLmNfc3RyKCkpOworICAg
IHBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKKyAgfQorCisgIHZpcnR1YWwg
dm9pZCBUZWFyRG93bigpIHsKKyAgICByZW1vdmUodGVzdGRhdGFfZmlsZV8uY19zdHIoKSk7Cisg
ICAgcmVtb3ZlKHVuaXF1ZV9maWxlMF8uY19zdHIoKSk7CisgICAgcmVtb3ZlKHVuaXF1ZV9maWxl
MV8uY19zdHIoKSk7CisgICAgcG9zaXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhfLmNfc3RyKCkpOwor
ICB9CisKKyAgdm9pZCBDcmVhdGVUZXh0RmlsZShjb25zdCBjaGFyKiBmaWxlbmFtZSkgeworICAg
IEZJTEUqIGYgPSBwb3NpeDo6Rk9wZW4oZmlsZW5hbWUsICJ3Iik7CisgICAgZnByaW50ZihmLCAi
dGV4dFxuIik7CisgICAgZmNsb3NlKGYpOworICB9CisKKyAgLy8gU3RyaW5ncyByZXByZXNlbnRp
bmcgYSBkaXJlY3RvcnkgYW5kIGEgZmlsZSwgd2l0aCBpZGVudGljYWwgcGF0aHMKKyAgLy8gZXhj
ZXB0IGZvciB0aGUgdHJhaWxpbmcgc2VwYXJhdG9yIGNoYXJhY3RlciB0aGF0IGRpc3RpbnF1aXNo
ZXMKKyAgLy8gYSBkaXJlY3RvcnkgbmFtZWQgJ3Rlc3QnIGZyb20gYSBmaWxlIG5hbWVkICd0ZXN0
Jy4gRXhhbXBsZSBuYW1lczoKKyAgRmlsZVBhdGggdGVzdGRhdGFfcGF0aF87ICAvLyAiL3RtcC9k
aXJlY3RvcnlfY3JlYXRpb24vdGVzdC8iCisgIEZpbGVQYXRoIHRlc3RkYXRhX2ZpbGVfOyAgLy8g
Ii90bXAvZGlyZWN0b3J5X2NyZWF0aW9uL3Rlc3QiCisgIEZpbGVQYXRoIHVuaXF1ZV9maWxlMF87
ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRpb24vdGVzdC91bmlxdWUudHh0IgorICBGaWxlUGF0
aCB1bmlxdWVfZmlsZTFfOyAgLy8gIi90bXAvZGlyZWN0b3J5X2NyZWF0aW9uL3Rlc3QvdW5pcXVl
XzEudHh0IgorfTsKKworVEVTVF9GKERpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlRGlyZWN0
b3JpZXNSZWN1cnNpdmVseSkgeworICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfcGF0aF8uRGlyZWN0
b3J5RXhpc3RzKCkpIDw8IHRlc3RkYXRhX3BhdGhfLnN0cmluZygpOworICBFWFBFQ1RfVFJVRSh0
ZXN0ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOworICBFWFBFQ1Rf
VFJVRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlzdHMoKSk7Cit9CisKK1RFU1RfRihEaXJl
Y3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURpcmVjdG9yaWVzRm9yQWxyZWFkeUV4aXN0aW5nUGF0
aCkgeworICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfcGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkpIDw8
IHRlc3RkYXRhX3BhdGhfLnN0cmluZygpOworICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5D
cmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOworICAvLyBDYWxsICdjcmVhdGUnIGFnYWlu
Li4uIHNob3VsZCBzdGlsbCBzdWNjZWVkLgorICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5D
cmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOworfQorCitURVNUX0YoRGlyZWN0b3J5Q3Jl
YXRpb25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0FuZFVuaXF1ZUZpbGVuYW1lKSB7CisgIEZpbGVQ
YXRoIGZpbGVfcGF0aChGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFtZSh0ZXN0ZGF0YV9w
YXRoXywKKyAgICAgIEZpbGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIpKTsKKyAgRVhQRUNUX0VRKHVu
aXF1ZV9maWxlMF8uc3RyaW5nKCksIGZpbGVfcGF0aC5zdHJpbmcoKSk7CisgIEVYUEVDVF9GQUxT
RShmaWxlX3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8gZmlsZSBub3QgdGhlcmUK
KworICB0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCk7CisgIEVY
UEVDVF9GQUxTRShmaWxlX3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8gZmlsZSBz
dGlsbCBub3QgdGhlcmUKKyAgQ3JlYXRlVGV4dEZpbGUoZmlsZV9wYXRoLmNfc3RyKCkpOworICBF
WFBFQ1RfVFJVRShmaWxlX3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOworCisgIEZpbGVQ
YXRoIGZpbGVfcGF0aDIoRmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5hbWUodGVzdGRhdGFf
cGF0aF8sCisgICAgICBGaWxlUGF0aCgidW5pcXVlIiksICJ0eHQiKSk7CisgIEVYUEVDVF9FUSh1
bmlxdWVfZmlsZTFfLnN0cmluZygpLCBmaWxlX3BhdGgyLnN0cmluZygpKTsKKyAgRVhQRUNUX0ZB
TFNFKGZpbGVfcGF0aDIuRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8gZmlsZSBub3QgdGhl
cmUKKyAgQ3JlYXRlVGV4dEZpbGUoZmlsZV9wYXRoMi5jX3N0cigpKTsKKyAgRVhQRUNUX1RSVUUo
ZmlsZV9wYXRoMi5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7Cit9CisKK1RFU1RfRihEaXJlY3Rv
cnlDcmVhdGlvblRlc3QsIENyZWF0ZURpcmVjdG9yaWVzRmFpbCkgeworICAvLyBmb3JjZSBhIGZh
aWx1cmUgYnkgcHV0dGluZyBhIGZpbGUgd2hlcmUgd2Ugd2lsbCB0cnkgdG8gY3JlYXRlIGEgZGly
ZWN0b3J5LgorICBDcmVhdGVUZXh0RmlsZSh0ZXN0ZGF0YV9maWxlXy5jX3N0cigpKTsKKyAgRVhQ
RUNUX1RSVUUodGVzdGRhdGFfZmlsZV8uRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOworICBFWFBF
Q1RfRkFMU0UodGVzdGRhdGFfZmlsZV8uRGlyZWN0b3J5RXhpc3RzKCkpOworICBFWFBFQ1RfRkFM
U0UodGVzdGRhdGFfZmlsZV8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKTsKK30KKwor
VEVTVChOb0RpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlTm9EaXJlY3Rvcmllc0ZvckRlZmF1
bHRYbWxGaWxlKSB7CisgIGNvbnN0IEZpbGVQYXRoIHRlc3RfZGV0YWlsX3htbCgidGVzdF9kZXRh
aWwueG1sIik7CisgIEVYUEVDVF9GQUxTRSh0ZXN0X2RldGFpbF94bWwuQ3JlYXRlRGlyZWN0b3Jp
ZXNSZWN1cnNpdmVseSgpKTsKK30KKworVEVTVChGaWxlUGF0aFRlc3QsIERlZmF1bHRDb25zdHJ1
Y3RvcikgeworICBGaWxlUGF0aCBmcDsKKyAgRVhQRUNUX0VRKCIiLCBmcC5zdHJpbmcoKSk7Cit9
CisKK1RFU1QoRmlsZVBhdGhUZXN0LCBDaGFyQW5kQ29weUNvbnN0cnVjdG9ycykgeworICBjb25z
dCBGaWxlUGF0aCBmcCgic3BpY3kiKTsKKyAgRVhQRUNUX0VRKCJzcGljeSIsIGZwLnN0cmluZygp
KTsKKworICBjb25zdCBGaWxlUGF0aCBmcF9jb3B5KGZwKTsKKyAgRVhQRUNUX0VRKCJzcGljeSIs
IGZwX2NvcHkuc3RyaW5nKCkpOworfQorCitURVNUKEZpbGVQYXRoVGVzdCwgU3RyaW5nQ29uc3Ry
dWN0b3IpIHsKKyAgY29uc3QgRmlsZVBhdGggZnAoc3RkOjpzdHJpbmcoImNpZGVyIikpOworICBF
WFBFQ1RfRVEoImNpZGVyIiwgZnAuc3RyaW5nKCkpOworfQorCitURVNUKEZpbGVQYXRoVGVzdCwg
U2V0KSB7CisgIGNvbnN0IEZpbGVQYXRoIGFwcGxlKCJhcHBsZSIpOworICBGaWxlUGF0aCBtYWMo
Im1hYyIpOworICBtYWMuU2V0KGFwcGxlKTsgIC8vIEltcGxlbWVudCBTZXQoKSBzaW5jZSBvdmVy
bG9hZGluZyBvcGVyYXRvcj0gaXMgZm9yYmlkZGVuLgorICBFWFBFQ1RfRVEoImFwcGxlIiwgbWFj
LnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJhcHBsZSIsIGFwcGxlLnN0cmluZygpKTsKK30KKwor
VEVTVChGaWxlUGF0aFRlc3QsIFRvU3RyaW5nKSB7CisgIGNvbnN0IEZpbGVQYXRoIGZpbGUoImRy
aW5rIik7CisgIEVYUEVDVF9FUSgiZHJpbmsiLCBmaWxlLnN0cmluZygpKTsKK30KKworVEVTVChG
aWxlUGF0aFRlc3QsIFJlbW92ZUV4dGVuc2lvbikgeworICBFWFBFQ1RfRVEoImFwcCIsIEZpbGVQ
YXRoKCJhcHAuY2MiKS5SZW1vdmVFeHRlbnNpb24oImNjIikuc3RyaW5nKCkpOworICBFWFBFQ1Rf
RVEoImFwcCIsIEZpbGVQYXRoKCJhcHAuZXhlIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5zdHJp
bmcoKSk7CisgIEVYUEVDVF9FUSgiQVBQIiwgRmlsZVBhdGgoIkFQUC5FWEUiKS5SZW1vdmVFeHRl
bnNpb24oImV4ZSIpLnN0cmluZygpKTsKK30KKworVEVTVChGaWxlUGF0aFRlc3QsIFJlbW92ZUV4
dGVuc2lvbldoZW5UaGVyZUlzTm9FeHRlbnNpb24pIHsKKyAgRVhQRUNUX0VRKCJhcHAiLCBGaWxl
UGF0aCgiYXBwIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5zdHJpbmcoKSk7Cit9CisKK1RFU1Qo
RmlsZVBhdGhUZXN0LCBJc0RpcmVjdG9yeSkgeworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImNv
bGEiKS5Jc0RpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImtvYWxhIiBHVEVT
VF9QQVRIX1NFUF8pLklzRGlyZWN0b3J5KCkpOworI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBf
CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJrb2FsYS8iKS5Jc0RpcmVjdG9yeSgpKTsKKyNlbmRp
ZgorfQorCitURVNUKEZpbGVQYXRoVGVzdCwgSXNBYnNvbHV0ZVBhdGgpIHsKKyAgRVhQRUNUX0ZB
TFNFKEZpbGVQYXRoKCJpcyIgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIpLklzQWJzb2x1dGVQ
YXRoKCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIiIpLklzQWJzb2x1dGVQYXRoKCkpOwor
I2lmIEdURVNUX09TX1dJTkRPV1MKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImM6XFwiIEdURVNU
X1BBVEhfU0VQXyAiaXNfbm90IgorICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NF
UF8gInJlbGF0aXZlIikuSXNBYnNvbHV0ZVBhdGgoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0
aCgiYzpmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuSXNBYnNvbHV0ZVBhdGgoKSk7CisgIEVY
UEVDVF9UUlVFKEZpbGVQYXRoKCJjOi8iIEdURVNUX1BBVEhfU0VQXyAiaXNfbm90IgorICAgICAg
ICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIikuSXNBYnNvbHV0ZVBh
dGgoKSk7CisjZWxzZQorICBFWFBFQ1RfVFJVRShGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gImlz
X25vdCIgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIpCisgICAgICAgICAgICAgIC5Jc0Fic29s
dXRlUGF0aCgpKTsKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworfQorCitURVNUKEZpbGVQ
YXRoVGVzdCwgSXNSb290RGlyZWN0b3J5KSB7CisjaWYgR1RFU1RfT1NfV0lORE9XUworICBFWFBF
Q1RfVFJVRShGaWxlUGF0aCgiYTpcXCIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX1RS
VUUoRmlsZVBhdGgoIlo6LyIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX1RSVUUoRmls
ZVBhdGgoImU6Ly8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0
aCgiIikuSXNSb290RGlyZWN0b3J5KCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImI6Iiku
SXNSb290RGlyZWN0b3J5KCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImI6YSIpLklzUm9v
dERpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCI4Oi8iKS5Jc1Jvb3REaXJl
Y3RvcnkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiY3wvIikuSXNSb290RGlyZWN0b3J5
KCkpOworI2Vsc2UKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi8iKS5Jc1Jvb3REaXJlY3Rvcnko
KSk7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIvLyIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAg
RVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9G
QUxTRShGaWxlUGF0aCgiXFwiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9GQUxTRShG
aWxlUGF0aCgiL3giKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisjZW5kaWYKK30KKworfSAgLy8gbmFt
ZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZmls
dGVyLXVuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0
LWZpbHRlci11bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzBiNWJkOWE1Y2ZjNWJmZThjNjhhZjFi
NjQ3ODk5ZTFmZWJkYTY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdC5weQpAQCAtMCwwICsxLDYzNiBAQAor
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA1IEdvb2dsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJVbml0IHRlc3QgZm9y
IEdvb2dsZSBUZXN0IHRlc3QgZmlsdGVycy4KKworQSB1c2VyIGNhbiBzcGVjaWZ5IHdoaWNoIHRl
c3QocykgaW4gYSBHb29nbGUgVGVzdCBwcm9ncmFtIHRvIHJ1biB2aWEgZWl0aGVyCit0aGUgR1RF
U1RfRklMVEVSIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZSAtLWd0ZXN0X2ZpbHRlciBmbGFn
LgorVGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5IGJ5IGludm9raW5nCitnb29n
bGV0ZXN0LWZpbHRlci11bml0dGVzdF8gKGEgcHJvZ3JhbSB3cml0dGVuIHdpdGggR29vZ2xlIFRl
c3QpIHdpdGggZGlmZmVyZW50CitlbnZpcm9ubWVudHMgYW5kIGNvbW1hbmQgbGluZSBmbGFncy4K
KworTm90ZSB0aGF0IHRlc3Qgc2hhcmRpbmcgbWF5IGFsc28gaW5mbHVlbmNlIHdoaWNoIHRlc3Rz
IGFyZSBmaWx0ZXJlZC4gVGhlcmVmb3JlLAord2UgdGVzdCB0aGF0IGhlcmUgYWxzby4KKyIiIgor
CitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHNldHMKK2ltcG9ydCBzeXMKK2ltcG9ydCBn
dGVzdF90ZXN0X3V0aWxzCisKKyMgQ29uc3RhbnRzLgorCisjIENoZWNrcyBpZiB0aGlzIHBsYXRm
b3JtIGNhbiBwYXNzIGVtcHR5IGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBjaGlsZAorIyBwcm9j
ZXNzZXMuICBXZSBzZXQgYW4gZW52IHZhcmlhYmxlIHRvIGFuIGVtcHR5IHN0cmluZyBhbmQgaW52
b2tlIGEgcHl0aG9uCisjIHNjcmlwdCBpbiBhIHN1YnByb2Nlc3MgdG8gcHJpbnQgd2hldGhlciB0
aGUgdmFyaWFibGUgaXMgU1RJTEwgaW4KKyMgb3MuZW52aXJvbi4gIFdlIHRoZW4gdXNlICdldmFs
JyB0byBwYXJzZSB0aGUgY2hpbGQncyBvdXRwdXQgc28gdGhhdCBhbgorIyBleGNlcHRpb24gaXMg
dGhyb3duIGlmIHRoZSBpbnB1dCBpcyBhbnl0aGluZyBvdGhlciB0aGFuICdUcnVlJyBub3IgJ0Zh
bHNlJy4KK0NBTl9QQVNTX0VNUFRZX0VOViA9IEZhbHNlCitpZiBzeXMuZXhlY3V0YWJsZToKKyAg
b3MuZW52aXJvblsnRU1QVFlfVkFSJ10gPSAnJworICBjaGlsZCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
U3VicHJvY2VzcygKKyAgICAgIFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgJ2ltcG9ydCBvczsgcHJp
bnQgXCdFTVBUWV9WQVJcJyBpbiBvcy5lbnZpcm9uJ10pCisgIENBTl9QQVNTX0VNUFRZX0VOViA9
IGV2YWwoY2hpbGQub3V0cHV0KQorCisKKyMgQ2hlY2sgaWYgdGhpcyBwbGF0Zm9ybSBjYW4gdW5z
ZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluIGNoaWxkIHByb2Nlc3Nlcy4KKyMgV2Ugc2V0IGFu
IGVudiB2YXJpYWJsZSB0byBhIG5vbi1lbXB0eSBzdHJpbmcsIHVuc2V0IGl0LCBhbmQgaW52b2tl
CisjIGEgcHl0aG9uIHNjcmlwdCBpbiBhIHN1YnByb2Nlc3MgdG8gcHJpbnQgd2hldGhlciB0aGUg
dmFyaWFibGUKKyMgaXMgTk8gTE9OR0VSIGluIG9zLmVudmlyb24uCisjIFdlIHVzZSAnZXZhbCcg
dG8gcGFyc2UgdGhlIGNoaWxkJ3Mgb3V0cHV0IHNvIHRoYXQgYW4gZXhjZXB0aW9uCisjIGlzIHRo
cm93biBpZiB0aGUgaW5wdXQgaXMgbmVpdGhlciAnVHJ1ZScgbm9yICdGYWxzZScuCitDQU5fVU5T
RVRfRU5WID0gRmFsc2UKK2lmIHN5cy5leGVjdXRhYmxlOgorICBvcy5lbnZpcm9uWydVTlNFVF9W
QVInXSA9ICdYJworICBkZWwgb3MuZW52aXJvblsnVU5TRVRfVkFSJ10KKyAgY2hpbGQgPSBndGVz
dF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgICBbc3lzLmV4ZWN1dGFibGUsICctYycsICdp
bXBvcnQgb3M7IHByaW50IFwnVU5TRVRfVkFSXCcgbm90IGluIG9zLmVudmlyb24nCisgICAgICBd
KQorICBDQU5fVU5TRVRfRU5WID0gZXZhbChjaGlsZC5vdXRwdXQpCisKKworIyBDaGVja3MgaWYg
d2Ugc2hvdWxkIHRlc3Qgd2l0aCBhbiBlbXB0eSBmaWx0ZXIuIFRoaXMgZG9lc24ndAorIyBtYWtl
IHNlbnNlIG9uIHBsYXRmb3JtcyB0aGF0IGNhbm5vdCBwYXNzIGVtcHR5IGVudiB2YXJpYWJsZXMg
KFdpbjMyKQorIyBhbmQgb24gcGxhdGZvcm1zIHRoYXQgY2Fubm90IHVuc2V0IHZhcmlhYmxlcyAo
c2luY2Ugd2UgY2Fubm90IHRlbGwKKyMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAiIiBhbmQgTlVM
TCAtLSBCb3JsYW5kIGFuZCBTb2xhcmlzIDwgNS4xMCkKK0NBTl9URVNUX0VNUFRZX0ZJTFRFUiA9
IChDQU5fUEFTU19FTVBUWV9FTlYgYW5kIENBTl9VTlNFVF9FTlYpCisKKworIyBUaGUgZW52aXJv
bm1lbnQgdmFyaWFibGUgZm9yIHNwZWNpZnlpbmcgdGhlIHRlc3QgZmlsdGVycy4KK0ZJTFRFUl9F
TlZfVkFSID0gJ0dURVNUX0ZJTFRFUicKKworIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZv
ciB0ZXN0IHNoYXJkaW5nLgorVE9UQUxfU0hBUkRTX0VOVl9WQVIgPSAnR1RFU1RfVE9UQUxfU0hB
UkRTJworU0hBUkRfSU5ERVhfRU5WX1ZBUiA9ICdHVEVTVF9TSEFSRF9JTkRFWCcKK1NIQVJEX1NU
QVRVU19GSUxFX0VOVl9WQVIgPSAnR1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEUnCisKKyMgVGhlIGNv
bW1hbmQgbGluZSBmbGFnIGZvciBzcGVjaWZ5aW5nIHRoZSB0ZXN0IGZpbHRlcnMuCitGSUxURVJf
RkxBRyA9ICdndGVzdF9maWx0ZXInCisKKyMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciBpbmNs
dWRpbmcgZGlzYWJsZWQgdGVzdHMuCitBTFNPX1JVTl9ESVNBQkxFRF9URVNUU19GTEFHID0gJ2d0
ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzJworCisjIENvbW1hbmQgdG8gcnVuIHRoZSBnb29n
bGV0ZXN0LWZpbHRlci11bml0dGVzdF8gcHJvZ3JhbS4KK0NPTU1BTkQgPSBndGVzdF90ZXN0X3V0
aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3RfJykK
KworIyBSZWdleCBmb3IgZGV0ZXJtaW5pbmcgd2hldGhlciBwYXJhbWV0ZXJpemVkIHRlc3RzIGFy
ZSBlbmFibGVkIGluIHRoZSBiaW5hcnkuCitQQVJBTV9URVNUX1JFR0VYID0gcmUuY29tcGlsZShy
Jy9QYXJhbVRlc3QnKQorCisjIFJlZ2V4IGZvciBwYXJzaW5nIHRlc3QgY2FzZSBuYW1lcyBmcm9t
IEdvb2dsZSBUZXN0J3Mgb3V0cHV0LgorVEVTVF9DQVNFX1JFR0VYID0gcmUuY29tcGlsZShyJ15c
W1wtK1xdIFxkKyB0ZXN0cz8gZnJvbSAoXHcrKC9cdyspPyknKQorCisjIFJlZ2V4IGZvciBwYXJz
aW5nIHRlc3QgbmFtZXMgZnJvbSBHb29nbGUgVGVzdCdzIG91dHB1dC4KK1RFU1RfUkVHRVggPSBy
ZS5jb21waWxlKHInXlxbXHMqUlVOXHMqXF0uKlwuKFx3KygvXHcrKT8pJykKKworIyBUaGUgY29t
bWFuZCBsaW5lIGZsYWcgdG8gdGVsbCBHb29nbGUgVGVzdCB0byBvdXRwdXQgdGhlIGxpc3Qgb2Yg
dGVzdHMgaXQKKyMgd2lsbCBydW4uCitMSVNUX1RFU1RTX0ZMQUcgPSAnLS1ndGVzdF9saXN0X3Rl
c3RzJworCisjIEluZGljYXRlcyB3aGV0aGVyIEdvb2dsZSBUZXN0IHN1cHBvcnRzIGRlYXRoIHRl
c3RzLgorU1VQUE9SVFNfREVBVEhfVEVTVFMgPSAnSGFzRGVhdGhUZXN0JyBpbiBndGVzdF90ZXN0
X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgW0NPTU1BTkQsIExJU1RfVEVTVFNfRkxBR10pLm91dHB1
dAorCisjIEZ1bGwgbmFtZXMgb2YgYWxsIHRlc3RzIGluIGdvb2dsZXRlc3QtZmlsdGVyLXVuaXR0
ZXN0c18uCitQQVJBTV9URVNUUyA9IFsKKyAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMCcsCisg
ICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzEnLAorICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8w
JywKKyAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMScsCisgICAgJ1NlcVEvUGFyYW1UZXN0LlRl
c3RYLzAnLAorICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WC8xJywKKyAgICAnU2VxUS9QYXJhbVRl
c3QuVGVzdFkvMCcsCisgICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RZLzEnLAorICAgIF0KKworRElT
QUJMRURfVEVTVFMgPSBbCisgICAgJ0JhclRlc3QuRElTQUJMRURfVGVzdEZvdXInLAorICAgICdC
YXJUZXN0LkRJU0FCTEVEX1Rlc3RGaXZlJywKKyAgICAnQmF6VGVzdC5ESVNBQkxFRF9UZXN0Qycs
CisgICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnLAorICAgICdESVNBQkxFRF9Gb29iYXJU
ZXN0LkRJU0FCTEVEX1Rlc3QyJywKKyAgICAnRElTQUJMRURfRm9vYmFyYmF6VGVzdC5UZXN0QScs
CisgICAgXQorCitpZiBTVVBQT1JUU19ERUFUSF9URVNUUzoKKyAgREVBVEhfVEVTVFMgPSBbCisg
ICAgJ0hhc0RlYXRoVGVzdC5UZXN0MScsCisgICAgJ0hhc0RlYXRoVGVzdC5UZXN0MicsCisgICAg
XQorZWxzZToKKyAgREVBVEhfVEVTVFMgPSBbXQorCisjIEFsbCB0aGUgbm9uLWRpc2FibGVkIHRl
c3RzLgorQUNUSVZFX1RFU1RTID0gWworICAgICdGb29UZXN0LkFiYycsCisgICAgJ0Zvb1Rlc3Qu
WHl6JywKKworICAgICdCYXJUZXN0LlRlc3RPbmUnLAorICAgICdCYXJUZXN0LlRlc3RUd28nLAor
ICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCisKKyAgICAnQmF6VGVzdC5UZXN0T25lJywKKyAgICAn
QmF6VGVzdC5UZXN0QScsCisgICAgJ0JhelRlc3QuVGVzdEInLAorICAgIF0gKyBERUFUSF9URVNU
UyArIFBBUkFNX1RFU1RTCisKK3BhcmFtX3Rlc3RzX3ByZXNlbnQgPSBOb25lCisKKyMgVXRpbGl0
aWVzLgorCitlbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkKKworCitkZWYgU2V0RW52VmFyKGVu
dl92YXIsIHZhbHVlKToKKyAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxlIHRvICd2YWx1ZSc7IHVu
c2V0cyBpdCB3aGVuICd2YWx1ZScgaXMgTm9uZS4iIiIKKworICBpZiB2YWx1ZSBpcyBub3QgTm9u
ZToKKyAgICBlbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKKyAgZWxpZiBlbnZfdmFyIGluIGVudmly
b246CisgICAgZGVsIGVudmlyb25bZW52X3Zhcl0KKworCitkZWYgUnVuQW5kUmV0dXJuT3V0cHV0
KGFyZ3MgPSBOb25lKToKKyAgIiIiUnVucyB0aGUgdGVzdCBwcm9ncmFtIGFuZCByZXR1cm5zIGl0
cyBvdXRwdXQuIiIiCisKKyAgcmV0dXJuIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhbQ09N
TUFORF0gKyAoYXJncyBvciBbXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZW52PWVudmlyb24pLm91dHB1dAorCisKK2RlZiBSdW5BbmRFeHRyYWN0VGVzdExpc3QoYXJn
cyA9IE5vbmUpOgorICAiIiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0gYW5kIHJldHVybnMgaXRzIGV4
aXQgY29kZSBhbmQgYSBsaXN0IG9mIHRlc3RzIHJ1bi4iIiIKKworICBwID0gZ3Rlc3RfdGVzdF91
dGlscy5TdWJwcm9jZXNzKFtDT01NQU5EXSArIChhcmdzIG9yIFtdKSwgZW52PWVudmlyb24pCisg
IHRlc3RzX3J1biA9IFtdCisgIHRlc3RfY2FzZSA9ICcnCisgIHRlc3QgPSAnJworICBmb3IgbGlu
ZSBpbiBwLm91dHB1dC5zcGxpdCgnXG4nKToKKyAgICBtYXRjaCA9IFRFU1RfQ0FTRV9SRUdFWC5t
YXRjaChsaW5lKQorICAgIGlmIG1hdGNoIGlzIG5vdCBOb25lOgorICAgICAgdGVzdF9jYXNlID0g
bWF0Y2guZ3JvdXAoMSkKKyAgICBlbHNlOgorICAgICAgbWF0Y2ggPSBURVNUX1JFR0VYLm1hdGNo
KGxpbmUpCisgICAgICBpZiBtYXRjaCBpcyBub3QgTm9uZToKKyAgICAgICAgdGVzdCA9IG1hdGNo
Lmdyb3VwKDEpCisgICAgICAgIHRlc3RzX3J1bi5hcHBlbmQodGVzdF9jYXNlICsgJy4nICsgdGVz
dCkKKyAgcmV0dXJuICh0ZXN0c19ydW4sIHAuZXhpdF9jb2RlKQorCisKK2RlZiBJbnZva2VXaXRo
TW9kaWZpZWRFbnYoZXh0cmFfZW52LCBmdW5jdGlvbiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgIiIi
UnVucyB0aGUgZ2l2ZW4gZnVuY3Rpb24gYW5kIGFyZ3VtZW50cyBpbiBhIG1vZGlmaWVkIGVudmly
b25tZW50LiIiIgorICB0cnk6CisgICAgb3JpZ2luYWxfZW52ID0gZW52aXJvbi5jb3B5KCkKKyAg
ICBlbnZpcm9uLnVwZGF0ZShleHRyYV9lbnYpCisgICAgcmV0dXJuIGZ1bmN0aW9uKCphcmdzLCAq
Kmt3YXJncykKKyAgZmluYWxseToKKyAgICBlbnZpcm9uLmNsZWFyKCkKKyAgICBlbnZpcm9uLnVw
ZGF0ZShvcmlnaW5hbF9lbnYpCisKKworZGVmIFJ1bldpdGhTaGFyZGluZyh0b3RhbF9zaGFyZHMs
IHNoYXJkX2luZGV4LCBjb21tYW5kKToKKyAgIiIiUnVucyBhIHRlc3QgcHJvZ3JhbSBzaGFyZCBh
bmQgcmV0dXJucyBleGl0IGNvZGUgYW5kIGEgbGlzdCBvZiB0ZXN0cyBydW4uIiIiCisKKyAgZXh0
cmFfZW52ID0ge1NIQVJEX0lOREVYX0VOVl9WQVI6IHN0cihzaGFyZF9pbmRleCksCisgICAgICAg
ICAgICAgICBUT1RBTF9TSEFSRFNfRU5WX1ZBUjogc3RyKHRvdGFsX3NoYXJkcyl9CisgIHJldHVy
biBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LCBSdW5BbmRFeHRyYWN0VGVzdExpc3Qs
IGNvbW1hbmQpCisKKyMgVGhlIHVuaXQgdGVzdC4KKworCitjbGFzcyBHVGVzdEZpbHRlclVuaXRU
ZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJUZXN0cyB0aGUgZW52IHZhcmlh
YmxlIG9yIHRoZSBjb21tYW5kIGxpbmUgZmxhZyB0byBmaWx0ZXIgdGVzdHMuIiIiCisKKyAgIyBV
dGlsaXRpZXMuCisKKyAgZGVmIEFzc2VydFNldEVxdWFsKHNlbGYsIGxocywgcmhzKToKKyAgICAi
IiJBc3NlcnRzIHRoYXQgdHdvIHNldHMgYXJlIGVxdWFsLiIiIgorCisgICAgZm9yIGVsZW0gaW4g
bGhzOgorICAgICAgc2VsZi5hc3NlcnRfKGVsZW0gaW4gcmhzLCAnJXMgaW4gJXMnICUgKGVsZW0s
IHJocykpCisKKyAgICBmb3IgZWxlbSBpbiByaHM6CisgICAgICBzZWxmLmFzc2VydF8oZWxlbSBp
biBsaHMsICclcyBpbiAlcycgJSAoZWxlbSwgbGhzKSkKKworICBkZWYgQXNzZXJ0UGFydGl0aW9u
SXNWYWxpZChzZWxmLCBzZXRfdmFyLCBsaXN0X29mX3NldHMpOgorICAgICIiIkFzc2VydHMgdGhh
dCBsaXN0X29mX3NldHMgaXMgYSB2YWxpZCBwYXJ0aXRpb24gb2Ygc2V0X3Zhci4iIiIKKworICAg
IGZ1bGxfcGFydGl0aW9uID0gW10KKyAgICBmb3Igc2xpY2VfdmFyIGluIGxpc3Rfb2Zfc2V0czoK
KyAgICAgIGZ1bGxfcGFydGl0aW9uLmV4dGVuZChzbGljZV92YXIpCisgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4oc2V0X3ZhciksIGxlbihmdWxsX3BhcnRpdGlvbikpCisgICAgc2VsZi5hc3NlcnRF
cXVhbChzZXRzLlNldChzZXRfdmFyKSwgc2V0cy5TZXQoZnVsbF9wYXJ0aXRpb24pKQorCisgIGRl
ZiBBZGp1c3RGb3JQYXJhbWV0ZXJpemVkVGVzdHMoc2VsZiwgdGVzdHNfdG9fcnVuKToKKyAgICAi
IiJBZGp1c3QgdGVzdHNfdG9fcnVuIGluIGNhc2UgdmFsdWUgcGFyYW1ldGVyaXplZCB0ZXN0cyBh
cmUgZGlzYWJsZWQuIiIiCisKKyAgICBnbG9iYWwgcGFyYW1fdGVzdHNfcHJlc2VudAorICAgIGlm
IG5vdCBwYXJhbV90ZXN0c19wcmVzZW50OgorICAgICAgcmV0dXJuIGxpc3Qoc2V0cy5TZXQodGVz
dHNfdG9fcnVuKSAtIHNldHMuU2V0KFBBUkFNX1RFU1RTKSkKKyAgICBlbHNlOgorICAgICAgcmV0
dXJuIHRlc3RzX3RvX3J1bgorCisgIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwgZ3Rlc3RfZmlsdGVy
LCB0ZXN0c190b19ydW4pOgorICAgICIiIkNoZWNrcyB0aGF0IHRoZSBiaW5hcnkgcnVucyBjb3Jy
ZWN0IHNldCBvZiB0ZXN0cyBmb3IgYSBnaXZlbiBmaWx0ZXIuIiIiCisKKyAgICB0ZXN0c190b19y
dW4gPSBzZWxmLkFkanVzdEZvclBhcmFtZXRlcml6ZWRUZXN0cyh0ZXN0c190b19ydW4pCisKKyAg
ICAjIEZpcnN0LCB0ZXN0cyB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuCisKKyAgICAj
IFdpbmRvd3MgcmVtb3ZlcyBlbXB0eSB2YXJpYWJsZXMgZnJvbSB0aGUgZW52aXJvbm1lbnQgd2hl
biBwYXNzaW5nIGl0CisgICAgIyB0byBhIG5ldyBwcm9jZXNzLiAgVGhpcyBtZWFucyBpdCBpcyBp
bXBvc3NpYmxlIHRvIHBhc3MgYW4gZW1wdHkgZmlsdGVyCisgICAgIyBpbnRvIGEgcHJvY2VzcyB1
c2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuICBIb3dldmVyLCB3ZSBjYW4gc3RpbGwKKyAg
ICAjIHRlc3QgdGhlIGNhc2Ugd2hlbiB0aGUgdmFyaWFibGUgaXMgbm90IHN1cHBsaWVkIChpLmUu
LCBndGVzdF9maWx0ZXIgaXMKKyAgICAjIE5vbmUpLgorICAgICMgcHlsaW50OiBkaXNhYmxlLW1z
Zz1DNjQwMworICAgIGlmIENBTl9URVNUX0VNUFRZX0ZJTFRFUiBvciBndGVzdF9maWx0ZXIgIT0g
Jyc6CisgICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIGd0ZXN0X2ZpbHRlcikKKyAgICAg
IHRlc3RzX3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0TGlzdCgpWzBdCisgICAgICBTZXRFbnZWYXIo
RklMVEVSX0VOVl9WQVIsIE5vbmUpCisgICAgICBzZWxmLkFzc2VydFNldEVxdWFsKHRlc3RzX3J1
biwgdGVzdHNfdG9fcnVuKQorICAgICMgcHlsaW50OiBlbmFibGUtbXNnPUM2NDAzCisKKyAgICAj
IE5leHQsIHRlc3RzIHVzaW5nIHRoZSBjb21tYW5kIGxpbmUgZmxhZy4KKworICAgIGlmIGd0ZXN0
X2ZpbHRlciBpcyBOb25lOgorICAgICAgYXJncyA9IFtdCisgICAgZWxzZToKKyAgICAgIGFyZ3Mg
PSBbJy0tJXM9JXMnICUgKEZJTFRFUl9GTEFHLCBndGVzdF9maWx0ZXIpXQorCisgICAgdGVzdHNf
cnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KGFyZ3MpWzBdCisgICAgc2VsZi5Bc3NlcnRTZXRF
cXVhbCh0ZXN0c19ydW4sIHRlc3RzX3RvX3J1bikKKworICBkZWYgUnVuQW5kVmVyaWZ5V2l0aFNo
YXJkaW5nKHNlbGYsIGd0ZXN0X2ZpbHRlciwgdG90YWxfc2hhcmRzLCB0ZXN0c190b19ydW4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz1Ob25lLCBjaGVja19leGl0XzA9RmFs
c2UpOgorICAgICIiIkNoZWNrcyB0aGF0IGJpbmFyeSBydW5zIGNvcnJlY3QgdGVzdHMgZm9yIHRo
ZSBnaXZlbiBmaWx0ZXIgYW5kIHNoYXJkLgorCisgICAgUnVucyBhbGwgc2hhcmRzIG9mIGdvb2ds
ZXRlc3QtZmlsdGVyLXVuaXR0ZXN0XyB3aXRoIHRoZSBnaXZlbiBmaWx0ZXIsIGFuZAorICAgIHZl
cmlmaWVzIHRoYXQgdGhlIHJpZ2h0IHNldCBvZiB0ZXN0cyB3ZXJlIHJ1bi4gVGhlIHVuaW9uIG9m
IHRlc3RzIHJ1bgorICAgIG9uIGVhY2ggc2hhcmQgc2hvdWxkIGJlIGlkZW50aWNhbCB0byB0ZXN0
c190b19ydW4sIHdpdGhvdXQgZHVwbGljYXRlcy4KKyAgICBJZiBjaGVja19leGl0XzAsIC4KKwor
ICAgIEFyZ3M6CisgICAgICBndGVzdF9maWx0ZXI6IEEgZmlsdGVyIHRvIGFwcGx5IHRvIHRoZSB0
ZXN0cy4KKyAgICAgIHRvdGFsX3NoYXJkczogQSB0b3RhbCBudW1iZXIgb2Ygc2hhcmRzIHRvIHNw
bGl0IHRlc3QgcnVuIGludG8uCisgICAgICB0ZXN0c190b19ydW46IEEgc2V0IG9mIHRlc3RzIGV4
cGVjdGVkIHRvIHJ1bi4KKyAgICAgIGFyZ3MgICA6ICAgICAgQXJndW1lbnRzIHRvIHBhc3MgdG8g
dGhlIHRvIHRoZSB0ZXN0IGJpbmFyeS4KKyAgICAgIGNoZWNrX2V4aXRfMDogV2hlbiBzZXQgdG8g
YSB0cnVlIHZhbHVlLCBtYWtlIHN1cmUgdGhhdCBhbGwgc2hhcmRzCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAwLgorICAgICIiIgorCisgICAgdGVzdHNfdG9fcnVuID0gc2VsZi5BZGp1c3RG
b3JQYXJhbWV0ZXJpemVkVGVzdHModGVzdHNfdG9fcnVuKQorCisgICAgIyBXaW5kb3dzIHJlbW92
ZXMgZW1wdHkgdmFyaWFibGVzIGZyb20gdGhlIGVudmlyb25tZW50IHdoZW4gcGFzc2luZyBpdAor
ICAgICMgdG8gYSBuZXcgcHJvY2Vzcy4gIFRoaXMgbWVhbnMgaXQgaXMgaW1wb3NzaWJsZSB0byBw
YXNzIGFuIGVtcHR5IGZpbHRlcgorICAgICMgaW50byBhIHByb2Nlc3MgdXNpbmcgdGhlIGVudmly
b25tZW50IHZhcmlhYmxlLiAgSG93ZXZlciwgd2UgY2FuIHN0aWxsCisgICAgIyB0ZXN0IHRoZSBj
YXNlIHdoZW4gdGhlIHZhcmlhYmxlIGlzIG5vdCBzdXBwbGllZCAoaS5lLiwgZ3Rlc3RfZmlsdGVy
IGlzCisgICAgIyBOb25lKS4KKyAgICAjIHB5bGludDogZGlzYWJsZS1tc2c9QzY0MDMKKyAgICBp
ZiBDQU5fVEVTVF9FTVBUWV9GSUxURVIgb3IgZ3Rlc3RfZmlsdGVyICE9ICcnOgorICAgICAgU2V0
RW52VmFyKEZJTFRFUl9FTlZfVkFSLCBndGVzdF9maWx0ZXIpCisgICAgICBwYXJ0aXRpb24gPSBb
XQorICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgdG90YWxfc2hhcmRzKToKKyAgICAgICAgKHRlc3Rz
X3J1biwgZXhpdF9jb2RlKSA9IFJ1bldpdGhTaGFyZGluZyh0b3RhbF9zaGFyZHMsIGksIGFyZ3Mp
CisgICAgICAgIGlmIGNoZWNrX2V4aXRfMDoKKyAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAs
IGV4aXRfY29kZSkKKyAgICAgICAgcGFydGl0aW9uLmFwcGVuZCh0ZXN0c19ydW4pCisKKyAgICAg
IHNlbGYuQXNzZXJ0UGFydGl0aW9uSXNWYWxpZCh0ZXN0c190b19ydW4sIHBhcnRpdGlvbikKKyAg
ICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgTm9uZSkKKyAgICAjIHB5bGludDogZW5hYmxl
LW1zZz1DNjQwMworCisgIGRlZiBSdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKHNlbGYsIGd0
ZXN0X2ZpbHRlciwgdGVzdHNfdG9fcnVuKToKKyAgICAiIiJDaGVja3MgdGhhdCB0aGUgYmluYXJ5
IHJ1bnMgY29ycmVjdCBzZXQgb2YgdGVzdHMgZm9yIHRoZSBnaXZlbiBmaWx0ZXIuCisKKyAgICBS
dW5zIGdvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0XyB3aXRoIHRoZSBnaXZlbiBmaWx0ZXIsIGFu
ZCBlbmFibGVzCisgICAgZGlzYWJsZWQgdGVzdHMuIFZlcmlmaWVzIHRoYXQgdGhlIHJpZ2h0IHNl
dCBvZiB0ZXN0cyB3ZXJlIHJ1bi4KKworICAgIEFyZ3M6CisgICAgICBndGVzdF9maWx0ZXI6IEEg
ZmlsdGVyIHRvIGFwcGx5IHRvIHRoZSB0ZXN0cy4KKyAgICAgIHRlc3RzX3RvX3J1bjogQSBzZXQg
b2YgdGVzdHMgZXhwZWN0ZWQgdG8gcnVuLgorICAgICIiIgorCisgICAgdGVzdHNfdG9fcnVuID0g
c2VsZi5BZGp1c3RGb3JQYXJhbWV0ZXJpemVkVGVzdHModGVzdHNfdG9fcnVuKQorCisgICAgIyBD
b25zdHJ1Y3QgdGhlIGNvbW1hbmQgbGluZS4KKyAgICBhcmdzID0gWyctLSVzJyAlIEFMU09fUlVO
X0RJU0FCTEVEX1RFU1RTX0ZMQUddCisgICAgaWYgZ3Rlc3RfZmlsdGVyIGlzIG5vdCBOb25lOgor
ICAgICAgYXJncy5hcHBlbmQoJy0tJXM9JXMnICUgKEZJTFRFUl9GTEFHLCBndGVzdF9maWx0ZXIp
KQorCisgICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KGFyZ3MpWzBdCisgICAg
c2VsZi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIHRlc3RzX3RvX3J1bikKKworICBkZWYgc2V0
VXAoc2VsZik6CisgICAgIiIiU2V0cyB1cCB0ZXN0IGNhc2UuCisKKyAgICBEZXRlcm1pbmVzIHdo
ZXRoZXIgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZW5hYmxlZCBpbiB0aGUgYmluYXJ5
IGFuZAorICAgIHNldHMgdGhlIGZsYWdzIGFjY29yZGluZ2x5LgorICAgICIiIgorCisgICAgZ2xv
YmFsIHBhcmFtX3Rlc3RzX3ByZXNlbnQKKyAgICBpZiBwYXJhbV90ZXN0c19wcmVzZW50IGlzIE5v
bmU6CisgICAgICBwYXJhbV90ZXN0c19wcmVzZW50ID0gUEFSQU1fVEVTVF9SRUdFWC5zZWFyY2go
CisgICAgICAgICAgUnVuQW5kUmV0dXJuT3V0cHV0KCkpIGlzIG5vdCBOb25lCisKKyAgZGVmIHRl
c3REZWZhdWx0QmVoYXZpb3Ioc2VsZik6CisgICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9yIG9mIG5v
dCBzcGVjaWZ5aW5nIHRoZSBmaWx0ZXIuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShOb25l
LCBBQ1RJVkVfVEVTVFMpCisKKyAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3JXaXRoU2hhcmRzKHNl
bGYpOgorICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciB3aXRob3V0IHRoZSBmaWx0ZXIsIHdpdGgg
c2hhcmRpbmcgZW5hYmxlZC4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5n
KE5vbmUsIDEsIEFDVElWRV9URVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGlu
ZyhOb25lLCAyLCBBQ1RJVkVfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRp
bmcoTm9uZSwgbGVuKEFDVElWRV9URVNUUykgLSAxLCBBQ1RJVkVfVEVTVFMpCisgICAgc2VsZi5S
dW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgbGVuKEFDVElWRV9URVNUUyksIEFDVElWRV9U
RVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhOb25lLCBsZW4oQUNUSVZF
X1RFU1RTKSArIDEsIEFDVElWRV9URVNUUykKKworICBkZWYgdGVzdEVtcHR5RmlsdGVyKHNlbGYp
OgorICAgICIiIlRlc3RzIGFuIGVtcHR5IGZpbHRlci4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVy
aWZ5KCcnLCBbXSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZygnJywgMSwgW10p
CisgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJycsIDIsIFtdKQorCisgIGRlZiB0
ZXN0QmFkRmlsdGVyKHNlbGYpOgorICAgICIiIlRlc3RzIGEgZmlsdGVyIHRoYXQgbWF0Y2hlcyBu
b3RoaW5nLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0JhZEZpbHRlcicsIFtdKQorICAg
IHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnQmFkRmlsdGVyJywgW10pCisKKyAg
ZGVmIHRlc3RGdWxsTmFtZShzZWxmKToKKyAgICAiIiJUZXN0cyBmaWx0ZXJpbmcgYnkgZnVsbCBu
YW1lLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0Zvb1Rlc3QuWHl6JywgWydGb29UZXN0
Llh5eiddKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnRm9vVGVzdC5Y
eXonLCBbJ0Zvb1Rlc3QuWHl6J10pCisgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmco
J0Zvb1Rlc3QuWHl6JywgNSwgWydGb29UZXN0Llh5eiddKQorCisgIGRlZiB0ZXN0VW5pdmVyc2Fs
RmlsdGVycyhzZWxmKToKKyAgICAiIiJUZXN0cyBmaWx0ZXJzIHRoYXQgbWF0Y2ggZXZlcnl0aGlu
Zy4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqJywgQUNUSVZFX1RFU1RTKQorICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KCcqLionLCBBQ1RJVkVfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRWZXJp
ZnlXaXRoU2hhcmRpbmcoJyouKicsIGxlbihBQ1RJVkVfVEVTVFMpIC0gMywgQUNUSVZFX1RFU1RT
KQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnKicsIEFDVElWRV9URVNU
UyArIERJU0FCTEVEX1RFU1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxl
ZCgnKi4qJywgQUNUSVZFX1RFU1RTICsgRElTQUJMRURfVEVTVFMpCisKKyAgZGVmIHRlc3RGaWx0
ZXJCeVRlc3RDYXNlKHNlbGYpOgorICAgICIiIlRlc3RzIGZpbHRlcmluZyBieSB0ZXN0IGNhc2Ug
bmFtZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdGb29UZXN0LionLCBbJ0Zvb1Rlc3Qu
QWJjJywgJ0Zvb1Rlc3QuWHl6J10pCisKKyAgICBCQVpfVEVTVFMgPSBbJ0JhelRlc3QuVGVzdE9u
ZScsICdCYXpUZXN0LlRlc3RBJywgJ0JhelRlc3QuVGVzdEInXQorICAgIHNlbGYuUnVuQW5kVmVy
aWZ5KCdCYXpUZXN0LionLCBCQVpfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2lu
Z0Rpc2FibGVkKCdCYXpUZXN0LionLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBCQVpfVEVTVFMgKyBbJ0JhelRlc3QuRElTQUJMRURfVGVzdEMnXSkKKworICBkZWYgdGVz
dEZpbHRlckJ5VGVzdChzZWxmKToKKyAgICAiIiJUZXN0cyBmaWx0ZXJpbmcgYnkgdGVzdCBuYW1l
LiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyouVGVzdE9uZScsIFsnQmFyVGVzdC5UZXN0
T25lJywgJ0JhelRlc3QuVGVzdE9uZSddKQorCisgIGRlZiB0ZXN0RmlsdGVyRGlzYWJsZWRUZXN0
cyhzZWxmKToKKyAgICAiIiJTZWxlY3Qgb25seSB0aGUgZGlzYWJsZWQgdGVzdHMgdG8gcnVuLiIi
IgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnLCBb
XSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0RJU0FCTEVEX0Zvb2Jh
clRlc3QuVGVzdDEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0RJ
U0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnXSkKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqRElT
QUJMRURfKicsIFtdKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnKkRJ
U0FCTEVEXyonLCBESVNBQkxFRF9URVNUUykKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLkRJ
U0FCTEVEXyonLCBbXSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJyou
RElTQUJMRURfKicsIFsKKyAgICAgICAgJ0JhclRlc3QuRElTQUJMRURfVGVzdEZvdXInLAorICAg
ICAgICAnQmFyVGVzdC5ESVNBQkxFRF9UZXN0Rml2ZScsCisgICAgICAgICdCYXpUZXN0LkRJU0FC
TEVEX1Rlc3RDJywKKyAgICAgICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuRElTQUJMRURfVGVzdDIn
LAorICAgICAgICBdKQorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0RJU0FCTEVEXyonLCBbXSkK
KyAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0RJU0FCTEVEXyonLCBbCisg
ICAgICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LlRlc3QxJywKKyAgICAgICAgJ0RJU0FCTEVEX0Zv
b2JhclRlc3QuRElTQUJMRURfVGVzdDInLAorICAgICAgICAnRElTQUJMRURfRm9vYmFyYmF6VGVz
dC5UZXN0QScsCisgICAgICAgIF0pCisKKyAgZGVmIHRlc3RXaWxkY2FyZEluVGVzdENhc2VOYW1l
KHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5nIHdpbGRjYXJkIGluIHRoZSB0ZXN0IGNhc2UgbmFt
ZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqYSouKicsIFsKKyAgICAgICAgJ0JhclRl
c3QuVGVzdE9uZScsCisgICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAorICAgICAgICAnQmFyVGVz
dC5UZXN0VGhyZWUnLAorCisgICAgICAgICdCYXpUZXN0LlRlc3RPbmUnLAorICAgICAgICAnQmF6
VGVzdC5UZXN0QScsCisgICAgICAgICdCYXpUZXN0LlRlc3RCJywgXSArIERFQVRIX1RFU1RTICsg
UEFSQU1fVEVTVFMpCisKKyAgZGVmIHRlc3RXaWxkY2FyZEluVGVzdE5hbWUoc2VsZik6CisgICAg
IiIiVGVzdHMgdXNpbmcgd2lsZGNhcmQgaW4gdGhlIHRlc3QgbmFtZS4iIiIKKworICAgIHNlbGYu
UnVuQW5kVmVyaWZ5KCcqLipBKicsIFsnRm9vVGVzdC5BYmMnLCAnQmF6VGVzdC5UZXN0QSddKQor
CisgIGRlZiB0ZXN0RmlsdGVyV2l0aG91dERvdChzZWxmKToKKyAgICAiIiJUZXN0cyBhIGZpbHRl
ciB0aGF0IGhhcyBubyAnLicgaW4gaXQuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKnoq
JywgWworICAgICAgICAnRm9vVGVzdC5YeXonLAorCisgICAgICAgICdCYXpUZXN0LlRlc3RPbmUn
LAorICAgICAgICAnQmF6VGVzdC5UZXN0QScsCisgICAgICAgICdCYXpUZXN0LlRlc3RCJywKKyAg
ICAgICAgXSkKKworICBkZWYgdGVzdFR3b1BhdHRlcm5zKHNlbGYpOgorICAgICIiIlRlc3RzIGZp
bHRlcnMgdGhhdCBjb25zaXN0IG9mIHR3byBwYXR0ZXJucy4iIiIKKworICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KCdGb28qLio6KkEqJywgWworICAgICAgICAnRm9vVGVzdC5BYmMnLAorICAgICAgICAn
Rm9vVGVzdC5YeXonLAorCisgICAgICAgICdCYXpUZXN0LlRlc3RBJywKKyAgICAgICAgXSkKKwor
ICAgICMgQW4gZW1wdHkgcGF0dGVybiArIGEgbm9uLWVtcHR5IG9uZQorICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KCc6KkEqJywgWydGb29UZXN0LkFiYycsICdCYXpUZXN0LlRlc3RBJ10pCisKKyAgZGVm
IHRlc3RUaHJlZVBhdHRlcm5zKHNlbGYpOgorICAgICIiIlRlc3RzIGZpbHRlcnMgdGhhdCBjb25z
aXN0IG9mIHRocmVlIHBhdHRlcm5zLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJypvbyo6
KkEqOipPbmUnLCBbCisgICAgICAgICdGb29UZXN0LkFiYycsCisgICAgICAgICdGb29UZXN0Llh5
eicsCisKKyAgICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCisKKyAgICAgICAgJ0JhelRlc3QuVGVz
dE9uZScsCisgICAgICAgICdCYXpUZXN0LlRlc3RBJywKKyAgICAgICAgXSkKKworICAgICMgVGhl
IDJuZCBwYXR0ZXJuIGlzIGVtcHR5LgorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqb28qOjoqT25l
JywgWworICAgICAgICAnRm9vVGVzdC5BYmMnLAorICAgICAgICAnRm9vVGVzdC5YeXonLAorCisg
ICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAorCisgICAgICAgICdCYXpUZXN0LlRlc3RPbmUnLAor
ICAgICAgICBdKQorCisgICAgIyBUaGUgbGFzdCAyIHBhdHRlcm5zIGFyZSBlbXB0eS4KKyAgICBz
ZWxmLlJ1bkFuZFZlcmlmeSgnKm9vKjo6JywgWworICAgICAgICAnRm9vVGVzdC5BYmMnLAorICAg
ICAgICAnRm9vVGVzdC5YeXonLAorICAgICAgICBdKQorCisgIGRlZiB0ZXN0TmVnYXRpdmVGaWx0
ZXJzKHNlbGYpOgorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLUJhelRlc3QuVGVzdE9uZScsIFsK
KyAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKKyAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKKworICAgICAg
ICAnQmFyVGVzdC5UZXN0T25lJywKKyAgICAgICAgJ0JhclRlc3QuVGVzdFR3bycsCisgICAgICAg
ICdCYXJUZXN0LlRlc3RUaHJlZScsCisKKyAgICAgICAgJ0JhelRlc3QuVGVzdEEnLAorICAgICAg
ICAnQmF6VGVzdC5UZXN0QicsCisgICAgICAgIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RT
KQorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyotRm9vVGVzdC5BYmM6QmF6VGVzdC4qJywgWwor
ICAgICAgICAnRm9vVGVzdC5YeXonLAorCisgICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAorICAg
ICAgICAnQmFyVGVzdC5UZXN0VHdvJywKKyAgICAgICAgJ0JhclRlc3QuVGVzdFRocmVlJywKKyAg
ICAgICAgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMpCisKKyAgICBzZWxmLlJ1bkFuZFZl
cmlmeSgnQmFyVGVzdC4qLUJhclRlc3QuVGVzdE9uZScsIFsKKyAgICAgICAgJ0JhclRlc3QuVGVz
dFR3bycsCisgICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCisgICAgICAgIF0pCisKKyAgICAj
IFRlc3RzIHdpdGhvdXQgbGVhZGluZyAnKicuCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJy1Gb29U
ZXN0LkFiYzpGb29UZXN0Llh5ejpCYXpUZXN0LionLCBbCisgICAgICAgICdCYXJUZXN0LlRlc3RP
bmUnLAorICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKKyAgICAgICAgJ0JhclRlc3QuVGVzdFRo
cmVlJywKKyAgICAgICAgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMpCisKKyAgICAjIFZh
bHVlIHBhcmFtZXRlcml6ZWQgdGVzdHMuCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyovKicsIFBB
UkFNX1RFU1RTKQorCisgICAgIyBWYWx1ZSBwYXJhbWV0ZXJpemVkIHRlc3RzIGZpbHRlcmluZyBi
eSB0aGUgc2VxdWVuY2UgbmFtZS4KKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnU2VxUC8qJywgWwor
ICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMCcsCisgICAgICAgICdTZXFQL1BhcmFtVGVz
dC5UZXN0WC8xJywKKyAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzAnLAorICAgICAgICAn
U2VxUC9QYXJhbVRlc3QuVGVzdFkvMScsCisgICAgICAgIF0pCisKKyAgICAjIFZhbHVlIHBhcmFt
ZXRlcml6ZWQgdGVzdHMgZmlsdGVyaW5nIGJ5IHRoZSB0ZXN0IG5hbWUuCisgICAgc2VsZi5SdW5B
bmRWZXJpZnkoJyovMCcsIFsKKyAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzAnLAorICAg
ICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMCcsCisgICAgICAgICdTZXFRL1BhcmFtVGVzdC5U
ZXN0WC8wJywKKyAgICAgICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RZLzAnLAorICAgICAgICBdKQor
CisgIGRlZiB0ZXN0RmxhZ092ZXJyaWRlc0VudlZhcihzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0
IHRoZSBmaWx0ZXIgZmxhZyBvdmVycmlkZXMgdGhlIGZpbHRlcmluZyBlbnYuIHZhcmlhYmxlLiIi
IgorCisgICAgU2V0RW52VmFyKEZJTFRFUl9FTlZfVkFSLCAnRm9vKicpCisgICAgYXJncyA9IFsn
LS0lcz0lcycgJSAoRklMVEVSX0ZMQUcsICcqT25lJyldCisgICAgdGVzdHNfcnVuID0gUnVuQW5k
RXh0cmFjdFRlc3RMaXN0KGFyZ3MpWzBdCisgICAgU2V0RW52VmFyKEZJTFRFUl9FTlZfVkFSLCBO
b25lKQorCisgICAgc2VsZi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIFsnQmFyVGVzdC5UZXN0
T25lJywgJ0JhelRlc3QuVGVzdE9uZSddKQorCisgIGRlZiB0ZXN0U2hhcmRTdGF0dXNGaWxlSXND
cmVhdGVkKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgdGhlIHNoYXJkIGZpbGUgaXMgY3JlYXRl
ZCBpZiBzcGVjaWZpZWQgaW4gdGhlIGVudmlyb25tZW50LiIiIgorCisgICAgc2hhcmRfc3RhdHVz
X2ZpbGUgPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYXJkX3N0YXR1c19maWxlJykKKyAg
ICBzZWxmLmFzc2VydF8obm90IG9zLnBhdGguZXhpc3RzKHNoYXJkX3N0YXR1c19maWxlKSkKKwor
ICAgIGV4dHJhX2VudiA9IHtTSEFSRF9TVEFUVVNfRklMRV9FTlZfVkFSOiBzaGFyZF9zdGF0dXNf
ZmlsZX0KKyAgICB0cnk6CisgICAgICBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LCBS
dW5BbmRSZXR1cm5PdXRwdXQpCisgICAgZmluYWxseToKKyAgICAgIHNlbGYuYXNzZXJ0Xyhvcy5w
YXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkpCisgICAgICBvcy5yZW1vdmUoc2hhcmRfc3Rh
dHVzX2ZpbGUpCisKKyAgZGVmIHRlc3RTaGFyZFN0YXR1c0ZpbGVJc0NyZWF0ZWRXaXRoTGlzdFRl
c3RzKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgdGhlIHNoYXJkIGZpbGUgaXMgY3JlYXRlZCB3
aXRoIHRoZSAibGlzdF90ZXN0cyIgZmxhZy4iIiIKKworICAgIHNoYXJkX3N0YXR1c19maWxlID0g
b3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdzaGFyZF9zdGF0dXNfZmlsZTInKQorICAgIHNlbGYu
YXNzZXJ0Xyhub3Qgb3MucGF0aC5leGlzdHMoc2hhcmRfc3RhdHVzX2ZpbGUpKQorCisgICAgZXh0
cmFfZW52ID0ge1NIQVJEX1NUQVRVU19GSUxFX0VOVl9WQVI6IHNoYXJkX3N0YXR1c19maWxlfQor
ICAgIHRyeToKKyAgICAgIG91dHB1dCA9IEludm9rZVdpdGhNb2RpZmllZEVudihleHRyYV9lbnYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVuQW5kUmV0dXJuT3V0cHV0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtMSVNUX1RFU1RTX0ZMQUdd
KQorICAgIGZpbmFsbHk6CisgICAgICAjIFRoaXMgYXNzZXJ0aW9uIGVuc3VyZXMgdGhhdCBHb29n
bGUgVGVzdCBlbnVtZXJhdGVkIHRoZSB0ZXN0cyBhcworICAgICAgIyBvcHBvc2VkIHRvIHJ1bm5p
bmcgdGhlbS4KKyAgICAgIHNlbGYuYXNzZXJ0XygnWz09PT09PT09PT1dJyBub3QgaW4gb3V0cHV0
LAorICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIG91dHB1dCBkdXJpbmcgdGVzdCBlbnVt
ZXJhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAnUGxlYXNlIGVuc3VyZSB0aGF0IExJU1Rf
VEVTVFNfRkxBRyBpcyBhc3NpZ25lZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnY29ycmVj
dCBmbGFnIHZhbHVlIGZvciBsaXN0aW5nIEdvb2dsZSBUZXN0IHRlc3RzLicpCisKKyAgICAgIHNl
bGYuYXNzZXJ0Xyhvcy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkpCisgICAgICBvcy5y
ZW1vdmUoc2hhcmRfc3RhdHVzX2ZpbGUpCisKKyAgaWYgU1VQUE9SVFNfREVBVEhfVEVTVFM6Cisg
ICAgZGVmIHRlc3RTaGFyZGluZ1dvcmtzV2l0aERlYXRoVGVzdHMoc2VsZik6CisgICAgICAiIiJU
ZXN0cyBpbnRlZ3JhdGlvbiB3aXRoIGRlYXRoIHRlc3RzIGFuZCBzaGFyZGluZy4iIiIKKworICAg
ICAgZ3Rlc3RfZmlsdGVyID0gJ0hhc0RlYXRoVGVzdC4qOlNlcVAvKicKKyAgICAgIGV4cGVjdGVk
X3Rlc3RzID0gWworICAgICAgICAgICdIYXNEZWF0aFRlc3QuVGVzdDEnLAorICAgICAgICAgICdI
YXNEZWF0aFRlc3QuVGVzdDInLAorCisgICAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzAn
LAorICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8xJywKKyAgICAgICAgICAnU2VxUC9Q
YXJhbVRlc3QuVGVzdFkvMCcsCisgICAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzEnLAor
ICAgICAgICAgIF0KKworICAgICAgZm9yIGZsYWcgaW4gWyctLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5
bGU9dGhyZWFkc2FmZScsCisgICAgICAgICAgICAgICAgICAgJy0tZ3Rlc3RfZGVhdGhfdGVzdF9z
dHlsZT1mYXN0J106CisgICAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKGd0ZXN0
X2ZpbHRlciwgMywgZXhwZWN0ZWRfdGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoZWNrX2V4aXRfMD1UcnVlLCBhcmdzPVtmbGFnXSkKKyAgICAgICAgc2VsZi5S
dW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoZ3Rlc3RfZmlsdGVyLCA1LCBleHBlY3RlZF90ZXN0cywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfZXhpdF8wPVRydWUs
IGFyZ3M9W2ZsYWddKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0
X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
b29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzM1YjYwMzkx
ZDFkNDY4YTQxMTYxYjM4YzE0ZWNjYmYxZDEzODA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8uY2MKQEAg
LTAsMCArMSwxMzcgQEAKKy8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgorLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworCisvLyBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0IHRlc3QgZmlsdGVycy4KKy8vCisv
LyBBIHVzZXIgY2FuIHNwZWNpZnkgd2hpY2ggdGVzdChzKSBpbiBhIEdvb2dsZSBUZXN0IHByb2dy
YW0gdG8gcnVuIHZpYQorLy8gZWl0aGVyIHRoZSBHVEVTVF9GSUxURVIgZW52aXJvbm1lbnQgdmFy
aWFibGUgb3IgdGhlIC0tZ3Rlc3RfZmlsdGVyCisvLyBmbGFnLiAgVGhpcyBpcyB1c2VkIGZvciB0
ZXN0aW5nIHN1Y2ggZnVuY3Rpb25hbGl0eS4KKy8vCisvLyBUaGUgcHJvZ3JhbSB3aWxsIGJlIGlu
dm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRlc3QuICBEb24ndCBydW4gaXQKKy8vIGRpcmVjdGx5
LgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsKKworLy8gVGVzdCBj
YXNlIEZvb1Rlc3QuCisKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9
OworCitURVNUX0YoRm9vVGVzdCwgQWJjKSB7Cit9CisKK1RFU1RfRihGb29UZXN0LCBYeXopIHsK
KyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKKy8vIFRlc3QgY2FzZSBCYXJU
ZXN0LgorCitURVNUKEJhclRlc3QsIFRlc3RPbmUpIHsKK30KKworVEVTVChCYXJUZXN0LCBUZXN0
VHdvKSB7Cit9CisKK1RFU1QoQmFyVGVzdCwgVGVzdFRocmVlKSB7Cit9CisKK1RFU1QoQmFyVGVz
dCwgRElTQUJMRURfVGVzdEZvdXIpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7
Cit9CisKK1RFU1QoQmFyVGVzdCwgRElTQUJMRURfVGVzdEZpdmUpIHsKKyAgRkFJTCgpIDw8ICJF
eHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKKy8vIFRlc3QgY2FzZSBCYXpUZXN0LgorCitURVNUKEJh
elRlc3QsIFRlc3RPbmUpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9CisK
K1RFU1QoQmF6VGVzdCwgVGVzdEEpIHsKK30KKworVEVTVChCYXpUZXN0LCBUZXN0QikgeworfQor
CitURVNUKEJhelRlc3QsIERJU0FCTEVEX1Rlc3RDKSB7CisgIEZBSUwoKSA8PCAiRXhwZWN0ZWQg
ZmFpbHVyZS4iOworfQorCisvLyBUZXN0IGNhc2UgSGFzRGVhdGhUZXN0CisKK1RFU1QoSGFzRGVh
dGhUZXN0LCBUZXN0MSkgeworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKGV4aXQoMSksICIu
KiIpOworfQorCisvLyBXZSBuZWVkIGF0IGxlYXN0IHR3byBkZWF0aCB0ZXN0cyB0byBtYWtlIHN1
cmUgdGhhdCB0aGUgYWxsIGRlYXRoIHRlc3RzCisvLyBhcmVuJ3Qgb24gdGhlIGZpcnN0IHNoYXJk
LgorVEVTVChIYXNEZWF0aFRlc3QsIFRlc3QyKSB7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JU
RUQoZXhpdCgxKSwgIi4qIik7Cit9CisKKy8vIFRlc3QgY2FzZSBGb29iYXJUZXN0CisKK1RFU1Qo
RElTQUJMRURfRm9vYmFyVGVzdCwgVGVzdDEpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWls
dXJlLiI7Cit9CisKK1RFU1QoRElTQUJMRURfRm9vYmFyVGVzdCwgRElTQUJMRURfVGVzdDIpIHsK
KyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKKy8vIFRlc3QgY2FzZSBGb29i
YXJiYXpUZXN0CisKK1RFU1QoRElTQUJMRURfRm9vYmFyYmF6VGVzdCwgVGVzdEEpIHsKKyAgRkFJ
TCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKK2NsYXNzIFBhcmFtVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4geworfTsKKworVEVTVF9QKFBhcmFtVGVzdCwg
VGVzdFgpIHsKK30KKworVEVTVF9QKFBhcmFtVGVzdCwgVGVzdFkpIHsKK30KKworSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoU2VxUCwgUGFyYW1UZXN0LCB0ZXN0aW5nOjpWYWx1ZXMoMSwgMikpOwor
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxUSwgUGFyYW1UZXN0LCB0ZXN0aW5nOjpWYWx1ZXMo
NSwgNikpOworCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiph
cmd2KSB7CisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIHJl
dHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtanNvbi1vdXRmaWxlcy10ZXN0LnB5IGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWpzb24tb3V0ZmlsZXMtdGVzdC5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jOTliZTQ4ZThhYzM2NTA5ZWQzMmVhMmZiOGU0ZmExZWE3ZmM4MzY0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWpzb24tb3V0
ZmlsZXMtdGVzdC5weQpAQCAtMCwwICsxLDE2MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
IENvcHlyaWdodCAyMDE4LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgor
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworIiIiVW5pdCB0ZXN0IGZvciB0aGUgZ3Rlc3RfanNvbl9vdXRwdXQg
bW9kdWxlLiIiIgorCitpbXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQgZ3Rlc3RfanNvbl90
ZXN0X3V0aWxzCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitHVEVTVF9PVVRQVVRfU1VCRElS
ID0gJ2pzb25fb3V0ZmlsZXMnCitHVEVTVF9PVVRQVVRfMV9URVNUID0gJ2d0ZXN0X3htbF9vdXRm
aWxlMV90ZXN0XycKK0dURVNUX09VVFBVVF8yX1RFU1QgPSAnZ3Rlc3RfeG1sX291dGZpbGUyX3Rl
c3RfJworCitFWFBFQ1RFRF8xID0geworICAgIHUndGVzdHMnOiAxLAorICAgIHUnZmFpbHVyZXMn
OiAwLAorICAgIHUnZGlzYWJsZWQnOiAwLAorICAgIHUnZXJyb3JzJzogMCwKKyAgICB1J3RpbWUn
OiB1JyonLAorICAgIHUndGltZXN0YW1wJzogdScqJywKKyAgICB1J25hbWUnOiB1J0FsbFRlc3Rz
JywKKyAgICB1J3Rlc3RzdWl0ZXMnOiBbeworICAgICAgICB1J25hbWUnOiB1J1Byb3BlcnR5T25l
JywKKyAgICAgICAgdSd0ZXN0cyc6IDEsCisgICAgICAgIHUnZmFpbHVyZXMnOiAwLAorICAgICAg
ICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgdSdlcnJvcnMnOiAwLAorICAgICAgICB1J3RpbWUn
OiB1JyonLAorICAgICAgICB1J3Rlc3RzdWl0ZSc6IFt7CisgICAgICAgICAgICB1J25hbWUnOiB1
J1Rlc3RTb21lUHJvcGVydGllcycsCisgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAg
ICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnUHJv
cGVydHlPbmUnLAorICAgICAgICAgICAgdSdTZXRVcFByb3AnOiB1JzEnLAorICAgICAgICAgICAg
dSdUZXN0U29tZVByb3BlcnR5JzogdScxJywKKyAgICAgICAgICAgIHUnVGVhckRvd25Qcm9wJzog
dScxJywKKyAgICAgICAgfV0sCisgICAgfV0sCit9CisKK0VYUEVDVEVEXzIgPSB7CisgICAgdSd0
ZXN0cyc6IDEsCisgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgdSdkaXNhYmxlZCc6IDAsCisgICAg
dSdlcnJvcnMnOiAwLAorICAgIHUndGltZSc6IHUnKicsCisgICAgdSd0aW1lc3RhbXAnOiB1Jyon
LAorICAgIHUnbmFtZSc6IHUnQWxsVGVzdHMnLAorICAgIHUndGVzdHN1aXRlcyc6IFt7CisgICAg
ICAgIHUnbmFtZSc6IHUnUHJvcGVydHlUd28nLAorICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAg
ICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAgICB1J2Vy
cm9ycyc6IDAsCisgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgIHUndGVzdHN1aXRlJzog
W3sKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnVGVzdFNvbWVQcm9wZXJ0aWVzJywKKyAgICAgICAg
ICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAg
ICAgICAgIHUnY2xhc3NuYW1lJzogdSdQcm9wZXJ0eVR3bycsCisgICAgICAgICAgICB1J1NldFVw
UHJvcCc6IHUnMicsCisgICAgICAgICAgICB1J1Rlc3RTb21lUHJvcGVydHknOiB1JzInLAorICAg
ICAgICAgICAgdSdUZWFyRG93blByb3AnOiB1JzInLAorICAgICAgICB9XSwKKyAgICB9XSwKK30K
KworCitjbGFzcyBHVGVzdEpzb25PdXRGaWxlc1Rlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2Fz
ZSk6CisgICIiIlVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyBKU09OIG91dHB1dCBmdW5jdGlv
bmFsaXR5LiIiIgorCisgIGRlZiBzZXRVcChzZWxmKToKKyAgICAjIFdlIHdhbnQgdGhlIHRyYWls
aW5nICcvJyB0aGF0IHRoZSBsYXN0ICIiIHByb3ZpZGVzIGluIG9zLnBhdGguam9pbiwgZm9yCisg
ICAgIyB0ZWxsaW5nIEdvb2dsZSBUZXN0IHRvIGNyZWF0ZSBhbiBvdXRwdXQgZGlyZWN0b3J5IGlu
c3RlYWQgb2YgYSBzaW5nbGUgZmlsZQorICAgICMgZm9yIHhtbCBvdXRwdXQuCisgICAgc2VsZi5v
dXRwdXRfZGlyXyA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX09VVFBVVF9TVUJESVIs
ICcnKQorICAgIHNlbGYuRGVsZXRlRmlsZXNBbmREaXIoKQorCisgIGRlZiB0ZWFyRG93bihzZWxm
KToKKyAgICBzZWxmLkRlbGV0ZUZpbGVzQW5kRGlyKCkKKworICBkZWYgRGVsZXRlRmlsZXNBbmRE
aXIoc2VsZik6CisgICAgdHJ5OgorICAgICAgb3MucmVtb3ZlKG9zLnBhdGguam9pbihzZWxmLm91
dHB1dF9kaXJfLCBHVEVTVF9PVVRQVVRfMV9URVNUICsgJy5qc29uJykpCisgICAgZXhjZXB0IG9z
LmVycm9yOgorICAgICAgcGFzcworICAgIHRyeToKKyAgICAgIG9zLnJlbW92ZShvcy5wYXRoLmpv
aW4oc2VsZi5vdXRwdXRfZGlyXywgR1RFU1RfT1VUUFVUXzJfVEVTVCArICcuanNvbicpKQorICAg
IGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgIHBhc3MKKyAgICB0cnk6CisgICAgICBvcy5ybWRpcihz
ZWxmLm91dHB1dF9kaXJfKQorICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgIHBhc3MKKworICBk
ZWYgdGVzdE91dGZpbGUxKHNlbGYpOgorICAgIHNlbGYuX1Rlc3RPdXRGaWxlKEdURVNUX09VVFBV
VF8xX1RFU1QsIEVYUEVDVEVEXzEpCisKKyAgZGVmIHRlc3RPdXRmaWxlMihzZWxmKToKKyAgICBz
ZWxmLl9UZXN0T3V0RmlsZShHVEVTVF9PVVRQVVRfMl9URVNULCBFWFBFQ1RFRF8yKQorCisgIGRl
ZiBfVGVzdE91dEZpbGUoc2VsZiwgdGVzdF9uYW1lLCBleHBlY3RlZCk6CisgICAgZ3Rlc3RfcHJv
Z19wYXRoID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgodGVzdF9uYW1l
KQorICAgIGNvbW1hbmQgPSBbZ3Rlc3RfcHJvZ19wYXRoLCAnLS1ndGVzdF9vdXRwdXQ9anNvbjol
cycgJSBzZWxmLm91dHB1dF9kaXJfXQorICAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nl
c3MoY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmdf
ZGlyPWd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpKQorICAgIHNlbGYuYXNzZXJ0XyhwLmV4
aXRlZCkKKyAgICBzZWxmLmFzc2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkKKworICAgICMgRklY
TUU6IGxpYnRvb2wgY2F1c2VzIHRoZSBidWlsdCB0ZXN0IGJpbmFyeSB0byBiZQorICAgICMgICBu
YW1lZCBsdC1ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8gaW5zdGVhZCBvZgorICAgICMgICBndGVz
dF94bWxfb3V0ZmlsZXNfdGVzdF8uICBUbyBhY2NvdW50IGZvciB0aGlzIHBvc3NpYmlsaXR5LCB3
ZQorICAgICMgICBhbGxvdyBib3RoIG5hbWVzIGluIHRoZSBmb2xsb3dpbmcgY29kZS4gIFdlIHNo
b3VsZCByZW1vdmUgdGhpcworICAgICMgICB3aGVuIGxpYnRvb2wgcmVwbGFjZW1lbnQgdG9vbCBp
cyByZWFkeS4KKyAgICBvdXRwdXRfZmlsZV9uYW1lMSA9IHRlc3RfbmFtZSArICcuanNvbicKKyAg
ICBvdXRwdXRfZmlsZTEgPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGlyXywgb3V0cHV0X2Zp
bGVfbmFtZTEpCisgICAgb3V0cHV0X2ZpbGVfbmFtZTIgPSAnbHQtJyArIG91dHB1dF9maWxlX25h
bWUxCisgICAgb3V0cHV0X2ZpbGUyID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2Rpcl8sIG91
dHB1dF9maWxlX25hbWUyKQorICAgIHNlbGYuYXNzZXJ0Xyhvcy5wYXRoLmlzZmlsZShvdXRwdXRf
ZmlsZTEpIG9yIG9zLnBhdGguaXNmaWxlKG91dHB1dF9maWxlMiksCisgICAgICAgICAgICAgICAg
IG91dHB1dF9maWxlMSkKKworICAgIGlmIG9zLnBhdGguaXNmaWxlKG91dHB1dF9maWxlMSk6Cisg
ICAgICB3aXRoIG9wZW4ob3V0cHV0X2ZpbGUxKSBhcyBmOgorICAgICAgICBhY3R1YWwgPSBqc29u
LmxvYWQoZikKKyAgICBlbHNlOgorICAgICAgd2l0aCBvcGVuKG91dHB1dF9maWxlMikgYXMgZjoK
KyAgICAgICAgYWN0dWFsID0ganNvbi5sb2FkKGYpCisgICAgc2VsZi5hc3NlcnRFcXVhbChleHBl
Y3RlZCwgZ3Rlc3RfanNvbl90ZXN0X3V0aWxzLm5vcm1hbGl6ZShhY3R1YWwpKQorCisKK2lmIF9f
bmFtZV9fID09ICdfX21haW5fXyc6CisgIG9zLmVudmlyb25bJ0dURVNUX1NUQUNLX1RSQUNFX0RF
UFRIJ10gPSAnMCcKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1qc29uLW91dHB1dC11bml0dGVzdC5w
eSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1qc29uLW91dHB1dC11
bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2RjZDVmYTFjNDYzOWYxNTJmYjU0ZTUwZmI5YzA1OThh
MGU0NmEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
b29nbGV0ZXN0LWpzb24tb3V0cHV0LXVuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNjE4IEBACisjIS91
c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IDIwMTgsIEdvb2dsZSBJbmMuCisjIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoK
KyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJVbml0IHRlc3QgZm9yIHRo
ZSBndGVzdF9qc29uX291dHB1dCBtb2R1bGUuIiIiCisKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0
IGVycm5vCitpbXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKwor
aW1wb3J0IGd0ZXN0X2pzb25fdGVzdF91dGlscworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKwor
R1RFU1RfRklMVEVSX0ZMQUcgPSAnLS1ndGVzdF9maWx0ZXInCitHVEVTVF9MSVNUX1RFU1RTX0ZM
QUcgPSAnLS1ndGVzdF9saXN0X3Rlc3RzJworR1RFU1RfT1VUUFVUX0ZMQUcgPSAnLS1ndGVzdF9v
dXRwdXQnCitHVEVTVF9ERUZBVUxUX09VVFBVVF9GSUxFID0gJ3Rlc3RfZGV0YWlsLmpzb24nCitH
VEVTVF9QUk9HUkFNX05BTUUgPSAnZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8nCisKKyMgVGhl
IGZsYWcgaW5kaWNhdGluZyBzdGFja3RyYWNlcyBhcmUgbm90IHN1cHBvcnRlZAorTk9fU1RBQ0tU
UkFDRV9TVVBQT1JUX0ZMQUcgPSAnLS1ub19zdGFja3RyYWNlX3N1cHBvcnQnCisKK1NVUFBPUlRT
X1NUQUNLX1RSQUNFUyA9IE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFHIG5vdCBpbiBzeXMuYXJn
dgorCitpZiBTVVBQT1JUU19TVEFDS19UUkFDRVM6CisgIFNUQUNLX1RSQUNFX1RFTVBMQVRFID0g
J1xuU3RhY2sgdHJhY2U6XG4qJworZWxzZToKKyAgU1RBQ0tfVFJBQ0VfVEVNUExBVEUgPSAnJwor
CitFWFBFQ1RFRF9OT05fRU1QVFkgPSB7CisgICAgdSd0ZXN0cyc6IDIzLAorICAgIHUnZmFpbHVy
ZXMnOiA0LAorICAgIHUnZGlzYWJsZWQnOiAyLAorICAgIHUnZXJyb3JzJzogMCwKKyAgICB1J3Rp
bWVzdGFtcCc6IHUnKicsCisgICAgdSd0aW1lJzogdScqJywKKyAgICB1J2FkX2hvY19wcm9wZXJ0
eSc6IHUnNDInLAorICAgIHUnbmFtZSc6IHUnQWxsVGVzdHMnLAorICAgIHUndGVzdHN1aXRlcyc6
IFsKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdTdWNjZXNzZnVsVGVzdCcsCisg
ICAgICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAwLAorICAg
ICAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAg
ICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBbCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J1N1Y2NlZWRzJywK
KyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAg
ICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdT
dWNjZXNzZnVsVGVzdCcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnRmFpbGVkVGVzdCcsCisgICAg
ICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAxLAorICAgICAg
ICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAg
ICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBbCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0ZhaWxzJywKKyAgICAg
ICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUn
dGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdGYWlsZWRU
ZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdmYWlsdXJlcyc6IFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2ZhaWx1cmUnOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3Rf
LmNjOipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdFeHBlY3RlZCBlcXVh
bGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHUnICAxXG4gIDInICsgU1RBQ0tfVFJBQ0VfVEVNUExBVEUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdSd0eXBlJzogdScnCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnRGlzYWJsZWRUZXN0JywKKyAg
ICAgICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAg
ICAgICAgICB1J2Rpc2FibGVkJzogMSwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAg
ICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnRElTQUJMRURfdGVz
dF9ub3RfcnVuJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J05PVFJVTicsCisg
ICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUn
Y2xhc3NuYW1lJzogdSdEaXNhYmxlZFRlc3QnCisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1J01peGVk
UmVzdWx0VGVzdCcsCisgICAgICAgICAgICB1J3Rlc3RzJzogMywKKyAgICAgICAgICAgIHUnZmFp
bHVyZXMnOiAxLAorICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDEsCisgICAgICAgICAgICB1J2Vy
cm9ycyc6IDAsCisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0
c3VpdGUnOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUn
OiB1J1N1Y2NlZWRzJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisg
ICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUn
Y2xhc3NuYW1lJzogdSdNaXhlZFJlc3VsdFRlc3QnCisgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnRmFpbHMnLAorICAg
ICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAg
dSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J01peGVk
UmVzdWx0VGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUnZmFpbHVyZXMnOiBbCisgICAgICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdmYWlsdXJl
JzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdndGVzdF94bWxfb3V0cHV0X3Vu
aXR0ZXN0Xy5jYzoqXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnRXhwZWN0
ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1JyAgMVxuICAyJyArIFNUQUNLX1RSQUNFX1RFTVBMQVRFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHUndHlwZSc6IHUnJworICAgICAgICAgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
J2ZhaWx1cmUnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2d0ZXN0X3htbF9v
dXRwdXRfdW5pdHRlc3RfLmNjOipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dSdFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4nCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHUnICAyXG4gIDMnICsgU1RBQ0tfVFJBQ0VfVEVNUExBVEUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdSd0eXBlJzogdScnCisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdESVNBQkxFRF90ZXN0
JywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J05PVFJVTicsCisgICAgICAgICAg
ICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1l
JzogdSdNaXhlZFJlc3VsdFRlc3QnCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQor
ICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1J1htbFF1b3RpbmdU
ZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6
IDEsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzog
MCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6
IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnT3V0
cHV0c0NEYXRhJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAg
ICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xh
c3NuYW1lJzogdSdYbWxRdW90aW5nVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUnZmFpbHVy
ZXMnOiBbCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdSdmYWlsdXJlJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdndGVz
dF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHUnRmFpbGVkXG5YTUwgb3V0cHV0OiA8P3htbCBlbmNvZGluZz0idXRmLTgiPicKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSc8dG9wPjwhW0NEQVRBW2NkYXRhIHRleHRd
XT48L3RvcD4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RBQ0tfVFJBQ0Vf
VEVNUExBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSd0eXBlJzogdScnCisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAg
IHUnbmFtZSc6IHUnSW52YWxpZENoYXJhY3RlcnNUZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMn
OiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDEsCisgICAgICAgICAgICB1J2Rpc2FibGVk
JzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUn
KicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnSW52YWxpZENoYXJhY3RlcnNJbk1lc3NhZ2UnLAor
ICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAg
ICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J0lu
dmFsaWRDaGFyYWN0ZXJzVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUnZmFpbHVyZXMnOiBb
CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dSdmYWlsdXJlJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdndGVzdF94bWxf
b3V0cHV0X3VuaXR0ZXN0Xy5jYzoqXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHUnRmFpbGVkXG5JbnZhbGlkIGNoYXJhY3RlcnMgaW4gYnJhY2tldHMnCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHUnIFtceDAxXHgwMl0nICsgU1RBQ0tfVFJBQ0VfVEVNUExBVEUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSd0eXBlJzogdScnCisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6
IHUnUHJvcGVydHlSZWNvcmRpbmdUZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiA0LAorICAg
ICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAg
ICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAg
ICAgICAgICB1J1NldFVwVGVzdENhc2UnOiB1J3llcycsCisgICAgICAgICAgICB1J1RlYXJEb3du
VGVzdENhc2UnOiB1J2F5ZScsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnT25lUHJvcGVydHknLAor
ICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAg
ICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1By
b3BlcnR5UmVjb3JkaW5nVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUna2V5XzEnOiB1JzEn
CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHUnbmFtZSc6IHUnSW50VmFsdWVkUHJvcGVydHknLAorICAgICAgICAgICAgICAgICAgICB1
J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAg
ICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1Byb3BlcnR5UmVjb3JkaW5nVGVzdCcs
CisgICAgICAgICAgICAgICAgICAgIHUna2V5X2ludCc6IHUnMScKKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdUaHJl
ZVByb3BlcnRpZXMnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAg
ICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdj
bGFzc25hbWUnOiB1J1Byb3BlcnR5UmVjb3JkaW5nVGVzdCcsCisgICAgICAgICAgICAgICAgICAg
IHUna2V5XzEnOiB1JzEnLAorICAgICAgICAgICAgICAgICAgICB1J2tleV8yJzogdScyJywKKyAg
ICAgICAgICAgICAgICAgICAgdSdrZXlfMyc6IHUnMycKKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdUd29WYWx1ZXNG
b3JPbmVLZXlVc2VzTGFzdFZhbHVlJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1
J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAg
ICAgICAgIHUnY2xhc3NuYW1lJzogdSdQcm9wZXJ0eVJlY29yZGluZ1Rlc3QnLAorICAgICAgICAg
ICAgICAgICAgICB1J2tleV8xJzogdScyJworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdOb0ZpeHR1
cmVUZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiAzLAorICAgICAgICAgICAgdSdmYWlsdXJl
cyc6IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3Jz
JzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0
ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUn
UmVjb3JkUHJvcGVydHknLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywK
KyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAg
dSdjbGFzc25hbWUnOiB1J05vRml4dHVyZVRlc3QnLAorICAgICAgICAgICAgICAgICAgICB1J2tl
eSc6IHUnMScKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgdSduYW1lJzogdSdFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRJbnRW
YWx1ZWRQcm9wZXJ0eScsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAor
ICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1
J2NsYXNzbmFtZSc6IHUnTm9GaXh0dXJlVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUna2V5
X2Zvcl91dGlsaXR5X2ludCc6IHUnMScKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHUnRXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkU3RyaW5nVmFsdWVkUHJvcGVydHkn
LAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAg
ICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1
J05vRml4dHVyZVRlc3QnLAorICAgICAgICAgICAgICAgICAgICB1J2tleV9mb3JfdXRpbGl0eV9z
dHJpbmcnOiB1JzEnCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1J1R5cGVkVGVzdC8wJywKKyAgICAg
ICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAg
ICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAg
ICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnSGFzVHlwZVBhcmFtQXR0
cmlidXRlJywKKyAgICAgICAgICAgICAgICAgICAgdSd0eXBlX3BhcmFtJzogdSdpbnQnLAorICAg
ICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAg
dSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1R5cGVk
VGVzdC8wJworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAg
ICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdUeXBlZFRlc3QvMScsCisgICAgICAgICAg
ICB1J3Rlc3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAwLAorICAgICAgICAgICAg
dSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgICAgICB1
J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBbCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0hhc1R5cGVQYXJhbUF0dHJpYnV0
ZScsCisgICAgICAgICAgICAgICAgICAgIHUndHlwZV9wYXJhbSc6IHUnbG9uZycsCisgICAgICAg
ICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3Rp
bWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnVHlwZWRUZXN0
LzEnCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICB1J25hbWUnOiB1J1NpbmdsZS9UeXBlUGFyYW1ldGVyaXplZFRlc3RD
YXNlLzAnLAorICAgICAgICAgICAgdSd0ZXN0cyc6IDEsCisgICAgICAgICAgICB1J2ZhaWx1cmVz
JzogMCwKKyAgICAgICAgICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAgICAgICAgdSdlcnJvcnMn
OiAwLAorICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRl
JzogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdI
YXNUeXBlUGFyYW1BdHRyaWJ1dGUnLAorICAgICAgICAgICAgICAgICAgICB1J3R5cGVfcGFyYW0n
OiB1J2ludCcsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAg
ICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNz
bmFtZSc6IHUnU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMCcKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAg
IHUnbmFtZSc6IHUnU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMScsCisgICAgICAg
ICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAwLAorICAgICAgICAg
ICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgICAg
ICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBbCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0hhc1R5cGVQYXJhbUF0dHJp
YnV0ZScsCisgICAgICAgICAgICAgICAgICAgIHUndHlwZV9wYXJhbSc6IHUnbG9uZycsCisgICAg
ICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1
J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnU2luZ2xl
L1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMScKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnU2lu
Z2xlL1ZhbHVlUGFyYW1UZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiA0LAorICAgICAgICAg
ICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAg
ICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAg
ICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHUnbmFtZSc6IHUnSGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8wJywKKyAgICAgICAgICAgICAgICAg
ICAgdSd2YWx1ZV9wYXJhbSc6IHUnMzMnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6
IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAg
ICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1NpbmdsZS9WYWx1ZVBhcmFtVGVzdCcKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1l
JzogdSdIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzEnLAorICAgICAgICAgICAgICAgICAgICB1J3Zh
bHVlX3BhcmFtJzogdSc0MicsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4n
LAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAg
ICB1J2NsYXNzbmFtZSc6IHUnU2luZ2xlL1ZhbHVlUGFyYW1UZXN0JworICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0Fu
b3RoZXJUZXN0VGhhdEhhc1ZhbHVlUGFyYW1BdHRyaWJ1dGUvMCcsCisgICAgICAgICAgICAgICAg
ICAgIHUndmFsdWVfcGFyYW0nOiB1JzMzJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMn
OiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAg
ICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdTaW5nbGUvVmFsdWVQYXJhbVRlc3QnCisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFt
ZSc6IHUnQW5vdGhlclRlc3RUaGF0SGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8xJywKKyAgICAgICAg
ICAgICAgICAgICAgdSd2YWx1ZV9wYXJhbSc6IHUnNDInLAorICAgICAgICAgICAgICAgICAgICB1
J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAg
ICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1NpbmdsZS9WYWx1ZVBhcmFtVGVzdCcK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CisK
K0VYUEVDVEVEX0ZJTFRFUkVEID0geworICAgIHUndGVzdHMnOiAxLAorICAgIHUnZmFpbHVyZXMn
OiAwLAorICAgIHUnZGlzYWJsZWQnOiAwLAorICAgIHUnZXJyb3JzJzogMCwKKyAgICB1J3RpbWUn
OiB1JyonLAorICAgIHUndGltZXN0YW1wJzogdScqJywKKyAgICB1J25hbWUnOiB1J0FsbFRlc3Rz
JywKKyAgICB1J2FkX2hvY19wcm9wZXJ0eSc6IHUnNDInLAorICAgIHUndGVzdHN1aXRlcyc6IFt7
CisgICAgICAgIHUnbmFtZSc6IHUnU3VjY2Vzc2Z1bFRlc3QnLAorICAgICAgICB1J3Rlc3RzJzog
MSwKKyAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgIHUnZGlzYWJsZWQnOiAwLAorICAg
ICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgIHUndGVz
dHN1aXRlJzogW3sKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnU3VjY2VlZHMnLAorICAgICAgICAg
ICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAg
ICAgICAgdSdjbGFzc25hbWUnOiB1J1N1Y2Nlc3NmdWxUZXN0JywKKyAgICAgICAgfV0KKyAgICB9
XSwKK30KKworRVhQRUNURURfRU1QVFkgPSB7CisgICAgdSd0ZXN0cyc6IDAsCisgICAgdSdmYWls
dXJlcyc6IDAsCisgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgdSdlcnJvcnMnOiAwLAorICAgIHUn
dGltZSc6IHUnKicsCisgICAgdSd0aW1lc3RhbXAnOiB1JyonLAorICAgIHUnbmFtZSc6IHUnQWxs
VGVzdHMnLAorICAgIHUndGVzdHN1aXRlcyc6IFtdLAorfQorCitHVEVTVF9QUk9HUkFNX1BBVEgg
PSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aChHVEVTVF9QUk9HUkFNX05B
TUUpCisKK1NVUFBPUlRTX1RZUEVEX1RFU1RTID0gJ1R5cGVkVGVzdCcgaW4gZ3Rlc3RfdGVzdF91
dGlscy5TdWJwcm9jZXNzKAorICAgIFtHVEVTVF9QUk9HUkFNX1BBVEgsIEdURVNUX0xJU1RfVEVT
VFNfRkxBR10sIGNhcHR1cmVfc3RkZXJyPUZhbHNlKS5vdXRwdXQKKworCitjbGFzcyBHVGVzdEpz
b25PdXRwdXRVbml0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgIiIiVW5pdCB0
ZXN0IGZvciBHb29nbGUgVGVzdCdzIEpTT04gb3V0cHV0IGZ1bmN0aW9uYWxpdHkuCisgICIiIgor
CisgICMgVGhpcyB0ZXN0IGN1cnJlbnRseSBicmVha3Mgb24gcGxhdGZvcm1zIHRoYXQgZG8gbm90
IHN1cHBvcnQgdHlwZWQgYW5kCisgICMgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLCBzbyB3ZSBk
b24ndCBydW4gaXQgdW5kZXIgdGhlbS4KKyAgaWYgU1VQUE9SVFNfVFlQRURfVEVTVFM6CisKKyAg
ICBkZWYgdGVzdE5vbkVtcHR5SnNvbk91dHB1dChzZWxmKToKKyAgICAgICIiIlZlcmlmaWVzIEpT
T04gb3V0cHV0IGZvciBhIEdvb2dsZSBUZXN0IGJpbmFyeSB3aXRoIG5vbi1lbXB0eSBvdXRwdXQu
CisKKyAgICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYSBub24tZW1wdHkg
SlNPTiBvdXRwdXQsIGFuZAorICAgICAgdGVzdHMgdGhhdCB0aGUgSlNPTiBvdXRwdXQgaXMgZXhw
ZWN0ZWQuCisgICAgICAiIiIKKyAgICAgIHNlbGYuX1Rlc3RKc29uT3V0cHV0KEdURVNUX1BST0dS
QU1fTkFNRSwgRVhQRUNURURfTk9OX0VNUFRZLCAxKQorCisgIGRlZiB0ZXN0RW1wdHlKc29uT3V0
cHV0KHNlbGYpOgorICAgICIiIlZlcmlmaWVzIEpTT04gb3V0cHV0IGZvciBhIEdvb2dsZSBUZXN0
IGJpbmFyeSB3aXRob3V0IGFjdHVhbCB0ZXN0cy4KKworICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0g
dGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkgSlNPTiBvdXRwdXQsIGFuZAorICAgIHRlc3RzIHRoYXQg
dGhlIEpTT04gb3V0cHV0IGlzIGV4cGVjdGVkLgorICAgICIiIgorCisgICAgc2VsZi5fVGVzdEpz
b25PdXRwdXQoJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnLCBFWFBFQ1RFRF9FTVBUWSwgMCkKKwor
ICBkZWYgdGVzdFRpbWVzdGFtcFZhbHVlKHNlbGYpOgorICAgICIiIkNoZWNrcyB3aGV0aGVyIHRo
ZSB0aW1lc3RhbXAgYXR0cmlidXRlIGluIHRoZSBKU09OIG91dHB1dCBpcyB2YWxpZC4KKworICAg
IFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkgSlNPTiBvdXRwdXQs
IGFuZCBjaGVja3MgaWYKKyAgICB0aGUgdGltZXN0YW1wIGF0dHJpYnV0ZSBpbiB0aGUgdGVzdHN1
aXRlcyB0YWcgaXMgdmFsaWQuCisgICAgIiIiCisgICAgYWN0dWFsID0gc2VsZi5fR2V0SnNvbk91
dHB1dCgnZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCcsIFtdLCAwKQorICAgIGRhdGVfdGltZV9zdHIg
PSBhY3R1YWxbJ3RpbWVzdGFtcCddCisgICAgIyBkYXRldGltZS5zdHJwdGltZSgpIGlzIG9ubHkg
YXZhaWxhYmxlIGluIFB5dGhvbiAyLjUrIHNvIHdlIGhhdmUgdG8KKyAgICAjIHBhcnNlIHRoZSBl
eHBlY3RlZCBkYXRldGltZSBtYW51YWxseS4KKyAgICBtYXRjaCA9IHJlLm1hdGNoKHInKFxkKykt
KFxkXGQpLShcZFxkKVQoXGRcZCk6KFxkXGQpOihcZFxkKScsIGRhdGVfdGltZV9zdHIpCisgICAg
c2VsZi5hc3NlcnRUcnVlKAorICAgICAgICByZS5tYXRjaCwKKyAgICAgICAgJ0pTT04gZGF0ZXR0
aW1lIHN0cmluZyAlcyBoYXMgaW5jb3JyZWN0IGZvcm1hdCcgJSBkYXRlX3RpbWVfc3RyKQorICAg
IGRhdGVfdGltZV9mcm9tX2pzb24gPSBkYXRldGltZS5kYXRldGltZSgKKyAgICAgICAgeWVhcj1p
bnQobWF0Y2guZ3JvdXAoMSkpLCBtb250aD1pbnQobWF0Y2guZ3JvdXAoMikpLAorICAgICAgICBk
YXk9aW50KG1hdGNoLmdyb3VwKDMpKSwgaG91cj1pbnQobWF0Y2guZ3JvdXAoNCkpLAorICAgICAg
ICBtaW51dGU9aW50KG1hdGNoLmdyb3VwKDUpKSwgc2Vjb25kPWludChtYXRjaC5ncm91cCg2KSkp
CisKKyAgICB0aW1lX2RlbHRhID0gYWJzKGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpIC0gZGF0ZV90
aW1lX2Zyb21fanNvbikKKyAgICAjIHRpbWVzdGFtcCB2YWx1ZSBzaG91bGQgYmUgbmVhciB0aGUg
Y3VycmVudCBsb2NhbCB0aW1lCisgICAgc2VsZi5hc3NlcnRUcnVlKHRpbWVfZGVsdGEgPCBkYXRl
dGltZS50aW1lZGVsdGEoc2Vjb25kcz02MDApLAorICAgICAgICAgICAgICAgICAgICAndGltZV9k
ZWx0YSBpcyAlcycgJSB0aW1lX2RlbHRhKQorCisgIGRlZiB0ZXN0RGVmYXVsdE91dHB1dEZpbGUo
c2VsZik6CisgICAgIiIiVmVyaWZpZXMgdGhlIGRlZmF1bHQgb3V0cHV0IGZpbGUgbmFtZS4KKwor
ICAgIENvbmZpcm1zIHRoYXQgR29vZ2xlIFRlc3QgcHJvZHVjZXMgYW4gSlNPTiBvdXRwdXQgZmls
ZSB3aXRoIHRoZSBleHBlY3RlZAorICAgIGRlZmF1bHQgbmFtZSBpZiBubyBuYW1lIGlzIGV4cGxp
Y2l0bHkgc3BlY2lmaWVkLgorICAgICIiIgorICAgIG91dHB1dF9maWxlID0gb3MucGF0aC5qb2lu
KGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdURVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUpCisgICAgZ3Rlc3RfcHJvZ19wYXRoID0g
Z3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisgICAgICAgICdndGVzdF9u
b190ZXN0X3VuaXR0ZXN0JykKKyAgICB0cnk6CisgICAgICBvcy5yZW1vdmUob3V0cHV0X2ZpbGUp
CisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICBlID0gc3lzLmV4Y19pbmZvKClbMV0KKyAgICAg
IGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgorICAgICAgICByYWlzZQorCisgICAgcCA9IGd0
ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKKyAgICAgICAgW2d0ZXN0X3Byb2dfcGF0aCwgJyVz
PWpzb24nICUgR1RFU1RfT1VUUFVUX0ZMQUddLAorICAgICAgICB3b3JraW5nX2Rpcj1ndGVzdF90
ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSkKKyAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCisgICAg
c2VsZi5hc3NlcnRFcXVhbHMoMCwgcC5leGl0X2NvZGUpCisgICAgc2VsZi5hc3NlcnRfKG9zLnBh
dGguaXNmaWxlKG91dHB1dF9maWxlKSkKKworICBkZWYgdGVzdFN1cHByZXNzZWRKc29uT3V0cHV0
KHNlbGYpOgorICAgICIiIlZlcmlmaWVzIHRoYXQgbm8gSlNPTiBvdXRwdXQgaXMgZ2VuZXJhdGVk
LgorCisgICAgVGVzdHMgdGhhdCBubyBKU09OIGZpbGUgaXMgZ2VuZXJhdGVkIGlmIHRoZSBkZWZh
dWx0IEpTT04gbGlzdGVuZXIgaXMKKyAgICBzaHV0IGRvd24gYmVmb3JlIFJVTl9BTExfVEVTVFMg
aXMgaW52b2tlZC4KKyAgICAiIiIKKworICAgIGpzb25fcGF0aCA9IG9zLnBhdGguam9pbihndGVz
dF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R1RFU1RfUFJPR1JBTV9OQU1FICsgJ291dC5qc29uJykKKyAgICBpZiBvcy5wYXRoLmlzZmlsZShq
c29uX3BhdGgpOgorICAgICAgb3MucmVtb3ZlKGpzb25fcGF0aCkKKworICAgIGNvbW1hbmQgPSBb
R1RFU1RfUFJPR1JBTV9QQVRILAorICAgICAgICAgICAgICAgJyVzPWpzb246JXMnICUgKEdURVNU
X09VVFBVVF9GTEFHLCBqc29uX3BhdGgpLAorICAgICAgICAgICAgICAgJy0tc2h1dF9kb3duX3ht
bCddCisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kKQorICAgIGlm
IHAudGVybWluYXRlZF9ieV9zaWduYWw6CisgICAgICAjIHAuc2lnbmFsIGlzIGF2YWlsYWJsZSBv
bmx5IGlmIHAudGVybWluYXRlZF9ieV9zaWduYWwgaXMgVHJ1ZS4KKyAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UoCisgICAgICAgICAgcC50ZXJtaW5hdGVkX2J5X3NpZ25hbCwKKyAgICAgICAgICAnJXMg
d2FzIGtpbGxlZCBieSBzaWduYWwgJWQnICUgKEdURVNUX1BST0dSQU1fTkFNRSwgcC5zaWduYWwp
KQorICAgIGVsc2U6CisgICAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCisgICAgICBzZWxmLmFz
c2VydEVxdWFscygxLCBwLmV4aXRfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICInJXMn
IGV4aXRlZCB3aXRoIGNvZGUgJXMsIHdoaWNoIGRvZXNuJ3QgbWF0Y2ggIgorICAgICAgICAgICAg
ICAgICAgICAgICAgJ3RoZSBleHBlY3RlZCBleGl0IGNvZGUgJXMuJworICAgICAgICAgICAgICAg
ICAgICAgICAgJSAoY29tbWFuZCwgcC5leGl0X2NvZGUsIDEpKQorCisgICAgc2VsZi5hc3NlcnRf
KG5vdCBvcy5wYXRoLmlzZmlsZShqc29uX3BhdGgpKQorCisgIGRlZiB0ZXN0RmlsdGVyZWRUZXN0
SnNvbk91dHB1dChzZWxmKToKKyAgICAiIiJWZXJpZmllcyBKU09OIG91dHB1dCB3aGVuIGEgZmls
dGVyIGlzIGFwcGxpZWQuCisKKyAgICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRoYXQgZXhlY3V0ZXMg
b25seSBzb21lIHRlc3RzIGFuZCB2ZXJpZmllcyB0aGF0CisgICAgbm9uLXNlbGVjdGVkIHRlc3Rz
IGRvIG5vdCBzaG93IHVwIGluIHRoZSBKU09OIG91dHB1dC4KKyAgICAiIiIKKworICAgIHNlbGYu
X1Rlc3RKc29uT3V0cHV0KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQRUNURURfRklMVEVSRUQsIDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfYXJncz1bJyVzPVN1Y2Nlc3NmdWxUZXN0
LionICUgR1RFU1RfRklMVEVSX0ZMQUddKQorCisgIGRlZiBfR2V0SnNvbk91dHB1dChzZWxmLCBn
dGVzdF9wcm9nX25hbWUsIGV4dHJhX2FyZ3MsIGV4cGVjdGVkX2V4aXRfY29kZSk6CisgICAgIiIi
UmV0dXJucyB0aGUgSlNPTiBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgdGhlIHByb2dyYW0g
Z3Rlc3RfcHJvZ19uYW1lLgorCisgICAgRnVydGhlcm1vcmUsIHRoZSBwcm9ncmFtJ3MgZXhpdCBj
b2RlIG11c3QgYmUgZXhwZWN0ZWRfZXhpdF9jb2RlLgorCisgICAgQXJnczoKKyAgICAgIGd0ZXN0
X3Byb2dfbmFtZTogR29vZ2xlIFRlc3QgYmluYXJ5IG5hbWUuCisgICAgICBleHRyYV9hcmdzOiBl
eHRyYSBhcmd1bWVudHMgdG8gYmluYXJ5IGludm9jYXRpb24uCisgICAgICBleHBlY3RlZF9leGl0
X2NvZGU6IHByb2dyYW0ncyBleGl0IGNvZGUuCisgICAgIiIiCisgICAganNvbl9wYXRoID0gb3Mu
cGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBndGVzdF9wcm9nX25hbWUgKyAnb3V0Lmpzb24nKQorICAgIGd0ZXN0X3By
b2dfcGF0aCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKGd0ZXN0X3By
b2dfbmFtZSkKKworICAgIGNvbW1hbmQgPSAoCisgICAgICAgIFtndGVzdF9wcm9nX3BhdGgsICcl
cz1qc29uOiVzJyAlIChHVEVTVF9PVVRQVVRfRkxBRywganNvbl9wYXRoKV0gKworICAgICAgICBl
eHRyYV9hcmdzCisgICAgKQorICAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29t
bWFuZCkKKyAgICBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsOgorICAgICAgc2VsZi5hc3NlcnRf
KEZhbHNlLAorICAgICAgICAgICAgICAgICAgICclcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAlZCcg
JSAoZ3Rlc3RfcHJvZ19uYW1lLCBwLnNpZ25hbCkpCisgICAgZWxzZToKKyAgICAgIHNlbGYuYXNz
ZXJ0XyhwLmV4aXRlZCkKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX2V4aXRfY29k
ZSwgcC5leGl0X2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyBleGl0ZWQgd2l0
aCBjb2RlICVzLCB3aGljaCBkb2Vzbid0IG1hdGNoICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICd0aGUgZXhwZWN0ZWQgZXhpdCBjb2RlICVzLicKKyAgICAgICAgICAgICAgICAgICAgICAgICUg
KGNvbW1hbmQsIHAuZXhpdF9jb2RlLCBleHBlY3RlZF9leGl0X2NvZGUpKQorICAgIHdpdGggb3Bl
bihqc29uX3BhdGgpIGFzIGY6CisgICAgICBhY3R1YWwgPSBqc29uLmxvYWQoZikKKyAgICByZXR1
cm4gYWN0dWFsCisKKyAgZGVmIF9UZXN0SnNvbk91dHB1dChzZWxmLCBndGVzdF9wcm9nX25hbWUs
IGV4cGVjdGVkLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZSwgZXh0
cmFfYXJncz1Ob25lKToKKyAgICAiIiJDaGVja3MgdGhlIEpTT04gb3V0cHV0IGdlbmVyYXRlZCBi
eSB0aGUgR29vZ2xlIFRlc3QgYmluYXJ5LgorCisgICAgQXNzZXJ0cyB0aGF0IHRoZSBKU09OIGRv
Y3VtZW50IGdlbmVyYXRlZCBieSBydW5uaW5nIHRoZSBwcm9ncmFtCisgICAgZ3Rlc3RfcHJvZ19u
YW1lIG1hdGNoZXMgZXhwZWN0ZWRfanNvbiwgYSBzdHJpbmcgY29udGFpbmluZyBhbm90aGVyCisg
ICAgSlNPTiBkb2N1bWVudC4gIEZ1cnRoZXJtb3JlLCB0aGUgcHJvZ3JhbSdzIGV4aXQgY29kZSBt
dXN0IGJlCisgICAgZXhwZWN0ZWRfZXhpdF9jb2RlLgorCisgICAgQXJnczoKKyAgICAgIGd0ZXN0
X3Byb2dfbmFtZTogR29vZ2xlIFRlc3QgYmluYXJ5IG5hbWUuCisgICAgICBleHBlY3RlZDogZXhw
ZWN0ZWQgb3V0cHV0LgorICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlOiBwcm9ncmFtJ3MgZXhpdCBj
b2RlLgorICAgICAgZXh0cmFfYXJnczogZXh0cmEgYXJndW1lbnRzIHRvIGJpbmFyeSBpbnZvY2F0
aW9uLgorICAgICIiIgorCisgICAgYWN0dWFsID0gc2VsZi5fR2V0SnNvbk91dHB1dChndGVzdF9w
cm9nX25hbWUsIGV4dHJhX2FyZ3Mgb3IgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZF9leGl0X2NvZGUpCisgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwg
Z3Rlc3RfanNvbl90ZXN0X3V0aWxzLm5vcm1hbGl6ZShhY3R1YWwpKQorCisKK2lmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6CisgIGlmIE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFHIGluIHN5cy5h
cmd2OgorICAgICMgdW5pdHRlc3QubWFpbigpIGNhbid0IGhhbmRsZSB1bmtub3duIGZsYWdzCisg
ICAgc3lzLmFyZ3YucmVtb3ZlKE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFHKQorCisgIG9zLmVu
dmlyb25bJ0dURVNUX1NUQUNLX1RSQUNFX0RFUFRIJ10gPSAnMScKKyAgZ3Rlc3RfdGVzdF91dGls
cy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xl
dGVzdC1saW5rZWQtcHRyLXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3QtbGlua2VkLXB0ci10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMDBmMzQyOTZiZDU3OTRj
MTY0NDc5ZjIyYTg4ZGQ0ZjczNjAwMWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlua2VkLXB0ci10ZXN0LmNjCkBAIC0wLDAgKzEs
MTUxIEBACisvLyBDb3B5cmlnaHQgMjAwMywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLwor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNp
bmNsdWRlIDxzdGRsaWIuaD4KKworI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtl
ZF9wdHIuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCit1c2lu
ZyB0ZXN0aW5nOjpNZXNzYWdlOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmxpbmtlZF9wdHI7
CisKK2ludCBudW07CitNZXNzYWdlKiBoaXN0b3J5ID0gTlVMTDsKKworLy8gQ2xhc3Mgd2hpY2gg
dHJhY2tzIGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uCitjbGFzcyBBIHsKKyBwdWJsaWM6CisgIEEo
KTogbXludW0obnVtKyspIHsgKmhpc3RvcnkgPDwgIkEiIDw8IG15bnVtIDw8ICIgY3RvclxuIjsg
fQorICB2aXJ0dWFsIH5BKCkgeyAqaGlzdG9yeSA8PCAiQSIgPDwgbXludW0gPDwgIiBkdG9yXG4i
OyB9CisgIHZpcnR1YWwgdm9pZCBVc2UoKSB7ICpoaXN0b3J5IDw8ICJBIiA8PCBteW51bSA8PCAi
IHVzZVxuIjsgfQorIHByb3RlY3RlZDoKKyAgaW50IG15bnVtOworfTsKKworLy8gU3ViY2xhc3MK
K2NsYXNzIEIgOiBwdWJsaWMgQSB7CisgcHVibGljOgorICBCKCkgeyAqaGlzdG9yeSA8PCAiQiIg
PDwgbXludW0gPDwgIiBjdG9yXG4iOyB9CisgIH5CKCkgeyAqaGlzdG9yeSA8PCAiQiIgPDwgbXlu
dW0gPDwgIiBkdG9yXG4iOyB9CisgIHZpcnR1YWwgdm9pZCBVc2UoKSB7ICpoaXN0b3J5IDw8ICJC
IiA8PCBteW51bSA8PCAiIHVzZVxuIjsgfQorfTsKKworY2xhc3MgTGlua2VkUHRyVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwdWJsaWM6CisgIExpbmtlZFB0clRlc3QoKSB7CisgICAg
bnVtID0gMDsKKyAgICBoaXN0b3J5ID0gbmV3IE1lc3NhZ2U7CisgIH0KKworICB2aXJ0dWFsIH5M
aW5rZWRQdHJUZXN0KCkgeworICAgIGRlbGV0ZSBoaXN0b3J5OworICAgIGhpc3RvcnkgPSBOVUxM
OworICB9Cit9OworCitURVNUX0YoTGlua2VkUHRyVGVzdCwgR2VuZXJhbFRlc3QpIHsKKyAgewor
ICAgIGxpbmtlZF9wdHI8QT4gYTAsIGExLCBhMjsKKyAgICAvLyBVc2UgZXhwbGljaXQgZnVuY3Rp
b24gY2FsbCBub3RhdGlvbiBoZXJlIHRvIHN1cHByZXNzIHNlbGYtYXNzaWduIHdhcm5pbmcuCisg
ICAgYTAub3BlcmF0b3I9KGEwKTsKKyAgICBhMSA9IGEyOworICAgIEFTU0VSVF9FUShhMC5nZXQo
KSwgc3RhdGljX2Nhc3Q8QSo+KE5VTEwpKTsKKyAgICBBU1NFUlRfRVEoYTEuZ2V0KCksIHN0YXRp
Y19jYXN0PEEqPihOVUxMKSk7CisgICAgQVNTRVJUX0VRKGEyLmdldCgpLCBzdGF0aWNfY2FzdDxB
Kj4oTlVMTCkpOworICAgIEFTU0VSVF9UUlVFKGEwID09IE5VTEwpOworICAgIEFTU0VSVF9UUlVF
KGExID09IE5VTEwpOworICAgIEFTU0VSVF9UUlVFKGEyID09IE5VTEwpOworCisgICAgeworICAg
ICAgbGlua2VkX3B0cjxBPiBhMyhuZXcgQSk7CisgICAgICBhMCA9IGEzOworICAgICAgQVNTRVJU
X1RSVUUoYTAgPT0gYTMpOworICAgICAgQVNTRVJUX1RSVUUoYTAgIT0gTlVMTCk7CisgICAgICBB
U1NFUlRfVFJVRShhMC5nZXQoKSA9PSBhMyk7CisgICAgICBBU1NFUlRfVFJVRShhMCA9PSBhMy5n
ZXQoKSk7CisgICAgICBsaW5rZWRfcHRyPEE+IGE0KGEwKTsKKyAgICAgIGExID0gYTQ7CisgICAg
ICBsaW5rZWRfcHRyPEE+IGE1KG5ldyBBKTsKKyAgICAgIEFTU0VSVF9UUlVFKGE1LmdldCgpICE9
IGEzKTsKKyAgICAgIEFTU0VSVF9UUlVFKGE1ICE9IGEzLmdldCgpKTsKKyAgICAgIGEyID0gYTU7
CisgICAgICBsaW5rZWRfcHRyPEI+IGIwKG5ldyBCKTsKKyAgICAgIGxpbmtlZF9wdHI8QT4gYTYo
YjApOworICAgICAgQVNTRVJUX1RSVUUoYjAgPT0gYTYpOworICAgICAgQVNTRVJUX1RSVUUoYTYg
PT0gYjApOworICAgICAgQVNTRVJUX1RSVUUoYjAgIT0gTlVMTCk7CisgICAgICBhNSA9IGIwOwor
ICAgICAgYTUgPSBiMDsKKyAgICAgIGEzLT5Vc2UoKTsKKyAgICAgIGE0LT5Vc2UoKTsKKyAgICAg
IGE1LT5Vc2UoKTsKKyAgICAgIGE2LT5Vc2UoKTsKKyAgICAgIGIwLT5Vc2UoKTsKKyAgICAgICgq
YjApLlVzZSgpOworICAgICAgYjAuZ2V0KCktPlVzZSgpOworICAgIH0KKworICAgIGEwLT5Vc2Uo
KTsKKyAgICBhMS0+VXNlKCk7CisgICAgYTItPlVzZSgpOworCisgICAgYTEgPSBhMjsKKyAgICBh
Mi5yZXNldChuZXcgQSk7CisgICAgYTAucmVzZXQoKTsKKworICAgIGxpbmtlZF9wdHI8QT4gYTc7
CisgIH0KKworICBBU1NFUlRfU1RSRVEoCisgICAgIkEwIGN0b3JcbiIKKyAgICAiQTEgY3Rvclxu
IgorICAgICJBMiBjdG9yXG4iCisgICAgIkIyIGN0b3JcbiIKKyAgICAiQTAgdXNlXG4iCisgICAg
IkEwIHVzZVxuIgorICAgICJCMiB1c2VcbiIKKyAgICAiQjIgdXNlXG4iCisgICAgIkIyIHVzZVxu
IgorICAgICJCMiB1c2VcbiIKKyAgICAiQjIgdXNlXG4iCisgICAgIkIyIGR0b3JcbiIKKyAgICAi
QTIgZHRvclxuIgorICAgICJBMCB1c2VcbiIKKyAgICAiQTAgdXNlXG4iCisgICAgIkExIHVzZVxu
IgorICAgICJBMyBjdG9yXG4iCisgICAgIkEwIGR0b3JcbiIKKyAgICAiQTMgZHRvclxuIgorICAg
ICJBMSBkdG9yXG4iLAorICAgIGhpc3RvcnktPkdldFN0cmluZygpLmNfc3RyKCkpOworfQorCit9
ICAvLyBVbm5hbWVkIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdC5weQpuZXcgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44MTQyM2EzMzllOGZkMjhhYTJiNDI1MzAxM2IzYzIzY2UzNTMzNzQ5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWxpc3QtdGVz
dHMtdW5pdHRlc3QucHkKQEAgLTAsMCArMSwyMDUgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgor
IworIyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0
ZXN0X2xpc3RfdGVzdHMgZmxhZy4KKworQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gbGlz
dCBhbGwgdGVzdHMgYnkgc3BlY2lmeWluZyB0aGUKKy0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLiAg
VGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5CitieSBpbnZva2luZyBnb29nbGV0
ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfIChhIHByb2dyYW0gd3JpdHRlbiB3aXRoCitHb29nbGUg
VGVzdCkgdGhlIGNvbW1hbmQgbGluZSBmbGFncy4KKyIiIgorCitpbXBvcnQgcmUKK2ltcG9ydCBn
dGVzdF90ZXN0X3V0aWxzCisKKyMgQ29uc3RhbnRzLgorCisjIFRoZSBjb21tYW5kIGxpbmUgZmxh
ZyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIGxpc3RpbmcgYWxsIHRlc3RzLgorTElTVF9URVNUU19G
TEFHID0gJ2d0ZXN0X2xpc3RfdGVzdHMnCisKKyMgUGF0aCB0byB0aGUgZ29vZ2xldGVzdC1saXN0
LXRlc3RzLXVuaXR0ZXN0XyBwcm9ncmFtLgorRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdl
dFRlc3RFeGVjdXRhYmxlUGF0aCgnZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0XycpCisK
KyMgVGhlIGV4cGVjdGVkIG91dHB1dCB3aGVuIHJ1bm5pbmcgZ29vZ2xldGVzdC1saXN0LXRlc3Rz
LXVuaXR0ZXN0XyB3aXRoCisjIC0tZ3Rlc3RfbGlzdF90ZXN0cworRVhQRUNURURfT1VUUFVUX05P
X0ZJTFRFUl9SRSA9IHJlLmNvbXBpbGUociIiIkZvb0RlYXRoVGVzdFwuCisgIFRlc3QxCitGb29c
LgorICBCYXIxCisgIEJhcjIKKyAgRElTQUJMRURfQmFyMworQWJjXC4KKyAgWHl6CisgIERlZgor
Rm9vQmFyXC4KKyAgQmF6CitGb29UZXN0XC4KKyAgVGVzdDEKKyAgRElTQUJMRURfVGVzdDIKKyAg
VGVzdDMKK1R5cGVkVGVzdC8wXC4gICMgVHlwZVBhcmFtID0gKFZlcnlMb3syNDV9fGNsYXNzIFZl
cnlMb3syMzl9KVwuXC5cLgorICBUZXN0QQorICBUZXN0QgorVHlwZWRUZXN0LzFcLiAgIyBUeXBl
UGFyYW0gPSBpbnRccypcKiggX19wdHI2NCk/CisgIFRlc3RBCisgIFRlc3RCCitUeXBlZFRlc3Qv
MlwuICAjIFR5cGVQYXJhbSA9IC4qTXlBcnJheTxib29sLFxzKjQyPgorICBUZXN0QQorICBUZXN0
QgorTXkvVHlwZVBhcmFtVGVzdC8wXC4gICMgVHlwZVBhcmFtID0gKFZlcnlMb3syNDV9fGNsYXNz
IFZlcnlMb3syMzl9KVwuXC5cLgorICBUZXN0QQorICBUZXN0QgorTXkvVHlwZVBhcmFtVGVzdC8x
XC4gICMgVHlwZVBhcmFtID0gaW50XHMqXCooIF9fcHRyNjQpPworICBUZXN0QQorICBUZXN0Qgor
TXkvVHlwZVBhcmFtVGVzdC8yXC4gICMgVHlwZVBhcmFtID0gLipNeUFycmF5PGJvb2wsXHMqNDI+
CisgIFRlc3RBCisgIFRlc3RCCitNeUluc3RhbnRpYXRpb24vVmFsdWVQYXJhbVRlc3RcLgorICBU
ZXN0QS8wICAjIEdldFBhcmFtXChcKSA9IG9uZSBsaW5lCisgIFRlc3RBLzEgICMgR2V0UGFyYW1c
KFwpID0gdHdvXFxubGluZXMKKyAgVGVzdEEvMiAgIyBHZXRQYXJhbVwoXCkgPSBhIHZlcnlcXG5s
b3syNDF9XC5cLlwuCisgIFRlc3RCLzAgICMgR2V0UGFyYW1cKFwpID0gb25lIGxpbmUKKyAgVGVz
dEIvMSAgIyBHZXRQYXJhbVwoXCkgPSB0d29cXG5saW5lcworICBUZXN0Qi8yICAjIEdldFBhcmFt
XChcKSA9IGEgdmVyeVxcbmxvezI0MX1cLlwuXC4KKyIiIikKKworIyBUaGUgZXhwZWN0ZWQgb3V0
cHV0IHdoZW4gcnVubmluZyBnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfIHdpdGgKKyMg
LS1ndGVzdF9saXN0X3Rlc3RzIGFuZCAtLWd0ZXN0X2ZpbHRlcj1Gb28qLgorRVhQRUNURURfT1VU
UFVUX0ZJTFRFUl9GT09fUkUgPSByZS5jb21waWxlKHIiIiJGb29EZWF0aFRlc3RcLgorICBUZXN0
MQorRm9vXC4KKyAgQmFyMQorICBCYXIyCisgIERJU0FCTEVEX0JhcjMKK0Zvb0JhclwuCisgIEJh
egorRm9vVGVzdFwuCisgIFRlc3QxCisgIERJU0FCTEVEX1Rlc3QyCisgIFRlc3QzCisiIiIpCisK
KyMgVXRpbGl0aWVzLgorCisKK2RlZiBSdW4oYXJncyk6CisgICIiIlJ1bnMgZ29vZ2xldGVzdC1s
aXN0LXRlc3RzLXVuaXR0ZXN0XyBhbmQgcmV0dXJucyB0aGUgbGlzdCBvZiB0ZXN0cyBwcmludGVk
LiIiIgorCisgIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0VYRV9QQVRIXSAr
IGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZV9zdGRl
cnI9RmFsc2UpLm91dHB1dAorCisKKyMgVGhlIHVuaXQgdGVzdC4KKworCitjbGFzcyBHVGVzdExp
c3RUZXN0c1VuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJUZXN0cyB1
c2luZyB0aGUgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcgdG8gbGlzdCBhbGwgdGVzdHMuIiIiCisK
KyAgZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBmbGFnX3ZhbHVlLCBleHBlY3RlZF9vdXRwdXRfcmUs
IG90aGVyX2ZsYWcpOgorICAgICIiIlJ1bnMgZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0
XyBhbmQgdmVyaWZpZXMgdGhhdCBpdCBwcmludHMKKyAgICB0aGUgY29ycmVjdCB0ZXN0cy4KKwor
ICAgIEFyZ3M6CisgICAgICBmbGFnX3ZhbHVlOiAgICAgICAgIHZhbHVlIG9mIHRoZSAtLWd0ZXN0
X2xpc3RfdGVzdHMgZmxhZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSBpZiB0aGUg
ZmxhZyBzaG91bGQgbm90IGJlIHByZXNlbnQuCisgICAgICBleHBlY3RlZF9vdXRwdXRfcmU6IHJl
Z3VsYXIgZXhwcmVzc2lvbiB0aGF0IG1hdGNoZXMgdGhlIGV4cGVjdGVkCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIG91dHB1dCBhZnRlciBydW5uaW5nIGNvbW1hbmQ7CisgICAgICBvdGhlcl9m
bGFnOiAgICAgICAgIGEgZGlmZmVyZW50IGZsYWcgdG8gYmUgcGFzc2VkIHRvIGNvbW1hbmQKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWxvbmcgd2l0aCBndGVzdF9saXN0X3Rlc3RzOworICAg
ICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBub3QgYmUgcHJl
c2VudC4KKyAgICAiIiIKKworICAgIGlmIGZsYWdfdmFsdWUgaXMgTm9uZToKKyAgICAgIGZsYWcg
PSAnJworICAgICAgZmxhZ19leHByZXNzaW9uID0gJ25vdCBzZXQnCisgICAgZWxpZiBmbGFnX3Zh
bHVlID09ICcwJzoKKyAgICAgIGZsYWcgPSAnLS0lcz0wJyAlIExJU1RfVEVTVFNfRkxBRworICAg
ICAgZmxhZ19leHByZXNzaW9uID0gJzAnCisgICAgZWxzZToKKyAgICAgIGZsYWcgPSAnLS0lcycg
JSBMSVNUX1RFU1RTX0ZMQUcKKyAgICAgIGZsYWdfZXhwcmVzc2lvbiA9ICcxJworCisgICAgYXJn
cyA9IFtmbGFnXQorCisgICAgaWYgb3RoZXJfZmxhZyBpcyBub3QgTm9uZToKKyAgICAgIGFyZ3Mg
Kz0gW290aGVyX2ZsYWddCisKKyAgICBvdXRwdXQgPSBSdW4oYXJncykKKworICAgIGlmIGV4cGVj
dGVkX291dHB1dF9yZToKKyAgICAgIHNlbGYuYXNzZXJ0XygKKyAgICAgICAgICBleHBlY3RlZF9v
dXRwdXRfcmUubWF0Y2gob3V0cHV0KSwKKyAgICAgICAgICAoJ3doZW4gJXMgaXMgJXMsIHRoZSBv
dXRwdXQgb2YgIiVzIiBpcyAiJXMiLFxuJworICAgICAgICAgICAnd2hpY2ggZG9lcyBub3QgbWF0
Y2ggcmVnZXggIiVzIicgJQorICAgICAgICAgICAoTElTVF9URVNUU19GTEFHLCBmbGFnX2V4cHJl
c3Npb24sICcgJy5qb2luKGFyZ3MpLCBvdXRwdXQsCisgICAgICAgICAgICBleHBlY3RlZF9vdXRw
dXRfcmUucGF0dGVybikpKQorICAgIGVsc2U6CisgICAgICBzZWxmLmFzc2VydF8oCisgICAgICAg
ICAgbm90IEVYUEVDVEVEX09VVFBVVF9OT19GSUxURVJfUkUubWF0Y2gob3V0cHV0KSwKKyAgICAg
ICAgICAoJ3doZW4gJXMgaXMgJXMsIHRoZSBvdXRwdXQgb2YgIiVzIiBpcyAiJXMiJyUKKyAgICAg
ICAgICAgKExJU1RfVEVTVFNfRkxBRywgZmxhZ19leHByZXNzaW9uLCAnICcuam9pbihhcmdzKSwg
b3V0cHV0KSkpCisKKyAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3Ioc2VsZik6CisgICAgIiIiVGVz
dHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0IG1vZGUuIiIiCisKKyAgICBzZWxmLlJ1bkFu
ZFZlcmlmeShmbGFnX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRf
b3V0cHV0X3JlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz1Ob25lKQor
CisgIGRlZiB0ZXN0RmxhZyhzZWxmKToKKyAgICAiIiJUZXN0cyB1c2luZyB0aGUgLS1ndGVzdF9s
aXN0X3Rlc3RzIGZsYWcuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPScw
JywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9Tm9uZSwKKyAgICAg
ICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPU5vbmUpCisgICAgc2VsZi5SdW5BbmRWZXJpZnko
ZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0X3Jl
PUVYUEVDVEVEX09VVFBVVF9OT19GSUxURVJfUkUsCisgICAgICAgICAgICAgICAgICAgICAgb3Ro
ZXJfZmxhZz1Ob25lKQorCisgIGRlZiB0ZXN0T3ZlcnJpZGVOb25GaWx0ZXJGbGFncyhzZWxmKToK
KyAgICAiIiJUZXN0cyB0aGF0IC0tZ3Rlc3RfbGlzdF90ZXN0cyBvdmVycmlkZXMgdGhlIG5vbi1m
aWx0ZXIgZmxhZ3MuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPScxJywK
KyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9RVhQRUNURURfT1VUUFVU
X05PX0ZJTFRFUl9SRSwKKyAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPSctLWd0ZXN0
X2JyZWFrX29uX2ZhaWx1cmUnKQorCisgIGRlZiB0ZXN0V2l0aEZpbHRlckZsYWdzKHNlbGYpOgor
ICAgICIiIlRlc3RzIHRoYXQgLS1ndGVzdF9saXN0X3Rlc3RzIHRha2VzIGludG8gYWNjb3VudCB0
aGUKKyAgICAtLWd0ZXN0X2ZpbHRlciBmbGFnLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnko
ZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0X3Jl
PUVYUEVDVEVEX09VVFBVVF9GSUxURVJfRk9PX1JFLAorICAgICAgICAgICAgICAgICAgICAgIG90
aGVyX2ZsYWc9Jy0tZ3Rlc3RfZmlsdGVyPUZvbyonKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21h
aW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdF8uY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVz
dF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjQ3M2M3ZDFhNDVmMWYxOTZiMTM3NDgzYjA1M2NhNTk4MDA3ZDI4
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xl
dGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0Xy5jYwpAQCAtMCwwICsxLDE1NiBAQAorLy8gQ29weXJp
Z2h0IDIwMDYsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRp
b24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisv
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIFVuaXQgdGVzdCBmb3Ig
R29vZ2xlIFRlc3QncyAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4KKy8vCisvLyBBIHVzZXIgY2Fu
IGFzayBHb29nbGUgVGVzdCB0byBsaXN0IGFsbCB0ZXN0cyB0aGF0IHdpbGwgcnVuCisvLyBzbyB0
aGF0IHdoZW4gdXNpbmcgYSBmaWx0ZXIsIGEgdXNlciB3aWxsIGtub3cgd2hhdAorLy8gdGVzdHMg
dG8gbG9vayBmb3IuIFRoZSB0ZXN0cyB3aWxsIG5vdCBiZSBydW4gYWZ0ZXIgbGlzdGluZy4KKy8v
CisvLyBUaGlzIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRob24gdW5pdCB0ZXN0
LgorLy8gRG9uJ3QgcnVuIGl0IGRpcmVjdGx5LgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
KworLy8gU2V2ZXJhbCBkaWZmZXJlbnQgdGVzdCBjYXNlcyBhbmQgdGVzdHMgdGhhdCB3aWxsIGJl
IGxpc3RlZC4KK1RFU1QoRm9vLCBCYXIxKSB7Cit9CisKK1RFU1QoRm9vLCBCYXIyKSB7Cit9CisK
K1RFU1QoRm9vLCBESVNBQkxFRF9CYXIzKSB7Cit9CisKK1RFU1QoQWJjLCBYeXopIHsKK30KKwor
VEVTVChBYmMsIERlZikgeworfQorCitURVNUKEZvb0JhciwgQmF6KSB7Cit9CisKK2NsYXNzIEZv
b1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitURVNUX0YoRm9vVGVzdCwgVGVz
dDEpIHsKK30KKworVEVTVF9GKEZvb1Rlc3QsIERJU0FCTEVEX1Rlc3QyKSB7Cit9CisKK1RFU1Rf
RihGb29UZXN0LCBUZXN0MykgeworfQorCitURVNUKEZvb0RlYXRoVGVzdCwgVGVzdDEpIHsKK30K
KworLy8gQSBncm91cCBvZiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorCitjbGFzcyBNeVR5
cGUgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgTXlUeXBlKGNvbnN0IHN0ZDo6c3RyaW5nJiBhX3Zh
bHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7fQorCisgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQorCisgcHJpdmF0ZToKKyAgc3RkOjpzdHJpbmcgdmFs
dWVfOworfTsKKworLy8gVGVhY2hlcyBHb29nbGUgVGVzdCBob3cgdG8gcHJpbnQgYSBNeVR5cGUu
Cit2b2lkIFByaW50VG8oY29uc3QgTXlUeXBlJiB4LCBzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpv
cyA8PCB4LnZhbHVlKCk7Cit9CisKK2NsYXNzIFZhbHVlUGFyYW1UZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3RXaXRoUGFyYW08TXlUeXBlPiB7Cit9OworCitURVNUX1AoVmFsdWVQYXJhbVRlc3Qs
IFRlc3RBKSB7Cit9CisKK1RFU1RfUChWYWx1ZVBhcmFtVGVzdCwgVGVzdEIpIHsKK30KKworSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoCisgICAgTXlJbnN0YW50aWF0aW9uLCBWYWx1ZVBhcmFtVGVz
dCwKKyAgICB0ZXN0aW5nOjpWYWx1ZXMoTXlUeXBlKCJvbmUgbGluZSIpLAorICAgICAgICAgICAg
ICAgICAgICBNeVR5cGUoInR3b1xubGluZXMiKSwKKyAgICAgICAgICAgICAgICAgICAgTXlUeXBl
KCJhIHZlcnlcbmxvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vbmcgbGluZSIpKSk7ICAvLyBOT0xJTlQK
KworLy8gQSBncm91cCBvZiB0eXBlZCB0ZXN0cy4KKworLy8gQSBkZWxpYmVyYXRlbHkgbG9uZyB0
eXBlIG5hbWUgZm9yIHRlc3RpbmcgdGhlIGxpbmUtdHJ1bmNhdGluZworLy8gYmVoYXZpb3Igd2hl
biBwcmludGluZyBhIHR5cGUgcGFyYW1ldGVyLgorY2xhc3MgVmVyeUxvb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vZ05hbWUgeyAgLy8gTk9MSU5UCit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIFR5cGVkVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBULCBpbnQga1NpemU+CitjbGFzcyBNeUFycmF5IHsKK307CisKK3R5cGVkZWYgdGVz
dGluZzo6VHlwZXM8VmVyeUxvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vZ05hbWUsICAvLyBOT0xJTlQK
KyAgICAgICAgICAgICAgICAgICAgICAgaW50KiwgTXlBcnJheTxib29sLCA0Mj4gPiBNeVR5cGVz
OworCitUWVBFRF9URVNUX0NBU0UoVHlwZWRUZXN0LCBNeVR5cGVzKTsKKworVFlQRURfVEVTVChU
eXBlZFRlc3QsIFRlc3RBKSB7Cit9CisKK1RZUEVEX1RFU1QoVHlwZWRUZXN0LCBUZXN0Qikgewor
fQorCisvLyBBIGdyb3VwIG9mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlUGFyYW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qg
eworfTsKKworVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtVGVzdCk7CisKK1RZUEVEX1RFU1Rf
UChUeXBlUGFyYW1UZXN0LCBUZXN0QSkgeworfQorCitUWVBFRF9URVNUX1AoVHlwZVBhcmFtVGVz
dCwgVGVzdEIpIHsKK30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtVGVz
dCwgVGVzdEEsIFRlc3RCKTsKKworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIFR5
cGVQYXJhbVRlc3QsIE15VHlwZXMpOworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp
IHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgcmV0dXJu
IFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1saXN0ZW5lci10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LWxpc3RlbmVyLXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM1NTU5NzE1
MWQwOWQ2YzMxNTY3MWY0MmRiNjZjYzRiZDQ4NTBmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1saXN0ZW5lci10ZXN0LmNjCkBAIC0w
LDAgKzEsMzExIEBACisvLyBDb3B5cmlnaHQgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
Ly8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisv
LworLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2ds
ZSBUZXN0KQorLy8KKy8vIFRoaXMgZmlsZSB2ZXJpZmllcyBHb29nbGUgVGVzdCBldmVudCBsaXN0
ZW5lcnMgcmVjZWl2ZSBldmVudHMgYXQgdGhlCisvLyByaWdodCB0aW1lcy4KKworI2luY2x1ZGUg
PHZlY3Rvcj4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK3VzaW5nIDo6dGVzdGluZzo6
QWRkR2xvYmFsVGVzdEVudmlyb25tZW50OwordXNpbmcgOjp0ZXN0aW5nOjpFbnZpcm9ubWVudDsK
K3VzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3Q7
Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3RDYXNlOwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0RXZlbnRM
aXN0ZW5lcjsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdEluZm87Cit1c2luZyA6OnRlc3Rpbmc6OlRl
c3RQYXJ0UmVzdWx0OwordXNpbmcgOjp0ZXN0aW5nOjpVbml0VGVzdDsKKworLy8gVXNlZCBieSB0
ZXN0cyB0byByZWdpc3RlciB0aGVpciBldmVudHMuCitzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4q
IGdfZXZlbnRzID0gTlVMTDsKKworbmFtZXNwYWNlIHRlc3RpbmcgeworbmFtZXNwYWNlIGludGVy
bmFsIHsKKworY2xhc3MgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lciA6IHB1YmxpYyBUZXN0RXZlbnRM
aXN0ZW5lciB7CisgcHVibGljOgorICBleHBsaWNpdCBFdmVudFJlY29yZGluZ0xpc3RlbmVyKGNv
bnN0IGNoYXIqIG5hbWUpIDogbmFtZV8obmFtZSkge30KKworIHByb3RlY3RlZDoKKyAgdmlydHVh
bCB2b2lkIE9uVGVzdFByb2dyYW1TdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykg
eworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdFByb2dy
YW1TdGFydCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25TdGFydChj
b25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpdGVyYXRpb24pIHsKKyAgICBNZXNzYWdlIG1lc3NhZ2U7CisgICAgbWVz
c2FnZSA8PCBHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0SXRlcmF0aW9uU3RhcnQiKQorICAgICAg
ICAgICAgPDwgIigiIDw8IGl0ZXJhdGlvbiA8PCAiKSI7CisgICAgZ19ldmVudHMtPnB1c2hfYmFj
ayhtZXNzYWdlLkdldFN0cmluZygpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPbkVudmlyb25t
ZW50c1NldFVwU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKKyAgICBnX2V2
ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPbkVudmlyb25tZW50c1NldFVwU3Rh
cnQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNTZXRVcEVuZChjb25z
dCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0
RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiKSk7CisgIH0KKworICB2aXJ0
dWFsIHZvaWQgT25UZXN0Q2FzZVN0YXJ0KGNvbnN0IFRlc3RDYXNlJiAvKnRlc3RfY2FzZSovKSB7
CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0Q2FzZVN0
YXJ0IikpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZv
JiAvKnRlc3RfaW5mbyovKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9k
TmFtZSgiT25UZXN0U3RhcnQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJl
c3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgLyp0ZXN0X3BhcnRfcmVzdWx0Ki8pIHsKKyAgICBn
X2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RQYXJ0UmVzdWx0Iikp
OworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdEVuZChjb25zdCBUZXN0SW5mbyYgLyp0ZXN0
X2luZm8qLykgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9u
VGVzdEVuZCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPblRlc3RDYXNlRW5kKGNvbnN0IFRl
c3RDYXNlJiAvKnRlc3RfY2FzZSovKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxs
TWV0aG9kTmFtZSgiT25UZXN0Q2FzZUVuZCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPbkVu
dmlyb25tZW50c1RlYXJEb3duU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsK
KyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPbkVudmlyb25tZW50
c1RlYXJEb3duU3RhcnQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNU
ZWFyRG93bkVuZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgeworICAgIGdfZXZlbnRz
LT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQi
KSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRU
ZXN0JiAvKnVuaXRfdGVzdCovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBpdGVyYXRpb24pIHsKKyAgICBNZXNzYWdlIG1lc3NhZ2U7CisgICAgbWVzc2FnZSA8PCBHZXRG
dWxsTWV0aG9kTmFtZSgiT25UZXN0SXRlcmF0aW9uRW5kIikKKyAgICAgICAgICAgIDw8ICIoIiAg
PDwgaXRlcmF0aW9uIDw8ICIpIjsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKG1lc3NhZ2UuR2V0
U3RyaW5nKCkpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdFByb2dyYW1FbmQoY29uc3Qg
VW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1
bGxNZXRob2ROYW1lKCJPblRlc3RQcm9ncmFtRW5kIikpOworICB9CisKKyBwcml2YXRlOgorICBz
dGQ6OnN0cmluZyBHZXRGdWxsTWV0aG9kTmFtZShjb25zdCBjaGFyKiBuYW1lKSB7CisgICAgcmV0
dXJuIG5hbWVfICsgIi4iICsgbmFtZTsKKyAgfQorCisgIHN0ZDo6c3RyaW5nIG5hbWVfOworfTsK
KworY2xhc3MgRW52aXJvbm1lbnRJbnZvY2F0aW9uQ2F0Y2hlciA6IHB1YmxpYyBFbnZpcm9ubWVu
dCB7CisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgZ19ldmVudHMt
PnB1c2hfYmFjaygiRW52aXJvbm1lbnQ6OlNldFVwIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjaygiRW52aXJvbm1lbnQ6OlRlYXJE
b3duIik7CisgIH0KK307CisKK2NsYXNzIExpc3RlbmVyVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBw
cm90ZWN0ZWQ6CisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7CisgICAgZ19ldmVudHMt
PnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0OjpTZXRVcFRlc3RDYXNlIik7CisgIH0KKworICBzdGF0
aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxp
c3RlbmVyVGVzdDo6VGVhckRvd25UZXN0Q2FzZSIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNl
dFVwKCkgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVyVGVzdDo6U2V0VXAiKTsK
KyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9i
YWNrKCJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duIik7CisgIH0KK307CisKK1RFU1RfRihMaXN0ZW5l
clRlc3QsIERvZXNGb28pIHsKKyAgLy8gVGVzdCBleGVjdXRpb24gb3JkZXIgd2l0aGluIGEgdGVz
dCBjYXNlIGlzIG5vdCBndWFyYW50ZWVkIHNvIHdlIGFyZSBub3QKKyAgLy8gcmVjb3JkaW5nIHRo
ZSB0ZXN0IG5hbWUuCisgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVyVGVzdDo6KiBUZXN0
IEJvZHkiKTsKKyAgU1VDQ0VFRCgpOyAgLy8gVHJpZ2dlcnMgT25UZXN0UGFydFJlc3VsdC4KK30K
KworVEVTVF9GKExpc3RlbmVyVGVzdCwgRG9lc0JhcikgeworICBnX2V2ZW50cy0+cHVzaF9iYWNr
KCJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5Iik7CisgIFNVQ0NFRUQoKTsgIC8vIFRyaWdnZXJz
IE9uVGVzdFBhcnRSZXN1bHQuCit9CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCit9ICAv
LyBuYW1lc3BhY2UgdGVzdGluZworCit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpFbnZpcm9u
bWVudEludm9jYXRpb25DYXRjaGVyOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RXZlbnRS
ZWNvcmRpbmdMaXN0ZW5lcjsKKwordm9pZCBWZXJpZnlSZXN1bHRzKGNvbnN0IHN0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPiYgZGF0YSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb25z
dCogZXhwZWN0ZWRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICBzaXplX3QgZXhwZWN0ZWRfZGF0
YV9zaXplKSB7CisgIGNvbnN0IHNpemVfdCBhY3R1YWxfc2l6ZSA9IGRhdGEuc2l6ZSgpOworICAv
LyBJZiB0aGUgZm9sbG93aW5nIGFzc2VydGlvbiBmYWlscywgYSBuZXcgZW50cnkgd2lsbCBiZSBh
cHBlbmRlZCB0bworICAvLyBkYXRhLiAgSGVuY2Ugd2Ugc2F2ZSBkYXRhLnNpemUoKSBmaXJzdC4K
KyAgRVhQRUNUX0VRKGV4cGVjdGVkX2RhdGFfc2l6ZSwgYWN0dWFsX3NpemUpOworCisgIC8vIENv
bXBhcmVzIHRoZSBjb21tb24gcHJlZml4LgorICBjb25zdCBzaXplX3Qgc2hvcnRlcl9zaXplID0g
ZXhwZWN0ZWRfZGF0YV9zaXplIDw9IGFjdHVhbF9zaXplID8KKyAgICAgIGV4cGVjdGVkX2RhdGFf
c2l6ZSA6IGFjdHVhbF9zaXplOworICBzaXplX3QgaSA9IDA7CisgIGZvciAoOyBpIDwgc2hvcnRl
cl9zaXplOyArK2kpIHsKKyAgICBBU1NFUlRfU1RSRVEoZXhwZWN0ZWRfZGF0YVtpXSwgZGF0YVtp
XS5jX3N0cigpKQorICAgICAgICA8PCAiYXQgcG9zaXRpb24gIiA8PCBpOworICB9CisKKyAgLy8g
UHJpbnRzIGV4dHJhIGVsZW1lbnRzIGluIHRoZSBhY3R1YWwgZGF0YS4KKyAgZm9yICg7IGkgPCBh
Y3R1YWxfc2l6ZTsgKytpKSB7CisgICAgcHJpbnRmKCIgIEFjdHVhbCBldmVudCAjJWx1OiAlc1xu
IiwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaSksIGRhdGFbaV0uY19zdHIo
KSk7CisgIH0KK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiBldmVudHM7CisgIGdfZXZlbnRzID0gJmV2ZW50czsKKyAgSW5p
dEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5s
aXN0ZW5lcnMoKS5BcHBlbmQoCisgICAgICBuZXcgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lcigiMXN0
IikpOworICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCkuQXBwZW5kKAorICAg
ICAgbmV3IEV2ZW50UmVjb3JkaW5nTGlzdGVuZXIoIjJuZCIpKTsKKworICBBZGRHbG9iYWxUZXN0
RW52aXJvbm1lbnQobmV3IEVudmlyb25tZW50SW52b2NhdGlvbkNhdGNoZXIpOworCisgIEdURVNU
X0NIRUNLXyhldmVudHMuc2l6ZSgpID09IDApCisgICAgICA8PCAiQWRkR2xvYmFsVGVzdEVudmly
b25tZW50IHNob3VsZCBub3QgZ2VuZXJhdGUgYW55IGV2ZW50cyBpdHNlbGYuIjsKKworICA6OnRl
c3Rpbmc6OkdURVNUX0ZMQUcocmVwZWF0KSA9IDI7CisgIGludCByZXRfdmFsID0gUlVOX0FMTF9U
RVNUUygpOworCisgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkX2V2ZW50c1tdID0geworICAg
ICIxc3QuT25UZXN0UHJvZ3JhbVN0YXJ0IiwKKyAgICAiMm5kLk9uVGVzdFByb2dyYW1TdGFydCIs
CisgICAgIjFzdC5PblRlc3RJdGVyYXRpb25TdGFydCgwKSIsCisgICAgIjJuZC5PblRlc3RJdGVy
YXRpb25TdGFydCgwKSIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVwU3RhcnQiLAorICAg
ICIybmQuT25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0IiwKKyAgICAiRW52aXJvbm1lbnQ6OlNldFVw
IiwKKyAgICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiLAorICAgICIxc3QuT25FbnZpcm9u
bWVudHNTZXRVcEVuZCIsCisgICAgIjFzdC5PblRlc3RDYXNlU3RhcnQiLAorICAgICIybmQuT25U
ZXN0Q2FzZVN0YXJ0IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcFRlc3RDYXNlIiwKKyAgICAi
MXN0Lk9uVGVzdFN0YXJ0IiwKKyAgICAiMm5kLk9uVGVzdFN0YXJ0IiwKKyAgICAiTGlzdGVuZXJU
ZXN0OjpTZXRVcCIsCisgICAgIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHkiLAorICAgICIxc3Qu
T25UZXN0UGFydFJlc3VsdCIsCisgICAgIjJuZC5PblRlc3RQYXJ0UmVzdWx0IiwKKyAgICAiTGlz
dGVuZXJUZXN0OjpUZWFyRG93biIsCisgICAgIjJuZC5PblRlc3RFbmQiLAorICAgICIxc3QuT25U
ZXN0RW5kIiwKKyAgICAiMXN0Lk9uVGVzdFN0YXJ0IiwKKyAgICAiMm5kLk9uVGVzdFN0YXJ0IiwK
KyAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcCIsCisgICAgIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJv
ZHkiLAorICAgICIxc3QuT25UZXN0UGFydFJlc3VsdCIsCisgICAgIjJuZC5PblRlc3RQYXJ0UmVz
dWx0IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93biIsCisgICAgIjJuZC5PblRlc3RFbmQi
LAorICAgICIxc3QuT25UZXN0RW5kIiwKKyAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93blRlc3RD
YXNlIiwKKyAgICAiMm5kLk9uVGVzdENhc2VFbmQiLAorICAgICIxc3QuT25UZXN0Q2FzZUVuZCIs
CisgICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiLAorICAgICIybmQuT25FbnZp
cm9ubWVudHNUZWFyRG93blN0YXJ0IiwKKyAgICAiRW52aXJvbm1lbnQ6OlRlYXJEb3duIiwKKyAg
ICAiMm5kLk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiLAorICAgICIxc3QuT25FbnZpcm9ubWVu
dHNUZWFyRG93bkVuZCIsCisgICAgIjJuZC5PblRlc3RJdGVyYXRpb25FbmQoMCkiLAorICAgICIx
c3QuT25UZXN0SXRlcmF0aW9uRW5kKDApIiwKKyAgICAiMXN0Lk9uVGVzdEl0ZXJhdGlvblN0YXJ0
KDEpIiwKKyAgICAiMm5kLk9uVGVzdEl0ZXJhdGlvblN0YXJ0KDEpIiwKKyAgICAiMXN0Lk9uRW52
aXJvbm1lbnRzU2V0VXBTdGFydCIsCisgICAgIjJuZC5PbkVudmlyb25tZW50c1NldFVwU3RhcnQi
LAorICAgICJFbnZpcm9ubWVudDo6U2V0VXAiLAorICAgICIybmQuT25FbnZpcm9ubWVudHNTZXRV
cEVuZCIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVwRW5kIiwKKyAgICAiMXN0Lk9uVGVz
dENhc2VTdGFydCIsCisgICAgIjJuZC5PblRlc3RDYXNlU3RhcnQiLAorICAgICJMaXN0ZW5lclRl
c3Q6OlNldFVwVGVzdENhc2UiLAorICAgICIxc3QuT25UZXN0U3RhcnQiLAorICAgICIybmQuT25U
ZXN0U3RhcnQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwKKyAgICAiTGlzdGVuZXJUZXN0
OjoqIFRlc3QgQm9keSIsCisgICAgIjFzdC5PblRlc3RQYXJ0UmVzdWx0IiwKKyAgICAiMm5kLk9u
VGVzdFBhcnRSZXN1bHQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duIiwKKyAgICAiMm5k
Lk9uVGVzdEVuZCIsCisgICAgIjFzdC5PblRlc3RFbmQiLAorICAgICIxc3QuT25UZXN0U3RhcnQi
LAorICAgICIybmQuT25UZXN0U3RhcnQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwKKyAg
ICAiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCisgICAgIjFzdC5PblRlc3RQYXJ0UmVzdWx0
IiwKKyAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJE
b3duIiwKKyAgICAiMm5kLk9uVGVzdEVuZCIsCisgICAgIjFzdC5PblRlc3RFbmQiLAorICAgICJM
aXN0ZW5lclRlc3Q6OlRlYXJEb3duVGVzdENhc2UiLAorICAgICIybmQuT25UZXN0Q2FzZUVuZCIs
CisgICAgIjFzdC5PblRlc3RDYXNlRW5kIiwKKyAgICAiMXN0Lk9uRW52aXJvbm1lbnRzVGVhckRv
d25TdGFydCIsCisgICAgIjJuZC5PbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiLAorICAgICJF
bnZpcm9ubWVudDo6VGVhckRvd24iLAorICAgICIybmQuT25FbnZpcm9ubWVudHNUZWFyRG93bkVu
ZCIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5kIiwKKyAgICAiMm5kLk9uVGVz
dEl0ZXJhdGlvbkVuZCgxKSIsCisgICAgIjFzdC5PblRlc3RJdGVyYXRpb25FbmQoMSkiLAorICAg
ICIybmQuT25UZXN0UHJvZ3JhbUVuZCIsCisgICAgIjFzdC5PblRlc3RQcm9ncmFtRW5kIgorICB9
OworICBWZXJpZnlSZXN1bHRzKGV2ZW50cywKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9ldmVu
dHMsCisgICAgICAgICAgICAgICAgc2l6ZW9mKGV4cGVjdGVkX2V2ZW50cykvc2l6ZW9mKGV4cGVj
dGVkX2V2ZW50c1swXSkpOworCisgIC8vIFdlIG5lZWQgdG8gY2hlY2sgbWFudWFsbHkgZm9yIGFk
IGhvYyB0ZXN0IGZhaWx1cmVzIHRoYXQgaGFwcGVuIGFmdGVyCisgIC8vIFJVTl9BTExfVEVTVFMg
ZmluaXNoZXMuCisgIGlmIChVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+RmFpbGVkKCkpCisgICAg
cmV0X3ZhbCA9IDE7CisKKyAgcmV0dXJuIHJldF92YWw7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbWVzc2FnZS10ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW1lc3NhZ2UtdGVzdC5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jNjQ0NTg1M2U0MzNkM2MxNDM0NTI1NzM5MWE2Yjk4OGE5ZDM4MGVmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW1lc3NhZ2Ut
dGVzdC5jYwpAQCAtMCwwICsxLDE1OCBAQAorLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMu
CisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisvLworLy8gVGVzdHMgZm9yIHRoZSBNZXNzYWdlIGNsYXNzLgorCisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKKworbmFtZXNwYWNlIHsKKwordXNpbmcgOjp0ZXN0aW5nOjpNZXNzYWdlOworCisvLyBUZXN0
cyB0aGUgdGVzdGluZzo6TWVzc2FnZSBjbGFzcworCisvLyBUZXN0cyB0aGUgZGVmYXVsdCBjb25z
dHJ1Y3Rvci4KK1RFU1QoTWVzc2FnZVRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvcikgeworICBjb25z
dCBNZXNzYWdlIG1zZzsKKyAgRVhQRUNUX0VRKCIiLCBtc2cuR2V0U3RyaW5nKCkpOworfQorCisv
LyBUZXN0cyB0aGUgY29weSBjb25zdHJ1Y3Rvci4KK1RFU1QoTWVzc2FnZVRlc3QsIENvcHlDb25z
dHJ1Y3RvcikgeworICBjb25zdCBNZXNzYWdlIG1zZzEoIkhlbGxvIik7CisgIGNvbnN0IE1lc3Nh
Z2UgbXNnMihtc2cxKTsKKyAgRVhQRUNUX0VRKCJIZWxsbyIsIG1zZzIuR2V0U3RyaW5nKCkpOwor
fQorCisvLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSBNZXNzYWdlIGZyb20gYSBDLXN0cmluZy4KK1RF
U1QoTWVzc2FnZVRlc3QsIENvbnN0cnVjdHNGcm9tQ1N0cmluZykgeworICBNZXNzYWdlIG1zZygi
SGVsbG8iKTsKKyAgRVhQRUNUX0VRKCJIZWxsbyIsIG1zZy5HZXRTdHJpbmcoKSk7Cit9CisKKy8v
IFRlc3RzIHN0cmVhbWluZyBhIGZsb2F0LgorVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc0Zsb2F0
KSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHMgPSAoTWVzc2FnZSgpIDw8IDEuMjM0NTZGIDw8ICIg
IiA8PCAyLjM0NTY3RikuR2V0U3RyaW5nKCk7CisgIC8vIEJvdGggbnVtYmVycyBzaG91bGQgYmUg
cHJpbnRlZCB3aXRoIGVub3VnaCBwcmVjaXNpb24uCisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVz
dGluZzo6SXNTdWJzdHJpbmcsICIxLjIzNDU2MCIsIHMuY19zdHIoKSk7CisgIEVYUEVDVF9QUkVE
X0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIgMi4zNDU2NjkiLCBzLmNfc3RyKCkpOwor
fQorCisvLyBUZXN0cyBzdHJlYW1pbmcgYSBkb3VibGUuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJl
YW1zRG91YmxlKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHMgPSAoTWVzc2FnZSgpIDw8IDEyNjA1
NzA4ODAuNDU1NTQ5NyA8PCAiICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
PCAxMjYwNTcyMjY1LjE5NTQ1MzQpLkdldFN0cmluZygpOworICAvLyBCb3RoIG51bWJlcnMgc2hv
dWxkIGJlIHByaW50ZWQgd2l0aCBlbm91Z2ggcHJlY2lzaW9uLgorICBFWFBFQ1RfUFJFRF9GT1JN
QVQyKHRlc3Rpbmc6OklzU3Vic3RyaW5nLCAiMTI2MDU3MDg4MC40NSIsIHMuY19zdHIoKSk7Cisg
IEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIgMTI2MDU3MjI2NS4x
OSIsIHMuY19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIG5vbi1jaGFyIHBvaW50
ZXIuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zUG9pbnRlcikgeworICBpbnQgbiA9IDA7Cisg
IGludCogcCA9ICZuOworICBFWFBFQ1RfTkUoIihudWxsKSIsIChNZXNzYWdlKCkgPDwgcCkuR2V0
U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyBzdHJlYW1pbmcgYSBOVUxMIG5vbi1jaGFyIHBvaW50
ZXIuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zTnVsbFBvaW50ZXIpIHsKKyAgaW50KiBwID0g
TlVMTDsKKyAgRVhQRUNUX0VRKCIobnVsbCkiLCAoTWVzc2FnZSgpIDw8IHApLkdldFN0cmluZygp
KTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGEgQyBzdHJpbmcuCitURVNUKE1lc3NhZ2VUZXN0
LCBTdHJlYW1zQ1N0cmluZykgeworICBFWFBFQ1RfRVEoIkZvbyIsIChNZXNzYWdlKCkgPDwgIkZv
byIpLkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGEgTlVMTCBDIHN0cmlu
Zy4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNOdWxsQ1N0cmluZykgeworICBjaGFyKiBwID0g
TlVMTDsKKyAgRVhQRUNUX0VRKCIobnVsbCkiLCAoTWVzc2FnZSgpIDw8IHApLkdldFN0cmluZygp
KTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIHN0ZDo6c3RyaW5nLgorVEVTVChNZXNzYWdlVGVz
dCwgU3RyZWFtc1N0cmluZykgeworICBjb25zdCA6OnN0ZDo6c3RyaW5nIHN0cigiSGVsbG8iKTsK
KyAgRVhQRUNUX0VRKCJIZWxsbyIsIChNZXNzYWdlKCkgPDwgc3RyKS5HZXRTdHJpbmcoKSk7Cit9
CisKKy8vIFRlc3RzIHRoYXQgd2UgY2FuIG91dHB1dCBzdHJpbmdzIGNvbnRhaW5pbmcgZW1iZWRk
ZWQgTlVMcy4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNTdHJpbmdXaXRoRW1iZWRkZWROVUwp
IHsKKyAgY29uc3QgY2hhciBjaGFyX2FycmF5X3dpdGhfbnVsW10gPQorICAgICAgIkhlcmUncyBh
IE5VTFwwIGFuZCBzb21lIG1vcmUgc3RyaW5nIjsKKyAgY29uc3QgOjpzdGQ6OnN0cmluZyBzdHJp
bmdfd2l0aF9udWwoY2hhcl9hcnJheV93aXRoX251bCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZW9mKGNoYXJfYXJyYXlfd2l0aF9udWwpIC0gMSk7CisgIEVYUEVD
VF9FUSgiSGVyZSdzIGEgTlVMXFwwIGFuZCBzb21lIG1vcmUgc3RyaW5nIiwKKyAgICAgICAgICAg
IChNZXNzYWdlKCkgPDwgc3RyaW5nX3dpdGhfbnVsKS5HZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRl
c3RzIHN0cmVhbWluZyBhIE5VTCBjaGFyLgorVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc05VTENo
YXIpIHsKKyAgRVhQRUNUX0VRKCJcXDAiLCAoTWVzc2FnZSgpIDw8ICdcMCcpLkdldFN0cmluZygp
KTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGludC4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVh
bXNJbnQpIHsKKyAgRVhQRUNUX0VRKCIxMjMiLCAoTWVzc2FnZSgpIDw8IDEyMykuR2V0U3RyaW5n
KCkpOworfQorCisvLyBUZXN0cyB0aGF0IGJhc2ljIElPIG1hbmlwdWxhdG9ycyAoZW5kbCwgZW5k
cywgYW5kIGZsdXNoKSBjYW4gYmUKKy8vIHN0cmVhbWVkIHRvIE1lc3NhZ2UuCitURVNUKE1lc3Nh
Z2VUZXN0LCBTdHJlYW1zQmFzaWNJb01hbmlwKSB7CisgIEVYUEVDVF9FUSgiTGluZSAxLlxuQSBO
VUwgY2hhciBcXDAgaW4gbGluZSAyLiIsCisgICAgICAgICAgICAgICAoTWVzc2FnZSgpIDw8ICJM
aW5lIDEuIiA8PCBzdGQ6OmVuZGwKKyAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiQSBOVUwg
Y2hhciAiIDw8IHN0ZDo6ZW5kcyA8PCBzdGQ6OmZsdXNoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIiBpbiBsaW5lIDIuIikuR2V0U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyBNZXNzYWdl
OjpHZXRTdHJpbmcoKQorVEVTVChNZXNzYWdlVGVzdCwgR2V0U3RyaW5nKSB7CisgIE1lc3NhZ2Ug
bXNnOworICBtc2cgPDwgMSA8PCAiIGxhbWIiOworICBFWFBFQ1RfRVEoIjEgbGFtYiIsIG1zZy5H
ZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIE1lc3NhZ2Ugb2JqZWN0IHRv
IGFuIG9zdHJlYW0uCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zVG9PU3RyZWFtKSB7CisgIE1l
c3NhZ2UgbXNnKCJIZWxsbyIpOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICBzcyA8PCBt
c2c7CisgIEVYUEVDVF9FUSgiSGVsbG8iLCB0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nU3RyZWFt
VG9TdHJpbmcoJnNzKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBNZXNzYWdlIG9iamVjdCBkb2Vz
bid0IHRha2UgdXAgdG9vIG11Y2ggc3RhY2sgc3BhY2UuCitURVNUKE1lc3NhZ2VUZXN0LCBEb2Vz
Tm90VGFrZVVwTXVjaFN0YWNrU3BhY2UpIHsKKyAgRVhQRUNUX0xFKHNpemVvZihNZXNzYWdlKSwg
MTZVKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3B0aW9ucy10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW9wdGlvbnMtdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGQ0
ZWJhM2JkMzEwOTU5NTBhOGQ5OGNmM2RhZjZmMzRkNjQ5NjlmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW9wdGlvbnMtdGVzdC5jYwpA
QCAtMCwwICsxLDIxMSBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8g
bWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorLy8KKy8vIEdvb2dsZSBUZXN0IFVuaXRUZXN0T3B0aW9ucyB0ZXN0cworLy8KKy8vIFRo
aXMgZmlsZSB0ZXN0cyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5IGJ5Cisv
LyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNl
LgorLy8KKy8vIFRoaXMgZmlsZSBpcyAjaW5jbHVkZWQgZnJvbSBndGVzdC5jYywgdG8gYXZvaWQg
Y2hhbmdpbmcgYnVpbGQgb3IKKy8vIG1ha2UtZmlsZXMgb24gV2luZG93cyBhbmQgb3RoZXIgcGxh
dGZvcm1zLiBEbyBub3QgI2luY2x1ZGUgdGhpcyBmaWxlCisvLyBhbnl3aGVyZSBlbHNlIQorCisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisj
IGluY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbGlmIEdURVNUX09TX1dJTkRPV1MKKyMgaW5jbHVkZSA8
ZGlyZWN0Lmg+CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisKKyNpbmNsdWRl
ICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVz
cGFjZSBpbnRlcm5hbCB7CituYW1lc3BhY2UgeworCisvLyBUdXJucyB0aGUgZ2l2ZW4gcmVsYXRp
dmUgcGF0aCBpbnRvIGFuIGFic29sdXRlIHBhdGguCitGaWxlUGF0aCBHZXRBYnNvbHV0ZVBhdGhP
Zihjb25zdCBGaWxlUGF0aCYgcmVsYXRpdmVfcGF0aCkgeworICByZXR1cm4gRmlsZVBhdGg6OkNv
bmNhdFBhdGhzKEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCksIHJlbGF0aXZlX3BhdGgpOworfQor
CisvLyBUZXN0aW5nIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0L0dldE91dHB1dEZp
bGUuCisKK1RFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0Rm9ybWF0RGVmYXVsdCkgeworICBH
VEVTVF9GTEFHKG91dHB1dCkgPSAiIjsKKyAgRVhQRUNUX1NUUkVRKCIiLCBVbml0VGVzdE9wdGlv
bnM6OkdldE91dHB1dEZvcm1hdCgpLmNfc3RyKCkpOworfQorCitURVNUKFhtbE91dHB1dFRlc3Qs
IEdldE91dHB1dEZvcm1hdCkgeworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOmZpbGVuYW1l
IjsKKyAgRVhQRUNUX1NUUkVRKCJ4bWwiLCBVbml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1h
dCgpLmNfc3RyKCkpOworfQorCitURVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZpbGVEZWZh
dWx0KSB7CisgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICIiOworICBFWFBFQ1RfRVEoR2V0QWJzb2x1
dGVQYXRoT2YoRmlsZVBhdGgoInRlc3RfZGV0YWlsLnhtbCIpKS5zdHJpbmcoKSwKKyAgICAgICAg
ICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOworfQor
CitURVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZpbGVTaW5nbGVGaWxlKSB7CisgIEdURVNU
X0ZMQUcob3V0cHV0KSA9ICJ4bWw6ZmlsZW5hbWUuYWJjIjsKKyAgRVhQRUNUX0VRKEdldEFic29s
dXRlUGF0aE9mKEZpbGVQYXRoKCJmaWxlbmFtZS5hYmMiKSkuc3RyaW5nKCksCisgICAgICAgICAg
ICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKK30KKwor
VEVTVChYbWxPdXRwdXRUZXN0LCBHZXRPdXRwdXRGaWxlRnJvbURpcmVjdG9yeVBhdGgpIHsKKyAg
R1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbDpwYXRoIiBHVEVTVF9QQVRIX1NFUF87CisgIGNvbnN0
IHN0ZDo6c3RyaW5nIGV4cGVjdGVkX291dHB1dF9maWxlID0KKyAgICAgIEdldEFic29sdXRlUGF0
aE9mKAorICAgICAgICAgIEZpbGVQYXRoKHN0ZDo6c3RyaW5nKCJwYXRoIikgKyBHVEVTVF9QQVRI
X1NFUF8gKworICAgICAgICAgICAgICAgICAgIEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLnN0
cmluZygpICsgIi54bWwiKSkuc3RyaW5nKCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRf
ZmlsZSA9CisgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0Rmls
ZSgpOworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgRVhQRUNUX1NUUkNBU0VFUShleHBlY3RlZF9v
dXRwdXRfZmlsZS5jX3N0cigpLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKKyNlbHNlCisgIEVYUEVD
VF9FUShleHBlY3RlZF9vdXRwdXRfZmlsZSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7CisjZW5kaWYK
K30KKworVEVTVChPdXRwdXRGaWxlSGVscGVyc1Rlc3QsIEdldEN1cnJlbnRFeGVjdXRhYmxlTmFt
ZSkgeworICBjb25zdCBzdGQ6OnN0cmluZyBleGVfc3RyID0gR2V0Q3VycmVudEV4ZWN1dGFibGVO
YW1lKCkuc3RyaW5nKCk7CisjaWYgR1RFU1RfT1NfV0lORE9XUworICBjb25zdCBib29sIHN1Y2Nl
c3MgPQorICAgICAgX3N0cmNtcGkoImdvb2dsZXRlc3Qtb3B0aW9ucy10ZXN0IiwgZXhlX3N0ci5j
X3N0cigpKSA9PSAwIHx8CisgICAgICBfc3RyY21waSgiZ3Rlc3Qtb3B0aW9ucy1leF90ZXN0Iiwg
ZXhlX3N0ci5jX3N0cigpKSA9PSAwIHx8CisgICAgICBfc3RyY21waSgiZ3Rlc3RfYWxsX3Rlc3Qi
LCBleGVfc3RyLmNfc3RyKCkpID09IDAgfHwKKyAgICAgIF9zdHJjbXBpKCJndGVzdF9kbGxfdGVz
dCIsIGV4ZV9zdHIuY19zdHIoKSkgPT0gMDsKKyNlbGlmIEdURVNUX09TX0ZVQ0hTSUEKKyAgY29u
c3QgYm9vbCBzdWNjZXNzID0gZXhlX3N0ciA9PSAiYXBwIjsKKyNlbHNlCisgIC8vIEZJWE1FOiBy
ZW1vdmUgdGhlIGhhcmQtY29kZWQgImx0LSIgcHJlZml4IHdoZW4gbGlidG9vbCByZXBsYWNlbWVu
dCBpcyByZWFkeQorICBjb25zdCBib29sIHN1Y2Nlc3MgPQorICAgICAgZXhlX3N0ciA9PSAiZ29v
Z2xldGVzdC1vcHRpb25zLXRlc3QiIHx8CisgICAgICBleGVfc3RyID09ICJndGVzdF9hbGxfdGVz
dCIgfHwKKyAgICAgIGV4ZV9zdHIgPT0gImx0LWd0ZXN0X2FsbF90ZXN0IiB8fAorICAgICAgZXhl
X3N0ciA9PSAiZ3Rlc3RfZGxsX3Rlc3QiOworI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisg
IGlmICghc3VjY2VzcykKKyAgICBGQUlMKCkgPDwgIkdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgp
IHJldHVybnMgIiA8PCBleGVfc3RyOworfQorCisjaWYgIUdURVNUX09TX0ZVQ0hTSUEKKworY2xh
c3MgWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6Cisg
IHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBvcmlnaW5hbF93b3JraW5nX2Rpcl8gPSBGaWxl
UGF0aDo6R2V0Q3VycmVudERpcigpOworICAgIHBvc2l4OjpDaERpcigiLi4iKTsKKyAgICAvLyBU
aGlzIHdpbGwgbWFrZSB0aGUgdGVzdCBmYWlsIGlmIHJ1biBmcm9tIHRoZSByb290IGRpcmVjdG9y
eS4KKyAgICBFWFBFQ1RfTkUob3JpZ2luYWxfd29ya2luZ19kaXJfLnN0cmluZygpLAorICAgICAg
ICAgICAgICBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpLnN0cmluZygpKTsKKyAgfQorCisgIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBwb3NpeDo6Q2hEaXIob3JpZ2luYWxfd29ya2lu
Z19kaXJfLnN0cmluZygpLmNfc3RyKCkpOworICB9CisKKyAgRmlsZVBhdGggb3JpZ2luYWxfd29y
a2luZ19kaXJfOworfTsKKworVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZl
T3JpZ2luYWxXb3JraW5nRGlyV2l0aERlZmF1bHQpIHsKKyAgR1RFU1RfRkxBRyhvdXRwdXQpID0g
IiI7CisgIEVYUEVDVF9FUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19k
aXJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJ0ZXN0X2Rl
dGFpbC54bWwiKSkuc3RyaW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFi
c29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKK30KKworVEVTVF9GKFhtbE91dHB1dENoYW5nZURp
clRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aERlZmF1bHRYTUwpIHsKKyAgR1RF
U1RfRkxBRyhvdXRwdXQpID0gInhtbCI7CisgIEVYUEVDVF9FUShGaWxlUGF0aDo6Q29uY2F0UGF0
aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZpbGVQYXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuc3RyaW5nKCksCisgICAgICAgICAgICBV
bml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKK30KKworVEVT
VF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0
aFJlbGF0aXZlRmlsZSkgeworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOmZpbGVuYW1lLmFi
YyI7CisgIEVYUEVDVF9FUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19k
aXJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmaWxlbmFt
ZS5hYmMiKSkuc3RyaW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29s
dXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKK30KKworVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRl
c3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aFJlbGF0aXZlUGF0aCkgeworICBHVEVT
VF9GTEFHKG91dHB1dCkgPSAieG1sOnBhdGgiIEdURVNUX1BBVEhfU0VQXzsKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcgZXhwZWN0ZWRfb3V0cHV0X2ZpbGUgPQorICAgICAgRmlsZVBhdGg6OkNvbmNhdFBh
dGhzKAorICAgICAgICAgIG9yaWdpbmFsX3dvcmtpbmdfZGlyXywKKyAgICAgICAgICBGaWxlUGF0
aChzdGQ6OnN0cmluZygicGF0aCIpICsgR1RFU1RfUEFUSF9TRVBfICsKKyAgICAgICAgICAgICAg
ICAgICBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmcoKSArICIueG1sIikpLnN0cmlu
ZygpOworICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2ZpbGUgPQorICAgICAgVW5pdFRlc3RP
cHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKTsKKyNpZiBHVEVTVF9PU19XSU5E
T1dTCisgIEVYUEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUuY19zdHIoKSwgb3V0
cHV0X2ZpbGUuY19zdHIoKSk7CisjZWxzZQorICBFWFBFQ1RfRVEoZXhwZWN0ZWRfb3V0cHV0X2Zp
bGUsIG91dHB1dF9maWxlLmNfc3RyKCkpOworI2VuZGlmCit9CisKK1RFU1RfRihYbWxPdXRwdXRD
aGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhBYnNvbHV0ZUZpbGUp
IHsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6Yzpc
XHRtcFxcZmlsZW5hbWUuYWJjIjsKKyAgRVhQRUNUX0VRKEZpbGVQYXRoKCJjOlxcdG1wXFxmaWxl
bmFtZS5hYmMiKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJz
b2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOworI2Vsc2UKKyAgR1RFU1RfRkxBRyhvdXRwdXQpID0i
eG1sOi90bXAvZmlsZW5hbWUuYWJjIjsKKyAgRVhQRUNUX0VRKEZpbGVQYXRoKCIvdG1wL2ZpbGVu
YW1lLmFiYyIpLnN0cmluZygpLAorICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNv
bHV0ZVBhdGhUb091dHB1dEZpbGUoKSk7CisjZW5kaWYKK30KKworVEVTVF9GKFhtbE91dHB1dENo
YW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aEFic29sdXRlUGF0aCkg
eworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgY29uc3Qgc3RkOjpzdHJpbmcgcGF0aCA9ICJjOlxc
dG1wXFwiOworI2Vsc2UKKyAgY29uc3Qgc3RkOjpzdHJpbmcgcGF0aCA9ICIvdG1wLyI7CisjZW5k
aWYKKworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOiIgKyBwYXRoOworICBjb25zdCBzdGQ6
OnN0cmluZyBleHBlY3RlZF9vdXRwdXRfZmlsZSA9CisgICAgICBwYXRoICsgR2V0Q3VycmVudEV4
ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKyAiLnhtbCI7CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBv
dXRwdXRfZmlsZSA9CisgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0
cHV0RmlsZSgpOworCisjaWYgR1RFU1RfT1NfV0lORE9XUworICBFWFBFQ1RfU1RSQ0FTRUVRKGV4
cGVjdGVkX291dHB1dF9maWxlLmNfc3RyKCksIG91dHB1dF9maWxlLmNfc3RyKCkpOworI2Vsc2UK
KyAgRVhQRUNUX0VRKGV4cGVjdGVkX291dHB1dF9maWxlLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsK
KyNlbmRpZgorfQorCisjZW5kaWYgIC8vICFHVEVTVF9PU19GVUNIU0lBCisKK30gIC8vIG5hbWVz
cGFjZQorfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1
dC10ZXN0LWdvbGRlbi1saW4udHh0IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LW91dHB1dC10ZXN0LWdvbGRlbi1saW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3MTFjZGM2OGFl
NTM4Y2NlOWUzOTg0YmNlMWI3YWI2NWFhNjJhNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3QtZ29sZGVuLWxpbi50
eHQKQEAgLTAsMCArMSwxMDQ3IEBACitUaGUgbm9uLXRlc3QgcGFydCBvZiB0aGUgY29kZSBpcyBl
eHBlY3RlZCB0byBoYXZlIDIgZmFpbHVyZXMuCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNj
OiM6IEZhaWx1cmUKK1ZhbHVlIG9mOiBmYWxzZQorICBBY3R1YWw6IGZhbHNlCitFeHBlY3RlZDog
dHJ1ZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5j
YzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDIKKyAg
MworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzJtWz09PT09PT09PT1dIBtbbVJ1bm5p
bmcgNzYgdGVzdHMgZnJvbSAzNCB0ZXN0IGNhc2VzLgorG1swOzMybVstLS0tLS0tLS0tXSAbW21H
bG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCitGb29FbnZpcm9ubWVudDo6U2V0VXAoKSBj
YWxsZWQuCitCYXJFbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuCisbWzA7MzJtWy0tLS0tLS0t
LS1dIBtbbTEgdGVzdCBmcm9tIEFEZWF0aFRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttQURl
YXRoVGVzdC5TaG91bGRSdW5GaXJzdAorG1swOzMybVsgICAgICAgT0sgXSAbW21BRGVhdGhUZXN0
LlNob3VsZFJ1bkZpcnN0CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEFUeXBl
ZERlYXRoVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDszMm1bIFJVTiAgICAgIF0g
G1ttQVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1bICAgICAgIE9LIF0g
G1ttQVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1bLS0tLS0tLS0tLV0g
G1ttMSB0ZXN0IGZyb20gQVR5cGVkRGVhdGhUZXN0LzEsIHdoZXJlIFR5cGVQYXJhbSA9IGRvdWJs
ZQorG1swOzMybVsgUlVOICAgICAgXSAbW21BVHlwZWREZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJz
dAorG1swOzMybVsgICAgICAgT0sgXSAbW21BVHlwZWREZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJz
dAorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBNeS9BVHlwZVBhcmFtRGVhdGhU
ZXN0LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGludAorG1swOzMybVsgUlVOICAgICAgXSAbW21NeS9B
VHlwZVBhcmFtRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1bICAgICAgIE9LIF0g
G1ttTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0CisbWzA7MzJtWy0tLS0t
LS0tLS1dIBtbbTEgdGVzdCBmcm9tIE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMSwgd2hlcmUgVHlw
ZVBhcmFtID0gZG91YmxlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbU15L0FUeXBlUGFyYW1EZWF0
aFRlc3QvMS5TaG91bGRSdW5GaXJzdAorG1swOzMybVsgICAgICAgT0sgXSAbW21NeS9BVHlwZVBh
cmFtRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0
ZXN0cyBmcm9tIFBhc3NpbmdUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVBhc3NpbmdUZXN0
LlBhc3NpbmdUZXN0MQorG1swOzMybVsgICAgICAgT0sgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5n
VGVzdDEKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCisb
WzA7MzJtWyAgICAgICBPSyBdIBtbbVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgorG1swOzMybVst
LS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gTm9uZmF0YWxGYWlsdXJlVGVzdAorG1swOzMybVsg
UlVOICAgICAgXSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkVzY2FwZXNTdHJpbmdPcGVyYW5kcwor
Z29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkg
b2YgdGhlc2UgdmFsdWVzOgorICBrR29sZGVuU3RyaW5nCisgICAgV2hpY2ggaXM6ICJcIkxpbmUi
CisgIGFjdHVhbAorICAgIFdoaWNoIGlzOiAiYWN0dWFsIFwic3RyaW5nXCIiCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4
cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgZ29sZGVuCisgICAgV2hpY2ggaXM6
ICJcIkxpbmUiCisgIGFjdHVhbAorICAgIFdoaWNoIGlzOiAiYWN0dWFsIFwic3RyaW5nXCIiCitT
dGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uZmF0YWxG
YWlsdXJlVGVzdC5Fc2NhcGVzU3RyaW5nT3BlcmFuZHMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1tt
Tm9uZmF0YWxGYWlsdXJlVGVzdC5EaWZmRm9yTG9uZ1N0cmluZ3MKK2dvb2dsZXRlc3Qtb3V0cHV0
LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoK
KyAgZ29sZGVuX3N0cgorICAgIFdoaWNoIGlzOiAiXCJMaW5lXDAgMVwiXG5MaW5lIDIiCisgICJM
aW5lIDIiCitXaXRoIGRpZmY6CitAQCAtMSwyIEBACistXCJMaW5lXDAgMVwiCisgTGluZSAyCisK
K1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25mYXRh
bEZhaWx1cmVUZXN0LkRpZmZGb3JMb25nU3RyaW5ncworG1swOzMybVstLS0tLS0tLS0tXSAbW20z
IHRlc3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21GYXRh
bEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQorKGV4cGVjdGluZyBhIGZhaWx1
cmUgdGhhdCB4IHNob3VsZCBiZSAxKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFp
bHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxCisgIHgKKyAgICBX
aGljaCBpczogMgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBd
IBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0
aW5lCisoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCitnb29nbGV0ZXN0
LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2
YWx1ZXM6CisgIDEKKyAgeAorICAgIFdoaWNoIGlzOiAyCitTdGFjayB0cmFjZTogKG9taXR0ZWQp
CisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJ
bk5lc3RlZFN1YnJvdXRpbmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlVGVz
dC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKKyhleHBlY3RpbmcgYSBmYWlsdXJlIG9uIGZh
bHNlKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorVmFsdWUgb2Y6IGZh
bHNlCisgIEFjdHVhbDogZmFsc2UKK0V4cGVjdGVkOiB0cnVlCitTdGFjayB0cmFjZTogKG9taXR0
ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZh
aWx1cmVJblN1YnJvdXRpbmUKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gTG9n
Z2luZ1Rlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5n
TG9nZ2luZ0FuZEFzc2VydGlvbnMKKyhleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFb
aV0pKQoraSA9PSAwCitpID09IDEKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1
cmUKK0V4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgOQorU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCitpID09IDIKK2kgPT0gMworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6
IzogRmFpbHVyZQorRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA2CitTdGFj
ayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTG9nZ2luZ1Rlc3Qu
SW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1tt
NyB0ZXN0cyBmcm9tIFNDT1BFRF9UUkFDRVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttU0NP
UEVEX1RSQUNFVGVzdC5BY2NlcHRlZFZhbHVlcworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6
IzogRmFpbHVyZQorRmFpbGVkCitKdXN0IGNoZWNraW5nIHRoYXQgYWxsIHRoZXNlIHZhbHVlcyB3
b3JrIGZpbmUuCitHb29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNj
OiM6IChudWxsKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogMTMzNworZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6Izogc3RkOjpzdHJpbmcKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
LmNjOiM6IGxpdGVyYWwgc3RyaW5nCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5BY2NlcHRlZFZhbHVlcworG1swOzMybVsg
UlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lk9iZXlzU2NvcGVzCisoZXhwZWN0ZWQgdG8g
ZmFpbCkKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorVGhp
cyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkbid0IGhhdmUgYSB0cmFjZS4KK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVy
ZQorRmFpbGVkCitUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgaGF2ZSBhIHRy
YWNlLgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBF
eHBlY3RlZCB0cmFjZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1
dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK1RoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwg
YW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtb
MDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5PYmV5c1Njb3BlcworG1swOzMy
bVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCisoZXhwZWN0ZWQg
dG8gZmFpbCkKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVk
IGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMgorICBuCisgICAgV2hpY2ggaXM6IDEKK0dv
b2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogaSA9IDEKK1N0
YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFp
bHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxCisgIG4KKyAgICBX
aGljaCBpczogMgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5j
YzojOiBpID0gMgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBd
IBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJbkxvb3AKKxtbMDszMm1bIFJVTiAgICAgIF0gG1tt
U0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGluZQorKGV4cGVjdGVkIHRvIGZhaWwpCitn
b29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBv
ZiB0aGVzZSB2YWx1ZXM6CisgIDIKKyAgbgorICAgIFdoaWNoIGlzOiAxCitHb29nbGUgVGVzdCB0
cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IG4gPSAxCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVj
dGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICBuCisgICAgV2hpY2ggaXM6IDIK
K0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogbiA9IDIK
K1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURf
VFJBQ0VUZXN0LldvcmtzSW5TdWJyb3V0aW5lCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BF
RF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKKyhleHBlY3RlZCB0byBmYWlsKQorZ29vZ2xldGVzdC1v
dXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFs
dWVzOgorICAxCisgIG4KKyAgICBXaGljaCBpczogMgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29n
bGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBuID0gMgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8u
Y2M6IzogCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
U0NPUEVEX1RSQUNFVGVzdC5DYW5CZU5lc3RlZAorG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09Q
RURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKKyhleHBlY3RlZCB0byBmYWlsKQorZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitUaGlzIGZhaWx1cmUgaXMgZXhw
ZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLgorR29vZ2xlIFRlc3QgdHJh
Y2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBBCitTdGFjayB0cmFjZTogKG9taXR0
ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorVGhp
cyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSBh
bmQgQi4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izog
QgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogQQorU3RhY2sgdHJhY2U6IChvbWl0dGVk
KQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK1RoaXMg
ZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEsIEIs
IGFuZCBDLgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzoj
OiBDCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBCCitnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBBCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0
LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBh
bmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEQuCitHb29nbGUgVGVzdCB0
cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEQKK2dvb2dsZXRlc3Qtb3V0cHV0
LXRlc3RfLmNjOiM6IEIKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEEKK1N0YWNrIHRy
YWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0
LkNhbkJlUmVwZWF0ZWQKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5X
b3Jrc0NvbmN1cnJlbnRseQorKGV4cGVjdGluZyA2IGZhaWx1cmVzKQorZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMxIChpbiB0
aHJlYWQgQiwgb25seSB0cmFjZSBCIGFsaXZlKS4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogVHJhY2UgQgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQor
Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVk
IGZhaWx1cmUgIzIgKGluIHRocmVhZCBBLCB0cmFjZSBBICYgQiBib3RoIGFsaXZlKS4KK0dvb2ds
ZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogVHJhY2UgQQorU3Rh
Y2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWls
dXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzMgKGluIHRocmVhZCBCLCB0cmFjZSBBICYg
QiBib3RoIGFsaXZlKS4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVz
dF8uY2M6IzogVHJhY2UgQgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91
dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzQgKGlu
IHRocmVhZCBCLCBvbmx5IHRyYWNlIEEgYWxpdmUpLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQor
Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVk
IGZhaWx1cmUgIzUgKGluIHRocmVhZCBBLCBvbmx5IHRyYWNlIEEgYWxpdmUpLgorR29vZ2xlIFRl
c3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBUcmFjZSBBCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUK
K0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjNiAoaW4gdGhyZWFkIEEsIG5vIHRyYWNlIGFsaXZl
KS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09Q
RURfVFJBQ0VUZXN0LldvcmtzQ29uY3VycmVudGx5CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEg
dGVzdCBmcm9tIFNjb3BlZFRyYWNlVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21TY29wZWRU
cmFjZVRlc3QuV2l0aEV4cGxpY2l0RmlsZUFuZExpbmUKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorQ2hlY2sgdGhhdCB0aGUgdHJhY2UgaXMgYXR0YWNoZWQg
dG8gYSBwYXJ0aWN1bGFyIGxvY2F0aW9uLgorR29vZ2xlIFRlc3QgdHJhY2U6CitleHBsaWNpdF9m
aWxlLmNjOjEyMzogZXhwZWN0ZWQgdHJhY2UgbWVzc2FnZQorU3RhY2sgdHJhY2U6IChvbWl0dGVk
KQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNjb3BlZFRyYWNlVGVzdC5XaXRoRXhwbGljaXRG
aWxlQW5kTGluZQorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBOb25GYXRhbEZh
aWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttTm9u
RmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9y
CisoZXhwZWN0aW5nIDUgZmFpbHVyZXMpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBG
YWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0IGZpeHR1cmUg
Yyd0b3IuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gU2V0VXAoKS4K
K1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izog
RmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBib2R5Lgor
U3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBG
YWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzQsIGluIFRlYXJEb3duLgorU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJl
CitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzUsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3Iu
CitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uRmF0
YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCisb
WzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEZhdGFsRmFpbHVyZUluRml4dHVyZUNv
bnN0cnVjdG9yVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZhaWx1cmVJbkZpeHR1
cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKKyhleHBlY3RpbmcgMiBmYWls
dXJlcykKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhw
ZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4KK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFp
bGVkCitFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgorU3Rh
Y2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVy
ZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgorG1swOzMybVst
LS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVzdAorG1sw
OzMybVsgUlVOICAgICAgXSAbW21Ob25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5T
ZXRVcAorKGV4cGVjdGluZyA0IGZhaWx1cmVzKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6
IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLgorU3Rh
Y2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWls
dXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLgor
U3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBG
YWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzMsIGluIFRlYXJEb3duKCkuCitTdGFj
ayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1
cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rv
ci4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25G
YXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAorG1swOzMybVstLS0tLS0tLS0t
XSAbW20xIHRlc3QgZnJvbSBGYXRhbEZhaWx1cmVJblNldFVwVGVzdAorG1swOzMybVsgUlVOICAg
ICAgXSAbW21GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAorKGV4cGVjdGlu
ZyAzIGZhaWx1cmVzKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFp
bGVkCitFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLgorU3RhY2sgdHJhY2U6IChvbWl0
dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4
cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRlYXJEb3duKCkuCitTdGFjayB0cmFjZTogKG9taXR0ZWQp
CisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0
ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KK1N0YWNrIHRyYWNlOiAo
b21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVJblNldFVwVGVz
dC5GYWlsdXJlSW5TZXRVcAorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBBZGRG
YWlsdXJlQXRUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUFkZEZhaWx1cmVBdFRlc3QuTWVz
c2FnZUNvbnRhaW5zU3BlY2lmaWVkRmlsZUFuZExpbmVOdW1iZXIKK2Zvby5jYzo0MjogRmFpbHVy
ZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlIGluIGZvby5jYworU3RhY2sgdHJhY2U6IChvbWl0
dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUFkZEZhaWx1cmVBdFRlc3QuTWVzc2FnZUNv
bnRhaW5zU3BlY2lmaWVkRmlsZUFuZExpbmVOdW1iZXIKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1tt
NCB0ZXN0cyBmcm9tIE1peGVkVXBUZXN0Q2FzZVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1tt
TWl4ZWRVcFRlc3RDYXNlVGVzdC5GaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vCisbWzA7MzJtWyAg
ICAgICBPSyBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZv
bworG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlNlY29uZFRlc3RG
cm9tTmFtZXNwYWNlRm9vCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbU1peGVkVXBUZXN0Q2FzZVRl
c3QuU2Vjb25kVGVzdEZyb21OYW1lc3BhY2VGb28KKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttTWl4
ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbAorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRmFp
bGVkCitBbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRl
c3QgZml4dHVyZQorY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNl
VGVzdCwKK3lvdSBkZWZpbmVkIHRlc3QgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbyBhbmQgdGVz
dCBUaGlzU2hvdWxkRmFpbAordXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nl
cy4gIFRoaXMgY2FuIGhhcHBlbiBpZgordGhlIHR3byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVu
dCBuYW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCit1bml0cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1l
LiAgWW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25lCitvZiB0aGUgY2xhc3NlcyB0byBwdXQg
dGhlIHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMuCitTdGFjayB0cmFjZTogKG9taXR0
ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hv
dWxkRmFpbAorG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNT
aG91bGRGYWlsVG9vCitndGVzdC5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0FsbCB0ZXN0cyBpbiB0
aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCitjbGFzcy4g
IEhvd2V2ZXIsIGluIHRlc3QgY2FzZSBNaXhlZFVwVGVzdENhc2VUZXN0LAoreW91IGRlZmluZWQg
dGVzdCBGaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vIGFuZCB0ZXN0IFRoaXNTaG91bGRGYWlsVG9v
Cit1c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAgVGhpcyBjYW4gaGFw
cGVuIGlmCit0aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMgb3Ig
dHJhbnNsYXRpb24KK3VuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZb3Ugc2hvdWxkIHBy
b2JhYmx5IHJlbmFtZSBvbmUKK29mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50byBk
aWZmZXJlbnQgdGVzdCBjYXNlcy4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCisbWzA7
MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRl
c3ROYW1lVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2Ft
ZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAorG1swOzMy
bVsgICAgICAgT0sgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVT
ZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAorG1swOzMybVsgUlVOICAgICAgXSAbW21N
aXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNO
YW1lU2hvdWxkRmFpbAorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRmFpbGVkCitBbGwgdGVzdHMgaW4g
dGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQorY2xhc3Mu
ICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRl
c3QsCit5b3UgZGVmaW5lZCB0ZXN0IFRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWls
IGFuZCB0ZXN0IFRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCit1c2luZyB0d28g
ZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAgVGhpcyBjYW4gaGFwcGVuIGlmCit0aGUg
dHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMgb3IgdHJhbnNsYXRpb24K
K3VuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZb3Ugc2hvdWxkIHByb2JhYmx5IHJlbmFt
ZSBvbmUKK29mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50byBkaWZmZXJlbnQgdGVz
dCBjYXNlcy4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRo
aXNOYW1lU2hvdWxkRmFpbAorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVEVT
VF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlCisbWzA7MzJtWyBSVU4gICAgICBdIBtb
bVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0YK
KxtbMDszMm1bICAgICAgIE9LIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9j
YXNlLkRlZmluZWRVc2luZ1RFU1RfRgorG1swOzMybVsgUlVOICAgICAgXSAbW21URVNUX0ZfYmVm
b3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwK
K2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3Qg
Y2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKK2NsYXNzLCBzbyBtaXhpbmcgVEVT
VF9GIGFuZCBURVNUIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBpcworaWxsZWdhbC4gIEluIHRlc3Qg
Y2FzZSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UsCit0ZXN0IERlZmluZWRV
c2luZ1RFU1RfRiBpcyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKK3Rlc3QgRGVmaW5lZFVzaW5n
VEVTVEFuZFNob3VsZEZhaWwgaXMgZGVmaW5lZCB1c2luZyBURVNULiAgWW91IHByb2JhYmx5Cit3
YW50IHRvIGNoYW5nZSB0aGUgVEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0byBhbm90aGVyIHRl
c3QKK2Nhc2UuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0g
G1ttVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RB
bmRTaG91bGRGYWlsCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBURVNUX2Jl
Zm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVEVT
VF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1QKKxtbMDsz
Mm1bICAgICAgIE9LIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRl
ZmluZWRVc2luZ1RFU1QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9G
X2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwKK2d0ZXN0
LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBt
dXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKK2NsYXNzLCBzbyBtaXhpbmcgVEVTVF9GIGFu
ZCBURVNUIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBpcworaWxsZWdhbC4gIEluIHRlc3QgY2FzZSBU
RVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UsCit0ZXN0IERlZmluZWRVc2luZ1RF
U1RfRkFuZFNob3VsZEZhaWwgaXMgZGVmaW5lZCB1c2luZyBURVNUX0YgYnV0Cit0ZXN0IERlZmlu
ZWRVc2luZ1RFU1QgaXMgZGVmaW5lZCB1c2luZyBURVNULiAgWW91IHByb2JhYmx5Cit3YW50IHRv
IGNoYW5nZSB0aGUgVEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0byBhbm90aGVyIHRlc3QKK2Nh
c2UuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVEVT
VF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNo
b3VsZEZhaWwKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttOCB0ZXN0cyBmcm9tIEV4cGVjdE5vbmZh
dGFsRmFpbHVyZVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWls
dXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKKxtbMDszMm1bICAgICAgIE9LIF0g
G1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMK
KxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZl
cmVuY2VMb2NhbFZhcmlhYmxlcworG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3ROb25mYXRh
bEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVzCisbWzA7MzJtWyBSVU4gICAg
ICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09uZU5v
bmZhdGFsRmFpbHVyZQorG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1
cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKKxtbMDszMm1bIFJV
TiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9O
b25mYXRhbEZhaWx1cmUKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVy
ZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZhaWx1cmVzCitT
dGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKKxtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVy
ZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6
IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAyIGZh
aWx1cmVzCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToK
K0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMS4KK1N0YWNrIHRyYWNlOiAob21p
dHRlZCkKKworCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVy
ZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMi4KK1N0YWNrIHRyYWNlOiAo
b21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQg
IF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b05vbmZh
dGFsRmFpbHVyZXMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJl
VGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCisoZXhwZWN0aW5nIGEgZmFpbHVy
ZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCisg
IEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6CitG
YWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisK
KworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVj
dE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQorG1sw
OzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0
YXRlbWVudFJldHVybnMKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVy
ZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZhaWx1cmVzCitT
dGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCisbWzA7MzJtWyBSVU4g
ICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhy
b3dzCisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVk
OiAxIG5vbi1mYXRhbCBmYWlsdXJlCisgIEFjdHVhbDogMCBmYWlsdXJlcworU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVy
ZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTgg
dGVzdHMgZnJvbSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtb
bUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCisbWzA7
MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xv
YmFsVmFyaWFibGVzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRl
c3QuQ2FuUmVmZXJlbmNlTG9jYWxTdGF0aWNWYXJpYWJsZXMKKxtbMDszMm1bICAgICAgIE9LIF0g
G1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFN0YXRpY1ZhcmlhYmxl
cworG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRz
V2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCisbWzA7
MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJ
c05vRmF0YWxGYWlsdXJlCisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1
cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZhaWx1cmVzCitTdGFj
ayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFs
RmFpbHVyZXMKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhw
ZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDIgZmFpbHVyZXMKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworZ29vZ2xldGVzdC1vdXRwdXQt
dGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwgZmFpbHVy
ZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5U
aGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCisoZXhwZWN0
aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZh
aWx1cmUKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogTm9uLWZhdGFs
IGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJh
Y2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVOb25m
YXRhbEZhaWx1cmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVz
dC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0
LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZh
aWx1cmVzCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
RXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCisbWzA7MzJt
WyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50
VGhyb3dzCisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVj
dGVkOiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZhaWx1cmVzCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVz
dC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0
cyBmcm9tIFR5cGVkVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttVHlwZWRUZXN0LzAuU3VjY2VzcworG1swOzMybVsgICAgICAgT0sgXSAbW21UeXBl
ZFRlc3QvMC5TdWNjZXNzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVR5cGVkVGVzdC8wLkZhaWx1
cmUKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFs
aXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICBUeXBlUGFyYW0oKQorICAgIFdoaWNoIGlzOiAw
CitFeHBlY3RlZCBmYWlsdXJlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttVHlwZWRUZXN0LzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gaW50Cisb
WzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBUeXBlZFRlc3RXaXRoTmFtZXMvY2hh
cl8wLCB3aGVyZSBUeXBlUGFyYW0gPSBjaGFyCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVR5cGVk
VGVzdFdpdGhOYW1lcy9jaGFyXzAuU3VjY2VzcworG1swOzMybVsgICAgICAgT0sgXSAbW21UeXBl
ZFRlc3RXaXRoTmFtZXMvY2hhcl8wLlN1Y2Nlc3MKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVHlw
ZWRUZXN0V2l0aE5hbWVzL2NoYXJfMC5GYWlsdXJlCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5j
YzojOiBGYWlsdXJlCitGYWlsZWQKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21UeXBlZFRlc3RXaXRoTmFtZXMvY2hhcl8wLkZhaWx1cmUsIHdoZXJlIFR5
cGVQYXJhbSA9IGNoYXIKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFR5cGVk
VGVzdFdpdGhOYW1lcy9pbnRfMSwgd2hlcmUgVHlwZVBhcmFtID0gaW50CisbWzA7MzJtWyBSVU4g
ICAgICBdIBtbbVR5cGVkVGVzdFdpdGhOYW1lcy9pbnRfMS5TdWNjZXNzCisbWzA7MzJtWyAgICAg
ICBPSyBdIBtbbVR5cGVkVGVzdFdpdGhOYW1lcy9pbnRfMS5TdWNjZXNzCisbWzA7MzJtWyBSVU4g
ICAgICBdIBtbbVR5cGVkVGVzdFdpdGhOYW1lcy9pbnRfMS5GYWlsdXJlCitnb29nbGV0ZXN0LW91
dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkK
KworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3RXaXRoTmFtZXMvaW50XzEuRmFpbHVy
ZSwgd2hlcmUgVHlwZVBhcmFtID0gaW50CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMg
ZnJvbSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNo
YXIKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLlN1Y2Nlc3MK
KxtbMDszMm1bICAgICAgIE9LIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLlN1Y2Nlc3MKKxtb
MDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRo
ZXNlIHZhbHVlczoKKyAgMVUKKyAgICBXaGljaCBpczogMQorICBUeXBlUGFyYW0oKQorICAgIFdo
aWNoIGlzOiAnXDAnCitFeHBlY3RlZCBmYWlsdXJlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUsIHdo
ZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0
ZXN0cyBmcm9tIFVuc2lnbmVkL1R5cGVkVGVzdFAvMSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWdu
ZWQgaW50CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNj
ZXNzCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNz
CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlCitn
b29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBv
ZiB0aGVzZSB2YWx1ZXM6CisgIDFVCisgICAgV2hpY2ggaXM6IDEKKyAgVHlwZVBhcmFtKCkKKyAg
ICBXaGljaCBpczogMAorRXhwZWN0ZWQgZmFpbHVyZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQor
CisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlLCB3
aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0
ZXN0cyBmcm9tIFVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkX2NoYXJfMCwg
d2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgorG1swOzMybVsgUlVOICAgICAgXSAbW21V
bnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZF9jaGFyXzAuU3VjY2VzcworG1sw
OzMybVsgICAgICAgT0sgXSAbW21VbnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25l
ZF9jaGFyXzAuU3VjY2VzcworG1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25lZEN1c3RvbU5h
bWUvVHlwZWRUZXN0UC91bnNpZ25lZF9jaGFyXzAuRmFpbHVyZQorZ29vZ2xldGVzdC1vdXRwdXQt
dGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgor
ICAxVQorICAgIFdoaWNoIGlzOiAxCisgIFR5cGVQYXJhbSgpCisgICAgV2hpY2ggaXM6ICdcMCcK
K0V4cGVjdGVkIGZhaWx1cmUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21VbnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZF9jaGFyXzAu
RmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgorG1swOzMybVstLS0tLS0t
LS0tXSAbW20yIHRlc3RzIGZyb20gVW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWdu
ZWRfaW50XzEsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAorG1swOzMybVsgUlVOICAg
ICAgXSAbW21VbnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZF9pbnRfMS5TdWNj
ZXNzCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQ
L3Vuc2lnbmVkX2ludF8xLlN1Y2Nlc3MKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWRD
dXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRfaW50XzEuRmFpbHVyZQorZ29vZ2xldGVzdC1v
dXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFs
dWVzOgorICAxVQorICAgIFdoaWNoIGlzOiAxCisgIFR5cGVQYXJhbSgpCisgICAgV2hpY2ggaXM6
IDAKK0V4cGVjdGVkIGZhaWx1cmUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21VbnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZF9pbnRf
MS5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKKxtbMDszMm1bLS0tLS0t
LS0tLV0gG1ttNCB0ZXN0cyBmcm9tIEV4cGVjdEZhaWx1cmVUZXN0CisbWzA7MzJtWyBSVU4gICAg
ICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyAx
IGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJl
CisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IFN1Y2Nlc3M6CitTdWNj
ZWVkZWQKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQp
CisKKyhleHBlY3RpbmcgMSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6
IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzoj
OiBOb24tZmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUu
CitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCiso
ZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZh
dGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBmYXRhbCBmYWlsdXJlIGV4cGVjdGVk
LiIKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVy
ZToKK0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRl
ZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
RXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCisbWzA7MzJtWyBSVU4gICAgICBd
IBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyAx
IGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFp
bHVyZQorICBBY3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBTdWNjZXNzOgor
U3VjY2VlZGVkCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0
dGVkKQorCisoZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVj
dGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRl
c3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUu
CitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCiso
ZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5v
bi1mYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1cmUu
IgorICBBY3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFp
bHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQorG1swOzMybVsg
UlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRo
cmVhZHMKKyhleHBlY3RpbmcgMSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0
ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5j
YzojOiBTdWNjZXNzOgorU3VjY2VlZGVkCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworU3Rh
Y2sgdHJhY2U6IChvbWl0dGVkKQorCisoZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6
IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOgorZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVk
IG5vbi1mYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRy
YWNlOiAob21pdHRlZCkKKworKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWls
dXJlCitFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0
YWwgZmFpbHVyZSBleHBlY3RlZC4iCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
LmNjOiM6IEZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitT
dGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9u
QWxsVGhyZWFkcworG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBl
Y3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKKyhleHBlY3RpbmcgMSBmYWlsdXJlKQorZ3Rl
c3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFs
OgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogU3VjY2VzczoKK1N1Y2NlZWRlZAorU3Rh
Y2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworKGV4cGVj
dGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0
YWwgZmFpbHVyZQorICBBY3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYXRh
bCBmYWlsdXJlOgorRmFpbGVkCitFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworKGV4cGVjdGluZyAxIGZh
aWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVy
ZSBjb250YWluaW5nICJTb21lIG90aGVyIG5vbi1mYXRhbCBmYWlsdXJlLiIKKyAgQWN0dWFsOgor
Z29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6CitGYWlsZWQK
K0V4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisK
K1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RG
YWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKKxtbMDszMm1bLS0t
LS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QKKxtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3RG
YXRhbEZhaWx1cmUKKyhleHBlY3RpbmcgMiBmYWlsdXJlcykKK2dvb2dsZXRlc3Qtb3V0cHV0LXRl
c3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0
YWwgZmFpbHVyZQorICBBY3R1YWw6IDAgZmFpbHVyZXMKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkK
KworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4
cGVjdEZhdGFsRmFpbHVyZQorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlV2l0
aFRocmVhZHNUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyAyIGZhaWx1cmVz
KQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3Rl
ZCBub24tZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ3Rlc3QuY2M6
IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZh
aWx1cmVzCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
RXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKKxtbMDsz
Mm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVw
b3J0ZXJUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVNjb3BlZEZha2VUZXN0UGFydFJlc3Vs
dFJlcG9ydGVyVGVzdC5JbnRlcmNlcHRPbmx5Q3VycmVudFRocmVhZAorKGV4cGVjdGluZyAyIGZh
aWx1cmVzKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitF
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0
ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRh
bCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBd
IBtbbVNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdC5JbnRlcmNlcHRPbmx5Q3Vy
cmVudFRocmVhZAorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBQcmludGluZ0Zh
aWxpbmdQYXJhbXMvRmFpbGluZ1BhcmFtVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21Qcmlu
dGluZ0ZhaWxpbmdQYXJhbXMvRmFpbGluZ1BhcmFtVGVzdC5GYWlscy8wCitnb29nbGV0ZXN0LW91
dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1
ZXM6CisgIDEKKyAgR2V0UGFyYW0oKQorICAgIFdoaWNoIGlzOiAyCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttUHJpbnRpbmdGYWlsaW5nUGFyYW1zL0Zh
aWxpbmdQYXJhbVRlc3QuRmFpbHMvMCwgd2hlcmUgR2V0UGFyYW0oKSA9IDIKKxtbMDszMm1bLS0t
LS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFByaW50aW5nU3RyaW5ncy9QYXJhbVRlc3QKKxtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttUHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5TdWNjZXNzL2EKKxtb
MDszMm1bICAgICAgIE9LIF0gG1ttUHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5TdWNjZXNzL2EK
KxtbMDszMm1bIFJVTiAgICAgIF0gG1ttUHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5GYWlsdXJl
L2EKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFs
aXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgImIiCisgIEdldFBhcmFtKCkKKyAgICBXaGljaCBpczog
ImEiCitFeHBlY3RlZCBmYWlsdXJlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttUHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5GYWlsdXJlL2EsIHdoZXJl
IEdldFBhcmFtKCkgPSAiYSIKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttR2xvYmFsIHRlc3QgZW52
aXJvbm1lbnQgdGVhci1kb3duCitCYXJFbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuCitn
b29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIG5v
bi1mYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitGb29FbnZpcm9ubWVu
dDo6VGVhckRvd24oKSBjYWxsZWQuCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWls
dXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0
ZWQpCisKKxtbMDszMm1bPT09PT09PT09PV0gG1ttNzYgdGVzdHMgZnJvbSAzNCB0ZXN0IGNhc2Vz
IHJhbi4KKxtbMDszMm1bICBQQVNTRUQgIF0gG1ttMjYgdGVzdHMuCisbWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbTUwIHRlc3RzLCBsaXN0ZWQgYmVsb3c6CisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5v
bmZhdGFsRmFpbHVyZVRlc3QuRXNjYXBlc1N0cmluZ09wZXJhbmRzCisbWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbU5vbmZhdGFsRmFpbHVyZVRlc3QuRGlmZkZvckxvbmdTdHJpbmdzCisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCisb
WzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0
ZWRTdWJyb3V0aW5lCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuTm9u
ZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUxvZ2dpbmdU
ZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCisbWzA7MzFtWyAgRkFJTEVEICBd
IBtbbVNDT1BFRF9UUkFDRVRlc3QuQWNjZXB0ZWRWYWx1ZXMKKxtbMDszMW1bICBGQUlMRUQgIF0g
G1ttU0NPUEVEX1RSQUNFVGVzdC5PYmV5c1Njb3BlcworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21T
Q09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BF
RF9UUkFDRVRlc3QuV29ya3NJblN1YnJvdXRpbmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NP
UEVEX1RSQUNFVGVzdC5DYW5CZU5lc3RlZAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURf
VFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RS
QUNFVGVzdC5Xb3Jrc0NvbmN1cnJlbnRseQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TY29wZWRU
cmFjZVRlc3QuV2l0aEV4cGxpY2l0RmlsZUFuZExpbmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
Tm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVj
dG9yCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVj
dG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25G
YXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAorG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAorG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21BZGRGYWlsdXJlQXRUZXN0Lk1lc3NhZ2VDb250YWluc1NwZWNpZmllZEZpbGVB
bmRMaW5lTnVtYmVyCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3Qu
VGhpc1Nob3VsZEZhaWwKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVz
dC5UaGlzU2hvdWxkRmFpbFRvbworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENh
c2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFp
bAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0
X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwKKxtbMDszMW1bICBGQUlMRUQgIF0g
G1ttVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1Rf
RkFuZFNob3VsZEZhaWwKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWls
dXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlM
RUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b05v
bmZhdGFsRmFpbHVyZXMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWls
dXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCisbWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJu
cworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxz
V2hlblN0YXRlbWVudFRocm93cworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZQorG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxG
YWlsdXJlcworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZh
aWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
RXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCisbWzA7MzFt
WyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50
VGhyb3dzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVR5cGVkVGVzdC8wLkZhaWx1cmUsIHdoZXJl
IFR5cGVQYXJhbSA9IGludAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3RXaXRoTmFt
ZXMvY2hhcl8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IGNoYXIKKxtbMDszMW1bICBGQUlM
RUQgIF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVzL2ludF8xLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJh
bSA9IGludAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFp
bHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgorG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gdW5z
aWduZWQgaW50CisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBl
ZFRlc3RQL3Vuc2lnbmVkX2NoYXJfMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25l
ZCBjaGFyCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRl
c3RQL3Vuc2lnbmVkX2ludF8xLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGlu
dAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZh
aWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9u
RmF0YWxGYWlsdXJlCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4
cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBl
Y3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3RGYXRhbEZh
aWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVz
dC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU2NvcGVkRmFr
ZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCisb
WzA7MzFtWyAgRkFJTEVEICBdIBtbbVByaW50aW5nRmFpbGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1U
ZXN0LkZhaWxzLzAsIHdoZXJlIEdldFBhcmFtKCkgPSAyCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bVByaW50aW5nU3RyaW5ncy9QYXJhbVRlc3QuRmFpbHVyZS9hLCB3aGVyZSBHZXRQYXJhbSgpID0g
ImEiCisKKzUwIEZBSUxFRCBURVNUUworG1swOzMzbSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNU
CisKKxtbbU5vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9IEZhdGFsRmFpbHVyZVRlc3QuKjpMb2dn
aW5nVGVzdC4qCitbPT09PT09PT09PV0gUnVubmluZyA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2Vz
LgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KK1stLS0tLS0t
LS0tXSAzIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdAorWyBSVU4gICAgICBdIEZhdGFsRmFp
bHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCisoZXhwZWN0aW5nIGEgZmFpbHVyZSB0
aGF0IHggc2hvdWxkIGJlIDEpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJl
CitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAgeAorICAgIFdoaWNo
IGlzOiAyCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1
cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZSAoPyBtcykKK1sgUlVOICAgICAgXSBGYXRh
bEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQorKGV4cGVjdGluZyBh
IGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6
IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxCisgIHgK
KyAgICBXaGljaCBpczogMgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitbICBGQUlMRUQgIF0g
RmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUgKD8gbXMpCitb
IFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUK
KyhleHBlY3RpbmcgYSBmYWlsdXJlIG9uIGZhbHNlKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8u
Y2M6IzogRmFpbHVyZQorVmFsdWUgb2Y6IGZhbHNlCisgIEFjdHVhbDogZmFsc2UKK0V4cGVjdGVk
OiB0cnVlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1
cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZSAoPyBtcykKK1stLS0tLS0tLS0tXSAz
IHRlc3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdCAoPyBtcyB0b3RhbCkKKworWy0tLS0tLS0tLS1d
IDEgdGVzdCBmcm9tIExvZ2dpbmdUZXN0CitbIFJVTiAgICAgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJs
ZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKKyhleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykg
Pj0gKGFbaV0pKQoraSA9PSAwCitpID09IDEKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6
IEZhaWx1cmUKK0V4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgOQorU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCitpID09IDIKK2kgPT0gMworZ29vZ2xldGVzdC1vdXRwdXQtdGVz
dF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA2
CitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK1sgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRl
cmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucyAoPyBtcykKK1stLS0tLS0tLS0tXSAxIHRlc3Qg
ZnJvbSBMb2dnaW5nVGVzdCAoPyBtcyB0b3RhbCkKKworWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0
IGVudmlyb25tZW50IHRlYXItZG93bgorWz09PT09PT09PT1dIDQgdGVzdHMgZnJvbSAyIHRlc3Qg
Y2FzZXMgcmFuLiAoPyBtcyB0b3RhbCkKK1sgIFBBU1NFRCAgXSAwIHRlc3RzLgorWyAgRkFJTEVE
ICBdIDQgdGVzdHMsIGxpc3RlZCBiZWxvdzoKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0
LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQorWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3Qu
RmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCitbICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJl
VGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKK1sgIEZBSUxFRCAgXSBMb2dnaW5nVGVz
dC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucworCisgNCBGQUlMRUQgVEVTVFMKK05v
dGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9ICpESVNBQkxFRF8qCitbPT09PT09PT09PV0gUnVubmlu
ZyAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZS4KK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZp
cm9ubWVudCBzZXQtdXAuCitbLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRGlzYWJsZWRUZXN0c1dh
cm5pbmdUZXN0CitbIFJVTiAgICAgIF0gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0LkRJU0FCTEVE
X0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZ1N1cHByZXNzZXNXYXJuaW5nCitbICAgICAgIE9LIF0g
RGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0LkRJU0FCTEVEX0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxh
Z1N1cHByZXNzZXNXYXJuaW5nCitbLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQg
dGVhci1kb3duCitbPT09PT09PT09PV0gMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UgcmFuLgorWyAg
UEFTU0VEICBdIDEgdGVzdC4KK05vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9IFBhc3NpbmdUZXN0
LioKK05vdGU6IFRoaXMgaXMgdGVzdCBzaGFyZCAyIG9mIDIuCitbPT09PT09PT09PV0gUnVubmlu
ZyAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZS4KK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZp
cm9ubWVudCBzZXQtdXAuCitbLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gUGFzc2luZ1Rlc3QKK1sg
UlVOICAgICAgXSBQYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDIKK1sgICAgICAgT0sgXSBQYXNzaW5n
VGVzdC5QYXNzaW5nVGVzdDIKK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0
ZWFyLWRvd24KK1s9PT09PT09PT09XSAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZSByYW4uCitbICBQ
QVNTRUQgIF0gMSB0ZXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkNjllMzUzYTE5ZTM2OTQ2
NTMzYmY1ZjdlMGEyYzkyNDZmN2RjZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3QucHkKQEAgLTAsMCArMSwzNDcg
QEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIElu
Yy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlRlc3Rz
IHRoZSB0ZXh0IG91dHB1dCBvZiBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3
b3JrLgorCitUbyB1cGRhdGUgdGhlIGdvbGRlbiBmaWxlOgorZ29vZ2xldGVzdF9vdXRwdXRfdGVz
dC5weSAtLWJ1aWxkX2Rpcj1CVUlMRC9ESVIgLS1nZW5nb2xkZW4KK3doZXJlIEJVSUxEL0RJUiBj
b250YWlucyB0aGUgYnVpbHQgZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8gZmlsZS4KK2dvb2dsZXRl
c3Rfb3V0cHV0X3Rlc3QucHkgLS1nZW5nb2xkZW4KK2dvb2dsZXRlc3Rfb3V0cHV0X3Rlc3QucHkK
KyIiIgorCitpbXBvcnQgZGlmZmxpYgoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMK
K2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKKworIyBUaGUgZmxhZyBmb3IgZ2VuZXJhdGluZyB0
aGUgZ29sZGVuIGZpbGUKK0dFTkdPTERFTl9GTEFHID0gJy0tZ2VuZ29sZGVuJworQ0FUQ0hfRVhD
RVBUSU9OU19FTlZfVkFSX05BTUUgPSAnR1RFU1RfQ0FUQ0hfRVhDRVBUSU9OUycKKworIyBUaGUg
ZmxhZyBpbmRpY2F0aW5nIHN0YWNrdHJhY2VzIGFyZSBub3Qgc3VwcG9ydGVkCitOT19TVEFDS1RS
QUNFX1NVUFBPUlRfRkxBRyA9ICctLW5vX3N0YWNrdHJhY2Vfc3VwcG9ydCcKKworSVNfTElOVVgg
PSBvcy5uYW1lID09ICdwb3NpeCcgYW5kIG9zLnVuYW1lKClbMF0gPT0gJ0xpbnV4JworSVNfV0lO
RE9XUyA9IG9zLm5hbWUgPT0gJ250JworCisjIEZJWE1FOiByZW1vdmUgdGhlIF9saW4gc3VmZml4
LgorR09MREVOX05BTUUgPSAnZ29vZ2xldGVzdC1vdXRwdXQtdGVzdC1nb2xkZW4tbGluLnR4dCcK
KworUFJPR1JBTV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgo
J2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfJykKKworIyBBdCBsZWFzdCBvbmUgY29tbWFuZCB3ZSBl
eGVyY2lzZSBtdXN0IG5vdCBoYXZlIHRoZQorIyAnaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9h
bmRfYWRfaG9jX3Rlc3RzJyBhcmd1bWVudC4KK0NPTU1BTkRfTElTVF9URVNUUyA9ICh7fSwgW1BS
T0dSQU1fUEFUSCwgJy0tZ3Rlc3RfbGlzdF90ZXN0cyddKQorQ09NTUFORF9XSVRIX0NPTE9SID0g
KHt9LCBbUFJPR1JBTV9QQVRILCAnLS1ndGVzdF9jb2xvcj15ZXMnXSkKK0NPTU1BTkRfV0lUSF9U
SU1FID0gKHt9LCBbUFJPR1JBTV9QQVRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1n
dGVzdF9wcmludF90aW1lJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVybmFsX3Nr
aXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICctLWd0ZXN0X2ZpbHRlcj1GYXRhbEZhaWx1cmVUZXN0Lio6TG9nZ2luZ1Rlc3QuKiddKQor
Q09NTUFORF9XSVRIX0RJU0FCTEVEID0gKAorICAgIHt9LCBbUFJPR1JBTV9QQVRILAorICAgICAg
ICAgJy0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMnLAorICAgICAgICAgJ2ludGVybmFs
X3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cycsCisgICAgICAgICAnLS1ndGVzdF9m
aWx0ZXI9KkRJU0FCTEVEXyonXSkKK0NPTU1BTkRfV0lUSF9TSEFSRElORyA9ICgKKyAgICB7J0dU
RVNUX1NIQVJEX0lOREVYJzogJzEnLCAnR1RFU1RfVE9UQUxfU0hBUkRTJzogJzInfSwKKyAgICBb
UFJPR1JBTV9QQVRILAorICAgICAnaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9j
X3Rlc3RzJywKKyAgICAgJy0tZ3Rlc3RfZmlsdGVyPVBhc3NpbmdUZXN0LionXSkKKworR09MREVO
X1BBVEggPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRTb3VyY2VEaXIoKSwgR09M
REVOX05BTUUpCisKKworZGVmIFRvVW5peExpbmVFbmRpbmcocyk6CisgICIiIkNoYW5nZXMgYWxs
IFdpbmRvd3MvTWFjIGxpbmUgZW5kaW5ncyBpbiBzIHRvIFVOSVggbGluZSBlbmRpbmdzLiIiIgor
CisgIHJldHVybiBzLnJlcGxhY2UoJ1xyXG4nLCAnXG4nKS5yZXBsYWNlKCdccicsICdcbicpCisK
KworZGVmIFJlbW92ZUxvY2F0aW9ucyh0ZXN0X291dHB1dCk6CisgICIiIlJlbW92ZXMgYWxsIGZp
bGUgbG9jYXRpb24gaW5mbyBmcm9tIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4KKwor
ICBBcmdzOgorICAgICAgIHRlc3Rfb3V0cHV0OiAgdGhlIG91dHB1dCBvZiBhIEdvb2dsZSBUZXN0
IHByb2dyYW0uCisKKyAgUmV0dXJuczoKKyAgICAgICBvdXRwdXQgd2l0aCBhbGwgZmlsZSBsb2Nh
dGlvbiBpbmZvIChpbiB0aGUgZm9ybSBvZgorICAgICAgICdESVJFQ1RPUlkvRklMRV9OQU1FOkxJ
TkVfTlVNQkVSOiAnb3IKKyAgICAgICAnRElSRUNUT1JZXFxGSUxFX05BTUUoTElORV9OVU1CRVIp
OiAnKSByZXBsYWNlZCBieQorICAgICAgICdGSUxFX05BTUU6IzogJy4KKyAgIiIiCisKKyAgcmV0
dXJuIHJlLnN1YihyJy4qWy9cXF0oKGdvb2dsZXRlc3Qtb3V0cHV0LXRlc3RffGd0ZXN0KS5jYyko
XDpcZCt8XChcZCtcKSlcOiAnLAorICAgICAgICAgICAgICAgIHInXDE6IzogJywgdGVzdF9vdXRw
dXQpCisKKworZGVmIFJlbW92ZVN0YWNrVHJhY2VEZXRhaWxzKG91dHB1dCk6CisgICIiIlJlbW92
ZXMgYWxsIHN0YWNrIHRyYWNlcyBmcm9tIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4i
IiIKKworICAjICo/IG1lYW5zICJmaW5kIHRoZSBzaG9ydGVzdCBzdHJpbmcgdGhhdCBtYXRjaGVz
Ii4KKyAgcmV0dXJuIHJlLnN1YihyJ1N0YWNrIHRyYWNlOigufFxuKSo/XG5cbicsCisgICAgICAg
ICAgICAgICAgJ1N0YWNrIHRyYWNlOiAob21pdHRlZClcblxuJywgb3V0cHV0KQorCisKK2RlZiBS
ZW1vdmVTdGFja1RyYWNlcyhvdXRwdXQpOgorICAiIiJSZW1vdmVzIGFsbCB0cmFjZXMgb2Ygc3Rh
Y2sgdHJhY2VzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgorCisgICMg
Kj8gbWVhbnMgImZpbmQgdGhlIHNob3J0ZXN0IHN0cmluZyB0aGF0IG1hdGNoZXMiLgorICByZXR1
cm4gcmUuc3ViKHInU3RhY2sgdHJhY2U6KC58XG4pKj9cblxuJywgJycsIG91dHB1dCkKKworCitk
ZWYgUmVtb3ZlVGltZShvdXRwdXQpOgorICAiIiJSZW1vdmVzIGFsbCB0aW1lIGluZm9ybWF0aW9u
IGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgorCisgIHJldHVybiByZS5z
dWIocidcKFxkKyBtcycsICcoPyBtcycsIG91dHB1dCkKKworCitkZWYgUmVtb3ZlVHlwZUluZm9E
ZXRhaWxzKHRlc3Rfb3V0cHV0KToKKyAgIiIiUmVtb3ZlcyBjb21waWxlci1zcGVjaWZpYyB0eXBl
IGluZm8gZnJvbSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LgorCisgIEFyZ3M6CisgICAg
ICAgdGVzdF9vdXRwdXQ6ICB0aGUgb3V0cHV0IG9mIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbS4KKwor
ICBSZXR1cm5zOgorICAgICAgIG91dHB1dCB3aXRoIHR5cGUgaW5mb3JtYXRpb24gbm9ybWFsaXpl
ZCB0byBjYW5vbmljYWwgZm9ybS4KKyAgIiIiCisKKyAgIyBzb21lIGNvbXBpbGVycyBvdXRwdXQg
dGhlIG5hbWUgb2YgdHlwZSAndW5zaWduZWQgaW50JyBhcyAndW5zaWduZWQnCisgIHJldHVybiBy
ZS5zdWIocid1bnNpZ25lZCBpbnQnLCAndW5zaWduZWQnLCB0ZXN0X291dHB1dCkKKworCitkZWYg
Tm9ybWFsaXplVG9DdXJyZW50UGxhdGZvcm0odGVzdF9vdXRwdXQpOgorICAiIiJOb3JtYWxpemVz
IHBsYXRmb3JtIHNwZWNpZmljIG91dHB1dCBkZXRhaWxzIGZvciBlYXNpZXIgY29tcGFyaXNvbi4i
IiIKKworICBpZiBJU19XSU5ET1dTOgorICAgICMgUmVtb3ZlcyB0aGUgY29sb3IgaW5mb3JtYXRp
b24gdGhhdCBpcyBub3QgcHJlc2VudCBvbiBXaW5kb3dzLgorICAgIHRlc3Rfb3V0cHV0ID0gcmUu
c3ViKCdceDFiXFxbKDA7M1xkKT9tJywgJycsIHRlc3Rfb3V0cHV0KQorICAgICMgQ2hhbmdlcyBm
YWlsdXJlIG1lc3NhZ2UgaGVhZGVycyBpbnRvIHRoZSBXaW5kb3dzIGZvcm1hdC4KKyAgICB0ZXN0
X291dHB1dCA9IHJlLnN1YihyJzogRmFpbHVyZVxuJywgcic6IGVycm9yOiAnLCB0ZXN0X291dHB1
dCkKKyAgICAjIENoYW5nZXMgZmlsZShsaW5lX251bWJlcikgdG8gZmlsZTpsaW5lX251bWJlci4K
KyAgICB0ZXN0X291dHB1dCA9IHJlLnN1YihyJygoXHd8XC4pKylcKChcZCspXCk6JywgcidcMTpc
MzonLCB0ZXN0X291dHB1dCkKKworICByZXR1cm4gdGVzdF9vdXRwdXQKKworCitkZWYgUmVtb3Zl
VGVzdENvdW50cyhvdXRwdXQpOgorICAiIiJSZW1vdmVzIHRlc3QgY291bnRzIGZyb20gYSBHb29n
bGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgorCisgIG91dHB1dCA9IHJlLnN1YihyJ1xkKyB0
ZXN0cz8sIGxpc3RlZCBiZWxvdycsCisgICAgICAgICAgICAgICAgICAnPyB0ZXN0cywgbGlzdGVk
IGJlbG93Jywgb3V0cHV0KQorICBvdXRwdXQgPSByZS5zdWIocidcZCsgRkFJTEVEIFRFU1RTJywK
KyAgICAgICAgICAgICAgICAgICc/IEZBSUxFRCBURVNUUycsIG91dHB1dCkKKyAgb3V0cHV0ID0g
cmUuc3ViKHInXGQrIHRlc3RzPyBmcm9tIFxkKyB0ZXN0IGNhc2VzPycsCisgICAgICAgICAgICAg
ICAgICAnPyB0ZXN0cyBmcm9tID8gdGVzdCBjYXNlcycsIG91dHB1dCkKKyAgb3V0cHV0ID0gcmUu
c3ViKHInXGQrIHRlc3RzPyBmcm9tIChbYS16QS1aX10pJywKKyAgICAgICAgICAgICAgICAgIHIn
PyB0ZXN0cyBmcm9tIFwxJywgb3V0cHV0KQorICByZXR1cm4gcmUuc3ViKHInXGQrIHRlc3RzP1wu
JywgJz8gdGVzdHMuJywgb3V0cHV0KQorCisKK2RlZiBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rf
b3V0cHV0LCBwYXR0ZXJuKToKKyAgIiIiUmVtb3ZlcyBvdXRwdXQgb2Ygc3BlY2lmaWVkIHRlc3Rz
IGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LgorCisgIFRoaXMgZnVuY3Rpb24g
c3RyaXBzIG5vdCBvbmx5IHRoZSBiZWdpbm5pbmcgYW5kIHRoZSBlbmQgb2YgYSB0ZXN0IGJ1dCBh
bHNvCisgIGFsbCBvdXRwdXQgaW4gYmV0d2Vlbi4KKworICBBcmdzOgorICAgIHRlc3Rfb3V0cHV0
OiAgICAgICBBIHN0cmluZyBjb250YWluaW5nIHRoZSB0ZXN0IG91dHB1dC4KKyAgICBwYXR0ZXJu
OiAgICAgICAgICAgQSByZWdleCBzdHJpbmcgdGhhdCBtYXRjaGVzIG5hbWVzIG9mIHRlc3QgY2Fz
ZXMgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMgdG8gcmVtb3ZlLgorCisgIFJldHVy
bnM6CisgICAgQ29udGVudHMgb2YgdGVzdF9vdXRwdXQgd2l0aCB0ZXN0cyB3aG9zZSBuYW1lcyBt
YXRjaCBwYXR0ZXJuIHJlbW92ZWQuCisgICIiIgorCisgIHRlc3Rfb3V0cHV0ID0gcmUuc3ViKAor
ICAgICAgcicuKlxbIFJVTiAgICAgIFxdIC4qJXMoLnxcbikqP1xbKCAgRkFJTEVEICB8ICAgICAg
IE9LIClcXSAuKiVzLipcbicgJSAoCisgICAgICAgICAgcGF0dGVybiwgcGF0dGVybiksCisgICAg
ICAnJywKKyAgICAgIHRlc3Rfb3V0cHV0KQorICByZXR1cm4gcmUuc3ViKHInLiolcy4qXG4nICUg
cGF0dGVybiwgJycsIHRlc3Rfb3V0cHV0KQorCisKK2RlZiBOb3JtYWxpemVPdXRwdXQob3V0cHV0
KToKKyAgIiIiTm9ybWFsaXplcyBvdXRwdXQgKHRoZSBvdXRwdXQgb2YgZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uZXhlKS4iIiIKKworICBvdXRwdXQgPSBUb1VuaXhMaW5lRW5kaW5nKG91dHB1dCkK
KyAgb3V0cHV0ID0gUmVtb3ZlTG9jYXRpb25zKG91dHB1dCkKKyAgb3V0cHV0ID0gUmVtb3ZlU3Rh
Y2tUcmFjZURldGFpbHMob3V0cHV0KQorICBvdXRwdXQgPSBSZW1vdmVUaW1lKG91dHB1dCkKKyAg
cmV0dXJuIG91dHB1dAorCisKK2RlZiBHZXRTaGVsbENvbW1hbmRPdXRwdXQoZW52X2NtZCk6Cisg
ICIiIlJ1bnMgYSBjb21tYW5kIGluIGEgc3ViLXByb2Nlc3MsIGFuZCByZXR1cm5zIGl0cyBvdXRw
dXQgaW4gYSBzdHJpbmcuCisKKyAgQXJnczoKKyAgICBlbnZfY21kOiBUaGUgc2hlbGwgY29tbWFu
ZC4gQSAyLXR1cGxlIHdoZXJlIGVsZW1lbnQgMCBpcyBhIGRpY3Qgb2YgZXh0cmEKKyAgICAgICAg
ICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0LCBhbmQgZWxlbWVudCAxIGlzIGEgc3Ry
aW5nIHdpdGgKKyAgICAgICAgICAgICB0aGUgY29tbWFuZCBhbmQgYW55IGZsYWdzLgorCisgIFJl
dHVybnM6CisgICAgQSBzdHJpbmcgd2l0aCB0aGUgY29tbWFuZCdzIGNvbWJpbmVkIHN0YW5kYXJk
IGFuZCBkaWFnbm9zdGljIG91dHB1dC4KKyAgIiIiCisKKyAgIyBTcGF3bnMgY21kIGluIGEgc3Vi
LXByb2Nlc3MsIGFuZCBnZXRzIGl0cyBzdGFuZGFyZCBJL08gZmlsZSBvYmplY3RzLgorICAjIFNl
dCBhbmQgc2F2ZSB0aGUgZW52aXJvbm1lbnQgcHJvcGVybHkuCisgIGVudmlyb24gPSBvcy5lbnZp
cm9uLmNvcHkoKQorICBlbnZpcm9uLnVwZGF0ZShlbnZfY21kWzBdKQorICBwID0gZ3Rlc3RfdGVz
dF91dGlscy5TdWJwcm9jZXNzKGVudl9jbWRbMV0sIGVudj1lbnZpcm9uKQorCisgIHJldHVybiBw
Lm91dHB1dAorCisKK2RlZiBHZXRDb21tYW5kT3V0cHV0KGVudl9jbWQpOgorICAiIiJSdW5zIGEg
Y29tbWFuZCBhbmQgcmV0dXJucyBpdHMgb3V0cHV0IHdpdGggYWxsIGZpbGUgbG9jYXRpb24KKyAg
aW5mbyBzdHJpcHBlZCBvZmYuCisKKyAgQXJnczoKKyAgICBlbnZfY21kOiAgVGhlIHNoZWxsIGNv
bW1hbmQuIEEgMi10dXBsZSB3aGVyZSBlbGVtZW50IDAgaXMgYSBkaWN0IG9mIGV4dHJhCisgICAg
ICAgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQsIGFuZCBlbGVtZW50IDEgaXMg
YSBzdHJpbmcgd2l0aAorICAgICAgICAgICAgICB0aGUgY29tbWFuZCBhbmQgYW55IGZsYWdzLgor
ICAiIiIKKworICAjIERpc2FibGVzIGV4Y2VwdGlvbiBwb3AtdXBzIG9uIFdpbmRvd3MuCisgIGVu
dmlyb24sIGNtZGxpbmUgPSBlbnZfY21kCisgIGVudmlyb24gPSBkaWN0KGVudmlyb24pICAjIEVu
c3VyZXMgd2UgYXJlIG1vZGlmeWluZyBhIGNvcHkuCisgIGVudmlyb25bQ0FUQ0hfRVhDRVBUSU9O
U19FTlZfVkFSX05BTUVdID0gJzEnCisgIHJldHVybiBOb3JtYWxpemVPdXRwdXQoR2V0U2hlbGxD
b21tYW5kT3V0cHV0KChlbnZpcm9uLCBjbWRsaW5lKSkpCisKKworZGVmIEdldE91dHB1dE9mQWxs
Q29tbWFuZHMoKToKKyAgIiIiUmV0dXJucyBjb25jYXRlbmF0ZWQgb3V0cHV0IGZyb20gc2V2ZXJh
bCByZXByZXNlbnRhdGl2ZSBjb21tYW5kcy4iIiIKKworICByZXR1cm4gKEdldENvbW1hbmRPdXRw
dXQoQ09NTUFORF9XSVRIX0NPTE9SKSArCisgICAgICAgICAgR2V0Q29tbWFuZE91dHB1dChDT01N
QU5EX1dJVEhfVElNRSkgKworICAgICAgICAgIEdldENvbW1hbmRPdXRwdXQoQ09NTUFORF9XSVRI
X0RJU0FCTEVEKSArCisgICAgICAgICAgR2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJVEhfU0hB
UkRJTkcpKQorCisKK3Rlc3RfbGlzdCA9IEdldFNoZWxsQ29tbWFuZE91dHB1dChDT01NQU5EX0xJ
U1RfVEVTVFMpCitTVVBQT1JUU19ERUFUSF9URVNUUyA9ICdEZWF0aFRlc3QnIGluIHRlc3RfbGlz
dAorU1VQUE9SVFNfVFlQRURfVEVTVFMgPSAnVHlwZWRUZXN0JyBpbiB0ZXN0X2xpc3QKK1NVUFBP
UlRTX1RIUkVBRFMgPSAnRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCcgaW4gdGVzdF9saXN0
CitTVVBQT1JUU19TVEFDS19UUkFDRVMgPSBOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRyBub3Qg
aW4gc3lzLmFyZ3YKKworQ0FOX0dFTkVSQVRFX0dPTERFTl9GSUxFID0gKFNVUFBPUlRTX0RFQVRI
X1RFU1RTIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVUFBPUlRTX1RZUEVEX1RF
U1RTIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVUFBPUlRTX1RIUkVBRFMgYW5k
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VQUE9SVFNfU1RBQ0tfVFJBQ0VTKQorCitj
bGFzcyBHVGVzdE91dHB1dFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgIGRlZiBS
ZW1vdmVVbnN1cHBvcnRlZFRlc3RzKHNlbGYsIHRlc3Rfb3V0cHV0KToKKyAgICBpZiBub3QgU1VQ
UE9SVFNfREVBVEhfVEVTVFM6CisgICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVz
dHModGVzdF9vdXRwdXQsICdEZWF0aFRlc3QnKQorICAgIGlmIG5vdCBTVVBQT1JUU19UWVBFRF9U
RVNUUzoKKyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1
dCwgJ1R5cGVkVGVzdCcpCisgICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHMo
dGVzdF9vdXRwdXQsICdUeXBlZERlYXRoVGVzdCcpCisgICAgICB0ZXN0X291dHB1dCA9IFJlbW92
ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdUeXBlUGFyYW1EZWF0aFRlc3QnKQorICAgIGlm
IG5vdCBTVVBQT1JUU19USFJFQURTOgorICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGlu
Z1Rlc3RzKHRlc3Rfb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0JykKKyAgICAgIHRlc3Rfb3V0cHV0ID0g
UmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0JykK
KyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnV29ya3NDb25jdXJyZW50bHkn
KQorICAgIGlmIG5vdCBTVVBQT1JUU19TVEFDS19UUkFDRVM6CisgICAgICB0ZXN0X291dHB1dCA9
IFJlbW92ZVN0YWNrVHJhY2VzKHRlc3Rfb3V0cHV0KQorCisgICAgcmV0dXJuIHRlc3Rfb3V0cHV0
CisKKyAgZGVmIHRlc3RPdXRwdXQoc2VsZik6CisgICAgb3V0cHV0ID0gR2V0T3V0cHV0T2ZBbGxD
b21tYW5kcygpCisKKyAgICBnb2xkZW5fZmlsZSA9IG9wZW4oR09MREVOX1BBVEgsICdyYicpCisg
ICAgIyBBIG1pcy1jb25maWd1cmVkIHNvdXJjZSBjb250cm9sIHN5c3RlbSBjYW4gY2F1c2UgXHIg
YXBwZWFyIGluIEVPTAorICAgICMgc2VxdWVuY2VzIHdoZW4gd2UgcmVhZCB0aGUgZ29sZGVuIGZp
bGUgaXJyZXNwZWN0aXZlIG9mIGFuIG9wZXJhdGluZworICAgICMgc3lzdGVtIHVzZWQuIFRoZXJl
Zm9yZSwgd2UgbmVlZCB0byBzdHJpcCB0aG9zZSBccidzIGZyb20gbmV3bGluZXMKKyAgICAjIHVu
Y29uZGl0aW9uYWxseS4KKyAgICBnb2xkZW4gPSBUb1VuaXhMaW5lRW5kaW5nKGdvbGRlbl9maWxl
LnJlYWQoKSkKKyAgICBnb2xkZW5fZmlsZS5jbG9zZSgpCisKKyAgICAjIFdlIHdhbnQgdGhlIHRl
c3QgdG8gcGFzcyByZWdhcmRsZXNzIG9mIGNlcnRhaW4gZmVhdHVyZXMgYmVpbmcKKyAgICAjIHN1
cHBvcnRlZCBvciBub3QuCisKKyAgICAjIFdlIHN0aWxsIGhhdmUgdG8gcmVtb3ZlIHR5cGUgbmFt
ZSBzcGVjaWZpY3MgaW4gYWxsIGNhc2VzLgorICAgIG5vcm1hbGl6ZWRfYWN0dWFsID0gUmVtb3Zl
VHlwZUluZm9EZXRhaWxzKG91dHB1dCkKKyAgICBub3JtYWxpemVkX2dvbGRlbiA9IFJlbW92ZVR5
cGVJbmZvRGV0YWlscyhnb2xkZW4pCisKKyAgICBpZiBDQU5fR0VORVJBVEVfR09MREVOX0ZJTEU6
CisgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vcm1hbGl6ZWRfZ29sZGVuLCBub3JtYWxpemVkX2Fj
dHVhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJy5qb2luKGRpZmZsaWIudW5pZmllZF9k
aWZmKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZF9nb2xkZW4uc3BsaXQo
J1xuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkX2FjdHVhbC5zcGxp
dCgnXG4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdnb2xkZW4nLCAnYWN0dWFsJykp
KQorICAgIGVsc2U6CisgICAgICBub3JtYWxpemVkX2FjdHVhbCA9IE5vcm1hbGl6ZVRvQ3VycmVu
dFBsYXRmb3JtKAorICAgICAgICAgIFJlbW92ZVRlc3RDb3VudHMobm9ybWFsaXplZF9hY3R1YWwp
KQorICAgICAgbm9ybWFsaXplZF9nb2xkZW4gPSBOb3JtYWxpemVUb0N1cnJlbnRQbGF0Zm9ybSgK
KyAgICAgICAgICBSZW1vdmVUZXN0Q291bnRzKHNlbGYuUmVtb3ZlVW5zdXBwb3J0ZWRUZXN0cyhu
b3JtYWxpemVkX2dvbGRlbikpKQorCisgICAgICAjIFRoaXMgY29kZSBpcyB2ZXJ5IGhhbmR5IHdo
ZW4gZGVidWdnaW5nIGdvbGRlbiBmaWxlIGRpZmZlcmVuY2VzOgorICAgICAgaWYgb3MuZ2V0ZW52
KCdERUJVR19HVEVTVF9PVVRQVVRfVEVTVCcpOgorICAgICAgICBvcGVuKG9zLnBhdGguam9pbigK
KyAgICAgICAgICAgIGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNlRGlyKCksCisgICAgICAgICAg
ICAnX2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rfbm9ybWFsaXplZF9hY3R1YWwudHh0JyksICd3Yicp
LndyaXRlKAorICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRfYWN0dWFsKQorICAgICAgICBvcGVu
KG9zLnBhdGguam9pbigKKyAgICAgICAgICAgIGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNlRGly
KCksCisgICAgICAgICAgICAnX2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rfbm9ybWFsaXplZF9nb2xk
ZW4udHh0JyksICd3YicpLndyaXRlKAorICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRfZ29sZGVu
KQorCisgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vcm1hbGl6ZWRfZ29sZGVuLCBub3JtYWxpemVk
X2FjdHVhbCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBpZiBOT19TVEFDS1RS
QUNFX1NVUFBPUlRfRkxBRyBpbiBzeXMuYXJndjoKKyAgICAjIHVuaXR0ZXN0Lm1haW4oKSBjYW4n
dCBoYW5kbGUgdW5rbm93biBmbGFncworICAgIHN5cy5hcmd2LnJlbW92ZShOT19TVEFDS1RSQUNF
X1NVUFBPUlRfRkxBRykKKworICBpZiBHRU5HT0xERU5fRkxBRyBpbiBzeXMuYXJndjoKKyAgICBp
ZiBDQU5fR0VORVJBVEVfR09MREVOX0ZJTEU6CisgICAgICBvdXRwdXQgPSBHZXRPdXRwdXRPZkFs
bENvbW1hbmRzKCkKKyAgICAgIGdvbGRlbl9maWxlID0gb3BlbihHT0xERU5fUEFUSCwgJ3diJykK
KyAgICAgIGdvbGRlbl9maWxlLndyaXRlKG91dHB1dCkKKyAgICAgIGdvbGRlbl9maWxlLmNsb3Nl
KCkKKyAgICBlbHNlOgorICAgICAgbWVzc2FnZSA9ICgKKyAgICAgICAgICAiIiJVbmFibGUgdG8g
d3JpdGUgYSBnb2xkZW4gZmlsZSB3aGVuIGNvbXBpbGVkIGluIGFuIGVudmlyb25tZW50Cit0aGF0
IGRvZXMgbm90IHN1cHBvcnQgYWxsIHRoZSByZXF1aXJlZCBmZWF0dXJlcyAoZGVhdGggdGVzdHMs
Cit0eXBlZCB0ZXN0cywgc3RhY2sgdHJhY2VzLCBhbmQgbXVsdGlwbGUgdGhyZWFkcykuCitQbGVh
c2UgYnVpbGQgdGhpcyB0ZXN0IGFuZCBnZW5lcmF0ZSB0aGUgZ29sZGVuIGZpbGUgdXNpbmcgQmxh
emUgb24gTGludXguIiIiKQorCisgICAgICBzeXMuc3RkZXJyLndyaXRlKG1lc3NhZ2UpCisgICAg
ICBzeXMuZXhpdCgxKQorICBlbHNlOgorICAgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRl
c3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xODA2MzBlMjgyYjAzOGE3ZTk5YzZmMjMxNTIzNmYxMzgzZGE5
MWE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LW91dHB1dC10ZXN0Xy5jYwpAQCAtMCwwICsxLDExMDkgQEAKKy8vIENvcHlyaWdodCAy
MDA1LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgor
Ly8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBUaGUgcHVycG9zZSBvZiB0aGlz
IGZpbGUgaXMgdG8gZ2VuZXJhdGUgR29vZ2xlIFRlc3Qgb3V0cHV0IHVuZGVyCisvLyB2YXJpb3Vz
IGNvbmRpdGlvbnMuICBUaGUgb3V0cHV0IHdpbGwgdGhlbiBiZSB2ZXJpZmllZCBieQorLy8gZ29v
Z2xldGVzdC1vdXRwdXQtdGVzdC5weSB0byBlbnN1cmUgdGhhdCBHb29nbGUgVGVzdCBnZW5lcmF0
ZXMgdGhlCisvLyBkZXNpcmVkIG1lc3NhZ2VzLiAgVGhlcmVmb3JlLCBtb3N0IHRlc3RzIGluIHRo
aXMgZmlsZSBhcmUgTUVBTlQgVE8KKy8vIEZBSUwuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1z
cGkuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRl
cm5hbC1pbmwuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaWYgX01TQ19WRVIKKyAgR1RF
U1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDEyNyAvKiBjb25kaXRpb25hbCBleHByZXNz
aW9uIGlzIGNvbnN0YW50ICovKQorI2VuZGlmICAvLyAuIF9NU0NfVkVSICAgIAorCisjaWYgR1RF
U1RfSVNfVEhSRUFEU0FGRQordXNpbmcgdGVzdGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0
UmVwb3J0ZXI7Cit1c2luZyB0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdEFycmF5OworCit1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6Tm90aWZpY2F0aW9uOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OlRocmVhZFdpdGhQYXJhbTsKKyNlbmRpZgorCituYW1lc3BhY2UgcG9zaXggPSA6OnRlc3Rpbmc6
OmludGVybmFsOjpwb3NpeDsKKworLy8gVGVzdHMgY2F0Y2hpbmcgZmF0YWwgZmFpbHVyZXMuCisK
Ky8vIEEgc3Vicm91dGluZSB1c2VkIGJ5IHRoZSBmb2xsb3dpbmcgdGVzdC4KK3ZvaWQgVGVzdEVx
MShpbnQgeCkgeworICBBU1NFUlRfRVEoMSwgeCk7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24gY2Fs
bHMgYSB0ZXN0IHN1YnJvdXRpbmUsIGNhdGNoZXMgdGhlIGZhdGFsIGZhaWx1cmUgaXQKKy8vIGdl
bmVyYXRlcywgYW5kIHRoZW4gcmV0dXJucyBlYXJseS4KK3ZvaWQgVHJ5VGVzdFN1YnJvdXRpbmUo
KSB7CisgIC8vIENhbGxzIGEgc3Vicm91bnRpbmUgdGhhdCB5aWVsZHMgYSBmYXRhbCBmYWlsdXJl
LgorICBUZXN0RXExKDIpOworCisgIC8vIENhdGNoZXMgdGhlIGZhdGFsIGZhaWx1cmUgYW5kIGFi
b3J0cyB0aGUgdGVzdC4KKyAgLy8KKyAgLy8gVGhlIHRlc3Rpbmc6OlRlc3Q6OiBwcmVmaXggaXMg
bmVjZXNzYXJ5IHdoZW4gY2FsbGluZworICAvLyBIYXNGYXRhbEZhaWx1cmUoKSBvdXRzaWRlIG9m
IGEgVEVTVCwgVEVTVF9GLCBvciB0ZXN0IGZpeHR1cmUuCisgIGlmICh0ZXN0aW5nOjpUZXN0OjpI
YXNGYXRhbEZhaWx1cmUoKSkgcmV0dXJuOworCisgIC8vIElmIHdlIGdldCBoZXJlLCBzb21ldGhp
bmcgaXMgd3JvbmcuCisgIEZBSUwoKSA8PCAiVGhpcyBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC4i
OworfQorCitURVNUKFBhc3NpbmdUZXN0LCBQYXNzaW5nVGVzdDEpIHsKK30KKworVEVTVChQYXNz
aW5nVGVzdCwgUGFzc2luZ1Rlc3QyKSB7Cit9CisKKy8vIFRlc3RzIHRoYXQgcGFyYW1ldGVycyBv
ZiBmYWlsaW5nIHBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIHByaW50ZWQgaW4gdGhlCisvLyBmYWls
aW5nIHRlc3Qgc3VtbWFyeS4KK2NsYXNzIEZhaWxpbmdQYXJhbVRlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHt9OworCitURVNUX1AoRmFpbGluZ1BhcmFtVGVzdCwgRmFp
bHMpIHsKKyAgRVhQRUNUX0VRKDEsIEdldFBhcmFtKCkpOworfQorCisvLyBUaGlzIGdlbmVyYXRl
cyBhIHRlc3Qgd2hpY2ggd2lsbCBmYWlsLiBHb29nbGUgVGVzdCBpcyBleHBlY3RlZCB0byBwcmlu
dAorLy8gaXRzIHBhcmFtZXRlciB3aGVuIGl0IG91dHB1dHMgdGhlIGxpc3Qgb2YgYWxsIGZhaWxl
ZCB0ZXN0cy4KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFByaW50aW5nRmFpbGluZ1BhcmFtcywK
KyAgICAgICAgICAgICAgICAgICAgICAgIEZhaWxpbmdQYXJhbVRlc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXMoMikpOworCitzdGF0aWMgY29uc3QgY2hhciBrR29s
ZGVuU3RyaW5nW10gPSAiXCJMaW5lXDAgMVwiXG5MaW5lIDIiOworCitURVNUKE5vbmZhdGFsRmFp
bHVyZVRlc3QsIEVzY2FwZXNTdHJpbmdPcGVyYW5kcykgeworICBzdGQ6OnN0cmluZyBhY3R1YWwg
PSAiYWN0dWFsIFwic3RyaW5nXCIiOworICBFWFBFQ1RfRVEoa0dvbGRlblN0cmluZywgYWN0dWFs
KTsKKworICBjb25zdCBjaGFyKiBnb2xkZW4gPSBrR29sZGVuU3RyaW5nOworICBFWFBFQ1RfRVEo
Z29sZGVuLCBhY3R1YWwpOworfQorCitURVNUKE5vbmZhdGFsRmFpbHVyZVRlc3QsIERpZmZGb3JM
b25nU3RyaW5ncykgeworICBzdGQ6OnN0cmluZyBnb2xkZW5fc3RyKGtHb2xkZW5TdHJpbmcsIHNp
emVvZihrR29sZGVuU3RyaW5nKSAtIDEpOworICBFWFBFQ1RfRVEoZ29sZGVuX3N0ciwgIkxpbmUg
MiIpOworfQorCisvLyBUZXN0cyBjYXRjaGluZyBhIGZhdGFsIGZhaWx1cmUgaW4gYSBzdWJyb3V0
aW5lLgorVEVTVChGYXRhbEZhaWx1cmVUZXN0LCBGYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUpIHsK
KyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpXG4iKTsK
KworICBUcnlUZXN0U3Vicm91dGluZSgpOworfQorCisvLyBUZXN0cyBjYXRjaGluZyBhIGZhdGFs
IGZhaWx1cmUgaW4gYSBuZXN0ZWQgc3Vicm91dGluZS4KK1RFU1QoRmF0YWxGYWlsdXJlVGVzdCwg
RmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lKSB7CisgIHByaW50ZigiKGV4cGVjdGluZyBh
IGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKVxuIik7CisKKyAgLy8gQ2FsbHMgYSBzdWJyb3Vu
dGluZSB0aGF0IHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUuCisgIFRyeVRlc3RTdWJyb3V0aW5lKCk7
CisKKyAgLy8gQ2F0Y2hlcyB0aGUgZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSB0ZXN0Lgor
ICAvLworICAvLyBXaGVuIGNhbGxpbmcgSGFzRmF0YWxGYWlsdXJlKCkgaW5zaWRlIGEgVEVTVCwg
VEVTVF9GLCBvciB0ZXN0CisgIC8vIGZpeHR1cmUsIHRoZSB0ZXN0aW5nOjpUZXN0OjogcHJlZml4
IGlzIG5vdCBuZWVkZWQuCisgIGlmIChIYXNGYXRhbEZhaWx1cmUoKSkgcmV0dXJuOworCisgIC8v
IElmIHdlIGdldCBoZXJlLCBzb21ldGhpbmcgaXMgd3JvbmcuCisgIEZBSUwoKSA8PCAiVGhpcyBz
aG91bGQgbmV2ZXIgYmUgcmVhY2hlZC4iOworfQorCisvLyBUZXN0cyBIYXNGYXRhbEZhaWx1cmUo
KSBhZnRlciBhIGZhaWxlZCBFWFBFQ1QgY2hlY2suCitURVNUKEZhdGFsRmFpbHVyZVRlc3QsIE5v
bmZhdGFsRmFpbHVyZUluU3Vicm91dGluZSkgeworICBwcmludGYoIihleHBlY3RpbmcgYSBmYWls
dXJlIG9uIGZhbHNlKVxuIik7CisgIEVYUEVDVF9UUlVFKGZhbHNlKTsgIC8vIEdlbmVyYXRlcyBh
IG5vbmZhdGFsIGZhaWx1cmUKKyAgQVNTRVJUX0ZBTFNFKEhhc0ZhdGFsRmFpbHVyZSgpKTsgIC8v
IFRoaXMgc2hvdWxkIHN1Y2NlZWQuCit9CisKKy8vIFRlc3RzIGludGVybGVhdmluZyB1c2VyIGxv
Z2dpbmcgYW5kIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMuCitURVNUKExvZ2dpbmdUZXN0LCBJbnRl
cmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucykgeworICBzdGF0aWMgY29uc3QgaW50IGFbNF0g
PSB7CisgICAgMywgOSwgMiwgNgorICB9OworCisgIHByaW50ZigiKGV4cGVjdGluZyAyIGZhaWx1
cmVzIG9uICgzKSA+PSAoYVtpXSkpXG4iKTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemVvZihhKS9zaXplb2YoKmEpKTsgaSsrKSB7CisgICAgcHJpbnRmKCJpID09
ICVkXG4iLCBpKTsKKyAgICBFWFBFQ1RfR0UoMywgYVtpXSk7CisgIH0KK30KKworLy8gVGVzdHMg
dGhlIFNDT1BFRF9UUkFDRSBtYWNyby4KKworLy8gQSBoZWxwZXIgZnVuY3Rpb24gZm9yIHRlc3Rp
bmcgU0NPUEVEX1RSQUNFLgordm9pZCBTdWJXaXRob3V0VHJhY2UoaW50IG4pIHsKKyAgRVhQRUNU
X0VRKDEsIG4pOworICBBU1NFUlRfRVEoMiwgbik7Cit9CisKKy8vIEFub3RoZXIgaGVscGVyIGZ1
bmN0aW9uIGZvciB0ZXN0aW5nIFNDT1BFRF9UUkFDRS4KK3ZvaWQgU3ViV2l0aFRyYWNlKGludCBu
KSB7CisgIFNDT1BFRF9UUkFDRSh0ZXN0aW5nOjpNZXNzYWdlKCkgPDwgIm4gPSAiIDw8IG4pOwor
CisgIFN1YldpdGhvdXRUcmFjZShuKTsKK30KKworVEVTVChTQ09QRURfVFJBQ0VUZXN0LCBBY2Nl
cHRlZFZhbHVlcykgeworICBTQ09QRURfVFJBQ0UoImxpdGVyYWwgc3RyaW5nIik7CisgIFNDT1BF
RF9UUkFDRShzdGQ6OnN0cmluZygic3RkOjpzdHJpbmciKSk7CisgIFNDT1BFRF9UUkFDRSgxMzM3
KTsgIC8vIHN0cmVhbWFibGUgdHlwZQorICBjb25zdCBjaGFyKiBudWxsX3ZhbHVlID0gTlVMTDsK
KyAgU0NPUEVEX1RSQUNFKG51bGxfdmFsdWUpOworCisgIEFERF9GQUlMVVJFKCkgPDwgIkp1c3Qg
Y2hlY2tpbmcgdGhhdCBhbGwgdGhlc2UgdmFsdWVzIHdvcmsgZmluZS4iOworfQorCisvLyBUZXN0
cyB0aGF0IFNDT1BFRF9UUkFDRSgpIG9iZXlzIGxleGljYWwgc2NvcGVzLgorVEVTVChTQ09QRURf
VFJBQ0VUZXN0LCBPYmV5c1Njb3BlcykgeworICBwcmludGYoIihleHBlY3RlZCB0byBmYWlsKVxu
Iik7CisKKyAgLy8gVGhlcmUgc2hvdWxkIGJlIG5vIHRyYWNlIGJlZm9yZSBTQ09QRURfVFJBQ0Uo
KSBpcyBpbnZva2VkLgorICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0
ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNlLiI7CisKKyAgeworICAgIFNDT1BFRF9UUkFD
RSgiRXhwZWN0ZWQgdHJhY2UiKTsKKyAgICAvLyBBZnRlciBTQ09QRURfVFJBQ0UoKSwgYSBmYWls
dXJlIGluIHRoZSBjdXJyZW50IHNjb3BlIHNob3VsZCBjb250YWluCisgICAgLy8gdGhlIHRyYWNl
LgorICAgIEFERF9GQUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNo
b3VsZCBoYXZlIGEgdHJhY2UuIjsKKyAgfQorCisgIC8vIE9uY2UgdGhlIGNvbnRyb2wgbGVhdmVz
IHRoZSBzY29wZSBvZiB0aGUgU0NPUEVEX1RSQUNFKCksIHRoZXJlCisgIC8vIHNob3VsZCBiZSBu
byB0cmFjZSBhZ2Fpbi4KKyAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVj
dGVkLCBhbmQgc2hvdWxkbid0IGhhdmUgYSB0cmFjZS4iOworfQorCisvLyBUZXN0cyB0aGF0IFND
T1BFRF9UUkFDRSB3b3JrcyBpbnNpZGUgYSBsb29wLgorVEVTVChTQ09QRURfVFJBQ0VUZXN0LCBX
b3Jrc0luTG9vcCkgeworICBwcmludGYoIihleHBlY3RlZCB0byBmYWlsKVxuIik7CisKKyAgZm9y
IChpbnQgaSA9IDE7IGkgPD0gMjsgaSsrKSB7CisgICAgU0NPUEVEX1RSQUNFKHRlc3Rpbmc6Ok1l
c3NhZ2UoKSA8PCAiaSA9ICIgPDwgaSk7CisKKyAgICBTdWJXaXRob3V0VHJhY2UoaSk7CisgIH0K
K30KKworLy8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0Ugd29ya3MgaW4gYSBzdWJyb3V0aW5lLgor
VEVTVChTQ09QRURfVFJBQ0VUZXN0LCBXb3Jrc0luU3Vicm91dGluZSkgeworICBwcmludGYoIihl
eHBlY3RlZCB0byBmYWlsKVxuIik7CisKKyAgU3ViV2l0aFRyYWNlKDEpOworICBTdWJXaXRoVHJh
Y2UoMik7Cit9CisKKy8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFIGNhbiBiZSBuZXN0ZWQuCitU
RVNUKFNDT1BFRF9UUkFDRVRlc3QsIENhbkJlTmVzdGVkKSB7CisgIHByaW50ZigiKGV4cGVjdGVk
IHRvIGZhaWwpXG4iKTsKKworICBTQ09QRURfVFJBQ0UoIiIpOyAgLy8gQSB0cmFjZSB3aXRob3V0
IGEgbWVzc2FnZS4KKworICBTdWJXaXRoVHJhY2UoMik7Cit9CisKKy8vIFRlc3RzIHRoYXQgbXVs
dGlwbGUgU0NPUEVEX1RSQUNFcyBjYW4gYmUgdXNlZCBpbiB0aGUgc2FtZSBzY29wZS4KK1RFU1Qo
U0NPUEVEX1RSQUNFVGVzdCwgQ2FuQmVSZXBlYXRlZCkgeworICBwcmludGYoIihleHBlY3RlZCB0
byBmYWlsKVxuIik7CisKKyAgU0NPUEVEX1RSQUNFKCJBIik7CisgIEFERF9GQUlMVVJFKCkKKyAg
ICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFj
ZSBwb2ludCBBLiI7CisKKyAgU0NPUEVEX1RSQUNFKCJCIik7CisgIEFERF9GQUlMVVJFKCkKKyAg
ICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFj
ZSBwb2ludCBBIGFuZCBCLiI7CisKKyAgeworICAgIFNDT1BFRF9UUkFDRSgiQyIpOworICAgIEFE
RF9GQUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCAiCisg
ICAgICAgICAgICAgICAgICA8PCAiY29udGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQgQy4iOwor
ICB9CisKKyAgU0NPUEVEX1RSQUNFKCJEIik7CisgIEFERF9GQUlMVVJFKCkgPDwgIlRoaXMgZmFp
bHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCAiCisgICAgICAgICAgICAgICAgPDwgImNvbnRh
aW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEQuIjsKK30KKworI2lmIEdURVNUX0lTX1RIUkVBRFNB
RkUKKy8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFKClzIGNhbiBiZSB1c2VkIGNvbmN1cnJlbnRs
eSBmcm9tIG11bHRpcGxlCisvLyB0aHJlYWRzLiAgTmFtZWx5LCBhbiBhc3NlcnRpb24gc2hvdWxk
IGJlIGFmZmVjdGVkIGJ5CisvLyBTQ09QRURfVFJBQ0UoKXMgaW4gaXRzIG93biB0aHJlYWQgb25s
eS4KKworLy8gSGVyZSdzIHRoZSBzZXF1ZW5jZSBvZiBhY3Rpb25zIHRoYXQgaGFwcGVuIGluIHRo
ZSB0ZXN0OgorLy8KKy8vICAgVGhyZWFkIEEgKG1haW4pICAgICAgICAgICAgICAgIHwgVGhyZWFk
IEIgKHNwYXduZWQpCisvLyAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT18PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vICAgc3Bhd25zIHRocmVhZCBCICAgICAgICAg
ICAgICAgIHwKKy8vICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICB3YWl0cyBmb3IgbjEgICAgICAgICAgICAgICAg
ICAgfCBTQ09QRURfVFJBQ0UoIlRyYWNlIEIiKTsKKy8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgZ2VuZXJhdGVzIGZhaWx1cmUgIzEKKy8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgbm90aWZpZXMgbjEKKy8vICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICBTQ09QRURfVFJB
Q0UoIlRyYWNlIEEiKTsgICAgICAgfCB3YWl0cyBmb3IgbjIKKy8vICAgZ2VuZXJhdGVzIGZhaWx1
cmUgIzIgICAgICAgICAgIHwKKy8vICAgbm90aWZpZXMgbjIgICAgICAgICAgICAgICAgICAgIHwK
Ky8vICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8gICB3YWl0cyBmb3IgbjMgICAgICAgICAgICAgICAgICAgfCBnZW5l
cmF0ZXMgZmFpbHVyZSAjMworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0
cmFjZSBCIGRpZXMKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2VuZXJh
dGVzIGZhaWx1cmUgIzQKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbm90
aWZpZXMgbjMKKy8vICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICBnZW5lcmF0ZXMgZmFpbHVyZSAjNSAgICAgICAg
ICAgfCBmaW5pc2hlcworLy8gICB0cmFjZSBBIGRpZXMgICAgICAgICAgICAgICAgICAgfAorLy8g
ICBnZW5lcmF0ZXMgZmFpbHVyZSAjNiAgICAgICAgICAgfAorLy8gICAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIHdh
aXRzIGZvciB0aHJlYWQgQiB0byBmaW5pc2ggICB8CisKK3N0cnVjdCBDaGVja1BvaW50cyB7Cisg
IE5vdGlmaWNhdGlvbiBuMTsKKyAgTm90aWZpY2F0aW9uIG4yOworICBOb3RpZmljYXRpb24gbjM7
Cit9OworCitzdGF0aWMgdm9pZCBUaHJlYWRXaXRoU2NvcGVkVHJhY2UoQ2hlY2tQb2ludHMqIGNo
ZWNrX3BvaW50cykgeworICB7CisgICAgU0NPUEVEX1RSQUNFKCJUcmFjZSBCIik7CisgICAgQURE
X0ZBSUxVUkUoKQorICAgICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSAoaW4gdGhyZWFkIEIs
IG9ubHkgdHJhY2UgQiBhbGl2ZSkuIjsKKyAgICBjaGVja19wb2ludHMtPm4xLk5vdGlmeSgpOwor
ICAgIGNoZWNrX3BvaW50cy0+bjIuV2FpdEZvck5vdGlmaWNhdGlvbigpOworCisgICAgQUREX0ZB
SUxVUkUoKQorICAgICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMyAoaW4gdGhyZWFkIEIsIHRy
YWNlIEEgJiBCIGJvdGggYWxpdmUpLiI7CisgIH0gIC8vIFRyYWNlIEIgZGllcyBoZXJlLgorICBB
RERfRkFJTFVSRSgpCisgICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNCAoaW4gdGhyZWFkIEIs
IG9ubHkgdHJhY2UgQSBhbGl2ZSkuIjsKKyAgY2hlY2tfcG9pbnRzLT5uMy5Ob3RpZnkoKTsKK30K
KworVEVTVChTQ09QRURfVFJBQ0VUZXN0LCBXb3Jrc0NvbmN1cnJlbnRseSkgeworICBwcmludGYo
IihleHBlY3RpbmcgNiBmYWlsdXJlcylcbiIpOworCisgIENoZWNrUG9pbnRzIGNoZWNrX3BvaW50
czsKKyAgVGhyZWFkV2l0aFBhcmFtPENoZWNrUG9pbnRzKj4gdGhyZWFkKCZUaHJlYWRXaXRoU2Nv
cGVkVHJhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2hlY2tf
cG9pbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Cisg
IGNoZWNrX3BvaW50cy5uMS5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7CisKKyAgeworICAgIFNDT1BF
RF9UUkFDRSgiVHJhY2UgQSIpOworICAgIEFERF9GQUlMVVJFKCkKKyAgICAgICAgPDwgIkV4cGVj
dGVkIGZhaWx1cmUgIzIgKGluIHRocmVhZCBBLCB0cmFjZSBBICYgQiBib3RoIGFsaXZlKS4iOwor
ICAgIGNoZWNrX3BvaW50cy5uMi5Ob3RpZnkoKTsKKyAgICBjaGVja19wb2ludHMubjMuV2FpdEZv
ck5vdGlmaWNhdGlvbigpOworCisgICAgQUREX0ZBSUxVUkUoKQorICAgICAgICA8PCAiRXhwZWN0
ZWQgZmFpbHVyZSAjNSAoaW4gdGhyZWFkIEEsIG9ubHkgdHJhY2UgQSBhbGl2ZSkuIjsKKyAgfSAg
Ly8gVHJhY2UgQSBkaWVzIGhlcmUuCisgIEFERF9GQUlMVVJFKCkKKyAgICAgIDw8ICJFeHBlY3Rl
ZCBmYWlsdXJlICM2IChpbiB0aHJlYWQgQSwgbm8gdHJhY2UgYWxpdmUpLiI7CisgIHRocmVhZC5K
b2luKCk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUKKworLy8gVGVzdHMgYmFz
aWMgZnVuY3Rpb25hbGl0eSBvZiB0aGUgU2NvcGVkVHJhY2UgdXRpbGl0eSAobW9zdCBvZiBpdHMg
ZmVhdHVyZXMKKy8vIGFyZSBhbHJlYWR5IHRlc3RlZCBpbiBTQ09QRURfVFJBQ0VUZXN0KS4KK1RF
U1QoU2NvcGVkVHJhY2VUZXN0LCBXaXRoRXhwbGljaXRGaWxlQW5kTGluZSkgeworICB0ZXN0aW5n
OjpTY29wZWRUcmFjZSB0cmFjZSgiZXhwbGljaXRfZmlsZS5jYyIsIDEyMywgImV4cGVjdGVkIHRy
YWNlIG1lc3NhZ2UiKTsKKyAgQUREX0ZBSUxVUkUoKSA8PCAiQ2hlY2sgdGhhdCB0aGUgdHJhY2Ug
aXMgYXR0YWNoZWQgdG8gYSBwYXJ0aWN1bGFyIGxvY2F0aW9uLiI7Cit9CisKK1RFU1QoRGlzYWJs
ZWRUZXN0c1dhcm5pbmdUZXN0LAorICAgICBESVNBQkxFRF9BbHNvUnVuRGlzYWJsZWRUZXN0c0Zs
YWdTdXBwcmVzc2VzV2FybmluZykgeworICAvLyBUaGlzIHRlc3QgYm9keSBpcyBpbnRlbnRpb25h
bGx5IGVtcHR5LiAgSXRzIHNvbGUgcHVycG9zZSBpcyBmb3IKKyAgLy8gdmVyaWZ5aW5nIHRoYXQg
dGhlIC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxhZworICAvLyBzdXBwcmVzc2Vz
IHRoZSAiWU9VIEhBVkUgMTIgRElTQUJMRUQgVEVTVFMiIHdhcm5pbmcgYXQgdGhlIGVuZCBvZgor
ICAvLyB0aGUgdGVzdCBvdXRwdXQuCit9CisKKy8vIFRlc3RzIHVzaW5nIGFzc2VydGlvbnMgb3V0
c2lkZSBvZiBURVNUIGFuZCBURVNUX0YuCisvLworLy8gVGhpcyBmdW5jdGlvbiBjcmVhdGVzIHR3
byBmYWlsdXJlcyBpbnRlbnRpb25hbGx5Lgordm9pZCBBZEhvY1Rlc3QoKSB7CisgIHByaW50Zigi
VGhlIG5vbi10ZXN0IHBhcnQgb2YgdGhlIGNvZGUgaXMgZXhwZWN0ZWQgdG8gaGF2ZSAyIGZhaWx1
cmVzLlxuXG4iKTsKKyAgRVhQRUNUX1RSVUUoZmFsc2UpOworICBFWFBFQ1RfRVEoMiwgMyk7Cit9
CisKKy8vIFJ1bnMgYWxsIFRFU1RzLCBhbGwgVEVTVF9GcywgYW5kIHRoZSBhZCBob2MgdGVzdC4K
K2ludCBSdW5BbGxUZXN0cygpIHsKKyAgQWRIb2NUZXN0KCk7CisgIHJldHVybiBSVU5fQUxMX1RF
U1RTKCk7Cit9CisKKy8vIFRlc3RzIG5vbi1mYXRhbCBmYWlsdXJlcyBpbiB0aGUgZml4dHVyZSBj
b25zdHJ1Y3Rvci4KK2NsYXNzIE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIE5vbkZhdGFsRmFpbHVy
ZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCgpIHsKKyAgICBwcmludGYoIihleHBlY3RpbmcgNSBm
YWlsdXJlcylcbiIpOworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzEs
IGluIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IuIjsKKyAgfQorCisgIH5Ob25GYXRhbEZhaWx1cmVJ
bkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QoKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0
ZWQgZmFpbHVyZSAjNSwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4iOworICB9CisKKyAgdmly
dHVhbCB2b2lkIFNldFVwKCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1
cmUgIzIsIGluIFNldFVwKCkuIjsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsK
KyAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM0LCBpbiBUZWFyRG93bi4i
OworICB9Cit9OworCitURVNUX0YoTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JU
ZXN0LCBGYWlsdXJlSW5Db25zdHJ1Y3RvcikgeworICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3Rl
ZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBib2R5LiI7Cit9CisKKy8vIFRlc3RzIGZhdGFsIGZh
aWx1cmVzIGluIHRoZSBmaXh0dXJlIGNvbnN0cnVjdG9yLgorY2xhc3MgRmF0YWxGYWlsdXJlSW5G
aXh0dXJlQ29uc3RydWN0b3JUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3Rl
ZDoKKyAgRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0KCkgeworICAgIHByaW50
ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7CisgICAgSW5pdCgpOworICB9CisKKyAgfkZh
dGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCgpIHsKKyAgICBBRERfRkFJTFVSRSgp
IDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLiI7Cisg
IH0KKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiVU5F
WFBFQ1RFRCBmYWlsdXJlIGluIFNldFVwKCkuICAiCisgICAgICAgICAgICAgICAgICA8PCAiV2Ug
c2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yICIKKyAgICAg
ICAgICAgICAgICAgIDw8ICJoYWQgYSBmYXRhbCBmYWlsdXJlLiI7CisgIH0KKworICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiVU5FWFBFQ1RFRCBmYWls
dXJlIGluIFRlYXJEb3duKCkuICAiCisgICAgICAgICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5l
dmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yICIKKyAgICAgICAgICAgICAg
ICAgIDw8ICJoYWQgYSBmYXRhbCBmYWlsdXJlLiI7CisgIH0KKworIHByaXZhdGU6CisgIHZvaWQg
SW5pdCgpIHsKKyAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0
IGZpeHR1cmUgYyd0b3IuIjsKKyAgfQorfTsKKworVEVTVF9GKEZhdGFsRmFpbHVyZUluRml4dHVy
ZUNvbnN0cnVjdG9yVGVzdCwgRmFpbHVyZUluQ29uc3RydWN0b3IpIHsKKyAgQUREX0ZBSUxVUkUo
KSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIHRoZSB0ZXN0IGJvZHkuICAiCisgICAgICAgICAg
ICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgdGhlIHRlc3QgZml4dHVyZSBj
J3RvciAiCisgICAgICAgICAgICAgICAgPDwgImhhZCBhIGZhdGFsIGZhaWx1cmUuIjsKK30KKwor
Ly8gVGVzdHMgbm9uLWZhdGFsIGZhaWx1cmVzIGluIFNldFVwKCkuCitjbGFzcyBOb25GYXRhbEZh
aWx1cmVJblNldFVwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6Cisg
IHZpcnR1YWwgfk5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0KCkgeworICAgIERlaW5pdCgpOwor
ICB9CisKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIHByaW50ZigiKGV4cGVjdGluZyA0
IGZhaWx1cmVzKVxuIik7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAj
MSwgaW4gU2V0VXAoKS4iOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAg
IEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gVGVhckRvd24oKS4iOworICB9Cisg
cHJpdmF0ZToKKyAgdm9pZCBEZWluaXQoKSB7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWls
dXJlICM0LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLiI7CisgIH0KK307CisKK1RFU1RfRihO
b25GYXRhbEZhaWx1cmVJblNldFVwVGVzdCwgRmFpbHVyZUluU2V0VXApIHsKKyAgRkFJTCgpIDw8
ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmdW5jdGlvbi4iOworfQorCisvLyBU
ZXN0cyBmYXRhbCBmYWlsdXJlcyBpbiBTZXRVcCgpLgorY2xhc3MgRmF0YWxGYWlsdXJlSW5TZXRV
cFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIH5G
YXRhbEZhaWx1cmVJblNldFVwVGVzdCgpIHsKKyAgICBEZWluaXQoKTsKKyAgfQorCisgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBwcmludGYoIihleHBlY3RpbmcgMyBmYWlsdXJlcylcbiIp
OworICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gU2V0VXAoKS4iOworICB9
CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQg
ZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4iOworICB9CisgcHJpdmF0ZToKKyAgdm9pZCBEZWlu
aXQoKSB7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBm
aXh0dXJlIGQndG9yLiI7CisgIH0KK307CisKK1RFU1RfRihGYXRhbEZhaWx1cmVJblNldFVwVGVz
dCwgRmFpbHVyZUluU2V0VXApIHsKKyAgRkFJTCgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4g
dGhlIHRlc3QgZnVuY3Rpb24uICAiCisgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBo
ZXJlLCBhcyBTZXRVcCgpIGZhaWxlZC4iOworfQorCitURVNUKEFkZEZhaWx1cmVBdFRlc3QsIE1l
c3NhZ2VDb250YWluc1NwZWNpZmllZEZpbGVBbmRMaW5lTnVtYmVyKSB7CisgIEFERF9GQUlMVVJF
X0FUKCJmb28uY2MiLCA0MikgPDwgIkV4cGVjdGVkIGZhaWx1cmUgaW4gZm9vLmNjIjsKK30KKwor
I2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKKworLy8gQSB1bmFyeSBmdW5jdGlvbiB0aGF0IG1heSBk
aWUuCit2b2lkIERpZUlmKGJvb2wgc2hvdWxkX2RpZSkgeworICBHVEVTVF9DSEVDS18oIXNob3Vs
ZF9kaWUpIDw8ICIgLSBkZWF0aCBpbnNpZGUgRGllSWYoKS4iOworfQorCisvLyBUZXN0cyBydW5u
aW5nIGRlYXRoIHRlc3RzIGluIGEgbXVsdGktdGhyZWFkZWQgY29udGV4dC4KKworLy8gVXNlZCBm
b3IgY29vcmRpbmF0aW9uIGJldHdlZW4gdGhlIG1haW4gYW5kIHRoZSBzcGF3biB0aHJlYWQuCitz
dHJ1Y3QgU3Bhd25UaHJlYWROb3RpZmljYXRpb25zIHsKKyAgU3Bhd25UaHJlYWROb3RpZmljYXRp
b25zKCkge30KKworICBOb3RpZmljYXRpb24gc3Bhd25fdGhyZWFkX3N0YXJ0ZWQ7CisgIE5vdGlm
aWNhdGlvbiBzcGF3bl90aHJlYWRfb2tfdG9fdGVybWluYXRlOworCisgcHJpdmF0ZToKKyAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMpOwor
fTsKKworLy8gVGhlIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIGluIHRoZSB0aHJlYWQgc3Bhd24g
YnkgdGhlCisvLyBNdWx0aXBsZVRocmVhZHMgdGVzdCAoYmVsb3cpLgorc3RhdGljIHZvaWQgVGhy
ZWFkUm91dGluZShTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMqIG5vdGlmaWNhdGlvbnMpIHsKKyAg
Ly8gU2lnbmFscyB0aGUgbWFpbiB0aHJlYWQgdGhhdCB0aGlzIHRocmVhZCBoYXMgc3RhcnRlZC4K
KyAgbm90aWZpY2F0aW9ucy0+c3Bhd25fdGhyZWFkX3N0YXJ0ZWQuTm90aWZ5KCk7CisKKyAgLy8g
V2FpdHMgZm9yIHBlcm1pc3Npb24gdG8gZmluaXNoIGZyb20gdGhlIG1haW4gdGhyZWFkLgorICBu
b3RpZmljYXRpb25zLT5zcGF3bl90aHJlYWRfb2tfdG9fdGVybWluYXRlLldhaXRGb3JOb3RpZmlj
YXRpb24oKTsKK30KKworLy8gVGhpcyBpcyBhIGRlYXRoLXRlc3QgdGVzdCwgYnV0IGl0J3Mgbm90
IG5hbWVkIHdpdGggYSBEZWF0aFRlc3QKKy8vIHN1ZmZpeC4gIEl0IHN0YXJ0cyB0aHJlYWRzIHdo
aWNoIG1pZ2h0IGludGVyZmVyZSB3aXRoIGxhdGVyCisvLyBkZWF0aCB0ZXN0cywgc28gaXQgbXVz
dCBydW4gYWZ0ZXIgYWxsIG90aGVyIGRlYXRoIHRlc3RzLgorY2xhc3MgRGVhdGhUZXN0QW5kTXVs
dGlUaHJlYWRzVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIC8v
IFN0YXJ0cyBhIHRocmVhZCBhbmQgd2FpdHMgZm9yIGl0IHRvIGJlZ2luLgorICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKSB7CisgICAgdGhyZWFkXy5yZXNldChuZXcgVGhyZWFkV2l0aFBhcmFtPFNwYXdu
VGhyZWFkTm90aWZpY2F0aW9ucyo+KAorICAgICAgICAmVGhyZWFkUm91dGluZSwgJm5vdGlmaWNh
dGlvbnNfLCBOVUxMKSk7CisgICAgbm90aWZpY2F0aW9uc18uc3Bhd25fdGhyZWFkX3N0YXJ0ZWQu
V2FpdEZvck5vdGlmaWNhdGlvbigpOworICB9CisgIC8vIFRlbGxzIHRoZSB0aHJlYWQgdG8gZmlu
aXNoLCBhbmQgcmVhcHMgaXQuCisgIC8vIERlcGVuZGluZyBvbiB0aGUgdmVyc2lvbiBvZiB0aGUg
dGhyZWFkIGxpYnJhcnkgaW4gdXNlLAorICAvLyBhIG1hbmFnZXIgdGhyZWFkIG1pZ2h0IHN0aWxs
IGJlIGxlZnQgcnVubmluZyB0aGF0IHdpbGwgaW50ZXJmZXJlCisgIC8vIHdpdGggbGF0ZXIgZGVh
dGggdGVzdHMuICBUaGlzIGlzIHVuZm9ydHVuYXRlLCBidXQgdGhpcyBjbGFzcworICAvLyBjbGVh
bnMgdXAgYWZ0ZXIgaXRzZWxmIGFzIGJlc3QgaXQgY2FuLgorICB2aXJ0dWFsIHZvaWQgVGVhckRv
d24oKSB7CisgICAgbm90aWZpY2F0aW9uc18uc3Bhd25fdGhyZWFkX29rX3RvX3Rlcm1pbmF0ZS5O
b3RpZnkoKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgU3Bhd25UaHJlYWROb3RpZmljYXRpb25zIG5v
dGlmaWNhdGlvbnNfOworICB0ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVkX3B0cjxUaHJlYWRXaXRo
UGFyYW08U3Bhd25UaHJlYWROb3RpZmljYXRpb25zKj4gPgorICAgICAgdGhyZWFkXzsKK307CisK
KyNlbmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFEU0FGRQorCisvLyBUaGUgTWl4ZWRVcFRlc3RDYXNl
VGVzdCB0ZXN0IGNhc2UgdmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCB3aWxsIGZhaWwgYQorLy8g
dGVzdCBpZiBpdCB1c2VzIGEgZGlmZmVyZW50IGZpeHR1cmUgY2xhc3MgdGhhbiB3aGF0IG90aGVy
IHRlc3RzIGluCisvLyB0aGUgc2FtZSB0ZXN0IGNhc2UgdXNlLiAgSXQgZGVsaWJlcmF0ZWx5IGNv
bnRhaW5zIHR3byBmaXh0dXJlCisvLyBjbGFzc2VzIHdpdGggdGhlIHNhbWUgbmFtZSBidXQgZGVm
aW5lZCBpbiBkaWZmZXJlbnQgbmFtZXNwYWNlcy4KKworLy8gVGhlIE1peGVkVXBUZXN0Q2FzZVdp
dGhTYW1lVGVzdE5hbWVUZXN0IHRlc3QgY2FzZSB2ZXJpZmllcyB0aGF0CisvLyB3aGVuIHRoZSB1
c2VyIGRlZmluZXMgdHdvIHRlc3RzIHdpdGggdGhlIHNhbWUgdGVzdCBjYXNlIG5hbWUgQU5ECisv
LyBzYW1lIHRlc3QgbmFtZSAoYnV0IGluIGRpZmZlcmVudCBuYW1lc3BhY2VzKSwgdGhlIHNlY29u
ZCB0ZXN0IHdpbGwKKy8vIGZhaWwuCisKK25hbWVzcGFjZSBmb28geworCitjbGFzcyBNaXhlZFVw
VGVzdENhc2VUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKworVEVTVF9GKE1peGVk
VXBUZXN0Q2FzZVRlc3QsIEZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28pIHt9CitURVNUX0YoTWl4
ZWRVcFRlc3RDYXNlVGVzdCwgU2Vjb25kVGVzdEZyb21OYW1lc3BhY2VGb28pIHt9CisKK2NsYXNz
IE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgeworfTsKKworVEVTVF9GKE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAor
ICAgICAgIFRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsKSB7fQorCit9ICAvLyBu
YW1lc3BhY2UgZm9vCisKK25hbWVzcGFjZSBiYXIgeworCitjbGFzcyBNaXhlZFVwVGVzdENhc2VU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKworLy8gVGhlIGZvbGxvd2luZyB0d28g
dGVzdHMgYXJlIGV4cGVjdGVkIHRvIGZhaWwuICBXZSByZWx5IG9uIHRoZQorLy8gZ29sZGVuIGZp
bGUgdG8gY2hlY2sgdGhhdCBHb29nbGUgVGVzdCBnZW5lcmF0ZXMgdGhlIHJpZ2h0IGVycm9yIG1l
c3NhZ2UuCitURVNUX0YoTWl4ZWRVcFRlc3RDYXNlVGVzdCwgVGhpc1Nob3VsZEZhaWwpIHt9CitU
RVNUX0YoTWl4ZWRVcFRlc3RDYXNlVGVzdCwgVGhpc1Nob3VsZEZhaWxUb28pIHt9CisKK2NsYXNz
IE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgeworfTsKKworLy8gRXhwZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBm
aWxlIHRvIGNoZWNrIHRoYXQgR29vZ2xlIFRlc3QKKy8vIGdlbmVyYXRlcyB0aGUgcmlnaHQgZXJy
b3IgbWVzc2FnZS4KK1RFU1RfRihNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdCwK
KyAgICAgICBUaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbCkge30KKworfSAgLy8g
bmFtZXNwYWNlIGJhcgorCisvLyBUaGUgZm9sbG93aW5nIHR3byB0ZXN0IGNhc2VzIHZlcmlmeSB0
aGF0IEdvb2dsZSBUZXN0IGNhdGNoZXMgdGhlIHVzZXIKKy8vIGVycm9yIG9mIG1peGluZyBURVNU
IGFuZCBURVNUX0YgaW4gdGhlIHNhbWUgdGVzdCBjYXNlLiAgVGhlIGZpcnN0CisvLyB0ZXN0IGNh
c2UgY2hlY2tzIHRoZSBzY2VuYXJpbyB3aGVyZSBURVNUX0YgYXBwZWFycyBiZWZvcmUgVEVTVCwg
YW5kCisvLyB0aGUgc2Vjb25kIG9uZSBjaGVja3Mgd2hlcmUgVEVTVCBhcHBlYXJzIGJlZm9yZSBU
RVNUX0YuCisKK2NsYXNzIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK1RFU1RfRihURVNUX0ZfYmVmb3JlX1RFU1RfaW5f
c2FtZV90ZXN0X2Nhc2UsIERlZmluZWRVc2luZ1RFU1RfRikge30KKworLy8gRXhwZWN0ZWQgdG8g
ZmFpbC4gIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIGNoZWNrIHRoYXQgR29vZ2xlIFRl
c3QKKy8vIGdlbmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KK1RFU1QoVEVTVF9GX2Jl
Zm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLCBEZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxkRmFp
bCkge30KKworY2xhc3MgVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlIDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKworVEVTVChURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2Ft
ZV90ZXN0X2Nhc2UsIERlZmluZWRVc2luZ1RFU1QpIHt9CisKKy8vIEV4cGVjdGVkIHRvIGZhaWwu
ICBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmlsZSB0byBjaGVjayB0aGF0IEdvb2dsZSBUZXN0Cisv
LyBnZW5lcmF0ZXMgdGhlIHJpZ2h0IGVycm9yIG1lc3NhZ2UuCitURVNUX0YoVEVTVF9iZWZvcmVf
VEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLCBEZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWls
KSB7Cit9CisKKy8vIFVzZWQgZm9yIHRlc3RpbmcgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBh
bmQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKS4KK2ludCBnbG9iYWxfaW50ZWdlciA9IDA7CisKKy8v
IFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBjYW4gcmVmZXJlbmNlIGdsb2Jh
bCB2YXJpYWJsZXMuCitURVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIENhblJlZmVyZW5j
ZUdsb2JhbFZhcmlhYmxlcykgeworICBnbG9iYWxfaW50ZWdlciA9IDA7CisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKHsKKyAgICBFWFBFQ1RfRVEoMSwgZ2xvYmFsX2ludGVnZXIpIDw8ICJFeHBl
Y3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOworICB9LCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBjYW4g
cmVmZXJlbmNlIGxvY2FsIHZhcmlhYmxlcworLy8gKHN0YXRpYyBvciBub3QpLgorVEVTVChFeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LCBDYW5SZWZlcmVuY2VMb2NhbFZhcmlhYmxlcykgeworICBp
bnQgbSA9IDA7CisgIHN0YXRpYyBpbnQgbjsKKyAgbiA9IDE7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKHsKKyAgICBFWFBFQ1RfRVEobSwgbikgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWls
dXJlLiI7CisgIH0sICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKK30KKworLy8gVGVz
dHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIHN1Y2NlZWRzIHdoZW4gdGhlcmUgaXMg
ZXhhY3RseQorLy8gb25lIG5vbi1mYXRhbCBmYWlsdXJlIGFuZCBubyBmYXRhbCBmYWlsdXJlLgor
VEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBTdWNjZWVkc1doZW5UaGVyZUlzT25lTm9u
ZmF0YWxGYWlsdXJlKSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKKyAgICBBRERfRkFJ
TFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOworICB9LCAiRXhwZWN0ZWQg
bm9uLWZhdGFsIGZhaWx1cmUuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZXJlIGlzIG5vCisvLyBub24tZmF0YWwgZmFpbHVyZS4K
K1RFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0
YWxGYWlsdXJlKSB7CisgIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKKyAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZXJlIGFyZSB0d28KKy8vIG5vbi1m
YXRhbCBmYWlsdXJlcy4KK1RFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVu
VGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1cmVzKSB7CisgIHByaW50ZigiKGV4cGVjdGluZyBhIGZh
aWx1cmUpXG4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIEFERF9GQUlMVVJF
KCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDEuIjsKKyAgICBBRERfRkFJTFVSRSgp
IDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSAyLiI7CisgIH0sICIiKTsKK30KKworLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgaXMg
b25lIGZhdGFsCisvLyBmYWlsdXJlLgorVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBG
YWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlKSB7CisgIHByaW50ZigiKGV4cGVjdGluZyBh
IGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIEZBSUwoKSA8
PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIHRo
YXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZSBzdGF0ZW1lbnQgYmVp
bmcKKy8vIHRlc3RlZCByZXR1cm5zLgorVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBG
YWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zKSB7CisgIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1
cmUpXG4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIHJldHVybjsKKyAgfSwg
IiIpOworfQorCisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworLy8gVGVzdHMgdGhhdCBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWluZworLy8g
dGVzdGVkIHRocm93cy4KK1RFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVu
U3RhdGVtZW50VGhyb3dzKSB7CisgIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsK
KyAgdHJ5IHsKKyAgICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAgICB0aHJvdyAwOwor
ICAgIH0sICIiKTsKKyAgfSBjYXRjaChpbnQpIHsgIC8vIE5PTElOVAorICB9Cit9CisKKyNlbmRp
ZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxf
RkFJTFVSRSgpIGNhbiByZWZlcmVuY2UgZ2xvYmFsIHZhcmlhYmxlcy4KK1RFU1QoRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdCwgQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzKSB7CisgIGdsb2JhbF9p
bnRlZ2VyID0gMDsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeworICAgIEFTU0VSVF9FUSgxLCBn
bG9iYWxfaW50ZWdlcikgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKKyAgfSwgIkV4cGVj
dGVkIGZhdGFsIGZhaWx1cmUuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoKSBjYW4gcmVmZXJlbmNlIGxvY2FsIHN0YXRpYworLy8gdmFyaWFibGVzLgorVEVTVChF
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBDYW5SZWZlcmVuY2VMb2NhbFN0YXRpY1ZhcmlhYmxlcykg
eworICBzdGF0aWMgaW50IG47CisgIG4gPSAxOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Cisg
ICAgQVNTRVJUX0VRKDAsIG4pIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7CisgIH0sICJF
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRB
TF9GQUlMVVJFKCkgc3VjY2VlZHMgd2hlbiB0aGVyZSBpcyBleGFjdGx5CisvLyBvbmUgZmF0YWwg
ZmFpbHVyZSBhbmQgbm8gbm9uLWZhdGFsIGZhaWx1cmUuCitURVNUKEV4cGVjdEZhdGFsRmFpbHVy
ZVRlc3QsIFN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUpIHsKKyAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoeworICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOwor
ICB9LCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBF
Q1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgaXMgbm8gZmF0YWwKKy8vIGZhaWx1
cmUuCitURVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlSXNOb0ZhdGFs
RmFpbHVyZSkgeworICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7CisgIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKHsKKyAgfSwgIiIpOworfQorCisvLyBBIGhlbHBlciBmb3IgZ2VuZXJh
dGluZyBhIGZhdGFsIGZhaWx1cmUuCit2b2lkIEZhdGFsRmFpbHVyZSgpIHsKKyAgRkFJTCgpIDw8
ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZXJlIGFyZSB0d28KKy8vIGZhdGFsIGZhaWx1cmVz
LgorVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFs
RmFpbHVyZXMpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRSh7CisgICAgRmF0YWxGYWlsdXJlKCk7CisgICAgRmF0YWxGYWlsdXJl
KCk7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgp
IGZhaWxzIHdoZW4gdGhlcmUgaXMgb25lIG5vbi1mYXRhbAorLy8gZmFpbHVyZS4KK1RFU1QoRXhw
ZWN0RmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZSkg
eworICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVy
ZS4iOworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
KSBmYWlscyB3aGVuIHRoZSBzdGF0ZW1lbnQgYmVpbmcKKy8vIHRlc3RlZCByZXR1cm5zLgorVEVT
VChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zKSB7Cisg
IHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoeworICAgIHJldHVybjsKKyAgfSwgIiIpOworfQorCisjaWYgR1RFU1RfSEFTX0VYQ0VQVElP
TlMKKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhl
IHN0YXRlbWVudCBiZWluZworLy8gdGVzdGVkIHRocm93cy4KK1RFU1QoRXhwZWN0RmF0YWxGYWls
dXJlVGVzdCwgRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzKSB7CisgIHByaW50ZigiKGV4cGVjdGlu
ZyBhIGZhaWx1cmUpXG4iKTsKKyAgdHJ5IHsKKyAgICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Cisg
ICAgICB0aHJvdyAwOworICAgIH0sICIiKTsKKyAgfSBjYXRjaChpbnQpIHsgIC8vIE5PTElOVAor
ICB9Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworLy8gVGhpcyAjaWZk
ZWYgYmxvY2sgdGVzdHMgdGhlIG91dHB1dCBvZiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgor
CitzdGQ6OnN0cmluZyBQYXJhbU5hbWVGdW5jKGNvbnN0IHRlc3Rpbmc6OlRlc3RQYXJhbUluZm88
c3RkOjpzdHJpbmc+JiBpbmZvKSB7CisgIHJldHVybiBpbmZvLnBhcmFtOworfQorCitjbGFzcyBQ
YXJhbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxzdGQ6OnN0cmluZz4gewor
fTsKKworVEVTVF9QKFBhcmFtVGVzdCwgU3VjY2VzcykgeworICBFWFBFQ1RfRVEoImEiLCBHZXRQ
YXJhbSgpKTsKK30KKworVEVTVF9QKFBhcmFtVGVzdCwgRmFpbHVyZSkgeworICBFWFBFQ1RfRVEo
ImIiLCBHZXRQYXJhbSgpKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7Cit9CisKK0lOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKFByaW50aW5nU3RyaW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgIFBh
cmFtVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlcyhzdGQ6OnN0
cmluZygiYSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtTmFtZUZ1bmMpOworCisv
LyBUaGlzICNpZmRlZiBibG9jayB0ZXN0cyB0aGUgb3V0cHV0IG9mIHR5cGVkIHRlc3RzLgorI2lm
IEdURVNUX0hBU19UWVBFRF9URVNUCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlw
ZWRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKworVFlQRURfVEVTVF9DQVNFKFR5
cGVkVGVzdCwgdGVzdGluZzo6VHlwZXM8aW50Pik7CisKK1RZUEVEX1RFU1QoVHlwZWRUZXN0LCBT
dWNjZXNzKSB7CisgIEVYUEVDVF9FUSgwLCBUeXBlUGFyYW0oKSk7Cit9CisKK1RZUEVEX1RFU1Qo
VHlwZWRUZXN0LCBGYWlsdXJlKSB7CisgIEVYUEVDVF9FUSgxLCBUeXBlUGFyYW0oKSkgPDwgIkV4
cGVjdGVkIGZhaWx1cmUiOworfQorCit0eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPGNoYXIsIGludD4g
VHlwZXNGb3JUZXN0V2l0aE5hbWVzOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5
cGVkVGVzdFdpdGhOYW1lcyA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHt9OworCitjbGFzcyBUeXBl
ZFRlc3ROYW1lcyB7CisgcHVibGljOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGlj
IHN0ZDo6c3RyaW5nIEdldE5hbWUoaW50IGkpIHsKKyAgICBpZiAodGVzdGluZzo6aW50ZXJuYWw6
OklzU2FtZTxULCBjaGFyPjo6dmFsdWUpCisgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoImNoYXJf
IikgKyA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoaSk7CisgICAgaWYgKHRlc3Rpbmc6OmludGVy
bmFsOjpJc1NhbWU8VCwgaW50Pjo6dmFsdWUpCisgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoImlu
dF8iKSArIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhpKTsKKyAgfQorfTsKKworVFlQRURfVEVT
VF9DQVNFKFR5cGVkVGVzdFdpdGhOYW1lcywgVHlwZXNGb3JUZXN0V2l0aE5hbWVzLCBUeXBlZFRl
c3ROYW1lcyk7CisKK1RZUEVEX1RFU1QoVHlwZWRUZXN0V2l0aE5hbWVzLCBTdWNjZXNzKSB7fQor
CitUWVBFRF9URVNUKFR5cGVkVGVzdFdpdGhOYW1lcywgRmFpbHVyZSkgeyBGQUlMKCk7IH0KKwor
I2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAorCisvLyBUaGlzICNpZmRlZiBibG9jayB0
ZXN0cyB0aGUgb3V0cHV0IG9mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKyNpZiBHVEVTVF9I
QVNfVFlQRURfVEVTVF9QCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZWRUZXN0
UCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKFR5cGVk
VGVzdFApOworCitUWVBFRF9URVNUX1AoVHlwZWRUZXN0UCwgU3VjY2VzcykgeworICBFWFBFQ1Rf
RVEoMFUsIFR5cGVQYXJhbSgpKTsKK30KKworVFlQRURfVEVTVF9QKFR5cGVkVGVzdFAsIEZhaWx1
cmUpIHsKKyAgRVhQRUNUX0VRKDFVLCBUeXBlUGFyYW0oKSkgPDwgIkV4cGVjdGVkIGZhaWx1cmUi
OworfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChUeXBlZFRlc3RQLCBTdWNjZXNzLCBG
YWlsdXJlKTsKKwordHlwZWRlZiB0ZXN0aW5nOjpUeXBlczx1bnNpZ25lZCBjaGFyLCB1bnNpZ25l
ZCBpbnQ+IFVuc2lnbmVkVHlwZXM7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChVbnNp
Z25lZCwgVHlwZWRUZXN0UCwgVW5zaWduZWRUeXBlcyk7CisKK2NsYXNzIFR5cGVkVGVzdFBOYW1l
cyB7CisgcHVibGljOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIHN0ZDo6c3Ry
aW5nIEdldE5hbWUoaW50IGkpIHsKKyAgICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxU
LCB1bnNpZ25lZCBjaGFyPjo6dmFsdWUpIHsKKyAgICAgIHJldHVybiBzdGQ6OnN0cmluZygidW5z
aWduZWRfY2hhcl8iKSArIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhpKTsKKyAgICB9CisgICAg
aWYgKHRlc3Rpbmc6OmludGVybmFsOjpJc1NhbWU8VCwgdW5zaWduZWQgaW50Pjo6dmFsdWUpIHsK
KyAgICAgIHJldHVybiBzdGQ6OnN0cmluZygidW5zaWduZWRfaW50XyIpICsgOjp0ZXN0aW5nOjpQ
cmludFRvU3RyaW5nKGkpOworICAgIH0KKyAgfQorfTsKKworSU5TVEFOVElBVEVfVFlQRURfVEVT
VF9DQVNFX1AoVW5zaWduZWRDdXN0b21OYW1lLCBUeXBlZFRlc3RQLCBVbnNpZ25lZFR5cGVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZWRUZXN0UE5hbWVzKTsKKworI2VuZGlm
ICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisKKyNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAor
CisvLyBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmlsZSB0byB2ZXJpZnkgdGhhdCB0ZXN0cyB3aG9z
ZSB0ZXN0IGNhc2UKKy8vIG5hbWUgZW5kcyB3aXRoIERlYXRoVGVzdCBhcmUgcnVuIGZpcnN0Lgor
CitURVNUKEFEZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0KSB7Cit9CisKKyMgaWYgR1RFU1RfSEFT
X1RZUEVEX1RFU1QKKworLy8gV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gdmVyaWZ5IHRo
YXQgdHlwZWQgdGVzdHMgd2hvc2UgdGVzdAorLy8gY2FzZSBuYW1lIGVuZHMgd2l0aCBEZWF0aFRl
c3QgYXJlIHJ1biBmaXJzdC4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBBVHlwZWRE
ZWF0aFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCit0eXBlZGVmIHRlc3Rpbmc6
OlR5cGVzPGludCwgZG91YmxlPiBOdW1lcmljVHlwZXM7CitUWVBFRF9URVNUX0NBU0UoQVR5cGVk
RGVhdGhUZXN0LCBOdW1lcmljVHlwZXMpOworCitUWVBFRF9URVNUKEFUeXBlZERlYXRoVGVzdCwg
U2hvdWxkUnVuRmlyc3QpIHsKK30KKworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QK
KworIyBpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisKKworLy8gV2UgcmVseSBvbiB0aGUgZ29s
ZGVuIGZpbGUgdG8gdmVyaWZ5IHRoYXQgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzCisvLyB3aG9z
ZSB0ZXN0IGNhc2UgbmFtZSBlbmRzIHdpdGggRGVhdGhUZXN0IGFyZSBydW4gZmlyc3QuCisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQVR5cGVQYXJhbURlYXRoVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0IHsKK307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKEFUeXBlUGFyYW1EZWF0aFRl
c3QpOworCitUWVBFRF9URVNUX1AoQVR5cGVQYXJhbURlYXRoVGVzdCwgU2hvdWxkUnVuRmlyc3Qp
IHsKK30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoQVR5cGVQYXJhbURlYXRoVGVzdCwg
U2hvdWxkUnVuRmlyc3QpOworCitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgQVR5
cGVQYXJhbURlYXRoVGVzdCwgTnVtZXJpY1R5cGVzKTsKKworIyBlbmRpZiAgLy8gR1RFU1RfSEFT
X1RZUEVEX1RFU1RfUAorCisjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCisKKy8vIFRl
c3RzIHZhcmlvdXMgZmFpbHVyZSBjb25kaXRpb25zIG9mCisvLyBFWFBFQ1RfeyxOT059RkFUQUxf
RkFJTFVSRXssX09OX0FMTF9USFJFQURTfS4KK2NsYXNzIEV4cGVjdEZhaWx1cmVUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgeworIHB1YmxpYzogIC8vIE11c3QgYmUgcHVibGljIGFuZCBub3Qg
cHJvdGVjdGVkIGR1ZSB0byBhIGJ1ZyBpbiBnKysgMy40LjIuCisgIGVudW0gRmFpbHVyZU1vZGUg
eworICAgIEZBVEFMX0ZBSUxVUkUsCisgICAgTk9ORkFUQUxfRkFJTFVSRQorICB9OworICBzdGF0
aWMgdm9pZCBBZGRGYWlsdXJlKEZhaWx1cmVNb2RlIGZhaWx1cmUpIHsKKyAgICBpZiAoZmFpbHVy
ZSA9PSBGQVRBTF9GQUlMVVJFKSB7CisgICAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZh
aWx1cmUuIjsKKyAgICB9IGVsc2UgeworICAgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQg
bm9uLWZhdGFsIGZhaWx1cmUuIjsKKyAgICB9CisgIH0KK307CisKK1RFU1RfRihFeHBlY3RGYWls
dXJlVGVzdCwgRXhwZWN0RmF0YWxGYWlsdXJlKSB7CisgIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1
cmUsIGJ1dCBzdWNjZWVkcy4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwor
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShTVUNDRUVEKCksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJl
LiIpOworICAvLyBFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLCBidXQgZ290IGEgbm9uLWZhdGFsIGZh
aWx1cmUuCisgIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoQWRkRmFpbHVyZShOT05GQVRBTF9GQUlMVVJFKSwgIkV4cGVjdGVkIG5vbi1m
YXRhbCAiCisgICAgICAgICAgICAgICAgICAgICAgICJmYWlsdXJlLiIpOworICAvLyBXcm9uZyBt
ZXNzYWdlLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9G
QVRBTF9GQUlMVVJFKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksICJTb21lIG90aGVyIGZhdGFs
IGZhaWx1cmUgIgorICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQuIik7Cit9CisKK1RF
U1RfRihFeHBlY3RGYWlsdXJlVGVzdCwgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlKSB7CisgIC8vIEV4
cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLCBidXQgc3VjY2VlZHMuCisgIHByaW50ZigiKGV4cGVj
dGluZyAxIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoU1VDQ0VFRCgp
LCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7CisgIC8vIEV4cGVjdGVkIG5vbi1mYXRh
bCBmYWlsdXJlLCBidXQgZ290IGEgZmF0YWwgZmFpbHVyZS4KKyAgcHJpbnRmKCIoZXhwZWN0aW5n
IDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlKEZB
VEFMX0ZBSUxVUkUpLCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKKyAgLy8gV3JvbmcgbWVz
c2FnZS4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpLCAiU29tZSBvdGhlciBu
b24tZmF0YWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbHVyZS4iKTsKK30KKwor
I2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKKworY2xhc3MgRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRz
VGVzdCA6IHB1YmxpYyBFeHBlY3RGYWlsdXJlVGVzdCB7CisgcHJvdGVjdGVkOgorICBzdGF0aWMg
dm9pZCBBZGRGYWlsdXJlSW5PdGhlclRocmVhZChGYWlsdXJlTW9kZSBmYWlsdXJlKSB7CisgICAg
VGhyZWFkV2l0aFBhcmFtPEZhaWx1cmVNb2RlPiB0aHJlYWQoJkFkZEZhaWx1cmUsIGZhaWx1cmUs
IE5VTEwpOworICAgIHRocmVhZC5Kb2luKCk7CisgIH0KK307CisKK1RFU1RfRihFeHBlY3RGYWls
dXJlV2l0aFRocmVhZHNUZXN0LCBFeHBlY3RGYXRhbEZhaWx1cmUpIHsKKyAgLy8gV2Ugb25seSBp
bnRlcmNlcHQgdGhlIGN1cnJlbnQgdGhyZWFkLgorICBwcmludGYoIihleHBlY3RpbmcgMiBmYWls
dXJlcylcbiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlSW5PdGhlclRocmVh
ZChGQVRBTF9GQUlMVVJFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuIik7Cit9CisKK1RFU1RfRihFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LCBF
eHBlY3ROb25GYXRhbEZhaWx1cmUpIHsKKyAgLy8gV2Ugb25seSBpbnRlcmNlcHQgdGhlIGN1cnJl
bnQgdGhyZWFkLgorICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOworICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlSW5PdGhlclRocmVhZChOT05GQVRBTF9GQUlM
VVJFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWls
dXJlLiIpOworfQorCit0eXBlZGVmIEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QgU2NvcGVk
RmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0OworCisvLyBUZXN0cyB0aGF0IHRoZSBTY29w
ZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlciBvbmx5IGNhdGNoZXMgZmFpbHVyZXMgZnJvbQor
Ly8gdGhlIGN1cnJlbnQgdGhyZWFkIGlmIGl0IGlzIGluc3RhbnRpYXRlZCB3aXRoIElOVEVSQ0VQ
VF9PTkxZX0NVUlJFTlRfVEhSRUFELgorVEVTVF9GKFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJl
cG9ydGVyVGVzdCwgSW50ZXJjZXB0T25seUN1cnJlbnRUaHJlYWQpIHsKKyAgcHJpbnRmKCIoZXhw
ZWN0aW5nIDIgZmFpbHVyZXMpXG4iKTsKKyAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOwor
ICB7CisgICAgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIgcmVwb3J0ZXIoCisgICAg
ICAgIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpJTlRFUkNFUFRfT05MWV9DVVJS
RU5UX1RIUkVBRCwKKyAgICAgICAgJnJlc3VsdHMpOworICAgIEFkZEZhaWx1cmVJbk90aGVyVGhy
ZWFkKEZBVEFMX0ZBSUxVUkUpOworICAgIEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKE5PTkZBVEFM
X0ZBSUxVUkUpOworICB9CisgIC8vIFRoZSB0d28gZmFpbHVyZXMgc2hvdWxkIG5vdCBoYXZlIGJl
ZW4gaW50ZXJjZXB0ZWQuCisgIEVYUEVDVF9FUSgwLCByZXN1bHRzLnNpemUoKSkgPDwgIlRoaXMg
c2hvdWxkbid0IGZhaWwuIjsKK30KKworI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCisK
K1RFU1RfRihFeHBlY3RGYWlsdXJlVGVzdCwgRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRz
KSB7CisgIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4KKyAgcHJpbnRm
KCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9B
TExfVEhSRUFEUyhTVUNDRUVEKCksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOworICAvLyBF
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLCBidXQgZ290IGEgbm9uLWZhdGFsIGZhaWx1cmUuCisgIHBy
aW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVf
T05fQUxMX1RIUkVBRFMoQWRkRmFpbHVyZShOT05GQVRBTF9GQUlMVVJFKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIp
OworICAvLyBXcm9uZyBtZXNzYWdlLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxu
Iik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUoRkFU
QUxfRkFJTFVSRSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb21l
IG90aGVyIGZhdGFsIGZhaWx1cmUgZXhwZWN0ZWQuIik7Cit9CisKK1RFU1RfRihFeHBlY3RGYWls
dXJlVGVzdCwgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzKSB7CisgIC8vIEV4cGVj
dGVkIG5vbi1mYXRhbCBmYWlsdXJlLCBidXQgc3VjY2VlZHMuCisgIHByaW50ZigiKGV4cGVjdGlu
ZyAxIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVB
RFMoU1VDQ0VFRCgpLCAiRXhwZWN0ZWQgbm9uLWZhdGFsICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImZhaWx1cmUuIik7CisgIC8vIEV4cGVjdGVkIG5vbi1mYXRh
bCBmYWlsdXJlLCBidXQgZ290IGEgZmF0YWwgZmFpbHVyZS4KKyAgcHJpbnRmKCIoZXhwZWN0aW5n
IDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFE
UyhBZGRGYWlsdXJlKEZBVEFMX0ZBSUxVUkUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKKyAgLy8gV3JvbmcgbWVz
c2FnZS4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU29tZSBvdGhlciBu
b24tZmF0YWwgZmFpbHVyZS4iKTsKK30KKworCisvLyBUd28gdGVzdCBlbnZpcm9ubWVudHMgZm9y
IHRlc3RpbmcgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KCkuCisKK2NsYXNzIEZv
b0Vudmlyb25tZW50IDogcHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50IHsKKyBwdWJsaWM6Cisg
IHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBwcmludGYoIiVzIiwgIkZvb0Vudmlyb25tZW50
OjpTZXRVcCgpIGNhbGxlZC5cbiIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkg
eworICAgIHByaW50ZigiJXMiLCAiRm9vRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLlxu
Iik7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7CisgIH0KK307CisK
K2NsYXNzIEJhckVudmlyb25tZW50IDogcHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50IHsKKyBw
dWJsaWM6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBwcmludGYoIiVzIiwgIkJhckVu
dmlyb25tZW50OjpTZXRVcCgpIGNhbGxlZC5cbiIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRl
YXJEb3duKCkgeworICAgIHByaW50ZigiJXMiLCAiQmFyRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkg
Y2FsbGVkLlxuIik7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZh
aWx1cmUuIjsKKyAgfQorfTsKKworLy8gVGhlIG1haW4gZnVuY3Rpb24uCisvLworLy8gVGhlIGlk
ZWEgaXMgdG8gdXNlIEdvb2dsZSBUZXN0IHRvIHJ1biBhbGwgdGhlIHRlc3RzIHdlIGhhdmUgZGVm
aW5lZCAoc29tZQorLy8gb2YgdGhlbSBhcmUgaW50ZW5kZWQgdG8gZmFpbCksIGFuZCB0aGVuIGNv
bXBhcmUgdGhlIHRlc3QgcmVzdWx0cworLy8gd2l0aCB0aGUgImdvbGRlbiIgZmlsZS4KK2ludCBt
YWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKHByaW50
X3RpbWUpID0gZmFsc2U7CisKKyAgLy8gV2UganVzdCBydW4gdGhlIHRlc3RzLCBrbm93aW5nIHNv
bWUgb2YgdGhlbSBhcmUgaW50ZW5kZWQgdG8gZmFpbC4KKyAgLy8gV2Ugd2lsbCB1c2UgYSBzZXBh
cmF0ZSBQeXRob24gc2NyaXB0IHRvIGNvbXBhcmUgdGhlIG91dHB1dCBvZgorICAvLyB0aGlzIHBy
b2dyYW0gd2l0aCB0aGUgZ29sZGVuIGZpbGUuCisKKyAgLy8gSXQncyBoYXJkIHRvIHRlc3QgSW5p
dEdvb2dsZVRlc3QoKSBkaXJlY3RseSwgYXMgaXQgaGFzIG1hbnkKKyAgLy8gZ2xvYmFsIHNpZGUg
ZWZmZWN0cy4gIFRoZSBmb2xsb3dpbmcgbGluZSBzZXJ2ZXMgYXMgYSBzYW5pdHkgdGVzdAorICAv
LyBmb3IgaXQuCisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgYm9v
bCBpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMgPQorICAgICAgc3Rk
Ojpjb3VudChhcmd2LCBhcmd2ICsgYXJnYywKKyAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmco
ImludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cyIpKSA+IDA7CisKKyNp
ZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OkdURVNUX0ZM
QUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpICE9ICIiKSB7CisgICAgLy8gU2tpcCB0aGUgdXN1
YWwgb3V0cHV0IGNhcHR1cmluZyBpZiB3ZSdyZSBydW5uaW5nIGFzIHRoZSBjaGlsZAorICAgIC8v
IHByb2Nlc3Mgb2YgYW4gdGhyZWFkc2FmZS1zdHlsZSBkZWF0aCB0ZXN0LgorIyBpZiBHVEVTVF9P
U19XSU5ET1dTCisgICAgcG9zaXg6OkZSZW9wZW4oIm51bDoiLCAidyIsIHN0ZG91dCk7CisjIGVs
c2UKKyAgICBwb3NpeDo6RlJlb3BlbigiL2Rldi9udWxsIiwgInciLCBzdGRvdXQpOworIyBlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XUworICAgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CisgIH0K
KyNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworICBpZiAoaW50ZXJuYWxfc2tpcF9l
bnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzKQorICAgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7
CisKKyAgLy8gUmVnaXN0ZXJzIHR3byBnbG9iYWwgdGVzdCBlbnZpcm9ubWVudHMuCisgIC8vIFRo
ZSBnb2xkZW4gZmlsZSB2ZXJpZmllcyB0aGF0IHRoZXkgYXJlIHNldCB1cCBpbiB0aGUgb3JkZXIg
dGhleQorICAvLyBhcmUgcmVnaXN0ZXJlZCwgYW5kIHRvcm4gZG93biBpbiB0aGUgcmV2ZXJzZSBv
cmRlci4KKyAgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBGb29FbnZpcm9u
bWVudCk7CisgIHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgQmFyRW52aXJv
bm1lbnQpOworI2lmIF9NU0NfVkVSCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8o
KSAgLy8gIDQxMjcKKyNlbmRpZiAgLy8gLiBfTVNDX1ZFUiAgICAKKyAgcmV0dXJuIFJ1bkFsbFRl
c3RzKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3QucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmEwODQ3N2E3N2ViZGYwYWE1NWYyMzQ0NGFiZDZiODM5ZDkwYmE0MwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1w
YXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdC5weQpAQCAtMCwwICsxLDYzIEBACisjIS91c3Iv
YmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIwor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisj
IGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisj
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlZlcmlmaWVzIHRoYXQgR29vZ2xl
IFRlc3Qgd2FybnMgdGhlIHVzZXIgd2hlbiBub3QgaW5pdGlhbGl6ZWQgcHJvcGVybHkuIiIiCisK
K2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKK2JpbmFyeV9uYW1lID0gJ2dvb2dsZXRlc3QtcGFy
YW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3RfJworQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
R2V0VGVzdEV4ZWN1dGFibGVQYXRoKGJpbmFyeV9uYW1lKQorCisKK2RlZiBBc3NlcnQoY29uZGl0
aW9uKToKKyAgaWYgbm90IGNvbmRpdGlvbjoKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCisK
K2RlZiBUZXN0RXhpdENvZGVBbmRPdXRwdXQoY29tbWFuZCk6CisgICIiIlJ1bnMgdGhlIGdpdmVu
IGNvbW1hbmQgYW5kIHZlcmlmaWVzIGl0cyBleGl0IGNvZGUgYW5kIG91dHB1dC4iIiIKKworICBl
cnIgPSAoJ1BhcmFtZXRlcml6ZWQgdGVzdCBuYW1lIFwnIkludmFsaWRXaXRoUXVvdGVzIlwnIGlz
IGludmFsaWQnKQorCisgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkK
KyAgQXNzZXJ0KHAudGVybWluYXRlZF9ieV9zaWduYWwpCisKKyAgIyBWZXJpZnkgdGhlIG91dHB1
dCBtZXNzYWdlIGNvbnRhaW5zIGFwcHJvcHJpYXRlIG91dHB1dAorICBBc3NlcnQoZXJyIGluIHAu
b3V0cHV0KQorCisKK2NsYXNzIEdUZXN0UGFyYW1UZXN0SW52YWxpZE5hbWUxVGVzdChndGVzdF90
ZXN0X3V0aWxzLlRlc3RDYXNlKToKKworICBkZWYgdGVzdEV4aXRDb2RlQW5kT3V0cHV0KHNlbGYp
OgorICAgIFRlc3RFeGl0Q29kZUFuZE91dHB1dChDT01NQU5EKQorCisKK2lmIF9fbmFtZV9fID09
ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5h
bWUxLXRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBh
cmFtLXRlc3QtaW52YWxpZC1uYW1lMS10ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTk1MTU1YjIzYTc4
NzFkYjVkMjU0OWEwZTlmOTA1MDc1YTkzOTk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMS10
ZXN0Xy5jYwpAQCAtMCwwICsxLDUwIEBACisvLyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4K
Ky8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
Ky8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7
CitjbGFzcyBEdW1teVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGNvbnN0
IGNoYXIgKj4ge307CisKK1RFU1RfUChEdW1teVRlc3QsIER1bW15KSB7Cit9CisKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKEludmFsaWRUZXN0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IER1bW15VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKCJJ
bnZhbGlkV2l0aFF1b3RlcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpQ
cmludFRvU3RyaW5nUGFyYW1OYW1lKCkpOworCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJn
YywgYXJndik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQt
bmFtZTItdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1w
YXJhbS10ZXN0LWludmFsaWQtbmFtZTItdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjgzOGY0NjMyMjkx
ZDFjYjc4ZTRhMTFlYzNhYjBjNzczYjk0ZDVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10
ZXN0LnB5CkBAIC0wLDAgKzEsNjIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5
cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworIiIiVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCB3YXJucyB0aGUgdXNlciB3aGVu
IG5vdCBpbml0aWFsaXplZCBwcm9wZXJseS4iIiIKKworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMK
KworYmluYXJ5X25hbWUgPSAnZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTItdGVz
dF8nCitDT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoYmlu
YXJ5X25hbWUpCisKKworZGVmIEFzc2VydChjb25kaXRpb24pOgorICBpZiBub3QgY29uZGl0aW9u
OgorICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisKKworZGVmIFRlc3RFeGl0Q29kZUFuZE91dHB1
dChjb21tYW5kKToKKyAgIiIiUnVucyB0aGUgZ2l2ZW4gY29tbWFuZCBhbmQgdmVyaWZpZXMgaXRz
IGV4aXQgY29kZSBhbmQgb3V0cHV0LiIiIgorCisgIGVyciA9ICgnRHVwbGljYXRlIHBhcmFtZXRl
cml6ZWQgdGVzdCBuYW1lIFwnYVwnJykKKworICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9j
ZXNzKGNvbW1hbmQpCisgIEFzc2VydChwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsKQorCisgICMgQ2hl
Y2sgZm9yIGFwcHJvcHJpYXRlIG91dHB1dAorICBBc3NlcnQoZXJyIGluIHAub3V0cHV0KQorCisK
K2NsYXNzIEdUZXN0UGFyYW1UZXN0SW52YWxpZE5hbWUyVGVzdChndGVzdF90ZXN0X3V0aWxzLlRl
c3RDYXNlKToKKworICBkZWYgdGVzdEV4aXRDb2RlQW5kT3V0cHV0KHNlbGYpOgorICAgIFRlc3RF
eGl0Q29kZUFuZE91dHB1dChDT01NQU5EKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgor
ICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0Xy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFs
aWQtbmFtZTItdGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWYwOTM0OTBlOWRhMmYwMmVkMjhhMmQwNzEy
NDQ1ZTI0MTdjYmRhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTItdGVzdF8uY2MKQEAgLTAs
MCArMSw1NSBAQAorLy8gQ29weXJpZ2h0IDIwMTUsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0Ogor
Ly8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisv
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworY2xhc3MgRHVtbXlU
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBjaGFyICo+IHt9Owor
CitzdGQ6OnN0cmluZyBTdHJpbmdQYXJhbVRlc3RTdWZmaXgoCisgICAgY29uc3QgdGVzdGluZzo6
VGVzdFBhcmFtSW5mbzxjb25zdCBjaGFyKj4mIGluZm8pIHsKKyAgcmV0dXJuIHN0ZDo6c3RyaW5n
KGluZm8ucGFyYW0pOworfQorCitURVNUX1AoRHVtbXlUZXN0LCBEdW1teSkgeworfQorCitJTlNU
QU5USUFURV9URVNUX0NBU0VfUChEdXBsaWNhdGVUZXN0TmFtZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICBEdW1teVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZh
bHVlcygiYSIsICJiIiwgImEiLCAiYyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5n
UGFyYW1UZXN0U3VmZml4KTsKK30gIC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqYXJndltdKSB7CisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsK
KyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mNzg5Y2FiMjcwNzQxNGM0NjQ4NDk2ZDdiOWZiYWI0ZmU1MzFmMGI3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFt
LXRlc3QtdGVzdC5jYwpAQCAtMCwwICsxLDExMDkgQEAKKy8vIENvcHlyaWdodCAyMDA4LCBHb29n
bGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8KKy8vIFRlc3RzIGZvciBHb29nbGUgVGVzdCBpdHNl
bGYuIFRoaXMgZmlsZSB2ZXJpZmllcyB0aGF0IHRoZSBwYXJhbWV0ZXIKKy8vIGdlbmVyYXRvcnMg
b2JqZWN0cyBwcm9kdWNlIGNvcnJlY3QgcGFyYW1ldGVyIHNlcXVlbmNlcyBhbmQgdGhhdAorLy8g
R29vZ2xlIFRlc3QgcnVudGltZSBpbnN0YW50aWF0ZXMgY29ycmVjdCB0ZXN0cyBmcm9tIHRob3Nl
IHNlcXVlbmNlcy4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyMgaW5jbHVkZSA8YWxn
b3JpdGhtPgorIyBpbmNsdWRlIDxpb3N0cmVhbT4KKyMgaW5jbHVkZSA8bGlzdD4KKyMgaW5jbHVk
ZSA8c3N0cmVhbT4KKyMgaW5jbHVkZSA8c3RyaW5nPgorIyBpbmNsdWRlIDx2ZWN0b3I+CisKKyMg
aW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIiAgLy8gZm9yIFVuaXRUZXN0T3B0aW9u
cworIyBpbmNsdWRlICJ0ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmgiCisKK3VzaW5n
IDo6c3RkOjp2ZWN0b3I7Cit1c2luZyA6OnN0ZDo6c29ydDsKKwordXNpbmcgOjp0ZXN0aW5nOjpB
ZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQ7Cit1c2luZyA6OnRlc3Rpbmc6OkJvb2w7Cit1c2luZyA6
OnRlc3Rpbmc6Ok1lc3NhZ2U7Cit1c2luZyA6OnRlc3Rpbmc6OlJhbmdlOwordXNpbmcgOjp0ZXN0
aW5nOjpUZXN0V2l0aFBhcmFtOwordXNpbmcgOjp0ZXN0aW5nOjpWYWx1ZXM7Cit1c2luZyA6OnRl
c3Rpbmc6OlZhbHVlc0luOworCisjIGlmIEdURVNUX0hBU19DT01CSU5FCit1c2luZyA6OnRlc3Rp
bmc6OkNvbWJpbmU7Cit1c2luZyA6OnRlc3Rpbmc6OmdldDsKK3VzaW5nIDo6dGVzdGluZzo6bWFr
ZV90dXBsZTsKK3VzaW5nIDo6dGVzdGluZzo6dHVwbGU7CisjIGVuZGlmICAvLyBHVEVTVF9IQVNf
Q09NQklORQorCit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVyYXRvcjsKK3Vz
aW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczsKKworLy8gUHJpbnRzIGEg
dmFsdWUgdG8gYSBzdHJpbmcuCisvLworLy8gRklYTUU6IHJlbW92ZSBQcmludFZhbHVlKCkgd2hl
biB3ZSBtb3ZlIG1hdGNoZXJzIGFuZAorLy8gRVhQRUNUX1RIQVQoKSBmcm9tIEdvb2dsZSBNb2Nr
IHRvIEdvb2dsZSBUZXN0LiAgQXQgdGhhdCB0aW1lLCB3ZQorLy8gY2FuIHdyaXRlIEVYUEVDVF9U
SEFUKHgsIEVxKHkpKSB0byBjb21wYXJlIHR3byB0dXBsZXMgeCBhbmQgeSwgYXMKKy8vIEVYUEVD
VF9USEFUKCkgYW5kIHRoZSBtYXRjaGVycyBrbm93IGhvdyB0byBwcmludCB0dXBsZXMuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KKzo6c3RkOjpzdHJpbmcgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1
ZSkgeworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgc3RyZWFtIDw8IHZhbHVlOwor
ICByZXR1cm4gc3RyZWFtLnN0cigpOworfQorCisjIGlmIEdURVNUX0hBU19DT01CSU5FCisKKy8v
IFRoZXNlIG92ZXJsb2FkcyBhbGxvdyBwcmludGluZyB0dXBsZXMgaW4gb3VyIHRlc3RzLiAgV2Ug
Y2Fubm90CisvLyBkZWZpbmUgYW4gb3BlcmF0b3I8PCBmb3IgdHVwbGVzLCBhcyB0aGF0IGRlZmlu
aXRpb24gbmVlZHMgdG8gYmUgaW4KKy8vIHRoZSBzdGQgbmFtZXNwYWNlIGluIG9yZGVyIHRvIGJl
IHBpY2tlZCB1cCBieSBHb29nbGUgVGVzdCB2aWEKKy8vIEFyZ3VtZW50LURlcGVuZGVudCBMb29r
dXAsIHlldCBkZWZpbmluZyBhbnl0aGluZyBpbiB0aGUgc3RkCisvLyBuYW1lc3BhY2UgaW4gbm9u
LVNUTCBjb2RlIGlzIHVuZGVmaW5lZCBiZWhhdmlvci4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMj4KKzo6c3RkOjpzdHJpbmcgUHJpbnRWYWx1ZShjb25zdCB0dXBsZTxUMSwg
VDI+JiB2YWx1ZSkgeworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgc3RyZWFtIDw8
ICIoIiA8PCBnZXQ8MD4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDE+KHZhbHVlKSA8PCAiKSI7Cisg
IHJldHVybiBzdHJlYW0uc3RyKCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDIsIHR5cGVuYW1lIFQzPgorOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKGNvbnN0IHR1cGxl
PFQxLCBUMiwgVDM+JiB2YWx1ZSkgeworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAg
c3RyZWFtIDw8ICIoIiA8PCBnZXQ8MD4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDE+KHZhbHVlKQor
ICAgICAgICAgPDwgIiwgIjw8IGdldDwyPih2YWx1ZSkgPDwgIikiOworICByZXR1cm4gc3RyZWFt
LnN0cigpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgICAgICAgIHR5cGVuYW1lIFQ2LCB0
eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTA+Cis6OnN0
ZDo6c3RyaW5nIFByaW50VmFsdWUoCisgICAgY29uc3QgdHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4LCBUOSwgVDEwPiYgdmFsdWUpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBz
dHJlYW07CisgIHN0cmVhbSA8PCAiKCIgPDwgZ2V0PDA+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDwx
Pih2YWx1ZSkKKyAgICAgICAgIDw8ICIsICI8PCBnZXQ8Mj4odmFsdWUpIDw8ICIsICIgPDwgZ2V0
PDM+KHZhbHVlKQorICAgICAgICAgPDwgIiwgIjw8IGdldDw0Pih2YWx1ZSkgPDwgIiwgIiA8PCBn
ZXQ8NT4odmFsdWUpCisgICAgICAgICA8PCAiLCAiPDwgZ2V0PDY+KHZhbHVlKSA8PCAiLCAiIDw8
IGdldDw3Pih2YWx1ZSkKKyAgICAgICAgIDw8ICIsICI8PCBnZXQ8OD4odmFsdWUpIDw8ICIsICIg
PDwgZ2V0PDk+KHZhbHVlKSA8PCAiKSI7CisgIHJldHVybiBzdHJlYW0uc3RyKCk7Cit9CisKKyMg
ZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCisKKy8vIFZlcmlmaWVzIHRoYXQgYSBzZXF1ZW5j
ZSBnZW5lcmF0ZWQgYnkgdGhlIGdlbmVyYXRvciBhbmQgYWNjZXNzZWQKKy8vIHZpYSB0aGUgaXRl
cmF0b3Igb2JqZWN0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIG9uZSB1c2luZyBHb29nbGUgVGVzdAor
Ly8gYXNzZXJ0aW9ucy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KK3ZvaWQgVmVy
aWZ5R2VuZXJhdG9yKGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ+JiBnZW5lcmF0b3IsCisgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUICgmZXhwZWN0ZWRfdmFsdWVzKVtOXSkgeworICB0eXBlbmFt
ZSBQYXJhbUdlbmVyYXRvcjxUPjo6aXRlcmF0b3IgaXQgPSBnZW5lcmF0b3IuYmVnaW4oKTsKKyAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBOOyArK2kpIHsKKyAgICBBU1NFUlRfRkFMU0UoaXQgPT0g
Z2VuZXJhdG9yLmVuZCgpKQorICAgICAgICA8PCAiQXQgZWxlbWVudCAiIDw8IGkgPDwgIiB3aGVu
IGFjY2Vzc2luZyB2aWEgYW4gaXRlcmF0b3IgIgorICAgICAgICA8PCAiY3JlYXRlZCB3aXRoIHRo
ZSBjb3B5IGNvbnN0cnVjdG9yLlxuIjsKKyAgICAvLyBXZSBjYW5ub3QgdXNlIEVYUEVDVF9FUSgp
IGhlcmUgYXMgdGhlIHZhbHVlcyBtYXkgYmUgdHVwbGVzLAorICAgIC8vIHdoaWNoIGRvbid0IHN1
cHBvcnQgPDwuCisgICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWRfdmFsdWVzW2ldID09ICppdCkKKyAg
ICAgICAgPDwgIndoZXJlIGkgaXMgIiA8PCBpCisgICAgICAgIDw8ICIsIGV4cGVjdGVkX3ZhbHVl
c1tpXSBpcyAiIDw8IFByaW50VmFsdWUoZXhwZWN0ZWRfdmFsdWVzW2ldKQorICAgICAgICA8PCAi
LCAqaXQgaXMgIiA8PCBQcmludFZhbHVlKCppdCkKKyAgICAgICAgPDwgIiwgYW5kICdpdCcgaXMg
YW4gaXRlcmF0b3IgY3JlYXRlZCB3aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9yLlxuIjsKKyAgICAr
K2l0OworICB9CisgIEVYUEVDVF9UUlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSkKKyAgICAgICAg
PDwgIkF0IHRoZSBwcmVzdW1lZCBlbmQgb2Ygc2VxdWVuY2Ugd2hlbiBhY2Nlc3NpbmcgdmlhIGFu
IGl0ZXJhdG9yICIKKyAgICAgICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rv
ci5cbiI7CisKKyAgLy8gVGVzdCB0aGUgaXRlcmF0b3IgYXNzaWdubWVudC4gVGhlIGZvbGxvd2lu
ZyBsaW5lcyB2ZXJpZnkgdGhhdAorICAvLyB0aGUgc2VxdWVuY2UgYWNjZXNzZWQgdmlhIGFuIGl0
ZXJhdG9yIGluaXRpYWxpemVkIHZpYSB0aGUKKyAgLy8gYXNzaWdubWVudCBvcGVyYXRvciAoYXMg
b3Bwb3NlZCB0byBhIGNvcHkgY29uc3RydWN0b3IpIG1hdGNoZXMKKyAgLy8ganVzdCB0aGUgc2Ft
ZS4KKyAgaXQgPSBnZW5lcmF0b3IuYmVnaW4oKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBO
OyArK2kpIHsKKyAgICBBU1NFUlRfRkFMU0UoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKQorICAgICAg
ICA8PCAiQXQgZWxlbWVudCAiIDw8IGkgPDwgIiB3aGVuIGFjY2Vzc2luZyB2aWEgYW4gaXRlcmF0
b3IgIgorICAgICAgICA8PCAiY3JlYXRlZCB3aXRoIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLlxu
IjsKKyAgICBFWFBFQ1RfVFJVRShleHBlY3RlZF92YWx1ZXNbaV0gPT0gKml0KQorICAgICAgICA8
PCAid2hlcmUgaSBpcyAiIDw8IGkKKyAgICAgICAgPDwgIiwgZXhwZWN0ZWRfdmFsdWVzW2ldIGlz
ICIgPDwgUHJpbnRWYWx1ZShleHBlY3RlZF92YWx1ZXNbaV0pCisgICAgICAgIDw8ICIsICppdCBp
cyAiIDw8IFByaW50VmFsdWUoKml0KQorICAgICAgICA8PCAiLCBhbmQgJ2l0JyBpcyBhbiBpdGVy
YXRvciBjcmVhdGVkIHdpdGggdGhlIGNvcHkgY29uc3RydWN0b3IuXG4iOworICAgICsraXQ7Cisg
IH0KKyAgRVhQRUNUX1RSVUUoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKQorICAgICAgICA8PCAiQXQg
dGhlIHByZXN1bWVkIGVuZCBvZiBzZXF1ZW5jZSB3aGVuIGFjY2Vzc2luZyB2aWEgYW4gaXRlcmF0
b3IgIgorICAgICAgICA8PCAiY3JlYXRlZCB3aXRoIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLlxu
IjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFZlcmlmeUdlbmVyYXRvcklzRW1w
dHkoY29uc3QgUGFyYW1HZW5lcmF0b3I8VD4mIGdlbmVyYXRvcikgeworICB0eXBlbmFtZSBQYXJh
bUdlbmVyYXRvcjxUPjo6aXRlcmF0b3IgaXQgPSBnZW5lcmF0b3IuYmVnaW4oKTsKKyAgRVhQRUNU
X1RSVUUoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKTsKKworICBpdCA9IGdlbmVyYXRvci5iZWdpbigp
OworICBFWFBFQ1RfVFJVRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpOworfQorCisvLyBHZW5lcmF0
b3IgdGVzdHMuIFRoZXkgdGVzdCB0aGF0IGVhY2ggb2YgdGhlIHByb3ZpZGVkIGdlbmVyYXRvciBm
dW5jdGlvbnMKKy8vIGdlbmVyYXRlcyBhbiBleHBlY3RlZCBzZXF1ZW5jZSBvZiB2YWx1ZXMuIFRo
ZSBnZW5lcmFsIHRlc3QgcGF0dGVybgorLy8gaW5zdGFudGlhdGVzIGEgZ2VuZXJhdG9yIHVzaW5n
IG9uZSBvZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9ucywKKy8vIGNoZWNrcyB0aGUgc2VxdWVuY2Ug
cHJvZHVjZWQgYnkgdGhlIGdlbmVyYXRvciB1c2luZyBpdHMgaXRlcmF0b3IgQVBJLAorLy8gYW5k
IHRoZW4gcmVzZXRzIHRoZSBpdGVyYXRvciBiYWNrIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNl
cXVlbmNlCisvLyBhbmQgY2hlY2tzIHRoZSBzZXF1ZW5jZSBhZ2Fpbi4KKworLy8gVGVzdHMgdGhh
dCBpdGVyYXRvcnMgcHJvZHVjZWQgYnkgZ2VuZXJhdG9yIGZ1bmN0aW9ucyBjb25mb3JtIHRvIHRo
ZQorLy8gRm9yd2FyZEl0ZXJhdG9yIGNvbmNlcHQuCitURVNUKEl0ZXJhdG9yVGVzdCwgUGFyYW1J
dGVyYXRvckNvbmZvcm1zVG9Gb3J3YXJkSXRlcmF0b3JDb25jZXB0KSB7CisgIGNvbnN0IFBhcmFt
R2VuZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgMTApOworICBQYXJhbUdlbmVyYXRvcjxpbnQ+
OjppdGVyYXRvciBpdCA9IGdlbi5iZWdpbigpOworCisgIC8vIFZlcmlmaWVzIHRoYXQgaXRlcmF0
b3IgaW5pdGlhbGl6YXRpb24gd29ya3MgYXMgZXhwZWN0ZWQuCisgIFBhcmFtR2VuZXJhdG9yPGlu
dD46Oml0ZXJhdG9yIGl0MiA9IGl0OworICBFWFBFQ1RfVFJVRSgqaXQgPT0gKml0MikgPDwgIklu
aXRpYWxpemVkIGl0ZXJhdG9ycyBtdXN0IHBvaW50IHRvIHRoZSAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiZWxlbWVudCBzYW1lIGFzIGl0cyBzb3VyY2UgcG9pbnRzIHRvIjsKKwor
ICAvLyBWZXJpZmllcyB0aGF0IGl0ZXJhdG9yIGFzc2lnbm1lbnQgd29ya3MgYXMgZXhwZWN0ZWQu
CisgICsraXQ7CisgIEVYUEVDVF9GQUxTRSgqaXQgPT0gKml0Mik7CisgIGl0MiA9IGl0OworICBF
WFBFQ1RfVFJVRSgqaXQgPT0gKml0MikgPDwgIkFzc2lnbmVkIGl0ZXJhdG9ycyBtdXN0IHBvaW50
IHRvIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiZWxlbWVudCBzYW1lIGFz
IGl0cyBzb3VyY2UgcG9pbnRzIHRvIjsKKworICAvLyBWZXJpZmllcyB0aGF0IHByZWZpeCBvcGVy
YXRvcisrKCkgcmV0dXJucyAqdGhpcy4KKyAgRVhQRUNUX0VRKCZpdCwgJigrK2l0KSkgPDwgIlJl
c3VsdCBvZiB0aGUgcHJlZml4IG9wZXJhdG9yKysgbXVzdCBiZSAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIDw8ICJyZWZlciB0byB0aGUgb3JpZ2luYWwgb2JqZWN0IjsKKworICAvLyBWZXJp
ZmllcyB0aGF0IHRoZSByZXN1bHQgb2YgdGhlIHBvc3RmaXggb3BlcmF0b3IrKyBwb2ludHMgdG8g
dGhlIHZhbHVlCisgIC8vIHBvaW50ZWQgdG8gYnkgdGhlIG9yaWdpbmFsIGl0ZXJhdG9yLgorICBp
bnQgb3JpZ2luYWxfdmFsdWUgPSAqaXQ7ICAvLyBIYXZlIHRvIGNvbXB1dGUgaXQgb3V0c2lkZSBv
ZiBtYWNybyBjYWxsIHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVuYWZm
ZWN0ZWQgYnkgdGhlIHBhcmFtZXRlciBldmFsdWF0aW9uIG9yZGVyLgorICBFWFBFQ1RfRVEob3Jp
Z2luYWxfdmFsdWUsICooaXQrKykpOworCisgIC8vIFZlcmlmaWVzIHRoYXQgcHJlZml4IGFuZCBw
b3N0Zml4IG9wZXJhdG9yKysoKSBhZHZhbmNlIGFuIGl0ZXJhdG9yCisgIC8vIGFsbCB0aGUgc2Ft
ZS4KKyAgaXQyID0gaXQ7CisgICsraXQ7CisgICsraXQyOworICBFWFBFQ1RfVFJVRSgqaXQgPT0g
Kml0Mik7Cit9CisKKy8vIFRlc3RzIHRoYXQgUmFuZ2UoKSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVk
IHNlcXVlbmNlLgorVEVTVChSYW5nZVRlc3QsIEludFJhbmdlV2l0aERlZmF1bHRTdGVwKSB7Cisg
IGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgMyk7CisgIGNvbnN0IGlu
dCBleHBlY3RlZF92YWx1ZXNbXSA9IHswLCAxLCAyfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwg
ZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFJhbmdlKCkg
Z2VuZXJhdGVzIHRoZSBzaW5nbGUgZWxlbWVudCBzZXF1ZW5jZQorLy8gYXMgZXhwZWN0ZWQgd2hl
biBwcm92aWRlZCB3aXRoIHJhbmdlIGxpbWl0cyB0aGF0IGFyZSBlcXVhbC4KK1RFU1QoUmFuZ2VU
ZXN0LCBJbnRSYW5nZVNpbmdsZVZhbHVlKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4g
Z2VuID0gUmFuZ2UoMCwgMSk7CisgIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHswfTsK
KyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gRWRnZSBj
YXNlLiBUZXN0cyB0aGF0IFJhbmdlKCkgd2l0aCBnZW5lcmF0ZXMgZW1wdHkgc2VxdWVuY2Ugd2hl
bgorLy8gc3VwcGxpZWQgd2l0aCBhbiBlbXB0eSByYW5nZS4KK1RFU1QoUmFuZ2VUZXN0LCBJbnRS
YW5nZUVtcHR5KSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwg
MCk7CisgIFZlcmlmeUdlbmVyYXRvcklzRW1wdHkoZ2VuKTsKK30KKworLy8gVGVzdHMgdGhhdCBS
YW5nZSgpIHdpdGggY3VzdG9tIHN0ZXAgKGdyZWF0ZXIgdGhlbiBvbmUpIGdlbmVyYXRlcworLy8g
dGhlIGV4cGVjdGVkIHNlcXVlbmNlLgorVEVTVChSYW5nZVRlc3QsIEludFJhbmdlV2l0aEN1c3Rv
bVN0ZXApIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCA5LCAz
KTsKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezAsIDMsIDZ9OworICBWZXJpZnlH
ZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBUZXN0cyB0aGF0IFJhbmdl
KCkgd2l0aCBjdXN0b20gc3RlcCAoZ3JlYXRlciB0aGVuIG9uZSkgZ2VuZXJhdGVzCisvLyB0aGUg
ZXhwZWN0ZWQgc2VxdWVuY2Ugd2hlbiB0aGUgbGFzdCBlbGVtZW50IGRvZXMgbm90IGZhbGwgb24g
dGhlCisvLyB1cHBlciByYW5nZSBsaW1pdC4gU2VxdWVuY2VzIGdlbmVyYXRlZCBieSBSYW5nZSgp
IG11c3Qgbm90IGhhdmUKKy8vIGVsZW1lbnRzIGJleW9uZCB0aGUgcmFuZ2UgbGltaXRzLgorVEVT
VChSYW5nZVRlc3QsIEludFJhbmdlV2l0aEN1c3RvbVN0ZXBPdmVyVXBwZXJCb3VuZCkgeworICBj
b25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDQsIDMpOworICBjb25zdCBp
bnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MCwgM307CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4
cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFZlcmlmaWVzIHRoYXQgUmFuZ2Ugd29ya3Mgd2l0aCB1
c2VyLWRlZmluZWQgdHlwZXMgdGhhdCBkZWZpbmUKKy8vIGNvcHkgY29uc3RydWN0b3IsIG9wZXJh
dG9yPSgpLCBvcGVyYXRvcisoKSwgYW5kIG9wZXJhdG9yPCgpLgorY2xhc3MgRG9nQWRkZXIgewor
IHB1YmxpYzoKKyAgZXhwbGljaXQgRG9nQWRkZXIoY29uc3QgY2hhciogYV92YWx1ZSkgOiB2YWx1
ZV8oYV92YWx1ZSkge30KKyAgRG9nQWRkZXIoY29uc3QgRG9nQWRkZXImIG90aGVyKSA6IHZhbHVl
XyhvdGhlci52YWx1ZV8uY19zdHIoKSkge30KKworICBEb2dBZGRlciBvcGVyYXRvcj0oY29uc3Qg
RG9nQWRkZXImIG90aGVyKSB7CisgICAgaWYgKHRoaXMgIT0gJm90aGVyKQorICAgICAgdmFsdWVf
ID0gb3RoZXIudmFsdWVfOworICAgIHJldHVybiAqdGhpczsKKyAgfQorICBEb2dBZGRlciBvcGVy
YXRvcisoY29uc3QgRG9nQWRkZXImIG90aGVyKSBjb25zdCB7CisgICAgTWVzc2FnZSBtc2c7Cisg
ICAgbXNnIDw8IHZhbHVlXy5jX3N0cigpIDw8IG90aGVyLnZhbHVlXy5jX3N0cigpOworICAgIHJl
dHVybiBEb2dBZGRlcihtc2cuR2V0U3RyaW5nKCkuY19zdHIoKSk7CisgIH0KKyAgYm9vbCBvcGVy
YXRvcjwoY29uc3QgRG9nQWRkZXImIG90aGVyKSBjb25zdCB7CisgICAgcmV0dXJuIHZhbHVlXyA8
IG90aGVyLnZhbHVlXzsKKyAgfQorICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUoKSBjb25zdCB7
IHJldHVybiB2YWx1ZV87IH0KKworIHByaXZhdGU6CisgIHN0ZDo6c3RyaW5nIHZhbHVlXzsKK307
CisKK1RFU1QoUmFuZ2VUZXN0LCBXb3Jrc1dpdGhBQ3VzdG9tVHlwZSkgeworICBjb25zdCBQYXJh
bUdlbmVyYXRvcjxEb2dBZGRlcj4gZ2VuID0KKyAgICAgIFJhbmdlKERvZ0FkZGVyKCJjYXQiKSwg
RG9nQWRkZXIoImNhdGRvZ2RvZyIpLCBEb2dBZGRlcigiZG9nIikpOworICBQYXJhbUdlbmVyYXRv
cjxEb2dBZGRlcj46Oml0ZXJhdG9yIGl0ID0gZ2VuLmJlZ2luKCk7CisKKyAgQVNTRVJUX0ZBTFNF
KGl0ID09IGdlbi5lbmQoKSk7CisgIEVYUEVDVF9TVFJFUSgiY2F0IiwgaXQtPnZhbHVlKCkuY19z
dHIoKSk7CisKKyAgQVNTRVJUX0ZBTFNFKCsraXQgPT0gZ2VuLmVuZCgpKTsKKyAgRVhQRUNUX1NU
UkVRKCJjYXRkb2ciLCBpdC0+dmFsdWUoKS5jX3N0cigpKTsKKworICBFWFBFQ1RfVFJVRSgrK2l0
ID09IGdlbi5lbmQoKSk7Cit9CisKK2NsYXNzIEludFdyYXBwZXIgeworIHB1YmxpYzoKKyAgZXhw
bGljaXQgSW50V3JhcHBlcihpbnQgYV92YWx1ZSkgOiB2YWx1ZV8oYV92YWx1ZSkge30KKyAgSW50
V3JhcHBlcihjb25zdCBJbnRXcmFwcGVyJiBvdGhlcikgOiB2YWx1ZV8ob3RoZXIudmFsdWVfKSB7
fQorCisgIEludFdyYXBwZXIgb3BlcmF0b3I9KGNvbnN0IEludFdyYXBwZXImIG90aGVyKSB7Cisg
ICAgdmFsdWVfID0gb3RoZXIudmFsdWVfOworICAgIHJldHVybiAqdGhpczsKKyAgfQorICAvLyBv
cGVyYXRvcisoKSBhZGRzIGEgZGlmZmVyZW50IHR5cGUuCisgIEludFdyYXBwZXIgb3BlcmF0b3Ir
KGludCBvdGhlcikgY29uc3QgeyByZXR1cm4gSW50V3JhcHBlcih2YWx1ZV8gKyBvdGhlcik7IH0K
KyAgYm9vbCBvcGVyYXRvcjwoY29uc3QgSW50V3JhcHBlciYgb3RoZXIpIGNvbnN0IHsKKyAgICBy
ZXR1cm4gdmFsdWVfIDwgb3RoZXIudmFsdWVfOworICB9CisgIGludCB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIHZhbHVlXzsgfQorCisgcHJpdmF0ZToKKyAgaW50IHZhbHVlXzsKK307CisKK1RFU1Qo
UmFuZ2VUZXN0LCBXb3Jrc1dpdGhBQ3VzdG9tVHlwZVdpdGhEaWZmZXJlbnRJbmNyZW1lbnRUeXBl
KSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPEludFdyYXBwZXI+IGdlbiA9IFJhbmdlKEludFdy
YXBwZXIoMCksIEludFdyYXBwZXIoMikpOworICBQYXJhbUdlbmVyYXRvcjxJbnRXcmFwcGVyPjo6
aXRlcmF0b3IgaXQgPSBnZW4uYmVnaW4oKTsKKworICBBU1NFUlRfRkFMU0UoaXQgPT0gZ2VuLmVu
ZCgpKTsKKyAgRVhQRUNUX0VRKDAsIGl0LT52YWx1ZSgpKTsKKworICBBU1NFUlRfRkFMU0UoKytp
dCA9PSBnZW4uZW5kKCkpOworICBFWFBFQ1RfRVEoMSwgaXQtPnZhbHVlKCkpOworCisgIEVYUEVD
VF9UUlVFKCsraXQgPT0gZ2VuLmVuZCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCBWYWx1ZXNJbigp
IHdpdGggYW4gYXJyYXkgcGFyYW1ldGVyIGdlbmVyYXRlcworLy8gdGhlIGV4cGVjdGVkIHNlcXVl
bmNlLgorVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luQXJyYXkpIHsKKyAgaW50IGFycmF5W10g
PSB7MywgNSwgOH07CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4o
YXJyYXkpOworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBhcnJheSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgVmFsdWVzSW4oKSB3aXRoIGEgY29uc3QgYXJyYXkgcGFyYW1ldGVyIGdlbmVyYXRlcworLy8g
dGhlIGV4cGVjdGVkIHNlcXVlbmNlLgorVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luQ29uc3RB
cnJheSkgeworICBjb25zdCBpbnQgYXJyYXlbXSA9IHszLCA1LCA4fTsKKyAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbihhcnJheSk7CisgIFZlcmlmeUdlbmVyYXRvcihn
ZW4sIGFycmF5KTsKK30KKworLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFZhbHVlc0luKCkgd2l0
aCBhbiBhcnJheSBwYXJhbWV0ZXIgY29udGFpbmluZyBhCisvLyBzaW5nbGUgZWxlbWVudCBnZW5l
cmF0ZXMgdGhlIHNpbmdsZSBlbGVtZW50IHNlcXVlbmNlLgorVEVTVChWYWx1ZXNJblRlc3QsIFZh
bHVlc0luU2luZ2xlRWxlbWVudEFycmF5KSB7CisgIGludCBhcnJheVtdID0gezQyfTsKKyAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbihhcnJheSk7CisgIFZlcmlmeUdl
bmVyYXRvcihnZW4sIGFycmF5KTsKK30KKworLy8gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIGdlbmVy
YXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UgZm9yIGFuIFNUTAorLy8gY29udGFpbmVyICh2ZWN0
b3IpLgorVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luVmVjdG9yKSB7CisgIHR5cGVkZWYgOjpz
dGQ6OnZlY3RvcjxpbnQ+IENvbnRhaW5lclR5cGU7CisgIENvbnRhaW5lclR5cGUgdmFsdWVzOwor
ICB2YWx1ZXMucHVzaF9iYWNrKDMpOworICB2YWx1ZXMucHVzaF9iYWNrKDUpOworICB2YWx1ZXMu
cHVzaF9iYWNrKDgpOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0lu
KHZhbHVlcyk7CisKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezMsIDUsIDh9Owor
ICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBUZXN0cyB0
aGF0IFZhbHVlc0luKCkgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoVmFs
dWVzSW5UZXN0LCBWYWx1ZXNJbkl0ZXJhdG9yUmFuZ2UpIHsKKyAgdHlwZWRlZiA6OnN0ZDo6dmVj
dG9yPGludD4gQ29udGFpbmVyVHlwZTsKKyAgQ29udGFpbmVyVHlwZSB2YWx1ZXM7CisgIHZhbHVl
cy5wdXNoX2JhY2soMyk7CisgIHZhbHVlcy5wdXNoX2JhY2soNSk7CisgIHZhbHVlcy5wdXNoX2Jh
Y2soOCk7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4odmFsdWVz
LmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7CisKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1td
ID0gezMsIDUsIDh9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwor
fQorCisvLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSBwcm92aWRlZCB3aXRoIGFu
IGl0ZXJhdG9yIHJhbmdlIHNwZWNpZnlpbmcgYQorLy8gc2luZ2xlIHZhbHVlIGdlbmVyYXRlcyBh
IHNpbmdsZS1lbGVtZW50IHNlcXVlbmNlLgorVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luU2lu
Z2xlRWxlbWVudEl0ZXJhdG9yUmFuZ2UpIHsKKyAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGludD4g
Q29udGFpbmVyVHlwZTsKKyAgQ29udGFpbmVyVHlwZSB2YWx1ZXM7CisgIHZhbHVlcy5wdXNoX2Jh
Y2soNDIpOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVl
cy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworCisgIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNb
XSA9IHs0Mn07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisK
Ky8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIHByb3ZpZGVkIHdpdGggYW4gZW1w
dHkgaXRlcmF0b3IgcmFuZ2UKKy8vIGdlbmVyYXRlcyBhbiBlbXB0eSBzZXF1ZW5jZS4KK1RFU1Qo
VmFsdWVzSW5UZXN0LCBWYWx1ZXNJbkVtcHR5SXRlcmF0b3JSYW5nZSkgeworICB0eXBlZGVmIDo6
c3RkOjp2ZWN0b3I8aW50PiBDb250YWluZXJUeXBlOworICBDb250YWluZXJUeXBlIHZhbHVlczsK
KyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbih2YWx1ZXMuYmVnaW4o
KSwgdmFsdWVzLmVuZCgpKTsKKworICBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7Cit9CisK
Ky8vIFRlc3RzIHRoYXQgdGhlIFZhbHVlcygpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVu
Y2UuCitURVNUKFZhbHVlc1Rlc3QsIFZhbHVlc1dvcmtzKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPGludD4gZ2VuID0gVmFsdWVzKDMsIDUsIDgpOworCisgIGNvbnN0IGludCBleHBlY3RlZF92
YWx1ZXNbXSA9IHszLCA1LCA4fTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFs
dWVzKTsKK30KKworLy8gVGVzdHMgdGhhdCBWYWx1ZXMoKSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVk
IHNlcXVlbmNlcyBmcm9tIGVsZW1lbnRzIG9mCisvLyBkaWZmZXJlbnQgdHlwZXMgY29udmVydGli
bGUgdG8gUGFyYW1HZW5lcmF0b3IncyBwYXJhbWV0ZXIgdHlwZS4KK1RFU1QoVmFsdWVzVGVzdCwg
VmFsdWVzV29ya3NGb3JWYWx1ZXNPZkNvbXBhdGlibGVUeXBlcykgeworICBjb25zdCBQYXJhbUdl
bmVyYXRvcjxkb3VibGU+IGdlbiA9IFZhbHVlcygzLCA1LjBmLCA4LjApOworCisgIGNvbnN0IGRv
dWJsZSBleHBlY3RlZF92YWx1ZXNbXSA9IHszLjAsIDUuMCwgOC4wfTsKKyAgVmVyaWZ5R2VuZXJh
dG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworVEVTVChWYWx1ZXNUZXN0LCBWYWx1ZXNX
b3Jrc0Zvck1heExlbmd0aExpc3QpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4g
PSBWYWx1ZXMoCisgICAgICAxMCwgMjAsIDMwLCA0MCwgNTAsIDYwLCA3MCwgODAsIDkwLCAxMDAs
CisgICAgICAxMTAsIDEyMCwgMTMwLCAxNDAsIDE1MCwgMTYwLCAxNzAsIDE4MCwgMTkwLCAyMDAs
CisgICAgICAyMTAsIDIyMCwgMjMwLCAyNDAsIDI1MCwgMjYwLCAyNzAsIDI4MCwgMjkwLCAzMDAs
CisgICAgICAzMTAsIDMyMCwgMzMwLCAzNDAsIDM1MCwgMzYwLCAzNzAsIDM4MCwgMzkwLCA0MDAs
CisgICAgICA0MTAsIDQyMCwgNDMwLCA0NDAsIDQ1MCwgNDYwLCA0NzAsIDQ4MCwgNDkwLCA1MDAp
OworCisgIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHsKKyAgICAgIDEwLCAyMCwgMzAs
IDQwLCA1MCwgNjAsIDcwLCA4MCwgOTAsIDEwMCwKKyAgICAgIDExMCwgMTIwLCAxMzAsIDE0MCwg
MTUwLCAxNjAsIDE3MCwgMTgwLCAxOTAsIDIwMCwKKyAgICAgIDIxMCwgMjIwLCAyMzAsIDI0MCwg
MjUwLCAyNjAsIDI3MCwgMjgwLCAyOTAsIDMwMCwKKyAgICAgIDMxMCwgMzIwLCAzMzAsIDM0MCwg
MzUwLCAzNjAsIDM3MCwgMzgwLCAzOTAsIDQwMCwKKyAgICAgIDQxMCwgNDIwLCA0MzAsIDQ0MCwg
NDUwLCA0NjAsIDQ3MCwgNDgwLCA0OTAsIDUwMH07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4
cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIEVkZ2UgY2FzZSB0ZXN0LiBUZXN0cyB0aGF0IHNpbmds
ZS1wYXJhbWV0ZXIgVmFsdWVzKCkgZ2VuZXJhdGVzIHRoZSBzZXF1ZW5jZQorLy8gd2l0aCB0aGUg
c2luZ2xlIHZhbHVlLgorVEVTVChWYWx1ZXNUZXN0LCBWYWx1ZXNXaXRoU2luZ2xlUGFyYW1ldGVy
KSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzKDQyKTsKKworICBj
b25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7NDJ9OworICBWZXJpZnlHZW5lcmF0b3IoZ2Vu
LCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBUZXN0cyB0aGF0IEJvb2woKSBnZW5lcmF0ZXMg
c2VxdWVuY2UgKGZhbHNlLCB0cnVlKS4KK1RFU1QoQm9vbFRlc3QsIEJvb2xXb3JrcykgeworICBj
b25zdCBQYXJhbUdlbmVyYXRvcjxib29sPiBnZW4gPSBCb29sKCk7CisKKyAgY29uc3QgYm9vbCBl
eHBlY3RlZF92YWx1ZXNbXSA9IHtmYWxzZSwgdHJ1ZX07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4s
IGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKKworLy8gVGVz
dHMgdGhhdCBDb21iaW5lKCkgd2l0aCB0d28gcGFyYW1ldGVycyBnZW5lcmF0ZXMgdGhlIGV4cGVj
dGVkIHNlcXVlbmNlLgorVEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdpdGhUd29QYXJhbWV0ZXJz
KSB7CisgIGNvbnN0IGNoYXIqIGZvbyA9ICJmb28iOworICBjb25zdCBjaGFyKiBiYXIgPSAiYmFy
IjsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8Y29uc3QgY2hhciosIGludD4gPiBnZW4g
PQorICAgICAgQ29tYmluZShWYWx1ZXMoZm9vLCBiYXIpLCBWYWx1ZXMoMywgNCkpOworCisgIHR1
cGxlPGNvbnN0IGNoYXIqLCBpbnQ+IGV4cGVjdGVkX3ZhbHVlc1tdID0geworICAgIG1ha2VfdHVw
bGUoZm9vLCAzKSwgbWFrZV90dXBsZShmb28sIDQpLAorICAgIG1ha2VfdHVwbGUoYmFyLCAzKSwg
bWFrZV90dXBsZShiYXIsIDQpfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFs
dWVzKTsKK30KKworLy8gVGVzdHMgdGhhdCBDb21iaW5lKCkgd2l0aCB0aHJlZSBwYXJhbWV0ZXJz
IGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCitURVNUKENvbWJpbmVUZXN0LCBDb21i
aW5lV2l0aFRocmVlUGFyYW1ldGVycykgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxp
bnQsIGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUoVmFsdWVzKDAsIDEpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDMs
IDQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsdWVzKDUsIDYpKTsKKyAgdHVwbGU8aW50LCBpbnQsIGludD4gZXhwZWN0ZWRf
dmFsdWVzW10gPSB7CisgICAgbWFrZV90dXBsZSgwLCAzLCA1KSwgbWFrZV90dXBsZSgwLCAzLCA2
KSwKKyAgICBtYWtlX3R1cGxlKDAsIDQsIDUpLCBtYWtlX3R1cGxlKDAsIDQsIDYpLAorICAgIG1h
a2VfdHVwbGUoMSwgMywgNSksIG1ha2VfdHVwbGUoMSwgMywgNiksCisgICAgbWFrZV90dXBsZSgx
LCA0LCA1KSwgbWFrZV90dXBsZSgxLCA0LCA2KX07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4
cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIENvbWJpbmUoKSB3aXRoIHRo
ZSBmaXJzdCBwYXJhbWV0ZXIgZ2VuZXJhdGluZyBhIHNpbmdsZSB2YWx1ZQorLy8gc2VxdWVuY2Ug
Z2VuZXJhdGVzIGEgc2VxdWVuY2Ugd2l0aCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGVxdWFsIHRv
IHRoZQorLy8gbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBzZXF1ZW5jZSBnZW5lcmF0ZWQgYnkg
dGhlIHNlY29uZCBwYXJhbWV0ZXIuCitURVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aEZpcnN0
UGFyYW1ldGVyU2luZ2xlVmFsdWUpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50
LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoNDIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygwLCAxKSk7CisKKyAgdHVw
bGU8aW50LCBpbnQ+IGV4cGVjdGVkX3ZhbHVlc1tdID0ge21ha2VfdHVwbGUoNDIsIDApLCBtYWtl
X3R1cGxlKDQyLCAxKX07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIENvbWJpbmUoKSB3aXRoIHRoZSBzZWNvbmQgcGFyYW1l
dGVyIGdlbmVyYXRpbmcgYSBzaW5nbGUgdmFsdWUKKy8vIHNlcXVlbmNlIGdlbmVyYXRlcyBhIHNl
cXVlbmNlIHdpdGggdGhlIG51bWJlciBvZiBlbGVtZW50cyBlcXVhbCB0byB0aGUKKy8vIG51bWJl
ciBvZiBlbGVtZW50cyBpbiB0aGUgc2VxdWVuY2UgZ2VuZXJhdGVkIGJ5IHRoZSBmaXJzdCBwYXJh
bWV0ZXIuCitURVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFNlY29uZFBhcmFtZXRlclNpbmds
ZVZhbHVlKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50PiA+IGdlbiA9
IENvbWJpbmUoVmFsdWVzKDAsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg0MikpOworCisgIHR1cGxlPGludCwgaW50PiBl
eHBlY3RlZF92YWx1ZXNbXSA9IHttYWtlX3R1cGxlKDAsIDQyKSwgbWFrZV90dXBsZSgxLCA0Mil9
OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBUZXN0
cyB0aGF0IHdoZW4gdGhlIGZpcnN0IHBhcmFtZXRlciBwcm9kdWNlcyBhbiBlbXB0eSBzZXF1ZW5j
ZSwKKy8vIENvbWJpbmUoKSBwcm9kdWNlcyBhbiBlbXB0eSBzZXF1ZW5jZSwgdG9vLgorVEVTVChD
b21iaW5lVGVzdCwgQ29tYmluZVdpdGhGaXJzdFBhcmFtZXRlckVtcHR5UmFuZ2UpIHsKKyAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShSYW5nZSgw
LCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWx1ZXMoMCwgMSkpOworICBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7Cit9CisK
Ky8vIFRlc3RzIHRoYXQgd2hlbiB0aGUgc2Vjb25kIHBhcmFtZXRlciBwcm9kdWNlcyBhbiBlbXB0
eSBzZXF1ZW5jZSwKKy8vIENvbWJpbmUoKSBwcm9kdWNlcyBhbiBlbXB0eSBzZXF1ZW5jZSwgdG9v
LgorVEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdpdGhTZWNvbmRQYXJhbWV0ZXJFbXB0eVJhbmdl
KSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50PiA+IGdlbiA9IENvbWJp
bmUoVmFsdWVzKDAsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJhbmdlKDEsIDEpKTsKKyAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShn
ZW4pOworfQorCisvLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgY29tYmluZSB3b3JrcyB3aXRoIHRo
ZSBtYXhpbXVtIG51bWJlcgorLy8gb2YgcGFyYW1ldGVycyBzdXBwb3J0ZWQgYnkgR29vZ2xlIFRl
c3QgKGN1cnJlbnRseSAxMCkuCitURVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aE1heE51bWJl
ck9mUGFyYW1ldGVycykgeworICBjb25zdCBjaGFyKiBmb28gPSAiZm9vIjsKKyAgY29uc3QgY2hh
ciogYmFyID0gImJhciI7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGNvbnN0IGNoYXIq
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUoVmFsdWVzKGZvbywgYmFyKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1
ZXMoMSksIFZhbHVlcygyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWx1ZXMoMyksIFZhbHVlcyg0KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNSksIFZhbHVlcyg2
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWx1ZXMoNyksIFZhbHVlcyg4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoOSkpOworCisgIHR1cGxlPGNvbnN0IGNoYXIq
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50PgorICAgICAgZXhw
ZWN0ZWRfdmFsdWVzW10gPSB7bWFrZV90dXBsZShmb28sIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgs
IDkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZV90dXBsZShiYXIsIDEsIDIsIDMs
IDQsIDUsIDYsIDcsIDgsIDkpfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFs
dWVzKTsKK30KKworI2lmIEdURVNUX0xBTkdfQ1hYMTEKKworY2xhc3MgTm9uRGVmYXVsdENvbnN0
cnVjdEFzc2lnblN0cmluZyB7CisgcHVibGljOgorICBOb25EZWZhdWx0Q29uc3RydWN0QXNzaWdu
U3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBzKSA6IHN0cl8ocykge30KKworICBjb25zdCBzdGQ6
OnN0cmluZyYgc3RyKCkgY29uc3QgeyByZXR1cm4gc3RyXzsgfQorCisgcHJpdmF0ZToKKyAgc3Rk
OjpzdHJpbmcgc3RyXzsKKworICAvLyBOb3QgZGVmYXVsdCBjb25zdHJ1Y3RpYmxlCisgIE5vbkRl
ZmF1bHRDb25zdHJ1Y3RBc3NpZ25TdHJpbmcoKTsKKyAgLy8gTm90IGFzc2lnbmFibGUKKyAgdm9p
ZCBvcGVyYXRvcj0oY29uc3QgTm9uRGVmYXVsdENvbnN0cnVjdEFzc2lnblN0cmluZyYpOworfTsK
KworVEVTVChDb21iaW5lVGVzdCwgTm9uRGVmYXVsdENvbnN0cnVjdEFzc2lnbikgeworICBjb25z
dCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIE5vbkRlZmF1bHRDb25zdHJ1Y3RBc3NpZ25TdHJp
bmc+ID4gZ2VuID0KKyAgICAgIENvbWJpbmUoVmFsdWVzKDAsIDEpLCBWYWx1ZXMoTm9uRGVmYXVs
dENvbnN0cnVjdEFzc2lnblN0cmluZygiQSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOb25EZWZhdWx0Q29uc3RydWN0QXNzaWduU3RyaW5nKCJCIikpKTsKKworICBQYXJh
bUdlbmVyYXRvcjx0dXBsZTxpbnQsIE5vbkRlZmF1bHRDb25zdHJ1Y3RBc3NpZ25TdHJpbmc+ID46
Oml0ZXJhdG9yIGl0ID0KKyAgICAgIGdlbi5iZWdpbigpOworCisgIEVYUEVDVF9FUSgwLCBzdGQ6
OmdldDwwPigqaXQpKTsKKyAgRVhQRUNUX0VRKCJBIiwgc3RkOjpnZXQ8MT4oKml0KS5zdHIoKSk7
CisgICsraXQ7CisKKyAgRVhQRUNUX0VRKDAsIHN0ZDo6Z2V0PDA+KCppdCkpOworICBFWFBFQ1Rf
RVEoIkIiLCBzdGQ6OmdldDwxPigqaXQpLnN0cigpKTsKKyAgKytpdDsKKworICBFWFBFQ1RfRVEo
MSwgc3RkOjpnZXQ8MD4oKml0KSk7CisgIEVYUEVDVF9FUSgiQSIsIHN0ZDo6Z2V0PDE+KCppdCku
c3RyKCkpOworICArK2l0OworCisgIEVYUEVDVF9FUSgxLCBzdGQ6OmdldDwwPigqaXQpKTsKKyAg
RVhQRUNUX0VRKCJCIiwgc3RkOjpnZXQ8MT4oKml0KS5zdHIoKSk7CisgICsraXQ7CisKKyAgRVhQ
RUNUX1RSVUUoaXQgPT0gZ2VuLmVuZCgpKTsKK30KKworI2VuZGlmICAgLy8gR1RFU1RfTEFOR19D
WFgxMQorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKKworLy8gVGVzdHMgdGhhdCBhbiBn
ZW5lcmF0b3IgcHJvZHVjZXMgY29ycmVjdCBzZXF1ZW5jZSBhZnRlciBiZWluZworLy8gYXNzaWdu
ZWQgZnJvbSBhbm90aGVyIGdlbmVyYXRvci4KK1RFU1QoUGFyYW1HZW5lcmF0b3JUZXN0LCBBc3Np
Z25tZW50V29ya3MpIHsKKyAgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXMoMSwgMik7
CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuMiA9IFZhbHVlcygzLCA0KTsKKyAgZ2Vu
ID0gZ2VuMjsKKworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MywgNH07CisgIFZl
cmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRoaXMgdGVzdCB2
ZXJpZmllcyB0aGF0IHRoZSB0ZXN0cyBhcmUgZXhwYW5kZWQgYW5kIHJ1biBhcyBzcGVjaWZpZWQ6
CisvLyBvbmUgdGVzdCBwZXIgZWxlbWVudCBmcm9tIHRoZSBzZXF1ZW5jZSBwcm9kdWNlZCBieSB0
aGUgZ2VuZXJhdG9yCisvLyBzcGVjaWZpZWQgaW4gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AuIEl0
IGFsc28gdmVyaWZpZXMgdGhhdCB0aGUgdGVzdCdzCisvLyBmaXh0dXJlIGNvbnN0cnVjdG9yLCBT
ZXRVcCgpLCBhbmQgVGVhckRvd24oKSBoYXZlIHJ1biBhbmQgaGF2ZSBiZWVuCisvLyBzdXBwbGll
ZCB3aXRoIHRoZSBjb3JyZWN0IHBhcmFtZXRlcnMuCisKKy8vIFRoZSB1c2Ugb2YgZW52aXJvbm1l
bnQgb2JqZWN0IGFsbG93cyBkZXRlY3Rpb24gb2YgdGhlIGNhc2Ugd2hlcmUgbm8gdGVzdAorLy8g
Y2FzZSBmdW5jdGlvbmFsaXR5IGlzIHJ1biBhdCBhbGwuIEluIHRoaXMgY2FzZSBUZXN0Q2FzZVRl
YXJEb3duIHdpbGwgbm90CisvLyBiZSBhYmxlIHRvIGRldGVjdCBtaXNzaW5nIHRlc3RzLCBuYXR1
cmFsbHkuCit0ZW1wbGF0ZSA8aW50IGtFeHBlY3RlZENhbGxzPgorY2xhc3MgVGVzdEdlbmVyYXRp
b25FbnZpcm9ubWVudCA6IHB1YmxpYyA6OnRlc3Rpbmc6OkVudmlyb25tZW50IHsKKyBwdWJsaWM6
CisgIHN0YXRpYyBUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50KiBJbnN0YW5jZSgpIHsKKyAgICBz
dGF0aWMgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudCogaW5zdGFuY2UgPSBuZXcgVGVzdEdlbmVy
YXRpb25FbnZpcm9ubWVudDsKKyAgICByZXR1cm4gaW5zdGFuY2U7CisgIH0KKworICB2b2lkIEZp
eHR1cmVDb25zdHJ1Y3RvckV4ZWN1dGVkKCkgeyBmaXh0dXJlX2NvbnN0cnVjdG9yX2NvdW50Xysr
OyB9CisgIHZvaWQgU2V0VXBFeGVjdXRlZCgpIHsgc2V0X3VwX2NvdW50XysrOyB9CisgIHZvaWQg
VGVhckRvd25FeGVjdXRlZCgpIHsgdGVhcl9kb3duX2NvdW50XysrOyB9CisgIHZvaWQgVGVzdEJv
ZHlFeGVjdXRlZCgpIHsgdGVzdF9ib2R5X2NvdW50XysrOyB9CisKKyAgdmlydHVhbCB2b2lkIFRl
YXJEb3duKCkgeworICAgIC8vIElmIGFsbCBNdWx0aXBsZVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0
cyBoYXZlIGJlZW4gZGUtc2VsZWN0ZWQKKyAgICAvLyBieSB0aGUgZmlsdGVyIGZsYWcsIHRoZSBm
b2xsb3dpbmcgY2hlY2tzIG1ha2Ugbm8gc2Vuc2UuCisgICAgYm9vbCBwZXJmb3JtX2NoZWNrID0g
ZmFsc2U7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGtFeHBlY3RlZENhbGxzOyArK2kpIHsK
KyAgICAgIE1lc3NhZ2UgbXNnOworICAgICAgbXNnIDw8ICJUZXN0c0V4cGFuZGVkQW5kUnVuLyIg
PDwgaTsKKyAgICAgIGlmIChVbml0VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KAorICAg
ICAgICAgICAgICJUZXN0RXhwYW5zaW9uTW9kdWxlL011bHRpcGxlVGVzdEdlbmVyYXRpb25UZXN0
IiwKKyAgICAgICAgICAgICAgbXNnLkdldFN0cmluZygpLmNfc3RyKCkpKSB7CisgICAgICAgIHBl
cmZvcm1fY2hlY2sgPSB0cnVlOworICAgICAgfQorICAgIH0KKyAgICBpZiAocGVyZm9ybV9jaGVj
aykgeworICAgICAgRVhQRUNUX0VRKGtFeHBlY3RlZENhbGxzLCBmaXh0dXJlX2NvbnN0cnVjdG9y
X2NvdW50XykKKyAgICAgICAgICA8PCAiRml4dHVyZSBjb25zdHJ1Y3RvciBvZiBQYXJhbVRlc3RH
ZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgorICAgICAgICAgIDw8ICJoYXMgbm90IGJlZW4gcnVu
IGFzIGV4cGVjdGVkLiI7CisgICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2FsbHMsIHNldF91cF9j
b3VudF8pCisgICAgICAgICAgPDwgIkZpeHR1cmUgU2V0VXAgbWV0aG9kIG9mIFBhcmFtVGVzdEdl
bmVyYXRpb25UZXN0IHRlc3QgY2FzZSAiCisgICAgICAgICAgPDwgImhhcyBub3QgYmVlbiBydW4g
YXMgZXhwZWN0ZWQuIjsKKyAgICAgIEVYUEVDVF9FUShrRXhwZWN0ZWRDYWxscywgdGVhcl9kb3du
X2NvdW50XykKKyAgICAgICAgICA8PCAiRml4dHVyZSBUZWFyRG93biBtZXRob2Qgb2YgUGFyYW1U
ZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlICIKKyAgICAgICAgICA8PCAiaGFzIG5vdCBiZWVu
IHJ1biBhcyBleHBlY3RlZC4iOworICAgICAgRVhQRUNUX0VRKGtFeHBlY3RlZENhbGxzLCB0ZXN0
X2JvZHlfY291bnRfKQorICAgICAgICAgIDw8ICJUZXN0IGluIFBhcmFtVGVzdEdlbmVyYXRpb25U
ZXN0IHRlc3QgY2FzZSAiCisgICAgICAgICAgPDwgImhhcyBub3QgYmVlbiBydW4gYXMgZXhwZWN0
ZWQuIjsKKyAgICB9CisgIH0KKworIHByaXZhdGU6CisgIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1l
bnQoKSA6IGZpeHR1cmVfY29uc3RydWN0b3JfY291bnRfKDApLCBzZXRfdXBfY291bnRfKDApLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWFyX2Rvd25fY291bnRfKDApLCB0ZXN0
X2JvZHlfY291bnRfKDApIHt9CisKKyAgaW50IGZpeHR1cmVfY29uc3RydWN0b3JfY291bnRfOwor
ICBpbnQgc2V0X3VwX2NvdW50XzsKKyAgaW50IHRlYXJfZG93bl9jb3VudF87CisgIGludCB0ZXN0
X2JvZHlfY291bnRfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdEdl
bmVyYXRpb25FbnZpcm9ubWVudCk7Cit9OworCitjb25zdCBpbnQgdGVzdF9nZW5lcmF0aW9uX3Bh
cmFtc1tdID0gezM2LCA0MiwgNzJ9OworCitjbGFzcyBUZXN0R2VuZXJhdGlvblRlc3QgOiBwdWJs
aWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsKKyBwdWJsaWM6CisgIGVudW0geworICAgIFBBUkFNRVRF
Ul9DT1VOVCA9CisgICAgICAgIHNpemVvZih0ZXN0X2dlbmVyYXRpb25fcGFyYW1zKS9zaXplb2Yo
dGVzdF9nZW5lcmF0aW9uX3BhcmFtc1swXSkKKyAgfTsKKworICB0eXBlZGVmIFRlc3RHZW5lcmF0
aW9uRW52aXJvbm1lbnQ8UEFSQU1FVEVSX0NPVU5UPiBFbnZpcm9ubWVudDsKKworICBUZXN0R2Vu
ZXJhdGlvblRlc3QoKSB7CisgICAgRW52aXJvbm1lbnQ6Okluc3RhbmNlKCktPkZpeHR1cmVDb25z
dHJ1Y3RvckV4ZWN1dGVkKCk7CisgICAgY3VycmVudF9wYXJhbWV0ZXJfID0gR2V0UGFyYW0oKTsK
KyAgfQorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgRW52aXJvbm1lbnQ6Okluc3RhbmNl
KCktPlNldFVwRXhlY3V0ZWQoKTsKKyAgICBFWFBFQ1RfRVEoY3VycmVudF9wYXJhbWV0ZXJfLCBH
ZXRQYXJhbSgpKTsKKyAgfQorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgRW52aXJv
bm1lbnQ6Okluc3RhbmNlKCktPlRlYXJEb3duRXhlY3V0ZWQoKTsKKyAgICBFWFBFQ1RfRVEoY3Vy
cmVudF9wYXJhbWV0ZXJfLCBHZXRQYXJhbSgpKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFNldFVw
VGVzdENhc2UoKSB7CisgICAgYm9vbCBhbGxfdGVzdHNfaW5fdGVzdF9jYXNlX3NlbGVjdGVkID0g
dHJ1ZTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgUEFSQU1FVEVSX0NPVU5UOyArK2kpIHsK
KyAgICAgIE1lc3NhZ2UgdGVzdF9uYW1lOworICAgICAgdGVzdF9uYW1lIDw8ICJUZXN0c0V4cGFu
ZGVkQW5kUnVuLyIgPDwgaTsKKyAgICAgIGlmICggIVVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0
Y2hlc1Rlc3QoCisgICAgICAgICAgICAgICAgIlRlc3RFeHBhbnNpb25Nb2R1bGUvTXVsdGlwbGVU
ZXN0R2VuZXJhdGlvblRlc3QiLAorICAgICAgICAgICAgICAgIHRlc3RfbmFtZS5HZXRTdHJpbmco
KSkpIHsKKyAgICAgICAgYWxsX3Rlc3RzX2luX3Rlc3RfY2FzZV9zZWxlY3RlZCA9IGZhbHNlOwor
ICAgICAgfQorICAgIH0KKyAgICBFWFBFQ1RfVFJVRShhbGxfdGVzdHNfaW5fdGVzdF9jYXNlX3Nl
bGVjdGVkKQorICAgICAgICA8PCAiV2hlbiBydW5uaW5nIHRoZSBUZXN0R2VuZXJhdGlvblRlc3Qg
dGVzdCBjYXNlIGFsbCBvZiBpdHMgdGVzdHNcbiIKKyAgICAgICAgPDwgIm11c3QgYmUgc2VsZWN0
ZWQgYnkgdGhlIGZpbHRlciBmbGFnIGZvciB0aGUgdGVzdCBjYXNlIHRvIHBhc3MuXG4iCisgICAg
ICAgIDw8ICJJZiBub3QgYWxsIG9mIHRoZW0gYXJlIGVuYWJsZWQsIHdlIGNhbid0IHJlbGlhYmx5
IGNvbmNsdWRlXG4iCisgICAgICAgIDw8ICJ0aGF0IHRoZSBjb3JyZWN0IG51bWJlciBvZiB0ZXN0
cyBoYXZlIGJlZW4gZ2VuZXJhdGVkLiI7CisKKyAgICBjb2xsZWN0ZWRfcGFyYW1ldGVyc18uY2xl
YXIoKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7CisgICAgdmVj
dG9yPGludD4gZXhwZWN0ZWRfdmFsdWVzKHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMgKyBQQVJBTUVU
RVJfQ09VTlQpOworICAgIC8vIFRlc3QgZXhlY3V0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVk
IGJ5IEdvb2dsZSBUZXN0LAorICAgIC8vIHNvIHRoZSBvcmRlciBvZiB2YWx1ZXMgaW4gY29sbGVj
dGVkX3BhcmFtZXRlcnNfIGNhbiBiZQorICAgIC8vIGRpZmZlcmVudCBhbmQgd2UgaGF2ZSB0byBz
b3J0IHRvIGNvbXBhcmUuCisgICAgc29ydChleHBlY3RlZF92YWx1ZXMuYmVnaW4oKSwgZXhwZWN0
ZWRfdmFsdWVzLmVuZCgpKTsKKyAgICBzb3J0KGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5iZWdpbigp
LCBjb2xsZWN0ZWRfcGFyYW1ldGVyc18uZW5kKCkpOworCisgICAgRVhQRUNUX1RSVUUoY29sbGVj
dGVkX3BhcmFtZXRlcnNfID09IGV4cGVjdGVkX3ZhbHVlcyk7CisgIH0KKworIHByb3RlY3RlZDoK
KyAgaW50IGN1cnJlbnRfcGFyYW1ldGVyXzsKKyAgc3RhdGljIHZlY3RvcjxpbnQ+IGNvbGxlY3Rl
ZF9wYXJhbWV0ZXJzXzsKKworIHByaXZhdGU6CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oVGVzdEdlbmVyYXRpb25UZXN0KTsKK307Cit2ZWN0b3I8aW50PiBUZXN0R2VuZXJhdGlv
blRlc3Q6OmNvbGxlY3RlZF9wYXJhbWV0ZXJzXzsKKworVEVTVF9QKFRlc3RHZW5lcmF0aW9uVGVz
dCwgVGVzdHNFeHBhbmRlZEFuZFJ1bikgeworICBFbnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+VGVz
dEJvZHlFeGVjdXRlZCgpOworICBFWFBFQ1RfRVEoY3VycmVudF9wYXJhbWV0ZXJfLCBHZXRQYXJh
bSgpKTsKKyAgY29sbGVjdGVkX3BhcmFtZXRlcnNfLnB1c2hfYmFjayhHZXRQYXJhbSgpKTsKK30K
K0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFRlc3RFeHBhbnNpb25Nb2R1bGUsIFRlc3RHZW5lcmF0
aW9uVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlc0luKHRlc3RfZ2VuZXJhdGlv
bl9wYXJhbXMpKTsKKworLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIGVsZW1lbnQgc2Vx
dWVuY2UgKHRoaXJkIHBhcmFtZXRlciBvZgorLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1ApIGlz
IGV2YWx1YXRlZCBpbiBJbml0R29vZ2xlVGVzdCgpIGFuZCBuZWl0aGVyIGF0CisvLyB0aGUgY2Fs
bCBzaXRlIG9mIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIG5vciBpbiBSVU5fQUxMX1RFU1RTKCku
ICBGb3IKKy8vIHRoYXQsIHdlIGRlY2xhcmUgcGFyYW1fdmFsdWVfIHRvIGJlIGEgc3RhdGljIG1l
bWJlciBvZgorLy8gR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QgYW5kIGluaXRpYWxpemUgaXQgdG8g
MC4gIFdlIHNldCBpdCB0byAxIGluCisvLyBtYWluKCksIGp1c3QgYmVmb3JlIGludm9jYXRpb24g
b2YgSW5pdEdvb2dsZVRlc3QoKS4gIEFmdGVyIGNhbGxpbmcKKy8vIEluaXRHb29nbGVUZXN0KCks
IHdlIHNldCB0aGUgdmFsdWUgdG8gMi4gIElmIHRoZSBzZXF1ZW5jZSBpcyBldmFsdWF0ZWQKKy8v
IGJlZm9yZSBvciBhZnRlciBJbml0R29vZ2xlVGVzdCwgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ag
d2lsbCBjcmVhdGUgYQorLy8gdGVzdCB3aXRoIHBhcmFtZXRlciBvdGhlciB0aGFuIDEsIGFuZCB0
aGUgdGVzdCBib2R5IHdpbGwgZmFpbCB0aGUKKy8vIGFzc2VydGlvbi4KK2NsYXNzIEdlbmVyYXRv
ckV2YWx1YXRpb25UZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7CisgcHVibGljOgor
ICBzdGF0aWMgaW50IHBhcmFtX3ZhbHVlKCkgeyByZXR1cm4gcGFyYW1fdmFsdWVfOyB9CisgIHN0
YXRpYyB2b2lkIHNldF9wYXJhbV92YWx1ZShpbnQgcGFyYW1fdmFsdWUpIHsgcGFyYW1fdmFsdWVf
ID0gcGFyYW1fdmFsdWU7IH0KKworIHByaXZhdGU6CisgIHN0YXRpYyBpbnQgcGFyYW1fdmFsdWVf
OworfTsKK2ludCBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6cGFyYW1fdmFsdWVfID0gMDsKKwor
VEVTVF9QKEdlbmVyYXRvckV2YWx1YXRpb25UZXN0LCBHZW5lcmF0b3JzRXZhbHVhdGVkSW5NYWlu
KSB7CisgIEVYUEVDVF9FUSgxLCBHZXRQYXJhbSgpKTsKK30KK0lOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QKEdlbkV2YWxNb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3JFdmFs
dWF0aW9uVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhHZW5lcmF0b3JFdmFs
dWF0aW9uVGVzdDo6cGFyYW1fdmFsdWUoKSkpOworCisvLyBUZXN0cyB0aGF0IGdlbmVyYXRvcnMg
ZGVmaW5lZCBpbiBhIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0IGFyZQorLy8gZnVuY3Rpb25h
bC4gR2VuZXJhdG9yIGV4dGVybl9nZW4gaXMgZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rl
c3QyLmNjLgorZXh0ZXJuIFBhcmFtR2VuZXJhdG9yPGludD4gZXh0ZXJuX2dlbjsKK2NsYXNzIEV4
dGVybmFsR2VuZXJhdG9yVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4ge307CitURVNU
X1AoRXh0ZXJuYWxHZW5lcmF0b3JUZXN0LCBFeHRlcm5hbEdlbmVyYXRvcikgeworICAvLyBTZXF1
ZW5jZSBwcm9kdWNlZCBieSBleHRlcm5fZ2VuIGNvbnRhaW5zIG9ubHkgYSBzaW5nbGUgdmFsdWUK
KyAgLy8gd2hpY2ggd2UgdmVyaWZ5IGhlcmUuCisgIEVYUEVDVF9FUShHZXRQYXJhbSgpLCAzMyk7
Cit9CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChFeHRlcm5hbEdlbmVyYXRvck1vZHVsZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEV4dGVybmFsR2VuZXJhdG9yVGVzdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGV4dGVybl9nZW4pOworCisvLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXpl
ZCB0ZXN0IGNhc2UgY2FuIGJlIGRlZmluZWQgaW4gb25lIHRyYW5zbGF0aW9uCisvLyB1bml0IGFu
ZCBpbnN0YW50aWF0ZWQgaW4gYW5vdGhlci4gVGhpcyB0ZXN0IHdpbGwgYmUgaW5zdGFudGlhdGVk
IGluCisvLyBndGVzdC1wYXJhbS10ZXN0X3Rlc3QyLmNjLiBFeHRlcm5hbEluc3RhbnRpYXRpb25U
ZXN0IGZpeHR1cmUgY2xhc3MgaXMKKy8vIGRlZmluZWQgaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0
LmguCitURVNUX1AoRXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCwgSXNNdWx0aXBsZU9mMzMpIHsK
KyAgRVhQRUNUX0VRKDAsIEdldFBhcmFtKCkgJSAzMyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBw
YXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgaW5zdGFudGlhdGVkIHdpdGggbXVsdGlwbGUK
Ky8vIGdlbmVyYXRvcnMuCitjbGFzcyBNdWx0aXBsZUluc3RhbnRpYXRpb25UZXN0IDogcHVibGlj
IFRlc3RXaXRoUGFyYW08aW50PiB7fTsKK1RFU1RfUChNdWx0aXBsZUluc3RhbnRpYXRpb25UZXN0
LCBBbGxvd3NNdWx0aXBsZUluc3RhbmNlcykgeworfQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ao
U2VxdWVuY2UxLCBNdWx0aXBsZUluc3RhbnRpYXRpb25UZXN0LCBWYWx1ZXMoMSwgMikpOworSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2UyLCBNdWx0aXBsZUluc3RhbnRpYXRpb25UZXN0
LCBSYW5nZSgzLCA1KSk7CisKKy8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2Fz
ZSBjYW4gYmUgaW5zdGFudGlhdGVkCisvLyBpbiBtdWx0aXBsZSB0cmFuc2xhdGlvbiB1bml0cy4g
VGhpcyB0ZXN0IHdpbGwgYmUgaW5zdGFudGlhdGVkCisvLyBoZXJlIGFuZCBpbiBndGVzdC1wYXJh
bS10ZXN0X3Rlc3QyLmNjLgorLy8gSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhdGlvblVu
aXRzVGVzdCBmaXh0dXJlIGNsYXNzCisvLyBpcyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRlc3Rf
dGVzdC5oLgorVEVTVF9QKEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVz
dCwgSXNNdWx0aXBsZU9mNDIpIHsKKyAgRVhQRUNUX0VRKDAsIEdldFBhcmFtKCkgJSA0Mik7Cit9
CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5jZTEsCisgICAgICAgICAgICAgICAgICAg
ICAgICBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICBWYWx1ZXMoNDIsIDQyKjIpKTsKKworLy8gVGVzdHMgdGhhdCBlYWNo
IGl0ZXJhdGlvbiBvZiBwYXJhbWV0ZXJpemVkIHRlc3QgcnVucyBpbiBhIHNlcGFyYXRlIHRlc3QK
Ky8vIG9iamVjdC4KK2NsYXNzIFNlcGFyYXRlSW5zdGFuY2VUZXN0IDogcHVibGljIFRlc3RXaXRo
UGFyYW08aW50PiB7CisgcHVibGljOgorICBTZXBhcmF0ZUluc3RhbmNlVGVzdCgpIDogY291bnRf
KDApIHt9CisKKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBFWFBFQ1Rf
R0UoZ2xvYmFsX2NvdW50XywgMikKKyAgICAgICAgPDwgIklmIHNvbWUgKGJ1dCBub3QgYWxsKSBT
ZXBhcmF0ZUluc3RhbmNlVGVzdCB0ZXN0cyBoYXZlIGJlZW4gIgorICAgICAgICA8PCAiZmlsdGVy
ZWQgb3V0IHRoaXMgdGVzdCB3aWxsIGZhaWwuIE1ha2Ugc3VyZSB0aGF0IGFsbCAiCisgICAgICAg
IDw8ICJHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCBhcmUgc2VsZWN0ZWQgb3IgZGUtc2VsZWN0ZWQg
dG9nZXRoZXIgIgorICAgICAgICA8PCAiYnkgdGhlIHRlc3QgZmlsdGVyLiI7CisgIH0KKworIHBy
b3RlY3RlZDoKKyAgaW50IGNvdW50XzsKKyAgc3RhdGljIGludCBnbG9iYWxfY291bnRfOworfTsK
K2ludCBTZXBhcmF0ZUluc3RhbmNlVGVzdDo6Z2xvYmFsX2NvdW50XyA9IDA7CisKK1RFU1RfUChT
ZXBhcmF0ZUluc3RhbmNlVGVzdCwgVGVzdHNSdW5JblNlcGFyYXRlSW5zdGFuY2VzKSB7CisgIEVY
UEVDVF9FUSgwLCBjb3VudF8rKyk7CisgIGdsb2JhbF9jb3VudF8rKzsKK30KK0lOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKEZvdXJFbGVtU2VxdWVuY2UsIFNlcGFyYXRlSW5zdGFuY2VUZXN0LCBSYW5n
ZSgxLCA0KSk7CisKKy8vIFRlc3RzIHRoYXQgYWxsIGluc3RhbnRpYXRpb25zIG9mIGEgdGVzdCBo
YXZlIG5hbWVkIGFwcHJvcHJpYXRlbHkuIFRlc3QKKy8vIGRlZmluZWQgd2l0aCBURVNUX1AoVGVz
dENhc2VOYW1lLCBUZXN0TmFtZSkgYW5kIGluc3RhbnRpYXRlZCB3aXRoCisvLyBJTlNUQU5USUFU
RV9URVNUX0NBU0VfUChTZXF1ZW5jZU5hbWUsIFRlc3RDYXNlTmFtZSwgZ2VuZXJhdG9yKSBtdXN0
IGJlIG5hbWVkCisvLyBTZXF1ZW5jZU5hbWUvVGVzdENhc2VOYW1lLlRlc3ROYW1lL2ksIHdoZXJl
IGkgaXMgdGhlIDAtYmFzZWQgaW5kZXggb2YgdGhlCisvLyBzZXF1ZW5jZSBlbGVtZW50IHVzZWQg
dG8gaW5zdGFudGlhdGUgdGhlIHRlc3QuCitjbGFzcyBOYW1pbmdUZXN0IDogcHVibGljIFRlc3RX
aXRoUGFyYW08aW50PiB7fTsKKworVEVTVF9QKE5hbWluZ1Rlc3QsIFRlc3RzUmVwb3J0Q29ycmVj
dE5hbWVzQW5kUGFyYW1ldGVycykgeworICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25z
dCB0ZXN0X2luZm8gPQorICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5j
dXJyZW50X3Rlc3RfaW5mbygpOworCisgIEVYUEVDVF9TVFJFUSgiWmVyb1RvRml2ZVNlcXVlbmNl
L05hbWluZ1Rlc3QiLCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOworCisgIE1lc3NhZ2Ug
aW5kZXhfc3RyZWFtOworICBpbmRleF9zdHJlYW0gPDwgIlRlc3RzUmVwb3J0Q29ycmVjdE5hbWVz
QW5kUGFyYW1ldGVycy8iIDw8IEdldFBhcmFtKCk7CisgIEVYUEVDVF9TVFJFUShpbmRleF9zdHJl
YW0uR2V0U3RyaW5nKCkuY19zdHIoKSwgdGVzdF9pbmZvLT5uYW1lKCkpOworCisgIEVYUEVDVF9F
USg6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoR2V0UGFyYW0oKSksIHRlc3RfaW5mby0+dmFsdWVf
cGFyYW0oKSk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFplcm9Ub0ZpdmVTZXF1ZW5j
ZSwgTmFtaW5nVGVzdCwgUmFuZ2UoMCwgNSkpOworCisvLyBUZXN0cyB0aGF0IG1hY3JvcyBpbiB0
ZXN0IG5hbWVzIGFyZSBleHBhbmRlZCBjb3JyZWN0bHkuCitjbGFzcyBNYWNyb05hbWluZ1Rlc3Qg
OiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHt9OworCisjZGVmaW5lIFBSRUZJWF9XSVRIX0ZP
Tyh0ZXN0X25hbWUpIEZvbyMjdGVzdF9uYW1lCisjZGVmaW5lIFBSRUZJWF9XSVRIX01BQ1JPKHRl
c3RfbmFtZSkgTWFjcm8jI3Rlc3RfbmFtZQorCitURVNUX1AoUFJFRklYX1dJVEhfTUFDUk8oTmFt
aW5nVGVzdCksIFBSRUZJWF9XSVRIX0ZPTyhTb21lVGVzdE5hbWUpKSB7CisgIGNvbnN0IDo6dGVz
dGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGluZzo6VW5pdFRl
c3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisKKyAgRVhQRUNUX1NUUkVR
KCJGb3J0eVR3by9NYWNyb05hbWluZ1Rlc3QiLCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkp
OworICBFWFBFQ1RfU1RSRVEoIkZvb1NvbWVUZXN0TmFtZSIsIHRlc3RfaW5mby0+bmFtZSgpKTsK
K30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoRm9ydHlUd28sIE1hY3JvTmFtaW5nVGVzdCwg
VmFsdWVzKDQyKSk7CisKKy8vIFRlc3RzIHRoZSBzYW1lIHRoaW5nIGZvciBub24tcGFyYW1ldHJp
emVkIHRlc3RzLgorY2xhc3MgTWFjcm9OYW1pbmdUZXN0Tm9uUGFyYW1ldHJpemVkIDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7fTsKKworVEVTVF9GKFBSRUZJWF9XSVRIX01BQ1JPKE5hbWluZ1Rl
c3ROb25QYXJhbWV0cml6ZWQpLAorICAgICAgIFBSRUZJWF9XSVRIX0ZPTyhTb21lVGVzdE5hbWUp
KSB7CisgIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgICAg
IDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7
CisKKyAgRVhQRUNUX1NUUkVRKCJNYWNyb05hbWluZ1Rlc3ROb25QYXJhbWV0cml6ZWQiLCB0ZXN0
X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOworICBFWFBFQ1RfU1RSRVEoIkZvb1NvbWVUZXN0TmFt
ZSIsIHRlc3RfaW5mby0+bmFtZSgpKTsKK30KKworLy8gVGVzdHMgdGhhdCB1c2VyIHN1cHBsaWVk
IGN1c3RvbSBwYXJhbWV0ZXIgbmFtZXMgYXJlIHdvcmtpbmcgY29ycmVjdGx5LgorLy8gUnVucyB0
aGUgdGVzdCB3aXRoIGEgYnVpbHRpbiBoZWxwZXIgbWV0aG9kIHdoaWNoIHVzZXMgUHJpbnRUb1N0
cmluZywKKy8vIGFzIHdlbGwgYXMgYSBjdXN0b20gZnVuY3Rpb24gYW5kIGN1c3RvbSBmdW5jdG9y
IHRvIGVuc3VyZSBhbGwgcG9zc2libGUKKy8vIHVzZXMgd29yayBjb3JyZWN0bHkuCitjbGFzcyBD
dXN0b21GdW5jdG9yTmFtaW5nVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPHN0ZDo6c3RyaW5n
PiB7fTsKK1RFU1RfUChDdXN0b21GdW5jdG9yTmFtaW5nVGVzdCwgQ3VzdG9tVGVzdE5hbWVzKSB7
fQorCitzdHJ1Y3QgQ3VzdG9tUGFyYW1OYW1lRnVuY3RvciB7CisgIHN0ZDo6c3RyaW5nIG9wZXJh
dG9yKCkoY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHN0ZDo6c3RyaW5nPiYgaW5mKSB7
CisgICAgcmV0dXJuIGluZi5wYXJhbTsKKyAgfQorfTsKKworSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoQ3VzdG9tUGFyYW1OYW1lRnVuY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIEN1c3Rv
bUZ1bmN0b3JOYW1pbmdUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKHN0ZDo6
c3RyaW5nKCJGdW5jdG9yTmFtZSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbVBh
cmFtTmFtZUZ1bmN0b3IoKSk7CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFsbEFsbG93ZWRD
aGFyYWN0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRnVuY3Rvck5hbWluZ1Rl
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoImFiY2RlZmdoaWprbG1ub3BxcnN0
dXZ3eHl6IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUJDREVGR0hJSktMTU5P
UFFSU1RVVldYWVoiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwMTIzNDU2Nzg5
MF8iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbVBhcmFtTmFtZUZ1bmN0b3IoKSk7
CisKK2lubGluZSBzdGQ6OnN0cmluZyBDdXN0b21QYXJhbU5hbWVGdW5jdGlvbigKKyAgICBjb25z
dCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88c3RkOjpzdHJpbmc+JiBpbmYpIHsKKyAgcmV0dXJu
IGluZi5wYXJhbTsKK30KKworY2xhc3MgQ3VzdG9tRnVuY3Rpb25OYW1pbmdUZXN0IDogcHVibGlj
IFRlc3RXaXRoUGFyYW08c3RkOjpzdHJpbmc+IHt9OworVEVTVF9QKEN1c3RvbUZ1bmN0aW9uTmFt
aW5nVGVzdCwgQ3VzdG9tVGVzdE5hbWVzKSB7fQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChD
dXN0b21QYXJhbU5hbWVGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZ1
bmN0aW9uTmFtaW5nVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhzdGQ6OnN0
cmluZygiRnVuY3Rpb25OYW1lIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tUGFy
YW1OYW1lRnVuY3Rpb24pOworCisjaWYgR1RFU1RfTEFOR19DWFgxMQorCisvLyBUZXN0IGN1c3Rv
bSBuYW1pbmcgd2l0aCBhIGxhbWJkYQorCitjbGFzcyBDdXN0b21MYW1iZGFOYW1pbmdUZXN0IDog
cHVibGljIFRlc3RXaXRoUGFyYW08c3RkOjpzdHJpbmc+IHt9OworVEVTVF9QKEN1c3RvbUxhbWJk
YU5hbWluZ1Rlc3QsIEN1c3RvbVRlc3ROYW1lcykge30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoQ3VzdG9tUGFyYW1OYW1lTGFtYmRhLCBDdXN0b21MYW1iZGFOYW1pbmdUZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsdWVzKHN0ZDo6c3RyaW5nKCJMYW1iZGFOYW1lIikpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgW10oY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHN0
ZDo6c3RyaW5nPiYgaW5mKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmYu
cGFyYW07CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKworI2VuZGlmICAvLyBHVEVTVF9M
QU5HX0NYWDExCisKK1RFU1QoQ3VzdG9tTmFtaW5nVGVzdCwgQ2hlY2tOYW1lUmVnaXN0cnkpIHsK
KyAgOjp0ZXN0aW5nOjpVbml0VGVzdCogdW5pdF90ZXN0ID0gOjp0ZXN0aW5nOjpVbml0VGVzdDo6
R2V0SW5zdGFuY2UoKTsKKyAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IHRlc3RfbmFtZXM7CisgIGZv
ciAoaW50IGNhc2VfbnVtID0gMDsKKyAgICAgICBjYXNlX251bSA8IHVuaXRfdGVzdC0+dG90YWxf
dGVzdF9jYXNlX2NvdW50KCk7CisgICAgICAgKytjYXNlX251bSkgeworICAgIGNvbnN0IDo6dGVz
dGluZzo6VGVzdENhc2UqIHRlc3RfY2FzZSA9IHVuaXRfdGVzdC0+R2V0VGVzdENhc2UoY2FzZV9u
dW0pOworICAgIGZvciAoaW50IHRlc3RfbnVtID0gMDsKKyAgICAgICAgIHRlc3RfbnVtIDwgdGVz
dF9jYXNlLT50b3RhbF90ZXN0X2NvdW50KCk7CisgICAgICAgICArK3Rlc3RfbnVtKSB7CisgICAg
ICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiB0ZXN0X2luZm8gPSB0ZXN0X2Nhc2UtPkdldFRl
c3RJbmZvKHRlc3RfbnVtKTsKKyAgICAgIHRlc3RfbmFtZXMuaW5zZXJ0KHN0ZDo6c3RyaW5nKHRl
c3RfaW5mby0+bmFtZSgpKSk7CisgICAgfQorICB9CisgIEVYUEVDVF9FUSgxdSwgdGVzdF9uYW1l
cy5jb3VudCgiQ3VzdG9tVGVzdE5hbWVzL0Z1bmN0b3JOYW1lIikpOworICBFWFBFQ1RfRVEoMXUs
IHRlc3RfbmFtZXMuY291bnQoIkN1c3RvbVRlc3ROYW1lcy9GdW5jdGlvbk5hbWUiKSk7CisjaWYg
R1RFU1RfTEFOR19DWFgxMQorICBFWFBFQ1RfRVEoMXUsIHRlc3RfbmFtZXMuY291bnQoIkN1c3Rv
bVRlc3ROYW1lcy9MYW1iZGFOYW1lIikpOworI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCit9
CisKKy8vIFRlc3QgYSBudW1lcmljIG5hbWUgdG8gZW5zdXJlIFByaW50VG9TdHJpbmdQYXJhbU5h
bWUgd29ya3MgY29ycmVjdGx5LgorCitjbGFzcyBDdXN0b21JbnRlZ2VyTmFtaW5nVGVzdCA6IHB1
YmxpYyBUZXN0V2l0aFBhcmFtPGludD4ge307CisKK1RFU1RfUChDdXN0b21JbnRlZ2VyTmFtaW5n
VGVzdCwgVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMpIHsKKyAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0
SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5z
dGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKyAgTWVzc2FnZSB0ZXN0X25hbWVfc3RyZWFt
OworICB0ZXN0X25hbWVfc3RyZWFtIDw8ICJUZXN0c1JlcG9ydENvcnJlY3ROYW1lcy8iIDw8IEdl
dFBhcmFtKCk7CisgIEVYUEVDVF9TVFJFUSh0ZXN0X25hbWVfc3RyZWFtLkdldFN0cmluZygpLmNf
c3RyKCksIHRlc3RfaW5mby0+bmFtZSgpKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ao
UHJpbnRUb1N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUludGVnZXJOYW1p
bmdUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2UoMCwgNSksCisgICAgICAgICAg
ICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmdQYXJhbU5hbWUoKSk7CisKKy8v
IFRlc3QgYSBjdXN0b20gc3RydWN0IHdpdGggUHJpbnRUb1N0cmluZy4KKworc3RydWN0IEN1c3Rv
bVN0cnVjdCB7CisgIGV4cGxpY2l0IEN1c3RvbVN0cnVjdChpbnQgdmFsdWUpIDogeCh2YWx1ZSkg
e30KKyAgaW50IHg7Cit9OworCitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFt
JiBzdHJlYW0sIGNvbnN0IEN1c3RvbVN0cnVjdCYgdmFsKSB7CisgIHN0cmVhbSA8PCB2YWwueDsK
KyAgcmV0dXJuIHN0cmVhbTsKK30KKworY2xhc3MgQ3VzdG9tU3RydWN0TmFtaW5nVGVzdCA6IHB1
YmxpYyBUZXN0V2l0aFBhcmFtPEN1c3RvbVN0cnVjdD4ge307CisKK1RFU1RfUChDdXN0b21TdHJ1
Y3ROYW1pbmdUZXN0LCBUZXN0c1JlcG9ydENvcnJlY3ROYW1lcykgeworICBjb25zdCA6OnRlc3Rp
bmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQorICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0
OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOworICBNZXNzYWdlIHRlc3RfbmFt
ZV9zdHJlYW07CisgIHRlc3RfbmFtZV9zdHJlYW0gPDwgIlRlc3RzUmVwb3J0Q29ycmVjdE5hbWVz
LyIgPDwgR2V0UGFyYW0oKTsKKyAgRVhQRUNUX1NUUkVRKHRlc3RfbmFtZV9zdHJlYW0uR2V0U3Ry
aW5nKCkuY19zdHIoKSwgdGVzdF9pbmZvLT5uYW1lKCkpOworfQorCitJTlNUQU5USUFURV9URVNU
X0NBU0VfUChQcmludFRvU3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tU3Ry
dWN0TmFtaW5nVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhDdXN0b21TdHJ1
Y3QoMCksIEN1c3RvbVN0cnVjdCgxKSksCisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rp
bmc6OlByaW50VG9TdHJpbmdQYXJhbU5hbWUoKSk7CisKKy8vIFRlc3QgdGhhdCB1c2luZyBhIHN0
YXRlZnVsIHBhcmFtZXRlciBuYW1pbmcgZnVuY3Rpb24gd29ya3MgYXMgZXhwZWN0ZWQuCisKK3N0
cnVjdCBTdGF0ZWZ1bE5hbWluZ0Z1bmN0b3IgeworICBTdGF0ZWZ1bE5hbWluZ0Z1bmN0b3IoKSA6
IHN1bSgwKSB7fQorICBzdGQ6OnN0cmluZyBvcGVyYXRvcigpKGNvbnN0IDo6dGVzdGluZzo6VGVz
dFBhcmFtSW5mbzxpbnQ+JiBpbmZvKSB7CisgICAgaW50IHZhbHVlID0gaW5mby5wYXJhbSArIHN1
bTsKKyAgICBzdW0gKz0gaW5mby5wYXJhbTsKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjpQcmludFRv
U3RyaW5nKHZhbHVlKTsKKyAgfQorICBpbnQgc3VtOworfTsKKworY2xhc3MgU3RhdGVmdWxOYW1p
bmdUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHsKKyBwcm90ZWN0
ZWQ6CisgIFN0YXRlZnVsTmFtaW5nVGVzdCgpIDogc3VtXygwKSB7fQorICBpbnQgc3VtXzsKK307
CisKK1RFU1RfUChTdGF0ZWZ1bE5hbWluZ1Rlc3QsIFRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzKSB7
CisgIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6
dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7Cisg
IHN1bV8gKz0gR2V0UGFyYW0oKTsKKyAgTWVzc2FnZSB0ZXN0X25hbWVfc3RyZWFtOworICB0ZXN0
X25hbWVfc3RyZWFtIDw8ICJUZXN0c1JlcG9ydENvcnJlY3ROYW1lcy8iIDw8IHN1bV87CisgIEVY
UEVDVF9TVFJFUSh0ZXN0X25hbWVfc3RyZWFtLkdldFN0cmluZygpLmNfc3RyKCksIHRlc3RfaW5m
by0+bmFtZSgpKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU3RhdGVmdWxOYW1pbmdG
dW5jdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVmdWxOYW1pbmdUZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgUmFuZ2UoMCwgNSksCisgICAgICAgICAgICAgICAgICAgICAg
ICBTdGF0ZWZ1bE5hbWluZ0Z1bmN0b3IoKSk7CisKKy8vIENsYXNzIHRoYXQgY2Fubm90IGJlIHN0
cmVhbWVkIGludG8gYW4gb3N0cmVhbS4gIEl0IG5lZWRzIHRvIGJlIGNvcHlhYmxlCisvLyAoYW5k
LCBpbiBjYXNlIG9mIE1TVkMsIGFsc28gYXNzaWduYWJsZSkgaW4gb3JkZXIgdG8gYmUgYSB0ZXN0
IHBhcmFtZXRlcgorLy8gdHlwZS4gIEl0cyBkZWZhdWx0IGNvcHkgY29uc3RydWN0b3IgYW5kIGFz
c2lnbm1lbnQgb3BlcmF0b3IgZG8gZXhhY3RseQorLy8gd2hhdCB3ZSBuZWVkLgorY2xhc3MgVW5z
dHJlYW1hYmxlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFVuc3RyZWFtYWJsZShpbnQgdmFsdWUp
IDogdmFsdWVfKHZhbHVlKSB7fQorCisgcHJpdmF0ZToKKyAgaW50IHZhbHVlXzsKK307CisKK2Ns
YXNzIENvbW1lbnRUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08VW5zdHJlYW1hYmxlPiB7fTsK
KworVEVTVF9QKENvbW1lbnRUZXN0LCBUZXN0c0NvcnJlY3RseVJlcG9ydFVuc3RyZWFtYWJsZVBh
cmFtcykgeworICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQor
ICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5m
bygpOworCisgIEVYUEVDVF9FUSg6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoR2V0UGFyYW0oKSks
IHRlc3RfaW5mby0+dmFsdWVfcGFyYW0oKSk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KEluc3RhbnRpYXRpb25XaXRoQ29tbWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICBDb21t
ZW50VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhVbnN0cmVhbWFibGUoMSkp
KTsKKworLy8gVmVyaWZ5IHRoYXQgd2UgY2FuIGNyZWF0ZSBhIGhpZXJhcmNoeSBvZiB0ZXN0IGZp
eHR1cmVzLCB3aGVyZSB0aGUgYmFzZQorLy8gY2xhc3MgZml4dHVyZSBpcyBub3QgcGFyYW1ldGVy
aXplZCBhbmQgdGhlIGRlcml2ZWQgY2xhc3MgaXMuIEluIHRoaXMgY2FzZQorLy8gUGFyYW1ldGVy
aXplZERlcml2ZWRUZXN0IGluaGVyaXRzIGZyb20gTm9uUGFyYW1ldGVyaXplZEJhc2VUZXN0LiAg
V2UKKy8vIHBlcmZvcm0gc2ltcGxlIHRlc3RzIG9uIGJvdGguCitjbGFzcyBOb25QYXJhbWV0ZXJp
emVkQmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwdWJsaWM6CisgIE5vblBh
cmFtZXRlcml6ZWRCYXNlVGVzdCgpIDogbl8oMTcpIHsgfQorIHByb3RlY3RlZDoKKyAgaW50IG5f
OworfTsKKworY2xhc3MgUGFyYW1ldGVyaXplZERlcml2ZWRUZXN0IDogcHVibGljIE5vblBhcmFt
ZXRlcml6ZWRCYXNlVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxp
YyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxpbnQ+IHsKKyBwcm90ZWN0ZWQ6CisgIFBh
cmFtZXRlcml6ZWREZXJpdmVkVGVzdCgpIDogY291bnRfKDApIHsgfQorICBpbnQgY291bnRfOwor
ICBzdGF0aWMgaW50IGdsb2JhbF9jb3VudF87Cit9OworCitpbnQgUGFyYW1ldGVyaXplZERlcml2
ZWRUZXN0OjpnbG9iYWxfY291bnRfID0gMDsKKworVEVTVF9GKE5vblBhcmFtZXRlcml6ZWRCYXNl
VGVzdCwgRml4dHVyZUlzSW5pdGlhbGl6ZWQpIHsKKyAgRVhQRUNUX0VRKDE3LCBuXyk7Cit9CisK
K1RFU1RfUChQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3QsIFNlZXNTZXF1ZW5jZSkgeworICBFWFBF
Q1RfRVEoMTcsIG5fKTsKKyAgRVhQRUNUX0VRKDAsIGNvdW50XysrKTsKKyAgRVhQRUNUX0VRKEdl
dFBhcmFtKCksIGdsb2JhbF9jb3VudF8rKyk7Cit9CisKK2NsYXNzIFBhcmFtZXRlcml6ZWREZWF0
aFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4geyB9OworCitURVNU
X0YoUGFyYW1ldGVyaXplZERlYXRoVGVzdCwgR2V0UGFyYW1EaWVzRnJvbVRlc3RGKSB7CisgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoR2V0UGFyYW0oKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiLiogdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0IC4qIik7Cit9CisKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKFJhbmdlWmVyb1RvRml2ZSwgUGFyYW1ldGVyaXplZERlcml2ZWRUZXN0
LCBSYW5nZSgwLCA1KSk7CisKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7Cisg
IC8vIFVzZWQgaW4gVGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZS4KKyAgQWRkR2xvYmFsVGVz
dEVudmlyb25tZW50KFRlc3RHZW5lcmF0aW9uVGVzdDo6RW52aXJvbm1lbnQ6Okluc3RhbmNlKCkp
OworICAvLyBVc2VkIGluIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0IHRlc3QgY2FzZS4gVGVzdHMg
dGhhdCB0aGUgdXBkYXRlZCB2YWx1ZQorICAvLyB3aWxsIGJlIHBpY2tlZCB1cCBmb3IgaW5zdGFu
dGlhdGluZyB0ZXN0cyBpbiBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdC4KKyAgR2VuZXJhdG9yRXZh
bHVhdGlvblRlc3Q6OnNldF9wYXJhbV92YWx1ZSgxKTsKKworICA6OnRlc3Rpbmc6OkluaXRHb29n
bGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICAvLyBVc2VkIGluIEdlbmVyYXRvckV2YWx1YXRpb25U
ZXN0IHRlc3QgY2FzZS4gVGVzdHMgdGhhdCB2YWx1ZSB1cGRhdGVkCisgIC8vIGhlcmUgd2lsbCBO
T1QgYmUgdXNlZCBmb3IgaW5zdGFudGlhdGluZyB0ZXN0cyBpbgorICAvLyBHZW5lcmF0b3JFdmFs
dWF0aW9uVGVzdC4KKyAgR2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnNldF9wYXJhbV92YWx1ZSgy
KTsKKworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5oIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjYzMmE2MWY0OTI2YmE5MjI1MTU5ZGI0Njk4MTBlNDFjYWMwZDIwYzcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0t
dGVzdC10ZXN0LmgKQEAgLTAsMCArMSw1MSBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJ
bmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tp
bmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vCisvLyBUaGlzIGhlYWRlciBmaWxlIHByb3Zp
ZGVzIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkKKy8vIGZvciB0ZXN0aW5n
IEdvb2dsZSBUZXN0IGl0c2VsZi4KKworI2lmbmRlZiBHVEVTVF9URVNUX0dURVNUX1BBUkFNX1RF
U1RfVEVTVF9IXworI2RlZmluZSBHVEVTVF9URVNUX0dURVNUX1BBUkFNX1RFU1RfVEVTVF9IXwor
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworLy8gVGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5n
IGRlZmluaXRpb24gYW5kIGluc3RhbnRpYXRpb24gb2YgYSB0ZXN0CisvLyBpbiBzZXBhcmF0ZSB0
cmFuc2xhdGlvbiB1bml0cy4KK2NsYXNzIEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4geworfTsKKworLy8gVGVzdCBmaXh0dXJl
IGZvciB0ZXN0aW5nIGluc3RhbnRpYXRpb24gb2YgYSB0ZXN0IGluIG11bHRpcGxlCisvLyB0cmFu
c2xhdGlvbiB1bml0cy4KK2NsYXNzIEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVu
aXRzVGVzdAorICAgIDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHsKK307
CisKKyNlbmRpZiAgLy8gR1RFU1RfVEVTVF9HVEVTVF9QQVJBTV9URVNUX1RFU1RfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0
Mi10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFt
LXRlc3QyLXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjViYjk0NWMyZjhlZDI5ZmQ5MDg1NmIyM2UwM2Mw
MWUyYTg0MzA2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0Mi10ZXN0LmNjCkBAIC0wLDAgKzEsNjEgQEAKKy8vIENv
cHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisv
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJp
YnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8KKy8vIFRlc3RzIGZv
ciBHb29nbGUgVGVzdCBpdHNlbGYuICBUaGlzIHZlcmlmaWVzIHRoYXQgdGhlIGJhc2ljIGNvbnN0
cnVjdHMgb2YKKy8vIEdvb2dsZSBUZXN0IHdvcmsuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgorI2luY2x1ZGUgInRlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuaCIKKwordXNpbmcg
Ojp0ZXN0aW5nOjpWYWx1ZXM7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVy
YXRvcjsKKworLy8gVGVzdHMgdGhhdCBnZW5lcmF0b3JzIGRlZmluZWQgaW4gYSBkaWZmZXJlbnQg
dHJhbnNsYXRpb24gdW5pdAorLy8gYXJlIGZ1bmN0aW9uYWwuIFRoZSB0ZXN0IHVzaW5nIGV4dGVy
bl9nZW4gaXMgZGVmaW5lZAorLy8gaW4gZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MuCitQ
YXJhbUdlbmVyYXRvcjxpbnQ+IGV4dGVybl9nZW4gPSBWYWx1ZXMoMzMpOworCisvLyBUZXN0cyB0
aGF0IGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGRlZmluZWQgaW4gb25lIHRyYW5z
bGF0aW9uIHVuaXQKKy8vIGFuZCBpbnN0YW50aWF0ZWQgaW4gYW5vdGhlci4gVGhlIHRlc3QgaXMg
ZGVmaW5lZCBpbgorLy8gZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MgYW5kIEV4dGVybmFs
SW5zdGFudGlhdGlvblRlc3QgZml4dHVyZSBjbGFzcyBpcworLy8gZGVmaW5lZCBpbiBndGVzdC1w
YXJhbS10ZXN0X3Rlc3QuaC4KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKE11bHRpcGxlc09mMzMs
CisgICAgICAgICAgICAgICAgICAgICAgICBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDMzLCA2NikpOworCisvLyBUZXN0cyB0aGF0IGEg
cGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGluc3RhbnRpYXRlZAorLy8gaW4gbXVsdGlw
bGUgdHJhbnNsYXRpb24gdW5pdHMuIEFub3RoZXIgaW5zdGFudGlhdGlvbiBpcyBkZWZpbmVkCisv
LyBpbiBnb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYyBhbmQKKy8vIEluc3RhbnRpYXRpb25J
bk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCBmaXh0dXJlIGlzIGRlZmluZWQgaW4KKy8vIGd0
ZXN0LXBhcmFtLXRlc3RfdGVzdC5oCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5jZTIs
CisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFp
b25Vbml0c1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNDIqMywgNDIqNCwg
NDIqNSkpOworCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3QtcG9ydC10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LXBvcnQtdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTkzMTZmOTViNjM3YWNhOTJmYjVhMTU0NGVj
N2ZjMjdjMmVmYjI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9nb29nbGV0ZXN0LXBvcnQtdGVzdC5jYwpAQCAtMCwwICsxLDEzMDAgQEAKKy8vIENvcHly
aWdodCAyMDA4LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0
aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
Ly8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBUaGlzIGZpbGUgdGVz
dHMgdGhlIGludGVybmFsIGNyb3NzLXBsYXRmb3JtIHN1cHBvcnQgdXRpbGl0aWVzLgorI2luY2x1
ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCisK
KyNpZiBHVEVTVF9PU19NQUMKKyMgaW5jbHVkZSA8dGltZS5oPgorI2VuZGlmICAvLyBHVEVTVF9P
U19NQUMKKworI2luY2x1ZGUgPGxpc3Q+CisjaW5jbHVkZSA8dXRpbGl0eT4gIC8vIEZvciBzdGQ6
OnBhaXIgYW5kIHN0ZDo6bWFrZV9wYWlyLgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCisjaW5jbHVkZSAi
c3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgorCit1c2luZyBzdGQ6Om1ha2VfcGFpcjsKK3VzaW5n
IHN0ZDo6cGFpcjsKKworbmFtZXNwYWNlIHRlc3RpbmcgeworbmFtZXNwYWNlIGludGVybmFsIHsK
KworVEVTVChJc1hEaWdpdFRlc3QsIFdvcmtzRm9yTmFycm93QXNjaWkpIHsKKyAgRVhQRUNUX1RS
VUUoSXNYRGlnaXQoJzAnKSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KCc5JykpOworICBFWFBF
Q1RfVFJVRShJc1hEaWdpdCgnQScpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoJ0YnKSk7Cisg
IEVYUEVDVF9UUlVFKElzWERpZ2l0KCdhJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgnZicp
KTsKKworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoJy0nKSk7CisgIEVYUEVDVF9GQUxTRShJc1hE
aWdpdCgnZycpKTsKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KCdHJykpOworfQorCitURVNUKElz
WERpZ2l0VGVzdCwgUmV0dXJuc0ZhbHNlRm9yTmFycm93Tm9uQXNjaWkpIHsKKyAgRVhQRUNUX0ZB
TFNFKElzWERpZ2l0KHN0YXRpY19jYXN0PGNoYXI+KCdceDgwJykpKTsKKyAgRVhQRUNUX0ZBTFNF
KElzWERpZ2l0KHN0YXRpY19jYXN0PGNoYXI+KCcwJyB8ICdceDgwJykpKTsKK30KKworVEVTVChJ
c1hEaWdpdFRlc3QsIFdvcmtzRm9yV2lkZUFzY2lpKSB7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0
KEwnMCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoTCc5JykpOworICBFWFBFQ1RfVFJVRShJ
c1hEaWdpdChMJ0EnKSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnRicpKTsKKyAgRVhQRUNU
X1RSVUUoSXNYRGlnaXQoTCdhJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdChMJ2YnKSk7CisK
KyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KEwnLScpKTsKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0
KEwnZycpKTsKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KEwnRycpKTsKK30KKworVEVTVChJc1hE
aWdpdFRlc3QsIFJldHVybnNGYWxzZUZvcldpZGVOb25Bc2NpaSkgeworICBFWFBFQ1RfRkFMU0Uo
SXNYRGlnaXQoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHg4MCkpKTsKKyAgRVhQRUNUX0ZBTFNFKElz
WERpZ2l0KHN0YXRpY19jYXN0PHdjaGFyX3Q+KEwnMCcgfCAweDgwKSkpOworICBFWFBFQ1RfRkFM
U0UoSXNYRGlnaXQoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oTCcwJyB8IDB4MTAwKSkpOworfQorCitj
bGFzcyBCYXNlIHsKKyBwdWJsaWM6CisgIC8vIENvcHkgY29uc3RydWN0b3IgYW5kIGFzc2lnbm1l
bnQgb3BlcmF0b3IgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQsIHNvIHdlCisgIC8vIHVzZSB0aGVt
LgorICBCYXNlKCkgOiBtZW1iZXJfKDApIHt9CisgIGV4cGxpY2l0IEJhc2UoaW50IG4pIDogbWVt
YmVyXyhuKSB7fQorICB2aXJ0dWFsIH5CYXNlKCkge30KKyAgaW50IG1lbWJlcigpIHsgcmV0dXJu
IG1lbWJlcl87IH0KKworIHByaXZhdGU6CisgIGludCBtZW1iZXJfOworfTsKKworY2xhc3MgRGVy
aXZlZCA6IHB1YmxpYyBCYXNlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IERlcml2ZWQoaW50IG4p
IDogQmFzZShuKSB7fQorfTsKKworVEVTVChJbXBsaWNpdENhc3RUZXN0LCBDb252ZXJ0c1BvaW50
ZXJzKSB7CisgIERlcml2ZWQgZGVyaXZlZCgwKTsKKyAgRVhQRUNUX1RSVUUoJmRlcml2ZWQgPT0g
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlKj4oJmRlcml2ZWQpKTsKK30K
KworVEVTVChJbXBsaWNpdENhc3RUZXN0LCBDYW5Vc2VJbmhlcml0YW5jZSkgeworICBEZXJpdmVk
IGRlcml2ZWQoMSk7CisgIEJhc2UgYmFzZSA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0
Q2FzdF88QmFzZT4oZGVyaXZlZCk7CisgIEVYUEVDVF9FUShkZXJpdmVkLm1lbWJlcigpLCBiYXNl
Lm1lbWJlcigpKTsKK30KKworY2xhc3MgQ2FzdGFibGUgeworIHB1YmxpYzoKKyAgZXhwbGljaXQg
Q2FzdGFibGUoYm9vbCogY29udmVydGVkKSA6IGNvbnZlcnRlZF8oY29udmVydGVkKSB7fQorICBv
cGVyYXRvciBCYXNlKCkgeworICAgICpjb252ZXJ0ZWRfID0gdHJ1ZTsKKyAgICByZXR1cm4gQmFz
ZSgpOworICB9CisKKyBwcml2YXRlOgorICBib29sKiBjb252ZXJ0ZWRfOworfTsKKworVEVTVChJ
bXBsaWNpdENhc3RUZXN0LCBDYW5Vc2VOb25Db25zdENhc3RPcGVyYXRvcikgeworICBib29sIGNv
bnZlcnRlZCA9IGZhbHNlOworICBDYXN0YWJsZSBjYXN0YWJsZSgmY29udmVydGVkKTsKKyAgQmFz
ZSBiYXNlID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlPihjYXN0YWJs
ZSk7CisgIEVYUEVDVF9UUlVFKGNvbnZlcnRlZCk7Cit9CisKK2NsYXNzIENvbnN0Q2FzdGFibGUg
eworIHB1YmxpYzoKKyAgZXhwbGljaXQgQ29uc3RDYXN0YWJsZShib29sKiBjb252ZXJ0ZWQpIDog
Y29udmVydGVkXyhjb252ZXJ0ZWQpIHt9CisgIG9wZXJhdG9yIEJhc2UoKSBjb25zdCB7CisgICAg
KmNvbnZlcnRlZF8gPSB0cnVlOworICAgIHJldHVybiBCYXNlKCk7CisgIH0KKworIHByaXZhdGU6
CisgIGJvb2wqIGNvbnZlcnRlZF87Cit9OworCitURVNUKEltcGxpY2l0Q2FzdFRlc3QsIENhblVz
ZUNvbnN0Q2FzdE9wZXJhdG9yT25Db25zdFZhbHVlcykgeworICBib29sIGNvbnZlcnRlZCA9IGZh
bHNlOworICBjb25zdCBDb25zdENhc3RhYmxlIGNvbnN0X2Nhc3RhYmxlKCZjb252ZXJ0ZWQpOwor
ICBCYXNlIGJhc2UgPSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+KGNv
bnN0X2Nhc3RhYmxlKTsKKyAgRVhQRUNUX1RSVUUoY29udmVydGVkKTsKK30KKworY2xhc3MgQ29u
c3RBbmROb25Db25zdENhc3RhYmxlIHsKKyBwdWJsaWM6CisgIENvbnN0QW5kTm9uQ29uc3RDYXN0
YWJsZShib29sKiBjb252ZXJ0ZWQsIGJvb2wqIGNvbnN0X2NvbnZlcnRlZCkKKyAgICAgIDogY29u
dmVydGVkXyhjb252ZXJ0ZWQpLCBjb25zdF9jb252ZXJ0ZWRfKGNvbnN0X2NvbnZlcnRlZCkge30K
KyAgb3BlcmF0b3IgQmFzZSgpIHsKKyAgICAqY29udmVydGVkXyA9IHRydWU7CisgICAgcmV0dXJu
IEJhc2UoKTsKKyAgfQorICBvcGVyYXRvciBCYXNlKCkgY29uc3QgeworICAgICpjb25zdF9jb252
ZXJ0ZWRfID0gdHJ1ZTsKKyAgICByZXR1cm4gQmFzZSgpOworICB9CisKKyBwcml2YXRlOgorICBi
b29sKiBjb252ZXJ0ZWRfOworICBib29sKiBjb25zdF9jb252ZXJ0ZWRfOworfTsKKworVEVTVChJ
bXBsaWNpdENhc3RUZXN0LCBDYW5TZWxlY3RCZXR3ZWVuQ29uc3RBbmROb25Db25zdENhc3JBcHBy
b3ByaWF0ZWx5KSB7CisgIGJvb2wgY29udmVydGVkID0gZmFsc2U7CisgIGJvb2wgY29uc3RfY29u
dmVydGVkID0gZmFsc2U7CisgIENvbnN0QW5kTm9uQ29uc3RDYXN0YWJsZSBjYXN0YWJsZSgmY29u
dmVydGVkLCAmY29uc3RfY29udmVydGVkKTsKKyAgQmFzZSBiYXNlID0gOjp0ZXN0aW5nOjppbnRl
cm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlPihjYXN0YWJsZSk7CisgIEVYUEVDVF9UUlVFKGNvbnZl
cnRlZCk7CisgIEVYUEVDVF9GQUxTRShjb25zdF9jb252ZXJ0ZWQpOworCisgIGNvbnZlcnRlZCA9
IGZhbHNlOworICBjb25zdF9jb252ZXJ0ZWQgPSBmYWxzZTsKKyAgY29uc3QgQ29uc3RBbmROb25D
b25zdENhc3RhYmxlIGNvbnN0X2Nhc3RhYmxlKCZjb252ZXJ0ZWQsICZjb25zdF9jb252ZXJ0ZWQp
OworICBiYXNlID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlPihjb25z
dF9jYXN0YWJsZSk7CisgIEVYUEVDVF9GQUxTRShjb252ZXJ0ZWQpOworICBFWFBFQ1RfVFJVRShj
b25zdF9jb252ZXJ0ZWQpOworfQorCitjbGFzcyBUbyB7CisgcHVibGljOgorICBUbyhib29sKiBj
b252ZXJ0ZWQpIHsgKmNvbnZlcnRlZCA9IHRydWU7IH0gIC8vIE5PTElOVAorfTsKKworVEVTVChJ
bXBsaWNpdENhc3RUZXN0LCBDYW5Vc2VJbXBsaWNpdENvbnN0cnVjdG9yKSB7CisgIGJvb2wgY29u
dmVydGVkID0gZmFsc2U7CisgIFRvIHRvID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRD
YXN0XzxUbz4oJmNvbnZlcnRlZCk7CisgICh2b2lkKXRvOworICBFWFBFQ1RfVFJVRShjb252ZXJ0
ZWQpOworfQorCitURVNUKEl0ZXJhdG9yVHJhaXRzVGVzdCwgV29ya3NGb3JTVExDb250YWluZXJJ
dGVyYXRvcnMpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCwKKyAgICAgIEl0ZXJhdG9yVHJh
aXRzPCA6OnN0ZDo6dmVjdG9yPGludD46OmNvbnN0X2l0ZXJhdG9yPjo6dmFsdWVfdHlwZT4oKTsK
KyAgU3RhdGljQXNzZXJ0VHlwZUVxPGJvb2wsCisgICAgICBJdGVyYXRvclRyYWl0czwgOjpzdGQ6
Omxpc3Q8Ym9vbD46Oml0ZXJhdG9yPjo6dmFsdWVfdHlwZT4oKTsKK30KKworVEVTVChJdGVyYXRv
clRyYWl0c1Rlc3QsIFdvcmtzRm9yUG9pbnRlclRvTm9uQ29uc3QpIHsKKyAgU3RhdGljQXNzZXJ0
VHlwZUVxPGNoYXIsIEl0ZXJhdG9yVHJhaXRzPGNoYXIqPjo6dmFsdWVfdHlwZT4oKTsKKyAgU3Rh
dGljQXNzZXJ0VHlwZUVxPGNvbnN0IHZvaWQqLCBJdGVyYXRvclRyYWl0czxjb25zdCB2b2lkKio+
Ojp2YWx1ZV90eXBlPigpOworfQorCitURVNUKEl0ZXJhdG9yVHJhaXRzVGVzdCwgV29ya3NGb3JQ
b2ludGVyVG9Db25zdCkgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y2hhciwgSXRlcmF0b3JUcmFp
dHM8Y29uc3QgY2hhcio+Ojp2YWx1ZV90eXBlPigpOworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y29u
c3Qgdm9pZCosCisgICAgICBJdGVyYXRvclRyYWl0czxjb25zdCB2b2lkKiBjb25zdCo+Ojp2YWx1
ZV90eXBlPigpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBlbGVtZW50X3R5cGUgdHlwZWRlZiBp
cyBhdmFpbGFibGUgaW4gc2NvcGVkX3B0ciBhbmQgcmVmZXJzCisvLyB0byB0aGUgcGFyYW1ldGVy
IHR5cGUuCitURVNUKFNjb3BlZFB0clRlc3QsIERlZmluZXNFbGVtZW50VHlwZSkgeworICBTdGF0
aWNBc3NlcnRUeXBlRXE8aW50LCA6OnRlc3Rpbmc6OmludGVybmFsOjpzY29wZWRfcHRyPGludD46
OmVsZW1lbnRfdHlwZT4oKTsKK30KKworLy8gRklYTUU6IEltcGxlbWVudCBUSEUgUkVTVCBvZiBz
Y29wZWRfcHRyIHRlc3RzLgorCitURVNUKEd0ZXN0Q2hlY2tTeW50YXhUZXN0LCBCZWhhdmVzTGlr
ZUFTaW5nbGVTdGF0ZW1lbnQpIHsKKyAgaWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgR1RFU1RfQ0hF
Q0tfKGZhbHNlKSA8PCAiVGhpcyBzaG91bGQgbmV2ZXIgYmUgZXhlY3V0ZWQ7ICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJJdCdzIGEgY29tcGlsYXRpb24gdGVzdCBvbmx5LiI7CisKKyAg
aWYgKEFsd2F5c1RydWUoKSkKKyAgICBHVEVTVF9DSEVDS18odHJ1ZSk7CisgIGVsc2UKKyAgICA7
ICAvLyBOT0xJTlQKKworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICA7ICAvLyBOT0xJTlQKKyAg
ZWxzZQorICAgIEdURVNUX0NIRUNLXyh0cnVlKSA8PCAiIjsKK30KKworVEVTVChHdGVzdENoZWNr
U3ludGF4VGVzdCwgV29ya3NXaXRoU3dpdGNoKSB7CisgIHN3aXRjaCAoMCkgeworICAgIGNhc2Ug
MToKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBHVEVTVF9DSEVDS18odHJ1ZSk7
CisgIH0KKworICBzd2l0Y2ggKDApCisgICAgY2FzZSAwOgorICAgICAgR1RFU1RfQ0hFQ0tfKHRy
dWUpIDw8ICJDaGVjayBmYWlsZWQgaW4gc3dpdGNoIGNhc2UiOworfQorCisvLyBWZXJpZmllcyBi
ZWhhdmlvciBvZiBGb3JtYXRGaWxlTG9jYXRpb24uCitURVNUKEZvcm1hdEZpbGVMb2NhdGlvblRl
c3QsIEZvcm1hdHNGaWxlTG9jYXRpb24pIHsKKyAgRVhQRUNUX1BSRURfRk9STUFUMihJc1N1YnN0
cmluZywgImZvby5jYyIsIEZvcm1hdEZpbGVMb2NhdGlvbigiZm9vLmNjIiwgNDIpKTsKKyAgRVhQ
RUNUX1BSRURfRk9STUFUMihJc1N1YnN0cmluZywgIjQyIiwgRm9ybWF0RmlsZUxvY2F0aW9uKCJm
b28uY2MiLCA0MikpOworfQorCitURVNUKEZvcm1hdEZpbGVMb2NhdGlvblRlc3QsIEZvcm1hdHNV
bmtub3duRmlsZSkgeworICBFWFBFQ1RfUFJFRF9GT1JNQVQyKAorICAgICAgSXNTdWJzdHJpbmcs
ICJ1bmtub3duIGZpbGUiLCBGb3JtYXRGaWxlTG9jYXRpb24oTlVMTCwgNDIpKTsKKyAgRVhQRUNU
X1BSRURfRk9STUFUMihJc1N1YnN0cmluZywgIjQyIiwgRm9ybWF0RmlsZUxvY2F0aW9uKE5VTEws
IDQyKSk7Cit9CisKK1RFU1QoRm9ybWF0RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c1Vrbm93bkxp
bmUpIHsKKyAgRVhQRUNUX0VRKCJmb28uY2M6IiwgRm9ybWF0RmlsZUxvY2F0aW9uKCJmb28uY2Mi
LCAtMSkpOworfQorCitURVNUKEZvcm1hdEZpbGVMb2NhdGlvblRlc3QsIEZvcm1hdHNVa25vd25G
aWxlQW5kTGluZSkgeworICBFWFBFQ1RfRVEoInVua25vd24gZmlsZToiLCBGb3JtYXRGaWxlTG9j
YXRpb24oTlVMTCwgLTEpKTsKK30KKworLy8gVmVyaWZpZXMgYmVoYXZpb3Igb2YgRm9ybWF0Q29t
cGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvbi4KK1RFU1QoRm9ybWF0Q29tcGlsZXJJbmRlcGVu
ZGVudEZpbGVMb2NhdGlvblRlc3QsIEZvcm1hdHNGaWxlTG9jYXRpb24pIHsKKyAgRVhQRUNUX0VR
KCJmb28uY2M6NDIiLCBGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uKCJmb28u
Y2MiLCA0MikpOworfQorCitURVNUKEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRp
b25UZXN0LCBGb3JtYXRzVWtub3duRmlsZSkgeworICBFWFBFQ1RfRVEoInVua25vd24gZmlsZTo0
MiIsCisgICAgICAgICAgICBGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uKE5V
TEwsIDQyKSk7Cit9CisKK1RFU1QoRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlv
blRlc3QsIEZvcm1hdHNVa25vd25MaW5lKSB7CisgIEVYUEVDVF9FUSgiZm9vLmNjIiwgRm9ybWF0
Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvbigiZm9vLmNjIiwgLTEpKTsKK30KKworVEVT
VChGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c1Vrbm93
bkZpbGVBbmRMaW5lKSB7CisgIEVYUEVDVF9FUSgidW5rbm93biBmaWxlIiwgRm9ybWF0Q29tcGls
ZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvbihOVUxMLCAtMSkpOworfQorCisjaWYgR1RFU1RfT1Nf
TElOVVggfHwgR1RFU1RfT1NfTUFDIHx8IEdURVNUX09TX1FOWCB8fCBHVEVTVF9PU19GVUNIU0lB
Cit2b2lkKiBUaHJlYWRGdW5jKHZvaWQqIGRhdGEpIHsKKyAgaW50ZXJuYWw6Ok11dGV4KiBtdXRl
eCA9IHN0YXRpY19jYXN0PGludGVybmFsOjpNdXRleCo+KGRhdGEpOworICBtdXRleC0+TG9jaygp
OworICBtdXRleC0+VW5sb2NrKCk7CisgIHJldHVybiBOVUxMOworfQorCitURVNUKEdldFRocmVh
ZENvdW50VGVzdCwgUmV0dXJuc0NvcnJlY3RWYWx1ZSkgeworICBjb25zdCBzaXplX3Qgc3RhcnRp
bmdfY291bnQgPSBHZXRUaHJlYWRDb3VudCgpOworICBwdGhyZWFkX3QgICAgICAgdGhyZWFkX2lk
OworCisgIGludGVybmFsOjpNdXRleCBtdXRleDsKKyAgeworICAgIGludGVybmFsOjpNdXRleExv
Y2sgbG9jaygmbXV0ZXgpOworICAgIHB0aHJlYWRfYXR0cl90ICBhdHRyOworICAgIEFTU0VSVF9F
USgwLCBwdGhyZWFkX2F0dHJfaW5pdCgmYXR0cikpOworICAgIEFTU0VSVF9FUSgwLCBwdGhyZWFk
X2F0dHJfc2V0ZGV0YWNoc3RhdGUoJmF0dHIsIFBUSFJFQURfQ1JFQVRFX0pPSU5BQkxFKSk7CisK
KyAgICBjb25zdCBpbnQgc3RhdHVzID0gcHRocmVhZF9jcmVhdGUoJnRocmVhZF9pZCwgJmF0dHIs
ICZUaHJlYWRGdW5jLCAmbXV0ZXgpOworICAgIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0dHJfZGVz
dHJveSgmYXR0cikpOworICAgIEFTU0VSVF9FUSgwLCBzdGF0dXMpOworICAgIEVYUEVDVF9FUShz
dGFydGluZ19jb3VudCArIDEsIEdldFRocmVhZENvdW50KCkpOworICB9CisKKyAgdm9pZCogZHVt
bXk7CisgIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2pvaW4odGhyZWFkX2lkLCAmZHVtbXkpKTsKKwor
ICAvLyBUaGUgT1MgbWF5IG5vdCBpbW1lZGlhdGVseSByZXBvcnQgdGhlIHVwZGF0ZWQgdGhyZWFk
IGNvdW50IGFmdGVyCisgIC8vIGpvaW5pbmcgYSB0aHJlYWQsIGNhdXNpbmcgZmxha2luZXNzIGlu
IHRoaXMgdGVzdC4gVG8gY291bnRlciB0aGF0LCB3ZQorICAvLyB3YWl0IGZvciB1cCB0byAuNSBz
ZWNvbmRzIGZvciB0aGUgT1MgdG8gcmVwb3J0IHRoZSBjb3JyZWN0IHZhbHVlLgorICBmb3IgKGlu
dCBpID0gMDsgaSA8IDU7ICsraSkgeworICAgIGlmIChHZXRUaHJlYWRDb3VudCgpID09IHN0YXJ0
aW5nX2NvdW50KQorICAgICAgYnJlYWs7CisKKyAgICBTbGVlcE1pbGxpc2Vjb25kcygxMDApOwor
ICB9CisKKyAgRVhQRUNUX0VRKHN0YXJ0aW5nX2NvdW50LCBHZXRUaHJlYWRDb3VudCgpKTsKK30K
KyNlbHNlCitURVNUKEdldFRocmVhZENvdW50VGVzdCwgUmV0dXJuc1plcm9XaGVuVW5hYmxlVG9D
b3VudFRocmVhZHMpIHsKKyAgRVhQRUNUX0VRKDBVLCBHZXRUaHJlYWRDb3VudCgpKTsKK30KKyNl
bmRpZiAgLy8gR1RFU1RfT1NfTElOVVggfHwgR1RFU1RfT1NfTUFDIHx8IEdURVNUX09TX1FOWCB8
fCBHVEVTVF9PU19GVUNIU0lBCisKK1RFU1QoR3Rlc3RDaGVja0RlYXRoVGVzdCwgRGllc1dpdGhD
b3JyZWN0T3V0cHV0T25GYWlsdXJlKSB7CisgIGNvbnN0IGJvb2wgYV9mYWxzZV9jb25kaXRpb24g
PSBmYWxzZTsKKyAgY29uc3QgY2hhciByZWdleFtdID0KKyNpZmRlZiBfTVNDX1ZFUgorICAgICAi
Z29vZ2xldGVzdC1wb3J0LXRlc3RcXC5jY1xcKFxcZCtcXCk6IgorI2VsaWYgR1RFU1RfVVNFU19Q
T1NJWF9SRQorICAgICAiZ29vZ2xldGVzdC1wb3J0LXRlc3RcXC5jYzpbMC05XSsiCisjZWxzZQor
ICAgICAiZ29vZ2xldGVzdC1wb3J0LXRlc3RcXC5jYzpcXGQrIgorI2VuZGlmICAvLyBfTVNDX1ZF
UgorICAgICAiLiphX2ZhbHNlX2NvbmRpdGlvbi4qRXh0cmEgaW5mby4qIjsKKworICBFWFBFQ1Rf
REVBVEhfSUZfU1VQUE9SVEVEKEdURVNUX0NIRUNLXyhhX2ZhbHNlX2NvbmRpdGlvbikgPDwgIkV4
dHJhIGluZm8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2V4KTsKK30KKworI2lm
IEdURVNUX0hBU19ERUFUSF9URVNUCisKK1RFU1QoR3Rlc3RDaGVja0RlYXRoVGVzdCwgTGl2ZXNT
aWxlbnRseU9uU3VjY2VzcykgeworICBFWFBFQ1RfRVhJVCh7CisgICAgICBHVEVTVF9DSEVDS18o
dHJ1ZSkgPDwgIkV4dHJhIGluZm8iOworICAgICAgOjpzdGQ6OmNlcnIgPDwgIlN1Y2Nlc3NcbiI7
CisgICAgICBleGl0KDApOyB9LAorICAgICAgOjp0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgwKSwg
IlN1Y2Nlc3MiKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisvLyBW
ZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IGNob29zZSByZWd1bGFyIGV4cHJlc3Npb24gZW5naW5l
IGFwcHJvcHJpYXRlIHRvCisvLyB0aGUgcGxhdGZvcm0uIFRoZSB0ZXN0IHdpbGwgcHJvZHVjZSBj
b21waWxlciBlcnJvcnMgaW4gY2FzZSBvZiBmYWlsdXJlLgorLy8gRm9yIHNpbXBsaWNpdHksIHdl
IG9ubHkgY292ZXIgdGhlIG1vc3QgaW1wb3J0YW50IHBsYXRmb3JtcyBoZXJlLgorVEVTVChSZWdl
eEVuZ2luZVNlbGVjdGlvblRlc3QsIFNlbGVjdHNDb3JyZWN0UmVnZXhFbmdpbmUpIHsKKyNpZiAh
R1RFU1RfVVNFU19QQ1JFCisjIGlmIEdURVNUX0hBU19QT1NJWF9SRQorCisgIEVYUEVDVF9UUlVF
KEdURVNUX1VTRVNfUE9TSVhfUkUpOworCisjIGVsc2UKKworICBFWFBFQ1RfVFJVRShHVEVTVF9V
U0VTX1NJTVBMRV9SRSk7CisKKyMgZW5kaWYKKyNlbmRpZiAgLy8gIUdURVNUX1VTRVNfUENSRQor
fQorCisjaWYgR1RFU1RfVVNFU19QT1NJWF9SRQorCisjIGlmIEdURVNUX0hBU19UWVBFRF9URVNU
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBTdHI+CitjbGFzcyBSRVRlc3QgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpUZXN0IHt9OworCisvLyBEZWZpbmVzIFN0cmluZ1R5cGVzIGFzIHRoZSBsaXN0IG9mIGFs
bCBzdHJpbmcgdHlwZXMgdGhhdCBjbGFzcyBSRQorLy8gc3VwcG9ydHMuCit0eXBlZGVmIHRlc3Rp
bmc6OlR5cGVzPAorICAgIDo6c3RkOjpzdHJpbmcsCisjICBpZiBHVEVTVF9IQVNfR0xPQkFMX1NU
UklORworICAgIDo6c3RyaW5nLAorIyAgZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5H
CisgICAgY29uc3QgY2hhcio+IFN0cmluZ1R5cGVzOworCitUWVBFRF9URVNUX0NBU0UoUkVUZXN0
LCBTdHJpbmdUeXBlcyk7CisKKy8vIFRlc3RzIFJFJ3MgaW1wbGljaXQgY29uc3RydWN0b3JzLgor
VFlQRURfVEVTVChSRVRlc3QsIEltcGxpY2l0Q29uc3RydWN0b3JXb3JrcykgeworICBjb25zdCBS
RSBlbXB0eShUeXBlUGFyYW0oIiIpKTsKKyAgRVhQRUNUX1NUUkVRKCIiLCBlbXB0eS5wYXR0ZXJu
KCkpOworCisgIGNvbnN0IFJFIHNpbXBsZShUeXBlUGFyYW0oImhlbGxvIikpOworICBFWFBFQ1Rf
U1RSRVEoImhlbGxvIiwgc2ltcGxlLnBhdHRlcm4oKSk7CisKKyAgY29uc3QgUkUgbm9ybWFsKFR5
cGVQYXJhbSgiLiooXFx3KykiKSk7CisgIEVYUEVDVF9TVFJFUSgiLiooXFx3KykiLCBub3JtYWwu
cGF0dGVybigpKTsKK30KKworLy8gVGVzdHMgdGhhdCBSRSdzIGNvbnN0cnVjdG9ycyByZWplY3Qg
aW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb25zLgorVFlQRURfVEVTVChSRVRlc3QsIFJlamVjdHNJ
bnZhbGlkUmVnZXgpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIGNvbnN0IFJF
IGludmFsaWQoVHlwZVBhcmFtKCI/IikpOworICB9LCAiXCI/XCIgaXMgbm90IGEgdmFsaWQgUE9T
SVggRXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9uLiIpOworfQorCisvLyBUZXN0cyBSRTo6RnVs
bE1hdGNoKCkuCitUWVBFRF9URVNUKFJFVGVzdCwgRnVsbE1hdGNoV29ya3MpIHsKKyAgY29uc3Qg
UkUgZW1wdHkoVHlwZVBhcmFtKCIiKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goVHlw
ZVBhcmFtKCIiKSwgZW1wdHkpKTsKKyAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goVHlwZVBh
cmFtKCJhIiksIGVtcHR5KSk7CisKKyAgY29uc3QgUkUgcmUoVHlwZVBhcmFtKCJhLip6IikpOwor
ICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYXoiKSwgcmUpKTsKKyAgRVhQ
RUNUX1RSVUUoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oImF4eXoiKSwgcmUpKTsKKyAgRVhQRUNU
X0ZBTFNFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJiYXoiKSwgcmUpKTsKKyAgRVhQRUNUX0ZB
TFNFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJhenkiKSwgcmUpKTsKK30KKworLy8gVGVzdHMg
UkU6OlBhcnRpYWxNYXRjaCgpLgorVFlQRURfVEVTVChSRVRlc3QsIFBhcnRpYWxNYXRjaFdvcmtz
KSB7CisgIGNvbnN0IFJFIGVtcHR5KFR5cGVQYXJhbSgiIikpOworICBFWFBFQ1RfVFJVRShSRTo6
UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiIiksIGVtcHR5KSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQ
YXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCJhIiksIGVtcHR5KSk7CisKKyAgY29uc3QgUkUgcmUoVHlw
ZVBhcmFtKCJhLip6IikpOworICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJh
bSgiYXoiKSwgcmUpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0o
ImF4eXoiKSwgcmUpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0o
ImJheiIpLCByZSkpOworICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgi
YXp5IiksIHJlKSk7CisgIEVYUEVDVF9GQUxTRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgi
enphIiksIHJlKSk7Cit9CisKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUCisKKyNl
bGlmIEdURVNUX1VTRVNfU0lNUExFX1JFCisKK1RFU1QoSXNJblNldFRlc3QsIE51bENoYXJJc05v
dEluQW55U2V0KSB7CisgIEVYUEVDVF9GQUxTRShJc0luU2V0KCdcMCcsICIiKSk7CisgIEVYUEVD
VF9GQUxTRShJc0luU2V0KCdcMCcsICJcMCIpKTsKKyAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ1ww
JywgImEiKSk7Cit9CisKK1RFU1QoSXNJblNldFRlc3QsIFdvcmtzRm9yTm9uTnVsQ2hhcnMpIHsK
KyAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ2EnLCAiQWIiKSk7CisgIEVYUEVDVF9GQUxTRShJc0lu
U2V0KCdjJywgIiIpKTsKKworICBFWFBFQ1RfVFJVRShJc0luU2V0KCdiJywgImJjZCIpKTsKKyAg
RVhQRUNUX1RSVUUoSXNJblNldCgnYicsICJhYiIpKTsKK30KKworVEVTVChJc0FzY2lpRGlnaXRU
ZXN0LCBJc0ZhbHNlRm9yTm9uRGlnaXQpIHsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlEaWdpdCgn
XDAnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpRGlnaXQoJyAnKSk7CisgIEVYUEVDVF9GQUxT
RShJc0FzY2lpRGlnaXQoJysnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpRGlnaXQoJy0nKSk7
CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpRGlnaXQoJy4nKSk7CisgIEVYUEVDVF9GQUxTRShJc0Fz
Y2lpRGlnaXQoJ2EnKSk7Cit9CisKK1RFU1QoSXNBc2NpaURpZ2l0VGVzdCwgSXNUcnVlRm9yRGln
aXQpIHsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaURpZ2l0KCcwJykpOworICBFWFBFQ1RfVFJVRShJ
c0FzY2lpRGlnaXQoJzEnKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlEaWdpdCgnNScpKTsKKyAg
RVhQRUNUX1RSVUUoSXNBc2NpaURpZ2l0KCc5JykpOworfQorCitURVNUKElzQXNjaWlQdW5jdFRl
c3QsIElzRmFsc2VGb3JOb25QdW5jdCkgeworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVB1bmN0KCdc
MCcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlQdW5jdCgnICcpKTsKKyAgRVhQRUNUX0ZBTFNF
KElzQXNjaWlQdW5jdCgnXG4nKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3QoJ2EnKSk7
CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3QoJzAnKSk7Cit9CisKK1RFU1QoSXNBc2NpaVB1
bmN0VGVzdCwgSXNUcnVlRm9yUHVuY3QpIHsKKyAgZm9yIChjb25zdCBjaGFyKiBwID0gIl4tIVwi
IyQlJicoKSorLC4vOjs8PT4/QFtcXF1fYHt8fX4iOyAqcDsgcCsrKSB7CisgICAgRVhQRUNUX1BS
RUQxKElzQXNjaWlQdW5jdCwgKnApOworICB9Cit9CisKK1RFU1QoSXNSZXBlYXRUZXN0LCBJc0Zh
bHNlRm9yTm9uUmVwZWF0Q2hhcikgeworICBFWFBFQ1RfRkFMU0UoSXNSZXBlYXQoJ1wwJykpOwor
ICBFWFBFQ1RfRkFMU0UoSXNSZXBlYXQoJyAnKSk7CisgIEVYUEVDVF9GQUxTRShJc1JlcGVhdCgn
YScpKTsKKyAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCcxJykpOworICBFWFBFQ1RfRkFMU0UoSXNS
ZXBlYXQoJy0nKSk7Cit9CisKK1RFU1QoSXNSZXBlYXRUZXN0LCBJc1RydWVGb3JSZXBlYXRDaGFy
KSB7CisgIEVYUEVDVF9UUlVFKElzUmVwZWF0KCc/JykpOworICBFWFBFQ1RfVFJVRShJc1JlcGVh
dCgnKicpKTsKKyAgRVhQRUNUX1RSVUUoSXNSZXBlYXQoJysnKSk7Cit9CisKK1RFU1QoSXNBc2Np
aVdoaXRlU3BhY2VUZXN0LCBJc0ZhbHNlRm9yTm9uV2hpdGVTcGFjZSkgeworICBFWFBFQ1RfRkFM
U0UoSXNBc2NpaVdoaXRlU3BhY2UoJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdoaXRl
U3BhY2UoJ2EnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV2hpdGVTcGFjZSgnMScpKTsKKyAg
RVhQRUNUX0ZBTFNFKElzQXNjaWlXaGl0ZVNwYWNlKCcrJykpOworICBFWFBFQ1RfRkFMU0UoSXNB
c2NpaVdoaXRlU3BhY2UoJ18nKSk7Cit9CisKK1RFU1QoSXNBc2NpaVdoaXRlU3BhY2VUZXN0LCBJ
c1RydWVGb3JXaGl0ZVNwYWNlKSB7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXaGl0ZVNwYWNlKCcg
JykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnXG4nKSk7CisgIEVYUEVDVF9U
UlVFKElzQXNjaWlXaGl0ZVNwYWNlKCdccicpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdoaXRl
U3BhY2UoJ1x0JykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnXHYnKSk7Cisg
IEVYUEVDVF9UUlVFKElzQXNjaWlXaGl0ZVNwYWNlKCdcZicpKTsKK30KKworVEVTVChJc0FzY2lp
V29yZENoYXJUZXN0LCBJc0ZhbHNlRm9yTm9uV29yZENoYXIpIHsKKyAgRVhQRUNUX0ZBTFNFKElz
QXNjaWlXb3JkQ2hhcignXDAnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV29yZENoYXIoJysn
KSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV29yZENoYXIoJy4nKSk7CisgIEVYUEVDVF9GQUxT
RShJc0FzY2lpV29yZENoYXIoJyAnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV29yZENoYXIo
J1xuJykpOworfQorCitURVNUKElzQXNjaWlXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvckxldHRlcikg
eworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJ2EnKSk7CisgIEVYUEVDVF9UUlVFKElz
QXNjaWlXb3JkQ2hhcignYicpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCdBJykp
OworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJ1onKSk7Cit9CisKK1RFU1QoSXNBc2Np
aVdvcmRDaGFyVGVzdCwgSXNUcnVlRm9yRGlnaXQpIHsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdv
cmRDaGFyKCcwJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJzEnKSk7CisgIEVY
UEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignNycpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdv
cmRDaGFyKCc5JykpOworfQorCitURVNUKElzQXNjaWlXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvclVu
ZGVyc2NvcmUpIHsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCdfJykpOworfQorCitU
RVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc0ZhbHNlRm9yTm9uUHJpbnRhYmxlKSB7CisgIEVYUEVD
VF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2Nh
cGUoJ1wwMDcnKSk7Cit9CisKK1RFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzRmFsc2VGb3JEaWdp
dCkgeworICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnMCcpKTsKKyAgRVhQRUNUX0ZBTFNF
KElzVmFsaWRFc2NhcGUoJzknKSk7Cit9CisKK1RFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzRmFs
c2VGb3JXaGl0ZVNwYWNlKSB7CisgIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCcgJykpOwor
ICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnXG4nKSk7Cit9CisKK1RFU1QoSXNWYWxpZEVz
Y2FwZVRlc3QsIElzRmFsc2VGb3JTb21lTGV0dGVyKSB7CisgIEVYUEVDVF9GQUxTRShJc1ZhbGlk
RXNjYXBlKCdhJykpOworICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnWicpKTsKK30KKwor
VEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNUcnVlRm9yUHVuY3QpIHsKKyAgRVhQRUNUX1RSVUUo
SXNWYWxpZEVzY2FwZSgnLicpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnLScpKTsK
KyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnXicpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxp
ZEVzY2FwZSgnJCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnKCcpKTsKKyAgRVhQ
RUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnXScpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2Fw
ZSgneycpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnfCcpKTsKK30KKworVEVTVChJ
c1ZhbGlkRXNjYXBlVGVzdCwgSXNUcnVlRm9yU29tZUxldHRlcikgeworICBFWFBFQ1RfVFJVRShJ
c1ZhbGlkRXNjYXBlKCdkJykpOworICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdEJykpOwor
ICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdzJykpOworICBFWFBFQ1RfVFJVRShJc1ZhbGlk
RXNjYXBlKCdTJykpOworICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCd3JykpOworICBFWFBF
Q1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdXJykpOworfQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRl
c3QsIEVzY2FwZWRQdW5jdCkgeworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICdcXCcsICdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXFwn
LCAnICcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXycsICcuJykp
OworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICcuJywgJ2EnKSk7CisKKyAg
RVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdcXCcsICdcXCcpKTsKKyAgRVhQRUNU
X1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdfJywgJ18nKSk7CisgIEVYUEVDVF9UUlVFKEF0
b21NYXRjaGVzQ2hhcih0cnVlLCAnKycsICcrJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJy4nLCAnLicpKTsKK30KKworVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBF
c2NhcGVkX2QpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICdc
MCcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICdhJykpOwor
ICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywgJy4nKSk7CisKKyAgRVhQ
RUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywgJzAnKSk7CisgIEVYUEVDVF9UUlVF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICc5JykpOworfQorCitURVNUKEF0b21NYXRjaGVz
Q2hhclRlc3QsIEVzY2FwZWRfRCkgeworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICdEJywgJzAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0Qn
LCAnOScpKTsKKworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0QnLCAnXDAn
KSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcsICdhJykpOworICBF
WFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0QnLCAnLScpKTsKK30KKworVEVTVChB
dG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX3MpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAncycsICdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hh
cih0cnVlLCAncycsICdhJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICdzJywgJy4nKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAn
OScpKTsKKworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnICcpKTsK
KyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJ1xuJykpOworICBFWFBF
Q1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnXHQnKSk7Cit9CisKK1RFU1QoQXRv
bU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF9TKSB7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ1MnLCAnICcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAnUycsICdccicpKTsKKworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwg
J1MnLCAnXDAnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICdh
JykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnOScpKTsKK30K
KworVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX3cpIHsKKyAgRVhQRUNUX0ZBTFNF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAndycsICcrJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICd3JywgJyAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ3cnLCAnXG4nKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3
JywgJzAnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdiJykp
OworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnQycpKTsKKyAgRVhQ
RUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJ18nKSk7Cit9CisKK1RFU1QoQXRv
bU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF9XKSB7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ1cnLCAnQScpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAnVycsICdiJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdX
JywgJzknKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnXycp
KTsKKworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnXDAnKSk7Cisg
IEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICcqJykpOworICBFWFBFQ1Rf
VFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnXG4nKSk7Cit9CisKK1RFU1QoQXRvbU1h
dGNoZXNDaGFyVGVzdCwgRXNjYXBlZFdoaXRlU3BhY2UpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAnZicsICdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAnZicsICdcbicpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAnbicsICdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
bicsICdccicpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncicsICdc
MCcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncicsICdhJykpOwor
ICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd0JywgJ1wwJykpOworICBFWFBF
Q1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd0JywgJ3QnKSk7CisgIEVYUEVDVF9GQUxT
RShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3YnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ3YnLCAnXGYnKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNo
ZXNDaGFyKHRydWUsICdmJywgJ1xmJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ24nLCAnXG4nKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
cicsICdccicpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd0JywgJ1x0
JykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3YnLCAnXHYnKSk7Cit9
CisKK1RFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgVW5lc2NhcGVkRG90KSB7CisgIEVYUEVDVF9G
QUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICcuJywgJ1xuJykpOworCisgIEVYUEVDVF9UUlVF
KEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4nLCAnXDAnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21N
YXRjaGVzQ2hhcihmYWxzZSwgJy4nLCAnLicpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXND
aGFyKGZhbHNlLCAnLicsICdhJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFs
c2UsICcuJywgJyAnKSk7Cit9CisKK1RFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgVW5lc2NhcGVk
Q2hhcikgeworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnYScsICdcMCcp
KTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJ2EnLCAnYicpKTsKKyAg
RVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJyQnLCAnYScpKTsKKworICBFWFBF
Q1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICckJywgJyQnKSk7CisgIEVYUEVDVF9UUlVF
KEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJzUnLCAnNScpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1h
dGNoZXNDaGFyKGZhbHNlLCAnWicsICdaJykpOworfQorCitURVNUKFZhbGlkYXRlUmVnZXhUZXN0
LCBHZW5lcmF0ZXNGYWlsdXJlQW5kUmV0dXJuc0ZhbHNlRm9ySW52YWxpZCkgeworICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleChOVUxMKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICJOVUxMIGlzIG5vdCBhIHZhbGlkIHNpbXBsZSByZWd1bGFy
IGV4cHJlc3Npb24iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBBU1NFUlRf
RkFMU0UoVmFsaWRhdGVSZWdleCgiYVxcIikpLAorICAgICAgIlN5bnRheCBlcnJvciBhdCBpbmRl
eCAxIGluIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24gXCJhXFxcIjogIik7CisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJhXFwiKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICInXFwnIGNhbm5vdCBhcHBlYXIgYXQgdGhlIGVuZCIpOwor
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiXFxu
XFwiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICInXFwnIGNhbm5vdCBhcHBlYXIgYXQg
dGhlIGVuZCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRh
dGVSZWdleCgiXFxzXFxoYiIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQg
ZXNjYXBlIHNlcXVlbmNlIFwiXFxoXCIiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNT
RVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIl5eIikpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAiJ14nIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgYmVnaW5uaW5nIik7CisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCIuKl5iIikpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiJ14nIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgYmVnaW5uaW5n
Iik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4
KCIkJCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIickJyBjYW4gb25seSBhcHBlYXIg
YXQgdGhlIGVuZCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFs
aWRhdGVSZWdleCgiXiRhIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJyQnIGNhbiBv
bmx5IGFwcGVhciBhdCB0aGUgZW5kIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VS
VF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJhKGIiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICInKCcgaXMgdW5zdXBwb3J0ZWQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJU
X0ZBTFNFKFZhbGlkYXRlUmVnZXgoImFiKSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IicpJyBpcyB1bnN1cHBvcnRlZCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRf
RkFMU0UoVmFsaWRhdGVSZWdleCgiW2FiIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAi
J1snIGlzIHVuc3VwcG9ydGVkIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9G
QUxTRShWYWxpZGF0ZVJlZ2V4KCJhezIiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICIn
eycgaXMgdW5zdXBwb3J0ZWQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZB
TFNFKFZhbGlkYXRlUmVnZXgoIj8iKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICInPycg
Y2FuIG9ubHkgZm9sbG93IGEgcmVwZWF0YWJsZSB0b2tlbiIpOworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiXioiKSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICInKicgY2FuIG9ubHkgZm9sbG93IGEgcmVwZWF0YWJsZSB0b2tlbiIpOwor
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiNSor
IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJysnIGNhbiBvbmx5IGZvbGxvdyBhIHJl
cGVhdGFibGUgdG9rZW4iKTsKK30KKworVEVTVChWYWxpZGF0ZVJlZ2V4VGVzdCwgUmV0dXJuc1Ry
dWVGb3JWYWxpZCkgeworICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCIiKSk7CisgIEVYUEVD
VF9UUlVFKFZhbGlkYXRlUmVnZXgoImEiKSk7CisgIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgo
Ii4qIikpOworICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCJeYV8rIikpOworICBFWFBFQ1Rf
VFJVRShWYWxpZGF0ZVJlZ2V4KCJeYVxcdFxcJj8iKSk7CisgIEVYUEVDVF9UUlVFKFZhbGlkYXRl
UmVnZXgoIjA5KiQiKSk7CisgIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIl5aJCIpKTsKKyAg
RVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiYVxcXlpcXCRcXChcXClcXHxcXFtcXF1cXHtcXH0i
KSk7Cit9CisKK1RFU1QoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc0Zv
clplcm9Pck9uZSkgeworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhl
YWQoZmFsc2UsICdhJywgJz8nLCAiYSIsICJiYSIpKTsKKyAgLy8gUmVwZWF0aW5nIG1vcmUgdGhh
biBvbmNlLgorICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFs
c2UsICdhJywgJz8nLCAiYiIsICJhYWIiKSk7CisKKyAgLy8gUmVwZWF0aW5nIHplcm8gdGltZXMu
CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnYScs
ICc/JywgImIiLCAiYmEiKSk7CisgIC8vIFJlcGVhdGluZyBvbmNlLgorICBFWFBFQ1RfVFJVRShN
YXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJ2EnLCAnPycsICJiIiwgImFiIikp
OworICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJyMn
LCAnPycsICIuIiwgIiMjIikpOworfQorCitURVNUKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRI
ZWFkVGVzdCwgV29ya3NGb3JaZXJvT3JNYW55KSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0
aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKicsICJhJCIsICJiYWFiIikpOworCisg
IC8vIFJlcGVhdGluZyB6ZXJvIHRpbWVzLgorICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25B
bmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKicsICJiIiwgImJjIikpOworICAvLyBSZXBlYXRp
bmcgb25jZS4KKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFs
c2UsICcuJywgJyonLCAiYiIsICJhYmMiKSk7CisgIC8vIFJlcGVhdGluZyBtb3JlIHRoYW4gb25j
ZS4KKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQodHJ1ZSwgJ3cn
LCAnKicsICItIiwgImFiXzEtZyIpKTsKK30KKworVEVTVChNYXRjaFJlcGV0aXRpb25BbmRSZWdl
eEF0SGVhZFRlc3QsIFdvcmtzRm9yT25lT3JNYW55KSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJl
cGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKycsICJhJCIsICJiYWFiIikpOwor
ICAvLyBSZXBlYXRpbmcgemVybyB0aW1lcy4KKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlv
bkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcrJywgImIiLCAiYmMiKSk7CisKKyAgLy8gUmVw
ZWF0aW5nIG9uY2UuCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFk
KGZhbHNlLCAnLicsICcrJywgImIiLCAiYWJjIikpOworICAvLyBSZXBlYXRpbmcgbW9yZSB0aGFu
IG9uY2UuCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKHRydWUs
ICd3JywgJysnLCAiLSIsICJhYl8xLWciKSk7Cit9CisKK1RFU1QoTWF0Y2hSZWdleEF0SGVhZFRl
c3QsIFJldHVybnNUcnVlRm9yRW1wdHlSZWdleCkgeworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4
QXRIZWFkKCIiLCAiIikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCIiLCAiYWIi
KSk7Cit9CisKK1RFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIFdvcmtzV2hlbkRvbGxhcklzSW5S
ZWdleCkgeworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiJCIsICJhIikpOworCisg
IEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIiQiLCAiIikpOworICBFWFBFQ1RfVFJVRShN
YXRjaFJlZ2V4QXRIZWFkKCJhJCIsICJhIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBdEhlYWRU
ZXN0LCBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhFc2NhcGVTZXF1ZW5jZSkgeworICBFWFBFQ1Rf
RkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiXFx3IiwgIisiKSk7CisgIEVYUEVDVF9GQUxTRShNYXRj
aFJlZ2V4QXRIZWFkKCJcXFciLCAiYWIiKSk7CisKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0
SGVhZCgiXFxzYSIsICJcbmFiIikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJc
XGQiLCAiMWEiKSk7Cit9CisKK1RFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIFdvcmtzV2hlblJl
Z2V4U3RhcnRzV2l0aFJlcGV0aXRpb24pIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhl
YWQoIi4rYSIsICJhYmMiKSk7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJhP2Ii
LCAiYWFiIikpOworCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIi4qYSIsICJiYzEy
LWFiIikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJhP2IiLCAiYiIpKTsKKyAg
RVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiYT9iIiwgImFiIikpOworfQorCitURVNUKE1h
dGNoUmVnZXhBdEhlYWRUZXN0LAorICAgICBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhSZXBldGlv
bk9mRXNjYXBlU2VxdWVuY2UpIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIlxc
LithIiwgImFiYyIpKTsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIlxccz9iIiwg
IiAgYiIpKTsKKworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXCgqYSIsICIoKCgo
YWIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcXj9iIiwgIl5iIikpOwor
ICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXFxcP2IiLCAiYiIpKTsKKyAgRVhQRUNU
X1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxcXD9iIiwgIlxcYiIpKTsKK30KKworVEVTVChNYXRj
aFJlZ2V4QXRIZWFkVGVzdCwgTWF0Y2hlc1NlcXVlbnRpYWxseSkgeworICBFWFBFQ1RfRkFMU0Uo
TWF0Y2hSZWdleEF0SGVhZCgiYWIuKmMiLCAiYWNhYmMiKSk7CisKKyAgRVhQRUNUX1RSVUUoTWF0
Y2hSZWdleEF0SGVhZCgiYWIuKmMiLCAiYWItZnNjIikpOworfQorCitURVNUKE1hdGNoUmVnZXhB
bnl3aGVyZVRlc3QsIFJldHVybnNGYWxzZVdoZW5TdHJpbmdJc051bGwpIHsKKyAgRVhQRUNUX0ZB
TFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiIiwgTlVMTCkpOworfQorCitURVNUKE1hdGNoUmVnZXhB
bnl3aGVyZVRlc3QsIFdvcmtzV2hlblJlZ2V4U3RhcnRzV2l0aENhcmV0KSB7CisgIEVYUEVDVF9G
QUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoIl5hIiwgImJhIikpOworICBFWFBFQ1RfRkFMU0UoTWF0
Y2hSZWdleEFueXdoZXJlKCJeJCIsICJhIikpOworCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhB
bnl3aGVyZSgiXmEiLCAiYWIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgi
XiIsICJhYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJeJCIsICIiKSk7
Cit9CisKK1RFU1QoTWF0Y2hSZWdleEFueXdoZXJlVGVzdCwgUmV0dXJuc0ZhbHNlV2hlbk5vTWF0
Y2gpIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiYSIsICJiY2RlMTIzIikp
OworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJlKCJhLithIiwgIi0tYWE4ODg4ODg4
OCIpKTsKK30KKworVEVTVChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5zVHJ1ZVdoZW5N
YXRjaGluZ1ByZWZpeCkgeworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIlxcdysi
LCAiYWIxXyAtIDUiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiLio9Iiwg
Ij0iKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgieC4qYWI/LipiYyIsICJ4
YWFhYmMiKSk7Cit9CisKK1RFU1QoTWF0Y2hSZWdleEFueXdoZXJlVGVzdCwgUmV0dXJuc1RydWVX
aGVuTWF0Y2hpbmdOb25QcmVmaXgpIHsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJl
KCJcXHcrIiwgIiQkJCBhYjFfIC0gNSIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdo
ZXJlKCJcXC4rPSIsICI9ICAuLi49IikpOworfQorCisvLyBUZXN0cyBSRSdzIGltcGxpY2l0IGNv
bnN0cnVjdG9ycy4KK1RFU1QoUkVUZXN0LCBJbXBsaWNpdENvbnN0cnVjdG9yV29ya3MpIHsKKyAg
Y29uc3QgUkUgZW1wdHkoIiIpOworICBFWFBFQ1RfU1RSRVEoIiIsIGVtcHR5LnBhdHRlcm4oKSk7
CisKKyAgY29uc3QgUkUgc2ltcGxlKCJoZWxsbyIpOworICBFWFBFQ1RfU1RSRVEoImhlbGxvIiwg
c2ltcGxlLnBhdHRlcm4oKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUkUncyBjb25zdHJ1Y3RvcnMg
cmVqZWN0IGludmFsaWQgcmVndWxhciBleHByZXNzaW9ucy4KK1RFU1QoUkVUZXN0LCBSZWplY3Rz
SW52YWxpZFJlZ2V4KSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKKyAgICBjb25zdCBS
RSBub3JtYWwoTlVMTCk7CisgIH0sICJOVUxMIGlzIG5vdCBhIHZhbGlkIHNpbXBsZSByZWd1bGFy
IGV4cHJlc3Npb24iKTsKKworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAgY29uc3Qg
UkUgbm9ybWFsKCIuKihcXHcrIik7CisgIH0sICInKCcgaXMgdW5zdXBwb3J0ZWQiKTsKKworICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAgY29uc3QgUkUgaW52YWxpZCgiXj8iKTsKKyAg
fSwgIic/JyBjYW4gb25seSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2VuIik7Cit9CisKKy8vIFRl
c3RzIFJFOjpGdWxsTWF0Y2goKS4KK1RFU1QoUkVUZXN0LCBGdWxsTWF0Y2hXb3JrcykgeworICBj
b25zdCBSRSBlbXB0eSgiIik7CisgIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goIiIsIGVtcHR5
KSk7CisgIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKCJhIiwgZW1wdHkpKTsKKworICBjb25z
dCBSRSByZTEoImEiKTsKKyAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaCgiYSIsIHJlMSkpOwor
CisgIGNvbnN0IFJFIHJlKCJhLip6Iik7CisgIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goImF6
IiwgcmUpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaCgiYXh5eiIsIHJlKSk7CisgIEVY
UEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKCJiYXoiLCByZSkpOworICBFWFBFQ1RfRkFMU0UoUkU6
OkZ1bGxNYXRjaCgiYXp5IiwgcmUpKTsKK30KKworLy8gVGVzdHMgUkU6OlBhcnRpYWxNYXRjaCgp
LgorVEVTVChSRVRlc3QsIFBhcnRpYWxNYXRjaFdvcmtzKSB7CisgIGNvbnN0IFJFIGVtcHR5KCIi
KTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiIiwgZW1wdHkpKTsKKyAgRVhQRUNU
X1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiYSIsIGVtcHR5KSk7CisKKyAgY29uc3QgUkUgcmUoImEu
KnoiKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiYXoiLCByZSkpOworICBFWFBF
Q1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCJheHl6IiwgcmUpKTsKKyAgRVhQRUNUX1RSVUUoUkU6
OlBhcnRpYWxNYXRjaCgiYmF6IiwgcmUpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRj
aCgiYXp5IiwgcmUpKTsKKyAgRVhQRUNUX0ZBTFNFKFJFOjpQYXJ0aWFsTWF0Y2goInp6YSIsIHJl
KSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfVVNFU19QT1NJWF9SRQorCisjaWYgIUdURVNUX09T
X1dJTkRPV1NfTU9CSUxFCisKK1RFU1QoQ2FwdHVyZVRlc3QsIENhcHR1cmVzU3Rkb3V0KSB7Cisg
IENhcHR1cmVTdGRvdXQoKTsKKyAgZnByaW50ZihzdGRvdXQsICJhYmMiKTsKKyAgRVhQRUNUX1NU
UkVRKCJhYmMiLCBHZXRDYXB0dXJlZFN0ZG91dCgpLmNfc3RyKCkpOworCisgIENhcHR1cmVTdGRv
dXQoKTsKKyAgZnByaW50ZihzdGRvdXQsICJkZWYlY2doaSIsICdcMCcpOworICBFWFBFQ1RfRVEo
OjpzdGQ6OnN0cmluZygiZGVmXDBnaGkiLCA3KSwgOjpzdGQ6OnN0cmluZyhHZXRDYXB0dXJlZFN0
ZG91dCgpKSk7Cit9CisKK1RFU1QoQ2FwdHVyZVRlc3QsIENhcHR1cmVzU3RkZXJyKSB7CisgIENh
cHR1cmVTdGRlcnIoKTsKKyAgZnByaW50ZihzdGRlcnIsICJqa2wiKTsKKyAgRVhQRUNUX1NUUkVR
KCJqa2wiLCBHZXRDYXB0dXJlZFN0ZGVycigpLmNfc3RyKCkpOworCisgIENhcHR1cmVTdGRlcnIo
KTsKKyAgZnByaW50ZihzdGRlcnIsICJqa2wlY21ubyIsICdcMCcpOworICBFWFBFQ1RfRVEoOjpz
dGQ6OnN0cmluZygiamtsXDBtbm8iLCA3KSwgOjpzdGQ6OnN0cmluZyhHZXRDYXB0dXJlZFN0ZGVy
cigpKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgc3Rkb3V0IGFuZCBzdGRlcnIgY2FwdHVyZSBkb24n
dCBpbnRlcmZlcmUgd2l0aCBlYWNoIG90aGVyLgorVEVTVChDYXB0dXJlVGVzdCwgQ2FwdHVyZXNT
dGRvdXRBbmRTdGRlcnIpIHsKKyAgQ2FwdHVyZVN0ZG91dCgpOworICBDYXB0dXJlU3RkZXJyKCk7
CisgIGZwcmludGYoc3Rkb3V0LCAicHFyIik7CisgIGZwcmludGYoc3RkZXJyLCAic3R1Iik7Cisg
IEVYUEVDVF9TVFJFUSgicHFyIiwgR2V0Q2FwdHVyZWRTdGRvdXQoKS5jX3N0cigpKTsKKyAgRVhQ
RUNUX1NUUkVRKCJzdHUiLCBHZXRDYXB0dXJlZFN0ZGVycigpLmNfc3RyKCkpOworfQorCitURVNU
KENhcHR1cmVEZWF0aFRlc3QsIENhbm5vdFJlZW50ZXJTdGRvdXRDYXB0dXJlKSB7CisgIENhcHR1
cmVTdGRvdXQoKTsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChDYXB0dXJlU3Rkb3V0KCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9ubHkgb25lIHN0ZG91dCBjYXB0dXJlciBj
YW4gZXhpc3QgYXQgYSB0aW1lIik7CisgIEdldENhcHR1cmVkU3Rkb3V0KCk7CisKKyAgLy8gV2Ug
Y2Fubm90IHRlc3Qgc3RkZXJyIGNhcHR1cmluZyB1c2luZyBkZWF0aCB0ZXN0cyBhcyB0aGV5IHVz
ZSBpdAorICAvLyB0aGVtc2VsdmVzLgorfQorCisjZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dT
X01PQklMRQorCitURVNUKFRocmVhZExvY2FsVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9ySW5pdGlh
bGl6ZXNUb0RlZmF1bHRWYWx1ZXMpIHsKKyAgVGhyZWFkTG9jYWw8aW50PiB0MTsKKyAgRVhQRUNU
X0VRKDAsIHQxLmdldCgpKTsKKworICBUaHJlYWRMb2NhbDx2b2lkKj4gdDI7CisgIEVYUEVDVF9U
UlVFKHQyLmdldCgpID09IE5VTEwpOworfQorCitURVNUKFRocmVhZExvY2FsVGVzdCwgU2luZ2xl
UGFyYW1Db25zdHJ1Y3RvckluaXRpYWxpemVzVG9QYXJhbSkgeworICBUaHJlYWRMb2NhbDxpbnQ+
IHQxKDEyMyk7CisgIEVYUEVDVF9FUSgxMjMsIHQxLmdldCgpKTsKKworICBpbnQgaSA9IDA7Cisg
IFRocmVhZExvY2FsPGludCo+IHQyKCZpKTsKKyAgRVhQRUNUX0VRKCZpLCB0Mi5nZXQoKSk7Cit9
CisKK2NsYXNzIE5vRGVmYXVsdENvbnRydWN0b3IgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgTm9E
ZWZhdWx0Q29udHJ1Y3Rvcihjb25zdCBjaGFyKikge30KKyAgTm9EZWZhdWx0Q29udHJ1Y3Rvcihj
b25zdCBOb0RlZmF1bHRDb250cnVjdG9yJikge30KK307CisKK1RFU1QoVGhyZWFkTG9jYWxUZXN0
LCBWYWx1ZURlZmF1bHRDb250cnVjdG9ySXNOb3RSZXF1aXJlZEZvclBhcmFtVmVyc2lvbikgewor
ICBUaHJlYWRMb2NhbDxOb0RlZmF1bHRDb250cnVjdG9yPiBiYXIoTm9EZWZhdWx0Q29udHJ1Y3Rv
cigiZm9vIikpOworICBiYXIucG9pbnRlcigpOworfQorCitURVNUKFRocmVhZExvY2FsVGVzdCwg
R2V0QW5kUG9pbnRlclJldHVyblNhbWVWYWx1ZSkgeworICBUaHJlYWRMb2NhbDxzdGQ6OnN0cmlu
Zz4gdGhyZWFkX2xvY2FsX3N0cmluZzsKKworICBFWFBFQ1RfRVEodGhyZWFkX2xvY2FsX3N0cmlu
Zy5wb2ludGVyKCksICYodGhyZWFkX2xvY2FsX3N0cmluZy5nZXQoKSkpOworCisgIC8vIFZlcmlm
aWVzIHRoZSBjb25kaXRpb24gc3RpbGwgaG9sZHMgYWZ0ZXIgY2FsbGluZyBzZXQuCisgIHRocmVh
ZF9sb2NhbF9zdHJpbmcuc2V0KCJmb28iKTsKKyAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbF9zdHJp
bmcucG9pbnRlcigpLCAmKHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkpKTsKK30KKworVEVTVChU
aHJlYWRMb2NhbFRlc3QsIFBvaW50ZXJBbmRDb25zdFBvaW50ZXJSZXR1cm5TYW1lVmFsdWUpIHsK
KyAgVGhyZWFkTG9jYWw8c3RkOjpzdHJpbmc+IHRocmVhZF9sb2NhbF9zdHJpbmc7CisgIGNvbnN0
IFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiYgY29uc3RfdGhyZWFkX2xvY2FsX3N0cmluZyA9Cisg
ICAgICB0aHJlYWRfbG9jYWxfc3RyaW5nOworCisgIEVYUEVDVF9FUSh0aHJlYWRfbG9jYWxfc3Ry
aW5nLnBvaW50ZXIoKSwgY29uc3RfdGhyZWFkX2xvY2FsX3N0cmluZy5wb2ludGVyKCkpOworCisg
IHRocmVhZF9sb2NhbF9zdHJpbmcuc2V0KCJmb28iKTsKKyAgRVhQRUNUX0VRKHRocmVhZF9sb2Nh
bF9zdHJpbmcucG9pbnRlcigpLCBjb25zdF90aHJlYWRfbG9jYWxfc3RyaW5nLnBvaW50ZXIoKSk7
Cit9CisKKyNpZiBHVEVTVF9JU19USFJFQURTQUZFCisKK3ZvaWQgQWRkVHdvKGludCogcGFyYW0p
IHsgKnBhcmFtICs9IDI7IH0KKworVEVTVChUaHJlYWRXaXRoUGFyYW1UZXN0LCBDb25zdHJ1Y3Rv
ckV4ZWN1dGVzVGhyZWFkRnVuYykgeworICBpbnQgaSA9IDQwOworICBUaHJlYWRXaXRoUGFyYW08
aW50Kj4gdGhyZWFkKCZBZGRUd28sICZpLCBOVUxMKTsKKyAgdGhyZWFkLkpvaW4oKTsKKyAgRVhQ
RUNUX0VRKDQyLCBpKTsKK30KKworVEVTVChNdXRleERlYXRoVGVzdCwgQXNzZXJ0SGVsZFNob3Vs
ZEFzc2VydFdoZW5Ob3RMb2NrZWQpIHsKKyAgLy8gQXNzZXJ0SGVsZCgpIGlzIGZsYWt5IG9ubHkg
aW4gdGhlIHByZXNlbmNlIG9mIG11bHRpcGxlIHRocmVhZHMgYWNjZXNzaW5nCisgIC8vIHRoZSBs
b2NrLiBJbiB0aGlzIGNhc2UsIHRoZSB0ZXN0IGlzIHJvYnVzdC4KKyAgRVhQRUNUX0RFQVRIX0lG
X1NVUFBPUlRFRCh7CisgICAgTXV0ZXggbTsKKyAgICB7IE11dGV4TG9jayBsb2NrKCZtKTsgfQor
ICAgIG0uQXNzZXJ0SGVsZCgpOworICB9LAorICAidGhyZWFkIC4qaG9sZCIpOworfQorCitURVNU
KE11dGV4VGVzdCwgQXNzZXJ0SGVsZFNob3VsZE5vdEFzc2VydFdoZW5Mb2NrZWQpIHsKKyAgTXV0
ZXggbTsKKyAgTXV0ZXhMb2NrIGxvY2soJm0pOworICBtLkFzc2VydEhlbGQoKTsKK30KKworY2xh
c3MgQXRvbWljQ291bnRlcldpdGhNdXRleCB7CisgcHVibGljOgorICBleHBsaWNpdCBBdG9taWND
b3VudGVyV2l0aE11dGV4KE11dGV4KiBtdXRleCkgOgorICAgIHZhbHVlXygwKSwgbXV0ZXhfKG11
dGV4KSwgcmFuZG9tXyg0Mikge30KKworICB2b2lkIEluY3JlbWVudCgpIHsKKyAgICBNdXRleExv
Y2sgbG9jayhtdXRleF8pOworICAgIGludCB0ZW1wID0gdmFsdWVfOworICAgIHsKKyAgICAgIC8v
IFdlIG5lZWQgdG8gcHV0IHVwIGEgbWVtb3J5IGJhcnJpZXIgdG8gcHJldmVudCByZWFkcyBhbmQg
d3JpdGVzIHRvCisgICAgICAvLyB2YWx1ZV8gcmVhcnJhbmdlZCB3aXRoIHRoZSBjYWxsIHRvIFNs
ZWVwTWlsbGlzZWNvbmRzIHdoZW4gb2JzZXJ2ZWQKKyAgICAgIC8vIGZyb20gb3RoZXIgdGhyZWFk
cy4KKyNpZiBHVEVTVF9IQVNfUFRIUkVBRAorICAgICAgLy8gT24gUE9TSVgsIGxvY2tpbmcgYSBt
dXRleCBwdXRzIHVwIGEgbWVtb3J5IGJhcnJpZXIuICBXZSBjYW5ub3QgdXNlCisgICAgICAvLyBN
dXRleCBhbmQgTXV0ZXhMb2NrIGhlcmUgb3IgcmVseSBvbiB0aGVpciBtZW1vcnkgYmFycmllcgor
ICAgICAgLy8gZnVuY3Rpb25hbGl0eSBhcyB3ZSBhcmUgdGVzdGluZyB0aGVtIGhlcmUuCisgICAg
ICBwdGhyZWFkX211dGV4X3QgbWVtb3J5X2JhcnJpZXJfbXV0ZXg7CisgICAgICBHVEVTVF9DSEVD
S19QT1NJWF9TVUNDRVNTXygKKyAgICAgICAgICBwdGhyZWFkX211dGV4X2luaXQoJm1lbW9yeV9i
YXJyaWVyX211dGV4LCBOVUxMKSk7CisgICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhw
dGhyZWFkX211dGV4X2xvY2soJm1lbW9yeV9iYXJyaWVyX211dGV4KSk7CisKKyAgICAgIFNsZWVw
TWlsbGlzZWNvbmRzKHJhbmRvbV8uR2VuZXJhdGUoMzApKTsKKworICAgICAgR1RFU1RfQ0hFQ0tf
UE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF91bmxvY2soJm1lbW9yeV9iYXJyaWVyX211dGV4
KSk7CisgICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4X2Rlc3Ry
b3koJm1lbW9yeV9iYXJyaWVyX211dGV4KSk7CisjZWxpZiBHVEVTVF9PU19XSU5ET1dTCisgICAg
ICAvLyBPbiBXaW5kb3dzLCBwZXJmb3JtaW5nIGFuIGludGVybG9ja2VkIGFjY2VzcyBwdXRzIHVw
IGEgbWVtb3J5IGJhcnJpZXIuCisgICAgICB2b2xhdGlsZSBMT05HIGR1bW15ID0gMDsKKyAgICAg
IDo6SW50ZXJsb2NrZWRJbmNyZW1lbnQoJmR1bW15KTsKKyAgICAgIFNsZWVwTWlsbGlzZWNvbmRz
KHJhbmRvbV8uR2VuZXJhdGUoMzApKTsKKyAgICAgIDo6SW50ZXJsb2NrZWRJbmNyZW1lbnQoJmR1
bW15KTsKKyNlbHNlCisjIGVycm9yICJNZW1vcnkgYmFycmllciBub3QgaW1wbGVtZW50ZWQgb24g
dGhpcyBwbGF0Zm9ybS4iCisjZW5kaWYgIC8vIEdURVNUX0hBU19QVEhSRUFECisgICAgfQorICAg
IHZhbHVlXyA9IHRlbXAgKyAxOworICB9CisgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZh
bHVlXzsgfQorCisgcHJpdmF0ZToKKyAgdm9sYXRpbGUgaW50IHZhbHVlXzsKKyAgTXV0ZXgqIGNv
bnN0IG11dGV4XzsgIC8vIFByb3RlY3RzIHZhbHVlXy4KKyAgUmFuZG9tICAgICAgIHJhbmRvbV87
Cit9OworCit2b2lkIENvdW50aW5nVGhyZWFkRnVuYyhwYWlyPEF0b21pY0NvdW50ZXJXaXRoTXV0
ZXgqLCBpbnQ+IHBhcmFtKSB7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW0uc2Vjb25kOyAr
K2kpCisgICAgICBwYXJhbS5maXJzdC0+SW5jcmVtZW50KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQg
dGhlIG11dGV4IG9ubHkgbGV0cyBvbmUgdGhyZWFkIGF0IGEgdGltZSB0byBsb2NrIGl0LgorVEVT
VChNdXRleFRlc3QsIE9ubHlPbmVUaHJlYWRDYW5Mb2NrQXRBVGltZSkgeworICBNdXRleCBtdXRl
eDsKKyAgQXRvbWljQ291bnRlcldpdGhNdXRleCBsb2NrZWRfY291bnRlcigmbXV0ZXgpOworCisg
IHR5cGVkZWYgVGhyZWFkV2l0aFBhcmFtPHBhaXI8QXRvbWljQ291bnRlcldpdGhNdXRleCosIGlu
dD4gPiBUaHJlYWRUeXBlOworICBjb25zdCBpbnQga0N5Y2xlQ291bnQgPSAyMDsKKyAgY29uc3Qg
aW50IGtUaHJlYWRDb3VudCA9IDc7CisgIHNjb3BlZF9wdHI8VGhyZWFkVHlwZT4gY291bnRpbmdf
dGhyZWFkc1trVGhyZWFkQ291bnRdOworICBOb3RpZmljYXRpb24gdGhyZWFkc19jYW5fc3RhcnQ7
CisgIC8vIENyZWF0ZXMgYW5kIHJ1bnMga1RocmVhZENvdW50IHRocmVhZHMgdGhhdCBpbmNyZW1l
bnQgbG9ja2VkX2NvdW50ZXIKKyAgLy8ga0N5Y2xlQ291bnQgdGltZXMgZWFjaC4KKyAgZm9yIChp
bnQgaSA9IDA7IGkgPCBrVGhyZWFkQ291bnQ7ICsraSkgeworICAgIGNvdW50aW5nX3RocmVhZHNb
aV0ucmVzZXQobmV3IFRocmVhZFR5cGUoJkNvdW50aW5nVGhyZWFkRnVuYywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VfcGFpcigmbG9ja2VkX2NvdW50
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAga0N5Y2xlQ291bnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJnRocmVhZHNfY2FuX3N0YXJ0KSk7CisgIH0KKyAgdGhyZWFkc19jYW5fc3RhcnQuTm90
aWZ5KCk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwga1RocmVhZENvdW50OyArK2kpCisgICAgY291
bnRpbmdfdGhyZWFkc1tpXS0+Sm9pbigpOworCisgIC8vIElmIHRoZSBtdXRleCBsZXRzIG1vcmUg
dGhhbiBvbmUgdGhyZWFkIHRvIGluY3JlbWVudCB0aGUgY291bnRlciBhdCBhCisgIC8vIHRpbWUs
IHRoZXkgYXJlIGxpa2VseSB0byBlbmNvdW50ZXIgYSByYWNlIGNvbmRpdGlvbiBhbmQgaGF2ZSBz
b21lCisgIC8vIGluY3JlbWVudHMgb3ZlcndyaXR0ZW4sIHJlc3VsdGluZyBpbiB0aGUgbG93ZXIg
dGhlbiBleHBlY3RlZCBjb3VudGVyCisgIC8vIHZhbHVlLgorICBFWFBFQ1RfRVEoa0N5Y2xlQ291
bnQgKiBrVGhyZWFkQ291bnQsIGxvY2tlZF9jb3VudGVyLnZhbHVlKCkpOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgUnVuRnJvbVRocmVhZCh2b2lkIChmdW5jKShUKSwgVCBwYXJh
bSkgeworICBUaHJlYWRXaXRoUGFyYW08VD4gdGhyZWFkKGZ1bmMsIHBhcmFtLCBOVUxMKTsKKyAg
dGhyZWFkLkpvaW4oKTsKK30KKwordm9pZCBSZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUoCisgICAg
cGFpcjxUaHJlYWRMb2NhbDxzdGQ6OnN0cmluZz4qLCBzdGQ6OnN0cmluZyo+IHBhcmFtKSB7Cisg
ICpwYXJhbS5zZWNvbmQgPSBwYXJhbS5maXJzdC0+Z2V0KCk7Cit9CisKK1RFU1QoVGhyZWFkTG9j
YWxUZXN0LCBQYXJhbWV0ZXJpemVkQ29uc3RydWN0b3JTZXRzRGVmYXVsdCkgeworICBUaHJlYWRM
b2NhbDxzdGQ6OnN0cmluZz4gdGhyZWFkX2xvY2FsX3N0cmluZygiZm9vIik7CisgIEVYUEVDVF9T
VFJFUSgiZm9vIiwgdGhyZWFkX2xvY2FsX3N0cmluZy5nZXQoKS5jX3N0cigpKTsKKworICB0aHJl
YWRfbG9jYWxfc3RyaW5nLnNldCgiYmFyIik7CisgIEVYUEVDVF9TVFJFUSgiYmFyIiwgdGhyZWFk
X2xvY2FsX3N0cmluZy5nZXQoKS5jX3N0cigpKTsKKworICBzdGQ6OnN0cmluZyByZXN1bHQ7Cisg
IFJ1bkZyb21UaHJlYWQoJlJldHJpZXZlVGhyZWFkTG9jYWxWYWx1ZSwKKyAgICAgICAgICAgICAg
ICBtYWtlX3BhaXIoJnRocmVhZF9sb2NhbF9zdHJpbmcsICZyZXN1bHQpKTsKKyAgRVhQRUNUX1NU
UkVRKCJmb28iLCByZXN1bHQuY19zdHIoKSk7Cit9CisKKy8vIEtlZXBzIHRyYWNrIG9mIHdoZXRo
ZXIgb2YgZGVzdHJ1Y3RvcnMgYmVpbmcgY2FsbGVkIG9uIGluc3RhbmNlcyBvZgorLy8gRGVzdHJ1
Y3RvclRyYWNrZXIuICBPbiBXaW5kb3dzLCB3YWl0cyBmb3IgdGhlIGRlc3RydWN0b3IgY2FsbCBy
ZXBvcnRzLgorY2xhc3MgRGVzdHJ1Y3RvckNhbGwgeworIHB1YmxpYzoKKyAgRGVzdHJ1Y3RvckNh
bGwoKSB7CisgICAgaW52b2tlZF8gPSBmYWxzZTsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgICAg
d2FpdF9ldmVudF8uUmVzZXQoOjpDcmVhdGVFdmVudChOVUxMLCBUUlVFLCBGQUxTRSwgTlVMTCkp
OworICAgIEdURVNUX0NIRUNLXyh3YWl0X2V2ZW50Xy5HZXQoKSAhPSBOVUxMKTsKKyNlbmRpZgor
ICB9CisKKyAgYm9vbCBDaGVja0Rlc3Ryb3llZCgpIGNvbnN0IHsKKyNpZiBHVEVTVF9PU19XSU5E
T1dTCisgICAgaWYgKDo6V2FpdEZvclNpbmdsZU9iamVjdCh3YWl0X2V2ZW50Xy5HZXQoKSwgMTAw
MCkgIT0gV0FJVF9PQkpFQ1RfMCkKKyAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIHJl
dHVybiBpbnZva2VkXzsKKyAgfQorCisgIHZvaWQgUmVwb3J0RGVzdHJveWVkKCkgeworICAgIGlu
dm9rZWRfID0gdHJ1ZTsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgICAgOjpTZXRFdmVudCh3YWl0
X2V2ZW50Xy5HZXQoKSk7CisjZW5kaWYKKyAgfQorCisgIHN0YXRpYyBzdGQ6OnZlY3RvcjxEZXN0
cnVjdG9yQ2FsbCo+JiBMaXN0KCkgeyByZXR1cm4gKmxpc3RfOyB9CisKKyAgc3RhdGljIHZvaWQg
UmVzZXRMaXN0KCkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdF8tPnNpemUoKTsg
KytpKSB7CisgICAgICBkZWxldGUgbGlzdF8tPmF0KGkpOworICAgIH0KKyAgICBsaXN0Xy0+Y2xl
YXIoKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgYm9vbCBpbnZva2VkXzsKKyNpZiBHVEVTVF9PU19X
SU5ET1dTCisgIEF1dG9IYW5kbGUgd2FpdF9ldmVudF87CisjZW5kaWYKKyAgc3RhdGljIHN0ZDo6
dmVjdG9yPERlc3RydWN0b3JDYWxsKj4qIGNvbnN0IGxpc3RfOworCisgIEdURVNUX0RJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTl8oRGVzdHJ1Y3RvckNhbGwpOworfTsKKworc3RkOjp2ZWN0b3I8RGVz
dHJ1Y3RvckNhbGwqPiogY29uc3QgRGVzdHJ1Y3RvckNhbGw6Omxpc3RfID0KKyAgICBuZXcgc3Rk
Ojp2ZWN0b3I8RGVzdHJ1Y3RvckNhbGwqPjsKKworLy8gRGVzdHJ1Y3RvclRyYWNrZXIga2VlcHMg
dHJhY2sgb2Ygd2hldGhlciBpdHMgaW5zdGFuY2VzIGhhdmUgYmVlbgorLy8gZGVzdHJveWVkLgor
Y2xhc3MgRGVzdHJ1Y3RvclRyYWNrZXIgeworIHB1YmxpYzoKKyAgRGVzdHJ1Y3RvclRyYWNrZXIo
KSA6IGluZGV4XyhHZXROZXdJbmRleCgpKSB7fQorICBEZXN0cnVjdG9yVHJhY2tlcihjb25zdCBE
ZXN0cnVjdG9yVHJhY2tlciYgLyogcmhzICovKQorICAgICAgOiBpbmRleF8oR2V0TmV3SW5kZXgo
KSkge30KKyAgfkRlc3RydWN0b3JUcmFja2VyKCkgeworICAgIC8vIFdlIG5ldmVyIGFjY2VzcyBE
ZXN0cnVjdG9yQ2FsbDo6TGlzdCgpIGNvbmN1cnJlbnRseSwgc28gd2UgZG9uJ3QgbmVlZAorICAg
IC8vIHRvIHByb3RlY3QgdGhpcyBhY2Nlc3Mgd2l0aCBhIG11dGV4LgorICAgIERlc3RydWN0b3JD
YWxsOjpMaXN0KClbaW5kZXhfXS0+UmVwb3J0RGVzdHJveWVkKCk7CisgIH0KKworIHByaXZhdGU6
CisgIHN0YXRpYyBzaXplX3QgR2V0TmV3SW5kZXgoKSB7CisgICAgRGVzdHJ1Y3RvckNhbGw6Okxp
c3QoKS5wdXNoX2JhY2sobmV3IERlc3RydWN0b3JDYWxsKTsKKyAgICByZXR1cm4gRGVzdHJ1Y3Rv
ckNhbGw6Okxpc3QoKS5zaXplKCkgLSAxOworICB9CisgIGNvbnN0IHNpemVfdCBpbmRleF87CisK
KyAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhEZXN0cnVjdG9yVHJhY2tlcik7Cit9OworCit0eXBl
ZGVmIFRocmVhZExvY2FsPERlc3RydWN0b3JUcmFja2VyPiogVGhyZWFkUGFyYW07CisKK3ZvaWQg
Q2FsbFRocmVhZExvY2FsR2V0KFRocmVhZFBhcmFtIHRocmVhZF9sb2NhbF9wYXJhbSkgeworICB0
aHJlYWRfbG9jYWxfcGFyYW0tPmdldCgpOworfQorCisvLyBUZXN0cyB0aGF0IHdoZW4gYSBUaHJl
YWRMb2NhbCBvYmplY3QgZGllcyBpbiBhIHRocmVhZCwgaXQgZGVzdHJveXMKKy8vIHRoZSBtYW5h
Z2VkIG9iamVjdCBmb3IgdGhhdCB0aHJlYWQuCitURVNUKFRocmVhZExvY2FsVGVzdCwgRGVzdHJv
eXNNYW5hZ2VkT2JqZWN0Rm9yT3duVGhyZWFkV2hlbkR5aW5nKSB7CisgIERlc3RydWN0b3JDYWxs
OjpSZXNldExpc3QoKTsKKworICB7CisgICAgVGhyZWFkTG9jYWw8RGVzdHJ1Y3RvclRyYWNrZXI+
IHRocmVhZF9sb2NhbF90cmFja2VyOworICAgIEFTU0VSVF9FUSgwVSwgRGVzdHJ1Y3RvckNhbGw6
Okxpc3QoKS5zaXplKCkpOworCisgICAgLy8gVGhpcyBjcmVhdGVzIGFub3RoZXIgRGVzdHJ1Y3Rv
clRyYWNrZXIgb2JqZWN0IGZvciB0aGUgbWFpbiB0aHJlYWQuCisgICAgdGhyZWFkX2xvY2FsX3Ry
YWNrZXIuZ2V0KCk7CisgICAgQVNTRVJUX0VRKDFVLCBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnNp
emUoKSk7CisgICAgQVNTRVJUX0ZBTFNFKERlc3RydWN0b3JDYWxsOjpMaXN0KClbMF0tPkNoZWNr
RGVzdHJveWVkKCkpOworICB9CisKKyAgLy8gTm93IHRocmVhZF9sb2NhbF90cmFja2VyIGhhcyBk
aWVkLgorICBBU1NFUlRfRVEoMVUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpKTsKKyAg
RVhQRUNUX1RSVUUoRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKVswXS0+Q2hlY2tEZXN0cm95ZWQoKSk7
CisKKyAgRGVzdHJ1Y3RvckNhbGw6OlJlc2V0TGlzdCgpOworfQorCisvLyBUZXN0cyB0aGF0IHdo
ZW4gYSB0aHJlYWQgZXhpdHMsIHRoZSB0aHJlYWQtbG9jYWwgb2JqZWN0IGZvciB0aGF0CisvLyB0
aHJlYWQgaXMgZGVzdHJveWVkLgorVEVTVChUaHJlYWRMb2NhbFRlc3QsIERlc3Ryb3lzTWFuYWdl
ZE9iamVjdEF0VGhyZWFkRXhpdCkgeworICBEZXN0cnVjdG9yQ2FsbDo6UmVzZXRMaXN0KCk7CisK
KyAgeworICAgIFRocmVhZExvY2FsPERlc3RydWN0b3JUcmFja2VyPiB0aHJlYWRfbG9jYWxfdHJh
Y2tlcjsKKyAgICBBU1NFUlRfRVEoMFUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpKTsK
KworICAgIC8vIFRoaXMgY3JlYXRlcyBhbm90aGVyIERlc3RydWN0b3JUcmFja2VyIG9iamVjdCBp
biB0aGUgbmV3IHRocmVhZC4KKyAgICBUaHJlYWRXaXRoUGFyYW08VGhyZWFkUGFyYW0+IHRocmVh
ZCgKKyAgICAgICAgJkNhbGxUaHJlYWRMb2NhbEdldCwgJnRocmVhZF9sb2NhbF90cmFja2VyLCBO
VUxMKTsKKyAgICB0aHJlYWQuSm9pbigpOworCisgICAgLy8gVGhlIHRocmVhZCBoYXMgZXhpdGVk
LCBhbmQgd2Ugc2hvdWxkIGhhdmUgYSBEZXN0cm95ZWRUcmFja2VyCisgICAgLy8gaW5zdGFuY2Ug
Y3JlYXRlZCBmb3IgaXQuIEJ1dCBpdCBtYXkgbm90IGhhdmUgYmVlbiBkZXN0cm95ZWQgeWV0Lgor
ICAgIEFTU0VSVF9FUSgxVSwgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKS5zaXplKCkpOworICB9CisK
KyAgLy8gVGhlIHRocmVhZCBoYXMgZXhpdGVkIGFuZCB0aHJlYWRfbG9jYWxfdHJhY2tlciBoYXMg
ZGllZC4KKyAgQVNTRVJUX0VRKDFVLCBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnNpemUoKSk7Cisg
IEVYUEVDVF9UUlVFKERlc3RydWN0b3JDYWxsOjpMaXN0KClbMF0tPkNoZWNrRGVzdHJveWVkKCkp
OworCisgIERlc3RydWN0b3JDYWxsOjpSZXNldExpc3QoKTsKK30KKworVEVTVChUaHJlYWRMb2Nh
bFRlc3QsIFRocmVhZExvY2FsTXV0YXRpb25zQWZmZWN0T25seUN1cnJlbnRUaHJlYWQpIHsKKyAg
VGhyZWFkTG9jYWw8c3RkOjpzdHJpbmc+IHRocmVhZF9sb2NhbF9zdHJpbmc7CisgIHRocmVhZF9s
b2NhbF9zdHJpbmcuc2V0KCJGb28iKTsKKyAgRVhQRUNUX1NUUkVRKCJGb28iLCB0aHJlYWRfbG9j
YWxfc3RyaW5nLmdldCgpLmNfc3RyKCkpOworCisgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKKyAgUnVu
RnJvbVRocmVhZCgmUmV0cmlldmVUaHJlYWRMb2NhbFZhbHVlLAorICAgICAgICAgICAgICAgIG1h
a2VfcGFpcigmdGhyZWFkX2xvY2FsX3N0cmluZywgJnJlc3VsdCkpOworICBFWFBFQ1RfVFJVRShy
ZXN1bHQuZW1wdHkoKSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFEU0FGRQorCisj
aWYgR1RFU1RfT1NfV0lORE9XUworVEVTVChXaW5kb3dzVHlwZXNUZXN0LCBIQU5ETEVJc1ZvaWRT
dGFyKSB7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxIQU5ETEUsIHZvaWQqPigpOworfQorCisjaWYg
R1RFU1RfT1NfV0lORE9XU19NSU5HVyAmJiAhZGVmaW5lZChfX01JTkdXNjRfVkVSU0lPTl9NQUpP
UikKK1RFU1QoV2luZG93c1R5cGVzVGVzdCwgX0NSSVRJQ0FMX1NFQ1RJT05Jc19DUklUSUNBTF9T
RUNUSU9OKSB7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxDUklUSUNBTF9TRUNUSU9OLCBfQ1JJVElD
QUxfU0VDVElPTj4oKTsKK30KKyNlbHNlCitURVNUKFdpbmRvd3NUeXBlc1Rlc3QsIENSSVRJQ0FM
X1NFQ1RJT05Jc19SVExfQ1JJVElDQUxfU0VDVElPTikgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8
Q1JJVElDQUxfU0VDVElPTiwgX1JUTF9DUklUSUNBTF9TRUNUSU9OPigpOworfQorI2VuZGlmCisK
KyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwK
K30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtcHJpbnRlcnMtdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wcmludGVycy10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhODM2
OWQyN2U1MDQ3MGYxZWFiZTNhZjI4MDRkMzQ1NDkzYWRlZDkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcHJpbnRlcnMtdGVzdC5jYwpA
QCAtMCwwICsxLDE3NDggQEAKKy8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgorLy8gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8v
IG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisv
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworCisvLyBHb29nbGUgVGVzdCAtIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1v
Y2tpbmcgRnJhbWV3b3JrCisvLworLy8gVGhpcyBmaWxlIHRlc3RzIHRoZSB1bml2ZXJzYWwgdmFs
dWUgcHJpbnRlci4KKworI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+Cisj
aW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGRlcXVl
PgorI2luY2x1ZGUgPGxpc3Q+CisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHNldD4KKyNpbmNs
dWRlIDxzc3RyZWFtPgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2lu
Y2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXByaW50ZXJzLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lmIEdURVNUX0hBU19VTk9SREVSRURfTUFQXworIyBp
bmNsdWRlIDx1bm9yZGVyZWRfbWFwPiAgLy8gTk9MSU5UCisjZW5kaWYgIC8vIEdURVNUX0hBU19V
Tk9SREVSRURfTUFQXworCisjaWYgR1RFU1RfSEFTX1VOT1JERVJFRF9TRVRfCisjIGluY2x1ZGUg
PHVub3JkZXJlZF9zZXQ+ICAvLyBOT0xJTlQKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1VOT1JERVJF
RF9TRVRfCisKKyNpZiBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8KKyMgaW5jbHVkZSA8Zm9y
d2FyZF9saXN0PiAvLyBOT0xJTlQKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9GT1JXQVJEX0xJ
U1RfCisKKy8vIFNvbWUgdXNlci1kZWZpbmVkIHR5cGVzIGZvciB0ZXN0aW5nIHRoZSB1bml2ZXJz
YWwgdmFsdWUgcHJpbnRlci4KKworLy8gQW4gYW5vbnltb3VzIGVudW0gdHlwZS4KK2VudW0gQW5v
bnltb3VzRW51bSB7CisgIGtBRTEgPSAtMSwKKyAga0FFMiA9IDEKK307CisKKy8vIEFuIGVudW0g
d2l0aG91dCBhIHVzZXItZGVmaW5lZCBwcmludGVyLgorZW51bSBFbnVtV2l0aG91dFByaW50ZXIg
eworICBrRVdQMSA9IC0yLAorICBrRVdQMiA9IDQyCit9OworCisvLyBBbiBlbnVtIHdpdGggYSA8
PCBvcGVyYXRvci4KK2VudW0gRW51bVdpdGhTdHJlYW1pbmcgeworICBrRVdTMSA9IDEwCit9Owor
CitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgRW51bVdpdGhTdHJl
YW1pbmcgZSkgeworICByZXR1cm4gb3MgPDwgKGUgPT0ga0VXUzEgPyAia0VXUzEiIDogImludmFs
aWQiKTsKK30KKworLy8gQW4gZW51bSB3aXRoIGEgUHJpbnRUbygpIGZ1bmN0aW9uLgorZW51bSBF
bnVtV2l0aFByaW50VG8geworICBrRVdQVDEgPSAxCit9OworCit2b2lkIFByaW50VG8oRW51bVdp
dGhQcmludFRvIGUsIHN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8IChlID09IGtFV1BUMSA/
ICJrRVdQVDEiIDogImludmFsaWQiKTsKK30KKworLy8gQSBjbGFzcyBpbXBsaWNpdGx5IGNvbnZl
cnRpYmxlIHRvIEJpZ2dlc3RJbnQuCitjbGFzcyBCaWdnZXN0SW50Q29udmVydGlibGUgeworIHB1
YmxpYzoKKyAgb3BlcmF0b3IgOjp0ZXN0aW5nOjppbnRlcm5hbDo6QmlnZ2VzdEludCgpIGNvbnN0
IHsgcmV0dXJuIDQyOyB9Cit9OworCisvLyBBIHVzZXItZGVmaW5lZCB1bnByaW50YWJsZSBjbGFz
cyB0ZW1wbGF0ZSBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PgorY2xhc3MgVW5wcmludGFibGVUZW1wbGF0ZUluR2xvYmFsIHsKKyBwdWJsaWM6CisgIFVucHJp
bnRhYmxlVGVtcGxhdGVJbkdsb2JhbCgpIDogdmFsdWVfKCkge30KKyBwcml2YXRlOgorICBUIHZh
bHVlXzsKK307CisKKy8vIEEgdXNlci1kZWZpbmVkIHN0cmVhbWFibGUgdHlwZSBpbiB0aGUgZ2xv
YmFsIG5hbWVzcGFjZS4KK2NsYXNzIFN0cmVhbWFibGVJbkdsb2JhbCB7CisgcHVibGljOgorICB2
aXJ0dWFsIH5TdHJlYW1hYmxlSW5HbG9iYWwoKSB7fQorfTsKKworaW5saW5lIHZvaWQgb3BlcmF0
b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFN0cmVhbWFibGVJbkdsb2JhbCYgLyogeCAq
LykgeworICBvcyA8PCAiU3RyZWFtYWJsZUluR2xvYmFsIjsKK30KKwordm9pZCBvcGVyYXRvcjw8
KDo6c3RkOjpvc3RyZWFtJiBvcywgY29uc3QgU3RyZWFtYWJsZUluR2xvYmFsKiAvKiB4ICovKSB7
CisgIG9zIDw8ICJTdHJlYW1hYmxlSW5HbG9iYWwqIjsKK30KKworbmFtZXNwYWNlIGZvbyB7CisK
Ky8vIEEgdXNlci1kZWZpbmVkIHVucHJpbnRhYmxlIHR5cGUgaW4gYSB1c2VyIG5hbWVzcGFjZS4K
K2NsYXNzIFVucHJpbnRhYmxlSW5Gb28geworIHB1YmxpYzoKKyAgVW5wcmludGFibGVJbkZvbygp
IDogel8oMCkgeyBtZW1jcHkoeHlfLCAiXHhFRlx4MTJceDBceDBceDM0XHhBQlx4MFx4MCIsIDgp
OyB9CisgIGRvdWJsZSB6KCkgY29uc3QgeyByZXR1cm4gel87IH0KKyBwcml2YXRlOgorICBjaGFy
IHh5X1s4XTsKKyAgZG91YmxlIHpfOworfTsKKworLy8gQSB1c2VyLWRlZmluZWQgcHJpbnRhYmxl
IHR5cGUgaW4gYSB1c2VyLWNob3NlbiBuYW1lc3BhY2UuCitzdHJ1Y3QgUHJpbnRhYmxlVmlhUHJp
bnRUbyB7CisgIFByaW50YWJsZVZpYVByaW50VG8oKSA6IHZhbHVlKCkge30KKyAgaW50IHZhbHVl
OworfTsKKwordm9pZCBQcmludFRvKGNvbnN0IFByaW50YWJsZVZpYVByaW50VG8mIHgsIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgeworICAqb3MgPDwgIlByaW50YWJsZVZpYVByaW50VG86ICIgPDwgeC52
YWx1ZTsKK30KKworLy8gQSB0eXBlIHdpdGggYSB1c2VyLWRlZmluZWQgPDwgZm9yIHByaW50aW5n
IGl0cyBwb2ludGVyLgorc3RydWN0IFBvaW50ZXJQcmludGFibGUgeworfTsKKworOjpzdGQ6Om9z
dHJlYW0mIG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0mIG9zLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgUG9pbnRlclByaW50YWJsZSogLyogeCAqLykgeworICByZXR1cm4gb3Mg
PDwgIlBvaW50ZXJQcmludGFibGUqIjsKK30KKworLy8gQSB1c2VyLWRlZmluZWQgcHJpbnRhYmxl
IGNsYXNzIHRlbXBsYXRlIGluIGEgdXNlci1jaG9zZW4gbmFtZXNwYWNlLgordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitjbGFzcyBQcmludGFibGVWaWFQcmludFRvVGVtcGxhdGUgeworIHB1YmxpYzoK
KyAgZXhwbGljaXQgUHJpbnRhYmxlVmlhUHJpbnRUb1RlbXBsYXRlKGNvbnN0IFQmIGFfdmFsdWUp
IDogdmFsdWVfKGFfdmFsdWUpIHt9CisKKyAgY29uc3QgVCYgdmFsdWUoKSBjb25zdCB7IHJldHVy
biB2YWx1ZV87IH0KKyBwcml2YXRlOgorICBUIHZhbHVlXzsKK307CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgordm9pZCBQcmludFRvKGNvbnN0IFByaW50YWJsZVZpYVByaW50VG9UZW1wbGF0ZTxU
PiYgeCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCAiUHJpbnRhYmxlVmlhUHJpbnRU
b1RlbXBsYXRlOiAiIDw8IHgudmFsdWUoKTsKK30KKworLy8gQSB1c2VyLWRlZmluZWQgc3RyZWFt
YWJsZSBjbGFzcyB0ZW1wbGF0ZSBpbiBhIHVzZXIgbmFtZXNwYWNlLgordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitjbGFzcyBTdHJlYW1hYmxlVGVtcGxhdGVJbkZvbyB7CisgcHVibGljOgorICBTdHJl
YW1hYmxlVGVtcGxhdGVJbkZvbygpIDogdmFsdWVfKCkge30KKworICBjb25zdCBUJiB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQorIHByaXZhdGU6CisgIFQgdmFsdWVfOworfTsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgOjpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwo
OjpzdGQ6Om9zdHJlYW0mIG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFN0cmVhbWFibGVUZW1wbGF0ZUluRm9vPFQ+JiB4KSB7CisgIHJldHVybiBvcyA8PCAiU3Ry
ZWFtYWJsZVRlbXBsYXRlSW5Gb286ICIgPDwgeC52YWx1ZSgpOworfQorCisvLyBBIHVzZXItZGVm
aW5lZCBzdHJlYW1hYmxlIGJ1dCByZWN1cnNpdmx5LWRlZmluZWQgY29udGFpbmVyIHR5cGUgaW4K
Ky8vIGEgdXNlciBuYW1lc3BhY2UsIGl0IG1pbWljcyB0aGVyZWZvcmUgc3RkOjpmaWxlc3lzdGVt
OjpwYXRoIG9yCisvLyBib29zdDo6ZmlsZXN5c3RlbTo6cGF0aC4KK2NsYXNzIFBhdGhMaWtlIHsK
KyBwdWJsaWM6CisgIHN0cnVjdCBpdGVyYXRvciB7CisgICAgdHlwZWRlZiBQYXRoTGlrZSB2YWx1
ZV90eXBlOworICB9OworCisgIFBhdGhMaWtlKCkge30KKworICBpdGVyYXRvciBiZWdpbigpIGNv
bnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCk7IH0KKyAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1
cm4gaXRlcmF0b3IoKTsgfQorCisgIGZyaWVuZCA6OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6
OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFBhdGhMaWtlJikgeworICAgIHJldHVybiBvcyA8PCAi
U3RyZWFtYWJsZS1QYXRoTGlrZSI7CisgIH0KK307CisKK30gIC8vIG5hbWVzcGFjZSBmb28KKwor
bmFtZXNwYWNlIHRlc3RpbmcgeworbmFtZXNwYWNlIGd0ZXN0X3ByaW50ZXJzX3Rlc3QgeworCit1
c2luZyA6OnN0ZDo6ZGVxdWU7Cit1c2luZyA6OnN0ZDo6bGlzdDsKK3VzaW5nIDo6c3RkOjptYWtl
X3BhaXI7Cit1c2luZyA6OnN0ZDo6bWFwOwordXNpbmcgOjpzdGQ6Om11bHRpbWFwOwordXNpbmcg
OjpzdGQ6Om11bHRpc2V0OwordXNpbmcgOjpzdGQ6OnBhaXI7Cit1c2luZyA6OnN0ZDo6c2V0Owor
dXNpbmcgOjpzdGQ6OnZlY3RvcjsKK3VzaW5nIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZzsKK3Vz
aW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2Fn
ZTsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF87Cit1c2luZyA6OnRl
c3Rpbmc6OmludGVybmFsOjpOYXRpdmVBcnJheTsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6
OlJFOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5j
ZTsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZ3M7Cit1c2luZyA6OnRlc3Rpbmc6
OmludGVybmFsOjpVbml2ZXJzYWxQcmludDsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVu
aXZlcnNhbFByaW50ZXI7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJz
ZVByaW50OworI2lmIEdURVNUX0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8K
K3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxk
c1RvU3RyaW5nczsKKyNlbmRpZgorCisvLyBQcmludHMgYSB2YWx1ZSB0byBhIHN0cmluZyB1c2lu
ZyB0aGUgdW5pdmVyc2FsIHZhbHVlIHByaW50ZXIuICBUaGlzCisvLyBpcyBhIGhlbHBlciBmb3Ig
dGVzdGluZyBVbml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCgpIGZvciB2YXJpb3VzIHR5cGVzLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGQ6OnN0cmluZyBQcmludChjb25zdCBUJiB2YWx1ZSkg
eworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICBVbml2ZXJzYWxQcmludGVyPFQ+OjpQcmlu
dCh2YWx1ZSwgJnNzKTsKKyAgcmV0dXJuIHNzLnN0cigpOworfQorCisvLyBQcmludHMgYSB2YWx1
ZSBwYXNzZWQgYnkgcmVmZXJlbmNlIHRvIGEgc3RyaW5nLCB1c2luZyB0aGUgdW5pdmVyc2FsCisv
LyB2YWx1ZSBwcmludGVyLiAgVGhpcyBpcyBhIGhlbHBlciBmb3IgdGVzdGluZworLy8gVW5pdmVy
c2FsUHJpbnRlcjxUJj46OlByaW50KCkgZm9yIHZhcmlvdXMgdHlwZXMuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3N0ZDo6c3RyaW5nIFByaW50QnlSZWYoY29uc3QgVCYgdmFsdWUpIHsKKyAgOjpz
dGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2FsUHJpbnRlcjxUJj46OlByaW50KHZhbHVl
LCAmc3MpOworICByZXR1cm4gc3Muc3RyKCk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIHZhcmlv
dXMgZW51bSB0eXBlcy4KKworVEVTVChQcmludEVudW1UZXN0LCBBbm9ueW1vdXNFbnVtKSB7Cisg
IEVYUEVDVF9FUSgiLTEiLCBQcmludChrQUUxKSk7CisgIEVYUEVDVF9FUSgiMSIsIFByaW50KGtB
RTIpKTsKK30KKworVEVTVChQcmludEVudW1UZXN0LCBFbnVtV2l0aG91dFByaW50ZXIpIHsKKyAg
RVhQRUNUX0VRKCItMiIsIFByaW50KGtFV1AxKSk7CisgIEVYUEVDVF9FUSgiNDIiLCBQcmludChr
RVdQMikpOworfQorCitURVNUKFByaW50RW51bVRlc3QsIEVudW1XaXRoU3RyZWFtaW5nKSB7Cisg
IEVYUEVDVF9FUSgia0VXUzEiLCBQcmludChrRVdTMSkpOworICBFWFBFQ1RfRVEoImludmFsaWQi
LCBQcmludChzdGF0aWNfY2FzdDxFbnVtV2l0aFN0cmVhbWluZz4oMCkpKTsKK30KKworVEVTVChQ
cmludEVudW1UZXN0LCBFbnVtV2l0aFByaW50VG8pIHsKKyAgRVhQRUNUX0VRKCJrRVdQVDEiLCBQ
cmludChrRVdQVDEpKTsKKyAgRVhQRUNUX0VRKCJpbnZhbGlkIiwgUHJpbnQoc3RhdGljX2Nhc3Q8
RW51bVdpdGhQcmludFRvPigwKSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyBhIGNsYXNzIGlt
cGxpY2l0bHkgY29udmVydGlibGUgdG8gQmlnZ2VzdEludC4KKworVEVTVChQcmludENsYXNzVGVz
dCwgQmlnZ2VzdEludENvbnZlcnRpYmxlKSB7CisgIEVYUEVDVF9FUSgiNDIiLCBQcmludChCaWdn
ZXN0SW50Q29udmVydGlibGUoKSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyB2YXJpb3VzIGNo
YXIgdHlwZXMuCisKKy8vIGNoYXIuCitURVNUKFByaW50Q2hhclRlc3QsIFBsYWluQ2hhcikgewor
ICBFWFBFQ1RfRVEoIidcXDAnIiwgUHJpbnQoJ1wwJykpOworICBFWFBFQ1RfRVEoIidcXCcnICgz
OSwgMHgyNykiLCBQcmludCgnXCcnKSk7CisgIEVYUEVDVF9FUSgiJ1wiJyAoMzQsIDB4MjIpIiwg
UHJpbnQoJyInKSk7CisgIEVYUEVDVF9FUSgiJz8nICg2MywgMHgzRikiLCBQcmludCgnPycpKTsK
KyAgRVhQRUNUX0VRKCInXFxcXCcgKDkyLCAweDVDKSIsIFByaW50KCdcXCcpKTsKKyAgRVhQRUNU
X0VRKCInXFxhJyAoNykiLCBQcmludCgnXGEnKSk7CisgIEVYUEVDVF9FUSgiJ1xcYicgKDgpIiwg
UHJpbnQoJ1xiJykpOworICBFWFBFQ1RfRVEoIidcXGYnICgxMiwgMHhDKSIsIFByaW50KCdcZicp
KTsKKyAgRVhQRUNUX0VRKCInXFxuJyAoMTAsIDB4QSkiLCBQcmludCgnXG4nKSk7CisgIEVYUEVD
VF9FUSgiJ1xccicgKDEzLCAweEQpIiwgUHJpbnQoJ1xyJykpOworICBFWFBFQ1RfRVEoIidcXHQn
ICg5KSIsIFByaW50KCdcdCcpKTsKKyAgRVhQRUNUX0VRKCInXFx2JyAoMTEsIDB4QikiLCBQcmlu
dCgnXHYnKSk7CisgIEVYUEVDVF9FUSgiJ1xceDdGJyAoMTI3KSIsIFByaW50KCdceDdGJykpOwor
ICBFWFBFQ1RfRVEoIidcXHhGRicgKDI1NSkiLCBQcmludCgnXHhGRicpKTsKKyAgRVhQRUNUX0VR
KCInICcgKDMyLCAweDIwKSIsIFByaW50KCcgJykpOworICBFWFBFQ1RfRVEoIidhJyAoOTcsIDB4
NjEpIiwgUHJpbnQoJ2EnKSk7Cit9CisKKy8vIHNpZ25lZCBjaGFyLgorVEVTVChQcmludENoYXJU
ZXN0LCBTaWduZWRDaGFyKSB7CisgIEVYUEVDVF9FUSgiJ1xcMCciLCBQcmludChzdGF0aWNfY2Fz
dDxzaWduZWQgY2hhcj4oJ1wwJykpKTsKKyAgRVhQRUNUX0VRKCInXFx4Q0UnICgtNTApIiwKKyAg
ICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0PHNpZ25lZCBjaGFyPigtNTApKSk7Cit9CisKKy8v
IHVuc2lnbmVkIGNoYXIuCitURVNUKFByaW50Q2hhclRlc3QsIFVuc2lnbmVkQ2hhcikgeworICBF
WFBFQ1RfRVEoIidcXDAnIiwgUHJpbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oJ1wwJykp
KTsKKyAgRVhQRUNUX0VRKCInYicgKDk4LCAweDYyKSIsCisgICAgICAgICAgICBQcmludChzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPignYicpKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIG90
aGVyIHNpbXBsZSwgYnVpbHQtaW4gdHlwZXMuCisKKy8vIGJvb2wuCitURVNUKFByaW50QnVpbHRJ
blR5cGVUZXN0LCBCb29sKSB7CisgIEVYUEVDVF9FUSgiZmFsc2UiLCBQcmludChmYWxzZSkpOwor
ICBFWFBFQ1RfRVEoInRydWUiLCBQcmludCh0cnVlKSk7Cit9CisKKy8vIHdjaGFyX3QuCitURVNU
KFByaW50QnVpbHRJblR5cGVUZXN0LCBXY2hhcl90KSB7CisgIEVYUEVDVF9FUSgiTCdcXDAnIiwg
UHJpbnQoTCdcMCcpKTsKKyAgRVhQRUNUX0VRKCJMJ1xcJycgKDM5LCAweDI3KSIsIFByaW50KEwn
XCcnKSk7CisgIEVYUEVDVF9FUSgiTCdcIicgKDM0LCAweDIyKSIsIFByaW50KEwnIicpKTsKKyAg
RVhQRUNUX0VRKCJMJz8nICg2MywgMHgzRikiLCBQcmludChMJz8nKSk7CisgIEVYUEVDVF9FUSgi
TCdcXFxcJyAoOTIsIDB4NUMpIiwgUHJpbnQoTCdcXCcpKTsKKyAgRVhQRUNUX0VRKCJMJ1xcYScg
KDcpIiwgUHJpbnQoTCdcYScpKTsKKyAgRVhQRUNUX0VRKCJMJ1xcYicgKDgpIiwgUHJpbnQoTCdc
YicpKTsKKyAgRVhQRUNUX0VRKCJMJ1xcZicgKDEyLCAweEMpIiwgUHJpbnQoTCdcZicpKTsKKyAg
RVhQRUNUX0VRKCJMJ1xcbicgKDEwLCAweEEpIiwgUHJpbnQoTCdcbicpKTsKKyAgRVhQRUNUX0VR
KCJMJ1xccicgKDEzLCAweEQpIiwgUHJpbnQoTCdccicpKTsKKyAgRVhQRUNUX0VRKCJMJ1xcdCcg
KDkpIiwgUHJpbnQoTCdcdCcpKTsKKyAgRVhQRUNUX0VRKCJMJ1xcdicgKDExLCAweEIpIiwgUHJp
bnQoTCdcdicpKTsKKyAgRVhQRUNUX0VRKCJMJ1xceDdGJyAoMTI3KSIsIFByaW50KEwnXHg3Ricp
KTsKKyAgRVhQRUNUX0VRKCJMJ1xceEZGJyAoMjU1KSIsIFByaW50KEwnXHhGRicpKTsKKyAgRVhQ
RUNUX0VRKCJMJyAnICgzMiwgMHgyMCkiLCBQcmludChMJyAnKSk7CisgIEVYUEVDVF9FUSgiTCdh
JyAoOTcsIDB4NjEpIiwgUHJpbnQoTCdhJykpOworICBFWFBFQ1RfRVEoIkwnXFx4NTc2JyAoMTM5
OCkiLCBQcmludChzdGF0aWNfY2FzdDx3Y2hhcl90PigweDU3NikpKTsKKyAgRVhQRUNUX0VRKCJM
J1xceEM3NEQnICg1MTAyMSkiLCBQcmludChzdGF0aWNfY2FzdDx3Y2hhcl90PigweEM3NEQpKSk7
Cit9CisKKy8vIFRlc3QgdGhhdCBJbnQ2NCBwcm92aWRlcyBtb3JlIHN0b3JhZ2UgdGhhbiB3Y2hh
cl90LgorVEVTVChQcmludFR5cGVTaXplVGVzdCwgV2NoYXJfdCkgeworICBFWFBFQ1RfTFQoc2l6
ZW9mKHdjaGFyX3QpLCBzaXplb2YodGVzdGluZzo6aW50ZXJuYWw6OkludDY0KSk7Cit9CisKKy8v
IFZhcmlvdXMgaW50ZWdlciB0eXBlcy4KK1RFU1QoUHJpbnRCdWlsdEluVHlwZVRlc3QsIEludGVn
ZXIpIHsKKyAgRVhQRUNUX0VRKCInXFx4RkYnICgyNTUpIiwgUHJpbnQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4oMjU1KSkpOyAgLy8gdWludDgKKyAgRVhQRUNUX0VRKCInXFx4ODAnICgtMTI4
KSIsIFByaW50KHN0YXRpY19jYXN0PHNpZ25lZCBjaGFyPigtMTI4KSkpOyAgLy8gaW50OAorICBF
WFBFQ1RfRVEoIjY1NTM1IiwgUHJpbnQoVVNIUlRfTUFYKSk7ICAvLyB1aW50MTYKKyAgRVhQRUNU
X0VRKCItMzI3NjgiLCBQcmludChTSFJUX01JTikpOyAgLy8gaW50MTYKKyAgRVhQRUNUX0VRKCI0
Mjk0OTY3Mjk1IiwgUHJpbnQoVUlOVF9NQVgpKTsgIC8vIHVpbnQzMgorICBFWFBFQ1RfRVEoIi0y
MTQ3NDgzNjQ4IiwgUHJpbnQoSU5UX01JTikpOyAgLy8gaW50MzIKKyAgRVhQRUNUX0VRKCIxODQ0
Njc0NDA3MzcwOTU1MTYxNSIsCisgICAgICAgICAgICBQcmludChzdGF0aWNfY2FzdDx0ZXN0aW5n
OjppbnRlcm5hbDo6VUludDY0PigtMSkpKTsgIC8vIHVpbnQ2NAorICBFWFBFQ1RfRVEoIi05MjIz
MzcyMDM2ODU0Nzc1ODA4IiwKKyAgICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0PHRlc3Rpbmc6
OmludGVybmFsOjpJbnQ2ND4oMSkgPDwgNjMpKTsgIC8vIGludDY0Cit9CisKKy8vIFNpemUgdHlw
ZXMuCitURVNUKFByaW50QnVpbHRJblR5cGVUZXN0LCBTaXplX3QpIHsKKyAgRVhQRUNUX0VRKCIx
IiwgUHJpbnQoc2l6ZW9mKCdhJykpKTsgIC8vIHNpemVfdC4KKyNpZiAhR1RFU1RfT1NfV0lORE9X
UworICAvLyBXaW5kb3dzIGhhcyBubyBzc2l6ZV90IHR5cGUuCisgIEVYUEVDVF9FUSgiLTIiLCBQ
cmludChzdGF0aWNfY2FzdDxzc2l6ZV90PigtMikpKTsgIC8vIHNzaXplX3QuCisjZW5kaWYgIC8v
ICFHVEVTVF9PU19XSU5ET1dTCit9CisKKy8vIEZsb2F0aW5nLXBvaW50cy4KK1RFU1QoUHJpbnRC
dWlsdEluVHlwZVRlc3QsIEZsb2F0aW5nUG9pbnRzKSB7CisgIEVYUEVDVF9FUSgiMS41IiwgUHJp
bnQoMS41ZikpOyAgIC8vIGZsb2F0CisgIEVYUEVDVF9FUSgiLTIuNSIsIFByaW50KC0yLjUpKTsg
IC8vIGRvdWJsZQorfQorCisvLyBTaW5jZSA6OnN0ZDo6c3RyaW5nc3RyZWFtOjpvcGVyYXRvcjw8
KGNvbnN0IHZvaWQgKikgZm9ybWF0cyB0aGUgcG9pbnRlcgorLy8gb3V0cHV0IGRpZmZlcmVudGx5
IHdpdGggZGlmZmVyZW50IGNvbXBpbGVycywgd2UgaGF2ZSB0byBjcmVhdGUgdGhlIGV4cGVjdGVk
CisvLyBvdXRwdXQgZmlyc3QgYW5kIHVzZSBpdCBhcyBvdXIgZXhwZWN0YXRpb24uCitzdGF0aWMg
c3RkOjpzdHJpbmcgUHJpbnRQb2ludGVyKGNvbnN0IHZvaWQqIHApIHsKKyAgOjpzdGQ6OnN0cmlu
Z3N0cmVhbSBleHBlY3RlZF9yZXN1bHRfc3RyZWFtOworICBleHBlY3RlZF9yZXN1bHRfc3RyZWFt
IDw8IHA7CisgIHJldHVybiBleHBlY3RlZF9yZXN1bHRfc3RyZWFtLnN0cigpOworfQorCisvLyBU
ZXN0cyBwcmludGluZyBDIHN0cmluZ3MuCisKKy8vIGNvbnN0IGNoYXIqLgorVEVTVChQcmludENT
dHJpbmdUZXN0LCBDb25zdCkgeworICBjb25zdCBjaGFyKiBwID0gIldvcmxkIjsKKyAgRVhQRUNU
X0VRKFByaW50UG9pbnRlcihwKSArICIgcG9pbnRpbmcgdG8gXCJXb3JsZFwiIiwgUHJpbnQocCkp
OworfQorCisvLyBjaGFyKi4KK1RFU1QoUHJpbnRDU3RyaW5nVGVzdCwgTm9uQ29uc3QpIHsKKyAg
Y2hhciBwW10gPSAiSGkiOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApICsgIiBwb2ludGlu
ZyB0byBcIkhpXCIiLAorICAgICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8Y2hhcio+KHApKSk7
Cit9CisKKy8vIE5VTEwgQyBzdHJpbmcuCitURVNUKFByaW50Q1N0cmluZ1Rlc3QsIE51bGwpIHsK
KyAgY29uc3QgY2hhciogcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsK
K30KKworLy8gVGVzdHMgdGhhdCBDIHN0cmluZ3MgYXJlIGVzY2FwZWQgcHJvcGVybHkuCitURVNU
KFByaW50Q1N0cmluZ1Rlc3QsIEVzY2FwZXNQcm9wZXJseSkgeworICBjb25zdCBjaGFyKiBwID0g
IidcIj9cXFxhXGJcZlxuXHJcdFx2XHg3Rlx4RkYgYSI7CisgIEVYUEVDVF9FUShQcmludFBvaW50
ZXIocCkgKyAiIHBvaW50aW5nIHRvIFwiJ1xcXCI/XFxcXFxcYVxcYlxcZiIKKyAgICAgICAgICAg
ICJcXG5cXHJcXHRcXHZcXHg3RlxceEZGIGFcIiIsCisgICAgICAgICAgICBQcmludChwKSk7Cit9
CisKKy8vIE1TVkMgY29tcGlsZXIgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gZGVmaW5lIHdoYXJfdCBh
cyBhIHR5cGVkZWYKKy8vIG9mIHVuc2lnbmVkIHNob3J0LiBEZWZpbmluZyBhbiBvdmVybG9hZCBm
b3IgY29uc3Qgd2NoYXJfdCogaW4gdGhhdCBjYXNlCisvLyB3b3VsZCBjYXVzZSBwb2ludGVycyB0
byB1bnNpZ25lZCBzaG9ydHMgYmUgcHJpbnRlZCBhcyB3aWRlIHN0cmluZ3MsCisvLyBwb3NzaWJs
eSBhY2Nlc3NpbmcgbW9yZSBtZW1vcnkgdGhhbiBpbnRlbmRlZCBhbmQgY2F1c2luZyBpbnZhbGlk
CisvLyBtZW1vcnkgYWNjZXNzZXMuIE1TVkMgZGVmaW5lcyBfTkFUSVZFX1dDSEFSX1RfREVGSU5F
RCBzeW1ib2wgd2hlbgorLy8gd2NoYXJfdCBpcyBpbXBsZW1lbnRlZCBhcyBhIG5hdGl2ZSB0eXBl
LgorI2lmICFkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJ
TkVEKQorCisvLyBjb25zdCB3Y2hhcl90Ki4KK1RFU1QoUHJpbnRXaWRlQ1N0cmluZ1Rlc3QsIENv
bnN0KSB7CisgIGNvbnN0IHdjaGFyX3QqIHAgPSBMIldvcmxkIjsKKyAgRVhQRUNUX0VRKFByaW50
UG9pbnRlcihwKSArICIgcG9pbnRpbmcgdG8gTFwiV29ybGRcIiIsIFByaW50KHApKTsKK30KKwor
Ly8gd2NoYXJfdCouCitURVNUKFByaW50V2lkZUNTdHJpbmdUZXN0LCBOb25Db25zdCkgeworICB3
Y2hhcl90IHBbXSA9IEwiSGkiOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApICsgIiBwb2lu
dGluZyB0byBMXCJIaVwiIiwKKyAgICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0PHdjaGFyX3Qq
PihwKSkpOworfQorCisvLyBOVUxMIHdpZGUgQyBzdHJpbmcuCitURVNUKFByaW50V2lkZUNTdHJp
bmdUZXN0LCBOdWxsKSB7CisgIGNvbnN0IHdjaGFyX3QqIHAgPSBOVUxMOworICBFWFBFQ1RfRVEo
Ik5VTEwiLCBQcmludChwKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgd2lkZSBDIHN0cmluZ3MgYXJl
IGVzY2FwZWQgcHJvcGVybHkuCitURVNUKFByaW50V2lkZUNTdHJpbmdUZXN0LCBFc2NhcGVzUHJv
cGVybHkpIHsKKyAgY29uc3Qgd2NoYXJfdCBzW10gPSB7J1wnJywgJyInLCAnPycsICdcXCcsICdc
YScsICdcYicsICdcZicsICdcbicsICdccicsCisgICAgICAgICAgICAgICAgICAgICAgICdcdCcs
ICdcdicsIDB4RDMsIDB4NTc2LCAweDhEMywgMHhDNzRELCAnICcsICdhJywgJ1wwJ307CisgIEVY
UEVDVF9FUShQcmludFBvaW50ZXIocykgKyAiIHBvaW50aW5nIHRvIExcIidcXFwiP1xcXFxcXGFc
XGJcXGYiCisgICAgICAgICAgICAiXFxuXFxyXFx0XFx2XFx4RDNcXHg1NzZcXHg4RDNcXHhDNzRE
IGFcIiIsCisgICAgICAgICAgICBQcmludChzdGF0aWNfY2FzdDxjb25zdCB3Y2hhcl90Kj4ocykp
KTsKK30KKyNlbmRpZiAgLy8gbmF0aXZlIHdjaGFyX3QKKworLy8gVGVzdHMgcHJpbnRpbmcgcG9p
bnRlcnMgdG8gb3RoZXIgY2hhciB0eXBlcy4KKworLy8gc2lnbmVkIGNoYXIqLgorVEVTVChQcmlu
dENoYXJQb2ludGVyVGVzdCwgU2lnbmVkQ2hhcikgeworICBzaWduZWQgY2hhciogcCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8c2lnbmVkIGNoYXIqPigweDEyMzQpOworICBFWFBFQ1RfRVEoUHJpbnRQb2lu
dGVyKHApLCBQcmludChwKSk7CisgIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmlu
dChwKSk7Cit9CisKKy8vIGNvbnN0IHNpZ25lZCBjaGFyKi4KK1RFU1QoUHJpbnRDaGFyUG9pbnRl
clRlc3QsIENvbnN0U2lnbmVkQ2hhcikgeworICBzaWduZWQgY2hhciogcCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8c2lnbmVkIGNoYXIqPigweDEyMzQpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHAp
LCBQcmludChwKSk7CisgIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7
Cit9CisKKy8vIHVuc2lnbmVkIGNoYXIqLgorVEVTVChQcmludENoYXJQb2ludGVyVGVzdCwgVW5z
aWduZWRDaGFyKSB7CisgIHVuc2lnbmVkIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PHVuc2ln
bmVkIGNoYXIqPigweDEyMzQpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChw
KSk7CisgIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9CisKKy8v
IGNvbnN0IHVuc2lnbmVkIGNoYXIqLgorVEVTVChQcmludENoYXJQb2ludGVyVGVzdCwgQ29uc3RV
bnNpZ25lZENoYXIpIHsKKyAgY29uc3QgdW5zaWduZWQgY2hhciogcCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KDB4MTIzNCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50
ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50
KHApKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgcG9pbnRlcnMgdG8gc2ltcGxlLCBidWlsdC1p
biB0eXBlcy4KKworLy8gYm9vbCouCitURVNUKFByaW50UG9pbnRlclRvQnVpbHRJblR5cGVUZXN0
LCBCb29sKSB7CisgIGJvb2wqIHAgPSByZWludGVycHJldF9jYXN0PGJvb2wqPigweEFCQ0QpOwor
ICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7CisgIHAgPSBOVUxMOworICBF
WFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9CisKKy8vIHZvaWQqLgorVEVTVChQcmludFBv
aW50ZXJUb0J1aWx0SW5UeXBlVGVzdCwgVm9pZCkgeworICB2b2lkKiBwID0gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oMHhBQkNEKTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQo
cCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisv
LyBjb25zdCB2b2lkKi4KK1RFU1QoUHJpbnRQb2ludGVyVG9CdWlsdEluVHlwZVRlc3QsIENvbnN0
Vm9pZCkgeworICBjb25zdCB2b2lkKiBwID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4o
MHhBQkNEKTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0g
TlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBUZXN0cyBwcmlu
dGluZyBwb2ludGVycyB0byBwb2ludGVycy4KK1RFU1QoUHJpbnRQb2ludGVyVG9Qb2ludGVyVGVz
dCwgSW50UG9pbnRlclBvaW50ZXIpIHsKKyAgaW50KiogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50
Kio+KDB4QUJDRCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHApKTsKKyAg
cCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gVGVzdHMg
cHJpbnRpbmcgKG5vbi1tZW1iZXIpIGZ1bmN0aW9uIHBvaW50ZXJzLgorCit2b2lkIE15RnVuY3Rp
b24oaW50IC8qIG4gKi8pIHt9CisKK1RFU1QoUHJpbnRQb2ludGVyVGVzdCwgTm9uTWVtYmVyRnVu
Y3Rpb25Qb2ludGVyKSB7CisgIC8vIFdlIGNhbm5vdCBkaXJlY3RseSBjYXN0ICZNeUZ1bmN0aW9u
IHRvIGNvbnN0IHZvaWQqIGJlY2F1c2UgdGhlCisgIC8vIHN0YW5kYXJkIGRpc2FsbG93cyBjYXN0
aW5nIGJldHdlZW4gcG9pbnRlcnMgdG8gZnVuY3Rpb25zIGFuZAorICAvLyBwb2ludGVycyB0byBv
YmplY3RzLCBhbmQgc29tZSBjb21waWxlcnMgKGUuZy4gR0NDIDMuNCkgZW5mb3JjZQorICAvLyB0
aGlzIGxpbWl0YXRpb24uCisgIEVYUEVDVF9FUSgKKyAgICAgIFByaW50UG9pbnRlcihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHZvaWQqPigKKyAgICAgICAgICByZWludGVycHJldF9jYXN0PGludGVy
bmFsOjpCaWdnZXN0SW50PigmTXlGdW5jdGlvbikpKSwKKyAgICAgIFByaW50KCZNeUZ1bmN0aW9u
KSk7CisgIGludCAoKnApKGJvb2wpID0gTlVMTDsgIC8vIE5PTElOVAorICBFWFBFQ1RfRVEoIk5V
TEwiLCBQcmludChwKSk7Cit9CisKKy8vIEFuIGFzc2VydGlvbiBwcmVkaWNhdGUgZGV0ZXJtaW5p
bmcgd2hldGhlciBhIG9uZSBzdHJpbmcgaXMgYSBwcmVmaXggZm9yCisvLyBhbm90aGVyLgordGVt
cGxhdGUgPHR5cGVuYW1lIFN0cmluZ1R5cGU+CitBc3NlcnRpb25SZXN1bHQgSGFzUHJlZml4KGNv
bnN0IFN0cmluZ1R5cGUmIHN0ciwgY29uc3QgU3RyaW5nVHlwZSYgcHJlZml4KSB7CisgIGlmIChz
dHIuZmluZChwcmVmaXgsIDApID09IDApCisgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsK
KworICBjb25zdCBib29sIGlzX3dpZGVfc3RyaW5nID0gc2l6ZW9mKHByZWZpeFswXSkgPiAxOwor
ICBjb25zdCBjaGFyKiBjb25zdCBiZWdpbl9zdHJpbmdfcXVvdGUgPSBpc193aWRlX3N0cmluZyA/
ICJMXCIiIDogIlwiIjsKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwgYmVn
aW5fc3RyaW5nX3F1b3RlIDw8IHByZWZpeCA8PCAiXCIgaXMgbm90IGEgcHJlZml4IG9mICIKKyAg
ICAgIDw8IGJlZ2luX3N0cmluZ19xdW90ZSA8PCBzdHIgPDwgIlwiXG4iOworfQorCisvLyBUZXN0
cyBwcmludGluZyBtZW1iZXIgdmFyaWFibGUgcG9pbnRlcnMuICBBbHRob3VnaCB0aGV5IGFyZSBj
YWxsZWQKKy8vIHBvaW50ZXJzLCB0aGV5IGRvbid0IHBvaW50IHRvIGEgbG9jYXRpb24gaW4gdGhl
IGFkZHJlc3Mgc3BhY2UuCisvLyBUaGVpciByZXByZXNlbnRhdGlvbiBpcyBpbXBsZW1lbnRhdGlv
bi1kZWZpbmVkLiAgVGh1cyB0aGV5IHdpbGwgYmUKKy8vIHByaW50ZWQgYXMgcmF3IGJ5dGVzLgor
CitzdHJ1Y3QgRm9vIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfkZvbygpIHt9CisgIGludCBNeU1l
dGhvZChjaGFyIHgpIHsgcmV0dXJuIHggKyAxOyB9CisgIHZpcnR1YWwgY2hhciBNeVZpcnR1YWxN
ZXRob2QoaW50IC8qIG4gKi8pIHsgcmV0dXJuICdhJzsgfQorCisgIGludCB2YWx1ZTsKK307CisK
K1RFU1QoUHJpbnRQb2ludGVyVGVzdCwgTWVtYmVyVmFyaWFibGVQb2ludGVyKSB7CisgIEVYUEVD
VF9UUlVFKEhhc1ByZWZpeChQcmludCgmRm9vOjp2YWx1ZSksCisgICAgICAgICAgICAgICAgICAg
ICAgICBQcmludChzaXplb2YoJkZvbzo6dmFsdWUpKSArICItYnl0ZSBvYmplY3QgIikpOworICBp
bnQgRm9vOjoqcCA9IE5VTEw7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KFBy
aW50KHApLAorICAgICAgICAgICAgICAgICAgICAgICAgUHJpbnQoc2l6ZW9mKHApKSArICItYnl0
ZSBvYmplY3QgIikpOworfQorCisvLyBUZXN0cyBwcmludGluZyBtZW1iZXIgZnVuY3Rpb24gcG9p
bnRlcnMuICBBbHRob3VnaCB0aGV5IGFyZSBjYWxsZWQKKy8vIHBvaW50ZXJzLCB0aGV5IGRvbid0
IHBvaW50IHRvIGEgbG9jYXRpb24gaW4gdGhlIGFkZHJlc3Mgc3BhY2UuCisvLyBUaGVpciByZXBy
ZXNlbnRhdGlvbiBpcyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLiAgVGh1cyB0aGV5IHdpbGwgYmUK
Ky8vIHByaW50ZWQgYXMgcmF3IGJ5dGVzLgorVEVTVChQcmludFBvaW50ZXJUZXN0LCBNZW1iZXJG
dW5jdGlvblBvaW50ZXIpIHsKKyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KFByaW50KCZGb286Ok15
TWV0aG9kKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFByaW50KHNpemVvZigmRm9vOjpNeU1l
dGhvZCkpICsgIi1ieXRlIG9iamVjdCAiKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgSGFzUHJl
Zml4KFByaW50KCZGb286Ok15VmlydHVhbE1ldGhvZCksCisgICAgICAgICAgICAgICAgUHJpbnQo
c2l6ZW9mKCgmRm9vOjpNeVZpcnR1YWxNZXRob2QpKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKKyAg
aW50IChGb286OipwKShjaGFyKSA9IE5VTEw7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX1RSVUUoSGFz
UHJlZml4KFByaW50KHApLAorICAgICAgICAgICAgICAgICAgICAgICAgUHJpbnQoc2l6ZW9mKHAp
KSArICItYnl0ZSBvYmplY3QgIikpOworfQorCisvLyBUZXN0cyBwcmludGluZyBDIGFycmF5cy4K
KworLy8gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIGFuZCBQcmludCgpIGlzIHRoYXQgaXQg
ZW5zdXJlcyB0aGF0IHRoZQorLy8gYXJndW1lbnQgaXMgYSByZWZlcmVuY2UgdG8gYW4gYXJyYXku
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitzdGQ6OnN0cmluZyBQcmludEFycmF5
SGVscGVyKFQgKCZhKVtOXSkgeworICByZXR1cm4gUHJpbnQoYSk7Cit9CisKKy8vIE9uZS1kaW1l
bnNpb25hbCBhcnJheS4KK1RFU1QoUHJpbnRBcnJheVRlc3QsIE9uZURpbWVuc2lvbmFsQXJyYXkp
IHsKKyAgaW50IGFbNV0gPSB7IDEsIDIsIDMsIDQsIDUgfTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDIs
IDMsIDQsIDUgfSIsIFByaW50QXJyYXlIZWxwZXIoYSkpOworfQorCisvLyBUd28tZGltZW5zaW9u
YWwgYXJyYXkuCitURVNUKFByaW50QXJyYXlUZXN0LCBUd29EaW1lbnNpb25hbEFycmF5KSB7Cisg
IGludCBhWzJdWzVdID0geworICAgIHsgMSwgMiwgMywgNCwgNSB9LAorICAgIHsgNiwgNywgOCwg
OSwgMCB9CisgIH07CisgIEVYUEVDVF9FUSgieyB7IDEsIDIsIDMsIDQsIDUgfSwgeyA2LCA3LCA4
LCA5LCAwIH0gfSIsIFByaW50QXJyYXlIZWxwZXIoYSkpOworfQorCisvLyBBcnJheSBvZiBjb25z
dCBlbGVtZW50cy4KK1RFU1QoUHJpbnRBcnJheVRlc3QsIENvbnN0QXJyYXkpIHsKKyAgY29uc3Qg
Ym9vbCBhWzFdID0geyBmYWxzZSB9OworICBFWFBFQ1RfRVEoInsgZmFsc2UgfSIsIFByaW50QXJy
YXlIZWxwZXIoYSkpOworfQorCisvLyBjaGFyIGFycmF5IHdpdGhvdXQgdGVybWluYXRpbmcgTlVM
LgorVEVTVChQcmludEFycmF5VGVzdCwgQ2hhckFycmF5V2l0aE5vVGVybWluYXRpbmdOdWwpIHsK
KyAgLy8gQXJyYXkgYSBjb250YWlucyAnXDAnIGluIHRoZSBtaWRkbGUgYW5kIGRvZXNuJ3QgZW5k
IHdpdGggJ1wwJy4KKyAgY2hhciBhW10gPSB7ICdIJywgJ1wwJywgJ2knIH07CisgIEVYUEVDVF9F
USgiXCJIXFwwaVwiIChubyB0ZXJtaW5hdGluZyBOVUwpIiwgUHJpbnRBcnJheUhlbHBlcihhKSk7
Cit9CisKKy8vIGNvbnN0IGNoYXIgYXJyYXkgd2l0aCB0ZXJtaW5hdGluZyBOVUwuCitURVNUKFBy
aW50QXJyYXlUZXN0LCBDb25zdENoYXJBcnJheVdpdGhUZXJtaW5hdGluZ051bCkgeworICBjb25z
dCBjaGFyIGFbXSA9ICJcMEhpIjsKKyAgRVhQRUNUX0VRKCJcIlxcMEhpXCIiLCBQcmludEFycmF5
SGVscGVyKGEpKTsKK30KKworLy8gY29uc3Qgd2NoYXJfdCBhcnJheSB3aXRob3V0IHRlcm1pbmF0
aW5nIE5VTC4KK1RFU1QoUHJpbnRBcnJheVRlc3QsIFdDaGFyQXJyYXlXaXRoTm9UZXJtaW5hdGlu
Z051bCkgeworICAvLyBBcnJheSBhIGNvbnRhaW5zICdcMCcgaW4gdGhlIG1pZGRsZSBhbmQgZG9l
c24ndCBlbmQgd2l0aCAnXDAnLgorICBjb25zdCB3Y2hhcl90IGFbXSA9IHsgTCdIJywgTCdcMCcs
IEwnaScgfTsKKyAgRVhQRUNUX0VRKCJMXCJIXFwwaVwiIChubyB0ZXJtaW5hdGluZyBOVUwpIiwg
UHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIHdjaGFyX3QgYXJyYXkgd2l0aCB0ZXJtaW5h
dGluZyBOVUwuCitURVNUKFByaW50QXJyYXlUZXN0LCBXQ29uc3RDaGFyQXJyYXlXaXRoVGVybWlu
YXRpbmdOdWwpIHsKKyAgY29uc3Qgd2NoYXJfdCBhW10gPSBMIlwwSGkiOworICBFWFBFQ1RfRVEo
IkxcIlxcMEhpXCIiLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8gQXJyYXkgb2Ygb2Jq
ZWN0cy4KK1RFU1QoUHJpbnRBcnJheVRlc3QsIE9iamVjdEFycmF5KSB7CisgIHN0ZDo6c3RyaW5n
IGFbM10gPSB7IkhpIiwgIkhlbGxvIiwgIk5pIGhhbyJ9OworICBFWFBFQ1RfRVEoInsgXCJIaVwi
LCBcIkhlbGxvXCIsIFwiTmkgaGFvXCIgfSIsIFByaW50QXJyYXlIZWxwZXIoYSkpOworfQorCisv
LyBBcnJheSB3aXRoIG1hbnkgZWxlbWVudHMuCitURVNUKFByaW50QXJyYXlUZXN0LCBCaWdBcnJh
eSkgeworICBpbnQgYVsxMDBdID0geyAxLCAyLCAzIH07CisgIEVYUEVDVF9FUSgieyAxLCAyLCAz
LCAwLCAwLCAwLCAwLCAwLCAuLi4sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAgfSIsCisgICAgICAg
ICAgICBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgOjpzdHJp
bmcgYW5kIDo6c3RkOjpzdHJpbmcuCisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworLy8g
OjpzdHJpbmcuCitURVNUKFByaW50U3RyaW5nVGVzdCwgU3RyaW5nSW5HbG9iYWxOYW1lc3BhY2Up
IHsKKyAgY29uc3QgY2hhciBzW10gPSAiJ1wiP1xcXGFcYlxmXG5cMFxyXHRcdlx4N0ZceEZGIGEi
OworICBjb25zdCA6OnN0cmluZyBzdHIocywgc2l6ZW9mKHMpKTsKKyAgRVhQRUNUX0VRKCJcIidc
XFwiP1xcXFxcXGFcXGJcXGZcXG5cXDBcXHJcXHRcXHZcXHg3RlxceEZGIGFcXDBcIiIsCisgICAg
ICAgICAgICBQcmludChzdHIpKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJ
TkcKKworLy8gOjpzdGQ6OnN0cmluZy4KK1RFU1QoUHJpbnRTdHJpbmdUZXN0LCBTdHJpbmdJblN0
ZE5hbWVzcGFjZSkgeworICBjb25zdCBjaGFyIHNbXSA9ICInXCI/XFxcYVxiXGZcblwwXHJcdFx2
XHg3Rlx4RkYgYSI7CisgIGNvbnN0IDo6c3RkOjpzdHJpbmcgc3RyKHMsIHNpemVvZihzKSk7Cisg
IEVYUEVDVF9FUSgiXCInXFxcIj9cXFxcXFxhXFxiXFxmXFxuXFwwXFxyXFx0XFx2XFx4N0ZcXHhG
RiBhXFwwXCIiLAorICAgICAgICAgICAgUHJpbnQoc3RyKSk7Cit9CisKK1RFU1QoUHJpbnRTdHJp
bmdUZXN0LCBTdHJpbmdBbWJpZ3VvdXNIZXgpIHsKKyAgLy8gIlx4NkJBTkFOQSIgaXMgYW1iaWd1
b3VzLCBpdCBjYW4gYmUgaW50ZXJwcmV0ZWQgYXMgc3RhcnRpbmcgd2l0aCBlaXRoZXIgb2Y6Cisg
IC8vICdceDYnLCAnXHg2QicsIG9yICdceDZCQScuCisKKyAgLy8gYSBoZXggZXNjYXBpbmcgc2Vx
dWVuY2UgZm9sbG93aW5nIGJ5IGEgZGVjaW1hbCBkaWdpdAorICBFWFBFQ1RfRVEoIlwiMFxceDEy
XCIgXCIzXCIiLCBQcmludCg6OnN0ZDo6c3RyaW5nKCIwXHgxMiIgIjMiKSkpOworICAvLyBhIGhl
eCBlc2NhcGluZyBzZXF1ZW5jZSBmb2xsb3dpbmcgYnkgYSBoZXggZGlnaXQgKGxvd2VyLWNhc2Up
CisgIEVYUEVDVF9FUSgiXCJtbVxceDZcIiBcImJhbmFuYXNcIiIsIFByaW50KDo6c3RkOjpzdHJp
bmcoIm1tXHg2IiAiYmFuYW5hcyIpKSk7CisgIC8vIGEgaGV4IGVzY2FwaW5nIHNlcXVlbmNlIGZv
bGxvd2luZyBieSBhIGhleCBkaWdpdCAodXBwZXItY2FzZSkKKyAgRVhQRUNUX0VRKCJcIk5PTVxc
eDZcIiBcIkJBTkFOQVwiIiwgUHJpbnQoOjpzdGQ6OnN0cmluZygiTk9NXHg2IiAiQkFOQU5BIikp
KTsKKyAgLy8gYSBoZXggZXNjYXBpbmcgc2VxdWVuY2UgZm9sbG93aW5nIGJ5IGEgbm9uLXhkaWdp
dAorICBFWFBFQ1RfRVEoIlwiIVxceDUtIVwiIiwgUHJpbnQoOjpzdGQ6OnN0cmluZygiIVx4NS0h
IikpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgOjp3c3RyaW5nIGFuZCA6OnN0ZDo6d3N0cmlu
Zy4KKworI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORworLy8gOjp3c3RyaW5nLgorVEVTVChQ
cmludFdpZGVTdHJpbmdUZXN0LCBTdHJpbmdJbkdsb2JhbE5hbWVzcGFjZSkgeworICBjb25zdCB3
Y2hhcl90IHNbXSA9IEwiJ1wiP1xcXGFcYlxmXG5cMFxyXHRcdlx4RDNceDU3Nlx4OEQzXHhDNzRE
IGEiOworICBjb25zdCA6OndzdHJpbmcgc3RyKHMsIHNpemVvZihzKS9zaXplb2Yod2NoYXJfdCkp
OworICBFWFBFQ1RfRVEoIkxcIidcXFwiP1xcXFxcXGFcXGJcXGZcXG5cXDBcXHJcXHRcXHYiCisg
ICAgICAgICAgICAiXFx4RDNcXHg1NzZcXHg4RDNcXHhDNzREIGFcXDBcIiIsCisgICAgICAgICAg
ICBQcmludChzdHIpKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCisK
KyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKKy8vIDo6c3RkOjp3c3RyaW5nLgorVEVTVChQcmlu
dFdpZGVTdHJpbmdUZXN0LCBTdHJpbmdJblN0ZE5hbWVzcGFjZSkgeworICBjb25zdCB3Y2hhcl90
IHNbXSA9IEwiJ1wiP1xcXGFcYlxmXG5cMFxyXHRcdlx4RDNceDU3Nlx4OEQzXHhDNzREIGEiOwor
ICBjb25zdCA6OnN0ZDo6d3N0cmluZyBzdHIocywgc2l6ZW9mKHMpL3NpemVvZih3Y2hhcl90KSk7
CisgIEVYUEVDVF9FUSgiTFwiJ1xcXCI/XFxcXFxcYVxcYlxcZlxcblxcMFxcclxcdFxcdiIKKyAg
ICAgICAgICAgICJcXHhEM1xceDU3NlxceDhEM1xceEM3NEQgYVxcMFwiIiwKKyAgICAgICAgICAg
IFByaW50KHN0cikpOworfQorCitURVNUKFByaW50V2lkZVN0cmluZ1Rlc3QsIFN0cmluZ0FtYmln
dW91c0hleCkgeworICAvLyBzYW1lIGZvciB3aWRlIHN0cmluZ3MuCisgIEVYUEVDVF9FUSgiTFwi
MFxceDEyXCIgTFwiM1wiIiwgUHJpbnQoOjpzdGQ6OndzdHJpbmcoTCIwXHgxMiIgTCIzIikpKTsK
KyAgRVhQRUNUX0VRKCJMXCJtbVxceDZcIiBMXCJiYW5hbmFzXCIiLAorICAgICAgICAgICAgUHJp
bnQoOjpzdGQ6OndzdHJpbmcoTCJtbVx4NiIgTCJiYW5hbmFzIikpKTsKKyAgRVhQRUNUX0VRKCJM
XCJOT01cXHg2XCIgTFwiQkFOQU5BXCIiLAorICAgICAgICAgICAgUHJpbnQoOjpzdGQ6OndzdHJp
bmcoTCJOT01ceDYiIEwiQkFOQU5BIikpKTsKKyAgRVhQRUNUX0VRKCJMXCIhXFx4NS0hXCIiLCBQ
cmludCg6OnN0ZDo6d3N0cmluZyhMIiFceDUtISIpKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hB
U19TVERfV1NUUklORworCisvLyBUZXN0cyBwcmludGluZyB0eXBlcyB0aGF0IHN1cHBvcnQgZ2Vu
ZXJpYyBzdHJlYW1pbmcgKGkuZS4gc3RyZWFtaW5nCisvLyB0byBzdGQ6OmJhc2ljX29zdHJlYW08
Q2hhciwgQ2hhclRyYWl0cz4gZm9yIGFueSB2YWxpZCBDaGFyIGFuZAorLy8gQ2hhclRyYWl0cyB0
eXBlcykuCisKKy8vIFRlc3RzIHByaW50aW5nIGEgbm9uLXRlbXBsYXRlIHR5cGUgdGhhdCBzdXBw
b3J0cyBnZW5lcmljIHN0cmVhbWluZy4KKworY2xhc3MgQWxsb3dzR2VuZXJpY1N0cmVhbWluZyB7
fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXIsIHR5cGVuYW1lIENoYXJUcmFpdHM+CitzdGQ6
OmJhc2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9wZXJhdG9yPDwoCisgICAgc3RkOjpi
YXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcywKKyAgICBjb25zdCBBbGxvd3NHZW5l
cmljU3RyZWFtaW5nJiAvKiBhICovKSB7CisgIHJldHVybiBvcyA8PCAiQWxsb3dzR2VuZXJpY1N0
cmVhbWluZyI7Cit9CisKK1RFU1QoUHJpbnRUeXBlV2l0aEdlbmVyaWNTdHJlYW1pbmdUZXN0LCBO
b25UZW1wbGF0ZVR5cGUpIHsKKyAgQWxsb3dzR2VuZXJpY1N0cmVhbWluZyBhOworICBFWFBFQ1Rf
RVEoIkFsbG93c0dlbmVyaWNTdHJlYW1pbmciLCBQcmludChhKSk7Cit9CisKKy8vIFRlc3RzIHBy
aW50aW5nIGEgdGVtcGxhdGUgdHlwZSB0aGF0IHN1cHBvcnRzIGdlbmVyaWMgc3RyZWFtaW5nLgor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEFsbG93c0dlbmVyaWNTdHJlYW1pbmdUZW1w
bGF0ZSB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXIsIHR5cGVuYW1lIENoYXJUcmFpdHMs
IHR5cGVuYW1lIFQ+CitzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9wZXJh
dG9yPDwoCisgICAgc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcywKKyAg
ICBjb25zdCBBbGxvd3NHZW5lcmljU3RyZWFtaW5nVGVtcGxhdGU8VD4mIC8qIGEgKi8pIHsKKyAg
cmV0dXJuIG9zIDw8ICJBbGxvd3NHZW5lcmljU3RyZWFtaW5nVGVtcGxhdGUiOworfQorCitURVNU
KFByaW50VHlwZVdpdGhHZW5lcmljU3RyZWFtaW5nVGVzdCwgVGVtcGxhdGVUeXBlKSB7CisgIEFs
bG93c0dlbmVyaWNTdHJlYW1pbmdUZW1wbGF0ZTxpbnQ+IGE7CisgIEVYUEVDVF9FUSgiQWxsb3dz
R2VuZXJpY1N0cmVhbWluZ1RlbXBsYXRlIiwgUHJpbnQoYSkpOworfQorCisvLyBUZXN0cyBwcmlu
dGluZyBhIHR5cGUgdGhhdCBzdXBwb3J0cyBnZW5lcmljIHN0cmVhbWluZyBhbmQgY2FuIGJlCisv
LyBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBhbm90aGVyIHByaW50YWJsZSB0eXBlLgorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEFsbG93c0dlbmVyaWNTdHJlYW1pbmdBbmRJbXBsaWNp
dENvbnZlcnNpb25UZW1wbGF0ZSB7CisgcHVibGljOgorICBvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyLCB0eXBlbmFt
ZSBDaGFyVHJhaXRzLCB0eXBlbmFtZSBUPgorc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJU
cmFpdHM+JiBvcGVyYXRvcjw8KAorICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJh
aXRzPiYgb3MsCisgICAgY29uc3QgQWxsb3dzR2VuZXJpY1N0cmVhbWluZ0FuZEltcGxpY2l0Q29u
dmVyc2lvblRlbXBsYXRlPFQ+JiAvKiBhICovKSB7CisgIHJldHVybiBvcyA8PCAiQWxsb3dzR2Vu
ZXJpY1N0cmVhbWluZ0FuZEltcGxpY2l0Q29udmVyc2lvblRlbXBsYXRlIjsKK30KKworVEVTVChQ
cmludFR5cGVXaXRoR2VuZXJpY1N0cmVhbWluZ1Rlc3QsIFR5cGVJbXBsaWNpdGx5Q29udmVydGli
bGUpIHsKKyAgQWxsb3dzR2VuZXJpY1N0cmVhbWluZ0FuZEltcGxpY2l0Q29udmVyc2lvblRlbXBs
YXRlPGludD4gYTsKKyAgRVhQRUNUX0VRKCJBbGxvd3NHZW5lcmljU3RyZWFtaW5nQW5kSW1wbGlj
aXRDb252ZXJzaW9uVGVtcGxhdGUiLCBQcmludChhKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfQUJT
TAorCisvLyBUZXN0cyBwcmludGluZyA6OmFic2w6OnN0cmluZ192aWV3LgorCitURVNUKFByaW50
U3RyaW5nVmlld1Rlc3QsIFNpbXBsZVN0cmluZ1ZpZXcpIHsKKyAgY29uc3QgOjphYnNsOjpzdHJp
bmdfdmlldyBzcCA9ICJIZWxsbyI7CisgIEVYUEVDVF9FUSgiXCJIZWxsb1wiIiwgUHJpbnQoc3Ap
KTsKK30KKworVEVTVChQcmludFN0cmluZ1ZpZXdUZXN0LCBVbnByaW50YWJsZUNoYXJhY3RlcnMp
IHsKKyAgY29uc3QgY2hhciBzdHJbXSA9ICJOVUwgKFwwKSBhbmQgXHJcdCI7CisgIGNvbnN0IDo6
YWJzbDo6c3RyaW5nX3ZpZXcgc3Aoc3RyLCBzaXplb2Yoc3RyKSAtIDEpOworICBFWFBFQ1RfRVEo
IlwiTlVMIChcXDApIGFuZCBcXHJcXHRcIiIsIFByaW50KHNwKSk7Cit9CisKKyNlbmRpZiAgLy8g
R1RFU1RfSEFTX0FCU0wKKworLy8gVGVzdHMgcHJpbnRpbmcgU1RMIGNvbnRhaW5lcnMuCisKK1RF
U1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBFbXB0eURlcXVlKSB7CisgIGRlcXVlPGNoYXI+IGVt
cHR5OworICBFWFBFQ1RfRVEoInt9IiwgUHJpbnQoZW1wdHkpKTsKK30KKworVEVTVChQcmludFN0
bENvbnRhaW5lclRlc3QsIE5vbkVtcHR5RGVxdWUpIHsKKyAgZGVxdWU8aW50PiBub25fZW1wdHk7
CisgIG5vbl9lbXB0eS5wdXNoX2JhY2soMSk7CisgIG5vbl9lbXB0eS5wdXNoX2JhY2soMyk7Cisg
IEVYUEVDVF9FUSgieyAxLCAzIH0iLCBQcmludChub25fZW1wdHkpKTsKK30KKworI2lmIEdURVNU
X0hBU19VTk9SREVSRURfTUFQXworCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgT25lRWxl
bWVudEhhc2hNYXApIHsKKyAgOjpzdGQ6OnVub3JkZXJlZF9tYXA8aW50LCBjaGFyPiBtYXAxOwor
ICBtYXAxWzFdID0gJ2EnOworICBFWFBFQ1RfRVEoInsgKDEsICdhJyAoOTcsIDB4NjEpKSB9Iiwg
UHJpbnQobWFwMSkpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgSGFzaE11bHRp
TWFwKSB7CisgIDo6c3RkOjp1bm9yZGVyZWRfbXVsdGltYXA8aW50LCBib29sPiBtYXAxOworICBt
YXAxLmluc2VydChtYWtlX3BhaXIoNSwgdHJ1ZSkpOworICBtYXAxLmluc2VydChtYWtlX3BhaXIo
NSwgZmFsc2UpKTsKKworICAvLyBFbGVtZW50cyBvZiBoYXNoX211bHRpbWFwIGNhbiBiZSBwcmlu
dGVkIGluIGFueSBvcmRlci4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgcmVzdWx0ID0gUHJpbnQobWFw
MSk7CisgIEVYUEVDVF9UUlVFKHJlc3VsdCA9PSAieyAoNSwgdHJ1ZSksICg1LCBmYWxzZSkgfSIg
fHwKKyAgICAgICAgICAgICAgcmVzdWx0ID09ICJ7ICg1LCBmYWxzZSksICg1LCB0cnVlKSB9IikK
KyAgICAgICAgICAgICAgICAgIDw8ICIgd2hlcmUgUHJpbnQobWFwMSkgcmV0dXJucyBcIiIgPDwg
cmVzdWx0IDw8ICJcIi4iOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19VTk9SREVSRURfTUFQ
XworCisjaWYgR1RFU1RfSEFTX1VOT1JERVJFRF9TRVRfCisKK1RFU1QoUHJpbnRTdGxDb250YWlu
ZXJUZXN0LCBIYXNoU2V0KSB7CisgIDo6c3RkOjp1bm9yZGVyZWRfc2V0PGludD4gc2V0MTsKKyAg
c2V0MS5pbnNlcnQoMSk7CisgIEVYUEVDVF9FUSgieyAxIH0iLCBQcmludChzZXQxKSk7Cit9CisK
K1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBIYXNoTXVsdGlTZXQpIHsKKyAgY29uc3QgaW50
IGtTaXplID0gNTsKKyAgaW50IGFba1NpemVdID0geyAxLCAxLCAyLCA1LCAxIH07CisgIDo6c3Rk
Ojp1bm9yZGVyZWRfbXVsdGlzZXQ8aW50PiBzZXQxKGEsIGEgKyBrU2l6ZSk7CisKKyAgLy8gRWxl
bWVudHMgb2YgaGFzaF9tdWx0aXNldCBjYW4gYmUgcHJpbnRlZCBpbiBhbnkgb3JkZXIuCisgIGNv
bnN0IHN0ZDo6c3RyaW5nIHJlc3VsdCA9IFByaW50KHNldDEpOworICBjb25zdCBzdGQ6OnN0cmlu
ZyBleHBlY3RlZF9wYXR0ZXJuID0gInsgZCwgZCwgZCwgZCwgZCB9IjsgIC8vIGQgbWVhbnMgYSBk
aWdpdC4KKworICAvLyBWZXJpZmllcyB0aGUgcmVzdWx0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIHBh
dHRlcm47IGFsc28gZXh0cmFjdHMKKyAgLy8gdGhlIG51bWJlcnMgaW4gdGhlIHJlc3VsdC4KKyAg
QVNTRVJUX0VRKGV4cGVjdGVkX3BhdHRlcm4ubGVuZ3RoKCksIHJlc3VsdC5sZW5ndGgoKSk7Cisg
IHN0ZDo6dmVjdG9yPGludD4gbnVtYmVyczsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gcmVz
dWx0Lmxlbmd0aCgpOyBpKyspIHsKKyAgICBpZiAoZXhwZWN0ZWRfcGF0dGVybltpXSA9PSAnZCcp
IHsKKyAgICAgIEFTU0VSVF9ORShpc2RpZ2l0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHJl
c3VsdFtpXSkpLCAwKTsKKyAgICAgIG51bWJlcnMucHVzaF9iYWNrKHJlc3VsdFtpXSAtICcwJyk7
CisgICAgfSBlbHNlIHsKKyAgICAgIEVYUEVDVF9FUShleHBlY3RlZF9wYXR0ZXJuW2ldLCByZXN1
bHRbaV0pIDw8ICIgd2hlcmUgcmVzdWx0IGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8IHJlc3VsdDsKKyAgICB9CisgIH0KKworICAvLyBNYWtl
cyBzdXJlIHRoZSByZXN1bHQgY29udGFpbnMgdGhlIHJpZ2h0IG51bWJlcnMuCisgIHN0ZDo6c29y
dChudW1iZXJzLmJlZ2luKCksIG51bWJlcnMuZW5kKCkpOworICBzdGQ6OnNvcnQoYSwgYSArIGtT
aXplKTsKKyAgRVhQRUNUX1RSVUUoc3RkOjplcXVhbChhLCBhICsga1NpemUsIG51bWJlcnMuYmVn
aW4oKSkpOworfQorCisjZW5kaWYgIC8vICBHVEVTVF9IQVNfVU5PUkRFUkVEX1NFVF8KKworVEVT
VChQcmludFN0bENvbnRhaW5lclRlc3QsIExpc3QpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgYVtd
ID0geyJoZWxsbyIsICJ3b3JsZCJ9OworICBjb25zdCBsaXN0PHN0ZDo6c3RyaW5nPiBzdHJpbmdz
KGEsIGEgKyAyKTsKKyAgRVhQRUNUX0VRKCJ7IFwiaGVsbG9cIiwgXCJ3b3JsZFwiIH0iLCBQcmlu
dChzdHJpbmdzKSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBNYXApIHsKKyAg
bWFwPGludCwgYm9vbD4gbWFwMTsKKyAgbWFwMVsxXSA9IHRydWU7CisgIG1hcDFbNV0gPSBmYWxz
ZTsKKyAgbWFwMVszXSA9IHRydWU7CisgIEVYUEVDVF9FUSgieyAoMSwgdHJ1ZSksICgzLCB0cnVl
KSwgKDUsIGZhbHNlKSB9IiwgUHJpbnQobWFwMSkpOworfQorCitURVNUKFByaW50U3RsQ29udGFp
bmVyVGVzdCwgTXVsdGlNYXApIHsKKyAgbXVsdGltYXA8Ym9vbCwgaW50PiBtYXAxOworICAvLyBU
aGUgbWFrZV9wYWlyIHRlbXBsYXRlIGZ1bmN0aW9uIHdvdWxkIGRlZHVjZSB0aGUgdHlwZSBhcwor
ICAvLyBwYWlyPGJvb2wsIGludD4gaGVyZSwgYW5kIHNpbmNlIHRoZSBrZXkgcGFydCBpbiBhIG11
bHRpbWFwIGhhcyB0bworICAvLyBiZSBjb25zdGFudCwgd2l0aG91dCBhIHRlbXBsYXRlZCBjdG9y
IGluIHRoZSBwYWlyIGNsYXNzIChhcyBpbgorICAvLyBsaWJDc3RkIG9uIFNvbGFyaXMpLCBtYWtl
X3BhaXIgY2FsbCB3b3VsZCBmYWlsIHRvIGNvbXBpbGUgYXMgbm8KKyAgLy8gaW1wbGljaXQgY29u
dmVyc2lvbiBpcyBmb3VuZC4gIFRodXMgZXhwbGljaXQgdHlwZW5hbWUgaXMgdXNlZAorICAvLyBo
ZXJlIGluc3RlYWQuCisgIG1hcDEuaW5zZXJ0KHBhaXI8Y29uc3QgYm9vbCwgaW50Pih0cnVlLCAw
KSk7CisgIG1hcDEuaW5zZXJ0KHBhaXI8Y29uc3QgYm9vbCwgaW50Pih0cnVlLCAxKSk7CisgIG1h
cDEuaW5zZXJ0KHBhaXI8Y29uc3QgYm9vbCwgaW50PihmYWxzZSwgMikpOworICBFWFBFQ1RfRVEo
InsgKGZhbHNlLCAyKSwgKHRydWUsIDApLCAodHJ1ZSwgMSkgfSIsIFByaW50KG1hcDEpKTsKK30K
KworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIFNldCkgeworICBjb25zdCB1bnNpZ25lZCBp
bnQgYVtdID0geyAzLCAwLCA1IH07CisgIHNldDx1bnNpZ25lZCBpbnQ+IHNldDEoYSwgYSArIDMp
OworICBFWFBFQ1RfRVEoInsgMCwgMywgNSB9IiwgUHJpbnQoc2V0MSkpOworfQorCitURVNUKFBy
aW50U3RsQ29udGFpbmVyVGVzdCwgTXVsdGlTZXQpIHsKKyAgY29uc3QgaW50IGFbXSA9IHsgMSwg
MSwgMiwgNSwgMSB9OworICBtdWx0aXNldDxpbnQ+IHNldDEoYSwgYSArIDUpOworICBFWFBFQ1Rf
RVEoInsgMSwgMSwgMSwgMiwgNSB9IiwgUHJpbnQoc2V0MSkpOworfQorCisjaWYgR1RFU1RfSEFT
X1NURF9GT1JXQVJEX0xJU1RfCisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBTaW5nbHlM
aW5rZWRMaXN0KSB7CisgIGludCBhW10gPSB7IDksIDIsIDggfTsKKyAgY29uc3Qgc3RkOjpmb3J3
YXJkX2xpc3Q8aW50PiBpbnRzKGEsIGEgKyAzKTsKKyAgRVhQRUNUX0VRKCJ7IDksIDIsIDggfSIs
IFByaW50KGludHMpKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9GT1JXQVJEX0xJU1Rf
CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBQYWlyKSB7CisgIHBhaXI8Y29uc3QgYm9v
bCwgaW50PiBwKHRydWUsIDUpOworICBFWFBFQ1RfRVEoIih0cnVlLCA1KSIsIFByaW50KHApKTsK
K30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIFZlY3RvcikgeworICB2ZWN0b3I8aW50
PiB2OworICB2LnB1c2hfYmFjaygxKTsKKyAgdi5wdXNoX2JhY2soMik7CisgIEVYUEVDVF9FUSgi
eyAxLCAyIH0iLCBQcmludCh2KSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBM
b25nU2VxdWVuY2UpIHsKKyAgY29uc3QgaW50IGFbMTAwXSA9IHsgMSwgMiwgMyB9OworICBjb25z
dCB2ZWN0b3I8aW50PiB2KGEsIGEgKyAxMDApOworICBFWFBFQ1RfRVEoInsgMSwgMiwgMywgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgIgorICAgICAgICAgICAgIjAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIC4uLiB9IiwgUHJpbnQo
dikpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgTmVzdGVkQ29udGFpbmVyKSB7
CisgIGNvbnN0IGludCBhMVtdID0geyAxLCAyIH07CisgIGNvbnN0IGludCBhMltdID0geyAzLCA0
LCA1IH07CisgIGNvbnN0IGxpc3Q8aW50PiBsMShhMSwgYTEgKyAyKTsKKyAgY29uc3QgbGlzdDxp
bnQ+IGwyKGEyLCBhMiArIDMpOworCisgIHZlY3RvcjxsaXN0PGludD4gPiB2OworICB2LnB1c2hf
YmFjayhsMSk7CisgIHYucHVzaF9iYWNrKGwyKTsKKyAgRVhQRUNUX0VRKCJ7IHsgMSwgMiB9LCB7
IDMsIDQsIDUgfSB9IiwgUHJpbnQodikpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVz
dCwgT25lRGltZW5zaW9uYWxOYXRpdmVBcnJheSkgeworICBjb25zdCBpbnQgYVszXSA9IHsgMSwg
MiwgMyB9OworICBOYXRpdmVBcnJheTxpbnQ+IGIoYSwgMywgUmVsYXRpb25Ub1NvdXJjZVJlZmVy
ZW5jZSgpKTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDIsIDMgfSIsIFByaW50KGIpKTsKK30KKworVEVT
VChQcmludFN0bENvbnRhaW5lclRlc3QsIFR3b0RpbWVuc2lvbmFsTmF0aXZlQXJyYXkpIHsKKyAg
Y29uc3QgaW50IGFbMl1bM10gPSB7IHsgMSwgMiwgMyB9LCB7IDQsIDUsIDYgfSB9OworICBOYXRp
dmVBcnJheTxpbnRbM10+IGIoYSwgMiwgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgpKTsKKyAg
RVhQRUNUX0VRKCJ7IHsgMSwgMiwgMyB9LCB7IDQsIDUsIDYgfSB9IiwgUHJpbnQoYikpOworfQor
CisvLyBUZXN0cyB0aGF0IGEgY2xhc3MgbmFtZWQgaXRlcmF0b3IgaXNuJ3QgdHJlYXRlZCBhcyBh
IGNvbnRhaW5lci4KKworc3RydWN0IGl0ZXJhdG9yIHsKKyAgY2hhciB4OworfTsKKworVEVTVChQ
cmludFN0bENvbnRhaW5lclRlc3QsIEl0ZXJhdG9yKSB7CisgIGl0ZXJhdG9yIGl0ID0ge307Cisg
IEVYUEVDVF9FUSgiMS1ieXRlIG9iamVjdCA8MDA+IiwgUHJpbnQoaXQpKTsKK30KKworLy8gVGVz
dHMgdGhhdCBhIGNsYXNzIG5hbWVkIGNvbnN0X2l0ZXJhdG9yIGlzbid0IHRyZWF0ZWQgYXMgYSBj
b250YWluZXIuCisKK3N0cnVjdCBjb25zdF9pdGVyYXRvciB7CisgIGNoYXIgeDsKK307CisKK1RF
U1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBDb25zdEl0ZXJhdG9yKSB7CisgIGNvbnN0X2l0ZXJh
dG9yIGl0ID0ge307CisgIEVYUEVDVF9FUSgiMS1ieXRlIG9iamVjdCA8MDA+IiwgUHJpbnQoaXQp
KTsKK30KKworI2lmIEdURVNUX0hBU19UUjFfVFVQTEUKKy8vIFRlc3RzIHByaW50aW5nIDo6c3Rk
Ojp0cjE6OnR1cGxlcy4KKworLy8gVHVwbGVzIG9mIHZhcmlvdXMgYXJpdGllcy4KK1RFU1QoUHJp
bnRUcjFUdXBsZVRlc3QsIFZhcmlvdXNTaXplcykgeworICA6OnN0ZDo6dHIxOjp0dXBsZTw+IHQw
OworICBFWFBFQ1RfRVEoIigpIiwgUHJpbnQodDApKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxp
bnQ+IHQxKDUpOworICBFWFBFQ1RfRVEoIig1KSIsIFByaW50KHQxKSk7CisKKyAgOjpzdGQ6OnRy
MTo6dHVwbGU8Y2hhciwgYm9vbD4gdDIoJ2EnLCB0cnVlKTsKKyAgRVhQRUNUX0VRKCIoJ2EnICg5
NywgMHg2MSksIHRydWUpIiwgUHJpbnQodDIpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxib29s
LCBpbnQsIGludD4gdDMoZmFsc2UsIDIsIDMpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMyki
LCBQcmludCh0MykpOworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQ+
IHQ0KGZhbHNlLCAyLCAzLCA0KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQpIiwgUHJp
bnQodDQpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29s
PiB0NShmYWxzZSwgMiwgMywgNCwgdHJ1ZSk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0
LCB0cnVlKSIsIFByaW50KHQ1KSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBp
bnQsIGludCwgYm9vbCwgaW50PiB0NihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNik7CisgIEVYUEVD
VF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2KSIsIFByaW50KHQ2KSk7CisKKyAgOjpzdGQ6
OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQ+IHQ3KAorICAg
ICAgZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwg
MywgNCwgdHJ1ZSwgNiwgNykiLCBQcmludCh0NykpOworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGJv
b2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBib29sPiB0OCgKKyAgICAgIGZhbHNl
LCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMs
IDQsIHRydWUsIDYsIDcsIHRydWUpIiwgUHJpbnQodDgpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBs
ZTxib29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgYm9vbCwgaW50PiB0OSgKKyAg
ICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlLCA5KTsKKyAgRVhQRUNUX0VRKCIo
ZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUsIDkpIiwgUHJpbnQodDkpKTsKKworICBj
b25zdCBjaGFyKiBjb25zdCBzdHIgPSAiOCI7CisgIC8vIFZDKysgMjAxMCdzIGltcGxlbWVudGF0
aW9uIG9mIHR1cGxlIG9mIEMrKzB4IGlzIGRlZmljaWVudCwgcmVxdWlyaW5nCisgIC8vIGFuIGV4
cGxpY2l0IHR5cGUgY2FzdCBvZiBOVUxMIHRvIGJlIHVzZWQuCisgIDo6c3RkOjp0cjE6OnR1cGxl
PGJvb2wsIGNoYXIsIHNob3J0LCB0ZXN0aW5nOjppbnRlcm5hbDo6SW50MzIsICAvLyBOT0xJTlQK
KyAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6aW50ZXJuYWw6OkludDY0LCBmbG9hdCwgZG91
YmxlLCBjb25zdCBjaGFyKiwgdm9pZCosCisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n
PgorICAgICAgdDEwKGZhbHNlLCAnYScsIHN0YXRpY19jYXN0PHNob3J0PigzKSwgNCwgNSwgMS41
RiwgLTIuNSwgc3RyLCAgLy8gTk9MSU5UCisgICAgICAgICAgSW1wbGljaXRDYXN0Xzx2b2lkKj4o
TlVMTCksICIxMCIpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgJ2EnICg5NywgMHg2MSksIDMsIDQs
IDUsIDEuNSwgLTIuNSwgIiArIFByaW50UG9pbnRlcihzdHIpICsKKyAgICAgICAgICAgICIgcG9p
bnRpbmcgdG8gXCI4XCIsIE5VTEwsIFwiMTBcIikiLAorICAgICAgICAgICAgUHJpbnQodDEwKSk7
Cit9CisKKy8vIE5lc3RlZCB0dXBsZXMuCitURVNUKFByaW50VHIxVHVwbGVUZXN0LCBOZXN0ZWRU
dXBsZSkgeworICA6OnN0ZDo6dHIxOjp0dXBsZTwgOjpzdGQ6OnRyMTo6dHVwbGU8aW50LCBib29s
PiwgY2hhcj4gbmVzdGVkKAorICAgICAgOjpzdGQ6OnRyMTo6bWFrZV90dXBsZSg1LCB0cnVlKSwg
J2EnKTsKKyAgRVhQRUNUX0VRKCIoKDUsIHRydWUpLCAnYScgKDk3LCAweDYxKSkiLCBQcmludChu
ZXN0ZWQpKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfVFIxX1RVUExFCisKKyNpZiBHVEVT
VF9IQVNfU1REX1RVUExFXworLy8gVGVzdHMgcHJpbnRpbmcgOjpzdGQ6OnR1cGxlcy4KKworLy8g
VHVwbGVzIG9mIHZhcmlvdXMgYXJpdGllcy4KK1RFU1QoUHJpbnRTdGRUdXBsZVRlc3QsIFZhcmlv
dXNTaXplcykgeworICA6OnN0ZDo6dHVwbGU8PiB0MDsKKyAgRVhQRUNUX0VRKCIoKSIsIFByaW50
KHQwKSk7CisKKyAgOjpzdGQ6OnR1cGxlPGludD4gdDEoNSk7CisgIEVYUEVDVF9FUSgiKDUpIiwg
UHJpbnQodDEpKTsKKworICA6OnN0ZDo6dHVwbGU8Y2hhciwgYm9vbD4gdDIoJ2EnLCB0cnVlKTsK
KyAgRVhQRUNUX0VRKCIoJ2EnICg5NywgMHg2MSksIHRydWUpIiwgUHJpbnQodDIpKTsKKworICA6
OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQ+IHQzKGZhbHNlLCAyLCAzKTsKKyAgRVhQRUNUX0VR
KCIoZmFsc2UsIDIsIDMpIiwgUHJpbnQodDMpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50
LCBpbnQsIGludD4gdDQoZmFsc2UsIDIsIDMsIDQpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwg
MywgNCkiLCBQcmludCh0NCkpOworCisgIDo6c3RkOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50
LCBib29sPiB0NShmYWxzZSwgMiwgMywgNCwgdHJ1ZSk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAy
LCAzLCA0LCB0cnVlKSIsIFByaW50KHQ1KSk7CisKKyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwg
aW50LCBpbnQsIGJvb2wsIGludD4gdDYoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYpOworICBFWFBF
Q1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNikiLCBQcmludCh0NikpOworCisgIDo6c3Rk
Ojp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGludD4gdDcoCisgICAgICBm
YWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNyk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0
LCB0cnVlLCA2LCA3KSIsIFByaW50KHQ3KSk7CisKKyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwg
aW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBib29sPiB0OCgKKyAgICAgIGZhbHNlLCAyLCAzLCA0
LCB0cnVlLCA2LCA3LCB0cnVlKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUs
IDYsIDcsIHRydWUpIiwgUHJpbnQodDgpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBp
bnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGJvb2wsIGludD4gdDkoCisgICAgICBmYWxzZSwgMiwg
MywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSwgOSk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0
LCB0cnVlLCA2LCA3LCB0cnVlLCA5KSIsIFByaW50KHQ5KSk7CisKKyAgY29uc3QgY2hhciogY29u
c3Qgc3RyID0gIjgiOworICAvLyBWQysrIDIwMTAncyBpbXBsZW1lbnRhdGlvbiBvZiB0dXBsZSBv
ZiBDKysweCBpcyBkZWZpY2llbnQsIHJlcXVpcmluZworICAvLyBhbiBleHBsaWNpdCB0eXBlIGNh
c3Qgb2YgTlVMTCB0byBiZSB1c2VkLgorICA6OnN0ZDo6dHVwbGU8Ym9vbCwgY2hhciwgc2hvcnQs
IHRlc3Rpbmc6OmludGVybmFsOjpJbnQzMiwgIC8vIE5PTElOVAorICAgICAgICAgICAgICAgdGVz
dGluZzo6aW50ZXJuYWw6OkludDY0LCBmbG9hdCwgZG91YmxlLCBjb25zdCBjaGFyKiwgdm9pZCos
CisgICAgICAgICAgICAgICBzdGQ6OnN0cmluZz4KKyAgICAgIHQxMChmYWxzZSwgJ2EnLCBzdGF0
aWNfY2FzdDxzaG9ydD4oMyksIDQsIDUsIDEuNUYsIC0yLjUsIHN0ciwgIC8vIE5PTElOVAorICAg
ICAgICAgIEltcGxpY2l0Q2FzdF88dm9pZCo+KE5VTEwpLCAiMTAiKTsKKyAgRVhQRUNUX0VRKCIo
ZmFsc2UsICdhJyAoOTcsIDB4NjEpLCAzLCA0LCA1LCAxLjUsIC0yLjUsICIgKyBQcmludFBvaW50
ZXIoc3RyKSArCisgICAgICAgICAgICAiIHBvaW50aW5nIHRvIFwiOFwiLCBOVUxMLCBcIjEwXCIp
IiwKKyAgICAgICAgICAgIFByaW50KHQxMCkpOworfQorCisvLyBOZXN0ZWQgdHVwbGVzLgorVEVT
VChQcmludFN0ZFR1cGxlVGVzdCwgTmVzdGVkVHVwbGUpIHsKKyAgOjpzdGQ6OnR1cGxlPCA6OnN0
ZDo6dHVwbGU8aW50LCBib29sPiwgY2hhcj4gbmVzdGVkKAorICAgICAgOjpzdGQ6Om1ha2VfdHVw
bGUoNSwgdHJ1ZSksICdhJyk7CisgIEVYUEVDVF9FUSgiKCg1LCB0cnVlKSwgJ2EnICg5NywgMHg2
MSkpIiwgUHJpbnQobmVzdGVkKSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfTEFOR19DWFgxMQor
CisjaWYgR1RFU1RfTEFOR19DWFgxMQorVEVTVChQcmludE51bGxwdHJULCBCYXNpYykgeworICBF
WFBFQ1RfRVEoIihudWxscHRyKSIsIFByaW50KG51bGxwdHIpKTsKK30KKyNlbmRpZiAgLy8gR1RF
U1RfTEFOR19DWFgxMQorCisvLyBUZXN0cyBwcmludGluZyB1c2VyLWRlZmluZWQgdW5wcmludGFi
bGUgdHlwZXMuCisKKy8vIFVucHJpbnRhYmxlIHR5cGVzIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNl
LgorVEVTVChQcmludFVucHJpbnRhYmxlVHlwZVRlc3QsIEluR2xvYmFsTmFtZXNwYWNlKSB7Cisg
IEVYUEVDVF9FUSgiMS1ieXRlIG9iamVjdCA8MDA+IiwKKyAgICAgICAgICAgIFByaW50KFVucHJp
bnRhYmxlVGVtcGxhdGVJbkdsb2JhbDxjaGFyPigpKSk7Cit9CisKKy8vIFVucHJpbnRhYmxlIHR5
cGVzIGluIGEgdXNlciBuYW1lc3BhY2UuCitURVNUKFByaW50VW5wcmludGFibGVUeXBlVGVzdCwg
SW5Vc2VyTmFtZXNwYWNlKSB7CisgIEVYUEVDVF9FUSgiMTYtYnl0ZSBvYmplY3QgPEVGLTEyIDAw
LTAwIDM0LUFCIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwPiIsCisgICAgICAgICAgICBQ
cmludCg6OmZvbzo6VW5wcmludGFibGVJbkZvbygpKSk7Cit9CisKKy8vIFVucHJpbnRhYmxlIHR5
cGVzIGFyZSB0aGF0IHRvbyBiaWcgdG8gYmUgcHJpbnRlZCBjb21wbGV0ZWx5LgorCitzdHJ1Y3Qg
QmlnIHsKKyAgQmlnKCkgeyBtZW1zZXQoYXJyYXksIDAsIHNpemVvZihhcnJheSkpOyB9CisgIGNo
YXIgYXJyYXlbMjU3XTsKK307CisKK1RFU1QoUHJpbnRVbnByaXRhYmxlVHlwZVRlc3QsIEJpZ09i
amVjdCkgeworICBFWFBFQ1RfRVEoIjI1Ny1ieXRlIG9iamVjdCA8MDAtMDAgMDAtMDAgMDAtMDAg
MDAtMDAgMDAtMDAgMDAtMDAgIgorICAgICAgICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAw
IDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwICIKKyAgICAgICAgICAgICIwMC0w
MCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAi
CisgICAgICAgICAgICAiMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgLi4uIDAw
LTAwIDAwLTAwIDAwLTAwICIKKyAgICAgICAgICAgICIwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAw
MC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAiCisgICAgICAgICAgICAiMDAtMDAg
MDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgIgor
ICAgICAgICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAw
LTAwIDAwPiIsCisgICAgICAgICAgICBQcmludChCaWcoKSkpOworfQorCisvLyBUZXN0cyBwcmlu
dGluZyB1c2VyLWRlZmluZWQgc3RyZWFtYWJsZSB0eXBlcy4KKworLy8gU3RyZWFtYWJsZSB0eXBl
cyBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KK1RFU1QoUHJpbnRTdHJlYW1hYmxlVHlwZVRlc3Qs
IEluR2xvYmFsTmFtZXNwYWNlKSB7CisgIFN0cmVhbWFibGVJbkdsb2JhbCB4OworICBFWFBFQ1Rf
RVEoIlN0cmVhbWFibGVJbkdsb2JhbCIsIFByaW50KHgpKTsKKyAgRVhQRUNUX0VRKCJTdHJlYW1h
YmxlSW5HbG9iYWwqIiwgUHJpbnQoJngpKTsKK30KKworLy8gUHJpbnRhYmxlIHRlbXBsYXRlIHR5
cGVzIGluIGEgdXNlciBuYW1lc3BhY2UuCitURVNUKFByaW50U3RyZWFtYWJsZVR5cGVUZXN0LCBU
ZW1wbGF0ZVR5cGVJblVzZXJOYW1lc3BhY2UpIHsKKyAgRVhQRUNUX0VRKCJTdHJlYW1hYmxlVGVt
cGxhdGVJbkZvbzogMCIsCisgICAgICAgICAgICBQcmludCg6OmZvbzo6U3RyZWFtYWJsZVRlbXBs
YXRlSW5Gb288aW50PigpKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIGEgdXNlci1kZWZpbmVk
IHJlY3Vyc2l2ZSBjb250YWluZXIgdHlwZSB0aGF0IGhhcyBhIDw8CisvLyBvcGVyYXRvci4KK1RF
U1QoUHJpbnRTdHJlYW1hYmxlVHlwZVRlc3QsIFBhdGhMaWtlSW5Vc2VyTmFtZXNwYWNlKSB7Cisg
IDo6Zm9vOjpQYXRoTGlrZSB4OworICBFWFBFQ1RfRVEoIlN0cmVhbWFibGUtUGF0aExpa2UiLCBQ
cmludCh4KSk7CisgIGNvbnN0IDo6Zm9vOjpQYXRoTGlrZSBjeDsKKyAgRVhQRUNUX0VRKCJTdHJl
YW1hYmxlLVBhdGhMaWtlIiwgUHJpbnQoY3gpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgdXNl
ci1kZWZpbmVkIHR5cGVzIHRoYXQgaGF2ZSBhIFByaW50VG8oKSBmdW5jdGlvbi4KK1RFU1QoUHJp
bnRQcmludGFibGVUeXBlVGVzdCwgSW5Vc2VyTmFtZXNwYWNlKSB7CisgIEVYUEVDVF9FUSgiUHJp
bnRhYmxlVmlhUHJpbnRUbzogMCIsCisgICAgICAgICAgICBQcmludCg6OmZvbzo6UHJpbnRhYmxl
VmlhUHJpbnRUbygpKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIGEgcG9pbnRlciB0byBhIHVz
ZXItZGVmaW5lZCB0eXBlIHRoYXQgaGFzIGEgPDwKKy8vIG9wZXJhdG9yIGZvciBpdHMgcG9pbnRl
ci4KK1RFU1QoUHJpbnRQcmludGFibGVUeXBlVGVzdCwgUG9pbnRlckluVXNlck5hbWVzcGFjZSkg
eworICA6OmZvbzo6UG9pbnRlclByaW50YWJsZSB4OworICBFWFBFQ1RfRVEoIlBvaW50ZXJQcmlu
dGFibGUqIiwgUHJpbnQoJngpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgdXNlci1kZWZpbmVk
IGNsYXNzIHRlbXBsYXRlIHRoYXQgaGF2ZSBhIFByaW50VG8oKSBmdW5jdGlvbi4KK1RFU1QoUHJp
bnRQcmludGFibGVUeXBlVGVzdCwgVGVtcGxhdGVJblVzZXJOYW1lc3BhY2UpIHsKKyAgRVhQRUNU
X0VRKCJQcmludGFibGVWaWFQcmludFRvVGVtcGxhdGU6IDUiLAorICAgICAgICAgICAgUHJpbnQo
Ojpmb286OlByaW50YWJsZVZpYVByaW50VG9UZW1wbGF0ZTxpbnQ+KDUpKSk7Cit9CisKKy8vIFRl
c3RzIHRoYXQgdGhlIHVuaXZlcnNhbCBwcmludGVyIHByaW50cyBib3RoIHRoZSBhZGRyZXNzIGFu
ZCB0aGUKKy8vIHZhbHVlIG9mIGEgcmVmZXJlbmNlLgorVEVTVChQcmludFJlZmVyZW5jZVRlc3Qs
IFByaW50c0FkZHJlc3NBbmRWYWx1ZSkgeworICBpbnQgbiA9IDU7CisgIEVYUEVDVF9FUSgiQCIg
KyBQcmludFBvaW50ZXIoJm4pICsgIiA1IiwgUHJpbnRCeVJlZihuKSk7CisKKyAgaW50IGFbMl1b
M10gPSB7CisgICAgeyAwLCAxLCAyIH0sCisgICAgeyAzLCA0LCA1IH0KKyAgfTsKKyAgRVhQRUNU
X0VRKCJAIiArIFByaW50UG9pbnRlcihhKSArICIgeyB7IDAsIDEsIDIgfSwgeyAzLCA0LCA1IH0g
fSIsCisgICAgICAgICAgICBQcmludEJ5UmVmKGEpKTsKKworICBjb25zdCA6OmZvbzo6VW5wcmlu
dGFibGVJbkZvbyB4OworICBFWFBFQ1RfRVEoIkAiICsgUHJpbnRQb2ludGVyKCZ4KSArICIgMTYt
Ynl0ZSBvYmplY3QgIgorICAgICAgICAgICAgIjxFRi0xMiAwMC0wMCAzNC1BQiAwMC0wMCAwMC0w
MCAwMC0wMCAwMC0wMCAwMC0wMD4iLAorICAgICAgICAgICAgUHJpbnRCeVJlZih4KSk7Cit9CisK
Ky8vIFRlc3RzIHRoYXQgdGhlIHVuaXZlcnNhbCBwcmludGVyIHByaW50cyBhIGZ1bmN0aW9uIHBv
aW50ZXIgcGFzc2VkIGJ5CisvLyByZWZlcmVuY2UuCitURVNUKFByaW50UmVmZXJlbmNlVGVzdCwg
SGFuZGxlc0Z1bmN0aW9uUG9pbnRlcikgeworICB2b2lkICgqZnApKGludCBuKSA9ICZNeUZ1bmN0
aW9uOworICBjb25zdCBzdGQ6OnN0cmluZyBmcF9wb2ludGVyX3N0cmluZyA9CisgICAgICBQcmlu
dFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oJmZwKSk7CisgIC8vIFdlIGNh
bm5vdCBkaXJlY3RseSBjYXN0ICZNeUZ1bmN0aW9uIHRvIGNvbnN0IHZvaWQqIGJlY2F1c2UgdGhl
CisgIC8vIHN0YW5kYXJkIGRpc2FsbG93cyBjYXN0aW5nIGJldHdlZW4gcG9pbnRlcnMgdG8gZnVu
Y3Rpb25zIGFuZAorICAvLyBwb2ludGVycyB0byBvYmplY3RzLCBhbmQgc29tZSBjb21waWxlcnMg
KGUuZy4gR0NDIDMuNCkgZW5mb3JjZQorICAvLyB0aGlzIGxpbWl0YXRpb24uCisgIGNvbnN0IHN0
ZDo6c3RyaW5nIGZwX3N0cmluZyA9IFByaW50UG9pbnRlcihyZWludGVycHJldF9jYXN0PGNvbnN0
IHZvaWQqPigKKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8aW50ZXJuYWw6OkJpZ2dlc3RJbnQ+KGZw
KSkpOworICBFWFBFQ1RfRVEoIkAiICsgZnBfcG9pbnRlcl9zdHJpbmcgKyAiICIgKyBmcF9zdHJp
bmcsCisgICAgICAgICAgICBQcmludEJ5UmVmKGZwKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhl
IHVuaXZlcnNhbCBwcmludGVyIHByaW50cyBhIG1lbWJlciBmdW5jdGlvbiBwb2ludGVyCisvLyBw
YXNzZWQgYnkgcmVmZXJlbmNlLgorVEVTVChQcmludFJlZmVyZW5jZVRlc3QsIEhhbmRsZXNNZW1i
ZXJGdW5jdGlvblBvaW50ZXIpIHsKKyAgaW50IChGb286OipwKShjaGFyIGNoKSA9ICZGb286Ok15
TWV0aG9kOworICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoCisgICAgICBQcmludEJ5UmVmKHApLAor
ICAgICAgIkAiICsgUHJpbnRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KCZw
KSkgKyAiICIgKworICAgICAgICAgIFByaW50KHNpemVvZihwKSkgKyAiLWJ5dGUgb2JqZWN0ICIp
KTsKKworICBjaGFyIChGb286OipwMikoaW50IG4pID0gJkZvbzo6TXlWaXJ0dWFsTWV0aG9kOwor
ICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoCisgICAgICBQcmludEJ5UmVmKHAyKSwKKyAgICAgICJA
IiArIFByaW50UG9pbnRlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigmcDIpKSArICIg
IiArCisgICAgICAgICAgUHJpbnQoc2l6ZW9mKHAyKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKK30K
KworLy8gVGVzdHMgdGhhdCB0aGUgdW5pdmVyc2FsIHByaW50ZXIgcHJpbnRzIGEgbWVtYmVyIHZh
cmlhYmxlIHBvaW50ZXIKKy8vIHBhc3NlZCBieSByZWZlcmVuY2UuCitURVNUKFByaW50UmVmZXJl
bmNlVGVzdCwgSGFuZGxlc01lbWJlclZhcmlhYmxlUG9pbnRlcikgeworICBpbnQgRm9vOjoqcCA9
ICZGb286OnZhbHVlOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9UUlVFKEhhc1ByZWZpeCgKKyAgICAg
IFByaW50QnlSZWYocCksCisgICAgICAiQCIgKyBQcmludFBvaW50ZXIoJnApICsgIiAiICsgUHJp
bnQoc2l6ZW9mKHApKSArICItYnl0ZSBvYmplY3QgIikpOworfQorCisvLyBUZXN0cyB0aGF0IEZv
cm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSgpLCB3aGljaCBpcyB1c2VkIHRvIHByaW50
CisvLyBhbiBvcGVyYW5kIGluIGEgY29tcGFyaXNvbiBhc3NlcnRpb24gKGUuZy4gQVNTRVJUX0VR
KSB3aGVuIHRoZSBhc3NlcnRpb24KKy8vIGZhaWxzLCBmb3JtYXRzIHRoZSBvcGVyYW5kIGluIHRo
ZSBkZXNpcmVkIHdheS4KKworLy8gc2NhbGFyCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWls
dXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yU2NhbGFyKSB7CisgIEVYUEVDVF9TVFJFUSgiMTIzIiwK
KyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSgxMjMsIDEy
NCkuY19zdHIoKSk7Cit9CisKKy8vIG5vbi1jaGFyIHBvaW50ZXIKK1RFU1QoRm9ybWF0Rm9yQ29t
cGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JOb25DaGFyUG9pbnRlcikgeworICBp
bnQgbiA9IDA7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIoJm4pLAorICAgICAgICAgICAgRm9y
bWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKCZuLCAmbikuY19zdHIoKSk7Cit9CisKKy8v
IG5vbi1jaGFyIGFycmF5CitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRl
c3QsIEZvcm1hdHNOb25DaGFyQXJyYXlBc1BvaW50ZXIpIHsKKyAgLy8gSW4gZXhwcmVzc2lvbiAn
YXJyYXkgPT0geCcsICdhcnJheScgaXMgY29tcGFyZWQgYnkgcG9pbnRlci4KKyAgLy8gVGhlcmVm
b3JlIHdlIHdhbnQgdG8gcHJpbnQgYW4gYXJyYXkgb3BlcmFuZCBhcyBhIHBvaW50ZXIuCisgIGlu
dCBuW10gPSB7IDEsIDIsIDMgfTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihuKSwKKyAgICAg
ICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShuLCBuKS5jX3N0cigpKTsK
K30KKworLy8gVGVzdHMgZm9ybWF0dGluZyBhIGNoYXIgcG9pbnRlciB3aGVuIGl0J3MgY29tcGFy
ZWQgd2l0aCBhbm90aGVyIHBvaW50ZXIuCisvLyBJbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBwcmlu
dCBpdCBhcyBhIHJhdyBwb2ludGVyLCBhcyB0aGUgY29tcGFyaXNvbiBpcyBieQorLy8gcG9pbnRl
ci4KKworLy8gY2hhciBwb2ludGVyIHZzIHBvaW50ZXIKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNv
bkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JDaGFyUG9pbnRlclZzUG9pbnRlcikgeworICAv
LyBJbiBleHByZXNzaW9uICdwID09IHgnLCB3aGVyZSAncCcgYW5kICd4JyBhcmUgKGNvbnN0IG9y
IG5vdCkgY2hhcgorICAvLyBwb2ludGVycywgdGhlIG9wZXJhbmRzIGFyZSBjb21wYXJlZCBieSBw
b2ludGVyLiAgVGhlcmVmb3JlIHdlCisgIC8vIHdhbnQgdG8gcHJpbnQgJ3AnIGFzIGEgcG9pbnRl
ciBpbnN0ZWFkIG9mIGEgQyBzdHJpbmcgKHdlIGRvbid0CisgIC8vIGV2ZW4ga25vdyBpZiBpdCdz
IHN1cHBvc2VkIHRvIHBvaW50IHRvIGEgdmFsaWQgQyBzdHJpbmcpLgorCisgIC8vIGNvbnN0IGNo
YXIqCisgIGNvbnN0IGNoYXIqIHMgPSAiaGVsbG8iOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVy
KHMpLAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHMsIHMp
LmNfc3RyKCkpOworCisgIC8vIGNoYXIqCisgIGNoYXIgY2ggPSAnYSc7CisgIEVYUEVDVF9FUShQ
cmludFBvaW50ZXIoJmNoKSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJl
TWVzc2FnZSgmY2gsICZjaCkuY19zdHIoKSk7Cit9CisKKy8vIHdjaGFyX3QgcG9pbnRlciB2cyBw
b2ludGVyCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtz
Rm9yV0NoYXJQb2ludGVyVnNQb2ludGVyKSB7CisgIC8vIEluIGV4cHJlc3Npb24gJ3AgPT0geCcs
IHdoZXJlICdwJyBhbmQgJ3gnIGFyZSAoY29uc3Qgb3Igbm90KSBjaGFyCisgIC8vIHBvaW50ZXJz
LCB0aGUgb3BlcmFuZHMgYXJlIGNvbXBhcmVkIGJ5IHBvaW50ZXIuICBUaGVyZWZvcmUgd2UKKyAg
Ly8gd2FudCB0byBwcmludCAncCcgYXMgYSBwb2ludGVyIGluc3RlYWQgb2YgYSB3aWRlIEMgc3Ry
aW5nICh3ZSBkb24ndAorICAvLyBldmVuIGtub3cgaWYgaXQncyBzdXBwb3NlZCB0byBwb2ludCB0
byBhIHZhbGlkIHdpZGUgQyBzdHJpbmcpLgorCisgIC8vIGNvbnN0IHdjaGFyX3QqCisgIGNvbnN0
IHdjaGFyX3QqIHMgPSBMImhlbGxvIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihzKSwKKyAg
ICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzLCBzKS5jX3N0cigp
KTsKKworICAvLyB3Y2hhcl90KgorICB3Y2hhcl90IGNoID0gTCdhJzsKKyAgRVhQRUNUX0VRKFBy
aW50UG9pbnRlcigmY2gpLAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVN
ZXNzYWdlKCZjaCwgJmNoKS5jX3N0cigpKTsKK30KKworLy8gVGVzdHMgZm9ybWF0dGluZyBhIGNo
YXIgcG9pbnRlciB3aGVuIGl0J3MgY29tcGFyZWQgdG8gYSBzdHJpbmcgb2JqZWN0LgorLy8gSW4g
dGhpcyBjYXNlIHdlIHdhbnQgdG8gcHJpbnQgdGhlIGNoYXIgcG9pbnRlciBhcyBhIEMgc3RyaW5n
LgorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKy8vIGNoYXIgcG9pbnRlciB2cyA6OnN0
cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0Zv
ckNoYXJQb2ludGVyVnNTdHJpbmcpIHsKKyAgY29uc3QgY2hhciogcyA9ICJoZWxsbyBcIndvcmxk
IjsKKyAgRVhQRUNUX1NUUkVRKCJcImhlbGxvIFxcXCJ3b3JsZFwiIiwgIC8vIFRoZSBzdHJpbmcg
Y29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBh
cmlzb25GYWlsdXJlTWVzc2FnZShzLCA6OnN0cmluZygpKS5jX3N0cigpKTsKKworICAvLyBjaGFy
KgorICBjaGFyIHN0cltdID0gImhpXDEiOworICBjaGFyKiBwID0gc3RyOworICBFWFBFQ1RfU1RS
RVEoIlwiaGlcXHgxXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVk
LgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHAsIDo6
c3RyaW5nKCkpLmNfc3RyKCkpOworfQorI2VuZGlmCisKKy8vIGNoYXIgcG9pbnRlciB2cyBzdGQ6
OnN0cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jr
c0ZvckNoYXJQb2ludGVyVnNTdGRTdHJpbmcpIHsKKyAgY29uc3QgY2hhciogcyA9ICJoZWxsbyBc
IndvcmxkIjsKKyAgRVhQRUNUX1NUUkVRKCJcImhlbGxvIFxcXCJ3b3JsZFwiIiwgIC8vIFRoZSBz
dHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgIEZvcm1hdEZv
ckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzLCA6OnN0ZDo6c3RyaW5nKCkpLmNfc3RyKCkpOwor
CisgIC8vIGNoYXIqCisgIGNoYXIgc3RyW10gPSAiaGlcMSI7CisgIGNoYXIqIHAgPSBzdHI7Cisg
IEVYUEVDVF9TVFJFUSgiXCJoaVxceDFcIiIsICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxk
IGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2UocCwgOjpzdGQ6OnN0cmluZygpKS5jX3N0cigpKTsKK30KKworI2lmIEdURVNUX0hBU19H
TE9CQUxfV1NUUklORworLy8gd2NoYXJfdCBwb2ludGVyIHZzIDo6d3N0cmluZworVEVTVChGb3Jt
YXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvcldDaGFyUG9pbnRlclZz
V1N0cmluZykgeworICBjb25zdCB3Y2hhcl90KiBzID0gTCJoaSBcIndvcmxkIjsKKyAgRVhQRUNU
X1NUUkVRKCJMXCJoaSBcXFwid29ybGRcIiIsICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxk
IGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2UocywgOjp3c3RyaW5nKCkpLmNfc3RyKCkpOworCisgIC8vIHdjaGFyX3QqCisgIHdjaGFy
X3Qgc3RyW10gPSBMImhpXDEiOworICB3Y2hhcl90KiBwID0gc3RyOworICBFWFBFQ1RfU1RSRVEo
IkxcImhpXFx4MVwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4K
KyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShwLCA6Ondz
dHJpbmcoKSkuY19zdHIoKSk7Cit9CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklO
RworLy8gd2NoYXJfdCBwb2ludGVyIHZzIHN0ZDo6d3N0cmluZworVEVTVChGb3JtYXRGb3JDb21w
YXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvcldDaGFyUG9pbnRlclZzU3RkV1N0cmlu
ZykgeworICBjb25zdCB3Y2hhcl90KiBzID0gTCJoaSBcIndvcmxkIjsKKyAgRVhQRUNUX1NUUkVR
KCJMXCJoaSBcXFwid29ybGRcIiIsICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVz
Y2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uo
cywgOjpzdGQ6OndzdHJpbmcoKSkuY19zdHIoKSk7CisKKyAgLy8gd2NoYXJfdCoKKyAgd2NoYXJf
dCBzdHJbXSA9IEwiaGlcMSI7CisgIHdjaGFyX3QqIHAgPSBzdHI7CisgIEVYUEVDVF9TVFJFUSgi
TFwiaGlcXHgxXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgor
ICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHAsIDo6c3Rk
Ojp3c3RyaW5nKCkpLmNfc3RyKCkpOworfQorI2VuZGlmCisKKy8vIFRlc3RzIGZvcm1hdHRpbmcg
YSBjaGFyIGFycmF5IHdoZW4gaXQncyBjb21wYXJlZCB3aXRoIGEgcG9pbnRlciBvciBhcnJheS4K
Ky8vIEluIHRoaXMgY2FzZSB3ZSB3YW50IHRvIHByaW50IHRoZSBhcnJheSBhcyBhIHJvdyBwb2lu
dGVyLCBhcyB0aGUgY29tcGFyaXNvbgorLy8gaXMgYnkgcG9pbnRlci4KKworLy8gY2hhciBhcnJh
eSB2cyBwb2ludGVyCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3Qs
IFdvcmtzRm9yQ2hhckFycmF5VnNQb2ludGVyKSB7CisgIGNoYXIgc3RyW10gPSAiaGkgXCJ3b3Js
ZFwiIjsKKyAgY2hhciogcCA9IE5VTEw7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIoc3RyKSwK
KyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzdHIsIHApLmNf
c3RyKCkpOworfQorCisvLyBjaGFyIGFycmF5IHZzIGNoYXIgYXJyYXkKK1RFU1QoRm9ybWF0Rm9y
Q29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JDaGFyQXJyYXlWc0NoYXJBcnJh
eSkgeworICBjb25zdCBjaGFyIHN0cltdID0gImhpIFwid29ybGRcIiI7CisgIEVYUEVDVF9FUShQ
cmludFBvaW50ZXIoc3RyKSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJl
TWVzc2FnZShzdHIsIHN0cikuY19zdHIoKSk7Cit9CisKKy8vIHdjaGFyX3QgYXJyYXkgdnMgcG9p
bnRlcgorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0Zv
cldDaGFyQXJyYXlWc1BvaW50ZXIpIHsKKyAgd2NoYXJfdCBzdHJbXSA9IEwiaGkgXCJ3b3JsZFwi
IjsKKyAgd2NoYXJfdCogcCA9IE5VTEw7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIoc3RyKSwK
KyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzdHIsIHApLmNf
c3RyKCkpOworfQorCisvLyB3Y2hhcl90IGFycmF5IHZzIHdjaGFyX3QgYXJyYXkKK1RFU1QoRm9y
bWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhckFycmF5VnNX
Q2hhckFycmF5KSB7CisgIGNvbnN0IHdjaGFyX3Qgc3RyW10gPSBMImhpIFwid29ybGRcIiI7Cisg
IEVYUEVDVF9FUShQcmludFBvaW50ZXIoc3RyKSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBh
cmlzb25GYWlsdXJlTWVzc2FnZShzdHIsIHN0cikuY19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIGZv
cm1hdHRpbmcgYSBjaGFyIGFycmF5IHdoZW4gaXQncyBjb21wYXJlZCB3aXRoIGEgc3RyaW5nIG9i
amVjdC4KKy8vIEluIHRoaXMgY2FzZSB3ZSB3YW50IHRvIHByaW50IHRoZSBhcnJheSBhcyBhIEMg
c3RyaW5nLgorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKy8vIGNoYXIgYXJyYXkgdnMg
c3RyaW5nCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtz
Rm9yQ2hhckFycmF5VnNTdHJpbmcpIHsKKyAgY29uc3QgY2hhciBzdHJbXSA9ICJoaSBcIndcMHJs
ZFwiIjsKKyAgRVhQRUNUX1NUUkVRKCJcImhpIFxcXCJ3XCIiLCAgLy8gVGhlIGNvbnRlbnQgc2hv
dWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVtYmVk
ZGVkIE5VTCB0ZXJtaW5hdGVzIHRoZSBzdHJpbmcuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JD
b21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCA6OnN0cmluZygpKS5jX3N0cigpKTsKK30KKyNl
bmRpZgorCisvLyBjaGFyIGFycmF5IHZzIHN0ZDo6c3RyaW5nCitURVNUKEZvcm1hdEZvckNvbXBh
cmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhckFycmF5VnNTdGRTdHJpbmcpIHsK
KyAgY29uc3QgY2hhciBzdHJbXSA9ICJoaSBcIndvcmxkXCIiOworICBFWFBFQ1RfU1RSRVEoIlwi
aGkgXFxcIndvcmxkXFxcIlwiIiwgIC8vIFRoZSBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgor
ICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgOjpz
dGQ6OnN0cmluZygpKS5jX3N0cigpKTsKK30KKworI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklO
RworLy8gd2NoYXJfdCBhcnJheSB2cyB3c3RyaW5nCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJBcnJheVZzV1N0cmluZykgeworICBjb25z
dCB3Y2hhcl90IHN0cltdID0gTCJoaSBcIndvcmxkXCIiOworICBFWFBFQ1RfU1RSRVEoIkxcImhp
IFxcXCJ3b3JsZFxcXCJcIiIsICAvLyBUaGUgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAg
ICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzdHIsIDo6d3N0
cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5H
CisvLyB3Y2hhcl90IGFycmF5IHZzIHN0ZDo6d3N0cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvcldDaGFyQXJyYXlWc1N0ZFdTdHJpbmcpIHsK
KyAgY29uc3Qgd2NoYXJfdCBzdHJbXSA9IEwiaGkgXCJ3XDBybGRcIiI7CisgIEVYUEVDVF9TVFJF
USgKKyAgICAgICJMXCJoaSBcXFwid1wiIiwgIC8vIFRoZSBjb250ZW50IHNob3VsZCBiZSBlc2Nh
cGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW1iZWRkZWQgTlVMIHRlcm1pbmF0ZXMg
dGhlIHN0cmluZy4KKyAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzdHIs
IDo6c3RkOjp3c3RyaW5nKCkpLmNfc3RyKCkpOworfQorI2VuZGlmCisKKy8vIFVzZWZ1bCBmb3Ig
dGVzdGluZyBQcmludFRvU3RyaW5nKCkuICBXZSBjYW5ub3QgdXNlIEVYUEVDVF9FUSgpCisvLyB0
aGVyZSBhcyBpdHMgaW1wbGVtZW50YXRpb24gdXNlcyBQcmludFRvU3RyaW5nKCkuICBUaGUgY2Fs
bGVyIG11c3QKKy8vIGVuc3VyZSB0aGF0ICd2YWx1ZScgaGFzIG5vIHNpZGUgZWZmZWN0LgorI2Rl
ZmluZSBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyh2YWx1ZSwgZXhwZWN0ZWRfc3RyaW5nKSAgICAg
ICAgIFwKKyAgRVhQRUNUX1RSVUUoUHJpbnRUb1N0cmluZyh2YWx1ZSkgPT0gKGV4cGVjdGVkX3N0
cmluZykpICAgICAgICBcCisgICAgICA8PCAiIHdoZXJlICIgI3ZhbHVlICIgcHJpbnRzIGFzICIg
PDwgKFByaW50VG9TdHJpbmcodmFsdWUpKQorCitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBXb3Jr
c0ZvclNjYWxhcikgeworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXygxMjMsICIxMjMiKTsKK30K
KworVEVTVChQcmludFRvU3RyaW5nVGVzdCwgV29ya3NGb3JQb2ludGVyVG9Db25zdENoYXIpIHsK
KyAgY29uc3QgY2hhciogcCA9ICJoZWxsbyI7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKHAs
ICJcImhlbGxvXCIiKTsKK30KKworVEVTVChQcmludFRvU3RyaW5nVGVzdCwgV29ya3NGb3JQb2lu
dGVyVG9Ob25Db25zdENoYXIpIHsKKyAgY2hhciBzW10gPSAiaGVsbG8iOworICBjaGFyKiBwID0g
czsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18ocCwgIlwiaGVsbG9cIiIpOworfQorCitURVNU
KFByaW50VG9TdHJpbmdUZXN0LCBFc2NhcGVzRm9yUG9pbnRlclRvQ29uc3RDaGFyKSB7CisgIGNv
bnN0IGNoYXIqIHAgPSAiaGVsbG9cbiI7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKHAsICJc
ImhlbGxvXFxuXCIiKTsKK30KKworVEVTVChQcmludFRvU3RyaW5nVGVzdCwgRXNjYXBlc0ZvclBv
aW50ZXJUb05vbkNvbnN0Q2hhcikgeworICBjaGFyIHNbXSA9ICJoZWxsb1wxIjsKKyAgY2hhciog
cCA9IHM7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKHAsICJcImhlbGxvXFx4MVwiIik7Cit9
CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIFdvcmtzRm9yQXJyYXkpIHsKKyAgaW50IG5bM10g
PSB7IDEsIDIsIDMgfTsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18obiwgInsgMSwgMiwgMyB9
Iik7Cit9CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIFdvcmtzRm9yQ2hhckFycmF5KSB7Cisg
IGNoYXIgc1tdID0gImhlbGxvIjsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18ocywgIlwiaGVs
bG9cIiIpOworfQorCitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVdp
dGhFbWJlZGRlZE51bCkgeworICBjb25zdCBjaGFyIHN0cl93aXRoX251bFtdID0gImhlbGxvXDAg
d29ybGQiOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhzdHJfd2l0aF9udWwsICJcImhlbGxv
XFwwIHdvcmxkXCIiKTsKKworICBjaGFyIG11dGFibGVfc3RyX3dpdGhfbnVsW10gPSAiaGVsbG9c
MCB3b3JsZCI7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKG11dGFibGVfc3RyX3dpdGhfbnVs
LCAiXCJoZWxsb1xcMCB3b3JsZFwiIik7Cit9CisKKyAgVEVTVChQcmludFRvU3RyaW5nVGVzdCwg
Q29udGFpbnNOb25MYXRpbikgeworICAvLyBTYW5pdHkgdGVzdCB3aXRoIHZhbGlkIFVURi04LiBQ
cmludHMgYm90aCBpbiBoZXggYW5kIGFzIHRleHQuCisgIHN0ZDo6c3RyaW5nIG5vbl9hc2NpaV9z
dHIgPSA6OnN0ZDo6c3RyaW5nKCLsmKTsoIQgNDozMCIpOworICBFWFBFQ1RfUFJJTlRfVE9fU1RS
SU5HXyhub25fYXNjaWlfc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiXCJcXHhFQ1xc
eDk4XFx4QTRcXHhFQ1xceEEwXFx4ODQgNDozMFwiXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICIgICAgQXMgVGV4dDogXCLsmKTsoIQgNDozMFwiIik7CisgIG5vbl9hc2NpaV9zdHIgPSA6
OnN0ZDo6c3RyaW5nKCJGcm9tIMOkIOKAlCDhupEiKTsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklO
R18obm9uX2FzY2lpX3N0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlwiRnJvbSBcXHhD
M1xceEE0IFxceEUyXFx4ODBcXHg5NCBcXHhFMVxceEJBXFx4OTFcIiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlxuICAgIEFzIFRleHQ6IFwiRnJvbSDDpCDigJQg4bqRXCIiKTsKK30KKwor
VEVTVChJc1ZhbGlkVVRGOFRlc3QsIElsbEZvcm1lZFVURjgpIHsKKyAgLy8gVGhlIGZvbGxvd2lu
ZyB0ZXN0IHN0cmluZ3MgYXJlIGlsbC1mb3JtZWQgVVRGLTggYW5kIGFyZSBwcmludGVkCisgIC8v
IGFzIGhleCBvbmx5IChvciBBU0NJSSwgaW4gY2FzZSBvZiBBU0NJSSBieXRlcykgYmVjYXVzZSBJ
c1ZhbGlkVVRGOCgpIGlzCisgIC8vIGV4cGVjdGVkIHRvIGZhaWwsIHRodXMgb3V0cHV0IGRvZXMg
bm90IGNvbnRhaW4gIkFzIFRleHQ6Ii4KKworICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qga1Rl
c3RkYXRhW11bMl0gPSB7CisgICAgLy8gMi1ieXRlIGxlYWQgYnl0ZSBmb2xsb3dlZCBieSBhIHNp
bmdsZS1ieXRlIGNoYXJhY3Rlci4KKyAgICB7Ilx4QzNceDc0IiwgIlwiXFx4QzN0XCIifSwKKyAg
ICAvLyBWYWxpZCAyLWJ5dGUgY2hhcmFjdGVyIGZvbGxvd2VkIGJ5IGFuIG9ycGhhbiB0cmFpbCBi
eXRlLgorICAgIHsiXHhDM1x4ODRceEE0IiwgIlwiXFx4QzNcXHg4NFxceEE0XCIifSwKKyAgICAv
LyBMZWFkIGJ5dGUgd2l0aG91dCB0cmFpbCBieXRlLgorICAgIHsiYWJjXHhDMyIsICJcImFiY1xc
eEMzXCIifSwKKyAgICAvLyAzLWJ5dGUgbGVhZCBieXRlLCBzaW5nbGUtYnl0ZSBjaGFyYWN0ZXIs
IG9ycGhhbiB0cmFpbCBieXRlLgorICAgIHsieFx4RTJceDcwXHg5NCIsICJcInhcXHhFMnBcXHg5
NFwiIn0sCisgICAgLy8gVHJ1bmNhdGVkIDMtYnl0ZSBjaGFyYWN0ZXIuCisgICAgeyJceEUyXHg4
MCIsICJcIlxceEUyXFx4ODBcIiJ9LAorICAgIC8vIFRydW5jYXRlZCAzLWJ5dGUgY2hhcmFjdGVy
IGZvbGxvd2VkIGJ5IHZhbGlkIDItYnl0ZSBjaGFyLgorICAgIHsiXHhFMlx4ODBceEMzXHg4NCIs
ICJcIlxceEUyXFx4ODBcXHhDM1xceDg0XCIifSwKKyAgICAvLyBUcnVuY2F0ZWQgMy1ieXRlIGNo
YXJhY3RlciBmb2xsb3dlZCBieSBhIHNpbmdsZS1ieXRlIGNoYXJhY3Rlci4KKyAgICB7Ilx4RTJc
eDgwXHg3QSIsICJcIlxceEUyXFx4ODB6XCIifSwKKyAgICAvLyAzLWJ5dGUgbGVhZCBieXRlIGZv
bGxvd2VkIGJ5IHZhbGlkIDMtYnl0ZSBjaGFyYWN0ZXIuCisgICAgeyJceEUyXHhFMlx4ODBceDk0
IiwgIlwiXFx4RTJcXHhFMlxceDgwXFx4OTRcIiJ9LAorICAgIC8vIDQtYnl0ZSBsZWFkIGJ5dGUg
Zm9sbG93ZWQgYnkgdmFsaWQgMy1ieXRlIGNoYXJhY3Rlci4KKyAgICB7Ilx4RjBceEUyXHg4MFx4
OTQiLCAiXCJcXHhGMFxceEUyXFx4ODBcXHg5NFwiIn0sCisgICAgLy8gVHJ1bmNhdGVkIDQtYnl0
ZSBjaGFyYWN0ZXIuCisgICAgeyJceEYwXHhFMlx4ODAiLCAiXCJcXHhGMFxceEUyXFx4ODBcIiJ9
LAorICAgICAvLyBJbnZhbGlkIFVURi04IGJ5dGUgc2VxdWVuY2VzIGVtYmVkZGVkIGluIG90aGVy
IGNoYXJzLgorICAgIHsiYWJjXHhFMlx4ODBceDk0XHhDM1x4NzR4eWMiLCAiXCJhYmNcXHhFMlxc
eDgwXFx4OTRcXHhDM3R4eWNcIiJ9LAorICAgIHsiYWJjXHhDM1x4ODRceEUyXHg4MFx4QzNceDg0
eHl6IiwKKyAgICAgIlwiYWJjXFx4QzNcXHg4NFxceEUyXFx4ODBcXHhDM1xceDg0eHl6XCIifSwK
KyAgICAvLyBOb24tc2hvcnRlc3QgVVRGLTggYnl0ZSBzZXF1ZW5jZXMgYXJlIGFsc28gaWxsLWZv
cm1lZC4KKyAgICAvLyBUaGUgY2xhc3NpY3M6IHhDMCwgeEMxIGxlYWQgYnl0ZS4KKyAgICB7Ilx4
QzBceDgwIiwgIlwiXFx4QzBcXHg4MFwiIn0sCisgICAgeyJceEMxXHg4MSIsICJcIlxceEMxXFx4
ODFcIiJ9LAorICAgIC8vIE5vbi1zaG9ydGVzdCBzZXF1ZW5jZXMuCisgICAgeyJceEUwXHg4MFx4
ODAiLCAiXCJcXHhFMFxceDgwXFx4ODBcIiJ9LAorICAgIHsiXHhmMFx4ODBceDgwXHg4MCIsICJc
IlxceEYwXFx4ODBcXHg4MFxceDgwXCIifSwKKyAgICAvLyBMYXN0IHZhbGlkIGNvZGUgcG9pbnQg
YmVmb3JlIHN1cnJvZ2F0ZSByYW5nZSwgc2hvdWxkIGJlIHByaW50ZWQgYXMgdGV4dCwKKyAgICAv
LyB0b28uCisgICAgeyJceEVEXHg5Rlx4QkYiLCAiXCJcXHhFRFxceDlGXFx4QkZcIlxuICAgIEFz
IFRleHQ6IFwi7Z+/XCIifSwKKyAgICAvLyBTdGFydCBvZiBzdXJyb2dhdGUgbGVhZC4gU3Vycm9n
YXRlcyBhcmUgbm90IHByaW50ZWQgYXMgdGV4dC4KKyAgICB7Ilx4RURceEEwXHg4MCIsICJcIlxc
eEVEXFx4QTBcXHg4MFwiIn0sCisgICAgLy8gTGFzdCBub24tcHJpdmF0ZSBzdXJyb2dhdGUgbGVh
ZC4KKyAgICB7Ilx4RURceEFEXHhCRiIsICJcIlxceEVEXFx4QURcXHhCRlwiIn0sCisgICAgLy8g
Rmlyc3QgcHJpdmF0ZS11c2Ugc3Vycm9nYXRlIGxlYWQuCisgICAgeyJceEVEXHhBRVx4ODAiLCAi
XCJcXHhFRFxceEFFXFx4ODBcIiJ9LAorICAgIC8vIExhc3QgcHJpdmF0ZS11c2Ugc3Vycm9nYXRl
IGxlYWQuCisgICAgeyJceEVEXHhBRlx4QkYiLCAiXCJcXHhFRFxceEFGXFx4QkZcIiJ9LAorICAg
IC8vIE1pZC1wb2ludCBvZiBzdXJyb2dhdGUgdHJhaWwuCisgICAgeyJceEVEXHhCM1x4QkYiLCAi
XCJcXHhFRFxceEIzXFx4QkZcIiJ9LAorICAgIC8vIEZpcnN0IHZhbGlkIGNvZGUgcG9pbnQgYWZ0
ZXIgc3Vycm9nYXRlIHJhbmdlLCBzaG91bGQgYmUgcHJpbnRlZCBhcyB0ZXh0LAorICAgIC8vIHRv
by4KKyAgICB7Ilx4RUVceDgwXHg4MCIsICJcIlxceEVFXFx4ODBcXHg4MFwiXG4gICAgQXMgVGV4
dDogXCLugIBcIiJ9CisgIH07CisKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnQoc2l6ZW9mKGtU
ZXN0ZGF0YSkvc2l6ZW9mKGtUZXN0ZGF0YVswXSkpOyArK2kpIHsKKyAgICBFWFBFQ1RfUFJJTlRf
VE9fU1RSSU5HXyhrVGVzdGRhdGFbaV1bMF0sIGtUZXN0ZGF0YVtpXVsxXSk7CisgIH0KK30KKwor
I3VuZGVmIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfCisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmlu
dFRlc3QsIFdvcmtzRm9yTm9uUmVmZXJlbmNlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7
CisgIFVuaXZlcnNhbFRlcnNlUHJpbnQoMTIzLCAmc3MpOworICBFWFBFQ1RfRVEoIjEyMyIsIHNz
LnN0cigpKTsKK30KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VGVzdCwgV29ya3NGb3JSZWZl
cmVuY2UpIHsKKyAgY29uc3QgaW50JiBuID0gMTIzOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNz
OworICBVbml2ZXJzYWxUZXJzZVByaW50KG4sICZzcyk7CisgIEVYUEVDVF9FUSgiMTIzIiwgc3Mu
c3RyKCkpOworfQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUZXN0LCBXb3Jrc0ZvckNTdHJp
bmcpIHsKKyAgY29uc3QgY2hhciogczEgPSAiYWJjIjsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBz
czE7CisgIFVuaXZlcnNhbFRlcnNlUHJpbnQoczEsICZzczEpOworICBFWFBFQ1RfRVEoIlwiYWJj
XCIiLCBzczEuc3RyKCkpOworCisgIGNoYXIqIHMyID0gY29uc3RfY2FzdDxjaGFyKj4oczEpOwor
ICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMjsKKyAgVW5pdmVyc2FsVGVyc2VQcmludChzMiwgJnNz
Mik7CisgIEVYUEVDVF9FUSgiXCJhYmNcIiIsIHNzMi5zdHIoKSk7CisKKyAgY29uc3QgY2hhciog
czMgPSBOVUxMOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMzsKKyAgVW5pdmVyc2FsVGVyc2VQ
cmludChzMywgJnNzMyk7CisgIEVYUEVDVF9FUSgiTlVMTCIsIHNzMy5zdHIoKSk7Cit9CisKK1RF
U1QoVW5pdmVyc2FsUHJpbnRUZXN0LCBXb3Jrc0Zvck5vblJlZmVyZW5jZSkgeworICA6OnN0ZDo6
c3RyaW5nc3RyZWFtIHNzOworICBVbml2ZXJzYWxQcmludCgxMjMsICZzcyk7CisgIEVYUEVDVF9F
USgiMTIzIiwgc3Muc3RyKCkpOworfQorCitURVNUKFVuaXZlcnNhbFByaW50VGVzdCwgV29ya3NG
b3JSZWZlcmVuY2UpIHsKKyAgY29uc3QgaW50JiBuID0gMTIzOworICA6OnN0ZDo6c3RyaW5nc3Ry
ZWFtIHNzOworICBVbml2ZXJzYWxQcmludChuLCAmc3MpOworICBFWFBFQ1RfRVEoIjEyMyIsIHNz
LnN0cigpKTsKK30KKworVEVTVChVbml2ZXJzYWxQcmludFRlc3QsIFdvcmtzRm9yQ1N0cmluZykg
eworICBjb25zdCBjaGFyKiBzMSA9ICJhYmMiOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMTsK
KyAgVW5pdmVyc2FsUHJpbnQoczEsICZzczEpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHMx
KSArICIgcG9pbnRpbmcgdG8gXCJhYmNcIiIsIHN0ZDo6c3RyaW5nKHNzMS5zdHIoKSkpOworCisg
IGNoYXIqIHMyID0gY29uc3RfY2FzdDxjaGFyKj4oczEpOworICA6OnN0ZDo6c3RyaW5nc3RyZWFt
IHNzMjsKKyAgVW5pdmVyc2FsUHJpbnQoczIsICZzczIpOworICBFWFBFQ1RfRVEoUHJpbnRQb2lu
dGVyKHMyKSArICIgcG9pbnRpbmcgdG8gXCJhYmNcIiIsIHN0ZDo6c3RyaW5nKHNzMi5zdHIoKSkp
OworCisgIGNvbnN0IGNoYXIqIHMzID0gTlVMTDsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczM7
CisgIFVuaXZlcnNhbFByaW50KHMzLCAmc3MzKTsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgc3MzLnN0
cigpKTsKK30KKworVEVTVChVbml2ZXJzYWxQcmludFRlc3QsIFdvcmtzRm9yQ2hhckFycmF5KSB7
CisgIGNvbnN0IGNoYXIgc3RyW10gPSAiXCJMaW5lXDAgMVwiXG5MaW5lIDIiOworICA6OnN0ZDo6
c3RyaW5nc3RyZWFtIHNzMTsKKyAgVW5pdmVyc2FsUHJpbnQoc3RyLCAmc3MxKTsKKyAgRVhQRUNU
X0VRKCJcIlxcXCJMaW5lXFwwIDFcXFwiXFxuTGluZSAyXCIiLCBzczEuc3RyKCkpOworCisgIGNv
bnN0IGNoYXIgbXV0YWJsZV9zdHJbXSA9ICJcIkxpbmVcMCAxXCJcbkxpbmUgMiI7CisgIDo6c3Rk
OjpzdHJpbmdzdHJlYW0gc3MyOworICBVbml2ZXJzYWxQcmludChtdXRhYmxlX3N0ciwgJnNzMik7
CisgIEVYUEVDVF9FUSgiXCJcXFwiTGluZVxcMCAxXFxcIlxcbkxpbmUgMlwiIiwgc3MyLnN0cigp
KTsKK30KKworI2lmIEdURVNUX0hBU19UUjFfVFVQTEUKKworVEVTVChVbml2ZXJzYWxUZXJzZVBy
aW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0aFRyMSwgUHJpbnRzRW1wdHlUdXBsZSkgewor
ICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5n
cygKKyAgICAgIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGUoKSk7CisgIEVYUEVDVF9FUSgwdSwgcmVz
dWx0LnNpemUoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9T
dHJpbmdzVGVzdFdpdGhUcjEsIFByaW50c09uZVR1cGxlKSB7CisgIFN0cmluZ3MgcmVzdWx0ID0g
VW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAorICAgICAgOjpzdGQ6OnRy
MTo6bWFrZV90dXBsZSgxKSk7CisgIEFTU0VSVF9FUSgxdSwgcmVzdWx0LnNpemUoKSk7CisgIEVY
UEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFR1
cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhUcjEsIFByaW50c1R3b1R1cGxlKSB7CisgIFN0cmlu
Z3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAorICAg
ICAgOjpzdGQ6OnRyMTo6bWFrZV90dXBsZSgxLCAnYScpKTsKKyAgQVNTRVJUX0VRKDJ1LCByZXN1
bHQuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKCIxIiwgcmVzdWx0WzBdKTsKKyAgRVhQRUNUX0VRKCIn
YScgKDk3LCAweDYxKSIsIHJlc3VsdFsxXSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmlu
dFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhUcjEsIFByaW50c1RlcnNlbHkpIHsKKyAgY29u
c3QgaW50IG4gPSAxOworICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBs
ZUZpZWxkc1RvU3RyaW5ncygKKyAgICAgIDo6c3RkOjp0cjE6OnR1cGxlPGNvbnN0IGludCYsIGNv
bnN0IGNoYXIqPihuLCAiYSIpKTsKKyAgQVNTRVJUX0VRKDJ1LCByZXN1bHQuc2l6ZSgpKTsKKyAg
RVhQRUNUX0VRKCIxIiwgcmVzdWx0WzBdKTsKKyAgRVhQRUNUX0VRKCJcImFcIiIsIHJlc3VsdFsx
XSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRQorCisjaWYgR1RFU1RfSEFT
X1NURF9UVVBMRV8KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmlu
Z3NUZXN0V2l0aFN0ZCwgUHJpbnRzRW1wdHlUdXBsZSkgeworICBTdHJpbmdzIHJlc3VsdCA9IFVu
aXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncyg6OnN0ZDo6bWFrZV90dXBsZSgp
KTsKKyAgRVhQRUNUX0VRKDB1LCByZXN1bHQuc2l6ZSgpKTsKK30KKworVEVTVChVbml2ZXJzYWxU
ZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0aFN0ZCwgUHJpbnRzT25lVHVwbGUp
IHsKKyAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0
cmluZ3MoCisgICAgICA6OnN0ZDo6bWFrZV90dXBsZSgxKSk7CisgIEFTU0VSVF9FUSgxdSwgcmVz
dWx0LnNpemUoKSk7CisgIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7Cit9CisKK1RFU1QoVW5p
dmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhTdGQsIFByaW50c1R3
b1R1cGxlKSB7CisgIFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmll
bGRzVG9TdHJpbmdzKAorICAgICAgOjpzdGQ6Om1ha2VfdHVwbGUoMSwgJ2EnKSk7CisgIEFTU0VS
VF9FUSgydSwgcmVzdWx0LnNpemUoKSk7CisgIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7Cisg
IEVYUEVDVF9FUSgiJ2EnICg5NywgMHg2MSkiLCByZXN1bHRbMV0pOworfQorCitURVNUKFVuaXZl
cnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoU3RkLCBQcmludHNUZXJz
ZWx5KSB7CisgIGNvbnN0IGludCBuID0gMTsKKyAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxU
ZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoCisgICAgICA6OnN0ZDo6dHVwbGU8Y29uc3Qg
aW50JiwgY29uc3QgY2hhcio+KG4sICJhIikpOworICBBU1NFUlRfRVEoMnUsIHJlc3VsdC5zaXpl
KCkpOworICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRbMF0pOworICBFWFBFQ1RfRVEoIlwiYVwiIiwg
cmVzdWx0WzFdKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1RVUExFXworCisjaWYg
R1RFU1RfSEFTX0FCU0wKKworVEVTVChQcmludE9wdGlvbmFsVGVzdCwgQmFzaWMpIHsKKyAgYWJz
bDo6b3B0aW9uYWw8aW50PiB2YWx1ZTsKKyAgRVhQRUNUX0VRKCIobnVsbG9wdCkiLCBQcmludFRv
U3RyaW5nKHZhbHVlKSk7CisgIHZhbHVlID0gezd9OworICBFWFBFQ1RfRVEoIig3KSIsIFByaW50
VG9TdHJpbmcodmFsdWUpKTsKKyAgRVhQRUNUX0VRKCIoMS4xKSIsIFByaW50VG9TdHJpbmcoYWJz
bDo6b3B0aW9uYWw8ZG91YmxlPnsxLjF9KSk7CisgIEVYUEVDVF9FUSgiKFwiQVwiKSIsIFByaW50
VG9TdHJpbmcoYWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+eyJBIn0pKTsKK30KKworc3RydWN0
IE5vblByaW50YWJsZSB7CisgIHVuc2lnbmVkIGNoYXIgY29udGVudHMgPSAxNzsKK307CisKK1RF
U1QoUHJpbnRPbmVvZlRlc3QsIEJhc2ljKSB7CisgIHVzaW5nIFR5cGUgPSBhYnNsOjp2YXJpYW50
PGludCwgU3RyZWFtYWJsZUluR2xvYmFsLCBOb25QcmludGFibGU+OworICBFWFBFQ1RfRVEoIign
aW50JyB3aXRoIHZhbHVlIDcpIiwgUHJpbnRUb1N0cmluZyhUeXBlKDcpKSk7CisgIEVYUEVDVF9F
USgiKCdTdHJlYW1hYmxlSW5HbG9iYWwnIHdpdGggdmFsdWUgU3RyZWFtYWJsZUluR2xvYmFsKSIs
CisgICAgICAgICAgICBQcmludFRvU3RyaW5nKFR5cGUoU3RyZWFtYWJsZUluR2xvYmFse30pKSk7
CisgIEVYUEVDVF9FUSgKKyAgICAgICIoJ3Rlc3Rpbmc6Omd0ZXN0X3ByaW50ZXJzX3Rlc3Q6Ok5v
blByaW50YWJsZScgd2l0aCB2YWx1ZSAxLWJ5dGUgb2JqZWN0ICIKKyAgICAgICI8MTE+KSIsCisg
ICAgICBQcmludFRvU3RyaW5nKFR5cGUoTm9uUHJpbnRhYmxle30pKSk7Cit9CisjZW5kaWYgIC8v
IEdURVNUX0hBU19BQlNMCisKK30gIC8vIG5hbWVzcGFjZSBndGVzdF9wcmludGVyc190ZXN0Cit9
ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LXNodWZmbGUtdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTczY2M1ZWNh
M2ZjZTQ1OGFhM2FjM2UzOTg1MGY0N2JiMzgyZTU1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3QucHkKQEAgLTAs
MCArMSwzMjMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAwOSBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisj
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIi
VmVyaWZpZXMgdGhhdCB0ZXN0IHNodWZmbGluZyB3b3Jrcy4iIiIKKworaW1wb3J0IG9zCitpbXBv
cnQgZ3Rlc3RfdGVzdF91dGlscworCisjIENvbW1hbmQgdG8gcnVuIHRoZSBnb29nbGV0ZXN0LXNo
dWZmbGUtdGVzdF8gcHJvZ3JhbS4KK0NPTU1BTkQgPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RF
eGVjdXRhYmxlUGF0aCgnZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfJykKKworIyBUaGUgZW52aXJv
bm1lbnQgdmFyaWFibGVzIGZvciB0ZXN0IHNoYXJkaW5nLgorVE9UQUxfU0hBUkRTX0VOVl9WQVIg
PSAnR1RFU1RfVE9UQUxfU0hBUkRTJworU0hBUkRfSU5ERVhfRU5WX1ZBUiA9ICdHVEVTVF9TSEFS
RF9JTkRFWCcKKworVEVTVF9GSUxURVIgPSAnQSouQTpBKi5COkMqJworCitBTExfVEVTVFMgPSBb
XQorQUNUSVZFX1RFU1RTID0gW10KK0ZJTFRFUkVEX1RFU1RTID0gW10KK1NIQVJERURfVEVTVFMg
PSBbXQorCitTSFVGRkxFRF9BTExfVEVTVFMgPSBbXQorU0hVRkZMRURfQUNUSVZFX1RFU1RTID0g
W10KK1NIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTID0gW10KK1NIVUZGTEVEX1NIQVJERURfVEVTVFMg
PSBbXQorCisKK2RlZiBBbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcoKToKKyAgcmV0dXJuICctLWd0
ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzJworCisKK2RlZiBGaWx0ZXJGbGFnKHRlc3RfZmls
dGVyKToKKyAgcmV0dXJuICctLWd0ZXN0X2ZpbHRlcj0lcycgJSAodGVzdF9maWx0ZXIsKQorCisK
K2RlZiBSZXBlYXRGbGFnKG4pOgorICByZXR1cm4gJy0tZ3Rlc3RfcmVwZWF0PSVzJyAlIChuLCkK
KworCitkZWYgU2h1ZmZsZUZsYWcoKToKKyAgcmV0dXJuICctLWd0ZXN0X3NodWZmbGUnCisKKwor
ZGVmIFJhbmRvbVNlZWRGbGFnKG4pOgorICByZXR1cm4gJy0tZ3Rlc3RfcmFuZG9tX3NlZWQ9JXMn
ICUgKG4sKQorCisKK2RlZiBSdW5BbmRSZXR1cm5PdXRwdXQoZXh0cmFfZW52LCBhcmdzKToKKyAg
IiIiUnVucyB0aGUgdGVzdCBwcm9ncmFtIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQuIiIiCisKKyAg
ZW52aXJvbl9jb3B5ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgZW52aXJvbl9jb3B5LnVwZGF0ZShl
eHRyYV9lbnYpCisKKyAgcmV0dXJuIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhbQ09NTUFO
RF0gKyBhcmdzLCBlbnY9ZW52aXJvbl9jb3B5KS5vdXRwdXQKKworCitkZWYgR2V0VGVzdHNGb3JB
bGxJdGVyYXRpb25zKGV4dHJhX2VudiwgYXJncyk6CisgICIiIlJ1bnMgdGhlIHRlc3QgcHJvZ3Jh
bSBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgdGVzdCBsaXN0cy4KKworICBBcmdzOgorICAgIGV4dHJh
X2VudjogYSBtYXAgZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gdGhlaXIgdmFsdWVzCisg
ICAgYXJnczogY29tbWFuZCBsaW5lIGZsYWdzIHRvIHBhc3MgdG8gZ29vZ2xldGVzdC1zaHVmZmxl
LXRlc3RfCisKKyAgUmV0dXJuczoKKyAgICBBIGxpc3Qgd2hlcmUgdGhlIGktdGggZWxlbWVudCBp
cyB0aGUgbGlzdCBvZiB0ZXN0cyBydW4gaW4gdGhlIGktdGgKKyAgICB0ZXN0IGl0ZXJhdGlvbi4K
KyAgIiIiCisKKyAgdGVzdF9pdGVyYXRpb25zID0gW10KKyAgZm9yIGxpbmUgaW4gUnVuQW5kUmV0
dXJuT3V0cHV0KGV4dHJhX2VudiwgYXJncykuc3BsaXQoJ1xuJyk6CisgICAgaWYgbGluZS5zdGFy
dHN3aXRoKCctLS0tJyk6CisgICAgICB0ZXN0cyA9IFtdCisgICAgICB0ZXN0X2l0ZXJhdGlvbnMu
YXBwZW5kKHRlc3RzKQorICAgIGVsaWYgbGluZS5zdHJpcCgpOgorICAgICAgdGVzdHMuYXBwZW5k
KGxpbmUuc3RyaXAoKSkgICMgJ1Rlc3RDYXNlTmFtZS5UZXN0TmFtZScKKworICByZXR1cm4gdGVz
dF9pdGVyYXRpb25zCisKKworZGVmIEdldFRlc3RDYXNlcyh0ZXN0cyk6CisgICIiIlJldHVybnMg
YSBsaXN0IG9mIHRlc3QgY2FzZXMgaW4gdGhlIGdpdmVuIGZ1bGwgdGVzdCBuYW1lcy4KKworICBB
cmdzOgorICAgIHRlc3RzOiBhIGxpc3Qgb2YgZnVsbCB0ZXN0IG5hbWVzCisKKyAgUmV0dXJuczoK
KyAgICBBIGxpc3Qgb2YgdGVzdCBjYXNlcyBmcm9tICd0ZXN0cycsIGluIHRoZWlyIG9yaWdpbmFs
IG9yZGVyLgorICAgIENvbnNlY3V0aXZlIGR1cGxpY2F0ZXMgYXJlIHJlbW92ZWQuCisgICIiIgor
CisgIHRlc3RfY2FzZXMgPSBbXQorICBmb3IgdGVzdCBpbiB0ZXN0czoKKyAgICB0ZXN0X2Nhc2Ug
PSB0ZXN0LnNwbGl0KCcuJylbMF0KKyAgICBpZiBub3QgdGVzdF9jYXNlIGluIHRlc3RfY2FzZXM6
CisgICAgICB0ZXN0X2Nhc2VzLmFwcGVuZCh0ZXN0X2Nhc2UpCisKKyAgcmV0dXJuIHRlc3RfY2Fz
ZXMKKworCitkZWYgQ2FsY3VsYXRlVGVzdExpc3RzKCk6CisgICIiIkNhbGN1bGF0ZXMgdGhlIGxp
c3Qgb2YgdGVzdHMgcnVuIHVuZGVyIGRpZmZlcmVudCBmbGFncy4iIiIKKworICBpZiBub3QgQUxM
X1RFU1RTOgorICAgIEFMTF9URVNUUy5leHRlbmQoCisgICAgICAgIEdldFRlc3RzRm9yQWxsSXRl
cmF0aW9ucyh7fSwgW0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZygpXSlbMF0pCisKKyAgaWYgbm90
IEFDVElWRV9URVNUUzoKKyAgICBBQ1RJVkVfVEVTVFMuZXh0ZW5kKEdldFRlc3RzRm9yQWxsSXRl
cmF0aW9ucyh7fSwgW10pWzBdKQorCisgIGlmIG5vdCBGSUxURVJFRF9URVNUUzoKKyAgICBGSUxU
RVJFRF9URVNUUy5leHRlbmQoCisgICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7fSwg
W0ZpbHRlckZsYWcoVEVTVF9GSUxURVIpXSlbMF0pCisKKyAgaWYgbm90IFNIQVJERURfVEVTVFM6
CisgICAgU0hBUkRFRF9URVNUUy5leHRlbmQoCisgICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0
aW9ucyh7VE9UQUxfU0hBUkRTX0VOVl9WQVI6ICczJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMSd9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW10pWzBdKQorCisgIGlmIG5vdCBTSFVGRkxFRF9BTExfVEVTVFM6Cisg
ICAgU0hVRkZMRURfQUxMX1RFU1RTLmV4dGVuZChHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisg
ICAgICAgIHt9LCBbQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKCksIFNodWZmbGVGbGFnKCksIFJh
bmRvbVNlZWRGbGFnKDEpXSlbMF0pCisKKyAgaWYgbm90IFNIVUZGTEVEX0FDVElWRV9URVNUUzoK
KyAgICBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMuZXh0ZW5kKEdldFRlc3RzRm9yQWxsSXRlcmF0aW9u
cygKKyAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0pWzBdKQor
CisgIGlmIG5vdCBTSFVGRkxFRF9GSUxURVJFRF9URVNUUzoKKyAgICBTSFVGRkxFRF9GSUxURVJF
RF9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICB7fSwgW1No
dWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpLCBGaWx0ZXJGbGFnKFRFU1RfRklMVEVSKV0p
WzBdKQorCisgIGlmIG5vdCBTSFVGRkxFRF9TSEFSREVEX1RFU1RTOgorICAgIFNIVUZGTEVEX1NI
QVJERURfVEVTVFMuZXh0ZW5kKAorICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe1RP
VEFMX1NIQVJEU19FTlZfVkFSOiAnMycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU0hBUkRfSU5ERVhfRU5WX1ZBUjogJzEnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0pWzBdKQorCisKK2NsYXNz
IEdUZXN0U2h1ZmZsZVVuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJU
ZXN0cyB0ZXN0IHNodWZmbGluZy4iIiIKKworICBkZWYgc2V0VXAoc2VsZik6CisgICAgQ2FsY3Vs
YXRlVGVzdExpc3RzKCkKKworICBkZWYgdGVzdFNodWZmbGVQcmVzZXJ2ZXNOdW1iZXJPZlRlc3Rz
KHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKEFMTF9URVNUUyksIGxlbihTSFVGRkxF
RF9BTExfVEVTVFMpKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKEFDVElWRV9URVNUUyksIGxl
bihTSFVGRkxFRF9BQ1RJVkVfVEVTVFMpKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKEZJTFRF
UkVEX1RFU1RTKSwgbGVuKFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTKSkKKyAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxlbihTSEFSREVEX1RFU1RTKSwgbGVuKFNIVUZGTEVEX1NIQVJERURfVEVTVFMpKQor
CisgIGRlZiB0ZXN0U2h1ZmZsZUNoYW5nZXNUZXN0T3JkZXIoc2VsZik6CisgICAgc2VsZi5hc3Nl
cnRfKFNIVUZGTEVEX0FMTF9URVNUUyAhPSBBTExfVEVTVFMsIFNIVUZGTEVEX0FMTF9URVNUUykK
KyAgICBzZWxmLmFzc2VydF8oU0hVRkZMRURfQUNUSVZFX1RFU1RTICE9IEFDVElWRV9URVNUUywg
U0hVRkZMRURfQUNUSVZFX1RFU1RTKQorICAgIHNlbGYuYXNzZXJ0XyhTSFVGRkxFRF9GSUxURVJF
RF9URVNUUyAhPSBGSUxURVJFRF9URVNUUywKKyAgICAgICAgICAgICAgICAgU0hVRkZMRURfRklM
VEVSRURfVEVTVFMpCisgICAgc2VsZi5hc3NlcnRfKFNIVUZGTEVEX1NIQVJERURfVEVTVFMgIT0g
U0hBUkRFRF9URVNUUywKKyAgICAgICAgICAgICAgICAgU0hVRkZMRURfU0hBUkRFRF9URVNUUykK
KworICBkZWYgdGVzdFNodWZmbGVDaGFuZ2VzVGVzdENhc2VPcmRlcihzZWxmKToKKyAgICBzZWxm
LmFzc2VydF8oR2V0VGVzdENhc2VzKFNIVUZGTEVEX0FMTF9URVNUUykgIT0gR2V0VGVzdENhc2Vz
KEFMTF9URVNUUyksCisgICAgICAgICAgICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9BTExf
VEVTVFMpKQorICAgIHNlbGYuYXNzZXJ0XygKKyAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVE
X0FDVElWRV9URVNUUykgIT0gR2V0VGVzdENhc2VzKEFDVElWRV9URVNUUyksCisgICAgICAgIEdl
dFRlc3RDYXNlcyhTSFVGRkxFRF9BQ1RJVkVfVEVTVFMpKQorICAgIHNlbGYuYXNzZXJ0XygKKyAg
ICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTKSAhPSBHZXRUZXN0Q2Fz
ZXMoRklMVEVSRURfVEVTVFMpLAorICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfRklMVEVS
RURfVEVTVFMpKQorICAgIHNlbGYuYXNzZXJ0XygKKyAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZG
TEVEX1NIQVJERURfVEVTVFMpICE9IEdldFRlc3RDYXNlcyhTSEFSREVEX1RFU1RTKSwKKyAgICAg
ICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX1NIQVJERURfVEVTVFMpKQorCisgIGRlZiB0ZXN0U2h1
ZmZsZURvZXNOb3RSZXBlYXRUZXN0KHNlbGYpOgorICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX0FM
TF9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgU0hVRkZMRURfQUxMX1RFU1RTLmNv
dW50KHRlc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAnJXMgYXBwZWFycyBtb3JlIHRoYW4g
b25jZScgJSAodGVzdCwpKQorICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX0FDVElWRV9URVNUUzoK
KyAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgU0hVRkZMRURfQUNUSVZFX1RFU1RTLmNvdW50KHRl
c3QpLAorICAgICAgICAgICAgICAgICAgICAgICAnJXMgYXBwZWFycyBtb3JlIHRoYW4gb25jZScg
JSAodGVzdCwpKQorICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTOgorICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9GSUxURVJFRF9URVNUUy5jb3VudCh0ZXN0
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UnICUg
KHRlc3QsKSkKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9TSEFSREVEX1RFU1RTOgorICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9TSEFSREVEX1RFU1RTLmNvdW50KHRlc3QpLAor
ICAgICAgICAgICAgICAgICAgICAgICAnJXMgYXBwZWFycyBtb3JlIHRoYW4gb25jZScgJSAodGVz
dCwpKQorCisgIGRlZiB0ZXN0U2h1ZmZsZURvZXNOb3RDcmVhdGVOZXdUZXN0KHNlbGYpOgorICAg
IGZvciB0ZXN0IGluIFNIVUZGTEVEX0FMTF9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0
IGluIEFMTF9URVNUUywgJyVzIGlzIGFuIGludmFsaWQgdGVzdCcgJSAodGVzdCwpKQorICAgIGZv
ciB0ZXN0IGluIFNIVUZGTEVEX0FDVElWRV9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0
IGluIEFDVElWRV9URVNUUywgJyVzIGlzIGFuIGludmFsaWQgdGVzdCcgJSAodGVzdCwpKQorICAg
IGZvciB0ZXN0IGluIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTOgorICAgICAgc2VsZi5hc3NlcnRf
KHRlc3QgaW4gRklMVEVSRURfVEVTVFMsICclcyBpcyBhbiBpbnZhbGlkIHRlc3QnICUgKHRlc3Qs
KSkKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9TSEFSREVEX1RFU1RTOgorICAgICAgc2VsZi5h
c3NlcnRfKHRlc3QgaW4gU0hBUkRFRF9URVNUUywgJyVzIGlzIGFuIGludmFsaWQgdGVzdCcgJSAo
dGVzdCwpKQorCisgIGRlZiB0ZXN0U2h1ZmZsZUluY2x1ZGVzQWxsVGVzdHMoc2VsZik6CisgICAg
Zm9yIHRlc3QgaW4gQUxMX1RFU1RTOgorICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZM
RURfQUxMX1RFU1RTLCAnJXMgaXMgbWlzc2luZycgJSAodGVzdCwpKQorICAgIGZvciB0ZXN0IGlu
IEFDVElWRV9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIVUZGTEVEX0FDVElW
RV9URVNUUywgJyVzIGlzIG1pc3NpbmcnICUgKHRlc3QsKSkKKyAgICBmb3IgdGVzdCBpbiBGSUxU
RVJFRF9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIVUZGTEVEX0ZJTFRFUkVE
X1RFU1RTLCAnJXMgaXMgbWlzc2luZycgJSAodGVzdCwpKQorICAgIGZvciB0ZXN0IGluIFNIQVJE
RURfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVGRkxFRF9TSEFSREVEX1RF
U1RTLCAnJXMgaXMgbWlzc2luZycgJSAodGVzdCwpKQorCisgIGRlZiB0ZXN0U2h1ZmZsZUxlYXZl
c0RlYXRoVGVzdHNBdEZyb250KHNlbGYpOgorICAgIG5vbl9kZWF0aF90ZXN0X2ZvdW5kID0gRmFs
c2UKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9BQ1RJVkVfVEVTVFM6CisgICAgICBpZiAnRGVh
dGhUZXN0LicgaW4gdGVzdDoKKyAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBub25fZGVhdGhfdGVz
dF9mb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIGFmdGVyIGEgbm9uLWRl
YXRoIHRlc3QnICUgKHRlc3QsKSkKKyAgICAgIGVsc2U6CisgICAgICAgIG5vbl9kZWF0aF90ZXN0
X2ZvdW5kID0gVHJ1ZQorCisgIGRlZiBfVmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRlcmxlYXZlKHNl
bGYsIHRlc3RzKToKKyAgICB0ZXN0X2Nhc2VzID0gW10KKyAgICBmb3IgdGVzdCBpbiB0ZXN0czoK
KyAgICAgIFt0ZXN0X2Nhc2UsIF9dID0gdGVzdC5zcGxpdCgnLicpCisgICAgICBpZiB0ZXN0X2Nh
c2VzIGFuZCB0ZXN0X2Nhc2VzWy0xXSAhPSB0ZXN0X2Nhc2U6CisgICAgICAgIHRlc3RfY2FzZXMu
YXBwZW5kKHRlc3RfY2FzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCB0ZXN0X2Nhc2Vz
LmNvdW50KHRlc3RfY2FzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgY2FzZSAl
cyBpcyBub3QgZ3JvdXBlZCB0b2dldGhlciBpbiAlcycgJQorICAgICAgICAgICAgICAgICAgICAg
ICAgICh0ZXN0X2Nhc2UsIHRlc3RzKSkKKworICBkZWYgdGVzdFNodWZmbGVEb2VzTm90SW50ZXJs
ZWF2ZVRlc3RDYXNlcyhzZWxmKToKKyAgICBzZWxmLl9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVy
bGVhdmUoU0hVRkZMRURfQUxMX1RFU1RTKQorICAgIHNlbGYuX1ZlcmlmeVRlc3RDYXNlc0RvTm90
SW50ZXJsZWF2ZShTSFVGRkxFRF9BQ1RJVkVfVEVTVFMpCisgICAgc2VsZi5fVmVyaWZ5VGVzdENh
c2VzRG9Ob3RJbnRlcmxlYXZlKFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTKQorICAgIHNlbGYuX1Zl
cmlmeVRlc3RDYXNlc0RvTm90SW50ZXJsZWF2ZShTSFVGRkxFRF9TSEFSREVEX1RFU1RTKQorCisg
IGRlZiB0ZXN0U2h1ZmZsZVJlc3RvcmVzT3JkZXJBZnRlckVhY2hJdGVyYXRpb24oc2VsZik6Cisg
ICAgIyBHZXQgdGhlIHRlc3QgbGlzdHMgaW4gYWxsIDMgaXRlcmF0aW9ucywgdXNpbmcgcmFuZG9t
IHNlZWQgMSwgMiwKKyAgICAjIGFuZCAzIHJlc3BlY3RpdmVseS4gIEdvb2dsZSBUZXN0IHBpY2tz
IGEgZGlmZmVyZW50IHNlZWQgaW4gZWFjaAorICAgICMgaXRlcmF0aW9uLCBhbmQgdGhpcyB0ZXN0
IGRlcGVuZHMgb24gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24KKyAgICAjIHBpY2tpbmcgc3Vj
Y2Vzc2l2ZSBudW1iZXJzLiAgVGhpcyBkZXBlbmRlbmN5IGlzIG5vdCBpZGVhbCwgYnV0CisgICAg
IyBtYWtlcyB0aGUgdGVzdCBtdWNoIGVhc2llciB0byB3cml0ZS4KKyAgICBbdGVzdHNfaW5faXRl
cmF0aW9uMSwgdGVzdHNfaW5faXRlcmF0aW9uMiwgdGVzdHNfaW5faXRlcmF0aW9uM10gPSAoCisg
ICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKKyAgICAgICAgICAgIHt9LCBbU2h1ZmZs
ZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSksIFJlcGVhdEZsYWcoMyldKSkKKworICAgICMgTWFr
ZSBzdXJlIHJ1bm5pbmcgdGhlIHRlc3RzIHdpdGggcmFuZG9tIHNlZWQgMSBnZXRzIHRoZSBzYW1l
CisgICAgIyBvcmRlciBhcyBpbiBpdGVyYXRpb24gMSBhYm92ZS4KKyAgICBbdGVzdHNfd2l0aF9z
ZWVkMV0gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisgICAgICAgIHt9LCBbU2h1ZmZsZUZs
YWcoKSwgUmFuZG9tU2VlZEZsYWcoMSldKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHNfaW5f
aXRlcmF0aW9uMSwgdGVzdHNfd2l0aF9zZWVkMSkKKworICAgICMgTWFrZSBzdXJlIHJ1bm5pbmcg
dGhlIHRlc3RzIHdpdGggcmFuZG9tIHNlZWQgMiBnZXRzIHRoZSBzYW1lCisgICAgIyBvcmRlciBh
cyBpbiBpdGVyYXRpb24gMiBhYm92ZS4gIFN1Y2Nlc3MgbWVhbnMgdGhhdCBHb29nbGUgVGVzdAor
ICAgICMgY29ycmVjdGx5IHJlc3RvcmVzIHRoZSB0ZXN0IG9yZGVyIGJlZm9yZSByZS1zaHVmZmxp
bmcgYXQgdGhlCisgICAgIyBiZWdpbm5pbmcgb2YgaXRlcmF0aW9uIDIuCisgICAgW3Rlc3RzX3dp
dGhfc2VlZDJdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICB7fSwgW1NodWZm
bGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDIpXSkKKyAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3Rz
X2luX2l0ZXJhdGlvbjIsIHRlc3RzX3dpdGhfc2VlZDIpCisKKyAgICAjIE1ha2Ugc3VyZSBydW5u
aW5nIHRoZSB0ZXN0cyB3aXRoIHJhbmRvbSBzZWVkIDMgZ2V0cyB0aGUgc2FtZQorICAgICMgb3Jk
ZXIgYXMgaW4gaXRlcmF0aW9uIDMgYWJvdmUuICBTdWNjZXNzIG1lYW5zIHRoYXQgR29vZ2xlIFRl
c3QKKyAgICAjIGNvcnJlY3RseSByZXN0b3JlcyB0aGUgdGVzdCBvcmRlciBiZWZvcmUgcmUtc2h1
ZmZsaW5nIGF0IHRoZQorICAgICMgYmVnaW5uaW5nIG9mIGl0ZXJhdGlvbiAzLgorICAgIFt0ZXN0
c193aXRoX3NlZWQzXSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKKyAgICAgICAge30sIFtT
aHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygzKV0pCisgICAgc2VsZi5hc3NlcnRFcXVhbCh0
ZXN0c19pbl9pdGVyYXRpb24zLCB0ZXN0c193aXRoX3NlZWQzKQorCisgIGRlZiB0ZXN0U2h1ZmZs
ZUdlbmVyYXRlc05ld09yZGVySW5FYWNoSXRlcmF0aW9uKHNlbGYpOgorICAgIFt0ZXN0c19pbl9p
dGVyYXRpb24xLCB0ZXN0c19pbl9pdGVyYXRpb24yLCB0ZXN0c19pbl9pdGVyYXRpb24zXSA9ICgK
KyAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICAgICAge30sIFtTaHVm
ZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKSwgUmVwZWF0RmxhZygzKV0pKQorCisgICAgc2Vs
Zi5hc3NlcnRfKHRlc3RzX2luX2l0ZXJhdGlvbjEgIT0gdGVzdHNfaW5faXRlcmF0aW9uMiwKKyAg
ICAgICAgICAgICAgICAgdGVzdHNfaW5faXRlcmF0aW9uMSkKKyAgICBzZWxmLmFzc2VydF8odGVz
dHNfaW5faXRlcmF0aW9uMSAhPSB0ZXN0c19pbl9pdGVyYXRpb24zLAorICAgICAgICAgICAgICAg
ICB0ZXN0c19pbl9pdGVyYXRpb24xKQorICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0c19pbl9pdGVyYXRp
b24yICE9IHRlc3RzX2luX2l0ZXJhdGlvbjMsCisgICAgICAgICAgICAgICAgIHRlc3RzX2luX2l0
ZXJhdGlvbjIpCisKKyAgZGVmIHRlc3RTaHVmZmxlU2hhcmRlZFRlc3RzUHJlc2VydmVzUGFydGl0
aW9uKHNlbGYpOgorICAgICMgSWYgd2UgcnVuIE0gdGVzdHMgb24gTiBzaGFyZHMsIHRoZSBzYW1l
IE0gdGVzdHMgc2hvdWxkIGJlIHJ1biBpbgorICAgICMgdG90YWwsIHJlZ2FyZGxlc3Mgb2YgdGhl
IHJhbmRvbSBzZWVkcyB1c2VkIGJ5IHRoZSBzaGFyZHMuCisgICAgW3Rlc3RzMV0gPSBHZXRUZXN0
c0ZvckFsbEl0ZXJhdGlvbnMoe1RPVEFMX1NIQVJEU19FTlZfVkFSOiAnMycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcwJ30s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NodWZmbGVGbGFnKCks
IFJhbmRvbVNlZWRGbGFnKDEpXSkKKyAgICBbdGVzdHMyXSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0
aW9ucyh7VE9UQUxfU0hBUkRTX0VOVl9WQVI6ICczJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU0hBUkRfSU5ERVhfRU5WX1ZBUjogJzEnfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZs
YWcoMjApXSkKKyAgICBbdGVzdHMzXSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7VE9UQUxf
U0hBUkRTX0VOVl9WQVI6ICczJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU0hBUkRfSU5ERVhfRU5WX1ZBUjogJzInfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMjUpXSkKKyAg
ICBzb3J0ZWRfc2hhcmRlZF90ZXN0cyA9IHRlc3RzMSArIHRlc3RzMiArIHRlc3RzMworICAgIHNv
cnRlZF9zaGFyZGVkX3Rlc3RzLnNvcnQoKQorICAgIHNvcnRlZF9hY3RpdmVfdGVzdHMgPSBbXQor
ICAgIHNvcnRlZF9hY3RpdmVfdGVzdHMuZXh0ZW5kKEFDVElWRV9URVNUUykKKyAgICBzb3J0ZWRf
YWN0aXZlX3Rlc3RzLnNvcnQoKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkX2FjdGl2ZV90
ZXN0cywgc29ydGVkX3NoYXJkZWRfdGVzdHMpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFm
ZTVmNmFiYTJhNWUwZmZjYWI5MTVlNDYzOGQyM2Y1OGNmNDhmZjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0Xy5j
YwpAQCAtMCwwICsxLDEwMiBAQAorLy8gQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisvLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
Ly8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
Ky8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisKKy8vIFZlcmlmaWVzIHRoYXQgdGVzdCBzaHVmZmxpbmcgd29ya3MuCisKKyNp
bmNsdWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCit1c2luZyA6OnRlc3Rpbmc6
OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXI7Cit1c2luZyA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0
OwordXNpbmcgOjp0ZXN0aW5nOjpNZXNzYWdlOwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0OwordXNp
bmcgOjp0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3RJ
bmZvOwordXNpbmcgOjp0ZXN0aW5nOjpVbml0VGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJu
YWw6OnNjb3BlZF9wdHI7CisKKy8vIFRoZSB0ZXN0IG1ldGhvZHMgYXJlIGVtcHR5LCBhcyB0aGUg
c29sZSBwdXJwb3NlIG9mIHRoaXMgcHJvZ3JhbSBpcworLy8gdG8gcHJpbnQgdGhlIHRlc3QgbmFt
ZXMgYmVmb3JlL2FmdGVyIHNodWZmbGluZy4KKworY2xhc3MgQSA6IHB1YmxpYyBUZXN0IHt9Owor
VEVTVF9GKEEsIEEpIHt9CitURVNUX0YoQSwgQikge30KKworVEVTVChBRGVhdGhUZXN0LCBBKSB7
fQorVEVTVChBRGVhdGhUZXN0LCBCKSB7fQorVEVTVChBRGVhdGhUZXN0LCBDKSB7fQorCitURVNU
KEIsIEEpIHt9CitURVNUKEIsIEIpIHt9CitURVNUKEIsIEMpIHt9CitURVNUKEIsIERJU0FCTEVE
X0QpIHt9CitURVNUKEIsIERJU0FCTEVEX0UpIHt9CisKK1RFU1QoQkRlYXRoVGVzdCwgQSkge30K
K1RFU1QoQkRlYXRoVGVzdCwgQikge30KKworVEVTVChDLCBBKSB7fQorVEVTVChDLCBCKSB7fQor
VEVTVChDLCBDKSB7fQorVEVTVChDLCBESVNBQkxFRF9EKSB7fQorCitURVNUKENEZWF0aFRlc3Qs
IEEpIHt9CisKK1RFU1QoRElTQUJMRURfRCwgQSkge30KK1RFU1QoRElTQUJMRURfRCwgRElTQUJM
RURfQikge30KKworLy8gVGhpcyBwcmludGVyIHByaW50cyB0aGUgZnVsbCB0ZXN0IG5hbWVzIG9u
bHksIHN0YXJ0aW5nIGVhY2ggdGVzdAorLy8gaXRlcmF0aW9uIHdpdGggYSAiLS0tLSIgbWFya2Vy
LgorY2xhc3MgVGVzdE5hbWVQcmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIg
eworIHB1YmxpYzoKKyAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVu
aXRUZXN0JiAvKiB1bml0X3Rlc3QgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgLyogaXRlcmF0aW9uICovKSB7CisgICAgcHJpbnRmKCItLS0tXG4iKTsKKyAgfQor
CisgIHZpcnR1YWwgdm9pZCBPblRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7
CisgICAgcHJpbnRmKCIlcy4lc1xuIiwgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3Rf
aW5mby5uYW1lKCkpOworICB9Cit9OworCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIEluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKwor
ICAvLyBSZXBsYWNlcyB0aGUgZGVmYXVsdCBwcmludGVyIHdpdGggVGVzdE5hbWVQcmludGVyLCB3
aGljaCBwcmludHMKKyAgLy8gdGhlIHRlc3QgbmFtZSBvbmx5LgorICBUZXN0RXZlbnRMaXN0ZW5l
cnMmIGxpc3RlbmVycyA9IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKTsKKyAg
ZGVsZXRlIGxpc3RlbmVycy5SZWxlYXNlKGxpc3RlbmVycy5kZWZhdWx0X3Jlc3VsdF9wcmludGVy
KCkpOworICBsaXN0ZW5lcnMuQXBwZW5kKG5ldyBUZXN0TmFtZVByaW50ZXIpOworCisgIHJldHVy
biBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2dvb2dsZXRlc3QtdGVzdC1wYXJ0LXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtdGVzdC1wYXJ0LXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2QyZDZm
OWU4NThmNTI3OWJhNWExNmE1ZDFhNmUzN2FmZmU5MTBhZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10ZXN0LXBhcnQtdGVzdC5jYwpA
QCAtMCwwICsxLDIwNSBAQAorLy8gQ29weXJpZ2h0IDIwMDggR29vZ2xlIEluYy4KKy8vIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBt
ZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC10ZXN0LXBhcnQuaCIKKworI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LmgiCisKK3VzaW5nIHRlc3Rpbmc6Ok1lc3NhZ2U7Cit1c2luZyB0ZXN0aW5nOjpU
ZXN0OwordXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ7Cit1c2luZyB0ZXN0aW5nOjpUZXN0
UGFydFJlc3VsdEFycmF5OworCituYW1lc3BhY2UgeworCisvLyBUZXN0cyB0aGUgVGVzdFBhcnRS
ZXN1bHQgY2xhc3MuCisKKy8vIFRoZSB0ZXN0IGZpeHR1cmUgZm9yIHRlc3RpbmcgVGVzdFBhcnRS
ZXN1bHQuCitjbGFzcyBUZXN0UGFydFJlc3VsdFRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHJvdGVj
dGVkOgorICBUZXN0UGFydFJlc3VsdFRlc3QoKQorICAgICAgOiByMV8oVGVzdFBhcnRSZXN1bHQ6
OmtTdWNjZXNzLCAiZm9vL2Jhci5jYyIsIDEwLCAiU3VjY2VzcyEiKSwKKyAgICAgICAgcjJfKFRl
c3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlLCAiZm9vL2Jhci5jYyIsIC0xLCAiRmFpbHVy
ZSEiKSwKKyAgICAgICAgcjNfKFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLCBOVUxMLCAt
MSwgIkZhaWx1cmUhIikge30KKworICBUZXN0UGFydFJlc3VsdCByMV8sIHIyXywgcjNfOworfTsK
KworCitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBDb25zdHJ1Y3RvcldvcmtzKSB7CisgIE1l
c3NhZ2UgbWVzc2FnZTsKKyAgbWVzc2FnZSA8PCAic29tZXRoaW5nIGlzIHRlcnJpYmx5IHdyb25n
IjsKKyAgbWVzc2FnZSA8PCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4odGVzdGluZzo6aW50ZXJu
YWw6OmtTdGFja1RyYWNlTWFya2VyKTsKKyAgbWVzc2FnZSA8PCAic29tZSB1bmltcG9ydGFudCBz
dGFjayB0cmFjZSI7CisKKyAgY29uc3QgVGVzdFBhcnRSZXN1bHQgcmVzdWx0KFRlc3RQYXJ0UmVz
dWx0OjprTm9uRmF0YWxGYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNv
bWVfZmlsZS5jYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UuR2V0U3RyaW5nKCkuY19zdHIoKSk7CisKKyAg
RVhQRUNUX0VRKFRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlLCByZXN1bHQudHlwZSgp
KTsKKyAgRVhQRUNUX1NUUkVRKCJzb21lX2ZpbGUuY2MiLCByZXN1bHQuZmlsZV9uYW1lKCkpOwor
ICBFWFBFQ1RfRVEoNDIsIHJlc3VsdC5saW5lX251bWJlcigpKTsKKyAgRVhQRUNUX1NUUkVRKG1l
c3NhZ2UuR2V0U3RyaW5nKCkuY19zdHIoKSwgcmVzdWx0Lm1lc3NhZ2UoKSk7CisgIEVYUEVDVF9T
VFJFUSgic29tZXRoaW5nIGlzIHRlcnJpYmx5IHdyb25nIiwgcmVzdWx0LnN1bW1hcnkoKSk7Cit9
CisKK1RFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIFJlc3VsdEFjY2Vzc29yc1dvcmspIHsKKyAg
Y29uc3QgVGVzdFBhcnRSZXN1bHQgc3VjY2VzcyhUZXN0UGFydFJlc3VsdDo6a1N1Y2Nlc3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUuY2MiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXNz
YWdlIik7CisgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MucGFzc2VkKCkpOworICBFWFBFQ1RfRkFMU0Uo
c3VjY2Vzcy5mYWlsZWQoKSk7CisgIEVYUEVDVF9GQUxTRShzdWNjZXNzLm5vbmZhdGFsbHlfZmFp
bGVkKCkpOworICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcy5mYXRhbGx5X2ZhaWxlZCgpKTsKKworICBj
b25zdCBUZXN0UGFydFJlc3VsdCBub25mYXRhbF9mYWlsdXJlKFRlc3RQYXJ0UmVzdWx0OjprTm9u
RmF0YWxGYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJm
aWxlLmNjIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSIpOworICBFWFBF
Q1RfRkFMU0Uobm9uZmF0YWxfZmFpbHVyZS5wYXNzZWQoKSk7CisgIEVYUEVDVF9UUlVFKG5vbmZh
dGFsX2ZhaWx1cmUuZmFpbGVkKCkpOworICBFWFBFQ1RfVFJVRShub25mYXRhbF9mYWlsdXJlLm5v
bmZhdGFsbHlfZmFpbGVkKCkpOworICBFWFBFQ1RfRkFMU0Uobm9uZmF0YWxfZmFpbHVyZS5mYXRh
bGx5X2ZhaWxlZCgpKTsKKworICBjb25zdCBUZXN0UGFydFJlc3VsdCBmYXRhbF9mYWlsdXJlKFRl
c3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJmaWxlLmNjIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSIpOwor
ICBFWFBFQ1RfRkFMU0UoZmF0YWxfZmFpbHVyZS5wYXNzZWQoKSk7CisgIEVYUEVDVF9UUlVFKGZh
dGFsX2ZhaWx1cmUuZmFpbGVkKCkpOworICBFWFBFQ1RfRkFMU0UoZmF0YWxfZmFpbHVyZS5ub25m
YXRhbGx5X2ZhaWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUoZmF0YWxfZmFpbHVyZS5mYXRhbGx5X2Zh
aWxlZCgpKTsKK30KKworLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6OnR5cGUoKS4KK1RFU1RfRihU
ZXN0UGFydFJlc3VsdFRlc3QsIHR5cGUpIHsKKyAgRVhQRUNUX0VRKFRlc3RQYXJ0UmVzdWx0Ojpr
U3VjY2VzcywgcjFfLnR5cGUoKSk7CisgIEVYUEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a05vbkZh
dGFsRmFpbHVyZSwgcjJfLnR5cGUoKSk7CisgIEVYUEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a0Zh
dGFsRmFpbHVyZSwgcjNfLnR5cGUoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0Ojpm
aWxlX25hbWUoKS4KK1RFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIGZpbGVfbmFtZSkgeworICBF
WFBFQ1RfU1RSRVEoImZvby9iYXIuY2MiLCByMV8uZmlsZV9uYW1lKCkpOworICBFWFBFQ1RfU1RS
RVEoTlVMTCwgcjNfLmZpbGVfbmFtZSgpKTsKK30KKworLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6
OmxpbmVfbnVtYmVyKCkuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBsaW5lX251bWJlcikg
eworICBFWFBFQ1RfRVEoMTAsIHIxXy5saW5lX251bWJlcigpKTsKKyAgRVhQRUNUX0VRKC0xLCBy
Ml8ubGluZV9udW1iZXIoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjptZXNzYWdl
KCkuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBtZXNzYWdlKSB7CisgIEVYUEVDVF9TVFJF
USgiU3VjY2VzcyEiLCByMV8ubWVzc2FnZSgpKTsKK30KKworLy8gVGVzdHMgVGVzdFBhcnRSZXN1
bHQ6OnBhc3NlZCgpLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgUGFzc2VkKSB7CisgIEVY
UEVDVF9UUlVFKHIxXy5wYXNzZWQoKSk7CisgIEVYUEVDVF9GQUxTRShyMl8ucGFzc2VkKCkpOwor
ICBFWFBFQ1RfRkFMU0UocjNfLnBhc3NlZCgpKTsKK30KKworLy8gVGVzdHMgVGVzdFBhcnRSZXN1
bHQ6OmZhaWxlZCgpLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgRmFpbGVkKSB7CisgIEVY
UEVDVF9GQUxTRShyMV8uZmFpbGVkKCkpOworICBFWFBFQ1RfVFJVRShyMl8uZmFpbGVkKCkpOwor
ICBFWFBFQ1RfVFJVRShyM18uZmFpbGVkKCkpOworfQorCisvLyBUZXN0cyBUZXN0UGFydFJlc3Vs
dDo6ZmF0YWxseV9mYWlsZWQoKS4KK1RFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIEZhdGFsbHlG
YWlsZWQpIHsKKyAgRVhQRUNUX0ZBTFNFKHIxXy5mYXRhbGx5X2ZhaWxlZCgpKTsKKyAgRVhQRUNU
X0ZBTFNFKHIyXy5mYXRhbGx5X2ZhaWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUocjNfLmZhdGFsbHlf
ZmFpbGVkKCkpOworfQorCisvLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6bm9uZmF0YWxseV9mYWls
ZWQoKS4KK1RFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIE5vbmZhdGFsbHlGYWlsZWQpIHsKKyAg
RVhQRUNUX0ZBTFNFKHIxXy5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUocjJf
Lm5vbmZhdGFsbHlfZmFpbGVkKCkpOworICBFWFBFQ1RfRkFMU0UocjNfLm5vbmZhdGFsbHlfZmFp
bGVkKCkpOworfQorCisvLyBUZXN0cyB0aGUgVGVzdFBhcnRSZXN1bHRBcnJheSBjbGFzcy4KKwor
Y2xhc3MgVGVzdFBhcnRSZXN1bHRBcnJheVRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHJvdGVjdGVk
OgorICBUZXN0UGFydFJlc3VsdEFycmF5VGVzdCgpCisgICAgICA6IHIxXyhUZXN0UGFydFJlc3Vs
dDo6a05vbkZhdGFsRmFpbHVyZSwgImZvby9iYXIuY2MiLCAtMSwgIkZhaWx1cmUgMSIpLAorICAg
ICAgICByMl8oVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsICJmb28vYmFyLmNjIiwgLTEs
ICJGYWlsdXJlIDIiKSB7fQorCisgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IHIxXywgcjJfOworfTsK
KworLy8gVGVzdHMgdGhhdCBUZXN0UGFydFJlc3VsdEFycmF5IGluaXRpYWxseSBoYXMgc2l6ZSAw
LgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0LCBJbml0aWFsU2l6ZUlzWmVybykgewor
ICBUZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7CisgIEVYUEVDVF9FUSgwLCByZXN1bHRzLnNp
emUoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgVGVzdFBhcnRSZXN1bHRBcnJheSBjb250YWlucyB0
aGUgZ2l2ZW4gVGVzdFBhcnRSZXN1bHQKKy8vIGFmdGVyIG9uZSBBcHBlbmQoKSBvcGVyYXRpb24u
CitURVNUX0YoVGVzdFBhcnRSZXN1bHRBcnJheVRlc3QsIENvbnRhaW5zR2l2ZW5SZXN1bHRBZnRl
ckFwcGVuZCkgeworICBUZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7CisgIHJlc3VsdHMuQXBw
ZW5kKHIxXyk7CisgIEVYUEVDVF9FUSgxLCByZXN1bHRzLnNpemUoKSk7CisgIEVYUEVDVF9TVFJF
USgiRmFpbHVyZSAxIiwgcmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgwKS5tZXNzYWdlKCkpOwor
fQorCisvLyBUZXN0cyB0aGF0IFRlc3RQYXJ0UmVzdWx0QXJyYXkgY29udGFpbnMgdGhlIGdpdmVu
IFRlc3RQYXJ0UmVzdWx0cworLy8gYWZ0ZXIgdHdvIEFwcGVuZCgpIG9wZXJhdGlvbnMuCitURVNU
X0YoVGVzdFBhcnRSZXN1bHRBcnJheVRlc3QsIENvbnRhaW5zR2l2ZW5SZXN1bHRzQWZ0ZXJUd29B
cHBlbmRzKSB7CisgIFRlc3RQYXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsKKyAgcmVzdWx0cy5BcHBl
bmQocjFfKTsKKyAgcmVzdWx0cy5BcHBlbmQocjJfKTsKKyAgRVhQRUNUX0VRKDIsIHJlc3VsdHMu
c2l6ZSgpKTsKKyAgRVhQRUNUX1NUUkVRKCJGYWlsdXJlIDEiLCByZXN1bHRzLkdldFRlc3RQYXJ0
UmVzdWx0KDApLm1lc3NhZ2UoKSk7CisgIEVYUEVDVF9TVFJFUSgiRmFpbHVyZSAyIiwgcmVzdWx0
cy5HZXRUZXN0UGFydFJlc3VsdCgxKS5tZXNzYWdlKCkpOworfQorCit0eXBlZGVmIFRlc3RQYXJ0
UmVzdWx0QXJyYXlUZXN0IFRlc3RQYXJ0UmVzdWx0QXJyYXlEZWF0aFRlc3Q7CisKKy8vIFRlc3Rz
IHRoYXQgdGhlIHByb2dyYW0gZGllcyB3aGVuIEdldFRlc3RQYXJ0UmVzdWx0KCkgaXMgY2FsbGVk
IHdpdGgKKy8vIGFuIGludmFsaWQgaW5kZXguCitURVNUX0YoVGVzdFBhcnRSZXN1bHRBcnJheURl
YXRoVGVzdCwgRGllc1doZW5JbmRleElzT3V0T2ZCb3VuZCkgeworICBUZXN0UGFydFJlc3VsdEFy
cmF5IHJlc3VsdHM7CisgIHJlc3VsdHMuQXBwZW5kKHIxXyk7CisKKyAgRVhQRUNUX0RFQVRIX0lG
X1NVUFBPUlRFRChyZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KC0xKSwgIiIpOworICBFWFBFQ1Rf
REVBVEhfSUZfU1VQUE9SVEVEKHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMSksICIiKTsKK30K
KworLy8gRklYTUU6IEFkZCBhIHRlc3QgZm9yIHRoZSBjbGFzcyBIYXNOZXdGYXRhbEZhaWx1cmVI
ZWxwZXIuCisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRlc3QyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtdGVzdDJfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMmY5OGRjN2Qx
YzNlOTA5NzU4YmE2MDc3MmU5Nzc0OThjZTgxZmYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRlc3QyX3Rlc3QuY2MKQEAgLTAsMCAr
MSw2MSBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
Ly8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisv
LworLy8gVGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZi4gIFRoaXMgdmVyaWZpZXMgdGhhdCB0
aGUgYmFzaWMgY29uc3RydWN0cyBvZgorLy8gR29vZ2xlIFRlc3Qgd29yay4KKworI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuaCIK
KwordXNpbmcgOjp0ZXN0aW5nOjpWYWx1ZXM7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpQ
YXJhbUdlbmVyYXRvcjsKKworLy8gVGVzdHMgdGhhdCBnZW5lcmF0b3JzIGRlZmluZWQgaW4gYSBk
aWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdAorLy8gYXJlIGZ1bmN0aW9uYWwuIFRoZSB0ZXN0IHVz
aW5nIGV4dGVybl9nZW5fMiBpcyBkZWZpbmVkCisvLyBpbiBnb29nbGV0ZXN0LXBhcmFtLXRlc3Qt
dGVzdC5jYy4KK1BhcmFtR2VuZXJhdG9yPGludD4gZXh0ZXJuX2dlbl8yID0gVmFsdWVzKDMzKTsK
KworLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBkZWZpbmVk
IGluIG9uZSB0cmFuc2xhdGlvbiB1bml0CisvLyBhbmQgaW5zdGFudGlhdGVkIGluIGFub3RoZXIu
IFRoZSB0ZXN0IGlzIGRlZmluZWQgaW4KKy8vIGdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmNj
IGFuZCBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0IGZpeHR1cmUgY2xhc3MgaXMKKy8vIGRlZmlu
ZWQgaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmguCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChN
dWx0aXBsZXNPZjMzLAorICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxJbnN0YW50aWF0
aW9uVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygzMywgNjYpKTsKKworLy8g
VGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBpbnN0YW50aWF0ZWQK
Ky8vIGluIG11bHRpcGxlIHRyYW5zbGF0aW9uIHVuaXRzLiBBbm90aGVyIGluc3RhbnRpYXRpb24g
aXMgZGVmaW5lZAorLy8gaW4gZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MgYW5kCisvLyBJ
bnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QgZml4dHVyZSBpcyBkZWZp
bmVkIGluCisvLyBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaAorSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoU2VxdWVuY2UyLAorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbkluTXVs
dGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVz
KDQyKjMsIDQyKjQsIDQyKjUpKTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdC5weSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3QucHkKbmV3
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDZjYjlmNmRhMzFkZWFkZmQ3ZWVmZDIzNWU5YjM3ZGYyOWZiM2JhZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10aHJv
dy1vbi1mYWlsdXJlLXRlc3QucHkKQEAgLTAsMCArMSwxNjkgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorIworIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlRlc3RzIEdvb2dsZSBUZXN0J3MgdGhyb3ct
b24tZmFpbHVyZSBtb2RlIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4KKworVGhpcyBzY3JpcHQg
aW52b2tlcyBnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8gKGEgcHJvZ3JhbSB3cml0
dGVuIHdpdGgKK0dvb2dsZSBUZXN0KSB3aXRoIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgYW5kIGNv
bW1hbmQgbGluZSBmbGFncy4KKyIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBndGVzdF90ZXN0X3V0
aWxzCisKKworIyBDb25zdGFudHMuCisKKyMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciBlbmFi
bGluZy9kaXNhYmxpbmcgdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZS4KK1RIUk9XX09OX0ZBSUxV
UkUgPSAnZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZScKKworIyBQYXRoIHRvIHRoZSBnb29nbGV0ZXN0
LXRocm93LW9uLWZhaWx1cmUtdGVzdF8gcHJvZ3JhbSwgY29tcGlsZWQgd2l0aAorIyBleGNlcHRp
b25zIGRpc2FibGVkLgorRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRh
YmxlUGF0aCgKKyAgICAnZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfJykKKworCisj
IFV0aWxpdGllcy4KKworCitkZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToKKyAgIiIiU2V0
cyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIGdpdmVuIHZhbHVlOyB1bnNldHMgaXQgd2hl
biB0aGUKKyAgZ2l2ZW4gdmFsdWUgaXMgTm9uZS4KKyAgIiIiCisKKyAgZW52X3ZhciA9IGVudl92
YXIudXBwZXIoKQorICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKKyAgICBvcy5lbnZpcm9uW2Vudl92
YXJdID0gdmFsdWUKKyAgZWxpZiBlbnZfdmFyIGluIG9zLmVudmlyb246CisgICAgZGVsIG9zLmVu
dmlyb25bZW52X3Zhcl0KKworCitkZWYgUnVuKGNvbW1hbmQpOgorICAiIiJSdW5zIGEgY29tbWFu
ZDsgcmV0dXJucyBUcnVlL0ZhbHNlIGlmIGl0cyBleGl0IGNvZGUgaXMvaXNuJ3QgMC4iIiIKKwor
ICBwcmludCAnUnVubmluZyAiJXMiLiAuIC4nICUgJyAnLmpvaW4oY29tbWFuZCkKKyAgcCA9IGd0
ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kKQorICByZXR1cm4gcC5leGl0ZWQgYW5k
IHAuZXhpdF9jb2RlID09IDAKKworCisjIFRoZSB0ZXN0cy4gIEZJWE1FOiByZWZhY3RvciB0aGUg
Y2xhc3MgdG8gc2hhcmUgY29tbW9uCisjIGxvZ2ljIHdpdGggY29kZSBpbiBnb29nbGV0ZXN0LWJy
ZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3QucHkuCitjbGFzcyBUaHJvd09uRmFpbHVyZVRlc3QoZ3Rl
c3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICIiIlRlc3RzIHRoZSB0aHJvdy1vbi1mYWlsdXJl
IG1vZGUuIiIiCisKKyAgZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBlbnZfdmFyX3ZhbHVlLCBmbGFn
X3ZhbHVlLCBzaG91bGRfZmFpbCk6CisgICAgIiIiUnVucyBnb29nbGV0ZXN0LXRocm93LW9uLWZh
aWx1cmUtdGVzdF8gYW5kIHZlcmlmaWVzIHRoYXQgaXQgZG9lcworICAgIChvciBkb2VzIG5vdCkg
ZXhpdCB3aXRoIGEgbm9uLXplcm8gY29kZS4KKworICAgIEFyZ3M6CisgICAgICBlbnZfdmFyX3Zh
bHVlOiAgICB2YWx1ZSBvZiB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudAor
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGU7IE5vbmUgaWYgdGhlIHZhcmlhYmxlIHNo
b3VsZCBiZSB1bnNldC4KKyAgICAgIGZsYWdfdmFsdWU6ICAgICAgIHZhbHVlIG9mIHRoZSAtLWd0
ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZzsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUg
aWYgdGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgorICAgICAgc2hvdWxkX2ZhaWw6ICAg
ICAgVHJ1ZSBpZmYgdGhlIHByb2dyYW0gaXMgZXhwZWN0ZWQgdG8gZmFpbC4KKyAgICAiIiIKKwor
ICAgIFNldEVudlZhcihUSFJPV19PTl9GQUlMVVJFLCBlbnZfdmFyX3ZhbHVlKQorCisgICAgaWYg
ZW52X3Zhcl92YWx1ZSBpcyBOb25lOgorICAgICAgZW52X3Zhcl92YWx1ZV9tc2cgPSAnIGlzIG5v
dCBzZXQnCisgICAgZWxzZToKKyAgICAgIGVudl92YXJfdmFsdWVfbXNnID0gJz0nICsgZW52X3Zh
cl92YWx1ZQorCisgICAgaWYgZmxhZ192YWx1ZSBpcyBOb25lOgorICAgICAgZmxhZyA9ICcnCisg
ICAgZWxpZiBmbGFnX3ZhbHVlID09ICcwJzoKKyAgICAgIGZsYWcgPSAnLS0lcz0wJyAlIFRIUk9X
X09OX0ZBSUxVUkUKKyAgICBlbHNlOgorICAgICAgZmxhZyA9ICctLSVzJyAlIFRIUk9XX09OX0ZB
SUxVUkUKKworICAgIGNvbW1hbmQgPSBbRVhFX1BBVEhdCisgICAgaWYgZmxhZzoKKyAgICAgIGNv
bW1hbmQuYXBwZW5kKGZsYWcpCisKKyAgICBpZiBzaG91bGRfZmFpbDoKKyAgICAgIHNob3VsZF9v
cl9ub3QgPSAnc2hvdWxkJworICAgIGVsc2U6CisgICAgICBzaG91bGRfb3Jfbm90ID0gJ3Nob3Vs
ZCBub3QnCisKKyAgICBmYWlsZWQgPSBub3QgUnVuKGNvbW1hbmQpCisKKyAgICBTZXRFbnZWYXIo
VEhST1dfT05fRkFJTFVSRSwgTm9uZSkKKworICAgIG1zZyA9ICgnd2hlbiAlcyVzLCBhbiBhc3Nl
cnRpb24gZmFpbHVyZSBpbiAiJXMiICVzIGNhdXNlIGEgbm9uLXplcm8gJworICAgICAgICAgICAn
ZXhpdCBjb2RlLicgJQorICAgICAgICAgICAoVEhST1dfT05fRkFJTFVSRSwgZW52X3Zhcl92YWx1
ZV9tc2csICcgJy5qb2luKGNvbW1hbmQpLAorICAgICAgICAgICAgc2hvdWxkX29yX25vdCkpCisg
ICAgc2VsZi5hc3NlcnRfKGZhaWxlZCA9PSBzaG91bGRfZmFpbCwgbXNnKQorCisgIGRlZiB0ZXN0
RGVmYXVsdEJlaGF2aW9yKHNlbGYpOgorICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiB0aGUg
ZGVmYXVsdCBtb2RlLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1O
b25lLCBmbGFnX3ZhbHVlPU5vbmUsIHNob3VsZF9mYWlsPUZhbHNlKQorCisgIGRlZiB0ZXN0VGhy
b3dPbkZhaWx1cmVFbnZWYXIoc2VsZik6CisgICAgIiIiVGVzdHMgdXNpbmcgdGhlIEdURVNUX1RI
Uk9XX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFyaWFibGUuIiIiCisKKyAgICBzZWxmLlJ1bkFu
ZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3Zh
bHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9RmFsc2UpCisgICAg
c2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAg
ICAgZmxhZ192YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPVRy
dWUpCisKKyAgZGVmIHRlc3RUaHJvd09uRmFpbHVyZUZsYWcoc2VsZik6CisgICAgIiIiVGVzdHMg
dXNpbmcgdGhlIC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZSBmbGFnLiIiIgorCisgICAgc2VsZi5S
dW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGZs
YWdfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPUZhbHNlKQor
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBmbGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFp
bD1UcnVlKQorCisgIGRlZiB0ZXN0VGhyb3dPbkZhaWx1cmVGbGFnT3ZlcnJpZGVzRW52VmFyKHNl
bGYpOgorICAgICIiIlRlc3RzIHRoYXQgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlIG92ZXJyaWRl
cyBHVEVTVF9USFJPV19PTl9GQUlMVVJFLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52
X3Zhcl92YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCisg
ICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9RmFsc2UpCisgICAgc2VsZi5SdW5BbmRW
ZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1
ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9VHJ1ZSkKKyAgICBzZWxm
LlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBm
bGFnX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1GYWxzZSkK
KyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAg
ICAgICAgICBmbGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFp
bD1UcnVlKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRp
bHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5
YTJjNjQ0OGEyOWNhMjk2NDlhMTI0ODA1OWE5ODVhNTFhZjg2MzYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVy
ZS10ZXN0Xy5jYwpAQCAtMCwwICsxLDcxIEBACisvLyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIElu
Yy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8v
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
Ky8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKworLy8gVGVzdHMgR29vZ2xlIFRlc3QncyB0aHJvdy1vbi1mYWls
dXJlIG1vZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLgorLy8KKy8vIFRoaXMgcHJvZ3JhbSBt
dXN0IGJlIGNvbXBpbGVkIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4gIEl0IHdpbGwgYmUKKy8v
IGludm9rZWQgYnkgZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3QucHksIGFuZCBpcyBl
eHBlY3RlZCB0byBleGl0CisvLyB3aXRoIG5vbi16ZXJvIGluIHRoZSB0aHJvdy1vbi1mYWlsdXJl
IG1vZGUgb3IgMCBvdGhlcndpc2UuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisjaW5j
bHVkZSA8c3RkaW8uaD4gICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGZmbHVzaCwgZnByaW50
ZiwgTlVMTCwgZXRjLgorI2luY2x1ZGUgPHN0ZGxpYi5oPiAgICAgICAgICAgICAgICAgICAgIC8v
IGZvciBleGl0CisjaW5jbHVkZSA8ZXhjZXB0aW9uPiAgICAgICAgICAgICAgICAgICAgLy8gZm9y
IHNldF90ZXJtaW5hdGUKKworLy8gVGhpcyB0ZXJtaW5hdGUgaGFuZGxlciBhYm9ydHMgdGhlIHBy
b2dyYW0gdXNpbmcgZXhpdCgpIHJhdGhlciB0aGFuIGFib3J0KCkuCisvLyBUaGlzIGF2b2lkcyBz
aG93aW5nIHBvcC11cHMgb24gV2luZG93cyBzeXN0ZW1zIGFuZCBjb3JlIGR1bXBzIG9uIFVuaXgt
bGlrZQorLy8gb25lcy4KK3ZvaWQgVGVybWluYXRlSGFuZGxlcigpIHsKKyAgZnByaW50ZihzdGRl
cnIsICIlc1xuIiwgIlVuaGFuZGxlZCBDKysgZXhjZXB0aW9uIHRlcm1pbmF0aW5nIHRoZSBwcm9n
cmFtLiIpOworICBmZmx1c2goTlVMTCk7CisgIGV4aXQoMSk7Cit9CisKK2ludCBtYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikgeworI2lmIEdURVNUX0hBU19FWENFUFRJT05TCisgIHN0ZDo6c2V0
X3Rlcm1pbmF0ZSgmVGVybWluYXRlSGFuZGxlcik7CisjZW5kaWYKKyAgdGVzdGluZzo6SW5pdEdv
b2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIC8vIFdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgcGVv
cGxlIGNhbiB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBpbgorICAvLyBvdGhlciB0ZXN0aW5n
IGZyYW1ld29ya3MsIGFzIGxvbmcgYXMgdGhleSBpbml0aWFsaXplIEdvb2dsZSBUZXN0CisgIC8v
IHByb3Blcmx5IGFuZCBzZXQgdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZS4gIFRoZXJlZm9yZSwg
d2UgZG9uJ3QKKyAgLy8gdXNlIEdvb2dsZSBUZXN0J3MgY29uc3RydWN0cyBmb3IgZGVmaW5pbmcg
YW5kIHJ1bm5pbmcgdGVzdHMKKyAgLy8gKGUuZy4gVEVTVCBhbmQgUlVOX0FMTF9URVNUUykgaGVy
ZS4KKworICAvLyBJbiB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlIHdpdGggZXhjZXB0aW9ucyBk
aXNhYmxlZCwgdGhpcworICAvLyBhc3NlcnRpb24gd2lsbCBjYXVzZSB0aGUgcHJvZ3JhbSB0byBl
eGl0IHdpdGggYSBub24temVybyBjb2RlLgorICBFWFBFQ1RfRVEoMiwgMyk7CisKKyAgLy8gV2hl
biBub3QgaW4gdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZSwgdGhlIGNvbnRyb2wgd2lsbCByZWFj
aAorICAvLyBoZXJlLgorICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10dXBsZS10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXR1cGxlLXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ4MmMx
NjBmMTc3ZDZmM2JhZGQ3NzA2NGFiOGM3ZTk4YmQyOTc2NwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10dXBsZS10ZXN0LmNjCkBAIC0w
LDAgKzEsMzE5IEBACisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKworI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgiCisjaW5jbHVkZSA8
dXRpbGl0eT4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCit1c2lu
ZyA6OnN0ZDo6dHIxOjpnZXQ7Cit1c2luZyA6OnN0ZDo6dHIxOjptYWtlX3R1cGxlOwordXNpbmcg
OjpzdGQ6OnRyMTo6dHVwbGU7Cit1c2luZyA6OnN0ZDo6dHIxOjp0dXBsZV9lbGVtZW50OwordXNp
bmcgOjpzdGQ6OnRyMTo6dHVwbGVfc2l6ZTsKK3VzaW5nIDo6dGVzdGluZzo6U3RhdGljQXNzZXJ0
VHlwZUVxOworCisvLyBUZXN0cyB0aGF0IHR1cGxlX2VsZW1lbnQ8SywgdHVwbGU8VDAsIFQxLCAu
Li4sIFROPiA+Ojp0eXBlIHJldHVybnMgVEsuCitURVNUKHR1cGxlX2VsZW1lbnRfVGVzdCwgUmV0
dXJuc0VsZW1lbnRUeXBlKSB7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIHR1cGxlX2VsZW1l
bnQ8MCwgdHVwbGU8aW50LCBjaGFyPiA+Ojp0eXBlPigpOworICBTdGF0aWNBc3NlcnRUeXBlRXE8
aW50JiwgdHVwbGVfZWxlbWVudDwxLCB0dXBsZTxkb3VibGUsIGludCY+ID46OnR5cGU+KCk7Cisg
IFN0YXRpY0Fzc2VydFR5cGVFcTxib29sLCB0dXBsZV9lbGVtZW50PDIsIHR1cGxlPGRvdWJsZSwg
aW50LCBib29sPiA+Ojp0eXBlPigpOworfQorCisvLyBUZXN0cyB0aGF0IHR1cGxlX3NpemU8VD46
OnZhbHVlIGdpdmVzIHRoZSBudW1iZXIgb2YgZmllbGRzIGluIHR1cGxlCisvLyB0eXBlIFQuCitU
RVNUKHR1cGxlX3NpemVfVGVzdCwgUmV0dXJuc051bWJlck9mRmllbGRzKSB7CisgIEVYUEVDVF9F
USgwLCArdHVwbGVfc2l6ZTx0dXBsZTw+ID46OnZhbHVlKTsKKyAgRVhQRUNUX0VRKDEsICt0dXBs
ZV9zaXplPHR1cGxlPHZvaWQqPiA+Ojp2YWx1ZSk7CisgIEVYUEVDVF9FUSgxLCArdHVwbGVfc2l6
ZTx0dXBsZTxjaGFyPiA+Ojp2YWx1ZSk7CisgIEVYUEVDVF9FUSgxLCArKHR1cGxlX3NpemU8dHVw
bGU8dHVwbGU8aW50LCBkb3VibGU+ID4gPjo6dmFsdWUpKTsKKyAgRVhQRUNUX0VRKDIsICsodHVw
bGVfc2l6ZTx0dXBsZTxpbnQmLCBjb25zdCBjaGFyPiA+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRVEo
MywgKyh0dXBsZV9zaXplPHR1cGxlPGNoYXIqLCB2b2lkLCBjb25zdCBib29sJj4gPjo6dmFsdWUp
KTsKK30KKworLy8gVGVzdHMgY29tcGFyaW5nIGEgdHVwbGUgd2l0aCBpdHNlbGYuCitURVNUKENv
bXBhcmlzb25UZXN0LCBDb21wYXJlc1dpdGhTZWxmKSB7CisgIGNvbnN0IHR1cGxlPGludCwgY2hh
ciwgYm9vbD4gYSg1LCAnYScsIGZhbHNlKTsKKworICBFWFBFQ1RfVFJVRShhID09IGEpOworICBF
WFBFQ1RfRkFMU0UoYSAhPSBhKTsKK30KKworLy8gVGVzdHMgY29tcGFyaW5nIHR3byB0dXBsZXMg
d2l0aCB0aGUgc2FtZSB2YWx1ZS4KK1RFU1QoQ29tcGFyaXNvblRlc3QsIENvbXBhcmVzRXF1YWxU
dXBsZXMpIHsKKyAgY29uc3QgdHVwbGU8aW50LCBib29sPiBhKDUsIHRydWUpLCBiKDUsIHRydWUp
OworCisgIEVYUEVDVF9UUlVFKGEgPT0gYik7CisgIEVYUEVDVF9GQUxTRShhICE9IGIpOworfQor
CisvLyBUZXN0cyBjb21wYXJpbmcgdHdvIGRpZmZlcmVudCB0dXBsZXMgdGhhdCBoYXZlIG5vIHJl
ZmVyZW5jZSBmaWVsZHMuCitURVNUKENvbXBhcmlzb25UZXN0LCBDb21wYXJlc1VuZXF1YWxUdXBs
ZXNXaXRob3V0UmVmZXJlbmNlRmllbGRzKSB7CisgIHR5cGVkZWYgdHVwbGU8Y29uc3QgaW50LCBj
aGFyPiBGb29UdXBsZTsKKworICBjb25zdCBGb29UdXBsZSBhKDAsICd4Jyk7CisgIGNvbnN0IEZv
b1R1cGxlIGIoMSwgJ2EnKTsKKworICBFWFBFQ1RfVFJVRShhICE9IGIpOworICBFWFBFQ1RfRkFM
U0UoYSA9PSBiKTsKKworICBjb25zdCBGb29UdXBsZSBjKDEsICdiJyk7CisKKyAgRVhQRUNUX1RS
VUUoYiAhPSBjKTsKKyAgRVhQRUNUX0ZBTFNFKGIgPT0gYyk7Cit9CisKKy8vIFRlc3RzIGNvbXBh
cmluZyB0d28gZGlmZmVyZW50IHR1cGxlcyB0aGF0IGhhdmUgcmVmZXJlbmNlIGZpZWxkcy4KK1RF
U1QoQ29tcGFyaXNvblRlc3QsIENvbXBhcmVzVW5lcXVhbFR1cGxlc1dpdGhSZWZlcmVuY2VGaWVs
ZHMpIHsKKyAgdHlwZWRlZiB0dXBsZTxpbnQmLCBjb25zdCBjaGFyJj4gRm9vVHVwbGU7CisKKyAg
aW50IGkgPSA1OworICBjb25zdCBjaGFyIGNoID0gJ2EnOworICBjb25zdCBGb29UdXBsZSBhKGks
IGNoKTsKKworICBpbnQgaiA9IDY7CisgIGNvbnN0IEZvb1R1cGxlIGIoaiwgY2gpOworCisgIEVY
UEVDVF9UUlVFKGEgIT0gYik7CisgIEVYUEVDVF9GQUxTRShhID09IGIpOworCisgIGogPSA1Owor
ICBjb25zdCBjaGFyIGNoMiA9ICdiJzsKKyAgY29uc3QgRm9vVHVwbGUgYyhqLCBjaDIpOworCisg
IEVYUEVDVF9UUlVFKGIgIT0gYyk7CisgIEVYUEVDVF9GQUxTRShiID09IGMpOworfQorCisvLyBU
ZXN0cyB0aGF0IGEgdHVwbGUgZmllbGQgd2l0aCBhIHJlZmVyZW5jZSB0eXBlIGlzIGFuIGFsaWFz
IG9mIHRoZQorLy8gdmFyaWFibGUgaXQncyBzdXBwb3NlZCB0byByZWZlcmVuY2UuCitURVNUKFJl
ZmVyZW5jZUZpZWxkVGVzdCwgSXNBbGlhc09mUmVmZXJlbmNlZFZhcmlhYmxlKSB7CisgIGludCBu
ID0gMDsKKyAgdHVwbGU8Ym9vbCwgaW50Jj4gdCh0cnVlLCBuKTsKKworICBuID0gMTsKKyAgRVhQ
RUNUX0VRKG4sIGdldDwxPih0KSkKKyAgICAgIDw8ICJDaGFuZ2luZyBhIHVuZGVybHlpbmcgdmFy
aWFibGUgc2hvdWxkIHVwZGF0ZSB0aGUgcmVmZXJlbmNlIGZpZWxkLiI7CisKKyAgLy8gTWFrZXMg
c3VyZSB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IGRvIGFueXRoaW5nIGZ1bm55IHdp
dGgKKyAgLy8gdGhlICYgb3BlcmF0b3IgZm9yIHRoZSByZXR1cm4gdHlwZSBvZiBnZXQ8PigpLgor
ICBFWFBFQ1RfRVEoJm4sICYoZ2V0PDE+KHQpKSkKKyAgICAgIDw8ICJUaGUgYWRkcmVzcyBvZiBh
IHJlZmVyZW5jZSBmaWVsZCBzaG91bGQgZXF1YWwgdGhlIGFkZHJlc3Mgb2YgIgorICAgICAgPDwg
InRoZSB1bmRlcmx5aW5nIHZhcmlhYmxlLiI7CisKKyAgZ2V0PDE+KHQpID0gMjsKKyAgRVhQRUNU
X0VRKDIsIG4pCisgICAgICA8PCAiQ2hhbmdpbmcgYSByZWZlcmVuY2UgZmllbGQgc2hvdWxkIHVw
ZGF0ZSB0aGUgdW5kZXJseWluZyB2YXJpYWJsZS4iOworfQorCisvLyBUZXN0cyB0aGF0IHR1cGxl
J3MgZGVmYXVsdCBjb25zdHJ1Y3RvciBkZWZhdWx0IGluaXRpYWxpemVzIGVhY2ggZmllbGQuCisv
LyBUaGlzIHRlc3QgbmVlZHMgdG8gY29tcGlsZSB3aXRob3V0IGdlbmVyYXRpbmcgd2FybmluZ3Mu
CitURVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3JEZWZhdWx0SW5p
dGlhbGl6ZXNFYWNoRmllbGQpIHsKKyAgLy8gVGhlIFRSMSByZXBvcnQgcmVxdWlyZXMgdGhhdCB0
dXBsZSdzIGRlZmF1bHQgY29uc3RydWN0b3IgZGVmYXVsdAorICAvLyBpbml0aWFsaXplcyBlYWNo
IGZpZWxkLCBldmVuIGlmIGl0J3MgYSBwcmltaXRpdmUgdHlwZS4gIElmIHRoZQorICAvLyBpbXBs
ZW1lbnRhdGlvbiBmb3JnZXRzIHRvIGRvIHRoaXMsIHRoaXMgdGVzdCB3aWxsIGNhdGNoIGl0IGJ5
CisgIC8vIGdlbmVyYXRpbmcgd2FybmluZ3MgYWJvdXQgdXNpbmcgdW5pbml0aWFsaXplZCB2YXJp
YWJsZXMgKGFzc3VtaW5nCisgIC8vIGEgZGVjZW50IGNvbXBpbGVyKS4KKworICB0dXBsZTw+IGVt
cHR5OworCisgIHR1cGxlPGludD4gYTEsIGIxOworICBiMSA9IGExOworICBFWFBFQ1RfRVEoMCwg
Z2V0PDA+KGIxKSk7CisKKyAgdHVwbGU8aW50LCBkb3VibGU+IGEyLCBiMjsKKyAgYjIgPSBhMjsK
KyAgRVhQRUNUX0VRKDAsIGdldDwwPihiMikpOworICBFWFBFQ1RfRVEoMC4wLCBnZXQ8MT4oYjIp
KTsKKworICB0dXBsZTxkb3VibGUsIGNoYXIsIGJvb2wqPiBhMywgYjM7CisgIGIzID0gYTM7Cisg
IEVYUEVDVF9FUSgwLjAsIGdldDwwPihiMykpOworICBFWFBFQ1RfRVEoJ1wwJywgZ2V0PDE+KGIz
KSk7CisgIEVYUEVDVF9UUlVFKGdldDwyPihiMykgPT0gTlVMTCk7CisKKyAgdHVwbGU8aW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50PiBhMTAsIGIxMDsKKyAg
YjEwID0gYTEwOworICBFWFBFQ1RfRVEoMCwgZ2V0PDA+KGIxMCkpOworICBFWFBFQ1RfRVEoMCwg
Z2V0PDE+KGIxMCkpOworICBFWFBFQ1RfRVEoMCwgZ2V0PDI+KGIxMCkpOworICBFWFBFQ1RfRVEo
MCwgZ2V0PDM+KGIxMCkpOworICBFWFBFQ1RfRVEoMCwgZ2V0PDQ+KGIxMCkpOworICBFWFBFQ1Rf
RVEoMCwgZ2V0PDU+KGIxMCkpOworICBFWFBFQ1RfRVEoMCwgZ2V0PDY+KGIxMCkpOworICBFWFBF
Q1RfRVEoMCwgZ2V0PDc+KGIxMCkpOworICBFWFBFQ1RfRVEoMCwgZ2V0PDg+KGIxMCkpOworICBF
WFBFQ1RfRVEoMCwgZ2V0PDk+KGIxMCkpOworfQorCisvLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSB0
dXBsZSBmcm9tIGl0cyBmaWVsZHMuCitURVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBDb25zdHJ1
Y3RzRnJvbUZpZWxkcykgeworICBpbnQgbiA9IDE7CisgIC8vIFJlZmVyZW5jZSBmaWVsZC4KKyAg
dHVwbGU8aW50Jj4gYShuKTsKKyAgRVhQRUNUX0VRKCZuLCAmKGdldDwwPihhKSkpOworCisgIC8v
IE5vbi1yZWZlcmVuY2UgZmllbGRzLgorICB0dXBsZTxpbnQsIGNoYXI+IGIoNSwgJ2EnKTsKKyAg
RVhQRUNUX0VRKDUsIGdldDwwPihiKSk7CisgIEVYUEVDVF9FUSgnYScsIGdldDwxPihiKSk7CisK
KyAgLy8gQ29uc3QgcmVmZXJlbmNlIGZpZWxkLgorICBjb25zdCBpbnQgbSA9IDI7CisgIHR1cGxl
PGJvb2wsIGNvbnN0IGludCY+IGModHJ1ZSwgbSk7CisgIEVYUEVDVF9UUlVFKGdldDwwPihjKSk7
CisgIEVYUEVDVF9FUSgmbSwgJihnZXQ8MT4oYykpKTsKK30KKworLy8gVGVzdHMgdHVwbGUncyBj
b3B5IGNvbnN0cnVjdG9yLgorVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgQ29weUNvbnN0cnVj
dG9yKSB7CisgIHR1cGxlPGRvdWJsZSwgYm9vbD4gYSgwLjAsIHRydWUpOworICB0dXBsZTxkb3Vi
bGUsIGJvb2w+IGIoYSk7CisKKyAgRVhQRUNUX0RPVUJMRV9FUSgwLjAsIGdldDwwPihiKSk7Cisg
IEVYUEVDVF9UUlVFKGdldDwxPihiKSk7Cit9CisKKy8vIFRlc3RzIGNvbnN0cnVjdGluZyBhIHR1
cGxlIGZyb20gYW5vdGhlciB0dXBsZSB0aGF0IGhhcyBhIGNvbXBhdGlibGUKKy8vIGJ1dCBkaWZm
ZXJlbnQgdHlwZS4KK1RFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3QsIENvbnN0cnVjdHNGcm9tRGlm
ZmVyZW50VHVwbGVUeXBlKSB7CisgIHR1cGxlPGludCwgaW50LCBjaGFyPiBhKDAsIDEsICdhJyk7
CisgIHR1cGxlPGRvdWJsZSwgbG9uZywgaW50PiBiKGEpOworCisgIEVYUEVDVF9ET1VCTEVfRVEo
MC4wLCBnZXQ8MD4oYikpOworICBFWFBFQ1RfRVEoMSwgZ2V0PDE+KGIpKTsKKyAgRVhQRUNUX0VR
KCdhJywgZ2V0PDI+KGIpKTsKK30KKworLy8gVGVzdHMgY29uc3RydWN0aW5nIGEgMi10dXBsZSBm
cm9tIGFuIHN0ZDo6cGFpci4KK1RFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3QsIENvbnN0cnVjdHNG
cm9tUGFpcikgeworICA6OnN0ZDo6cGFpcjxpbnQsIGNoYXI+IGEoMSwgJ2EnKTsKKyAgdHVwbGU8
aW50LCBjaGFyPiBiKGEpOworICB0dXBsZTxpbnQsIGNvbnN0IGNoYXImPiBjKGEpOworfQorCisv
LyBUZXN0cyBhc3NpZ25pbmcgYSB0dXBsZSB0byBhbm90aGVyIHR1cGxlIHdpdGggdGhlIHNhbWUg
dHlwZS4KK1RFU1QoVHVwbGVBc3NpZ25tZW50VGVzdCwgQXNzaWduc1RvU2FtZVR1cGxlVHlwZSkg
eworICBjb25zdCB0dXBsZTxpbnQsIGxvbmc+IGEoNSwgN0wpOworICB0dXBsZTxpbnQsIGxvbmc+
IGI7CisgIGIgPSBhOworICBFWFBFQ1RfRVEoNSwgZ2V0PDA+KGIpKTsKKyAgRVhQRUNUX0VRKDdM
LCBnZXQ8MT4oYikpOworfQorCisvLyBUZXN0cyBhc3NpZ25pbmcgYSB0dXBsZSB0byBhbm90aGVy
IHR1cGxlIHdpdGggYSBkaWZmZXJlbnQgYnV0CisvLyBjb21wYXRpYmxlIHR5cGUuCitURVNUKFR1
cGxlQXNzaWdubWVudFRlc3QsIEFzc2lnbnNUb0RpZmZlcmVudFR1cGxlVHlwZSkgeworICBjb25z
dCB0dXBsZTxpbnQsIGxvbmcsIGJvb2w+IGEoMSwgN0wsIHRydWUpOworICB0dXBsZTxsb25nLCBp
bnQsIGJvb2w+IGI7CisgIGIgPSBhOworICBFWFBFQ1RfRVEoMUwsIGdldDwwPihiKSk7CisgIEVY
UEVDVF9FUSg3LCBnZXQ8MT4oYikpOworICBFWFBFQ1RfVFJVRShnZXQ8Mj4oYikpOworfQorCisv
LyBUZXN0cyBhc3NpZ25pbmcgYW4gc3RkOjpwYWlyIHRvIGEgMi10dXBsZS4KK1RFU1QoVHVwbGVB
c3NpZ25tZW50VGVzdCwgQXNzaWduc0Zyb21QYWlyKSB7CisgIGNvbnN0IDo6c3RkOjpwYWlyPGlu
dCwgYm9vbD4gYSg1LCB0cnVlKTsKKyAgdHVwbGU8aW50LCBib29sPiBiOworICBiID0gYTsKKyAg
RVhQRUNUX0VRKDUsIGdldDwwPihiKSk7CisgIEVYUEVDVF9UUlVFKGdldDwxPihiKSk7CisKKyAg
dHVwbGU8bG9uZywgYm9vbD4gYzsKKyAgYyA9IGE7CisgIEVYUEVDVF9FUSg1TCwgZ2V0PDA+KGMp
KTsKKyAgRVhQRUNUX1RSVUUoZ2V0PDE+KGMpKTsKK30KKworLy8gQSBmaXh0dXJlIGZvciB0ZXN0
aW5nIGJpZyB0dXBsZXMuCitjbGFzcyBCaWdUdXBsZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CisgcHJvdGVjdGVkOgorICB0eXBlZGVmIHR1cGxlPGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQsIGludD4gQmlnVHVwbGU7CisKKyAgQmlnVHVwbGVUZXN0KCkg
OgorICAgICAgYV8oMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMiksCisgICAgICBiXygxLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzKSB7fQorCisgIEJpZ1R1cGxlIGFfLCBiXzsKK307CisK
Ky8vIFRlc3RzIGNvbnN0cnVjdGluZyBiaWcgdHVwbGVzLgorVEVTVF9GKEJpZ1R1cGxlVGVzdCwg
Q29uc3RydWN0aW9uKSB7CisgIEJpZ1R1cGxlIGE7CisgIEJpZ1R1cGxlIGIoYl8pOworfQorCisv
LyBUZXN0cyB0aGF0IGdldDxOPih0KSByZXR1cm5zIHRoZSBOLXRoICgwLWJhc2VkKSBmaWVsZCBv
ZiB0dXBsZSB0LgorVEVTVF9GKEJpZ1R1cGxlVGVzdCwgZ2V0KSB7CisgIEVYUEVDVF9FUSgxLCBn
ZXQ8MD4oYV8pKTsKKyAgRVhQRUNUX0VRKDIsIGdldDw5PihhXykpOworCisgIC8vIFRlc3RzIHRo
YXQgZ2V0KCkgd29ya3Mgb24gYSBjb25zdCB0dXBsZSB0b28uCisgIGNvbnN0IEJpZ1R1cGxlIGEo
YV8pOworICBFWFBFQ1RfRVEoMSwgZ2V0PDA+KGEpKTsKKyAgRVhQRUNUX0VRKDIsIGdldDw5Pihh
KSk7Cit9CisKKy8vIFRlc3RzIGNvbXBhcmluZyBiaWcgdHVwbGVzLgorVEVTVF9GKEJpZ1R1cGxl
VGVzdCwgQ29tcGFyaXNvbnMpIHsKKyAgRVhQRUNUX1RSVUUoYV8gPT0gYV8pOworICBFWFBFQ1Rf
RkFMU0UoYV8gIT0gYV8pOworCisgIEVYUEVDVF9UUlVFKGFfICE9IGJfKTsKKyAgRVhQRUNUX0ZB
TFNFKGFfID09IGJfKTsKK30KKworVEVTVChNYWtlVHVwbGVUZXN0LCBXb3Jrc0ZvclNjYWxhclR5
cGVzKSB7CisgIHR1cGxlPGJvb2wsIGludD4gYTsKKyAgYSA9IG1ha2VfdHVwbGUodHJ1ZSwgNSk7
CisgIEVYUEVDVF9UUlVFKGdldDwwPihhKSk7CisgIEVYUEVDVF9FUSg1LCBnZXQ8MT4oYSkpOwor
CisgIHR1cGxlPGNoYXIsIGludCwgbG9uZz4gYjsKKyAgYiA9IG1ha2VfdHVwbGUoJ2EnLCAnYics
IDUpOworICBFWFBFQ1RfRVEoJ2EnLCBnZXQ8MD4oYikpOworICBFWFBFQ1RfRVEoJ2InLCBnZXQ8
MT4oYikpOworICBFWFBFQ1RfRVEoNSwgZ2V0PDI+KGIpKTsKK30KKworVEVTVChNYWtlVHVwbGVU
ZXN0LCBXb3Jrc0ZvclBvaW50ZXJzKSB7CisgIGludCBhW10gPSB7IDEsIDIsIDMsIDQgfTsKKyAg
Y29uc3QgY2hhciogY29uc3Qgc3RyID0gImhpIjsKKyAgaW50KiBjb25zdCBwID0gYTsKKworICB0
dXBsZTxjb25zdCBjaGFyKiwgaW50Kj4gdDsKKyAgdCA9IG1ha2VfdHVwbGUoc3RyLCBwKTsKKyAg
RVhQRUNUX0VRKHN0ciwgZ2V0PDA+KHQpKTsKKyAgRVhQRUNUX0VRKHAsIGdldDwxPih0KSk7Cit9
CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9nb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3QucHkKbmV3IGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWI3ZDFlNzRmNjdmY2IwMGNiODQ4NTU3OTY3ZGVmNGY2YTU2Y2M4ZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC11bmluaXRpYWxpemVk
LXRlc3QucHkKQEAgLTAsMCArMSw2NyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENv
cHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworIiIiVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCB3YXJucyB0aGUgdXNl
ciB3aGVuIG5vdCBpbml0aWFsaXplZCBwcm9wZXJseS4iIiIKKworaW1wb3J0IGd0ZXN0X3Rlc3Rf
dXRpbHMKKworQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRo
KCdnb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdF8nKQorCisKK2RlZiBBc3NlcnQoY29uZGl0
aW9uKToKKyAgaWYgbm90IGNvbmRpdGlvbjoKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCisK
K2RlZiBBc3NlcnRFcShleHBlY3RlZCwgYWN0dWFsKToKKyAgaWYgZXhwZWN0ZWQgIT0gYWN0dWFs
OgorICAgIHByaW50ICdFeHBlY3RlZDogJXMnICUgKGV4cGVjdGVkLCkKKyAgICBwcmludCAnICBB
Y3R1YWw6ICVzJyAlIChhY3R1YWwsKQorICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisKKworZGVm
IFRlc3RFeGl0Q29kZUFuZE91dHB1dChjb21tYW5kKToKKyAgIiIiUnVucyB0aGUgZ2l2ZW4gY29t
bWFuZCBhbmQgdmVyaWZpZXMgaXRzIGV4aXQgY29kZSBhbmQgb3V0cHV0LiIiIgorCisgICMgVmVy
aWZpZXMgdGhhdCAnY29tbWFuZCcgZXhpdHMgd2l0aCBjb2RlIDEuCisgIHAgPSBndGVzdF90ZXN0
X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKKyAgaWYgcC5leGl0ZWQgYW5kIHAuZXhpdF9jb2Rl
ID09IDA6CisgICAgQXNzZXJ0KCdJTVBPUlRBTlQgTk9USUNFJyBpbiBwLm91dHB1dCk7CisgIEFz
c2VydCgnSW5pdEdvb2dsZVRlc3QnIGluIHAub3V0cHV0KQorCisKK2NsYXNzIEdUZXN0VW5pbml0
aWFsaXplZFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgIGRlZiB0ZXN0RXhpdENv
ZGVBbmRPdXRwdXQoc2VsZik6CisgICAgVGVzdEV4aXRDb2RlQW5kT3V0cHV0KENPTU1BTkQpCisK
KworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC11bmlu
aXRpYWxpemVkLXRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ0MzRkNTFlZWJmZDg3MjZi
ZDNmMDRjMmQwNDI2YmJhOTYwMjk4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3RfLmNjCkBAIC0wLDAg
KzEsNDIgQEAKKy8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8v
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8g
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
Ky8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworVEVTVChEdW1teVRlc3QsIER1bW15KSB7Cisg
IC8vIFRoaXMgdGVzdCBkb2Vzbid0IHZlcmlmeSBhbnl0aGluZy4gIFdlIGp1c3QgbmVlZCBpdCB0
byBjcmVhdGUgYQorICAvLyByZWFsaXN0aWMgc3RhZ2UgZm9yIHRlc3RpbmcgdGhlIGJlaGF2aW9y
IG9mIEdvb2dsZSBUZXN0IHdoZW4KKyAgLy8gUlVOX0FMTF9URVNUUygpIGlzIGNhbGxlZCB3aXRo
b3V0CisgIC8vIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCkgYmVpbmcgY2FsbGVkIGZpcnN0Lgor
fQorCitpbnQgbWFpbigpIHsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdF90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2MK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkNWI1M2I3MWFmMmY3OTU2MGQ3MTcyYWE2
N2NjNzQwYmE3MDQwMTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3Qu
Y2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1LCBH
b29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
Ly8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tICha
aGFueW9uZyBXYW4pCi0vLwotLy8gVGVzdHMgZm9yIGRlYXRoIHRlc3RzLgotCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5j
bHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaD4KLQotdXNpbmcgdGVzdGluZzo6
aW50ZXJuYWw6OkFsd2F5c0ZhbHNlOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1Ry
dWU7Ci0KLSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwot
I2luY2x1ZGUgPGRpcmVjdC5oPiAgICAgICAgICAvLyBGb3IgY2hkaXIoKS4KLSNlbHNlCi0jaW5j
bHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8c3lzL3dhaXQuaD4gICAgICAgIC8vIEZvciB3YWl0
cGlkLgotI2luY2x1ZGUgPGxpbWl0cz4gICAgICAgICAgICAvLyBGb3Igc3RkOjpudW1lcmljX2xp
bWl0cy4KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0jaW5jbHVkZSA8bGltaXRzLmg+
Ci0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLQotI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0LXNwaS5oPgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVu
aXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3Qg
Y29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVy
ZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50
IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmgg
aW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQotI2luY2x1
ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElP
Tl8KLQotbmFtZXNwYWNlIHBvc2l4ID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg7Ci0KLXVz
aW5nIHRlc3Rpbmc6Ok1lc3NhZ2U7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0
OwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVzdEZhY3Rvcnk7Ci11c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6RmlsZVBhdGg7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0TGFz
dEVycm5vRGVzY3JpcHRpb247Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VW5pdFRlc3RJ
bXBsOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlBhcnNlTmF0dXJhbE51bWJlcjsKLXVzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmc7Ci0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVz
cGFjZSBpbnRlcm5hbCB7Ci0KLS8vIEEgaGVscGVyIGNsYXNzIHdob3NlIG9iamVjdHMgcmVwbGFj
ZSB0aGUgZGVhdGggdGVzdCBmYWN0b3J5IGZvciBhCi0vLyBzaW5nbGUgVW5pdFRlc3Qgb2JqZWN0
IGR1cmluZyB0aGVpciBsaWZldGltZXMuCi1jbGFzcyBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSB7
Ci0gcHVibGljOgotICBleHBsaWNpdCBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeShEZWF0aFRlc3RG
YWN0b3J5KiBuZXdfZmFjdG9yeSkKLSAgICAgIDogdW5pdF90ZXN0X2ltcGxfKEdldFVuaXRUZXN0
SW1wbCgpKSB7Ci0gICAgb2xkX2ZhY3RvcnlfID0gdW5pdF90ZXN0X2ltcGxfLT5kZWF0aF90ZXN0
X2ZhY3RvcnlfLnJlbGVhc2UoKTsKLSAgICB1bml0X3Rlc3RfaW1wbF8tPmRlYXRoX3Rlc3RfZmFj
dG9yeV8ucmVzZXQobmV3X2ZhY3RvcnkpOwotICB9Ci0KLSAgflJlcGxhY2VEZWF0aFRlc3RGYWN0
b3J5KCkgewotICAgIHVuaXRfdGVzdF9pbXBsXy0+ZGVhdGhfdGVzdF9mYWN0b3J5Xy5yZWxlYXNl
KCk7Ci0gICAgdW5pdF90ZXN0X2ltcGxfLT5kZWF0aF90ZXN0X2ZhY3RvcnlfLnJlc2V0KG9sZF9m
YWN0b3J5Xyk7Ci0gIH0KLSBwcml2YXRlOgotICAvLyBQcmV2ZW50cyBjb3B5aW5nIFJlcGxhY2VE
ZWF0aFRlc3RGYWN0b3J5IG9iamVjdHMuCi0gIFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KGNvbnN0
IFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5Jik7Ci0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFJlcGxh
Y2VEZWF0aFRlc3RGYWN0b3J5Jik7Ci0KLSAgVW5pdFRlc3RJbXBsKiB1bml0X3Rlc3RfaW1wbF87
Ci0gIERlYXRoVGVzdEZhY3RvcnkqIG9sZF9mYWN0b3J5XzsKLX07Ci0KLX0gIC8vIG5hbWVzcGFj
ZSBpbnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotdm9pZCBEaWVJbnNpZGUoY29u
c3QgY2hhciogZnVuY3Rpb24pIHsKLSAgZnByaW50ZihzdGRlcnIsICJkZWF0aCBpbnNpZGUgJXMo
KS4iLCBmdW5jdGlvbik7Ci0gIGZmbHVzaChzdGRlcnIpOwotICAvLyBXZSBjYWxsIF9leGl0KCkg
aW5zdGVhZCBvZiBleGl0KCksIGFzIHRoZSBmb3JtZXIgaXMgYSBkaXJlY3QKLSAgLy8gc3lzdGVt
IGNhbGwgYW5kIHRodXMgc2FmZXIgaW4gdGhlIHByZXNlbmNlIG9mIHRocmVhZHMuICBleGl0KCkK
LSAgLy8gd2lsbCBpbnZva2UgdXNlci1kZWZpbmVkIGV4aXQtaG9va3MsIHdoaWNoIG1heSBkbyBk
YW5nZXJvdXMKLSAgLy8gdGhpbmdzIHRoYXQgY29uZmxpY3Qgd2l0aCBkZWF0aCB0ZXN0cy4KLSAg
Ly8KLSAgLy8gU29tZSBjb21waWxlcnMgY2FuIHJlY29nbml6ZSB0aGF0IF9leGl0KCkgbmV2ZXIg
cmV0dXJucyBhbmQgaXNzdWUgdGhlCi0gIC8vICd1bnJlYWNoYWJsZSBjb2RlJyB3YXJuaW5nIGZv
ciBjb2RlIGZvbGxvd2luZyB0aGlzIGZ1bmN0aW9uLCB1bmxlc3MKLSAgLy8gZm9vbGVkIGJ5IGEg
ZmFrZSBjb25kaXRpb24uCi0gIGlmIChBbHdheXNUcnVlKCkpCi0gICAgX2V4aXQoMSk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgZGVhdGggdGVzdHMgd29yay4KLQotY2xhc3MgVGVzdEZvckRlYXRoVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIFRlc3RGb3JEZWF0aFRl
c3QoKSA6IG9yaWdpbmFsX2Rpcl8oRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKSkge30KLQotICB2
aXJ0dWFsIH5UZXN0Rm9yRGVhdGhUZXN0KCkgewotICAgIHBvc2l4OjpDaERpcihvcmlnaW5hbF9k
aXJfLmNfc3RyKCkpOwotICB9Ci0KLSAgLy8gQSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uIHRoYXQn
cyBleHBlY3RlZCB0byBkaWUuCi0gIHN0YXRpYyB2b2lkIFN0YXRpY01lbWJlckZ1bmN0aW9uKCkg
eyBEaWVJbnNpZGUoIlN0YXRpY01lbWJlckZ1bmN0aW9uIik7IH0KLQotICAvLyBBIG1ldGhvZCBv
ZiB0aGUgdGVzdCBmaXh0dXJlIHRoYXQgbWF5IGRpZS4KLSAgdm9pZCBNZW1iZXJGdW5jdGlvbigp
IHsKLSAgICBpZiAoc2hvdWxkX2RpZV8pCi0gICAgICBEaWVJbnNpZGUoIk1lbWJlckZ1bmN0aW9u
Iik7Ci0gIH0KLQotICAvLyBUcnVlIGlmZiBNZW1iZXJGdW5jdGlvbigpIHNob3VsZCBkaWUuCi0g
IGJvb2wgc2hvdWxkX2RpZV87Ci0gIGNvbnN0IEZpbGVQYXRoIG9yaWdpbmFsX2Rpcl87Ci19Owot
Ci0vLyBBIGNsYXNzIHdpdGggYSBtZW1iZXIgZnVuY3Rpb24gdGhhdCBtYXkgZGllLgotY2xhc3Mg
TWF5RGllIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IE1heURpZShib29sIHNob3VsZF9kaWUpIDog
c2hvdWxkX2RpZV8oc2hvdWxkX2RpZSkge30KLQotICAvLyBBIG1lbWJlciBmdW5jdGlvbiB0aGF0
IG1heSBkaWUuCi0gIHZvaWQgTWVtYmVyRnVuY3Rpb24oKSBjb25zdCB7Ci0gICAgaWYgKHNob3Vs
ZF9kaWVfKQotICAgICAgRGllSW5zaWRlKCJNYXlEaWU6Ok1lbWJlckZ1bmN0aW9uIik7Ci0gIH0K
LQotIHByaXZhdGU6Ci0gIC8vIFRydWUgaWZmIE1lbWJlckZ1bmN0aW9uKCkgc2hvdWxkIGRpZS4K
LSAgYm9vbCBzaG91bGRfZGllXzsKLX07Ci0KLS8vIEEgZ2xvYmFsIGZ1bmN0aW9uIHRoYXQncyBl
eHBlY3RlZCB0byBkaWUuCi12b2lkIEdsb2JhbEZ1bmN0aW9uKCkgeyBEaWVJbnNpZGUoIkdsb2Jh
bEZ1bmN0aW9uIik7IH0KLQotLy8gQSBub24tdm9pZCBmdW5jdGlvbiB0aGF0J3MgZXhwZWN0ZWQg
dG8gZGllLgotaW50IE5vblZvaWRGdW5jdGlvbigpIHsKLSAgRGllSW5zaWRlKCJOb25Wb2lkRnVu
Y3Rpb24iKTsKLSAgcmV0dXJuIDE7Ci19Ci0KLS8vIEEgdW5hcnkgZnVuY3Rpb24gdGhhdCBtYXkg
ZGllLgotdm9pZCBEaWVJZihib29sIHNob3VsZF9kaWUpIHsKLSAgaWYgKHNob3VsZF9kaWUpCi0g
ICAgRGllSW5zaWRlKCJEaWVJZiIpOwotfQotCi0vLyBBIGJpbmFyeSBmdW5jdGlvbiB0aGF0IG1h
eSBkaWUuCi1ib29sIERpZUlmTGVzc1RoYW4oaW50IHgsIGludCB5KSB7Ci0gIGlmICh4IDwgeSkg
ewotICAgIERpZUluc2lkZSgiRGllSWZMZXNzVGhhbiIpOwotICB9Ci0gIHJldHVybiB0cnVlOwot
fQotCi0vLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUFUSCBjYW4gYmUgdXNlZCBvdXRzaWRlIGEgVEVT
VCwgVEVTVF9GLCBvciB0ZXN0IGZpeHR1cmUuCi12b2lkIERlYXRoVGVzdFN1YnJvdXRpbmUoKSB7
Ci0gIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCAiZGVhdGguKkdsb2JhbEZ1bmN0aW9u
Iik7Ci0gIEFTU0VSVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCAiZGVhdGguKkdsb2JhbEZ1bmN0
aW9uIik7Ci19Ci0KLS8vIERlYXRoIGluIGRiZywgbm90IG9wdC4KLWludCBEaWVJbkRlYnVnRWxz
ZTEyKGludCogc2lkZWVmZmVjdCkgewotICBpZiAoc2lkZWVmZmVjdCkgKnNpZGVlZmZlY3QgPSAx
MjsKLSNpZm5kZWYgTkRFQlVHCi0gIERpZUluc2lkZSgiRGllSW5EZWJ1Z0Vsc2UxMiIpOwotI2Vu
ZGlmICAvLyBOREVCVUcKLSAgcmV0dXJuIDEyOwotfQotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwot
Ci0vLyBUZXN0cyB0aGUgRXhpdGVkV2l0aENvZGUgcHJlZGljYXRlLgotVEVTVChFeGl0U3RhdHVz
UHJlZGljYXRlVGVzdCwgRXhpdGVkV2l0aENvZGUpIHsKLSAgLy8gT24gV2luZG93cywgdGhlIHBy
b2Nlc3MncyBleGl0IGNvZGUgaXMgdGhlIHNhbWUgYXMgaXRzIGV4aXQgc3RhdHVzLAotICAvLyBz
byB0aGUgcHJlZGljYXRlIGp1c3QgY29tcGFyZXMgdGhlIGl0cyBpbnB1dCB3aXRoIGl0cyBwYXJh
bWV0ZXIuCi0gIEVYUEVDVF9UUlVFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApKDApKTsKLSAg
RVhQRUNUX1RSVUUodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSkoMSkpOwotICBFWFBFQ1RfVFJV
RSh0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSg0MikoNDIpKTsKLSAgRVhQRUNUX0ZBTFNFKHRlc3Rp
bmc6OkV4aXRlZFdpdGhDb2RlKDApKDEpKTsKLSAgRVhQRUNUX0ZBTFNFKHRlc3Rpbmc6OkV4aXRl
ZFdpdGhDb2RlKDEpKDApKTsKLX0KLQotI2Vsc2UKLQotLy8gUmV0dXJucyB0aGUgZXhpdCBzdGF0
dXMgb2YgYSBwcm9jZXNzIHRoYXQgY2FsbHMgX2V4aXQoMikgd2l0aCBhCi0vLyBnaXZlbiBleGl0
IGNvZGUuICBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGUKLS8vIEV4aXRTdGF0dXNQ
cmVkaWNhdGVUZXN0IHRlc3Qgc3VpdGUuCi1zdGF0aWMgaW50IE5vcm1hbEV4aXRTdGF0dXMoaW50
IGV4aXRfY29kZSkgewotICBwaWRfdCBjaGlsZF9waWQgPSBmb3JrKCk7Ci0gIGlmIChjaGlsZF9w
aWQgPT0gMCkgewotICAgIF9leGl0KGV4aXRfY29kZSk7Ci0gIH0KLSAgaW50IHN0YXR1czsKLSAg
d2FpdHBpZChjaGlsZF9waWQsICZzdGF0dXMsIDApOwotICByZXR1cm4gc3RhdHVzOwotfQotCi0v
LyBSZXR1cm5zIHRoZSBleGl0IHN0YXR1cyBvZiBhIHByb2Nlc3MgdGhhdCByYWlzZXMgYSBnaXZl
biBzaWduYWwuCi0vLyBJZiB0aGUgc2lnbmFsIGRvZXMgbm90IGNhdXNlIHRoZSBwcm9jZXNzIHRv
IGRpZSwgdGhlbiBpdCByZXR1cm5zCi0vLyBpbnN0ZWFkIHRoZSBleGl0IHN0YXR1cyBvZiBhIHBy
b2Nlc3MgdGhhdCBleGl0cyBub3JtYWxseSB3aXRoIGV4aXQKLS8vIGNvZGUgMS4gIFRoaXMgaXMg
YSBoZWxwZXIgZnVuY3Rpb24gZm9yIHRoZSBFeGl0U3RhdHVzUHJlZGljYXRlVGVzdAotLy8gdGVz
dCBzdWl0ZS4KLXN0YXRpYyBpbnQgS2lsbGVkRXhpdFN0YXR1cyhpbnQgc2lnbnVtKSB7Ci0gIHBp
ZF90IGNoaWxkX3BpZCA9IGZvcmsoKTsKLSAgaWYgKGNoaWxkX3BpZCA9PSAwKSB7Ci0gICAgcmFp
c2Uoc2lnbnVtKTsKLSAgICBfZXhpdCgxKTsKLSAgfQotICBpbnQgc3RhdHVzOwotICB3YWl0cGlk
KGNoaWxkX3BpZCwgJnN0YXR1cywgMCk7Ci0gIHJldHVybiBzdGF0dXM7Ci19Ci0KLS8vIFRlc3Rz
IHRoZSBFeGl0ZWRXaXRoQ29kZSBwcmVkaWNhdGUuCi1URVNUKEV4aXRTdGF0dXNQcmVkaWNhdGVU
ZXN0LCBFeGl0ZWRXaXRoQ29kZSkgewotICBjb25zdCBpbnQgc3RhdHVzMCAgPSBOb3JtYWxFeGl0
U3RhdHVzKDApOwotICBjb25zdCBpbnQgc3RhdHVzMSAgPSBOb3JtYWxFeGl0U3RhdHVzKDEpOwot
ICBjb25zdCBpbnQgc3RhdHVzNDIgPSBOb3JtYWxFeGl0U3RhdHVzKDQyKTsKLSAgY29uc3QgdGVz
dGluZzo6RXhpdGVkV2l0aENvZGUgcHJlZDAoMCk7Ci0gIGNvbnN0IHRlc3Rpbmc6OkV4aXRlZFdp
dGhDb2RlIHByZWQxKDEpOwotICBjb25zdCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSBwcmVkNDIo
NDIpOwotICBFWFBFQ1RfUFJFRDEocHJlZDAsICBzdGF0dXMwKTsKLSAgRVhQRUNUX1BSRUQxKHBy
ZWQxLCAgc3RhdHVzMSk7Ci0gIEVYUEVDVF9QUkVEMShwcmVkNDIsIHN0YXR1czQyKTsKLSAgRVhQ
RUNUX0ZBTFNFKHByZWQwKHN0YXR1czEpKTsKLSAgRVhQRUNUX0ZBTFNFKHByZWQ0MihzdGF0dXMw
KSk7Ci0gIEVYUEVDVF9GQUxTRShwcmVkMShzdGF0dXM0MikpOwotfQotCi0vLyBUZXN0cyB0aGUg
S2lsbGVkQnlTaWduYWwgcHJlZGljYXRlLgotVEVTVChFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCwg
S2lsbGVkQnlTaWduYWwpIHsKLSAgY29uc3QgaW50IHN0YXR1c19zZWd2ID0gS2lsbGVkRXhpdFN0
YXR1cyhTSUdTRUdWKTsKLSAgY29uc3QgaW50IHN0YXR1c19raWxsID0gS2lsbGVkRXhpdFN0YXR1
cyhTSUdLSUxMKTsKLSAgY29uc3QgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwgcHJlZF9zZWd2KFNJ
R1NFR1YpOwotICBjb25zdCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbCBwcmVkX2tpbGwoU0lHS0lM
TCk7Ci0gIEVYUEVDVF9QUkVEMShwcmVkX3NlZ3YsIHN0YXR1c19zZWd2KTsKLSAgRVhQRUNUX1BS
RUQxKHByZWRfa2lsbCwgc3RhdHVzX2tpbGwpOwotICBFWFBFQ1RfRkFMU0UocHJlZF9zZWd2KHN0
YXR1c19raWxsKSk7Ci0gIEVYUEVDVF9GQUxTRShwcmVkX2tpbGwoc3RhdHVzX3NlZ3YpKTsKLX0K
LQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLS8vIFRlc3RzIHRoYXQgdGhlIGRlYXRo
IHRlc3QgbWFjcm9zIGV4cGFuZCB0byBjb2RlIHdoaWNoIG1heSBvciBtYXkgbm90Ci0vLyBiZSBm
b2xsb3dlZCBieSBvcGVyYXRvcjw8LCBhbmQgdGhhdCBpbiBlaXRoZXIgY2FzZSB0aGUgY29tcGxl
dGUgdGV4dAotLy8gY29tcHJpc2VzIG9ubHkgYSBzaW5nbGUgQysrIHN0YXRlbWVudC4KLVRFU1Rf
RihUZXN0Rm9yRGVhdGhUZXN0LCBTaW5nbGVTdGF0ZW1lbnQpIHsKLSAgaWYgKEFsd2F5c0ZhbHNl
KCkpCi0gICAgLy8gVGhpcyB3b3VsZCBmYWlsIGlmIGV4ZWN1dGVkOyB0aGlzIGlzIGEgY29tcGls
YXRpb24gdGVzdCBvbmx5Ci0gICAgQVNTRVJUX0RFQVRIKHJldHVybiwgIiIpOwotCi0gIGlmIChB
bHdheXNUcnVlKCkpCi0gICAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci0gIGVsc2UKLSAg
ICAvLyBUaGlzIGVtcHR5ICJlbHNlIiBicmFuY2ggaXMgbWVhbnQgdG8gZW5zdXJlIHRoYXQgRVhQ
RUNUX0RFQVRICi0gICAgLy8gZG9lc24ndCBleHBhbmQgaW50byBhbiAiaWYiIHN0YXRlbWVudCB3
aXRob3V0IGFuICJlbHNlIgotICAgIDsKLQotICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAgICBBU1NF
UlRfREVBVEgocmV0dXJuLCAiIikgPDwgImRpZCBub3QgZGllIjsKLQotICBpZiAoQWx3YXlzRmFs
c2UoKSkKLSAgICA7Ci0gIGVsc2UKLSAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKSA8PCAx
IDw8IDIgPDwgMzsKLX0KLQotdm9pZCBEaWVXaXRoRW1iZWRkZWROdWwoKSB7Ci0gIGZwcmludGYo
c3RkZXJyLCAiSGVsbG8lY215IG51bGwgd29ybGQuXG4iLCAnXDAnKTsKLSAgZmZsdXNoKHN0ZGVy
cik7Ci0gIF9leGl0KDEpOwotfQotCi0jaWYgR1RFU1RfVVNFU19QQ1JFCi0vLyBUZXN0cyB0aGF0
IEVYUEVDVF9ERUFUSCBhbmQgQVNTRVJUX0RFQVRIIHdvcmsgd2hlbiB0aGUgZXJyb3IKLS8vIG1l
c3NhZ2UgaGFzIGEgTlVMIGNoYXJhY3RlciBpbiBpdC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0
LCBFbWJlZGRlZE51bEluTWVzc2FnZSkgewotICAvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogPHJl
Z2V4Lmg+IGRvZXNuJ3Qgc3VwcG9ydCBtYXRjaGluZyBzdHJpbmdzCi0gIC8vIHdpdGggZW1iZWRk
ZWQgTlVMIGNoYXJhY3RlcnMgLSBmaW5kIGEgd2F5IHRvIHdvcmthcm91bmQgaXQuCi0gIEVYUEVD
VF9ERUFUSChEaWVXaXRoRW1iZWRkZWROdWwoKSwgIm15IG51bGwgd29ybGQiKTsKLSAgQVNTRVJU
X0RFQVRIKERpZVdpdGhFbWJlZGRlZE51bCgpLCAibXkgbnVsbCB3b3JsZCIpOwotfQotI2VuZGlm
ICAvLyBHVEVTVF9VU0VTX1BDUkUKLQotLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0IG1hY3JvcyBl
eHBhbmQgdG8gY29kZSB3aGljaCBpbnRlcmFjdHMgd2VsbCB3aXRoIHN3aXRjaAotLy8gc3RhdGVt
ZW50cy4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTd2l0Y2hTdGF0ZW1lbnQpIHsKLS8vIE1p
Y3Jvc29mdCBjb21waWxlciB1c3VhbGx5IGNvbXBsYWlucyBhYm91dCBzd2l0Y2ggc3RhdGVtZW50
cyB3aXRob3V0Ci0vLyBjYXNlIGxhYmVscy4gV2Ugc3VwcHJlc3MgdGhhdCB3YXJuaW5nIGZvciB0
aGlzIHRlc3QuCi0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdt
YSB3YXJuaW5nKGRpc2FibGU6IDQwNjUpCi0jZW5kaWYgIC8vIF9NU0NfVkVSCi0KLSAgc3dpdGNo
ICgwKQotICAgIGRlZmF1bHQ6Ci0gICAgICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIiKSA8PCAi
ZXhpdCBpbiBkZWZhdWx0IHN3aXRjaCBoYW5kbGVyIjsKLQotICBzd2l0Y2ggKDApCi0gICAgY2Fz
ZSAwOgotICAgICAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgImV4aXQgaW4gc3dpdGNo
IGNhc2UiOwotCi0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYg
IC8vIF9NU0NfVkVSCi19Ci0KLS8vIFRlc3RzIHRoYXQgYSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9u
IGNhbiBiZSB1c2VkIGluIGEgImZhc3QiIHN0eWxlCi0vLyBkZWF0aCB0ZXN0LgotVEVTVF9GKFRl
c3RGb3JEZWF0aFRlc3QsIFN0YXRpY01lbWJlckZ1bmN0aW9uRmFzdFN0eWxlKSB7Ci0gIHRlc3Rp
bmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7Ci0gIEFTU0VSVF9ERUFU
SChTdGF0aWNNZW1iZXJGdW5jdGlvbigpLCAiZGVhdGguKlN0YXRpY01lbWJlciIpOwotfQotCi0v
LyBUZXN0cyB0aGF0IGEgbWV0aG9kIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2FuIGJlIHVzZWQgaW4g
YSAiZmFzdCIKLS8vIHN0eWxlIGRlYXRoIHRlc3QuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
TWVtYmVyRnVuY3Rpb25GYXN0U3R5bGUpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90
ZXN0X3N0eWxlKSA9ICJmYXN0IjsKLSAgc2hvdWxkX2RpZV8gPSB0cnVlOwotICBFWFBFQ1RfREVB
VEgoTWVtYmVyRnVuY3Rpb24oKSwgImluc2lkZS4qTWVtYmVyRnVuY3Rpb24iKTsKLX0KLQotdm9p
ZCBDaGFuZ2VUb1Jvb3REaXIoKSB7IHBvc2l4OjpDaERpcihHVEVTVF9QQVRIX1NFUF8pOyB9Ci0K
LS8vIFRlc3RzIHRoYXQgZGVhdGggdGVzdHMgd29yayBldmVuIGlmIHRoZSBjdXJyZW50IGRpcmVj
dG9yeSBoYXMgYmVlbgotLy8gY2hhbmdlZC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBGYXN0
RGVhdGhUZXN0SW5DaGFuZ2VkRGlyKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVz
dF9zdHlsZSkgPSAiZmFzdCI7Ci0KLSAgQ2hhbmdlVG9Sb290RGlyKCk7Ci0gIEVYUEVDVF9FWElU
KF9leGl0KDEpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSwgIiIpOwotCi0gIENoYW5nZVRv
Um9vdERpcigpOwotICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIiKTsKLX0KLQotLy8gUmVwZWF0
cyBhIHJlcHJlc2VudGF0aXZlIHNhbXBsZSBvZiBkZWF0aCB0ZXN0cyBpbiB0aGUgInRocmVhZHNh
ZmUiIHN0eWxlOgotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU3RhdGljTWVtYmVyRnVuY3Rp
b25UaHJlYWRzYWZlU3R5bGUpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0
eWxlKSA9ICJ0aHJlYWRzYWZlIjsKLSAgQVNTRVJUX0RFQVRIKFN0YXRpY01lbWJlckZ1bmN0aW9u
KCksICJkZWF0aC4qU3RhdGljTWVtYmVyIik7Ci19Ci0KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0
LCBNZW1iZXJGdW5jdGlvblRocmVhZHNhZmVTdHlsZSkgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFH
KGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOwotICBzaG91bGRfZGllXyA9IHRydWU7
Ci0gIEVYUEVDVF9ERUFUSChNZW1iZXJGdW5jdGlvbigpLCAiaW5zaWRlLipNZW1iZXJGdW5jdGlv
biIpOwotfQotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgVGhyZWFkc2FmZURlYXRoVGVzdElu
TG9vcCkgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVh
ZHNhZmUiOwotCi0gIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKQotICAgIEVYUEVDVF9FWElU
KF9leGl0KGkpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZShpKSwgIiIpIDw8ICI6IGkgPSAiIDw8
IGk7Ci19Ci0KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUaHJlYWRzYWZlRGVhdGhUZXN0SW5D
aGFuZ2VkRGlyKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAi
dGhyZWFkc2FmZSI7Ci0KLSAgQ2hhbmdlVG9Sb290RGlyKCk7Ci0gIEVYUEVDVF9FWElUKF9leGl0
KDEpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSwgIiIpOwotCi0gIENoYW5nZVRvUm9vdERp
cigpOwotICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIiKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JE
ZWF0aFRlc3QsIE1peGVkU3R5bGVzKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVz
dF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7Ci0gIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOwot
ICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOwotICBFWFBF
Q1RfREVBVEgoX2V4aXQoMSksICIiKTsKLX0KLQotbmFtZXNwYWNlIHsKLQotYm9vbCBwdGhyZWFk
X2ZsYWc7Ci0KLXZvaWQgU2V0UHRocmVhZEZsYWcoKSB7Ci0gIHB0aHJlYWRfZmxhZyA9IHRydWU7
Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi0jaWYgR1RFU1RfSEFTX0NMT05FICYmIEdURVNUX0hB
U19QVEhSRUFECi0KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEb2VzTm90RXhlY3V0ZUF0Zm9y
a0hvb2tzKSB7Ci0gIGlmICghdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3Jr
KSkgewotICAgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFk
c2FmZSI7Ci0gICAgcHRocmVhZF9mbGFnID0gZmFsc2U7Ci0gICAgQVNTRVJUX0VRKDAsIHB0aHJl
YWRfYXRmb3JrKCZTZXRQdGhyZWFkRmxhZywgTlVMTCwgTlVMTCkpOwotICAgIEFTU0VSVF9ERUFU
SChfZXhpdCgxKSwgIiIpOwotICAgIEFTU0VSVF9GQUxTRShwdGhyZWFkX2ZsYWcpOwotICB9Ci19
Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NMT05FICYmIEdURVNUX0hBU19QVEhSRUFECi0KLS8v
IFRlc3RzIHRoYXQgYSBtZXRob2Qgb2YgYW5vdGhlciBjbGFzcyBjYW4gYmUgdXNlZCBpbiBhIGRl
YXRoIHRlc3QuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgTWV0aG9kT2ZBbm90aGVyQ2xhc3Mp
IHsKLSAgY29uc3QgTWF5RGllIHgodHJ1ZSk7Ci0gIEFTU0VSVF9ERUFUSCh4Lk1lbWJlckZ1bmN0
aW9uKCksICJNYXlEaWVcXDpcXDpNZW1iZXJGdW5jdGlvbiIpOwotfQotCi0vLyBUZXN0cyB0aGF0
IGEgZ2xvYmFsIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KLVRFU1RfRihU
ZXN0Rm9yRGVhdGhUZXN0LCBHbG9iYWxGdW5jdGlvbikgewotICBFWFBFQ1RfREVBVEgoR2xvYmFs
RnVuY3Rpb24oKSwgIkdsb2JhbEZ1bmN0aW9uIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYW55IHZh
bHVlIGNvbnZlcnRpYmxlIHRvIGFuIFJFIHdvcmtzIGFzIGEgc2Vjb25kCi0vLyBhcmd1bWVudCB0
byBFWFBFQ1RfREVBVEguCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQWNjZXB0c0FueXRoaW5n
Q29udmVydGlibGVUb1JFKSB7Ci0gIHN0YXRpYyBjb25zdCBjaGFyIHJlZ2V4X2Nfc3RyW10gPSAi
R2xvYmFsRnVuY3Rpb24iOwotICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXhf
Y19zdHIpOwotCi0gIGNvbnN0IHRlc3Rpbmc6OmludGVybmFsOjpSRSByZWdleChyZWdleF9jX3N0
cik7Ci0gIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleCk7Ci0KLSNpZiBHVEVT
VF9IQVNfR0xPQkFMX1NUUklORwotICBjb25zdCBzdHJpbmcgcmVnZXhfc3RyKHJlZ2V4X2Nfc3Ry
KTsKLSAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksIHJlZ2V4X3N0cik7Ci0jZW5kaWYg
IC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0KLSAgY29uc3QgOjpzdGQ6OnN0cmluZyByZWdl
eF9zdGRfc3RyKHJlZ2V4X2Nfc3RyKTsKLSAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCks
IHJlZ2V4X3N0ZF9zdHIpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgbm9uLXZvaWQgZnVuY3Rpb24g
Y2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE5v
blZvaWRGdW5jdGlvbikgewotICBBU1NFUlRfREVBVEgoTm9uVm9pZEZ1bmN0aW9uKCksICJOb25W
b2lkRnVuY3Rpb24iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBmdW5jdGlvbnMgdGhhdCB0YWtlIHBh
cmFtZXRlcihzKSBjYW4gYmUgdXNlZCBpbiBhIGRlYXRoIHRlc3QuCi1URVNUX0YoVGVzdEZvckRl
YXRoVGVzdCwgRnVuY3Rpb25XaXRoUGFyYW1ldGVyKSB7Ci0gIEVYUEVDVF9ERUFUSChEaWVJZih0
cnVlKSwgIkRpZUlmXFwoXFwpIik7Ci0gIEVYUEVDVF9ERUFUSChEaWVJZkxlc3NUaGFuKDIsIDMp
LCAiRGllSWZMZXNzVGhhbiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUFUSCBjYW4g
YmUgdXNlZCBvdXRzaWRlIGEgVEVTVCwgVEVTVF9GLCBvciB0ZXN0IGZpeHR1cmUuCi1URVNUX0Yo
VGVzdEZvckRlYXRoVGVzdCwgT3V0c2lkZUZpeHR1cmUpIHsKLSAgRGVhdGhUZXN0U3Vicm91dGlu
ZSgpOwotfQotCi0vLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIGNhbiBiZSBkb25lIGluc2lkZSBh
IGxvb3AuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgSW5zaWRlTG9vcCkgewotICBmb3IgKGlu
dCBpID0gMDsgaSA8IDU7IGkrKykgewotICAgIEVYUEVDVF9ERUFUSChEaWVJZkxlc3NUaGFuKC0x
LCBpKSwgIkRpZUlmTGVzc1RoYW4iKSA8PCAid2hlcmUgaSA9PSAiIDw8IGk7Ci0gIH0KLX0KLQot
Ly8gVGVzdHMgdGhhdCBhIGNvbXBvdW5kIHN0YXRlbWVudCBjYW4gYmUgdXNlZCBpbiBhIGRlYXRo
IHRlc3QuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQ29tcG91bmRTdGF0ZW1lbnQpIHsKLSAg
RVhQRUNUX0RFQVRIKHsgIC8vIE5PTElOVAotICAgIGNvbnN0IGludCB4ID0gMjsKLSAgICBjb25z
dCBpbnQgeSA9IHggKyAxOwotICAgIERpZUlmTGVzc1RoYW4oeCwgeSk7Ci0gIH0sCi0gICJEaWVJ
Zkxlc3NUaGFuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgY29kZSB0aGF0IGRvZXNuJ3QgZGllIGNh
dXNlcyBhIGRlYXRoIHRlc3QgdG8gZmFpbC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEb2Vz
Tm90RGllKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ERUFUSChEaWVJZihm
YWxzZSksICJEaWVJZiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGRp
ZSIpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgZGVhdGggdGVzdCBmYWlscyB3aGVuIHRoZSBlcnJv
ciBtZXNzYWdlIGlzbid0IGV4cGVjdGVkLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEVycm9y
TWVzc2FnZU1pc21hdGNoKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElO
VAotICAgIEVYUEVDVF9ERUFUSChEaWVJZih0cnVlKSwgIkRpZUlmTGVzc1RoYW4iKSA8PCAiRW5k
IG9mIGRlYXRoIHRlc3QgbWVzc2FnZS4iOwotICB9LCAiZGllZCBidXQgbm90IHdpdGggZXhwZWN0
ZWQgZXJyb3IiKTsKLX0KLQotLy8gT24gZXhpdCwgKmFib3J0ZWQgd2lsbCBiZSB0cnVlIGlmZiB0
aGUgRVhQRUNUX0RFQVRIKCkgc3RhdGVtZW50Ci0vLyBhYm9ydGVkIHRoZSBmdW5jdGlvbi4KLXZv
aWQgRXhwZWN0RGVhdGhUZXN0SGVscGVyKGJvb2wqIGFib3J0ZWQpIHsKLSAgKmFib3J0ZWQgPSB0
cnVlOwotICBFWFBFQ1RfREVBVEgoRGllSWYoZmFsc2UpLCAiRGllSWYiKTsgIC8vIFRoaXMgYXNz
ZXJ0aW9uIHNob3VsZCBmYWlsLgotICAqYWJvcnRlZCA9IGZhbHNlOwotfQotCi0vLyBUZXN0cyB0
aGF0IEVYUEVDVF9ERUFUSCBkb2Vzbid0IGFib3J0IHRoZSB0ZXN0IG9uIGZhaWx1cmUuCi1URVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgRVhQRUNUX0RFQVRIKSB7Ci0gIGJvb2wgYWJvcnRlZCA9IHRy
dWU7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEV4cGVjdERlYXRoVGVzdEhlbHBlcigmYWJv
cnRlZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZGllIik7Ci0gIEVY
UEVDVF9GQUxTRShhYm9ydGVkKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVBVEggZG9l
cyBhYm9ydCB0aGUgdGVzdCBvbiBmYWlsdXJlLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFT
U0VSVF9ERUFUSCkgewotICBzdGF0aWMgYm9vbCBhYm9ydGVkOwotICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRSh7ICAvLyBOT0xJTlQKLSAgICBhYm9ydGVkID0gdHJ1ZTsKLSAgICBBU1NFUlRfREVBVEgo
RGllSWYoZmFsc2UpLCAiRGllSWYiKTsgIC8vIFRoaXMgYXNzZXJ0aW9uIHNob3VsZCBmYWlsLgot
ICAgIGFib3J0ZWQgPSBmYWxzZTsKLSAgfSwgImZhaWxlZCB0byBkaWUiKTsKLSAgRVhQRUNUX1RS
VUUoYWJvcnRlZCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRIIGV2YWx1YXRlcyB0
aGUgYXJndW1lbnRzIGV4YWN0bHkgb25jZS4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTaW5n
bGVFdmFsdWF0aW9uKSB7Ci0gIGludCB4ID0gMzsKLSAgRVhQRUNUX0RFQVRIKERpZUlmKCgrK3gp
ID09IDQpLCAiRGllSWYiKTsKLQotICBjb25zdCBjaGFyKiByZWdleCA9ICJEaWVJZiI7Ci0gIGNv
bnN0IGNoYXIqIHJlZ2V4X3NhdmUgPSByZWdleDsKLSAgRVhQRUNUX0RFQVRIKERpZUlmTGVzc1Ro
YW4oMywgNCksIHJlZ2V4KyspOwotICBFWFBFQ1RfRVEocmVnZXhfc2F2ZSArIDEsIHJlZ2V4KTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBydW4tYXdheSBkZWF0aCB0ZXN0cyBhcmUgcmVwb3J0ZWQgYXMg
ZmFpbHVyZXMuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgUnVuYXdheSkgewotICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgoc3RhdGljX2Nhc3Q8dm9pZD4oMCksICJGb28i
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBkaWUuIik7Ci0KLSAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0RFQVRIKHJldHVybiwgIkJhciIpLAotICAgICAgICAg
ICAgICAgICAgICAgICAiaWxsZWdhbCByZXR1cm4gaW4gdGVzdCBzdGF0ZW1lbnQuIik7Ci19Ci0K
LQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVCVUdfREVBVEggd29ya3MgYXMgZXhwZWN0ZWQsCi0v
LyB0aGF0IGlzLCBpbiBkZWJ1ZyBtb2RlLCBpdDoKLS8vIDEuIEFzc2VydHMgb24gZGVhdGguCi0v
LyAyLiBIYXMgbm8gc2lkZSBlZmZlY3QuCi0vLwotLy8gQW5kIGluIG9wdCBtb2RlLCBpdDoKLS8v
IDEuICBIYXMgc2lkZSBlZmZlY3RzIGJ1dCBkb2VzIG5vdCBhc3NlcnQuCi1URVNUX0YoVGVzdEZv
ckRlYXRoVGVzdCwgVGVzdEV4cGVjdERlYnVnRGVhdGgpIHsKLSAgaW50IHNpZGVlZmZlY3QgPSAw
OwotCi0gIEVYUEVDVF9ERUJVR19ERUFUSChEaWVJbkRlYnVnRWxzZTEyKCZzaWRlZWZmZWN0KSwK
LSAgICAgICAgICAgICAgICAgICAgICJkZWF0aC4qRGllSW5EZWJ1Z0Vsc2UxMiIpOwotCi0jaWZk
ZWYgTkRFQlVHCi0gIC8vIENoZWNrcyB0aGF0IHRoZSBhc3NpZ25tZW50IG9jY3VycyBpbiBvcHQg
bW9kZSAoc2lkZWVmZmVjdCkuCi0gIEVYUEVDVF9FUSgxMiwgc2lkZWVmZmVjdCk7Ci0jZWxzZQot
ICAvLyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBkb2VzIG5vdCBvY2N1ciBpbiBkYmcgbW9k
ZSAobm8gc2lkZWVmZmVjdCkuCi0gIEVYUEVDVF9FUSgwLCBzaWRlZWZmZWN0KTsKLSNlbmRpZgot
fQotCi0vLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUJVR19ERUFUSCB3b3JrcyBhcyBleHBlY3RlZAot
Ly8gSW4gZGVidWcgbW9kZToKLS8vIDEuIEFzc2VydHMgb24gZGVidWcgZGVhdGguCi0vLyAyLiBI
YXMgbm8gc2lkZSBlZmZlY3QuCi0vLwotLy8gSW4gb3B0IG1vZGU6Ci0vLyAxLiBIYXMgc2lkZSBl
ZmZlY3RzIGFuZCByZXR1cm5zIHRoZSBleHBlY3RlZCB2YWx1ZSAoMTIpLgotVEVTVF9GKFRlc3RG
b3JEZWF0aFRlc3QsIFRlc3RBc3NlcnREZWJ1Z0RlYXRoKSB7Ci0gIGludCBzaWRlZWZmZWN0ID0g
MDsKLQotICBBU1NFUlRfREVCVUdfREVBVEgoeyAgLy8gTk9MSU5UCi0gICAgLy8gVGVzdHMgdGhh
dCB0aGUgcmV0dXJuIHZhbHVlIGlzIDEyIGluIG9wdCBtb2RlLgotICAgIEVYUEVDVF9FUSgxMiwg
RGllSW5EZWJ1Z0Vsc2UxMigmc2lkZWVmZmVjdCkpOwotICAgIC8vIFRlc3RzIHRoYXQgdGhlIHNp
ZGUgZWZmZWN0IG9jY3VycmVkIGluIG9wdCBtb2RlLgotICAgIEVYUEVDVF9FUSgxMiwgc2lkZWVm
ZmVjdCk7Ci0gIH0sICJkZWF0aC4qRGllSW5EZWJ1Z0Vsc2UxMiIpOwotCi0jaWZkZWYgTkRFQlVH
Ci0gIC8vIENoZWNrcyB0aGF0IHRoZSBhc3NpZ25tZW50IG9jY3VycyBpbiBvcHQgbW9kZSAoc2lk
ZWVmZmVjdCkuCi0gIEVYUEVDVF9FUSgxMiwgc2lkZWVmZmVjdCk7Ci0jZWxzZQotICAvLyBDaGVj
a3MgdGhhdCB0aGUgYXNzaWdubWVudCBkb2VzIG5vdCBvY2N1ciBpbiBkYmcgbW9kZSAobm8gc2lk
ZWVmZmVjdCkuCi0gIEVYUEVDVF9FUSgwLCBzaWRlZWZmZWN0KTsKLSNlbmRpZgotfQotCi0jaWZu
ZGVmIE5ERUJVRwotCi12b2lkIEV4cGVjdERlYnVnRGVhdGhIZWxwZXIoYm9vbCogYWJvcnRlZCkg
ewotICAqYWJvcnRlZCA9IHRydWU7Ci0gIEVYUEVDVF9ERUJVR19ERUFUSChyZXR1cm4sICIiKSA8
PCAiVGhpcyBpcyBleHBlY3RlZCB0byBmYWlsLiI7Ci0gICphYm9ydGVkID0gZmFsc2U7Ci19Ci0K
LSNpZiBHVEVTVF9PU19XSU5ET1dTCi1URVNUKFBvcFVwRGVhdGhUZXN0LCBEb2VzTm90U2hvd1Bv
cFVwT25BYm9ydCkgewotICBwcmludGYoIlRoaXMgdGVzdCBzaG91bGQgYmUgY29uc2lkZXJlZCBm
YWlsaW5nIGlmIGl0IHNob3dzICIKLSAgICAgICAgICJhbnkgcG9wLXVwIGRpYWxvZ3MuXG4iKTsK
LSAgZmZsdXNoKHN0ZG91dCk7Ci0KLSAgRVhQRUNUX0RFQVRIKHsKLSAgICB0ZXN0aW5nOjpHVEVT
VF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpID0gZmFsc2U7Ci0gICAgYWJvcnQoKTsKLSAgfSwgIiIp
OwotfQotCi1URVNUKFBvcFVwRGVhdGhUZXN0LCBEb2VzTm90U2hvd1BvcFVwT25UaHJvdykgewot
ICBwcmludGYoIlRoaXMgdGVzdCBzaG91bGQgYmUgY29uc2lkZXJlZCBmYWlsaW5nIGlmIGl0IHNo
b3dzICIKLSAgICAgICAgICJhbnkgcG9wLXVwIGRpYWxvZ3MuXG4iKTsKLSAgZmZsdXNoKHN0ZG91
dCk7Ci0KLSAgRVhQRUNUX0RFQVRIKHsKLSAgICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGNhdGNoX2V4
Y2VwdGlvbnMpID0gZmFsc2U7Ci0gICAgdGhyb3cgMTsKLSAgfSwgIiIpOwotfQotI2VuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTCi0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQlVHX0RFQVRIIGlu
IGRlYnVnIG1vZGUgZG9lcyBub3QgYWJvcnQKLS8vIHRoZSBmdW5jdGlvbi4KLVRFU1RfRihUZXN0
Rm9yRGVhdGhUZXN0LCBFeHBlY3REZWJ1Z0RlYXRoRG9lc05vdEFib3J0KSB7Ci0gIGJvb2wgYWJv
cnRlZCA9IHRydWU7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEV4cGVjdERlYnVnRGVhdGhI
ZWxwZXIoJmFib3J0ZWQpLCAiIik7Ci0gIEVYUEVDVF9GQUxTRShhYm9ydGVkKTsKLX0KLQotdm9p
ZCBBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKGJvb2wqIGFib3J0ZWQpIHsKLSAgKmFib3J0ZWQgPSB0
cnVlOwotICBBU1NFUlRfREVCVUdfREVBVEgocmV0dXJuLCAiIikgPDwgIlRoaXMgaXMgZXhwZWN0
ZWQgdG8gZmFpbC4iOwotICAqYWJvcnRlZCA9IGZhbHNlOwotfQotCi0vLyBUZXN0cyB0aGF0IEFT
U0VSVF9ERUJVR19ERUFUSCBpbiBkZWJ1ZyBtb2RlIGFib3J0cyB0aGUgZnVuY3Rpb24gb24KLS8v
IGZhaWx1cmUuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0
cykgewotICBzdGF0aWMgYm9vbCBhYm9ydGVkOwotICBhYm9ydGVkID0gZmFsc2U7Ci0gIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7Ci0g
IEVYUEVDVF9UUlVFKGFib3J0ZWQpOwotfQotCi0jZW5kaWYgIC8vIF9OREVCVUcKLQotLy8gVGVz
dHMgdGhlICpfRVhJVCBmYW1pbHkgb2YgbWFjcm9zLCB1c2luZyBhIHZhcmlldHkgb2YgcHJlZGlj
YXRlcy4KLXN0YXRpYyB2b2lkIFRlc3RFeGl0TWFjcm9zKCkgewotICBFWFBFQ1RfRVhJVChfZXhp
dCgxKSwgIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEpLCAgIiIpOwotICBBU1NFUlRfRVhJVChf
ZXhpdCg0MiksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDQyKSwgIiIpOwotCi0jaWYgR1RFU1Rf
T1NfV0lORE9XUwotICAvLyBPZiBhbGwgc2lnbmFscyBlZmZlY3RzIG9uIHRoZSBwcm9jZXNzIGV4
aXQgY29kZSwgb25seSB0aG9zZSBvZiBTSUdBQlJUCi0gIC8vIGFyZSBkb2N1bWVudGVkIG9uIFdp
bmRvd3MuCi0gIC8vIFNlZSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkv
ZHd3emt0NGMoVlMuNzEpLmFzcHguCi0gIEVYUEVDVF9FWElUKHJhaXNlKFNJR0FCUlQpLCB0ZXN0
aW5nOjpFeGl0ZWRXaXRoQ29kZSgzKSwgIiIpOwotI2Vsc2UKLSAgRVhQRUNUX0VYSVQocmFpc2Uo
U0lHS0lMTCksIHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKFNJR0tJTEwpLCAiIikgPDwgImZvbyI7
Ci0gIEFTU0VSVF9FWElUKHJhaXNlKFNJR1VTUjIpLCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChT
SUdVU1IyKSwgIiIpIDw8ICJiYXIiOwotCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5P
TElOVAotICAgIEFTU0VSVF9FWElUKF9leGl0KDApLCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChT
SUdTRUdWKSwgIiIpCi0gICAgICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIHRvby4i
OwotICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCB0b28uIik7Ci0jZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MKLQotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQK
LSAgICBFWFBFQ1RfRVhJVChyYWlzZShTSUdTRUdWKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUo
MCksICIiKQotICAgICAgICA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiI7Ci0gIH0sICJU
aGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIik7Ci19Ci0KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0
LCBFeGl0TWFjcm9zKSB7Ci0gIFRlc3RFeGl0TWFjcm9zKCk7Ci19Ci0KLVRFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBFeGl0TWFjcm9zVXNpbmdGb3JrKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUco
ZGVhdGhfdGVzdF91c2VfZm9yaykgPSB0cnVlOwotICBUZXN0RXhpdE1hY3JvcygpOwotfQotCi1U
RVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgSW52YWxpZFN0eWxlKSB7Ci0gIHRlc3Rpbmc6OkdURVNU
X0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAicm9jb2NvIjsKLSAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX0RFQVRIKF9leGl0KDApLCAiIikgPDwgIlRo
aXMgZmFpbHVyZSBpcyBleHBlY3RlZC4iOwotICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVk
LiIpOwotfQotCi0vLyBBIERlYXRoVGVzdEZhY3RvcnkgdGhhdCByZXR1cm5zIE1vY2tEZWF0aFRl
c3RzLgotY2xhc3MgTW9ja0RlYXRoVGVzdEZhY3RvcnkgOiBwdWJsaWMgRGVhdGhUZXN0RmFjdG9y
eSB7Ci0gcHVibGljOgotICBNb2NrRGVhdGhUZXN0RmFjdG9yeSgpOwotICB2aXJ0dWFsIGJvb2wg
Q3JlYXRlKGNvbnN0IGNoYXIqIHN0YXRlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25z
dCA6OnRlc3Rpbmc6OmludGVybmFsOjpSRSogcmVnZXgsCi0gICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIERlYXRoVGVzdCoqIHRlc3QpOwotCi0gIC8vIFNl
dHMgdGhlIHBhcmFtZXRlcnMgZm9yIHN1YnNlcXVlbnQgY2FsbHMgdG8gQ3JlYXRlLgotICB2b2lk
IFNldFBhcmFtZXRlcnMoYm9vbCBjcmVhdGUsIERlYXRoVGVzdDo6VGVzdFJvbGUgcm9sZSwKLSAg
ICAgICAgICAgICAgICAgICAgIGludCBzdGF0dXMsIGJvb2wgcGFzc2VkKTsKLQotICAvLyBBY2Nl
c3NvcnMuCi0gIGludCBBc3N1bWVSb2xlQ2FsbHMoKSBjb25zdCB7IHJldHVybiBhc3N1bWVfcm9s
ZV9jYWxsc187IH0KLSAgaW50IFdhaXRDYWxscygpIGNvbnN0IHsgcmV0dXJuIHdhaXRfY2FsbHNf
OyB9Ci0gIGludCBQYXNzZWRDYWxscygpIGNvbnN0IHsgcmV0dXJuIHBhc3NlZF9hcmdzXy5zaXpl
KCk7IH0KLSAgYm9vbCBQYXNzZWRBcmd1bWVudChpbnQgbikgY29uc3QgeyByZXR1cm4gcGFzc2Vk
X2FyZ3NfW25dOyB9Ci0gIGludCBBYm9ydENhbGxzKCkgY29uc3QgeyByZXR1cm4gYWJvcnRfYXJn
c18uc2l6ZSgpOyB9Ci0gIERlYXRoVGVzdDo6QWJvcnRSZWFzb24gQWJvcnRBcmd1bWVudChpbnQg
bikgY29uc3QgewotICAgIHJldHVybiBhYm9ydF9hcmdzX1tuXTsKLSAgfQotICBib29sIFRlc3RE
ZWxldGVkKCkgY29uc3QgeyByZXR1cm4gdGVzdF9kZWxldGVkXzsgfQotCi0gcHJpdmF0ZToKLSAg
ZnJpZW5kIGNsYXNzIE1vY2tEZWF0aFRlc3Q7Ci0gIC8vIElmIHRydWUsIENyZWF0ZSB3aWxsIHJl
dHVybiBhIE1vY2tEZWF0aFRlc3Q7IG90aGVyd2lzZSBpdCByZXR1cm5zCi0gIC8vIE5VTEwuCi0g
IGJvb2wgY3JlYXRlXzsKLSAgLy8gVGhlIHZhbHVlIGEgTW9ja0RlYXRoVGVzdCB3aWxsIHJldHVy
biBmcm9tIGl0cyBBc3N1bWVSb2xlIG1ldGhvZC4KLSAgRGVhdGhUZXN0OjpUZXN0Um9sZSByb2xl
XzsKLSAgLy8gVGhlIHZhbHVlIGEgTW9ja0RlYXRoVGVzdCB3aWxsIHJldHVybiBmcm9tIGl0cyBX
YWl0IG1ldGhvZC4KLSAgaW50IHN0YXR1c187Ci0gIC8vIFRoZSB2YWx1ZSBhIE1vY2tEZWF0aFRl
c3Qgd2lsbCByZXR1cm4gZnJvbSBpdHMgUGFzc2VkIG1ldGhvZC4KLSAgYm9vbCBwYXNzZWRfOwot
Ci0gIC8vIE51bWJlciBvZiB0aW1lcyBBc3N1bWVSb2xlIHdhcyBjYWxsZWQuCi0gIGludCBhc3N1
bWVfcm9sZV9jYWxsc187Ci0gIC8vIE51bWJlciBvZiB0aW1lcyBXYWl0IHdhcyBjYWxsZWQuCi0g
IGludCB3YWl0X2NhbGxzXzsKLSAgLy8gVGhlIGFyZ3VtZW50cyB0byB0aGUgY2FsbHMgdG8gUGFz
c2VkIHNpbmNlIHRoZSBsYXN0IGNhbGwgdG8KLSAgLy8gU2V0UGFyYW1ldGVycy4KLSAgc3RkOjp2
ZWN0b3I8Ym9vbD4gcGFzc2VkX2FyZ3NfOwotICAvLyBUaGUgYXJndW1lbnRzIHRvIHRoZSBjYWxs
cyB0byBBYm9ydCBzaW5jZSB0aGUgbGFzdCBjYWxsIHRvCi0gIC8vIFNldFBhcmFtZXRlcnMuCi0g
IHN0ZDo6dmVjdG9yPERlYXRoVGVzdDo6QWJvcnRSZWFzb24+IGFib3J0X2FyZ3NfOwotICAvLyBU
cnVlIGlmIHRoZSBsYXN0IE1vY2tEZWF0aFRlc3QgcmV0dXJuZWQgYnkgQ3JlYXRlIGhhcyBiZWVu
Ci0gIC8vIGRlbGV0ZWQuCi0gIGJvb2wgdGVzdF9kZWxldGVkXzsKLX07Ci0KLQotLy8gQSBEZWF0
aFRlc3QgaW1wbGVtZW50YXRpb24gdXNlZnVsIGluIHRlc3RpbmcuICBJdCByZXR1cm5zIHZhbHVl
cyBzZXQKLS8vIGF0IGl0cyBjcmVhdGlvbiBmcm9tIGl0cyB2YXJpb3VzIGluaGVyaXRlZCBEZWF0
aFRlc3QgbWV0aG9kcywgYW5kCi0vLyByZXBvcnRzIGNhbGxzIHRvIHRob3NlIG1ldGhvZHMgdG8g
aXRzIHBhcmVudCBNb2NrRGVhdGhUZXN0RmFjdG9yeQotLy8gb2JqZWN0LgotY2xhc3MgTW9ja0Rl
YXRoVGVzdCA6IHB1YmxpYyBEZWF0aFRlc3QgewotIHB1YmxpYzoKLSAgTW9ja0RlYXRoVGVzdChN
b2NrRGVhdGhUZXN0RmFjdG9yeSAqcGFyZW50LAotICAgICAgICAgICAgICAgIFRlc3RSb2xlIHJv
bGUsIGludCBzdGF0dXMsIGJvb2wgcGFzc2VkKSA6Ci0gICAgICBwYXJlbnRfKHBhcmVudCksIHJv
bGVfKHJvbGUpLCBzdGF0dXNfKHN0YXR1cyksIHBhc3NlZF8ocGFzc2VkKSB7Ci0gIH0KLSAgdmly
dHVhbCB+TW9ja0RlYXRoVGVzdCgpIHsKLSAgICBwYXJlbnRfLT50ZXN0X2RlbGV0ZWRfID0gdHJ1
ZTsKLSAgfQotICB2aXJ0dWFsIFRlc3RSb2xlIEFzc3VtZVJvbGUoKSB7Ci0gICAgKytwYXJlbnRf
LT5hc3N1bWVfcm9sZV9jYWxsc187Ci0gICAgcmV0dXJuIHJvbGVfOwotICB9Ci0gIHZpcnR1YWwg
aW50IFdhaXQoKSB7Ci0gICAgKytwYXJlbnRfLT53YWl0X2NhbGxzXzsKLSAgICByZXR1cm4gc3Rh
dHVzXzsKLSAgfQotICB2aXJ0dWFsIGJvb2wgUGFzc2VkKGJvb2wgZXhpdF9zdGF0dXNfb2spIHsK
LSAgICBwYXJlbnRfLT5wYXNzZWRfYXJnc18ucHVzaF9iYWNrKGV4aXRfc3RhdHVzX29rKTsKLSAg
ICByZXR1cm4gcGFzc2VkXzsKLSAgfQotICB2aXJ0dWFsIHZvaWQgQWJvcnQoQWJvcnRSZWFzb24g
cmVhc29uKSB7Ci0gICAgcGFyZW50Xy0+YWJvcnRfYXJnc18ucHVzaF9iYWNrKHJlYXNvbik7Ci0g
IH0KLSBwcml2YXRlOgotICBNb2NrRGVhdGhUZXN0RmFjdG9yeSogY29uc3QgcGFyZW50XzsKLSAg
Y29uc3QgVGVzdFJvbGUgcm9sZV87Ci0gIGNvbnN0IGludCBzdGF0dXNfOwotICBjb25zdCBib29s
IHBhc3NlZF87Ci19OwotCi0KLS8vIE1vY2tEZWF0aFRlc3RGYWN0b3J5IGNvbnN0cnVjdG9yLgot
TW9ja0RlYXRoVGVzdEZhY3Rvcnk6Ok1vY2tEZWF0aFRlc3RGYWN0b3J5KCkKLSAgICA6IGNyZWF0
ZV8odHJ1ZSksCi0gICAgICByb2xlXyhEZWF0aFRlc3Q6Ok9WRVJTRUVfVEVTVCksCi0gICAgICBz
dGF0dXNfKDApLAotICAgICAgcGFzc2VkXyh0cnVlKSwKLSAgICAgIGFzc3VtZV9yb2xlX2NhbGxz
XygwKSwKLSAgICAgIHdhaXRfY2FsbHNfKDApLAotICAgICAgcGFzc2VkX2FyZ3NfKCksCi0gICAg
ICBhYm9ydF9hcmdzXygpIHsKLX0KLQotCi0vLyBTZXRzIHRoZSBwYXJhbWV0ZXJzIGZvciBzdWJz
ZXF1ZW50IGNhbGxzIHRvIENyZWF0ZS4KLXZvaWQgTW9ja0RlYXRoVGVzdEZhY3Rvcnk6OlNldFBh
cmFtZXRlcnMoYm9vbCBjcmVhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERlYXRoVGVzdDo6VGVzdFJvbGUgcm9sZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHN0YXR1cywgYm9vbCBwYXNzZWQpIHsKLSAgY3JlYXRlXyA9
IGNyZWF0ZTsKLSAgcm9sZV8gPSByb2xlOwotICBzdGF0dXNfID0gc3RhdHVzOwotICBwYXNzZWRf
ID0gcGFzc2VkOwotCi0gIGFzc3VtZV9yb2xlX2NhbGxzXyA9IDA7Ci0gIHdhaXRfY2FsbHNfID0g
MDsKLSAgcGFzc2VkX2FyZ3NfLmNsZWFyKCk7Ci0gIGFib3J0X2FyZ3NfLmNsZWFyKCk7Ci19Ci0K
LQotLy8gU2V0cyB0ZXN0IHRvIE5VTEwgKGlmIGNyZWF0ZV8gaXMgZmFsc2UpIG9yIHRvIHRoZSBh
ZGRyZXNzIG9mIGEgbmV3Ci0vLyBNb2NrRGVhdGhUZXN0IG9iamVjdCB3aXRoIHBhcmFtZXRlcnMg
dGFrZW4gZnJvbSB0aGUgbGFzdCBjYWxsCi0vLyB0byBTZXRQYXJhbWV0ZXJzIChpZiBjcmVhdGVf
IGlzIHRydWUpLiAgQWx3YXlzIHJldHVybnMgdHJ1ZS4KLWJvb2wgTW9ja0RlYXRoVGVzdEZhY3Rv
cnk6OkNyZWF0ZShjb25zdCBjaGFyKiAvKnN0YXRlbWVudCovLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6OlJFKiAvKnJlZ2V4Ki8s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLypmaWxlKi8s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IC8qbGluZSovLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlYXRoVGVzdCoqIHRlc3QpIHsKLSAgdGVzdF9k
ZWxldGVkXyA9IGZhbHNlOwotICBpZiAoY3JlYXRlXykgewotICAgICp0ZXN0ID0gbmV3IE1vY2tE
ZWF0aFRlc3QodGhpcywgcm9sZV8sIHN0YXR1c18sIHBhc3NlZF8pOwotICB9IGVsc2UgewotICAg
ICp0ZXN0ID0gTlVMTDsKLSAgfQotICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gQSB0ZXN0IGZpeHR1
cmUgZm9yIHRlc3RpbmcgdGhlIGxvZ2ljIG9mIHRoZSBHVEVTVF9ERUFUSF9URVNUXyBtYWNyby4K
LS8vIEl0IGluc3RhbGxzIGEgTW9ja0RlYXRoVGVzdEZhY3RvcnkgdGhhdCBpcyB1c2VkIGZvciB0
aGUgZHVyYXRpb24KLS8vIG9mIHRoZSB0ZXN0IGNhc2UuCi1jbGFzcyBNYWNyb0xvZ2ljRGVhdGhU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgc3RhdGljIHRlc3Rp
bmc6OmludGVybmFsOjpSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSogcmVwbGFjZXJfOwotICBzdGF0
aWMgTW9ja0RlYXRoVGVzdEZhY3RvcnkqIGZhY3RvcnlfOwotCi0gIHN0YXRpYyB2b2lkIFNldFVw
VGVzdENhc2UoKSB7Ci0gICAgZmFjdG9yeV8gPSBuZXcgTW9ja0RlYXRoVGVzdEZhY3Rvcnk7Ci0g
ICAgcmVwbGFjZXJfID0gbmV3IHRlc3Rpbmc6OmludGVybmFsOjpSZXBsYWNlRGVhdGhUZXN0RmFj
dG9yeShmYWN0b3J5Xyk7Ci0gIH0KLQotICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkg
ewotICAgIGRlbGV0ZSByZXBsYWNlcl87Ci0gICAgcmVwbGFjZXJfID0gTlVMTDsKLSAgICBkZWxl
dGUgZmFjdG9yeV87Ci0gICAgZmFjdG9yeV8gPSBOVUxMOwotICB9Ci0KLSAgLy8gUnVucyBhIGRl
YXRoIHRlc3QgdGhhdCBicmVha3MgdGhlIHJ1bGVzIGJ5IHJldHVybmluZy4gIFN1Y2ggYSBkZWF0
aAotICAvLyB0ZXN0IGNhbm5vdCBiZSBydW4gZGlyZWN0bHkgZnJvbSBhIHRlc3Qgcm91dGluZSB0
aGF0IHVzZXMgYQotICAvLyBNb2NrRGVhdGhUZXN0LCBvciB0aGUgcmVtYWluZGVyIG9mIHRoZSBy
b3V0aW5lIHdpbGwgbm90IGJlIGV4ZWN1dGVkLgotICBzdGF0aWMgdm9pZCBSdW5SZXR1cm5pbmdE
ZWF0aFRlc3QoYm9vbCogZmxhZykgewotICAgIEFTU0VSVF9ERUFUSCh7ICAvLyBOT0xJTlQKLSAg
ICAgICpmbGFnID0gdHJ1ZTsKLSAgICAgIHJldHVybjsKLSAgICB9LCAiIik7Ci0gIH0KLX07Ci0K
LXRlc3Rpbmc6OmludGVybmFsOjpSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSogTWFjcm9Mb2dpY0Rl
YXRoVGVzdDo6cmVwbGFjZXJfCi0gICAgPSBOVUxMOwotTW9ja0RlYXRoVGVzdEZhY3RvcnkqIE1h
Y3JvTG9naWNEZWF0aFRlc3Q6OmZhY3RvcnlfID0gTlVMTDsKLQotCi0vLyBUZXN0IHRoYXQgbm90
aGluZyBoYXBwZW5zIHdoZW4gdGhlIGZhY3RvcnkgZG9lc24ndCByZXR1cm4gYSBEZWF0aFRlc3Q6
Ci1URVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwgTm90aGluZ0hhcHBlbnMpIHsKLSAgYm9vbCBm
bGFnID0gZmFsc2U7Ci0gIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJzKGZhbHNlLCBEZWF0aFRlc3Q6
Ok9WRVJTRUVfVEVTVCwgMCwgdHJ1ZSk7Ci0gIEVYUEVDVF9ERUFUSChmbGFnID0gdHJ1ZSwgIiIp
OwotICBFWFBFQ1RfRkFMU0UoZmxhZyk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+QXNzdW1l
Um9sZUNhbGxzKCkpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPldhaXRDYWxscygpKTsKLSAg
RVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKLSAgRVhQRUNUX0VRKDAsIGZh
Y3RvcnlfLT5BYm9ydENhbGxzKCkpOwotICBFWFBFQ1RfRkFMU0UoZmFjdG9yeV8tPlRlc3REZWxl
dGVkKCkpOwotfQotCi0vLyBUZXN0IHRoYXQgdGhlIHBhcmVudCBwcm9jZXNzIGRvZXNuJ3QgcnVu
IHRoZSBkZWF0aCB0ZXN0IGNvZGUsCi0vLyBhbmQgdGhhdCB0aGUgUGFzc2VkIG1ldGhvZCByZXR1
cm5zIGZhbHNlIHdoZW4gdGhlIChzaW11bGF0ZWQpCi0vLyBjaGlsZCBwcm9jZXNzIGV4aXRzIHdp
dGggc3RhdHVzIDA6Ci1URVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwgQ2hpbGRFeGl0c1N1Y2Nl
c3NmdWxseSkgewotICBib29sIGZsYWcgPSBmYWxzZTsKLSAgZmFjdG9yeV8tPlNldFBhcmFtZXRl
cnModHJ1ZSwgRGVhdGhUZXN0OjpPVkVSU0VFX1RFU1QsIDAsIHRydWUpOwotICBFWFBFQ1RfREVB
VEgoZmxhZyA9IHRydWUsICIiKTsKLSAgRVhQRUNUX0ZBTFNFKGZsYWcpOwotICBFWFBFQ1RfRVEo
MSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKLSAgRVhQRUNUX0VRKDEsIGZhY3Rvcnlf
LT5XYWl0Q2FsbHMoKSk7Ci0gIEFTU0VSVF9FUSgxLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7
Ci0gIEVYUEVDVF9GQUxTRShmYWN0b3J5Xy0+UGFzc2VkQXJndW1lbnQoMCkpOwotICBFWFBFQ1Rf
RVEoMCwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7Ci0gIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5U
ZXN0RGVsZXRlZCgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgUGFzc2VkIG1ldGhvZCB3YXMg
Z2l2ZW4gdGhlIGFyZ3VtZW50ICJ0cnVlIiB3aGVuCi0vLyB0aGUgKHNpbXVsYXRlZCkgY2hpbGQg
cHJvY2VzcyBleGl0cyB3aXRoIHN0YXR1cyAxOgotVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3Qs
IENoaWxkRXhpdHNVbnN1Y2Nlc3NmdWxseSkgewotICBib29sIGZsYWcgPSBmYWxzZTsKLSAgZmFj
dG9yeV8tPlNldFBhcmFtZXRlcnModHJ1ZSwgRGVhdGhUZXN0OjpPVkVSU0VFX1RFU1QsIDEsIHRy
dWUpOwotICBFWFBFQ1RfREVBVEgoZmxhZyA9IHRydWUsICIiKTsKLSAgRVhQRUNUX0ZBTFNFKGZs
YWcpOwotICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKLSAgRVhQ
RUNUX0VRKDEsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7Ci0gIEFTU0VSVF9FUSgxLCBmYWN0b3J5
Xy0+UGFzc2VkQ2FsbHMoKSk7Ci0gIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5QYXNzZWRBcmd1bWVu
dCgwKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKLSAgRVhQRUNU
X1RSVUUoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSAo
c2ltdWxhdGVkKSBjaGlsZCBwcm9jZXNzIGV4ZWN1dGVzIHRoZSBkZWF0aCB0ZXN0Ci0vLyBjb2Rl
LCBhbmQgaXMgYWJvcnRlZCB3aXRoIHRoZSBjb3JyZWN0IEFib3J0UmVhc29uIGlmIGl0Ci0vLyBl
eGVjdXRlcyBhIHJldHVybiBzdGF0ZW1lbnQuCi1URVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwg
Q2hpbGRQZXJmb3Jtc1JldHVybikgewotICBib29sIGZsYWcgPSBmYWxzZTsKLSAgZmFjdG9yeV8t
PlNldFBhcmFtZXRlcnModHJ1ZSwgRGVhdGhUZXN0OjpFWEVDVVRFX1RFU1QsIDAsIHRydWUpOwot
ICBSdW5SZXR1cm5pbmdEZWF0aFRlc3QoJmZsYWcpOwotICBFWFBFQ1RfVFJVRShmbGFnKTsKLSAg
RVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5Bc3N1bWVSb2xlQ2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgw
LCBmYWN0b3J5Xy0+V2FpdENhbGxzKCkpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPlBhc3Nl
ZENhbGxzKCkpOwotICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7Ci0gIEVY
UEVDVF9FUShEZWF0aFRlc3Q6OlRFU1RfRU5DT1VOVEVSRURfUkVUVVJOX1NUQVRFTUVOVCwKLSAg
ICAgICAgICAgIGZhY3RvcnlfLT5BYm9ydEFyZ3VtZW50KDApKTsKLSAgRVhQRUNUX1RSVUUoZmFj
dG9yeV8tPlRlc3REZWxldGVkKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSAoc2ltdWxhdGVk
KSBjaGlsZCBwcm9jZXNzIGlzIGFib3J0ZWQgd2l0aCB0aGUKLS8vIGNvcnJlY3QgQWJvcnRSZWFz
b24gaWYgaXQgZG9lcyBub3QgZGllLgotVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxk
RG9lc05vdERpZSkgewotICBib29sIGZsYWcgPSBmYWxzZTsKLSAgZmFjdG9yeV8tPlNldFBhcmFt
ZXRlcnModHJ1ZSwgRGVhdGhUZXN0OjpFWEVDVVRFX1RFU1QsIDAsIHRydWUpOwotICBFWFBFQ1Rf
REVBVEgoZmxhZyA9IHRydWUsICIiKTsKLSAgRVhQRUNUX1RSVUUoZmxhZyk7Ci0gIEVYUEVDVF9F
USgxLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9y
eV8tPldhaXRDYWxscygpKTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygp
KTsKLSAgLy8gVGhpcyB0aW1lIHRoZXJlIGFyZSB0d28gY2FsbHMgdG8gQWJvcnQ6IG9uZSBzaW5j
ZSB0aGUgdGVzdCBkaWRuJ3QKLSAgLy8gZGllLCBhbmQgYW5vdGhlciBmcm9tIHRoZSBSZXR1cm5T
ZW50aW5lbCB3aGVuIGl0J3MgZGVzdHJveWVkLiAgVGhlCi0gIC8vIHNlbnRpbmVsIG5vcm1hbGx5
IGlzbid0IGRlc3Ryb3llZCBpZiBhIHRlc3QgZG9lc24ndCBkaWUsIHNpbmNlCi0gIC8vIF9leGl0
KDIpIGlzIGNhbGxlZCBpbiB0aGF0IGNhc2UgYnkgRm9ya2luZ0RlYXRoVGVzdCwgYnV0IG5vdCBi
eQotICAvLyBvdXIgTW9ja0RlYXRoVGVzdC4KLSAgQVNTRVJUX0VRKDIsIGZhY3RvcnlfLT5BYm9y
dENhbGxzKCkpOwotICBFWFBFQ1RfRVEoRGVhdGhUZXN0OjpURVNUX0RJRF9OT1RfRElFLAotICAg
ICAgICAgICAgZmFjdG9yeV8tPkFib3J0QXJndW1lbnQoMCkpOwotICBFWFBFQ1RfRVEoRGVhdGhU
ZXN0OjpURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQsCi0gICAgICAgICAgICBmYWN0
b3J5Xy0+QWJvcnRBcmd1bWVudCgxKSk7Ci0gIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5UZXN0RGVs
ZXRlZCgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIHN1Y2Nlc3NmdWwgZGVhdGggdGVzdCBkb2Vz
IG5vdCByZWdpc3RlciBhIHN1Y2Nlc3NmdWwKLS8vIHRlc3QgcGFydC4KLVRFU1QoU3VjY2Vzc1Jl
Z2lzdHJhdGlvbkRlYXRoVGVzdCwgTm9TdWNjZXNzUGFydCkgewotICBFWFBFQ1RfREVBVEgoX2V4
aXQoMSksICIiKTsKLSAgRVhQRUNUX0VRKDAsIEdldFVuaXRUZXN0SW1wbCgpLT5jdXJyZW50X3Rl
c3RfcmVzdWx0KCktPnRvdGFsX3BhcnRfY291bnQoKSk7Ci19Ci0KLVRFU1QoU3RyZWFtaW5nQXNz
ZXJ0aW9uc0RlYXRoVGVzdCwgRGVhdGhUZXN0KSB7Ci0gIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwg
IiIpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOwotICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIi
KSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAg
Ly8gTk9MSU5UCi0gICAgRVhQRUNUX0RFQVRIKF9leGl0KDApLCAiIikgPDwgImV4cGVjdGVkIGZh
aWx1cmUiOwotICB9LCAiZXhwZWN0ZWQgZmFpbHVyZSIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfREVBVEgoX2V4aXQoMCksICIiKSA8PCAiZXhwZWN0
ZWQgZmFpbHVyZSI7Ci0gIH0sICJleHBlY3RlZCBmYWlsdXJlIik7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24gcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgd2hlbiB0
aGUKLS8vIGxhc3QgZXJyb3IgaXMgMCBhbmQgbm9uLWVtcHR5IHN0cmluZyB3aGVuIGl0IGlzIG5v
bi16ZXJvLgotVEVTVChHZXRMYXN0RXJybm9EZXNjcmlwdGlvbiwgR2V0TGFzdEVycm5vRGVzY3Jp
cHRpb25Xb3JrcykgewotICBlcnJubyA9IEVOT0VOVDsKLSAgRVhQRUNUX1NUUk5FKCIiLCBHZXRM
YXN0RXJybm9EZXNjcmlwdGlvbigpLmNfc3RyKCkpOwotICBlcnJubyA9IDA7Ci0gIEVYUEVDVF9T
VFJFUSgiIiwgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKS5jX3N0cigpKTsKLX0KLQotI2lmIEdU
RVNUX09TX1dJTkRPV1MKLVRFU1QoQXV0b0hhbmRsZVRlc3QsIEF1dG9IYW5kbGVXb3Jrcykgewot
ICBIQU5ETEUgaGFuZGxlID0gOjpDcmVhdGVFdmVudChOVUxMLCBGQUxTRSwgRkFMU0UsIE5VTEwp
OwotICBBU1NFUlRfTkUoSU5WQUxJRF9IQU5ETEVfVkFMVUUsIGhhbmRsZSk7Ci0KLSAgLy8gVGVz
dHMgdGhhdCB0aGUgQXV0b0hhbmRsZSBpcyBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgd2l0aCBhIGhh
bmRsZS4KLSAgdGVzdGluZzo6aW50ZXJuYWw6OkF1dG9IYW5kbGUgYXV0b19oYW5kbGUoaGFuZGxl
KTsKLSAgRVhQRUNUX0VRKGhhbmRsZSwgYXV0b19oYW5kbGUuR2V0KCkpOwotCi0gIC8vIFRlc3Rz
IHRoYXQgUmVzZXQgYXNzaWducyBJTlZBTElEX0hBTkRMRV9WQUxVRS4KLSAgLy8gTm90ZSB0aGF0
IHRoaXMgY2Fubm90IHZlcmlmeSB3aGV0aGVyIHRoZSBvcmlnaW5hbCBoYW5kbGUgaXMgY2xvc2Vk
LgotICBhdXRvX2hhbmRsZS5SZXNldCgpOwotICBFWFBFQ1RfRVEoSU5WQUxJRF9IQU5ETEVfVkFM
VUUsIGF1dG9faGFuZGxlLkdldCgpKTsKLQotICAvLyBUZXN0cyB0aGF0IFJlc2V0IGFzc2lnbnMg
dGhlIG5ldyBoYW5kbGUuCi0gIC8vIE5vdGUgdGhhdCB0aGlzIGNhbm5vdCB2ZXJpZnkgd2hldGhl
ciB0aGUgb3JpZ2luYWwgaGFuZGxlIGlzIGNsb3NlZC4KLSAgaGFuZGxlID0gOjpDcmVhdGVFdmVu
dChOVUxMLCBGQUxTRSwgRkFMU0UsIE5VTEwpOwotICBBU1NFUlRfTkUoSU5WQUxJRF9IQU5ETEVf
VkFMVUUsIGhhbmRsZSk7Ci0gIGF1dG9faGFuZGxlLlJlc2V0KGhhbmRsZSk7Ci0gIEVYUEVDVF9F
UShoYW5kbGUsIGF1dG9faGFuZGxlLkdldCgpKTsKLQotICAvLyBUZXN0cyB0aGF0IEF1dG9IYW5k
bGUgY29udGFpbnMgSU5WQUxJRF9IQU5ETEVfVkFMVUUgYnkgZGVmYXVsdC4KLSAgdGVzdGluZzo6
aW50ZXJuYWw6OkF1dG9IYW5kbGUgYXV0b19oYW5kbGUyOwotICBFWFBFQ1RfRVEoSU5WQUxJRF9I
QU5ETEVfVkFMVUUsIGF1dG9faGFuZGxlMi5HZXQoKSk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLXR5cGVkZWYgdW5zaWduZWQgX19pbnQ2
NCBCaWdnZXN0UGFyc2FibGU7Ci10eXBlZGVmIHNpZ25lZCBfX2ludDY0IEJpZ2dlc3RTaWduZWRQ
YXJzYWJsZTsKLWNvbnN0IEJpZ2dlc3RQYXJzYWJsZSBrQmlnZ2VzdFBhcnNhYmxlTWF4ID0gVUxM
T05HX01BWDsKLWNvbnN0IEJpZ2dlc3RQYXJzYWJsZSBrQmlnZ2VzdFNpZ25lZFBhcnNhYmxlTWF4
ID0gTExPTkdfTUFYOwotI2Vsc2UKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEJpZ2dlc3RQ
YXJzYWJsZTsKLXR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBCaWdnZXN0U2lnbmVkUGFyc2FibGU7
Ci1jb25zdCBCaWdnZXN0UGFyc2FibGUga0JpZ2dlc3RQYXJzYWJsZU1heCA9Ci0gICAgOjpzdGQ6
Om51bWVyaWNfbGltaXRzPEJpZ2dlc3RQYXJzYWJsZT46Om1heCgpOwotY29uc3QgQmlnZ2VzdFNp
Z25lZFBhcnNhYmxlIGtCaWdnZXN0U2lnbmVkUGFyc2FibGVNYXggPQotICAgIDo6c3RkOjpudW1l
cmljX2xpbWl0czxCaWdnZXN0U2lnbmVkUGFyc2FibGU+OjptYXgoKTsKLSNlbmRpZiAgLy8gR1RF
U1RfT1NfV0lORE9XUwotCi1URVNUKFBhcnNlTmF0dXJhbE51bWJlclRlc3QsIFJlamVjdHNJbnZh
bGlkRm9ybWF0KSB7Ci0gIEJpZ2dlc3RQYXJzYWJsZSByZXN1bHQgPSAwOwotCi0gIC8vIFJlamVj
dHMgbm9uLW51bWJlcnMuCi0gIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5n
KCJub24tbnVtYmVyIHN0cmluZyIpLCAmcmVzdWx0KSk7Ci0KLSAgLy8gUmVqZWN0cyBudW1iZXJz
IHdpdGggd2hpdGVzcGFjZSBwcmVmaXguCi0gIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1i
ZXIoU3RyaW5nKCIgMTIzIiksICZyZXN1bHQpKTsKLQotICAvLyBSZWplY3RzIG5lZ2F0aXZlIG51
bWJlcnMuCi0gIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCItMTIzIiks
ICZyZXN1bHQpKTsKLQotICAvLyBSZWplY3RzIG51bWJlcnMgc3RhcnRpbmcgd2l0aCBhIHBsdXMg
c2lnbi4KLSAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIisxMjMiKSwg
JnJlc3VsdCkpOwotICBlcnJubyA9IDA7Ci19Ci0KLVRFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVz
dCwgUmVqZWN0c092ZXJmbG93bk51bWJlcnMpIHsKLSAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9
IDA7Ci0KLSAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIjk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5IiksICZyZXN1bHQpKTsKLQotICBzaWduZWQgY2hhciBjaGFyX3Jlc3Vs
dCA9IDA7Ci0gIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCIyMDAiKSwg
JmNoYXJfcmVzdWx0KSk7Ci0gIGVycm5vID0gMDsKLX0KLQotVEVTVChQYXJzZU5hdHVyYWxOdW1i
ZXJUZXN0LCBBY2NlcHRzVmFsaWROdW1iZXJzKSB7Ci0gIEJpZ2dlc3RQYXJzYWJsZSByZXN1bHQg
PSAwOwotCi0gIHJlc3VsdCA9IDA7Ci0gIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihT
dHJpbmcoIjEyMyIpLCAmcmVzdWx0KSk7Ci0gIEVYUEVDVF9FUSgxMjNVLCByZXN1bHQpOwotCi0g
IC8vIENoZWNrIDAgYXMgYW4gZWRnZSBjYXNlLgotICByZXN1bHQgPSAxOwotICBBU1NFUlRfVFJV
RShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCIwIiksICZyZXN1bHQpKTsKLSAgRVhQRUNUX0VR
KDBVLCByZXN1bHQpOwotCi0gIHJlc3VsdCA9IDE7Ci0gIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJh
bE51bWJlcihTdHJpbmcoIjAwMDAwIiksICZyZXN1bHQpKTsKLSAgRVhQRUNUX0VRKDBVLCByZXN1
bHQpOwotfQotCi1URVNUKFBhcnNlTmF0dXJhbE51bWJlclRlc3QsIEFjY2VwdHNUeXBlTGltaXRz
KSB7Ci0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwga0JpZ2dlc3RQYXJzYWJsZU1heDsKLQotICBC
aWdnZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsKLSAgRVhQRUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVt
YmVyKG1zZy5HZXRTdHJpbmcoKSwgJnJlc3VsdCkpOwotICBFWFBFQ1RfRVEoa0JpZ2dlc3RQYXJz
YWJsZU1heCwgcmVzdWx0KTsKLQotICBNZXNzYWdlIG1zZzI7Ci0gIG1zZzIgPDwga0JpZ2dlc3RT
aWduZWRQYXJzYWJsZU1heDsKLQotICBCaWdnZXN0U2lnbmVkUGFyc2FibGUgc2lnbmVkX3Jlc3Vs
dCA9IDA7Ci0gIEVYUEVDVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihtc2cyLkdldFN0cmluZygp
LCAmc2lnbmVkX3Jlc3VsdCkpOwotICBFWFBFQ1RfRVEoa0JpZ2dlc3RTaWduZWRQYXJzYWJsZU1h
eCwgc2lnbmVkX3Jlc3VsdCk7Ci0KLSAgTWVzc2FnZSBtc2czOwotICBtc2czIDw8IElOVF9NQVg7
Ci0KLSAgaW50IGludF9yZXN1bHQgPSAwOwotICBFWFBFQ1RfVFJVRShQYXJzZU5hdHVyYWxOdW1i
ZXIobXNnMy5HZXRTdHJpbmcoKSwgJmludF9yZXN1bHQpKTsKLSAgRVhQRUNUX0VRKElOVF9NQVgs
IGludF9yZXN1bHQpOwotCi0gIE1lc3NhZ2UgbXNnNDsKLSAgbXNnNCA8PCBVSU5UX01BWDsKLQot
ICB1bnNpZ25lZCBpbnQgdWludF9yZXN1bHQgPSAwOwotICBFWFBFQ1RfVFJVRShQYXJzZU5hdHVy
YWxOdW1iZXIobXNnNC5HZXRTdHJpbmcoKSwgJnVpbnRfcmVzdWx0KSk7Ci0gIEVYUEVDVF9FUShV
SU5UX01BWCwgdWludF9yZXN1bHQpOwotfQotCi1URVNUKFBhcnNlTmF0dXJhbE51bWJlclRlc3Qs
IFdvcmtzRm9yU2hvcnRlckludGVnZXJzKSB7Ci0gIHNob3J0IHNob3J0X3Jlc3VsdCA9IDA7Ci0g
IEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIjEyMyIpLCAmc2hvcnRfcmVz
dWx0KSk7Ci0gIEVYUEVDVF9FUSgxMjMsIHNob3J0X3Jlc3VsdCk7Ci0KLSAgc2lnbmVkIGNoYXIg
Y2hhcl9yZXN1bHQgPSAwOwotICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5n
KCIxMjMiKSwgJmNoYXJfcmVzdWx0KSk7Ci0gIEVYUEVDVF9FUSgxMjMsIGNoYXJfcmVzdWx0KTsK
LX0KLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLVRFU1QoRW52aXJvbm1lbnRUZXN0LCBIYW5kbGVG
aXRzSW50b1NpemVUKSB7Ci0gIC8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IFJlbW92ZSB0aGlz
IHRlc3QgYWZ0ZXIgdGhpcyBjb25kaXRpb24gaXMgdmVyaWZpZWQKLSAgLy8gaW4gYSBzdGF0aWMg
YXNzZXJ0aW9uIGluIGd0ZXN0LWRlYXRoLXRlc3QuY2MgaW4gdGhlIGZ1bmN0aW9uCi0gIC8vIEdl
dFN0YXR1c0ZpbGVEZXNjcmlwdG9yLgotICBBU1NFUlRfVFJVRShzaXplb2YoSEFORExFKSA8PSBz
aXplb2Yoc2l6ZV90KSk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotLy8gVGVz
dHMgdGhhdCBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEL0FTU0VSVF9ERUFUSF9JRl9TVVBQT1JU
RUQgdHJpZ2dlcgotLy8gZmFpbHVyZXMgd2hlbiBkZWF0aCB0ZXN0cyBhcmUgYXZhaWxhYmxlIG9u
IHRoZSBzeXN0ZW0uCi1URVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NEZWF0aFRlc3QsIEV4cGVj
dHNEZWF0aFdoZW5EZWF0aFRlc3RzQXZhaWxhYmxlKSB7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQ
T1JURUQoRGllSW5zaWRlKCJDb25kRGVhdGhUZXN0RXhwZWN0TWFjcm8iKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZGVhdGggaW5zaWRlIENvbmREZWF0aFRlc3RFeHBlY3RNYWNybyIp
OwotICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKERpZUluc2lkZSgiQ29uZERlYXRoVGVzdEFz
c2VydE1hY3JvIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlYXRoIGluc2lkZSBD
b25kRGVhdGhUZXN0QXNzZXJ0TWFjcm8iKTsKLQotICAvLyBFbXB0eSBzdGF0ZW1lbnQgd2lsbCBu
b3QgY3Jhc2gsIHdoaWNoIG11c3QgdHJpZ2dlciBhIGZhaWx1cmUuCi0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIpLCAiIik7Ci0gIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIpLCAiIik7Ci19
Ci0KLSNlbHNlCi0KLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpDYXB0dXJlU3RkZXJyOwotdXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldENhcHR1cmVkU3RkZXJyOwotdXNpbmcgdGVzdGluZzo6
aW50ZXJuYWw6OlN0cmluZzsKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEhfSUZfU1VQUE9S
VEVEL0FTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgYXJlIHN0aWxsCi0vLyBkZWZpbmVkIGJ1dCBk
byBub3QgdHJpZ2dlciBmYWlsdXJlcyB3aGVuIGRlYXRoIHRlc3RzIGFyZSBub3QgYXZhaWxhYmxl
IG9uCi0vLyB0aGUgc3lzdGVtLgotVEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zVGVzdCwgV2Fy
bnNXaGVuRGVhdGhUZXN0c05vdEF2YWlsYWJsZSkgewotICAvLyBFbXB0eSBzdGF0ZW1lbnQgd2ls
bCBub3QgY3Jhc2gsIGJ1dCB0aGF0IHNob3VsZCBub3QgdHJpZ2dlciBhIGZhaWx1cmUKLSAgLy8g
d2hlbiBkZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZC4KLSAgQ2FwdHVyZVN0ZGVycigpOwot
ICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKTsKLSAgU3RyaW5nIG91dHB1dCA9IEdl
dENhcHR1cmVkU3RkZXJyKCk7Ci0gIEFTU0VSVF9UUlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5j
X3N0cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVhdGggdGVzdHMgYXJlIG5v
dCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSIpKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCAhPSBz
dHJzdHIob3V0cHV0LmNfc3RyKCksICI7IikpOwotCi0gIC8vIFRoZSBzdHJlYW1lZCBtZXNzYWdl
IHNob3VsZCBub3QgYmUgcHJpbnRlZCBhcyB0aGVyZSBpcyBubyB0ZXN0IGZhaWx1cmUuCi0gIENh
cHR1cmVTdGRlcnIoKTsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIikgPDwgInN0
cmVhbWVkIG1lc3NhZ2UiOwotICBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVycigpOwotICBBU1NF
UlRfVFJVRShOVUxMID09IHN0cnN0cihvdXRwdXQuY19zdHIoKSwgInN0cmVhbWVkIG1lc3NhZ2Ui
KSk7Ci0KLSAgQ2FwdHVyZVN0ZGVycigpOwotICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKDss
ICIiKTsgIC8vIE5PTElOVAotICBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVycigpOwotICBBU1NF
UlRfVFJVRShOVUxMICE9IHN0cnN0cihvdXRwdXQuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZv
cm0iKSk7Ci0gIEFTU0VSVF9UUlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLCAiOyIp
KTsKLQotICBDYXB0dXJlU3RkZXJyKCk7Ci0gIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoOywg
IiIpIDw8ICJzdHJlYW1lZCBtZXNzYWdlIjsgIC8vIE5PTElOVAotICBvdXRwdXQgPSBHZXRDYXB0
dXJlZFN0ZGVycigpOwotICBBU1NFUlRfVFJVRShOVUxMID09IHN0cnN0cihvdXRwdXQuY19zdHIo
KSwgInN0cmVhbWVkIG1lc3NhZ2UiKSk7Ci19Ci0KLXZvaWQgRnVuY1dpdGhBc3NlcnQoaW50KiBu
KSB7Ci0gIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQocmV0dXJuOywgIiIpOwotICAoKm4pKys7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCBkb2VzIG5vdCBy
ZXR1cm4gZnJvbSB0aGUgY3VycmVudAotLy8gZnVuY3Rpb24gKGFzIEFTU0VSVF9ERUFUSCBkb2Vz
KSBpZiBkZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZC4KLVRFU1QoQ29uZGl0aW9uYWxEZWF0
aE1hY3Jvc1Rlc3QsIEFzc2VydERlYXREb2VzTm90UmV0dXJuaElmVW5zdXBwb3J0ZWQpIHsKLSAg
aW50IG4gPSAwOwotICBGdW5jV2l0aEFzc2VydCgmbik7Ci0gIEVYUEVDVF9FUSgxLCBuKTsKLX0K
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotLy8gVGVzdHMgdGhhdCB0aGUgZGVh
dGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUgd2hpY2ggbWF5IG9yIG1heSBub3QKLS8vIGJl
IGZvbGxvd2VkIGJ5IG9wZXJhdG9yPDwsIGFuZCB0aGF0IGluIGVpdGhlciBjYXNlIHRoZSBjb21w
bGV0ZSB0ZXh0Ci0vLyBjb21wcmlzZXMgb25seSBhIHNpbmdsZSBDKysgc3RhdGVtZW50LgotLy8K
LS8vIFRoZSBzeW50YXggc2hvdWxkIHdvcmsgd2hldGhlciBkZWF0aCB0ZXN0cyBhcmUgYXZhaWxh
YmxlIG9yIG5vdC4KLVRFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc1N5bnRheERlYXRoVGVzdCwg
U2luZ2xlU3RhdGVtZW50KSB7Ci0gIGlmIChBbHdheXNGYWxzZSgpKQotICAgIC8vIFRoaXMgd291
bGQgZmFpbCBpZiBleGVjdXRlZDsgdGhpcyBpcyBhIGNvbXBpbGF0aW9uIHRlc3Qgb25seQotICAg
IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQocmV0dXJuLCAiIik7Ci0KLSAgaWYgKEFsd2F5c1Ry
dWUoKSkKLSAgICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKF9leGl0KDEpLCAiIik7Ci0gIGVs
c2UKLSAgICAvLyBUaGlzIGVtcHR5ICJlbHNlIiBicmFuY2ggaXMgbWVhbnQgdG8gZW5zdXJlIHRo
YXQgRVhQRUNUX0RFQVRICi0gICAgLy8gZG9lc24ndCBleHBhbmQgaW50byBhbiAiaWYiIHN0YXRl
bWVudCB3aXRob3V0IGFuICJlbHNlIgotICAgIDsgIC8vIE5PTElOVAotCi0gIGlmIChBbHdheXNG
YWxzZSgpKQotICAgIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQocmV0dXJuLCAiIikgPDwgImRp
ZCBub3QgZGllIjsKLQotICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAgICA7ICAvLyBOT0xJTlQKLSAg
ZWxzZQotICAgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQoMSksICIiKSA8PCAxIDw8
IDIgPDwgMzsKLX0KLQotLy8gVGVzdHMgdGhhdCBjb25kaXRpb25hbCBkZWF0aCB0ZXN0IG1hY3Jv
cyBleHBhbmQgdG8gY29kZSB3aGljaCBpbnRlcmFjdHMKLS8vIHdlbGwgd2l0aCBzd2l0Y2ggc3Rh
dGVtZW50cy4KLVRFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc1N5bnRheERlYXRoVGVzdCwgU3dp
dGNoU3RhdGVtZW50KSB7Ci0vLyBNaWNyb3NvZnQgY29tcGlsZXIgdXN1YWxseSBjb21wbGFpbnMg
YWJvdXQgc3dpdGNoIHN0YXRlbWVudHMgd2l0aG91dAotLy8gY2FzZSBsYWJlbHMuIFdlIHN1cHBy
ZXNzIHRoYXQgd2FybmluZyBmb3IgdGhpcyB0ZXN0LgotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21h
IHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MDY1KQotI2VuZGlmICAv
LyBfTVNDX1ZFUgotCi0gIHN3aXRjaCAoMCkKLSAgICBkZWZhdWx0OgotICAgICAgQVNTRVJUX0RF
QVRIX0lGX1NVUFBPUlRFRChfZXhpdCgxKSwgIiIpCi0gICAgICAgICAgPDwgImV4aXQgaW4gZGVm
YXVsdCBzd2l0Y2ggaGFuZGxlciI7Ci0KLSAgc3dpdGNoICgwKQotICAgIGNhc2UgMDoKLSAgICAg
IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQoMSksICIiKSA8PCAiZXhpdCBpbiBzd2l0
Y2ggY2FzZSI7Ci0KLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRp
ZiAgLy8gX01TQ19WRVIKLX0KLQotLy8gVGVzdHMgdGhhdCBhIHRlc3QgY2FzZSB3aG9zZSBuYW1l
IGVuZHMgd2l0aCAiRGVhdGhUZXN0IiB3b3JrcyBmaW5lCi0vLyBvbiBXaW5kb3dzLgotVEVTVChO
b3RBRGVhdGhUZXN0LCBUZXN0KSB7Ci0gIFNVQ0NFRUQoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtZmlsZXBhdGhfdGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtZmlsZXBhdGhfdGVzdC5jYwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNjI1MDI4Mjc1OGRmYjNjOTNmNDdmMDkxYzUyYTJkYmY5MmNhY2Vl
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3QuY2MKKysrIC9kZXYvbnVs
bApAQCAtMSw2OTAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
Ly8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotLy8KLS8vIEF1dGhvcnM6IGtlaXRoLnJheUBnbWFpbC5jb20gKEtlaXRoIFJheSkK
LS8vCi0vLyBHb29nbGUgVGVzdCBmaWxlcGF0aCB1dGlsaXRpZXMKLS8vCi0vLyBUaGlzIGZpbGUg
dGVzdHMgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIHVzZWQgaW50ZXJuYWxseSBieQotLy8gR29vZ2xl
IFRlc3QuICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4KLS8vCi0v
LyBUaGlzIGZpbGUgaXMgI2luY2x1ZGVkIGZyb20gZ3Rlc3RfdW5pdHRlc3QuY2MsIHRvIGF2b2lk
IGNoYW5naW5nCi0vLyBidWlsZCBvciBtYWtlLWZpbGVzIGZvciBzb21lIGV4aXN0aW5nIEdvb2ds
ZSBUZXN0IGNsaWVudHMuIERvIG5vdAotLy8gI2luY2x1ZGUgdGhpcyBmaWxlIGFueXdoZXJlIGVs
c2UhCi0KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oPgotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24g
dW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVz
dCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRo
ZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZl
bnQgYSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwu
aCBpbgotLy8gaGlzIGNvZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5j
bHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFU
SU9OXwotCi0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSNpbmNsdWRlIDx3aW5kb3dzLmg+
ICAvLyBOT0xJTlQKLSNlbGlmIEdURVNUX09TX1dJTkRPV1MKLSNpbmNsdWRlIDxkaXJlY3QuaD4g
IC8vIE5PTElOVAotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi1uYW1lc3Bh
Y2UgdGVzdGluZyB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotbmFtZXNwYWNlIHsKLQotI2lmIEdU
RVNUX09TX1dJTkRPV1NfTU9CSUxFCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogTW92ZSB0aGVz
ZSB0byB0aGUgUE9TSVggYWRhcHRlciBzZWN0aW9uIGluCi0vLyBndGVzdC1wb3J0LmguCi0KLS8v
IFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlIHRoZSByZW1vdmUgQyBmdW5jdGlvbi4KLWludCByZW1v
dmUoY29uc3QgY2hhciogcGF0aCkgewotICBMUENXU1RSIHdwYXRoID0gU3RyaW5nOjpBbnNpVG9V
dGYxNihwYXRoKTsKLSAgaW50IHJldCA9IERlbGV0ZUZpbGUod3BhdGgpID8gMCA6IC0xOwotICBk
ZWxldGUgW10gd3BhdGg7Ci0gIHJldHVybiByZXQ7Ci19Ci0vLyBXaW5kb3dzIENFIGRvZXNuJ3Qg
aGF2ZSB0aGUgX3JtZGlyIEMgZnVuY3Rpb24uCi1pbnQgX3JtZGlyKGNvbnN0IGNoYXIqIHBhdGgp
IHsKLSAgRmlsZVBhdGggZmlsZXBhdGgocGF0aCk7Ci0gIExQQ1dTVFIgd3BhdGggPSBTdHJpbmc6
OkFuc2lUb1V0ZjE2KAotICAgICAgZmlsZXBhdGguUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9y
KCkuY19zdHIoKSk7Ci0gIGludCByZXQgPSBSZW1vdmVEaXJlY3Rvcnkod3BhdGgpID8gMCA6IC0x
OwotICBkZWxldGUgW10gd3BhdGg7Ci0gIHJldHVybiByZXQ7Ci19Ci0KLSNlbHNlCi0KLVRFU1Qo
R2V0Q3VycmVudERpclRlc3QsIFJldHVybnNDdXJyZW50RGlyKSB7Ci0gIGNvbnN0IEZpbGVQYXRo
IG9yaWdpbmFsX2RpciA9IEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCk7Ci0gIEVYUEVDVF9GQUxT
RShvcmlnaW5hbF9kaXIuSXNFbXB0eSgpKTsKLQotICBwb3NpeDo6Q2hEaXIoR1RFU1RfUEFUSF9T
RVBfKTsKLSAgY29uc3QgRmlsZVBhdGggY3dkID0gRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKTsK
LSAgcG9zaXg6OkNoRGlyKG9yaWdpbmFsX2Rpci5jX3N0cigpKTsKLQotI2lmIEdURVNUX09TX1dJ
TkRPV1MKLSAgLy8gU2tpcHMgdGhlICI6Ii4KLSAgY29uc3QgY2hhciogY29uc3QgY3dkX3dpdGhv
dXRfZHJpdmUgPSBzdHJjaHIoY3dkLmNfc3RyKCksICc6Jyk7Ci0gIEFTU0VSVF9UUlVFKGN3ZF93
aXRob3V0X2RyaXZlICE9IE5VTEwpOwotICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLCBj
d2Rfd2l0aG91dF9kcml2ZSArIDEpOwotI2Vsc2UKLSAgRVhQRUNUX1NUUkVRKEdURVNUX1BBVEhf
U0VQXywgY3dkLmNfc3RyKCkpOwotI2VuZGlmCi19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUKLQotVEVTVChJc0VtcHR5VGVzdCwgUmV0dXJuc1RydWVGb3JFbXB0eVBhdGgp
IHsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIiIpLklzRW1wdHkoKSk7Ci0gIEVYUEVDVF9UUlVF
KEZpbGVQYXRoKE5VTEwpLklzRW1wdHkoKSk7Ci19Ci0KLVRFU1QoSXNFbXB0eVRlc3QsIFJldHVy
bnNGYWxzZUZvck5vbkVtcHR5UGF0aCkgewotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImEiKS5J
c0VtcHR5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIi4iKS5Jc0VtcHR5KCkpOwotICBF
WFBFQ1RfRkFMU0UoRmlsZVBhdGgoImEvYiIpLklzRW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShG
aWxlUGF0aCgiYVxcYlxcIikuSXNFbXB0eSgpKTsKLX0KLQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFt
ZSAiIiAtPiAiIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgV2hlbkVtcHR5TmFtZSkg
ewotICBFWFBFQ1RfU1RSRVEoIiIsIEZpbGVQYXRoKCIiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCku
Y19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5hbWUgImFmaWxlIiAtPiAiYWZpbGUi
Ci1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBCdXROb0RpcmVjdG9yeSkgewotICBFWFBF
Q1RfU1RSRVEoImFmaWxlIiwKLSAgICAgIEZpbGVQYXRoKCJhZmlsZSIpLlJlbW92ZURpcmVjdG9y
eU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiL2FmaWxlIiAt
PiAiYWZpbGUiCi1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBSb290RmlsZVNob3VsZEdp
dmVGaWxlTmFtZSkgewotICBFWFBFQ1RfU1RSRVEoImFmaWxlIiwKLSAgICAgIEZpbGVQYXRoKEdU
RVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIoKSk7Ci19
Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5hbWUgImFkaXIvIiAtPiAiIgotVEVTVChSZW1vdmVEaXJl
Y3RvcnlOYW1lVGVzdCwgV2hlcmVUaGVyZUlzTm9GaWxlTmFtZSkgewotICBFWFBFQ1RfU1RSRVEo
IiIsCi0gICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfKS5SZW1vdmVEaXJlY3Rv
cnlOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5hbWUgImFkaXIvYWZp
bGUiIC0+ICJhZmlsZSIKLVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEdpdmVG
aWxlTmFtZSkgewotICBFWFBFQ1RfU1RSRVEoImFmaWxlIiwKLSAgICAgIEZpbGVQYXRoKCJhZGly
IiBHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkp
OwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZGlyL3N1YmRpci9hZmlsZSIgLT4gImFm
aWxlIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgU2hvdWxkQWxzb0dpdmVGaWxlTmFt
ZSkgewotICBFWFBFQ1RfU1RSRVEoImFmaWxlIiwKLSAgICAgIEZpbGVQYXRoKCJhZGlyIiBHVEVT
VF9QQVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIpCi0gICAgICAuUmVt
b3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOwotfQotCi0jaWYgR1RFU1RfSEFTX0FMVF9QQVRI
X1NFUF8KLQotLy8gVGVzdHMgdGhhdCBSZW1vdmVEaXJlY3RvcnlOYW1lKCkgd29ya3Mgd2l0aCB0
aGUgYWx0ZXJuYXRlIHNlcGFyYXRvcgotLy8gb24gV2luZG93cy4KLQotLy8gUmVtb3ZlRGlyZWN0
b3J5TmFtZSgiL2FmaWxlIikgLT4gImFmaWxlIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVz
dCwgUm9vdEZpbGVTaG91bGRHaXZlRmlsZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAg
RVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiL2FmaWxlIiku
UmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlO
YW1lKCJhZGlyLyIpIC0+ICIiCi1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBXaGVyZVRo
ZXJlSXNOb0ZpbGVOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgi
IiwKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyLyIpLlJlbW92ZURpcmVjdG9yeU5hbWUo
KS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgiYWRpci9hZmlsZSIpIC0+
ICJhZmlsZSIKLVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEdpdmVGaWxlTmFt
ZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoImFmaWxlIiwKLSAgICAg
ICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL2FmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNf
c3RyKCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCJhZGlyL3N1YmRpci9hZmlsZSIp
IC0+ICJhZmlsZSIKLVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEFsc29HaXZl
RmlsZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIs
Ci0gICAgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci9zdWJkaXIvYWZpbGUiKS5SZW1vdmVEaXJl
Y3RvcnlOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLSNlbmRpZgotCi0vLyBSZW1vdmVGaWxlTmFtZSAi
IiAtPiAiLi8iCi1URVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgRW1wdHlOYW1lKSB7Ci0jaWYgR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKLSAgLy8gT24gV2luZG93cyBDRSwgd2UgdXNlIHRoZSByb290
IGFzIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLSAgRVhQRUNUX1NUUkVRKEdURVNUX1BBVEhfU0VQ
XywKLSAgICAgIEZpbGVQYXRoKCIiKS5SZW1vdmVGaWxlTmFtZSgpLmNfc3RyKCkpOwotI2Vsc2UK
LSAgRVhQRUNUX1NUUkVRKCIuIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICBGaWxlUGF0aCgiIiku
UmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKLSNlbmRpZgotfQotCi0vLyBSZW1vdmVGaWxlTmFt
ZSAiYWRpci8iIC0+ICJhZGlyLyIKLVRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBCdXROb0ZpbGUp
IHsKLSAgRVhQRUNUX1NUUkVRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICBGaWxlUGF0
aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfKS5SZW1vdmVGaWxlTmFtZSgpLmNfc3RyKCkpOwotfQot
Ci0vLyBSZW1vdmVGaWxlTmFtZSAiYWRpci9hZmlsZSIgLT4gImFkaXIvIgotVEVTVChSZW1vdmVG
aWxlTmFtZVRlc3QsIEdpdmVzRGlyTmFtZSkgewotICBFWFBFQ1RfU1RSRVEoImFkaXIiIEdURVNU
X1BBVEhfU0VQXywKLSAgICAgIEZpbGVQYXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gImFmaWxl
IikKLSAgICAgIC5SZW1vdmVGaWxlTmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVGaWxl
TmFtZSAiYWRpci9zdWJkaXIvYWZpbGUiIC0+ICJhZGlyL3N1YmRpci8iCi1URVNUKFJlbW92ZUZp
bGVOYW1lVGVzdCwgR2l2ZXNEaXJBbmRTdWJEaXJOYW1lKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWRp
ciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXywKLSAgICAgIEZpbGVQ
YXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9TRVBfICJhZmls
ZSIpCi0gICAgICAuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRmls
ZU5hbWUgIi9hZmlsZSIgLT4gIi8iCi1URVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNSb290
RGlyKSB7Ci0gIEVYUEVDVF9TVFJFUShHVEVTVF9QQVRIX1NFUF8sCi0gICAgICBGaWxlUGF0aChH
VEVTVF9QQVRIX1NFUF8gImFmaWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKLX0KLQot
I2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCi0KLS8vIFRlc3RzIHRoYXQgUmVtb3ZlRmlsZU5h
bWUoKSB3b3JrcyB3aXRoIHRoZSBhbHRlcm5hdGUgc2VwYXJhdG9yIG9uCi0vLyBXaW5kb3dzLgot
Ci0vLyBSZW1vdmVGaWxlTmFtZSgiYWRpci8iKSAtPiAiYWRpci8iCi1URVNUKFJlbW92ZUZpbGVO
YW1lVGVzdCwgQnV0Tm9GaWxlRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJF
USgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIv
IikuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRmlsZU5hbWUoImFk
aXIvYWZpbGUiKSAtPiAiYWRpci8iCi1URVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNEaXJO
YW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWRpciIgR1RFU1Rf
UEFUSF9TRVBfLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvYWZpbGUiKS5SZW1vdmVG
aWxlTmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVGaWxlTmFtZSgiYWRpci9zdWJkaXIv
YWZpbGUiKSAtPiAiYWRpci9zdWJkaXIvIgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVz
RGlyQW5kU3ViRGlyTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEo
ImFkaXIiIEdURVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICAg
ICAgICAgICBGaWxlUGF0aCgiYWRpci9zdWJkaXIvYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLmNf
c3RyKCkpOwotfQotCi0vLyBSZW1vdmVGaWxlTmFtZSgiL2FmaWxlIikgLT4gIlwiCi1URVNUKFJl
bW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNSb290RGlyRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7Ci0g
IEVYUEVDVF9TVFJFUShHVEVTVF9QQVRIX1NFUF8sCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgi
L2FmaWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKLX0KLQotI2VuZGlmCi0KLVRFU1Qo
TWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVySXNaZXJvKSB7Ci0gIEZpbGVQYXRo
IGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoImZvbyIpLCBGaWxlUGF0
aCgiYmFyIiksCi0gICAgICAwLCAieG1sIik7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1QoTWFrZUZpbGVO
YW1lVGVzdCwgR2VuZXJhdGVGaWxlTmFtZU51bWJlckd0WmVybykgewotICBGaWxlUGF0aCBhY3R1
YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCJmb28iKSwgRmlsZVBhdGgoImJh
ciIpLAotICAgICAgMTIsICJ4bWwiKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhf
U0VQXyAiYmFyXzEyLnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChNYWtlRmlsZU5h
bWVUZXN0LCBHZW5lcmF0ZUZpbGVOYW1lV2l0aFNsYXNoTnVtYmVySXNaZXJvKSB7Ci0gIEZpbGVQ
YXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoImZvbyIgR1RFU1Rf
UEFUSF9TRVBfKSwKLSAgICAgIEZpbGVQYXRoKCJiYXIiKSwgMCwgInhtbCIpOwotICBFWFBFQ1Rf
U1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFsLmNfc3RyKCkpOwot
fQotCi1URVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlRmlsZU5hbWVXaXRoU2xhc2hOdW1i
ZXJHdFplcm8pIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShG
aWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAotICAgICAgRmlsZVBhdGgoImJhciIpLCAx
MiwgInhtbCIpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXJfMTIu
eG1sIiwgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVy
YXRlV2hlbk51bWJlcklzWmVyb0FuZERpcklzRW1wdHkpIHsKLSAgRmlsZVBhdGggYWN0dWFsID0g
RmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiIiksIEZpbGVQYXRoKCJiYXIiKSwKLSAg
ICAgIDAsICJ4bWwiKTsKLSAgRVhQRUNUX1NUUkVRKCJiYXIueG1sIiwgYWN0dWFsLmNfc3RyKCkp
OwotfQotCi1URVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlV2hlbk51bWJlcklzTm90WmVy
b0FuZERpcklzRW1wdHkpIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxl
TmFtZShGaWxlUGF0aCgiIiksIEZpbGVQYXRoKCJiYXIiKSwKLSAgICAgIDE0LCAieG1sIik7Ci0g
IEVYUEVDVF9TVFJFUSgiYmFyXzE0LnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChD
b25jYXRQYXRoc1Rlc3QsIFdvcmtzV2hlbkRpckRvZXNOb3RFbmRXaXRoUGF0aFNlcCkgewotICBG
aWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJhci54
bWwiKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBh
Y3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBXb3Jrc1doZW5QYXRo
MUVuZHNXaXRoUGF0aFNlcCkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0
UGF0aHMoRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJiYXIueG1sIikpOwotICBFWFBFQ1Rf
U1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFsLmNfc3RyKCkpOwot
fQotCi1URVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDFCZWluZ0VtcHR5KSB7Ci0gIEZpbGVQYXRo
IGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiIiksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiYmFyLnhtbCIpKTsKLSAg
RVhQRUNUX1NUUkVRKCJiYXIueG1sIiwgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNUKENvbmNh
dFBhdGhzVGVzdCwgUGF0aDJCZWluZ0VtcHR5KSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQ
YXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiIikpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIg
R1RFU1RfUEFUSF9TRVBfLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1QoQ29uY2F0UGF0aHNU
ZXN0LCBCb3RoUGF0aEJlaW5nRW1wdHkpIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6
OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZpbGVQYXRoKCIiKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgYWN0dWFsLmNf
c3RyKCkpOwotfQotCi1URVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDFDb250YWluc1BhdGhTZXAp
IHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJm
b28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9vYmFyLnhtbCIpKTsKLSAgRVhQRUNUX1NUUkVRKCJm
b28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBHVEVTVF9QQVRIX1NFUF8gImZvb2Jhci54bWwiLAot
ICAgICAgICAgICAgICAgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNUKENvbmNhdFBhdGhzVGVz
dCwgUGF0aDJDb250YWluc1BhdGhTZXApIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6
OkNvbmNhdFBhdGhzKAotICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKSwKLSAg
ICAgIEZpbGVQYXRoKCJiYXIiIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIpKTsKLSAgRVhQRUNU
X1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBHVEVTVF9QQVRIX1NFUF8gImJhci54
bWwiLAotICAgICAgICAgICAgICAgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNUKENvbmNhdFBh
dGhzVGVzdCwgUGF0aDJFbmRzV2l0aFBhdGhTZXApIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmls
ZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJiYXIiIEdURVNUX1BBVEhfU0VQXykpOwot
ICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQ
XywgYWN0dWFsLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3Ig
IiIgLT4gIiIKLVRFU1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgRW1wdHlTdHJp
bmcpIHsKLSAgRVhQRUNUX1NUUkVRKCIiLAotICAgICAgRmlsZVBhdGgoIiIpLlJlbW92ZVRyYWls
aW5nUGF0aFNlcGFyYXRvcigpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVUcmFpbGluZ1BhdGhT
ZXBhcmF0b3IgImZvbyIgLT4gImZvbyIKLVRFU1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9y
VGVzdCwgRmlsZU5vU2xhc2hTdHJpbmcpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28iLAotICAgICAg
RmlsZVBhdGgoImZvbyIpLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLmNfc3RyKCkpOwot
fQotCi0vLyBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IgImZvby8iIC0+ICJmb28iCi1URVNU
KFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvclRlc3QsIFNob3VsZFJlbW92ZVRyYWlsaW5nU2Vw
YXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgKLSAgICAgICJmb28iLAotICAgICAgRmlsZVBhdGgo
ImZvbyIgR1RFU1RfUEFUSF9TRVBfKS5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0
cigpKTsKLSNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXwotICBFWFBFQ1RfU1RSRVEoImZvbyIs
Ci0gICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9vLyIpLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFy
YXRvcigpLmNfc3RyKCkpOwotI2VuZGlmCi19Ci0KLS8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFy
YXRvciAiZm9vL2Jhci8iIC0+ICJmb28vYmFyLyIKLVRFU1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2Vw
YXJhdG9yVGVzdCwgU2hvdWxkUmVtb3ZlTGFzdFNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEo
ImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImZv
byIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXykKLSAgICAgICAgICAgICAg
IC5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3Zl
VHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28vYmFyIiAtPiAiZm9vL2JhciIKLVRFU1QoUmVtb3Zl
VHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgU2hvdWxkUmV0dXJuVW5tb2RpZmllZCkgewotICBF
WFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgICAgICAgICAgICAg
RmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiKQotICAgICAgICAgICAgICAgLlJl
bW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLmNfc3RyKCkpOwotfQotCi1URVNUKERpcmVjdG9y
eVRlc3QsIFJvb3REaXJlY3RvcnlFeGlzdHMpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTICAvLyBX
ZSBhcmUgb24gV2luZG93cy4KLSAgY2hhciBjdXJyZW50X2RyaXZlW19NQVhfUEFUSF07ICAvLyBO
T0xJTlQKLSAgY3VycmVudF9kcml2ZVswXSA9IHN0YXRpY19jYXN0PGNoYXI+KF9nZXRkcml2ZSgp
ICsgJ0EnIC0gMSk7Ci0gIGN1cnJlbnRfZHJpdmVbMV0gPSAnOic7Ci0gIGN1cnJlbnRfZHJpdmVb
Ml0gPSAnXFwnOwotICBjdXJyZW50X2RyaXZlWzNdID0gJ1wwJzsKLSAgRVhQRUNUX1RSVUUoRmls
ZVBhdGgoY3VycmVudF9kcml2ZSkuRGlyZWN0b3J5RXhpc3RzKCkpOwotI2Vsc2UKLSAgRVhQRUNU
X1RSVUUoRmlsZVBhdGgoIi8iKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0jZW5kaWYgIC8vIEdURVNU
X09TX1dJTkRPV1MKLX0KLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLVRFU1QoRGlyZWN0b3J5VGVz
dCwgUm9vdE9mV3JvbmdEcml2ZURvZXNOb3RFeGlzdHMpIHsKLSAgY29uc3QgaW50IHNhdmVkX2Ry
aXZlXyA9IF9nZXRkcml2ZSgpOwotICAvLyBGaW5kIGEgZHJpdmUgdGhhdCBkb2Vzbid0IGV4aXN0
LiBTdGFydCB3aXRoICdaJyB0byBhdm9pZCBjb21tb24gb25lcy4KLSAgZm9yIChjaGFyIGRyaXZl
ID0gJ1onOyBkcml2ZSA+PSAnQSc7IGRyaXZlLS0pCi0gICAgaWYgKF9jaGRyaXZlKGRyaXZlIC0g
J0EnICsgMSkgPT0gLTEpIHsKLSAgICAgIGNoYXIgbm9uX2RyaXZlW19NQVhfUEFUSF07ICAvLyBO
T0xJTlQKLSAgICAgIG5vbl9kcml2ZVswXSA9IGRyaXZlOwotICAgICAgbm9uX2RyaXZlWzFdID0g
JzonOwotICAgICAgbm9uX2RyaXZlWzJdID0gJ1xcJzsKLSAgICAgIG5vbl9kcml2ZVszXSA9ICdc
MCc7Ci0gICAgICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgobm9uX2RyaXZlKS5EaXJlY3RvcnlFeGlz
dHMoKSk7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gIF9jaGRyaXZlKHNhdmVkX2RyaXZlXyk7Ci19
Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotI2lmICFHVEVTVF9PU19XSU5ET1dTX01P
QklMRQotLy8gV2luZG93cyBDRSBfZG9lc18gY29uc2lkZXIgYW4gZW1wdHkgZGlyZWN0b3J5IHRv
IGV4aXN0LgotVEVTVChEaXJlY3RvcnlUZXN0LCBFbXB0eVBhdGhEaXJlY3RvcnlEb2VzTm90RXhp
c3QpIHsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIiKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci19
Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi1URVNUKERpcmVjdG9yeVRl
c3QsIEN1cnJlbnREaXJlY3RvcnlFeGlzdHMpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTICAvLyBX
ZSBhcmUgb24gV2luZG93cy4KLSNpZm5kZWYgX1dJTjMyX0NFICAvLyBXaW5kb3dzIENFIGRvZXNu
J3QgaGF2ZSBhIGN1cnJlbnQgZGlyZWN0b3J5LgotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiLiIp
LkRpcmVjdG9yeUV4aXN0cygpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi5cXCIpLkRpcmVj
dG9yeUV4aXN0cygpKTsKLSNlbmRpZiAgLy8gX1dJTjMyX0NFCi0jZWxzZQotICBFWFBFQ1RfVFJV
RShGaWxlUGF0aCgiLiIpLkRpcmVjdG9yeUV4aXN0cygpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBh
dGgoIi4vIikuRGlyZWN0b3J5RXhpc3RzKCkpOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dT
Ci19Ci0KLVRFU1QoTm9ybWFsaXplVGVzdCwgTnVsbFN0cmluZ3NFcXVhbEVtcHR5RGlyZWN0b3J5
KSB7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgRmlsZVBhdGgoTlVMTCkuY19zdHIoKSk7Ci0gIEVYUEVD
VF9TVFJFUSgiIiwgRmlsZVBhdGgoU3RyaW5nKE5VTEwpKS5jX3N0cigpKTsKLX0KLQotLy8gImZv
by9iYXIiID09IGZvby8vYmFyIiA9PSAiZm9vLy8vYmFyIgotVEVTVChOb3JtYWxpemVUZXN0LCBN
dWx0aXBsZUNvbnNlY3V0aXZlU2VwYXBhcmF0b3JzSW5NaWRzdHJpbmcpIHsKLSAgRVhQRUNUX1NU
UkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICAgICAgICAgICAgIEZpbGVQYXRo
KCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgi
Zm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5jX3N0cigpKTsKLSAgRVhQ
RUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICAgICAgICAgICAgIEZp
bGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8KLSAgICAgICAgICAg
ICAgICAgICAgICAgIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuY19zdHIoKSk7Ci19Ci0KLS8vICIv
YmFyIiA9PSAvL2JhciIgPT0gIi8vL2JhciIKLVRFU1QoTm9ybWFsaXplVGVzdCwgTXVsdGlwbGVD
b25zZWN1dGl2ZVNlcGFwYXJhdG9yc0F0U3RyaW5nU3RhcnQpIHsKLSAgRVhQRUNUX1NUUkVRKEdU
RVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gImJhciIp
LmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgIEZp
bGVQYXRoKEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gImJhciIpLmNfc3RyKCkpOwot
ICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgIEZpbGVQYXRoKEdURVNU
X1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5jX3N0cigp
KTsKLX0KLQotLy8gImZvby8iID09IGZvby8vIiA9PSAiZm9vLy8vIgotVEVTVChOb3JtYWxpemVU
ZXN0LCBNdWx0aXBsZUNvbnNlY3V0aXZlU2VwYXBhcmF0b3JzQXRTdHJpbmdFbmQpIHsKLSAgRVhQ
RUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKLSAgICBGaWxlUGF0aCgiZm9vIiBHVEVT
VF9QQVRIX1NFUF8pLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9T
RVBfLAotICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8p
LmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAotICAgIEZp
bGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9T
RVBfKS5jX3N0cigpKTsKLX0KLQotI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCi0KLS8vIFRl
c3RzIHRoYXQgc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgYXJlIG5vcm1hbGl6
ZWQKLS8vIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgY29tYmluYXRpb24gKGUuZy4gImZvb1wiID09ImZv
by9cIiA9PQotLy8gImZvb1xcLyIpLgotVEVTVChOb3JtYWxpemVUZXN0LCBNaXhBbHRlcm5hdGVT
ZXBhcmF0b3JBdFN0cmluZ0VuZCkgewotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9T
RVBfLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvby8iKS5jX3N0cigpKTsKLSAgRVhQRUNU
X1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJm
b28iIEdURVNUX1BBVEhfU0VQXyAiLyIpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIg
R1RFU1RfUEFUSF9TRVBfLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvby8vIiBHVEVTVF9Q
QVRIX1NFUF8pLmNfc3RyKCkpOwotfQotCi0jZW5kaWYKLQotVEVTVChBc3NpZ25tZW50T3BlcmF0
b3JUZXN0LCBEZWZhdWx0QXNzaWduZWRUb05vbkRlZmF1bHQpIHsKLSAgRmlsZVBhdGggZGVmYXVs
dF9wYXRoOwotICBGaWxlUGF0aCBub25fZGVmYXVsdF9wYXRoKCJwYXRoIik7Ci0gIG5vbl9kZWZh
dWx0X3BhdGggPSBkZWZhdWx0X3BhdGg7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgbm9uX2RlZmF1bHRf
cGF0aC5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCBkZWZhdWx0X3BhdGguY19zdHIoKSk7
ICAvLyBSSFMgdmFyIGlzIHVuY2hhbmdlZC4KLX0KLQotVEVTVChBc3NpZ25tZW50T3BlcmF0b3JU
ZXN0LCBOb25EZWZhdWx0QXNzaWduZWRUb0RlZmF1bHQpIHsKLSAgRmlsZVBhdGggbm9uX2RlZmF1
bHRfcGF0aCgicGF0aCIpOwotICBGaWxlUGF0aCBkZWZhdWx0X3BhdGg7Ci0gIGRlZmF1bHRfcGF0
aCA9IG5vbl9kZWZhdWx0X3BhdGg7Ci0gIEVYUEVDVF9TVFJFUSgicGF0aCIsIGRlZmF1bHRfcGF0
aC5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJwYXRoIiwgbm9uX2RlZmF1bHRfcGF0aC5jX3N0
cigpKTsgIC8vIFJIUyB2YXIgaXMgdW5jaGFuZ2VkLgotfQotCi1URVNUKEFzc2lnbm1lbnRPcGVy
YXRvclRlc3QsIENvbnN0QXNzaWduZWRUb05vbkNvbnN0KSB7Ci0gIGNvbnN0IEZpbGVQYXRoIGNv
bnN0X2RlZmF1bHRfcGF0aCgiY29uc3RfcGF0aCIpOwotICBGaWxlUGF0aCBub25fZGVmYXVsdF9w
YXRoKCJwYXRoIik7Ci0gIG5vbl9kZWZhdWx0X3BhdGggPSBjb25zdF9kZWZhdWx0X3BhdGg7Ci0g
IEVYUEVDVF9TVFJFUSgiY29uc3RfcGF0aCIsIG5vbl9kZWZhdWx0X3BhdGguY19zdHIoKSk7Ci19
Ci0KLWNsYXNzIERpcmVjdG9yeUNyZWF0aW9uVGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwcm90ZWN0
ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICB0ZXN0ZGF0YV9wYXRoXy5TZXQoRmls
ZVBhdGgoU3RyaW5nOjpGb3JtYXQoIiVzJXMlcyIsCi0gICAgICAgIFRlbXBEaXIoKS5jX3N0cigp
LCBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5jX3N0cigpLAotICAgICAgICAiX2RpcmVjdG9y
eV9jcmVhdGlvbiIgR1RFU1RfUEFUSF9TRVBfICJ0ZXN0IiBHVEVTVF9QQVRIX1NFUF8pKSk7Ci0g
ICAgdGVzdGRhdGFfZmlsZV8uU2V0KHRlc3RkYXRhX3BhdGhfLlJlbW92ZVRyYWlsaW5nUGF0aFNl
cGFyYXRvcigpKTsKLQotICAgIHVuaXF1ZV9maWxlMF8uU2V0KEZpbGVQYXRoOjpNYWtlRmlsZU5h
bWUodGVzdGRhdGFfcGF0aF8sIEZpbGVQYXRoKCJ1bmlxdWUiKSwKLSAgICAgICAgMCwgInR4dCIp
KTsKLSAgICB1bmlxdWVfZmlsZTFfLlNldChGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKHRlc3RkYXRh
X3BhdGhfLCBGaWxlUGF0aCgidW5pcXVlIiksCi0gICAgICAgIDEsICJ0eHQiKSk7Ci0KLSAgICBy
ZW1vdmUodGVzdGRhdGFfZmlsZV8uY19zdHIoKSk7Ci0gICAgcmVtb3ZlKHVuaXF1ZV9maWxlMF8u
Y19zdHIoKSk7Ci0gICAgcmVtb3ZlKHVuaXF1ZV9maWxlMV8uY19zdHIoKSk7Ci0gICAgcG9zaXg6
OlJtRGlyKHRlc3RkYXRhX3BhdGhfLmNfc3RyKCkpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRl
YXJEb3duKCkgewotICAgIHJlbW92ZSh0ZXN0ZGF0YV9maWxlXy5jX3N0cigpKTsKLSAgICByZW1v
dmUodW5pcXVlX2ZpbGUwXy5jX3N0cigpKTsKLSAgICByZW1vdmUodW5pcXVlX2ZpbGUxXy5jX3N0
cigpKTsKLSAgICBwb3NpeDo6Um1EaXIodGVzdGRhdGFfcGF0aF8uY19zdHIoKSk7Ci0gIH0KLQot
ICBTdHJpbmcgVGVtcERpcigpIGNvbnN0IHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQot
ICAgIHJldHVybiBTdHJpbmcoIlxcdGVtcFxcIik7Ci0jZWxpZiBHVEVTVF9PU19XSU5ET1dTCi0g
ICAgY29uc3QgY2hhciogdGVtcF9kaXIgPSBwb3NpeDo6R2V0RW52KCJURU1QIik7Ci0gICAgaWYg
KHRlbXBfZGlyID09IE5VTEwgfHwgdGVtcF9kaXJbMF0gPT0gJ1wwJykKLSAgICAgIHJldHVybiBT
dHJpbmcoIlxcdGVtcFxcIik7Ci0gICAgZWxzZSBpZiAoU3RyaW5nKHRlbXBfZGlyKS5FbmRzV2l0
aCgiXFwiKSkKLSAgICAgIHJldHVybiBTdHJpbmcodGVtcF9kaXIpOwotICAgIGVsc2UKLSAgICAg
IHJldHVybiBTdHJpbmc6OkZvcm1hdCgiJXNcXCIsIHRlbXBfZGlyKTsKLSNlbHNlCi0gICAgcmV0
dXJuIFN0cmluZygiL3RtcC8iKTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
LSAgfQotCi0gIHZvaWQgQ3JlYXRlVGV4dEZpbGUoY29uc3QgY2hhciogZmlsZW5hbWUpIHsKLSAg
ICBGSUxFKiBmID0gcG9zaXg6OkZPcGVuKGZpbGVuYW1lLCAidyIpOwotICAgIGZwcmludGYoZiwg
InRleHRcbiIpOwotICAgIGZjbG9zZShmKTsKLSAgfQotCi0gIC8vIFN0cmluZ3MgcmVwcmVzZW50
aW5nIGEgZGlyZWN0b3J5IGFuZCBhIGZpbGUsIHdpdGggaWRlbnRpY2FsIHBhdGhzCi0gIC8vIGV4
Y2VwdCBmb3IgdGhlIHRyYWlsaW5nIHNlcGFyYXRvciBjaGFyYWN0ZXIgdGhhdCBkaXN0aW5xdWlz
aGVzCi0gIC8vIGEgZGlyZWN0b3J5IG5hbWVkICd0ZXN0JyBmcm9tIGEgZmlsZSBuYW1lZCAndGVz
dCcuIEV4YW1wbGUgbmFtZXM6Ci0gIEZpbGVQYXRoIHRlc3RkYXRhX3BhdGhfOyAgLy8gIi90bXAv
ZGlyZWN0b3J5X2NyZWF0aW9uL3Rlc3QvIgotICBGaWxlUGF0aCB0ZXN0ZGF0YV9maWxlXzsgIC8v
ICIvdG1wL2RpcmVjdG9yeV9jcmVhdGlvbi90ZXN0IgotICBGaWxlUGF0aCB1bmlxdWVfZmlsZTBf
OyAgLy8gIi90bXAvZGlyZWN0b3J5X2NyZWF0aW9uL3Rlc3QvdW5pcXVlLnR4dCIKLSAgRmlsZVBh
dGggdW5pcXVlX2ZpbGUxXzsgIC8vICIvdG1wL2RpcmVjdG9yeV9jcmVhdGlvbi90ZXN0L3VuaXF1
ZV8xLnR4dCIKLX07Ci0KLVRFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURpcmVj
dG9yaWVzUmVjdXJzaXZlbHkpIHsKLSAgRVhQRUNUX0ZBTFNFKHRlc3RkYXRhX3BhdGhfLkRpcmVj
dG9yeUV4aXN0cygpKSA8PCB0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpOwotICBFWFBFQ1RfVFJVRSh0
ZXN0ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOwotICBFWFBFQ1Rf
VFJVRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlzdHMoKSk7Ci19Ci0KLVRFU1RfRihEaXJl
Y3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURpcmVjdG9yaWVzRm9yQWxyZWFkeUV4aXN0aW5nUGF0
aCkgewotICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfcGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkpIDw8
IHRlc3RkYXRhX3BhdGhfLmNfc3RyKCk7Ci0gIEVYUEVDVF9UUlVFKHRlc3RkYXRhX3BhdGhfLkNy
ZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKSk7Ci0gIC8vIENhbGwgJ2NyZWF0ZScgYWdhaW4u
Li4gc2hvdWxkIHN0aWxsIHN1Y2NlZWQuCi0gIEVYUEVDVF9UUlVFKHRlc3RkYXRhX3BhdGhfLkNy
ZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKSk7Ci19Ci0KLVRFU1RfRihEaXJlY3RvcnlDcmVh
dGlvblRlc3QsIENyZWF0ZURpcmVjdG9yaWVzQW5kVW5pcXVlRmlsZW5hbWUpIHsKLSAgRmlsZVBh
dGggZmlsZV9wYXRoKEZpbGVQYXRoOjpHZW5lcmF0ZVVuaXF1ZUZpbGVOYW1lKHRlc3RkYXRhX3Bh
dGhfLAotICAgICAgRmlsZVBhdGgoInVuaXF1ZSIpLCAidHh0IikpOwotICBFWFBFQ1RfU1RSRVEo
dW5pcXVlX2ZpbGUwXy5jX3N0cigpLCBmaWxlX3BhdGguY19zdHIoKSk7Ci0gIEVYUEVDVF9GQUxT
RShmaWxlX3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8gZmlsZSBub3QgdGhlcmUK
LQotICB0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCk7Ci0gIEVY
UEVDVF9GQUxTRShmaWxlX3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8gZmlsZSBz
dGlsbCBub3QgdGhlcmUKLSAgQ3JlYXRlVGV4dEZpbGUoZmlsZV9wYXRoLmNfc3RyKCkpOwotICBF
WFBFQ1RfVFJVRShmaWxlX3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOwotCi0gIEZpbGVQ
YXRoIGZpbGVfcGF0aDIoRmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5hbWUodGVzdGRhdGFf
cGF0aF8sCi0gICAgICBGaWxlUGF0aCgidW5pcXVlIiksICJ0eHQiKSk7Ci0gIEVYUEVDVF9TVFJF
USh1bmlxdWVfZmlsZTFfLmNfc3RyKCksIGZpbGVfcGF0aDIuY19zdHIoKSk7Ci0gIEVYUEVDVF9G
QUxTRShmaWxlX3BhdGgyLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsgIC8vIGZpbGUgbm90IHRo
ZXJlCi0gIENyZWF0ZVRleHRGaWxlKGZpbGVfcGF0aDIuY19zdHIoKSk7Ci0gIEVYUEVDVF9UUlVF
KGZpbGVfcGF0aDIuRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOwotfQotCi1URVNUX0YoRGlyZWN0
b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0ZhaWwpIHsKLSAgLy8gZm9yY2UgYSBm
YWlsdXJlIGJ5IHB1dHRpbmcgYSBmaWxlIHdoZXJlIHdlIHdpbGwgdHJ5IHRvIGNyZWF0ZSBhIGRp
cmVjdG9yeS4KLSAgQ3JlYXRlVGV4dEZpbGUodGVzdGRhdGFfZmlsZV8uY19zdHIoKSk7Ci0gIEVY
UEVDVF9UUlVFKHRlc3RkYXRhX2ZpbGVfLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsKLSAgRVhQ
RUNUX0ZBTFNFKHRlc3RkYXRhX2ZpbGVfLkRpcmVjdG9yeUV4aXN0cygpKTsKLSAgRVhQRUNUX0ZB
TFNFKHRlc3RkYXRhX2ZpbGVfLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKSk7Ci19Ci0K
LVRFU1QoTm9EaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZU5vRGlyZWN0b3JpZXNGb3JEZWZh
dWx0WG1sRmlsZSkgewotICBjb25zdCBGaWxlUGF0aCB0ZXN0X2RldGFpbF94bWwoInRlc3RfZGV0
YWlsLnhtbCIpOwotICBFWFBFQ1RfRkFMU0UodGVzdF9kZXRhaWxfeG1sLkNyZWF0ZURpcmVjdG9y
aWVzUmVjdXJzaXZlbHkoKSk7Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0LCBEZWZhdWx0Q29uc3Ry
dWN0b3IpIHsKLSAgRmlsZVBhdGggZnA7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgZnAuY19zdHIoKSk7
Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0LCBDaGFyQW5kQ29weUNvbnN0cnVjdG9ycykgewotICBj
b25zdCBGaWxlUGF0aCBmcCgic3BpY3kiKTsKLSAgRVhQRUNUX1NUUkVRKCJzcGljeSIsIGZwLmNf
c3RyKCkpOwotCi0gIGNvbnN0IEZpbGVQYXRoIGZwX2NvcHkoZnApOwotICBFWFBFQ1RfU1RSRVEo
InNwaWN5IiwgZnBfY29weS5jX3N0cigpKTsKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIFN0cmlu
Z0NvbnN0cnVjdG9yKSB7Ci0gIGNvbnN0IEZpbGVQYXRoIGZwKFN0cmluZygiY2lkZXIiKSk7Ci0g
IEVYUEVDVF9TVFJFUSgiY2lkZXIiLCBmcC5jX3N0cigpKTsKLX0KLQotVEVTVChGaWxlUGF0aFRl
c3QsIFNldCkgewotICBjb25zdCBGaWxlUGF0aCBhcHBsZSgiYXBwbGUiKTsKLSAgRmlsZVBhdGgg
bWFjKCJtYWMiKTsKLSAgbWFjLlNldChhcHBsZSk7ICAvLyBJbXBsZW1lbnQgU2V0KCkgc2luY2Ug
b3ZlcmxvYWRpbmcgb3BlcmF0b3I9IGlzIGZvcmJpZGRlbi4KLSAgRVhQRUNUX1NUUkVRKCJhcHBs
ZSIsIG1hYy5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJhcHBsZSIsIGFwcGxlLmNfc3RyKCkp
OwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgVG9TdHJpbmcpIHsKLSAgY29uc3QgRmlsZVBhdGgg
ZmlsZSgiZHJpbmsiKTsKLSAgU3RyaW5nIHN0cihmaWxlLlRvU3RyaW5nKCkpOwotICBFWFBFQ1Rf
U1RSRVEoImRyaW5rIiwgc3RyLmNfc3RyKCkpOwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgUmVt
b3ZlRXh0ZW5zaW9uKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYXBwIiwgRmlsZVBhdGgoImFwcC5leGUi
KS5SZW1vdmVFeHRlbnNpb24oImV4ZSIpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIkFQUCIs
IEZpbGVQYXRoKCJBUFAuRVhFIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5jX3N0cigpKTsKLX0K
LQotVEVTVChGaWxlUGF0aFRlc3QsIFJlbW92ZUV4dGVuc2lvbldoZW5UaGVyZUlzTm9FeHRlbnNp
b24pIHsKLSAgRVhQRUNUX1NUUkVRKCJhcHAiLCBGaWxlUGF0aCgiYXBwIikuUmVtb3ZlRXh0ZW5z
aW9uKCJleGUiKS5jX3N0cigpKTsKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIElzRGlyZWN0b3J5
KSB7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiY29sYSIpLklzRGlyZWN0b3J5KCkpOwotICBF
WFBFQ1RfVFJVRShGaWxlUGF0aCgia29hbGEiIEdURVNUX1BBVEhfU0VQXykuSXNEaXJlY3Rvcnko
KSk7Ci0jaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgo
ImtvYWxhLyIpLklzRGlyZWN0b3J5KCkpOwotI2VuZGlmCi19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0
LCBJc0Fic29sdXRlUGF0aCkgewotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImlzIiBHVEVTVF9Q
QVRIX1NFUF8gInJlbGF0aXZlIikuSXNBYnNvbHV0ZVBhdGgoKSk7Ci0gIEVYUEVDVF9GQUxTRShG
aWxlUGF0aCgiIikuSXNBYnNvbHV0ZVBhdGgoKSk7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICBF
WFBFQ1RfVFJVRShGaWxlUGF0aCgiYzpcXCIgR1RFU1RfUEFUSF9TRVBfICJpc19ub3QiCi0gICAg
ICAgICAgICAgICAgICAgICAgIEdURVNUX1BBVEhfU0VQXyAicmVsYXRpdmUiKS5Jc0Fic29sdXRl
UGF0aCgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJjOmZvbyIgR1RFU1RfUEFUSF9TRVBf
ICJiYXIiKS5Jc0Fic29sdXRlUGF0aCgpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImM6LyIg
R1RFU1RfUEFUSF9TRVBfICJpc19ub3QiCi0gICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1BB
VEhfU0VQXyAicmVsYXRpdmUiKS5Jc0Fic29sdXRlUGF0aCgpKTsKLSNlbHNlCi0gIEVYUEVDVF9U
UlVFKEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiaXNfbm90IiBHVEVTVF9QQVRIX1NFUF8gInJl
bGF0aXZlIikKLSAgICAgICAgICAgICAgLklzQWJzb2x1dGVQYXRoKCkpOwotI2VuZGlmICAvLyBH
VEVTVF9PU19XSU5ET1dTCi19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0LCBJc1Jvb3REaXJlY3Rvcnkp
IHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJhOlxcIiku
SXNSb290RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiWjovIikuSXNSb290
RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiZTovLyIpLklzUm9vdERpcmVj
dG9yeSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7
Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYjoiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVY
UEVDVF9GQUxTRShGaWxlUGF0aCgiYjphIikuSXNSb290RGlyZWN0b3J5KCkpOwotICBFWFBFQ1Rf
RkFMU0UoRmlsZVBhdGgoIjg6LyIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX0ZBTFNF
KEZpbGVQYXRoKCJjfC8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0jZWxzZQotICBFWFBFQ1RfVFJV
RShGaWxlUGF0aCgiLyIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBh
dGgoIi8vIikuSXNSb290RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIiIp
LklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJcXCIpLklzUm9v
dERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIveCIpLklzUm9vdERpcmVj
dG9yeSgpKTsKLSNlbmRpZgotfQotCi19ICAvLyBuYW1lc3BhY2UKLX0gIC8vIG5hbWVzcGFjZSBp
bnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saW5rZWRfcHRyX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGVhZTgyMjk2YzkyMWYwYWZlNDJmYzIzMzU3NDk3MGVlNzcwOWU1YmQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saW5rZWRfcHRyX3Rlc3QuY2MKKysrIC9kZXYvbnVs
bApAQCAtMSwxNTQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDMsIEdvb2dsZSBJbmMuCi0vLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
Ly8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotLy8KLS8vIEF1dGhvcnM6IERhbiBFZ25vciAoZWdub3JAZ29vZ2xlLmNvbSkKLS8v
IFBvcnRlZCB0byBXaW5kb3dzOiBWYWRpbSBCZXJtYW4gKHZhZGltYkBnb29nbGUuY29tKQotCi0j
aW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oPgotCi0jaW5jbHVkZSA8
c3RkbGliLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotbmFtZXNwYWNlIHsKLQotdXNp
bmcgdGVzdGluZzo6TWVzc2FnZTsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpsaW5rZWRfcHRy
OwotCi1pbnQgbnVtOwotTWVzc2FnZSogaGlzdG9yeSA9IE5VTEw7Ci0KLS8vIENsYXNzIHdoaWNo
IHRyYWNrcyBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbgotY2xhc3MgQSB7Ci0gcHVibGljOgotICBB
KCk6IG15bnVtKG51bSsrKSB7ICpoaXN0b3J5IDw8ICJBIiA8PCBteW51bSA8PCAiIGN0b3JcbiI7
IH0KLSAgdmlydHVhbCB+QSgpIHsgKmhpc3RvcnkgPDwgIkEiIDw8IG15bnVtIDw8ICIgZHRvclxu
IjsgfQotICB2aXJ0dWFsIHZvaWQgVXNlKCkgeyAqaGlzdG9yeSA8PCAiQSIgPDwgbXludW0gPDwg
IiB1c2VcbiI7IH0KLSBwcm90ZWN0ZWQ6Ci0gIGludCBteW51bTsKLX07Ci0KLS8vIFN1YmNsYXNz
Ci1jbGFzcyBCIDogcHVibGljIEEgewotIHB1YmxpYzoKLSAgQigpIHsgKmhpc3RvcnkgPDwgIkIi
IDw8IG15bnVtIDw8ICIgY3RvclxuIjsgfQotICB+QigpIHsgKmhpc3RvcnkgPDwgIkIiIDw8IG15
bnVtIDw8ICIgZHRvclxuIjsgfQotICB2aXJ0dWFsIHZvaWQgVXNlKCkgeyAqaGlzdG9yeSA8PCAi
QiIgPDwgbXludW0gPDwgIiB1c2VcbiI7IH0KLX07Ci0KLWNsYXNzIExpbmtlZFB0clRlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHVibGljOgotICBMaW5rZWRQdHJUZXN0KCkgewotICAg
IG51bSA9IDA7Ci0gICAgaGlzdG9yeSA9IG5ldyBNZXNzYWdlOwotICB9Ci0KLSAgdmlydHVhbCB+
TGlua2VkUHRyVGVzdCgpIHsKLSAgICBkZWxldGUgaGlzdG9yeTsKLSAgICBoaXN0b3J5ID0gTlVM
TDsKLSAgfQotfTsKLQotVEVTVF9GKExpbmtlZFB0clRlc3QsIEdlbmVyYWxUZXN0KSB7Ci0gIHsK
LSAgICBsaW5rZWRfcHRyPEE+IGEwLCBhMSwgYTI7Ci0gICAgYTAgPSBhMDsKLSAgICBhMSA9IGEy
OwotICAgIEFTU0VSVF9FUShhMC5nZXQoKSwgc3RhdGljX2Nhc3Q8QSo+KE5VTEwpKTsKLSAgICBB
U1NFUlRfRVEoYTEuZ2V0KCksIHN0YXRpY19jYXN0PEEqPihOVUxMKSk7Ci0gICAgQVNTRVJUX0VR
KGEyLmdldCgpLCBzdGF0aWNfY2FzdDxBKj4oTlVMTCkpOwotICAgIEFTU0VSVF9UUlVFKGEwID09
IE5VTEwpOwotICAgIEFTU0VSVF9UUlVFKGExID09IE5VTEwpOwotICAgIEFTU0VSVF9UUlVFKGEy
ID09IE5VTEwpOwotCi0gICAgewotICAgICAgbGlua2VkX3B0cjxBPiBhMyhuZXcgQSk7Ci0gICAg
ICBhMCA9IGEzOwotICAgICAgQVNTRVJUX1RSVUUoYTAgPT0gYTMpOwotICAgICAgQVNTRVJUX1RS
VUUoYTAgIT0gTlVMTCk7Ci0gICAgICBBU1NFUlRfVFJVRShhMC5nZXQoKSA9PSBhMyk7Ci0gICAg
ICBBU1NFUlRfVFJVRShhMCA9PSBhMy5nZXQoKSk7Ci0gICAgICBsaW5rZWRfcHRyPEE+IGE0KGEw
KTsKLSAgICAgIGExID0gYTQ7Ci0gICAgICBsaW5rZWRfcHRyPEE+IGE1KG5ldyBBKTsKLSAgICAg
IEFTU0VSVF9UUlVFKGE1LmdldCgpICE9IGEzKTsKLSAgICAgIEFTU0VSVF9UUlVFKGE1ICE9IGEz
LmdldCgpKTsKLSAgICAgIGEyID0gYTU7Ci0gICAgICBsaW5rZWRfcHRyPEI+IGIwKG5ldyBCKTsK
LSAgICAgIGxpbmtlZF9wdHI8QT4gYTYoYjApOwotICAgICAgQVNTRVJUX1RSVUUoYjAgPT0gYTYp
OwotICAgICAgQVNTRVJUX1RSVUUoYTYgPT0gYjApOwotICAgICAgQVNTRVJUX1RSVUUoYjAgIT0g
TlVMTCk7Ci0gICAgICBhNSA9IGIwOwotICAgICAgYTUgPSBiMDsKLSAgICAgIGEzLT5Vc2UoKTsK
LSAgICAgIGE0LT5Vc2UoKTsKLSAgICAgIGE1LT5Vc2UoKTsKLSAgICAgIGE2LT5Vc2UoKTsKLSAg
ICAgIGIwLT5Vc2UoKTsKLSAgICAgICgqYjApLlVzZSgpOwotICAgICAgYjAuZ2V0KCktPlVzZSgp
OwotICAgIH0KLQotICAgIGEwLT5Vc2UoKTsKLSAgICBhMS0+VXNlKCk7Ci0gICAgYTItPlVzZSgp
OwotCi0gICAgYTEgPSBhMjsKLSAgICBhMi5yZXNldChuZXcgQSk7Ci0gICAgYTAucmVzZXQoKTsK
LQotICAgIGxpbmtlZF9wdHI8QT4gYTc7Ci0gIH0KLQotICBBU1NFUlRfU1RSRVEoCi0gICAgIkEw
IGN0b3JcbiIKLSAgICAiQTEgY3RvclxuIgotICAgICJBMiBjdG9yXG4iCi0gICAgIkIyIGN0b3Jc
biIKLSAgICAiQTAgdXNlXG4iCi0gICAgIkEwIHVzZVxuIgotICAgICJCMiB1c2VcbiIKLSAgICAi
QjIgdXNlXG4iCi0gICAgIkIyIHVzZVxuIgotICAgICJCMiB1c2VcbiIKLSAgICAiQjIgdXNlXG4i
Ci0gICAgIkIyIGR0b3JcbiIKLSAgICAiQTIgZHRvclxuIgotICAgICJBMCB1c2VcbiIKLSAgICAi
QTAgdXNlXG4iCi0gICAgIkExIHVzZVxuIgotICAgICJBMyBjdG9yXG4iCi0gICAgIkEwIGR0b3Jc
biIKLSAgICAiQTMgZHRvclxuIgotICAgICJBMSBkdG9yXG4iLAotICAgIGhpc3RvcnktPkdldFN0
cmluZygpLmNfc3RyKCkKLSAgKTsKLX0KLQotfSAgLy8gVW5uYW1lZCBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzliZTM5YTg3ZTg4ZDg5NjAxYjliYzkzNzJh
MTRlZGFhZjYxMjk0My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWxpc3RlbmVyX3Rlc3QuY2MK
KysrIC9kZXYvbnVsbApAQCAtMSwzMTMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9z
ZXYpCi0vLwotLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0
KQotLy8KLS8vIFRoaXMgZmlsZSB2ZXJpZmllcyBHb29nbGUgVGVzdCBldmVudCBsaXN0ZW5lcnMg
cmVjZWl2ZSBldmVudHMgYXQgdGhlCi0vLyByaWdodCB0aW1lcy4KLQotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi11c2luZyA6OnRlc3Rpbmc6OkFkZEdsb2Jh
bFRlc3RFbnZpcm9ubWVudDsKLXVzaW5nIDo6dGVzdGluZzo6RW52aXJvbm1lbnQ7Ci11c2luZyA6
OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0OwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0OwotdXNpbmcg
Ojp0ZXN0aW5nOjpUZXN0Q2FzZTsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXI7
Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RJbmZvOwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0UGFydFJl
c3VsdDsKLXVzaW5nIDo6dGVzdGluZzo6VW5pdFRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVy
bmFsOjpTdHJpbmc7Ci0KLS8vIFVzZWQgYnkgdGVzdHMgdG8gcmVnaXN0ZXIgdGhlaXIgZXZlbnRz
Lgotc3RkOjp2ZWN0b3I8U3RyaW5nPiogZ19ldmVudHMgPSBOVUxMOwotCi1uYW1lc3BhY2UgdGVz
dGluZyB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi1jbGFzcyBFdmVudFJlY29yZGluZ0xpc3Rl
bmVyIDogcHVibGljIFRlc3RFdmVudExpc3RlbmVyIHsKLSBwdWJsaWM6Ci0gIEV2ZW50UmVjb3Jk
aW5nTGlzdGVuZXIoY29uc3QgY2hhciogbmFtZSkgOiBuYW1lXyhuYW1lKSB7fQotCi0gcHJvdGVj
dGVkOgotICB2aXJ0dWFsIHZvaWQgT25UZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAv
KnVuaXRfdGVzdCovKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFt
ZSgiT25UZXN0UHJvZ3JhbVN0YXJ0IikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdEl0
ZXJhdGlvblN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGl0ZXJhdGlvbikgewotICAgIE1lc3NhZ2UgbWVz
c2FnZTsKLSAgICBtZXNzYWdlIDw8IEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RJdGVyYXRpb25T
dGFydCIpCi0gICAgICAgICAgICA8PCAiKCIgPDwgaXRlcmF0aW9uIDw8ICIpIjsKLSAgICBnX2V2
ZW50cy0+cHVzaF9iYWNrKG1lc3NhZ2UuR2V0U3RyaW5nKCkpOwotICB9Ci0KLSAgdmlydHVhbCB2
b2lkIE9uRW52aXJvbm1lbnRzU2V0VXBTdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3Qq
LykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJv
bm1lbnRzU2V0VXBTdGFydCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50
c1NldFVwRW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7Ci0gICAgZ19ldmVudHMt
PnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25FbnZpcm9ubWVudHNTZXRVcEVuZCIpKTsK
LSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RDYXNlU3RhcnQoY29uc3QgVGVzdENhc2UmIC8q
dGVzdF9jYXNlKi8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1l
KCJPblRlc3RDYXNlU3RhcnQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQo
Y29uc3QgVGVzdEluZm8mIC8qdGVzdF9pbmZvKi8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNr
KEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RTdGFydCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9p
ZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiAvKnRlc3RfcGFydF9yZXN1
bHQqLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVz
dFBhcnRSZXN1bHQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0RW5kKGNvbnN0IFRl
c3RJbmZvJiAvKnRlc3RfaW5mbyovKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxs
TWV0aG9kTmFtZSgiT25UZXN0RW5kIikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdENh
c2VFbmQoY29uc3QgVGVzdENhc2UmIC8qdGVzdF9jYXNlKi8pIHsKLSAgICBnX2V2ZW50cy0+cHVz
aF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RDYXNlRW5kIikpOwotICB9Ci0KLSAgdmly
dHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydChjb25zdCBVbml0VGVzdCYgLyp1
bml0X3Rlc3QqLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUo
Ik9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBP
bkVudmlyb25tZW50c1RlYXJEb3duRW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7
Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25FbnZpcm9ubWVu
dHNUZWFyRG93bkVuZCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25F
bmQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGl0ZXJhdGlvbikgewotICAgIE1lc3NhZ2UgbWVzc2FnZTsKLSAgICBt
ZXNzYWdlIDw8IEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RJdGVyYXRpb25FbmQiKQotICAgICAg
ICAgICAgPDwgIigiICA8PCBpdGVyYXRpb24gPDwgIikiOwotICAgIGdfZXZlbnRzLT5wdXNoX2Jh
Y2sobWVzc2FnZS5HZXRTdHJpbmcoKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0UHJv
Z3JhbUVuZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewotICAgIGdfZXZlbnRzLT5w
dXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdFByb2dyYW1FbmQiKSk7Ci0gIH0KLQot
IHByaXZhdGU6Ci0gIFN0cmluZyBHZXRGdWxsTWV0aG9kTmFtZShjb25zdCBjaGFyKiBuYW1lKSB7
Ci0gICAgTWVzc2FnZSBtZXNzYWdlOwotICAgIG1lc3NhZ2UgPDwgbmFtZV8gPDwgIi4iIDw8IG5h
bWU7Ci0gICAgcmV0dXJuIG1lc3NhZ2UuR2V0U3RyaW5nKCk7Ci0gIH0KLQotICBTdHJpbmcgbmFt
ZV87Ci19OwotCi1jbGFzcyBFbnZpcm9ubWVudEludm9jYXRpb25DYXRjaGVyIDogcHVibGljIEVu
dmlyb25tZW50IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBn
X2V2ZW50cy0+cHVzaF9iYWNrKFN0cmluZygiRW52aXJvbm1lbnQ6OlNldFVwIikpOwotICB9Ci0K
LSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soU3Ry
aW5nKCJFbnZpcm9ubWVudDo6VGVhckRvd24iKSk7Ci0gIH0KLX07Ci0KLWNsYXNzIExpc3RlbmVy
VGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHN0YXRpYyB2b2lkIFNldFVwVGVz
dENhc2UoKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6
U2V0VXBUZXN0Q2FzZSIpKTsKLSAgfQotCi0gIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2Uo
KSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6VGVhckRv
d25UZXN0Q2FzZSIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBnX2V2
ZW50cy0+cHVzaF9iYWNrKFN0cmluZygiTGlzdGVuZXJUZXN0OjpTZXRVcCIpKTsKLSAgfQotCi0g
IHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKFN0cmlu
ZygiTGlzdGVuZXJUZXN0OjpUZWFyRG93biIpKTsKLSAgfQotfTsKLQotVEVTVF9GKExpc3RlbmVy
VGVzdCwgRG9lc0ZvbykgewotICAvLyBUZXN0IGV4ZWN1dGlvbiBvcmRlciB3aXRoaW4gYSB0ZXN0
IGNhc2UgaXMgbm90IGd1YXJhbnRlZWQgc28gd2UgYXJlIG5vdAotICAvLyByZWNvcmRpbmcgdGhl
IHRlc3QgbmFtZS4KLSAgZ19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6
KiBUZXN0IEJvZHkiKSk7Ci0gIFNVQ0NFRUQoKTsgIC8vIFRyaWdnZXJzIE9uVGVzdFBhcnRSZXN1
bHQuCi19Ci0KLVRFU1RfRihMaXN0ZW5lclRlc3QsIERvZXNCYXIpIHsKLSAgZ19ldmVudHMtPnB1
c2hfYmFjayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHkiKSk7Ci0gIFNVQ0NFRUQo
KTsgIC8vIFRyaWdnZXJzIE9uVGVzdFBhcnRSZXN1bHQuCi19Ci0KLX0gIC8vIG5hbWVzcGFjZSBp
bnRlcm5hbAotCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi11c2luZyA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpFbnZpcm9ubWVudEludm9jYXRpb25DYXRjaGVyOwotdXNpbmcgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6RXZlbnRSZWNvcmRpbmdMaXN0ZW5lcjsKLQotdm9pZCBWZXJpZnlSZXN1bHRzKGNv
bnN0IHN0ZDo6dmVjdG9yPFN0cmluZz4mIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogY29uc3QqIGV4cGVjdGVkX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgaW50IGV4cGVj
dGVkX2RhdGFfc2l6ZSkgewotICBjb25zdCBpbnQgYWN0dWFsX3NpemUgPSBkYXRhLnNpemUoKTsK
LSAgLy8gSWYgdGhlIGZvbGxvd2luZyBhc3NlcnRpb24gZmFpbHMsIGEgbmV3IGVudHJ5IHdpbGwg
YmUgYXBwZW5kZWQgdG8KLSAgLy8gZGF0YS4gIEhlbmNlIHdlIHNhdmUgZGF0YS5zaXplKCkgZmly
c3QuCi0gIEVYUEVDVF9FUShleHBlY3RlZF9kYXRhX3NpemUsIGFjdHVhbF9zaXplKTsKLQotICAv
LyBDb21wYXJlcyB0aGUgY29tbW9uIHByZWZpeC4KLSAgY29uc3QgaW50IHNob3J0ZXJfc2l6ZSA9
IGV4cGVjdGVkX2RhdGFfc2l6ZSA8PSBhY3R1YWxfc2l6ZSA/Ci0gICAgICBleHBlY3RlZF9kYXRh
X3NpemUgOiBhY3R1YWxfc2l6ZTsKLSAgaW50IGkgPSAwOwotICBmb3IgKDsgaSA8IHNob3J0ZXJf
c2l6ZTsgKytpKSB7Ci0gICAgQVNTRVJUX1NUUkVRKGV4cGVjdGVkX2RhdGFbaV0sIGRhdGFbaV0u
Y19zdHIoKSkKLSAgICAgICAgPDwgImF0IHBvc2l0aW9uICIgPDwgaTsKLSAgfQotCi0gIC8vIFBy
aW50cyBleHRyYSBlbGVtZW50cyBpbiB0aGUgYWN0dWFsIGRhdGEuCi0gIGZvciAoOyBpIDwgYWN0
dWFsX3NpemU7ICsraSkgewotICAgIHByaW50ZigiICBBY3R1YWwgZXZlbnQgIyVkOiAlc1xuIiwg
aSwgZGF0YVtpXS5jX3N0cigpKTsKLSAgfQotfQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
KmFyZ3YpIHsKLSAgc3RkOjp2ZWN0b3I8U3RyaW5nPiBldmVudHM7Ci0gIGdfZXZlbnRzID0gJmV2
ZW50czsKLSAgSW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIFVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5saXN0ZW5lcnMoKS5BcHBlbmQoCi0gICAgICBuZXcgRXZlbnRSZWNvcmRpbmdM
aXN0ZW5lcigiMXN0IikpOwotICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCku
QXBwZW5kKAotICAgICAgbmV3IEV2ZW50UmVjb3JkaW5nTGlzdGVuZXIoIjJuZCIpKTsKLQotICBB
ZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEVudmlyb25tZW50SW52b2NhdGlvbkNhdGNoZXIp
OwotCi0gIEdURVNUX0NIRUNLXyhldmVudHMuc2l6ZSgpID09IDApCi0gICAgICA8PCAiQWRkR2xv
YmFsVGVzdEVudmlyb25tZW50IHNob3VsZCBub3QgZ2VuZXJhdGUgYW55IGV2ZW50cyBpdHNlbGYu
IjsKLQotICA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcocmVwZWF0KSA9IDI7Ci0gIGludCByZXRfdmFs
ID0gUlVOX0FMTF9URVNUUygpOwotCi0gIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkX2V2ZW50
c1tdID0gewotICAgICIxc3QuT25UZXN0UHJvZ3JhbVN0YXJ0IiwKLSAgICAiMm5kLk9uVGVzdFBy
b2dyYW1TdGFydCIsCi0gICAgIjFzdC5PblRlc3RJdGVyYXRpb25TdGFydCgwKSIsCi0gICAgIjJu
ZC5PblRlc3RJdGVyYXRpb25TdGFydCgwKSIsCi0gICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVw
U3RhcnQiLAotICAgICIybmQuT25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0IiwKLSAgICAiRW52aXJv
bm1lbnQ6OlNldFVwIiwKLSAgICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiLAotICAgICIx
c3QuT25FbnZpcm9ubWVudHNTZXRVcEVuZCIsCi0gICAgIjFzdC5PblRlc3RDYXNlU3RhcnQiLAot
ICAgICIybmQuT25UZXN0Q2FzZVN0YXJ0IiwKLSAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcFRlc3RD
YXNlIiwKLSAgICAiMXN0Lk9uVGVzdFN0YXJ0IiwKLSAgICAiMm5kLk9uVGVzdFN0YXJ0IiwKLSAg
ICAiTGlzdGVuZXJUZXN0OjpTZXRVcCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHki
LAotICAgICIxc3QuT25UZXN0UGFydFJlc3VsdCIsCi0gICAgIjJuZC5PblRlc3RQYXJ0UmVzdWx0
IiwKLSAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93biIsCi0gICAgIjJuZC5PblRlc3RFbmQiLAot
ICAgICIxc3QuT25UZXN0RW5kIiwKLSAgICAiMXN0Lk9uVGVzdFN0YXJ0IiwKLSAgICAiMm5kLk9u
VGVzdFN0YXJ0IiwKLSAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcCIsCi0gICAgIkxpc3RlbmVyVGVz
dDo6KiBUZXN0IEJvZHkiLAotICAgICIxc3QuT25UZXN0UGFydFJlc3VsdCIsCi0gICAgIjJuZC5P
blRlc3RQYXJ0UmVzdWx0IiwKLSAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93biIsCi0gICAgIjJu
ZC5PblRlc3RFbmQiLAotICAgICIxc3QuT25UZXN0RW5kIiwKLSAgICAiTGlzdGVuZXJUZXN0OjpU
ZWFyRG93blRlc3RDYXNlIiwKLSAgICAiMm5kLk9uVGVzdENhc2VFbmQiLAotICAgICIxc3QuT25U
ZXN0Q2FzZUVuZCIsCi0gICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiLAotICAg
ICIybmQuT25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0IiwKLSAgICAiRW52aXJvbm1lbnQ6OlRl
YXJEb3duIiwKLSAgICAiMm5kLk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiLAotICAgICIxc3Qu
T25FbnZpcm9ubWVudHNUZWFyRG93bkVuZCIsCi0gICAgIjJuZC5PblRlc3RJdGVyYXRpb25FbmQo
MCkiLAotICAgICIxc3QuT25UZXN0SXRlcmF0aW9uRW5kKDApIiwKLSAgICAiMXN0Lk9uVGVzdEl0
ZXJhdGlvblN0YXJ0KDEpIiwKLSAgICAiMm5kLk9uVGVzdEl0ZXJhdGlvblN0YXJ0KDEpIiwKLSAg
ICAiMXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50
c1NldFVwU3RhcnQiLAotICAgICJFbnZpcm9ubWVudDo6U2V0VXAiLAotICAgICIybmQuT25FbnZp
cm9ubWVudHNTZXRVcEVuZCIsCi0gICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVwRW5kIiwKLSAg
ICAiMXN0Lk9uVGVzdENhc2VTdGFydCIsCi0gICAgIjJuZC5PblRlc3RDYXNlU3RhcnQiLAotICAg
ICJMaXN0ZW5lclRlc3Q6OlNldFVwVGVzdENhc2UiLAotICAgICIxc3QuT25UZXN0U3RhcnQiLAot
ICAgICIybmQuT25UZXN0U3RhcnQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwKLSAgICAi
TGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCi0gICAgIjFzdC5PblRlc3RQYXJ0UmVzdWx0IiwK
LSAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3du
IiwKLSAgICAiMm5kLk9uVGVzdEVuZCIsCi0gICAgIjFzdC5PblRlc3RFbmQiLAotICAgICIxc3Qu
T25UZXN0U3RhcnQiLAotICAgICIybmQuT25UZXN0U3RhcnQiLAotICAgICJMaXN0ZW5lclRlc3Q6
OlNldFVwIiwKLSAgICAiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCi0gICAgIjFzdC5PblRl
c3RQYXJ0UmVzdWx0IiwKLSAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAotICAgICJMaXN0ZW5l
clRlc3Q6OlRlYXJEb3duIiwKLSAgICAiMm5kLk9uVGVzdEVuZCIsCi0gICAgIjFzdC5PblRlc3RF
bmQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duVGVzdENhc2UiLAotICAgICIybmQuT25U
ZXN0Q2FzZUVuZCIsCi0gICAgIjFzdC5PblRlc3RDYXNlRW5kIiwKLSAgICAiMXN0Lk9uRW52aXJv
bm1lbnRzVGVhckRvd25TdGFydCIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50c1RlYXJEb3duU3Rh
cnQiLAotICAgICJFbnZpcm9ubWVudDo6VGVhckRvd24iLAotICAgICIybmQuT25FbnZpcm9ubWVu
dHNUZWFyRG93bkVuZCIsCi0gICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5kIiwKLSAg
ICAiMm5kLk9uVGVzdEl0ZXJhdGlvbkVuZCgxKSIsCi0gICAgIjFzdC5PblRlc3RJdGVyYXRpb25F
bmQoMSkiLAotICAgICIybmQuT25UZXN0UHJvZ3JhbUVuZCIsCi0gICAgIjFzdC5PblRlc3RQcm9n
cmFtRW5kIgotICB9OwotICBWZXJpZnlSZXN1bHRzKGV2ZW50cywKLSAgICAgICAgICAgICAgICBl
eHBlY3RlZF9ldmVudHMsCi0gICAgICAgICAgICAgICAgc2l6ZW9mKGV4cGVjdGVkX2V2ZW50cykv
c2l6ZW9mKGV4cGVjdGVkX2V2ZW50c1swXSkpOwotCi0gIC8vIFdlIG5lZWQgdG8gY2hlY2sgbWFu
dWFsbHkgZm9yIGFkIGhvYyB0ZXN0IGZhaWx1cmVzIHRoYXQgaGFwcGVuIGFmdGVyCi0gIC8vIFJV
Tl9BTExfVEVTVFMgZmluaXNoZXMuCi0gIGlmIChVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+RmFp
bGVkKCkpCi0gICAgcmV0X3ZhbCA9IDE7Ci0KLSAgcmV0dXJuIHJldF92YWw7Ci19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LW1lc3NhZ2VfdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDJiMDM0NDc4NzJlM2U4ZjA3YTlhNGFkZDJiZTVk
ZDQ2OTgwYjU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjCisrKyAv
ZGV2L251bGwKQEAgLTEsMTY3ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5j
LgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBX
YW4pCi0vLwotLy8gVGVzdHMgZm9yIHRoZSBNZXNzYWdlIGNsYXNzLgotCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QtbWVzc2FnZS5oPgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotbmFtZXNw
YWNlIHsKLQotdXNpbmcgOjp0ZXN0aW5nOjpNZXNzYWdlOwotdXNpbmcgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6U3RyU3RyZWFtOwotCi0vLyBBIGhlbHBlciBmdW5jdGlvbiB0aGF0IHR1cm5zIGEgTWVz
c2FnZSBpbnRvIGEgQyBzdHJpbmcuCi1jb25zdCBjaGFyKiBUb0NTdHJpbmcoY29uc3QgTWVzc2Fn
ZSYgbXNnKSB7Ci0gIHN0YXRpYyB0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nIHJlc3VsdDsKLSAg
cmVzdWx0ID0gbXNnLkdldFN0cmluZygpOwotICByZXR1cm4gcmVzdWx0LmNfc3RyKCk7Ci19Ci0K
LS8vIFRlc3RzIHRoZSB0ZXN0aW5nOjpNZXNzYWdlIGNsYXNzCi0KLS8vIFRlc3RzIHRoZSBkZWZh
dWx0IGNvbnN0cnVjdG9yLgotVEVTVChNZXNzYWdlVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yKSB7
Ci0gIGNvbnN0IE1lc3NhZ2UgbXNnOwotICBFWFBFQ1RfU1RSRVEoIiIsIFRvQ1N0cmluZyhtc2cp
KTsKLX0KLQotLy8gVGVzdHMgdGhlIGNvcHkgY29uc3RydWN0b3IuCi1URVNUKE1lc3NhZ2VUZXN0
LCBDb3B5Q29uc3RydWN0b3IpIHsKLSAgY29uc3QgTWVzc2FnZSBtc2cxKCJIZWxsbyIpOwotICBj
b25zdCBNZXNzYWdlIG1zZzIobXNnMSk7Ci0gIEVYUEVDVF9TVFJFUSgiSGVsbG8iLCBUb0NTdHJp
bmcobXNnMikpOwotfQotCi0vLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSBNZXNzYWdlIGZyb20gYSBD
LXN0cmluZy4KLVRFU1QoTWVzc2FnZVRlc3QsIENvbnN0cnVjdHNGcm9tQ1N0cmluZykgewotICBN
ZXNzYWdlIG1zZygiSGVsbG8iKTsKLSAgRVhQRUNUX1NUUkVRKCJIZWxsbyIsIFRvQ1N0cmluZyht
c2cpKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFtaW5nIGEgZmxvYXQuCi1URVNUKE1lc3NhZ2VUZXN0
LCBTdHJlYW1zRmxvYXQpIHsKLSAgY29uc3QgY2hhciogY29uc3QgcyA9IFRvQ1N0cmluZyhNZXNz
YWdlKCkgPDwgMS4yMzQ1NkYgPDwgIiAiIDw8IDIuMzQ1NjdGKTsKLSAgLy8gQm90aCBudW1iZXJz
IHNob3VsZCBiZSBwcmludGVkIHdpdGggZW5vdWdoIHByZWNpc2lvbi4KLSAgRVhQRUNUX1BSRURf
Rk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIjEuMjM0NTYwIiwgcyk7Ci0gIEVYUEVDVF9Q
UkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIgMi4zNDU2NjkiLCBzKTsKLX0KLQot
Ly8gVGVzdHMgc3RyZWFtaW5nIGEgZG91YmxlLgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc0Rv
dWJsZSkgewotICBjb25zdCBjaGFyKiBjb25zdCBzID0gVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCAx
MjYwNTcwODgwLjQ1NTU0OTcgPDwgIiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgMTI2MDU3MjI2NS4xOTU0NTM0KTsKLSAgLy8gQm90aCBudW1iZXJzIHNob3VsZCBiZSBw
cmludGVkIHdpdGggZW5vdWdoIHByZWNpc2lvbi4KLSAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0
aW5nOjpJc1N1YnN0cmluZywgIjEyNjA1NzA4ODAuNDUiLCBzKTsKLSAgRVhQRUNUX1BSRURfRk9S
TUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIiAxMjYwNTcyMjY1LjE5Iiwgcyk7Ci19Ci0KLS8v
IFRlc3RzIHN0cmVhbWluZyBhIG5vbi1jaGFyIHBvaW50ZXIuCi1URVNUKE1lc3NhZ2VUZXN0LCBT
dHJlYW1zUG9pbnRlcikgewotICBpbnQgbiA9IDA7Ci0gIGludCogcCA9ICZuOwotICBFWFBFQ1Rf
U1RSTkUoIihudWxsKSIsIFRvQ1N0cmluZyhNZXNzYWdlKCkgPDwgcCkpOwotfQotCi0vLyBUZXN0
cyBzdHJlYW1pbmcgYSBOVUxMIG5vbi1jaGFyIHBvaW50ZXIuCi1URVNUKE1lc3NhZ2VUZXN0LCBT
dHJlYW1zTnVsbFBvaW50ZXIpIHsKLSAgaW50KiBwID0gTlVMTDsKLSAgRVhQRUNUX1NUUkVRKCIo
bnVsbCkiLCBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8IHApKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFt
aW5nIGEgQyBzdHJpbmcuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zQ1N0cmluZykgewotICBF
WFBFQ1RfU1RSRVEoIkZvbyIsIFRvQ1N0cmluZyhNZXNzYWdlKCkgPDwgIkZvbyIpKTsKLX0KLQot
Ly8gVGVzdHMgc3RyZWFtaW5nIGEgTlVMTCBDIHN0cmluZy4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0
cmVhbXNOdWxsQ1N0cmluZykgewotICBjaGFyKiBwID0gTlVMTDsKLSAgRVhQRUNUX1NUUkVRKCIo
bnVsbCkiLCBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8IHApKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFt
aW5nIHN0ZDo6c3RyaW5nLgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc1N0cmluZykgewotICBj
b25zdCA6OnN0ZDo6c3RyaW5nIHN0cigiSGVsbG8iKTsKLSAgRVhQRUNUX1NUUkVRKCJIZWxsbyIs
IFRvQ1N0cmluZyhNZXNzYWdlKCkgPDwgc3RyKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgd2UgY2Fu
IG91dHB1dCBzdHJpbmdzIGNvbnRhaW5pbmcgZW1iZWRkZWQgTlVMcy4KLVRFU1QoTWVzc2FnZVRl
c3QsIFN0cmVhbXNTdHJpbmdXaXRoRW1iZWRkZWROVUwpIHsKLSAgY29uc3QgY2hhciBjaGFyX2Fy
cmF5X3dpdGhfbnVsW10gPQotICAgICAgIkhlcmUncyBhIE5VTFwwIGFuZCBzb21lIG1vcmUgc3Ry
aW5nIjsKLSAgY29uc3QgOjpzdGQ6OnN0cmluZyBzdHJpbmdfd2l0aF9udWwoY2hhcl9hcnJheV93
aXRoX251bCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGNo
YXJfYXJyYXlfd2l0aF9udWwpIC0gMSk7Ci0gIEVYUEVDVF9TVFJFUSgiSGVyZSdzIGEgTlVMXFww
IGFuZCBzb21lIG1vcmUgc3RyaW5nIiwKLSAgICAgICAgICAgICAgIFRvQ1N0cmluZyhNZXNzYWdl
KCkgPDwgc3RyaW5nX3dpdGhfbnVsKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBhIE5VTCBj
aGFyLgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc05VTENoYXIpIHsKLSAgRVhQRUNUX1NUUkVR
KCJcXDAiLCBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8ICdcMCcpKTsKLX0KLQotLy8gVGVzdHMgc3Ry
ZWFtaW5nIGludC4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNJbnQpIHsKLSAgRVhQRUNUX1NU
UkVRKCIxMjMiLCBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8IDEyMykpOwotfQotCi0vLyBUZXN0cyB0
aGF0IGJhc2ljIElPIG1hbmlwdWxhdG9ycyAoZW5kbCwgZW5kcywgYW5kIGZsdXNoKSBjYW4gYmUK
LS8vIHN0cmVhbWVkIHRvIE1lc3NhZ2UuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zQmFzaWNJ
b01hbmlwKSB7Ci0gIEVYUEVDVF9TVFJFUSgiTGluZSAxLlxuQSBOVUwgY2hhciBcXDAgaW4gbGlu
ZSAyLiIsCi0gICAgICAgICAgICAgICBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8ICJMaW5lIDEuIiA8
PCBzdGQ6OmVuZGwKLSAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiQSBOVUwgY2hhciAiIDw8
IHN0ZDo6ZW5kcyA8PCBzdGQ6OmZsdXNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBp
biBsaW5lIDIuIikpOwotfQotCi0vLyBUZXN0cyBNZXNzYWdlOjpHZXRTdHJpbmcoKQotVEVTVChN
ZXNzYWdlVGVzdCwgR2V0U3RyaW5nKSB7Ci0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgMSA8PCAi
IGxhbWIiOwotICBFWFBFQ1RfU1RSRVEoIjEgbGFtYiIsIG1zZy5HZXRTdHJpbmcoKS5jX3N0cigp
KTsKLX0KLQotLy8gVGVzdHMgc3RyZWFtaW5nIGEgTWVzc2FnZSBvYmplY3QgdG8gYW4gb3N0cmVh
bS4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNUb09TdHJlYW0pIHsKLSAgTWVzc2FnZSBtc2co
IkhlbGxvIik7Ci0gIFN0clN0cmVhbSBzczsKLSAgc3MgPDwgbXNnOwotICBFWFBFQ1RfU1RSRVEo
IkhlbGxvIiwgdGVzdGluZzo6aW50ZXJuYWw6OlN0clN0cmVhbVRvU3RyaW5nKCZzcykuY19zdHIo
KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBNZXNzYWdlIG9iamVjdCBkb2Vzbid0IHRha2UgdXAg
dG9vIG11Y2ggc3RhY2sgc3BhY2UuCi1URVNUKE1lc3NhZ2VUZXN0LCBEb2VzTm90VGFrZVVwTXVj
aFN0YWNrU3BhY2UpIHsKLSAgRVhQRUNUX0xFKHNpemVvZihNZXNzYWdlKSwgMTZVKTsKLX0KLQot
fSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0LW9wdGlvbnNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3Qtb3B0aW9uc190ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTJjYmM5
MmU1ZTAyOGM3NGM4MmYwNzUwZmRkOGJkZmI0ZTg4MzFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3Qtb3B0aW9uc190ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMjEyICswLDAgQEAKLS8vIENv
cHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0v
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJp
YnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3JzOiBr
ZWl0aC5yYXlAZ21haWwuY29tIChLZWl0aCBSYXkpCi0vLwotLy8gR29vZ2xlIFRlc3QgVW5pdFRl
c3RPcHRpb25zIHRlc3RzCi0vLwotLy8gVGhpcyBmaWxlIHRlc3RzIGNsYXNzZXMgYW5kIGZ1bmN0
aW9ucyB1c2VkIGludGVybmFsbHkgYnkKLS8vIEdvb2dsZSBUZXN0LiAgVGhleSBhcmUgc3ViamVj
dCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCi0vLwotLy8gVGhpcyBmaWxlIGlzICNpbmNsdWRl
ZCBmcm9tIGd0ZXN0LmNjLCB0byBhdm9pZCBjaGFuZ2luZyBidWlsZCBvcgotLy8gbWFrZS1maWxl
cyBvbiBXaW5kb3dzIGFuZCBvdGhlciBwbGF0Zm9ybXMuIERvIG5vdCAjaW5jbHVkZSB0aGlzIGZp
bGUKLS8vIGFueXdoZXJlIGVsc2UhCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0jaWYg
R1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZWxpZiBHVEVT
VF9PU19XSU5ET1dTCi0jaW5jbHVkZSA8ZGlyZWN0Lmg+Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCi0KLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBp
cyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21l
IGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdp
bGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1
c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgot
Ly8gaGlzIGNvZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAi
c3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwot
Ci1uYW1lc3BhY2UgdGVzdGluZyB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotbmFtZXNwYWNlIHsK
LQotLy8gVHVybnMgdGhlIGdpdmVuIHJlbGF0aXZlIHBhdGggaW50byBhbiBhYnNvbHV0ZSBwYXRo
LgotRmlsZVBhdGggR2V0QWJzb2x1dGVQYXRoT2YoY29uc3QgRmlsZVBhdGgmIHJlbGF0aXZlX3Bh
dGgpIHsKLSAgcmV0dXJuIEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aDo6R2V0Q3VycmVu
dERpcigpLCByZWxhdGl2ZV9wYXRoKTsKLX0KLQotLy8gVGVzdGluZyBVbml0VGVzdE9wdGlvbnM6
OkdldE91dHB1dEZvcm1hdC9HZXRPdXRwdXRGaWxlLgotCi1URVNUKFhtbE91dHB1dFRlc3QsIEdl
dE91dHB1dEZvcm1hdERlZmF1bHQpIHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0gIiI7Ci0gIEVY
UEVDVF9TVFJFUSgiIiwgVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQoKS5jX3N0cigp
KTsKLX0KLQotVEVTVChYbWxPdXRwdXRUZXN0LCBHZXRPdXRwdXRGb3JtYXQpIHsKLSAgR1RFU1Rf
RkxBRyhvdXRwdXQpID0gInhtbDpmaWxlbmFtZSI7Ci0gIEVYUEVDVF9TVFJFUSgieG1sIiwgVW5p
dFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQoKS5jX3N0cigpKTsKLX0KLQotVEVTVChYbWxP
dXRwdXRUZXN0LCBHZXRPdXRwdXRGaWxlRGVmYXVsdCkgewotICBHVEVTVF9GTEFHKG91dHB1dCkg
PSAiIjsKLSAgRVhQRUNUX1NUUkVRKEdldEFic29sdXRlUGF0aE9mKEZpbGVQYXRoKCJ0ZXN0X2Rl
dGFpbC54bWwiKSkuY19zdHIoKSwKLSAgICAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0
QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSk7Ci19Ci0KLVRFU1QoWG1sT3V0cHV0
VGVzdCwgR2V0T3V0cHV0RmlsZVNpbmdsZUZpbGUpIHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0g
InhtbDpmaWxlbmFtZS5hYmMiOwotICBFWFBFQ1RfU1RSRVEoR2V0QWJzb2x1dGVQYXRoT2YoRmls
ZVBhdGgoImZpbGVuYW1lLmFiYyIpKS5jX3N0cigpLAotICAgICAgICAgICAgICAgVW5pdFRlc3RP
cHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0cigpKTsKLX0KLQotVEVT
VChYbWxPdXRwdXRUZXN0LCBHZXRPdXRwdXRGaWxlRnJvbURpcmVjdG9yeVBhdGgpIHsKLSAgR1RF
U1RfRkxBRyhvdXRwdXQpID0gInhtbDpwYXRoIiBHVEVTVF9QQVRIX1NFUF87Ci0gIGNvbnN0IHN0
ZDo6c3RyaW5nIGV4cGVjdGVkX291dHB1dF9maWxlID0KLSAgICAgIEdldEFic29sdXRlUGF0aE9m
KAotICAgICAgICAgIEZpbGVQYXRoKHN0ZDo6c3RyaW5nKCJwYXRoIikgKyBHVEVTVF9QQVRIX1NF
UF8gKwotICAgICAgICAgICAgICAgICAgIEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLmNfc3Ry
KCkgKyAiLnhtbCIpKS5jX3N0cigpOwotICBjb25zdCBTdHJpbmcmIG91dHB1dF9maWxlID0gVW5p
dFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKTsKLSNpZiBHVEVTVF9P
U19XSU5ET1dTCi0gIEVYUEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUuY19zdHIo
KSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7Ci0jZWxzZQotICBFWFBFQ1RfRVEoZXhwZWN0ZWRfb3V0
cHV0X2ZpbGUsIG91dHB1dF9maWxlLmNfc3RyKCkpOwotI2VuZGlmCi19Ci0KLVRFU1QoT3V0cHV0
RmlsZUhlbHBlcnNUZXN0LCBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUpIHsKLSAgY29uc3Qgc3Rk
OjpzdHJpbmcgZXhlX3N0ciA9IEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLmNfc3RyKCk7Ci0j
aWYgR1RFU1RfT1NfV0lORE9XUwotICBjb25zdCBib29sIHN1Y2Nlc3MgPQotICAgICAgX3N0cmNt
cGkoImd0ZXN0LW9wdGlvbnNfdGVzdCIsIGV4ZV9zdHIuY19zdHIoKSkgPT0gMCB8fAotICAgICAg
X3N0cmNtcGkoImd0ZXN0LW9wdGlvbnMtZXhfdGVzdCIsIGV4ZV9zdHIuY19zdHIoKSkgPT0gMCB8
fAotICAgICAgX3N0cmNtcGkoImd0ZXN0X2FsbF90ZXN0IiwgZXhlX3N0ci5jX3N0cigpKSA9PSAw
IHx8Ci0gICAgICBfc3RyY21waSgiZ3Rlc3RfZGxsX3Rlc3QiLCBleGVfc3RyLmNfc3RyKCkpID09
IDA7Ci0jZWxzZQotICAvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogcmVtb3ZlIHRoZSBoYXJkLWNv
ZGVkICJsdC0iIHByZWZpeCB3aGVuCi0gIC8vICAgQ2hhbmRsZXIgQ2FycnV0aCdzIGxpYnRvb2wg
cmVwbGFjZW1lbnQgaXMgcmVhZHkuCi0gIGNvbnN0IGJvb2wgc3VjY2VzcyA9Ci0gICAgICBleGVf
c3RyID09ICJndGVzdC1vcHRpb25zX3Rlc3QiIHx8Ci0gICAgICBleGVfc3RyID09ICJndGVzdF9h
bGxfdGVzdCIgfHwKLSAgICAgIGV4ZV9zdHIgPT0gImx0LWd0ZXN0X2FsbF90ZXN0IiB8fAotICAg
ICAgZXhlX3N0ciA9PSAiZ3Rlc3RfZGxsX3Rlc3QiOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5E
T1dTCi0gIGlmICghc3VjY2VzcykKLSAgICBGQUlMKCkgPDwgIkdldEN1cnJlbnRFeGVjdXRhYmxl
TmFtZSgpIHJldHVybnMgIiA8PCBleGVfc3RyOwotfQotCi1jbGFzcyBYbWxPdXRwdXRDaGFuZ2VE
aXJUZXN0IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIFNldFVw
KCkgewotICAgIG9yaWdpbmFsX3dvcmtpbmdfZGlyXyA9IEZpbGVQYXRoOjpHZXRDdXJyZW50RGly
KCk7Ci0gICAgcG9zaXg6OkNoRGlyKCIuLiIpOwotICAgIC8vIFRoaXMgd2lsbCBtYWtlIHRoZSB0
ZXN0IGZhaWwgaWYgcnVuIGZyb20gdGhlIHJvb3QgZGlyZWN0b3J5LgotICAgIEVYUEVDVF9TVFJO
RShvcmlnaW5hbF93b3JraW5nX2Rpcl8uY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgRmlsZVBh
dGg6OkdldEN1cnJlbnREaXIoKS5jX3N0cigpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpIHsKLSAgICBwb3NpeDo6Q2hEaXIob3JpZ2luYWxfd29ya2luZ19kaXJfLmNfc3RyKCkp
OwotICB9Ci0KLSAgRmlsZVBhdGggb3JpZ2luYWxfd29ya2luZ19kaXJfOwotfTsKLQotVEVTVF9G
KFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aERl
ZmF1bHQpIHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0gIiI7Ci0gIEVYUEVDVF9TVFJFUShGaWxl
UGF0aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuY19zdHIo
KSwKLSAgICAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRw
dXRGaWxlKCkuY19zdHIoKSk7Ci19Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQ
cmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhEZWZhdWx0WE1MKSB7Ci0gIEdURVNUX0ZMQUco
b3V0cHV0KSA9ICJ4bWwiOwotICBFWFBFQ1RfU1RSRVEoRmlsZVBhdGg6OkNvbmNhdFBhdGhzKG9y
aWdpbmFsX3dvcmtpbmdfZGlyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGaWxlUGF0aCgidGVzdF9kZXRhaWwueG1sIikpLmNfc3RyKCksCi0gICAgICAgICAgICAgICBV
bml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOwot
fQotCi1URVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtp
bmdEaXJXaXRoUmVsYXRpdmVGaWxlKSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6Zmls
ZW5hbWUuYWJjIjsKLSAgRVhQRUNUX1NUUkVRKEZpbGVQYXRoOjpDb25jYXRQYXRocyhvcmlnaW5h
bF93b3JraW5nX2Rpcl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmls
ZVBhdGgoImZpbGVuYW1lLmFiYyIpKS5jX3N0cigpLAotICAgICAgICAgICAgICAgVW5pdFRlc3RP
cHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0cigpKTsKLX0KLQotVEVT
VF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0
aFJlbGF0aXZlUGF0aCkgewotICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOnBhdGgiIEdURVNU
X1BBVEhfU0VQXzsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZXhwZWN0ZWRfb3V0cHV0X2ZpbGUgPQot
ICAgICAgRmlsZVBhdGg6OkNvbmNhdFBhdGhzKAotICAgICAgICAgIG9yaWdpbmFsX3dvcmtpbmdf
ZGlyXywKLSAgICAgICAgICBGaWxlUGF0aChzdGQ6OnN0cmluZygicGF0aCIpICsgR1RFU1RfUEFU
SF9TRVBfICsKLSAgICAgICAgICAgICAgICAgICBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5j
X3N0cigpICsgIi54bWwiKSkuY19zdHIoKTsKLSAgY29uc3QgU3RyaW5nJiBvdXRwdXRfZmlsZSA9
IFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7Ci0jaWYgR1RF
U1RfT1NfV0lORE9XUwotICBFWFBFQ1RfU1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxlLmNf
c3RyKCksIG91dHB1dF9maWxlLmNfc3RyKCkpOwotI2Vsc2UKLSAgRVhQRUNUX0VRKGV4cGVjdGVk
X291dHB1dF9maWxlLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKLSNlbmRpZgotfQotCi1URVNUX0Yo
WG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoQWJz
b2x1dGVGaWxlKSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICBHVEVTVF9GTEFHKG91dHB1dCkg
PSAieG1sOmM6XFx0bXBcXGZpbGVuYW1lLmFiYyI7Ci0gIEVYUEVDVF9TVFJFUShGaWxlUGF0aCgi
YzpcXHRtcFxcZmlsZW5hbWUuYWJjIikuY19zdHIoKSwKLSAgICAgICAgICAgICAgIFVuaXRUZXN0
T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSk7Ci0jZWxzZQot
ICBHVEVTVF9GTEFHKG91dHB1dCkgPSJ4bWw6L3RtcC9maWxlbmFtZS5hYmMiOwotICBFWFBFQ1Rf
U1RSRVEoRmlsZVBhdGgoIi90bXAvZmlsZW5hbWUuYWJjIikuY19zdHIoKSwKLSAgICAgICAgICAg
ICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIo
KSk7Ci0jZW5kaWYKLX0KLQotVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZl
T3JpZ2luYWxXb3JraW5nRGlyV2l0aEFic29sdXRlUGF0aCkgewotI2lmIEdURVNUX09TX1dJTkRP
V1MKLSAgY29uc3Qgc3RkOjpzdHJpbmcgcGF0aCA9ICJjOlxcdG1wXFwiOwotI2Vsc2UKLSAgY29u
c3Qgc3RkOjpzdHJpbmcgcGF0aCA9ICIvdG1wLyI7Ci0jZW5kaWYKLQotICBHVEVTVF9GTEFHKG91
dHB1dCkgPSAieG1sOiIgKyBwYXRoOwotICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3RlZF9vdXRw
dXRfZmlsZSA9Ci0gICAgICBwYXRoICsgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuY19zdHIo
KSArICIueG1sIjsKLSAgY29uc3QgU3RyaW5nJiBvdXRwdXRfZmlsZSA9IFVuaXRUZXN0T3B0aW9u
czo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dT
Ci0gIEVYUEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUuY19zdHIoKSwgb3V0cHV0
X2ZpbGUuY19zdHIoKSk7Ci0jZWxzZQotICBFWFBFQ1RfRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUs
IG91dHB1dF9maWxlLmNfc3RyKCkpOwotI2VuZGlmCi19Ci0KLX0gIC8vIG5hbWVzcGFjZQotfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNj
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2I2Y2ZhYzllNzZiODI3ZjE3YWUxMTgy
OWUyMzZkNmY5N2VlNjQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdDJfdGVz
dC5jYworKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBH
b29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
Ly8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20g
KFZsYWQgTG9zZXYpCi0vLwotLy8gVGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZi4gIFRoaXMg
dmVyaWZpZXMgdGhhdCB0aGUgYmFzaWMgY29uc3RydWN0cyBvZgotLy8gR29vZ2xlIFRlc3Qgd29y
ay4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXBh
cmFtLXRlc3RfdGVzdC5oIgotCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotdXNpbmcgOjp0
ZXN0aW5nOjpWYWx1ZXM7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVyYXRv
cjsKLQotLy8gVGVzdHMgdGhhdCBnZW5lcmF0b3JzIGRlZmluZWQgaW4gYSBkaWZmZXJlbnQgdHJh
bnNsYXRpb24gdW5pdAotLy8gYXJlIGZ1bmN0aW9uYWwuIFRoZSB0ZXN0IHVzaW5nIGV4dGVybl9n
ZW4gaXMgZGVmaW5lZAotLy8gaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmNjLgotUGFyYW1HZW5l
cmF0b3I8aW50PiBleHRlcm5fZ2VuID0gVmFsdWVzKDMzKTsKLQotLy8gVGVzdHMgdGhhdCBhIHBh
cmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBkZWZpbmVkIGluIG9uZSB0cmFuc2xhdGlvbiB1
bml0Ci0vLyBhbmQgaW5zdGFudGlhdGVkIGluIGFub3RoZXIuIFRoZSB0ZXN0IGlzIGRlZmluZWQg
aW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmNjCi0vLyBhbmQgRXh0ZXJuYWxJbnN0YW50aWF0aW9u
VGVzdCBmaXh0dXJlIGNsYXNzIGlzIGRlZmluZWQgaW4KLS8vIGd0ZXN0LXBhcmFtLXRlc3RfdGVz
dC5oLgotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoTXVsdGlwbGVzT2YzMywKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3QsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBWYWx1ZXMoMzMsIDY2KSk7Ci0KLS8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVk
IHRlc3QgY2FzZSBjYW4gYmUgaW5zdGFudGlhdGVkCi0vLyBpbiBtdWx0aXBsZSB0cmFuc2xhdGlv
biB1bml0cy4gQW5vdGhlciBpbnN0YW50aWF0aW9uIGlzIGRlZmluZWQKLS8vIGluIGd0ZXN0LXBh
cmFtLXRlc3RfdGVzdC5jYyBhbmQgSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5p
dHNUZXN0Ci0vLyBmaXh0dXJlIGlzIGRlZmluZWQgaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmgK
LUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbHVlcyg0MiozLCA0Mio0LCA0Mio1KSk7Ci0KLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1BBUkFNX1RFU1QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQwYTBlNzM1YzBiOTg4ZWYxYTIyYjdkN2FlNjkwMjcwMThiZGI4Y2IuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw4MzUg
KzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
Ly8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8K
LS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCi0vLyBUZXN0cyBm
b3IgR29vZ2xlIFRlc3QgaXRzZWxmLiBUaGlzIGZpbGUgdmVyaWZpZXMgdGhhdCB0aGUgcGFyYW1l
dGVyCi0vLyBnZW5lcmF0b3JzIG9iamVjdHMgcHJvZHVjZSBjb3JyZWN0IHBhcmFtZXRlciBzZXF1
ZW5jZXMgYW5kIHRoYXQKLS8vIEdvb2dsZSBUZXN0IHJ1bnRpbWUgaW5zdGFudGlhdGVzIGNvcnJl
Y3QgdGVzdHMgZnJvbSB0aG9zZSBzZXF1ZW5jZXMuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5o
PgotCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNp
bmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxsaXN0PgotI2luY2x1ZGUgPHNzdHJlYW0+Ci0j
aW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotLy8gVG8gaW5jbHVkZSBndGVz
dC1pbnRlcm5hbC1pbmwuaC4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNs
dWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiICAvLyBmb3IgVW5pdFRlc3RPcHRpb25zCi0j
dW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXBhcmFt
LXRlc3RfdGVzdC5oIgotCi11c2luZyA6OnN0ZDo6dmVjdG9yOwotdXNpbmcgOjpzdGQ6OnNvcnQ7
Ci0KLXVzaW5nIDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50OwotdXNpbmcgOjp0
ZXN0aW5nOjpCb29sOwotdXNpbmcgOjp0ZXN0aW5nOjpNZXNzYWdlOwotdXNpbmcgOjp0ZXN0aW5n
OjpSYW5nZTsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTsKLXVzaW5nIDo6dGVzdGlu
Zzo6VmFsdWVzOwotdXNpbmcgOjp0ZXN0aW5nOjpWYWx1ZXNJbjsKLQotI2lmIEdURVNUX0hBU19D
T01CSU5FCi11c2luZyA6OnRlc3Rpbmc6OkNvbWJpbmU7Ci11c2luZyA6OnN0ZDo6dHIxOjpnZXQ7
Ci11c2luZyA6OnN0ZDo6dHIxOjptYWtlX3R1cGxlOwotdXNpbmcgOjpzdGQ6OnRyMTo6dHVwbGU7
Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCi0KLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJu
YWw6OlBhcmFtR2VuZXJhdG9yOwotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdFRlc3RP
cHRpb25zOwotCi0vLyBQcmludHMgYSB2YWx1ZSB0byBhIHN0cmluZy4KLS8vCi0vLyBUT0RPKHdh
bkBnb29nbGUuY29tKTogcmVtb3ZlIFByaW50VmFsdWUoKSB3aGVuIHdlIG1vdmUgbWF0Y2hlcnMg
YW5kCi0vLyBFWFBFQ1RfVEhBVCgpIGZyb20gR29vZ2xlIE1vY2sgdG8gR29vZ2xlIFRlc3QuICBB
dCB0aGF0IHRpbWUsIHdlCi0vLyBjYW4gd3JpdGUgRVhQRUNUX1RIQVQoeCwgRXEoeSkpIHRvIGNv
bXBhcmUgdHdvIHR1cGxlcyB4IGFuZCB5LCBhcwotLy8gRVhQRUNUX1RIQVQoKSBhbmQgdGhlIG1h
dGNoZXJzIGtub3cgaG93IHRvIHByaW50IHR1cGxlcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
OjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKGNvbnN0IFQmIHZhbHVlKSB7Ci0gIDo6c3RkOjpzdHJp
bmdzdHJlYW0gc3RyZWFtOwotICBzdHJlYW0gPDwgdmFsdWU7Ci0gIHJldHVybiBzdHJlYW0uc3Ry
KCk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfQ09NQklORQotCi0vLyBUaGVzZSBvdmVybG9hZHMgYWxs
b3cgcHJpbnRpbmcgdHVwbGVzIGluIG91ciB0ZXN0cy4gIFdlIGNhbm5vdAotLy8gZGVmaW5lIGFu
IG9wZXJhdG9yPDwgZm9yIHR1cGxlcywgYXMgdGhhdCBkZWZpbml0aW9uIG5lZWRzIHRvIGJlIGlu
Ci0vLyB0aGUgc3RkIG5hbWVzcGFjZSBpbiBvcmRlciB0byBiZSBwaWNrZWQgdXAgYnkgR29vZ2xl
IFRlc3QgdmlhCi0vLyBBcmd1bWVudC1EZXBlbmRlbnQgTG9va3VwLCB5ZXQgZGVmaW5pbmcgYW55
dGhpbmcgaW4gdGhlIHN0ZAotLy8gbmFtZXNwYWNlIGluIG5vbi1TVEwgY29kZSBpcyB1bmRlZmlu
ZWQgYmVoYXZpb3IuCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci06OnN0
ZDo6c3RyaW5nIFByaW50VmFsdWUoY29uc3QgdHVwbGU8VDEsIFQyPiYgdmFsdWUpIHsKLSAgOjpz
dGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07Ci0gIHN0cmVhbSA8PCAiKCIgPDwgZ2V0PDA+KHZhbHVl
KSA8PCAiLCAiIDw8IGdldDwxPih2YWx1ZSkgPDwgIikiOwotICByZXR1cm4gc3RyZWFtLnN0cigp
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4K
LTo6c3RkOjpzdHJpbmcgUHJpbnRWYWx1ZShjb25zdCB0dXBsZTxUMSwgVDIsIFQzPiYgdmFsdWUp
IHsKLSAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07Ci0gIHN0cmVhbSA8PCAiKCIgPDwgZ2V0
PDA+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDwxPih2YWx1ZSkKLSAgICAgICAgIDw8ICIsICI8PCBn
ZXQ8Mj4odmFsdWUpIDw8ICIpIjsKLSAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKLX0KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0
eXBlbmFtZSBUNSwKLSAgICAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1l
IFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgotOjpzdGQ6OnN0cmluZyBQcmludFZhbHVl
KAotICAgIGNvbnN0IHR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MD4mIHZhbHVlKSB7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOwotICBzdHJlYW0gPDwg
IigiIDw8IGdldDwwPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8MT4odmFsdWUpCi0gICAgICAgICA8
PCAiLCAiPDwgZ2V0PDI+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDwzPih2YWx1ZSkKLSAgICAgICAg
IDw8ICIsICI8PCBnZXQ8ND4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDU+KHZhbHVlKQotICAgICAg
ICAgPDwgIiwgIjw8IGdldDw2Pih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8Nz4odmFsdWUpCi0gICAg
ICAgICA8PCAiLCAiPDwgZ2V0PDg+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDw5Pih2YWx1ZSkgPDwg
IikiOwotICByZXR1cm4gc3RyZWFtLnN0cigpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19D
T01CSU5FCi0KLS8vIFZlcmlmaWVzIHRoYXQgYSBzZXF1ZW5jZSBnZW5lcmF0ZWQgYnkgdGhlIGdl
bmVyYXRvciBhbmQgYWNjZXNzZWQKLS8vIHZpYSB0aGUgaXRlcmF0b3Igb2JqZWN0IG1hdGNoZXMg
dGhlIGV4cGVjdGVkIG9uZSB1c2luZyBHb29nbGUgVGVzdAotLy8gYXNzZXJ0aW9ucy4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KLXZvaWQgVmVyaWZ5R2VuZXJhdG9yKGNvbnN0IFBh
cmFtR2VuZXJhdG9yPFQ+JiBnZW5lcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBU
ICgmZXhwZWN0ZWRfdmFsdWVzKVtOXSkgewotICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUPjo6
aXRlcmF0b3IgaXQgPSBnZW5lcmF0b3IuYmVnaW4oKTsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBOOyArK2kpIHsKLSAgICBBU1NFUlRfRkFMU0UoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKQotICAg
ICAgICA8PCAiQXQgZWxlbWVudCAiIDw8IGkgPDwgIiB3aGVuIGFjY2Vzc2luZyB2aWEgYW4gaXRl
cmF0b3IgIgotICAgICAgICA8PCAiY3JlYXRlZCB3aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9yLlxu
IjsKLSAgICAvLyBXZSBjYW5ub3QgdXNlIEVYUEVDVF9FUSgpIGhlcmUgYXMgdGhlIHZhbHVlcyBt
YXkgYmUgdHVwbGVzLAotICAgIC8vIHdoaWNoIGRvbid0IHN1cHBvcnQgPDwuCi0gICAgRVhQRUNU
X1RSVUUoZXhwZWN0ZWRfdmFsdWVzW2ldID09ICppdCkKLSAgICAgICAgPDwgIndoZXJlIGkgaXMg
IiA8PCBpCi0gICAgICAgIDw8ICIsIGV4cGVjdGVkX3ZhbHVlc1tpXSBpcyAiIDw8IFByaW50VmFs
dWUoZXhwZWN0ZWRfdmFsdWVzW2ldKQotICAgICAgICA8PCAiLCAqaXQgaXMgIiA8PCBQcmludFZh
bHVlKCppdCkKLSAgICAgICAgPDwgIiwgYW5kICdpdCcgaXMgYW4gaXRlcmF0b3IgY3JlYXRlZCB3
aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9yLlxuIjsKLSAgICBpdCsrOwotICB9Ci0gIEVYUEVDVF9U
UlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSkKLSAgICAgICAgPDwgIkF0IHRoZSBwcmVzdW1lZCBl
bmQgb2Ygc2VxdWVuY2Ugd2hlbiBhY2Nlc3NpbmcgdmlhIGFuIGl0ZXJhdG9yICIKLSAgICAgICAg
PDwgImNyZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rvci5cbiI7Ci0KLSAgLy8gVGVzdCB0
aGUgaXRlcmF0b3IgYXNzaWdubWVudC4gVGhlIGZvbGxvd2luZyBsaW5lcyB2ZXJpZnkgdGhhdAot
ICAvLyB0aGUgc2VxdWVuY2UgYWNjZXNzZWQgdmlhIGFuIGl0ZXJhdG9yIGluaXRpYWxpemVkIHZp
YSB0aGUKLSAgLy8gYXNzaWdubWVudCBvcGVyYXRvciAoYXMgb3Bwb3NlZCB0byBhIGNvcHkgY29u
c3RydWN0b3IpIG1hdGNoZXMKLSAgLy8ganVzdCB0aGUgc2FtZS4KLSAgaXQgPSBnZW5lcmF0b3Iu
YmVnaW4oKTsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBOOyArK2kpIHsKLSAgICBBU1NFUlRf
RkFMU0UoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKQotICAgICAgICA8PCAiQXQgZWxlbWVudCAiIDw8
IGkgPDwgIiB3aGVuIGFjY2Vzc2luZyB2aWEgYW4gaXRlcmF0b3IgIgotICAgICAgICA8PCAiY3Jl
YXRlZCB3aXRoIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLlxuIjsKLSAgICBFWFBFQ1RfVFJVRShl
eHBlY3RlZF92YWx1ZXNbaV0gPT0gKml0KQotICAgICAgICA8PCAid2hlcmUgaSBpcyAiIDw8IGkK
LSAgICAgICAgPDwgIiwgZXhwZWN0ZWRfdmFsdWVzW2ldIGlzICIgPDwgUHJpbnRWYWx1ZShleHBl
Y3RlZF92YWx1ZXNbaV0pCi0gICAgICAgIDw8ICIsICppdCBpcyAiIDw8IFByaW50VmFsdWUoKml0
KQotICAgICAgICA8PCAiLCBhbmQgJ2l0JyBpcyBhbiBpdGVyYXRvciBjcmVhdGVkIHdpdGggdGhl
IGNvcHkgY29uc3RydWN0b3IuXG4iOwotICAgIGl0Kys7Ci0gIH0KLSAgRVhQRUNUX1RSVUUoaXQg
PT0gZ2VuZXJhdG9yLmVuZCgpKQotICAgICAgICA8PCAiQXQgdGhlIHByZXN1bWVkIGVuZCBvZiBz
ZXF1ZW5jZSB3aGVuIGFjY2Vzc2luZyB2aWEgYW4gaXRlcmF0b3IgIgotICAgICAgICA8PCAiY3Jl
YXRlZCB3aXRoIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLlxuIjsKLX0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci12b2lkIFZlcmlmeUdlbmVyYXRvcklzRW1wdHkoY29uc3QgUGFyYW1HZW5lcmF0
b3I8VD4mIGdlbmVyYXRvcikgewotICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUPjo6aXRlcmF0
b3IgaXQgPSBnZW5lcmF0b3IuYmVnaW4oKTsKLSAgRVhQRUNUX1RSVUUoaXQgPT0gZ2VuZXJhdG9y
LmVuZCgpKTsKLQotICBpdCA9IGdlbmVyYXRvci5iZWdpbigpOwotICBFWFBFQ1RfVFJVRShpdCA9
PSBnZW5lcmF0b3IuZW5kKCkpOwotfQotCi0vLyBHZW5lcmF0b3IgdGVzdHMuIFRoZXkgdGVzdCB0
aGF0IGVhY2ggb2YgdGhlIHByb3ZpZGVkIGdlbmVyYXRvciBmdW5jdGlvbnMKLS8vIGdlbmVyYXRl
cyBhbiBleHBlY3RlZCBzZXF1ZW5jZSBvZiB2YWx1ZXMuIFRoZSBnZW5lcmFsIHRlc3QgcGF0dGVy
bgotLy8gaW5zdGFudGlhdGVzIGEgZ2VuZXJhdG9yIHVzaW5nIG9uZSBvZiB0aGUgZ2VuZXJhdG9y
IGZ1bmN0aW9ucywKLS8vIGNoZWNrcyB0aGUgc2VxdWVuY2UgcHJvZHVjZWQgYnkgdGhlIGdlbmVy
YXRvciB1c2luZyBpdHMgaXRlcmF0b3IgQVBJLAotLy8gYW5kIHRoZW4gcmVzZXRzIHRoZSBpdGVy
YXRvciBiYWNrIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlcXVlbmNlCi0vLyBhbmQgY2hlY2tz
IHRoZSBzZXF1ZW5jZSBhZ2Fpbi4KLQotLy8gVGVzdHMgdGhhdCBpdGVyYXRvcnMgcHJvZHVjZWQg
YnkgZ2VuZXJhdG9yIGZ1bmN0aW9ucyBjb25mb3JtIHRvIHRoZQotLy8gRm9yd2FyZEl0ZXJhdG9y
IGNvbmNlcHQuCi1URVNUKEl0ZXJhdG9yVGVzdCwgUGFyYW1JdGVyYXRvckNvbmZvcm1zVG9Gb3J3
YXJkSXRlcmF0b3JDb25jZXB0KSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0g
UmFuZ2UoMCwgMTApOwotICBQYXJhbUdlbmVyYXRvcjxpbnQ+OjppdGVyYXRvciBpdCA9IGdlbi5i
ZWdpbigpOwotCi0gIC8vIFZlcmlmaWVzIHRoYXQgaXRlcmF0b3IgaW5pdGlhbGl6YXRpb24gd29y
a3MgYXMgZXhwZWN0ZWQuCi0gIFBhcmFtR2VuZXJhdG9yPGludD46Oml0ZXJhdG9yIGl0MiA9IGl0
OwotICBFWFBFQ1RfVFJVRSgqaXQgPT0gKml0MikgPDwgIkluaXRpYWxpemVkIGl0ZXJhdG9ycyBt
dXN0IHBvaW50IHRvIHRoZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiZWxlbWVu
dCBzYW1lIGFzIGl0cyBzb3VyY2UgcG9pbnRzIHRvIjsKLQotICAvLyBWZXJpZmllcyB0aGF0IGl0
ZXJhdG9yIGFzc2lnbm1lbnQgd29ya3MgYXMgZXhwZWN0ZWQuCi0gIGl0Kys7Ci0gIEVYUEVDVF9G
QUxTRSgqaXQgPT0gKml0Mik7Ci0gIGl0MiA9IGl0OwotICBFWFBFQ1RfVFJVRSgqaXQgPT0gKml0
MikgPDwgIkFzc2lnbmVkIGl0ZXJhdG9ycyBtdXN0IHBvaW50IHRvIHRoZSAiCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCAiZWxlbWVudCBzYW1lIGFzIGl0cyBzb3VyY2UgcG9pbnRzIHRv
IjsKLQotICAvLyBWZXJpZmllcyB0aGF0IHByZWZpeCBvcGVyYXRvcisrKCkgcmV0dXJucyAqdGhp
cy4KLSAgRVhQRUNUX0VRKCZpdCwgJigrK2l0KSkgPDwgIlJlc3VsdCBvZiB0aGUgcHJlZml4IG9w
ZXJhdG9yKysgbXVzdCBiZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJyZWZlciB0
byB0aGUgb3JpZ2luYWwgb2JqZWN0IjsKLQotICAvLyBWZXJpZmllcyB0aGF0IHRoZSByZXN1bHQg
b2YgdGhlIHBvc3RmaXggb3BlcmF0b3IrKyBwb2ludHMgdG8gdGhlIHZhbHVlCi0gIC8vIHBvaW50
ZWQgdG8gYnkgdGhlIG9yaWdpbmFsIGl0ZXJhdG9yLgotICBpbnQgb3JpZ2luYWxfdmFsdWUgPSAq
aXQ7ICAvLyBIYXZlIHRvIGNvbXB1dGUgaXQgb3V0c2lkZSBvZiBtYWNybyBjYWxsIHRvIGJlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVuYWZmZWN0ZWQgYnkgdGhlIHBhcmFtZXRl
ciBldmFsdWF0aW9uIG9yZGVyLgotICBFWFBFQ1RfRVEob3JpZ2luYWxfdmFsdWUsICooaXQrKykp
OwotCi0gIC8vIFZlcmlmaWVzIHRoYXQgcHJlZml4IGFuZCBwb3N0Zml4IG9wZXJhdG9yKysoKSBh
ZHZhbmNlIGFuIGl0ZXJhdG9yCi0gIC8vIGFsbCB0aGUgc2FtZS4KLSAgaXQyID0gaXQ7Ci0gIGl0
Kys7Ci0gICsraXQyOwotICBFWFBFQ1RfVFJVRSgqaXQgPT0gKml0Mik7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgUmFuZ2UoKSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgotVEVTVChSYW5n
ZVRlc3QsIEludFJhbmdlV2l0aERlZmF1bHRTdGVwKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9y
PGludD4gZ2VuID0gUmFuZ2UoMCwgMyk7Ci0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9
IHswLCAxLCAyfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0K
LQotLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFJhbmdlKCkgZ2VuZXJhdGVzIHRoZSBzaW5nbGUg
ZWxlbWVudCBzZXF1ZW5jZQotLy8gYXMgZXhwZWN0ZWQgd2hlbiBwcm92aWRlZCB3aXRoIHJhbmdl
IGxpbWl0cyB0aGF0IGFyZSBlcXVhbC4KLVRFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZVNpbmdsZVZh
bHVlKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgMSk7Ci0g
IGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHswfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdl
biwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFJhbmdl
KCkgd2l0aCBnZW5lcmF0ZXMgZW1wdHkgc2VxdWVuY2Ugd2hlbgotLy8gc3VwcGxpZWQgd2l0aCBh
biBlbXB0eSByYW5nZS4KLVRFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZUVtcHR5KSB7Ci0gIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgMCk7Ci0gIFZlcmlmeUdlbmVyYXRv
cklzRW1wdHkoZ2VuKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBSYW5nZSgpIHdpdGggY3VzdG9tIHN0
ZXAgKGdyZWF0ZXIgdGhlbiBvbmUpIGdlbmVyYXRlcwotLy8gdGhlIGV4cGVjdGVkIHNlcXVlbmNl
LgotVEVTVChSYW5nZVRlc3QsIEludFJhbmdlV2l0aEN1c3RvbVN0ZXApIHsKLSAgY29uc3QgUGFy
YW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCA5LCAzKTsKLSAgY29uc3QgaW50IGV4cGVj
dGVkX3ZhbHVlc1tdID0gezAsIDMsIDZ9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3Rl
ZF92YWx1ZXMpOwotfQotCi0vLyBUZXN0cyB0aGF0IFJhbmdlKCkgd2l0aCBjdXN0b20gc3RlcCAo
Z3JlYXRlciB0aGVuIG9uZSkgZ2VuZXJhdGVzCi0vLyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2Ugd2hl
biB0aGUgbGFzdCBlbGVtZW50IGRvZXMgbm90IGZhbGwgb24gdGhlCi0vLyB1cHBlciByYW5nZSBs
aW1pdC4gU2VxdWVuY2VzIGdlbmVyYXRlZCBieSBSYW5nZSgpIG11c3Qgbm90IGhhdmUKLS8vIGVs
ZW1lbnRzIGJleW9uZCB0aGUgcmFuZ2UgbGltaXRzLgotVEVTVChSYW5nZVRlc3QsIEludFJhbmdl
V2l0aEN1c3RvbVN0ZXBPdmVyVXBwZXJCb3VuZCkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxp
bnQ+IGdlbiA9IFJhbmdlKDAsIDQsIDMpOwotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10g
PSB7MCwgM307Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0K
LS8vIFZlcmlmaWVzIHRoYXQgUmFuZ2Ugd29ya3Mgd2l0aCB1c2VyLWRlZmluZWQgdHlwZXMgdGhh
dCBkZWZpbmUKLS8vIGNvcHkgY29uc3RydWN0b3IsIG9wZXJhdG9yPSgpLCBvcGVyYXRvcisoKSwg
YW5kIG9wZXJhdG9yPCgpLgotY2xhc3MgRG9nQWRkZXIgewotIHB1YmxpYzoKLSAgZXhwbGljaXQg
RG9nQWRkZXIoY29uc3QgY2hhciogYV92YWx1ZSkgOiB2YWx1ZV8oYV92YWx1ZSkge30KLSAgRG9n
QWRkZXIoY29uc3QgRG9nQWRkZXImIG90aGVyKSA6IHZhbHVlXyhvdGhlci52YWx1ZV8uY19zdHIo
KSkge30KLQotICBEb2dBZGRlciBvcGVyYXRvcj0oY29uc3QgRG9nQWRkZXImIG90aGVyKSB7Ci0g
ICAgaWYgKHRoaXMgIT0gJm90aGVyKQotICAgICAgdmFsdWVfID0gb3RoZXIudmFsdWVfOwotICAg
IHJldHVybiAqdGhpczsKLSAgfQotICBEb2dBZGRlciBvcGVyYXRvcisoY29uc3QgRG9nQWRkZXIm
IG90aGVyKSBjb25zdCB7Ci0gICAgTWVzc2FnZSBtc2c7Ci0gICAgbXNnIDw8IHZhbHVlXy5jX3N0
cigpIDw8IG90aGVyLnZhbHVlXy5jX3N0cigpOwotICAgIHJldHVybiBEb2dBZGRlcihtc2cuR2V0
U3RyaW5nKCkuY19zdHIoKSk7Ci0gIH0KLSAgYm9vbCBvcGVyYXRvcjwoY29uc3QgRG9nQWRkZXIm
IG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIHZhbHVlXyA8IG90aGVyLnZhbHVlXzsKLSAgfQot
ICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmcmIHZhbHVlKCkgY29uc3QgeyByZXR1
cm4gdmFsdWVfOyB9Ci0KLSBwcml2YXRlOgotICA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmcg
dmFsdWVfOwotfTsKLQotVEVTVChSYW5nZVRlc3QsIFdvcmtzV2l0aEFDdXN0b21UeXBlKSB7Ci0g
IGNvbnN0IFBhcmFtR2VuZXJhdG9yPERvZ0FkZGVyPiBnZW4gPQotICAgICAgUmFuZ2UoRG9nQWRk
ZXIoImNhdCIpLCBEb2dBZGRlcigiY2F0ZG9nZG9nIiksIERvZ0FkZGVyKCJkb2ciKSk7Ci0gIFBh
cmFtR2VuZXJhdG9yPERvZ0FkZGVyPjo6aXRlcmF0b3IgaXQgPSBnZW4uYmVnaW4oKTsKLQotICBB
U1NFUlRfRkFMU0UoaXQgPT0gZ2VuLmVuZCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJjYXQiLCBpdC0+
dmFsdWUoKS5jX3N0cigpKTsKLQotICBBU1NFUlRfRkFMU0UoKytpdCA9PSBnZW4uZW5kKCkpOwot
ICBFWFBFQ1RfU1RSRVEoImNhdGRvZyIsIGl0LT52YWx1ZSgpLmNfc3RyKCkpOwotCi0gIEVYUEVD
VF9UUlVFKCsraXQgPT0gZ2VuLmVuZCgpKTsKLX0KLQotY2xhc3MgSW50V3JhcHBlciB7Ci0gcHVi
bGljOgotICBleHBsaWNpdCBJbnRXcmFwcGVyKGludCBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVl
KSB7fQotICBJbnRXcmFwcGVyKGNvbnN0IEludFdyYXBwZXImIG90aGVyKSA6IHZhbHVlXyhvdGhl
ci52YWx1ZV8pIHt9Ci0KLSAgSW50V3JhcHBlciBvcGVyYXRvcj0oY29uc3QgSW50V3JhcHBlciYg
b3RoZXIpIHsKLSAgICB2YWx1ZV8gPSBvdGhlci52YWx1ZV87Ci0gICAgcmV0dXJuICp0aGlzOwot
ICB9Ci0gIC8vIG9wZXJhdG9yKygpIGFkZHMgYSBkaWZmZXJlbnQgdHlwZS4KLSAgSW50V3JhcHBl
ciBvcGVyYXRvcisoaW50IG90aGVyKSBjb25zdCB7IHJldHVybiBJbnRXcmFwcGVyKHZhbHVlXyAr
IG90aGVyKTsgfQotICBib29sIG9wZXJhdG9yPChjb25zdCBJbnRXcmFwcGVyJiBvdGhlcikgY29u
c3QgewotICAgIHJldHVybiB2YWx1ZV8gPCBvdGhlci52YWx1ZV87Ci0gIH0KLSAgaW50IHZhbHVl
KCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9Ci0KLSBwcml2YXRlOgotICBpbnQgdmFsdWVfOwot
fTsKLQotVEVTVChSYW5nZVRlc3QsIFdvcmtzV2l0aEFDdXN0b21UeXBlV2l0aERpZmZlcmVudElu
Y3JlbWVudFR5cGUpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8SW50V3JhcHBlcj4gZ2VuID0g
UmFuZ2UoSW50V3JhcHBlcigwKSwgSW50V3JhcHBlcigyKSk7Ci0gIFBhcmFtR2VuZXJhdG9yPElu
dFdyYXBwZXI+OjppdGVyYXRvciBpdCA9IGdlbi5iZWdpbigpOwotCi0gIEFTU0VSVF9GQUxTRShp
dCA9PSBnZW4uZW5kKCkpOwotICBFWFBFQ1RfRVEoMCwgaXQtPnZhbHVlKCkpOwotCi0gIEFTU0VS
VF9GQUxTRSgrK2l0ID09IGdlbi5lbmQoKSk7Ci0gIEVYUEVDVF9FUSgxLCBpdC0+dmFsdWUoKSk7
Ci0KLSAgRVhQRUNUX1RSVUUoKytpdCA9PSBnZW4uZW5kKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0
IFZhbHVlc0luKCkgd2l0aCBhbiBhcnJheSBwYXJhbWV0ZXIgZ2VuZXJhdGVzCi0vLyB0aGUgZXhw
ZWN0ZWQgc2VxdWVuY2UuCi1URVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5BcnJheSkgewotICBp
bnQgYXJyYXlbXSA9IHszLCA1LCA4fTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4g
PSBWYWx1ZXNJbihhcnJheSk7Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGFycmF5KTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIHdpdGggYSBjb25zdCBhcnJheSBwYXJhbWV0ZXIgZ2Vu
ZXJhdGVzCi0vLyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCi1URVNUKFZhbHVlc0luVGVzdCwgVmFs
dWVzSW5Db25zdEFycmF5KSB7Ci0gIGNvbnN0IGludCBhcnJheVtdID0gezMsIDUsIDh9OwotICBj
b25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKGFycmF5KTsKLSAgVmVyaWZ5
R2VuZXJhdG9yKGdlbiwgYXJyYXkpOwotfQotCi0vLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgVmFs
dWVzSW4oKSB3aXRoIGFuIGFycmF5IHBhcmFtZXRlciBjb250YWluaW5nIGEKLS8vIHNpbmdsZSBl
bGVtZW50IGdlbmVyYXRlcyB0aGUgc2luZ2xlIGVsZW1lbnQgc2VxdWVuY2UuCi1URVNUKFZhbHVl
c0luVGVzdCwgVmFsdWVzSW5TaW5nbGVFbGVtZW50QXJyYXkpIHsKLSAgaW50IGFycmF5W10gPSB7
NDJ9OwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKGFycmF5KTsK
LSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgYXJyYXkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFZhbHVl
c0luKCkgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZSBmb3IgYW4gU1RMCi0vLyBjb250
YWluZXIgKHZlY3RvcikuCi1URVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5WZWN0b3IpIHsKLSAg
dHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGludD4gQ29udGFpbmVyVHlwZTsKLSAgQ29udGFpbmVyVHlw
ZSB2YWx1ZXM7Ci0gIHZhbHVlcy5wdXNoX2JhY2soMyk7Ci0gIHZhbHVlcy5wdXNoX2JhY2soNSk7
Ci0gIHZhbHVlcy5wdXNoX2JhY2soOCk7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2Vu
ID0gVmFsdWVzSW4odmFsdWVzKTsKLQotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7
MywgNSwgOH07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNl
LgotVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luSXRlcmF0b3JSYW5nZSkgewotICB0eXBlZGVm
IDo6c3RkOjp2ZWN0b3I8aW50PiBDb250YWluZXJUeXBlOwotICBDb250YWluZXJUeXBlIHZhbHVl
czsKLSAgdmFsdWVzLnB1c2hfYmFjaygzKTsKLSAgdmFsdWVzLnB1c2hfYmFjayg1KTsKLSAgdmFs
dWVzLnB1c2hfYmFjayg4KTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1
ZXNJbih2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKLQotICBjb25zdCBpbnQgZXhwZWN0
ZWRfdmFsdWVzW10gPSB7MywgNSwgOH07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVk
X3ZhbHVlcyk7Ci19Ci0KLS8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIHByb3Zp
ZGVkIHdpdGggYW4gaXRlcmF0b3IgcmFuZ2Ugc3BlY2lmeWluZyBhCi0vLyBzaW5nbGUgdmFsdWUg
Z2VuZXJhdGVzIGEgc2luZ2xlLWVsZW1lbnQgc2VxdWVuY2UuCi1URVNUKFZhbHVlc0luVGVzdCwg
VmFsdWVzSW5TaW5nbGVFbGVtZW50SXRlcmF0b3JSYW5nZSkgewotICB0eXBlZGVmIDo6c3RkOjp2
ZWN0b3I8aW50PiBDb250YWluZXJUeXBlOwotICBDb250YWluZXJUeXBlIHZhbHVlczsKLSAgdmFs
dWVzLnB1c2hfYmFjayg0Mik7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFs
dWVzSW4odmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7Ci0KLSAgY29uc3QgaW50IGV4cGVj
dGVkX3ZhbHVlc1tdID0gezQyfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFs
dWVzKTsKLX0KLQotLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFZhbHVlc0luKCkgcHJvdmlkZWQg
d2l0aCBhbiBlbXB0eSBpdGVyYXRvciByYW5nZQotLy8gZ2VuZXJhdGVzIGFuIGVtcHR5IHNlcXVl
bmNlLgotVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luRW1wdHlJdGVyYXRvclJhbmdlKSB7Ci0g
IHR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxpbnQ+IENvbnRhaW5lclR5cGU7Ci0gIENvbnRhaW5lclR5
cGUgdmFsdWVzOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKHZh
bHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOwotCi0gIFZlcmlmeUdlbmVyYXRvcklzRW1wdHko
Z2VuKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgVmFsdWVzKCkgZ2VuZXJhdGVzIHRoZSBleHBl
Y3RlZCBzZXF1ZW5jZS4KLVRFU1QoVmFsdWVzVGVzdCwgVmFsdWVzV29ya3MpIHsKLSAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXMoMywgNSwgOCk7Ci0KLSAgY29uc3QgaW50
IGV4cGVjdGVkX3ZhbHVlc1tdID0gezMsIDUsIDh9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBl
eHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBUZXN0cyB0aGF0IFZhbHVlcygpIGdlbmVyYXRlcyB0
aGUgZXhwZWN0ZWQgc2VxdWVuY2VzIGZyb20gZWxlbWVudHMgb2YKLS8vIGRpZmZlcmVudCB0eXBl
cyBjb252ZXJ0aWJsZSB0byBQYXJhbUdlbmVyYXRvcidzIHBhcmFtZXRlciB0eXBlLgotVEVTVChW
YWx1ZXNUZXN0LCBWYWx1ZXNXb3Jrc0ZvclZhbHVlc09mQ29tcGF0aWJsZVR5cGVzKSB7Ci0gIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPGRvdWJsZT4gZ2VuID0gVmFsdWVzKDMsIDUuMGYsIDguMCk7Ci0K
LSAgY29uc3QgZG91YmxlIGV4cGVjdGVkX3ZhbHVlc1tdID0gezMuMCwgNS4wLCA4LjB9OwotICBW
ZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi1URVNUKFZhbHVlc1Rl
c3QsIFZhbHVlc1dvcmtzRm9yTWF4TGVuZ3RoTGlzdCkgewotICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxpbnQ+IGdlbiA9IFZhbHVlcygKLSAgICAgIDEwLCAyMCwgMzAsIDQwLCA1MCwgNjAsIDcwLCA4
MCwgOTAsIDEwMCwKLSAgICAgIDExMCwgMTIwLCAxMzAsIDE0MCwgMTUwLCAxNjAsIDE3MCwgMTgw
LCAxOTAsIDIwMCwKLSAgICAgIDIxMCwgMjIwLCAyMzAsIDI0MCwgMjUwLCAyNjAsIDI3MCwgMjgw
LCAyOTAsIDMwMCwKLSAgICAgIDMxMCwgMzIwLCAzMzAsIDM0MCwgMzUwLCAzNjAsIDM3MCwgMzgw
LCAzOTAsIDQwMCwKLSAgICAgIDQxMCwgNDIwLCA0MzAsIDQ0MCwgNDUwLCA0NjAsIDQ3MCwgNDgw
LCA0OTAsIDUwMCk7Ci0KLSAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gewotICAgICAg
MTAsIDIwLCAzMCwgNDAsIDUwLCA2MCwgNzAsIDgwLCA5MCwgMTAwLAotICAgICAgMTEwLCAxMjAs
IDEzMCwgMTQwLCAxNTAsIDE2MCwgMTcwLCAxODAsIDE5MCwgMjAwLAotICAgICAgMjEwLCAyMjAs
IDIzMCwgMjQwLCAyNTAsIDI2MCwgMjcwLCAyODAsIDI5MCwgMzAwLAotICAgICAgMzEwLCAzMjAs
IDMzMCwgMzQwLCAzNTAsIDM2MCwgMzcwLCAzODAsIDM5MCwgNDAwLAotICAgICAgNDEwLCA0MjAs
IDQzMCwgNDQwLCA0NTAsIDQ2MCwgNDcwLCA0ODAsIDQ5MCwgNTAwfTsKLSAgVmVyaWZ5R2VuZXJh
dG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gRWRnZSBjYXNlIHRlc3QuIFRlc3Rz
IHRoYXQgc2luZ2xlLXBhcmFtZXRlciBWYWx1ZXMoKSBnZW5lcmF0ZXMgdGhlIHNlcXVlbmNlCi0v
LyB3aXRoIHRoZSBzaW5nbGUgdmFsdWUuCi1URVNUKFZhbHVlc1Rlc3QsIFZhbHVlc1dpdGhTaW5n
bGVQYXJhbWV0ZXIpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXMo
NDIpOwotCi0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHs0Mn07Ci0gIFZlcmlmeUdl
bmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQm9vbCgp
IGdlbmVyYXRlcyBzZXF1ZW5jZSAoZmFsc2UsIHRydWUpLgotVEVTVChCb29sVGVzdCwgQm9vbFdv
cmtzKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGJvb2w+IGdlbiA9IEJvb2woKTsKLQotICBj
b25zdCBib29sIGV4cGVjdGVkX3ZhbHVlc1tdID0ge2ZhbHNlLCB0cnVlfTsKLSAgVmVyaWZ5R2Vu
ZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotI2lmIEdURVNUX0hBU19DT01CSU5F
Ci0KLS8vIFRlc3RzIHRoYXQgQ29tYmluZSgpIHdpdGggdHdvIHBhcmFtZXRlcnMgZ2VuZXJhdGVz
IHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KLVRFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoVHdv
UGFyYW1ldGVycykgewotICBjb25zdCBjaGFyKiBmb28gPSAiZm9vIjsKLSAgY29uc3QgY2hhciog
YmFyID0gImJhciI7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGNvbnN0IGNoYXIqLCBp
bnQ+ID4gZ2VuID0KLSAgICAgIENvbWJpbmUoVmFsdWVzKGZvbywgYmFyKSwgVmFsdWVzKDMsIDQp
KTsKLQotICB0dXBsZTxjb25zdCBjaGFyKiwgaW50PiBleHBlY3RlZF92YWx1ZXNbXSA9IHsKLSAg
ICBtYWtlX3R1cGxlKGZvbywgMyksIG1ha2VfdHVwbGUoZm9vLCA0KSwKLSAgICBtYWtlX3R1cGxl
KGJhciwgMyksIG1ha2VfdHVwbGUoYmFyLCA0KX07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4
cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQ29tYmluZSgpIHdpdGggdGhyZWUg
cGFyYW1ldGVycyBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgotVEVTVChDb21iaW5l
VGVzdCwgQ29tYmluZVdpdGhUaHJlZVBhcmFtZXRlcnMpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0
b3I8dHVwbGU8aW50LCBpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcygwLCAxKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbHVlcygzLCA0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbHVlcyg1LCA2KSk7Ci0gIHR1cGxlPGludCwgaW50LCBpbnQ+
IGV4cGVjdGVkX3ZhbHVlc1tdID0gewotICAgIG1ha2VfdHVwbGUoMCwgMywgNSksIG1ha2VfdHVw
bGUoMCwgMywgNiksCi0gICAgbWFrZV90dXBsZSgwLCA0LCA1KSwgbWFrZV90dXBsZSgwLCA0LCA2
KSwKLSAgICBtYWtlX3R1cGxlKDEsIDMsIDUpLCBtYWtlX3R1cGxlKDEsIDMsIDYpLAotICAgIG1h
a2VfdHVwbGUoMSwgNCwgNSksIG1ha2VfdHVwbGUoMSwgNCwgNil9OwotICBWZXJpZnlHZW5lcmF0
b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBDb21iaW5l
KCkgd2l0aCB0aGUgZmlyc3QgcGFyYW1ldGVyIGdlbmVyYXRpbmcgYSBzaW5nbGUgdmFsdWUKLS8v
IHNlcXVlbmNlIGdlbmVyYXRlcyBhIHNlcXVlbmNlIHdpdGggdGhlIG51bWJlciBvZiBlbGVtZW50
cyBlcXVhbCB0byB0aGUKLS8vIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgc2VxdWVuY2UgZ2Vu
ZXJhdGVkIGJ5IHRoZSBzZWNvbmQgcGFyYW1ldGVyLgotVEVTVChDb21iaW5lVGVzdCwgQ29tYmlu
ZVdpdGhGaXJzdFBhcmFtZXRlclNpbmdsZVZhbHVlKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9y
PHR1cGxlPGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUoVmFsdWVzKDQyKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMCwgMSkp
OwotCi0gIHR1cGxlPGludCwgaW50PiBleHBlY3RlZF92YWx1ZXNbXSA9IHttYWtlX3R1cGxlKDQy
LCAwKSwgbWFrZV90dXBsZSg0MiwgMSl9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3Rl
ZF92YWx1ZXMpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBDb21iaW5lKCkgd2l0aCB0aGUgc2Vj
b25kIHBhcmFtZXRlciBnZW5lcmF0aW5nIGEgc2luZ2xlIHZhbHVlCi0vLyBzZXF1ZW5jZSBnZW5l
cmF0ZXMgYSBzZXF1ZW5jZSB3aXRoIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZXF1YWwgdG8gdGhl
Ci0vLyBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHNlcXVlbmNlIGdlbmVyYXRlZCBieSB0aGUg
Zmlyc3QgcGFyYW1ldGVyLgotVEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdpdGhTZWNvbmRQYXJh
bWV0ZXJTaW5nbGVWYWx1ZSkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGlu
dD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcygwLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNDIpKTsKLQotICB0dXBsZTxp
bnQsIGludD4gZXhwZWN0ZWRfdmFsdWVzW10gPSB7bWFrZV90dXBsZSgwLCA0MiksIG1ha2VfdHVw
bGUoMSwgNDIpfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCB3aGVuIHRoZSBmaXJzdCBwYXJhbWV0ZXIgcHJvZHVjZXMgYW4gZW1w
dHkgc2VxdWVuY2UsCi0vLyBDb21iaW5lKCkgcHJvZHVjZXMgYW4gZW1wdHkgc2VxdWVuY2UsIHRv
by4KLVRFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoRmlyc3RQYXJhbWV0ZXJFbXB0eVJhbmdl
KSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50PiA+IGdlbiA9IENvbWJp
bmUoUmFuZ2UoMCwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsdWVzKDAsIDEpKTsKLSAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShn
ZW4pOwotfQotCi0vLyBUZXN0cyB0aGF0IHdoZW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIgcHJvZHVj
ZXMgYW4gZW1wdHkgc2VxdWVuY2UsCi0vLyBDb21iaW5lKCkgcHJvZHVjZXMgYW4gZW1wdHkgc2Vx
dWVuY2UsIHRvby4KLVRFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoU2Vjb25kUGFyYW1ldGVy
RW1wdHlSYW5nZSkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludD4gPiBn
ZW4gPSBDb21iaW5lKFZhbHVlcygwLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5nZSgxLCAxKSk7Ci0gIFZlcmlmeUdlbmVyYXRv
cklzRW1wdHkoZ2VuKTsKLX0KLQotLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IGNvbWJpbmUgd29y
a3Mgd2l0aCB0aGUgbWF4aW11bSBudW1iZXIKLS8vIG9mIHBhcmFtZXRlcnMgc3VwcG9ydGVkIGJ5
IEdvb2dsZSBUZXN0IChjdXJyZW50bHkgMTApLgotVEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdp
dGhNYXhOdW1iZXJPZlBhcmFtZXRlcnMpIHsKLSAgY29uc3QgY2hhciogZm9vID0gImZvbyI7Ci0g
IGNvbnN0IGNoYXIqIGJhciA9ICJiYXIiOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxj
b25zdCBjaGFyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcyhmb28s
IGJhciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsdWVzKDEpLCBWYWx1ZXMoMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDMpLCBWYWx1ZXMoNCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDUp
LCBWYWx1ZXMoNiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsdWVzKDcpLCBWYWx1ZXMoOCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDkpKTsKLQotICB0dXBsZTxj
b25zdCBjaGFyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludD4K
LSAgICAgIGV4cGVjdGVkX3ZhbHVlc1tdID0ge21ha2VfdHVwbGUoZm9vLCAxLCAyLCAzLCA0LCA1
LCA2LCA3LCA4LCA5KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VfdHVwbGUoYmFy
LCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5KX07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4
cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKLQotLy8g
VGVzdHMgdGhhdCBhbiBnZW5lcmF0b3IgcHJvZHVjZXMgY29ycmVjdCBzZXF1ZW5jZSBhZnRlciBi
ZWluZwotLy8gYXNzaWduZWQgZnJvbSBhbm90aGVyIGdlbmVyYXRvci4KLVRFU1QoUGFyYW1HZW5l
cmF0b3JUZXN0LCBBc3NpZ25tZW50V29ya3MpIHsKLSAgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4g
PSBWYWx1ZXMoMSwgMik7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuMiA9IFZhbHVl
cygzLCA0KTsKLSAgZ2VuID0gZ2VuMjsKLQotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10g
PSB7MywgNH07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0K
LS8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSB0ZXN0cyBhcmUgZXhwYW5kZWQgYW5kIHJ1
biBhcyBzcGVjaWZpZWQ6Ci0vLyBvbmUgdGVzdCBwZXIgZWxlbWVudCBmcm9tIHRoZSBzZXF1ZW5j
ZSBwcm9kdWNlZCBieSB0aGUgZ2VuZXJhdG9yCi0vLyBzcGVjaWZpZWQgaW4gSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AuIEl0IGFsc28gdmVyaWZpZXMgdGhhdCB0aGUgdGVzdCdzCi0vLyBmaXh0dXJl
IGNvbnN0cnVjdG9yLCBTZXRVcCgpLCBhbmQgVGVhckRvd24oKSBoYXZlIHJ1biBhbmQgaGF2ZSBi
ZWVuCi0vLyBzdXBwbGllZCB3aXRoIHRoZSBjb3JyZWN0IHBhcmFtZXRlcnMuCi0KLS8vIFRoZSB1
c2Ugb2YgZW52aXJvbm1lbnQgb2JqZWN0IGFsbG93cyBkZXRlY3Rpb24gb2YgdGhlIGNhc2Ugd2hl
cmUgbm8gdGVzdAotLy8gY2FzZSBmdW5jdGlvbmFsaXR5IGlzIHJ1biBhdCBhbGwuIEluIHRoaXMg
Y2FzZSBUZXN0Q2FzZVRlYXJEb3duIHdpbGwgbm90Ci0vLyBiZSBhYmxlIHRvIGRldGVjdCBtaXNz
aW5nIHRlc3RzLCBuYXR1cmFsbHkuCi10ZW1wbGF0ZSA8aW50IGtFeHBlY3RlZENhbGxzPgotY2xh
c3MgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudCA6IHB1YmxpYyA6OnRlc3Rpbmc6OkVudmlyb25t
ZW50IHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyBUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50KiBJbnN0
YW5jZSgpIHsKLSAgICBzdGF0aWMgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudCogaW5zdGFuY2Ug
PSBuZXcgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudDsKLSAgICByZXR1cm4gaW5zdGFuY2U7Ci0g
IH0KLQotICB2b2lkIEZpeHR1cmVDb25zdHJ1Y3RvckV4ZWN1dGVkKCkgeyBmaXh0dXJlX2NvbnN0
cnVjdG9yX2NvdW50XysrOyB9Ci0gIHZvaWQgU2V0VXBFeGVjdXRlZCgpIHsgc2V0X3VwX2NvdW50
XysrOyB9Ci0gIHZvaWQgVGVhckRvd25FeGVjdXRlZCgpIHsgdGVhcl9kb3duX2NvdW50XysrOyB9
Ci0gIHZvaWQgVGVzdEJvZHlFeGVjdXRlZCgpIHsgdGVzdF9ib2R5X2NvdW50XysrOyB9Ci0KLSAg
dmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIC8vIElmIGFsbCBNdWx0aXBsZVRlc3RHZW5l
cmF0aW9uVGVzdCB0ZXN0cyBoYXZlIGJlZW4gZGUtc2VsZWN0ZWQKLSAgICAvLyBieSB0aGUgZmls
dGVyIGZsYWcsIHRoZSBmb2xsb3dpbmcgY2hlY2tzIG1ha2Ugbm8gc2Vuc2UuCi0gICAgYm9vbCBw
ZXJmb3JtX2NoZWNrID0gZmFsc2U7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGtFeHBlY3Rl
ZENhbGxzOyArK2kpIHsKLSAgICAgIE1lc3NhZ2UgbXNnOwotICAgICAgbXNnIDw8ICJUZXN0c0V4
cGFuZGVkQW5kUnVuLyIgPDwgaTsKLSAgICAgIGlmIChVbml0VGVzdE9wdGlvbnM6OkZpbHRlck1h
dGNoZXNUZXN0KAotICAgICAgICAgICAgICJUZXN0RXhwYW5zaW9uTW9kdWxlL011bHRpcGxlVGVz
dEdlbmVyYXRpb25UZXN0IiwKLSAgICAgICAgICAgICAgbXNnLkdldFN0cmluZygpLmNfc3RyKCkp
KSB7Ci0gICAgICAgIHBlcmZvcm1fY2hlY2sgPSB0cnVlOwotICAgICAgfQotICAgIH0KLSAgICBp
ZiAocGVyZm9ybV9jaGVjaykgewotICAgICAgRVhQRUNUX0VRKGtFeHBlY3RlZENhbGxzLCBmaXh0
dXJlX2NvbnN0cnVjdG9yX2NvdW50XykKLSAgICAgICAgICA8PCAiRml4dHVyZSBjb25zdHJ1Y3Rv
ciBvZiBQYXJhbVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgotICAgICAgICAgIDw8ICJo
YXMgbm90IGJlZW4gcnVuIGFzIGV4cGVjdGVkLiI7Ci0gICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVk
Q2FsbHMsIHNldF91cF9jb3VudF8pCi0gICAgICAgICAgPDwgIkZpeHR1cmUgU2V0VXAgbWV0aG9k
IG9mIFBhcmFtVGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZSAiCi0gICAgICAgICAgPDwgImhh
cyBub3QgYmVlbiBydW4gYXMgZXhwZWN0ZWQuIjsKLSAgICAgIEVYUEVDVF9FUShrRXhwZWN0ZWRD
YWxscywgdGVhcl9kb3duX2NvdW50XykKLSAgICAgICAgICA8PCAiRml4dHVyZSBUZWFyRG93biBt
ZXRob2Qgb2YgUGFyYW1UZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlICIKLSAgICAgICAgICA8
PCAiaGFzIG5vdCBiZWVuIHJ1biBhcyBleHBlY3RlZC4iOwotICAgICAgRVhQRUNUX0VRKGtFeHBl
Y3RlZENhbGxzLCB0ZXN0X2JvZHlfY291bnRfKQotICAgICAgICAgIDw8ICJUZXN0IGluIFBhcmFt
VGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZSAiCi0gICAgICAgICAgPDwgImhhcyBub3QgYmVl
biBydW4gYXMgZXhwZWN0ZWQuIjsKLSAgICB9Ci0gIH0KLSBwcml2YXRlOgotICBUZXN0R2VuZXJh
dGlvbkVudmlyb25tZW50KCkgOiBmaXh0dXJlX2NvbnN0cnVjdG9yX2NvdW50XygwKSwgc2V0X3Vw
X2NvdW50XygwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVhcl9kb3duX2Nv
dW50XygwKSwgdGVzdF9ib2R5X2NvdW50XygwKSB7fQotCi0gIGludCBmaXh0dXJlX2NvbnN0cnVj
dG9yX2NvdW50XzsKLSAgaW50IHNldF91cF9jb3VudF87Ci0gIGludCB0ZWFyX2Rvd25fY291bnRf
OwotICBpbnQgdGVzdF9ib2R5X2NvdW50XzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQpOwotfTsKLQotY29uc3QgaW50IHRlc3Rf
Z2VuZXJhdGlvbl9wYXJhbXNbXSA9IHszNiwgNDIsIDcyfTsKLQotY2xhc3MgVGVzdEdlbmVyYXRp
b25UZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7Ci0gcHVibGljOgotICBlbnVtIHsK
LSAgICBQQVJBTUVURVJfQ09VTlQgPQotICAgICAgICBzaXplb2YodGVzdF9nZW5lcmF0aW9uX3Bh
cmFtcykvc2l6ZW9mKHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXNbMF0pCi0gIH07Ci0KLSAgdHlwZWRl
ZiBUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50PFBBUkFNRVRFUl9DT1VOVD4gRW52aXJvbm1lbnQ7
Ci0KLSAgVGVzdEdlbmVyYXRpb25UZXN0KCkgewotICAgIEVudmlyb25tZW50OjpJbnN0YW5jZSgp
LT5GaXh0dXJlQ29uc3RydWN0b3JFeGVjdXRlZCgpOwotICAgIGN1cnJlbnRfcGFyYW1ldGVyXyA9
IEdldFBhcmFtKCk7Ci0gIH0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIEVudmlyb25t
ZW50OjpJbnN0YW5jZSgpLT5TZXRVcEV4ZWN1dGVkKCk7Ci0gICAgRVhQRUNUX0VRKGN1cnJlbnRf
cGFyYW1ldGVyXywgR2V0UGFyYW0oKSk7Ci0gIH0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkg
ewotICAgIEVudmlyb25tZW50OjpJbnN0YW5jZSgpLT5UZWFyRG93bkV4ZWN1dGVkKCk7Ci0gICAg
RVhQRUNUX0VRKGN1cnJlbnRfcGFyYW1ldGVyXywgR2V0UGFyYW0oKSk7Ci0gIH0KLQotICBzdGF0
aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgewotICAgIGJvb2wgYWxsX3Rlc3RzX2luX3Rlc3RfY2Fz
ZV9zZWxlY3RlZCA9IHRydWU7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IFBBUkFNRVRFUl9D
T1VOVDsgKytpKSB7Ci0gICAgICBNZXNzYWdlIHRlc3RfbmFtZTsKLSAgICAgIHRlc3RfbmFtZSA8
PCAiVGVzdHNFeHBhbmRlZEFuZFJ1bi8iIDw8IGk7Ci0gICAgICBpZiAoICFVbml0VGVzdE9wdGlv
bnM6OkZpbHRlck1hdGNoZXNUZXN0KAotICAgICAgICAgICAgICAgICJUZXN0RXhwYW5zaW9uTW9k
dWxlL011bHRpcGxlVGVzdEdlbmVyYXRpb25UZXN0IiwKLSAgICAgICAgICAgICAgICB0ZXN0X25h
bWUuR2V0U3RyaW5nKCkpKSB7Ci0gICAgICAgIGFsbF90ZXN0c19pbl90ZXN0X2Nhc2Vfc2VsZWN0
ZWQgPSBmYWxzZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgRVhQRUNUX1RSVUUoYWxsX3Rlc3RzX2lu
X3Rlc3RfY2FzZV9zZWxlY3RlZCkKLSAgICAgICAgPDwgIldoZW4gcnVubmluZyB0aGUgVGVzdEdl
bmVyYXRpb25UZXN0IHRlc3QgY2FzZSBhbGwgb2YgaXRzIHRlc3RzXG4iCi0gICAgICAgIDw8ICJt
dXN0IGJlIHNlbGVjdGVkIGJ5IHRoZSBmaWx0ZXIgZmxhZyBmb3IgdGhlIHRlc3QgY2FzZSB0byBw
YXNzLlxuIgotICAgICAgICA8PCAiSWYgbm90IGFsbCBvZiB0aGVtIGFyZSBlbmFibGVkLCB3ZSBj
YW4ndCByZWxpYWJseSBjb25jbHVkZVxuIgotICAgICAgICA8PCAidGhhdCB0aGUgY29ycmVjdCBu
dW1iZXIgb2YgdGVzdHMgaGF2ZSBiZWVuIGdlbmVyYXRlZC4iOwotCi0gICAgY29sbGVjdGVkX3Bh
cmFtZXRlcnNfLmNsZWFyKCk7Ci0gIH0KLQotICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNl
KCkgewotICAgIHZlY3RvcjxpbnQ+IGV4cGVjdGVkX3ZhbHVlcyh0ZXN0X2dlbmVyYXRpb25fcGFy
YW1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2dlbmVyYXRpb25fcGFy
YW1zICsgUEFSQU1FVEVSX0NPVU5UKTsKLSAgICAvLyBUZXN0IGV4ZWN1dGlvbiBvcmRlciBpcyBu
b3QgZ3VhcmFudGVlZCBieSBHb29nbGUgVGVzdCwKLSAgICAvLyBzbyB0aGUgb3JkZXIgb2YgdmFs
dWVzIGluIGNvbGxlY3RlZF9wYXJhbWV0ZXJzXyBjYW4gYmUKLSAgICAvLyBkaWZmZXJlbnQgYW5k
IHdlIGhhdmUgdG8gc29ydCB0byBjb21wYXJlLgotICAgIHNvcnQoZXhwZWN0ZWRfdmFsdWVzLmJl
Z2luKCksIGV4cGVjdGVkX3ZhbHVlcy5lbmQoKSk7Ci0gICAgc29ydChjb2xsZWN0ZWRfcGFyYW1l
dGVyc18uYmVnaW4oKSwgY29sbGVjdGVkX3BhcmFtZXRlcnNfLmVuZCgpKTsKLQotICAgIEVYUEVD
VF9UUlVFKGNvbGxlY3RlZF9wYXJhbWV0ZXJzXyA9PSBleHBlY3RlZF92YWx1ZXMpOwotICB9Ci0g
cHJvdGVjdGVkOgotICBpbnQgY3VycmVudF9wYXJhbWV0ZXJfOwotICBzdGF0aWMgdmVjdG9yPGlu
dD4gY29sbGVjdGVkX3BhcmFtZXRlcnNfOwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOXyhUZXN0R2VuZXJhdGlvblRlc3QpOwotfTsKLXZlY3RvcjxpbnQ+IFRl
c3RHZW5lcmF0aW9uVGVzdDo6Y29sbGVjdGVkX3BhcmFtZXRlcnNfOwotCi1URVNUX1AoVGVzdEdl
bmVyYXRpb25UZXN0LCBUZXN0c0V4cGFuZGVkQW5kUnVuKSB7Ci0gIEVudmlyb25tZW50OjpJbnN0
YW5jZSgpLT5UZXN0Qm9keUV4ZWN1dGVkKCk7Ci0gIEVYUEVDVF9FUShjdXJyZW50X3BhcmFtZXRl
cl8sIEdldFBhcmFtKCkpOwotICBjb2xsZWN0ZWRfcGFyYW1ldGVyc18ucHVzaF9iYWNrKEdldFBh
cmFtKCkpOwotfQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoVGVzdEV4cGFuc2lvbk1vZHVsZSwg
VGVzdEdlbmVyYXRpb25UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzSW4odGVz
dF9nZW5lcmF0aW9uX3BhcmFtcykpOwotCi0vLyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUg
ZWxlbWVudCBzZXF1ZW5jZSAodGhpcmQgcGFyYW1ldGVyIG9mCi0vLyBJTlNUQU5USUFURV9URVNU
X0NBU0VfUCkgaXMgZXZhbHVhdGVkIGluIEluaXRHb29nbGVUZXN0KCkgYW5kIG5laXRoZXIgYXQK
LS8vIHRoZSBjYWxsIHNpdGUgb2YgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Agbm9yIGluIFJVTl9B
TExfVEVTVFMoKS4gIEZvcgotLy8gdGhhdCwgd2UgZGVjbGFyZSBwYXJhbV92YWx1ZV8gdG8gYmUg
YSBzdGF0aWMgbWVtYmVyIG9mCi0vLyBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCBhbmQgaW5pdGlh
bGl6ZSBpdCB0byAwLiAgV2Ugc2V0IGl0IHRvIDEgaW4KLS8vIG1haW4oKSwganVzdCBiZWZvcmUg
aW52b2NhdGlvbiBvZiBJbml0R29vZ2xlVGVzdCgpLiAgQWZ0ZXIgY2FsbGluZwotLy8gSW5pdEdv
b2dsZVRlc3QoKSwgd2Ugc2V0IHRoZSB2YWx1ZSB0byAyLiAgSWYgdGhlIHNlcXVlbmNlIGlzIGV2
YWx1YXRlZAotLy8gYmVmb3JlIG9yIGFmdGVyIEluaXRHb29nbGVUZXN0LCBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUCB3aWxsIGNyZWF0ZSBhCi0vLyB0ZXN0IHdpdGggcGFyYW1ldGVyIG90aGVyIHRo
YW4gMSwgYW5kIHRoZSB0ZXN0IGJvZHkgd2lsbCBmYWlsIHRoZQotLy8gYXNzZXJ0aW9uLgotY2xh
c3MgR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsK
LSBwdWJsaWM6Ci0gIHN0YXRpYyBpbnQgcGFyYW1fdmFsdWUoKSB7IHJldHVybiBwYXJhbV92YWx1
ZV87IH0KLSAgc3RhdGljIHZvaWQgc2V0X3BhcmFtX3ZhbHVlKGludCBwYXJhbV92YWx1ZSkgeyBw
YXJhbV92YWx1ZV8gPSBwYXJhbV92YWx1ZTsgfQotCi0gcHJpdmF0ZToKLSAgc3RhdGljIGludCBw
YXJhbV92YWx1ZV87Ci19OwotaW50IEdlbmVyYXRvckV2YWx1YXRpb25UZXN0OjpwYXJhbV92YWx1
ZV8gPSAwOwotCi1URVNUX1AoR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QsIEdlbmVyYXRvcnNFdmFs
dWF0ZWRJbk1haW4pIHsKLSAgRVhQRUNUX0VRKDEsIEdldFBhcmFtKCkpOwotfQotSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoR2VuRXZhbE1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdl
bmVyYXRvckV2YWx1YXRpb25UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEdl
bmVyYXRvckV2YWx1YXRpb25UZXN0OjpwYXJhbV92YWx1ZSgpKSk7Ci0KLS8vIFRlc3RzIHRoYXQg
Z2VuZXJhdG9ycyBkZWZpbmVkIGluIGEgZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXQgYXJlCi0v
LyBmdW5jdGlvbmFsLiBHZW5lcmF0b3IgZXh0ZXJuX2dlbiBpcyBkZWZpbmVkIGluIGd0ZXN0LXBh
cmFtLXRlc3RfdGVzdDIuY2MuCi1leHRlcm4gUGFyYW1HZW5lcmF0b3I8aW50PiBleHRlcm5fZ2Vu
OwotY2xhc3MgRXh0ZXJuYWxHZW5lcmF0b3JUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50
PiB7fTsKLVRFU1RfUChFeHRlcm5hbEdlbmVyYXRvclRlc3QsIEV4dGVybmFsR2VuZXJhdG9yKSB7
Ci0gIC8vIFNlcXVlbmNlIHByb2R1Y2VkIGJ5IGV4dGVybl9nZW4gY29udGFpbnMgb25seSBhIHNp
bmdsZSB2YWx1ZQotICAvLyB3aGljaCB3ZSB2ZXJpZnkgaGVyZS4KLSAgRVhQRUNUX0VRKEdldFBh
cmFtKCksIDMzKTsKLX0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEV4dGVybmFsR2VuZXJhdG9y
TW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxHZW5lcmF0b3JUZXN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZXJuX2dlbik7Ci0KLS8vIFRlc3RzIHRoYXQgYSBw
YXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgdHJhbnNsYXRpb24K
LS8vIHVuaXQgYW5kIGluc3RhbnRpYXRlZCBpbiBhbm90aGVyLiBUaGlzIHRlc3Qgd2lsbCBiZSBp
bnN0YW50aWF0ZWQgaW4KLS8vIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdDIuY2MuIEV4dGVybmFsSW5z
dGFudGlhdGlvblRlc3QgZml4dHVyZSBjbGFzcyBpcwotLy8gZGVmaW5lZCBpbiBndGVzdC1wYXJh
bS10ZXN0X3Rlc3QuaC4KLVRFU1RfUChFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0LCBJc011bHRp
cGxlT2YzMykgewotICBFWFBFQ1RfRVEoMCwgR2V0UGFyYW0oKSAlIDMzKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBpbnN0YW50aWF0ZWQgd2l0
aCBtdWx0aXBsZQotLy8gZ2VuZXJhdG9ycy4KLWNsYXNzIE11bHRpcGxlSW5zdGFudGlhdGlvblRl
c3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHt9OwotVEVTVF9QKE11bHRpcGxlSW5zdGFu
dGlhdGlvblRlc3QsIEFsbG93c011bHRpcGxlSW5zdGFuY2VzKSB7Ci19Ci1JTlNUQU5USUFURV9U
RVNUX0NBU0VfUChTZXF1ZW5jZTEsIE11bHRpcGxlSW5zdGFudGlhdGlvblRlc3QsIFZhbHVlcygx
LCAyKSk7Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5jZTIsIE11bHRpcGxlSW5zdGFu
dGlhdGlvblRlc3QsIFJhbmdlKDMsIDUpKTsKLQotLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6
ZWQgdGVzdCBjYXNlIGNhbiBiZSBpbnN0YW50aWF0ZWQKLS8vIGluIG11bHRpcGxlIHRyYW5zbGF0
aW9uIHVuaXRzLiBUaGlzIHRlc3Qgd2lsbCBiZSBpbnN0YW50aWF0ZWQKLS8vIGhlcmUgYW5kIGlu
IGd0ZXN0LXBhcmFtLXRlc3RfdGVzdDIuY2MuCi0vLyBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRy
YW5zbGF0aW9uVW5pdHNUZXN0IGZpeHR1cmUgY2xhc3MKLS8vIGlzIGRlZmluZWQgaW4gZ3Rlc3Qt
cGFyYW0tdGVzdF90ZXN0LmguCi1URVNUX1AoSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xh
aW9uVW5pdHNUZXN0LCBJc011bHRpcGxlT2Y0MikgewotICBFWFBFQ1RfRVEoMCwgR2V0UGFyYW0o
KSAlIDQyKTsKLX0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVz
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg0MiwgNDIqMikpOwotCi0vLyBUZXN0
cyB0aGF0IGVhY2ggaXRlcmF0aW9uIG9mIHBhcmFtZXRlcml6ZWQgdGVzdCBydW5zIGluIGEgc2Vw
YXJhdGUgdGVzdAotLy8gb2JqZWN0LgotY2xhc3MgU2VwYXJhdGVJbnN0YW5jZVRlc3QgOiBwdWJs
aWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsKLSBwdWJsaWM6Ci0gIFNlcGFyYXRlSW5zdGFuY2VUZXN0
KCkgOiBjb3VudF8oMCkge30KLQotICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgewot
ICAgIEVYUEVDVF9HRShnbG9iYWxfY291bnRfLCAyKQotICAgICAgICA8PCAiSWYgc29tZSAoYnV0
IG5vdCBhbGwpIFNlcGFyYXRlSW5zdGFuY2VUZXN0IHRlc3RzIGhhdmUgYmVlbiAiCi0gICAgICAg
IDw8ICJmaWx0ZXJlZCBvdXQgdGhpcyB0ZXN0IHdpbGwgZmFpbC4gTWFrZSBzdXJlIHRoYXQgYWxs
ICIKLSAgICAgICAgPDwgIkdlbmVyYXRvckV2YWx1YXRpb25UZXN0IGFyZSBzZWxlY3RlZCBvciBk
ZS1zZWxlY3RlZCB0b2dldGhlciAiCi0gICAgICAgIDw8ICJieSB0aGUgdGVzdCBmaWx0ZXIuIjsK
LSAgfQotCi0gcHJvdGVjdGVkOgotICBpbnQgY291bnRfOwotICBzdGF0aWMgaW50IGdsb2JhbF9j
b3VudF87Ci19OwotaW50IFNlcGFyYXRlSW5zdGFuY2VUZXN0OjpnbG9iYWxfY291bnRfID0gMDsK
LQotVEVTVF9QKFNlcGFyYXRlSW5zdGFuY2VUZXN0LCBUZXN0c1J1bkluU2VwYXJhdGVJbnN0YW5j
ZXMpIHsKLSAgRVhQRUNUX0VRKDAsIGNvdW50XysrKTsKLSAgZ2xvYmFsX2NvdW50XysrOwotfQot
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoRm91ckVsZW1TZXF1ZW5jZSwgU2VwYXJhdGVJbnN0YW5j
ZVRlc3QsIFJhbmdlKDEsIDQpKTsKLQotLy8gVGVzdHMgdGhhdCBhbGwgaW5zdGFudGlhdGlvbnMg
b2YgYSB0ZXN0IGhhdmUgbmFtZWQgYXBwcm9wcmlhdGVseS4gVGVzdAotLy8gZGVmaW5lZCB3aXRo
IFRFU1RfUChUZXN0Q2FzZU5hbWUsIFRlc3ROYW1lKSBhbmQgaW5zdGFudGlhdGVkIHdpdGgKLS8v
IElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlTmFtZSwgVGVzdENhc2VOYW1lLCBnZW5l
cmF0b3IpIG11c3QgYmUgbmFtZWQKLS8vIFNlcXVlbmNlTmFtZS9UZXN0Q2FzZU5hbWUuVGVzdE5h
bWUvaSwgd2hlcmUgaSBpcyB0aGUgMC1iYXNlZCBpbmRleCBvZiB0aGUKLS8vIHNlcXVlbmNlIGVs
ZW1lbnQgdXNlZCB0byBpbnN0YW50aWF0ZSB0aGUgdGVzdC4KLWNsYXNzIE5hbWluZ1Rlc3QgOiBw
dWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHt9OwotCi1URVNUX1AoTmFtaW5nVGVzdCwgVGVzdHNB
cmVOYW1lZEFwcHJvcHJpYXRlbHkpIHsKLSAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29u
c3QgdGVzdF9pbmZvID0KLSAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+
Y3VycmVudF90ZXN0X2luZm8oKTsKLQotICBFWFBFQ1RfU1RSRVEoIlplcm9Ub0ZpdmVTZXF1ZW5j
ZS9OYW1pbmdUZXN0IiwgdGVzdF9pbmZvLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLQotICBNZXNzYWdl
IG1zZzsKLSAgbXNnIDw8ICJUZXN0c0FyZU5hbWVkQXBwcm9wcmlhdGVseS8iIDw8IEdldFBhcmFt
KCk7Ci0gIEVYUEVDVF9TVFJFUShtc2cuR2V0U3RyaW5nKCkuY19zdHIoKSwgdGVzdF9pbmZvLT5u
YW1lKCkpOwotfQotCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChaZXJvVG9GaXZlU2VxdWVuY2Us
IE5hbWluZ1Rlc3QsIFJhbmdlKDAsIDUpKTsKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1f
VEVTVAotCi1URVNUKENvbXBpbGVUZXN0LCBDb21iaW5lSXNEZWZpbmVkT25seVdoZW5HdGVzdEhh
c1BhcmFtVGVzdElzRGVmaW5lZCkgewotI2lmIEdURVNUX0hBU19DT01CSU5FICYmICFHVEVTVF9I
QVNfUEFSQU1fVEVTVAotICBGQUlMKCkgPDwgIkdURVNUX0hBU19DT01CSU5FIGlzIGRlZmluZWQg
d2hpbGUgR1RFU1RfSEFTX1BBUkFNX1RFU1QgaXMgbm90XG4iCi0jZW5kaWYKLX0KLQotaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7Ci0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLSAg
Ly8gVXNlZCBpbiBUZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlLgotICBBZGRHbG9iYWxUZXN0
RW52aXJvbm1lbnQoVGVzdEdlbmVyYXRpb25UZXN0OjpFbnZpcm9ubWVudDo6SW5zdGFuY2UoKSk7
Ci0gIC8vIFVzZWQgaW4gR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QgdGVzdCBjYXNlLiBUZXN0cyB0
aGF0IHRoZSB1cGRhdGVkIHZhbHVlCi0gIC8vIHdpbGwgYmUgcGlja2VkIHVwIGZvciBpbnN0YW50
aWF0aW5nIHRlc3RzIGluIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0LgotICBHZW5lcmF0b3JFdmFs
dWF0aW9uVGVzdDo6c2V0X3BhcmFtX3ZhbHVlKDEpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFS
QU1fVEVTVAotCi0gIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0j
aWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLSAgLy8gVXNlZCBpbiBHZW5lcmF0b3JFdmFsdWF0aW9u
VGVzdCB0ZXN0IGNhc2UuIFRlc3RzIHRoYXQgdmFsdWUgdXBkYXRlZAotICAvLyBoZXJlIHdpbGwg
Tk9UIGJlIHVzZWQgZm9yIGluc3RhbnRpYXRpbmcgdGVzdHMgaW4KLSAgLy8gR2VuZXJhdG9yRXZh
bHVhdGlvblRlc3QuCi0gIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0OjpzZXRfcGFyYW1fdmFsdWUo
Mik7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLSAgcmV0dXJuIFJVTl9BTExf
VEVTVFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3QtcGFyYW0tdGVzdF90ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
LXBhcmFtLXRlc3RfdGVzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2Y5NDkz
NjEzN2RmYzVmM2YyZDU3ZmE0MGRjYWY3YTE1Y2I2YjVlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3QtcGFyYW0tdGVzdF90ZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vLyBD
b3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwot
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3Ry
aWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczog
dmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0
aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCi0vLwotLy8gVGhpcyBoZWFkZXIgZmlsZSBwcm92
aWRlcyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5Ci0vLyBmb3IgdGVzdGlu
ZyBHb29nbGUgVGVzdCBpdHNlbGYuCi0KLSNpZm5kZWYgR1RFU1RfVEVTVF9HVEVTVF9QQVJBTV9U
RVNUX1RFU1RfSF8KLSNkZWZpbmUgR1RFU1RfVEVTVF9HVEVTVF9QQVJBTV9URVNUX1RFU1RfSF8K
LQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAot
Ci0vLyBUZXN0IGZpeHR1cmUgZm9yIHRlc3RpbmcgZGVmaW5pdGlvbiBhbmQgaW5zdGFudGlhdGlv
biBvZiBhIHRlc3QKLS8vIGluIHNlcGFyYXRlIHRyYW5zbGF0aW9uIHVuaXRzLgotY2xhc3MgRXh0
ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08
aW50PiB7fTsKLQotLy8gVGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIGluc3RhbnRpYXRpb24gb2Yg
YSB0ZXN0IGluIG11bHRpcGxlCi0vLyB0cmFuc2xhdGlvbiB1bml0cy4KLWNsYXNzIEluc3RhbnRp
YXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdAotICAgIDogcHVibGljIDo6dGVzdGlu
Zzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHt9OwotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9U
RVNUCi0KLSNlbmRpZiAgLy8gR1RFU1RfVEVTVF9HVEVTVF9QQVJBTV9URVNUX1RFU1RfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcG9ydF90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wb3J0X3Rlc3QuY2MKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MjU4NjAyZmE1Y2Y1YTc3OTk0N2NkNDI3ZTIwZTkw
OWZjOTI1OGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wb3J0X3Rlc3QuY2MKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDE4ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgot
Ly8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3JzOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2
KSwgd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBUaGlzIGZpbGUgdGVzdHMg
dGhlIGludGVybmFsIGNyb3NzLXBsYXRmb3JtIHN1cHBvcnQgdXRpbGl0aWVzLgotCi0jaW5jbHVk
ZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgotCi0jaW5jbHVkZSA8c3RkaW8uaD4KLQot
I2lmIEdURVNUX09TX01BQwotI2luY2x1ZGUgPHRpbWUuaD4KLSNlbmRpZiAgLy8gR1RFU1RfT1Nf
TUFDCi0KLSNpbmNsdWRlIDx1dGlsaXR5PiAgLy8gRm9yIHN0ZDo6cGFpciBhbmQgc3RkOjptYWtl
X3BhaXIuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
LXNwaS5oPgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFy
dCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZv
cmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJl
IGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBm
cm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhp
cyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQotI2luY2x1ZGUgInNyYy9n
dGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KLQotdXNp
bmcgc3RkOjptYWtlX3BhaXI7Ci11c2luZyBzdGQ6OnBhaXI7Ci0KLW5hbWVzcGFjZSB0ZXN0aW5n
IHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIGVsZW1lbnRfdHlw
ZSB0eXBlZGVmIGlzIGF2YWlsYWJsZSBpbiBzY29wZWRfcHRyIGFuZCByZWZlcnMKLS8vIHRvIHRo
ZSBwYXJhbWV0ZXIgdHlwZS4KLVRFU1QoU2NvcGVkUHRyVGVzdCwgRGVmaW5lc0VsZW1lbnRUeXBl
KSB7Ci0gIFN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIDo6dGVzdGluZzo6aW50ZXJuYWw6OnNjb3Bl
ZF9wdHI8aW50Pjo6ZWxlbWVudF90eXBlPigpOwotfQotCi0vLyBUT0RPKHZsYWRsQGdvb2dsZS5j
b20pOiBJbXBsZW1lbnQgVEhFIFJFU1Qgb2Ygc2NvcGVkX3B0ciB0ZXN0cy4KLQotVEVTVChHdGVz
dENoZWNrU3ludGF4VGVzdCwgQmVoYXZlc0xpa2VBU2luZ2xlU3RhdGVtZW50KSB7Ci0gIGlmIChB
bHdheXNGYWxzZSgpKQotICAgIEdURVNUX0NIRUNLXyhmYWxzZSkgPDwgIlRoaXMgc2hvdWxkIG5l
dmVyIGJlIGV4ZWN1dGVkOyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiSXQncyBhIGNv
bXBpbGF0aW9uIHRlc3Qgb25seS4iOwotCi0gIGlmIChBbHdheXNUcnVlKCkpCi0gICAgR1RFU1Rf
Q0hFQ0tfKHRydWUpOwotICBlbHNlCi0gICAgOyAgLy8gTk9MSU5UCi0KLSAgaWYgKEFsd2F5c0Zh
bHNlKCkpCi0gICAgOyAgLy8gTk9MSU5UCi0gIGVsc2UKLSAgICBHVEVTVF9DSEVDS18odHJ1ZSkg
PDwgIiI7Ci19Ci0KLVRFU1QoR3Rlc3RDaGVja1N5bnRheFRlc3QsIFdvcmtzV2l0aFN3aXRjaCkg
ewotICBzd2l0Y2ggKDApIHsKLSAgICBjYXNlIDE6Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0
OgotICAgICAgR1RFU1RfQ0hFQ0tfKHRydWUpOwotICB9Ci0KLSAgc3dpdGNoKDApCi0gICAgY2Fz
ZSAwOgotICAgICAgR1RFU1RfQ0hFQ0tfKHRydWUpIDw8ICJDaGVjayBmYWlsZWQgaW4gc3dpdGNo
IGNhc2UiOwotfQotCi0jaWYgR1RFU1RfT1NfTUFDCi12b2lkKiBUaHJlYWRGdW5jKHZvaWQqIGRh
dGEpIHsKLSAgcHRocmVhZF9tdXRleF90KiBtdXRleCA9IHN0YXRpY19jYXN0PHB0aHJlYWRfbXV0
ZXhfdCo+KGRhdGEpOwotICBwdGhyZWFkX211dGV4X2xvY2sobXV0ZXgpOwotICBwdGhyZWFkX211
dGV4X3VubG9jayhtdXRleCk7Ci0gIHJldHVybiBOVUxMOwotfQotCi1URVNUKEdldFRocmVhZENv
dW50VGVzdCwgUmV0dXJuc0NvcnJlY3RWYWx1ZSkgewotICBFWFBFQ1RfRVEoMVUsIEdldFRocmVh
ZENvdW50KCkpOwotICBwdGhyZWFkX211dGV4X3QgbXV0ZXg7Ci0gIHB0aHJlYWRfYXR0cl90ICBh
dHRyOwotICBwdGhyZWFkX3QgICAgICAgdGhyZWFkX2lkOwotCi0gIC8vIFRPRE8odmxhZGxAZ29v
Z2xlLmNvbSk6IHR1cm4gbXV0ZXggaW50byBpbnRlcm5hbDo6TXV0ZXggZm9yIGF1dG9tYXRpYwot
ICAvLyBkZXN0cnVjdGlvbi4KLSAgcHRocmVhZF9tdXRleF9pbml0KCZtdXRleCwgTlVMTCk7Ci0g
IHB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXgpOwotICBBU1NFUlRfRVEoMCwgcHRocmVhZF9hdHRy
X2luaXQoJmF0dHIpKTsKLSAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXR0cl9zZXRkZXRhY2hzdGF0
ZSgmYXR0ciwgUFRIUkVBRF9DUkVBVEVfSk9JTkFCTEUpKTsKLQotICBjb25zdCBpbnQgc3RhdHVz
ID0gcHRocmVhZF9jcmVhdGUoJnRocmVhZF9pZCwgJmF0dHIsICZUaHJlYWRGdW5jLCAmbXV0ZXgp
OwotICBBU1NFUlRfRVEoMCwgcHRocmVhZF9hdHRyX2Rlc3Ryb3koJmF0dHIpKTsKLSAgQVNTRVJU
X0VRKDAsIHN0YXR1cyk7Ci0gIEVYUEVDVF9FUSgyVSwgR2V0VGhyZWFkQ291bnQoKSk7Ci0gIHB0
aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleCk7Ci0KLSAgdm9pZCogZHVtbXk7Ci0gIEFTU0VSVF9F
USgwLCBwdGhyZWFkX2pvaW4odGhyZWFkX2lkLCAmZHVtbXkpKTsKLQotICAvLyBNYWNPUyBYIG1h
eSBub3QgaW1tZWRpYXRlbHkgcmVwb3J0IHRoZSB1cGRhdGVkIHRocmVhZCBjb3VudCBhZnRlcgot
ICAvLyBqb2luaW5nIGEgdGhyZWFkLCBjYXVzaW5nIGZsYWtpbmVzcyBpbiB0aGlzIHRlc3QuIFRv
IGNvdW50ZXIgdGhhdCwgd2UKLSAgLy8gd2FpdCBmb3IgdXAgdG8gLjUgc2Vjb25kcyBmb3IgdGhl
IE9TIHRvIHJlcG9ydCB0aGUgY29ycmVjdCB2YWx1ZS4KLSAgZm9yIChpbnQgaSA9IDA7IGkgPCA1
OyArK2kpIHsKLSAgICBpZiAoR2V0VGhyZWFkQ291bnQoKSA9PSAxKQotICAgICAgYnJlYWs7Ci0K
LSAgICBTbGVlcE1pbGxpc2Vjb25kcygxMDApOwotICB9Ci0gIEVYUEVDVF9FUSgxVSwgR2V0VGhy
ZWFkQ291bnQoKSk7Ci0gIHB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmbXV0ZXgpOwotfQotI2Vsc2UK
LVRFU1QoR2V0VGhyZWFkQ291bnRUZXN0LCBSZXR1cm5zWmVyb1doZW5VbmFibGVUb0NvdW50VGhy
ZWFkcykgewotICBFWFBFQ1RfRVEoMFUsIEdldFRocmVhZENvdW50KCkpOwotfQotI2VuZGlmICAv
LyBHVEVTVF9PU19NQUMKLQotVEVTVChHdGVzdENoZWNrRGVhdGhUZXN0LCBEaWVzV2l0aENvcnJl
Y3RPdXRwdXRPbkZhaWx1cmUpIHsKLSAgY29uc3QgYm9vbCBhX2ZhbHNlX2NvbmRpdGlvbiA9IGZh
bHNlOwotICBjb25zdCBjaGFyIHJlZ2V4W10gPQotI2lmZGVmIF9NU0NfVkVSCi0gICAgICJndGVz
dC1wb3J0X3Rlc3RcXC5jY1xcKFxcZCtcXCk6IgotI2Vsc2UKLSAgICAgImd0ZXN0LXBvcnRfdGVz
dFxcLmNjOlswLTldKyIKLSNlbmRpZiAgLy8gX01TQ19WRVIKLSAgICAgIi4qYV9mYWxzZV9jb25k
aXRpb24uKkV4dHJhIGluZm8uKiI7Ci0KLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChHVEVT
VF9DSEVDS18oYV9mYWxzZV9jb25kaXRpb24pIDw8ICJFeHRyYSBpbmZvIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWdleCk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAot
Ci1URVNUKEd0ZXN0Q2hlY2tEZWF0aFRlc3QsIExpdmVzU2lsZW50bHlPblN1Y2Nlc3MpIHsKLSAg
RVhQRUNUX0VYSVQoewotICAgICAgR1RFU1RfQ0hFQ0tfKHRydWUpIDw8ICJFeHRyYSBpbmZvIjsK
LSAgICAgIDo6c3RkOjpjZXJyIDw8ICJTdWNjZXNzXG4iOwotICAgICAgZXhpdCgwKTsgfSwKLSAg
ICAgIDo6dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCksICJTdWNjZXNzIik7Ci19Ci0KLSNlbmRp
ZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotI2lmIEdURVNUX1VTRVNfUE9TSVhfUkUKLQot
I2lmIEdURVNUX0hBU19UWVBFRF9URVNUCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBTdHI+Ci1jbGFz
cyBSRVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OwotCi0vLyBEZWZpbmVzIFN0cmlu
Z1R5cGVzIGFzIHRoZSBsaXN0IG9mIGFsbCBzdHJpbmcgdHlwZXMgdGhhdCBjbGFzcyBSRQotLy8g
c3VwcG9ydHMuCi10eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPAotICAgIDo6c3RkOjpzdHJpbmcsCi0j
aWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLSAgICA6OnN0cmluZywKLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX0dMT0JBTF9TVFJJTkcKLSAgICBjb25zdCBjaGFyKj4gU3RyaW5nVHlwZXM7Ci0KLVRZ
UEVEX1RFU1RfQ0FTRShSRVRlc3QsIFN0cmluZ1R5cGVzKTsKLQotLy8gVGVzdHMgUkUncyBpbXBs
aWNpdCBjb25zdHJ1Y3RvcnMuCi1UWVBFRF9URVNUKFJFVGVzdCwgSW1wbGljaXRDb25zdHJ1Y3Rv
cldvcmtzKSB7Ci0gIGNvbnN0IFJFIGVtcHR5KFR5cGVQYXJhbSgiIikpOwotICBFWFBFQ1RfU1RS
RVEoIiIsIGVtcHR5LnBhdHRlcm4oKSk7Ci0KLSAgY29uc3QgUkUgc2ltcGxlKFR5cGVQYXJhbSgi
aGVsbG8iKSk7Ci0gIEVYUEVDVF9TVFJFUSgiaGVsbG8iLCBzaW1wbGUucGF0dGVybigpKTsKLQot
ICBjb25zdCBSRSBub3JtYWwoVHlwZVBhcmFtKCIuKihcXHcrKSIpKTsKLSAgRVhQRUNUX1NUUkVR
KCIuKihcXHcrKSIsIG5vcm1hbC5wYXR0ZXJuKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFJFJ3Mg
Y29uc3RydWN0b3JzIHJlamVjdCBpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCi1UWVBFRF9U
RVNUKFJFVGVzdCwgUmVqZWN0c0ludmFsaWRSZWdleCkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSh7Ci0gICAgY29uc3QgUkUgaW52YWxpZChUeXBlUGFyYW0oIj8iKSk7Ci0gIH0sICJcIj9c
IiBpcyBub3QgYSB2YWxpZCBQT1NJWCBFeHRlbmRlZCByZWd1bGFyIGV4cHJlc3Npb24uIik7Ci19
Ci0KLS8vIFRlc3RzIFJFOjpGdWxsTWF0Y2goKS4KLVRZUEVEX1RFU1QoUkVUZXN0LCBGdWxsTWF0
Y2hXb3JrcykgewotICBjb25zdCBSRSBlbXB0eShUeXBlUGFyYW0oIiIpKTsKLSAgRVhQRUNUX1RS
VUUoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oIiIpLCBlbXB0eSkpOwotICBFWFBFQ1RfRkFMU0Uo
UkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oImEiKSwgZW1wdHkpKTsKLQotICBjb25zdCBSRSByZShU
eXBlUGFyYW0oImEuKnoiKSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFt
KCJheiIpLCByZSkpOwotICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYXh5
eiIpLCByZSkpOwotICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oImJheiIp
LCByZSkpOwotICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oImF6eSIpLCBy
ZSkpOwotfQotCi0vLyBUZXN0cyBSRTo6UGFydGlhbE1hdGNoKCkuCi1UWVBFRF9URVNUKFJFVGVz
dCwgUGFydGlhbE1hdGNoV29ya3MpIHsKLSAgY29uc3QgUkUgZW1wdHkoVHlwZVBhcmFtKCIiKSk7
Ci0gIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCIiKSwgZW1wdHkpKTsK
LSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oImEiKSwgZW1wdHkpKTsK
LQotICBjb25zdCBSRSByZShUeXBlUGFyYW0oImEuKnoiKSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpQ
YXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCJheiIpLCByZSkpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFy
dGlhbE1hdGNoKFR5cGVQYXJhbSgiYXh5eiIpLCByZSkpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFy
dGlhbE1hdGNoKFR5cGVQYXJhbSgiYmF6IiksIHJlKSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpQYXJ0
aWFsTWF0Y2goVHlwZVBhcmFtKCJhenkiKSwgcmUpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpQYXJ0
aWFsTWF0Y2goVHlwZVBhcmFtKCJ6emEiKSwgcmUpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9I
QVNfVFlQRURfVEVTVAotCi0jZWxpZiBHVEVTVF9VU0VTX1NJTVBMRV9SRQotCi1URVNUKElzSW5T
ZXRUZXN0LCBOdWxDaGFySXNOb3RJbkFueVNldCkgewotICBFWFBFQ1RfRkFMU0UoSXNJblNldCgn
XDAnLCAiIikpOwotICBFWFBFQ1RfRkFMU0UoSXNJblNldCgnXDAnLCAiXDAiKSk7Ci0gIEVYUEVD
VF9GQUxTRShJc0luU2V0KCdcMCcsICJhIikpOwotfQotCi1URVNUKElzSW5TZXRUZXN0LCBXb3Jr
c0Zvck5vbk51bENoYXJzKSB7Ci0gIEVYUEVDVF9GQUxTRShJc0luU2V0KCdhJywgIkFiIikpOwot
ICBFWFBFQ1RfRkFMU0UoSXNJblNldCgnYycsICIiKSk7Ci0KLSAgRVhQRUNUX1RSVUUoSXNJblNl
dCgnYicsICJiY2QiKSk7Ci0gIEVYUEVDVF9UUlVFKElzSW5TZXQoJ2InLCAiYWIiKSk7Ci19Ci0K
LVRFU1QoSXNEaWdpdFRlc3QsIElzRmFsc2VGb3JOb25EaWdpdCkgewotICBFWFBFQ1RfRkFMU0Uo
SXNEaWdpdCgnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0RpZ2l0KCcgJykpOwotICBFWFBFQ1Rf
RkFMU0UoSXNEaWdpdCgnKycpKTsKLSAgRVhQRUNUX0ZBTFNFKElzRGlnaXQoJy0nKSk7Ci0gIEVY
UEVDVF9GQUxTRShJc0RpZ2l0KCcuJykpOwotICBFWFBFQ1RfRkFMU0UoSXNEaWdpdCgnYScpKTsK
LX0KLQotVEVTVChJc0RpZ2l0VGVzdCwgSXNUcnVlRm9yRGlnaXQpIHsKLSAgRVhQRUNUX1RSVUUo
SXNEaWdpdCgnMCcpKTsKLSAgRVhQRUNUX1RSVUUoSXNEaWdpdCgnMScpKTsKLSAgRVhQRUNUX1RS
VUUoSXNEaWdpdCgnNScpKTsKLSAgRVhQRUNUX1RSVUUoSXNEaWdpdCgnOScpKTsKLX0KLQotVEVT
VChJc1B1bmN0VGVzdCwgSXNGYWxzZUZvck5vblB1bmN0KSB7Ci0gIEVYUEVDVF9GQUxTRShJc1B1
bmN0KCdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzUHVuY3QoJyAnKSk7Ci0gIEVYUEVDVF9GQUxT
RShJc1B1bmN0KCdcbicpKTsKLSAgRVhQRUNUX0ZBTFNFKElzUHVuY3QoJ2EnKSk7Ci0gIEVYUEVD
VF9GQUxTRShJc1B1bmN0KCcwJykpOwotfQotCi1URVNUKElzUHVuY3RUZXN0LCBJc1RydWVGb3JQ
dW5jdCkgewotICBmb3IgKGNvbnN0IGNoYXIqIHAgPSAiXi0hXCIjJCUmJygpKissLi86Ozw9Pj9A
W1xcXV9ge3x9fiI7ICpwOyBwKyspIHsKLSAgICBFWFBFQ1RfUFJFRDEoSXNQdW5jdCwgKnApOwot
ICB9Ci19Ci0KLVRFU1QoSXNSZXBlYXRUZXN0LCBJc0ZhbHNlRm9yTm9uUmVwZWF0Q2hhcikgewot
ICBFWFBFQ1RfRkFMU0UoSXNSZXBlYXQoJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNSZXBlYXQo
JyAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1JlcGVhdCgnYScpKTsKLSAgRVhQRUNUX0ZBTFNFKElz
UmVwZWF0KCcxJykpOwotICBFWFBFQ1RfRkFMU0UoSXNSZXBlYXQoJy0nKSk7Ci19Ci0KLVRFU1Qo
SXNSZXBlYXRUZXN0LCBJc1RydWVGb3JSZXBlYXRDaGFyKSB7Ci0gIEVYUEVDVF9UUlVFKElzUmVw
ZWF0KCc/JykpOwotICBFWFBFQ1RfVFJVRShJc1JlcGVhdCgnKicpKTsKLSAgRVhQRUNUX1RSVUUo
SXNSZXBlYXQoJysnKSk7Ci19Ci0KLVRFU1QoSXNXaGl0ZVNwYWNlVGVzdCwgSXNGYWxzZUZvck5v
bldoaXRlU3BhY2UpIHsKLSAgRVhQRUNUX0ZBTFNFKElzV2hpdGVTcGFjZSgnXDAnKSk7Ci0gIEVY
UEVDVF9GQUxTRShJc1doaXRlU3BhY2UoJ2EnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1doaXRlU3Bh
Y2UoJzEnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1doaXRlU3BhY2UoJysnKSk7Ci0gIEVYUEVDVF9G
QUxTRShJc1doaXRlU3BhY2UoJ18nKSk7Ci19Ci0KLVRFU1QoSXNXaGl0ZVNwYWNlVGVzdCwgSXNU
cnVlRm9yV2hpdGVTcGFjZSkgewotICBFWFBFQ1RfVFJVRShJc1doaXRlU3BhY2UoJyAnKSk7Ci0g
IEVYUEVDVF9UUlVFKElzV2hpdGVTcGFjZSgnXG4nKSk7Ci0gIEVYUEVDVF9UUlVFKElzV2hpdGVT
cGFjZSgnXHInKSk7Ci0gIEVYUEVDVF9UUlVFKElzV2hpdGVTcGFjZSgnXHQnKSk7Ci0gIEVYUEVD
VF9UUlVFKElzV2hpdGVTcGFjZSgnXHYnKSk7Ci0gIEVYUEVDVF9UUlVFKElzV2hpdGVTcGFjZSgn
XGYnKSk7Ci19Ci0KLVRFU1QoSXNXb3JkQ2hhclRlc3QsIElzRmFsc2VGb3JOb25Xb3JkQ2hhcikg
ewotICBFWFBFQ1RfRkFMU0UoSXNXb3JkQ2hhcignXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1dv
cmRDaGFyKCcrJykpOwotICBFWFBFQ1RfRkFMU0UoSXNXb3JkQ2hhcignLicpKTsKLSAgRVhQRUNU
X0ZBTFNFKElzV29yZENoYXIoJyAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1dvcmRDaGFyKCdcbicp
KTsKLX0KLQotVEVTVChJc1dvcmRDaGFyVGVzdCwgSXNUcnVlRm9yTGV0dGVyKSB7Ci0gIEVYUEVD
VF9UUlVFKElzV29yZENoYXIoJ2EnKSk7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJ2InKSk7
Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJ0EnKSk7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENo
YXIoJ1onKSk7Ci19Ci0KLVRFU1QoSXNXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvckRpZ2l0KSB7Ci0g
IEVYUEVDVF9UUlVFKElzV29yZENoYXIoJzAnKSk7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIo
JzEnKSk7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJzcnKSk7Ci0gIEVYUEVDVF9UUlVFKElz
V29yZENoYXIoJzknKSk7Ci19Ci0KLVRFU1QoSXNXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvclVuZGVy
c2NvcmUpIHsKLSAgRVhQRUNUX1RSVUUoSXNXb3JkQ2hhcignXycpKTsKLX0KLQotVEVTVChJc1Zh
bGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZvck5vblByaW50YWJsZSkgewotICBFWFBFQ1RfRkFMU0Uo
SXNWYWxpZEVzY2FwZSgnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdcMDA3
JykpOwotfQotCi1URVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc0ZhbHNlRm9yRGlnaXQpIHsKLSAg
RVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJzAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlk
RXNjYXBlKCc5JykpOwotfQotCi1URVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc0ZhbHNlRm9yV2hp
dGVTcGFjZSkgewotICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnICcpKTsKLSAgRVhQRUNU
X0ZBTFNFKElzVmFsaWRFc2NhcGUoJ1xuJykpOwotfQotCi1URVNUKElzVmFsaWRFc2NhcGVUZXN0
LCBJc0ZhbHNlRm9yU29tZUxldHRlcikgewotICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgn
YScpKTsKLSAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJ1onKSk7Ci19Ci0KLVRFU1QoSXNW
YWxpZEVzY2FwZVRlc3QsIElzVHJ1ZUZvclB1bmN0KSB7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRF
c2NhcGUoJy4nKSk7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJy0nKSk7Ci0gIEVYUEVD
VF9UUlVFKElzVmFsaWRFc2NhcGUoJ14nKSk7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUo
JyQnKSk7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJygnKSk7Ci0gIEVYUEVDVF9UUlVF
KElzVmFsaWRFc2NhcGUoJ10nKSk7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ3snKSk7
Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ3wnKSk7Ci19Ci0KLVRFU1QoSXNWYWxpZEVz
Y2FwZVRlc3QsIElzVHJ1ZUZvclNvbWVMZXR0ZXIpIHsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVz
Y2FwZSgnZCcpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnRCcpKTsKLSAgRVhQRUNU
X1RSVUUoSXNWYWxpZEVzY2FwZSgncycpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgn
UycpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgndycpKTsKLSAgRVhQRUNUX1RSVUUo
SXNWYWxpZEVzY2FwZSgnVycpKTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2Nh
cGVkUHVuY3QpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXFwnLCAn
XDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1xcJywgJyAnKSk7
Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ18nLCAnLicpKTsKLSAgRVhQ
RUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnLicsICdhJykpOwotCi0gIEVYUEVDVF9U
UlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXFwnLCAnXFwnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0
b21NYXRjaGVzQ2hhcih0cnVlLCAnXycsICdfJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJysnLCAnKycpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICcuJywgJy4nKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF9k
KSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnXDAnKSk7Ci0g
IEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnYScpKTsKLSAgRVhQRUNU
X0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICcuJykpOwotCi0gIEVYUEVDVF9UUlVF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICcwJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0
Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnOScpKTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0
LCBFc2NhcGVkX0QpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcs
ICcwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJzknKSk7
Ci0KLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJ1wwJykpOwotICBF
WFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0QnLCAnYScpKTsKLSAgRVhQRUNUX1RS
VUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJy0nKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNo
ZXNDaGFyVGVzdCwgRXNjYXBlZF9zKSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ3MnLCAnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwg
J3MnLCAnYScpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICcu
JykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJzknKSk7Ci0K
LSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJyAnKSk7Ci0gIEVYUEVD
VF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICdcbicpKTsKLSAgRVhQRUNUX1RSVUUo
QXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJ1x0JykpOwotfQotCi1URVNUKEF0b21NYXRjaGVz
Q2hhclRlc3QsIEVzY2FwZWRfUykgewotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICdTJywgJyAnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1Mn
LCAnXHInKSk7Ci0KLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdTJywgJ1ww
JykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnYScpKTsKLSAg
RVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdTJywgJzknKSk7Ci19Ci0KLVRFU1Qo
QXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF93KSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0
Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ3cnLCAnKycpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVl
LCAndycsICcgJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3Jywg
J1xuJykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICcwJykp
OwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnYicpKTsKLSAgRVhQ
RUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJ0MnKSk7Ci0gIEVYUEVDVF9UUlVF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdfJykpOwotfQotCi1URVNUKEF0b21NYXRjaGVz
Q2hhclRlc3QsIEVzY2FwZWRfVykgewotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICdXJywgJ0EnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cn
LCAnYicpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICc5Jykp
OwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJ18nKSk7Ci0KLSAg
RVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJ1wwJykpOwotICBFWFBFQ1Rf
VFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnKicpKTsKLSAgRVhQRUNUX1RSVUUoQXRv
bU1hdGNoZXNDaGFyKHRydWUsICdXJywgJ1xuJykpOwotfQotCi1URVNUKEF0b21NYXRjaGVzQ2hh
clRlc3QsIEVzY2FwZWRXaGl0ZVNwYWNlKSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ2YnLCAnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ2YnLCAnXG4nKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ24n
LCAnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ24nLCAnXHIn
KSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3InLCAnXDAnKSk7Ci0g
IEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3InLCAnYScpKTsKLSAgRVhQRUNU
X0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndCcsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndCcsICd0JykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICd2JywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICd2JywgJ1xmJykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAnZicsICdcZicpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdu
JywgJ1xuJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3InLCAnXHIn
KSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndCcsICdcdCcpKTsKLSAg
RVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd2JywgJ1x2JykpOwotfQotCi1URVNU
KEF0b21NYXRjaGVzQ2hhclRlc3QsIFVuZXNjYXBlZERvdCkgewotICBFWFBFQ1RfRkFMU0UoQXRv
bU1hdGNoZXNDaGFyKGZhbHNlLCAnLicsICdcbicpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0
Y2hlc0NoYXIoZmFsc2UsICcuJywgJ1wwJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0No
YXIoZmFsc2UsICcuJywgJy4nKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxz
ZSwgJy4nLCAnYScpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnLics
ICcgJykpOwotfQotCi1URVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIFVuZXNjYXBlZENoYXIpIHsK
LSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJ2EnLCAnXDAnKSk7Ci0gIEVY
UEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICdhJywgJ2InKSk7Ci0gIEVYUEVDVF9G
QUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICckJywgJ2EnKSk7Ci0KLSAgRVhQRUNUX1RSVUUo
QXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnJCcsICckJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0
Y2hlc0NoYXIoZmFsc2UsICc1JywgJzUnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hh
cihmYWxzZSwgJ1onLCAnWicpKTsKLX0KLQotVEVTVChWYWxpZGF0ZVJlZ2V4VGVzdCwgR2VuZXJh
dGVzRmFpbHVyZUFuZFJldHVybnNGYWxzZUZvckludmFsaWQpIHsKLSAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoTlVMTCkpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAiTlVMTCBpcyBub3QgYSB2YWxpZCBzaW1wbGUgcmVndWxhciBleHByZXNz
aW9uIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAotICAgICAgQVNTRVJUX0ZBTFNFKFZh
bGlkYXRlUmVnZXgoImFcXCIpKSwKLSAgICAgICJTeW50YXggZXJyb3IgYXQgaW5kZXggMSBpbiBz
aW1wbGUgcmVndWxhciBleHByZXNzaW9uIFwiYVxcXCI6ICIpOwotICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiYVxcIikpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAiJ1xcJyBjYW5ub3QgYXBwZWFyIGF0IHRoZSBlbmQiKTsKLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIlxcblxcIikpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAiJ1xcJyBjYW5ub3QgYXBwZWFyIGF0IHRoZSBlbmQi
KTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgo
Ilxcc1xcaGIiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGVzY2FwZSBz
ZXF1ZW5jZSBcIlxcaFwiIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxT
RShWYWxpZGF0ZVJlZ2V4KCJeXiIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIideJyBj
YW4gb25seSBhcHBlYXIgYXQgdGhlIGJlZ2lubmluZyIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiLipeYiIpKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIideJyBjYW4gb25seSBhcHBlYXIgYXQgdGhlIGJlZ2lubmluZyIpOwotICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiJCQiKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICInJCcgY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBl
bmQiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVn
ZXgoIl4kYSIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIickJyBjYW4gb25seSBhcHBl
YXIgYXQgdGhlIGVuZCIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0Uo
VmFsaWRhdGVSZWdleCgiYShiIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJygnIGlz
IHVuc3VwcG9ydGVkIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShW
YWxpZGF0ZVJlZ2V4KCJhYikiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInKScgaXMg
dW5zdXBwb3J0ZWQiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZh
bGlkYXRlUmVnZXgoIlthYiIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIidbJyBpcyB1
bnN1cHBvcnRlZCIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFs
aWRhdGVSZWdleCgiYXsyIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3snIGlzIHVu
c3VwcG9ydGVkIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxp
ZGF0ZVJlZ2V4KCI/IikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJz8nIGNhbiBvbmx5
IGZvbGxvdyBhIHJlcGVhdGFibGUgdG9rZW4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
QVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIl4qIikpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAiJyonIGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVhdGFibGUgdG9rZW4iKTsKLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIjUqKyIpKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIicrJyBjYW4gb25seSBmb2xsb3cgYSByZXBlYXRhYmxl
IHRva2VuIik7Ci19Ci0KLVRFU1QoVmFsaWRhdGVSZWdleFRlc3QsIFJldHVybnNUcnVlRm9yVmFs
aWQpIHsKLSAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiIikpOwotICBFWFBFQ1RfVFJVRShW
YWxpZGF0ZVJlZ2V4KCJhIikpOwotICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCIuKiIpKTsK
LSAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiXmFfKyIpKTsKLSAgRVhQRUNUX1RSVUUoVmFs
aWRhdGVSZWdleCgiXmFcXHRcXCY/IikpOwotICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCIw
OSokIikpOwotICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCJeWiQiKSk7Ci0gIEVYUEVDVF9U
UlVFKFZhbGlkYXRlUmVnZXgoImFcXF5aXFwkXFwoXFwpXFx8XFxbXFxdXFx7XFx9IikpOwotfQot
Ci1URVNUKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NGb3JaZXJvT3JP
bmUpIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNl
LCAnYScsICc/JywgImEiLCAiYmEiKSk7Ci0gIC8vIFJlcGVhdGluZyBtb3JlIHRoYW4gb25jZS4K
LSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnYScs
ICc/JywgImIiLCAiYWFiIikpOwotCi0gIC8vIFJlcGVhdGluZyB6ZXJvIHRpbWVzLgotICBFWFBF
Q1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJ2EnLCAnPycsICJi
IiwgImJhIikpOwotICAvLyBSZXBlYXRpbmcgb25jZS4KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBl
dGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICdhJywgJz8nLCAiYiIsICJhYiIpKTsKLSAgRVhQ
RUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcjJywgJz8nLCAi
LiIsICIjIyIpKTsKLX0KLQotVEVTVChNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZFRlc3Qs
IFdvcmtzRm9yWmVyb09yTWFueSkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5k
UmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJyonLCAiYSQiLCAiYmFhYiIpKTsKLQotICAvLyBSZXBl
YXRpbmcgemVybyB0aW1lcy4KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhB
dEhlYWQoZmFsc2UsICcuJywgJyonLCAiYiIsICJiYyIpKTsKLSAgLy8gUmVwZWF0aW5nIG9uY2Uu
Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLics
ICcqJywgImIiLCAiYWJjIikpOwotICAvLyBSZXBlYXRpbmcgbW9yZSB0aGFuIG9uY2UuCi0gIEVY
UEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKHRydWUsICd3JywgJyonLCAi
LSIsICJhYl8xLWciKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWRU
ZXN0LCBXb3Jrc0Zvck9uZU9yTWFueSkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZXBldGl0aW9u
QW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJysnLCAiYSQiLCAiYmFhYiIpKTsKLSAgLy8gUmVw
ZWF0aW5nIHplcm8gdGltZXMuCi0gIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdl
eEF0SGVhZChmYWxzZSwgJy4nLCAnKycsICJiIiwgImJjIikpOwotCi0gIC8vIFJlcGVhdGluZyBv
bmNlLgotICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwg
Jy4nLCAnKycsICJiIiwgImFiYyIpKTsKLSAgLy8gUmVwZWF0aW5nIG1vcmUgdGhhbiBvbmNlLgot
ICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZCh0cnVlLCAndycsICcr
JywgIi0iLCAiYWJfMS1nIikpOwotfQotCi1URVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBSZXR1
cm5zVHJ1ZUZvckVtcHR5UmVnZXgpIHsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgi
IiwgIiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiIiwgImFiIikpOwotfQot
Ci1URVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc1doZW5Eb2xsYXJJc0luUmVnZXgpIHsK
LSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIiQiLCAiYSIpKTsKLQotICBFWFBFQ1Rf
VFJVRShNYXRjaFJlZ2V4QXRIZWFkKCIkIiwgIiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdl
eEF0SGVhZCgiYSQiLCAiYSIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgV29y
a3NXaGVuUmVnZXhTdGFydHNXaXRoRXNjYXBlU2VxdWVuY2UpIHsKLSAgRVhQRUNUX0ZBTFNFKE1h
dGNoUmVnZXhBdEhlYWQoIlxcdyIsICIrIikpOwotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0
SGVhZCgiXFxXIiwgImFiIikpOwotCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxc
c2EiLCAiXG5hYiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxkIiwgIjFh
IikpOwotfQotCi1URVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc1doZW5SZWdleFN0YXJ0
c1dpdGhSZXBldGl0aW9uKSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCIuK2Ei
LCAiYWJjIikpOwotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiYT9iIiwgImFhYiIp
KTsKLQotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCIuKmEiLCAiYmMxMi1hYiIpKTsK
LSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiYT9iIiwgImIiKSk7Ci0gIEVYUEVDVF9U
UlVFKE1hdGNoUmVnZXhBdEhlYWQoImE/YiIsICJhYiIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4
QXRIZWFkVGVzdCwKLSAgICAgV29ya3NXaGVuUmVnZXhTdGFydHNXaXRoUmVwZXRpb25PZkVzY2Fw
ZVNlcXVlbmNlKSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJcXC4rYSIsICJh
YmMiKSk7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJcXHM/YiIsICIgIGIiKSk7
Ci0KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFwoKmEiLCAiKCgoKGFiIikpOwot
ICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXF4/YiIsICJeYiIpKTsKLSAgRVhQRUNU
X1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxcXD9iIiwgImIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1h
dGNoUmVnZXhBdEhlYWQoIlxcXFw/YiIsICJcXGIiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEF0
SGVhZFRlc3QsIE1hdGNoZXNTZXF1ZW50aWFsbHkpIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVn
ZXhBdEhlYWQoImFiLipjIiwgImFjYWJjIikpOwotCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhB
dEhlYWQoImFiLipjIiwgImFiLWZzYyIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QW55d2hlcmVU
ZXN0LCBSZXR1cm5zRmFsc2VXaGVuU3RyaW5nSXNOdWxsKSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRj
aFJlZ2V4QW55d2hlcmUoIiIsIE5VTEwpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QW55d2hlcmVU
ZXN0LCBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhDYXJldCkgewotICBFWFBFQ1RfRkFMU0UoTWF0
Y2hSZWdleEFueXdoZXJlKCJeYSIsICJiYSIpKTsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhB
bnl3aGVyZSgiXiQiLCAiYSIpKTsKLQotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUo
Il5hIiwgImFiIikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIl4iLCAiYWIi
KSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXiQiLCAiIikpOwotfQotCi1U
RVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFJldHVybnNGYWxzZVdoZW5Ob01hdGNoKSB7Ci0g
IEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoImEiLCAiYmNkZTEyMyIpKTsKLSAgRVhQ
RUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiYS4rYSIsICItLWFhODg4ODg4ODgiKSk7Ci19
Ci0KLVRFU1QoTWF0Y2hSZWdleEFueXdoZXJlVGVzdCwgUmV0dXJuc1RydWVXaGVuTWF0Y2hpbmdQ
cmVmaXgpIHsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJcXHcrIiwgImFiMV8g
LSA1IikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIi4qPSIsICI9IikpOwot
ICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoInguKmFiPy4qYmMiLCAieGFhYWJjIikp
OwotfQotCi1URVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFJldHVybnNUcnVlV2hlbk1hdGNo
aW5nTm9uUHJlZml4KSB7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXFx3KyIs
ICIkJCQgYWIxXyAtIDUiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXFwu
Kz0iLCAiPSAgLi4uPSIpKTsKLX0KLQotLy8gVGVzdHMgUkUncyBpbXBsaWNpdCBjb25zdHJ1Y3Rv
cnMuCi1URVNUKFJFVGVzdCwgSW1wbGljaXRDb25zdHJ1Y3RvcldvcmtzKSB7Ci0gIGNvbnN0IFJF
IGVtcHR5KCIiKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCBlbXB0eS5wYXR0ZXJuKCkpOwotCi0gIGNv
bnN0IFJFIHNpbXBsZSgiaGVsbG8iKTsKLSAgRVhQRUNUX1NUUkVRKCJoZWxsbyIsIHNpbXBsZS5w
YXR0ZXJuKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFJFJ3MgY29uc3RydWN0b3JzIHJlamVjdCBp
bnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCi1URVNUKFJFVGVzdCwgUmVqZWN0c0ludmFsaWRS
ZWdleCkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAgY29uc3QgUkUgbm9ybWFs
KE5VTEwpOwotICB9LCAiTlVMTCBpcyBub3QgYSB2YWxpZCBzaW1wbGUgcmVndWxhciBleHByZXNz
aW9uIik7Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIGNvbnN0IFJFIG5vcm1h
bCgiLiooXFx3KyIpOwotICB9LCAiJygnIGlzIHVuc3VwcG9ydGVkIik7Ci0KLSAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoewotICAgIGNvbnN0IFJFIGludmFsaWQoIl4/Iik7Ci0gIH0sICInPycg
Y2FuIG9ubHkgZm9sbG93IGEgcmVwZWF0YWJsZSB0b2tlbiIpOwotfQotCi0vLyBUZXN0cyBSRTo6
RnVsbE1hdGNoKCkuCi1URVNUKFJFVGVzdCwgRnVsbE1hdGNoV29ya3MpIHsKLSAgY29uc3QgUkUg
ZW1wdHkoIiIpOwotICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKCIiLCBlbXB0eSkpOwotICBF
WFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaCgiYSIsIGVtcHR5KSk7Ci0KLSAgY29uc3QgUkUgcmUx
KCJhIik7Ci0gIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goImEiLCByZTEpKTsKLQotICBjb25z
dCBSRSByZSgiYS4qeiIpOwotICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKCJheiIsIHJlKSk7
Ci0gIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goImF4eXoiLCByZSkpOwotICBFWFBFQ1RfRkFM
U0UoUkU6OkZ1bGxNYXRjaCgiYmF6IiwgcmUpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0
Y2goImF6eSIsIHJlKSk7Ci19Ci0KLS8vIFRlc3RzIFJFOjpQYXJ0aWFsTWF0Y2goKS4KLVRFU1Qo
UkVUZXN0LCBQYXJ0aWFsTWF0Y2hXb3JrcykgewotICBjb25zdCBSRSBlbXB0eSgiIik7Ci0gIEVY
UEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goIiIsIGVtcHR5KSk7Ci0gIEVYUEVDVF9UUlVFKFJF
OjpQYXJ0aWFsTWF0Y2goImEiLCBlbXB0eSkpOwotCi0gIGNvbnN0IFJFIHJlKCJhLip6Iik7Ci0g
IEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImF6IiwgcmUpKTsKLSAgRVhQRUNUX1RSVUUo
UkU6OlBhcnRpYWxNYXRjaCgiYXh5eiIsIHJlKSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFs
TWF0Y2goImJheiIsIHJlKSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImF6eSIs
IHJlKSk7Ci0gIEVYUEVDVF9GQUxTRShSRTo6UGFydGlhbE1hdGNoKCJ6emEiLCByZSkpOwotfQot
Ci0jZW5kaWYgIC8vIEdURVNUX1VTRVNfUE9TSVhfUkUKLQotI2lmICFHVEVTVF9PU19XSU5ET1dT
X01PQklMRQotCi1URVNUKENhcHR1cmVUZXN0LCBDYXB0dXJlc1N0ZG91dCkgewotICBDYXB0dXJl
U3Rkb3V0KCk7Ci0gIGZwcmludGYoc3Rkb3V0LCAiYWJjIik7Ci0gIEVYUEVDVF9TVFJFUSgiYWJj
IiwgR2V0Q2FwdHVyZWRTdGRvdXQoKS5jX3N0cigpKTsKLQotICBDYXB0dXJlU3Rkb3V0KCk7Ci0g
IGZwcmludGYoc3Rkb3V0LCAiZGVmJWNnaGkiLCAnXDAnKTsKLSAgRVhQRUNUX0VRKDo6c3RkOjpz
dHJpbmcoImRlZlwwZ2hpIiwgNyksIDo6c3RkOjpzdHJpbmcoR2V0Q2FwdHVyZWRTdGRvdXQoKSkp
OwotfQotCi1URVNUKENhcHR1cmVUZXN0LCBDYXB0dXJlc1N0ZGVycikgewotICBDYXB0dXJlU3Rk
ZXJyKCk7Ci0gIGZwcmludGYoc3RkZXJyLCAiamtsIik7Ci0gIEVYUEVDVF9TVFJFUSgiamtsIiwg
R2V0Q2FwdHVyZWRTdGRlcnIoKS5jX3N0cigpKTsKLQotICBDYXB0dXJlU3RkZXJyKCk7Ci0gIGZw
cmludGYoc3RkZXJyLCAiamtsJWNtbm8iLCAnXDAnKTsKLSAgRVhQRUNUX0VRKDo6c3RkOjpzdHJp
bmcoImprbFwwbW5vIiwgNyksIDo6c3RkOjpzdHJpbmcoR2V0Q2FwdHVyZWRTdGRlcnIoKSkpOwot
fQotCi0vLyBUZXN0cyB0aGF0IHN0ZG91dCBhbmQgc3RkZXJyIGNhcHR1cmUgZG9uJ3QgaW50ZXJm
ZXJlIHdpdGggZWFjaCBvdGhlci4KLVRFU1QoQ2FwdHVyZVRlc3QsIENhcHR1cmVzU3Rkb3V0QW5k
U3RkZXJyKSB7Ci0gIENhcHR1cmVTdGRvdXQoKTsKLSAgQ2FwdHVyZVN0ZGVycigpOwotICBmcHJp
bnRmKHN0ZG91dCwgInBxciIpOwotICBmcHJpbnRmKHN0ZGVyciwgInN0dSIpOwotICBFWFBFQ1Rf
U1RSRVEoInBxciIsIEdldENhcHR1cmVkU3Rkb3V0KCkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJF
USgic3R1IiwgR2V0Q2FwdHVyZWRTdGRlcnIoKS5jX3N0cigpKTsKLX0KLQotVEVTVChDYXB0dXJl
RGVhdGhUZXN0LCBDYW5ub3RSZWVudGVyU3Rkb3V0Q2FwdHVyZSkgewotICBDYXB0dXJlU3Rkb3V0
KCk7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoQ2FwdHVyZVN0ZG91dCgpOywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiT25seSBvbmUgc3Rkb3V0IGNhcHR1cmVyIGNhbiBleGlz
dCBhdCBhIHRpbWUiKTsKLSAgR2V0Q2FwdHVyZWRTdGRvdXQoKTsKLQotICAvLyBXZSBjYW5ub3Qg
dGVzdCBzdGRlcnIgY2FwdHVyaW5nIHVzaW5nIGRlYXRoIHRlc3RzIGFzIHRoZXkgdXNlIGl0Ci0g
IC8vIHRoZW1zZWx2ZXMuCi19Ci0KLSNlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1NfTU9CSUxF
Ci0KLVRFU1QoVGhyZWFkTG9jYWxUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3JJbml0aWFsaXplc1Rv
RGVmYXVsdFZhbHVlcykgewotICBUaHJlYWRMb2NhbDxpbnQ+IHQxOwotICBFWFBFQ1RfRVEoMCwg
dDEuZ2V0KCkpOwotCi0gIFRocmVhZExvY2FsPHZvaWQqPiB0MjsKLSAgRVhQRUNUX1RSVUUodDIu
Z2V0KCkgPT0gTlVMTCk7Ci19Ci0KLVRFU1QoVGhyZWFkTG9jYWxUZXN0LCBTaW5nbGVQYXJhbUNv
bnN0cnVjdG9ySW5pdGlhbGl6ZXNUb1BhcmFtKSB7Ci0gIFRocmVhZExvY2FsPGludD4gdDEoMTIz
KTsKLSAgRVhQRUNUX0VRKDEyMywgdDEuZ2V0KCkpOwotCi0gIGludCBpID0gMDsKLSAgVGhyZWFk
TG9jYWw8aW50Kj4gdDIoJmkpOwotICBFWFBFQ1RfRVEoJmksIHQyLmdldCgpKTsKLX0KLQotY2xh
c3MgTm9EZWZhdWx0Q29udHJ1Y3RvciB7Ci0gcHVibGljOgotICBleHBsaWNpdCBOb0RlZmF1bHRD
b250cnVjdG9yKGNvbnN0IGNoYXIqKSB7fQotICBOb0RlZmF1bHRDb250cnVjdG9yKGNvbnN0IE5v
RGVmYXVsdENvbnRydWN0b3ImKSB7fQotfTsKLQotVEVTVChUaHJlYWRMb2NhbFRlc3QsIFZhbHVl
RGVmYXVsdENvbnRydWN0b3JJc05vdFJlcXVpcmVkRm9yUGFyYW1WZXJzaW9uKSB7Ci0gIFRocmVh
ZExvY2FsPE5vRGVmYXVsdENvbnRydWN0b3I+IGJhcihOb0RlZmF1bHRDb250cnVjdG9yKCJmb28i
KSk7Ci0gIGJhci5wb2ludGVyKCk7Ci19Ci0KLVRFU1QoVGhyZWFkTG9jYWxUZXN0LCBHZXRBbmRQ
b2ludGVyUmV0dXJuU2FtZVZhbHVlKSB7Ci0gIFRocmVhZExvY2FsPFN0cmluZz4gdGhyZWFkX2xv
Y2FsOwotCi0gIEVYUEVDVF9FUSh0aHJlYWRfbG9jYWwucG9pbnRlcigpLCAmKHRocmVhZF9sb2Nh
bC5nZXQoKSkpOwotCi0gIC8vIFZlcmlmaWVzIHRoZSBjb25kaXRpb24gc3RpbGwgaG9sZHMgYWZ0
ZXIgY2FsbGluZyBzZXQuCi0gIHRocmVhZF9sb2NhbC5zZXQoImZvbyIpOwotICBFWFBFQ1RfRVEo
dGhyZWFkX2xvY2FsLnBvaW50ZXIoKSwgJih0aHJlYWRfbG9jYWwuZ2V0KCkpKTsKLX0KLQotVEVT
VChUaHJlYWRMb2NhbFRlc3QsIFBvaW50ZXJBbmRDb25zdFBvaW50ZXJSZXR1cm5TYW1lVmFsdWUp
IHsKLSAgVGhyZWFkTG9jYWw8U3RyaW5nPiB0aHJlYWRfbG9jYWw7Ci0gIGNvbnN0IFRocmVhZExv
Y2FsPFN0cmluZz4mIGNvbnN0X3RocmVhZF9sb2NhbCA9IHRocmVhZF9sb2NhbDsKLQotICBFWFBF
Q1RfRVEodGhyZWFkX2xvY2FsLnBvaW50ZXIoKSwgY29uc3RfdGhyZWFkX2xvY2FsLnBvaW50ZXIo
KSk7Ci0KLSAgdGhyZWFkX2xvY2FsLnNldCgiZm9vIik7Ci0gIEVYUEVDVF9FUSh0aHJlYWRfbG9j
YWwucG9pbnRlcigpLCBjb25zdF90aHJlYWRfbG9jYWwucG9pbnRlcigpKTsKLX0KLQotI2lmIEdU
RVNUX0lTX1RIUkVBRFNBRkUKLQotdm9pZCBBZGRUd28oaW50KiBwYXJhbSkgeyAqcGFyYW0gKz0g
MjsgfQotCi1URVNUKFRocmVhZFdpdGhQYXJhbVRlc3QsIENvbnN0cnVjdG9yRXhlY3V0ZXNUaHJl
YWRGdW5jKSB7Ci0gIGludCBpID0gNDA7Ci0gIFRocmVhZFdpdGhQYXJhbTxpbnQqPiB0aHJlYWQo
JkFkZFR3bywgJmksIE5VTEwpOwotICB0aHJlYWQuSm9pbigpOwotICBFWFBFQ1RfRVEoNDIsIGkp
OwotfQotCi1URVNUKE11dGV4RGVhdGhUZXN0LCBBc3NlcnRIZWxkU2hvdWxkQXNzZXJ0V2hlbk5v
dExvY2tlZCkgewotICAvLyBBc3NlcnRIZWxkKCkgaXMgZmxha3kgb25seSBpbiB0aGUgcHJlc2Vu
Y2Ugb2YgbXVsdGlwbGUgdGhyZWFkcyBhY2Nlc3NpbmcKLSAgLy8gdGhlIGxvY2suIEluIHRoaXMg
Y2FzZSwgdGhlIHRlc3QgaXMgcm9idXN0LgotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHsK
LSAgICBNdXRleCBtOwotICAgIHsgTXV0ZXhMb2NrIGxvY2soJm0pOyB9Ci0gICAgbS5Bc3NlcnRI
ZWxkKCk7Ci0gIH0sCi0gICJ0aHJlYWQgLipob2xkIik7Ci19Ci0KLVRFU1QoTXV0ZXhUZXN0LCBB
c3NlcnRIZWxkU2hvdWxkTm90QXNzZXJ0V2hlbkxvY2tlZCkgewotICBNdXRleCBtOwotICBNdXRl
eExvY2sgbG9jaygmbSk7Ci0gIG0uQXNzZXJ0SGVsZCgpOwotfQotCi1jbGFzcyBBdG9taWNDb3Vu
dGVyV2l0aE11dGV4IHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IEF0b21pY0NvdW50ZXJXaXRoTXV0
ZXgoTXV0ZXgqIG11dGV4KSA6Ci0gICAgdmFsdWVfKDApLCBtdXRleF8obXV0ZXgpLCByYW5kb21f
KDQyKSB7fQotCi0gIHZvaWQgSW5jcmVtZW50KCkgewotICAgIE11dGV4TG9jayBsb2NrKG11dGV4
Xyk7Ci0gICAgaW50IHRlbXAgPSB2YWx1ZV87Ci0gICAgewotICAgICAgLy8gTG9ja2luZyBhIG11
dGV4IHB1dHMgdXAgYSBtZW1vcnkgYmFycmllciwgcHJldmVudGluZyByZWFkcyBhbmQKLSAgICAg
IC8vIHdyaXRlcyB0byB2YWx1ZV8gcmVhcnJhbmdlZCB3aGVuIG9ic2VydmVkIGZyb20gb3RoZXIg
dGhyZWFkcy4KLSAgICAgIC8vCi0gICAgICAvLyBXZSBjYW5ub3QgdXNlIE11dGV4IGFuZCBNdXRl
eExvY2sgaGVyZSBvciByZWx5IG9uIHRoZWlyIG1lbW9yeQotICAgICAgLy8gYmFycmllciBmdW5j
dGlvbmFsaXR5IGFzIHdlIGFyZSB0ZXN0aW5nIHRoZW0gaGVyZS4KLSAgICAgIHB0aHJlYWRfbXV0
ZXhfdCBtZW1vcnlfYmFycmllcl9tdXRleDsKLSAgICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NF
U1NfKAotICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgmbWVtb3J5X2JhcnJpZXJfbXV0ZXgs
IE5VTEwpKTsKLSAgICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhf
bG9jaygmbWVtb3J5X2JhcnJpZXJfbXV0ZXgpKTsKLQotICAgICAgU2xlZXBNaWxsaXNlY29uZHMo
cmFuZG9tXy5HZW5lcmF0ZSgzMCkpOwotCi0gICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNT
XyhwdGhyZWFkX211dGV4X3VubG9jaygmbWVtb3J5X2JhcnJpZXJfbXV0ZXgpKTsKLSAgICB9Ci0g
ICAgdmFsdWVfID0gdGVtcCArIDE7Ci0gIH0KLSAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4g
dmFsdWVfOyB9Ci0KLSBwcml2YXRlOgotICB2b2xhdGlsZSBpbnQgdmFsdWVfOwotICBNdXRleCog
Y29uc3QgbXV0ZXhfOyAgLy8gUHJvdGVjdHMgdmFsdWVfLgotICBSYW5kb20gICAgICAgcmFuZG9t
XzsKLX07Ci0KLXZvaWQgQ291bnRpbmdUaHJlYWRGdW5jKHBhaXI8QXRvbWljQ291bnRlcldpdGhN
dXRleCosIGludD4gcGFyYW0pIHsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbS5zZWNvbmQ7
ICsraSkKLSAgICAgIHBhcmFtLmZpcnN0LT5JbmNyZW1lbnQoKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCB0aGUgbXV0ZXggb25seSBsZXRzIG9uZSB0aHJlYWQgYXQgYSB0aW1lIHRvIGxvY2sgaXQuCi1U
RVNUKE11dGV4VGVzdCwgT25seU9uZVRocmVhZENhbkxvY2tBdEFUaW1lKSB7Ci0gIE11dGV4IG11
dGV4OwotICBBdG9taWNDb3VudGVyV2l0aE11dGV4IGxvY2tlZF9jb3VudGVyKCZtdXRleCk7Ci0K
LSAgdHlwZWRlZiBUaHJlYWRXaXRoUGFyYW08cGFpcjxBdG9taWNDb3VudGVyV2l0aE11dGV4Kiwg
aW50PiA+IFRocmVhZFR5cGU7Ci0gIGNvbnN0IGludCBrQ3ljbGVDb3VudCA9IDIwOwotICBjb25z
dCBpbnQga1RocmVhZENvdW50ID0gNzsKLSAgc2NvcGVkX3B0cjxUaHJlYWRUeXBlPiBjb3VudGlu
Z190aHJlYWRzW2tUaHJlYWRDb3VudF07Ci0gIE5vdGlmaWNhdGlvbiB0aHJlYWRzX2Nhbl9zdGFy
dDsKLSAgLy8gQ3JlYXRlcyBhbmQgcnVucyBrVGhyZWFkQ291bnQgdGhyZWFkcyB0aGF0IGluY3Jl
bWVudCBsb2NrZWRfY291bnRlcgotICAvLyBrQ3ljbGVDb3VudCB0aW1lcyBlYWNoLgotICBmb3Ig
KGludCBpID0gMDsgaSA8IGtUaHJlYWRDb3VudDsgKytpKSB7Ci0gICAgY291bnRpbmdfdGhyZWFk
c1tpXS5yZXNldChuZXcgVGhyZWFkVHlwZSgmQ291bnRpbmdUaHJlYWRGdW5jLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZV9wYWlyKCZsb2NrZWRfY291
bnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBrQ3ljbGVDb3VudCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmdGhyZWFkc19jYW5fc3RhcnQpKTsKLSAgfQotICB0aHJlYWRzX2Nhbl9zdGFydC5O
b3RpZnkoKTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVGhyZWFkQ291bnQ7ICsraSkKLSAgICBj
b3VudGluZ190aHJlYWRzW2ldLT5Kb2luKCk7Ci0KLSAgLy8gSWYgdGhlIG11dGV4IGxldHMgbW9y
ZSB0aGFuIG9uZSB0aHJlYWQgdG8gaW5jcmVtZW50IHRoZSBjb3VudGVyIGF0IGEKLSAgLy8gdGlt
ZSwgdGhleSBhcmUgbGlrZWx5IHRvIGVuY291bnRlciBhIHJhY2UgY29uZGl0aW9uIGFuZCBoYXZl
IHNvbWUKLSAgLy8gaW5jcmVtZW50cyBvdmVyd3JpdHRlbiwgcmVzdWx0aW5nIGluIHRoZSBsb3dl
ciB0aGVuIGV4cGVjdGVkIGNvdW50ZXIKLSAgLy8gdmFsdWUuCi0gIEVYUEVDVF9FUShrQ3ljbGVD
b3VudCAqIGtUaHJlYWRDb3VudCwgbG9ja2VkX2NvdW50ZXIudmFsdWUoKSk7Ci19Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotdm9pZCBSdW5Gcm9tVGhyZWFkKHZvaWQgKGZ1bmMpKFQpLCBUIHBh
cmFtKSB7Ci0gIFRocmVhZFdpdGhQYXJhbTxUPiB0aHJlYWQoZnVuYywgcGFyYW0sIE5VTEwpOwot
ICB0aHJlYWQuSm9pbigpOwotfQotCi12b2lkIFJldHJpZXZlVGhyZWFkTG9jYWxWYWx1ZShwYWly
PFRocmVhZExvY2FsPFN0cmluZz4qLCBTdHJpbmcqPiBwYXJhbSkgewotICAqcGFyYW0uc2Vjb25k
ID0gcGFyYW0uZmlyc3QtPmdldCgpOwotfQotCi1URVNUKFRocmVhZExvY2FsVGVzdCwgUGFyYW1l
dGVyaXplZENvbnN0cnVjdG9yU2V0c0RlZmF1bHQpIHsKLSAgVGhyZWFkTG9jYWw8U3RyaW5nPiB0
aHJlYWRfbG9jYWwoImZvbyIpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIsIHRocmVhZF9sb2NhbC5n
ZXQoKS5jX3N0cigpKTsKLQotICB0aHJlYWRfbG9jYWwuc2V0KCJiYXIiKTsKLSAgRVhQRUNUX1NU
UkVRKCJiYXIiLCB0aHJlYWRfbG9jYWwuZ2V0KCkuY19zdHIoKSk7Ci0KLSAgU3RyaW5nIHJlc3Vs
dDsKLSAgUnVuRnJvbVRocmVhZCgmUmV0cmlldmVUaHJlYWRMb2NhbFZhbHVlLCBtYWtlX3BhaXIo
JnRocmVhZF9sb2NhbCwgJnJlc3VsdCkpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIsIHJlc3VsdC5j
X3N0cigpKTsKLX0KLQotLy8gRGVzdHJ1Y3RvclRyYWNrZXIga2VlcHMgdHJhY2sgb2Ygd2hldGhl
ciBpdHMgaW5zdGFuY2VzIGhhdmUgYmVlbgotLy8gZGVzdHJveWVkLgotc3RhdGljIHN0ZDo6dmVj
dG9yPGJvb2w+IGdfZGVzdHJveWVkOwotCi1jbGFzcyBEZXN0cnVjdG9yVHJhY2tlciB7Ci0gcHVi
bGljOgotICBEZXN0cnVjdG9yVHJhY2tlcigpIDogaW5kZXhfKEdldE5ld0luZGV4KCkpIHt9Ci0g
IERlc3RydWN0b3JUcmFja2VyKGNvbnN0IERlc3RydWN0b3JUcmFja2VyJiAvKiByaHMgKi8pCi0g
ICAgICA6IGluZGV4XyhHZXROZXdJbmRleCgpKSB7fQotICB+RGVzdHJ1Y3RvclRyYWNrZXIoKSB7
Ci0gICAgLy8gV2UgbmV2ZXIgYWNjZXNzIGdfZGVzdHJveWVkIGNvbmN1cnJlbnRseSwgc28gd2Ug
ZG9uJ3QgbmVlZCB0bwotICAgIC8vIHByb3RlY3QgdGhlIHdyaXRlIG9wZXJhdGlvbiB1bmRlciBh
IG11dGV4LgotICAgIGdfZGVzdHJveWVkW2luZGV4X10gPSB0cnVlOwotICB9Ci0KLSBwcml2YXRl
OgotICBzdGF0aWMgaW50IEdldE5ld0luZGV4KCkgewotICAgIGdfZGVzdHJveWVkLnB1c2hfYmFj
ayhmYWxzZSk7Ci0gICAgcmV0dXJuIGdfZGVzdHJveWVkLnNpemUoKSAtIDE7Ci0gIH0KLSAgY29u
c3QgaW50IGluZGV4XzsKLX07Ci0KLXR5cGVkZWYgVGhyZWFkTG9jYWw8RGVzdHJ1Y3RvclRyYWNr
ZXI+KiBUaHJlYWRQYXJhbTsKLQotdm9pZCBDYWxsVGhyZWFkTG9jYWxHZXQoVGhyZWFkUGFyYW0g
dGhyZWFkX2xvY2FsKSB7Ci0gIHRocmVhZF9sb2NhbC0+Z2V0KCk7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgd2hlbiBhIFRocmVhZExvY2FsIG9iamVjdCBkaWVzIGluIGEgdGhyZWFkLCBpdCBkZXN0cm95
cwotLy8gdGhlIG1hbmFnZWQgb2JqZWN0IGZvciB0aGF0IHRocmVhZC4KLVRFU1QoVGhyZWFkTG9j
YWxUZXN0LCBEZXN0cm95c01hbmFnZWRPYmplY3RGb3JPd25UaHJlYWRXaGVuRHlpbmcpIHsKLSAg
Z19kZXN0cm95ZWQuY2xlYXIoKTsKLQotICB7Ci0gICAgLy8gVGhlIG5leHQgbGluZSBkZWZhdWx0
IGNvbnN0cnVjdHMgYSBEZXN0cnVjdG9yVHJhY2tlciBvYmplY3QgYXMKLSAgICAvLyB0aGUgZGVm
YXVsdCB2YWx1ZSBvZiBvYmplY3RzIG1hbmFnZWQgYnkgdGhyZWFkX2xvY2FsLgotICAgIFRocmVh
ZExvY2FsPERlc3RydWN0b3JUcmFja2VyPiB0aHJlYWRfbG9jYWw7Ci0gICAgQVNTRVJUX0VRKDFV
LCBnX2Rlc3Ryb3llZC5zaXplKCkpOwotICAgIEFTU0VSVF9GQUxTRShnX2Rlc3Ryb3llZFswXSk7
Ci0KLSAgICAvLyBUaGlzIGNyZWF0ZXMgYW5vdGhlciBEZXN0cnVjdG9yVHJhY2tlciBvYmplY3Qg
Zm9yIHRoZSBtYWluIHRocmVhZC4KLSAgICB0aHJlYWRfbG9jYWwuZ2V0KCk7Ci0gICAgQVNTRVJU
X0VRKDJVLCBnX2Rlc3Ryb3llZC5zaXplKCkpOwotICAgIEFTU0VSVF9GQUxTRShnX2Rlc3Ryb3ll
ZFswXSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdfZGVzdHJveWVkWzFdKTsKLSAgfQotCi0gIC8vIE5v
dyB0aHJlYWRfbG9jYWwgaGFzIGRpZWQuICBJdCBzaG91bGQgaGF2ZSBkZXN0cm95ZWQgYm90aCB0
aGUKLSAgLy8gZGVmYXVsdCB2YWx1ZSBzaGFyZWQgYnkgYWxsIHRocmVhZHMgYW5kIHRoZSB2YWx1
ZSBmb3IgdGhlIG1haW4KLSAgLy8gdGhyZWFkLgotICBBU1NFUlRfRVEoMlUsIGdfZGVzdHJveWVk
LnNpemUoKSk7Ci0gIEVYUEVDVF9UUlVFKGdfZGVzdHJveWVkWzBdKTsKLSAgRVhQRUNUX1RSVUUo
Z19kZXN0cm95ZWRbMV0pOwotCi0gIGdfZGVzdHJveWVkLmNsZWFyKCk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgd2hlbiBhIHRocmVhZCBleGl0cywgdGhlIHRocmVhZC1sb2NhbCBvYmplY3QgZm9yIHRo
YXQKLS8vIHRocmVhZCBpcyBkZXN0cm95ZWQuCi1URVNUKFRocmVhZExvY2FsVGVzdCwgRGVzdHJv
eXNNYW5hZ2VkT2JqZWN0QXRUaHJlYWRFeGl0KSB7Ci0gIGdfZGVzdHJveWVkLmNsZWFyKCk7Ci0K
LSAgewotICAgIC8vIFRoZSBuZXh0IGxpbmUgZGVmYXVsdCBjb25zdHJ1Y3RzIGEgRGVzdHJ1Y3Rv
clRyYWNrZXIgb2JqZWN0IGFzCi0gICAgLy8gdGhlIGRlZmF1bHQgdmFsdWUgb2Ygb2JqZWN0cyBt
YW5hZ2VkIGJ5IHRocmVhZF9sb2NhbC4KLSAgICBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tl
cj4gdGhyZWFkX2xvY2FsOwotICAgIEFTU0VSVF9FUSgxVSwgZ19kZXN0cm95ZWQuc2l6ZSgpKTsK
LSAgICBBU1NFUlRfRkFMU0UoZ19kZXN0cm95ZWRbMF0pOwotCi0gICAgLy8gVGhpcyBjcmVhdGVz
IGFub3RoZXIgRGVzdHJ1Y3RvclRyYWNrZXIgb2JqZWN0IGluIHRoZSBuZXcgdGhyZWFkLgotICAg
IFRocmVhZFdpdGhQYXJhbTxUaHJlYWRQYXJhbT4gdGhyZWFkKAotICAgICAgICAmQ2FsbFRocmVh
ZExvY2FsR2V0LCAmdGhyZWFkX2xvY2FsLCBOVUxMKTsKLSAgICB0aHJlYWQuSm9pbigpOwotCi0g
ICAgLy8gTm93IHRoZSBuZXcgdGhyZWFkIGhhcyBleGl0ZWQuICBUaGUgcGVyLXRocmVhZCBvYmpl
Y3QgZm9yIGl0Ci0gICAgLy8gc2hvdWxkIGhhdmUgYmVlbiBkZXN0cm95ZWQuCi0gICAgQVNTRVJU
X0VRKDJVLCBnX2Rlc3Ryb3llZC5zaXplKCkpOwotICAgIEFTU0VSVF9GQUxTRShnX2Rlc3Ryb3ll
ZFswXSk7Ci0gICAgQVNTRVJUX1RSVUUoZ19kZXN0cm95ZWRbMV0pOwotICB9Ci0KLSAgLy8gTm93
IHRocmVhZF9sb2NhbCBoYXMgZGllZC4gIFRoZSBkZWZhdWx0IHZhbHVlIHNob3VsZCBoYXZlIGJl
ZW4KLSAgLy8gZGVzdHJveWVkIHRvby4KLSAgQVNTRVJUX0VRKDJVLCBnX2Rlc3Ryb3llZC5zaXpl
KCkpOwotICBFWFBFQ1RfVFJVRShnX2Rlc3Ryb3llZFswXSk7Ci0gIEVYUEVDVF9UUlVFKGdfZGVz
dHJveWVkWzFdKTsKLQotICBnX2Rlc3Ryb3llZC5jbGVhcigpOwotfQotCi1URVNUKFRocmVhZExv
Y2FsVGVzdCwgVGhyZWFkTG9jYWxNdXRhdGlvbnNBZmZlY3RPbmx5Q3VycmVudFRocmVhZCkgewot
ICBUaHJlYWRMb2NhbDxTdHJpbmc+IHRocmVhZF9sb2NhbDsKLSAgdGhyZWFkX2xvY2FsLnNldCgi
Rm9vIik7Ci0gIEVYUEVDVF9TVFJFUSgiRm9vIiwgdGhyZWFkX2xvY2FsLmdldCgpLmNfc3RyKCkp
OwotCi0gIFN0cmluZyByZXN1bHQ7Ci0gIFJ1bkZyb21UaHJlYWQoJlJldHJpZXZlVGhyZWFkTG9j
YWxWYWx1ZSwgbWFrZV9wYWlyKCZ0aHJlYWRfbG9jYWwsICZyZXN1bHQpKTsKLSAgRVhQRUNUX1RS
VUUocmVzdWx0LmNfc3RyKCkgPT0gTlVMTCk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSVNfVEhS
RUFEU0FGRQotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0
aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXRlc3Qt
cGFydF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10ZXN0LXBh
cnRfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEzZTkxOTZhYjk2ZTQx
M2ZlZjMzMDc1MjRiMThjOTJmNWVkYWRiMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXRlc3Qt
cGFydF90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMjA4ICswLDAgQEAKLS8vIENvcHlyaWdo
dCAyMDA4IEdvb2dsZSBJbmMuCi0vLyBBbGwgUmlnaHRzIFJlc2VydmVkLgotLy8KLS8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24u
Ci0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogbWhldWxlQGdv
b2dsZS5jb20gKE1hcmt1cyBIZXVsZSkKLS8vCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC10ZXN0
LXBhcnQuaD4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXVzaW5nIHRlc3Rpbmc6Ok1l
c3NhZ2U7Ci11c2luZyB0ZXN0aW5nOjpUZXN0OwotdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1
bHQ7Ci11c2luZyB0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdEFycmF5OwotCi1uYW1lc3BhY2Ugewot
Ci0vLyBUZXN0cyB0aGUgVGVzdFBhcnRSZXN1bHQgY2xhc3MuCi0KLS8vIFRoZSB0ZXN0IGZpeHR1
cmUgZm9yIHRlc3RpbmcgVGVzdFBhcnRSZXN1bHQuCi1jbGFzcyBUZXN0UGFydFJlc3VsdFRlc3Qg
OiBwdWJsaWMgVGVzdCB7Ci0gcHJvdGVjdGVkOgotICBUZXN0UGFydFJlc3VsdFRlc3QoKQotICAg
ICAgOiByMV8oVGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNzLCAiZm9vL2Jhci5jYyIsIDEwLCAiU3Vj
Y2VzcyEiKSwKLSAgICAgICAgcjJfKFRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlLCAi
Zm9vL2Jhci5jYyIsIC0xLCAiRmFpbHVyZSEiKSwKLSAgICAgICAgcjNfKFRlc3RQYXJ0UmVzdWx0
OjprRmF0YWxGYWlsdXJlLCBOVUxMLCAtMSwgIkZhaWx1cmUhIikge30KLQotICBUZXN0UGFydFJl
c3VsdCByMV8sIHIyXywgcjNfOwotfTsKLQotCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBD
b25zdHJ1Y3RvcldvcmtzKSB7Ci0gIE1lc3NhZ2UgbWVzc2FnZTsKLSAgbWVzc2FnZSA8PCAic29t
ZXRoaW5nIGlzIHRlcnJpYmx5IHdyb25nIjsKLSAgbWVzc2FnZSA8PCBzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4odGVzdGluZzo6aW50ZXJuYWw6OmtTdGFja1RyYWNlTWFya2VyKTsKLSAgbWVzc2Fn
ZSA8PCAic29tZSB1bmltcG9ydGFudCBzdGFjayB0cmFjZSI7Ci0KLSAgY29uc3QgVGVzdFBhcnRS
ZXN1bHQgcmVzdWx0KFRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInNvbWVfZmlsZS5jYyIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UuR2V0
U3RyaW5nKCkuY19zdHIoKSk7Ci0KLSAgRVhQRUNUX0VRKFRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0
YWxGYWlsdXJlLCByZXN1bHQudHlwZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCJzb21lX2ZpbGUuY2Mi
LCByZXN1bHQuZmlsZV9uYW1lKCkpOwotICBFWFBFQ1RfRVEoNDIsIHJlc3VsdC5saW5lX251bWJl
cigpKTsKLSAgRVhQRUNUX1NUUkVRKG1lc3NhZ2UuR2V0U3RyaW5nKCkuY19zdHIoKSwgcmVzdWx0
Lm1lc3NhZ2UoKSk7Ci0gIEVYUEVDVF9TVFJFUSgic29tZXRoaW5nIGlzIHRlcnJpYmx5IHdyb25n
IiwgcmVzdWx0LnN1bW1hcnkoKSk7Ci19Ci0KLVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIFJl
c3VsdEFjY2Vzc29yc1dvcmspIHsKLSAgY29uc3QgVGVzdFBhcnRSZXN1bHQgc3VjY2VzcyhUZXN0
UGFydFJlc3VsdDo6a1N1Y2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZp
bGUuY2MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIik7Ci0gIEVYUEVDVF9UUlVFKHN1Y2Nlc3MucGFz
c2VkKCkpOwotICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcy5mYWlsZWQoKSk7Ci0gIEVYUEVDVF9GQUxT
RShzdWNjZXNzLm5vbmZhdGFsbHlfZmFpbGVkKCkpOwotICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcy5m
YXRhbGx5X2ZhaWxlZCgpKTsKLQotICBjb25zdCBUZXN0UGFydFJlc3VsdCBub25mYXRhbF9mYWls
dXJlKFRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJmaWxlLmNjIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAibWVzc2FnZSIpOwotICBFWFBFQ1RfRkFMU0Uobm9uZmF0YWxfZmFpbHVyZS5wYXNzZWQo
KSk7Ci0gIEVYUEVDVF9UUlVFKG5vbmZhdGFsX2ZhaWx1cmUuZmFpbGVkKCkpOwotICBFWFBFQ1Rf
VFJVRShub25mYXRhbF9mYWlsdXJlLm5vbmZhdGFsbHlfZmFpbGVkKCkpOwotICBFWFBFQ1RfRkFM
U0Uobm9uZmF0YWxfZmFpbHVyZS5mYXRhbGx5X2ZhaWxlZCgpKTsKLQotICBjb25zdCBUZXN0UGFy
dFJlc3VsdCBmYXRhbF9mYWlsdXJlKFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlLmNjIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAibWVzc2FnZSIpOwotICBFWFBFQ1RfRkFMU0UoZmF0YWxfZmFpbHVyZS5wYXNz
ZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKGZhdGFsX2ZhaWx1cmUuZmFpbGVkKCkpOwotICBFWFBFQ1Rf
RkFMU0UoZmF0YWxfZmFpbHVyZS5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKLSAgRVhQRUNUX1RSVUUo
ZmF0YWxfZmFpbHVyZS5mYXRhbGx5X2ZhaWxlZCgpKTsKLX0KLQotLy8gVGVzdHMgVGVzdFBhcnRS
ZXN1bHQ6OnR5cGUoKS4KLVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIHR5cGUpIHsKLSAgRVhQ
RUNUX0VRKFRlc3RQYXJ0UmVzdWx0OjprU3VjY2VzcywgcjFfLnR5cGUoKSk7Ci0gIEVYUEVDVF9F
UShUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwgcjJfLnR5cGUoKSk7Ci0gIEVYUEVD
VF9FUShUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwgcjNfLnR5cGUoKSk7Ci19Ci0KLS8v
IFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpmaWxlX25hbWUoKS4KLVRFU1RfRihUZXN0UGFydFJlc3Vs
dFRlc3QsIGZpbGVfbmFtZSkgewotICBFWFBFQ1RfU1RSRVEoImZvby9iYXIuY2MiLCByMV8uZmls
ZV9uYW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoTlVMTCwgcjNfLmZpbGVfbmFtZSgpKTsKLX0KLQot
Ly8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6OmxpbmVfbnVtYmVyKCkuCi1URVNUX0YoVGVzdFBhcnRS
ZXN1bHRUZXN0LCBsaW5lX251bWJlcikgewotICBFWFBFQ1RfRVEoMTAsIHIxXy5saW5lX251bWJl
cigpKTsKLSAgRVhQRUNUX0VRKC0xLCByMl8ubGluZV9udW1iZXIoKSk7Ci19Ci0KLS8vIFRlc3Rz
IFRlc3RQYXJ0UmVzdWx0OjptZXNzYWdlKCkuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBt
ZXNzYWdlKSB7Ci0gIEVYUEVDVF9TVFJFUSgiU3VjY2VzcyEiLCByMV8ubWVzc2FnZSgpKTsKLX0K
LQotLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6OnBhc3NlZCgpLgotVEVTVF9GKFRlc3RQYXJ0UmVz
dWx0VGVzdCwgUGFzc2VkKSB7Ci0gIEVYUEVDVF9UUlVFKHIxXy5wYXNzZWQoKSk7Ci0gIEVYUEVD
VF9GQUxTRShyMl8ucGFzc2VkKCkpOwotICBFWFBFQ1RfRkFMU0UocjNfLnBhc3NlZCgpKTsKLX0K
LQotLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6OmZhaWxlZCgpLgotVEVTVF9GKFRlc3RQYXJ0UmVz
dWx0VGVzdCwgRmFpbGVkKSB7Ci0gIEVYUEVDVF9GQUxTRShyMV8uZmFpbGVkKCkpOwotICBFWFBF
Q1RfVFJVRShyMl8uZmFpbGVkKCkpOwotICBFWFBFQ1RfVFJVRShyM18uZmFpbGVkKCkpOwotfQot
Ci0vLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6ZmF0YWxseV9mYWlsZWQoKS4KLVRFU1RfRihUZXN0
UGFydFJlc3VsdFRlc3QsIEZhdGFsbHlGYWlsZWQpIHsKLSAgRVhQRUNUX0ZBTFNFKHIxXy5mYXRh
bGx5X2ZhaWxlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKHIyXy5mYXRhbGx5X2ZhaWxlZCgpKTsKLSAg
RVhQRUNUX1RSVUUocjNfLmZhdGFsbHlfZmFpbGVkKCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UGFy
dFJlc3VsdDo6bm9uZmF0YWxseV9mYWlsZWQoKS4KLVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3Qs
IE5vbmZhdGFsbHlGYWlsZWQpIHsKLSAgRVhQRUNUX0ZBTFNFKHIxXy5ub25mYXRhbGx5X2ZhaWxl
ZCgpKTsKLSAgRVhQRUNUX1RSVUUocjJfLm5vbmZhdGFsbHlfZmFpbGVkKCkpOwotICBFWFBFQ1Rf
RkFMU0UocjNfLm5vbmZhdGFsbHlfZmFpbGVkKCkpOwotfQotCi0vLyBUZXN0cyB0aGUgVGVzdFBh
cnRSZXN1bHRBcnJheSBjbGFzcy4KLQotY2xhc3MgVGVzdFBhcnRSZXN1bHRBcnJheVRlc3QgOiBw
dWJsaWMgVGVzdCB7Ci0gcHJvdGVjdGVkOgotICBUZXN0UGFydFJlc3VsdEFycmF5VGVzdCgpCi0g
ICAgICA6IHIxXyhUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwgImZvby9iYXIuY2Mi
LCAtMSwgIkZhaWx1cmUgMSIpLAotICAgICAgICByMl8oVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZh
aWx1cmUsICJmb28vYmFyLmNjIiwgLTEsICJGYWlsdXJlIDIiKSB7fQotCi0gIGNvbnN0IFRlc3RQ
YXJ0UmVzdWx0IHIxXywgcjJfOwotfTsKLQotLy8gVGVzdHMgdGhhdCBUZXN0UGFydFJlc3VsdEFy
cmF5IGluaXRpYWxseSBoYXMgc2l6ZSAwLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0
LCBJbml0aWFsU2l6ZUlzWmVybykgewotICBUZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7Ci0g
IEVYUEVDVF9FUSgwLCByZXN1bHRzLnNpemUoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVGVzdFBh
cnRSZXN1bHRBcnJheSBjb250YWlucyB0aGUgZ2l2ZW4gVGVzdFBhcnRSZXN1bHQKLS8vIGFmdGVy
IG9uZSBBcHBlbmQoKSBvcGVyYXRpb24uCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRBcnJheVRlc3Qs
IENvbnRhaW5zR2l2ZW5SZXN1bHRBZnRlckFwcGVuZCkgewotICBUZXN0UGFydFJlc3VsdEFycmF5
IHJlc3VsdHM7Ci0gIHJlc3VsdHMuQXBwZW5kKHIxXyk7Ci0gIEVYUEVDVF9FUSgxLCByZXN1bHRz
LnNpemUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiRmFpbHVyZSAxIiwgcmVzdWx0cy5HZXRUZXN0UGFy
dFJlc3VsdCgwKS5tZXNzYWdlKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFRlc3RQYXJ0UmVzdWx0
QXJyYXkgY29udGFpbnMgdGhlIGdpdmVuIFRlc3RQYXJ0UmVzdWx0cwotLy8gYWZ0ZXIgdHdvIEFw
cGVuZCgpIG9wZXJhdGlvbnMuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRBcnJheVRlc3QsIENvbnRh
aW5zR2l2ZW5SZXN1bHRzQWZ0ZXJUd29BcHBlbmRzKSB7Ci0gIFRlc3RQYXJ0UmVzdWx0QXJyYXkg
cmVzdWx0czsKLSAgcmVzdWx0cy5BcHBlbmQocjFfKTsKLSAgcmVzdWx0cy5BcHBlbmQocjJfKTsK
LSAgRVhQRUNUX0VRKDIsIHJlc3VsdHMuc2l6ZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCJGYWlsdXJl
IDEiLCByZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDApLm1lc3NhZ2UoKSk7Ci0gIEVYUEVDVF9T
VFJFUSgiRmFpbHVyZSAyIiwgcmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgxKS5tZXNzYWdlKCkp
OwotfQotCi10eXBlZGVmIFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0IFRlc3RQYXJ0UmVzdWx0QXJy
YXlEZWF0aFRlc3Q7Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIHByb2dyYW0gZGllcyB3aGVuIEdldFRl
c3RQYXJ0UmVzdWx0KCkgaXMgY2FsbGVkIHdpdGgKLS8vIGFuIGludmFsaWQgaW5kZXguCi1URVNU
X0YoVGVzdFBhcnRSZXN1bHRBcnJheURlYXRoVGVzdCwgRGllc1doZW5JbmRleElzT3V0T2ZCb3Vu
ZCkgewotICBUZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7Ci0gIHJlc3VsdHMuQXBwZW5kKHIx
Xyk7Ci0KLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChyZXN1bHRzLkdldFRlc3RQYXJ0UmVz
dWx0KC0xKSwgIiIpOwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHJlc3VsdHMuR2V0VGVz
dFBhcnRSZXN1bHQoMSksICIiKTsKLX0KLQotLy8gVE9ETyhtaGV1bGVAZ29vZ2xlLmNvbSk6IEFk
ZCBhIHRlc3QgZm9yIHRoZSBjbGFzcyBIYXNOZXdGYXRhbEZhaWx1cmVIZWxwZXIuCi0KLX0gIC8v
IG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dC10dXBsZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10dXBs
ZV90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzJmNzBiM2Q0ZTkwNzBm
NDU5Njg2MjViM2ZmOTdjMzk4NDc1N2Q3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHVwbGVf
dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDMyMCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAw
NywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNv
bSAoWmhhbnlvbmcgV2FuKQotCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUu
aD4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLW5hbWVz
cGFjZSB7Ci0KLXVzaW5nIDo6c3RkOjp0cjE6OmdldDsKLXVzaW5nIDo6c3RkOjp0cjE6Om1ha2Vf
dHVwbGU7Ci11c2luZyA6OnN0ZDo6dHIxOjp0dXBsZTsKLXVzaW5nIDo6c3RkOjp0cjE6OnR1cGxl
X2VsZW1lbnQ7Ci11c2luZyA6OnN0ZDo6dHIxOjp0dXBsZV9zaXplOwotdXNpbmcgOjp0ZXN0aW5n
OjpTdGF0aWNBc3NlcnRUeXBlRXE7Ci0KLS8vIFRlc3RzIHRoYXQgdHVwbGVfZWxlbWVudDxLLCB0
dXBsZTxUMCwgVDEsIC4uLiwgVE4+ID46OnR5cGUgcmV0dXJucyBUSy4KLVRFU1QodHVwbGVfZWxl
bWVudF9UZXN0LCBSZXR1cm5zRWxlbWVudFR5cGUpIHsKLSAgU3RhdGljQXNzZXJ0VHlwZUVxPGlu
dCwgdHVwbGVfZWxlbWVudDwwLCB0dXBsZTxpbnQsIGNoYXI+ID46OnR5cGU+KCk7Ci0gIFN0YXRp
Y0Fzc2VydFR5cGVFcTxpbnQmLCB0dXBsZV9lbGVtZW50PDEsIHR1cGxlPGRvdWJsZSwgaW50Jj4g
Pjo6dHlwZT4oKTsKLSAgU3RhdGljQXNzZXJ0VHlwZUVxPGJvb2wsIHR1cGxlX2VsZW1lbnQ8Miwg
dHVwbGU8ZG91YmxlLCBpbnQsIGJvb2w+ID46OnR5cGU+KCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
dHVwbGVfc2l6ZTxUPjo6dmFsdWUgZ2l2ZXMgdGhlIG51bWJlciBvZiBmaWVsZHMgaW4gdHVwbGUK
LS8vIHR5cGUgVC4KLVRFU1QodHVwbGVfc2l6ZV9UZXN0LCBSZXR1cm5zTnVtYmVyT2ZGaWVsZHMp
IHsKLSAgRVhQRUNUX0VRKDAsICt0dXBsZV9zaXplPHR1cGxlPD4gPjo6dmFsdWUpOwotICBFWFBF
Q1RfRVEoMSwgK3R1cGxlX3NpemU8dHVwbGU8dm9pZCo+ID46OnZhbHVlKTsKLSAgRVhQRUNUX0VR
KDEsICt0dXBsZV9zaXplPHR1cGxlPGNoYXI+ID46OnZhbHVlKTsKLSAgRVhQRUNUX0VRKDEsICso
dHVwbGVfc2l6ZTx0dXBsZTx0dXBsZTxpbnQsIGRvdWJsZT4gPiA+Ojp2YWx1ZSkpOwotICBFWFBF
Q1RfRVEoMiwgKyh0dXBsZV9zaXplPHR1cGxlPGludCYsIGNvbnN0IGNoYXI+ID46OnZhbHVlKSk7
Ci0gIEVYUEVDVF9FUSgzLCArKHR1cGxlX3NpemU8dHVwbGU8Y2hhciosIHZvaWQsIGNvbnN0IGJv
b2wmPiA+Ojp2YWx1ZSkpOwotfQotCi0vLyBUZXN0cyBjb21wYXJpbmcgYSB0dXBsZSB3aXRoIGl0
c2VsZi4KLVRFU1QoQ29tcGFyaXNvblRlc3QsIENvbXBhcmVzV2l0aFNlbGYpIHsKLSAgY29uc3Qg
dHVwbGU8aW50LCBjaGFyLCBib29sPiBhKDUsICdhJywgZmFsc2UpOwotCi0gIEVYUEVDVF9UUlVF
KGEgPT0gYSk7Ci0gIEVYUEVDVF9GQUxTRShhICE9IGEpOwotfQotCi0vLyBUZXN0cyBjb21wYXJp
bmcgdHdvIHR1cGxlcyB3aXRoIHRoZSBzYW1lIHZhbHVlLgotVEVTVChDb21wYXJpc29uVGVzdCwg
Q29tcGFyZXNFcXVhbFR1cGxlcykgewotICBjb25zdCB0dXBsZTxpbnQsIGJvb2w+IGEoNSwgdHJ1
ZSksIGIoNSwgdHJ1ZSk7Ci0KLSAgRVhQRUNUX1RSVUUoYSA9PSBiKTsKLSAgRVhQRUNUX0ZBTFNF
KGEgIT0gYik7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyB0d28gZGlmZmVyZW50IHR1cGxlcyB0
aGF0IGhhdmUgbm8gcmVmZXJlbmNlIGZpZWxkcy4KLVRFU1QoQ29tcGFyaXNvblRlc3QsIENvbXBh
cmVzVW5lcXVhbFR1cGxlc1dpdGhvdXRSZWZlcmVuY2VGaWVsZHMpIHsKLSAgdHlwZWRlZiB0dXBs
ZTxjb25zdCBpbnQsIGNoYXI+IEZvb1R1cGxlOwotCi0gIGNvbnN0IEZvb1R1cGxlIGEoMCwgJ3gn
KTsKLSAgY29uc3QgRm9vVHVwbGUgYigxLCAnYScpOwotCi0gIEVYUEVDVF9UUlVFKGEgIT0gYik7
Ci0gIEVYUEVDVF9GQUxTRShhID09IGIpOwotCi0gIGNvbnN0IEZvb1R1cGxlIGMoMSwgJ2InKTsK
LQotICBFWFBFQ1RfVFJVRShiICE9IGMpOwotICBFWFBFQ1RfRkFMU0UoYiA9PSBjKTsKLX0KLQot
Ly8gVGVzdHMgY29tcGFyaW5nIHR3byBkaWZmZXJlbnQgdHVwbGVzIHRoYXQgaGF2ZSByZWZlcmVu
Y2UgZmllbGRzLgotVEVTVChDb21wYXJpc29uVGVzdCwgQ29tcGFyZXNVbmVxdWFsVHVwbGVzV2l0
aFJlZmVyZW5jZUZpZWxkcykgewotICB0eXBlZGVmIHR1cGxlPGludCYsIGNvbnN0IGNoYXImPiBG
b29UdXBsZTsKLQotICBpbnQgaSA9IDU7Ci0gIGNvbnN0IGNoYXIgY2ggPSAnYSc7Ci0gIGNvbnN0
IEZvb1R1cGxlIGEoaSwgY2gpOwotCi0gIGludCBqID0gNjsKLSAgY29uc3QgRm9vVHVwbGUgYihq
LCBjaCk7Ci0KLSAgRVhQRUNUX1RSVUUoYSAhPSBiKTsKLSAgRVhQRUNUX0ZBTFNFKGEgPT0gYik7
Ci0KLSAgaiA9IDU7Ci0gIGNvbnN0IGNoYXIgY2gyID0gJ2InOwotICBjb25zdCBGb29UdXBsZSBj
KGosIGNoMik7Ci0KLSAgRVhQRUNUX1RSVUUoYiAhPSBjKTsKLSAgRVhQRUNUX0ZBTFNFKGIgPT0g
Yyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSB0dXBsZSBmaWVsZCB3aXRoIGEgcmVmZXJlbmNlIHR5
cGUgaXMgYW4gYWxpYXMgb2YgdGhlCi0vLyB2YXJpYWJsZSBpdCdzIHN1cHBvc2VkIHRvIHJlZmVy
ZW5jZS4KLVRFU1QoUmVmZXJlbmNlRmllbGRUZXN0LCBJc0FsaWFzT2ZSZWZlcmVuY2VkVmFyaWFi
bGUpIHsKLSAgaW50IG4gPSAwOwotICB0dXBsZTxib29sLCBpbnQmPiB0KHRydWUsIG4pOwotCi0g
IG4gPSAxOwotICBFWFBFQ1RfRVEobiwgZ2V0PDE+KHQpKQotICAgICAgPDwgIkNoYW5naW5nIGEg
dW5kZXJseWluZyB2YXJpYWJsZSBzaG91bGQgdXBkYXRlIHRoZSByZWZlcmVuY2UgZmllbGQuIjsK
LQotICAvLyBNYWtlcyBzdXJlIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgZG8gYW55
dGhpbmcgZnVubnkgd2l0aAotICAvLyB0aGUgJiBvcGVyYXRvciBmb3IgdGhlIHJldHVybiB0eXBl
IG9mIGdldDw+KCkuCi0gIEVYUEVDVF9FUSgmbiwgJihnZXQ8MT4odCkpKQotICAgICAgPDwgIlRo
ZSBhZGRyZXNzIG9mIGEgcmVmZXJlbmNlIGZpZWxkIHNob3VsZCBlcXVhbCB0aGUgYWRkcmVzcyBv
ZiAiCi0gICAgICA8PCAidGhlIHVuZGVybHlpbmcgdmFyaWFibGUuIjsKLQotICBnZXQ8MT4odCkg
PSAyOwotICBFWFBFQ1RfRVEoMiwgbikKLSAgICAgIDw8ICJDaGFuZ2luZyBhIHJlZmVyZW5jZSBm
aWVsZCBzaG91bGQgdXBkYXRlIHRoZSB1bmRlcmx5aW5nIHZhcmlhYmxlLiI7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgdHVwbGUncyBkZWZhdWx0IGNvbnN0cnVjdG9yIGRlZmF1bHQgaW5pdGlhbGl6ZXMg
ZWFjaCBmaWVsZC4KLS8vIFRoaXMgdGVzdCBuZWVkcyB0byBjb21waWxlIHdpdGhvdXQgZ2VuZXJh
dGluZyB3YXJuaW5ncy4KLVRFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3QsIERlZmF1bHRDb25zdHJ1
Y3RvckRlZmF1bHRJbml0aWFsaXplc0VhY2hGaWVsZCkgewotICAvLyBUaGUgVFIxIHJlcG9ydCBy
ZXF1aXJlcyB0aGF0IHR1cGxlJ3MgZGVmYXVsdCBjb25zdHJ1Y3RvciBkZWZhdWx0Ci0gIC8vIGlu
aXRpYWxpemVzIGVhY2ggZmllbGQsIGV2ZW4gaWYgaXQncyBhIHByaW1pdGl2ZSB0eXBlLiAgSWYg
dGhlCi0gIC8vIGltcGxlbWVudGF0aW9uIGZvcmdldHMgdG8gZG8gdGhpcywgdGhpcyB0ZXN0IHdp
bGwgY2F0Y2ggaXQgYnkKLSAgLy8gZ2VuZXJhdGluZyB3YXJuaW5ncyBhYm91dCB1c2luZyB1bmlu
aXRpYWxpemVkIHZhcmlhYmxlcyAoYXNzdW1pbmcKLSAgLy8gYSBkZWNlbnQgY29tcGlsZXIpLgot
Ci0gIHR1cGxlPD4gZW1wdHk7Ci0KLSAgdHVwbGU8aW50PiBhMSwgYjE7Ci0gIGIxID0gYTE7Ci0g
IEVYUEVDVF9FUSgwLCBnZXQ8MD4oYjEpKTsKLQotICB0dXBsZTxpbnQsIGRvdWJsZT4gYTIsIGIy
OwotICBiMiA9IGEyOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDA+KGIyKSk7Ci0gIEVYUEVDVF9FUSgw
LjAsIGdldDwxPihiMikpOwotCi0gIHR1cGxlPGRvdWJsZSwgY2hhciwgYm9vbCo+IGEzLCBiMzsK
LSAgYjMgPSBhMzsKLSAgRVhQRUNUX0VRKDAuMCwgZ2V0PDA+KGIzKSk7Ci0gIEVYUEVDVF9FUSgn
XDAnLCBnZXQ8MT4oYjMpKTsKLSAgRVhQRUNUX1RSVUUoZ2V0PDI+KGIzKSA9PSBOVUxMKTsKLQot
ICB0dXBsZTxpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQ+
IGExMCwgYjEwOwotICBiMTAgPSBhMTA7Ci0gIEVYUEVDVF9FUSgwLCBnZXQ8MD4oYjEwKSk7Ci0g
IEVYUEVDVF9FUSgwLCBnZXQ8MT4oYjEwKSk7Ci0gIEVYUEVDVF9FUSgwLCBnZXQ8Mj4oYjEwKSk7
Ci0gIEVYUEVDVF9FUSgwLCBnZXQ8Mz4oYjEwKSk7Ci0gIEVYUEVDVF9FUSgwLCBnZXQ8ND4oYjEw
KSk7Ci0gIEVYUEVDVF9FUSgwLCBnZXQ8NT4oYjEwKSk7Ci0gIEVYUEVDVF9FUSgwLCBnZXQ8Nj4o
YjEwKSk7Ci0gIEVYUEVDVF9FUSgwLCBnZXQ8Nz4oYjEwKSk7Ci0gIEVYUEVDVF9FUSgwLCBnZXQ8
OD4oYjEwKSk7Ci0gIEVYUEVDVF9FUSgwLCBnZXQ8OT4oYjEwKSk7Ci19Ci0KLS8vIFRlc3RzIGNv
bnN0cnVjdGluZyBhIHR1cGxlIGZyb20gaXRzIGZpZWxkcy4KLVRFU1QoVHVwbGVDb25zdHJ1Y3Rv
clRlc3QsIENvbnN0cnVjdHNGcm9tRmllbGRzKSB7Ci0gIGludCBuID0gMTsKLSAgLy8gUmVmZXJl
bmNlIGZpZWxkLgotICB0dXBsZTxpbnQmPiBhKG4pOwotICBFWFBFQ1RfRVEoJm4sICYoZ2V0PDA+
KGEpKSk7Ci0KLSAgLy8gTm9uLXJlZmVyZW5jZSBmaWVsZHMuCi0gIHR1cGxlPGludCwgY2hhcj4g
Yig1LCAnYScpOwotICBFWFBFQ1RfRVEoNSwgZ2V0PDA+KGIpKTsKLSAgRVhQRUNUX0VRKCdhJywg
Z2V0PDE+KGIpKTsKLQotICAvLyBDb25zdCByZWZlcmVuY2UgZmllbGQuCi0gIGNvbnN0IGludCBt
ID0gMjsKLSAgdHVwbGU8Ym9vbCwgY29uc3QgaW50Jj4gYyh0cnVlLCBtKTsKLSAgRVhQRUNUX1RS
VUUoZ2V0PDA+KGMpKTsKLSAgRVhQRUNUX0VRKCZtLCAmKGdldDwxPihjKSkpOwotfQotCi0vLyBU
ZXN0cyB0dXBsZSdzIGNvcHkgY29uc3RydWN0b3IuCi1URVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0
LCBDb3B5Q29uc3RydWN0b3IpIHsKLSAgdHVwbGU8ZG91YmxlLCBib29sPiBhKDAuMCwgdHJ1ZSk7
Ci0gIHR1cGxlPGRvdWJsZSwgYm9vbD4gYihhKTsKLQotICBFWFBFQ1RfRE9VQkxFX0VRKDAuMCwg
Z2V0PDA+KGIpKTsKLSAgRVhQRUNUX1RSVUUoZ2V0PDE+KGIpKTsKLX0KLQotLy8gVGVzdHMgY29u
c3RydWN0aW5nIGEgdHVwbGUgZnJvbSBhbm90aGVyIHR1cGxlIHRoYXQgaGFzIGEgY29tcGF0aWJs
ZQotLy8gYnV0IGRpZmZlcmVudCB0eXBlLgotVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgQ29u
c3RydWN0c0Zyb21EaWZmZXJlbnRUdXBsZVR5cGUpIHsKLSAgdHVwbGU8aW50LCBpbnQsIGNoYXI+
IGEoMCwgMSwgJ2EnKTsKLSAgdHVwbGU8ZG91YmxlLCBsb25nLCBpbnQ+IGIoYSk7Ci0KLSAgRVhQ
RUNUX0RPVUJMRV9FUSgwLjAsIGdldDwwPihiKSk7Ci0gIEVYUEVDVF9FUSgxLCBnZXQ8MT4oYikp
OwotICBFWFBFQ1RfRVEoJ2EnLCBnZXQ8Mj4oYikpOwotfQotCi0vLyBUZXN0cyBjb25zdHJ1Y3Rp
bmcgYSAyLXR1cGxlIGZyb20gYW4gc3RkOjpwYWlyLgotVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVz
dCwgQ29uc3RydWN0c0Zyb21QYWlyKSB7Ci0gIDo6c3RkOjpwYWlyPGludCwgY2hhcj4gYSgxLCAn
YScpOwotICB0dXBsZTxpbnQsIGNoYXI+IGIoYSk7Ci0gIHR1cGxlPGludCwgY29uc3QgY2hhciY+
IGMoYSk7Ci19Ci0KLS8vIFRlc3RzIGFzc2lnbmluZyBhIHR1cGxlIHRvIGFub3RoZXIgdHVwbGUg
d2l0aCB0aGUgc2FtZSB0eXBlLgotVEVTVChUdXBsZUFzc2lnbm1lbnRUZXN0LCBBc3NpZ25zVG9T
YW1lVHVwbGVUeXBlKSB7Ci0gIGNvbnN0IHR1cGxlPGludCwgbG9uZz4gYSg1LCA3TCk7Ci0gIHR1
cGxlPGludCwgbG9uZz4gYjsKLSAgYiA9IGE7Ci0gIEVYUEVDVF9FUSg1LCBnZXQ8MD4oYikpOwot
ICBFWFBFQ1RfRVEoN0wsIGdldDwxPihiKSk7Ci19Ci0KLS8vIFRlc3RzIGFzc2lnbmluZyBhIHR1
cGxlIHRvIGFub3RoZXIgdHVwbGUgd2l0aCBhIGRpZmZlcmVudCBidXQKLS8vIGNvbXBhdGlibGUg
dHlwZS4KLVRFU1QoVHVwbGVBc3NpZ25tZW50VGVzdCwgQXNzaWduc1RvRGlmZmVyZW50VHVwbGVU
eXBlKSB7Ci0gIGNvbnN0IHR1cGxlPGludCwgbG9uZywgYm9vbD4gYSgxLCA3TCwgdHJ1ZSk7Ci0g
IHR1cGxlPGxvbmcsIGludCwgYm9vbD4gYjsKLSAgYiA9IGE7Ci0gIEVYUEVDVF9FUSgxTCwgZ2V0
PDA+KGIpKTsKLSAgRVhQRUNUX0VRKDcsIGdldDwxPihiKSk7Ci0gIEVYUEVDVF9UUlVFKGdldDwy
PihiKSk7Ci19Ci0KLS8vIFRlc3RzIGFzc2lnbmluZyBhbiBzdGQ6OnBhaXIgdG8gYSAyLXR1cGxl
LgotVEVTVChUdXBsZUFzc2lnbm1lbnRUZXN0LCBBc3NpZ25zRnJvbVBhaXIpIHsKLSAgY29uc3Qg
OjpzdGQ6OnBhaXI8aW50LCBib29sPiBhKDUsIHRydWUpOwotICB0dXBsZTxpbnQsIGJvb2w+IGI7
Ci0gIGIgPSBhOwotICBFWFBFQ1RfRVEoNSwgZ2V0PDA+KGIpKTsKLSAgRVhQRUNUX1RSVUUoZ2V0
PDE+KGIpKTsKLQotICB0dXBsZTxsb25nLCBib29sPiBjOwotICBjID0gYTsKLSAgRVhQRUNUX0VR
KDVMLCBnZXQ8MD4oYykpOwotICBFWFBFQ1RfVFJVRShnZXQ8MT4oYykpOwotfQotCi0vLyBBIGZp
eHR1cmUgZm9yIHRlc3RpbmcgYmlnIHR1cGxlcy4KLWNsYXNzIEJpZ1R1cGxlVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHR5cGVkZWYgdHVwbGU8aW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50PiBCaWdUdXBsZTsKLQotICBC
aWdUdXBsZVRlc3QoKSA6Ci0gICAgICBhXygxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyKSwK
LSAgICAgIGJfKDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMpIHt9Ci0KLSAgQmlnVHVwbGUg
YV8sIGJfOwotfTsKLQotLy8gVGVzdHMgY29uc3RydWN0aW5nIGJpZyB0dXBsZXMuCi1URVNUX0Yo
QmlnVHVwbGVUZXN0LCBDb25zdHJ1Y3Rpb24pIHsKLSAgQmlnVHVwbGUgYTsKLSAgQmlnVHVwbGUg
YihiXyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgZ2V0PE4+KHQpIHJldHVybnMgdGhlIE4tdGggKDAt
YmFzZWQpIGZpZWxkIG9mIHR1cGxlIHQuCi1URVNUX0YoQmlnVHVwbGVUZXN0LCBnZXQpIHsKLSAg
RVhQRUNUX0VRKDEsIGdldDwwPihhXykpOwotICBFWFBFQ1RfRVEoMiwgZ2V0PDk+KGFfKSk7Ci0K
LSAgLy8gVGVzdHMgdGhhdCBnZXQoKSB3b3JrcyBvbiBhIGNvbnN0IHR1cGxlIHRvby4KLSAgY29u
c3QgQmlnVHVwbGUgYShhXyk7Ci0gIEVYUEVDVF9FUSgxLCBnZXQ8MD4oYSkpOwotICBFWFBFQ1Rf
RVEoMiwgZ2V0PDk+KGEpKTsKLX0KLQotLy8gVGVzdHMgY29tcGFyaW5nIGJpZyB0dXBsZXMuCi1U
RVNUX0YoQmlnVHVwbGVUZXN0LCBDb21wYXJpc29ucykgewotICBFWFBFQ1RfVFJVRShhXyA9PSBh
Xyk7Ci0gIEVYUEVDVF9GQUxTRShhXyAhPSBhXyk7Ci0KLSAgRVhQRUNUX1RSVUUoYV8gIT0gYl8p
OwotICBFWFBFQ1RfRkFMU0UoYV8gPT0gYl8pOwotfQotCi1URVNUKE1ha2VUdXBsZVRlc3QsIFdv
cmtzRm9yU2NhbGFyVHlwZXMpIHsKLSAgdHVwbGU8Ym9vbCwgaW50PiBhOwotICBhID0gbWFrZV90
dXBsZSh0cnVlLCA1KTsKLSAgRVhQRUNUX1RSVUUoZ2V0PDA+KGEpKTsKLSAgRVhQRUNUX0VRKDUs
IGdldDwxPihhKSk7Ci0KLSAgdHVwbGU8Y2hhciwgaW50LCBsb25nPiBiOwotICBiID0gbWFrZV90
dXBsZSgnYScsICdiJywgNSk7Ci0gIEVYUEVDVF9FUSgnYScsIGdldDwwPihiKSk7Ci0gIEVYUEVD
VF9FUSgnYicsIGdldDwxPihiKSk7Ci0gIEVYUEVDVF9FUSg1LCBnZXQ8Mj4oYikpOwotfQotCi1U
RVNUKE1ha2VUdXBsZVRlc3QsIFdvcmtzRm9yUG9pbnRlcnMpIHsKLSAgaW50IGFbXSA9IHsgMSwg
MiwgMywgNCB9OwotICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAiaGkiOwotICBpbnQqIGNvbnN0
IHAgPSBhOwotCi0gIHR1cGxlPGNvbnN0IGNoYXIqLCBpbnQqPiB0OwotICB0ID0gbWFrZV90dXBs
ZShzdHIsIHApOwotICBFWFBFQ1RfRVEoc3RyLCBnZXQ8MD4odCkpOwotICBFWFBFQ1RfRVEocCwg
Z2V0PDE+KHQpKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MKaW5kZXggNzlhOGE4
N2RjZmRiZGU1M2MxZTBkOGM2ZDExYTk4NjkyMmIwMmZmOC4uZWQ5NjQyMWM2N2NhOGEyZmIzOGYz
ZDg4OTYwMjMxZWYyMmJlYTZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdC10eXBlZC10ZXN0Ml90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYwpAQCAtMjYsMTMgKzI2LDEyIEBACiAv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0
aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCiAKICNpbmNsdWRlIDx2ZWN0b3I+
CiAKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oIgotI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2lmIEdURVNUX0hBU19U
WVBFRF9URVNUX1AKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYwppbmRleCBmMmMzOTcyMzEwMTc3OWU3NzE4NDdkNTkyZDlm
YWJiNTZmM2I0NWM2Li5jMzhiYjk0YTI5MGQ5MTQwMzIyOTExOWUzMGI5ZmRjNTU4OTZhNGVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3Rf
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRl
c3RfdGVzdC5jYwpAQCAtMjYsMTQgKzI2LDE4IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhh
bnlvbmcgV2FuKQorCisKKyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oIgog
CiAjaW5jbHVkZSA8c2V0PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgInRlc3QvZ3Rl
c3QtdHlwZWQtdGVzdF90ZXN0LmgiCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgorCisjaWYgX01TQ19WRVIKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5J
TkdTX1BVU0hfKDQxMjcgLyogY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudCAqLykK
KyNlbmRpZiAgLy8gIF9NU0NfVkVSCiAKIHVzaW5nIHRlc3Rpbmc6OlRlc3Q7CiAKQEAgLTE2NSw2
ICsxNjksNDAgQEAgVFlQRURfVEVTVChOdW1lcmljVGVzdCwgRGVmYXVsdElzWmVybykgewogCiB9
ICAvLyBuYW1lc3BhY2UgbGlicmFyeTEKIAorLy8gVGVzdHMgdGhhdCBjdXN0b20gbmFtZXMgd29y
ay4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZWRUZXN0V2l0aE5hbWVzIDogcHVi
bGljIFRlc3Qge307CisKK2NsYXNzIFR5cGVkVGVzdE5hbWVzIHsKKyBwdWJsaWM6CisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICBzdGF0aWMgc3RkOjpzdHJpbmcgR2V0TmFtZShpbnQgaSkgewor
ICAgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFQsIGNoYXI+Ojp2YWx1ZSkgeworICAg
ICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCJjaGFyXyIpICsgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5n
KGkpOworICAgIH0KKyAgICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxULCBpbnQ+Ojp2
YWx1ZSkgeworICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCJpbnRfIikgKyA6OnRlc3Rpbmc6OlBy
aW50VG9TdHJpbmcoaSk7CisgICAgfQorICB9Cit9OworCitUWVBFRF9URVNUX0NBU0UoVHlwZWRU
ZXN0V2l0aE5hbWVzLCBUd29UeXBlcywgVHlwZWRUZXN0TmFtZXMpOworCitUWVBFRF9URVNUKFR5
cGVkVGVzdFdpdGhOYW1lcywgVGVzdENhc2VOYW1lKSB7CisgIGlmICh0ZXN0aW5nOjppbnRlcm5h
bDo6SXNTYW1lPFR5cGVQYXJhbSwgY2hhcj46OnZhbHVlKSB7CisgICAgRVhQRUNUX1NUUkVRKDo6
dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCkKKyAgICAgICAgICAgICAgICAgICAgIC0+
Y3VycmVudF90ZXN0X2luZm8oKQorICAgICAgICAgICAgICAgICAgICAgLT50ZXN0X2Nhc2VfbmFt
ZSgpLAorICAgICAgICAgICAgICAgICAiVHlwZWRUZXN0V2l0aE5hbWVzL2NoYXJfMCIpOworICB9
CisgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFR5cGVQYXJhbSwgaW50Pjo6dmFsdWUp
IHsKKyAgICBFWFBFQ1RfU1RSRVEoOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKQor
ICAgICAgICAgICAgICAgICAgICAgLT5jdXJyZW50X3Rlc3RfaW5mbygpCisgICAgICAgICAgICAg
ICAgICAgICAtPnRlc3RfY2FzZV9uYW1lKCksCisgICAgICAgICAgICAgICAgICJUeXBlZFRlc3RX
aXRoTmFtZXMvaW50XzEiKTsKKyAgfQorfQorCiAjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9U
RVNUCiAKIC8vIFRoaXMgI2lmZGVmIGJsb2NrIHRlc3RzIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0
cy4KQEAgLTI2NSw2ICszMDMsNDYgQEAgUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoRGVyaXZl
ZFRlc3QsCiB0eXBlZGVmIFR5cGVzPHNob3J0LCBsb25nPiBNeVR3b1R5cGVzOwogSU5TVEFOVElB
VEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIERlcml2ZWRUZXN0LCBNeVR3b1R5cGVzKTsKIAorLy8g
VGVzdHMgdGhhdCBjdXN0b20gbmFtZXMgd29yayB3aXRoIHR5cGUgcGFyYW1ldHJpemVkIHRlc3Rz
LiBXZSByZXVzZSB0aGUKKy8vIFR3b1R5cGVzIGZyb20gYWJvdmUgaGVyZS4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorY2xhc3MgVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRoTmFtZXMgOiBwdWJsaWMg
VGVzdCB7fTsKKworVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRoTmFt
ZXMpOworCitUWVBFRF9URVNUX1AoVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRoTmFtZXMsIFRlc3RD
YXNlTmFtZSkgeworICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxUeXBlUGFyYW0sIGNo
YXI+Ojp2YWx1ZSkgeworICAgIEVYUEVDVF9TVFJFUSg6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpCisgICAgICAgICAgICAgICAgICAgICAtPmN1cnJlbnRfdGVzdF9pbmZvKCkKKyAg
ICAgICAgICAgICAgICAgICAgIC0+dGVzdF9jYXNlX25hbWUoKSwKKyAgICAgICAgICAgICAgICAg
IkN1c3RvbU5hbWUvVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRoTmFtZXMvcF9jaGFyXzAiKTsKKyAg
fQorICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxUeXBlUGFyYW0sIGludD46OnZhbHVl
KSB7CisgICAgRVhQRUNUX1NUUkVRKDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCkK
KyAgICAgICAgICAgICAgICAgICAgIC0+Y3VycmVudF90ZXN0X2luZm8oKQorICAgICAgICAgICAg
ICAgICAgICAgLT50ZXN0X2Nhc2VfbmFtZSgpLAorICAgICAgICAgICAgICAgICAiQ3VzdG9tTmFt
ZS9UeXBlUGFyYW1ldHJpemVkVGVzdFdpdGhOYW1lcy9wX2ludF8xIik7CisgIH0KK30KKworUkVH
SVNURVJfVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRoTmFtZXMsIFRl
c3RDYXNlTmFtZSk7CisKK2NsYXNzIFR5cGVQYXJhbWV0cml6ZWRUZXN0TmFtZXMgeworIHB1Ymxp
YzoKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBHZXROYW1l
KGludCBpKSB7CisgICAgaWYgKHRlc3Rpbmc6OmludGVybmFsOjpJc1NhbWU8VCwgY2hhcj46OnZh
bHVlKSB7CisgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoInBfY2hhcl8iKSArIDo6dGVzdGluZzo6
UHJpbnRUb1N0cmluZyhpKTsKKyAgICB9CisgICAgaWYgKHRlc3Rpbmc6OmludGVybmFsOjpJc1Nh
bWU8VCwgaW50Pjo6dmFsdWUpIHsKKyAgICAgIHJldHVybiBzdGQ6OnN0cmluZygicF9pbnRfIikg
KyA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoaSk7CisgICAgfQorICB9Cit9OworCitJTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChDdXN0b21OYW1lLCBUeXBlUGFyYW1ldHJpemVkVGVzdFdp
dGhOYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR3b1R5cGVzLCBUeXBlUGFy
YW1ldHJpemVkVGVzdE5hbWVzKTsKKwogLy8gVGVzdHMgdGhhdCBtdWx0aXBsZSBUWVBFRF9URVNU
X0NBU0VfUCdzIGNhbiBiZSBkZWZpbmVkIGluIHRoZSBzYW1lCiAvLyB0cmFuc2xhdGlvbiB1bml0
LgogCkBAIC0zNDMsNiArNDIxLDI1IEBAIFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKE51bWVy
aWNUZXN0LAogdHlwZWRlZiBUeXBlczxpbnQsIGRvdWJsZT4gTnVtZXJpY1R5cGVzOwogSU5TVEFO
VElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIE51bWVyaWNUZXN0LCBOdW1lcmljVHlwZXMpOwog
CitzdGF0aWMgY29uc3QgY2hhciogR2V0VGVzdE5hbWUoKSB7CisgIHJldHVybiB0ZXN0aW5nOjpV
bml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKS0+bmFtZSgpOworfQor
Ly8gVGVzdCB0aGUgc3RyaXBwaW5nIG9mIHNwYWNlIGZyb20gdGVzdCBuYW1lcwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGNsYXNzIFRyaW1tZWRUZXN0IDogcHVibGljIFRlc3QgeyB9OworVFlQRURf
VEVTVF9DQVNFX1AoVHJpbW1lZFRlc3QpOworVFlQRURfVEVTVF9QKFRyaW1tZWRUZXN0LCBUZXN0
MSkgeyBFWFBFQ1RfU1RSRVEoIlRlc3QxIiwgR2V0VGVzdE5hbWUoKSk7IH0KK1RZUEVEX1RFU1Rf
UChUcmltbWVkVGVzdCwgVGVzdDIpIHsgRVhQRUNUX1NUUkVRKCJUZXN0MiIsIEdldFRlc3ROYW1l
KCkpOyB9CitUWVBFRF9URVNUX1AoVHJpbW1lZFRlc3QsIFRlc3QzKSB7IEVYUEVDVF9TVFJFUSgi
VGVzdDMiLCBHZXRUZXN0TmFtZSgpKTsgfQorVFlQRURfVEVTVF9QKFRyaW1tZWRUZXN0LCBUZXN0
NCkgeyBFWFBFQ1RfU1RSRVEoIlRlc3Q0IiwgR2V0VGVzdE5hbWUoKSk7IH0KK1RZUEVEX1RFU1Rf
UChUcmltbWVkVGVzdCwgVGVzdDUpIHsgRVhQRUNUX1NUUkVRKCJUZXN0NSIsIEdldFRlc3ROYW1l
KCkpOyB9CitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUCgKKyAgICBUcmltbWVkVGVzdCwKKyAg
ICBUZXN0MSwgVGVzdDIsVGVzdDMgLCBUZXN0NCAsVGVzdDUgKTsgIC8vIE5PTElOVAordGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4gc3RydWN0IE15UGFpciB7fTsKKy8vIEJlIHN1
cmUgdG8gdHJ5IGEgdHlwZSB3aXRoIGEgY29tbWEgaW4gaXRzIG5hbWUganVzdCBpbiBjYXNlIGl0
IG1hdHRlcnMuCit0eXBlZGVmIFR5cGVzPGludCwgZG91YmxlLCBNeVBhaXI8aW50LCBpbnQ+ID4g
VHJpbVR5cGVzOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIFRyaW1tZWRUZXN0
LCBUcmltVHlwZXMpOworCiB9ICAvLyBuYW1lc3BhY2UgbGlicmFyeTIKIAogI2VuZGlmICAvLyBH
VEVTVF9IQVNfVFlQRURfVEVTVF9QCkBAIC0zNTcsNCArNDU0LDggQEAgSU5TVEFOVElBVEVfVFlQ
RURfVEVTVF9DQVNFX1AoTXksIE51bWVyaWNUZXN0LCBOdW1lcmljVHlwZXMpOwogLy8gbXVzdCBi
ZSBkZWZpbmVkKS4gVGhpcyBkdW1teSB0ZXN0IGtlZXBzIGd0ZXN0X21haW4gbGlua2VkIGluLgog
VEVTVChEdW1teVRlc3QsIFR5cGVkVGVzdHNBcmVOb3RTdXBwb3J0ZWRPblRoaXNQbGF0Zm9ybSkg
e30KIAorI2lmIF9NU0NfVkVSCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkgIC8v
ICA0MTI3CisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICBfTVNDX1ZFUgor
CiAjZW5kaWYgIC8vICNpZiAhZGVmaW5lZChHVEVTVF9IQVNfVFlQRURfVEVTVCkgJiYgIWRlZmlu
ZWQoR1RFU1RfSEFTX1RZUEVEX1RFU1RfUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oCmluZGV4IDQwZGZlYWM2ZTAxZDk3ZWNm
N2ZlYmI4NjVmY2U2Njg0OGJhOGU4ZGIuLjJjY2U2N2M4MjVhNmNhYmRiOWE1NGI5MTkyOWMwMGM5
OTJhMGQ0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Qt
dHlwZWQtdGVzdF90ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dC10eXBlZC10ZXN0X3Rlc3QuaApAQCAtMjYsMTMgKzI2LDEyIEBACiAvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQorCiAKICNpZm5kZWYgR1RFU1RfVEVTVF9HVEVTVF9UWVBFRF9U
RVNUX1RFU1RfSF8KICNkZWZpbmUgR1RFU1RfVEVTVF9HVEVTVF9UWVBFRF9URVNUX1RFU1RfSF8K
IAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAog
I2lmIEdURVNUX0hBU19UWVBFRF9URVNUX1AKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2MKaW5kZXggN2UwZjhmODA0
NWQ3MWMwMTVkMTI5NGZmZWY0Y2E1NDVkZGM1NTFmOS4uZjNlYTAzYTU5NmQwZjk5YTM5MTI1MjYz
MGRjYTEwNjIyOTMxMTJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjCkBAIC0yNSwxNSArMjUsMTQgQEAKIC8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwogLy8KLS8vIEF1
dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCi0vLyBUaGUgR29vZ2xlIEMr
KyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0
aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBmaWxl
IGNvbnRhaW5zIHRlc3RzIHZlcmlmeWluZyBjb3JyZWN0bmVzcyBvZiBkYXRhIHByb3ZpZGVkIHZp
YQogLy8gVW5pdFRlc3QncyBwdWJsaWMgbWV0aG9kcy4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2luY2x1ZGUgPHN0cmluZy5oPiAgLy8g
Rm9yIHN0cmNtcC4KICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC01NCw3ICs1Myw3IEBAIGNsYXNz
IFVuaXRUZXN0SGVscGVyIHsKICBwdWJsaWM6CiAgIC8vIFJldHVybnMgdGhlIGFycmF5IG9mIHBv
aW50ZXJzIHRvIGFsbCB0ZXN0IGNhc2VzIHNvcnRlZCBieSB0aGUgdGVzdCBjYXNlCiAgIC8vIG5h
bWUuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUgYXJyYXkuCi0g
IHN0YXRpYyBUZXN0Q2FzZSBjb25zdCoqIGNvbnN0IEdldFNvcnRlZFRlc3RDYXNlcygpIHsKKyAg
c3RhdGljIFRlc3RDYXNlIGNvbnN0KiogR2V0U29ydGVkVGVzdENhc2VzKCkgewogICAgIFVuaXRU
ZXN0JiB1bml0X3Rlc3QgPSAqVW5pdFRlc3Q6OkdldEluc3RhbmNlKCk7CiAgICAgVGVzdENhc2Ug
Y29uc3QqKiBjb25zdCB0ZXN0X2Nhc2VzID0KICAgICAgICAgbmV3IGNvbnN0IFRlc3RDYXNlKlt1
bml0X3Rlc3QudG90YWxfdGVzdF9jYXNlX2NvdW50KCldOwpAQCAtODMsNyArODIsNyBAQCBjbGFz
cyBVbml0VGVzdEhlbHBlciB7CiAgIC8vIFJldHVybnMgdGhlIGFycmF5IG9mIHBvaW50ZXJzIHRv
IGFsbCB0ZXN0cyBpbiBhIHBhcnRpY3VsYXIgdGVzdCBjYXNlCiAgIC8vIHNvcnRlZCBieSB0aGUg
dGVzdCBuYW1lLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgdGhlCiAg
IC8vIGFycmF5LgotICBzdGF0aWMgVGVzdEluZm8gY29uc3QqKiBjb25zdCBHZXRTb3J0ZWRUZXN0
cyhjb25zdCBUZXN0Q2FzZSogdGVzdF9jYXNlKSB7CisgIHN0YXRpYyBUZXN0SW5mbyBjb25zdCoq
IEdldFNvcnRlZFRlc3RzKGNvbnN0IFRlc3RDYXNlKiB0ZXN0X2Nhc2UpIHsKICAgICBUZXN0SW5m
byBjb25zdCoqIGNvbnN0IHRlc3RzID0KICAgICAgICAgbmV3IGNvbnN0IFRlc3RJbmZvKlt0ZXN0
X2Nhc2UtPnRvdGFsX3Rlc3RfY291bnQoKV07CiAKQEAgLTEwMywxMiArMTAyLDYgQEAgVFlQRURf
VEVTVChUZXN0Q2FzZVdpdGhDb21tZW50VGVzdCwgRHVtbXkpIHt9CiAKIGNvbnN0IGludCBrVHlw
ZWRUZXN0Q2FzZXMgPSAxOwogY29uc3QgaW50IGtUeXBlZFRlc3RzID0gMTsKLQotU3RyaW5nIEdl
dEV4cGVjdGVkVGVzdENhc2VDb21tZW50KCkgewotICBNZXNzYWdlIGNvbW1lbnQ7Ci0gIGNvbW1l
bnQgPDwgIlR5cGVQYXJhbSA9ICIgPDwgR2V0VHlwZU5hbWU8aW50PigpLmNfc3RyKCk7Ci0gIHJl
dHVybiBjb21tZW50LkdldFN0cmluZygpOwotfQogI2Vsc2UKIGNvbnN0IGludCBrVHlwZWRUZXN0
Q2FzZXMgPSAwOwogY29uc3QgaW50IGtUeXBlZFRlc3RzID0gMDsKQEAgLTE0MywxMiArMTM2LDE5
IEBAIFRFU1QoQXBpVGVzdCwgVW5pdFRlc3RJbW11dGFibGVBY2Nlc3NvcnNXb3JrKSB7CiAgIFJl
Y29yZFByb3BlcnR5KCJrZXkiLCAidmFsdWUiKTsKIH0KIAorQXNzZXJ0aW9uUmVzdWx0IElzTnVs
bChjb25zdCBjaGFyKiBzdHIpIHsKKyAgaWYgKHN0ciAhPSBOVUxMKSB7CisgICAgcmV0dXJuIHRl
c3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCAiYXJndW1lbnQgaXMgIiA8PCBzdHI7CisgIH0K
KyAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKK30KKwogVEVTVChBcGlUZXN0LCBUZXN0Q2Fz
ZUltbXV0YWJsZUFjY2Vzc29yc1dvcmspIHsKICAgY29uc3QgVGVzdENhc2UqIHRlc3RfY2FzZSA9
IFVuaXRUZXN0SGVscGVyOjpGaW5kVGVzdENhc2UoIkFwaVRlc3QiKTsKICAgQVNTRVJUX1RSVUUo
dGVzdF9jYXNlICE9IE5VTEwpOwogCiAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RfY2Fz
ZS0+bmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0X2Nhc2UtPmNvbW1lbnQoKSk7Cisg
IEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0X2Nhc2UtPnR5cGVfcGFyYW0oKSkpOwogICBFWFBFQ1Rf
VFJVRSh0ZXN0X2Nhc2UtPnNob3VsZF9ydW4oKSk7CiAgIEVYUEVDVF9FUSgxLCB0ZXN0X2Nhc2Ut
PmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgIEVYUEVDVF9FUSgzLCB0ZXN0X2Nhc2UtPnRlc3Rf
dG9fcnVuX2NvdW50KCkpOwpAQCAtMTU4LDI2ICsxNTgsMjYgQEAgVEVTVChBcGlUZXN0LCBUZXN0
Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dvcmspIHsKIAogICBFWFBFQ1RfU1RSRVEoIkRJU0FCTEVE
X0R1bW15MSIsIHRlc3RzWzBdLT5uYW1lKCkpOwogICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0
ZXN0c1swXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMF0t
PmNvbW1lbnQoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMF0tPnRlc3RfY2FzZV9jb21t
ZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMF0tPnZhbHVlX3BhcmFtKCkpKTsK
KyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzBdLT50eXBlX3BhcmFtKCkpKTsKICAgRVhQRUNU
X0ZBTFNFKHRlc3RzWzBdLT5zaG91bGRfcnVuKCkpOwogCiAgIEVYUEVDVF9TVFJFUSgiVGVzdENh
c2VEaXNhYmxlZEFjY2Vzc29yc1dvcmsiLCB0ZXN0c1sxXS0+bmFtZSgpKTsKICAgRVhQRUNUX1NU
UkVRKCJBcGlUZXN0IiwgdGVzdHNbMV0tPnRlc3RfY2FzZV9uYW1lKCkpOwotICBFWFBFQ1RfU1RS
RVEoIiIsIHRlc3RzWzFdLT5jb21tZW50KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzFd
LT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzFdLT52
YWx1ZV9wYXJhbSgpKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1sxXS0+dHlwZV9wYXJh
bSgpKSk7CiAgIEVYUEVDVF9UUlVFKHRlc3RzWzFdLT5zaG91bGRfcnVuKCkpOwogCiAgIEVYUEVD
VF9TVFJFUSgiVGVzdENhc2VJbW11dGFibGVBY2Nlc3NvcnNXb3JrIiwgdGVzdHNbMl0tPm5hbWUo
KSk7CiAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzJdLT50ZXN0X2Nhc2VfbmFtZSgp
KTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1syXS0+Y29tbWVudCgpKTsKLSAgRVhQRUNUX1NU
UkVRKCIiLCB0ZXN0c1syXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgIEVYUEVDVF9UUlVFKElz
TnVsbCh0ZXN0c1syXS0+dmFsdWVfcGFyYW0oKSkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVz
dHNbMl0tPnR5cGVfcGFyYW0oKSkpOwogICBFWFBFQ1RfVFJVRSh0ZXN0c1syXS0+c2hvdWxkX3J1
bigpKTsKIAogICBFWFBFQ1RfU1RSRVEoIlVuaXRUZXN0SW1tdXRhYmxlQWNjZXNzb3JzV29yayIs
IHRlc3RzWzNdLT5uYW1lKCkpOwogICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1szXS0+
dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbM10tPmNvbW1lbnQo
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbM10tPnRlc3RfY2FzZV9jb21tZW50KCkpOwor
ICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbM10tPnZhbHVlX3BhcmFtKCkpKTsKKyAgRVhQRUNU
X1RSVUUoSXNOdWxsKHRlc3RzWzNdLT50eXBlX3BhcmFtKCkpKTsKICAgRVhQRUNUX1RSVUUodGVz
dHNbM10tPnNob3VsZF9ydW4oKSk7CiAKICAgZGVsZXRlW10gdGVzdHM7CkBAIC0xODgsNyArMTg4
LDcgQEAgVEVTVChBcGlUZXN0LCBUZXN0Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dvcmspIHsKICAg
QVNTRVJUX1RSVUUodGVzdF9jYXNlICE9IE5VTEwpOwogCiAgIEVYUEVDVF9TVFJFUSgiVGVzdENh
c2VXaXRoQ29tbWVudFRlc3QvMCIsIHRlc3RfY2FzZS0+bmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVR
KEdldEV4cGVjdGVkVGVzdENhc2VDb21tZW50KCkuY19zdHIoKSwgdGVzdF9jYXNlLT5jb21tZW50
KCkpOworICBFWFBFQ1RfU1RSRVEoR2V0VHlwZU5hbWU8aW50PigpLmNfc3RyKCksIHRlc3RfY2Fz
ZS0+dHlwZV9wYXJhbSgpKTsKICAgRVhQRUNUX1RSVUUodGVzdF9jYXNlLT5zaG91bGRfcnVuKCkp
OwogICBFWFBFQ1RfRVEoMCwgdGVzdF9jYXNlLT5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOwogICBF
WFBFQ1RfRVEoMSwgdGVzdF9jYXNlLT50ZXN0X3RvX3J1bl9jb3VudCgpKTsKQEAgLTE5OCw5ICsx
OTgsOCBAQCBURVNUKEFwaVRlc3QsIFRlc3RDYXNlSW1tdXRhYmxlQWNjZXNzb3JzV29yaykgewog
CiAgIEVYUEVDVF9TVFJFUSgiRHVtbXkiLCB0ZXN0c1swXS0+bmFtZSgpKTsKICAgRVhQRUNUX1NU
UkVRKCJUZXN0Q2FzZVdpdGhDb21tZW50VGVzdC8wIiwgdGVzdHNbMF0tPnRlc3RfY2FzZV9uYW1l
KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzBdLT5jb21tZW50KCkpOwotICBFWFBFQ1Rf
U1RSRVEoR2V0RXhwZWN0ZWRUZXN0Q2FzZUNvbW1lbnQoKS5jX3N0cigpLAotICAgICAgICAgICAg
ICAgdGVzdHNbMF0tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwo
dGVzdHNbMF0tPnZhbHVlX3BhcmFtKCkpKTsKKyAgRVhQRUNUX1NUUkVRKEdldFR5cGVOYW1lPGlu
dD4oKS5jX3N0cigpLCB0ZXN0c1swXS0+dHlwZV9wYXJhbSgpKTsKICAgRVhQRUNUX1RSVUUodGVz
dHNbMF0tPnNob3VsZF9ydW4oKSk7CiAKICAgZGVsZXRlW10gdGVzdHM7CkBAIC0yMTIsNyArMjEx
LDcgQEAgVEVTVChBcGlUZXN0LCBUZXN0Q2FzZURpc2FibGVkQWNjZXNzb3JzV29yaykgewogICBB
U1NFUlRfVFJVRSh0ZXN0X2Nhc2UgIT0gTlVMTCk7CiAKICAgRVhQRUNUX1NUUkVRKCJESVNBQkxF
RF9UZXN0IiwgdGVzdF9jYXNlLT5uYW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RfY2Fz
ZS0+Y29tbWVudCgpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfY2FzZS0+dHlwZV9wYXJh
bSgpKSk7CiAgIEVYUEVDVF9GQUxTRSh0ZXN0X2Nhc2UtPnNob3VsZF9ydW4oKSk7CiAgIEVYUEVD
VF9FUSgxLCB0ZXN0X2Nhc2UtPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgIEVYUEVDVF9FUSgw
LCB0ZXN0X2Nhc2UtPnRlc3RfdG9fcnVuX2NvdW50KCkpOwpAQCAtMjIxLDggKzIyMCw4IEBAIFRF
U1QoQXBpVGVzdCwgVGVzdENhc2VEaXNhYmxlZEFjY2Vzc29yc1dvcmspIHsKICAgY29uc3QgVGVz
dEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9IHRlc3RfY2FzZS0+R2V0VGVzdEluZm8oMCk7CiAgIEVY
UEVDVF9TVFJFUSgiRHVtbXkyIiwgdGVzdF9pbmZvLT5uYW1lKCkpOwogICBFWFBFQ1RfU1RSRVEo
IkRJU0FCTEVEX1Rlc3QiLCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOwotICBFWFBFQ1Rf
U1RSRVEoIiIsIHRlc3RfaW5mby0+Y29tbWVudCgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0
X2luZm8tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdF9p
bmZvLT52YWx1ZV9wYXJhbSgpKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0X2luZm8tPnR5
cGVfcGFyYW0oKSkpOwogICBFWFBFQ1RfRkFMU0UodGVzdF9pbmZvLT5zaG91bGRfcnVuKCkpOwog
fQogCkBAIC0yNDcsNyArMjQ2LDcgQEAgY2xhc3MgRmluYWxTdWNjZXNzQ2hlY2tlciA6IHB1Ymxp
YyBFbnZpcm9ubWVudCB7CiAgICAgY29uc3QgVGVzdENhc2UqKiBjb25zdCB0ZXN0X2Nhc2VzID0g
VW5pdFRlc3RIZWxwZXI6OkdldFNvcnRlZFRlc3RDYXNlcygpOwogCiAgICAgRVhQRUNUX1NUUkVR
KCJBcGlUZXN0IiwgdGVzdF9jYXNlc1swXS0+bmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIs
IHRlc3RfY2FzZXNbMF0tPmNvbW1lbnQoKSk7CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3Rf
Y2FzZXNbMF0tPnR5cGVfcGFyYW0oKSkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RfY2FzZXNbMF0t
PnNob3VsZF9ydW4oKSk7CiAgICAgRVhQRUNUX0VRKDEsIHRlc3RfY2FzZXNbMF0tPmRpc2FibGVk
X3Rlc3RfY291bnQoKSk7CiAgICAgQVNTRVJUX0VRKDQsIHRlc3RfY2FzZXNbMF0tPnRvdGFsX3Rl
c3RfY291bnQoKSk7CkBAIC0yNTcsNyArMjU2LDcgQEAgY2xhc3MgRmluYWxTdWNjZXNzQ2hlY2tl
ciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7CiAgICAgRVhQRUNUX0ZBTFNFKHRlc3RfY2FzZXNbMF0t
PkZhaWxlZCgpKTsKIAogICAgIEVYUEVDVF9TVFJFUSgiRElTQUJMRURfVGVzdCIsIHRlc3RfY2Fz
ZXNbMV0tPm5hbWUoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0X2Nhc2VzWzFdLT5jb21t
ZW50KCkpOworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0X2Nhc2VzWzFdLT50eXBlX3BhcmFt
KCkpKTsKICAgICBFWFBFQ1RfRkFMU0UodGVzdF9jYXNlc1sxXS0+c2hvdWxkX3J1bigpKTsKICAg
ICBFWFBFQ1RfRVEoMSwgdGVzdF9jYXNlc1sxXS0+ZGlzYWJsZWRfdGVzdF9jb3VudCgpKTsKICAg
ICBBU1NFUlRfRVEoMSwgdGVzdF9jYXNlc1sxXS0+dG90YWxfdGVzdF9jb3VudCgpKTsKQEAgLTI2
Niw4ICsyNjUsNyBAQCBjbGFzcyBGaW5hbFN1Y2Nlc3NDaGVja2VyIDogcHVibGljIEVudmlyb25t
ZW50IHsKIAogI2lmIEdURVNUX0hBU19UWVBFRF9URVNUCiAgICAgRVhQRUNUX1NUUkVRKCJUZXN0
Q2FzZVdpdGhDb21tZW50VGVzdC8wIiwgdGVzdF9jYXNlc1syXS0+bmFtZSgpKTsKLSAgICBFWFBF
Q1RfU1RSRVEoR2V0RXhwZWN0ZWRUZXN0Q2FzZUNvbW1lbnQoKS5jX3N0cigpLAotICAgICAgICAg
ICAgICAgICB0ZXN0X2Nhc2VzWzJdLT5jb21tZW50KCkpOworICAgIEVYUEVDVF9TVFJFUShHZXRU
eXBlTmFtZTxpbnQ+KCkuY19zdHIoKSwgdGVzdF9jYXNlc1syXS0+dHlwZV9wYXJhbSgpKTsKICAg
ICBFWFBFQ1RfVFJVRSh0ZXN0X2Nhc2VzWzJdLT5zaG91bGRfcnVuKCkpOwogICAgIEVYUEVDVF9F
USgwLCB0ZXN0X2Nhc2VzWzJdLT5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOwogICAgIEFTU0VSVF9F
USgxLCB0ZXN0X2Nhc2VzWzJdLT50b3RhbF90ZXN0X2NvdW50KCkpOwpAQCAtMjg1LDI0ICsyODMs
MjQgQEAgY2xhc3MgRmluYWxTdWNjZXNzQ2hlY2tlciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7CiAK
ICAgICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlRGlzYWJsZWRBY2Nlc3NvcnNXb3JrIiwgdGVzdHNb
MV0tPm5hbWUoKSk7CiAgICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbMV0tPnRlc3Rf
Y2FzZV9uYW1lKCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMV0tPmNvbW1lbnQoKSk7
Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1sxXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzFdLT52YWx1ZV9wYXJhbSgpKSk7CisgICAgRVhQ
RUNUX1RSVUUoSXNOdWxsKHRlc3RzWzFdLT50eXBlX3BhcmFtKCkpKTsKICAgICBFWFBFQ1RfVFJV
RSh0ZXN0c1sxXS0+c2hvdWxkX3J1bigpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0c1sxXS0+cmVz
dWx0KCktPlBhc3NlZCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgdGVzdHNbMV0tPnJlc3VsdCgpLT50
ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwogCiAgICAgRVhQRUNUX1NUUkVRKCJUZXN0Q2FzZUltbXV0
YWJsZUFjY2Vzc29yc1dvcmsiLCB0ZXN0c1syXS0+bmFtZSgpKTsKICAgICBFWFBFQ1RfU1RSRVEo
IkFwaVRlc3QiLCB0ZXN0c1syXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gICAgRVhQRUNUX1NUUkVR
KCIiLCB0ZXN0c1syXS0+Y29tbWVudCgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzJd
LT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMl0t
PnZhbHVlX3BhcmFtKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMl0tPnR5cGVf
cGFyYW0oKSkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzJdLT5zaG91bGRfcnVuKCkpOwogICAg
IEVYUEVDVF9UUlVFKHRlc3RzWzJdLT5yZXN1bHQoKS0+UGFzc2VkKCkpOwogICAgIEVYUEVDVF9F
USgwLCB0ZXN0c1syXS0+cmVzdWx0KCktPnRlc3RfcHJvcGVydHlfY291bnQoKSk7CiAKICAgICBF
WFBFQ1RfU1RSRVEoIlVuaXRUZXN0SW1tdXRhYmxlQWNjZXNzb3JzV29yayIsIHRlc3RzWzNdLT5u
YW1lKCkpOwogICAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzNdLT50ZXN0X2Nhc2Vf
bmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzNdLT5jb21tZW50KCkpOwotICAg
IEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbM10tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICAgIEVY
UEVDVF9UUlVFKElzTnVsbCh0ZXN0c1szXS0+dmFsdWVfcGFyYW0oKSkpOworICAgIEVYUEVDVF9U
UlVFKElzTnVsbCh0ZXN0c1szXS0+dHlwZV9wYXJhbSgpKSk7CiAgICAgRVhQRUNUX1RSVUUodGVz
dHNbM10tPnNob3VsZF9ydW4oKSk7CiAgICAgRVhQRUNUX1RSVUUodGVzdHNbM10tPnJlc3VsdCgp
LT5QYXNzZWQoKSk7CiAgICAgRVhQRUNUX0VRKDEsIHRlc3RzWzNdLT5yZXN1bHQoKS0+dGVzdF9w
cm9wZXJ0eV9jb3VudCgpKTsKQEAgLTMxOCw5ICszMTYsOCBAQCBjbGFzcyBGaW5hbFN1Y2Nlc3ND
aGVja2VyIDogcHVibGljIEVudmlyb25tZW50IHsKIAogICAgIEVYUEVDVF9TVFJFUSgiRHVtbXki
LCB0ZXN0c1swXS0+bmFtZSgpKTsKICAgICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlV2l0aENvbW1l
bnRUZXN0LzAiLCB0ZXN0c1swXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gICAgRVhQRUNUX1NUUkVR
KCIiLCB0ZXN0c1swXS0+Y29tbWVudCgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoR2V0RXhwZWN0ZWRU
ZXN0Q2FzZUNvbW1lbnQoKS5jX3N0cigpLAotICAgICAgICAgICAgICAgICB0ZXN0c1swXS0+dGVz
dF9jYXNlX2NvbW1lbnQoKSk7CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzBdLT52YWx1
ZV9wYXJhbSgpKSk7CisgICAgRVhQRUNUX1NUUkVRKEdldFR5cGVOYW1lPGludD4oKS5jX3N0cigp
LCB0ZXN0c1swXS0+dHlwZV9wYXJhbSgpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0c1swXS0+c2hv
dWxkX3J1bigpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0c1swXS0+cmVzdWx0KCktPlBhc3NlZCgp
KTsKICAgICBFWFBFQ1RfRVEoMCwgdGVzdHNbMF0tPnJlc3VsdCgpLT50ZXN0X3Byb3BlcnR5X2Nv
dW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9h
bGxfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYWxsX3Rlc3Qu
Y2MKaW5kZXggZTFlZGIwOGUzM2ExOGMyMzkxMTVkYWQ1ZTRhMGQ2ZmI2MzJkYmIxNy4uZTYxZTM2
YjFkZmU4ZGEwMzAxNmFmNTc4NTViMmM3ODFlZTdkOTFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9hbGxfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2FsbF90ZXN0LmNjCkBAIC0yNiwyMyArMjYsMjEgQEAKIC8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwogLy8KLS8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBUZXN0cyBmb3IgR29v
Z2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBUZXN0cyBmb3IgR29v
Z2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwog
Ly8gU29tZXRpbWVzIGl0J3MgZGVzaXJhYmxlIHRvIGJ1aWxkIG1vc3Qgb2YgR29vZ2xlIFRlc3Qn
cyBvd24gdGVzdHMKIC8vIGJ5IGNvbXBpbGluZyBhIHNpbmdsZSBmaWxlLiAgVGhpcyBmaWxlIHNl
cnZlcyB0aGlzIHB1cnBvc2UuCi0jaW5jbHVkZSAidGVzdC9ndGVzdC1maWxlcGF0aF90ZXN0LmNj
IgotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNjIgotI2luY2x1ZGUgInRl
c3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjIgotI2luY2x1ZGUgInRlc3QvZ3Rlc3Qtb3B0aW9uc190
ZXN0LmNjIgotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtcG9ydF90ZXN0LmNjIgorI2luY2x1ZGUgInRl
c3QvZ29vZ2xldGVzdC1maWxlcGF0aC10ZXN0LmNjIgorI2luY2x1ZGUgInRlc3QvZ29vZ2xldGVz
dC1saW5rZWQtcHRyLXRlc3QuY2MiCisjaW5jbHVkZSAidGVzdC9nb29nbGV0ZXN0LW1lc3NhZ2Ut
dGVzdC5jYyIKKyNpbmNsdWRlICJ0ZXN0L2dvb2dsZXRlc3Qtb3B0aW9ucy10ZXN0LmNjIgorI2lu
Y2x1ZGUgInRlc3QvZ29vZ2xldGVzdC1wb3J0LXRlc3QuY2MiCiAjaW5jbHVkZSAidGVzdC9ndGVz
dF9wcmVkX2ltcGxfdW5pdHRlc3QuY2MiCiAjaW5jbHVkZSAidGVzdC9ndGVzdF9wcm9kX3Rlc3Qu
Y2MiCi0jaW5jbHVkZSAidGVzdC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYyIKKyNpbmNsdWRlICJ0
ZXN0L2dvb2dsZXRlc3QtdGVzdC1wYXJ0LXRlc3QuY2MiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC10
eXBlZC10ZXN0X3Rlc3QuY2MiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC10eXBlZC10ZXN0Ml90ZXN0
LmNjIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MiCiAjaW5jbHVkZSAidGVzdC9w
cm9kdWN0aW9uLmNjIgotI2luY2x1ZGUgInNyYy9ndGVzdF9tYWluLmNjIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9hc3NlcnRfYnlfZXhjZXB0aW9uX3Rl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Fzc2VydF9ieV9leGNl
cHRpb25fdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZWFlODU3NWYzZmVlMzBiYWM2NDJiYTE1ODlmZjIz
NGQwN2Y5NDU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF9hc3NlcnRfYnlfZXhjZXB0aW9uX3Rlc3QuY2MKQEAgLTAsMCArMSwxMTggQEAKKy8v
IENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
CisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlz
dHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
Ly8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBUZXN0cyBH
b29nbGUgVGVzdCdzIGFzc2VydC1ieS1leGNlcHRpb24gbW9kZSB3aXRoIGV4Y2VwdGlvbnMgZW5h
YmxlZC4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4K
KyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGV4
Y2VwdD4KKworY2xhc3MgVGhyb3dMaXN0ZW5lciA6IHB1YmxpYyB0ZXN0aW5nOjpFbXB0eVRlc3RF
dmVudExpc3RlbmVyIHsKKyAgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IHRlc3Rpbmc6OlRl
c3RQYXJ0UmVzdWx0JiByZXN1bHQpIG92ZXJyaWRlIHsKKyAgICBpZiAocmVzdWx0LnR5cGUoKSA9
PSB0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSkgeworICAgICAgdGhyb3cg
dGVzdGluZzo6QXNzZXJ0aW9uRXhjZXB0aW9uKHJlc3VsdCk7CisgICAgfQorICB9Cit9OworCisv
LyBQcmludHMgdGhlIGdpdmVuIGZhaWx1cmUgbWVzc2FnZSBhbmQgZXhpdHMgdGhlIHByb2dyYW0g
d2l0aAorLy8gbm9uLXplcm8uICBXZSB1c2UgdGhpcyBpbnN0ZWFkIG9mIGEgR29vZ2xlIFRlc3Qg
YXNzZXJ0aW9uIHRvCisvLyBpbmRpY2F0ZSBhIGZhaWx1cmUsIGFzIHRoZSBsYXR0ZXIgaXMgYmVl
biB0ZXN0ZWQgYW5kIGNhbm5vdCBiZQorLy8gcmVsaWVkIG9uLgordm9pZCBGYWlsKGNvbnN0IGNo
YXIqIG1zZykgeworICBwcmludGYoIkZBSUxVUkU6ICVzXG4iLCBtc2cpOworICBmZmx1c2goc3Rk
b3V0KTsKKyAgZXhpdCgxKTsKK30KKworc3RhdGljIHZvaWQgQXNzZXJ0RmFsc2UoKSB7CisgIEFT
U0VSVF9FUSgyLCAzKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7Cit9CisKKy8vIFRlc3RzIHRoYXQg
YW4gYXNzZXJ0aW9uIGZhaWx1cmUgdGhyb3dzIGEgc3ViY2xhc3Mgb2YKKy8vIHN0ZDo6cnVudGlt
ZV9lcnJvci4KK1RFU1QoVGVzdCwgVGVzdCkgeworICAvLyBBIHN1Y2Nlc3NmdWwgYXNzZXJ0aW9u
IHNob3VsZG4ndCB0aHJvdy4KKyAgdHJ5IHsKKyAgICBFWFBFQ1RfRVEoMywgMyk7CisgIH0gY2F0
Y2goLi4uKSB7CisgICAgRmFpbCgiQSBzdWNjZXNzZnVsIGFzc2VydGlvbiB3cm9uZ2Z1bGx5IHRo
cmV3LiIpOworICB9CisKKyAgLy8gQSBzdWNjZXNzZnVsIGFzc2VydGlvbiBzaG91bGRuJ3QgdGhy
b3cuCisgIHRyeSB7CisgICAgRVhQRUNUX0VRKDMsIDQpOworICB9IGNhdGNoKC4uLikgeworICAg
IEZhaWwoIkEgZmFpbGVkIG5vbi1mYXRhbCBhc3NlcnRpb24gd3JvbmdmdWxseSB0aHJldy4iKTsK
KyAgfQorCisgIC8vIEEgZmFpbGVkIGFzc2VydGlvbiBzaG91bGQgdGhyb3cuCisgIHRyeSB7Cisg
ICAgQXNzZXJ0RmFsc2UoKTsKKyAgfSBjYXRjaChjb25zdCB0ZXN0aW5nOjpBc3NlcnRpb25FeGNl
cHRpb24mIGUpIHsKKyAgICBpZiAoc3Ryc3RyKGUud2hhdCgpLCAiRXhwZWN0ZWQgZmFpbHVyZSIp
ICE9IE5VTEwpCisgICAgICB0aHJvdzsKKworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAi
QSBmYWlsZWQgYXNzZXJ0aW9uIGRpZCB0aHJvdyBhbiBleGNlcHRpb24gb2YgdGhlIHJpZ2h0IHR5
cGUsICIKKyAgICAgICAgICAgImJ1dCB0aGUgbWVzc2FnZSBpcyBpbmNvcnJlY3QuICBJbnN0ZWFk
IG9mIGNvbnRhaW5pbmcgXCJFeHBlY3RlZCAiCisgICAgICAgICAgICJmYWlsdXJlXCIsIGl0IGlz
OlxuIik7CisgICAgRmFpbChlLndoYXQoKSk7CisgIH0gY2F0Y2goLi4uKSB7CisgICAgRmFpbCgi
QSBmYWlsZWQgYXNzZXJ0aW9uIHRocmV3IHRoZSB3cm9uZyB0eXBlIG9mIGV4Y2VwdGlvbi4iKTsK
KyAgfQorICBGYWlsKCJBIGZhaWxlZCBhc3NlcnRpb24gc2hvdWxkJ3ZlIHRocm93biBidXQgZGlk
bid0LiIpOworfQorCitpbnQga1Rlc3RGb3JDb250aW51aW5nVGVzdCA9IDA7CisKK1RFU1QoVGVz
dCwgVGVzdDIpIHsKKyAgLy8gRklYTUU6IGhvdyB0byBmb3JjZSBUZXN0MiB0byBiZSBhZnRlciBU
ZXN0PworICBrVGVzdEZvckNvbnRpbnVpbmdUZXN0ID0gMTsKK30KKworaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KSB7CisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2
KTsKKyAgdGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpLkFwcGVu
ZChuZXcgVGhyb3dMaXN0ZW5lcik7CisKKyAgaW50IHJlc3VsdCA9IFJVTl9BTExfVEVTVFMoKTsK
KyAgaWYgKHJlc3VsdCA9PSAwKSB7CisgICAgcHJpbnRmKCJSVU5fQUxMX1RFU1RTIHJldHVybmVk
ICVkXG4iLCByZXN1bHQpOworICAgIEZhaWwoIkV4cGVjdGVkIGZhaWx1cmUgaW5zdGVhZC4iKTsK
KyAgfQorCisgIGlmIChrVGVzdEZvckNvbnRpbnVpbmdUZXN0ID09IDApIHsKKyAgICBGYWlsKCJT
aG91bGQgaGF2ZSBjb250aW51ZWQgd2l0aCBvdGhlciB0ZXN0cywgYnV0IGRpZCBub3QuIik7Cisg
IH0KKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IGM4MTkxODMzMTIyNzVkZWNhMDVjNzYzMTg2MDQwNDcxYmZm
NDlmMzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjE4ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhv
bgotIwotIyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1
dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyBi
cmVhay1vbi1mYWlsdXJlIG1vZGUuCi0KLUEgdXNlciBjYW4gYXNrIEdvb2dsZSBUZXN0IHRvIHNl
Zy1mYXVsdCB3aGVuIGFuIGFzc2VydGlvbiBmYWlscywgdXNpbmcKLWVpdGhlciB0aGUgR1RFU1Rf
QlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUKLS0tZ3Rlc3RfYnJl
YWtfb25fZmFpbHVyZSBmbGFnLiAgVGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5
Ci1ieSBpbnZva2luZyBndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0XyAoYSBwcm9ncmFt
IHdyaXR0ZW4gd2l0aAotR29vZ2xlIFRlc3QpIHdpdGggZGlmZmVyZW50IGVudmlyb25tZW50cyBh
bmQgY29tbWFuZCBsaW5lIGZsYWdzLgotIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi1pbXBvcnQgb3MK
LWltcG9ydCBzeXMKLQotCi0jIENvbnN0YW50cy4KLQotSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0g
J250JwotCi0jIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgZW5hYmxpbmcvZGlzYWJsaW5n
IHRoZSBicmVhay1vbi1mYWlsdXJlIG1vZGUuCi1CUkVBS19PTl9GQUlMVVJFX0VOVl9WQVIgPSAn
R1RFU1RfQlJFQUtfT05fRkFJTFVSRScKLQotIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgZm9yIGVu
YWJsaW5nL2Rpc2FibGluZyB0aGUgYnJlYWstb24tZmFpbHVyZSBtb2RlLgotQlJFQUtfT05fRkFJ
TFVSRV9GTEFHID0gJ2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmUnCi0KLSMgVGhlIGVudmlyb25tZW50
IHZhcmlhYmxlIGZvciBlbmFibGluZy9kaXNhYmxpbmcgdGhlIHRocm93LW9uLWZhaWx1cmUgbW9k
ZS4KLVRIUk9XX09OX0ZBSUxVUkVfRU5WX1ZBUiA9ICdHVEVTVF9USFJPV19PTl9GQUlMVVJFJwot
Ci0jIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBj
YXRjaC1leGNlcHRpb25zIG1vZGUuCi1DQVRDSF9FWENFUFRJT05TX0VOVl9WQVIgPSAnR1RFU1Rf
Q0FUQ0hfRVhDRVBUSU9OUycKLQotIyBQYXRoIHRvIHRoZSBndGVzdF9icmVha19vbl9mYWlsdXJl
X3VuaXR0ZXN0XyBwcm9ncmFtLgotRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RF
eGVjdXRhYmxlUGF0aCgKLSAgICAnZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8nKQot
Ci0KLSMgVXRpbGl0aWVzLgotCi0KLWVudmlyb24gPSBvcy5lbnZpcm9uLmNvcHkoKQotCi0KLWRl
ZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgotICAiIiJTZXRzIGFuIGVudmlyb25tZW50IHZh
cmlhYmxlIHRvIGEgZ2l2ZW4gdmFsdWU7IHVuc2V0cyBpdCB3aGVuIHRoZQotICBnaXZlbiB2YWx1
ZSBpcyBOb25lLgotICAiIiIKLQotICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICBlbnZpcm9u
W2Vudl92YXJdID0gdmFsdWUKLSAgZWxpZiBlbnZfdmFyIGluIGVudmlyb246Ci0gICAgZGVsIGVu
dmlyb25bZW52X3Zhcl0KLQotCi1kZWYgUnVuKGNvbW1hbmQpOgotICAiIiJSdW5zIGEgY29tbWFu
ZDsgcmV0dXJucyAxIGlmIGl0IHdhcyBraWxsZWQgYnkgYSBzaWduYWwsIG9yIDAgb3RoZXJ3aXNl
LiIiIgotCi0gIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCwgZW52PWVu
dmlyb24pCi0gIGlmIHAudGVybWluYXRlZF9ieV9zaWduYWw6Ci0gICAgcmV0dXJuIDEKLSAgZWxz
ZToKLSAgICByZXR1cm4gMAotCi0KLSMgVGhlIHRlc3RzLgotCi0KLWNsYXNzIEdUZXN0QnJlYWtP
bkZhaWx1cmVVbml0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAgIiIiVGVzdHMg
dXNpbmcgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IK
LSAgdGhlIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnIHRvIHR1cm4gYXNzZXJ0aW9uIGZh
aWx1cmVzIGludG8KLSAgc2VnbWVudGF0aW9uIGZhdWx0cy4KLSAgIiIiCi0KLSAgZGVmIFJ1bkFu
ZFZlcmlmeShzZWxmLCBlbnZfdmFyX3ZhbHVlLCBmbGFnX3ZhbHVlLCBleHBlY3Rfc2VnX2ZhdWx0
KToKLSAgICAiIiJSdW5zIGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfIGFuZCB2ZXJp
ZmllcyB0aGF0IGl0IGRvZXMKLSAgICAob3IgZG9lcyBub3QpIGhhdmUgYSBzZWctZmF1bHQuCi0K
LSAgICBBcmdzOgotICAgICAgZW52X3Zhcl92YWx1ZTogICAgdmFsdWUgb2YgdGhlIEdURVNUX0JS
RUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlh
YmxlOyBOb25lIGlmIHRoZSB2YXJpYWJsZSBzaG91bGQgYmUgdW5zZXQuCi0gICAgICBmbGFnX3Zh
bHVlOiAgICAgICB2YWx1ZSBvZiB0aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWc7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBub3QgYmUgcHJl
c2VudC4KLSAgICAgIGV4cGVjdF9zZWdfZmF1bHQ6IDEgaWYgdGhlIHByb2dyYW0gaXMgZXhwZWN0
ZWQgdG8gZ2VuZXJhdGUgYSBzZWctZmF1bHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAwIG90
aGVyd2lzZS4KLSAgICAiIiIKLQotICAgIFNldEVudlZhcihCUkVBS19PTl9GQUlMVVJFX0VOVl9W
QVIsIGVudl92YXJfdmFsdWUpCi0KLSAgICBpZiBlbnZfdmFyX3ZhbHVlIGlzIE5vbmU6Ci0gICAg
ICBlbnZfdmFyX3ZhbHVlX21zZyA9ICcgaXMgbm90IHNldCcKLSAgICBlbHNlOgotICAgICAgZW52
X3Zhcl92YWx1ZV9tc2cgPSAnPScgKyBlbnZfdmFyX3ZhbHVlCi0KLSAgICBpZiBmbGFnX3ZhbHVl
IGlzIE5vbmU6Ci0gICAgICBmbGFnID0gJycKLSAgICBlbGlmIGZsYWdfdmFsdWUgPT0gJzAnOgot
ICAgICAgZmxhZyA9ICctLSVzPTAnICUgQlJFQUtfT05fRkFJTFVSRV9GTEFHCi0gICAgZWxzZToK
LSAgICAgIGZsYWcgPSAnLS0lcycgJSBCUkVBS19PTl9GQUlMVVJFX0ZMQUcKLQotICAgIGNvbW1h
bmQgPSBbRVhFX1BBVEhdCi0gICAgaWYgZmxhZzoKLSAgICAgIGNvbW1hbmQuYXBwZW5kKGZsYWcp
Ci0KLSAgICBpZiBleHBlY3Rfc2VnX2ZhdWx0OgotICAgICAgc2hvdWxkX29yX25vdCA9ICdzaG91
bGQnCi0gICAgZWxzZToKLSAgICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxkIG5vdCcKLQotICAg
IGhhc19zZWdfZmF1bHQgPSBSdW4oY29tbWFuZCkKLQotICAgIFNldEVudlZhcihCUkVBS19PTl9G
QUlMVVJFX0VOVl9WQVIsIE5vbmUpCi0KLSAgICBtc2cgPSAoJ3doZW4gJXMlcywgYW4gYXNzZXJ0
aW9uIGZhaWx1cmUgaW4gIiVzIiAlcyBjYXVzZSBhIHNlZy1mYXVsdC4nICUKLSAgICAgICAgICAg
KEJSRUFLX09OX0ZBSUxVUkVfRU5WX1ZBUiwgZW52X3Zhcl92YWx1ZV9tc2csICcgJy5qb2luKGNv
bW1hbmQpLAotICAgICAgICAgICAgc2hvdWxkX29yX25vdCkpCi0gICAgc2VsZi5hc3NlcnRfKGhh
c19zZWdfZmF1bHQgPT0gZXhwZWN0X3NlZ19mYXVsdCwgbXNnKQotCi0gIGRlZiB0ZXN0RGVmYXVs
dEJlaGF2aW9yKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVs
dCBtb2RlLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAot
ICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAg
ICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCi0KLSAgZGVmIHRlc3RFbnZWYXIoc2VsZik6Ci0gICAg
IiIiVGVzdHMgdXNpbmcgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFy
aWFibGUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScwJywKLSAg
ICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0X3NlZ19mYXVsdD0wKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFs
dWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKLSAgICAgICAg
ICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCi0KLSAgZGVmIHRlc3RGbGFnKHNlbGYp
OgotICAgICIiIlRlc3RzIHVzaW5nIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZy4i
IiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKLSAgICAgICAg
ICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBl
Y3Rfc2VnX2ZhdWx0PTApCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25l
LAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKLQotICBkZWYgdGVzdEZsYWdPdmVycmlkZXNFbnZW
YXIoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCB0aGUgZmxhZyBvdmVycmlkZXMgdGhlIGVudmly
b25tZW50IHZhcmlhYmxlLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1
ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0wKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVu
dl92YXJfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAot
ICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKLSAgICBzZWxmLlJ1bkFu
ZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3Zh
bHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCi0gICAg
c2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAg
ICAgZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVs
dD0xKQotCi0gIGRlZiB0ZXN0QnJlYWtPbkZhaWx1cmVPdmVycmlkZXNUaHJvd09uRmFpbHVyZShz
ZWxmKToKLSAgICAiIiJUZXN0cyB0aGF0IGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgb3ZlcnJpZGVz
IGd0ZXN0X3Rocm93X29uX2ZhaWx1cmUuIiIiCi0KLSAgICBTZXRFbnZWYXIoVEhST1dfT05fRkFJ
TFVSRV9FTlZfVkFSLCAnMScpCi0gICAgdHJ5OgotICAgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52
X3Zhcl92YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCi0gICAgZmluYWxs
eToKLSAgICAgIFNldEVudlZhcihUSFJPV19PTl9GQUlMVVJFX0VOVl9WQVIsIE5vbmUpCi0KLSAg
aWYgSVNfV0lORE9XUzoKLSAgICBkZWYgdGVzdENhdGNoRXhjZXB0aW9uc0RvZXNOb3RJbnRlcmZl
cmUoc2VsZik6Ci0gICAgICAiIiJUZXN0cyB0aGF0IGd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnMgZG9l
c24ndCBpbnRlcmZlcmUuIiIiCi0KLSAgICAgIFNldEVudlZhcihDQVRDSF9FWENFUFRJT05TX0VO
Vl9WQVIsICcxJykKLSAgICAgIHRyeToKLSAgICAgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zh
cl92YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCi0gICAgICBmaW5h
bGx5OgotICAgICAgICBTZXRFbnZWYXIoQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSLCBOb25lKQot
Ci0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29u
X2ZhaWx1cmVfdW5pdHRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZDI4ZDFkM2RhZDQ2YjhmZGYzYzM0MDk2N2RiZmNhODUyZjU5ZTRhMS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfLmNjCisrKyAvZGV2L251
bGwKQEAgLTEsODYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCi0vLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
Ly8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQot
Ly8gVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIGJyZWFrLW9uLWZhaWx1cmUgbW9kZS4KLS8v
Ci0vLyBBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBzZWctZmF1bHQgd2hlbiBhbiBhc3Nl
cnRpb24gZmFpbHMsIHVzaW5nCi0vLyBlaXRoZXIgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUg
ZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCi0vLyAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUg
ZmxhZy4gIFRoaXMgZmlsZSBpcyB1c2VkIGZvciB0ZXN0aW5nIHN1Y2gKLS8vIGZ1bmN0aW9uYWxp
dHkuCi0vLwotLy8gVGhpcyBwcm9ncmFtIHdpbGwgYmUgaW52b2tlZCBmcm9tIGEgUHl0aG9uIHVu
aXQgdGVzdC4gIEl0IGlzCi0vLyBleHBlY3RlZCB0byBmYWlsLiAgRG9uJ3QgcnVuIGl0IGRpcmVj
dGx5LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2lmIEdURVNUX09TX1dJTkRPV1MK
LSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jZW5kaWYKLQotbmFt
ZXNwYWNlIHsKLQotLy8gQSB0ZXN0IHRoYXQncyBleHBlY3RlZCB0byBmYWlsLgotVEVTVChGb28s
IEJhcikgewotICBFWFBFQ1RfRVEoMiwgMyk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfU0VIICYmICFH
VEVTVF9PU19XSU5ET1dTX01PQklMRQotLy8gT24gV2luZG93cyBNb2JpbGUgZ2xvYmFsIGV4Y2Vw
dGlvbiBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZC4KLUxPTkcgV0lOQVBJIEV4aXRXaXRoRXhj
ZXB0aW9uQ29kZSgKLSAgICBzdHJ1Y3QgX0VYQ0VQVElPTl9QT0lOVEVSUyogZXhjZXB0aW9uX3Bv
aW50ZXJzKSB7Ci0gIGV4aXQoZXhjZXB0aW9uX3BvaW50ZXJzLT5FeGNlcHRpb25SZWNvcmQtPkV4
Y2VwdGlvbkNvZGUpOwotfQotI2VuZGlmCi0KLX0gIC8vIG5hbWVzcGFjZQotCi1pbnQgbWFpbihp
bnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIC8vIFN1cHBy
ZXNzZXMgZGlzcGxheSBvZiB0aGUgV2luZG93cyBlcnJvciBkaWFsb2cgdXBvbiBlbmNvdW50ZXJp
bmcKLSAgLy8gYSBnZW5lcmFsIHByb3RlY3Rpb24gZmF1bHQgKHNlZ21lbnQgdmlvbGF0aW9uKS4K
LSAgU2V0RXJyb3JNb2RlKFNFTV9OT0dQRkFVTFRFUlJPUkJPWCB8IFNFTV9GQUlMQ1JJVElDQUxF
UlJPUlMpOwotCi0jaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0gIC8vIFRoZSBkZWZhdWx0
IHVuaGFuZGxlZCBleGNlcHRpb24gZmlsdGVyIGRvZXMgbm90IGFsd2F5cyBleGl0Ci0gIC8vIHdp
dGggdGhlIGV4Y2VwdGlvbiBjb2RlIGFzIGV4aXQgY29kZSAtIGZvciBleGFtcGxlIGl0IGV4aXRz
IHdpdGgKLSAgLy8gMCBmb3IgRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT04gYW5kIDEgZm9yIEVY
Q0VQVElPTl9CUkVBS1BPSU5UCi0gIC8vIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBjb21waWxlZCBp
biBkZWJ1ZyBtb2RlLiBUaHVzIHdlIHVzZSBvdXIgb3duCi0gIC8vIGZpbHRlciB3aGljaCBhbHdh
eXMgZXhpdHMgd2l0aCB0aGUgZXhjZXB0aW9uIGNvZGUgZm9yIHVuaGFuZGxlZAotICAvLyBleGNl
cHRpb25zLgotICBTZXRVbmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIoRXhpdFdpdGhFeGNlcHRpb25D
b2RlKTsKLSNlbmRpZgotI2VuZGlmCi0KLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2Ms
IGFyZ3YpOwotCi0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IGQwMmE1M2VkODU3Yzc0YzgwMGJjY2Q2N2JjNDE4YTUxYTA5ZDY5MzcuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEs
MTMwICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOCwg
R29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LSIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3QgY29ycmVjdGx5IGRldGVybWluZXMgd2hldGhl
ciB0byB1c2UgY29sb3JzLiIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFu
eW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi0KLQotSVNf
V0lORE9XUyA9IG9zLm5hbWUgPSAnbnQnCi0KLUNPTE9SX0VOVl9WQVIgPSAnR1RFU1RfQ09MT1In
Ci1DT0xPUl9GTEFHID0gJ2d0ZXN0X2NvbG9yJwotQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
R2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9jb2xvcl90ZXN0XycpCi0KLQotZGVmIFNldEVu
dlZhcihlbnZfdmFyLCB2YWx1ZSk6Ci0gICIiIlNldHMgdGhlIGVudiB2YXJpYWJsZSB0byAndmFs
dWUnOyB1bnNldHMgaXQgd2hlbiAndmFsdWUnIGlzIE5vbmUuIiIiCi0KLSAgaWYgdmFsdWUgaXMg
bm90IE5vbmU6Ci0gICAgb3MuZW52aXJvbltlbnZfdmFyXSA9IHZhbHVlCi0gIGVsaWYgZW52X3Zh
ciBpbiBvcy5lbnZpcm9uOgotICAgIGRlbCBvcy5lbnZpcm9uW2Vudl92YXJdCi0KLQotZGVmIFVz
ZXNDb2xvcih0ZXJtLCBjb2xvcl9lbnZfdmFyLCBjb2xvcl9mbGFnKToKLSAgIiIiUnVucyBndGVz
dF9jb2xvcl90ZXN0XyBhbmQgcmV0dXJucyBpdHMgZXhpdCBjb2RlLiIiIgotCi0gIFNldEVudlZh
cignVEVSTScsIHRlcm0pCi0gIFNldEVudlZhcihDT0xPUl9FTlZfVkFSLCBjb2xvcl9lbnZfdmFy
KQotCi0gIGlmIGNvbG9yX2ZsYWcgaXMgTm9uZToKLSAgICBhcmdzID0gW10KLSAgZWxzZToKLSAg
ICBhcmdzID0gWyctLSVzPSVzJyAlIChDT0xPUl9GTEFHLCBjb2xvcl9mbGFnKV0KLSAgcCA9IGd0
ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhbQ09NTUFORF0gKyBhcmdzKQotICByZXR1cm4gbm90
IHAuZXhpdGVkIG9yIHAuZXhpdF9jb2RlCi0KLQotY2xhc3MgR1Rlc3RDb2xvclRlc3QoZ3Rlc3Rf
dGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gIGRlZiB0ZXN0Tm9FbnZWYXJOb0ZsYWcoc2VsZik6Ci0g
ICAgIiIiVGVzdHMgdGhlIGNhc2Ugd2hlbiB0aGVyZSdzIG5laXRoZXIgR1RFU1RfQ09MT1Igbm9y
IC0tZ3Rlc3RfY29sb3IuIiIiCi0KLSAgICBpZiBub3QgSVNfV0lORE9XUzoKLSAgICAgIHNlbGYu
YXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgTm9uZSkpCi0gICAgICBzZWxmLmFz
c2VydF8obm90IFVzZXNDb2xvcignZW1hY3MnLCBOb25lLCBOb25lKSkKLSAgICAgIHNlbGYuYXNz
ZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybS1tb25vJywgTm9uZSwgTm9uZSkpCi0gICAgICBzZWxm
LmFzc2VydF8obm90IFVzZXNDb2xvcigndW5rbm93bicsIE5vbmUsIE5vbmUpKQotICAgICAgc2Vs
Zi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoTm9uZSwgTm9uZSwgTm9uZSkpCi0gICAgc2VsZi5hc3Nl
cnRfKFVzZXNDb2xvcignbGludXgnLCBOb25lLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNl
c0NvbG9yKCdjeWd3aW4nLCBOb25lLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9y
KCd4dGVybScsIE5vbmUsIE5vbmUpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJt
LWNvbG9yJywgTm9uZSwgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0t
MjU2Y29sb3InLCBOb25lLCBOb25lKSkKLQotICBkZWYgdGVzdEZsYWdPbmx5KHNlbGYpOgotICAg
ICIiIlRlc3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUncyAtLWd0ZXN0X2NvbG9yIGJ1dCBub3QgR1RF
U1RfQ09MT1IuIiIiCi0KLSAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcignZHVtYicsIE5v
bmUsICdubycpKQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybS1jb2xvcics
IE5vbmUsICdubycpKQotICAgIGlmIG5vdCBJU19XSU5ET1dTOgotICAgICAgc2VsZi5hc3NlcnRf
KG5vdCBVc2VzQ29sb3IoJ2VtYWNzJywgTm9uZSwgJ2F1dG8nKSkKLSAgICBzZWxmLmFzc2VydF8o
VXNlc0NvbG9yKCd4dGVybScsIE5vbmUsICdhdXRvJykpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXND
b2xvcignZHVtYicsIE5vbmUsICd5ZXMnKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4
dGVybScsIE5vbmUsICd5ZXMnKSkKLQotICBkZWYgdGVzdEVudlZhck9ubHkoc2VsZik6Ci0gICAg
IiIiVGVzdHMgdGhlIGNhc2Ugd2hlbiB0aGVyZSdzIEdURVNUX0NPTE9SIGJ1dCBub3QgLS1ndGVz
dF9jb2xvci4iIiIKLQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdkdW1iJywgJ25v
JywgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywg
J25vJywgTm9uZSkpCi0gICAgaWYgbm90IElTX1dJTkRPV1M6Ci0gICAgICBzZWxmLmFzc2VydF8o
bm90IFVzZXNDb2xvcignZHVtYicsICdhdXRvJywgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVz
ZXNDb2xvcigneHRlcm0tY29sb3InLCAnYXV0bycsIE5vbmUpKQotICAgIHNlbGYuYXNzZXJ0XyhV
c2VzQ29sb3IoJ2R1bWInLCAneWVzJywgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xv
cigneHRlcm0tY29sb3InLCAneWVzJywgTm9uZSkpCi0KLSAgZGVmIHRlc3RFbnZWYXJBbmRGbGFn
KHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUgYXJlIGJvdGggR1RFU1Rf
Q09MT1IgYW5kIC0tZ3Rlc3RfY29sb3IuIiIiCi0KLSAgICBzZWxmLmFzc2VydF8obm90IFVzZXND
b2xvcigneHRlcm0tY29sb3InLCAnbm8nLCAnbm8nKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0Nv
bG9yKCdkdW1iJywgJ25vJywgJ3llcycpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0
ZXJtLWNvbG9yJywgJ25vJywgJ2F1dG8nKSkKLQotICBkZWYgdGVzdEFsaWFzZXNPZlllc0FuZE5v
KHNlbGYpOgotICAgICIiIlRlc3RzIHVzaW5nIGFsaWFzZXMgaW4gc3BlY2lmeWluZyAtLWd0ZXN0
X2NvbG9yLiIiIgotCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUsICd0
cnVlJykpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUsICdZRVMnKSkK
LSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ1QnKSkKLSAgICBzZWxm
LmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJzEnKSkKLQotICAgIHNlbGYuYXNzZXJ0
Xyhub3QgVXNlc0NvbG9yKCd4dGVybScsIE5vbmUsICdmJykpCi0gICAgc2VsZi5hc3NlcnRfKG5v
dCBVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwgJ2ZhbHNlJykpCi0gICAgc2VsZi5hc3NlcnRfKG5v
dCBVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwgJzAnKSkKLSAgICBzZWxmLmFzc2VydF8obm90IFVz
ZXNDb2xvcigneHRlcm0nLCBOb25lLCAndW5rbm93bicpKQotCi0KLWlmIF9fbmFtZV9fID09ICdf
X21haW5fXyc6Ci0gIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNThkMzc3YzliMmFmMGJmZTgxOTVjYTJjMGE5MDIxMzlkOTExMDY0Mi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjCisrKyAvZGV2L251bGwKQEAgLTEs
NzEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0Ogot
Ly8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0v
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0v
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ly8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gQSBoZWxw
ZXIgcHJvZ3JhbSBmb3IgdGVzdGluZyBob3cgR29vZ2xlIFRlc3QgZGV0ZXJtaW5lcyB3aGV0aGVy
IHRvIHVzZQotLy8gY29sb3JzIGluIHRoZSBvdXRwdXQuICBJdCBwcmludHMgIllFUyIgYW5kIHJl
dHVybnMgMSBpZiBHb29nbGUgVGVzdAotLy8gZGVjaWRlcyB0byB1c2UgY29sb3JzLCBhbmQgcHJp
bnRzICJOTyIgYW5kIHJldHVybnMgMCBvdGhlcndpc2UuCi0KLSNpbmNsdWRlIDxzdGRpby5oPgot
Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFu
c2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24u
ICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRl
ZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwot
Ly8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVy
bmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05f
IDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1Q
TEVNRU5UQVRJT05fCi0KLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaG91bGRVc2VDb2xvcjsK
LQotLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUgVW5pdFRlc3Qg
c2luZ2xldG9uIGlzCi0vLyBjcmVhdGVkIGJlZm9yZSBtYWluKCkgaXMgZW50ZXJlZCwgYW5kIHRo
dXMgdGhhdCBTaG91bGRVc2VDb2xvcigpCi0vLyB3b3JrcyB0aGUgc2FtZSB3YXkgYXMgaW4gYSBy
ZWFsIEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QuICBXZSBkb24ndCBhY3R1YWwKLS8vIHJ1biB0aGUg
VEVTVCBpdHNlbGYuCi1URVNUKEdUZXN0Q29sb3JUZXN0LCBEdW1teSkgewotfQotCi1pbnQgbWFp
bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOwotCi0gIGlmIChTaG91bGRVc2VDb2xvcih0cnVlKSkgewotICAgIC8vIEdvb2ds
ZSBUZXN0IGRlY2lkZXMgdG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0IChhc3N1bWluZyBpdAot
ICAgIC8vIGdvZXMgdG8gYSBUVFkpLgotICAgIHByaW50ZigiWUVTXG4iKTsKLSAgICByZXR1cm4g
MTsKLSAgfSBlbHNlIHsKLSAgICAvLyBHb29nbGUgVGVzdCBkZWNpZGVzIG5vdCB0byB1c2UgY29s
b3JzIGluIHRoZSBvdXRwdXQuCi0gICAgcHJpbnRmKCJOT1xuIik7Ci0gICAgcmV0dXJuIDA7Ci0g
IH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52
X3Zhcl90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZfdmFy
X3Rlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGJjYzBiZmQ1NTMyOTcyNjgw
NzYxNTc3MzZjODNlNGE4NGNhZTA1NmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZfdmFy
X3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlz
dHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVz
dCBjb3JyZWN0bHkgcGFyc2VzIGVudmlyb25tZW50IHZhcmlhYmxlcy4iIiIKLQotX19hdXRob3Jf
XyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IG9zCi1pbXBvcnQg
Z3Rlc3RfdGVzdF91dGlscwotCi0KLUlTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdudCcKLUlTX0xJ
TlVYID0gb3MubmFtZSA9PSAncG9zaXgnIGFuZCBvcy51bmFtZSgpWzBdID09ICdMaW51eCcKLQot
Q09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9l
bnZfdmFyX3Rlc3RfJykKLQotZW52aXJvbiA9IG9zLmVudmlyb24uY29weSgpCi0KLQotZGVmIEFz
c2VydEVxKGV4cGVjdGVkLCBhY3R1YWwpOgotICBpZiBleHBlY3RlZCAhPSBhY3R1YWw6Ci0gICAg
cHJpbnQgJ0V4cGVjdGVkOiAlcycgJSAoZXhwZWN0ZWQsKQotICAgIHByaW50ICcgIEFjdHVhbDog
JXMnICUgKGFjdHVhbCwpCi0gICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKLQotCi1kZWYgU2V0RW52
VmFyKGVudl92YXIsIHZhbHVlKToKLSAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxlIHRvICd2YWx1
ZSc7IHVuc2V0cyBpdCB3aGVuICd2YWx1ZScgaXMgTm9uZS4iIiIKLQotICBpZiB2YWx1ZSBpcyBu
b3QgTm9uZToKLSAgICBlbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKLSAgZWxpZiBlbnZfdmFyIGlu
IGVudmlyb246Ci0gICAgZGVsIGVudmlyb25bZW52X3Zhcl0KLQotCi1kZWYgR2V0RmxhZyhmbGFn
KToKLSAgIiIiUnVucyBndGVzdF9lbnZfdmFyX3Rlc3RfIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQu
IiIiCi0KLSAgYXJncyA9IFtDT01NQU5EXQotICBpZiBmbGFnIGlzIG5vdCBOb25lOgotICAgIGFy
Z3MgKz0gW2ZsYWddCi0gIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoYXJncywg
ZW52PWVudmlyb24pLm91dHB1dAotCi0KLWRlZiBUZXN0RmxhZyhmbGFnLCB0ZXN0X3ZhbCwgZGVm
YXVsdF92YWwpOgotICAiIiJWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBmbGFnIGlzIGFmZmVjdGVk
IGJ5IHRoZSBjb3JyZXNwb25kaW5nIGVudiB2YXIuIiIiCi0KLSAgZW52X3ZhciA9ICdHVEVTVF8n
ICsgZmxhZy51cHBlcigpCi0gIFNldEVudlZhcihlbnZfdmFyLCB0ZXN0X3ZhbCkKLSAgQXNzZXJ0
RXEodGVzdF92YWwsIEdldEZsYWcoZmxhZykpCi0gIFNldEVudlZhcihlbnZfdmFyLCBOb25lKQot
ICBBc3NlcnRFcShkZWZhdWx0X3ZhbCwgR2V0RmxhZyhmbGFnKSkKLQotCi1jbGFzcyBHVGVzdEVu
dlZhclRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gIGRlZiB0ZXN0RW52VmFyQWZm
ZWN0c0ZsYWcoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCBlbnZpcm9ubWVudCB2YXJpYWJsZSBz
aG91bGQgYWZmZWN0IHRoZSBjb3JyZXNwb25kaW5nIGZsYWcuIiIiCi0KLSAgICBUZXN0RmxhZygn
YnJlYWtfb25fZmFpbHVyZScsICcxJywgJzAnKQotICAgIFRlc3RGbGFnKCdjb2xvcicsICd5ZXMn
LCAnYXV0bycpCi0gICAgVGVzdEZsYWcoJ2ZpbHRlcicsICdGb29UZXN0LkJhcicsICcqJykKLSAg
ICBUZXN0RmxhZygnb3V0cHV0JywgJ3htbDp0bXAvZm9vLnhtbCcsICcnKQotICAgIFRlc3RGbGFn
KCdwcmludF90aW1lJywgJzAnLCAnMScpCi0gICAgVGVzdEZsYWcoJ3JlcGVhdCcsICc5OTknLCAn
MScpCi0gICAgVGVzdEZsYWcoJ3Rocm93X29uX2ZhaWx1cmUnLCAnMScsICcwJykKLSAgICBUZXN0
RmxhZygnZGVhdGhfdGVzdF9zdHlsZScsICd0aHJlYWRzYWZlJywgJ2Zhc3QnKQotCi0gICAgaWYg
SVNfV0lORE9XUzoKLSAgICAgIFRlc3RGbGFnKCdjYXRjaF9leGNlcHRpb25zJywgJzEnLCAnMCcp
Ci0KLSAgICBpZiBJU19MSU5VWDoKLSAgICAgIFRlc3RGbGFnKCdkZWF0aF90ZXN0X3VzZV9mb3Jr
JywgJzEnLCAnMCcpCi0gICAgICBUZXN0RmxhZygnc3RhY2tfdHJhY2VfZGVwdGgnLCAnMCcsICcx
MDAnKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rlc3RfdXRpbHMu
TWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vu
dl92YXJfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudl92
YXJfdGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3Yzc4ZmNmMzA1MzEy
YTY2YzI2NWIxODEwYTY5MTA3N2RiNzcxZjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZf
dmFyX3Rlc3RfLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTI2ICswLDAgQEAKLS8vIENvcHlyaWdo
dCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9u
LgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEEgaGVscGVyIHByb2dyYW0gZm9yIHRlc3Rpbmcg
dGhhdCBHb29nbGUgVGVzdCBwYXJzZXMgdGhlIGVudmlyb25tZW50Ci0vLyB2YXJpYWJsZXMgY29y
cmVjdGx5LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2luY2x1ZGUgPGlvc3RyZWFt
PgotCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0
LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi11c2luZyA6
OnN0ZDo6Y291dDsKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotCi0vLyBUaGUgcHVycG9zZSBvZiB0
aGlzIGlzIHRvIG1ha2UgdGhlIHRlc3QgbW9yZSByZWFsaXN0aWMgYnkgZW5zdXJpbmcKLS8vIHRo
YXQgdGhlIFVuaXRUZXN0IHNpbmdsZXRvbiBpcyBjcmVhdGVkIGJlZm9yZSBtYWluKCkgaXMgZW50
ZXJlZC4KLS8vIFdlIGRvbid0IGFjdHVhbCBydW4gdGhlIFRFU1QgaXRzZWxmLgotVEVTVChHVGVz
dEVudlZhclRlc3QsIER1bW15KSB7Ci19Ci0KLXZvaWQgUHJpbnRGbGFnKGNvbnN0IGNoYXIqIGZs
YWcpIHsKLSAgaWYgKHN0cmNtcChmbGFnLCAiYnJlYWtfb25fZmFpbHVyZSIpID09IDApIHsKLSAg
ICBjb3V0IDw8IEdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSk7Ci0gICAgcmV0dXJuOwotICB9
Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAiY2F0Y2hfZXhjZXB0aW9ucyIpID09IDApIHsKLSAgICBj
b3V0IDw8IEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucyk7Ci0gICAgcmV0dXJuOwotICB9Ci0K
LSAgaWYgKHN0cmNtcChmbGFnLCAiY29sb3IiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9G
TEFHKGNvbG9yKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcsICJkZWF0
aF90ZXN0X3N0eWxlIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhkZWF0aF90ZXN0
X3N0eWxlKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcsICJkZWF0aF90
ZXN0X3VzZV9mb3JrIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhkZWF0aF90ZXN0
X3VzZV9mb3JrKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcsICJmaWx0
ZXIiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKGZpbHRlcik7Ci0gICAgcmV0dXJu
OwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAib3V0cHV0IikgPT0gMCkgewotICAgIGNvdXQg
PDwgR1RFU1RfRkxBRyhvdXRwdXQpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAo
ZmxhZywgInByaW50X3RpbWUiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKHByaW50
X3RpbWUpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywgInJlcGVhdCIp
ID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcocmVwZWF0KTsKLSAgICByZXR1cm47Ci0g
IH0KLQotICBpZiAoc3RyY21wKGZsYWcsICJzdGFja190cmFjZV9kZXB0aCIpID09IDApIHsKLSAg
ICBjb3V0IDw8IEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpOwotICAgIHJldHVybjsKLSAg
fQotCi0gIGlmIChzdHJjbXAoZmxhZywgInRocm93X29uX2ZhaWx1cmUiKSA9PSAwKSB7Ci0gICAg
Y291dCA8PCBHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpOwotICAgIHJldHVybjsKLSAgfQot
Ci0gIGNvdXQgPDwgIkludmFsaWQgZmxhZyBuYW1lICIgPDwgZmxhZwotICAgICAgIDw8ICIuICBW
YWxpZCBuYW1lcyBhcmUgYnJlYWtfb25fZmFpbHVyZSwgY29sb3IsIGZpbHRlciwgZXRjLlxuIjsK
LSAgZXhpdCgxKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBh
cmd2KTsKLQotICBpZiAoYXJnYyAhPSAyKSB7Ci0gICAgY291dCA8PCAiVXNhZ2U6IGd0ZXN0X2Vu
dl92YXJfdGVzdF8gTkFNRV9PRl9GTEFHXG4iOwotICAgIHJldHVybiAxOwotICB9Ci0KLSAgdGVz
dGluZzo6UHJpbnRGbGFnKGFyZ3ZbMV0pOwotICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVzdC5jYwppbmRl
eCBjOTM5MjYxNGQ3NGQ3ZmMyMzJlODZiMmMzZDZjZGIxYjFlMmI2MTMxLi5iYzk1MjRkNjYzNzNl
NzE5NTFjYWNjZDkwNmMwNjZlZjRhZjk0YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudmlyb25tZW50X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjCkBAIC0yNiwxNCArMjYs
MTQgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8v
Ci0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIC8vCiAvLyBUZXN0
cyB1c2luZyBnbG9iYWwgdGVzdCBlbnZpcm9ubWVudHMuCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4K
ICNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCiAKIG5h
bWVzcGFjZSB0ZXN0aW5nIHsKIEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhmaWx0ZXIpOwpAQCAtOTIs
NiArOTIsNyBAQCBjbGFzcyBNeUVudmlyb25tZW50IDogcHVibGljIHRlc3Rpbmc6OkVudmlyb25t
ZW50IHsKIAogICAvLyBXYXMgVGVhckRvd24oKSBydW4/CiAgIGJvb2wgdGVhcl9kb3duX3dhc19y
dW4oKSBjb25zdCB7IHJldHVybiB0ZWFyX2Rvd25fd2FzX3J1bl87IH0KKwogIHByaXZhdGU6CiAg
IEZhaWx1cmVUeXBlIGZhaWx1cmVfaW5fc2V0X3VwXzsKICAgYm9vbCBzZXRfdXBfd2FzX3J1bl87
CkBAIC0xMTEsNyArMTEyLDcgQEAgVEVTVChGb29UZXN0LCBCYXIpIHsKIHZvaWQgQ2hlY2soYm9v
bCBjb25kaXRpb24sIGNvbnN0IGNoYXIqIG1zZykgewogICBpZiAoIWNvbmRpdGlvbikgewogICAg
IHByaW50ZigiRkFJTEVEOiAlc1xuIiwgbXNnKTsKLSAgICBhYm9ydCgpOworICAgIHRlc3Rpbmc6
OmludGVybmFsOjpwb3NpeDo6QWJvcnQoKTsKICAgfQogfQogCkBAIC0xMjMsNiArMTI0LDcgQEAg
aW50IFJ1bkFsbFRlc3RzKE15RW52aXJvbm1lbnQqIGVudiwgRmFpbHVyZVR5cGUgZmFpbHVyZSkg
ewogICBlbnYtPlJlc2V0KCk7CiAgIGVudi0+c2V0X2ZhaWx1cmVfaW5fc2V0X3VwKGZhaWx1cmUp
OwogICB0ZXN0X3dhc19ydW4gPSBmYWxzZTsKKyAgdGVzdGluZzo6aW50ZXJuYWw6OkdldFVuaXRU
ZXN0SW1wbCgpLT5DbGVhckFkSG9jVGVzdFJlc3VsdCgpOwogICByZXR1cm4gUlVOX0FMTF9URVNU
UygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X2ZpbHRlcl91bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
ZmlsdGVyX3VuaXR0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwZDFhNzcw
MDU4Y2NiOTAxMTU0NjgwOTI0Y2JkM2M2NGQ4YzhkMTc5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfZmlsdGVyX3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjMzICswLDAgQEAKLSMh
L3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNSBHb29nbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6
Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVW5pdCB0ZXN0IGZvciBH
b29nbGUgVGVzdCB0ZXN0IGZpbHRlcnMuCi0KLUEgdXNlciBjYW4gc3BlY2lmeSB3aGljaCB0ZXN0
KHMpIGluIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSB0byBydW4gdmlhIGVpdGhlcgotdGhlIEdURVNU
X0ZJTFRFUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUgLS1ndGVzdF9maWx0ZXIgZmxhZy4K
LVRoaXMgc2NyaXB0IHRlc3RzIHN1Y2ggZnVuY3Rpb25hbGl0eSBieSBpbnZva2luZwotZ3Rlc3Rf
ZmlsdGVyX3VuaXR0ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aCBHb29nbGUgVGVzdCkgd2l0
aCBkaWZmZXJlbnQKLWVudmlyb25tZW50cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdzLgotCi1Ob3Rl
IHRoYXQgdGVzdCBzaGFyZGluZyBtYXkgYWxzbyBpbmZsdWVuY2Ugd2hpY2ggdGVzdHMgYXJlIGZp
bHRlcmVkLiBUaGVyZWZvcmUsCi13ZSB0ZXN0IHRoYXQgaGVyZSBhbHNvLgotIiIiCi0KLV9fYXV0
aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBvcwotaW1w
b3J0IHJlCi1pbXBvcnQgc2V0cwotaW1wb3J0IHN5cwotCi1pbXBvcnQgZ3Rlc3RfdGVzdF91dGls
cwotCi0jIENvbnN0YW50cy4KLQotIyBDaGVja3MgaWYgdGhpcyBwbGF0Zm9ybSBjYW4gcGFzcyBl
bXB0eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gY2hpbGQKLSMgcHJvY2Vzc2VzLiAgV2Ugc2V0
IGFuIGVudiB2YXJpYWJsZSB0byBhbiBlbXB0eSBzdHJpbmcgYW5kIGludm9rZSBhIHB5dGhvbgot
IyBzY3JpcHQgaW4gYSBzdWJwcm9jZXNzIHRvIHByaW50IHdoZXRoZXIgdGhlIHZhcmlhYmxlIGlz
IFNUSUxMIGluCi0jIG9zLmVudmlyb24uICBXZSB0aGVuIHVzZSAnZXZhbCcgdG8gcGFyc2UgdGhl
IGNoaWxkJ3Mgb3V0cHV0IHNvIHRoYXQgYW4KLSMgZXhjZXB0aW9uIGlzIHRocm93biBpZiB0aGUg
aW5wdXQgaXMgYW55dGhpbmcgb3RoZXIgdGhhbiAnVHJ1ZScgbm9yICdGYWxzZScuCi1vcy5lbnZp
cm9uWydFTVBUWV9WQVInXSA9ICcnCi1jaGlsZCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vz
cygKLSAgICBbc3lzLmV4ZWN1dGFibGUsICctYycsICdpbXBvcnQgb3M7IHByaW50IFwnRU1QVFlf
VkFSXCcgaW4gb3MuZW52aXJvbiddKQotQ0FOX1BBU1NfRU1QVFlfRU5WID0gZXZhbChjaGlsZC5v
dXRwdXQpCi0KLQotIyBDaGVjayBpZiB0aGlzIHBsYXRmb3JtIGNhbiB1bnNldCBlbnZpcm9ubWVu
dCB2YXJpYWJsZXMgaW4gY2hpbGQgcHJvY2Vzc2VzLgotIyBXZSBzZXQgYW4gZW52IHZhcmlhYmxl
IHRvIGEgbm9uLWVtcHR5IHN0cmluZywgdW5zZXQgaXQsIGFuZCBpbnZva2UKLSMgYSBweXRob24g
c2NyaXB0IGluIGEgc3VicHJvY2VzcyB0byBwcmludCB3aGV0aGVyIHRoZSB2YXJpYWJsZQotIyBp
cyBOTyBMT05HRVIgaW4gb3MuZW52aXJvbi4KLSMgV2UgdXNlICdldmFsJyB0byBwYXJzZSB0aGUg
Y2hpbGQncyBvdXRwdXQgc28gdGhhdCBhbiBleGNlcHRpb24KLSMgaXMgdGhyb3duIGlmIHRoZSBp
bnB1dCBpcyBuZWl0aGVyICdUcnVlJyBub3IgJ0ZhbHNlJy4KLW9zLmVudmlyb25bJ1VOU0VUX1ZB
UiddID0gJ1gnCi1kZWwgb3MuZW52aXJvblsnVU5TRVRfVkFSJ10KLWNoaWxkID0gZ3Rlc3RfdGVz
dF91dGlscy5TdWJwcm9jZXNzKAotICAgIFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgJ2ltcG9ydCBv
czsgcHJpbnQgXCdVTlNFVF9WQVJcJyBub3QgaW4gb3MuZW52aXJvbiddKQotQ0FOX1VOU0VUX0VO
ViA9IGV2YWwoY2hpbGQub3V0cHV0KQotCi0KLSMgQ2hlY2tzIGlmIHdlIHNob3VsZCB0ZXN0IHdp
dGggYW4gZW1wdHkgZmlsdGVyLiBUaGlzIGRvZXNuJ3QKLSMgbWFrZSBzZW5zZSBvbiBwbGF0Zm9y
bXMgdGhhdCBjYW5ub3QgcGFzcyBlbXB0eSBlbnYgdmFyaWFibGVzIChXaW4zMikKLSMgYW5kIG9u
IHBsYXRmb3JtcyB0aGF0IGNhbm5vdCB1bnNldCB2YXJpYWJsZXMgKHNpbmNlIHdlIGNhbm5vdCB0
ZWxsCi0jIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gIiIgYW5kIE5VTEwgLS0gQm9ybGFuZCBhbmQg
U29sYXJpcyA8IDUuMTApCi1DQU5fVEVTVF9FTVBUWV9GSUxURVIgPSAoQ0FOX1BBU1NfRU1QVFlf
RU5WIGFuZCBDQU5fVU5TRVRfRU5WKQotCi0KLSMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGZv
ciBzcGVjaWZ5aW5nIHRoZSB0ZXN0IGZpbHRlcnMuCi1GSUxURVJfRU5WX1ZBUiA9ICdHVEVTVF9G
SUxURVInCi0KLSMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBzaGFyZGluZy4K
LVRPVEFMX1NIQVJEU19FTlZfVkFSID0gJ0dURVNUX1RPVEFMX1NIQVJEUycKLVNIQVJEX0lOREVY
X0VOVl9WQVIgPSAnR1RFU1RfU0hBUkRfSU5ERVgnCi1TSEFSRF9TVEFUVVNfRklMRV9FTlZfVkFS
ID0gJ0dURVNUX1NIQVJEX1NUQVRVU19GSUxFJwotCi0jIFRoZSBjb21tYW5kIGxpbmUgZmxhZyBm
b3Igc3BlY2lmeWluZyB0aGUgdGVzdCBmaWx0ZXJzLgotRklMVEVSX0ZMQUcgPSAnZ3Rlc3RfZmls
dGVyJwotCi0jIFRoZSBjb21tYW5kIGxpbmUgZmxhZyBmb3IgaW5jbHVkaW5nIGRpc2FibGVkIHRl
c3RzLgotQUxTT19SVU5fRElTQUJFRF9URVNUU19GTEFHID0gJ2d0ZXN0X2Fsc29fcnVuX2Rpc2Fi
bGVkX3Rlc3RzJwotCi0jIENvbW1hbmQgdG8gcnVuIHRoZSBndGVzdF9maWx0ZXJfdW5pdHRlc3Rf
IHByb2dyYW0uCi1DT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBh
dGgoJ2d0ZXN0X2ZpbHRlcl91bml0dGVzdF8nKQotCi0jIFJlZ2V4IGZvciBkZXRlcm1pbmluZyB3
aGV0aGVyIHBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQgaW4gdGhlIGJpbmFyeS4KLVBB
UkFNX1RFU1RfUkVHRVggPSByZS5jb21waWxlKHInL1BhcmFtVGVzdCcpCi0KLSMgUmVnZXggZm9y
IHBhcnNpbmcgdGVzdCBjYXNlIG5hbWVzIGZyb20gR29vZ2xlIFRlc3QncyBvdXRwdXQuCi1URVNU
X0NBU0VfUkVHRVggPSByZS5jb21waWxlKHInXlxbXC0rXF0gXGQrIHRlc3RzPyBmcm9tIChcdyso
L1x3Kyk/KScpCi0KLSMgUmVnZXggZm9yIHBhcnNpbmcgdGVzdCBuYW1lcyBmcm9tIEdvb2dsZSBU
ZXN0J3Mgb3V0cHV0LgotVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocideXFtccypSVU5ccypcXS4q
XC4oXHcrKC9cdyspPyknKQotCi0jIFRoZSBjb21tYW5kIGxpbmUgZmxhZyB0byB0ZWxsIEdvb2ds
ZSBUZXN0IHRvIG91dHB1dCB0aGUgbGlzdCBvZiB0ZXN0cyBpdAotIyB3aWxsIHJ1bi4KLUxJU1Rf
VEVTVFNfRkxBRyA9ICctLWd0ZXN0X2xpc3RfdGVzdHMnCi0KLSMgSW5kaWNhdGVzIHdoZXRoZXIg
R29vZ2xlIFRlc3Qgc3VwcG9ydHMgZGVhdGggdGVzdHMuCi1TVVBQT1JUU19ERUFUSF9URVNUUyA9
ICdIYXNEZWF0aFRlc3QnIGluIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKLSAgICBbQ09N
TUFORCwgTElTVF9URVNUU19GTEFHXSkub3V0cHV0Ci0KLSMgRnVsbCBuYW1lcyBvZiBhbGwgdGVz
dHMgaW4gZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0c18uCi1QQVJBTV9URVNUUyA9IFsKLSAgICAnU2Vx
UC9QYXJhbVRlc3QuVGVzdFgvMCcsCi0gICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzEnLAotICAg
ICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMScs
Ci0gICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RYLzAnLAotICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0
WC8xJywKLSAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFkvMCcsCi0gICAgJ1NlcVEvUGFyYW1UZXN0
LlRlc3RZLzEnLAotICAgIF0KLQotRElTQUJMRURfVEVTVFMgPSBbCi0gICAgJ0JhclRlc3QuRElT
QUJMRURfVGVzdEZvdXInLAotICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rlc3RGaXZlJywKLSAgICAn
QmF6VGVzdC5ESVNBQkxFRF9UZXN0QycsCi0gICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEn
LAotICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywKLSAgICAnRElTQUJM
RURfRm9vYmFyYmF6VGVzdC5UZXN0QScsCi0gICAgXQotCi1pZiBTVVBQT1JUU19ERUFUSF9URVNU
UzoKLSAgREVBVEhfVEVTVFMgPSBbCi0gICAgJ0hhc0RlYXRoVGVzdC5UZXN0MScsCi0gICAgJ0hh
c0RlYXRoVGVzdC5UZXN0MicsCi0gICAgXQotZWxzZToKLSAgREVBVEhfVEVTVFMgPSBbXQotCi0j
IEFsbCB0aGUgbm9uLWRpc2FibGVkIHRlc3RzLgotQUNUSVZFX1RFU1RTID0gWwotICAgICdGb29U
ZXN0LkFiYycsCi0gICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICdCYXJUZXN0LlRlc3RPbmUnLAot
ICAgICdCYXJUZXN0LlRlc3RUd28nLAotICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCi0KLSAgICAn
QmF6VGVzdC5UZXN0T25lJywKLSAgICAnQmF6VGVzdC5UZXN0QScsCi0gICAgJ0JhelRlc3QuVGVz
dEInLAotICAgIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTCi0KLXBhcmFtX3Rlc3RzX3By
ZXNlbnQgPSBOb25lCi0KLSMgVXRpbGl0aWVzLgotCi1lbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5
KCkKLQotCi1kZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToKLSAgIiIiU2V0cyB0aGUgZW52
IHZhcmlhYmxlIHRvICd2YWx1ZSc7IHVuc2V0cyBpdCB3aGVuICd2YWx1ZScgaXMgTm9uZS4iIiIK
LQotICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICBlbnZpcm9uW2Vudl92YXJdID0gdmFsdWUK
LSAgZWxpZiBlbnZfdmFyIGluIGVudmlyb246Ci0gICAgZGVsIGVudmlyb25bZW52X3Zhcl0KLQot
Ci1kZWYgUnVuQW5kUmV0dXJuT3V0cHV0KGFyZ3MgPSBOb25lKToKLSAgIiIiUnVucyB0aGUgdGVz
dCBwcm9ncmFtIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQuIiIiCi0KLSAgcmV0dXJuIGd0ZXN0X3Rl
c3RfdXRpbHMuU3VicHJvY2VzcyhbQ09NTUFORF0gKyAoYXJncyBvciBbXSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudmlyb24pLm91dHB1dAotCi0KLWRlZiBS
dW5BbmRFeHRyYWN0VGVzdExpc3QoYXJncyA9IE5vbmUpOgotICAiIiJSdW5zIHRoZSB0ZXN0IHBy
b2dyYW0gYW5kIHJldHVybnMgaXRzIGV4aXQgY29kZSBhbmQgYSBsaXN0IG9mIHRlc3RzIHJ1bi4i
IiIKLQotICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtDT01NQU5EXSArIChhcmdz
IG9yIFtdKSwgZW52PWVudmlyb24pCi0gIHRlc3RzX3J1biA9IFtdCi0gIHRlc3RfY2FzZSA9ICcn
Ci0gIHRlc3QgPSAnJwotICBmb3IgbGluZSBpbiBwLm91dHB1dC5zcGxpdCgnXG4nKToKLSAgICBt
YXRjaCA9IFRFU1RfQ0FTRV9SRUdFWC5tYXRjaChsaW5lKQotICAgIGlmIG1hdGNoIGlzIG5vdCBO
b25lOgotICAgICAgdGVzdF9jYXNlID0gbWF0Y2guZ3JvdXAoMSkKLSAgICBlbHNlOgotICAgICAg
bWF0Y2ggPSBURVNUX1JFR0VYLm1hdGNoKGxpbmUpCi0gICAgICBpZiBtYXRjaCBpcyBub3QgTm9u
ZToKLSAgICAgICAgdGVzdCA9IG1hdGNoLmdyb3VwKDEpCi0gICAgICAgIHRlc3RzX3J1bi5hcHBl
bmQodGVzdF9jYXNlICsgJy4nICsgdGVzdCkKLSAgcmV0dXJuICh0ZXN0c19ydW4sIHAuZXhpdF9j
b2RlKQotCi0KLWRlZiBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LCBmdW5jdGlvbiwg
KmFyZ3MsICoqa3dhcmdzKToKLSAgIiIiUnVucyB0aGUgZ2l2ZW4gZnVuY3Rpb24gYW5kIGFyZ3Vt
ZW50cyBpbiBhIG1vZGlmaWVkIGVudmlyb25tZW50LiIiIgotICB0cnk6Ci0gICAgb3JpZ2luYWxf
ZW52ID0gZW52aXJvbi5jb3B5KCkKLSAgICBlbnZpcm9uLnVwZGF0ZShleHRyYV9lbnYpCi0gICAg
cmV0dXJuIGZ1bmN0aW9uKCphcmdzLCAqKmt3YXJncykKLSAgZmluYWxseToKLSAgICBlbnZpcm9u
LmNsZWFyKCkKLSAgICBlbnZpcm9uLnVwZGF0ZShvcmlnaW5hbF9lbnYpCi0KLQotZGVmIFJ1bldp
dGhTaGFyZGluZyh0b3RhbF9zaGFyZHMsIHNoYXJkX2luZGV4LCBjb21tYW5kKToKLSAgIiIiUnVu
cyBhIHRlc3QgcHJvZ3JhbSBzaGFyZCBhbmQgcmV0dXJucyBleGl0IGNvZGUgYW5kIGEgbGlzdCBv
ZiB0ZXN0cyBydW4uIiIiCi0KLSAgZXh0cmFfZW52ID0ge1NIQVJEX0lOREVYX0VOVl9WQVI6IHN0
cihzaGFyZF9pbmRleCksCi0gICAgICAgICAgICAgICBUT1RBTF9TSEFSRFNfRU5WX1ZBUjogc3Ry
KHRvdGFsX3NoYXJkcyl9Ci0gIHJldHVybiBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52
LCBSdW5BbmRFeHRyYWN0VGVzdExpc3QsIGNvbW1hbmQpCi0KLSMgVGhlIHVuaXQgdGVzdC4KLQot
Ci1jbGFzcyBHVGVzdEZpbHRlclVuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgot
ICAiIiJUZXN0cyB0aGUgZW52IHZhcmlhYmxlIG9yIHRoZSBjb21tYW5kIGxpbmUgZmxhZyB0byBm
aWx0ZXIgdGVzdHMuIiIiCi0KLSAgIyBVdGlsaXRpZXMuCi0KLSAgZGVmIEFzc2VydFNldEVxdWFs
KHNlbGYsIGxocywgcmhzKToKLSAgICAiIiJBc3NlcnRzIHRoYXQgdHdvIHNldHMgYXJlIGVxdWFs
LiIiIgotCi0gICAgZm9yIGVsZW0gaW4gbGhzOgotICAgICAgc2VsZi5hc3NlcnRfKGVsZW0gaW4g
cmhzLCAnJXMgaW4gJXMnICUgKGVsZW0sIHJocykpCi0KLSAgICBmb3IgZWxlbSBpbiByaHM6Ci0g
ICAgICBzZWxmLmFzc2VydF8oZWxlbSBpbiBsaHMsICclcyBpbiAlcycgJSAoZWxlbSwgbGhzKSkK
LQotICBkZWYgQXNzZXJ0UGFydGl0aW9uSXNWYWxpZChzZWxmLCBzZXRfdmFyLCBsaXN0X29mX3Nl
dHMpOgotICAgICIiIkFzc2VydHMgdGhhdCBsaXN0X29mX3NldHMgaXMgYSB2YWxpZCBwYXJ0aXRp
b24gb2Ygc2V0X3Zhci4iIiIKLQotICAgIGZ1bGxfcGFydGl0aW9uID0gW10KLSAgICBmb3Igc2xp
Y2VfdmFyIGluIGxpc3Rfb2Zfc2V0czoKLSAgICAgIGZ1bGxfcGFydGl0aW9uLmV4dGVuZChzbGlj
ZV92YXIpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2V0X3ZhciksIGxlbihmdWxsX3BhcnRp
dGlvbikpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzZXRzLlNldChzZXRfdmFyKSwgc2V0cy5TZXQo
ZnVsbF9wYXJ0aXRpb24pKQotCi0gIGRlZiBBZGp1c3RGb3JQYXJhbWV0ZXJpemVkVGVzdHMoc2Vs
ZiwgdGVzdHNfdG9fcnVuKToKLSAgICAiIiJBZGp1c3QgdGVzdHNfdG9fcnVuIGluIGNhc2UgdmFs
dWUgcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZGlzYWJsZWQuIiIiCi0KLSAgICBnbG9iYWwgcGFy
YW1fdGVzdHNfcHJlc2VudAotICAgIGlmIG5vdCBwYXJhbV90ZXN0c19wcmVzZW50OgotICAgICAg
cmV0dXJuIGxpc3Qoc2V0cy5TZXQodGVzdHNfdG9fcnVuKSAtIHNldHMuU2V0KFBBUkFNX1RFU1RT
KSkKLSAgICBlbHNlOgotICAgICAgcmV0dXJuIHRlc3RzX3RvX3J1bgotCi0gIGRlZiBSdW5BbmRW
ZXJpZnkoc2VsZiwgZ3Rlc3RfZmlsdGVyLCB0ZXN0c190b19ydW4pOgotICAgICIiIkNoZWNrcyB0
aGF0IHRoZSBiaW5hcnkgcnVucyBjb3JyZWN0IHNldCBvZiB0ZXN0cyBmb3IgYSBnaXZlbiBmaWx0
ZXIuIiIiCi0KLSAgICB0ZXN0c190b19ydW4gPSBzZWxmLkFkanVzdEZvclBhcmFtZXRlcml6ZWRU
ZXN0cyh0ZXN0c190b19ydW4pCi0KLSAgICAjIEZpcnN0LCB0ZXN0cyB1c2luZyB0aGUgZW52aXJv
bm1lbnQgdmFyaWFibGUuCi0KLSAgICAjIFdpbmRvd3MgcmVtb3ZlcyBlbXB0eSB2YXJpYWJsZXMg
ZnJvbSB0aGUgZW52aXJvbm1lbnQgd2hlbiBwYXNzaW5nIGl0Ci0gICAgIyB0byBhIG5ldyBwcm9j
ZXNzLiAgVGhpcyBtZWFucyBpdCBpcyBpbXBvc3NpYmxlIHRvIHBhc3MgYW4gZW1wdHkgZmlsdGVy
Ci0gICAgIyBpbnRvIGEgcHJvY2VzcyB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuICBI
b3dldmVyLCB3ZSBjYW4gc3RpbGwKLSAgICAjIHRlc3QgdGhlIGNhc2Ugd2hlbiB0aGUgdmFyaWFi
bGUgaXMgbm90IHN1cHBsaWVkIChpLmUuLCBndGVzdF9maWx0ZXIgaXMKLSAgICAjIE5vbmUpLgot
ICAgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwMwotICAgIGlmIENBTl9URVNUX0VNUFRZX0ZJ
TFRFUiBvciBndGVzdF9maWx0ZXIgIT0gJyc6Ci0gICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9W
QVIsIGd0ZXN0X2ZpbHRlcikKLSAgICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0TGlz
dCgpWzBdCi0gICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIE5vbmUpCi0gICAgICBzZWxm
LkFzc2VydFNldEVxdWFsKHRlc3RzX3J1biwgdGVzdHNfdG9fcnVuKQotICAgICMgcHlsaW50OiBl
bmFibGUtbXNnPUM2NDAzCi0KLSAgICAjIE5leHQsIHRlc3RzIHVzaW5nIHRoZSBjb21tYW5kIGxp
bmUgZmxhZy4KLQotICAgIGlmIGd0ZXN0X2ZpbHRlciBpcyBOb25lOgotICAgICAgYXJncyA9IFtd
Ci0gICAgZWxzZToKLSAgICAgIGFyZ3MgPSBbJy0tJXM9JXMnICUgKEZJTFRFUl9GTEFHLCBndGVz
dF9maWx0ZXIpXQotCi0gICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KGFyZ3Mp
WzBdCi0gICAgc2VsZi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIHRlc3RzX3RvX3J1bikKLQot
ICBkZWYgUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKHNlbGYsIGd0ZXN0X2ZpbHRlciwgdG90YWxf
c2hhcmRzLCB0ZXN0c190b19ydW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJn
cz1Ob25lLCBjaGVja19leGl0XzA9RmFsc2UpOgotICAgICIiIkNoZWNrcyB0aGF0IGJpbmFyeSBy
dW5zIGNvcnJlY3QgdGVzdHMgZm9yIHRoZSBnaXZlbiBmaWx0ZXIgYW5kIHNoYXJkLgotCi0gICAg
UnVucyBhbGwgc2hhcmRzIG9mIGd0ZXN0X2ZpbHRlcl91bml0dGVzdF8gd2l0aCB0aGUgZ2l2ZW4g
ZmlsdGVyLCBhbmQKLSAgICB2ZXJpZmllcyB0aGF0IHRoZSByaWdodCBzZXQgb2YgdGVzdHMgd2Vy
ZSBydW4uIFRoZSB1bmlvbiBvZiB0ZXN0cyBydW4KLSAgICBvbiBlYWNoIHNoYXJkIHNob3VsZCBi
ZSBpZGVudGljYWwgdG8gdGVzdHNfdG9fcnVuLCB3aXRob3V0IGR1cGxpY2F0ZXMuCi0KLSAgICBB
cmdzOgotICAgICAgZ3Rlc3RfZmlsdGVyOiBBIGZpbHRlciB0byBhcHBseSB0byB0aGUgdGVzdHMu
Ci0gICAgICB0b3RhbF9zaGFyZHM6IEEgdG90YWwgbnVtYmVyIG9mIHNoYXJkcyB0byBzcGxpdCB0
ZXN0IHJ1biBpbnRvLgotICAgICAgdGVzdHNfdG9fcnVuOiBBIHNldCBvZiB0ZXN0cyBleHBlY3Rl
ZCB0byBydW4uCi0gICAgICBhcmdzICAgOiAgICAgIEFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSB0
byB0aGUgdGVzdCBiaW5hcnkuCi0gICAgICBjaGVja19leGl0XzA6IFdoZW4gc2V0IHRvIGEgdHJ1
ZSB2YWx1ZSwgbWFrZSBzdXJlIHRoYXQgYWxsIHNoYXJkcwotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gMC4KLSAgICAiIiIKLQotICAgIHRlc3RzX3RvX3J1biA9IHNlbGYuQWRqdXN0Rm9yUGFy
YW1ldGVyaXplZFRlc3RzKHRlc3RzX3RvX3J1bikKLQotICAgICMgV2luZG93cyByZW1vdmVzIGVt
cHR5IHZhcmlhYmxlcyBmcm9tIHRoZSBlbnZpcm9ubWVudCB3aGVuIHBhc3NpbmcgaXQKLSAgICAj
IHRvIGEgbmV3IHByb2Nlc3MuICBUaGlzIG1lYW5zIGl0IGlzIGltcG9zc2libGUgdG8gcGFzcyBh
biBlbXB0eSBmaWx0ZXIKLSAgICAjIGludG8gYSBwcm9jZXNzIHVzaW5nIHRoZSBlbnZpcm9ubWVu
dCB2YXJpYWJsZS4gIEhvd2V2ZXIsIHdlIGNhbiBzdGlsbAotICAgICMgdGVzdCB0aGUgY2FzZSB3
aGVuIHRoZSB2YXJpYWJsZSBpcyBub3Qgc3VwcGxpZWQgKGkuZS4sIGd0ZXN0X2ZpbHRlciBpcwot
ICAgICMgTm9uZSkuCi0gICAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2NDAzCi0gICAgaWYgQ0FO
X1RFU1RfRU1QVFlfRklMVEVSIG9yIGd0ZXN0X2ZpbHRlciAhPSAnJzoKLSAgICAgIFNldEVudlZh
cihGSUxURVJfRU5WX1ZBUiwgZ3Rlc3RfZmlsdGVyKQotICAgICAgcGFydGl0aW9uID0gW10KLSAg
ICAgIGZvciBpIGluIHJhbmdlKDAsIHRvdGFsX3NoYXJkcyk6Ci0gICAgICAgICh0ZXN0c19ydW4s
IGV4aXRfY29kZSkgPSBSdW5XaXRoU2hhcmRpbmcodG90YWxfc2hhcmRzLCBpLCBhcmdzKQotICAg
ICAgICBpZiBjaGVja19leGl0XzA6Ci0gICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBleGl0
X2NvZGUpCi0gICAgICAgIHBhcnRpdGlvbi5hcHBlbmQodGVzdHNfcnVuKQotCi0gICAgICBzZWxm
LkFzc2VydFBhcnRpdGlvbklzVmFsaWQodGVzdHNfdG9fcnVuLCBwYXJ0aXRpb24pCi0gICAgICBT
ZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIE5vbmUpCi0gICAgIyBweWxpbnQ6IGVuYWJsZS1tc2c9
QzY0MDMKLQotICBkZWYgUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZChzZWxmLCBndGVzdF9m
aWx0ZXIsIHRlc3RzX3RvX3J1bik6Ci0gICAgIiIiQ2hlY2tzIHRoYXQgdGhlIGJpbmFyeSBydW5z
IGNvcnJlY3Qgc2V0IG9mIHRlc3RzIGZvciB0aGUgZ2l2ZW4gZmlsdGVyLgotCi0gICAgUnVucyBn
dGVzdF9maWx0ZXJfdW5pdHRlc3RfIHdpdGggdGhlIGdpdmVuIGZpbHRlciwgYW5kIGVuYWJsZXMK
LSAgICBkaXNhYmxlZCB0ZXN0cy4gVmVyaWZpZXMgdGhhdCB0aGUgcmlnaHQgc2V0IG9mIHRlc3Rz
IHdlcmUgcnVuLgotCi0gICAgQXJnczoKLSAgICAgIGd0ZXN0X2ZpbHRlcjogQSBmaWx0ZXIgdG8g
YXBwbHkgdG8gdGhlIHRlc3RzLgotICAgICAgdGVzdHNfdG9fcnVuOiBBIHNldCBvZiB0ZXN0cyBl
eHBlY3RlZCB0byBydW4uCi0gICAgIiIiCi0KLSAgICB0ZXN0c190b19ydW4gPSBzZWxmLkFkanVz
dEZvclBhcmFtZXRlcml6ZWRUZXN0cyh0ZXN0c190b19ydW4pCi0KLSAgICAjIENvbnN0cnVjdCB0
aGUgY29tbWFuZCBsaW5lLgotICAgIGFyZ3MgPSBbJy0tJXMnICUgQUxTT19SVU5fRElTQUJFRF9U
RVNUU19GTEFHXQotICAgIGlmIGd0ZXN0X2ZpbHRlciBpcyBub3QgTm9uZToKLSAgICAgIGFyZ3Mu
YXBwZW5kKCctLSVzPSVzJyAlIChGSUxURVJfRkxBRywgZ3Rlc3RfZmlsdGVyKSkKLQotICAgIHRl
c3RzX3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0TGlzdChhcmdzKVswXQotICAgIHNlbGYuQXNzZXJ0
U2V0RXF1YWwodGVzdHNfcnVuLCB0ZXN0c190b19ydW4pCi0KLSAgZGVmIHNldFVwKHNlbGYpOgot
ICAgICIiIlNldHMgdXAgdGVzdCBjYXNlLgotCi0gICAgRGV0ZXJtaW5lcyB3aGV0aGVyIHZhbHVl
LXBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQgaW4gdGhlIGJpbmFyeSBhbmQKLSAgICBz
ZXRzIHRoZSBmbGFncyBhY2NvcmRpbmdseS4KLSAgICAiIiIKLQotICAgIGdsb2JhbCBwYXJhbV90
ZXN0c19wcmVzZW50Ci0gICAgaWYgcGFyYW1fdGVzdHNfcHJlc2VudCBpcyBOb25lOgotICAgICAg
cGFyYW1fdGVzdHNfcHJlc2VudCA9IFBBUkFNX1RFU1RfUkVHRVguc2VhcmNoKAotICAgICAgICAg
IFJ1bkFuZFJldHVybk91dHB1dCgpKSBpcyBub3QgTm9uZQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJl
aGF2aW9yKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiBub3Qgc3BlY2lmeWlu
ZyB0aGUgZmlsdGVyLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoTm9uZSwgQUNUSVZFX1RF
U1RTKQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9yV2l0aFNoYXJkcyhzZWxmKToKLSAgICAi
IiJUZXN0cyB0aGUgYmVoYXZpb3Igd2l0aG91dCB0aGUgZmlsdGVyLCB3aXRoIHNoYXJkaW5nIGVu
YWJsZWQuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhOb25lLCAxLCBB
Q1RJVkVfVEVTVFMpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgMiwg
QUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKE5vbmUsIGxl
bihBQ1RJVkVfVEVTVFMpIC0gMSwgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5
V2l0aFNoYXJkaW5nKE5vbmUsIGxlbihBQ1RJVkVfVEVTVFMpLCBBQ1RJVkVfVEVTVFMpCi0gICAg
c2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgbGVuKEFDVElWRV9URVNUUykgKyAx
LCBBQ1RJVkVfVEVTVFMpCi0KLSAgZGVmIHRlc3RFbXB0eUZpbHRlcihzZWxmKToKLSAgICAiIiJU
ZXN0cyBhbiBlbXB0eSBmaWx0ZXIuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnJywgW10p
Ci0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJycsIDEsIFtdKQotICAgIHNlbGYu
UnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKCcnLCAyLCBbXSkKLQotICBkZWYgdGVzdEJhZEZpbHRl
cihzZWxmKToKLSAgICAiIiJUZXN0cyBhIGZpbHRlciB0aGF0IG1hdGNoZXMgbm90aGluZy4iIiIK
LQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdCYWRGaWx0ZXInLCBbXSkKLSAgICBzZWxmLlJ1bkFu
ZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0JhZEZpbHRlcicsIFtdKQotCi0gIGRlZiB0ZXN0RnVs
bE5hbWUoc2VsZik6Ci0gICAgIiIiVGVzdHMgZmlsdGVyaW5nIGJ5IGZ1bGwgbmFtZS4iIiIKLQot
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdGb29UZXN0Llh5eicsIFsnRm9vVGVzdC5YeXonXSkKLSAg
ICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0Zvb1Rlc3QuWHl6JywgWydGb29U
ZXN0Llh5eiddKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKCdGb29UZXN0Llh5
eicsIDUsIFsnRm9vVGVzdC5YeXonXSkKLQotICBkZWYgdGVzdFVuaXZlcnNhbEZpbHRlcnMoc2Vs
Zik6Ci0gICAgIiIiVGVzdHMgZmlsdGVycyB0aGF0IG1hdGNoIGV2ZXJ5dGhpbmcuIiIiCi0KLSAg
ICBzZWxmLlJ1bkFuZFZlcmlmeSgnKicsIEFDVElWRV9URVNUUykKLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeSgnKi4qJywgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJk
aW5nKCcqLionLCBsZW4oQUNUSVZFX1RFU1RTKSAtIDMsIEFDVElWRV9URVNUUykKLSAgICBzZWxm
LlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJyonLCBBQ1RJVkVfVEVTVFMgKyBESVNBQkxF
RF9URVNUUykKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJyouKicsIEFD
VElWRV9URVNUUyArIERJU0FCTEVEX1RFU1RTKQotCi0gIGRlZiB0ZXN0RmlsdGVyQnlUZXN0Q2Fz
ZShzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0ZXJpbmcgYnkgdGVzdCBjYXNlIG5hbWUuIiIiCi0K
LSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnRm9vVGVzdC4qJywgWydGb29UZXN0LkFiYycsICdGb29U
ZXN0Llh5eiddKQotCi0gICAgQkFaX1RFU1RTID0gWydCYXpUZXN0LlRlc3RPbmUnLCAnQmF6VGVz
dC5UZXN0QScsICdCYXpUZXN0LlRlc3RCJ10KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnQmF6VGVz
dC4qJywgQkFaX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgn
QmF6VGVzdC4qJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkFaX1RF
U1RTICsgWydCYXpUZXN0LkRJU0FCTEVEX1Rlc3RDJ10pCi0KLSAgZGVmIHRlc3RGaWx0ZXJCeVRl
c3Qoc2VsZik6Ci0gICAgIiIiVGVzdHMgZmlsdGVyaW5nIGJ5IHRlc3QgbmFtZS4iIiIKLQotICAg
IHNlbGYuUnVuQW5kVmVyaWZ5KCcqLlRlc3RPbmUnLCBbJ0JhclRlc3QuVGVzdE9uZScsICdCYXpU
ZXN0LlRlc3RPbmUnXSkKLQotICBkZWYgdGVzdEZpbHRlckRpc2FibGVkVGVzdHMoc2VsZik6Ci0g
ICAgIiIiU2VsZWN0IG9ubHkgdGhlIGRpc2FibGVkIHRlc3RzIHRvIHJ1bi4iIiIKLQotICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KCdESVNBQkxFRF9Gb29iYXJUZXN0LlRlc3QxJywgW10pCi0gICAgc2Vs
Zi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdESVNBQkxFRF9Gb29iYXJUZXN0LlRlc3Qx
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydESVNBQkxFRF9Gb29i
YXJUZXN0LlRlc3QxJ10pCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKkRJU0FCTEVEXyonLCBb
XSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJypESVNBQkxFRF8qJywg
RElTQUJMRURfVEVTVFMpCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi5ESVNBQkxFRF8qJywg
W10pCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCcqLkRJU0FCTEVEXyon
LCBbCi0gICAgICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rlc3RGb3VyJywKLSAgICAgICAgJ0JhclRl
c3QuRElTQUJMRURfVGVzdEZpdmUnLAotICAgICAgICAnQmF6VGVzdC5ESVNBQkxFRF9UZXN0Qycs
Ci0gICAgICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywKLSAgICAgICAg
XSkKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdESVNBQkxFRF8qJywgW10pCi0gICAgc2VsZi5S
dW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdESVNBQkxFRF8qJywgWwotICAgICAgICAnRElT
QUJMRURfRm9vYmFyVGVzdC5UZXN0MScsCi0gICAgICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LkRJ
U0FCTEVEX1Rlc3QyJywKLSAgICAgICAgJ0RJU0FCTEVEX0Zvb2JhcmJhelRlc3QuVGVzdEEnLAot
ICAgICAgICBdKQotCi0gIGRlZiB0ZXN0V2lsZGNhcmRJblRlc3RDYXNlTmFtZShzZWxmKToKLSAg
ICAiIiJUZXN0cyB1c2luZyB3aWxkY2FyZCBpbiB0aGUgdGVzdCBjYXNlIG5hbWUuIiIiCi0KLSAg
ICBzZWxmLlJ1bkFuZFZlcmlmeSgnKmEqLionLCBbCi0gICAgICAgICdCYXJUZXN0LlRlc3RPbmUn
LAotICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKLSAgICAgICAgJ0JhclRlc3QuVGVzdFRocmVl
JywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAgICAgICAgJ0JhelRlc3QuVGVzdEEn
LAotICAgICAgICAnQmF6VGVzdC5UZXN0QicsIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RT
KQotCi0gIGRlZiB0ZXN0V2lsZGNhcmRJblRlc3ROYW1lKHNlbGYpOgotICAgICIiIlRlc3RzIHVz
aW5nIHdpbGRjYXJkIGluIHRoZSB0ZXN0IG5hbWUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlm
eSgnKi4qQSonLCBbJ0Zvb1Rlc3QuQWJjJywgJ0JhelRlc3QuVGVzdEEnXSkKLQotICBkZWYgdGVz
dEZpbHRlcldpdGhvdXREb3Qoc2VsZik6Ci0gICAgIiIiVGVzdHMgYSBmaWx0ZXIgdGhhdCBoYXMg
bm8gJy4nIGluIGl0LiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJyp6KicsIFsKLSAgICAg
ICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAgICAgICAg
J0JhelRlc3QuVGVzdEEnLAotICAgICAgICAnQmF6VGVzdC5UZXN0QicsCi0gICAgICAgIF0pCi0K
LSAgZGVmIHRlc3RUd29QYXR0ZXJucyhzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0ZXJzIHRoYXQg
Y29uc2lzdCBvZiB0d28gcGF0dGVybnMuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnRm9v
Ki4qOipBKicsIFsKLSAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAgICAgJ0Zvb1Rlc3QuWHl6
JywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0QScsCi0gICAgICAgIF0pCi0KLSAgICAjIEFuIGVt
cHR5IHBhdHRlcm4gKyBhIG5vbi1lbXB0eSBvbmUKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnOipB
KicsIFsnRm9vVGVzdC5BYmMnLCAnQmF6VGVzdC5UZXN0QSddKQotCi0gIGRlZiB0ZXN0VGhyZWVQ
YXR0ZXJucyhzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0ZXJzIHRoYXQgY29uc2lzdCBvZiB0aHJl
ZSBwYXR0ZXJucy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqb28qOipBKjoqT25lJywg
WwotICAgICAgICAnRm9vVGVzdC5BYmMnLAotICAgICAgICAnRm9vVGVzdC5YeXonLAotCi0gICAg
ICAgICdCYXJUZXN0LlRlc3RPbmUnLAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RPbmUnLAotICAg
ICAgICAnQmF6VGVzdC5UZXN0QScsCi0gICAgICAgIF0pCi0KLSAgICAjIFRoZSAybmQgcGF0dGVy
biBpcyBlbXB0eS4KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKm9vKjo6Kk9uZScsIFsKLSAgICAg
ICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICAgICAnQmFy
VGVzdC5UZXN0T25lJywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAgICAgICAgXSkK
LQotICAgICMgVGhlIGxhc3QgMiBwYXR0ZXJucyBhcmUgZW1wdHkuCi0gICAgc2VsZi5SdW5BbmRW
ZXJpZnkoJypvbyo6OicsIFsKLSAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAgICAgJ0Zvb1Rl
c3QuWHl6JywKLSAgICAgICAgXSkKLQotICBkZWYgdGVzdE5lZ2F0aXZlRmlsdGVycyhzZWxmKToK
LSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi1CYXpUZXN0LlRlc3RPbmUnLCBbCi0gICAgICAgICdG
b29UZXN0LkFiYycsCi0gICAgICAgICdGb29UZXN0Llh5eicsCi0KLSAgICAgICAgJ0JhclRlc3Qu
VGVzdE9uZScsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAotICAgICAgICAnQmFyVGVzdC5U
ZXN0VGhyZWUnLAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RBJywKLSAgICAgICAgJ0JhelRlc3Qu
VGVzdEInLAotICAgICAgICBdICsgREVBVEhfVEVTVFMgKyBQQVJBTV9URVNUUykKLQotICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KCcqLUZvb1Rlc3QuQWJjOkJhelRlc3QuKicsIFsKLSAgICAgICAgJ0Zv
b1Rlc3QuWHl6JywKLQotICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKLSAgICAgICAgJ0JhclRl
c3QuVGVzdFR3bycsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCi0gICAgICAgIF0gKyBE
RUFUSF9URVNUUyArIFBBUkFNX1RFU1RTKQotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0JhclRl
c3QuKi1CYXJUZXN0LlRlc3RPbmUnLCBbCi0gICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAotICAg
ICAgICAnQmFyVGVzdC5UZXN0VGhyZWUnLAotICAgICAgICBdKQotCi0gICAgIyBUZXN0cyB3aXRo
b3V0IGxlYWRpbmcgJyonLgotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCctRm9vVGVzdC5BYmM6Rm9v
VGVzdC5YeXo6QmF6VGVzdC4qJywgWwotICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKLSAgICAg
ICAgJ0JhclRlc3QuVGVzdFR3bycsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCi0gICAg
ICAgIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTKQotCi0gICAgIyBWYWx1ZSBwYXJhbWV0
ZXJpemVkIHRlc3RzLgotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLyonLCBQQVJBTV9URVNUUykK
LQotICAgICMgVmFsdWUgcGFyYW1ldGVyaXplZCB0ZXN0cyBmaWx0ZXJpbmcgYnkgdGhlIHNlcXVl
bmNlIG5hbWUuCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJ1NlcVAvKicsIFsKLSAgICAgICAgJ1Nl
cVAvUGFyYW1UZXN0LlRlc3RYLzAnLAotICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMScs
Ci0gICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAgICAgJ1NlcVAvUGFyYW1U
ZXN0LlRlc3RZLzEnLAotICAgICAgICBdKQotCi0gICAgIyBWYWx1ZSBwYXJhbWV0ZXJpemVkIHRl
c3RzIGZpbHRlcmluZyBieSB0aGUgdGVzdCBuYW1lLgotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcq
LzAnLCBbCi0gICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywKLSAgICAgICAgJ1NlcVAv
UGFyYW1UZXN0LlRlc3RZLzAnLAotICAgICAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFgvMCcsCi0g
ICAgICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAgICAgXSkKLQotICBkZWYgdGVz
dEZsYWdPdmVycmlkZXNFbnZWYXIoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCB0aGUgZmlsdGVy
IGZsYWcgb3ZlcnJpZGVzIHRoZSBmaWx0ZXJpbmcgZW52LiB2YXJpYWJsZS4iIiIKLQotICAgIFNl
dEVudlZhcihGSUxURVJfRU5WX1ZBUiwgJ0ZvbyonKQotICAgIGFyZ3MgPSBbJy0tJXM9JXMnICUg
KEZJTFRFUl9GTEFHLCAnKk9uZScpXQotICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0
TGlzdChhcmdzKVswXQotICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgTm9uZSkKLQotICAg
IHNlbGYuQXNzZXJ0U2V0RXF1YWwodGVzdHNfcnVuLCBbJ0JhclRlc3QuVGVzdE9uZScsICdCYXpU
ZXN0LlRlc3RPbmUnXSkKLQotICBkZWYgdGVzdFNoYXJkU3RhdHVzRmlsZUlzQ3JlYXRlZChzZWxm
KToKLSAgICAiIiJUZXN0cyB0aGF0IHRoZSBzaGFyZCBmaWxlIGlzIGNyZWF0ZWQgaWYgc3BlY2lm
aWVkIGluIHRoZSBlbnZpcm9ubWVudC4iIiIKLQotICAgIHNoYXJkX3N0YXR1c19maWxlID0gb3Mu
cGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdzaGFyZF9zdGF0dXNfZmlsZScpCi0gICAgc2VsZi5hc3Nl
cnRfKG5vdCBvcy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkpCi0KLSAgICBleHRyYV9l
bnYgPSB7U0hBUkRfU1RBVFVTX0ZJTEVfRU5WX1ZBUjogc2hhcmRfc3RhdHVzX2ZpbGV9Ci0gICAg
dHJ5OgotICAgICAgSW52b2tlV2l0aE1vZGlmaWVkRW52KGV4dHJhX2VudiwgUnVuQW5kUmV0dXJu
T3V0cHV0KQotICAgIGZpbmFsbHk6Ci0gICAgICBzZWxmLmFzc2VydF8ob3MucGF0aC5leGlzdHMo
c2hhcmRfc3RhdHVzX2ZpbGUpKQotICAgICAgb3MucmVtb3ZlKHNoYXJkX3N0YXR1c19maWxlKQot
Ci0gIGRlZiB0ZXN0U2hhcmRTdGF0dXNGaWxlSXNDcmVhdGVkV2l0aExpc3RUZXN0cyhzZWxmKToK
LSAgICAiIiJUZXN0cyB0aGF0IHRoZSBzaGFyZCBmaWxlIGlzIGNyZWF0ZWQgd2l0aCB0aGUgImxp
c3RfdGVzdHMiIGZsYWcuIiIiCi0KLSAgICBzaGFyZF9zdGF0dXNfZmlsZSA9IG9zLnBhdGguam9p
bihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnc2hhcmRfc3RhdHVzX2ZpbGUyJykKLSAgICBzZWxmLmFzc2VydF8obm90
IG9zLnBhdGguZXhpc3RzKHNoYXJkX3N0YXR1c19maWxlKSkKLQotICAgIGV4dHJhX2VudiA9IHtT
SEFSRF9TVEFUVVNfRklMRV9FTlZfVkFSOiBzaGFyZF9zdGF0dXNfZmlsZX0KLSAgICB0cnk6Ci0g
ICAgICBvdXRwdXQgPSBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bkFuZFJldHVybk91dHB1dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbTElTVF9URVNUU19GTEFHXSkKLSAgICBmaW5h
bGx5OgotICAgICAgIyBUaGlzIGFzc2VydGlvbiBlbnN1cmVzIHRoYXQgR29vZ2xlIFRlc3QgZW51
bWVyYXRlZCB0aGUgdGVzdHMgYXMKLSAgICAgICMgb3Bwb3NlZCB0byBydW5uaW5nIHRoZW0uCi0g
ICAgICBzZWxmLmFzc2VydF8oJ1s9PT09PT09PT09XScgbm90IGluIG91dHB1dCwKLSAgICAgICAg
ICAgICAgICAgICAnVW5leHBlY3RlZCBvdXRwdXQgZHVyaW5nIHRlc3QgZW51bWVyYXRpb24uXG4n
Ci0gICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBlbnN1cmUgdGhhdCBMSVNUX1RFU1RTX0ZMQUcg
aXMgYXNzaWduZWQgdGhlXG4nCi0gICAgICAgICAgICAgICAgICAgJ2NvcnJlY3QgZmxhZyB2YWx1
ZSBmb3IgbGlzdGluZyBHb29nbGUgVGVzdCB0ZXN0cy4nKQotCi0gICAgICBzZWxmLmFzc2VydF8o
b3MucGF0aC5leGlzdHMoc2hhcmRfc3RhdHVzX2ZpbGUpKQotICAgICAgb3MucmVtb3ZlKHNoYXJk
X3N0YXR1c19maWxlKQotCi0gIGlmIFNVUFBPUlRTX0RFQVRIX1RFU1RTOgotICAgIGRlZiB0ZXN0
U2hhcmRpbmdXb3Jrc1dpdGhEZWF0aFRlc3RzKHNlbGYpOgotICAgICAgIiIiVGVzdHMgaW50ZWdy
YXRpb24gd2l0aCBkZWF0aCB0ZXN0cyBhbmQgc2hhcmRpbmcuIiIiCi0KLSAgICAgIGd0ZXN0X2Zp
bHRlciA9ICdIYXNEZWF0aFRlc3QuKjpTZXFQLyonCi0gICAgICBleHBlY3RlZF90ZXN0cyA9IFsK
LSAgICAgICAgICAnSGFzRGVhdGhUZXN0LlRlc3QxJywKLSAgICAgICAgICAnSGFzRGVhdGhUZXN0
LlRlc3QyJywKLQotICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywKLSAgICAgICAg
ICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMScsCi0gICAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRl
c3RZLzAnLAotICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8xJywKLSAgICAgICAgICBd
Ci0KLSAgICAgIGZvciBmbGFnIGluIFsnLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlPXRocmVhZHNh
ZmUnLAotICAgICAgICAgICAgICAgICAgICctLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGU9ZmFzdCdd
OgotICAgICAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhndGVzdF9maWx0ZXIsIDMs
IGV4cGVjdGVkX3Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGVja19leGl0XzA9VHJ1ZSwgYXJncz1bZmxhZ10pCi0gICAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5
V2l0aFNoYXJkaW5nKGd0ZXN0X2ZpbHRlciwgNSwgZXhwZWN0ZWRfdGVzdHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2V4aXRfMD1UcnVlLCBhcmdzPVtmbGFn
XSkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWlu
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVy
X3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVy
X3VuaXR0ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI1NTA0ZmU5NGFm
YzE3N2M0NmNiYzEzNWZlYzY3NWM1NTRkMmUwZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Zp
bHRlcl91bml0dGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotLy8gQ29w
eXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmli
dXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2Fu
QGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVz
dCB0ZXN0IGZpbHRlcnMuCi0vLwotLy8gQSB1c2VyIGNhbiBzcGVjaWZ5IHdoaWNoIHRlc3Qocykg
aW4gYSBHb29nbGUgVGVzdCBwcm9ncmFtIHRvIHJ1biB2aWEKLS8vIGVpdGhlciB0aGUgR1RFU1Rf
RklMVEVSIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZSAtLWd0ZXN0X2ZpbHRlcgotLy8gZmxh
Zy4gIFRoaXMgaXMgdXNlZCBmb3IgdGVzdGluZyBzdWNoIGZ1bmN0aW9uYWxpdHkuCi0vLwotLy8g
VGhlIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRob24gdW5pdCB0ZXN0LiAgRG9u
J3QgcnVuIGl0Ci0vLyBkaXJlY3RseS4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLW5h
bWVzcGFjZSB7Ci0KLS8vIFRlc3QgY2FzZSBGb29UZXN0LgotCi1jbGFzcyBGb29UZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVEVTVF9GKEZvb1Rlc3QsIEFiYykgewotfQotCi1U
RVNUX0YoRm9vVGVzdCwgWHl6KSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwot
fQotCi0vLyBUZXN0IGNhc2UgQmFyVGVzdC4KLQotVEVTVChCYXJUZXN0LCBUZXN0T25lKSB7Ci19
Ci0KLVRFU1QoQmFyVGVzdCwgVGVzdFR3bykgewotfQotCi1URVNUKEJhclRlc3QsIFRlc3RUaHJl
ZSkgewotfQotCi1URVNUKEJhclRlc3QsIERJU0FCTEVEX1Rlc3RGb3VyKSB7Ci0gIEZBSUwoKSA8
PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi1URVNUKEJhclRlc3QsIERJU0FCTEVEX1Rlc3RG
aXZlKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi0vLyBUZXN0IGNh
c2UgQmF6VGVzdC4KLQotVEVTVChCYXpUZXN0LCBUZXN0T25lKSB7Ci0gIEZBSUwoKSA8PCAiRXhw
ZWN0ZWQgZmFpbHVyZS4iOwotfQotCi1URVNUKEJhelRlc3QsIFRlc3RBKSB7Ci19Ci0KLVRFU1Qo
QmF6VGVzdCwgVGVzdEIpIHsKLX0KLQotVEVTVChCYXpUZXN0LCBESVNBQkxFRF9UZXN0Qykgewot
ICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKLX0KLQotLy8gVGVzdCBjYXNlIEhhc0Rl
YXRoVGVzdAotCi1URVNUKEhhc0RlYXRoVGVzdCwgVGVzdDEpIHsKLSAgRVhQRUNUX0RFQVRIX0lG
X1NVUFBPUlRFRChleGl0KDEpLCAiLioiKTsKLX0KLQotLy8gV2UgbmVlZCBhdCBsZWFzdCB0d28g
ZGVhdGggdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGFsbCBkZWF0aCB0ZXN0cwotLy8gYXJl
bid0IG9uIHRoZSBmaXJzdCBzaGFyZC4KLVRFU1QoSGFzRGVhdGhUZXN0LCBUZXN0MikgewotICBF
WFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKGV4aXQoMSksICIuKiIpOwotfQotCi0vLyBUZXN0IGNh
c2UgRm9vYmFyVGVzdAotCi1URVNUKERJU0FCTEVEX0Zvb2JhclRlc3QsIFRlc3QxKSB7Ci0gIEZB
SUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi1URVNUKERJU0FCTEVEX0Zvb2JhclRl
c3QsIERJU0FCTEVEX1Rlc3QyKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwot
fQotCi0vLyBUZXN0IGNhc2UgRm9vYmFyYmF6VGVzdAotCi1URVNUKERJU0FCTEVEX0Zvb2JhcmJh
elRlc3QsIFRlc3RBKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi0j
aWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLWNsYXNzIFBhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0V2l0aFBhcmFtPGludD4gewotfTsKLQotVEVTVF9QKFBhcmFtVGVzdCwgVGVzdFgpIHsK
LX0KLQotVEVTVF9QKFBhcmFtVGVzdCwgVGVzdFkpIHsKLX0KLQotSU5TVEFOVElBVEVfVEVTVF9D
QVNFX1AoU2VxUCwgUGFyYW1UZXN0LCB0ZXN0aW5nOjpWYWx1ZXMoMSwgMikpOwotSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoU2VxUSwgUGFyYW1UZXN0LCB0ZXN0aW5nOjpWYWx1ZXMoNSwgNikpOwot
I2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi19ICAvLyBuYW1lc3BhY2UKLQotaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7Ci0gIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRl
c3QoJmFyZ2MsIGFyZ3YpOwotCi0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVzdC5weSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5CmluZGV4IDNjYjRj
NDhlMGI0NjI4ZDlhYTdjNmYzMjA3YWI3ZWUxMGNkMjJiYTMuLjU4MmQyNGMyZGNjZTg5NDUzOGFh
NjNjY2JkNjEyMGJkZDRiMzUwYTAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfaGVscF90ZXN0LnB5CkBAIC0yOSwyNyArMjksMjYgQEAKICMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKLSIiIlRlc3RzIHRoZSAtLWhlbHAgZmxhZyBvZiBHb29nbGUgQysr
IFRlc3RpbmcgRnJhbWV3b3JrLgorIiIiVGVzdHMgdGhlIC0taGVscCBmbGFnIG9mIEdvb2dsZSBD
KysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsuCiAKIFNZTk9QU0lTCi0gICAgICAgZ3Rl
c3RfaGVscF90ZXN0LnB5IC0tZ3Rlc3RfYnVpbGRfZGlyPUJVSUxEL0RJUgorICAgICAgIGd0ZXN0
X2hlbHBfdGVzdC5weSAtLWJ1aWxkX2Rpcj1CVUlMRC9ESVIKICAgICAgICAgICMgd2hlcmUgQlVJ
TEQvRElSIGNvbnRhaW5zIHRoZSBidWlsdCBndGVzdF9oZWxwX3Rlc3RfIGZpbGUuCiAgICAgICAg
Z3Rlc3RfaGVscF90ZXN0LnB5CiAiIiIKIAotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAo
WmhhbnlvbmcgV2FuKScKLQogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBndGVzdF90ZXN0
X3V0aWxzCiAKIAorSVNfTElOVVggPSBvcy5uYW1lID09ICdwb3NpeCcgYW5kIG9zLnVuYW1lKClb
MF0gPT0gJ0xpbnV4JwogSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250JwogCiBQUk9HUkFNX1BB
VEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ3Rlc3RfaGVscF90
ZXN0XycpCiBGTEFHX1BSRUZJWCA9ICctLWd0ZXN0XycKLUNBVENIX0VYQ0VQVElPTlNfRkxBRyA9
IEZMQUdfUFJFRklYICsgJ2NhdGNoX2V4Y2VwdGlvbnMnCiBERUFUSF9URVNUX1NUWUxFX0ZMQUcg
PSBGTEFHX1BSRUZJWCArICdkZWF0aF90ZXN0X3N0eWxlJworU1RSRUFNX1JFU1VMVF9UT19GTEFH
ID0gRkxBR19QUkVGSVggKyAnc3RyZWFtX3Jlc3VsdF90bycKIFVOS05PV05fRkxBRyA9IEZMQUdf
UFJFRklYICsgJ3Vua25vd25fZmxhZ19mb3JfdGVzdGluZycKIExJU1RfVEVTVFNfRkxBRyA9IEZM
QUdfUFJFRklYICsgJ2xpc3RfdGVzdHMnCiBJTkNPUlJFQ1RfRkxBR19WQVJJQU5UUyA9IFtyZS5z
dWIoJ14tLScsICctJywgTElTVF9URVNUU19GTEFHKSwKQEAgLTcyLDcgKzcxLDggQEAgSEVMUF9S
RUdFWCA9IHJlLmNvbXBpbGUoCiAgICAgRkxBR19QUkVGSVggKyByJ3ByaW50X3RpbWUuKicgKwog
ICAgIEZMQUdfUFJFRklYICsgcidvdXRwdXQ9LionICsKICAgICBGTEFHX1BSRUZJWCArIHInYnJl
YWtfb25fZmFpbHVyZS4qJyArCi0gICAgRkxBR19QUkVGSVggKyByJ3Rocm93X29uX2ZhaWx1cmUu
KicsCisgICAgRkxBR19QUkVGSVggKyByJ3Rocm93X29uX2ZhaWx1cmUuKicgKworICAgIEZMQUdf
UFJFRklYICsgcidjYXRjaF9leGNlcHRpb25zPTAuKicsCiAgICAgcmUuRE9UQUxMKQogCiAKQEAg
LTEwOSwxMCArMTA5LDExIEBAIGNsYXNzIEdUZXN0SGVscFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5U
ZXN0Q2FzZSk6CiAgICAgZXhpdF9jb2RlLCBvdXRwdXQgPSBSdW5XaXRoRmxhZyhmbGFnKQogICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKDAsIGV4aXRfY29kZSkKICAgICBzZWxmLmFzc2VydF8oSEVMUF9S
RUdFWC5zZWFyY2gob3V0cHV0KSwgb3V0cHV0KQotICAgIGlmIElTX1dJTkRPV1M6Ci0gICAgICBz
ZWxmLmFzc2VydF8oQ0FUQ0hfRVhDRVBUSU9OU19GTEFHIGluIG91dHB1dCwgb3V0cHV0KQorCisg
ICAgaWYgSVNfTElOVVg6CisgICAgICBzZWxmLmFzc2VydF8oU1RSRUFNX1JFU1VMVF9UT19GTEFH
IGluIG91dHB1dCwgb3V0cHV0KQogICAgIGVsc2U6Ci0gICAgICBzZWxmLmFzc2VydF8oQ0FUQ0hf
RVhDRVBUSU9OU19GTEFHIG5vdCBpbiBvdXRwdXQsIG91dHB1dCkKKyAgICAgIHNlbGYuYXNzZXJ0
XyhTVFJFQU1fUkVTVUxUX1RPX0ZMQUcgbm90IGluIG91dHB1dCwgb3V0cHV0KQogCiAgICAgaWYg
U1VQUE9SVFNfREVBVEhfVEVTVFMgYW5kIG5vdCBJU19XSU5ET1dTOgogICAgICAgc2VsZi5hc3Nl
cnRfKERFQVRIX1RFU1RfU1RZTEVfRkxBRyBpbiBvdXRwdXQsIG91dHB1dCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0Xy5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0Xy5jYwppbmRleCBhYWQwZDcy
ZDc2NzUzNWUxYjdhNzIyMjQ3NzU0MzAxMDMzZTcxMDZmLi43NTBhZTZjZTk1ZmNiY2IzMzhlZDVk
YjJiNTg4ZjE1Y2RkNWMyZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X2hlbHBfdGVzdF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF9oZWxwX3Rlc3RfLmNjCkBAIC0yNiwxMyArMjYsMTIgQEAKIC8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
IC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogLy8gVGhpcyBwcm9ncmFtIGlzIG1lYW50IHRvIGJl
IHJ1biBieSBndGVzdF9oZWxwX3Rlc3QucHkuICBEbyBub3QgcnVuCiAvLyBpdCBkaXJlY3RseS4K
IAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAog
Ly8gV2hlbiBhIGhlbHAgZmxhZyBpcyBzcGVjaWZpZWQsIHRoaXMgcHJvZ3JhbSBzaG91bGQgc2tp
cCB0aGUgdGVzdHMKIC8vIGFuZCBleGl0IHdpdGggMDsgb3RoZXJ3aXNlIHRoZSBmb2xsb3dpbmcg
dGVzdCB3aWxsIGJlIGV4ZWN1dGVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF9qc29uX3Rlc3RfdXRpbHMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X2pzb25fdGVzdF91dGlscy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmJiZmMyODhmODJi
Mzg3Y2Q4MzQ0NmMwYTA1YmExNjdiMWFhNzU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9qc29uX3Rlc3RfdXRpbHMucHkKQEAgLTAsMCArMSw2
MCBAQAorIyBDb3B5cmlnaHQgMjAxOCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVzdCB1dGlsaXRpZXMgZm9yIGd0ZXN0
X2pzb25fb3V0cHV0LiIiIgorCitpbXBvcnQgcmUKKworCitkZWYgbm9ybWFsaXplKG9iaik6Cisg
ICIiIk5vcm1hbGl6ZSBvdXRwdXQgb2JqZWN0LgorCisgIEFyZ3M6CisgICAgIG9iajogR29vZ2xl
IFRlc3QncyBKU09OIG91dHB1dCBvYmplY3QgdG8gbm9ybWFsaXplLgorCisgIFJldHVybnM6Cisg
ICAgIE5vcm1hbGl6ZWQgb3V0cHV0IHdpdGhvdXQgYW55IHJlZmVyZW5jZXMgdG8gdHJhbnNpZW50
IGluZm9ybWF0aW9uIHRoYXQgbWF5CisgICAgIGNoYW5nZSBmcm9tIHJ1biB0byBydW4uCisgICIi
IgorICBkZWYgX25vcm1hbGl6ZShrZXksIHZhbHVlKToKKyAgICBpZiBrZXkgPT0gJ3RpbWUnOgor
ICAgICAgcmV0dXJuIHJlLnN1YihyJ15cZCsoXC5cZCspP3MkJywgJyonLCB2YWx1ZSkKKyAgICBl
bGlmIGtleSA9PSAndGltZXN0YW1wJzoKKyAgICAgIHJldHVybiByZS5zdWIocideXGR7NH0tXGRc
ZC1cZFxkVFxkXGQ6XGRcZDpcZFxkWiQnLCAnKicsIHZhbHVlKQorICAgIGVsaWYga2V5ID09ICdm
YWlsdXJlJzoKKyAgICAgIHZhbHVlID0gcmUuc3ViKHInXi4qWy9cXF0oLio6KVxkK1xuJywgJ1xc
MSpcbicsIHZhbHVlKQorICAgICAgcmV0dXJuIHJlLnN1YihyJ1N0YWNrIHRyYWNlOlxuKC58XG4p
KicsICdTdGFjayB0cmFjZTpcbionLCB2YWx1ZSkKKyAgICBlbHNlOgorICAgICAgcmV0dXJuIG5v
cm1hbGl6ZSh2YWx1ZSkKKyAgaWYgaXNpbnN0YW5jZShvYmosIGRpY3QpOgorICAgIHJldHVybiB7
azogX25vcm1hbGl6ZShrLCB2KSBmb3IgaywgdiBpbiBvYmouaXRlbXMoKX0KKyAgaWYgaXNpbnN0
YW5jZShvYmosIGxpc3QpOgorICAgIHJldHVybiBbbm9ybWFsaXplKHgpIGZvciB4IGluIG9ial0K
KyAgZWxzZToKKyAgICByZXR1cm4gb2JqCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X291dHB1dF91bml0dGVzdC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
YmJhN2VhMmNmZDM3Y2FkNTUwOWY0MGY4ZThiMDAyMjcwNmJlNzg0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X291dHB1dF91bml0dGVz
dC5weQpAQCAtMCwwICsxLDE0MSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHly
aWdodCAyMDA2LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyIiIlVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0ZXN0X2xpc3RfdGVz
dHMgZmxhZy4KKworQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gbGlzdCBhbGwgdGVzdHMg
Ynkgc3BlY2lmeWluZyB0aGUKKy0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLiBJZiBvdXRwdXQgaXMg
cmVxdWVzdGVkLCB2aWEgLS1ndGVzdF9vdXRwdXQ9eG1sCitvciAtLWd0ZXN0X291dHB1dD1qc29u
LCB0aGUgdGVzdHMgYXJlIGxpc3RlZCwgd2l0aCBleHRyYSBpbmZvcm1hdGlvbiBpbiB0aGUKK291
dHB1dCBmaWxlLgorVGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5IGJ5IGludm9r
aW5nIGd0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0XworIChhIHByb2dyYW0gd3JpdHRlbiB3aXRo
IEdvb2dsZSBUZXN0KSB0aGUgY29tbWFuZCBsaW5lIGZsYWdzLgorIiIiCisKK2ltcG9ydCBvcwor
aW1wb3J0IHJlCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitHVEVTVF9MSVNUX1RFU1RTX0ZM
QUcgPSAnLS1ndGVzdF9saXN0X3Rlc3RzJworR1RFU1RfT1VUUFVUX0ZMQUcgPSAnLS1ndGVzdF9v
dXRwdXQnCisKK0VYUEVDVEVEX1hNTCA9ICIiIjxcP3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJVVEYtOCJcPz4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIyIiBuYW1lPSJBbGxUZXN0cyI+CisgIDx0
ZXN0c3VpdGUgbmFtZT0iRm9vVGVzdCIgdGVzdHM9IjIiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJU
ZXN0MSIgZmlsZT0iLipndGVzdF9saXN0X291dHB1dF91bml0dGVzdF8uY2MiIGxpbmU9IjQzIiAv
PgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJUZXN0MiIgZmlsZT0iLipndGVzdF9saXN0X291dHB1dF91
bml0dGVzdF8uY2MiIGxpbmU9IjQ1IiAvPgorICA8L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1aXRlcz4K
KyIiIgorCitFWFBFQ1RFRF9KU09OID0gIiIieworICAidGVzdHMiOiAyLAorICAibmFtZSI6ICJB
bGxUZXN0cyIsCisgICJ0ZXN0c3VpdGVzIjogXFsKKyAgICB7CisgICAgICAibmFtZSI6ICJGb29U
ZXN0IiwKKyAgICAgICJ0ZXN0cyI6IDIsCisgICAgICAidGVzdHN1aXRlIjogXFsKKyAgICAgICAg
eworICAgICAgICAgICJuYW1lIjogIlRlc3QxIiwKKyAgICAgICAgICAiZmlsZSI6ICIuKmd0ZXN0
X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0Xy5jYyIsCisgICAgICAgICAgImxpbmUiOiA0MworICAgICAg
ICB9LAorICAgICAgICB7CisgICAgICAgICAgIm5hbWUiOiAiVGVzdDIiLAorICAgICAgICAgICJm
aWxlIjogIi4qZ3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3RfLmNjIiwKKyAgICAgICAgICAibGlu
ZSI6IDQ1CisgICAgICAgIH0KKyAgICAgIFxdCisgICAgfQorICBcXQorfQorIiIiCisKKworY2xh
c3MgR1Rlc3RMaXN0VGVzdHNPdXRwdXRVbml0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNl
KToKKyAgIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIGxpc3QgdGVzdHMgd2l0aCBvdXRw
dXQgdG8gZmlsZSBmdW5jdGlvbmFsaXR5LgorICAiIiIKKworICBkZWYgdGVzdFhtbChzZWxmKToK
KyAgICAiIiJWZXJpZmllcyBYTUwgb3V0cHV0IGZvciBsaXN0aW5nIHRlc3RzIGluIGEgR29vZ2xl
IFRlc3QgYmluYXJ5LgorCisgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBh
biBlbXB0eSBYTUwgb3V0cHV0LCBhbmQKKyAgICB0ZXN0cyB0aGF0IHRoZSBYTUwgb3V0cHV0IGlz
IGV4cGVjdGVkLgorICAgICIiIgorICAgIHNlbGYuX1Rlc3RPdXRwdXQoJ3htbCcsIEVYUEVDVEVE
X1hNTCkKKworICBkZWYgdGVzdEpTT04oc2VsZik6CisgICAgIiIiVmVyaWZpZXMgWE1MIG91dHB1
dCBmb3IgbGlzdGluZyB0ZXN0cyBpbiBhIEdvb2dsZSBUZXN0IGJpbmFyeS4KKworICAgIFJ1bnMg
YSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkgWE1MIG91dHB1dCwgYW5kCisg
ICAgdGVzdHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBleHBlY3RlZC4KKyAgICAiIiIKKyAgICBz
ZWxmLl9UZXN0T3V0cHV0KCdqc29uJywgRVhQRUNURURfSlNPTikKKworICBkZWYgX0dldE91dHB1
dChzZWxmLCBvdXRfZm9ybWF0KToKKyAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4oZ3Rlc3Rf
dGVzdF91dGlscy5HZXRUZW1wRGlyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0
ZXN0X291dC4nICsgb3V0X2Zvcm1hdCkKKyAgICBndGVzdF9wcm9nX3BhdGggPSBndGVzdF90ZXN0
X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKKyAgICAgICAgJ2d0ZXN0X2xpc3Rfb3V0cHV0
X3VuaXR0ZXN0XycpCisKKyAgICBjb21tYW5kID0gKFsKKyAgICAgICAgZ3Rlc3RfcHJvZ19wYXRo
LAorICAgICAgICAnJXM9JXM6JXMnICUgKEdURVNUX09VVFBVVF9GTEFHLCBvdXRfZm9ybWF0LCBm
aWxlX3BhdGgpLAorICAgICAgICAnLS1ndGVzdF9saXN0X3Rlc3RzJworICAgIF0pCisgICAgZW52
aXJvbl9jb3B5ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgICBwID0gZ3Rlc3RfdGVzdF91dGlscy5T
dWJwcm9jZXNzKAorICAgICAgICBjb21tYW5kLCBlbnY9ZW52aXJvbl9jb3B5LCB3b3JraW5nX2Rp
cj1ndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSkKKworICAgIHNlbGYuYXNzZXJ0XyhwLmV4
aXRlZCkKKyAgICBzZWxmLmFzc2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkKKyAgICB3aXRoIG9w
ZW4oZmlsZV9wYXRoKSBhcyBmOgorICAgICAgcmVzdWx0ID0gZi5yZWFkKCkKKyAgICByZXR1cm4g
cmVzdWx0CisKKyAgZGVmIF9UZXN0T3V0cHV0KHNlbGYsIHRlc3RfZm9ybWF0LCBleHBlY3RlZF9v
dXRwdXQpOgorICAgIGFjdHVhbCA9IHNlbGYuX0dldE91dHB1dCh0ZXN0X2Zvcm1hdCkKKyAgICBh
Y3R1YWxfbGluZXMgPSBhY3R1YWwuc3BsaXRsaW5lcygpCisgICAgZXhwZWN0ZWRfbGluZXMgPSBl
eHBlY3RlZF9vdXRwdXQuc3BsaXRsaW5lcygpCisgICAgbGluZV9jb3VudCA9IDAKKyAgICBmb3Ig
YWN0dWFsX2xpbmUgaW4gYWN0dWFsX2xpbmVzOgorICAgICAgZXhwZWN0ZWRfbGluZSA9IGV4cGVj
dGVkX2xpbmVzW2xpbmVfY291bnRdCisgICAgICBleHBlY3RlZF9saW5lX3JlID0gcmUuY29tcGls
ZShleHBlY3RlZF9saW5lLnN0cmlwKCkpCisgICAgICBzZWxmLmFzc2VydF8oCisgICAgICAgICAg
ZXhwZWN0ZWRfbGluZV9yZS5tYXRjaChhY3R1YWxfbGluZS5zdHJpcCgpKSwKKyAgICAgICAgICAo
J2FjdHVhbCBvdXRwdXQgb2YgIiVzIixcbicKKyAgICAgICAgICAgJ3doaWNoIGRvZXMgbm90IG1h
dGNoIGV4cGVjdGVkIHJlZ2V4IG9mICIlcyJcbicKKyAgICAgICAgICAgJ29uIGxpbmUgJWQnICUg
KGFjdHVhbCwgZXhwZWN0ZWRfb3V0cHV0LCBsaW5lX2NvdW50KSkpCisgICAgICBsaW5lX2NvdW50
ID0gbGluZV9jb3VudCArIDEKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBvcy5l
bnZpcm9uWydHVEVTVF9TVEFDS19UUkFDRV9ERVBUSCddID0gJzEnCisgIGd0ZXN0X3Rlc3RfdXRp
bHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxYzdiNGRlMzQ2MWZj
MTY0NWY0MTFiNzFmOWUzN2Y4MjI0ZmQ4YTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0Xy5jYwpAQCAtMCww
ICsxLDUxIEBACisvLyBDb3B5cmlnaHQgMjAxOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6Cisv
LworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisv
LworLy8gQXV0aG9yOiBkYXZpZC5zY2h1bGRlbmZyZWlAZ21haWwuY29tIChEYXZpZCBTY2h1bGRl
bmZyZWkpCisKKy8vIFVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0ZXN0X2xpc3RfdGVz
dHMgYW5kIC0tZ3Rlc3Rfb3V0cHV0IGZsYWcuCisvLworLy8gQSB1c2VyIGNhbiBhc2sgR29vZ2xl
IFRlc3QgdG8gbGlzdCBhbGwgdGVzdHMgdGhhdCB3aWxsIHJ1biwKKy8vIGFuZCBoYXZlIHRoZSBv
dXRwdXQgc2F2ZWQgaW4gYSBKc29uL1htbCBmaWxlLgorLy8gVGhlIHRlc3RzIHdpbGwgbm90IGJl
IHJ1biBhZnRlciBsaXN0aW5nLgorLy8KKy8vIFRoaXMgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQg
ZnJvbSBhIFB5dGhvbiB1bml0IHRlc3QuCisvLyBEb24ndCBydW4gaXQgZGlyZWN0bHkuCisKKyNp
bmNsdWRlICJndGVzdC9ndGVzdC5oIgorCitURVNUKEZvb1Rlc3QsIFRlc3QxKSB7fQorCitURVNU
KEZvb1Rlc3QsIFRlc3QyKSB7fQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsK
KyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgcmV0dXJuIFJV
Tl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3
NTUKaW5kZXggY2U4YzNlZjA1ZjY2MDBlODcyMTRhNmQ0MDE2MjhlZDkyM2ExNTJkYS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3QucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwxNzcgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAy
MDA2LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0j
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIC0tZ3Rlc3RfbGlzdF90ZXN0cyBm
bGFnLgotCi1BIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBsaXN0IGFsbCB0ZXN0cyBieSBz
cGVjaWZ5aW5nIHRoZQotLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuICBUaGlzIHNjcmlwdCB0ZXN0
cyBzdWNoIGZ1bmN0aW9uYWxpdHkKLWJ5IGludm9raW5nIGd0ZXN0X2xpc3RfdGVzdHNfdW5pdHRl
c3RfIChhIHByb2dyYW0gd3JpdHRlbiB3aXRoCi1Hb29nbGUgVGVzdCkgdGhlIGNvbW1hbmQgbGlu
ZSBmbGFncy4KLSIiIgotCi1fX2F1dGhvcl9fID0gJ3BoYW5uYUBnb29nbGUuY29tIChQYXRyaWNr
IEhhbm5hKScKLQotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLQotCi0jIENvbnN0YW50cy4KLQot
IyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBsaXN0aW5nIGFs
bCB0ZXN0cy4KLUxJU1RfVEVTVFNfRkxBRyA9ICdndGVzdF9saXN0X3Rlc3RzJwotCi0jIFBhdGgg
dG8gdGhlIGd0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfIHByb2dyYW0uCi1FWEVfUEFUSCA9IGd0
ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9saXN0X3Rlc3RzX3Vu
aXR0ZXN0XycpCi0KLSMgVGhlIGV4cGVjdGVkIG91dHB1dCB3aGVuIHJ1bm5pbmcgZ3Rlc3RfbGlz
dF90ZXN0c191bml0dGVzdF8gd2l0aAotIyAtLWd0ZXN0X2xpc3RfdGVzdHMKLUVYUEVDVEVEX09V
VFBVVF9OT19GSUxURVIgPSAiIiJGb29EZWF0aFRlc3QuCi0gIFRlc3QxCi1Gb28uCi0gIEJhcjEK
LSAgQmFyMgotICBESVNBQkxFRF9CYXIzCi1BYmMuCi0gIFh5egotICBEZWYKLUZvb0Jhci4KLSAg
QmF6Ci1Gb29UZXN0LgotICBUZXN0MQotICBESVNBQkxFRF9UZXN0MgotICBUZXN0MwotIiIiCi0K
LSMgVGhlIGV4cGVjdGVkIG91dHB1dCB3aGVuIHJ1bm5pbmcgZ3Rlc3RfbGlzdF90ZXN0c191bml0
dGVzdF8gd2l0aAotIyAtLWd0ZXN0X2xpc3RfdGVzdHMgYW5kIC0tZ3Rlc3RfZmlsdGVyPUZvbyou
Ci1FWFBFQ1RFRF9PVVRQVVRfRklMVEVSX0ZPTyA9ICIiIkZvb0RlYXRoVGVzdC4KLSAgVGVzdDEK
LUZvby4KLSAgQmFyMQotICBCYXIyCi0gIERJU0FCTEVEX0JhcjMKLUZvb0Jhci4KLSAgQmF6Ci1G
b29UZXN0LgotICBUZXN0MQotICBESVNBQkxFRF9UZXN0MgotICBUZXN0MwotIiIiCi0KLSMgVXRp
bGl0aWVzLgotCi0KLWRlZiBSdW4oYXJncyk6Ci0gICIiIlJ1bnMgZ3Rlc3RfbGlzdF90ZXN0c191
bml0dGVzdF8gYW5kIHJldHVybnMgdGhlIGxpc3Qgb2YgdGVzdHMgcHJpbnRlZC4iIiIKLQotICBy
ZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtFWEVfUEFUSF0gKyBhcmdzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVfc3RkZXJyPUZhbHNlKS5v
dXRwdXQKLQotCi0jIFRoZSB1bml0IHRlc3QuCi0KLWNsYXNzIEdUZXN0TGlzdFRlc3RzVW5pdFRl
c3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gICIiIlRlc3RzIHVzaW5nIHRoZSAtLWd0
ZXN0X2xpc3RfdGVzdHMgZmxhZyB0byBsaXN0IGFsbCB0ZXN0cy4iIiIKLQotICBkZWYgUnVuQW5k
VmVyaWZ5KHNlbGYsIGZsYWdfdmFsdWUsIGV4cGVjdGVkX291dHB1dCwgb3RoZXJfZmxhZyk6Ci0g
ICAgIiIiUnVucyBndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0XyBhbmQgdmVyaWZpZXMgdGhhdCBp
dCBwcmludHMKLSAgICB0aGUgY29ycmVjdCB0ZXN0cy4KLQotICAgIEFyZ3M6Ci0gICAgICBmbGFn
X3ZhbHVlOiAgICAgICB2YWx1ZSBvZiB0aGUgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWc7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBub3QgYmUgcHJlc2Vu
dC4KLQotICAgICAgZXhwZWN0ZWRfb3V0cHV0OiAgdGhlIGV4cGVjdGVkIG91dHB1dCBhZnRlciBy
dW5uaW5nIGNvbW1hbmQ7Ci0KLSAgICAgIG90aGVyX2ZsYWc6ICAgICAgIGEgZGlmZmVyZW50IGZs
YWcgdG8gYmUgcGFzc2VkIHRvIGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsb25n
IHdpdGggZ3Rlc3RfbGlzdF90ZXN0czsKLSAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUgaWYg
dGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgotICAgICIiIgotCi0gICAgaWYgZmxhZ192
YWx1ZSBpcyBOb25lOgotICAgICAgZmxhZyA9ICcnCi0gICAgICBmbGFnX2V4cHJlc3Npb24gPSAn
bm90IHNldCcKLSAgICBlbGlmIGZsYWdfdmFsdWUgPT0gJzAnOgotICAgICAgZmxhZyA9ICctLSVz
PTAnICUgTElTVF9URVNUU19GTEFHCi0gICAgICBmbGFnX2V4cHJlc3Npb24gPSAnMCcKLSAgICBl
bHNlOgotICAgICAgZmxhZyA9ICctLSVzJyAlIExJU1RfVEVTVFNfRkxBRwotICAgICAgZmxhZ19l
eHByZXNzaW9uID0gJzEnCi0KLSAgICBhcmdzID0gW2ZsYWddCi0KLSAgICBpZiBvdGhlcl9mbGFn
IGlzIG5vdCBOb25lOgotICAgICAgYXJncyArPSBbb3RoZXJfZmxhZ10KLQotICAgIG91dHB1dCA9
IFJ1bihhcmdzKQotCi0gICAgbXNnID0gKCd3aGVuICVzIGlzICVzLCB0aGUgb3V0cHV0IG9mICIl
cyIgaXMgIiVzIi4nICUKLSAgICAgICAgICAgKExJU1RfVEVTVFNfRkxBRywgZmxhZ19leHByZXNz
aW9uLCAnICcuam9pbihhcmdzKSwgb3V0cHV0KSkKLQotICAgIGlmIGV4cGVjdGVkX291dHB1dCBp
cyBub3QgTm9uZToKLSAgICAgIHNlbGYuYXNzZXJ0XyhvdXRwdXQgPT0gZXhwZWN0ZWRfb3V0cHV0
LCBtc2cpCi0gICAgZWxzZToKLSAgICAgIHNlbGYuYXNzZXJ0XyhvdXRwdXQgIT0gRVhQRUNURURf
T1VUUFVUX05PX0ZJTFRFUiwgbXNnKQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9yKHNlbGYp
OgotICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBtb2RlLiIiIgotCi0g
ICAgc2VsZi5SdW5BbmRWZXJpZnkoZmxhZ192YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGVkX291dHB1dD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2Zs
YWc9Tm9uZSkKLQotICBkZWYgdGVzdEZsYWcoc2VsZik6Ci0gICAgIiIiVGVzdHMgdXNpbmcgdGhl
IC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZmxh
Z192YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0PU5vbmUs
Ci0gICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz1Ob25lKQotICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KGZsYWdfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX291
dHB1dD1FWFBFQ1RFRF9PVVRQVVRfTk9fRklMVEVSLAotICAgICAgICAgICAgICAgICAgICAgIG90
aGVyX2ZsYWc9Tm9uZSkKLQotICBkZWYgdGVzdE92ZXJyaWRlTm9uRmlsdGVyRmxhZ3Moc2VsZik6
Ci0gICAgIiIiVGVzdHMgdGhhdCAtLWd0ZXN0X2xpc3RfdGVzdHMgb3ZlcnJpZGVzIHRoZSBub24t
ZmlsdGVyIGZsYWdzLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZmxhZ192YWx1ZT0nMScs
Ci0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0PUVYUEVDVEVEX09VVFBVVF9O
T19GSUxURVIsCi0gICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz0nLS1ndGVzdF9icmVh
a19vbl9mYWlsdXJlJykKLQotICBkZWYgdGVzdFdpdGhGaWx0ZXJGbGFncyhzZWxmKToKLSAgICAi
IiJUZXN0cyB0aGF0IC0tZ3Rlc3RfbGlzdF90ZXN0cyB0YWtlcyBpbnRvIGFjY291bnQgdGhlCi0g
ICAgLS1ndGVzdF9maWx0ZXIgZmxhZy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdf
dmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dD1FWFBFQ1RF
RF9PVVRQVVRfRklMVEVSX0ZPTywKLSAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPSct
LWd0ZXN0X2ZpbHRlcj1Gb28qJykKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBn
dGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGEwZWQwODI1YjVkODg5NjkyMzAxYzVhNGQ0ZjBlYjc1YmFiYzViYzgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYworKysgL2Rl
di9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgot
Ly8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHBoYW5uYUBnb29nbGUuY29tIChQYXRyaWNrIEhh
bm5hKQotCi0vLyBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgLS1ndGVzdF9saXN0X3Rlc3Rz
IGZsYWcuCi0vLwotLy8gQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gbGlzdCBhbGwgdGVz
dHMgdGhhdCB3aWxsIHJ1bgotLy8gc28gdGhhdCB3aGVuIHVzaW5nIGEgZmlsdGVyLCBhIHVzZXIg
d2lsbCBrbm93IHdoYXQKLS8vIHRlc3RzIHRvIGxvb2sgZm9yLiBUaGUgdGVzdHMgd2lsbCBub3Qg
YmUgcnVuIGFmdGVyIGxpc3RpbmcuCi0vLwotLy8gVGhpcyBwcm9ncmFtIHdpbGwgYmUgaW52b2tl
ZCBmcm9tIGEgUHl0aG9uIHVuaXQgdGVzdC4KLS8vIERvbid0IHJ1biBpdCBkaXJlY3RseS4KLQot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIFNldmVyYWwgZGlm
ZmVyZW50IHRlc3QgY2FzZXMgYW5kIHRlc3RzIHRoYXQgd2lsbCBiZSBsaXN0ZWQuCi1URVNUKEZv
bywgQmFyMSkgewotfQotCi1URVNUKEZvbywgQmFyMikgewotfQotCi1URVNUKEZvbywgRElTQUJM
RURfQmFyMykgewotfQotCi1URVNUKEFiYywgWHl6KSB7Ci19Ci0KLVRFU1QoQWJjLCBEZWYpIHsK
LX0KLQotVEVTVChGb29CYXIsIEJheikgewotfQotCi1jbGFzcyBGb29UZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgewotfTsKLQotVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7Ci19Ci0KLVRFU1Rf
RihGb29UZXN0LCBESVNBQkxFRF9UZXN0MikgewotfQotCi1URVNUX0YoRm9vVGVzdCwgVGVzdDMp
IHsKLX0KLQotVEVTVChGb29EZWF0aFRlc3QsIFRlc3QxKSB7Ci19Ci0KLX0gIC8vIG5hbWVzcGFj
ZQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgOjp0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbWFpbl91bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbWFpbl91bml0dGVz
dC5jYwppbmRleCA3YTNmMGFkZmFkZjZkN2U1YzE5NWIzMTk0NDcxNGQ1YWM0MWJiOGUzLi5lZGRl
ZGVhYmU4ZjNiYjA4M2RhYmNhNjAwZTcyZjQ1MWI4ZDk0Y2RiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X21haW5fdW5pdHRlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9tYWluX3VuaXR0ZXN0LmNjCkBAIC0yNiwxMCAr
MjYsOSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ly8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAotI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAvLyBUZXN0cyB0
aGF0IHdlIGRvbid0IGhhdmUgdG8gZGVmaW5lIG1haW4oKSB3aGVuIHdlIGxpbmsgdG8KIC8vIGd0
ZXN0X21haW4gaW5zdGVhZCBvZiBndGVzdC4KQEAgLTQxLDUgKzQwLDUgQEAgVEVTVChHVGVzdE1h
aW5UZXN0LCBTaG91bGRTdWNjZWVkKSB7CiAKIH0gIC8vIG5hbWVzcGFjZQogCi0vLyBXZSBhcmUg
dXNpbmcgdGhlIG1haW4oKSBmdW5jdGlvbiBkZWZpbmVkIGluIHNyYy9ndGVzdF9tYWluLmNjLCBz
bwotLy8gd2UgZG9uJ3QgZGVmaW5lIGl0IGhlcmUuCisvLyBXZSBhcmUgdXNpbmcgdGhlIG1haW4o
KSBmdW5jdGlvbiBkZWZpbmVkIGluIGd0ZXN0X21haW4uY2MsIHNvIHdlCisvLyBkb24ndCBkZWZp
bmUgaXQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfbmMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X25jLmNjCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2I1ZGI2ZDQxODMwOWE0N2EyM2RmZjE4MDA1M2I3
NWQzMjAxMjRmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbmMuY2MKKysrIC9kZXYvbnVsbApA
QCAtMSwyMzQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCi0vLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8g
bWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8g
VGhpcyBmaWxlIGlzIHRoZSBpbnB1dCB0byBhIG5lZ2F0aXZlLWNvbXBpbGF0aW9uIHRlc3QgZm9y
IEdvb2dsZQotLy8gVGVzdC4gIENvZGUgaGVyZSBpcyBOT1Qgc3VwcG9zZWQgdG8gY29tcGlsZS4g
IEl0cyBwdXJwb3NlIGlzIHRvCi0vLyB2ZXJpZnkgdGhhdCBjZXJ0YWluIGluY29ycmVjdCB1c2Fn
ZXMgb2YgdGhlIEdvb2dsZSBUZXN0IEFQSSBhcmUKLS8vIGluZGVlZCByZWplY3RlZCBieSB0aGUg
Y29tcGlsZXIuCi0vLwotLy8gV2Ugc3RpbGwgbmVlZCB0byB3cml0ZSB0aGUgbmVnYXRpdmUtY29t
cGlsYXRpb24gdGVzdCBpdHNlbGYsIHdoaWNoCi0vLyB3aWxsIGJlIHRpZ2h0bHkgY291cGxlZCB3
aXRoIHRoZSBidWlsZCBlbnZpcm9ubWVudC4KLS8vCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTog
ZmluaXNoIHRoZSBuZWdhdGl2ZS1jb21waWxhdGlvbiB0ZXN0LgotCi0jaWZkZWYgVEVTVF9DQU5O
T1RfSUdOT1JFX1JVTl9BTExfVEVTVFNfUkVTVUxUCi0vLyBUZXN0cyB0aGF0IHRoZSByZXN1bHQg
b2YgUlVOX0FMTF9URVNUUygpIGNhbm5vdCBiZSBpZ25vcmVkLgotCi0jaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QuaD4KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIHRlc3Rpbmc6
OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLSAgUlVOX0FMTF9URVNUUygpOyAgLy8gVGhp
cyBsaW5lIHNob3VsZG4ndCBjb21waWxlLgotfQotCi0jZWxpZiBkZWZpbmVkKFRFU1RfVVNFUl9D
QU5OT1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9JTkxfSCkKLS8vIFRlc3RzIHRoYXQgYSB1c2Vy
IGNhbm5vdCBpbmNsdWRlIGd0ZXN0LWludGVybmFsLWlubC5oIGluIGhpcyBjb2RlLgotCi0jaW5j
bHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotCi0jZWxpZiBkZWZpbmVkKFRFU1RfQ0FU
Q0hFU19ERUNMQVJJTkdfU0VUVVBfSU5fVEVTVF9GSVhUVVJFX1dJVEhfVFlQTykKLS8vIFRlc3Rz
IHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgdGhlIHR5cG8gd2hlbiBhIHVzZXIgZGVjbGFyZXMg
YQotLy8gU2V0dXAoKSBtZXRob2QgaW4gYSB0ZXN0IGZpeHR1cmUuCi0KLSNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgotCi1jbGFzcyBNeVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJv
dGVjdGVkOgotICB2b2lkIFNldHVwKCkge30KLX07Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRD
SEVTX0NBTExJTkdfU0VUVVBfSU5fVEVTVF9XSVRIX1RZUE8pCi0vLyBUZXN0cyB0aGF0IHRoZSBj
b21waWxlciBjYXRjaGVzIHRoZSB0eXBvIHdoZW4gYSB1c2VyIGNhbGxzIFNldHVwKCkKLS8vIGZy
b20gYSB0ZXN0IGZpeHR1cmUuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1jbGFzcyBN
eVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKSB7Ci0gICAgdGVzdGluZzo6VGVzdDo6U2V0dXAoKTsgIC8vIFRyaWVzIHRvIGNh
bGwgU2V0VXAoKSBpbiB0aGUgcGFyZW50IGNsYXNzLgotICB9Ci19OwotCi0jZWxpZiBkZWZpbmVk
KFRFU1RfQ0FUQ0hFU19ERUNMQVJJTkdfU0VUVVBfSU5fRU5WSVJPTk1FTlRfV0lUSF9UWVBPKQot
Ly8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0Y2hlcyB0aGUgdHlwbyB3aGVuIGEgdXNlciBk
ZWNsYXJlcyBhCi0vLyBTZXR1cCgpIG1ldGhvZCBpbiBhIHN1YmNsYXNzIG9mIEVudmlyb25tZW50
LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotY2xhc3MgTXlFbnZpcm9ubWVudCA6IHB1
YmxpYyB0ZXN0aW5nOjpFbnZpcm9ubWVudCB7Ci0gcHVibGljOgotICB2b2lkIFNldHVwKCkge30K
LX07Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRDSEVTX0NBTExJTkdfU0VUVVBfSU5fRU5WSVJP
Tk1FTlRfV0lUSF9UWVBPKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0Y2hlcyB0aGUg
dHlwbyB3aGVuIGEgdXNlciBjYWxscyBTZXR1cCgpCi0vLyBpbiBhbiBFbnZpcm9ubWVudC4KLQot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLWNsYXNzIE15RW52aXJvbm1lbnQgOiBwdWJsaWMg
dGVzdGluZzo6RW52aXJvbm1lbnQgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIFNldFVw
KCkgewotICAgIC8vIFRyaWVzIHRvIGNhbGwgU2V0VXAoKSBpbiB0aGUgcGFyZW50IGNsYXNzLgot
ICAgIHRlc3Rpbmc6OkVudmlyb25tZW50OjpTZXR1cCgpOwotICB9Ci19OwotCi0jZWxpZiBkZWZp
bmVkKFRFU1RfQ0FUQ0hFU19XUk9OR19DQVNFX0lOX1RZUEVEX1RFU1RfUCkKLS8vIFRlc3RzIHRo
YXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgdXNpbmcgdGhlIHdyb25nIHRlc3QgY2FzZSBuYW1lIGlu
Ci0vLyBUWVBFRF9URVNUX1AuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19
OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEJhclRlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0KTsKLVRZUEVEX1RFU1Rf
UChCYXJUZXN0LCBBKSB7fSAgLy8gV3JvbmcgdGVzdCBjYXNlIG5hbWUuCi1SRUdJU1RFUl9UWVBF
RF9URVNUX0NBU0VfUChGb29UZXN0LCBBKTsKLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9Q
KE15LCBGb29UZXN0LCB0ZXN0aW5nOjpUeXBlczxpbnQ+KTsKLQotI2VsaWYgZGVmaW5lZChURVNU
X0NBVENIRVNfV1JPTkdfQ0FTRV9JTl9SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUCkKLS8vIFRl
c3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgdXNpbmcgdGhlIHdyb25nIHRlc3QgY2FzZSBu
YW1lIGluCi0vLyBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUC4KLQotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgRm9vVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgQmFy
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRV9QKEZv
b1Rlc3QpOwotVFlQRURfVEVTVF9QKEZvb1Rlc3QsIEEpIHt9Ci1SRUdJU1RFUl9UWVBFRF9URVNU
X0NBU0VfUChCYXJUZXN0LCBBKTsgIC8vIFdyb25nIHRlc3QgY2FzZSBuYW1lLgotSU5TVEFOVElB
VEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIHRlc3Rpbmc6OlR5cGVzPGludD4pOwot
Ci0jZWxpZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19XUk9OR19DQVNFX0lOX0lOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0Y2hlcyB1c2lu
ZyB0aGUgd3JvbmcgdGVzdCBjYXNlIG5hbWUgaW4KLS8vIElOU1RBTlRJQVRFX1RZUEVEX1RFU1Rf
Q0FTRV9QLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBCYXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewot
fTsKLQotVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7Ci1UWVBFRF9URVNUX1AoRm9vVGVzdCwg
QSkge30KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsIEEpOwotCi0vLyBXcm9u
ZyB0ZXN0IGNhc2UgbmFtZS4KLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBCYXJU
ZXN0LCB0ZXN0aW5nOjpUeXBlczxpbnQ+KTsKLQotI2VsaWYgZGVmaW5lZChURVNUX0NBVENIRVNf
SU5TVEFOVElBVEVfVFlQRURfVEVTRVRfQ0FTRV9QX1dJVEhfU0FNRV9OQU1FX1BSRUZJWCkKLS8v
IFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgaW5zdGFudGlhdGluZyBUWVBFRF9URVNU
X0NBU0VfUAotLy8gdHdpY2Ugd2l0aCB0aGUgc2FtZSBuYW1lIHByZWZpeC4KLQotI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgRm9vVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3Qp
OwotVFlQRURfVEVTVF9QKEZvb1Rlc3QsIEEpIHt9Ci1SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0Vf
UChGb29UZXN0LCBBKTsKLQotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rl
c3QsIHRlc3Rpbmc6OlR5cGVzPGludD4pOwotCi0vLyBXcm9uZyBuYW1lIHByZWZpeDogIk15IiBo
YXMgYmVlbiB1c2VkLgotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3Qs
IHRlc3Rpbmc6OlR5cGVzPGRvdWJsZT4pOwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfU1RBVElDX0FT
U0VSVF9UWVBFX0VRX0lTX05PVF9BX1RZUEUpCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgot
Ci0vLyBUZXN0cyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+IGNhbm5vdCBiZSB1c2Vk
IGFzIGEgdHlwZS4KLXRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIGludD4gZHVtbXk7
Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9TVEFUSUNfQVNTRVJUX1RZUEVfRVFfV09SS1NfSU5fTkFN
RVNQQUNFKQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotLy8gVGVzdHMgdGhhdCBTdGF0
aWNBc3NlcnRUeXBlRXE8VDEsIFQyPiB3b3JrcyBpbiBhIG5hbWVzcGFjZSBzY29wZS4KLXN0YXRp
YyBib29sIGR1bW15ID0gdGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGludCwgY29uc3QgaW50
PigpOwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfU1RBVElDX0FTU0VSVF9UWVBFX0VRX1dPUktTX0lO
X0NMQVNTKQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1jbGFzcyBIZWxwZXIgewotIHB1YmxpYzoKLSAgLy8gVGVzdHMgdGhhdCBTdGF0aWNBc3Nl
cnRUeXBlRXE8VDEsIFQyPiB3b3JrcyBpbiBhIGNsYXNzLgotICBIZWxwZXIoKSB7IHRlc3Rpbmc6
OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIFQ+KCk7IH0KLQotICB2b2lkIERvU29tZXRoaW5nKCkg
e30KLX07Ci0KLXZvaWQgVGVzdCgpIHsKLSAgSGVscGVyPGJvb2w+IGg7Ci0gIGguRG9Tb21ldGhp
bmcoKTsgIC8vIFRvIGF2b2lkIHRoZSAidW51c2VkIHZhcmlhYmxlIiB3YXJuaW5nLgotfQotCi0j
ZWxpZiBkZWZpbmVkKFRFU1RfU1RBVElDX0FTU0VSVF9UWVBFX0VRX1dPUktTX0lOX0ZVTkNUSU9O
KQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdm9pZCBUZXN0KCkgewotICAvLyBUZXN0
cyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+IHdvcmtzIGluc2lkZSBhIGZ1bmN0aW9u
LgotICB0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgaW50LCBpbnQ+KCk7Ci19Ci0K
LSNlbHNlCi0vLyBBIHNhbml0eSB0ZXN0LiAgVGhpcyBzaG91bGQgY29tcGlsZS4KLQotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLWludCBtYWluKCkgewotICByZXR1cm4gUlVOX0FMTF9URVNU
UygpOwotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfbmNfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
bmNfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDZmZmIzZjgwMzhmMGE1
Nzk2ZTRiNmQ2MjlkMDJlODA1NjVhMjQzOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X25jX3Rl
c3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCi0jCi0jIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJp
YnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiTmVnYXRpdmUgY29tcGlsYXRpb24gdGVzdCBm
b3IgR29vZ2xlIFRlc3QuIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbiknCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLQot
SVNfTElOVVggPSBvcy5uYW1lID09ICdwb3NpeCcgYW5kIG9zLnVuYW1lKClbMF0gPT0gJ0xpbnV4
JwotaWYgbm90IElTX0xJTlVYOgotICBzeXMuZXhpdCgwKSAgIyBOZWdhdGl2ZSBjb21waWxhdGlv
biB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzICYgTWFjLgotCi0KLWNsYXNzIEdU
ZXN0TkNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgIiIiTmVnYXRpdmUgY29tcGlsYXRpb24g
dGVzdCBmb3IgR29vZ2xlIFRlc3QuIiIiCi0KLSAgZGVmIHRlc3RDb21waWxlckVycm9yKHNlbGYp
OgotICAgICIiIlZlcmlmaWVzIHRoYXQgZXJyb25lb3VzIGNvZGUgbGVhZHMgdG8gZXhwZWN0ZWQg
Y29tcGlsZXIKLSAgICBtZXNzYWdlcy4iIiIKLQotICAgICMgRGVmaW5lcyBhIGxpc3Qgb2YgdGVz
dCBzcGVjcywgd2hlcmUgZWFjaCBlbGVtZW50IGlzIGEgdHVwbGUKLSAgICAjICh0ZXN0IG5hbWUs
IGxpc3Qgb2YgcmVnZXhlcyBmb3IgbWF0Y2hpbmcgdGhlIGNvbXBpbGVyIGVycm9ycykuCi0gICAg
dGVzdF9zcGVjcyA9IFsKLSAgICAgICgnQ0FOTk9UX0lHTk9SRV9SVU5fQUxMX1RFU1RTX1JFU1VM
VCcsCi0gICAgICAgW3InaWdub3JpbmcgcmV0dXJuIHZhbHVlJ10pLAotCi0gICAgICAoJ1VTRVJf
Q0FOTk9UX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfSU5MX0gnLAotICAgICAgIFtyJ211c3Qgbm90
IGJlIGluY2x1ZGVkIGV4Y2VwdCBieSBHb29nbGUgVGVzdCBpdHNlbGYnXSksCi0KLSAgICAgICgn
Q0FUQ0hFU19ERUNMQVJJTkdfU0VUVVBfSU5fVEVTVF9GSVhUVVJFX1dJVEhfVFlQTycsCi0gICAg
ICAgW3InU2V0dXBfc2hvdWxkX2JlX3NwZWxsZWRfU2V0VXAnXSksCi0KLSAgICAgICgnQ0FUQ0hF
U19DQUxMSU5HX1NFVFVQX0lOX1RFU1RfV0lUSF9UWVBPJywKLSAgICAgICBbcidTZXR1cF9zaG91
bGRfYmVfc3BlbGxlZF9TZXRVcCddKSwKLQotICAgICAgKCdDQVRDSEVTX0RFQ0xBUklOR19TRVRV
UF9JTl9FTlZJUk9OTUVOVF9XSVRIX1RZUE8nLAotICAgICAgIFtyJ1NldHVwX3Nob3VsZF9iZV9z
cGVsbGVkX1NldFVwJ10pLAotCi0gICAgICAoJ0NBVENIRVNfQ0FMTElOR19TRVRVUF9JTl9FTlZJ
Uk9OTUVOVF9XSVRIX1RZUE8nLAotICAgICAgIFtyJ1NldHVwX3Nob3VsZF9iZV9zcGVsbGVkX1Nl
dFVwJ10pLAotCi0gICAgICAoJ0NBVENIRVNfV1JPTkdfQ0FTRV9JTl9UWVBFRF9URVNUX1AnLAot
ICAgICAgIFtyJ0JhclRlc3QuKndhcyBub3QgZGVjbGFyZWQnXSksCi0KLSAgICAgICgnQ0FUQ0hF
U19XUk9OR19DQVNFX0lOX1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QJywKLSAgICAgICBbcidC
YXJUZXN0Lip3YXMgbm90IGRlY2xhcmVkJ10pLAotCi0gICAgICAoJ0NBVENIRVNfV1JPTkdfQ0FT
RV9JTl9JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUCcsCi0gICAgICAgW3InQmFyVGVzdC4q
bm90IGRlY2xhcmVkJ10pLAotCi0gICAgICAoJ0NBVENIRVNfSU5TVEFOVElBVEVfVFlQRURfVEVT
RVRfQ0FTRV9QX1dJVEhfU0FNRV9OQU1FX1BSRUZJWCcsCi0gICAgICAgW3IncmVkZWZpbml0aW9u
IG9mLipNeS4qRm9vVGVzdCddKSwKLQotICAgICAgKCdTVEFUSUNfQVNTRVJUX1RZUEVfRVFfSVNf
Tk9UX0FfVFlQRScsCi0gICAgICAgW3InU3RhdGljQXNzZXJ0VHlwZUVxLiogZG9lcyBub3QgbmFt
ZSBhIHR5cGUnXSksCi0KLSAgICAgICgnU1RBVElDX0FTU0VSVF9UWVBFX0VRX1dPUktTX0lOX05B
TUVTUEFDRScsCi0gICAgICAgW3InU3RhdGljQXNzZXJ0VHlwZUVxLippbnQuKmNvbnN0IGludCdd
KSwKLQotICAgICAgKCdTVEFUSUNfQVNTRVJUX1RZUEVfRVFfV09SS1NfSU5fQ0xBU1MnLAotICAg
ICAgIFtyJ1N0YXRpY0Fzc2VydFR5cGVFcS4qaW50Lipib29sJ10pLAotCi0gICAgICAoJ1NUQVRJ
Q19BU1NFUlRfVFlQRV9FUV9XT1JLU19JTl9GVU5DVElPTicsCi0gICAgICAgW3InU3RhdGljQXNz
ZXJ0VHlwZUVxLipjb25zdCBpbnQuKmludCddKSwKLQotICAgICAgKCdTQU5JVFknLAotICAgICAg
IE5vbmUpCi0gICAgICBdCi0KLSAgICAjIFRPRE8od2FuQGdvb2dsZS5jb20pOiB2ZXJpZnkgdGhh
dCB0aGUgdGVzdCBzcGVjcyBhcmUgc2F0aXNmaWVkLgotCi0KLWlmIF9fbmFtZV9fID09ICdfX21h
aW5fXyc6Ci0gIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9ub190ZXN0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9ub190ZXN0X3VuaXR0ZXN0LmNjCmluZGV4IGFmZTJkYzBjOTJmZTQz
YWU5MzViMjJjZWYzMTc3ZTUxODRiN2ZmYTEuLmQ0Zjg4ZGJmZGZhNjhlNmEwYzQwYmI5OWZhYzZl
NGRiY2NmZjhmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3Rfbm9fdGVzdF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QuY2MKQEAgLTI5LDI2ICsyOSwyNiBAQAogCiAvLyBUZXN0
cyB0aGF0IGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSB0aGF0IGhhcyBubyB0ZXN0IGRlZmluZWQgY2Fu
IHJ1bgogLy8gc3VjY2Vzc2Z1bGx5LgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbikKLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKICAgdGVzdGlu
Zzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwogCiAgIC8vIEFuIGFkLWhvYyBhc3NlcnRp
b24gb3V0c2lkZSBvZiBhbGwgdGVzdHMuCiAgIC8vCi0gIC8vIFRoaXMgc2VydmVzIHR3byBwdXJw
b3NlczoKKyAgLy8gVGhpcyBzZXJ2ZXMgdGhyZWUgcHVycG9zZXM6CiAgIC8vCiAgIC8vIDEuIEl0
IHZlcmlmaWVzIHRoYXQgYW4gYWQtaG9jIGFzc2VydGlvbiBjYW4gYmUgZXhlY3V0ZWQgZXZlbiBp
ZgogICAvLyAgICBubyB0ZXN0IGlzIGRlZmluZWQuCi0gIC8vIDIuIFdlIGhhZCBhIGJ1ZyB3aGVy
ZSB0aGUgWE1MIG91dHB1dCB3b24ndCBiZSBnZW5lcmF0ZWQgaWYgYW4KKyAgLy8gMi4gSXQgdmVy
aWZpZXMgdGhhdCBhIGZhaWxlZCBhZC1ob2MgYXNzZXJ0aW9uIGNhdXNlcyB0aGUgdGVzdAorICAv
LyAgICBwcm9ncmFtIHRvIGZhaWwuCisgIC8vIDMuIFdlIGhhZCBhIGJ1ZyB3aGVyZSB0aGUgWE1M
IG91dHB1dCB3b24ndCBiZSBnZW5lcmF0ZWQgaWYgYW4KICAgLy8gICAgYXNzZXJ0aW9uIGlzIGV4
ZWN1dGVkIGJlZm9yZSBSVU5fQUxMX1RFU1RTKCkgaXMgY2FsbGVkLCBldmVuCiAgIC8vICAgIHRo
b3VnaCAtLWd0ZXN0X291dHB1dD14bWwgaXMgc3BlY2lmaWVkLiAgVGhpcyBtYWtlcyBzdXJlIHRo
ZQogICAvLyAgICBidWcgaXMgZml4ZWQgYW5kIGRvZXNuJ3QgcmVncmVzcy4KLSAgRVhQRUNUX0VR
KDEsIDEpOworICBFWFBFQ1RfRVEoMSwgMik7CiAKLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsK
KyAgLy8gVGhlIGFib3ZlIEVYUEVDVF9FUSgpIHNob3VsZCBjYXVzZSBSVU5fQUxMX1RFU1RTKCkg
dG8gcmV0dXJuIG5vbi16ZXJvLgorICByZXR1cm4gUlVOX0FMTF9URVNUUygpID8gMCA6IDE7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90
ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdC5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMTkyMDMwYTIwMjBiZmQ0MWU5NGM0ZTQ5
MTRjYWJhMzhkYjc0ZjJmYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0LnB5
CisrKyAvZGV2L251bGwKQEAgLTEsMzI3ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgot
IwotIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlv
bi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlRlc3RzIHRoZSB0ZXh0IG91dHB1dCBvZiBHb29nbGUg
QysrIFRlc3RpbmcgRnJhbWV3b3JrLgotCi1TWU5PUFNJUwotICAgICAgIGd0ZXN0X291dHB1dF90
ZXN0LnB5IC0tZ3Rlc3RfYnVpbGRfZGlyPUJVSUxEL0RJUiAtLWdlbmdvbGRlbgotICAgICAgICAg
IyB3aGVyZSBCVUlMRC9ESVIgY29udGFpbnMgdGhlIGJ1aWx0IGd0ZXN0X291dHB1dF90ZXN0XyBm
aWxlLgotICAgICAgIGd0ZXN0X291dHB1dF90ZXN0LnB5IC0tZ2VuZ29sZGVuCi0gICAgICAgZ3Rl
c3Rfb3V0cHV0X3Rlc3QucHkKLSIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tICha
aGFueW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHN5cwotaW1wb3J0
IGd0ZXN0X3Rlc3RfdXRpbHMKLQotCi0jIFRoZSBmbGFnIGZvciBnZW5lcmF0aW5nIHRoZSBnb2xk
ZW4gZmlsZQotR0VOR09MREVOX0ZMQUcgPSAnLS1nZW5nb2xkZW4nCi1DQVRDSF9FWENFUFRJT05T
X0VOVl9WQVJfTkFNRSA9ICdHVEVTVF9DQVRDSF9FWENFUFRJT05TJwotCi1JU19XSU5ET1dTID0g
b3MubmFtZSA9PSAnbnQnCi0KLWlmIElTX1dJTkRPV1M6Ci0gIEdPTERFTl9OQU1FID0gJ2d0ZXN0
X291dHB1dF90ZXN0X2dvbGRlbl93aW4udHh0JwotZWxzZToKLSAgR09MREVOX05BTUUgPSAnZ3Rl
c3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQnCi0KLVBST0dSQU1fUEFUSCA9IGd0ZXN0X3Rl
c3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9vdXRwdXRfdGVzdF8nKQotCi0j
IEF0IGxlYXN0IG9uZSBjb21tYW5kIHdlIGV4ZXJjaXNlIG11c3Qgbm90IGhhdmUgdGhlCi0jIC0t
Z3Rlc3RfaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzIGZsYWcuCi1D
T01NQU5EX0xJU1RfVEVTVFMgPSAoe30sIFtQUk9HUkFNX1BBVEgsICctLWd0ZXN0X2xpc3RfdGVz
dHMnXSkKLUNPTU1BTkRfV0lUSF9DT0xPUiA9ICh7fSwgW1BST0dSQU1fUEFUSCwgJy0tZ3Rlc3Rf
Y29sb3I9eWVzJ10pCi1DT01NQU5EX1dJVEhfVElNRSA9ICh7fSwgW1BST0dSQU1fUEFUSCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgJy0tZ3Rlc3RfcHJpbnRfdGltZScsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICctLWd0ZXN0X2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2Fk
X2hvY190ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICctLWd0ZXN0X2ZpbHRlcj1G
YXRhbEZhaWx1cmVUZXN0Lio6TG9nZ2luZ1Rlc3QuKiddKQotQ09NTUFORF9XSVRIX0RJU0FCTEVE
ID0gKAotICAgIHt9LCBbUFJPR1JBTV9QQVRILAotICAgICAgICAgJy0tZ3Rlc3RfYWxzb19ydW5f
ZGlzYWJsZWRfdGVzdHMnLAotICAgICAgICAgJy0tZ3Rlc3RfaW50ZXJuYWxfc2tpcF9lbnZpcm9u
bWVudF9hbmRfYWRfaG9jX3Rlc3RzJywKLSAgICAgICAgICctLWd0ZXN0X2ZpbHRlcj0qRElTQUJM
RURfKiddKQotQ09NTUFORF9XSVRIX1NIQVJESU5HID0gKAotICAgIHsnR1RFU1RfU0hBUkRfSU5E
RVgnOiAnMScsICdHVEVTVF9UT1RBTF9TSEFSRFMnOiAnMid9LAotICAgIFtQUk9HUkFNX1BBVEgs
Ci0gICAgICctLWd0ZXN0X2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0
cycsCi0gICAgICctLWd0ZXN0X2ZpbHRlcj1QYXNzaW5nVGVzdC4qJ10pCi0KLUdPTERFTl9QQVRI
ID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNlRGlyKCksIEdPTERFTl9O
QU1FKQotCi0KLWRlZiBUb1VuaXhMaW5lRW5kaW5nKHMpOgotICAiIiJDaGFuZ2VzIGFsbCBXaW5k
b3dzL01hYyBsaW5lIGVuZGluZ3MgaW4gcyB0byBVTklYIGxpbmUgZW5kaW5ncy4iIiIKLQotICBy
ZXR1cm4gcy5yZXBsYWNlKCdcclxuJywgJ1xuJykucmVwbGFjZSgnXHInLCAnXG4nKQotCi0KLWRl
ZiBSZW1vdmVMb2NhdGlvbnModGVzdF9vdXRwdXQpOgotICAiIiJSZW1vdmVzIGFsbCBmaWxlIGxv
Y2F0aW9uIGluZm8gZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuCi0KLSAgQXJn
czoKLSAgICAgICB0ZXN0X291dHB1dDogIHRoZSBvdXRwdXQgb2YgYSBHb29nbGUgVGVzdCBwcm9n
cmFtLgotCi0gIFJldHVybnM6Ci0gICAgICAgb3V0cHV0IHdpdGggYWxsIGZpbGUgbG9jYXRpb24g
aW5mbyAoaW4gdGhlIGZvcm0gb2YKLSAgICAgICAnRElSRUNUT1JZL0ZJTEVfTkFNRTpMSU5FX05V
TUJFUjogJ29yCi0gICAgICAgJ0RJUkVDVE9SWVxcRklMRV9OQU1FKExJTkVfTlVNQkVSKTogJykg
cmVwbGFjZWQgYnkKLSAgICAgICAnRklMRV9OQU1FOiM6ICcuCi0gICIiIgotCi0gIHJldHVybiBy
ZS5zdWIocicuKlsvXFxdKC4rKShcOlxkK3xcKFxkK1wpKVw6ICcsIHInXDE6IzogJywgdGVzdF9v
dXRwdXQpCi0KLQotZGVmIFJlbW92ZVN0YWNrVHJhY2VEZXRhaWxzKG91dHB1dCk6Ci0gICIiIlJl
bW92ZXMgYWxsIHN0YWNrIHRyYWNlcyBmcm9tIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1
dC4iIiIKLQotICAjICo/IG1lYW5zICJmaW5kIHRoZSBzaG9ydGVzdCBzdHJpbmcgdGhhdCBtYXRj
aGVzIi4KLSAgcmV0dXJuIHJlLnN1YihyJ1N0YWNrIHRyYWNlOigufFxuKSo/XG5cbicsCi0gICAg
ICAgICAgICAgICAgJ1N0YWNrIHRyYWNlOiAob21pdHRlZClcblxuJywgb3V0cHV0KQotCi0KLWRl
ZiBSZW1vdmVTdGFja1RyYWNlcyhvdXRwdXQpOgotICAiIiJSZW1vdmVzIGFsbCB0cmFjZXMgb2Yg
c3RhY2sgdHJhY2VzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgotCi0g
ICMgKj8gbWVhbnMgImZpbmQgdGhlIHNob3J0ZXN0IHN0cmluZyB0aGF0IG1hdGNoZXMiLgotICBy
ZXR1cm4gcmUuc3ViKHInU3RhY2sgdHJhY2U6KC58XG4pKj9cblxuJywgJycsIG91dHB1dCkKLQot
Ci1kZWYgUmVtb3ZlVGltZShvdXRwdXQpOgotICAiIiJSZW1vdmVzIGFsbCB0aW1lIGluZm9ybWF0
aW9uIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgotCi0gIHJldHVybiBy
ZS5zdWIocidcKFxkKyBtcycsICcoPyBtcycsIG91dHB1dCkKLQotCi1kZWYgUmVtb3ZlVHlwZUlu
Zm9EZXRhaWxzKHRlc3Rfb3V0cHV0KToKLSAgIiIiUmVtb3ZlcyBjb21waWxlci1zcGVjaWZpYyB0
eXBlIGluZm8gZnJvbSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LgotCi0gIEFyZ3M6Ci0g
ICAgICAgdGVzdF9vdXRwdXQ6ICB0aGUgb3V0cHV0IG9mIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbS4K
LQotICBSZXR1cm5zOgotICAgICAgIG91dHB1dCB3aXRoIHR5cGUgaW5mb3JtYXRpb24gbm9ybWFs
aXplZCB0byBjYW5vbmljYWwgZm9ybS4KLSAgIiIiCi0KLSAgIyBzb21lIGNvbXBpbGVycyBvdXRw
dXQgdGhlIG5hbWUgb2YgdHlwZSAndW5zaWduZWQgaW50JyBhcyAndW5zaWduZWQnCi0gIHJldHVy
biByZS5zdWIocid1bnNpZ25lZCBpbnQnLCAndW5zaWduZWQnLCB0ZXN0X291dHB1dCkKLQotCi1k
ZWYgUmVtb3ZlVGVzdENvdW50cyhvdXRwdXQpOgotICAiIiJSZW1vdmVzIHRlc3QgY291bnRzIGZy
b20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgotCi0gIG91dHB1dCA9IHJlLnN1
YihyJ1xkKyB0ZXN0cz8sIGxpc3RlZCBiZWxvdycsCi0gICAgICAgICAgICAgICAgICAnPyB0ZXN0
cywgbGlzdGVkIGJlbG93Jywgb3V0cHV0KQotICBvdXRwdXQgPSByZS5zdWIocidcZCsgRkFJTEVE
IFRFU1RTJywKLSAgICAgICAgICAgICAgICAgICc/IEZBSUxFRCBURVNUUycsIG91dHB1dCkKLSAg
b3V0cHV0ID0gcmUuc3ViKHInXGQrIHRlc3RzPyBmcm9tIFxkKyB0ZXN0IGNhc2VzPycsCi0gICAg
ICAgICAgICAgICAgICAnPyB0ZXN0cyBmcm9tID8gdGVzdCBjYXNlcycsIG91dHB1dCkKLSAgb3V0
cHV0ID0gcmUuc3ViKHInXGQrIHRlc3RzPyBmcm9tIChbYS16QS1aX10pJywKLSAgICAgICAgICAg
ICAgICAgIHInPyB0ZXN0cyBmcm9tIFwxJywgb3V0cHV0KQotICByZXR1cm4gcmUuc3ViKHInXGQr
IHRlc3RzP1wuJywgJz8gdGVzdHMuJywgb3V0cHV0KQotCi0KLWRlZiBSZW1vdmVNYXRjaGluZ1Rl
c3RzKHRlc3Rfb3V0cHV0LCBwYXR0ZXJuKToKLSAgIiIiUmVtb3ZlcyBvdXRwdXQgb2Ygc3BlY2lm
aWVkIHRlc3RzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LgotCi0gIFRoaXMg
ZnVuY3Rpb24gc3RyaXBzIG5vdCBvbmx5IHRoZSBiZWdpbm5pbmcgYW5kIHRoZSBlbmQgb2YgYSB0
ZXN0IGJ1dCBhbHNvCi0gIGFsbCBvdXRwdXQgaW4gYmV0d2Vlbi4KLQotICBBcmdzOgotICAgIHRl
c3Rfb3V0cHV0OiAgICAgICBBIHN0cmluZyBjb250YWluaW5nIHRoZSB0ZXN0IG91dHB1dC4KLSAg
ICBwYXR0ZXJuOiAgICAgICAgICAgQSByZWdleCBzdHJpbmcgdGhhdCBtYXRjaGVzIG5hbWVzIG9m
IHRlc3QgY2FzZXMgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMgdG8gcmVtb3ZlLgot
Ci0gIFJldHVybnM6Ci0gICAgQ29udGVudHMgb2YgdGVzdF9vdXRwdXQgd2l0aCB0ZXN0cyB3aG9z
ZSBuYW1lcyBtYXRjaCBwYXR0ZXJuIHJlbW92ZWQuCi0gICIiIgotCi0gIHRlc3Rfb3V0cHV0ID0g
cmUuc3ViKAotICAgICAgcicuKlxbIFJVTiAgICAgIFxdIC4qJXMoLnxcbikqP1xbKCAgRkFJTEVE
ICB8ICAgICAgIE9LIClcXSAuKiVzLipcbicgJSAoCi0gICAgICAgICAgcGF0dGVybiwgcGF0dGVy
biksCi0gICAgICAnJywKLSAgICAgIHRlc3Rfb3V0cHV0KQotICByZXR1cm4gcmUuc3ViKHInLiol
cy4qXG4nICUgcGF0dGVybiwgJycsIHRlc3Rfb3V0cHV0KQotCi0KLWRlZiBOb3JtYWxpemVPdXRw
dXQob3V0cHV0KToKLSAgIiIiTm9ybWFsaXplcyBvdXRwdXQgKHRoZSBvdXRwdXQgb2YgZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmV4ZSkuIiIiCi0KLSAgb3V0cHV0ID0gVG9Vbml4TGluZUVuZGluZyhvdXRw
dXQpCi0gIG91dHB1dCA9IFJlbW92ZUxvY2F0aW9ucyhvdXRwdXQpCi0gIG91dHB1dCA9IFJlbW92
ZVN0YWNrVHJhY2VEZXRhaWxzKG91dHB1dCkKLSAgb3V0cHV0ID0gUmVtb3ZlVGltZShvdXRwdXQp
Ci0gIHJldHVybiBvdXRwdXQKLQotCi1kZWYgR2V0U2hlbGxDb21tYW5kT3V0cHV0KGVudl9jbWQp
OgotICAiIiJSdW5zIGEgY29tbWFuZCBpbiBhIHN1Yi1wcm9jZXNzLCBhbmQgcmV0dXJucyBpdHMg
b3V0cHV0IGluIGEgc3RyaW5nLgotCi0gIEFyZ3M6Ci0gICAgZW52X2NtZDogVGhlIHNoZWxsIGNv
bW1hbmQuIEEgMi10dXBsZSB3aGVyZSBlbGVtZW50IDAgaXMgYSBkaWN0IG9mIGV4dHJhCi0gICAg
ICAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCwgYW5kIGVsZW1lbnQgMSBpcyBh
IHN0cmluZyB3aXRoCi0gICAgICAgICAgICAgdGhlIGNvbW1hbmQgYW5kIGFueSBmbGFncy4KLQot
ICBSZXR1cm5zOgotICAgIEEgc3RyaW5nIHdpdGggdGhlIGNvbW1hbmQncyBjb21iaW5lZCBzdGFu
ZGFyZCBhbmQgZGlhZ25vc3RpYyBvdXRwdXQuCi0gICIiIgotCi0gICMgU3Bhd25zIGNtZCBpbiBh
IHN1Yi1wcm9jZXNzLCBhbmQgZ2V0cyBpdHMgc3RhbmRhcmQgSS9PIGZpbGUgb2JqZWN0cy4KLSAg
IyBTZXQgYW5kIHNhdmUgdGhlIGVudmlyb25tZW50IHByb3Blcmx5LgotICBlbnZpcm9uID0gb3Mu
ZW52aXJvbi5jb3B5KCkKLSAgZW52aXJvbi51cGRhdGUoZW52X2NtZFswXSkKLSAgcCA9IGd0ZXN0
X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhlbnZfY21kWzFdLCBlbnY9ZW52aXJvbikKLQotICByZXR1
cm4gcC5vdXRwdXQKLQotCi1kZWYgR2V0Q29tbWFuZE91dHB1dChlbnZfY21kKToKLSAgIiIiUnVu
cyBhIGNvbW1hbmQgYW5kIHJldHVybnMgaXRzIG91dHB1dCB3aXRoIGFsbCBmaWxlIGxvY2F0aW9u
Ci0gIGluZm8gc3RyaXBwZWQgb2ZmLgotCi0gIEFyZ3M6Ci0gICAgZW52X2NtZDogIFRoZSBzaGVs
bCBjb21tYW5kLiBBIDItdHVwbGUgd2hlcmUgZWxlbWVudCAwIGlzIGEgZGljdCBvZiBleHRyYQot
ICAgICAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0LCBhbmQgZWxlbWVudCAx
IGlzIGEgc3RyaW5nIHdpdGgKLSAgICAgICAgICAgICAgdGhlIGNvbW1hbmQgYW5kIGFueSBmbGFn
cy4KLSAgIiIiCi0KLSAgIyBEaXNhYmxlcyBleGNlcHRpb24gcG9wLXVwcyBvbiBXaW5kb3dzLgot
ICBlbnZpcm9uLCBjbWRsaW5lID0gZW52X2NtZAotICBlbnZpcm9uID0gZGljdChlbnZpcm9uKSAg
IyBFbnN1cmVzIHdlIGFyZSBtb2RpZnlpbmcgYSBjb3B5LgotICBlbnZpcm9uW0NBVENIX0VYQ0VQ
VElPTlNfRU5WX1ZBUl9OQU1FXSA9ICcxJwotICByZXR1cm4gTm9ybWFsaXplT3V0cHV0KEdldFNo
ZWxsQ29tbWFuZE91dHB1dCgoZW52aXJvbiwgY21kbGluZSkpKQotCi0KLWRlZiBHZXRPdXRwdXRP
ZkFsbENvbW1hbmRzKCk6Ci0gICIiIlJldHVybnMgY29uY2F0ZW5hdGVkIG91dHB1dCBmcm9tIHNl
dmVyYWwgcmVwcmVzZW50YXRpdmUgY29tbWFuZHMuIiIiCi0KLSAgcmV0dXJuIChHZXRDb21tYW5k
T3V0cHV0KENPTU1BTkRfV0lUSF9DT0xPUikgKwotICAgICAgICAgIEdldENvbW1hbmRPdXRwdXQo
Q09NTUFORF9XSVRIX1RJTUUpICsKLSAgICAgICAgICBHZXRDb21tYW5kT3V0cHV0KENPTU1BTkRf
V0lUSF9ESVNBQkxFRCkgKwotICAgICAgICAgIEdldENvbW1hbmRPdXRwdXQoQ09NTUFORF9XSVRI
X1NIQVJESU5HKSkKLQotCi10ZXN0X2xpc3QgPSBHZXRTaGVsbENvbW1hbmRPdXRwdXQoQ09NTUFO
RF9MSVNUX1RFU1RTKQotU1VQUE9SVFNfREVBVEhfVEVTVFMgPSAnRGVhdGhUZXN0JyBpbiB0ZXN0
X2xpc3QKLVNVUFBPUlRTX1RZUEVEX1RFU1RTID0gJ1R5cGVkVGVzdCcgaW4gdGVzdF9saXN0Ci1T
VVBQT1JUU19USFJFQURTID0gJ0V4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QnIGluIHRlc3Rf
bGlzdAotU1VQUE9SVFNfU1RBQ0tfVFJBQ0VTID0gRmFsc2UKLQotQ0FOX0dFTkVSQVRFX0dPTERF
Tl9GSUxFID0gKFNVUFBPUlRTX0RFQVRIX1RFU1RTIGFuZAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNVUFBPUlRTX1RZUEVEX1RFU1RTIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNVUFBPUlRTX1RIUkVBRFMpCi0KLQotY2xhc3MgR1Rlc3RPdXRwdXRUZXN0KGd0ZXN0X3Rl
c3RfdXRpbHMuVGVzdENhc2UpOgotICBkZWYgUmVtb3ZlVW5zdXBwb3J0ZWRUZXN0cyhzZWxmLCB0
ZXN0X291dHB1dCk6Ci0gICAgaWYgbm90IFNVUFBPUlRTX0RFQVRIX1RFU1RTOgotICAgICAgdGVz
dF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCAnRGVhdGhUZXN0JykK
LSAgICBpZiBub3QgU1VQUE9SVFNfVFlQRURfVEVTVFM6Ci0gICAgICB0ZXN0X291dHB1dCA9IFJl
bW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdUeXBlZFRlc3QnKQotICAgICAgdGVzdF9v
dXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCAnVHlwZWREZWF0aFRlc3Qn
KQotICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCAn
VHlwZVBhcmFtRGVhdGhUZXN0JykKLSAgICBpZiBub3QgU1VQUE9SVFNfVEhSRUFEUzoKLSAgICAg
IHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRz
VGVzdCcpCi0gICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRw
dXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Njb3BlZEZha2VU
ZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdCcpCi0gICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1h
dGNoaW5nVGVzdHModGVzdF9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ1dvcmtzQ29uY3VycmVudGx5JykKLSAgICBpZiBub3QgU1VQUE9SVFNfU1RBQ0tf
VFJBQ0VTOgotICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVTdGFja1RyYWNlcyh0ZXN0X291dHB1
dCkKLQotICAgIHJldHVybiB0ZXN0X291dHB1dAotCi0gIGRlZiB0ZXN0T3V0cHV0KHNlbGYpOgot
ICAgIG91dHB1dCA9IEdldE91dHB1dE9mQWxsQ29tbWFuZHMoKQotCi0gICAgZ29sZGVuX2ZpbGUg
PSBvcGVuKEdPTERFTl9QQVRILCAncmInKQotICAgICMgQSBtaXMtY29uZmlndXJlZCBzb3VyY2Ug
Y29udHJvbCBzeXN0ZW0gY2FuIGNhdXNlIFxyIGFwcGVhciBpbiBFT0wKLSAgICAjIHNlcXVlbmNl
cyB3aGVuIHdlIHJlYWQgdGhlIGdvbGRlbiBmaWxlIGlycmVzcGVjdGl2ZSBvZiBhbiBvcGVyYXRp
bmcKLSAgICAjIHN5c3RlbSB1c2VkLiBUaGVyZWZvcmUsIHdlIG5lZWQgdG8gc3RyaXAgdGhvc2Ug
XHIncyBmcm9tIG5ld2xpbmVzCi0gICAgIyB1bmNvbmRpdGlvbmFsbHkuCi0gICAgZ29sZGVuID0g
VG9Vbml4TGluZUVuZGluZyhnb2xkZW5fZmlsZS5yZWFkKCkpCi0gICAgZ29sZGVuX2ZpbGUuY2xv
c2UoKQotCi0gICAgIyBXZSB3YW50IHRoZSB0ZXN0IHRvIHBhc3MgcmVnYXJkbGVzcyBvZiBjZXJ0
YWluIGZlYXR1cmVzIGJlaW5nCi0gICAgIyBzdXBwb3J0ZWQgb3Igbm90LgotCi0gICAgIyBXZSBz
dGlsbCBoYXZlIHRvIHJlbW92ZSB0eXBlIG5hbWUgc3BlY2lmaWNzIGluIGFsbCBjYXNlcy4KLSAg
ICBub3JtYWxpemVkX2FjdHVhbCA9IFJlbW92ZVR5cGVJbmZvRGV0YWlscyhvdXRwdXQpCi0gICAg
bm9ybWFsaXplZF9nb2xkZW4gPSBSZW1vdmVUeXBlSW5mb0RldGFpbHMoZ29sZGVuKQotCi0gICAg
aWYgQ0FOX0dFTkVSQVRFX0dPTERFTl9GSUxFOgotICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3Jt
YWxpemVkX2dvbGRlbiwgbm9ybWFsaXplZF9hY3R1YWwpCi0gICAgZWxzZToKLSAgICAgIG5vcm1h
bGl6ZWRfYWN0dWFsID0gUmVtb3ZlVGVzdENvdW50cyhub3JtYWxpemVkX2FjdHVhbCkKLSAgICAg
IG5vcm1hbGl6ZWRfZ29sZGVuID0gUmVtb3ZlVGVzdENvdW50cyhzZWxmLlJlbW92ZVVuc3VwcG9y
dGVkVGVzdHMoCi0gICAgICAgICAgbm9ybWFsaXplZF9nb2xkZW4pKQotCi0gICAgICAjIFRoaXMg
Y29kZSBpcyB2ZXJ5IGhhbmR5IHdoZW4gZGVidWdnaW5nIGdvbGRlbiBmaWxlIGRpZmZlcmVuY2Vz
OgotICAgICAgaWYgb3MuZ2V0ZW52KCdERUJVR19HVEVTVF9PVVRQVVRfVEVTVCcpOgotICAgICAg
ICBvcGVuKG9zLnBhdGguam9pbigKLSAgICAgICAgICAgIGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291
cmNlRGlyKCksCi0gICAgICAgICAgICAnX2d0ZXN0X291dHB1dF90ZXN0X25vcm1hbGl6ZWRfYWN0
dWFsLnR4dCcpLCAnd2InKS53cml0ZSgKLSAgICAgICAgICAgICAgICBub3JtYWxpemVkX2FjdHVh
bCkKLSAgICAgICAgb3Blbihvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICBndGVzdF90ZXN0X3V0
aWxzLkdldFNvdXJjZURpcigpLAotICAgICAgICAgICAgJ19ndGVzdF9vdXRwdXRfdGVzdF9ub3Jt
YWxpemVkX2dvbGRlbi50eHQnKSwgJ3diJykud3JpdGUoCi0gICAgICAgICAgICAgICAgbm9ybWFs
aXplZF9nb2xkZW4pCi0KLSAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWFsaXplZF9nb2xkZW4s
IG5vcm1hbGl6ZWRfYWN0dWFsKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGlm
IHN5cy5hcmd2WzE6XSA9PSBbR0VOR09MREVOX0ZMQUddOgotICAgIGlmIENBTl9HRU5FUkFURV9H
T0xERU5fRklMRToKLSAgICAgIG91dHB1dCA9IEdldE91dHB1dE9mQWxsQ29tbWFuZHMoKQotICAg
ICAgZ29sZGVuX2ZpbGUgPSBvcGVuKEdPTERFTl9QQVRILCAnd2InKQotICAgICAgZ29sZGVuX2Zp
bGUud3JpdGUob3V0cHV0KQotICAgICAgZ29sZGVuX2ZpbGUuY2xvc2UoKQotICAgIGVsc2U6Ci0g
ICAgICBtZXNzYWdlID0gKAotICAgICAgICAgICIiIlVuYWJsZSB0byB3cml0ZSBhIGdvbGRlbiBm
aWxlIHdoZW4gY29tcGlsZWQgaW4gYW4gZW52aXJvbm1lbnQKLXRoYXQgZG9lcyBub3Qgc3VwcG9y
dCBhbGwgdGhlIHJlcXVpcmVkIGZlYXR1cmVzIChkZWF0aCB0ZXN0cyIiIikKLSAgICAgIGlmIElT
X1dJTkRPV1M6Ci0gICAgICAgIG1lc3NhZ2UgKz0gKAotICAgICAgICAgICAgIiIiXG5hbmQgdHlw
ZWQgdGVzdHMpLiBQbGVhc2UgY2hlY2sgdGhhdCB5b3UgYXJlIHVzaW5nIFZDKysgOC4wIFNQMQot
b3IgaGlnaGVyIGFzIHlvdXIgY29tcGlsZXIuIiIiKQotICAgICAgZWxzZToKLSAgICAgICAgbWVz
c2FnZSArPSAiIiJcbnR5cGVkIHRlc3RzLCBhbmQgdGhyZWFkcykuICBQbGVhc2UgZ2VuZXJhdGUg
dGhlCi1nb2xkZW4gZmlsZSB1c2luZyBhIGJpbmFyeSBidWlsdCB3aXRoIHRob3NlIGZlYXR1cmVz
IGVuYWJsZWQuIiIiCi0KLSAgICAgIHN5cy5zdGRlcnIud3JpdGUobWVzc2FnZSkKLSAgICAgIHN5
cy5leGl0KDEpCi0gIGVsc2U6Ci0gICAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF8uY2MKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3M2U4ZTkzZWIwNTlmNWRiNjkzN2M4YzdkNzc3NjZm
ODc4MDUyNzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF8uY2MKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMTM1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5j
LgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBIHVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QgaXRzZWxm
LiAgVGhpcyB2ZXJpZmllcyB0aGF0IHRoZSBiYXNpYwotLy8gY29uc3RydWN0cyBvZiBHb29nbGUg
VGVzdCB3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikK
LQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
Ci0KLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdv
b2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVz
dC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21w
aWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNj
aWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8gaGlzIGNvZGUu
Ci0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWlu
dGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi0jaW5jbHVkZSA8
c3RkbGliLmg+Ci0KLSNpZiBHVEVTVF9JU19USFJFQURTQUZFCi11c2luZyB0ZXN0aW5nOjpTY29w
ZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjsKLXVzaW5nIHRlc3Rpbmc6OlRlc3RQYXJ0UmVz
dWx0QXJyYXk7Ci0KLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpOb3RpZmljYXRpb247Ci11c2lu
ZyB0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkV2l0aFBhcmFtOwotI2VuZGlmCi0KLW5hbWVzcGFj
ZSBwb3NpeCA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OwotdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OlN0cmluZzsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpzY29wZWRfcHRyOwotCi0v
LyBUZXN0cyBjYXRjaGluZyBmYXRhbCBmYWlsdXJlcy4KLQotLy8gQSBzdWJyb3V0aW5lIHVzZWQg
YnkgdGhlIGZvbGxvd2luZyB0ZXN0Lgotdm9pZCBUZXN0RXExKGludCB4KSB7Ci0gIEFTU0VSVF9F
USgxLCB4KTsKLX0KLQotLy8gVGhpcyBmdW5jdGlvbiBjYWxscyBhIHRlc3Qgc3Vicm91dGluZSwg
Y2F0Y2hlcyB0aGUgZmF0YWwgZmFpbHVyZSBpdAotLy8gZ2VuZXJhdGVzLCBhbmQgdGhlbiByZXR1
cm5zIGVhcmx5Lgotdm9pZCBUcnlUZXN0U3Vicm91dGluZSgpIHsKLSAgLy8gQ2FsbHMgYSBzdWJy
b3VudGluZSB0aGF0IHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUuCi0gIFRlc3RFcTEoMik7Ci0KLSAg
Ly8gQ2F0Y2hlcyB0aGUgZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSB0ZXN0LgotICAvLwot
ICAvLyBUaGUgdGVzdGluZzo6VGVzdDo6IHByZWZpeCBpcyBuZWNlc3Nhcnkgd2hlbiBjYWxsaW5n
Ci0gIC8vIEhhc0ZhdGFsRmFpbHVyZSgpIG91dHNpZGUgb2YgYSBURVNULCBURVNUX0YsIG9yIHRl
c3QgZml4dHVyZS4KLSAgaWYgKHRlc3Rpbmc6OlRlc3Q6Okhhc0ZhdGFsRmFpbHVyZSgpKSByZXR1
cm47Ci0KLSAgLy8gSWYgd2UgZ2V0IGhlcmUsIHNvbWV0aGluZyBpcyB3cm9uZy4KLSAgRkFJTCgp
IDw8ICJUaGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkLiI7Ci19Ci0KLVRFU1QoUGFzc2luZ1Rl
c3QsIFBhc3NpbmdUZXN0MSkgewotfQotCi1URVNUKFBhc3NpbmdUZXN0LCBQYXNzaW5nVGVzdDIp
IHsKLX0KLQotLy8gVGVzdHMgY2F0Y2hpbmcgYSBmYXRhbCBmYWlsdXJlIGluIGEgc3Vicm91dGlu
ZS4KLVRFU1QoRmF0YWxGYWlsdXJlVGVzdCwgRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lKSB7Ci0g
IHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKVxuIik7Ci0K
LSAgVHJ5VGVzdFN1YnJvdXRpbmUoKTsKLX0KLQotLy8gVGVzdHMgY2F0Y2hpbmcgYSBmYXRhbCBm
YWlsdXJlIGluIGEgbmVzdGVkIHN1YnJvdXRpbmUuCi1URVNUKEZhdGFsRmFpbHVyZVRlc3QsIEZh
dGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZSkgewotICBwcmludGYoIihleHBlY3RpbmcgYSBm
YWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSlcbiIpOwotCi0gIC8vIENhbGxzIGEgc3Vicm91bnRp
bmUgdGhhdCB5aWVsZHMgYSBmYXRhbCBmYWlsdXJlLgotICBUcnlUZXN0U3Vicm91dGluZSgpOwot
Ci0gIC8vIENhdGNoZXMgdGhlIGZhdGFsIGZhaWx1cmUgYW5kIGFib3J0cyB0aGUgdGVzdC4KLSAg
Ly8KLSAgLy8gV2hlbiBjYWxsaW5nIEhhc0ZhdGFsRmFpbHVyZSgpIGluc2lkZSBhIFRFU1QsIFRF
U1RfRiwgb3IgdGVzdAotICAvLyBmaXh0dXJlLCB0aGUgdGVzdGluZzo6VGVzdDo6IHByZWZpeCBp
cyBub3QgbmVlZGVkLgotICBpZiAoSGFzRmF0YWxGYWlsdXJlKCkpIHJldHVybjsKLQotICAvLyBJ
ZiB3ZSBnZXQgaGVyZSwgc29tZXRoaW5nIGlzIHdyb25nLgotICBGQUlMKCkgPDwgIlRoaXMgc2hv
dWxkIG5ldmVyIGJlIHJlYWNoZWQuIjsKLX0KLQotLy8gVGVzdHMgSGFzRmF0YWxGYWlsdXJlKCkg
YWZ0ZXIgYSBmYWlsZWQgRVhQRUNUIGNoZWNrLgotVEVTVChGYXRhbEZhaWx1cmVUZXN0LCBOb25m
YXRhbEZhaWx1cmVJblN1YnJvdXRpbmUpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVy
ZSBvbiBmYWxzZSlcbiIpOwotICBFWFBFQ1RfVFJVRShmYWxzZSk7ICAvLyBHZW5lcmF0ZXMgYSBu
b25mYXRhbCBmYWlsdXJlCi0gIEFTU0VSVF9GQUxTRShIYXNGYXRhbEZhaWx1cmUoKSk7ICAvLyBU
aGlzIHNob3VsZCBzdWNjZWVkLgotfQotCi0vLyBUZXN0cyBpbnRlcmxlYXZpbmcgdXNlciBsb2dn
aW5nIGFuZCBHb29nbGUgVGVzdCBhc3NlcnRpb25zLgotVEVTVChMb2dnaW5nVGVzdCwgSW50ZXJs
ZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMpIHsKLSAgc3RhdGljIGNvbnN0IGludCBhWzRdID0g
ewotICAgIDMsIDksIDIsIDYKLSAgfTsKLQotICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJl
cyBvbiAoMykgPj0gKGFbaV0pKVxuIik7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoYSkvc2l6ZW9mKCphKSk7IGkrKykgewotICAgIHByaW50ZigiaSA9PSAl
ZFxuIiwgaSk7Ci0gICAgRVhQRUNUX0dFKDMsIGFbaV0pOwotICB9Ci19Ci0KLS8vIFRlc3RzIHRo
ZSBTQ09QRURfVFJBQ0UgbWFjcm8uCi0KLS8vIEEgaGVscGVyIGZ1bmN0aW9uIGZvciB0ZXN0aW5n
IFNDT1BFRF9UUkFDRS4KLXZvaWQgU3ViV2l0aG91dFRyYWNlKGludCBuKSB7Ci0gIEVYUEVDVF9F
USgxLCBuKTsKLSAgQVNTRVJUX0VRKDIsIG4pOwotfQotCi0vLyBBbm90aGVyIGhlbHBlciBmdW5j
dGlvbiBmb3IgdGVzdGluZyBTQ09QRURfVFJBQ0UuCi12b2lkIFN1YldpdGhUcmFjZShpbnQgbikg
ewotICBTQ09QRURfVFJBQ0UodGVzdGluZzo6TWVzc2FnZSgpIDw8ICJuID0gIiA8PCBuKTsKLQot
ICBTdWJXaXRob3V0VHJhY2Uobik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFKCkg
b2JleXMgbGV4aWNhbCBzY29wZXMuCi1URVNUKFNDT1BFRF9UUkFDRVRlc3QsIE9iZXlzU2NvcGVz
KSB7Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKLQotICAvLyBUaGVyZSBzaG91
bGQgYmUgbm8gdHJhY2UgYmVmb3JlIFNDT1BFRF9UUkFDRSgpIGlzIGludm9rZWQuCi0gIEFERF9G
QUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZl
IGEgdHJhY2UuIjsKLQotICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJFeHBlY3RlZCB0cmFjZSIpOwot
ICAgIC8vIEFmdGVyIFNDT1BFRF9UUkFDRSgpLCBhIGZhaWx1cmUgaW4gdGhlIGN1cnJlbnQgc2Nv
cGUgc2hvdWxkIGNvbnRhaW4KLSAgICAvLyB0aGUgdHJhY2UuCi0gICAgQUREX0ZBSUxVUkUoKSA8
PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGhhdmUgYSB0cmFjZS4iOwot
ICB9Ci0KLSAgLy8gT25jZSB0aGUgY29udHJvbCBsZWF2ZXMgdGhlIHNjb3BlIG9mIHRoZSBTQ09Q
RURfVFJBQ0UoKSwgdGhlcmUKLSAgLy8gc2hvdWxkIGJlIG5vIHRyYWNlIGFnYWluLgotICBBRERf
RkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGRuJ3QgaGF2
ZSBhIHRyYWNlLiI7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFIHdvcmtzIGluc2lk
ZSBhIGxvb3AuCi1URVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtzSW5Mb29wKSB7Ci0gIHByaW50
ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKLQotICBmb3IgKGludCBpID0gMTsgaSA8PSAyOyBp
KyspIHsKLSAgICBTQ09QRURfVFJBQ0UodGVzdGluZzo6TWVzc2FnZSgpIDw8ICJpID0gIiA8PCBp
KTsKLQotICAgIFN1YldpdGhvdXRUcmFjZShpKTsKLSAgfQotfQotCi0vLyBUZXN0cyB0aGF0IFND
T1BFRF9UUkFDRSB3b3JrcyBpbiBhIHN1YnJvdXRpbmUuCi1URVNUKFNDT1BFRF9UUkFDRVRlc3Qs
IFdvcmtzSW5TdWJyb3V0aW5lKSB7Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsK
LQotICBTdWJXaXRoVHJhY2UoMSk7Ci0gIFN1YldpdGhUcmFjZSgyKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBTQ09QRURfVFJBQ0UgY2FuIGJlIG5lc3RlZC4KLVRFU1QoU0NPUEVEX1RSQUNFVGVzdCwg
Q2FuQmVOZXN0ZWQpIHsKLSAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIpOwotCi0gIFND
T1BFRF9UUkFDRSgiIik7ICAvLyBBIHRyYWNlIHdpdGhvdXQgYSBtZXNzYWdlLgotCi0gIFN1Yldp
dGhUcmFjZSgyKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBtdWx0aXBsZSBTQ09QRURfVFJBQ0VzIGNh
biBiZSB1c2VkIGluIHRoZSBzYW1lIHNjb3BlLgotVEVTVChTQ09QRURfVFJBQ0VUZXN0LCBDYW5C
ZVJlcGVhdGVkKSB7Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKLQotICBTQ09Q
RURfVFJBQ0UoIkEiKTsKLSAgQUREX0ZBSUxVUkUoKQotICAgICAgPDwgIlRoaXMgZmFpbHVyZSBp
cyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEuIjsKLQotICBTQ09Q
RURfVFJBQ0UoIkIiKTsKLSAgQUREX0ZBSUxVUkUoKQotICAgICAgPDwgIlRoaXMgZmFpbHVyZSBp
cyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEgYW5kIEIuIjsKLQot
ICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJDIik7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBm
YWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gIgotICAgICAgICAgICAgICAg
ICAgPDwgInRyYWNlIHBvaW50IEEsIEIsIGFuZCBDLiI7Ci0gIH0KLQotICBTQ09QRURfVFJBQ0Uo
IkQiKTsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQg
c2hvdWxkIGNvbnRhaW4gIgotICAgICAgICAgICAgICAgIDw8ICJ0cmFjZSBwb2ludCBBLCBCLCBh
bmQgRC4iOwotfQotCi0jaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQotLy8gVGVzdHMgdGhhdCBTQ09Q
RURfVFJBQ0UoKXMgY2FuIGJlIHVzZWQgY29uY3VycmVudGx5IGZyb20gbXVsdGlwbGUKLS8vIHRo
cmVhZHMuICBOYW1lbHksIGFuIGFzc2VydGlvbiBzaG91bGQgYmUgYWZmZWN0ZWQgYnkKLS8vIFND
T1BFRF9UUkFDRSgpcyBpbiBpdHMgb3duIHRocmVhZCBvbmx5LgotCi0vLyBIZXJlJ3MgdGhlIHNl
cXVlbmNlIG9mIGFjdGlvbnMgdGhhdCBoYXBwZW4gaW4gdGhlIHRlc3Q6Ci0vLwotLy8gICBUaHJl
YWQgQSAobWFpbikgICAgICAgICAgICAgICAgfCBUaHJlYWQgQiAoc3Bhd25lZCkKLS8vICAgPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PXw9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLy8gICBzcGF3bnMgdGhyZWFkIEIgICAgICAgICAgICAgICAgfAotLy8gICAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyAgIHdhaXRzIGZvciBuMSAgICAgICAgICAgICAgICAgICB8IFNDT1BFRF9UUkFDRSgiVHJh
Y2UgQiIpOwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnZW5lcmF0ZXMg
ZmFpbHVyZSAjMQotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBub3RpZmll
cyBuMQotLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgIFNDT1BFRF9UUkFDRSgiVHJhY2UgQSIpOyAgICAgICB8
IHdhaXRzIGZvciBuMgotLy8gICBnZW5lcmF0ZXMgZmFpbHVyZSAjMiAgICAgICAgICAgfAotLy8g
ICBub3RpZmllcyBuMiAgICAgICAgICAgICAgICAgICAgfAotLy8gICAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgIHdh
aXRzIGZvciBuMyAgICAgICAgICAgICAgICAgICB8IGdlbmVyYXRlcyBmYWlsdXJlICMzCi0vLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRyYWNlIEIgZGllcwotLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnZW5lcmF0ZXMgZmFpbHVyZSAjNAotLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBub3RpZmllcyBuMwotLy8gICAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyAgIGdlbmVyYXRlcyBmYWlsdXJlICM1ICAgICAgICAgICB8IGZpbmlzaGVzCi0vLyAgIHRy
YWNlIEEgZGllcyAgICAgICAgICAgICAgICAgICB8Ci0vLyAgIGdlbmVyYXRlcyBmYWlsdXJlICM2
ICAgICAgICAgICB8Ci0vLyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vICAgd2FpdHMgZm9yIHRocmVhZCBCIHRvIGZp
bmlzaCAgIHwKLQotc3RydWN0IENoZWNrUG9pbnRzIHsKLSAgTm90aWZpY2F0aW9uIG4xOwotICBO
b3RpZmljYXRpb24gbjI7Ci0gIE5vdGlmaWNhdGlvbiBuMzsKLX07Ci0KLXN0YXRpYyB2b2lkIFRo
cmVhZFdpdGhTY29wZWRUcmFjZShDaGVja1BvaW50cyogY2hlY2tfcG9pbnRzKSB7Ci0gIHsKLSAg
ICBTQ09QRURfVFJBQ0UoIlRyYWNlIEIiKTsKLSAgICBBRERfRkFJTFVSRSgpCi0gICAgICAgIDw8
ICJFeHBlY3RlZCBmYWlsdXJlICMxIChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBCIGFsaXZlKS4i
OwotICAgIGNoZWNrX3BvaW50cy0+bjEuTm90aWZ5KCk7Ci0gICAgY2hlY2tfcG9pbnRzLT5uMi5X
YWl0Rm9yTm90aWZpY2F0aW9uKCk7Ci0KLSAgICBBRERfRkFJTFVSRSgpCi0gICAgICAgIDw8ICJF
eHBlY3RlZCBmYWlsdXJlICMzIChpbiB0aHJlYWQgQiwgdHJhY2UgQSAmIEIgYm90aCBhbGl2ZSku
IjsKLSAgfSAgLy8gVHJhY2UgQiBkaWVzIGhlcmUuCi0gIEFERF9GQUlMVVJFKCkKLSAgICAgIDw8
ICJFeHBlY3RlZCBmYWlsdXJlICM0IChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBBIGFsaXZlKS4i
OwotICBjaGVja19wb2ludHMtPm4zLk5vdGlmeSgpOwotfQotCi1URVNUKFNDT1BFRF9UUkFDRVRl
c3QsIFdvcmtzQ29uY3VycmVudGx5KSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyA2IGZhaWx1cmVz
KVxuIik7Ci0KLSAgQ2hlY2tQb2ludHMgY2hlY2tfcG9pbnRzOwotICBUaHJlYWRXaXRoUGFyYW08
Q2hlY2tQb2ludHMqPiB0aHJlYWQoJlRocmVhZFdpdGhTY29wZWRUcmFjZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaGVja19wb2ludHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgY2hlY2tfcG9pbnRzLm4xLldhaXRG
b3JOb3RpZmljYXRpb24oKTsKLQotICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJUcmFjZSBBIik7Ci0g
ICAgQUREX0ZBSUxVUkUoKQotICAgICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiAoaW4gdGhy
ZWFkIEEsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLiI7Ci0gICAgY2hlY2tfcG9pbnRzLm4yLk5v
dGlmeSgpOwotICAgIGNoZWNrX3BvaW50cy5uMy5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7Ci0KLSAg
ICBBRERfRkFJTFVSRSgpCi0gICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM1IChpbiB0aHJl
YWQgQSwgb25seSB0cmFjZSBBIGFsaXZlKS4iOwotICB9ICAvLyBUcmFjZSBBIGRpZXMgaGVyZS4K
LSAgQUREX0ZBSUxVUkUoKQotICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzYgKGluIHRocmVh
ZCBBLCBubyB0cmFjZSBhbGl2ZSkuIjsKLSAgdGhyZWFkLkpvaW4oKTsKLX0KLSNlbmRpZiAgLy8g
R1RFU1RfSVNfVEhSRUFEU0FGRQotCi1URVNUKERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdCwKLSAg
ICAgRElTQUJMRURfQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnU3VwcHJlc3Nlc1dhcm5pbmcpIHsK
LSAgLy8gVGhpcyB0ZXN0IGJvZHkgaXMgaW50ZW50aW9uYWxseSBlbXB0eS4gIEl0cyBzb2xlIHB1
cnBvc2UgaXMgZm9yCi0gIC8vIHZlcmlmeWluZyB0aGF0IHRoZSAtLWd0ZXN0X2Fsc29fcnVuX2Rp
c2FibGVkX3Rlc3RzIGZsYWcKLSAgLy8gc3VwcHJlc3NlcyB0aGUgIllPVSBIQVZFIDEyIERJU0FC
TEVEIFRFU1RTIiB3YXJuaW5nIGF0IHRoZSBlbmQgb2YKLSAgLy8gdGhlIHRlc3Qgb3V0cHV0Lgot
fQotCi0vLyBUZXN0cyB1c2luZyBhc3NlcnRpb25zIG91dHNpZGUgb2YgVEVTVCBhbmQgVEVTVF9G
LgotLy8KLS8vIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyB0d28gZmFpbHVyZXMgaW50ZW50aW9uYWxs
eS4KLXZvaWQgQWRIb2NUZXN0KCkgewotICBwcmludGYoIlRoZSBub24tdGVzdCBwYXJ0IG9mIHRo
ZSBjb2RlIGlzIGV4cGVjdGVkIHRvIGhhdmUgMiBmYWlsdXJlcy5cblxuIik7Ci0gIEVYUEVDVF9U
UlVFKGZhbHNlKTsKLSAgRVhQRUNUX0VRKDIsIDMpOwotfQotCi0vLyBSdW5zIGFsbCBURVNUcywg
YWxsIFRFU1RfRnMsIGFuZCB0aGUgYWQgaG9jIHRlc3QuCi1pbnQgUnVuQWxsVGVzdHMoKSB7Ci0g
IEFkSG9jVGVzdCgpOwotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQotCi0vLyBUZXN0cyBu
b24tZmF0YWwgZmFpbHVyZXMgaW4gdGhlIGZpeHR1cmUgY29uc3RydWN0b3IuCi1jbGFzcyBOb25G
YXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7Ci0gcHJvdGVjdGVkOgotICBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRl
c3QoKSB7Ci0gICAgcHJpbnRmKCIoZXhwZWN0aW5nIDUgZmFpbHVyZXMpXG4iKTsKLSAgICBBRERf
RkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGMn
dG9yLiI7Ci0gIH0KLQotICB+Tm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0
KCkgewotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzUsIGluIHRoZSB0
ZXN0IGZpeHR1cmUgZCd0b3IuIjsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAg
ICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBTZXRVcCgpLiI7Ci0g
IH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAi
RXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gVGVhckRvd24uIjsKLSAgfQotfTsKLQotVEVTVF9GKE5v
bkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCwgRmFpbHVyZUluQ29uc3RydWN0
b3IpIHsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRl
c3QgYm9keS4iOwotfQotCi0vLyBUZXN0cyBmYXRhbCBmYWlsdXJlcyBpbiB0aGUgZml4dHVyZSBj
b25zdHJ1Y3Rvci4KLWNsYXNzIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIEZhdGFsRmFpbHVyZUluRml4
dHVyZUNvbnN0cnVjdG9yVGVzdCgpIHsKLSAgICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJl
cylcbiIpOwotICAgIEluaXQoKTsKLSAgfQotCi0gIH5GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25z
dHJ1Y3RvclRlc3QoKSB7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAj
MiwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4iOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNl
dFVwKCkgewotICAgIEFERF9GQUlMVVJFKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiBTZXRV
cCgpLiAgIgotICAgICAgICAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwg
YXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciAiCi0gICAgICAgICAgICAgICAgICA8PCAiaGFkIGEg
ZmF0YWwgZmFpbHVyZS4iOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAg
IEFERF9GQUlMVVJFKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiBUZWFyRG93bigpLiAgIgot
ICAgICAgICAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgdGhlIHRl
c3QgZml4dHVyZSBjJ3RvciAiCi0gICAgICAgICAgICAgICAgICA8PCAiaGFkIGEgZmF0YWwgZmFp
bHVyZS4iOwotICB9Ci0gcHJpdmF0ZToKLSAgdm9pZCBJbml0KCkgewotICAgIEZBSUwoKSA8PCAi
RXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4iOwotICB9Ci19
OwotCi1URVNUX0YoRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LCBGYWlsdXJl
SW5Db25zdHJ1Y3RvcikgewotICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUg
aW4gdGhlIHRlc3QgYm9keS4gICIKLSAgICAgICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVy
IGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yICIKLSAgICAgICAgICAgICAgICA8
PCAiaGFkIGEgZmF0YWwgZmFpbHVyZS4iOwotfQotCi0vLyBUZXN0cyBub24tZmF0YWwgZmFpbHVy
ZXMgaW4gU2V0VXAoKS4KLWNsYXNzIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB+Tm9uRmF0YWxGYWlsdXJl
SW5TZXRVcFRlc3QoKSB7Ci0gICAgRGVpbml0KCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0
VXAoKSB7Ci0gICAgcHJpbnRmKCIoZXhwZWN0aW5nIDQgZmFpbHVyZXMpXG4iKTsKLSAgICBBRERf
RkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLiI7Ci0gIH0KLQot
ICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWls
dXJlICMzLCBpbiBUZWFyRG93bigpLiI7Ci0gIH0KLSBwcml2YXRlOgotICB2b2lkIERlaW5pdCgp
IHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRoZSB0ZXN0IGZpeHR1
cmUgZCd0b3IuIjsKLSAgfQotfTsKLQotVEVTVF9GKE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0
LCBGYWlsdXJlSW5TZXRVcCkgewotICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGlu
IHRoZSB0ZXN0IGZ1bmN0aW9uLiI7Ci19Ci0KLS8vIFRlc3RzIGZhdGFsIGZhaWx1cmVzIGluIFNl
dFVwKCkuCi1jbGFzcyBGYXRhbEZhaWx1cmVJblNldFVwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgfkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0KCkg
ewotICAgIERlaW5pdCgpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIHBy
aW50ZigiKGV4cGVjdGluZyAzIGZhaWx1cmVzKVxuIik7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3Rl
ZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRv
d24oKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigp
LiI7Ci0gIH0KLSBwcml2YXRlOgotICB2b2lkIERlaW5pdCgpIHsKLSAgICBGQUlMKCkgPDwgIkV4
cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKLSAgfQotfTsK
LQotVEVTVF9GKEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LCBGYWlsdXJlSW5TZXRVcCkgewotICBG
QUlMKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBmdW5jdGlvbi4gICIKLSAg
ICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIFNldFVwKCkgZmFpbGVkLiI7
Ci19Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0KLS8vIFRoaXMgZ3JvdXAgb2YgdGVzdHMgdmVy
aWZpZXMgdGhhdCBHb29nbGUgVGVzdCBoYW5kbGVzIFNFSCBhbmQgQysrCi0vLyBleGNlcHRpb25z
IGNvcnJlY3RseS4KLQotLy8gQSBmdW5jdGlvbiB0aGF0IHRocm93cyBhbiBTRUggZXhjZXB0aW9u
Lgotc3RhdGljIHZvaWQgVGhyb3dTRUgoKSB7Ci0gIGludCogcCA9IE5VTEw7Ci0gICpwID0gMDsg
IC8vIFJhaXNlcyBhbiBhY2Nlc3MgdmlvbGF0aW9uLgotfQotCi0vLyBUZXN0cyBleGNlcHRpb25z
IHRocm93biBpbiB0aGUgdGVzdCBmaXh0dXJlIGNvbnN0cnVjdG9yLgotY2xhc3MgRXhjZXB0aW9u
SW5GaXh0dXJlQ3RvclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgot
ICBFeGNlcHRpb25JbkZpeHR1cmVDdG9yVGVzdCgpIHsKLSAgICBwcmludGYoIihleHBlY3Rpbmcg
YSBmYWlsdXJlIG9uIHRocm93biBleGNlcHRpb24gIgotICAgICAgICAgICAiaW4gdGhlIHRlc3Qg
Zml4dHVyZSdzIGNvbnN0cnVjdG9yKVxuIik7Ci0KLSAgICBUaHJvd1NFSCgpOwotICB9Ci0KLSAg
dmlydHVhbCB+RXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3QoKSB7Ci0gICAgRGVpbml0KCk7Ci0g
IH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgRkFJTCgpIDw8ICJVTkVYUEVDVEVE
IGZhaWx1cmUgaW4gU2V0VXAoKS4gICIKLSAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBn
ZXQgaGVyZSwgYXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciB0aHJldy4iOwotICB9Ci0KLSAgdmly
dHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIEZBSUwoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJl
IGluIFRlYXJEb3duKCkuICAiCi0gICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhl
cmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgdGhyZXcuIjsKLSAgfQotIHByaXZhdGU6Ci0g
IHZvaWQgRGVpbml0KCkgewotICAgIEZBSUwoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIHRo
ZSBkJ3Rvci4gICIKLSAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMg
dGhlIHRlc3QgZml4dHVyZSBjJ3RvciB0aHJldy4iOwotICB9Ci19OwotCi1URVNUX0YoRXhjZXB0
aW9uSW5GaXh0dXJlQ3RvclRlc3QsIEV4Y2VwdGlvbkluRml4dHVyZUN0b3IpIHsKLSAgRkFJTCgp
IDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gdGhlIHRlc3QgZnVuY3Rpb24uICAiCi0gICAgICAg
ICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9y
IHRocmV3LiI7Ci19Ci0KLS8vIFRlc3RzIGV4Y2VwdGlvbnMgdGhyb3duIGluIFNldFVwKCkuCi1j
bGFzcyBFeGNlcHRpb25JblNldFVwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90
ZWN0ZWQ6Ci0gIHZpcnR1YWwgfkV4Y2VwdGlvbkluU2V0VXBUZXN0KCkgewotICAgIERlaW5pdCgp
OwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIHByaW50ZigiKGV4cGVjdGlu
ZyAzIGZhaWx1cmVzKVxuIik7Ci0KLSAgICBUaHJvd1NFSCgpOwotICB9Ci0KLSAgdmlydHVhbCB2
b2lkIFRlYXJEb3duKCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4g
VGVhckRvd24oKS4iOwotICB9Ci0gcHJpdmF0ZToKLSAgdm9pZCBEZWluaXQoKSB7Ci0gICAgRkFJ
TCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLiI7
Ci0gIH0KLX07Ci0KLVRFU1RfRihFeGNlcHRpb25JblNldFVwVGVzdCwgRXhjZXB0aW9uSW5TZXRV
cCkgewotICBGQUlMKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBmdW5jdGlv
bi4gICIKLSAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIFNldFVwKCkg
dGhyZXcuIjsKLX0KLQotLy8gVGVzdHMgdGhhdCBUZWFyRG93bigpIGFuZCB0aGUgdGVzdCBmaXh0
dXJlIGQndG9yIGFyZSBhbHdheXMgY2FsbGVkLAotLy8gZXZlbiB3aGVuIHRoZSB0ZXN0IGZ1bmN0
aW9uIHRocm93cyBhbiBleGNlcHRpb24uCi1jbGFzcyBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIH5FeGNl
cHRpb25JblRlc3RGdW5jdGlvblRlc3QoKSB7Ci0gICAgRGVpbml0KCk7Ci0gIH0KLQotICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMy
LCBpbiBUZWFyRG93bigpLiI7Ci0gIH0KLSBwcml2YXRlOgotICB2b2lkIERlaW5pdCgpIHsKLSAg
ICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0
b3IuIjsKLSAgfQotfTsKLQotLy8gVGVzdHMgdGhhdCB0aGUgdGVzdCBmaXh0dXJlIGQndG9yIGlz
IGFsd2F5cyBjYWxsZWQsIGV2ZW4gd2hlbiB0aGUKLS8vIHRlc3QgZnVuY3Rpb24gdGhyb3dzIGFu
IFNFSCBleGNlcHRpb24uCi1URVNUX0YoRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0LCBTRUgp
IHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDMgZmFpbHVyZXMpXG4iKTsKLQotICBUaHJvd1NFSCgp
OwotfQotCi0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gVGVzdHMgdGhhdCB0aGUgdGVz
dCBmaXh0dXJlIGQndG9yIGlzIGFsd2F5cyBjYWxsZWQsIGV2ZW4gd2hlbiB0aGUKLS8vIHRlc3Qg
ZnVuY3Rpb24gdGhyb3dzIGEgQysrIGV4Y2VwdGlvbi4gIFdlIGRvIHRoaXMgb25seSB3aGVuCi0v
LyBHVEVTVF9IQVNfRVhDRVBUSU9OUyBpcyBub24temVybywgaS5lLiBDKysgZXhjZXB0aW9ucyBh
cmUgZW5hYmxlZC4KLVRFU1RfRihFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QsIENwcEV4Y2Vw
dGlvbikgewotICB0aHJvdyAxOwotfQotCi0vLyBUZXN0cyBleGNlcHRpb25zIHRocm93biBpbiBU
ZWFyRG93bigpLgotY2xhc3MgRXhjZXB0aW9uSW5UZWFyRG93blRlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIH5FeGNlcHRpb25JblRlYXJEb3duVGVz
dCgpIHsKLSAgICBEZWluaXQoKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsK
LSAgICB0aHJvdyAxOwotICB9Ci0gcHJpdmF0ZToKLSAgdm9pZCBEZWluaXQoKSB7Ci0gICAgRkFJ
TCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLiI7
Ci0gIH0KLX07Ci0KLVRFU1RfRihFeGNlcHRpb25JblRlYXJEb3duVGVzdCwgRXhjZXB0aW9uSW5U
ZWFyRG93bikgewotICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOwotfQotCi0j
ZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCi0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lO
RE9XUwotCi0jaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQotCi0vLyBBIHVuYXJ5IGZ1bmN0aW9uIHRo
YXQgbWF5IGRpZS4KLXZvaWQgRGllSWYoYm9vbCBzaG91bGRfZGllKSB7Ci0gIEdURVNUX0NIRUNL
Xyghc2hvdWxkX2RpZSkgPDwgIiAtIGRlYXRoIGluc2lkZSBEaWVJZigpLiI7Ci19Ci0KLS8vIFRl
c3RzIHJ1bm5pbmcgZGVhdGggdGVzdHMgaW4gYSBtdWx0aS10aHJlYWRlZCBjb250ZXh0LgotCi0v
LyBVc2VkIGZvciBjb29yZGluYXRpb24gYmV0d2VlbiB0aGUgbWFpbiBhbmQgdGhlIHNwYXduIHRo
cmVhZC4KLXN0cnVjdCBTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMgewotICBTcGF3blRocmVhZE5v
dGlmaWNhdGlvbnMoKSB7fQotCi0gIE5vdGlmaWNhdGlvbiBzcGF3bl90aHJlYWRfc3RhcnRlZDsK
LSAgTm90aWZpY2F0aW9uIHNwYXduX3RocmVhZF9va190b190ZXJtaW5hdGU7Ci0KLSBwcml2YXRl
OgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNwYXduVGhyZWFkTm90aWZpY2F0
aW9ucyk7Ci19OwotCi0vLyBUaGUgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgaW4gdGhlIHRocmVh
ZCBzcGF3biBieSB0aGUKLS8vIE11bHRpcGxlVGhyZWFkcyB0ZXN0IChiZWxvdykuCi1zdGF0aWMg
dm9pZCBUaHJlYWRSb3V0aW5lKFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyogbm90aWZpY2F0aW9u
cykgewotICAvLyBTaWduYWxzIHRoZSBtYWluIHRocmVhZCB0aGF0IHRoaXMgdGhyZWFkIGhhcyBz
dGFydGVkLgotICBub3RpZmljYXRpb25zLT5zcGF3bl90aHJlYWRfc3RhcnRlZC5Ob3RpZnkoKTsK
LQotICAvLyBXYWl0cyBmb3IgcGVybWlzc2lvbiB0byBmaW5pc2ggZnJvbSB0aGUgbWFpbiB0aHJl
YWQuCi0gIG5vdGlmaWNhdGlvbnMtPnNwYXduX3RocmVhZF9va190b190ZXJtaW5hdGUuV2FpdEZv
ck5vdGlmaWNhdGlvbigpOwotfQotCi0vLyBUaGlzIGlzIGEgZGVhdGgtdGVzdCB0ZXN0LCBidXQg
aXQncyBub3QgbmFtZWQgd2l0aCBhIERlYXRoVGVzdAotLy8gc3VmZml4LiAgSXQgc3RhcnRzIHRo
cmVhZHMgd2hpY2ggbWlnaHQgaW50ZXJmZXJlIHdpdGggbGF0ZXIKLS8vIGRlYXRoIHRlc3RzLCBz
byBpdCBtdXN0IHJ1biBhZnRlciBhbGwgb3RoZXIgZGVhdGggdGVzdHMuCi1jbGFzcyBEZWF0aFRl
c3RBbmRNdWx0aVRocmVhZHNUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3Rl
ZDoKLSAgLy8gU3RhcnRzIGEgdGhyZWFkIGFuZCB3YWl0cyBmb3IgaXQgdG8gYmVnaW4uCi0gIHZp
cnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICB0aHJlYWRfLnJlc2V0KG5ldyBUaHJlYWRXaXRoUGFy
YW08U3Bhd25UaHJlYWROb3RpZmljYXRpb25zKj4oCi0gICAgICAgICZUaHJlYWRSb3V0aW5lLCAm
bm90aWZpY2F0aW9uc18sIE5VTEwpKTsKLSAgICBub3RpZmljYXRpb25zXy5zcGF3bl90aHJlYWRf
c3RhcnRlZC5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7Ci0gIH0KLSAgLy8gVGVsbHMgdGhlIHRocmVh
ZCB0byBmaW5pc2gsIGFuZCByZWFwcyBpdC4KLSAgLy8gRGVwZW5kaW5nIG9uIHRoZSB2ZXJzaW9u
IG9mIHRoZSB0aHJlYWQgbGlicmFyeSBpbiB1c2UsCi0gIC8vIGEgbWFuYWdlciB0aHJlYWQgbWln
aHQgc3RpbGwgYmUgbGVmdCBydW5uaW5nIHRoYXQgd2lsbCBpbnRlcmZlcmUKLSAgLy8gd2l0aCBs
YXRlciBkZWF0aCB0ZXN0cy4gIFRoaXMgaXMgdW5mb3J0dW5hdGUsIGJ1dCB0aGlzIGNsYXNzCi0g
IC8vIGNsZWFucyB1cCBhZnRlciBpdHNlbGYgYXMgYmVzdCBpdCBjYW4uCi0gIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsKLSAgICBub3RpZmljYXRpb25zXy5zcGF3bl90aHJlYWRfb2tfdG9fdGVy
bWluYXRlLk5vdGlmeSgpOwotICB9Ci0KLSBwcml2YXRlOgotICBTcGF3blRocmVhZE5vdGlmaWNh
dGlvbnMgbm90aWZpY2F0aW9uc187Ci0gIHNjb3BlZF9wdHI8VGhyZWFkV2l0aFBhcmFtPFNwYXdu
VGhyZWFkTm90aWZpY2F0aW9ucyo+ID4gdGhyZWFkXzsKLX07Ci0KLSNlbmRpZiAgLy8gR1RFU1Rf
SVNfVEhSRUFEU0FGRQotCi0vLyBUaGUgTWl4ZWRVcFRlc3RDYXNlVGVzdCB0ZXN0IGNhc2UgdmVy
aWZpZXMgdGhhdCBHb29nbGUgVGVzdCB3aWxsIGZhaWwgYQotLy8gdGVzdCBpZiBpdCB1c2VzIGEg
ZGlmZmVyZW50IGZpeHR1cmUgY2xhc3MgdGhhbiB3aGF0IG90aGVyIHRlc3RzIGluCi0vLyB0aGUg
c2FtZSB0ZXN0IGNhc2UgdXNlLiAgSXQgZGVsaWJlcmF0ZWx5IGNvbnRhaW5zIHR3byBmaXh0dXJl
Ci0vLyBjbGFzc2VzIHdpdGggdGhlIHNhbWUgbmFtZSBidXQgZGVmaW5lZCBpbiBkaWZmZXJlbnQg
bmFtZXNwYWNlcy4KLQotLy8gVGhlIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0
IHRlc3QgY2FzZSB2ZXJpZmllcyB0aGF0Ci0vLyB3aGVuIHRoZSB1c2VyIGRlZmluZXMgdHdvIHRl
c3RzIHdpdGggdGhlIHNhbWUgdGVzdCBjYXNlIG5hbWUgQU5ECi0vLyBzYW1lIHRlc3QgbmFtZSAo
YnV0IGluIGRpZmZlcmVudCBuYW1lc3BhY2VzKSwgdGhlIHNlY29uZCB0ZXN0IHdpbGwKLS8vIGZh
aWwuCi0KLW5hbWVzcGFjZSBmb28gewotCi1jbGFzcyBNaXhlZFVwVGVzdENhc2VUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVEVTVF9GKE1peGVkVXBUZXN0Q2FzZVRlc3QsIEZp
cnN0VGVzdEZyb21OYW1lc3BhY2VGb28pIHt9Ci1URVNUX0YoTWl4ZWRVcFRlc3RDYXNlVGVzdCwg
U2Vjb25kVGVzdEZyb21OYW1lc3BhY2VGb28pIHt9Ci0KLWNsYXNzIE1peGVkVXBUZXN0Q2FzZVdp
dGhTYW1lVGVzdE5hbWVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVEVTVF9G
KE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAotICAgICAgIFRoZVNlY29uZFRl
c3RXaXRoVGhpc05hbWVTaG91bGRGYWlsKSB7fQotCi19ICAvLyBuYW1lc3BhY2UgZm9vCi0KLW5h
bWVzcGFjZSBiYXIgewotCi1jbGFzcyBNaXhlZFVwVGVzdENhc2VUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgewotfTsKLQotLy8gVGhlIGZvbGxvd2luZyB0d28gdGVzdHMgYXJlIGV4cGVjdGVk
IHRvIGZhaWwuICBXZSByZWx5IG9uIHRoZQotLy8gZ29sZGVuIGZpbGUgdG8gY2hlY2sgdGhhdCBH
b29nbGUgVGVzdCBnZW5lcmF0ZXMgdGhlIHJpZ2h0IGVycm9yIG1lc3NhZ2UuCi1URVNUX0YoTWl4
ZWRVcFRlc3RDYXNlVGVzdCwgVGhpc1Nob3VsZEZhaWwpIHt9Ci1URVNUX0YoTWl4ZWRVcFRlc3RD
YXNlVGVzdCwgVGhpc1Nob3VsZEZhaWxUb28pIHt9Ci0KLWNsYXNzIE1peGVkVXBUZXN0Q2FzZVdp
dGhTYW1lVGVzdE5hbWVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotLy8gRXhw
ZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIGNoZWNrIHRoYXQg
R29vZ2xlIFRlc3QKLS8vIGdlbmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KLVRFU1Rf
RihNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdCwKLSAgICAgICBUaGVTZWNvbmRU
ZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbCkge30KLQotfSAgLy8gbmFtZXNwYWNlIGJhcgotCi0v
LyBUaGUgZm9sbG93aW5nIHR3byB0ZXN0IGNhc2VzIHZlcmlmeSB0aGF0IEdvb2dsZSBUZXN0IGNh
dGNoZXMgdGhlIHVzZXIKLS8vIGVycm9yIG9mIG1peGluZyBURVNUIGFuZCBURVNUX0YgaW4gdGhl
IHNhbWUgdGVzdCBjYXNlLiAgVGhlIGZpcnN0Ci0vLyB0ZXN0IGNhc2UgY2hlY2tzIHRoZSBzY2Vu
YXJpbyB3aGVyZSBURVNUX0YgYXBwZWFycyBiZWZvcmUgVEVTVCwgYW5kCi0vLyB0aGUgc2Vjb25k
IG9uZSBjaGVja3Mgd2hlcmUgVEVTVCBhcHBlYXJzIGJlZm9yZSBURVNUX0YuCi0KLWNsYXNzIFRF
U1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKLX07Ci0KLVRFU1RfRihURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UsIERl
ZmluZWRVc2luZ1RFU1RfRikge30KLQotLy8gRXhwZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24g
dGhlIGdvbGRlbiBmaWxlIHRvIGNoZWNrIHRoYXQgR29vZ2xlIFRlc3QKLS8vIGdlbmVyYXRlcyB0
aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KLVRFU1QoVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVf
dGVzdF9jYXNlLCBEZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxkRmFpbCkge30KLQotY2xhc3MgVEVT
VF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlIDogcHVibGljIHRlc3Rpbmc6OlRlc3Qg
ewotfTsKLQotVEVTVChURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UsIERlZmlu
ZWRVc2luZ1RFU1QpIHt9Ci0KLS8vIEV4cGVjdGVkIHRvIGZhaWwuICBXZSByZWx5IG9uIHRoZSBn
b2xkZW4gZmlsZSB0byBjaGVjayB0aGF0IEdvb2dsZSBUZXN0Ci0vLyBnZW5lcmF0ZXMgdGhlIHJp
Z2h0IGVycm9yIG1lc3NhZ2UuCi1URVNUX0YoVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVz
dF9jYXNlLCBEZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsKSB7Ci19Ci0KLS8vIFVzZWQg
Zm9yIHRlc3RpbmcgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBhbmQgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoKS4KLWludCBnbG9iYWxfaW50ZWdlciA9IDA7Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoKSBjYW4gcmVmZXJlbmNlIGdsb2JhbCB2YXJpYWJsZXMuCi1URVNU
KEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIENhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcykg
ewotICBnbG9iYWxfaW50ZWdlciA9IDA7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAg
ICBFWFBFQ1RfRVEoMSwgZ2xvYmFsX2ludGVnZXIpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFp
bHVyZS4iOwotICB9LCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBjYW4gcmVmZXJlbmNlIGxvY2FsIHZh
cmlhYmxlcwotLy8gKHN0YXRpYyBvciBub3QpLgotVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVU
ZXN0LCBDYW5SZWZlcmVuY2VMb2NhbFZhcmlhYmxlcykgewotICBpbnQgbSA9IDA7Ci0gIHN0YXRp
YyBpbnQgbjsKLSAgbiA9IDE7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBFWFBF
Q1RfRVEobSwgbikgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7Ci0gIH0sICJFeHBl
Y3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRSgpIHN1Y2NlZWRzIHdoZW4gdGhlcmUgaXMgZXhhY3RseQotLy8gb25lIG5v
bi1mYXRhbCBmYWlsdXJlIGFuZCBubyBmYXRhbCBmYWlsdXJlLgotVEVTVChFeHBlY3ROb25mYXRh
bEZhaWx1cmVUZXN0LCBTdWNjZWVkc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlKSB7Ci0g
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3Rl
ZCBub24tZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUu
Iik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3
aGVuIHRoZXJlIGlzIG5vCi0vLyBub24tZmF0YWwgZmFpbHVyZS4KLVRFU1QoRXhwZWN0Tm9uZmF0
YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJlKSB7Ci0gIHBy
aW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoewotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoKSBmYWlscyB3aGVuIHRoZXJlIGFyZSB0d28KLS8vIG5vbi1mYXRhbCBmYWlsdXJlcy4KLVRF
U1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRh
bEZhaWx1cmVzKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5v
bi1mYXRhbCBmYWlsdXJlIDEuIjsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24t
ZmF0YWwgZmFpbHVyZSAyLiI7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgaXMgb25lIGZhdGFsCi0vLyBmYWls
dXJlLgotVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUlzT25l
RmF0YWxGYWlsdXJlKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0YWwg
ZmFpbHVyZS4iOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZSBzdGF0ZW1lbnQgYmVpbmcKLS8vIHRlc3RlZCByZXR1
cm5zLgotVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRS
ZXR1cm5zKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoewotICAgIHJldHVybjsKLSAgfSwgIiIpOwotfQotCi0jaWYgR1RF
U1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWluZwotLy8gdGVzdGVkIHRocm93cy4KLVRF
U1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzKSB7
Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgdHJ5IHsKLSAgICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAgICB0aHJvdyAwOwotICAgIH0sICIiKTsKLSAgfSBj
YXRjaChpbnQpIHsgIC8vIE5PTElOVAotICB9Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0VY
Q0VQVElPTlMKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGNhbiByZWZl
cmVuY2UgZ2xvYmFsIHZhcmlhYmxlcy4KLVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgQ2Fu
UmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzKSB7Ci0gIGdsb2JhbF9pbnRlZ2VyID0gMDsKLSAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoewotICAgIEFTU0VSVF9FUSgxLCBnbG9iYWxfaW50ZWdlcikgPDwg
IkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKLSAgfSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUu
Iik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBjYW4gcmVmZXJl
bmNlIGxvY2FsIHN0YXRpYwotLy8gdmFyaWFibGVzLgotVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LCBDYW5SZWZlcmVuY2VMb2NhbFN0YXRpY1ZhcmlhYmxlcykgewotICBzdGF0aWMgaW50IG47
Ci0gIG4gPSAxOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0gICAgQVNTRVJUX0VRKDAsIG4p
IDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7Ci0gIH0sICJFeHBlY3RlZCBmYXRhbCBmYWls
dXJlLiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgc3VjY2Vl
ZHMgd2hlbiB0aGVyZSBpcyBleGFjdGx5Ci0vLyBvbmUgZmF0YWwgZmFpbHVyZSBhbmQgbm8gbm9u
LWZhdGFsIGZhaWx1cmUuCi1URVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIFN1Y2NlZWRzV2hl
blRoZXJlSXNPbmVGYXRhbEZhaWx1cmUpIHsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICAg
IEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiRXhwZWN0ZWQgZmF0
YWwgZmFpbHVyZS4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgp
IGZhaWxzIHdoZW4gdGhlcmUgaXMgbm8gZmF0YWwKLS8vIGZhaWx1cmUuCi1URVNUKEV4cGVjdEZh
dGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZSkgewotICBwcmlu
dGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsK
LSAgfSwgIiIpOwotfQotCi0vLyBBIGhlbHBlciBmb3IgZ2VuZXJhdGluZyBhIGZhdGFsIGZhaWx1
cmUuCi12b2lkIEZhdGFsRmFpbHVyZSgpIHsKLSAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYXRhbCBm
YWlsdXJlLiI7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBmYWls
cyB3aGVuIHRoZXJlIGFyZSB0d28KLS8vIGZhdGFsIGZhaWx1cmVzLgotVEVTVChFeHBlY3RGYXRh
bEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMpIHsKLSAgcHJp
bnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7
Ci0gICAgRmF0YWxGYWlsdXJlKCk7Ci0gICAgRmF0YWxGYWlsdXJlKCk7Ci0gIH0sICIiKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUg
aXMgb25lIG5vbi1mYXRhbAotLy8gZmFpbHVyZS4KLVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVz
dCwgRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZSkgewotICBwcmludGYoIihleHBl
Y3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKLSAgICBBRERf
RkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiIik7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZSBz
dGF0ZW1lbnQgYmVpbmcKLS8vIHRlc3RlZCByZXR1cm5zLgotVEVTVChFeHBlY3RGYXRhbEZhaWx1
cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zKSB7Ci0gIHByaW50ZigiKGV4cGVjdGlu
ZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICAgIHJldHVybjsK
LSAgfSwgIiIpOwotfQotCi0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gVGVzdHMgdGhh
dCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWluZwot
Ly8gdGVzdGVkIHRocm93cy4KLVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVu
U3RhdGVtZW50VGhyb3dzKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsK
LSAgdHJ5IHsKLSAgICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0gICAgICB0aHJvdyAwOwotICAg
IH0sICIiKTsKLSAgfSBjYXRjaChpbnQpIHsgIC8vIE5PTElOVAotICB9Ci19Ci0KLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gVGhpcyAjaWZkZWYgYmxvY2sgdGVzdHMgdGhl
IG91dHB1dCBvZiB0eXBlZCB0ZXN0cy4KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFR5cGVkVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRShUeXBlZFRlc3QsIHRlc3Rpbmc6OlR5cGVzPGludD4p
OwotCi1UWVBFRF9URVNUKFR5cGVkVGVzdCwgU3VjY2VzcykgewotICBFWFBFQ1RfRVEoMCwgVHlw
ZVBhcmFtKCkpOwotfQotCi1UWVBFRF9URVNUKFR5cGVkVGVzdCwgRmFpbHVyZSkgewotICBFWFBF
Q1RfRVEoMSwgVHlwZVBhcmFtKCkpIDw8ICJFeHBlY3RlZCBmYWlsdXJlIjsKLX0KLQotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAotCi0vLyBUaGlzICNpZmRlZiBibG9jayB0ZXN0cyB0
aGUgb3V0cHV0IG9mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KLSNpZiBHVEVTVF9IQVNfVFlQ
RURfVEVTVF9QCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgVHlwZWRUZXN0UCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRV9QKFR5cGVkVGVzdFAp
OwotCi1UWVBFRF9URVNUX1AoVHlwZWRUZXN0UCwgU3VjY2VzcykgewotICBFWFBFQ1RfRVEoMFUs
IFR5cGVQYXJhbSgpKTsKLX0KLQotVFlQRURfVEVTVF9QKFR5cGVkVGVzdFAsIEZhaWx1cmUpIHsK
LSAgRVhQRUNUX0VRKDFVLCBUeXBlUGFyYW0oKSkgPDwgIkV4cGVjdGVkIGZhaWx1cmUiOwotfQot
Ci1SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChUeXBlZFRlc3RQLCBTdWNjZXNzLCBGYWlsdXJl
KTsKLQotdHlwZWRlZiB0ZXN0aW5nOjpUeXBlczx1bnNpZ25lZCBjaGFyLCB1bnNpZ25lZCBpbnQ+
IFVuc2lnbmVkVHlwZXM7Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChVbnNpZ25lZCwg
VHlwZWRUZXN0UCwgVW5zaWduZWRUeXBlcyk7Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVE
X1RFU1RfUAotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotLy8gV2UgcmVseSBvbiB0aGUg
Z29sZGVuIGZpbGUgdG8gdmVyaWZ5IHRoYXQgdGVzdHMgd2hvc2UgdGVzdCBjYXNlCi0vLyBuYW1l
IGVuZHMgd2l0aCBEZWF0aFRlc3QgYXJlIHJ1biBmaXJzdC4KLQotVEVTVChBRGVhdGhUZXN0LCBT
aG91bGRSdW5GaXJzdCkgewotfQotCi0jaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKLQotLy8gV2Ug
cmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gdmVyaWZ5IHRoYXQgdHlwZWQgdGVzdHMgd2hvc2Ug
dGVzdAotLy8gY2FzZSBuYW1lIGVuZHMgd2l0aCBEZWF0aFRlc3QgYXJlIHJ1biBmaXJzdC4KLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBBVHlwZWREZWF0aFRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7Ci19OwotCi10eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPGludCwgZG91YmxlPiBO
dW1lcmljVHlwZXM7Ci1UWVBFRF9URVNUX0NBU0UoQVR5cGVkRGVhdGhUZXN0LCBOdW1lcmljVHlw
ZXMpOwotCi1UWVBFRF9URVNUKEFUeXBlZERlYXRoVGVzdCwgU2hvdWxkUnVuRmlyc3QpIHsKLX0K
LQotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAotCi0jaWYgR1RFU1RfSEFTX1RZUEVE
X1RFU1RfUAotCi0KLS8vIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIHZlcmlmeSB0aGF0
IHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cwotLy8gd2hvc2UgdGVzdCBjYXNlIG5hbWUgZW5kcyB3
aXRoIERlYXRoVGVzdCBhcmUgcnVuIGZpcnN0LgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNs
YXNzIEFUeXBlUGFyYW1EZWF0aFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1U
WVBFRF9URVNUX0NBU0VfUChBVHlwZVBhcmFtRGVhdGhUZXN0KTsKLQotVFlQRURfVEVTVF9QKEFU
eXBlUGFyYW1EZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0KSB7Ci19Ci0KLVJFR0lTVEVSX1RZUEVE
X1RFU1RfQ0FTRV9QKEFUeXBlUGFyYW1EZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0KTsKLQotSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEFUeXBlUGFyYW1EZWF0aFRlc3QsIE51bWVy
aWNUeXBlcyk7Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotCi0jZW5kaWYg
IC8vIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLS8vIFRlc3RzIHZhcmlvdXMgZmFpbHVyZSBjb25k
aXRpb25zIG9mCi0vLyBFWFBFQ1RfeyxOT059RkFUQUxfRkFJTFVSRXssX09OX0FMTF9USFJFQURT
fS4KLWNsYXNzIEV4cGVjdEZhaWx1cmVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHB1
YmxpYzogIC8vIE11c3QgYmUgcHVibGljIGFuZCBub3QgcHJvdGVjdGVkIGR1ZSB0byBhIGJ1ZyBp
biBnKysgMy40LjIuCi0gIGVudW0gRmFpbHVyZU1vZGUgewotICAgIEZBVEFMX0ZBSUxVUkUsCi0g
ICAgTk9ORkFUQUxfRkFJTFVSRQotICB9OwotICBzdGF0aWMgdm9pZCBBZGRGYWlsdXJlKEZhaWx1
cmVNb2RlIGZhaWx1cmUpIHsKLSAgICBpZiAoZmFpbHVyZSA9PSBGQVRBTF9GQUlMVVJFKSB7Ci0g
ICAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKLSAgICB9IGVsc2Ugewot
ICAgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKLSAg
ICB9Ci0gIH0KLX07Ci0KLVRFU1RfRihFeHBlY3RGYWlsdXJlVGVzdCwgRXhwZWN0RmF0YWxGYWls
dXJlKSB7Ci0gIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4KLSAgcHJp
bnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShT
VUNDRUVEKCksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOwotICAvLyBFeHBlY3RlZCBmYXRh
bCBmYWlsdXJlLCBidXQgZ290IGEgbm9uLWZhdGFsIGZhaWx1cmUuCi0gIHByaW50ZigiKGV4cGVj
dGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVyZShO
T05GQVRBTF9GQUlMVVJFKSwgIkV4cGVjdGVkIG5vbi1mYXRhbCAiCi0gICAgICAgICAgICAgICAg
ICAgICAgICJmYWlsdXJlLiIpOwotICAvLyBXcm9uZyBtZXNzYWdlLgotICBwcmludGYoIihleHBl
Y3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmUo
RkFUQUxfRkFJTFVSRSksICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUgIgotICAgICAgICAgICAg
ICAgICAgICAgICAiZXhwZWN0ZWQuIik7Ci19Ci0KLVRFU1RfRihFeHBlY3RGYWlsdXJlVGVzdCwg
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlKSB7Ci0gIC8vIEV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
LCBidXQgc3VjY2VlZHMuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoU1VDQ0VFRCgpLCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZh
aWx1cmUuIik7Ci0gIC8vIEV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLCBidXQgZ290IGEgZmF0
YWwgZmFpbHVyZS4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlKEZBVEFMX0ZBSUxVUkUpLCAiRXhwZWN0ZWQg
ZmF0YWwgZmFpbHVyZS4iKTsKLSAgLy8gV3JvbmcgbWVzc2FnZS4KLSAgcHJpbnRmKCIoZXhwZWN0
aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBZGRGYWlsdXJl
KE5PTkZBVEFMX0ZBSUxVUkUpLCAiU29tZSBvdGhlciBub24tZmF0YWwgIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZmFpbHVyZS4iKTsKLX0KLQotI2lmIEdURVNUX0lTX1RIUkVBRFNBRkUK
LQotY2xhc3MgRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCA6IHB1YmxpYyBFeHBlY3RGYWls
dXJlVGVzdCB7Ci0gcHJvdGVjdGVkOgotICBzdGF0aWMgdm9pZCBBZGRGYWlsdXJlSW5PdGhlclRo
cmVhZChGYWlsdXJlTW9kZSBmYWlsdXJlKSB7Ci0gICAgVGhyZWFkV2l0aFBhcmFtPEZhaWx1cmVN
b2RlPiB0aHJlYWQoJkFkZEZhaWx1cmUsIGZhaWx1cmUsIE5VTEwpOwotICAgIHRocmVhZC5Kb2lu
KCk7Ci0gIH0KLX07Ci0KLVRFU1RfRihFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LCBFeHBl
Y3RGYXRhbEZhaWx1cmUpIHsKLSAgLy8gV2Ugb25seSBpbnRlcmNlcHQgdGhlIGN1cnJlbnQgdGhy
ZWFkLgotICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOwotICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShBZGRGYWlsdXJlSW5PdGhlclRocmVhZChGQVRBTF9GQUlMVVJFKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Ci19Ci0KLVRFU1Rf
RihFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LCBFeHBlY3ROb25GYXRhbEZhaWx1cmUpIHsK
LSAgLy8gV2Ugb25seSBpbnRlcmNlcHQgdGhlIGN1cnJlbnQgdGhyZWFkLgotICBwcmludGYoIihl
eHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBZGRG
YWlsdXJlSW5PdGhlclRocmVhZChOT05GQVRBTF9GQUlMVVJFKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwotfQotCi10eXBlZGVmIEV4
cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0
ZXJUZXN0OwotCi0vLyBUZXN0cyB0aGF0IHRoZSBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBv
cnRlciBvbmx5IGNhdGNoZXMgZmFpbHVyZXMgZnJvbQotLy8gdGhlIGN1cnJlbnQgdGhyZWFkIGlm
IGl0IGlzIGluc3RhbnRpYXRlZCB3aXRoIElOVEVSQ0VQVF9PTkxZX0NVUlJFTlRfVEhSRUFELgot
VEVTVF9GKFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdCwgSW50ZXJjZXB0T25s
eUN1cnJlbnRUaHJlYWQpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMpXG4iKTsK
LSAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOwotICB7Ci0gICAgU2NvcGVkRmFrZVRlc3RQ
YXJ0UmVzdWx0UmVwb3J0ZXIgcmVwb3J0ZXIoCi0gICAgICAgIFNjb3BlZEZha2VUZXN0UGFydFJl
c3VsdFJlcG9ydGVyOjpJTlRFUkNFUFRfT05MWV9DVVJSRU5UX1RIUkVBRCwKLSAgICAgICAgJnJl
c3VsdHMpOwotICAgIEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZBVEFMX0ZBSUxVUkUpOwotICAg
IEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKE5PTkZBVEFMX0ZBSUxVUkUpOwotICB9Ci0gIC8vIFRo
ZSB0d28gZmFpbHVyZXMgc2hvdWxkIG5vdCBoYXZlIGJlZW4gaW50ZXJjZXB0ZWQuCi0gIEVYUEVD
VF9FUSgwLCByZXN1bHRzLnNpemUoKSkgPDwgIlRoaXMgc2hvdWxkbid0IGZhaWwuIjsKLX0KLQot
I2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCi0KLVRFU1RfRihFeHBlY3RGYWlsdXJlVGVz
dCwgRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzKSB7Ci0gIC8vIEV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlc
biIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhTVUNDRUVEKCksICJF
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOwotICAvLyBFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLCBi
dXQgZ290IGEgbm9uLWZhdGFsIGZhaWx1cmUuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1
cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoQWRkRmFpbHVy
ZShOT05GQVRBTF9GQUlMVVJFKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwotICAvLyBXcm9uZyBtZXNzYWdlLgot
ICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlM
VVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUgZXhw
ZWN0ZWQuIik7Ci19Ci0KLVRFU1RfRihFeHBlY3RGYWlsdXJlVGVzdCwgRXhwZWN0Tm9uRmF0YWxG
YWlsdXJlT25BbGxUaHJlYWRzKSB7Ci0gIC8vIEV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLCBi
dXQgc3VjY2VlZHMuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoU1VDQ0VFRCgpLCAiRXhwZWN0ZWQg
bm9uLWZhdGFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZh
aWx1cmUuIik7Ci0gIC8vIEV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLCBidXQgZ290IGEgZmF0
YWwgZmFpbHVyZS4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlKEZBVEFMX0ZBSUxV
UkUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQg
ZmF0YWwgZmFpbHVyZS4iKTsKLSAgLy8gV3JvbmcgbWVzc2FnZS4KLSAgcHJpbnRmKCIoZXhwZWN0
aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9BTExfVEhS
RUFEUyhBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiU29tZSBvdGhlciBub24tZmF0YWwgZmFpbHVyZS4iKTsKLX0K
LQotCi0vLyBUd28gdGVzdCBlbnZpcm9ubWVudHMgZm9yIHRlc3RpbmcgdGVzdGluZzo6QWRkR2xv
YmFsVGVzdEVudmlyb25tZW50KCkuCi0KLWNsYXNzIEZvb0Vudmlyb25tZW50IDogcHVibGljIHRl
c3Rpbmc6OkVudmlyb25tZW50IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsK
LSAgICBwcmludGYoIiVzIiwgIkZvb0Vudmlyb25tZW50OjpTZXRVcCgpIGNhbGxlZC5cbiIpOwot
ICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIHByaW50ZigiJXMiLCAiRm9v
RW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLlxuIik7Ci0gICAgRkFJTCgpIDw8ICJFeHBl
Y3RlZCBmYXRhbCBmYWlsdXJlLiI7Ci0gIH0KLX07Ci0KLWNsYXNzIEJhckVudmlyb25tZW50IDog
cHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgdm9pZCBT
ZXRVcCgpIHsKLSAgICBwcmludGYoIiVzIiwgIkJhckVudmlyb25tZW50OjpTZXRVcCgpIGNhbGxl
ZC5cbiIpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIHByaW50Zigi
JXMiLCAiQmFyRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLlxuIik7Ci0gICAgQUREX0ZB
SUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKLSAgfQotfTsKLQotR1RF
U1RfREVGSU5FX2Jvb2xfKGludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0
cywgZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIlRoaXMgZmxhZyBjYXVzZXMgdGhlIHByb2dy
YW0gdG8gc2tpcCB0ZXN0IGVudmlyb25tZW50ICIKLSAgICAgICAgICAgICAgICAgICAidGVzdHMg
YW5kIGFkIGhvYyB0ZXN0cy4iKTsKLQotLy8gVGhlIG1haW4gZnVuY3Rpb24uCi0vLwotLy8gVGhl
IGlkZWEgaXMgdG8gdXNlIEdvb2dsZSBUZXN0IHRvIHJ1biBhbGwgdGhlIHRlc3RzIHdlIGhhdmUg
ZGVmaW5lZCAoc29tZQotLy8gb2YgdGhlbSBhcmUgaW50ZW5kZWQgdG8gZmFpbCksIGFuZCB0aGVu
IGNvbXBhcmUgdGhlIHRlc3QgcmVzdWx0cwotLy8gd2l0aCB0aGUgImdvbGRlbiIgZmlsZS4KLWlu
dCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKHBy
aW50X3RpbWUpID0gZmFsc2U7Ci0KLSAgLy8gV2UganVzdCBydW4gdGhlIHRlc3RzLCBrbm93aW5n
IHNvbWUgb2YgdGhlbSBhcmUgaW50ZW5kZWQgdG8gZmFpbC4KLSAgLy8gV2Ugd2lsbCB1c2UgYSBz
ZXBhcmF0ZSBQeXRob24gc2NyaXB0IHRvIGNvbXBhcmUgdGhlIG91dHB1dCBvZgotICAvLyB0aGlz
IHByb2dyYW0gd2l0aCB0aGUgZ29sZGVuIGZpbGUuCi0KLSAgLy8gSXQncyBoYXJkIHRvIHRlc3Qg
SW5pdEdvb2dsZVRlc3QoKSBkaXJlY3RseSwgYXMgaXQgaGFzIG1hbnkKLSAgLy8gZ2xvYmFsIHNp
ZGUgZWZmZWN0cy4gIFRoZSBmb2xsb3dpbmcgbGluZSBzZXJ2ZXMgYXMgYSBzYW5pdHkgdGVzdAot
ICAvLyBmb3IgaXQuCi0gIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLSAg
aWYgKGFyZ2MgPj0gMiAmJgotICAgICAgU3RyaW5nKGFyZ3ZbMV0pID09ICItLWd0ZXN0X2ludGVy
bmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cyIpCi0gICAgR1RFU1RfRkxBRyhp
bnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMpID0gdHJ1ZTsKLQotI2lm
IEdURVNUX0hBU19ERUFUSF9URVNUCi0gIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6R1RFU1RfRkxB
RyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkgIT0gIiIpIHsKLSAgICAvLyBTa2lwIHRoZSB1c3Vh
bCBvdXRwdXQgY2FwdHVyaW5nIGlmIHdlJ3JlIHJ1bm5pbmcgYXMgdGhlIGNoaWxkCi0gICAgLy8g
cHJvY2VzcyBvZiBhbiB0aHJlYWRzYWZlLXN0eWxlIGRlYXRoIHRlc3QuCi0jaWYgR1RFU1RfT1Nf
V0lORE9XUwotICAgIHBvc2l4OjpGUmVvcGVuKCJudWw6IiwgInciLCBzdGRvdXQpOwotI2Vsc2UK
LSAgICBwb3NpeDo6RlJlb3BlbigiL2Rldi9udWxsIiwgInciLCBzdGRvdXQpOwotI2VuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTCi0gICAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLSAgfQotI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi0gIGlmIChHVEVTVF9GTEFHKGludGVybmFs
X3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cykpCi0gICAgcmV0dXJuIFJVTl9BTExf
VEVTVFMoKTsKLQotICAvLyBSZWdpc3RlcnMgdHdvIGdsb2JhbCB0ZXN0IGVudmlyb25tZW50cy4K
LSAgLy8gVGhlIGdvbGRlbiBmaWxlIHZlcmlmaWVzIHRoYXQgdGhleSBhcmUgc2V0IHVwIGluIHRo
ZSBvcmRlciB0aGV5Ci0gIC8vIGFyZSByZWdpc3RlcmVkLCBhbmQgdG9ybiBkb3duIGluIHRoZSBy
ZXZlcnNlIG9yZGVyLgotICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEZv
b0Vudmlyb25tZW50KTsKLSAgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBC
YXJFbnZpcm9ubWVudCk7Ci0KLSAgcmV0dXJuIFJ1bkFsbFRlc3RzKCk7Ci19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9s
aW4udHh0IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9n
b2xkZW5fbGluLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM2MDQzN2FjYWE3
NjQwZGZiZjNkYjI4M2NmMWQxNTAzNGMwNjIyZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291
dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0CisrKyAvZGV2L251bGwKQEAgLTEsNjk2ICswLDAgQEAK
LVRoZSBub24tdGVzdCBwYXJ0IG9mIHRoZSBjb2RlIGlzIGV4cGVjdGVkIHRvIGhhdmUgMiBmYWls
dXJlcy4KLQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiBmYWxz
ZQotICBBY3R1YWw6IGZhbHNlCi1FeHBlY3RlZDogdHJ1ZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IEZhaWx1cmUKLVZhbHVlIG9mOiAzCi1FeHBlY3RlZDogMgotG1swOzMybVs9PT09PT09PT09
XSAbW21SdW5uaW5nIDYwIHRlc3RzIGZyb20gMjUgdGVzdCBjYXNlcy4KLRtbMDszMm1bLS0tLS0t
LS0tLV0gG1ttR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotRm9vRW52aXJvbm1lbnQ6
OlNldFVwKCkgY2FsbGVkLgotQmFyRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLgotG1swOzMy
bVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBBRGVhdGhUZXN0Ci0bWzA7MzJtWyBSVU4gICAg
ICBdIBtbbUFEZWF0aFRlc3QuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAgIE9LIF0gG1tt
QURlYXRoVGVzdC5TaG91bGRSdW5GaXJzdAotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3Qg
ZnJvbSBBVHlwZWREZWF0aFRlc3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci0bWzA7MzJtWyBS
VU4gICAgICBdIBtbbUFUeXBlZERlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJtWyAg
ICAgICBPSyBdIBtbbUFUeXBlZERlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJtWy0t
LS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEFUeXBlZERlYXRoVGVzdC8xLCB3aGVyZSBUeXBlUGFy
YW0gPSBkb3VibGUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttQVR5cGVkRGVhdGhUZXN0LzEuU2hv
dWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttQVR5cGVkRGVhdGhUZXN0LzEuU2hv
dWxkUnVuRmlyc3QKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gTXkvQVR5cGVQ
YXJhbURlYXRoVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLRtbMDszMm1bIFJVTiAgICAg
IF0gG1ttTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJtWyAg
ICAgICBPSyBdIBtbbU15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMC5TaG91bGRSdW5GaXJzdAotG1sw
OzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBNeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEs
IHdoZXJlIFR5cGVQYXJhbSA9IGRvdWJsZQotG1swOzMybVsgUlVOICAgICAgXSAbW21NeS9BVHlw
ZVBhcmFtRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAgIE9LIF0gG1tt
TXkvQVR5cGVQYXJhbURlYXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJtWy0tLS0tLS0t
LS1dIBtbbTIgdGVzdHMgZnJvbSBQYXNzaW5nVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21Q
YXNzaW5nVGVzdC5QYXNzaW5nVGVzdDEKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttUGFzc2luZ1Rl
c3QuUGFzc2luZ1Rlc3QxCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVBhc3NpbmdUZXN0LlBhc3Np
bmdUZXN0MgotG1swOzMybVsgICAgICAgT0sgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDIK
LRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMyB0ZXN0cyBmcm9tIEZhdGFsRmFpbHVyZVRlc3QKLRtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJv
dXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogeAotICBBY3R1YWw6IDIKLUV4cGVj
dGVkOiAxCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWls
dXJlSW5TdWJyb3V0aW5lCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZVRlc3Qu
RmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0
IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUg
b2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21G
YXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQotG1swOzMybVsg
UlVOICAgICAgXSAbW21GYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGlu
ZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgb24gZmFsc2UpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogRmFpbHVyZQotVmFsdWUgb2Y6IGZhbHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4cGVjdGVkOiB0
cnVlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWls
dXJlSW5TdWJyb3V0aW5lCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIExvZ2dp
bmdUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUxvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xv
Z2dpbmdBbmRBc3NlcnRpb25zCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24gKDMpID49IChhW2ld
KSkKLWkgPT0gMAotaSA9PSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRXhw
ZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA5Ci1pID09IDIKLWkgPT0gMwotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBh
Y3R1YWw6IDMgdnMgNgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Mb2dnaW5nVGVzdC5JbnRlcmxl
YXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotG1swOzMybVstLS0tLS0tLS0tXSAbW202IHRlc3Rz
IGZyb20gU0NPUEVEX1RSQUNFVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJB
Q0VUZXN0Lk9iZXlzU2NvcGVzCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNo
b3VsZG4ndCBoYXZlIGEgdHJhY2UuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQot
RmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgaGF2ZSBhIHRyYWNl
LgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRXhwZWN0ZWQg
dHJhY2UKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLVRoaXMgZmFp
bHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuCi0bWzA7MzFtWyAg
RkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMKLRtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAotKGV4cGVjdGVkIHRvIGZhaWwp
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IG4KLSAgQWN0dWFs
OiAxCi1FeHBlY3RlZDogMgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogaSA9IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjog
bgotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBpID0gMgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJB
Q0VUZXN0LldvcmtzSW5Mb29wCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRl
c3QuV29ya3NJblN1YnJvdXRpbmUKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMQotRXhwZWN0ZWQ6IDIK
LUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4gPSAxCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAyCi1F
eHBlY3RlZDogMQotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
biA9IDIKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vi
cm91dGluZQotG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlTmVz
dGVkCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1WYWx1ZSBvZjogbgotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1Hb29nbGUgVGVzdCB0cmFj
ZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBuID0gMgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlTmVzdGVk
Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVSZXBlYXRlZAot
KGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFp
bGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBw
b2ludCBBLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQQot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSBhbmQgQi4KLUdvb2ds
ZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEIKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBBCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1U
aGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBB
LCBCLCBhbmQgQy4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IEMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBCCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
QQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotVGhpcyBmYWlsdXJl
IGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEQu
Ci1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBECi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEEKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZVJlcGVhdGVkCi0bWzA7MzJtWyBS
VU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NDb25jdXJyZW50bHkKLShleHBlY3Rp
bmcgNiBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQK
LUV4cGVjdGVkIGZhaWx1cmUgIzEgKGluIHRocmVhZCBCLCBvbmx5IHRyYWNlIEIgYWxpdmUpLgot
R29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogVHJhY2UgQgotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAj
MiAoaW4gdGhyZWFkIEEsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLgotR29vZ2xlIFRlc3QgdHJh
Y2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogVHJhY2UgQQotZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMyAoaW4gdGhyZWFkIEIs
IHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogVHJhY2UgQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUK
LUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjNCAoaW4gdGhyZWFkIEIsIG9ubHkgdHJhY2UgQSBh
bGl2ZSkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3Rl
ZCBmYWlsdXJlICM1IChpbiB0aHJlYWQgQSwgb25seSB0cmFjZSBBIGFsaXZlKS4KLUdvb2dsZSBU
ZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFRyYWNlIEEKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzYgKGluIHRo
cmVhZCBBLCBubyB0cmFjZSBhbGl2ZSkuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9U
UkFDRVRlc3QuV29ya3NDb25jdXJyZW50bHkKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0
IGZyb20gTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0Ci0bWzA7MzJtWyBS
VU4gICAgICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWls
dXJlSW5Db25zdHJ1Y3RvcgotKGV4cGVjdGluZyA1IGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRl
c3QgZml4dHVyZSBjJ3Rvci4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWls
ZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFNldFVwKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBi
b2R5LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQg
ZmFpbHVyZSAjNCwgaW4gVGVhckRvd24uCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVy
ZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICM1LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9y
LgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1
Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0
ZXN0IGZyb20gRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0Ci0bWzA7MzJtWyBS
VU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJl
SW5Db25zdHJ1Y3RvcgotKGV4cGVjdGluZyAyIGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3Qg
Zml4dHVyZSBjJ3Rvci4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQK
LUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi0bWzA7MzFt
WyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWls
dXJlSW5Db25zdHJ1Y3RvcgotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBOb25G
YXRhbEZhaWx1cmVJblNldFVwVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21Ob25GYXRhbEZh
aWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotKGV4cGVjdGluZyA0IGZhaWx1cmVzKQot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVy
ZSAjMSwgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWls
ZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLgotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4g
VGVhckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4
cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi0bWzA7MzFtWyAg
RkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi0b
WzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0
Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJ
blNldFVwCi0oZXhwZWN0aW5nIDMgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLgotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwg
aW4gVGVhckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQK
LUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi0bWzA7MzFt
WyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi0b
WzA7MzJtWy0tLS0tLS0tLS1dIBtbbTQgdGVzdHMgZnJvbSBNaXhlZFVwVGVzdENhc2VUZXN0Ci0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuRmlyc3RUZXN0RnJvbU5h
bWVzcGFjZUZvbwotG1swOzMybVsgICAgICAgT0sgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LkZp
cnN0VGVzdEZyb21OYW1lc3BhY2VGb28KLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttTWl4ZWRVcFRl
c3RDYXNlVGVzdC5TZWNvbmRUZXN0RnJvbU5hbWVzcGFjZUZvbwotG1swOzMybVsgICAgICAgT0sg
XSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlNlY29uZFRlc3RGcm9tTmFtZXNwYWNlRm9vCi0bWzA7
MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwKLWd0
ZXN0LmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2Fz
ZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAgSG93ZXZlciwgaW4gdGVz
dCBjYXNlIE1peGVkVXBUZXN0Q2FzZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0IEZpcnN0VGVzdEZy
b21OYW1lc3BhY2VGb28gYW5kIHRlc3QgVGhpc1Nob3VsZEZhaWwKLXVzaW5nIHR3byBkaWZmZXJl
bnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKLXRoZSB0d28gY2xh
c3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlvbgotdW5pdHMg
YW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVuYW1lIG9uZQot
b2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0ZXN0IGNhc2Vz
LgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRG
YWlsCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3Vs
ZEZhaWxUb28KLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBz
YW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAgSG93
ZXZlciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0
IEZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28gYW5kIHRlc3QgVGhpc1Nob3VsZEZhaWxUb28KLXVz
aW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4g
aWYKLXRoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFu
c2xhdGlvbgotdW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFi
bHkgcmVuYW1lIG9uZQotb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZl
cmVudCB0ZXN0IGNhc2VzLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VU
ZXN0LlRoaXNTaG91bGRGYWlsVG9vCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJv
bSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdAotG1swOzMybVsgUlVOICAgICAg
XSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0
aFRoaXNOYW1lU2hvdWxkRmFpbAotG1swOzMybVsgICAgICAgT0sgXSAbW21NaXhlZFVwVGVzdENh
c2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFp
bAotG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1l
VGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogRmFp
bHVyZQotRmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRo
ZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRV
cFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0IFRoZVNlY29u
ZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsIGFuZCB0ZXN0IFRoZVNlY29uZFRlc3RXaXRoVGhp
c05hbWVTaG91bGRGYWlsCi11c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2Vz
LiAgVGhpcyBjYW4gaGFwcGVuIGlmCi10aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50
IG5hbWVzcGFjZXMgb3IgdHJhbnNsYXRpb24KLXVuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUu
ICBZb3Ugc2hvdWxkIHByb2JhYmx5IHJlbmFtZSBvbmUKLW9mIHRoZSBjbGFzc2VzIHRvIHB1dCB0
aGUgdGVzdHMgaW50byBkaWZmZXJlbnQgdGVzdCBjYXNlcy4KLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhU
aGlzTmFtZVNob3VsZEZhaWwKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFRF
U1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZQotG1swOzMybVsgUlVOICAgICAgXSAb
W21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9G
Ci0bWzA7MzJtWyAgICAgICBPSyBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3Rf
Y2FzZS5EZWZpbmVkVXNpbmdURVNUX0YKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttVEVTVF9GX2Jl
Zm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWls
Ci1ndGVzdC5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0
IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcywgc28gbWl4aW5nIFRF
U1RfRiBhbmQgVEVTVCBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgaXMKLWlsbGVnYWwuICBJbiB0ZXN0
IGNhc2UgVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLAotdGVzdCBEZWZpbmVk
VXNpbmdURVNUX0YgaXMgZGVmaW5lZCB1c2luZyBURVNUX0YgYnV0Ci10ZXN0IERlZmluZWRVc2lu
Z1RFU1RBbmRTaG91bGRGYWlsIGlzIGRlZmluZWQgdXNpbmcgVEVTVC4gIFlvdSBwcm9iYWJseQot
d2FudCB0byBjaGFuZ2UgdGhlIFRFU1QgdG8gVEVTVF9GIG9yIG1vdmUgaXQgdG8gYW5vdGhlciB0
ZXN0Ci1jYXNlLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5f
c2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwKLRtbMDszMm1bLS0t
LS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3Rf
Y2FzZQotG1swOzMybVsgUlVOICAgICAgXSAbW21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90
ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVAotG1swOzMybVsgICAgICAgT0sgXSAbW21URVNUX2Jl
Zm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVAotG1swOzMybVsg
UlVOICAgICAgXSAbW21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5l
ZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRmFpbGVkCi1B
bGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4
dHVyZQotY2xhc3MsIHNvIG1peGluZyBURVNUX0YgYW5kIFRFU1QgaW4gdGhlIHNhbWUgdGVzdCBj
YXNlIGlzCi1pbGxlZ2FsLiAgSW4gdGVzdCBjYXNlIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1l
X3Rlc3RfY2FzZSwKLXRlc3QgRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbCBpcyBkZWZp
bmVkIHVzaW5nIFRFU1RfRiBidXQKLXRlc3QgRGVmaW5lZFVzaW5nVEVTVCBpcyBkZWZpbmVkIHVz
aW5nIFRFU1QuICBZb3UgcHJvYmFibHkKLXdhbnQgdG8gY2hhbmdlIHRoZSBURVNUIHRvIFRFU1Rf
RiBvciBtb3ZlIGl0IHRvIGFub3RoZXIgdGVzdAotY2FzZS4KLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1Rf
RkFuZFNob3VsZEZhaWwKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttOCB0ZXN0cyBmcm9tIEV4cGVj
dE5vbmZhdGFsRmFpbHVyZVRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0
YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLRtbMDszMm1bICAgICAg
IE9LIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJp
YWJsZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5D
YW5SZWZlcmVuY2VMb2NhbFZhcmlhYmxlcwotG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVzCi0bWzA7MzJtWyBS
VU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJ
c09uZU5vbmZhdGFsRmFpbHVyZQotG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3ROb25mYXRh
bEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKLRtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVy
ZUlzTm9Ob25mYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6Izog
RmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1
cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFp
bHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1
cmVzCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVk
OiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMiBmYWlsdXJlcwotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0
YWwgZmFpbHVyZSAxLgotCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1
cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDIuCi0KLRtbMDszMW1bICBG
QUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3
b05vbmZhdGFsRmFpbHVyZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxG
YWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIGEg
ZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWls
dXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgot
RmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtb
bUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVy
ZQotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxz
V2hlblN0YXRlbWVudFJldHVybnMKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6Izog
RmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1
cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFp
bHNXaGVuU3RhdGVtZW50UmV0dXJucwotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotKGV4cGVjdGluZyBhIGZh
aWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVy
ZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLRtbMDszMm1bLS0tLS0t
LS0tLV0gG1ttOCB0ZXN0cyBmcm9tIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QKLRtbMDszMm1bIFJV
TiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJp
YWJsZXMKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5S
ZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFN0YXRpY1ZhcmlhYmxlcwotG1swOzMybVsg
ICAgICAgT0sgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsU3Rh
dGljVmFyaWFibGVzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRl
c3QuU3VjY2VlZHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotG1swOzMybVsgICAgICAgT0sg
XSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZh
aWx1cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWls
c1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3Qu
Y2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFp
bHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWls
c1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMKLShleHBl
Y3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwg
ZmFpbHVyZQotICBBY3R1YWw6IDIgZmFpbHVyZXMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBG
YXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwg
ZmFpbHVyZS4KLQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0
LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcwotG1swOzMybVsgUlVOICAgICAgXSAb
W21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1
cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6
IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9u
LWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0b
WzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhl
cmVJc09uZU5vbmZhdGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRh
bEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLShleHBlY3RpbmcgYSBmYWls
dXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBB
Y3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWls
dXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi0bWzA7MzJtWyBSVU4gICAgICBdIBtb
bUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi0oZXhwZWN0
aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZh
aWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVj
dEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi0bWzA7MzJtWy0tLS0t
LS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBUeXBlZFRlc3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50
Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVR5cGVkVGVzdC8wLlN1Y2Nlc3MKLRtbMDszMm1bICAg
ICAgIE9LIF0gG1ttVHlwZWRUZXN0LzAuU3VjY2VzcwotG1swOzMybVsgUlVOICAgICAgXSAbW21U
eXBlZFRlc3QvMC5GYWlsdXJlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFs
dWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogMAotRXhwZWN0ZWQ6IDEKLUV4cGVjdGVkIGZh
aWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVHlwZWRUZXN0LzAuRmFpbHVyZQotG1swOzMy
bVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVW5zaWduZWQvVHlwZWRUZXN0UC8wLCB3aGVy
ZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBjaGFyCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2ln
bmVkL1R5cGVkVGVzdFAvMC5TdWNjZXNzCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbVVuc2lnbmVk
L1R5cGVkVGVzdFAvMC5TdWNjZXNzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkL1R5
cGVkVGVzdFAvMC5GYWlsdXJlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFs
dWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogXDAKLUV4cGVjdGVkOiAxVQotV2hpY2ggaXM6
IDEKLUV4cGVjdGVkIGZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlw
ZWRUZXN0UC8wLkZhaWx1cmUKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFVu
c2lnbmVkL1R5cGVkVGVzdFAvMSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50Ci0bWzA7
MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNzCi0bWzA7MzJt
WyAgICAgICBPSyBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNzCi0bWzA7MzJtWyBS
VU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogMAot
RXhwZWN0ZWQ6IDFVCi1XaGljaCBpczogMQotRXhwZWN0ZWQgZmFpbHVyZQotG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZQotG1swOzMybVstLS0tLS0t
LS0tXSAbW200IHRlc3RzIGZyb20gRXhwZWN0RmFpbHVyZVRlc3QKLRtbMDszMm1bIFJVTiAgICAg
IF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIDEg
ZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUK
LSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1TdWNjZWVkZWQK
LQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDog
MSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24t
ZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLShl
eHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0
YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUgZXhwZWN0ZWQu
IgotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZh
aWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21F
eHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAgIF0g
G1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIDEg
ZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWls
dXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBTdWNjZXNzOgotU3VjY2Vl
ZGVkCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0
ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLShl
eHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9u
LWZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBub24tZmF0YWwgZmFpbHVyZS4i
Ci0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToK
LUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLRtbMDszMW1bICBGQUlMRUQg
IF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0bWzA7MzJtWyBS
VU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhy
ZWFkcwotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3Rl
ZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBT
dWNjZXNzOgotU3VjY2VlZGVkCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6Izog
RmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1m
YXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1
cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBmYXRh
bCBmYWlsdXJlIGV4cGVjdGVkLiIKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLRtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlT25B
bGxUaHJlYWRzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVj
dE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVz
dC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2NlZWRlZAotCi0oZXhwZWN0
aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRh
bCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWls
dXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0aW5nIDEgZmFp
bHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJl
IGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1cmUuIgotICBBY3R1YWw6Ci1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVj
dGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZh
aWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotG1swOzMybVstLS0t
LS0tLS0tXSAbW20yIHRlc3RzIGZyb20gRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdAotG1sw
OzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdEZh
dGFsRmFpbHVyZQotKGV4cGVjdGluZyAyIGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLWd0ZXN0LmNjOiM6
IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVz
Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhw
ZWN0RmF0YWxGYWlsdXJlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRo
VGhyZWFkc1Rlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMp
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBub24t
ZmF0YWwgZmFpbHVyZS4KLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRh
bCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21F
eHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQotG1swOzMy
bVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBv
cnRlclRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0
UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCi0oZXhwZWN0aW5nIDIgZmFp
bHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3Rl
ZCBmYXRhbCBmYWlsdXJlLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxl
ZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNj
b3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdC5JbnRlcmNlcHRPbmx5Q3VycmVudFRo
cmVhZAotG1swOzMybVstLS0tLS0tLS0tXSAbW21HbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFy
LWRvd24KLUJhckVudmlyb25tZW50OjpUZWFyRG93bigpIGNhbGxlZC4KLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgot
Rm9vRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLRtbMDszMm1bPT09
PT09PT09PV0gG1ttNjAgdGVzdHMgZnJvbSAyNSB0ZXN0IGNhc2VzIHJhbi4KLRtbMDszMm1bICBQ
QVNTRUQgIF0gG1ttMjEgdGVzdHMuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbTM5IHRlc3RzLCBs
aXN0ZWQgYmVsb3c6Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0
YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVy
ZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi0bWzA7MzFtWyAgRkFJTEVEICBd
IBtbbUZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0bWzA7MzFt
WyAgRkFJTEVEICBdIBtbbUxvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRp
b25zCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMK
LRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAotG1sw
OzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJyb3V0aW5lCi0b
WzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLRtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZVJlcGVhdGVkCi0bWzA7MzFt
WyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NDb25jdXJyZW50bHkKLRtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0
LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVy
ZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5T
ZXRVcAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91
bGRGYWlsCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1No
b3VsZEZhaWxUb28KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlV2l0aFNh
bWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLRtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRl
ZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVRFU1Rf
YmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91
bGRGYWlsCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qu
RmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtb
bUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRhbEZh
aWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qu
RmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21F
eHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLRtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0
ZW1lbnRUaHJvd3MKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVz
dC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1tt
RXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMK
LRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5U
aGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZh
dGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3QvMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFy
YW0gPSBpbnQKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZh
aWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKLRtbMDszMW1bICBGQUlMRUQg
IF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVu
c2lnbmVkIGludAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBl
Y3RGYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3Qu
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1
cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMK
LRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBl
Y3RGYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhU
aHJlYWRzVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1tt
U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJyZW50
VGhyZWFkCi0KLTM5IEZBSUxFRCBURVNUUwotG1swOzMzbSAgWU9VIEhBVkUgMSBESVNBQkxFRCBU
RVNUCi0KLRtbbU5vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9IEZhdGFsRmFpbHVyZVRlc3QuKjpM
b2dnaW5nVGVzdC4qCi1bPT09PT09PT09PV0gUnVubmluZyA0IHRlc3RzIGZyb20gMiB0ZXN0IGNh
c2VzLgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KLVstLS0t
LS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdAotWyBSVU4gICAgICBdIEZhdGFs
RmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVy
ZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQot
VmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotWyAgRkFJTEVEICBdIEZhdGFs
RmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lICg/IG1zKQotWyBSVU4gICAgICBd
IEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi0oZXhwZWN0
aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogRmFpbHVyZQotVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotWyAgRkFJ
TEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lICg/
IG1zKQotWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJy
b3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiBmYWxzZSkKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogZmFsc2UKLSAgQWN0dWFsOiBmYWxzZQotRXhwZWN0
ZWQ6IHRydWUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUlu
U3Vicm91dGluZSAoPyBtcykKLVstLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJl
VGVzdCAoPyBtcyB0b3RhbCkKLQotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExvZ2dpbmdUZXN0
Ci1bIFJVTiAgICAgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlv
bnMKLShleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKQotaSA9PSAwCi1pID09
IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogKDMpID49IChh
W2ldKSwgYWN0dWFsOiAzIHZzIDkKLWkgPT0gMgotaSA9PSAzCi1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA2Ci1b
ICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMg
KD8gbXMpCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTG9nZ2luZ1Rlc3QgKD8gbXMgdG90YWwp
Ci0KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KLVs9PT09
PT09PT09XSA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2VzIHJhbi4gKD8gbXMgdG90YWwpCi1bICBQ
QVNTRUQgIF0gMCB0ZXN0cy4KLVsgIEZBSUxFRCAgXSA0IHRlc3RzLCBsaXN0ZWQgYmVsb3c6Ci1b
ICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLVsg
IEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGlu
ZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0
aW5lCi1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2Vy
dGlvbnMKLQotIDQgRkFJTEVEIFRFU1RTCi0gIFlPVSBIQVZFIDEgRElTQUJMRUQgVEVTVAotCi1O
b3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSAqRElTQUJMRURfKgotWz09PT09PT09PT1dIFJ1bm5p
bmcgMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52
aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIERpc2FibGVkVGVzdHNX
YXJuaW5nVGVzdAotWyBSVU4gICAgICBdIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdC5ESVNBQkxF
RF9BbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2FybmluZwotWyAgICAgICBPSyBd
IERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJsZWRUZXN0c0Zs
YWdTdXBwcmVzc2VzV2FybmluZwotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50
IHRlYXItZG93bgotWz09PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlIHJhbi4KLVsg
IFBBU1NFRCAgXSAxIHRlc3QuCi1Ob3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSBQYXNzaW5nVGVz
dC4qCi1Ob3RlOiBUaGlzIGlzIHRlc3Qgc2hhcmQgMSBvZiAyLgotWz09PT09PT09PT1dIFJ1bm5p
bmcgMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52
aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIFBhc3NpbmdUZXN0Ci1b
IFJVTiAgICAgIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi1bICAgICAgIE9LIF0gUGFzc2lu
Z1Rlc3QuUGFzc2luZ1Rlc3QyCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQg
dGVhci1kb3duCi1bPT09PT09PT09PV0gMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UgcmFuLgotWyAg
UEFTU0VEICBdIDEgdGVzdC4KLQotICBZT1UgSEFWRSAxIERJU0FCTEVEIFRFU1QKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xk
ZW5fd2luLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rl
c3RfZ29sZGVuX3dpbi50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxM2MzYWFm
YzMxZjVmMTAwNWM3NzQyODNlMDBiZGIwOWRlODFmNjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9vdXRwdXRfdGVzdF9nb2xkZW5fd2luLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYwNSArMCww
IEBACi1UaGUgbm9uLXRlc3QgcGFydCBvZiB0aGUgY29kZSBpcyBleHBlY3RlZCB0byBoYXZlIDIg
ZmFpbHVyZXMuCi0KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IGZh
bHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4cGVjdGVkOiB0cnVlCi1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogZXJyb3I6IFZhbHVlIG9mOiAzCi1FeHBlY3RlZDogMgotWz09PT09PT09PT1dIFJ1bm5p
bmcgNjEgdGVzdHMgZnJvbSAyNyB0ZXN0IGNhc2VzLgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0
IGVudmlyb25tZW50IHNldC11cC4KLUZvb0Vudmlyb25tZW50OjpTZXRVcCgpIGNhbGxlZC4KLUJh
ckVudmlyb25tZW50OjpTZXRVcCgpIGNhbGxlZC4KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBB
RGVhdGhUZXN0Ci1bIFJVTiAgICAgIF0gQURlYXRoVGVzdC5TaG91bGRSdW5GaXJzdAotWyAgICAg
ICBPSyBdIEFEZWF0aFRlc3QuU2hvdWxkUnVuRmlyc3QKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJv
bSBBVHlwZWREZWF0aFRlc3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci1bIFJVTiAgICAgIF0g
QVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLVsgICAgICAgT0sgXSBBVHlwZWREZWF0
aFRlc3QvMC5TaG91bGRSdW5GaXJzdAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIEFUeXBlZERl
YXRoVGVzdC8xLCB3aGVyZSBUeXBlUGFyYW0gPSBkb3VibGUKLVsgUlVOICAgICAgXSBBVHlwZWRE
ZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAotWyAgICAgICBPSyBdIEFUeXBlZERlYXRoVGVzdC8x
LlNob3VsZFJ1bkZpcnN0Ci1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTXkvQVR5cGVQYXJhbURl
YXRoVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLVsgUlVOICAgICAgXSBNeS9BVHlwZVBh
cmFtRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLVsgICAgICAgT0sgXSBNeS9BVHlwZVBhcmFt
RGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBNeS9B
VHlwZVBhcmFtRGVhdGhUZXN0LzEsIHdoZXJlIFR5cGVQYXJhbSA9IGRvdWJsZQotWyBSVU4gICAg
ICBdIE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAotWyAgICAgICBPSyBd
IE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAotWy0tLS0tLS0tLS1dIDIg
dGVzdHMgZnJvbSBQYXNzaW5nVGVzdAotWyBSVU4gICAgICBdIFBhc3NpbmdUZXN0LlBhc3NpbmdU
ZXN0MQotWyAgICAgICBPSyBdIFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MQotWyBSVU4gICAgICBd
IFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgotWyAgICAgICBPSyBdIFBhc3NpbmdUZXN0LlBhc3Np
bmdUZXN0MgotWy0tLS0tLS0tLS1dIDMgdGVzdHMgZnJvbSBGYXRhbEZhaWx1cmVUZXN0Ci1bIFJV
TiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLShleHBl
Y3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBlcnJvcjogVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotWyAgRkFJ
TEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi1bIFJVTiAg
ICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKLShl
eHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotWyAg
RkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5l
Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRp
bmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIG9uIGZhbHNlKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IGVycm9yOiBWYWx1ZSBvZjogZmFsc2UKLSAgQWN0dWFsOiBmYWxzZQotRXhwZWN0ZWQ6IHRy
dWUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91
dGluZQotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExvZ2dpbmdUZXN0Ci1bIFJVTiAgICAgIF0g
TG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLShleHBlY3Rpbmcg
MiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKQotaSA9PSAwCi1pID09IDEKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2
cyA5Ci1pID09IDIKLWkgPT0gMwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBFeHBl
Y3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDYKLVsgIEZBSUxFRCAgXSBMb2dnaW5n
VGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotWy0tLS0tLS0tLS1dIDUgdGVz
dHMgZnJvbSBTQ09QRURfVFJBQ0VUZXN0Ci1bIFJVTiAgICAgIF0gU0NPUEVEX1RSQUNFVGVzdC5P
YmV5c1Njb3BlcwotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
ZXJyb3I6IEZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkbid0IGhh
dmUgYSB0cmFjZS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1UaGlz
IGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgaGF2ZSBhIHRyYWNlLgotR29vZ2xlIFRl
c3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRXhwZWN0ZWQgdHJhY2UKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0
ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNlLgotWyAgRkFJTEVEICBdIFNDT1BFRF9UUkFD
RVRlc3QuT2JleXNTY29wZXMKLVsgUlVOICAgICAgXSBTQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5M
b29wCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjog
VmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAxCi1FeHBlY3RlZDogMgotR29vZ2xlIFRlc3QgdHJhY2U6
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogaSA9IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotR29vZ2xlIFRl
c3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogaSA9IDIKLVsgIEZBSUxFRCAgXSBT
Q09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCi1bIFJVTiAgICAgIF0gU0NPUEVEX1RSQUNFVGVz
dC5Xb3Jrc0luU3Vicm91dGluZQotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMQotRXhwZWN0ZWQ6IDIKLUdv
b2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4gPSAxCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMgotRXhwZWN0
ZWQ6IDEKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4gPSAy
Ci1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGluZQotWyBSVU4g
ICAgICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLShleHBlY3RlZCB0byBmYWlsKQot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogbgotICBBY3R1YWw6IDIK
LUV4cGVjdGVkOiAxCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBuID0gMgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IAotWyAgRkFJTEVEICBdIFNDT1BFRF9U
UkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLVsgUlVOICAgICAgXSBTQ09QRURfVFJBQ0VUZXN0LkNhbkJl
UmVwZWF0ZWQKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVy
cm9yOiBGYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWlu
IHRyYWNlIHBvaW50IEEuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBBCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotVGhpcyBmYWls
dXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSBhbmQgQi4K
LUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEIKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBBCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxl
ZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9p
bnQgQSwgQiwgYW5kIEMuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBDCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IEEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1UaGlzIGZhaWx1
cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQg
RC4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEQKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBCCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQQotWyAgRkFJ
TEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVSZXBlYXRlZAotWy0tLS0tLS0tLS1dIDEgdGVz
dCBmcm9tIE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdAotWyBSVU4gICAg
ICBdIE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25z
dHJ1Y3RvcgotKGV4cGVjdGluZyA1IGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0IGZpeHR1cmUg
Yyd0b3IuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQg
ZmFpbHVyZSAjMiwgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjog
RmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBib2R5LgotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIFRl
YXJEb3duLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVk
IGZhaWx1cmUgIzUsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi1bICBGQUlMRUQgIF0gTm9u
RmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9y
Ci1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0
b3JUZXN0Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0
LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMpCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhl
IHRlc3QgZml4dHVyZSBjJ3Rvci4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFp
bGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAg
RkFJTEVEICBdIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5D
b25zdHJ1Y3RvcgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIE5vbkZhdGFsRmFpbHVyZUluU2V0
VXBUZXN0Ci1bIFJVTiAgICAgIF0gTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUlu
U2V0VXAKLShleHBlY3RpbmcgNCBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBl
cnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLgotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRo
ZSB0ZXN0IGZ1bmN0aW9uLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQK
LUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIFRlYXJEb3duKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gdGhlIHRlc3QgZml4
dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAgXSBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWls
dXJlSW5TZXRVcAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIEZhdGFsRmFpbHVyZUluU2V0VXBU
ZXN0Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAK
LShleHBlY3RpbmcgMyBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjog
RmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLgotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRlYXJEb3du
KCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFp
bHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAgXSBGYXRhbEZh
aWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9t
IEV4Y2VwdGlvbkluRml4dHVyZUN0b3JUZXN0Ci1bIFJVTiAgICAgIF0gRXhjZXB0aW9uSW5GaXh0
dXJlQ3RvclRlc3QuRXhjZXB0aW9uSW5GaXh0dXJlQ3RvcgotKGV4cGVjdGluZyBhIGZhaWx1cmUg
b24gdGhyb3duIGV4Y2VwdGlvbiBpbiB0aGUgdGVzdCBmaXh0dXJlJ3MgY29uc3RydWN0b3IpCi11
bmtub3duIGZpbGU6IGVycm9yOiBFeGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAweGMwMDAwMDA1
IGluIHRoZSB0ZXN0IGZpeHR1cmUncyBjb25zdHJ1Y3Rvci4KLVstLS0tLS0tLS0tXSAxIHRlc3Qg
ZnJvbSBFeGNlcHRpb25JblNldFVwVGVzdAotWyBSVU4gICAgICBdIEV4Y2VwdGlvbkluU2V0VXBU
ZXN0LkV4Y2VwdGlvbkluU2V0VXAKLShleHBlY3RpbmcgMyBmYWlsdXJlcykKLXVua25vd24gZmls
ZTogZXJyb3I6IEV4Y2VwdGlvbiB0aHJvd24gd2l0aCBjb2RlIDB4YzAwMDAwMDUgaW4gU2V0VXAo
KS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWls
dXJlICMyLCBpbiBUZWFyRG93bigpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBG
YWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi1b
ICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5TZXRVcFRlc3QuRXhjZXB0aW9uSW5TZXRVcAotWy0tLS0t
LS0tLS1dIDIgdGVzdHMgZnJvbSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QKLVsgUlVOICAg
ICAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QuU0VICi0oZXhwZWN0aW5nIDMgZmFpbHVy
ZXMpCi11bmtub3duIGZpbGU6IGVycm9yOiBFeGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAweGMw
MDAwMDA1IGluIHRoZSB0ZXN0IGJvZHkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6
IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUg
dGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIEV4Y2VwdGlvbkluVGVzdEZ1bmN0aW9u
VGVzdC5TRUgKLVsgUlVOICAgICAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QuQ3BwRXhj
ZXB0aW9uCi11bmtub3duIGZpbGU6IGVycm9yOiBFeGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAw
eGUwNmQ3MzYzIGluIHRoZSB0ZXN0IGJvZHkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJy
b3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0
aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIEV4Y2VwdGlvbkluVGVzdEZ1bmN0
aW9uVGVzdC5DcHBFeGNlcHRpb24KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBFeGNlcHRpb25J
blRlYXJEb3duVGVzdAotWyBSVU4gICAgICBdIEV4Y2VwdGlvbkluVGVhckRvd25UZXN0LkV4Y2Vw
dGlvbkluVGVhckRvd24KLShleHBlY3RpbmcgMiBmYWlsdXJlcykKLXVua25vd24gZmlsZTogZXJy
b3I6IEV4Y2VwdGlvbiB0aHJvd24gd2l0aCBjb2RlIDB4ZTA2ZDczNjMgaW4gVGVhckRvd24oKS4K
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJl
ICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIEV4Y2VwdGlvbklu
VGVhckRvd25UZXN0LkV4Y2VwdGlvbkluVGVhckRvd24KLVstLS0tLS0tLS0tXSA0IHRlc3RzIGZy
b20gTWl4ZWRVcFRlc3RDYXNlVGVzdAotWyBSVU4gICAgICBdIE1peGVkVXBUZXN0Q2FzZVRlc3Qu
Rmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbwotWyAgICAgICBPSyBdIE1peGVkVXBUZXN0Q2FzZVRl
c3QuRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbwotWyBSVU4gICAgICBdIE1peGVkVXBUZXN0Q2Fz
ZVRlc3QuU2Vjb25kVGVzdEZyb21OYW1lc3BhY2VGb28KLVsgICAgICAgT0sgXSBNaXhlZFVwVGVz
dENhc2VUZXN0LlNlY29uZFRlc3RGcm9tTmFtZXNwYWNlRm9vCi1bIFJVTiAgICAgIF0gTWl4ZWRV
cFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogZXJyb3I6IEZhaWxlZAot
QWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZp
eHR1cmUKLWNsYXNzLiAgSG93ZXZlciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVRlc3Qs
Ci15b3UgZGVmaW5lZCB0ZXN0IEZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28gYW5kIHRlc3QgVGhp
c1Nob3VsZEZhaWwKLXVzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBU
aGlzIGNhbiBoYXBwZW4gaWYKLXRoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFt
ZXNwYWNlcyBvciB0cmFuc2xhdGlvbgotdW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlv
dSBzaG91bGQgcHJvYmFibHkgcmVuYW1lIG9uZQotb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0
ZXN0cyBpbnRvIGRpZmZlcmVudCB0ZXN0IGNhc2VzLgotWyAgRkFJTEVEICBdIE1peGVkVXBUZXN0
Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwKLVsgUlVOICAgICAgXSBNaXhlZFVwVGVzdENhc2VUZXN0
LlRoaXNTaG91bGRGYWlsVG9vCi1ndGVzdC5jYzojOiBlcnJvcjogRmFpbGVkCi1BbGwgdGVzdHMg
aW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xh
c3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlVGVzdCwKLXlvdSBkZWZp
bmVkIHRlc3QgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbyBhbmQgdGVzdCBUaGlzU2hvdWxkRmFp
bFRvbwotdXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2Fu
IGhhcHBlbiBpZgotdGhlIHR3byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVudCBuYW1lc3BhY2Vz
IG9yIHRyYW5zbGF0aW9uCi11bml0cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAgWW91IHNob3Vs
ZCBwcm9iYWJseSByZW5hbWUgb25lCi1vZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRlc3RzIGlu
dG8gZGlmZmVyZW50IHRlc3QgY2FzZXMuCi1bICBGQUlMRUQgIF0gTWl4ZWRVcFRlc3RDYXNlVGVz
dC5UaGlzU2hvdWxkRmFpbFRvbwotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBNaXhlZFVwVGVz
dENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdAotWyBSVU4gICAgICBdIE1peGVkVXBUZXN0Q2FzZVdp
dGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCi1b
ICAgICAgIE9LIF0gTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25k
VGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLVsgUlVOICAgICAgXSBNaXhlZFVwVGVzdENhc2VX
aXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAot
Z3Rlc3QuY2M6IzogZXJyb3I6IEZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2Fz
ZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAgSG93ZXZlciwgaW4gdGVz
dCBjYXNlIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAoteW91IGRlZmluZWQg
dGVzdCBUaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbCBhbmQgdGVzdCBUaGVTZWNv
bmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotdXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZp
eHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBlbiBpZgotdGhlIHR3byBjbGFzc2VzIGFyZSBm
cm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCi11bml0cyBhbmQgaGF2ZSB0
aGUgc2FtZSBuYW1lLiAgWW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25lCi1vZiB0aGUgY2xh
c3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMuCi1bICBGQUlM
RUQgIF0gTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdp
dGhUaGlzTmFtZVNob3VsZEZhaWwKLVstLS0tLS0tLS0tXSAyIHRlc3RzIGZyb20gVEVTVF9GX2Jl
Zm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlCi1bIFJVTiAgICAgIF0gVEVTVF9GX2JlZm9yZV9U
RVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRgotWyAgICAgICBPSyBdIFRF
U1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0YKLVsg
UlVOICAgICAgXSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVz
aW5nVEVTVEFuZFNob3VsZEZhaWwKLWd0ZXN0LmNjOiM6IGVycm9yOiBGYWlsZWQKLUFsbCB0ZXN0
cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1j
bGFzcywgc28gbWl4aW5nIFRFU1RfRiBhbmQgVEVTVCBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgaXMK
LWlsbGVnYWwuICBJbiB0ZXN0IGNhc2UgVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9j
YXNlLAotdGVzdCBEZWZpbmVkVXNpbmdURVNUX0YgaXMgZGVmaW5lZCB1c2luZyBURVNUX0YgYnV0
Ci10ZXN0IERlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsIGlzIGRlZmluZWQgdXNpbmcgVEVT
VC4gIFlvdSBwcm9iYWJseQotd2FudCB0byBjaGFuZ2UgdGhlIFRFU1QgdG8gVEVTVF9GIG9yIG1v
dmUgaXQgdG8gYW5vdGhlciB0ZXN0Ci1jYXNlLgotWyAgRkFJTEVEICBdIFRFU1RfRl9iZWZvcmVf
VEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxkRmFpbAotWy0t
LS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nh
c2UKLVsgUlVOICAgICAgXSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVm
aW5lZFVzaW5nVEVTVAotWyAgICAgICBPSyBdIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rl
c3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUCi1bIFJVTiAgICAgIF0gVEVTVF9iZWZvcmVfVEVTVF9G
X2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwKLWd0ZXN0
LmNjOiM6IGVycm9yOiBGYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVz
dCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcywgc28gbWl4aW5nIFRFU1RfRiBhbmQg
VEVTVCBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgaXMKLWlsbGVnYWwuICBJbiB0ZXN0IGNhc2UgVEVT
VF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLAotdGVzdCBEZWZpbmVkVXNpbmdURVNU
X0ZBbmRTaG91bGRGYWlsIGlzIGRlZmluZWQgdXNpbmcgVEVTVF9GIGJ1dAotdGVzdCBEZWZpbmVk
VXNpbmdURVNUIGlzIGRlZmluZWQgdXNpbmcgVEVTVC4gIFlvdSBwcm9iYWJseQotd2FudCB0byBj
aGFuZ2UgdGhlIFRFU1QgdG8gVEVTVF9GIG9yIG1vdmUgaXQgdG8gYW5vdGhlciB0ZXN0Ci1jYXNl
LgotWyAgRkFJTEVEICBdIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZp
bmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsCi1bLS0tLS0tLS0tLV0gOCB0ZXN0cyBmcm9tIEV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QKLVsgUlVOICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1
cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotWyAgICAgICBPSyBdIEV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCi1bIFJVTiAgICAg
IF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFZhcmlhYmxlcwot
WyAgICAgICBPSyBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxW
YXJpYWJsZXMKLVsgUlVOICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRz
V2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKLVsgICAgICAgT0sgXSBFeHBlY3ROb25mYXRh
bEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKLVsgUlVO
ICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb05vbmZh
dGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhw
ZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi1bICBGQUlM
RUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRh
bEZhaWx1cmUKLVsgUlVOICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hl
blRoZXJlQXJlVHdvTm9uZmF0YWxGYWlsdXJlcwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVz
dC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAy
IGZhaWx1cmVzCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1G
YWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDEuCi0KLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZh
aWx1cmUgMi4KLQotWyAgRkFJTEVEICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNX
aGVuVGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1cmVzCi1bIFJVTiAgICAgIF0gRXhwZWN0Tm9uZmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5n
IGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFp
bHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToK
LUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotWyAgRkFJTEVEICBdIEV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotWyBSVU4g
ICAgICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJu
cwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEg
bm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi1bIFJVTiAg
ICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MK
LShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5v
bi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotWyAgRkFJTEVEICBdIEV4cGVj
dE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi1bLS0tLS0tLS0t
LV0gOCB0ZXN0cyBmcm9tIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QKLVsgUlVOICAgICAgXSBFeHBl
Y3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotWyAgICAgICBP
SyBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCi1b
IFJVTiAgICAgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFN0YXRp
Y1ZhcmlhYmxlcwotWyAgICAgICBPSyBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJl
bmNlTG9jYWxTdGF0aWNWYXJpYWJsZXMKLVsgUlVOICAgICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLVsgICAgICAgT0sgXSBFeHBl
Y3RGYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLVsg
UlVOICAgICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb0ZhdGFs
RmFpbHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0
ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBF
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZQotWyBS
VU4gICAgICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29GYXRh
bEZhaWx1cmVzCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBl
Y3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMiBmYWlsdXJlcwotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1
cmUuCi0KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1F
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMKLVsgUlVOICAgICAgXSBFeHBl
Y3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKLShl
eHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFs
IGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBm
YWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQotWyAgRkFJTEVE
ICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFp
bHVyZQotWyBSVU4gICAgICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVt
ZW50UmV0dXJucwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhw
ZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsgIEZBSUxFRCAg
XSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLVsgUlVO
ICAgICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwot
KGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0
YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRh
bEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotWy0tLS0tLS0tLS1dIDIgdGVz
dHMgZnJvbSBUeXBlZFRlc3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci1bIFJVTiAgICAgIF0g
VHlwZWRUZXN0LzAuU3VjY2VzcwotWyAgICAgICBPSyBdIFR5cGVkVGVzdC8wLlN1Y2Nlc3MKLVsg
UlVOICAgICAgXSBUeXBlZFRlc3QvMC5GYWlsdXJlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
ZXJyb3I6IFZhbHVlIG9mOiBUeXBlUGFyYW0oKQotICBBY3R1YWw6IDAKLUV4cGVjdGVkOiAxCi1F
eHBlY3RlZCBmYWlsdXJlCi1bICBGQUlMRUQgIF0gVHlwZWRUZXN0LzAuRmFpbHVyZQotWy0tLS0t
LS0tLS1dIDIgdGVzdHMgZnJvbSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAsIHdoZXJlIFR5cGVQYXJh
bSA9IHVuc2lnbmVkIGNoYXIKLVsgUlVOICAgICAgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAuU3Vj
Y2VzcwotWyAgICAgICBPSyBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMC5TdWNjZXNzCi1bIFJVTiAg
ICAgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBlcnJvcjogVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogXDAKLUV4cGVjdGVk
OiAxVQotV2hpY2ggaXM6IDEKLUV4cGVjdGVkIGZhaWx1cmUKLVsgIEZBSUxFRCAgXSBVbnNpZ25l
ZC9UeXBlZFRlc3RQLzAuRmFpbHVyZQotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBVbnNpZ25l
ZC9UeXBlZFRlc3RQLzEsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAotWyBSVU4gICAg
ICBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNzCi1bICAgICAgIE9LIF0gVW5zaWduZWQv
VHlwZWRUZXN0UC8xLlN1Y2Nlc3MKLVsgUlVOICAgICAgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzEu
RmFpbHVyZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogVHlwZVBh
cmFtKCkKLSAgQWN0dWFsOiAwCi1FeHBlY3RlZDogMVUKLVdoaWNoIGlzOiAxCi1FeHBlY3RlZCBm
YWlsdXJlCi1bICBGQUlMRUQgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUKLVstLS0t
LS0tLS0tXSA0IHRlc3RzIGZyb20gRXhwZWN0RmFpbHVyZVRlc3QKLVsgUlVOICAgICAgXSBFeHBl
Y3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgMSBmYWlsdXJlKQot
Z3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1TdWNjZWVkZWQKLQotKGV4cGVjdGlu
ZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVy
ZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6
Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0aW5nIDEgZmFp
bHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlIGNvbnRh
aW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBlY3RlZC4iCi0gIEFjdHVhbDoKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBm
YXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0
YWxGYWlsdXJlCi1bIFJVTiAgICAgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxG
YWlsdXJlCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3Rl
ZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogU3VjY2VzczoKLVN1Y2NlZWRlZAotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNj
OiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0
YWwgZmFpbHVyZS4KLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjog
RXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBub24t
ZmF0YWwgZmFpbHVyZS4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24t
ZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLVsg
IEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLVsgUlVO
ICAgICAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMK
LShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZh
dGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6
Ci1TdWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjog
RXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWls
dXJlLgotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3Rl
ZDogMSBmYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBl
eHBlY3RlZC4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWls
dXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQgIF0gRXhw
ZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi1bIFJVTiAgICAg
IF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0o
ZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24t
ZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogU3VjY2Vz
czoKLVN1Y2NlZWRlZAotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9y
OiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVy
ZS4KLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6
IDEgbm9uLWZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBub24tZmF0YWwgZmFp
bHVyZS4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFp
bHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLVsgIEZBSUxFRCAg
XSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLVst
LS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KLUJhckVudmlyb25t
ZW50OjpUZWFyRG93bigpIGNhbGxlZC4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjog
RmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLUZvb0Vudmlyb25tZW50OjpUZWFy
RG93bigpIGNhbGxlZC4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1F
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotWz09PT09PT09PT1dIDYxIHRlc3RzIGZyb20gMjcgdGVz
dCBjYXNlcyByYW4uCi1bICBQQVNTRUQgIF0gMjEgdGVzdHMuCi1bICBGQUlMRUQgIF0gNDAgdGVz
dHMsIGxpc3RlZCBiZWxvdzoKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFp
bHVyZUluU3Vicm91dGluZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWls
dXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25m
YXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxl
YXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotWyAgRkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3Qu
T2JleXNTY29wZXMKLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCi1b
ICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGluZQotWyAgRkFJTEVE
ICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJB
Q0VUZXN0LkNhbkJlUmVwZWF0ZWQKLVsgIEZBSUxFRCAgXSBOb25GYXRhbEZhaWx1cmVJbkZpeHR1
cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKLVsgIEZBSUxFRCAgXSBGYXRh
bEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKLVsg
IEZBSUxFRCAgXSBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotWyAg
RkFJTEVEICBdIEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi1bICBGQUlM
RUQgIF0gRXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3QuRXhjZXB0aW9uSW5GaXh0dXJlQ3Rvcgot
WyAgRkFJTEVEICBdIEV4Y2VwdGlvbkluU2V0VXBUZXN0LkV4Y2VwdGlvbkluU2V0VXAKLVsgIEZB
SUxFRCAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QuU0VICi1bICBGQUlMRUQgIF0gRXhj
ZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0LkNwcEV4Y2VwdGlvbgotWyAgRkFJTEVEICBdIEV4Y2Vw
dGlvbkluVGVhckRvd25UZXN0LkV4Y2VwdGlvbkluVGVhckRvd24KLVsgIEZBSUxFRCAgXSBNaXhl
ZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsCi1bICBGQUlMRUQgIF0gTWl4ZWRVcFRlc3RD
YXNlVGVzdC5UaGlzU2hvdWxkRmFpbFRvbwotWyAgRkFJTEVEICBdIE1peGVkVXBUZXN0Q2FzZVdp
dGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCi1b
ICBGQUlMRUQgIF0gVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRV
c2luZ1RFU1RBbmRTaG91bGRGYWlsCi1bICBGQUlMRUQgIF0gVEVTVF9iZWZvcmVfVEVTVF9GX2lu
X3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwKLVsgIEZBSUxF
RCAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb05vbmZhdGFs
RmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVu
VGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxG
YWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi1bICBGQUlMRUQgIF0g
RXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi1bICBG
QUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJv
d3MKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNO
b0ZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNX
aGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxGYWls
dXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi1bICBGQUlMRUQgIF0g
RXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi1bICBGQUlM
RUQgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLVsg
IEZBSUxFRCAgXSBUeXBlZFRlc3QvMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLVsg
IEZBSUxFRCAgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFt
ID0gdW5zaWduZWQgY2hhcgotWyAgRkFJTEVEICBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWls
dXJlLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKLVsgIEZBSUxFRCAgXSBFeHBlY3RG
YWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJl
VGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVz
dC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYWls
dXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLQotNDAgRkFJTEVEIFRF
U1RTCi0gIFlPVSBIQVZFIDEgRElTQUJMRUQgVEVTVAotCi1Ob3RlOiBHb29nbGUgVGVzdCBmaWx0
ZXIgPSBGYXRhbEZhaWx1cmVUZXN0Lio6TG9nZ2luZ1Rlc3QuKgotWz09PT09PT09PT1dIFJ1bm5p
bmcgNCB0ZXN0cyBmcm9tIDIgdGVzdCBjYXNlcy4KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBl
bnZpcm9ubWVudCBzZXQtdXAuCi1bLS0tLS0tLS0tLV0gMyB0ZXN0cyBmcm9tIEZhdGFsRmFpbHVy
ZVRlc3QKLVsgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91
dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogeAotICBBY3R1YWw6IDIKLUV4cGVjdGVk
OiAxCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRp
bmUgKD8gbXMpCi1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5l
c3RlZFN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAy
Ci1FeHBlY3RlZDogMQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJl
SW5OZXN0ZWRTdWJyb3V0aW5lICg/IG1zKQotWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3Qu
Tm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiBmYWxz
ZSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IGZhbHNlCi0gIEFj
dHVhbDogZmFsc2UKLUV4cGVjdGVkOiB0cnVlCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVz
dC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUgKD8gbXMpCi1bLS0tLS0tLS0tLV0gMyB0ZXN0
cyBmcm9tIEZhdGFsRmFpbHVyZVRlc3QgKD8gbXMgdG90YWwpCi0KLVstLS0tLS0tLS0tXSAxIHRl
c3QgZnJvbSBMb2dnaW5nVGVzdAotWyBSVU4gICAgICBdIExvZ2dpbmdUZXN0LkludGVybGVhdmlu
Z0xvZ2dpbmdBbmRBc3NlcnRpb25zCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24gKDMpID49IChh
W2ldKSkKLWkgPT0gMAotaSA9PSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEV4
cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgOQotaSA9PSAyCi1pID09IDMKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFj
dHVhbDogMyB2cyA2Ci1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2lu
Z0FuZEFzc2VydGlvbnMgKD8gbXMpCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTG9nZ2luZ1Rl
c3QgKD8gbXMgdG90YWwpCi0KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0
ZWFyLWRvd24KLVs9PT09PT09PT09XSA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2VzIHJhbi4gKD8g
bXMgdG90YWwpCi1bICBQQVNTRUQgIF0gMCB0ZXN0cy4KLVsgIEZBSUxFRCAgXSA0IHRlc3RzLCBs
aXN0ZWQgYmVsb3c6Ci1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJ
blN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUlu
TmVzdGVkU3Vicm91dGluZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxG
YWlsdXJlSW5TdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5n
TG9nZ2luZ0FuZEFzc2VydGlvbnMKLQotIDQgRkFJTEVEIFRFU1RTCi0gIFlPVSBIQVZFIDEgRElT
QUJMRUQgVEVTVAotCi1Ob3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSAqRElTQUJMRURfKgotWz09
PT09PT09PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0tLS0tLS0tLV0g
R2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9t
IERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdAotWyBSVU4gICAgICBdIERpc2FibGVkVGVzdHNXYXJu
aW5nVGVzdC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2Fybmlu
ZwotWyAgICAgICBPSyBdIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdC5ESVNBQkxFRF9BbHNvUnVu
RGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2FybmluZwotWy0tLS0tLS0tLS1dIEdsb2JhbCB0
ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgotWz09PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVz
dCBjYXNlIHJhbi4KLVsgIFBBU1NFRCAgXSAxIHRlc3QuCi1Ob3RlOiBHb29nbGUgVGVzdCBmaWx0
ZXIgPSBQYXNzaW5nVGVzdC4qCi1Ob3RlOiBUaGlzIGlzIHRlc3Qgc2hhcmQgMSBvZiAyLgotWz09
PT09PT09PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0tLS0tLS0tLV0g
R2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9t
IFBhc3NpbmdUZXN0Ci1bIFJVTiAgICAgIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi1bICAg
ICAgIE9LIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRl
c3QgZW52aXJvbm1lbnQgdGVhci1kb3duCi1bPT09PT09PT09PV0gMSB0ZXN0IGZyb20gMSB0ZXN0
IGNhc2UgcmFuLgotWyAgUEFTU0VEICBdIDEgdGVzdC4KLQotICBZT1UgSEFWRSAxIERJU0FCTEVE
IFRFU1QKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9w
cmVkX2ltcGxfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X3ByZWRfaW1wbF91bml0dGVzdC5jYwppbmRleCBlN2VlNTRiNTZkODZiOWVhNTRiNzE2MTI1ODY5
YWEyODdkMTI2YmU3Li5iNDY2YzE1MGFlZGM0M2ZkYjEwMzczYjdhODAyY2NiZTc3NTc5MGY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZWRfaW1wbF91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZWRf
aW1wbF91bml0dGVzdC5jYwpAQCAtMjcsNyArMjcsNyBAQAogLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogCi0vLyBUaGlzIGZpbGUgaXMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQgb24g
MTAvMDIvMjAwOCBieSBjb21tYW5kCisvLyBUaGlzIGZpbGUgaXMgQVVUT01BVElDQUxMWSBHRU5F
UkFURUQgb24gMDEvMDIvMjAxOCBieSBjb21tYW5kCiAvLyAnZ2VuX2d0ZXN0X3ByZWRfaW1wbC5w
eSA1Jy4gIERPIE5PVCBFRElUIEJZIEhBTkQhCiAKIC8vIFJlZ3Jlc3Npb24gdGVzdCBmb3IgZ3Rl
c3RfcHJlZF9pbXBsLmgKQEAgLTQ5LDggKzQ5LDggQEAKIAogI2luY2x1ZGUgPGlvc3RyZWFtPgog
Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGkuaD4K
KyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgog
CiAvLyBBIHVzZXItZGVmaW5lZCBkYXRhIHR5cGUuCiBzdHJ1Y3QgQm9vbCB7CkBAIC0xMDMsMTEg
KzEwMywxMCBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1bmN0aW9uMShj
b25zdCBjaGFyKiBlMSwKICAgaWYgKFByZWRGdW5jdGlvbjEodjEpKQogICAgIHJldHVybiB0ZXN0
aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgdGVzdGluZzo6TWVzc2FnZSBtc2c7Ci0gIG1z
ZyA8PCBlMQorICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBl
MQogICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBiZSBwb3NpdGl2ZSwgYnV0IGV2YWx1YXRlcyB0
byAiCiAgICAgICA8PCB2MSA8PCAiLiI7Ci0gIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWls
dXJlKG1zZyk7CiB9CiAKIC8vIEEgdW5hcnkgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdG9yLgpA
QCAtNDk0LDExICs0OTMsMTAgQEAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRGb3JtYXRG
dW5jdGlvbjIoY29uc3QgY2hhciogZTEsCiAgIGlmIChQcmVkRnVuY3Rpb24yKHYxLCB2MikpCiAg
ICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5nOjpNZXNz
YWdlIG1zZzsKLSAgbXNnIDw8IGUxIDw8ICIgKyAiIDw8IGUyCisgIHJldHVybiB0ZXN0aW5nOjpB
c3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IGUxIDw8ICIgKyAiIDw8IGUyCiAgICAgICA8PCAi
IGlzIGV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKICAgICAgIDw8
IHYxICsgdjIgPDwgIi4iOwotICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZShtc2cp
OwogfQogCiAvLyBBIGJpbmFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3IuCkBAIC05Mjcs
MTEgKzkyNSwxMCBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1bmN0aW9u
Myhjb25zdCBjaGFyKiBlMSwKICAgaWYgKFByZWRGdW5jdGlvbjModjEsIHYyLCB2MykpCiAgICAg
cmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5nOjpNZXNzYWdl
IG1zZzsKLSAgbXNnIDw8IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUzCisgIHJldHVy
biB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IGUxIDw8ICIgKyAiIDw8IGUy
IDw8ICIgKyAiIDw8IGUzCiAgICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlLCBi
dXQgZXZhbHVhdGVzIHRvICIKICAgICAgIDw8IHYxICsgdjIgKyB2MyA8PCAiLiI7Ci0gIHJldHVy
biB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIC8vIEEgdGVybmFyeSBwcmVk
aWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3IuCkBAIC0xNDAyLDExICsxMzk5LDEwIEBAIHRlc3Rpbmc6
OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rpb240KGNvbnN0IGNoYXIqIGUxLAogICBp
ZiAoUHJlZEZ1bmN0aW9uNCh2MSwgdjIsIHYzLCB2NCkpCiAgICAgcmV0dXJuIHRlc3Rpbmc6OkFz
c2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5nOjpNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGUx
IDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUzIDw8ICIgKyAiIDw8IGU0CisgIHJldHVybiB0
ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IGUxIDw8ICIgKyAiIDw8IGUyIDw8
ICIgKyAiIDw8IGUzIDw8ICIgKyAiIDw8IGU0CiAgICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJl
IHBvc2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKICAgICAgIDw8IHYxICsgdjIgKyB2MyArIHY0
IDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNnKTsKIH0KIAog
Ly8gQSA0LWFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3IuCkBAIC0xOTE5LDExICsxOTE1
LDEwIEBAIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rpb241KGNvbnN0
IGNoYXIqIGUxLAogICBpZiAoUHJlZEZ1bmN0aW9uNSh2MSwgdjIsIHYzLCB2NCwgdjUpKQogICAg
IHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgdGVzdGluZzo6TWVzc2Fn
ZSBtc2c7Ci0gIG1zZyA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBlMyA8PCAiICsg
IiA8PCBlNCA8PCAiICsgIiA8PCBlNQorICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVy
ZSgpCisgICAgICA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBlMyA8PCAiICsgIiA8
PCBlNCA8PCAiICsgIiA8PCBlNQogICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBiZSBwb3NpdGl2
ZSwgYnV0IGV2YWx1YXRlcyB0byAiCiAgICAgICA8PCB2MSArIHYyICsgdjMgKyB2NCArIHY1IDw8
ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNnKTsKIH0KIAogLy8g
QSA1LWFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZW1hdHVyZV9leGl0X3Rlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZW1hdHVyZV9leGl0X3Rlc3QuY2MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzFlOTMwNTZkOGI1NjJjNTlmZWJhODI3OGUyMGMyOWRmMTNlMTkxNQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJlbWF0dXJl
X2V4aXRfdGVzdC5jYwpAQCAtMCwwICsxLDEyNiBAQAorLy8gQ29weXJpZ2h0IDIwMTMsIEdvb2ds
ZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gVGVzdHMgdGhhdCBHb29nbGUgVGVzdCBtYW5p
cHVsYXRlcyB0aGUgcHJlbWF0dXJlLWV4aXQtZGV0ZWN0aW9uCisvLyBmaWxlIGNvcnJlY3RseS4K
KworI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCit1c2lu
ZyA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0OwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0OwordXNp
bmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OkdldEVudjsKK3VzaW5nIDo6dGVzdGluZzo6
aW50ZXJuYWw6OnBvc2l4OjpTdGF0OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6
OlN0YXRTdHJ1Y3Q7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIFByZW1hdHVyZUV4aXRUZXN0IDog
cHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgZ2l2ZW4g
ZmlsZSBleGlzdHMuCisgIHN0YXRpYyBib29sIEZpbGVFeGlzdHMoY29uc3QgY2hhciogZmlsZXBh
dGgpIHsKKyAgICBTdGF0U3RydWN0IHN0YXQ7CisgICAgcmV0dXJuIFN0YXQoZmlsZXBhdGgsICZz
dGF0KSA9PSAwOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIFByZW1hdHVyZUV4aXRUZXN0KCkgewor
ICAgIHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8gPSBHZXRFbnYoIlRFU1RfUFJFTUFUVVJFX0VY
SVRfRklMRSIpOworCisgICAgLy8gTm9ybWFsaXplIE5VTEwgdG8gIiIgZm9yIGVhc2Ugb2YgaGFu
ZGxpbmcuCisgICAgaWYgKHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8gPT0gTlVMTCkgeworICAg
ICAgcHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXyA9ICIiOworICAgIH0KKyAgfQorCisgIC8vIFJl
dHVybnMgdHJ1ZSBpZmYgdGhlIHByZW1hdHVyZS1leGl0IGZpbGUgZXhpc3RzLgorICBib29sIFBy
ZW1hdHVyZUV4aXRGaWxlRXhpc3RzKCkgY29uc3QgeworICAgIHJldHVybiBGaWxlRXhpc3RzKHBy
ZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8pOworICB9CisKKyAgY29uc3QgY2hhciogcHJlbWF0dXJl
X2V4aXRfZmlsZV9wYXRoXzsKK307CisKK3R5cGVkZWYgUHJlbWF0dXJlRXhpdFRlc3QgUHJlbWF0
dXJlRXhpdERlYXRoVGVzdDsKKworLy8gVGVzdHMgdGhhdDoKKy8vICAgLSB0aGUgcHJlbWF0dXJl
LWV4aXQgZmlsZSBleGlzdHMgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgYQorLy8gICAgIGRlYXRo
IHRlc3QgKEVYUEVDVF9ERUFUSCopLCBhbmQKKy8vICAgLSBhIGRlYXRoIHRlc3QgZG9lc24ndCBp
bnRlcmZlcmUgd2l0aCB0aGUgbWFpbiB0ZXN0IHByb2Nlc3MncworLy8gICAgIGhhbmRsaW5nIG9m
IHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlLgorVEVTVF9GKFByZW1hdHVyZUV4aXREZWF0aFRlc3Qs
IEZpbGVFeGlzdHNEdXJpbmdFeGVjdXRpb25PZkRlYXRoVGVzdCkgeworICBpZiAoKnByZW1hdHVy
ZV9leGl0X2ZpbGVfcGF0aF8gPT0gJ1wwJykgeworICAgIHJldHVybjsKKyAgfQorCisgIEVYUEVD
VF9ERUFUSF9JRl9TVVBQT1JURUQoeworICAgICAgLy8gSWYgdGhlIGZpbGUgZXhpc3RzLCBjcmFz
aCB0aGUgcHJvY2VzcyBzdWNoIHRoYXQgdGhlIG1haW4gdGVzdAorICAgICAgLy8gcHJvY2VzcyB3
aWxsIGNhdGNoIHRoZSAoZXhwZWN0ZWQpIGNyYXNoIGFuZCByZXBvcnQgYSBzdWNjZXNzOworICAg
ICAgLy8gb3RoZXJ3aXNlIGRvbid0IGNyYXNoLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBtYWluIHRl
c3QgcHJvY2VzcworICAgICAgLy8gdG8gcmVwb3J0IHRoYXQgdGhlIGRlYXRoIHRlc3QgaGFzIGZh
aWxlZC4KKyAgICAgIGlmIChQcmVtYXR1cmVFeGl0RmlsZUV4aXN0cygpKSB7CisgICAgICAgIGV4
aXQoMSk7CisgICAgICB9CisgICAgfSwgIiIpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBwcmVt
YXR1cmUtZXhpdCBmaWxlIGV4aXN0cyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiBhCisvLyBub3Jt
YWwgKG5vbi1kZWF0aCkgdGVzdC4KK1RFU1RfRihQcmVtYXR1cmVFeGl0VGVzdCwgUHJlbWF0dXJl
RXhpdEZpbGVFeGlzdHNEdXJpbmdUZXN0RXhlY3V0aW9uKSB7CisgIGlmICgqcHJlbWF0dXJlX2V4
aXRfZmlsZV9wYXRoXyA9PSAnXDAnKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgRVhQRUNUX1RS
VUUoUHJlbWF0dXJlRXhpdEZpbGVFeGlzdHMoKSkKKyAgICAgIDw8ICIgZmlsZSAiIDw8IHByZW1h
dHVyZV9leGl0X2ZpbGVfcGF0aF8KKyAgICAgIDw8ICIgc2hvdWxkIGV4aXN0IGR1cmluZyB0ZXN0
IGV4ZWN1dGlvbiwgYnV0IGRvZXNuJ3QuIjsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK2ludCBt
YWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICBJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJn
dik7CisgIGNvbnN0IGludCBleGl0X2NvZGUgPSBSVU5fQUxMX1RFU1RTKCk7CisKKyAgLy8gVGVz
dCB0aGF0IHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlIGlzIGRlbGV0ZWQgdXBvbiByZXR1cm4gZnJv
bQorICAvLyBSVU5fQUxMX1RFU1RTKCkuCisgIGNvbnN0IGNoYXIqIGNvbnN0IGZpbGVwYXRoID0g
R2V0RW52KCJURVNUX1BSRU1BVFVSRV9FWElUX0ZJTEUiKTsKKyAgaWYgKGZpbGVwYXRoICE9IE5V
TEwgJiYgKmZpbGVwYXRoICE9ICdcMCcpIHsKKyAgICBpZiAoUHJlbWF0dXJlRXhpdFRlc3Q6OkZp
bGVFeGlzdHMoZmlsZXBhdGgpKSB7CisgICAgICBwcmludGYoCisgICAgICAgICAgIkZpbGUgJXMg
c2hvdWxkbid0IGV4aXN0IGFmdGVyIHRoZSB0ZXN0IHByb2dyYW0gZmluaXNoZXMsIGJ1dCBkb2Vz
LiIsCisgICAgICAgICAgZmlsZXBhdGgpOworICAgICAgcmV0dXJuIDE7CisgICAgfQorICB9CisK
KyAgcmV0dXJuIGV4aXRfY29kZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfcHJvZF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF9wcm9kX3Rlc3QuY2MKaW5kZXggYmMzMjAxZDBmMjRhZTk4ZWQwNjJjN2I4YzlmNDRk
N2RmZTZkN2M5Ni4uZWRlODFhMGQxN2EwMmM4NTNlZDIyMzRlYzg4ZmU4Mjc3MTgwYTM3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2MK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2MKQEAg
LTI2LDEzICsyNiwxMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQot
Ly8KLS8vIFVuaXQgdGVzdCBmb3IgaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmguCisvLyBVbml0
IHRlc3QgZm9yIGd0ZXN0X3Byb2QuaC4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5j
bHVkZSAidGVzdC9wcm9kdWN0aW9uLmgiCisjaW5jbHVkZSAicHJvZHVjdGlvbi5oIgorI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIC8vIFRlc3RzIHRoYXQgcHJpdmF0ZSBtZW1iZXJzIGNhbiBi
ZSBhY2Nlc3NlZCBmcm9tIGEgVEVTVCBkZWNsYXJlZCBhcwogLy8gYSBmcmllbmQgb2YgdGhlIGNs
YXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9yZXBl
YXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcmVwZWF0X3Rl
c3QuY2MKaW5kZXggZGY2ODY4YjgzMDI5NjEyNWEyN2M3ZjM3ZjkzMTZjZWQ0ZWQ4MmQ1NC4uMWU4
ZjQ5OWJiOWRlM2QxNGJjYjNiYjFhNjQxYzA2ZDdhMTI1MGFkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9yZXBlYXRfdGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3JlcGVhdF90ZXN0LmNjCkBAIC0yNiwyMyArMjYs
MTQgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8v
Ci0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogLy8gVGVzdHMg
dGhlIC0tZ3Rlc3RfcmVwZWF0PW51bWJlciBmbGFnLgogCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAj
aW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotLy8gSW5kaWNh
dGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3Qncwot
Ly8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlu
bC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAg
VGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5j
bHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RF
U1RfSU1QTEVNRU5UQVRJT05fIDEKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogI2luY2x1ZGUg
InNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8K
IAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC02OSwxMyArNjAsMTMgQEAgbmFtZXNwYWNlIHsK
ICAgICAgICAgICAgICAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBhY3R1YWxfdmFsIDw8ICJcbiJc
CiAgICAgICAgICAgICAgICAgICA8PCAiRXhwZWN0ZWQ6ICIgI2V4cGVjdGVkICJcbiJcCiAgICAg
ICAgICAgICAgICAgICA8PCAiV2hpY2ggaXM6ICIgPDwgZXhwZWN0ZWRfdmFsIDw8ICJcbiI7XAot
ICAgICAgYWJvcnQoKTtcCisgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6QWJvcnQo
KTtcCiAgICAgfVwKLSAgfSB3aGlsZSg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgp
KQorICB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgpKQogCiAKIC8v
IFVzZWQgZm9yIHZlcmlmeWluZyB0aGF0IGdsb2JhbCBlbnZpcm9ubWVudCBzZXQtdXAgYW5kIHRl
YXItZG93biBhcmUKLS8vIGluc2lkZSB0aGUgZ3Rlc3RfcmVwZWF0IGxvb3AuCisvLyBpbnNpZGUg
dGhlIC0tZ3Rlc3RfcmVwZWF0IGxvb3AuCiAKIGludCBnX2Vudmlyb25tZW50X3NldF91cF9jb3Vu
dCA9IDA7CiBpbnQgZ19lbnZpcm9ubWVudF90ZWFyX2Rvd25fY291bnQgPSAwOwpAQCAtMTEzLDEz
ICsxMDQsMTIgQEAgVEVTVChCYXJEZWF0aFRlc3QsIFRocmVhZFNhZmVBbmRGYXN0KSB7CiAgIGdf
ZGVhdGhfdGVzdF9jb3VudCsrOwogCiAgIEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAi
dGhyZWFkc2FmZSI7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoYWJvcnQoKSwgIiIpOwor
ICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpB
Ym9ydCgpLCAiIik7CiAKICAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsK
LSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChhYm9ydCgpLCAiIik7CisgIEVYUEVDVF9ERUFU
SF9JRl9TVVBQT1JURUQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OkFib3J0KCksICIiKTsK
IH0KIAotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiBpbnQgZ19wYXJhbV90ZXN0X2NvdW50ID0g
MDsKIAogY29uc3QgaW50IGtOdW1iZXJPZlBhcmFtVGVzdHMgPSAxMDsKQEAgLTEyNywxNSArMTE3
LDEzIEBAIGNvbnN0IGludCBrTnVtYmVyT2ZQYXJhbVRlc3RzID0gMTA7CiBjbGFzcyBNeVBhcmFt
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4ge307CiAKIFRFU1RfUChN
eVBhcmFtVGVzdCwgU2hvdWxkUGFzcykgewotICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBN
YWtlIHBhcmFtZXRlciB2YWx1ZSBjaGVja2luZyByb2J1c3QKLSAgLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgV1JUIG9yZGVyIG9mIHRlc3RzLgorICAvLyBGSVhNRTogTWFrZSBwYXJhbWV0ZXIg
dmFsdWUgY2hlY2tpbmcgcm9idXN0IFdSVCBvcmRlciBvZiB0ZXN0cy4KICAgR1RFU1RfQ0hFQ0tf
SU5UX0VRXyhnX3BhcmFtX3Rlc3RfY291bnQgJSBrTnVtYmVyT2ZQYXJhbVRlc3RzLCBHZXRQYXJh
bSgpKTsKICAgZ19wYXJhbV90ZXN0X2NvdW50Kys7CiB9CiBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UChNeVBhcmFtU2VxdWVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBNeVBhcmFtVGVzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlJhbmdlKDAsIGtOdW1iZXJPZlBhcmFt
VGVzdHMpKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIAogLy8gUmVzZXRzIHRo
ZSBjb3VudCBmb3IgZWFjaCB0ZXN0Lgogdm9pZCBSZXNldENvdW50cygpIHsKQEAgLTE0NCw5ICsx
MzIsNyBAQCB2b2lkIFJlc2V0Q291bnRzKCkgewogICBnX3Nob3VsZF9mYWlsX2NvdW50ID0gMDsK
ICAgZ19zaG91bGRfcGFzc19jb3VudCA9IDA7CiAgIGdfZGVhdGhfdGVzdF9jb3VudCA9IDA7Ci0j
aWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgZ19wYXJhbV90ZXN0X2NvdW50ID0gMDsKLSNlbmRp
ZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIH0KIAogLy8gQ2hlY2tzIHRoYXQgdGhlIGNvdW50
IGZvciBlYWNoIHRlc3QgaXMgZXhwZWN0ZWQuCkBAIC0xNTYsOSArMTQyLDcgQEAgdm9pZCBDaGVj
a0NvdW50cyhpbnQgZXhwZWN0ZWQpIHsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhleHBlY3RlZCwg
Z19zaG91bGRfZmFpbF9jb3VudCk7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8oZXhwZWN0ZWQsIGdf
c2hvdWxkX3Bhc3NfY291bnQpOwogICBHVEVTVF9DSEVDS19JTlRfRVFfKGV4cGVjdGVkLCBnX2Rl
YXRoX3Rlc3RfY291bnQpOwotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiAgIEdURVNUX0NIRUNL
X0lOVF9FUV8oZXhwZWN0ZWQgKiBrTnVtYmVyT2ZQYXJhbVRlc3RzLCBnX3BhcmFtX3Rlc3RfY291
bnQpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogfQogCiAvLyBUZXN0cyB0aGUg
YmVoYXZpb3Igb2YgR29vZ2xlIFRlc3Qgd2hlbiAtLWd0ZXN0X3JlcGVhdCBpcyBub3Qgc3BlY2lm
aWVkLgpAQCAtMjAxLDkgKzE4NSw3IEBAIHZvaWQgVGVzdFJlcGVhdFdpdGhGaWx0ZXJGb3JTdWNj
ZXNzZnVsVGVzdHMoaW50IHJlcGVhdCkgewogICBHVEVTVF9DSEVDS19JTlRfRVFfKDAsIGdfc2hv
dWxkX2ZhaWxfY291bnQpOwogICBHVEVTVF9DSEVDS19JTlRfRVFfKHJlcGVhdCwgZ19zaG91bGRf
cGFzc19jb3VudCk7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0LCBnX2RlYXRoX3Rlc3Rf
Y291bnQpOwotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiAgIEdURVNUX0NIRUNLX0lOVF9FUV8o
cmVwZWF0ICoga051bWJlck9mUGFyYW1UZXN0cywgZ19wYXJhbV90ZXN0X2NvdW50KTsKLSNlbmRp
ZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIH0KIAogLy8gVGVzdHMgdXNpbmcgLS1ndGVzdF9y
ZXBlYXQgd2hlbiAtLWd0ZXN0X2ZpbHRlciBzcGVjaWZpZXMgYSBzZXQgb2YKQEAgLTIxOSwxNSAr
MjAxLDE0IEBAIHZvaWQgVGVzdFJlcGVhdFdpdGhGaWx0ZXJGb3JGYWlsZWRUZXN0cyhpbnQgcmVw
ZWF0KSB7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0LCBnX3Nob3VsZF9mYWlsX2NvdW50
KTsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXygwLCBnX3Nob3VsZF9wYXNzX2NvdW50KTsKICAgR1RF
U1RfQ0hFQ0tfSU5UX0VRXygwLCBnX2RlYXRoX3Rlc3RfY291bnQpOwotI2lmIEdURVNUX0hBU19Q
QVJBTV9URVNUCiAgIEdURVNUX0NIRUNLX0lOVF9FUV8oMCwgZ19wYXJhbV90ZXN0X2NvdW50KTsK
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIH0KIAogfSAgLy8gbmFtZXNwYWNlCiAK
IGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewogICB0ZXN0aW5nOjpJbml0R29vZ2xl
VGVzdCgmYXJnYywgYXJndik7CisKICAgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50
KG5ldyBNeUVudmlyb25tZW50KTsKIAogICBUZXN0UmVwZWF0VW5zcGVjaWZpZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0LnB5
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3QucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDMwZDAzMDNkMTkzNTU0YTVmZDBiOWIxZjZhNTFl
ZjdkMDlmMzA2MTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3QucHkKKysr
IC9kZXYvbnVsbApAQCAtMSwzMjUgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0j
IENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0jCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotCi0iIiJWZXJpZmllcyB0aGF0IHRlc3Qgc2h1ZmZsaW5nIHdvcmtzLiIiIgot
Ci1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQg
b3MKLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi0KLSMgQ29tbWFuZCB0byBydW4gdGhlIGd0ZXN0
X3NodWZmbGVfdGVzdF8gcHJvZ3JhbS4KLUNPTU1BTkQgPSBndGVzdF90ZXN0X3V0aWxzLkdldFRl
c3RFeGVjdXRhYmxlUGF0aCgnZ3Rlc3Rfc2h1ZmZsZV90ZXN0XycpCi0KLSMgVGhlIGVudmlyb25t
ZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBzaGFyZGluZy4KLVRPVEFMX1NIQVJEU19FTlZfVkFSID0g
J0dURVNUX1RPVEFMX1NIQVJEUycKLVNIQVJEX0lOREVYX0VOVl9WQVIgPSAnR1RFU1RfU0hBUkRf
SU5ERVgnCi0KLVRFU1RfRklMVEVSID0gJ0EqLkE6QSouQjpDKicKLQotQUxMX1RFU1RTID0gW10K
LUFDVElWRV9URVNUUyA9IFtdCi1GSUxURVJFRF9URVNUUyA9IFtdCi1TSEFSREVEX1RFU1RTID0g
W10KLQotU0hVRkZMRURfQUxMX1RFU1RTID0gW10KLVNIVUZGTEVEX0FDVElWRV9URVNUUyA9IFtd
Ci1TSFVGRkxFRF9GSUxURVJFRF9URVNUUyA9IFtdCi1TSFVGRkxFRF9TSEFSREVEX1RFU1RTID0g
W10KLQotCi1kZWYgQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKCk6Ci0gIHJldHVybiAnLS1ndGVz
dF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cycKLQotCi1kZWYgRmlsdGVyRmxhZyh0ZXN0X2ZpbHRl
cik6Ci0gIHJldHVybiAnLS1ndGVzdF9maWx0ZXI9JXMnICUgKHRlc3RfZmlsdGVyLCkKLQotCi1k
ZWYgUmVwZWF0RmxhZyhuKToKLSAgcmV0dXJuICctLWd0ZXN0X3JlcGVhdD0lcycgJSAobiwpCi0K
LQotZGVmIFNodWZmbGVGbGFnKCk6Ci0gIHJldHVybiAnLS1ndGVzdF9zaHVmZmxlJwotCi0KLWRl
ZiBSYW5kb21TZWVkRmxhZyhuKToKLSAgcmV0dXJuICctLWd0ZXN0X3JhbmRvbV9zZWVkPSVzJyAl
IChuLCkKLQotCi1kZWYgUnVuQW5kUmV0dXJuT3V0cHV0KGV4dHJhX2VudiwgYXJncyk6Ci0gICIi
IlJ1bnMgdGhlIHRlc3QgcHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgb3V0cHV0LiIiIgotCi0gIGVu
dmlyb25fY29weSA9IG9zLmVudmlyb24uY29weSgpCi0gIGVudmlyb25fY29weS51cGRhdGUoZXh0
cmFfZW52KQotCi0gIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0NPTU1BTkRd
ICsgYXJncywgZW52PWVudmlyb25fY29weSkub3V0cHV0Ci0KLQotZGVmIEdldFRlc3RzRm9yQWxs
SXRlcmF0aW9ucyhleHRyYV9lbnYsIGFyZ3MpOgotICAiIiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0g
YW5kIHJldHVybnMgYSBsaXN0IG9mIHRlc3QgbGlzdHMuCi0KLSAgQXJnczoKLSAgICBleHRyYV9l
bnY6IGEgbWFwIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHRoZWlyIHZhbHVlcwotICAg
IGFyZ3M6IGNvbW1hbmQgbGluZSBmbGFncyB0byBwYXNzIHRvIGd0ZXN0X3NodWZmbGVfdGVzdF8K
LQotICBSZXR1cm5zOgotICAgIEEgbGlzdCB3aGVyZSB0aGUgaS10aCBlbGVtZW50IGlzIHRoZSBs
aXN0IG9mIHRlc3RzIHJ1biBpbiB0aGUgaS10aAotICAgIHRlc3QgaXRlcmF0aW9uLgotICAiIiIK
LQotICB0ZXN0X2l0ZXJhdGlvbnMgPSBbXQotICBmb3IgbGluZSBpbiBSdW5BbmRSZXR1cm5PdXRw
dXQoZXh0cmFfZW52LCBhcmdzKS5zcGxpdCgnXG4nKToKLSAgICBpZiBsaW5lLnN0YXJ0c3dpdGgo
Jy0tLS0nKToKLSAgICAgIHRlc3RzID0gW10KLSAgICAgIHRlc3RfaXRlcmF0aW9ucy5hcHBlbmQo
dGVzdHMpCi0gICAgZWxpZiBsaW5lLnN0cmlwKCk6Ci0gICAgICB0ZXN0cy5hcHBlbmQobGluZS5z
dHJpcCgpKSAgIyAnVGVzdENhc2VOYW1lLlRlc3ROYW1lJwotCi0gIHJldHVybiB0ZXN0X2l0ZXJh
dGlvbnMKLQotCi1kZWYgR2V0VGVzdENhc2VzKHRlc3RzKToKLSAgIiIiUmV0dXJucyBhIGxpc3Qg
b2YgdGVzdCBjYXNlcyBpbiB0aGUgZ2l2ZW4gZnVsbCB0ZXN0IG5hbWVzLgotCi0gIEFyZ3M6Ci0g
ICAgdGVzdHM6IGEgbGlzdCBvZiBmdWxsIHRlc3QgbmFtZXMKLQotICBSZXR1cm5zOgotICAgIEEg
bGlzdCBvZiB0ZXN0IGNhc2VzIGZyb20gJ3Rlc3RzJywgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIu
Ci0gICAgQ29uc2VjdXRpdmUgZHVwbGljYXRlcyBhcmUgcmVtb3ZlZC4KLSAgIiIiCi0KLSAgdGVz
dF9jYXNlcyA9IFtdCi0gIGZvciB0ZXN0IGluIHRlc3RzOgotICAgIHRlc3RfY2FzZSA9IHRlc3Qu
c3BsaXQoJy4nKVswXQotICAgIGlmIG5vdCB0ZXN0X2Nhc2UgaW4gdGVzdF9jYXNlczoKLSAgICAg
IHRlc3RfY2FzZXMuYXBwZW5kKHRlc3RfY2FzZSkKLQotICByZXR1cm4gdGVzdF9jYXNlcwotCi0K
LWRlZiBDYWxjdWxhdGVUZXN0TGlzdHMoKToKLSAgIiIiQ2FsY3VsYXRlcyB0aGUgbGlzdCBvZiB0
ZXN0cyBydW4gdW5kZXIgZGlmZmVyZW50IGZsYWdzLiIiIgotCi0gIGlmIG5vdCBBTExfVEVTVFM6
Ci0gICAgQUxMX1RFU1RTLmV4dGVuZCgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25z
KHt9LCBbQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKCldKVswXSkKLQotICBpZiBub3QgQUNUSVZF
X1RFU1RTOgotICAgIEFDVElWRV9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25z
KHt9LCBbXSlbMF0pCi0KLSAgaWYgbm90IEZJTFRFUkVEX1RFU1RTOgotICAgIEZJTFRFUkVEX1RF
U1RTLmV4dGVuZCgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHt9LCBbRmlsdGVy
RmxhZyhURVNUX0ZJTFRFUildKVswXSkKLQotICBpZiBub3QgU0hBUkRFRF9URVNUUzoKLSAgICBT
SEFSREVEX1RFU1RTLmV4dGVuZCgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtU
T1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcxJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbXSlbMF0pCi0KLSAgaWYgbm90IFNIVUZGTEVEX0FMTF9URVNUUzoKLSAgICBTSFVG
RkxFRF9BTExfVEVTVFMuZXh0ZW5kKEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKLSAgICAgICAg
e30sIFtBbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcoKSwgU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2Vl
ZEZsYWcoMSldKVswXSkKLQotICBpZiBub3QgU0hVRkZMRURfQUNUSVZFX1RFU1RTOgotICAgIFNI
VUZGTEVEX0FDVElWRV9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAotICAg
ICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSlbMF0pCi0KLSAgaWYg
bm90IFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTOgotICAgIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RT
LmV4dGVuZChHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBbU2h1ZmZsZUZs
YWcoKSwgUmFuZG9tU2VlZEZsYWcoMSksIEZpbHRlckZsYWcoVEVTVF9GSUxURVIpXSlbMF0pCi0K
LSAgaWYgbm90IFNIVUZGTEVEX1NIQVJERURfVEVTVFM6Ci0gICAgU0hVRkZMRURfU0hBUkRFRF9U
RVNUUy5leHRlbmQoCi0gICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7VE9UQUxfU0hB
UkRTX0VOVl9WQVI6ICczJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFS
RF9JTkRFWF9FTlZfVkFSOiAnMSd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
W1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSlbMF0pCi0KLQotY2xhc3MgR1Rlc3RT
aHVmZmxlVW5pdFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gICIiIlRlc3RzIHRl
c3Qgc2h1ZmZsaW5nLiIiIgotCi0gIGRlZiBzZXRVcChzZWxmKToKLSAgICBDYWxjdWxhdGVUZXN0
TGlzdHMoKQotCi0gIGRlZiB0ZXN0U2h1ZmZsZVByZXNlcnZlc051bWJlck9mVGVzdHMoc2VsZik6
Ci0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oQUxMX1RFU1RTKSwgbGVuKFNIVUZGTEVEX0FMTF9U
RVNUUykpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oQUNUSVZFX1RFU1RTKSwgbGVuKFNIVUZG
TEVEX0FDVElWRV9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oRklMVEVSRURfVEVT
VFMpLCBsZW4oU0hVRkZMRURfRklMVEVSRURfVEVTVFMpKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKFNIQVJERURfVEVTVFMpLCBsZW4oU0hVRkZMRURfU0hBUkRFRF9URVNUUykpCi0KLSAgZGVm
IHRlc3RTaHVmZmxlQ2hhbmdlc1Rlc3RPcmRlcihzZWxmKToKLSAgICBzZWxmLmFzc2VydF8oU0hV
RkZMRURfQUxMX1RFU1RTICE9IEFMTF9URVNUUywgU0hVRkZMRURfQUxMX1RFU1RTKQotICAgIHNl
bGYuYXNzZXJ0XyhTSFVGRkxFRF9BQ1RJVkVfVEVTVFMgIT0gQUNUSVZFX1RFU1RTLCBTSFVGRkxF
RF9BQ1RJVkVfVEVTVFMpCi0gICAgc2VsZi5hc3NlcnRfKFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RT
ICE9IEZJTFRFUkVEX1RFU1RTLAotICAgICAgICAgICAgICAgICBTSFVGRkxFRF9GSUxURVJFRF9U
RVNUUykKLSAgICBzZWxmLmFzc2VydF8oU0hVRkZMRURfU0hBUkRFRF9URVNUUyAhPSBTSEFSREVE
X1RFU1RTLAotICAgICAgICAgICAgICAgICBTSFVGRkxFRF9TSEFSREVEX1RFU1RTKQotCi0gIGRl
ZiB0ZXN0U2h1ZmZsZUNoYW5nZXNUZXN0Q2FzZU9yZGVyKHNlbGYpOgotICAgIHNlbGYuYXNzZXJ0
XyhHZXRUZXN0Q2FzZXMoU0hVRkZMRURfQUxMX1RFU1RTKSAhPSBHZXRUZXN0Q2FzZXMoQUxMX1RF
U1RTKSwKLSAgICAgICAgICAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX0FMTF9URVNUUykp
Ci0gICAgc2VsZi5hc3NlcnRfKAotICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfQUNUSVZF
X1RFU1RTKSAhPSBHZXRUZXN0Q2FzZXMoQUNUSVZFX1RFU1RTKSwKLSAgICAgICAgR2V0VGVzdENh
c2VzKFNIVUZGTEVEX0FDVElWRV9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRfKAotICAgICAgICBH
ZXRUZXN0Q2FzZXMoU0hVRkZMRURfRklMVEVSRURfVEVTVFMpICE9IEdldFRlc3RDYXNlcyhGSUxU
RVJFRF9URVNUUyksCi0gICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9GSUxURVJFRF9URVNU
UykpCi0gICAgc2VsZi5hc3NlcnRfKAotICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfU0hB
UkRFRF9URVNUUykgIT0gR2V0VGVzdENhc2VzKFNIQVJERURfVEVTVFMpLAotICAgICAgICBHZXRU
ZXN0Q2FzZXMoU0hVRkZMRURfU0hBUkRFRF9URVNUUykpCi0KLSAgZGVmIHRlc3RTaHVmZmxlRG9l
c05vdFJlcGVhdFRlc3Qoc2VsZik6Ci0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUxMX1RFU1RT
OgotICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9BTExfVEVTVFMuY291bnQodGVz
dCksCi0gICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAl
ICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTOgotICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMuY291bnQodGVzdCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0ZXN0
LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFM6Ci0gICAgICBzZWxm
LmFzc2VydEVxdWFsKDEsIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTLmNvdW50KHRlc3QpLAotICAg
ICAgICAgICAgICAgICAgICAgICAnJXMgYXBwZWFycyBtb3JlIHRoYW4gb25jZScgJSAodGVzdCwp
KQotICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFM6Ci0gICAgICBzZWxmLmFz
c2VydEVxdWFsKDEsIFNIVUZGTEVEX1NIQVJERURfVEVTVFMuY291bnQodGVzdCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0ZXN0LCkpCi0K
LSAgZGVmIHRlc3RTaHVmZmxlRG9lc05vdENyZWF0ZU5ld1Rlc3Qoc2VsZik6Ci0gICAgZm9yIHRl
c3QgaW4gU0hVRkZMRURfQUxMX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gQUxM
X1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3Qg
aW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gQUNU
SVZFX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCi0gICAgZm9yIHRl
c3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8odGVzdCBp
biBGSUxURVJFRF9URVNUUywgJyVzIGlzIGFuIGludmFsaWQgdGVzdCcgJSAodGVzdCwpKQotICAg
IGZvciB0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8o
dGVzdCBpbiBTSEFSREVEX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkp
Ci0KLSAgZGVmIHRlc3RTaHVmZmxlSW5jbHVkZXNBbGxUZXN0cyhzZWxmKToKLSAgICBmb3IgdGVz
dCBpbiBBTExfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVGRkxFRF9BTExf
VEVTVFMsICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gQUNUSVZF
X1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RT
LCAnJXMgaXMgbWlzc2luZycgJSAodGVzdCwpKQotICAgIGZvciB0ZXN0IGluIEZJTFRFUkVEX1RF
U1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFMs
ICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hBUkRFRF9URVNU
UzoKLSAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFMsICcl
cyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCi0KLSAgZGVmIHRlc3RTaHVmZmxlTGVhdmVzRGVhdGhU
ZXN0c0F0RnJvbnQoc2VsZik6Ci0gICAgbm9uX2RlYXRoX3Rlc3RfZm91bmQgPSBGYWxzZQotICAg
IGZvciB0ZXN0IGluIFNIVUZGTEVEX0FDVElWRV9URVNUUzoKLSAgICAgIGlmICdEZWF0aFRlc3Qu
JyBpbiB0ZXN0OgotICAgICAgICBzZWxmLmFzc2VydF8obm90IG5vbl9kZWF0aF90ZXN0X2ZvdW5k
LAotICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgYWZ0ZXIgYSBub24tZGVhdGggdGVz
dCcgJSAodGVzdCwpKQotICAgICAgZWxzZToKLSAgICAgICAgbm9uX2RlYXRoX3Rlc3RfZm91bmQg
PSBUcnVlCi0KLSAgZGVmIF9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUoc2VsZiwgdGVz
dHMpOgotICAgIHRlc3RfY2FzZXMgPSBbXQotICAgIGZvciB0ZXN0IGluIHRlc3RzOgotICAgICAg
W3Rlc3RfY2FzZSwgX10gPSB0ZXN0LnNwbGl0KCcuJykKLSAgICAgIGlmIHRlc3RfY2FzZXMgYW5k
IHRlc3RfY2FzZXNbLTFdICE9IHRlc3RfY2FzZToKLSAgICAgICAgdGVzdF9jYXNlcy5hcHBlbmQo
dGVzdF9jYXNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHRlc3RfY2FzZXMuY291bnQo
dGVzdF9jYXNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnVGVzdCBjYXNlICVzIGlzIG5v
dCBncm91cGVkIHRvZ2V0aGVyIGluICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgKHRl
c3RfY2FzZSwgdGVzdHMpKQotCi0gIGRlZiB0ZXN0U2h1ZmZsZURvZXNOb3RJbnRlcmxlYXZlVGVz
dENhc2VzKHNlbGYpOgotICAgIHNlbGYuX1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50ZXJsZWF2ZShT
SFVGRkxFRF9BTExfVEVTVFMpCi0gICAgc2VsZi5fVmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRlcmxl
YXZlKFNIVUZGTEVEX0FDVElWRV9URVNUUykKLSAgICBzZWxmLl9WZXJpZnlUZXN0Q2FzZXNEb05v
dEludGVybGVhdmUoU0hVRkZMRURfRklMVEVSRURfVEVTVFMpCi0gICAgc2VsZi5fVmVyaWZ5VGVz
dENhc2VzRG9Ob3RJbnRlcmxlYXZlKFNIVUZGTEVEX1NIQVJERURfVEVTVFMpCi0KLSAgZGVmIHRl
c3RTaHVmZmxlUmVzdG9yZXNPcmRlckFmdGVyRWFjaEl0ZXJhdGlvbihzZWxmKToKLSAgICAjIEdl
dCB0aGUgdGVzdCBsaXN0cyBpbiBhbGwgMyBpdGVyYXRpb25zLCB1c2luZyByYW5kb20gc2VlZCAx
LCAyLAotICAgICMgYW5kIDMgcmVzcGVjdGl2ZWx5LiAgR29vZ2xlIFRlc3QgcGlja3MgYSBkaWZm
ZXJlbnQgc2VlZCBpbiBlYWNoCi0gICAgIyBpdGVyYXRpb24sIGFuZCB0aGlzIHRlc3QgZGVwZW5k
cyBvbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbgotICAgICMgcGlja2luZyBzdWNjZXNzaXZl
IG51bWJlcnMuICBUaGlzIGRlcGVuZGVuY3kgaXMgbm90IGlkZWFsLCBidXQKLSAgICAjIG1ha2Vz
IHRoZSB0ZXN0IG11Y2ggZWFzaWVyIHRvIHdyaXRlLgotICAgIFt0ZXN0c19pbl9pdGVyYXRpb24x
LCB0ZXN0c19pbl9pdGVyYXRpb24yLCB0ZXN0c19pbl9pdGVyYXRpb24zXSA9ICgKLSAgICAgICAg
R2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAotICAgICAgICAgICAge30sIFtTaHVmZmxlRmxhZygp
LCBSYW5kb21TZWVkRmxhZygxKSwgUmVwZWF0RmxhZygzKV0pKQotCi0gICAgIyBNYWtlIHN1cmUg
cnVubmluZyB0aGUgdGVzdHMgd2l0aCByYW5kb20gc2VlZCAxIGdldHMgdGhlIHNhbWUKLSAgICAj
IG9yZGVyIGFzIGluIGl0ZXJhdGlvbiAxIGFib3ZlLgotICAgIFt0ZXN0c193aXRoX3NlZWQxXSA9
IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKLSAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBS
YW5kb21TZWVkRmxhZygxKV0pCi0gICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0c19pbl9pdGVyYXRp
b24xLCB0ZXN0c193aXRoX3NlZWQxKQotCi0gICAgIyBNYWtlIHN1cmUgcnVubmluZyB0aGUgdGVz
dHMgd2l0aCByYW5kb20gc2VlZCAyIGdldHMgdGhlIHNhbWUKLSAgICAjIG9yZGVyIGFzIGluIGl0
ZXJhdGlvbiAyIGFib3ZlLiAgU3VjY2VzcyBtZWFucyB0aGF0IEdvb2dsZSBUZXN0Ci0gICAgIyBj
b3JyZWN0bHkgcmVzdG9yZXMgdGhlIHRlc3Qgb3JkZXIgYmVmb3JlIHJlLXNodWZmbGluZyBhdCB0
aGUKLSAgICAjIGJlZ2lubmluZyBvZiBpdGVyYXRpb24gMi4KLSAgICBbdGVzdHNfd2l0aF9zZWVk
Ml0gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBbU2h1ZmZsZUZsYWco
KSwgUmFuZG9tU2VlZEZsYWcoMildKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHNfaW5faXRl
cmF0aW9uMiwgdGVzdHNfd2l0aF9zZWVkMikKLQotICAgICMgTWFrZSBzdXJlIHJ1bm5pbmcgdGhl
IHRlc3RzIHdpdGggcmFuZG9tIHNlZWQgMyBnZXRzIHRoZSBzYW1lCi0gICAgIyBvcmRlciBhcyBp
biBpdGVyYXRpb24gMyBhYm92ZS4gIFN1Y2Nlc3MgbWVhbnMgdGhhdCBHb29nbGUgVGVzdAotICAg
ICMgY29ycmVjdGx5IHJlc3RvcmVzIHRoZSB0ZXN0IG9yZGVyIGJlZm9yZSByZS1zaHVmZmxpbmcg
YXQgdGhlCi0gICAgIyBiZWdpbm5pbmcgb2YgaXRlcmF0aW9uIDMuCi0gICAgW3Rlc3RzX3dpdGhf
c2VlZDNdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAotICAgICAgICB7fSwgW1NodWZmbGVG
bGFnKCksIFJhbmRvbVNlZWRGbGFnKDMpXSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzX2lu
X2l0ZXJhdGlvbjMsIHRlc3RzX3dpdGhfc2VlZDMpCi0KLSAgZGVmIHRlc3RTaHVmZmxlR2VuZXJh
dGVzTmV3T3JkZXJJbkVhY2hJdGVyYXRpb24oc2VsZik6Ci0gICAgW3Rlc3RzX2luX2l0ZXJhdGlv
bjEsIHRlc3RzX2luX2l0ZXJhdGlvbjIsIHRlc3RzX2luX2l0ZXJhdGlvbjNdID0gKAotICAgICAg
ICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgICAgICB7fSwgW1NodWZmbGVGbGFn
KCksIFJhbmRvbVNlZWRGbGFnKDEpLCBSZXBlYXRGbGFnKDMpXSkpCi0KLSAgICBzZWxmLmFzc2Vy
dF8odGVzdHNfaW5faXRlcmF0aW9uMSAhPSB0ZXN0c19pbl9pdGVyYXRpb24yLAotICAgICAgICAg
ICAgICAgICB0ZXN0c19pbl9pdGVyYXRpb24xKQotICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0c19pbl9p
dGVyYXRpb24xICE9IHRlc3RzX2luX2l0ZXJhdGlvbjMsCi0gICAgICAgICAgICAgICAgIHRlc3Rz
X2luX2l0ZXJhdGlvbjEpCi0gICAgc2VsZi5hc3NlcnRfKHRlc3RzX2luX2l0ZXJhdGlvbjIgIT0g
dGVzdHNfaW5faXRlcmF0aW9uMywKLSAgICAgICAgICAgICAgICAgdGVzdHNfaW5faXRlcmF0aW9u
MikKLQotICBkZWYgdGVzdFNodWZmbGVTaGFyZGVkVGVzdHNQcmVzZXJ2ZXNQYXJ0aXRpb24oc2Vs
Zik6Ci0gICAgIyBJZiB3ZSBydW4gTSB0ZXN0cyBvbiBOIHNoYXJkcywgdGhlIHNhbWUgTSB0ZXN0
cyBzaG91bGQgYmUgcnVuIGluCi0gICAgIyB0b3RhbCwgcmVnYXJkbGVzcyBvZiB0aGUgcmFuZG9t
IHNlZWRzIHVzZWQgYnkgdGhlIHNoYXJkcy4KLSAgICBbdGVzdHMxXSA9IEdldFRlc3RzRm9yQWxs
SXRlcmF0aW9ucyh7VE9UQUxfU0hBUkRTX0VOVl9WQVI6ICczJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU0hBUkRfSU5ERVhfRU5WX1ZBUjogJzAnfSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9t
U2VlZEZsYWcoMSldKQotICAgIFt0ZXN0czJdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtU
T1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMSd9LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygyMCld
KQotICAgIFt0ZXN0czNdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9TSEFSRFNf
RU5WX1ZBUjogJzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
SEFSRF9JTkRFWF9FTlZfVkFSOiAnMid9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygyNSldKQotICAgIHNvcnRl
ZF9zaGFyZGVkX3Rlc3RzID0gdGVzdHMxICsgdGVzdHMyICsgdGVzdHMzCi0gICAgc29ydGVkX3No
YXJkZWRfdGVzdHMuc29ydCgpCi0gICAgc29ydGVkX2FjdGl2ZV90ZXN0cyA9IFtdCi0gICAgc29y
dGVkX2FjdGl2ZV90ZXN0cy5leHRlbmQoQUNUSVZFX1RFU1RTKQotICAgIHNvcnRlZF9hY3RpdmVf
dGVzdHMuc29ydCgpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWRfYWN0aXZlX3Rlc3RzLCBz
b3J0ZWRfc2hhcmRlZF90ZXN0cykKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rl
c3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NTNlY2Y3NzcwYTE0MTE3NjY4YjRhZGVhNmZiNmY1MDI2NjcxN2RlNy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBA
QAotLy8gQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0v
LyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gVmVyaWZpZXMgdGhhdCB0
ZXN0IHNodWZmbGluZyB3b3Jrcy4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLW5hbWVz
cGFjZSB7Ci0KLXVzaW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lcjsKLXVzaW5n
IDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6Ok1lc3NhZ2U7Ci11
c2luZyA6OnRlc3Rpbmc6OlRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVy
czsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdEluZm87Ci11c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0
OwotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOwotdXNpbmcgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6c2NvcGVkX3B0cjsKLQotLy8gVGhlIHRlc3QgbWV0aG9kcyBhcmUgZW1wdHksIGFz
IHRoZSBzb2xlIHB1cnBvc2Ugb2YgdGhpcyBwcm9ncmFtIGlzCi0vLyB0byBwcmludCB0aGUgdGVz
dCBuYW1lcyBiZWZvcmUvYWZ0ZXIgc2h1ZmZsaW5nLgotCi1jbGFzcyBBIDogcHVibGljIFRlc3Qg
e307Ci1URVNUX0YoQSwgQSkge30KLVRFU1RfRihBLCBCKSB7fQotCi1URVNUKEFEZWF0aFRlc3Qs
IEEpIHt9Ci1URVNUKEFEZWF0aFRlc3QsIEIpIHt9Ci1URVNUKEFEZWF0aFRlc3QsIEMpIHt9Ci0K
LVRFU1QoQiwgQSkge30KLVRFU1QoQiwgQikge30KLVRFU1QoQiwgQykge30KLVRFU1QoQiwgRElT
QUJMRURfRCkge30KLVRFU1QoQiwgRElTQUJMRURfRSkge30KLQotVEVTVChCRGVhdGhUZXN0LCBB
KSB7fQotVEVTVChCRGVhdGhUZXN0LCBCKSB7fQotCi1URVNUKEMsIEEpIHt9Ci1URVNUKEMsIEIp
IHt9Ci1URVNUKEMsIEMpIHt9Ci1URVNUKEMsIERJU0FCTEVEX0QpIHt9Ci0KLVRFU1QoQ0RlYXRo
VGVzdCwgQSkge30KLQotVEVTVChESVNBQkxFRF9ELCBBKSB7fQotVEVTVChESVNBQkxFRF9ELCBE
SVNBQkxFRF9CKSB7fQotCi0vLyBUaGlzIHByaW50ZXIgcHJpbnRzIHRoZSBmdWxsIHRlc3QgbmFt
ZXMgb25seSwgc3RhcnRpbmcgZWFjaCB0ZXN0Ci0vLyBpdGVyYXRpb24gd2l0aCBhICItLS0tIiBt
YXJrZXIuCi1jbGFzcyBUZXN0TmFtZVByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0
ZW5lciB7Ci0gcHVibGljOgotICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uU3RhcnQoY29u
c3QgVW5pdFRlc3QmIC8qIHVuaXRfdGVzdCAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCAvKiBpdGVyYXRpb24gKi8pIHsKLSAgICBwcmludGYoIi0tLS1cbiIpOwot
ICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2lu
Zm8pIHsKLSAgICBwcmludGYoIiVzLiVzXG4iLCB0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwg
dGVzdF9pbmZvLm5hbWUoKSk7Ci0gIH0KLX07Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1pbnQgbWFp
bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgSW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3Yp
OwotCi0gIC8vIFJlcGxhY2VzIHRoZSBkZWZhdWx0IHByaW50ZXIgd2l0aCBUZXN0TmFtZVByaW50
ZXIsIHdoaWNoIHByaW50cwotICAvLyB0aGUgdGVzdCBuYW1lIG9ubHkuCi0gIFRlc3RFdmVudExp
c3RlbmVycyYgbGlzdGVuZXJzID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygp
OwotICBkZWxldGUgbGlzdGVuZXJzLlJlbGVhc2UobGlzdGVuZXJzLmRlZmF1bHRfcmVzdWx0X3By
aW50ZXIoKSk7Ci0gIGxpc3RlbmVycy5BcHBlbmQobmV3IFRlc3ROYW1lUHJpbnRlcik7Ci0KLSAg
cmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYwppbmRleCBkZTkxZTgwMGY1YTEz
ODI5OTlmYzIwMWY1Y2YzY2UwNDY0Y2FhMWNlLi4xZDk0YWM2YjNhZDlmOWY3ZGJhZGJmYjJiZjc0
OWI4MjcxNTYwZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X3NvbGVfaGVhZGVyX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF9zb2xlX2hlYWRlcl90ZXN0LmNjCkBAIC0yNiwxMyArMjYsMTIgQEAKIC8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IG1o
ZXVsZUBnb29nbGUuY29tIChNYXJrdXMgSGV1bGUpCisKIC8vCiAvLyBUaGlzIHRlc3QgdmVyaWZp
ZXMgdGhhdCBpdCdzIHBvc3NpYmxlIHRvIHVzZSBHb29nbGUgVGVzdCBieSBpbmNsdWRpbmcKIC8v
IHRoZSBndGVzdC5oIGhlYWRlciBmaWxlIGFsb25lLgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2UgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3N0cmVzc190ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zdHJlc3NfdGVzdC5jYwppbmRleCBmNWFm
NzhjYzZkM2YzOTVhMDBkNGQxY2U4NTk5ZmE1ZjFkZmE3NjI2Li45NWFkYTM5YzMzN2QwZDRlY2U2
ZmY1YjMyMzJkZTk2YzNkNTk4NmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X3N0cmVzc190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3Rfc3RyZXNzX3Rlc3QuY2MKQEAgLTI2LDIzICsyNiwxNiBAQAogLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2Fu
QGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUZXN0cyB0aGF0IFNDT1BFRF9UUkFD
RSgpIGFuZCB2YXJpb3VzIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgY2FuIGJlCiAvLyB1c2VkIGlu
IGEgbGFyZ2UgbnVtYmVyIG9mIHRocmVhZHMgY29uY3VycmVudGx5LgogCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCi0jaW5jbHVkZSA8aW9zdHJl
YW0+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0vLyBXZSBtdXN0IGRlZmluZSB0aGlzIG1hY3JvIGlu
IG9yZGVyIHRvICNpbmNsdWRlCi0vLyBndGVzdC1pbnRlcm5hbC1pbmwuaC4gIFRoaXMgaXMgaG93
IEdvb2dsZSBUZXN0IHByZXZlbnRzIGEgdXNlciBmcm9tCi0vLyBhY2NpZGVudGFsbHkgZGVwZW5k
aW5nIG9uIGl0cyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4KLSNkZWZpbmUgR1RFU1RfSU1QTEVN
RU5UQVRJT05fIDEKICNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYg
R1RFU1RfSU1QTEVNRU5UQVRJT05fCiAKICNpZiBHVEVTVF9JU19USFJFQURTQUZFCiAKQEAgLTUw
LDcgKzQzLDYgQEAgbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIHsKIAogdXNpbmcgaW50
ZXJuYWw6Ok5vdGlmaWNhdGlvbjsKLXVzaW5nIGludGVybmFsOjpTdHJpbmc7CiB1c2luZyBpbnRl
cm5hbDo6VGVzdFByb3BlcnR5S2V5SXM7CiB1c2luZyBpbnRlcm5hbDo6VGhyZWFkV2l0aFBhcmFt
OwogdXNpbmcgaW50ZXJuYWw6OnNjb3BlZF9wdHI7CkBAIC02MiwxMyArNTQsMTMgQEAgdXNpbmcg
aW50ZXJuYWw6OnNjb3BlZF9wdHI7CiAvLyBIb3cgbWFueSB0aHJlYWRzIHRvIGNyZWF0ZT8KIGNv
bnN0IGludCBrVGhyZWFkQ291bnQgPSA1MDsKIAotU3RyaW5nIElkVG9LZXkoaW50IGlkLCBjb25z
dCBjaGFyKiBzdWZmaXgpIHsKK3N0ZDo6c3RyaW5nIElkVG9LZXkoaW50IGlkLCBjb25zdCBjaGFy
KiBzdWZmaXgpIHsKICAgTWVzc2FnZSBrZXk7CiAgIGtleSA8PCAia2V5XyIgPDwgaWQgPDwgIl8i
IDw8IHN1ZmZpeDsKICAgcmV0dXJuIGtleS5HZXRTdHJpbmcoKTsKIH0KIAotU3RyaW5nIElkVG9T
dHJpbmcoaW50IGlkKSB7CitzdGQ6OnN0cmluZyBJZFRvU3RyaW5nKGludCBpZCkgewogICBNZXNz
YWdlIGlkX21lc3NhZ2U7CiAgIGlkX21lc3NhZ2UgPDwgaWQ7CiAgIHJldHVybiBpZF9tZXNzYWdl
LkdldFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF90ZXN0X21hY3JvX3N0YWNrX2Zvb3RwcmludF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0X21hY3JvX3N0YWNrX2Zvb3RwcmludF90ZXN0LmNjCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE0OGRiMDUwMTJjYzMwZTBlZGY0YTEzNTRmZjM5MmM5MmQwMDBiZjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RfbWFj
cm9fc3RhY2tfZm9vdHByaW50X3Rlc3QuY2MKQEAgLTAsMCArMSw4OSBAQAorLy8gQ29weXJpZ2h0
IDIwMTMsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24u
CisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gRWFjaCBURVNUKCkgZXhw
YW5kcyB0byBzb21lIHN0YXRpYyByZWdpc3RyYXRpb24gbG9naWMuICBHQ0MgcHV0cyBhbGwKKy8v
IHN1Y2ggc3RhdGljIGluaXRpYWxpemF0aW9uIGxvZ2ljIGZvciBhIHRyYW5zbGF0aW9uIHVuaXQg
aW4gYSBjb21tb24sCisvLyBpbnRlcm5hbCBmdW5jdGlvbi4gIFNpbmNlIEdvb2dsZSdzIGJ1aWxk
IHN5c3RlbSByZXN0cmljdHMgaG93IG11Y2gKKy8vIHN0YWNrIHNwYWNlIGEgZnVuY3Rpb24gY2Fu
IHVzZSwgdGhlcmUncyBhIGxpbWl0IG9uIGhvdyBtYW55IFRFU1QoKXMKKy8vIG9uZSBjYW4gcHV0
IGluIGEgc2luZ2xlIEMrKyB0ZXN0IGZpbGUuICBUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IGEgbGFy
Z2UKKy8vIG51bWJlciBvZiBURVNUKClzIGNhbiBiZSBkZWZpbmVkIGluIHRoZSBzYW1lIHRyYW5z
bGF0aW9uIHVuaXQuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisvLyBUaGlzIG1hY3Jv
IGRlZmluZXMgMTAgZHVtbXkgdGVzdHMuCisjZGVmaW5lIFRFTl9URVNUU18odGVzdF9jYXNlX25h
bWUpIFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDApIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2Vf
bmFtZSwgVDEpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDIpIHt9IFwKKyAgVEVTVCh0
ZXN0X2Nhc2VfbmFtZSwgVDMpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDQpIHt9IFwK
KyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDUpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwg
VDYpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDcpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nh
c2VfbmFtZSwgVDgpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDkpIHt9CisKKy8vIFRo
aXMgbWFjcm8gZGVmaW5lcyAxMDAgZHVtbXkgdGVzdHMuCisjZGVmaW5lIEhVTkRSRURfVEVTVFNf
KHRlc3RfY2FzZV9uYW1lX3ByZWZpeCkgXAorICBURU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3By
ZWZpeCAjIyAwKSBcCisgIFRFTl9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDEpIFwK
KyAgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgMikgXAorICBURU5fVEVTVFNf
KHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyAzKSBcCisgIFRFTl9URVNUU18odGVzdF9jYXNlX25h
bWVfcHJlZml4ICMjIDQpIFwKKyAgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMg
NSkgXAorICBURU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyA2KSBcCisgIFRFTl9U
RVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDcpIFwKKyAgVEVOX1RFU1RTXyh0ZXN0X2Nh
c2VfbmFtZV9wcmVmaXggIyMgOCkgXAorICBURU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZp
eCAjIyA5KQorCisvLyBUaGlzIG1hY3JvIGRlZmluZXMgMTAwMCBkdW1teSB0ZXN0cy4KKyNkZWZp
bmUgVEhPVVNBTkRfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCkgXAorICBIVU5EUkVEX1RF
U1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgMCkgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0
X2Nhc2VfbmFtZV9wcmVmaXggIyMgMSkgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFt
ZV9wcmVmaXggIyMgMikgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXgg
IyMgMykgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgNCkgXAor
ICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgNSkgXAorICBIVU5EUkVE
X1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgNikgXAorICBIVU5EUkVEX1RFU1RTXyh0
ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgNykgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2Vf
bmFtZV9wcmVmaXggIyMgOCkgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVm
aXggIyMgOSkKKworLy8gRW5zdXJlcyB0aGF0IHdlIGNhbiBkZWZpbmUgMTAwMCBURVNUKClzIGlu
IHRoZSBzYW1lIHRyYW5zbGF0aW9uCisvLyB1bml0LgorVEhPVVNBTkRfVEVTVFNfKFQpCisKK2lu
dCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVz
dCgmYXJnYywgYXJndik7CisKKyAgLy8gV2UgZG9uJ3QgYWN0dWFsbHkgbmVlZCB0byBydW4gdGhl
IGR1bW15IHRlc3RzIC0gdGhlIHB1cnBvc2UgaXMgdG8KKyAgLy8gZW5zdXJlIHRoYXQgdGhleSBj
b21waWxlLgorICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfdGVzdF91dGlscy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfdGVzdF91dGlscy5weQppbmRleCBlMGY1OTczZTdlYTZmODFlNjY2YzMxMjFjM2M4
ZmE4NDNmNDM0ZjYxLi40M2NiYThmNGNkNjFkZmZmM2ExYTUyMTAxYmVkM2U3MzRhNWUxYjU0IDEw
MDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RfdXRpbHMu
cHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5
CkBAIC0xLDUgKzEsMyBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCiAjIENvcHlyaWdodCAy
MDA2LCBHb29nbGUgSW5jLgogIyBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwpAQCAtMjksMjAgKzI3
LDIxIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0iIiJVbml0IHRlc3QgdXRp
bGl0aWVzIGZvciBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrLiIiIgorIiIiVW5pdCB0ZXN0
IHV0aWxpdGllcyBmb3IgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yay4i
IiIKKyMgU3VwcHJlc3NlcyB0aGUgJ0ltcG9ydCBub3QgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZScg
bGludCBjb21wbGFpbnQuCisjIHB5bGludDogZGlzYWJsZS1tc2c9QzYyMDQKKworaW1wb3J0IG9z
CitpbXBvcnQgc3lzCiAKLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdh
biknCitJU19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCitJU19DWUdXSU4gPSBvcy5uYW1lID09
ICdwb3NpeCcgYW5kICdDWUdXSU4nIGluIG9zLnVuYW1lKClbMF0KIAogaW1wb3J0IGF0ZXhpdAot
aW1wb3J0IG9zCiBpbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKLWlt
cG9ydCB1bml0dGVzdAotX3Rlc3RfbW9kdWxlID0gdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdCBh
cyBfdGVzdF9tb2R1bGUKIAotIyBTdXBwcmVzc2VzIHRoZSAnSW1wb3J0IG5vdCBhdCB0aGUgdG9w
IG9mIHRoZSBmaWxlJyBsaW50IGNvbXBsYWludC4KLSMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjIw
NAogdHJ5OgogICBpbXBvcnQgc3VicHJvY2VzcwogICBfU1VCUFJPQ0VTU19NT0RVTEVfQVZBSUxB
QkxFID0gVHJ1ZQpAQCAtNTMsMTggKzUyLDMwIEBAIGV4Y2VwdDoKIAogR1RFU1RfT1VUUFVUX1ZB
Ul9OQU1FID0gJ0dURVNUX09VVFBVVCcKIAotSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250Jwot
SVNfQ1lHV0lOID0gb3MubmFtZSA9PSAncG9zaXgnIGFuZCAnQ1lHV0lOJyBpbiBvcy51bmFtZSgp
WzBdCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3Igc3BlY2lmeWluZyB0aGUgcGF0aCB0
byB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZS4KK1BSRU1BVFVSRV9FWElUX0ZJTEVfRU5WX1ZBUiA9
ICdURVNUX1BSRU1BVFVSRV9FWElUX0ZJTEUnCisKK2Vudmlyb24gPSBvcy5lbnZpcm9uLmNvcHko
KQorCisKK2RlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgorICAiIiJTZXRzL3Vuc2V0cyBh
biBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIGdpdmVuIHZhbHVlLiIiIgorCisgIGlmIHZhbHVl
IGlzIG5vdCBOb25lOgorICAgIGVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQorICBlbGlmIGVudl92
YXIgaW4gZW52aXJvbjoKKyAgICBkZWwgZW52aXJvbltlbnZfdmFyXQorCiAKICMgSGVyZSB3ZSBl
eHBvc2UgYSBjbGFzcyBmcm9tIGEgcGFydGljdWxhciBtb2R1bGUsIGRlcGVuZGluZyBvbiB0aGUK
ICMgZW52aXJvbm1lbnQuIFRoZSBjb21tZW50IHN1cHByZXNzZXMgdGhlICdJbnZhbGlkIHZhcmlh
YmxlIG5hbWUnIGxpbnQKICMgY29tcGxhaW50LgotVGVzdENhc2UgPSBfdGVzdF9tb2R1bGUuVGVz
dENhc2UgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwOQorVGVzdENhc2UgPSBfdGVzdF9tb2R1
bGUuVGVzdENhc2UgICMgcHlsaW50OiBkaXNhYmxlPUM2NDA5CiAKICMgSW5pdGlhbGx5IG1hcHMg
YSBmbGFnIHRvIGl0cyBkZWZhdWx0IHZhbHVlLiBBZnRlcgogIyBfUGFyc2VBbmRTdHJpcEdUZXN0
RmxhZ3MoKSBpcyBjYWxsZWQsIG1hcHMgYSBmbGFnIHRvIGl0cyBhY3R1YWwgdmFsdWUuCi1fZmxh
Z19tYXAgPSB7J2d0ZXN0X3NvdXJjZV9kaXInOiBvcy5wYXRoLmRpcm5hbWUoc3lzLmFyZ3ZbMF0p
LAotICAgICAgICAgICAgICdndGVzdF9idWlsZF9kaXInOiBvcy5wYXRoLmRpcm5hbWUoc3lzLmFy
Z3ZbMF0pfQorX2ZsYWdfbWFwID0geydzb3VyY2VfZGlyJzogb3MucGF0aC5kaXJuYW1lKHN5cy5h
cmd2WzBdKSwKKyAgICAgICAgICAgICAnYnVpbGRfZGlyJzogb3MucGF0aC5kaXJuYW1lKHN5cy5h
cmd2WzBdKX0KIF9ndGVzdF9mbGFnc19hcmVfcGFyc2VkID0gRmFsc2UKIAogCkBAIC03Myw3ICs4
NCw3IEBAIGRlZiBfUGFyc2VBbmRTdHJpcEdUZXN0RmxhZ3MoYXJndik6CiAKICAgIyBTdXBwcmVz
c2VzIHRoZSBsaW50IGNvbXBsYWludCBhYm91dCBhIGdsb2JhbCB2YXJpYWJsZSBzaW5jZSB3ZSBu
ZWVkIGl0CiAgICMgaGVyZSB0byBtYWludGFpbiBtb2R1bGUtd2lkZSBzdGF0ZS4KLSAgZ2xvYmFs
IF9ndGVzdF9mbGFnc19hcmVfcGFyc2VkICAjIHB5bGludDogZGlzYWJsZS1tc2c9VzA2MDMKKyAg
Z2xvYmFsIF9ndGVzdF9mbGFnc19hcmVfcGFyc2VkICAjIHB5bGludDogZGlzYWJsZT1XMDYwMwog
ICBpZiBfZ3Rlc3RfZmxhZ3NfYXJlX3BhcnNlZDoKICAgICByZXR1cm4KIApAQCAtMTExLDEzICsx
MjIsMTMgQEAgZGVmIEdldEZsYWcoZmxhZyk6CiBkZWYgR2V0U291cmNlRGlyKCk6CiAgICIiIlJl
dHVybnMgdGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgLnB5IGZp
bGVzIGFyZS4iIiIKIAotICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKEdldEZsYWcoJ2d0ZXN0X3Nv
dXJjZV9kaXInKSkKKyAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChHZXRGbGFnKCdzb3VyY2VfZGly
JykpCiAKIAogZGVmIEdldEJ1aWxkRGlyKCk6CiAgICIiIlJldHVybnMgdGhlIGFic29sdXRlIHBh
dGggb2YgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgdGVzdCBiaW5hcmllcyBhcmUuIiIiCiAKLSAg
cmV0dXJuIG9zLnBhdGguYWJzcGF0aChHZXRGbGFnKCdndGVzdF9idWlsZF9kaXInKSkKKyAgcmV0
dXJuIG9zLnBhdGguYWJzcGF0aChHZXRGbGFnKCdidWlsZF9kaXInKSkKIAogCiBfdGVtcF9kaXIg
PSBOb25lCkBAIC0xMzAsOCArMTQxLDYgQEAgYXRleGl0LnJlZ2lzdGVyKF9SZW1vdmVUZW1wRGly
KQogCiAKIGRlZiBHZXRUZW1wRGlyKCk6Ci0gICIiIlJldHVybnMgYSBkaXJlY3RvcnkgZm9yIHRl
bXBvcmFyeSBmaWxlcy4iIiIKLQogICBnbG9iYWwgX3RlbXBfZGlyCiAgIGlmIG5vdCBfdGVtcF9k
aXI6CiAgICAgX3RlbXBfZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCkBAIC0xNjAsMTMgKzE2OSw5
IEBAIGRlZiBHZXRUZXN0RXhlY3V0YWJsZVBhdGgoZXhlY3V0YWJsZV9uYW1lLCBidWlsZF9kaXI9
Tm9uZSk6CiAKICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgpOgogICAgIG1lc3NhZ2UgPSAo
Ci0gICAgICAgICdVbmFibGUgdG8gZmluZCB0aGUgdGVzdCBiaW5hcnkuIFBsZWFzZSBtYWtlIHN1
cmUgdG8gcHJvdmlkZSBwYXRoXG4nCi0gICAgICAgICd0byB0aGUgYmluYXJ5IHZpYSB0aGUgLS1n
dGVzdF9idWlsZF9kaXIgZmxhZyBvciB0aGUgR1RFU1RfQlVJTERfRElSXG4nCi0gICAgICAgICdl
bnZpcm9ubWVudCB2YXJpYWJsZS4gRm9yIGNvbnZlbmllbnQgdXNlLCBpbnZva2UgdGhpcyBzY3Jp
cHQgdmlhXG4nCi0gICAgICAgICdta190ZXN0LnB5LlxuJwotICAgICAgICAjIFRPRE8odmxhZGxA
Z29vZ2xlLmNvbSk6IGNoYW5nZSBta190ZXN0LnB5IHRvIHRlc3QucHkgYWZ0ZXIgcmVuYW1pbmcK
LSAgICAgICAgIyB0aGUgZmlsZS4KLSAgICAgICAgJ1BsZWFzZSBydW4gbWtfdGVzdC5weSAtaCBm
b3IgaGVscC4nKQorICAgICAgICAnVW5hYmxlIHRvIGZpbmQgdGhlIHRlc3QgYmluYXJ5ICIlcyIu
IFBsZWFzZSBtYWtlIHN1cmUgdG8gcHJvdmlkZVxuJworICAgICAgICAnYSBwYXRoIHRvIHRoZSBi
aW5hcnkgdmlhIHRoZSAtLWJ1aWxkX2RpciBmbGFnIG9yIHRoZSBCVUlMRF9ESVJcbicKKyAgICAg
ICAgJ2Vudmlyb25tZW50IHZhcmlhYmxlLicgJSBwYXRoKQogICAgIHByaW50ID4+IHN5cy5zdGRl
cnIsIG1lc3NhZ2UKICAgICBzeXMuZXhpdCgxKQogCkBAIC0yMzQsNyArMjM5LDcgQEAgY2xhc3Mg
U3VicHJvY2VzczoKICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNvbW1hbmQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3RkZXJy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPXdvcmtpbmdfZGlyLCB1bml2ZXJzYWxf
bmV3bGluZXM9VHJ1ZSwgZW52PWVudikKLSAgICAgICMgY29tbXVuaWNhdGUgcmV0dXJucyBhIHR1
cGxlIHdpdGggdGhlIGZpbGUgb2JlY3QgZm9yIHRoZSBjaGlsZCdzCisgICAgICAjIGNvbW11bmlj
YXRlIHJldHVybnMgYSB0dXBsZSB3aXRoIHRoZSBmaWxlIG9iamVjdCBmb3IgdGhlIGNoaWxkJ3MK
ICAgICAgICMgb3V0cHV0LgogICAgICAgc2VsZi5vdXRwdXQgPSBwLmNvbW11bmljYXRlKClbMF0K
ICAgICAgIHNlbGYuX3JldHVybl9jb2RlID0gcC5yZXR1cm5jb2RlCkBAIC0yNDUsNyArMjUwLDcg
QEAgY2xhc3MgU3VicHJvY2VzczoKICAgICAgICAgIyBDaGFuZ2VzIG1hZGUgYnkgb3MuZW52aXJv
bi5jbGVhciBhcmUgbm90IGluaGVyaXRhYmxlIGJ5IGNoaWxkCiAgICAgICAgICMgcHJvY2Vzc2Vz
IHVudGlsIFB5dGhvbiAyLjYuIFRvIHByb2R1Y2UgaW5oZXJpdGFibGUgY2hhbmdlcyB3ZSBoYXZl
CiAgICAgICAgICMgdG8gZGVsZXRlIGVudmlyb25tZW50IGl0ZW1zIHdpdGggdGhlIGRlbCBzdGF0
ZW1lbnQuCi0gICAgICAgIGZvciBrZXkgaW4gZGVzdDoKKyAgICAgICAgZm9yIGtleSBpbiBkZXN0
LmtleXMoKToKICAgICAgICAgICBkZWwgZGVzdFtrZXldCiAgICAgICAgIGRlc3QudXBkYXRlKHNy
YykKIApAQCAtMzAxLDcgKzMwNiw3IEBAIGRlZiBNYWluKCk6CiAgIF9QYXJzZUFuZFN0cmlwR1Rl
c3RGbGFncyhzeXMuYXJndikKICAgIyBUaGUgdGVzdGVkIGJpbmFyaWVzIHNob3VsZCBub3QgYmUg
d3JpdGluZyBYTUwgb3V0cHV0IGZpbGVzIHVubGVzcyB0aGUKICAgIyBzY3JpcHQgZXhwbGljaXRs
eSBpbnN0cnVjdHMgdGhlbSB0by4KLSAgIyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBNb3ZlIHRo
aXMgaW50byBTdWJwcm9jZXNzIHdoZW4gd2UgaW1wbGVtZW50CisgICMgRklYTUU6IE1vdmUgdGhp
cyBpbnRvIFN1YnByb2Nlc3Mgd2hlbiB3ZSBpbXBsZW1lbnQKICAgIyBwYXNzaW5nIGVudmlyb25t
ZW50IGludG8gaXQgYXMgYSBwYXJhbWV0ZXIuCiAgIGlmIEdURVNUX09VVFBVVF9WQVJfTkFNRSBp
biBvcy5lbnZpcm9uOgogICAgIGRlbCBvcy5lbnZpcm9uW0dURVNUX09VVFBVVF9WQVJfTkFNRV0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGVzdGJyaWRn
ZV90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0YnJpZGdl
X3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODdmZmFkNzNkNDAwNjUyOThmMzA1MDBkZTgyNGQ4MDhiNjU3
MWQ4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfdGVzdGJyaWRnZV90ZXN0LnB5CkBAIC0wLDAgKzEsNjMgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorIworIyBDb3B5cmlnaHQgMjAxOCBHb29nbGUgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3QgdXNlcyBm
aWx0ZXIgcHJvdmlkZWQgdmlhIHRlc3RicmlkZ2UuIiIiCisKK2ltcG9ydCBvcworCitpbXBvcnQg
Z3Rlc3RfdGVzdF91dGlscworCitiaW5hcnlfbmFtZSA9ICdndGVzdF90ZXN0YnJpZGdlX3Rlc3Rf
JworQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKGJpbmFy
eV9uYW1lKQorVEVTVEJSSURHRV9OQU1FID0gJ1RFU1RCUklER0VfVEVTVF9PTkxZJworCisKK2Rl
ZiBBc3NlcnQoY29uZGl0aW9uKToKKyAgaWYgbm90IGNvbmRpdGlvbjoKKyAgICByYWlzZSBBc3Nl
cnRpb25FcnJvcgorCisKK2NsYXNzIEdUZXN0VGVzdEZpbHRlclRlc3QoZ3Rlc3RfdGVzdF91dGls
cy5UZXN0Q2FzZSk6CisKKyAgZGVmIHRlc3RUZXN0RXhlY3V0aW9uSXNGaWx0ZXJlZChzZWxmKToK
KyAgICAiIiJUZXN0cyB0aGF0IHRoZSB0ZXN0IGZpbHRlciBpcyBwaWNrZWQgdXAgZnJvbSB0aGUg
dGVzdGJyaWRnZSBlbnYgdmFyLiIiIgorICAgIHN1YnByb2Nlc3NfZW52ID0gb3MuZW52aXJvbi5j
b3B5KCkKKworICAgIHN1YnByb2Nlc3NfZW52W1RFU1RCUklER0VfTkFNRV0gPSAnKi5UZXN0VGhh
dFN1Y2NlZWRzJworICAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoQ09NTUFORCwg
ZW52PXN1YnByb2Nlc3NfZW52KQorCisgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwgcC5leGl0X2Nv
ZGUpCisKKyAgICBBc3NlcnQoJ2ZpbHRlciA9ICouVGVzdFRoYXRTdWNjZWVkcycgaW4gcC5vdXRw
dXQpCisgICAgQXNzZXJ0KCdbICAgICAgIE9LIF0gVGVzdEZpbHRlclRlc3QuVGVzdFRoYXRTdWNj
ZWVkcycgaW4gcC5vdXRwdXQpCisgICAgQXNzZXJ0KCdbICBQQVNTRUQgIF0gMSB0ZXN0LicgaW4g
cC5vdXRwdXQpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rlc3RfdGVzdF91
dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfdGVzdGJyaWRnZV90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfdGVzdGJyaWRnZV90ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDYxN2IyMDllMTBhOWQxNzk4MzY4
ZTI2NDY1YWFhNjI3MTVmMGVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF90ZXN0YnJpZGdlX3Rlc3RfLmNjCkBAIC0wLDAgKzEsNDMgQEAKKy8v
IENvcHlyaWdodCAyMDE4LCBHb29nbGUgTExDLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
CisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlz
dHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
Ly8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBUaGlzIHBy
b2dyYW0gaXMgbWVhbnQgdG8gYmUgcnVuIGJ5IGd0ZXN0X3Rlc3RfZmlsdGVyX3Rlc3QucHkuICBE
byBub3QgcnVuCisvLyBpdCBkaXJlY3RseS4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisK
Ky8vIFRoZXNlIHRlc3RzIGFyZSB1c2VkIHRvIGRldGVjdCBpZiBmaWx0ZXJpbmcgaXMgd29ya2lu
Zy4gT25seQorLy8gJ1Rlc3RUaGF0U3VjY2VlZHMnIHNob3VsZCBldmVyIHJ1bi4KKworVEVTVChU
ZXN0RmlsdGVyVGVzdCwgVGVzdFRoYXRTdWNjZWVkcykge30KKworVEVTVChUZXN0RmlsdGVyVGVz
dCwgVGVzdFRoYXRGYWlscykgeworICBBU1NFUlRfVFJVRShmYWxzZSkgPDwgIlRoaXMgdGVzdCBz
aG91bGQgbmV2ZXIgYmUgcnVuLiI7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfZXhfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9leF90ZXN0LmNjCmluZGV4
IDhiZjlkYzkwNWI1ZmY4M2FjMDIxMDQxMzQzNTgwZjkwOTc1NDgzY2UuLjkzZjU5ZDQ5Y2ZkYjk0
NzRkY2E2MjJjMTdhMmM5NjRhYjBiZDU4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9leF90ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9leF90ZXN0LmNj
CkBAIC0yNiwxMiArMjYsMTEgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4p
CisKIAogLy8gVGVzdHMgR29vZ2xlIFRlc3QncyB0aHJvdy1vbi1mYWlsdXJlIG1vZGUgd2l0aCBl
eGNlcHRpb25zIGVuYWJsZWQuCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdGRpby5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJvd19v
bl9mYWlsdXJlX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Ro
cm93X29uX2ZhaWx1cmVfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNTY3
OGZmZWFmNmZhNjFlZjdkY2I0NWI4ZjM0YTAzNDExOTFhYmY2ZS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE3MSAr
MCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2ds
ZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJU
ZXN0cyBHb29nbGUgVGVzdCdzIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRoIGV4Y2VwdGlvbnMg
ZGlzYWJsZWQuCi0KLVRoaXMgc2NyaXB0IGludm9rZXMgZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90
ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aAotR29vZ2xlIFRlc3QpIHdpdGggZGlmZmVyZW50
IGVudmlyb25tZW50cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdzLgotIiIiCi0KLV9fYXV0aG9yX18g
PSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBvcwotaW1wb3J0IGd0
ZXN0X3Rlc3RfdXRpbHMKLQotCi0jIENvbnN0YW50cy4KLQotIyBUaGUgY29tbWFuZCBsaW5lIGZs
YWcgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLgotVEhS
T1dfT05fRkFJTFVSRSA9ICdndGVzdF90aHJvd19vbl9mYWlsdXJlJwotCi0jIFBhdGggdG8gdGhl
IGd0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8gcHJvZ3JhbSwgY29tcGlsZWQgd2l0aAotIyBl
eGNlcHRpb25zIGRpc2FibGVkLgotRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RF
eGVjdXRhYmxlUGF0aCgKLSAgICAnZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0XycpCi0KLQot
IyBVdGlsaXRpZXMuCi0KLQotZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6Ci0gICIiIlNl
dHMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSBnaXZlbiB2YWx1ZTsgdW5zZXRzIGl0IHdo
ZW4gdGhlCi0gIGdpdmVuIHZhbHVlIGlzIE5vbmUuCi0gICIiIgotCi0gIGVudl92YXIgPSBlbnZf
dmFyLnVwcGVyKCkKLSAgaWYgdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgb3MuZW52aXJvbltlbnZf
dmFyXSA9IHZhbHVlCi0gIGVsaWYgZW52X3ZhciBpbiBvcy5lbnZpcm9uOgotICAgIGRlbCBvcy5l
bnZpcm9uW2Vudl92YXJdCi0KLQotZGVmIFJ1bihjb21tYW5kKToKLSAgIiIiUnVucyBhIGNvbW1h
bmQ7IHJldHVybnMgVHJ1ZS9GYWxzZSBpZiBpdHMgZXhpdCBjb2RlIGlzL2lzbid0IDAuIiIiCi0K
LSAgcHJpbnQgJ1J1bm5pbmcgIiVzIi4gLiAuJyAlICcgJy5qb2luKGNvbW1hbmQpCi0gIHAgPSBn
dGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKLSAgcmV0dXJuIHAuZXhpdGVkIGFu
ZCBwLmV4aXRfY29kZSA9PSAwCi0KLQotIyBUaGUgdGVzdHMuICBUT0RPKHdhbkBnb29nbGUuY29t
KTogcmVmYWN0b3IgdGhlIGNsYXNzIHRvIHNoYXJlIGNvbW1vbgotIyBsb2dpYyB3aXRoIGNvZGUg
aW4gZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdC5weS4KLWNsYXNzIFRocm93T25GYWls
dXJlVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAgIiIiVGVzdHMgdGhlIHRocm93
LW9uLWZhaWx1cmUgbW9kZS4iIiIKLQotICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGVudl92YXJf
dmFsdWUsIGZsYWdfdmFsdWUsIHNob3VsZF9mYWlsKToKLSAgICAiIiJSdW5zIGd0ZXN0X3Rocm93
X29uX2ZhaWx1cmVfdGVzdF8gYW5kIHZlcmlmaWVzIHRoYXQgaXQgZG9lcwotICAgIChvciBkb2Vz
IG5vdCkgZXhpdCB3aXRoIGEgbm9uLXplcm8gY29kZS4KLQotICAgIEFyZ3M6Ci0gICAgICBlbnZf
dmFyX3ZhbHVlOiAgICB2YWx1ZSBvZiB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9u
bWVudAotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGU7IE5vbmUgaWYgdGhlIHZhcmlh
YmxlIHNob3VsZCBiZSB1bnNldC4KLSAgICAgIGZsYWdfdmFsdWU6ICAgICAgIHZhbHVlIG9mIHRo
ZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZzsKLSAgICAgICAgICAgICAgICAgICAgICAg
IE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgotICAgICAgc2hvdWxkX2Zh
aWw6ICAgICAgVHJ1ZSBpZmYgdGhlIHByb2dyYW0gaXMgZXhwZWN0ZWQgdG8gZmFpbC4KLSAgICAi
IiIKLQotICAgIFNldEVudlZhcihUSFJPV19PTl9GQUlMVVJFLCBlbnZfdmFyX3ZhbHVlKQotCi0g
ICAgaWYgZW52X3Zhcl92YWx1ZSBpcyBOb25lOgotICAgICAgZW52X3Zhcl92YWx1ZV9tc2cgPSAn
IGlzIG5vdCBzZXQnCi0gICAgZWxzZToKLSAgICAgIGVudl92YXJfdmFsdWVfbXNnID0gJz0nICsg
ZW52X3Zhcl92YWx1ZQotCi0gICAgaWYgZmxhZ192YWx1ZSBpcyBOb25lOgotICAgICAgZmxhZyA9
ICcnCi0gICAgZWxpZiBmbGFnX3ZhbHVlID09ICcwJzoKLSAgICAgIGZsYWcgPSAnLS0lcz0wJyAl
IFRIUk9XX09OX0ZBSUxVUkUKLSAgICBlbHNlOgotICAgICAgZmxhZyA9ICctLSVzJyAlIFRIUk9X
X09OX0ZBSUxVUkUKLQotICAgIGNvbW1hbmQgPSBbRVhFX1BBVEhdCi0gICAgaWYgZmxhZzoKLSAg
ICAgIGNvbW1hbmQuYXBwZW5kKGZsYWcpCi0KLSAgICBpZiBzaG91bGRfZmFpbDoKLSAgICAgIHNo
b3VsZF9vcl9ub3QgPSAnc2hvdWxkJwotICAgIGVsc2U6Ci0gICAgICBzaG91bGRfb3Jfbm90ID0g
J3Nob3VsZCBub3QnCi0KLSAgICBmYWlsZWQgPSBub3QgUnVuKGNvbW1hbmQpCi0KLSAgICBTZXRF
bnZWYXIoVEhST1dfT05fRkFJTFVSRSwgTm9uZSkKLQotICAgIG1zZyA9ICgnd2hlbiAlcyVzLCBh
biBhc3NlcnRpb24gZmFpbHVyZSBpbiAiJXMiICVzIGNhdXNlIGEgbm9uLXplcm8gJwotICAgICAg
ICAgICAnZXhpdCBjb2RlLicgJQotICAgICAgICAgICAoVEhST1dfT05fRkFJTFVSRSwgZW52X3Zh
cl92YWx1ZV9tc2csICcgJy5qb2luKGNvbW1hbmQpLAotICAgICAgICAgICAgc2hvdWxkX29yX25v
dCkpCi0gICAgc2VsZi5hc3NlcnRfKGZhaWxlZCA9PSBzaG91bGRfZmFpbCwgbXNnKQotCi0gIGRl
ZiB0ZXN0RGVmYXVsdEJlaGF2aW9yKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBv
ZiB0aGUgZGVmYXVsdCBtb2RlLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92
YWx1ZT1Ob25lLCBmbGFnX3ZhbHVlPU5vbmUsIHNob3VsZF9mYWlsPUZhbHNlKQotCi0gIGRlZiB0
ZXN0VGhyb3dPbkZhaWx1cmVFbnZWYXIoc2VsZik6Ci0gICAgIiIiVGVzdHMgdXNpbmcgdGhlIEdU
RVNUX1RIUk9XX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFyaWFibGUuIiIiCi0KLSAgICBzZWxm
LlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBm
bGFnX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9RmFsc2Up
Ci0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0gICAgICAgICAgICAg
ICAgICAgICAgZmxhZ192YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9m
YWlsPVRydWUpCi0KLSAgZGVmIHRlc3RUaHJvd09uRmFpbHVyZUZsYWcoc2VsZik6Ci0gICAgIiIi
VGVzdHMgdXNpbmcgdGhlIC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZSBmbGFnLiIiIgotCi0gICAg
c2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAg
ICAgIGZsYWdfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPUZh
bHNlKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKLSAgICAgICAg
ICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBzaG91
bGRfZmFpbD1UcnVlKQotCi0gIGRlZiB0ZXN0VGhyb3dPbkZhaWx1cmVGbGFnT3ZlcnJpZGVzRW52
VmFyKHNlbGYpOgotICAgICIiIlRlc3RzIHRoYXQgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlIG92
ZXJyaWRlcyBHVEVTVF9USFJPV19PTl9GQUlMVVJFLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJp
ZnkoZW52X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0n
MCcsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9RmFsc2UpCi0gICAgc2VsZi5S
dW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZmxh
Z192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9VHJ1ZSkKLSAg
ICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAg
ICAgICBmbGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1G
YWxzZSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAg
ICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBzaG91
bGRfZmFpbD1UcnVlKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rl
c3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDg4ZmJkNWE3NmRjOTIwNmY0YTAyOTUxNGI4NzZkYzAxNDFlMzZiZmEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3RfLmNjCisrKyAvZGV2
L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0v
LyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0v
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikK
LQotLy8gVGVzdHMgR29vZ2xlIFRlc3QncyB0aHJvdy1vbi1mYWlsdXJlIG1vZGUgd2l0aCBleGNl
cHRpb25zIGRpc2FibGVkLgotLy8KLS8vIFRoaXMgcHJvZ3JhbSBtdXN0IGJlIGNvbXBpbGVkIHdp
dGggZXhjZXB0aW9ucyBkaXNhYmxlZC4gIEl0IHdpbGwgYmUKLS8vIGludm9rZWQgYnkgZ3Rlc3Rf
dGhyb3dfb25fZmFpbHVyZV90ZXN0LnB5LCBhbmQgaXMgZXhwZWN0ZWQgdG8gZXhpdAotLy8gd2l0
aCBub24temVybyBpbiB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlIG9yIDAgb3RoZXJ3aXNlLgot
Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBh
cmd2KSB7Ci0gIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICAvLyBX
ZSB3YW50IHRvIGVuc3VyZSB0aGF0IHBlb3BsZSBjYW4gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlv
bnMgaW4KLSAgLy8gb3RoZXIgdGVzdGluZyBmcmFtZXdvcmtzLCBhcyBsb25nIGFzIHRoZXkgaW5p
dGlhbGl6ZSBHb29nbGUgVGVzdAotICAvLyBwcm9wZXJseSBhbmQgc2V0IHRoZSB0aHJvd24tb24t
ZmFpbHVyZSBtb2RlLiAgVGhlcmVmb3JlLCB3ZSBkb24ndAotICAvLyB1c2UgR29vZ2xlIFRlc3Qn
cyBjb25zdHJ1Y3RzIGZvciBkZWZpbmluZyBhbmQgcnVubmluZyB0ZXN0cwotICAvLyAoZS5nLiBU
RVNUIGFuZCBSVU5fQUxMX1RFU1RTKSBoZXJlLgotCi0gIC8vIEluIHRoZSB0aHJvdy1vbi1mYWls
dXJlIG1vZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLCB0aGlzCi0gIC8vIGFzc2VydGlvbiB3
aWxsIGNhdXNlIHRoZSBwcm9ncmFtIHRvIGV4aXQgd2l0aCBhIG5vbi16ZXJvIGNvZGUuCi0gIEVY
UEVDVF9FUSgyLCAzKTsKLQotICAvLyBXaGVuIG5vdCBpbiB0aGUgdGhyb3ctb24tZmFpbHVyZSBt
b2RlLCB0aGUgY29udHJvbCB3aWxsIHJlYWNoCi0gIC8vIGhlcmUuCi0gIHJldHVybiAwOwotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91bmluaXRpYWxp
emVkX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlh
bGl6ZWRfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNmFlNTdlZWVkYWZj
ZjA3NTA0ZGQ4ZDVkN2E4YjVhN2Y4MzgxM2YyNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Vu
aW5pdGlhbGl6ZWRfdGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLSMhL3Vz
ci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLSMgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0
OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlZlcmlmaWVzIHRoYXQg
R29vZ2xlIFRlc3Qgd2FybnMgdGhlIHVzZXIgd2hlbiBub3QgaW5pdGlhbGl6ZWQgcHJvcGVybHku
IiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWlt
cG9ydCBndGVzdF90ZXN0X3V0aWxzCi0KLQotQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0
VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF91bmluaXRpYWxpemVkX3Rlc3RfJykKLQotCi1kZWYg
QXNzZXJ0KGNvbmRpdGlvbik6Ci0gIGlmIG5vdCBjb25kaXRpb246Ci0gICAgcmFpc2UgQXNzZXJ0
aW9uRXJyb3IKLQotCi1kZWYgQXNzZXJ0RXEoZXhwZWN0ZWQsIGFjdHVhbCk6Ci0gIGlmIGV4cGVj
dGVkICE9IGFjdHVhbDoKLSAgICBwcmludCAnRXhwZWN0ZWQ6ICVzJyAlIChleHBlY3RlZCwpCi0g
ICAgcHJpbnQgJyAgQWN0dWFsOiAlcycgJSAoYWN0dWFsLCkKLSAgICByYWlzZSBBc3NlcnRpb25F
cnJvcgotCi0KLWRlZiBUZXN0RXhpdENvZGVBbmRPdXRwdXQoY29tbWFuZCk6Ci0gICIiIlJ1bnMg
dGhlIGdpdmVuIGNvbW1hbmQgYW5kIHZlcmlmaWVzIGl0cyBleGl0IGNvZGUgYW5kIG91dHB1dC4i
IiIKLQotICAjIFZlcmlmaWVzIHRoYXQgJ2NvbW1hbmQnIGV4aXRzIHdpdGggY29kZSAxLgotICBw
ID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCi0gIEFzc2VydChwLmV4aXRl
ZCkKLSAgQXNzZXJ0RXEoMSwgcC5leGl0X2NvZGUpCi0gIEFzc2VydCgnSW5pdEdvb2dsZVRlc3Qn
IGluIHAub3V0cHV0KQotCi0KLWNsYXNzIEdUZXN0VW5pbml0aWFsaXplZFRlc3QoZ3Rlc3RfdGVz
dF91dGlscy5UZXN0Q2FzZSk6Ci0gIGRlZiB0ZXN0RXhpdENvZGVBbmRPdXRwdXQoc2VsZik6Ci0g
ICAgVGVzdEV4aXRDb2RlQW5kT3V0cHV0KENPTU1BTkQpCi0KLQotaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0Xy5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0Xy5jYwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThiMmFhODFkZDU0ZDljNjQzYTU4ZGU1ZTQ0ZDZj
Y2I1MjBhNzc2NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdF8u
Y2MKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29v
Z2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhh
bnlvbmcgV2FuKQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotVEVTVChEdW1teVRlc3Qs
IER1bW15KSB7Ci0gIC8vIFRoaXMgdGVzdCBkb2Vzbid0IHZlcmlmeSBhbnl0aGluZy4gIFdlIGp1
c3QgbmVlZCBpdCB0byBjcmVhdGUgYQotICAvLyByZWFsaXN0aWMgc3RhZ2UgZm9yIHRlc3Rpbmcg
dGhlIGJlaGF2aW9yIG9mIEdvb2dsZSBUZXN0IHdoZW4KLSAgLy8gUlVOX0FMTF9URVNUUygpIGlz
IGNhbGxlZCB3aXRob3V0IHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCkgYmVpbmcKLSAgLy8gY2Fs
bGVkIGZpcnN0LgotfQotCi1pbnQgbWFpbigpIHsKLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsK
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pdHRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjCmlu
ZGV4IGExNGYwNjVhMmNjZDg2Mzc5YTAxNDlhMzNmYzU2NDVjMGVjOGIxODEuLmY3MjEzZmJmM2U1
ZTg3MjA4OWJmYjk4NTUxYWMzYmEzZTNhNjdiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF91bml0dGVzdC5jYwpAQCAtMjYsMTggKzI2LDE2IEBACiAvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCiAvLwogLy8gVGVzdHMgZm9yIEdvb2dsZSBU
ZXN0IGl0c2VsZi4gIFRoaXMgdmVyaWZpZXMgdGhhdCB0aGUgYmFzaWMgY29uc3RydWN0cyBvZgog
Ly8gR29vZ2xlIFRlc3Qgd29yay4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVk
ZSA8dmVjdG9yPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKLS8vIFZlcmlmaWVzIHRoYXQg
dGhlIGNvbW1hbmQgbGluZSBmbGFnIHZhcmlhYmxlcyBjYW4gYmUgYWNjZXNzZWQKLS8vIGluIGNv
ZGUgb25jZSA8Z3Rlc3QvZ3Rlc3QuaD4gaGFzIGJlZW4gI2luY2x1ZGVkLgotLy8gRG8gbm90IG1v
dmUgaXQgYWZ0ZXIgb3RoZXIgI2luY2x1ZGVzLgorLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29tbWFu
ZCBsaW5lIGZsYWcgdmFyaWFibGVzIGNhbiBiZSBhY2Nlc3NlZCBpbgorLy8gY29kZSBvbmNlICJn
dGVzdC5oIiBoYXMgYmVlbiAjaW5jbHVkZWQuCisvLyBEbyBub3QgbW92ZSBpdCBhZnRlciBvdGhl
ciBndGVzdCAjaW5jbHVkZXMuCiBURVNUKENvbW1hbmRMaW5lRmxhZ3NUZXN0LCBDYW5CZUFjY2Vz
c2VkSW5Db2RlT25jZUdUZXN0SElzSW5jbHVkZWQpIHsKICAgYm9vbCBkdW1teSA9IHRlc3Rpbmc6
OkdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpCiAgICAgICB8fCB0ZXN0aW5nOjpH
VEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpCkBAIC01MiwzMCArNTAsMTA1IEBAIFRFU1QoQ29t
bWFuZExpbmVGbGFnc1Rlc3QsIENhbkJlQWNjZXNzZWRJbkNvZGVPbmNlR1Rlc3RISXNJbmNsdWRl
ZCkgewogICAgICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyhzaG93X2ludGVybmFsX3N0YWNrX2Zy
YW1lcykKICAgICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcoc2h1ZmZsZSkKICAgICAgIHx8IHRl
c3Rpbmc6OkdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpID4gMAorICAgICAgfHwgdGVzdGlu
Zzo6R1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSAhPSAidW5rbm93biIKICAgICAgIHx8IHRl
c3Rpbmc6OkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSk7CiAgIEVYUEVDVF9UUlVFKGR1bW15
IHx8ICFkdW1teSk7ICAvLyBTdXBwcmVzc2VzIHdhcm5pbmcgdGhhdCBkdW1teSBpcyB1bnVzZWQu
CiB9CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGkuaD4KLQotLy8gSW5kaWNhdGVzIHRoYXQg
dGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVt
ZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0v
LyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmlj
ayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0
ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVN
RU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYg
R1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KICNpbmNsdWRlIDxsaW1pdHMuaD4gIC8vIEZvciBJTlRf
TUFYLgogI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUg
PHRpbWUuaD4KIAogI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSA8
b3N0cmVhbT4KKyNpZiBHVEVTVF9MQU5HX0NYWDExCisjaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4K
KyNlbmRpZiAgLy8gR1RFU1RfTEFOR19DWFgxMQorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3Bp
LmgiCisjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgogCiBuYW1lc3BhY2UgdGVz
dGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNV
TFRTXworCitjbGFzcyBTdHJlYW1pbmdMaXN0ZW5lclRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVi
bGljOgorICBjbGFzcyBGYWtlU29ja2V0V3JpdGVyIDogcHVibGljIFN0cmVhbWluZ0xpc3RlbmVy
OjpBYnN0cmFjdFNvY2tldFdyaXRlciB7CisgICBwdWJsaWM6CisgICAgLy8gU2VuZHMgYSBzdHJp
bmcgdG8gdGhlIHNvY2tldC4KKyAgICB2aXJ0dWFsIHZvaWQgU2VuZChjb25zdCBzdGQ6OnN0cmlu
ZyYgbWVzc2FnZSkgeyBvdXRwdXRfICs9IG1lc3NhZ2U7IH0KKworICAgIHN0ZDo6c3RyaW5nIG91
dHB1dF87CisgIH07CisKKyAgU3RyZWFtaW5nTGlzdGVuZXJUZXN0KCkKKyAgICAgIDogZmFrZV9z
b2NrX3dyaXRlcl8obmV3IEZha2VTb2NrZXRXcml0ZXIpLAorICAgICAgICBzdHJlYW1lcl8oZmFr
ZV9zb2NrX3dyaXRlcl8pLAorICAgICAgICB0ZXN0X2luZm9fb2JqXygiRm9vVGVzdCIsICJCYXIi
LCBOVUxMLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb24oX19GSUxF
X18sIF9fTElORV9fKSwgMCwgTlVMTCkge30KKworIHByb3RlY3RlZDoKKyAgc3RkOjpzdHJpbmcq
IG91dHB1dCgpIHsgcmV0dXJuICYoZmFrZV9zb2NrX3dyaXRlcl8tPm91dHB1dF8pOyB9CisKKyAg
RmFrZVNvY2tldFdyaXRlciogY29uc3QgZmFrZV9zb2NrX3dyaXRlcl87CisgIFN0cmVhbWluZ0xp
c3RlbmVyIHN0cmVhbWVyXzsKKyAgVW5pdFRlc3QgdW5pdF90ZXN0XzsKKyAgVGVzdEluZm8gdGVz
dF9pbmZvX29ial87ICAvLyBUaGUgbmFtZSB0ZXN0X2luZm9fIHdhcyB0YWtlbiBieSB0ZXN0aW5n
OjpUZXN0LgorfTsKKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25UZXN0UHJvZ3Jh
bUVuZCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdFByb2dyYW1FbmQo
dW5pdF90ZXN0Xyk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdFByb2dyYW1FbmQmcGFzc2VkPTFc
biIsICpvdXRwdXQoKSk7Cit9CisKK1RFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRlc3QsIE9uVGVz
dEl0ZXJhdGlvbkVuZCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdEl0
ZXJhdGlvbkVuZCh1bml0X3Rlc3RfLCA0Mik7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdEl0ZXJh
dGlvbkVuZCZwYXNzZWQ9MSZlbGFwc2VkX3RpbWU9MG1zXG4iLCAqb3V0cHV0KCkpOworfQorCitU
RVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RDYXNlU3RhcnQpIHsKKyAgKm91dHB1
dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RDYXNlU3RhcnQoVGVzdENhc2UoIkZvb1Rlc3Qi
LCAiQmFyIiwgTlVMTCwgTlVMTCkpOworICBFWFBFQ1RfRVEoImV2ZW50PVRlc3RDYXNlU3RhcnQm
bmFtZT1Gb29UZXN0XG4iLCAqb3V0cHV0KCkpOworfQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVu
ZXJUZXN0LCBPblRlc3RDYXNlRW5kKSB7CisgICpvdXRwdXQoKSA9ICIiOworICBzdHJlYW1lcl8u
T25UZXN0Q2FzZUVuZChUZXN0Q2FzZSgiRm9vVGVzdCIsICJCYXIiLCBOVUxMLCBOVUxMKSk7Cisg
IEVYUEVDVF9FUSgiZXZlbnQ9VGVzdENhc2VFbmQmcGFzc2VkPTEmZWxhcHNlZF90aW1lPTBtc1xu
IiwgKm91dHB1dCgpKTsKK30KKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25UZXN0
U3RhcnQpIHsKKyAgKm91dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RTdGFydCh0ZXN0
X2luZm9fb2JqXyk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdFN0YXJ0Jm5hbWU9QmFyXG4iLCAq
b3V0cHV0KCkpOworfQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RFbmQp
IHsKKyAgKm91dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RFbmQodGVzdF9pbmZvX29i
al8pOworICBFWFBFQ1RfRVEoImV2ZW50PVRlc3RFbmQmcGFzc2VkPTEmZWxhcHNlZF90aW1lPTBt
c1xuIiwgKm91dHB1dCgpKTsKK30KKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25U
ZXN0UGFydFJlc3VsdCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdFBh
cnRSZXN1bHQoVGVzdFBhcnRSZXN1bHQoCisgICAgICBUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFp
bHVyZSwgImZvby5jYyIsIDQyLCAiZmFpbGVkPVxuJiUiKSk7CisKKyAgLy8gTWV0YSBjaGFyYWN0
ZXJzIGluIHRoZSBmYWlsdXJlIG1lc3NhZ2Ugc2hvdWxkIGJlIHByb3Blcmx5IGVzY2FwZWQuCisg
IEVYUEVDVF9FUSgKKyAgICAgICJldmVudD1UZXN0UGFydFJlc3VsdCZmaWxlPWZvby5jYyZsaW5l
PTQyJm1lc3NhZ2U9ZmFpbGVkJTNEJTBBJTI2JTI1XG4iLAorICAgICAgKm91dHB1dCgpKTsKK30K
KworI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKIC8vIFByb3ZpZGVzIGFj
Y2VzcyB0byBvdGhlcndpc2UgcHJpdmF0ZSBwYXJ0cyBvZiB0aGUgVGVzdEV2ZW50TGlzdGVuZXJz
IGNsYXNzCiAvLyB0aGF0IGFyZSBuZWVkZWQgdG8gdGVzdCBpdC4KIGNsYXNzIFRlc3RFdmVudExp
c3RlbmVyc0FjY2Vzc29yIHsKQEAgLTEwMiw2ICsxNzUsMTggQEAgY2xhc3MgVGVzdEV2ZW50TGlz
dGVuZXJzQWNjZXNzb3IgewogICB9CiB9OwogCitjbGFzcyBVbml0VGVzdFJlY29yZFByb3BlcnR5
VGVzdEhlbHBlciA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIFVuaXRUZXN0UmVjb3Jk
UHJvcGVydHlUZXN0SGVscGVyKCkge30KKworICAvLyBGb3J3YXJkcyB0byBVbml0VGVzdDo6UmVj
b3JkUHJvcGVydHkoKSB0byBieXBhc3MgYWNjZXNzIGNvbnRyb2xzLgorICB2b2lkIFVuaXRUZXN0
UmVjb3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUp
IHsKKyAgICB1bml0X3Rlc3RfLlJlY29yZFByb3BlcnR5KGtleSwgdmFsdWUpOworICB9CisKKyAg
VW5pdFRlc3QgdW5pdF90ZXN0XzsKK307CisKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAg
Ly8gbmFtZXNwYWNlIHRlc3RpbmcKIApAQCAtMTEwLDYgKzE5NSw3IEBAIHVzaW5nIHRlc3Rpbmc6
OkFzc2VydGlvblJlc3VsdDsKIHVzaW5nIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3M7CiB1c2lu
ZyB0ZXN0aW5nOjpEb3VibGVMRTsKIHVzaW5nIHRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVu
ZXI7Cit1c2luZyB0ZXN0aW5nOjpFbnZpcm9ubWVudDsKIHVzaW5nIHRlc3Rpbmc6OkZsb2F0TEU7
CiB1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzKTsKIHVz
aW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSk7CkBAIC0xMjUsNiArMjEx
LDcgQEAgdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhyZXBlYXQpOwogdXNpbmcgdGVzdGluZzo6
R1RFU1RfRkxBRyhzaG93X2ludGVybmFsX3N0YWNrX2ZyYW1lcyk7CiB1c2luZyB0ZXN0aW5nOjpH
VEVTVF9GTEFHKHNodWZmbGUpOwogdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhzdGFja190cmFj
ZV9kZXB0aCk7Cit1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pOwog
dXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKIHVzaW5nIHRlc3Rp
bmc6OklzTm90U3Vic3RyaW5nOwogdXNpbmcgdGVzdGluZzo6SXNTdWJzdHJpbmc7CkBAIC0xMzIs
NTMgKzIxOSw3OCBAQCB1c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwogdXNpbmcgdGVzdGluZzo6U2Nv
cGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI7CiB1c2luZyB0ZXN0aW5nOjpTdGF0aWNBc3Nl
cnRUeXBlRXE7CiB1c2luZyB0ZXN0aW5nOjpUZXN0OwotdXNpbmcgdGVzdGluZzo6VGVzdEV2ZW50
TGlzdGVuZXJzOwogdXNpbmcgdGVzdGluZzo6VGVzdENhc2U7Cit1c2luZyB0ZXN0aW5nOjpUZXN0
RXZlbnRMaXN0ZW5lcnM7Cit1c2luZyB0ZXN0aW5nOjpUZXN0SW5mbzsKIHVzaW5nIHRlc3Rpbmc6
OlRlc3RQYXJ0UmVzdWx0OwogdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHRBcnJheTsKIHVz
aW5nIHRlc3Rpbmc6OlRlc3RQcm9wZXJ0eTsKIHVzaW5nIHRlc3Rpbmc6OlRlc3RSZXN1bHQ7Cit1
c2luZyB0ZXN0aW5nOjpUaW1lSW5NaWxsaXM7CiB1c2luZyB0ZXN0aW5nOjpVbml0VGVzdDsKLXVz
aW5nIHRlc3Rpbmc6OmtNYXhTdGFja1RyYWNlRGVwdGg7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6QWRkUmVmZXJlbmNlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlOwog
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWU7CiB1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6QXBwZW5kVXNlck1lc3NhZ2U7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QXJyYXlB
d2FyZUZpbmQ7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QXJyYXlFcTsKIHVzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpDb2RlUG9pbnRUb1V0Zjg7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6
Q29tcGlsZUFzc2VydFR5cGVzRXF1YWw7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q29weUFy
cmF5OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkNvdW50SWY7CiB1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6RXFGYWlsdXJlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZsb2F0aW5nUG9p
bnQ7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRz
OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZvckVhY2g7Cit1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6Rm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDE7Cit1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6Rm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzOwogdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OkdUZXN0RmxhZ1NhdmVyOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldEN1cnJl
bnRPc1N0YWNrVHJhY2VFeGNlcHRUb3A7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0RWxl
bWVudE9yOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldE5leHRSYW5kb21TZWVkOwogdXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldFJhbmRvbVNlZWRGcm9tRmxhZzsKIHVzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpHZXRUZXN0VHlwZUlkOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6Okdl
dFRpbWVJbk1pbGxpczsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRUeXBlSWQ7CiB1c2lu
ZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsOwordXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJ
bnQzMjsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJbnQzMkZyb21FbnZPckRpZTsKK3VzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjpJc0FQcm90b2NvbE1lc3NhZ2U7Cit1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6SXNDb250YWluZXI7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SXNDb250YWlu
ZXJUZXN0OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OklzTm90Q29udGFpbmVyOwordXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6Ok5hdGl2ZUFycmF5OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
Ok9zU3RhY2tUcmFjZUdldHRlcjsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpPc1N0YWNrVHJh
Y2VHZXR0ZXJJbnRlcmZhY2U7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UGFyc2VJbnQzMkZs
YWc7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVsYXRpb25Ub1NvdXJjZUNvcHk7Cit1c2lu
ZyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZTsKK3VzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpSZW1vdmVDb25zdDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpS
ZW1vdmVSZWZlcmVuY2U7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxkUnVuVGVzdE9u
U2hhcmQ7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxkU2hhcmQ7CiB1c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6U2hvdWxkVXNlQ29sb3I7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6
U2h1ZmZsZTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaHVmZmxlUmFuZ2U7Cit1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6U2tpcFByZWZpeDsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpT
dHJlYW1hYmxlVG9TdHJpbmc7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOwogdXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OlRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOwogdXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OlRlc3RSZXN1bHRBY2Nlc3NvcjsKIHVzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpVSW50MzI7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdFRlc3RJbXBsOwog
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OldpZGVTdHJpbmdUb1V0Zjg7Cit1c2luZyB0ZXN0aW5n
OjppbnRlcm5hbDo6ZWRpdF9kaXN0YW5jZTo6Q2FsY3VsYXRlT3B0aW1hbEVkaXRzOwordXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OmVkaXRfZGlzdGFuY2U6OkNyZWF0ZVVuaWZpZWREaWZmOwordXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OmVkaXRfZGlzdGFuY2U6OkVkaXRUeXBlOwogdXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OmtNYXhSYW5kb21TZWVkOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OmtUZXN0VHlwZUlkSW5Hb29nbGVUZXN0OwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OnNjb3Bl
ZF9wdHI7Cit1c2luZyB0ZXN0aW5nOjprTWF4U3RhY2tUcmFjZURlcHRoOwogCi0jaWYgR1RFU1Rf
SEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9O
CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q2FwdHVyZVN0ZG91dDsKIHVzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpHZXRDYXB0dXJlZFN0ZG91dDsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVB
TV9SRURJUkVDVElPTl8KKyNlbmRpZgogCiAjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQogdXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OlRocmVhZFdpdGhQYXJhbTsKQEAgLTI2Nyw2ICszNzksMzEgQEAg
VEVTVChHZXRUZXN0VHlwZUlkVGVzdCwgUmV0dXJuc1RoZVNhbWVWYWx1ZUluc2lkZU9yT3V0c2lk
ZU9mR29vZ2xlVGVzdCkgewogICBFWFBFQ1RfRVEoa1Rlc3RUeXBlSWRJbkdvb2dsZVRlc3QsIEdl
dFRlc3RUeXBlSWQoKSk7CiB9CiAKKy8vIFRlc3RzIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNp
b25pbmcuCisKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNhbm9uaWNhbGl6ZUZvclN0ZExp
YlZlcnNpb25pbmc7CisKK1RFU1QoQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZywgTGVh
dmVzVW52ZXJzaW9uZWROYW1lc1VuY2hhbmdlZCkgeworICBFWFBFQ1RfRVEoInN0ZDo6YmluZCIs
IENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoInN0ZDo6YmluZCIpKTsKKyAgRVhQRUNU
X0VRKCJzdGQ6Ol8iLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJzdGQ6Ol8iKSk7
CisgIEVYUEVDVF9FUSgic3RkOjpfX2ZvbyIsIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25p
bmcoInN0ZDo6X19mb28iKSk7CisgIEVYUEVDVF9FUSgiZ3RsOjpfXzE6OngiLCBDYW5vbmljYWxp
emVGb3JTdGRMaWJWZXJzaW9uaW5nKCJndGw6Ol9fMTo6eCIpKTsKKyAgRVhQRUNUX0VRKCJfXzE6
OngiLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJfXzE6OngiKSk7CisgIEVYUEVD
VF9FUSgiOjpfXzE6OngiLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCI6Ol9fMTo6
eCIpKTsKK30KKworVEVTVChDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nLCBFbGlkZXNE
b3VibGVVbmRlck5hbWVzKSB7CisgIEVYUEVDVF9FUSgic3RkOjpiaW5kIiwgQ2Fub25pY2FsaXpl
Rm9yU3RkTGliVmVyc2lvbmluZygic3RkOjpfXzE6OmJpbmQiKSk7CisgIEVYUEVDVF9FUSgic3Rk
OjpfIiwgQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZygic3RkOjpfXzE6Ol8iKSk7CisK
KyAgRVhQRUNUX0VRKCJzdGQ6OmJpbmQiLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5n
KCJzdGQ6Ol9fZzo6YmluZCIpKTsKKyAgRVhQRUNUX0VRKCJzdGQ6Ol8iLCBDYW5vbmljYWxpemVG
b3JTdGRMaWJWZXJzaW9uaW5nKCJzdGQ6Ol9fZzo6XyIpKTsKKworICBFWFBFQ1RfRVEoInN0ZDo6
YmluZCIsCisgICAgICAgICAgICBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJzdGQ6
Ol9fZ29vZ2xlOjpiaW5kIikpOworICBFWFBFQ1RfRVEoInN0ZDo6XyIsIENhbm9uaWNhbGl6ZUZv
clN0ZExpYlZlcnNpb25pbmcoInN0ZDo6X19nb29nbGU6Ol8iKSk7Cit9CisKIC8vIFRlc3RzIEZv
cm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcygpLgogCiBURVNUKEZvcm1hdFRpbWVJbk1pbGxpc0Fz
U2Vjb25kc1Rlc3QsIEZvcm1hdHNaZXJvKSB7CkBAIC0yODksMTIgKzQyNiw5OSBAQCBURVNUKEZv
cm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kc1Rlc3QsIEZvcm1hdHNOZWdhdGl2ZU51bWJlcikgewog
ICBFWFBFQ1RfRVEoIi0zIiwgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKC0zMDAwKSk7CiB9
CiAKKy8vIFRlc3RzIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKCkuICBUaGUgY29y
cmVjdG5lc3Mgb2YgY29udmVyc2lvbgorLy8gZm9yIHBhcnRpY3VsYXIgZGF0ZXMgYmVsb3cgd2Fz
IHZlcmlmaWVkIGluIFB5dGhvbiB1c2luZworLy8gZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXV0Y3Rp
bWVzdGFtcCg8dGltZXRhbXA+LzEwMDApLgorCisvLyBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0Fz
SXNvODYwMSBkZXBlbmRzIG9uIHRoZSBjdXJyZW50IHRpbWV6b25lLCBzbyB3ZQorLy8gaGF2ZSB0
byBzZXQgdXAgYSBwYXJ0aWN1bGFyIHRpbWV6b25lIHRvIG9idGFpbiBwcmVkaWN0YWJsZSByZXN1
bHRzLgorY2xhc3MgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0IDogcHVibGlj
IFRlc3QgeworIHB1YmxpYzoKKyAgLy8gT24gQ3lnd2luLCBHQ0MgZG9lc24ndCBhbGxvdyB1bnF1
YWxpZmllZCBpbnRlZ2VyIGxpdGVyYWxzIHRvIGV4Y2VlZAorICAvLyAzMiBiaXRzLCBldmVuIHdo
ZW4gNjQtYml0IGludGVnZXIgdHlwZXMgYXJlIGF2YWlsYWJsZS4gIFdlIGhhdmUgdG8KKyAgLy8g
Zm9yY2UgdGhlIGNvbnN0YW50cyB0byBoYXZlIGEgNjQtYml0IHR5cGUgaGVyZS4KKyAgc3RhdGlj
IGNvbnN0IFRpbWVJbk1pbGxpcyBrTWlsbGlzUGVyU2VjID0gMTAwMDsKKworIHByaXZhdGU6Cisg
IHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBzYXZlZF90el8gPSBOVUxMOworCisgICAgR1RF
U1RfRElTQUJMRV9NU0NfREVQUkVDQVRFRF9QVVNIXygvKiBnZXRlbnYsIHN0cmR1cDogZGVwcmVj
YXRlZCAqLykKKyAgICBpZiAoZ2V0ZW52KCJUWiIpKQorICAgICAgc2F2ZWRfdHpfID0gc3RyZHVw
KGdldGVudigiVFoiKSk7CisgICAgR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRFRF9QT1BfKCkK
KworICAgIC8vIFNldCB1cCB0aGUgdGltZSB6b25lIGZvciBGb3JtYXRFcG9jaFRpbWVJbk1pbGxp
c0FzSXNvODYwMSB0byB1c2UuICBXZQorICAgIC8vIGNhbm5vdCB1c2UgdGhlIGxvY2FsIHRpbWUg
em9uZSBiZWNhdXNlIHRoZSBmdW5jdGlvbidzIG91dHB1dCBkZXBlbmRzCisgICAgLy8gb24gdGhl
IHRpbWUgem9uZS4KKyAgICBTZXRUaW1lWm9uZSgiVVRDKzAwIik7CisgIH0KKworICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7CisgICAgU2V0VGltZVpvbmUoc2F2ZWRfdHpfKTsKKyAgICBmcmVl
KGNvbnN0X2Nhc3Q8Y2hhcio+KHNhdmVkX3R6XykpOworICAgIHNhdmVkX3R6XyA9IE5VTEw7Cisg
IH0KKworICBzdGF0aWMgdm9pZCBTZXRUaW1lWm9uZShjb25zdCBjaGFyKiB0aW1lX3pvbmUpIHsK
KyAgICAvLyB0enNldCgpIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiB0aGUgVFogdmFyaWFibGUgYmVp
bmcgcHJlc2VudCBhbmQgZW1wdHkKKyAgICAvLyBhbmQgbm90IGJlaW5nIHByZXNlbnQsIHNvIHdl
IGhhdmUgdG8gY29uc2lkZXIgdGhlIGNhc2Ugb2YgdGltZV96b25lCisgICAgLy8gYmVpbmcgTlVM
TC4KKyNpZiBfTVNDX1ZFUiB8fCBHVEVTVF9PU19XSU5ET1dTX01JTkdXCisgICAgLy8gLi4uVW5s
ZXNzIGl0J3MgTVNWQywgd2hvc2Ugc3RhbmRhcmQgbGlicmFyeSdzIF9wdXRlbnYgZG9lc24ndAor
ICAgIC8vIGRpc3Rpbmd1aXNoIGJldHdlZW4gYW4gZW1wdHkgYW5kIGEgbWlzc2luZyB2YXJpYWJs
ZS4KKyAgICBjb25zdCBzdGQ6OnN0cmluZyBlbnZfdmFyID0KKyAgICAgICAgc3RkOjpzdHJpbmco
IlRaPSIpICsgKHRpbWVfem9uZSA/IHRpbWVfem9uZSA6ICIiKTsKKyAgICBfcHV0ZW52KGVudl92
YXIuY19zdHIoKSk7CisgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDk5NiAv
KiBkZXByZWNhdGVkIGZ1bmN0aW9uICovKQorICAgIHR6c2V0KCk7CisgICAgR1RFU1RfRElTQUJM
RV9NU0NfV0FSTklOR1NfUE9QXygpCisjZWxzZQorICAgIGlmICh0aW1lX3pvbmUpIHsKKyAgICAg
IHNldGVudigoIlRaIiksIHRpbWVfem9uZSwgMSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHVuc2V0
ZW52KCJUWiIpOworICAgIH0KKyAgICB0enNldCgpOworI2VuZGlmCisgIH0KKworICBjb25zdCBj
aGFyKiBzYXZlZF90el87Cit9OworCitjb25zdCBUaW1lSW5NaWxsaXMgRm9ybWF0RXBvY2hUaW1l
SW5NaWxsaXNBc0lzbzg2MDFUZXN0OjprTWlsbGlzUGVyU2VjOworCitURVNUX0YoRm9ybWF0RXBv
Y2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBQcmludHNUd29EaWdpdFNlZ21lbnRzKSB7Cisg
IEVYUEVDVF9FUSgiMjAxMS0xMC0zMVQxODo1Mjo0MiIsCisgICAgICAgICAgICBGb3JtYXRFcG9j
aFRpbWVJbk1pbGxpc0FzSXNvODYwMSgxMzIwMDg3MTYyICoga01pbGxpc1BlclNlYykpOworfQor
CitURVNUX0YoRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBNaWxsaXNlY29u
ZHNEb05vdEFmZmVjdFJlc3VsdCkgeworICBFWFBFQ1RfRVEoCisgICAgICAiMjAxMS0xMC0zMVQx
ODo1Mjo0MiIsCisgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSgxMzIwMDg3
MTYyICoga01pbGxpc1BlclNlYyArIDIzNCkpOworfQorCitURVNUX0YoRm9ybWF0RXBvY2hUaW1l
SW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBQcmludHNMZWFkaW5nWmVyb2VzKSB7CisgIEVYUEVDVF9F
USgiMjAxMS0wOS0wM1QwNTowNzowMiIsCisgICAgICAgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1p
bGxpc0FzSXNvODYwMSgxMzE1MDI2NDIyICoga01pbGxpc1BlclNlYykpOworfQorCitURVNUX0Yo
Rm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBQcmludHMyNEhvdXJUaW1lKSB7
CisgIEVYUEVDVF9FUSgiMjAxMS0wOS0yOFQxNzowODoyMiIsCisgICAgICAgICAgICBGb3JtYXRF
cG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSgxMzE3MjI5NzAyICoga01pbGxpc1BlclNlYykpOwor
fQorCitURVNUX0YoRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBQcmludHNF
cG9jaFN0YXJ0KSB7CisgIEVYUEVDVF9FUSgiMTk3MC0wMS0wMVQwMDowMDowMCIsIEZvcm1hdEVw
b2NoVGltZUluTWlsbGlzQXNJc284NjAxKDApKTsKK30KKwogI2lmIEdURVNUX0NBTl9DT01QQVJF
X05VTEwKIAotI2lmZGVmIF9fQk9STEFORENfXworIyBpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFNp
bGVuY2VzIHdhcm5pbmdzOiAiQ29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlIiwgIlVucmVhY2hhYmxl
IGNvZGUiCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gKLSNlbmRpZgorIyAgcHJh
Z21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gKKyMgZW5kaWYKIAogLy8gVGVzdHMgdGhhdCBH
VEVTVF9JU19OVUxMX0xJVEVSQUxfKHgpIGlzIHRydWUgd2hlbiB4IGlzIGEgbnVsbAogLy8gcG9p
bnRlciBsaXRlcmFsLgpAQCAtMzAzLDE0ICs1MjcsNiBAQCBURVNUKE51bGxMaXRlcmFsVGVzdCwg
SXNUcnVlRm9yTnVsbExpdGVyYWxzKSB7CiAgIEVYUEVDVF9UUlVFKEdURVNUX0lTX05VTExfTElU
RVJBTF8oMCkpOwogICBFWFBFQ1RfVFJVRShHVEVTVF9JU19OVUxMX0xJVEVSQUxfKDBVKSk7CiAg
IEVYUEVDVF9UUlVFKEdURVNUX0lTX05VTExfTElURVJBTF8oMEwpKTsKLSAgRVhQRUNUX1RSVUUo
R1RFU1RfSVNfTlVMTF9MSVRFUkFMXyhmYWxzZSkpOwotI2lmbmRlZiBfX0JPUkxBTkRDX18KLSAg
Ly8gU29tZSBjb21waWxlcnMgbWF5IGZhaWwgdG8gZGV0ZWN0IHNvbWUgbnVsbCBwb2ludGVyIGxp
dGVyYWxzOwotICAvLyBhcyBsb25nIGFzIHVzZXJzIG9mIHRoZSBmcmFtZXdvcmsgZG9uJ3QgdXNl
IHN1Y2ggbGl0ZXJhbHMsIHRoaXMKLSAgLy8gaXMgaGFybWxlc3MuCi0gIEVYUEVDVF9UUlVFKEdU
RVNUX0lTX05VTExfTElURVJBTF8oMSAtIDEpKTsKLSAgRVhQRUNUX1RSVUUoR1RFU1RfSVNfTlVM
TF9MSVRFUkFMXyh0cnVlICYmIGZhbHNlKSk7Ci0jZW5kaWYKIH0KIAogLy8gVGVzdHMgdGhhdCBH
VEVTVF9JU19OVUxMX0xJVEVSQUxfKHgpIGlzIGZhbHNlIHdoZW4geCBpcyBub3QgYSBudWxsCkBA
IC0zMjIsMTAgKzUzOCwxMCBAQCBURVNUKE51bGxMaXRlcmFsVGVzdCwgSXNGYWxzZUZvck5vbk51
bGxMaXRlcmFscykgewogICBFWFBFQ1RfRkFMU0UoR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyhzdGF0
aWNfY2FzdDx2b2lkKj4oTlVMTCkpKTsKIH0KIAotI2lmZGVmIF9fQk9STEFORENfXworIyBpZmRl
ZiBfX0JPUkxBTkRDX18KIC8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJh
Z21hIG9wdGlvbiBwdXNoIiBzdXBwcmVzc2VkIHRoZW0uCi0jcHJhZ21hIG9wdGlvbiBwb3AKLSNl
bmRpZgorIyAgcHJhZ21hIG9wdGlvbiBwb3AKKyMgZW5kaWYKIAogI2VuZGlmICAvLyBHVEVTVF9D
QU5fQ09NUEFSRV9OVUxMCiAvLwpAQCAtMzMzLDM5ICs1NDksNDEgQEAgVEVTVChOdWxsTGl0ZXJh
bFRlc3QsIElzRmFsc2VGb3JOb25OdWxsTGl0ZXJhbHMpIHsKIAogLy8gVGVzdHMgdGhhdCB0aGUg
TlVMIGNoYXJhY3RlciBMJ1wwJyBpcyBlbmNvZGVkIGNvcnJlY3RseS4KIFRFU1QoQ29kZVBvaW50
VG9VdGY4VGVzdCwgQ2FuRW5jb2RlTnVsKSB7Ci0gIGNoYXIgYnVmZmVyWzMyXTsKLSAgRVhQRUNU
X1NUUkVRKCIiLCBDb2RlUG9pbnRUb1V0ZjgoTCdcMCcsIGJ1ZmZlcikpOworICBFWFBFQ1RfRVEo
IiIsIENvZGVQb2ludFRvVXRmOChMJ1wwJykpOwogfQogCiAvLyBUZXN0cyB0aGF0IEFTQ0lJIGNo
YXJhY3RlcnMgYXJlIGVuY29kZWQgY29ycmVjdGx5LgogVEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0
LCBDYW5FbmNvZGVBc2NpaSkgewotICBjaGFyIGJ1ZmZlclszMl07Ci0gIEVYUEVDVF9TVFJFUSgi
YSIsIENvZGVQb2ludFRvVXRmOChMJ2EnLCBidWZmZXIpKTsKLSAgRVhQRUNUX1NUUkVRKCJaIiwg
Q29kZVBvaW50VG9VdGY4KEwnWicsIGJ1ZmZlcikpOwotICBFWFBFQ1RfU1RSRVEoIiYiLCBDb2Rl
UG9pbnRUb1V0ZjgoTCcmJywgYnVmZmVyKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHg3RiIsIENvZGVQ
b2ludFRvVXRmOChMJ1x4N0YnLCBidWZmZXIpKTsKKyAgRVhQRUNUX0VRKCJhIiwgQ29kZVBvaW50
VG9VdGY4KEwnYScpKTsKKyAgRVhQRUNUX0VRKCJaIiwgQ29kZVBvaW50VG9VdGY4KEwnWicpKTsK
KyAgRVhQRUNUX0VRKCImIiwgQ29kZVBvaW50VG9VdGY4KEwnJicpKTsKKyAgRVhQRUNUX0VRKCJc
eDdGIiwgQ29kZVBvaW50VG9VdGY4KEwnXHg3RicpKTsKIH0KIAogLy8gVGVzdHMgdGhhdCBVbmlj
b2RlIGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSA4IHRvIDExIGJpdHMgYXJlIGVuY29kZWQKIC8vIGFz
IDExMHh4eHh4IDEweHh4eHh4LgogVEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBDYW5FbmNvZGU4
VG8xMUJpdHMpIHsKLSAgY2hhciBidWZmZXJbMzJdOwogICAvLyAwMDAgMTEwMSAwMDExID0+IDEx
MC0wMDAxMSAxMC0wMTAwMTEKLSAgRVhQRUNUX1NUUkVRKCJceEMzXHg5MyIsIENvZGVQb2ludFRv
VXRmOChMJ1x4RDMnLCBidWZmZXIpKTsKKyAgRVhQRUNUX0VRKCJceEMzXHg5MyIsIENvZGVQb2lu
dFRvVXRmOChMJ1x4RDMnKSk7CiAKICAgLy8gMTAxIDAxMTEgMDExMCA9PiAxMTAtMTAxMDEgMTAt
MTEwMTEwCi0gIEVYUEVDVF9TVFJFUSgiXHhENVx4QjYiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDU3
NicsIGJ1ZmZlcikpOworICAvLyBTb21lIGNvbXBpbGVycyAoZS5nLiwgR0NDIG9uIE1pbkdXKSBj
YW5ub3QgaGFuZGxlIG5vbi1BU0NJSSBjb2RlcG9pbnRzCisgIC8vIGluIHdpZGUgc3RyaW5ncyBh
bmQgd2lkZSBjaGFycy4gSW4gb3JkZXIgdG8gYWNjb21tb2RhdGUgdGhlbSwgd2UgaGF2ZSB0bwor
ICAvLyBpbnRyb2R1Y2Ugc3VjaCBjaGFyYWN0ZXIgY29uc3RhbnRzIGFzIGludGVnZXJzLgorICBF
WFBFQ1RfRVEoIlx4RDVceEI2IiwKKyAgICAgICAgICAgIENvZGVQb2ludFRvVXRmOChzdGF0aWNf
Y2FzdDx3Y2hhcl90PigweDU3NikpKTsKIH0KIAogLy8gVGVzdHMgdGhhdCBVbmljb2RlIGNvZGUt
cG9pbnRzIHRoYXQgaGF2ZSAxMiB0byAxNiBiaXRzIGFyZSBlbmNvZGVkCiAvLyBhcyAxMTEweHh4
eCAxMHh4eHh4eCAxMHh4eHh4eC4KIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2Rl
MTJUbzE2Qml0cykgewotICBjaGFyIGJ1ZmZlclszMl07CiAgIC8vIDAwMDAgMTAwMCAxMTAxIDAw
MTEgPT4gMTExMC0wMDAwIDEwLTEwMDAxMSAxMC0wMTAwMTEKLSAgRVhQRUNUX1NUUkVRKCJceEUw
XHhBM1x4OTMiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDhEMycsIGJ1ZmZlcikpOworICBFWFBFQ1Rf
RVEoIlx4RTBceEEzXHg5MyIsCisgICAgICAgICAgICBDb2RlUG9pbnRUb1V0Zjgoc3RhdGljX2Nh
c3Q8d2NoYXJfdD4oMHg4RDMpKSk7CiAKICAgLy8gMTEwMCAwMTExIDAxMDAgMTEwMSA9PiAxMTEw
LTExMDAgMTAtMDExMTAxIDEwLTAwMTEwMQotICBFWFBFQ1RfU1RSRVEoIlx4RUNceDlEXHg4RCIs
IENvZGVQb2ludFRvVXRmOChMJ1x4Qzc0RCcsIGJ1ZmZlcikpOworICBFWFBFQ1RfRVEoIlx4RUNc
eDlEXHg4RCIsCisgICAgICAgICAgICBDb2RlUG9pbnRUb1V0Zjgoc3RhdGljX2Nhc3Q8d2NoYXJf
dD4oMHhDNzREKSkpOwogfQogCiAjaWYgIUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCkBA
IC0zNzYsMjIgKzU5NCwxOSBAQCBURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29kZTEy
VG8xNkJpdHMpIHsKIC8vIFRlc3RzIHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0aGF0IGhhdmUg
MTcgdG8gMjEgYml0cyBhcmUgZW5jb2RlZAogLy8gYXMgMTExMTB4eHggMTB4eHh4eHggMTB4eHh4
eHggMTB4eHh4eHguCiBURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29kZTE3VG8yMUJp
dHMpIHsKLSAgY2hhciBidWZmZXJbMzJdOwogICAvLyAwIDAwMDEgMDAwMCAxMDAwIDExMDEgMDAx
MSA9PiAxMTExMC0wMDAgMTAtMDEwMDAwIDEwLTEwMDAxMSAxMC0wMTAwMTEKLSAgRVhQRUNUX1NU
UkVRKCJceEYwXHg5MFx4QTNceDkzIiwgQ29kZVBvaW50VG9VdGY4KEwnXHgxMDhEMycsIGJ1ZmZl
cikpOworICBFWFBFQ1RfRVEoIlx4RjBceDkwXHhBM1x4OTMiLCBDb2RlUG9pbnRUb1V0ZjgoTCdc
eDEwOEQzJykpOwogCiAgIC8vIDAgMDAwMSAwMDAwIDAxMDAgMDAwMCAwMDAwID0+IDExMTEwLTAw
MCAxMC0wMTAwMDAgMTAtMDEwMDAwIDEwLTAwMDAwMAotICBFWFBFQ1RfU1RSRVEoIlx4RjBceDkw
XHg5MFx4ODAiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDEwNDAwJywgYnVmZmVyKSk7CisgIEVYUEVD
VF9FUSgiXHhGMFx4OTBceDkwXHg4MCIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA0MDAnKSk7CiAK
ICAgLy8gMSAwMDAwIDEwMDAgMDExMCAwMDExIDAxMDAgPT4gMTExMTAtMTAwIDEwLTAwMTAwMCAx
MC0wMTEwMDAgMTAtMTEwMTAwCi0gIEVYUEVDVF9TVFJFUSgiXHhGNFx4ODhceDk4XHhCNCIsIENv
ZGVQb2ludFRvVXRmOChMJ1x4MTA4NjM0JywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiXHhGNFx4
ODhceDk4XHhCNCIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA4NjM0JykpOwogfQogCiAvLyBUZXN0
cyB0aGF0IGVuY29kaW5nIGFuIGludmFsaWQgY29kZS1wb2ludCBnZW5lcmF0ZXMgdGhlIGV4cGVj
dGVkIHJlc3VsdC4KIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2RlSW52YWxpZENv
ZGVQb2ludCkgewotICBjaGFyIGJ1ZmZlclszMl07Ci0gIEVYUEVDVF9TVFJFUSgiKEludmFsaWQg
VW5pY29kZSAweDEyMzRBQkNEKSIsCi0gICAgICAgICAgICAgICBDb2RlUG9pbnRUb1V0ZjgoTCdc
eDEyMzRBQkNEJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiKEludmFsaWQgVW5pY29kZSAweDEy
MzRBQkNEKSIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTIzNEFCQ0QnKSk7CiB9CiAKICNlbmRpZiAg
Ly8gIUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCkBAIC00MjAsMjAgKzYzNSwyMyBAQCBU
RVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGU4VG8xMUJpdHMpIHsKICAgRVhQRUNU
X1NUUkVRKCJceEMzXHg5MyIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEQzIiwgLTEpLmNfc3RyKCkp
OwogCiAgIC8vIDEwMSAwMTExIDAxMTAgPT4gMTEwLTEwMTAxIDEwLTExMDExMAotICBFWFBFQ1Rf
U1RSRVEoIlx4RDVceEI2IiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4NTc2IiwgMSkuY19zdHIoKSk7
Ci0gIEVYUEVDVF9TVFJFUSgiXHhENVx4QjYiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHg1NzYiLCAt
MSkuY19zdHIoKSk7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0geyAweDU3NiwgJ1wwJyB9OworICBF
WFBFQ1RfU1RSRVEoIlx4RDVceEI2IiwgV2lkZVN0cmluZ1RvVXRmOChzLCAxKS5jX3N0cigpKTsK
KyAgRVhQRUNUX1NUUkVRKCJceEQ1XHhCNiIsIFdpZGVTdHJpbmdUb1V0ZjgocywgLTEpLmNfc3Ry
KCkpOwogfQogCiAvLyBUZXN0cyB0aGF0IFVuaWNvZGUgY29kZS1wb2ludHMgdGhhdCBoYXZlIDEy
IHRvIDE2IGJpdHMgYXJlIGVuY29kZWQKIC8vIGFzIDExMTB4eHh4IDEweHh4eHh4IDEweHh4eHh4
LgogVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgQ2FuRW5jb2RlMTJUbzE2Qml0cykgewogICAv
LyAwMDAwIDEwMDAgMTEwMSAwMDExID0+IDExMTAtMDAwMCAxMC0xMDAwMTEgMTAtMDEwMDExCi0g
IEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4OEQzIiwg
MSkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lkZVN0cmluZ1Rv
VXRmOChMIlx4OEQzIiwgLTEpLmNfc3RyKCkpOworICBjb25zdCB3Y2hhcl90IHMxW10gPSB7IDB4
OEQzLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lkZVN0cmluZ1Rv
VXRmOChzMSwgMSkuY19zdHIoKSk7CisgIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lk
ZVN0cmluZ1RvVXRmOChzMSwgLTEpLmNfc3RyKCkpOwogCiAgIC8vIDExMDAgMDExMSAwMTAwIDEx
MDEgPT4gMTExMC0xMTAwIDEwLTAxMTEwMSAxMC0wMDExMDEKLSAgRVhQRUNUX1NUUkVRKCJceEVD
XHg5RFx4OEQiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhDNzREIiwgMSkuY19zdHIoKSk7Ci0gIEVY
UEVDVF9TVFJFUSgiXHhFQ1x4OURceDhEIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4Qzc0RCIsIC0x
KS5jX3N0cigpKTsKKyAgY29uc3Qgd2NoYXJfdCBzMltdID0geyAweEM3NEQsICdcMCcgfTsKKyAg
RVhQRUNUX1NUUkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5nVG9VdGY4KHMyLCAxKS5jX3N0
cigpKTsKKyAgRVhQRUNUX1NUUkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5nVG9VdGY4KHMy
LCAtMSkuY19zdHIoKSk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgdGhlIGNvbnZlcnNpb24gc3RvcHMg
d2hlbiB0aGUgZnVuY3Rpb24gZW5jb3VudGVycyBcMCBjaGFyYWN0ZXIuCkBAIC00NDcsNyArNjY1
LDYgQEAgVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgU3RvcHNXaGVuTGVuZ3RoTGltaXRSZWFj
aGVkKSB7CiAgIEVYUEVDVF9TVFJFUSgiQUJDIiwgV2lkZVN0cmluZ1RvVXRmOChMIkFCQ0RFRiIs
IDMpLmNfc3RyKCkpOwogfQogCi0KICNpZiAhR1RFU1RfV0lERV9TVFJJTkdfVVNFU19VVEYxNl8K
IC8vIFRlc3RzIHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0aGF0IGhhdmUgMTcgdG8gMjEgYml0
cyBhcmUgZW5jb2RlZAogLy8gYXMgMTExMTB4eHggMTB4eHh4eHggMTB4eHh4eHggMTB4eHh4eHgu
IFRoaXMgY29kZSBtYXkgbm90IGNvbXBpbGUKQEAgLTQ3MSwyNSArNjg4LDI5IEBAIFRFU1QoV2lk
ZVN0cmluZ1RvVXRmOFRlc3QsIENhbkVuY29kZUludmFsaWRDb2RlUG9pbnQpIHsKIC8vIFRlc3Rz
IHRoYXQgc3Vycm9nYXRlIHBhaXJzIGFyZSBlbmNvZGVkIGNvcnJlY3RseSBvbiB0aGUgc3lzdGVt
cyB1c2luZwogLy8gVVRGLTE2IGVuY29kaW5nIGluIHRoZSB3aWRlIHN0cmluZ3MuCiBURVNUKFdp
ZGVTdHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGVWYWxpZFV0ZjE2U1Vycm9nYXRlUGFpcnMpIHsK
LSAgRVhQRUNUX1NUUkVRKCJceEYwXHg5MFx4OTBceDgwIiwKLSAgICAgICAgICAgICAgIFdpZGVT
dHJpbmdUb1V0ZjgoTCJceEQ4MDFceERDMDAiLCAtMSkuY19zdHIoKSk7CisgIGNvbnN0IHdjaGFy
X3Qgc1tdID0geyAweEQ4MDEsIDB4REMwMCwgJ1wwJyB9OworICBFWFBFQ1RfU1RSRVEoIlx4RjBc
eDkwXHg5MFx4ODAiLCBXaWRlU3RyaW5nVG9VdGY4KHMsIC0xKS5jX3N0cigpKTsKIH0KIAogLy8g
VGVzdHMgdGhhdCBlbmNvZGluZyBhbiBpbnZhbGlkIFVURi0xNiBzdXJyb2dhdGUgcGFpcgogLy8g
Z2VuZXJhdGVzIHRoZSBleHBlY3RlZCByZXN1bHQuCiBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0
LCBDYW5FbmNvZGVJbnZhbGlkVXRmMTZTdXJyb2dhdGVQYWlyKSB7CiAgIC8vIExlYWRpbmcgc3Vy
cm9nYXRlIGlzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZy4KLSAgRVhQRUNUX1NUUkVRKCJceEVE
XHhBMFx4ODAiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhEODAwIiwgLTEpLmNfc3RyKCkpOworICBj
b25zdCB3Y2hhcl90IHMxW10gPSB7IDB4RDgwMCwgJ1wwJyB9OworICBFWFBFQ1RfU1RSRVEoIlx4
RURceEEwXHg4MCIsIFdpZGVTdHJpbmdUb1V0ZjgoczEsIC0xKS5jX3N0cigpKTsKICAgLy8gTGVh
ZGluZyBzdXJyb2dhdGUgaXMgbm90IGZvbGxvd2VkIGJ5IHRoZSB0cmFpbGluZyBzdXJyb2dhdGUu
Ci0gIEVYUEVDVF9TVFJFUSgiXHhFRFx4QTBceDgwJCIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEQ4
MDAkIiwgLTEpLmNfc3RyKCkpOworICBjb25zdCB3Y2hhcl90IHMyW10gPSB7IDB4RDgwMCwgJ00n
LCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhFRFx4QTBceDgwTSIsIFdpZGVTdHJpbmdUb1V0
ZjgoczIsIC0xKS5jX3N0cigpKTsKICAgLy8gVHJhaWxpbmcgc3Vycm9nYXRlIGFwcGVhcmFzIHdp
dGhvdXQgYSBsZWFkaW5nIHN1cnJvZ2F0ZS4KLSAgRVhQRUNUX1NUUkVRKCJceEVEXHhCMFx4ODBQ
UVIiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhEQzAwUFFSIiwgLTEpLmNfc3RyKCkpOworICBjb25z
dCB3Y2hhcl90IHMzW10gPSB7IDB4REMwMCwgJ1AnLCAnUScsICdSJywgJ1wwJyB9OworICBFWFBF
Q1RfU1RSRVEoIlx4RURceEIwXHg4MFBRUiIsIFdpZGVTdHJpbmdUb1V0ZjgoczMsIC0xKS5jX3N0
cigpKTsKIH0KICNlbmRpZiAgLy8gIUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCiAKIC8v
IFRlc3RzIHRoYXQgY29kZXBvaW50IGNvbmNhdGVuYXRpb24gd29ya3MgY29ycmVjdGx5LgogI2lm
ICFHVEVTVF9XSURFX1NUUklOR19VU0VTX1VURjE2XwogVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVz
dCwgQ29uY2F0ZW5hdGVzQ29kZXBvaW50c0NvcnJlY3RseSkgeworICBjb25zdCB3Y2hhcl90IHNb
XSA9IHsgMHgxMDg2MzQsIDB4Qzc0RCwgJ1xuJywgMHg1NzYsIDB4OEQzLCAweDEwODYzNCwgJ1ww
J307CiAgIEVYUEVDVF9TVFJFUSgKICAgICAgICJceEY0XHg4OFx4OThceEI0IgogICAgICAgICAg
ICJceEVDXHg5RFx4OEQiCkBAIC00OTcsMTMgKzcxOCwxNCBAQCBURVNUKFdpZGVTdHJpbmdUb1V0
ZjhUZXN0LCBDb25jYXRlbmF0ZXNDb2RlcG9pbnRzQ29ycmVjdGx5KSB7CiAgICAgICAgICAgIlx4
RDVceEI2IgogICAgICAgICAgICJceEUwXHhBM1x4OTMiCiAgICAgICAgICAgIlx4RjRceDg4XHg5
OFx4QjQiLAotICAgICAgV2lkZVN0cmluZ1RvVXRmOChMIlx4MTA4NjM0XHhDNzREXG5ceDU3Nlx4
OEQzXHgxMDg2MzQiLCAtMSkuY19zdHIoKSk7CisgICAgICBXaWRlU3RyaW5nVG9VdGY4KHMsIC0x
KS5jX3N0cigpKTsKIH0KICNlbHNlCiBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDb25jYXRl
bmF0ZXNDb2RlcG9pbnRzQ29ycmVjdGx5KSB7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0geyAweEM3
NEQsICdcbicsIDB4NTc2LCAweDhEMywgJ1wwJ307CiAgIEVYUEVDVF9TVFJFUSgKICAgICAgICJc
eEVDXHg5RFx4OEQiICJcbiIgIlx4RDVceEI2IiAiXHhFMFx4QTNceDkzIiwKLSAgICAgIFdpZGVT
dHJpbmdUb1V0ZjgoTCJceEM3NERcblx4NTc2XHg4RDMiLCAtMSkuY19zdHIoKSk7CisgICAgICBX
aWRlU3RyaW5nVG9VdGY4KHMsIC0xKS5jX3N0cigpKTsKIH0KICNlbmRpZiAgLy8gIUdURVNUX1dJ
REVfU1RSSU5HX1VTRVNfVVRGMTZfCiAKQEAgLTc5NywyNjkgKzEwMTksMTYgQEAgVEVTVChBc3Nl
cnRIZWxwZXJUZXN0LCBBc3NlcnRIZWxwZXJJc1NtYWxsKSB7CiAgIEVYUEVDVF9MRShzaXplb2Yo
dGVzdGluZzo6aW50ZXJuYWw6OkFzc2VydEhlbHBlciksIHNpemVvZih2b2lkKikpOwogfQogCi0v
LyBUZXN0cyB0aGUgU3RyaW5nIGNsYXNzLgotCi0vLyBUZXN0cyBTdHJpbmcncyBjb25zdHJ1Y3Rv
cnMuCi1URVNUKFN0cmluZ1Rlc3QsIENvbnN0cnVjdG9ycykgewotICAvLyBEZWZhdWx0IGN0b3Iu
Ci0gIFN0cmluZyBzMTsKLSAgLy8gV2UgYXJlbid0IHVzaW5nIEVYUEVDVF9FUShOVUxMLCBzMS5j
X3N0cigpKSBiZWNhdXNlIGNvbXBhcmluZwotICAvLyBwb2ludGVycyB3aXRoIE5VTEwgaXNuJ3Qg
c3VwcG9ydGVkIG9uIGFsbCBwbGF0Zm9ybXMuCi0gIEVYUEVDVF9FUSgwVSwgczEubGVuZ3RoKCkp
OwotICBFWFBFQ1RfVFJVRShOVUxMID09IHMxLmNfc3RyKCkpOwotCi0gIC8vIEltcGxpY2l0bHkg
Y29uc3RydWN0cyBmcm9tIGEgQy1zdHJpbmcuCi0gIFN0cmluZyBzMiA9ICJIaSI7Ci0gIEVYUEVD
VF9FUSgyVSwgczIubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoIkhpIiwgczIuY19zdHIoKSk7
Ci0KLSAgLy8gQ29uc3RydWN0cyBmcm9tIGEgQy1zdHJpbmcgYW5kIGEgbGVuZ3RoLgotICBTdHJp
bmcgczMoImhlbGxvIiwgMyk7Ci0gIEVYUEVDVF9FUSgzVSwgczMubGVuZ3RoKCkpOwotICBFWFBF
Q1RfU1RSRVEoImhlbCIsIHMzLmNfc3RyKCkpOwotCi0gIC8vIFRoZSBlbXB0eSBTdHJpbmcgc2hv
dWxkIGJlIGNyZWF0ZWQgd2hlbiBTdHJpbmcgaXMgY29uc3RydWN0ZWQgd2l0aAotICAvLyBhIE5V
TEwgcG9pbnRlciBhbmQgbGVuZ3RoIDAuCi0gIEVYUEVDVF9FUSgwVSwgU3RyaW5nKE5VTEwsIDAp
Lmxlbmd0aCgpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZyhOVUxMLCAwKS5jX3N0cigpID09IE5V
TEwpOwotCi0gIC8vIENvbnN0cnVjdHMgYSBTdHJpbmcgdGhhdCBjb250YWlucyAnXDAnLgotICBT
dHJpbmcgczQoImFcMGJjZCIsIDQpOwotICBFWFBFQ1RfRVEoNFUsIHM0Lmxlbmd0aCgpKTsKLSAg
RVhQRUNUX0VRKCdhJywgczQuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgnXDAnLCBzNC5jX3N0
cigpWzFdKTsKLSAgRVhQRUNUX0VRKCdiJywgczQuY19zdHIoKVsyXSk7Ci0gIEVYUEVDVF9FUSgn
YycsIHM0LmNfc3RyKClbM10pOwotCi0gIC8vIENvcHkgY3RvciB3aGVyZSB0aGUgc291cmNlIGlz
IE5VTEwuCi0gIGNvbnN0IFN0cmluZyBudWxsX3N0cjsKLSAgU3RyaW5nIHM1ID0gbnVsbF9zdHI7
Ci0gIEVYUEVDVF9UUlVFKHM1LmNfc3RyKCkgPT0gTlVMTCk7Ci0KLSAgLy8gQ29weSBjdG9yIHdo
ZXJlIHRoZSBzb3VyY2UgaXNuJ3QgTlVMTC4KLSAgU3RyaW5nIHM2ID0gczM7Ci0gIEVYUEVDVF9F
USgzVSwgczYubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoImhlbCIsIHM2LmNfc3RyKCkpOwot
Ci0gIC8vIENvcHkgY3RvciB3aGVyZSB0aGUgc291cmNlIGNvbnRhaW5zICdcMCcuCi0gIFN0cmlu
ZyBzNyA9IHM0OwotICBFWFBFQ1RfRVEoNFUsIHM3Lmxlbmd0aCgpKTsKLSAgRVhQRUNUX0VRKCdh
JywgczcuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgnXDAnLCBzNy5jX3N0cigpWzFdKTsKLSAg
RVhQRUNUX0VRKCdiJywgczcuY19zdHIoKVsyXSk7Ci0gIEVYUEVDVF9FUSgnYycsIHM3LmNfc3Ry
KClbM10pOwotfQotCi1URVNUKFN0cmluZ1Rlc3QsIENvbnZlcnRzRnJvbVN0ZFN0cmluZykgewot
ICAvLyBBbiBlbXB0eSBzdGQ6OnN0cmluZy4KLSAgY29uc3Qgc3RkOjpzdHJpbmcgc3JjMSgiIik7
Ci0gIGNvbnN0IFN0cmluZyBkZXN0MSA9IHNyYzE7Ci0gIEVYUEVDVF9FUSgwVSwgZGVzdDEubGVu
Z3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIGRlc3QxLmNfc3RyKCkpOwotCi0gIC8vIEEgbm9y
bWFsIHN0ZDo6c3RyaW5nLgotICBjb25zdCBzdGQ6OnN0cmluZyBzcmMyKCJIaSIpOwotICBjb25z
dCBTdHJpbmcgZGVzdDIgPSBzcmMyOwotICBFWFBFQ1RfRVEoMlUsIGRlc3QyLmxlbmd0aCgpKTsK
LSAgRVhQRUNUX1NUUkVRKCJIaSIsIGRlc3QyLmNfc3RyKCkpOwotCi0gIC8vIEFuIHN0ZDo6c3Ry
aW5nIHdpdGggYW4gZW1iZWRkZWQgTlVMIGNoYXJhY3Rlci4KLSAgY29uc3QgY2hhciBzcmMzW10g
PSAiYVwwYiI7Ci0gIGNvbnN0IFN0cmluZyBkZXN0MyA9IHN0ZDo6c3RyaW5nKHNyYzMsIHNpemVv
ZihzcmMzKSk7Ci0gIEVYUEVDVF9FUShzaXplb2Yoc3JjMyksIGRlc3QzLmxlbmd0aCgpKTsKLSAg
RVhQRUNUX0VRKCdhJywgZGVzdDMuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgnXDAnLCBkZXN0
My5jX3N0cigpWzFdKTsKLSAgRVhQRUNUX0VRKCdiJywgZGVzdDMuY19zdHIoKVsyXSk7Ci19Ci0K
LVRFU1QoU3RyaW5nVGVzdCwgQ29udmVydHNUb1N0ZFN0cmluZykgewotICAvLyBBbiBlbXB0eSBT
dHJpbmcuCi0gIGNvbnN0IFN0cmluZyBzcmMxKCIiKTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZGVz
dDEgPSBzcmMxOwotICBFWFBFQ1RfRVEoIiIsIGRlc3QxKTsKLQotICAvLyBBIG5vcm1hbCBTdHJp
bmcuCi0gIGNvbnN0IFN0cmluZyBzcmMyKCJIaSIpOwotICBjb25zdCBzdGQ6OnN0cmluZyBkZXN0
MiA9IHNyYzI7Ci0gIEVYUEVDVF9FUSgiSGkiLCBkZXN0Mik7Ci0KLSAgLy8gQSBTdHJpbmcgY29u
dGFpbmluZyBhICdcMCcuCi0gIGNvbnN0IFN0cmluZyBzcmMzKCJ4XDB5IiwgMyk7Ci0gIGNvbnN0
IHN0ZDo6c3RyaW5nIGRlc3QzID0gc3JjMzsKLSAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKCJ4XDB5
IiwgMyksIGRlc3QzKTsKLX0KLQotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0KLVRFU1Qo
U3RyaW5nVGVzdCwgQ29udmVydHNGcm9tR2xvYmFsU3RyaW5nKSB7Ci0gIC8vIEFuIGVtcHR5IDo6
c3RyaW5nLgotICBjb25zdCA6OnN0cmluZyBzcmMxKCIiKTsKLSAgY29uc3QgU3RyaW5nIGRlc3Qx
ID0gc3JjMTsKLSAgRVhQRUNUX0VRKDBVLCBkZXN0MS5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJF
USgiIiwgZGVzdDEuY19zdHIoKSk7Ci0KLSAgLy8gQSBub3JtYWwgOjpzdHJpbmcuCi0gIGNvbnN0
IDo6c3RyaW5nIHNyYzIoIkhpIik7Ci0gIGNvbnN0IFN0cmluZyBkZXN0MiA9IHNyYzI7Ci0gIEVY
UEVDVF9FUSgyVSwgZGVzdDIubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoIkhpIiwgZGVzdDIu
Y19zdHIoKSk7Ci0KLSAgLy8gQW4gOjpzdHJpbmcgd2l0aCBhbiBlbWJlZGRlZCBOVUwgY2hhcmFj
dGVyLgotICBjb25zdCBjaGFyIHNyYzNbXSA9ICJ4XDB5IjsKLSAgY29uc3QgU3RyaW5nIGRlc3Qz
ID0gOjpzdHJpbmcoc3JjMywgc2l6ZW9mKHNyYzMpKTsKLSAgRVhQRUNUX0VRKHNpemVvZihzcmMz
KSwgZGVzdDMubGVuZ3RoKCkpOwotICBFWFBFQ1RfRVEoJ3gnLCBkZXN0My5jX3N0cigpWzBdKTsK
LSAgRVhQRUNUX0VRKCdcMCcsIGRlc3QzLmNfc3RyKClbMV0pOwotICBFWFBFQ1RfRVEoJ3knLCBk
ZXN0My5jX3N0cigpWzJdKTsKLX0KLQotVEVTVChTdHJpbmdUZXN0LCBDb252ZXJ0c1RvR2xvYmFs
U3RyaW5nKSB7Ci0gIC8vIEFuIGVtcHR5IFN0cmluZy4KLSAgY29uc3QgU3RyaW5nIHNyYzEoIiIp
OwotICBjb25zdCA6OnN0cmluZyBkZXN0MSA9IHNyYzE7Ci0gIEVYUEVDVF9FUSgiIiwgZGVzdDEp
OwotCi0gIC8vIEEgbm9ybWFsIFN0cmluZy4KLSAgY29uc3QgU3RyaW5nIHNyYzIoIkhpIik7Ci0g
IGNvbnN0IDo6c3RyaW5nIGRlc3QyID0gc3JjMjsKLSAgRVhQRUNUX0VRKCJIaSIsIGRlc3QyKTsK
LQotICBjb25zdCBTdHJpbmcgc3JjMygieFwweSIsIDMpOwotICBjb25zdCA6OnN0cmluZyBkZXN0
MyA9IHNyYzM7Ci0gIEVYUEVDVF9FUSg6OnN0cmluZygieFwweSIsIDMpLCBkZXN0Myk7Ci19Ci0K
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLQotLy8gVGVzdHMgU3RyaW5nOjpT
aG93Q1N0cmluZ1F1b3RlZCgpLgotVEVTVChTdHJpbmdUZXN0LCBTaG93Q1N0cmluZ1F1b3RlZCkg
ewotICBFWFBFQ1RfU1RSRVEoIihudWxsKSIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OlNob3dD
U3RyaW5nUXVvdGVkKE5VTEwpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIlwiXCIiLAotICAg
ICAgICAgICAgICAgU3RyaW5nOjpTaG93Q1N0cmluZ1F1b3RlZCgiIikuY19zdHIoKSk7Ci0gIEVY
UEVDVF9TVFJFUSgiXCJmb29cIiIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OlNob3dDU3RyaW5n
UXVvdGVkKCJmb28iKS5jX3N0cigpKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjplbXB0eSgpLgot
VEVTVChTdHJpbmdUZXN0LCBFbXB0eSkgewotICBFWFBFQ1RfVFJVRShTdHJpbmcoIiIpLmVtcHR5
KCkpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCkuZW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShT
dHJpbmcoTlVMTCkuZW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShTdHJpbmcoImEiKS5lbXB0eSgp
KTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiXDAiLCAxKS5lbXB0eSgpKTsKLX0KLQotLy8gVGVz
dHMgU3RyaW5nOjpDb21wYXJlKCkuCi1URVNUKFN0cmluZ1Rlc3QsIENvbXBhcmUpIHsKLSAgLy8g
TlVMTCB2cyBOVUxMLgotICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCkuQ29tcGFyZShTdHJpbmcoKSkp
OwotCi0gIC8vIE5VTEwgdnMgbm9uLU5VTEwuCi0gIEVYUEVDVF9FUSgtMSwgU3RyaW5nKCkuQ29t
cGFyZShTdHJpbmcoIiIpKSk7Ci0KLSAgLy8gTm9uLU5VTEwgdnMgTlVMTC4KLSAgRVhQRUNUX0VR
KDEsIFN0cmluZygiIikuQ29tcGFyZShTdHJpbmcoKSkpOwotCi0gIC8vIFRoZSBmb2xsb3dpbmcg
Y292ZXJzIG5vbi1OVUxMIHZzIG5vbi1OVUxMLgotCi0gIC8vICIiIHZzICIiLgotICBFWFBFQ1Rf
RVEoMCwgU3RyaW5nKCIiKS5Db21wYXJlKFN0cmluZygiIikpKTsKLQotICAvLyAiIiB2cyBub24t
IiIuCi0gIEVYUEVDVF9FUSgtMSwgU3RyaW5nKCIiKS5Db21wYXJlKFN0cmluZygiXDAiLCAxKSkp
OwotICBFWFBFQ1RfRVEoLTEsIFN0cmluZygiIikuQ29tcGFyZSgiICIpKTsKLQotICAvLyBOb24t
IiIgdnMgIiIuCi0gIEVYUEVDVF9FUSgxLCBTdHJpbmcoImEiKS5Db21wYXJlKFN0cmluZygiIikp
KTsKLQotICAvLyBUaGUgZm9sbG93aW5nIGNvdmVycyBub24tIiIgdnMgbm9uLSIiLgotCi0gIC8v
IFNhbWUgbGVuZ3RoIGFuZCBlcXVhbC4KLSAgRVhQRUNUX0VRKDAsIFN0cmluZygiYSIpLkNvbXBh
cmUoU3RyaW5nKCJhIikpKTsKLQotICAvLyBTYW1lIGxlbmd0aCBhbmQgZGlmZmVyZW50LgotICBF
WFBFQ1RfRVEoLTEsIFN0cmluZygiYVwwYiIsIDMpLkNvbXBhcmUoU3RyaW5nKCJhXDBjIiwgMykp
KTsKLSAgRVhQRUNUX0VRKDEsIFN0cmluZygiYiIpLkNvbXBhcmUoU3RyaW5nKCJhIikpKTsKLQot
ICAvLyBEaWZmZXJlbnQgbGVuZ3Rocy4KLSAgRVhQRUNUX0VRKC0xLCBTdHJpbmcoImEiKS5Db21w
YXJlKFN0cmluZygiYWIiKSkpOwotICBFWFBFQ1RfRVEoLTEsIFN0cmluZygiYSIpLkNvbXBhcmUo
U3RyaW5nKCJhXDAiLCAyKSkpOwotICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCJhYmMiKS5Db21wYXJl
KFN0cmluZygiYWFjZCIpKSk7Ci19Ci0KLS8vIFRlc3RzIFN0cmluZzo6b3BlcmF0b3I9PSgpLgot
VEVTVChTdHJpbmdUZXN0LCBFcXVhbHMpIHsKLSAgY29uc3QgU3RyaW5nIG51bGwoTlVMTCk7Ci0g
IEVYUEVDVF9UUlVFKG51bGwgPT0gTlVMTCk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKG51
bGwgPT0gIiIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShudWxsID09ICJiYXIiKTsgIC8v
IE5PTElOVAotCi0gIGNvbnN0IFN0cmluZyBlbXB0eSgiIik7Ci0gIEVYUEVDVF9GQUxTRShlbXB0
eSA9PSBOVUxMKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShlbXB0eSA9PSAiIik7ICAvLyBO
T0xJTlQKLSAgRVhQRUNUX0ZBTFNFKGVtcHR5ID09ICJiYXIiKTsgIC8vIE5PTElOVAotCi0gIGNv
bnN0IFN0cmluZyBmb28oImZvbyIpOwotICBFWFBFQ1RfRkFMU0UoZm9vID09IE5VTEwpOyAgLy8g
Tk9MSU5UCi0gIEVYUEVDVF9GQUxTRShmb28gPT0gIiIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9G
QUxTRShmb28gPT0gImJhciIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKGZvbyA9PSAiZm9v
Iik7ICAvLyBOT0xJTlQKLQotICBjb25zdCBTdHJpbmcgYmFyKCJ4XDB5IiwgMyk7Ci0gIEVYUEVD
VF9GQUxTRShiYXIgPT0gIngiKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpvcGVyYXRvciE9KCku
Ci1URVNUKFN0cmluZ1Rlc3QsIE5vdEVxdWFscykgewotICBjb25zdCBTdHJpbmcgbnVsbChOVUxM
KTsKLSAgRVhQRUNUX0ZBTFNFKG51bGwgIT0gTlVMTCk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RS
VUUobnVsbCAhPSAiIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUobnVsbCAhPSAiYmFyIik7
ICAvLyBOT0xJTlQKLQotICBjb25zdCBTdHJpbmcgZW1wdHkoIiIpOwotICBFWFBFQ1RfVFJVRShl
bXB0eSAhPSBOVUxMKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRkFMU0UoZW1wdHkgIT0gIiIpOyAg
Ly8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKGVtcHR5ICE9ICJiYXIiKTsgIC8vIE5PTElOVAotCi0g
IGNvbnN0IFN0cmluZyBmb28oImZvbyIpOwotICBFWFBFQ1RfVFJVRShmb28gIT0gTlVMTCk7ICAv
LyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUoZm9vICE9ICIiKTsgIC8vIE5PTElOVAotICBFWFBFQ1Rf
VFJVRShmb28gIT0gImJhciIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShmb28gIT0gImZv
byIpOyAgLy8gTk9MSU5UCi0KLSAgY29uc3QgU3RyaW5nIGJhcigieFwweSIsIDMpOwotICBFWFBF
Q1RfVFJVRShiYXIgIT0gIngiKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpsZW5ndGgoKS4KLVRF
U1QoU3RyaW5nVGVzdCwgTGVuZ3RoKSB7Ci0gIEVYUEVDVF9FUSgwVSwgU3RyaW5nKCkubGVuZ3Ro
KCkpOwotICBFWFBFQ1RfRVEoMFUsIFN0cmluZygiIikubGVuZ3RoKCkpOwotICBFWFBFQ1RfRVEo
MlUsIFN0cmluZygiYWIiKS5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgzVSwgU3RyaW5nKCJhXDBi
IiwgMykubGVuZ3RoKCkpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6OkVuZHNXaXRoKCkuCi1URVNU
KFN0cmluZ1Rlc3QsIEVuZHNXaXRoKSB7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiZm9vYmFyIiku
RW5kc1dpdGgoImJhciIpKTsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCJmb29iYXIiKS5FbmRzV2l0
aCgiIikpOwotICBFWFBFQ1RfVFJVRShTdHJpbmcoIiIpLkVuZHNXaXRoKCIiKSk7Ci0KLSAgRVhQ
RUNUX0ZBTFNFKFN0cmluZygiZm9vYmFyIikuRW5kc1dpdGgoImZvbyIpKTsKLSAgRVhQRUNUX0ZB
TFNFKFN0cmluZygiIikuRW5kc1dpdGgoImZvbyIpKTsKLX0KLQogLy8gVGVzdHMgU3RyaW5nOjpF
bmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgpLgogVEVTVChTdHJpbmdUZXN0LCBFbmRzV2l0aENhc2VJ
bnNlbnNpdGl2ZSkgewotICBFWFBFQ1RfVFJVRShTdHJpbmcoImZvb2JhciIpLkVuZHNXaXRoQ2Fz
ZUluc2Vuc2l0aXZlKCJCQVIiKSk7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiZm9vYmFSIikuRW5k
c1dpdGhDYXNlSW5zZW5zaXRpdmUoImJhciIpKTsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCJmb29i
YXIiKS5FbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiIikpOwotICBFWFBFQ1RfVFJVRShTdHJpbmco
IiIpLkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCIiKSk7CisgIEVYUEVDVF9UUlVFKFN0cmluZzo6
RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImZvb2JhciIsICJCQVIiKSk7CisgIEVYUEVDVF9UUlVF
KFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImZvb2JhUiIsICJiYXIiKSk7CisgIEVY
UEVDVF9UUlVFKFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImZvb2JhciIsICIiKSk7
CisgIEVYUEVDVF9UUlVFKFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoIiIsICIiKSk7
CiAKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiRm9vYmFyIikuRW5kc1dpdGhDYXNlSW5zZW5zaXRp
dmUoImZvbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiZm9vYmFyIikuRW5kc1dpdGhDYXNl
SW5zZW5zaXRpdmUoIkZvbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiIikuRW5kc1dpdGhD
YXNlSW5zZW5zaXRpdmUoImZvbyIpKTsKKyAgRVhQRUNUX0ZBTFNFKFN0cmluZzo6RW5kc1dpdGhD
YXNlSW5zZW5zaXRpdmUoIkZvb2JhciIsICJmb28iKSk7CisgIEVYUEVDVF9GQUxTRShTdHJpbmc6
OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCJmb29iYXIiLCAiRm9vIikpOworICBFWFBFQ1RfRkFM
U0UoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiIiwgImZvbyIpKTsKIH0KIAogLy8g
QysrQnVpbGRlcidzIHByZXByb2Nlc3NvciBpcyBidWdneTsgaXQgZmFpbHMgdG8gZXhwYW5kIG1h
Y3JvcyB0aGF0CkBAIC0xMDc5LDg3ICsxMDQ4LDYgQEAgVEVTVChTdHJpbmdUZXN0LCBDYXNlSW5z
ZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscykgewogICBFWFBFQ1RfVFJVRShTdHJpbmc6OkNhc2VJ
bnNlbnNpdGl2ZVdpZGVDU3RyaW5nRXF1YWxzKEwiRk9PQkFSIiwgTCJmb29iYXIiKSk7CiB9CiAK
LS8vIFRlc3RzIHRoYXQgTlVMTCBjYW4gYmUgYXNzaWduZWQgdG8gYSBTdHJpbmcuCi1URVNUKFN0
cmluZ1Rlc3QsIENhbkJlQXNzaWduZWROVUxMKSB7Ci0gIGNvbnN0IFN0cmluZyBzcmMoTlVMTCk7
Ci0gIFN0cmluZyBkZXN0OwotCi0gIGRlc3QgPSBzcmM7Ci0gIEVYUEVDVF9TVFJFUShOVUxMLCBk
ZXN0LmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBlbXB0eSBzdHJpbmcgIiIgY2Fu
IGJlIGFzc2lnbmVkIHRvIGEgU3RyaW5nLgotVEVTVChTdHJpbmdUZXN0LCBDYW5CZUFzc2lnbmVk
RW1wdHkpIHsKLSAgY29uc3QgU3RyaW5nIHNyYygiIik7Ci0gIFN0cmluZyBkZXN0OwotCi0gIGRl
c3QgPSBzcmM7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgZGVzdC5jX3N0cigpKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBhIG5vbi1lbXB0eSBzdHJpbmcgY2FuIGJlIGFzc2lnbmVkIHRvIGEgU3RyaW5nLgot
VEVTVChTdHJpbmdUZXN0LCBDYW5CZUFzc2lnbmVkTm9uRW1wdHkpIHsKLSAgY29uc3QgU3RyaW5n
IHNyYygiaGVsbG8iKTsKLSAgU3RyaW5nIGRlc3Q7Ci0gIGRlc3QgPSBzcmM7Ci0gIEVYUEVDVF9F
USg1VSwgZGVzdC5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiaGVsbG8iLCBkZXN0LmNfc3Ry
KCkpOwotCi0gIGNvbnN0IFN0cmluZyBzcmMyKCJ4XDB5IiwgMyk7Ci0gIFN0cmluZyBkZXN0MjsK
LSAgZGVzdDIgPSBzcmMyOwotICBFWFBFQ1RfRVEoM1UsIGRlc3QyLmxlbmd0aCgpKTsKLSAgRVhQ
RUNUX0VRKCd4JywgZGVzdDIuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgnXDAnLCBkZXN0Mi5j
X3N0cigpWzFdKTsKLSAgRVhQRUNUX0VRKCd5JywgZGVzdDIuY19zdHIoKVsyXSk7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgYSBTdHJpbmcgY2FuIGJlIGFzc2lnbmVkIHRvIGl0c2VsZi4KLVRFU1QoU3Ry
aW5nVGVzdCwgQ2FuQmVBc3NpZ25lZFNlbGYpIHsKLSAgU3RyaW5nIGRlc3QoImhlbGxvIik7Ci0K
LSAgZGVzdCA9IGRlc3Q7Ci0gIEVYUEVDVF9TVFJFUSgiaGVsbG8iLCBkZXN0LmNfc3RyKCkpOwot
fQotCi0vLyBTdW4gU3R1ZGlvIDwgMTIgaW5jb3JyZWN0bHkgcmVqZWN0cyB0aGlzIGNvZGUgZHVl
IHRvIGFuIG92ZXJsb2FkaW5nCi0vLyBhbWJpZ3VpdHkuCi0jaWYgIShkZWZpbmVkKF9fU1VOUFJP
X0NDKSAmJiBfX1NVTlBST19DQyA8IDB4NTkwKQotLy8gVGVzdHMgc3RyZWFtaW5nIGEgU3RyaW5n
LgotVEVTVChTdHJpbmdUZXN0LCBTdHJlYW1zKSB7Ci0gIEVYUEVDVF9FUShTdHJlYW1hYmxlVG9T
dHJpbmcoU3RyaW5nKCkpLCAiKG51bGwpIik7Ci0gIEVYUEVDVF9FUShTdHJlYW1hYmxlVG9TdHJp
bmcoU3RyaW5nKCIiKSksICIiKTsKLSAgRVhQRUNUX0VRKFN0cmVhbWFibGVUb1N0cmluZyhTdHJp
bmcoImFcMGIiLCAzKSksICJhXFwwYiIpOwotfQotI2VuZGlmCi0KLS8vIFRlc3RzIHRoYXQgU3Ry
aW5nOjpGb3JtYXQoKSB3b3Jrcy4KLVRFU1QoU3RyaW5nVGVzdCwgRm9ybWF0V29ya3MpIHsKLSAg
Ly8gTm9ybWFsIGNhc2U6IHRoZSBmb3JtYXQgc3BlYyBpcyB2YWxpZCwgdGhlIGFyZ3VtZW50cyBt
YXRjaCB0aGUKLSAgLy8gc3BlYywgYW5kIHRoZSByZXN1bHQgaXMgPCA0MDk1IGNoYXJhY3RlcnMu
Ci0gIEVYUEVDVF9TVFJFUSgiSGVsbG8sIDQyIiwgU3RyaW5nOjpGb3JtYXQoIiVzLCAlZCIsICJI
ZWxsbyIsIDQyKS5jX3N0cigpKTsKLQotICAvLyBFZGdlIGNhc2U6IHRoZSByZXN1bHQgaXMgNDA5
NSBjaGFyYWN0ZXJzLgotICBjaGFyIGJ1ZmZlcls0MDk2XTsKLSAgY29uc3Qgc2l6ZV90IGtTaXpl
ID0gc2l6ZW9mKGJ1ZmZlcik7Ci0gIG1lbXNldChidWZmZXIsICdhJywga1NpemUgLSAxKTsKLSAg
YnVmZmVyW2tTaXplIC0gMV0gPSAnXDAnOwotICBFWFBFQ1RfU1RSRVEoYnVmZmVyLCBTdHJpbmc6
OkZvcm1hdCgiJXMiLCBidWZmZXIpLmNfc3RyKCkpOwotCi0gIC8vIFRoZSByZXN1bHQgbmVlZHMg
dG8gYmUgNDA5NiBjaGFyYWN0ZXJzLCBleGNlZWRpbmcgRm9ybWF0KCkncyBsaW1pdC4KLSAgRVhQ
RUNUX1NUUkVRKCI8Zm9ybWF0dGluZyBlcnJvciBvciBidWZmZXIgZXhjZWVkZWQ+IiwKLSAgICAg
ICAgICAgICAgIFN0cmluZzo6Rm9ybWF0KCJ4JXMiLCBidWZmZXIpLmNfc3RyKCkpOwotCi0jaWYg
R1RFU1RfT1NfTElOVVgKLSAgLy8gT24gTGludXgsIGludmFsaWQgZm9ybWF0IHNwZWMgc2hvdWxk
IGxlYWQgdG8gYW4gZXJyb3IgbWVzc2FnZS4KLSAgLy8gSW4gb3RoZXIgZW52aXJvbm1lbnQgKGUu
Zy4gTVNWQyBvbiBXaW5kb3dzKSwgU3RyaW5nOjpGb3JtYXQoKSBtYXkKLSAgLy8gc2ltcGx5IGln
bm9yZSBhIGJhZCBmb3JtYXQgc3BlYywgc28gdGhpcyBhc3NlcnRpb24gaXMgcnVuIG9uCi0gIC8v
IExpbnV4IG9ubHkuCi0gIEVYUEVDVF9TVFJFUSgiPGZvcm1hdHRpbmcgZXJyb3Igb3IgYnVmZmVy
IGV4Y2VlZGVkPiIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OkZvcm1hdCgiJSIpLmNfc3RyKCkp
OwotI2VuZGlmCi19Ci0KICNpZiBHVEVTVF9PU19XSU5ET1dTCiAKIC8vIFRlc3RzIFN0cmluZzo6
U2hvd1dpZGVDU3RyaW5nKCkuCkBAIC0xMTcwLDE3ICsxMDU4LDcgQEAgVEVTVChTdHJpbmdUZXN0
LCBTaG93V2lkZUNTdHJpbmcpIHsKICAgRVhQRUNUX1NUUkVRKCJmb28iLCBTdHJpbmc6OlNob3dX
aWRlQ1N0cmluZyhMImZvbyIpLmNfc3RyKCkpOwogfQogCi0vLyBUZXN0cyBTdHJpbmc6OlNob3dX
aWRlQ1N0cmluZ1F1b3RlZCgpLgotVEVTVChTdHJpbmdUZXN0LCBTaG93V2lkZUNTdHJpbmdRdW90
ZWQpIHsKLSAgRVhQRUNUX1NUUkVRKCIobnVsbCkiLAotICAgICAgICAgICAgICAgU3RyaW5nOjpT
aG93V2lkZUNTdHJpbmdRdW90ZWQoTlVMTCkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiTFwi
XCIiLAotICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoTCIiKS5j
X3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJMXCJmb29cIiIsCi0gICAgICAgICAgICAgICBTdHJp
bmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChMImZvbyIpLmNfc3RyKCkpOwotfQotCi0jaWYgR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIFRFU1Qo
U3RyaW5nVGVzdCwgQW5zaUFuZFV0ZjE2TnVsbCkgewogICBFWFBFQ1RfRVEoTlVMTCwgU3RyaW5n
OjpBbnNpVG9VdGYxNihOVUxMKSk7CiAgIEVYUEVDVF9FUShOVUxMLCBTdHJpbmc6OlV0ZjE2VG9B
bnNpKE5VTEwpKTsKQEAgLTEyMDMsNyArMTA4MSw3IEBAIFRFU1QoU3RyaW5nVGVzdCwgQW5zaUFu
ZFV0ZjE2Q29udmVydFBhdGhDaGFycykgewogICBFWFBFQ1RfRVEoMCwgd2NzbmNtcChMIi46XFwg
XCIqPyIsIHV0ZjE2LCAzKSk7CiAgIGRlbGV0ZSBbXSB1dGYxNjsKIH0KLSNlbmRpZiAgLy8gR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxF
CiAKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCkBAIC0xMzE3LDYgKzExOTUsMTcgQEAg
VEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIENhdGNoZXNGYXRhbEZhbGl1cmUpIHsKICAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmF0YWxGYWlsdXJlKCksICJFeHBlY3RlZCBmYXRhbCBm
YWlsdXJlLiIpOwogfQogCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK1RFU1RfRihFeHBl
Y3RGYXRhbEZhaWx1cmVUZXN0LCBBY2NlcHRzU3RyaW5nT2JqZWN0KSB7CisgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFkZEZhdGFsRmFpbHVyZSgpLCA6OnN0cmluZygiRXhwZWN0ZWQgZmF0YWwgZmFp
bHVyZS4iKSk7Cit9CisjZW5kaWYKKworVEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEFj
Y2VwdHNTdGRTdHJpbmdPYmplY3QpIHsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmF0YWxG
YWlsdXJlKCksCisgICAgICAgICAgICAgICAgICAgICAgIDo6c3RkOjpzdHJpbmcoIkV4cGVjdGVk
IGZhdGFsIGZhaWx1cmUuIikpOworfQorCiBURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwg
Q2F0Y2hlc0ZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcykgewogICAvLyBXZSBoYXZlIGFub3RoZXIg
dGVzdCBiZWxvdyB0byB2ZXJpZnkgdGhhdCB0aGUgbWFjcm8gY2F0Y2hlcyBmYXRhbAogICAvLyBm
YWlsdXJlcyBnZW5lcmF0ZWQgb24gYW5vdGhlciB0aHJlYWQuCkBAIC0xMzI2LDcgKzEyMTUsNyBA
QCBURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc0ZhdGFsRmFpbHVyZU9uQWxs
VGhyZWFkcykgewogCiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBTaWxlbmNlcyB3YXJuaW5nczog
IkNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZSIKLSNwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjCisj
IHByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MKICNlbmRpZgogCiAvLyBUZXN0cyB0aGF0IEVYUEVD
VF9GQVRBTF9GQUlMVVJFKCkgY2FuIGJlIHVzZWQgaW4gYSBub24tdm9pZApAQCAtMTM1NCw3ICsx
MjQzLDcgQEAgdm9pZCBEb2VzTm90QWJvcnRIZWxwZXIoYm9vbCogYWJvcnRlZCkgewogCiAjaWZk
ZWYgX19CT1JMQU5EQ19fCiAvLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2aW91cyAiI3By
YWdtYSBvcHRpb24gcHVzaCIgc3VwcHJlc3NlZCB0aGVtLgotI3ByYWdtYSBvcHRpb24gcG9wCisj
IHByYWdtYSBvcHRpb24gcG9wCiAjZW5kaWYKIAogVEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVyZVRl
c3QsIERvZXNOb3RBYm9ydCkgewpAQCAtMTM3MSw4ICsxMjYwLDggQEAgc3RhdGljIGludCBnbG9i
YWxfdmFyID0gMDsKICNkZWZpbmUgR1RFU1RfVVNFX1VOUFJPVEVDVEVEX0NPTU1BXyBnbG9iYWxf
dmFyKyssIGdsb2JhbF92YXIrKwogCiBURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgQWNj
ZXB0c01hY3JvVGhhdEV4cGFuZHNUb1VucHJvdGVjdGVkQ29tbWEpIHsKLSNpZiAhZGVmaW5lZChf
X0JPUkxBTkRDX18pIHx8IF9fQk9STEFORENfXyA+PSAweDYwMAotICAvLyBJQ0UncyBpbiBDKytC
dWlsZGVyIDIwMDcuCisjaWZuZGVmIF9fQk9STEFORENfXworICAvLyBJQ0UncyBpbiBDKytCdWls
ZGVyLgogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CiAgICAgR1RFU1RfVVNFX1VOUFJPVEVDVEVE
X0NPTU1BXzsKICAgICBBZGRGYXRhbEZhaWx1cmUoKTsKQEAgLTEzOTQsNiArMTI4MywxOCBAQCBU
RVNUX0YoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc05vbmZhdGFsRmFpbHVyZSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUu
Iik7CiB9CiAKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworVEVTVF9GKEV4cGVjdE5vbmZh
dGFsRmFpbHVyZVRlc3QsIEFjY2VwdHNTdHJpbmdPYmplY3QpIHsKKyAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoQWRkTm9uZmF0YWxGYWlsdXJlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
IDo6c3RyaW5nKCJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKSk7Cit9CisjZW5kaWYKKwor
VEVTVF9GKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEFjY2VwdHNTdGRTdHJpbmdPYmplY3Qp
IHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQWRkTm9uZmF0YWxGYWlsdXJlKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIDo6c3RkOjpzdHJpbmcoIkV4cGVjdGVkIG5vbi1mYXRhbCBm
YWlsdXJlLiIpKTsKK30KKwogVEVTVF9GKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIENhdGNo
ZXNOb25mYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKICAgLy8gV2UgaGF2ZSBhbm90aGVyIHRl
c3QgYmVsb3cgdG8gdmVyaWZ5IHRoYXQgdGhlIG1hY3JvIGNhdGNoZXMKICAgLy8gbm9uLWZhdGFs
IGZhaWx1cmVzIGdlbmVyYXRlZCBvbiBhbm90aGVyIHRocmVhZC4KQEAgLTE0ODMsOCArMTM4NCw3
IEBAIGNsYXNzIFRlc3RSZXN1bHRUZXN0IDogcHVibGljIFRlc3QgewogICAgIC8vIEluIG9yZGVy
IHRvIHRlc3QgVGVzdFJlc3VsdCwgd2UgbmVlZCB0byBtb2RpZnkgaXRzIGludGVybmFsCiAgICAg
Ly8gc3RhdGUsIGluIHBhcnRpY3VsYXIgdGhlIFRlc3RQYXJ0UmVzdWx0IHZlY3RvciBpdCBob2xk
cy4KICAgICAvLyB0ZXN0X3BhcnRfcmVzdWx0cygpIHJldHVybnMgYSBjb25zdCByZWZlcmVuY2Ug
dG8gdGhpcyB2ZWN0b3IuCi0gICAgLy8gV2UgY2FzdCBpdCB0byBhIG5vbi1jb25zdCBvYmplY3Qg
cy50LiBpdCBjYW4gYmUgbW9kaWZpZWQgKHllcywKLSAgICAvLyB0aGlzIGlzIGEgaGFjaykuCisg
ICAgLy8gV2UgY2FzdCBpdCB0byBhIG5vbi1jb25zdCBvYmplY3Qgcy50LiBpdCBjYW4gYmUgbW9k
aWZpZWQKICAgICBUUFJWZWN0b3IqIHJlc3VsdHMxID0gY29uc3RfY2FzdDxUUFJWZWN0b3IqPigK
ICAgICAgICAgJlRlc3RSZXN1bHRBY2Nlc3Nvcjo6dGVzdF9wYXJ0X3Jlc3VsdHMoKnIxKSk7CiAg
ICAgVFBSVmVjdG9yKiByZXN1bHRzMiA9IGNvbnN0X2Nhc3Q8VFBSVmVjdG9yKj4oCkBAIC0xNTA5
LDcgKzE0MDksNyBAQCBjbGFzcyBUZXN0UmVzdWx0VGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICBk
ZWxldGUgcjI7CiAgIH0KIAotICAvLyBIZWxwZXIgdGhhdCBjb21wYXJlcyB0d28gdHdvIFRlc3RQ
YXJ0UmVzdWx0cy4KKyAgLy8gSGVscGVyIHRoYXQgY29tcGFyZXMgdHdvIFRlc3RQYXJ0UmVzdWx0
cy4KICAgc3RhdGljIHZvaWQgQ29tcGFyZVRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVz
dWx0JiBleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRlc3RQYXJ0UmVzdWx0JiBhY3R1YWwpIHsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQudHlwZSgp
LCBhY3R1YWwudHlwZSgpKTsKQEAgLTE1NjYsNyArMTQ2Niw3IEBAIFRFU1QoVGVzdFJlc3VsdFBy
b3BlcnR5VGVzdCwgTm9Qcm9wZXJ0aWVzRm91bmRXaGVuTm9uZUFyZUFkZGVkKSB7CiBURVNUKFRl
c3RSZXN1bHRQcm9wZXJ0eVRlc3QsIE9uZVByb3BlcnR5Rm91bmRXaGVuQWRkZWQpIHsKICAgVGVz
dFJlc3VsdCB0ZXN0X3Jlc3VsdDsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5KCJrZXlfMSIsICIx
Iik7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBw
cm9wZXJ0eSk7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVz
dWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eSk7CiAgIEFTU0VSVF9FUSgxLCB0ZXN0X3Jlc3VsdC50
ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwogICBjb25zdCBUZXN0UHJvcGVydHkmIGFjdHVhbF9wcm9w
ZXJ0eSA9IHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgwKTsKICAgRVhQRUNUX1NUUkVRKCJr
ZXlfMSIsIGFjdHVhbF9wcm9wZXJ0eS5rZXkoKSk7CkBAIC0xNTc4LDggKzE0NzgsOCBAQCBURVNU
KFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIE11bHRpcGxlUHJvcGVydGllc0ZvdW5kV2hlbkFkZGVk
KSB7CiAgIFRlc3RSZXN1bHQgdGVzdF9yZXN1bHQ7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8x
KCJrZXlfMSIsICIxIik7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8yKCJrZXlfMiIsICIyIik7
Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9w
ZXJ0eV8xKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1
bHQsIHByb3BlcnR5XzIpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0
ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMSk7CisgIFRlc3RSZXN1bHRBY2Nlc3Nv
cjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8yKTsK
ICAgQVNTRVJUX0VRKDIsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKSk7CiAgIGNv
bnN0IFRlc3RQcm9wZXJ0eSYgYWN0dWFsX3Byb3BlcnR5XzEgPSB0ZXN0X3Jlc3VsdC5HZXRUZXN0
UHJvcGVydHkoMCk7CiAgIEVYUEVDVF9TVFJFUSgia2V5XzEiLCBhY3R1YWxfcHJvcGVydHlfMS5r
ZXkoKSk7CkBAIC0xNTk3LDEwICsxNDk3LDEwIEBAIFRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVz
dCwgT3ZlcnJpZGVzVmFsdWVzRm9yRHVwbGljYXRlS2V5cykgewogICBUZXN0UHJvcGVydHkgcHJv
cGVydHlfMl8xKCJrZXlfMiIsICIyIik7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8xXzIoImtl
eV8xIiwgIjEyIik7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8yXzIoImtleV8yIiwgIjIyIik7
Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9w
ZXJ0eV8xXzEpOwotICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jl
c3VsdCwgcHJvcGVydHlfMl8xKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0
eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzFfMik7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVj
b3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9wZXJ0eV8yXzIpOworICBUZXN0UmVzdWx0QWNj
ZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlf
MV8xKTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQs
ICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzJfMSk7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3Jk
UHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8xXzIpOworICBUZXN0
UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwg
cHJvcGVydHlfMl8yKTsKIAogICBBU1NFUlRfRVEoMiwgdGVzdF9yZXN1bHQudGVzdF9wcm9wZXJ0
eV9jb3VudCgpKTsKICAgY29uc3QgVGVzdFByb3BlcnR5JiBhY3R1YWxfcHJvcGVydHlfMSA9IHRl
c3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgwKTsKQEAgLTE2MTMsMTQgKzE1MTMsMTQgQEAgVEVT
VChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBPdmVycmlkZXNWYWx1ZXNGb3JEdXBsaWNhdGVLZXlz
KSB7CiB9CiAKIC8vIFRlc3RzIFRlc3RSZXN1bHQ6OkdldFRlc3RQcm9wZXJ0eSgpLgotVEVTVChU
ZXN0UmVzdWx0UHJvcGVydHlEZWF0aFRlc3QsIEdldFRlc3RQcm9wZXJ0eSkgeworVEVTVChUZXN0
UmVzdWx0UHJvcGVydHlUZXN0LCBHZXRUZXN0UHJvcGVydHkpIHsKICAgVGVzdFJlc3VsdCB0ZXN0
X3Jlc3VsdDsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzEoImtleV8xIiwgIjEiKTsKICAgVGVz
dFByb3BlcnR5IHByb3BlcnR5XzIoImtleV8yIiwgIjIiKTsKICAgVGVzdFByb3BlcnR5IHByb3Bl
cnR5XzMoImtleV8zIiwgIjMiKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0
eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzEpOwotICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29y
ZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMik7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nv
cjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9wZXJ0eV8zKTsKKyAgVGVzdFJlc3Vs
dEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3Bl
cnR5XzEpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3Vs
dCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMik7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3Jk
UHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8zKTsKIAogICBjb25z
dCBUZXN0UHJvcGVydHkmIGZldGNoZWRfcHJvcGVydHlfMSA9IHRlc3RfcmVzdWx0LkdldFRlc3RQ
cm9wZXJ0eSgwKTsKICAgY29uc3QgVGVzdFByb3BlcnR5JiBmZXRjaGVkX3Byb3BlcnR5XzIgPSB0
ZXN0X3Jlc3VsdC5HZXRUZXN0UHJvcGVydHkoMSk7CkBAIC0xNjM5LDQxICsxNTM5LDE1IEBAIFRF
U1QoVGVzdFJlc3VsdFByb3BlcnR5RGVhdGhUZXN0LCBHZXRUZXN0UHJvcGVydHkpIHsKICAgRVhQ
RUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh0ZXN0X3Jlc3VsdC5HZXRUZXN0UHJvcGVydHkoLTEpLCAi
Iik7CiB9CiAKLS8vIFdoZW4gYSBwcm9wZXJ0eSB1c2luZyBhIHJlc2VydmVkIGtleSBpcyBzdXBw
bGllZCB0byB0aGlzIGZ1bmN0aW9uLCBpdCB0ZXN0cwotLy8gdGhhdCBhIG5vbi1mYXRhbCBmYWls
dXJlIGlzIGFkZGVkLCBhIGZhdGFsIGZhaWx1cmUgaXMgbm90IGFkZGVkLCBhbmQgdGhhdCB0aGUK
LS8vIHByb3BlcnR5IGlzIG5vdCByZWNvcmRlZC4KLXZvaWQgRXhwZWN0Tm9uRmF0YWxGYWlsdXJl
UmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoY29uc3QgY2hhcioga2V5KSB7Ci0gIFRl
c3RSZXN1bHQgdGVzdF9yZXN1bHQ7Ci0gIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eShrZXksICIxIik7
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAotICAgICAgVGVzdFJlc3VsdEFjY2Vzc29yOjpS
ZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5KSwKLSAgICAgICJSZXNlcnZlZCBr
ZXkiKTsKLSAgQVNTRVJUX0VRKDAsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKSkg
PDwgIk5vdCByZWNvcmRlZCI7Ci19Ci0KLS8vIEF0dGVtcHRpbmcgdG8gcmVjb3JkaW5nIGEgcHJv
cGVydHkgd2l0aCB0aGUgUmVzZXJ2ZWQgbGl0ZXJhbCAibmFtZSIKLS8vIHNob3VsZCBhZGQgYSBu
b24tZmF0YWwgZmFpbHVyZSBhbmQgdGhlIHByb3BlcnR5IHNob3VsZCBub3QgYmUgcmVjb3JkZWQu
Ci1URVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIEFkZEZhaWx1cmVXaGVuVXNpbmdSZXNlcnZl
ZEtleUNhbGxlZE5hbWUpIHsKLSAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVy
dHlXaXRoUmVzZXJ2ZWRLZXkoIm5hbWUiKTsKLX0KLQotLy8gQXR0ZW1wdGluZyB0byByZWNvcmRp
bmcgYSBwcm9wZXJ0eSB3aXRoIHRoZSBSZXNlcnZlZCBsaXRlcmFsICJzdGF0dXMiCi0vLyBzaG91
bGQgYWRkIGEgbm9uLWZhdGFsIGZhaWx1cmUgYW5kIHRoZSBwcm9wZXJ0eSBzaG91bGQgbm90IGJl
IHJlY29yZGVkLgotVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBBZGRGYWlsdXJlV2hlblVz
aW5nUmVzZXJ2ZWRLZXlDYWxsZWRTdGF0dXMpIHsKLSAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVj
b3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoInN0YXR1cyIpOwotfQotCi0vLyBBdHRlbXB0
aW5nIHRvIHJlY29yZGluZyBhIHByb3BlcnR5IHdpdGggdGhlIFJlc2VydmVkIGxpdGVyYWwgInRp
bWUiCi0vLyBzaG91bGQgYWRkIGEgbm9uLWZhdGFsIGZhaWx1cmUgYW5kIHRoZSBwcm9wZXJ0eSBz
aG91bGQgbm90IGJlIHJlY29yZGVkLgotVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBBZGRG
YWlsdXJlV2hlblVzaW5nUmVzZXJ2ZWRLZXlDYWxsZWRUaW1lKSB7Ci0gIEV4cGVjdE5vbkZhdGFs
RmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5KCJ0aW1lIik7Ci19Ci0KLS8v
IEF0dGVtcHRpbmcgdG8gcmVjb3JkaW5nIGEgcHJvcGVydHkgd2l0aCB0aGUgUmVzZXJ2ZWQgbGl0
ZXJhbCAiY2xhc3NuYW1lIgotLy8gc2hvdWxkIGFkZCBhIG5vbi1mYXRhbCBmYWlsdXJlIGFuZCB0
aGUgcHJvcGVydHkgc2hvdWxkIG5vdCBiZSByZWNvcmRlZC4KLVRFU1QoVGVzdFJlc3VsdFByb3Bl
cnR5VGVzdCwgQWRkRmFpbHVyZVdoZW5Vc2luZ1Jlc2VydmVkS2V5Q2FsbGVkQ2xhc3NuYW1lKSB7
Ci0gIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5
KCJjbGFzc25hbWUiKTsKLX0KKy8vIFRlc3RzIHRoZSBUZXN0IGNsYXNzLgorLy8KKy8vIEl0J3Mg
ZGlmZmljdWx0IHRvIHRlc3QgZXZlcnkgcHVibGljIG1ldGhvZCBvZiB0aGlzIGNsYXNzICh3ZSBh
cmUKKy8vIGFscmVhZHkgc3RyZXRjaGluZyB0aGUgbGltaXQgb2YgR29vZ2xlIFRlc3QgYnkgdXNp
bmcgaXQgdG8gdGVzdCBpdHNlbGYhKS4KKy8vIEZvcnR1bmF0ZWx5LCB3ZSBkb24ndCBoYXZlIHRv
IGRvIHRoYXQsIGFzIHdlIGFyZSBhbHJlYWR5IHRlc3RpbmcKKy8vIHRoZSBmdW5jdGlvbmFsaXRp
ZXMgb2YgdGhlIFRlc3QgY2xhc3MgZXh0ZW5zaXZlbHkgYnkgdXNpbmcgR29vZ2xlIFRlc3QKKy8v
IGFsb25lLgorLy8KKy8vIFRoZXJlZm9yZSwgdGhpcyBzZWN0aW9uIG9ubHkgY29udGFpbnMgb25l
IHRlc3QuCiAKIC8vIFRlc3RzIHRoYXQgR1Rlc3RGbGFnU2F2ZXIgd29ya3Mgb24gV2luZG93cyBh
bmQgTWFjLgogCkBAIC0xNjk4LDYgKzE1NzIsNyBAQCBjbGFzcyBHVGVzdEZsYWdTYXZlclRlc3Qg
OiBwdWJsaWMgVGVzdCB7CiAgICAgR1RFU1RfRkxBRyhyZXBlYXQpID0gMTsKICAgICBHVEVTVF9G
TEFHKHNodWZmbGUpID0gZmFsc2U7CiAgICAgR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkg
PSBrTWF4U3RhY2tUcmFjZURlcHRoOworICAgIEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykg
PSAiIjsKICAgICBHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gZmFsc2U7CiAgIH0KIApA
QCAtMTcyNCw2ICsxNTk5LDcgQEAgY2xhc3MgR1Rlc3RGbGFnU2F2ZXJUZXN0IDogcHVibGljIFRl
c3QgewogICAgIEVYUEVDVF9FUSgxLCBHVEVTVF9GTEFHKHJlcGVhdCkpOwogICAgIEVYUEVDVF9G
QUxTRShHVEVTVF9GTEFHKHNodWZmbGUpKTsKICAgICBFWFBFQ1RfRVEoa01heFN0YWNrVHJhY2VE
ZXB0aCwgR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkpOworICAgIEVYUEVDVF9TVFJFUSgi
IiwgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKS5jX3N0cigpKTsKICAgICBFWFBFQ1RfRkFM
U0UoR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSk7CiAKICAgICBHVEVTVF9GTEFHKGFsc29f
cnVuX2Rpc2FibGVkX3Rlc3RzKSA9IHRydWU7CkBAIC0xNzM5LDggKzE2MTUsMTAgQEAgY2xhc3Mg
R1Rlc3RGbGFnU2F2ZXJUZXN0IDogcHVibGljIFRlc3QgewogICAgIEdURVNUX0ZMQUcocmVwZWF0
KSA9IDEwMDsKICAgICBHVEVTVF9GTEFHKHNodWZmbGUpID0gdHJ1ZTsKICAgICBHVEVTVF9GTEFH
KHN0YWNrX3RyYWNlX2RlcHRoKSA9IDE7CisgICAgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3Rv
KSA9ICJsb2NhbGhvc3Q6MTIzNCI7CiAgICAgR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9
IHRydWU7CiAgIH0KKwogIHByaXZhdGU6CiAgIC8vIEZvciBzYXZpbmcgR29vZ2xlIFRlc3QgZmxh
Z3MgZHVyaW5nIHRoaXMgdGVzdCBjYXNlLgogICBzdGF0aWMgR1Rlc3RGbGFnU2F2ZXIqIHNhdmVy
XzsKQEAgLTE3NzMsMTUgKzE2NTEsMTYgQEAgc3RhdGljIHZvaWQgU2V0RW52KGNvbnN0IGNoYXIq
IG5hbWUsIGNvbnN0IGNoYXIqIHZhbHVlKSB7CiAgIC8vIEMrK0J1aWxkZXIncyBwdXRlbnYgb25s
eSBzdG9yZXMgYSBwb2ludGVyIHRvIGl0cyBwYXJhbWV0ZXI7IHdlIGhhdmUgdG8KICAgLy8gZW5z
dXJlIHRoYXQgdGhlIHN0cmluZyByZW1haW5zIHZhbGlkIGFzIGxvbmcgYXMgaXQgbWlnaHQgYmUg
bmVlZGVkLgogICAvLyBXZSB1c2UgYW4gc3RkOjptYXAgdG8gZG8gc28uCi0gIHN0YXRpYyBzdGQ6
Om1hcDxTdHJpbmcsIFN0cmluZyo+IGFkZGVkX2VudjsKKyAgc3RhdGljIHN0ZDo6bWFwPHN0ZDo6
c3RyaW5nLCBzdGQ6OnN0cmluZyo+IGFkZGVkX2VudjsKIAogICAvLyBCZWNhdXNlIHB1dGVudiBz
dG9yZXMgYSBwb2ludGVyIHRvIHRoZSBzdHJpbmcgYnVmZmVyLCB3ZSBjYW4ndCBkZWxldGUgdGhl
CiAgIC8vIHByZXZpb3VzIHN0cmluZyAoaWYgcHJlc2VudCkgdW50aWwgYWZ0ZXIgaXQncyByZXBs
YWNlZC4KLSAgU3RyaW5nICpwcmV2X2VudiA9IE5VTEw7CisgIHN0ZDo6c3RyaW5nICpwcmV2X2Vu
diA9IE5VTEw7CiAgIGlmIChhZGRlZF9lbnYuZmluZChuYW1lKSAhPSBhZGRlZF9lbnYuZW5kKCkp
IHsKICAgICBwcmV2X2VudiA9IGFkZGVkX2VudltuYW1lXTsKICAgfQotICBhZGRlZF9lbnZbbmFt
ZV0gPSBuZXcgU3RyaW5nKChNZXNzYWdlKCkgPDwgbmFtZSA8PCAiPSIgPDwgdmFsdWUpLkdldFN0
cmluZygpKTsKKyAgYWRkZWRfZW52W25hbWVdID0gbmV3IHN0ZDo6c3RyaW5nKAorICAgICAgKE1l
c3NhZ2UoKSA8PCBuYW1lIDw8ICI9IiA8PCB2YWx1ZSkuR2V0U3RyaW5nKCkpOwogCiAgIC8vIFRo
ZSBzdGFuZGFyZCBzaWduYXR1cmUgb2YgcHV0ZW52IGFjY2VwdHMgYSAnY2hhcionIGFyZ3VtZW50
LiBPdGhlcgogICAvLyBpbXBsZW1lbnRhdGlvbnMsIGxpa2UgQysrQnVpbGRlcidzLCBhY2NlcHQg
YSAnY29uc3QgY2hhcionLgpAQCAtMTgxMyw2ICsxNjkyLDggQEAgVEVTVChJbnQzMkZyb21HVGVz
dEVudlRlc3QsIFJldHVybnNEZWZhdWx0V2hlblZhcmlhYmxlSXNOb3RTZXQpIHsKICAgRVhQRUNU
X0VRKDEwLCBJbnQzMkZyb21HVGVzdEVudigidGVtcCIsIDEwKSk7CiB9CiAKKyMgaWYgIWRlZmlu
ZWQoR1RFU1RfR0VUX0lOVDMyX0ZST01fRU5WXykKKwogLy8gVGVzdHMgdGhhdCBJbnQzMkZyb21H
VGVzdEVudigpIHJldHVybnMgdGhlIGRlZmF1bHQgdmFsdWUgd2hlbiB0aGUKIC8vIGVudmlyb25t
ZW50IHZhcmlhYmxlIG92ZXJmbG93cyBhcyBhbiBJbnQzMi4KIFRFU1QoSW50MzJGcm9tR1Rlc3RF
bnZUZXN0LCBSZXR1cm5zRGVmYXVsdFdoZW5WYWx1ZU92ZXJmbG93cykgewpAQCAtMTgzNyw2ICsx
NzE4LDggQEAgVEVTVChJbnQzMkZyb21HVGVzdEVudlRlc3QsIFJldHVybnNEZWZhdWx0V2hlblZh
bHVlSXNJbnZhbGlkKSB7CiAgIEVYUEVDVF9FUSg1MCwgSW50MzJGcm9tR1Rlc3RFbnYoInRlbXAi
LCA1MCkpOwogfQogCisjIGVuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9HRVRfSU5UMzJfRlJPTV9F
TlZfKQorCiAvLyBUZXN0cyB0aGF0IEludDMyRnJvbUdUZXN0RW52KCkgcGFyc2VzIGFuZCByZXR1
cm5zIHRoZSB2YWx1ZSBvZiB0aGUKIC8vIGVudmlyb25tZW50IHZhcmlhYmxlIHdoZW4gaXQgcmVw
cmVzZW50cyBhIHZhbGlkIGRlY2ltYWwgaW50ZWdlciBpbgogLy8gdGhlIHJhbmdlIG9mIGFuIElu
dDMyLgpAQCAtMTkyNSw3ICsxODA4LDcgQEAgVEVTVChJbnQzMkZyb21FbnZPckRpZURlYXRoVGVz
dCwgQWJvcnRzT25GYWlsdXJlKSB7CiB9CiAKIC8vIFRlc3RzIHRoYXQgSW50MzJGcm9tRW52T3JE
aWUoKSBhYm9ydHMgd2l0aCBhbiBlcnJvciBtZXNzYWdlCi0vLyBpZiB0aGUgdmFyaWFibGUgY2Fu
bm90IGJlIHJlcHJlc250ZWQgYnkgYW4gSW50MzIuCisvLyBpZiB0aGUgdmFyaWFibGUgY2Fubm90
IGJlIHJlcHJlc2VudGVkIGJ5IGFuIEludDMyLgogVEVTVChJbnQzMkZyb21FbnZPckRpZURlYXRo
VGVzdCwgQWJvcnRzT25JbnQzMk92ZXJmbG93KSB7CiAgIFNldEVudihHVEVTVF9GTEFHX1BSRUZJ
WF9VUFBFUl8gIlZBUiIsICIxMjM0NTY3ODkxMjM0NTY3ODkxMjM0Iik7CiAgIEVYUEVDVF9ERUFU
SF9JRl9TVVBQT1JURUQoCkBAIC0yMDcwLDYgKzE5NTMsMTczIEBAIFRFU1QoVW5pdFRlc3RUZXN0
LCBDYW5HZXRPcmlnaW5hbFdvcmtpbmdEaXIpIHsKICAgRVhQRUNUX1NUUk5FKFVuaXRUZXN0OjpH
ZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5nX2RpcigpLCAiIik7CiB9CiAKK1RFU1QoVW5p
dFRlc3RUZXN0LCBSZXR1cm5zUGxhdXNpYmxlVGltZXN0YW1wKSB7CisgIEVYUEVDVF9MVCgwLCBV
bml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+c3RhcnRfdGltZXN0YW1wKCkpOworICBFWFBFQ1RfTEUo
VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnN0YXJ0X3RpbWVzdGFtcCgpLCBHZXRUaW1lSW5NaWxs
aXMoKSk7Cit9CisKKy8vIFdoZW4gYSBwcm9wZXJ0eSB1c2luZyBhIHJlc2VydmVkIGtleSBpcyBz
dXBwbGllZCB0byB0aGlzIGZ1bmN0aW9uLCBpdAorLy8gdGVzdHMgdGhhdCBhIG5vbi1mYXRhbCBm
YWlsdXJlIGlzIGFkZGVkLCBhIGZhdGFsIGZhaWx1cmUgaXMgbm90IGFkZGVkLAorLy8gYW5kIHRo
YXQgdGhlIHByb3BlcnR5IGlzIG5vdCByZWNvcmRlZC4KK3ZvaWQgRXhwZWN0Tm9uRmF0YWxGYWls
dXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoCisgICAgY29uc3QgVGVzdFJlc3Vs
dCYgdGVzdF9yZXN1bHQsIGNvbnN0IGNoYXIqIGtleSkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShUZXN0OjpSZWNvcmRQcm9wZXJ0eShrZXksICIxIiksICJSZXNlcnZlZCBrZXkiKTsKKyAg
QVNTRVJUX0VRKDAsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKSkgPDwgIlByb3Bl
cnR5IGZvciBrZXkgJyIgPDwga2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8ICInIHJlY29yZGVkIHVuZXhwZWN0ZWRseS4iOworfQorCit2b2lk
IEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9y
Q3VycmVudFRlc3QoCisgICAgY29uc3QgY2hhcioga2V5KSB7CisgIGNvbnN0IFRlc3RJbmZvKiB0
ZXN0X2luZm8gPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsK
KyAgQVNTRVJUX1RSVUUodGVzdF9pbmZvICE9IE5VTEwpOworICBFeHBlY3ROb25GYXRhbEZhaWx1
cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgqdGVzdF9pbmZvLT5yZXN1bHQoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
a2V5KTsKK30KKwordm9pZCBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdp
dGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICBjb25zdCBjaGFyKiBrZXkpIHsK
KyAgY29uc3QgVGVzdENhc2UqIHRlc3RfY2FzZSA9IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5j
dXJyZW50X3Rlc3RfY2FzZSgpOworICBBU1NFUlRfVFJVRSh0ZXN0X2Nhc2UgIT0gTlVMTCk7Cisg
IEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5KAor
ICAgICAgdGVzdF9jYXNlLT5hZF9ob2NfdGVzdF9yZXN1bHQoKSwga2V5KTsKK30KKwordm9pZCBF
eHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNp
ZGVPZlRlc3RDYXNlKAorICAgIGNvbnN0IGNoYXIqIGtleSkgeworICBFeHBlY3ROb25GYXRhbEZh
aWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgKKyAgICAgIFVuaXRUZXN0OjpH
ZXRJbnN0YW5jZSgpLT5hZF9ob2NfdGVzdF9yZXN1bHQoKSwga2V5KTsKK30KKworLy8gVGVzdHMg
dGhhdCBwcm9wZXJ0eSByZWNvcmRpbmcgZnVuY3Rpb25zIGluIFVuaXRUZXN0IG91dHNpZGUgb2Yg
dGVzdHMKKy8vIGZ1bmN0aW9ucyBjb3JyZWNseS4gIENyZWF0aW5nIGEgc2VwYXJhdGUgaW5zdGFu
Y2Ugb2YgVW5pdFRlc3QgZW5zdXJlcyBpdAorLy8gaXMgaW4gYSBzdGF0ZSBzaW1pbGFyIHRvIHRo
ZSBVbml0VGVzdCdzIHNpbmdsZXRvbidzIGJldHdlZW4gdGVzdHMuCitjbGFzcyBVbml0VGVzdFJl
Y29yZFByb3BlcnR5VGVzdCA6CisgICAgcHVibGljIHRlc3Rpbmc6OmludGVybmFsOjpVbml0VGVz
dFJlY29yZFByb3BlcnR5VGVzdEhlbHBlciB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBTZXRV
cFRlc3RDYXNlKCkgeworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5
V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAorICAgICAgICAiZGlzYWJsZWQiKTsK
KyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtl
eUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICAgICAgImVycm9ycyIpOworICAgIEV4cGVjdE5vbkZh
dGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RD
YXNlKAorICAgICAgICAiZmFpbHVyZXMiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNv
cmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICAgICAg
Im5hbWUiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhS
ZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICAgICAgInRlc3RzIik7CisgICAgRXhw
ZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJy
ZW50VGVzdENhc2UoCisgICAgICAgICJ0aW1lIik7CisKKyAgICBUZXN0OjpSZWNvcmRQcm9wZXJ0
eSgidGVzdF9jYXNlX2tleV8xIiwgIjEiKTsKKyAgICBjb25zdCBUZXN0Q2FzZSogdGVzdF9jYXNl
ID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9jYXNlKCk7CisgICAgQVNT
RVJUX1RSVUUodGVzdF9jYXNlICE9IE5VTEwpOworCisgICAgQVNTRVJUX0VRKDEsIHRlc3RfY2Fz
ZS0+YWRfaG9jX3Rlc3RfcmVzdWx0KCkudGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKKyAgICBFWFBF
Q1RfU1RSRVEoInRlc3RfY2FzZV9rZXlfMSIsCisgICAgICAgICAgICAgICAgIHRlc3RfY2FzZS0+
YWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLmtleSgpKTsKKyAgICBFWFBF
Q1RfU1RSRVEoIjEiLAorICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2UtPmFkX2hvY190ZXN0X3Jl
c3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKKyAgfQorfTsKKworLy8gVGVzdHMg
VGVzdFJlc3VsdCBoYXMgdGhlIGV4cGVjdGVkIHByb3BlcnR5IHdoZW4gYWRkZWQuCitURVNUX0Yo
VW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3QsIE9uZVByb3BlcnR5Rm91bmRXaGVuQWRkZWQpIHsK
KyAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzEiLCAiMSIpOworCisgIEFTU0VSVF9FUSgx
LCB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLnRlc3RfcHJvcGVydHlfY291bnQoKSk7
CisKKyAgRVhQRUNUX1NUUkVRKCJrZXlfMSIsCisgICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFk
X2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS5rZXkoKSk7CisgIEVYUEVDVF9T
VFJFUSgiMSIsCisgICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgp
LkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKK30KKworLy8gVGVzdHMgVGVzdFJlc3VsdCBo
YXMgbXVsdGlwbGUgcHJvcGVydGllcyB3aGVuIGFkZGVkLgorVEVTVF9GKFVuaXRUZXN0UmVjb3Jk
UHJvcGVydHlUZXN0LCBNdWx0aXBsZVByb3BlcnRpZXNGb3VuZFdoZW5BZGRlZCkgeworICBVbml0
VGVzdFJlY29yZFByb3BlcnR5KCJrZXlfMSIsICIxIik7CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVy
dHkoImtleV8yIiwgIjIiKTsKKworICBBU1NFUlRfRVEoMiwgdW5pdF90ZXN0Xy5hZF9ob2NfdGVz
dF9yZXN1bHQoKS50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOworCisgIEVYUEVDVF9TVFJFUSgia2V5
XzEiLAorICAgICAgICAgICAgICAgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRU
ZXN0UHJvcGVydHkoMCkua2V5KCkpOworICBFWFBFQ1RfU1RSRVEoIjEiLCB1bml0X3Rlc3RfLmFk
X2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKKworICBFWFBF
Q1RfU1RSRVEoImtleV8yIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3Rf
cmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDEpLmtleSgpKTsKKyAgRVhQRUNUX1NUUkVRKCIyIiwg
dW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMSkudmFsdWUo
KSk7Cit9CisKKy8vIFRlc3RzIFRlc3RSZXN1bHQ6OlJlY29yZFByb3BlcnR5KCkgb3ZlcnJpZGVz
IHZhbHVlcyBmb3IgZHVwbGljYXRlIGtleXMuCitURVNUX0YoVW5pdFRlc3RSZWNvcmRQcm9wZXJ0
eVRlc3QsIE92ZXJyaWRlc1ZhbHVlc0ZvckR1cGxpY2F0ZUtleXMpIHsKKyAgVW5pdFRlc3RSZWNv
cmRQcm9wZXJ0eSgia2V5XzEiLCAiMSIpOworICBVbml0VGVzdFJlY29yZFByb3BlcnR5KCJrZXlf
MiIsICIyIik7CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8xIiwgIjEyIik7CisgIFVu
aXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8yIiwgIjIyIik7CisKKyAgQVNTRVJUX0VRKDIsIHVu
aXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkudGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKKwor
ICBFWFBFQ1RfU1RSRVEoImtleV8xIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9j
X3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLmtleSgpKTsKKyAgRVhQRUNUX1NUUkVR
KCIxMiIsCisgICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdl
dFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKKworICBFWFBFQ1RfU1RSRVEoImtleV8yIiwKKyAg
ICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3Bl
cnR5KDEpLmtleSgpKTsKKyAgRVhQRUNUX1NUUkVRKCIyMiIsCisgICAgICAgICAgICAgICB1bml0
X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgxKS52YWx1ZSgpKTsK
K30KKworVEVTVF9GKFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0LAorICAgICAgIEFkZEZhaWx1
cmVJbnNpZGVUZXN0c1doZW5Vc2luZ1Rlc3RDYXNlUmVzZXJ2ZWRLZXlzKSB7CisgIEV4cGVjdE5v
bkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRl
c3QoCisgICAgICAibmFtZSIpOworICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9w
ZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0KAorICAgICAgInZhbHVlX3BhcmFtIik7
CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5
Rm9yQ3VycmVudFRlc3QoCisgICAgICAidHlwZV9wYXJhbSIpOworICBFeHBlY3ROb25GYXRhbEZh
aWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0KAorICAg
ICAgInN0YXR1cyIpOworICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdp
dGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0KAorICAgICAgInRpbWUiKTsKKyAgRXhwZWN0Tm9u
RmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVz
dCgKKyAgICAgICJjbGFzc25hbWUiKTsKK30KKworVEVTVF9GKFVuaXRUZXN0UmVjb3JkUHJvcGVy
dHlUZXN0LAorICAgICAgIEFkZFJlY29yZFdpdGhSZXNlcnZlZEtleXNHZW5lcmF0ZXNDb3JyZWN0
UHJvcGVydHlMaXN0KSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAorICAgICAgVGVzdDo6
UmVjb3JkUHJvcGVydHkoIm5hbWUiLCAiMSIpLAorICAgICAgIidjbGFzc25hbWUnLCAnbmFtZScs
ICdzdGF0dXMnLCAndGltZScsICd0eXBlX3BhcmFtJywgJ3ZhbHVlX3BhcmFtJywiCisgICAgICAi
ICdmaWxlJywgYW5kICdsaW5lJyBhcmUgcmVzZXJ2ZWQiKTsKK30KKworY2xhc3MgVW5pdFRlc3RS
ZWNvcmRQcm9wZXJ0eVRlc3RFbnZpcm9ubWVudCA6IHB1YmxpYyBFbnZpcm9ubWVudCB7CisgcHVi
bGljOgorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWls
dXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAg
ICAgICAgInRlc3RzIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVy
dHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgImZhaWx1cmVzIik7
CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRL
ZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgImRpc2FibGVkIik7CisgICAgRXhwZWN0Tm9u
RmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0
Q2FzZSgKKyAgICAgICAgImVycm9ycyIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29y
ZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCisgICAgICAgICJu
YW1lIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVz
ZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgInRpbWVzdGFtcCIpOworICAgIEV4
cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lk
ZU9mVGVzdENhc2UoCisgICAgICAgICJ0aW1lIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJl
UmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAg
ICAgInJhbmRvbV9zZWVkIik7CisgIH0KK307CisKKy8vIFRoaXMgd2lsbCB0ZXN0IHByb3BlcnR5
IHJlY29yZGluZyBvdXRzaWRlIG9mIGFueSB0ZXN0IG9yIHRlc3QgY2FzZS4KK3N0YXRpYyBFbnZp
cm9ubWVudCogcmVjb3JkX3Byb3BlcnR5X2VudiA9CisgICAgQWRkR2xvYmFsVGVzdEVudmlyb25t
ZW50KG5ldyBVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdEVudmlyb25tZW50KTsKKwogLy8gVGhp
cyBncm91cCBvZiB0ZXN0cyBpcyBmb3IgcHJlZGljYXRlIGFzc2VydGlvbnMgKEFTU0VSVF9QUkVE
KiwgZXRjKQogLy8gb2YgdmFyaW91cyBhcml0aWVzLiAgVGhleSBkbyBub3QgYXR0ZW1wdCB0byBi
ZSBleGhhdXN0aXZlLiAgUmF0aGVyLAogLy8gdmlldyB0aGVtIGFzIHNtb2tlIHRlc3RzIHRoYXQg
Y2FuIGJlIGVhc2lseSByZXZpZXdlZCBhbmQgdmVyaWZpZWQuCkBAIC0yNDAxLDcgKzI0NTEsNyBA
QCBURVNUKFN0cmluZ0Fzc2VydGlvblRlc3QsIEFTU0VSVF9TVFJFUSkgewogICBBU1NFUlRfU1RS
RVEocDEsIHAyKTsKIAogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfU1RSRVEoImJhZCIs
ICJnb29kIiksCi0gICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogXCJiYWRcIiIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAiICBcImJhZFwiXG4gIFwiZ29vZFwiIik7CiB9CiAKIC8v
IFRlc3RzIEFTU0VSVF9TVFJFUSB3aXRoIE5VTEwgYXJndW1lbnRzLgpAQCAtMjQzNyw3ICsyNDg3
LDcgQEAgVEVTVChTdHJpbmdBc3NlcnRpb25UZXN0LCBBU1NFUlRfU1RSQ0FTRUVRKSB7CiAKICAg
QVNTRVJUX1NUUkNBU0VFUSgiIiwgIiIpOwogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRf
U1RSQ0FTRUVRKCJIaSIsICJoaTIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIihpZ25vcmlu
ZyBjYXNlKSIpOworICAgICAgICAgICAgICAgICAgICAgICAiSWdub3JpbmcgY2FzZSIpOwogfQog
CiAvLyBUZXN0cyBBU1NFUlRfU1RSQ0FTRU5FLgpAQCAtMjQ3NSw2ICsyNTI1LDExIEBAIFRFU1Qo
U3RyaW5nQXNzZXJ0aW9uVGVzdCwgU1RSRVFfV2lkZSkgewogICAvLyBTdHJpbmdzIGNvbnRhaW5p
bmcgd2lkZSBjaGFyYWN0ZXJzLgogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RS
RVEoTCJhYmNceDgxMTkiLCBMImFiY1x4ODEyMCIpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAiYWJjIik7CisKKyAgLy8gVGhlIHN0cmVhbWluZyB2YXJpYXRpb24uCisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9TVFJFUShMImFiY1x4ODExOSIs
IEwiYWJjXHg4MTIxIikgPDwgIkV4cGVjdGVkIGZhaWx1cmUiOworICB9LCAiRXhwZWN0ZWQgZmFp
bHVyZSIpOwogfQogCiAvLyBUZXN0cyAqX1NUUk5FIG9uIHdpZGUgc3RyaW5ncy4KQEAgLTI1MDEs
NiArMjU1Niw5IEBAIFRFU1QoU3RyaW5nQXNzZXJ0aW9uVGVzdCwgU1RSTkVfV2lkZSkgewogICAv
LyBTdHJpbmdzIGNvbnRhaW5pbmcgd2lkZSBjaGFyYWN0ZXJzLgogICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShFWFBFQ1RfU1RSTkUoTCJhYmNceDgxMTkiLCBMImFiY1x4ODExOSIpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAiYWJjIik7CisKKyAgLy8gVGhlIHN0cmVhbWluZyB2YXJpYXRp
b24uCisgIEFTU0VSVF9TVFJORShMImFiY1x4ODExOSIsIEwiYWJjXHg4MTIwIikgPDwgIlRoaXMg
c2hvdWxkbid0IGhhcHBlbiI7CiB9CiAKIC8vIFRlc3RzIGZvciA6OnRlc3Rpbmc6OklzU3Vic3Ry
aW5nKCkuCkBAIC0yNjMxLDcgKzI2ODksNiBAQCBURVNUKElzTm90U3Vic3RyaW5nVGVzdCwgUmV0
dXJuc0NvcnJlY3RSZXN1bHRGb3JTdGRXc3RyaW5nKSB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmF3
VHlwZT4KIGNsYXNzIEZsb2F0aW5nUG9pbnRUZXN0IDogcHVibGljIFRlc3QgewogIHByb3RlY3Rl
ZDoKLQogICAvLyBQcmUtY2FsY3VsYXRlZCBudW1iZXJzIHRvIGJlIHVzZWQgYnkgdGhlIHRlc3Rz
LgogICBzdHJ1Y3QgVGVzdFZhbHVlcyB7CiAgICAgUmF3VHlwZSBjbG9zZV90b19wb3NpdGl2ZV96
ZXJvOwpAQCAtMzA3OSwxMyArMzEzNiwxMyBAQCBURVNUKERJU0FCTEVEX1Rlc3RDYXNlLCBESVNB
QkxFRF9UZXN0U2hvdWxkTm90UnVuKSB7CiAgIEZBSUwoKSA8PCAiVW5leHBlY3RlZCBmYWlsdXJl
OiBUZXN0IGluIGRpc2FibGVkIHRlc3QgY2FzZSBzaG91bGQgbm90IGJlIHJ1bi4iOwogfQogCi0v
LyBDaGVjayB0aGF0IHdoZW4gYWxsIHRlc3RzIGluIGEgdGVzdCBjYXNlIGFyZSBkaXNhYmxlZCwg
U2V0dXBUZXN0Q2FzZSgpIGFuZAorLy8gQ2hlY2sgdGhhdCB3aGVuIGFsbCB0ZXN0cyBpbiBhIHRl
c3QgY2FzZSBhcmUgZGlzYWJsZWQsIFNldFVwVGVzdENhc2UoKSBhbmQKIC8vIFRlYXJEb3duVGVz
dENhc2UoKSBhcmUgbm90IGNhbGxlZC4KIGNsYXNzIERpc2FibGVkVGVzdHNUZXN0IDogcHVibGlj
IFRlc3QgewogIHByb3RlY3RlZDoKICAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKICAg
ICBGQUlMKCkgPDwgIlVuZXhwZWN0ZWQgZmFpbHVyZTogQWxsIHRlc3RzIGRpc2FibGVkIGluIHRl
c3QgY2FzZS4gIgotICAgICAgICAgICAgICAiU2V0dXBUZXN0Q2FzZSgpIHNob3VsZCBub3QgYmUg
Y2FsbGVkLiI7CisgICAgICAgICAgICAgICJTZXRVcFRlc3RDYXNlKCkgc2hvdWxkIG5vdCBiZSBj
YWxsZWQuIjsKICAgfQogCiAgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7CkBAIC0z
MjI0LDcgKzMyODEsNyBAQCBURVNUX0YoU2luZ2xlRXZhbHVhdGlvblRlc3QsIEFTU0VSVF9TVFIp
IHsKIAogICAvLyBmYWlsZWQgRVhQRUNUX1NUUkNBU0VFUQogICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShFWFBFQ1RfU1RSQ0FTRUVRKHAxXysrLCBwMl8rKyksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICJpZ25vcmluZyBjYXNlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICJJZ25v
cmluZyBjYXNlIik7CiAgIEVYUEVDVF9FUShzMV8gKyAyLCBwMV8pOwogICBFWFBFQ1RfRVEoczJf
ICsgMiwgcDJfKTsKIH0KQEAgLTMzMzIsNyArMzM4OSw3IEBAIGNsYXNzIE5vRmF0YWxGYWlsdXJl
VGVzdCA6IHB1YmxpYyBUZXN0IHsKIAogICB2b2lkIERvQXNzZXJ0Tm9GYXRhbEZhaWx1cmVPbkZh
aWxzKCkgewogICAgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEZhaWxzKCkpOwotICAgIEFERF9G
QUlMVVJFKCkgPDwgInNob2xkIG5vdCByZWFjaCBoZXJlLiI7CisgICAgQUREX0ZBSUxVUkUoKSA8
PCAic2hvdWxkIG5vdCByZWFjaCBoZXJlLiI7CiAgIH0KIAogICB2b2lkIERvRXhwZWN0Tm9GYXRh
bEZhaWx1cmVPbkZhaWxzKCkgewpAQCAtMzQxMiw1OSArMzQ2OSwxNTcgQEAgVEVTVF9GKE5vRmF0
YWxGYWlsdXJlVGVzdCwgTWVzc2FnZUlzU3RyZWFtYWJsZSkgewogCiAvLyBUZXN0cyBub24tc3Ry
aW5nIGFzc2VydGlvbnMuCiAKK3N0ZDo6c3RyaW5nIEVkaXRzVG9TdHJpbmcoY29uc3Qgc3RkOjp2
ZWN0b3I8RWRpdFR5cGU+JiBlZGl0cykgeworICBzdGQ6OnN0cmluZyBvdXQ7CisgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZWRpdHMuc2l6ZSgpOyArK2kpIHsKKyAgICBzdGF0aWMgY29uc3QgY2hh
ciBrRWRpdHNbXSA9ICIgKy0vIjsKKyAgICBvdXQuYXBwZW5kKDEsIGtFZGl0c1tlZGl0c1tpXV0p
OworICB9CisgIHJldHVybiBvdXQ7Cit9CisKK3N0ZDo6dmVjdG9yPHNpemVfdD4gQ2hhcnNUb0lu
ZGljZXMoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgeworICBzdGQ6OnZlY3RvcjxzaXplX3Q+IG91
dDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHIuc2l6ZSgpOyArK2kpIHsKKyAgICBvdXQu
cHVzaF9iYWNrKHN0cltpXSk7CisgIH0KKyAgcmV0dXJuIG91dDsKK30KKworc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IENoYXJzVG9MaW5lcyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7CisgIHN0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBvdXQ7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3Ry
LnNpemUoKTsgKytpKSB7CisgICAgb3V0LnB1c2hfYmFjayhzdHIuc3Vic3RyKGksIDEpKTsKKyAg
fQorICByZXR1cm4gb3V0OworfQorCitURVNUKEVkaXREaXN0YW5jZSwgVGVzdENhc2VzKSB7Cisg
IHN0cnVjdCBDYXNlIHsKKyAgICBpbnQgbGluZTsKKyAgICBjb25zdCBjaGFyKiBsZWZ0OworICAg
IGNvbnN0IGNoYXIqIHJpZ2h0OworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkX2VkaXRzOworICAg
IGNvbnN0IGNoYXIqIGV4cGVjdGVkX2RpZmY7CisgIH07CisgIHN0YXRpYyBjb25zdCBDYXNlIGtD
YXNlc1tdID0geworICAgICAgLy8gTm8gY2hhbmdlLgorICAgICAge19fTElORV9fLCAiQSIsICJB
IiwgIiAiLCAiIn0sCisgICAgICB7X19MSU5FX18sICJBQkNERSIsICJBQkNERSIsICIgICAgICIs
ICIifSwKKyAgICAgIC8vIFNpbXBsZSBhZGRzLgorICAgICAge19fTElORV9fLCAiWCIsICJYQSIs
ICIgKyIsICJAQCArMSwyIEBAXG4gWFxuK0FcbiJ9LAorICAgICAge19fTElORV9fLCAiWCIsICJY
QUJDRCIsICIgKysrKyIsICJAQCArMSw1IEBAXG4gWFxuK0FcbitCXG4rQ1xuK0RcbiJ9LAorICAg
ICAgLy8gU2ltcGxlIHJlbW92ZXMuCisgICAgICB7X19MSU5FX18sICJYQSIsICJYIiwgIiAtIiwg
IkBAIC0xLDIgQEBcbiBYXG4tQVxuIn0sCisgICAgICB7X19MSU5FX18sICJYQUJDRCIsICJYIiwg
IiAtLS0tIiwgIkBAIC0xLDUgQEBcbiBYXG4tQVxuLUJcbi1DXG4tRFxuIn0sCisgICAgICAvLyBT
aW1wbGUgcmVwbGFjZXMuCisgICAgICB7X19MSU5FX18sICJBIiwgImEiLCAiLyIsICJAQCAtMSwx
ICsxLDEgQEBcbi1BXG4rYVxuIn0sCisgICAgICB7X19MSU5FX18sICJBQkNEIiwgImFiY2QiLCAi
Ly8vLyIsCisgICAgICAgIkBAIC0xLDQgKzEsNCBAQFxuLUFcbi1CXG4tQ1xuLURcbithXG4rYlxu
K2NcbitkXG4ifSwKKyAgICAgIC8vIFBhdGggZmluZGluZy4KKyAgICAgIHtfX0xJTkVfXywgIkFC
Q0RFRkdIIiwgIkFCWEVHSDEiLCAiICAtLyAtICArIiwKKyAgICAgICAiQEAgLTEsOCArMSw3IEBA
XG4gQVxuIEJcbi1DXG4tRFxuK1hcbiBFXG4tRlxuIEdcbiBIXG4rMVxuIn0sCisgICAgICB7X19M
SU5FX18sICJBQUFBQkNDQ0MiLCAiQUJBQkNEQ0RDIiwgIi0gLyAgICsgLyAiLAorICAgICAgICJA
QCAtMSw5ICsxLDkgQEBcbi1BXG4gQVxuLUFcbitCXG4gQVxuIEJcbiBDXG4rRFxuIENcbi1DXG4r
RFxuIENcbiJ9LAorICAgICAge19fTElORV9fLCAiQUJDREUiLCAiQkNEQ0QiLCAiLSAgICsvIiwK
KyAgICAgICAiQEAgLTEsNSArMSw1IEBAXG4tQVxuIEJcbiBDXG4gRFxuLUVcbitDXG4rRFxuIn0s
CisgICAgICB7X19MSU5FX18sICJBQkNERUZHSElKS0wiLCAiQkNEQ0RFRkdKS0xKSyIsICItICsr
ICAgICAtLSAgICsrIiwKKyAgICAgICAiQEAgLTEsNCArMSw1IEBAXG4tQVxuIEJcbitDXG4rRFxu
IENcbiBEXG4iCisgICAgICAgIkBAIC02LDcgKzcsNyBAQFxuIEZcbiBHXG4tSFxuLUlcbiBKXG4g
S1xuIExcbitKXG4rS1xuIn0sCisgICAgICB7fX07CisgIGZvciAoY29uc3QgQ2FzZSogYyA9IGtD
YXNlczsgYy0+bGVmdDsgKytjKSB7CisgICAgRVhQRUNUX1RSVUUoYy0+ZXhwZWN0ZWRfZWRpdHMg
PT0KKyAgICAgICAgICAgICAgICBFZGl0c1RvU3RyaW5nKENhbGN1bGF0ZU9wdGltYWxFZGl0cyhD
aGFyc1RvSW5kaWNlcyhjLT5sZWZ0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDaGFyc1RvSW5kaWNlcyhjLT5yaWdodCkpKSkKKyAgICAgICAg
PDwgIkxlZnQgPCIgPDwgYy0+bGVmdCA8PCAiPiBSaWdodCA8IiA8PCBjLT5yaWdodCA8PCAiPiBF
ZGl0cyA8IgorICAgICAgICA8PCBFZGl0c1RvU3RyaW5nKENhbGN1bGF0ZU9wdGltYWxFZGl0cygK
KyAgICAgICAgICAgICAgIENoYXJzVG9JbmRpY2VzKGMtPmxlZnQpLCBDaGFyc1RvSW5kaWNlcyhj
LT5yaWdodCkpKSA8PCAiPiI7CisgICAgRVhQRUNUX1RSVUUoYy0+ZXhwZWN0ZWRfZGlmZiA9PSBD
cmVhdGVVbmlmaWVkRGlmZihDaGFyc1RvTGluZXMoYy0+bGVmdCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyc1RvTGluZXMoYy0+cmln
aHQpKSkKKyAgICAgICAgPDwgIkxlZnQgPCIgPDwgYy0+bGVmdCA8PCAiPiBSaWdodCA8IiA8PCBj
LT5yaWdodCA8PCAiPiBEaWZmIDwiCisgICAgICAgIDw8IENyZWF0ZVVuaWZpZWREaWZmKENoYXJz
VG9MaW5lcyhjLT5sZWZ0KSwgQ2hhcnNUb0xpbmVzKGMtPnJpZ2h0KSkKKyAgICAgICAgPDwgIj4i
OworICB9Cit9CisKIC8vIFRlc3RzIEVxRmFpbHVyZSgpLCB1c2VkIGZvciBpbXBsZW1lbnRpbmcg
KkVRKiBhc3NlcnRpb25zLgogVEVTVChBc3NlcnRpb25UZXN0LCBFcUZhaWx1cmUpIHsKLSAgY29u
c3QgU3RyaW5nIGZvb192YWwoIjUiKSwgYmFyX3ZhbCgiNiIpOwotICBjb25zdCBTdHJpbmcgbXNn
MSgKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZm9vX3ZhbCgiNSIpLCBiYXJfdmFsKCI2Iik7CisgIGNv
bnN0IHN0ZDo6c3RyaW5nIG1zZzEoCiAgICAgICBFcUZhaWx1cmUoImZvbyIsICJiYXIiLCBmb29f
dmFsLCBiYXJfdmFsLCBmYWxzZSkKICAgICAgIC5mYWlsdXJlX21lc3NhZ2UoKSk7CiAgIEVYUEVD
VF9TVFJFUSgKLSAgICAgICJWYWx1ZSBvZjogYmFyXG4iCi0gICAgICAiICBBY3R1YWw6IDZcbiIK
LSAgICAgICJFeHBlY3RlZDogZm9vXG4iCi0gICAgICAiV2hpY2ggaXM6IDUiLAorICAgICAgIkV4
cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICIgIGZvb1xuIgorICAg
ICAgIiAgICBXaGljaCBpczogNVxuIgorICAgICAgIiAgYmFyXG4iCisgICAgICAiICAgIFdoaWNo
IGlzOiA2IiwKICAgICAgIG1zZzEuY19zdHIoKSk7CiAKLSAgY29uc3QgU3RyaW5nIG1zZzIoCisg
IGNvbnN0IHN0ZDo6c3RyaW5nIG1zZzIoCiAgICAgICBFcUZhaWx1cmUoImZvbyIsICI2IiwgZm9v
X3ZhbCwgYmFyX3ZhbCwgZmFsc2UpCiAgICAgICAuZmFpbHVyZV9tZXNzYWdlKCkpOwogICBFWFBF
Q1RfU1RSRVEoCi0gICAgICAiVmFsdWUgb2Y6IDZcbiIKLSAgICAgICJFeHBlY3RlZDogZm9vXG4i
Ci0gICAgICAiV2hpY2ggaXM6IDUiLAorICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNl
IHZhbHVlczpcbiIKKyAgICAgICIgIGZvb1xuIgorICAgICAgIiAgICBXaGljaCBpczogNVxuIgor
ICAgICAgIiAgNiIsCiAgICAgICBtc2cyLmNfc3RyKCkpOwogCi0gIGNvbnN0IFN0cmluZyBtc2cz
KAorICBjb25zdCBzdGQ6OnN0cmluZyBtc2czKAogICAgICAgRXFGYWlsdXJlKCI1IiwgImJhciIs
IGZvb192YWwsIGJhcl92YWwsIGZhbHNlKQogICAgICAgLmZhaWx1cmVfbWVzc2FnZSgpKTsKICAg
RVhQRUNUX1NUUkVRKAotICAgICAgIlZhbHVlIG9mOiBiYXJcbiIKLSAgICAgICIgIEFjdHVhbDog
NlxuIgotICAgICAgIkV4cGVjdGVkOiA1IiwKKyAgICAgICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0
aGVzZSB2YWx1ZXM6XG4iCisgICAgICAiICA1XG4iCisgICAgICAiICBiYXJcbiIKKyAgICAgICIg
ICAgV2hpY2ggaXM6IDYiLAogICAgICAgbXNnMy5jX3N0cigpKTsKIAotICBjb25zdCBTdHJpbmcg
bXNnNCgKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbXNnNCgKICAgICAgIEVxRmFpbHVyZSgiNSIsICI2
IiwgZm9vX3ZhbCwgYmFyX3ZhbCwgZmFsc2UpLmZhaWx1cmVfbWVzc2FnZSgpKTsKICAgRVhQRUNU
X1NUUkVRKAotICAgICAgIlZhbHVlIG9mOiA2XG4iCi0gICAgICAiRXhwZWN0ZWQ6IDUiLAorICAg
ICAgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICIgIDVcbiIK
KyAgICAgICIgIDYiLAogICAgICAgbXNnNC5jX3N0cigpKTsKIAotICBjb25zdCBTdHJpbmcgbXNn
NSgKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbXNnNSgKICAgICAgIEVxRmFpbHVyZSgiZm9vIiwgImJh
ciIsCi0gICAgICAgICAgICAgICAgU3RyaW5nKCJcInhcIiIpLCBTdHJpbmcoIlwieVwiIiksCisg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoIlwieFwiIiksIHN0ZDo6c3RyaW5nKCJcInlcIiIp
LAogICAgICAgICAgICAgICAgIHRydWUpLmZhaWx1cmVfbWVzc2FnZSgpKTsKICAgRVhQRUNUX1NU
UkVRKAotICAgICAgIlZhbHVlIG9mOiBiYXJcbiIKLSAgICAgICIgIEFjdHVhbDogXCJ5XCJcbiIK
LSAgICAgICJFeHBlY3RlZDogZm9vIChpZ25vcmluZyBjYXNlKVxuIgotICAgICAgIldoaWNoIGlz
OiBcInhcIiIsCisgICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgor
ICAgICAgIiAgZm9vXG4iCisgICAgICAiICAgIFdoaWNoIGlzOiBcInhcIlxuIgorICAgICAgIiAg
YmFyXG4iCisgICAgICAiICAgIFdoaWNoIGlzOiBcInlcIlxuIgorICAgICAgIklnbm9yaW5nIGNh
c2UiLAogICAgICAgbXNnNS5jX3N0cigpKTsKIH0KIAorVEVTVChBc3NlcnRpb25UZXN0LCBFcUZh
aWx1cmVXaXRoRGlmZikgeworICBjb25zdCBzdGQ6OnN0cmluZyBsZWZ0KAorICAgICAgIjFcXG4y
WFhYXFxuM1xcbjVcXG42XFxuN1xcbjhcXG45XFxuMTBcXG4xMVxcbjEyWFhYXFxuMTNcXG4xNFxc
bjE1Iik7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHJpZ2h0KAorICAgICAgIjFcXG4yXFxuM1xcbjRc
XG41XFxuNlxcbjdcXG44XFxuOVxcbjExXFxuMTJcXG4xM1xcbjE0Iik7CisgIGNvbnN0IHN0ZDo6
c3RyaW5nIG1zZzEoCisgICAgICBFcUZhaWx1cmUoImxlZnQiLCAicmlnaHQiLCBsZWZ0LCByaWdo
dCwgZmFsc2UpLmZhaWx1cmVfbWVzc2FnZSgpKTsKKyAgRVhQRUNUX1NUUkVRKAorICAgICAgIkV4
cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICIgIGxlZnRcbiIKKyAg
ICAgICIgICAgV2hpY2ggaXM6ICIKKyAgICAgICIxXFxuMlhYWFxcbjNcXG41XFxuNlxcbjdcXG44
XFxuOVxcbjEwXFxuMTFcXG4xMlhYWFxcbjEzXFxuMTRcXG4xNVxuIgorICAgICAgIiAgcmlnaHRc
biIKKyAgICAgICIgICAgV2hpY2ggaXM6IDFcXG4yXFxuM1xcbjRcXG41XFxuNlxcbjdcXG44XFxu
OVxcbjExXFxuMTJcXG4xM1xcbjE0XG4iCisgICAgICAiV2l0aCBkaWZmOlxuQEAgLTEsNSArMSw2
IEBAXG4gMVxuLTJYWFhcbisyXG4gM1xuKzRcbiA1XG4gNlxuIgorICAgICAgIkBAIC03LDggKzgs
NiBAQFxuIDhcbiA5XG4tMTBcbiAxMVxuLTEyWFhYXG4rMTJcbiAxM1xuIDE0XG4tMTVcbiIsCisg
ICAgICBtc2cxLmNfc3RyKCkpOworfQorCiAvLyBUZXN0cyBBcHBlbmRVc2VyTWVzc2FnZSgpLCB1
c2VkIGZvciBpbXBsZW1lbnRpbmcgdGhlICpFUSogbWFjcm9zLgogVEVTVChBc3NlcnRpb25UZXN0
LCBBcHBlbmRVc2VyTWVzc2FnZSkgewotICBjb25zdCBTdHJpbmcgZm9vKCJmb28iKTsKKyAgY29u
c3Qgc3RkOjpzdHJpbmcgZm9vKCJmb28iKTsKIAogICBNZXNzYWdlIG1zZzsKICAgRVhQRUNUX1NU
UkVRKCJmb28iLApAQCAtMzQ3Nyw3ICszNjMyLDcgQEAgVEVTVChBc3NlcnRpb25UZXN0LCBBcHBl
bmRVc2VyTWVzc2FnZSkgewogCiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBTaWxlbmNlcyB3YXJu
aW5nczogIkNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZSIsICJVbnJlYWNoYWJsZSBjb2RlIgotI3By
YWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCisjIHByYWdtYSBvcHRpb24gcHVzaCAtdy1j
Y2MgLXctcmNoCiAjZW5kaWYKIAogLy8gVGVzdHMgQVNTRVJUX1RSVUUuCkBAIC0zNDkwLDggKzM2
NDUsOCBAQCBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9UUlVFKSB7CiAvLyBUZXN0cyBBU1NF
UlRfVFJVRShwcmVkaWNhdGUpIGZvciBwcmVkaWNhdGVzIHJldHVybmluZyBBc3NlcnRpb25SZXN1
bHQuCiBURVNUKEFzc2VydGlvblRlc3QsIEFzc2VydFRydWVXaXRoQXNzZXJ0aW9uUmVzdWx0KSB7
CiAgIEFTU0VSVF9UUlVFKFJlc3VsdElzRXZlbigyKSk7Ci0jaWYgIWRlZmluZWQoX19CT1JMQU5E
Q19fKSB8fCBfX0JPUkxBTkRDX18gPj0gMHg2MDAKLSAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlciAy
MDA3LgorI2lmbmRlZiBfX0JPUkxBTkRDX18KKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4KICAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1RSVUUoUmVzdWx0SXNFdmVuKDMpKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBSZXN1bHRJc0V2ZW4oMylcbiIKICAgICAgICAg
ICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBmYWxzZSAoMyBpcyBvZGQpXG4iCkBAIC0zNTE2LDgg
KzM2NzEsOCBAQCBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9GQUxTRSkgewogLy8gVGVzdHMg
QVNTRVJUX0ZBTFNFKHByZWRpY2F0ZSkgZm9yIHByZWRpY2F0ZXMgcmV0dXJuaW5nIEFzc2VydGlv
blJlc3VsdC4KIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0RmFsc2VXaXRoQXNzZXJ0aW9uUmVz
dWx0KSB7CiAgIEFTU0VSVF9GQUxTRShSZXN1bHRJc0V2ZW4oMykpOwotI2lmICFkZWZpbmVkKF9f
Qk9STEFORENfXykgfHwgX19CT1JMQU5EQ19fID49IDB4NjAwCi0gIC8vIElDRSdzIGluIEMrK0J1
aWxkZXIgMjAwNy4KKyNpZm5kZWYgX19CT1JMQU5EQ19fCisgIC8vIElDRSdzIGluIEMrK0J1aWxk
ZXIuCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShSZXN1bHRJc0V2ZW4oMikp
LAogICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IFJlc3VsdElzRXZlbigyKVxuIgog
ICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IHRydWUgKDIgaXMgZXZlbilcbiIKQEAg
LTM1MzEsOCArMzY4Niw4IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0RmFsc2VXaXRoQXNz
ZXJ0aW9uUmVzdWx0KSB7CiB9CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KLS8vIFJlc3RvcmVzIHdh
cm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXByZXNzZWQgdGhl
bQotI3ByYWdtYSBvcHRpb24gcG9wCisvLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2aW91
cyAiI3ByYWdtYSBvcHRpb24gcHVzaCIgc3VwcHJlc3NlZCB0aGVtCisjIHByYWdtYSBvcHRpb24g
cG9wCiAjZW5kaWYKIAogLy8gVGVzdHMgdXNpbmcgQVNTRVJUX0VRIG9uIGRvdWJsZSB2YWx1ZXMu
ICBUaGUgcHVycG9zZSBpcyB0byBtYWtlCkBAIC0zNTUxLDkgKzM3MDYsMTAgQEAgVEVTVChFeHBl
Y3RUZXN0LCBBU1NFUlRfRVFfRG91YmxlKSB7CiBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9F
USkgewogICBBU1NFUlRfRVEoNSwgMiArIDMpOwogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NF
UlRfRVEoNSwgMiozKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiAyKjNcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiA2XG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICJFeHBlY3RlZDogNSIpOworICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQg
ZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAiICA1
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgIDIqM1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAiICAgIFdoaWNoIGlzOiA2Iik7CiB9CiAKIC8vIFRlc3RzIEFTU0VSVF9FUShOVUxMLCBw
b2ludGVyKS4KQEAgLTM1NjEsNyArMzcxNyw3IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJU
X0VRKSB7CiBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9FUV9OVUxMKSB7CiAgIC8vIEEgc3Vj
Y2Vzcy4KICAgY29uc3QgY2hhciogcCA9IE5VTEw7Ci0gIC8vIFNvbWUgb2xkZXIgR0NDIHZlcnNp
b25zIG1heSBpc3N1ZSBhIHNwdXJpb3VzIHdhcmluZyBpbiB0aGlzIG9yIHRoZSBuZXh0CisgIC8v
IFNvbWUgb2xkZXIgR0NDIHZlcnNpb25zIG1heSBpc3N1ZSBhIHNwdXJpb3VzIHdhcm5pbmcgaW4g
dGhpcyBvciB0aGUgbmV4dAogICAvLyBhc3NlcnRpb24gc3RhdGVtZW50LiBUaGlzIHdhcm5pbmcg
c2hvdWxkIG5vdCBiZSBzdXBwcmVzc2VkIHdpdGgKICAgLy8gc3RhdGljX2Nhc3Qgc2luY2UgdGhl
IHRlc3QgdmVyaWZpZXMgdGhlIGFiaWxpdHkgdG8gdXNlIGJhcmUgTlVMTCBhcyB0aGUKICAgLy8g
ZXhwZWN0ZWQgcGFyYW1ldGVyIHRvIHRoZSBtYWNyby4KQEAgLTM1NzAsNyArMzcyNiw3IEBAIFRF
U1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0VRX05VTEwpIHsKICAgLy8gQSBmYWlsdXJlLgogICBz
dGF0aWMgaW50IG4gPSAwOwogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoTlVMTCwg
Jm4pLAotICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6ICZuXG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIiAgJm5cbiAgICBXaGljaCBpczoiKTsKIH0KICNlbmRpZiAgLy8gR1RF
U1RfQ0FOX0NPTVBBUkVfTlVMTAogCkBAIC0zNTg2LDcgKzM3NDIsNyBAQCBURVNUKEV4cGVjdFRl
c3QsIEFTU0VSVF9FUV8wKSB7CiAKICAgLy8gQSBmYWlsdXJlLgogICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShBU1NFUlRfRVEoMCwgNS42KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVk
OiAwIik7CisgICAgICAgICAgICAgICAgICAgICAgICIgIDBcbiAgNS42Iik7CiB9CiAKIC8vIFRl
c3RzIEFTU0VSVF9ORS4KQEAgLTM2MzUsMTMgKzM3OTEsMTQgQEAgdm9pZCBUaHJvd05vdGhpbmco
KSB7fQogVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfVEhST1cpIHsKICAgQVNTRVJUX1RIUk9X
KFRocm93QW5JbnRlZ2VyKCksIGludCk7CiAKLSNpZm5kZWYgX19CT1JMQU5EQ19fCisjIGlmbmRl
ZiBfX0JPUkxBTkRDX18KKwogICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcgYW5kIDIwMDku
CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKAogICAgICAgQVNTRVJUX1RIUk9XKFRocm93QW5JbnRl
Z2VyKCksIGJvb2wpLAogICAgICAgIkV4cGVjdGVkOiBUaHJvd0FuSW50ZWdlcigpIHRocm93cyBh
biBleGNlcHRpb24gb2YgdHlwZSBib29sLlxuIgogICAgICAgIiAgQWN0dWFsOiBpdCB0aHJvd3Mg
YSBkaWZmZXJlbnQgdHlwZS4iKTsKLSNlbmRpZgorIyBlbmRpZgogCiAgIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKAogICAgICAgQVNTRVJUX1RIUk9XKFRocm93Tm90aGluZygpLCBib29sKSwKQEAgLTM2
NzIsNyArMzgyOSw4IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0FOWV9USFJPVykgewog
Ly8gY29tcGlsZS4KIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0UHJlY2VkZW5jZSkgewogICBB
U1NFUlRfRVEoMSA8IDIsIHRydWUpOwotICBBU1NFUlRfRVEodHJ1ZSAmJiBmYWxzZSwgZmFsc2Up
OworICBib29sIGZhbHNlX3ZhbHVlID0gZmFsc2U7CisgIEFTU0VSVF9FUSh0cnVlICYmIGZhbHNl
X3ZhbHVlLCBmYWxzZSk7CiB9CiAKIC8vIEEgc3Vicm91dGluZSB1c2VkIGJ5IHRoZSBmb2xsb3dp
bmcgdGVzdC4KQEAgLTM2ODMsNyArMzg0MSw3IEBAIHZvaWQgVGVzdEVxMShpbnQgeCkgewogLy8g
VGVzdHMgY2FsbGluZyBhIHRlc3Qgc3Vicm91dGluZSB0aGF0J3Mgbm90IHBhcnQgb2YgYSBmaXh0
dXJlLgogVEVTVChBc3NlcnRpb25UZXN0LCBOb25GaXh0dXJlU3Vicm91dGluZSkgewogICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShUZXN0RXExKDIpLAotICAgICAgICAgICAgICAgICAgICAgICAiVmFs
dWUgb2Y6IHgiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgeFxuICAgIFdoaWNoIGlzOiAy
Iik7CiB9CiAKIC8vIEFuIHVuY29weWFibGUgY2xhc3MuCkBAIC0zNzMyLDcgKzM4OTAsOCBAQCBU
RVNUKEFzc2VydGlvblRlc3QsIEFzc2VydFdvcmtzV2l0aFVuY29weWFibGVPYmplY3QpIHsKICAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoVGVzdEFzc2VydE5vblBvc2l0aXZlKCksCiAgICAgIklzUG9z
aXRpdmVVbmNvcHlhYmxlKHkpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmVcbnkgZXZhbHVhdGVz
IHRvIC0xIik7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKFRlc3RBc3NlcnRFcXVhbHNVbmNvcHlh
YmxlKCksCi0gICAgIlZhbHVlIG9mOiB5XG4gIEFjdHVhbDogLTFcbkV4cGVjdGVkOiB4XG5XaGlj
aCBpczogNSIpOworICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2Yg
dGhlc2UgdmFsdWVzOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAiICB4XG4gICAgV2hpY2gg
aXM6IDVcbiAgeVxuICAgIFdoaWNoIGlzOiAtMSIpOwogfQogCiAvLyBUZXN0cyB0aGF0IHVuY29w
eWFibGUgb2JqZWN0cyBjYW4gYmUgdXNlZCBpbiBleHBlY3RzLgpAQCAtMzc0NCw1NyArMzkwMyw5
MCBAQCBURVNUKEFzc2VydGlvblRlc3QsIEV4cGVjdFdvcmtzV2l0aFVuY29weWFibGVPYmplY3Qp
IHsKICAgICAiSXNQb3NpdGl2ZVVuY29weWFibGUoeSkgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVy
ZVxueSBldmFsdWF0ZXMgdG8gLTEiKTsKICAgRVhQRUNUX0VRKHgsIHgpOwogICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoeCwgeSksCi0gICAgIlZhbHVlIG9mOiB5XG4gIEFjdHVh
bDogLTFcbkV4cGVjdGVkOiB4XG5XaGljaCBpczogNSIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiICB4XG4gICAgV2hpY2ggaXM6IDVcbiAgeVxuICAgIFdoaWNoIGlzOiAt
MSIpOwogfQogCitlbnVtIE5hbWVkRW51bSB7CisgIGtFMSA9IDAsCisgIGtFMiA9IDEKK307CisK
K1RFU1QoQXNzZXJ0aW9uVGVzdCwgTmFtZWRFbnVtKSB7CisgIEVYUEVDVF9FUShrRTEsIGtFMSk7
CisgIEVYUEVDVF9MVChrRTEsIGtFMik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVD
VF9FUShrRTEsIGtFMiksICJXaGljaCBpczogMCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShFWFBFQ1RfRVEoa0UxLCBrRTIpLCAiV2hpY2ggaXM6IDEiKTsKK30KIAogLy8gVGhlIHZlcnNp
b24gb2YgZ2NjIHVzZWQgaW4gWENvZGUgMi4yIGhhcyBhIGJ1ZyBhbmQgZG9lc24ndCBhbGxvdwog
Ly8gYW5vbnltb3VzIGVudW1zIGluIGFzc2VydGlvbnMuICBUaGVyZWZvcmUgdGhlIGZvbGxvd2lu
ZyB0ZXN0IGlzIG5vdAogLy8gZG9uZSBvbiBNYWMuCi0vLyBTdW4gU3R1ZGlvIGFsc28gcmVqZWN0
cyB0aGlzIGNvZGUuCi0jaWYgIUdURVNUX09TX01BQyAmJiAhZGVmaW5lZChfX1NVTlBST19DQykK
Ky8vIFN1biBTdHVkaW8gYW5kIEhQIGFDQyBhbHNvIHJlamVjdCB0aGlzIGNvZGUuCisjaWYgIUdU
RVNUX09TX01BQyAmJiAhZGVmaW5lZChfX1NVTlBST19DQykgJiYgIWRlZmluZWQoX19IUF9hQ0Mp
CiAKIC8vIFRlc3RzIHVzaW5nIGFzc2VydGlvbnMgd2l0aCBhbm9ueW1vdXMgZW51bXMuCiBlbnVt
IHsKLSAgQ0FTRV9BID0gLTEsCi0jaWYgR1RFU1RfT1NfTElOVVgKKyAga0Nhc2VBID0gLTEsCisK
KyMgaWYgR1RFU1RfT1NfTElOVVgKKwogICAvLyBXZSB3YW50IHRvIHRlc3QgdGhlIGNhc2Ugd2hl
cmUgdGhlIHNpemUgb2YgdGhlIGFub255bW91cyBlbnVtIGlzCiAgIC8vIGxhcmdlciB0aGFuIHNp
emVvZihpbnQpLCB0byBtYWtlIHN1cmUgb3VyIGltcGxlbWVudGF0aW9uIG9mIHRoZQogICAvLyBh
c3NlcnRpb25zIGRvZXNuJ3QgdHJ1bmNhdGUgdGhlIGVudW1zLiAgSG93ZXZlciwgTVNWQwogICAv
LyAoaW5jb3JyZWN0bHkpIGRvZXNuJ3QgYWxsb3cgYW4gZW51bSB2YWx1ZSB0byBleGNlZWQgdGhl
IHJhbmdlIG9mCiAgIC8vIGFuIGludCwgc28gdGhpcyBoYXMgdG8gYmUgY29uZGl0aW9uYWxseSBj
b21waWxlZC4KICAgLy8KLSAgLy8gT24gTGludXgsIENBU0VfQiBhbmQgQ0FTRV9BIGhhdmUgdGhl
IHNhbWUgdmFsdWUgd2hlbiB0cnVuY2F0ZWQgdG8KKyAgLy8gT24gTGludXgsIGtDYXNlQiBhbmQg
a0Nhc2VBIGhhdmUgdGhlIHNhbWUgdmFsdWUgd2hlbiB0cnVuY2F0ZWQgdG8KICAgLy8gaW50IHNp
emUuICBXZSB3YW50IHRvIHRlc3Qgd2hldGhlciB0aGlzIHdpbGwgY29uZnVzZSB0aGUKICAgLy8g
YXNzZXJ0aW9ucy4KLSAgQ0FTRV9CID0gdGVzdGluZzo6aW50ZXJuYWw6OmtNYXhCaWdnZXN0SW50
LAotI2Vsc2UKLSAgQ0FTRV9CID0gSU5UX01BWCwKLSNlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgK
KyAga0Nhc2VCID0gdGVzdGluZzo6aW50ZXJuYWw6OmtNYXhCaWdnZXN0SW50LAorCisjIGVsc2UK
KworICBrQ2FzZUIgPSBJTlRfTUFYLAorCisjIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCisg
IGtDYXNlQyA9IDQyCiB9OwogCiBURVNUKEFzc2VydGlvblRlc3QsIEFub255bW91c0VudW0pIHsK
LSNpZiBHVEVTVF9PU19MSU5VWAotICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50PihDQVNFX0Ep
LCBzdGF0aWNfY2FzdDxpbnQ+KENBU0VfQikpOwotI2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAot
Ci0gIEVYUEVDVF9FUShDQVNFX0EsIENBU0VfQSk7Ci0gIEVYUEVDVF9ORShDQVNFX0EsIENBU0Vf
Qik7Ci0gIEVYUEVDVF9MVChDQVNFX0EsIENBU0VfQik7Ci0gIEVYUEVDVF9MRShDQVNFX0EsIENB
U0VfQik7Ci0gIEVYUEVDVF9HVChDQVNFX0IsIENBU0VfQSk7Ci0gIEVYUEVDVF9HRShDQVNFX0Es
IENBU0VfQSk7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HRShDQVNFX0EsIENB
U0VfQiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoQ0FTRV9BKSA+PSAoQ0FTRV9CKSIp
OwotCi0gIEFTU0VSVF9FUShDQVNFX0EsIENBU0VfQSk7Ci0gIEFTU0VSVF9ORShDQVNFX0EsIENB
U0VfQik7Ci0gIEFTU0VSVF9MVChDQVNFX0EsIENBU0VfQik7Ci0gIEFTU0VSVF9MRShDQVNFX0Es
IENBU0VfQik7Ci0gIEFTU0VSVF9HVChDQVNFX0IsIENBU0VfQSk7Ci0gIEFTU0VSVF9HRShDQVNF
X0EsIENBU0VfQSk7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShDQVNFX0EsIENB
U0VfQiksCi0gICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogQ0FTRV9CIik7CisjIGlm
IEdURVNUX09TX0xJTlVYCisKKyAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGludD4oa0Nhc2VBKSwg
c3RhdGljX2Nhc3Q8aW50PihrQ2FzZUIpKTsKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgK
KworICBFWFBFQ1RfRVEoa0Nhc2VBLCBrQ2FzZUEpOworICBFWFBFQ1RfTkUoa0Nhc2VBLCBrQ2Fz
ZUIpOworICBFWFBFQ1RfTFQoa0Nhc2VBLCBrQ2FzZUIpOworICBFWFBFQ1RfTEUoa0Nhc2VBLCBr
Q2FzZUIpOworICBFWFBFQ1RfR1Qoa0Nhc2VCLCBrQ2FzZUEpOworICBFWFBFQ1RfR0Uoa0Nhc2VB
LCBrQ2FzZUEpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR0Uoa0Nhc2VBLCBr
Q2FzZUIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiKGtDYXNlQSkgPj0gKGtDYXNlQiki
KTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dFKGtDYXNlQSwga0Nhc2VDKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIi0xIHZzIDQyIik7CisKKyAgQVNTRVJUX0VRKGtD
YXNlQSwga0Nhc2VBKTsKKyAgQVNTRVJUX05FKGtDYXNlQSwga0Nhc2VCKTsKKyAgQVNTRVJUX0xU
KGtDYXNlQSwga0Nhc2VCKTsKKyAgQVNTRVJUX0xFKGtDYXNlQSwga0Nhc2VCKTsKKyAgQVNTRVJU
X0dUKGtDYXNlQiwga0Nhc2VBKTsKKyAgQVNTRVJUX0dFKGtDYXNlQSwga0Nhc2VBKTsKKworIyBp
Zm5kZWYgX19CT1JMQU5EQ19fCisKKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4KKyAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKGtDYXNlQSwga0Nhc2VCKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIiAga0Nhc2VCXG4gICAgV2hpY2ggaXM6ICIpOworICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShBU1NFUlRfRVEoa0Nhc2VBLCBrQ2FzZUMpLAorICAgICAgICAgICAgICAgICAgICAgICAi
XG4gICAgV2hpY2ggaXM6IDQyIik7CisjIGVuZGlmCisKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
QVNTRVJUX0VRKGtDYXNlQSwga0Nhc2VDKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuICAg
IFdoaWNoIGlzOiAtMSIpOwogfQogCiAjZW5kaWYgIC8vICFHVEVTVF9PU19NQUMgJiYgIWRlZmlu
ZWQoX19TVU5QUk9fQ0MpCkBAIC0zODQwLDI0ICs0MDMyLDI2IEBAIFRFU1QoSFJFU1VMVEFzc2Vy
dGlvblRlc3QsIEVYUEVDVF9IUkVTVUxUX0ZBSUxFRCkgewogCiAgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChPa0hSRVNVTFRTdWNjZXNzKCkpLAogICAgICJF
eHBlY3RlZDogKE9rSFJFU1VMVFN1Y2Nlc3MoKSkgZmFpbHMuXG4iCi0gICAgIiAgQWN0dWFsOiAw
eDAwMDAwMDAwIik7CisgICAgIiAgQWN0dWFsOiAweDAiKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoRVhQRUNUX0hSRVNVTFRfRkFJTEVEKEZhbHNlSFJFU1VMVFN1Y2Nlc3MoKSksCiAgICAg
IkV4cGVjdGVkOiAoRmFsc2VIUkVTVUxUU3VjY2VzcygpKSBmYWlscy5cbiIKLSAgICAiICBBY3R1
YWw6IDB4MDAwMDAwMDEiKTsKKyAgICAiICBBY3R1YWw6IDB4MSIpOwogfQogCiBURVNUKEhSRVNV
TFRBc3NlcnRpb25UZXN0LCBBU1NFUlRfSFJFU1VMVF9GQUlMRUQpIHsKICAgQVNTRVJUX0hSRVNV
TFRfRkFJTEVEKEVfVU5FWFBFQ1RFRCk7CiAKLSNpZm5kZWYgX19CT1JMQU5EQ19fCisjIGlmbmRl
ZiBfX0JPUkxBTkRDX18KKwogICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcgYW5kIDIwMDku
CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChPa0hSRVNVTFRT
dWNjZXNzKCkpLAogICAgICJFeHBlY3RlZDogKE9rSFJFU1VMVFN1Y2Nlc3MoKSkgZmFpbHMuXG4i
Ci0gICAgIiAgQWN0dWFsOiAweDAwMDAwMDAwIik7Ci0jZW5kaWYKKyAgICAiICBBY3R1YWw6IDB4
MCIpOworIyBlbmRpZgorCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9IUkVTVUxUX0ZB
SUxFRChGYWxzZUhSRVNVTFRTdWNjZXNzKCkpLAogICAgICJFeHBlY3RlZDogKEZhbHNlSFJFU1VM
VFN1Y2Nlc3MoKSkgZmFpbHMuXG4iCi0gICAgIiAgQWN0dWFsOiAweDAwMDAwMDAxIik7CisgICAg
IiAgQWN0dWFsOiAweDEiKTsKIH0KIAogLy8gVGVzdHMgdGhhdCBzdHJlYW1pbmcgdG8gdGhlIEhS
RVNVTFQgbWFjcm9zIHdvcmtzLgpAQCAtMzg3MSwxMiArNDA2NSwxMyBAQCBURVNUKEhSRVNVTFRB
c3NlcnRpb25UZXN0LCBTdHJlYW1pbmcpIHsKICAgICAgIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURF
RChFX1VORVhQRUNURUQpIDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKICAgICAgICJleHBlY3RlZCBm
YWlsdXJlIik7CiAKLSNpZm5kZWYgX19CT1JMQU5EQ19fCisjIGlmbmRlZiBfX0JPUkxBTkRDX18K
KwogICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcgYW5kIDIwMDkuCiAgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKAogICAgICAgQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKEVfVU5FWFBFQ1RFRCkg
PDwgImV4cGVjdGVkIGZhaWx1cmUiLAogICAgICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKLSNlbmRp
ZgorIyBlbmRpZgogCiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAogICAgICAgRVhQRUNUX0hS
RVNVTFRfRkFJTEVEKFNfT0spIDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKQEAgLTM4OTEsNyArNDA4
Niw3IEBAIFRFU1QoSFJFU1VMVEFzc2VydGlvblRlc3QsIFN0cmVhbWluZykgewogCiAjaWZkZWYg
X19CT1JMQU5EQ19fCiAvLyBTaWxlbmNlcyB3YXJuaW5nczogIkNvbmRpdGlvbiBpcyBhbHdheXMg
dHJ1ZSIsICJVbnJlYWNoYWJsZSBjb2RlIgotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXct
cmNoCisjIHByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCiAjZW5kaWYKIAogLy8gVGVz
dHMgdGhhdCB0aGUgYXNzZXJ0aW9uIG1hY3JvcyBiZWhhdmUgbGlrZSBzaW5nbGUgc3RhdGVtZW50
cy4KQEAgLTQwMDgsNyArNDIwMyw3IEBAIFRFU1QoQXNzZXJ0aW9uU3ludGF4VGVzdCwgV29ya3NX
aXRoU3dpdGNoKSB7CiAjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKIAogdm9pZCBUaHJvd0FTdHJp
bmcoKSB7Ci0gICAgdGhyb3cgIlN0cmluZyI7CisgICAgdGhyb3cgInN0ZDo6c3RyaW5nIjsKIH0K
IAogLy8gVGVzdCB0aGF0IHRoZSBleGNlcHRpb24gYXNzZXJ0aW9uIG1hY3JvcyBjb21waWxlIGFu
ZCB3b3JrIHdpdGggY29uc3QKQEAgLTQwNjAsOCArNDI1NSwxMDkgQEAgVEVTVChTdWNjZXNzZnVs
QXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1NUUikgewogCiBuYW1lc3BhY2UgewogCisvLyBUZXN0cyB0
aGUgbWVzc2FnZSBzdHJlYW1pbmcgdmFyaWF0aW9uIG9mIGFzc2VydGlvbnMuCisKK1RFU1QoQXNz
ZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBFWFBFQ1QpIHsKKyAgRVhQRUNUX0VRKDEsIDEpIDw8ICJU
aGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9O
RSgxLCAxKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMS4iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAiRXhwZWN0ZWQgZmFpbHVyZSAjMSIpOworICBFWFBFQ1RfTEUoMSwgMikgPDwgIlRoaXMg
c2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0xUKDEs
IDApIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJFeHBlY3RlZCBmYWlsdXJlICMyLiIpOworICBFWFBFQ1RfR0UoMSwgMCkgPDwgIlRoaXMgc2hv
dWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dUKDEsIDIp
IDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJF
eHBlY3RlZCBmYWlsdXJlICMzLiIpOworCisgIEVYUEVDVF9TVFJFUSgiMSIsICIxIikgPDwgIlRo
aXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1NU
Uk5FKCIxIiwgIjEiKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNC4iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZSAjNC4iKTsKKyAgRVhQRUNUX1NUUkNBU0VFUSgi
YSIsICJBIikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoRVhQRUNUX1NUUkNBU0VORSgiYSIsICJBIikgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzUu
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1cmUgIzUuIik7CisK
KyAgRVhQRUNUX0ZMT0FUX0VRKDEsIDEpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ET1VCTEVfRVEoMSwgMS4yKSA8PCAiRXhwZWN0
ZWQgZmFpbHVyZSAjNi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFp
bHVyZSAjNi4iKTsKKyAgRVhQRUNUX05FQVIoMSwgMS4xLCAwLjIpIDw8ICJUaGlzIHNob3VsZCBz
dWNjZWVkLiI7Cit9CisKK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBBU1NFUlQpIHsK
KyAgQVNTRVJUX0VRKDEsIDEpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9O
RSgxLCAyKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfTEUoMSwgMikgPDwg
IlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJUX0xUKDEsIDIpIDw8ICJUaGlzIHNob3Vs
ZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9HRSgxLCAwKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4i
OworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfR1QoMSwgMikgPDwgIkV4cGVjdGVkIGZh
aWx1cmUuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1cmUuIik7Cit9
CisKK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBBU1NFUlRfU1RSKSB7CisgIEFTU0VS
VF9TVFJFUSgiMSIsICIxIikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJUX1NU
Uk5FKCIxIiwgIjIiKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfU1RSQ0FT
RUVRKCJhIiwgIkEiKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShBU1NFUlRfU1RSQ0FTRU5FKCJhIiwgIkEiKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4i
LAorICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZS4iKTsKK30KKworVEVT
VChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVF9GTE9BVElORykgeworICBBU1NFUlRf
RkxPQVRfRVEoMSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJUX0RPVUJM
RV9FUSgxLCAxKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShBU1NFUlRfTkVBUigxLDEuMiwgMC4xKSA8PCAiRXhwZWN0IGZhaWx1cmUuIiwgIC8vIE5P
TElOVAorICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0IGZhaWx1cmUuIik7CisgIC8vIFRv
IHdvcmsgYXJvdW5kIGEgYnVnIGluIGdjYyAyLjk1LjAsIHRoZXJlIGlzIGludGVudGlvbmFsbHkg
bm8KKyAgLy8gc3BhY2UgYWZ0ZXIgdGhlIGZpcnN0IGNvbW1hIGluIHRoZSBwcmV2aW91cyBzdGF0
ZW1lbnQuCit9CisKKy8vIFRlc3RzIHVzaW5nIEFTU0VSVF9GQUxTRSB3aXRoIGEgc3RyZWFtZWQg
bWVzc2FnZS4KK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBBU1NFUlRfRkFMU0UpIHsK
KyAgQVNTRVJUX0ZBTFNFKGZhbHNlKSA8PCAiVGhpcyBzaG91bGRuJ3QgZmFpbC4iOworICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfRkFMU0UodHJ1ZSkgPDwg
IkV4cGVjdGVkIGZhaWx1cmU6ICIgPDwgMiA8PCAiID4gIiA8PCAxCisgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdHJ1ZTsKKyAgfSwgIkV4cGVjdGVkIGZhaWx1
cmUiKTsKK30KKworLy8gVGVzdHMgdXNpbmcgRkFJTCB3aXRoIGEgc3RyZWFtZWQgbWVzc2FnZS4K
K1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBGQUlMKSB7CisgIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKEZBSUwoKSA8PCAwLAorICAgICAgICAgICAgICAgICAgICAgICAiMCIpOworfQorCisv
LyBUZXN0cyB1c2luZyBTVUNDRUVEIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgorVEVTVChBc3Nl
cnRpb25XaXRoTWVzc2FnZVRlc3QsIFNVQ0NFRUQpIHsKKyAgU1VDQ0VFRCgpIDw8ICJTdWNjZXNz
ID09ICIgPDwgMTsKK30KKworLy8gVGVzdHMgdXNpbmcgQVNTRVJUX1RSVUUgd2l0aCBhIHN0cmVh
bWVkIG1lc3NhZ2UuCitURVNUKEFzc2VydGlvbldpdGhNZXNzYWdlVGVzdCwgQVNTRVJUX1RSVUUp
IHsKKyAgQVNTRVJUX1RSVUUodHJ1ZSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNT
RVJUX1RSVUUodHJ1ZSkgPDwgdHJ1ZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9M
SU5UCisgICAgQVNTRVJUX1RSVUUoZmFsc2UpIDw8IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4o
TlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8Y2hhciAqPihOVUxM
KTsKKyAgfSwgIihudWxsKShudWxsKSIpOworfQorCisjaWYgR1RFU1RfT1NfV0lORE9XUworLy8g
VGVzdHMgdXNpbmcgd2lkZSBzdHJpbmdzIGluIGFzc2VydGlvbiBtZXNzYWdlcy4KK1RFU1QoQXNz
ZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBXaWRlU3RyaW5nTWVzc2FnZSkgeworICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfVFJVRShmYWxzZSkgPDwgTCJU
aGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuXHg4MTE5IjsKKyAgfSwgIlRoaXMgZmFpbHVyZSBpcyBl
eHBlY3RlZC4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgQVNT
RVJUX0VRKDEsIDIpIDw8ICJUaGlzIGZhaWx1cmUgaXMgIgorICAgICAgICAgICAgICAgICAgICA8
PCBMImV4cGVjdGVkIHRvby5ceDgxMjAiOworICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVk
IHRvby4iKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCiAvLyBUZXN0cyBFWFBF
Q1RfVFJVRS4KIFRFU1QoRXhwZWN0VGVzdCwgRVhQRUNUX1RSVUUpIHsKKyAgRVhQRUNUX1RSVUUo
dHJ1ZSkgPDwgIkludGVudGlvbmFsIHN1Y2Nlc3MiOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShFWFBFQ1RfVFJVRShmYWxzZSkgPDwgIkludGVudGlvbmFsIGZhaWx1cmUgIzEuIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkludGVudGlvbmFsIGZhaWx1cmUgIzEuIik7CisgIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9UUlVFKGZhbHNlKSA8PCAiSW50ZW50aW9uYWwgZmFp
bHVyZSAjMi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9uYWwgZmFpbHVy
ZSAjMi4iKTsKICAgRVhQRUNUX1RSVUUoMiA+IDEpOyAgLy8gTk9MSU5UCiAgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9UUlVFKDIgPCAxKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlZhbHVlIG9mOiAyIDwgMVxuIgpAQCAtNDA4NSw5ICs0MzgxLDE0IEBAIFRFU1QoRXhwZWN0
VGVzdCwgRXhwZWN0VHJ1ZVdpdGhBc3NlcnRpb25SZXN1bHQpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkV4cGVjdGVkOiB0cnVlIik7CiB9CiAKLS8vIFRlc3RzIEVYUEVDVF9GQUxTRS4K
Ky8vIFRlc3RzIEVYUEVDVF9GQUxTRSB3aXRoIGEgc3RyZWFtZWQgbWVzc2FnZS4KIFRFU1QoRXhw
ZWN0VGVzdCwgRVhQRUNUX0ZBTFNFKSB7CiAgIEVYUEVDVF9GQUxTRSgyIDwgMSk7ICAvLyBOT0xJ
TlQKKyAgRVhQRUNUX0ZBTFNFKGZhbHNlKSA8PCAiSW50ZW50aW9uYWwgc3VjY2VzcyI7CisgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GQUxTRSh0cnVlKSA8PCAiSW50ZW50aW9uYWwg
ZmFpbHVyZSAjMS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9uYWwgZmFp
bHVyZSAjMS4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0ZBTFNFKHRydWUp
IDw8ICJJbnRlbnRpb25hbCBmYWlsdXJlICMyLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJJbnRlbnRpb25hbCBmYWlsdXJlICMyLiIpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShF
WFBFQ1RfRkFMU0UoMiA+IDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6
IDIgPiAxXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogdHJ1ZVxuIgpA
QCAtNDExMSwxNyArNDQxMiwxOCBAQCBURVNUKEV4cGVjdFRlc3QsIEV4cGVjdEZhbHNlV2l0aEFz
c2VydGlvblJlc3VsdCkgewogfQogCiAjaWZkZWYgX19CT1JMQU5EQ19fCi0vLyBSZXN0b3JlcyB3
YXJuaW5ncyBhZnRlciBwcmV2aW91cyAiI3ByYWdtYSBvcHRpb24gcHVzaCIgc3VwcmVzc2VkIHRo
ZW0KLSNwcmFnbWEgb3B0aW9uIHBvcAorLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0ZXIgcHJldmlv
dXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHByZXNzZWQgdGhlbQorIyBwcmFnbWEgb3B0aW9u
IHBvcAogI2VuZGlmCiAKIC8vIFRlc3RzIEVYUEVDVF9FUS4KIFRFU1QoRXhwZWN0VGVzdCwgRVhQ
RUNUX0VRKSB7CiAgIEVYUEVDVF9FUSg1LCAyICsgMyk7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEVYUEVDVF9FUSg1LCAyKjMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUg
b2Y6IDIqM1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IDZcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiA1Iik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICIgIDVcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAg
MiozXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgV2hpY2ggaXM6IDYiKTsKICAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDUsIDIgLSAzKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIjIgLSAzIik7CiB9CkBAIC00MTQzLDcgKzQ0NDUsNyBAQCBURVNUKEV4
cGVjdFRlc3QsIEVYUEVDVF9FUV9Eb3VibGUpIHsKIFRFU1QoRXhwZWN0VGVzdCwgRVhQRUNUX0VR
X05VTEwpIHsKICAgLy8gQSBzdWNjZXNzLgogICBjb25zdCBjaGFyKiBwID0gTlVMTDsKLSAgLy8g
U29tZSBvbGRlciBHQ0MgdmVyc2lvbnMgbWF5IGlzc3VlIGEgc3B1cmlvdXMgd2FyaW5nIGluIHRo
aXMgb3IgdGhlIG5leHQKKyAgLy8gU29tZSBvbGRlciBHQ0MgdmVyc2lvbnMgbWF5IGlzc3VlIGEg
c3B1cmlvdXMgd2FybmluZyBpbiB0aGlzIG9yIHRoZSBuZXh0CiAgIC8vIGFzc2VydGlvbiBzdGF0
ZW1lbnQuIFRoaXMgd2FybmluZyBzaG91bGQgbm90IGJlIHN1cHByZXNzZWQgd2l0aAogICAvLyBz
dGF0aWNfY2FzdCBzaW5jZSB0aGUgdGVzdCB2ZXJpZmllcyB0aGUgYWJpbGl0eSB0byB1c2UgYmFy
ZSBOVUxMIGFzIHRoZQogICAvLyBleHBlY3RlZCBwYXJhbWV0ZXIgdG8gdGhlIG1hY3JvLgpAQCAt
NDE1Miw3ICs0NDU0LDcgQEAgVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVFfTlVMTCkgewogICAv
LyBBIGZhaWx1cmUuCiAgIGludCBuID0gMDsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX0VRKE5VTEwsICZuKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiAm
blxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgICZuXG4gICAgV2hpY2ggaXM6Iik7
CiB9CiAjZW5kaWYgIC8vIEdURVNUX0NBTl9DT01QQVJFX05VTEwKIApAQCAtNDE2OCw3ICs0NDcw
LDcgQEAgVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVFfMCkgewogCiAgIC8vIEEgZmFpbHVyZS4K
ICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDAsIDUuNiksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICJFeHBlY3RlZDogMCIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICAwXG4gIDUuNiIpOwogfQogCiAvLyBUZXN0cyBFWFBFQ1RfTkUuCkBAIC00MjY4LDcgKzQ1
NzAsNyBAQCBURVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9BTllfVEhST1cpIHsKIFRFU1QoRXhwZWN0
VGVzdCwgRXhwZWN0UHJlY2VkZW5jZSkgewogICBFWFBFQ1RfRVEoMSA8IDIsIHRydWUpOwogICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEodHJ1ZSwgdHJ1ZSAmJiBmYWxzZSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogdHJ1ZSAmJiBmYWxzZSIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAiICB0cnVlICYmIGZhbHNlXG4gICAgV2hpY2ggaXM6IGZh
bHNlIik7CiB9CiAKIApAQCAtNDM2MSw3ICs0NjYzLDcgQEAgVEVTVChTdHJlYW1hYmxlVGVzdCwg
QmFzaWNJb01hbmlwKSB7CiAKIHZvaWQgQWRkRmFpbHVyZUhlbHBlcihib29sKiBhYm9ydGVkKSB7
CiAgICphYm9ydGVkID0gdHJ1ZTsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiRmFpbHVyZSI7CisgIEFE
RF9GQUlMVVJFKCkgPDwgIkludGVudGlvbmFsIGZhaWx1cmUuIjsKICAgKmFib3J0ZWQgPSBmYWxz
ZTsKIH0KIApAQCAtNDM2OSwxMCArNDY3MSwyNSBAQCB2b2lkIEFkZEZhaWx1cmVIZWxwZXIoYm9v
bCogYWJvcnRlZCkgewogVEVTVChNYWNyb1Rlc3QsIEFERF9GQUlMVVJFKSB7CiAgIGJvb2wgYWJv
cnRlZCA9IHRydWU7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmVIZWxwZXIo
JmFib3J0ZWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbHVyZSIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9uYWwgZmFpbHVyZS4iKTsKICAgRVhQRUNUX0ZB
TFNFKGFib3J0ZWQpOwogfQogCisvLyBUZXN0cyBBRERfRkFJTFVSRV9BVC4KK1RFU1QoTWFjcm9U
ZXN0LCBBRERfRkFJTFVSRV9BVCkgeworICAvLyBWZXJpZmllcyB0aGF0IEFERF9GQUlMVVJFX0FU
IGRvZXMgZ2VuZXJhdGUgYSBub25mYXRhbCBmYWlsdXJlIGFuZAorICAvLyB0aGUgZmFpbHVyZSBt
ZXNzYWdlIGNvbnRhaW5zIHRoZSB1c2VyLXN0cmVhbWVkIHBhcnQuCisgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEFERF9GQUlMVVJFX0FUKCJmb28uY2MiLCA0MikgPDwgIldyb25nISIsICJXcm9u
ZyEiKTsKKworICAvLyBWZXJpZmllcyB0aGF0IHRoZSB1c2VyLXN0cmVhbWVkIHBhcnQgaXMgb3B0
aW9uYWwuCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFERF9GQUlMVVJFX0FUKCJmb28uY2Mi
LCA0MiksICJGYWlsZWQiKTsKKworICAvLyBVbmZvcnR1bmF0ZWx5LCB3ZSBjYW5ub3QgdmVyaWZ5
IHRoYXQgdGhlIGZhaWx1cmUgbWVzc2FnZSBjb250YWlucworICAvLyB0aGUgcmlnaHQgZmlsZSBw
YXRoIGFuZCBsaW5lIG51bWJlciB0aGUgc2FtZSB3YXksIGFzCisgIC8vIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKCkgZG9lc24ndCBnZXQgdG8gc2VlIHRoZSBmaWxlIHBhdGggYW5kCisgIC8vIGxp
bmUgbnVtYmVyLiAgSW5zdGVhZCwgd2UgZG8gdGhhdCBpbiBnb29nbGV0ZXN0LW91dHB1dC10ZXN0
Xy5jYy4KK30KKwogLy8gVGVzdHMgRkFJTC4KIFRFU1QoTWFjcm9UZXN0LCBGQUlMKSB7CiAgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKEZBSUwoKSwKQEAgLTQzODcsNyArNDcwNCw2IEBAIFRFU1QoTWFj
cm9UZXN0LCBTVUNDRUVEKSB7CiAgIFNVQ0NFRUQoKSA8PCAiRXhwbGljaXQgc3VjY2Vzcy4iOwog
fQogCi0KIC8vIFRlc3RzIGZvciBFWFBFQ1RfRVEoKSBhbmQgQVNTRVJUX0VRKCkuCiAvLwogLy8g
VGhlc2UgdGVzdHMgZmFpbCAqaW50ZW50aW9uYWxseSosIHMudC4gdGhlIGZhaWx1cmUgbWVzc2Fn
ZXMgY2FuIGJlCkBAIC00Mzk4LDE1ICs0NzE0LDE3IEBAIFRFU1QoTWFjcm9UZXN0LCBTVUNDRUVE
KSB7CiAvLyBUZXN0cyB1c2luZyBib29sIHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCiBU
RVNUKEVxQXNzZXJ0aW9uVGVzdCwgQm9vbCkgewogICBFWFBFQ1RfRVEodHJ1ZSwgIHRydWUpOwot
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoZmFsc2UsIHRydWUpLAotICAgICAgICAg
ICAgICAgICAgICAgICAiVmFsdWUgb2Y6IHRydWUiKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
eworICAgICAgYm9vbCBmYWxzZV92YWx1ZSA9IGZhbHNlOworICAgICAgQVNTRVJUX0VRKGZhbHNl
X3ZhbHVlLCB0cnVlKTsKKyAgICB9LCAiICBmYWxzZV92YWx1ZVxuICAgIFdoaWNoIGlzOiBmYWxz
ZVxuICB0cnVlIik7CiB9CiAKIC8vIFRlc3RzIHVzaW5nIGludCB2YWx1ZXMgaW4ge0VYUEVDVHxB
U1NFUlR9X0VRLgogVEVTVChFcUFzc2VydGlvblRlc3QsIEludCkgewogICBBU1NFUlRfRVEoMzIs
IDMyKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDMyLCAzMyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICIzMyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAi
ICAzMlxuICAzMyIpOwogfQogCiAvLyBUZXN0cyB1c2luZyB0aW1lX3QgdmFsdWVzIGluIHtFWFBF
Q1R8QVNTRVJUfV9FUS4KQEAgLTQ0MjMsOSArNDc0MSw5IEBAIFRFU1QoRXFBc3NlcnRpb25UZXN0
LCBDaGFyKSB7CiAgIEFTU0VSVF9FUSgneicsICd6Jyk7CiAgIGNvbnN0IGNoYXIgY2ggPSAnYic7
CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSgnXDAnLCBjaCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICJjaCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiICBj
aFxuICAgIFdoaWNoIGlzOiAnYiciKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNU
X0VRKCdhJywgY2gpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiY2giKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiAgY2hcbiAgICBXaGljaCBpczogJ2InIik7CiB9CiAKIC8vIFRl
c3RzIHVzaW5nIHdjaGFyX3QgdmFsdWVzIGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4KQEAgLTQ0MzMs
MTggKzQ3NTEsMTkgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIFdpZGVDaGFyKSB7CiAgIEVYUEVD
VF9FUShMJ2InLCBMJ2InKTsKIAogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEo
TCdcMCcsIEwneCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IEwneCdc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBMJ3gnICgxMjAsIDB4Nzgp
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogTCdcMCdcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIldoaWNoIGlzOiBMJ1wwJyAoMCwgMHgwKSIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAiICBMJ1wwJ1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIFdoaWNoIGlzOiBMJ1wwJyAoMCwgMHgwKVxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiICBMJ3gnXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAg
V2hpY2ggaXM6IEwneCcgKDEyMCwgMHg3OCkiKTsKIAogICBzdGF0aWMgd2NoYXJfdCB3Y2hhcjsK
ICAgd2NoYXIgPSBMJ2InOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoTCdh
Jywgd2NoYXIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAid2NoYXIiKTsKLSAgd2NoYXIg
PSBMJ1x4ODExOSc7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShMJ1x4ODEyMCcs
IHdjaGFyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiB3Y2hhciIpOworICB3
Y2hhciA9IDB4ODExOTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKHN0YXRpY19j
YXN0PHdjaGFyX3Q+KDB4ODEyMCksIHdjaGFyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIiAg
d2NoYXJcbiAgICBXaGljaCBpczogTCciKTsKIH0KIAogLy8gVGVzdHMgdXNpbmcgOjpzdGQ6OnN0
cmluZyB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgpAQCAtNDQ2MSw3ICs0NzgwLDcgQEAg
VEVTVChFcUFzc2VydGlvblRlc3QsIFN0ZFN0cmluZykgewogICAvLyBDb21wYXJlcyBhIGNvbnN0
IGNoYXIqIHRvIGFuIHN0ZDo6c3RyaW5nIHRoYXQgaGFzIGRpZmZlcmVudAogICAvLyBjb250ZW50
CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSgiVGVzdCIsIDo6c3RkOjpzdHJp
bmcoInRlc3QiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICI6OnN0ZDo6c3RyaW5nKFwi
dGVzdFwiKSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiXCJ0ZXN0XCIiKTsKIAogICAv
LyBDb21wYXJlcyBhbiBzdGQ6OnN0cmluZyB0byBhIGNoYXIqIHRoYXQgaGFzIGRpZmZlcmVudCBj
b250ZW50LgogICBjaGFyKiBjb25zdCBwMSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KCJmb28iKTsKQEAg
LTQ0NzMsMjggKzQ3OTIsMjkgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIFN0ZFN0cmluZykgewog
ICBzdGF0aWMgOjpzdGQ6OnN0cmluZyBzdHIzKHN0cjEpOwogICBzdHIzLmF0KDIpID0gJ1wwJzsK
ICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKHN0cjEsIHN0cjMpLAotICAgICAgICAg
ICAgICAgICAgICAgICAiVmFsdWUgb2Y6IHN0cjNcbiIKLSAgICAgICAgICAgICAgICAgICAgICAg
IiAgQWN0dWFsOiBcIkEgXFwwIGluIHRoZSBtaWRkbGVcIiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAiICBzdHIzXG4gICAgV2hpY2ggaXM6IFwiQSBcXDAgaW4gdGhlIG1pZGRsZVwiIik7CiB9
CiAKICNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKIAogLy8gVGVzdHMgdXNpbmcgOjpzdGQ6Ondz
dHJpbmcgdmFsdWVzIGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4KIFRFU1QoRXFBc3NlcnRpb25UZXN0
LCBTdGRXaWRlU3RyaW5nKSB7Ci0gIC8vIENvbXBhcmVzIGFuIHN0ZDo6d3N0cmluZyB0byBhIGNv
bnN0IHdjaGFyX3QqIHRoYXQgaGFzIGlkZW50aWNhbAotICAvLyBjb250ZW50LgotICBFWFBFQ1Rf
RVEoOjpzdGQ6OndzdHJpbmcoTCJUZXN0XHg4MTE5IiksIEwiVGVzdFx4ODExOSIpOwotCiAgIC8v
IENvbXBhcmVzIHR3byBpZGVudGljYWwgc3RkOjp3c3RyaW5ncy4KICAgY29uc3QgOjpzdGQ6Ondz
dHJpbmcgd3N0cjEoTCJBICogaW4gdGhlIG1pZGRsZSIpOwogICBjb25zdCA6OnN0ZDo6d3N0cmlu
ZyB3c3RyMih3c3RyMSk7CiAgIEFTU0VSVF9FUSh3c3RyMSwgd3N0cjIpOwogCisgIC8vIENvbXBh
cmVzIGFuIHN0ZDo6d3N0cmluZyB0byBhIGNvbnN0IHdjaGFyX3QqIHRoYXQgaGFzIGlkZW50aWNh
bAorICAvLyBjb250ZW50LgorICBjb25zdCB3Y2hhcl90IGtUZXN0WDgxMTlbXSA9IHsgJ1QnLCAn
ZScsICdzJywgJ3QnLCAweDgxMTksICdcMCcgfTsKKyAgRVhQRUNUX0VRKDo6c3RkOjp3c3RyaW5n
KGtUZXN0WDgxMTkpLCBrVGVzdFg4MTE5KTsKKwogICAvLyBDb21wYXJlcyBhbiBzdGQ6OndzdHJp
bmcgdG8gYSBjb25zdCB3Y2hhcl90KiB0aGF0IGhhcyBkaWZmZXJlbnQKICAgLy8gY29udGVudC4K
KyAgY29uc3Qgd2NoYXJfdCBrVGVzdFg4MTIwW10gPSB7ICdUJywgJ2UnLCAncycsICd0JywgMHg4
MTIwLCAnXDAnIH07CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAg
IEVYUEVDVF9FUSg6OnN0ZDo6d3N0cmluZyhMIlRlc3RceDgxMTkiKSwgTCJUZXN0XHg4MTIwIik7
Ci0gIH0sICJMXCJUZXN0XFx4ODEyMFwiIik7CisgICAgRVhQRUNUX0VRKDo6c3RkOjp3c3RyaW5n
KGtUZXN0WDgxMTkpLCBrVGVzdFg4MTIwKTsKKyAgfSwgImtUZXN0WDgxMjAiKTsKIAogICAvLyBD
b21wYXJlcyB0d28gc3RkOjp3c3RyaW5ncyB0aGF0IGhhdmUgZGlmZmVyZW50IGNvbnRlbnRzLCBv
bmUgb2YKICAgLy8gd2hpY2ggaGF2aW5nIGEgTlVMIGNoYXJhY3RlciBpbiB0aGUgbWlkZGxlLgpA
QCAtNDU0NiwxOCArNDg2NiwyMCBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgR2xvYmFsU3RyaW5n
KSB7CiAKIC8vIFRlc3RzIHVzaW5nIDo6d3N0cmluZyB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9
X0VRLgogVEVTVChFcUFzc2VydGlvblRlc3QsIEdsb2JhbFdpZGVTdHJpbmcpIHsKLSAgLy8gQ29t
cGFyZXMgYSBjb25zdCB3Y2hhcl90KiB0byBhIDo6d3N0cmluZyB0aGF0IGhhcyBpZGVudGljYWwg
Y29udGVudC4KLSAgQVNTRVJUX0VRKEwiVGVzdFx4ODExOSIsIDo6d3N0cmluZyhMIlRlc3RceDgx
MTkiKSk7Ci0KICAgLy8gQ29tcGFyZXMgdHdvIGlkZW50aWNhbCA6OndzdHJpbmdzLgogICBzdGF0
aWMgY29uc3QgOjp3c3RyaW5nIHdzdHIxKEwiQSAqIGluIHRoZSBtaWRkbGUiKTsKICAgc3RhdGlj
IGNvbnN0IDo6d3N0cmluZyB3c3RyMih3c3RyMSk7CiAgIEVYUEVDVF9FUSh3c3RyMSwgd3N0cjIp
OwogCisgIC8vIENvbXBhcmVzIGEgY29uc3Qgd2NoYXJfdCogdG8gYSA6OndzdHJpbmcgdGhhdCBo
YXMgaWRlbnRpY2FsIGNvbnRlbnQuCisgIGNvbnN0IHdjaGFyX3Qga1Rlc3RYODExOVtdID0geyAn
VCcsICdlJywgJ3MnLCAndCcsIDB4ODExOSwgJ1wwJyB9OworICBBU1NFUlRfRVEoa1Rlc3RYODEx
OSwgOjp3c3RyaW5nKGtUZXN0WDgxMTkpKTsKKwogICAvLyBDb21wYXJlcyBhIGNvbnN0IHdjaGFy
X3QqIHRvIGEgOjp3c3RyaW5nIHRoYXQgaGFzIGRpZmZlcmVudAogICAvLyBjb250ZW50LgorICBj
b25zdCB3Y2hhcl90IGtUZXN0WDgxMjBbXSA9IHsgJ1QnLCAnZScsICdzJywgJ3QnLCAweDgxMjAs
ICdcMCcgfTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQ
RUNUX0VRKEwiVGVzdFx4ODEyMCIsIDo6d3N0cmluZyhMIlRlc3RceDgxMTkiKSk7CisgICAgRVhQ
RUNUX0VRKGtUZXN0WDgxMjAsIDo6d3N0cmluZyhrVGVzdFg4MTE5KSk7CiAgIH0sICJUZXN0XFx4
ODExOSIpOwogCiAgIC8vIENvbXBhcmVzIGEgd2NoYXJfdCogdG8gYSA6OndzdHJpbmcgdGhhdCBo
YXMgZGlmZmVyZW50IGNvbnRlbnQuCkBAIC00NTkwLDkgKzQ5MTIsOSBAQCBURVNUKEVxQXNzZXJ0
aW9uVGVzdCwgQ2hhclBvaW50ZXIpIHsKICAgQVNTRVJUX0VRKHAxLCBwMSk7CiAKICAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHAwLCBwMiksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICJWYWx1ZSBvZjogcDIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgcDJc
biAgICBXaGljaCBpczoiKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHAx
LCBwMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJwMiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICBwMlxuICAgIFdoaWNoIGlzOiIpOwogICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RShBU1NFUlRfRVEocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oMHgxMjM0KSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KDB4QUJDMCkpLAog
ICAgICAgICAgICAgICAgICAgICAgICAiQUJDMCIpOwpAQCAtNDYxMiw5ICs0OTM0LDkgQEAgVEVT
VChFcUFzc2VydGlvblRlc3QsIFdpZGVDaGFyUG9pbnRlcikgewogICBFWFBFQ1RfRVEocDAsIHAw
KTsKIAogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEocDAsIHAyKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBwMiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICBwMlxuICAgIFdoaWNoIGlzOiIpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShFWFBFQ1RfRVEocDEsIHAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInAyIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICIgIHAyXG4gICAgV2hpY2ggaXM6Iik7CiAgIHZvaWQq
IHB2MyA9ICh2b2lkKikweDEyMzQ7ICAvLyBOT0xJTlQKICAgdm9pZCogcHY0ID0gKHZvaWQqKTB4
QUJDMDsgIC8vIE5PTElOVAogICBjb25zdCB3Y2hhcl90KiBwMyA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgd2NoYXJfdCo+KHB2Myk7CkBAIC00NjMyLDYgKzQ5NTQsNjggQEAgVEVTVChFcUFzc2Vy
dGlvblRlc3QsIE90aGVyUG9pbnRlcikgewogICAgICAgICAgICAgICAgICAgICAgICAiMHgxMjM0
Iik7CiB9CiAKKy8vIEEgY2xhc3MgdGhhdCBzdXBwb3J0cyBiaW5hcnkgY29tcGFyaXNvbiBvcGVy
YXRvcnMgYnV0IG5vdCBzdHJlYW1pbmcuCitjbGFzcyBVbnByaW50YWJsZUNoYXIgeworIHB1Ymxp
YzoKKyAgZXhwbGljaXQgVW5wcmludGFibGVDaGFyKGNoYXIgY2gpIDogY2hhcl8oY2gpIHt9CisK
KyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBjb25zdCB7Cisg
ICAgcmV0dXJuIGNoYXJfID09IHJocy5jaGFyXzsKKyAgfQorICBib29sIG9wZXJhdG9yIT0oY29u
c3QgVW5wcmludGFibGVDaGFyJiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gY2hhcl8gIT0gcmhz
LmNoYXJfOworICB9CisgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhz
KSBjb25zdCB7CisgICAgcmV0dXJuIGNoYXJfIDwgcmhzLmNoYXJfOworICB9CisgIGJvb2wgb3Bl
cmF0b3I8PShjb25zdCBVbnByaW50YWJsZUNoYXImIHJocykgY29uc3QgeworICAgIHJldHVybiBj
aGFyXyA8PSByaHMuY2hhcl87CisgIH0KKyAgYm9vbCBvcGVyYXRvcj4oY29uc3QgVW5wcmludGFi
bGVDaGFyJiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gY2hhcl8gPiByaHMuY2hhcl87CisgIH0K
KyAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBjb25zdCB7Cisg
ICAgcmV0dXJuIGNoYXJfID49IHJocy5jaGFyXzsKKyAgfQorCisgcHJpdmF0ZToKKyAgY2hhciBj
aGFyXzsKK307CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0VRKCkgYW5kIGZyaWVuZHMgZG9uJ3Qg
cmVxdWlyZSB0aGUgYXJndW1lbnRzIHRvCisvLyBiZSBwcmludGFibGUuCitURVNUKENvbXBhcmlz
b25Bc3NlcnRpb25UZXN0LCBBY2NlcHRzVW5wcmludGFibGVBcmdzKSB7CisgIGNvbnN0IFVucHJp
bnRhYmxlQ2hhciB4KCd4JyksIHkoJ3knKTsKKyAgQVNTRVJUX0VRKHgsIHgpOworICBFWFBFQ1Rf
TkUoeCwgeSk7CisgIEFTU0VSVF9MVCh4LCB5KTsKKyAgRVhQRUNUX0xFKHgsIHkpOworICBBU1NF
UlRfR1QoeSwgeCk7CisgIEVYUEVDVF9HRSh4LCB4KTsKKworICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShFWFBFQ1RfRVEoeCwgeSksICIxLWJ5dGUgb2JqZWN0IDw3OD4iKTsKKyAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHgsIHkpLCAiMS1ieXRlIG9iamVjdCA8Nzk+Iik7Cisg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9MVCh5LCB5KSwgIjEtYnl0ZSBvYmplY3Qg
PDc5PiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR1QoeCwgeSksICIxLWJ5
dGUgb2JqZWN0IDw3OD4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dUKHgs
IHkpLCAiMS1ieXRlIG9iamVjdCA8Nzk+Iik7CisKKyAgLy8gQ29kZSB0ZXN0ZWQgYnkgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUgY2Fubm90IHJlZmVyZW5jZSBsb2NhbAorICAvLyB2YXJpYWJsZXMsIHNv
IHdlIGhhdmUgdG8gd3JpdGUgVW5wcmludGFibGVDaGFyKCd4JykgaW5zdGVhZCBvZiB4LgorI2lm
bmRlZiBfX0JPUkxBTkRDX18KKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4KKyAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoQVNTRVJUX05FKFVucHJpbnRhYmxlQ2hhcigneCcpLCBVbnByaW50YWJsZUNo
YXIoJ3gnKSksCisgICAgICAgICAgICAgICAgICAgICAgICIxLWJ5dGUgb2JqZWN0IDw3OD4iKTsK
KyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0xFKFVucHJpbnRhYmxlQ2hhcigneScpLCBV
bnByaW50YWJsZUNoYXIoJ3gnKSksCisgICAgICAgICAgICAgICAgICAgICAgICIxLWJ5dGUgb2Jq
ZWN0IDw3OD4iKTsKKyNlbmRpZgorICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfTEUoVW5w
cmludGFibGVDaGFyKCd5JyksIFVucHJpbnRhYmxlQ2hhcigneCcpKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIjEtYnl0ZSBvYmplY3QgPDc5PiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShB
U1NFUlRfR0UoVW5wcmludGFibGVDaGFyKCd4JyksIFVucHJpbnRhYmxlQ2hhcigneScpKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3QgPDc4PiIpOworICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShBU1NFUlRfR0UoVW5wcmludGFibGVDaGFyKCd4JyksIFVucHJpbnRhYmxlQ2hh
cigneScpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3QgPDc5PiIpOwor
fQorCiAvLyBUZXN0cyB0aGUgRlJJRU5EX1RFU1QgbWFjcm8uCiAKIC8vIFRoaXMgY2xhc3MgaGFz
IGEgcHJpdmF0ZSBtZW1iZXIgd2Ugd2FudCB0byB0ZXN0LiAgV2Ugd2lsbCB0ZXN0IGl0CkBAIC00
NzQ5LDcgKzUxMzMsNyBAQCBURVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIENvbnN0cnVjdGlvbldv
cmtzKSB7CiAgIEVYUEVDVF9TVFJFUSgiZ2hpIiwgcjUubWVzc2FnZSgpKTsKIH0KIAotLy8gVGVz
dHMgdGhhdCB0aGUgbmVnYXRpb24gZmlwcyB0aGUgcHJlZGljYXRlIHJlc3VsdCBidXQga2VlcHMg
dGhlIG1lc3NhZ2UuCisvLyBUZXN0cyB0aGF0IHRoZSBuZWdhdGlvbiBmbGlwcyB0aGUgcHJlZGlj
YXRlIHJlc3VsdCBidXQga2VlcHMgdGhlIG1lc3NhZ2UuCiBURVNUKEFzc2VydGlvblJlc3VsdFRl
c3QsIE5lZ2F0aW9uV29ya3MpIHsKICAgQXNzZXJ0aW9uUmVzdWx0IHIxID0gQXNzZXJ0aW9uU3Vj
Y2VzcygpIDw8ICJhYmMiOwogICBFWFBFQ1RfRkFMU0UoIXIxKTsKQEAgLTQ3NjYsNiArNTE1MCwz
NyBAQCBURVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIFN0cmVhbWluZ1dvcmtzKSB7CiAgIEVYUEVD
VF9TVFJFUSgiYWJjZDB0cnVlIiwgci5tZXNzYWdlKCkpOwogfQogCitURVNUKEFzc2VydGlvblJl
c3VsdFRlc3QsIENhblN0cmVhbU9zdHJlYW1NYW5pcHVsYXRvcnMpIHsKKyAgQXNzZXJ0aW9uUmVz
dWx0IHIgPSBBc3NlcnRpb25TdWNjZXNzKCk7CisgIHIgPDwgIkRhdGEiIDw8IHN0ZDo6ZW5kbCA8
PCBzdGQ6OmZsdXNoIDw8IHN0ZDo6ZW5kcyA8PCAiV2lsbCBiZSB2aXNpYmxlIjsKKyAgRVhQRUNU
X1NUUkVRKCJEYXRhXG5cXDBXaWxsIGJlIHZpc2libGUiLCByLm1lc3NhZ2UoKSk7Cit9CisKKy8v
IFRoZSBuZXh0IHRlc3QgdXNlcyBleHBsaWNpdCBjb252ZXJzaW9uIG9wZXJhdG9ycyAtLSBhIEMr
KzExIGZlYXR1cmUuCisjaWYgR1RFU1RfTEFOR19DWFgxMQorCitURVNUKEFzc2VydGlvblJlc3Vs
dFRlc3QsIENvbnN0cnVjdGlibGVGcm9tQ29udGV4dHVhbGx5Q29udmVydGlibGVUb0Jvb2wpIHsK
KyAgc3RydWN0IEV4cGxpY2l0bHlDb252ZXJ0aWJsZVRvQm9vbCB7CisgICAgZXhwbGljaXQgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlOyB9CisgICAgYm9vbCB2YWx1ZTsKKyAg
fTsKKyAgRXhwbGljaXRseUNvbnZlcnRpYmxlVG9Cb29sIHYxID0ge2ZhbHNlfTsKKyAgRXhwbGlj
aXRseUNvbnZlcnRpYmxlVG9Cb29sIHYyID0ge3RydWV9OworICBFWFBFQ1RfRkFMU0UodjEpOwor
ICBFWFBFQ1RfVFJVRSh2Mik7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfTEFOR19DWFgxMQorCitz
dHJ1Y3QgQ29udmVydGlibGVUb0Fzc2VydGlvblJlc3VsdCB7CisgIG9wZXJhdG9yIEFzc2VydGlv
blJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIEFzc2VydGlvblJlc3VsdCh0cnVlKTsgfQorfTsKKwor
VEVTVChBc3NlcnRpb25SZXN1bHRUZXN0LCBDb25zdHJ1Y3RpYmxlRnJvbUltcGxpY2l0bHlDb252
ZXJ0aWJsZSkgeworICBDb252ZXJ0aWJsZVRvQXNzZXJ0aW9uUmVzdWx0IG9iajsKKyAgRVhQRUNU
X1RSVUUob2JqKTsKK30KKwogLy8gVGVzdHMgc3RyZWFtaW5nIGEgdXNlciB0eXBlIHdob3NlIGRl
ZmluaXRpb24gYW5kIG9wZXJhdG9yIDw8IGFyZQogLy8gYm90aCBpbiB0aGUgZ2xvYmFsIG5hbWVz
cGFjZS4KIGNsYXNzIEJhc2UgewpAQCAtNDk1MCw2ICs1MzY1LDU5IEBAIFRFU1RfRihUZXN0SW5m
b1Rlc3QsIHJlc3VsdCkgewogICBBU1NFUlRfRVEoMCwgR2V0VGVzdFJlc3VsdCh0ZXN0X2luZm8p
LT50b3RhbF9wYXJ0X2NvdW50KCkpOwogfQogCisjZGVmaW5lIFZFUklGWV9DT0RFX0xPQ0FUSU9O
IFwKKyAgY29uc3QgaW50IGV4cGVjdGVkX2xpbmUgPSBfX0xJTkVfXyAtIDE7IFwKKyAgY29uc3Qg
VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9IEdldFVuaXRUZXN0SW1wbCgpLT5jdXJyZW50X3Rl
c3RfaW5mbygpOyBcCisgIEFTU0VSVF9UUlVFKHRlc3RfaW5mbyk7IFwKKyAgRVhQRUNUX1NUUkVR
KF9fRklMRV9fLCB0ZXN0X2luZm8tPmZpbGUoKSk7IFwKKyAgRVhQRUNUX0VRKGV4cGVjdGVkX2xp
bmUsIHRlc3RfaW5mby0+bGluZSgpKQorCitURVNUKENvZGVMb2NhdGlvbkZvclRFU1QsIFZlcmlm
eSkgeworICBWRVJJRllfQ09ERV9MT0NBVElPTjsKK30KKworY2xhc3MgQ29kZUxvY2F0aW9uRm9y
VEVTVEYgOiBwdWJsaWMgVGVzdCB7Cit9OworCitURVNUX0YoQ29kZUxvY2F0aW9uRm9yVEVTVEYs
IFZlcmlmeSkgeworICBWRVJJRllfQ09ERV9MT0NBVElPTjsKK30KKworY2xhc3MgQ29kZUxvY2F0
aW9uRm9yVEVTVFAgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsKK307CisKK1RFU1RfUChD
b2RlTG9jYXRpb25Gb3JURVNUUCwgVmVyaWZ5KSB7CisgIFZFUklGWV9DT0RFX0xPQ0FUSU9OOwor
fQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUCgsIENvZGVMb2NhdGlvbkZvclRFU1RQLCBWYWx1
ZXMoMCkpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIENvZGVMb2NhdGlvbkZvclRZ
UEVEVEVTVCA6IHB1YmxpYyBUZXN0IHsKK307CisKK1RZUEVEX1RFU1RfQ0FTRShDb2RlTG9jYXRp
b25Gb3JUWVBFRFRFU1QsIGludCk7CisKK1RZUEVEX1RFU1QoQ29kZUxvY2F0aW9uRm9yVFlQRURU
RVNULCBWZXJpZnkpIHsKKyAgVkVSSUZZX0NPREVfTE9DQVRJT047Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorY2xhc3MgQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCA6IHB1YmxpYyBUZXN0
IHsKK307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKENvZGVMb2NhdGlvbkZvclRZUEVEVEVTVFApOwor
CitUWVBFRF9URVNUX1AoQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCwgVmVyaWZ5KSB7CisgIFZF
UklGWV9DT0RFX0xPQ0FUSU9OOworfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChDb2Rl
TG9jYXRpb25Gb3JUWVBFRFRFU1RQLCBWZXJpZnkpOworCitJTlNUQU5USUFURV9UWVBFRF9URVNU
X0NBU0VfUChNeSwgQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCwgaW50KTsKKworI3VuZGVmIFZF
UklGWV9DT0RFX0xPQ0FUSU9OCisKIC8vIFRlc3RzIHNldHRpbmcgdXAgYW5kIHRlYXJpbmcgZG93
biBhIHRlc3QgY2FzZS4KIAogY2xhc3MgU2V0VXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgVGVzdCB7
CkBAIC01MDEzLDcgKzU0ODEsOCBAQCBURVNUX0YoU2V0VXBUZXN0Q2FzZVRlc3QsIFRlc3QyKSB7
CiAgIEVYUEVDVF9TVFJFUSgiMTIzIiwgc2hhcmVkX3Jlc291cmNlXyk7CiB9CiAKLS8vIFRoZSBJ
bml0R29vZ2xlVGVzdFRlc3QgdGVzdCBjYXNlIHRlc3RzIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0
KCkuCisKKy8vIFRoZSBQYXJzZUZsYWdzVGVzdCB0ZXN0IGNhc2UgdGVzdHMgUGFyc2VHb29nbGVU
ZXN0RmxhZ3NPbmx5LgogCiAvLyBUaGUgRmxhZ3Mgc3RydWN0IHN0b3JlcyBhIGNvcHkgb2YgYWxs
IEdvb2dsZSBUZXN0IGZsYWdzLgogc3RydWN0IEZsYWdzIHsKQEAgLTUwMzAsNiArNTQ5OSw3IEBA
IHN0cnVjdCBGbGFncyB7CiAgICAgICAgICAgICByZXBlYXQoMSksCiAgICAgICAgICAgICBzaHVm
ZmxlKGZhbHNlKSwKICAgICAgICAgICAgIHN0YWNrX3RyYWNlX2RlcHRoKGtNYXhTdGFja1RyYWNl
RGVwdGgpLAorICAgICAgICAgICAgc3RyZWFtX3Jlc3VsdF90bygiIiksCiAgICAgICAgICAgICB0
aHJvd19vbl9mYWlsdXJlKGZhbHNlKSB7fQogCiAgIC8vIEZhY3RvcnkgbWV0aG9kcy4KQEAgLTUw
OTgsOCArNTU2OCw4IEBAIHN0cnVjdCBGbGFncyB7CiAgICAgcmV0dXJuIGZsYWdzOwogICB9CiAK
LSAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3RfcmFuZG9tX3NlZWQg
ZmxhZyBoYXMKLSAgLy8gdGhlIGdpdmVuIHZhbHVlLgorICAvLyBDcmVhdGVzIGEgRmxhZ3Mgc3Ry
dWN0IHdoZXJlIHRoZSBndGVzdF9yYW5kb21fc2VlZCBmbGFnIGhhcyB0aGUgZ2l2ZW4KKyAgLy8g
dmFsdWUuCiAgIHN0YXRpYyBGbGFncyBSYW5kb21TZWVkKEludDMyIHJhbmRvbV9zZWVkKSB7CiAg
ICAgRmxhZ3MgZmxhZ3M7CiAgICAgZmxhZ3MucmFuZG9tX3NlZWQgPSByYW5kb21fc2VlZDsKQEAg
LTUxMTQsOCArNTU4NCw4IEBAIHN0cnVjdCBGbGFncyB7CiAgICAgcmV0dXJuIGZsYWdzOwogICB9
CiAKLSAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3Rfc2h1ZmZsZSBm
bGFnIGhhcwotICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCisgIC8vIENyZWF0ZXMgYSBGbGFncyBzdHJ1
Y3Qgd2hlcmUgdGhlIGd0ZXN0X3NodWZmbGUgZmxhZyBoYXMgdGhlIGdpdmVuCisgIC8vIHZhbHVl
LgogICBzdGF0aWMgRmxhZ3MgU2h1ZmZsZShib29sIHNodWZmbGUpIHsKICAgICBGbGFncyBmbGFn
czsKICAgICBmbGFncy5zaHVmZmxlID0gc2h1ZmZsZTsKQEAgLTUxMzAsNiArNTYwMCwxNCBAQCBz
dHJ1Y3QgRmxhZ3MgewogICAgIHJldHVybiBmbGFnczsKICAgfQogCisgIC8vIENyZWF0ZXMgYSBG
bGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykgZmxhZyBo
YXMKKyAgLy8gdGhlIGdpdmVuIHZhbHVlLgorICBzdGF0aWMgRmxhZ3MgU3RyZWFtUmVzdWx0VG8o
Y29uc3QgY2hhciogc3RyZWFtX3Jlc3VsdF90bykgeworICAgIEZsYWdzIGZsYWdzOworICAgIGZs
YWdzLnN0cmVhbV9yZXN1bHRfdG8gPSBzdHJlYW1fcmVzdWx0X3RvOworICAgIHJldHVybiBmbGFn
czsKKyAgfQorCiAgIC8vIENyZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIGd0ZXN0X3Ro
cm93X29uX2ZhaWx1cmUgZmxhZyBoYXMKICAgLy8gdGhlIGdpdmVuIHZhbHVlLgogICBzdGF0aWMg
RmxhZ3MgVGhyb3dPbkZhaWx1cmUoYm9vbCB0aHJvd19vbl9mYWlsdXJlKSB7CkBAIC01MTUxLDEx
ICs1NjI5LDEyIEBAIHN0cnVjdCBGbGFncyB7CiAgIEludDMyIHJlcGVhdDsKICAgYm9vbCBzaHVm
ZmxlOwogICBJbnQzMiBzdGFja190cmFjZV9kZXB0aDsKKyAgY29uc3QgY2hhciogc3RyZWFtX3Jl
c3VsdF90bzsKICAgYm9vbCB0aHJvd19vbl9mYWlsdXJlOwogfTsKIAotLy8gRml4dHVyZSBmb3Ig
dGVzdGluZyBJbml0R29vZ2xlVGVzdCgpLgotY2xhc3MgSW5pdEdvb2dsZVRlc3RUZXN0IDogcHVi
bGljIFRlc3QgeworLy8gRml4dHVyZSBmb3IgdGVzdGluZyBQYXJzZUdvb2dsZVRlc3RGbGFnc09u
bHkoKS4KK2NsYXNzIFBhcnNlRmxhZ3NUZXN0IDogcHVibGljIFRlc3QgewogIHByb3RlY3RlZDoK
ICAgLy8gQ2xlYXJzIHRoZSBmbGFncyBiZWZvcmUgZWFjaCB0ZXN0LgogICB2aXJ0dWFsIHZvaWQg
U2V0VXAoKSB7CkBAIC01MTcxLDYgKzU2NTAsNyBAQCBjbGFzcyBJbml0R29vZ2xlVGVzdFRlc3Qg
OiBwdWJsaWMgVGVzdCB7CiAgICAgR1RFU1RfRkxBRyhyZXBlYXQpID0gMTsKICAgICBHVEVTVF9G
TEFHKHNodWZmbGUpID0gZmFsc2U7CiAgICAgR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkg
PSBrTWF4U3RhY2tUcmFjZURlcHRoOworICAgIEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykg
PSAiIjsKICAgICBHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gZmFsc2U7CiAgIH0KIApA
QCAtNTE5OSw4ICs1Njc5LDEwIEBAIGNsYXNzIEluaXRHb29nbGVUZXN0VGVzdCA6IHB1YmxpYyBU
ZXN0IHsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQucmFuZG9tX3NlZWQsIEdURVNUX0ZMQUcocmFu
ZG9tX3NlZWQpKTsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQucmVwZWF0LCBHVEVTVF9GTEFHKHJl
cGVhdCkpOwogICAgIEVYUEVDVF9FUShleHBlY3RlZC5zaHVmZmxlLCBHVEVTVF9GTEFHKHNodWZm
bGUpKTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQudGhyb3dfb25fZmFpbHVyZSwgR1RFU1RfRkxB
Ryh0aHJvd19vbl9mYWlsdXJlKSk7CiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkLnN0YWNrX3RyYWNl
X2RlcHRoLCBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSk7CisgICAgRVhQRUNUX1NUUkVR
KGV4cGVjdGVkLnN0cmVhbV9yZXN1bHRfdG8sCisgICAgICAgICAgICAgICAgIEdURVNUX0ZMQUco
c3RyZWFtX3Jlc3VsdF90bykuY19zdHIoKSk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkLnRocm93
X29uX2ZhaWx1cmUsIEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkpOwogICB9CiAKICAgLy8g
UGFyc2VzIGEgY29tbWFuZCBsaW5lIChzcGVjaWZpZWQgYnkgYXJnYzEgYW5kIGFyZ3YxKSwgdGhl
bgpAQCAtNTIxMywxNiArNTY5NSwxNiBAQCBjbGFzcyBJbml0R29vZ2xlVGVzdFRlc3QgOiBwdWJs
aWMgVGVzdCB7CiAgICAgY29uc3QgYm9vbCBzYXZlZF9oZWxwX2ZsYWcgPSA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpnX2hlbHBfZmxhZzsKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpnX2hlbHBfZmxh
ZyA9IGZhbHNlOwogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyMgaWYgR1RF
U1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgogICAgIENhcHR1cmVTdGRvdXQoKTsKLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyMgZW5kaWYKIAogICAgIC8vIFBhcnNl
cyB0aGUgY29tbWFuZCBsaW5lLgogICAgIGludGVybmFsOjpQYXJzZUdvb2dsZVRlc3RGbGFnc09u
bHkoJmFyZ2MxLCBjb25zdF9jYXN0PENoYXJUeXBlKio+KGFyZ3YxKSk7CiAKLSNpZiBHVEVTVF9I
QVNfU1RSRUFNX1JFRElSRUNUSU9OXwotICAgIGNvbnN0IFN0cmluZyBjYXB0dXJlZF9zdGRvdXQg
PSBHZXRDYXB0dXJlZFN0ZG91dCgpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElS
RUNUSU9OXworIyBpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCisgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgY2FwdHVyZWRfc3Rkb3V0ID0gR2V0Q2FwdHVyZWRTdGRvdXQoKTsKKyMgZW5kaWYK
IAogICAgIC8vIFZlcmlmaWVzIHRoZSBmbGFnIHZhbHVlcy4KICAgICBDaGVja0ZsYWdzKGV4cGVj
dGVkKTsKQEAgLTUyMzUsNyArNTcxNyw3IEBAIGNsYXNzIEluaXRHb29nbGVUZXN0VGVzdCA6IHB1
YmxpYyBUZXN0IHsKICAgICAvLyBoZWxwIG1lc3NhZ2UgZm9yIHRoZSBmbGFncyBpdCByZWNvZ25p
emVzLgogICAgIEVYUEVDVF9FUShzaG91bGRfcHJpbnRfaGVscCwgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Z19oZWxwX2ZsYWcpOwogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyMg
aWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgogICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4
cGVjdGVkX2hlbHBfZnJhZ21lbnQgPQogICAgICAgICAiVGhpcyBwcm9ncmFtIGNvbnRhaW5zIHRl
c3RzIHdyaXR0ZW4gdXNpbmciOwogICAgIGlmIChzaG91bGRfcHJpbnRfaGVscCkgewpAQCAtNTI0
NCwyMSArNTcyNiwyMiBAQCBjbGFzcyBJbml0R29vZ2xlVGVzdFRlc3QgOiBwdWJsaWMgVGVzdCB7
CiAgICAgICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzTm90U3Vic3RyaW5nLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBleHBlY3RlZF9oZWxwX2ZyYWdtZW50LCBjYXB0dXJlZF9zdGRvdXQpOwog
ICAgIH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyMgZW5kaWYg
IC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KIAogICAgIDo6dGVzdGluZzo6aW50ZXJu
YWw6OmdfaGVscF9mbGFnID0gc2F2ZWRfaGVscF9mbGFnOwogICB9CiAKICAgLy8gVGhpcyBtYWNy
byB3cmFwcyBUZXN0UGFyc2luZ0ZsYWdzIHMudC4gdGhlIHVzZXIgZG9lc24ndCBuZWVkCiAgIC8v
IHRvIHNwZWNpZnkgdGhlIGFycmF5IHNpemVzLgotI2RlZmluZSBHVEVTVF9URVNUX1BBUlNJTkdf
RkxBR1NfKGFyZ3YxLCBhcmd2MiwgZXhwZWN0ZWQsIHNob3VsZF9wcmludF9oZWxwKSBcCisKKyMg
ZGVmaW5lIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndjEsIGFyZ3YyLCBleHBlY3RlZCwg
c2hvdWxkX3ByaW50X2hlbHApIFwKICAgVGVzdFBhcnNpbmdGbGFncyhzaXplb2YoYXJndjEpL3Np
emVvZigqYXJndjEpIC0gMSwgYXJndjEsIFwKICAgICAgICAgICAgICAgICAgICBzaXplb2YoYXJn
djIpL3NpemVvZigqYXJndjIpIC0gMSwgYXJndjIsIFwKICAgICAgICAgICAgICAgICAgICBleHBl
Y3RlZCwgc2hvdWxkX3ByaW50X2hlbHApCiB9OwogCiAvLyBUZXN0cyBwYXJzaW5nIGFuIGVtcHR5
IGNvbW1hbmQgbGluZS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEVtcHR5KSB7CitURVNU
X0YoUGFyc2VGbGFnc1Rlc3QsIEVtcHR5KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAg
ICBOVUxMCiAgIH07CkBAIC01MjcxLDcgKzU3NTQsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RU
ZXN0LCBFbXB0eSkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIGEgY29tbWFuZCBsaW5lIHRoYXQg
aGFzIG5vIGZsYWcuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBOb0ZsYWcpIHsKK1RFU1Rf
RihQYXJzZUZsYWdzVGVzdCwgTm9GbGFnKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAg
ICAiZm9vLmV4ZSIsCiAgICAgTlVMTApAQCAtNTI4Niw3ICs1NzY5LDcgQEAgVEVTVF9GKEluaXRH
b29nbGVUZXN0VGVzdCwgTm9GbGFnKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgYSBiYWQgLS1n
dGVzdF9maWx0ZXIgZmxhZy4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEZpbHRlckJhZCkg
eworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBGaWx0ZXJCYWQpIHsKICAgY29uc3QgY2hhciogYXJn
dltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9maWx0ZXIiLApAQCAtNTMwMyw3
ICs1Nzg2LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRmlsdGVyQmFkKSB7CiB9CiAK
IC8vIFRlc3RzIHBhcnNpbmcgYW4gZW1wdHkgLS1ndGVzdF9maWx0ZXIgZmxhZy4KLVRFU1RfRihJ
bml0R29vZ2xlVGVzdFRlc3QsIEZpbHRlckVtcHR5KSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3Qs
IEZpbHRlckVtcHR5KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIs
CiAgICAgIi0tZ3Rlc3RfZmlsdGVyPSIsCkBAIC01MzE5LDcgKzU4MDIsNyBAQCBURVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBGaWx0ZXJFbXB0eSkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIGEg
bm9uLWVtcHR5IC0tZ3Rlc3RfZmlsdGVyIGZsYWcuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0
LCBGaWx0ZXJOb25FbXB0eSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBGaWx0ZXJOb25FbXB0
eSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0
ZXN0X2ZpbHRlcj1hYmMiLApAQCAtNTMzNSw3ICs1ODE4LDcgQEAgVEVTVF9GKEluaXRHb29nbGVU
ZXN0VGVzdCwgRmlsdGVyTm9uRW1wdHkpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0
X2JyZWFrX29uX2ZhaWx1cmUuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFp
bHVyZVdpdGhvdXRWYWx1ZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBCcmVha09uRmFpbHVy
ZVdpdGhvdXRWYWx1ZSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUi
LAogICAgICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUiLApAQCAtNTM1MSw3ICs1ODM0LDcgQEAg
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVXaXRob3V0VmFsdWUpIHsK
IH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9MC4KLVRFU1Rf
RihJbml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlRmFsc2VfMCkgeworVEVTVF9GKFBh
cnNlRmxhZ3NUZXN0LCBCcmVha09uRmFpbHVyZUZhbHNlXzApIHsKICAgY29uc3QgY2hhciogYXJn
dltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9icmVha19vbl9mYWlsdXJlPTAi
LApAQCAtNTM2Nyw3ICs1ODUwLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQnJlYWtP
bkZhaWx1cmVGYWxzZV8wKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9icmVha19v
bl9mYWlsdXJlPWYuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVyZUZh
bHNlX2YpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgQnJlYWtPbkZhaWx1cmVGYWxzZV9mKSB7
CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rf
YnJlYWtfb25fZmFpbHVyZT1mIiwKQEAgLTUzODMsNyArNTg2Niw3IEBAIFRFU1RfRihJbml0R29v
Z2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlRmFsc2VfZikgewogfQogCiAvLyBUZXN0cyBwYXJz
aW5nIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZT1GLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVz
dCwgQnJlYWtPbkZhaWx1cmVGYWxzZV9GKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEJyZWFr
T25GYWlsdXJlRmFsc2VfRikgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5l
eGUiLAogICAgICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9RiIsCkBAIC01NDAwLDcgKzU4ODMs
NyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVyZUZhbHNlX0YpIHsK
IAogLy8gVGVzdHMgcGFyc2luZyBhIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnIHRoYXQg
aGFzIGEgInRydWUiCiAvLyBkZWZpbml0aW9uLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwg
QnJlYWtPbkZhaWx1cmVUcnVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEJyZWFrT25GYWls
dXJlVHJ1ZSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAg
ICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9MSIsCkBAIC01NDE2LDcgKzU4OTksNyBAQCBURVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVyZVRydWUpIHsKIH0KIAogLy8gVGVz
dHMgcGFyc2luZyAtLWd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnMuCi1URVNUX0YoSW5pdEdvb2dsZVRl
c3RUZXN0LCBDYXRjaEV4Y2VwdGlvbnMpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgQ2F0Y2hF
eGNlcHRpb25zKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAg
ICAgIi0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucyIsCkBAIC01NDMyLDcgKzU5MTUsNyBAQCBURVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBDYXRjaEV4Y2VwdGlvbnMpIHsKIH0KIAogLy8gVGVzdHMg
cGFyc2luZyAtLWd0ZXN0X2RlYXRoX3Rlc3RfdXNlX2ZvcmsuCi1URVNUX0YoSW5pdEdvb2dsZVRl
c3RUZXN0LCBEZWF0aFRlc3RVc2VGb3JrKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIERlYXRo
VGVzdFVzZUZvcmspIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwK
ICAgICAiLS1ndGVzdF9kZWF0aF90ZXN0X3VzZV9mb3JrIiwKQEAgLTU0NDksNyArNTkzMiw3IEBA
IFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIERlYXRoVGVzdFVzZUZvcmspIHsKIAogLy8gVGVz
dHMgaGF2aW5nIHRoZSBzYW1lIGZsYWcgdHdpY2Ugd2l0aCBkaWZmZXJlbnQgdmFsdWVzLiAgVGhl
CiAvLyBleHBlY3RlZCBiZWhhdmlvciBpcyB0aGF0IHRoZSBvbmUgY29taW5nIGxhc3QgdGFrZXMg
cHJlY2VkZW5jZS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIER1cGxpY2F0ZWRGbGFncykg
eworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBEdXBsaWNhdGVkRmxhZ3MpIHsKICAgY29uc3QgY2hh
ciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9maWx0ZXI9YSIsCkBA
IC01NDY2LDcgKzU5NDksNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBEdXBsaWNhdGVk
RmxhZ3MpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5nIGFuIHVucmVjb2duaXplZCBmbGFnIG9uIHRo
ZSBjb21tYW5kIGxpbmUuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBVbnJlY29nbml6ZWRG
bGFnKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFVucmVjb2duaXplZEZsYWcpIHsKICAgY29u
c3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9icmVha19v
bl9mYWlsdXJlIiwKQEAgLTU0ODgsNyArNTk3MSw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRl
c3QsIFVucmVjb2duaXplZEZsYWcpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9s
aXN0X3Rlc3RzIGZsYWcKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIExpc3RUZXN0c0ZsYWcp
IHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgTGlzdFRlc3RzRmxhZykgewogICAgIGNvbnN0IGNo
YXIqIGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICItLWd0ZXN0X2xpc3RfdGVz
dHMiLApAQCAtNTUwNCw3ICs1OTg3LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTGlz
dFRlc3RzRmxhZykgewogfQogCiAvLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X2xpc3RfdGVzdHMg
ZmxhZyB3aXRoIGEgInRydWUiIHZhbHVlCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0
VGVzdHNUcnVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIExpc3RUZXN0c1RydWUpIHsKICAg
ICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAiZm9vLmV4ZSIsCiAgICAgICAiLS1ndGVz
dF9saXN0X3Rlc3RzPTEiLApAQCAtNTUyMCw3ICs2MDAzLDcgQEAgVEVTVF9GKEluaXRHb29nbGVU
ZXN0VGVzdCwgTGlzdFRlc3RzVHJ1ZSkgewogfQogCiAvLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0
X2xpc3RfdGVzdHMgZmxhZyB3aXRoIGEgImZhbHNlIiB2YWx1ZQotVEVTVF9GKEluaXRHb29nbGVU
ZXN0VGVzdCwgTGlzdFRlc3RzRmFsc2UpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgTGlzdFRl
c3RzRmFsc2UpIHsKICAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAiZm9vLmV4ZSIs
CiAgICAgICAiLS1ndGVzdF9saXN0X3Rlc3RzPTAiLApAQCAtNTUzNiw3ICs2MDE5LDcgQEAgVEVT
VF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzRmFsc2UpIHsKIH0KIAogLy8gVGVzdHMg
cGFyc2luZyAtLWd0ZXN0X2xpc3RfdGVzdHM9Zi4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3Qs
IExpc3RUZXN0c0ZhbHNlX2YpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgTGlzdFRlc3RzRmFs
c2VfZikgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICIt
LWd0ZXN0X2xpc3RfdGVzdHM9ZiIsCkBAIC01NTUyLDcgKzYwMzUsNyBAQCBURVNUX0YoSW5pdEdv
b2dsZVRlc3RUZXN0LCBMaXN0VGVzdHNGYWxzZV9mKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcg
LS1ndGVzdF9saXN0X3Rlc3RzPUYuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0VGVz
dHNGYWxzZV9GKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIExpc3RUZXN0c0ZhbHNlX0YpIHsK
ICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9s
aXN0X3Rlc3RzPUYiLApAQCAtNTU2OCw3ICs2MDUxLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0
VGVzdCwgTGlzdFRlc3RzRmFsc2VfRikgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3Rf
b3V0cHV0IChpbnZhbGlkKS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91dHB1dEVtcHR5
KSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIE91dHB1dEVtcHR5KSB7CiAgIGNvbnN0IGNoYXIq
IGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfb3V0cHV0IiwKQEAgLTU1
ODUsNyArNjA2OCw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91dHB1dEVtcHR5KSB7
CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9vdXRwdXQ9eG1sCi1URVNUX0YoSW5pdEdv
b2dsZVRlc3RUZXN0LCBPdXRwdXRYbWwpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgT3V0cHV0
WG1sKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0t
Z3Rlc3Rfb3V0cHV0PXhtbCIsCkBAIC01NjAxLDcgKzYwODQsNyBAQCBURVNUX0YoSW5pdEdvb2ds
ZVRlc3RUZXN0LCBPdXRwdXRYbWwpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X291
dHB1dD14bWw6ZmlsZQotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgT3V0cHV0WG1sRmlsZSkg
eworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBPdXRwdXRYbWxGaWxlKSB7CiAgIGNvbnN0IGNoYXIq
IGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfb3V0cHV0PXhtbDpmaWxl
IiwKQEAgLTU2MTcsNyArNjEwMCw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91dHB1
dFhtbEZpbGUpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X291dHB1dD14bWw6ZGly
ZWN0b3J5L3BhdGgvCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBPdXRwdXRYbWxEaXJlY3Rv
cnkpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgT3V0cHV0WG1sRGlyZWN0b3J5KSB7CiAgIGNv
bnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfb3V0cHV0
PXhtbDpkaXJlY3RvcnkvcGF0aC8iLApAQCAtNTYzNCw3ICs2MTE3LDcgQEAgVEVTVF9GKEluaXRH
b29nbGVUZXN0VGVzdCwgT3V0cHV0WG1sRGlyZWN0b3J5KSB7CiB9CiAKIC8vIFRlc3RzIGhhdmlu
ZyBhIC0tZ3Rlc3RfcHJpbnRfdGltZSBmbGFnCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBQ
cmludFRpbWVGbGFnKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFByaW50VGltZUZsYWcpIHsK
ICAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAiZm9vLmV4ZSIsCiAgICAgICAiLS1n
dGVzdF9wcmludF90aW1lIiwKQEAgLTU2NTAsNyArNjEzMyw3IEBAIFRFU1RfRihJbml0R29vZ2xl
VGVzdFRlc3QsIFByaW50VGltZUZsYWcpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5nIGEgLS1ndGVz
dF9wcmludF90aW1lIGZsYWcgd2l0aCBhICJ0cnVlIiB2YWx1ZQotVEVTVF9GKEluaXRHb29nbGVU
ZXN0VGVzdCwgUHJpbnRUaW1lVHJ1ZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBQcmludFRp
bWVUcnVlKSB7CiAgICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICAgImZvby5leGUiLAog
ICAgICAgIi0tZ3Rlc3RfcHJpbnRfdGltZT0xIiwKQEAgLTU2NjYsNyArNjE0OSw3IEBAIFRFU1Rf
RihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZVRydWUpIHsKIH0KIAogLy8gVGVzdHMgaGF2
aW5nIGEgLS1ndGVzdF9wcmludF90aW1lIGZsYWcgd2l0aCBhICJmYWxzZSIgdmFsdWUKLVRFU1Rf
RihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZhbHNlKSB7CitURVNUX0YoUGFyc2VGbGFn
c1Rlc3QsIFByaW50VGltZUZhbHNlKSB7CiAgICAgY29uc3QgY2hhciogYXJndltdID0gewogICAg
ICAgImZvby5leGUiLAogICAgICAgIi0tZ3Rlc3RfcHJpbnRfdGltZT0wIiwKQEAgLTU2ODIsNyAr
NjE2NSw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZhbHNlKSB7CiB9
CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9wcmludF90aW1lPWYuCi1URVNUX0YoSW5pdEdv
b2dsZVRlc3RUZXN0LCBQcmludFRpbWVGYWxzZV9mKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3Qs
IFByaW50VGltZUZhbHNlX2YpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28u
ZXhlIiwKICAgICAiLS1ndGVzdF9wcmludF90aW1lPWYiLApAQCAtNTY5OCw3ICs2MTgxLDcgQEAg
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lRmFsc2VfZikgewogfQogCiAvLyBU
ZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfcHJpbnRfdGltZT1GLgotVEVTVF9GKEluaXRHb29nbGVUZXN0
VGVzdCwgUHJpbnRUaW1lRmFsc2VfRikgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBQcmludFRp
bWVGYWxzZV9GKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAg
ICAgIi0tZ3Rlc3RfcHJpbnRfdGltZT1GIiwKQEAgLTU3MTQsNyArNjE5Nyw3IEBAIFRFU1RfRihJ
bml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZhbHNlX0YpIHsKIH0KIAogLy8gVGVzdHMgcGFy
c2luZyAtLWd0ZXN0X3JhbmRvbV9zZWVkPW51bWJlcgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVz
dCwgUmFuZG9tU2VlZCkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBSYW5kb21TZWVkKSB7CiAg
IGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfcmFu
ZG9tX3NlZWQ9MTAwMCIsCkBAIC01NzMwLDcgKzYyMTMsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRl
c3RUZXN0LCBSYW5kb21TZWVkKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9yZXBl
YXQ9bnVtYmVyCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBSZXBlYXQpIHsKK1RFU1RfRihQ
YXJzZUZsYWdzVGVzdCwgUmVwZWF0KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAi
Zm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfcmVwZWF0PTEwMDAiLApAQCAtNTc0Niw3ICs2MjI5LDcg
QEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUmVwZWF0KSB7CiB9CiAKIC8vIFRlc3RzIGhh
dmluZyBhIC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxhZwotVEVTVF9GKEluaXRH
b29nbGVUZXN0VGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKSB7CitURVNUX0YoUGFyc2VG
bGFnc1Rlc3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzRmxhZykgewogICAgIGNvbnN0IGNoYXIqIGFy
Z3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICItLWd0ZXN0X2Fsc29fcnVuX2Rpc2Fi
bGVkX3Rlc3RzIiwKQEAgLTU3NjMsNyArNjI0Niw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRl
c3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzRmxhZykgewogfQogCiAvLyBUZXN0cyBoYXZpbmcgYSAt
LWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIGZsYWcgd2l0aCBhICJ0cnVlIiB2YWx1ZQot
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNUcnVlKSB7CitU
RVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzVHJ1ZSkgewogICAgIGNv
bnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICItLWd0ZXN0X2Fs
c29fcnVuX2Rpc2FibGVkX3Rlc3RzPTEiLApAQCAtNTc4MCw3ICs2MjYzLDcgQEAgVEVTVF9GKElu
aXRHb29nbGVUZXN0VGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNUcnVlKSB7CiB9CiAKIC8vIFRl
c3RzIGhhdmluZyBhIC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxhZyB3aXRoIGEg
ImZhbHNlIiB2YWx1ZQotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQWxzb1J1bkRpc2FibGVk
VGVzdHNGYWxzZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBBbHNvUnVuRGlzYWJsZWRUZXN0
c0ZhbHNlKSB7CiAgICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICAgImZvby5leGUiLAog
ICAgICAgIi0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHM9MCIsCkBAIC01Nzk3LDcgKzYy
ODAsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBBbHNvUnVuRGlzYWJsZWRUZXN0c0Zh
bHNlKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9zaHVmZmxlLgotVEVTVF9GKElu
aXRHb29nbGVUZXN0VGVzdCwgU2h1ZmZsZVdpdGhvdXRWYWx1ZSkgeworVEVTVF9GKFBhcnNlRmxh
Z3NUZXN0LCBTaHVmZmxlV2l0aG91dFZhbHVlKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsK
ICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfc2h1ZmZsZSIsCkBAIC01ODEzLDcgKzYyOTYs
NyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBTaHVmZmxlV2l0aG91dFZhbHVlKSB7CiB9
CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9zaHVmZmxlPTAuCi1URVNUX0YoSW5pdEdvb2ds
ZVRlc3RUZXN0LCBTaHVmZmxlRmFsc2VfMCkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBTaHVm
ZmxlRmFsc2VfMCkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAog
ICAgICItLWd0ZXN0X3NodWZmbGU9MCIsCkBAIC01ODI4LDkgKzYzMTEsOCBAQCBURVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBTaHVmZmxlRmFsc2VfMCkgewogICBHVEVTVF9URVNUX1BBUlNJTkdf
RkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6U2h1ZmZsZShmYWxzZSksIGZhbHNlKTsKIH0KIAot
Ly8gVGVzdHMgcGFyc2luZyBhIC0tZ3Rlc3Rfc2h1ZmZsZSBmbGFnIHRoYXQgaGFzIGEgInRydWUi
Ci0vLyBkZWZpbml0aW9uLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU2h1ZmZsZVRydWUp
IHsKKy8vIFRlc3RzIHBhcnNpbmcgYSAtLWd0ZXN0X3NodWZmbGUgZmxhZyB0aGF0IGhhcyBhICJ0
cnVlIiBkZWZpbml0aW9uLgorVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBTaHVmZmxlVHJ1ZSkgewog
ICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X3No
dWZmbGU9MSIsCkBAIC01ODQ2LDcgKzYzMjgsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0
LCBTaHVmZmxlVHJ1ZSkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3Rfc3RhY2tfdHJh
Y2VfZGVwdGg9bnVtYmVyLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU3RhY2tUcmFjZURl
cHRoKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFN0YWNrVHJhY2VEZXB0aCkgewogICBjb25z
dCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X3N0YWNrX3Ry
YWNlX2RlcHRoPTUiLApAQCAtNTg2MSw4ICs2MzQzLDI0IEBAIFRFU1RfRihJbml0R29vZ2xlVGVz
dFRlc3QsIFN0YWNrVHJhY2VEZXB0aCkgewogICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFy
Z3YsIGFyZ3YyLCBGbGFnczo6U3RhY2tUcmFjZURlcHRoKDUpLCBmYWxzZSk7CiB9CiAKK1RFU1Rf
RihQYXJzZUZsYWdzVGVzdCwgU3RyZWFtUmVzdWx0VG8pIHsKKyAgY29uc3QgY2hhciogYXJndltd
ID0geworICAgICJmb28uZXhlIiwKKyAgICAiLS1ndGVzdF9zdHJlYW1fcmVzdWx0X3RvPWxvY2Fs
aG9zdDoxMjM0IiwKKyAgICBOVUxMCisgIH07CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9IHsK
KyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAorICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lOR19G
TEFHU18oCisgICAgICBhcmd2LCBhcmd2MiwgRmxhZ3M6OlN0cmVhbVJlc3VsdFRvKCJsb2NhbGhv
c3Q6MTIzNCIpLCBmYWxzZSk7Cit9CisKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF90aHJvd19v
bl9mYWlsdXJlLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgVGhyb3dPbkZhaWx1cmVXaXRo
b3V0VmFsdWUpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgVGhyb3dPbkZhaWx1cmVXaXRob3V0
VmFsdWUpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAi
LS1ndGVzdF90aHJvd19vbl9mYWlsdXJlIiwKQEAgLTU4NzgsNyArNjM3Niw3IEBAIFRFU1RfRihJ
bml0R29vZ2xlVGVzdFRlc3QsIFRocm93T25GYWlsdXJlV2l0aG91dFZhbHVlKSB7CiB9CiAKIC8v
IFRlc3RzIHBhcnNpbmcgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlPTAuCi1URVNUX0YoSW5pdEdv
b2dsZVRlc3RUZXN0LCBUaHJvd09uRmFpbHVyZUZhbHNlXzApIHsKK1RFU1RfRihQYXJzZUZsYWdz
VGVzdCwgVGhyb3dPbkZhaWx1cmVGYWxzZV8wKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsK
ICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZT0wIiwKQEAgLTU4
OTUsNyArNjM5Myw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFRocm93T25GYWlsdXJl
RmFsc2VfMCkgewogCiAvLyBUZXN0cyBwYXJzaW5nIGEgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJl
IGZsYWcgdGhhdCBoYXMgYSAidHJ1ZSIKIC8vIGRlZmluaXRpb24uCi1URVNUX0YoSW5pdEdvb2ds
ZVRlc3RUZXN0LCBUaHJvd09uRmFpbHVyZVRydWUpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwg
VGhyb3dPbkZhaWx1cmVUcnVlKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9v
LmV4ZSIsCiAgICAgIi0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZT0xIiwKQEAgLTU5MTAsOSArNjQw
OCw5IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFRocm93T25GYWlsdXJlVHJ1ZSkgewog
ICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6VGhyb3dPbkZh
aWx1cmUodHJ1ZSksIGZhbHNlKTsKIH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RF
U1RfT1NfV0lORE9XUwogLy8gVGVzdHMgcGFyc2luZyB3aWRlIHN0cmluZ3MuCi1URVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBXaWRlU3RyaW5ncykgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBX
aWRlU3RyaW5ncykgewogICBjb25zdCB3Y2hhcl90KiBhcmd2W10gPSB7CiAgICAgTCJmb28uZXhl
IiwKICAgICBMIi0tZ3Rlc3RfZmlsdGVyPUZvbyoiLApAQCAtNTkzNSw3ICs2NDMzLDEwOCBAQCBU
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBXaWRlU3RyaW5ncykgewogCiAgIEdURVNUX1RFU1Rf
UEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIGV4cGVjdGVkX2ZsYWdzLCBmYWxzZSk7CiB9Ci0j
ZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MK
KworI2lmIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KK2NsYXNzIEZsYWdmaWxlVGVzdCA6
IHB1YmxpYyBQYXJzZUZsYWdzVGVzdCB7CisgcHVibGljOgorICB2aXJ0dWFsIHZvaWQgU2V0VXAo
KSB7CisgICAgUGFyc2VGbGFnc1Rlc3Q6OlNldFVwKCk7CisKKyAgICB0ZXN0ZGF0YV9wYXRoXy5T
ZXQoaW50ZXJuYWw6OkZpbGVQYXRoKAorICAgICAgICB0ZXN0aW5nOjpUZW1wRGlyKCkgKyBpbnRl
cm5hbDo6R2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKworICAgICAgICAiX2Zs
YWdmaWxlX3Rlc3QiKSk7CisgICAgdGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpSbURpcih0ZXN0
ZGF0YV9wYXRoXy5jX3N0cigpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5DcmVh
dGVGb2xkZXIoKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgdGVz
dGluZzo6aW50ZXJuYWw6OnBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKKyAg
ICBQYXJzZUZsYWdzVGVzdDo6VGVhckRvd24oKTsKKyAgfQorCisgIGludGVybmFsOjpGaWxlUGF0
aCBDcmVhdGVGbGFnZmlsZShjb25zdCBjaGFyKiBjb250ZW50cykgeworICAgIGludGVybmFsOjpG
aWxlUGF0aCBmaWxlX3BhdGgoaW50ZXJuYWw6OkZpbGVQYXRoOjpHZW5lcmF0ZVVuaXF1ZUZpbGVO
YW1lKAorICAgICAgICB0ZXN0ZGF0YV9wYXRoXywgaW50ZXJuYWw6OkZpbGVQYXRoKCJ1bmlxdWUi
KSwgInR4dCIpKTsKKyAgICBGSUxFKiBmID0gdGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpGT3Bl
bihmaWxlX3BhdGguY19zdHIoKSwgInciKTsKKyAgICBmcHJpbnRmKGYsICIlcyIsIGNvbnRlbnRz
KTsKKyAgICBmY2xvc2UoZik7CisgICAgcmV0dXJuIGZpbGVfcGF0aDsKKyAgfQorCisgcHJpdmF0
ZToKKyAgaW50ZXJuYWw6OkZpbGVQYXRoIHRlc3RkYXRhX3BhdGhfOworfTsKKworLy8gVGVzdHMg
YW4gZW1wdHkgZmxhZ2ZpbGUuCitURVNUX0YoRmxhZ2ZpbGVUZXN0LCBFbXB0eSkgeworICBpbnRl
cm5hbDo6RmlsZVBhdGggZmxhZ2ZpbGVfcGF0aChDcmVhdGVGbGFnZmlsZSgiIikpOworICBzdGQ6
OnN0cmluZyBmbGFnZmlsZV9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIgR1RFU1RfRkxB
R19QUkVGSVhfICJmbGFnZmlsZT0iKSArIGZsYWdmaWxlX3BhdGguY19zdHIoKTsKKworICBjb25z
dCBjaGFyKiBhcmd2W10gPSB7CisgICAgImZvby5leGUiLAorICAgIGZsYWdmaWxlX2ZsYWcuY19z
dHIoKSwKKyAgICBOVUxMCisgIH07CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAi
Zm9vLmV4ZSIsCisgICAgTlVMTAorICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18o
YXJndiwgYXJndjIsIEZsYWdzKCksIGZhbHNlKTsKK30KKworLy8gVGVzdHMgcGFzc2luZyBhIG5v
bi1lbXB0eSAtLWd0ZXN0X2ZpbHRlciBmbGFnIHZpYSAtLWd0ZXN0X2ZsYWdmaWxlLgorVEVTVF9G
KEZsYWdmaWxlVGVzdCwgRmlsdGVyTm9uRW1wdHkpIHsKKyAgaW50ZXJuYWw6OkZpbGVQYXRoIGZs
YWdmaWxlX3BhdGgoQ3JlYXRlRmxhZ2ZpbGUoCisgICAgICAiLS0iICBHVEVTVF9GTEFHX1BSRUZJ
WF8gICJmaWx0ZXI9YWJjIikpOworICBzdGQ6OnN0cmluZyBmbGFnZmlsZV9mbGFnID0KKyAgICAg
IHN0ZDo6c3RyaW5nKCItLSIgR1RFU1RfRkxBR19QUkVGSVhfICJmbGFnZmlsZT0iKSArIGZsYWdm
aWxlX3BhdGguY19zdHIoKTsKKworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgImZvby5l
eGUiLAorICAgIGZsYWdmaWxlX2ZsYWcuY19zdHIoKSwKKyAgICBOVUxMCisgIH07CisKKyAgY29u
c3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAorICB9OworCisg
IEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpGaWx0ZXIoImFi
YyIpLCBmYWxzZSk7Cit9CisKKy8vIFRlc3RzIHBhc3Npbmcgc2V2ZXJhbCBmbGFncyB2aWEgLS1n
dGVzdF9mbGFnZmlsZS4KK1RFU1RfRihGbGFnZmlsZVRlc3QsIFNldmVyYWxGbGFncykgeworICBp
bnRlcm5hbDo6RmlsZVBhdGggZmxhZ2ZpbGVfcGF0aChDcmVhdGVGbGFnZmlsZSgKKyAgICAgICIt
LSIgIEdURVNUX0ZMQUdfUFJFRklYXyAgImZpbHRlcj1hYmNcbiIKKyAgICAgICItLSIgIEdURVNU
X0ZMQUdfUFJFRklYXyAgImJyZWFrX29uX2ZhaWx1cmVcbiIKKyAgICAgICItLSIgIEdURVNUX0ZM
QUdfUFJFRklYXyAgImxpc3RfdGVzdHMiKSk7CisgIHN0ZDo6c3RyaW5nIGZsYWdmaWxlX2ZsYWcg
PQorICAgICAgc3RkOjpzdHJpbmcoIi0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImZsYWdmaWxlPSIp
ICsgZmxhZ2ZpbGVfcGF0aC5jX3N0cigpOworCisgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKKyAg
ICAiZm9vLmV4ZSIsCisgICAgZmxhZ2ZpbGVfZmxhZy5jX3N0cigpLAorICAgIE5VTEwKKyAgfTsK
KworICBjb25zdCBjaGFyKiBhcmd2MltdID0geworICAgICJmb28uZXhlIiwKKyAgICBOVUxMCisg
IH07CisKKyAgRmxhZ3MgZXhwZWN0ZWRfZmxhZ3M7CisgIGV4cGVjdGVkX2ZsYWdzLmJyZWFrX29u
X2ZhaWx1cmUgPSB0cnVlOworICBleHBlY3RlZF9mbGFncy5maWx0ZXIgPSAiYWJjIjsKKyAgZXhw
ZWN0ZWRfZmxhZ3MubGlzdF90ZXN0cyA9IHRydWU7CisKKyAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZM
QUdTXyhhcmd2LCBhcmd2MiwgZXhwZWN0ZWRfZmxhZ3MsIGZhbHNlKTsKK30KKyNlbmRpZiAgLy8g
R1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXwogCiAvLyBUZXN0cyBjdXJyZW50X3Rlc3RfaW5m
bygpIGluIFVuaXRUZXN0LgogY2xhc3MgQ3VycmVudFRlc3RJbmZvVGVzdCA6IHB1YmxpYyBUZXN0
IHsKQEAgLTU5OTAsNiArNjU4OSw3IEBAIFRFU1RfRihDdXJyZW50VGVzdEluZm9UZXN0LCBXb3Jr
c0ZvclNlY29uZFRlc3RJbkFUZXN0Q2FzZSkgewogCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwog
CisKIC8vIFRoZXNlIHR3byBsaW5lcyB0ZXN0IHRoYXQgd2UgY2FuIGRlZmluZSB0ZXN0cyBpbiBh
IG5hbWVzcGFjZSB0aGF0CiAvLyBoYXMgdGhlIG5hbWUgInRlc3RpbmciIGFuZCBpcyBuZXN0ZWQg
aW4gYW5vdGhlciBuYW1lc3BhY2UuCiBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlIHsKQEAgLTYwNDgs
NyArNjY0OCw3IEBAIFRFU1QoU3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIFVuY29uZGl0aW9uYWwp
IHsKIAogI2lmZGVmIF9fQk9STEFORENfXwogLy8gU2lsZW5jZXMgd2FybmluZ3M6ICJDb25kaXRp
b24gaXMgYWx3YXlzIHRydWUiLCAiVW5yZWFjaGFibGUgY29kZSIKLSNwcmFnbWEgb3B0aW9uIHB1
c2ggLXctY2NjIC13LXJjaAorIyBwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAogI2Vu
ZGlmCiAKIFRFU1QoU3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIFRydXRoKSB7CkBAIC02MDcwLDgg
KzY2NzAsOCBAQCBURVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBUcnV0aDIpIHsKIH0KIAog
I2lmZGVmIF9fQk9STEFORENfXwotLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0ZXIgcHJldmlvdXMg
IiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHJlc3NlZCB0aGVtCi0jcHJhZ21hIG9wdGlvbiBwb3AK
Ky8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9wdGlvbiBwdXNo
IiBzdXBwcmVzc2VkIHRoZW0KKyMgcHJhZ21hIG9wdGlvbiBwb3AKICNlbmRpZgogCiBURVNUKFN0
cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBJbnRlZ2VyRXF1YWxzKSB7CkBAIC02MjY0LDE1ICs2ODY0
LDQwIEBAIFRFU1QoQ29sb3JlZE91dHB1dFRlc3QsIFVzZXNDb2xvcnNXaGVuVGVybVN1cHBvcnRz
Q29sb3JzKSB7CiAgIFNldEVudigiVEVSTSIsICJ4dGVybS1jb2xvciIpOyAgLy8gVEVSTSBzdXBw
b3J0cyBjb2xvcnMuCiAgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0
ZG91dCBpcyBhIFRUWS4KIAorICBTZXRFbnYoIlRFUk0iLCAieHRlcm0tMjU2Y29sb3IiKTsgIC8v
IFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVl
KSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInNjcmVlbiIpOyAg
Ly8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRy
dWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAic2NyZWVuLTI1
NmNvbG9yIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxk
VXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgorCisgIFNldEVudigiVEVSTSIs
ICJ0bXV4Iik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxk
VXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgorCisgIFNldEVudigiVEVSTSIs
ICJ0bXV4LTI1NmNvbG9yIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RS
VUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgorCisgIFNldEVu
digiVEVSTSIsICJyeHZ0LXVuaWNvZGUiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBF
WFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisK
KyAgU2V0RW52KCJURVJNIiwgInJ4dnQtdW5pY29kZS0yNTZjb2xvciIpOyAgLy8gVEVSTSBzdXBw
b3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0
ZG91dCBpcyBhIFRUWS4KKwogICBTZXRFbnYoIlRFUk0iLCAibGludXgiKTsgIC8vIFRFUk0gc3Vw
cG9ydHMgY29sb3JzLgogICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBT
dGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgImN5Z3dpbiIpOyAgLy8gVEVSTSBz
dXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8v
IFN0ZG91dCBpcyBhIFRUWS4KICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogfQogCiAvLyBW
ZXJpZmllcyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcSB3b3JrcyBpbiBhIG5hbWVzcGFjZSBzY29w
ZS4KIAotc3RhdGljIGJvb2wgZHVtbXkxID0gU3RhdGljQXNzZXJ0VHlwZUVxPGJvb2wsIGJvb2w+
KCk7Ci1zdGF0aWMgYm9vbCBkdW1teTIgPSBTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgaW50LCBj
b25zdCBpbnQ+KCk7CitzdGF0aWMgYm9vbCBkdW1teTEgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8g
PSBTdGF0aWNBc3NlcnRUeXBlRXE8Ym9vbCwgYm9vbD4oKTsKK3N0YXRpYyBib29sIGR1bW15MiBH
VEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9CisgICAgU3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGlu
dCwgY29uc3QgaW50PigpOwogCiAvLyBWZXJpZmllcyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcSB3
b3JrcyBpbiBhIGNsYXNzLgogCkBAIC02Mjk1LDE0ICs2OTIwLDYgQEAgVEVTVChTdGF0aWNBc3Nl
cnRUeXBlRXFUZXN0LCBDb21waWxlc0ZvckVxdWFsVHlwZXMpIHsKICAgU3RhdGljQXNzZXJ0VHlw
ZUVxPGludCosIEludEFsaWFzKj4oKTsKIH0KIAotVEVTVChHZXRDdXJyZW50T3NTdGFja1RyYWNl
RXhjZXB0VG9wVGVzdCwgUmV0dXJuc1RoZVN0YWNrVHJhY2UpIHsKLSAgdGVzdGluZzo6VW5pdFRl
c3QqIGNvbnN0IHVuaXRfdGVzdCA9IHRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpOwot
Ci0gIC8vIFdlIGRvbid0IGhhdmUgYSBzdGFjayB3YWxrZXIgaW4gR29vZ2xlIFRlc3QgeWV0Lgot
ICBFWFBFQ1RfU1RSRVEoIiIsIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AodW5pdF90
ZXN0LCAwKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCBHZXRDdXJyZW50T3NTdGFja1Ry
YWNlRXhjZXB0VG9wKHVuaXRfdGVzdCwgMSkuY19zdHIoKSk7Ci19Ci0KIFRFU1QoSGFzTm9uZmF0
YWxGYWlsdXJlVGVzdCwgUmV0dXJuc0ZhbHNlV2hlblRoZXJlSXNOb0ZhaWx1cmUpIHsKICAgRVhQ
RUNUX0ZBTFNFKEhhc05vbmZhdGFsRmFpbHVyZSgpKTsKIH0KQEAgLTY0NjYsNyArNzA4Myw3IEBA
IFRFU1QoVGVzdEV2ZW50TGlzdGVuZXJzVGVzdCwgQXBwZW5kKSB7CiAvLyBvcmRlci4KIGNsYXNz
IFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIg
ewogIHB1YmxpYzoKLSAgU2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIoc3RkOjp2ZWN0b3I8U3RyaW5n
PiogdmVjdG9yLCBjb25zdCBjaGFyKiBpZCkKKyAgU2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIoc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+KiB2ZWN0b3IsIGNvbnN0IGNoYXIqIGlkKQogICAgICAgOiB2
ZWN0b3JfKHZlY3RvciksIGlkXyhpZCkge30KIAogIHByb3RlY3RlZDoKQEAgLTY0ODksMjAgKzcx
MDYsMjAgQEAgY2xhc3MgU2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIgOiBwdWJsaWMgRW1wdHlUZXN0
RXZlbnRMaXN0ZW5lciB7CiAgIH0KIAogIHByaXZhdGU6Ci0gIFN0cmluZyBHZXRFdmVudERlc2Ny
aXB0aW9uKGNvbnN0IGNoYXIqIG1ldGhvZCkgeworICBzdGQ6OnN0cmluZyBHZXRFdmVudERlc2Ny
aXB0aW9uKGNvbnN0IGNoYXIqIG1ldGhvZCkgewogICAgIE1lc3NhZ2UgbWVzc2FnZTsKICAgICBt
ZXNzYWdlIDw8IGlkXyA8PCAiLiIgPDwgbWV0aG9kOwogICAgIHJldHVybiBtZXNzYWdlLkdldFN0
cmluZygpOwogICB9CiAKLSAgc3RkOjp2ZWN0b3I8U3RyaW5nPiogdmVjdG9yXzsKKyAgc3RkOjp2
ZWN0b3I8c3RkOjpzdHJpbmc+KiB2ZWN0b3JfOwogICBjb25zdCBjaGFyKiBjb25zdCBpZF87CiAK
ICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5l
cik7CiB9OwogCiBURVNUKEV2ZW50TGlzdGVuZXJUZXN0LCBBcHBlbmRLZWVwc09yZGVyKSB7Ci0g
IHN0ZDo6dmVjdG9yPFN0cmluZz4gdmVjOworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdmVj
OwogICBUZXN0RXZlbnRMaXN0ZW5lcnMgbGlzdGVuZXJzOwogICBsaXN0ZW5lcnMuQXBwZW5kKG5l
dyBTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lcigmdmVjLCAiMXN0IikpOwogICBsaXN0ZW5lcnMuQXBw
ZW5kKG5ldyBTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lcigmdmVjLCAiMm5kIikpOwpAQCAtNjcxNSw0
ICs3MzMyLDQ2NCBAQCBHVEVTVF9URVNUKEFsdGVybmF0aXZlTmFtZVRlc3QsIFdvcmtzKSB7ICAv
LyBHVEVTVF9URVNUIGlzIHRoZSBzYW1lIGFzIFRFU1QuCiAgIC8vIEdURVNUX0ZBSUwgaXMgdGhl
IHNhbWUgYXMgRkFJTC4KICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfRkFJTCgpIDw8ICJB
biBleHBlY3RlZCBmYWlsdXJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVk
IGZhaWx1cmUiKTsKKworICAvLyBHVEVTVF9BU1NFUlRfWFkgaXMgdGhlIHNhbWUgYXMgQVNTRVJU
X1hZLgorCisgIEdURVNUX0FTU0VSVF9FUSgwLCAwKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
R1RFU1RfQVNTRVJUX0VRKDAsIDEpIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKyAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoR1RFU1RfQVNTRVJUX0VRKDEsIDApIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKworICBHVEVTVF9B
U1NFUlRfTkUoMCwgMSk7CisgIEdURVNUX0FTU0VSVF9ORSgxLCAwKTsKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoR1RFU1RfQVNTRVJUX05FKDAsIDApIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKworICBHVEVT
VF9BU1NFUlRfTEUoMCwgMCk7CisgIEdURVNUX0FTU0VSVF9MRSgwLCAxKTsKKyAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0xFKDEsIDApIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKworICBH
VEVTVF9BU1NFUlRfTFQoMCwgMSk7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdURVNUX0FTU0VS
VF9MVCgwLCAwKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAgICAgICAgICAg
ICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdURVNU
X0FTU0VSVF9MVCgxLCAwKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisKKyAgR1RFU1RfQVNTRVJUX0dFKDAs
IDApOworICBHVEVTVF9BU1NFUlRfR0UoMSwgMCk7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdU
RVNUX0FTU0VSVF9HRSgwLCAxKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisKKyAgR1RFU1RfQVNTRVJUX0dU
KDEsIDApOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfR1QoMCwgMSkgPDwg
IkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0
ZWQgZmFpbHVyZSIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfR1QoMSwg
MSkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4g
ZXhwZWN0ZWQgZmFpbHVyZSIpOworfQorCisvLyBUZXN0cyBmb3IgaW50ZXJuYWwgdXRpbGl0aWVz
IG5lY2Vzc2FyeSBmb3IgaW1wbGVtZW50YXRpb24gb2YgdGhlIHVuaXZlcnNhbAorLy8gcHJpbnRp
bmcuCisvLyBGSVhNRTogRmluZCBhIGJldHRlciBob21lIGZvciB0aGVtLgorCitjbGFzcyBDb252
ZXJzaW9uSGVscGVyQmFzZSB7fTsKK2NsYXNzIENvbnZlcnNpb25IZWxwZXJEZXJpdmVkIDogcHVi
bGljIENvbnZlcnNpb25IZWxwZXJCYXNlIHt9OworCisvLyBUZXN0cyB0aGF0IElzQVByb3RvY29s
TWVzc2FnZTxUPjo6dmFsdWUgaXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuCitURVNUKElzQVBy
b3RvY29sTWVzc2FnZVRlc3QsIFZhbHVlSXNDb21waWxlVGltZUNvbnN0YW50KSB7CisgIEdURVNU
X0NPTVBJTEVfQVNTRVJUXyhJc0FQcm90b2NvbE1lc3NhZ2U8UHJvdG9jb2xNZXNzYWdlPjo6dmFs
dWUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF90cnVlKTsKKyAgR1RFU1RfQ09NUElM
RV9BU1NFUlRfKCFJc0FQcm90b2NvbE1lc3NhZ2U8aW50Pjo6dmFsdWUsIGNvbnN0X2ZhbHNlKTsK
K30KKworLy8gVGVzdHMgdGhhdCBJc0FQcm90b2NvbE1lc3NhZ2U8VD46OnZhbHVlIGlzIHRydWUg
d2hlbiBUIGlzCisvLyBwcm90bzI6Ok1lc3NhZ2Ugb3IgYSBzdWItY2xhc3Mgb2YgaXQuCitURVNU
KElzQVByb3RvY29sTWVzc2FnZVRlc3QsIFZhbHVlSXNUcnVlV2hlblR5cGVJc0FQcm90b2NvbE1l
c3NhZ2UpIHsKKyAgRVhQRUNUX1RSVUUoSXNBUHJvdG9jb2xNZXNzYWdlPCA6OnByb3RvMjo6TWVz
c2FnZT46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoSXNBUHJvdG9jb2xNZXNzYWdlPFByb3RvY29s
TWVzc2FnZT46OnZhbHVlKTsKK30KKworLy8gVGVzdHMgdGhhdCBJc0FQcm90b2NvbE1lc3NhZ2U8
VD46OnZhbHVlIGlzIGZhbHNlIHdoZW4gVCBpcyBuZWl0aGVyCisvLyBQcm90b2NvbE1lc3NhZ2Ug
bm9yIGEgc3ViLWNsYXNzIG9mIGl0LgorVEVTVChJc0FQcm90b2NvbE1lc3NhZ2VUZXN0LCBWYWx1
ZUlzRmFsc2VXaGVuVHlwZUlzTm90QVByb3RvY29sTWVzc2FnZSkgeworICBFWFBFQ1RfRkFMU0Uo
SXNBUHJvdG9jb2xNZXNzYWdlPGludD46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKElzQVByb3Rv
Y29sTWVzc2FnZTxjb25zdCBDb252ZXJzaW9uSGVscGVyQmFzZT46OnZhbHVlKTsKK30KKworLy8g
VGVzdHMgdGhhdCBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbCBjb21waWxlcyB3aGVuIHRoZSB0eXBl
IGFyZ3VtZW50cyBhcmUKKy8vIGVxdWFsLgorVEVTVChDb21waWxlQXNzZXJ0VHlwZXNFcXVhbCwg
Q29tcGlsZXNXaGVuVHlwZXNBcmVFcXVhbCkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDx2
b2lkLCB2b2lkPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQqLCBpbnQqPigpOwor
fQorCisvLyBUZXN0cyB0aGF0IFJlbW92ZVJlZmVyZW5jZSBkb2VzIG5vdCBhZmZlY3Qgbm9uLXJl
ZmVyZW5jZSB0eXBlcy4KK1RFU1QoUmVtb3ZlUmVmZXJlbmNlVGVzdCwgRG9lc05vdEFmZmVjdE5v
blJlZmVyZW5jZVR5cGUpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50LCBSZW1vdmVS
ZWZlcmVuY2U8aW50Pjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y29uc3Qg
Y2hhciwgUmVtb3ZlUmVmZXJlbmNlPGNvbnN0IGNoYXI+Ojp0eXBlPigpOworfQorCisvLyBUZXN0
cyB0aGF0IFJlbW92ZVJlZmVyZW5jZSByZW1vdmVzIHJlZmVyZW5jZSBmcm9tIHJlZmVyZW5jZSB0
eXBlcy4KK1RFU1QoUmVtb3ZlUmVmZXJlbmNlVGVzdCwgUmVtb3Zlc1JlZmVyZW5jZSkgeworICBD
b21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQsIFJlbW92ZVJlZmVyZW5jZTxpbnQmPjo6dHlwZT4o
KTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y29uc3QgY2hhciwgUmVtb3ZlUmVmZXJlbmNl
PGNvbnN0IGNoYXImPjo6dHlwZT4oKTsKK30KKworLy8gVGVzdHMgR1RFU1RfUkVNT1ZFX1JFRkVS
RU5DRV8uCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lkIFRlc3RH
VGVzdFJlbW92ZVJlZmVyZW5jZSgpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8VDEsIEdU
RVNUX1JFTU9WRV9SRUZFUkVOQ0VfKFQyKT4oKTsKK30KKworVEVTVChSZW1vdmVSZWZlcmVuY2VU
ZXN0LCBNYWNyb1ZlcnNpb24pIHsKKyAgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNlPGludCwgaW50
PigpOworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2U8Y29uc3QgY2hhciwgY29uc3QgY2hhciY+
KCk7Cit9CisKKworLy8gVGVzdHMgdGhhdCBSZW1vdmVDb25zdCBkb2VzIG5vdCBhZmZlY3Qgbm9u
LWNvbnN0IHR5cGVzLgorVEVTVChSZW1vdmVDb25zdFRlc3QsIERvZXNOb3RBZmZlY3ROb25Db25z
dFR5cGUpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50LCBSZW1vdmVDb25zdDxpbnQ+
Ojp0eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjaGFyJiwgUmVtb3ZlQ29uc3Q8
Y2hhciY+Ojp0eXBlPigpOworfQorCisvLyBUZXN0cyB0aGF0IFJlbW92ZUNvbnN0IHJlbW92ZXMg
Y29uc3QgZnJvbSBjb25zdCB0eXBlcy4KK1RFU1QoUmVtb3ZlQ29uc3RUZXN0LCBSZW1vdmVzQ29u
c3QpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50LCBSZW1vdmVDb25zdDxjb25zdCBp
bnQ+Ojp0eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjaGFyWzJdLCBSZW1vdmVD
b25zdDxjb25zdCBjaGFyWzJdPjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8
Y2hhclsyXVszXSwgUmVtb3ZlQ29uc3Q8Y29uc3QgY2hhclsyXVszXT46OnR5cGU+KCk7Cit9CisK
Ky8vIFRlc3RzIEdURVNUX1JFTU9WRV9DT05TVF8uCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDI+Cit2b2lkIFRlc3RHVGVzdFJlbW92ZUNvbnN0KCkgeworICBDb21waWxlQXNz
ZXJ0VHlwZXNFcXVhbDxUMSwgR1RFU1RfUkVNT1ZFX0NPTlNUXyhUMik+KCk7Cit9CisKK1RFU1Qo
UmVtb3ZlQ29uc3RUZXN0LCBNYWNyb1ZlcnNpb24pIHsKKyAgVGVzdEdUZXN0UmVtb3ZlQ29uc3Q8
aW50LCBpbnQ+KCk7CisgIFRlc3RHVGVzdFJlbW92ZUNvbnN0PGRvdWJsZSYsIGRvdWJsZSY+KCk7
CisgIFRlc3RHVGVzdFJlbW92ZUNvbnN0PGNoYXIsIGNvbnN0IGNoYXI+KCk7Cit9CisKKy8vIFRl
c3RzIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXy4KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNlQW5kQ29u
c3QoKSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBHVEVTVF9SRU1PVkVfUkVGRVJF
TkNFX0FORF9DT05TVF8oVDIpPigpOworfQorCitURVNUKFJlbW92ZVJlZmVyZW5jZVRvQ29uc3RU
ZXN0LCBXb3JrcykgeworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxpbnQsIGlu
dD4oKTsKKyAgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8ZG91YmxlLCBkb3VibGUm
PigpOworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxjaGFyLCBjb25zdCBjaGFy
PigpOworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxjaGFyLCBjb25zdCBjaGFy
Jj4oKTsKKyAgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8Y29uc3QgY2hhciosIGNv
bnN0IGNoYXIqPigpOworfQorCisvLyBUZXN0cyB0aGF0IEFkZFJlZmVyZW5jZSBkb2VzIG5vdCBh
ZmZlY3QgcmVmZXJlbmNlIHR5cGVzLgorVEVTVChBZGRSZWZlcmVuY2VUZXN0LCBEb2VzTm90QWZm
ZWN0UmVmZXJlbmNlVHlwZSkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQmLCBBZGRS
ZWZlcmVuY2U8aW50Jj46OnR5cGU+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNvbnN0
IGNoYXImLCBBZGRSZWZlcmVuY2U8Y29uc3QgY2hhciY+Ojp0eXBlPigpOworfQorCisvLyBUZXN0
cyB0aGF0IEFkZFJlZmVyZW5jZSBhZGRzIHJlZmVyZW5jZSB0byBub24tcmVmZXJlbmNlIHR5cGVz
LgorVEVTVChBZGRSZWZlcmVuY2VUZXN0LCBBZGRzUmVmZXJlbmNlKSB7CisgIENvbXBpbGVBc3Nl
cnRUeXBlc0VxdWFsPGludCYsIEFkZFJlZmVyZW5jZTxpbnQ+Ojp0eXBlPigpOworICBDb21waWxl
QXNzZXJ0VHlwZXNFcXVhbDxjb25zdCBjaGFyJiwgQWRkUmVmZXJlbmNlPGNvbnN0IGNoYXI+Ojp0
eXBlPigpOworfQorCisvLyBUZXN0cyBHVEVTVF9BRERfUkVGRVJFTkNFXy4KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgVGVzdEdUZXN0QWRkUmVmZXJlbmNlKCkg
eworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxUMSwgR1RFU1RfQUREX1JFRkVSRU5DRV8oVDIp
PigpOworfQorCitURVNUKEFkZFJlZmVyZW5jZVRlc3QsIE1hY3JvVmVyc2lvbikgeworICBUZXN0
R1Rlc3RBZGRSZWZlcmVuY2U8aW50JiwgaW50PigpOworICBUZXN0R1Rlc3RBZGRSZWZlcmVuY2U8
Y29uc3QgY2hhciYsIGNvbnN0IGNoYXImPigpOworfQorCisvLyBUZXN0cyBHVEVTVF9SRUZFUkVO
Q0VfVE9fQ09OU1RfLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgordm9p
ZCBUZXN0R1Rlc3RSZWZlcmVuY2VUb0NvbnN0KCkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVh
bDxUMSwgR1RFU1RfUkVGRVJFTkNFX1RPX0NPTlNUXyhUMik+KCk7Cit9CisKK1RFU1QoR1Rlc3RS
ZWZlcmVuY2VUb0NvbnN0VGVzdCwgV29ya3MpIHsKKyAgVGVzdEdUZXN0UmVmZXJlbmNlVG9Db25z
dDxjb25zdCBjaGFyJiwgY2hhcj4oKTsKKyAgVGVzdEdUZXN0UmVmZXJlbmNlVG9Db25zdDxjb25z
dCBpbnQmLCBjb25zdCBpbnQ+KCk7CisgIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29uc3Q8Y29uc3Qg
ZG91YmxlJiwgZG91YmxlPigpOworICBUZXN0R1Rlc3RSZWZlcmVuY2VUb0NvbnN0PGNvbnN0IHN0
ZDo6c3RyaW5nJiwgY29uc3Qgc3RkOjpzdHJpbmcmPigpOworfQorCisvLyBUZXN0cyB0aGF0IElt
cGxpY2l0bHlDb252ZXJ0aWJsZTxUMSwgVDI+Ojp2YWx1ZSBpcyBhIGNvbXBpbGUtdGltZSBjb25z
dGFudC4KK1RFU1QoSW1wbGljaXRseUNvbnZlcnRpYmxlVGVzdCwgVmFsdWVJc0NvbXBpbGVUaW1l
Q29uc3RhbnQpIHsKKyAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKChJbXBsaWNpdGx5Q29udmVydGli
bGU8aW50LCBpbnQ+Ojp2YWx1ZSksIGNvbnN0X3RydWUpOworICBHVEVTVF9DT01QSUxFX0FTU0VS
VF8oKCFJbXBsaWNpdGx5Q29udmVydGlibGU8dm9pZCosIGludCo+Ojp2YWx1ZSksCisgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdF9mYWxzZSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgSW1wbGlj
aXRseUNvbnZlcnRpYmxlPFQxLCBUMj46OnZhbHVlIGlzIHRydWUgd2hlbiBUMSBjYW4KKy8vIGJl
IGltcGxpY2l0bHkgY29udmVydGVkIHRvIFQyLgorVEVTVChJbXBsaWNpdGx5Q29udmVydGlibGVU
ZXN0LCBWYWx1ZUlzVHJ1ZVdoZW5Db252ZXJ0aWJsZSkgeworICBFWFBFQ1RfVFJVRSgoSW1wbGlj
aXRseUNvbnZlcnRpYmxlPGludCwgZG91YmxlPjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKElt
cGxpY2l0bHlDb252ZXJ0aWJsZTxkb3VibGUsIGludD46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVF
KChJbXBsaWNpdGx5Q29udmVydGlibGU8aW50Kiwgdm9pZCo+Ojp2YWx1ZSkpOworICBFWFBFQ1Rf
VFJVRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPGludCosIGNvbnN0IGludCo+Ojp2YWx1ZSkpOwor
ICBFWFBFQ1RfVFJVRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPENvbnZlcnNpb25IZWxwZXJEZXJp
dmVkJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJz
aW9uSGVscGVyQmFzZSY+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoSW1wbGljaXRseUNvbnZl
cnRpYmxlPGNvbnN0IENvbnZlcnNpb25IZWxwZXJCYXNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENvbnZlcnNpb25IZWxwZXJCYXNlPjo6dmFsdWUpKTsKK30KKworLy8g
VGVzdHMgdGhhdCBJbXBsaWNpdGx5Q29udmVydGlibGU8VDEsIFQyPjo6dmFsdWUgaXMgZmFsc2Ug
d2hlbiBUMQorLy8gY2Fubm90IGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIFQyLgorVEVTVChJ
bXBsaWNpdGx5Q29udmVydGlibGVUZXN0LCBWYWx1ZUlzRmFsc2VXaGVuTm90Q29udmVydGlibGUp
IHsKKyAgRVhQRUNUX0ZBTFNFKChJbXBsaWNpdGx5Q29udmVydGlibGU8ZG91YmxlLCBpbnQqPjo6
dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKChJbXBsaWNpdGx5Q29udmVydGlibGU8dm9pZCosIGlu
dCo+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxjb25z
dCBpbnQqLCBpbnQqPjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKChJbXBsaWNpdGx5Q29udmVy
dGlibGU8Q29udmVyc2lvbkhlbHBlckJhc2UmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDb252ZXJzaW9uSGVscGVyRGVyaXZlZCY+Ojp2YWx1ZSkpOworfQorCisvLyBU
ZXN0cyBJc0NvbnRhaW5lclRlc3QuCisKK2NsYXNzIE5vbkNvbnRhaW5lciB7fTsKKworVEVTVChJ
c0NvbnRhaW5lclRlc3RUZXN0LCBXb3Jrc0Zvck5vbkNvbnRhaW5lcikgeworICBFWFBFQ1RfRVEo
c2l6ZW9mKElzTm90Q29udGFpbmVyKSwgc2l6ZW9mKElzQ29udGFpbmVyVGVzdDxpbnQ+KDApKSk7
CisgIEVYUEVDVF9FUShzaXplb2YoSXNOb3RDb250YWluZXIpLCBzaXplb2YoSXNDb250YWluZXJU
ZXN0PGNoYXJbNV0+KDApKSk7CisgIEVYUEVDVF9FUShzaXplb2YoSXNOb3RDb250YWluZXIpLCBz
aXplb2YoSXNDb250YWluZXJUZXN0PE5vbkNvbnRhaW5lcj4oMCkpKTsKK30KKworVEVTVChJc0Nv
bnRhaW5lclRlc3RUZXN0LCBXb3Jrc0ZvckNvbnRhaW5lcikgeworICBFWFBFQ1RfRVEoc2l6ZW9m
KElzQ29udGFpbmVyKSwKKyAgICAgICAgICAgIHNpemVvZihJc0NvbnRhaW5lclRlc3Q8c3RkOjp2
ZWN0b3I8Ym9vbD4gPigwKSkpOworICBFWFBFQ1RfRVEoc2l6ZW9mKElzQ29udGFpbmVyKSwKKyAg
ICAgICAgICAgIHNpemVvZihJc0NvbnRhaW5lclRlc3Q8c3RkOjptYXA8aW50LCBkb3VibGU+ID4o
MCkpKTsKK30KKworI2lmIEdURVNUX0xBTkdfQ1hYMTEKK3N0cnVjdCBDb25zdE9ubHlDb250YWlu
ZXJXaXRoUG9pbnRlckl0ZXJhdG9yIHsKKyAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBpbnQqOwor
ICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0OworICBjb25zdF9pdGVyYXRvciBlbmQoKSBj
b25zdDsKK307CisKK3N0cnVjdCBDb25zdE9ubHlDb250YWluZXJXaXRoQ2xhc3NJdGVyYXRvciB7
CisgIHN0cnVjdCBjb25zdF9pdGVyYXRvciB7CisgICAgY29uc3QgaW50JiBvcGVyYXRvciooKSBj
b25zdDsKKyAgICBjb25zdF9pdGVyYXRvciYgb3BlcmF0b3IrKygvKiBwcmUtaW5jcmVtZW50ICov
KTsKKyAgfTsKKyAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKKyAgY29uc3RfaXRlcmF0
b3IgZW5kKCkgY29uc3Q7Cit9OworCitURVNUKElzQ29udGFpbmVyVGVzdFRlc3QsIENvbnN0T25s
eUNvbnRhaW5lcikgeworICBFWFBFQ1RfRVEoc2l6ZW9mKElzQ29udGFpbmVyKSwKKyAgICAgICAg
ICAgIHNpemVvZihJc0NvbnRhaW5lclRlc3Q8Q29uc3RPbmx5Q29udGFpbmVyV2l0aFBvaW50ZXJJ
dGVyYXRvcj4oMCkpKTsKKyAgRVhQRUNUX0VRKHNpemVvZihJc0NvbnRhaW5lciksCisgICAgICAg
ICAgICBzaXplb2YoSXNDb250YWluZXJUZXN0PENvbnN0T25seUNvbnRhaW5lcldpdGhDbGFzc0l0
ZXJhdG9yPigwKSkpOworfQorI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisKKy8vIFRlc3Rz
IElzSGFzaFRhYmxlLgorc3RydWN0IEFIYXNoVGFibGUgeworICB0eXBlZGVmIHZvaWQgaGFzaGVy
OworfTsKK3N0cnVjdCBOb3RSZWFsbHlBSGFzaFRhYmxlIHsKKyAgdHlwZWRlZiB2b2lkIGhhc2hl
cjsKKyAgdHlwZWRlZiB2b2lkIHJldmVyc2VfaXRlcmF0b3I7Cit9OworVEVTVChJc0hhc2hUYWJs
ZSwgQmFzaWMpIHsKKyAgRVhQRUNUX1RSVUUodGVzdGluZzo6aW50ZXJuYWw6OklzSGFzaFRhYmxl
PEFIYXNoVGFibGU+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRSh0ZXN0aW5nOjppbnRlcm5hbDo6
SXNIYXNoVGFibGU8Tm90UmVhbGx5QUhhc2hUYWJsZT46OnZhbHVlKTsKKyNpZiBHVEVTVF9MQU5H
X0NYWDExCisgIEVYUEVDVF9GQUxTRSh0ZXN0aW5nOjppbnRlcm5hbDo6SXNIYXNoVGFibGU8c3Rk
Ojp2ZWN0b3I8aW50Pj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUodGVzdGluZzo6aW50ZXJuYWw6
OklzSGFzaFRhYmxlPHN0ZDo6dW5vcmRlcmVkX3NldDxpbnQ+Pjo6dmFsdWUpOworI2VuZGlmICAv
LyBHVEVTVF9MQU5HX0NYWDExCisjaWYgR1RFU1RfSEFTX0hBU0hfU0VUXworICBFWFBFQ1RfVFJV
RSh0ZXN0aW5nOjppbnRlcm5hbDo6SXNIYXNoVGFibGU8X19nbnVfY3h4OjpoYXNoX3NldDxpbnQ+
Pjo6dmFsdWUpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfSEFTSF9TRVRfCit9CisKKy8vIFRlc3Rz
IEFycmF5RXEoKS4KKworVEVTVChBcnJheUVxVGVzdCwgV29ya3NGb3JEZWdlbmVyYXRlZEFycmF5
cykgeworICBFWFBFQ1RfVFJVRShBcnJheUVxKDUsIDVMKSk7CisgIEVYUEVDVF9GQUxTRShBcnJh
eUVxKCdhJywgMCkpOworfQorCitURVNUKEFycmF5RXFUZXN0LCBXb3Jrc0Zvck9uZURpbWVuc2lv
bmFsQXJyYXlzKSB7CisgIC8vIE5vdGUgdGhhdCBhIGFuZCBiIGFyZSBkaXN0aW5jdCBidXQgY29t
cGF0aWJsZSB0eXBlcy4KKyAgY29uc3QgaW50IGFbXSA9IHsgMCwgMSB9OworICBsb25nIGJbXSA9
IHsgMCwgMSB9OworICBFWFBFQ1RfVFJVRShBcnJheUVxKGEsIGIpKTsKKyAgRVhQRUNUX1RSVUUo
QXJyYXlFcShhLCAyLCBiKSk7CisKKyAgYlswXSA9IDI7CisgIEVYUEVDVF9GQUxTRShBcnJheUVx
KGEsIGIpKTsKKyAgRVhQRUNUX0ZBTFNFKEFycmF5RXEoYSwgMSwgYikpOworfQorCitURVNUKEFy
cmF5RXFUZXN0LCBXb3Jrc0ZvclR3b0RpbWVuc2lvbmFsQXJyYXlzKSB7CisgIGNvbnN0IGNoYXIg
YVtdWzNdID0geyAiaGkiLCAibG8iIH07CisgIGNvbnN0IGNoYXIgYltdWzNdID0geyAiaGkiLCAi
bG8iIH07CisgIGNvbnN0IGNoYXIgY1tdWzNdID0geyAiaGkiLCAibGkiIH07CisKKyAgRVhQRUNU
X1RSVUUoQXJyYXlFcShhLCBiKSk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgMiwgYikpOwor
CisgIEVYUEVDVF9GQUxTRShBcnJheUVxKGEsIGMpKTsKKyAgRVhQRUNUX0ZBTFNFKEFycmF5RXEo
YSwgMiwgYykpOworfQorCisvLyBUZXN0cyBBcnJheUF3YXJlRmluZCgpLgorCitURVNUKEFycmF5
QXdhcmVGaW5kVGVzdCwgV29ya3NGb3JPbmVEaW1lbnNpb25hbEFycmF5KSB7CisgIGNvbnN0IGNo
YXIgYVtdID0gImhlbGxvIjsKKyAgRVhQRUNUX0VRKGEgKyA0LCBBcnJheUF3YXJlRmluZChhLCBh
ICsgNSwgJ28nKSk7CisgIEVYUEVDVF9FUShhICsgNSwgQXJyYXlBd2FyZUZpbmQoYSwgYSArIDUs
ICd4JykpOworfQorCitURVNUKEFycmF5QXdhcmVGaW5kVGVzdCwgV29ya3NGb3JUd29EaW1lbnNp
b25hbEFycmF5KSB7CisgIGludCBhW11bMl0gPSB7IHsgMCwgMSB9LCB7IDIsIDMgfSwgeyA0LCA1
IH0gfTsKKyAgY29uc3QgaW50IGJbMl0gPSB7IDIsIDMgfTsKKyAgRVhQRUNUX0VRKGEgKyAxLCBB
cnJheUF3YXJlRmluZChhLCBhICsgMywgYikpOworCisgIGNvbnN0IGludCBjWzJdID0geyA2LCA3
IH07CisgIEVYUEVDVF9FUShhICsgMywgQXJyYXlBd2FyZUZpbmQoYSwgYSArIDMsIGMpKTsKK30K
KworLy8gVGVzdHMgQ29weUFycmF5KCkuCisKK1RFU1QoQ29weUFycmF5VGVzdCwgV29ya3NGb3JE
ZWdlbmVyYXRlZEFycmF5cykgeworICBpbnQgbiA9IDA7CisgIENvcHlBcnJheSgnYScsICZuKTsK
KyAgRVhQRUNUX0VRKCdhJywgbik7Cit9CisKK1RFU1QoQ29weUFycmF5VGVzdCwgV29ya3NGb3JP
bmVEaW1lbnNpb25hbEFycmF5cykgeworICBjb25zdCBjaGFyIGFbM10gPSAiaGkiOworICBpbnQg
YlszXTsKKyNpZm5kZWYgX19CT1JMQU5EQ19fICAvLyBDKytCdWlsZGVyIGNhbm5vdCBjb21waWxl
IHNvbWUgYXJyYXkgc2l6ZSBkZWR1Y3Rpb25zLgorICBDb3B5QXJyYXkoYSwgJmIpOworICBFWFBF
Q1RfVFJVRShBcnJheUVxKGEsIGIpKTsKKyNlbmRpZgorCisgIGludCBjWzNdOworICBDb3B5QXJy
YXkoYSwgMywgYyk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYykpOworfQorCitURVNUKENv
cHlBcnJheVRlc3QsIFdvcmtzRm9yVHdvRGltZW5zaW9uYWxBcnJheXMpIHsKKyAgY29uc3QgaW50
IGFbMl1bM10gPSB7IHsgMCwgMSwgMiB9LCB7IDMsIDQsIDUgfSB9OworICBpbnQgYlsyXVszXTsK
KyNpZm5kZWYgX19CT1JMQU5EQ19fICAvLyBDKytCdWlsZGVyIGNhbm5vdCBjb21waWxlIHNvbWUg
YXJyYXkgc2l6ZSBkZWR1Y3Rpb25zLgorICBDb3B5QXJyYXkoYSwgJmIpOworICBFWFBFQ1RfVFJV
RShBcnJheUVxKGEsIGIpKTsKKyNlbmRpZgorCisgIGludCBjWzJdWzNdOworICBDb3B5QXJyYXko
YSwgMiwgYyk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYykpOworfQorCisvLyBUZXN0cyBO
YXRpdmVBcnJheS4KKworVEVTVChOYXRpdmVBcnJheVRlc3QsIENvbnN0cnVjdG9yRnJvbUFycmF5
V29ya3MpIHsKKyAgY29uc3QgaW50IGFbM10gPSB7IDAsIDEsIDIgfTsKKyAgTmF0aXZlQXJyYXk8
aW50PiBuYShhLCAzLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOworICBFWFBFQ1RfRVEo
M1UsIG5hLnNpemUoKSk7CisgIEVYUEVDVF9FUShhLCBuYS5iZWdpbigpKTsKK30KKworVEVTVChO
YXRpdmVBcnJheVRlc3QsIENyZWF0ZXNBbmREZWxldGVzQ29weU9mQXJyYXlXaGVuQXNrZWRUbykg
eworICB0eXBlZGVmIGludCBBcnJheVsyXTsKKyAgQXJyYXkqIGEgPSBuZXcgQXJyYXlbMV07Cisg
ICgqYSlbMF0gPSAwOworICAoKmEpWzFdID0gMTsKKyAgTmF0aXZlQXJyYXk8aW50PiBuYSgqYSwg
MiwgUmVsYXRpb25Ub1NvdXJjZUNvcHkoKSk7CisgIEVYUEVDVF9ORSgqYSwgbmEuYmVnaW4oKSk7
CisgIGRlbGV0ZVtdIGE7CisgIEVYUEVDVF9FUSgwLCBuYS5iZWdpbigpWzBdKTsKKyAgRVhQRUNU
X0VRKDEsIG5hLmJlZ2luKClbMV0pOworCisgIC8vIFdlIHJlbHkgb24gdGhlIGhlYXAgY2hlY2tl
ciB0byB2ZXJpZnkgdGhhdCBuYSBkZWxldGVzIHRoZSBjb3B5IG9mCisgIC8vIGFycmF5LgorfQor
CitURVNUKE5hdGl2ZUFycmF5VGVzdCwgVHlwZU1lbWJlcnNBcmVDb3JyZWN0KSB7CisgIFN0YXRp
Y0Fzc2VydFR5cGVFcTxjaGFyLCBOYXRpdmVBcnJheTxjaGFyPjo6dmFsdWVfdHlwZT4oKTsKKyAg
U3RhdGljQXNzZXJ0VHlwZUVxPGludFsyXSwgTmF0aXZlQXJyYXk8aW50WzJdPjo6dmFsdWVfdHlw
ZT4oKTsKKworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgY2hhciosIE5hdGl2ZUFycmF5PGNo
YXI+Ojpjb25zdF9pdGVyYXRvcj4oKTsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGJvb2wo
KilbMl0sIE5hdGl2ZUFycmF5PGJvb2xbMl0+Ojpjb25zdF9pdGVyYXRvcj4oKTsKK30KKworVEVT
VChOYXRpdmVBcnJheVRlc3QsIE1ldGhvZHNXb3JrKSB7CisgIGNvbnN0IGludCBhWzNdID0geyAw
LCAxLCAyIH07CisgIE5hdGl2ZUFycmF5PGludD4gbmEoYSwgMywgUmVsYXRpb25Ub1NvdXJjZUNv
cHkoKSk7CisgIEFTU0VSVF9FUSgzVSwgbmEuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKDMsIG5hLmVu
ZCgpIC0gbmEuYmVnaW4oKSk7CisKKyAgTmF0aXZlQXJyYXk8aW50Pjo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBuYS5iZWdpbigpOworICBFWFBFQ1RfRVEoMCwgKml0KTsKKyAgKytpdDsKKyAgRVhQRUNU
X0VRKDEsICppdCk7CisgIGl0Kys7CisgIEVYUEVDVF9FUSgyLCAqaXQpOworICArK2l0OworICBF
WFBFQ1RfRVEobmEuZW5kKCksIGl0KTsKKworICBFWFBFQ1RfVFJVRShuYSA9PSBuYSk7CisKKyAg
TmF0aXZlQXJyYXk8aW50PiBuYTIoYSwgMywgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgpKTsK
KyAgRVhQRUNUX1RSVUUobmEgPT0gbmEyKTsKKworICBjb25zdCBpbnQgYjFbM10gPSB7IDAsIDEs
IDEgfTsKKyAgY29uc3QgaW50IGIyWzRdID0geyAwLCAxLCAyLCAzIH07CisgIEVYUEVDVF9GQUxT
RShuYSA9PSBOYXRpdmVBcnJheTxpbnQ+KGIxLCAzLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNl
KCkpKTsKKyAgRVhQRUNUX0ZBTFNFKG5hID09IE5hdGl2ZUFycmF5PGludD4oYjIsIDQsIFJlbGF0
aW9uVG9Tb3VyY2VDb3B5KCkpKTsKK30KKworVEVTVChOYXRpdmVBcnJheVRlc3QsIFdvcmtzRm9y
VHdvRGltZW5zaW9uYWxBcnJheSkgeworICBjb25zdCBjaGFyIGFbMl1bM10gPSB7ICJoaSIsICJs
byIgfTsKKyAgTmF0aXZlQXJyYXk8Y2hhclszXT4gbmEoYSwgMiwgUmVsYXRpb25Ub1NvdXJjZVJl
ZmVyZW5jZSgpKTsKKyAgQVNTRVJUX0VRKDJVLCBuYS5zaXplKCkpOworICBFWFBFQ1RfRVEoYSwg
bmEuYmVnaW4oKSk7Cit9CisKKy8vIFRlc3RzIFNraXBQcmVmaXgoKS4KKworVEVTVChTa2lwUHJl
Zml4VGVzdCwgU2tpcHNXaGVuUHJlZml4TWF0Y2hlcykgeworICBjb25zdCBjaGFyKiBjb25zdCBz
dHIgPSAiaGVsbG8iOworCisgIGNvbnN0IGNoYXIqIHAgPSBzdHI7CisgIEVYUEVDVF9UUlVFKFNr
aXBQcmVmaXgoIiIsICZwKSk7CisgIEVYUEVDVF9FUShzdHIsIHApOworCisgIHAgPSBzdHI7Cisg
IEVYUEVDVF9UUlVFKFNraXBQcmVmaXgoImhlbGwiLCAmcCkpOworICBFWFBFQ1RfRVEoc3RyICsg
NCwgcCk7Cit9CisKK1RFU1QoU2tpcFByZWZpeFRlc3QsIERvZXNOb3RTa2lwV2hlblByZWZpeERv
ZXNOb3RNYXRjaCkgeworICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAid29ybGQiOworCisgIGNv
bnN0IGNoYXIqIHAgPSBzdHI7CisgIEVYUEVDVF9GQUxTRShTa2lwUHJlZml4KCJXIiwgJnApKTsK
KyAgRVhQRUNUX0VRKHN0ciwgcCk7CisKKyAgcCA9IHN0cjsKKyAgRVhQRUNUX0ZBTFNFKFNraXBQ
cmVmaXgoIndvcmxkISIsICZwKSk7CisgIEVYUEVDVF9FUShzdHIsIHApOworfQorCisvLyBUZXN0
cyBhZF9ob2NfdGVzdF9yZXN1bHQoKS4KKworY2xhc3MgQWRIb2NUZXN0UmVzdWx0VGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHN0YXRpYyB2b2lkIFNldFVwVGVz
dENhc2UoKSB7CisgICAgRkFJTCgpIDw8ICJBIGZhaWx1cmUgaGFwcGVuZWQgaW5zaWRlIFNldFVw
VGVzdENhc2UoKS4iOworICB9Cit9OworCitURVNUX0YoQWRIb2NUZXN0UmVzdWx0VGVzdCwgQWRI
b2NUZXN0UmVzdWx0Rm9yVGVzdENhc2VTaG93c0ZhaWx1cmUpIHsKKyAgY29uc3QgdGVzdGluZzo6
VGVzdFJlc3VsdCYgdGVzdF9yZXN1bHQgPSB0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2Uo
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmN1cnJl
bnRfdGVzdF9jYXNlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLT5hZF9ob2NfdGVzdF9yZXN1bHQoKTsKKyAgRVhQRUNUX1RSVUUodGVzdF9yZXN1bHQu
RmFpbGVkKCkpOworfQorCitURVNUX0YoQWRIb2NUZXN0UmVzdWx0VGVzdCwgQWRIb2NUZXN0UmVz
dWx0VGVzdEZvclVuaXRUZXN0RG9lc05vdFNob3dGYWlsdXJlKSB7CisgIGNvbnN0IHRlc3Rpbmc6
OlRlc3RSZXN1bHQmIHRlc3RfcmVzdWx0ID0KKyAgICAgIHRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5hZF9ob2NfdGVzdF9yZXN1bHQoKTsKKyAgRVhQRUNUX0ZBTFNFKHRlc3RfcmVz
dWx0LkZhaWxlZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MKaW5kZXggNjY0YmFhZDJhYjg3M2JhMzg4
MTkzYTY1ZDJiNzlmZDgzZGIyZTc3NS4uYTM4ZWJhYzgzOWY3YjRmY2Y3MTA5MzUxYzRkM2ZlY2Rl
MjcxNWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94
bWxfb3V0ZmlsZTFfdGVzdF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MKQEAgLTI3LDEyICsyNywxMCBAQAogLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogLy8KLS8vIEF1dGhvcjoga2VpdGgucmF5QGdtYWlsLmNv
bSAoS2VpdGggUmF5KQotLy8KIC8vIGd0ZXN0X3htbF9vdXRmaWxlMV90ZXN0XyB3cml0ZXMgc29t
ZSB4bWwgdmlhIFRlc3RQcm9wZXJ0eSB1c2VkIGJ5CiAvLyBndGVzdF94bWxfb3V0ZmlsZXNfdGVz
dC5weQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgogCiBjbGFzcyBQcm9wZXJ0eU9uZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICBwcm90ZWN0
ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9v
dXRmaWxlMl90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1s
X291dGZpbGUyX3Rlc3RfLmNjCmluZGV4IDM0MTFhM2QzOGI4NjEwNGM2YTYwYzYwZDExMzFjYjY2
YWE1NGMxOTIuLmFmYWYxNWE1ZGMzMjMxNWQ1MWFjN2EwYTU1NWY4M2NhYjQxZWY3NGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUyX3Rl
c3RfLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZp
bGUyX3Rlc3RfLmNjCkBAIC0yNywxMiArMjcsMTAgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIC8vCi0vLyBBdXRob3I6IGtlaXRoLnJheUBnbWFpbC5jb20gKEtlaXRoIFJheSkK
LS8vCiAvLyBndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8gd3JpdGVzIHNvbWUgeG1sIHZpYSBUZXN0
UHJvcGVydHkgdXNlZCBieQogLy8gZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkKIAotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogY2xhc3MgUHJv
cGVydHlUd28gOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgcHJvdGVjdGVkOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5w
eSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3Qu
cHkKaW5kZXggMGZlOTQ3ZjA4NGM4ZjU2ZjRhZGY1ZDBjOWZhMDI2Y2UyOTk3NWQyYy4uMmMwMzFm
ZjhkYmE1MTJjMmUwNGUyNzA1MzRlMjlmY2ViZTg4NmNmOSAxMDA3NTUKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weQorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5CkBAIC0z
MSwzMSArMzEsMzkgQEAKIAogIiIiVW5pdCB0ZXN0IGZvciB0aGUgZ3Rlc3RfeG1sX291dHB1dCBt
b2R1bGUuIiIiCiAKLV9fYXV0aG9yX18gPSAia2VpdGgucmF5QGdtYWlsLmNvbSAoS2VpdGggUmF5
KSIKLQogaW1wb3J0IG9zCiBmcm9tIHhtbC5kb20gaW1wb3J0IG1pbmlkb20sIE5vZGUKLQogaW1w
b3J0IGd0ZXN0X3Rlc3RfdXRpbHMKIGltcG9ydCBndGVzdF94bWxfdGVzdF91dGlscwogCi0KIEdU
RVNUX09VVFBVVF9TVUJESVIgPSAieG1sX291dGZpbGVzIgogR1RFU1RfT1VUUFVUXzFfVEVTVCA9
ICJndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8iCiBHVEVTVF9PVVRQVVRfMl9URVNUID0gImd0ZXN0
X3htbF9vdXRmaWxlMl90ZXN0XyIKIAogRVhQRUNURURfWE1MXzEgPSAiIiI8P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMgdGVzdHM9IjEiIGZhaWx1cmVz
PSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiBuYW1lPSJBbGxUZXN0cyI+Cis8
dGVzdHN1aXRlcyB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAi
IHRpbWU9IioiIHRpbWVzdGFtcD0iKiIgbmFtZT0iQWxsVGVzdHMiPgogICA8dGVzdHN1aXRlIG5h
bWU9IlByb3BlcnR5T25lIiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJv
cnM9IjAiIHRpbWU9IioiPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJUZXN0U29tZVByb3BlcnRpZXMi
IHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlByb3BlcnR5T25lIiBTZXRVcFByb3A9
IjEiIFRlc3RTb21lUHJvcGVydHk9IjEiIFRlYXJEb3duUHJvcD0iMSIgLz4KKyAgICA8dGVzdGNh
c2UgbmFtZT0iVGVzdFNvbWVQcm9wZXJ0aWVzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3Nu
YW1lPSJQcm9wZXJ0eU9uZSI+CisgICAgICA8cHJvcGVydGllcz4KKyAgICAgICAgPHByb3BlcnR5
IG5hbWU9IlNldFVwUHJvcCIgdmFsdWU9IjEiLz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9IlRl
c3RTb21lUHJvcGVydHkiIHZhbHVlPSIxIi8+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJUZWFy
RG93blByb3AiIHZhbHVlPSIxIi8+CisgICAgICA8L3Byb3BlcnRpZXM+CisgICAgPC90ZXN0Y2Fz
ZT4KICAgPC90ZXN0c3VpdGU+CiA8L3Rlc3RzdWl0ZXM+CiAiIiIKIAogRVhQRUNURURfWE1MXzIg
PSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMg
dGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiBu
YW1lPSJBbGxUZXN0cyI+Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2Fi
bGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiIHRpbWVzdGFtcD0iKiIgbmFtZT0iQWxsVGVzdHMi
PgogICA8dGVzdHN1aXRlIG5hbWU9IlByb3BlcnR5VHdvIiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAi
IGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJU
ZXN0U29tZVByb3BlcnRpZXMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlByb3Bl
cnR5VHdvIiBTZXRVcFByb3A9IjIiIFRlc3RTb21lUHJvcGVydHk9IjIiIFRlYXJEb3duUHJvcD0i
MiIgLz4KKyAgICA8dGVzdGNhc2UgbmFtZT0iVGVzdFNvbWVQcm9wZXJ0aWVzIiBzdGF0dXM9InJ1
biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVR3byI+CisgICAgICA8cHJvcGVydGllcz4K
KyAgICAgICAgPHByb3BlcnR5IG5hbWU9IlNldFVwUHJvcCIgdmFsdWU9IjIiLz4KKyAgICAgICAg
PHByb3BlcnR5IG5hbWU9IlRlc3RTb21lUHJvcGVydHkiIHZhbHVlPSIyIi8+CisgICAgICAgIDxw
cm9wZXJ0eSBuYW1lPSJUZWFyRG93blByb3AiIHZhbHVlPSIyIi8+CisgICAgICA8L3Byb3BlcnRp
ZXM+CisgICAgPC90ZXN0Y2FzZT4KICAgPC90ZXN0c3VpdGU+CiA8L3Rlc3RzdWl0ZXM+CiAiIiIK
QEAgLTEwMywxMSArMTExLDExIEBAIGNsYXNzIEdUZXN0WE1MT3V0RmlsZXNUZXN0KGd0ZXN0X3ht
bF90ZXN0X3V0aWxzLkdUZXN0WE1MVGVzdENhc2UpOgogICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRl
ZCkKICAgICBzZWxmLmFzc2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkKIAotICAgICMgVE9ETyh3
YW5AZ29vZ2xlLmNvbSk6IGxpYnRvb2wgY2F1c2VzIHRoZSBidWlsdCB0ZXN0IGJpbmFyeSB0byBi
ZQorICAgICMgRklYTUU6IGxpYnRvb2wgY2F1c2VzIHRoZSBidWlsdCB0ZXN0IGJpbmFyeSB0byBi
ZQogICAgICMgICBuYW1lZCBsdC1ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8gaW5zdGVhZCBvZgot
ICAgICMgICBndGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8uICBUbyBhY2NvdW50IGZvciB0aGlzIHBv
c3NpYmlsbGl0eSwgd2UKKyAgICAjICAgZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3RfLiAgVG8gYWNj
b3VudCBmb3IgdGhpcyBwb3NzaWJpbGl0eSwgd2UKICAgICAjICAgYWxsb3cgYm90aCBuYW1lcyBp
biB0aGUgZm9sbG93aW5nIGNvZGUuICBXZSBzaG91bGQgcmVtb3ZlIHRoaXMKLSAgICAjICAgaGFj
ayB3aGVuIENoYW5kbGVyIENhcnJ1dGgncyBsaWJ0b29sIHJlcGxhY2VtZW50IHRvb2wgaXMgcmVh
ZHkuCisgICAgIyAgIHdoZW4gbGlidG9vbCByZXBsYWNlbWVudCB0b29sIGlzIHJlYWR5LgogICAg
IG91dHB1dF9maWxlX25hbWUxID0gdGVzdF9uYW1lICsgIi54bWwiCiAgICAgb3V0cHV0X2ZpbGUx
ID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2Rpcl8sIG91dHB1dF9maWxlX25hbWUxKQogICAg
IG91dHB1dF9maWxlX25hbWUyID0gJ2x0LScgKyBvdXRwdXRfZmlsZV9uYW1lMQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0
LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0
ZXN0LnB5CmluZGV4IDZkNDQ5MjljYWNhMDNlYzZmYWU0NDcxZWQxYmExZDQxNmE1ZGZjZTAuLmZh
ZWRkNGU2Y2U3MmRhYmVmNzg2YTMxMmVmNGFlY2E1YzVkMjliZmEgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdC5weQorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3Qu
cHkKQEAgLTMxLDYyICszMSw3NiBAQAogCiAiIiJVbml0IHRlc3QgZm9yIHRoZSBndGVzdF94bWxf
b3V0cHV0IG1vZHVsZSIiIgogCi1fX2F1dGhvcl9fID0gJ2VlZmFjbUBnbWFpbC5jb20gKFNlYW4g
TWNhZmVlKScKLQoraW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgZXJybm8KIGltcG9ydCBvcworaW1w
b3J0IHJlCiBpbXBvcnQgc3lzCiBmcm9tIHhtbC5kb20gaW1wb3J0IG1pbmlkb20sIE5vZGUKIAog
aW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKIGltcG9ydCBndGVzdF94bWxfdGVzdF91dGlscwogCitH
VEVTVF9GSUxURVJfRkxBRyA9ICctLWd0ZXN0X2ZpbHRlcicKK0dURVNUX0xJU1RfVEVTVFNfRkxB
RyA9ICctLWd0ZXN0X2xpc3RfdGVzdHMnCitHVEVTVF9PVVRQVVRfRkxBRyA9ICctLWd0ZXN0X291
dHB1dCcKK0dURVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUgPSAndGVzdF9kZXRhaWwueG1sJworR1RF
U1RfUFJPR1JBTV9OQU1FID0gJ2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfJworCisjIFRoZSBm
bGFnIGluZGljYXRpbmcgc3RhY2t0cmFjZXMgYXJlIG5vdCBzdXBwb3J0ZWQKK05PX1NUQUNLVFJB
Q0VfU1VQUE9SVF9GTEFHID0gJy0tbm9fc3RhY2t0cmFjZV9zdXBwb3J0JwogCi1HVEVTVF9PVVRQ
VVRfRkxBRyAgICAgICAgID0gIi0tZ3Rlc3Rfb3V0cHV0IgotR1RFU1RfREVGQVVMVF9PVVRQVVRf
RklMRSA9ICJ0ZXN0X2RldGFpbC54bWwiCi1HVEVTVF9QUk9HUkFNX05BTUUgPSAiZ3Rlc3RfeG1s
X291dHB1dF91bml0dGVzdF8iCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRlc3Qg
c2hhcmRpbmcuCitUT1RBTF9TSEFSRFNfRU5WX1ZBUiA9ICdHVEVTVF9UT1RBTF9TSEFSRFMnCitT
SEFSRF9JTkRFWF9FTlZfVkFSID0gJ0dURVNUX1NIQVJEX0lOREVYJworU0hBUkRfU1RBVFVTX0ZJ
TEVfRU5WX1ZBUiA9ICdHVEVTVF9TSEFSRF9TVEFUVVNfRklMRScKIAotU1VQUE9SVFNfU1RBQ0tf
VFJBQ0VTID0gRmFsc2UKK1NVUFBPUlRTX1NUQUNLX1RSQUNFUyA9IE5PX1NUQUNLVFJBQ0VfU1VQ
UE9SVF9GTEFHIG5vdCBpbiBzeXMuYXJndgogCiBpZiBTVVBQT1JUU19TVEFDS19UUkFDRVM6Ci0g
IFNUQUNLX1RSQUNFX1RFTVBMQVRFID0gIlxuU3RhY2sgdHJhY2U6XG4qIgorICBTVEFDS19UUkFD
RV9URU1QTEFURSA9ICdcblN0YWNrIHRyYWNlOlxuKicKIGVsc2U6Ci0gIFNUQUNLX1RSQUNFX1RF
TVBMQVRFID0gIiIKKyAgU1RBQ0tfVFJBQ0VfVEVNUExBVEUgPSAnJworICAjIHVuaXR0ZXN0Lm1h
aW4oKSBjYW4ndCBoYW5kbGUgdW5rbm93biBmbGFncworICBzeXMuYXJndi5yZW1vdmUoTk9fU1RB
Q0tUUkFDRV9TVVBQT1JUX0ZMQUcpCiAKIEVYUEVDVEVEX05PTl9FTVBUWV9YTUwgPSAiIiI8P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMgdGVzdHM9IjE1
IiBmYWlsdXJlcz0iNCIgZGlzYWJsZWQ9IjIiIGVycm9ycz0iMCIgdGltZT0iKiIgbmFtZT0iQWxs
VGVzdHMiPgorPHRlc3RzdWl0ZXMgdGVzdHM9IjIzIiBmYWlsdXJlcz0iNCIgZGlzYWJsZWQ9IjIi
IGVycm9ycz0iMCIgdGltZT0iKiIgdGltZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0cyIgYWRfaG9j
X3Byb3BlcnR5PSI0MiI+CiAgIDx0ZXN0c3VpdGUgbmFtZT0iU3VjY2Vzc2Z1bFRlc3QiIHRlc3Rz
PSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CiAgICAg
PHRlc3RjYXNlIG5hbWU9IlN1Y2NlZWRzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1l
PSJTdWNjZXNzZnVsVGVzdCIvPgogICA8L3Rlc3RzdWl0ZT4KICAgPHRlc3RzdWl0ZSBuYW1lPSJG
YWlsZWRUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjEiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAi
IHRpbWU9IioiPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJGYWlscyIgc3RhdHVzPSJydW4iIHRpbWU9
IioiIGNsYXNzbmFtZT0iRmFpbGVkVGVzdCI+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1
ZSBvZjogMiYjeDBBO0V4cGVjdGVkOiAxIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3RfLmNjOioKLVZhbHVlIG9mOiAyCi1FeHBlY3RlZDogMSUoc3RhY2spc11dPjwv
ZmFpbHVyZT4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Imd0ZXN0X3htbF9vdXRwdXRfdW5pdHRl
c3RfLmNjOiomI3gwQTtFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6JiN4MEE7ICAx
JiN4MEE7ICAyIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNj
OioKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICAyJShzdGFjaylz
XV0+PC9mYWlsdXJlPgogICAgIDwvdGVzdGNhc2U+CiAgIDwvdGVzdHN1aXRlPgogICA8dGVzdHN1
aXRlIG5hbWU9Ik1peGVkUmVzdWx0VGVzdCIgdGVzdHM9IjMiIGZhaWx1cmVzPSIxIiBkaXNhYmxl
ZD0iMSIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAgICA8dGVzdGNhc2UgbmFtZT0iU3VjY2VlZHMi
IHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ik1peGVkUmVzdWx0VGVzdCIvPgogICAg
IDx0ZXN0Y2FzZSBuYW1lPSJGYWlscyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0i
TWl4ZWRSZXN1bHRUZXN0Ij4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IlZhbHVlIG9mOiAyJiN4
MEE7RXhwZWN0ZWQ6IDEiIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVz
dF8uY2M6KgotVmFsdWUgb2Y6IDIKLUV4cGVjdGVkOiAxJShzdGFjaylzXV0+PC9mYWlsdXJlPgot
ICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IDMmI3gwQTtFeHBlY3RlZDogMiIgdHlw
ZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCi1WYWx1ZSBvZjog
MwotRXhwZWN0ZWQ6IDIlKHN0YWNrKXNdXT48L2ZhaWx1cmU+CisgICAgICA8ZmFpbHVyZSBtZXNz
YWdlPSJndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqJiN4MEE7RXhwZWN0ZWQgZXF1YWxp
dHkgb2YgdGhlc2UgdmFsdWVzOiYjeDBBOyAgMSYjeDBBOyAgMiIgdHlwZT0iIj48IVtDREFUQVtn
dGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVz
ZSB2YWx1ZXM6CisgIDEKKyAgMiUoc3RhY2spc11dPjwvZmFpbHVyZT4KKyAgICAgIDxmYWlsdXJl
IG1lc3NhZ2U9Imd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOiomI3gwQTtFeHBlY3RlZCBl
cXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6JiN4MEE7ICAyJiN4MEE7ICAzIiB0eXBlPSIiPjwhW0NE
QVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioKK0V4cGVjdGVkIGVxdWFsaXR5IG9m
IHRoZXNlIHZhbHVlczoKKyAgMgorICAzJShzdGFjaylzXV0+PC9mYWlsdXJlPgogICAgIDwvdGVz
dGNhc2U+CiAgICAgPHRlc3RjYXNlIG5hbWU9IkRJU0FCTEVEX3Rlc3QiIHN0YXR1cz0ibm90cnVu
IiB0aW1lPSIqIiBjbGFzc25hbWU9Ik1peGVkUmVzdWx0VGVzdCIvPgogICA8L3Rlc3RzdWl0ZT4K
ICAgPHRlc3RzdWl0ZSBuYW1lPSJYbWxRdW90aW5nVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIx
IiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAgICA8dGVzdGNhc2UgbmFtZT0i
T3V0cHV0c0NEYXRhIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJYbWxRdW90aW5n
VGVzdCI+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJGYWlsZWQmI3gwQTtYTUwgb3V0cHV0OiAm
bHQ7P3htbCBlbmNvZGluZz0mcXVvdDt1dGYtOCZxdW90OyZndDsmbHQ7dG9wJmd0OyZsdDshW0NE
QVRBW2NkYXRhIHRleHRdXSZndDsmbHQ7L3RvcCZndDsiIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3Rf
eG1sX291dHB1dF91bml0dGVzdF8uY2M6KgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iZ3Rlc3Rf
eG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBBO0ZhaWxlZCYjeDBBO1hNTCBvdXRwdXQ6ICZs
dDs/eG1sIGVuY29kaW5nPSZxdW90O3V0Zi04JnF1b3Q7Jmd0OyZsdDt0b3AmZ3Q7Jmx0OyFbQ0RB
VEFbY2RhdGEgdGV4dF1dJmd0OyZsdDsvdG9wJmd0OyIgdHlwZT0iIj48IVtDREFUQVtndGVzdF94
bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCiBGYWlsZWQKIFhNTCBvdXRwdXQ6IDw/eG1sIGVuY29k
aW5nPSJ1dGYtOCI+PHRvcD48IVtDREFUQVtjZGF0YSB0ZXh0XV0+XV0mZ3Q7PCFbQ0RBVEFbPC90
b3A+JShzdGFjaylzXV0+PC9mYWlsdXJlPgogICAgIDwvdGVzdGNhc2U+CiAgIDwvdGVzdHN1aXRl
PgogICA8dGVzdHN1aXRlIG5hbWU9IkludmFsaWRDaGFyYWN0ZXJzVGVzdCIgdGVzdHM9IjEiIGZh
aWx1cmVzPSIxIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAgICA8dGVzdGNh
c2UgbmFtZT0iSW52YWxpZENoYXJhY3RlcnNJbk1lc3NhZ2UiIHN0YXR1cz0icnVuIiB0aW1lPSIq
IiBjbGFzc25hbWU9IkludmFsaWRDaGFyYWN0ZXJzVGVzdCI+Ci0gICAgICA8ZmFpbHVyZSBtZXNz
YWdlPSJGYWlsZWQmI3gwQTtJbnZhbGlkIGNoYXJhY3RlcnMgaW4gYnJhY2tldHMgW10iIHR5cGU9
IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgorICAgICAgPGZhaWx1
cmUgbWVzc2FnZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBBO0ZhaWxlZCYj
eDBBO0ludmFsaWQgY2hhcmFjdGVycyBpbiBicmFja2V0cyBbXSIgdHlwZT0iIj48IVtDREFUQVtn
dGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCiBGYWlsZWQKIEludmFsaWQgY2hhcmFjdGVy
cyBpbiBicmFja2V0cyBbXSUoc3RhY2spc11dPjwvZmFpbHVyZT4KICAgICA8L3Rlc3RjYXNlPgpA
QCAtOTQsNDUgKzEwOCwxNTIgQEAgSW52YWxpZCBjaGFyYWN0ZXJzIGluIGJyYWNrZXRzIFtdJShz
dGFjaylzXV0+PC9mYWlsdXJlPgogICA8dGVzdHN1aXRlIG5hbWU9IkRpc2FibGVkVGVzdCIgdGVz
dHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMSIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAg
ICA8dGVzdGNhc2UgbmFtZT0iRElTQUJMRURfdGVzdF9ub3RfcnVuIiBzdGF0dXM9Im5vdHJ1biIg
dGltZT0iKiIgY2xhc3NuYW1lPSJEaXNhYmxlZFRlc3QiLz4KICAgPC90ZXN0c3VpdGU+Ci0gIDx0
ZXN0c3VpdGUgbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0IiB0ZXN0cz0iNCIgZmFpbHVyZXM9
IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgotICAgIDx0ZXN0Y2FzZSBuYW1l
PSJPbmVQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlS
ZWNvcmRpbmdUZXN0IiBrZXlfMT0iMSIvPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJJbnRWYWx1ZWRQ
cm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNvcmRp
bmdUZXN0IiBrZXlfaW50PSIxIi8+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IlRocmVlUHJvcGVydGll
cyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0
IiBrZXlfMT0iMSIga2V5XzI9IjIiIGtleV8zPSIzIi8+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IlR3
b1ZhbHVlc0Zvck9uZUtleVVzZXNMYXN0VmFsdWUiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFz
c25hbWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCIga2V5XzE9IjIiLz4KKyAgPHRlc3RzdWl0ZSBu
YW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiIHRlc3RzPSI0IiBmYWlsdXJlcz0iMCIgZGlzYWJs
ZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIgU2V0VXBUZXN0Q2FzZT0ieWVzIiBUZWFyRG93blRl
c3RDYXNlPSJheWUiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJPbmVQcm9wZXJ0eSIgc3RhdHVzPSJy
dW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0Ij4KKyAgICAgIDxw
cm9wZXJ0aWVzPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ia2V5XzEiIHZhbHVlPSIxIi8+Cisg
ICAgICA8L3Byb3BlcnRpZXM+CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8dGVzdGNhc2UgbmFtZT0i
SW50VmFsdWVkUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlByb3Bl
cnR5UmVjb3JkaW5nVGVzdCI+CisgICAgICA8cHJvcGVydGllcz4KKyAgICAgICAgPHByb3BlcnR5
IG5hbWU9ImtleV9pbnQiIHZhbHVlPSIxIi8+CisgICAgICA8L3Byb3BlcnRpZXM+CisgICAgPC90
ZXN0Y2FzZT4KKyAgICA8dGVzdGNhc2UgbmFtZT0iVGhyZWVQcm9wZXJ0aWVzIiBzdGF0dXM9InJ1
biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiPgorICAgICAgPHBy
b3BlcnRpZXM+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJrZXlfMSIgdmFsdWU9IjEiLz4KKyAg
ICAgICAgPHByb3BlcnR5IG5hbWU9ImtleV8yIiB2YWx1ZT0iMiIvPgorICAgICAgICA8cHJvcGVy
dHkgbmFtZT0ia2V5XzMiIHZhbHVlPSIzIi8+CisgICAgICA8L3Byb3BlcnRpZXM+CisgICAgPC90
ZXN0Y2FzZT4KKyAgICA8dGVzdGNhc2UgbmFtZT0iVHdvVmFsdWVzRm9yT25lS2V5VXNlc0xhc3RW
YWx1ZSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdU
ZXN0Ij4KKyAgICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ia2V5XzEi
IHZhbHVlPSIyIi8+CisgICAgICA8L3Byb3BlcnRpZXM+CisgICAgPC90ZXN0Y2FzZT4KICAgPC90
ZXN0c3VpdGU+CiAgIDx0ZXN0c3VpdGUgbmFtZT0iTm9GaXh0dXJlVGVzdCIgdGVzdHM9IjMiIGZh
aWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KLSAgICAgPHRlc3Rj
YXNlIG5hbWU9IlJlY29yZFByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1l
PSJOb0ZpeHR1cmVUZXN0IiBrZXk9IjEiLz4KLSAgICAgPHRlc3RjYXNlIG5hbWU9IkV4dGVybmFs
VXRpbGl0eVRoYXRDYWxsc1JlY29yZEludFZhbHVlZFByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGlt
ZT0iKiIgY2xhc3NuYW1lPSJOb0ZpeHR1cmVUZXN0IiBrZXlfZm9yX3V0aWxpdHlfaW50PSIxIi8+
Ci0gICAgIDx0ZXN0Y2FzZSBuYW1lPSJFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRTdHJp
bmdWYWx1ZWRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTm9GaXh0
dXJlVGVzdCIga2V5X2Zvcl91dGlsaXR5X3N0cmluZz0iMSIvPgorICAgICA8dGVzdGNhc2UgbmFt
ZT0iUmVjb3JkUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ik5vRml4
dHVyZVRlc3QiPgorICAgICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICAgPHByb3BlcnR5IG5hbWU9
ImtleSIgdmFsdWU9IjEiLz4KKyAgICAgICA8L3Byb3BlcnRpZXM+CisgICAgIDwvdGVzdGNhc2U+
CisgICAgIDx0ZXN0Y2FzZSBuYW1lPSJFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRJbnRW
YWx1ZWRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTm9GaXh0dXJl
VGVzdCI+CisgICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgICA8cHJvcGVydHkgbmFtZT0ia2V5
X2Zvcl91dGlsaXR5X2ludCIgdmFsdWU9IjEiLz4KKyAgICAgICA8L3Byb3BlcnRpZXM+CisgICAg
IDwvdGVzdGNhc2U+CisgICAgIDx0ZXN0Y2FzZSBuYW1lPSJFeHRlcm5hbFV0aWxpdHlUaGF0Q2Fs
bHNSZWNvcmRTdHJpbmdWYWx1ZWRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNz
bmFtZT0iTm9GaXh0dXJlVGVzdCI+CisgICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgICA8cHJv
cGVydHkgbmFtZT0ia2V5X2Zvcl91dGlsaXR5X3N0cmluZyIgdmFsdWU9IjEiLz4KKyAgICAgICA8
L3Byb3BlcnRpZXM+CisgICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorICA8dGVzdHN1
aXRlIG5hbWU9IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIgdGVzdHM9IjQiIGZhaWx1cmVzPSIwIiBk
aXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iSGFz
VmFsdWVQYXJhbUF0dHJpYnV0ZS8wIiB2YWx1ZV9wYXJhbT0iMzMiIHN0YXR1cz0icnVuIiB0aW1l
PSIqIiBjbGFzc25hbWU9IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIgLz4KKyAgICA8dGVzdGNhc2Ug
bmFtZT0iSGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8xIiB2YWx1ZV9wYXJhbT0iNDIiIHN0YXR1cz0i
cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIgLz4KKyAgICA8
dGVzdGNhc2UgbmFtZT0iQW5vdGhlclRlc3RUaGF0SGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8wIiB2
YWx1ZV9wYXJhbT0iMzMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlNpbmdsZS9W
YWx1ZVBhcmFtVGVzdCIgLz4KKyAgICA8dGVzdGNhc2UgbmFtZT0iQW5vdGhlclRlc3RUaGF0SGFz
VmFsdWVQYXJhbUF0dHJpYnV0ZS8xIiB2YWx1ZV9wYXJhbT0iNDIiIHN0YXR1cz0icnVuIiB0aW1l
PSIqIiBjbGFzc25hbWU9IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIgLz4KKyAgPC90ZXN0c3VpdGU+
CisgIDx0ZXN0c3VpdGUgbmFtZT0iVHlwZWRUZXN0LzAiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIg
ZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNlIG5hbWU9Ikhh
c1R5cGVQYXJhbUF0dHJpYnV0ZSIgdHlwZV9wYXJhbT0iKiIgc3RhdHVzPSJydW4iIHRpbWU9Iioi
IGNsYXNzbmFtZT0iVHlwZWRUZXN0LzAiIC8+CisgIDwvdGVzdHN1aXRlPgorICA8dGVzdHN1aXRl
IG5hbWU9IlR5cGVkVGVzdC8xIiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBl
cnJvcnM9IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNUeXBlUGFyYW1BdHRy
aWJ1dGUiIHR5cGVfcGFyYW09IioiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlR5
cGVkVGVzdC8xIiAvPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJTaW5nbGUv
VHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8wIiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2Fi
bGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNUeXBl
UGFyYW1BdHRyaWJ1dGUiIHR5cGVfcGFyYW09IioiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFz
c25hbWU9IlNpbmdsZS9UeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLzAiIC8+CisgIDwvdGVzdHN1
aXRlPgorICA8dGVzdHN1aXRlIG5hbWU9IlNpbmdsZS9UeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNl
LzEiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0i
KiI+CisgICAgPHRlc3RjYXNlIG5hbWU9Ikhhc1R5cGVQYXJhbUF0dHJpYnV0ZSIgdHlwZV9wYXJh
bT0iKiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1R5cGVQYXJhbWV0
ZXJpemVkVGVzdENhc2UvMSIgLz4KICAgPC90ZXN0c3VpdGU+CiA8L3Rlc3RzdWl0ZXM+IiIiICUg
eydzdGFjayc6IFNUQUNLX1RSQUNFX1RFTVBMQVRFfQogCitFWFBFQ1RFRF9GSUxURVJFRF9URVNU
X1hNTCA9ICIiIjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8dGVzdHN1
aXRlcyB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9
IioiCisgICAgICAgICAgICB0aW1lc3RhbXA9IioiIG5hbWU9IkFsbFRlc3RzIiBhZF9ob2NfcHJv
cGVydHk9IjQyIj4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJTdWNjZXNzZnVsVGVzdCIgdGVzdHM9IjEi
IGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIKKyAgICAgICAgICAgICBlcnJvcnM9IjAiIHRpbWU9
IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJTdWNjZWVkcyIgc3RhdHVzPSJydW4iIHRpbWU9Iioi
IGNsYXNzbmFtZT0iU3VjY2Vzc2Z1bFRlc3QiLz4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rlc3RzdWl0
ZXM+IiIiCisKK0VYUEVDVEVEX1NIQVJERURfVEVTVF9YTUwgPSAiIiI8P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHRlc3RzdWl0ZXMgdGVzdHM9IjMiIGZhaWx1cmVzPSIw
IiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiB0aW1lc3RhbXA9IioiIG5hbWU9IkFs
bFRlc3RzIiBhZF9ob2NfcHJvcGVydHk9IjQyIj4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJTdWNjZXNz
ZnVsVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0
aW1lPSIqIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iU3VjY2VlZHMiIHN0YXR1cz0icnVuIiB0aW1l
PSIqIiBjbGFzc25hbWU9IlN1Y2Nlc3NmdWxUZXN0Ii8+CisgIDwvdGVzdHN1aXRlPgorICA8dGVz
dHN1aXRlIG5hbWU9Ik5vRml4dHVyZVRlc3QiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJs
ZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgIDx0ZXN0Y2FzZSBuYW1lPSJSZWNvcmRQ
cm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTm9GaXh0dXJlVGVzdCI+
CisgICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgICA8cHJvcGVydHkgbmFtZT0ia2V5IiB2YWx1
ZT0iMSIvPgorICAgICAgIDwvcHJvcGVydGllcz4KKyAgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0
c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiB0ZXN0cz0i
MSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgorICAgIDx0
ZXN0Y2FzZSBuYW1lPSJBbm90aGVyVGVzdFRoYXRIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzEiIHZh
bHVlX3BhcmFtPSI0MiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1Zh
bHVlUGFyYW1UZXN0IiAvPgorICA8L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1aXRlcz4iIiIKIAogRVhQ
RUNURURfRU1QVFlfWE1MID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgi
Pz4KLTx0ZXN0c3VpdGVzIHRlc3RzPSIwIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9y
cz0iMCIgdGltZT0iKiIgbmFtZT0iQWxsVGVzdHMiPgorPHRlc3RzdWl0ZXMgdGVzdHM9IjAiIGZh
aWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIgorICAgICAgICAgICAg
dGltZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0cyI+CiA8L3Rlc3RzdWl0ZXM+IiIiCiAKK0dURVNU
X1BST0dSQU1fUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKEdU
RVNUX1BST0dSQU1fTkFNRSkKKworU1VQUE9SVFNfVFlQRURfVEVTVFMgPSAnVHlwZWRUZXN0JyBp
biBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgW0dURVNUX1BST0dSQU1fUEFUSCwg
R1RFU1RfTElTVF9URVNUU19GTEFHXSwgY2FwdHVyZV9zdGRlcnI9RmFsc2UpLm91dHB1dAorCiAK
IGNsYXNzIEdUZXN0WE1MT3V0cHV0VW5pdFRlc3QoZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMuR1Rlc3RY
TUxUZXN0Q2FzZSk6CiAgICIiIgogICBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgWE1MIG91
dHB1dCBmdW5jdGlvbmFsaXR5LgogICAiIiIKIAotICBkZWYgdGVzdE5vbkVtcHR5WG1sT3V0cHV0
KHNlbGYpOgotICAgICIiIgotICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMg
YSBub24tZW1wdHkgWE1MIG91dHB1dCwgYW5kCi0gICAgdGVzdHMgdGhhdCB0aGUgWE1MIG91dHB1
dCBpcyBleHBlY3RlZC4KLSAgICAiIiIKLSAgICBzZWxmLl9UZXN0WG1sT3V0cHV0KEdURVNUX1BS
T0dSQU1fTkFNRSwgRVhQRUNURURfTk9OX0VNUFRZX1hNTCwgMSkKKyAgIyBUaGlzIHRlc3QgY3Vy
cmVudGx5IGJyZWFrcyBvbiBwbGF0Zm9ybXMgdGhhdCBkbyBub3Qgc3VwcG9ydCB0eXBlZCBhbmQK
KyAgIyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIHNvIHdlIGRvbid0IHJ1biBpdCB1bmRlciB0
aGVtLgorICBpZiBTVVBQT1JUU19UWVBFRF9URVNUUzoKKyAgICBkZWYgdGVzdE5vbkVtcHR5WG1s
T3V0cHV0KHNlbGYpOgorICAgICAgIiIiCisgICAgICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRoYXQg
Z2VuZXJhdGVzIGEgbm9uLWVtcHR5IFhNTCBvdXRwdXQsIGFuZAorICAgICAgdGVzdHMgdGhhdCB0
aGUgWE1MIG91dHB1dCBpcyBleHBlY3RlZC4KKyAgICAgICIiIgorICAgICAgc2VsZi5fVGVzdFht
bE91dHB1dChHVEVTVF9QUk9HUkFNX05BTUUsIEVYUEVDVEVEX05PTl9FTVBUWV9YTUwsIDEpCiAK
ICAgZGVmIHRlc3RFbXB0eVhtbE91dHB1dChzZWxmKToKLSAgICAiIiIKKyAgICAiIiJWZXJpZmll
cyBYTUwgb3V0cHV0IGZvciBhIEdvb2dsZSBUZXN0IGJpbmFyeSB3aXRob3V0IGFjdHVhbCB0ZXN0
cy4KKwogICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkgWE1M
IG91dHB1dCwgYW5kCiAgICAgdGVzdHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBleHBlY3RlZC4K
ICAgICAiIiIKIAotICAgIHNlbGYuX1Rlc3RYbWxPdXRwdXQoImd0ZXN0X25vX3Rlc3RfdW5pdHRl
c3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNURURfRU1QVFlfWE1MLCAwKQorICAg
IHNlbGYuX1Rlc3RYbWxPdXRwdXQoJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnLCBFWFBFQ1RFRF9F
TVBUWV9YTUwsIDApCisKKyAgZGVmIHRlc3RUaW1lc3RhbXBWYWx1ZShzZWxmKToKKyAgICAiIiJD
aGVja3Mgd2hldGhlciB0aGUgdGltZXN0YW1wIGF0dHJpYnV0ZSBpbiB0aGUgWE1MIG91dHB1dCBp
cyB2YWxpZC4KKworICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1w
dHkgWE1MIG91dHB1dCwgYW5kIGNoZWNrcyBpZgorICAgIHRoZSB0aW1lc3RhbXAgYXR0cmlidXRl
IGluIHRoZSB0ZXN0c3VpdGVzIHRhZyBpcyB2YWxpZC4KKyAgICAiIiIKKyAgICBhY3R1YWwgPSBz
ZWxmLl9HZXRYbWxPdXRwdXQoJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnLCBbXSwge30sIDApCisg
ICAgZGF0ZV90aW1lX3N0ciA9IGFjdHVhbC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlTm9k
ZSgndGltZXN0YW1wJykudmFsdWUKKyAgICAjIGRhdGV0aW1lLnN0cnB0aW1lKCkgaXMgb25seSBh
dmFpbGFibGUgaW4gUHl0aG9uIDIuNSsgc28gd2UgaGF2ZSB0bworICAgICMgcGFyc2UgdGhlIGV4
cGVjdGVkIGRhdGV0aW1lIG1hbnVhbGx5LgorICAgIG1hdGNoID0gcmUubWF0Y2gocicoXGQrKS0o
XGRcZCktKFxkXGQpVChcZFxkKTooXGRcZCk6KFxkXGQpJywgZGF0ZV90aW1lX3N0cikKKyAgICBz
ZWxmLmFzc2VydFRydWUoCisgICAgICAgIHJlLm1hdGNoLAorICAgICAgICAnWE1MIGRhdGV0dGlt
ZSBzdHJpbmcgJXMgaGFzIGluY29ycmVjdCBmb3JtYXQnICUgZGF0ZV90aW1lX3N0cikKKyAgICBk
YXRlX3RpbWVfZnJvbV94bWwgPSBkYXRldGltZS5kYXRldGltZSgKKyAgICAgICAgeWVhcj1pbnQo
bWF0Y2guZ3JvdXAoMSkpLCBtb250aD1pbnQobWF0Y2guZ3JvdXAoMikpLAorICAgICAgICBkYXk9
aW50KG1hdGNoLmdyb3VwKDMpKSwgaG91cj1pbnQobWF0Y2guZ3JvdXAoNCkpLAorICAgICAgICBt
aW51dGU9aW50KG1hdGNoLmdyb3VwKDUpKSwgc2Vjb25kPWludChtYXRjaC5ncm91cCg2KSkpCisK
KyAgICB0aW1lX2RlbHRhID0gYWJzKGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpIC0gZGF0ZV90aW1l
X2Zyb21feG1sKQorICAgICMgdGltZXN0YW1wIHZhbHVlIHNob3VsZCBiZSBuZWFyIHRoZSBjdXJy
ZW50IGxvY2FsIHRpbWUKKyAgICBzZWxmLmFzc2VydFRydWUodGltZV9kZWx0YSA8IGRhdGV0aW1l
LnRpbWVkZWx0YShzZWNvbmRzPTYwMCksCisgICAgICAgICAgICAgICAgICAgICd0aW1lX2RlbHRh
IGlzICVzJyAlIHRpbWVfZGVsdGEpCisgICAgYWN0dWFsLnVubGluaygpCiAKICAgZGVmIHRlc3RE
ZWZhdWx0T3V0cHV0RmlsZShzZWxmKToKICAgICAiIiIKQEAgLTE0Miw3ICsyNjMsNyBAQCBjbGFz
cyBHVGVzdFhNTE91dHB1dFVuaXRUZXN0KGd0ZXN0X3htbF90ZXN0X3V0aWxzLkdUZXN0WE1MVGVz
dENhc2UpOgogICAgIG91dHB1dF9maWxlID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMu
R2V0VGVtcERpcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX0RFRkFV
TFRfT1VUUFVUX0ZJTEUpCiAgICAgZ3Rlc3RfcHJvZ19wYXRoID0gZ3Rlc3RfdGVzdF91dGlscy5H
ZXRUZXN0RXhlY3V0YWJsZVBhdGgoCi0gICAgICAgICJndGVzdF9ub190ZXN0X3VuaXR0ZXN0IikK
KyAgICAgICAgJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnKQogICAgIHRyeToKICAgICAgIG9zLnJl
bW92ZShvdXRwdXRfZmlsZSkKICAgICBleGNlcHQgT1NFcnJvciwgZToKQEAgLTE1MCw3ICsyNzEs
NyBAQCBjbGFzcyBHVGVzdFhNTE91dHB1dFVuaXRUZXN0KGd0ZXN0X3htbF90ZXN0X3V0aWxzLkdU
ZXN0WE1MVGVzdENhc2UpOgogICAgICAgICByYWlzZQogCiAgICAgcCA9IGd0ZXN0X3Rlc3RfdXRp
bHMuU3VicHJvY2VzcygKLSAgICAgICAgW2d0ZXN0X3Byb2dfcGF0aCwgIiVzPXhtbCIgJSBHVEVT
VF9PVVRQVVRfRkxBR10sCisgICAgICAgIFtndGVzdF9wcm9nX3BhdGgsICclcz14bWwnICUgR1RF
U1RfT1VUUFVUX0ZMQUddLAogICAgICAgICB3b3JraW5nX2Rpcj1ndGVzdF90ZXN0X3V0aWxzLkdl
dFRlbXBEaXIoKSkKICAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCiAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoMCwgcC5leGl0X2NvZGUpCkBAIC0xNjMsNjAgKzI4NCw5OCBAQCBjbGFzcyBHVGVzdFhN
TE91dHB1dFVuaXRUZXN0KGd0ZXN0X3htbF90ZXN0X3V0aWxzLkdUZXN0WE1MVGVzdENhc2UpOgog
ICAgICIiIgogCiAgICAgeG1sX3BhdGggPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5H
ZXRUZW1wRGlyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfUFJPR1JBTV9O
QU1FICsgIm91dC54bWwiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1BST0dS
QU1fTkFNRSArICdvdXQueG1sJykKICAgICBpZiBvcy5wYXRoLmlzZmlsZSh4bWxfcGF0aCk6CiAg
ICAgICBvcy5yZW1vdmUoeG1sX3BhdGgpCiAKLSAgICBndGVzdF9wcm9nX3BhdGggPSBndGVzdF90
ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aChHVEVTVF9QUk9HUkFNX05BTUUpCi0KLSAg
ICBjb21tYW5kID0gW2d0ZXN0X3Byb2dfcGF0aCwKLSAgICAgICAgICAgICAgICIlcz14bWw6JXMi
ICUgKEdURVNUX09VVFBVVF9GTEFHLCB4bWxfcGF0aCksCi0gICAgICAgICAgICAgICAiLS1zaHV0
X2Rvd25feG1sIl0KKyAgICBjb21tYW5kID0gW0dURVNUX1BST0dSQU1fUEFUSCwKKyAgICAgICAg
ICAgICAgICclcz14bWw6JXMnICUgKEdURVNUX09VVFBVVF9GTEFHLCB4bWxfcGF0aCksCisgICAg
ICAgICAgICAgICAnLS1zaHV0X2Rvd25feG1sJ10KICAgICBwID0gZ3Rlc3RfdGVzdF91dGlscy5T
dWJwcm9jZXNzKGNvbW1hbmQpCiAgICAgaWYgcC50ZXJtaW5hdGVkX2J5X3NpZ25hbDoKLSAgICAg
IHNlbGYuYXNzZXJ0XyhGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAiJXMgd2FzIGtpbGxlZCBi
eSBzaWduYWwgJWQiICUgKGd0ZXN0X3Byb2dfbmFtZSwgcC5zaWduYWwpKQorICAgICAgIyBwLnNp
Z25hbCBpcyBhdmFpbGFibGUgb25seSBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsIGlzIFRydWUu
CisgICAgICBzZWxmLmFzc2VydEZhbHNlKAorICAgICAgICAgIHAudGVybWluYXRlZF9ieV9zaWdu
YWwsCisgICAgICAgICAgJyVzIHdhcyBraWxsZWQgYnkgc2lnbmFsICVkJyAlIChHVEVTVF9QUk9H
UkFNX05BTUUsIHAuc2lnbmFsKSkKICAgICBlbHNlOgogICAgICAgc2VsZi5hc3NlcnRfKHAuZXhp
dGVkKQogICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwgcC5leGl0X2NvZGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAiJyVzJyBleGl0ZWQgd2l0aCBjb2RlICVzLCB3aGljaCBkb2Vzbid0IG1h
dGNoICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZXhwZWN0ZWQgZXhpdCBjb2RlICVz
LiIKKyAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgZXhwZWN0ZWQgZXhpdCBjb2RlICVzLicK
ICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvbW1hbmQsIHAuZXhpdF9jb2RlLCAxKSkKIAog
ICAgIHNlbGYuYXNzZXJ0Xyhub3Qgb3MucGF0aC5pc2ZpbGUoeG1sX3BhdGgpKQogCisgIGRlZiB0
ZXN0RmlsdGVyZWRUZXN0WG1sT3V0cHV0KHNlbGYpOgorICAgICIiIlZlcmlmaWVzIFhNTCBvdXRw
dXQgd2hlbiBhIGZpbHRlciBpcyBhcHBsaWVkLgogCi0gIGRlZiBfVGVzdFhtbE91dHB1dChzZWxm
LCBndGVzdF9wcm9nX25hbWUsIGV4cGVjdGVkX3htbCwgZXhwZWN0ZWRfZXhpdF9jb2RlKToKKyAg
ICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRoYXQgZXhlY3V0ZXMgb25seSBzb21lIHRlc3RzIGFuZCB2
ZXJpZmllcyB0aGF0CisgICAgbm9uLXNlbGVjdGVkIHRlc3RzIGRvIG5vdCBzaG93IHVwIGluIHRo
ZSBYTUwgb3V0cHV0LgogICAgICIiIgotICAgIEFzc2VydHMgdGhhdCB0aGUgWE1MIGRvY3VtZW50
IGdlbmVyYXRlZCBieSBydW5uaW5nIHRoZSBwcm9ncmFtCi0gICAgZ3Rlc3RfcHJvZ19uYW1lIG1h
dGNoZXMgZXhwZWN0ZWRfeG1sLCBhIHN0cmluZyBjb250YWluaW5nIGFub3RoZXIKLSAgICBYTUwg
ZG9jdW1lbnQuICBGdXJ0aGVybW9yZSwgdGhlIHByb2dyYW0ncyBleGl0IGNvZGUgbXVzdCBiZQot
ICAgIGV4cGVjdGVkX2V4aXRfY29kZS4KKworICAgIHNlbGYuX1Rlc3RYbWxPdXRwdXQoR1RFU1Rf
UFJPR1JBTV9OQU1FLCBFWFBFQ1RFRF9GSUxURVJFRF9URVNUX1hNTCwgMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGV4dHJhX2FyZ3M9Wyclcz1TdWNjZXNzZnVsVGVzdC4qJyAlIEdURVNUX0ZJ
TFRFUl9GTEFHXSkKKworICBkZWYgdGVzdFNoYXJkZWRUZXN0WG1sT3V0cHV0KHNlbGYpOgorICAg
ICIiIlZlcmlmaWVzIFhNTCBvdXRwdXQgd2hlbiBydW4gdXNpbmcgbXVsdGlwbGUgc2hhcmRzLgor
CisgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGV4ZWN1dGVzIG9ubHkgb25lIHNoYXJkIGFu
ZCB2ZXJpZmllcyB0aGF0IHRlc3RzCisgICAgZnJvbSBvdGhlciBzaGFyZHMgZG8gbm90IHNob3cg
dXAgaW4gdGhlIFhNTCBvdXRwdXQuCisgICAgIiIiCisKKyAgICBzZWxmLl9UZXN0WG1sT3V0cHV0
KAorICAgICAgICBHVEVTVF9QUk9HUkFNX05BTUUsCisgICAgICAgIEVYUEVDVEVEX1NIQVJERURf
VEVTVF9YTUwsCisgICAgICAgIDAsCisgICAgICAgIGV4dHJhX2Vudj17U0hBUkRfSU5ERVhfRU5W
X1ZBUjogJzAnLAorICAgICAgICAgICAgICAgICAgIFRPVEFMX1NIQVJEU19FTlZfVkFSOiAnMTAn
fSkKKworICBkZWYgX0dldFhtbE91dHB1dChzZWxmLCBndGVzdF9wcm9nX25hbWUsIGV4dHJhX2Fy
Z3MsIGV4dHJhX2VudiwKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlKToK
KyAgICAiIiIKKyAgICBSZXR1cm5zIHRoZSB4bWwgb3V0cHV0IGdlbmVyYXRlZCBieSBydW5uaW5n
IHRoZSBwcm9ncmFtIGd0ZXN0X3Byb2dfbmFtZS4KKyAgICBGdXJ0aGVybW9yZSwgdGhlIHByb2dy
YW0ncyBleGl0IGNvZGUgbXVzdCBiZSBleHBlY3RlZF9leGl0X2NvZGUuCiAgICAgIiIiCiAgICAg
eG1sX3BhdGggPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Rlc3RfcHJvZ19uYW1lICsgIm91dC54bWwiKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0ZXN0X3Byb2dfbmFtZSArICdvdXQueG1sJykK
ICAgICBndGVzdF9wcm9nX3BhdGggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxl
UGF0aChndGVzdF9wcm9nX25hbWUpCiAKLSAgICBjb21tYW5kID0gW2d0ZXN0X3Byb2dfcGF0aCwg
IiVzPXhtbDolcyIgJSAoR1RFU1RfT1VUUFVUX0ZMQUcsIHhtbF9wYXRoKV0KLSAgICBwID0gZ3Rl
c3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCisgICAgY29tbWFuZCA9IChbZ3Rlc3Rf
cHJvZ19wYXRoLCAnJXM9eG1sOiVzJyAlIChHVEVTVF9PVVRQVVRfRkxBRywgeG1sX3BhdGgpXSAr
CisgICAgICAgICAgICAgICBleHRyYV9hcmdzKQorICAgIGVudmlyb25fY29weSA9IG9zLmVudmly
b24uY29weSgpCisgICAgaWYgZXh0cmFfZW52OgorICAgICAgZW52aXJvbl9jb3B5LnVwZGF0ZShl
eHRyYV9lbnYpCisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kLCBl
bnY9ZW52aXJvbl9jb3B5KQorCiAgICAgaWYgcC50ZXJtaW5hdGVkX2J5X3NpZ25hbDoKICAgICAg
IHNlbGYuYXNzZXJ0XyhGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAiJXMgd2FzIGtpbGxlZCBi
eSBzaWduYWwgJWQiICUgKGd0ZXN0X3Byb2dfbmFtZSwgcC5zaWduYWwpKQorICAgICAgICAgICAg
ICAgICAgICclcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAlZCcgJSAoZ3Rlc3RfcHJvZ19uYW1lLCBw
LnNpZ25hbCkpCiAgICAgZWxzZToKICAgICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX2V4aXRfY29kZSwgcC5leGl0X2NvZGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAiJyVzJyBleGl0ZWQgd2l0aCBjb2RlICVzLCB3aGljaCBkb2Vz
bid0IG1hdGNoICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZXhwZWN0ZWQgZXhpdCBj
b2RlICVzLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgZXhwZWN0ZWQgZXhpdCBjb2Rl
ICVzLicKICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvbW1hbmQsIHAuZXhpdF9jb2RlLCBl
eHBlY3RlZF9leGl0X2NvZGUpKQorICAgIGFjdHVhbCA9IG1pbmlkb20ucGFyc2UoeG1sX3BhdGgp
CisgICAgcmV0dXJuIGFjdHVhbAogCisgIGRlZiBfVGVzdFhtbE91dHB1dChzZWxmLCBndGVzdF9w
cm9nX25hbWUsIGV4cGVjdGVkX3htbCwKKyAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V4
aXRfY29kZSwgZXh0cmFfYXJncz1Ob25lLCBleHRyYV9lbnY9Tm9uZSk6CisgICAgIiIiCisgICAg
QXNzZXJ0cyB0aGF0IHRoZSBYTUwgZG9jdW1lbnQgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgdGhlIHBy
b2dyYW0KKyAgICBndGVzdF9wcm9nX25hbWUgbWF0Y2hlcyBleHBlY3RlZF94bWwsIGEgc3RyaW5n
IGNvbnRhaW5pbmcgYW5vdGhlcgorICAgIFhNTCBkb2N1bWVudC4gIEZ1cnRoZXJtb3JlLCB0aGUg
cHJvZ3JhbSdzIGV4aXQgY29kZSBtdXN0IGJlCisgICAgZXhwZWN0ZWRfZXhpdF9jb2RlLgorICAg
ICIiIgorCisgICAgYWN0dWFsID0gc2VsZi5fR2V0WG1sT3V0cHV0KGd0ZXN0X3Byb2dfbmFtZSwg
ZXh0cmFfYXJncyBvciBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFf
ZW52IG9yIHt9LCBleHBlY3RlZF9leGl0X2NvZGUpCiAgICAgZXhwZWN0ZWQgPSBtaW5pZG9tLnBh
cnNlU3RyaW5nKGV4cGVjdGVkX3htbCkKLSAgICBhY3R1YWwgICA9IG1pbmlkb20ucGFyc2UoeG1s
X3BhdGgpCiAgICAgc2VsZi5Ob3JtYWxpemVYbWwoYWN0dWFsLmRvY3VtZW50RWxlbWVudCkKICAg
ICBzZWxmLkFzc2VydEVxdWl2YWxlbnROb2RlcyhleHBlY3RlZC5kb2N1bWVudEVsZW1lbnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsLmRvY3VtZW50RWxlbWVudCkKICAg
ICBleHBlY3RlZC51bmxpbmsoKQotICAgIGFjdHVhbCAgLnVubGluaygpCi0KKyAgICBhY3R1YWwu
dW5saW5rKCkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8u
Y2MKaW5kZXggZmMwN2VmNDZiZDY2N2FhOTJlNWRhZjdmMjAyZWZjZDc2MzY2YmY4YS4uMmVlODgz
ODAwNWVlZWMyMzU3MWJhZTM4OWM3OTI2OThjMzBjNGQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNj
CkBAIC0yNyw4ICsyNyw2IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLS8v
IEF1dGhvcjogZWVmYWNtQGdtYWlsLmNvbSAoU2VhbiBNY2FmZWUpCi0KIC8vIFVuaXQgdGVzdCBm
b3IgR29vZ2xlIFRlc3QgWE1MIG91dHB1dC4KIC8vCiAvLyBBIHVzZXIgY2FuIHNwZWNpZnkgWE1M
IG91dHB1dCBpbiBhIEdvb2dsZSBUZXN0IHByb2dyYW0gdG8gcnVuIHZpYQpAQCAtMzgsMTMgKzM2
LDE2IEBACiAvLyBUaGlzIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRob24gdW5p
dCB0ZXN0LiAgRG9uJ3QgcnVuIGl0CiAvLyBkaXJlY3RseS4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogdXNpbmcgOjp0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdDsKIHVzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzOwordXNpbmcg
Ojp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtOwogdXNpbmcgOjp0ZXN0aW5nOjpVbml0VGVzdDsKK3Vz
aW5nIDo6dGVzdGluZzo6VGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6VmFsdWVzOwogCi1jbGFzcyBT
dWNjZXNzZnVsVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIFN1Y2Nlc3NmdWxU
ZXN0IDogcHVibGljIFRlc3QgewogfTsKIAogVEVTVF9GKFN1Y2Nlc3NmdWxUZXN0LCBTdWNjZWVk
cykgewpAQCAtNTIsMTQgKzUzLDE0IEBAIFRFU1RfRihTdWNjZXNzZnVsVGVzdCwgU3VjY2VlZHMp
IHsKICAgQVNTRVJUX0VRKDEsIDEpOwogfQogCi1jbGFzcyBGYWlsZWRUZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgeworY2xhc3MgRmFpbGVkVGVzdCA6IHB1YmxpYyBUZXN0IHsKIH07CiAKIFRF
U1RfRihGYWlsZWRUZXN0LCBGYWlscykgewogICBBU1NFUlRfRVEoMSwgMik7CiB9CiAKLWNsYXNz
IERpc2FibGVkVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIERpc2FibGVkVGVz
dCA6IHB1YmxpYyBUZXN0IHsKIH07CiAKIFRFU1RfRihEaXNhYmxlZFRlc3QsIERJU0FCTEVEX3Rl
c3Rfbm90X3J1bikgewpAQCAtOTEsNyArOTIsMTAgQEAgVEVTVChJbnZhbGlkQ2hhcmFjdGVyc1Rl
c3QsIEludmFsaWRDaGFyYWN0ZXJzSW5NZXNzYWdlKSB7CiAgIEZBSUwoKSA8PCAiSW52YWxpZCBj
aGFyYWN0ZXJzIGluIGJyYWNrZXRzIFtceDFceDJdIjsKIH0KIAotY2xhc3MgUHJvcGVydHlSZWNv
cmRpbmdUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgUHJvcGVydHlSZWNvcmRp
bmdUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0
Q2FzZSgpIHsgUmVjb3JkUHJvcGVydHkoIlNldFVwVGVzdENhc2UiLCAieWVzIik7IH0KKyAgc3Rh
dGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsgUmVjb3JkUHJvcGVydHkoIlRlYXJEb3duVGVz
dENhc2UiLCAiYXllIik7IH0KIH07CiAKIFRFU1RfRihQcm9wZXJ0eVJlY29yZGluZ1Rlc3QsIE9u
ZVByb3BlcnR5KSB7CkBAIC0xMTcsMTIgKzEyMSwxMiBAQCBURVNUKE5vRml4dHVyZVRlc3QsIFJl
Y29yZFByb3BlcnR5KSB7CiAgIFJlY29yZFByb3BlcnR5KCJrZXkiLCAiMSIpOwogfQogCi12b2lk
IEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFByb3BlcnR5KGNvbnN0IGNoYXIqIGtleSwg
aW50IHZhbHVlKSB7Cit2b2lkIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFByb3BlcnR5
KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGludCB2YWx1ZSkgewogICB0ZXN0aW5nOjpUZXN0OjpS
ZWNvcmRQcm9wZXJ0eShrZXksIHZhbHVlKTsKIH0KIAotdm9pZCBFeHRlcm5hbFV0aWxpdHlUaGF0
Q2FsbHNSZWNvcmRQcm9wZXJ0eShjb25zdCBjaGFyKiBrZXksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHZhbHVlKSB7Cit2b2lkIEV4dGVy
bmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiB2YWx1ZSkgewogICB0ZXN0aW5nOjpUZXN0OjpSZWNvcmRQcm9wZXJ0eShrZXksIHZh
bHVlKTsKIH0KIApAQCAtMTM0LDYgKzEzOCwzNSBAQCBURVNUKE5vRml4dHVyZVRlc3QsIEV4dGVy
bmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFN0cmluZ1ZhbHVlZFByb3BlcnR5KSB7CiAgIEV4dGVy
bmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFByb3BlcnR5KCJrZXlfZm9yX3V0aWxpdHlfc3RyaW5n
IiwgIjEiKTsKIH0KIAorLy8gVmVyaWZpZXMgdGhhdCB0aGUgdGVzdCBwYXJhbWV0ZXIgdmFsdWUg
aXMgb3V0cHV0IGluIHRoZSAndmFsdWVfcGFyYW0nCisvLyBYTUwgYXR0cmlidXRlIGZvciB2YWx1
ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorY2xhc3MgVmFsdWVQYXJhbVRlc3QgOiBwdWJsaWMgVGVz
dFdpdGhQYXJhbTxpbnQ+IHt9OworVEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBIYXNWYWx1ZVBhcmFt
QXR0cmlidXRlKSB7fQorVEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBBbm90aGVyVGVzdFRoYXRIYXNW
YWx1ZVBhcmFtQXR0cmlidXRlKSB7fQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2luZ2xlLCBW
YWx1ZVBhcmFtVGVzdCwgVmFsdWVzKDMzLCA0MikpOworCisjaWYgR1RFU1RfSEFTX1RZUEVEX1RF
U1QKKy8vIFZlcmlmaWVzIHRoYXQgdGhlIHR5cGUgcGFyYW1ldGVyIG5hbWUgaXMgb3V0cHV0IGlu
IHRoZSAndHlwZV9wYXJhbScKKy8vIFhNTCBhdHRyaWJ1dGUgZm9yIHR5cGVkIHRlc3RzLgordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFR5cGVkVGVzdCA6IHB1YmxpYyBUZXN0IHt9OwordHlw
ZWRlZiB0ZXN0aW5nOjpUeXBlczxpbnQsIGxvbmc+IFR5cGVkVGVzdFR5cGVzOworVFlQRURfVEVT
VF9DQVNFKFR5cGVkVGVzdCwgVHlwZWRUZXN0VHlwZXMpOworVFlQRURfVEVTVChUeXBlZFRlc3Qs
IEhhc1R5cGVQYXJhbUF0dHJpYnV0ZSkge30KKyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX1RZUEVE
X1RFU1RfUAorLy8gVmVyaWZpZXMgdGhhdCB0aGUgdHlwZSBwYXJhbWV0ZXIgbmFtZSBpcyBvdXRw
dXQgaW4gdGhlICd0eXBlX3BhcmFtJworLy8gWE1MIGF0dHJpYnV0ZSBmb3IgdHlwZS1wYXJhbWV0
ZXJpemVkIHRlc3RzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFR5cGVQYXJhbWV0ZXJp
emVkVGVzdENhc2UgOiBwdWJsaWMgVGVzdCB7fTsKK1RZUEVEX1RFU1RfQ0FTRV9QKFR5cGVQYXJh
bWV0ZXJpemVkVGVzdENhc2UpOworVFlQRURfVEVTVF9QKFR5cGVQYXJhbWV0ZXJpemVkVGVzdENh
c2UsIEhhc1R5cGVQYXJhbUF0dHJpYnV0ZSkge30KK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9Q
KFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UsIEhhc1R5cGVQYXJhbUF0dHJpYnV0ZSk7Cit0eXBl
ZGVmIHRlc3Rpbmc6OlR5cGVzPGludCwgbG9uZz4gVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZVR5
cGVzOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoU2luZ2xlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2VUeXBlcyk7CisjZW5k
aWYKKwogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CiAgIEluaXRHb29nbGVUZXN0
KCZhcmdjLCBhcmd2KTsKIApAQCAtMTQxLDUgKzE3NCw2IEBAIGludCBtYWluKGludCBhcmdjLCBj
aGFyKiogYXJndikgewogICAgIFRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0gVW5pdFRl
c3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpOwogICAgIGRlbGV0ZSBsaXN0ZW5lcnMuUmVs
ZWFzZShsaXN0ZW5lcnMuZGVmYXVsdF94bWxfZ2VuZXJhdG9yKCkpOwogICB9CisgIHRlc3Rpbmc6
OlRlc3Q6OlJlY29yZFByb3BlcnR5KCJhZF9ob2NfcHJvcGVydHkiLCAiNDIiKTsKICAgcmV0dXJu
IFJVTl9BTExfVEVTVFMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X3htbF90ZXN0X3V0aWxzLnB5CmluZGV4IGM4M2MzYjdlYTc5YjJkNzYyZWVkNjY1
ZTJkNjFkZjhiOWVhMDg0NDMuLjFlMDM1ODU5MmZiMDA4NGYwYTg5YzM0MzZmZjc1MTc0ODY4Mjdh
Y2QgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX3Rl
c3RfdXRpbHMucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxf
dGVzdF91dGlscy5weQpAQCAtMSw1ICsxLDMgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwog
IyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMK
QEAgLTMxLDE2ICsyOSwxMSBAQAogCiAiIiJVbml0IHRlc3QgdXRpbGl0aWVzIGZvciBndGVzdF94
bWxfb3V0cHV0IiIiCiAKLV9fYXV0aG9yX18gPSAnZWVmYWNtQGdtYWlsLmNvbSAoU2VhbiBNY2Fm
ZWUpJwotCiBpbXBvcnQgcmUKIGZyb20geG1sLmRvbSBpbXBvcnQgbWluaWRvbSwgTm9kZQotCiBp
bXBvcnQgZ3Rlc3RfdGVzdF91dGlscwogCi0KLUdURVNUX09VVFBVVF9GTEFHICAgICAgICAgPSAi
LS1ndGVzdF9vdXRwdXQiCi1HVEVTVF9ERUZBVUxUX09VVFBVVF9GSUxFID0gInRlc3RfZGV0YWls
LnhtbCIKK0dURVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUgPSAndGVzdF9kZXRhaWwueG1sJwogCiBj
bGFzcyBHVGVzdFhNTFRlc3RDYXNlKGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgogICAiIiIK
QEAgLTU4LDggKzUxLDkgQEAgY2xhc3MgR1Rlc3RYTUxUZXN0Q2FzZShndGVzdF90ZXN0X3V0aWxz
LlRlc3RDYXNlKToKICAgICAqICBJdCBoYXMgdGhlIHNhbWUgdGFnIG5hbWUgYXMgZXhwZWN0ZWRf
bm9kZS4KICAgICAqICBJdCBoYXMgdGhlIHNhbWUgc2V0IG9mIGF0dHJpYnV0ZXMgYXMgZXhwZWN0
ZWRfbm9kZSwgZWFjaCB3aXRoCiAgICAgICAgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIGNvcnJlc3Bv
bmRpbmcgYXR0cmlidXRlIG9mIGV4cGVjdGVkX25vZGUuCi0gICAgICAgQW4gZXhjZXB0aW9uIGlz
IGFueSBhdHRyaWJ1dGUgbmFtZWQgInRpbWUiLCB3aGljaCBuZWVkcyBvbmx5IGJlCi0gICAgICAg
Y29udmVydGlibGUgdG8gYSBmbG9hdGluZy1wb2ludCBudW1iZXIuCisgICAgICAgRXhjZXB0aW9u
cyBhcmUgYW55IGF0dHJpYnV0ZSBuYW1lZCAidGltZSIsIHdoaWNoIG5lZWRzIG9ubHkgYmUKKyAg
ICAgICBjb252ZXJ0aWJsZSB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBhbmQgYW55IGF0dHJp
YnV0ZSBuYW1lZAorICAgICAgICJ0eXBlX3BhcmFtIiB3aGljaCBvbmx5IGhhcyB0byBiZSBub24t
ZW1wdHkuCiAgICAgKiAgSXQgaGFzIGFuIGVxdWl2YWxlbnQgc2V0IG9mIGNoaWxkIG5vZGVzIChp
bmNsdWRpbmcgZWxlbWVudHMgYW5kCiAgICAgICAgQ0RBVEEgc2VjdGlvbnMpIGFzIGV4cGVjdGVk
X25vZGUuICBOb3RlIHRoYXQgd2UgaWdub3JlIHRoZQogICAgICAgIG9yZGVyIG9mIHRoZSBjaGls
ZHJlbiBhcyB0aGV5IGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSBpbiBhbnkKQEAgLTc5LDIzICs3
MywyNyBAQCBjbGFzcyBHVGVzdFhNTFRlc3RDYXNlKGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2Up
OgogICAgIGFjdHVhbF9hdHRyaWJ1dGVzICAgPSBhY3R1YWxfbm9kZSAgLmF0dHJpYnV0ZXMKICAg
ICBzZWxmLmFzc2VydEVxdWFscygKICAgICAgICAgZXhwZWN0ZWRfYXR0cmlidXRlcy5sZW5ndGgs
IGFjdHVhbF9hdHRyaWJ1dGVzLmxlbmd0aCwKLSAgICAgICAgImF0dHJpYnV0ZSBudW1iZXJzIGRp
ZmZlciBpbiBlbGVtZW50ICIgKyBhY3R1YWxfbm9kZS50YWdOYW1lKQorICAgICAgICAnYXR0cmli
dXRlIG51bWJlcnMgZGlmZmVyIGluIGVsZW1lbnQgJXM6XG5FeHBlY3RlZDogJXJcbkFjdHVhbDog
JXInICUgKAorICAgICAgICAgICAgYWN0dWFsX25vZGUudGFnTmFtZSwgZXhwZWN0ZWRfYXR0cmli
dXRlcy5rZXlzKCksCisgICAgICAgICAgICBhY3R1YWxfYXR0cmlidXRlcy5rZXlzKCkpKQogICAg
IGZvciBpIGluIHJhbmdlKGV4cGVjdGVkX2F0dHJpYnV0ZXMubGVuZ3RoKToKICAgICAgIGV4cGVj
dGVkX2F0dHIgPSBleHBlY3RlZF9hdHRyaWJ1dGVzLml0ZW0oaSkKICAgICAgIGFjdHVhbF9hdHRy
ICAgPSBhY3R1YWxfYXR0cmlidXRlcy5nZXQoZXhwZWN0ZWRfYXR0ci5uYW1lKQogICAgICAgc2Vs
Zi5hc3NlcnRfKAogICAgICAgICAgIGFjdHVhbF9hdHRyIGlzIG5vdCBOb25lLAotICAgICAgICAg
ICJleHBlY3RlZCBhdHRyaWJ1dGUgJXMgbm90IGZvdW5kIGluIGVsZW1lbnQgJXMiICUKKyAgICAg
ICAgICAnZXhwZWN0ZWQgYXR0cmlidXRlICVzIG5vdCBmb3VuZCBpbiBlbGVtZW50ICVzJyAlCiAg
ICAgICAgICAgKGV4cGVjdGVkX2F0dHIubmFtZSwgYWN0dWFsX25vZGUudGFnTmFtZSkpCi0gICAg
ICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZF9hdHRyLnZhbHVlLCBhY3R1YWxfYXR0ci52YWx1
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICIgdmFsdWVzIG9mIGF0dHJpYnV0ZSAlcyBpbiBl
bGVtZW50ICVzIGRpZmZlciIgJQotICAgICAgICAgICAgICAgICAgICAgICAgKGV4cGVjdGVkX2F0
dHIubmFtZSwgYWN0dWFsX25vZGUudGFnTmFtZSkpCisgICAgICBzZWxmLmFzc2VydEVxdWFscygK
KyAgICAgICAgICBleHBlY3RlZF9hdHRyLnZhbHVlLCBhY3R1YWxfYXR0ci52YWx1ZSwKKyAgICAg
ICAgICAnIHZhbHVlcyBvZiBhdHRyaWJ1dGUgJXMgaW4gZWxlbWVudCAlcyBkaWZmZXI6ICVzIHZz
ICVzJyAlCisgICAgICAgICAgKGV4cGVjdGVkX2F0dHIubmFtZSwgYWN0dWFsX25vZGUudGFnTmFt
ZSwKKyAgICAgICAgICAgZXhwZWN0ZWRfYXR0ci52YWx1ZSwgYWN0dWFsX2F0dHIudmFsdWUpKQog
CiAgICAgZXhwZWN0ZWRfY2hpbGRyZW4gPSBzZWxmLl9HZXRDaGlsZHJlbihleHBlY3RlZF9ub2Rl
KQogICAgIGFjdHVhbF9jaGlsZHJlbiA9IHNlbGYuX0dldENoaWxkcmVuKGFjdHVhbF9ub2RlKQog
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAogICAgICAgICBsZW4oZXhwZWN0ZWRfY2hpbGRyZW4pLCBs
ZW4oYWN0dWFsX2NoaWxkcmVuKSwKLSAgICAgICAgIm51bWJlciBvZiBjaGlsZCBlbGVtZW50cyBk
aWZmZXIgaW4gZWxlbWVudCAiICsgYWN0dWFsX25vZGUudGFnTmFtZSkKKyAgICAgICAgJ251bWJl
ciBvZiBjaGlsZCBlbGVtZW50cyBkaWZmZXIgaW4gZWxlbWVudCAnICsgYWN0dWFsX25vZGUudGFn
TmFtZSkKICAgICBmb3IgY2hpbGRfaWQsIGNoaWxkIGluIGV4cGVjdGVkX2NoaWxkcmVuLml0ZXJp
dGVtcygpOgogICAgICAgc2VsZi5hc3NlcnRfKGNoaWxkX2lkIGluIGFjdHVhbF9jaGlsZHJlbiwK
ICAgICAgICAgICAgICAgICAgICAnPCVzPiBpcyBub3QgaW4gPCVzPiAoaW4gZWxlbWVudCAlcykn
ICUKQEAgLTEwMywxOSArMTAxLDIyIEBAIGNsYXNzIEdUZXN0WE1MVGVzdENhc2UoZ3Rlc3RfdGVz
dF91dGlscy5UZXN0Q2FzZSk6CiAgICAgICBzZWxmLkFzc2VydEVxdWl2YWxlbnROb2RlcyhjaGls
ZCwgYWN0dWFsX2NoaWxkcmVuW2NoaWxkX2lkXSkKIAogICBpZGVudGlmeWluZ19hdHRyaWJ1dGUg
PSB7Ci0gICAgInRlc3RzdWl0ZXMiOiAibmFtZSIsCi0gICAgInRlc3RzdWl0ZSI6ICJuYW1lIiwK
LSAgICAidGVzdGNhc2UiOiAgIm5hbWUiLAotICAgICJmYWlsdXJlIjogICAibWVzc2FnZSIsCi0g
ICAgfQorICAgICAgJ3Rlc3RzdWl0ZXMnOiAnbmFtZScsCisgICAgICAndGVzdHN1aXRlJzogJ25h
bWUnLAorICAgICAgJ3Rlc3RjYXNlJzogJ25hbWUnLAorICAgICAgJ2ZhaWx1cmUnOiAnbWVzc2Fn
ZScsCisgICAgICAncHJvcGVydHknOiAnbmFtZScsCisgIH0KIAogICBkZWYgX0dldENoaWxkcmVu
KHNlbGYsIGVsZW1lbnQpOgogICAgICIiIgogICAgIEZldGNoZXMgYWxsIG9mIHRoZSBjaGlsZCBu
b2RlcyBvZiBlbGVtZW50LCBhIERPTSBFbGVtZW50IG9iamVjdC4KICAgICBSZXR1cm5zIHRoZW0g
YXMgdGhlIHZhbHVlcyBvZiBhIGRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIElEcyBvZiB0aGUKLSAg
ICBjaGlsZHJlbi4gIEZvciA8dGVzdHN1aXRlcz4sIDx0ZXN0c3VpdGU+IGFuZCA8dGVzdGNhc2U+
IGVsZW1lbnRzLCB0aGUgSUQKLSAgICBpcyB0aGUgdmFsdWUgb2YgdGhlaXIgIm5hbWUiIGF0dHJp
YnV0ZTsgZm9yIDxmYWlsdXJlPiBlbGVtZW50cywgaXQgaXMKLSAgICB0aGUgdmFsdWUgb2YgdGhl
ICJtZXNzYWdlIiBhdHRyaWJ1dGU7IENEQVRBIHNlY3Rpb25zIGFuZCBub24td2hpdGVzcGFjZQor
ICAgIGNoaWxkcmVuLiAgRm9yIDx0ZXN0c3VpdGVzPiwgPHRlc3RzdWl0ZT4sIDx0ZXN0Y2FzZT4s
IGFuZCA8cHJvcGVydHk+CisgICAgZWxlbWVudHMsIHRoZSBJRCBpcyB0aGUgdmFsdWUgb2YgdGhl
aXIgIm5hbWUiIGF0dHJpYnV0ZTsgZm9yIDxmYWlsdXJlPgorICAgIGVsZW1lbnRzLCBpdCBpcyB0
aGUgdmFsdWUgb2YgdGhlICJtZXNzYWdlIiBhdHRyaWJ1dGU7IGZvciA8cHJvcGVydGllcz4KKyAg
ICBlbGVtZW50cywgaXQgaXMgdGhlIHZhbHVlIG9mIHRoZWlyIHBhcmVudCdzICJuYW1lIiBhdHRy
aWJ1dGUgcGx1cyB0aGUKKyAgICBsaXRlcmFsIHN0cmluZyAicHJvcGVydGllcyI7IENEQVRBIHNl
Y3Rpb25zIGFuZCBub24td2hpdGVzcGFjZQogICAgIHRleHQgbm9kZXMgYXJlIGNvbmNhdGVuYXRl
ZCBpbnRvIGEgc2luZ2xlIENEQVRBIHNlY3Rpb24gd2l0aCBJRAogICAgICJkZXRhaWwiLiAgQW4g
ZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiBhbnkgZWxlbWVudCBvdGhlciB0aGFuIHRoZSBhYm92ZQog
ICAgIGZvdXIgaXMgZW5jb3VudGVyZWQsIGlmIHR3byBjaGlsZCBlbGVtZW50cyB3aXRoIHRoZSBz
YW1lIGlkZW50aWZ5aW5nCkBAIC0xMjUsMjEgKzEyNiwyNyBAQCBjbGFzcyBHVGVzdFhNTFRlc3RD
YXNlKGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgogICAgIGNoaWxkcmVuID0ge30KICAgICBm
b3IgY2hpbGQgaW4gZWxlbWVudC5jaGlsZE5vZGVzOgogICAgICAgaWYgY2hpbGQubm9kZVR5cGUg
PT0gTm9kZS5FTEVNRU5UX05PREU6Ci0gICAgICAgIHNlbGYuYXNzZXJ0XyhjaGlsZC50YWdOYW1l
IGluIHNlbGYuaWRlbnRpZnlpbmdfYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgIkVu
Y291bnRlcmVkIHVua25vd24gZWxlbWVudCA8JXM+IiAlIGNoaWxkLnRhZ05hbWUpCi0gICAgICAg
IGNoaWxkSUQgPSBjaGlsZC5nZXRBdHRyaWJ1dGUoc2VsZi5pZGVudGlmeWluZ19hdHRyaWJ1dGVb
Y2hpbGQudGFnTmFtZV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0XyhjaGlsZElEIG5vdCBpbiBjaGls
ZHJlbikKLSAgICAgICAgY2hpbGRyZW5bY2hpbGRJRF0gPSBjaGlsZAorICAgICAgICBpZiBjaGls
ZC50YWdOYW1lID09ICdwcm9wZXJ0aWVzJzoKKyAgICAgICAgICBzZWxmLmFzc2VydF8oY2hpbGQu
cGFyZW50Tm9kZSBpcyBub3QgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgJ0VuY291bnRl
cmVkIDxwcm9wZXJ0aWVzPiBlbGVtZW50IHdpdGhvdXQgYSBwYXJlbnQnKQorICAgICAgICAgIGNo
aWxkX2lkID0gY2hpbGQucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoJ25hbWUnKSArICctcHJvcGVy
dGllcycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICBzZWxmLmFzc2VydF8oY2hpbGQudGFnTmFt
ZSBpbiBzZWxmLmlkZW50aWZ5aW5nX2F0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
J0VuY291bnRlcmVkIHVua25vd24gZWxlbWVudCA8JXM+JyAlIGNoaWxkLnRhZ05hbWUpCisgICAg
ICAgICAgY2hpbGRfaWQgPSBjaGlsZC5nZXRBdHRyaWJ1dGUoCisgICAgICAgICAgICAgIHNlbGYu
aWRlbnRpZnlpbmdfYXR0cmlidXRlW2NoaWxkLnRhZ05hbWVdKQorICAgICAgICBzZWxmLmFzc2Vy
dF8oY2hpbGRfaWQgbm90IGluIGNoaWxkcmVuKQorICAgICAgICBjaGlsZHJlbltjaGlsZF9pZF0g
PSBjaGlsZAogICAgICAgZWxpZiBjaGlsZC5ub2RlVHlwZSBpbiBbTm9kZS5URVhUX05PREUsIE5v
ZGUuQ0RBVEFfU0VDVElPTl9OT0RFXToKLSAgICAgICAgaWYgImRldGFpbCIgbm90IGluIGNoaWxk
cmVuOgorICAgICAgICBpZiAnZGV0YWlsJyBub3QgaW4gY2hpbGRyZW46CiAgICAgICAgICAgaWYg
KGNoaWxkLm5vZGVUeXBlID09IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFIG9yCiAgICAgICAgICAg
ICAgIG5vdCBjaGlsZC5ub2RlVmFsdWUuaXNzcGFjZSgpKToKLSAgICAgICAgICAgIGNoaWxkcmVu
WyJkZXRhaWwiXSA9IGNoaWxkLm93bmVyRG9jdW1lbnQuY3JlYXRlQ0RBVEFTZWN0aW9uKAorICAg
ICAgICAgICAgY2hpbGRyZW5bJ2RldGFpbCddID0gY2hpbGQub3duZXJEb2N1bWVudC5jcmVhdGVD
REFUQVNlY3Rpb24oCiAgICAgICAgICAgICAgICAgY2hpbGQubm9kZVZhbHVlKQogICAgICAgICBl
bHNlOgotICAgICAgICAgIGNoaWxkcmVuWyJkZXRhaWwiXS5ub2RlVmFsdWUgKz0gY2hpbGQubm9k
ZVZhbHVlCisgICAgICAgICAgY2hpbGRyZW5bJ2RldGFpbCddLm5vZGVWYWx1ZSArPSBjaGlsZC5u
b2RlVmFsdWUKICAgICAgIGVsc2U6Ci0gICAgICAgIHNlbGYuZmFpbCgiRW5jb3VudGVyZWQgdW5l
eHBlY3RlZCBub2RlIHR5cGUgJWQiICUgY2hpbGQubm9kZVR5cGUpCisgICAgICAgIHNlbGYuZmFp
bCgnRW5jb3VudGVyZWQgdW5leHBlY3RlZCBub2RlIHR5cGUgJWQnICUgY2hpbGQubm9kZVR5cGUp
CiAgICAgcmV0dXJuIGNoaWxkcmVuCiAKICAgZGVmIE5vcm1hbGl6ZVhtbChzZWxmLCBlbGVtZW50
KToKQEAgLTE1MCwyMyArMTU3LDQwIEBAIGNsYXNzIEdUZXN0WE1MVGVzdENhc2UoZ3Rlc3RfdGVz
dF91dGlscy5UZXN0Q2FzZSk6CiAgICAgKiAgVGhlICJ0aW1lIiBhdHRyaWJ1dGUgb2YgPHRlc3Rz
dWl0ZXM+LCA8dGVzdHN1aXRlPiBhbmQgPHRlc3RjYXNlPgogICAgICAgIGVsZW1lbnRzIGlzIHJl
cGxhY2VkIHdpdGggYSBzaW5nbGUgYXN0ZXJpc2ssIGlmIGl0IGNvbnRhaW5zCiAgICAgICAgb25s
eSBkaWdpdCBjaGFyYWN0ZXJzLgotICAgICogIFRoZSBsaW5lIG51bWJlciByZXBvcnRlZCBpbiB0
aGUgZmlyc3QgbGluZSBvZiB0aGUgIm1lc3NhZ2UiCi0gICAgICAgYXR0cmlidXRlIG9mIDxmYWls
dXJlPiBlbGVtZW50cyBpcyByZXBsYWNlZCB3aXRoIGEgc2luZ2xlIGFzdGVyaXNrLgorICAgICog
IFRoZSAidGltZXN0YW1wIiBhdHRyaWJ1dGUgb2YgPHRlc3RzdWl0ZXM+IGVsZW1lbnRzIGlzIHJl
cGxhY2VkIHdpdGggYQorICAgICAgIHNpbmdsZSBhc3RlcmlzaywgaWYgaXQgY29udGFpbnMgYSB2
YWxpZCBJU084NjAxIGRhdGV0aW1lIHZhbHVlLgorICAgICogIFRoZSAidHlwZV9wYXJhbSIgYXR0
cmlidXRlIG9mIDx0ZXN0Y2FzZT4gZWxlbWVudHMgaXMgcmVwbGFjZWQgd2l0aCBhCisgICAgICAg
c2luZ2xlIGFzdGVyaXNrIChpZiBpdCBzbiBub24tZW1wdHkpIGFzIGl0IGlzIHRoZSB0eXBlIG5h
bWUgcmV0dXJuZWQKKyAgICAgICBieSB0aGUgY29tcGlsZXIgYW5kIGlzIHBsYXRmb3JtIGRlcGVu
ZGVudC4KKyAgICAqICBUaGUgbGluZSBpbmZvIHJlcG9ydGVkIGluIHRoZSBmaXJzdCBsaW5lIG9m
IHRoZSAibWVzc2FnZSIKKyAgICAgICBhdHRyaWJ1dGUgYW5kIENEQVRBIHNlY3Rpb24gb2YgPGZh
aWx1cmU+IGVsZW1lbnRzIGlzIHJlcGxhY2VkIHdpdGggdGhlCisgICAgICAgZmlsZSdzIGJhc2Vu
YW1lIGFuZCBhIHNpbmdsZSBhc3RlcmlzayBmb3IgdGhlIGxpbmUgbnVtYmVyLgogICAgICogIFRo
ZSBkaXJlY3RvcnkgbmFtZXMgaW4gZmlsZSBwYXRocyBhcmUgcmVtb3ZlZC4KICAgICAqICBUaGUg
c3RhY2sgdHJhY2VzIGFyZSByZW1vdmVkLgogICAgICIiIgogCi0gICAgaWYgZWxlbWVudC50YWdO
YW1lIGluICgidGVzdHN1aXRlcyIsICJ0ZXN0c3VpdGUiLCAidGVzdGNhc2UiKToKLSAgICAgIHRp
bWUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoInRpbWUiKQotICAgICAgdGltZS52YWx1ZSA9
IHJlLnN1YihyIl5cZCsoXC5cZCspPyQiLCAiKiIsIHRpbWUudmFsdWUpCi0gICAgZWxpZiBlbGVt
ZW50LnRhZ05hbWUgPT0gImZhaWx1cmUiOgorICAgIGlmIGVsZW1lbnQudGFnTmFtZSA9PSAndGVz
dHN1aXRlcyc6CisgICAgICB0aW1lc3RhbXAgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoJ3Rp
bWVzdGFtcCcpCisgICAgICB0aW1lc3RhbXAudmFsdWUgPSByZS5zdWIocideXGR7NH0tXGRcZC1c
ZFxkVFxkXGQ6XGRcZDpcZFxkJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyon
LCB0aW1lc3RhbXAudmFsdWUpCisgICAgaWYgZWxlbWVudC50YWdOYW1lIGluICgndGVzdHN1aXRl
cycsICd0ZXN0c3VpdGUnLCAndGVzdGNhc2UnKToKKyAgICAgIHRpbWUgPSBlbGVtZW50LmdldEF0
dHJpYnV0ZU5vZGUoJ3RpbWUnKQorICAgICAgdGltZS52YWx1ZSA9IHJlLnN1YihyJ15cZCsoXC5c
ZCspPyQnLCAnKicsIHRpbWUudmFsdWUpCisgICAgICB0eXBlX3BhcmFtID0gZWxlbWVudC5nZXRB
dHRyaWJ1dGVOb2RlKCd0eXBlX3BhcmFtJykKKyAgICAgIGlmIHR5cGVfcGFyYW0gYW5kIHR5cGVf
cGFyYW0udmFsdWU6CisgICAgICAgIHR5cGVfcGFyYW0udmFsdWUgPSAnKicKKyAgICBlbGlmIGVs
ZW1lbnQudGFnTmFtZSA9PSAnZmFpbHVyZSc6CisgICAgICBzb3VyY2VfbGluZV9wYXQgPSByJ14u
KlsvXFxdKC4qOilcZCtcbicKKyAgICAgICMgUmVwbGFjZXMgdGhlIHNvdXJjZSBsaW5lIGluZm9y
bWF0aW9uIHdpdGggYSBub3JtYWxpemVkIGZvcm0uCisgICAgICBtZXNzYWdlID0gZWxlbWVudC5n
ZXRBdHRyaWJ1dGVOb2RlKCdtZXNzYWdlJykKKyAgICAgIG1lc3NhZ2UudmFsdWUgPSByZS5zdWIo
c291cmNlX2xpbmVfcGF0LCAnXFwxKlxuJywgbWVzc2FnZS52YWx1ZSkKICAgICAgIGZvciBjaGls
ZCBpbiBlbGVtZW50LmNoaWxkTm9kZXM6CiAgICAgICAgIGlmIGNoaWxkLm5vZGVUeXBlID09IE5v
ZGUuQ0RBVEFfU0VDVElPTl9OT0RFOgotICAgICAgICAgICMgUmVtb3ZlcyB0aGUgc291cmNlIGxp
bmUgbnVtYmVyLgotICAgICAgICAgIGNkYXRhID0gcmUuc3ViKHIiXi4qWy9cXF0oLio6KVxkK1xu
IiwgIlxcMSpcbiIsIGNoaWxkLm5vZGVWYWx1ZSkKKyAgICAgICAgICAjIFJlcGxhY2VzIHRoZSBz
b3VyY2UgbGluZSBpbmZvcm1hdGlvbiB3aXRoIGEgbm9ybWFsaXplZCBmb3JtLgorICAgICAgICAg
IGNkYXRhID0gcmUuc3ViKHNvdXJjZV9saW5lX3BhdCwgJ1xcMSpcbicsIGNoaWxkLm5vZGVWYWx1
ZSkKICAgICAgICAgICAjIFJlbW92ZXMgdGhlIGFjdHVhbCBzdGFjayB0cmFjZS4KLSAgICAgICAg
ICBjaGlsZC5ub2RlVmFsdWUgPSByZS5zdWIociJcblN0YWNrIHRyYWNlOlxuKC58XG4pKiIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiLCBjZGF0YSkKKyAgICAgICAgICBj
aGlsZC5ub2RlVmFsdWUgPSByZS5zdWIocidTdGFjayB0cmFjZTpcbigufFxuKSonLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU3RhY2sgdHJhY2U6XG4qJywgY2RhdGEpCiAg
ICAgZm9yIGNoaWxkIGluIGVsZW1lbnQuY2hpbGROb2RlczoKICAgICAgIGlmIGNoaWxkLm5vZGVU
eXBlID09IE5vZGUuRUxFTUVOVF9OT0RFOgogICAgICAgICBzZWxmLk5vcm1hbGl6ZVhtbChjaGls
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5jYwppbmRleCA4Yjhh
NDBiNDRlOWI0MWY0YzI5ZDc1NTI2OTA4NTY4YWYyMzc5MTJkLi4wZjY5ZjZkYmQyZTI2YTNhOWJk
Zjc1NmI0ODA3MzdhNGVmNDIxOGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L3Byb2R1Y3Rpb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9w
cm9kdWN0aW9uLmNjCkBAIC0yNiwxMCArMjYsOSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAo
WmhhbnlvbmcgV2FuKQotLy8KLS8vIFRoaXMgaXMgcGFydCBvZiB0aGUgdW5pdCB0ZXN0IGZvciBp
bmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaC4KKy8vIFRoaXMgaXMgcGFydCBvZiB0aGUgdW5pdCB0
ZXN0IGZvciBndGVzdF9wcm9kLmguCiAKICNpbmNsdWRlICJwcm9kdWN0aW9uLmgiCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5oIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9kdWN0aW9uLmgKaW5kZXggOGYxNmZmZmEyNDE2YzU3
MTUzZmFiM2UwOTdkMTM0YWYxZmI0YTliYy4uNTQyNzIzYjcwODczODdkNGZiNTI5ZmMwN2E2ODhi
YzFjOGQ3OGIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9k
dWN0aW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9kdWN0aW9uLmgK
QEAgLTI2LDE1ICsyNiwxNCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KQotLy8KLS8vIFRoaXMgaXMgcGFydCBvZiB0aGUgdW5pdCB0ZXN0IGZvciBpbmNsdWRlL2d0ZXN0
L2d0ZXN0X3Byb2QuaC4KKy8vIFRoaXMgaXMgcGFydCBvZiB0aGUgdW5pdCB0ZXN0IGZvciBndGVz
dF9wcm9kLmguCiAKICNpZm5kZWYgR1RFU1RfVEVTVF9QUk9EVUNUSU9OX0hfCiAjZGVmaW5lIEdU
RVNUX1RFU1RfUFJPRFVDVElPTl9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3RfcHJvZC5oPgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0X3Byb2QuaCIKIAogY2xhc3MgUHJpdmF0ZUNvZGUgewogIHB1
YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3Rz
X3V0aWwucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0c191dGlsLnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5ZTU3OTMxZWJhMmM2MTFlMGExZjYwZmZm
NGYwOTUzOWUxMDc2N2FkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3RzX3V0aWwucHkKKysr
IC9kZXYvbnVsbApAQCAtMSw0NjYgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
IyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiUHJvdmlkZXMg
ZmFjaWxpdGllcyBmb3IgcnVubmluZyBTQ29ucy1idWlsdCBHb29nbGUgVGVzdC9Nb2NrIHRlc3Rz
LiIiIgotCi0KLWltcG9ydCBvcHRwYXJzZQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBz
ZXRzCi1pbXBvcnQgc3lzCi0KLXRyeToKLSAgIyBzdWJyb2Nlc3MgbW9kdWxlIGlzIGEgcHJlZmVy
YWJsZSB3YXkgdG8gaW52b2tlIHN1YnByb2Nlc3NlcyBidXQgaXQgbWF5Ci0gICMgbm90IGJlIGF2
YWlsYWJsZSBvbiBNYWNPUyBYIDEwLjQuCi0gICMgU3VwcHJlc3NlcyB0aGUgJ0ltcG9ydCBub3Qg
YXQgdGhlIHRvcCBvZiB0aGUgZmlsZScgbGludCBjb21wbGFpbnQuCi0gICMgcHlsaW50OiBkaXNh
YmxlLW1zZz1DNjIwNAotICBpbXBvcnQgc3VicHJvY2VzcwotZXhjZXB0IEltcG9ydEVycm9yOgot
ICBzdWJwcm9jZXNzID0gTm9uZQotCi1IRUxQX01TRyA9ICIiIlJ1bnMgdGhlIHNwZWNpZmllZCB0
ZXN0cyBmb3IgJShwcm9qKXMuCi0KLVNZTk9QU0lTCi0gICAgICAgcnVuX3Rlc3RzLnB5IFtPUFRJ
T05dLi4uIFtCVUlMRF9ESVJdLi4uIFtURVNUXS4uLgotCi1ERVNDUklQVElPTgotICAgICAgIFJ1
bnMgdGhlIHNwZWNpZmllZCB0ZXN0cyAoZWl0aGVyIGJpbmFyeSBvciBQeXRob24pLCBhbmQgcHJp
bnRzIGEKLSAgICAgICBzdW1tYXJ5IG9mIHRoZSByZXN1bHRzLiBCVUlMRF9ESVJTIHdpbGwgYmUg
dXNlZCB0byBzZWFyY2ggZm9yIHRoZQotICAgICAgIGJpbmFyaWVzLiBJZiBubyBURVNUcyBhcmUg
c3BlY2lmaWVkLCBhbGwgYmluYXJ5IHRlc3RzIGZvdW5kIGluCi0gICAgICAgQlVJTERfRElScyBh
bmQgYWxsIFB5dGhvbiB0ZXN0cyBmb3VuZCBpbiB0aGUgZGlyZWN0b3J5IHRlc3QvIChpbiB0aGUK
LSAgICAgICAlKHByb2opcyByb290KSBhcmUgcnVuLgotCi0gICAgICAgVEVTVCBpcyBhIG5hbWUg
b2YgZWl0aGVyIGEgYmluYXJ5IG9yIGEgUHl0aG9uIHRlc3QuIEEgYmluYXJ5IHRlc3QgaXMKLSAg
ICAgICBhbiBleGVjdXRhYmxlIGZpbGUgbmFtZWQgKl90ZXN0IG9yICpfdW5pdHRlc3QgKHdpdGgg
dGhlIC5leGUKLSAgICAgICBleHRlbnNpb24gb24gV2luZG93cykgQSBQeXRob24gdGVzdCBpcyBh
IHNjcmlwdCBuYW1lZCAqX3Rlc3QucHkgb3IKLSAgICAgICAqX3VuaXR0ZXN0LnB5LgotCi1PUFRJ
T05TCi0gICAgICAgLWgsIC0taGVscAotICAgICAgICAgICAgICBQcmludCB0aGlzIGhlbHAgbWVz
c2FnZS4KLSAgICAgICAtYyBDT05GSUdVUkFUSU9OUwotICAgICAgICAgICAgICBTcGVjaWZ5IGJ1
aWxkIGRpcmVjdG9yaWVzIHZpYSBidWlsZCBjb25maWd1cmF0aW9ucy4KLSAgICAgICAgICAgICAg
Q09ORklHVVJBVElPTlMgaXMgZWl0aGVyIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYnVpbGQK
LSAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgb3IgJ2FsbCcuIEVhY2ggY29uZmlndXJhdGlv
biBpcyBlcXVpdmFsZW50IHRvCi0gICAgICAgICAgICAgIGFkZGluZyAnc2NvbnMvYnVpbGQvPGNv
bmZpZ3VyYXRpb24+LyUocHJvailzL3Njb25zJyB0byBCVUlMRF9ESVJzLgotICAgICAgICAgICAg
ICBTcGVjaWZ5aW5nIC1jPWFsbCBpcyBlcXVpdmFsZW50IHRvIHByb3ZpZGluZyBhbGwgZGlyZWN0
b3JpZXMKLSAgICAgICAgICAgICAgbGlzdGVkIGluIEtOT1dOIEJVSUxEIERJUkVDVE9SSUVTIHNl
Y3Rpb24gYmVsb3cuCi0gICAgICAgLWEKLSAgICAgICAgICAgICAgRXF1aXZhbGVudCB0byAtYz1h
bGwKLSAgICAgICAtYgotICAgICAgICAgICAgICBFcXVpdmFsZW50IHRvIC1jPWFsbCB3aXRoIHRo
ZSBleGNlcHRpb24gdGhhdCB0aGUgc2NyaXB0IHdpbGwgbm90Ci0gICAgICAgICAgICAgIGZhaWwg
aWYgc29tZSBvZiB0aGUgS05PV04gQlVJTEQgRElSRUNUT1JJRVMgZG8gbm90IGV4aXN0czsgdGhl
Ci0gICAgICAgICAgICAgIHNjcmlwdCB3aWxsIHNpbXBseSBub3QgcnVuIHRoZSB0ZXN0cyB0aGVy
ZS4gJ2InIHN0YW5kcyBmb3IKLSAgICAgICAgICAgICAgJ2J1aWx0IGRpcmVjdG9yaWVzJy4KLQot
UkVUVVJOIFZBTFVFCi0gICAgICAgUmV0dXJucyAwIGlmIGFsbCB0ZXN0cyBhcmUgc3VjY2Vzc2Z1
bDsgb3RoZXJ3aXNlIHJldHVybnMgMS4KLQotRVhBTVBMRVMKLSAgICAgICBydW5fdGVzdHMucHkK
LSAgICAgICAgICAgICAgUnVucyBhbGwgdGVzdHMgZm9yIHRoZSBkZWZhdWx0IGJ1aWxkIGNvbmZp
Z3VyYXRpb24uCi0gICAgICAgcnVuX3Rlc3RzLnB5IC1hCi0gICAgICAgICAgICAgIFJ1bnMgYWxs
IHRlc3RzIHdpdGggYmluYXJpZXMgaW4gS05PV04gQlVJTEQgRElSRUNUT1JJRVMuCi0gICAgICAg
cnVuX3Rlc3RzLnB5IC1iCi0gICAgICAgICAgICAgIFJ1bnMgYWxsIHRlc3RzIGluIEtOT1dOIEJV
SUxEIERJUkVDVE9SSUVTIHRoYXQgaGF2ZSBiZWVuCi0gICAgICAgICAgICAgIGJ1aWx0LgotICAg
ICAgIHJ1bl90ZXN0cy5weSBmb28vCi0gICAgICAgICAgICAgIFJ1bnMgYWxsIHRlc3RzIGluIHRo
ZSBmb28vIGRpcmVjdG9yeSBhbmQgYWxsIFB5dGhvbiB0ZXN0cyBpbgotICAgICAgICAgICAgICB0
aGUgZGlyZWN0b3J5IHRlc3QuIFRoZSBQeXRob24gdGVzdHMgYXJlIGluc3RydWN0ZWQgdG8gbG9v
awotICAgICAgICAgICAgICBmb3IgYmluYXJpZXMgaW4gZm9vLy4KLSAgICAgICBydW5fdGVzdHMu
cHkgYmFyX3Rlc3QuZXhlIHRlc3QvYmF6X3Rlc3QuZXhlIGZvby8gYmFyLwotICAgICAgICAgICAg
ICBSdW5zIGZvby9iYXJfdGVzdC5leGUsIGJhci9iYXJfdGVzdC5leGUsIGZvby9iYXpfdGVzdC5l
eGUsIGFuZAotICAgICAgICAgICAgICBiYXIvYmF6X3Rlc3QuZXhlLgotICAgICAgIHJ1bl90ZXN0
cy5weSBmb28gYmFyIHRlc3QvZm9vX3Rlc3QucHkKLSAgICAgICAgICAgICAgUnVucyB0ZXN0L2Zv
b190ZXN0LnB5IHR3aWNlIGluc3RydWN0aW5nIGl0IHRvIGxvb2sgZm9yIGl0cwotICAgICAgICAg
ICAgICB0ZXN0IGJpbmFyaWVzIGluIHRoZSBkaXJlY3RvcmllcyBmb28gYW5kIGJhciwKLSAgICAg
ICAgICAgICAgY29ycmVzcG9uZGluZ2x5LgotCi1LTk9XTiBCVUlMRCBESVJFQ1RPUklFUwotICAg
ICAgcnVuX3Rlc3RzLnB5IGtub3dzIGFib3V0IGRpcmVjdG9yaWVzIHdoZXJlIHRoZSBTQ29ucyBi
dWlsZCBzY3JpcHQKLSAgICAgIGRlcG9zaXRzIGl0cyBwcm9kdWN0cy4gVGhlc2UgYXJlIHRoZSBk
aXJlY3RvcmllcyB3aGVyZSBydW5fdGVzdHMucHkKLSAgICAgIHdpbGwgYmUgbG9va2luZyBmb3Ig
aXRzIGJpbmFyaWVzLiBDdXJyZW50bHksICUocHJvailzJ3MgU0NvbnN0cnVjdCBmaWxlCi0gICAg
ICBkZWZpbmVzIHRoZW0gYXMgZm9sbG93cyAodGhlIGRlZmF1bHQgYnVpbGQgZGlyZWN0b3J5IGlz
IHRoZSBmaXJzdCBvbmUKLSAgICAgIGxpc3RlZCBpbiBlYWNoIGdyb3VwKToKLSAgICAgIE9uIFdp
bmRvd3M6Ci0gICAgICAgICAgICAgIDwlKHByb2opcyByb290Pi9zY29ucy9idWlsZC93aW4tZGJn
OC8lKHByb2opcy9zY29ucy8KLSAgICAgICAgICAgICAgPCUocHJvailzIHJvb3Q+L3Njb25zL2J1
aWxkL3dpbi1vcHQ4LyUocHJvailzL3Njb25zLwotICAgICAgT24gTWFjOgotICAgICAgICAgICAg
ICA8JShwcm9qKXMgcm9vdD4vc2NvbnMvYnVpbGQvbWFjLWRiZy8lKHByb2opcy9zY29ucy8KLSAg
ICAgICAgICAgICAgPCUocHJvailzIHJvb3Q+L3Njb25zL2J1aWxkL21hYy1vcHQvJShwcm9qKXMv
c2NvbnMvCi0gICAgICBPbiBvdGhlciBwbGF0Zm9ybXM6Ci0gICAgICAgICAgICAgIDwlKHByb2op
cyByb290Pi9zY29ucy9idWlsZC9kYmcvJShwcm9qKXMvc2NvbnMvCi0gICAgICAgICAgICAgIDwl
KHByb2opcyByb290Pi9zY29ucy9idWlsZC9vcHQvJShwcm9qKXMvc2NvbnMvIiIiCi0KLUlTX1dJ
TkRPV1MgPSBvcy5uYW1lID09ICdudCcKLUlTX01BQyA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBhbmQg
b3MudW5hbWUoKVswXSA9PSAnRGFyd2luJwotSVNfQ1lHV0lOID0gb3MubmFtZSA9PSAncG9zaXgn
IGFuZCAnQ1lHV0lOJyBpbiBvcy51bmFtZSgpWzBdCi0KLSMgRGVmaW5pdGlvbiBvZiBDT05GSUdT
IG11c3QgbWF0Y2ggdGhhdCBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5IG5hbWVzIGluIHRoZQotIyBT
Q29uc3RydWN0IHNjcmlwdC4gVGhlIGZpcnN0IGxpc3QgaXRlbSBpcyB0aGUgZGVmYXVsdCBidWls
ZCBjb25maWd1cmF0aW9uLgotaWYgSVNfV0lORE9XUzoKLSAgQ09ORklHUyA9ICgnd2luLWRiZzgn
LCAnd2luLW9wdDgnKQotZWxpZiBJU19NQUM6Ci0gIENPTkZJR1MgPSAoJ21hYy1kYmcnLCAnbWFj
LW9wdCcpCi1lbHNlOgotICBDT05GSUdTID0gKCdkYmcnLCAnb3B0JykKLQotaWYgSVNfV0lORE9X
UyBvciBJU19DWUdXSU46Ci0gIFBZVEhPTl9URVNUX1JFR0VYID0gcmUuY29tcGlsZShyJ18odW5p
dCk/dGVzdFwucHkkJywgcmUuSUdOT1JFQ0FTRSkKLSAgQklOQVJZX1RFU1RfUkVHRVggPSByZS5j
b21waWxlKHInXyh1bml0KT90ZXN0KFwuZXhlKT8kJywgcmUuSUdOT1JFQ0FTRSkKLSAgQklOQVJZ
X1RFU1RfU0VBUkNIX1JFR0VYID0gcmUuY29tcGlsZShyJ18odW5pdCk/dGVzdFwuZXhlJCcsIHJl
LklHTk9SRUNBU0UpCi1lbHNlOgotICBQWVRIT05fVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocidf
KHVuaXQpP3Rlc3RcLnB5JCcpCi0gIEJJTkFSWV9URVNUX1JFR0VYID0gcmUuY29tcGlsZShyJ18o
dW5pdCk/dGVzdCQnKQotICBCSU5BUllfVEVTVF9TRUFSQ0hfUkVHRVggPSBCSU5BUllfVEVTVF9S
RUdFWAotCi0KLWRlZiBfR2V0R3Rlc3RCdWlsZERpcihpbmplY3RlZF9vcywgc2NyaXB0X2Rpciwg
Y29uZmlnKToKLSAgIiIiQ2FsY3VsYXRlcyBwYXRoIHRvIHRoZSBHb29nbGUgVGVzdCBTQ29ucyBi
dWlsZCBkaXJlY3RvcnkuIiIiCi0KLSAgcmV0dXJuIGluamVjdGVkX29zLnBhdGgubm9ybXBhdGgo
aW5qZWN0ZWRfb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NvbnMvYnVpbGQnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmln
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2d0ZXN0L3Njb25zJykpCi0KLQotZGVmIF9HZXRDb25maWdGcm9tQnVpbGREaXIoYnVpbGRf
ZGlyKToKLSAgIiIiRXh0cmFjdHMgdGhlIGNvbmZpZ3VyYXRpb24gbmFtZSBmcm9tIHRoZSBidWls
ZCBkaXJlY3RvcnkuIiIiCi0KLSAgIyBXZSBkb24ndCB3YW50IHRvIGRlcGVuZCBvbiBidWlsZF9k
aXIgY29udGFpbmluZyB0aGUgY29ycmVjdCBwYXRoCi0gICMgc2VwYXJhdG9ycy4KLSAgbSA9IHJl
Lm1hdGNoKHInLipbXFwvXShbXlxcL10rKVtcXC9dW15cXC9dK1tcXC9dc2NvbnNbXFwvXT8kJywg
YnVpbGRfZGlyKQotICBpZiBtOgotICAgIHJldHVybiBtLmdyb3VwKDEpCi0gIGVsc2U6Ci0gICAg
cHJpbnQgPj5zeXMuc3RkZXJyLCAoJyVzIGlzIGFuIGludmFsaWQgYnVpbGQgZGlyZWN0b3J5IHRo
YXQgZG9lcyBub3QgJwotICAgICAgICAgICAgICAgICAgICAgICAgICdjb3JyZXNwb25kIHRvIGFu
eSBjb25maWd1cmF0aW9uLicgJSAoYnVpbGRfZGlyLCkpCi0gICAgcmV0dXJuICcnCi0KLQotIyBB
bGwgcGF0aHMgaW4gdGhpcyBzY3JpcHQgYXJlIGVpdGhlciBhYnNvbHV0ZSBvciByZWxhdGl2ZSB0
byB0aGUgY3VycmVudAotIyB3b3JraW5nIGRpcmVjdG9yeSwgdW5sZXNzIG90aGVyd2lzZSBzcGVj
aWZpZWQuCi1jbGFzcyBUZXN0UnVubmVyKG9iamVjdCk6Ci0gICIiIlByb3ZpZGVzIGZhY2lsaXRp
ZXMgZm9yIHJ1bm5pbmcgUHl0aG9uIGFuZCBiaW5hcnkgdGVzdHMgZm9yIEdvb2dsZSBUZXN0LiIi
IgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLAotICAgICAgICAgICAgICAgc2NyaXB0X2RpciwKLSAg
ICAgICAgICAgICAgIGJ1aWxkX2Rpcl92YXJfbmFtZT0nR1RFU1RfQlVJTERfRElSJywKLSAgICAg
ICAgICAgICAgIGluamVjdGVkX29zPW9zLAotICAgICAgICAgICAgICAgaW5qZWN0ZWRfc3VicHJv
Y2Vzcz1zdWJwcm9jZXNzLAotICAgICAgICAgICAgICAgaW5qZWN0ZWRfYnVpbGRfZGlyX2ZpbmRl
cj1fR2V0R3Rlc3RCdWlsZERpcik6Ci0gICAgIiIiSW5pdGlhbGl6ZXMgYSBUZXN0UnVubmVyIGlu
c3RhbmNlLgotCi0gICAgQXJnczoKLSAgICAgIHNjcmlwdF9kaXI6ICAgICAgICAgICAgICAgIEZp
bGUgcGF0aCB0byB0aGUgY2FsbGluZyBzY3JpcHQuCi0gICAgICBidWlsZF9kaXJfdmFyX25hbWU6
ICAgICAgICBOYW1lIG9mIHRoZSBlbnYgdmFyaWFibGUgdXNlZCB0byBwYXNzIHRoZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIGRpcmVjdG9yeSBwYXRoIHRvIHRo
ZSBpbnZva2VkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cy4KLSAgICAg
IGluamVjdGVkX29zOiAgICAgICAgICAgICAgIHN0YW5kYXJkIG9zIG1vZHVsZSBvciBhIG1vY2sv
c3R1YiBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RpbmcuCi0gICAg
ICBpbmplY3RlZF9zdWJwcm9jZXNzOiAgICAgICBzdGFuZGFyZCBzdWJwcm9jZXNzIG1vZHVsZSBv
ciBhIG1vY2svc3R1YgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRlc3Rp
bmcKLSAgICAgIGluamVjdGVkX2J1aWxkX2Rpcl9maW5kZXI6IGZ1bmN0aW9uIHRoYXQgZGV0ZXJt
aW5lcyB0aGUgcGF0aCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1
aWxkIGRpcmVjdG9yeS4KLSAgICAiIiIKLQotICAgIHNlbGYub3MgPSBpbmplY3RlZF9vcwotICAg
IHNlbGYuc3VicHJvY2VzcyA9IGluamVjdGVkX3N1YnByb2Nlc3MKLSAgICBzZWxmLmJ1aWxkX2Rp
cl9maW5kZXIgPSBpbmplY3RlZF9idWlsZF9kaXJfZmluZGVyCi0gICAgc2VsZi5idWlsZF9kaXJf
dmFyX25hbWUgPSBidWlsZF9kaXJfdmFyX25hbWUKLSAgICBzZWxmLnNjcmlwdF9kaXIgPSBzY3Jp
cHRfZGlyCi0KLSAgZGVmIF9HZXRCdWlsZERpckZvckNvbmZpZyhzZWxmLCBjb25maWcpOgotICAg
ICIiIlJldHVybnMgdGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgYSBnaXZlbiBjb25maWd1cmF0aW9u
LiIiIgotCi0gICAgcmV0dXJuIHNlbGYuYnVpbGRfZGlyX2ZpbmRlcihzZWxmLm9zLCBzZWxmLnNj
cmlwdF9kaXIsIGNvbmZpZykKLQotICBkZWYgX1J1bihzZWxmLCBhcmdzKToKLSAgICAiIiJSdW5z
IHRoZSBleGVjdXRhYmxlIHdpdGggZ2l2ZW4gYXJncyAoYXJnc1swXSBpcyB0aGUgZXhlY3V0YWJs
ZSBuYW1lKS4KLQotICAgIEFyZ3M6Ci0gICAgICBhcmdzOiBDb21tYW5kIGxpbmUgYXJndW1lbnRz
IGZvciB0aGUgcHJvY2Vzcy4KLQotICAgIFJldHVybnM6Ci0gICAgICBQcm9jZXNzJ3MgZXhpdCBj
b2RlIGlmIGl0IGV4aXRzIG5vcm1hbGx5LCBvciAtc2lnbmFsIGlmIHRoZSBwcm9jZXNzIGlzCi0g
ICAgICBraWxsZWQgYnkgYSBzaWduYWwuCi0gICAgIiIiCi0KLSAgICBpZiBzZWxmLnN1YnByb2Nl
c3M6Ci0gICAgICByZXR1cm4gc2VsZi5zdWJwcm9jZXNzLlBvcGVuKGFyZ3MpLndhaXQoKQotICAg
IGVsc2U6Ci0gICAgICByZXR1cm4gc2VsZi5vcy5zcGF3bnYoc2VsZi5vcy5QX1dBSVQsIGFyZ3Nb
MF0sIGFyZ3MpCi0KLSAgZGVmIF9SdW5CaW5hcnlUZXN0KHNlbGYsIHRlc3QpOgotICAgICIiIlJ1
bnMgdGhlIGJpbmFyeSB0ZXN0IGdpdmVuIGl0cyBwYXRoLgotCi0gICAgQXJnczoKLSAgICAgIHRl
c3Q6IFBhdGggdG8gdGhlIHRlc3QgYmluYXJ5LgotCi0gICAgUmV0dXJuczoKLSAgICAgIFByb2Nl
c3MncyBleGl0IGNvZGUgaWYgaXQgZXhpdHMgbm9ybWFsbHksIG9yIC1zaWduYWwgaWYgdGhlIHBy
b2Nlc3MgaXMKLSAgICAgIGtpbGxlZCBieSBhIHNpZ25hbC4KLSAgICAiIiIKLQotICAgIHJldHVy
biBzZWxmLl9SdW4oW3Rlc3RdKQotCi0gIGRlZiBfUnVuUHl0aG9uVGVzdChzZWxmLCB0ZXN0LCBi
dWlsZF9kaXIpOgotICAgICIiIlJ1bnMgdGhlIFB5dGhvbiB0ZXN0IHNjcmlwdCB3aXRoIHRoZSBz
cGVjaWZpZWQgYnVpbGQgZGlyZWN0b3J5LgotCi0gICAgQXJnczoKLSAgICAgIHRlc3Q6IFBhdGgg
dG8gdGhlIHRlc3QncyBQeXRob24gc2NyaXB0LgotICAgICAgYnVpbGRfZGlyOiBQYXRoIHRvIHRo
ZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHRlc3QgYmluYXJ5IGlzIHRvIGJlIGZvdW5kLgotCi0gICAg
UmV0dXJuczoKLSAgICAgIFByb2Nlc3MncyBleGl0IGNvZGUgaWYgaXQgZXhpdHMgbm9ybWFsbHks
IG9yIC1zaWduYWwgaWYgdGhlIHByb2Nlc3MgaXMKLSAgICAgIGtpbGxlZCBieSBhIHNpZ25hbC4K
LSAgICAiIiIKLQotICAgIG9sZF9idWlsZF9kaXIgPSBzZWxmLm9zLmVudmlyb24uZ2V0KHNlbGYu
YnVpbGRfZGlyX3Zhcl9uYW1lKQotCi0gICAgdHJ5OgotICAgICAgc2VsZi5vcy5lbnZpcm9uW3Nl
bGYuYnVpbGRfZGlyX3Zhcl9uYW1lXSA9IGJ1aWxkX2RpcgotCi0gICAgICAjIElmIHRoaXMgc2Ny
aXB0IGlzIHJ1biBvbiBhIFdpbmRvd3MgbWFjaGluZSB0aGF0IGhhcyBubyBhc3NvY2lhdGlvbgot
ICAgICAgIyBiZXR3ZWVuIHRoZSAucHkgZXh0ZW5zaW9uIGFuZCBhIHB5dGhvbiBpbnRlcnByZXRl
ciwgc2ltcGx5IHBhc3NpbmcKLSAgICAgICMgdGhlIHNjcmlwdCBuYW1lIGludG8gc3VicHJvY2Vz
cy5Qb3Blbi9vcy5zcGF3biB3aWxsIG5vdCB3b3JrLgotICAgICAgcHJpbnQgJ1J1bm5pbmcgJXMg
LiAuIC4nICUgKHRlc3QsKQotICAgICAgcmV0dXJuIHNlbGYuX1J1bihbc3lzLmV4ZWN1dGFibGUs
IHRlc3RdKQotCi0gICAgZmluYWxseToKLSAgICAgIGlmIG9sZF9idWlsZF9kaXIgaXMgTm9uZToK
LSAgICAgICAgZGVsIHNlbGYub3MuZW52aXJvbltzZWxmLmJ1aWxkX2Rpcl92YXJfbmFtZV0KLSAg
ICAgIGVsc2U6Ci0gICAgICAgIHNlbGYub3MuZW52aXJvbltzZWxmLmJ1aWxkX2Rpcl92YXJfbmFt
ZV0gPSBvbGRfYnVpbGRfZGlyCi0KLSAgZGVmIF9GaW5kRmlsZXNCeVJlZ2V4KHNlbGYsIGRpcmVj
dG9yeSwgcmVnZXgpOgotICAgICIiIlJldHVybnMgZmlsZXMgaW4gYSBkaXJlY3Rvcnkgd2hvc2Ug
bmFtZXMgbWF0Y2ggYSByZWd1bGFyIGV4cHJlc3Npb24uCi0KLSAgICBBcmdzOgotICAgICAgZGly
ZWN0b3J5OiBQYXRoIHRvIHRoZSBkaXJlY3RvcnkgdG8gc2VhcmNoIGZvciBmaWxlcy4KLSAgICAg
IHJlZ2V4OiBSZWd1bGFyIGV4cHJlc3Npb24gdG8gZmlsdGVyIGZpbGUgbmFtZXMuCi0KLSAgICBS
ZXR1cm5zOgotICAgICAgVGhlIGxpc3Qgb2YgdGhlIHBhdGhzIHRvIHRoZSBmaWxlcyBpbiB0aGUg
ZGlyZWN0b3J5LgotICAgICIiIgotCi0gICAgcmV0dXJuIFtzZWxmLm9zLnBhdGguam9pbihkaXJl
Y3RvcnksIGZpbGVfbmFtZSkKLSAgICAgICAgICAgIGZvciBmaWxlX25hbWUgaW4gc2VsZi5vcy5s
aXN0ZGlyKGRpcmVjdG9yeSkKLSAgICAgICAgICAgIGlmIHJlLnNlYXJjaChyZWdleCwgZmlsZV9u
YW1lKV0KLQotICAjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEltcGxlbWVudCBwYXJzaW5nIG9m
IHNjb25zL1NDb25zY3JpcHQgdG8gcnVuIGFsbAotICAjIHRlc3RzIGRlZmluZWQgdGhlcmUgd2hl
biBubyB0ZXN0cyBhcmUgc3BlY2lmaWVkLgotICAjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IFVw
ZGF0ZSB0aGUgZG9jc3RyaW5nIGFmdGVyIHRoZSBjb2RlIGlzIGNoYW5nZWQgdG8KLSAgIyB0cnkg
dG8gdGVzdCBhbGwgYnVpbGRzIGRlZmluZWQgaW4gc2NvbnMvU0NvbnNjcmlwdC4KLSAgZGVmIEdl
dFRlc3RzVG9SdW4oc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgYXJncywKLSAgICAgICAgICAg
ICAgICAgICAgbmFtZWRfY29uZmlndXJhdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgIGJ1aWx0
X2NvbmZpZ3VyYXRpb25zLAotICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJh
dGlvbnM9Q09ORklHUywKLSAgICAgICAgICAgICAgICAgICAgcHl0aG9uX3Rlc3RzX3RvX3NraXA9
Tm9uZSk6Ci0gICAgIiIiRGV0ZXJtaW5lcyB3aGF0IHRlc3RzIHNob3VsZCBiZSBydW4uCi0KLSAg
ICBBcmdzOgotICAgICAgYXJnczogVGhlIGxpc3Qgb2Ygbm9uLW9wdGlvbiBhcmd1bWVudHMgZnJv
bSB0aGUgY29tbWFuZCBsaW5lLgotICAgICAgbmFtZWRfY29uZmlndXJhdGlvbnM6IFRoZSBsaXN0
IG9mIGNvbmZpZ3VyYXRpb25zIHNwZWNpZmllZCB2aWEgLWMgb3IgLWEuCi0gICAgICBidWlsdF9j
b25maWd1cmF0aW9uczogVHJ1ZSBpZiAtYiBoYXMgYmVlbiBzcGVjaWZpZWQuCi0gICAgICBhdmFp
bGFibGVfY29uZmlndXJhdGlvbnM6IGEgbGlzdCBvZiBjb25maWd1cmF0aW9ucyBhdmFpbGFibGUg
b24gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCBwbGF0Zm9ybSwgaW5q
ZWN0YWJsZSBmb3IgdGVzdGluZy4KLSAgICAgIHB5dGhvbl90ZXN0c190b19za2lwOiBhIGNvbGxl
Y3Rpb24gb2YgKGNvbmZpZ3VyYXRpb24sIHB5dGhvbiB0ZXN0IG5hbWUpcwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoYXQgbmVlZCB0byBiZSBza2lwcGVkLgotCi0gICAgUmV0dXJuczoK
LSAgICAgIEEgdHVwbGUgd2l0aCAyIGVsZW1lbnRzOiB0aGUgbGlzdCBvZiBQeXRob24gdGVzdHMg
dG8gcnVuIGFuZCB0aGUgbGlzdCBvZgotICAgICAgYmluYXJ5IHRlc3RzIHRvIHJ1bi4KLSAgICAi
IiIKLQotICAgIGlmIG5hbWVkX2NvbmZpZ3VyYXRpb25zID09ICdhbGwnOgotICAgICAgbmFtZWRf
Y29uZmlndXJhdGlvbnMgPSAnLCcuam9pbihhdmFpbGFibGVfY29uZmlndXJhdGlvbnMpCi0KLSAg
ICBub3JtYWxpemVkX2FyZ3MgPSBbc2VsZi5vcy5wYXRoLm5vcm1wYXRoKGFyZykgZm9yIGFyZyBp
biBhcmdzXQotCi0gICAgIyBBIGZpbmFsIGxpc3Qgb2YgYnVpbGQgZGlyZWN0b3JpZXMgd2hpY2gg
d2lsbCBiZSBzZWFyY2hlZCBmb3IgdGhlIHRlc3QKLSAgICAjIGJpbmFyaWVzLiBGaXJzdCwgYWRk
IGRpcmVjdG9yaWVzIHNwZWNpZmllZCBkaXJlY3RseSBvbiB0aGUgY29tbWFuZAotICAgICMgbGlu
ZS4KLSAgICBidWlsZF9kaXJzID0gZmlsdGVyKHNlbGYub3MucGF0aC5pc2Rpciwgbm9ybWFsaXpl
ZF9hcmdzKQotCi0gICAgIyBBZGRzIGJ1aWxkIGRpcmVjdG9yaWVzIHNwZWNpZmllZCB2aWEgdGhl
aXIgYnVpbGQgY29uZmlndXJhdGlvbnMgdXNpbmcKLSAgICAjIHRoZSAtYyBvciAtYSBvcHRpb25z
LgotICAgIGlmIG5hbWVkX2NvbmZpZ3VyYXRpb25zOgotICAgICAgYnVpbGRfZGlycyArPSBbc2Vs
Zi5fR2V0QnVpbGREaXJGb3JDb25maWcoY29uZmlnKQotICAgICAgICAgICAgICAgICAgICAgZm9y
IGNvbmZpZyBpbiBuYW1lZF9jb25maWd1cmF0aW9ucy5zcGxpdCgnLCcpXQotCi0gICAgIyBBZGRz
IEtOT1dOIEJVSUxEIERJUkVDVE9SSUVTIGlmIC1iIGlzIHNwZWNpZmllZC4KLSAgICBpZiBidWls
dF9jb25maWd1cmF0aW9uczoKLSAgICAgIGJ1aWxkX2RpcnMgKz0gW3NlbGYuX0dldEJ1aWxkRGly
Rm9yQ29uZmlnKGNvbmZpZykKLSAgICAgICAgICAgICAgICAgICAgIGZvciBjb25maWcgaW4gYXZh
aWxhYmxlX2NvbmZpZ3VyYXRpb25zCi0gICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLm9zLnBh
dGguaXNkaXIoc2VsZi5fR2V0QnVpbGREaXJGb3JDb25maWcoY29uZmlnKSldCi0KLSAgICAjIElm
IG5vIGRpcmVjdG9yaWVzIHdlcmUgc3BlY2lmaWVkIGVpdGhlciB2aWEgLWEsIC1iLCAtYywgb3Ig
ZGlyZWN0bHksIHVzZQotICAgICMgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbi4KLSAgICBlbGlm
IG5vdCBidWlsZF9kaXJzOgotICAgICAgYnVpbGRfZGlycyA9IFtzZWxmLl9HZXRCdWlsZERpckZv
ckNvbmZpZyhhdmFpbGFibGVfY29uZmlndXJhdGlvbnNbMF0pXQotCi0gICAgIyBNYWtlcyBzdXJl
IHRoZXJlIGFyZSBubyBkdXBsaWNhdGlvbnMuCi0gICAgYnVpbGRfZGlycyA9IHNldHMuU2V0KGJ1
aWxkX2RpcnMpCi0KLSAgICBlcnJvcnNfZm91bmQgPSBGYWxzZQotICAgIGxpc3RlZF9weXRob25f
dGVzdHMgPSBbXSAgIyBBbGwgUHl0aG9uIHRlc3RzIGxpc3RlZCBvbiB0aGUgY29tbWFuZCBsaW5l
LgotICAgIGxpc3RlZF9iaW5hcnlfdGVzdHMgPSBbXSAgIyBBbGwgYmluYXJ5IHRlc3RzIGxpc3Rl
ZCBvbiB0aGUgY29tbWFuZCBsaW5lLgotCi0gICAgdGVzdF9kaXIgPSBzZWxmLm9zLnBhdGgubm9y
bXBhdGgoc2VsZi5vcy5wYXRoLmpvaW4oc2VsZi5zY3JpcHRfZGlyLCAndGVzdCcpKQotCi0gICAg
IyBTaWZ0cyB0aHJvdWdoIG5vbi1kaXJlY3RvcnkgYXJndW1lbnRzIGZpc2hpbmcgZm9yIGFueSBQ
eXRob24gb3IgYmluYXJ5Ci0gICAgIyB0ZXN0cyBhbmQgZGV0ZWN0aW5nIGVycm9ycy4KLSAgICBm
b3IgYXJndW1lbnQgaW4gc2V0cy5TZXQobm9ybWFsaXplZF9hcmdzKSAtIGJ1aWxkX2RpcnM6Ci0g
ICAgICBpZiByZS5zZWFyY2goUFlUSE9OX1RFU1RfUkVHRVgsIGFyZ3VtZW50KToKLSAgICAgICAg
cHl0aG9uX3BhdGggPSBzZWxmLm9zLnBhdGguam9pbih0ZXN0X2RpciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9zLnBhdGguYmFzZW5hbWUoYXJndW1lbnQp
KQotICAgICAgICBpZiBzZWxmLm9zLnBhdGguaXNmaWxlKHB5dGhvbl9wYXRoKToKLSAgICAgICAg
ICBsaXN0ZWRfcHl0aG9uX3Rlc3RzLmFwcGVuZChweXRob25fcGF0aCkKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdVbmFibGUgdG8gZmluZCBQeXRob24gdGVzdCAl
cycgJSBhcmd1bWVudCkKLSAgICAgICAgICBlcnJvcnNfZm91bmQgPSBUcnVlCi0gICAgICBlbGlm
IHJlLnNlYXJjaChCSU5BUllfVEVTVF9SRUdFWCwgYXJndW1lbnQpOgotICAgICAgICAjIFRoaXMg
c2NyaXB0IGFsc28gYWNjZXB0cyBiaW5hcnkgdGVzdCBuYW1lcyBwcmVmaXhlZCB3aXRoIHRlc3Qv
IGZvcgotICAgICAgICAjIHRoZSBjb252ZW5pZW5jZSBvZiB0eXBpbmcgdGhlbSAoY2FuIHVzZSBw
YXRoIGNvbXBsZXRpb25zIGluIHRoZQotICAgICAgICAjIHNoZWxsKS4gIFN0cmlwcyB0ZXN0LyBw
cmVmaXggZnJvbSB0aGUgYmluYXJ5IHRlc3QgbmFtZXMuCi0gICAgICAgIGxpc3RlZF9iaW5hcnlf
dGVzdHMuYXBwZW5kKHNlbGYub3MucGF0aC5iYXNlbmFtZShhcmd1bWVudCkpCi0gICAgICBlbHNl
OgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCclcyBpcyBuZWl0aGVyIHRlc3Qgbm9yIGJ1aWxk
IGRpcmVjdG9yeScgJSBhcmd1bWVudCkKLSAgICAgICAgZXJyb3JzX2ZvdW5kID0gVHJ1ZQotCi0g
ICAgaWYgZXJyb3JzX2ZvdW5kOgotICAgICAgcmV0dXJuIE5vbmUKLQotICAgIHVzZXJfaGFzX2xp
c3RlZF90ZXN0cyA9IGxpc3RlZF9weXRob25fdGVzdHMgb3IgbGlzdGVkX2JpbmFyeV90ZXN0cwot
Ci0gICAgaWYgdXNlcl9oYXNfbGlzdGVkX3Rlc3RzOgotICAgICAgc2VsZWN0ZWRfcHl0aG9uX3Rl
c3RzID0gbGlzdGVkX3B5dGhvbl90ZXN0cwotICAgIGVsc2U6Ci0gICAgICBzZWxlY3RlZF9weXRo
b25fdGVzdHMgPSBzZWxmLl9GaW5kRmlsZXNCeVJlZ2V4KHRlc3RfZGlyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWVRIT05fVEVTVF9SRUdF
WCkKLQotICAgICMgVE9ETyh2bGFkbEBnb29nbGUuY29tKTogc2tpcCB1bmJ1aWx0IFB5dGhvbiB0
ZXN0cyB3aGVuIC1iIGlzIHNwZWNpZmllZC4KLSAgICBweXRob25fdGVzdF9wYWlycyA9IFtdCi0g
ICAgZm9yIGRpcmVjdG9yeSBpbiBidWlsZF9kaXJzOgotICAgICAgZm9yIHRlc3QgaW4gc2VsZWN0
ZWRfcHl0aG9uX3Rlc3RzOgotICAgICAgICBjb25maWcgPSBfR2V0Q29uZmlnRnJvbUJ1aWxkRGly
KGRpcmVjdG9yeSkKLSAgICAgICAgZmlsZV9uYW1lID0gb3MucGF0aC5iYXNlbmFtZSh0ZXN0KQot
ICAgICAgICBpZiBweXRob25fdGVzdHNfdG9fc2tpcCBhbmQgKGNvbmZpZywgZmlsZV9uYW1lKSBp
biBweXRob25fdGVzdHNfdG9fc2tpcDoKLSAgICAgICAgICBwcmludCAoJ05PVEU6ICVzIGlzIHNr
aXBwZWQgZm9yIGNvbmZpZ3VyYXRpb24gJXMsIGFzIGl0IGRvZXMgbm90ICcKLSAgICAgICAgICAg
ICAgICAgJ3dvcmsgdGhlcmUuJyAlIChmaWxlX25hbWUsIGNvbmZpZykpCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgcHl0aG9uX3Rlc3RfcGFpcnMuYXBwZW5kKChkaXJlY3RvcnksIHRlc3QpKQot
Ci0gICAgYmluYXJ5X3Rlc3RfcGFpcnMgPSBbXQotICAgIGZvciBkaXJlY3RvcnkgaW4gYnVpbGRf
ZGlyczoKLSAgICAgIGlmIHVzZXJfaGFzX2xpc3RlZF90ZXN0czoKLSAgICAgICAgYmluYXJ5X3Rl
c3RfcGFpcnMuZXh0ZW5kKAotICAgICAgICAgICAgWyhkaXJlY3RvcnksIHNlbGYub3MucGF0aC5q
b2luKGRpcmVjdG9yeSwgdGVzdCkpCi0gICAgICAgICAgICAgZm9yIHRlc3QgaW4gbGlzdGVkX2Jp
bmFyeV90ZXN0c10pCi0gICAgICBlbHNlOgotICAgICAgICB0ZXN0cyA9IHNlbGYuX0ZpbmRGaWxl
c0J5UmVnZXgoZGlyZWN0b3J5LCBCSU5BUllfVEVTVF9TRUFSQ0hfUkVHRVgpCi0gICAgICAgIGJp
bmFyeV90ZXN0X3BhaXJzLmV4dGVuZChbKGRpcmVjdG9yeSwgdGVzdCkgZm9yIHRlc3QgaW4gdGVz
dHNdKQotCi0gICAgcmV0dXJuIChweXRob25fdGVzdF9wYWlycywgYmluYXJ5X3Rlc3RfcGFpcnMp
Ci0KLSAgZGVmIFJ1blRlc3RzKHNlbGYsIHB5dGhvbl90ZXN0cywgYmluYXJ5X3Rlc3RzKToKLSAg
ICAiIiJSdW5zIFB5dGhvbiBhbmQgYmluYXJ5IHRlc3RzIGFuZCByZXBvcnRzIHJlc3VsdHMgdG8g
dGhlIHN0YW5kYXJkIG91dHB1dC4KLQotICAgIEFyZ3M6Ci0gICAgICBweXRob25fdGVzdHM6IExp
c3Qgb2YgUHl0aG9uIHRlc3RzIHRvIHJ1biBpbiB0aGUgZm9ybSBvZiB0dXBsZXMKLSAgICAgICAg
ICAgICAgICAgICAgKGJ1aWxkIGRpcmVjdG9yeSwgUHl0aG9uIHRlc3Qgc2NyaXB0KS4KLSAgICAg
IGJpbmFyeV90ZXN0czogTGlzdCBvZiBiaW5hcnkgdGVzdHMgdG8gcnVuIGluIHRoZSBmb3JtIG9m
IHR1cGxlcwotICAgICAgICAgICAgICAgICAgICAoYnVpbGQgZGlyZWN0b3J5LCBiaW5hcnkgZmls
ZSkuCi0KLSAgICBSZXR1cm5zOgotICAgICAgVGhlIGV4aXQgY29kZSB0aGUgcHJvZ3JhbSBzaG91
bGQgcGFzcyBpbnRvIHN5cy5leGl0KCkuCi0gICAgIiIiCi0KLSAgICBpZiBweXRob25fdGVzdHMg
b3IgYmluYXJ5X3Rlc3RzOgotICAgICAgcmVzdWx0cyA9IFtdCi0gICAgICBmb3IgZGlyZWN0b3J5
LCB0ZXN0IGluIHB5dGhvbl90ZXN0czoKLSAgICAgICAgcmVzdWx0cy5hcHBlbmQoKGRpcmVjdG9y
eSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9SdW5QeXRob25UZXN0KHRlc3QsIGRpcmVjdG9yeSkgPT0gMCkpCi0gICAgICBmb3Ig
ZGlyZWN0b3J5LCB0ZXN0IGluIGJpbmFyeV90ZXN0czoKLSAgICAgICAgcmVzdWx0cy5hcHBlbmQo
KGRpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub3MucGF0aC5iYXNlbmFt
ZSh0ZXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX1J1bkJpbmFyeVRlc3QodGVz
dCkgPT0gMCkpCi0KLSAgICAgIGZhaWxlZCA9IFsoZGlyZWN0b3J5LCB0ZXN0KQotICAgICAgICAg
ICAgICAgIGZvciAoZGlyZWN0b3J5LCB0ZXN0LCBzdWNjZXNzKSBpbiByZXN1bHRzCi0gICAgICAg
ICAgICAgICAgaWYgbm90IHN1Y2Nlc3NdCi0gICAgICBwcmludAotICAgICAgcHJpbnQgJyVkIHRl
c3RzIHJ1bi4nICUgbGVuKHJlc3VsdHMpCi0gICAgICBpZiBmYWlsZWQ6Ci0gICAgICAgIHByaW50
ICdUaGUgZm9sbG93aW5nICVkIHRlc3RzIGZhaWxlZDonICUgbGVuKGZhaWxlZCkKLSAgICAgICAg
Zm9yIChkaXJlY3RvcnksIHRlc3QpIGluIGZhaWxlZDoKLSAgICAgICAgICBwcmludCAnJXMgaW4g
JXMnICUgKHRlc3QsIGRpcmVjdG9yeSkKLSAgICAgICAgcmV0dXJuIDEKLSAgICAgIGVsc2U6Ci0g
ICAgICAgIHByaW50ICdBbGwgdGVzdHMgcGFzc2VkIScKLSAgICBlbHNlOiAgIyBObyB0ZXN0cyBk
ZWZpbmVkCi0gICAgICBwcmludCAnTm90aGluZyB0byB0ZXN0IC0gbm8gdGVzdHMgc3BlY2lmaWVk
IScKLQotICAgIHJldHVybiAwCi0KLQotZGVmIFBhcnNlQXJncyhwcm9qZWN0X25hbWUsIGFyZ3Y9
Tm9uZSwgaGVscF9jYWxsYmFjaz1Ob25lKToKLSAgIiIiUGFyc2VzIHRoZSBvcHRpb25zIHJ1bl90
ZXN0cy5weSB1c2VzLiIiIgotCi0gICMgU3VwcHJlc3NlcyBsaW50IHdhcm5pbmcgb24gdW51c2Vk
IGFyZ3VtZW50cy4gIFRoZXNlIGFyZ3VtZW50cyBhcmUKLSAgIyByZXF1aXJlZCBieSBvcHRwYXJz
ZSwgZXZlbiB0aG91Z2ggdGhleSBhcmUgdW51c2VkLgotICAjIHB5bGludDogZGlzYWJsZS1tc2c9
VzA2MTMKLSAgZGVmIFByaW50SGVscChvcHRpb24sIG9wdCwgdmFsdWUsIHBhcnNlcik6Ci0gICAg
cHJpbnQgSEVMUF9NU0cgJSB7J3Byb2onOiBwcm9qZWN0X25hbWV9Ci0gICAgc3lzLmV4aXQoMSkK
LQotICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQotICBwYXJzZXIuYWRkX29wdGlv
bignLWMnLAotICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlJywKLSAgICAgICAgICAg
ICAgICAgICAgZGVzdD0nY29uZmlndXJhdGlvbnMnLAotICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0PU5vbmUpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctYScsCi0gICAgICAgICAgICAgICAgICAg
IGFjdGlvbj0nc3RvcmVfY29uc3QnLAotICAgICAgICAgICAgICAgICAgICBkZXN0PSdjb25maWd1
cmF0aW9ucycsCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAg
ICAgICAgICAgY29uc3Q9J2FsbCcpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctYicsCi0gICAgICAg
ICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfY29uc3QnLAotICAgICAgICAgICAgICAgICAgICBk
ZXN0PSdidWlsdF9jb25maWd1cmF0aW9ucycsCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9
RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0PVRydWUpCi0gICMgUmVwbGFjZXMgdGhl
IGJ1aWx0LWluIGhlbHAgd2l0aCBvdXJzLgotICBwYXJzZXIucmVtb3ZlX29wdGlvbignLWgnKQot
ICBwYXJzZXIuYWRkX29wdGlvbignLWgnLCAnLS1oZWxwJywKLSAgICAgICAgICAgICAgICAgICAg
YWN0aW9uPSdjYWxsYmFjaycsCi0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrPWhlbHBfY2Fs
bGJhY2sgb3IgUHJpbnRIZWxwKQotICByZXR1cm4gcGFyc2VyLnBhcnNlX2FyZ3MoYXJndikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3RzX3V0aWxfdGVz
dC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3RzX3V0aWxfdGVzdC5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOWM1NTcyNmZkNTBiMmEwYzI1MDY4MTQx
ZDdlNjY5NDNmMGI2ZGU3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0c191dGlsX3Rlc3Qu
cHkKKysrIC9kZXYvbnVsbApAQCAtMSw2NzYgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
Ci0jCi0jIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0j
Ci0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24u
Ci0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi0iIiJUZXN0cyBmb3IgcnVuX3Rlc3RzX3V0aWwucHkgdGVzdCBy
dW5uZXIgc2NyaXB0LiIiIgotCi1fX2F1dGhvcl9fID0gJ3ZsYWRsQGdvb2dsZS5jb20gKFZsYWQg
TG9zZXYpJwotCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNldHMKLWltcG9ydCB1bml0
dGVzdAotCi1pbXBvcnQgcnVuX3Rlc3RzX3V0aWwKLQotCi1HVEVTVF9EQkdfRElSID0gJ3Njb25z
L2J1aWxkL2RiZy9ndGVzdC9zY29ucycKLUdURVNUX09QVF9ESVIgPSAnc2NvbnMvYnVpbGQvb3B0
L2d0ZXN0L3Njb25zJwotR1RFU1RfT1RIRVJfRElSID0gJ3Njb25zL2J1aWxkL290aGVyL2d0ZXN0
L3Njb25zJwotCi0KLWRlZiBBZGRFeGVFeHRlbnNpb24ocGF0aCk6Ci0gICIiIkFwcGVuZHMgLmV4
ZSB0byB0aGUgcGF0aCBvbiBXaW5kb3dzIG9yIEN5Z3dpbi4iIiIKLQotICBpZiBydW5fdGVzdHNf
dXRpbC5JU19XSU5ET1dTIG9yIHJ1bl90ZXN0c191dGlsLklTX0NZR1dJTjoKLSAgICByZXR1cm4g
cGF0aCArICcuZXhlJwotICBlbHNlOgotICAgIHJldHVybiBwYXRoCi0KLQotY2xhc3MgRmFrZVBh
dGgob2JqZWN0KToKLSAgIiIiQSBmYWtlIG9zLnBhdGggbW9kdWxlIGZvciB0ZXN0aW5nLiIiIgot
Ci0gIGRlZiBfX2luaXRfXyhzZWxmLCBjdXJyZW50X2Rpcj1vcy5nZXRjd2QoKSwga25vd25fcGF0
aHM9Tm9uZSk6Ci0gICAgc2VsZi5jdXJyZW50X2RpciA9IGN1cnJlbnRfZGlyCi0gICAgc2VsZi50
cmVlID0ge30KLSAgICBzZWxmLnBhdGhfc2VwYXJhdG9yID0gb3Muc2VwCi0KLSAgICAjIGtub3du
X3BhdGhzIGNvbnRhaW5zIGVpdGhlciBhYnNvbHV0ZSBvciByZWxhdGl2ZSBwYXRocy4gUmVsYXRp
dmUgcGF0aHMKLSAgICAjIGFyZSBhYnNvbHV0aXplZCB3aXRoIHNlbGYuY3VycmVudF9kaXIuCi0g
ICAgaWYga25vd25fcGF0aHM6Ci0gICAgICBzZWxmLl9BZGRQYXRocyhrbm93bl9wYXRocykKLQot
ICBkZWYgX0FkZFBhdGgoc2VsZiwgcGF0aCk6Ci0gICAgZW5kc193aXRoX3NsYXNoID0gcGF0aC5l
bmRzd2l0aCgnLycpCi0gICAgcGF0aCA9IHNlbGYuYWJzcGF0aChwYXRoKQotICAgIGlmIGVuZHNf
d2l0aF9zbGFzaDoKLSAgICAgIHBhdGggKz0gc2VsZi5wYXRoX3NlcGFyYXRvcgotICAgIG5hbWVf
bGlzdCA9IHBhdGguc3BsaXQoc2VsZi5wYXRoX3NlcGFyYXRvcikKLSAgICB0cmVlID0gc2VsZi50
cmVlCi0gICAgZm9yIG5hbWUgaW4gbmFtZV9saXN0WzotMV06Ci0gICAgICBpZiBub3QgbmFtZToK
LSAgICAgICAgY29udGludWUKLSAgICAgIGlmIG5hbWUgaW4gdHJlZToKLSAgICAgICAgdHJlZSA9
IHRyZWVbbmFtZV0KLSAgICAgIGVsc2U6Ci0gICAgICAgIHRyZWVbbmFtZV0gPSB7fQotICAgICAg
ICB0cmVlID0gdHJlZVtuYW1lXQotCi0gICAgbmFtZSA9IG5hbWVfbGlzdFstMV0KLSAgICBpZiBu
YW1lOgotICAgICAgaWYgbmFtZSBpbiB0cmVlOgotICAgICAgICBhc3NlcnQgdHJlZVtuYW1lXSA9
PSAxCi0gICAgICBlbHNlOgotICAgICAgICB0cmVlW25hbWVdID0gMQotCi0gIGRlZiBfQWRkUGF0
aHMoc2VsZiwgcGF0aHMpOgotICAgIGZvciBwYXRoIGluIHBhdGhzOgotICAgICAgc2VsZi5fQWRk
UGF0aChwYXRoKQotCi0gIGRlZiBQYXRoRWxlbWVudChzZWxmLCBwYXRoKToKLSAgICAiIiJSZXR1
cm5zIGFuIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGRpcmVjdG9yeSB0cmVlIGVudHJ5IGZv
ciBwYXRoLiIiIgotICAgIHRyZWUgPSBzZWxmLnRyZWUKLSAgICBuYW1lX2xpc3QgPSBzZWxmLmFi
c3BhdGgocGF0aCkuc3BsaXQoc2VsZi5wYXRoX3NlcGFyYXRvcikKLSAgICBmb3IgbmFtZSBpbiBu
YW1lX2xpc3Q6Ci0gICAgICBpZiBub3QgbmFtZToKLSAgICAgICAgY29udGludWUKLSAgICAgIHRy
ZWUgPSB0cmVlLmdldChuYW1lLCBOb25lKQotICAgICAgaWYgdHJlZSBpcyBOb25lOgotICAgICAg
ICBicmVhawotCi0gICAgcmV0dXJuIHRyZWUKLQotICAjIFNpbGVuY2VzIHB5bGludCB3YXJuaW5n
IGFib3V0IHVzaW5nIHN0YW5kYXJkIG5hbWVzLgotICAjIHB5bGludDogZGlzYWJsZS1tc2c9QzY0
MDkKLSAgZGVmIG5vcm1wYXRoKHNlbGYsIHBhdGgpOgotICAgIHJldHVybiBvcy5wYXRoLm5vcm1w
YXRoKHBhdGgpCi0KLSAgZGVmIGFic3BhdGgoc2VsZiwgcGF0aCk6Ci0gICAgcmV0dXJuIHNlbGYu
bm9ybXBhdGgob3MucGF0aC5qb2luKHNlbGYuY3VycmVudF9kaXIsIHBhdGgpKQotCi0gIGRlZiBp
c2ZpbGUoc2VsZiwgcGF0aCk6Ci0gICAgcmV0dXJuIHNlbGYuUGF0aEVsZW1lbnQoc2VsZi5hYnNw
YXRoKHBhdGgpKSA9PSAxCi0KLSAgZGVmIGlzZGlyKHNlbGYsIHBhdGgpOgotICAgIHJldHVybiB0
eXBlKHNlbGYuUGF0aEVsZW1lbnQoc2VsZi5hYnNwYXRoKHBhdGgpKSkgPT0gdHlwZShkaWN0KCkp
Ci0KLSAgZGVmIGJhc2VuYW1lKHNlbGYsIHBhdGgpOgotICAgIHJldHVybiBvcy5wYXRoLmJhc2Vu
YW1lKHBhdGgpCi0KLSAgZGVmIGRpcm5hbWUoc2VsZiwgcGF0aCk6Ci0gICAgcmV0dXJuIG9zLnBh
dGguZGlybmFtZShwYXRoKQotCi0gIGRlZiBqb2luKHNlbGYsICprYXJncyk6Ci0gICAgcmV0dXJu
IG9zLnBhdGguam9pbigqa2FyZ3MpCi0KLQotY2xhc3MgRmFrZU9zKG9iamVjdCk6Ci0gICIiIkEg
ZmFrZSBvcyBtb2R1bGUgZm9yIHRlc3RpbmcuIiIiCi0gIFBfV0FJVCA9IG9zLlBfV0FJVAotCi0g
IGRlZiBfX2luaXRfXyhzZWxmLCBmYWtlX3BhdGhfbW9kdWxlKToKLSAgICBzZWxmLnBhdGggPSBm
YWtlX3BhdGhfbW9kdWxlCi0KLSAgICAjIFNvbWUgbWV0aG9kcy9hdHRyaWJ1dGVzIGFyZSBkZWxl
Z2F0ZWQgdG8gdGhlIHJlYWwgb3MgbW9kdWxlLgotICAgIHNlbGYuZW52aXJvbiA9IG9zLmVudmly
b24KLQotICAjIHB5bGludDogZGlzYWJsZS1tc2c9QzY0MDkKLSAgZGVmIGxpc3RkaXIoc2VsZiwg
cGF0aCk6Ci0gICAgYXNzZXJ0IHNlbGYucGF0aC5pc2RpcihwYXRoKQotICAgIHJldHVybiBzZWxm
LnBhdGguUGF0aEVsZW1lbnQocGF0aCkuaXRlcmtleXMoKQotCi0gIGRlZiBzcGF3bnYoc2VsZiwg
d2FpdCwgZXhlY3V0YWJsZSwgKmthcmdzKToKLSAgICBhc3NlcnQgd2FpdCA9PSBGYWtlT3MuUF9X
QUlUCi0gICAgcmV0dXJuIHNlbGYuc3Bhd25faW1wbChleGVjdXRhYmxlLCBrYXJncykKLQotCi1j
bGFzcyBHZXRUZXN0c1RvUnVuVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICIiIkV4ZXJjaXNl
cyBUZXN0UnVubmVyLkdldFRlc3RzVG9SdW4uIiIiCi0KLSAgZGVmIE5vcm1hbGl6ZUdldFRlc3Rz
VG9SdW5SZXN1bHRzKHNlbGYsIHJlc3VsdHMpOgotICAgICIiIk5vcm1hbGl6ZXMgcGF0aCBkYXRh
IHJldHVybmVkIGZyb20gR2V0VGVzdHNUb1J1biBmb3IgY29tcGFyaXNvbi4iIiIKLQotICAgIGRl
ZiBOb3JtYWxpemVQeXRob25UZXN0UGFpcihwYWlyKToKLSAgICAgICIiIk5vcm1hbGl6ZXMgcGF0
aCBkYXRhIGluIHRoZSAoZGlyZWN0b3J5LCBweXRob25fc2NyaXB0KSBwYWlyLiIiIgotCi0gICAg
ICByZXR1cm4gKG9zLnBhdGgubm9ybXBhdGgocGFpclswXSksIG9zLnBhdGgubm9ybXBhdGgocGFp
clsxXSkpCi0KLSAgICBkZWYgTm9ybWFsaXplQmluYXJ5VGVzdFBhaXIocGFpcik6Ci0gICAgICAi
IiJOb3JtYWxpemVzIHBhdGggZGF0YSBpbiB0aGUgKGRpcmVjdG9yeSwgYmluYXJ5X2V4ZWN1dGFi
bGUpIHBhaXIuIiIiCi0KLSAgICAgIGRpcmVjdG9yeSwgZXhlY3V0YWJsZSA9IG1hcChvcy5wYXRo
Lm5vcm1wYXRoLCBwYWlyKQotCi0gICAgICAjIE9uIFdpbmRvd3MgYW5kIEN5Z3dpbiwgdGhlIHRl
c3QgZmlsZSBuYW1lcyBoYXZlIHRoZSAuZXhlIGV4dGVuc2lvbiwgYnV0Ci0gICAgICAjIHRoZXkg
Y2FuIGJlIGludm9rZWQgZWl0aGVyIGJ5IG5hbWUgb3IgYnkgbmFtZStleHRlbnNpb24uIE91ciB0
ZXN0IG11c3QKLSAgICAgICMgYWNjb21tb2RhdGUgYm90aCBzaXR1YXRpb25zLgotICAgICAgaWYg
cnVuX3Rlc3RzX3V0aWwuSVNfV0lORE9XUyBvciBydW5fdGVzdHNfdXRpbC5JU19DWUdXSU46Ci0g
ICAgICAgIGV4ZWN1dGFibGUgPSByZS5zdWIocidcLmV4ZSQnLCAnJywgZXhlY3V0YWJsZSkKLSAg
ICAgIHJldHVybiAoZGlyZWN0b3J5LCBleGVjdXRhYmxlKQotCi0gICAgcHl0aG9uX3Rlc3RzID0g
c2V0cy5TZXQobWFwKE5vcm1hbGl6ZVB5dGhvblRlc3RQYWlyLCByZXN1bHRzWzBdKSkKLSAgICBi
aW5hcnlfdGVzdHMgPSBzZXRzLlNldChtYXAoTm9ybWFsaXplQmluYXJ5VGVzdFBhaXIsIHJlc3Vs
dHNbMV0pKQotICAgIHJldHVybiAocHl0aG9uX3Rlc3RzLCBiaW5hcnlfdGVzdHMpCi0KLSAgZGVm
IEFzc2VydFJlc3VsdHNFcXVhbChzZWxmLCByZXN1bHRzLCBleHBlY3RlZCk6Ci0gICAgIiIiQXNz
ZXJ0cyByZXN1bHRzIHJldHVybmVkIGJ5IEdldFRlc3RzVG9SdW4gZXF1YWwgdG8gZXhwZWN0ZWQg
cmVzdWx0cy4iIiIKLQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5Ob3JtYWxpemVHZXRUZXN0
c1RvUnVuUmVzdWx0cyhyZXN1bHRzKSwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuTm9ybWFs
aXplR2V0VGVzdHNUb1J1blJlc3VsdHMoZXhwZWN0ZWQpLAotICAgICAgICAgICAgICAgICAgICAg
J0luY29ycmVjdCBzZXQgb2YgdGVzdHMgcmV0dXJuZWQ6XG4lc1xuZXhwZWN0ZWQ6XG4lcycgJQot
ICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdHMsIGV4cGVjdGVkKSkKLQotICBkZWYgc2V0VXAo
c2VsZik6Ci0gICAgc2VsZi5mYWtlX29zID0gRmFrZU9zKEZha2VQYXRoKAotICAgICAgICBjdXJy
ZW50X2Rpcj1vcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKHJ1bl90ZXN0c191dGlsLl9f
ZmlsZV9fKSksCi0gICAgICAgIGtub3duX3BhdGhzPVtBZGRFeGVFeHRlbnNpb24oR1RFU1RfREJH
X0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAgICAgICAgICAgIEFkZEV4ZUV4
dGVuc2lvbihHVEVTVF9PUFRfRElSICsgJy9ndGVzdF91bml0dGVzdCcpLAotICAgICAgICAgICAg
ICAgICAgICAgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weSddKSkKLSAgICBzZWxmLmZha2VfY29u
ZmlndXJhdGlvbnMgPSBbJ2RiZycsICdvcHQnXQotICAgIHNlbGYudGVzdF9ydW5uZXIgPSBydW5f
dGVzdHNfdXRpbC5UZXN0UnVubmVyKHNjcmlwdF9kaXI9Jy4nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluamVjdGVkX29zPXNlbGYuZmFrZV9vcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3Rl
ZF9zdWJwcm9jZXNzPU5vbmUpCi0KLSAgZGVmIHRlc3RCaW5hcnlUZXN0c09ubHkoc2VsZik6Ci0g
ICAgIiIiRXhlcmNpc2VzIEdldFRlc3RzVG9SdW4gd2l0aCBwYXJhbWV0ZXJzIGRlc2lnbmF0aW5n
IGJpbmFyeSB0ZXN0cyBvbmx5LiIiIgotCi0gICAgIyBBIGRlZmF1bHQgYnVpbGQuCi0gICAgc2Vs
Zi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNU
b1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICcnLAot
ICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9
c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFtdLAotICAgICAgICAgWyhHVEVT
VF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAj
IEFuIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGRpcmVjdG9yeS4KLSAgICBzZWxmLkFzc2VydFJlc3Vs
dHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAg
ICAgICAgW0dURVNUX0RCR19ESVIsICdndGVzdF91bml0dGVzdCddLAotICAgICAgICAgICAgJycs
Ci0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9u
cz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdU
RVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAg
ICMgQSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24uCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1
YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAg
IFsnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICdvdGhlcicsCi0gICAgICAgICAgICBG
YWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29u
ZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX09USEVSX0RJUiwg
R1RFU1RfT1RIRVJfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIEFsbCBhdmFp
bGFibGUgY29uZmlndXJhdGlvbnMKLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAg
ICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF91
bml0dGVzdCddLAotICAgICAgICAgICAgJ2FsbCcsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAg
ICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMp
LAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIg
KyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIsIEdURVNUX09Q
VF9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgQWxsIGJ1aWx0IGNvbmZpZ3Vy
YXRpb25zICh1bmJ1aWx0IGRvbid0IGNhdXNlIGZhaWx1cmUpLgotICAgIHNlbGYuQXNzZXJ0UmVz
dWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAg
ICAgICAgICBbJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAg
IFRydWUsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2Nv
bmZpZ3VyYXRpb25zICsgWyd1bmJ1aWx0J10pLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdU
RVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAg
ICAgKEdURVNUX09QVF9ESVIsIEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkK
LQotICAgICMgQSBjb21iaW5hdGlvbiBvZiBhbiBleHBsaWNpdCBkaXJlY3RvcnkgYW5kIGEgY29u
ZmlndXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50
ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIsICdn
dGVzdF91bml0dGVzdCddLAotICAgICAgICAgICAgJ29wdCcsCi0gICAgICAgICAgICBGYWxzZSwK
LSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJh
dGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RC
R19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIsIEdU
RVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgU2FtZSB0ZXN0IHNw
ZWNpZmllZCBpbiBhbiBleHBsaWNpdCBkaXJlY3RvcnkgYW5kIHZpYSBhIGNvbmZpZ3VyYXRpb24u
Ci0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIu
R2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rlc3RfdW5pdHRl
c3QnXSwKLSAgICAgICAgICAgICdkYmcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAg
ICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAg
ICAgICAgKFtdLAotICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9n
dGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIEFsbCBidWlsdCBjb25maWd1cmF0aW9ucyArIGV4
cGxpY2l0IGRpcmVjdG9yeSArIGV4cGxpY2l0IGNvbmZpZ3VyYXRpb24uCi0gICAgc2VsZi5Bc3Nl
cnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigK
LSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAg
ICAgICdvcHQnLAotICAgICAgICAgICAgVHJ1ZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25m
aWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAg
ICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0Jyks
Ci0gICAgICAgICAgKEdURVNUX09QVF9ESVIsIEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0
ZXN0JyldKSkKLQotICBkZWYgdGVzdFB5dGhvblRlc3RzT25seShzZWxmKToKLSAgICAiIiJFeGVy
Y2lzZXMgR2V0VGVzdHNUb1J1biB3aXRoIHBhcmFtZXRlcnMgZGVzaWduYXRpbmcgUHl0aG9uIHRl
c3RzIG9ubHkuIiIiCi0KLSAgICAjIEEgZGVmYXVsdCBidWlsZC4KLSAgICBzZWxmLkFzc2VydFJl
c3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAg
ICAgICAgICAgWydndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnJywKLSAgICAg
ICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYu
ZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0
ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEFuIGV4cGxpY2l0
bHkgc3BlY2lmaWVkIGRpcmVjdG9yeS4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAg
ICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgW0dURVNU
X0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICcnLAot
ICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9
c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rl
c3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAgICMgQSBwYXJ0
aWN1bGFyIGNvbmZpZ3VyYXRpb24uCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAg
ICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3Rf
Y29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJ290aGVyJywKLSAgICAgICAgICAgIEZhbHNl
LAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1
cmF0aW9ucyksCi0gICAgICAgIChbKEdURVNUX09USEVSX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3Jf
dGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAgICMgQWxsIGF2YWlsYWJsZSBjb25maWd1
cmF0aW9ucwotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3Rf
cnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVz
dC5weSddLAotICAgICAgICAgICAgJ2FsbCcsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAg
ICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAot
ICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyksCi0g
ICAgICAgICAgKEdURVNUX09QVF9ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0g
ICAgICAgICBbXSkpCi0KLSAgICAjIEFsbCBidWlsdCBjb25maWd1cmF0aW9ucyAodW5idWlsdCBk
b24ndCBjYXVzZSBmYWlsdXJlKS4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAg
ICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF9j
b2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIFRydWUsCi0gICAg
ICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25z
ICsgWyd1bmJ1aWx0J10pLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9j
b2xvcl90ZXN0LnB5JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIsICd0ZXN0L2d0ZXN0X2Nv
bG9yX3Rlc3QucHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEEgY29tYmluYXRpb24gb2Yg
YW4gZXhwbGljaXQgZGlyZWN0b3J5IGFuZCBhIGNvbmZpZ3VyYXRpb24uCi0gICAgc2VsZi5Bc3Nl
cnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigK
LSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rlc3RfY29sb3JfdGVzdC5weSddLAotICAg
ICAgICAgICAgJ29wdCcsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJs
ZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoWyhH
VEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyksCi0gICAgICAgICAgKEdU
RVNUX09QVF9ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAgICBbXSkp
Ci0KLSAgICAjIFNhbWUgdGVzdCBzcGVjaWZpZWQgaW4gYW4gZXhwbGljaXQgZGlyZWN0b3J5IGFu
ZCB2aWEgYSBjb25maWd1cmF0aW9uLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAg
ICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbR1RFU1Rf
REJHX0RJUiwgJ2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICdkYmcnLAotICAg
ICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2Vs
Zi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3Qv
Z3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAgICMgQWxsIGJ1aWx0
IGNvbmZpZ3VyYXRpb25zICsgZXhwbGljaXQgZGlyZWN0b3J5ICsgZXhwbGljaXQgY29uZmlndXJh
dGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1
bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIsICdndGVzdF9j
b2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnb3B0JywKLSAgICAgICAgICAgIFRydWUsCi0g
ICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRp
b25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5w
eScpLAotICAgICAgICAgIChHVEVTVF9PUFRfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5
JyldLAotICAgICAgICAgW10pKQotCi0gIGRlZiB0ZXN0Q29tYmluYXRpb25PZkJpbmFyeUFuZFB5
dGhvblRlc3RzKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBHZXRUZXN0c1RvUnVuIHdpdGggbWl4
ZWQgYmluYXJ5L1B5dGhvbiB0ZXN0cy4iIiIKLQotICAgICMgVXNlIG9ubHkgZGVmYXVsdCBjb25m
aWd1cmF0aW9uIGZvciB0aGlzIHRlc3QuCi0KLSAgICAjIE5laXRoZXIgYmluYXJ5IG5vciBQeXRo
b24gdGVzdHMgYXJlIHNwZWNpZmllZCBzbyBmaW5kIGFsbC4KLSAgICBzZWxmLkFzc2VydFJlc3Vs
dHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAg
ICAgICAgW10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAg
ICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0g
ICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0g
ICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0
JyldKSkKLQotICAgICMgU3BlY2lmeWluZyBib3RoIGJpbmFyeSBhbmQgUHl0aG9uIHRlc3RzLgot
ICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdl
dFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X3VuaXR0ZXN0JywgJ2d0ZXN0X2NvbG9y
X3Rlc3QucHknXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAg
ICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwK
LSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwK
LSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRl
c3QnKV0pKQotCi0gICAgIyBTcGVjaWZ5aW5nIGJpbmFyeSB0ZXN0cyBzdXBwcmVzc2VzIFB5dGhv
biB0ZXN0cy4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0
X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF91bml0dGVzdCddLAot
ICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJs
ZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10s
Ci0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0
ZXN0JyldKSkKLQotICAgIyBTcGVjaWZ5aW5nIFB5dGhvbiB0ZXN0cyBzdXBwcmVzc2VzIGJpbmFy
eSB0ZXN0cy4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0
X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF9jb2xvcl90ZXN0LnB5
J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZh
aWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAg
IChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAg
ICBbXSkpCi0KLSAgZGVmIHRlc3RJZ25vcmVzTm9uVGVzdEZpbGVzKHNlbGYpOgotICAgICIiIlZl
cmlmaWVzIHRoYXQgR2V0VGVzdHNUb1J1biBpZ25vcmVzIG5vbi10ZXN0IGZpbGVzIGluIHRoZSBm
aWxlc3lzdGVtLiIiIgotCi0gICAgc2VsZi5mYWtlX29zID0gRmFrZU9zKEZha2VQYXRoKAotICAg
ICAgICBjdXJyZW50X2Rpcj1vcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKHJ1bl90ZXN0
c191dGlsLl9fZmlsZV9fKSksCi0gICAgICAgIGtub3duX3BhdGhzPVtBZGRFeGVFeHRlbnNpb24o
R1RFU1RfREJHX0RJUiArICcvZ3Rlc3Rfbm9udGVzdCcpLAotICAgICAgICAgICAgICAgICAgICAg
J3Rlc3QvJ10pKQotICAgIHNlbGYudGVzdF9ydW5uZXIgPSBydW5fdGVzdHNfdXRpbC5UZXN0UnVu
bmVyKHNjcmlwdF9kaXI9Jy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluamVjdGVkX29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3RlZF9zdWJwcm9jZXNzPU5vbmUp
Ci0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIu
R2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgJycsCi0gICAgICAg
ICAgICBUcnVlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFr
ZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbXSwgW10pKQotCi0gIGRlZiB0ZXN0V29ya3NG
cm9tRGlmZmVyZW50RGlyKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBHZXRUZXN0c1RvUnVuIGZy
b20gYSBkaXJlY3RvcnkgZGlmZmVyZW50IGZyb20gcnVuX3Rlc3QucHkncy4iIiIKLQotICAgICMg
SGVyZSB3ZSBzaW11bGF0ZSBhbiB0ZXN0IHNjcmlwdCBpbiBkaXJlY3RvcnkgL2QvIGNhbGxlZCBm
cm9tIHRoZQotICAgICMgZGlyZWN0b3J5IC9hL2IvYy8uCi0gICAgc2VsZi5mYWtlX29zID0gRmFr
ZU9zKEZha2VQYXRoKAotICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRoLmFic3BhdGgoJy9hL2Iv
YycpLAotICAgICAgICBrbm93bl9wYXRocz1bCi0gICAgICAgICAgICAnL2EvYi9jLycsCi0gICAg
ICAgICAgICBBZGRFeGVFeHRlbnNpb24oJy9kLycgKyBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91
bml0dGVzdCcpLAotICAgICAgICAgICAgQWRkRXhlRXh0ZW5zaW9uKCcvZC8nICsgR1RFU1RfT1BU
X0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAgICcvZC90ZXN0L2d0ZXN0X2Nv
bG9yX3Rlc3QucHknXSkpCi0gICAgc2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zID0gWydkYmcnLCAn
b3B0J10KLSAgICBzZWxmLnRlc3RfcnVubmVyID0gcnVuX3Rlc3RzX3V0aWwuVGVzdFJ1bm5lcihz
Y3JpcHRfZGlyPScvZC8nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluamVjdGVkX29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3RlZF9zdWJwcm9jZXNzPU5vbmUpCi0g
ICAgIyBBIGJpbmFyeSB0ZXN0LgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAg
ICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X3Vu
aXR0ZXN0J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAg
ICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0g
ICAgICAgIChbXSwKLSAgICAgICAgIFsoJy9kLycgKyBHVEVTVF9EQkdfRElSLCAnL2QvJyArIEdU
RVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgQSBQeXRob24gdGVz
dC4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5l
ci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0g
ICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxl
X2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbKCcv
ZC8nICsgR1RFU1RfREJHX0RJUiwgJy9kL3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwgW10p
KQotCi0gIGRlZiB0ZXN0Tm9uVGVzdEJpbmFyeShzZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgR2V0
VGVzdHNUb1J1biB3aXRoIGEgbm9uLXRlc3QgcGFyYW1ldGVyLiIiIgotCi0gICAgc2VsZi5hc3Nl
cnRfKAotICAgICAgICBub3Qgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAg
ICAgICAgWydndGVzdF91bml0dGVzdF9ub3RfcmVhbGx5J10sCi0gICAgICAgICAgICAnJywKLSAg
ICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNl
bGYuZmFrZV9jb25maWd1cmF0aW9ucykpCi0KLSAgZGVmIHRlc3ROb25FeGlzdGluZ1B5dGhvblRl
c3Qoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3RzVG9SdW4gd2l0aCBhIG5vbi1leGlz
dGVudCBQeXRob24gdGVzdCBwYXJhbWV0ZXIuIiIiCi0KLSAgICBzZWxmLmFzc2VydF8oCi0gICAg
ICAgIG5vdCBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ25v
bmV4aXN0ZW50X3Rlc3QucHknXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFsc2Us
Ci0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3Vy
YXRpb25zKSkKLQotICBpZiBydW5fdGVzdHNfdXRpbC5JU19XSU5ET1dTIG9yIHJ1bl90ZXN0c191
dGlsLklTX0NZR1dJTjoKLQotICAgIGRlZiB0ZXN0RG9lc05vdFBpY2tOb25FeGVGaWxlc09uV2lu
ZG93cyhzZWxmKToKLSAgICAgICIiIlZlcmlmaWVzIHRoYXQgR2V0VGVzdHNUb1J1biBkb2VzIG5v
dCBmaW5kIF90ZXN0IGZpbGVzIG9uIFdpbmRvd3MuIiIiCi0KLSAgICAgIHNlbGYuZmFrZV9vcyA9
IEZha2VPcyhGYWtlUGF0aCgKLSAgICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRoLmFic3BhdGgo
b3MucGF0aC5kaXJuYW1lKHJ1bl90ZXN0c191dGlsLl9fZmlsZV9fKSksCi0gICAgICAgICAga25v
d25fcGF0aHM9WycvZC8nICsgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdGVzdCcsICd0ZXN0Lydd
KSkKLSAgICAgIHNlbGYudGVzdF9ydW5uZXIgPSBydW5fdGVzdHNfdXRpbC5UZXN0UnVubmVyKHNj
cmlwdF9kaXI9Jy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5qZWN0ZWRfb3M9c2VsZi5mYWtlX29zLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5qZWN0ZWRfc3VicHJvY2Vzcz1Ob25lKQot
ICAgICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgICAgc2VsZi50ZXN0X3J1bm5l
ci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgICBbXSwKLSAgICAgICAgICAgICAgJycsCi0g
ICAgICAgICAgICAgIFRydWUsCi0gICAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9u
cz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAgIChbXSwgW10pKQotCi0KLWNs
YXNzIFJ1blRlc3RzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICIiIkV4ZXJjaXNlcyBUZXN0
UnVubmVyLlJ1blRlc3RzLiIiIgotCi0gIGRlZiBTcGF3blN1Y2Nlc3Moc2VsZiwgdW51c2VkX2V4
ZWN1dGFibGUsIHVudXNlZF9hcmd2KToKLSAgICAiIiJGYWtlcyB0ZXN0IHN1Y2Nlc3MgYnkgcmV0
dXJuaW5nIDAgYXMgYW4gZXhpdCBjb2RlLiIiIgotCi0gICAgc2VsZi5udW1fc3Bhd25fY2FsbHMg
Kz0gMQotICAgIHJldHVybiAwCi0KLSAgZGVmIFNwYXduRmFpbHVyZShzZWxmLCB1bnVzZWRfZXhl
Y3V0YWJsZSwgdW51c2VkX2FyZ3YpOgotICAgICIiIkZha2VzIHRlc3Qgc3VjY2VzcyBieSByZXR1
cm5pbmcgMSBhcyBhbiBleGl0IGNvZGUuIiIiCi0KLSAgICBzZWxmLm51bV9zcGF3bl9jYWxscyAr
PSAxCi0gICAgcmV0dXJuIDEKLQotICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgc2VsZi5mYWtlX29z
ID0gRmFrZU9zKEZha2VQYXRoKAotICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRoLmFic3BhdGgo
b3MucGF0aC5kaXJuYW1lKHJ1bl90ZXN0c191dGlsLl9fZmlsZV9fKSksCi0gICAgICAgIGtub3du
X3BhdGhzPVsKLSAgICAgICAgICAgIEFkZEV4ZUV4dGVuc2lvbihHVEVTVF9EQkdfRElSICsgJy9n
dGVzdF91bml0dGVzdCcpLAotICAgICAgICAgICAgQWRkRXhlRXh0ZW5zaW9uKEdURVNUX09QVF9E
SVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgICAndGVzdC9ndGVzdF9jb2xvcl90
ZXN0LnB5J10pKQotICAgIHNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyA9IFsnZGJnJywgJ29wdCdd
Ci0gICAgc2VsZi50ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5uZXIoCi0gICAg
ICAgIHNjcmlwdF9kaXI9b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSBvciAnLicsCi0gICAgICAg
IGluamVjdGVkX29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAgaW5qZWN0ZWRfc3VicHJvY2Vzcz1O
b25lKQotICAgIHNlbGYubnVtX3NwYXduX2NhbGxzID0gMCAgIyBBIG51bWJlciBvZiBjYWxscyB0
byBzcGF3bi4KLQotICBkZWYgdGVzdFJ1blB5dGhvblRlc3RTdWNjZXNzKHNlbGYpOgotICAgICIi
IkV4ZXJjaXNlcyBSdW5UZXN0cyB0byBoYW5kbGUgYSBQeXRob24gdGVzdCBzdWNjZXNzLiIiIgot
Ci0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxmLlNwYXduU3VjY2VzcwotICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuUnVuVGVzdHMoCi0gICAg
ICAgICAgICBbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0g
ICAgICAgICAgICBbXSksCi0gICAgICAgIDApCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm51
bV9zcGF3bl9jYWxscywgMSkKLQotICBkZWYgdGVzdFJ1bkJpbmFyeVRlc3RTdWNjZXNzKHNlbGYp
OgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0cyB0byBoYW5kbGUgYSBiaW5hcnkgdGVzdCBzdWNj
ZXNzLiIiIgotCi0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxmLlNwYXduU3VjY2Vz
cwotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuUnVuVGVz
dHMoCi0gICAgICAgICAgICBbXSwKLSAgICAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1Rf
REJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pLAotICAgICAgICAwKQotICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc2VsZi5udW1fc3Bhd25fY2FsbHMsIDEpCi0KLSAgZGVmIHRlc3RSdW5QeXRob25U
ZXN0RmF1aWx1cmUoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIFJ1blRlc3RzIHRvIGhhbmRsZSBh
IFB5dGhvbiB0ZXN0IGZhaWx1cmUuIiIiCi0KLSAgICBzZWxmLmZha2Vfb3Muc3Bhd25faW1wbCA9
IHNlbGYuU3Bhd25GYWlsdXJlCi0gICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgc2VsZi50
ZXN0X3J1bm5lci5SdW5UZXN0cygKLSAgICAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3Qv
Z3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgICAgIFtdKSwKLSAgICAgICAgMSkKLSAg
ICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnVtX3NwYXduX2NhbGxzLCAxKQotCi0gIGRlZiB0ZXN0
UnVuQmluYXJ5VGVzdEZhaWx1cmUoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIFJ1blRlc3RzIHRv
IGhhbmRsZSBhIGJpbmFyeSB0ZXN0IGZhaWx1cmUuIiIiCi0KLSAgICBzZWxmLmZha2Vfb3Muc3Bh
d25faW1wbCA9IHNlbGYuU3Bhd25GYWlsdXJlCi0gICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAg
ICAgc2VsZi50ZXN0X3J1bm5lci5SdW5UZXN0cygKLSAgICAgICAgICAgIFtdLAotICAgICAgICAg
ICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSks
Ci0gICAgICAgIDEpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm51bV9zcGF3bl9jYWxscywg
MSkKLQotICBkZWYgdGVzdENvbWJpbmVkVGVzdFN1Y2Nlc3Moc2VsZik6Ci0gICAgIiIiRXhlcmNp
c2VzIFJ1blRlc3RzIHRvIGhhbmRsZSBhIHN1Y2Nlc3Mgb2YgYm90aCBQeXRob24gYW5kIGJpbmFy
eSB0ZXN0LiIiIgotCi0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxmLlNwYXduU3Vj
Y2VzcwotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuUnVu
VGVzdHMoCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0
ZXN0X3VuaXR0ZXN0JyldLAotICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdf
RElSICsgJy9ndGVzdF91bml0dGVzdCcpXSksCi0gICAgICAgIDApCi0gICAgc2VsZi5hc3NlcnRF
cXVhbChzZWxmLm51bV9zcGF3bl9jYWxscywgMikKLQotICBkZWYgdGVzdENvbWJpbmVkVGVzdFN1
Y2Nlc3NBbmRGYWlsdXJlKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0cyB0byBoYW5k
bGUgYSBzdWNjZXNzIG9mIGJvdGggUHl0aG9uIGFuZCBiaW5hcnkgdGVzdC4iIiIKLQotICAgIGRl
ZiBTcGF3bkltcGwoZXhlY3V0YWJsZSwgYXJndik6Ci0gICAgICBzZWxmLm51bV9zcGF3bl9jYWxs
cyArPSAxCi0gICAgICAjIFNpbXVsYXRlcyBmYWlsdXJlIG9mIGEgUHl0aG9uIHRlc3QgYW5kIHN1
Y2Nlc3Mgb2YgYSBiaW5hcnkgdGVzdC4KLSAgICAgIGlmICcucHknIGluIGV4ZWN1dGFibGUgb3Ig
Jy5weScgaW4gYXJndlswXToKLSAgICAgICAgcmV0dXJuIDEKLSAgICAgIGVsc2U6Ci0gICAgICAg
IHJldHVybiAwCi0KLSAgICBzZWxmLmZha2Vfb3Muc3Bhd25faW1wbCA9IFNwYXduSW1wbAotICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuUnVuVGVzdHMoCi0g
ICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0
ZXN0JyldLAotICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9n
dGVzdF91bml0dGVzdCcpXSksCi0gICAgICAgIDApCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzZWxm
Lm51bV9zcGF3bl9jYWxscywgMikKLQotCi1jbGFzcyBQYXJzZUFyZ3NUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKLSAgIiIiRXhlcmNpc2VzIFBhcnNlQXJncy4iIiIKLQotICBkZWYgdGVzdE5vT3B0
aW9ucyhzZWxmKToKLSAgICBvcHRpb25zLCBhcmdzID0gcnVuX3Rlc3RzX3V0aWwuUGFyc2VBcmdz
KCdndGVzdCcsIGFyZ3Y9WydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3Ms
IFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRfKG9wdGlvbnMuY29uZmlndXJhdGlvbnMg
aXMgTm9uZSkKLSAgICBzZWxmLmFzc2VydEZhbHNlKG9wdGlvbnMuYnVpbHRfY29uZmlndXJhdGlv
bnMpCi0KLSAgZGVmIHRlc3RPcHRpb25DKHNlbGYpOgotICAgIG9wdGlvbnMsIGFyZ3MgPSBydW5f
dGVzdHNfdXRpbC5QYXJzZUFyZ3MoCi0gICAgICAgICdndGVzdCcsIGFyZ3Y9WydzY3JpcHQucHkn
LCAnLWMnLCAnZGJnJ10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBbJ3NjcmlwdC5weSdd
KQotICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5jb25maWd1cmF0aW9ucywgJ2RiZycpCi0g
ICAgc2VsZi5hc3NlcnRGYWxzZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRpb25zKQotCi0gIGRl
ZiB0ZXN0T3B0aW9uQShzZWxmKToKLSAgICBvcHRpb25zLCBhcmdzID0gcnVuX3Rlc3RzX3V0aWwu
UGFyc2VBcmdzKCdndGVzdCcsIGFyZ3Y9WydzY3JpcHQucHknLCAnLWEnXSkKLSAgICBzZWxmLmFz
c2VydEVxdWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChvcHRp
b25zLmNvbmZpZ3VyYXRpb25zLCAnYWxsJykKLSAgICBzZWxmLmFzc2VydEZhbHNlKG9wdGlvbnMu
YnVpbHRfY29uZmlndXJhdGlvbnMpCi0KLSAgZGVmIHRlc3RPcHRpb25CKHNlbGYpOgotICAgIG9w
dGlvbnMsIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoJ2d0ZXN0JywgYXJndj1bJ3Nj
cmlwdC5weScsICctYiddKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgWydzY3JpcHQucHkn
XSkKLSAgICBzZWxmLmFzc2VydF8ob3B0aW9ucy5jb25maWd1cmF0aW9ucyBpcyBOb25lKQotICAg
IHNlbGYuYXNzZXJ0VHJ1ZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRpb25zKQotCi0gIGRlZiB0
ZXN0T3B0aW9uQ0FuZE9wdGlvbkIoc2VsZik6Ci0gICAgb3B0aW9ucywgYXJncyA9IHJ1bl90ZXN0
c191dGlsLlBhcnNlQXJncygKLSAgICAgICAgJ2d0ZXN0JywgYXJndj1bJ3NjcmlwdC5weScsICct
YycsICdkYmcnLCAnLWInXSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsnc2NyaXB0LnB5
J10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLmNvbmZpZ3VyYXRpb25zLCAnZGJnJykK
LSAgICBzZWxmLmFzc2VydFRydWUob3B0aW9ucy5idWlsdF9jb25maWd1cmF0aW9ucykKLQotICBk
ZWYgdGVzdE9wdGlvbkgoc2VsZik6Ci0gICAgaGVscF9jYWxsZWQgPSBbRmFsc2VdCi0KLSAgICAj
IFN1cHByZXNzZXMgbGludCB3YXJuaW5nIG9uIHVudXNlZCBhcmd1bWVudHMuICBUaGVzZSBhcmd1
bWVudHMgYXJlCi0gICAgIyByZXF1aXJlZCBieSBvcHRwYXJzZSwgZXZlbiB0aG91Z2ggdGhleSBh
cmUgdW51c2VkLgotICAgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1XMDYxMwotICAgIGRlZiBWZXJp
ZnlIZWxwKG9wdGlvbiwgb3B0LCB2YWx1ZSwgcGFyc2VyKToKLSAgICAgIGhlbHBfY2FsbGVkWzBd
ID0gVHJ1ZQotCi0gICAgIyBWZXJpZmllcyB0aGF0IC1oIGNhdXNlcyB0aGUgaGVscCBjYWxsYmFj
ayB0byBiZSBjYWxsZWQuCi0gICAgaGVscF9jYWxsZWRbMF0gPSBGYWxzZQotICAgIF8sIGFyZ3Mg
PSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoCi0gICAgICAgICdndGVzdCcsIGFyZ3Y9WydzY3Jp
cHQucHknLCAnLWgnXSwgaGVscF9jYWxsYmFjaz1WZXJpZnlIZWxwKQotICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYXJncywgWydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydFRydWUoaGVscF9jYWxs
ZWRbMF0pCi0KLSAgICAjIFZlcmlmaWVzIHRoYXQgLS1oZWxwIGNhdXNlcyB0aGUgaGVscCBjYWxs
YmFjayB0byBiZSBjYWxsZWQuCi0gICAgaGVscF9jYWxsZWRbMF0gPSBGYWxzZQotICAgIF8sIGFy
Z3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoCi0gICAgICAgICdndGVzdCcsIGFyZ3Y9Wydz
Y3JpcHQucHknLCAnLS1oZWxwJ10sIGhlbHBfY2FsbGJhY2s9VmVyaWZ5SGVscCkKLSAgICBzZWxm
LmFzc2VydEVxdWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRUcnVlKGhl
bHBfY2FsbGVkWzBdKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIHVuaXR0ZXN0
Lm1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmln
L0RlYnVnUHJvamVjdC54Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0Nv
bmZpZy9EZWJ1Z1Byb2plY3QueGNjb25maWcKaW5kZXggNTc2ZjNkOWJmMGUyNGY2ZWU5ODkxODEz
ZTRlMThlNGYxYzFiZTQ2Mi4uNjQ1NzAxZTIyZDYwNWVjNDIyMzlmMzBjMzMwYzQ1NGRiNzA5YTVi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0RlYnVn
UHJvamVjdC54Y2NvbmZpZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25m
aWcvRGVidWdQcm9qZWN0LnhjY29uZmlnCkBAIC01LDcgKzUsNyBAQAogLy8gIGV4YW1wbGVzLiBJ
dCBpcyBzZXQgaW4gdGhlICJCYXNlZCBPbjoiIGRyb3Bkb3duIGluIHRoZSAiUHJvamVjdCIgaW5m
bwogLy8gIGRpYWxvZy4KIC8vICBUaGlzIGZpbGUgaXMgYmFzZWQgb24gdGhlIFhjb2RlIENvbmZp
Z3VyYXRpb24gZmlsZXMgaW46Ci0vLyAgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS10
b29sYm94LWZvci1tYWMvCisvLyAgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGUtdG9v
bGJveC1mb3ItbWFjCiAvLyAKIAogI2luY2x1ZGUgIkdlbmVyYWwueGNjb25maWciCkBAIC0yOCwx
MiArMjgsMyBAQCBPVEhFUl9DRkxBR1MgPSAkKE9USEVSX0NGTEFHUykgLURERUJVRz0xCiAvLyBU
aGVzZSBhcmUgdHVybmVkIG9mZiB0byBhdm9pZCBTVEwgaW5jb21wYXRpYmlsaXRpZXMgd2l0aCBj
bGllbnQgY29kZQogLy8gLy8gVHVybnMgb24gc3BlY2lhbCBDKysgU1RMIGNoZWNrcyB0byAiZW5j
b3VyYWdlIiBnb29kIFNUTCB1c2UKIC8vIEdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAk
KEdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMpIF9HTElCQ1hYX0RFQlVHX1BFREFOVElDIF9H
TElCQ1hYX0RFQlVHIF9HTElCQ1BQX0NPTkNFUFRfQ0hFQ0tTCi0KLS8vIFVzZWQgYnkgSEVBREVS
X1NFQVJDSF9QQVRIUyBpbiBHZW5lcmFsLnhjY29uZmlnCi1XRUJDT1JFX1BSSVZBVEVfSEVBREVS
U19ESVIgPSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvV2ViQ29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhl
YWRlcnM7Ci0KLU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVMKLQotU0RLUk9PVCA9ICQoU0RLUk9PVF8k
KFVTRV9JTlRFUk5BTF9TREspKTsKLVNES1JPT1RfID0gbWFjb3N4OwotU0RLUk9PVF9ZRVMgPSBt
YWNvc3guaW50ZXJuYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29k
ZS9Db25maWcvRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QveGNvZGUvQ29uZmlnL0ZyYW1ld29ya1RhcmdldC54Y2NvbmZpZwppbmRleCBmNGRhOWQyMzk5
MTYzNWFiZGNkYTgyYjZhMDZlYWMzZmM4NTg5MGFkLi43NzA4MWZiY2IwNWEwNjU5NmFjNzQxOWRl
ZTQ4YWY2NDMyZWNmMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29k
ZS9Db25maWcvRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3hjb2RlL0NvbmZpZy9GcmFtZXdvcmtUYXJnZXQueGNjb25maWcKQEAgLTQsNyArNCw3
IEBACiAvLyAgVGhlc2UgYXJlIEZyYW1ld29yayB0YXJnZXQgc2V0dGluZ3MgZm9yIHRoZSBndGVz
dCBmcmFtZXdvcmsgYW5kIGV4YW1wbGVzLiBJdAogLy8gIGlzIHNldCBpbiB0aGUgIkJhc2VkIE9u
OiIgZHJvcGRvd24gaW4gdGhlICJUYXJnZXQiIGluZm8gZGlhbG9nLgogLy8gIFRoaXMgZmlsZSBp
cyBiYXNlZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBpbjoKLS8vICBodHRwOi8v
Y29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8KKy8vICBodHRwczovL2dp
dGh1Yi5jb20vZ29vZ2xlL2dvb2dsZS10b29sYm94LWZvci1tYWMKIC8vIAogCiAvLyBEeW5hbWlj
IGxpYnMgbmVlZCB0byBiZSBwb3NpdGlvbiBpbmRlcGVuZGVudApAQCAtMTUsNSArMTUsMyBAQCBT
VFJJUF9TVFlMRSA9IG5vbi1nbG9iYWwKIAogLy8gTGV0IHRoZSB1c2VyIGluc3RhbGwgYnkgc3Bl
Y2lmeWluZyB0aGUgJERTVFJPT1Qgd2l0aCB4Y29kZWJ1aWxkCiBTS0lQX0lOU1RBTEwgPSBOTwot
Ci1JTlNUQUxMX1BBVEggPSAkKFNZU1RFTV9MSUJSQVJZX0RJUikvUHJpdmF0ZUZyYW1ld29ya3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvR2VuZXJh
bC54Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9HZW5lcmFs
LnhjY29uZmlnCmluZGV4IDNiZDJhNTg2YTU3MDVmY2Y2NmVjMmQ5NTkyYWZhYzNkOGQ2ZDdkZTAu
LjFhYmE0ODZmMDU5YjQ3MmRiYzczMzE2NjE0YjQ5NmZlNGE2MDFjN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9HZW5lcmFsLnhjY29uZmlnCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9HZW5lcmFsLnhjY29uZmlnCkBA
IC00LDIxICs0LDExIEBACiAvLyAgVGhlc2UgYXJlIEdlbmVyYWwgY29uZmlndXJhdGlvbiBzZXR0
aW5ncyBmb3IgdGhlIGd0ZXN0IGZyYW1ld29yayBhbmQKIC8vICBleGFtcGxlcy4KIC8vICBUaGlz
IGZpbGUgaXMgYmFzZWQgb24gdGhlIFhjb2RlIENvbmZpZ3VyYXRpb24gZmlsZXMgaW46Ci0vLyAg
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS10b29sYm94LWZvci1tYWMvCi0vLwotCi0j
aW5jbHVkZT8gIi4uLy4uLy4uLy4uLy4uLy4uL0ludGVybmFsL0NvbmZpZ3VyYXRpb25zL0hhdmVJ
bnRlcm5hbFNESy54Y2NvbmZpZyIKLQotVVNFX0lOVEVSTkFMX1NESyA9ICQoVVNFX0lOVEVSTkFM
X1NES18kKENPTkZJR1VSQVRJT04pKTsKLVVTRV9JTlRFUk5BTF9TREtfUHJvZHVjdGlvbiA9IFlF
UzsKLVVTRV9JTlRFUk5BTF9TREtfRGVidWcgPSAkKEhBVkVfSU5URVJOQUxfU0RLKTsKLVVTRV9J
TlRFUk5BTF9TREtfUmVsZWFzZSA9ICQoSEFWRV9JTlRFUk5BTF9TREspOwotCi1HQ0NfVkVSU0lP
TiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7Ci0KLUFSQ0hTID0gJChBUkNI
U19TVEFOREFSRF8zMl82NF9CSVQpOworLy8gIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29v
Z2xlLXRvb2xib3gtZm9yLW1hYworLy8gCiAKLUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUgIiQoV0VCQ09SRV9QUklWQVRFX0hFQURF
UlNfRElSKS9Gb3J3YXJkaW5nSGVhZGVycyIgLi4vIC4uL2luY2x1ZGUvCisvLyBCdWlsZCBmb3Ig
UFBDIGFuZCBJbnRlbCwgMzItIGFuZCA2NC1iaXQKK0FSQ0hTID0gaTM4NiB4ODZfNjQgcHBjIHBw
YzY0CiAKIC8vIFplcm9saW5rIHByZXZlbnRzIGxpbmsgd2FybmluZ3Mgc28gdHVybiBpdCBvZmYK
IFpFUk9fTElOSyA9IE5PCkBAIC0yNywyMSArMTcsNyBAQCBaRVJPX0xJTksgPSBOTwogUFJFQklO
RElORyA9IE5PCiAKIC8vIFN0cmljdGVzdCB3YXJuaW5nIHBvbGljeQotV0FSTklOR19DRkxBR1Mg
PSAtV2FsbCAtV2Vycm9yIC1XZW5kaWYtbGFiZWxzIC1XbmV3bGluZS1lb2YgLVduby1zaWduLWNv
bXBhcmUgLVdzaGFkb3c7Ci1DTEFOR19XQVJOX0JPT0xfQ09OVkVSU0lPTiA9IFlFUzsKLUNMQU5H
X1dBUk5fQ09OU1RBTlRfQ09OVkVSU0lPTiA9IFlFUzsKLUNMQU5HX1dBUk5fRU1QVFlfQk9EWSA9
IFlFUzsKLUNMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOwotQ0xBTkdfV0FSTl9JTlRf
Q09OVkVSU0lPTiA9IFlFUzsKLUNMQU5HX1dBUk5fU1RSSUNUX1BST1RPVFlQRVMgPSBZRVM7Ci1D
TEFOR19XQVJOX19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0gWUVTOwotRU5BQkxFX1NUUklDVF9P
QkpDX01TR1NFTkQgPSBZRVM7Ci1HQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IFlF
UzsKLUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOwotR0NDX1dBUk5fVU5ERUNMQVJF
RF9TRUxFQ1RPUiA9IFlFUzsKLUdDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1MgPSBZRVM7Ci1H
Q0NfV0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7Ci1HQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUg
PSBZRVM7CitXQVJOSU5HX0NGTEFHUyA9IC1XYWxsIC1XZXJyb3IgLVdlbmRpZi1sYWJlbHMgLVdu
ZXdsaW5lLWVvZiAtV25vLXNpZ24tY29tcGFyZSAtV3NoYWRvdwogCiAvLyBXb3JrIGFyb3VuZCBY
Y29kZSBidWdzIGJ5IHVzaW5nIGV4dGVybmFsIHN0cmlwLiBTZWU6CiAvLyBodHRwOi8vbGlzdHMu
YXBwbGUuY29tL2FyY2hpdmVzL1hjb2RlLXVzZXJzLzIwMDYvRmViL21zZzAwMDUwLmh0bWwKQEAg
LTUwLDI3ICsyNiwxNiBAQCBTRVBBUkFURV9TVFJJUCA9IFlFUwogLy8gRm9yY2UgQzk5IGRpYWxl
Y3QKIEdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gYzk5CiAKLS8vIEZvcmNlIEMrKzE0Ci1DTEFO
R19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnUrKzE0OwotCiAvLyBub3Qgc3VyZSB3aHkgYXBw
bGUgZGVmYXVsdHMgdGhpcyBvbiwgYnV0IGl0J3MgcHJldHR5IHJpc2t5CiBBTFdBWVNfU0VBUkNI
X1VTRVJfUEFUSFMgPSBOTwogCiAvLyBUdXJuIG9uIHBvc2l0aW9uIGRlcGVuZGVudCBjb2RlIGZv
ciBtb3N0IGNhc2VzIChvdmVycmlkZGVuIHdoZXJlIGFwcHJvcHJpYXRlKQogR0NDX0RZTkFNSUNf
Tk9fUElDID0gWUVTCiAKLUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAkKEdDQ19QUkVQ
Uk9DRVNTT1JfREVGSU5JVElPTlMpIEdURVNUX0hBU19UUjFfVFVQTEU9MCBHVEVTVF9IQVNfUlRU
ST0wOwotCi1DTEFOR19DWFhfTElCUkFSWSA9IGxpYmMrKzsKLQotVEFSR0VUX01BQ19PU19YX1ZF
UlNJT05fTUFKT1IgPSAkKE1BQ19PU19YX1ZFUlNJT05fTUFKT1IpOwotCi1DT01CSU5FX0hJRFBJ
X0lNQUdFUyA9IFlFUzsKKy8vIERlZmF1bHQgU0RLIGFuZCBtaW5pbXVtIE9TIHZlcnNpb24gaXMg
MTAuNAorU0RLUk9PVCA9ICQoREVWRUxPUEVSX1NES19ESVIpL01hY09TWDEwLjR1LnNkaworTUFD
T1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNAorR0NDX1ZFUlNJT04gPSA0LjAKIAogLy8gVkVS
U0lPTklORyBCVUlMRCBTRVRUSU5HUyAodXNlZCBpbiBJbmZvLnBsaXN0KQogR1RFU1RfVkVSU0lP
TklORk9fQUJPVVQgPSAgwqkgMjAwOCBHb29nbGUgSW5jLgotT1RIRVJfQ0ZMQUdTID0gJChBU0FO
X09USEVSX0NGTEFHUyk7Ci1PVEhFUl9DUExVU1BMVVNGTEFHUyA9ICQoQVNBTl9PVEhFUl9DUExV
U1BMVVNGTEFHUyk7Ci1PVEhFUl9MREZMQUdTID0gJChBU0FOX09USEVSX0xERkxBR1MpOwotCi1T
VVBQT1JURURfUExBVEZPUk1TID0gaXBob25lb3MgaXBob25lc2ltdWxhdG9yIG1hY29zeCB0dm9z
IHR2c2ltdWxhdG9yIHdhdGNob3Mgd2F0Y2hzaW11bGF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvUHJvZHVjdGlvblByb2plY3QueGNjb25maWcg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvUHJvZHVjdGlvblByb2plY3Qu
eGNjb25maWcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxNmM2ODc4ZTk3NjEwMTg4
ZGFhODYyOWQzNTIxYWI5NDc3NmJhYzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1Byb2R1
Y3Rpb25Qcm9qZWN0LnhjY29uZmlnCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLy8K
LS8vICBQcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZpZwotLy8KLS8vICBUaGVzZSBhcmUgUHJvZHVj
dGlvbiBDb25maWd1cmF0aW9uIHByb2plY3Qgc2V0dGluZ3MgZm9yIHRoZSBndGVzdCBmcmFtZXdv
cmsKLS8vICBhbmQgZXhhbXBsZXMuIEl0IGlzIHNldCBpbiB0aGUgIkJhc2VkIE9uOiIgZHJvcGRv
d24gaW4gdGhlICJQcm9qZWN0IiBpbmZvCi0vLyAgZGlhbG9nLgotLy8gIFRoaXMgZmlsZSBpcyBi
YXNlZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBpbjoKLS8vICBodHRwOi8vY29k
ZS5nb29nbGUuY29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8KLS8vIAotCi0jaW5jbHVkZSAi
UmVsZWFzZVByb2plY3QueGNjb25maWciCi0KLS8vIFVzZWQgYnkgSEVBREVSX1NFQVJDSF9QQVRI
UyBpbiBHZW5lcmFsLnhjY29uZmlnCi1XRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIgPSAkKFdF
QkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUl8kKFdLX1VTRV9PVkVSUklERV9GUkFNRVdPUktTX0RJ
UikpOwotV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSX05PID0gJChTWVNURU1fTElCUkFSWV9E
SVIpL0ZyYW1ld29ya3MvV2ViS2l0LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvV2Vi
Q29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnM7Ci1XRUJDT1JFX1BSSVZBVEVfSEVBREVSU19E
SVJfWUVTID0gJChXS19PVkVSUklERV9GUkFNRVdPUktTX0RJUikvV2ViQ29yZS5mcmFtZXdvcmsv
UHJpdmF0ZUhlYWRlcnM7Ci0KLUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAkKFdLX1FVT1RFRF9P
VkVSUklERV9GUkFNRVdPUktTX0RJUikgJChpbmhlcml0ZWQpOwotCi1PTkxZX0FDVElWRV9BUkNI
ID0gTk8KLQotU0RLUk9PVCA9IG1hY29zeC5pbnRlcm5hbDsKLQotV0tfRU1QVFlfID0gWUVTOwot
V0tfTk9UXyA9IFlFUzsKLVdLX05PVF9ZRVMgPSBOTzsKLQotV0tfVVNFX09WRVJSSURFX0ZSQU1F
V09SS1NfRElSW3Nkaz1tYWNvc3gqXSA9ICQoV0tfTk9UXyQoV0tfRU1QVFlfJChXS19PVkVSUklE
RV9GUkFNRVdPUktTX0RJUikpKTsKLQotV0tfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVIgPSAkKFdL
X09WRVJSSURFX0ZSQU1FV09SS1NfRElSX1VTRV9TVEFHSU5HX0lOU1RBTExfUEFUSF8kKFVTRV9T
VEFHSU5HX0lOU1RBTExfUEFUSCkpOwotV0tfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVJfVVNFX1NU
QUdJTkdfSU5TVEFMTF9QQVRIX1lFUyA9ICQoU1lTVEVNX0xJQlJBUllfRElSKS9TdGFnZWRGcmFt
ZXdvcmtzL1NhZmFyaTsKLQotV0tfUVVPVEVEX09WRVJSSURFX0ZSQU1FV09SS1NfRElSID0gJChX
S19RVU9URURfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVJfJChXS19VU0VfT1ZFUlJJREVfRlJBTUVX
T1JLU19ESVIpKTsKLVdLX1FVT1RFRF9PVkVSUklERV9GUkFNRVdPUktTX0RJUl9ZRVMgPSAiJChX
S19PVkVSUklERV9GUkFNRVdPUktTX0RJUikiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1JlbGVhc2VQcm9qZWN0LnhjY29uZmlnIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1JlbGVhc2VQcm9qZWN0LnhjY29uZmlnCmluZGV4
IDEzZTkxN2ZiZmEyZGRmMmQzZWU1MzE1OThkYzBmYjBmMmI1YmY4NzYuLmRmOWEzOGY4OWI5Nzcy
ZDY1Nzc4NDgyMWIyYjE2M2RlZGFkNDQ0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3hjb2RlL0NvbmZpZy9SZWxlYXNlUHJvamVjdC54Y2NvbmZpZworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvUmVsZWFzZVByb2plY3QueGNjb25maWcKQEAg
LTUsNyArNSw3IEBACiAvLyAgYW5kIGV4YW1wbGVzLiBJdCBpcyBzZXQgaW4gdGhlICJCYXNlZCBP
bjoiIGRyb3Bkb3duIGluIHRoZSAiUHJvamVjdCIgaW5mbwogLy8gIGRpYWxvZy4KIC8vICBUaGlz
IGZpbGUgaXMgYmFzZWQgb24gdGhlIFhjb2RlIENvbmZpZ3VyYXRpb24gZmlsZXMgaW46Ci0vLyAg
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS10b29sYm94LWZvci1tYWMvCisvLyAgaHR0
cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGUtdG9vbGJveC1mb3ItbWFjCiAvLyAKIAogI2lu
Y2x1ZGUgIkdlbmVyYWwueGNjb25maWciCkBAIC0zMCwxMiArMzAsMyBAQCBPVEhFUl9DRkxBR1Mg
PSAkKE9USEVSX0NGTEFHUykgLUROREVCVUc9MSAtV25vLXVudXNlZC12YXJpYWJsZQogCiAvLyBX
aGVuIHdlIHN0cmlwIHdlIHdhbnQgdG8gc3RyaXAgYWxsIHN5bWJvbHMgaW4gcmVsZWFzZSwgYnV0
IHNhdmUgZXh0ZXJuYWxzLgogU1RSSVBfU1RZTEUgPSBhbGwKLQotLy8gVXNlZCBieSBIRUFERVJf
U0VBUkNIX1BBVEhTIGluIEdlbmVyYWwueGNjb25maWcKLVdFQkNPUkVfUFJJVkFURV9IRUFERVJT
X0RJUiA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9XZWJDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVh
ZGVyczsKLQotT05MWV9BQ1RJVkVfQVJDSCA9IFlFUwotCi1TREtST09UID0gJChTREtST09UXyQo
VVNFX0lOVEVSTkFMX1NESykpOwotU0RLUk9PVF8gPSBtYWNvc3g7Ci1TREtST09UX1lFUyA9IG1h
Y29zeC5pbnRlcm5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2Rl
L0NvbmZpZy9TdGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QveGNvZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcKaW5kZXggZGQz
MzI1NWE5NDQ3NzAyMGNmMTFmNzA1NWU0NGFlMjUyOGViOWY5Ny4uZDI0MjRmZTgwZDFjZGFkYjVh
MDI2MDNjODlkODI0NTU4NTg1YzE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QveGNvZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25m
aWcKQEAgLTQsNyArNCw3IEBACiAvLyAgVGhlc2UgYXJlIHN0YXRpYyBsaWJyYXJ5IHRhcmdldCBz
ZXR0aW5ncyBmb3IgbGliZ3Rlc3QuYS4gSXQKIC8vICBpcyBzZXQgaW4gdGhlICJCYXNlZCBPbjoi
IGRyb3Bkb3duIGluIHRoZSAiVGFyZ2V0IiBpbmZvIGRpYWxvZy4KIC8vICBUaGlzIGZpbGUgaXMg
YmFzZWQgb24gdGhlIFhjb2RlIENvbmZpZ3VyYXRpb24gZmlsZXMgaW46Ci0vLyAgaHR0cDovL2Nv
ZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS10b29sYm94LWZvci1tYWMvCisvLyAgaHR0cHM6Ly9naXRo
dWIuY29tL2dvb2dsZS9nb29nbGUtdG9vbGJveC1mb3ItbWFjCiAvLyAKIAogLy8gU3RhdGljIGxp
YnMgY2FuIGJlIGluY2x1ZGVkIGluIGJ1bmRsZXMgc28gbWFrZSB0aGVtIHBvc2l0aW9uIGluZGVw
ZW5kZW50CkBAIC0xNiw1ICsxNiwzIEBAIFNUUklQX1NUWUxFID0gZGVidWdnaW5nCiAKIC8vIExl
dCB0aGUgdXNlciBpbnN0YWxsIGJ5IHNwZWNpZnlpbmcgdGhlICREU1RST09UIHdpdGggeGNvZGVi
dWlsZAogU0tJUF9JTlNUQUxMID0gTk8KLQotT1RIRVJfTERGTEFHUyA9IDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL01ha2VmaWxlIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QveGNvZGUvTWFrZWZpbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJj
OGU4NDkzZGYyOTY4YWJlNzcxYzZkNjc4ZThkMjlkMzljOWIzYTQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNv
ZGUvTWFrZWZpbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVNDUklQVFNfUEFUSCA/
PSAuLi8uLi8uLi8uLi9Ub29scy9TY3JpcHRzCi1pbmNsdWRlIC4uLy4uLy4uLy4uL01ha2VmaWxl
LnNoYXJlZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2FtcGxl
cy9GcmFtZXdvcmtTYW1wbGUvcnVudGVzdHMuc2ggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94
Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9ydW50ZXN0cy5zaApvbGQgbW9kZSAxMDA3NTUK
bmV3IG1vZGUgMTAwNjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29k
ZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS93aWRnZXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjCmlu
ZGV4IDYxYzBkMmZmZDc2ZDE4MDZhYTM1OTc5ZDhhZTM2NDEwNjQ4YWFhMTUuLjg3MjU5OTQyMTg1
MTQwOGU3NmFhYjZjNTYwYjgxODkyNDU5YmJkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxl
L3dpZGdldF90ZXN0LmNjCkBAIC0zNiw3ICszNiw3IEBACiAvLyBUaGlzIGlzIGEgc2ltcGxlIHRl
c3QgZmlsZSBmb3IgdGhlIFdpZGdldCBjbGFzcyBpbiB0aGUgV2lkZ2V0LmZyYW1ld29yawogCiAj
aW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKIAogI2luY2x1ZGUgPFdpZGdldC93aWRnZXQuaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2NyaXB0cy9ydW50ZXN0cy5zaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL1NjcmlwdHMvcnVudGVzdHMuc2gKb2xkIG1vZGUgMTAw
NzU1Cm5ldyBtb2RlIDEwMDY0NApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
eGNvZGUvU2NyaXB0cy92ZXJzaW9uZ2VuZXJhdGUucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC94Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1v
ZGUgMTAwNzU1CmluZGV4IDgxZGU4Yzk2YWM1ZDg2Y2E2Mzk0NTZjOTBjNDMzMDY3YmRmZDQwZTUu
LmJkZDc1NDFhZDc5N2ZhNjczZjY1ZGEzODE2OGUxNTgwZmQ3ZGRlM2EKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QveGNvZGUvU2NyaXB0cy92ZXJzaW9uZ2VuZXJhdGUucHkKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2NyaXB0cy92ZXJzaW9uZ2VuZXJhdGUucHkKQEAg
LTI5LDcgKzI5LDcgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSIiIkEgc2Ny
aXB0IHRvIHByZXBhcmUgdmVyc2lvbiBpbmZvcm10aW9uIGZvciB1c2UgdGhlIGd0ZXN0IEluZm8u
cGxpc3QgZmlsZS4KKyIiIkEgc2NyaXB0IHRvIHByZXBhcmUgdmVyc2lvbiBpbmZvcm1hdGlvbiBm
b3IgdXNlIHRoZSBndGVzdCBJbmZvLnBsaXN0IGZpbGUuCiAKICAgVGhpcyBzY3JpcHQgZXh0cmFj
dHMgdGhlIHZlcnNpb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgY29uZmlndXJlLmFjIGZpbGUgYW5k
CiAgIHVzZXMgaXQgdG8gZ2VuZXJhdGUgYSBoZWFkZXIgZmlsZSBjb250YWluaW5nIHRoZSBzYW1l
IGluZm9ybWF0aW9uLiBUaGUKQEAgLTQyLDcgKzQyLDcgQEAKICAgICAxLiBUaGUgQUNfSU5JVCBt
YWNybyB3aWxsIGJlIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGZpcnN0IDEwMjQgY2hhcmFjdGVycwog
ICAgICAgIG9mIGNvbmZpZ3VyZS5hYwogICAgIDIuIFRoZSB2ZXJzaW9uIHN0cmluZyB3aWxsIGJl
IDMgaW50ZWdlcnMgc2VwYXJhdGVkIGJ5IHBlcmlvZHMgYW5kIHdpbGwgYmUKLSAgICAgICBzdXJy
b3VuZGVkIGJ5IHNxdXJlIGJyYWNrZXRzLCAiWyIgYW5kICJdIiAoZS5nLiBbMS4wLjFdKS4gVGhl
IGZpcnN0CisgICAgICAgc3Vycm91bmRlZCBieSBzcXVhcmUgYnJhY2tldHMsICJbIiBhbmQgIl0i
IChlLmcuIFsxLjAuMV0pLiBUaGUgZmlyc3QKICAgICAgICBzZWdtZW50IHJlcHJlc2VudHMgdGhl
IG1ham9yIHZlcnNpb24sIHRoZSBzZWNvbmQgcmVwcmVzZW50cyB0aGUgbWlub3IKICAgICAgICB2
ZXJzaW9uIGFuZCB0aGUgdGhpcmQgcmVwcmVzZW50cyB0aGUgZml4IHZlcnNpb24uCiAgICAgMy4g
Tm8gIikiIGNoYXJhY3RlciBleGlzdHMgYmV0d2VlbiB0aGUgb3BlbmluZyAiKCIgYW5kIGNsb3Np
bmcgIikiIG9mCkBAIC02OCw3ICs2OCw3IEBAIGNvbmZpZ19maWxlLmNsb3NlKCkKIAogIyBFeHRy
YWN0IHRoZSB2ZXJzaW9uIHN0cmluZyBmcm9tIHRoZSBBQ19JTklUIG1hY3JvCiAjICAgVGhlIGZv
bGxvd2luZyBpbml0X2V4cHJlc3Npb24gbWVhbnM6Ci0jICAgICBFeHRyYWN0IHRocmVlIGludGVn
ZXJzIHNlcGFyYXRlZCBieSBwZXJpb2RzIGFuZCBzdXJyb3VuZGVkIGJ5IHNxdXJlCisjICAgICBF
eHRyYWN0IHRocmVlIGludGVnZXJzIHNlcGFyYXRlZCBieSBwZXJpb2RzIGFuZCBzdXJyb3VuZGVk
IGJ5IHNxdWFyZQogIyAgICAgYnJhY2tldHMoZS5nLiAiWzEuMC4xXSIpIGJldHdlZW4gIkFDX0lO
SVQoIiBhbmQgIikiLiBEbyBub3QgYmUgZ3JlZWR5CiAjICAgICAoKj8gaXMgdGhlIG5vbi1ncmVl
ZHkgZmxhZykgc2luY2UgdGhhdCB3b3VsZCBwdWxsIGluIGV2ZXJ5dGhpbmcgYmV0d2VlbgogIyAg
ICAgdGhlIGZpcnN0ICIoIiBhbmQgdGhlIGxhc3QgIikiIGluIHRoZSBmaWxlLgpAQCAtODgsNyAr
ODgsNyBAQCBmaWxlX2RhdGEgPSAiIiIvLwogLy8gaXMgZXhlY3V0ZWQgaW4gYSAiUnVuIFNjcmlw
dCIgYnVpbGQgcGhhc2Ugd2hlbiBjcmVhdGluZyBndGVzdC5mcmFtZXdvcmsuIFRoaXMKIC8vIGhl
YWRlciBmaWxlIGlzIG5vdCB1c2VkIGR1cmluZyBjb21waWxhdGlvbiBvZiBDLXNvdXJjZS4gUmF0
aGVyLCBpdCBzaW1wbHkKIC8vIGRlZmluZXMgc29tZSB2ZXJzaW9uIHN0cmluZ3MgZm9yIHN1YnN0
aXR1dGlvbiBpbiB0aGUgSW5mby5wbGlzdC4gQmVjYXVzZSBvZgotLy8gdGhpcywgd2UgYXJlIG5v
dCBub3QgcmVzdHJpY3RlZCB0byBDLXN5bnRheCBub3IgYXJlIHdlIHVzaW5nIGluY2x1ZGUgZ3Vh
cmRzLgorLy8gdGhpcywgd2UgYXJlIG5vdCByZXN0cmljdGVkIHRvIEMtc3ludGF4IG5vciBhcmUg
d2UgdXNpbmcgaW5jbHVkZSBndWFyZHMuCiAvLwogCiAjZGVmaW5lIEdURVNUX1ZFUlNJT05JTkZP
X1NIT1JUICVzLiVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9n
dGVzdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
eGNvZGUvZ3Rlc3QueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZmYzZmJhZmVmYmFh
YzNiODM4MjQ4YjE3ZDU2ODc2YjNkNWY2YmU4Li5mMDVkOTZmZmE4OGU2NjA2OTg4ZjBlZjhhNGM2
ZDdkODYzOWM3YmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9n
dGVzdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3hjb2RlL2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3LDcgKzM3LDYg
QEAKIC8qIEVuZCBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhC
dWlsZEZpbGUgc2VjdGlvbiAqLwotCQkxQTBBNEM0NTE0QjdBM0I1MDA4OTUxMzUgLyogSmF2YVNj
cmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUEwQTRDNDQxNEI3QTNCNTAwODk1MTM1IC8qIEphdmFTY3JpcHRDb3JlLmZy
YW1ld29yayAqLzsgfTsKIAkJMjI0QTEyQTMwRTlFQURDQzAwQkQxN0ZEIC8qIGd0ZXN0LXRlc3Qt
cGFydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjI0
QTEyQTIwRTlFQURDQzAwQkQxN0ZEIC8qIGd0ZXN0LXRlc3QtcGFydC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJM0JGNkYyQTAwRTc5QjVBRDAwMEYy
RUVFIC8qIGd0ZXN0LXR5cGUtdXRpbC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQkY2RjI5RjBFNzlCNUFEMDAwRjJFRUUgLyog
Z3Rlc3QtdHlwZS11dGlsLmggKi87IH07CiAJCTNCRjZGMkE1MEU3OUI2MTYwMDBGMkVFRSAvKiBn
dGVzdC10eXBlZC10ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzQkY2RjJBNDBFNzlCNjE2MDAwRjJFRUUgLyogZ3Rlc3QtdHlwZWQtdGVzdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKQEAgLTQ3LDcgKzQ2
LDcgQEAKIAkJNDA0ODg0M0IwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNERTBFMkY3OTlCMDBDRjc2
NTggLyogZ3Rlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07CiAJCTQwNDg4NDNDMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcmVkX2ltcGwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0RGMEUyRjc5
OUIwMENGNzY1OCAvKiBndGVzdF9wcmVkX2ltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQdWJsaWMsICk7IH07IH07CiAJCTQwNDg4NDNEMEUyRjc5OUIwMENGNzY1OCAvKiBndGVz
dF9wcm9kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MDQ4ODNFMDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3RfcHJvZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJNDA0ODg0NTAwRTJGNzk5QjAwQ0Y3NjU4
IC8qIFJFQURNRSBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRSAqLzsgfTsKKwkJNDA0ODg0NTAw
RTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5t
ZCAqLzsgfTsKIAkJNDA0ODg0QTAwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRoLXRlc3Qt
aW50ZXJuYWwuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDA0ODgzRTIwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRoLXRl
c3QtaW50ZXJuYWwuaCAqLzsgfTsKIAkJNDA0ODg0QTEwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0
LWZpbGVwYXRoLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQwNDg4M0UzMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1maWxlcGF0
aC5oICovOyB9OwogCQk0MDQ4ODRBMjBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3QtaW50ZXJuYWwu
aCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDA0ODgzRTQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWludGVybmFsLmggKi87IH07
CkBAIC01NSw3ICs1NCw3IEBACiAJCTQwNDg4NEE0MEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1z
dHJpbmcuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDA0ODgzRTYwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXN0cmluZy5oICov
OyB9OwogCQk0MDQ4ODRBQzBFMkY3Q0Q5MDBDRjc2NTggLyogQ0hBTkdFUyBpbiBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODg0QTkwRTJGN0NEOTAwQ0Y3
NjU4IC8qIENIQU5HRVMgKi87IH07CiAJCTQwNDg4NEFEMEUyRjdDRDkwMENGNzY1OCAvKiBDT05U
UklCVVRPUlMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQwNDg4NEFBMEUyRjdDRDkwMENGNzY1OCAvKiBDT05UUklCVVRPUlMgKi87IH07Ci0JCTQwNDg4
NEFFMEUyRjdDRDkwMENGNzY1OCAvKiBDT1BZSU5HIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogQ09QWUlO
RyAqLzsgfTsKKwkJNDA0ODg0QUUwRTJGN0NEOTAwQ0Y3NjU4IC8qIExJQ0VOU0UgaW4gUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4NEFCMEUyRjdDRDkw
MENGNzY1OCAvKiBMSUNFTlNFICovOyB9OwogCQk0MDg5OUYzQTBGRkE3MEQ0MDAwQjI5QUUgLyog
Z3Rlc3QtYWxsLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMjI0QTEyQTEwRTlFQURBNzAwQkQxN0ZEIC8qIGd0ZXN0LWFsbC5jYyAqLzsgfTsKIAkJNDA4
OTlGNTAwRkZBNzI4MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggaW4gQ29weSBIZWFkZXJzIElu
dGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwODk5RjREMEZGQTcy
NzEwMDBCMjlBRSAvKiBndGVzdC10dXBsZS5oICovOyB9OwogCQk0MDg5OUY1MzBGRkE3MkEwMDAw
QjI5QUUgLyogZ3Rlc3RfdW5pdHRlc3QuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzQjIzOEMxMjBFN0ZFMTNDMDA4NDZFMTEgLyogZ3Rlc3RfdW5pdHRl
c3QuY2MgKi87IH07CkBAIC03OSw2ICs3OCwxNCBAQAogCQk0NTM5QzkzODBFQzI4MEUyMDBBNzBG
NEMgLyogZ3Rlc3QtbGlua2VkX3B0ci5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTM5QzkzNTBFQzI4MEUyMDBBNzBGNEMgLyog
Z3Rlc3QtbGlua2VkX3B0ci5oICovOyB9OwogCQk0NTM5QzkzOTBFQzI4MEUyMDBBNzBGNEMgLyog
Z3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUzOUM5MzYwRUMyODBFMjAwQTcwRjRD
IC8qIGd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmggKi87IH07CiAJCTQ1MzlDOTNBMEVDMjgw
RTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFs
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MzlDOTM3MEVDMjgwRTIwMEE3
MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLmggKi87IH07CisJCTQ1NjdDODE4MTI2NEZGNzEwMDc3
NDBCRSAvKiBndGVzdC1wcmludGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDU2N0M4MTcxMjY0RkY3MTAwNzc0MEJFIC8qIGd0ZXN0LXByaW50ZXJz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlGNjdE
NEYzRTFDN0Y1RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdENEYzRDFDN0Y1RDhCMDAxN0M3Mjkg
LyogZ3Rlc3QtcG9ydC1hcmNoLmggKi87IH07CisJCUY2N0Q0RjNGMUM3RjVEQTcwMDE3QzcyOSAv
KiBndGVzdC1wb3J0LWFyY2guaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGM0QxQzdGNUQ4QjAwMTdDNzI5IC8qIGd0ZXN0
LXBvcnQtYXJjaC5oICovOyB9OworCQlGNjdENEY0NDFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3Qt
cG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3
RDRGNDExQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCAqLzsgfTsKKwkJRjY3RDRGNDUx
QzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdENEY0MjFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rl
c3QtcHJpbnRlcnMuaCAqLzsgfTsKKwkJRjY3RDRGNDYxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdENEY0
MzFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QuaCAqLzsgfTsKKwkJRjY3RDRGNDgxQzdGNUUxNjAw
MTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgQ3VzdG9tICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2N0Q0RjQxMUM3RjVERDAwMDE3Qzcy
OSAvKiBndGVzdC1wb3J0LmggKi87IH07CisJCUY2N0Q0RjQ5MUM3RjVFMjYwMDE3QzcyOSAvKiBn
dGVzdC1wcmludGVycy5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20gKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGNDIxQzdGNUREMDAwMTdDNzI5IC8qIGd0
ZXN0LXByaW50ZXJzLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAog
LyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTE4OCw2ICsxOTUs
NyBAQAogCQkJCTQ1MzlDOTM4MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1saW5rZWRfcHRyLmgg
aW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLAogCQkJCTQ1MzlDOTM5MEVDMjgwRTIwMEE3MEY0
QyAvKiBndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5h
bCAqLywKIAkJCQk0NTM5QzkzQTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC5o
IGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKKwkJCQlGNjdENEYzRjFDN0Y1REE3MDAxN0M3
MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLAogCQkJ
CTQwNDg4NEEzMEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1wb3J0LmggaW4gQ29weSBIZWFkZXJz
IEludGVybmFsICovLAogCQkJCTQwNDg4NEE0MEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1zdHJp
bmcuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8sCiAJCQkJNDA4OTlGNTAwRkZBNzI4MTAw
MEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLApAQCAt
MTk2LDEwICsyMDQsMjEgQEAKIAkJCW5hbWUgPSAiQ29weSBIZWFkZXJzIEludGVybmFsIjsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OworCQlGNjdENEY0
NzFDN0Y1REY2MDAxN0M3MjkgLyogQ29weSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLyA9IHsK
KwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IEhlYWRlcnMvaW50ZXJuYWwvY3VzdG9tOworCQkJZHN0
U3ViZm9sZGVyU3BlYyA9IDY7CisJCQlmaWxlcyA9ICgKKwkJCQlGNjdENEY0ODFDN0Y1RTE2MDAx
N0M3MjkgLyogZ3Rlc3QtcG9ydC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20gKi8s
CisJCQkJRjY3RDRGNDkxQzdGNUUyNjAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gQ29w
eSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLywKKwkJCSk7CisJCQluYW1lID0gIkNvcHkgSGVh
ZGVycyBJbnRlcm5hbCBDdXN0b20iOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CisJCX07CiAvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCQkxQTBBNEM0NDE0QjdB
M0I1MDA4OTUxMzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGgg
PSBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTIyNEExMkExMEU5RUFEQTcwMEJEMTdGRCAvKiBndGVzdC1hbGwuY2MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gImd0ZXN0LWFsbC5jYyI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIyNEExMkEyMEU5RUFEQ0MwMEJEMTdGRCAvKiBndGVzdC10
ZXN0LXBhcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC10ZXN0
LXBhcnQuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNCMjM4QzEyMEU3RkUxM0Mw
MDg0NkUxMSAvKiBndGVzdF91bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IGd0ZXN0X3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjE4LDExICsyMzcsMTEgQEAKIAkJNDA0ODgzRTQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0
LWludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1pbnRl
cm5hbC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDA0ODgzRTUwRTJGNzk5QjAw
Q0Y3NjU4IC8qIGd0ZXN0LXBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Imd0ZXN0LXBvcnQuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwNDg4M0U2MEUy
Rjc5OUIwMENGNzY1OCAvKiBndGVzdC1zdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gImd0ZXN0LXN0cmluZy5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUg
PSBSRUFETUU7IHBhdGggPSAuLi9SRUFETUU7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
KwkJNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBSRUFETUUubWQ7IHBhdGggPSAuLi9SRUFETUUubWQ7IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKIAkJNDA0ODg0MEQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X21haW4uY2Mg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBndGVzdF9tYWluLmNjOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MDQ4ODRBOTBFMkY3Q0Q5MDBDRjc2NTggLyogQ0hB
TkdFUyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDSEFOR0VTOyBwYXRoID0gLi4vQ0hBTkdFUzsg
c291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk0MDQ4ODRBQTBFMkY3Q0Q5MDBDRjc2NTgg
LyogQ09OVFJJQlVUT1JTICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IENPTlRSSUJVVE9SUzsgcGF0
aCA9IC4uL0NPTlRSSUJVVE9SUzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQk0MDQ4
ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogQ09QWUlORyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBD
T1BZSU5HOyBwYXRoID0gLi4vQ09QWUlORzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9Owor
CQk0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogTElDRU5TRSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5h
bWUgPSBMSUNFTlNFOyBwYXRoID0gLi4vTElDRU5TRTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OwogCQk0MDg5OUY0MzBGRkE3MTg0MDAwQjI5QUUgLyogZ3Rlc3RfdW5pdHRlc3QtZnJhbWV3
b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29t
cGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSAiZ3Rl
c3RfdW5pdHRlc3QtZnJhbWV3b3JrIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJNDA4OTlGNEQwRkZBNzI3MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC10dXBsZS5oIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDA4OTlGQjMwRkZBNzU2NzAwMEIyOUFFIC8qIFN0YXRpY0xpYnJhcnlU
YXJnZXQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU3RhdGljTGli
cmFyeVRhcmdldC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzOSwx
MiArMjU4LDE2IEBACiAJCTQwRDRDREYzMEUzMEUwNzQwMDI5NDgwMSAvKiBHZW5lcmFsLnhjY29u
ZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEdlbmVyYWwueGNjb25maWc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwRDRDREY0MEUzMEUwNzQwMDI5NDgwMSAvKiBS
ZWxlYXNlUHJvamVjdC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBS
ZWxlYXNlUHJvamVjdC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDBE
NENGNTEwRTMwRjVFMjAwMjk0ODAxIC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0
LnhtbDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ0
QzQ4REZGMTRBNDA5OEYwMEEyRDlDNyAvKiBQcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBQcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZpZzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDUzOUM4RkYwRUMyN0Y2NDAwQTcwRjRDIC8q
IGd0ZXN0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZp
bGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGd0
ZXN0LmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDUz
OUM5MzMwRUMyODBBRTAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXRlc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXBhcmFtLXRlc3QuaCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ1MzlDOTM1MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1saW5rZWRf
cHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1saW5rZWRfcHRy
LmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NTM5QzkzNjBFQzI4MEUyMDBBNzBG
NEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gImd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NTM5QzkzNzBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0t
dXRpbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcGFyYW0tdXRp
bC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDU2N0M4MTcxMjY0RkY3MTAwNzc0
MEJFIC8qIGd0ZXN0LXByaW50ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
ICJndGVzdC1wcmludGVycy5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjY3RDRG
M0QxQzdGNUQ4QjAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQtYXJjaC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcG9ydC1hcmNoLmgiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGNjdENEY0MTFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcG9ydC5oIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjY3RDRGNDIxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50
ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1wcmludGVycy5o
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjY3RDRGNDMxQzdGNUREMDAwMTdDNzI5
IC8qIGd0ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGd0ZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTI4
NCwxNCArMzA3LDYgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKLQkJNDQ0RDExNzIxNEEyNjI4RjAwOUZFQzNGIC8qIEZyYW1ld29ya3Mg
Ki8gPSB7Ci0JCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQkxQTBBNEM0NTE0QjdBM0I1MDA4
OTUxMzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCi0JCQkp
OwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07CiAvKiBF
bmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhHcm91
cCBzZWN0aW9uICovCkBAIC0zMTYsNyArMzMxLDYgQEAKIAkJCQkwOEZCNzdBQ0ZFODQxNzA3QzAy
QUFDMDcgLyogU291cmNlICovLAogCQkJCTQwRDRDRjRFMEUzMEY1RTIwMDI5NDgwMSAvKiBSZXNv
dXJjZXMgKi8sCiAJCQkJNDAzRUUzN0IwRTM3NzgyMjAwNEJEMUUyIC8qIFNjcmlwdHMgKi8sCi0J
CQkJMUEwQTRDNDYxNEI3QTNCQzAwODk1MTM1IC8qIEZyYW1ld29ya3MgKi8sCiAJCQkJMDM0NzY4
RERGRjM4QTQ1QTExREI5QzhCIC8qIFByb2R1Y3RzICovLAogCQkJKTsKIAkJCW5hbWUgPSBndGVz
dDsKQEAgLTMyNywyNCArMzQxLDE2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MDQ4ODRBOTBF
MkY3Q0Q5MDBDRjc2NTggLyogQ0hBTkdFUyAqLywKIAkJCQk0MDQ4ODRBQTBFMkY3Q0Q5MDBDRjc2
NTggLyogQ09OVFJJQlVUT1JTICovLAotCQkJCTQwNDg4NEFCMEUyRjdDRDkwMENGNzY1OCAvKiBD
T1BZSU5HICovLAogCQkJCTQwNDg4M0Q5MEUyRjc5OUIwMENGNzY1OCAvKiBpbmNsdWRlICovLAot
CQkJCTQwNDg4M0Y2MEUyRjc5OUIwMENGNzY1OCAvKiBSRUFETUUgKi8sCisJCQkJNDA0ODg0QUIw
RTJGN0NEOTAwQ0Y3NjU4IC8qIExJQ0VOU0UgKi8sCiAJCQkJNDA4OUEwMkYwRkZBQ0Y4NDAwMEIy
OUFFIC8qIHNhbXBsZXMgKi8sCiAJCQkJNDA0ODg0MDcwRTJGNzk5QjAwQ0Y3NjU4IC8qIHNyYyAq
LywKIAkJCQkzQjIzOEJGMDBFN0ZFMTNCMDA4NDZFMTEgLyogdGVzdCAqLywKKwkJCQk0MDQ4ODNG
NjBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FLm1kICovLAogCQkJKTsKIAkJCW5hbWUgPSBTb3Vy
Y2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQkxQTBBNEM0NjE0QjdBM0JD
MDA4OTUxMzUgLyogRnJhbWV3b3JrcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hp
bGRyZW4gPSAoCi0JCQkJMUEwQTRDNDQxNEI3QTNCNTAwODk1MTM1IC8qIEphdmFTY3JpcHRDb3Jl
LmZyYW1ld29yayAqLywKLQkJCSk7Ci0JCQluYW1lID0gRnJhbWV3b3JrczsKLQkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTNCMjM4QkYwMEU3RkUxM0IwMDg0NkUxMSAvKiB0ZXN0
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTM3OSw2ICsz
ODUsNyBAQAogCQkJCTQwNDg4M0RCMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1kZWF0aC10ZXN0
LmggKi8sCiAJCQkJNDA0ODgzREMwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LW1lc3NhZ2UuaCAq
LywKIAkJCQk0NTM5QzkzMzBFQzI4MEFFMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdGVzdC5oICov
LAorCQkJCTQ1NjdDODE3MTI2NEZGNzEwMDc3NDBCRSAvKiBndGVzdC1wcmludGVycy5oICovLAog
CQkJCTQwNDg4M0REMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zcGkuaCAqLywKIAkJCQkyMjRB
MTJBMjBFOUVBRENDMDBCRDE3RkQgLyogZ3Rlc3QtdGVzdC1wYXJ0LmggKi8sCiAJCQkJM0JGNkYy
QTQwRTc5QjYxNjAwMEYyRUVFIC8qIGd0ZXN0LXR5cGVkLXRlc3QuaCAqLywKQEAgLTM5MiwxMiAr
Mzk5LDE0IEBACiAJCTQwNDg4M0UxMEUyRjc5OUIwMENGNzY1OCAvKiBpbnRlcm5hbCAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRjY3RDRGNDAxQzdGNURE
MDAwMTdDNzI5IC8qIGN1c3RvbSAqLywKIAkJCQk0MDQ4ODNFMjBFMkY3OTlCMDBDRjc2NTggLyog
Z3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5oICovLAogCQkJCTQwNDg4M0UzMEUyRjc5OUIwMENG
NzY1OCAvKiBndGVzdC1maWxlcGF0aC5oICovLAogCQkJCTQwNDg4M0U0MEUyRjc5OUIwMENGNzY1
OCAvKiBndGVzdC1pbnRlcm5hbC5oICovLAogCQkJCTQ1MzlDOTM1MEVDMjgwRTIwMEE3MEY0QyAv
KiBndGVzdC1saW5rZWRfcHRyLmggKi8sCiAJCQkJNDUzOUM5MzYwRUMyODBFMjAwQTcwRjRDIC8q
IGd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmggKi8sCiAJCQkJNDUzOUM5MzcwRUMyODBFMjAw
QTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwuaCAqLywKKwkJCQlGNjdENEYzRDFDN0Y1RDhCMDAx
N0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggKi8sCiAJCQkJNDA0ODgzRTUwRTJGNzk5QjAwQ0Y3
NjU4IC8qIGd0ZXN0LXBvcnQuaCAqLywKIAkJCQk0MDQ4ODNFNjBFMkY3OTlCMDBDRjc2NTggLyog
Z3Rlc3Qtc3RyaW5nLmggKi8sCiAJCQkJNDA4OTlGNEQwRkZBNzI3MTAwMEIyOUFFIC8qIGd0ZXN0
LXR1cGxlLmggKi8sCkBAIC00MzMsNyArNDQyLDYgQEAKIAkJCQk0MEQ0Q0RGMTBFMzBFMDc0MDAy
OTQ4MDEgLyogRGVidWdQcm9qZWN0LnhjY29uZmlnICovLAogCQkJCTQwRDRDREYyMEUzMEUwNzQw
MDI5NDgwMSAvKiBGcmFtZXdvcmtUYXJnZXQueGNjb25maWcgKi8sCiAJCQkJNDBENENERjMwRTMw
RTA3NDAwMjk0ODAxIC8qIEdlbmVyYWwueGNjb25maWcgKi8sCi0JCQkJNDRDNDhERkYxNEE0MDk4
RjAwQTJEOUM3IC8qIFByb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmlnICovLAogCQkJCTQwRDRDREY0
MEUzMEUwNzQwMDI5NDgwMSAvKiBSZWxlYXNlUHJvamVjdC54Y2NvbmZpZyAqLywKIAkJCQk0MDg5
OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLywK
IAkJCSk7CkBAIC00NDgsNiArNDU2LDE2IEBACiAJCQlwYXRoID0gUmVzb3VyY2VzOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRjY3RDRGNDAxQzdGNUREMDAwMTdDNzI5IC8q
IGN1c3RvbSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
RjY3RDRGNDExQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCAqLywKKwkJCQlGNjdENEY0
MjFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLywKKwkJCQlGNjdENEY0MzFD
N0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gY3VzdG9tOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ1OCw5
ICs0NzYsMTQgQEAKIAkJCQk0MDQ4ODQzODBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtZGVhdGgt
dGVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0MzkwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0
ZXN0LW1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1MzlDOTM0MEVDMjgwQUUwMEE3MEY0
QyAvKiBndGVzdC1wYXJhbS10ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNjdENEYzRTFDN0Y1
RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNjdE
NEY0NDFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RjY3RDRGNDUxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0NTY3QzgxODEyNjRGRjcxMDA3NzQwQkUgLyogZ3Rlc3QtcHJpbnRlcnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQwNDg4NDNBMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zcGkuaCBp
biBIZWFkZXJzICovLAogCQkJCTIyNEExMkEzMEU5RUFEQ0MwMEJEMTdGRCAvKiBndGVzdC10ZXN0
LXBhcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTNCRjZGMkE1MEU3OUI2MTYwMDBGMkVFRSAvKiBn
dGVzdC10eXBlZC10ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNjdENEY0NjFDN0Y1REQwMDAx
N0M3MjkgLyogZ3Rlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQwNDg4NDNCMEUyRjc5OUIwMENG
NzY1OCAvKiBndGVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0M0MwRTJGNzk5QjAwQ0Y3
NjU4IC8qIGd0ZXN0X3ByZWRfaW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0M0QwRTJG
Nzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X3Byb2QuaCBpbiBIZWFkZXJzICovLApAQCAtNTc3LDggKzYw
MCw4IEBACiAJCQkJOEQwN0YyQzEwNDg2Q0M3QTAwN0NEMUQwIC8qIFNvdXJjZXMgKi8sCiAJCQkJ
OEQwN0YyQkQwNDg2Q0M3QTAwN0NEMUQwIC8qIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0QTUwRTJG
N0MwNDAwQ0Y3NjU4IC8qIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKKwkJCQlGNjdENEY0NzFD
N0Y1REY2MDAxN0M3MjkgLyogQ29weSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLywKIAkJCQk4
RDA3RjJCRjA0ODZDQzdBMDA3Q0QxRDAgLyogUmVzb3VyY2VzICovLAotCQkJCTQ0NEQxMTcyMTRB
MjYyOEYwMDlGRUMzRiAvKiBGcmFtZXdvcmtzICovLAogCQkJKTsKIAkJCWJ1aWxkUnVsZXMgPSAo
CiAJCQkpOwpAQCAtNTk5LDggKzYyMiw3IEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAv
KiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlhdHRyaWJ1
dGVzID0gewotCQkJCUxhc3RTd2lmdFVwZGF0ZUNoZWNrID0gMDcwMDsKLQkJCQlMYXN0VXBncmFk
ZUNoZWNrID0gMDYwMDsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDQ2MDsKIAkJCX07CiAJCQli
dWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNEZBREMyNDYwOEI0MTU2RDAwQUJFNTVFIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiZ3Rlc3QiICovOwogCQkJY29tcGF0
aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMy4yIjsKQEAgLTYzOCw5ICs2NjAsOSBAQAogCQkJZmls
ZXMgPSAoCiAJCQkJNDA0ODg0QUMwRTJGN0NEOTAwQ0Y3NjU4IC8qIENIQU5HRVMgaW4gUmVzb3Vy
Y2VzICovLAogCQkJCTQwNDg4NEFEMEUyRjdDRDkwMENGNzY1OCAvKiBDT05UUklCVVRPUlMgaW4g
UmVzb3VyY2VzICovLAotCQkJCTQwNDg4NEFFMEUyRjdDRDkwMENGNzY1OCAvKiBDT1BZSU5HIGlu
IFJlc291cmNlcyAqLywKIAkJCQk0MEM4NDk3ODEwMUEzNjU0MDA4MzY0MkEgLyogbGliZ3Rlc3Rf
bWFpbi5hIGluIFJlc291cmNlcyAqLywKLQkJCQk0MDQ4ODQ1MDBFMkY3OTlCMDBDRjc2NTggLyog
UkVBRE1FIGluIFJlc291cmNlcyAqLywKKwkJCQk0MDQ4ODRBRTBFMkY3Q0Q5MDBDRjc2NTggLyog
TElDRU5TRSBpbiBSZXNvdXJjZXMgKi8sCisJCQkJNDA0ODg0NTAwRTJGNzk5QjAwQ0Y3NjU4IC8q
IFJFQURNRS5tZCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC04MTIsMjAgKzgzNCwyNSBAQAogCQkzQjIz
OEY2MDBFODI4QjU0MDA4NDZFMTEgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFH
RVMgPSBZRVM7CiAJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POwogCQkJCUdDQ19EWU5BTUlDX05P
X1BJQyA9IE5POwogCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19WRVJT
SU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKIAkJCQlQUk9EVUNUX05B
TUUgPSBDaGVjazsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1
ZzsKIAkJfTsKIAkJM0IyMzhGNjEwRTgyOEI1NDAwODQ2RTExIC8qIFJlbGVhc2UgKi8gPSB7CiAJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
Q09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CiAJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsK
IAkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKLQkJCQlH
Q0NfRU5BQkxFX0ZJWF9BTkRfQ09OVElOVUUgPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5h
cHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CiAJCQkJUFJPRFVDVF9OQU1FID0gQ2hlY2s7
CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlaRVJPX0xJTksgPSBOTzsKIAkJCX07CiAJCQlu
YW1lID0gUmVsZWFzZTsKQEAgLTgzMywzNSArODYwLDQ5IEBACiAJCTQwODk5RjQ1MEZGQTcxODUw
MDBCMjlBRSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwog
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxl
cnMubGx2bS5jbGFuZy4xXzA7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9IC4uLzsKIAkJCQlQ
Uk9EVUNUX05BTUUgPSAiZ3Rlc3RfdW5pdHRlc3QtZnJhbWV3b3JrIjsKKwkJCQlTREtST09UID0g
bWFjb3N4OwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKIAkJNDA4OTlGNDYwRkZBNzE4
NTAwMEIyOUFFIC8qIFJlbGVhc2UgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29t
cGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAuLi87CiAJ
CQkJUFJPRFVDVF9OQU1FID0gImd0ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayI7CisJCQkJU0RLUk9P
VCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKIAkJNDA4OUEwMTUw
RkZBQ0VGRDAwMEIyOUFFIC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxl
LmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKIAkJCQlQUk9EVUNUX05BTUUgPSAic2FtcGxlMV91
bml0dGVzdC1mcmFtZXdvcmsiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQl9OwogCQkJbmFt
ZSA9IERlYnVnOwogCQl9OwogCQk0MDg5QTAxNjBGRkFDRUZEMDAwQjI5QUUgLyogUmVsZWFzZSAq
LyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9
IHsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7
CiAJCQkJUFJPRFVDVF9OQU1FID0gInNhbXBsZTFfdW5pdHRlc3QtZnJhbWV3b3JrIjsKKwkJCQlT
REtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwogCQk0MEM0
NEFERjBFMzc5OEY0MDA4RkNDNTEgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFH
RVMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xh
bmcuMV8wOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CiAJCQkJUFJPRFVD
VF9OQU1FID0gZ3Rlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlUQVJHRVRfTkFNRSA9
IGd0ZXN0OwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKQEAgLTg2OSw3ICs5MTAsMTEgQEAKIAkJ
NDBDNDRBRTAwRTM3OThGNDAwOEZDQzUxIC8qIFJlbGVhc2UgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQ
SV9JTUFHRVMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxs
dm0uY2xhbmcuMV8wOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CiAJCQkJ
UFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlUQVJHRVRf
TkFNRSA9IGd0ZXN0OwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwpAQCAtODc4LDkgKzkyMywx
NiBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IDQwODk5RkIzMEZGQTc1NjcwMDBCMjlBRSAvKiBTdGF0aWNMaWJyYXJ5VGFy
Z2V0LnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDT01CSU5FX0hJRFBJ
X0lNQUdFUyA9IFlFUzsKIAkJCQlHQ0NfSU5MSU5FU19BUkVfUFJJVkFURV9FWFRFUk4gPSBZRVM7
CiAJCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04g
PSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUhFQURFUl9TRUFSQ0hf
UEFUSFMgPSAoCisJCQkJCS4uLywKKwkJCQkJLi4vaW5jbHVkZS8sCisJCQkJKTsKIAkJCQlQUk9E
VUNUX05BTUUgPSBndGVzdDsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUg
PSBEZWJ1ZzsKIAkJfTsKQEAgLTg4OCw5ICs5NDAsMTYgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0MDg5OUZCMzBGRkE3
NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CiAJCQkJR0NDX0lO
TElORVNfQVJFX1BSSVZBVEVfRVhURVJOID0gWUVTOwogCQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVf
RVhURVJOID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZt
LmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLi8sCisJCQkJ
CS4uL2luY2x1ZGUvLAorCQkJCSk7CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJU0RL
Uk9PVCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKQEAgLTg5OCw3
ICs5NTcsMTQgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZp
Z3VyYXRpb25SZWZlcmVuY2UgPSA0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGli
cmFyeVRhcmdldC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklO
RV9ISURQSV9JTUFHRVMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGls
ZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCS4u
LywKKwkJCQkJLi4vaW5jbHVkZS8sCisJCQkJKTsKIAkJCQlQUk9EVUNUX05BTUUgPSBndGVzdF9t
YWluOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9
OwpAQCAtOTA2LDEzNCArOTcyLDcyIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
IAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDA4OTlGQjMwRkZBNzU2NzAwMEIyOUFF
IC8qIFN0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCUNPTUJJTkVfSElEUElfSU1BR0VTID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29t
LmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhT
ID0gKAorCQkJCQkuLi8sCisJCQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7CiAJCQkJUFJPRFVDVF9O
QU1FID0gZ3Rlc3RfbWFpbjsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUg
PSBSZWxlYXNlOwogCQl9OwogCQk0MEM4NDk4NTEwMUEzNjg1MDA4MzY0MkEgLyogRGVidWcgKi8g
PSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOwor
CQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAuLi87CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Rf
dW5pdHRlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7
CiAJCX07CiAJCTQwQzg0OTg2MTAxQTM2ODUwMDgzNjQyQSAvKiBSZWxlYXNlICovID0gewogCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUdD
Q19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFE
RVJfU0VBUkNIX1BBVEhTID0gLi4vOwogCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0X3VuaXR0ZXN0
OworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07
CiAJCTQwQzg0OTk1MTAxQTM2QTYwMDgzNjQyQSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlHQ0NfVkVSU0lP
TiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CiAJCQkJUFJPRFVDVF9OQU1F
ID0gInNhbXBsZTFfdW5pdHRlc3Qtc3RhdGljIjsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJ
fTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKIAkJNDBDODQ5OTYxMDFBMzZBNjAwODM2NDJBIC8q
IFJlbGVhc2UgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0u
Y2xhbmcuMV8wOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJzYW1wbGUxX3VuaXR0ZXN0LXN0YXRpYyI7
CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsK
LQkJNDRDNDhFMDQxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0JCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
NDRDNDhERkYxNEE0MDk4RjAwQTJEOUM3IC8qIFByb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmlnICov
OwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCX07Ci0JCQluYW1lID0gUHJvZHVjdGlvbjsKLQkJ
fTsKLQkJNDRDNDhFMDUxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0JCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gNDBENENERjIwRTMwRTA3NDAwMjk0ODAxIC8qIEZyYW1ld29ya1RhcmdldC54Y2NvbmZpZyAq
LzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJRFlMSUJfQ09NUEFUSUJJTElUWV9WRVJTSU9O
ID0gMTsKLQkJCQlEWUxJQl9DVVJSRU5UX1ZFUlNJT04gPSAxOwotCQkJCUlORk9QTElTVF9GSUxF
ID0gUmVzb3VyY2VzL0luZm8ucGxpc3Q7Ci0JCQkJSU5GT1BMSVNUX1BSRUZJWF9IRUFERVIgPSAi
JChQUk9KRUNUX1RFTVBfRElSKS9WZXJzaW9uLmgiOwotCQkJCUlORk9QTElTVF9QUkVQUk9DRVNT
ID0gWUVTOwotCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0OwotCQkJCVZFUlNJT05JTkdfU1lTVEVN
ID0gImFwcGxlLWdlbmVyaWMiOwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9Owot
CQk0NEM0OEUwNjE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0
MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyAq
LzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJR0NDX0lOTElORVNfQVJFX1BSSVZBVEVfRVhU
RVJOID0gWUVTOwotCQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gWUVTOwotCQkJCVBS
T0RVQ1RfTkFNRSA9IGd0ZXN0OwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9Owot
CQk0NEM0OEUwNzE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0
MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyAq
LzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3RfbWFpbjsK
LQkJCX07Ci0JCQluYW1lID0gUHJvZHVjdGlvbjsKLQkJfTsKLQkJNDRDNDhFMDgxNEE0MDlERTAw
QTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gImd0ZXN0X3VuaXR0
ZXN0LWZyYW1ld29yayI7Ci0JCQl9OwotCQkJbmFtZSA9IFByb2R1Y3Rpb247Ci0JCX07Ci0JCTQ0
QzQ4RTA5MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICovID0gewotCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCVBST0RVQ1RfTkFN
RSA9IGd0ZXN0X3VuaXR0ZXN0OwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9Owot
CQk0NEM0OEUwQTE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlQUk9EVUNU
X05BTUUgPSAic2FtcGxlMV91bml0dGVzdC1mcmFtZXdvcmsiOwotCQkJfTsKLQkJCW5hbWUgPSBQ
cm9kdWN0aW9uOwotCQl9OwotCQk0NEM0OEUwQjE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlv
biAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5n
cyA9IHsKLQkJCQlQUk9EVUNUX05BTUUgPSAic2FtcGxlMV91bml0dGVzdC1zdGF0aWMiOwotCQkJ
fTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9OwotCQk0NEM0OEUwQzE0QTQwOURFMDBBMkQ5
QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwot
CQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOwotCQkJCURF
QlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOwotCQkJCUdDQ19FTkFC
TEVfRklYX0FORF9DT05USU5VRSA9IE5POwotCQkJCVBST0RVQ1RfTkFNRSA9IENoZWNrOwotCQkJ
CVpFUk9fTElOSyA9IE5POwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9OwotCQk0
NEM0OEUwRDE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlQUk9EVUNUX05B
TUUgPSBndGVzdDsKLQkJCQlUQVJHRVRfTkFNRSA9IGd0ZXN0OwotCQkJfTsKLQkJCW5hbWUgPSBQ
cm9kdWN0aW9uOwotCQl9OwogCQk0RkFEQzI0MzA4QjQxNTZEMDBBQkU1NUUgLyogRGVidWcgKi8g
PSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9u
UmVmZXJlbmNlID0gNDBENENERjIwRTMwRTA3NDAwMjk0ODAxIC8qIEZyYW1ld29ya1RhcmdldC54
Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFH
RVMgPSBZRVM7CiAJCQkJRFlMSUJfQ09NUEFUSUJJTElUWV9WRVJTSU9OID0gMTsKIAkJCQlEWUxJ
Ql9DVVJSRU5UX1ZFUlNJT04gPSAxOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBp
bGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQku
Li8sCisJCQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSBSZXNv
dXJjZXMvSW5mby5wbGlzdDsKIAkJCQlJTkZPUExJU1RfUFJFRklYX0hFQURFUiA9ICIkKFBST0pF
Q1RfVEVNUF9ESVIpL1ZlcnNpb24uaCI7CiAJCQkJSU5GT1BMSVNUX1BSRVBST0NFU1MgPSBZRVM7
CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlW
RVJTSU9OSU5HX1NZU1RFTSA9ICJhcHBsZS1nZW5lcmljIjsKIAkJCX07CiAJCQluYW1lID0gRGVi
dWc7CkBAIC0xMDQyLDEyICsxMDQ2LDE5IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDBENENERjIwRTMwRTA3NDAwMjk0
ODAxIC8qIEZyYW1ld29ya1RhcmdldC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CiAJCQkJRFlMSUJfQ09NUEFUSUJJTElU
WV9WRVJTSU9OID0gMTsKIAkJCQlEWUxJQl9DVVJSRU5UX1ZFUlNJT04gPSAxOworCQkJCUdDQ19W
RVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJf
U0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLi8sCisJCQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7CiAJ
CQkJSU5GT1BMSVNUX0ZJTEUgPSBSZXNvdXJjZXMvSW5mby5wbGlzdDsKIAkJCQlJTkZPUExJU1Rf
UFJFRklYX0hFQURFUiA9ICIkKFBST0pFQ1RfVEVNUF9ESVIpL1ZlcnNpb24uaCI7CiAJCQkJSU5G
T1BMSVNUX1BSRVBST0NFU1MgPSBZRVM7CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJ
U0RLUk9PVCA9IG1hY29zeDsKIAkJCQlWRVJTSU9OSU5HX1NZU1RFTSA9ICJhcHBsZS1nZW5lcmlj
IjsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKQEAgLTEwNTYsNiArMTA2Nyw5IEBACiAJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gNDBENENERjEwRTMwRTA3NDAwMjk0ODAxIC8qIERlYnVnUHJvamVjdC54Y2NvbmZpZyAqLzsK
IAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0g
ImdudSsrMHgiOworCQkJCUNMQU5HX0NYWF9MSUJSQVJZID0gImxpYmMrKyI7CisJCQkJTUFDT1NY
X0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07
CkBAIC0xMDYzLDYgKzEwNzcsOSBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJ
CQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDQwRDRDREY0MEUzMEUwNzQwMDI5NDgwMSAv
KiBSZWxlYXNlUHJvamVjdC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
Q0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMHgiOworCQkJCUNMQU5HX0NYWF9M
SUJSQVJZID0gImxpYmMrKyI7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsK
IAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKQEAgLTEwNzQsMTAwICsxMDkxLDkwIEBA
CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAogCQkJCTNCMjM4RjYwMEU4MjhCNTQwMDg0NkUx
MSAvKiBEZWJ1ZyAqLywKIAkJCQkzQjIzOEY2MTBFODI4QjU0MDA4NDZFMTEgLyogUmVsZWFzZSAq
LywKLQkJCQk0NEM0OEUwQzE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLywKIAkJCSk7
CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmln
dXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0g
UmVsZWFzZTsKIAkJfTsKIAkJNDA4OTlGNEEwRkZBNzFCQzAwMEIyOUFFIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJndGVzdF91bml0dGVzdC1mcmFtZXdv
cmsiICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmln
dXJhdGlvbnMgPSAoCiAJCQkJNDA4OTlGNDUwRkZBNzE4NTAwMEIyOUFFIC8qIERlYnVnICovLAog
CQkJCTQwODk5RjQ2MEZGQTcxODUwMDBCMjlBRSAvKiBSZWxlYXNlICovLAotCQkJCTQ0QzQ4RTA4
MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICovLAogCQkJKTsKIAkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFBy
b2R1Y3Rpb247CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwogCQl9Owog
CQk0MDg5QTAyNDBGRkFDRjAxMDAwQjI5QUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhOYXRpdmVUYXJnZXQgInNhbXBsZTFfdW5pdHRlc3QtZnJhbWV3b3JrIiAqLyA9IHsKIAkJ
CWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAog
CQkJCTQwODlBMDE1MEZGQUNFRkQwMDBCMjlBRSAvKiBEZWJ1ZyAqLywKIAkJCQk0MDg5QTAxNjBG
RkFDRUZEMDAwQjI5QUUgLyogUmVsZWFzZSAqLywKLQkJCQk0NEM0OEUwQTE0QTQwOURFMDBBMkQ5
QzcgLyogUHJvZHVjdGlvbiAqLywKIAkJCSk7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlz
aWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQkJ
ZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKIAkJfTsKIAkJNDBDNDRBRTQwRTM3
OTkwNTAwOEZDQzUxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRl
VGFyZ2V0ICJWZXJzaW9uIEluZm8iICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlz
dDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCiAJCQkJNDBDNDRBREYwRTM3OThGNDAwOEZD
QzUxIC8qIERlYnVnICovLAogCQkJCTQwQzQ0QUUwMEUzNzk4RjQwMDhGQ0M1MSAvKiBSZWxlYXNl
ICovLAotCQkJCTQ0QzQ4RTBEMTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICovLAogCQkJ
KTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUg
PSBSZWxlYXNlOwogCQl9OwogCQk0MEM4NDkwMjEwMUEyMTJFMDA4MzY0MkEgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0LXN0YXRpYyIgKi8gPSB7
CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKIAkJCQk0MEM4NDhGQjEwMUEyMDlEMDA4MzY0MkEgLyogRGVidWcgKi8sCiAJCQkJNDBDODQ4
RkMxMDFBMjA5RDAwODM2NDJBIC8qIFJlbGVhc2UgKi8sCi0JCQkJNDRDNDhFMDYxNEE0MDlERTAw
QTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8sCiAJCQkpOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25J
c1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsK
KwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CiAJCX07CiAJCTQwQzg0OTEy
MTAxQTIxRDIwMDgzNjQyQSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2
ZVRhcmdldCAiZ3Rlc3RfbWFpbi1zdGF0aWMiICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0
aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCiAJCQkJNDBDODQ5MEUxMDFBMjE3
RjAwODM2NDJBIC8qIERlYnVnICovLAogCQkJCTQwQzg0OTBGMTAxQTIxN0YwMDgzNjQyQSAvKiBS
ZWxlYXNlICovLAotCQkJCTQ0QzQ4RTA3MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICov
LAogCQkJKTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1
bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCQlkZWZhdWx0Q29uZmlndXJhdGlv
bk5hbWUgPSBSZWxlYXNlOwogCQl9OwogCQk0MEM4NDk4NDEwMUEzNjg1MDA4MzY0MkEgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0X3VuaXR0ZXN0
LXN0YXRpYyIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRD
b25maWd1cmF0aW9ucyA9ICgKIAkJCQk0MEM4NDk4NTEwMUEzNjg1MDA4MzY0MkEgLyogRGVidWcg
Ki8sCiAJCQkJNDBDODQ5ODYxMDFBMzY4NTAwODM2NDJBIC8qIFJlbGVhc2UgKi8sCi0JCQkJNDRD
NDhFMDkxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8sCiAJCQkpOwogCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1l
ID0gUHJvZHVjdGlvbjsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CiAJ
CX07CiAJCTQwQzg0OTk0MTAxQTM2QTYwMDgzNjQyQSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAic2FtcGxlMV91bml0dGVzdC1zdGF0aWMiICovID0gewog
CQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAo
CiAJCQkJNDBDODQ5OTUxMDFBMzZBNjAwODM2NDJBIC8qIERlYnVnICovLAogCQkJCTQwQzg0OTk2
MTAxQTM2QTYwMDgzNjQyQSAvKiBSZWxlYXNlICovLAotCQkJCTQ0QzQ4RTBCMTRBNDA5REUwMEEy
RDlDNyAvKiBQcm9kdWN0aW9uICovLAogCQkJKTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNW
aXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJ
CQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwogCQl9OwogCQk0RkFEQzI0MjA4
QjQxNTZEMDBBQkU1NUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVU
YXJnZXQgImd0ZXN0LWZyYW1ld29yayIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25M
aXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKIAkJCQk0RkFEQzI0MzA4QjQxNTZEMDBB
QkU1NUUgLyogRGVidWcgKi8sCiAJCQkJNEZBREMyNDQwOEI0MTU2RDAwQUJFNTVFIC8qIFJlbGVh
c2UgKi8sCi0JCQkJNDRDNDhFMDUxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8sCiAJ
CQkpOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFt
ZSA9IFJlbGVhc2U7CiAJCX07CiAJCTRGQURDMjQ2MDhCNDE1NkQwMEFCRTU1RSAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgImd0ZXN0IiAqLyA9IHsKIAkJCWlzYSA9
IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAogCQkJCTRG
QURDMjQ3MDhCNDE1NkQwMEFCRTU1RSAvKiBEZWJ1ZyAqLywKIAkJCQk0RkFEQzI0ODA4QjQxNTZE
MDBBQkU1NUUgLyogUmVsZWFzZSAqLywKLQkJCQk0NEM0OEUwNDE0QTQwOURFMDBBMkQ5QzcgLyog
UHJvZHVjdGlvbiAqLywKIAkJCSk7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9
IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKIAkJfTsKIC8qIEVuZCBYQ0NvbmZpZ3VyYXRp
b25MaXN0IHNlY3Rpb24gKi8KIAl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW50U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW50U2l6ZS5oCmluZGV4IDdhYzY0Y2FiNDhjM2QwOWE5MWE5YWU3OGJkMGM3YWFkZmUwOTQ1YTQu
LmRhMTM0ZWE1OWQwNWNmNGYxNjM0OTM5ZDQ2MzM2NzA3ZmExZjFiMGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJp
dGhtZXRpYy5oPgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBkZWZpbmVkIF9fT0JKQ19fCiAjaW1w
b3J0IDxGb3VuZGF0aW9uL05TR2VvbWV0cnkuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3Y2VjNjE4N2ZlNTUwMGQ1YmY4MGY1MmQ4MDYxNjYw
YmEzMmI0ZTdkLi41NzAxMjJkMDFhMWVhYjk0NTNmMTQ4N2E4MzA2NTQxYmVmMDMxZDUxIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTgtMDgtMzAgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29t
PgorCisgICAgICAgIFVwZGF0ZSBnb29nbGV0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29uZmlnLmg6CisgICAgICAg
IEluc3RlYWQgb2YgbW9kaWZ5aW5nIGd0ZXN0IGl0c2VsZiwgYWRkIGFueSBuZWNlc3NhcnkgV1RG
IGluY2x1ZGVzIGhlcmUuCisKIDIwMTgtMDgtMzAgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBs
ZS5jb20+CiAKICAgICAgICAgV0tOYXZpZ2F0aW9uLlByb2Nlc3NDcmFzaER1cmluZ0NhbGxiYWNr
IGlzIGZhaWxpbmcgb24gaU9TCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZp
Zy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAppbmRleCBlZGY4YTZmMWY1NmIwYmVk
ZmZlODRlNjYwZWU4ZWY1MDRjNGM1MmNhLi4wYzJjNGFlN2JmMGU5Y2U1ZTk4Nzk1OGU1NDg0M2Vk
NDM3NDYyMjQ2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKQEAgLTU3LDggKzU3LDE0IEBACiAKICNpZmRl
ZiBfX2NwbHVzcGx1cwogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KKyN1bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUKKyNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgogI2VuZGlmCiAKKyNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5oPgorCiAj
aWZkZWYgX19jbGFuZ19fCiAvLyBGaW5pc2ggd29ya2luZyBhcm91bmQgdGhlIGxlc3Mgc3RyaWN0
IGNvZGluZyBzdGFuZGFyZHMgb2YgdGhlIGd0ZXN0IGZyYW1ld29yay4KICNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwb3AK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348561</attachid>
            <date>2018-08-30 15:57:19 -0700</date>
            <delta_ts>2018-08-30 17:26:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175722-20180830155718.patch</filename>
            <type>text/plain</type>
            <size>2554416</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9DaGFuZ2VMb2cKaW5kZXggZmI1MTE0ZTAz
ZmM3ZTUxZjg2N2YzOWFiZjhkYjIwNDA1YWRhOWJiYS4uMmFlYjQwMzU4ZDEzMDg4YzNkMzMzNGU2
NDZmZGM1YTlmY2NjMWZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4
LTA4LTMwICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAg
ICBVcGRhdGUgZ29vZ2xldGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc1NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBndGVzdC86CisgICAgICAgIFVwZGF0ZSB0byBsYXRlc3QgKHBvc3QtMS44
LjApLgorCisgICAgICAgICogZ3Rlc3QvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgIEtlZXAgb3Vy
IHZlcnNpb24gb2YgdGhpcyBmaWxlLCBidXQgdXBkYXRlIHNvdXJjZSBmaWxlIGxpc3QuCisKIDIw
MTgtMDctMTcgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtXUEVdW0dUS10gVXBkYXRlIHhkZ21pbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmOTUwY2E5NTU5
ZGYzMTE5Yjk5ODgwMTA4MDNmNTQ5ZGJlZGJiNTUxLi5kOGI4NmRmNmMzMDVlYjlmZGEwNjY3Zjhj
NDk4OTllMDcxNjk5NjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDgtMzAg
IFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFVwZGF0
ZSBnb29nbGV0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzU3MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaDoKKyAgICAgICAgQWRkIG1pc3Npbmcg
I2luY2x1ZGUuCisKIDIwMTgtMDgtMzAgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBbTEZDXVtGbG9hdGluZ10gQmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IHJvb3Rz
IGF2b2lkIGZsb2F0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NIQU5H
RVMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DSEFOR0VTCmluZGV4IGU1NzQ0MTVlZTZlZDgx
Y2Y0OTJiZTI5NTM0NmM0NDRlZWIxMGNlODguLjA1NTIxMzI0MjEyYzkxMjg3ZDkyNDRkNDRiYWIz
MDZkYjY2NGJhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NIQU5HRVMK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ0hBTkdFUwpAQCAtMSwzICsxLDYyIEBACitD
aGFuZ2VzIGZvciAxLjcuMDoKKworKiBOZXcgZmVhdHVyZTogZGVhdGggdGVzdHMgYXJlIHN1cHBv
cnRlZCBvbiBPcGVuQlNEIGFuZCBpbiBpT1MKKyAgc2ltdWxhdG9yIG5vdy4KKyogTmV3IGZlYXR1
cmU6IEdvb2dsZSBUZXN0IG5vdyBpbXBsZW1lbnRzIGEgcHJvdG9jb2wgdG8gYWxsb3cKKyAgYSB0
ZXN0IHJ1bm5lciB0byBkZXRlY3QgdGhhdCBhIHRlc3QgcHJvZ3JhbSBoYXMgZXhpdGVkCisgIHBy
ZW1hdHVyZWx5IGFuZCByZXBvcnQgaXQgYXMgYSBmYWlsdXJlIChiZWZvcmUgaXQgd291bGQgYmUK
KyAgZmFsc2VseSByZXBvcnRlZCBhcyBhIHN1Y2Nlc3MgaWYgdGhlIGV4aXQgY29kZSBpcyAwKS4K
KyogTmV3IGZlYXR1cmU6IFRlc3Q6OlJlY29yZFByb3BlcnR5KCkgY2FuIG5vdyBiZSB1c2VkIG91
dHNpZGUgb2YgdGhlCisgIGxpZmVzcGFuIG9mIGEgdGVzdCBtZXRob2QsIGluIHdoaWNoIGNhc2Ug
aXQgd2lsbCBiZSBhdHRyaWJ1dGVkIHRvCisgIHRoZSBjdXJyZW50IHRlc3QgY2FzZSBvciB0aGUg
dGVzdCBwcm9ncmFtIGluIHRoZSBYTUwgcmVwb3J0LgorKiBOZXcgZmVhdHVyZSAocG90ZW50aWFs
bHkgYnJlYWtpbmcpOiAtLWd0ZXN0X2xpc3RfdGVzdHMgbm93IHByaW50cworICB0aGUgdHlwZSBw
YXJhbWV0ZXJzIGFuZCB2YWx1ZSBwYXJhbWV0ZXJzIGZvciBlYWNoIHRlc3QuCisqIEltcHJvdmVt
ZW50OiBjaGFyIHBvaW50ZXJzIGFuZCBjaGFyIGFycmF5cyBhcmUgbm93IGVzY2FwZWQgcHJvcGVy
bHkKKyAgaW4gZmFpbHVyZSBtZXNzYWdlcy4KKyogSW1wcm92ZW1lbnQ6IGZhaWx1cmUgc3VtbWFy
eSBpbiBYTUwgcmVwb3J0cyBub3cgaW5jbHVkZXMgZmlsZSBhbmQKKyAgbGluZSBpbmZvcm1hdGlv
bi4KKyogSW1wcm92ZW1lbnQ6IHRoZSA8dGVzdHN1aXRlcz4gWE1MIGVsZW1lbnQgbm93IGhhcyBh
IHRpbWVzdGFtcCBhdHRyaWJ1dGUuCisqIEltcHJvdmVtZW50OiBXaGVuIC0tZ3Rlc3RfZmlsdGVy
IGlzIHNwZWNpZmllZCwgWE1MIHJlcG9ydCBub3cgZG9lc24ndAorICBjb250YWluIGluZm9ybWF0
aW9uIGFib3V0IHRlc3RzIHRoYXQgYXJlIGZpbHRlcmVkIG91dC4KKyogRml4ZWQgdGhlIGJ1ZyB3
aGVyZSBsb25nIC0tZ3Rlc3RfZmlsdGVyIGZsYWcgdmFsdWVzIGFyZSB0cnVuY2F0ZWQgaW4KKyAg
ZGVhdGggdGVzdHMuCisqIFBvdGVudGlhbGx5IGJyZWFraW5nIGNoYW5nZTogUlVOX0FMTF9URVNU
UygpIGlzIG5vdyBpbXBsZW1lbnRlZCBhcyBhCisgIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBtYWNy
byBpbiBvcmRlciB0byB3b3JrIGJldHRlciB3aXRoIENsYW5nLgorKiBDb21wYXRpYmlsaXR5IGZp
eGVzIHdpdGggQysrIDExIGFuZCB2YXJpb3VzIHBsYXRmb3Jtcy4KKyogQnVnL3dhcm5pbmcgZml4
ZXMuCisKK0NoYW5nZXMgZm9yIDEuNi4wOgorCisqIE5ldyBmZWF0dXJlOiBBRERfRkFJTFVSRV9B
VCgpIGZvciByZXBvcnRpbmcgYSB0ZXN0IGZhaWx1cmUgYXQgdGhlCisgIGdpdmVuIHNvdXJjZSBs
b2NhdGlvbiAtLSB1c2VmdWwgZm9yIHdyaXRpbmcgdGVzdGluZyB1dGlsaXRpZXMuCisqIE5ldyBm
ZWF0dXJlOiB0aGUgdW5pdmVyc2FsIHZhbHVlIHByaW50ZXIgaXMgbW92ZWQgZnJvbSBHb29nbGUg
TW9jaworICB0byBHb29nbGUgVGVzdC4KKyogTmV3IGZlYXR1cmU6IHR5cGUgcGFyYW1ldGVycyBh
bmQgdmFsdWUgcGFyYW1ldGVycyBhcmUgcmVwb3J0ZWQgaW4KKyAgdGhlIFhNTCByZXBvcnQgbm93
LgorKiBBIGd0ZXN0X2Rpc2FibGVfcHRocmVhZHMgQ01ha2Ugb3B0aW9uLgorKiBDb2xvcmVkIG91
dHB1dCB3b3JrcyBpbiBHTlUgU2NyZWVuIHNlc3Npb25zIG5vdy4KKyogUGFyYW1ldGVycyBvZiB2
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBub3cgcHJpbnRlZCBpbiB0aGUKKyAgdGV4dHVh
bCBvdXRwdXQuCisqIEZhaWx1cmVzIGZyb20gYWQgaG9jIHRlc3QgYXNzZXJ0aW9ucyBydW4gYmVm
b3JlIFJVTl9BTExfVEVTVFMoKSBhcmUKKyAgbm93IGNvcnJlY3RseSByZXBvcnRlZC4KKyogQXJn
dW1lbnRzIG9mIEFTU0VSVF9YWSBhbmQgRVhQRUNUX1hZIG5vIGxvbmdlciBuZWVkIHRvIHN1cHBv
cnQgPDwgdG8KKyAgb3N0cmVhbS4KKyogTW9yZSBjb21wbGV0ZSBoYW5kbGluZyBvZiBleGNlcHRp
b25zLgorKiBHVEVTVF9BU1NFUlRfWFkgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBBU1NFUlRfWFkg
aW4gY2FzZSB0aGUgbGF0dGVyCisgIG5hbWUgaXMgYWxyZWFkeSB1c2VkIGJ5IGFub3RoZXIgbGli
cmFyeS4KKyogLS1ndGVzdF9jYXRjaF9leGNlcHRpb25zIGlzIG5vdyB0cnVlIGJ5IGRlZmF1bHQs
IGFsbG93aW5nIGEgdGVzdAorICBwcm9ncmFtIHRvIGNvbnRpbnVlIGFmdGVyIGFuIGV4Y2VwdGlv
biBpcyB0aHJvd24uCisqIFZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdCBmaXh0dXJlcyBjYW4gbm93
IGRlcml2ZSBmcm9tIFRlc3QgYW5kCisgIFdpdGhQYXJhbUludGVyZmFjZTxUPiBzZXBhcmF0ZWx5
LCBlYXNpbmcgY29udmVyc2lvbiBvZiBsZWdhY3kgdGVzdHMuCisqIERlYXRoIHRlc3QgbWVzc2Fn
ZXMgYXJlIGNsZWFybHkgbWFya2VkIHRvIG1ha2UgdGhlbSBtb3JlCisgIGRpc3Rpbmd1aXNoYWJs
ZSBmcm9tIG90aGVyIG1lc3NhZ2VzLgorKiBDb21wYXRpYmlsaXR5IGZpeGVzIGZvciBBbmRyb2lk
LCBHb29nbGUgTmF0aXZlIENsaWVudCwgTWluR1csIEhQIFVYLAorICBQb3dlclBDLCBMdWNpZCBh
dXRvdG9vbHMsIGxpYkNTdGQsIFN1biBDKyssIEJvcmxhbmQgQysrIEJ1aWxkZXIgKENvZGUgR2Vh
ciksCisgIElCTSBYTCBDKysgKFZpc3VhbCBBZ2UgQysrKSwgYW5kIEMrKzB4LgorKiBCdWcgZml4
ZXMgYW5kIGltcGxlbWVudGF0aW9uIGNsZWFuLXVwcy4KKyogUG90ZW50aWFsbHkgaW5jb21wYXRp
YmxlIGNoYW5nZXM6IGRpc2FibGVzIHRoZSBoYXJtZnVsICdtYWtlIGluc3RhbGwnCisgIGNvbW1h
bmQgaW4gYXV0b3Rvb2xzLgorCiBDaGFuZ2VzIGZvciAxLjUuMDoKIAogICogTmV3IGZlYXR1cmU6
IGFzc2VydGlvbnMgY2FuIGJlIHNhZmVseSBjYWxsZWQgaW4gbXVsdGlwbGUgdGhyZWFkcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9DTWFrZUxpc3RzLnR4dAppbmRleCBkZDEwMDVmZTZlNTdjNTIwYmU5
N2Y0ZjgwNTJiNDI2ZjBmZTA1NjhmLi5hYTNhM2VlZjI0NTgxNmMyZGE3ODhjNTMyZGQ3ZDFjYjA5
NDRlZTU4IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DTWFrZUxpc3RzLnR4dApAQCAtMTcsNiAr
MTcsNyBAQCBzZXQoR1RFU1RfU09VUkNFUwogICAgICR7R1RFU1RfRElSfS9zcmMvZ3Rlc3QtZmls
ZXBhdGguY2MKICAgICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0X21haW4uY2MKICAgICAke0dURVNU
X0RJUn0vc3JjL2d0ZXN0LXBvcnQuY2MKKyAgICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LXByaW50
ZXJzLmNjCiAgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC10ZXN0LXBhcnQuY2MKICAgICAke0dU
RVNUX0RJUn0vc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L0NPTlRSSUJVVE9SUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NP
TlRSSUJVVE9SUwppbmRleCAwOTM0YWUxMzA1OWFmY2RjMDVkZjgxMjQ3ZTYxYjlhODRhMjMxMmUy
Li5mZWFlMmZjMDQ0MTBkYzMwOGU0NjRhYTI1NmZlMWYyZDMxZWRjOTg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DT05UUklCVVRPUlMKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvQ09OVFJJQlVUT1JTCkBAIC0yMSw2ICsyMSw3IEBAIE1hbnVlbCBLbGltZWsgPGts
aW1la0Bnb29nbGUuY29tPgogTWFya3VzIEhldWxlIDxtYXJrdXMuaGV1bGVAZ21haWwuY29tPgog
TWlrYSBSYWVudG8gPG1pa2llQGlraS5maT4KIE1pa2zDs3MgRmF6ZWthcyA8bWZhemVrYXNAc3pl
bWFmb3IuY29tPgorUGFzaSBWYWxtaW5lbiA8cGFzaS52YWxtaW5lbkBnbWFpbC5jb20+CiBQYXRy
aWNrIEhhbm5hIDxwaGFubmFAZ29vZ2xlLmNvbT4KIFBhdHJpY2sgUmlsZXkgPHBmckBnb29nbGUu
Y29tPgogUGV0ZXIgS2FtaW5za2kgPHBpb3Rya0Bnb29nbGUuY29tPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09QWUlORyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NP
UFlJTkcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NDFhMTFmOGNlOTQzODkxNjBi
NDU4OTI3YTI5YmEyMTc1NDI4MTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09QWUlORworKysgL2Rldi9udWxs
CkBAIC0xLDI4ICswLDAgQEAKLUNvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6Ci0KLSAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci1ub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi1jb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi1pbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi1kaXN0cmlidXRpb24uCi0gICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi1j
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLU9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi1EQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L0xJQ0VOU0UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9MSUNF
TlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE5NDFhMTFmOGNlOTQzODkxNjBiNDU4OTI3YTI5YmEyMTc1NDI4MTgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9MSUNFTlNFCkBAIC0w
LDAgKzEsMjggQEAKK0NvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCittZXQ6CisKKyAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Citu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCitjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCitpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCitkaXN0cmlidXRpb24uCisgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCitjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQordGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
K09XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCitEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKK1RIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L01ha2VmaWxlLmFtIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvTWFrZWZp
bGUuYW0KaW5kZXggOGQ3NWUzMmNjMjBjZGU4M2MxNzRmNGUwNzhlMjk5M2E5MzJhOWQxOC4uYjQ0
Yzg0MTZiYTA4MGMyZjAxNmYxNjZiMThiNDJjMGY3M2VjZTdiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvTWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvTWFrZWZpbGUuYW0KQEAgLTEsMTMgKzEsMTYgQEAKICMgQXV0b21ha2UgZmlsZQogCitBQ0xP
Q0FMX0FNRkxBR1MgPSAtSSBtNAorCiAjIE5vbnN0YW5kYXJkIHBhY2thZ2UgZmlsZXMgZm9yIGRp
c3RyaWJ1dGlvbgogRVhUUkFfRElTVCA9IFwKICAgQ0hBTkdFUyBcCiAgIENPTlRSSUJVVE9SUyBc
CisgIExJQ0VOU0UgXAogICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC5wdW1wIFwK
KyAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oLnB1
bXAgXAogICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcCBcCiAgIGlu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgucHVtcCBcCi0gIGluY2x1ZGUv
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wIFwKICAgbWFr
ZS9NYWtlZmlsZSBcCiAgIHNjcmlwdHMvZnVzZV9ndGVzdF9maWxlcy5weSBcCiAgIHNjcmlwdHMv
Z2VuX2d0ZXN0X3ByZWRfaW1wbC5weSBcCkBAIC0xNywxOSArMjAsMjEgQEAgRVhUUkFfRElTVCA9
IFwKICMgZ3Rlc3Qgc291cmNlIGZpbGVzIHRoYXQgd2UgZG9uJ3QgY29tcGlsZSBkaXJlY3RseS4g
IFRoZXkgYXJlCiAjICNpbmNsdWRlZCBieSBndGVzdC1hbGwuY2MuCiBHVEVTVF9TUkMgPSBcCi0g
IHNyYy9ndGVzdC5jYyBcCiAgIHNyYy9ndGVzdC1kZWF0aC10ZXN0LmNjIFwKICAgc3JjL2d0ZXN0
LWZpbGVwYXRoLmNjIFwKICAgc3JjL2d0ZXN0LWludGVybmFsLWlubC5oIFwKICAgc3JjL2d0ZXN0
LXBvcnQuY2MgXAorICBzcmMvZ3Rlc3QtcHJpbnRlcnMuY2MgXAogICBzcmMvZ3Rlc3QtdGVzdC1w
YXJ0LmNjIFwKLSAgc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKKyAgc3JjL2d0ZXN0LXR5cGVkLXRl
c3QuY2MgXAorICBzcmMvZ3Rlc3QuY2MKIAogRVhUUkFfRElTVCArPSAkKEdURVNUX1NSQykKIAog
IyBTYW1wbGUgZmlsZXMgdGhhdCB3ZSBkb24ndCBjb21waWxlLgogRVhUUkFfRElTVCArPSBcCiAg
IHNhbXBsZXMvcHJpbWVfdGFibGVzLmggXAorICBzYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QuY2Mg
XAogICBzYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2MgXAogICBzYW1wbGVzL3NhbXBsZTNfdW5p
dHRlc3QuY2MgXAogICBzYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QuY2MgXApAQCAtNDEsODggKzQ2
LDkxIEBAIEVYVFJBX0RJU1QgKz0gXAogCiAjIEMrKyB0ZXN0IGZpbGVzIHRoYXQgd2UgZG9uJ3Qg
Y29tcGlsZSBkaXJlY3RseS4KIEVYVFJBX0RJU1QgKz0gXAorICB0ZXN0L2d0ZXN0LWRlYXRoLXRl
c3RfZXhfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3QtZGVhdGgtdGVzdF90ZXN0LmNjIFwKLSAgdGVz
dC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjIFwKICAgdGVzdC9ndGVzdC1maWxlcGF0aF90ZXN0
LmNjIFwKICAgdGVzdC9ndGVzdC1saW5rZWRfcHRyX3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0LWxp
c3RlbmVyX3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0LW1lc3NhZ2VfdGVzdC5jYyBcCi0gIHRlc3Qv
Z3Rlc3Rfbm9fdGVzdF91bml0dGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3Qtb3B0aW9uc190ZXN0LmNj
IFwKLSAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXBhcmFt
LXRlc3QyX3Rlc3QuY2MgXAorICB0ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdDItdGVzdC5jYyBc
CisgIHRlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0Mi10ZXN0LmNjIFwKKyAgdGVzdC9nb29nbGV0
ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRl
c3QuY2MgXAogICB0ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oIFwKICAgdGVzdC9ndGVzdC1w
b3J0X3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0X3ByZW1hdHVyZV9leGl0X3Rlc3QuY2MgXAorICB0
ZXN0L2d0ZXN0LXByaW50ZXJzX3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0
LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LXR1cGxlLXRlc3QuY2MgXAorICB0ZXN0L2d0ZXN0LXR5
cGVkLXRlc3QyX3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYyBcCisg
IHRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmggXAorICB0ZXN0L2d0ZXN0LXVuaXR0ZXN0LWFw
aV90ZXN0LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3Rf
LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdF8uY2MgXAorICB0
ZXN0L2dvb2dsZXRlc3QtY29sb3ItdGVzdF8uY2MgXAorICB0ZXN0L2dvb2dsZXRlc3QtZW52LXZh
ci10ZXN0Xy5jYyBcCisgIHRlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVzdC5jYyBcCisgIHRlc3Qv
Z29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3RfLmNjIFwKKyAgdGVzdC9ndGVzdF9oZWxwX3Rlc3Rf
LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfLmNjIFwKKyAgdGVz
dC9ndGVzdF9tYWluX3VuaXR0ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdF9ub190ZXN0X3VuaXR0ZXN0
LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYyBcCiAgIHRlc3QvZ3Rlc3Rf
cHJlZF9pbXBsX3VuaXR0ZXN0LmNjIFwKICAgdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2MgXAotICB0
ZXN0L3Byb2R1Y3Rpb24uY2MgXAotICB0ZXN0L3Byb2R1Y3Rpb24uaCBcCiAgIHRlc3QvZ3Rlc3Rf
cmVwZWF0X3Rlc3QuY2MgXAorICB0ZXN0L2dvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0Xy5jYyBcCiAg
IHRlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3Rfc3RyZXNzX3Rl
c3QuY2MgXAotICB0ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0LmNjIFwKICAgdGVzdC9ndGVzdF90
aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVz
dC5jYyBcCi0gIHRlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3Qt
dHlwZWQtdGVzdF90ZXN0LmggXAorICB0ZXN0L2dvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10
ZXN0Xy5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3RfLmNjIFwKICAg
dGVzdC9ndGVzdF91bml0dGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3Qu
Y2MgXAotICB0ZXN0L2d0ZXN0LWxpc3RlbmVyX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0X21haW5f
dW5pdHRlc3QuY2MgXAogICB0ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC10
dXBsZV90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MgXAotICB0ZXN0
L2d0ZXN0LXBhcmFtLXRlc3QyX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1
cmVfdW5pdHRlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9jb2xvcl90ZXN0Xy5jYyBcCi0gIHRlc3Qv
Z3Rlc3RfZW52X3Zhcl90ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0Xy5j
YyBcCi0gIHRlc3QvZ3Rlc3RfaGVscF90ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3RfbGlzdF90ZXN0
c191bml0dGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X291dHB1dF90ZXN0Xy5jYyBcCi0gIHRlc3Qv
Z3Rlc3Rfc2h1ZmZsZV90ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90
ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0Xy5jYyBcCiAgIHRlc3Qv
Z3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfLmNjIFwKICAgdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTJf
dGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjCisgIHRlc3Qv
Z3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MgXAorICB0ZXN0L3Byb2R1Y3Rpb24uY2MgXAor
ICB0ZXN0L3Byb2R1Y3Rpb24uaAogCiAjIFB5dGhvbiB0ZXN0cyB0aGF0IHdlIGRvbid0IHJ1bi4K
IEVYVFJBX0RJU1QgKz0gXAotICB0ZXN0L2d0ZXN0X3Rlc3RfdXRpbHMucHkgXAotICB0ZXN0L2d0
ZXN0X3htbF90ZXN0X3V0aWxzLnB5IFwKLSAgdGVzdC9ndGVzdF9icmVha19vbl9mYWlsdXJlX3Vu
aXR0ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF9l
bnZfdmFyX3Rlc3QucHkgXAotICB0ZXN0L2d0ZXN0X2ZpbHRlcl91bml0dGVzdC5weSBcCisgIHRl
c3QvZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0LnB5IFwKKyAgdGVzdC9nb29n
bGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdC5weSBcCisgIHRlc3QvZ29vZ2xldGVzdC1jb2xv
ci10ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LWVudi12YXItdGVzdC5weSBcCisgIHRlc3Qv
Z29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3QucHkgXAogICB0ZXN0L2d0ZXN0X2hlbHBfdGVzdC5w
eSBcCi0gIHRlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3Rf
b3V0cHV0X3Rlc3QucHkgXAotICB0ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0
IFwKLSAgdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fd2luLnR4dCBcCi0gIHRlc3QvZ3Rl
c3Rfc2h1ZmZsZV90ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3Qu
cHkgXAotICB0ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5weSBcCisgIHRlc3QvZ29vZ2xl
dGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10
ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0X2dvbGRlbl9saW4udHh0IFwK
KyAgdGVzdC9nb29nbGV0ZXN0LXNodWZmbGUtdGVzdC5weSBcCisgIHRlc3QvZ3Rlc3RfdGVzdF91
dGlscy5weSBcCisgIHRlc3QvZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3QucHkgXAor
ICB0ZXN0L2dvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0LnB5IFwKICAgdGVzdC9ndGVzdF94
bWxfb3V0ZmlsZXNfdGVzdC5weSBcCiAgIHRlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdC5w
eSBcCi0gIHRlc3QvcnVuX3Rlc3RzX3V0aWwucHkgXAotICB0ZXN0L3J1bl90ZXN0c191dGlsX3Rl
c3QucHkKKyAgdGVzdC9ndGVzdF94bWxfdGVzdF91dGlscy5weQogCiAjIENNYWtlIHNjcmlwdAog
RVhUUkFfRElTVCArPSBcCi0gIENNYWtlTGlzdHMudHh0CisgIENNYWtlTGlzdHMudHh0IFwKKyAg
Y21ha2UvaW50ZXJuYWxfdXRpbHMuY21ha2UKIAogIyBNU1ZDIHByb2plY3QgZmlsZXMKIEVYVFJB
X0RJU1QgKz0gXAotICBtc3ZjL2d0ZXN0LW1kLnNsbiBcCi0gIG1zdmMvZ3Rlc3Quc2xuIFwKLSAg
bXN2Yy9ndGVzdC1tZC52Y3Byb2ogXAotICBtc3ZjL2d0ZXN0LnZjcHJvaiBcCi0gIG1zdmMvZ3Rl
c3RfbWFpbi1tZC52Y3Byb2ogXAotICBtc3ZjL2d0ZXN0X21haW4udmNwcm9qIFwKLSAgbXN2Yy9n
dGVzdF9wcm9kX3Rlc3QtbWQudmNwcm9qIFwKLSAgbXN2Yy9ndGVzdF9wcm9kX3Rlc3QudmNwcm9q
IFwKLSAgbXN2Yy9ndGVzdF91bml0dGVzdC1tZC52Y3Byb2ogXAotICBtc3ZjL2d0ZXN0X3VuaXR0
ZXN0LnZjcHJvagorICBtc3ZjLzIwMTAvZ3Rlc3QtbWQuc2xuIFwKKyAgbXN2Yy8yMDEwL2d0ZXN0
LW1kLnZjeHByb2ogXAorICBtc3ZjLzIwMTAvZ3Rlc3Quc2xuIFwKKyAgbXN2Yy8yMDEwL2d0ZXN0
LnZjeHByb2ogXAorICBtc3ZjLzIwMTAvZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qIFwKKyAgbXN2Yy8y
MDEwL2d0ZXN0X21haW4udmN4cHJvaiBcCisgIG1zdmMvMjAxMC9ndGVzdF9wcm9kX3Rlc3QtbWQu
dmN4cHJvaiBcCisgIG1zdmMvMjAxMC9ndGVzdF9wcm9kX3Rlc3QudmN4cHJvaiBcCisgIG1zdmMv
MjAxMC9ndGVzdF91bml0dGVzdC1tZC52Y3hwcm9qIFwKKyAgbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0
ZXN0LnZjeHByb2oKIAogIyB4Y29kZSBwcm9qZWN0IGZpbGVzCiBFWFRSQV9ESVNUICs9IFwKQEAg
LTEzMywzMSArMTQxLDI3IEBAIEVYVFJBX0RJU1QgKz0gXAogICB4Y29kZS9Db25maWcvU3RhdGlj
TGlicmFyeVRhcmdldC54Y2NvbmZpZyBcCiAgIHhjb2RlL0NvbmZpZy9UZXN0VGFyZ2V0LnhjY29u
ZmlnIFwKICAgeGNvZGUvUmVzb3VyY2VzL0luZm8ucGxpc3QgXAotICB4Y29kZS9TY3JpcHRzL3Zl
cnNpb25nZW5lcmF0ZS5weSBcCiAgIHhjb2RlL1NjcmlwdHMvcnVudGVzdHMuc2ggXAorICB4Y29k
ZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weSBcCiAgIHhjb2RlL2d0ZXN0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKIAogIyB4Y29kZSBzYW1wbGUgZmlsZXMKIEVYVFJBX0RJU1QgKz0gXAog
ICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9JbmZvLnBsaXN0IFwKKyAgeGNvZGUvU2Ft
cGxlcy9GcmFtZXdvcmtTYW1wbGUvV2lkZ2V0RnJhbWV3b3JrLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogXAogICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9ydW50ZXN0cy5zaCBcCi0g
IHhjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjIFwKICAgeGNvZGUv
U2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0LmNjIFwKICAgeGNvZGUvU2FtcGxlcy9GcmFt
ZXdvcmtTYW1wbGUvd2lkZ2V0LmggXAotICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9X
aWRnZXRGcmFtZXdvcmsueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorICB4Y29kZS9TYW1wbGVz
L0ZyYW1ld29ya1NhbXBsZS93aWRnZXRfdGVzdC5jYwogCiAjIEMrK0J1aWxkZXIgcHJvamVjdCBm
aWxlcwogRVhUUkFfRElTVCArPSBcCisgIGNvZGVnZWFyL2d0ZXN0LmNicHJvaiBcCisgIGNvZGVn
ZWFyL2d0ZXN0Lmdyb3VwcHJvaiBcCiAgIGNvZGVnZWFyL2d0ZXN0X2FsbC5jYyBcCiAgIGNvZGVn
ZWFyL2d0ZXN0X2xpbmsuY2MgXAotICBjb2RlZ2Vhci9ndGVzdC5jYnByb2ogXAogICBjb2RlZ2Vh
ci9ndGVzdF9tYWluLmNicHJvaiBcCi0gIGNvZGVnZWFyL2d0ZXN0X3VuaXR0ZXN0LmNicHJvaiBc
Ci0gIGNvZGVnZWFyL2d0ZXN0Lmdyb3VwcHJvagotCi0jIFNjcmlwdHMgYW5kIHV0aWxpdGllcwot
YmluX1NDUklQVFMgPSBzY3JpcHRzL2d0ZXN0LWNvbmZpZwotQ0xFQU5GSUxFUyA9ICQoYmluX1ND
UklQVFMpCisgIGNvZGVnZWFyL2d0ZXN0X3VuaXR0ZXN0LmNicHJvagogCiAjIERpc3RyaWJ1dGUg
YW5kIGluc3RhbGwgTTQgbWFjcm8KIG00ZGF0YWRpciA9ICQoZGF0YWRpcikvYWNsb2NhbApAQCAt
MTgxLDE1ICsxODUsMTcgQEAgbGliX0xUTElCUkFSSUVTID0gbGliL2xpYmd0ZXN0LmxhIGxpYi9s
aWJndGVzdF9tYWluLmxhCiAKIGxpYl9saWJndGVzdF9sYV9TT1VSQ0VTID0gc3JjL2d0ZXN0LWFs
bC5jYwogCi1wa2dpbmNsdWRlX0hFQURFUlMgPSBpbmNsdWRlL2d0ZXN0L2d0ZXN0LmggXAotICAg
ICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmggXAotICAg
ICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmggXAotICAgICAg
ICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmggXAotICAgICAg
ICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVzdF9wcmVkX2ltcGwuaCBcCi0gICAgICAg
ICAgICAgICAgICAgICBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaCBcCi0gICAgICAgICAgICAg
ICAgICAgICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXNwaS5oIFwKLSAgICAgICAgICAgICAgICAgICAg
IGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmggXAotICAgICAgICAgICAgICAgICAgICAg
aW5jbHVkZS9ndGVzdC9ndGVzdC10eXBlZC10ZXN0LmgKK3BrZ2luY2x1ZGVfSEVBREVSUyA9IFwK
KyAgaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmggXAorICBpbmNsdWRlL2d0ZXN0L2d0
ZXN0LW1lc3NhZ2UuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oIFwKKyAg
aW5jbHVkZS9ndGVzdC9ndGVzdC1wcmludGVycy5oIFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC1z
cGkuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmggXAorICBpbmNsdWRlL2d0
ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCBcCisgIGlu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3By
b2QuaAogCiBwa2dpbmNsdWRlX2ludGVybmFsZGlyID0gJChwa2dpbmNsdWRlZGlyKS9pbnRlcm5h
bAogcGtnaW5jbHVkZV9pbnRlcm5hbF9IRUFERVJTID0gXApAQCAtMjAwLDYxICsyMDYsOTcgQEAg
cGtnaW5jbHVkZV9pbnRlcm5hbF9IRUFERVJTID0gXAogICBpbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmggXAogICBpbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXBhcmFtLXV0aWwuaCBcCiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9y
dC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LWFyY2guaCBcCiAgIGlu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmggXAogICBpbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2d0ZXN0LXR1cGxlLmggXAotICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5
cGUtdXRpbC5oCisgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmggXAor
ICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oIFwKKyAgaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9jdXN0b20vZ3Rlc3QtcHJpbnRlcnMuaAogCiBsaWJfbGliZ3Rlc3RfbWFpbl9sYV9TT1VSQ0VT
ID0gc3JjL2d0ZXN0X21haW4uY2MKIGxpYl9saWJndGVzdF9tYWluX2xhX0xJQkFERCA9IGxpYi9s
aWJndGVzdC5sYQogCi0jIEJ1bGlkIHJ1bGVzIGZvciBzYW1wbGVzIGFuZCB0ZXN0cy4gQXV0b21h
a2UncyBuYW1pbmcgZm9yIHNvbWUgb2YKKyMgQnVpbGQgcnVsZXMgZm9yIHNhbXBsZXMgYW5kIHRl
c3RzLiBBdXRvbWFrZSdzIG5hbWluZyBmb3Igc29tZSBvZgogIyB0aGVzZSB2YXJpYWJsZXMgaXNu
J3QgdGVycmlibHkgb2J2aW91cywgc28gdGhpcyBpcyBhIGJyaWVmCiAjIHJlZmVyZW5jZToKICMK
ICMgVEVTVFMgLS0gUHJvZ3JhbXMgcnVuIGF1dG9tYXRpY2FsbHkgYnkgIm1ha2UgY2hlY2siCiAj
IGNoZWNrX1BST0dSQU1TIC0tIFByb2dyYW1zIGJ1aWx0IGJ5ICJtYWtlIGNoZWNrIiBidXQgbm90
IG5lY2Vzc2FyaWx5IHJ1bgogCi1ub2luc3RfTFRMSUJSQVJJRVMgPSBzYW1wbGVzL2xpYnNhbXBs
ZXMubGEKLQotc2FtcGxlc19saWJzYW1wbGVzX2xhX1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTEu
Y2MgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVzL3NhbXBsZTEuaCBc
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvc2FtcGxlMi5jYyBcCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvc2FtcGxlMi5oIFwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlcy9zYW1wbGUzLWlubC5oIFwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlcy9zYW1wbGU0LmNjIFwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlcy9zYW1wbGU0LmgKLQogVEVTVFM9CiBURVNU
U19FTlZJUk9OTUVOVCA9IEdURVNUX1NPVVJDRV9ESVI9IiQoc3JjZGlyKS90ZXN0IiBcCiAgICAg
ICAgICAgICAgICAgICAgIEdURVNUX0JVSUxEX0RJUj0iJCh0b3BfYnVpbGRkaXIpL3Rlc3QiCiBj
aGVja19QUk9HUkFNUz0KIAogIyBBIHNpbXBsZSBzYW1wbGUgb24gdXNpbmcgZ3Rlc3QuCi1URVNU
UyArPSBzYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QKLWNoZWNrX1BST0dSQU1TICs9IHNhbXBsZXMv
c2FtcGxlMV91bml0dGVzdAotc2FtcGxlc19zYW1wbGUxX3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1w
bGVzL3NhbXBsZTFfdW5pdHRlc3QuY2MKK1RFU1RTICs9IHNhbXBsZXMvc2FtcGxlMV91bml0dGVz
dCBcCisgICAgc2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTNf
dW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlNF91bml0dGVzdCBcCisgICAgc2FtcGxlcy9z
YW1wbGU1X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QgXAorICAgIHNh
bXBsZXMvc2FtcGxlN191bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0IFwK
KyAgICBzYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlMTBfdW5p
dHRlc3QKK2NoZWNrX1BST0dSQU1TICs9IHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdCBcCisgICAg
c2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3Qg
XAorICAgIHNhbXBsZXMvc2FtcGxlNF91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGU1X3Vu
aXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2Ft
cGxlN191bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0IFwKKyAgICBzYW1w
bGVzL3NhbXBsZTlfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QKKwor
c2FtcGxlc19zYW1wbGUxX3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTFfdW5pdHRl
c3QuY2Mgc2FtcGxlcy9zYW1wbGUxLmNjCiBzYW1wbGVzX3NhbXBsZTFfdW5pdHRlc3RfTERBREQg
PSBsaWIvbGliZ3Rlc3RfbWFpbi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzYW1wbGVzL2xpYnNhbXBsZXMubGEKLQotIyBBbm90aGVyIHNhbXBsZS4gIEl0IGFsc28gdmVy
aWZpZXMgdGhhdCBsaWJndGVzdCB3b3Jrcy4KLVRFU1RTICs9IHNhbXBsZXMvc2FtcGxlMTBfdW5p
dHRlc3QKLWNoZWNrX1BST0dSQU1TICs9IHNhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQorc2FtcGxlc19zYW1w
bGUyX3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2Mgc2FtcGxl
cy9zYW1wbGUyLmNjCitzYW1wbGVzX3NhbXBsZTJfdW5pdHRlc3RfTERBREQgPSBsaWIvbGliZ3Rl
c3RfbWFpbi5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWIvbGliZ3Rl
c3QubGEKK3NhbXBsZXNfc2FtcGxlM191bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGUz
X3VuaXR0ZXN0LmNjCitzYW1wbGVzX3NhbXBsZTNfdW5pdHRlc3RfTERBREQgPSBsaWIvbGliZ3Rl
c3RfbWFpbi5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWIvbGliZ3Rl
c3QubGEKK3NhbXBsZXNfc2FtcGxlNF91bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGU0
X3VuaXR0ZXN0LmNjIHNhbXBsZXMvc2FtcGxlNC5jYworc2FtcGxlc19zYW1wbGU0X3VuaXR0ZXN0
X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBsZTVfdW5pdHRlc3RfU09VUkNF
UyA9IHNhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYyBzYW1wbGVzL3NhbXBsZTEuY2MKK3NhbXBs
ZXNfc2FtcGxlNV91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWluLmxhIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQorc2FtcGxlc19zYW1w
bGU2X3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2MKK3NhbXBs
ZXNfc2FtcGxlNl91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWluLmxhIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQorc2FtcGxlc19zYW1w
bGU3X3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MKK3NhbXBs
ZXNfc2FtcGxlN191bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWluLmxhIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQorc2FtcGxlc19zYW1w
bGU4X3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2MKK3NhbXBs
ZXNfc2FtcGxlOF91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWluLmxhIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQorCisjIEFsc28gdmVy
aWZ5IHRoYXQgbGliZ3Rlc3Qgd29ya3MgYnkgaXRzZWxmLgorc2FtcGxlc19zYW1wbGU5X3VuaXR0
ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MKK3NhbXBsZXNfc2FtcGxl
OV91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdC5sYQogc2FtcGxlc19zYW1wbGUxMF91bml0
dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYwogc2FtcGxlc19zYW1w
bGUxMF91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdC5sYQogCiAjIFRoaXMgdGVzdHMgbW9z
dCBjb25zdHJ1Y3RzIG9mIGd0ZXN0IGFuZCB2ZXJpZmllcyB0aGF0IGxpYmd0ZXN0X21haW4KLSMg
d29ya3MuCisjIGFuZCBsaWJndGVzdCB3b3JrLgogVEVTVFMgKz0gdGVzdC9ndGVzdF9hbGxfdGVz
dAogY2hlY2tfUFJPR1JBTVMgKz0gdGVzdC9ndGVzdF9hbGxfdGVzdAogdGVzdF9ndGVzdF9hbGxf
dGVzdF9TT1VSQ0VTID0gdGVzdC9ndGVzdF9hbGxfdGVzdC5jYwotdGVzdF9ndGVzdF9hbGxfdGVz
dF9MREFERCA9IGxpYi9saWJndGVzdF9tYWluLmxhCit0ZXN0X2d0ZXN0X2FsbF90ZXN0X0xEQURE
ID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxp
Yi9saWJndGVzdC5sYQogCiAjIFRlc3RzIHRoYXQgZnVzZWQgZ3Rlc3QgZmlsZXMgY29tcGlsZSBh
bmQgd29yay4KIEZVU0VEX0dURVNUX1NSQyA9IFwKICAgZnVzZWQtc3JjL2d0ZXN0L2d0ZXN0LWFs
bC5jYyBcCi0gIGZ1c2VkLXNyYy9ndGVzdC9ndGVzdF9tYWluLmNjIFwKLSAgZnVzZWQtc3JjL2d0
ZXN0L2d0ZXN0LmgKKyAgZnVzZWQtc3JjL2d0ZXN0L2d0ZXN0LmggXAorICBmdXNlZC1zcmMvZ3Rl
c3QvZ3Rlc3RfbWFpbi5jYwogCitpZiBIQVZFX1BZVEhPTgogVEVTVFMgKz0gdGVzdC9mdXNlZF9n
dGVzdF90ZXN0CiBjaGVja19QUk9HUkFNUyArPSB0ZXN0L2Z1c2VkX2d0ZXN0X3Rlc3QKIHRlc3Rf
ZnVzZWRfZ3Rlc3RfdGVzdF9TT1VSQ0VTID0gJChGVVNFRF9HVEVTVF9TUkMpIFwKQEAgLTI3OCw3
ICszMjAsMjAgQEAgZnVzZWQtZ3Rlc3Q6ICQocGtnaW5jbHVkZV9IRUFERVJTKSAkKHBrZ2luY2x1
ZGVfaW50ZXJuYWxfSEVBREVSUykgXAogCiBtYWludGFpbmVyLWNsZWFuLWxvY2FsOgogCXJtIC1y
ZiAiJChzcmNkaXIpL2Z1c2VkLXNyYyIKK2VuZGlmCiAKICMgRGVhdGggdGVzdHMgbWF5IHByb2R1
Y2UgY29yZSBkdW1wcyBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LiBJbiBjYXNlCiAjIHRoaXMgaGFw
cGVucywgY2xlYW4gdGhlbSB0byBrZWVwIGRpc3RjbGVhbmNoZWNrIGhhcHB5LgotQ0xFQU5GSUxF
UyArPSBjb3JlCitDTEVBTkZJTEVTID0gY29yZQorCisjIERpc2FibGVzICdtYWtlIGluc3RhbGwn
IGFzIGluc3RhbGxpbmcgYSBjb21waWxlZCB2ZXJzaW9uIG9mIEdvb2dsZQorIyBUZXN0IGNhbiBs
ZWFkIHRvIHVuZGVmaW5lZCBiZWhhdmlvciBkdWUgdG8gdmlvbGF0aW9uIG9mIHRoZQorIyBPbmUt
RGVmaW5pdGlvbiBSdWxlLgorCitpbnN0YWxsLWV4ZWMtbG9jYWw6CisJZWNobyAiJ21ha2UgaW5z
dGFsbCcgaXMgZGFuZ2Vyb3VzIGFuZCBub3Qgc3VwcG9ydGVkLiBJbnN0ZWFkLCBzZWUgUkVBRE1F
IGZvciBob3cgdG8gaW50ZWdyYXRlIEdvb2dsZSBUZXN0IGludG8geW91ciBidWlsZCBzeXN0ZW0u
IgorCWZhbHNlCisKK2luc3RhbGwtZGF0YS1sb2NhbDoKKwllY2hvICInbWFrZSBpbnN0YWxsJyBp
cyBkYW5nZXJvdXMgYW5kIG5vdCBzdXBwb3J0ZWQuIEluc3RlYWQsIHNlZSBSRUFETUUgZm9yIGhv
dyB0byBpbnRlZ3JhdGUgR29vZ2xlIFRlc3QgaW50byB5b3VyIGJ1aWxkIHN5c3RlbS4iCisJZmFs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L1JFQURNRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM2
MTE5MDAyMDk5MTUwZDcxNTc0OWExNmUwM2MyZjU3MzY4NmJiNS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9SRUFE
TUUKKysrIC9kZXYvbnVsbApAQCAtMSw0MTcgKzAsMCBAQAotR29vZ2xlIEMrKyBUZXN0aW5nIEZy
YW1ld29yawotPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1odHRwOi8vY29kZS5nb29n
bGUuY29tL3AvZ29vZ2xldGVzdC8KLQotT3ZlcnZpZXcKLS0tLS0tLS0tCi0KLUdvb2dsZSdzIGZy
YW1ld29yayBmb3Igd3JpdGluZyBDKysgdGVzdHMgb24gYSB2YXJpZXR5IG9mIHBsYXRmb3Jtcwot
KExpbnV4LCBNYWMgT1MgWCwgV2luZG93cywgV2luZG93cyBDRSwgU3ltYmlhbiwgZXRjKS4gIEJh
c2VkIG9uIHRoZQoteFVuaXQgYXJjaGl0ZWN0dXJlLiAgU3VwcG9ydHMgYXV0b21hdGljIHRlc3Qg
ZGlzY292ZXJ5LCBhIHJpY2ggc2V0IG9mCi1hc3NlcnRpb25zLCB1c2VyLWRlZmluZWQgYXNzZXJ0
aW9ucywgZGVhdGggdGVzdHMsIGZhdGFsIGFuZCBub24tZmF0YWwKLWZhaWx1cmVzLCB2YXJpb3Vz
IG9wdGlvbnMgZm9yIHJ1bm5pbmcgdGhlIHRlc3RzLCBhbmQgWE1MIHRlc3QgcmVwb3J0Ci1nZW5l
cmF0aW9uLgotCi1QbGVhc2Ugc2VlIHRoZSBwcm9qZWN0IHBhZ2UgYWJvdmUgZm9yIG1vcmUgaW5m
b3JtYXRpb24gYXMgd2VsbCBhcyB0aGUKLW1haWxpbmcgbGlzdCBmb3IgcXVlc3Rpb25zLCBkaXNj
dXNzaW9ucywgYW5kIGRldmVsb3BtZW50LiAgVGhlcmUgaXMKLWFsc28gYW4gSVJDIGNoYW5uZWwg
b24gT0ZUQyAoaXJjLm9mdGMubmV0KSAjZ3Rlc3QgYXZhaWxhYmxlLiAgUGxlYXNlCi1qb2luIHVz
IQotCi1SZXF1aXJlbWVudHMgZm9yIEVuZCBVc2VycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLQotR29vZ2xlIFRlc3QgaXMgZGVzaWduZWQgdG8gaGF2ZSBmYWlybHkgbWluaW1hbCByZXF1
aXJlbWVudHMgdG8gYnVpbGQKLWFuZCB1c2Ugd2l0aCB5b3VyIHByb2plY3RzLCBidXQgdGhlcmUg
YXJlIHNvbWUuICBDdXJyZW50bHksIHdlIHN1cHBvcnQKLUxpbnV4LCBXaW5kb3dzLCBNYWMgT1Mg
WCwgYW5kIEN5Z3dpbi4gIFdlIHdpbGwgYWxzbyBtYWtlIG91ciBiZXN0Ci1lZmZvcnQgdG8gc3Vw
cG9ydCBvdGhlciBwbGF0Zm9ybXMgKGUuZy4gU29sYXJpcywgQUlYLCBhbmQgei9PUykuCi1Ib3dl
dmVyLCBzaW5jZSBjb3JlIG1lbWJlcnMgb2YgdGhlIEdvb2dsZSBUZXN0IHByb2plY3QgaGF2ZSBu
byBhY2Nlc3MKLXRvIHRoZXNlIHBsYXRmb3JtcywgR29vZ2xlIFRlc3QgbWF5IGhhdmUgb3V0c3Rh
bmRpbmcgaXNzdWVzIHRoZXJlLiAgSWYKLXlvdSBub3RpY2UgYW55IHByb2JsZW1zIG9uIHlvdXIg
cGxhdGZvcm0sIHBsZWFzZSBub3RpZnkKLWdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBz
LmNvbS4gIFBhdGNoZXMgZm9yIGZpeGluZyB0aGVtIGFyZQotZXZlbiBtb3JlIHdlbGNvbWUhCi0K
LSMjIyBMaW51eCBSZXF1aXJlbWVudHMgIyMjCi0KLVRoZXNlIGFyZSB0aGUgYmFzZSByZXF1aXJl
bWVudHMgdG8gYnVpbGQgYW5kIHVzZSBHb29nbGUgVGVzdCBmcm9tIGEgc291cmNlCi1wYWNrYWdl
IChhcyBkZXNjcmliZWQgYmVsb3cpOgotICAqIEdOVS1jb21wYXRpYmxlIE1ha2Ugb3IgZ21ha2UK
LSAgKiBQT1NJWC1zdGFuZGFyZCBzaGVsbAotICAqIFBPU0lYKC0yKSBSZWd1bGFyIEV4cHJlc3Np
b25zIChyZWdleC5oKQotICAqIEEgQysrOTgtc3RhbmRhcmQtY29tcGxpYW50IGNvbXBpbGVyCi0K
LSMjIyBXaW5kb3dzIFJlcXVpcmVtZW50cyAjIyMKLQotICAqIE1pY3Jvc29mdCBWaXN1YWwgQysr
IDcuMSBvciBuZXdlcgotCi0jIyMgQ3lnd2luIFJlcXVpcmVtZW50cyAjIyMKLQotICAqIEN5Z3dp
biAxLjUuMjUtMTQgb3IgbmV3ZXIKLQotIyMjIE1hYyBPUyBYIFJlcXVpcmVtZW50cyAjIyMKLQot
ICAqIE1hYyBPUyBYIDEwLjQgVGlnZXIgb3IgbmV3ZXIKLSAgKiBEZXZlbG9wZXIgVG9vbHMgSW5z
dGFsbGVkCi0KLUFsc28sIHlvdSdsbCBuZWVkIENNYWtlIDIuNi40IG9yIGhpZ2hlciBpZiB5b3Ug
d2FudCB0byBidWlsZCB0aGUKLXNhbXBsZXMgdXNpbmcgdGhlIHByb3ZpZGVkIENNYWtlIHNjcmlw
dCwgcmVnYXJkbGVzcyBvZiB0aGUgcGxhdGZvcm0uCi0KLVJlcXVpcmVtZW50cyBmb3IgQ29udHJp
YnV0b3JzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1XZSB3ZWxjb21lIHBhdGNo
ZXMuICBJZiB5b3UgcGxhbiB0byBjb250cmlidXRlIGEgcGF0Y2gsIHlvdSBuZWVkIHRvCi1idWls
ZCBHb29nbGUgVGVzdCBhbmQgaXRzIG93biB0ZXN0cyBmcm9tIGFuIFNWTiBjaGVja291dCAoZGVz
Y3JpYmVkCi1iZWxvdyksIHdoaWNoIGhhcyBmdXJ0aGVyIHJlcXVpcmVtZW50czoKLQotICAqIFB5
dGhvbiB2ZXJzaW9uIDIuMyBvciBuZXdlciAoZm9yIHJ1bm5pbmcgc29tZSBvZiB0aGUgdGVzdHMg
YW5kCi0gICAgcmUtZ2VuZXJhdGluZyBjZXJ0YWluIHNvdXJjZSBmaWxlcyBmcm9tIHRlbXBsYXRl
cykKLSAgKiBDTWFrZSAyLjYuNCBvciBuZXdlcgotCi1HZXR0aW5nIHRoZSBTb3VyY2UKLS0tLS0t
LS0tLS0tLS0tLS0tLQotCi1UaGVyZSBhcmUgdHdvIHByaW1hcnkgd2F5cyBvZiBnZXR0aW5nIEdv
b2dsZSBUZXN0J3Mgc291cmNlIGNvZGU6IHlvdQotY2FuIGRvd25sb2FkIGEgc3RhYmxlIHNvdXJj
ZSByZWxlYXNlIGluIHlvdXIgcHJlZmVycmVkIGFyY2hpdmUgZm9ybWF0LAotb3IgZGlyZWN0bHkg
Y2hlY2sgb3V0IHRoZSBzb3VyY2UgZnJvbSBvdXIgU3VidmVyc2lvbiAoU1ZOKSByZXBvc2l0YXJ5
LgotVGhlIFNWTiBjaGVja291dCByZXF1aXJlcyBhIGZldyBleHRyYSBzdGVwcyBhbmQgc29tZSBl
eHRyYSBzb2Z0d2FyZQotcGFja2FnZXMgb24geW91ciBzeXN0ZW0sIGJ1dCBsZXRzIHlvdSB0cmFj
ayB0aGUgbGF0ZXN0IGRldmVsb3BtZW50IGFuZAotbWFrZSBwYXRjaGVzIG11Y2ggbW9yZSBlYXNp
bHksIHNvIHdlIGhpZ2hseSBlbmNvdXJhZ2UgaXQuCi0KLSMjIyBTb3VyY2UgUGFja2FnZSAjIyMK
LQotR29vZ2xlIFRlc3QgaXMgcmVsZWFzZWQgaW4gdmVyc2lvbmVkIHNvdXJjZSBwYWNrYWdlcyB3
aGljaCBjYW4gYmUKLWRvd25sb2FkZWQgZnJvbSB0aGUgZG93bmxvYWQgcGFnZSBbMV0uICBTZXZl
cmFsIGRpZmZlcmVudCBhcmNoaXZlCi1mb3JtYXRzIGFyZSBwcm92aWRlZCwgYnV0IHRoZSBvbmx5
IGRpZmZlcmVuY2UgaXMgdGhlIHRvb2xzIHVzZWQgdG8KLW1hbmlwdWxhdGUgdGhlbSwgYW5kIHRo
ZSBzaXplIG9mIHRoZSByZXN1bHRpbmcgZmlsZS4gIERvd25sb2FkCi13aGljaGV2ZXIgeW91IGFy
ZSBtb3N0IGNvbWZvcnRhYmxlIHdpdGguCi0KLSAgWzFdIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20v
cC9nb29nbGV0ZXN0L2Rvd25sb2Fkcy9saXN0Ci0KLU9uY2UgdGhlIHBhY2thZ2UgaXMgZG93bmxv
YWRlZCwgZXhwYW5kIGl0IHVzaW5nIHdoaWNoZXZlciB0b29scyB5b3UKLXByZWZlciBmb3IgdGhh
dCB0eXBlLiAgVGhpcyB3aWxsIHJlc3VsdCBpbiBhIG5ldyBkaXJlY3Rvcnkgd2l0aCB0aGUKLW5h
bWUgImd0ZXN0LVguWS5aIiB3aGljaCBjb250YWlucyBhbGwgb2YgdGhlIHNvdXJjZSBjb2RlLiAg
SGVyZSBhcmUKLXNvbWUgZXhhbXBsZXMgb24gTGludXg6Ci0KLSAgdGFyIC14dnpmIGd0ZXN0LVgu
WS5aLnRhci5negotICB0YXIgLXh2amYgZ3Rlc3QtWC5ZLloudGFyLmJ6MgotICB1bnppcCBndGVz
dC1YLlkuWi56aXAKLQotIyMjIFNWTiBDaGVja291dCAjIyMKLQotVG8gY2hlY2sgb3V0IHRoZSBt
YWluIGJyYW5jaCAoYWxzbyBrbm93biBhcyB0aGUgInRydW5rIikgb2YgR29vZ2xlCi1UZXN0LCBy
dW4gdGhlIGZvbGxvd2luZyBTdWJ2ZXJzaW9uIGNvbW1hbmQ6Ci0KLSAgc3ZuIGNoZWNrb3V0IGh0
dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay8gZ3Rlc3Qtc3ZuCi0KLVNl
dHRpbmcgdXAgdGhlIEJ1aWxkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UbyBidWlsZCBHb29n
bGUgVGVzdCBhbmQgeW91ciB0ZXN0cyB0aGF0IHVzZSBpdCwgeW91IG5lZWQgdG8gdGVsbCB5b3Vy
Ci1idWlsZCBzeXN0ZW0gd2hlcmUgdG8gZmluZCBpdHMgaGVhZGVycyBhbmQgc291cmNlIGZpbGVz
LiAgVGhlIGV4YWN0Ci13YXkgdG8gZG8gaXQgZGVwZW5kcyBvbiB3aGljaCBidWlsZCBzeXN0ZW0g
eW91IHVzZSwgYW5kIGlzIHVzdWFsbHkKLXN0cmFpZ2h0Zm9yd2FyZC4KLQotIyMjIEdlbmVyaWMg
QnVpbGQgSW5zdHJ1Y3Rpb25zICMjIwotCi1TdXBwb3NlIHlvdSBwdXQgR29vZ2xlIFRlc3QgaW4g
ZGlyZWN0b3J5ICR7R1RFU1RfRElSfS4gIFRvIGJ1aWxkIGl0LAotY3JlYXRlIGEgbGlicmFyeSBi
dWlsZCB0YXJnZXQgKG9yIGEgcHJvamVjdCBhcyBjYWxsZWQgYnkgVmlzdWFsIFN0dWRpbwotYW5k
IFhjb2RlKSB0byBjb21waWxlCi0KLSAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1hbGwuY2MKLQot
d2l0aAotCi0gICR7R1RFU1RfRElSfS9pbmNsdWRlIGFuZCAke0dURVNUX0RJUn0KLQotaW4gdGhl
IGhlYWRlciBzZWFyY2ggcGF0aC4gIEFzc3VtaW5nIGEgTGludXgtbGlrZSBzeXN0ZW0gYW5kIGdj
YywKLXNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgd2lsbCBkbzoKLQotICBnKysgLUkke0dU
RVNUX0RJUn0vaW5jbHVkZSAtSSR7R1RFU1RfRElSfSAtYyAke0dURVNUX0RJUn0vc3JjL2d0ZXN0
LWFsbC5jYwotICBhciAtcnYgbGliZ3Rlc3QuYSBndGVzdC1hbGwubwotCi1OZXh0LCB5b3Ugc2hv
dWxkIGNvbXBpbGUgeW91ciB0ZXN0IHNvdXJjZSBmaWxlIHdpdGgKLSR7R1RFU1RfRElSfS9pbmNs
dWRlIGluIHRoZSBoZWFkZXIgc2VhcmNoIHBhdGgsIGFuZCBsaW5rIGl0IHdpdGggZ3Rlc3QKLWFu
ZCBhbnkgb3RoZXIgbmVjZXNzYXJ5IGxpYnJhcmllczoKLQotICBnKysgLUkke0dURVNUX0RJUn0v
aW5jbHVkZSBwYXRoL3RvL3lvdXJfdGVzdC5jYyBsaWJndGVzdC5hIC1vIHlvdXJfdGVzdAotCi1B
cyBhbiBleGFtcGxlLCB0aGUgbWFrZS8gZGlyZWN0b3J5IGNvbnRhaW5zIGEgTWFrZWZpbGUgdGhh
dCB5b3UgY2FuCi11c2UgdG8gYnVpbGQgR29vZ2xlIFRlc3Qgb24gc3lzdGVtcyB3aGVyZSBHTlUg
bWFrZSBpcyBhdmFpbGFibGUKLShlLmcuIExpbnV4LCBNYWMgT1MgWCwgYW5kIEN5Z3dpbikuICBJ
dCBkb2Vzbid0IHRyeSB0byBidWlsZCBHb29nbGUKLVRlc3QncyBvd24gdGVzdHMuICBJbnN0ZWFk
LCBpdCBqdXN0IGJ1aWxkcyB0aGUgR29vZ2xlIFRlc3QgbGlicmFyeSBhbmQKLWEgc2FtcGxlIHRl
c3QuICBZb3UgY2FuIHVzZSBpdCBhcyBhIHN0YXJ0aW5nIHBvaW50IGZvciB5b3VyIG93biBidWls
ZAotc2NyaXB0LgotCi1JZiB0aGUgZGVmYXVsdCBzZXR0aW5ncyBhcmUgY29ycmVjdCBmb3IgeW91
ciBlbnZpcm9ubWVudCwgdGhlCi1mb2xsb3dpbmcgY29tbWFuZHMgc2hvdWxkIHN1Y2NlZWQ6Ci0K
LSAgY2QgJHtHVEVTVF9ESVJ9L21ha2UKLSAgbWFrZQotICAuL3NhbXBsZTFfdW5pdHRlc3QKLQot
SWYgeW91IHNlZSBlcnJvcnMsIHRyeSB0byB0d2VhayB0aGUgY29udGVudHMgb2YgbWFrZS9NYWtl
ZmlsZSB0byBtYWtlCi10aGVtIGdvIGF3YXkuICBUaGVyZSBhcmUgaW5zdHJ1Y3Rpb25zIGluIG1h
a2UvTWFrZWZpbGUgb24gaG93IHRvIGRvCi1pdC4KLQotIyMjIFVzaW5nIENNYWtlICMjIwotCi1H
b29nbGUgVGVzdCBjb21lcyB3aXRoIGEgQ01ha2UgYnVpbGQgc2NyaXB0IChDTWFrZUxpc3RzLnR4
dCkgdGhhdCBjYW4KLWJlIHVzZWQgb24gYSB3aWRlIHJhbmdlIG9mIHBsYXRmb3JtcyAoIkMiIHN0
YW5kcyBmb3IgY3Jvc3MtcGxhdG9mcm0uKS4KLUlmIHlvdSBkb24ndCBoYXZlIENNYWtlIGluc3Rh
bGxlZCBhbHJlYWR5LCB5b3UgY2FuIGRvd25sb2FkIGl0IGZvcgotZnJlZSBmcm9tIGh0dHA6Ly93
d3cuY21ha2Uub3JnLy4KLQotQ01ha2Ugd29ya3MgYnkgZ2VuZXJhdGluZyBuYXRpdmUgbWFrZWZp
bGVzIG9yIGJ1aWxkIHByb2plY3RzIHRoYXQgY2FuCi1iZSB1c2VkIGluIHRoZSBjb21waWxlciBl
bnZpcm9ubWVudCBvZiB5b3VyIGNob2ljZS4gIFRoZSB0eXBpY2FsCi13b3JrZmxvdyBzdGFydHMg
d2l0aDoKLQotICBta2RpciBteWJ1aWxkICAgICAgICMgQ3JlYXRlIGEgZGlyZWN0b3J5IHRvIGhv
bGQgdGhlIGJ1aWxkIG91dHB1dC4KLSAgY2QgbXlidWlsZAotICBjbWFrZSAke0dURVNUX0RJUn0g
ICMgR2VuZXJhdGUgbmF0aXZlIGJ1aWxkIHNjcmlwdHMuCi0KLUlmIHlvdSB3YW50IHRvIGJ1aWxk
IEdvb2dsZSBUZXN0J3Mgc2FtcGxlcywgeW91IHNob3VsZCByZXBsYWNlIHRoZQotbGFzdCBjb21t
YW5kIHdpdGgKLQotICBjbWFrZSAtRGJ1aWxkX2d0ZXN0X3NhbXBsZXM9T04gJHtHVEVTVF9ESVJ9
Ci0KLUlmIHlvdSBhcmUgb24gYSAqbml4IHN5c3RlbSwgeW91IHNob3VsZCBub3cgc2VlIGEgTWFr
ZWZpbGUgaW4gdGhlCi1jdXJyZW50IGRpcmVjdG9yeS4gIEp1c3QgdHlwZSAnbWFrZScgdG8gYnVp
bGQgZ3Rlc3QuCi0KLUlmIHlvdSB1c2UgV2luZG93cyBhbmQgaGF2ZSBWaXN0dWFsIFN0dWRpbyBp
bnN0YWxsZWQsIGEgZ3Rlc3Quc2xuIGZpbGUKLWFuZCBzZXZlcmFsIC52Y3Byb2ogZmlsZXMgd2ls
bCBiZSBjcmVhdGVkLiAgWW91IGNhbiB0aGVuIGJ1aWxkIHRoZW0KLXVzaW5nIFZpc3VhbCBTdHVk
aW8uCi0KLU9uIE1hYyBPUyBYIHdpdGggWGNvZGUgaW5zdGFsbGVkLCBhIC54Y29kZXByb2ogZmls
ZSB3aWxsIGJlIGdlbmVyYXRlZC4KLQotIyMjIExlZ2FjeSBCdWlsZCBTY3JpcHRzICMjIwotCi1C
ZWZvcmUgc2V0dGxpbmcgb24gQ01ha2UsIHdlIGhhdmUgYmVlbiBwcm92aWRpbmcgaGFuZC1tYWlu
dGFpbmVkIGJ1aWxkCi1wcm9qZWN0cy9zY3JpcHRzIGZvciBWaXN1YWwgU3R1ZGlvLCBYY29kZSwg
YW5kIEF1dG90b29scy4gIFdoaWxlIHdlCi1jb250aW51ZSB0byBwcm92aWRlIHRoZW0gZm9yIGNv
bnZlbmllbmNlLCB0aGV5IGFyZSBub3QgYWN0aXZlbHkKLW1haW50YWluZWQgYW55IG1vcmUuICBX
ZSBoaWdobHkgcmVjb21tZW5kIHRoYXQgeW91IGZvbGxvdyB0aGUKLWluc3RydWN0aW9ucyBpbiB0
aGUgcHJldmlvdXMgdHdvIHNlY3Rpb25zIHRvIGludGVncmF0ZSBHb29nbGUgVGVzdAotd2l0aCB5
b3VyIGV4aXN0aW5nIGJ1aWxkIHN5c3RlbS4KLQotSWYgeW91IHN0aWxsIG5lZWQgdG8gdXNlIHRo
ZSBsZWdhY3kgYnVpbGQgc2NyaXB0cywgaGVyZSdzIGhvdzoKLQotVGhlIG1zdmNcIGZvbGRlciBj
b250YWlucyB0d28gc29sdXRpb25zIHdpdGggVmlzdWFsIEMrKyBwcm9qZWN0cy4KLU9wZW4gdGhl
IGd0ZXN0LnNsbiBvciBndGVzdC1tZC5zbG4gZmlsZSB1c2luZyBWaXN1YWwgU3R1ZGlvLCBhbmQg
eW91Ci1hcmUgcmVhZHkgdG8gYnVpbGQgR29vZ2xlIFRlc3QgdGhlIHNhbWUgd2F5IHlvdSBidWls
ZCBhbnkgVmlzdWFsCi1TdHVkaW8gcHJvamVjdC4gIEZpbGVzIHRoYXQgaGF2ZSBuYW1lcyBlbmRp
bmcgd2l0aCAtbWQgdXNlIERMTAotdmVyc2lvbnMgb2YgTWljcm9zb2Z0IHJ1bnRpbWUgbGlicmFy
aWVzICh0aGUgL01EIG9yIHRoZSAvTURkIGNvbXBpbGVyCi1vcHRpb24pLiAgRmlsZXMgd2l0aG91
dCB0aGF0IHN1ZmZpeCB1c2Ugc3RhdGljIHZlcnNpb25zIG9mIHRoZSBydW50aW1lCi1saWJyYXJp
ZXMgKHRoZSAvTVQgb3IgdGhlIC9NVGQgb3B0aW9uKS4gIFBsZWFzZSBub3RlIHRoYXQgb25lIG11
c3QgdXNlCi10aGUgc2FtZSBvcHRpb24gdG8gY29tcGlsZSBib3RoIGd0ZXN0IGFuZCB0aGUgdGVz
dCBjb2RlLiAgSWYgeW91IHVzZQotVmlzdWFsIFN0dWRpbyAyMDA1IG9yIGFib3ZlLCB3ZSByZWNv
bW1lbmQgdGhlIC1tZCB2ZXJzaW9uIGFzIC9NRCBpcwotdGhlIGRlZmF1bHQgZm9yIG5ldyBwcm9q
ZWN0cyBpbiB0aGVzZSB2ZXJzaW9ucyBvZiBWaXN1YWwgU3R1ZGlvLgotCi1PbiBNYWMgT1MgWCwg
b3BlbiB0aGUgZ3Rlc3QueGNvZGVwcm9qIGluIHRoZSB4Y29kZS8gZm9sZGVyIHVzaW5nCi1YY29k
ZS4gIEJ1aWxkIHRoZSAiZ3Rlc3QiIHRhcmdldC4gIFRoZSB1bml2ZXJzYWwgYmluYXJ5IGZyYW1l
d29yayB3aWxsCi1lbmQgdXAgaW4geW91ciBzZWxlY3RlZCBidWlsZCBkaXJlY3RvcnkgKHNlbGVj
dGVkIGluIHRoZSBYY29kZQotIlByZWZlcmVuY2VzLi4uIiAtPiAiQnVpbGRpbmciIHBhbmUgYW5k
IGRlZmF1bHRzIHRvIHhjb2RlL2J1aWxkKS4KLUFsdGVybmF0aXZlbHksIGF0IHRoZSBjb21tYW5k
IGxpbmUsIGVudGVyOgotCi0gIHhjb2RlYnVpbGQKLQotVGhpcyB3aWxsIGJ1aWxkIHRoZSAiUmVs
ZWFzZSIgY29uZmlndXJhdGlvbiBvZiBndGVzdC5mcmFtZXdvcmsgaW4geW91cgotZGVmYXVsdCBi
dWlsZCBsb2NhdGlvbi4gIFNlZSB0aGUgInhjb2RlYnVpbGQiIG1hbiBwYWdlIGZvciBtb3JlCi1p
bmZvcm1hdGlvbiBhYm91dCBidWlsZGluZyBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgYW5kIGJ1
aWxkaW5nIGluCi1kaWZmZXJlbnQgbG9jYXRpb25zLgotCi1Ud2Vha2luZyBHb29nbGUgVGVzdAot
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotR29vZ2xlIFRlc3QgY2FuIGJlIHVzZWQgaW4gZGl2ZXJz
ZSBlbnZpcm9ubWVudHMuICBUaGUgZGVmYXVsdAotY29uZmlndXJhdGlvbiBtYXkgbm90IHdvcmsg
KG9yIG1heSBub3Qgd29yayB3ZWxsKSBvdXQgb2YgdGhlIGJveCBpbgotc29tZSBlbnZpcm9ubWVu
dHMuICBIb3dldmVyLCB5b3UgY2FuIGVhc2lseSB0d2VhayBHb29nbGUgVGVzdCBieQotZGVmaW5p
bmcgY29udHJvbCBtYWNyb3Mgb24gdGhlIGNvbXBpbGVyIGNvbW1hbmQgbGluZS4gIEdlbmVyYWxs
eSwKLXRoZXNlIG1hY3JvcyBhcmUgbmFtZWQgbGlrZSBHVEVTVF9YWVogYW5kIHlvdSBkZWZpbmUg
dGhlbSB0byBlaXRoZXIgMQotb3IgMCB0byBlbmFibGUgb3IgZGlzYWJsZSBhIGNlcnRhaW4gZmVh
dHVyZS4KLQotV2UgbGlzdCB0aGUgbW9zdCBmcmVxdWVudGx5IHVzZWQgbWFjcm9zIGJlbG93LiAg
Rm9yIGEgY29tcGxldGUgbGlzdCwKLXNlZSBmaWxlIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oLgotCi0jIyMgQ2hvb3NpbmcgYSBUUjEgVHVwbGUgTGlicmFyeSAjIyMKLQotU29t
ZSBHb29nbGUgVGVzdCBmZWF0dXJlcyByZXF1aXJlIHRoZSBDKysgVGVjaG5pY2FsIFJlcG9ydCAx
IChUUjEpCi10dXBsZSBsaWJyYXJ5LCB3aGljaCBpcyBub3QgeWV0IGF2YWlsYWJsZSB3aXRoIGFs
bCBjb21waWxlcnMuICBUaGUKLWdvb2QgbmV3cyBpcyB0aGF0IEdvb2dsZSBUZXN0IGltcGxlbWVu
dHMgYSBzdWJzZXQgb2YgVFIxIHR1cGxlIHRoYXQncwotZW5vdWdoIGZvciBpdHMgb3duIG5lZWQs
IGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdXNlIHRoaXMgd2hlbiB0aGUKLWNvbXBpbGVyIGRvZXNu
J3QgcHJvdmlkZSBUUjEgdHVwbGUuCi0KLVVzdWFsbHkgeW91IGRvbid0IG5lZWQgdG8gY2FyZSBh
Ym91dCB3aGljaCB0dXBsZSBsaWJyYXJ5IEdvb2dsZSBUZXN0Ci11c2VzLiAgSG93ZXZlciwgaWYg
eW91ciBwcm9qZWN0IGFscmVhZHkgdXNlcyBUUjEgdHVwbGUsIHlvdSBuZWVkIHRvCi10ZWxsIEdv
b2dsZSBUZXN0IHRvIHVzZSB0aGUgc2FtZSBUUjEgdHVwbGUgbGlicmFyeSB0aGUgcmVzdCBvZiB5
b3VyCi1wcm9qZWN0IHVzZXMsIG9yIHRoZSB0d28gdHVwbGUgaW1wbGVtZW50YXRpb25zIHdpbGwg
Y2xhc2guICBUbyBkbwotdGhhdCwgYWRkCi0KLSAgLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0w
Ci0KLXRvIHRoZSBjb21waWxlciBmbGFncyB3aGlsZSBjb21waWxpbmcgR29vZ2xlIFRlc3QgYW5k
IHlvdXIgdGVzdHMuICBJZgoteW91IHdhbnQgdG8gZm9yY2UgR29vZ2xlIFRlc3QgdG8gdXNlIGl0
cyBvd24gdHVwbGUgbGlicmFyeSwganVzdCBhZGQKLQotICAtREdURVNUX1VTRV9PV05fVFIxX1RV
UExFPTEKLQotdG8gdGhlIGNvbXBpbGVyIGZsYWdzIGluc3RlYWQuCi0KLUlmIHlvdSBkb24ndCB3
YW50IEdvb2dsZSBUZXN0IHRvIHVzZSB0dXBsZSBhdCBhbGwsIGFkZAotCi0gIC1ER1RFU1RfSEFT
X1RSMV9UVVBMRT0wCi0KLWFuZCBhbGwgZmVhdHVyZXMgdXNpbmcgdHVwbGUgd2lsbCBiZSBkaXNh
YmxlZC4KLQotIyMjIE11bHRpLXRocmVhZGVkIFRlc3RzICMjIwotCi1Hb29nbGUgVGVzdCBpcyB0
aHJlYWQtc2FmZSB3aGVyZSB0aGUgcHRocmVhZCBsaWJyYXJ5IGlzIGF2YWlsYWJsZS4KLUFmdGVy
ICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPiwgeW91IGNhbiBjaGVjayB0aGUgR1RFU1RfSVNfVEhS
RUFEU0FGRQotbWFjcm8gdG8gc2VlIHdoZXRoZXIgdGhpcyBpcyB0aGUgY2FzZSAoeWVzIGlmIHRo
ZSBtYWNybyBpcyAjZGVmaW5lZCB0bwotMSwgbm8gaWYgaXQncyB1bmRlZmluZWQuKS4KLQotSWYg
R29vZ2xlIFRlc3QgZG9lc24ndCBjb3JyZWN0bHkgZGV0ZWN0IHdoZXRoZXIgcHRocmVhZCBpcyBh
dmFpbGFibGUKLWluIHlvdXIgZW52aXJvbm1lbnQsIHlvdSBjYW4gZm9yY2UgaXQgd2l0aAotCi0g
IC1ER1RFU1RfSEFTX1BUSFJFQUQ9MQotCi1vcgotCi0gIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MAot
Ci1XaGVuIEdvb2dsZSBUZXN0IHVzZXMgcHRocmVhZCwgeW91IG1heSBuZWVkIHRvIGFkZCBmbGFn
cyB0byB5b3VyCi1jb21waWxlciBhbmQvb3IgbGlua2VyIHRvIHNlbGVjdCB0aGUgcHRocmVhZCBs
aWJyYXJ5LCBvciB5b3UnbGwgZ2V0Ci1saW5rIGVycm9ycy4gIElmIHlvdSB1c2UgdGhlIENNYWtl
IHNjcmlwdCBvciB0aGUgZGVwcmVjYXRlZCBBdXRvdG9vbHMKLXNjcmlwdCwgdGhpcyBpcyB0YWtl
biBjYXJlIG9mIGZvciB5b3UuICBJZiB5b3UgdXNlIHlvdXIgb3duIGJ1aWxkCi1zY3JpcHQsIHlv
dSdsbCBuZWVkIHRvIHJlYWQgeW91ciBjb21waWxlciBhbmQgbGlua2VyJ3MgbWFudWFsIHRvCi1m
aWd1cmUgb3V0IHdoYXQgZmxhZ3MgdG8gYWRkLgotCi0jIyMgQXMgYSBTaGFyZWQgTGlicmFyeSAo
RExMKSAjIyMKLQotR29vZ2xlIFRlc3QgaXMgY29tcGFjdCwgc28gbW9zdCB1c2VycyBjYW4gYnVp
bGQgYW5kIGxpbmsgaXQgYXMgYQotc3RhdGljIGxpYnJhcnkgZm9yIHRoZSBzaW1wbGljaXR5LiAg
WW91IGNhbiBjaG9vc2UgdG8gdXNlIEdvb2dsZSBUZXN0Ci1hcyBhIHNoYXJlZCBsaWJyYXJ5IChr
bm93biBhcyBhIERMTCBvbiBXaW5kb3dzKSBpZiB5b3UgcHJlZmVyLgotCi1UbyBjb21waWxlIGd0
ZXN0IGFzIGEgc2hhcmVkIGxpYnJhcnksIGFkZAotCi0gIC1ER1RFU1RfQ1JFQVRFX1NIQVJFRF9M
SUJSQVJZPTEKLQotdG8gdGhlIGNvbXBpbGVyIGZsYWdzLiAgWW91J2xsIGFsc28gbmVlZCB0byB0
ZWxsIHRoZSBsaW5rZXIgdG8gcHJvZHVjZQotYSBzaGFyZWQgbGlicmFyeSBpbnN0ZWFkIC0gY29u
c3VsdCB5b3VyIGxpbmtlcidzIG1hbnVhbCBmb3IgaG93IHRvIGRvCi1pdC4KLQotVG8gY29tcGls
ZSB5b3VyIHRlc3RzIHRoYXQgdXNlIHRoZSBndGVzdCBzaGFyZWQgbGlicmFyeSwgYWRkCi0KLSAg
LURHVEVTVF9MSU5LRURfQVNfU0hBUkVEX0xJQlJBUlk9MQotCi10byB0aGUgY29tcGlsZXIgZmxh
Z3MuCi0KLSMjIyBBdm9pZGluZyBNYWNybyBOYW1lIENsYXNoZXMgIyMjCi0KLUluIEMrKywgbWFj
cm9zIGRvbid0IG9iZXkgbmFtZXNwYWNlcy4gIFRoZXJlZm9yZSB0d28gbGlicmFyaWVzIHRoYXQK
LWJvdGggZGVmaW5lIGEgbWFjcm8gb2YgdGhlIHNhbWUgbmFtZSB3aWxsIGNsYXNoIGlmIHlvdSAj
aW5jbHVkZSBib3RoCi1kZWZpbml0aW9ucy4gIEluIGNhc2UgYSBHb29nbGUgVGVzdCBtYWNybyBj
bGFzaGVzIHdpdGggYW5vdGhlcgotbGlicmFyeSwgeW91IGNhbiBmb3JjZSBHb29nbGUgVGVzdCB0
byByZW5hbWUgaXRzIG1hY3JvIHRvIGF2b2lkIHRoZQotY29uZmxpY3QuCi0KLVNwZWNpZmljYWxs
eSwgaWYgYm90aCBHb29nbGUgVGVzdCBhbmQgc29tZSBvdGhlciBjb2RlIGRlZmluZSBtYWNybwot
Rk9PLCB5b3UgY2FuIGFkZAotCi0gIC1ER1RFU1RfRE9OVF9ERUZJTkVfRk9PPTEKLQotdG8gdGhl
IGNvbXBpbGVyIGZsYWdzIHRvIHRlbGwgR29vZ2xlIFRlc3QgdG8gY2hhbmdlIHRoZSBtYWNybydz
IG5hbWUKLWZyb20gRk9PIHRvIEdURVNUX0ZPTy4gIEN1cnJlbnRseSBGT08gY2FuIGJlIEZBSUws
IFNVQ0NFRUQsIG9yIFRFU1QuCi1Gb3IgZXhhbXBsZSwgd2l0aCAtREdURVNUX0RPTlRfREVGSU5F
X1RFU1Q9MSwgeW91J2xsIG5lZWQgdG8gd3JpdGUKLQotICBHVEVTVF9URVNUKFNvbWVUZXN0LCBE
b2VzVGhpcykgeyAuLi4gfQotCi1pbnN0ZWFkIG9mCi0KLSAgVEVTVChTb21lVGVzdCwgRG9lc1Ro
aXMpIHsgLi4uIH0KLQotaW4gb3JkZXIgdG8gZGVmaW5lIGEgdGVzdC4KLQotVXBncmF0aW5nIGZy
b20gYW4gRWFybGllciBWZXJzaW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LQotV2Ugc3RyaXZlIHRvIGtlZXAgR29vZ2xlIFRlc3QgcmVsZWFzZXMgYmFja3dhcmQgY29tcGF0
aWJsZS4KLVNvbWV0aW1lcywgdGhvdWdoLCB3ZSBoYXZlIHRvIG1ha2Ugc29tZSBicmVha2luZyBj
aGFuZ2VzIGZvciB0aGUKLXVzZXJzJyBsb25nLXRlcm0gYmVuZWZpdHMuICBUaGlzIHNlY3Rpb24g
ZGVzY3JpYmVzIHdoYXQgeW91J2xsIG5lZWQgdG8KLWRvIGlmIHlvdSBhcmUgdXBncmFkaW5nIGZy
b20gYW4gZWFybGllciB2ZXJzaW9uIG9mIEdvb2dsZSBUZXN0LgotCi0jIyMgVXBncmFkaW5nIGZy
b20gMS4zLjAgb3IgRWFybGllciAjIyMKLQotWW91IG1heSBuZWVkIHRvIGV4cGxpY2l0bHkgZW5h
YmxlIG9yIGRpc2FibGUgR29vZ2xlIFRlc3QncyBvd24gVFIxCi10dXBsZSBsaWJyYXJ5LiAgU2Vl
IHRoZSBpbnN0cnVjdGlvbnMgaW4gc2VjdGlvbiAiQ2hvb3NpbmcgYSBUUjEgVHVwbGUKLUxpYnJh
cnkiLgotCi0jIyMgVXBncmFkaW5nIGZyb20gMS40LjAgb3IgRWFybGllciAjIyMKLQotVGhlIEF1
dG90b29scyBidWlsZCBzY3JpcHQgKGNvbmZpZ3VyZSArIG1ha2UpIGlzIG5vIGxvbmdlciBvZmZp
Y2lhbGx5Ci1zdXBwb3J0dGVkLiAgWW91IGFyZSBlbmNvdXJhZ2VkIHRvIG1pZ3JhdGUgdG8geW91
ciBvd24gYnVpbGQgc3lzdGVtIG9yCi11c2UgQ01ha2UuICBJZiB5b3Ugc3RpbGwgbmVlZCB0byB1
c2UgQXV0b3Rvb2xzLCB5b3UgY2FuIGZpbmQKLWluc3RydWN0aW9ucyBpbiB0aGUgUkVBRE1FIGZp
bGUgZnJvbSBHb29nbGUgVGVzdCAxLjQuMC4KLQotT24gcGxhdGZvcm1zIHdoZXJlIHRoZSBwdGhy
ZWFkIGxpYnJhcnkgaXMgYXZhaWxhYmxlLCBHb29nbGUgVGVzdCB1c2VzCi1pdCBpbiBvcmRlciB0
byBiZSB0aHJlYWQtc2FmZS4gIFNlZSB0aGUgIk11bHRpLXRocmVhZGVkIFRlc3RzIiBzZWN0aW9u
Ci1mb3Igd2hhdCB0aGlzIG1lYW5zIHRvIHlvdXIgYnVpbGQgc2NyaXB0LgotCi1JZiB5b3UgdXNl
IE1pY3Jvc29mdCBWaXN1YWwgQysrIDcuMSB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQsIEdvb2ds
ZQotVGVzdCB3aWxsIG5vIGxvbmdlciBjb21waWxlLiAgVGhpcyBzaG91bGQgYWZmZWN0IHZlcnkg
ZmV3IHBlb3BsZSwgYXMgYQotbGFyZ2UgcG9ydGlvbiBvZiBTVEwgKGluY2x1ZGluZyA8c3RyaW5n
PikgZG9lc24ndCBjb21waWxlIGluIHRoaXMgbW9kZQotYW55d2F5LiAgV2UgZGVjaWRlZCB0byBz
dG9wIHN1cHBvcnRpbmcgaXQgaW4gb3JkZXIgdG8gZ3JlYXRseSBzaW1wbGlmeQotR29vZ2xlIFRl
c3QncyBpbXBsZW1lbnRhdGlvbi4KLQotRGV2ZWxvcGluZyBHb29nbGUgVGVzdAotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotCi1UaGlzIHNlY3Rpb24gZGlzY3Vzc2VzIGhvdyB0byBtYWtlIHlvdXIg
b3duIGNoYW5nZXMgdG8gR29vZ2xlIFRlc3QuCi0KLSMjIyBUZXN0aW5nIEdvb2dsZSBUZXN0IEl0
c2VsZiAjIyMKLQotVG8gbWFrZSBzdXJlIHlvdXIgY2hhbmdlcyB3b3JrIGFzIGludGVuZGVkIGFu
ZCBkb24ndCBicmVhayBleGlzdGluZwotZnVuY3Rpb25hbGl0eSwgeW91J2xsIHdhbnQgdG8gY29t
cGlsZSBhbmQgcnVuIEdvb2dsZSBUZXN0J3Mgb3duIHRlc3RzLgotRm9yIHRoYXQgeW91IGNhbiB1
c2UgQ01ha2U6Ci0KLSAgbWtkaXIgbXlidWlsZAotICBjZCBteWJ1aWxkCi0gIGNtYWtlIC1EYnVp
bGRfYWxsX2d0ZXN0X3Rlc3RzPU9OICR7R1RFU1RfRElSfQotCi1NYWtlIHN1cmUgeW91IGhhdmUg
UHl0aG9uIGluc3RhbGxlZCwgYXMgc29tZSBvZiBHb29nbGUgVGVzdCdzIHRlc3RzCi1hcmUgd3Jp
dHRlbiBpbiBQeXRob24uICBJZiB0aGUgY21ha2UgY29tbWFuZCBjb21wbGFpbnMgYWJvdXQgbm90
IGJlaW5nCi1hYmxlIHRvIGZpbmQgUHl0aG9uICgiQ291bGQgTk9UIGZpbmQgUHl0aG9uSW50ZXJw
IChtaXNzaW5nOgotUFlUSE9OX0VYRUNVVEFCTEUpIiksIHRyeSB0ZWxsaW5nIGl0IGV4cGxpY2l0
bHkgd2hlcmUgeW91ciBQeXRob24KLWV4ZWN1dGFibGUgY2FuIGJlIGZvdW5kOgotCi0gIGNtYWtl
IC1EUFlUSE9OX0VYRUNVVEFCTEU9cGF0aC90by9weXRob24gLURidWlsZF9hbGxfZ3Rlc3RfdGVz
dHM9T04gXAotICAgICAgJHtHVEVTVF9ESVJ9Ci0KLU5leHQsIHlvdSBjYW4gYnVpbGQgR29vZ2xl
IFRlc3QgYW5kIGFsbCBvZiBpdHMgb3duIHRlc3RzLiAgT24gKm5peCwKLXRoaXMgaXMgdXN1YWxs
eSBkb25lIGJ5ICdtYWtlJy4gIFRvIHJ1biB0aGUgdGVzdHMsIGRvCi0KLSAgbWFrZSB0ZXN0Ci0K
LUFsbCB0ZXN0cyBzaG91bGQgcGFzcy4KLQotIyMjIFJlZ2VuZXJhdGluZyBTb3VyY2UgRmlsZXMg
IyMjCi0KLVNvbWUgb2YgR29vZ2xlIFRlc3QncyBzb3VyY2UgZmlsZXMgYXJlIGdlbmVyYXRlZCBm
cm9tIHRlbXBsYXRlcyAobm90Ci1pbiB0aGUgQysrIHNlbnNlKSB1c2luZyBhIHNjcmlwdC4gIEEg
dGVtcGxhdGUgZmlsZSBpcyBuYW1lZCBGT08ucHVtcCwKLXdoZXJlIEZPTyBpcyB0aGUgbmFtZSBv
ZiB0aGUgZmlsZSBpdCB3aWxsIGdlbmVyYXRlLiAgRm9yIGV4YW1wbGUsIHRoZQotZmlsZSBpbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oLnB1bXAgaXMgdXNlZCB0byBnZW5l
cmF0ZQotZ3Rlc3QtdHlwZS11dGlsLmggaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgotCi1Ob3JtYWxs
eSB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCByZWdlbmVyYXRpbmcgdGhlIHNvdXJjZSBm
aWxlcywKLXVubGVzcyB5b3UgbmVlZCB0byBtb2RpZnkgdGhlbS4gIEluIHRoYXQgY2FzZSwgeW91
IHNob3VsZCBtb2RpZnkgdGhlCi1jb3JyZXNwb25kaW5nIC5wdW1wIGZpbGVzIGluc3RlYWQgYW5k
IHJ1biB0aGUgcHVtcC5weSBQeXRob24gc2NyaXB0IHRvCi1yZWdlbmVyYXRlIHRoZW0uICBZb3Ug
Y2FuIGZpbmQgcHVtcC5weSBpbiB0aGUgc2NyaXB0cy8gZGlyZWN0b3J5LgotUmVhZCB0aGUgUHVt
cCBtYW51YWwgWzJdIGZvciBob3cgdG8gdXNlIGl0LgotCi0gIFsyXSBodHRwOi8vY29kZS5nb29n
bGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL1B1bXBNYW51YWwKLQotIyMjIENvbnRyaWJ1dGluZyBh
IFBhdGNoICMjIwotCi1XZSB3ZWxjb21lIHBhdGNoZXMuICBQbGVhc2UgcmVhZCB0aGUgR29vZ2xl
IFRlc3QgZGV2ZWxvcGVyJ3MgZ3VpZGUgWzNdCi1mb3IgaG93IHlvdSBjYW4gY29udHJpYnV0ZS4g
IEluIHBhcnRpY3VsYXIsIG1ha2Ugc3VyZSB5b3UgaGF2ZSBzaWduZWQKLXRoZSBDb250cmlidXRv
ciBMaWNlbnNlIEFncmVlbWVudCwgb3Igd2Ugd29uJ3QgYmUgYWJsZSB0byBhY2NlcHQgdGhlCi1w
YXRjaC4KLQotICBbM10gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvd2lraS9H
b29nbGVUZXN0RGV2R3VpZGUKLQotSGFwcHkgdGVzdGluZyEKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5XZWJLaXQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9S
RUFETUUuV2ViS2l0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTMxOGZmNjJlMzI0
OWM4ZTY1MzIwOTNmNDBlM2NiNDFjMTVmOWFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5XZWJLaXQK
KysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1HVGVzdCB2LjEuNS4wCi0KLWh0dHA6Ly9n
b29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90YWdzL3JlbGVhc2UtMS41LjAvIAotCi0yMDE2
LTAxLTAyIFRpbmctV2VpIExhbiAobGFudHc0NEBnbWFpbC5jb20pCi0gICAgICBSZW1vdmUgdXNh
Z2Ugb2YgZW52aXJvbiBnbG9iYWwgdmFyaWFibGUgdG8gZml4IHRoZSBidWlsZCBvbiBGcmVlQlNE
LgotCi0yMDEyLTAxLTA0IERtaXRyeSBMb21vdiAoZHNsb21vdkBnb29nbGUuY29tKSAgRGF2aWQg
S2lsemVyIChkZGtpbHplckBhcHBsZS5jb20pCi0gICAgICAtIFdlYktpdCBwb3J0IG9mIGd0ZXN0
IHVzZXMgRmFzdE1hbGxvYyAibmV3IiBhbmQgImRlbGV0ZSIgb3BlcmF0b3JzIGZyb20gSmF2YVNj
cmlwdENvcmUuCi0gICAgICAtIFRoZSBndGVzdC5mcmFtZXdvcmsgdGFyZ2V0IG5vdyBsaW5rcyB0
byBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsuCi0KLTIwMTEtMTItMjIgRGF2aWQgS2lsemVyIChk
ZGtpbHplckBhcHBsZS5jb20pCi0gICAgICBBZGRlZCBQcm9kdWN0aW9uIGNvbmZpZ3VyYXRpb24g
dG8gZ3Rlc3QgWGNvZGUgcHJvamVjdC4KLQotMjAxMS0wNS0wNiBEbWl0cnkgTG9tb3YgKGRzbG9t
b3ZAZ29vZ2xlLmNvbSkKLSAgICAgIGd0ZXN0LW1kLnZjcHJvaiB1cGdyYWRlZCB0byBWUyAyMDA1
ICg4LjApIGZvcm1hdCB0byBtYXRjaCB0aGUgcmVzdCBvZiBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzBmZTgwNDcxMjdiZWUxNmQyYzcxZjE0YjUwOWYzNzU3
MWFkZDQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVBRE1F
Lm1kCkBAIC0wLDAgKzEsMzQxIEBACisjIyMgR2VuZXJpYyBCdWlsZCBJbnN0cnVjdGlvbnMKKwor
IyMjIyBTZXR1cAorCitUbyBidWlsZCBHb29nbGUgVGVzdCBhbmQgeW91ciB0ZXN0cyB0aGF0IHVz
ZSBpdCwgeW91IG5lZWQgdG8gdGVsbCB5b3VyIGJ1aWxkCitzeXN0ZW0gd2hlcmUgdG8gZmluZCBp
dHMgaGVhZGVycyBhbmQgc291cmNlIGZpbGVzLiBUaGUgZXhhY3Qgd2F5IHRvIGRvIGl0CitkZXBl
bmRzIG9uIHdoaWNoIGJ1aWxkIHN5c3RlbSB5b3UgdXNlLCBhbmQgaXMgdXN1YWxseSBzdHJhaWdo
dGZvcndhcmQuCisKKyMjIyMgQnVpbGQKKworU3VwcG9zZSB5b3UgcHV0IEdvb2dsZSBUZXN0IGlu
IGRpcmVjdG9yeSBgJHtHVEVTVF9ESVJ9YC4gVG8gYnVpbGQgaXQsIGNyZWF0ZSBhCitsaWJyYXJ5
IGJ1aWxkIHRhcmdldCAob3IgYSBwcm9qZWN0IGFzIGNhbGxlZCBieSBWaXN1YWwgU3R1ZGlvIGFu
ZCBYY29kZSkgdG8KK2NvbXBpbGUKKworICAgICR7R1RFU1RfRElSfS9zcmMvZ3Rlc3QtYWxsLmNj
CisKK3dpdGggYCR7R1RFU1RfRElSfS9pbmNsdWRlYCBpbiB0aGUgc3lzdGVtIGhlYWRlciBzZWFy
Y2ggcGF0aCBhbmQgYCR7R1RFU1RfRElSfWAKK2luIHRoZSBub3JtYWwgaGVhZGVyIHNlYXJjaCBw
YXRoLiBBc3N1bWluZyBhIExpbnV4LWxpa2Ugc3lzdGVtIGFuZCBnY2MsCitzb21ldGhpbmcgbGlr
ZSB0aGUgZm9sbG93aW5nIHdpbGwgZG86CisKKyAgICBnKysgLWlzeXN0ZW0gJHtHVEVTVF9ESVJ9
L2luY2x1ZGUgLUkke0dURVNUX0RJUn0gXAorICAgICAgICAtcHRocmVhZCAtYyAke0dURVNUX0RJ
Un0vc3JjL2d0ZXN0LWFsbC5jYworICAgIGFyIC1ydiBsaWJndGVzdC5hIGd0ZXN0LWFsbC5vCisK
KyhXZSBuZWVkIGAtcHRocmVhZGAgYXMgR29vZ2xlIFRlc3QgdXNlcyB0aHJlYWRzLikKKworTmV4
dCwgeW91IHNob3VsZCBjb21waWxlIHlvdXIgdGVzdCBzb3VyY2UgZmlsZSB3aXRoIGAke0dURVNU
X0RJUn0vaW5jbHVkZWAgaW4KK3RoZSBzeXN0ZW0gaGVhZGVyIHNlYXJjaCBwYXRoLCBhbmQgbGlu
ayBpdCB3aXRoIGd0ZXN0IGFuZCBhbnkgb3RoZXIgbmVjZXNzYXJ5CitsaWJyYXJpZXM6CisKKyAg
ICBnKysgLWlzeXN0ZW0gJHtHVEVTVF9ESVJ9L2luY2x1ZGUgLXB0aHJlYWQgcGF0aC90by95b3Vy
X3Rlc3QuY2MgbGliZ3Rlc3QuYSBcCisgICAgICAgIC1vIHlvdXJfdGVzdAorCitBcyBhbiBleGFt
cGxlLCB0aGUgbWFrZS8gZGlyZWN0b3J5IGNvbnRhaW5zIGEgTWFrZWZpbGUgdGhhdCB5b3UgY2Fu
IHVzZSB0byBidWlsZAorR29vZ2xlIFRlc3Qgb24gc3lzdGVtcyB3aGVyZSBHTlUgbWFrZSBpcyBh
dmFpbGFibGUgKGUuZy4gTGludXgsIE1hYyBPUyBYLCBhbmQKK0N5Z3dpbikuIEl0IGRvZXNuJ3Qg
dHJ5IHRvIGJ1aWxkIEdvb2dsZSBUZXN0J3Mgb3duIHRlc3RzLiBJbnN0ZWFkLCBpdCBqdXN0Citi
dWlsZHMgdGhlIEdvb2dsZSBUZXN0IGxpYnJhcnkgYW5kIGEgc2FtcGxlIHRlc3QuIFlvdSBjYW4g
dXNlIGl0IGFzIGEgc3RhcnRpbmcKK3BvaW50IGZvciB5b3VyIG93biBidWlsZCBzY3JpcHQuCisK
K0lmIHRoZSBkZWZhdWx0IHNldHRpbmdzIGFyZSBjb3JyZWN0IGZvciB5b3VyIGVudmlyb25tZW50
LCB0aGUgZm9sbG93aW5nIGNvbW1hbmRzCitzaG91bGQgc3VjY2VlZDoKKworICAgIGNkICR7R1RF
U1RfRElSfS9tYWtlCisgICAgbWFrZQorICAgIC4vc2FtcGxlMV91bml0dGVzdAorCitJZiB5b3Ug
c2VlIGVycm9ycywgdHJ5IHRvIHR3ZWFrIHRoZSBjb250ZW50cyBvZiBgbWFrZS9NYWtlZmlsZWAg
dG8gbWFrZSB0aGVtIGdvCithd2F5LiBUaGVyZSBhcmUgaW5zdHJ1Y3Rpb25zIGluIGBtYWtlL01h
a2VmaWxlYCBvbiBob3cgdG8gZG8gaXQuCisKKyMjIyBVc2luZyBDTWFrZQorCitHb29nbGUgVGVz
dCBjb21lcyB3aXRoIGEgQ01ha2UgYnVpbGQgc2NyaXB0ICgKK1tDTWFrZUxpc3RzLnR4dF0oaHR0
cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL0NNYWtlTGlzdHMu
dHh0KSkKK3RoYXQgY2FuIGJlIHVzZWQgb24gYSB3aWRlIHJhbmdlIG9mIHBsYXRmb3JtcyAoIkMi
IHN0YW5kcyBmb3IgY3Jvc3MtcGxhdGZvcm0uKS4KK0lmIHlvdSBkb24ndCBoYXZlIENNYWtlIGlu
c3RhbGxlZCBhbHJlYWR5LCB5b3UgY2FuIGRvd25sb2FkIGl0IGZvciBmcmVlIGZyb20KKzxodHRw
Oi8vd3d3LmNtYWtlLm9yZy8+LgorCitDTWFrZSB3b3JrcyBieSBnZW5lcmF0aW5nIG5hdGl2ZSBt
YWtlZmlsZXMgb3IgYnVpbGQgcHJvamVjdHMgdGhhdCBjYW4gYmUgdXNlZCBpbgordGhlIGNvbXBp
bGVyIGVudmlyb25tZW50IG9mIHlvdXIgY2hvaWNlLiBZb3UgY2FuIGVpdGhlciBidWlsZCBHb29n
bGUgVGVzdCBhcyBhCitzdGFuZGFsb25lIHByb2plY3Qgb3IgaXQgY2FuIGJlIGluY29ycG9yYXRl
ZCBpbnRvIGFuIGV4aXN0aW5nIENNYWtlIGJ1aWxkIGZvcgorYW5vdGhlciBwcm9qZWN0LgorCisj
IyMjIFN0YW5kYWxvbmUgQ01ha2UgUHJvamVjdAorCitXaGVuIGJ1aWxkaW5nIEdvb2dsZSBUZXN0
IGFzIGEgc3RhbmRhbG9uZSBwcm9qZWN0LCB0aGUgdHlwaWNhbCB3b3JrZmxvdyBzdGFydHMKK3dp
dGg6CisKKyAgICBta2RpciBteWJ1aWxkICAgICAgICMgQ3JlYXRlIGEgZGlyZWN0b3J5IHRvIGhv
bGQgdGhlIGJ1aWxkIG91dHB1dC4KKyAgICBjZCBteWJ1aWxkCisgICAgY21ha2UgJHtHVEVTVF9E
SVJ9ICAjIEdlbmVyYXRlIG5hdGl2ZSBidWlsZCBzY3JpcHRzLgorCitJZiB5b3Ugd2FudCB0byBi
dWlsZCBHb29nbGUgVGVzdCdzIHNhbXBsZXMsIHlvdSBzaG91bGQgcmVwbGFjZSB0aGUgbGFzdCBj
b21tYW5kCit3aXRoCisKKyAgICBjbWFrZSAtRGd0ZXN0X2J1aWxkX3NhbXBsZXM9T04gJHtHVEVT
VF9ESVJ9CisKK0lmIHlvdSBhcmUgb24gYSBcKm5peCBzeXN0ZW0sIHlvdSBzaG91bGQgbm93IHNl
ZSBhIE1ha2VmaWxlIGluIHRoZSBjdXJyZW50CitkaXJlY3RvcnkuIEp1c3QgdHlwZSAnbWFrZScg
dG8gYnVpbGQgZ3Rlc3QuCisKK0lmIHlvdSB1c2UgV2luZG93cyBhbmQgaGF2ZSBWaXN1YWwgU3R1
ZGlvIGluc3RhbGxlZCwgYSBgZ3Rlc3Quc2xuYCBmaWxlIGFuZAorc2V2ZXJhbCBgLnZjcHJvamAg
ZmlsZXMgd2lsbCBiZSBjcmVhdGVkLiBZb3UgY2FuIHRoZW4gYnVpbGQgdGhlbSB1c2luZyBWaXN1
YWwKK1N0dWRpby4KKworT24gTWFjIE9TIFggd2l0aCBYY29kZSBpbnN0YWxsZWQsIGEgYC54Y29k
ZXByb2pgIGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQuCisKKyMjIyMgSW5jb3Jwb3JhdGluZyBJbnRv
IEFuIEV4aXN0aW5nIENNYWtlIFByb2plY3QKKworSWYgeW91IHdhbnQgdG8gdXNlIGd0ZXN0IGlu
IGEgcHJvamVjdCB3aGljaCBhbHJlYWR5IHVzZXMgQ01ha2UsIHRoZW4gYSBtb3JlCityb2J1c3Qg
YW5kIGZsZXhpYmxlIGFwcHJvYWNoIGlzIHRvIGJ1aWxkIGd0ZXN0IGFzIHBhcnQgb2YgdGhhdCBw
cm9qZWN0IGRpcmVjdGx5LgorVGhpcyBpcyBkb25lIGJ5IG1ha2luZyB0aGUgR29vZ2xlVGVzdCBz
b3VyY2UgY29kZSBhdmFpbGFibGUgdG8gdGhlIG1haW4gYnVpbGQKK2FuZCBhZGRpbmcgaXQgdXNp
bmcgQ01ha2UncyBgYWRkX3N1YmRpcmVjdG9yeSgpYCBjb21tYW5kLiBUaGlzIGhhcyB0aGUKK3Np
Z25pZmljYW50IGFkdmFudGFnZSB0aGF0IHRoZSBzYW1lIGNvbXBpbGVyIGFuZCBsaW5rZXIgc2V0
dGluZ3MgYXJlIHVzZWQKK2JldHdlZW4gZ3Rlc3QgYW5kIHRoZSByZXN0IG9mIHlvdXIgcHJvamVj
dCwgc28gaXNzdWVzIGFzc29jaWF0ZWQgd2l0aCB1c2luZworaW5jb21wYXRpYmxlIGxpYnJhcmll
cyAoZWcgZGVidWcvcmVsZWFzZSksIGV0Yy4gYXJlIGF2b2lkZWQuIFRoaXMgaXMKK3BhcnRpY3Vs
YXJseSB1c2VmdWwgb24gV2luZG93cy4gTWFraW5nIEdvb2dsZVRlc3QncyBzb3VyY2UgY29kZSBh
dmFpbGFibGUgdG8gdGhlCittYWluIGJ1aWxkIGNhbiBiZSBkb25lIGEgZmV3IGRpZmZlcmVudCB3
YXlzOgorCisqICAgRG93bmxvYWQgdGhlIEdvb2dsZVRlc3Qgc291cmNlIGNvZGUgbWFudWFsbHkg
YW5kIHBsYWNlIGl0IGF0IGEga25vd24KKyAgICBsb2NhdGlvbi4gVGhpcyBpcyB0aGUgbGVhc3Qg
ZmxleGlibGUgYXBwcm9hY2ggYW5kIGNhbiBtYWtlIGl0IG1vcmUgZGlmZmljdWx0CisgICAgdG8g
dXNlIHdpdGggY29udGludW91cyBpbnRlZ3JhdGlvbiBzeXN0ZW1zLCBldGMuCisqICAgRW1iZWQg
dGhlIEdvb2dsZVRlc3Qgc291cmNlIGNvZGUgYXMgYSBkaXJlY3QgY29weSBpbiB0aGUgbWFpbiBw
cm9qZWN0J3MKKyAgICBzb3VyY2UgdHJlZS4gVGhpcyBpcyBvZnRlbiB0aGUgc2ltcGxlc3QgYXBw
cm9hY2gsIGJ1dCBpcyBhbHNvIHRoZSBoYXJkZXN0IHRvCisgICAga2VlcCB1cCB0byBkYXRlLiBT
b21lIG9yZ2FuaXphdGlvbnMgbWF5IG5vdCBwZXJtaXQgdGhpcyBtZXRob2QuCisqICAgQWRkIEdv
b2dsZVRlc3QgYXMgYSBnaXQgc3VibW9kdWxlIG9yIGVxdWl2YWxlbnQuIFRoaXMgbWF5IG5vdCBh
bHdheXMgYmUKKyAgICBwb3NzaWJsZSBvciBhcHByb3ByaWF0ZS4gR2l0IHN1Ym1vZHVsZXMsIGZv
ciBleGFtcGxlLCBoYXZlIHRoZWlyIG93biBzZXQgb2YKKyAgICBhZHZhbnRhZ2VzIGFuZCBkcmF3
YmFja3MuCisqICAgVXNlIENNYWtlIHRvIGRvd25sb2FkIEdvb2dsZVRlc3QgYXMgcGFydCBvZiB0
aGUgYnVpbGQncyBjb25maWd1cmUgc3RlcC4gVGhpcworICAgIGlzIGp1c3QgYSBsaXR0bGUgbW9y
ZSBjb21wbGV4LCBidXQgZG9lc24ndCBoYXZlIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgb3RoZXIK
KyAgICBtZXRob2RzLgorCitUaGUgbGFzdCBvZiB0aGUgYWJvdmUgbWV0aG9kcyBpcyBpbXBsZW1l
bnRlZCB3aXRoIGEgc21hbGwgcGllY2Ugb2YgQ01ha2UgY29kZSBpbgorYSBzZXBhcmF0ZSBmaWxl
IChlLmcuIGBDTWFrZUxpc3RzLnR4dC5pbmApIHdoaWNoIGlzIGNvcGllZCB0byB0aGUgYnVpbGQg
YXJlYSBhbmQKK3RoZW4gaW52b2tlZCBhcyBhIHN1Yi1idWlsZCBfZHVyaW5nIHRoZSBDTWFrZSBz
dGFnZV8uIFRoYXQgZGlyZWN0b3J5IGlzIHRoZW4KK3B1bGxlZCBpbnRvIHRoZSBtYWluIGJ1aWxk
IHdpdGggYGFkZF9zdWJkaXJlY3RvcnkoKWAuIEZvciBleGFtcGxlOgorCitOZXcgZmlsZSBgQ01h
a2VMaXN0cy50eHQuaW5gOgorCisgICAgY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDIu
OC4yKQorCisgICAgcHJvamVjdChnb29nbGV0ZXN0LWRvd25sb2FkIE5PTkUpCisKKyAgICBpbmNs
dWRlKEV4dGVybmFsUHJvamVjdCkKKyAgICBFeHRlcm5hbFByb2plY3RfQWRkKGdvb2dsZXRlc3QK
KyAgICAgIEdJVF9SRVBPU0lUT1JZICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xl
dGVzdC5naXQKKyAgICAgIEdJVF9UQUcgICAgICAgICAgIG1hc3RlcgorICAgICAgU09VUkNFX0RJ
UiAgICAgICAgIiR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1zcmMiCisgICAgICBCSU5B
UllfRElSICAgICAgICAiJHtDTUFLRV9CSU5BUllfRElSfS9nb29nbGV0ZXN0LWJ1aWxkIgorICAg
ICAgQ09ORklHVVJFX0NPTU1BTkQgIiIKKyAgICAgIEJVSUxEX0NPTU1BTkQgICAgICIiCisgICAg
ICBJTlNUQUxMX0NPTU1BTkQgICAiIgorICAgICAgVEVTVF9DT01NQU5EICAgICAgIiIKKyAgICAp
CisKK0V4aXN0aW5nIGJ1aWxkJ3MgYENNYWtlTGlzdHMudHh0YDoKKworICAgICMgRG93bmxvYWQg
YW5kIHVucGFjayBnb29nbGV0ZXN0IGF0IGNvbmZpZ3VyZSB0aW1lCisgICAgY29uZmlndXJlX2Zp
bGUoQ01ha2VMaXN0cy50eHQuaW4gZ29vZ2xldGVzdC1kb3dubG9hZC9DTWFrZUxpc3RzLnR4dCkK
KyAgICBleGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1HICIke0NNQUtF
X0dFTkVSQVRPUn0iIC4KKyAgICAgIFJFU1VMVF9WQVJJQUJMRSByZXN1bHQKKyAgICAgIFdPUktJ
TkdfRElSRUNUT1JZICR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1kb3dubG9hZCApCisg
ICAgaWYocmVzdWx0KQorICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiQ01ha2Ugc3RlcCBmb3Ig
Z29vZ2xldGVzdCBmYWlsZWQ6ICR7cmVzdWx0fSIpCisgICAgZW5kaWYoKQorICAgIGV4ZWN1dGVf
cHJvY2VzcyhDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLS1idWlsZCAuCisgICAgICBSRVNVTFRf
VkFSSUFCTEUgcmVzdWx0CisgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke0NNQUtFX0JJTkFSWV9E
SVJ9L2dvb2dsZXRlc3QtZG93bmxvYWQgKQorICAgIGlmKHJlc3VsdCkKKyAgICAgIG1lc3NhZ2Uo
RkFUQUxfRVJST1IgIkJ1aWxkIHN0ZXAgZm9yIGdvb2dsZXRlc3QgZmFpbGVkOiAke3Jlc3VsdH0i
KQorICAgIGVuZGlmKCkKKworICAgICMgUHJldmVudCBvdmVycmlkaW5nIHRoZSBwYXJlbnQgcHJv
amVjdCdzIGNvbXBpbGVyL2xpbmtlcgorICAgICMgc2V0dGluZ3Mgb24gV2luZG93cworICAgIHNl
dChndGVzdF9mb3JjZV9zaGFyZWRfY3J0IE9OIENBQ0hFIEJPT0wgIiIgRk9SQ0UpCisKKyAgICAj
IEFkZCBnb29nbGV0ZXN0IGRpcmVjdGx5IHRvIG91ciBidWlsZC4gVGhpcyBkZWZpbmVzCisgICAg
IyB0aGUgZ3Rlc3QgYW5kIGd0ZXN0X21haW4gdGFyZ2V0cy4KKyAgICBhZGRfc3ViZGlyZWN0b3J5
KCR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1zcmMKKyAgICAgICAgICAgICAgICAgICAg
ICR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1idWlsZAorICAgICAgICAgICAgICAgICAg
ICAgRVhDTFVERV9GUk9NX0FMTCkKKworICAgICMgVGhlIGd0ZXN0L2d0ZXN0X21haW4gdGFyZ2V0
cyBjYXJyeSBoZWFkZXIgc2VhcmNoIHBhdGgKKyAgICAjIGRlcGVuZGVuY2llcyBhdXRvbWF0aWNh
bGx5IHdoZW4gdXNpbmcgQ01ha2UgMi44LjExIG9yCisgICAgIyBsYXRlci4gT3RoZXJ3aXNlIHdl
IGhhdmUgdG8gYWRkIHRoZW0gaGVyZSBvdXJzZWx2ZXMuCisgICAgaWYgKENNQUtFX1ZFUlNJT04g
VkVSU0lPTl9MRVNTIDIuOC4xMSkKKyAgICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoIiR7Z3Rlc3Rf
U09VUkNFX0RJUn0vaW5jbHVkZSIpCisgICAgZW5kaWYoKQorCisgICAgIyBOb3cgc2ltcGx5IGxp
bmsgYWdhaW5zdCBndGVzdCBvciBndGVzdF9tYWluIGFzIG5lZWRlZC4gRWcKKyAgICBhZGRfZXhl
Y3V0YWJsZShleGFtcGxlIGV4YW1wbGUuY3BwKQorICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhl
eGFtcGxlIGd0ZXN0X21haW4pCisgICAgYWRkX3Rlc3QoTkFNRSBleGFtcGxlX3Rlc3QgQ09NTUFO
RCBleGFtcGxlKQorCitOb3RlIHRoYXQgdGhpcyBhcHByb2FjaCByZXF1aXJlcyBDTWFrZSAyLjgu
MiBvciBsYXRlciBkdWUgdG8gaXRzIHVzZSBvZiB0aGUKK2BFeHRlcm5hbFByb2plY3RfQWRkKClg
IGNvbW1hbmQuIFRoZSBhYm92ZSB0ZWNobmlxdWUgaXMgZGlzY3Vzc2VkIGluIG1vcmUgZGV0YWls
CitpbiBbdGhpcyBzZXBhcmF0ZSBhcnRpY2xlXShodHRwOi8vY3Jhc2NpdC5jb20vMjAxNS8wNy8y
NS9jbWFrZS1ndGVzdC8pIHdoaWNoCithbHNvIGNvbnRhaW5zIGEgbGluayB0byBhIGZ1bGx5IGdl
bmVyYWxpemVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSB0ZWNobmlxdWUuCisKKyMjIyMjIFZpc3Vh
bCBTdHVkaW8gRHluYW1pYyB2cyBTdGF0aWMgUnVudGltZXMKKworQnkgZGVmYXVsdCwgbmV3IFZp
c3VhbCBTdHVkaW8gcHJvamVjdHMgbGluayB0aGUgQyBydW50aW1lcyBkeW5hbWljYWxseSBidXQK
K0dvb2dsZSBUZXN0IGxpbmtzIHRoZW0gc3RhdGljYWxseS4gVGhpcyB3aWxsIGdlbmVyYXRlIGFu
IGVycm9yIHRoYXQgbG9va3MKK3NvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmc6IGd0ZXN0Lmxp
YihndGVzdC1hbGwub2JqKSA6IGVycm9yIExOSzIwMzg6IG1pc21hdGNoCitkZXRlY3RlZCBmb3Ig
J1J1bnRpbWVMaWJyYXJ5JzogdmFsdWUgJ01UZF9TdGF0aWNEZWJ1ZycgZG9lc24ndCBtYXRjaCB2
YWx1ZQorJ01EZF9EeW5hbWljRGVidWcnIGluIG1haW4ub2JqCisKK0dvb2dsZSBUZXN0IGFscmVh
ZHkgaGFzIGEgQ01ha2Ugb3B0aW9uIGZvciB0aGlzOiBgZ3Rlc3RfZm9yY2Vfc2hhcmVkX2NydGAK
KworRW5hYmxpbmcgdGhpcyBvcHRpb24gd2lsbCBtYWtlIGd0ZXN0IGxpbmsgdGhlIHJ1bnRpbWVz
IGR5bmFtaWNhbGx5IHRvbywgYW5kCittYXRjaCB0aGUgcHJvamVjdCBpbiB3aGljaCBpdCBpcyBp
bmNsdWRlZC4KKworIyMjIExlZ2FjeSBCdWlsZCBTY3JpcHRzCisKK0JlZm9yZSBzZXR0bGluZyBv
biBDTWFrZSwgd2UgaGF2ZSBiZWVuIHByb3ZpZGluZyBoYW5kLW1haW50YWluZWQgYnVpbGQKK3By
b2plY3RzL3NjcmlwdHMgZm9yIFZpc3VhbCBTdHVkaW8sIFhjb2RlLCBhbmQgQXV0b3Rvb2xzLiBX
aGlsZSB3ZSBjb250aW51ZSB0bworcHJvdmlkZSB0aGVtIGZvciBjb252ZW5pZW5jZSwgdGhleSBh
cmUgbm90IGFjdGl2ZWx5IG1haW50YWluZWQgYW55IG1vcmUuIFdlCitoaWdobHkgcmVjb21tZW5k
IHRoYXQgeW91IGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRoZSBhYm92ZSBzZWN0aW9ucyB0
bworaW50ZWdyYXRlIEdvb2dsZSBUZXN0IHdpdGggeW91ciBleGlzdGluZyBidWlsZCBzeXN0ZW0u
CisKK0lmIHlvdSBzdGlsbCBuZWVkIHRvIHVzZSB0aGUgbGVnYWN5IGJ1aWxkIHNjcmlwdHMsIGhl
cmUncyBob3c6CisKK1RoZSBtc3ZjXCBmb2xkZXIgY29udGFpbnMgdHdvIHNvbHV0aW9ucyB3aXRo
IFZpc3VhbCBDKysgcHJvamVjdHMuIE9wZW4gdGhlCitgZ3Rlc3Quc2xuYCBvciBgZ3Rlc3QtbWQu
c2xuYCBmaWxlIHVzaW5nIFZpc3VhbCBTdHVkaW8sIGFuZCB5b3UgYXJlIHJlYWR5IHRvCitidWls
ZCBHb29nbGUgVGVzdCB0aGUgc2FtZSB3YXkgeW91IGJ1aWxkIGFueSBWaXN1YWwgU3R1ZGlvIHBy
b2plY3QuIEZpbGVzIHRoYXQKK2hhdmUgbmFtZXMgZW5kaW5nIHdpdGggLW1kIHVzZSBETEwgdmVy
c2lvbnMgb2YgTWljcm9zb2Z0IHJ1bnRpbWUgbGlicmFyaWVzICh0aGUKKy9NRCBvciB0aGUgL01E
ZCBjb21waWxlciBvcHRpb24pLiBGaWxlcyB3aXRob3V0IHRoYXQgc3VmZml4IHVzZSBzdGF0aWMg
dmVyc2lvbnMKK29mIHRoZSBydW50aW1lIGxpYnJhcmllcyAodGhlIC9NVCBvciB0aGUgL01UZCBv
cHRpb24pLiBQbGVhc2Ugbm90ZSB0aGF0IG9uZSBtdXN0Cit1c2UgdGhlIHNhbWUgb3B0aW9uIHRv
IGNvbXBpbGUgYm90aCBndGVzdCBhbmQgdGhlIHRlc3QgY29kZS4gSWYgeW91IHVzZSBWaXN1YWwK
K1N0dWRpbyAyMDA1IG9yIGFib3ZlLCB3ZSByZWNvbW1lbmQgdGhlIC1tZCB2ZXJzaW9uIGFzIC9N
RCBpcyB0aGUgZGVmYXVsdCBmb3IgbmV3Citwcm9qZWN0cyBpbiB0aGVzZSB2ZXJzaW9ucyBvZiBW
aXN1YWwgU3R1ZGlvLgorCitPbiBNYWMgT1MgWCwgb3BlbiB0aGUgYGd0ZXN0Lnhjb2RlcHJvamAg
aW4gdGhlIGB4Y29kZS9gIGZvbGRlciB1c2luZyBYY29kZS4KK0J1aWxkIHRoZSAiZ3Rlc3QiIHRh
cmdldC4gVGhlIHVuaXZlcnNhbCBiaW5hcnkgZnJhbWV3b3JrIHdpbGwgZW5kIHVwIGluIHlvdXIK
K3NlbGVjdGVkIGJ1aWxkIGRpcmVjdG9yeSAoc2VsZWN0ZWQgaW4gdGhlIFhjb2RlICJQcmVmZXJl
bmNlcy4uLiIgLT4gIkJ1aWxkaW5nIgorcGFuZSBhbmQgZGVmYXVsdHMgdG8geGNvZGUvYnVpbGQp
LiBBbHRlcm5hdGl2ZWx5LCBhdCB0aGUgY29tbWFuZCBsaW5lLCBlbnRlcjoKKworICAgIHhjb2Rl
YnVpbGQKKworVGhpcyB3aWxsIGJ1aWxkIHRoZSAiUmVsZWFzZSIgY29uZmlndXJhdGlvbiBvZiBn
dGVzdC5mcmFtZXdvcmsgaW4geW91ciBkZWZhdWx0CitidWlsZCBsb2NhdGlvbi4gU2VlIHRoZSAi
eGNvZGVidWlsZCIgbWFuIHBhZ2UgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQKK2J1aWxkaW5n
IGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBhbmQgYnVpbGRpbmcgaW4gZGlmZmVyZW50IGxvY2F0
aW9ucy4KKworSWYgeW91IHdpc2ggdG8gdXNlIHRoZSBHb29nbGUgVGVzdCBYY29kZSBwcm9qZWN0
IHdpdGggWGNvZGUgNC54IGFuZCBhYm92ZSwgeW91CituZWVkIHRvIGVpdGhlcjoKKworKiAgIHVw
ZGF0ZSB0aGUgU0RLIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiB4Y29kZS9Db25maWcvR2VuZXJh
bC54Y29uZmlnLgorICAgIENvbW1lbnQgb3B0aW9ucyBgU0RLUk9PVGAsIGBNQUNPU19ERVBMT1lN
RU5UX1RBUkdFVGAsIGFuZCBgR0NDX1ZFUlNJT05gLiBJZgorICAgIHlvdSBjaG9vc2UgdGhpcyBy
b3V0ZSB5b3UgbG9zZSB0aGUgYWJpbGl0eSB0byB0YXJnZXQgZWFybGllciB2ZXJzaW9ucyBvZgor
ICAgIE1hY09TIFguCisqICAgSW5zdGFsbCBhbiBTREsgZm9yIGFuIGVhcmxpZXIgdmVyc2lvbi4g
VGhpcyBkb2Vzbid0IGFwcGVhciB0byBiZSBzdXBwb3J0ZWQKKyAgICBieSBBcHBsZSwgYnV0IGhh
cyBiZWVuIHJlcG9ydGVkIHRvIHdvcmsKKyAgICAoaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1
ZXN0aW9ucy81Mzc4NTE4KS4KKworIyMjIFR3ZWFraW5nIEdvb2dsZSBUZXN0CisKK0dvb2dsZSBU
ZXN0IGNhbiBiZSB1c2VkIGluIGRpdmVyc2UgZW52aXJvbm1lbnRzLiBUaGUgZGVmYXVsdCBjb25m
aWd1cmF0aW9uIG1heQorbm90IHdvcmsgKG9yIG1heSBub3Qgd29yayB3ZWxsKSBvdXQgb2YgdGhl
IGJveCBpbiBzb21lIGVudmlyb25tZW50cy4gSG93ZXZlciwKK3lvdSBjYW4gZWFzaWx5IHR3ZWFr
IEdvb2dsZSBUZXN0IGJ5IGRlZmluaW5nIGNvbnRyb2wgbWFjcm9zIG9uIHRoZSBjb21waWxlcgor
Y29tbWFuZCBsaW5lLiBHZW5lcmFsbHksIHRoZXNlIG1hY3JvcyBhcmUgbmFtZWQgbGlrZSBgR1RF
U1RfWFlaYCBhbmQgeW91IGRlZmluZQordGhlbSB0byBlaXRoZXIgMSBvciAwIHRvIGVuYWJsZSBv
ciBkaXNhYmxlIGEgY2VydGFpbiBmZWF0dXJlLgorCitXZSBsaXN0IHRoZSBtb3N0IGZyZXF1ZW50
bHkgdXNlZCBtYWNyb3MgYmVsb3cuIEZvciBhIGNvbXBsZXRlIGxpc3QsIHNlZSBmaWxlCitbaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmhdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29n
bGUvZ29vZ2xldGVzdC9ibG9iL21hc3Rlci9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaCkuCisKKyMjIyBDaG9vc2luZyBhIFRSMSBUdXBsZSBMaWJyYXJ5CisKK1NvbWUgR29vZ2xl
IFRlc3QgZmVhdHVyZXMgcmVxdWlyZSB0aGUgQysrIFRlY2huaWNhbCBSZXBvcnQgMSAoVFIxKSB0
dXBsZQorbGlicmFyeSwgd2hpY2ggaXMgbm90IHlldCBhdmFpbGFibGUgd2l0aCBhbGwgY29tcGls
ZXJzLiBUaGUgZ29vZCBuZXdzIGlzIHRoYXQKK0dvb2dsZSBUZXN0IGltcGxlbWVudHMgYSBzdWJz
ZXQgb2YgVFIxIHR1cGxlIHRoYXQncyBlbm91Z2ggZm9yIGl0cyBvd24gbmVlZCwgYW5kCit3aWxs
IGF1dG9tYXRpY2FsbHkgdXNlIHRoaXMgd2hlbiB0aGUgY29tcGlsZXIgZG9lc24ndCBwcm92aWRl
IFRSMSB0dXBsZS4KKworVXN1YWxseSB5b3UgZG9uJ3QgbmVlZCB0byBjYXJlIGFib3V0IHdoaWNo
IHR1cGxlIGxpYnJhcnkgR29vZ2xlIFRlc3QgdXNlcy4KK0hvd2V2ZXIsIGlmIHlvdXIgcHJvamVj
dCBhbHJlYWR5IHVzZXMgVFIxIHR1cGxlLCB5b3UgbmVlZCB0byB0ZWxsIEdvb2dsZSBUZXN0IHRv
Cit1c2UgdGhlIHNhbWUgVFIxIHR1cGxlIGxpYnJhcnkgdGhlIHJlc3Qgb2YgeW91ciBwcm9qZWN0
IHVzZXMsIG9yIHRoZSB0d28gdHVwbGUKK2ltcGxlbWVudGF0aW9ucyB3aWxsIGNsYXNoLiBUbyBk
byB0aGF0LCBhZGQKKworICAgIC1ER1RFU1RfVVNFX09XTl9UUjFfVFVQTEU9MAorCit0byB0aGUg
Y29tcGlsZXIgZmxhZ3Mgd2hpbGUgY29tcGlsaW5nIEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRlc3Rz
LiBJZiB5b3Ugd2FudCB0bworZm9yY2UgR29vZ2xlIFRlc3QgdG8gdXNlIGl0cyBvd24gdHVwbGUg
bGlicmFyeSwganVzdCBhZGQKKworICAgIC1ER1RFU1RfVVNFX09XTl9UUjFfVFVQTEU9MQorCit0
byB0aGUgY29tcGlsZXIgZmxhZ3MgaW5zdGVhZC4KKworSWYgeW91IGRvbid0IHdhbnQgR29vZ2xl
IFRlc3QgdG8gdXNlIHR1cGxlIGF0IGFsbCwgYWRkCisKKyAgICAtREdURVNUX0hBU19UUjFfVFVQ
TEU9MAorCithbmQgYWxsIGZlYXR1cmVzIHVzaW5nIHR1cGxlIHdpbGwgYmUgZGlzYWJsZWQuCisK
KyMjIyBNdWx0aS10aHJlYWRlZCBUZXN0cworCitHb29nbGUgVGVzdCBpcyB0aHJlYWQtc2FmZSB3
aGVyZSB0aGUgcHRocmVhZCBsaWJyYXJ5IGlzIGF2YWlsYWJsZS4gQWZ0ZXIKK2AjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCJgLCB5b3UgY2FuIGNoZWNrIHRoZSBgR1RFU1RfSVNfVEhSRUFEU0FGRWAg
bWFjcm8gdG8gc2VlCit3aGV0aGVyIHRoaXMgaXMgdGhlIGNhc2UgKHllcyBpZiB0aGUgbWFjcm8g
aXMgYCNkZWZpbmVkYCB0byAxLCBubyBpZiBpdCdzCit1bmRlZmluZWQuKS4KKworSWYgR29vZ2xl
IFRlc3QgZG9lc24ndCBjb3JyZWN0bHkgZGV0ZWN0IHdoZXRoZXIgcHRocmVhZCBpcyBhdmFpbGFi
bGUgaW4geW91cgorZW52aXJvbm1lbnQsIHlvdSBjYW4gZm9yY2UgaXQgd2l0aAorCisgICAgLURH
VEVTVF9IQVNfUFRIUkVBRD0xCisKK29yCisKKyAgICAtREdURVNUX0hBU19QVEhSRUFEPTAKKwor
V2hlbiBHb29nbGUgVGVzdCB1c2VzIHB0aHJlYWQsIHlvdSBtYXkgbmVlZCB0byBhZGQgZmxhZ3Mg
dG8geW91ciBjb21waWxlciBhbmQvb3IKK2xpbmtlciB0byBzZWxlY3QgdGhlIHB0aHJlYWQgbGli
cmFyeSwgb3IgeW91J2xsIGdldCBsaW5rIGVycm9ycy4gSWYgeW91IHVzZSB0aGUKK0NNYWtlIHNj
cmlwdCBvciB0aGUgZGVwcmVjYXRlZCBBdXRvdG9vbHMgc2NyaXB0LCB0aGlzIGlzIHRha2VuIGNh
cmUgb2YgZm9yIHlvdS4KK0lmIHlvdSB1c2UgeW91ciBvd24gYnVpbGQgc2NyaXB0LCB5b3UnbGwg
bmVlZCB0byByZWFkIHlvdXIgY29tcGlsZXIgYW5kIGxpbmtlcidzCittYW51YWwgdG8gZmlndXJl
IG91dCB3aGF0IGZsYWdzIHRvIGFkZC4KKworIyMjIEFzIGEgU2hhcmVkIExpYnJhcnkgKERMTCkK
KworR29vZ2xlIFRlc3QgaXMgY29tcGFjdCwgc28gbW9zdCB1c2VycyBjYW4gYnVpbGQgYW5kIGxp
bmsgaXQgYXMgYSBzdGF0aWMgbGlicmFyeQorZm9yIHRoZSBzaW1wbGljaXR5LiBZb3UgY2FuIGNo
b29zZSB0byB1c2UgR29vZ2xlIFRlc3QgYXMgYSBzaGFyZWQgbGlicmFyeSAoa25vd24KK2FzIGEg
RExMIG9uIFdpbmRvd3MpIGlmIHlvdSBwcmVmZXIuCisKK1RvIGNvbXBpbGUgKmd0ZXN0KiBhcyBh
IHNoYXJlZCBsaWJyYXJ5LCBhZGQKKworICAgIC1ER1RFU1RfQ1JFQVRFX1NIQVJFRF9MSUJSQVJZ
PTEKKwordG8gdGhlIGNvbXBpbGVyIGZsYWdzLiBZb3UnbGwgYWxzbyBuZWVkIHRvIHRlbGwgdGhl
IGxpbmtlciB0byBwcm9kdWNlIGEgc2hhcmVkCitsaWJyYXJ5IGluc3RlYWQgLSBjb25zdWx0IHlv
dXIgbGlua2VyJ3MgbWFudWFsIGZvciBob3cgdG8gZG8gaXQuCisKK1RvIGNvbXBpbGUgeW91ciAq
dGVzdHMqIHRoYXQgdXNlIHRoZSBndGVzdCBzaGFyZWQgbGlicmFyeSwgYWRkCisKKyAgICAtREdU
RVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFSWT0xCisKK3RvIHRoZSBjb21waWxlciBmbGFncy4K
KworTm90ZTogd2hpbGUgdGhlIGFib3ZlIHN0ZXBzIGFyZW4ndCB0ZWNobmljYWxseSBuZWNlc3Nh
cnkgdG9kYXkgd2hlbiB1c2luZyBzb21lCitjb21waWxlcnMgKGUuZy4gR0NDKSwgdGhleSBtYXkg
YmVjb21lIG5lY2Vzc2FyeSBpbiB0aGUgZnV0dXJlLCBpZiB3ZSBkZWNpZGUgdG8KK2ltcHJvdmUg
dGhlIHNwZWVkIG9mIGxvYWRpbmcgdGhlIGxpYnJhcnkgKHNlZQorPGh0dHA6Ly9nY2MuZ251Lm9y
Zy93aWtpL1Zpc2liaWxpdHk+IGZvciBkZXRhaWxzKS4gVGhlcmVmb3JlIHlvdSBhcmUgcmVjb21t
ZW5kZWQKK3RvIGFsd2F5cyBhZGQgdGhlIGFib3ZlIGZsYWdzIHdoZW4gdXNpbmcgR29vZ2xlIFRl
c3QgYXMgYSBzaGFyZWQgbGlicmFyeS4KK090aGVyd2lzZSBhIGZ1dHVyZSByZWxlYXNlIG9mIEdv
b2dsZSBUZXN0IG1heSBicmVhayB5b3VyIGJ1aWxkIHNjcmlwdC4KKworIyMjIEF2b2lkaW5nIE1h
Y3JvIE5hbWUgQ2xhc2hlcworCitJbiBDKyssIG1hY3JvcyBkb24ndCBvYmV5IG5hbWVzcGFjZXMu
IFRoZXJlZm9yZSB0d28gbGlicmFyaWVzIHRoYXQgYm90aCBkZWZpbmUgYQorbWFjcm8gb2YgdGhl
IHNhbWUgbmFtZSB3aWxsIGNsYXNoIGlmIHlvdSBgI2luY2x1ZGVgIGJvdGggZGVmaW5pdGlvbnMu
IEluIGNhc2UgYQorR29vZ2xlIFRlc3QgbWFjcm8gY2xhc2hlcyB3aXRoIGFub3RoZXIgbGlicmFy
eSwgeW91IGNhbiBmb3JjZSBHb29nbGUgVGVzdCB0bworcmVuYW1lIGl0cyBtYWNybyB0byBhdm9p
ZCB0aGUgY29uZmxpY3QuCisKK1NwZWNpZmljYWxseSwgaWYgYm90aCBHb29nbGUgVGVzdCBhbmQg
c29tZSBvdGhlciBjb2RlIGRlZmluZSBtYWNybyBGT08sIHlvdSBjYW4KK2FkZAorCisgICAgLURH
VEVTVF9ET05UX0RFRklORV9GT089MQorCit0byB0aGUgY29tcGlsZXIgZmxhZ3MgdG8gdGVsbCBH
b29nbGUgVGVzdCB0byBjaGFuZ2UgdGhlIG1hY3JvJ3MgbmFtZSBmcm9tIGBGT09gCit0byBgR1RF
U1RfRk9PYC4gQ3VycmVudGx5IGBGT09gIGNhbiBiZSBgRkFJTGAsIGBTVUNDRUVEYCwgb3IgYFRF
U1RgLiBGb3IKK2V4YW1wbGUsIHdpdGggYC1ER1RFU1RfRE9OVF9ERUZJTkVfVEVTVD0xYCwgeW91
J2xsIG5lZWQgdG8gd3JpdGUKKworICAgIEdURVNUX1RFU1QoU29tZVRlc3QsIERvZXNUaGlzKSB7
IC4uLiB9CisKK2luc3RlYWQgb2YKKworICAgIFRFU1QoU29tZVRlc3QsIERvZXNUaGlzKSB7IC4u
LiB9CisKK2luIG9yZGVyIHRvIGRlZmluZSBhIHRlc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9jbWFrZS9Db25maWcuY21ha2UuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9jbWFrZS9Db25maWcuY21ha2UuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJiZTQ0OThiMWEwNzk2ODFh
MTI5ZTMxYjE3YzU3ZTE4MTI2YTYzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2NtYWtlL0NvbmZpZy5jbWFrZS5pbgpAQCAtMCwwICsxLDkgQEAKK0BQQUNLQUdF
X0lOSVRACitpbmNsdWRlKENNYWtlRmluZERlcGVuZGVuY3lNYWNybykKK2lmIChAR1RFU1RfSEFT
X1BUSFJFQURAKQorICBzZXQoVEhSRUFEU19QUkVGRVJfUFRIUkVBRF9GTEFHIEBUSFJFQURTX1BS
RUZFUl9QVEhSRUFEX0ZMQUdAKQorICBmaW5kX2RlcGVuZGVuY3koVGhyZWFkcykKK2VuZGlmKCkK
KworaW5jbHVkZSgiJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9AdGFyZ2V0c19leHBvcnRfbmFt
ZUAuY21ha2UiKQorY2hlY2tfcmVxdWlyZWRfY29tcG9uZW50cygiQHByb2plY3RfbmFtZUAiKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvZ3Rlc3QucGMuaW4gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9ndGVzdC5wYy5pbgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzk2
N2FkNTZmZjJjMzJlZDRiYTA2NzAzYWVhNTI1ZGNhZDJjZTdiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvZ3Rlc3QucGMuaW4KQEAgLTAsMCArMSw5IEBA
CitsaWJkaXI9QENNQUtFX0lOU1RBTExfRlVMTF9MSUJESVJACitpbmNsdWRlZGlyPUBDTUFLRV9J
TlNUQUxMX0ZVTExfSU5DTFVERURJUkAKKworTmFtZTogZ3Rlc3QKK0Rlc2NyaXB0aW9uOiBHb29n
bGVUZXN0ICh3aXRob3V0IG1haW4oKSBmdW5jdGlvbikKK1ZlcnNpb246IEBQUk9KRUNUX1ZFUlNJ
T05ACitVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdAorTGliczogLUwk
e2xpYmRpcn0gLWxndGVzdCBAQ01BS0VfVEhSRUFEX0xJQlNfSU5JVEAKK0NmbGFnczogLUkke2lu
Y2x1ZGVkaXJ9IEBHVEVTVF9IQVNfUFRIUkVBRF9NQUNST0AgQENNQUtFX1RIUkVBRF9MSUJTX0lO
SVRACmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9ndGVzdF9tYWlu
LnBjLmluIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvZ3Rlc3RfbWFpbi5wYy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mZTI1ZDljNzNjNjgzYjY0MTdiOTliYjcwM2MxM2FlMTZiYThhOTUyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvZ3Rlc3RfbWFpbi5w
Yy5pbgpAQCAtMCwwICsxLDEwIEBACitsaWJkaXI9QENNQUtFX0lOU1RBTExfRlVMTF9MSUJESVJA
CitpbmNsdWRlZGlyPUBDTUFLRV9JTlNUQUxMX0ZVTExfSU5DTFVERURJUkAKKworTmFtZTogZ3Rl
c3RfbWFpbgorRGVzY3JpcHRpb246IEdvb2dsZVRlc3QgKHdpdGggbWFpbigpIGZ1bmN0aW9uKQor
VmVyc2lvbjogQFBST0pFQ1RfVkVSU0lPTkAKK1VSTDogaHR0cHM6Ly9naXRodWIuY29tL2dvb2ds
ZS9nb29nbGV0ZXN0CitSZXF1aXJlczogZ3Rlc3QKK0xpYnM6IC1MJHtsaWJkaXJ9IC1sZ3Rlc3Rf
bWFpbiBAQ01BS0VfVEhSRUFEX0xJQlNfSU5JVEAKK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9IEBH
VEVTVF9IQVNfUFRIUkVBRF9NQUNST0AgQENNQUtFX1RIUkVBRF9MSUJTX0lOSVRACmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9pbnRlcm5hbF91dGlscy5jbWFrZSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2ludGVybmFsX3V0aWxzLmNtYWtlCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhjMWY5YmE5OWNmNTA1NzRmNjY5ZGQ3ZGViYTMyNGRjZTQwNTk1ZjMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9pbnRlcm5hbF91dGlscy5j
bWFrZQpAQCAtMCwwICsxLDMxOCBAQAorIyBEZWZpbmVzIGZ1bmN0aW9ucyBhbmQgbWFjcm9zIHVz
ZWZ1bCBmb3IgYnVpbGRpbmcgR29vZ2xlIFRlc3QgYW5kCisjIEdvb2dsZSBNb2NrLgorIworIyBO
b3RlOgorIworIyAtIFRoaXMgZmlsZSB3aWxsIGJlIHJ1biB0d2ljZSB3aGVuIGJ1aWxkaW5nIEdv
b2dsZSBNb2NrIChvbmNlIHZpYQorIyAgIEdvb2dsZSBUZXN0J3MgQ01ha2VMaXN0cy50eHQsIGFu
ZCBvbmNlIHZpYSBHb29nbGUgTW9jaydzKS4KKyMgICBUaGVyZWZvcmUgaXQgc2hvdWxkbid0IGhh
dmUgYW55IHNpZGUgZWZmZWN0cyBvdGhlciB0aGFuIGRlZmluaW5nCisjICAgdGhlIGZ1bmN0aW9u
cyBhbmQgbWFjcm9zLgorIworIyAtIFRoZSBmdW5jdGlvbnMvbWFjcm9zIGRlZmluZWQgaW4gdGhp
cyBmaWxlIG1heSBkZXBlbmQgb24gR29vZ2xlCisjICAgVGVzdCBhbmQgR29vZ2xlIE1vY2sncyBv
cHRpb24oKSBkZWZpbml0aW9ucywgYW5kIHRodXMgbXVzdCBiZQorIyAgIGNhbGxlZCAqYWZ0ZXIq
IHRoZSBvcHRpb25zIGhhdmUgYmVlbiBkZWZpbmVkLgorCisjIFR3ZWFrcyBDTWFrZSdzIGRlZmF1
bHQgY29tcGlsZXIvbGlua2VyIHNldHRpbmdzIHRvIHN1aXQgR29vZ2xlIFRlc3QncyBuZWVkcy4K
KyMKKyMgVGhpcyBtdXN0IGJlIGEgbWFjcm8oKSwgYXMgaW5zaWRlIGEgZnVuY3Rpb24gc3RyaW5n
KCkgY2FuIG9ubHkKKyMgdXBkYXRlIHZhcmlhYmxlcyBpbiB0aGUgZnVuY3Rpb24gc2NvcGUuCitt
YWNybyhmaXhfZGVmYXVsdF9jb21waWxlcl9zZXR0aW5nc18pCisgIGlmIChNU1ZDKQorICAgICMg
Rm9yIE1TVkMsIENNYWtlIHNldHMgY2VydGFpbiBmbGFncyB0byBkZWZhdWx0cyB3ZSB3YW50IHRv
IG92ZXJyaWRlLgorICAgICMgVGhpcyByZXBsYWNlbWVudCBjb2RlIGlzIHRha2VuIGZyb20gc2Ft
cGxlIGluIHRoZSBDTWFrZSBXaWtpIGF0CisgICAgIyBodHRwczovL2dpdGxhYi5raXR3YXJlLmNv
bS9jbWFrZS9jb21tdW5pdHkvd2lraXMvRkFRI2R5bmFtaWMtcmVwbGFjZS4KKyAgICBmb3JlYWNo
IChmbGFnX3ZhcgorICAgICAgICAgICAgIENNQUtFX0NYWF9GTEFHUyBDTUFLRV9DWFhfRkxBR1Nf
REVCVUcgQ01BS0VfQ1hYX0ZMQUdTX1JFTEVBU0UKKyAgICAgICAgICAgICBDTUFLRV9DWFhfRkxB
R1NfTUlOU0laRVJFTCBDTUFLRV9DWFhfRkxBR1NfUkVMV0lUSERFQklORk8pCisgICAgICBpZiAo
Tk9UIEJVSUxEX1NIQVJFRF9MSUJTIEFORCBOT1QgZ3Rlc3RfZm9yY2Vfc2hhcmVkX2NydCkKKyAg
ICAgICAgIyBXaGVuIEdvb2dsZSBUZXN0IGlzIGJ1aWx0IGFzIGEgc2hhcmVkIGxpYnJhcnksIGl0
IHNob3VsZCBhbHNvIHVzZQorICAgICAgICAjIHNoYXJlZCBydW50aW1lIGxpYnJhcmllcy4gIE90
aGVyd2lzZSwgaXQgbWF5IGVuZCB1cCB3aXRoIG11bHRpcGxlCisgICAgICAgICMgY29waWVzIG9m
IHJ1bnRpbWUgbGlicmFyeSBkYXRhIGluIGRpZmZlcmVudCBtb2R1bGVzLCByZXN1bHRpbmcgaW4K
KyAgICAgICAgIyBoYXJkLXRvLWZpbmQgY3Jhc2hlcy4gV2hlbiBpdCBpcyBidWlsdCBhcyBhIHN0
YXRpYyBsaWJyYXJ5LCBpdCBpcworICAgICAgICAjIHByZWZlcmFibGUgdG8gdXNlIENSVCBhcyBz
dGF0aWMgbGlicmFyaWVzLCBhcyB3ZSBkb24ndCBoYXZlIHRvIHJlbHkKKyAgICAgICAgIyBvbiBD
UlQgRExMcyBiZWluZyBhdmFpbGFibGUuIENNYWtlIGFsd2F5cyBkZWZhdWx0cyB0byB1c2luZyBz
aGFyZWQKKyAgICAgICAgIyBDUlQgbGlicmFyaWVzLCBzbyB3ZSBvdmVycmlkZSB0aGF0IGRlZmF1
bHQgaGVyZS4KKyAgICAgICAgc3RyaW5nKFJFUExBQ0UgIi9NRCIgIi1NVCIgJHtmbGFnX3Zhcn0g
IiR7JHtmbGFnX3Zhcn19IikKKyAgICAgIGVuZGlmKCkKKworICAgICAgIyBXZSBwcmVmZXIgbW9y
ZSBzdHJpY3Qgd2FybmluZyBjaGVja2luZyBmb3IgYnVpbGRpbmcgR29vZ2xlIFRlc3QuCisgICAg
ICAjIFJlcGxhY2VzIC9XMyB3aXRoIC9XNCBpbiBkZWZhdWx0cy4KKyAgICAgIHN0cmluZyhSRVBM
QUNFICIvVzMiICIvVzQiICR7ZmxhZ192YXJ9ICIkeyR7ZmxhZ192YXJ9fSIpCisKKyAgICAgICMg
UHJldmVudCBEOTAyNSB3YXJuaW5nIGZvciB0YXJnZXRzIHRoYXQgaGF2ZSBleGNlcHRpb24gaGFu
ZGxpbmcKKyAgICAgICMgdHVybmVkIG9mZiAoL0VIcy1jLSBmbGFnKS4gV2hlcmUgcmVxdWlyZWQs
IGV4Y2VwdGlvbnMgYXJlIGV4cGxpY2l0bHkKKyAgICAgICMgcmUtZW5hYmxlZCB1c2luZyB0aGUg
Y3h4X2V4Y2VwdGlvbl9mbGFncyB2YXJpYWJsZS4KKyAgICAgIHN0cmluZyhSRVBMQUNFICIvRUhz
YyIgIiIgJHtmbGFnX3Zhcn0gIiR7JHtmbGFnX3Zhcn19IikKKyAgICBlbmRmb3JlYWNoKCkKKyAg
ZW5kaWYoKQorZW5kbWFjcm8oKQorCisjIERlZmluZXMgdGhlIGNvbXBpbGVyL2xpbmtlciBmbGFn
cyB1c2VkIHRvIGJ1aWxkIEdvb2dsZSBUZXN0IGFuZAorIyBHb29nbGUgTW9jay4gIFlvdSBjYW4g
dHdlYWsgdGhlc2UgZGVmaW5pdGlvbnMgdG8gc3VpdCB5b3VyIG5lZWQuICBBCisjIHZhcmlhYmxl
J3MgdmFsdWUgaXMgZW1wdHkgYmVmb3JlIGl0J3MgZXhwbGljaXRseSBhc3NpZ25lZCB0by4KK21h
Y3JvKGNvbmZpZ19jb21waWxlcl9hbmRfbGlua2VyKQorICAjIE5vdGU6IHB0aHJlYWRzIG9uIE1p
bkdXIGlzIG5vdCBzdXBwb3J0ZWQsIGV2ZW4gaWYgYXZhaWxhYmxlCisgICMgaW5zdGVhZCwgd2Ug
dXNlIHdpbmRvd3MgdGhyZWFkaW5nIHByaW1pdGl2ZXMKKyAgdW5zZXQoR1RFU1RfSEFTX1BUSFJF
QUQpCisgIGlmIChOT1QgZ3Rlc3RfZGlzYWJsZV9wdGhyZWFkcyBBTkQgTk9UIE1JTkdXKQorICAg
ICMgRGVmaW5lcyBDTUFLRV9VU0VfUFRIUkVBRFNfSU5JVCBhbmQgQ01BS0VfVEhSRUFEX0xJQlNf
SU5JVC4KKyAgICBzZXQoVEhSRUFEU19QUkVGRVJfUFRIUkVBRF9GTEFHIE9OKQorICAgIGZpbmRf
cGFja2FnZShUaHJlYWRzKQorICAgIGlmIChDTUFLRV9VU0VfUFRIUkVBRFNfSU5JVCkKKyAgICAg
IHNldChHVEVTVF9IQVNfUFRIUkVBRCBPTikKKyAgICBlbmRpZigpCisgIGVuZGlmKCkKKworICBm
aXhfZGVmYXVsdF9jb21waWxlcl9zZXR0aW5nc18oKQorICBpZiAoTVNWQykKKyAgICAjIE5ld2xp
bmVzIGluc2lkZSBmbGFncyB2YXJpYWJsZXMgYnJlYWsgQ01ha2UncyBOTWFrZSBnZW5lcmF0b3Iu
CisgICAgIyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBBZGQgLVJUQ3MgYW5kIC1SVEN1IHRvIGRl
YnVnIGJ1aWxkcy4KKyAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIi1HUyAtVzQgLVdYIC13ZDQyNTEg
LXdkNDI3NSAtbm9sb2dvIC1KIC1aaSIpCisgICAgaWYgKE1TVkNfVkVSU0lPTiBMRVNTIDE0MDAp
ICAjIDE0MDAgaXMgVmlzdWFsIFN0dWRpbyAyMDA1CisgICAgICAjIFN1cHByZXNzIHNwdXJpb3Vz
IHdhcm5pbmdzIE1TVkMgNy4xIHNvbWV0aW1lcyBpc3N1ZXMuCisgICAgICAjIEZvcmNpbmcgdmFs
dWUgdG8gYm9vbC4KKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30g
LXdkNDgwMCIpCisgICAgICAjIENvcHkgY29uc3RydWN0b3IgYW5kIGFzc2lnbm1lbnQgb3BlcmF0
b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZC4KKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtj
eHhfYmFzZV9mbGFnc30gLXdkNDUxMSAtd2Q0NTEyIikKKyAgICAgICMgQ29tcGF0aWJpbGl0eSB3
YXJuaW5ncyBub3QgYXBwbGljYWJsZSB0byBHb29nbGUgVGVzdC4KKyAgICAgICMgUmVzb2x2ZWQg
b3ZlcmxvYWQgd2FzIGZvdW5kIGJ5IGFyZ3VtZW50LWRlcGVuZGVudCBsb29rdXAuCisgICAgICBz
ZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC13ZDQ2NzUiKQorICAgIGVuZGlm
KCkKKyAgICBpZiAoTVNWQ19WRVJTSU9OIExFU1MgMTUwMCkgICMgMTUwMCBpcyBWaXN1YWwgU3R1
ZGlvIDIwMDgKKyAgICAgICMgQ29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudC4KKyAg
ICAgICMgV2hlbiBjb21waWxpbmcgd2l0aCAvVzQsIHdlIGdldCBzZXZlcmFsIGluc3RhbmNlcyBv
ZiBDNDEyNworICAgICAgIyAoQ29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudCkuIElu
IG91ciBjb2RlLCB3ZSBkaXNhYmxlIHRoYXQKKyAgICAgICMgd2FybmluZyBvbiBhIGNhc2UtYnkt
Y2FzZSBiYXNpcy4gSG93ZXZlciwgb24gVmlzdWFsIFN0dWRpbyAyMDA1LAorICAgICAgIyB0aGUg
d2FybmluZyBmaXJlcyBvbiBzdGQ6Omxpc3QuIFRoZXJlZm9yZSBvbiB0aGF0IGNvbXBpbGVyIGFu
ZCBlYXJsaWVyLAorICAgICAgIyB3ZSBkaXNhYmxlIHRoZSB3YXJuaW5nIHByb2plY3Qtd2lkZS4K
KyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLXdkNDEyNyIpCisg
ICAgZW5kaWYoKQorICAgIGlmIChOT1QgKE1TVkNfVkVSU0lPTiBMRVNTIDE3MDApKSAgIyAxNzAw
IGlzIFZpc3VhbCBTdHVkaW8gMjAxMi4KKyAgICAgICMgU3VwcHJlc3MgInVucmVhY2hhYmxlIGNv
ZGUiIHdhcm5pbmcgb24gVlMgMjAxMiBhbmQgbGF0ZXIuCisgICAgICAjIGh0dHA6Ly9zdGFja292
ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzIzMjY2OSBleHBsYWlucyB0aGUgaXNzdWUuCisgICAgICBz
ZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC13ZDQ3MDIiKQorICAgIGVuZGlm
KCkKKworICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLURfVU5JQ09E
RSAtRFVOSUNPREUgLURXSU4zMiAtRF9XSU4zMiIpCisgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIk
e2N4eF9iYXNlX2ZsYWdzfSAtRFNUUklDVCAtRFdJTjMyX0xFQU5fQU5EX01FQU4iKQorICAgIHNl
dChjeHhfZXhjZXB0aW9uX2ZsYWdzICItRUhzYyAtRF9IQVNfRVhDRVBUSU9OUz0xIikKKyAgICBz
ZXQoY3h4X25vX2V4Y2VwdGlvbl9mbGFncyAiLUVIcy1jLSAtRF9IQVNfRVhDRVBUSU9OUz0wIikK
KyAgICBzZXQoY3h4X25vX3J0dGlfZmxhZ3MgIi1HUi0iKQorICBlbHNlaWYgKENNQUtFX0NPTVBJ
TEVSX0lTX0dOVUNYWCkKKyAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIi1XYWxsIC1Xc2hhZG93IC1X
ZXJyb3IiKQorICAgIGlmKE5PVCBDTUFLRV9DWFhfQ09NUElMRVJfVkVSU0lPTiBWRVJTSU9OX0xF
U1MgNy4wLjApCisgICAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC1X
bm8tZXJyb3I9ZGFuZ2xpbmctZWxzZSIpCisgICAgZW5kaWYoKQorICAgIHNldChjeHhfZXhjZXB0
aW9uX2ZsYWdzICItZmV4Y2VwdGlvbnMiKQorICAgIHNldChjeHhfbm9fZXhjZXB0aW9uX2ZsYWdz
ICItZm5vLWV4Y2VwdGlvbnMiKQorICAgICMgVW50aWwgdmVyc2lvbiA0LjMuMiwgR0NDIGRvZXNu
J3QgZGVmaW5lIGEgbWFjcm8gdG8gaW5kaWNhdGUKKyAgICAjIHdoZXRoZXIgUlRUSSBpcyBlbmFi
bGVkLiAgVGhlcmVmb3JlIHdlIGRlZmluZSBHVEVTVF9IQVNfUlRUSQorICAgICMgZXhwbGljaXRs
eS4KKyAgICBzZXQoY3h4X25vX3J0dGlfZmxhZ3MgIi1mbm8tcnR0aSAtREdURVNUX0hBU19SVFRJ
PTAiKQorICAgIHNldChjeHhfc3RyaWN0X2ZsYWdzCisgICAgICAiLVdleHRyYSAtV25vLXVudXNl
ZC1wYXJhbWV0ZXIgLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyIpCisgIGVsc2VpZiAo
Q01BS0VfQ1hYX0NPTVBJTEVSX0lEIFNUUkVRVUFMICJTdW5Qcm8iKQorICAgIHNldChjeHhfZXhj
ZXB0aW9uX2ZsYWdzICItZmVhdHVyZXM9ZXhjZXB0IikKKyAgICAjIFN1biBQcm8gZG9lc24ndCBw
cm92aWRlIG1hY3JvcyB0byBpbmRpY2F0ZSB3aGV0aGVyIGV4Y2VwdGlvbnMgYW5kCisgICAgIyBS
VFRJIGFyZSBlbmFibGVkLCBzbyB3ZSBkZWZpbmUgR1RFU1RfSEFTXyogZXhwbGljaXRseS4KKyAg
ICBzZXQoY3h4X25vX2V4Y2VwdGlvbl9mbGFncyAiLWZlYXR1cmVzPW5vJWV4Y2VwdCAtREdURVNU
X0hBU19FWENFUFRJT05TPTAiKQorICAgIHNldChjeHhfbm9fcnR0aV9mbGFncyAiLWZlYXR1cmVz
PW5vJXJ0dGkgLURHVEVTVF9IQVNfUlRUST0wIikKKyAgZWxzZWlmIChDTUFLRV9DWFhfQ09NUElM
RVJfSUQgU1RSRVFVQUwgIlZpc3VhbEFnZSIgT1IKKyAgICAgIENNQUtFX0NYWF9DT01QSUxFUl9J
RCBTVFJFUVVBTCAiWEwiKQorICAgICMgQ01ha2UgMi44IGNoYW5nZXMgVmlzdWFsIEFnZSdzIGNv
bXBpbGVyIElEIHRvICJYTCIuCisgICAgc2V0KGN4eF9leGNlcHRpb25fZmxhZ3MgIi1xZWgiKQor
ICAgIHNldChjeHhfbm9fZXhjZXB0aW9uX2ZsYWdzICItcW5vZWgiKQorICAgICMgVW50aWwgdmVy
c2lvbiA5LjAsIFZpc3VhbCBBZ2UgZG9lc24ndCBkZWZpbmUgYSBtYWNybyB0byBpbmRpY2F0ZQor
ICAgICMgd2hldGhlciBSVFRJIGlzIGVuYWJsZWQuICBUaGVyZWZvcmUgd2UgZGVmaW5lIEdURVNU
X0hBU19SVFRJCisgICAgIyBleHBsaWNpdGx5LgorICAgIHNldChjeHhfbm9fcnR0aV9mbGFncyAi
LXFub3J0dGkgLURHVEVTVF9IQVNfUlRUST0wIikKKyAgZWxzZWlmIChDTUFLRV9DWFhfQ09NUElM
RVJfSUQgU1RSRVFVQUwgIkhQIikKKyAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIi1BQSAtbXQiKQor
ICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICItREdURVNUX0hBU19FWENFUFRJT05TPTEiKQor
ICAgIHNldChjeHhfbm9fZXhjZXB0aW9uX2ZsYWdzICIrbm9laCAtREdURVNUX0hBU19FWENFUFRJ
T05TPTAiKQorICAgICMgUlRUSSBjYW4gbm90IGJlIGRpc2FibGVkIGluIEhQIGFDQyBjb21waWxl
ci4KKyAgICBzZXQoY3h4X25vX3J0dGlfZmxhZ3MgIiIpCisgIGVuZGlmKCkKKworICAjIFRoZSBw
dGhyZWFkcyBsaWJyYXJ5IGlzIGF2YWlsYWJsZSBhbmQgYWxsb3dlZD8KKyAgaWYgKERFRklORUQg
R1RFU1RfSEFTX1BUSFJFQUQpCisgICAgc2V0KEdURVNUX0hBU19QVEhSRUFEX01BQ1JPICItREdU
RVNUX0hBU19QVEhSRUFEPTEiKQorICBlbHNlKCkKKyAgICBzZXQoR1RFU1RfSEFTX1BUSFJFQURf
TUFDUk8gIi1ER1RFU1RfSEFTX1BUSFJFQUQ9MCIpCisgIGVuZGlmKCkKKyAgc2V0KGN4eF9iYXNl
X2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAke0dURVNUX0hBU19QVEhSRUFEX01BQ1JPfSIpCisK
KyAgIyBGb3IgYnVpbGRpbmcgZ3Rlc3QncyBvd24gdGVzdHMgYW5kIHNhbXBsZXMuCisgIHNldChj
eHhfZXhjZXB0aW9uICIke2N4eF9iYXNlX2ZsYWdzfSAke2N4eF9leGNlcHRpb25fZmxhZ3N9IikK
KyAgc2V0KGN4eF9ub19leGNlcHRpb24KKyAgICAiJHtDTUFLRV9DWFhfRkxBR1N9ICR7Y3h4X2Jh
c2VfZmxhZ3N9ICR7Y3h4X25vX2V4Y2VwdGlvbl9mbGFnc30iKQorICBzZXQoY3h4X2RlZmF1bHQg
IiR7Y3h4X2V4Y2VwdGlvbn0iKQorICBzZXQoY3h4X25vX3J0dGkgIiR7Y3h4X2RlZmF1bHR9ICR7
Y3h4X25vX3J0dGlfZmxhZ3N9IikKKyAgc2V0KGN4eF91c2Vfb3duX3R1cGxlICIke2N4eF9kZWZh
dWx0fSAtREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTEiKQorCisgICMgRm9yIGJ1aWxkaW5nIHRo
ZSBndGVzdCBsaWJyYXJpZXMuCisgIHNldChjeHhfc3RyaWN0ICIke2N4eF9kZWZhdWx0fSAke2N4
eF9zdHJpY3RfZmxhZ3N9IikKK2VuZG1hY3JvKCkKKworIyBEZWZpbmVzIHRoZSBndGVzdCAmIGd0
ZXN0X21haW4gbGlicmFyaWVzLiAgVXNlciB0ZXN0cyBzaG91bGQgbGluaworIyB3aXRoIG9uZSBv
ZiB0aGVtLgorZnVuY3Rpb24oY3h4X2xpYnJhcnlfd2l0aF90eXBlIG5hbWUgdHlwZSBjeHhfZmxh
Z3MpCisgICMgdHlwZSBjYW4gYmUgZWl0aGVyIFNUQVRJQyBvciBTSEFSRUQgdG8gZGVub3RlIGEg
c3RhdGljIG9yIHNoYXJlZCBsaWJyYXJ5LgorICAjIEFSR04gcmVmZXJzIHRvIGFkZGl0aW9uYWwg
YXJndW1lbnRzIGFmdGVyICdjeHhfZmxhZ3MnLgorICBhZGRfbGlicmFyeSgke25hbWV9ICR7dHlw
ZX0gJHtBUkdOfSkKKyAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7bmFtZX0KKyAgICBQUk9QRVJU
SUVTCisgICAgQ09NUElMRV9GTEFHUyAiJHtjeHhfZmxhZ3N9IikKKyAgIyBHZW5lcmF0ZSBkZWJ1
ZyBsaWJyYXJ5IG5hbWUgd2l0aCBhIHBvc3RmaXguCisgIHNldF90YXJnZXRfcHJvcGVydGllcygk
e25hbWV9CisgICAgUFJPUEVSVElFUworICAgIERFQlVHX1BPU1RGSVggImQiKQorICBpZiAoQlVJ
TERfU0hBUkVEX0xJQlMgT1IgdHlwZSBTVFJFUVVBTCAiU0hBUkVEIikKKyAgICBzZXRfdGFyZ2V0
X3Byb3BlcnRpZXMoJHtuYW1lfQorICAgICAgUFJPUEVSVElFUworICAgICAgQ09NUElMRV9ERUZJ
TklUSU9OUyAiR1RFU1RfQ1JFQVRFX1NIQVJFRF9MSUJSQVJZPTEiKQorICAgIGlmIChOT1QgIiR7
Q01BS0VfVkVSU0lPTn0iIFZFUlNJT05fTEVTUyAiMi44LjExIikKKyAgICAgIHRhcmdldF9jb21w
aWxlX2RlZmluaXRpb25zKCR7bmFtZX0gSU5URVJGQUNFCisgICAgICAgICQ8SU5TVEFMTF9JTlRF
UkZBQ0U6R1RFU1RfTElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZPTE+KQorICAgIGVuZGlmKCkKKyAg
ZW5kaWYoKQorICBpZiAoREVGSU5FRCBHVEVTVF9IQVNfUFRIUkVBRCkKKyAgICBpZiAoIiR7Q01B
S0VfVkVSU0lPTn0iIFZFUlNJT05fTEVTUyAiMy4xLjAiKQorICAgICAgc2V0KHRocmVhZHNfc3Bl
YyAke0NNQUtFX1RIUkVBRF9MSUJTX0lOSVR9KQorICAgIGVsc2UoKQorICAgICAgc2V0KHRocmVh
ZHNfc3BlYyBUaHJlYWRzOjpUaHJlYWRzKQorICAgIGVuZGlmKCkKKyAgICB0YXJnZXRfbGlua19s
aWJyYXJpZXMoJHtuYW1lfSBQVUJMSUMgJHt0aHJlYWRzX3NwZWN9KQorICBlbmRpZigpCitlbmRm
dW5jdGlvbigpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBIZWxwZXIgZnVuY3Rpb25zIGZvciBj
cmVhdGluZyBidWlsZCB0YXJnZXRzLgorCitmdW5jdGlvbihjeHhfc2hhcmVkX2xpYnJhcnkgbmFt
ZSBjeHhfZmxhZ3MpCisgIGN4eF9saWJyYXJ5X3dpdGhfdHlwZSgke25hbWV9IFNIQVJFRCAiJHtj
eHhfZmxhZ3N9IiAke0FSR059KQorZW5kZnVuY3Rpb24oKQorCitmdW5jdGlvbihjeHhfbGlicmFy
eSBuYW1lIGN4eF9mbGFncykKKyAgY3h4X2xpYnJhcnlfd2l0aF90eXBlKCR7bmFtZX0gIiIgIiR7
Y3h4X2ZsYWdzfSIgJHtBUkdOfSkKK2VuZGZ1bmN0aW9uKCkKKworIyBjeHhfZXhlY3V0YWJsZV93
aXRoX2ZsYWdzKG5hbWUgY3h4X2ZsYWdzIGxpYnMgc3Jjcy4uLikKKyMKKyMgY3JlYXRlcyBhIG5h
bWVkIEMrKyBleGVjdXRhYmxlIHRoYXQgZGVwZW5kcyBvbiB0aGUgZ2l2ZW4gbGlicmFyaWVzIGFu
ZAorIyBpcyBidWlsdCBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmlsZXMgd2l0aCB0aGUgZ2l2ZW4g
Y29tcGlsZXIgZmxhZ3MuCitmdW5jdGlvbihjeHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzIG5hbWUg
Y3h4X2ZsYWdzIGxpYnMpCisgIGFkZF9leGVjdXRhYmxlKCR7bmFtZX0gJHtBUkdOfSkKKyAgaWYg
KE1TVkMgQU5EIChOT1QgKE1TVkNfVkVSU0lPTiBMRVNTIDE3MDApKSkgICMgMTcwMCBpcyBWaXN1
YWwgU3R1ZGlvIDIwMTIuCisgICAgIyBCaWdPYmogcmVxdWlyZWQgZm9yIHRlc3RzLgorICAgIHNl
dChjeHhfZmxhZ3MgIiR7Y3h4X2ZsYWdzfSAtYmlnb2JqIikKKyAgZW5kaWYoKQorICBpZiAoY3h4
X2ZsYWdzKQorICAgIHNldF90YXJnZXRfcHJvcGVydGllcygke25hbWV9CisgICAgICBQUk9QRVJU
SUVTCisgICAgICBDT01QSUxFX0ZMQUdTICIke2N4eF9mbGFnc30iKQorICBlbmRpZigpCisgIGlm
IChCVUlMRF9TSEFSRURfTElCUykKKyAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtuYW1lfQor
ICAgICAgUFJPUEVSVElFUworICAgICAgQ09NUElMRV9ERUZJTklUSU9OUyAiR1RFU1RfTElOS0VE
X0FTX1NIQVJFRF9MSUJSQVJZPTEiKQorICBlbmRpZigpCisgICMgVG8gc3VwcG9ydCBtaXhpbmcg
bGlua2luZyBpbiBzdGF0aWMgYW5kIGR5bmFtaWMgbGlicmFyaWVzLCBsaW5rIGVhY2gKKyAgIyBs
aWJyYXJ5IGluIHdpdGggYW4gZXh0cmEgY2FsbCB0byB0YXJnZXRfbGlua19saWJyYXJpZXMuCisg
IGZvcmVhY2ggKGxpYiAiJHtsaWJzfSIpCisgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7bmFt
ZX0gJHtsaWJ9KQorICBlbmRmb3JlYWNoKCkKK2VuZGZ1bmN0aW9uKCkKKworIyBjeHhfZXhlY3V0
YWJsZShuYW1lIGRpciBsaWIgc3Jjcy4uLikKKyMKKyMgY3JlYXRlcyBhIG5hbWVkIHRhcmdldCB0
aGF0IGRlcGVuZHMgb24gdGhlIGdpdmVuIGxpYnMgYW5kIGlzIGJ1aWx0CisjIGZyb20gdGhlIGdp
dmVuIHNvdXJjZSBmaWxlcy4gIGRpci9uYW1lLmNjIGlzIGltcGxpY2l0bHkgaW5jbHVkZWQgaW4K
KyMgdGhlIHNvdXJjZSBmaWxlIGxpc3QuCitmdW5jdGlvbihjeHhfZXhlY3V0YWJsZSBuYW1lIGRp
ciBsaWJzKQorICBjeHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzKAorICAgICR7bmFtZX0gIiR7Y3h4
X2RlZmF1bHR9IiAiJHtsaWJzfSIgIiR7ZGlyfS8ke25hbWV9LmNjIiAke0FSR059KQorZW5kZnVu
Y3Rpb24oKQorCisjIFNldHMgUFlUSE9OSU5URVJQX0ZPVU5EIGFuZCBQWVRIT05fRVhFQ1VUQUJM
RS4KK2ZpbmRfcGFja2FnZShQeXRob25JbnRlcnApCisKKyMgY3h4X3Rlc3Rfd2l0aF9mbGFncyhu
YW1lIGN4eF9mbGFncyBsaWJzIHNyY3MuLi4pCisjCisjIGNyZWF0ZXMgYSBuYW1lZCBDKysgdGVz
dCB0aGF0IGRlcGVuZHMgb24gdGhlIGdpdmVuIGxpYnMgYW5kIGlzIGJ1aWx0CisjIGZyb20gdGhl
IGdpdmVuIHNvdXJjZSBmaWxlcyB3aXRoIHRoZSBnaXZlbiBjb21waWxlciBmbGFncy4KK2Z1bmN0
aW9uKGN4eF90ZXN0X3dpdGhfZmxhZ3MgbmFtZSBjeHhfZmxhZ3MgbGlicykKKyAgY3h4X2V4ZWN1
dGFibGVfd2l0aF9mbGFncygke25hbWV9ICIke2N4eF9mbGFnc30iICIke2xpYnN9IiAke0FSR059
KQorICBhZGRfdGVzdChOQU1FICR7bmFtZX0gQ09NTUFORCAke25hbWV9KQorZW5kZnVuY3Rpb24o
KQorCisjIGN4eF90ZXN0KG5hbWUgbGlicyBzcmNzLi4uKQorIworIyBjcmVhdGVzIGEgbmFtZWQg
dGVzdCB0YXJnZXQgdGhhdCBkZXBlbmRzIG9uIHRoZSBnaXZlbiBsaWJzIGFuZCBpcworIyBidWls
dCBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmlsZXMuICBVbmxpa2UgY3h4X3Rlc3Rfd2l0aF9mbGFn
cywKKyMgdGVzdC9uYW1lLmNjIGlzIGFscmVhZHkgaW1wbGljaXRseSBpbmNsdWRlZCBpbiB0aGUg
c291cmNlIGZpbGUgbGlzdC4KK2Z1bmN0aW9uKGN4eF90ZXN0IG5hbWUgbGlicykKKyAgY3h4X3Rl
c3Rfd2l0aF9mbGFncygiJHtuYW1lfSIgIiR7Y3h4X2RlZmF1bHR9IiAiJHtsaWJzfSIKKyAgICAi
dGVzdC8ke25hbWV9LmNjIiAke0FSR059KQorZW5kZnVuY3Rpb24oKQorCisjIHB5X3Rlc3QobmFt
ZSkKKyMKKyMgY3JlYXRlcyBhIFB5dGhvbiB0ZXN0IHdpdGggdGhlIGdpdmVuIG5hbWUgd2hvc2Ug
bWFpbiBtb2R1bGUgaXMgaW4KKyMgdGVzdC9uYW1lLnB5LiAgSXQgZG9lcyBub3RoaW5nIGlmIFB5
dGhvbiBpcyBub3QgaW5zdGFsbGVkLgorZnVuY3Rpb24ocHlfdGVzdCBuYW1lKQorICBpZiAoUFlU
SE9OSU5URVJQX0ZPVU5EKQorICAgIGlmICgke0NNQUtFX01BSk9SX1ZFUlNJT059LiR7Q01BS0Vf
TUlOT1JfVkVSU0lPTn0gR1JFQVRFUiAzLjEpCisgICAgICBpZiAoQ01BS0VfQ09ORklHVVJBVElP
Tl9UWVBFUykKKwkjIE11bHRpLWNvbmZpZ3VyYXRpb24gYnVpbGQgZ2VuZXJhdG9ycyBhcyBmb3Ig
VmlzdWFsIFN0dWRpbyBzYXZlCisJIyBvdXRwdXQgaW4gYSBzdWJkaXJlY3Rvcnkgb2YgQ01BS0Vf
Q1VSUkVOVF9CSU5BUllfRElSIChEZWJ1ZywKKwkjIFJlbGVhc2UgZXRjLiksIHNvIHdlIGhhdmUg
dG8gcHJvdmlkZSBpdCBoZXJlLgorICAgICAgICBhZGRfdGVzdCgKKyAgICAgICAgICBOQU1FICR7
bmFtZX0KKyAgICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS90ZXN0LyR7bmFtZX0ucHkKKyAgICAgICAgICAgICAgLS1idWlsZF9k
aXI9JHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9LyQ8Q09ORklHPiAke0FSR059KQorICAgICAg
ZWxzZSAoQ01BS0VfQ09ORklHVVJBVElPTl9UWVBFUykKKwkjIFNpbmdsZS1jb25maWd1cmF0aW9u
IGJ1aWxkIGdlbmVyYXRvcnMgbGlrZSBNYWtlZmlsZSBnZW5lcmF0b3JzCisJIyBkb24ndCBoYXZl
IHN1YmRpcnMgYmVsb3cgQ01BS0VfQ1VSUkVOVF9CSU5BUllfRElSLgorICAgICAgICBhZGRfdGVz
dCgKKyAgICAgICAgICBOQU1FICR7bmFtZX0KKyAgICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VY
RUNVVEFCTEV9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS90ZXN0LyR7bmFtZX0ucHkKKyAg
ICAgICAgICAgICAgLS1idWlsZF9kaXI9JHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9ICR7QVJH
Tn0pCisgICAgICBlbmRpZiAoQ01BS0VfQ09ORklHVVJBVElPTl9UWVBFUykKKyAgICBlbHNlICgk
e0NNQUtFX01BSk9SX1ZFUlNJT059LiR7Q01BS0VfTUlOT1JfVkVSU0lPTn0gR1JFQVRFUiAzLjEp
CisgICAgICAjICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfSBpcyBrbm93biBhdCBjb25maWd1
cmF0aW9uIHRpbWUsIHNvIHdlIGNhbgorICAgICAgIyBkaXJlY3RseSBiaW5kIGl0IGZyb20gY21h
a2UuICR7Q1RFU1RfQ09ORklHVVJBVElPTl9UWVBFfSBpcyBrbm93bgorICAgICAgIyBvbmx5IGF0
IGN0ZXN0IHJ1bnRpbWUgKGJ5IGNhbGxpbmcgY3Rlc3QgLWMgPENvbmZpZ3VyYXRpb24+KSwgc28K
KyAgICAgICMgd2UgaGF2ZSB0byBlc2NhcGUgJCB0byBkZWxheSB2YXJpYWJsZSBzdWJzdGl0dXRp
b24gaGVyZS4KKyAgICAgIGFkZF90ZXN0KAorICAgICAgICAke25hbWV9CisgICAgICAgICR7UFlU
SE9OX0VYRUNVVEFCTEV9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS90ZXN0LyR7bmFtZX0u
cHkKKyAgICAgICAgICAtLWJ1aWxkX2Rpcj0ke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vXCR7
Q1RFU1RfQ09ORklHVVJBVElPTl9UWVBFfSAke0FSR059KQorICAgIGVuZGlmICgke0NNQUtFX01B
Sk9SX1ZFUlNJT059LiR7Q01BS0VfTUlOT1JfVkVSU0lPTn0gR1JFQVRFUiAzLjEpCisgIGVuZGlm
KFBZVEhPTklOVEVSUF9GT1VORCkKK2VuZGZ1bmN0aW9uKCkKKworIyBpbnN0YWxsX3Byb2plY3Qo
dGFyZ2V0cy4uLikKKyMKKyMgSW5zdGFsbHMgdGhlIHNwZWNpZmllZCB0YXJnZXRzIGFuZCBjb25m
aWd1cmVzIHRoZSBhc3NvY2lhdGVkIHBrZ2NvbmZpZyBmaWxlcy4KK2Z1bmN0aW9uKGluc3RhbGxf
cHJvamVjdCkKKyAgaWYoSU5TVEFMTF9HVEVTVCkKKyAgICBpbnN0YWxsKERJUkVDVE9SWSAiJHtQ
Uk9KRUNUX1NPVVJDRV9ESVJ9L2luY2x1ZGUvIgorICAgICAgREVTVElOQVRJT04gIiR7Q01BS0Vf
SU5TVEFMTF9JTkNMVURFRElSfSIpCisgICAgIyBJbnN0YWxsIHRoZSBwcm9qZWN0IHRhcmdldHMu
CisgICAgaW5zdGFsbChUQVJHRVRTICR7QVJHTn0KKyAgICAgIEVYUE9SVCAke3RhcmdldHNfZXhw
b3J0X25hbWV9CisgICAgICBSVU5USU1FIERFU1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfQklO
RElSfSIKKyAgICAgIEFSQ0hJVkUgREVTVElOQVRJT04gIiR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9
IgorICAgICAgTElCUkFSWSBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0iKQor
ICAgICMgQ29uZmlndXJlIGFuZCBpbnN0YWxsIHBrZ2NvbmZpZyBmaWxlcy4KKyAgICBmb3JlYWNo
KHQgJHtBUkdOfSkKKyAgICAgIHNldChjb25maWd1cmVkX3BjICIke2dlbmVyYXRlZF9kaXJ9LyR7
dH0ucGMiKQorICAgICAgY29uZmlndXJlX2ZpbGUoIiR7UFJPSkVDVF9TT1VSQ0VfRElSfS9jbWFr
ZS8ke3R9LnBjLmluIgorICAgICAgICAiJHtjb25maWd1cmVkX3BjfSIgQE9OTFkpCisgICAgICBp
bnN0YWxsKEZJTEVTICIke2NvbmZpZ3VyZWRfcGN9IgorICAgICAgICBERVNUSU5BVElPTiAiJHtD
TUFLRV9JTlNUQUxMX0xJQkRJUn0vcGtnY29uZmlnIikKKyAgICBlbmRmb3JlYWNoKCkKKyAgZW5k
aWYoKQorZW5kZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
Y29kZWdlYXIvZ3Rlc3RfYWxsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29kZWdlYXIv
Z3Rlc3RfYWxsLmNjCmluZGV4IGJhN2FkNjhhZDFjYWE1ZmIyMDgzOGM3MDA4OTZhNDE4MmJhNTlk
OWYuLjEyMWIyZDgwZTgzZWM3Y2QwZmRmN2RjNjcxMjcyZGM1NGY2ZTlmMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NvZGVnZWFyL2d0ZXN0X2FsbC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9hbGwuY2MKQEAgLTEsMzggKzEsMzgg
QEAKLS8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
Ly8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBB
dXRob3I6IEpvc2ggS2VsbGV5IChqb3Noa2VsQGdtYWlsLmNvbSkKLS8vCi0vLyBHb29nbGUgQysr
IFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKLS8vCi0vLyBDKytCdWlsZGVyJ3MgSURF
IGNhbm5vdCBidWlsZCBhIHN0YXRpYyBsaWJyYXJ5IGZyb20gZmlsZXMgd2l0aCBoeXBoZW5zCi0v
LyBpbiB0aGVpciBuYW1lLiAgU2VlIGh0dHA6Ly9xYy5jb2RlZ2Vhci5jb20vd2MvcWNtYWluLmFz
cHg/ZD03MDk3NyAuCi0vLyBUaGlzIGZpbGUgc2VydmVzIGFzIGEgd29ya2Fyb3VuZC4KLQotI2lu
Y2x1ZGUgInNyYy9ndGVzdC1hbGwuY2MiCisvLyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4N
CisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vDQorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQ0KKy8vIG1ldDoNCisvLw0KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUNCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyDQorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KKy8vIGRpc3RyaWJ1dGlvbi4NCisvLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
DQorLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20NCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKy8vDQorLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0KKy8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
DQorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SDQorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCisvLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCisv
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UDQorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQorLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVA0KKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorLy8NCisvLyBBdXRob3I6
IEpvc2ggS2VsbGV5IChqb3Noa2VsQGdtYWlsLmNvbSkNCisvLw0KKy8vIEdvb2dsZSBDKysgVGVz
dGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQ0KKy8vDQorLy8gQysrQnVpbGRlcidzIElERSBj
YW5ub3QgYnVpbGQgYSBzdGF0aWMgbGlicmFyeSBmcm9tIGZpbGVzIHdpdGggaHlwaGVucw0KKy8v
IGluIHRoZWlyIG5hbWUuICBTZWUgaHR0cDovL3FjLmNvZGVnZWFyLmNvbS93Yy9xY21haW4uYXNw
eD9kPTcwOTc3IC4NCisvLyBUaGlzIGZpbGUgc2VydmVzIGFzIGEgd29ya2Fyb3VuZC4NCisNCisj
aW5jbHVkZSAic3JjL2d0ZXN0LWFsbC5jYyINCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9saW5rLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
Y29kZWdlYXIvZ3Rlc3RfbGluay5jYwppbmRleCBiOTU1ZWJmMmY5MTEwZTYzNTNjNjg3Y2MzOTQy
MzQ4ZGE3OTdjYjUwLi45MThlY2NkMTliN2RhZmEzMmI1MjkzODBiNzA5MjM4YzllM2EzNjJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9saW5rLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NvZGVnZWFyL2d0ZXN0X2xpbmsuY2MKQEAg
LTEsNDAgKzEsNDAgQEAKLS8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1l
dDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0v
LwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLS8vCi0vLyBBdXRob3I6IEpvc2ggS2VsbGV5IChqb3Noa2VsQGdtYWlsLmNvbSkKLS8vCi0v
LyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKLS8vCi0vLyBMaW5r
cyBndGVzdC5saWIgYW5kIGd0ZXN0X21haW4ubGliIGludG8gdGhlIGN1cnJlbnQgcHJvamVjdCBp
biBDKytCdWlsZGVyLgotLy8gVGhpcyBtZWFucyB0aGF0IHRoZXNlIGxpYnJhcmllcyBjYW4ndCBi
ZSByZW5hbWVkLCBidXQgaXQncyB0aGUgb25seSB3YXkgdG8KLS8vIGVuc3VyZSB0aGF0IERlYnVn
IHZlcnN1cyBSZWxlYXNlIHRlc3QgYnVpbGRzIGFyZSBsaW5rZWQgYWdhaW5zdCB0aGUKLS8vIGFw
cHJvcHJpYXRlIERlYnVnIG9yIFJlbGVhc2UgYnVpbGQgb2YgdGhlIGxpYnJhcmllcy4KLQotI3By
YWdtYSBsaW5rICJndGVzdC5saWIiCi0jcHJhZ21hIGxpbmsgImd0ZXN0X21haW4ubGliIgorLy8g
Q29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuDQorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisv
Lw0KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dA0KKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUNCisvLyBtZXQ6DQorLy8NCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodA0KKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4NCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcg0KKy8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUNCisvLyBkaXN0cmlidXRpb24uDQorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cw0KKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tDQorLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCisvLw0K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMNCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0KKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUDQorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVA0KKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0K
Ky8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQ0KKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCisvLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLg0KKy8vDQorLy8gQXV0aG9yOiBKb3NoIEtlbGxleSAoam9zaGtlbEBnbWFpbC5j
b20pDQorLy8NCisvLyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkN
CisvLw0KKy8vIExpbmtzIGd0ZXN0LmxpYiBhbmQgZ3Rlc3RfbWFpbi5saWIgaW50byB0aGUgY3Vy
cmVudCBwcm9qZWN0IGluIEMrK0J1aWxkZXIuDQorLy8gVGhpcyBtZWFucyB0aGF0IHRoZXNlIGxp
YnJhcmllcyBjYW4ndCBiZSByZW5hbWVkLCBidXQgaXQncyB0aGUgb25seSB3YXkgdG8NCisvLyBl
bnN1cmUgdGhhdCBEZWJ1ZyB2ZXJzdXMgUmVsZWFzZSB0ZXN0IGJ1aWxkcyBhcmUgbGlua2VkIGFn
YWluc3QgdGhlDQorLy8gYXBwcm9wcmlhdGUgRGVidWcgb3IgUmVsZWFzZSBidWlsZCBvZiB0aGUg
bGlicmFyaWVzLg0KKw0KKyNwcmFnbWEgbGluayAiZ3Rlc3QubGliIg0KKyNwcmFnbWEgbGluayAi
Z3Rlc3RfbWFpbi5saWIiDQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29u
ZmlndXJlLmFjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29uZmlndXJlLmFjCmluZGV4IDFi
OTEyMzc0NjFlMzlmZjYxYjYzMGYzZTAxOWFkZmVlZWI3ODNhZTYuLjI1NGM4YzRiMzE4ODVkMjU3
MWZhMjMwMGI2MzFlOGJmOWQ5NWFlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2NvbmZpZ3VyZS5hYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb25maWd1cmUu
YWMKQEAgLTUsMTMgKzUsMTQgQEAgbTRfaW5jbHVkZShtNC9hY3hfcHRocmVhZC5tNCkKICMgIlsx
LjAuMV0iKS4gSXQgYWxzbyBhc3VtZXMgdGhhdCB0aGVyZSB3b24ndCBiZSBhbnkgY2xvc2luZyBw
YXJlbnRoZXNpcwogIyBiZXR3ZWVuICJBQ19JTklUKCIgYW5kIHRoZSBjbG9zaW5nICIpIiBpbmNs
dWRpbmcgY29tbWVudHMgYW5kIHN0cmluZ3MuCiBBQ19JTklUKFtHb29nbGUgQysrIFRlc3Rpbmcg
RnJhbWV3b3JrXSwKLSAgICAgICAgWzEuNS4wXSwKKyAgICAgICAgWzEuOC4wXSwKICAgICAgICAg
W2dvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbV0sCiAgICAgICAgIFtndGVzdF0p
CiAKICMgUHJvdmlkZSB2YXJpb3VzIG9wdGlvbnMgdG8gaW5pdGlhbGl6ZSB0aGUgQXV0b2NvbmYg
YW5kIGNvbmZpZ3VyZSBwcm9jZXNzZXMuCiBBQ19QUkVSRVEoWzIuNTldKQotQUNfQ09ORklHX1NS
Q0RJUihbLi9DT1BZSU5HXSkKK0FDX0NPTkZJR19TUkNESVIoWy4vTElDRU5TRV0pCitBQ19DT05G
SUdfTUFDUk9fRElSKFttNF0pCiBBQ19DT05GSUdfQVVYX0RJUihbYnVpbGQtYXV4XSkKIEFDX0NP
TkZJR19IRUFERVJTKFtidWlsZC1hdXgvY29uZmlnLmhdKQogQUNfQ09ORklHX0ZJTEVTKFtNYWtl
ZmlsZV0pCkBAIC01NCw3ICs1NSw3IEBAIEFTX0lGKFt0ZXN0ICJ4JHdpdGhfcHRocmVhZHMiICE9
ICJ4bm8iXSwKICAgICAgICAgICAgICAgIFtBQ19NU0dfRkFJTFVSRSgKICAgICAgICAgICAgICAg
ICAgWy0td2l0aC1wdGhyZWFkcyB3YXMgc3BlY2lmaWVkLCBidXQgdW5hYmxlIHRvIGJlIHVzZWRd
KV0pXSkKICAgICAgICBoYXZlX3B0aHJlYWRzPSIkYWN4X3B0aHJlYWRfb2siXSkKLUFNX0NPTkRJ
VElPTkFMKFtIQVZFX1BUSFJFQURTXSxbdGVzdCAieCRoYXZlX3B0aHJlYWRzIiA9PSAieHllcyJd
KQorQU1fQ09ORElUSU9OQUwoW0hBVkVfUFRIUkVBRFNdLFt0ZXN0ICJ4JGhhdmVfcHRocmVhZHMi
ID0gInh5ZXMiXSkKIEFDX1NVQlNUKFBUSFJFQURfQ0ZMQUdTKQogQUNfU1VCU1QoUFRIUkVBRF9M
SUJTKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1BrZ2NvbmZp
Zy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvUGtnY29uZmlnLm1kCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk3NjEyODk0ZDJhM2M4ZWFkYjQ0MmM1NTg3ODA0ZmI3Nzg1ZWFhNzEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1BrZ2NvbmZpZy5tZApAQCAtMCww
ICsxLDE0NiBAQAorIyMgVXNpbmcgR29vZ2xlVGVzdCBmcm9tIHZhcmlvdXMgYnVpbGQgc3lzdGVt
cyAjIworCitHb29nbGVUZXN0IGNvbWVzIHdpdGggcGtnLWNvbmZpZyBmaWxlcyB0aGF0IGNhbiBi
ZSB1c2VkIHRvIGRldGVybWluZSBhbGwKK25lY2Vzc2FyeSBmbGFncyBmb3IgY29tcGlsaW5nIGFu
ZCBsaW5raW5nIHRvIEdvb2dsZVRlc3QgKGFuZCBHb29nbGVNb2NrKS4KK1BrZy1jb25maWcgaXMg
YSBzdGFuZGFyZGlzZWQgcGxhaW4tdGV4dCBmb3JtYXQgY29udGFpbmluZworCisgICogdGhlIGlu
Y2x1ZGVkaXIgKC1JKSBwYXRoCisgICogbmVjZXNzYXJ5IG1hY3JvICgtRCkgZGVmaW5pdGlvbnMK
KyAgKiBmdXJ0aGVyIHJlcXVpcmVkIGZsYWdzICgtcHRocmVhZCkKKyAgKiB0aGUgbGlicmFyeSAo
LUwpIHBhdGgKKyAgKiB0aGUgbGlicmFyeSAoLWwpIHRvIGxpbmsgdG8KKworQWxsIGN1cnJlbnQg
YnVpbGQgc3lzdGVtcyBzdXBwb3J0IHBrZy1jb25maWcgaW4gb25lIHdheSBvciBhbm90aGVyLiBG
b3IKK2FsbCBleGFtcGxlcyBoZXJlIHdlIGFzc3VtZSB5b3Ugd2FudCB0byBjb21waWxlIHRoZSBz
YW1wbGUKK2BzYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2NgLgorCisKKyMjIyBDTWFrZSAjIyMK
KworVXNpbmcgYHBrZy1jb25maWdgIGluIENNYWtlIGlzIGZhaXJseSBlYXN5OgorCitgYGAKK2Nt
YWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjApCisKK2NtYWtlX3BvbGljeShTRVQgQ01Q
MDA0OCBORVcpCitwcm9qZWN0KG15X2d0ZXN0X3BrZ2NvbmZpZyBWRVJTSU9OIDAuMC4xIExBTkdV
QUdFUyBDWFgpCisKK2ZpbmRfcGFja2FnZShQa2dDb25maWcpCitwa2dfc2VhcmNoX21vZHVsZShH
VEVTVCBSRVFVSVJFRCBndGVzdF9tYWluKQorCithZGRfZXhlY3V0YWJsZSh0ZXN0YXBwIHNhbXBs
ZXMvc2FtcGxlM191bml0dGVzdC5jYykKK3RhcmdldF9saW5rX2xpYnJhcmllcyh0ZXN0YXBwICR7
R1RFU1RfTERGTEFHU30pCit0YXJnZXRfY29tcGlsZV9vcHRpb25zKHRlc3RhcHAgUFVCTElDICR7
R1RFU1RfQ0ZMQUdTfSkKKworaW5jbHVkZShDVGVzdCkKK2FkZF90ZXN0KGZpcnN0X2FuZF9vbmx5
X3Rlc3QgdGVzdGFwcCkKK2BgYAorCitJdCBpcyBnZW5lcmFsbHkgcmVjb21tZW5kZWQgdGhhdCB5
b3UgdXNlIGB0YXJnZXRfY29tcGlsZV9vcHRpb25zYCArIGBfQ0ZMQUdTYAorb3ZlciBgdGFyZ2V0
X2luY2x1ZGVfZGlyZWN0b3JpZXNgICsgYF9JTkNMVURFX0RJUlNgIGFzIHRoZSBmb3JtZXIgaW5j
bHVkZXMgbm90CitqdXN0IC1JIGZsYWdzIChHb29nbGVUZXN0IG1pZ2h0IHJlcXVpcmUgYSBtYWNy
byBpbmRpY2F0aW5nIHRvIGludGVybmFsIGhlYWRlcnMKK3RoYXQgYWxsIGxpYnJhcmllcyBoYXZl
IGJlZW4gY29tcGlsZWQgd2l0aCB0aHJlYWRpbmcgZW5hYmxlZC4gSW4gYWRkaXRpb24sCitHb29n
bGVUZXN0IG1pZ2h0IGFsc28gcmVxdWlyZSBgLXB0aHJlYWRgIGluIHRoZSBjb21waWxpbmcgc3Rl
cCwgYW5kIGFzIHN1Y2gKK3NwbGl0dGluZyB0aGUgcGtnLWNvbmZpZyBgQ2ZsYWdzYCB2YXJpYWJs
ZSBpbnRvIGluY2x1ZGUgZGlycyBhbmQgbWFjcm9zIGZvcgorYHRhcmdldF9jb21waWxlX2RlZmlu
aXRpb25zKClgIG1pZ2h0IHN0aWxsIG1pc3MgdGhpcykuIFRoZSBzYW1lIHJlY29tbWVuZGF0aW9u
Citnb2VzIGZvciB1c2luZyBgX0xERkxBR1NgIG92ZXIgdGhlIG1vcmUgY29tbW9ucGxhY2UgYF9M
SUJSQVJJRVNgLCB3aGljaAoraGFwcGVucyB0byBkaXNjYXJkIGAtTGAgZmxhZ3MgYW5kIGAtcHRo
cmVhZGAuCisKKworIyMjIEF1dG90b29scyAjIyMKKworRmluZGluZyBHb29nbGVUZXN0IGluIEF1
dG9jb25mIGFuZCB1c2luZyBpdCBmcm9tIEF1dG9tYWtlIGlzIGFsc28gZmFpcmx5IGVhc3k6CisK
K0luIHlvdXIgYGNvbmZpZ3VyZS5hY2A6CisKK2BgYAorQUNfUFJFUkVRKFsyLjY5XSkKK0FDX0lO
SVQoW215X2d0ZXN0X3BrZ2NvbmZpZ10sIFswLjAuMV0pCitBQ19DT05GSUdfU1JDRElSKFtzYW1w
bGVzL3NhbXBsZTNfdW5pdHRlc3QuY2NdKQorQUNfUFJPR19DWFgKKworUEtHX0NIRUNLX01PRFVM
RVMoW0dURVNUXSwgW2d0ZXN0X21haW5dKQorCitBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduIHN1
YmRpci1vYmplY3RzXSkKK0FDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGVdKQorQUNfT1VUUFVUCitg
YGAKKworYW5kIGluIHlvdXIgYE1ha2VmaWxlLmFtYDoKKworYGBgCitjaGVja19QUk9HUkFNUyA9
IHRlc3RhcHAKK1RFU1RTID0gJChjaGVja19QUk9HUkFNUykKKwordGVzdGFwcF9TT1VSQ0VTID0g
c2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjCit0ZXN0YXBwX0NYWEZMQUdTID0gJChHVEVTVF9D
RkxBR1MpCit0ZXN0YXBwX0xEQUREID0gJChHVEVTVF9MSUJTKQorYGBgCisKKworIyMjIE1lc29u
ICMjIworCitNZXNvbiBuYXRpdmVseSB1c2VzIHBrZ2NvbmZpZyB0byBxdWVyeSBkZXBlbmRlbmNp
ZXM6CisKK2BgYAorcHJvamVjdCgnbXlfZ3Rlc3RfcGtnY29uZmlnJywgJ2NwcCcsIHZlcnNpb24g
OiAnMC4wLjEnKQorCitndGVzdF9kZXAgPSBkZXBlbmRlbmN5KCdndGVzdF9tYWluJykKKwordGVz
dGFwcCA9IGV4ZWN1dGFibGUoCisgICd0ZXN0YXBwJywKKyAgZmlsZXMoWydzYW1wbGVzL3NhbXBs
ZTNfdW5pdHRlc3QuY2MnXSksCisgIGRlcGVuZGVuY2llcyA6IGd0ZXN0X2RlcCwKKyAgaW5zdGFs
bCA6IGZhbHNlKQorCit0ZXN0KCdmaXJzdF9hbmRfb25seV90ZXN0JywgdGVzdGFwcCkKK2BgYAor
CisKKyMjIyBQbGFpbiBNYWtlZmlsZXMgIyMjCisKK1NpbmNlIGBwa2ctY29uZmlnYCBpcyBhIHNt
YWxsIFVuaXggY29tbWFuZC1saW5lIHV0aWxpdHksIGl0IGNhbiBiZSB1c2VkCitpbiBoYW5kd3Jp
dHRlbiBgTWFrZWZpbGVgcyB0b286CisKK2BgYAorR1RFU1RfQ0ZMQUdTID0gYHBrZy1jb25maWcg
LS1jZmxhZ3MgZ3Rlc3RfbWFpbmAKK0dURVNUX0xJQlMgPSBgcGtnLWNvbmZpZyAtLWxpYnMgZ3Rl
c3RfbWFpbmAKKworLlBIT05ZOiB0ZXN0cyBhbGwKKwordGVzdHM6IGFsbAorCS4vdGVzdGFwcAor
CithbGw6IHRlc3RhcHAKKwordGVzdGFwcDogdGVzdGFwcC5vCisJJChDWFgpICQoQ1hYRkxBR1Mp
ICQoTERGTEFHUykgJDwgLW8gJEAgJChHVEVTVF9MSUJTKQorCit0ZXN0YXBwLm86IHNhbXBsZXMv
c2FtcGxlM191bml0dGVzdC5jYworCSQoQ1hYKSAkKENQUEZMQUdTKSAkKENYWEZMQUdTKSAkPCAt
YyAtbyAkQCAkKEdURVNUX0NGTEFHUykKK2BgYAorCisKKyMjIyBIZWxwISBwa2ctY29uZmlnIGNh
bid0IGZpbmQgR29vZ2xlVGVzdCEgIyMjCisKK0xldCdzIHNheSB5b3UgaGF2ZSBhIGBDTWFrZUxp
c3RzLnR4dGAgYWxvbmcgdGhlIGxpbmVzIG9mIHRoZSBvbmUgaW4gdGhpcwordHV0b3JpYWwgYW5k
IHlvdSB0cnkgdG8gcnVuIGBjbWFrZWAuIEl0IGlzIHZlcnkgcG9zc2libGUgdGhhdCB5b3UgZ2V0
IGEKK2ZhaWx1cmUgYWxvbmcgdGhlIGxpbmVzIG9mOgorCitgYGAKKy0tIENoZWNraW5nIGZvciBv
bmUgb2YgdGhlIG1vZHVsZXMgJ2d0ZXN0X21haW4nCitDTWFrZSBFcnJvciBhdCAvdXNyL3NoYXJl
L2NtYWtlL01vZHVsZXMvRmluZFBrZ0NvbmZpZy5jbWFrZTo2NDAgKG1lc3NhZ2UpOgorICBOb25l
IG9mIHRoZSByZXF1aXJlZCAnZ3Rlc3RfbWFpbicgZm91bmQKK2BgYAorCitUaGVzZSBmYWlsdXJl
cyBhcmUgY29tbW9uIGlmIHlvdSBpbnN0YWxsZWQgR29vZ2xlVGVzdCB5b3Vyc2VsZiBhbmQgaGF2
ZSBub3QKK3NvdXJjZWQgaXQgZnJvbSBhIGRpc3RybyBvciBvdGhlciBwYWNrYWdlIG1hbmFnZXIu
IElmIHNvLCB5b3UgbmVlZCB0byB0ZWxsCitwa2ctY29uZmlnIHdoZXJlIGl0IGNhbiBmaW5kIHRo
ZSBgLnBjYCBmaWxlcyBjb250YWluaW5nIHRoZSBpbmZvcm1hdGlvbi4KK1NheSB5b3UgaW5zdGFs
bGVkIEdvb2dsZVRlc3QgdG8gYC91c3IvbG9jYWxgLCB0aGVuIGl0IG1pZ2h0IGJlIHRoYXQgdGhl
CitgLnBjYCBmaWxlcyBhcmUgaW5zdGFsbGVkIHVuZGVyIGAvdXNyL2xvY2FsL2xpYjY0L3BrZ2Nv
bmZpZ2AuIElmIHlvdSBzZXQKKworYGBgCitleHBvcnQgUEtHX0NPTkZJR19QQVRIPS91c3IvbG9j
YWwvbGliNjQvcGtnY29uZmlnCitgYGAKKworcGtnLWNvbmZpZyB3aWxsIGFsc28gdHJ5IHRvIGxv
b2sgaW4gYFBLR19DT05GSUdfUEFUSGAgdG8gZmluZCBgZ3Rlc3RfbWFpbi5wY2AuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1B1bXBNYW51YWwubWQgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1B1bXBNYW51YWwubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODI3YmIyNGIw
NDJkYzU0M2FmNGM0MDlhZDAzZTE0N2VhNTk0OWI3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvUHVtcE1hbnVhbC5tZApAQCAtMCwwICsxLDE3NyBAQAor
CisKKzxiPlA8L2I+dW1wIGlzIDxiPlU8L2I+c2VmdWwgZm9yIDxiPk08L2I+ZXRhIDxiPlA8L2I+
cm9ncmFtbWluZy4KKworIyBUaGUgUHJvYmxlbSAjCisKK1RlbXBsYXRlIGFuZCBtYWNybyBsaWJy
YXJpZXMgb2Z0ZW4gbmVlZCB0byBkZWZpbmUgbWFueSBjbGFzc2VzLAorZnVuY3Rpb25zLCBvciBt
YWNyb3MgdGhhdCB2YXJ5IG9ubHkgKG9yIGFsbW9zdCBvbmx5KSBpbiB0aGUgbnVtYmVyIG9mCith
cmd1bWVudHMgdGhleSB0YWtlLiBJdCdzIGEgbG90IG9mIHJlcGV0aXRpdmUsIG1lY2hhbmljYWws
IGFuZAorZXJyb3ItcHJvbmUgd29yay4KKworVmFyaWFkaWMgdGVtcGxhdGVzIGFuZCB2YXJpYWRp
YyBtYWNyb3MgY2FuIGFsbGV2aWF0ZSB0aGUgcHJvYmxlbS4KK0hvd2V2ZXIsIHdoaWxlIGJvdGgg
YXJlIGJlaW5nIGNvbnNpZGVyZWQgYnkgdGhlIEMrKyBjb21taXR0ZWUsIG5laXRoZXIKK2lzIGlu
IHRoZSBzdGFuZGFyZCB5ZXQgb3Igd2lkZWx5IHN1cHBvcnRlZCBieSBjb21waWxlcnMuICBUaHVz
IHRoZXkKK2FyZSBvZnRlbiBub3QgYSBnb29kIGNob2ljZSwgZXNwZWNpYWxseSB3aGVuIHlvdXIg
Y29kZSBuZWVkcyB0byBiZQorcG9ydGFibGUuIEFuZCB0aGVpciBjYXBhYmlsaXRpZXMgYXJlIHN0
aWxsIGxpbWl0ZWQuCisKK0FzIGEgcmVzdWx0LCBhdXRob3JzIG9mIHN1Y2ggbGlicmFyaWVzIG9m
dGVuIGhhdmUgdG8gd3JpdGUgc2NyaXB0cyB0bworZ2VuZXJhdGUgdGhlaXIgaW1wbGVtZW50YXRp
b24uIEhvd2V2ZXIsIG91ciBleHBlcmllbmNlIGlzIHRoYXQgaXQncwordGVkaW91cyB0byB3cml0
ZSBzdWNoIHNjcmlwdHMsIHdoaWNoIHRlbmQgdG8gcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mCit0
aGUgZ2VuZXJhdGVkIGNvZGUgcG9vcmx5IGFuZCBhcmUgb2Z0ZW4gaGFyZCB0byByZWFkIGFuZCBl
ZGl0LiBGb3IKK2V4YW1wbGUsIGEgc21hbGwgY2hhbmdlIG5lZWRlZCBpbiB0aGUgZ2VuZXJhdGVk
IGNvZGUgbWF5IHJlcXVpcmUgc29tZQorbm9uLWludHVpdGl2ZSwgbm9uLXRyaXZpYWwgY2hhbmdl
cyBpbiB0aGUgc2NyaXB0LiBUaGlzIGlzIGVzcGVjaWFsbHkKK3BhaW5mdWwgd2hlbiBleHBlcmlt
ZW50aW5nIHdpdGggdGhlIGNvZGUuCisKKyMgT3VyIFNvbHV0aW9uICMKKworUHVtcCAoZm9yIFB1
bXAgaXMgVXNlZnVsIGZvciBNZXRhIFByb2dyYW1taW5nLCBQcmV0dHkgVXNlZnVsIGZvciBNZXRh
CitQcm9ncmFtbWluZywgb3IgUHJhY3RpY2FsIFV0aWxpdHkgZm9yIE1ldGEgUHJvZ3JhbW1pbmcs
IHdoaWNoZXZlciB5b3UKK3ByZWZlcikgaXMgYSBzaW1wbGUgbWV0YS1wcm9ncmFtbWluZyB0b29s
IGZvciBDKysuIFRoZSBpZGVhIGlzIHRoYXQgYQorcHJvZ3JhbW1lciB3cml0ZXMgYSBgZm9vLnB1
bXBgIGZpbGUgd2hpY2ggY29udGFpbnMgQysrIGNvZGUgcGx1cyBtZXRhCitjb2RlIHRoYXQgbWFu
aXB1bGF0ZXMgdGhlIEMrKyBjb2RlLiBUaGUgbWV0YSBjb2RlIGNhbiBoYW5kbGUKK2l0ZXJhdGlv
bnMgb3ZlciBhIHJhbmdlLCBuZXN0ZWQgaXRlcmF0aW9ucywgbG9jYWwgbWV0YSB2YXJpYWJsZQor
ZGVmaW5pdGlvbnMsIHNpbXBsZSBhcml0aG1ldGljLCBhbmQgY29uZGl0aW9uYWwgZXhwcmVzc2lv
bnMuIFlvdSBjYW4KK3ZpZXcgaXQgYXMgYSBzbWFsbCBEb21haW4tU3BlY2lmaWMgTGFuZ3VhZ2Uu
IFRoZSBtZXRhIGxhbmd1YWdlIGlzCitkZXNpZ25lZCB0byBiZSBub24taW50cnVzaXZlIChzLnQu
IGl0IHdvbid0IGNvbmZ1c2UgRW1hY3MnIEMrKyBtb2RlLAorZm9yIGV4YW1wbGUpIGFuZCBjb25j
aXNlLCBtYWtpbmcgUHVtcCBjb2RlIGludHVpdGl2ZSBhbmQgZWFzeSB0bworbWFpbnRhaW4uCisK
KyMjIEhpZ2hsaWdodHMgIyMKKworICAqIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBpbiBhIHNpbmds
ZSBQeXRob24gc2NyaXB0IGFuZCB0aHVzIHVsdHJhIHBvcnRhYmxlOiBubyBidWlsZCBvciBpbnN0
YWxsYXRpb24gaXMgbmVlZGVkIGFuZCBpdCB3b3JrcyBjcm9zcyBwbGF0Zm9ybXMuCisgICogUHVt
cCB0cmllcyB0byBiZSBzbWFydCB3aXRoIHJlc3BlY3QgdG8gW0dvb2dsZSdzIHN0eWxlIGd1aWRl
XShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL3N0eWxlZ3VpZGUpOiBpdCBicmVha3MgbG9uZyBs
aW5lcyAoZWFzeSB0byBoYXZlIHdoZW4gdGhleSBhcmUgZ2VuZXJhdGVkKSBhdCBhY2NlcHRhYmxl
IHBsYWNlcyB0byBmaXQgd2l0aGluIDgwIGNvbHVtbnMgYW5kIGluZGVudCB0aGUgY29udGludWF0
aW9uIGxpbmVzIGNvcnJlY3RseS4KKyAgKiBUaGUgZm9ybWF0IGlzIGh1bWFuLXJlYWRhYmxlIGFu
ZCBtb3JlIGNvbmNpc2UgdGhhbiBYTUwuCisgICogVGhlIGZvcm1hdCB3b3JrcyByZWxhdGl2ZWx5
IHdlbGwgd2l0aCBFbWFjcycgQysrIG1vZGUuCisKKyMjIEV4YW1wbGVzICMjCisKK1RoZSBmb2xs
b3dpbmcgUHVtcCBjb2RlICh3aGVyZSBtZXRhIGtleXdvcmRzIHN0YXJ0IHdpdGggYCRgLCBgW1tg
IGFuZCBgXV1gIGFyZSBtZXRhIGJyYWNrZXRzLCBhbmQgYCQkYCBzdGFydHMgYSBtZXRhIGNvbW1l
bnQgdGhhdCBlbmRzIHdpdGggdGhlIGxpbmUpOgorCitgYGAKKyR2YXIgbiA9IDMgICAgICQkIERl
ZmluZXMgYSBtZXRhIHZhcmlhYmxlIG4uCiskcmFuZ2UgaSAwLi5uICAkJCBEZWNsYXJlcyB0aGUg
cmFuZ2Ugb2YgbWV0YSBpdGVyYXRvciBpIChpbmNsdXNpdmUpLgorJGZvciBpIFtbCisgICAgICAg
ICAgICAgICAkJCBNZXRhIGxvb3AuCisvLyBGb28kaSBkb2VzIGJsYWggZm9yICRpLWFyeSBwcmVk
aWNhdGVzLgorJHJhbmdlIGogMS4uaQordGVtcGxhdGUgPHNpemVfdCBOICRmb3IgaiBbWywgdHlw
ZW5hbWUgQSRqXV0+CitjbGFzcyBGb28kaSB7CiskaWYgaSA9PSAwIFtbCisgIGJsYWggYTsKK11d
ICRlbGlmIGkgPD0gMiBbWworICBibGFoIGI7CitdXSAkZWxzZSBbWworICBibGFoIGM7CitdXQor
fTsKKworXV0KK2BgYAorCit3aWxsIGJlIHRyYW5zbGF0ZWQgYnkgdGhlIFB1bXAgY29tcGlsZXIg
dG86CisKK2BgYAorLy8gRm9vMCBkb2VzIGJsYWggZm9yIDAtYXJ5IHByZWRpY2F0ZXMuCit0ZW1w
bGF0ZSA8c2l6ZV90IE4+CitjbGFzcyBGb28wIHsKKyAgYmxhaCBhOworfTsKKworLy8gRm9vMSBk
b2VzIGJsYWggZm9yIDEtYXJ5IHByZWRpY2F0ZXMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVu
YW1lIEExPgorY2xhc3MgRm9vMSB7CisgIGJsYWggYjsKK307CisKKy8vIEZvbzIgZG9lcyBibGFo
IGZvciAyLWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBBMSwg
dHlwZW5hbWUgQTI+CitjbGFzcyBGb28yIHsKKyAgYmxhaCBiOworfTsKKworLy8gRm9vMyBkb2Vz
IGJsYWggZm9yIDMtYXJ5IHByZWRpY2F0ZXMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1l
IEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTM+CitjbGFzcyBGb28zIHsKKyAgYmxhaCBjOwor
fTsKK2BgYAorCitJbiBhbm90aGVyIGV4YW1wbGUsCisKK2BgYAorJHJhbmdlIGkgMS4ubgorRnVu
YygkZm9yIGkgKyBbW2EkaV1dKTsKKyQkIFRoZSB0ZXh0IGJldHdlZW4gaSBhbmQgW1sgaXMgdGhl
IHNlcGFyYXRvciBiZXR3ZWVuIGl0ZXJhdGlvbnMuCitgYGAKKword2lsbCBnZW5lcmF0ZSBvbmUg
b2YgdGhlIGZvbGxvd2luZyBsaW5lcyAod2l0aG91dCB0aGUgY29tbWVudHMpLCBkZXBlbmRpbmcg
b24gdGhlIHZhbHVlIG9mIGBuYDoKKworYGBgCitGdW5jKCk7ICAgICAgICAgICAgICAvLyBJZiBu
IGlzIDAuCitGdW5jKGExKTsgICAgICAgICAgICAvLyBJZiBuIGlzIDEuCitGdW5jKGExICsgYTIp
OyAgICAgICAvLyBJZiBuIGlzIDIuCitGdW5jKGExICsgYTIgKyBhMyk7ICAvLyBJZiBuIGlzIDMu
CisvLyBBbmQgc28gb24uLi4KK2BgYAorCisjIyBDb25zdHJ1Y3RzICMjCisKK1dlIHN1cHBvcnQg
dGhlIGZvbGxvd2luZyBtZXRhIHByb2dyYW1taW5nIGNvbnN0cnVjdHM6CisKK3wgYCR2YXIgaWQg
PSBleHBgIHwgRGVmaW5lcyBhIG5hbWVkIGNvbnN0YW50IHZhbHVlLiBgJGlkYCBpcyB2YWxpZCB1
dGlsIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgbWV0YSBsZXhpY2FsIGJsb2NrLiB8Cit8Oi0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBg
JHJhbmdlIGlkIGV4cC4uZXhwYCB8IFNldHMgdGhlIHJhbmdlIG9mIGFuIGl0ZXJhdGlvbiB2YXJp
YWJsZSwgd2hpY2ggY2FuIGJlIHJldXNlZCBpbiBtdWx0aXBsZSBsb29wcyBsYXRlci4gICAgICAg
ICAgfAorfCBgJGZvciBpZCBzZXAgW1sgY29kZSBdXWAgfCBJdGVyYXRpb24uIFRoZSByYW5nZSBv
ZiBgaWRgIG11c3QgaGF2ZSBiZWVuIGRlZmluZWQgZWFybGllci4gYCRpZGAgaXMgdmFsaWQgaW4g
YGNvZGVgLiAgICAgICAgIHwKK3wgYCQoJClgICAgICAgICAgIHwgR2VuZXJhdGVzIGEgc2luZ2xl
IGAkYCBjaGFyYWN0ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8Cit8IGAkaWRgICAgICAgICAgICB8IFZhbHVlIG9mIHRoZSBu
YW1lZCBjb25zdGFudCBvciBpdGVyYXRpb24gdmFyaWFibGUuICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgJChleHApYCAgICAgICAgfCBWYWx1ZSBvZiB0
aGUgZXhwcmVzc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYCRpZiBleHAgW1sgY29kZSBdXSBlbHNl
X2JyYW5jaGAgfCBDb25kaXRpb25hbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYFtb
IGNvZGUgXV1gICAgIHwgTWV0YSBsZXhpY2FsIGJsb2NrLiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8
IGBjcHBfY29kZWAgICAgICB8IFJhdyBDKysgY29kZS4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorfCBgJCQgY29tbWVudGAgICAgfCBNZXRhIGNvbW1lbnQuICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKworKipOb3RlOioqIFRvIGdpdmUgdGhlIHVzZXIgc29tZSBmcmVlZG9tIGluIGZvcm1h
dHRpbmcgdGhlIFB1bXAgc291cmNlCitjb2RlLCBQdW1wIGlnbm9yZXMgYSBuZXctbGluZSBjaGFy
YWN0ZXIgaWYgaXQncyByaWdodCBhZnRlciBgJGZvciBmb29gCitvciBuZXh0IHRvIGBbW2Agb3Ig
YF1dYC4gV2l0aG91dCB0aGlzIHJ1bGUgeW91J2xsIG9mdGVuIGJlIGZvcmNlZCB0byB3cml0ZQor
dmVyeSBsb25nIGxpbmVzIHRvIGdldCB0aGUgZGVzaXJlZCBvdXRwdXQuIFRoZXJlZm9yZSBzb21l
dGltZXMgeW91IG1heQorbmVlZCB0byBpbnNlcnQgYW4gZXh0cmEgbmV3LWxpbmUgaW4gc3VjaCBw
bGFjZXMgZm9yIGEgbmV3LWxpbmUgdG8gc2hvdwordXAgaW4geW91ciBvdXRwdXQuCisKKyMjIEdy
YW1tYXIgIyMKKworYGBgCitjb2RlIDo6PSBhdG9taWNfY29kZSoKK2F0b21pY19jb2RlIDo6PSAk
dmFyIGlkID0gZXhwCisgICAgfCAkdmFyIGlkID0gW1sgY29kZSBdXQorICAgIHwgJHJhbmdlIGlk
IGV4cC4uZXhwCisgICAgfCAkZm9yIGlkIHNlcCBbWyBjb2RlIF1dCisgICAgfCAkKCQpCisgICAg
fCAkaWQKKyAgICB8ICQoZXhwKQorICAgIHwgJGlmIGV4cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNo
CisgICAgfCBbWyBjb2RlIF1dCisgICAgfCBjcHBfY29kZQorc2VwIDo6PSBjcHBfY29kZSB8IGVt
cHR5X3N0cmluZworZWxzZV9icmFuY2ggOjo9ICRlbHNlIFtbIGNvZGUgXV0KKyAgICB8ICRlbGlm
IGV4cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNoCisgICAgfCBlbXB0eV9zdHJpbmcKK2V4cCA6Oj0g
c2ltcGxlX2V4cHJlc3Npb25faW5fUHl0aG9uX3N5bnRheAorYGBgCisKKyMjIENvZGUgIyMKKwor
WW91IGNhbiBmaW5kIHRoZSBzb3VyY2UgY29kZSBvZiBQdW1wIGluIFtzY3JpcHRzL3B1bXAucHld
KC4uL3NjcmlwdHMvcHVtcC5weSkuIEl0IGlzIHN0aWxsCit2ZXJ5IHVucG9saXNoZWQgYW5kIGxh
Y2tzIGF1dG9tYXRlZCB0ZXN0cywgYWx0aG91Z2ggaXQgaGFzIGJlZW4KK3N1Y2Nlc3NmdWxseSB1
c2VkIG1hbnkgdGltZXMuIElmIHlvdSBmaW5kIGEgY2hhbmNlIHRvIHVzZSBpdCBpbiB5b3VyCitw
cm9qZWN0LCBwbGVhc2UgbGV0IHVzIGtub3cgd2hhdCB5b3UgdGhpbmshICBXZSBhbHNvIHdlbGNv
bWUgaGVscCBvbgoraW1wcm92aW5nIFB1bXAuCisKKyMjIFJlYWwgRXhhbXBsZXMgIyMKKworWW91
IGNhbiBmaW5kIHJlYWwtd29ybGQgYXBwbGljYXRpb25zIG9mIFB1bXAgaW4gW0dvb2dsZSBUZXN0
XShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvdHJlZS9tYXN0ZXIvZ29vZ2xl
dGVzdCkgYW5kIFtHb29nbGUgTW9ja10oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0
ZXN0L3RyZWUvbWFzdGVyL2dvb2dsZW1vY2spLiBUaGUgc291cmNlIGZpbGUgYGZvby5oLnB1bXBg
IGdlbmVyYXRlcyBgZm9vLmhgLgorCisjIyBUaXBzICMjCisKKyAgKiBJZiBhIG1ldGEgdmFyaWFi
bGUgaXMgZm9sbG93ZWQgYnkgYSBsZXR0ZXIgb3IgZGlnaXQsIHlvdSBjYW4gc2VwYXJhdGUgdGhl
bSB1c2luZyBgW1tdXWAsIHdoaWNoIGluc2VydHMgYW4gZW1wdHkgc3RyaW5nLiBGb3IgZXhhbXBs
ZSBgRm9vJGpbW11dSGVscGVyYCBnZW5lcmF0ZSBgRm9vMUhlbHBlcmAgd2hlbiBgamAgaXMgMS4K
KyAgKiBUbyBhdm9pZCBleHRyYS1sb25nIFB1bXAgc291cmNlIGxpbmVzLCB5b3UgY2FuIGJyZWFr
IGEgbGluZSBhbnl3aGVyZSB5b3Ugd2FudCBieSBpbnNlcnRpbmcgYFtbXV1gIGZvbGxvd2VkIGJ5
IGEgbmV3IGxpbmUuIFNpbmNlIGFueSBuZXctbGluZSBjaGFyYWN0ZXIgbmV4dCB0byBgW1tgIG9y
IGBdXWAgaXMgaWdub3JlZCwgdGhlIGdlbmVyYXRlZCBjb2RlIHdvbid0IGNvbnRhaW4gdGhpcyBu
ZXcgbGluZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvWGNvZGVH
dWlkZS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvWGNvZGVHdWlkZS5tZApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xYzYwYTMzZGFkNDNiYWY5ODM4MWY3YzlmMjBmNjliNTU4YjJhYWQwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9YY29kZUd1aWRlLm1kCkBA
IC0wLDAgKzEsOTMgQEAKKworCitUaGlzIGd1aWRlIHdpbGwgZXhwbGFpbiBob3cgdG8gdXNlIHRo
ZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaW4geW91ciBYY29kZSBwcm9qZWN0cyBvbiBNYWMg
T1MgWC4gVGhpcyB0dXRvcmlhbCBiZWdpbnMgYnkgcXVpY2tseSBleHBsYWluaW5nIHdoYXQgdG8g
ZG8gZm9yIGV4cGVyaWVuY2VkIHVzZXJzLiBBZnRlciB0aGUgcXVpY2sgc3RhcnQsIHRoZSBndWlk
ZSBnb2VzIHByb3ZpZGVzIGFkZGl0aW9uYWwgZXhwbGFuYXRpb24gYWJvdXQgZWFjaCBzdGVwLgor
CisjIFF1aWNrIFN0YXJ0ICMKKworSGVyZSBpcyB0aGUgcXVpY2sgZ3VpZGUgZm9yIHVzaW5nIEdv
b2dsZSBUZXN0IGluIHlvdXIgWGNvZGUgcHJvamVjdC4KKworICAxLiBEb3dubG9hZCB0aGUgc291
cmNlIGZyb20gdGhlIFt3ZWJzaXRlXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRl
c3QpIHVzaW5nIHRoaXMgY29tbWFuZDogYHN2biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVzdC5n
b29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvIGdvb2dsZXRlc3QtcmVhZC1vbmx5YC4KKyAgMS4gT3Bl
biB1cCB0aGUgYGd0ZXN0Lnhjb2RlcHJvamAgaW4gdGhlIGBnb29nbGV0ZXN0LXJlYWQtb25seS94
Y29kZS9gIGRpcmVjdG9yeSBhbmQgYnVpbGQgdGhlIGd0ZXN0LmZyYW1ld29yay4KKyAgMS4gQ3Jl
YXRlIGEgbmV3ICJTaGVsbCBUb29sIiB0YXJnZXQgaW4geW91ciBYY29kZSBwcm9qZWN0IGNhbGxl
ZCBzb21ldGhpbmcgbGlrZSAiVW5pdFRlc3RzIi4KKyAgMS4gQWRkIHRoZSBndGVzdC5mcmFtZXdv
cmsgdG8geW91ciBwcm9qZWN0IGFuZCBhZGQgaXQgdG8gdGhlICJMaW5rIEJpbmFyeSB3aXRoIExp
YnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgIlVuaXRUZXN0cyIuCisgIDEuIEFkZCB5b3VyIHVuaXQg
dGVzdCBzb3VyY2UgY29kZSB0byB0aGUgIkNvbXBpbGUgU291cmNlcyIgYnVpbGQgcGhhc2Ugb2Yg
IlVuaXRUZXN0cyIuCisgIDEuIEVkaXQgdGhlICJVbml0VGVzdHMiIGV4ZWN1dGFibGUgYW5kIGFk
ZCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lZCAiRFlMRFxfRlJBTUVXT1JLXF9QQVRIIiB3
aXRoIGEgdmFsdWUgZXF1YWwgdG8gdGhlIHBhdGggdG8gdGhlIGZyYW1ld29yayBjb250YWluaW5n
IHRoZSBndGVzdC5mcmFtZXdvcmsgcmVsYXRpdmUgdG8gdGhlIGNvbXBpbGVkIGV4ZWN1dGFibGUu
CisgIDEuIEJ1aWxkIGFuZCBHby4KKworVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBmdXJ0aGVyIGV4
cGxhaW4gZWFjaCBvZiB0aGUgc3RlcHMgbGlzdGVkIGFib3ZlIGluIGRlcHRoLCBkZXNjcmliaW5n
IGluIG1vcmUgZGV0YWlsIGhvdyB0byBjb21wbGV0ZSBpdCBpbmNsdWRpbmcgc29tZSB2YXJpYXRp
b25zLgorCisjIEdldCB0aGUgU291cmNlICMKKworQ3VycmVudGx5LCB0aGUgZ3Rlc3QuZnJhbWV3
b3JrIGRpc2N1c3NlZCBoZXJlIGlzbid0IGF2YWlsYWJsZSBpbiBhIHRhZ2dlZCByZWxlYXNlIG9m
IEdvb2dsZSBUZXN0LCBpdCBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgdHJ1bmsuIEFzIGV4cGxh
aW5lZCBhdCB0aGUgR29vZ2xlIFRlc3QgW3NpdGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUv
Z29vZ2xldGVzdCksIHlvdSBjYW4gZ2V0IHRoZSBjb2RlIGZyb20gYW5vbnltb3VzIFNWTiB3aXRo
IHRoaXMgY29tbWFuZDoKKworYGBgCitzdm4gY2hlY2tvdXQgaHR0cDovL2dvb2dsZXRlc3QuZ29v
Z2xlY29kZS5jb20vc3ZuL3RydW5rLyBnb29nbGV0ZXN0LXJlYWQtb25seQorYGBgCisKK0FsdGVy
bmF0aXZlbHksIGlmIHlvdSBhcmUgd29ya2luZyB3aXRoIFN1YnZlcnNpb24gaW4geW91ciBvd24g
Y29kZSBiYXNlLCB5b3UgY2FuIGFkZCBHb29nbGUgVGVzdCBhcyBhbiBleHRlcm5hbCBkZXBlbmRl
bmN5IHRvIHlvdXIgb3duIFN1YnZlcnNpb24gcmVwb3NpdG9yeS4gQnkgZm9sbG93aW5nIHRoaXMg
YXBwcm9hY2gsIGV2ZXJ5b25lIHRoYXQgY2hlY2tzIG91dCB5b3VyIHN2biByZXBvc2l0b3J5IHdp
bGwgYWxzbyByZWNlaXZlIGEgY29weSBvZiBHb29nbGUgVGVzdCAoYSBzcGVjaWZpYyB2ZXJzaW9u
LCBpZiB5b3Ugd2lzaCkgd2l0aG91dCBoYXZpbmcgdG8gY2hlY2sgaXQgb3V0IGV4cGxpY2l0bHku
IFRoaXMgbWFrZXMgdGhlIHNldCB1cCBvZiB5b3VyIHByb2plY3Qgc2ltcGxlciBhbmQgcmVkdWNl
cyB0aGUgY29waWVkIGNvZGUgaW4gdGhlIHJlcG9zaXRvcnkuCisKK1RvIHVzZSBgc3ZuOmV4dGVy
bmFsc2AsIGRlY2lkZSB3aGVyZSB5b3Ugd291bGQgbGlrZSB0byBoYXZlIHRoZSBleHRlcm5hbCBz
b3VyY2UgcmVzaWRlLiBZb3UgbWlnaHQgY2hvb3NlIHRvIHB1dCB0aGUgZXh0ZXJuYWwgc291cmNl
IGluc2lkZSB0aGUgdHJ1bmssIGJlY2F1c2UgeW91IHdhbnQgaXQgdG8gYmUgcGFydCBvZiB0aGUg
YnJhbmNoIHdoZW4geW91IG1ha2UgYSByZWxlYXNlLiBIb3dldmVyLCBrZWVwaW5nIGl0IG91dHNp
ZGUgdGhlIHRydW5rIGluIGEgdmVyc2lvbi10YWdnZWQgZGlyZWN0b3J5IGNhbGxlZCBzb21ldGhp
bmcgbGlrZSBgdGhpcmQtcGFydHkvZ29vZ2xldGVzdC8xLjAuMWAsIGlzIGFub3RoZXIgb3B0aW9u
LiBPbmNlIHRoZSBsb2NhdGlvbiBpcyBlc3RhYmxpc2hlZCwgdXNlIGBzdm4gcHJvcGVkaXQgc3Zu
OmV4dGVybmFscyBfZGlyZWN0b3J5X2AgdG8gc2V0IHRoZSBzdm46ZXh0ZXJuYWxzIHByb3BlcnR5
IG9uIGEgZGlyZWN0b3J5IGluIHlvdXIgcmVwb3NpdG9yeS4gVGhpcyBkaXJlY3Rvcnkgd29uJ3Qg
Y29udGFpbiB0aGUgY29kZSwgYnV0IGJlIGl0cyB2ZXJzaW9uZWQgcGFyZW50IGRpcmVjdG9yeS4K
KworVGhlIGNvbW1hbmQgYHN2biBwcm9wZWRpdGAgd2lsbCBicmluZyB1cCB5b3VyIFN1YnZlcnNp
b24gZWRpdG9yLCBtYWtpbmcgZWRpdGluZyB0aGUgbG9uZywgKHBvdGVudGlhbGx5IG11bHRpLWxp
bmUpIHByb3BlcnR5IHNpbXBsZXIuIFRoaXMgc2FtZSBtZXRob2QgY2FuIGJlIHVzZWQgdG8gY2hl
Y2sgb3V0IGEgdGFnZ2VkIGJyYW5jaCwgYnkgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIFVSTCAoZS5n
LiBgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L3JlbGVhc2VzL3RhZy9yZWxl
YXNlLTEuMC4xYCkuIEFkZGl0aW9uYWxseSwgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgYWxs
b3dzIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgcGFydGljdWxhciByZXZpc2lvbiBvZiB0aGUgdHJ1
bmsgd2l0aCB0aGUgYC1yXyMjX2Agb3B0aW9uIChlLmcuIGBleHRlcm5hbHMvc3JjL2dvb2dsZXRl
c3QgLXI2MCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmtgKS4KKwor
SGVyZSBpcyBhbiBleGFtcGxlIG9mIHVzaW5nIHRoZSBzdm46ZXh0ZXJuYWxzIHByb3BlcnRpZXMg
b24gYSB0cnVuayAocmVhZCB2aWEgYHN2biBwcm9wZ2V0YCkgb2YgYSBwcm9qZWN0LiBUaGlzIHZh
bHVlIGNoZWNrcyBvdXQgYSBjb3B5IG9mIEdvb2dsZSBUZXN0IGludG8gdGhlIGB0cnVuay9leHRl
cm5hbHMvc3JjL2dvb2dsZXRlc3QvYCBkaXJlY3RvcnkuCisKK2BgYAorW0NvbXB1dGVyOnN2bl0g
dXNlciQgc3ZuIHByb3BnZXQgc3ZuOmV4dGVybmFscyB0cnVuaworZXh0ZXJuYWxzL3NyYy9nb29n
bGV0ZXN0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuaworYGBgCisK
KyMgQWRkIHRoZSBGcmFtZXdvcmsgdG8gWW91ciBQcm9qZWN0ICMKKworVGhlIG5leHQgc3RlcCBp
cyB0byBidWlsZCBhbmQgYWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8geW91ciBvd24gcHJvamVj
dC4gVGhpcyBndWlkZSBkZXNjcmliZXMgdHdvIGNvbW1vbiB3YXlzIGJlbG93LgorCisgICogKipP
cHRpb24gMSoqIC0tLSBUaGUgc2ltcGxlc3Qgd2F5IHRvIGFkZCBHb29nbGUgVGVzdCB0byB5b3Vy
IG93biBwcm9qZWN0LCBpcyB0byBvcGVuIGd0ZXN0Lnhjb2RlcHJvaiAoZm91bmQgaW4gdGhlIHhj
b2RlLyBkaXJlY3Rvcnkgb2YgdGhlIEdvb2dsZSBUZXN0IHRydW5rKSBhbmQgYnVpbGQgdGhlIGZy
YW1ld29yayBtYW51YWxseS4gVGhlbiwgYWRkIHRoZSBidWlsdCBmcmFtZXdvcmsgaW50byB5b3Vy
IHByb2plY3QgdXNpbmcgdGhlICJBZGQtPkV4aXN0aW5nIEZyYW1ld29yay4uLiIgZnJvbSB0aGUg
Y29udGV4dCBtZW51IG9yICJQcm9qZWN0LT5BZGQuLi4iIGZyb20gdGhlIG1haW4gbWVudS4gVGhl
IGd0ZXN0LmZyYW1ld29yayBpcyByZWxvY2F0YWJsZSBhbmQgY29udGFpbnMgdGhlIGhlYWRlcnMg
YW5kIG9iamVjdCBjb2RlIHRoYXQgeW91J2xsIG5lZWQgdG8gbWFrZSB0ZXN0cy4gVGhpcyBtZXRo
b2QgcmVxdWlyZXMgcmVidWlsZGluZyBldmVyeSB0aW1lIHlvdSB1cGdyYWRlIEdvb2dsZSBUZXN0
IGluIHlvdXIgcHJvamVjdC4KKyAgKiAqKk9wdGlvbiAyKiogLS0tIElmIHlvdSBhcmUgZ29pbmcg
dG8gYmUgbGl2aW5nIG9mZiB0aGUgdHJ1bmsgb2YgR29vZ2xlIFRlc3QsIGluY29ycG9yYXRpbmcg
aXRzIGxhdGVzdCBmZWF0dXJlcyBpbnRvIHlvdXIgdW5pdCB0ZXN0cyAob3IgYXJlIGEgR29vZ2xl
IFRlc3QgZGV2ZWxvcGVyIHlvdXJzZWxmKS4gWW91J2xsIHdhbnQgdG8gcmVidWlsZCB0aGUgZnJh
bWV3b3JrIGV2ZXJ5IHRpbWUgdGhlIHNvdXJjZSB1cGRhdGVzLiB0byBkbyB0aGlzLCB5b3UnbGwg
bmVlZCB0byBhZGQgdGhlIGd0ZXN0Lnhjb2RlcHJvaiBmaWxlLCBub3QgdGhlIGZyYW1ld29yayBp
dHNlbGYsIHRvIHlvdXIgb3duIFhjb2RlIHByb2plY3QuIFRoZW4sIGZyb20gdGhlIGJ1aWxkIHBy
b2R1Y3RzIHRoYXQgYXJlIHJldmVhbGVkIGJ5IHRoZSBwcm9qZWN0J3MgZGlzY2xvc3VyZSB0cmlh
bmdsZSwgeW91IGNhbiBmaW5kIHRoZSBndGVzdC5mcmFtZXdvcmssIHdoaWNoIGNhbiBiZSBhZGRl
ZCB0byB5b3VyIHRhcmdldHMgKGRpc2N1c3NlZCBiZWxvdykuCisKKyMgTWFrZSBhIFRlc3QgVGFy
Z2V0ICMKKworVG8gc3RhcnQgd3JpdGluZyB0ZXN0cywgbWFrZSBhIG5ldyAiU2hlbGwgVG9vbCIg
dGFyZ2V0LiBUaGlzIHRhcmdldCB0ZW1wbGF0ZSBpcyBhdmFpbGFibGUgdW5kZXIgQlNELCBDb2Nv
YSwgb3IgQ2FyYm9uLiBBZGQgeW91ciB1bml0IHRlc3Qgc291cmNlIGNvZGUgdG8gdGhlICJDb21w
aWxlIFNvdXJjZXMiIGJ1aWxkIHBoYXNlIG9mIHRoZSB0YXJnZXQuCisKK05leHQsIHlvdSdsbCB3
YW50IHRvIGFkZCBndGVzdC5mcmFtZXdvcmsgaW4gdHdvIGRpZmZlcmVudCB3YXlzLCBkZXBlbmRp
bmcgdXBvbiB3aGljaCBvcHRpb24geW91IGNob3NlIGFib3ZlLgorCisgICogKipPcHRpb24gMSoq
IC0tLSBEdXJpbmcgY29tcGlsYXRpb24sIFhjb2RlIHdpbGwgbmVlZCB0byBrbm93IHRoYXQgeW91
IGFyZSBsaW5raW5nIGFnYWluc3QgdGhlIGd0ZXN0LmZyYW1ld29yay4gQWRkIHRoZSBndGVzdC5m
cmFtZXdvcmsgdG8gdGhlICJMaW5rIEJpbmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ug
b2YgeW91ciB0ZXN0IHRhcmdldC4gVGhpcyB3aWxsIGluY2x1ZGUgdGhlIEdvb2dsZSBUZXN0IGhl
YWRlcnMgaW4geW91ciBoZWFkZXIgc2VhcmNoIHBhdGgsIGFuZCB3aWxsIHRlbGwgdGhlIGxpbmtl
ciB3aGVyZSB0byBmaW5kIHRoZSBsaWJyYXJ5LgorICAqICoqT3B0aW9uIDIqKiAtLS0gSWYgeW91
ciB3b3JraW5nIG91dCBvZiB0aGUgdHJ1bmssIHlvdSdsbCBhbHNvIHdhbnQgdG8gYWRkIGd0ZXN0
LmZyYW1ld29yayB0byB5b3VyICJMaW5rIEJpbmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhh
c2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gSW4gYWRkaXRpb24sIHlvdSdsbCAgd2FudCB0byBhZGQg
dGhlIGd0ZXN0LmZyYW1ld29yayBhcyBhIGRlcGVuZGVuY3kgdG8geW91ciB1bml0IHRlc3QgdGFy
Z2V0LiBUaGlzIHdheSwgWGNvZGUgd2lsbCBtYWtlIHN1cmUgdGhhdCBndGVzdC5mcmFtZXdvcmsg
aXMgdXAgdG8gZGF0ZSwgZXZlcnkgdGltZSB5b3VyIGJ1aWxkIHlvdXIgdGFyZ2V0LiBGaW5hbGx5
LCBpZiB5b3UgZG9uJ3Qgc2hhcmUgYnVpbGQgZGlyZWN0b3JpZXMgd2l0aCBHb29nbGUgVGVzdCwg
eW91J2xsIGhhdmUgdG8gY29weSB0aGUgZ3Rlc3QuZnJhbWV3b3JrIGludG8geW91ciBvd24gYnVp
bGQgcHJvZHVjdHMgZGlyZWN0b3J5IHVzaW5nIGEgIlJ1biBTY3JpcHQiIGJ1aWxkIHBoYXNlLgor
CisjIFNldCBVcCB0aGUgRXhlY3V0YWJsZSBSdW4gRW52aXJvbm1lbnQgIworCitTaW5jZSB0aGUg
dW5pdCB0ZXN0IGV4ZWN1dGFibGUgaXMgYSBzaGVsbCB0b29sLCBpdCBkb2Vzbid0IGhhdmUgYSBi
dW5kbGUgd2l0aCBhIGBDb250ZW50cy9GcmFtZXdvcmtzYCBkaXJlY3RvcnksIGluIHdoaWNoIHRv
IHBsYWNlIGd0ZXN0LmZyYW1ld29yay4gSW5zdGVhZCwgdGhlIGR5bmFtaWMgbGlua2VyIG11c3Qg
YmUgdG9sZCBhdCBydW50aW1lIHRvIHNlYXJjaCBmb3IgdGhlIGZyYW1ld29yayBpbiBhbm90aGVy
IGxvY2F0aW9uLiBUaGlzIGNhbiBiZSBhY2NvbXBsaXNoZWQgYnkgc2V0dGluZyB0aGUgIkRZTERc
X0ZSQU1FV09SS1xfUEFUSCIgZW52aXJvbm1lbnQgdmFyaWFibGUgaW4gdGhlICJFZGl0IEFjdGl2
ZSBFeGVjdXRhYmxlIC4uLiIgQXJndW1lbnRzIHRhYiwgdW5kZXIgIlZhcmlhYmxlcyB0byBiZSBz
ZXQgaW4gdGhlIGVudmlyb25tZW50OiIuIFRoZSBwYXRoIGZvciB0aGlzIHZhbHVlIGlzIHRoZSBw
YXRoIChyZWxhdGl2ZSBvciBhYnNvbHV0ZSkgb2YgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRo
ZSBndGVzdC5mcmFtZXdvcmsuCisKK0lmIHlvdSBoYXZlbid0IHNldCB1cCB0aGUgRFlMRFxfRlJB
TUVXT1JLXF9QQVRILCBjb3JyZWN0bHksIHlvdSBtaWdodCBnZXQgYSBtZXNzYWdlIGxpa2UgdGhp
czoKKworYGBgCitbU2Vzc2lvbiBzdGFydGVkIGF0IDIwMDgtMDgtMTUgMDY6MjM6NTcgLTA2MDAu
XQorICBkeWxkOiBMaWJyYXJ5IG5vdCBsb2FkZWQ6IEBsb2FkZXJfcGF0aC8uLi9GcmFtZXdvcmtz
L2d0ZXN0LmZyYW1ld29yay9WZXJzaW9ucy9BL2d0ZXN0CisgICAgUmVmZXJlbmNlZCBmcm9tOiAv
VXNlcnMvdXNlcm5hbWUvRG9jdW1lbnRzL1NhbmRib3gvZ3Rlc3RTYW1wbGUvYnVpbGQvRGVidWcv
V2lkZ2V0RnJhbWV3b3JrVGVzdAorICAgIFJlYXNvbjogaW1hZ2Ugbm90IGZvdW5kCitgYGAKKwor
VG8gY29ycmVjdCB0aGlzIHByb2JsZW0sIGdvIHRvIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmlu
ZyB0aGUgZXhlY3V0YWJsZSBuYW1lZCBpbiAiUmVmZXJlbmNlZCBmcm9tOiIgdmFsdWUgaW4gdGhl
IGVycm9yIG1lc3NhZ2UgYWJvdmUuIFRoZW4sIHdpdGggdGhlIHRlcm1pbmFsIGluIHRoaXMgbG9j
YXRpb24sIGZpbmQgdGhlIHJlbGF0aXZlIHBhdGggdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5n
IHRoZSBndGVzdC5mcmFtZXdvcmsuIFRoYXQgaXMgdGhlIHZhbHVlIHlvdSdsbCBuZWVkIHRvIHNl
dCBhcyB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRILgorCisjIEJ1aWxkIGFuZCBHbyAjCisKK05v
dywgd2hlbiB5b3UgY2xpY2sgIkJ1aWxkIGFuZCBHbyIsIHRoZSB0ZXN0IHdpbGwgYmUgZXhlY3V0
ZWQuIER1bXBpbmcgb3V0IHNvbWV0aGluZyBsaWtlIHRoaXM6CisKK2BgYAorW1Nlc3Npb24gc3Rh
cnRlZCBhdCAyMDA4LTA4LTA2IDA2OjM2OjEzIC0wNjAwLl0KK1s9PT09PT09PT09XSBSdW5uaW5n
IDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZS4KK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZp
cm9ubWVudCBzZXQtdXAuCitbLS0tLS0tLS0tLV0gMiB0ZXN0cyBmcm9tIFdpZGdldEluaXRpYWxp
emVyVGVzdAorWyBSVU4gICAgICBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29uc3RydWN0
b3IKK1sgICAgICAgT0sgXSBXaWRnZXRJbml0aWFsaXplclRlc3QuVGVzdENvbnN0cnVjdG9yCitb
IFJVTiAgICAgIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb252ZXJzaW9uCitbICAgICAg
IE9LIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb252ZXJzaW9uCitbLS0tLS0tLS0tLV0g
R2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCitbPT09PT09PT09PV0gMiB0ZXN0cyBm
cm9tIDEgdGVzdCBjYXNlIHJhbi4KK1sgIFBBU1NFRCAgXSAyIHRlc3RzLgorCitUaGUgRGVidWdn
ZXIgaGFzIGV4aXRlZCB3aXRoIHN0YXR1cyAwLiAgCitgYGAKKworIyBTdW1tYXJ5ICMKKworVW5p
dCB0ZXN0aW5nIGlzIGEgdmFsdWFibGUgd2F5IHRvIGVuc3VyZSB5b3VyIGRhdGEgbW9kZWwgc3Rh
eXMgdmFsaWQgZXZlbiBkdXJpbmcgcmFwaWQgZGV2ZWxvcG1lbnQgb3IgcmVmYWN0b3JpbmcuIFRo
ZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaXMgYSBncmVhdCB1bml0IHRlc3RpbmcgZnJhbWV3
b3JrIGZvciBDIGFuZCBDKysgd2hpY2ggaW50ZWdyYXRlcyB3ZWxsIHdpdGggYW4gWGNvZGUgZGV2
ZWxvcG1lbnQgZW52aXJvbm1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9kb2NzL2FkdmFuY2VkLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9hZHZhbmNl
ZC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44MDY1ZDE5NjIxYThiMzdmYjc4Y2I1ZTBlZDFiODYxOGZlNzYyNWQy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9hZHZhbmNl
ZC5tZApAQCAtMCwwICsxLDI1MjAgQEAKKyMgQWR2YW5jZWQgZ29vZ2xldGVzdCBUb3BpY3MKKwor
CisjIyBJbnRyb2R1Y3Rpb24KKworTm93IHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgW2dvb2dsZXRl
c3QgUHJpbWVyXShwcmltZXIubWQpIGFuZCBsZWFybmVkIGhvdyB0byB3cml0ZQordGVzdHMgdXNp
bmcgZ29vZ2xldGVzdCwgaXQncyB0aW1lIHRvIGxlYXJuIHNvbWUgbmV3IHRyaWNrcy4gVGhpcyBk
b2N1bWVudCB3aWxsCitzaG93IHlvdSBtb3JlIGFzc2VydGlvbnMgYXMgd2VsbCBhcyBob3cgdG8g
Y29uc3RydWN0IGNvbXBsZXggZmFpbHVyZSBtZXNzYWdlcywKK3Byb3BhZ2F0ZSBmYXRhbCBmYWls
dXJlcywgcmV1c2UgYW5kIHNwZWVkIHVwIHlvdXIgdGVzdCBmaXh0dXJlcywgYW5kIHVzZSB2YXJp
b3VzCitmbGFncyB3aXRoIHlvdXIgdGVzdHMuCisKKyMjIE1vcmUgQXNzZXJ0aW9ucworCitUaGlz
IHNlY3Rpb24gY292ZXJzIHNvbWUgbGVzcyBmcmVxdWVudGx5IHVzZWQsIGJ1dCBzdGlsbCBzaWdu
aWZpY2FudCwKK2Fzc2VydGlvbnMuCisKKyMjIyBFeHBsaWNpdCBTdWNjZXNzIGFuZCBGYWlsdXJl
CisKK1RoZXNlIHRocmVlIGFzc2VydGlvbnMgZG8gbm90IGFjdHVhbGx5IHRlc3QgYSB2YWx1ZSBv
ciBleHByZXNzaW9uLiBJbnN0ZWFkLCB0aGV5CitnZW5lcmF0ZSBhIHN1Y2Nlc3Mgb3IgZmFpbHVy
ZSBkaXJlY3RseS4gTGlrZSB0aGUgbWFjcm9zIHRoYXQgYWN0dWFsbHkgcGVyZm9ybSBhCit0ZXN0
LCB5b3UgbWF5IHN0cmVhbSBhIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2UgaW50byB0aGVtLgorCitg
YGBjKysKK1NVQ0NFRUQoKTsKK2BgYAorCitHZW5lcmF0ZXMgYSBzdWNjZXNzLiBUaGlzIGRvZXMg
KipOT1QqKiBtYWtlIHRoZSBvdmVyYWxsIHRlc3Qgc3VjY2VlZC4gQSB0ZXN0IGlzCitjb25zaWRl
cmVkIHN1Y2Nlc3NmdWwgb25seSBpZiBub25lIG9mIGl0cyBhc3NlcnRpb25zIGZhaWwgZHVyaW5n
IGl0cyBleGVjdXRpb24uCisKK05PVEU6IGBTVUNDRUVEKClgIGlzIHB1cmVseSBkb2N1bWVudGFy
eSBhbmQgY3VycmVudGx5IGRvZXNuJ3QgZ2VuZXJhdGUgYW55Cit1c2VyLXZpc2libGUgb3V0cHV0
LiBIb3dldmVyLCB3ZSBtYXkgYWRkIGBTVUNDRUVEKClgIG1lc3NhZ2VzIHRvIGdvb2dsZXRlc3Qn
cworb3V0cHV0IGluIHRoZSBmdXR1cmUuCisKK2BgYGMrKworRkFJTCgpOworQUREX0ZBSUxVUkUo
KTsKK0FERF9GQUlMVVJFX0FUKCJmaWxlX3BhdGgiLCBsaW5lX251bWJlcik7CitgYGAKKworYEZB
SUwoKWAgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSwgd2hpbGUgYEFERF9GQUlMVVJFKClgIGFu
ZCBgQUREX0ZBSUxVUkVfQVQoKWAKK2dlbmVyYXRlIGEgbm9uZmF0YWwgZmFpbHVyZS4gVGhlc2Ug
YXJlIHVzZWZ1bCB3aGVuIGNvbnRyb2wgZmxvdywgcmF0aGVyIHRoYW4gYQorQm9vbGVhbiBleHBy
ZXNzaW9uLCBkZXRlcm1pbmVzIHRoZSB0ZXN0J3Mgc3VjY2VzcyBvciBmYWlsdXJlLiBGb3IgZXhh
bXBsZSwgeW91CittaWdodCB3YW50IHRvIHdyaXRlIHNvbWV0aGluZyBsaWtlOgorCitgYGBjKysK
K3N3aXRjaChleHByZXNzaW9uKSB7CisgIGNhc2UgMToKKyAgICAgLi4uIHNvbWUgY2hlY2tzIC4u
LgorICBjYXNlIDI6CisgICAgIC4uLiBzb21lIG90aGVyIGNoZWNrcyAuLi4KKyAgZGVmYXVsdDoK
KyAgICAgRkFJTCgpIDw8ICJXZSBzaG91bGRuJ3QgZ2V0IGhlcmUuIjsKK30KK2BgYAorCitOT1RF
OiB5b3UgY2FuIG9ubHkgdXNlIGBGQUlMKClgIGluIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBgdm9p
ZGAuIFNlZSB0aGUKK1tBc3NlcnRpb24gUGxhY2VtZW50IHNlY3Rpb25dKCNhc3NlcnRpb24tcGxh
Y2VtZW50KSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgs
IFdpbmRvd3MsIE1hYy4KKworIyMjIEV4Y2VwdGlvbiBBc3NlcnRpb25zCisKK1RoZXNlIGFyZSBm
b3IgdmVyaWZ5aW5nIHRoYXQgYSBwaWVjZSBvZiBjb2RlIHRocm93cyAob3IgZG9lcyBub3QgdGhy
b3cpIGFuCitleGNlcHRpb24gb2YgdGhlIGdpdmVuIHR5cGU6CisKK0ZhdGFsIGFzc2VydGlvbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAgICAgICAg
ICAgICAgICAgICAgICB8IFZlcmlmaWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
fCAtLS0tLS0tLQorYEFTU0VSVF9USFJPVyhzdGF0ZW1lbnQsIGV4Y2VwdGlvbl90eXBlKTtgIHwg
YEVYUEVDVF9USFJPVyhzdGF0ZW1lbnQsIGV4Y2VwdGlvbl90eXBlKTtgIHwgYHN0YXRlbWVudGAg
dGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiB0aGUgZ2l2ZW4gdHlwZQorYEFTU0VSVF9BTllfVEhST1co
c3RhdGVtZW50KTtgICAgICAgICAgICAgIHwgYEVYUEVDVF9BTllfVEhST1coc3RhdGVtZW50KTtg
ICAgICAgICAgICAgIHwgYHN0YXRlbWVudGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiBhbnkgdHlw
ZQorYEFTU0VSVF9OT19USFJPVyhzdGF0ZW1lbnQpO2AgICAgICAgICAgICAgIHwgYEVYUEVDVF9O
T19USFJPVyhzdGF0ZW1lbnQpO2AgICAgICAgICAgICAgIHwgYHN0YXRlbWVudGAgZG9lc24ndCB0
aHJvdyBhbnkgZXhjZXB0aW9uCisKK0V4YW1wbGVzOgorCitgYGBjKysKK0FTU0VSVF9USFJPVyhG
b28oNSksIGJhcl9leGNlcHRpb24pOworCitFWFBFQ1RfTk9fVEhST1coeworICBpbnQgbiA9IDU7
CisgIEJhcigmbik7Cit9KTsKK2BgYAorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93
cywgTWFjOyByZXF1aXJlcyBleGNlcHRpb25zIHRvIGJlIGVuYWJsZWQgaW4gdGhlCitidWlsZCBl
bnZpcm9ubWVudCAobm90ZSB0aGF0IGBnb29nbGUzYCAqKmRpc2FibGVzKiogZXhjZXB0aW9ucyku
CisKKyMjIyBQcmVkaWNhdGUgQXNzZXJ0aW9ucyBmb3IgQmV0dGVyIEVycm9yIE1lc3NhZ2VzCisK
K0V2ZW4gdGhvdWdoIGdvb2dsZXRlc3QgaGFzIGEgcmljaCBzZXQgb2YgYXNzZXJ0aW9ucywgdGhl
eSBjYW4gbmV2ZXIgYmUgY29tcGxldGUsCithcyBpdCdzIGltcG9zc2libGUgKG5vciBhIGdvb2Qg
aWRlYSkgdG8gYW50aWNpcGF0ZSBhbGwgc2NlbmFyaW9zIGEgdXNlciBtaWdodAorcnVuIGludG8u
IFRoZXJlZm9yZSwgc29tZXRpbWVzIGEgdXNlciBoYXMgdG8gdXNlIGBFWFBFQ1RfVFJVRSgpYCB0
byBjaGVjayBhCitjb21wbGV4IGV4cHJlc3Npb24sIGZvciBsYWNrIG9mIGEgYmV0dGVyIG1hY3Jv
LiBUaGlzIGhhcyB0aGUgcHJvYmxlbSBvZiBub3QKK3Nob3dpbmcgeW91IHRoZSB2YWx1ZXMgb2Yg
dGhlIHBhcnRzIG9mIHRoZSBleHByZXNzaW9uLCBtYWtpbmcgaXQgaGFyZCB0bwordW5kZXJzdGFu
ZCB3aGF0IHdlbnQgd3JvbmcuIEFzIGEgd29ya2Fyb3VuZCwgc29tZSB1c2VycyBjaG9vc2UgdG8g
Y29uc3RydWN0IHRoZQorZmFpbHVyZSBtZXNzYWdlIGJ5IHRoZW1zZWx2ZXMsIHN0cmVhbWluZyBp
dCBpbnRvIGBFWFBFQ1RfVFJVRSgpYC4gSG93ZXZlciwgdGhpcworaXMgYXdrd2FyZCBlc3BlY2lh
bGx5IHdoZW4gdGhlIGV4cHJlc3Npb24gaGFzIHNpZGUtZWZmZWN0cyBvciBpcyBleHBlbnNpdmUg
dG8KK2V2YWx1YXRlLgorCitnb29nbGV0ZXN0IGdpdmVzIHlvdSB0aHJlZSBkaWZmZXJlbnQgb3B0
aW9ucyB0byBzb2x2ZSB0aGlzIHByb2JsZW06CisKKyMjIyMgVXNpbmcgYW4gRXhpc3RpbmcgQm9v
bGVhbiBGdW5jdGlvbgorCitJZiB5b3UgYWxyZWFkeSBoYXZlIGEgZnVuY3Rpb24gb3IgZnVuY3Rv
ciB0aGF0IHJldHVybnMgYGJvb2xgIChvciBhIHR5cGUgdGhhdAorY2FuIGJlIGltcGxpY2l0bHkg
Y29udmVydGVkIHRvIGBib29sYCksIHlvdSBjYW4gdXNlIGl0IGluIGEgKnByZWRpY2F0ZQorYXNz
ZXJ0aW9uKiB0byBnZXQgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cyBwcmludGVkIGZvciBmcmVlOgor
Cit8IEZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRp
b24gICAgICAgICAgICAgICAgIHwgVmVyaWZpZXMgICAgICAgICAgICAgICAgICAgIHwKK3wgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAorfCBgQVNTRVJUX1BS
RUQxKHByZWQxLCB2YWwxKTtgICAgICAgIHwgYEVYUEVDVF9QUkVEMShwcmVkMSwgdmFsMSk7YCAg
ICAgICB8IGBwcmVkMSh2YWwxKWAgaXMgdHJ1ZSAgICAgICB8Cit8IGBBU1NFUlRfUFJFRDIocHJl
ZDIsIHZhbDEsIHZhbDIpO2AgfCBgRVhQRUNUX1BSRUQyKHByZWQyLCB2YWwxLCB2YWwyKTtgIHwg
YHByZWQyKHZhbDEsIHZhbDIpYCBpcyB0cnVlIHwKK3wgYC4uLmAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IGAuLi5gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAuLi4gICAg
ICAgICAgICAgICAgICAgICAgICAgfAorCitJbiB0aGUgYWJvdmUsIGBwcmVkbmAgaXMgYW4gYG5g
LWFyeSBwcmVkaWNhdGUgZnVuY3Rpb24gb3IgZnVuY3Rvciwgd2hlcmUgYHZhbDFgLAorYHZhbDJg
LCAuLi4sIGFuZCBgdmFsbmAgYXJlIGl0cyBhcmd1bWVudHMuIFRoZSBhc3NlcnRpb24gc3VjY2Vl
ZHMgaWYgdGhlCitwcmVkaWNhdGUgcmV0dXJucyBgdHJ1ZWAgd2hlbiBhcHBsaWVkIHRvIHRoZSBn
aXZlbiBhcmd1bWVudHMsIGFuZCBmYWlscworb3RoZXJ3aXNlLiBXaGVuIHRoZSBhc3NlcnRpb24g
ZmFpbHMsIGl0IHByaW50cyB0aGUgdmFsdWUgb2YgZWFjaCBhcmd1bWVudC4gSW4KK2VpdGhlciBj
YXNlLCB0aGUgYXJndW1lbnRzIGFyZSBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLgorCitIZXJlJ3Mg
YW4gZXhhbXBsZS4gR2l2ZW4KKworYGBgYysrCisvLyBSZXR1cm5zIHRydWUgaWYgbSBhbmQgbiBo
YXZlIG5vIGNvbW1vbiBkaXZpc29ycyBleGNlcHQgMS4KK2Jvb2wgTXV0dWFsbHlQcmltZShpbnQg
bSwgaW50IG4pIHsgLi4uIH0KKworY29uc3QgaW50IGEgPSAzOworY29uc3QgaW50IGIgPSA0Owor
Y29uc3QgaW50IGMgPSAxMDsKK2BgYAorCit0aGUgYXNzZXJ0aW9uCisKK2BgYGMrKworICBFWFBF
Q1RfUFJFRDIoTXV0dWFsbHlQcmltZSwgYSwgYik7CitgYGAKKword2lsbCBzdWNjZWVkLCB3aGls
ZSB0aGUgYXNzZXJ0aW9uCisKK2BgYGMrKworICBFWFBFQ1RfUFJFRDIoTXV0dWFsbHlQcmltZSwg
YiwgYyk7CitgYGAKKword2lsbCBmYWlsIHdpdGggdGhlIG1lc3NhZ2UKKworYGBgbm9uZQorTXV0
dWFsbHlQcmltZShiLCBjKSBpcyBmYWxzZSwgd2hlcmUKK2IgaXMgNAorYyBpcyAxMAorYGBgCisK
Kz4gTk9URToKKz4KKz4gMS4gIElmIHlvdSBzZWUgYSBjb21waWxlciBlcnJvciAibm8gbWF0Y2hp
bmcgZnVuY3Rpb24gdG8gY2FsbCIgd2hlbiB1c2luZworPiAgICAgYEFTU0VSVF9QUkVEKmAgb3Ig
YEVYUEVDVF9QUkVEKmAsIHBsZWFzZSBzZWUKKz4gICAgIFt0aGlzXShmYXEubWQjT3ZlcmxvYWRl
ZFByZWRpY2F0ZSkgZm9yIGhvdyB0byByZXNvbHZlIGl0LgorPiAxLiAgQ3VycmVudGx5IHdlIG9u
bHkgcHJvdmlkZSBwcmVkaWNhdGUgYXNzZXJ0aW9ucyBvZiBhcml0eSA8PSA1LiBJZiB5b3UgbmVl
ZAorPiAgICAgYSBoaWdoZXItYXJpdHkgYXNzZXJ0aW9uLCBsZXQgW3VzXShodHRwczovL2dpdGh1
Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvaXNzdWVzKSBrbm93LgorCisqKkF2YWlsYWJpbGl0eSoq
OiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMjIFVzaW5nIGEgRnVuY3Rpb24gVGhhdCBSZXR1
cm5zIGFuIEFzc2VydGlvblJlc3VsdAorCitXaGlsZSBgRVhQRUNUX1BSRUQqKClgIGFuZCBmcmll
bmRzIGFyZSBoYW5keSBmb3IgYSBxdWljayBqb2IsIHRoZSBzeW50YXggaXMgbm90CitzYXRpc2Zh
Y3Rvcnk6IHlvdSBoYXZlIHRvIHVzZSBkaWZmZXJlbnQgbWFjcm9zIGZvciBkaWZmZXJlbnQgYXJp
dGllcywgYW5kIGl0CitmZWVscyBtb3JlIGxpa2UgTGlzcCB0aGFuIEMrKy4gVGhlIGA6OnRlc3Rp
bmc6OkFzc2VydGlvblJlc3VsdGAgY2xhc3Mgc29sdmVzCit0aGlzIHByb2JsZW0uCisKK0FuIGBB
c3NlcnRpb25SZXN1bHRgIG9iamVjdCByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYW4gYXNzZXJ0
aW9uICh3aGV0aGVyIGl0J3MKK2Egc3VjY2VzcyBvciBhIGZhaWx1cmUsIGFuZCBhbiBhc3NvY2lh
dGVkIG1lc3NhZ2UpLiBZb3UgY2FuIGNyZWF0ZSBhbgorYEFzc2VydGlvblJlc3VsdGAgdXNpbmcg
b25lIG9mIHRoZXNlIGZhY3RvcnkgZnVuY3Rpb25zOgorCitgYGBjKysKK25hbWVzcGFjZSB0ZXN0
aW5nIHsKKworLy8gUmV0dXJucyBhbiBBc3NlcnRpb25SZXN1bHQgb2JqZWN0IHRvIGluZGljYXRl
IHRoYXQgYW4gYXNzZXJ0aW9uIGhhcworLy8gc3VjY2VlZGVkLgorQXNzZXJ0aW9uUmVzdWx0IEFz
c2VydGlvblN1Y2Nlc3MoKTsKKworLy8gUmV0dXJucyBhbiBBc3NlcnRpb25SZXN1bHQgb2JqZWN0
IHRvIGluZGljYXRlIHRoYXQgYW4gYXNzZXJ0aW9uIGhhcworLy8gZmFpbGVkLgorQXNzZXJ0aW9u
UmVzdWx0IEFzc2VydGlvbkZhaWx1cmUoKTsKKworfQorYGBgCisKK1lvdSBjYW4gdGhlbiB1c2Ug
dGhlIGA8PGAgb3BlcmF0b3IgdG8gc3RyZWFtIG1lc3NhZ2VzIHRvIHRoZSBgQXNzZXJ0aW9uUmVz
dWx0YAorb2JqZWN0LgorCitUbyBwcm92aWRlIG1vcmUgcmVhZGFibGUgbWVzc2FnZXMgaW4gQm9v
bGVhbiBhc3NlcnRpb25zIChlLmcuIGBFWFBFQ1RfVFJVRSgpYCksCit3cml0ZSBhIHByZWRpY2F0
ZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYEFzc2VydGlvblJlc3VsdGAgaW5zdGVhZCBvZiBgYm9v
bGAuIEZvcgorZXhhbXBsZSwgaWYgeW91IGRlZmluZSBgSXNFdmVuKClgIGFzOgorCitgYGBjKysK
Kzo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IElzRXZlbihpbnQgbikgeworICBpZiAoKG4gJSAy
KSA9PSAwKQorICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CisgIGVs
c2UKKyAgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG4gPDwgIiBp
cyBvZGQiOworfQorYGBgCisKK2luc3RlYWQgb2Y6CisKK2BgYGMrKworYm9vbCBJc0V2ZW4oaW50
IG4pIHsKKyAgcmV0dXJuIChuICUgMikgPT0gMDsKK30KK2BgYAorCit0aGUgZmFpbGVkIGFzc2Vy
dGlvbiBgRVhQRUNUX1RSVUUoSXNFdmVuKEZpYig0KSkpYCB3aWxsIHByaW50OgorCitgYGBub25l
CitWYWx1ZSBvZjogSXNFdmVuKEZpYig0KSkKKyAgQWN0dWFsOiBmYWxzZSAoMyBpcyBvZGQpCitF
eHBlY3RlZDogdHJ1ZQorYGBgCisKK2luc3RlYWQgb2YgYSBtb3JlIG9wYXF1ZQorCitgYGBub25l
CitWYWx1ZSBvZjogSXNFdmVuKEZpYig0KSkKKyAgQWN0dWFsOiBmYWxzZQorRXhwZWN0ZWQ6IHRy
dWUKK2BgYAorCitJZiB5b3Ugd2FudCBpbmZvcm1hdGl2ZSBtZXNzYWdlcyBpbiBgRVhQRUNUX0ZB
TFNFYCBhbmQgYEFTU0VSVF9GQUxTRWAgYXMgd2VsbAorKG9uZSB0aGlyZCBvZiBCb29sZWFuIGFz
c2VydGlvbnMgaW4gdGhlIEdvb2dsZSBjb2RlIGJhc2UgYXJlIG5lZ2F0aXZlIG9uZXMpLCBhbmQK
K2FyZSBmaW5lIHdpdGggbWFraW5nIHRoZSBwcmVkaWNhdGUgc2xvd2VyIGluIHRoZSBzdWNjZXNz
IGNhc2UsIHlvdSBjYW4gc3VwcGx5IGEKK3N1Y2Nlc3MgbWVzc2FnZToKKworYGBgYysrCis6OnRl
c3Rpbmc6OkFzc2VydGlvblJlc3VsdCBJc0V2ZW4oaW50IG4pIHsKKyAgaWYgKChuICUgMikgPT0g
MCkKKyAgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpIDw8IG4gPDwgIiBp
cyBldmVuIjsKKyAgZWxzZQorICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJl
KCkgPDwgbiA8PCAiIGlzIG9kZCI7Cit9CitgYGAKKworVGhlbiB0aGUgc3RhdGVtZW50IGBFWFBF
Q1RfRkFMU0UoSXNFdmVuKEZpYig2KSkpYCB3aWxsIHByaW50CisKK2BgYG5vbmUKKyAgVmFsdWUg
b2Y6IElzRXZlbihGaWIoNikpCisgICAgIEFjdHVhbDogdHJ1ZSAoOCBpcyBldmVuKQorICBFeHBl
Y3RlZDogZmFsc2UKK2BgYAorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFj
LgorCisjIyMjIFVzaW5nIGEgUHJlZGljYXRlLUZvcm1hdHRlcgorCitJZiB5b3UgZmluZCB0aGUg
ZGVmYXVsdCBtZXNzYWdlIGdlbmVyYXRlZCBieSBgKEFTU0VSVHxFWFBFQ1QpX1BSRUQqYCBhbmQK
K2AoQVNTRVJUfEVYUEVDVClfKFRSVUV8RkFMU0UpYCB1bnNhdGlzZmFjdG9yeSwgb3Igc29tZSBh
cmd1bWVudHMgdG8geW91cgorcHJlZGljYXRlIGRvIG5vdCBzdXBwb3J0IHN0cmVhbWluZyB0byBg
b3N0cmVhbWAsIHlvdSBjYW4gaW5zdGVhZCB1c2UgdGhlCitmb2xsb3dpbmcgKnByZWRpY2F0ZS1m
b3JtYXR0ZXIgYXNzZXJ0aW9ucyogdG8gKmZ1bGx5KiBjdXN0b21pemUgaG93IHRoZSBtZXNzYWdl
CitpcyBmb3JtYXR0ZWQ6CisKK0ZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IFZlcmlmaWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gfCAtLS0tLS0tLQorYEFTU0VSVF9QUkVEX0ZPUk1BVDEocHJlZF9mb3JtYXQxLCB2YWwxKTtg
ICAgICAgIHwgYEVYUEVDVF9QUkVEX0ZPUk1BVDEocHJlZF9mb3JtYXQxLCB2YWwxKTtgICAgICAg
IHwgYHByZWRfZm9ybWF0MSh2YWwxKWAgaXMgc3VjY2Vzc2Z1bAorYEFTU0VSVF9QUkVEX0ZPUk1B
VDIocHJlZF9mb3JtYXQyLCB2YWwxLCB2YWwyKTtgIHwgYEVYUEVDVF9QUkVEX0ZPUk1BVDIocHJl
ZF9mb3JtYXQyLCB2YWwxLCB2YWwyKTtgIHwgYHByZWRfZm9ybWF0Mih2YWwxLCB2YWwyKWAgaXMg
c3VjY2Vzc2Z1bAorYC4uLmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgYC4uLmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
Li4uCisKK1RoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBhbmQgdGhlIHByZXZpb3VzIGdyb3Vw
IG9mIG1hY3JvcyBpcyB0aGF0IGluc3RlYWQgb2YKK2EgcHJlZGljYXRlLCBgKEFTU0VSVHxFWFBF
Q1QpX1BSRURfRk9STUFUKmAgdGFrZSBhICpwcmVkaWNhdGUtZm9ybWF0dGVyKgorKGBwcmVkX2Zv
cm1hdG5gKSwgd2hpY2ggaXMgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHdpdGggdGhlIHNpZ25hdHVy
ZToKKworYGBgYysrCis6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkaWNhdGVGb3JtYXR0
ZXJuKGNvbnN0IGNoYXIqIGV4cHIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHByMiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cHJuLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUMSB2YWwxLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUMiB2YWwyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVG4gdmFsbik7CitgYGAKKword2hlcmUgYHZhbDFgLCBg
dmFsMmAsIC4uLiwgYW5kIGB2YWxuYCBhcmUgdGhlIHZhbHVlcyBvZiB0aGUgcHJlZGljYXRlIGFy
Z3VtZW50cywKK2FuZCBgZXhwcjFgLCBgZXhwcjJgLCAuLi4sIGFuZCBgZXhwcm5gIGFyZSB0aGUg
Y29ycmVzcG9uZGluZyBleHByZXNzaW9ucyBhcyB0aGV5CithcHBlYXIgaW4gdGhlIHNvdXJjZSBj
b2RlLiBUaGUgdHlwZXMgYFQxYCwgYFQyYCwgLi4uLCBhbmQgYFRuYCBjYW4gYmUgZWl0aGVyCit2
YWx1ZSB0eXBlcyBvciByZWZlcmVuY2UgdHlwZXMuIEZvciBleGFtcGxlLCBpZiBhbiBhcmd1bWVu
dCBoYXMgdHlwZSBgRm9vYCwgeW91CitjYW4gZGVjbGFyZSBpdCBhcyBlaXRoZXIgYEZvb2Agb3Ig
YGNvbnN0IEZvbyZgLCB3aGljaGV2ZXIgaXMgYXBwcm9wcmlhdGUuCisKK0FzIGFuIGV4YW1wbGUs
IGxldCdzIGltcHJvdmUgdGhlIGZhaWx1cmUgbWVzc2FnZSBpbiBgTXV0dWFsbHlQcmltZSgpYCwg
d2hpY2ggd2FzCit1c2VkIHdpdGggYEVYUEVDVF9QUkVEMigpYDoKKworYGBgYysrCisvLyBSZXR1
cm5zIHRoZSBzbWFsbGVzdCBwcmltZSBjb21tb24gZGl2aXNvciBvZiBtIGFuZCBuLAorLy8gb3Ig
MSB3aGVuIG0gYW5kIG4gYXJlIG11dHVhbGx5IHByaW1lLgoraW50IFNtYWxsZXN0UHJpbWVDb21t
b25EaXZpc29yKGludCBtLCBpbnQgbikgeyAuLi4gfQorCisvLyBBIHByZWRpY2F0ZS1mb3JtYXR0
ZXIgZm9yIGFzc2VydGluZyB0aGF0IHR3byBpbnRlZ2VycyBhcmUgbXV0dWFsbHkgcHJpbWUuCis6
OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBBc3NlcnRNdXR1YWxseVByaW1lKGNvbnN0IGNoYXIq
IG1fZXhwciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogbl9leHByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IG4pIHsKKyAgaWYgKE11dHVhbGx5UHJpbWUobSwgbikpIHJldHVybiA6OnRl
c3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKKworICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRp
b25GYWlsdXJlKCkgPDwgbV9leHByIDw8ICIgYW5kICIgPDwgbl9leHByCisgICAgICA8PCAiICgi
IDw8IG0gPDwgIiBhbmQgIiA8PCBuIDw8ICIpIGFyZSBub3QgbXV0dWFsbHkgcHJpbWUsICIKKyAg
ICAgIDw8ICJhcyB0aGV5IGhhdmUgYSBjb21tb24gZGl2aXNvciAiIDw8IFNtYWxsZXN0UHJpbWVD
b21tb25EaXZpc29yKG0sIG4pOworfQorYGBgCisKK1dpdGggdGhpcyBwcmVkaWNhdGUtZm9ybWF0
dGVyLCB3ZSBjYW4gdXNlCisKK2BgYGMrKworICBFWFBFQ1RfUFJFRF9GT1JNQVQyKEFzc2VydE11
dHVhbGx5UHJpbWUsIGIsIGMpOworYGBgCisKK3RvIGdlbmVyYXRlIHRoZSBtZXNzYWdlCisKK2Bg
YG5vbmUKK2IgYW5kIGMgKDQgYW5kIDEwKSBhcmUgbm90IG11dHVhbGx5IHByaW1lLCBhcyB0aGV5
IGhhdmUgYSBjb21tb24gZGl2aXNvciAyLgorYGBgCisKK0FzIHlvdSBtYXkgaGF2ZSByZWFsaXpl
ZCwgbWFueSBvZiB0aGUgYnVpbHQtaW4gYXNzZXJ0aW9ucyB3ZSBpbnRyb2R1Y2VkIGVhcmxpZXIK
K2FyZSBzcGVjaWFsIGNhc2VzIG9mIGAoRVhQRUNUfEFTU0VSVClfUFJFRF9GT1JNQVQqYC4gSW4g
ZmFjdCwgbW9zdCBvZiB0aGVtIGFyZQoraW5kZWVkIGRlZmluZWQgdXNpbmcgYChFWFBFQ1R8QVNT
RVJUKV9QUkVEX0ZPUk1BVCpgLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywg
TWFjLgorCisjIyMgRmxvYXRpbmctUG9pbnQgQ29tcGFyaXNvbgorCitDb21wYXJpbmcgZmxvYXRp
bmctcG9pbnQgbnVtYmVycyBpcyB0cmlja3kuIER1ZSB0byByb3VuZC1vZmYgZXJyb3JzLCBpdCBp
cyB2ZXJ5Cit1bmxpa2VseSB0aGF0IHR3byBmbG9hdGluZy1wb2ludHMgd2lsbCBtYXRjaCBleGFj
dGx5LiBUaGVyZWZvcmUsIGBBU1NFUlRfRVFgICdzCituYWl2ZSBjb21wYXJpc29uIHVzdWFsbHkg
ZG9lc24ndCB3b3JrLiBBbmQgc2luY2UgZmxvYXRpbmctcG9pbnRzIGNhbiBoYXZlIGEgd2lkZQor
dmFsdWUgcmFuZ2UsIG5vIHNpbmdsZSBmaXhlZCBlcnJvciBib3VuZCB3b3Jrcy4gSXQncyBiZXR0
ZXIgdG8gY29tcGFyZSBieSBhCitmaXhlZCByZWxhdGl2ZSBlcnJvciBib3VuZCwgZXhjZXB0IGZv
ciB2YWx1ZXMgY2xvc2UgdG8gMCBkdWUgdG8gdGhlIGxvc3Mgb2YKK3ByZWNpc2lvbiB0aGVyZS4K
KworSW4gZ2VuZXJhbCwgZm9yIGZsb2F0aW5nLXBvaW50IGNvbXBhcmlzb24gdG8gbWFrZSBzZW5z
ZSwgdGhlIHVzZXIgbmVlZHMgdG8KK2NhcmVmdWxseSBjaG9vc2UgdGhlIGVycm9yIGJvdW5kLiBJ
ZiB0aGV5IGRvbid0IHdhbnQgb3IgY2FyZSB0bywgY29tcGFyaW5nIGluCit0ZXJtcyBvZiBVbml0
cyBpbiB0aGUgTGFzdCBQbGFjZSAoVUxQcykgaXMgYSBnb29kIGRlZmF1bHQsIGFuZCBnb29nbGV0
ZXN0Citwcm92aWRlcyBhc3NlcnRpb25zIHRvIGRvIHRoaXMuIEZ1bGwgZGV0YWlscyBhYm91dCBV
TFBzIGFyZSBxdWl0ZSBsb25nOyBpZiB5b3UKK3dhbnQgdG8gbGVhcm4gbW9yZSwgc2VlCitbaGVy
ZV0oaHR0cHM6Ly9yYW5kb21hc2NpaS53b3JkcHJlc3MuY29tLzIwMTIvMDIvMjUvY29tcGFyaW5n
LWZsb2F0aW5nLXBvaW50LW51bWJlcnMtMjAxMi1lZGl0aW9uLykuCisKKyMjIyMgRmxvYXRpbmct
UG9pbnQgTWFjcm9zCisKK3wgRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICB8IE5vbmZh
dGFsIGFzc2VydGlvbiAgICAgICAgICAgICB8IFZlcmlmaWVzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSB8Cit8IGBBU1NFUlRfRkxPQVRfRVEodmFsMSwgdmFsMik7YCAgfCBgRVhQRUNU
X0ZMT0FUX0VRKHZhbDEsdmFsMik7YCAgfCB0aGUgdHdvIGBmbG9hdGAgdmFsdWVzIGFyZSBhbG1v
c3QgZXF1YWwgIHwKK3wgYEFTU0VSVF9ET1VCTEVfRVEodmFsMSwgdmFsMik7YCB8IGBFWFBFQ1Rf
RE9VQkxFX0VRKHZhbDEsIHZhbDIpO2B8IHRoZSB0d28gYGRvdWJsZWAgdmFsdWVzIGFyZSBhbG1v
c3QgZXF1YWwgfAorCitCeSAiYWxtb3N0IGVxdWFsIiB3ZSBtZWFuIHRoZSB2YWx1ZXMgYXJlIHdp
dGhpbiA0IFVMUCdzIGZyb20gZWFjaCBvdGhlci4KKworTk9URTogYENIRUNLX0RPVUJMRV9FUSgp
YCBpbiBgYmFzZS9sb2dnaW5nLmhgIHVzZXMgYSBmaXhlZCBhYnNvbHV0ZSBlcnJvciBib3VuZCwK
K3NvIGl0cyByZXN1bHQgbWF5IGRpZmZlciBmcm9tIHRoYXQgb2YgdGhlIGdvb2dsZXRlc3QgbWFj
cm9zLiBUaGF0IG1hY3JvIGlzCit1bnNhZmUgYW5kIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFBsZWFz
ZSBkb24ndCB1c2UgaXQgYW55IG1vcmUuCisKK1RoZSBmb2xsb3dpbmcgYXNzZXJ0aW9ucyBhbGxv
dyB5b3UgdG8gY2hvb3NlIHRoZSBhY2NlcHRhYmxlIGVycm9yIGJvdW5kOgorCit8IEZhdGFsIGFz
c2VydGlvbiAgICAgICAgICAgICAgICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAg
ICAgICAgICAgICAgIHwgVmVyaWZpZXMgICAgICAgICAgICAgICAgICB8Cit8IC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8Cit8IGBBU1NFUlRfTkVBUih2
YWwxLCB2YWwyLCBhYnNfZXJyb3IpO2AgfCBgRVhQRUNUX05FQVIodmFsMSwgdmFsMiwgYWJzX2Vy
cm9yKTtgIHwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBgdmFsMWAgYW5kIGB2YWwyYCBkb2Vzbid0
IGV4Y2VlZCB0aGUgZ2l2ZW4gYWJzb2x1dGUgZXJyb3IgfAorCisqKkF2YWlsYWJpbGl0eSoqOiBM
aW51eCwgV2luZG93cywgTWFjLgorCisjIyMjIEZsb2F0aW5nLVBvaW50IFByZWRpY2F0ZS1Gb3Jt
YXQgRnVuY3Rpb25zCisKK1NvbWUgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyBhcmUgdXNlZnVs
LCBidXQgbm90IHRoYXQgb2Z0ZW4gdXNlZC4gSW4gb3JkZXIgdG8KK2F2b2lkIGFuIGV4cGxvc2lv
biBvZiBuZXcgbWFjcm9zLCB3ZSBwcm92aWRlIHRoZW0gYXMgcHJlZGljYXRlLWZvcm1hdCBmdW5j
dGlvbnMKK3RoYXQgY2FuIGJlIHVzZWQgaW4gcHJlZGljYXRlIGFzc2VydGlvbiBtYWNyb3MgKGUu
Zy4gYEVYUEVDVF9QUkVEX0ZPUk1BVDJgLAorZXRjKS4KKworYGBgYysrCitFWFBFQ1RfUFJFRF9G
T1JNQVQyKDo6dGVzdGluZzo6RmxvYXRMRSwgdmFsMSwgdmFsMik7CitFWFBFQ1RfUFJFRF9GT1JN
QVQyKDo6dGVzdGluZzo6RG91YmxlTEUsIHZhbDEsIHZhbDIpOworYGBgCisKK1ZlcmlmaWVzIHRo
YXQgYHZhbDFgIGlzIGxlc3MgdGhhbiwgb3IgYWxtb3N0IGVxdWFsIHRvLCBgdmFsMmAuIFlvdSBj
YW4gcmVwbGFjZQorYEVYUEVDVF9QUkVEX0ZPUk1BVDJgIGluIHRoZSBhYm92ZSB0YWJsZSB3aXRo
IGBBU1NFUlRfUFJFRF9GT1JNQVQyYC4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRv
d3MsIE1hYy4KKworIyMjIEFzc2VydGluZyBVc2luZyBnTW9jayBNYXRjaGVycworCitHb29nbGUt
ZGV2ZWxvcGVkIEMrKyBtb2NraW5nIGZyYW1ld29yayBbZ01vY2tdKC4uLy4uL2dvb2dsZW1vY2sp
IGNvbWVzIHdpdGggYQorbGlicmFyeSBvZiBtYXRjaGVycyBmb3IgdmFsaWRhdGluZyBhcmd1bWVu
dHMgcGFzc2VkIHRvIG1vY2sgb2JqZWN0cy4gQSBnTW9jaworKm1hdGNoZXIqIGlzIGJhc2ljYWxs
eSBhIHByZWRpY2F0ZSB0aGF0IGtub3dzIGhvdyB0byBkZXNjcmliZSBpdHNlbGYuIEl0IGNhbiBi
ZQordXNlZCBpbiB0aGVzZSBhc3NlcnRpb24gbWFjcm9zOgorCit8IEZhdGFsIGFzc2VydGlvbiAg
ICAgICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICB8IFZlcmlmaWVz
ICAgICAgICAgICAgICB8Cit8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8Cit8IGBB
U1NFUlRfVEhBVCh2YWx1ZSwgbWF0Y2hlcik7YCB8IGBFWFBFQ1RfVEhBVCh2YWx1ZSwgbWF0Y2hl
cik7YCB8IHZhbHVlIG1hdGNoZXMgbWF0Y2hlciB8CisKK0ZvciBleGFtcGxlLCBgU3RhcnRzV2l0
aChwcmVmaXgpYCBpcyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgc3RyaW5nIHN0YXJ0aW5nCit3
aXRoIGBwcmVmaXhgLCBhbmQgeW91IGNhbiB3cml0ZToKKworYGBgYysrCit1c2luZyA6OnRlc3Rp
bmc6OlN0YXJ0c1dpdGg7CisuLi4KKyAgICAvLyBWZXJpZmllcyB0aGF0IEZvbygpIHJldHVybnMg
YSBzdHJpbmcgc3RhcnRpbmcgd2l0aCAiSGVsbG8iLgorICAgIEVYUEVDVF9USEFUKEZvbygpLCBT
dGFydHNXaXRoKCJIZWxsbyIpKTsKK2BgYAorCitSZWFkIHRoaXMgW3JlY2lwZV0oLi4vLi4vZ29v
Z2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3VzaW5nLW1hdGNoZXJzLWluLWdvb2dsZS10ZXN0LWFz
c2VydGlvbnMpIGluCit0aGUgZ01vY2sgQ29va2Jvb2sgZm9yIG1vcmUgZGV0YWlscy4KKworZ01v
Y2sgaGFzIGEgcmljaCBzZXQgb2YgbWF0Y2hlcnMuIFlvdSBjYW4gZG8gbWFueSB0aGluZ3MgZ29v
Z2xldGVzdCBjYW5ub3QgZG8KK2Fsb25lIHdpdGggdGhlbS4gRm9yIGEgbGlzdCBvZiBtYXRjaGVy
cyBnTW9jayBwcm92aWRlcywgcmVhZAorW3RoaXNdKC4uLy4uL2dvb2dsZW1vY2svZG9jcy9Db29r
Qm9vay5tZCN1c2luZy1tYXRjaGVycykuIEVzcGVjaWFsbHkgdXNlZnVsIGFtb25nIHRoZW0gYXJl
Citzb21lIFtwcm90b2NvbCBidWZmZXIgbWF0Y2hlcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29n
bGUvbnVjbGV1cy9ibG9iL21hc3Rlci9udWNsZXVzL3Rlc3RpbmcvcHJvdG9jb2wtYnVmZmVyLW1h
dGNoZXJzLmgpLiBJdCdzIGVhc3kgdG8gd3JpdGUKK3lvdXIgW293biBtYXRjaGVyc10oLi4vLi4v
Z29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3dyaXRpbmctbmV3LW1hdGNoZXJzLXF1aWNrbHkp
IHRvby4KKworRm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIGdNb2NrJ3MKK1tFcXVhbHNQcm90b10o
aHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9udWNsZXVzL2Jsb2IvbWFzdGVyL251Y2xldXMvdGVz
dGluZy9wcm90b2NvbC1idWZmZXItbWF0Y2hlcnMuaCkKK3RvIGNvbXBhcmUgcHJvdG9zIGluIHlv
dXIgdGVzdHM6CisKK2BgYGMrKworI2luY2x1ZGUgInRlc3RpbmcvYmFzZS9wdWJsaWMvZ21vY2su
aCIKK3VzaW5nIDo6dGVzdGluZzo6RXF1YWxzUHJvdG87CisuLi4KKyAgICBFWFBFQ1RfVEhBVChh
Y3R1YWxfcHJvdG8sIEVxdWFsc1Byb3RvKCJmb286IDEyMyBiYXI6ICd4eXonIikpOworICAgIEVY
UEVDVF9USEFUKCphY3R1YWxfcHJvdG9fcHRyLCBFcXVhbHNQcm90byhleHBlY3RlZF9wcm90bykp
OworYGBgCisKK2dNb2NrIGlzIGJ1bmRsZWQgd2l0aCBnb29nbGV0ZXN0LCBzbyB5b3UgZG9uJ3Qg
bmVlZCB0byBhZGQgYW55IGJ1aWxkIGRlcGVuZGVuY3kKK2luIG9yZGVyIHRvIHRha2UgYWR2YW50
YWdlIG9mIHRoaXMuIEp1c3QgaW5jbHVkZSBgInRlc3RpbmcvYmFzZS9wdWJsaWMvZ21vY2suaCJg
CithbmQgeW91J3JlIHJlYWR5IHRvIGdvLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2lu
ZG93cywgYW5kIE1hYy4KKworIyMjIE1vcmUgU3RyaW5nIEFzc2VydGlvbnMKKworKFBsZWFzZSBy
ZWFkIHRoZSBbcHJldmlvdXNdKCNBc3NlcnRUaGF0KSBzZWN0aW9uIGZpcnN0IGlmIHlvdSBoYXZl
bid0LikKKworWW91IGNhbiB1c2UgdGhlIGdNb2NrIFtzdHJpbmcgbWF0Y2hlcnNdKC4uLy4uL2dv
b2dsZW1vY2svZG9jcy9DaGVhdFNoZWV0Lm1kI3N0cmluZy1tYXRjaGVycykKK3dpdGggYEVYUEVD
VF9USEFUKClgIG9yIGBBU1NFUlRfVEhBVCgpYCB0byBkbyBtb3JlIHN0cmluZyBjb21wYXJpc29u
IHRyaWNrcworKHN1Yi1zdHJpbmcsIHByZWZpeCwgc3VmZml4LCByZWd1bGFyIGV4cHJlc3Npb24s
IGFuZCBldGMpLiBGb3IgZXhhbXBsZSwKKworYGBgYysrCit1c2luZyA6OnRlc3Rpbmc6Okhhc1N1
YnN0cjsKK3VzaW5nIDo6dGVzdGluZzo6TWF0Y2hlc1JlZ2V4OworLi4uCisgIEFTU0VSVF9USEFU
KGZvb19zdHJpbmcsIEhhc1N1YnN0cigibmVlZGxlIikpOworICBFWFBFQ1RfVEhBVChiYXJfc3Ry
aW5nLCBNYXRjaGVzUmVnZXgoIlxcdypcXGQrIikpOworYGBgCisKKyoqQXZhaWxhYmlsaXR5Kio6
IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKK0lmIHRoZSBzdHJpbmcgY29udGFpbnMgYSB3ZWxsLWZv
cm1lZCBIVE1MIG9yIFhNTCBkb2N1bWVudCwgeW91IGNhbiBjaGVjayB3aGV0aGVyCitpdHMgRE9N
IHRyZWUgbWF0Y2hlcyBhbiBbWFBhdGgKK2V4cHJlc3Npb25dKGh0dHA6Ly93d3cudzMub3JnL1RS
L3hwYXRoLyNjb250ZW50cyk6CisKK2BgYGMrKworLy8gQ3VycmVudGx5IHN0aWxsIGluIC8vdGVt
cGxhdGUvcHJvdG90ZW1wbGF0ZS90ZXN0aW5nOnhwYXRoX21hdGNoZXIKKyNpbmNsdWRlICJ0ZW1w
bGF0ZS9wcm90b3RlbXBsYXRlL3Rlc3RpbmcveHBhdGhfbWF0Y2hlci5oIgordXNpbmcgcHJvdG90
ZW1wbGF0ZTo6dGVzdGluZzo6TWF0Y2hlc1hQYXRoOworRVhQRUNUX1RIQVQoaHRtbF9zdHJpbmcs
IE1hdGNoZXNYUGF0aCgiLy9hW3RleHQoKT0nY2xpY2sgaGVyZSddIikpOworYGBgCisKKyoqQXZh
aWxhYmlsaXR5Kio6IExpbnV4LgorCisjIyMgV2luZG93cyBIUkVTVUxUIGFzc2VydGlvbnMKKwor
VGhlc2UgYXNzZXJ0aW9ucyB0ZXN0IGZvciBgSFJFU1VMVGAgc3VjY2VzcyBvciBmYWlsdXJlLgor
CitGYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2Vy
dGlvbiAgICAgICAgICAgICAgICAgICAgIHwgVmVyaWZpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gfCAtLS0tLS0tLQorYEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChleHByZXNzaW9uKWAgfCBg
RVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKGV4cHJlc3Npb24pYCB8IGBleHByZXNzaW9uYCBpcyBh
IHN1Y2Nlc3MgYEhSRVNVTFRgCitgQVNTRVJUX0hSRVNVTFRfRkFJTEVEKGV4cHJlc3Npb24pYCAg
ICB8IGBFWFBFQ1RfSFJFU1VMVF9GQUlMRUQoZXhwcmVzc2lvbilgICAgIHwgYGV4cHJlc3Npb25g
IGlzIGEgZmFpbHVyZSBgSFJFU1VMVGAKKworVGhlIGdlbmVyYXRlZCBvdXRwdXQgY29udGFpbnMg
dGhlIGh1bWFuLXJlYWRhYmxlIGVycm9yIG1lc3NhZ2UgYXNzb2NpYXRlZCB3aXRoCit0aGUgYEhS
RVNVTFRgIGNvZGUgcmV0dXJuZWQgYnkgYGV4cHJlc3Npb25gLgorCitZb3UgbWlnaHQgdXNlIHRo
ZW0gbGlrZSB0aGlzOgorCitgYGBjKysKK0NDb21QdHI8SVNoZWxsRGlzcGF0Y2gyPiBzaGVsbDsK
K0FTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChzaGVsbC5Db0NyZWF0ZUluc3RhbmNlKEwiU2hlbGwu
QXBwbGljYXRpb24iKSk7CitDQ29tVmFyaWFudCBlbXB0eTsKK0FTU0VSVF9IUkVTVUxUX1NVQ0NF
RURFRChzaGVsbC0+U2hlbGxFeGVjdXRlKENDb21CU1RSKHVybCksIGVtcHR5LCBlbXB0eSwgZW1w
dHksIGVtcHR5KSk7CitgYGAKKworKipBdmFpbGFiaWxpdHkqKjogV2luZG93cy4KKworIyMjIFR5
cGUgQXNzZXJ0aW9ucworCitZb3UgY2FuIGNhbGwgdGhlIGZ1bmN0aW9uCisKK2BgYGMrKworOjp0
ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8VDEsIFQyPigpOworYGBgCisKK3RvIGFzc2VydCB0
aGF0IHR5cGVzIGBUMWAgYW5kIGBUMmAgYXJlIHRoZSBzYW1lLiBUaGUgZnVuY3Rpb24gZG9lcyBu
b3RoaW5nIGlmCit0aGUgYXNzZXJ0aW9uIGlzIHNhdGlzZmllZC4gSWYgdGhlIHR5cGVzIGFyZSBk
aWZmZXJlbnQsIHRoZSBmdW5jdGlvbiBjYWxsIHdpbGwKK2ZhaWwgdG8gY29tcGlsZSwgYW5kIHRo
ZSBjb21waWxlciBlcnJvciBtZXNzYWdlIHdpbGwgbGlrZWx5IChkZXBlbmRpbmcgb24gdGhlCitj
b21waWxlcikgc2hvdyB5b3UgdGhlIGFjdHVhbCB2YWx1ZXMgb2YgYFQxYCBhbmQgYFQyYC4gVGhp
cyBpcyBtYWlubHkgdXNlZnVsCitpbnNpZGUgdGVtcGxhdGUgY29kZS4KKworKipDYXZlYXQqKjog
V2hlbiB1c2VkIGluc2lkZSBhIG1lbWJlciBmdW5jdGlvbiBvZiBhIGNsYXNzIHRlbXBsYXRlIG9y
IGEgZnVuY3Rpb24KK3RlbXBsYXRlLCBgU3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4oKWAgaXMg
ZWZmZWN0aXZlIG9ubHkgaWYgdGhlIGZ1bmN0aW9uIGlzCitpbnN0YW50aWF0ZWQuIEZvciBleGFt
cGxlLCBnaXZlbjoKKworYGBgYysrCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9vIHsK
KyBwdWJsaWM6CisgIHZvaWQgQmFyKCkgeyA6OnRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxp
bnQsIFQ+KCk7IH0KK307CitgYGAKKwordGhlIGNvZGU6CisKK2BgYGMrKwordm9pZCBUZXN0MSgp
IHsgRm9vPGJvb2w+IGZvbzsgfQorYGBgCisKK3dpbGwgbm90IGdlbmVyYXRlIGEgY29tcGlsZXIg
ZXJyb3IsIGFzIGBGb288Ym9vbD46OkJhcigpYCBpcyBuZXZlciBhY3R1YWxseQoraW5zdGFudGlh
dGVkLiBJbnN0ZWFkLCB5b3UgbmVlZDoKKworYGBgYysrCit2b2lkIFRlc3QyKCkgeyBGb288Ym9v
bD4gZm9vOyBmb28uQmFyKCk7IH0KK2BgYAorCit0byBjYXVzZSBhIGNvbXBpbGVyIGVycm9yLgor
CisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgQXNzZXJ0aW9u
IFBsYWNlbWVudAorCitZb3UgY2FuIHVzZSBhc3NlcnRpb25zIGluIGFueSBDKysgZnVuY3Rpb24u
IEluIHBhcnRpY3VsYXIsIGl0IGRvZXNuJ3QgaGF2ZSB0byBiZQorYSBtZXRob2Qgb2YgdGhlIHRl
c3QgZml4dHVyZSBjbGFzcy4gVGhlIG9uZSBjb25zdHJhaW50IGlzIHRoYXQgYXNzZXJ0aW9ucyB0
aGF0CitnZW5lcmF0ZSBhIGZhdGFsIGZhaWx1cmUgKGBGQUlMKmAgYW5kIGBBU1NFUlRfKmApIGNh
biBvbmx5IGJlIHVzZWQgaW4KK3ZvaWQtcmV0dXJuaW5nIGZ1bmN0aW9ucy4gVGhpcyBpcyBhIGNv
bnNlcXVlbmNlIG9mIEdvb2dsZSdzIG5vdCB1c2luZworZXhjZXB0aW9ucy4gQnkgcGxhY2luZyBp
dCBpbiBhIG5vbi12b2lkIGZ1bmN0aW9uIHlvdSdsbCBnZXQgYSBjb25mdXNpbmcgY29tcGlsZQor
ZXJyb3IgbGlrZSBgImVycm9yOiB2b2lkIHZhbHVlIG5vdCBpZ25vcmVkIGFzIGl0IG91Z2h0IHRv
IGJlImAgb3IgYCJjYW5ub3QKK2luaXRpYWxpemUgcmV0dXJuIG9iamVjdCBvZiB0eXBlICdib29s
JyB3aXRoIGFuIHJ2YWx1ZSBvZiB0eXBlICd2b2lkJyJgIG9yCitgImVycm9yOiBubyB2aWFibGUg
Y29udmVyc2lvbiBmcm9tICd2b2lkJyB0byAnc3RyaW5nJyJgLgorCitJZiB5b3UgbmVlZCB0byB1
c2UgZmF0YWwgYXNzZXJ0aW9ucyBpbiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBub24tdm9pZCwg
b25lCitvcHRpb24gaXMgdG8gbWFrZSB0aGUgZnVuY3Rpb24gcmV0dXJuIHRoZSB2YWx1ZSBpbiBh
biBvdXQgcGFyYW1ldGVyIGluc3RlYWQuIEZvcgorZXhhbXBsZSwgeW91IGNhbiByZXdyaXRlIGBU
MiBGb28oVDEgeClgIHRvIGB2b2lkIEZvbyhUMSB4LCBUMiogcmVzdWx0KWAuIFlvdQorbmVlZCB0
byBtYWtlIHN1cmUgdGhhdCBgKnJlc3VsdGAgY29udGFpbnMgc29tZSBzZW5zaWJsZSB2YWx1ZSBl
dmVuIHdoZW4gdGhlCitmdW5jdGlvbiByZXR1cm5zIHByZW1hdHVyZWx5LiBBcyB0aGUgZnVuY3Rp
b24gbm93IHJldHVybnMgYHZvaWRgLCB5b3UgY2FuIHVzZQorYW55IGFzc2VydGlvbiBpbnNpZGUg
b2YgaXQuCisKK0lmIGNoYW5naW5nIHRoZSBmdW5jdGlvbidzIHR5cGUgaXMgbm90IGFuIG9wdGlv
biwgeW91IHNob3VsZCBqdXN0IHVzZSBhc3NlcnRpb25zCit0aGF0IGdlbmVyYXRlIG5vbi1mYXRh
bCBmYWlsdXJlcywgc3VjaCBhcyBgQUREX0ZBSUxVUkUqYCBhbmQgYEVYUEVDVF8qYC4KKworTk9U
RTogQ29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycyBhcmUgbm90IGNvbnNpZGVyZWQgdm9pZC1y
ZXR1cm5pbmcgZnVuY3Rpb25zLAorYWNjb3JkaW5nIHRvIHRoZSBDKysgbGFuZ3VhZ2Ugc3BlY2lm
aWNhdGlvbiwgYW5kIHNvIHlvdSBtYXkgbm90IHVzZSBmYXRhbAorYXNzZXJ0aW9ucyBpbiB0aGVt
LiBZb3UnbGwgZ2V0IGEgY29tcGlsYXRpb24gZXJyb3IgaWYgeW91IHRyeS4gQSBzaW1wbGUKK3dv
cmthcm91bmQgaXMgdG8gdHJhbnNmZXIgdGhlIGVudGlyZSBib2R5IG9mIHRoZSBjb25zdHJ1Y3Rv
ciBvciBkZXN0cnVjdG9yIHRvIGEKK3ByaXZhdGUgdm9pZC1yZXR1cm5pbmcgbWV0aG9kLiBIb3dl
dmVyLCB5b3Ugc2hvdWxkIGJlIGF3YXJlIHRoYXQgYSBmYXRhbAorYXNzZXJ0aW9uIGZhaWx1cmUg
aW4gYSBjb25zdHJ1Y3RvciBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlIGN1cnJlbnQgdGVzdCwgYXMg
eW91cgoraW50dWl0aW9uIG1pZ2h0IHN1Z2dlc3Q7IGl0IG1lcmVseSByZXR1cm5zIGZyb20gdGhl
IGNvbnN0cnVjdG9yIGVhcmx5LCBwb3NzaWJseQorbGVhdmluZyB5b3VyIG9iamVjdCBpbiBhIHBh
cnRpYWxseS1jb25zdHJ1Y3RlZCBzdGF0ZS4gTGlrZXdpc2UsIGEgZmF0YWwKK2Fzc2VydGlvbiBm
YWlsdXJlIGluIGEgZGVzdHJ1Y3RvciBtYXkgbGVhdmUgeW91ciBvYmplY3QgaW4gYQorcGFydGlh
bGx5LWRlc3RydWN0ZWQgc3RhdGUuIFVzZSBhc3NlcnRpb25zIGNhcmVmdWxseSBpbiB0aGVzZSBz
aXR1YXRpb25zIQorCisjIyBUZWFjaGluZyBnb29nbGV0ZXN0IEhvdyB0byBQcmludCBZb3VyIFZh
bHVlcworCitXaGVuIGEgdGVzdCBhc3NlcnRpb24gc3VjaCBhcyBgRVhQRUNUX0VRYCBmYWlscywg
Z29vZ2xldGVzdCBwcmludHMgdGhlIGFyZ3VtZW50Cit2YWx1ZXMgdG8gaGVscCB5b3UgZGVidWcu
IEl0IGRvZXMgdGhpcyB1c2luZyBhIHVzZXItZXh0ZW5zaWJsZSB2YWx1ZSBwcmludGVyLgorCitU
aGlzIHByaW50ZXIga25vd3MgaG93IHRvIHByaW50IGJ1aWx0LWluIEMrKyB0eXBlcywgbmF0aXZl
IGFycmF5cywgU1RMCitjb250YWluZXJzLCBhbmQgYW55IHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUg
YDw8YCBvcGVyYXRvci4gRm9yIG90aGVyIHR5cGVzLCBpdAorcHJpbnRzIHRoZSByYXcgYnl0ZXMg
aW4gdGhlIHZhbHVlIGFuZCBob3BlcyB0aGF0IHlvdSB0aGUgdXNlciBjYW4gZmlndXJlIGl0IG91
dC4KKworQXMgbWVudGlvbmVkIGVhcmxpZXIsIHRoZSBwcmludGVyIGlzICpleHRlbnNpYmxlKi4g
VGhhdCBtZWFucyB5b3UgY2FuIHRlYWNoIGl0Cit0byBkbyBhIGJldHRlciBqb2IgYXQgcHJpbnRp
bmcgeW91ciBwYXJ0aWN1bGFyIHR5cGUgdGhhbiB0byBkdW1wIHRoZSBieXRlcy4gVG8KK2RvIHRo
YXQsIGRlZmluZSBgPDxgIGZvciB5b3VyIHR5cGU6CisKK2BgYGMrKworLy8gU3RyZWFtcyBhcmUg
YWxsb3dlZCBvbmx5IGZvciBsb2dnaW5nLiAgRG9uJ3QgaW5jbHVkZSB0aGlzIGZvcgorLy8gYW55
IG90aGVyIHB1cnBvc2UuCisjaW5jbHVkZSA8b3N0cmVhbT4KKworbmFtZXNwYWNlIGZvbyB7CisK
K2NsYXNzIEJhciB7ICAvLyBXZSB3YW50IGdvb2dsZXRlc3QgdG8gYmUgYWJsZSB0byBwcmludCBp
bnN0YW5jZXMgb2YgdGhpcy4KKy4uLgorICAvLyBDcmVhdGUgYSBmcmVlIGlubGluZSBmcmllbmQg
ZnVuY3Rpb24uCisgIGZyaWVuZCBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFt
JiBvcywgY29uc3QgQmFyJiBiYXIpIHsKKyAgICByZXR1cm4gb3MgPDwgYmFyLkRlYnVnU3RyaW5n
KCk7ICAvLyB3aGF0ZXZlciBuZWVkZWQgdG8gcHJpbnQgYmFyIHRvIG9zCisgIH0KK307CisKKy8v
IElmIHlvdSBjYW4ndCBkZWNsYXJlIHRoZSBmdW5jdGlvbiBpbiB0aGUgY2xhc3MgaXQncyBpbXBv
cnRhbnQgdGhhdCB0aGUKKy8vIDw8IG9wZXJhdG9yIGlzIGRlZmluZWQgaW4gdGhlIFNBTUUgbmFt
ZXNwYWNlIHRoYXQgZGVmaW5lcyBCYXIuICBDKysncyBsb29rLXVwCisvLyBydWxlcyByZWx5IG9u
IHRoYXQuCitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3Qg
QmFyJiBiYXIpIHsKKyAgcmV0dXJuIG9zIDw8IGJhci5EZWJ1Z1N0cmluZygpOyAgLy8gd2hhdGV2
ZXIgbmVlZGVkIHRvIHByaW50IGJhciB0byBvcworfQorCit9ICAvLyBuYW1lc3BhY2UgZm9vCitg
YGAKKworU29tZXRpbWVzLCB0aGlzIG1pZ2h0IG5vdCBiZSBhbiBvcHRpb246IHlvdXIgdGVhbSBt
YXkgY29uc2lkZXIgaXQgYmFkIHN0eWxlIHRvCitoYXZlIGEgYDw8YCBvcGVyYXRvciBmb3IgYEJh
cmAsIG9yIGBCYXJgIG1heSBhbHJlYWR5IGhhdmUgYSBgPDxgIG9wZXJhdG9yIHRoYXQKK2RvZXNu
J3QgZG8gd2hhdCB5b3Ugd2FudCAoYW5kIHlvdSBjYW5ub3QgY2hhbmdlIGl0KS4gSWYgc28sIHlv
dSBjYW4gaW5zdGVhZAorZGVmaW5lIGEgYFByaW50VG8oKWAgZnVuY3Rpb24gbGlrZSB0aGlzOgor
CitgYGBjKysKKy8vIFN0cmVhbXMgYXJlIGFsbG93ZWQgb25seSBmb3IgbG9nZ2luZy4gIERvbid0
IGluY2x1ZGUgdGhpcyBmb3IKKy8vIGFueSBvdGhlciBwdXJwb3NlLgorI2luY2x1ZGUgPG9zdHJl
YW0+CisKK25hbWVzcGFjZSBmb28geworCitjbGFzcyBCYXIgeworICAuLi4KKyAgZnJpZW5kIHZv
aWQgUHJpbnRUbyhjb25zdCBCYXImIGJhciwgc3RkOjpvc3RyZWFtKiBvcykgeworICAgICpvcyA8
PCBiYXIuRGVidWdTdHJpbmcoKTsgIC8vIHdoYXRldmVyIG5lZWRlZCB0byBwcmludCBiYXIgdG8g
b3MKKyAgfQorfTsKKworLy8gSWYgeW91IGNhbid0IGRlY2xhcmUgdGhlIGZ1bmN0aW9uIGluIHRo
ZSBjbGFzcyBpdCdzIGltcG9ydGFudCB0aGF0IFByaW50VG8oKQorLy8gaXMgZGVmaW5lZCBpbiB0
aGUgU0FNRSBuYW1lc3BhY2UgdGhhdCBkZWZpbmVzIEJhci4gIEMrKydzIGxvb2stdXAgcnVsZXMg
cmVseQorLy8gb24gdGhhdC4KK3ZvaWQgUHJpbnRUbyhjb25zdCBCYXImIGJhciwgc3RkOjpvc3Ry
ZWFtKiBvcykgeworICAqb3MgPDwgYmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3aGF0ZXZlciBuZWVk
ZWQgdG8gcHJpbnQgYmFyIHRvIG9zCit9CisKK30gIC8vIG5hbWVzcGFjZSBmb28KK2BgYAorCitJ
ZiB5b3UgaGF2ZSBkZWZpbmVkIGJvdGggYDw8YCBhbmQgYFByaW50VG8oKWAsIHRoZSBsYXR0ZXIg
d2lsbCBiZSB1c2VkIHdoZW4KK2dvb2dsZXRlc3QgaXMgY29uY2VybmVkLiBUaGlzIGFsbG93cyB5
b3UgdG8gY3VzdG9taXplIGhvdyB0aGUgdmFsdWUgYXBwZWFycyBpbgorZ29vZ2xldGVzdCdzIG91
dHB1dCB3aXRob3V0IGFmZmVjdGluZyBjb2RlIHRoYXQgcmVsaWVzIG9uIHRoZSBiZWhhdmlvciBv
ZiBpdHMKK2A8PGAgb3BlcmF0b3IuCisKK0lmIHlvdSB3YW50IHRvIHByaW50IGEgdmFsdWUgYHhg
IHVzaW5nIGdvb2dsZXRlc3QncyB2YWx1ZSBwcmludGVyIHlvdXJzZWxmLCBqdXN0CitjYWxsIGA6
OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoeClgLCB3aGljaCByZXR1cm5zIGFuIGBzdGQ6OnN0cmlu
Z2A6CisKK2BgYGMrKwordmVjdG9yPHBhaXI8QmFyLCBpbnQ+ID4gYmFyX2ludHMgPSBHZXRCYXJJ
bnRWZWN0b3IoKTsKKworRVhQRUNUX1RSVUUoSXNDb3JyZWN0QmFySW50VmVjdG9yKGJhcl9pbnRz
KSkKKyAgICA8PCAiYmFyX2ludHMgPSAiIDw8IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhiYXJf
aW50cyk7CitgYGAKKworIyMgRGVhdGggVGVzdHMKKworSW4gbWFueSBhcHBsaWNhdGlvbnMsIHRo
ZXJlIGFyZSBhc3NlcnRpb25zIHRoYXQgY2FuIGNhdXNlIGFwcGxpY2F0aW9uIGZhaWx1cmUgaWYK
K2EgY29uZGl0aW9uIGlzIG5vdCBtZXQuIFRoZXNlIHNhbml0eSBjaGVja3MsIHdoaWNoIGVuc3Vy
ZSB0aGF0IHRoZSBwcm9ncmFtIGlzIGluCithIGtub3duIGdvb2Qgc3RhdGUsIGFyZSB0aGVyZSB0
byBmYWlsIGF0IHRoZSBlYXJsaWVzdCBwb3NzaWJsZSB0aW1lIGFmdGVyIHNvbWUKK3Byb2dyYW0g
c3RhdGUgaXMgY29ycnVwdGVkLiBJZiB0aGUgYXNzZXJ0aW9uIGNoZWNrcyB0aGUgd3JvbmcgY29u
ZGl0aW9uLCB0aGVuCit0aGUgcHJvZ3JhbSBtYXkgcHJvY2VlZCBpbiBhbiBlcnJvbmVvdXMgc3Rh
dGUsIHdoaWNoIGNvdWxkIGxlYWQgdG8gbWVtb3J5Citjb3JydXB0aW9uLCBzZWN1cml0eSBob2xl
cywgb3Igd29yc2UuIEhlbmNlIGl0IGlzIHZpdGFsbHkgaW1wb3J0YW50IHRvIHRlc3QgdGhhdAor
c3VjaCBhc3NlcnRpb24gc3RhdGVtZW50cyB3b3JrIGFzIGV4cGVjdGVkLgorCitTaW5jZSB0aGVz
ZSBwcmVjb25kaXRpb24gY2hlY2tzIGNhdXNlIHRoZSBwcm9jZXNzZXMgdG8gZGllLCB3ZSBjYWxs
IHN1Y2ggdGVzdHMKK19kZWF0aCB0ZXN0c18uIE1vcmUgZ2VuZXJhbGx5LCBhbnkgdGVzdCB0aGF0
IGNoZWNrcyB0aGF0IGEgcHJvZ3JhbSB0ZXJtaW5hdGVzCisoZXhjZXB0IGJ5IHRocm93aW5nIGFu
IGV4Y2VwdGlvbikgaW4gYW4gZXhwZWN0ZWQgZmFzaGlvbiBpcyBhbHNvIGEgZGVhdGggdGVzdC4K
KworCitOb3RlIHRoYXQgaWYgYSBwaWVjZSBvZiBjb2RlIHRocm93cyBhbiBleGNlcHRpb24sIHdl
IGRvbid0IGNvbnNpZGVyIGl0ICJkZWF0aCIKK2ZvciB0aGUgcHVycG9zZSBvZiBkZWF0aCB0ZXN0
cywgYXMgdGhlIGNhbGxlciBvZiB0aGUgY29kZSBjb3VsZCBjYXRjaCB0aGUKK2V4Y2VwdGlvbiBh
bmQgYXZvaWQgdGhlIGNyYXNoLiBJZiB5b3Ugd2FudCB0byB2ZXJpZnkgZXhjZXB0aW9ucyB0aHJv
d24gYnkgeW91cgorY29kZSwgc2VlIFtFeGNlcHRpb24gQXNzZXJ0aW9uc10oI2V4Y2VwdGlvbi1h
c3NlcnRpb25zKS4KKworSWYgeW91IHdhbnQgdG8gdGVzdCBgRVhQRUNUXyooKS9BU1NFUlRfKigp
YCBmYWlsdXJlcyBpbiB5b3VyIHRlc3QgY29kZSwgc2VlCitDYXRjaGluZyBGYWlsdXJlcworCisj
IyMgSG93IHRvIFdyaXRlIGEgRGVhdGggVGVzdAorCitnb29nbGV0ZXN0IGhhcyB0aGUgZm9sbG93
aW5nIG1hY3JvcyB0byBzdXBwb3J0IGRlYXRoIHRlc3RzOgorCitGYXRhbCBhc3NlcnRpb24gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IFZlcmlmaWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tCitgQVNTRVJUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgp
O2AgICAgICAgICAgICAgIHwgYEVYUEVDVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KTtgICAgICAg
ICAgICAgICB8IGBzdGF0ZW1lbnRgIGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3IKK2BBU1NF
UlRfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpO2AgfCBgRVhQRUNUX0RFQVRI
X0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KTtgIHwgaWYgZGVhdGggdGVzdHMgYXJlIHN1
cHBvcnRlZCwgdmVyaWZpZXMgdGhhdCBgc3RhdGVtZW50YCBjcmFzaGVzIHdpdGggdGhlIGdpdmVu
IGVycm9yOyBvdGhlcndpc2UgdmVyaWZpZXMgbm90aGluZworYEFTU0VSVF9FWElUKHN0YXRlbWVu
dCwgcHJlZGljYXRlLCByZWdleCk7YCAgICB8IGBFWFBFQ1RfRVhJVChzdGF0ZW1lbnQsIHByZWRp
Y2F0ZSwgcmVnZXgpO2AgICAgfCBgc3RhdGVtZW50YCBleGl0cyB3aXRoIHRoZSBnaXZlbiBlcnJv
ciwgYW5kIGl0cyBleGl0IGNvZGUgbWF0Y2hlcyBgcHJlZGljYXRlYAorCit3aGVyZSBgc3RhdGVt
ZW50YCBpcyBhIHN0YXRlbWVudCB0aGF0IGlzIGV4cGVjdGVkIHRvIGNhdXNlIHRoZSBwcm9jZXNz
IHRvIGRpZSwKK2BwcmVkaWNhdGVgIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3Rpb24gb2JqZWN0IHRo
YXQgZXZhbHVhdGVzIGFuIGludGVnZXIgZXhpdAorc3RhdHVzLCBhbmQgYHJlZ2V4YCBpcyBhIChQ
ZXJsKSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCB0aGUgc3RkZXJyIG91dHB1dCBvZgorYHN0YXRl
bWVudGAgaXMgZXhwZWN0ZWQgdG8gbWF0Y2guIE5vdGUgdGhhdCBgc3RhdGVtZW50YCBjYW4gYmUg
KmFueSB2YWxpZAorc3RhdGVtZW50KiAoaW5jbHVkaW5nICpjb21wb3VuZCBzdGF0ZW1lbnQqKSBh
bmQgZG9lc24ndCBoYXZlIHRvIGJlIGFuCitleHByZXNzaW9uLgorCisKK0FzIHVzdWFsLCB0aGUg
YEFTU0VSVGAgdmFyaWFudHMgYWJvcnQgdGhlIGN1cnJlbnQgdGVzdCBmdW5jdGlvbiwgd2hpbGUg
dGhlCitgRVhQRUNUYCB2YXJpYW50cyBkbyBub3QuCisKKz4gTk9URTogV2UgdXNlIHRoZSB3b3Jk
ICJjcmFzaCIgaGVyZSB0byBtZWFuIHRoYXQgdGhlIHByb2Nlc3MgdGVybWluYXRlcyB3aXRoIGEK
Kz4gKm5vbi16ZXJvKiBleGl0IHN0YXR1cyBjb2RlLiBUaGVyZSBhcmUgdHdvIHBvc3NpYmlsaXRp
ZXM6IGVpdGhlciB0aGUgcHJvY2VzcworPiBoYXMgY2FsbGVkIGBleGl0KClgIG9yIGBfZXhpdCgp
YCB3aXRoIGEgbm9uLXplcm8gdmFsdWUsIG9yIGl0IG1heSBiZSBraWxsZWQgYnkKKz4gYSBzaWdu
YWwuCis+Cis+IFRoaXMgbWVhbnMgdGhhdCBpZiBgKnN0YXRlbWVudCpgIHRlcm1pbmF0ZXMgdGhl
IHByb2Nlc3Mgd2l0aCBhIDAgZXhpdCBjb2RlLCBpdAorPiBpcyAqbm90KiBjb25zaWRlcmVkIGEg
Y3Jhc2ggYnkgYEVYUEVDVF9ERUFUSGAuIFVzZSBgRVhQRUNUX0VYSVRgIGluc3RlYWQgaWYKKz4g
dGhpcyBpcyB0aGUgY2FzZSwgb3IgaWYgeW91IHdhbnQgdG8gcmVzdHJpY3QgdGhlIGV4aXQgY29k
ZSBtb3JlIHByZWNpc2VseS4KKworQSBwcmVkaWNhdGUgaGVyZSBtdXN0IGFjY2VwdCBhbiBgaW50
YCBhbmQgcmV0dXJuIGEgYGJvb2xgLiBUaGUgZGVhdGggdGVzdAorc3VjY2VlZHMgb25seSBpZiB0
aGUgcHJlZGljYXRlIHJldHVybnMgYHRydWVgLiBnb29nbGV0ZXN0IGRlZmluZXMgYSBmZXcKK3By
ZWRpY2F0ZXMgdGhhdCBoYW5kbGUgdGhlIG1vc3QgY29tbW9uIGNhc2VzOgorCitgYGBjKysKKzo6
dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoZXhpdF9jb2RlKQorYGBgCisKK1RoaXMgZXhwcmVzc2lv
biBpcyBgdHJ1ZWAgaWYgdGhlIHByb2dyYW0gZXhpdGVkIG5vcm1hbGx5IHdpdGggdGhlIGdpdmVu
IGV4aXQKK2NvZGUuCisKK2BgYGMrKworOjp0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChzaWduYWxf
bnVtYmVyKSAgLy8gTm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgorYGBgCisKK1RoaXMgZXhwcmVz
c2lvbiBpcyBgdHJ1ZWAgaWYgdGhlIHByb2dyYW0gd2FzIGtpbGxlZCBieSB0aGUgZ2l2ZW4gc2ln
bmFsLgorCitUaGUgYCpfREVBVEhgIG1hY3JvcyBhcmUgY29udmVuaWVudCB3cmFwcGVycyBmb3Ig
YCpfRVhJVGAgdGhhdCB1c2UgYSBwcmVkaWNhdGUKK3RoYXQgdmVyaWZpZXMgdGhlIHByb2Nlc3Mn
IGV4aXQgY29kZSBpcyBub24temVyby4KKworTm90ZSB0aGF0IGEgZGVhdGggdGVzdCBvbmx5IGNh
cmVzIGFib3V0IHRocmVlIHRoaW5nczoKKworMS4gIGRvZXMgYHN0YXRlbWVudGAgYWJvcnQgb3Ig
ZXhpdCB0aGUgcHJvY2Vzcz8KKzIuICAoaW4gdGhlIGNhc2Ugb2YgYEFTU0VSVF9FWElUYCBhbmQg
YEVYUEVDVF9FWElUYCkgZG9lcyB0aGUgZXhpdCBzdGF0dXMKKyAgICBzYXRpc2Z5IGBwcmVkaWNh
dGVgPyBPciAoaW4gdGhlIGNhc2Ugb2YgYEFTU0VSVF9ERUFUSGAgYW5kIGBFWFBFQ1RfREVBVEhg
KQorICAgIGlzIHRoZSBleGl0IHN0YXR1cyBub24temVybz8gQW5kCiszLiAgZG9lcyB0aGUgc3Rk
ZXJyIG91dHB1dCBtYXRjaCBgcmVnZXhgPworCitJbiBwYXJ0aWN1bGFyLCBpZiBgc3RhdGVtZW50
YCBnZW5lcmF0ZXMgYW4gYEFTU0VSVF8qYCBvciBgRVhQRUNUXypgIGZhaWx1cmUsIGl0Cit3aWxs
ICoqbm90KiogY2F1c2UgdGhlIGRlYXRoIHRlc3QgdG8gZmFpbCwgYXMgZ29vZ2xldGVzdCBhc3Nl
cnRpb25zIGRvbid0IGFib3J0Cit0aGUgcHJvY2Vzcy4KKworVG8gd3JpdGUgYSBkZWF0aCB0ZXN0
LCBzaW1wbHkgdXNlIG9uZSBvZiB0aGUgYWJvdmUgbWFjcm9zIGluc2lkZSB5b3VyIHRlc3QKK2Z1
bmN0aW9uLiBGb3IgZXhhbXBsZSwKKworYGBgYysrCitURVNUKE15RGVhdGhUZXN0LCBGb28pIHsK
KyAgLy8gVGhpcyBkZWF0aCB0ZXN0IHVzZXMgYSBjb21wb3VuZCBzdGF0ZW1lbnQuCisgIEFTU0VS
VF9ERUFUSCh7CisgICAgaW50IG4gPSA1OworICAgIEZvbygmbik7CisgIH0sICJFcnJvciBvbiBs
aW5lIC4qIG9mIEZvbygpIik7Cit9CisKK1RFU1QoTXlEZWF0aFRlc3QsIE5vcm1hbEV4aXQpIHsK
KyAgRVhQRUNUX0VYSVQoTm9ybWFsRXhpdCgpLCA6OnRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDAp
LCAiU3VjY2VzcyIpOworfQorCitURVNUKE15RGVhdGhUZXN0LCBLaWxsTXlzZWxmKSB7CisgIEVY
UEVDVF9FWElUKEtpbGxNeXNlbGYoKSwgOjp0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChTSUdLSUxM
KSwKKyAgICAgICAgICAgICAgIlNlbmRpbmcgbXlzZWxmIHVuYmxvY2thYmxlIHNpZ25hbCIpOwor
fQorYGBgCisKK3ZlcmlmaWVzIHRoYXQ6CisKKyogICBjYWxsaW5nIGBGb28oNSlgIGNhdXNlcyB0
aGUgcHJvY2VzcyB0byBkaWUgd2l0aCB0aGUgZ2l2ZW4gZXJyb3IgbWVzc2FnZSwKKyogICBjYWxs
aW5nIGBOb3JtYWxFeGl0KClgIGNhdXNlcyB0aGUgcHJvY2VzcyB0byBwcmludCBgIlN1Y2Nlc3Mi
YCB0byBzdGRlcnIgYW5kCisgICAgZXhpdCB3aXRoIGV4aXQgY29kZSAwLCBhbmQKKyogICBjYWxs
aW5nIGBLaWxsTXlzZWxmKClgIGtpbGxzIHRoZSBwcm9jZXNzIHdpdGggc2lnbmFsIGBTSUdLSUxM
YC4KKworVGhlIHRlc3QgZnVuY3Rpb24gYm9keSBtYXkgY29udGFpbiBvdGhlciBhc3NlcnRpb25z
IGFuZCBzdGF0ZW1lbnRzIGFzIHdlbGwsIGlmCituZWNlc3NhcnkuCisKKyMjIyBEZWF0aCBUZXN0
IE5hbWluZworCitJTVBPUlRBTlQ6IFdlIHN0cm9uZ2x5IHJlY29tbWVuZCB5b3UgdG8gZm9sbG93
IHRoZSBjb252ZW50aW9uIG9mIG5hbWluZyB5b3VyCisqKnRlc3QgY2FzZSoqIChub3QgdGVzdCkg
YCpEZWF0aFRlc3RgIHdoZW4gaXQgY29udGFpbnMgYSBkZWF0aCB0ZXN0LCBhcworZGVtb25zdHJh
dGVkIGluIHRoZSBhYm92ZSBleGFtcGxlLiBUaGUgW0RlYXRoIFRlc3RzIEFuZAorVGhyZWFkc10o
I2RlYXRoLXRlc3RzLWFuZC10aHJlYWRzKSBzZWN0aW9uIGJlbG93IGV4cGxhaW5zIHdoeS4KKwor
SWYgYSB0ZXN0IGZpeHR1cmUgY2xhc3MgaXMgc2hhcmVkIGJ5IG5vcm1hbCB0ZXN0cyBhbmQgZGVh
dGggdGVzdHMsIHlvdSBjYW4gdXNlCitgdXNpbmdgIG9yIGB0eXBlZGVmYCB0byBpbnRyb2R1Y2Ug
YW4gYWxpYXMgZm9yIHRoZSBmaXh0dXJlIGNsYXNzIGFuZCBhdm9pZAorZHVwbGljYXRpbmcgaXRz
IGNvZGU6CisKK2BgYGMrKworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qg
eyAuLi4gfTsKKwordXNpbmcgRm9vRGVhdGhUZXN0ID0gRm9vVGVzdDsKKworVEVTVF9GKEZvb1Rl
c3QsIERvZXNUaGlzKSB7CisgIC8vIG5vcm1hbCB0ZXN0Cit9CisKK1RFU1RfRihGb29EZWF0aFRl
c3QsIERvZXNUaGF0KSB7CisgIC8vIGRlYXRoIHRlc3QKK30KK2BgYAorCisqKkF2YWlsYWJpbGl0
eSoqOiBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBDeWd3aW4s
IGFuZCBNYWMKKworIyMjIFJlZ3VsYXIgRXhwcmVzc2lvbiBTeW50YXgKKworCitPbiBQT1NJWCBz
eXN0ZW1zIChlLmcuIExpbnV4LCBDeWd3aW4sIGFuZCBNYWMpLCBnb29nbGV0ZXN0IHVzZXMgdGhl
CitbUE9TSVggZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9uXShodHRwOi8vd3d3Lm9wZW5ncm91
cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvYmFzZWRlZnMveGJkX2NoYXAwOS5odG1sI3RhZ18w
OV8wNCkKK3N5bnRheC4gVG8gbGVhcm4gYWJvdXQgdGhpcyBzeW50YXgsIHlvdSBtYXkgd2FudCB0
byByZWFkIHRoaXMKK1tXaWtpcGVkaWEgZW50cnldKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dp
a2kvUmVndWxhcl9leHByZXNzaW9uI1BPU0lYX0V4dGVuZGVkX1JlZ3VsYXJfRXhwcmVzc2lvbnMp
LgorCitPbiBXaW5kb3dzLCBnb29nbGV0ZXN0IHVzZXMgaXRzIG93biBzaW1wbGUgcmVndWxhciBl
eHByZXNzaW9uIGltcGxlbWVudGF0aW9uLiBJdAorbGFja3MgbWFueSBmZWF0dXJlcy4gRm9yIGV4
YW1wbGUsIHdlIGRvbid0IHN1cHBvcnQgdW5pb24gKGAieHx5ImApLCBncm91cGluZworKGAiKHh5
KSJgKSwgYnJhY2tldHMgKGAiW3h5XSJgKSwgYW5kIHJlcGV0aXRpb24gY291bnQgKGAieHs1LDd9
ImApLCBhbW9uZworb3RoZXJzLiBCZWxvdyBpcyB3aGF0IHdlIGRvIHN1cHBvcnQgKGBBYCBkZW5v
dGVzIGEgbGl0ZXJhbCBjaGFyYWN0ZXIsIHBlcmlvZAorKGAuYCksIG9yIGEgc2luZ2xlIGBcXCBg
IGVzY2FwZSBzZXF1ZW5jZTsgYHhgIGFuZCBgeWAgZGVub3RlIHJlZ3VsYXIKK2V4cHJlc3Npb25z
Lik6CisKK0V4cHJlc3Npb24gfCBNZWFuaW5nCistLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2BjYCAgICAg
ICAgfCBtYXRjaGVzIGFueSBsaXRlcmFsIGNoYXJhY3RlciBgY2AKK2BcXGRgICAgICAgfCBtYXRj
aGVzIGFueSBkZWNpbWFsIGRpZ2l0CitgXFxEYCAgICAgIHwgbWF0Y2hlcyBhbnkgY2hhcmFjdGVy
IHRoYXQncyBub3QgYSBkZWNpbWFsIGRpZ2l0CitgXFxmYCAgICAgIHwgbWF0Y2hlcyBgXGZgCitg
XFxuYCAgICAgIHwgbWF0Y2hlcyBgXG5gCitgXFxyYCAgICAgIHwgbWF0Y2hlcyBgXHJgCitgXFxz
YCAgICAgIHwgbWF0Y2hlcyBhbnkgQVNDSUkgd2hpdGVzcGFjZSwgaW5jbHVkaW5nIGBcbmAKK2Bc
XFNgICAgICAgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBhIHdoaXRlc3BhY2UK
K2BcXHRgICAgICAgfCBtYXRjaGVzIGBcdGAKK2BcXHZgICAgICAgfCBtYXRjaGVzIGBcdmAKK2Bc
XHdgICAgICAgfCBtYXRjaGVzIGFueSBsZXR0ZXIsIGBfYCwgb3IgZGVjaW1hbCBkaWdpdAorYFxc
V2AgICAgICB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0IGBcXHdgIGRvZXNuJ3QgbWF0Y2gK
K2BcXGNgICAgICAgfCBtYXRjaGVzIGFueSBsaXRlcmFsIGNoYXJhY3RlciBgY2AsIHdoaWNoIG11
c3QgYmUgYSBwdW5jdHVhdGlvbgorYC5gICAgICAgICB8IG1hdGNoZXMgYW55IHNpbmdsZSBjaGFy
YWN0ZXIgZXhjZXB0IGBcbmAKK2BBP2AgICAgICAgfCBtYXRjaGVzIDAgb3IgMSBvY2N1cnJlbmNl
cyBvZiBgQWAKK2BBKmAgICAgICAgfCBtYXRjaGVzIDAgb3IgbWFueSBvY2N1cnJlbmNlcyBvZiBg
QWAKK2BBK2AgICAgICAgfCBtYXRjaGVzIDEgb3IgbWFueSBvY2N1cnJlbmNlcyBvZiBgQWAKK2Be
YCAgICAgICAgfCBtYXRjaGVzIHRoZSBiZWdpbm5pbmcgb2YgYSBzdHJpbmcgKG5vdCB0aGF0IG9m
IGVhY2ggbGluZSkKK2AkYCAgICAgICAgfCBtYXRjaGVzIHRoZSBlbmQgb2YgYSBzdHJpbmcgKG5v
dCB0aGF0IG9mIGVhY2ggbGluZSkKK2B4eWAgICAgICAgfCBtYXRjaGVzIGB4YCBmb2xsb3dlZCBi
eSBgeWAKKworVG8gaGVscCB5b3UgZGV0ZXJtaW5lIHdoaWNoIGNhcGFiaWxpdHkgaXMgYXZhaWxh
YmxlIG9uIHlvdXIgc3lzdGVtLCBnb29nbGV0ZXN0CitkZWZpbmVzIG1hY3JvcyB0byBnb3Zlcm4g
d2hpY2ggcmVndWxhciBleHByZXNzaW9uIGl0IGlzIHVzaW5nLiBUaGUgbWFjcm9zIGFyZToKKzwh
LS1hYnNsOmdvb2dsZTMtYmVnaW4oZ29vZ2xlMy1vbmx5KS0tPmBHVEVTVF9VU0VTX1BDUkU9MWAs
IG9yCis8IS0tYWJzbDpnb29nbGUzLWVuZC0tPiBgR1RFU1RfVVNFU19TSU1QTEVfUkU9MWAgb3Ig
YEdURVNUX1VTRVNfUE9TSVhfUkU9MWAuIElmCit5b3Ugd2FudCB5b3VyIGRlYXRoIHRlc3RzIHRv
IHdvcmsgaW4gYWxsIGNhc2VzLCB5b3UgY2FuIGVpdGhlciBgI2lmYCBvbiB0aGVzZQorbWFjcm9z
IG9yIHVzZSB0aGUgbW9yZSBsaW1pdGVkIHN5bnRheCBvbmx5LgorCisjIyMgSG93IEl0IFdvcmtz
CisKK1VuZGVyIHRoZSBob29kLCBgQVNTRVJUX0VYSVQoKWAgc3Bhd25zIGEgbmV3IHByb2Nlc3Mg
YW5kIGV4ZWN1dGVzIHRoZSBkZWF0aCB0ZXN0CitzdGF0ZW1lbnQgaW4gdGhhdCBwcm9jZXNzLiBU
aGUgZGV0YWlscyBvZiBob3cgcHJlY2lzZWx5IHRoYXQgaGFwcGVucyBkZXBlbmQgb24KK3RoZSBw
bGF0Zm9ybSBhbmQgdGhlIHZhcmlhYmxlIDo6dGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0
X3N0eWxlKSAod2hpY2ggaXMKK2luaXRpYWxpemVkIGZyb20gdGhlIGNvbW1hbmQtbGluZSBmbGFn
IGAtLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGVgKS4KKworKiAgIE9uIFBPU0lYIHN5c3RlbXMsIGBm
b3JrKClgIChvciBgY2xvbmUoKWAgb24gTGludXgpIGlzIHVzZWQgdG8gc3Bhd24gdGhlCisgICAg
Y2hpbGQsIGFmdGVyIHdoaWNoOgorICAgICogICBJZiB0aGUgdmFyaWFibGUncyB2YWx1ZSBpcyBg
ImZhc3QiYCwgdGhlIGRlYXRoIHRlc3Qgc3RhdGVtZW50IGlzCisgICAgICAgIGltbWVkaWF0ZWx5
IGV4ZWN1dGVkLgorICAgICogICBJZiB0aGUgdmFyaWFibGUncyB2YWx1ZSBpcyBgInRocmVhZHNh
ZmUiYCwgdGhlIGNoaWxkIHByb2Nlc3MgcmUtZXhlY3V0ZXMKKyAgICAgICAgdGhlIHVuaXQgdGVz
dCBiaW5hcnkganVzdCBhcyBpdCB3YXMgb3JpZ2luYWxseSBpbnZva2VkLCBidXQgd2l0aCBzb21l
CisgICAgICAgIGV4dHJhIGZsYWdzIHRvIGNhdXNlIGp1c3QgdGhlIHNpbmdsZSBkZWF0aCB0ZXN0
IHVuZGVyIGNvbnNpZGVyYXRpb24gdG8KKyAgICAgICAgYmUgcnVuLgorKiAgIE9uIFdpbmRvd3Ms
IHRoZSBjaGlsZCBpcyBzcGF3bmVkIHVzaW5nIHRoZSBgQ3JlYXRlUHJvY2VzcygpYCBBUEksIGFu
ZAorICAgIHJlLWV4ZWN1dGVzIHRoZSBiaW5hcnkgdG8gY2F1c2UganVzdCB0aGUgc2luZ2xlIGRl
YXRoIHRlc3QgdW5kZXIKKyAgICBjb25zaWRlcmF0aW9uIHRvIGJlIHJ1biAtIG11Y2ggbGlrZSB0
aGUgYHRocmVhZHNhZmVgIG1vZGUgb24gUE9TSVguCisKK090aGVyIHZhbHVlcyBmb3IgdGhlIHZh
cmlhYmxlIGFyZSBpbGxlZ2FsIGFuZCB3aWxsIGNhdXNlIHRoZSBkZWF0aCB0ZXN0IHRvIGZhaWwu
CitDdXJyZW50bHksIHRoZSBmbGFnJ3MgZGVmYXVsdCB2YWx1ZSBpcworImZhc3QiLiBIb3dldmVy
LCB3ZSByZXNlcnZlCit0aGUgcmlnaHQgdG8gY2hhbmdlIGl0IGluIHRoZSBmdXR1cmUuIFRoZXJl
Zm9yZSwgeW91ciB0ZXN0cyBzaG91bGQgbm90IGRlcGVuZCBvbgordGhpcy4gSW4gZWl0aGVyIGNh
c2UsIHRoZSBwYXJlbnQgcHJvY2VzcyB3YWl0cyBmb3IgdGhlIGNoaWxkIHByb2Nlc3MgdG8KK2Nv
bXBsZXRlLCBhbmQgY2hlY2tzIHRoYXQKKworMS4gIHRoZSBjaGlsZCdzIGV4aXQgc3RhdHVzIHNh
dGlzZmllcyB0aGUgcHJlZGljYXRlLCBhbmQKKzIuICB0aGUgY2hpbGQncyBzdGRlcnIgbWF0Y2hl
cyB0aGUgcmVndWxhciBleHByZXNzaW9uLgorCitJZiB0aGUgZGVhdGggdGVzdCBzdGF0ZW1lbnQg
cnVucyB0byBjb21wbGV0aW9uIHdpdGhvdXQgZHlpbmcsIHRoZSBjaGlsZCBwcm9jZXNzCit3aWxs
IG5vbmV0aGVsZXNzIHRlcm1pbmF0ZSwgYW5kIHRoZSBhc3NlcnRpb24gZmFpbHMuCisKKyMjIyBE
ZWF0aCBUZXN0cyBBbmQgVGhyZWFkcworCitUaGUgcmVhc29uIGZvciB0aGUgdHdvIGRlYXRoIHRl
c3Qgc3R5bGVzIGhhcyB0byBkbyB3aXRoIHRocmVhZCBzYWZldHkuIER1ZSB0bword2VsbC1rbm93
biBwcm9ibGVtcyB3aXRoIGZvcmtpbmcgaW4gdGhlIHByZXNlbmNlIG9mIHRocmVhZHMsIGRlYXRo
IHRlc3RzIHNob3VsZAorYmUgcnVuIGluIGEgc2luZ2xlLXRocmVhZGVkIGNvbnRleHQuIFNvbWV0
aW1lcywgaG93ZXZlciwgaXQgaXNuJ3QgZmVhc2libGUgdG8KK2FycmFuZ2UgdGhhdCBraW5kIG9m
IGVudmlyb25tZW50LiBGb3IgZXhhbXBsZSwgc3RhdGljYWxseS1pbml0aWFsaXplZCBtb2R1bGVz
CittYXkgc3RhcnQgdGhyZWFkcyBiZWZvcmUgbWFpbiBpcyBldmVyIHJlYWNoZWQuIE9uY2UgdGhy
ZWFkcyBoYXZlIGJlZW4gY3JlYXRlZCwKK2l0IG1heSBiZSBkaWZmaWN1bHQgb3IgaW1wb3NzaWJs
ZSB0byBjbGVhbiB0aGVtIHVwLgorCitnb29nbGV0ZXN0IGhhcyB0aHJlZSBmZWF0dXJlcyBpbnRl
bmRlZCB0byByYWlzZSBhd2FyZW5lc3Mgb2YgdGhyZWFkaW5nIGlzc3Vlcy4KKworMS4gIEEgd2Fy
bmluZyBpcyBlbWl0dGVkIGlmIG11bHRpcGxlIHRocmVhZHMgYXJlIHJ1bm5pbmcgd2hlbiBhIGRl
YXRoIHRlc3QgaXMKKyAgICBlbmNvdW50ZXJlZC4KKzIuICBUZXN0IGNhc2VzIHdpdGggYSBuYW1l
IGVuZGluZyBpbiAiRGVhdGhUZXN0IiBhcmUgcnVuIGJlZm9yZSBhbGwgb3RoZXIgdGVzdHMuCisz
LiAgSXQgdXNlcyBgY2xvbmUoKWAgaW5zdGVhZCBvZiBgZm9yaygpYCB0byBzcGF3biB0aGUgY2hp
bGQgcHJvY2VzcyBvbiBMaW51eAorICAgIChgY2xvbmUoKWAgaXMgbm90IGF2YWlsYWJsZSBvbiBD
eWd3aW4gYW5kIE1hYyksIGFzIGBmb3JrKClgIGlzIG1vcmUgbGlrZWx5CisgICAgdG8gY2F1c2Ug
dGhlIGNoaWxkIHRvIGhhbmcgd2hlbiB0aGUgcGFyZW50IHByb2Nlc3MgaGFzIG11bHRpcGxlIHRo
cmVhZHMuCisKK0l0J3MgcGVyZmVjdGx5IGZpbmUgdG8gY3JlYXRlIHRocmVhZHMgaW5zaWRlIGEg
ZGVhdGggdGVzdCBzdGF0ZW1lbnQ7IHRoZXkgYXJlCitleGVjdXRlZCBpbiBhIHNlcGFyYXRlIHBy
b2Nlc3MgYW5kIGNhbm5vdCBhZmZlY3QgdGhlIHBhcmVudC4KKworIyMjIERlYXRoIFRlc3QgU3R5
bGVzCisKKworVGhlICJ0aHJlYWRzYWZlIiBkZWF0aCB0ZXN0IHN0eWxlIHdhcyBpbnRyb2R1Y2Vk
IGluIG9yZGVyIHRvIGhlbHAgbWl0aWdhdGUgdGhlCityaXNrcyBvZiB0ZXN0aW5nIGluIGEgcG9z
c2libHkgbXVsdGl0aHJlYWRlZCBlbnZpcm9ubWVudC4gSXQgdHJhZGVzIGluY3JlYXNlZAordGVz
dCBleGVjdXRpb24gdGltZSAocG90ZW50aWFsbHkgZHJhbWF0aWNhbGx5IHNvKSBmb3IgaW1wcm92
ZWQgdGhyZWFkIHNhZmV0eS4KKworVGhlIGF1dG9tYXRlZCB0ZXN0aW5nIGZyYW1ld29yayBkb2Vz
IG5vdCBzZXQgdGhlIHN0eWxlIGZsYWcuIFlvdSBjYW4gY2hvb3NlIGEKK3BhcnRpY3VsYXIgc3R5
bGUgb2YgZGVhdGggdGVzdHMgYnkgc2V0dGluZyB0aGUgZmxhZyBwcm9ncmFtbWF0aWNhbGx5Ogor
CitgYGBjKysKK3Rlc3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGU9InRocmVhZHNh
ZmUiCitgYGAKKworWW91IGNhbiBkbyB0aGlzIGluIGBtYWluKClgIHRvIHNldCB0aGUgc3R5bGUg
Zm9yIGFsbCBkZWF0aCB0ZXN0cyBpbiB0aGUgYmluYXJ5LAorb3IgaW4gaW5kaXZpZHVhbCB0ZXN0
cy4gUmVjYWxsIHRoYXQgZmxhZ3MgYXJlIHNhdmVkIGJlZm9yZSBydW5uaW5nIGVhY2ggdGVzdCBh
bmQKK3Jlc3RvcmVkIGFmdGVyd2FyZHMsIHNvIHlvdSBuZWVkIG5vdCBkbyB0aGF0IHlvdXJzZWxm
LiBGb3IgZXhhbXBsZToKKworYGBgYysrCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3Yp
IHsKKyAgSW5pdEdvb2dsZShhcmd2WzBdLCAmYXJnYywgJmFyZ3YsIHRydWUpOworICA6OnRlc3Rp
bmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAiZmFzdCI7CisgIHJldHVybiBSVU5f
QUxMX1RFU1RTKCk7Cit9CisKK1RFU1QoTXlEZWF0aFRlc3QsIFRlc3RPbmUpIHsKKyAgOjp0ZXN0
aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0gInRocmVhZHNhZmUiOworICAvLyBU
aGlzIHRlc3QgaXMgcnVuIGluIHRoZSAidGhyZWFkc2FmZSIgc3R5bGU6CisgIEFTU0VSVF9ERUFU
SChUaGlzU2hvdWxkRGllKCksICIiKTsKK30KKworVEVTVChNeURlYXRoVGVzdCwgVGVzdFR3bykg
eworICAvLyBUaGlzIHRlc3QgaXMgcnVuIGluIHRoZSAiZmFzdCIgc3R5bGU6CisgIEFTU0VSVF9E
RUFUSChUaGlzU2hvdWxkRGllKCksICIiKTsKK30KK2BgYAorCisKKyMjIyBDYXZlYXRzCisKK1Ro
ZSBgc3RhdGVtZW50YCBhcmd1bWVudCBvZiBgQVNTRVJUX0VYSVQoKWAgY2FuIGJlIGFueSB2YWxp
ZCBDKysgc3RhdGVtZW50LiBJZgoraXQgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9uIHZpYSBh
IGByZXR1cm5gIHN0YXRlbWVudCBvciBieSB0aHJvd2luZyBhbgorZXhjZXB0aW9uLCB0aGUgZGVh
dGggdGVzdCBpcyBjb25zaWRlcmVkIHRvIGhhdmUgZmFpbGVkLiBTb21lIGdvb2dsZXRlc3QgbWFj
cm9zCittYXkgcmV0dXJuIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gKGUuZy4gYEFTU0VSVF9U
UlVFKClgKSwgc28gYmUgc3VyZSB0byBhdm9pZAordGhlbSBpbiBgc3RhdGVtZW50YC4KKworU2lu
Y2UgYHN0YXRlbWVudGAgcnVucyBpbiB0aGUgY2hpbGQgcHJvY2VzcywgYW55IGluLW1lbW9yeSBz
aWRlIGVmZmVjdCAoZS5nLgorbW9kaWZ5aW5nIGEgdmFyaWFibGUsIHJlbGVhc2luZyBtZW1vcnks
IGV0YykgaXQgY2F1c2VzIHdpbGwgKm5vdCogYmUgb2JzZXJ2YWJsZQoraW4gdGhlIHBhcmVudCBw
cm9jZXNzLiBJbiBwYXJ0aWN1bGFyLCBpZiB5b3UgcmVsZWFzZSBtZW1vcnkgaW4gYSBkZWF0aCB0
ZXN0LAoreW91ciBwcm9ncmFtIHdpbGwgZmFpbCB0aGUgaGVhcCBjaGVjayBhcyB0aGUgcGFyZW50
IHByb2Nlc3Mgd2lsbCBuZXZlciBzZWUgdGhlCittZW1vcnkgcmVjbGFpbWVkLiBUbyBzb2x2ZSB0
aGlzIHByb2JsZW0sIHlvdSBjYW4KKworMS4gIHRyeSBub3QgdG8gZnJlZSBtZW1vcnkgaW4gYSBk
ZWF0aCB0ZXN0OworMi4gIGZyZWUgdGhlIG1lbW9yeSBhZ2FpbiBpbiB0aGUgcGFyZW50IHByb2Nl
c3M7IG9yCiszLiAgZG8gbm90IHVzZSB0aGUgaGVhcCBjaGVja2VyIGluIHlvdXIgcHJvZ3JhbS4K
KworRHVlIHRvIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCwgeW91IGNhbm5vdCBwbGFjZSBtdWx0
aXBsZSBkZWF0aCB0ZXN0IGFzc2VydGlvbnMKK29uIHRoZSBzYW1lIGxpbmU7IG90aGVyd2lzZSwg
Y29tcGlsYXRpb24gd2lsbCBmYWlsIHdpdGggYW4gdW5vYnZpb3VzIGVycm9yCittZXNzYWdlLgor
CitEZXNwaXRlIHRoZSBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5IGFmZm9yZGVkIGJ5IHRoZSAidGhy
ZWFkc2FmZSIgc3R5bGUgb2YgZGVhdGgKK3Rlc3QsIHRocmVhZCBwcm9ibGVtcyBzdWNoIGFzIGRl
YWRsb2NrIGFyZSBzdGlsbCBwb3NzaWJsZSBpbiB0aGUgcHJlc2VuY2Ugb2YKK2hhbmRsZXJzIHJl
Z2lzdGVyZWQgd2l0aCBgcHRocmVhZF9hdGZvcmsoMylgLgorCisKKyMjIFVzaW5nIEFzc2VydGlv
bnMgaW4gU3ViLXJvdXRpbmVzCisKKyMjIyBBZGRpbmcgVHJhY2VzIHRvIEFzc2VydGlvbnMKKwor
SWYgYSB0ZXN0IHN1Yi1yb3V0aW5lIGlzIGNhbGxlZCBmcm9tIHNldmVyYWwgcGxhY2VzLCB3aGVu
IGFuIGFzc2VydGlvbiBpbnNpZGUgaXQKK2ZhaWxzLCBpdCBjYW4gYmUgaGFyZCB0byB0ZWxsIHdo
aWNoIGludm9jYXRpb24gb2YgdGhlIHN1Yi1yb3V0aW5lIHRoZSBmYWlsdXJlIGlzCitmcm9tLiAK
K1lvdSBjYW4gYWxsZXZpYXRlIHRoaXMgcHJvYmxlbSB1c2luZyBleHRyYSBsb2dnaW5nIG9yIGN1
c3RvbSBmYWlsdXJlIG1lc3NhZ2VzLAorYnV0IHRoYXQgdXN1YWxseSBjbHV0dGVycyB1cCB5b3Vy
IHRlc3RzLiBBIGJldHRlciBzb2x1dGlvbiBpcyB0byB1c2UgdGhlCitgU0NPUEVEX1RSQUNFYCBt
YWNybyBvciB0aGUgYFNjb3BlZFRyYWNlYCB1dGlsaXR5OgorCitgYGBjKysKK1NDT1BFRF9UUkFD
RShtZXNzYWdlKTsKK1Njb3BlZFRyYWNlIHRyYWNlKCJmaWxlX3BhdGgiLCBsaW5lX251bWJlciwg
bWVzc2FnZSk7CitgYGAKKword2hlcmUgYG1lc3NhZ2VgIGNhbiBiZSBhbnl0aGluZyBzdHJlYW1h
YmxlIHRvIGBzdGQ6Om9zdHJlYW1gLiBgU0NPUEVEX1RSQUNFYAorbWFjcm8gd2lsbCBjYXVzZSB0
aGUgY3VycmVudCBmaWxlIG5hbWUsIGxpbmUgbnVtYmVyLCBhbmQgdGhlIGdpdmVuIG1lc3NhZ2Ug
dG8gYmUKK2FkZGVkIGluIGV2ZXJ5IGZhaWx1cmUgbWVzc2FnZS4gYFNjb3BlZFRyYWNlYCBhY2Nl
cHRzIGV4cGxpY2l0IGZpbGUgbmFtZSBhbmQKK2xpbmUgbnVtYmVyIGluIGFyZ3VtZW50cywgd2hp
Y2ggaXMgdXNlZnVsIGZvciB3cml0aW5nIHRlc3QgaGVscGVycy4gVGhlIGVmZmVjdAord2lsbCBi
ZSB1bmRvbmUgd2hlbiB0aGUgY29udHJvbCBsZWF2ZXMgdGhlIGN1cnJlbnQgbGV4aWNhbCBzY29w
ZS4KKworRm9yIGV4YW1wbGUsCisKK2BgYGMrKworMTA6IHZvaWQgU3ViMShpbnQgbikgeworMTE6
ICAgRVhQRUNUX0VRKDEsIEJhcihuKSk7CisxMjogICBFWFBFQ1RfRVEoMiwgQmFyKG4gKyAxKSk7
CisxMzogfQorMTQ6CisxNTogVEVTVChGb29UZXN0LCBCYXIpIHsKKzE2OiAgIHsKKzE3OiAgICAg
U0NPUEVEX1RSQUNFKCJBIik7ICAvLyBUaGlzIHRyYWNlIHBvaW50IHdpbGwgYmUgaW5jbHVkZWQg
aW4KKzE4OiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVyeSBmYWlsdXJlIGluIHRoaXMg
c2NvcGUuCisxOTogICAgIFN1YjEoMSk7CisyMDogICB9CisyMTogICAvLyBOb3cgaXQgd29uJ3Qu
CisyMjogICBTdWIxKDkpOworMjM6IH0KK2BgYAorCitjb3VsZCByZXN1bHQgaW4gbWVzc2FnZXMg
bGlrZSB0aGVzZToKKworYGBgbm9uZQorcGF0aC90by9mb29fdGVzdC5jYzoxMTogRmFpbHVyZQor
VmFsdWUgb2Y6IEJhcihuKQorRXhwZWN0ZWQ6IDEKKyAgQWN0dWFsOiAyCisgICBUcmFjZToKK3Bh
dGgvdG8vZm9vX3Rlc3QuY2M6MTc6IEEKKworcGF0aC90by9mb29fdGVzdC5jYzoxMjogRmFpbHVy
ZQorVmFsdWUgb2Y6IEJhcihuICsgMSkKK0V4cGVjdGVkOiAyCisgIEFjdHVhbDogMworYGBgCisK
K1dpdGhvdXQgdGhlIHRyYWNlLCBpdCB3b3VsZCd2ZSBiZWVuIGRpZmZpY3VsdCB0byBrbm93IHdo
aWNoIGludm9jYXRpb24gb2YKK2BTdWIxKClgIHRoZSB0d28gZmFpbHVyZXMgY29tZSBmcm9tIHJl
c3BlY3RpdmVseS4gKFlvdSBjb3VsZCBhZGQKKworYW4gZXh0cmEgbWVzc2FnZSB0byBlYWNoIGFz
c2VydGlvbiBpbiBgU3ViMSgpYCB0byBpbmRpY2F0ZSB0aGUgdmFsdWUgb2YgYG5gLCBidXQKK3Ro
YXQncyB0ZWRpb3VzLikKKworU29tZSB0aXBzIG9uIHVzaW5nIGBTQ09QRURfVFJBQ0VgOgorCisx
LiAgV2l0aCBhIHN1aXRhYmxlIG1lc3NhZ2UsIGl0J3Mgb2Z0ZW4gZW5vdWdoIHRvIHVzZSBgU0NP
UEVEX1RSQUNFYCBhdCB0aGUKKyAgICBiZWdpbm5pbmcgb2YgYSBzdWItcm91dGluZSwgaW5zdGVh
ZCBvZiBhdCBlYWNoIGNhbGwgc2l0ZS4KKzIuICBXaGVuIGNhbGxpbmcgc3ViLXJvdXRpbmVzIGlu
c2lkZSBhIGxvb3AsIG1ha2UgdGhlIGxvb3AgaXRlcmF0b3IgcGFydCBvZiB0aGUKKyAgICBtZXNz
YWdlIGluIGBTQ09QRURfVFJBQ0VgIHN1Y2ggdGhhdCB5b3UgY2FuIGtub3cgd2hpY2ggaXRlcmF0
aW9uIHRoZSBmYWlsdXJlCisgICAgaXMgZnJvbS4KKzMuICBTb21ldGltZXMgdGhlIGxpbmUgbnVt
YmVyIG9mIHRoZSB0cmFjZSBwb2ludCBpcyBlbm91Z2ggZm9yIGlkZW50aWZ5aW5nIHRoZQorICAg
IHBhcnRpY3VsYXIgaW52b2NhdGlvbiBvZiBhIHN1Yi1yb3V0aW5lLiBJbiB0aGlzIGNhc2UsIHlv
dSBkb24ndCBoYXZlIHRvCisgICAgY2hvb3NlIGEgdW5pcXVlIG1lc3NhZ2UgZm9yIGBTQ09QRURf
VFJBQ0VgLiBZb3UgY2FuIHNpbXBseSB1c2UgYCIiYC4KKzQuICBZb3UgY2FuIHVzZSBgU0NPUEVE
X1RSQUNFYCBpbiBhbiBpbm5lciBzY29wZSB3aGVuIHRoZXJlIGlzIG9uZSBpbiB0aGUgb3V0ZXIK
KyAgICBzY29wZS4gSW4gdGhpcyBjYXNlLCBhbGwgYWN0aXZlIHRyYWNlIHBvaW50cyB3aWxsIGJl
IGluY2x1ZGVkIGluIHRoZSBmYWlsdXJlCisgICAgbWVzc2FnZXMsIGluIHJldmVyc2Ugb3JkZXIg
dGhleSBhcmUgZW5jb3VudGVyZWQuCis1LiAgVGhlIHRyYWNlIGR1bXAgaXMgY2xpY2thYmxlIGlu
IEVtYWNzIC0gaGl0IGByZXR1cm5gIG9uIGEgbGluZSBudW1iZXIgYW5kCisgICAgeW91J2xsIGJl
IHRha2VuIHRvIHRoYXQgbGluZSBpbiB0aGUgc291cmNlIGZpbGUhCisKKyoqQXZhaWxhYmlsaXR5
Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBQcm9wYWdhdGluZyBGYXRhbCBGYWlsdXJl
cworCitBIGNvbW1vbiBwaXRmYWxsIHdoZW4gdXNpbmcgYEFTU0VSVF8qYCBhbmQgYEZBSUwqYCBp
cyBub3QgdW5kZXJzdGFuZGluZyB0aGF0Cit3aGVuIHRoZXkgZmFpbCB0aGV5IG9ubHkgYWJvcnQg
dGhlIF9jdXJyZW50IGZ1bmN0aW9uXywgbm90IHRoZSBlbnRpcmUgdGVzdC4gRm9yCitleGFtcGxl
LCB0aGUgZm9sbG93aW5nIHRlc3Qgd2lsbCBzZWdmYXVsdDoKKworYGBgYysrCit2b2lkIFN1YnJv
dXRpbmUoKSB7CisgIC8vIEdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUgYW5kIGFib3J0cyB0aGUg
Y3VycmVudCBmdW5jdGlvbi4KKyAgQVNTRVJUX0VRKDEsIDIpOworCisgIC8vIFRoZSBmb2xsb3dp
bmcgd29uJ3QgYmUgZXhlY3V0ZWQuCisgIC4uLgorfQorCitURVNUKEZvb1Rlc3QsIEJhcikgewor
ICBTdWJyb3V0aW5lKCk7ICAvLyBUaGUgaW50ZW5kZWQgYmVoYXZpb3IgaXMgZm9yIHRoZSBmYXRh
bCBmYWlsdXJlCisgICAgICAgICAgICAgICAgIC8vIGluIFN1YnJvdXRpbmUoKSB0byBhYm9ydCB0
aGUgZW50aXJlIHRlc3QuCisKKyAgLy8gVGhlIGFjdHVhbCBiZWhhdmlvcjogdGhlIGZ1bmN0aW9u
IGdvZXMgb24gYWZ0ZXIgU3Vicm91dGluZSgpIHJldHVybnMuCisgIGludCogcCA9IE5VTEw7Cisg
ICpwID0gMzsgIC8vIFNlZ2ZhdWx0IQorfQorYGBgCisKK1RvIGFsbGV2aWF0ZSB0aGlzLCBnb29n
bGV0ZXN0IHByb3ZpZGVzIHRocmVlIGRpZmZlcmVudCBzb2x1dGlvbnMuIFlvdSBjb3VsZCB1c2UK
K2VpdGhlciBleGNlcHRpb25zLCB0aGUgYChBU1NFUlR8RVhQRUNUKV9OT19GQVRBTF9GQUlMVVJF
YCBhc3NlcnRpb25zIG9yIHRoZQorYEhhc0ZhdGFsRmFpbHVyZSgpYCBmdW5jdGlvbi4gVGhleSBh
cmUgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgdHdvCitzdWJzZWN0aW9ucy4KKworIyMjIyBB
c3NlcnRpbmcgb24gU3Vicm91dGluZXMgd2l0aCBhbiBleGNlcHRpb24KKworVGhlIGZvbGxvd2lu
ZyBjb2RlIGNhbiB0dXJuIEFTU0VSVC1mYWlsdXJlIGludG8gYW4gZXhjZXB0aW9uOgorCitgYGBj
KysKK2NsYXNzIFRocm93TGlzdGVuZXIgOiBwdWJsaWMgdGVzdGluZzo6RW1wdHlUZXN0RXZlbnRM
aXN0ZW5lciB7CisgIHZvaWQgT25UZXN0UGFydFJlc3VsdChjb25zdCB0ZXN0aW5nOjpUZXN0UGFy
dFJlc3VsdCYgcmVzdWx0KSBvdmVycmlkZSB7CisgICAgaWYgKHJlc3VsdC50eXBlKCkgPT0gdGVz
dGluZzo6VGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUpIHsKKyAgICAgIHRocm93IHRlc3Rp
bmc6OkFzc2VydGlvbkV4Y2VwdGlvbihyZXN1bHQpOworICAgIH0KKyAgfQorfTsKK2ludCBtYWlu
KGludCBhcmdjLCBjaGFyKiogYXJndikgeworICAuLi4KKyAgdGVzdGluZzo6VW5pdFRlc3Q6Okdl
dEluc3RhbmNlKCktPmxpc3RlbmVycygpLkFwcGVuZChuZXcgVGhyb3dMaXN0ZW5lcik7CisgIHJl
dHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CitgYGAKKworVGhpcyBsaXN0ZW5lciBzaG91bGQgYmUg
YWRkZWQgYWZ0ZXIgb3RoZXIgbGlzdGVuZXJzIGlmIHlvdSBoYXZlIGFueSwgb3RoZXJ3aXNlCit0
aGV5IHdvbid0IHNlZSBmYWlsZWQgYE9uVGVzdFBhcnRSZXN1bHRgLgorCisjIyMjIEFzc2VydGlu
ZyBvbiBTdWJyb3V0aW5lcworCitBcyBzaG93biBhYm92ZSwgaWYgeW91ciB0ZXN0IGNhbGxzIGEg
c3Vicm91dGluZSB0aGF0IGhhcyBhbiBgQVNTRVJUXypgIGZhaWx1cmUKK2luIGl0LCB0aGUgdGVz
dCB3aWxsIGNvbnRpbnVlIGFmdGVyIHRoZSBzdWJyb3V0aW5lIHJldHVybnMuIFRoaXMgbWF5IG5v
dCBiZSB3aGF0Cit5b3Ugd2FudC4KKworT2Z0ZW4gcGVvcGxlIHdhbnQgZmF0YWwgZmFpbHVyZXMg
dG8gcHJvcGFnYXRlIGxpa2UgZXhjZXB0aW9ucy4gRm9yIHRoYXQKK2dvb2dsZXRlc3Qgb2ZmZXJz
IHRoZSBmb2xsb3dpbmcgbWFjcm9zOgorCitGYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAg
ICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICB8IFZlcmlmaWVz
CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tCitgQVNTRVJUX05PX0ZBVEFMX0ZBSUxV
UkUoc3RhdGVtZW50KTtgIHwgYEVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKHN0YXRlbWVudCk7YCB8
IGBzdGF0ZW1lbnRgIGRvZXNuJ3QgZ2VuZXJhdGUgYW55IG5ldyBmYXRhbCBmYWlsdXJlcyBpbiB0
aGUgY3VycmVudCB0aHJlYWQuCisKK09ubHkgZmFpbHVyZXMgaW4gdGhlIHRocmVhZCB0aGF0IGV4
ZWN1dGVzIHRoZSBhc3NlcnRpb24gYXJlIGNoZWNrZWQgdG8gZGV0ZXJtaW5lCit0aGUgcmVzdWx0
IG9mIHRoaXMgdHlwZSBvZiBhc3NlcnRpb25zLiBJZiBgc3RhdGVtZW50YCBjcmVhdGVzIG5ldyB0
aHJlYWRzLAorZmFpbHVyZXMgaW4gdGhlc2UgdGhyZWFkcyBhcmUgaWdub3JlZC4KKworRXhhbXBs
ZXM6CisKK2BgYGMrKworQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoRm9vKCkpOworCitpbnQgaTsK
K0VYUEVDVF9OT19GQVRBTF9GQUlMVVJFKHsKKyAgaSA9IEJhcigpOworfSk7CitgYGAKKworKipB
dmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4gQXNzZXJ0aW9ucyBmcm9tIG11bHRp
cGxlIHRocmVhZHMgYXJlCitjdXJyZW50bHkgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzLgorCisj
IyMjIENoZWNraW5nIGZvciBGYWlsdXJlcyBpbiB0aGUgQ3VycmVudCBUZXN0CisKK2BIYXNGYXRh
bEZhaWx1cmUoKWAgaW4gdGhlIGA6OnRlc3Rpbmc6OlRlc3RgIGNsYXNzIHJldHVybnMgYHRydWVg
IGlmIGFuCithc3NlcnRpb24gaW4gdGhlIGN1cnJlbnQgdGVzdCBoYXMgc3VmZmVyZWQgYSBmYXRh
bCBmYWlsdXJlLiBUaGlzIGFsbG93cworZnVuY3Rpb25zIHRvIGNhdGNoIGZhdGFsIGZhaWx1cmVz
IGluIGEgc3ViLXJvdXRpbmUgYW5kIHJldHVybiBlYXJseS4KKworYGBgYysrCitjbGFzcyBUZXN0
IHsKKyBwdWJsaWM6CisgIC4uLgorICBzdGF0aWMgYm9vbCBIYXNGYXRhbEZhaWx1cmUoKTsKK307
CitgYGAKKworVGhlIHR5cGljYWwgdXNhZ2UsIHdoaWNoIGJhc2ljYWxseSBzaW11bGF0ZXMgdGhl
IGJlaGF2aW9yIG9mIGEgdGhyb3duIGV4Y2VwdGlvbiwKK2lzOgorCitgYGBjKysKK1RFU1QoRm9v
VGVzdCwgQmFyKSB7CisgIFN1YnJvdXRpbmUoKTsKKyAgLy8gQWJvcnRzIGlmIFN1YnJvdXRpbmUo
KSBoYWQgYSBmYXRhbCBmYWlsdXJlLgorICBpZiAoSGFzRmF0YWxGYWlsdXJlKCkpIHJldHVybjsK
KworICAvLyBUaGUgZm9sbG93aW5nIHdvbid0IGJlIGV4ZWN1dGVkLgorICAuLi4KK30KK2BgYAor
CitJZiBgSGFzRmF0YWxGYWlsdXJlKClgIGlzIHVzZWQgb3V0c2lkZSBvZiBgVEVTVCgpYCAsIGBU
RVNUX0YoKWAgLCBvciBhIHRlc3QKK2ZpeHR1cmUsIHlvdSBtdXN0IGFkZCB0aGUgYDo6dGVzdGlu
Zzo6VGVzdDo6YCBwcmVmaXgsIGFzIGluOgorCitgYGBjKysKK2lmICg6OnRlc3Rpbmc6OlRlc3Q6
Okhhc0ZhdGFsRmFpbHVyZSgpKSByZXR1cm47CitgYGAKKworU2ltaWxhcmx5LCBgSGFzTm9uZmF0
YWxGYWlsdXJlKClgIHJldHVybnMgYHRydWVgIGlmIHRoZSBjdXJyZW50IHRlc3QgaGFzIGF0Cits
ZWFzdCBvbmUgbm9uLWZhdGFsIGZhaWx1cmUsIGFuZCBgSGFzRmFpbHVyZSgpYCByZXR1cm5zIGB0
cnVlYCBpZiB0aGUgY3VycmVudAordGVzdCBoYXMgYXQgbGVhc3Qgb25lIGZhaWx1cmUgb2YgZWl0
aGVyIGtpbmQuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMj
IExvZ2dpbmcgQWRkaXRpb25hbCBJbmZvcm1hdGlvbgorCitJbiB5b3VyIHRlc3QgY29kZSwgeW91
IGNhbiBjYWxsIGBSZWNvcmRQcm9wZXJ0eSgia2V5IiwgdmFsdWUpYCB0byBsb2cgYWRkaXRpb25h
bAoraW5mb3JtYXRpb24sIHdoZXJlIGB2YWx1ZWAgY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBh
biBgaW50YC4gVGhlICpsYXN0KiB2YWx1ZQorcmVjb3JkZWQgZm9yIGEga2V5IHdpbGwgYmUgZW1p
dHRlZCB0byB0aGUgW1hNTCBvdXRwdXRdKCNnZW5lcmF0aW5nLWFuLXhtbC1yZXBvcnQpIGlmIHlv
dQorc3BlY2lmeSBvbmUuIEZvciBleGFtcGxlLCB0aGUgdGVzdAorCitgYGBjKysKK1RFU1RfRihX
aWRnZXRVc2FnZVRlc3QsIE1pbkFuZE1heFdpZGdldHMpIHsKKyAgUmVjb3JkUHJvcGVydHkoIk1h
eGltdW1XaWRnZXRzIiwgQ29tcHV0ZU1heFVzYWdlKCkpOworICBSZWNvcmRQcm9wZXJ0eSgiTWlu
aW11bVdpZGdldHMiLCBDb21wdXRlTWluVXNhZ2UoKSk7Cit9CitgYGAKKword2lsbCBvdXRwdXQg
WE1MIGxpa2UgdGhpczoKKworYGBgeG1sCisgIC4uLgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJNaW5B
bmRNYXhXaWRnZXRzIiBzdGF0dXM9InJ1biIgdGltZT0iMC4wMDYiIGNsYXNzbmFtZT0iV2lkZ2V0
VXNhZ2VUZXN0IiBNYXhpbXVtV2lkZ2V0cz0iMTIiIE1pbmltdW1XaWRnZXRzPSI5IiAvPgorICAu
Li4KK2BgYAorCis+IE5PVEU6Cis+Cis+ICogICBgUmVjb3JkUHJvcGVydHkoKWAgaXMgYSBzdGF0
aWMgbWVtYmVyIG9mIHRoZSBgVGVzdGAgY2xhc3MuIFRoZXJlZm9yZSBpdAorPiAgICAgbmVlZHMg
dG8gYmUgcHJlZml4ZWQgd2l0aCBgOjp0ZXN0aW5nOjpUZXN0OjpgIGlmIHVzZWQgb3V0c2lkZSBv
ZiB0aGUKKz4gICAgIGBURVNUYCBib2R5IGFuZCB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLgorPiAq
ICAgYCprZXkqYCBtdXN0IGJlIGEgdmFsaWQgWE1MIGF0dHJpYnV0ZSBuYW1lLCBhbmQgY2Fubm90
IGNvbmZsaWN0IHdpdGggdGhlCis+ICAgICBvbmVzIGFscmVhZHkgdXNlZCBieSBnb29nbGV0ZXN0
IChgbmFtZWAsIGBzdGF0dXNgLCBgdGltZWAsIGBjbGFzc25hbWVgLAorPiAgICAgYHR5cGVfcGFy
YW1gLCBhbmQgYHZhbHVlX3BhcmFtYCkuCis+ICogICBDYWxsaW5nIGBSZWNvcmRQcm9wZXJ0eSgp
YCBvdXRzaWRlIG9mIHRoZSBsaWZlc3BhbiBvZiBhIHRlc3QgaXMgYWxsb3dlZC4KKz4gICAgIElm
IGl0J3MgY2FsbGVkIG91dHNpZGUgb2YgYSB0ZXN0IGJ1dCBiZXR3ZWVuIGEgdGVzdCBjYXNlJ3MK
Kz4gICAgIGBTZXRVcFRlc3RDYXNlKClgIGFuZCBgVGVhckRvd25UZXN0Q2FzZSgpYCBtZXRob2Rz
LCBpdCB3aWxsIGJlIGF0dHJpYnV0ZWQKKz4gICAgIHRvIHRoZSBYTUwgZWxlbWVudCBmb3IgdGhl
IHRlc3QgY2FzZS4gSWYgaXQncyBjYWxsZWQgb3V0c2lkZSBvZiBhbGwgdGVzdAorPiAgICAgY2Fz
ZXMgKGUuZy4gaW4gYSB0ZXN0IGVudmlyb25tZW50KSwgaXQgd2lsbCBiZSBhdHRyaWJ1dGVkIHRv
IHRoZSB0b3AtbGV2ZWwKKz4gICAgIFhNTCBlbGVtZW50LgorCisqKkF2YWlsYWJpbGl0eSoqOiBM
aW51eCwgV2luZG93cywgTWFjLgorCisjIyBTaGFyaW5nIFJlc291cmNlcyBCZXR3ZWVuIFRlc3Rz
IGluIHRoZSBTYW1lIFRlc3QgQ2FzZQorCitnb29nbGV0ZXN0IGNyZWF0ZXMgYSBuZXcgdGVzdCBm
aXh0dXJlIG9iamVjdCBmb3IgZWFjaCB0ZXN0IGluIG9yZGVyIHRvIG1ha2UKK3Rlc3RzIGluZGVw
ZW5kZW50IGFuZCBlYXNpZXIgdG8gZGVidWcuIEhvd2V2ZXIsIHNvbWV0aW1lcyB0ZXN0cyB1c2Ug
cmVzb3VyY2VzCit0aGF0IGFyZSBleHBlbnNpdmUgdG8gc2V0IHVwLCBtYWtpbmcgdGhlIG9uZS1j
b3B5LXBlci10ZXN0IG1vZGVsIHByb2hpYml0aXZlbHkKK2V4cGVuc2l2ZS4KKworSWYgdGhlIHRl
c3RzIGRvbid0IGNoYW5nZSB0aGUgcmVzb3VyY2UsIHRoZXJlJ3Mgbm8gaGFybSBpbiB0aGVpciBz
aGFyaW5nIGEKK3NpbmdsZSByZXNvdXJjZSBjb3B5LiBTbywgaW4gYWRkaXRpb24gdG8gcGVyLXRl
c3Qgc2V0LXVwL3RlYXItZG93biwgZ29vZ2xldGVzdAorYWxzbyBzdXBwb3J0cyBwZXItdGVzdC1j
YXNlIHNldC11cC90ZWFyLWRvd24uIFRvIHVzZSBpdDoKKworMS4gIEluIHlvdXIgdGVzdCBmaXh0
dXJlIGNsYXNzIChzYXkgYEZvb1Rlc3RgICksIGRlY2xhcmUgYXMgYHN0YXRpY2Agc29tZSBtZW1i
ZXIKKyAgICB2YXJpYWJsZXMgdG8gaG9sZCB0aGUgc2hhcmVkIHJlc291cmNlcy4KKzEuICBPdXRz
aWRlIHlvdXIgdGVzdCBmaXh0dXJlIGNsYXNzICh0eXBpY2FsbHkganVzdCBiZWxvdyBpdCksIGRl
ZmluZSB0aG9zZQorICAgIG1lbWJlciB2YXJpYWJsZXMsIG9wdGlvbmFsbHkgZ2l2aW5nIHRoZW0g
aW5pdGlhbCB2YWx1ZXMuCisxLiAgSW4gdGhlIHNhbWUgdGVzdCBmaXh0dXJlIGNsYXNzLCBkZWZp
bmUgYSBgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpYAorICAgIGZ1bmN0aW9uIChyZW1lbWJl
ciBub3QgdG8gc3BlbGwgaXQgYXMgKipgU2V0dXBUZXN0Q2FzZWAqKiB3aXRoIGEgc21hbGwgYHVg
ISkKKyAgICB0byBzZXQgdXAgdGhlIHNoYXJlZCByZXNvdXJjZXMgYW5kIGEgYHN0YXRpYyB2b2lk
IFRlYXJEb3duVGVzdENhc2UoKWAKKyAgICBmdW5jdGlvbiB0byB0ZWFyIHRoZW0gZG93bi4KKwor
VGhhdCdzIGl0ISBnb29nbGV0ZXN0IGF1dG9tYXRpY2FsbHkgY2FsbHMgYFNldFVwVGVzdENhc2Uo
KWAgYmVmb3JlIHJ1bm5pbmcgdGhlCisqZmlyc3QgdGVzdCogaW4gdGhlIGBGb29UZXN0YCB0ZXN0
IGNhc2UgKGkuZS4gYmVmb3JlIGNyZWF0aW5nIHRoZSBmaXJzdAorYEZvb1Rlc3RgIG9iamVjdCks
IGFuZCBjYWxscyBgVGVhckRvd25UZXN0Q2FzZSgpYCBhZnRlciBydW5uaW5nIHRoZSAqbGFzdCB0
ZXN0KgoraW4gaXQgKGkuZS4gYWZ0ZXIgZGVsZXRpbmcgdGhlIGxhc3QgYEZvb1Rlc3RgIG9iamVj
dCkuIEluIGJldHdlZW4sIHRoZSB0ZXN0cyBjYW4KK3VzZSB0aGUgc2hhcmVkIHJlc291cmNlcy4K
KworUmVtZW1iZXIgdGhhdCB0aGUgdGVzdCBvcmRlciBpcyB1bmRlZmluZWQsIHNvIHlvdXIgY29k
ZSBjYW4ndCBkZXBlbmQgb24gYSB0ZXN0CitwcmVjZWRpbmcgb3IgZm9sbG93aW5nIGFub3RoZXIu
IEFsc28sIHRoZSB0ZXN0cyBtdXN0IGVpdGhlciBub3QgbW9kaWZ5IHRoZSBzdGF0ZQorb2YgYW55
IHNoYXJlZCByZXNvdXJjZSwgb3IsIGlmIHRoZXkgZG8gbW9kaWZ5IHRoZSBzdGF0ZSwgdGhleSBt
dXN0IHJlc3RvcmUgdGhlCitzdGF0ZSB0byBpdHMgb3JpZ2luYWwgdmFsdWUgYmVmb3JlIHBhc3Np
bmcgY29udHJvbCB0byB0aGUgbmV4dCB0ZXN0LgorCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBwZXIt
dGVzdC1jYXNlIHNldC11cCBhbmQgdGVhci1kb3duOgorCitgYGBjKysKK2NsYXNzIEZvb1Rlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIC8vIFBlci10ZXN0LWNh
c2Ugc2V0LXVwLgorICAvLyBDYWxsZWQgYmVmb3JlIHRoZSBmaXJzdCB0ZXN0IGluIHRoaXMgdGVz
dCBjYXNlLgorICAvLyBDYW4gYmUgb21pdHRlZCBpZiBub3QgbmVlZGVkLgorICBzdGF0aWMgdm9p
ZCBTZXRVcFRlc3RDYXNlKCkgeworICAgIHNoYXJlZF9yZXNvdXJjZV8gPSBuZXcgLi4uOworICB9
CisKKyAgLy8gUGVyLXRlc3QtY2FzZSB0ZWFyLWRvd24uCisgIC8vIENhbGxlZCBhZnRlciB0aGUg
bGFzdCB0ZXN0IGluIHRoaXMgdGVzdCBjYXNlLgorICAvLyBDYW4gYmUgb21pdHRlZCBpZiBub3Qg
bmVlZGVkLgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIGRlbGV0ZSBz
aGFyZWRfcmVzb3VyY2VfOworICAgIHNoYXJlZF9yZXNvdXJjZV8gPSBOVUxMOworICB9CisKKyAg
Ly8gWW91IGNhbiBkZWZpbmUgcGVyLXRlc3Qgc2V0LXVwIGxvZ2ljIGFzIHVzdWFsLgorICB2aXJ0
dWFsIHZvaWQgU2V0VXAoKSB7IC4uLiB9CisKKyAgLy8gWW91IGNhbiBkZWZpbmUgcGVyLXRlc3Qg
dGVhci1kb3duIGxvZ2ljIGFzIHVzdWFsLgorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7IC4u
LiB9CisKKyAgLy8gU29tZSBleHBlbnNpdmUgcmVzb3VyY2Ugc2hhcmVkIGJ5IGFsbCB0ZXN0cy4K
KyAgc3RhdGljIFQqIHNoYXJlZF9yZXNvdXJjZV87Cit9OworCitUKiBGb29UZXN0OjpzaGFyZWRf
cmVzb3VyY2VfID0gTlVMTDsKKworVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7CisgIC4uLiB5b3Ug
Y2FuIHJlZmVyIHRvIHNoYXJlZF9yZXNvdXJjZV8gaGVyZSAuLi4KK30KKworVEVTVF9GKEZvb1Rl
c3QsIFRlc3QyKSB7CisgIC4uLiB5b3UgY2FuIHJlZmVyIHRvIHNoYXJlZF9yZXNvdXJjZV8gaGVy
ZSAuLi4KK30KK2BgYAorCitOT1RFOiBUaG91Z2ggdGhlIGFib3ZlIGNvZGUgZGVjbGFyZXMgYFNl
dFVwVGVzdENhc2UoKWAgcHJvdGVjdGVkLCBpdCBtYXkKK3NvbWV0aW1lcyBiZSBuZWNlc3Nhcnkg
dG8gZGVjbGFyZSBpdCBwdWJsaWMsIHN1Y2ggYXMgd2hlbiB1c2luZyBpdCB3aXRoCitgVEVTVF9Q
YC4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgR2xvYmFs
IFNldC1VcCBhbmQgVGVhci1Eb3duCisKK0p1c3QgYXMgeW91IGNhbiBkbyBzZXQtdXAgYW5kIHRl
YXItZG93biBhdCB0aGUgdGVzdCBsZXZlbCBhbmQgdGhlIHRlc3QgY2FzZQorbGV2ZWwsIHlvdSBj
YW4gYWxzbyBkbyBpdCBhdCB0aGUgdGVzdCBwcm9ncmFtIGxldmVsLiBIZXJlJ3MgaG93LgorCitG
aXJzdCwgeW91IHN1YmNsYXNzIHRoZSBgOjp0ZXN0aW5nOjpFbnZpcm9ubWVudGAgY2xhc3MgdG8g
ZGVmaW5lIGEgdGVzdAorZW52aXJvbm1lbnQsIHdoaWNoIGtub3dzIGhvdyB0byBzZXQtdXAgYW5k
IHRlYXItZG93bjoKKworYGBgYysrCitjbGFzcyBFbnZpcm9ubWVudCB7CisgcHVibGljOgorICB2
aXJ0dWFsIH5FbnZpcm9ubWVudCgpIHt9CisKKyAgLy8gT3ZlcnJpZGUgdGhpcyB0byBkZWZpbmUg
aG93IHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQuCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHt9
CisKKyAgLy8gT3ZlcnJpZGUgdGhpcyB0byBkZWZpbmUgaG93IHRvIHRlYXIgZG93biB0aGUgZW52
aXJvbm1lbnQuCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHt9Cit9OworYGBgCisKK1RoZW4s
IHlvdSByZWdpc3RlciBhbiBpbnN0YW5jZSBvZiB5b3VyIGVudmlyb25tZW50IGNsYXNzIHdpdGgg
Z29vZ2xldGVzdCBieQorY2FsbGluZyB0aGUgYDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmly
b25tZW50KClgIGZ1bmN0aW9uOgorCitgYGBjKysKK0Vudmlyb25tZW50KiBBZGRHbG9iYWxUZXN0
RW52aXJvbm1lbnQoRW52aXJvbm1lbnQqIGVudik7CitgYGAKKworTm93LCB3aGVuIGBSVU5fQUxM
X1RFU1RTKClgIGlzIGNhbGxlZCwgaXQgZmlyc3QgY2FsbHMgdGhlIGBTZXRVcCgpYCBtZXRob2Qg
b2YKK3RoZSBlbnZpcm9ubWVudCBvYmplY3QsIHRoZW4gcnVucyB0aGUgdGVzdHMgaWYgdGhlcmUg
d2FzIG5vIGZhdGFsIGZhaWx1cmVzLCBhbmQKK2ZpbmFsbHkgY2FsbHMgYFRlYXJEb3duKClgIG9m
IHRoZSBlbnZpcm9ubWVudCBvYmplY3QuCisKK0l0J3MgT0sgdG8gcmVnaXN0ZXIgbXVsdGlwbGUg
ZW52aXJvbm1lbnQgb2JqZWN0cy4gSW4gdGhpcyBjYXNlLCB0aGVpciBgU2V0VXAoKWAKK3dpbGwg
YmUgY2FsbGVkIGluIHRoZSBvcmRlciB0aGV5IGFyZSByZWdpc3RlcmVkLCBhbmQgdGhlaXIgYFRl
YXJEb3duKClgIHdpbGwgYmUKK2NhbGxlZCBpbiB0aGUgcmV2ZXJzZSBvcmRlci4KKworTm90ZSB0
aGF0IGdvb2dsZXRlc3QgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSByZWdpc3RlcmVkIGVudmlyb25t
ZW50IG9iamVjdHMuCitUaGVyZWZvcmUgKipkbyBub3QgZGVsZXRlIHRoZW0qKiBieSB5b3Vyc2Vs
Zi4KKworWW91IHNob3VsZCBjYWxsIGBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgYmVmb3Jl
IGBSVU5fQUxMX1RFU1RTKClgIGlzIGNhbGxlZCwKK3Byb2JhYmx5IGluIGBtYWluKClgLiBJZiB5
b3UgdXNlIGBndGVzdF9tYWluYCwgeW91IG5lZWQgdG8gY2FsbCB0aGlzIGJlZm9yZQorYG1haW4o
KWAgc3RhcnRzIGZvciBpdCB0byB0YWtlIGVmZmVjdC4gT25lIHdheSB0byBkbyB0aGlzIGlzIHRv
IGRlZmluZSBhIGdsb2JhbAordmFyaWFibGUgbGlrZSB0aGlzOgorCitgYGBjKysKKzo6dGVzdGlu
Zzo6RW52aXJvbm1lbnQqIGNvbnN0IGZvb19lbnYgPQorICAgIDo6dGVzdGluZzo6QWRkR2xvYmFs
VGVzdEVudmlyb25tZW50KG5ldyBGb29FbnZpcm9ubWVudCk7CitgYGAKKworSG93ZXZlciwgd2Ug
c3Ryb25nbHkgcmVjb21tZW5kIHlvdSB0byB3cml0ZSB5b3VyIG93biBgbWFpbigpYCBhbmQgY2Fs
bAorYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCB0aGVyZSwgYXMgcmVseWluZyBvbiBpbml0
aWFsaXphdGlvbiBvZiBnbG9iYWwKK3ZhcmlhYmxlcyBtYWtlcyB0aGUgY29kZSBoYXJkZXIgdG8g
cmVhZCBhbmQgbWF5IGNhdXNlIHByb2JsZW1zIHdoZW4geW91IHJlZ2lzdGVyCittdWx0aXBsZSBl
bnZpcm9ubWVudHMgZnJvbSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMgYW5kIHRoZSBlbnZp
cm9ubWVudHMgaGF2ZQorZGVwZW5kZW5jaWVzIGFtb25nIHRoZW0gKHJlbWVtYmVyIHRoYXQgdGhl
IGNvbXBpbGVyIGRvZXNuJ3QgZ3VhcmFudGVlIHRoZSBvcmRlcgoraW4gd2hpY2ggZ2xvYmFsIHZh
cmlhYmxlcyBmcm9tIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cyBhcmUgaW5pdGlhbGl6ZWQp
LgorCisjIyBWYWx1ZS1QYXJhbWV0ZXJpemVkIFRlc3RzCisKKypWYWx1ZS1wYXJhbWV0ZXJpemVk
IHRlc3RzKiBhbGxvdyB5b3UgdG8gdGVzdCB5b3VyIGNvZGUgd2l0aCBkaWZmZXJlbnQKK3BhcmFt
ZXRlcnMgd2l0aG91dCB3cml0aW5nIG11bHRpcGxlIGNvcGllcyBvZiB0aGUgc2FtZSB0ZXN0LiBU
aGlzIGlzIHVzZWZ1bCBpbiBhCitudW1iZXIgb2Ygc2l0dWF0aW9ucywgZm9yIGV4YW1wbGU6CisK
KyogICBZb3UgaGF2ZSBhIHBpZWNlIG9mIGNvZGUgd2hvc2UgYmVoYXZpb3IgaXMgYWZmZWN0ZWQg
Ynkgb25lIG9yIG1vcmUKKyAgICBjb21tYW5kLWxpbmUgZmxhZ3MuIFlvdSB3YW50IHRvIG1ha2Ug
c3VyZSB5b3VyIGNvZGUgcGVyZm9ybXMgY29ycmVjdGx5IGZvcgorICAgIHZhcmlvdXMgdmFsdWVz
IG9mIHRob3NlIGZsYWdzLgorKiAgIFlvdSB3YW50IHRvIHRlc3QgZGlmZmVyZW50IGltcGxlbWVu
dGF0aW9ucyBvZiBhbiBPTyBpbnRlcmZhY2UuCisqICAgWW91IHdhbnQgdG8gdGVzdCB5b3VyIGNv
ZGUgb3ZlciB2YXJpb3VzIGlucHV0cyAoYS5rLmEuIGRhdGEtZHJpdmVuIHRlc3RpbmcpLgorICAg
IFRoaXMgZmVhdHVyZSBpcyBlYXN5IHRvIGFidXNlLCBzbyBwbGVhc2UgZXhlcmNpc2UgeW91ciBn
b29kIHNlbnNlIHdoZW4gZG9pbmcKKyAgICBpdCEKKworIyMjIEhvdyB0byBXcml0ZSBWYWx1ZS1Q
YXJhbWV0ZXJpemVkIFRlc3RzCisKK1RvIHdyaXRlIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMs
IGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4dHVyZSBjbGFzcy4gSXQKK211c3QgYmUgZGVy
aXZlZCBmcm9tIGJvdGggYDo6dGVzdGluZzo6VGVzdGAgYW5kCitgOjp0ZXN0aW5nOjpXaXRoUGFy
YW1JbnRlcmZhY2U8VD5gICh0aGUgbGF0dGVyIGlzIGEgcHVyZSBpbnRlcmZhY2UpLCB3aGVyZSBg
VGAKK2lzIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVlcy4gRm9yIGNvbnZlbmllbmNl
LCB5b3UgY2FuIGp1c3QgZGVyaXZlIHRoZQorZml4dHVyZSBjbGFzcyBmcm9tIGA6OnRlc3Rpbmc6
OlRlc3RXaXRoUGFyYW08VD5gLCB3aGljaCBpdHNlbGYgaXMgZGVyaXZlZCBmcm9tCitib3RoIGA6
OnRlc3Rpbmc6OlRlc3RgIGFuZCBgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD5gLiBg
VGAgY2FuIGJlIGFueQorY29weWFibGUgdHlwZS4gSWYgaXQncyBhIHJhdyBwb2ludGVyLCB5b3Ug
YXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUKK2xpZmVzcGFuIG9mIHRoZSBwb2ludGVk
IHZhbHVlcy4KKworTk9URTogSWYgeW91ciB0ZXN0IGZpeHR1cmUgZGVmaW5lcyBgU2V0VXBUZXN0
Q2FzZSgpYCBvciBgVGVhckRvd25UZXN0Q2FzZSgpYAordGhleSBtdXN0IGJlIGRlY2xhcmVkICoq
cHVibGljKiogcmF0aGVyIHRoYW4gKipwcm90ZWN0ZWQqKiBpbiBvcmRlciB0byB1c2UKK2BURVNU
X1BgLgorCitgYGBjKysKK2NsYXNzIEZvb1Rlc3QgOgorICAgIHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3RXaXRoUGFyYW08Y29uc3QgY2hhcio+IHsKKyAgLy8gWW91IGNhbiBpbXBsZW1lbnQgYWxsIHRo
ZSB1c3VhbCBmaXh0dXJlIGNsYXNzIG1lbWJlcnMgaGVyZS4KKyAgLy8gVG8gYWNjZXNzIHRoZSB0
ZXN0IHBhcmFtZXRlciwgY2FsbCBHZXRQYXJhbSgpIGZyb20gY2xhc3MKKyAgLy8gVGVzdFdpdGhQ
YXJhbTxUPi4KK307CisKKy8vIE9yLCB3aGVuIHlvdSB3YW50IHRvIGFkZCBwYXJhbWV0ZXJzIHRv
IGEgcHJlLWV4aXN0aW5nIGZpeHR1cmUgY2xhc3M6CitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6
OnRlc3Rpbmc6OlRlc3QgeworICAuLi4KK307CitjbGFzcyBCYXJUZXN0IDogcHVibGljIEJhc2VU
ZXN0LAorICAgICAgICAgICAgICAgIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFj
ZTxjb25zdCBjaGFyKj4geworICAuLi4KK307CitgYGAKKworVGhlbiwgdXNlIHRoZSBgVEVTVF9Q
YCBtYWNybyB0byBkZWZpbmUgYXMgbWFueSB0ZXN0IHBhdHRlcm5zIHVzaW5nIHRoaXMgZml4dHVy
ZQorYXMgeW91IHdhbnQuIFRoZSBgX1BgIHN1ZmZpeCBpcyBmb3IgInBhcmFtZXRlcml6ZWQiIG9y
ICJwYXR0ZXJuIiwgd2hpY2hldmVyIHlvdQorcHJlZmVyIHRvIHRoaW5rLgorCitgYGBjKysKK1RF
U1RfUChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJbnNpZGUgYSB0ZXN0LCBhY2Nlc3MgdGhl
IHRlc3QgcGFyYW1ldGVyIHdpdGggdGhlIEdldFBhcmFtKCkgbWV0aG9kCisgIC8vIG9mIHRoZSBU
ZXN0V2l0aFBhcmFtPFQ+IGNsYXNzOgorICBFWFBFQ1RfVFJVRShmb28uQmxhaChHZXRQYXJhbSgp
KSk7CisgIC4uLgorfQorCitURVNUX1AoRm9vVGVzdCwgSGFzQmxhaEJsYWgpIHsKKyAgLi4uCit9
CitgYGAKKworRmluYWxseSwgeW91IGNhbiB1c2UgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCB0
byBpbnN0YW50aWF0ZSB0aGUgdGVzdCBjYXNlIHdpdGgKK2FueSBzZXQgb2YgcGFyYW1ldGVycyB5
b3Ugd2FudC4gZ29vZ2xldGVzdCBkZWZpbmVzIGEgbnVtYmVyIG9mIGZ1bmN0aW9ucyBmb3IKK2dl
bmVyYXRpbmcgdGVzdCBwYXJhbWV0ZXJzLiBUaGV5IHJldHVybiB3aGF0IHdlIGNhbGwgKHN1cnBy
aXNlISkgKnBhcmFtZXRlcgorZ2VuZXJhdG9ycyouIEhlcmUgaXMgYSBzdW1tYXJ5IG9mIHRoZW0s
IHdoaWNoIGFyZSBhbGwgaW4gdGhlIGB0ZXN0aW5nYAorbmFtZXNwYWNlOgorCit8IFBhcmFtZXRl
ciBHZW5lcmF0b3IgICAgICAgICAgfCBCZWhhdmlvciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKK3wgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAorfCBgUmFuZ2UoYmVnaW4sIGVuZCBb
LCBzdGVwXSlgIHwgWWllbGRzIHZhbHVlcyBge2JlZ2luLCBiZWdpbitzdGVwLCBiZWdpbitzdGVw
K3N0ZXAsIC4uLn1gLiBUaGUgdmFsdWVzIGRvIG5vdCBpbmNsdWRlIGBlbmRgLiBgc3RlcGAgZGVm
YXVsdHMgdG8gMS4gICAgICB8Cit8IGBWYWx1ZXModjEsIHYyLCAuLi4sIHZOKWAgICAgfCBZaWVs
ZHMgdmFsdWVzIGB7djEsIHYyLCAuLi4sIHZOfWAuICAgICAgICAgIHwKK3wgYFZhbHVlc0luKGNv
bnRhaW5lcilgIGFuZCBgVmFsdWVzSW4oYmVnaW4sZW5kKWAgICB8IFlpZWxkcyB2YWx1ZXMgZnJv
bSBhIEMtc3R5bGUgYXJyYXksIGFuIFNUTC1zdHlsZSBjb250YWluZXIsIG9yIGFuIGl0ZXJhdG9y
IHJhbmdlICBgW2JlZ2luLCBlbmQpYC4gfAorfCBgQm9vbCgpYCAgICAgICAgICAgICAgICAgICAg
IHwgWWllbGRzIHNlcXVlbmNlIGB7ZmFsc2UsIHRydWV9YC4gICAgICAgICAgICB8Cit8IGBDb21i
aW5lKGcxLCBnMiwgLi4uLCBnTilgICAgfCBZaWVsZHMgYWxsIGNvbWJpbmF0aW9ucyAoQ2FydGVz
aWFuIHByb2R1Y3QpIGFzIHN0ZFw6XDp0dXBsZXMgb2YgdGhlIHZhbHVlcyBnZW5lcmF0ZWQgYnkg
dGhlIGBOYCBnZW5lcmF0b3JzLiAgICAgICAgICAgIHwKKworRm9yIG1vcmUgZGV0YWlscywgc2Vl
IHRoZSBjb21tZW50cyBhdCB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlc2UgZnVuY3Rpb25zLgorCitU
aGUgZm9sbG93aW5nIHN0YXRlbWVudCB3aWxsIGluc3RhbnRpYXRlIHRlc3RzIGZyb20gdGhlIGBG
b29UZXN0YCB0ZXN0IGNhc2UgZWFjaAord2l0aCBwYXJhbWV0ZXIgdmFsdWVzIGAibWVlbnkiYCwg
YCJtaW55ImAsIGFuZCBgIm1vZSJgLgorCitgYGBjKysKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KEluc3RhbnRpYXRpb25OYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgRm9vVGVzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKCJtZWVueSIsICJtaW55Iiwg
Im1vZSIpKTsKK2BgYAorCitOT1RFOiBUaGUgY29kZSBhYm92ZSBtdXN0IGJlIHBsYWNlZCBhdCBn
bG9iYWwgb3IgbmFtZXNwYWNlIHNjb3BlLCBub3QgYXQKK2Z1bmN0aW9uIHNjb3BlLgorCitOT1RF
OiBEb24ndCBmb3JnZXQgdGhpcyBzdGVwISBJZiB5b3UgZG8geW91ciB0ZXN0IHdpbGwgc2lsZW50
bHkgcGFzcywgYnV0IG5vbmUKK29mIGl0cyBjYXNlcyB3aWxsIGV2ZXIgcnVuIQorCitUbyBkaXN0
aW5ndWlzaCBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIHRoZSBwYXR0ZXJuICh5ZXMsIHlvdSBjYW4g
aW5zdGFudGlhdGUgaXQKK21vcmUgdGhhbiBvbmNlKSwgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIGBJ
TlNUQU5USUFURV9URVNUX0NBU0VfUGAgaXMgYSBwcmVmaXgKK3RoYXQgd2lsbCBiZSBhZGRlZCB0
byB0aGUgYWN0dWFsIHRlc3QgY2FzZSBuYW1lLiBSZW1lbWJlciB0byBwaWNrIHVuaXF1ZQorcHJl
Zml4ZXMgZm9yIGRpZmZlcmVudCBpbnN0YW50aWF0aW9ucy4gVGhlIHRlc3RzIGZyb20gdGhlIGlu
c3RhbnRpYXRpb24gYWJvdmUKK3dpbGwgaGF2ZSB0aGVzZSBuYW1lczoKKworKiAgIGBJbnN0YW50
aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzBgIGZvciBgIm1lZW55ImAKKyogICBgSW5zdGFu
dGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8xYCBmb3IgYCJtaW55ImAKKyogICBgSW5zdGFu
dGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8yYCBmb3IgYCJtb2UiYAorKiAgIGBJbnN0YW50
aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzBgIGZvciBgIm1lZW55ImAKKyogICBgSW5z
dGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8xYCBmb3IgYCJtaW55ImAKKyogICBg
SW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8yYCBmb3IgYCJtb2UiYAorCitZ
b3UgY2FuIHVzZSB0aGVzZSBuYW1lcyBpbiBbYC0tZ3Rlc3RfZmlsdGVyYF0oI3J1bm5pbmctYS1z
dWJzZXQtb2YtdGhlLXRlc3RzKS4KKworVGhpcyBzdGF0ZW1lbnQgd2lsbCBpbnN0YW50aWF0ZSBh
bGwgdGVzdHMgZnJvbSBgRm9vVGVzdGAgYWdhaW4sIGVhY2ggd2l0aAorcGFyYW1ldGVyIHZhbHVl
cyBgImNhdCJgIGFuZCBgImRvZyJgOgorCitgYGBjKysKK2NvbnN0IGNoYXIqIHBldHNbXSA9IHsi
Y2F0IiwgImRvZyJ9OworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQW5vdGhlckluc3RhbnRpYXRp
b25OYW1lLCBGb29UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1
ZXNJbihwZXRzKSk7CitgYGAKKworVGhlIHRlc3RzIGZyb20gdGhlIGluc3RhbnRpYXRpb24gYWJv
dmUgd2lsbCBoYXZlIHRoZXNlIG5hbWVzOgorCisqICAgYEFub3RoZXJJbnN0YW50aWF0aW9uTmFt
ZS9Gb29UZXN0LkRvZXNCbGFoLzBgIGZvciBgImNhdCJgCisqICAgYEFub3RoZXJJbnN0YW50aWF0
aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzFgIGZvciBgImRvZyJgCisqICAgYEFub3RoZXJJbnN0
YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzBgIGZvciBgImNhdCJgCisqICAgYEFu
b3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzFgIGZvciBgImRvZyJg
CisKK1BsZWFzZSBub3RlIHRoYXQgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCB3aWxsIGluc3Rh
bnRpYXRlICphbGwqIHRlc3RzIGluIHRoZQorZ2l2ZW4gdGVzdCBjYXNlLCB3aGV0aGVyIHRoZWly
IGRlZmluaXRpb25zIGNvbWUgYmVmb3JlIG9yICphZnRlciogdGhlCitgSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1BgIHN0YXRlbWVudC4KKworWW91IGNhbiBzZWUgc2FtcGxlN191bml0dGVzdC5jYyBh
bmQgc2FtcGxlOF91bml0dGVzdC5jYyBmb3IgbW9yZSBleGFtcGxlcy4KKworKipBdmFpbGFiaWxp
dHkqKjogTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFjCisK
KyMjIyBDcmVhdGluZyBWYWx1ZS1QYXJhbWV0ZXJpemVkIEFic3RyYWN0IFRlc3RzCisKK0luIHRo
ZSBhYm92ZSwgd2UgZGVmaW5lIGFuZCBpbnN0YW50aWF0ZSBgRm9vVGVzdGAgaW4gdGhlICpzYW1l
KiBzb3VyY2UgZmlsZS4KK1NvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gZGVmaW5lIHZhbHVlLXBh
cmFtZXRlcml6ZWQgdGVzdHMgaW4gYSBsaWJyYXJ5IGFuZCBsZXQKK290aGVyIHBlb3BsZSBpbnN0
YW50aWF0ZSB0aGVtIGxhdGVyLiBUaGlzIHBhdHRlcm4gaXMga25vd24gYXMgKmFic3RyYWN0IHRl
c3RzKi4KK0FzIGFuIGV4YW1wbGUgb2YgaXRzIGFwcGxpY2F0aW9uLCB3aGVuIHlvdSBhcmUgZGVz
aWduaW5nIGFuIGludGVyZmFjZSB5b3UgY2FuCit3cml0ZSBhIHN0YW5kYXJkIHN1aXRlIG9mIGFi
c3RyYWN0IHRlc3RzIChwZXJoYXBzIHVzaW5nIGEgZmFjdG9yeSBmdW5jdGlvbiBhcwordGhlIHRl
c3QgcGFyYW1ldGVyKSB0aGF0IGFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGludGVyZmFjZSBh
cmUgZXhwZWN0ZWQgdG8KK3Bhc3MuIFdoZW4gc29tZW9uZSBpbXBsZW1lbnRzIHRoZSBpbnRlcmZh
Y2UsIHRoZXkgY2FuIGluc3RhbnRpYXRlIHlvdXIgc3VpdGUgdG8KK2dldCBhbGwgdGhlIGludGVy
ZmFjZS1jb25mb3JtYW5jZSB0ZXN0cyBmb3IgZnJlZS4KKworVG8gZGVmaW5lIGFic3RyYWN0IHRl
c3RzLCB5b3Ugc2hvdWxkIG9yZ2FuaXplIHlvdXIgY29kZSBsaWtlIHRoaXM6CisKKzEuICBQdXQg
dGhlIGRlZmluaXRpb24gb2YgdGhlIHBhcmFtZXRlcml6ZWQgdGVzdCBmaXh0dXJlIGNsYXNzIChl
LmcuIGBGb29UZXN0YCkKKyAgICBpbiBhIGhlYWRlciBmaWxlLCBzYXkgYGZvb19wYXJhbV90ZXN0
LmhgLiBUaGluayBvZiB0aGlzIGFzICpkZWNsYXJpbmcqIHlvdXIKKyAgICBhYnN0cmFjdCB0ZXN0
cy4KKzEuICBQdXQgdGhlIGBURVNUX1BgIGRlZmluaXRpb25zIGluIGBmb29fcGFyYW1fdGVzdC5j
Y2AsIHdoaWNoIGluY2x1ZGVzCisgICAgYGZvb19wYXJhbV90ZXN0LmhgLiBUaGluayBvZiB0aGlz
IGFzICppbXBsZW1lbnRpbmcqIHlvdXIgYWJzdHJhY3QgdGVzdHMuCisKK09uY2UgdGhleSBhcmUg
ZGVmaW5lZCwgeW91IGNhbiBpbnN0YW50aWF0ZSB0aGVtIGJ5IGluY2x1ZGluZyBgZm9vX3BhcmFt
X3Rlc3QuaGAsCitpbnZva2luZyBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoKWAsIGFuZCBkZXBl
bmRpbmcgb24gdGhlIGxpYnJhcnkgdGFyZ2V0IHRoYXQKK2NvbnRhaW5zIGBmb29fcGFyYW1fdGVz
dC5jY2AuIFlvdSBjYW4gaW5zdGFudGlhdGUgdGhlIHNhbWUgYWJzdHJhY3QgdGVzdCBjYXNlCitt
dWx0aXBsZSB0aW1lcywgcG9zc2libHkgaW4gZGlmZmVyZW50IHNvdXJjZSBmaWxlcy4KKworIyMj
IFNwZWNpZnlpbmcgTmFtZXMgZm9yIFZhbHVlLVBhcmFtZXRlcml6ZWQgVGVzdCBQYXJhbWV0ZXJz
CisKK1RoZSBvcHRpb25hbCBsYXN0IGFyZ3VtZW50IHRvIGBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UCgpYCBhbGxvd3MgdGhlIHVzZXIgdG8KK3NwZWNpZnkgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHRo
YXQgZ2VuZXJhdGVzIGN1c3RvbSB0ZXN0IG5hbWUgc3VmZml4ZXMgYmFzZWQgb24KK3RoZSB0ZXN0
IHBhcmFtZXRlcnMuIFRoZSBmdW5jdGlvbiBzaG91bGQgYWNjZXB0IG9uZSBhcmd1bWVudCBvZiB0
eXBlCitgdGVzdGluZzo6VGVzdFBhcmFtSW5mbzxjbGFzcyBQYXJhbVR5cGU+YCwgYW5kIHJldHVy
biBgc3RkOjpzdHJpbmdgLgorCitgdGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZWAgaXMg
YSBidWlsdGluIHRlc3Qgc3VmZml4IGdlbmVyYXRvciB0aGF0CityZXR1cm5zIHRoZSB2YWx1ZSBv
ZiBgdGVzdGluZzo6UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgpKWAuIEl0IGRvZXMgbm90IHdvcmsg
Zm9yCitgc3RkOjpzdHJpbmdgIG9yIEMgc3RyaW5ncy4KKworTk9URTogdGVzdCBuYW1lcyBtdXN0
IGJlIG5vbi1lbXB0eSwgdW5pcXVlLCBhbmQgbWF5IG9ubHkgY29udGFpbiBBU0NJSQorYWxwaGFu
dW1lcmljIGNoYXJhY3RlcnMuIEluIHBhcnRpY3VsYXIsIHRoZXkgW3Nob3VsZCBub3QgY29udGFp
bgordW5kZXJzY29yZXNdKGh0dHBzOi8vZzNkb2MuY29ycC5nb29nbGUuY29tL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9nM2RvYy9mYXEubWQjbm8tdW5kZXJzY29yZXMpLgorCitg
YGBjKysKK2NsYXNzIE15VGVzdENhc2UgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxp
bnQ+IHt9OworCitURVNUX1AoTXlUZXN0Q2FzZSwgTXlUZXN0KQoreworICBzdGQ6OmNvdXQgPDwg
IkV4YW1wbGUgVGVzdCBQYXJhbTogIiA8PCBHZXRQYXJhbSgpIDw8IHN0ZDo6ZW5kbDsKK30KKwor
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoTXlHcm91cCwgTXlUZXN0Q2FzZSwgdGVzdGluZzo6UmFu
Z2UoMCwgMTApLAorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6UHJpbnRUb1N0cmlu
Z1BhcmFtTmFtZSgpKTsKK2BgYAorCisjIyBUeXBlZCBUZXN0czwvaWQ+CisKK1N1cHBvc2UgeW91
IGhhdmUgbXVsdGlwbGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBzYW1lIGludGVyZmFjZSBhbmQg
d2FudCB0byBtYWtlCitzdXJlIHRoYXQgYWxsIG9mIHRoZW0gc2F0aXNmeSBzb21lIGNvbW1vbiBy
ZXF1aXJlbWVudHMuIE9yLCB5b3UgbWF5IGhhdmUgZGVmaW5lZAorc2V2ZXJhbCB0eXBlcyB0aGF0
IGFyZSBzdXBwb3NlZCB0byBjb25mb3JtIHRvIHRoZSBzYW1lICJjb25jZXB0IiBhbmQgeW91IHdh
bnQgdG8KK3ZlcmlmeSBpdC4gSW4gYm90aCBjYXNlcywgeW91IHdhbnQgdGhlIHNhbWUgdGVzdCBs
b2dpYyByZXBlYXRlZCBmb3IgZGlmZmVyZW50Cit0eXBlcy4KKworV2hpbGUgeW91IGNhbiB3cml0
ZSBvbmUgYFRFU1RgIG9yIGBURVNUX0ZgIGZvciBlYWNoIHR5cGUgeW91IHdhbnQgdG8gdGVzdCAo
YW5kCit5b3UgbWF5IGV2ZW4gZmFjdG9yIHRoZSB0ZXN0IGxvZ2ljIGludG8gYSBmdW5jdGlvbiB0
ZW1wbGF0ZSB0aGF0IHlvdSBpbnZva2UgZnJvbQordGhlIGBURVNUYCksIGl0J3MgdGVkaW91cyBh
bmQgZG9lc24ndCBzY2FsZTogaWYgeW91IHdhbnQgYG1gIHRlc3RzIG92ZXIgYG5gCit0eXBlcywg
eW91J2xsIGVuZCB1cCB3cml0aW5nIGBtKm5gIGBURVNUYHMuCisKKypUeXBlZCB0ZXN0cyogYWxs
b3cgeW91IHRvIHJlcGVhdCB0aGUgc2FtZSB0ZXN0IGxvZ2ljIG92ZXIgYSBsaXN0IG9mIHR5cGVz
LiBZb3UKK29ubHkgbmVlZCB0byB3cml0ZSB0aGUgdGVzdCBsb2dpYyBvbmNlLCBhbHRob3VnaCB5
b3UgbXVzdCBrbm93IHRoZSB0eXBlIGxpc3QKK3doZW4gd3JpdGluZyB0eXBlZCB0ZXN0cy4gSGVy
ZSdzIGhvdyB5b3UgZG8gaXQ6CisKK0ZpcnN0LCBkZWZpbmUgYSBmaXh0dXJlIGNsYXNzIHRlbXBs
YXRlLiBJdCBzaG91bGQgYmUgcGFyYW1ldGVyaXplZCBieSBhIHR5cGUuCitSZW1lbWJlciB0byBk
ZXJpdmUgaXQgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0YDoKKworYGBgYysrCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwdWJs
aWM6CisgIC4uLgorICB0eXBlZGVmIHN0ZDo6bGlzdDxUPiBMaXN0OworICBzdGF0aWMgVCBzaGFy
ZWRfOworICBUIHZhbHVlXzsKK307CitgYGAKKworTmV4dCwgYXNzb2NpYXRlIGEgbGlzdCBvZiB0
eXBlcyB3aXRoIHRoZSB0ZXN0IGNhc2UsIHdoaWNoIHdpbGwgYmUgcmVwZWF0ZWQgZm9yCitlYWNo
IHR5cGUgaW4gdGhlIGxpc3Q6CisKK2BgYGMrKwordXNpbmcgTXlUeXBlcyA9IDo6dGVzdGluZzo6
VHlwZXM8Y2hhciwgaW50LCB1bnNpZ25lZCBpbnQ+OworVFlQRURfVEVTVF9DQVNFKEZvb1Rlc3Qs
IE15VHlwZXMpOworYGBgCisKK1RoZSB0eXBlIGFsaWFzIChgdXNpbmdgIG9yIGB0eXBlZGVmYCkg
aXMgbmVjZXNzYXJ5IGZvciB0aGUgYFRZUEVEX1RFU1RfQ0FTRWAKK21hY3JvIHRvIHBhcnNlIGNv
cnJlY3RseS4gT3RoZXJ3aXNlIHRoZSBjb21waWxlciB3aWxsIHRoaW5rIHRoYXQgZWFjaCBjb21t
YSBpbgordGhlIHR5cGUgbGlzdCBpbnRyb2R1Y2VzIGEgbmV3IG1hY3JvIGFyZ3VtZW50LgorCitU
aGVuLCB1c2UgYFRZUEVEX1RFU1QoKWAgaW5zdGVhZCBvZiBgVEVTVF9GKClgIHRvIGRlZmluZSBh
IHR5cGVkIHRlc3QgZm9yIHRoaXMKK3Rlc3QgY2FzZS4gWW91IGNhbiByZXBlYXQgdGhpcyBhcyBt
YW55IHRpbWVzIGFzIHlvdSB3YW50OgorCitgYGBjKysKK1RZUEVEX1RFU1QoRm9vVGVzdCwgRG9l
c0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIgdG8gdGhlIHNwZWNpYWwgbmFtZSBU
eXBlUGFyYW0gdG8gZ2V0IHRoZSB0eXBlCisgIC8vIHBhcmFtZXRlci4gIFNpbmNlIHdlIGFyZSBp
bnNpZGUgYSBkZXJpdmVkIGNsYXNzIHRlbXBsYXRlLCBDKysgcmVxdWlyZXMKKyAgLy8gdXMgdG8g
dmlzaXQgdGhlIG1lbWJlcnMgb2YgRm9vVGVzdCB2aWEgJ3RoaXMnLgorICBUeXBlUGFyYW0gbiA9
IHRoaXMtPnZhbHVlXzsKKworICAvLyBUbyB2aXNpdCBzdGF0aWMgbWVtYmVycyBvZiB0aGUgZml4
dHVyZSwgYWRkIHRoZSAnVGVzdEZpeHR1cmU6OicKKyAgLy8gcHJlZml4LgorICBuICs9IFRlc3RG
aXh0dXJlOjpzaGFyZWRfOworCisgIC8vIFRvIHJlZmVyIHRvIHR5cGVkZWZzIGluIHRoZSBmaXh0
dXJlLCBhZGQgdGhlICd0eXBlbmFtZSBUZXN0Rml4dHVyZTo6JworICAvLyBwcmVmaXguICBUaGUg
J3R5cGVuYW1lJyBpcyByZXF1aXJlZCB0byBzYXRpc2Z5IHRoZSBjb21waWxlci4KKyAgdHlwZW5h
bWUgVGVzdEZpeHR1cmU6Okxpc3QgdmFsdWVzOworCisgIHZhbHVlcy5wdXNoX2JhY2sobik7Cisg
IC4uLgorfQorCitUWVBFRF9URVNUKEZvb1Rlc3QsIEhhc1Byb3BlcnR5QSkgeyAuLi4gfQorYGBg
CisKK1lvdSBjYW4gc2VlIHNhbXBsZTZfdW5pdHRlc3QuY2MKKworKipBdmFpbGFiaWxpdHkqKjog
TGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFjCisKKyMjIFR5
cGUtUGFyYW1ldGVyaXplZCBUZXN0cworCisqVHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzKiBhcmUg
bGlrZSB0eXBlZCB0ZXN0cywgZXhjZXB0IHRoYXQgdGhleSBkb24ndCByZXF1aXJlCit5b3UgdG8g
a25vdyB0aGUgbGlzdCBvZiB0eXBlcyBhaGVhZCBvZiB0aW1lLiBJbnN0ZWFkLCB5b3UgY2FuIGRl
ZmluZSB0aGUgdGVzdAorbG9naWMgZmlyc3QgYW5kIGluc3RhbnRpYXRlIGl0IHdpdGggZGlmZmVy
ZW50IHR5cGUgbGlzdHMgbGF0ZXIuIFlvdSBjYW4gZXZlbgoraW5zdGFudGlhdGUgaXQgbW9yZSB0
aGFuIG9uY2UgaW4gdGhlIHNhbWUgcHJvZ3JhbS4KKworSWYgeW91IGFyZSBkZXNpZ25pbmcgYW4g
aW50ZXJmYWNlIG9yIGNvbmNlcHQsIHlvdSBjYW4gZGVmaW5lIGEgc3VpdGUgb2YKK3R5cGUtcGFy
YW1ldGVyaXplZCB0ZXN0cyB0byB2ZXJpZnkgcHJvcGVydGllcyB0aGF0IGFueSB2YWxpZCBpbXBs
ZW1lbnRhdGlvbiBvZgordGhlIGludGVyZmFjZS9jb25jZXB0IHNob3VsZCBoYXZlLiBUaGVuLCB0
aGUgYXV0aG9yIG9mIGVhY2ggaW1wbGVtZW50YXRpb24gY2FuCitqdXN0IGluc3RhbnRpYXRlIHRo
ZSB0ZXN0IHN1aXRlIHdpdGggdGhlaXIgdHlwZSB0byB2ZXJpZnkgdGhhdCBpdCBjb25mb3JtcyB0
bwordGhlIHJlcXVpcmVtZW50cywgd2l0aG91dCBoYXZpbmcgdG8gd3JpdGUgc2ltaWxhciB0ZXN0
cyByZXBlYXRlZGx5LiBIZXJlJ3MgYW4KK2V4YW1wbGU6CisKK0ZpcnN0LCBkZWZpbmUgYSBmaXh0
dXJlIGNsYXNzIHRlbXBsYXRlLCBhcyB3ZSBkaWQgd2l0aCB0eXBlZCB0ZXN0czoKKworYGBgYysr
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0IHsKKyAgLi4uCit9OworYGBgCisKK05leHQsIGRlY2xhcmUgdGhhdCB5b3Ugd2lsbCBk
ZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlOgorCitgYGBjKysKK1RZUEVEX1RF
U1RfQ0FTRV9QKEZvb1Rlc3QpOworYGBgCisKK1RoZW4sIHVzZSBgVFlQRURfVEVTVF9QKClgIHRv
IGRlZmluZSBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LiBZb3UgY2FuIHJlcGVhdAordGhpcyBh
cyBtYW55IHRpbWVzIGFzIHlvdSB3YW50OgorCitgYGBjKysKK1RZUEVEX1RFU1RfUChGb29UZXN0
LCBEb2VzQmxhaCkgeworICAvLyBJbnNpZGUgYSB0ZXN0LCByZWZlciB0byBUeXBlUGFyYW0gdG8g
Z2V0IHRoZSB0eXBlIHBhcmFtZXRlci4KKyAgVHlwZVBhcmFtIG4gPSAwOworICAuLi4KK30KKwor
VFlQRURfVEVTVF9QKEZvb1Rlc3QsIEhhc1Byb3BlcnR5QSkgeyAuLi4gfQorYGBgCisKK05vdyB0
aGUgdHJpY2t5IHBhcnQ6IHlvdSBuZWVkIHRvIHJlZ2lzdGVyIGFsbCB0ZXN0IHBhdHRlcm5zIHVz
aW5nIHRoZQorYFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QYCBtYWNybyBiZWZvcmUgeW91IGNh
biBpbnN0YW50aWF0ZSB0aGVtLiBUaGUgZmlyc3QKK2FyZ3VtZW50IG9mIHRoZSBtYWNybyBpcyB0
aGUgdGVzdCBjYXNlIG5hbWU7IHRoZSByZXN0IGFyZSB0aGUgbmFtZXMgb2YgdGhlIHRlc3RzCitp
biB0aGlzIHRlc3QgY2FzZToKKworYGBgYysrCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChG
b29UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9lc0JsYWgsIEhhc1Byb3BlcnR5
QSk7CitgYGAKKworRmluYWxseSwgeW91IGFyZSBmcmVlIHRvIGluc3RhbnRpYXRlIHRoZSBwYXR0
ZXJuIHdpdGggdGhlIHR5cGVzIHlvdSB3YW50LiBJZiB5b3UKK3B1dCB0aGUgYWJvdmUgY29kZSBp
biBhIGhlYWRlciBmaWxlLCB5b3UgY2FuIGAjaW5jbHVkZWAgaXQgaW4gbXVsdGlwbGUgQysrCitz
b3VyY2UgZmlsZXMgYW5kIGluc3RhbnRpYXRlIGl0IG11bHRpcGxlIHRpbWVzLgorCitgYGBjKysK
K3R5cGVkZWYgOjp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQsIHVuc2lnbmVkIGludD4gTXlUeXBl
czsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsK
K2BgYAorCitUbyBkaXN0aW5ndWlzaCBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIHRoZSBwYXR0ZXJu
LCB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlCitgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNF
X1BgIG1hY3JvIGlzIGEgcHJlZml4IHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUKK2FjdHVhbCB0
ZXN0IGNhc2UgbmFtZS4gUmVtZW1iZXIgdG8gcGljayB1bmlxdWUgcHJlZml4ZXMgZm9yIGRpZmZl
cmVudCBpbnN0YW5jZXMuCisKK0luIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhlIHR5cGUgbGlz
dCBjb250YWlucyBvbmx5IG9uZSB0eXBlLCB5b3UgY2FuIHdyaXRlCit0aGF0IHR5cGUgZGlyZWN0
bHkgd2l0aG91dCBgOjp0ZXN0aW5nOjpUeXBlczwuLi4+YCwgbGlrZSB0aGlzOgorCitgYGBjKysK
K0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBpbnQpOworYGBgCisK
K1lvdSBjYW4gc2VlIGBzYW1wbGU2X3VuaXR0ZXN0LmNjYCBmb3IgYSBjb21wbGV0ZSBleGFtcGxl
LgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAg
b3IgYWJvdmUpLCBNYWMKKworIyMgVGVzdGluZyBQcml2YXRlIENvZGUKKworSWYgeW91IGNoYW5n
ZSB5b3VyIHNvZnR3YXJlJ3MgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24sIHlvdXIgdGVzdHMgc2hv
dWxkIG5vdAorYnJlYWsgYXMgbG9uZyBhcyB0aGUgY2hhbmdlIGlzIG5vdCBvYnNlcnZhYmxlIGJ5
IHVzZXJzLiBUaGVyZWZvcmUsICoqcGVyIHRoZQorYmxhY2stYm94IHRlc3RpbmcgcHJpbmNpcGxl
LCBtb3N0IG9mIHRoZSB0aW1lIHlvdSBzaG91bGQgdGVzdCB5b3VyIGNvZGUgdGhyb3VnaAoraXRz
IHB1YmxpYyBpbnRlcmZhY2VzLioqCisKKyoqSWYgeW91IHN0aWxsIGZpbmQgeW91cnNlbGYgbmVl
ZGluZyB0byB0ZXN0IGludGVybmFsIGltcGxlbWVudGF0aW9uIGNvZGUsCitjb25zaWRlciBpZiB0
aGVyZSdzIGEgYmV0dGVyIGRlc2lnbi4qKiBUaGUgZGVzaXJlIHRvIHRlc3QgaW50ZXJuYWwKK2lt
cGxlbWVudGF0aW9uIGlzIG9mdGVuIGEgc2lnbiB0aGF0IHRoZSBjbGFzcyBpcyBkb2luZyB0b28g
bXVjaC4gQ29uc2lkZXIKK2V4dHJhY3RpbmcgYW4gaW1wbGVtZW50YXRpb24gY2xhc3MsIGFuZCB0
ZXN0aW5nIGl0LiBUaGVuIHVzZSB0aGF0IGltcGxlbWVudGF0aW9uCitjbGFzcyBpbiB0aGUgb3Jp
Z2luYWwgY2xhc3MuCisKK0lmIHlvdSBhYnNvbHV0ZWx5IGhhdmUgdG8gdGVzdCBub24tcHVibGlj
IGludGVyZmFjZSBjb2RlIHRob3VnaCwgeW91IGNhbi4gVGhlcmUKK2FyZSB0d28gY2FzZXMgdG8g
Y29uc2lkZXI6CisKKyogICBTdGF0aWMgZnVuY3Rpb25zICggKm5vdCogdGhlIHNhbWUgYXMgc3Rh
dGljIG1lbWJlciBmdW5jdGlvbnMhKSBvciB1bm5hbWVkCisgICAgbmFtZXNwYWNlcywgYW5kCisq
ICAgUHJpdmF0ZSBvciBwcm90ZWN0ZWQgY2xhc3MgbWVtYmVycworCitUbyB0ZXN0IHRoZW0sIHdl
IHVzZSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgdGVjaG5pcXVlczoKKworKiAgIEJvdGggc3RhdGlj
IGZ1bmN0aW9ucyBhbmQgZGVmaW5pdGlvbnMvZGVjbGFyYXRpb25zIGluIGFuIHVubmFtZWQgbmFt
ZXNwYWNlCisgICAgYXJlIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIHNhbWUgdHJhbnNsYXRpb24g
dW5pdC4gVG8gdGVzdCB0aGVtLCB5b3UgY2FuCisgICAgYCNpbmNsdWRlYCB0aGUgZW50aXJlIGAu
Y2NgIGZpbGUgYmVpbmcgdGVzdGVkIGluIHlvdXIgYCpfdGVzdC5jY2AgZmlsZS4KKyAgICAoaW5j
bHVkaW5nIGAuY2NgIGZpbGVzIGlzIG5vdCBhIGdvb2Qgd2F5IHRvIHJldXNlIGNvZGUgLSB5b3Ug
c2hvdWxkIG5vdCBkbworICAgIHRoaXMgaW4gcHJvZHVjdGlvbiBjb2RlISkKKworICAgIEhvd2V2
ZXIsIGEgYmV0dGVyIGFwcHJvYWNoIGlzIHRvIG1vdmUgdGhlIHByaXZhdGUgY29kZSBpbnRvIHRo
ZQorICAgIGBmb286OmludGVybmFsYCBuYW1lc3BhY2UsIHdoZXJlIGBmb29gIGlzIHRoZSBuYW1l
c3BhY2UgeW91ciBwcm9qZWN0CisgICAgbm9ybWFsbHkgdXNlcywgYW5kIHB1dCB0aGUgcHJpdmF0
ZSBkZWNsYXJhdGlvbnMgaW4gYSBgKi1pbnRlcm5hbC5oYCBmaWxlLgorICAgIFlvdXIgcHJvZHVj
dGlvbiBgLmNjYCBmaWxlcyBhbmQgeW91ciB0ZXN0cyBhcmUgYWxsb3dlZCB0byBpbmNsdWRlIHRo
aXMKKyAgICBpbnRlcm5hbCBoZWFkZXIsIGJ1dCB5b3VyIGNsaWVudHMgYXJlIG5vdC4gVGhpcyB3
YXksIHlvdSBjYW4gZnVsbHkgdGVzdCB5b3VyCisgICAgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24g
d2l0aG91dCBsZWFraW5nIGl0IHRvIHlvdXIgY2xpZW50cy4KKworKiAgIFByaXZhdGUgY2xhc3Mg
bWVtYmVycyBhcmUgb25seSBhY2Nlc3NpYmxlIGZyb20gd2l0aGluIHRoZSBjbGFzcyBvciBieQor
ICAgIGZyaWVuZHMuIFRvIGFjY2VzcyBhIGNsYXNzJyBwcml2YXRlIG1lbWJlcnMsIHlvdSBjYW4g
ZGVjbGFyZSB5b3VyIHRlc3QKKyAgICBmaXh0dXJlIGFzIGEgZnJpZW5kIHRvIHRoZSBjbGFzcyBh
bmQgZGVmaW5lIGFjY2Vzc29ycyBpbiB5b3VyIGZpeHR1cmUuIFRlc3RzCisgICAgdXNpbmcgdGhl
IGZpeHR1cmUgY2FuIHRoZW4gYWNjZXNzIHRoZSBwcml2YXRlIG1lbWJlcnMgb2YgeW91ciBwcm9k
dWN0aW9uCisgICAgY2xhc3MgdmlhIHRoZSBhY2Nlc3NvcnMgaW4gdGhlIGZpeHR1cmUuIE5vdGUg
dGhhdCBldmVuIHRob3VnaCB5b3VyIGZpeHR1cmUKKyAgICBpcyBhIGZyaWVuZCB0byB5b3VyIHBy
b2R1Y3Rpb24gY2xhc3MsIHlvdXIgdGVzdHMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5CisgICAgZnJp
ZW5kcyB0byBpdCwgYXMgdGhleSBhcmUgdGVjaG5pY2FsbHkgZGVmaW5lZCBpbiBzdWItY2xhc3Nl
cyBvZiB0aGUKKyAgICBmaXh0dXJlLgorCisgICAgQW5vdGhlciB3YXkgdG8gdGVzdCBwcml2YXRl
IG1lbWJlcnMgaXMgdG8gcmVmYWN0b3IgdGhlbSBpbnRvIGFuCisgICAgaW1wbGVtZW50YXRpb24g
Y2xhc3MsIHdoaWNoIGlzIHRoZW4gZGVjbGFyZWQgaW4gYSBgKi1pbnRlcm5hbC5oYCBmaWxlLiBZ
b3VyCisgICAgY2xpZW50cyBhcmVuJ3QgYWxsb3dlZCB0byBpbmNsdWRlIHRoaXMgaGVhZGVyIGJ1
dCB5b3VyIHRlc3RzIGNhbi4gU3VjaCBpcworICAgIGNhbGxlZCB0aGUKKyAgICBbUGltcGxdKGh0
dHBzOi8vd3d3LmdhbWVkZXYubmV0L2FydGljbGVzL3Byb2dyYW1taW5nL2dlbmVyYWwtYW5kLWdh
bWVwbGF5LXByb2dyYW1taW5nL3RoZS1jLXBpbXBsLXIxNzk0LykKKyAgICAoUHJpdmF0ZSBJbXBs
ZW1lbnRhdGlvbikgaWRpb20uCisKKyAgICBPciwgeW91IGNhbiBkZWNsYXJlIGFuIGluZGl2aWR1
YWwgdGVzdCBhcyBhIGZyaWVuZCBvZiB5b3VyIGNsYXNzIGJ5IGFkZGluZworICAgIHRoaXMgbGlu
ZSBpbiB0aGUgY2xhc3MgYm9keToKKworICAgIGBgYGMrKworICAgICAgICBGUklFTkRfVEVTVChU
ZXN0Q2FzZU5hbWUsIFRlc3ROYW1lKTsKKyAgICBgYGAKKworICAgIEZvciBleGFtcGxlLAorCisg
ICAgYGBgYysrCisgICAgLy8gZm9vLmgKKworICAgICNpbmNsdWRlICJndGVzdC9ndGVzdF9wcm9k
LmgiCisKKyAgICBjbGFzcyBGb28geworICAgICAgLi4uCisgICAgcHJpdmF0ZToKKyAgICAgIEZS
SUVORF9URVNUKEZvb1Rlc3QsIEJhclJldHVybnNaZXJvT25OdWxsKTsKKworICAgICAgaW50IEJh
cih2b2lkKiB4KTsKKyAgICB9OworCisgICAgLy8gZm9vX3Rlc3QuY2MKKyAgICAuLi4KKyAgICBU
RVNUKEZvb1Rlc3QsIEJhclJldHVybnNaZXJvT25OdWxsKSB7CisgICAgICBGb28gZm9vOworICAg
ICAgRVhQRUNUX0VRKDAsIGZvby5CYXIoTlVMTCkpOyAgLy8gVXNlcyBGb28ncyBwcml2YXRlIG1l
bWJlciBCYXIoKS4KKyAgICB9CisgICAgYGBgCisKKyAgICBQYXkgc3BlY2lhbCBhdHRlbnRpb24g
d2hlbiB5b3VyIGNsYXNzIGlzIGRlZmluZWQgaW4gYSBuYW1lc3BhY2UsIGFzIHlvdQorICAgIHNo
b3VsZCBkZWZpbmUgeW91ciB0ZXN0IGZpeHR1cmVzIGFuZCB0ZXN0cyBpbiB0aGUgc2FtZSBuYW1l
c3BhY2UgaWYgeW91IHdhbnQKKyAgICB0aGVtIHRvIGJlIGZyaWVuZHMgb2YgeW91ciBjbGFzcy4g
Rm9yIGV4YW1wbGUsIGlmIHRoZSBjb2RlIHRvIGJlIHRlc3RlZAorICAgIGxvb2tzIGxpa2U6CisK
KyAgICBgYGBjKysKKyAgICBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlIHsKKworICAgIGNsYXNzIEZv
byB7CisgICAgICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKKyAgICAgIEZSSUVORF9URVNUKEZvb1Rl
c3QsIEJhcik7CisgICAgICBGUklFTkRfVEVTVChGb29UZXN0LCBCYXopOworICAgICAgLi4uIGRl
ZmluaXRpb24gb2YgdGhlIGNsYXNzIEZvbyAuLi4KKyAgICB9OworCisgICAgfSAgLy8gbmFtZXNw
YWNlIG15X25hbWVzcGFjZQorICAgIGBgYAorCisgICAgWW91ciB0ZXN0IGNvZGUgc2hvdWxkIGJl
IHNvbWV0aGluZyBsaWtlOgorCisgICAgYGBgYysrCisgICAgbmFtZXNwYWNlIG15X25hbWVzcGFj
ZSB7CisKKyAgICBjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgICAg
IHByb3RlY3RlZDoKKyAgICAgIC4uLgorICAgIH07CisKKyAgICBURVNUX0YoRm9vVGVzdCwgQmFy
KSB7IC4uLiB9CisgICAgVEVTVF9GKEZvb1Rlc3QsIEJheikgeyAuLi4gfQorCisgICAgfSAgLy8g
bmFtZXNwYWNlIG15X25hbWVzcGFjZQorICAgIGBgYAorCisKKyMjICJDYXRjaGluZyIgRmFpbHVy
ZXMKKworSWYgeW91IGFyZSBidWlsZGluZyBhIHRlc3RpbmcgdXRpbGl0eSBvbiB0b3Agb2YgZ29v
Z2xldGVzdCwgeW91J2xsIHdhbnQgdG8gdGVzdAoreW91ciB1dGlsaXR5LiBXaGF0IGZyYW1ld29y
ayB3b3VsZCB5b3UgdXNlIHRvIHRlc3QgaXQ/IGdvb2dsZXRlc3QsIG9mIGNvdXJzZS4KKworVGhl
IGNoYWxsZW5nZSBpcyB0byB2ZXJpZnkgdGhhdCB5b3VyIHRlc3RpbmcgdXRpbGl0eSByZXBvcnRz
IGZhaWx1cmVzIGNvcnJlY3RseS4KK0luIGZyYW1ld29ya3MgdGhhdCByZXBvcnQgYSBmYWlsdXJl
IGJ5IHRocm93aW5nIGFuIGV4Y2VwdGlvbiwgeW91IGNvdWxkIGNhdGNoCit0aGUgZXhjZXB0aW9u
IGFuZCBhc3NlcnQgb24gaXQuIEJ1dCBnb29nbGV0ZXN0IGRvZXNuJ3QgdXNlIGV4Y2VwdGlvbnMs
IHNvIGhvdyBkbword2UgdGVzdCB0aGF0IGEgcGllY2Ugb2YgY29kZSBnZW5lcmF0ZXMgYW4gZXhw
ZWN0ZWQgZmFpbHVyZT8KKworZ3VuaXQtc3BpLmggY29udGFpbnMgc29tZSBjb25zdHJ1Y3RzIHRv
IGRvIHRoaXMuIEFmdGVyICNpbmNsdWRpbmcgdGhpcyBoZWFkZXIsCit5b3UgY2FuIHVzZQorCitg
YGBjKysKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoc3RhdGVtZW50LCBzdWJzdHJpbmcpOworYGBg
CisKK3RvIGFzc2VydCB0aGF0IGBzdGF0ZW1lbnRgIGdlbmVyYXRlcyBhIGZhdGFsIChlLmcuIGBB
U1NFUlRfKmApIGZhaWx1cmUgaW4gdGhlCitjdXJyZW50IHRocmVhZCB3aG9zZSBtZXNzYWdlIGNv
bnRhaW5zIHRoZSBnaXZlbiBgc3Vic3RyaW5nYCwgb3IgdXNlCisKK2BgYGMrKworICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShzdGF0ZW1lbnQsIHN1YnN0cmluZyk7CitgYGAKKworaWYgeW91IGFy
ZSBleHBlY3RpbmcgYSBub24tZmF0YWwgKGUuZy4gYEVYUEVDVF8qYCkgZmFpbHVyZS4KKworT25s
eSBmYWlsdXJlcyBpbiB0aGUgY3VycmVudCB0aHJlYWQgYXJlIGNoZWNrZWQgdG8gZGV0ZXJtaW5l
IHRoZSByZXN1bHQgb2YgdGhpcwordHlwZSBvZiBleHBlY3RhdGlvbnMuIElmIGBzdGF0ZW1lbnRg
IGNyZWF0ZXMgbmV3IHRocmVhZHMsIGZhaWx1cmVzIGluIHRoZXNlCit0aHJlYWRzIGFyZSBhbHNv
IGlnbm9yZWQuIElmIHlvdSB3YW50IHRvIGNhdGNoIGZhaWx1cmVzIGluIG90aGVyIHRocmVhZHMg
YXMKK3dlbGwsIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBtYWNyb3MgaW5zdGVhZDoKKworYGBg
YysrCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKHN0YXRlbWVudCwgc3Vi
c3RyaW5nKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoc3RhdGVt
ZW50LCBzdWJzdHJpbmcpOworYGBgCisKK05PVEU6IEFzc2VydGlvbnMgZnJvbSBtdWx0aXBsZSB0
aHJlYWRzIGFyZSBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzLgorCitGb3IgdGVj
aG5pY2FsIHJlYXNvbnMsIHRoZXJlIGFyZSBzb21lIGNhdmVhdHM6CisKKzEuICBZb3UgY2Fubm90
IHN0cmVhbSBhIGZhaWx1cmUgbWVzc2FnZSB0byBlaXRoZXIgbWFjcm8uCisKKzEuICBgc3RhdGVt
ZW50YCBpbiBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkV7X09OX0FMTF9USFJFQURTfSgpYCBjYW5ub3Qg
cmVmZXJlbmNlCisgICAgbG9jYWwgbm9uLXN0YXRpYyB2YXJpYWJsZXMgb3Igbm9uLXN0YXRpYyBt
ZW1iZXJzIG9mIGB0aGlzYCBvYmplY3QuCisKKzEuICBgc3RhdGVtZW50YCBpbiBgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkV7X09OX0FMTF9USFJFQURTfSgpKClgIGNhbm5vdCByZXR1cm4gYQorICAgIHZh
bHVlLgorCisKKyMjIEdldHRpbmcgdGhlIEN1cnJlbnQgVGVzdCdzIE5hbWUKKworU29tZXRpbWVz
IGEgZnVuY3Rpb24gbWF5IG5lZWQgdG8ga25vdyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IHJ1
bm5pbmcgdGVzdC4KK0ZvciBleGFtcGxlLCB5b3UgbWF5IGJlIHVzaW5nIHRoZSBgU2V0VXAoKWAg
bWV0aG9kIG9mIHlvdXIgdGVzdCBmaXh0dXJlIHRvIHNldAordGhlIGdvbGRlbiBmaWxlIG5hbWUg
YmFzZWQgb24gd2hpY2ggdGVzdCBpcyBydW5uaW5nLiBUaGUgYDo6dGVzdGluZzo6VGVzdEluZm9g
CitjbGFzcyBoYXMgdGhpcyBpbmZvcm1hdGlvbjoKKworYGBgYysrCituYW1lc3BhY2UgdGVzdGlu
ZyB7CisKK2NsYXNzIFRlc3RJbmZvIHsKKyBwdWJsaWM6CisgIC8vIFJldHVybnMgdGhlIHRlc3Qg
Y2FzZSBuYW1lIGFuZCB0aGUgdGVzdCBuYW1lLCByZXNwZWN0aXZlbHkuCisgIC8vCisgIC8vIERv
IE5PVCBkZWxldGUgb3IgZnJlZSB0aGUgcmV0dXJuIHZhbHVlIC0gaXQncyBtYW5hZ2VkIGJ5IHRo
ZQorICAvLyBUZXN0SW5mbyBjbGFzcy4KKyAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUoKSBj
b25zdDsKKyAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0OworfTsKKworfQorYGBgCisKK1RvIG9i
dGFpbiBhIGBUZXN0SW5mb2Agb2JqZWN0IGZvciB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdCwg
Y2FsbAorYGN1cnJlbnRfdGVzdF9pbmZvKClgIG9uIHRoZSBgVW5pdFRlc3RgIHNpbmdsZXRvbiBv
YmplY3Q6CisKK2BgYGMrKworICAvLyBHZXRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50
bHkgcnVubmluZyB0ZXN0LgorICAvLyBEbyBOT1QgZGVsZXRlIHRoZSByZXR1cm5lZCBvYmplY3Qg
LSBpdCdzIG1hbmFnZWQgYnkgdGhlIFVuaXRUZXN0IGNsYXNzLgorICBjb25zdCA6OnRlc3Rpbmc6
OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQorICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6Okdl
dEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisKKworCisgIHByaW50ZigiV2UgYXJl
IGluIHRlc3QgJXMgb2YgdGVzdCBjYXNlICVzLlxuIiwKKyAgICAgICAgIHRlc3RfaW5mby0+bmFt
ZSgpLAorICAgICAgICAgdGVzdF9pbmZvLT50ZXN0X2Nhc2VfbmFtZSgpKTsKK2BgYAorCitgY3Vy
cmVudF90ZXN0X2luZm8oKWAgcmV0dXJucyBhIG51bGwgcG9pbnRlciBpZiBubyB0ZXN0IGlzIHJ1
bm5pbmcuIEluCitwYXJ0aWN1bGFyLCB5b3UgY2Fubm90IGZpbmQgdGhlIHRlc3QgY2FzZSBuYW1l
IGluIGBUZXN0Q2FzZVNldFVwKClgLAorYFRlc3RDYXNlVGVhckRvd24oKWAgKHdoZXJlIHlvdSBr
bm93IHRoZSB0ZXN0IGNhc2UgbmFtZSBpbXBsaWNpdGx5KSwgb3IKK2Z1bmN0aW9ucyBjYWxsZWQg
ZnJvbSB0aGVtLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisj
IyBFeHRlbmRpbmcgZ29vZ2xldGVzdCBieSBIYW5kbGluZyBUZXN0IEV2ZW50cworCitnb29nbGV0
ZXN0IHByb3ZpZGVzIGFuICoqZXZlbnQgbGlzdGVuZXIgQVBJKiogdG8gbGV0IHlvdSByZWNlaXZl
IG5vdGlmaWNhdGlvbnMKK2Fib3V0IHRoZSBwcm9ncmVzcyBvZiBhIHRlc3QgcHJvZ3JhbSBhbmQg
dGVzdCBmYWlsdXJlcy4gVGhlIGV2ZW50cyB5b3UgY2FuCitsaXN0ZW4gdG8gaW5jbHVkZSB0aGUg
c3RhcnQgYW5kIGVuZCBvZiB0aGUgdGVzdCBwcm9ncmFtLCBhIHRlc3QgY2FzZSwgb3IgYSB0ZXN0
CittZXRob2QsIGFtb25nIG90aGVycy4gWW91IG1heSB1c2UgdGhpcyBBUEkgdG8gYXVnbWVudCBv
ciByZXBsYWNlIHRoZSBzdGFuZGFyZAorY29uc29sZSBvdXRwdXQsIHJlcGxhY2UgdGhlIFhNTCBv
dXRwdXQsIG9yIHByb3ZpZGUgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBmb3JtCitvZiBvdXRwdXQs
IHN1Y2ggYXMgYSBHVUkgb3IgYSBkYXRhYmFzZS4gWW91IGNhbiBhbHNvIHVzZSB0ZXN0IGV2ZW50
cyBhcworY2hlY2twb2ludHMgdG8gaW1wbGVtZW50IGEgcmVzb3VyY2UgbGVhayBjaGVja2VyLCBm
b3IgZXhhbXBsZS4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKwor
IyMjIERlZmluaW5nIEV2ZW50IExpc3RlbmVycworCitUbyBkZWZpbmUgYSBldmVudCBsaXN0ZW5l
ciwgeW91IHN1YmNsYXNzIGVpdGhlciB0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lciBvcgordGVz
dGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lciBUaGUgZm9ybWVyIGlzIGFuIChhYnN0cmFjdCkg
aW50ZXJmYWNlLCB3aGVyZQorKmVhY2ggcHVyZSB2aXJ0dWFsIG1ldGhvZCBjYW4gYmUgb3ZlcnJp
ZGRlbiB0byBoYW5kbGUgYSB0ZXN0IGV2ZW50KiAoRm9yCitleGFtcGxlLCB3aGVuIGEgdGVzdCBz
dGFydHMsIHRoZSBgT25UZXN0U3RhcnQoKWAgbWV0aG9kIHdpbGwgYmUgY2FsbGVkLikuIFRoZQor
bGF0dGVyIHByb3ZpZGVzIGFuIGVtcHR5IGltcGxlbWVudGF0aW9uIG9mIGFsbCBtZXRob2RzIGlu
IHRoZSBpbnRlcmZhY2UsIHN1Y2gKK3RoYXQgYSBzdWJjbGFzcyBvbmx5IG5lZWRzIHRvIG92ZXJy
aWRlIHRoZSBtZXRob2RzIGl0IGNhcmVzIGFib3V0LgorCitXaGVuIGFuIGV2ZW50IGlzIGZpcmVk
LCBpdHMgY29udGV4dCBpcyBwYXNzZWQgdG8gdGhlIGhhbmRsZXIgZnVuY3Rpb24gYXMgYW4KK2Fy
Z3VtZW50LiBUaGUgZm9sbG93aW5nIGFyZ3VtZW50IHR5cGVzIGFyZSB1c2VkOgorCisqICAgVW5p
dFRlc3QgcmVmbGVjdHMgdGhlIHN0YXRlIG9mIHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFtLAorKiAg
IFRlc3RDYXNlIGhhcyBpbmZvcm1hdGlvbiBhYm91dCBhIHRlc3QgY2FzZSwgd2hpY2ggY2FuIGNv
bnRhaW4gb25lIG9yIG1vcmUKKyAgICB0ZXN0cywKKyogICBUZXN0SW5mbyBjb250YWlucyB0aGUg
c3RhdGUgb2YgYSB0ZXN0LCBhbmQKKyogICBUZXN0UGFydFJlc3VsdCByZXByZXNlbnRzIHRoZSBy
ZXN1bHQgb2YgYSB0ZXN0IGFzc2VydGlvbi4KKworQW4gZXZlbnQgaGFuZGxlciBmdW5jdGlvbiBj
YW4gZXhhbWluZSB0aGUgYXJndW1lbnQgaXQgcmVjZWl2ZXMgdG8gZmluZCBvdXQKK2ludGVyZXN0
aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBldmVudCBhbmQgdGhlIHRlc3QgcHJvZ3JhbSdzIHN0
YXRlLgorCitIZXJlJ3MgYW4gZXhhbXBsZToKKworYGBgYysrCisgIGNsYXNzIE1pbmltYWxpc3RQ
cmludGVyIDogcHVibGljIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CisgICAg
Ly8gQ2FsbGVkIGJlZm9yZSBhIHRlc3Qgc3RhcnRzLgorICAgIHZpcnR1YWwgdm9pZCBPblRlc3RT
dGFydChjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKKyAgICAgIHByaW50
ZigiKioqIFRlc3QgJXMuJXMgc3RhcnRpbmcuXG4iLAorICAgICAgICAgICAgIHRlc3RfaW5mby50
ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgICB9CisKKyAgICAvLyBDYWxs
ZWQgYWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VTUygpLgorICAgIHZpcnR1YWwg
dm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQmIHRl
c3RfcGFydF9yZXN1bHQpIHsKKyAgICAgIHByaW50ZigiJXMgaW4gJXM6JWRcbiVzXG4iLAorICAg
ICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQuZmFpbGVkKCkgPyAiKioqIEZhaWx1cmUiIDogIlN1
Y2Nlc3MiLAorICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQuZmlsZV9uYW1lKCksCisgICAg
ICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5saW5lX251bWJlcigpLAorICAgICAgICAgICAgIHRl
c3RfcGFydF9yZXN1bHQuc3VtbWFyeSgpKTsKKyAgICB9CisKKyAgICAvLyBDYWxsZWQgYWZ0ZXIg
YSB0ZXN0IGVuZHMuCisgICAgdmlydHVhbCB2b2lkIE9uVGVzdEVuZChjb25zdCA6OnRlc3Rpbmc6
OlRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKKyAgICAgIHByaW50ZigiKioqIFRlc3QgJXMuJXMgZW5k
aW5nLlxuIiwKKyAgICAgICAgICAgICB0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9p
bmZvLm5hbWUoKSk7CisgICAgfQorICB9OworYGBgCisKKyMjIyBVc2luZyBFdmVudCBMaXN0ZW5l
cnMKKworVG8gdXNlIHRoZSBldmVudCBsaXN0ZW5lciB5b3UgaGF2ZSBkZWZpbmVkLCBhZGQgYW4g
aW5zdGFuY2Ugb2YgaXQgdG8gdGhlCitnb29nbGV0ZXN0IGV2ZW50IGxpc3RlbmVyIGxpc3QgKHJl
cHJlc2VudGVkIGJ5IGNsYXNzIFRlc3RFdmVudExpc3RlbmVycyAtIG5vdGUKK3RoZSAicyIgYXQg
dGhlIGVuZCBvZiB0aGUgbmFtZSkgaW4geW91ciBgbWFpbigpYCBmdW5jdGlvbiwgYmVmb3JlIGNh
bGxpbmcKK2BSVU5fQUxMX1RFU1RTKClgOgorCitgYGBjKysKK2ludCBtYWluKGludCBhcmdjLCBj
aGFyKiogYXJndikgeworICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsK
KyAgLy8gR2V0cyBob2xkIG9mIHRoZSBldmVudCBsaXN0ZW5lciBsaXN0LgorICA6OnRlc3Rpbmc6
OlRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0KKyAgICAgICAgOjp0ZXN0aW5nOjpVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCk7CisgIC8vIEFkZHMgYSBsaXN0ZW5lciB0
byB0aGUgZW5kLiAgZ29vZ2xldGVzdCB0YWtlcyB0aGUgb3duZXJzaGlwLgorICBsaXN0ZW5lcnMu
QXBwZW5kKG5ldyBNaW5pbWFsaXN0UHJpbnRlcik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7
Cit9CitgYGAKKworVGhlcmUncyBvbmx5IG9uZSBwcm9ibGVtOiB0aGUgZGVmYXVsdCB0ZXN0IHJl
c3VsdCBwcmludGVyIGlzIHN0aWxsIGluIGVmZmVjdCwgc28KK2l0cyBvdXRwdXQgd2lsbCBtaW5n
bGUgd2l0aCB0aGUgb3V0cHV0IGZyb20geW91ciBtaW5pbWFsaXN0IHByaW50ZXIuIFRvIHN1cHBy
ZXNzCit0aGUgZGVmYXVsdCBwcmludGVyLCBqdXN0IHJlbGVhc2UgaXQgZnJvbSB0aGUgZXZlbnQg
bGlzdGVuZXIgbGlzdCBhbmQgZGVsZXRlIGl0LgorWW91IGNhbiBkbyBzbyBieSBhZGRpbmcgb25l
IGxpbmU6CisKK2BgYGMrKworICAuLi4KKyAgZGVsZXRlIGxpc3RlbmVycy5SZWxlYXNlKGxpc3Rl
bmVycy5kZWZhdWx0X3Jlc3VsdF9wcmludGVyKCkpOworICBsaXN0ZW5lcnMuQXBwZW5kKG5ldyBN
aW5pbWFsaXN0UHJpbnRlcik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CitgYGAKKworTm93
LCBzaXQgYmFjayBhbmQgZW5qb3kgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBvdXRwdXQgZnJvbSB5
b3VyIHRlc3RzLiBGb3IgbW9yZQorZGV0YWlscywgeW91IGNhbiByZWFkIHRoaXMgc2FtcGxlOV91
bml0dGVzdC5jYworCitZb3UgbWF5IGFwcGVuZCBtb3JlIHRoYW4gb25lIGxpc3RlbmVyIHRvIHRo
ZSBsaXN0LiBXaGVuIGFuIGBPbipTdGFydCgpYCBvcgorYE9uVGVzdFBhcnRSZXN1bHQoKWAgZXZl
bnQgaXMgZmlyZWQsIHRoZSBsaXN0ZW5lcnMgd2lsbCByZWNlaXZlIGl0IGluIHRoZSBvcmRlcgor
dGhleSBhcHBlYXIgaW4gdGhlIGxpc3QgKHNpbmNlIG5ldyBsaXN0ZW5lcnMgYXJlIGFkZGVkIHRv
IHRoZSBlbmQgb2YgdGhlIGxpc3QsCit0aGUgZGVmYXVsdCB0ZXh0IHByaW50ZXIgYW5kIHRoZSBk
ZWZhdWx0IFhNTCBnZW5lcmF0b3Igd2lsbCByZWNlaXZlIHRoZSBldmVudAorZmlyc3QpLiBBbiBg
T24qRW5kKClgIGV2ZW50IHdpbGwgYmUgcmVjZWl2ZWQgYnkgdGhlIGxpc3RlbmVycyBpbiB0aGUg
KnJldmVyc2UqCitvcmRlci4gVGhpcyBhbGxvd3Mgb3V0cHV0IGJ5IGxpc3RlbmVycyBhZGRlZCBs
YXRlciB0byBiZSBmcmFtZWQgYnkgb3V0cHV0IGZyb20KK2xpc3RlbmVycyBhZGRlZCBlYXJsaWVy
LgorCisjIyMgR2VuZXJhdGluZyBGYWlsdXJlcyBpbiBMaXN0ZW5lcnMKKworWW91IG1heSB1c2Ug
ZmFpbHVyZS1yYWlzaW5nIG1hY3JvcyAoYEVYUEVDVF8qKClgLCBgQVNTRVJUXyooKWAsIGBGQUlM
KClgLCBldGMpCit3aGVuIHByb2Nlc3NpbmcgYW4gZXZlbnQuIFRoZXJlIGFyZSBzb21lIHJlc3Ry
aWN0aW9uczoKKworMS4gIFlvdSBjYW5ub3QgZ2VuZXJhdGUgYW55IGZhaWx1cmUgaW4gYE9uVGVz
dFBhcnRSZXN1bHQoKWAgKG90aGVyd2lzZSBpdCB3aWxsCisgICAgY2F1c2UgYE9uVGVzdFBhcnRS
ZXN1bHQoKWAgdG8gYmUgY2FsbGVkIHJlY3Vyc2l2ZWx5KS4KKzEuICBBIGxpc3RlbmVyIHRoYXQg
aGFuZGxlcyBgT25UZXN0UGFydFJlc3VsdCgpYCBpcyBub3QgYWxsb3dlZCB0byBnZW5lcmF0ZSBh
bnkKKyAgICBmYWlsdXJlLgorCitXaGVuIHlvdSBhZGQgbGlzdGVuZXJzIHRvIHRoZSBsaXN0ZW5l
ciBsaXN0LCB5b3Ugc2hvdWxkIHB1dCBsaXN0ZW5lcnMgdGhhdAoraGFuZGxlIGBPblRlc3RQYXJ0
UmVzdWx0KClgICpiZWZvcmUqIGxpc3RlbmVycyB0aGF0IGNhbiBnZW5lcmF0ZSBmYWlsdXJlcy4g
VGhpcworZW5zdXJlcyB0aGF0IGZhaWx1cmVzIGdlbmVyYXRlZCBieSB0aGUgbGF0dGVyIGFyZSBh
dHRyaWJ1dGVkIHRvIHRoZSByaWdodCB0ZXN0CitieSB0aGUgZm9ybWVyLgorCitXZSBoYXZlIGEg
c2FtcGxlIG9mIGZhaWx1cmUtcmFpc2luZyBsaXN0ZW5lciBzYW1wbGUxMF91bml0dGVzdC5jYwor
CisjIyBSdW5uaW5nIFRlc3QgUHJvZ3JhbXM6IEFkdmFuY2VkIE9wdGlvbnMKKworZ29vZ2xldGVz
dCB0ZXN0IHByb2dyYW1zIGFyZSBvcmRpbmFyeSBleGVjdXRhYmxlcy4gT25jZSBidWlsdCwgeW91
IGNhbiBydW4gdGhlbQorZGlyZWN0bHkgYW5kIGFmZmVjdCB0aGVpciBiZWhhdmlvciB2aWEgdGhl
IGZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMKK2FuZC9vciBjb21tYW5kIGxpbmUgZmxh
Z3MuIEZvciB0aGUgZmxhZ3MgdG8gd29yaywgeW91ciBwcm9ncmFtcyBtdXN0IGNhbGwKK2A6OnRl
c3Rpbmc6OkluaXRHb29nbGVUZXN0KClgIGJlZm9yZSBjYWxsaW5nIGBSVU5fQUxMX1RFU1RTKClg
LgorCitUbyBzZWUgYSBsaXN0IG9mIHN1cHBvcnRlZCBmbGFncyBhbmQgdGhlaXIgdXNhZ2UsIHBs
ZWFzZSBydW4geW91ciB0ZXN0IHByb2dyYW0KK3dpdGggdGhlIGAtLWhlbHBgIGZsYWcuIFlvdSBj
YW4gYWxzbyB1c2UgYC1oYCwgYC0/YCwgb3IgYC8/YCBmb3Igc2hvcnQuCisKK0lmIGFuIG9wdGlv
biBpcyBzcGVjaWZpZWQgYm90aCBieSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbmQgYnkgYSBm
bGFnLCB0aGUKK2xhdHRlciB0YWtlcyBwcmVjZWRlbmNlLgorCisjIyMgU2VsZWN0aW5nIFRlc3Rz
CisKKyMjIyMgTGlzdGluZyBUZXN0IE5hbWVzCisKK1NvbWV0aW1lcyBpdCBpcyBuZWNlc3Nhcnkg
dG8gbGlzdCB0aGUgYXZhaWxhYmxlIHRlc3RzIGluIGEgcHJvZ3JhbSBiZWZvcmUKK3J1bm5pbmcg
dGhlbSBzbyB0aGF0IGEgZmlsdGVyIG1heSBiZSBhcHBsaWVkIGlmIG5lZWRlZC4gSW5jbHVkaW5n
IHRoZSBmbGFnCitgLS1ndGVzdF9saXN0X3Rlc3RzYCBvdmVycmlkZXMgYWxsIG90aGVyIGZsYWdz
IGFuZCBsaXN0cyB0ZXN0cyBpbiB0aGUgZm9sbG93aW5nCitmb3JtYXQ6CisKK2BgYG5vbmUKK1Rl
c3RDYXNlMS4KKyAgVGVzdE5hbWUxCisgIFRlc3ROYW1lMgorVGVzdENhc2UyLgorICBUZXN0TmFt
ZQorYGBgCisKK05vbmUgb2YgdGhlIHRlc3RzIGxpc3RlZCBhcmUgYWN0dWFsbHkgcnVuIGlmIHRo
ZSBmbGFnIGlzIHByb3ZpZGVkLiBUaGVyZSBpcyBubworY29ycmVzcG9uZGluZyBlbnZpcm9ubWVu
dCB2YXJpYWJsZSBmb3IgdGhpcyBmbGFnLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2lu
ZG93cywgTWFjLgorCisjIyMjIFJ1bm5pbmcgYSBTdWJzZXQgb2YgdGhlIFRlc3RzCisKK0J5IGRl
ZmF1bHQsIGEgZ29vZ2xldGVzdCBwcm9ncmFtIHJ1bnMgYWxsIHRlc3RzIHRoZSB1c2VyIGhhcyBk
ZWZpbmVkLiBTb21ldGltZXMsCit5b3Ugd2FudCB0byBydW4gb25seSBhIHN1YnNldCBvZiB0aGUg
dGVzdHMgKGUuZy4gZm9yIGRlYnVnZ2luZyBvciBxdWlja2x5Cit2ZXJpZnlpbmcgYSBjaGFuZ2Up
LiBJZiB5b3Ugc2V0IHRoZSBgR1RFU1RfRklMVEVSYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0
aGUKK2AtLWd0ZXN0X2ZpbHRlcmAgZmxhZyB0byBhIGZpbHRlciBzdHJpbmcsIGdvb2dsZXRlc3Qg
d2lsbCBvbmx5IHJ1biB0aGUgdGVzdHMKK3dob3NlIGZ1bGwgbmFtZXMgKGluIHRoZSBmb3JtIG9m
IGBUZXN0Q2FzZU5hbWUuVGVzdE5hbWVgKSBtYXRjaCB0aGUgZmlsdGVyLgorCitUaGUgZm9ybWF0
IG9mIGEgZmlsdGVyIGlzIGEgJ2A6YCctc2VwYXJhdGVkIGxpc3Qgb2Ygd2lsZGNhcmQgcGF0dGVy
bnMgKGNhbGxlZAordGhlICpwb3NpdGl2ZSBwYXR0ZXJucyopIG9wdGlvbmFsbHkgZm9sbG93ZWQg
YnkgYSAnYC1gJyBhbmQgYW5vdGhlcgorJ2A6YCctc2VwYXJhdGVkIHBhdHRlcm4gbGlzdCAoY2Fs
bGVkIHRoZSAqbmVnYXRpdmUgcGF0dGVybnMqKS4gQSB0ZXN0IG1hdGNoZXMKK3RoZSBmaWx0ZXIg
aWYgYW5kIG9ubHkgaWYgaXQgbWF0Y2hlcyBhbnkgb2YgdGhlIHBvc2l0aXZlIHBhdHRlcm5zIGJ1
dCBkb2VzIG5vdAorbWF0Y2ggYW55IG9mIHRoZSBuZWdhdGl2ZSBwYXR0ZXJucy4KKworQSBwYXR0
ZXJuIG1heSBjb250YWluIGAnKidgIChtYXRjaGVzIGFueSBzdHJpbmcpIG9yIGAnPydgIChtYXRj
aGVzIGFueSBzaW5nbGUKK2NoYXJhY3RlcikuIEZvciBjb252ZW5pZW5jZSwgdGhlIGZpbHRlcgor
CitgJyotTmVnYXRpdmVQYXR0ZXJucydgIGNhbiBiZSBhbHNvIHdyaXR0ZW4gYXMgYCctTmVnYXRp
dmVQYXR0ZXJucydgLgorCitGb3IgZXhhbXBsZToKKworKiAgIGAuL2Zvb190ZXN0YCBIYXMgbm8g
ZmxhZywgYW5kIHRodXMgcnVucyBhbGwgaXRzIHRlc3RzLgorKiAgIGAuL2Zvb190ZXN0IC0tZ3Rl
c3RfZmlsdGVyPSpgIEFsc28gcnVucyBldmVyeXRoaW5nLCBkdWUgdG8gdGhlIHNpbmdsZQorICAg
IG1hdGNoLWV2ZXJ5dGhpbmcgYCpgIHZhbHVlLgorKiAgIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmls
dGVyPUZvb1Rlc3QuKmAgUnVucyBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBgRm9vVGVzdGAKKyAg
ICAuCisqICAgYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Kk51bGwqOipDb25zdHJ1Y3Rvcipg
IFJ1bnMgYW55IHRlc3Qgd2hvc2UgZnVsbAorICAgIG5hbWUgY29udGFpbnMgZWl0aGVyIGAiTnVs
bCJgIG9yIGAiQ29uc3RydWN0b3IiYCAuCisqICAgYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9
LSpEZWF0aFRlc3QuKmAgUnVucyBhbGwgbm9uLWRlYXRoIHRlc3RzLgorKiAgIGAuL2Zvb190ZXN0
IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rlc3QuKi1Gb29UZXN0LkJhcmAgUnVucyBldmVyeXRoaW5nIGlu
IHRlc3QKKyAgICBjYXNlIGBGb29UZXN0YCBleGNlcHQgYEZvb1Rlc3QuQmFyYC4KKyogICBgLi9m
b29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj1Gb29UZXN0Lio6QmFyVGVzdC4qLUZvb1Rlc3QuQmFyOkJh
clRlc3QuRm9vYCBSdW5zCisgICAgZXZlcnl0aGluZyBpbiB0ZXN0IGNhc2UgYEZvb1Rlc3RgIGV4
Y2VwdCBgRm9vVGVzdC5CYXJgIGFuZCBldmVyeXRoaW5nIGluCisgICAgdGVzdCBjYXNlIGBCYXJU
ZXN0YCBleGNlcHQgYEJhclRlc3QuRm9vYC4KKyAgICAKKyMjIyMgVGVtcG9yYXJpbHkgRGlzYWJs
aW5nIFRlc3RzCisKK0lmIHlvdSBoYXZlIGEgYnJva2VuIHRlc3QgdGhhdCB5b3UgY2Fubm90IGZp
eCByaWdodCBhd2F5LCB5b3UgY2FuIGFkZCB0aGUKK2BESVNBQkxFRF9gIHByZWZpeCB0byBpdHMg
bmFtZS4gVGhpcyB3aWxsIGV4Y2x1ZGUgaXQgZnJvbSBleGVjdXRpb24uIFRoaXMgaXMKK2JldHRl
ciB0aGFuIGNvbW1lbnRpbmcgb3V0IHRoZSBjb2RlIG9yIHVzaW5nIGAjaWYgMGAsIGFzIGRpc2Fi
bGVkIHRlc3RzIGFyZQorc3RpbGwgY29tcGlsZWQgKGFuZCB0aHVzIHdvbid0IHJvdCkuCisKK0lm
IHlvdSBuZWVkIHRvIGRpc2FibGUgYWxsIHRlc3RzIGluIGEgdGVzdCBjYXNlLCB5b3UgY2FuIGVp
dGhlciBhZGQgYERJU0FCTEVEX2AKK3RvIHRoZSBmcm9udCBvZiB0aGUgbmFtZSBvZiBlYWNoIHRl
c3QsIG9yIGFsdGVybmF0aXZlbHkgYWRkIGl0IHRvIHRoZSBmcm9udCBvZgordGhlIHRlc3QgY2Fz
ZSBuYW1lLgorCitGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyB0ZXN0cyB3b24ndCBiZSBydW4g
YnkgZ29vZ2xldGVzdCwgZXZlbiB0aG91Z2ggdGhleQord2lsbCBzdGlsbCBiZSBjb21waWxlZDoK
KworYGBgYysrCisvLyBUZXN0cyB0aGF0IEZvbyBkb2VzIEFiYy4KK1RFU1QoRm9vVGVzdCwgRElT
QUJMRURfRG9lc0FiYykgeyAuLi4gfQorCitjbGFzcyBESVNBQkxFRF9CYXJUZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OworCisvLyBUZXN0cyB0aGF0IEJhciBkb2VzIFh5ei4K
K1RFU1RfRihESVNBQkxFRF9CYXJUZXN0LCBEb2VzWHl6KSB7IC4uLiB9CitgYGAKKworTk9URTog
VGhpcyBmZWF0dXJlIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHRlbXBvcmFyeSBwYWluLXJlbGll
Zi4gWW91IHN0aWxsIGhhdmUKK3RvIGZpeCB0aGUgZGlzYWJsZWQgdGVzdHMgYXQgYSBsYXRlciBk
YXRlLiBBcyBhIHJlbWluZGVyLCBnb29nbGV0ZXN0IHdpbGwgcHJpbnQKK2EgYmFubmVyIHdhcm5p
bmcgeW91IGlmIGEgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIGFueSBkaXNhYmxlZCB0ZXN0cy4KKwor
VElQOiBZb3UgY2FuIGVhc2lseSBjb3VudCB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHlv
dSBoYXZlIHVzaW5nIGBnc2VhcmNoYAorYW5kL29yIGBncmVwYC4gVGhpcyBudW1iZXIgY2FuIGJl
IHVzZWQgYXMgYSBtZXRyaWMgZm9yIGltcHJvdmluZyB5b3VyIHRlc3QKK3F1YWxpdHkuCisKKyoq
QXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyMgVGVtcG9yYXJpbHkg
RW5hYmxpbmcgRGlzYWJsZWQgVGVzdHMKKworVG8gaW5jbHVkZSBkaXNhYmxlZCB0ZXN0cyBpbiB0
ZXN0IGV4ZWN1dGlvbiwganVzdCBpbnZva2UgdGhlIHRlc3QgcHJvZ3JhbSB3aXRoCit0aGUgYC0t
Z3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHNgIGZsYWcgb3Igc2V0IHRoZQorYEdURVNUX0FM
U09fUlVOX0RJU0FCTEVEX1RFU1RTYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIHZhbHVlIG90
aGVyIHRoYW4gYDBgLgorWW91IGNhbiBjb21iaW5lIHRoaXMgd2l0aCB0aGUgYC0tZ3Rlc3RfZmls
dGVyYCBmbGFnIHRvIGZ1cnRoZXIgc2VsZWN0IHdoaWNoCitkaXNhYmxlZCB0ZXN0cyB0byBydW4u
CisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBSZXBlYXRp
bmcgdGhlIFRlc3RzCisKK09uY2UgaW4gYSB3aGlsZSB5b3UnbGwgcnVuIGludG8gYSB0ZXN0IHdo
b3NlIHJlc3VsdCBpcyBoaXQtb3ItbWlzcy4gUGVyaGFwcyBpdAord2lsbCBmYWlsIG9ubHkgMSUg
b2YgdGhlIHRpbWUsIG1ha2luZyBpdCByYXRoZXIgaGFyZCB0byByZXByb2R1Y2UgdGhlIGJ1ZyB1
bmRlcgorYSBkZWJ1Z2dlci4gVGhpcyBjYW4gYmUgYSBtYWpvciBzb3VyY2Ugb2YgZnJ1c3RyYXRp
b24uCisKK1RoZSBgLS1ndGVzdF9yZXBlYXRgIGZsYWcgYWxsb3dzIHlvdSB0byByZXBlYXQgYWxs
IChvciBzZWxlY3RlZCkgdGVzdCBtZXRob2RzIGluCithIHByb2dyYW0gbWFueSB0aW1lcy4gSG9w
ZWZ1bGx5LCBhIGZsYWt5IHRlc3Qgd2lsbCBldmVudHVhbGx5IGZhaWwgYW5kIGdpdmUgeW91Cith
IGNoYW5jZSB0byBkZWJ1Zy4gSGVyZSdzIGhvdyB0byB1c2UgaXQ6CisKK2BgYG5vbmUKKyQgZm9v
X3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMAorUmVwZWF0IGZvb190ZXN0IDEwMDAgdGltZXMgYW5k
IGRvbid0IHN0b3AgYXQgZmFpbHVyZXMuCisKKyQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9LTEK
K0EgbmVnYXRpdmUgY291bnQgbWVhbnMgcmVwZWF0aW5nIGZvcmV2ZXIuCisKKyQgZm9vX3Rlc3Qg
LS1ndGVzdF9yZXBlYXQ9MTAwMCAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUKK1JlcGVhdCBmb29f
dGVzdCAxMDAwIHRpbWVzLCBzdG9wcGluZyBhdCB0aGUgZmlyc3QgZmFpbHVyZS4gIFRoaXMKK2lz
IGVzcGVjaWFsbHkgdXNlZnVsIHdoZW4gcnVubmluZyB1bmRlciBhIGRlYnVnZ2VyOiB3aGVuIHRo
ZSB0ZXN0CitmYWlscywgaXQgd2lsbCBkcm9wIGludG8gdGhlIGRlYnVnZ2VyIGFuZCB5b3UgY2Fu
IHRoZW4gaW5zcGVjdAordmFyaWFibGVzIGFuZCBzdGFja3MuCisKKyQgZm9vX3Rlc3QgLS1ndGVz
dF9yZXBlYXQ9MTAwMCAtLWd0ZXN0X2ZpbHRlcj1Gb29CYXIuKgorUmVwZWF0IHRoZSB0ZXN0cyB3
aG9zZSBuYW1lIG1hdGNoZXMgdGhlIGZpbHRlciAxMDAwIHRpbWVzLgorYGBgCisKK0lmIHlvdXIg
dGVzdCBwcm9ncmFtIGNvbnRhaW5zIFtnbG9iYWwgc2V0LXVwL3RlYXItZG93bl0oI2dsb2JhbC1z
ZXQtdXAtYW5kLXRlYXItZG93bikgY29kZSwgaXQKK3dpbGwgYmUgcmVwZWF0ZWQgaW4gZWFjaCBp
dGVyYXRpb24gYXMgd2VsbCwgYXMgdGhlIGZsYWtpbmVzcyBtYXkgYmUgaW4gaXQuIFlvdQorY2Fu
IGFsc28gc3BlY2lmeSB0aGUgcmVwZWF0IGNvdW50IGJ5IHNldHRpbmcgdGhlIGBHVEVTVF9SRVBF
QVRgIGVudmlyb25tZW50Cit2YXJpYWJsZS4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdp
bmRvd3MsIE1hYy4KKworIyMjIFNodWZmbGluZyB0aGUgVGVzdHMKKworWW91IGNhbiBzcGVjaWZ5
IHRoZSBgLS1ndGVzdF9zaHVmZmxlYCBmbGFnIChvciBzZXQgdGhlIGBHVEVTVF9TSFVGRkxFYAor
ZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYDFgKSB0byBydW4gdGhlIHRlc3RzIGluIGEgcHJvZ3Jh
bSBpbiBhIHJhbmRvbSBvcmRlci4KK1RoaXMgaGVscHMgdG8gcmV2ZWFsIGJhZCBkZXBlbmRlbmNp
ZXMgYmV0d2VlbiB0ZXN0cy4KKworQnkgZGVmYXVsdCwgZ29vZ2xldGVzdCB1c2VzIGEgcmFuZG9t
IHNlZWQgY2FsY3VsYXRlZCBmcm9tIHRoZSBjdXJyZW50IHRpbWUuCitUaGVyZWZvcmUgeW91J2xs
IGdldCBhIGRpZmZlcmVudCBvcmRlciBldmVyeSB0aW1lLiBUaGUgY29uc29sZSBvdXRwdXQgaW5j
bHVkZXMKK3RoZSByYW5kb20gc2VlZCB2YWx1ZSwgc3VjaCB0aGF0IHlvdSBjYW4gcmVwcm9kdWNl
IGFuIG9yZGVyLXJlbGF0ZWQgdGVzdCBmYWlsdXJlCitsYXRlci4gVG8gc3BlY2lmeSB0aGUgcmFu
ZG9tIHNlZWQgZXhwbGljaXRseSwgdXNlIHRoZSBgLS1ndGVzdF9yYW5kb21fc2VlZD1TRUVEYAor
ZmxhZyAob3Igc2V0IHRoZSBgR1RFU1RfUkFORE9NX1NFRURgIGVudmlyb25tZW50IHZhcmlhYmxl
KSwgd2hlcmUgYFNFRURgIGlzIGFuCitpbnRlZ2VyIGluIHRoZSByYW5nZSBbMCwgOTk5OTldLiBU
aGUgc2VlZCB2YWx1ZSAwIGlzIHNwZWNpYWw6IGl0IHRlbGxzCitnb29nbGV0ZXN0IHRvIGRvIHRo
ZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGNhbGN1bGF0aW5nIHRoZSBzZWVkIGZyb20gdGhlIGN1cnJl
bnQKK3RpbWUuCisKK0lmIHlvdSBjb21iaW5lIHRoaXMgd2l0aCBgLS1ndGVzdF9yZXBlYXQ9TmAs
IGdvb2dsZXRlc3Qgd2lsbCBwaWNrIGEgZGlmZmVyZW50CityYW5kb20gc2VlZCBhbmQgcmUtc2h1
ZmZsZSB0aGUgdGVzdHMgaW4gZWFjaCBpdGVyYXRpb24uCisKKyoqQXZhaWxhYmlsaXR5Kio6IExp
bnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBDb250cm9sbGluZyBUZXN0IE91dHB1dAorCisjIyMj
IENvbG9yZWQgVGVybWluYWwgT3V0cHV0CisKK2dvb2dsZXRlc3QgY2FuIHVzZSBjb2xvcnMgaW4g
aXRzIHRlcm1pbmFsIG91dHB1dCB0byBtYWtlIGl0IGVhc2llciB0byBzcG90IHRoZQoraW1wb3J0
YW50IGluZm9ybWF0aW9uOgorCisuLi48YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuIj5b
LS0tLS0tLS0tLV08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiAxIHRlc3QgZnJvbSBGb29UZXN0
PGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbiI+WyBSVU4gICAgICBdPHNwYW4gc3R5bGU9
ImNvbG9yOmJsYWNrIj4gRm9vVGVzdC5Eb2VzQWJjPGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpn
cmVlbiI+WyAgICAgICBPSyBdPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4gRm9vVGVzdC5Eb2Vz
QWJjPGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbiI+Wy0tLS0tLS0tLS1dPHNwYW4gc3R5
bGU9ImNvbG9yOmJsYWNrIj4gMiB0ZXN0cyBmcm9tIEJhclRlc3Q8YnIvPgorPHNwYW4gc3R5bGU9
ImNvbG9yOmdyZWVuIj5bIFJVTiAgICAgIF08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiBCYXJU
ZXN0Lkhhc1h5elByb3BlcnR5PGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbiI+WyAgICAg
ICBPSyBdPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4gQmFyVGVzdC5IYXNYeXpQcm9wZXJ0eTxi
ci8+Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPlsgUlVOICAgICAgXTxzcGFuIHN0eWxlPSJj
b2xvcjpibGFjayI+IEJhclRlc3QuUmV0dXJuc1RydWVPblN1Y2Nlc3M8YnIvPgorLi4uIHNvbWUg
ZXJyb3IgbWVzc2FnZXMgLi4uPGJyLz4KKzxzcGFuICAgc3R5bGU9ImNvbG9yOnJlZCI+WyAgRkFJ
TEVEICBdIDxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+QmFyVGVzdC5SZXR1cm5zVHJ1ZU9uU3Vj
Y2Vzczxici8+CisuLi48YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuIj5bPT09PT09PT09
PV08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiAzMCB0ZXN0cyBmcm9tIDE0IHRlc3QgY2FzZXMg
cmFuLjxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPlsgIFBBU1NFRCAgXTxzcGFuIHN0
eWxlPSJjb2xvcjpibGFjayI+IDI4IHRlc3RzLjxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6cmVk
Ij5bICBGQUlMRUQgIF08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiAyIHRlc3RzLCBsaXN0ZWQg
YmVsb3c6PGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPlsgIEZBSUxFRCAgXTxzcGFuIHN0
eWxlPSJjb2xvcjpibGFjayI+IEJhclRlc3QuUmV0dXJuc1RydWVPblN1Y2Nlc3M8YnIvPgorPHNw
YW4gc3R5bGU9ImNvbG9yOnJlZCI+WyAgRkFJTEVEICBdPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNr
Ij4gQW5vdGhlclRlc3QuRG9lc1h5ejxici8+CisgIDIgRkFJTEVEIFRFU1RTCisKK1lvdSBjYW4g
c2V0IHRoZSBgR1RFU1RfQ09MT1JgIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZSBgLS1ndGVz
dF9jb2xvcmAKK2NvbW1hbmQgbGluZSBmbGFnIHRvIGB5ZXNgLCBgbm9gLCBvciBgYXV0b2AgKHRo
ZSBkZWZhdWx0KSB0byBlbmFibGUgY29sb3JzLAorZGlzYWJsZSBjb2xvcnMsIG9yIGxldCBnb29n
bGV0ZXN0IGRlY2lkZS4gV2hlbiB0aGUgdmFsdWUgaXMgYGF1dG9gLCBnb29nbGV0ZXN0Cit3aWxs
IHVzZSBjb2xvcnMgaWYgYW5kIG9ubHkgaWYgdGhlIG91dHB1dCBnb2VzIHRvIGEgdGVybWluYWwg
YW5kIChvbiBub24tV2luZG93cworcGxhdGZvcm1zKSB0aGUgYFRFUk1gIGVudmlyb25tZW50IHZh
cmlhYmxlIGlzIHNldCB0byBgeHRlcm1gIG9yIGB4dGVybS1jb2xvcmAuCisKKyAqKkF2YWlsYWJp
bGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMjIFN1cHByZXNzaW5nIHRoZSBFbGFw
c2VkIFRpbWUKKworQnkgZGVmYXVsdCwgZ29vZ2xldGVzdCBwcmludHMgdGhlIHRpbWUgaXQgdGFr
ZXMgdG8gcnVuIGVhY2ggdGVzdC4gVG8gZGlzYWJsZQordGhhdCwgcnVuIHRoZSB0ZXN0IHByb2dy
YW0gd2l0aCB0aGUgYC0tZ3Rlc3RfcHJpbnRfdGltZT0wYCBjb21tYW5kIGxpbmUgZmxhZywgb3IK
K3NldCB0aGUgR1RFU1RfUFJJTlRfVElNRSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBgMGAuCisK
KyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyMgU3VwcHJlc3Np
bmcgVVRGLTggVGV4dCBPdXRwdXQKKworSW4gY2FzZSBvZiBhc3NlcnRpb24gZmFpbHVyZXMsIGdv
b2dsZXRlc3QgcHJpbnRzIGV4cGVjdGVkIGFuZCBhY3R1YWwgdmFsdWVzIG9mCit0eXBlIGBzdHJp
bmdgIGJvdGggYXMgaGV4LWVuY29kZWQgc3RyaW5ncyBhcyB3ZWxsIGFzIGluIHJlYWRhYmxlIFVU
Ri04IHRleHQgaWYKK3RoZXkgY29udGFpbiB2YWxpZCBub24tQVNDSUkgVVRGLTggY2hhcmFjdGVy
cy4gSWYgeW91IHdhbnQgdG8gc3VwcHJlc3MgdGhlIFVURi04Cit0ZXh0IGJlY2F1c2UsIGZvciBl
eGFtcGxlLCB5b3UgZG9uJ3QgaGF2ZSBhbiBVVEYtOCBjb21wYXRpYmxlIG91dHB1dCBtZWRpdW0s
IHJ1bgordGhlIHRlc3QgcHJvZ3JhbSB3aXRoIGAtLWd0ZXN0X3ByaW50X3V0Zjg9MGAgb3Igc2V0
IHRoZSBgR1RFU1RfUFJJTlRfVVRGOGAKK2Vudmlyb25tZW50IHZhcmlhYmxlIHRvIGAwYC4KKwor
KipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworCisjIyMjIEdlbmVyYXRp
bmcgYW4gWE1MIFJlcG9ydAorCitnb29nbGV0ZXN0IGNhbiBlbWl0IGEgZGV0YWlsZWQgWE1MIHJl
cG9ydCB0byBhIGZpbGUgaW4gYWRkaXRpb24gdG8gaXRzIG5vcm1hbAordGV4dHVhbCBvdXRwdXQu
IFRoZSByZXBvcnQgY29udGFpbnMgdGhlIGR1cmF0aW9uIG9mIGVhY2ggdGVzdCwgYW5kIHRodXMg
Y2FuIGhlbHAKK3lvdSBpZGVudGlmeSBzbG93IHRlc3RzLiBUaGUgcmVwb3J0IGlzIGFsc28gdXNl
ZCBieSB0aGUgaHR0cDovL3VuaXR0ZXN0CitkYXNoYm9hcmQgdG8gc2hvdyBwZXItdGVzdC1tZXRo
b2QgZXJyb3IgbWVzc2FnZXMuCisKK1RvIGdlbmVyYXRlIHRoZSBYTUwgcmVwb3J0LCBzZXQgdGhl
IGBHVEVTVF9PVVRQVVRgIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQorYC0tZ3Rlc3Rfb3V0
cHV0YCBmbGFnIHRvIHRoZSBzdHJpbmcgYCJ4bWw6cGF0aF90b19vdXRwdXRfZmlsZSJgLCB3aGlj
aCB3aWxsCitjcmVhdGUgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIGxvY2F0aW9uLiBZb3UgY2FuIGFs
c28ganVzdCB1c2UgdGhlIHN0cmluZyBgInhtbCJgLAoraW4gd2hpY2ggY2FzZSB0aGUgb3V0cHV0
IGNhbiBiZSBmb3VuZCBpbiB0aGUgYHRlc3RfZGV0YWlsLnhtbGAgZmlsZSBpbiB0aGUKK2N1cnJl
bnQgZGlyZWN0b3J5LgorCitJZiB5b3Ugc3BlY2lmeSBhIGRpcmVjdG9yeSAoZm9yIGV4YW1wbGUs
IGAieG1sOm91dHB1dC9kaXJlY3RvcnkvImAgb24gTGludXggb3IKK2AieG1sOm91dHB1dFxkaXJl
Y3RvcnlcImAgb24gV2luZG93cyksIGdvb2dsZXRlc3Qgd2lsbCBjcmVhdGUgdGhlIFhNTCBmaWxl
IGluCit0aGF0IGRpcmVjdG9yeSwgbmFtZWQgYWZ0ZXIgdGhlIHRlc3QgZXhlY3V0YWJsZSAoZS5n
LiBgZm9vX3Rlc3QueG1sYCBmb3IgdGVzdAorcHJvZ3JhbSBgZm9vX3Rlc3RgIG9yIGBmb29fdGVz
dC5leGVgKS4gSWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMgKHBlcmhhcHMgbGVmdAorb3ZlciBm
cm9tIGEgcHJldmlvdXMgcnVuKSwgZ29vZ2xldGVzdCB3aWxsIHBpY2sgYSBkaWZmZXJlbnQgbmFt
ZSAoZS5nLgorYGZvb190ZXN0XzEueG1sYCkgdG8gYXZvaWQgb3ZlcndyaXRpbmcgaXQuCisKKwor
VGhlIHJlcG9ydCBpcyBiYXNlZCBvbiB0aGUgYGp1bml0cmVwb3J0YCBBbnQgdGFzay4gU2luY2Ug
dGhhdCBmb3JtYXQgd2FzCitvcmlnaW5hbGx5IGludGVuZGVkIGZvciBKYXZhLCBhIGxpdHRsZSBp
bnRlcnByZXRhdGlvbiBpcyByZXF1aXJlZCB0byBtYWtlIGl0CithcHBseSB0byBnb29nbGV0ZXN0
IHRlc3RzLCBhcyBzaG93biBoZXJlOgorCitgYGB4bWwKKzx0ZXN0c3VpdGVzIG5hbWU9IkFsbFRl
c3RzIiAuLi4+CisgIDx0ZXN0c3VpdGUgbmFtZT0idGVzdF9jYXNlX25hbWUiIC4uLj4KKyAgICA8
dGVzdGNhc2UgICAgbmFtZT0idGVzdF9uYW1lIiAuLi4+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdl
PSIuLi4iLz4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiIvPgorICAgICAgPGZhaWx1cmUg
bWVzc2FnZT0iLi4uIi8+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rlc3Rz
dWl0ZXM+CitgYGAKKworKiAgIFRoZSByb290IGA8dGVzdHN1aXRlcz5gIGVsZW1lbnQgY29ycmVz
cG9uZHMgdG8gdGhlIGVudGlyZSB0ZXN0IHByb2dyYW0uCisqICAgYDx0ZXN0c3VpdGU+YCBlbGVt
ZW50cyBjb3JyZXNwb25kIHRvIGdvb2dsZXRlc3QgdGVzdCBjYXNlcy4KKyogICBgPHRlc3RjYXNl
PmAgZWxlbWVudHMgY29ycmVzcG9uZCB0byBnb29nbGV0ZXN0IHRlc3QgZnVuY3Rpb25zLgorCitG
b3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgcHJvZ3JhbQorCitgYGBjKysKK1RFU1QoTWF0aFRl
c3QsIEFkZGl0aW9uKSB7IC4uLiB9CitURVNUKE1hdGhUZXN0LCBTdWJ0cmFjdGlvbikgeyAuLi4g
fQorVEVTVChMb2dpY1Rlc3QsIE5vbkNvbnRyYWRpY3Rpb24pIHsgLi4uIH0KK2BgYAorCitjb3Vs
ZCBnZW5lcmF0ZSB0aGlzIHJlcG9ydDoKKworYGBgeG1sCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJVVEYtOCI/PgorPHRlc3RzdWl0ZXMgdGVzdHM9IjMiIGZhaWx1cmVzPSIxIiBlcnJv
cnM9IjAiIHRpbWU9IjAuMDM1IiB0aW1lc3RhbXA9IjIwMTEtMTAtMzFUMTg6NTI6NDIiIG5hbWU9
IkFsbFRlc3RzIj4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJNYXRoVGVzdCIgdGVzdHM9IjIiIGZhaWx1
cmVzPSIxIiBlcnJvcnM9IjAiIHRpbWU9IjAuMDE1Ij4KKyAgICA8dGVzdGNhc2UgbmFtZT0iQWRk
aXRpb24iIHN0YXR1cz0icnVuIiB0aW1lPSIwLjAwNyIgY2xhc3NuYW1lPSIiPgorICAgICAgPGZh
aWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IGFkZCgxLCAxKSYjeDBBOyAgQWN0dWFsOiAzJiN4MEE7
RXhwZWN0ZWQ6IDIiIHR5cGU9IiI+Li4uPC9mYWlsdXJlPgorICAgICAgPGZhaWx1cmUgbWVzc2Fn
ZT0iVmFsdWUgb2Y6IGFkZCgxLCAtMSkmI3gwQTsgIEFjdHVhbDogMSYjeDBBO0V4cGVjdGVkOiAw
IiB0eXBlPSIiPi4uLjwvZmFpbHVyZT4KKyAgICA8L3Rlc3RjYXNlPgorICAgIDx0ZXN0Y2FzZSBu
YW1lPSJTdWJ0cmFjdGlvbiIgc3RhdHVzPSJydW4iIHRpbWU9IjAuMDA1IiBjbGFzc25hbWU9IiI+
CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iTG9n
aWNUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGVycm9ycz0iMCIgdGltZT0iMC4wMDUiPgor
ICAgIDx0ZXN0Y2FzZSBuYW1lPSJOb25Db250cmFkaWN0aW9uIiBzdGF0dXM9InJ1biIgdGltZT0i
MC4wMDUiIGNsYXNzbmFtZT0iIj4KKyAgICA8L3Rlc3RjYXNlPgorICA8L3Rlc3RzdWl0ZT4KKzwv
dGVzdHN1aXRlcz4KK2BgYAorCitUaGluZ3MgdG8gbm90ZToKKworKiAgIFRoZSBgdGVzdHNgIGF0
dHJpYnV0ZSBvZiBhIGA8dGVzdHN1aXRlcz5gIG9yIGA8dGVzdHN1aXRlPmAgZWxlbWVudCB0ZWxs
cyBob3cKKyAgICBtYW55IHRlc3QgZnVuY3Rpb25zIHRoZSBnb29nbGV0ZXN0IHByb2dyYW0gb3Ig
dGVzdCBjYXNlIGNvbnRhaW5zLCB3aGlsZSB0aGUKKyAgICBgZmFpbHVyZXNgIGF0dHJpYnV0ZSB0
ZWxscyBob3cgbWFueSBvZiB0aGVtIGZhaWxlZC4KKworKiAgIFRoZSBgdGltZWAgYXR0cmlidXRl
IGV4cHJlc3NlcyB0aGUgZHVyYXRpb24gb2YgdGhlIHRlc3QsIHRlc3QgY2FzZSwgb3IKKyAgICBl
bnRpcmUgdGVzdCBwcm9ncmFtIGluIHNlY29uZHMuCisKKyogICBUaGUgYHRpbWVzdGFtcGAgYXR0
cmlidXRlIHJlY29yZHMgdGhlIGxvY2FsIGRhdGUgYW5kIHRpbWUgb2YgdGhlIHRlc3QKKyAgICBl
eGVjdXRpb24uCisKKyogICBFYWNoIGA8ZmFpbHVyZT5gIGVsZW1lbnQgY29ycmVzcG9uZHMgdG8g
YSBzaW5nbGUgZmFpbGVkIGdvb2dsZXRlc3QKKyAgICBhc3NlcnRpb24uCisKKyoqQXZhaWxhYmls
aXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyMgR2VuZXJhdGluZyBhbiBKU09OIFJl
cG9ydAorCitnb29nbGV0ZXN0IGNhbiBhbHNvIGVtaXQgYSBKU09OIHJlcG9ydCBhcyBhbiBhbHRl
cm5hdGl2ZSBmb3JtYXQgdG8gWE1MLiBUbworZ2VuZXJhdGUgdGhlIEpTT04gcmVwb3J0LCBzZXQg
dGhlIGBHVEVTVF9PVVRQVVRgIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQorYC0tZ3Rlc3Rf
b3V0cHV0YCBmbGFnIHRvIHRoZSBzdHJpbmcgYCJqc29uOnBhdGhfdG9fb3V0cHV0X2ZpbGUiYCwg
d2hpY2ggd2lsbAorY3JlYXRlIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBsb2NhdGlvbi4gWW91IGNh
biBhbHNvIGp1c3QgdXNlIHRoZSBzdHJpbmcKK2AianNvbiJgLCBpbiB3aGljaCBjYXNlIHRoZSBv
dXRwdXQgY2FuIGJlIGZvdW5kIGluIHRoZSBgdGVzdF9kZXRhaWwuanNvbmAgZmlsZQoraW4gdGhl
IGN1cnJlbnQgZGlyZWN0b3J5LgorCitUaGUgcmVwb3J0IGZvcm1hdCBjb25mb3JtcyB0byB0aGUg
Zm9sbG93aW5nIEpTT04gU2NoZW1hOgorCitgYGBqc29uCit7CisgICIkc2NoZW1hIjogImh0dHA6
Ly9qc29uLXNjaGVtYS5vcmcvc2NoZW1hIyIsCisgICJ0eXBlIjogIm9iamVjdCIsCisgICJkZWZp
bml0aW9ucyI6IHsKKyAgICAiVGVzdENhc2UiOiB7CisgICAgICAidHlwZSI6ICJvYmplY3QiLAor
ICAgICAgInByb3BlcnRpZXMiOiB7CisgICAgICAgICJuYW1lIjogeyAidHlwZSI6ICJzdHJpbmci
IH0sCisgICAgICAgICJ0ZXN0cyI6IHsgInR5cGUiOiAiaW50ZWdlciIgfSwKKyAgICAgICAgImZh
aWx1cmVzIjogeyAidHlwZSI6ICJpbnRlZ2VyIiB9LAorICAgICAgICAiZGlzYWJsZWQiOiB7ICJ0
eXBlIjogImludGVnZXIiIH0sCisgICAgICAgICJ0aW1lIjogeyAidHlwZSI6ICJzdHJpbmciIH0s
CisgICAgICAgICJ0ZXN0c3VpdGUiOiB7CisgICAgICAgICAgInR5cGUiOiAiYXJyYXkiLAorICAg
ICAgICAgICJpdGVtcyI6IHsKKyAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvVGVz
dEluZm8iCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAiVGVz
dEluZm8iOiB7CisgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgInByb3BlcnRpZXMiOiB7
CisgICAgICAgICJuYW1lIjogeyAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICJzdGF0dXMi
OiB7CisgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAiZW51bSI6IFsiUlVO
IiwgIk5PVFJVTiJdCisgICAgICAgIH0sCisgICAgICAgICJ0aW1lIjogeyAidHlwZSI6ICJzdHJp
bmciIH0sCisgICAgICAgICJjbGFzc25hbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAg
ICAgImZhaWx1cmVzIjogeworICAgICAgICAgICJ0eXBlIjogImFycmF5IiwKKyAgICAgICAgICAi
aXRlbXMiOiB7CisgICAgICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL0ZhaWx1cmUiCisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAiRmFpbHVyZSI6IHsK
KyAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAicHJvcGVydGllcyI6IHsKKyAgICAgICAg
ImZhaWx1cmVzIjogeyAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICJ0eXBlIjogeyAidHlw
ZSI6ICJzdHJpbmciIH0KKyAgICAgIH0KKyAgICB9CisgIH0sCisgICJwcm9wZXJ0aWVzIjogewor
ICAgICJ0ZXN0cyI6IHsgInR5cGUiOiAiaW50ZWdlciIgfSwKKyAgICAiZmFpbHVyZXMiOiB7ICJ0
eXBlIjogImludGVnZXIiIH0sCisgICAgImRpc2FibGVkIjogeyAidHlwZSI6ICJpbnRlZ2VyIiB9
LAorICAgICJlcnJvcnMiOiB7ICJ0eXBlIjogImludGVnZXIiIH0sCisgICAgInRpbWVzdGFtcCI6
IHsKKyAgICAgICJ0eXBlIjogInN0cmluZyIsCisgICAgICAiZm9ybWF0IjogImRhdGUtdGltZSIK
KyAgICB9LAorICAgICJ0aW1lIjogeyAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgIm5hbWUiOiB7
ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAidGVzdHN1aXRlcyI6IHsKKyAgICAgICJ0eXBlIjog
ImFycmF5IiwKKyAgICAgICJpdGVtcyI6IHsKKyAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9u
cy9UZXN0Q2FzZSIKKyAgICAgIH0KKyAgICB9CisgIH0KK30KK2BgYAorCitUaGUgcmVwb3J0IHVz
ZXMgdGhlIGZvcm1hdCB0aGF0IGNvbmZvcm1zIHRvIHRoZSBmb2xsb3dpbmcgUHJvdG8zIHVzaW5n
IHRoZSBbSlNPTgorZW5jb2RpbmddKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3Byb3Rv
Y29sLWJ1ZmZlcnMvZG9jcy9wcm90bzMjanNvbik6CisKK2BgYHByb3RvCitzeW50YXggPSAicHJv
dG8zIjsKKworcGFja2FnZSBnb29nbGV0ZXN0OworCitpbXBvcnQgImdvb2dsZS9wcm90b2J1Zi90
aW1lc3RhbXAucHJvdG8iOworaW1wb3J0ICJnb29nbGUvcHJvdG9idWYvZHVyYXRpb24ucHJvdG8i
OworCittZXNzYWdlIFVuaXRUZXN0IHsKKyAgaW50MzIgdGVzdHMgPSAxOworICBpbnQzMiBmYWls
dXJlcyA9IDI7CisgIGludDMyIGRpc2FibGVkID0gMzsKKyAgaW50MzIgZXJyb3JzID0gNDsKKyAg
Z29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCB0aW1lc3RhbXAgPSA1OworICBnb29nbGUucHJvdG9i
dWYuRHVyYXRpb24gdGltZSA9IDY7CisgIHN0cmluZyBuYW1lID0gNzsKKyAgcmVwZWF0ZWQgVGVz
dENhc2UgdGVzdHN1aXRlcyA9IDg7Cit9CisKK21lc3NhZ2UgVGVzdENhc2UgeworICBzdHJpbmcg
bmFtZSA9IDE7CisgIGludDMyIHRlc3RzID0gMjsKKyAgaW50MzIgZmFpbHVyZXMgPSAzOworICBp
bnQzMiBkaXNhYmxlZCA9IDQ7CisgIGludDMyIGVycm9ycyA9IDU7CisgIGdvb2dsZS5wcm90b2J1
Zi5EdXJhdGlvbiB0aW1lID0gNjsKKyAgcmVwZWF0ZWQgVGVzdEluZm8gdGVzdHN1aXRlID0gNzsK
K30KKworbWVzc2FnZSBUZXN0SW5mbyB7CisgIHN0cmluZyBuYW1lID0gMTsKKyAgZW51bSBTdGF0
dXMgeworICAgIFJVTiA9IDA7CisgICAgTk9UUlVOID0gMTsKKyAgfQorICBTdGF0dXMgc3RhdHVz
ID0gMjsKKyAgZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uIHRpbWUgPSAzOworICBzdHJpbmcgY2xh
c3NuYW1lID0gNDsKKyAgbWVzc2FnZSBGYWlsdXJlIHsKKyAgICBzdHJpbmcgZmFpbHVyZXMgPSAx
OworICAgIHN0cmluZyB0eXBlID0gMjsKKyAgfQorICByZXBlYXRlZCBGYWlsdXJlIGZhaWx1cmVz
ID0gNTsKK30KK2BgYAorCitGb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgcHJvZ3JhbQorCitg
YGBjKysKK1RFU1QoTWF0aFRlc3QsIEFkZGl0aW9uKSB7IC4uLiB9CitURVNUKE1hdGhUZXN0LCBT
dWJ0cmFjdGlvbikgeyAuLi4gfQorVEVTVChMb2dpY1Rlc3QsIE5vbkNvbnRyYWRpY3Rpb24pIHsg
Li4uIH0KK2BgYAorCitjb3VsZCBnZW5lcmF0ZSB0aGlzIHJlcG9ydDoKKworYGBganNvbgorewor
ICAidGVzdHMiOiAzLAorICAiZmFpbHVyZXMiOiAxLAorICAiZXJyb3JzIjogMCwKKyAgInRpbWUi
OiAiMC4wMzVzIiwKKyAgInRpbWVzdGFtcCI6ICIyMDExLTEwLTMxVDE4OjUyOjQyWiIKKyAgIm5h
bWUiOiAiQWxsVGVzdHMiLAorICAidGVzdHN1aXRlcyI6IFsKKyAgICB7CisgICAgICAibmFtZSI6
ICJNYXRoVGVzdCIsCisgICAgICAidGVzdHMiOiAyLAorICAgICAgImZhaWx1cmVzIjogMSwKKyAg
ICAgICJlcnJvcnMiOiAwLAorICAgICAgInRpbWUiOiAiMC4wMTVzIiwKKyAgICAgICJ0ZXN0c3Vp
dGUiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAibmFtZSI6ICJBZGRpdGlvbiIsCisgICAgICAg
ICAgInN0YXR1cyI6ICJSVU4iLAorICAgICAgICAgICJ0aW1lIjogIjAuMDA3cyIsCisgICAgICAg
ICAgImNsYXNzbmFtZSI6ICIiLAorICAgICAgICAgICJmYWlsdXJlcyI6IFsKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgIm1lc3NhZ2UiOiAiVmFsdWUgb2Y6IGFkZCgxLCAxKVx4MEEgIEFj
dHVhbDogM1x4MEFFeHBlY3RlZDogMiIsCisgICAgICAgICAgICAgICJ0eXBlIjogIiIKKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICJtZXNzYWdlIjogIlZhbHVl
IG9mOiBhZGQoMSwgLTEpXHgwQSAgQWN0dWFsOiAxXHgwQUV4cGVjdGVkOiAwIiwKKyAgICAgICAg
ICAgICAgInR5cGUiOiAiIgorICAgICAgICAgICAgfQorICAgICAgICAgIF0KKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICJuYW1lIjogIlN1YnRyYWN0aW9uIiwKKyAgICAgICAgICAi
c3RhdHVzIjogIlJVTiIsCisgICAgICAgICAgInRpbWUiOiAiMC4wMDVzIiwKKyAgICAgICAgICAi
Y2xhc3NuYW1lIjogIiIKKyAgICAgICAgfQorICAgICAgXQorICAgIH0KKyAgICB7CisgICAgICAi
bmFtZSI6ICJMb2dpY1Rlc3QiLAorICAgICAgInRlc3RzIjogMSwKKyAgICAgICJmYWlsdXJlcyI6
IDAsCisgICAgICAiZXJyb3JzIjogMCwKKyAgICAgICJ0aW1lIjogIjAuMDA1cyIsCisgICAgICAi
dGVzdHN1aXRlIjogWworICAgICAgICB7CisgICAgICAgICAgIm5hbWUiOiAiTm9uQ29udHJhZGlj
dGlvbiIsCisgICAgICAgICAgInN0YXR1cyI6ICJSVU4iLAorICAgICAgICAgICJ0aW1lIjogIjAu
MDA1cyIsCisgICAgICAgICAgImNsYXNzbmFtZSI6ICIiCisgICAgICAgIH0KKyAgICAgIF0KKyAg
ICB9CisgIF0KK30KK2BgYAorCitJTVBPUlRBTlQ6IFRoZSBleGFjdCBmb3JtYXQgb2YgdGhlIEpT
T04gZG9jdW1lbnQgaXMgc3ViamVjdCB0byBjaGFuZ2UuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExp
bnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBDb250cm9sbGluZyBIb3cgRmFpbHVyZXMgQXJlIFJl
cG9ydGVkCisKKyMjIyMgVHVybmluZyBBc3NlcnRpb24gRmFpbHVyZXMgaW50byBCcmVhay1Qb2lu
dHMKKworV2hlbiBydW5uaW5nIHRlc3QgcHJvZ3JhbXMgdW5kZXIgYSBkZWJ1Z2dlciwgaXQncyB2
ZXJ5IGNvbnZlbmllbnQgaWYgdGhlCitkZWJ1Z2dlciBjYW4gY2F0Y2ggYW4gYXNzZXJ0aW9uIGZh
aWx1cmUgYW5kIGF1dG9tYXRpY2FsbHkgZHJvcCBpbnRvIGludGVyYWN0aXZlCittb2RlLiBnb29n
bGV0ZXN0J3MgKmJyZWFrLW9uLWZhaWx1cmUqIG1vZGUgc3VwcG9ydHMgdGhpcyBiZWhhdmlvci4K
KworVG8gZW5hYmxlIGl0LCBzZXQgdGhlIGBHVEVTVF9CUkVBS19PTl9GQUlMVVJFYCBlbnZpcm9u
bWVudCB2YXJpYWJsZSB0byBhIHZhbHVlCitvdGhlciB0aGFuIGAwYCAuIEFsdGVybmF0aXZlbHks
IHlvdSBjYW4gdXNlIHRoZSBgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlYAorY29tbWFuZCBsaW5l
IGZsYWcuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyMg
RGlzYWJsaW5nIENhdGNoaW5nIFRlc3QtVGhyb3duIEV4Y2VwdGlvbnMKKworZ29vZ2xldGVzdCBj
YW4gYmUgdXNlZCBlaXRoZXIgd2l0aCBvciB3aXRob3V0IGV4Y2VwdGlvbnMgZW5hYmxlZC4gSWYg
YSB0ZXN0Cit0aHJvd3MgYSBDKysgZXhjZXB0aW9uIG9yIChvbiBXaW5kb3dzKSBhIHN0cnVjdHVy
ZWQgZXhjZXB0aW9uIChTRUgpLCBieSBkZWZhdWx0Citnb29nbGV0ZXN0IGNhdGNoZXMgaXQsIHJl
cG9ydHMgaXQgYXMgYSB0ZXN0IGZhaWx1cmUsIGFuZCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dAor
dGVzdCBtZXRob2QuIFRoaXMgbWF4aW1pemVzIHRoZSBjb3ZlcmFnZSBvZiBhIHRlc3QgcnVuLiBB
bHNvLCBvbiBXaW5kb3dzIGFuCit1bmNhdWdodCBleGNlcHRpb24gd2lsbCBjYXVzZSBhIHBvcC11
cCB3aW5kb3csIHNvIGNhdGNoaW5nIHRoZSBleGNlcHRpb25zIGFsbG93cworeW91IHRvIHJ1biB0
aGUgdGVzdHMgYXV0b21hdGljYWxseS4KKworV2hlbiBkZWJ1Z2dpbmcgdGhlIHRlc3QgZmFpbHVy
ZXMsIGhvd2V2ZXIsIHlvdSBtYXkgaW5zdGVhZCB3YW50IHRoZSBleGNlcHRpb25zCit0byBiZSBo
YW5kbGVkIGJ5IHRoZSBkZWJ1Z2dlciwgc3VjaCB0aGF0IHlvdSBjYW4gZXhhbWluZSB0aGUgY2Fs
bCBzdGFjayB3aGVuIGFuCitleGNlcHRpb24gaXMgdGhyb3duLiBUbyBhY2hpZXZlIHRoYXQsIHNl
dCB0aGUgYEdURVNUX0NBVENIX0VYQ0VQVElPTlNgCitlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBg
MGAsIG9yIHVzZSB0aGUgYC0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucz0wYCBmbGFnIHdoZW4KK3J1
bm5pbmcgdGhlIHRlc3RzLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFj
LgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL2ZhcS5tZCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvZmFxLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkNDJmZjdkYmFh
OGZhYmQwY2M2NTJmZDcwNTI3OTgxODRlOTVjNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9kb2NzL2ZhcS5tZApAQCAtMCwwICsxLDc3MCBAQAorIyBHb29nbGV0
ZXN0IEZBUQorCisKKyMjIFdoeSBzaG91bGQgdGVzdCBjYXNlIG5hbWVzIGFuZCB0ZXN0IG5hbWVz
IG5vdCBjb250YWluIHVuZGVyc2NvcmU/CisKK1VuZGVyc2NvcmUgKGBfYCkgaXMgc3BlY2lhbCwg
YXMgQysrIHJlc2VydmVzIHRoZSBmb2xsb3dpbmcgdG8gYmUgdXNlZCBieSB0aGUKK2NvbXBpbGVy
IGFuZCB0aGUgc3RhbmRhcmQgbGlicmFyeToKKworMS4gIGFueSBpZGVudGlmaWVyIHRoYXQgc3Rh
cnRzIHdpdGggYW4gYF9gIGZvbGxvd2VkIGJ5IGFuIHVwcGVyLWNhc2UgbGV0dGVyLCBhbmQKKzEu
ICBhbnkgaWRlbnRpZmllciB0aGF0IGNvbnRhaW5zIHR3byBjb25zZWN1dGl2ZSB1bmRlcnNjb3Jl
cyAoaS5lLiBgX19gKQorICAgICphbnl3aGVyZSogaW4gaXRzIG5hbWUuCisKK1VzZXIgY29kZSBp
cyAqcHJvaGliaXRlZCogZnJvbSB1c2luZyBzdWNoIGlkZW50aWZpZXJzLgorCitOb3cgbGV0J3Mg
bG9vayBhdCB3aGF0IHRoaXMgbWVhbnMgZm9yIGBURVNUYCBhbmQgYFRFU1RfRmAuCisKK0N1cnJl
bnRseSBgVEVTVChUZXN0Q2FzZU5hbWUsIFRlc3ROYW1lKWAgZ2VuZXJhdGVzIGEgY2xhc3MgbmFt
ZWQKK2BUZXN0Q2FzZU5hbWVfVGVzdE5hbWVfVGVzdGAuIFdoYXQgaGFwcGVucyBpZiBgVGVzdENh
c2VOYW1lYCBvciBgVGVzdE5hbWVgCitjb250YWlucyBgX2A/CisKKzEuICBJZiBgVGVzdENhc2VO
YW1lYCBzdGFydHMgd2l0aCBhbiBgX2AgZm9sbG93ZWQgYnkgYW4gdXBwZXItY2FzZSBsZXR0ZXIg
KHNheSwKKyAgICBgX0Zvb2ApLCB3ZSBlbmQgdXAgd2l0aCBgX0Zvb19UZXN0TmFtZV9UZXN0YCwg
d2hpY2ggaXMgcmVzZXJ2ZWQgYW5kIHRodXMKKyAgICBpbnZhbGlkLgorMS4gIElmIGBUZXN0Q2Fz
ZU5hbWVgIGVuZHMgd2l0aCBhbiBgX2AgKHNheSwgYEZvb19gKSwgd2UgZ2V0CisgICAgYEZvb19f
VGVzdE5hbWVfVGVzdGAsIHdoaWNoIGlzIGludmFsaWQuCisxLiAgSWYgYFRlc3ROYW1lYCBzdGFy
dHMgd2l0aCBhbiBgX2AgKHNheSwgYF9CYXJgKSwgd2UgZ2V0CisgICAgYFRlc3RDYXNlTmFtZV9f
QmFyX1Rlc3RgLCB3aGljaCBpcyBpbnZhbGlkLgorMS4gIElmIGBUZXN0TmFtZWAgZW5kcyB3aXRo
IGFuIGBfYCAoc2F5LCBgQmFyX2ApLCB3ZSBnZXQKKyAgICBgVGVzdENhc2VOYW1lX0Jhcl9fVGVz
dGAsIHdoaWNoIGlzIGludmFsaWQuCisKK1NvIGNsZWFybHkgYFRlc3RDYXNlTmFtZWAgYW5kIGBU
ZXN0TmFtZWAgY2Fubm90IHN0YXJ0IG9yIGVuZCB3aXRoIGBfYCAoQWN0dWFsbHksCitgVGVzdENh
c2VOYW1lYCBjYW4gc3RhcnQgd2l0aCBgX2AgLS0gYXMgbG9uZyBhcyB0aGUgYF9gIGlzbid0IGZv
bGxvd2VkIGJ5IGFuCit1cHBlci1jYXNlIGxldHRlci4gQnV0IHRoYXQncyBnZXR0aW5nIGNvbXBs
aWNhdGVkLiBTbyBmb3Igc2ltcGxpY2l0eSB3ZSBqdXN0IHNheQordGhhdCBpdCBjYW5ub3Qgc3Rh
cnQgd2l0aCBgX2AuKS4KKworSXQgbWF5IHNlZW0gZmluZSBmb3IgYFRlc3RDYXNlTmFtZWAgYW5k
IGBUZXN0TmFtZWAgdG8gY29udGFpbiBgX2AgaW4gdGhlIG1pZGRsZS4KK0hvd2V2ZXIsIGNvbnNp
ZGVyIHRoaXM6CisKK2BgYGMrKworVEVTVChUaW1lLCBGbGllc19MaWtlX0FuX0Fycm93KSB7IC4u
LiB9CitURVNUKFRpbWVfRmxpZXMsIExpa2VfQW5fQXJyb3cpIHsgLi4uIH0KK2BgYAorCitOb3cs
IHRoZSB0d28gYFRFU1RgcyB3aWxsIGJvdGggZ2VuZXJhdGUgdGhlIHNhbWUgY2xhc3MKKyhgVGlt
ZV9GbGllc19MaWtlX0FuX0Fycm93X1Rlc3RgKS4gVGhhdCdzIG5vdCBnb29kLgorCitTbyBmb3Ig
c2ltcGxpY2l0eSwgd2UganVzdCBhc2sgdGhlIHVzZXJzIHRvIGF2b2lkIGBfYCBpbiBgVGVzdENh
c2VOYW1lYCBhbmQKK2BUZXN0TmFtZWAuIFRoZSBydWxlIGlzIG1vcmUgY29uc3RyYWluaW5nIHRo
YW4gbmVjZXNzYXJ5LCBidXQgaXQncyBzaW1wbGUgYW5kCitlYXN5IHRvIHJlbWVtYmVyLiBJdCBh
bHNvIGdpdmVzIGdvb2dsZXRlc3Qgc29tZSB3aWdnbGUgcm9vbSBpbiBjYXNlIGl0cworaW1wbGVt
ZW50YXRpb24gbmVlZHMgdG8gY2hhbmdlIGluIHRoZSBmdXR1cmUuCisKK0lmIHlvdSB2aW9sYXRl
IHRoZSBydWxlLCB0aGVyZSBtYXkgbm90IGJlIGltbWVkaWF0ZSBjb25zZXF1ZW5jZXMsIGJ1dCB5
b3VyIHRlc3QKK21heSAoanVzdCBtYXkpIGJyZWFrIHdpdGggYSBuZXcgY29tcGlsZXIgKG9yIGEg
bmV3IHZlcnNpb24gb2YgdGhlIGNvbXBpbGVyIHlvdQorYXJlIHVzaW5nKSBvciB3aXRoIGEgbmV3
IHZlcnNpb24gb2YgZ29vZ2xldGVzdC4gVGhlcmVmb3JlIGl0J3MgYmVzdCB0byBmb2xsb3cKK3Ro
ZSBydWxlLgorCisjIyBXaHkgZG9lcyBnb29nbGV0ZXN0IHN1cHBvcnQgYEVYUEVDVF9FUShOVUxM
LCBwdHIpYCBhbmQgYEFTU0VSVF9FUShOVUxMLCBwdHIpYCBidXQgbm90IGBFWFBFQ1RfTkUoTlVM
TCwgcHRyKWAgYW5kIGBBU1NFUlRfTkUoTlVMTCwgcHRyKWA/CisKK0ZpcnN0IG9mIGFsbCB5b3Ug
Y2FuIHVzZSBgRVhQRUNUX05FKG51bGxwdHIsIHB0cilgIGFuZCBgQVNTRVJUX05FKG51bGxwdHIs
CitwdHIpYC4gVGhpcyBpcyB0aGUgcHJlZmVycmVkIHN5bnRheCBpbiB0aGUgc3R5bGUgZ3VpZGUg
YmVjYXVzZSBudWxscHRyIGRvZXMgbm90CitoYXZlIHRoZSB0eXBlIHByb2JsZW1zIHRoYXQgTlVM
TCBkb2VzLiBXaGljaCBpcyB3aHkgTlVMTCBkb2VzIG5vdCB3b3JrLgorCitEdWUgdG8gc29tZSBw
ZWN1bGlhcml0eSBvZiBDKyssIGl0IHJlcXVpcmVzIHNvbWUgbm9uLXRyaXZpYWwgdGVtcGxhdGUg
bWV0YQorcHJvZ3JhbW1pbmcgdHJpY2tzIHRvIHN1cHBvcnQgdXNpbmcgYE5VTExgIGFzIGFuIGFy
Z3VtZW50IG9mIHRoZSBgRVhQRUNUX1hYKClgCithbmQgYEFTU0VSVF9YWCgpYCBtYWNyb3MuIFRo
ZXJlZm9yZSB3ZSBvbmx5IGRvIGl0IHdoZXJlIGl0J3MgbW9zdCBuZWVkZWQKKyhvdGhlcndpc2Ug
d2UgbWFrZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgZ29vZ2xldGVzdCBoYXJkZXIgdG8gbWFpbnRh
aW4gYW5kIG1vcmUKK2Vycm9yLXByb25lIHRoYW4gbmVjZXNzYXJ5KS4KKworVGhlIGBFWFBFQ1Rf
RVEoKWAgbWFjcm8gdGFrZXMgdGhlICpleHBlY3RlZCogdmFsdWUgYXMgaXRzIGZpcnN0IGFyZ3Vt
ZW50IGFuZCB0aGUKKyphY3R1YWwqIHZhbHVlIGFzIHRoZSBzZWNvbmQuIEl0J3MgcmVhc29uYWJs
ZSB0aGF0IHNvbWVvbmUgd2FudHMgdG8gd3JpdGUKK2BFWFBFQ1RfRVEoTlVMTCwgc29tZV9leHBy
ZXNzaW9uKWAsIGFuZCB0aGlzIGluZGVlZCB3YXMgcmVxdWVzdGVkIHNldmVyYWwgdGltZXMuCitU
aGVyZWZvcmUgd2UgaW1wbGVtZW50ZWQgaXQuCisKK1RoZSBuZWVkIGZvciBgRVhQRUNUX05FKE5V
TEwsIHB0cilgIGlzbid0IG5lYXJseSBhcyBzdHJvbmcuIFdoZW4gdGhlIGFzc2VydGlvbgorZmFp
bHMsIHlvdSBhbHJlYWR5IGtub3cgdGhhdCBgcHRyYCBtdXN0IGJlIGBOVUxMYCwgc28gaXQgZG9l
c24ndCBhZGQgYW55CitpbmZvcm1hdGlvbiB0byBwcmludCBgcHRyYCBpbiB0aGlzIGNhc2UuIFRo
YXQgbWVhbnMgYEVYUEVDVF9UUlVFKHB0ciAhPSBOVUxMKWAKK3dvcmtzIGp1c3QgYXMgd2VsbC4K
KworSWYgd2Ugd2VyZSB0byBzdXBwb3J0IGBFWFBFQ1RfTkUoTlVMTCwgcHRyKWAsIGZvciBjb25z
aXN0ZW5jeSB3ZSdsbCBoYXZlIHRvCitzdXBwb3J0IGBFWFBFQ1RfTkUocHRyLCBOVUxMKWAgYXMg
d2VsbCwgYXMgdW5saWtlIGBFWFBFQ1RfRVFgLCB3ZSBkb24ndCBoYXZlIGEKK2NvbnZlbnRpb24g
b24gdGhlIG9yZGVyIG9mIHRoZSB0d28gYXJndW1lbnRzIGZvciBgRVhQRUNUX05FYC4gVGhpcyBt
ZWFucyB1c2luZwordGhlIHRlbXBsYXRlIG1ldGEgcHJvZ3JhbW1pbmcgdHJpY2tzIHR3aWNlIGlu
IHRoZSBpbXBsZW1lbnRhdGlvbiwgbWFraW5nIGl0IGV2ZW4KK2hhcmRlciB0byB1bmRlcnN0YW5k
IGFuZCBtYWludGFpbi4gV2UgYmVsaWV2ZSB0aGUgYmVuZWZpdCBkb2Vzbid0IGp1c3RpZnkgdGhl
Citjb3N0LgorCitGaW5hbGx5LCB3aXRoIHRoZSBncm93dGggb2YgdGhlIGdNb2NrIG1hdGNoZXIg
bGlicmFyeSwgd2UgYXJlIGVuY291cmFnaW5nIHBlb3BsZQordG8gdXNlIHRoZSB1bmlmaWVkIGBF
WFBFQ1RfVEhBVCh2YWx1ZSwgbWF0Y2hlcilgIHN5bnRheCBtb3JlIG9mdGVuIGluIHRlc3RzLiBP
bmUKK3NpZ25pZmljYW50IGFkdmFudGFnZSBvZiB0aGUgbWF0Y2hlciBhcHByb2FjaCBpcyB0aGF0
IG1hdGNoZXJzIGNhbiBiZSBlYXNpbHkKK2NvbWJpbmVkIHRvIGZvcm0gbmV3IG1hdGNoZXJzLCB3
aGlsZSB0aGUgYEVYUEVDVF9ORWAsIGV0YywgbWFjcm9zIGNhbm5vdCBiZQorZWFzaWx5IGNvbWJp
bmVkLiBUaGVyZWZvcmUgd2Ugd2FudCB0byBpbnZlc3QgbW9yZSBpbiB0aGUgbWF0Y2hlcnMgdGhh
biBpbiB0aGUKK2BFWFBFQ1RfWFgoKWAgbWFjcm9zLgorCisjIyBJIG5lZWQgdG8gdGVzdCB0aGF0
IGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgb2YgYW4gaW50ZXJmYWNlIHNhdGlzZnkgc29tZSBj
b21tb24gcmVxdWlyZW1lbnRzLiBTaG91bGQgSSB1c2UgdHlwZWQgdGVzdHMgb3IgdmFsdWUtcGFy
YW1ldGVyaXplZCB0ZXN0cz8KKworRm9yIHRlc3RpbmcgdmFyaW91cyBpbXBsZW1lbnRhdGlvbnMg
b2YgdGhlIHNhbWUgaW50ZXJmYWNlLCBlaXRoZXIgdHlwZWQgdGVzdHMgb3IKK3ZhbHVlLXBhcmFt
ZXRlcml6ZWQgdGVzdHMgY2FuIGdldCBpdCBkb25lLiBJdCdzIHJlYWxseSB1cCB0byB5b3UgdGhl
IHVzZXIgdG8KK2RlY2lkZSB3aGljaCBpcyBtb3JlIGNvbnZlbmllbnQgZm9yIHlvdSwgZGVwZW5k
aW5nIG9uIHlvdXIgcGFydGljdWxhciBjYXNlLiBTb21lCityb3VnaCBndWlkZWxpbmVzOgorCisq
ICAgVHlwZWQgdGVzdHMgY2FuIGJlIGVhc2llciB0byB3cml0ZSBpZiBpbnN0YW5jZXMgb2YgdGhl
IGRpZmZlcmVudAorICAgIGltcGxlbWVudGF0aW9ucyBjYW4gYmUgY3JlYXRlZCB0aGUgc2FtZSB3
YXksIG1vZHVsbyB0aGUgdHlwZS4gRm9yIGV4YW1wbGUsCisgICAgaWYgYWxsIHRoZXNlIGltcGxl
bWVudGF0aW9ucyBoYXZlIGEgcHVibGljIGRlZmF1bHQgY29uc3RydWN0b3IgKHN1Y2ggdGhhdAor
ICAgIHlvdSBjYW4gd3JpdGUgYG5ldyBUeXBlUGFyYW1gKSwgb3IgaWYgdGhlaXIgZmFjdG9yeSBm
dW5jdGlvbnMgaGF2ZSB0aGUgc2FtZQorICAgIGZvcm0gKGUuZy4gYENyZWF0ZUluc3RhbmNlPFR5
cGVQYXJhbT4oKWApLgorKiAgIFZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgY2FuIGJlIGVhc2ll
ciB0byB3cml0ZSBpZiB5b3UgbmVlZCBkaWZmZXJlbnQgY29kZQorICAgIHBhdHRlcm5zIHRvIGNy
ZWF0ZSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zJyBpbnN0YW5jZXMsIGUuZy4gYG5ldyBGb29g
IHZzCisgICAgYG5ldyBCYXIoNSlgLiBUbyBhY2NvbW1vZGF0ZSBmb3IgdGhlIGRpZmZlcmVuY2Vz
LCB5b3UgY2FuIHdyaXRlIGZhY3RvcnkKKyAgICBmdW5jdGlvbiB3cmFwcGVycyBhbmQgcGFzcyB0
aGVzZSBmdW5jdGlvbiBwb2ludGVycyB0byB0aGUgdGVzdHMgYXMgdGhlaXIKKyAgICBwYXJhbWV0
ZXJzLgorKiAgIFdoZW4gYSB0eXBlZCB0ZXN0IGZhaWxzLCB0aGUgb3V0cHV0IGluY2x1ZGVzIHRo
ZSBuYW1lIG9mIHRoZSB0eXBlLCB3aGljaCBjYW4KKyAgICBoZWxwIHlvdSBxdWlja2x5IGlkZW50
aWZ5IHdoaWNoIGltcGxlbWVudGF0aW9uIGlzIHdyb25nLiBWYWx1ZS1wYXJhbWV0ZXJpemVkCisg
ICAgdGVzdHMgY2Fubm90IGRvIHRoaXMsIHNvIHRoZXJlIHlvdSdsbCBoYXZlIHRvIGxvb2sgYXQg
dGhlIGl0ZXJhdGlvbiBudW1iZXIKKyAgICB0byBrbm93IHdoaWNoIGltcGxlbWVudGF0aW9uIHRo
ZSBmYWlsdXJlIGlzIGZyb20sIHdoaWNoIGlzIGxlc3MgZGlyZWN0LgorKiAgIElmIHlvdSBtYWtl
IGEgbWlzdGFrZSB3cml0aW5nIGEgdHlwZWQgdGVzdCwgdGhlIGNvbXBpbGVyIGVycm9ycyBjYW4g
YmUKKyAgICBoYXJkZXIgdG8gZGlnZXN0LCBhcyB0aGUgY29kZSBpcyB0ZW1wbGF0aXplZC4KKyog
ICBXaGVuIHVzaW5nIHR5cGVkIHRlc3RzLCB5b3UgbmVlZCB0byBtYWtlIHN1cmUgeW91IGFyZSB0
ZXN0aW5nIGFnYWluc3QgdGhlCisgICAgaW50ZXJmYWNlIHR5cGUsIG5vdCB0aGUgY29uY3JldGUg
dHlwZXMgKGluIG90aGVyIHdvcmRzLCB5b3Ugd2FudCB0byBtYWtlCisgICAgc3VyZSBgaW1wbGlj
aXRfY2FzdDxNeUludGVyZmFjZSo+KG15X2NvbmNyZXRlX2ltcGwpYCB3b3Jrcywgbm90IGp1c3Qg
dGhhdAorICAgIGBteV9jb25jcmV0ZV9pbXBsYCB3b3JrcykuIEl0J3MgbGVzcyBsaWtlbHkgdG8g
bWFrZSBtaXN0YWtlcyBpbiB0aGlzIGFyZWEKKyAgICB3aGVuIHVzaW5nIHZhbHVlLXBhcmFtZXRl
cml6ZWQgdGVzdHMuCisKK0kgaG9wZSBJIGRpZG4ndCBjb25mdXNlIHlvdSBtb3JlLiA6LSkgSWYg
eW91IGRvbid0IG1pbmQsIEknZCBzdWdnZXN0IHlvdSB0byBnaXZlCitib3RoIGFwcHJvYWNoZXMg
YSB0cnkuIFByYWN0aWNlIGlzIGEgbXVjaCBiZXR0ZXIgd2F5IHRvIGdyYXNwIHRoZSBzdWJ0bGUK
K2RpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHR3byB0b29scy4gT25jZSB5b3UgaGF2ZSBzb21lIGNv
bmNyZXRlIGV4cGVyaWVuY2UsIHlvdQorY2FuIG11Y2ggbW9yZSBlYXNpbHkgZGVjaWRlIHdoaWNo
IG9uZSB0byB1c2UgdGhlIG5leHQgdGltZS4KKworIyMgTXkgZGVhdGggdGVzdHMgYmVjYW1lIHZl
cnkgc2xvdyAtIHdoYXQgaGFwcGVuZWQ/CisKK0luIEF1Z3VzdCAyMDA4IHdlIGhhZCB0byBzd2l0
Y2ggdGhlIGRlZmF1bHQgZGVhdGggdGVzdCBzdHlsZSBmcm9tIGBmYXN0YCB0bworYHRocmVhZHNh
ZmVgLCBhcyB0aGUgZm9ybWVyIGlzIG5vIGxvbmdlciBzYWZlIG5vdyB0aGF0IHRocmVhZGVkIGxv
Z2dpbmcgaXMgdGhlCitkZWZhdWx0LiBUaGlzIGNhdXNlZCBtYW55IGRlYXRoIHRlc3RzIHRvIHNs
b3cgZG93bi4gVW5mb3J0dW5hdGVseSB0aGlzIGNoYW5nZQord2FzIG5lY2Vzc2FyeS4KKworUGxl
YXNlIHJlYWQgW0ZpeGluZyBGYWlsaW5nIERlYXRoIFRlc3RzXShkZWF0aF90ZXN0X3N0eWxlcy5t
ZCkgZm9yIHdoYXQgeW91IGNhbgorZG8uCisKKyMjIEkgZ290IHNvbWUgcnVuLXRpbWUgZXJyb3Jz
IGFib3V0IGludmFsaWQgcHJvdG8gZGVzY3JpcHRvcnMgd2hlbiB1c2luZyBgUHJvdG9jb2xNZXNz
YWdlRXF1YWxzYC4gSGVscCEKKworKipOb3RlOioqIGBQcm90b2NvbE1lc3NhZ2VFcXVhbHNgIGFu
ZCBgUHJvdG9jb2xNZXNzYWdlRXF1aXZgIGFyZSAqZGVwcmVjYXRlZCoKK25vdy4gUGxlYXNlIHVz
ZSBgRXF1YWxzUHJvdG9gLCBldGMgaW5zdGVhZC4KKworYFByb3RvY29sTWVzc2FnZUVxdWFsc2Ag
YW5kIGBQcm90b2NvbE1lc3NhZ2VFcXVpdmAgd2VyZSByZWRlZmluZWQgcmVjZW50bHkgYW5kCith
cmUgbm93IGxlc3MgdG9sZXJhbnQgb24gaW52YWxpZCBwcm90b2NvbCBidWZmZXIgZGVmaW5pdGlv
bnMuIEluIHBhcnRpY3VsYXIsIGlmCit5b3UgaGF2ZSBhIGBmb28ucHJvdG9gIHRoYXQgZG9lc24n
dCBmdWxseSBxdWFsaWZ5IHRoZSB0eXBlIG9mIGEgcHJvdG9jb2wgbWVzc2FnZQoraXQgcmVmZXJl
bmNlcyAoZS5nLiBgbWVzc2FnZTxCYXI+YCB3aGVyZSBpdCBzaG91bGQgYmUgYG1lc3NhZ2U8Ymxh
aC5CYXI+YCksIHlvdQord2lsbCBub3cgZ2V0IHJ1bi10aW1lIGVycm9ycyBsaWtlOgorCitgYGAK
Ky4uLiBkZXNjcmlwdG9yLmNjOi4uLl0gSW52YWxpZCBwcm90byBkZXNjcmlwdG9yIGZvciBmaWxl
ICJwYXRoL3RvL2Zvby5wcm90byI6CisuLi4gZGVzY3JpcHRvci5jYzouLi5dICBibGFoLk15TWVz
c2FnZS5teV9maWVsZDogIi5CYXIiIGlzIG5vdCBkZWZpbmVkLgorYGBgCisKK0lmIHlvdSBzZWUg
dGhpcywgeW91ciBgLnByb3RvYCBmaWxlIGlzIGJyb2tlbiBhbmQgbmVlZHMgdG8gYmUgZml4ZWQg
YnkgbWFraW5nCit0aGUgdHlwZXMgZnVsbHkgcXVhbGlmaWVkLiBUaGUgbmV3IGRlZmluaXRpb24g
b2YgYFByb3RvY29sTWVzc2FnZUVxdWFsc2AgYW5kCitgUHJvdG9jb2xNZXNzYWdlRXF1aXZgIGp1
c3QgaGFwcGVuIHRvIHJldmVhbCB5b3VyIGJ1Zy4KKworIyMgTXkgZGVhdGggdGVzdCBtb2RpZmll
cyBzb21lIHN0YXRlLCBidXQgdGhlIGNoYW5nZSBzZWVtcyBsb3N0IGFmdGVyIHRoZSBkZWF0aCB0
ZXN0IGZpbmlzaGVzLiBXaHk/CisKK0RlYXRoIHRlc3RzIChgRVhQRUNUX0RFQVRIYCwgZXRjKSBh
cmUgZXhlY3V0ZWQgaW4gYSBzdWItcHJvY2VzcyBzLnQuIHRoZQorZXhwZWN0ZWQgY3Jhc2ggd29u
J3Qga2lsbCB0aGUgdGVzdCBwcm9ncmFtIChpLmUuIHRoZSBwYXJlbnQgcHJvY2VzcykuIEFzIGEK
K3Jlc3VsdCwgYW55IGluLW1lbW9yeSBzaWRlIGVmZmVjdHMgdGhleSBpbmN1ciBhcmUgb2JzZXJ2
YWJsZSBpbiB0aGVpciByZXNwZWN0aXZlCitzdWItcHJvY2Vzc2VzLCBidXQgbm90IGluIHRoZSBw
YXJlbnQgcHJvY2Vzcy4gWW91IGNhbiB0aGluayBvZiB0aGVtIGFzIHJ1bm5pbmcKK2luIGEgcGFy
YWxsZWwgdW5pdmVyc2UsIG1vcmUgb3IgbGVzcy4KKworSW4gcGFydGljdWxhciwgaWYgeW91IHVz
ZSBbZ01vY2tdKC4uLy4uL2dvb2dsZW1vY2spIGFuZCB0aGUgZGVhdGggdGVzdCBzdGF0ZW1lbnQK
K2ludm9rZXMgc29tZSBtb2NrIG1ldGhvZHMsIHRoZSBwYXJlbnQgcHJvY2VzcyB3aWxsIHRoaW5r
IHRoZSBjYWxscyBoYXZlIG5ldmVyCitvY2N1cnJlZC4gVGhlcmVmb3JlLCB5b3UgbWF5IHdhbnQg
dG8gbW92ZSB5b3VyIGBFWFBFQ1RfQ0FMTGAgc3RhdGVtZW50cyBpbnNpZGUKK3RoZSBgRVhQRUNU
X0RFQVRIYCBtYWNyby4KKworIyMgRVhQRUNUX0VRKGh0b25sKGJsYWgpLCBibGFoX2JsYWgpIGdl
bmVyYXRlcyB3ZWlyZCBjb21waWxlciBlcnJvcnMgaW4gb3B0IG1vZGUuIElzIHRoaXMgYSBnb29n
bGV0ZXN0IGJ1Zz8KKworQWN0dWFsbHksIHRoZSBidWcgaXMgaW4gYGh0b25sKClgLgorCitBY2Nv
cmRpbmcgdG8gYCdtYW4gaHRvbmwnYCwgYGh0b25sKClgIGlzIGEgKmZ1bmN0aW9uKiwgd2hpY2gg
bWVhbnMgaXQncyB2YWxpZCB0bwordXNlIGBodG9ubGAgYXMgYSBmdW5jdGlvbiBwb2ludGVyLiBI
b3dldmVyLCBpbiBvcHQgbW9kZSBgaHRvbmwoKWAgaXMgZGVmaW5lZCBhcworYSAqbWFjcm8qLCB3
aGljaCBicmVha3MgdGhpcyB1c2FnZS4KKworV29yc2UsIHRoZSBtYWNybyBkZWZpbml0aW9uIG9m
IGBodG9ubCgpYCB1c2VzIGEgYGdjY2AgZXh0ZW5zaW9uIGFuZCBpcyAqbm90Kgorc3RhbmRhcmQg
QysrLiBUaGF0IGhhY2t5IGltcGxlbWVudGF0aW9uIGhhcyBzb21lIGFkIGhvYyBsaW1pdGF0aW9u
cy4gSW4KK3BhcnRpY3VsYXIsIGl0IHByZXZlbnRzIHlvdSBmcm9tIHdyaXRpbmcgYEZvbzxzaXpl
b2YoaHRvbmwoeCkpPigpYCwgd2hlcmUgYEZvb2AKK2lzIGEgdGVtcGxhdGUgdGhhdCBoYXMgYW4g
aW50ZWdyYWwgYXJndW1lbnQuCisKK1RoZSBpbXBsZW1lbnRhdGlvbiBvZiBgRVhQRUNUX0VRKGEs
IGIpYCB1c2VzIGBzaXplb2YoLi4uIGEgLi4uKWAgaW5zaWRlIGEKK3RlbXBsYXRlIGFyZ3VtZW50
LCBhbmQgdGh1cyBkb2Vzbid0IGNvbXBpbGUgaW4gb3B0IG1vZGUgd2hlbiBgYWAgY29udGFpbnMg
YSBjYWxsCit0byBgaHRvbmwoKWAuIEl0IGlzIGRpZmZpY3VsdCB0byBtYWtlIGBFWFBFQ1RfRVFg
IGJ5cGFzcyB0aGUgYGh0b25sKClgIGJ1ZywgYXMKK3RoZSBzb2x1dGlvbiBtdXN0IHdvcmsgd2l0
aCBkaWZmZXJlbnQgY29tcGlsZXJzIG9uIHZhcmlvdXMgcGxhdGZvcm1zLgorCitgaHRvbmwoKWAg
aGFzIHNvbWUgb3RoZXIgcHJvYmxlbXMgYXMgZGVzY3JpYmVkIGluIGAvL3V0aWwvZW5kaWFuL2Vu
ZGlhbi5oYCwKK3doaWNoIGRlZmluZXMgYGdodG9ubCgpYCB0byByZXBsYWNlIGl0LiBgZ2h0b25s
KClgIGRvZXMgdGhlIHNhbWUgdGhpbmcgYGh0b25sKClgCitkb2VzLCBvbmx5IHdpdGhvdXQgaXRz
IHByb2JsZW1zLiBXZSBzdWdnZXN0IHlvdSB0byB1c2UgYGdodG9ubCgpYCBpbnN0ZWFkIG9mCitg
aHRvbmwoKWAsIGJvdGggaW4geW91ciB0ZXN0cyBhbmQgcHJvZHVjdGlvbiBjb2RlLgorCitgLy91
dGlsL2VuZGlhbi9lbmRpYW4uaGAgYWxzbyBkZWZpbmVzIGBnaHRvbnMoKWAsIHdoaWNoIHNvbHZl
cyBzaW1pbGFyIHByb2JsZW1zCitpbiBgaHRvbnMoKWAuCisKK0Rvbid0IGZvcmdldCB0byBhZGQg
YC8vdXRpbC9lbmRpYW5gIHRvIHRoZSBsaXN0IG9mIGRlcGVuZGVuY2llcyBpbiB0aGUgYEJVSUxE
YAorZmlsZSB3aGVyZXZlciBgZ2h0b25sKClgIGFuZCBgZ2h0b25zKClgIGFyZSB1c2VkLiBUaGUg
bGlicmFyeSBjb25zaXN0cyBvZiBhCitzaW5nbGUgaGVhZGVyIGZpbGUgYW5kIHdpbGwgbm90IGJs
b2F0IHlvdXIgYmluYXJ5LgorCisjIyBUaGUgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJ1bmRl
ZmluZWQgcmVmZXJlbmNlcyIgdG8gc29tZSBzdGF0aWMgY29uc3QgbWVtYmVyIHZhcmlhYmxlcywg
YnV0IEkgZGlkIGRlZmluZSB0aGVtIGluIHRoZSBjbGFzcyBib2R5LiBXaGF0J3Mgd3Jvbmc/CisK
K0lmIHlvdXIgY2xhc3MgaGFzIGEgc3RhdGljIGRhdGEgbWVtYmVyOgorCitgYGBjKysKKy8vIGZv
by5oCitjbGFzcyBGb28geworICAuLi4KKyAgc3RhdGljIGNvbnN0IGludCBrQmFyID0gMTAwOwor
fTsKK2BgYAorCitZb3UgYWxzbyBuZWVkIHRvIGRlZmluZSBpdCAqb3V0c2lkZSogb2YgdGhlIGNs
YXNzIGJvZHkgaW4gYGZvby5jY2A6CisKK2BgYGMrKworY29uc3QgaW50IEZvbzo6a0JhcjsgIC8v
IE5vIGluaXRpYWxpemVyIGhlcmUuCitgYGAKKworT3RoZXJ3aXNlIHlvdXIgY29kZSBpcyAqKmlu
dmFsaWQgQysrKiosIGFuZCBtYXkgYnJlYWsgaW4gdW5leHBlY3RlZCB3YXlzLiBJbgorcGFydGlj
dWxhciwgdXNpbmcgaXQgaW4gZ29vZ2xldGVzdCBjb21wYXJpc29uIGFzc2VydGlvbnMgKGBFWFBF
Q1RfRVFgLCBldGMpIHdpbGwKK2dlbmVyYXRlIGFuICJ1bmRlZmluZWQgcmVmZXJlbmNlIiBsaW5r
ZXIgZXJyb3IuIFRoZSBmYWN0IHRoYXQgIml0IHVzZWQgdG8gd29yayIKK2RvZXNuJ3QgbWVhbiBp
dCdzIHZhbGlkLiBJdCBqdXN0IG1lYW5zIHRoYXQgeW91IHdlcmUgbHVja3kuIDotKQorCisjIyBD
YW4gSSBkZXJpdmUgYSB0ZXN0IGZpeHR1cmUgZnJvbSBhbm90aGVyPworCitZZXMuCisKK0VhY2gg
dGVzdCBmaXh0dXJlIGhhcyBhIGNvcnJlc3BvbmRpbmcgYW5kIHNhbWUgbmFtZWQgdGVzdCBjYXNl
LiBUaGlzIG1lYW5zIG9ubHkKK29uZSB0ZXN0IGNhc2UgY2FuIHVzZSBhIHBhcnRpY3VsYXIgZml4
dHVyZS4gU29tZXRpbWVzLCBob3dldmVyLCBtdWx0aXBsZSB0ZXN0CitjYXNlcyBtYXkgd2FudCB0
byB1c2UgdGhlIHNhbWUgb3Igc2xpZ2h0bHkgZGlmZmVyZW50IGZpeHR1cmVzLiBGb3IgZXhhbXBs
ZSwgeW91CittYXkgd2FudCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb2YgYSBHVUkgbGlicmFyeSdz
IHRlc3QgY2FzZXMgZG9uJ3QgbGVhaworaW1wb3J0YW50IHN5c3RlbSByZXNvdXJjZXMgbGlrZSBm
b250cyBhbmQgYnJ1c2hlcy4KKworSW4gZ29vZ2xldGVzdCwgeW91IHNoYXJlIGEgZml4dHVyZSBh
bW9uZyB0ZXN0IGNhc2VzIGJ5IHB1dHRpbmcgdGhlIHNoYXJlZCBsb2dpYworaW4gYSBiYXNlIHRl
c3QgZml4dHVyZSwgdGhlbiBkZXJpdmluZyBmcm9tIHRoYXQgYmFzZSBhIHNlcGFyYXRlIGZpeHR1
cmUgZm9yIGVhY2gKK3Rlc3QgY2FzZSB0aGF0IHdhbnRzIHRvIHVzZSB0aGlzIGNvbW1vbiBsb2dp
Yy4gWW91IHRoZW4gdXNlIGBURVNUX0YoKWAgdG8gd3JpdGUKK3Rlc3RzIHVzaW5nIGVhY2ggZGVy
aXZlZCBmaXh0dXJlLgorCitUeXBpY2FsbHksIHlvdXIgY29kZSBsb29rcyBsaWtlIHRoaXM6CisK
K2BgYGMrKworLy8gRGVmaW5lcyBhIGJhc2UgdGVzdCBmaXh0dXJlLgorY2xhc3MgQmFzZVRlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIC4uLgorfTsKKworLy8g
RGVyaXZlcyBhIGZpeHR1cmUgRm9vVGVzdCBmcm9tIEJhc2VUZXN0LgorY2xhc3MgRm9vVGVzdCA6
IHB1YmxpYyBCYXNlVGVzdCB7CisgcHJvdGVjdGVkOgorICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUg
eworICAgIEJhc2VUZXN0OjpTZXRVcCgpOyAgLy8gU2V0cyB1cCB0aGUgYmFzZSBmaXh0dXJlIGZp
cnN0LgorICAgIC4uLiBhZGRpdGlvbmFsIHNldC11cCB3b3JrIC4uLgorICB9CisKKyAgdm9pZCBU
ZWFyRG93bigpIG92ZXJyaWRlIHsKKyAgICAuLi4gY2xlYW4tdXAgd29yayBmb3IgRm9vVGVzdCAu
Li4KKyAgICBCYXNlVGVzdDo6VGVhckRvd24oKTsgIC8vIFJlbWVtYmVyIHRvIHRlYXIgZG93biB0
aGUgYmFzZSBmaXh0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciBjbGVh
bmluZyB1cCBGb29UZXN0IQorICB9CisKKyAgLi4uIGZ1bmN0aW9ucyBhbmQgdmFyaWFibGVzIGZv
ciBGb29UZXN0IC4uLgorfTsKKworLy8gVGVzdHMgdGhhdCB1c2UgdGhlIGZpeHR1cmUgRm9vVGVz
dC4KK1RFU1RfRihGb29UZXN0LCBCYXIpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBCYXopIHsg
Li4uIH0KKworLi4uIGFkZGl0aW9uYWwgZml4dHVyZXMgZGVyaXZlZCBmcm9tIEJhc2VUZXN0IC4u
LgorYGBgCisKK0lmIG5lY2Vzc2FyeSwgeW91IGNhbiBjb250aW51ZSB0byBkZXJpdmUgdGVzdCBm
aXh0dXJlcyBmcm9tIGEgZGVyaXZlZCBmaXh0dXJlLgorZ29vZ2xldGVzdCBoYXMgbm8gbGltaXQg
b24gaG93IGRlZXAgdGhlIGhpZXJhcmNoeSBjYW4gYmUuCisKK0ZvciBhIGNvbXBsZXRlIGV4YW1w
bGUgdXNpbmcgZGVyaXZlZCB0ZXN0IGZpeHR1cmVzLCBzZWUgW2dvb2dsZXRlc3QKK3NhbXBsZV0o
aHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2dsZXRl
c3Qvc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjKQorCisjIyBNeSBjb21waWxlciBjb21wbGFp
bnMgInZvaWQgdmFsdWUgbm90IGlnbm9yZWQgYXMgaXQgb3VnaHQgdG8gYmUuIiBXaGF0IGRvZXMg
dGhpcyBtZWFuPworCitZb3UncmUgcHJvYmFibHkgdXNpbmcgYW4gYEFTU0VSVF8qKClgIGluIGEg
ZnVuY3Rpb24gdGhhdCBkb2Vzbid0IHJldHVybiBgdm9pZGAuCitgQVNTRVJUXyooKWAgY2FuIG9u
bHkgYmUgdXNlZCBpbiBgdm9pZGAgZnVuY3Rpb25zLCBkdWUgdG8gZXhjZXB0aW9ucyBiZWluZwor
ZGlzYWJsZWQgYnkgb3VyIGJ1aWxkIHN5c3RlbS4gUGxlYXNlIHNlZSBtb3JlIGRldGFpbHMKK1to
ZXJlXShhZHZhbmNlZC5tZCNhc3NlcnRpb24tcGxhY2VtZW50KS4KKworIyMgTXkgZGVhdGggdGVz
dCBoYW5ncyAob3Igc2VnLWZhdWx0cykuIEhvdyBkbyBJIGZpeCBpdD8KKworSW4gZ29vZ2xldGVz
dCwgZGVhdGggdGVzdHMgYXJlIHJ1biBpbiBhIGNoaWxkIHByb2Nlc3MgYW5kIHRoZSB3YXkgdGhl
eSB3b3JrIGlzCitkZWxpY2F0ZS4gVG8gd3JpdGUgZGVhdGggdGVzdHMgeW91IHJlYWxseSBuZWVk
IHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgd29yay4KK1BsZWFzZSBtYWtlIHN1cmUgeW91IGhhdmUg
cmVhZCBbdGhpc10oYWR2YW5jZWQubWQjaG93LWl0LXdvcmtzKS4KKworSW4gcGFydGljdWxhciwg
ZGVhdGggdGVzdHMgZG9uJ3QgbGlrZSBoYXZpbmcgbXVsdGlwbGUgdGhyZWFkcyBpbiB0aGUgcGFy
ZW50Citwcm9jZXNzLiBTbyB0aGUgZmlyc3QgdGhpbmcgeW91IGNhbiB0cnkgaXMgdG8gZWxpbWlu
YXRlIGNyZWF0aW5nIHRocmVhZHMgb3V0c2lkZQorb2YgYEVYUEVDVF9ERUFUSCgpYC4gRm9yIGV4
YW1wbGUsIHlvdSBtYXkgd2FudCB0byB1c2UgW21vY2tzXSguLi8uLi9nb29nbGVtb2NrKQorb3Ig
ZmFrZSBvYmplY3RzIGluc3RlYWQgb2YgcmVhbCBvbmVzIGluIHlvdXIgdGVzdHMuCisKK1NvbWV0
aW1lcyB0aGlzIGlzIGltcG9zc2libGUgYXMgc29tZSBsaWJyYXJ5IHlvdSBtdXN0IHVzZSBtYXkg
YmUgY3JlYXRpbmcKK3RocmVhZHMgYmVmb3JlIGBtYWluKClgIGlzIGV2ZW4gcmVhY2hlZC4gSW4g
dGhpcyBjYXNlLCB5b3UgY2FuIHRyeSB0byBtaW5pbWl6ZQordGhlIGNoYW5jZSBvZiBjb25mbGlj
dHMgYnkgZWl0aGVyIG1vdmluZyBhcyBtYW55IGFjdGl2aXRpZXMgYXMgcG9zc2libGUgaW5zaWRl
CitgRVhQRUNUX0RFQVRIKClgIChpbiB0aGUgZXh0cmVtZSBjYXNlLCB5b3Ugd2FudCB0byBtb3Zl
IGV2ZXJ5dGhpbmcgaW5zaWRlKSwgb3IKK2xlYXZpbmcgYXMgZmV3IHRoaW5ncyBhcyBwb3NzaWJs
ZSBpbiBpdC4gQWxzbywgeW91IGNhbiB0cnkgdG8gc2V0IHRoZSBkZWF0aCB0ZXN0CitzdHlsZSB0
byBgInRocmVhZHNhZmUiYCwgd2hpY2ggaXMgc2FmZXIgYnV0IHNsb3dlciwgYW5kIHNlZSBpZiBp
dCBoZWxwcy4KKworSWYgeW91IGdvIHdpdGggdGhyZWFkLXNhZmUgZGVhdGggdGVzdHMsIHJlbWVt
YmVyIHRoYXQgdGhleSByZXJ1biB0aGUgdGVzdAorcHJvZ3JhbSBmcm9tIHRoZSBiZWdpbm5pbmcg
aW4gdGhlIGNoaWxkIHByb2Nlc3MuIFRoZXJlZm9yZSBtYWtlIHN1cmUgeW91cgorcHJvZ3JhbSBj
YW4gcnVuIHNpZGUtYnktc2lkZSB3aXRoIGl0c2VsZiBhbmQgaXMgZGV0ZXJtaW5pc3RpYy4KKwor
SW4gdGhlIGVuZCwgdGhpcyBib2lscyBkb3duIHRvIGdvb2QgY29uY3VycmVudCBwcm9ncmFtbWlu
Zy4gWW91IGhhdmUgdG8gbWFrZQorc3VyZSB0aGF0IHRoZXJlIGlzIG5vIHJhY2UgY29uZGl0aW9u
cyBvciBkZWFkIGxvY2tzIGluIHlvdXIgcHJvZ3JhbS4gTm8gc2lsdmVyCitidWxsZXQgLSBzb3Jy
eSEKKworIyMgU2hvdWxkIEkgdXNlIHRoZSBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIG9mIHRoZSB0
ZXN0IGZpeHR1cmUgb3IgU2V0VXAoKS9UZWFyRG93bigpPworCitUaGUgZmlyc3QgdGhpbmcgdG8g
cmVtZW1iZXIgaXMgdGhhdCBnb29nbGV0ZXN0IGRvZXMgKipub3QqKiByZXVzZSB0aGUgc2FtZSB0
ZXN0CitmaXh0dXJlIG9iamVjdCBhY3Jvc3MgbXVsdGlwbGUgdGVzdHMuIEZvciBlYWNoIGBURVNU
X0ZgLCBnb29nbGV0ZXN0IHdpbGwgY3JlYXRlCithICoqZnJlc2gqKiB0ZXN0IGZpeHR1cmUgb2Jq
ZWN0LCBpbW1lZGlhdGVseSBjYWxsIGBTZXRVcCgpYCwgcnVuIHRoZSB0ZXN0IGJvZHksCitjYWxs
IGBUZWFyRG93bigpYCwgYW5kIHRoZW4gZGVsZXRlIHRoZSB0ZXN0IGZpeHR1cmUgb2JqZWN0Lgor
CitXaGVuIHlvdSBuZWVkIHRvIHdyaXRlIHBlci10ZXN0IHNldC11cCBhbmQgdGVhci1kb3duIGxv
Z2ljLCB5b3UgaGF2ZSB0aGUgY2hvaWNlCitiZXR3ZWVuIHVzaW5nIHRoZSB0ZXN0IGZpeHR1cmUg
Y29uc3RydWN0b3IvZGVzdHJ1Y3RvciBvciBgU2V0VXAoKS9UZWFyRG93bigpYC4KK1RoZSBmb3Jt
ZXIgaXMgdXN1YWxseSBwcmVmZXJyZWQsIGFzIGl0IGhhcyB0aGUgZm9sbG93aW5nIGJlbmVmaXRz
OgorCisqICAgQnkgaW5pdGlhbGl6aW5nIGEgbWVtYmVyIHZhcmlhYmxlIGluIHRoZSBjb25zdHJ1
Y3Rvciwgd2UgaGF2ZSB0aGUgb3B0aW9uIHRvCisgICAgbWFrZSBpdCBgY29uc3RgLCB3aGljaCBo
ZWxwcyBwcmV2ZW50IGFjY2lkZW50YWwgY2hhbmdlcyB0byBpdHMgdmFsdWUgYW5kCisgICAgbWFr
ZXMgdGhlIHRlc3RzIG1vcmUgb2J2aW91c2x5IGNvcnJlY3QuCisqICAgSW4gY2FzZSB3ZSBuZWVk
IHRvIHN1YmNsYXNzIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MsIHRoZSBzdWJjbGFzcycKKyAgICBj
b25zdHJ1Y3RvciBpcyBndWFyYW50ZWVkIHRvIGNhbGwgdGhlIGJhc2UgY2xhc3MnIGNvbnN0cnVj
dG9yICpmaXJzdCosIGFuZAorICAgIHRoZSBzdWJjbGFzcycgZGVzdHJ1Y3RvciBpcyBndWFyYW50
ZWVkIHRvIGNhbGwgdGhlIGJhc2UgY2xhc3MnIGRlc3RydWN0b3IKKyAgICAqYWZ0ZXJ3YXJkKi4g
V2l0aCBgU2V0VXAoKS9UZWFyRG93bigpYCwgYSBzdWJjbGFzcyBtYXkgbWFrZSB0aGUgbWlzdGFr
ZSBvZgorICAgIGZvcmdldHRpbmcgdG8gY2FsbCB0aGUgYmFzZSBjbGFzcycgYFNldFVwKCkvVGVh
ckRvd24oKWAgb3IgY2FsbCB0aGVtIGF0IHRoZQorICAgIHdyb25nIHRpbWUuCisKK1lvdSBtYXkg
c3RpbGwgd2FudCB0byB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAgaW4gdGhlIGZvbGxvd2luZyBy
YXJlIGNhc2VzOgorCisqICAgSW4gdGhlIGJvZHkgb2YgYSBjb25zdHJ1Y3RvciAob3IgZGVzdHJ1
Y3RvciksIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHVzZSB0aGUKKyAgICBgQVNTRVJUX3h4YCBtYWNy
b3MuIFRoZXJlZm9yZSwgaWYgdGhlIHNldC11cCBvcGVyYXRpb24gY291bGQgY2F1c2UgYSBmYXRh
bAorICAgIHRlc3QgZmFpbHVyZSB0aGF0IHNob3VsZCBwcmV2ZW50IHRoZSB0ZXN0IGZyb20gcnVu
bmluZywgaXQncyBuZWNlc3NhcnkgdG8KKyAgICB1c2UgYSBgQ0hFQ0tgIG1hY3JvIG9yIHRvIHVz
ZSBgU2V0VXAoKWAgaW5zdGVhZCBvZiBhIGNvbnN0cnVjdG9yLgorKiAgIElmIHRoZSB0ZWFyLWRv
d24gb3BlcmF0aW9uIGNvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiwgeW91IG11c3QgdXNlCisgICAg
YFRlYXJEb3duKClgIGFzIG9wcG9zZWQgdG8gdGhlIGRlc3RydWN0b3IsIGFzIHRocm93aW5nIGlu
IGEgZGVzdHJ1Y3RvciBsZWFkcworICAgIHRvIHVuZGVmaW5lZCBiZWhhdmlvciBhbmQgdXN1YWxs
eSB3aWxsIGtpbGwgeW91ciBwcm9ncmFtIHJpZ2h0IGF3YXkuIE5vdGUKKyAgICB0aGF0IG1hbnkg
c3RhbmRhcmQgbGlicmFyaWVzIChsaWtlIFNUTCkgbWF5IHRocm93IHdoZW4gZXhjZXB0aW9ucyBh
cmUKKyAgICBlbmFibGVkIGluIHRoZSBjb21waWxlci4gVGhlcmVmb3JlIHlvdSBzaG91bGQgcHJl
ZmVyIGBUZWFyRG93bigpYCBpZiB5b3UKKyAgICB3YW50IHRvIHdyaXRlIHBvcnRhYmxlIHRlc3Rz
IHRoYXQgd29yayB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucy4KKyogICBUaGUgZ29vZ2xldGVz
dCB0ZWFtIGlzIGNvbnNpZGVyaW5nIG1ha2luZyB0aGUgYXNzZXJ0aW9uIG1hY3JvcyB0aHJvdyBv
bgorICAgIHBsYXRmb3JtcyB3aGVyZSBleGNlcHRpb25zIGFyZSBlbmFibGVkIChlLmcuIFdpbmRv
d3MsIE1hYyBPUywgYW5kIExpbnV4CisgICAgY2xpZW50LXNpZGUpLCB3aGljaCB3aWxsIGVsaW1p
bmF0ZSB0aGUgbmVlZCBmb3IgdGhlIHVzZXIgdG8gcHJvcGFnYXRlCisgICAgZmFpbHVyZXMgZnJv
bSBhIHN1YnJvdXRpbmUgdG8gaXRzIGNhbGxlci4gVGhlcmVmb3JlLCB5b3Ugc2hvdWxkbid0IHVz
ZQorICAgIGdvb2dsZXRlc3QgYXNzZXJ0aW9ucyBpbiBhIGRlc3RydWN0b3IgaWYgeW91ciBjb2Rl
IGNvdWxkIHJ1biBvbiBzdWNoIGEKKyAgICBwbGF0Zm9ybS4KKyogICBJbiBhIGNvbnN0cnVjdG9y
IG9yIGRlc3RydWN0b3IsIHlvdSBjYW5ub3QgbWFrZSBhIHZpcnR1YWwgZnVuY3Rpb24gY2FsbCBv
bgorICAgIHRoaXMgb2JqZWN0LiAoWW91IGNhbiBjYWxsIGEgbWV0aG9kIGRlY2xhcmVkIGFzIHZp
cnR1YWwsIGJ1dCBpdCB3aWxsIGJlCisgICAgc3RhdGljYWxseSBib3VuZC4pIFRoZXJlZm9yZSwg
aWYgeW91IG5lZWQgdG8gY2FsbCBhIG1ldGhvZCB0aGF0IHdpbGwgYmUKKyAgICBvdmVycmlkZGVu
IGluIGEgZGVyaXZlZCBjbGFzcywgeW91IGhhdmUgdG8gdXNlIGBTZXRVcCgpL1RlYXJEb3duKClg
LgorCisKKyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgIm5vIG1hdGNoaW5nIGZ1bmN0aW9uIHRv
IGNhbGwiIHdoZW4gSSB1c2UgQVNTRVJUX1BSRUQqLiBIb3cgZG8gSSBmaXggaXQ/CisKK0lmIHRo
ZSBwcmVkaWNhdGUgZnVuY3Rpb24geW91IHVzZSBpbiBgQVNTRVJUX1BSRUQqYCBvciBgRVhQRUNU
X1BSRUQqYCBpcworb3ZlcmxvYWRlZCBvciBhIHRlbXBsYXRlLCB0aGUgY29tcGlsZXIgd2lsbCBo
YXZlIHRyb3VibGUgZmlndXJpbmcgb3V0IHdoaWNoCitvdmVybG9hZGVkIHZlcnNpb24gaXQgc2hv
dWxkIHVzZS4gYEFTU0VSVF9QUkVEX0ZPUk1BVCpgIGFuZAorYEVYUEVDVF9QUkVEX0ZPUk1BVCpg
IGRvbid0IGhhdmUgdGhpcyBwcm9ibGVtLgorCitJZiB5b3Ugc2VlIHRoaXMgZXJyb3IsIHlvdSBt
aWdodCB3YW50IHRvIHN3aXRjaCB0bworYChBU1NFUlR8RVhQRUNUKV9QUkVEX0ZPUk1BVCpgLCB3
aGljaCB3aWxsIGFsc28gZ2l2ZSB5b3UgYSBiZXR0ZXIgZmFpbHVyZQorbWVzc2FnZS4gSWYsIGhv
d2V2ZXIsIHRoYXQgaXMgbm90IGFuIG9wdGlvbiwgeW91IGNhbiByZXNvbHZlIHRoZSBwcm9ibGVt
IGJ5CitleHBsaWNpdGx5IHRlbGxpbmcgdGhlIGNvbXBpbGVyIHdoaWNoIHZlcnNpb24gdG8gcGlj
ay4KKworRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhdmUKKworYGBgYysrCitib29sIElzUG9z
aXRpdmUoaW50IG4pIHsKKyAgcmV0dXJuIG4gPiAwOworfQorCitib29sIElzUG9zaXRpdmUoZG91
YmxlIHgpIHsKKyAgcmV0dXJuIHggPiAwOworfQorYGBgCisKK3lvdSB3aWxsIGdldCBhIGNvbXBp
bGVyIGVycm9yIGlmIHlvdSB3cml0ZQorCitgYGBjKysKK0VYUEVDVF9QUkVEMShJc1Bvc2l0aXZl
LCA1KTsKK2BgYAorCitIb3dldmVyLCB0aGlzIHdpbGwgd29yazoKKworYGBgYysrCitFWFBFQ1Rf
UFJFRDEoc3RhdGljX2Nhc3Q8Ym9vbCAoKikoaW50KT4oSXNQb3NpdGl2ZSksIDUpOworYGBgCisK
KyhUaGUgc3R1ZmYgaW5zaWRlIHRoZSBhbmdsZWQgYnJhY2tldHMgZm9yIHRoZSBgc3RhdGljX2Nh
c3RgIG9wZXJhdG9yIGlzIHRoZSB0eXBlCitvZiB0aGUgZnVuY3Rpb24gcG9pbnRlciBmb3IgdGhl
IGBpbnRgLXZlcnNpb24gb2YgYElzUG9zaXRpdmUoKWAuKQorCitBcyBhbm90aGVyIGV4YW1wbGUs
IHdoZW4geW91IGhhdmUgYSB0ZW1wbGF0ZSBmdW5jdGlvbgorCitgYGBjKysKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorYm9vbCBJc05lZ2F0aXZlKFQgeCkgeworICByZXR1cm4geCA8IDA7Cit9Citg
YGAKKworeW91IGNhbiB1c2UgaXQgaW4gYSBwcmVkaWNhdGUgYXNzZXJ0aW9uIGxpa2UgdGhpczoK
KworYGBgYysrCitBU1NFUlRfUFJFRDEoSXNOZWdhdGl2ZTxpbnQ+LCAtNSk7CitgYGAKKworVGhp
bmdzIGFyZSBtb3JlIGludGVyZXN0aW5nIGlmIHlvdXIgdGVtcGxhdGUgaGFzIG1vcmUgdGhhbiBv
bmUgcGFyYW1ldGVycy4gVGhlCitmb2xsb3dpbmcgd29uJ3QgY29tcGlsZToKKworYGBgYysrCitB
U1NFUlRfUFJFRDIoR3JlYXRlclRoYW48aW50LCBpbnQ+LCA1LCAwKTsKK2BgYAorCithcyB0aGUg
QysrIHByZS1wcm9jZXNzb3IgdGhpbmtzIHlvdSBhcmUgZ2l2aW5nIGBBU1NFUlRfUFJFRDJgIDQg
YXJndW1lbnRzLCB3aGljaAoraXMgb25lIG1vcmUgdGhhbiBleHBlY3RlZC4gVGhlIHdvcmthcm91
bmQgaXMgdG8gd3JhcCB0aGUgcHJlZGljYXRlIGZ1bmN0aW9uIGluCitwYXJlbnRoZXNlczoKKwor
YGBgYysrCitBU1NFUlRfUFJFRDIoKEdyZWF0ZXJUaGFuPGludCwgaW50PiksIDUsIDApOworYGBg
CisKKworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJpZ25vcmluZyByZXR1cm4gdmFs
dWUiIHdoZW4gSSBjYWxsIFJVTl9BTExfVEVTVFMoKS4gV2h5PworCitTb21lIHBlb3BsZSBoYWQg
YmVlbiBpZ25vcmluZyB0aGUgcmV0dXJuIHZhbHVlIG9mIGBSVU5fQUxMX1RFU1RTKClgLiBUaGF0
IGlzLAoraW5zdGVhZCBvZgorCitgYGBjKysKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK2Bg
YAorCit0aGV5IHdyaXRlCisKK2BgYGMrKworICBSVU5fQUxMX1RFU1RTKCk7CitgYGAKKworVGhp
cyBpcyAqKndyb25nIGFuZCBkYW5nZXJvdXMqKi4gVGhlIHRlc3Rpbmcgc2VydmljZXMgbmVlZHMg
dG8gc2VlIHRoZSByZXR1cm4KK3ZhbHVlIG9mIGBSVU5fQUxMX1RFU1RTKClgIGluIG9yZGVyIHRv
IGRldGVybWluZSBpZiBhIHRlc3QgaGFzIHBhc3NlZC4gSWYgeW91cgorYG1haW4oKWAgZnVuY3Rp
b24gaWdub3JlcyBpdCwgeW91ciB0ZXN0IHdpbGwgYmUgY29uc2lkZXJlZCBzdWNjZXNzZnVsIGV2
ZW4gaWYgaXQKK2hhcyBhIGdvb2dsZXRlc3QgYXNzZXJ0aW9uIGZhaWx1cmUuIFZlcnkgYmFkLgor
CitXZSBoYXZlIGRlY2lkZWQgdG8gZml4IHRoaXMgKHRoYW5rcyB0byBNaWNoYWVsIENoYXN0YWlu
IGZvciB0aGUgaWRlYSkuIE5vdywgeW91cgorY29kZSB3aWxsIG5vIGxvbmdlciBiZSBhYmxlIHRv
IGlnbm9yZSBgUlVOX0FMTF9URVNUUygpYCB3aGVuIGNvbXBpbGVkIHdpdGgKK2BnY2NgLiBJZiB5
b3UgZG8gc28sIHlvdSdsbCBnZXQgYSBjb21waWxlciBlcnJvci4KKworSWYgeW91IHNlZSB0aGUg
Y29tcGlsZXIgY29tcGxhaW5pbmcgYWJvdXQgeW91IGlnbm9yaW5nIHRoZSByZXR1cm4gdmFsdWUg
b2YKK2BSVU5fQUxMX1RFU1RTKClgLCB0aGUgZml4IGlzIHNpbXBsZToganVzdCBtYWtlIHN1cmUg
aXRzIHZhbHVlIGlzIHVzZWQgYXMgdGhlCityZXR1cm4gdmFsdWUgb2YgYG1haW4oKWAuCisKK0J1
dCBob3cgY291bGQgd2UgaW50cm9kdWNlIGEgY2hhbmdlIHRoYXQgYnJlYWtzIGV4aXN0aW5nIHRl
c3RzPyBXZWxsLCBpbiB0aGlzCitjYXNlLCB0aGUgY29kZSB3YXMgYWxyZWFkeSBicm9rZW4gaW4g
dGhlIGZpcnN0IHBsYWNlLCBzbyB3ZSBkaWRuJ3QgYnJlYWsgaXQuIDotKQorCisjIyBNeSBjb21w
aWxlciBjb21wbGFpbnMgdGhhdCBhIGNvbnN0cnVjdG9yIChvciBkZXN0cnVjdG9yKSBjYW5ub3Qg
cmV0dXJuIGEgdmFsdWUuIFdoYXQncyBnb2luZyBvbj8KKworRHVlIHRvIGEgcGVjdWxpYXJpdHkg
b2YgQysrLCBpbiBvcmRlciB0byBzdXBwb3J0IHRoZSBzeW50YXggZm9yIHN0cmVhbWluZworbWVz
c2FnZXMgdG8gYW4gYEFTU0VSVF8qYCwgZS5nLgorCitgYGBjKysKKyAgQVNTRVJUX0VRKDEsIEZv
bygpKSA8PCAiYmxhaCBibGFoIiA8PCBmb287CitgYGAKKword2UgaGFkIHRvIGdpdmUgdXAgdXNp
bmcgYEFTU0VSVCpgIGFuZCBgRkFJTCpgIChidXQgbm90IGBFWFBFQ1QqYCBhbmQKK2BBRERfRkFJ
TFVSRSpgKSBpbiBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzLiBUaGUgd29ya2Fyb3VuZCBp
cyB0byBtb3ZlIHRoZQorY29udGVudCBvZiB5b3VyIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgdG8g
YSBwcml2YXRlIHZvaWQgbWVtYmVyIGZ1bmN0aW9uLCBvcgorc3dpdGNoIHRvIGBFWFBFQ1RfKigp
YCBpZiB0aGF0IHdvcmtzLiBUaGlzCitbc2VjdGlvbl0oYWR2YW5jZWQubWQjYXNzZXJ0aW9uLXBs
YWNlbWVudCkgaW4gdGhlIHVzZXIncyBndWlkZSBleHBsYWlucyBpdC4KKworIyMgTXkgU2V0VXAo
KSBmdW5jdGlvbiBpcyBub3QgY2FsbGVkLiBXaHk/CisKK0MrKyBpcyBjYXNlLXNlbnNpdGl2ZS4g
RGlkIHlvdSBzcGVsbCBpdCBhcyBgU2V0dXAoKWA/CisKK1NpbWlsYXJseSwgc29tZXRpbWVzIHBl
b3BsZSBzcGVsbCBgU2V0VXBUZXN0Q2FzZSgpYCBhcyBgU2V0dXBUZXN0Q2FzZSgpYCBhbmQKK3dv
bmRlciB3aHkgaXQncyBuZXZlciBjYWxsZWQuCisKKyMjIEhvdyBkbyBJIGp1bXAgdG8gdGhlIGxp
bmUgb2YgYSBmYWlsdXJlIGluIEVtYWNzIGRpcmVjdGx5PworCitnb29nbGV0ZXN0J3MgZmFpbHVy
ZSBtZXNzYWdlIGZvcm1hdCBpcyB1bmRlcnN0b29kIGJ5IEVtYWNzIGFuZCBtYW55IG90aGVyIElE
RXMsCitsaWtlIGFjbWUgYW5kIFhDb2RlLiBJZiBhIGdvb2dsZXRlc3QgbWVzc2FnZSBpcyBpbiBh
IGNvbXBpbGF0aW9uIGJ1ZmZlciBpbgorRW1hY3MsIHRoZW4gaXQncyBjbGlja2FibGUuCisKKwor
IyMgSSBoYXZlIHNldmVyYWwgdGVzdCBjYXNlcyB3aGljaCBzaGFyZSB0aGUgc2FtZSB0ZXN0IGZp
eHR1cmUgbG9naWMsIGRvIEkgaGF2ZSB0byBkZWZpbmUgYSBuZXcgdGVzdCBmaXh0dXJlIGNsYXNz
IGZvciBlYWNoIG9mIHRoZW0/IFRoaXMgc2VlbXMgcHJldHR5IHRlZGlvdXMuCisKK1lvdSBkb24n
dCBoYXZlIHRvLiBJbnN0ZWFkIG9mCisKK2BgYGMrKworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyBC
YXNlVGVzdCB7fTsKKworVEVTVF9GKEZvb1Rlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEZvb1Rl
c3QsIERlZikgeyAuLi4gfQorCitjbGFzcyBCYXJUZXN0IDogcHVibGljIEJhc2VUZXN0IHt9Owor
CitURVNUX0YoQmFyVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0YoQmFyVGVzdCwgRGVmKSB7IC4u
LiB9CitgYGAKKworeW91IGNhbiBzaW1wbHkgYHR5cGVkZWZgIHRoZSB0ZXN0IGZpeHR1cmVzOgor
CitgYGBjKysKK3R5cGVkZWYgQmFzZVRlc3QgRm9vVGVzdDsKKworVEVTVF9GKEZvb1Rlc3QsIEFi
YykgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQorCit0eXBlZGVmIEJhc2VU
ZXN0IEJhclRlc3Q7CisKK1RFU1RfRihCYXJUZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihCYXJU
ZXN0LCBEZWYpIHsgLi4uIH0KK2BgYAorCisjIyBnb29nbGV0ZXN0IG91dHB1dCBpcyBidXJpZWQg
aW4gYSB3aG9sZSBidW5jaCBvZiBMT0cgbWVzc2FnZXMuIFdoYXQgZG8gSSBkbz8KKworVGhlIGdv
b2dsZXRlc3Qgb3V0cHV0IGlzIG1lYW50IHRvIGJlIGEgY29uY2lzZSBhbmQgaHVtYW4tZnJpZW5k
bHkgcmVwb3J0LiBJZgoreW91ciB0ZXN0IGdlbmVyYXRlcyB0ZXh0dWFsIG91dHB1dCBpdHNlbGYs
IGl0IHdpbGwgbWl4IHdpdGggdGhlIGdvb2dsZXRlc3QKK291dHB1dCwgbWFraW5nIGl0IGhhcmQg
dG8gcmVhZC4gSG93ZXZlciwgdGhlcmUgaXMgYW4gZWFzeSBzb2x1dGlvbiB0byB0aGlzCitwcm9i
bGVtLgorCitTaW5jZSBgTE9HYCBtZXNzYWdlcyBnbyB0byBzdGRlcnIsIHdlIGRlY2lkZWQgdG8g
bGV0IGdvb2dsZXRlc3Qgb3V0cHV0IGdvIHRvCitzdGRvdXQuIFRoaXMgd2F5LCB5b3UgY2FuIGVh
c2lseSBzZXBhcmF0ZSB0aGUgdHdvIHVzaW5nIHJlZGlyZWN0aW9uLiBGb3IKK2V4YW1wbGU6CisK
K2BgYHNoZWxsCiskIC4vbXlfdGVzdCA+IGd0ZXN0X291dHB1dC50eHQKK2BgYAorCisKKyMjIFdo
eSBzaG91bGQgSSBwcmVmZXIgdGVzdCBmaXh0dXJlcyBvdmVyIGdsb2JhbCB2YXJpYWJsZXM/CisK
K1RoZXJlIGFyZSBzZXZlcmFsIGdvb2QgcmVhc29uczoKKworMS4gIEl0J3MgbGlrZWx5IHlvdXIg
dGVzdCBuZWVkcyB0byBjaGFuZ2UgdGhlIHN0YXRlcyBvZiBpdHMgZ2xvYmFsIHZhcmlhYmxlcy4K
KyAgICBUaGlzIG1ha2VzIGl0IGRpZmZpY3VsdCB0byBrZWVwIHNpZGUgZWZmZWN0cyBmcm9tIGVz
Y2FwaW5nIG9uZSB0ZXN0IGFuZAorICAgIGNvbnRhbWluYXRpbmcgb3RoZXJzLCBtYWtpbmcgZGVi
dWdnaW5nIGRpZmZpY3VsdC4gQnkgdXNpbmcgZml4dHVyZXMsIGVhY2gKKyAgICB0ZXN0IGhhcyBh
IGZyZXNoIHNldCBvZiB2YXJpYWJsZXMgdGhhdCdzIGRpZmZlcmVudCAoYnV0IHdpdGggdGhlIHNh
bWUKKyAgICBuYW1lcykuIFRodXMsIHRlc3RzIGFyZSBrZXB0IGluZGVwZW5kZW50IG9mIGVhY2gg
b3RoZXIuCisxLiAgR2xvYmFsIHZhcmlhYmxlcyBwb2xsdXRlIHRoZSBnbG9iYWwgbmFtZXNwYWNl
LgorMS4gIFRlc3QgZml4dHVyZXMgY2FuIGJlIHJldXNlZCB2aWEgc3ViY2xhc3NpbmcsIHdoaWNo
IGNhbm5vdCBiZSBkb25lIGVhc2lseQorICAgIHdpdGggZ2xvYmFsIHZhcmlhYmxlcy4gVGhpcyBp
cyB1c2VmdWwgaWYgbWFueSB0ZXN0IGNhc2VzIGhhdmUgc29tZXRoaW5nIGluCisgICAgY29tbW9u
LgorCisKKyAgICAjIyBXaGF0IGNhbiB0aGUgc3RhdGVtZW50IGFyZ3VtZW50IGluIEFTU0VSVF9E
RUFUSCgpIGJlPworCitgQVNTRVJUX0RFQVRIKCpzdGF0ZW1lbnQqLCAqcmVnZXgqKWAgKG9yIGFu
eSBkZWF0aCBhc3NlcnRpb24gbWFjcm8pIGNhbiBiZSB1c2VkCit3aGVyZXZlciBgKnN0YXRlbWVu
dCpgIGlzIHZhbGlkLiBTbyBiYXNpY2FsbHkgYCpzdGF0ZW1lbnQqYCBjYW4gYmUgYW55IEMrKwor
c3RhdGVtZW50IHRoYXQgbWFrZXMgc2Vuc2UgaW4gdGhlIGN1cnJlbnQgY29udGV4dC4gSW4gcGFy
dGljdWxhciwgaXQgY2FuCityZWZlcmVuY2UgZ2xvYmFsIGFuZC9vciBsb2NhbCB2YXJpYWJsZXMs
IGFuZCBjYW4gYmU6CisKKyogICBhIHNpbXBsZSBmdW5jdGlvbiBjYWxsIChvZnRlbiB0aGUgY2Fz
ZSksCisqICAgYSBjb21wbGV4IGV4cHJlc3Npb24sIG9yCisqICAgYSBjb21wb3VuZCBzdGF0ZW1l
bnQuCisKK1NvbWUgZXhhbXBsZXMgYXJlIHNob3duIGhlcmU6CisKK2BgYGMrKworLy8gQSBkZWF0
aCB0ZXN0IGNhbiBiZSBhIHNpbXBsZSBmdW5jdGlvbiBjYWxsLgorVEVTVChNeURlYXRoVGVzdCwg
RnVuY3Rpb25DYWxsKSB7CisgIEFTU0VSVF9ERUFUSChYeXooNSksICJYeXogZmFpbGVkIik7Cit9
CisKKy8vIE9yIGEgY29tcGxleCBleHByZXNzaW9uIHRoYXQgcmVmZXJlbmNlcyB2YXJpYWJsZXMg
YW5kIGZ1bmN0aW9ucy4KK1RFU1QoTXlEZWF0aFRlc3QsIENvbXBsZXhFeHByZXNzaW9uKSB7Cisg
IGNvbnN0IGJvb2wgYyA9IENvbmRpdGlvbigpOworICBBU1NFUlRfREVBVEgoKGMgPyBGdW5jMSgw
KSA6IG9iamVjdDIuTWV0aG9kKCJ0ZXN0IikpLAorICAgICAgICAgICAgICAgIihGdW5jMXxNZXRo
b2QpIGZhaWxlZCIpOworfQorCisvLyBEZWF0aCBhc3NlcnRpb25zIGNhbiBiZSB1c2VkIGFueSB3
aGVyZSBpbiBhIGZ1bmN0aW9uLiAgSW4KKy8vIHBhcnRpY3VsYXIsIHRoZXkgY2FuIGJlIGluc2lk
ZSBhIGxvb3AuCitURVNUKE15RGVhdGhUZXN0LCBJbnNpZGVMb29wKSB7CisgIC8vIFZlcmlmaWVz
IHRoYXQgRm9vKDApLCBGb28oMSksIC4uLiwgYW5kIEZvbyg0KSBhbGwgZGllLgorICBmb3IgKGlu
dCBpID0gMDsgaSA8IDU7IGkrKykgeworICAgIEVYUEVDVF9ERUFUSF9NKEZvbyhpKSwgIkZvbyBo
YXMgXFxkKyBlcnJvcnMiLAorICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6TWVzc2FnZSgp
IDw8ICJ3aGVyZSBpIGlzICIgPDwgaSk7CisgIH0KK30KKworLy8gQSBkZWF0aCBhc3NlcnRpb24g
Y2FuIGNvbnRhaW4gYSBjb21wb3VuZCBzdGF0ZW1lbnQuCitURVNUKE15RGVhdGhUZXN0LCBDb21w
b3VuZFN0YXRlbWVudCkgeworICAvLyBWZXJpZmllcyB0aGF0IGF0IGxlYXNlIG9uZSBvZiBCYXIo
MCksIEJhcigxKSwgLi4uLCBhbmQKKyAgLy8gQmFyKDQpIGRpZXMuCisgIEFTU0VSVF9ERUFUSCh7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICAgIEJhcihpKTsKKyAgICB9
CisgIH0sCisgICJCYXIgaGFzIFxcZCsgZXJyb3JzIik7Cit9CitgYGAKKworZ3Rlc3QtZGVhdGgt
dGVzdF90ZXN0LmNjIGNvbnRhaW5zIG1vcmUgZXhhbXBsZXMgaWYgeW91IGFyZSBpbnRlcmVzdGVk
LgorCisjIyBJIGhhdmUgYSBmaXh0dXJlIGNsYXNzIGBGb29UZXN0YCwgYnV0IGBURVNUX0YoRm9v
VGVzdCwgQmFyKWAgZ2l2ZXMgbWUgZXJyb3IgYGAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gZm9yIGNh
bGwgdG8gYEZvb1Rlc3Q6OkZvb1Rlc3QoKSciYGAuIFdoeT8KKworR29vZ2xldGVzdCBuZWVkcyB0
byBiZSBhYmxlIHRvIGNyZWF0ZSBvYmplY3RzIG9mIHlvdXIgdGVzdCBmaXh0dXJlIGNsYXNzLCBz
byBpdAorbXVzdCBoYXZlIGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4gTm9ybWFsbHkgdGhlIGNvbXBp
bGVyIHdpbGwgZGVmaW5lIG9uZSBmb3IgeW91LgorSG93ZXZlciwgdGhlcmUgYXJlIGNhc2VzIHdo
ZXJlIHlvdSBoYXZlIHRvIGRlZmluZSB5b3VyIG93bjoKKworKiAgIElmIHlvdSBleHBsaWNpdGx5
IGRlY2xhcmUgYSBub24tZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgY2xhc3MgYEZvb1Rlc3RgCisg
ICAgKGBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUygpYCBkb2VzIHRoaXMpLCB0aGVuIHlvdSBu
ZWVkIHRvIGRlZmluZSBhCisgICAgZGVmYXVsdCBjb25zdHJ1Y3RvciwgZXZlbiBpZiBpdCB3b3Vs
ZCBiZSBlbXB0eS4KKyogICBJZiBgRm9vVGVzdGAgaGFzIGEgY29uc3Qgbm9uLXN0YXRpYyBkYXRh
IG1lbWJlciwgdGhlbiB5b3UgaGF2ZSB0byBkZWZpbmUgdGhlCisgICAgZGVmYXVsdCBjb25zdHJ1
Y3RvciAqYW5kKiBpbml0aWFsaXplIHRoZSBjb25zdCBtZW1iZXIgaW4gdGhlIGluaXRpYWxpemVy
CisgICAgbGlzdCBvZiB0aGUgY29uc3RydWN0b3IuIChFYXJseSB2ZXJzaW9ucyBvZiBgZ2NjYCBk
b2Vzbid0IGZvcmNlIHlvdSB0bworICAgIGluaXRpYWxpemUgdGhlIGNvbnN0IG1lbWJlci4gSXQn
cyBhIGJ1ZyB0aGF0IGhhcyBiZWVuIGZpeGVkIGluIGBnY2MgNGAuKQorCisjIyBXaHkgZG9lcyBB
U1NFUlRfREVBVEggY29tcGxhaW4gYWJvdXQgcHJldmlvdXMgdGhyZWFkcyB0aGF0IHdlcmUgYWxy
ZWFkeSBqb2luZWQ/CisKK1dpdGggdGhlIExpbnV4IHB0aHJlYWQgbGlicmFyeSwgdGhlcmUgaXMg
bm8gdHVybmluZyBiYWNrIG9uY2UgeW91IGNyb3NzIHRoZSBsaW5lCitmcm9tIHNpbmdsZSB0aHJl
YWQgdG8gbXVsdGlwbGUgdGhyZWFkcy4gVGhlIGZpcnN0IHRpbWUgeW91IGNyZWF0ZSBhIHRocmVh
ZCwgYQorbWFuYWdlciB0aHJlYWQgaXMgY3JlYXRlZCBpbiBhZGRpdGlvbiwgc28geW91IGdldCAz
LCBub3QgMiwgdGhyZWFkcy4gTGF0ZXIgd2hlbgordGhlIHRocmVhZCB5b3UgY3JlYXRlIGpvaW5z
IHRoZSBtYWluIHRocmVhZCwgdGhlIHRocmVhZCBjb3VudCBkZWNyZW1lbnRzIGJ5IDEsCitidXQg
dGhlIG1hbmFnZXIgdGhyZWFkIHdpbGwgbmV2ZXIgYmUga2lsbGVkLCBzbyB5b3Ugc3RpbGwgaGF2
ZSAyIHRocmVhZHMsIHdoaWNoCittZWFucyB5b3UgY2Fubm90IHNhZmVseSBydW4gYSBkZWF0aCB0
ZXN0LgorCitUaGUgbmV3IE5QVEwgdGhyZWFkIGxpYnJhcnkgZG9lc24ndCBzdWZmZXIgZnJvbSB0
aGlzIHByb2JsZW0sIGFzIGl0IGRvZXNuJ3QKK2NyZWF0ZSBhIG1hbmFnZXIgdGhyZWFkLiBIb3dl
dmVyLCBpZiB5b3UgZG9uJ3QgY29udHJvbCB3aGljaCBtYWNoaW5lIHlvdXIgdGVzdAorcnVucyBv
biwgeW91IHNob3VsZG4ndCBkZXBlbmQgb24gdGhpcy4KKworIyMgV2h5IGRvZXMgZ29vZ2xldGVz
dCByZXF1aXJlIHRoZSBlbnRpcmUgdGVzdCBjYXNlLCBpbnN0ZWFkIG9mIGluZGl2aWR1YWwgdGVz
dHMsIHRvIGJlIG5hbWVkICpEZWF0aFRlc3Qgd2hlbiBpdCB1c2VzIEFTU0VSVF9ERUFUSD8KKwor
Z29vZ2xldGVzdCBkb2VzIG5vdCBpbnRlcmxlYXZlIHRlc3RzIGZyb20gZGlmZmVyZW50IHRlc3Qg
Y2FzZXMuIFRoYXQgaXMsIGl0IHJ1bnMKK2FsbCB0ZXN0cyBpbiBvbmUgdGVzdCBjYXNlIGZpcnN0
LCBhbmQgdGhlbiBydW5zIGFsbCB0ZXN0cyBpbiB0aGUgbmV4dCB0ZXN0IGNhc2UsCithbmQgc28g
b24uIGdvb2dsZXRlc3QgZG9lcyB0aGlzIGJlY2F1c2UgaXQgbmVlZHMgdG8gc2V0IHVwIGEgdGVz
dCBjYXNlIGJlZm9yZQordGhlIGZpcnN0IHRlc3QgaW4gaXQgaXMgcnVuLCBhbmQgdGVhciBpdCBk
b3duIGFmdGVyd29yZHMuIFNwbGl0dGluZyB1cCB0aGUgdGVzdAorY2FzZSB3b3VsZCByZXF1aXJl
IG11bHRpcGxlIHNldC11cCBhbmQgdGVhci1kb3duIHByb2Nlc3Nlcywgd2hpY2ggaXMgaW5lZmZp
Y2llbnQKK2FuZCBtYWtlcyB0aGUgc2VtYW50aWNzIHVuY2xlYW4uCisKK0lmIHdlIHdlcmUgdG8g
ZGV0ZXJtaW5lIHRoZSBvcmRlciBvZiB0ZXN0cyBiYXNlZCBvbiB0ZXN0IG5hbWUgaW5zdGVhZCBv
ZiB0ZXN0CitjYXNlIG5hbWUsIHRoZW4gd2Ugd291bGQgaGF2ZSBhIHByb2JsZW0gd2l0aCB0aGUg
Zm9sbG93aW5nIHNpdHVhdGlvbjoKKworYGBgYysrCitURVNUX0YoRm9vVGVzdCwgQWJjRGVhdGhU
ZXN0KSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgVXZ3KSB7IC4uLiB9CisKK1RFU1RfRihCYXJU
ZXN0LCBEZWZEZWF0aFRlc3QpIHsgLi4uIH0KK1RFU1RfRihCYXJUZXN0LCBYeXopIHsgLi4uIH0K
K2BgYAorCitTaW5jZSBgRm9vVGVzdC5BYmNEZWF0aFRlc3RgIG5lZWRzIHRvIHJ1biBiZWZvcmUg
YEJhclRlc3QuWHl6YCwgYW5kIHdlIGRvbid0CitpbnRlcmxlYXZlIHRlc3RzIGZyb20gZGlmZmVy
ZW50IHRlc3QgY2FzZXMsIHdlIG5lZWQgdG8gcnVuIGFsbCB0ZXN0cyBpbiB0aGUKK2BGb29UZXN0
YCBjYXNlIGJlZm9yZSBydW5uaW5nIGFueSB0ZXN0IGluIHRoZSBgQmFyVGVzdGAgY2FzZS4gVGhp
cyBjb250cmFkaWN0cword2l0aCB0aGUgcmVxdWlyZW1lbnQgdG8gcnVuIGBCYXJUZXN0LkRlZkRl
YXRoVGVzdGAgYmVmb3JlIGBGb29UZXN0LlV2d2AuCisKKyMjIEJ1dCBJIGRvbid0IGxpa2UgY2Fs
bGluZyBteSBlbnRpcmUgdGVzdCBjYXNlIFwqRGVhdGhUZXN0IHdoZW4gaXQgY29udGFpbnMgYm90
aCBkZWF0aCB0ZXN0cyBhbmQgbm9uLWRlYXRoIHRlc3RzLiBXaGF0IGRvIEkgZG8/CisKK1lvdSBk
b24ndCBoYXZlIHRvLCBidXQgaWYgeW91IGxpa2UsIHlvdSBtYXkgc3BsaXQgdXAgdGhlIHRlc3Qg
Y2FzZSBpbnRvCitgRm9vVGVzdGAgYW5kIGBGb29EZWF0aFRlc3RgLCB3aGVyZSB0aGUgbmFtZXMg
bWFrZSBpdCBjbGVhciB0aGF0IHRoZXkgYXJlCityZWxhdGVkOgorCitgYGBjKysKK2NsYXNzIEZv
b1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07CisKK1RFU1RfRihGb29UZXN0
LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0KKwordXNpbmcgRm9v
RGVhdGhUZXN0ID0gRm9vVGVzdDsKKworVEVTVF9GKEZvb0RlYXRoVGVzdCwgVXZ3KSB7IC4uLiBF
WFBFQ1RfREVBVEgoLi4uKSAuLi4gfQorVEVTVF9GKEZvb0RlYXRoVGVzdCwgWHl6KSB7IC4uLiBB
U1NFUlRfREVBVEgoLi4uKSAuLi4gfQorYGBgCisKKyMjIGdvb2dsZXRlc3QgcHJpbnRzIHRoZSBM
T0cgbWVzc2FnZXMgaW4gYSBkZWF0aCB0ZXN0J3MgY2hpbGQgcHJvY2VzcyBvbmx5IHdoZW4gdGhl
IHRlc3QgZmFpbHMuIEhvdyBjYW4gSSBzZWUgdGhlIExPRyBtZXNzYWdlcyB3aGVuIHRoZSBkZWF0
aCB0ZXN0IHN1Y2NlZWRzPworCitQcmludGluZyB0aGUgTE9HIG1lc3NhZ2VzIGdlbmVyYXRlZCBi
eSB0aGUgc3RhdGVtZW50IGluc2lkZSBgRVhQRUNUX0RFQVRIKClgCittYWtlcyBpdCBoYXJkZXIg
dG8gc2VhcmNoIGZvciByZWFsIHByb2JsZW1zIGluIHRoZSBwYXJlbnQncyBsb2cuIFRoZXJlZm9y
ZSwKK2dvb2dsZXRlc3Qgb25seSBwcmludHMgdGhlbSB3aGVuIHRoZSBkZWF0aCB0ZXN0IGhhcyBm
YWlsZWQuCisKK0lmIHlvdSByZWFsbHkgbmVlZCB0byBzZWUgc3VjaCBMT0cgbWVzc2FnZXMsIGEg
d29ya2Fyb3VuZCBpcyB0byB0ZW1wb3JhcmlseQorYnJlYWsgdGhlIGRlYXRoIHRlc3QgKGUuZy4g
YnkgY2hhbmdpbmcgdGhlIHJlZ2V4IHBhdHRlcm4gaXQgaXMgZXhwZWN0ZWQgdG8KK21hdGNoKS4g
QWRtaXR0ZWRseSwgdGhpcyBpcyBhIGhhY2suIFdlJ2xsIGNvbnNpZGVyIGEgbW9yZSBwZXJtYW5l
bnQgc29sdXRpb24KK2FmdGVyIHRoZSBmb3JrLWFuZC1leGVjLXN0eWxlIGRlYXRoIHRlc3RzIGFy
ZSBpbXBsZW1lbnRlZC4KKworIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCAibm8gbWF0
Y2ggZm9yICdvcGVyYXRvcjw8JyIgd2hlbiBJIHVzZSBhbiBhc3NlcnRpb24uIFdoYXQgZ2l2ZXM/
CisKK0lmIHlvdSB1c2UgYSB1c2VyLWRlZmluZWQgdHlwZSBgRm9vVHlwZWAgaW4gYW4gYXNzZXJ0
aW9uLCB5b3UgbXVzdCBtYWtlIHN1cmUKK3RoZXJlIGlzIGFuIGBzdGQ6Om9zdHJlYW0mIG9wZXJh
dG9yPDwoc3RkOjpvc3RyZWFtJiwgY29uc3QgRm9vVHlwZSYpYCBmdW5jdGlvbgorZGVmaW5lZCBz
dWNoIHRoYXQgd2UgY2FuIHByaW50IGEgdmFsdWUgb2YgYEZvb1R5cGVgLgorCitJbiBhZGRpdGlv
biwgaWYgYEZvb1R5cGVgIGlzIGRlY2xhcmVkIGluIGEgbmFtZSBzcGFjZSwgdGhlIGA8PGAgb3Bl
cmF0b3IgYWxzbworbmVlZHMgdG8gYmUgZGVmaW5lZCBpbiB0aGUgKnNhbWUqIG5hbWUgc3BhY2Uu
IFNlZSBnby90b3R3LzQ5IGZvciBkZXRhaWxzLgorCisjIyBIb3cgZG8gSSBzdXBwcmVzcyB0aGUg
bWVtb3J5IGxlYWsgbWVzc2FnZXMgb24gV2luZG93cz8KKworU2luY2UgdGhlIHN0YXRpY2FsbHkg
aW5pdGlhbGl6ZWQgZ29vZ2xldGVzdCBzaW5nbGV0b24gcmVxdWlyZXMgYWxsb2NhdGlvbnMgb24K
K3RoZSBoZWFwLCB0aGUgVmlzdWFsIEMrKyBtZW1vcnkgbGVhayBkZXRlY3RvciB3aWxsIHJlcG9y
dCBtZW1vcnkgbGVha3MgYXQgdGhlCitlbmQgb2YgdGhlIHByb2dyYW0gcnVuLiBUaGUgZWFzaWVz
dCB3YXkgdG8gYXZvaWQgdGhpcyBpcyB0byB1c2UgdGhlCitgX0NydE1lbUNoZWNrcG9pbnRgIGFu
ZCBgX0NydE1lbUR1bXBBbGxPYmplY3RzU2luY2VgIGNhbGxzIHRvIG5vdCByZXBvcnQgYW55Citz
dGF0aWNhbGx5IGluaXRpYWxpemVkIGhlYXAgb2JqZWN0cy4gU2VlIE1TRE4gZm9yIG1vcmUgZGV0
YWlscyBhbmQgYWRkaXRpb25hbAoraGVhcCBjaGVjay9kZWJ1ZyByb3V0aW5lcy4KKworCisjIyBI
b3cgY2FuIG15IGNvZGUgZGV0ZWN0IGlmIGl0IGlzIHJ1bm5pbmcgaW4gYSB0ZXN0PworCitJZiB5
b3Ugd3JpdGUgY29kZSB0aGF0IHNuaWZmcyB3aGV0aGVyIGl0J3MgcnVubmluZyBpbiBhIHRlc3Qg
YW5kIGRvZXMgZGlmZmVyZW50Cit0aGluZ3MgYWNjb3JkaW5nbHksIHlvdSBhcmUgbGVha2luZyB0
ZXN0LW9ubHkgbG9naWMgaW50byBwcm9kdWN0aW9uIGNvZGUgYW5kCit0aGVyZSBpcyBubyBlYXN5
IHdheSB0byBlbnN1cmUgdGhhdCB0aGUgdGVzdC1vbmx5IGNvZGUgcGF0aHMgYXJlbid0IHJ1biBi
eQorbWlzdGFrZSBpbiBwcm9kdWN0aW9uLiBTdWNoIGNsZXZlcm5lc3MgYWxzbyBsZWFkcyB0bwor
W0hlaXNlbmJ1Z3NdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hlaXNlbmJ1ZykuIFRo
ZXJlZm9yZSB3ZSBzdHJvbmdseQorYWR2aXNlIGFnYWluc3QgdGhlIHByYWN0aWNlLCBhbmQgZ29v
Z2xldGVzdCBkb2Vzbid0IHByb3ZpZGUgYSB3YXkgdG8gZG8gaXQuCisKK0luIGdlbmVyYWwsIHRo
ZSByZWNvbW1lbmRlZCB3YXkgdG8gY2F1c2UgdGhlIGNvZGUgdG8gYmVoYXZlIGRpZmZlcmVudGx5
IHVuZGVyCit0ZXN0IGlzIFtEZXBlbmRlbmN5IEluamVjdGlvbl0oaHR0cHM6Ly9lbi53aWtpcGVk
aWEub3JnL3dpa2kvRGVwZW5kZW5jeV9pbmplY3Rpb24pLiBZb3UgY2FuIGluamVjdAorZGlmZmVy
ZW50IGZ1bmN0aW9uYWxpdHkgZnJvbSB0aGUgdGVzdCBhbmQgZnJvbSB0aGUgcHJvZHVjdGlvbiBj
b2RlLiBTaW5jZSB5b3VyCitwcm9kdWN0aW9uIGNvZGUgZG9lc24ndCBsaW5rIGluIHRoZSBmb3It
dGVzdCBsb2dpYyBhdCBhbGwgKHRoZQorW2B0ZXN0b25seWBdKGh0dHBzOi8vZG9jcy5iYXplbC5i
dWlsZC92ZXJzaW9ucy9tYXN0ZXIvYmUvY29tbW9uLWRlZmluaXRpb25zLmh0bWwjY29tbW9uLnRl
c3Rvbmx5KQorYXR0cmlidXRlIGZvciBCVUlMRCB0YXJnZXRzIGhlbHBzIHRvIGVuc3VyZSB0aGF0
KSwgdGhlcmUgaXMgbm8gZGFuZ2VyIGluCithY2NpZGVudGFsbHkgcnVubmluZyBpdC4KKworSG93
ZXZlciwgaWYgeW91ICpyZWFsbHkqLCAqcmVhbGx5KiwgKnJlYWxseSogaGF2ZSBubyBjaG9pY2Us
IGFuZCBpZiB5b3UgZm9sbG93Cit0aGUgcnVsZSBvZiBlbmRpbmcgeW91ciB0ZXN0IHByb2dyYW0g
bmFtZXMgd2l0aCBgX3Rlc3RgLCB5b3UgY2FuIHVzZSB0aGUKKypob3JyaWJsZSogaGFjayBvZiBz
bmlmZmluZyB5b3VyIGV4ZWN1dGFibGUgbmFtZSAoYGFyZ3ZbMF1gIGluIGBtYWluKClgKSB0byBr
bm93Cit3aGV0aGVyIHRoZSBjb2RlIGlzIHVuZGVyIHRlc3QuCisKKworIyMgSG93IGRvIEkgdGVt
cG9yYXJpbHkgZGlzYWJsZSBhIHRlc3Q/CisKK0lmIHlvdSBoYXZlIGEgYnJva2VuIHRlc3QgdGhh
dCB5b3UgY2Fubm90IGZpeCByaWdodCBhd2F5LCB5b3UgY2FuIGFkZCB0aGUKK0RJU0FCTEVEXyBw
cmVmaXggdG8gaXRzIG5hbWUuIFRoaXMgd2lsbCBleGNsdWRlIGl0IGZyb20gZXhlY3V0aW9uLiBU
aGlzIGlzCitiZXR0ZXIgdGhhbiBjb21tZW50aW5nIG91dCB0aGUgY29kZSBvciB1c2luZyAjaWYg
MCwgYXMgZGlzYWJsZWQgdGVzdHMgYXJlIHN0aWxsCitjb21waWxlZCAoYW5kIHRodXMgd29uJ3Qg
cm90KS4KKworVG8gaW5jbHVkZSBkaXNhYmxlZCB0ZXN0cyBpbiB0ZXN0IGV4ZWN1dGlvbiwganVz
dCBpbnZva2UgdGhlIHRlc3QgcHJvZ3JhbSB3aXRoCit0aGUgLS1ndGVzdF9hbHNvX3J1bl9kaXNh
YmxlZF90ZXN0cyBmbGFnLgorCisjIyBJcyBpdCBPSyBpZiBJIGhhdmUgdHdvIHNlcGFyYXRlIGBU
RVNUKEZvbywgQmFyKWAgdGVzdCBtZXRob2RzIGRlZmluZWQgaW4gZGlmZmVyZW50IG5hbWVzcGFj
ZXM/CisKK1llcy4KKworVGhlIHJ1bGUgaXMgKiphbGwgdGVzdCBtZXRob2RzIGluIHRoZSBzYW1l
IHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSBmaXh0dXJlCitjbGFzcy4qKiBUaGlzIG1lYW5z
IHRoYXQgdGhlIGZvbGxvd2luZyBpcyAqKmFsbG93ZWQqKiBiZWNhdXNlIGJvdGggdGVzdHMgdXNl
IHRoZQorc2FtZSBmaXh0dXJlIGNsYXNzIChgOjp0ZXN0aW5nOjpUZXN0YCkuCisKK2BgYGMrKwor
bmFtZXNwYWNlIGZvbyB7CitURVNUKENvb2xUZXN0LCBEb1NvbWV0aGluZykgeworICBTVUNDRUVE
KCk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgZm9vCisKK25hbWVzcGFjZSBiYXIgeworVEVTVChDb29s
VGVzdCwgRG9Tb21ldGhpbmcpIHsKKyAgU1VDQ0VFRCgpOworfQorfSAgLy8gbmFtZXNwYWNlIGJh
cgorYGBgCisKK0hvd2V2ZXIsIHRoZSBmb2xsb3dpbmcgY29kZSBpcyAqKm5vdCBhbGxvd2VkKiog
YW5kIHdpbGwgcHJvZHVjZSBhIHJ1bnRpbWUgZXJyb3IKK2Zyb20gZ29vZ2xldGVzdCBiZWNhdXNl
IHRoZSB0ZXN0IG1ldGhvZHMgYXJlIHVzaW5nIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUKK2NsYXNz
ZXMgd2l0aCB0aGUgc2FtZSB0ZXN0IGNhc2UgbmFtZS4KKworYGBgYysrCituYW1lc3BhY2UgZm9v
IHsKK2NsYXNzIENvb2xUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsgIC8vIEZpeHR1
cmUgZm9vOjpDb29sVGVzdAorVEVTVF9GKENvb2xUZXN0LCBEb1NvbWV0aGluZykgeworICBTVUND
RUVEKCk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgZm9vCisKK25hbWVzcGFjZSBiYXIgeworY2xhc3Mg
Q29vbFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OyAgLy8gRml4dHVyZTogYmFyOjpD
b29sVGVzdAorVEVTVF9GKENvb2xUZXN0LCBEb1NvbWV0aGluZykgeworICBTVUNDRUVEKCk7Cit9
Cit9ICAvLyBuYW1lc3BhY2UgYmFyCitgYGAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2RvY3MvcHJpbWVyLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9wcmlt
ZXIubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2E4ZWE4ZDcxN2I4MzViY2JkMjNmODRjOWVhMDVmMTZhODc4YTVk
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvcHJpbWVy
Lm1kCkBAIC0wLDAgKzEsNTY5IEBACisjIEdvb2dsZXRlc3QgUHJpbWVyCisKKworIyMgSW50cm9k
dWN0aW9uOiBXaHkgZ29vZ2xldGVzdD8KKworKmdvb2dsZXRlc3QqIGhlbHBzIHlvdSB3cml0ZSBi
ZXR0ZXIgQysrIHRlc3RzLgorCitnb29nbGV0ZXN0IGlzIGEgdGVzdGluZyBmcmFtZXdvcmsgZGV2
ZWxvcGVkIGJ5IHRoZSBUZXN0aW5nCitUZWNobm9sb2d5IHRlYW0gd2l0aCBHb29nbGUncyBzcGVj
aWZpYworcmVxdWlyZW1lbnRzIGFuZCBjb25zdHJhaW50cyBpbiBtaW5kLiBObyBtYXR0ZXIgd2hl
dGhlciB5b3Ugd29yayBvbiBMaW51eCwKK1dpbmRvd3MsIG9yIGEgTWFjLCBpZiB5b3Ugd3JpdGUg
QysrIGNvZGUsIGdvb2dsZXRlc3QgY2FuIGhlbHAgeW91LiBBbmQgaXQKK3N1cHBvcnRzICphbnkq
IGtpbmQgb2YgdGVzdHMsIG5vdCBqdXN0IHVuaXQgdGVzdHMuCisKK1NvIHdoYXQgbWFrZXMgYSBn
b29kIHRlc3QsIGFuZCBob3cgZG9lcyBnb29nbGV0ZXN0IGZpdCBpbj8gV2UgYmVsaWV2ZToKKwor
MS4gIFRlc3RzIHNob3VsZCBiZSAqaW5kZXBlbmRlbnQqIGFuZCAqcmVwZWF0YWJsZSouIEl0J3Mg
YSBwYWluIHRvIGRlYnVnIGEgdGVzdAorICAgIHRoYXQgc3VjY2VlZHMgb3IgZmFpbHMgYXMgYSBy
ZXN1bHQgb2Ygb3RoZXIgdGVzdHMuIGdvb2dsZXRlc3QgaXNvbGF0ZXMgdGhlCisgICAgdGVzdHMg
YnkgcnVubmluZyBlYWNoIG9mIHRoZW0gb24gYSBkaWZmZXJlbnQgb2JqZWN0LiBXaGVuIGEgdGVz
dCBmYWlscywKKyAgICBnb29nbGV0ZXN0IGFsbG93cyB5b3UgdG8gcnVuIGl0IGluIGlzb2xhdGlv
biBmb3IgcXVpY2sgZGVidWdnaW5nLgorMS4gIFRlc3RzIHNob3VsZCBiZSB3ZWxsICpvcmdhbml6
ZWQqIGFuZCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3RlZAorICAgIGNvZGUuIGdv
b2dsZXRlc3QgZ3JvdXBzIHJlbGF0ZWQgdGVzdHMgaW50byB0ZXN0IGNhc2VzIHRoYXQgY2FuIHNo
YXJlIGRhdGEKKyAgICBhbmQgc3Vicm91dGluZXMuIFRoaXMgY29tbW9uIHBhdHRlcm4gaXMgZWFz
eSB0byByZWNvZ25pemUgYW5kIG1ha2VzIHRlc3RzCisgICAgZWFzeSB0byBtYWludGFpbi4gU3Vj
aCBjb25zaXN0ZW5jeSBpcyBlc3BlY2lhbGx5IGhlbHBmdWwgd2hlbiBwZW9wbGUgc3dpdGNoCisg
ICAgcHJvamVjdHMgYW5kIHN0YXJ0IHRvIHdvcmsgb24gYSBuZXcgY29kZSBiYXNlLgorMS4gIFRl
c3RzIHNob3VsZCBiZSAqcG9ydGFibGUqIGFuZCAqcmV1c2FibGUqLiBHb29nbGUgaGFzIGEgbG90
IG9mIGNvZGUgdGhhdCBpcworICAgIHBsYXRmb3JtLW5ldXRyYWwsIGl0cyB0ZXN0cyBzaG91bGQg
YWxzbyBiZSBwbGF0Zm9ybS1uZXV0cmFsLiBnb29nbGV0ZXN0CisgICAgd29ya3Mgb24gZGlmZmVy
ZW50IE9TZXMsIHdpdGggZGlmZmVyZW50IGNvbXBpbGVycyAoZ2NjLCBpY2MsIGFuZCBNU1ZDKSwg
d2l0aAorICAgIG9yIHdpdGhvdXQgZXhjZXB0aW9ucywgc28gZ29vZ2xldGVzdCB0ZXN0cyBjYW4g
ZWFzaWx5IHdvcmsgd2l0aCBhIHZhcmlldHkgb2YKKyAgICBjb25maWd1cmF0aW9ucy4KKzEuICBX
aGVuIHRlc3RzIGZhaWwsIHRoZXkgc2hvdWxkIHByb3ZpZGUgYXMgbXVjaCAqaW5mb3JtYXRpb24q
IGFib3V0IHRoZSBwcm9ibGVtCisgICAgYXMgcG9zc2libGUuIGdvb2dsZXRlc3QgZG9lc24ndCBz
dG9wIGF0IHRoZSBmaXJzdCB0ZXN0IGZhaWx1cmUuIEluc3RlYWQsIGl0CisgICAgb25seSBzdG9w
cyB0aGUgY3VycmVudCB0ZXN0IGFuZCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dC4gWW91IGNhbiBh
bHNvIHNldCB1cAorICAgIHRlc3RzIHRoYXQgcmVwb3J0IG5vbi1mYXRhbCBmYWlsdXJlcyBhZnRl
ciB3aGljaCB0aGUgY3VycmVudCB0ZXN0IGNvbnRpbnVlcy4KKyAgICBUaHVzLCB5b3UgY2FuIGRl
dGVjdCBhbmQgZml4IG11bHRpcGxlIGJ1Z3MgaW4gYSBzaW5nbGUgcnVuLWVkaXQtY29tcGlsZQor
ICAgIGN5Y2xlLgorMS4gIFRoZSB0ZXN0aW5nIGZyYW1ld29yayBzaG91bGQgbGliZXJhdGUgdGVz
dCB3cml0ZXJzIGZyb20gaG91c2VrZWVwaW5nIGNob3JlcworICAgIGFuZCBsZXQgdGhlbSBmb2N1
cyBvbiB0aGUgdGVzdCAqY29udGVudCouIGdvb2dsZXRlc3QgYXV0b21hdGljYWxseSBrZWVwcwor
ICAgIHRyYWNrIG9mIGFsbCB0ZXN0cyBkZWZpbmVkLCBhbmQgZG9lc24ndCByZXF1aXJlIHRoZSB1
c2VyIHRvIGVudW1lcmF0ZSB0aGVtCisgICAgaW4gb3JkZXIgdG8gcnVuIHRoZW0uCisxLiAgVGVz
dHMgc2hvdWxkIGJlICpmYXN0Ki4gV2l0aCBnb29nbGV0ZXN0LCB5b3UgY2FuIHJldXNlIHNoYXJl
ZCByZXNvdXJjZXMKKyAgICBhY3Jvc3MgdGVzdHMgYW5kIHBheSBmb3IgdGhlIHNldC11cC90ZWFy
LWRvd24gb25seSBvbmNlLCB3aXRob3V0IG1ha2luZworICAgIHRlc3RzIGRlcGVuZCBvbiBlYWNo
IG90aGVyLgorCitTaW5jZSBnb29nbGV0ZXN0IGlzIGJhc2VkIG9uIHRoZSBwb3B1bGFyIHhVbml0
IGFyY2hpdGVjdHVyZSwgeW91J2xsIGZlZWwgcmlnaHQKK2F0IGhvbWUgaWYgeW91J3ZlIHVzZWQg
SlVuaXQgb3IgUHlVbml0IGJlZm9yZS4gSWYgbm90LCBpdCB3aWxsIHRha2UgeW91IGFib3V0IDEw
CittaW51dGVzIHRvIGxlYXJuIHRoZSBiYXNpY3MgYW5kIGdldCBzdGFydGVkLiBTbyBsZXQncyBn
byEKKworIyMgQmV3YXJlIG9mIHRoZSBub21lbmNsYXR1cmUKKworX05vdGU6XyBUaGVyZSBtaWdo
dCBiZSBzb21lIGNvbmZ1c2lvbiBvZiBpZGVhIGR1ZSB0byBkaWZmZXJlbnQKK2RlZmluaXRpb25z
IG9mIHRoZSB0ZXJtcyBfVGVzdF8sIF9UZXN0IENhc2VfIGFuZCBfVGVzdCBTdWl0ZV8sIHNvIGJl
d2FyZQorb2YgbWlzdW5kZXJzdGFuZGluZyB0aGVzZS4KKworSGlzdG9yaWNhbGx5LCBnb29nbGV0
ZXN0IHN0YXJ0ZWQgdG8gdXNlIHRoZSB0ZXJtIF9UZXN0IENhc2VfIGZvciBncm91cGluZworcmVs
YXRlZCB0ZXN0cywgd2hlcmVhcyBjdXJyZW50IHB1YmxpY2F0aW9ucyBpbmNsdWRpbmcgdGhlIElu
dGVybmF0aW9uYWwgU29mdHdhcmUKK1Rlc3RpbmcgUXVhbGlmaWNhdGlvbnMgQm9hcmQgKFtJU1RR
Ql0oaHR0cDovL3d3dy5pc3RxYi5vcmcvKSkgYW5kIHZhcmlvdXMKK3RleHRib29rcyBvbiBTb2Z0
d2FyZSBRdWFsaXR5IHVzZSB0aGUgdGVybSBfW1Rlc3QKK1N1aXRlXShodHRwOi8vZ2xvc3Nhcnku
aXN0cWIub3JnL3NlYXJjaC90ZXN0JTIwc3VpdGUpXyBmb3IgdGhpcy4KKworVGhlIHJlbGF0ZWQg
dGVybSBfVGVzdF8sIGFzIGl0IGlzIHVzZWQgaW4gdGhlIGdvb2dsZXRlc3QsIGlzIGNvcnJlc3Bv
bmRpbmcgdG8KK3RoZSB0ZXJtIF9bVGVzdCBDYXNlXShodHRwOi8vZ2xvc3NhcnkuaXN0cWIub3Jn
L3NlYXJjaC90ZXN0JTIwY2FzZSlfIG9mIElTVFFCCithbmQgb3RoZXJzLgorCitUaGUgdGVybSBf
VGVzdF8gaXMgY29tbW9ubHkgb2YgYnJvYWQgZW5vdWdoIHNlbnNlLCBpbmNsdWRpbmcgSVNUUUIn
cworZGVmaW5pdGlvbiBvZiBfVGVzdCBDYXNlXywgc28gaXQncyBub3QgbXVjaCBvZiBhIHByb2Js
ZW0gaGVyZS4gQnV0IHRoZQordGVybSBfVGVzdCBDYXNlXyBhcyB1c2VkIGluIEdvb2dsZSBUZXN0
IGlzIG9mIGNvbnRyYWRpY3Rvcnkgc2Vuc2UgYW5kIHRodXMgY29uZnVzaW5nLgorCitVbmZvcnR1
bmF0ZWx5IHJlcGxhY2luZyB0aGUgdGVybSBfVGVzdCBDYXNlXyBieSBfVGVzdCBTdWl0ZV8gdGhy
b3VnaG91dCB0aGUKK2dvb2dsZXRlc3QgaXMgbm90IGVhc3kgd2l0aG91dCBicmVha2luZyBkZXBl
bmRlbnQgcHJvamVjdHMsIGFzIGBUZXN0Q2FzZWAgaXMKK3BhcnQgb2YgdGhlIHB1YmxpYyBBUEkg
YXQgdmFyaW91cyBwbGFjZXMuCisKK1NvIGZvciB0aGUgdGltZSBiZWluZywgcGxlYXNlIGJlIGF3
YXJlIG9mIHRoZSBkaWZmZXJlbnQgZGVmaW5pdGlvbnMgb2YKK3RoZSB0ZXJtczoKKworTWVhbmlu
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgZ29vZ2xldGVzdCBUZXJtICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IFtJU1RRQl0oaHR0cDovL3d3dy5pc3RxYi5vcmcvKSBUZXJtCis6
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KK0V4ZXJjaXNlIGEgcGFydGljdWxhciBwcm9ncmFtIHBhdGggd2l0aCBzcGVjaWZpYyBpbnB1
dCB2YWx1ZXMgYW5kIHZlcmlmeSB0aGUgcmVzdWx0cyB8IFtURVNUKCldKCNzaW1wbGUtdGVzdHMp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbVGVzdCBDYXNlXShodHRwOi8vZ2xvc3Nhcnku
aXN0cWIub3JnL3NlYXJjaC90ZXN0JTIwY2FzZSkKK0Egc2V0IG9mIHNldmVyYWwgdGVzdHMgcmVs
YXRlZCB0byBvbmUgY29tcG9uZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IFtUZXN0Q2FzZV0oI2Jhc2ljLWNvbmNlcHRzKSB8IFtUZXN0U3VpdGVdKGh0dHA6Ly9nbG9z
c2FyeS5pc3RxYi5vcmcvc2VhcmNoL3Rlc3QlMjBzdWl0ZSkKKworIyMgQmFzaWMgQ29uY2VwdHMK
KworV2hlbiB1c2luZyBnb29nbGV0ZXN0LCB5b3Ugc3RhcnQgYnkgd3JpdGluZyAqYXNzZXJ0aW9u
cyosIHdoaWNoIGFyZSBzdGF0ZW1lbnRzCit0aGF0IGNoZWNrIHdoZXRoZXIgYSBjb25kaXRpb24g
aXMgdHJ1ZS4gQW4gYXNzZXJ0aW9uJ3MgcmVzdWx0IGNhbiBiZSAqc3VjY2VzcyosCisqbm9uZmF0
YWwgZmFpbHVyZSosIG9yICpmYXRhbCBmYWlsdXJlKi4gSWYgYSBmYXRhbCBmYWlsdXJlIG9jY3Vy
cywgaXQgYWJvcnRzIHRoZQorY3VycmVudCBmdW5jdGlvbjsgb3RoZXJ3aXNlIHRoZSBwcm9ncmFt
IGNvbnRpbnVlcyBub3JtYWxseS4KKworKlRlc3RzKiB1c2UgYXNzZXJ0aW9ucyB0byB2ZXJpZnkg
dGhlIHRlc3RlZCBjb2RlJ3MgYmVoYXZpb3IuIElmIGEgdGVzdCBjcmFzaGVzCitvciBoYXMgYSBm
YWlsZWQgYXNzZXJ0aW9uLCB0aGVuIGl0ICpmYWlscyo7IG90aGVyd2lzZSBpdCAqc3VjY2VlZHMq
LgorCitBICp0ZXN0IGNhc2UqIGNvbnRhaW5zIG9uZSBvciBtYW55IHRlc3RzLiBZb3Ugc2hvdWxk
IGdyb3VwIHlvdXIgdGVzdHMgaW50byB0ZXN0CitjYXNlcyB0aGF0IHJlZmxlY3QgdGhlIHN0cnVj
dHVyZSBvZiB0aGUgdGVzdGVkIGNvZGUuIFdoZW4gbXVsdGlwbGUgdGVzdHMgaW4gYQordGVzdCBj
YXNlIG5lZWQgdG8gc2hhcmUgY29tbW9uIG9iamVjdHMgYW5kIHN1YnJvdXRpbmVzLCB5b3UgY2Fu
IHB1dCB0aGVtIGludG8gYQorKnRlc3QgZml4dHVyZSogY2xhc3MuCisKK0EgKnRlc3QgcHJvZ3Jh
bSogY2FuIGNvbnRhaW4gbXVsdGlwbGUgdGVzdCBjYXNlcy4KKworV2UnbGwgbm93IGV4cGxhaW4g
aG93IHRvIHdyaXRlIGEgdGVzdCBwcm9ncmFtLCBzdGFydGluZyBhdCB0aGUgaW5kaXZpZHVhbAor
YXNzZXJ0aW9uIGxldmVsIGFuZCBidWlsZGluZyB1cCB0byB0ZXN0cyBhbmQgdGVzdCBjYXNlcy4K
KworIyMgQXNzZXJ0aW9ucworCitnb29nbGV0ZXN0IGFzc2VydGlvbnMgYXJlIG1hY3JvcyB0aGF0
IHJlc2VtYmxlIGZ1bmN0aW9uIGNhbGxzLiBZb3UgdGVzdCBhIGNsYXNzCitvciBmdW5jdGlvbiBi
eSBtYWtpbmcgYXNzZXJ0aW9ucyBhYm91dCBpdHMgYmVoYXZpb3IuIFdoZW4gYW4gYXNzZXJ0aW9u
IGZhaWxzLAorZ29vZ2xldGVzdCBwcmludHMgdGhlIGFzc2VydGlvbidzIHNvdXJjZSBmaWxlIGFu
ZCBsaW5lIG51bWJlciBsb2NhdGlvbiwgYWxvbmcKK3dpdGggYSBmYWlsdXJlIG1lc3NhZ2UuIFlv
dSBtYXkgYWxzbyBzdXBwbHkgYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlIHdoaWNoIHdpbGwKK2Jl
IGFwcGVuZGVkIHRvIGdvb2dsZXRlc3QncyBtZXNzYWdlLgorCitUaGUgYXNzZXJ0aW9ucyBjb21l
IGluIHBhaXJzIHRoYXQgdGVzdCB0aGUgc2FtZSB0aGluZyBidXQgaGF2ZSBkaWZmZXJlbnQgZWZm
ZWN0cworb24gdGhlIGN1cnJlbnQgZnVuY3Rpb24uIGBBU1NFUlRfKmAgdmVyc2lvbnMgZ2VuZXJh
dGUgZmF0YWwgZmFpbHVyZXMgd2hlbiB0aGV5CitmYWlsLCBhbmQgKiphYm9ydCB0aGUgY3VycmVu
dCBmdW5jdGlvbioqLiBgRVhQRUNUXypgIHZlcnNpb25zIGdlbmVyYXRlIG5vbmZhdGFsCitmYWls
dXJlcywgd2hpY2ggZG9uJ3QgYWJvcnQgdGhlIGN1cnJlbnQgZnVuY3Rpb24uIFVzdWFsbHkgYEVY
UEVDVF8qYCBhcmUKK3ByZWZlcnJlZCwgYXMgdGhleSBhbGxvdyBtb3JlIHRoYW4gb25lIGZhaWx1
cmUgdG8gYmUgcmVwb3J0ZWQgaW4gYSB0ZXN0LgorSG93ZXZlciwgeW91IHNob3VsZCB1c2UgYEFT
U0VSVF8qYCBpZiBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gY29udGludWUgd2hlbiB0aGUKK2Fz
c2VydGlvbiBpbiBxdWVzdGlvbiBmYWlscy4KKworU2luY2UgYSBmYWlsZWQgYEFTU0VSVF8qYCBy
ZXR1cm5zIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gaW1tZWRpYXRlbHksCitwb3NzaWJseSBz
a2lwcGluZyBjbGVhbi11cCBjb2RlIHRoYXQgY29tZXMgYWZ0ZXIgaXQsIGl0IG1heSBjYXVzZSBh
IHNwYWNlIGxlYWsuCitEZXBlbmRpbmcgb24gdGhlIG5hdHVyZSBvZiB0aGUgbGVhaywgaXQgbWF5
IG9yIG1heSBub3QgYmUgd29ydGggZml4aW5nIC0gc28ga2VlcAordGhpcyBpbiBtaW5kIGlmIHlv
dSBnZXQgYSBoZWFwIGNoZWNrZXIgZXJyb3IgaW4gYWRkaXRpb24gdG8gYXNzZXJ0aW9uIGVycm9y
cy4KKworVG8gcHJvdmlkZSBhIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2UsIHNpbXBseSBzdHJlYW0g
aXQgaW50byB0aGUgbWFjcm8gdXNpbmcgdGhlCitgPDxgIG9wZXJhdG9yLCBvciBhIHNlcXVlbmNl
IG9mIHN1Y2ggb3BlcmF0b3JzLiBBbiBleGFtcGxlOgorCitgYGBjKysKK0FTU0VSVF9FUSh4LnNp
emUoKSwgeS5zaXplKCkpIDw8ICJWZWN0b3JzIHggYW5kIHkgYXJlIG9mIHVuZXF1YWwgbGVuZ3Ro
IjsKKworZm9yIChpbnQgaSA9IDA7IGkgPCB4LnNpemUoKTsgKytpKSB7CisgIEVYUEVDVF9FUSh4
W2ldLCB5W2ldKSA8PCAiVmVjdG9ycyB4IGFuZCB5IGRpZmZlciBhdCBpbmRleCAiIDw8IGk7Cit9
CitgYGAKKworQW55dGhpbmcgdGhhdCBjYW4gYmUgc3RyZWFtZWQgdG8gYW4gYG9zdHJlYW1gIGNh
biBiZSBzdHJlYW1lZCB0byBhbiBhc3NlcnRpb24KK21hY3JvLS1pbiBwYXJ0aWN1bGFyLCBDIHN0
cmluZ3MgYW5kIGBzdHJpbmdgIG9iamVjdHMuIElmIGEgd2lkZSBzdHJpbmcKKyhgd2NoYXJfdCpg
LCBgVENIQVIqYCBpbiBgVU5JQ09ERWAgbW9kZSBvbiBXaW5kb3dzLCBvciBgc3RkOjp3c3RyaW5n
YCkgaXMKK3N0cmVhbWVkIHRvIGFuIGFzc2VydGlvbiwgaXQgd2lsbCBiZSB0cmFuc2xhdGVkIHRv
IFVURi04IHdoZW4gcHJpbnRlZC4KKworIyMjIEJhc2ljIEFzc2VydGlvbnMKKworVGhlc2UgYXNz
ZXJ0aW9ucyBkbyBiYXNpYyB0cnVlL2ZhbHNlIGNvbmRpdGlvbiB0ZXN0aW5nLgorCitGYXRhbCBh
c3NlcnRpb24gICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAgICAgIHwgVmVyaWZp
ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLQorYEFTU0VSVF9UUlVFKGNvbmRpdGlvbik7YCAgfCBg
RVhQRUNUX1RSVUUoY29uZGl0aW9uKTtgICB8IGBjb25kaXRpb25gIGlzIHRydWUKK2BBU1NFUlRf
RkFMU0UoY29uZGl0aW9uKTtgIHwgYEVYUEVDVF9GQUxTRShjb25kaXRpb24pO2AgfCBgY29uZGl0
aW9uYCBpcyBmYWxzZQorCitSZW1lbWJlciwgd2hlbiB0aGV5IGZhaWwsIGBBU1NFUlRfKmAgeWll
bGRzIGEgZmF0YWwgZmFpbHVyZSBhbmQgcmV0dXJucyBmcm9tIHRoZQorY3VycmVudCBmdW5jdGlv
biwgd2hpbGUgYEVYUEVDVF8qYCB5aWVsZHMgYSBub25mYXRhbCBmYWlsdXJlLCBhbGxvd2luZyB0
aGUKK2Z1bmN0aW9uIHRvIGNvbnRpbnVlIHJ1bm5pbmcuIEluIGVpdGhlciBjYXNlLCBhbiBhc3Nl
cnRpb24gZmFpbHVyZSBtZWFucyBpdHMKK2NvbnRhaW5pbmcgdGVzdCBmYWlscy4KKworKipBdmFp
bGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIEJpbmFyeSBDb21wYXJpc29u
CisKK1RoaXMgc2VjdGlvbiBkZXNjcmliZXMgYXNzZXJ0aW9ucyB0aGF0IGNvbXBhcmUgdHdvIHZh
bHVlcy4KKworRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAg
ICAgIHwgVmVyaWZpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tCitgQVNTRVJUX0VRKHZhbDEsIHZhbDIpO2AgfCBg
RVhQRUNUX0VRKHZhbDEsIHZhbDIpO2AgfCBgdmFsMSA9PSB2YWwyYAorYEFTU0VSVF9ORSh2YWwx
LCB2YWwyKTtgIHwgYEVYUEVDVF9ORSh2YWwxLCB2YWwyKTtgIHwgYHZhbDEgIT0gdmFsMmAKK2BB
U1NFUlRfTFQodmFsMSwgdmFsMik7YCB8IGBFWFBFQ1RfTFQodmFsMSwgdmFsMik7YCB8IGB2YWwx
IDwgdmFsMmAKK2BBU1NFUlRfTEUodmFsMSwgdmFsMik7YCB8IGBFWFBFQ1RfTEUodmFsMSwgdmFs
Mik7YCB8IGB2YWwxIDw9IHZhbDJgCitgQVNTRVJUX0dUKHZhbDEsIHZhbDIpO2AgfCBgRVhQRUNU
X0dUKHZhbDEsIHZhbDIpO2AgfCBgdmFsMSA+IHZhbDJgCitgQVNTRVJUX0dFKHZhbDEsIHZhbDIp
O2AgfCBgRVhQRUNUX0dFKHZhbDEsIHZhbDIpO2AgfCBgdmFsMSA+PSB2YWwyYAorCitWYWx1ZSBh
cmd1bWVudHMgbXVzdCBiZSBjb21wYXJhYmxlIGJ5IHRoZSBhc3NlcnRpb24ncyBjb21wYXJpc29u
IG9wZXJhdG9yIG9yCit5b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IuIFdlIHVzZWQgdG8gcmVx
dWlyZSB0aGUgYXJndW1lbnRzIHRvIHN1cHBvcnQgdGhlCitgPDxgIG9wZXJhdG9yIGZvciBzdHJl
YW1pbmcgdG8gYW4gYG9zdHJlYW1gLCBidXQgaXQncyBubyBsb25nZXIgbmVjZXNzYXJ5LiBJZgor
YDw8YCBpcyBzdXBwb3J0ZWQsIGl0IHdpbGwgYmUgY2FsbGVkIHRvIHByaW50IHRoZSBhcmd1bWVu
dHMgd2hlbiB0aGUgYXNzZXJ0aW9uCitmYWlsczsgb3RoZXJ3aXNlIGdvb2dsZXRlc3Qgd2lsbCBh
dHRlbXB0IHRvIHByaW50IHRoZW0gaW4gdGhlIGJlc3Qgd2F5IGl0IGNhbi4KK0ZvciBtb3JlIGRl
dGFpbHMgYW5kIGhvdyB0byBjdXN0b21pemUgdGhlIHByaW50aW5nIG9mIHRoZSBhcmd1bWVudHMs
IHNlZQorZ01vY2sgW3JlY2lwZV0oLi4vLi4vZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3Rl
YWNoaW5nLWdvb2dsZS1tb2NrLWhvdy10by1wcmludC15b3VyLXZhbHVlcykuKS4KKworVGhlc2Ug
YXNzZXJ0aW9ucyBjYW4gd29yayB3aXRoIGEgdXNlci1kZWZpbmVkIHR5cGUsIGJ1dCBvbmx5IGlm
IHlvdSBkZWZpbmUgdGhlCitjb3JyZXNwb25kaW5nIGNvbXBhcmlzb24gb3BlcmF0b3IgKGUuZy4g
YD09YCwgYDxgLCBldGMpLiBTaW5jZSB0aGlzIGlzCitkaXNjb3VyYWdlZCBieSB0aGUgR29vZ2xl
IFtDKysgU3R5bGUKK0d1aWRlXShodHRwczovL2dvb2dsZS5naXRodWIuaW8vc3R5bGVndWlkZS9j
cHBndWlkZS5odG1sI09wZXJhdG9yX092ZXJsb2FkaW5nKSwKK3lvdSBtYXkgbmVlZCB0byB1c2Ug
YEFTU0VSVF9UUlVFKClgIG9yIGBFWFBFQ1RfVFJVRSgpYCB0byBhc3NlcnQgdGhlIGVxdWFsaXR5
IG9mCit0d28gb2JqZWN0cyBvZiBhIHVzZXItZGVmaW5lZCB0eXBlLgorCitIb3dldmVyLCB3aGVu
IHBvc3NpYmxlLCBgQVNTRVJUX0VRKGFjdHVhbCwgZXhwZWN0ZWQpYCBpcyBwcmVmZXJyZWQgdG8K
K2BBU1NFUlRfVFJVRShhY3R1YWwgPT0gZXhwZWN0ZWQpYCwgc2luY2UgaXQgdGVsbHMgeW91IGBh
Y3R1YWxgIGFuZCBgZXhwZWN0ZWRgJ3MKK3ZhbHVlcyBvbiBmYWlsdXJlLgorCitBcmd1bWVudHMg
YXJlIGFsd2F5cyBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLiBUaGVyZWZvcmUsIGl0J3MgT0sgZm9y
IHRoZQorYXJndW1lbnRzIHRvIGhhdmUgc2lkZSBlZmZlY3RzLiBIb3dldmVyLCBhcyB3aXRoIGFu
eSBvcmRpbmFyeSBDL0MrKyBmdW5jdGlvbiwKK3RoZSBhcmd1bWVudHMnIGV2YWx1YXRpb24gb3Jk
ZXIgaXMgdW5kZWZpbmVkIChpLmUuIHRoZSBjb21waWxlciBpcyBmcmVlIHRvCitjaG9vc2UgYW55
IG9yZGVyKSBhbmQgeW91ciBjb2RlIHNob3VsZCBub3QgZGVwZW5kIG9uIGFueSBwYXJ0aWN1bGFy
IGFyZ3VtZW50CitldmFsdWF0aW9uIG9yZGVyLgorCitgQVNTRVJUX0VRKClgIGRvZXMgcG9pbnRl
ciBlcXVhbGl0eSBvbiBwb2ludGVycy4gSWYgdXNlZCBvbiB0d28gQyBzdHJpbmdzLCBpdAordGVz
dHMgaWYgdGhleSBhcmUgaW4gdGhlIHNhbWUgbWVtb3J5IGxvY2F0aW9uLCBub3QgaWYgdGhleSBo
YXZlIHRoZSBzYW1lIHZhbHVlLgorVGhlcmVmb3JlLCBpZiB5b3Ugd2FudCB0byBjb21wYXJlIEMg
c3RyaW5ncyAoZS5nLiBgY29uc3QgY2hhcipgKSBieSB2YWx1ZSwgdXNlCitgQVNTRVJUX1NUUkVR
KClgLCB3aGljaCB3aWxsIGJlIGRlc2NyaWJlZCBsYXRlciBvbi4gSW4gcGFydGljdWxhciwgdG8g
YXNzZXJ0Cit0aGF0IGEgQyBzdHJpbmcgaXMgYE5VTExgLCB1c2UgYEFTU0VSVF9TVFJFUShjX3N0
cmluZywgTlVMTClgLiBDb25zaWRlciB1c2UKK2BBU1NFUlRfRVEoY19zdHJpbmcsIG51bGxwdHIp
YCBpZiBjKysxMSBpcyBzdXBwb3J0ZWQuIFRvIGNvbXBhcmUgdHdvIGBzdHJpbmdgCitvYmplY3Rz
LCB5b3Ugc2hvdWxkIHVzZSBgQVNTRVJUX0VRYC4KKworV2hlbiBkb2luZyBwb2ludGVyIGNvbXBh
cmlzb25zIHVzZSBgKl9FUShwdHIsIG51bGxwdHIpYCBhbmQgYCpfTkUocHRyLCBudWxscHRyKWAK
K2luc3RlYWQgb2YgYCpfRVEocHRyLCBOVUxMKWAgYW5kIGAqX05FKHB0ciwgTlVMTClgLiBUaGlz
IGlzIGJlY2F1c2UgYG51bGxwdHJgIGlzCit0eXBlZCB3aGlsZSBgTlVMTGAgaXMgbm90LiBTZWUg
W0ZBUV0oZmFxLm1kI3doeS1kb2VzLWdvb2dsZS10ZXN0LXN1cHBvcnQtZXhwZWN0X2VxbnVsbC1w
dHItYW5kLWFzc2VydF9lcW51bGwtcHRyLWJ1dC1ub3QtZXhwZWN0X25lbnVsbC1wdHItYW5kLWFz
c2VydF9uZW51bGwtcHRyKQorZm9yIG1vcmUgZGV0YWlscy4KKworSWYgeW91J3JlIHdvcmtpbmcg
d2l0aCBmbG9hdGluZyBwb2ludCBudW1iZXJzLCB5b3UgbWF5IHdhbnQgdG8gdXNlIHRoZSBmbG9h
dGluZworcG9pbnQgdmFyaWF0aW9ucyBvZiBzb21lIG9mIHRoZXNlIG1hY3JvcyBpbiBvcmRlciB0
byBhdm9pZCBwcm9ibGVtcyBjYXVzZWQgYnkKK3JvdW5kaW5nLiBTZWUgW0FkdmFuY2VkIGdvb2ds
ZXRlc3QgVG9waWNzXShhZHZhbmNlZC5tZCkgZm9yIGRldGFpbHMuCisKK01hY3JvcyBpbiB0aGlz
IHNlY3Rpb24gd29yayB3aXRoIGJvdGggbmFycm93IGFuZCB3aWRlIHN0cmluZyBvYmplY3RzIChg
c3RyaW5nYAorYW5kIGB3c3RyaW5nYCkuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5k
b3dzLCBNYWMuCisKKyoqSGlzdG9yaWNhbCBub3RlKio6IEJlZm9yZSBGZWJydWFyeSAyMDE2IGAq
X0VRYCBoYWQgYSBjb252ZW50aW9uIG9mIGNhbGxpbmcgaXQKK2FzIGBBU1NFUlRfRVEoZXhwZWN0
ZWQsIGFjdHVhbClgLCBzbyBsb3RzIG9mIGV4aXN0aW5nIGNvZGUgdXNlcyB0aGlzIG9yZGVyLiBO
b3cKK2AqX0VRYCB0cmVhdHMgYm90aCBwYXJhbWV0ZXJzIGluIHRoZSBzYW1lIHdheS4KKworIyMj
IFN0cmluZyBDb21wYXJpc29uCisKK1RoZSBhc3NlcnRpb25zIGluIHRoaXMgZ3JvdXAgY29tcGFy
ZSB0d28gKipDIHN0cmluZ3MqKi4gSWYgeW91IHdhbnQgdG8gY29tcGFyZQordHdvIGBzdHJpbmdg
IG9iamVjdHMsIHVzZSBgRVhQRUNUX0VRYCwgYEVYUEVDVF9ORWAsIGFuZCBldGMgaW5zdGVhZC4K
KworfCBGYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9u
ICAgICAgICAgICAgICB8IFZlcmlmaWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKK3wgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8Cit8IGBBU1NFUlRfU1RSRVEoc3RyMSwg
c3RyMik7YCAgICAgfCBgRVhQRUNUX1NUUkVRKHN0cjEsIHN0cjIpO2AgICAgIHwgdGhlIHR3byBD
IHN0cmluZ3MgaGF2ZSB0aGUgc2FtZSBjb250ZW50ICAgICAgICAgICAgICAgICAgfAorfCBgQVNT
RVJUX1NUUk5FKHN0cjEsIHN0cjIpO2AgICAgIHwgYEVYUEVDVF9TVFJORShzdHIxLCBzdHIyKTtg
ICAgICB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUgZGlmZmVyZW50IGNvbnRlbnRzICAgICAgICAg
ICAgICAgIHwKK3wgYEFTU0VSVF9TVFJDQVNFRVEoc3RyMSwgc3RyMik7YCB8IGBFWFBFQ1RfU1RS
Q0FTRUVRKHN0cjEsIHN0cjIpO2AgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIHRoZSBzYW1lIGNv
bnRlbnQsIGlnbm9yaW5nIGNhc2UgICB8Cit8IGBBU1NFUlRfU1RSQ0FTRU5FKHN0cjEsIHN0cjIp
O2AgfCBgRVhQRUNUX1NUUkNBU0VORShzdHIxLCBzdHIyKTtgIHwgdGhlIHR3byBDIHN0cmluZ3Mg
aGF2ZSBkaWZmZXJlbnQgY29udGVudHMsIGlnbm9yaW5nIGNhc2UgfAorCitOb3RlIHRoYXQgIkNB
U0UiIGluIGFuIGFzc2VydGlvbiBuYW1lIG1lYW5zIHRoYXQgY2FzZSBpcyBpZ25vcmVkLiBBIGBO
VUxMYAorcG9pbnRlciBhbmQgYW4gZW1wdHkgc3RyaW5nIGFyZSBjb25zaWRlcmVkICpkaWZmZXJl
bnQqLgorCitgKlNUUkVRKmAgYW5kIGAqU1RSTkUqYCBhbHNvIGFjY2VwdCB3aWRlIEMgc3RyaW5n
cyAoYHdjaGFyX3QqYCkuIElmIGEgY29tcGFyaXNvbgorb2YgdHdvIHdpZGUgc3RyaW5ncyBmYWls
cywgdGhlaXIgdmFsdWVzIHdpbGwgYmUgcHJpbnRlZCBhcyBVVEYtOCBuYXJyb3cgc3RyaW5ncy4K
KworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworKipTZWUgYWxzbyoq
OiBGb3IgbW9yZSBzdHJpbmcgY29tcGFyaXNvbiB0cmlja3MgKHN1YnN0cmluZywgcHJlZml4LCBz
dWZmaXgsIGFuZAorcmVndWxhciBleHByZXNzaW9uIG1hdGNoaW5nLCBmb3IgZXhhbXBsZSksIHNl
ZQorW3RoaXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9ibG9iL21hc3Rl
ci9nb29nbGV0ZXN0L2RvY3MvYWR2YW5jZWQubWQpCitpbiB0aGUgQWR2YW5jZWQgZ29vZ2xldGVz
dCBHdWlkZS4KKworIyMgU2ltcGxlIFRlc3RzCisKK1RvIGNyZWF0ZSBhIHRlc3Q6CisKKzEuICBV
c2UgdGhlIGBURVNUKClgIG1hY3JvIHRvIGRlZmluZSBhbmQgbmFtZSBhIHRlc3QgZnVuY3Rpb24s
IFRoZXNlIGFyZQorICAgIG9yZGluYXJ5IEMrKyBmdW5jdGlvbnMgdGhhdCBkb24ndCByZXR1cm4g
YSB2YWx1ZS4KKzEuICBJbiB0aGlzIGZ1bmN0aW9uLCBhbG9uZyB3aXRoIGFueSB2YWxpZCBDKysg
c3RhdGVtZW50cyB5b3Ugd2FudCB0byBpbmNsdWRlLAorICAgIHVzZSB0aGUgdmFyaW91cyBnb29n
bGV0ZXN0IGFzc2VydGlvbnMgdG8gY2hlY2sgdmFsdWVzLgorMS4gIFRoZSB0ZXN0J3MgcmVzdWx0
IGlzIGRldGVybWluZWQgYnkgdGhlIGFzc2VydGlvbnM7IGlmIGFueSBhc3NlcnRpb24gaW4gdGhl
CisgICAgdGVzdCBmYWlscyAoZWl0aGVyIGZhdGFsbHkgb3Igbm9uLWZhdGFsbHkpLCBvciBpZiB0
aGUgdGVzdCBjcmFzaGVzLCB0aGUKKyAgICBlbnRpcmUgdGVzdCBmYWlscy4gT3RoZXJ3aXNlLCBp
dCBzdWNjZWVkcy4KKworYGBgYysrCitURVNUKFRlc3RDYXNlTmFtZSwgVGVzdE5hbWUpIHsKKyAg
Li4uIHRlc3QgYm9keSAuLi4KK30KK2BgYAorCitgVEVTVCgpYCBhcmd1bWVudHMgZ28gZnJvbSBn
ZW5lcmFsIHRvIHNwZWNpZmljLiBUaGUgKmZpcnN0KiBhcmd1bWVudCBpcyB0aGUgbmFtZQorb2Yg
dGhlIHRlc3QgY2FzZSwgYW5kIHRoZSAqc2Vjb25kKiBhcmd1bWVudCBpcyB0aGUgdGVzdCdzIG5h
bWUgd2l0aGluIHRoZSB0ZXN0CitjYXNlLiBCb3RoIG5hbWVzIG11c3QgYmUgdmFsaWQgQysrIGlk
ZW50aWZpZXJzLCBhbmQgdGhleSBzaG91bGQgbm90IGNvbnRhaW4KK3VuZGVyc2NvcmUgKGBfYCku
IEEgdGVzdCdzICpmdWxsIG5hbWUqIGNvbnNpc3RzIG9mIGl0cyBjb250YWluaW5nIHRlc3QgY2Fz
ZSBhbmQKK2l0cyBpbmRpdmlkdWFsIG5hbWUuIFRlc3RzIGZyb20gZGlmZmVyZW50IHRlc3QgY2Fz
ZXMgY2FuIGhhdmUgdGhlIHNhbWUKK2luZGl2aWR1YWwgbmFtZS4KKworRm9yIGV4YW1wbGUsIGxl
dCdzIHRha2UgYSBzaW1wbGUgaW50ZWdlciBmdW5jdGlvbjoKKworYGBgYysrCitpbnQgRmFjdG9y
aWFsKGludCBuKTsgIC8vIFJldHVybnMgdGhlIGZhY3RvcmlhbCBvZiBuCitgYGAKKworQSB0ZXN0
IGNhc2UgZm9yIHRoaXMgZnVuY3Rpb24gbWlnaHQgbG9vayBsaWtlOgorCitgYGBjKysKKy8vIFRl
c3RzIGZhY3RvcmlhbCBvZiAwLgorVEVTVChGYWN0b3JpYWxUZXN0LCBIYW5kbGVzWmVyb0lucHV0
KSB7CisgIEVYUEVDVF9FUShGYWN0b3JpYWwoMCksIDEpOworfQorCisvLyBUZXN0cyBmYWN0b3Jp
YWwgb2YgcG9zaXRpdmUgbnVtYmVycy4KK1RFU1QoRmFjdG9yaWFsVGVzdCwgSGFuZGxlc1Bvc2l0
aXZlSW5wdXQpIHsKKyAgRVhQRUNUX0VRKEZhY3RvcmlhbCgxKSwgMSk7CisgIEVYUEVDVF9FUShG
YWN0b3JpYWwoMiksIDIpOworICBFWFBFQ1RfRVEoRmFjdG9yaWFsKDMpLCA2KTsKKyAgRVhQRUNU
X0VRKEZhY3RvcmlhbCg4KSwgNDAzMjApOworfQorYGBgCisKK2dvb2dsZXRlc3QgZ3JvdXBzIHRo
ZSB0ZXN0IHJlc3VsdHMgYnkgdGVzdCBjYXNlcywgc28gbG9naWNhbGx5LXJlbGF0ZWQgdGVzdHMK
K3Nob3VsZCBiZSBpbiB0aGUgc2FtZSB0ZXN0IGNhc2U7IGluIG90aGVyIHdvcmRzLCB0aGUgZmly
c3QgYXJndW1lbnQgdG8gdGhlaXIKK2BURVNUKClgIHNob3VsZCBiZSB0aGUgc2FtZS4gSW4gdGhl
IGFib3ZlIGV4YW1wbGUsIHdlIGhhdmUgdHdvIHRlc3RzLAorYEhhbmRsZXNaZXJvSW5wdXRgIGFu
ZCBgSGFuZGxlc1Bvc2l0aXZlSW5wdXRgLCB0aGF0IGJlbG9uZyB0byB0aGUgc2FtZSB0ZXN0IGNh
c2UKK2BGYWN0b3JpYWxUZXN0YC4KKworV2hlbiBuYW1pbmcgeW91ciB0ZXN0IGNhc2VzIGFuZCB0
ZXN0cywgeW91IHNob3VsZCBmb2xsb3cgdGhlIHNhbWUgY29udmVudGlvbiBhcworZm9yIFtuYW1p
bmcgZnVuY3Rpb25zIGFuZAorY2xhc3Nlc10oaHR0cHM6Ly9nb29nbGUuZ2l0aHViLmlvL3N0eWxl
Z3VpZGUvY3BwZ3VpZGUuaHRtbCNGdW5jdGlvbl9OYW1lcykuCisKKyoqQXZhaWxhYmlsaXR5Kio6
IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIFRlc3QgRml4dHVyZXM6IFVzaW5nIHRoZSBTYW1l
IERhdGEgQ29uZmlndXJhdGlvbiBmb3IgTXVsdGlwbGUgVGVzdHMKKworSWYgeW91IGZpbmQgeW91
cnNlbGYgd3JpdGluZyB0d28gb3IgbW9yZSB0ZXN0cyB0aGF0IG9wZXJhdGUgb24gc2ltaWxhciBk
YXRhLCB5b3UKK2NhbiB1c2UgYSAqdGVzdCBmaXh0dXJlKi4gSXQgYWxsb3dzIHlvdSB0byByZXVz
ZSB0aGUgc2FtZSBjb25maWd1cmF0aW9uIG9mCitvYmplY3RzIGZvciBzZXZlcmFsIGRpZmZlcmVu
dCB0ZXN0cy4KKworVG8gY3JlYXRlIGEgZml4dHVyZToKKworMS4gIERlcml2ZSBhIGNsYXNzIGZy
b20gYDo6dGVzdGluZzo6VGVzdGAgLiBTdGFydCBpdHMgYm9keSB3aXRoIGBwcm90ZWN0ZWQ6YCBh
cworICAgIHdlJ2xsIHdhbnQgdG8gYWNjZXNzIGZpeHR1cmUgbWVtYmVycyBmcm9tIHN1Yi1jbGFz
c2VzLgorMS4gIEluc2lkZSB0aGUgY2xhc3MsIGRlY2xhcmUgYW55IG9iamVjdHMgeW91IHBsYW4g
dG8gdXNlLgorMS4gIElmIG5lY2Vzc2FyeSwgd3JpdGUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yIG9y
IGBTZXRVcCgpYCBmdW5jdGlvbiB0byBwcmVwYXJlCisgICAgdGhlIG9iamVjdHMgZm9yIGVhY2gg
dGVzdC4gQSBjb21tb24gbWlzdGFrZSBpcyB0byBzcGVsbCBgU2V0VXAoKWAgYXMKKyAgICAqKmBT
ZXR1cCgpYCoqIHdpdGggYSBzbWFsbCBgdWAgLSBVc2UgYG92ZXJyaWRlYCBpbiBDKysxMSB0byBt
YWtlIHN1cmUgeW91CisgICAgc3BlbGxlZCBpdCBjb3JyZWN0bHkKKzEuICBJZiBuZWNlc3Nhcnks
IHdyaXRlIGEgZGVzdHJ1Y3RvciBvciBgVGVhckRvd24oKWAgZnVuY3Rpb24gdG8gcmVsZWFzZSBh
bnkKKyAgICByZXNvdXJjZXMgeW91IGFsbG9jYXRlZCBpbiBgU2V0VXAoKWAgLiBUbyBsZWFybiB3
aGVuIHlvdSBzaG91bGQgdXNlIHRoZQorICAgIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgYW5kIHdo
ZW4geW91IHNob3VsZCB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAsIHJlYWQKKyAgICB0aGlzIFtG
QVFdKGZhcS5tZCNzaG91bGQtaS11c2UtdGhlLWNvbnN0cnVjdG9yZGVzdHJ1Y3Rvci1vZi10aGUt
dGVzdC1maXh0dXJlLW9yLXNldHVwdGVhcmRvd24pIGVudHJ5LgorMS4gIElmIG5lZWRlZCwgZGVm
aW5lIHN1YnJvdXRpbmVzIGZvciB5b3VyIHRlc3RzIHRvIHNoYXJlLgorCitXaGVuIHVzaW5nIGEg
Zml4dHVyZSwgdXNlIGBURVNUX0YoKWAgaW5zdGVhZCBvZiBgVEVTVCgpYCBhcyBpdCBhbGxvd3Mg
eW91IHRvCithY2Nlc3Mgb2JqZWN0cyBhbmQgc3Vicm91dGluZXMgaW4gdGhlIHRlc3QgZml4dHVy
ZToKKworYGBgYysrCitURVNUX0YoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSkgeworICAuLi4gdGVz
dCBib2R5IC4uLgorfQorYGBgCisKK0xpa2UgYFRFU1QoKWAsIHRoZSBmaXJzdCBhcmd1bWVudCBp
cyB0aGUgdGVzdCBjYXNlIG5hbWUsIGJ1dCBmb3IgYFRFU1RfRigpYCB0aGlzCittdXN0IGJlIHRo
ZSBuYW1lIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuIFlvdSd2ZSBwcm9iYWJseSBndWVzc2Vk
OiBgX0ZgIGlzIGZvcgorZml4dHVyZS4KKworVW5mb3J0dW5hdGVseSwgdGhlIEMrKyBtYWNybyBz
eXN0ZW0gZG9lcyBub3QgYWxsb3cgdXMgdG8gY3JlYXRlIGEgc2luZ2xlIG1hY3JvCit0aGF0IGNh
biBoYW5kbGUgYm90aCB0eXBlcyBvZiB0ZXN0cy4gVXNpbmcgdGhlIHdyb25nIG1hY3JvIGNhdXNl
cyBhIGNvbXBpbGVyCitlcnJvci4KKworQWxzbywgeW91IG11c3QgZmlyc3QgZGVmaW5lIGEgdGVz
dCBmaXh0dXJlIGNsYXNzIGJlZm9yZSB1c2luZyBpdCBpbiBhCitgVEVTVF9GKClgLCBvciB5b3Un
bGwgZ2V0IHRoZSBjb21waWxlciBlcnJvciAiYHZpcnR1YWwgb3V0c2lkZSBjbGFzcworZGVjbGFy
YXRpb25gIi4KKworRm9yIGVhY2ggdGVzdCBkZWZpbmVkIHdpdGggYFRFU1RfRigpYCAsIGdvb2ds
ZXRlc3Qgd2lsbCBjcmVhdGUgYSAqZnJlc2gqIHRlc3QKK2ZpeHR1cmUgYXQgcnVudGltZSwgaW1t
ZWRpYXRlbHkgaW5pdGlhbGl6ZSBpdCB2aWEgYFNldFVwKClgICwgcnVuIHRoZSB0ZXN0LAorY2xl
YW4gdXAgYnkgY2FsbGluZyBgVGVhckRvd24oKWAgLCBhbmQgdGhlbiBkZWxldGUgdGhlIHRlc3Qg
Zml4dHVyZS4gTm90ZSB0aGF0CitkaWZmZXJlbnQgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNl
IGhhdmUgZGlmZmVyZW50IHRlc3QgZml4dHVyZSBvYmplY3RzLCBhbmQKK2dvb2dsZXRlc3QgYWx3
YXlzIGRlbGV0ZXMgYSB0ZXN0IGZpeHR1cmUgYmVmb3JlIGl0IGNyZWF0ZXMgdGhlIG5leHQgb25l
LgorZ29vZ2xldGVzdCBkb2VzICoqbm90KiogcmV1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlIGZv
ciBtdWx0aXBsZSB0ZXN0cy4gQW55CitjaGFuZ2VzIG9uZSB0ZXN0IG1ha2VzIHRvIHRoZSBmaXh0
dXJlIGRvIG5vdCBhZmZlY3Qgb3RoZXIgdGVzdHMuCisKK0FzIGFuIGV4YW1wbGUsIGxldCdzIHdy
aXRlIHRlc3RzIGZvciBhIEZJRk8gcXVldWUgY2xhc3MgbmFtZWQgYFF1ZXVlYCwgd2hpY2ggaGFz
Cit0aGUgZm9sbG93aW5nIGludGVyZmFjZToKKworYGBgYysrCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RT4gIC8vIEUgaXMgdGhlIGVsZW1lbnQgdHlwZS4KK2NsYXNzIFF1ZXVlIHsKKyBwdWJsaWM6Cisg
IFF1ZXVlKCk7CisgIHZvaWQgRW5xdWV1ZShjb25zdCBFJiBlbGVtZW50KTsKKyAgRSogRGVxdWV1
ZSgpOyAgLy8gUmV0dXJucyBOVUxMIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eS4KKyAgc2l6ZV90IHNp
emUoKSBjb25zdDsKKyAgLi4uCit9OworYGBgCisKK0ZpcnN0LCBkZWZpbmUgYSBmaXh0dXJlIGNs
YXNzLiBCeSBjb252ZW50aW9uLCB5b3Ugc2hvdWxkIGdpdmUgaXQgdGhlIG5hbWUKK2BGb29UZXN0
YCB3aGVyZSBgRm9vYCBpcyB0aGUgY2xhc3MgYmVpbmcgdGVzdGVkLgorCitgYGBjKysKK2NsYXNz
IFF1ZXVlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdm9p
ZCBTZXRVcCgpIG92ZXJyaWRlIHsKKyAgICAgcTFfLkVucXVldWUoMSk7CisgICAgIHEyXy5FbnF1
ZXVlKDIpOworICAgICBxMl8uRW5xdWV1ZSgzKTsKKyAgfQorCisgIC8vIHZvaWQgVGVhckRvd24o
KSBvdmVycmlkZSB7fQorCisgIFF1ZXVlPGludD4gcTBfOworICBRdWV1ZTxpbnQ+IHExXzsKKyAg
UXVldWU8aW50PiBxMl87Cit9OworYGBgCisKK0luIHRoaXMgY2FzZSwgYFRlYXJEb3duKClgIGlz
IG5vdCBuZWVkZWQgc2luY2Ugd2UgZG9uJ3QgaGF2ZSB0byBjbGVhbiB1cCBhZnRlcgorZWFjaCB0
ZXN0LCBvdGhlciB0aGFuIHdoYXQncyBhbHJlYWR5IGRvbmUgYnkgdGhlIGRlc3RydWN0b3IuCisK
K05vdyB3ZSdsbCB3cml0ZSB0ZXN0cyB1c2luZyBgVEVTVF9GKClgIGFuZCB0aGlzIGZpeHR1cmUu
CisKK2BgYGMrKworVEVTVF9GKFF1ZXVlVGVzdCwgSXNFbXB0eUluaXRpYWxseSkgeworICBFWFBF
Q1RfRVEocTBfLnNpemUoKSwgMCk7Cit9CisKK1RFU1RfRihRdWV1ZVRlc3QsIERlcXVldWVXb3Jr
cykgeworICBpbnQqIG4gPSBxMF8uRGVxdWV1ZSgpOworICBFWFBFQ1RfRVEobiwgbnVsbHB0cik7
CisKKyAgbiA9IHExXy5EZXF1ZXVlKCk7CisgIEFTU0VSVF9ORShuLCBudWxscHRyKTsKKyAgRVhQ
RUNUX0VRKCpuLCAxKTsKKyAgRVhQRUNUX0VRKHExXy5zaXplKCksIDApOworICBkZWxldGUgbjsK
KworICBuID0gcTJfLkRlcXVldWUoKTsKKyAgQVNTRVJUX05FKG4sIG51bGxwdHIpOworICBFWFBF
Q1RfRVEoKm4sIDIpOworICBFWFBFQ1RfRVEocTJfLnNpemUoKSwgMSk7CisgIGRlbGV0ZSBuOwor
fQorYGBgCisKK1RoZSBhYm92ZSB1c2VzIGJvdGggYEFTU0VSVF8qYCBhbmQgYEVYUEVDVF8qYCBh
c3NlcnRpb25zLiBUaGUgcnVsZSBvZiB0aHVtYiBpcwordG8gdXNlIGBFWFBFQ1RfKmAgd2hlbiB5
b3Ugd2FudCB0aGUgdGVzdCB0byBjb250aW51ZSB0byByZXZlYWwgbW9yZSBlcnJvcnMgYWZ0ZXIK
K3RoZSBhc3NlcnRpb24gZmFpbHVyZSwgYW5kIHVzZSBgQVNTRVJUXypgIHdoZW4gY29udGludWlu
ZyBhZnRlciBmYWlsdXJlIGRvZXNuJ3QKK21ha2Ugc2Vuc2UuIEZvciBleGFtcGxlLCB0aGUgc2Vj
b25kIGFzc2VydGlvbiBpbiB0aGUgYERlcXVldWVgIHRlc3QgaXMKKz1BU1NFUlRfTkUobnVsbHB0
ciwgbik9LCBhcyB3ZSBuZWVkIHRvIGRlcmVmZXJlbmNlIHRoZSBwb2ludGVyIGBuYCBsYXRlciwg
d2hpY2gKK3dvdWxkIGxlYWQgdG8gYSBzZWdmYXVsdCB3aGVuIGBuYCBpcyBgTlVMTGAuCisKK1do
ZW4gdGhlc2UgdGVzdHMgcnVuLCB0aGUgZm9sbG93aW5nIGhhcHBlbnM6CisKKzEuICBnb29nbGV0
ZXN0IGNvbnN0cnVjdHMgYSBgUXVldWVUZXN0YCBvYmplY3QgKGxldCdzIGNhbGwgaXQgYHQxYCAp
LgorMS4gIGB0MS5TZXRVcCgpYCBpbml0aWFsaXplcyBgdDFgIC4KKzEuICBUaGUgZmlyc3QgdGVz
dCAoIGBJc0VtcHR5SW5pdGlhbGx5YCApIHJ1bnMgb24gYHQxYCAuCisxLiAgYHQxLlRlYXJEb3du
KClgIGNsZWFucyB1cCBhZnRlciB0aGUgdGVzdCBmaW5pc2hlcy4KKzEuICBgdDFgIGlzIGRlc3Ry
dWN0ZWQuCisxLiAgVGhlIGFib3ZlIHN0ZXBzIGFyZSByZXBlYXRlZCBvbiBhbm90aGVyIGBRdWV1
ZVRlc3RgIG9iamVjdCwgdGhpcyB0aW1lCisgICAgcnVubmluZyB0aGUgYERlcXVldWVXb3Jrc2Ag
dGVzdC4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworCisjIyBJ
bnZva2luZyB0aGUgVGVzdHMKKworYFRFU1QoKWAgYW5kIGBURVNUX0YoKWAgaW1wbGljaXRseSBy
ZWdpc3RlciB0aGVpciB0ZXN0cyB3aXRoIGdvb2dsZXRlc3QuIFNvLAordW5saWtlIHdpdGggbWFu
eSBvdGhlciBDKysgdGVzdGluZyBmcmFtZXdvcmtzLCB5b3UgZG9uJ3QgaGF2ZSB0byByZS1saXN0
IGFsbAoreW91ciBkZWZpbmVkIHRlc3RzIGluIG9yZGVyIHRvIHJ1biB0aGVtLgorCitBZnRlciBk
ZWZpbmluZyB5b3VyIHRlc3RzLCB5b3UgY2FuIHJ1biB0aGVtIHdpdGggYFJVTl9BTExfVEVTVFMo
KWAgLCB3aGljaAorcmV0dXJucyBgMGAgaWYgYWxsIHRoZSB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwg
b3IgYDFgIG90aGVyd2lzZS4gTm90ZSB0aGF0CitgUlVOX0FMTF9URVNUUygpYCBydW5zICphbGwg
dGVzdHMqIGluIHlvdXIgbGluayB1bml0IC0tIHRoZXkgY2FuIGJlIGZyb20KK2RpZmZlcmVudCB0
ZXN0IGNhc2VzLCBvciBldmVuIGRpZmZlcmVudCBzb3VyY2UgZmlsZXMuCisKK1doZW4gaW52b2tl
ZCwgdGhlIGBSVU5fQUxMX1RFU1RTKClgIG1hY3JvOgorCisxLiBTYXZlcyB0aGUgc3RhdGUgb2Yg
YWxsIGdvb2dsZXRlc3QgZmxhZ3MKKworKiAgIENyZWF0ZXMgYSB0ZXN0IGZpeHR1cmUgb2JqZWN0
IGZvciB0aGUgZmlyc3QgdGVzdC4KKworKiAgIEluaXRpYWxpemVzIGl0IHZpYSBgU2V0VXAoKWAu
CisKKyogICBSdW5zIHRoZSB0ZXN0IG9uIHRoZSBmaXh0dXJlIG9iamVjdC4KKworKiAgIENsZWFu
cyB1cCB0aGUgZml4dHVyZSB2aWEgYFRlYXJEb3duKClgLgorCisqICAgRGVsZXRlcyB0aGUgZml4
dHVyZS4KKworKiBSZXN0b3JlcyB0aGUgc3RhdGUgb2YgYWxsIGdvb2dsZXRlc3QgZmxhZ3MKKwor
KiAgIFJlcGVhdHMgdGhlIGFib3ZlIHN0ZXBzIGZvciB0aGUgbmV4dCB0ZXN0LCB1bnRpbCBhbGwg
dGVzdHMgaGF2ZSBydW4uCisKK0lmIGEgZmF0YWwgZmFpbHVyZSBoYXBwZW5zIHRoZSBzdWJzZXF1
ZW50IHN0ZXBzIHdpbGwgYmUgc2tpcHBlZC4KKworPiBJTVBPUlRBTlQ6IFlvdSBtdXN0ICoqbm90
KiogaWdub3JlIHRoZSByZXR1cm4gdmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAsIG9yCis+IHlv
dSB3aWxsIGdldCBhIGNvbXBpbGVyIGVycm9yLiBUaGUgcmF0aW9uYWxlIGZvciB0aGlzIGRlc2ln
biBpcyB0aGF0IHRoZQorPiBhdXRvbWF0ZWQgdGVzdGluZyBzZXJ2aWNlIGRldGVybWluZXMgd2hl
dGhlciBhIHRlc3QgaGFzIHBhc3NlZCBiYXNlZCBvbiBpdHMKKz4gZXhpdCBjb2RlLCBub3Qgb24g
aXRzIHN0ZG91dC9zdGRlcnIgb3V0cHV0OyB0aHVzIHlvdXIgYG1haW4oKWAgZnVuY3Rpb24gbXVz
dAorPiByZXR1cm4gdGhlIHZhbHVlIG9mIGBSVU5fQUxMX1RFU1RTKClgLgorPgorPiBBbHNvLCB5
b3Ugc2hvdWxkIGNhbGwgYFJVTl9BTExfVEVTVFMoKWAgb25seSAqKm9uY2UqKi4gQ2FsbGluZyBp
dCBtb3JlIHRoYW4KKz4gb25jZSBjb25mbGljdHMgd2l0aCBzb21lIGFkdmFuY2VkIGdvb2dsZXRl
c3QgZmVhdHVyZXMgKGUuZy4gdGhyZWFkLXNhZmUgW2RlYXRoCis+IHRlc3RzXShhZHZhbmNlZCNk
ZWF0aC10ZXN0cykpIGFuZCB0aHVzIGlzIG5vdCBzdXBwb3J0ZWQuCisKKyoqQXZhaWxhYmlsaXR5
Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIFdyaXRpbmcgdGhlIG1haW4oKSBGdW5jdGlv
bgorCitJbiBgZ29vZ2xlM2AsIHRoZSBzaW1wbGVzdCBhcHByb2FjaCBpcyB0byB1c2UgdGhlIGRl
ZmF1bHQgbWFpbigpIGZ1bmN0aW9uCitwcm92aWRlZCBieSBsaW5raW5nIGluIGAiLy90ZXN0aW5n
L2Jhc2UvcHVibGljOmd0ZXN0X21haW4iYC4gSWYgdGhhdCBkb2Vzbid0Citjb3ZlciB3aGF0IHlv
dSBuZWVkLCB5b3Ugc2hvdWxkIHdyaXRlIHlvdXIgb3duIG1haW4oKSBmdW5jdGlvbiwgd2hpY2gg
c2hvdWxkCityZXR1cm4gdGhlIHZhbHVlIG9mIGBSVU5fQUxMX1RFU1RTKClgLiBMaW5rIHRvIGAi
Ly90ZXN0aW5nL2Jhc2UvcHVibGljOmd1bml0ImAuCitZb3UgY2FuIHN0YXJ0IGZyb20gdGhpcyBi
b2lsZXJwbGF0ZToKKworYGBgYysrCisjaW5jbHVkZSAidGhpcy9wYWNrYWdlL2Zvby5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CisKKy8vIFRoZSBmaXh0dXJlIGZv
ciB0ZXN0aW5nIGNsYXNzIEZvby4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIC8vIFlvdSBjYW4gcmVtb3ZlIGFueSBvciBhbGwgb2YgdGhl
IGZvbGxvd2luZyBmdW5jdGlvbnMgaWYgaXRzIGJvZHkKKyAgLy8gaXMgZW1wdHkuCisKKyAgRm9v
VGVzdCgpIHsKKyAgICAgLy8gWW91IGNhbiBkbyBzZXQtdXAgd29yayBmb3IgZWFjaCB0ZXN0IGhl
cmUuCisgIH0KKworICB+Rm9vVGVzdCgpIG92ZXJyaWRlIHsKKyAgICAgLy8gWW91IGNhbiBkbyBj
bGVhbi11cCB3b3JrIHRoYXQgZG9lc24ndCB0aHJvdyBleGNlcHRpb25zIGhlcmUuCisgIH0KKwor
ICAvLyBJZiB0aGUgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IgYXJlIG5vdCBlbm91Z2ggZm9y
IHNldHRpbmcgdXAKKyAgLy8gYW5kIGNsZWFuaW5nIHVwIGVhY2ggdGVzdCwgeW91IGNhbiBkZWZp
bmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorCisgIHZvaWQgU2V0VXAoKSBvdmVycmlkZSB7Cisg
ICAgIC8vIENvZGUgaGVyZSB3aWxsIGJlIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgY29u
c3RydWN0b3IgKHJpZ2h0CisgICAgIC8vIGJlZm9yZSBlYWNoIHRlc3QpLgorICB9CisKKyAgdm9p
ZCBUZWFyRG93bigpIG92ZXJyaWRlIHsKKyAgICAgLy8gQ29kZSBoZXJlIHdpbGwgYmUgY2FsbGVk
IGltbWVkaWF0ZWx5IGFmdGVyIGVhY2ggdGVzdCAocmlnaHQKKyAgICAgLy8gYmVmb3JlIHRoZSBk
ZXN0cnVjdG9yKS4KKyAgfQorCisgIC8vIE9iamVjdHMgZGVjbGFyZWQgaGVyZSBjYW4gYmUgdXNl
ZCBieSBhbGwgdGVzdHMgaW4gdGhlIHRlc3QgY2FzZSBmb3IgRm9vLgorfTsKKworLy8gVGVzdHMg
dGhhdCB0aGUgRm9vOjpCYXIoKSBtZXRob2QgZG9lcyBBYmMuCitURVNUX0YoRm9vVGVzdCwgTWV0
aG9kQmFyRG9lc0FiYykgeworICBjb25zdCBzdGQ6OnN0cmluZyBpbnB1dF9maWxlcGF0aCA9ICJ0
aGlzL3BhY2thZ2UvdGVzdGRhdGEvbXlpbnB1dGZpbGUuZGF0IjsKKyAgY29uc3Qgc3RkOjpzdHJp
bmcgb3V0cHV0X2ZpbGVwYXRoID0gInRoaXMvcGFja2FnZS90ZXN0ZGF0YS9teW91dHB1dGZpbGUu
ZGF0IjsKKyAgRm9vIGY7CisgIEVYUEVDVF9FUShmLkJhcihpbnB1dF9maWxlcGF0aCwgb3V0cHV0
X2ZpbGVwYXRoKSwgMCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgRm9vIGRvZXMgWHl6LgorVEVTVF9G
KEZvb1Rlc3QsIERvZXNYeXopIHsKKyAgLy8gRXhlcmNpc2VzIHRoZSBYeXogZmVhdHVyZSBvZiBG
b28uCit9CisKK30gIC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy
Z3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIHJldHVy
biBSVU5fQUxMX1RFU1RTKCk7Cit9CitgYGAKKworCitUaGUgYDo6dGVzdGluZzo6SW5pdEdvb2ds
ZVRlc3QoKWAgZnVuY3Rpb24gcGFyc2VzIHRoZSBjb21tYW5kIGxpbmUgZm9yCitnb29nbGV0ZXN0
IGZsYWdzLCBhbmQgcmVtb3ZlcyBhbGwgcmVjb2duaXplZCBmbGFncy4gVGhpcyBhbGxvd3MgdGhl
IHVzZXIgdG8KK2NvbnRyb2wgYSB0ZXN0IHByb2dyYW0ncyBiZWhhdmlvciB2aWEgdmFyaW91cyBm
bGFncywgd2hpY2ggd2UnbGwgY292ZXIgaW4KK1tBZHZhbmNlZEd1aWRlXShhZHZhbmNlZC5tZCku
IFlvdSAqKm11c3QqKiBjYWxsIHRoaXMgZnVuY3Rpb24gYmVmb3JlIGNhbGxpbmcKK2BSVU5fQUxM
X1RFU1RTKClgLCBvciB0aGUgZmxhZ3Mgd29uJ3QgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuCisK
K09uIFdpbmRvd3MsIGBJbml0R29vZ2xlVGVzdCgpYCBhbHNvIHdvcmtzIHdpdGggd2lkZSBzdHJp
bmdzLCBzbyBpdCBjYW4gYmUgdXNlZAoraW4gcHJvZ3JhbXMgY29tcGlsZWQgaW4gYFVOSUNPREVg
IG1vZGUgYXMgd2VsbC4KKworQnV0IG1heWJlIHlvdSB0aGluayB0aGF0IHdyaXRpbmcgYWxsIHRo
b3NlIG1haW4oKSBmdW5jdGlvbnMgaXMgdG9vIG11Y2ggd29yaz8gV2UKK2FncmVlIHdpdGggeW91
IGNvbXBsZXRlbHkgYW5kIHRoYXQncyB3aHkgR29vZ2xlIFRlc3QgcHJvdmlkZXMgYSBiYXNpYwor
aW1wbGVtZW50YXRpb24gb2YgbWFpbigpLiBJZiBpdCBmaXRzIHlvdXIgbmVlZHMsIHRoZW4ganVz
dCBsaW5rIHlvdXIgdGVzdCB3aXRoCitndGVzdFxfbWFpbiBsaWJyYXJ5IGFuZCB5b3UgYXJlIGdv
b2QgdG8gZ28uCisKK05PVEU6IGBQYXJzZUdVbml0RmxhZ3MoKWAgaXMgZGVwcmVjYXRlZCBpbiBm
YXZvciBvZiBgSW5pdEdvb2dsZVRlc3QoKWAuCisKKworIyMgS25vd24gTGltaXRhdGlvbnMKKwor
KiAgIEdvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHRvIGJlIHRocmVhZC1zYWZlLiBUaGUgaW1wbGVt
ZW50YXRpb24gaXMgdGhyZWFkLXNhZmUKKyAgICBvbiBzeXN0ZW1zIHdoZXJlIHRoZSBgcHRocmVh
ZHNgIGxpYnJhcnkgaXMgYXZhaWxhYmxlLiBJdCBpcyBjdXJyZW50bHkKKyAgICBfdW5zYWZlXyB0
byB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBmcm9tIHR3byB0aHJlYWRzIGNvbmN1cnJlbnRs
eSBvbgorICAgIG90aGVyIHN5c3RlbXMgKGUuZy4gV2luZG93cykuIEluIG1vc3QgdGVzdHMgdGhp
cyBpcyBub3QgYW4gaXNzdWUgYXMgdXN1YWxseQorICAgIHRoZSBhc3NlcnRpb25zIGFyZSBkb25l
IGluIHRoZSBtYWluIHRocmVhZC4gSWYgeW91IHdhbnQgdG8gaGVscCwgeW91IGNhbgorICAgIHZv
bHVudGVlciB0byBpbXBsZW1lbnQgdGhlIG5lY2Vzc2FyeSBzeW5jaHJvbml6YXRpb24gcHJpbWl0
aXZlcyBpbgorICAgIGBndGVzdC1wb3J0LmhgIGZvciB5b3VyIHBsYXRmb3JtLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9zYW1wbGVzLm1kIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvZG9jcy9zYW1wbGVzLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4ZGNjYTM4MTQ5MWUxOTgy
MzMyYzZkNDQ3MmNhODJkMGQwMjE3MDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9kb2NzL3NhbXBsZXMubWQKQEAgLTAsMCArMSwyMiBAQAorIyBHb29nbGV0ZXN0
IFNhbXBsZXMgeyNzYW1wbGVzfQorCitJZiB5b3UncmUgbGlrZSB1cywgeW91J2QgbGlrZSB0byBs
b29rIGF0IFtnb29nbGV0ZXN0CitzYW1wbGVzLl0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9n
b29nbGV0ZXN0L3RyZWUvbWFzdGVyL2dvb2dsZXRlc3Qvc2FtcGxlcykKK1RoZSBzYW1wbGUgZGly
ZWN0b3J5IGhhcyBhIG51bWJlciBvZiB3ZWxsLWNvbW1lbnRlZCBzYW1wbGVzIHNob3dpbmcgaG93
IHRvIHVzZSBhCit2YXJpZXR5IG9mIGdvb2dsZXRlc3QgZmVhdHVyZXMuCisKKyogICBTYW1wbGUg
IzEgc2hvd3MgdGhlIGJhc2ljIHN0ZXBzIG9mIHVzaW5nIGdvb2dsZXRlc3QgdG8gdGVzdCBDKysg
ZnVuY3Rpb25zLgorKiAgIFNhbXBsZSAjMiBzaG93cyBhIG1vcmUgY29tcGxleCB1bml0IHRlc3Qg
Zm9yIGEgY2xhc3Mgd2l0aCBtdWx0aXBsZSBtZW1iZXIKKyAgICBmdW5jdGlvbnMuCisqICAgU2Ft
cGxlICMzIHVzZXMgYSB0ZXN0IGZpeHR1cmUuCisqICAgU2FtcGxlICM0IHRlYWNoZXMgeW91IGhv
dyB0byB1c2UgZ29vZ2xldGVzdCBhbmQgYGdvb2dsZXRlc3QuaGAgdG9nZXRoZXIgdG8KKyAgICBn
ZXQgdGhlIGJlc3Qgb2YgYm90aCBsaWJyYXJpZXMuCisqICAgU2FtcGxlICM1IHB1dHMgc2hhcmVk
IHRlc3RpbmcgbG9naWMgaW4gYSBiYXNlIHRlc3QgZml4dHVyZSwgYW5kIHJldXNlcyBpdCBpbgor
ICAgIGRlcml2ZWQgZml4dHVyZXMuCisqICAgU2FtcGxlICM2IGRlbW9uc3RyYXRlcyB0eXBlLXBh
cmFtZXRlcml6ZWQgdGVzdHMuCisqICAgU2FtcGxlICM3IHRlYWNoZXMgdGhlIGJhc2ljcyBvZiB2
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorKiAgIFNhbXBsZSAjOCBzaG93cyB1c2luZyBgQ29t
YmluZSgpYCBpbiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorKiAgIFNhbXBsZSAjOSBzaG93
cyB1c2Ugb2YgdGhlIGxpc3RlbmVyIEFQSSB0byBtb2RpZnkgR29vZ2xlIFRlc3QncyBjb25zb2xl
CisgICAgb3V0cHV0IGFuZCB0aGUgdXNlIG9mIGl0cyByZWZsZWN0aW9uIEFQSSB0byBpbnNwZWN0
IHRlc3QgcmVzdWx0cy4KKyogICBTYW1wbGUgIzEwIHNob3dzIHVzZSBvZiB0aGUgbGlzdGVuZXIg
QVBJIHRvIGltcGxlbWVudCBhIHByaW1pdGl2ZSBtZW1vcnkKKyAgICBsZWFrIGNoZWNrZXIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LWRl
YXRoLXRlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qt
ZGVhdGgtdGVzdC5oCmluZGV4IDEyMWRjMWZiNWFjNWQ1OWEzM2Q1MzAzNDA1OGVlZTkxYzIxMmEy
MDguLjIwYzU0ZDg2OTUxOWY2OTMwZTdlYmZkMmMwODA1YmFjYTQyMjE2YmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtZGVhdGgt
dGVzdC5oCkBAIC0yNiwxOSArMjYsMTkgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKwogLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xl
IFRlc3QpCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAo
R29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVzIHRoZSBwdWJsaWMg
QVBJIGZvciBkZWF0aCB0ZXN0cy4gIEl0IGlzCiAvLyAjaW5jbHVkZWQgYnkgZ3Rlc3QuaCBzbyBh
IHVzZXIgZG9lc24ndCBuZWVkIHRvIGluY2x1ZGUgdGhpcwogLy8gZGlyZWN0bHkuCisvLyBHT09H
TEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCiAKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVT
VF9HVEVTVF9ERUFUSF9URVNUX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1Rf
REVBVEhfVEVTVF9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZGVhdGgtdGVz
dC1pbnRlcm5hbC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3Qt
aW50ZXJuYWwuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC01MSw2ICs1MSwxNyBAQCBH
VEVTVF9ERUNMQVJFX3N0cmluZ18oZGVhdGhfdGVzdF9zdHlsZSk7CiAKICNpZiBHVEVTVF9IQVNf
REVBVEhfVEVTVAogCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBSZXR1cm5zIGEgQm9vbGVh
biB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNhbGxlciBpcyBjdXJyZW50bHkKKy8vIGV4
ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiB0aGUgZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzLiAg
VG9vbHMgc3VjaCBhcworLy8gVmFsZ3JpbmQgaGVhcCBjaGVja2VycyBtYXkgbmVlZCB0aGlzIHRv
IG1vZGlmeSB0aGVpciBiZWhhdmlvciBpbiBkZWF0aAorLy8gdGVzdHMuICBJTVBPUlRBTlQ6IFRo
aXMgaXMgYW4gaW50ZXJuYWwgdXRpbGl0eS4gIFVzaW5nIGl0IG1heSBicmVhayB0aGUKKy8vIGlt
cGxlbWVudGF0aW9uIG9mIGRlYXRoIHRlc3RzLiAgVXNlciBjb2RlIE1VU1QgTk9UIHVzZSBpdC4K
K0dURVNUX0FQSV8gYm9vbCBJbkRlYXRoVGVzdENoaWxkKCk7CisKK30gIC8vIG5hbWVzcGFjZSBp
bnRlcm5hbAorCiAvLyBUaGUgZm9sbG93aW5nIG1hY3JvcyBhcmUgdXNlZnVsIGZvciB3cml0aW5n
IGRlYXRoIHRlc3RzLgogCiAvLyBIZXJlJ3Mgd2hhdCBoYXBwZW5zIHdoZW4gYW4gQVNTRVJUX0RF
QVRIKiBvciBFWFBFQ1RfREVBVEgqIGlzCkBAIC03NSw3ICs4Niw3IEBAIEdURVNUX0RFQ0xBUkVf
c3RyaW5nXyhkZWF0aF90ZXN0X3N0eWxlKTsKIC8vICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBp
KyspIHsKIC8vICAgICBFWFBFQ1RfREVBVEgoc2VydmVyLlByb2Nlc3NSZXF1ZXN0KGkpLAogLy8g
ICAgICAgICAgICAgICAgICAiSW52YWxpZCByZXF1ZXN0IC4qIGluIFByb2Nlc3NSZXF1ZXN0KCki
KQotLy8gICAgICAgICA8PCAiRmFpbGVkIHRvIGRpZSBvbiByZXF1ZXN0ICIgPDwgaSk7CisvLyAg
ICAgICAgICAgICAgICAgIDw8ICJGYWlsZWQgdG8gZGllIG9uIHJlcXVlc3QgIiA8PCBpOwogLy8g
ICB9CiAvLwogLy8gICBBU1NFUlRfRVhJVChzZXJ2ZXIuRXhpdE5vdygpLCA6OnRlc3Rpbmc6OkV4
aXRlZFdpdGhDb2RlKDApLCAiRXhpdGluZyIpOwpAQCAtODgsMTAgKzk5LDExIEBAIEdURVNUX0RF
Q0xBUkVfc3RyaW5nXyhkZWF0aF90ZXN0X3N0eWxlKTsKIC8vCiAvLyBPbiB0aGUgcmVndWxhciBl
eHByZXNzaW9ucyB1c2VkIGluIGRlYXRoIHRlc3RzOgogLy8KKy8vICAgR09PR0xFVEVTVF9DTTAw
MDUgRE8gTk9UIERFTEVURQogLy8gICBPbiBQT1NJWC1jb21wbGlhbnQgc3lzdGVtcyAoKm5peCks
IHdlIHVzZSB0aGUgPHJlZ2V4Lmg+IGxpYnJhcnksCiAvLyAgIHdoaWNoIHVzZXMgdGhlIFBPU0lY
IGV4dGVuZGVkIHJlZ2V4IHN5bnRheC4KIC8vCi0vLyAgIE9uIG90aGVyIHBsYXRmb3JtcyAoZS5n
LiBXaW5kb3dzKSwgd2Ugb25seSBzdXBwb3J0IGEgc2ltcGxlIHJlZ2V4CisvLyAgIE9uIG90aGVy
IHBsYXRmb3JtcyAoZS5nLiBXaW5kb3dzIG9yIE1hYyksIHdlIG9ubHkgc3VwcG9ydCBhIHNpbXBs
ZSByZWdleAogLy8gICBzeW50YXggaW1wbGVtZW50ZWQgYXMgcGFydCBvZiBHb29nbGUgVGVzdC4g
IFRoaXMgbGltaXRlZAogLy8gICBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYmUgZW5vdWdoIG1vc3Qg
b2YgdGhlIHRpbWUgd2hlbiB3cml0aW5nCiAvLyAgIGRlYXRoIHRlc3RzOyB0aG91Z2ggaXQgbGFj
a3MgbWFueSBmZWF0dXJlcyB5b3UgY2FuIGZpbmQgaW4gUENSRQpAQCAtMTQ5LDI5ICsxNjEsMjkg
QEAgR1RFU1RfREVDTEFSRV9zdHJpbmdfKGRlYXRoX3Rlc3Rfc3R5bGUpOwogLy8gICBpcyByYXJl
bHkgYSBwcm9ibGVtIGFzIHBlb3BsZSB1c3VhbGx5IGRvbid0IHB1dCB0aGUgdGVzdCBiaW5hcnkK
IC8vICAgZGlyZWN0b3J5IGluIFBBVEguCiAvLwotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IG1h
a2UgdGhyZWFkLXNhZmUgZGVhdGggdGVzdHMgc2VhcmNoIHRoZSBQQVRILgorLy8gRklYTUU6IG1h
a2UgdGhyZWFkLXNhZmUgZGVhdGggdGVzdHMgc2VhcmNoIHRoZSBQQVRILgogCiAvLyBBc3NlcnRz
IHRoYXQgYSBnaXZlbiBzdGF0ZW1lbnQgY2F1c2VzIHRoZSBwcm9ncmFtIHRvIGV4aXQsIHdpdGgg
YW4KIC8vIGludGVnZXIgZXhpdCBzdGF0dXMgdGhhdCBzYXRpc2ZpZXMgcHJlZGljYXRlLCBhbmQg
ZW1pdHRpbmcgZXJyb3Igb3V0cHV0CiAvLyB0aGF0IG1hdGNoZXMgcmVnZXguCi0jZGVmaW5lIEFT
U0VSVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCkgXAotICBHVEVTVF9ERUFUSF9U
RVNUXyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIEdURVNUX0ZBVEFMX0ZBSUxVUkVfKQor
IyBkZWZpbmUgQVNTRVJUX0VYSVQoc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4KSBcCisgICAg
R1RFU1RfREVBVEhfVEVTVF8oc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4LCBHVEVTVF9GQVRB
TF9GQUlMVVJFXykKIAogLy8gTGlrZSBBU1NFUlRfRVhJVCwgYnV0IGNvbnRpbnVlcyBvbiB0byBz
dWNjZXNzaXZlIHRlc3RzIGluIHRoZQogLy8gdGVzdCBjYXNlLCBpZiBhbnk6Ci0jZGVmaW5lIEVY
UEVDVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCkgXAotICBHVEVTVF9ERUFUSF9U
RVNUXyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVf
KQorIyBkZWZpbmUgRVhQRUNUX0VYSVQoc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4KSBcCisg
ICAgR1RFU1RfREVBVEhfVEVTVF8oc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4LCBHVEVTVF9O
T05GQVRBTF9GQUlMVVJFXykKIAogLy8gQXNzZXJ0cyB0aGF0IGEgZ2l2ZW4gc3RhdGVtZW50IGNh
dXNlcyB0aGUgcHJvZ3JhbSB0byBleGl0LCBlaXRoZXIgYnkKIC8vIGV4cGxpY2l0bHkgZXhpdGlu
ZyB3aXRoIGEgbm9uemVybyBleGl0IGNvZGUgb3IgYmVpbmcga2lsbGVkIGJ5IGEKIC8vIHNpZ25h
bCwgYW5kIGVtaXR0aW5nIGVycm9yIG91dHB1dCB0aGF0IG1hdGNoZXMgcmVnZXguCi0jZGVmaW5l
IEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCi0gIEFTU0VSVF9FWElUKHN0YXRlbWVu
dCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RXhpdGVkVW5zdWNjZXNzZnVsbHksIHJlZ2V4KQorIyBk
ZWZpbmUgQVNTRVJUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKKyAgICBBU1NFUlRfRVhJVChz
dGF0ZW1lbnQsIDo6dGVzdGluZzo6aW50ZXJuYWw6OkV4aXRlZFVuc3VjY2Vzc2Z1bGx5LCByZWdl
eCkKIAogLy8gTGlrZSBBU1NFUlRfREVBVEgsIGJ1dCBjb250aW51ZXMgb24gdG8gc3VjY2Vzc2l2
ZSB0ZXN0cyBpbiB0aGUKIC8vIHRlc3QgY2FzZSwgaWYgYW55OgotI2RlZmluZSBFWFBFQ1RfREVB
VEgoc3RhdGVtZW50LCByZWdleCkgXAotICBFWFBFQ1RfRVhJVChzdGF0ZW1lbnQsIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkV4aXRlZFVuc3VjY2Vzc2Z1bGx5LCByZWdleCkKKyMgZGVmaW5lIEVYUEVD
VF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgICAgRVhQRUNUX0VYSVQoc3RhdGVtZW50LCA6
OnRlc3Rpbmc6OmludGVybmFsOjpFeGl0ZWRVbnN1Y2Nlc3NmdWxseSwgcmVnZXgpCiAKIC8vIFR3
byBwcmVkaWNhdGUgY2xhc3NlcyB0aGF0IGNhbiBiZSB1c2VkIGluIHtBU1NFUlQsRVhQRUNUfV9F
WElUKjoKIApAQCAtMTg3LDkgKzE5OSwxMCBAQCBjbGFzcyBHVEVTVF9BUElfIEV4aXRlZFdpdGhD
b2RlIHsKICAgY29uc3QgaW50IGV4aXRfY29kZV87CiB9OwogCi0jaWYgIUdURVNUX09TX1dJTkRP
V1MKKyMgaWYgIUdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX0ZVQ0hTSUEKIC8vIFRlc3Rz
IHRoYXQgYW4gZXhpdCBjb2RlIGRlc2NyaWJlcyBhbiBleGl0IGR1ZSB0byB0ZXJtaW5hdGlvbiBi
eSBhCiAvLyBnaXZlbiBzaWduYWwuCisvLyBHT09HTEVURVNUX0NNMDAwNiBETyBOT1QgREVMRVRF
CiBjbGFzcyBHVEVTVF9BUElfIEtpbGxlZEJ5U2lnbmFsIHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0
IEtpbGxlZEJ5U2lnbmFsKGludCBzaWdudW0pOwpAQCAtMTk3LDcgKzIxMCw3IEBAIGNsYXNzIEdU
RVNUX0FQSV8gS2lsbGVkQnlTaWduYWwgewogIHByaXZhdGU6CiAgIGNvbnN0IGludCBzaWdudW1f
OwogfTsKLSNlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vICFHVEVTVF9P
U19XSU5ET1dTCiAKIC8vIEVYUEVDVF9ERUJVR19ERUFUSCBhc3NlcnRzIHRoYXQgdGhlIGdpdmVu
IHN0YXRlbWVudHMgZGllIGluIGRlYnVnIG1vZGUuCiAvLyBUaGUgZGVhdGggdGVzdGluZyBmcmFt
ZXdvcmsgY2F1c2VzIHRoaXMgdG8gaGF2ZSBpbnRlcmVzdGluZyBzZW1hbnRpY3MsCkBAIC0yNDIs
NDAgKzI1NSw4OCBAQCBjbGFzcyBHVEVTVF9BUElfIEtpbGxlZEJ5U2lnbmFsIHsKIC8vICAgRVhQ
RUNUX0VRKDEyLCBEaWVJbkRlYnVnT3IxMigmc2lkZWVmZmVjdCkpOwogLy8gfSwgImRlYXRoIik7
CiAvLwotI2lmZGVmIE5ERUJVRworIyBpZmRlZiBOREVCVUcKIAotI2RlZmluZSBFWFBFQ1RfREVC
VUdfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAotICBkbyB7IHN0YXRlbWVudDsgfSB3aGlsZSAo
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2UoKSkKKyMgIGRlZmluZSBFWFBFQ1RfREVC
VUdfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAorICBHVEVTVF9FWEVDVVRFX1NUQVRFTUVOVF8o
c3RhdGVtZW50LCByZWdleCkKIAotI2RlZmluZSBBU1NFUlRfREVCVUdfREVBVEgoc3RhdGVtZW50
LCByZWdleCkgXAotICBkbyB7IHN0YXRlbWVudDsgfSB3aGlsZSAoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6QWx3YXlzRmFsc2UoKSkKKyMgIGRlZmluZSBBU1NFUlRfREVCVUdfREVBVEgoc3RhdGVtZW50
LCByZWdleCkgXAorICBHVEVTVF9FWEVDVVRFX1NUQVRFTUVOVF8oc3RhdGVtZW50LCByZWdleCkK
IAotI2Vsc2UKKyMgZWxzZQogCi0jZGVmaW5lIEVYUEVDVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQs
IHJlZ2V4KSBcCisjICBkZWZpbmUgRVhQRUNUX0RFQlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgp
IFwKICAgRVhQRUNUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpCiAKLSNkZWZpbmUgQVNTRVJUX0RF
QlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKKyMgIGRlZmluZSBBU1NFUlRfREVCVUdfREVB
VEgoc3RhdGVtZW50LCByZWdleCkgXAogICBBU1NFUlRfREVBVEgoc3RhdGVtZW50LCByZWdleCkK
IAotI2VuZGlmICAvLyBOREVCVUcgZm9yIEVYUEVDVF9ERUJVR19ERUFUSAorIyBlbmRpZiAgLy8g
TkRFQlVHIGZvciBFWFBFQ1RfREVCVUdfREVBVEgKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRI
X1RFU1QKIAorLy8gVGhpcyBtYWNybyBpcyB1c2VkIGZvciBpbXBsZW1lbnRpbmcgbWFjcm9zIHN1
Y2ggYXMKKy8vIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQgYW5kIEFTU0VSVF9ERUFUSF9JRl9T
VVBQT1JURUQgb24gc3lzdGVtcyB3aGVyZQorLy8gZGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0
ZWQuIFRob3NlIG1hY3JvcyBtdXN0IGNvbXBpbGUgb24gc3VjaCBzeXN0ZW1zCisvLyBpZmYgRVhQ
RUNUX0RFQVRIIGFuZCBBU1NFUlRfREVBVEggY29tcGlsZSB3aXRoIHRoZSBzYW1lIHBhcmFtZXRl
cnMgb24KKy8vIHN5c3RlbXMgdGhhdCBzdXBwb3J0IGRlYXRoIHRlc3RzLiBUaGlzIGFsbG93cyBv
bmUgdG8gd3JpdGUgc3VjaCBhIG1hY3JvCisvLyBvbiBhIHN5c3RlbSB0aGF0IGRvZXMgbm90IHN1
cHBvcnQgZGVhdGggdGVzdHMgYW5kIGJlIHN1cmUgdGhhdCBpdCB3aWxsCisvLyBjb21waWxlIG9u
IGEgZGVhdGgtdGVzdCBzdXBwb3J0aW5nIHN5c3RlbS4gSXQgaXMgZXhwb3NlZCBwdWJsaWNseSBz
byB0aGF0CisvLyBzeXN0ZW1zIHRoYXQgaGF2ZSBkZWF0aC10ZXN0cyB3aXRoIHN0cmljdGVyIHJl
cXVpcmVtZW50cyB0aGFuCisvLyBHVEVTVF9IQVNfREVBVEhfVEVTVCBjYW4gd3JpdGUgdGhlaXIg
b3duIGVxdWl2YWxlbnQgb2YKKy8vIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQgYW5kIEFTU0VS
VF9ERUFUSF9JRl9TVVBQT1JURUQuCisvLworLy8gUGFyYW1ldGVyczoKKy8vICAgc3RhdGVtZW50
IC0gIEEgc3RhdGVtZW50IHRoYXQgYSBtYWNybyBzdWNoIGFzIEVYUEVDVF9ERUFUSCB3b3VsZCB0
ZXN0CisvLyAgICAgICAgICAgICAgICBmb3IgcHJvZ3JhbSB0ZXJtaW5hdGlvbi4gVGhpcyBtYWNy
byBoYXMgdG8gbWFrZSBzdXJlIHRoaXMKKy8vICAgICAgICAgICAgICAgIHN0YXRlbWVudCBpcyBj
b21waWxlZCBidXQgbm90IGV4ZWN1dGVkLCB0byBlbnN1cmUgdGhhdAorLy8gICAgICAgICAgICAg
ICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCBjb21waWxlcyB3aXRoIGEgY2VydGFpbgorLy8g
ICAgICAgICAgICAgICAgcGFyYW1ldGVyIGlmZiBFWFBFQ1RfREVBVEggY29tcGlsZXMgd2l0aCBp
dC4KKy8vICAgcmVnZXggICAgIC0gIEEgcmVnZXggdGhhdCBhIG1hY3JvIHN1Y2ggYXMgRVhQRUNU
X0RFQVRIIHdvdWxkIHVzZSB0byB0ZXN0CisvLyAgICAgICAgICAgICAgICB0aGUgb3V0cHV0IG9m
IHN0YXRlbWVudC4gIFRoaXMgcGFyYW1ldGVyIGhhcyB0byBiZQorLy8gICAgICAgICAgICAgICAg
Y29tcGlsZWQgYnV0IG5vdCBldmFsdWF0ZWQgYnkgdGhpcyBtYWNybywgdG8gZW5zdXJlIHRoYXQK
Ky8vICAgICAgICAgICAgICAgIHRoaXMgbWFjcm8gb25seSBhY2NlcHRzIGV4cHJlc3Npb25zIHRo
YXQgYSBtYWNybyBzdWNoIGFzCisvLyAgICAgICAgICAgICAgICBFWFBFQ1RfREVBVEggd291bGQg
YWNjZXB0LgorLy8gICB0ZXJtaW5hdG9yIC0gTXVzdCBiZSBhbiBlbXB0eSBzdGF0ZW1lbnQgZm9y
IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQKKy8vICAgICAgICAgICAgICAgIGFuZCBhIHJldHVy
biBzdGF0ZW1lbnQgZm9yIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQuCisvLyAgICAgICAgICAg
ICAgICBUaGlzIGVuc3VyZXMgdGhhdCBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEIHdpbGwgbm90
CisvLyAgICAgICAgICAgICAgICBjb21waWxlIGluc2lkZSBmdW5jdGlvbnMgd2hlcmUgQVNTRVJU
X0RFQVRIIGRvZXNuJ3QKKy8vICAgICAgICAgICAgICAgIGNvbXBpbGUuCisvLworLy8gIFRoZSBi
cmFuY2ggdGhhdCBoYXMgYW4gYWx3YXlzIGZhbHNlIGNvbmRpdGlvbiBpcyB1c2VkIHRvIGVuc3Vy
ZSB0aGF0CisvLyAgc3RhdGVtZW50IGFuZCByZWdleCBhcmUgY29tcGlsZWQgKGFuZCB0aHVzIHN5
bnRhY3RpY2FsbHkgY29ycmVjdCkgYnV0CisvLyAgbmV2ZXIgZXhlY3V0ZWQuIFRoZSB1bnJlYWNo
YWJsZSBjb2RlIG1hY3JvIHByb3RlY3RzIHRoZSB0ZXJtaW5hdG9yCisvLyAgc3RhdGVtZW50IGZy
b20gZ2VuZXJhdGluZyBhbiAndW5yZWFjaGFibGUgY29kZScgd2FybmluZyBpbiBjYXNlCisvLyAg
c3RhdGVtZW50IHVuY29uZGl0aW9uYWxseSByZXR1cm5zIG9yIHRocm93cy4gVGhlIE1lc3NhZ2Ug
Y29uc3RydWN0b3IgYXQKKy8vICB0aGUgZW5kIGFsbG93cyB0aGUgc3ludGF4IG9mIHN0cmVhbWlu
ZyBhZGRpdGlvbmFsIG1lc3NhZ2VzIGludG8gdGhlCisvLyAgbWFjcm8sIGZvciBjb21waWxhdGlv
bmFsIGNvbXBhdGliaWxpdHkgd2l0aCBFWFBFQ1RfREVBVEgvQVNTRVJUX0RFQVRILgorIyBkZWZp
bmUgR1RFU1RfVU5TVVBQT1JURURfREVBVEhfVEVTVChzdGF0ZW1lbnQsIHJlZ2V4LCB0ZXJtaW5h
dG9yKSBcCisgICAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAorICAgIGlmICg6OnRl
c3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAorICAgICAgR1RFU1RfTE9HXyhXQVJO
SU5HKSBcCisgICAgICAgICAgPDwgIkRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRo
aXMgcGxhdGZvcm0uXG4iIFwKKyAgICAgICAgICA8PCAiU3RhdGVtZW50ICciICNzdGF0ZW1lbnQg
IicgY2Fubm90IGJlIHZlcmlmaWVkLiI7IFwKKyAgICB9IGVsc2UgaWYgKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpIHsgXAorICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UkU6
OlBhcnRpYWxNYXRjaCgiLioiLCAocmVnZXgpKTsgXAorICAgICAgR1RFU1RfU1VQUFJFU1NfVU5S
RUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCisgICAgICB0ZXJtaW5h
dG9yOyBcCisgICAgfSBlbHNlIFwKKyAgICAgIDo6dGVzdGluZzo6TWVzc2FnZSgpCisKIC8vIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgYW5kCiAvLyBBU1NFUlRf
REVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIGV4cGFuZCB0byByZWFsIGRlYXRo
IHRlc3RzIGlmCiAvLyBkZWF0aCB0ZXN0cyBhcmUgc3VwcG9ydGVkOyBvdGhlcndpc2UgdGhleSBq
dXN0IGlzc3VlIGEgd2FybmluZy4gIFRoaXMgaXMKIC8vIHVzZWZ1bCB3aGVuIHlvdSBhcmUgY29t
YmluaW5nIGRlYXRoIHRlc3QgYXNzZXJ0aW9ucyB3aXRoIG5vcm1hbCB0ZXN0CiAvLyBhc3NlcnRp
b25zIGluIG9uZSB0ZXN0LgogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCi0jZGVmaW5lIEVYUEVD
VF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAorIyBkZWZpbmUgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCiAgICAgRVhQRUNUX0RFQVRI
KHN0YXRlbWVudCwgcmVnZXgpCi0jZGVmaW5lIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoc3Rh
dGVtZW50LCByZWdleCkgXAorIyBkZWZpbmUgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0
ZW1lbnQsIHJlZ2V4KSBcCiAgICAgQVNTRVJUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpCiAjZWxz
ZQotI2RlZmluZSBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwK
LSAgICBHVEVTVF9VTlNVUFBPUlRFRF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHJlZ2V4LCApCi0j
ZGVmaW5lIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAotICAg
IEdURVNUX1VOU1VQUE9SVEVEX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcmVnZXgsIHJldHVybikK
KyMgZGVmaW5lIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAor
ICAgIEdURVNUX1VOU1VQUE9SVEVEX0RFQVRIX1RFU1Qoc3RhdGVtZW50LCByZWdleCwgKQorIyBk
ZWZpbmUgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgICAg
R1RFU1RfVU5TVVBQT1JURURfREVBVEhfVEVTVChzdGF0ZW1lbnQsIHJlZ2V4LCByZXR1cm4pCiAj
ZW5kaWYKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmgKaW5kZXggZjEzNWI2OTQy
N2ZlOWViZTIzN2M0Y2RhN2E5YzJmMGQ3OGRkNzY4ZS4uNWNhMDQxNjE0Y2IzNTU5MjJmMzU1Yjg5
M2Y5Yzg0YTNiN2Y1MmM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmgKQEAgLTI2LDEwICsyNiw5IEBACiAvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKIC8vCi0vLyBBdXRob3I6
IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGhlIEdvb2dsZSBDKysgVGVz
dGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBh
bmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogLy8KIC8vIFRoaXMgaGVhZGVyIGZp
bGUgZGVmaW5lcyB0aGUgTWVzc2FnZSBjbGFzcy4KIC8vCkBAIC00MywxMyArNDIsMjEgQEAKIC8v
IHRvIENIQU5HRSBXSVRIT1VUIE5PVElDRS4gIFRoZXJlZm9yZSBETyBOT1QgREVQRU5EIE9OIElU
IGluIGEgdXNlcgogLy8gcHJvZ3JhbSEKIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERF
TEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfTUVTU0FHRV9IXwogI2Rl
ZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX01FU1NBR0VfSF8KIAogI2luY2x1ZGUgPGxp
bWl0cz4KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oPgotI2luY2x1
ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0
MjUxIFwKKy8qIGNsYXNzIEEgbmVlZHMgdG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvIGJlIHVzZWQg
YnkgY2xpZW50cyBvZiBjbGFzcyBCICovKQorCisvLyBFbnN1cmVzIHRoYXQgdGhlcmUgaXMgYXQg
bGVhc3Qgb25lIG9wZXJhdG9yPDwgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisvLyBTZWUgTWVz
c2FnZSYgb3BlcmF0b3I8PCguLi4pIGJlbG93IGZvciB3aHkuCit2b2lkIG9wZXJhdG9yPDwoY29u
c3QgdGVzdGluZzo6aW50ZXJuYWw6OlNlY3JldCYsIGludCk7CiAKIG5hbWVzcGFjZSB0ZXN0aW5n
IHsKIApAQCAtNTgsNyArNjUsNyBAQCBuYW1lc3BhY2UgdGVzdGluZyB7CiAvLyBUeXBpY2FsIHVz
YWdlOgogLy8KIC8vICAgMS4gWW91IHN0cmVhbSBhIGJ1bmNoIG9mIHZhbHVlcyB0byBhIE1lc3Nh
Z2Ugb2JqZWN0LgotLy8gICAgICBJdCB3aWxsIHJlbWVtYmVyIHRoZSB0ZXh0IGluIGEgU3RyU3Ry
ZWFtLgorLy8gICAgICBJdCB3aWxsIHJlbWVtYmVyIHRoZSB0ZXh0IGluIGEgc3RyaW5nc3RyZWFt
LgogLy8gICAyLiBUaGVuIHlvdSBzdHJlYW0gdGhlIE1lc3NhZ2Ugb2JqZWN0IHRvIGFuIG9zdHJl
YW0uCiAvLyAgICAgIFRoaXMgY2F1c2VzIHRoZSB0ZXh0IGluIHRoZSBNZXNzYWdlIHRvIGJlIHN0
cmVhbWVkCiAvLyAgICAgIHRvIHRoZSBvc3RyZWFtLgpAQCAtNzQsNyArODEsNyBAQCBuYW1lc3Bh
Y2UgdGVzdGluZyB7CiAvLyBNZXNzYWdlIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBpbmhlcml0ZWQg
ZnJvbS4gIEluIHBhcnRpY3VsYXIsIGl0cwogLy8gZGVzdHJ1Y3RvciBpcyBub3QgdmlydHVhbC4K
IC8vCi0vLyBOb3RlIHRoYXQgU3RyU3RyZWFtIGJlaGF2ZXMgZGlmZmVyZW50bHkgaW4gZ2NjIGFu
ZCBpbiBNU1ZDLiAgWW91CisvLyBOb3RlIHRoYXQgc3RyaW5nc3RyZWFtIGJlaGF2ZXMgZGlmZmVy
ZW50bHkgaW4gZ2NjIGFuZCBpbiBNU1ZDLiAgWW91CiAvLyBjYW4gc3RyZWFtIGEgTlVMTCBjaGFy
IHBvaW50ZXIgdG8gaXQgaW4gdGhlIGZvcm1lciwgYnV0IG5vdCBpbiB0aGUKIC8vIGxhdHRlciAo
aXQgY2F1c2VzIGFuIGFjY2VzcyB2aW9sYXRpb24gaWYgeW91IGRvKS4gIFRoZSBNZXNzYWdlCiAv
LyBjbGFzcyBoaWRlcyB0aGlzIGRpZmZlcmVuY2UgYnkgdHJlYXRpbmcgYSBOVUxMIGNoYXIgcG9p
bnRlciBhcwpAQCAtODcsMjcgKzk0LDE4IEBAIGNsYXNzIEdURVNUX0FQSV8gTWVzc2FnZSB7CiAK
ICBwdWJsaWM6CiAgIC8vIENvbnN0cnVjdHMgYW4gZW1wdHkgTWVzc2FnZS4KLSAgLy8gV2UgYWxs
b2NhdGUgdGhlIFN0clN0cmVhbSBzZXBhcmF0ZWx5IGJlY2F1c2UgaXQgb3RoZXJ3aXNlIGVhY2gg
dXNlIG9mCi0gIC8vIEFTU0VSVC9FWFBFQ1QgaW4gYSBwcm9jZWR1cmUgYWRkcyBvdmVyIDIwMCBi
eXRlcyB0byB0aGUgcHJvY2VkdXJlJ3MKLSAgLy8gc3RhY2sgZnJhbWUgbGVhZGluZyB0byBodWdl
IHN0YWNrIGZyYW1lcyBpbiBzb21lIGNhc2VzOyBnY2MgZG9lcyBub3QgcmV1c2UKLSAgLy8gdGhl
IHN0YWNrIHNwYWNlLgotICBNZXNzYWdlKCkgOiBzc18obmV3IGludGVybmFsOjpTdHJTdHJlYW0p
IHsKLSAgICAvLyBCeSBkZWZhdWx0LCB3ZSB3YW50IHRoZXJlIHRvIGJlIGVub3VnaCBwcmVjaXNp
b24gd2hlbiBwcmludGluZwotICAgIC8vIGEgZG91YmxlIHRvIGEgTWVzc2FnZS4KLSAgICAqc3Nf
IDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZGlnaXRz
MTAgKyAyKTsKLSAgfQorICBNZXNzYWdlKCk7CiAKICAgLy8gQ29weSBjb25zdHJ1Y3Rvci4KLSAg
TWVzc2FnZShjb25zdCBNZXNzYWdlJiBtc2cpIDogc3NfKG5ldyBpbnRlcm5hbDo6U3RyU3RyZWFt
KSB7ICAvLyBOT0xJTlQKKyAgTWVzc2FnZShjb25zdCBNZXNzYWdlJiBtc2cpIDogc3NfKG5ldyA6
OnN0ZDo6c3RyaW5nc3RyZWFtKSB7ICAvLyBOT0xJTlQKICAgICAqc3NfIDw8IG1zZy5HZXRTdHJp
bmcoKTsKICAgfQogCiAgIC8vIENvbnN0cnVjdHMgYSBNZXNzYWdlIGZyb20gYSBDLXN0cmluZy4K
LSAgZXhwbGljaXQgTWVzc2FnZShjb25zdCBjaGFyKiBzdHIpIDogc3NfKG5ldyBpbnRlcm5hbDo6
U3RyU3RyZWFtKSB7CisgIGV4cGxpY2l0IE1lc3NhZ2UoY29uc3QgY2hhciogc3RyKSA6IHNzXyhu
ZXcgOjpzdGQ6OnN0cmluZ3N0cmVhbSkgewogICAgICpzc18gPDwgc3RyOwogICB9CiAKLSAgfk1l
c3NhZ2UoKSB7IGRlbGV0ZSBzc187IH0KICNpZiBHVEVTVF9PU19TWU1CSUFOCiAgIC8vIFN0cmVh
bXMgYSB2YWx1ZSAoZWl0aGVyIGEgcG9pbnRlciBvciBub3QpIHRvIHRoaXMgb2JqZWN0LgogICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTExOSw3ICsxMTcsMjIgQEAgY2xhc3MgR1RFU1RfQVBJ
XyBNZXNzYWdlIHsKICAgLy8gU3RyZWFtcyBhIG5vbi1wb2ludGVyIHZhbHVlIHRvIHRoaXMgb2Jq
ZWN0LgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgaW5saW5lIE1lc3NhZ2UmIG9wZXJhdG9y
IDw8KGNvbnN0IFQmIHZhbCkgewotICAgIDo6R1Rlc3RTdHJlYW1Ub0hlbHBlcihzc18sIHZhbCk7
CisgICAgLy8gU29tZSBsaWJyYXJpZXMgb3ZlcmxvYWQgPDwgZm9yIFNUTCBjb250YWluZXJzLiAg
VGhlc2UKKyAgICAvLyBvdmVybG9hZHMgYXJlIGRlZmluZWQgaW4gdGhlIGdsb2JhbCBuYW1lc3Bh
Y2UgaW5zdGVhZCBvZiA6OnN0ZC4KKyAgICAvLworICAgIC8vIEMrKydzIHN5bWJvbCBsb29rdXAg
cnVsZSAoaS5lLiBLb2VuaWcgbG9va3VwKSBzYXlzIHRoYXQgdGhlc2UKKyAgICAvLyBvdmVybG9h
ZHMgYXJlIHZpc2libGUgaW4gZWl0aGVyIHRoZSBzdGQgbmFtZXNwYWNlIG9yIHRoZSBnbG9iYWwK
KyAgICAvLyBuYW1lc3BhY2UsIGJ1dCBub3Qgb3RoZXIgbmFtZXNwYWNlcywgaW5jbHVkaW5nIHRo
ZSB0ZXN0aW5nCisgICAgLy8gbmFtZXNwYWNlIHdoaWNoIEdvb2dsZSBUZXN0J3MgTWVzc2FnZSBj
bGFzcyBpcyBpbi4KKyAgICAvLworICAgIC8vIFRvIGFsbG93IFNUTCBjb250YWluZXJzIChhbmQg
b3RoZXIgdHlwZXMgdGhhdCBoYXMgYSA8PCBvcGVyYXRvcgorICAgIC8vIGRlZmluZWQgaW4gdGhl
IGdsb2JhbCBuYW1lc3BhY2UpIHRvIGJlIHVzZWQgaW4gR29vZ2xlIFRlc3QKKyAgICAvLyBhc3Nl
cnRpb25zLCB0ZXN0aW5nOjpNZXNzYWdlIG11c3QgYWNjZXNzIHRoZSBjdXN0b20gPDwgb3BlcmF0
b3IKKyAgICAvLyBmcm9tIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAgV2l0aCB0aGlzIHVzaW5nIGRl
Y2xhcmF0aW9uLAorICAgIC8vIG92ZXJsb2FkcyBvZiA8PCBkZWZpbmVkIGluIHRoZSBnbG9iYWwg
bmFtZXNwYWNlIGFuZCB0aG9zZQorICAgIC8vIHZpc2libGUgdmlhIEtvZW5pZyBsb29rdXAgYXJl
IGJvdGggZXhwb3NlZCBpbiB0aGlzIGZ1bmN0aW9uLgorICAgIHVzaW5nIDo6b3BlcmF0b3IgPDw7
CisgICAgKnNzXyA8PCB2YWw7CiAgICAgcmV0dXJuICp0aGlzOwogICB9CiAKQEAgLTE0MSw3ICsx
NTQsNyBAQCBjbGFzcyBHVEVTVF9BUElfIE1lc3NhZ2UgewogICAgIGlmIChwb2ludGVyID09IE5V
TEwpIHsKICAgICAgICpzc18gPDwgIihudWxsKSI7CiAgICAgfSBlbHNlIHsKLSAgICAgIDo6R1Rl
c3RTdHJlYW1Ub0hlbHBlcihzc18sIHBvaW50ZXIpOworICAgICAgKnNzXyA8PCBwb2ludGVyOwog
ICAgIH0KICAgICByZXR1cm4gKnRoaXM7CiAgIH0KQEAgLTE2NSwxMiArMTc4LDggQEAgY2xhc3Mg
R1RFU1RfQVBJXyBNZXNzYWdlIHsKIAogICAvLyBUaGVzZSB0d28gb3ZlcmxvYWRzIGFsbG93IHN0
cmVhbWluZyBhIHdpZGUgQyBzdHJpbmcgdG8gYSBNZXNzYWdlCiAgIC8vIHVzaW5nIHRoZSBVVEYt
OCBlbmNvZGluZy4KLSAgTWVzc2FnZSYgb3BlcmF0b3IgPDwoY29uc3Qgd2NoYXJfdCogd2lkZV9j
X3N0cikgewotICAgIHJldHVybiAqdGhpcyA8PCBpbnRlcm5hbDo6U3RyaW5nOjpTaG93V2lkZUNT
dHJpbmcod2lkZV9jX3N0cik7Ci0gIH0KLSAgTWVzc2FnZSYgb3BlcmF0b3IgPDwod2NoYXJfdCog
d2lkZV9jX3N0cikgewotICAgIHJldHVybiAqdGhpcyA8PCBpbnRlcm5hbDo6U3RyaW5nOjpTaG93
V2lkZUNTdHJpbmcod2lkZV9jX3N0cik7Ci0gIH0KKyAgTWVzc2FnZSYgb3BlcmF0b3IgPDwoY29u
c3Qgd2NoYXJfdCogd2lkZV9jX3N0cik7CisgIE1lc3NhZ2UmIG9wZXJhdG9yIDw8KHdjaGFyX3Qq
IHdpZGVfY19zdHIpOwogCiAjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCiAgIC8vIENvbnZlcnRz
IHRoZSBnaXZlbiB3aWRlIHN0cmluZyB0byBhIG5hcnJvdyBzdHJpbmcgdXNpbmcgdGhlIFVURi04
CkBAIC0xODQsMTMgKzE5MywxMSBAQCBjbGFzcyBHVEVTVF9BUElfIE1lc3NhZ2UgewogICBNZXNz
YWdlJiBvcGVyYXRvciA8PChjb25zdCA6OndzdHJpbmcmIHdzdHIpOwogI2VuZGlmICAvLyBHVEVT
VF9IQVNfR0xPQkFMX1dTVFJJTkcKIAotICAvLyBHZXRzIHRoZSB0ZXh0IHN0cmVhbWVkIHRvIHRo
aXMgb2JqZWN0IHNvIGZhciBhcyBhIFN0cmluZy4KKyAgLy8gR2V0cyB0aGUgdGV4dCBzdHJlYW1l
ZCB0byB0aGlzIG9iamVjdCBzbyBmYXIgYXMgYW4gc3RkOjpzdHJpbmcuCiAgIC8vIEVhY2ggJ1ww
JyBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlciBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgogICAvLwog
ICAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VSIFBST0dS
QU0uCi0gIGludGVybmFsOjpTdHJpbmcgR2V0U3RyaW5nKCkgY29uc3QgewotICAgIHJldHVybiBp
bnRlcm5hbDo6U3RyU3RyZWFtVG9TdHJpbmcoc3NfKTsKLSAgfQorICBzdGQ6OnN0cmluZyBHZXRT
dHJpbmcoKSBjb25zdDsKIAogIHByaXZhdGU6CiAjaWYgR1RFU1RfT1NfU1lNQklBTgpAQCAtMTk5
LDIxICsyMDYsMjUgQEAgY2xhc3MgR1RFU1RfQVBJXyBNZXNzYWdlIHsKICAgLy8gZGVjaWRlIGJl
dHdlZW4gY2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIGZvciBUIGFuZCBUKiwgc28gYQog
ICAvLyB0cjE6OnR5cGVfdHJhaXRzLWxpa2UgaXNfcG9pbnRlciB3b3JrcywgYW5kIHdlIGNhbiBv
dmVybG9hZCBvbiB0aGF0LgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgaW5saW5lIHZvaWQg
U3RyZWFtSGVscGVyKGludGVybmFsOjp0cnVlX3R5cGUgLypkdW1teSovLCBUKiBwb2ludGVyKSB7
CisgIGlubGluZSB2b2lkIFN0cmVhbUhlbHBlcihpbnRlcm5hbDo6dHJ1ZV90eXBlIC8qaXNfcG9p
bnRlciovLCBUKiBwb2ludGVyKSB7CiAgICAgaWYgKHBvaW50ZXIgPT0gTlVMTCkgewogICAgICAg
KnNzXyA8PCAiKG51bGwpIjsKICAgICB9IGVsc2UgewotICAgICAgOjpHVGVzdFN0cmVhbVRvSGVs
cGVyKHNzXywgcG9pbnRlcik7CisgICAgICAqc3NfIDw8IHBvaW50ZXI7CiAgICAgfQogICB9CiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBpbmxpbmUgdm9pZCBTdHJlYW1IZWxwZXIoaW50ZXJu
YWw6OmZhbHNlX3R5cGUgLypkdW1teSovLCBjb25zdCBUJiB2YWx1ZSkgewotICAgIDo6R1Rlc3RT
dHJlYW1Ub0hlbHBlcihzc18sIHZhbHVlKTsKKyAgaW5saW5lIHZvaWQgU3RyZWFtSGVscGVyKGlu
dGVybmFsOjpmYWxzZV90eXBlIC8qaXNfcG9pbnRlciovLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVCYgdmFsdWUpIHsKKyAgICAvLyBTZWUgdGhlIGNvbW1lbnRzIGluIE1lc3Nh
Z2UmIG9wZXJhdG9yIDw8KGNvbnN0IFQmKSBhYm92ZSBmb3Igd2h5CisgICAgLy8gd2UgbmVlZCB0
aGlzIHVzaW5nIHN0YXRlbWVudC4KKyAgICB1c2luZyA6Om9wZXJhdG9yIDw8OworICAgICpzc18g
PDwgdmFsdWU7CiAgIH0KICNlbmRpZiAgLy8gR1RFU1RfT1NfU1lNQklBTgogCiAgIC8vIFdlJ2xs
IGhvbGQgdGhlIHRleHQgc3RyZWFtZWQgdG8gdGhpcyBvYmplY3QgaGVyZS4KLSAgaW50ZXJuYWw6
OlN0clN0cmVhbSogY29uc3Qgc3NfOworICBjb25zdCBpbnRlcm5hbDo6c2NvcGVkX3B0cjwgOjpz
dGQ6OnN0cmluZ3N0cmVhbT4gc3NfOwogCiAgIC8vIFdlIGRlY2xhcmUgKGJ1dCBkb24ndCBpbXBs
ZW1lbnQpIHRoaXMgdG8gcHJldmVudCB0aGUgY29tcGlsZXIKICAgLy8gZnJvbSBpbXBsZW1lbnRp
bmcgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCkBAIC0yMjUsNiArMjM2LDIwIEBAIGlubGluZSBz
dGQ6Om9zdHJlYW0mIG9wZXJhdG9yIDw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IE1lc3NhZ2Um
IHNiKSB7CiAgIHJldHVybiBvcyA8PCBzYi5HZXRTdHJpbmcoKTsKIH0KIAorbmFtZXNwYWNlIGlu
dGVybmFsIHsKKworLy8gQ29udmVydHMgYSBzdHJlYW1hYmxlIHZhbHVlIHRvIGFuIHN0ZDo6c3Ry
aW5nLiAgQSBOVUxMIHBvaW50ZXIgaXMKKy8vIGNvbnZlcnRlZCB0byAiKG51bGwpIi4gIFdoZW4g
dGhlIGlucHV0IHZhbHVlIGlzIGEgOjpzdHJpbmcsCisvLyA6OnN0ZDo6c3RyaW5nLCA6OndzdHJp
bmcsIG9yIDo6c3RkOjp3c3RyaW5nIG9iamVjdCwgZWFjaCBOVUwKKy8vIGNoYXJhY3RlciBpbiBp
dCBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGQ6OnN0
cmluZyBTdHJlYW1hYmxlVG9TdHJpbmcoY29uc3QgVCYgc3RyZWFtYWJsZSkgeworICByZXR1cm4g
KE1lc3NhZ2UoKSA8PCBzdHJlYW1hYmxlKS5HZXRTdHJpbmcoKTsKK30KKworfSAgLy8gbmFtZXNw
YWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCitHVEVTVF9ESVNBQkxFX01T
Q19XQVJOSU5HU19QT1BfKCkgIC8vICA0MjUxCisKICNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9H
VEVTVF9HVEVTVF9NRVNTQUdFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oCmluZGV4IDgxMDA2OTY0NGQyM2Fk
MzU1OTczY2I1M2ZjZWIwYTg1NmIwYTAwNmMuLjFlMjJmNjg1MDI0MGYxM2ViZDk5ZWU5YTlhZjgz
NmJiYWI3M2JjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oCkBAIC0xLDQgKzEsNiBAQAotLy8gVGhpcyBm
aWxlIHdhcyBHRU5FUkFURUQgYnkgYSBzY3JpcHQuICBETyBOT1QgRURJVCBCWSBIQU5EISEhCisv
LyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBjb21tYW5kOgorLy8gICAgIHB1bXAucHkgZ3Rl
c3QtcGFyYW0tdGVzdC5oLnB1bXAKKy8vIERPIE5PVCBFRElUIEJZIEhBTkQhISEKIAogLy8gQ29w
eXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCiAvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjks
MTMgKzMxLDEzIEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQXV0
aG9yczogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCiAvLyBNYWNyb3MgYW5kIGZ1
bmN0aW9ucyBmb3IgaW1wbGVtZW50aW5nIHBhcmFtZXRlcml6ZWQgdGVzdHMKLS8vIGluIEdvb2ds
ZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gaW4gR29vZ2xlIEMrKyBU
ZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBm
aWxlIGlzIGdlbmVyYXRlZCBieSBhIFNDUklQVC4gIERPIE5PVCBFRElUIEJZIEhBTkQhCiAvLwor
Ly8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xV
REVfR1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNU
X0dURVNUX1BBUkFNX1RFU1RfSF8KIApAQCAtNDgsMTAgKzUwLDEyIEBACiAjaWYgMAogCiAvLyBU
byB3cml0ZSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLCBmaXJzdCB5b3Ugc2hvdWxkIGRlZmlu
ZSBhIGZpeHR1cmUKLS8vIGNsYXNzLiBJdCBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpU
ZXN0V2l0aFBhcmFtPFQ+LCB3aGVyZSBUIGlzCi0vLyB0aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRl
ciB2YWx1ZXMuIFRlc3RXaXRoUGFyYW08VD4gaXMgaXRzZWxmIGRlcml2ZWQKLS8vIGZyb20gdGVz
dGluZzo6VGVzdC4gVCBjYW4gYmUgYW55IGNvcHlhYmxlIHR5cGUuIElmIGl0J3MgYSByYXcgcG9p
bnRlciwKLS8vIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBsaWZlc3BhbiBv
ZiB0aGUgcG9pbnRlZCB2YWx1ZXMuCisvLyBjbGFzcy4gSXQgaXMgdXN1YWxseSBkZXJpdmVkIGZy
b20gdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxUPiAoc2VlIGJlbG93IGZvcgorLy8gYW5vdGhlciBp
bmhlcml0YW5jZSBzY2hlbWUgdGhhdCdzIHNvbWV0aW1lcyB1c2VmdWwgaW4gbW9yZSBjb21wbGlj
YXRlZAorLy8gY2xhc3MgaGllcmFyY2hpZXMpLCB3aGVyZSB0aGUgdHlwZSBvZiB5b3VyIHBhcmFt
ZXRlciB2YWx1ZXMuCisvLyBUZXN0V2l0aFBhcmFtPFQ+IGlzIGl0c2VsZiBkZXJpdmVkIGZyb20g
dGVzdGluZzo6VGVzdC4gVCBjYW4gYmUgYW55CisvLyBjb3B5YWJsZSB0eXBlLiBJZiBpdCdzIGEg
cmF3IHBvaW50ZXIsIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZQorLy8gbGlm
ZXNwYW4gb2YgdGhlIHBvaW50ZWQgdmFsdWVzLgogCiBjbGFzcyBGb29UZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBjaGFyKj4gewogICAvLyBZb3UgY2FuIGltcGxl
bWVudCBhbGwgdGhlIHVzdWFsIGNsYXNzIGZpeHR1cmUgbWVtYmVycyBoZXJlLgpAQCAtNzUsNyAr
NzksNyBAQCBURVNUX1AoRm9vVGVzdCwgSGFzQmxhaEJsYWgpIHsKIC8vIEZpbmFsbHksIHlvdSBj
YW4gdXNlIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIHRvIGluc3RhbnRpYXRlIHRoZSB0ZXN0CiAv
LyBjYXNlIHdpdGggYW55IHNldCBvZiBwYXJhbWV0ZXJzIHlvdSB3YW50LiBHb29nbGUgVGVzdCBk
ZWZpbmVzIGEgbnVtYmVyCiAvLyBvZiBmdW5jdGlvbnMgZm9yIGdlbmVyYXRpbmcgdGVzdCBwYXJh
bWV0ZXJzLiBUaGV5IHJldHVybiB3aGF0IHdlIGNhbGwKLS8vIChzdXJwcmlzZSEpIHBhcmFtZXRl
ciBnZW5lcmF0b3JzLiBIZXJlIGlzIGEgIHN1bW1hcnkgb2YgdGhlbSwgd2hpY2gKKy8vIChzdXJw
cmlzZSEpIHBhcmFtZXRlciBnZW5lcmF0b3JzLiBIZXJlIGlzIGEgc3VtbWFyeSBvZiB0aGVtLCB3
aGljaAogLy8gYXJlIGFsbCBpbiB0aGUgdGVzdGluZyBuYW1lc3BhY2U6CiAvLwogLy8KQEAgLTE0
NiwyMyArMTUwLDQ0IEBAIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFub3RoZXJJbnN0YW50aWF0
aW9uTmFtZSwgRm9vVGVzdCwgVmFsdWVzSW4ocGV0cykpOwogLy8gSW4gdGhlIGZ1dHVyZSwgd2Ug
cGxhbiB0byBwdWJsaXNoIHRoZSBBUEkgZm9yIGRlZmluaW5nIG5ldyBwYXJhbWV0ZXIKIC8vIGdl
bmVyYXRvcnMuIEJ1dCBmb3Igbm93IHRoaXMgaW50ZXJmYWNlIHJlbWFpbnMgcGFydCBvZiB0aGUg
aW50ZXJuYWwKIC8vIGltcGxlbWVudGF0aW9uIGFuZCBpcyBzdWJqZWN0IHRvIGNoYW5nZS4KKy8v
CisvLworLy8gQSBwYXJhbWV0ZXJpemVkIHRlc3QgZml4dHVyZSBtdXN0IGJlIGRlcml2ZWQgZnJv
bSB0ZXN0aW5nOjpUZXN0IGFuZCBmcm9tCisvLyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8
VD4sIHdoZXJlIFQgaXMgdGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRlcgorLy8gdmFsdWVzLiBJbmhl
cml0aW5nIGZyb20gVGVzdFdpdGhQYXJhbTxUPiBzYXRpc2ZpZXMgdGhhdCByZXF1aXJlbWVudCBi
ZWNhdXNlCisvLyBUZXN0V2l0aFBhcmFtPFQ+IGluaGVyaXRzIGZyb20gYm90aCBUZXN0IGFuZCBX
aXRoUGFyYW1JbnRlcmZhY2UuIEluIG1vcmUKKy8vIGNvbXBsaWNhdGVkIGhpZXJhcmNoaWVzLCBo
b3dldmVyLCBpdCBpcyBvY2Nhc2lvbmFsbHkgdXNlZnVsIHRvIGluaGVyaXQKKy8vIHNlcGFyYXRl
bHkgZnJvbSBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UuIEZvciBleGFtcGxlOgorCitjbGFz
cyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICAvLyBZb3UgY2FuIGluaGVy
aXQgYWxsIHRoZSB1c3VhbCBtZW1iZXJzIGZvciBhIG5vbi1wYXJhbWV0ZXJpemVkIHRlc3QKKyAg
Ly8gZml4dHVyZSBoZXJlLgorfTsKKworY2xhc3MgRGVyaXZlZFRlc3QgOiBwdWJsaWMgQmFzZVRl
c3QsIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxpbnQ+IHsKKyAgLy8gVGhl
IHVzdWFsIHRlc3QgZml4dHVyZSBtZW1iZXJzIGdvIGhlcmUgdG9vLgorfTsKKworVEVTVF9GKEJh
c2VUZXN0LCBIYXNGb28pIHsKKyAgLy8gVGhpcyBpcyBhbiBvcmRpbmFyeSBub24tcGFyYW1ldGVy
aXplZCB0ZXN0LgorfQorCitURVNUX1AoRGVyaXZlZFRlc3QsIERvZXNCbGFoKSB7CisgIC8vIEdl
dFBhcmFtIHdvcmtzIGp1c3QgdGhlIHNhbWUgaGVyZSBhcyBpZiB5b3UgaW5oZXJpdCBmcm9tIFRl
c3RXaXRoUGFyYW0uCisgIEVYUEVDVF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsKK30KIAog
I2VuZGlmICAvLyAwCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+Cisj
aW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAjaWYgIUdURVNUX09TX1NZ
TUJJQU4KLSNpbmNsdWRlIDx1dGlsaXR5PgorIyBpbmNsdWRlIDx1dGlsaXR5PgogI2VuZGlmCiAK
LS8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBkZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBi
ZWluZyAjaW5jbHVkZWQKLS8vICp1bmNvbmRpdGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNp
bmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKLS8vIGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RF
U1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNsdWRl
IDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaD4KLQotI2lmIEdURVNUX0hBU19QQVJB
TV9URVNUCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNs
dWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgiCisjaW5jbHVkZSAiZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCIKIAogbmFtZXNwYWNlIHRlc3Rp
bmcgewogCkBAIC0yNDMsNyArMjY4LDcgQEAgaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFJh
bmdlKFQgc3RhcnQsIFQgZW5kKSB7CiAvLyBlYWNoIHdpdGggQy1zdHJpbmcgdmFsdWVzIG9mICJm
b28iLCAiYmFyIiwgYW5kICJiYXoiOgogLy8KIC8vIGNvbnN0IGNoYXIqIHN0cmluZ3NbXSA9IHsi
Zm9vIiwgImJhciIsICJiYXoifTsKLS8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFN0cmluZ1Nl
cXVlbmNlLCBTcnRpbmdUZXN0LCBWYWx1ZXNJbihzdHJpbmdzKSk7CisvLyBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUChTdHJpbmdTZXF1ZW5jZSwgU3RyaW5nVGVzdCwgVmFsdWVzSW4oc3RyaW5ncykp
OwogLy8KIC8vIFRoaXMgaW5zdGFudGlhdGVzIHRlc3RzIGZyb20gdGVzdCBjYXNlIFN0bFN0cmlu
Z1Rlc3QKIC8vIGVhY2ggd2l0aCBTVEwgc3RyaW5ncyB3aXRoIHZhbHVlcyAiYSIgYW5kICJiIjoK
QEAgLTI3NiwxMSArMzAxLDEwIEBAIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxUPiBSYW5nZShU
IHN0YXJ0LCBUIGVuZCkgewogLy8KIHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+
CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ci0gICAgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9y
X3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKLSAgRm9yd2Fy
ZEl0ZXJhdG9yIGJlZ2luLAotICBGb3J3YXJkSXRlcmF0b3IgZW5kKSB7Ci0gIHR5cGVkZWYgdHlw
ZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBl
Ci0gICAgICBQYXJhbVR5cGU7CisgIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJh
dG9yVHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+CitWYWx1ZXNJbihGb3J3YXJk
SXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJdGVyYXRvciBlbmQpIHsKKyAgdHlwZWRlZiB0eXBlbmFt
ZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVyYXRvclRyYWl0czxGb3J3YXJkSXRlcmF0b3I+Cisg
ICAgICA6OnZhbHVlX3R5cGUgUGFyYW1UeXBlOwogICByZXR1cm4gaW50ZXJuYWw6OlBhcmFtR2Vu
ZXJhdG9yPFBhcmFtVHlwZT4oCiAgICAgICBuZXcgaW50ZXJuYWw6OlZhbHVlc0luSXRlcmF0b3JS
YW5nZUdlbmVyYXRvcjxQYXJhbVR5cGU+KGJlZ2luLCBlbmQpKTsKIH0KQEAgLTExOTIsNyArMTIx
Niw3IEBAIGlubGluZSBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ym9vbD4gQm9vbCgpIHsKICAg
cmV0dXJuIFZhbHVlcyhmYWxzZSwgdHJ1ZSk7CiB9CiAKLSNpZiBHVEVTVF9IQVNfQ09NQklORQor
IyBpZiBHVEVTVF9IQVNfQ09NQklORQogLy8gQ29tYmluZSgpIGFsbG93cyB0aGUgdXNlciB0byBj
b21iaW5lIHR3byBvciBtb3JlIHNlcXVlbmNlcyB0byBwcm9kdWNlCiAvLyB2YWx1ZXMgb2YgYSBD
YXJ0ZXNpYW4gcHJvZHVjdCBvZiB0aG9zZSBzZXF1ZW5jZXMnIGVsZW1lbnRzLgogLy8KQEAgLTEy
MjgsNyArMTI1Miw3IEBAIGlubGluZSBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ym9vbD4gQm9v
bCgpIHsKIC8vIEJvb2xlYW4gZmxhZ3M6CiAvLwogLy8gY2xhc3MgRmxhZ0RlcGVuZGVudFRlc3QK
LS8vICAgICA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHR1cGxlKGJvb2wsIGJvb2wp
PiA+IHsKKy8vICAgICA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHR1cGxlPGJvb2ws
IGJvb2w+ID4gewogLy8gICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CiAvLyAgICAgLy8gQXNzaWdu
cyBleHRlcm5hbF9mbGFnXzEgYW5kIGV4dGVybmFsX2ZsYWdfMiB2YWx1ZXMgZnJvbSB0aGUgdHVw
bGUuCiAvLyAgICAgdGllKGV4dGVybmFsX2ZsYWdfMSwgZXh0ZXJuYWxfZmxhZ18yKSA9IEdldFBh
cmFtKCk7CkBAIC0xMzQ0LDExICsxMzY4LDkgQEAgaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RI
b2xkZXIxMDxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAogICAgICAgR2VuZXJh
dG9yMTA+KAogICAgICAgZzEsIGcyLCBnMywgZzQsIGc1LCBnNiwgZzcsIGc4LCBnOSwgZzEwKTsK
IH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKLQotCisjIGVuZGlmICAvLyBHVEVTVF9I
QVNfQ09NQklORQogCi0jZGVmaW5lIFRFU1RfUCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBc
CisjIGRlZmluZSBURVNUX1AodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXAogICBjbGFzcyBH
VEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIFwKICAgICAg
IDogcHVibGljIHRlc3RfY2FzZV9uYW1lIHsgXAogICAgcHVibGljOiBcCkBAIC0xMzU4LDE0ICsx
MzgwLDE3IEBAIGludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMTA8R2VuZXJhdG9yMSwg
R2VuZXJhdG9yMiwgR2VuZXJhdG9yMywKICAgICBzdGF0aWMgaW50IEFkZFRvUmVnaXN0cnkoKSB7
IFwKICAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRlcml6
ZWRfdGVzdF9yZWdpc3RyeSgpLiBcCiAgICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVy
PHRlc3RfY2FzZV9uYW1lPihcCi0gICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgX19GSUxF
X18sIF9fTElORV9fKS0+QWRkVGVzdFBhdHRlcm4oXAotICAgICAgICAgICAgICAgICAgI3Rlc3Rf
Y2FzZV9uYW1lLCBcCi0gICAgICAgICAgICAgICAgICAjdGVzdF9uYW1lLCBcCi0gICAgICAgICAg
ICAgICAgICBuZXcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdE1ldGFGYWN0b3J5PCBcCi0gICAg
ICAgICAgICAgICAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwg
dGVzdF9uYW1lKT4oKSk7IFwKKyAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCisgICAg
ICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihcCisgICAgICAgICAg
ICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pKS0+QWRkVGVzdFBhdHRlcm4oXAorICAgICAgICAg
ICAgICAgICAgICAgIEdURVNUX1NUUklOR0lGWV8odGVzdF9jYXNlX25hbWUpLCBcCisgICAgICAg
ICAgICAgICAgICAgICAgR1RFU1RfU1RSSU5HSUZZXyh0ZXN0X25hbWUpLCBcCisgICAgICAgICAg
ICAgICAgICAgICAgbmV3IDo6dGVzdGluZzo6aW50ZXJuYWw6OlRlc3RNZXRhRmFjdG9yeTwgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpPigpKTsg
XAogICAgICAgcmV0dXJuIDA7IFwKICAgICB9IFwKLSAgICBzdGF0aWMgaW50IGd0ZXN0X3JlZ2lz
dGVyaW5nX2R1bW15XzsgXAorICAgIHN0YXRpYyBpbnQgZ3Rlc3RfcmVnaXN0ZXJpbmdfZHVtbXlf
IEdURVNUX0FUVFJJQlVURV9VTlVTRURfOyBcCiAgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOXyhcCiAgICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUs
IHRlc3RfbmFtZSkpOyBcCiAgIH07IFwKQEAgLTEzNzQsMTkgKzEzOTksMzkgQEAgaW50ZXJuYWw6
OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIxMDxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0
b3IzLAogICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9u
YW1lKTo6QWRkVG9SZWdpc3RyeSgpOyBcCiAgIHZvaWQgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0
ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKTo6VGVzdEJvZHkoKQogCi0jZGVmaW5lIElOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKHByZWZpeCwgdGVzdF9jYXNlX25hbWUsIGdlbmVyYXRvcikgXAotICA6
OnRlc3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVyYXRvcjx0ZXN0X2Nhc2VfbmFtZTo6UGFyYW1U
eXBlPiBcCi0gICAgICBndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJh
dG9yXygpIHsgcmV0dXJuIGdlbmVyYXRvcjsgfSBcCi0gIGludCBndGVzdF8jI3ByZWZpeCMjdGVz
dF9jYXNlX25hbWUjI19kdW1teV8gPSBcCi0gICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5wYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKS4gXAotICAgICAgICAgIEdl
dFRlc3RDYXNlUGF0dGVybkhvbGRlcjx0ZXN0X2Nhc2VfbmFtZT4oXAotICAgICAgICAgICAgICAj
dGVzdF9jYXNlX25hbWUsIF9fRklMRV9fLCBfX0xJTkVfXyktPkFkZFRlc3RDYXNlSW5zdGFudGlh
dGlvbihcCi0gICAgICAgICAgICAgICAgICAjcHJlZml4LCBcCi0gICAgICAgICAgICAgICAgICAm
Z3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRvcl8sIFwKLSAgICAg
ICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykKKy8vIFRoZSBvcHRpb25hbCBsYXN0IGFy
Z3VtZW50IHRvIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIGFsbG93cyB0aGUgdXNlcgorLy8gdG8g
c3BlY2lmeSBhIGZ1bmN0aW9uIG9yIGZ1bmN0b3IgdGhhdCBnZW5lcmF0ZXMgY3VzdG9tIHRlc3Qg
bmFtZSBzdWZmaXhlcworLy8gYmFzZWQgb24gdGhlIHRlc3QgcGFyYW1ldGVycy4gVGhlIGZ1bmN0
aW9uIHNob3VsZCBhY2NlcHQgb25lIGFyZ3VtZW50IG9mCisvLyB0eXBlIHRlc3Rpbmc6OlRlc3RQ
YXJhbUluZm88Y2xhc3MgUGFyYW1UeXBlPiwgYW5kIHJldHVybiBzdGQ6OnN0cmluZy4KKy8vCisv
LyB0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1OYW1lIGlzIGEgYnVpbHRpbiB0ZXN0IHN1ZmZp
eCBnZW5lcmF0b3IgdGhhdAorLy8gcmV0dXJucyB0aGUgdmFsdWUgb2YgdGVzdGluZzo6UHJpbnRU
b1N0cmluZyhHZXRQYXJhbSgpKS4KKy8vCisvLyBOb3RlOiB0ZXN0IG5hbWVzIG11c3QgYmUgbm9u
LWVtcHR5LCB1bmlxdWUsIGFuZCBtYXkgb25seSBjb250YWluIEFTQ0lJCisvLyBhbHBoYW51bWVy
aWMgY2hhcmFjdGVycyBvciB1bmRlcnNjb3JlLiBCZWNhdXNlIFByaW50VG9TdHJpbmcgYWRkcyBx
dW90ZXMKKy8vIHRvIHN0ZDo6c3RyaW5nIGFuZCBDIHN0cmluZ3MsIGl0IHdvbid0IHdvcmsgZm9y
IHRoZXNlIHR5cGVzLgorCisjZGVmaW5lIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKHByZWZpeCwg
dGVzdF9jYXNlX25hbWUsIGdlbmVyYXRvciwgLi4uKSAgICAgICAgXAorICBzdGF0aWMgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlwZT4g
ICAgICAgIFwKKyAgICAgIGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5l
cmF0b3JfKCkgeyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIGdlbmVyYXRvcjsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgc3RhdGljIDo6c3RkOjpzdHJpbmcgZ3Rlc3Rf
IyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRlTmFtZV8oICAgICBcCisgICAg
ICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlw
ZT4mIGluZm8pIHsgICAgICAgXAorICAgIHJldHVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpHZXRQ
YXJhbU5hbWVHZW48dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlwZT4oICAgIFwKKyAgICAgICAgX19W
QV9BUkdTX18pKGluZm8pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBzdGF0aWMgaW50IGd0ZXN0
XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX2R1bW15XyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VE
XyA9IFwKKyAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgLT5wYXJhbWV0ZXJpemVk
X3Rlc3RfcmVnaXN0cnkoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgIC5HZXRUZXN0Q2FzZVBhdHRlcm5Ib2xkZXI8dGVzdF9jYXNlX25hbWU+KCAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihfX0ZJTEVfXywgX19MSU5F
X18pKSAgICAgICAgICAgXAorICAgICAgICAgIC0+QWRkVGVzdENhc2VJbnN0YW50aWF0aW9uKCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAg
I3ByZWZpeCwgJmd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0b3Jf
LCAgICAgICBcCisgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUj
I19FdmFsR2VuZXJhdGVOYW1lXywgX19GSUxFX18sICAgXAorICAgICAgICAgICAgICBfX0xJTkVf
XykKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFS
QU1fVEVTVAotCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUEFSQU1fVEVT
VF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9n
dGVzdC1wYXJhbS10ZXN0LmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1bXAKaW5kZXggYTIzMTE4ODI3ZjFkNDgwZmJiYjgy
NTJmMzQwZjBlYmVkYTM0NmUyNS4uMjc0ZjJiM2I1NjkzMzAwMTJlODVlZTNjZjRmZDU3ZWIwYjU0
MjFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9n
dGVzdC1wYXJhbS10ZXN0LmgucHVtcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC5wdW1wCkBAIC0zMCwxMyArMzAsMTIgQEAgJHZh
ciBtYXh0dXBsZSA9IDEwICAkJCBNYXhpbXVtIG51bWJlciBvZiBDb21iaW5lIGFyZ3VtZW50cyB3
ZSB3YW50IHRvIHN1cHBvcnQuCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwot
Ly8gQXV0aG9yczogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCiAvLyBNYWNyb3Mg
YW5kIGZ1bmN0aW9ucyBmb3IgaW1wbGVtZW50aW5nIHBhcmFtZXRlcml6ZWQgdGVzdHMKLS8vIGlu
IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gaW4gR29vZ2xl
IEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8g
VGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBhIFNDUklQVC4gIERPIE5PVCBFRElUIEJZIEhBTkQh
CiAvLworLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQogI2lmbmRlZiBHVEVTVF9J
TkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9H
VEVTVF9HVEVTVF9QQVJBTV9URVNUX0hfCiAKQEAgLTQ5LDEwICs0OCwxMiBAQCAkdmFyIG1heHR1
cGxlID0gMTAgICQkIE1heGltdW0gbnVtYmVyIG9mIENvbWJpbmUgYXJndW1lbnRzIHdlIHdhbnQg
dG8gc3VwcG9ydC4KICNpZiAwCiAKIC8vIFRvIHdyaXRlIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dHMsIGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4dHVyZQotLy8gY2xhc3MuIEl0IG11c3Qg
YmUgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08VD4sIHdoZXJlIFQgaXMKLS8v
IHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVlcy4gVGVzdFdpdGhQYXJhbTxUPiBpcyBp
dHNlbGYgZGVyaXZlZAotLy8gZnJvbSB0ZXN0aW5nOjpUZXN0LiBUIGNhbiBiZSBhbnkgY29weWFi
bGUgdHlwZS4gSWYgaXQncyBhIHJhdyBwb2ludGVyLAotLy8geW91IGFyZSByZXNwb25zaWJsZSBm
b3IgbWFuYWdpbmcgdGhlIGxpZmVzcGFuIG9mIHRoZSBwb2ludGVkIHZhbHVlcy4KKy8vIGNsYXNz
LiBJdCBpcyB1c3VhbGx5IGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPFQ+IChz
ZWUgYmVsb3cgZm9yCisvLyBhbm90aGVyIGluaGVyaXRhbmNlIHNjaGVtZSB0aGF0J3Mgc29tZXRp
bWVzIHVzZWZ1bCBpbiBtb3JlIGNvbXBsaWNhdGVkCisvLyBjbGFzcyBoaWVyYXJjaGllcyksIHdo
ZXJlIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVlcy4KKy8vIFRlc3RXaXRoUGFyYW08
VD4gaXMgaXRzZWxmIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0LiBUIGNhbiBiZSBhbnkKKy8v
IGNvcHlhYmxlIHR5cGUuIElmIGl0J3MgYSByYXcgcG9pbnRlciwgeW91IGFyZSByZXNwb25zaWJs
ZSBmb3IgbWFuYWdpbmcgdGhlCisvLyBsaWZlc3BhbiBvZiB0aGUgcG9pbnRlZCB2YWx1ZXMuCiAK
IGNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGNvbnN0IGNo
YXIqPiB7CiAgIC8vIFlvdSBjYW4gaW1wbGVtZW50IGFsbCB0aGUgdXN1YWwgY2xhc3MgZml4dHVy
ZSBtZW1iZXJzIGhlcmUuCkBAIC03Niw3ICs3Nyw3IEBAIFRFU1RfUChGb29UZXN0LCBIYXNCbGFo
QmxhaCkgewogLy8gRmluYWxseSwgeW91IGNhbiB1c2UgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ag
dG8gaW5zdGFudGlhdGUgdGhlIHRlc3QKIC8vIGNhc2Ugd2l0aCBhbnkgc2V0IG9mIHBhcmFtZXRl
cnMgeW91IHdhbnQuIEdvb2dsZSBUZXN0IGRlZmluZXMgYSBudW1iZXIKIC8vIG9mIGZ1bmN0aW9u
cyBmb3IgZ2VuZXJhdGluZyB0ZXN0IHBhcmFtZXRlcnMuIFRoZXkgcmV0dXJuIHdoYXQgd2UgY2Fs
bAotLy8gKHN1cnByaXNlISkgcGFyYW1ldGVyIGdlbmVyYXRvcnMuIEhlcmUgaXMgYSAgc3VtbWFy
eSBvZiB0aGVtLCB3aGljaAorLy8gKHN1cnByaXNlISkgcGFyYW1ldGVyIGdlbmVyYXRvcnMuIEhl
cmUgaXMgYSBzdW1tYXJ5IG9mIHRoZW0sIHdoaWNoCiAvLyBhcmUgYWxsIGluIHRoZSB0ZXN0aW5n
IG5hbWVzcGFjZToKIC8vCiAvLwpAQCAtMTM0LDkgKzEzNSwxMiBAQCBJTlNUQU5USUFURV9URVNU
X0NBU0VfUChBbm90aGVySW5zdGFudGlhdGlvbk5hbWUsIEZvb1Rlc3QsIFZhbHVlc0luKHBldHMp
KTsKIC8vIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UsIHdoZXRoZXIgdGhlaXIgZGVmaW5pdGlvbnMg
Y29tZSBiZWZvcmUgb3IKIC8vIEFGVEVSIHRoZSBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBzdGF0
ZW1lbnQuCiAvLwotLy8gUGxlYXNlIGFsc28gbm90ZSB0aGF0IGdlbmVyYXRvciBleHByZXNzaW9u
cyBhcmUgZXZhbHVhdGVkIGluCi0vLyBSVU5fQUxMX1RFU1RTKCksIGFmdGVyIG1haW4oKSBoYXMg
c3RhcnRlZC4gVGhpcyBhbGxvd3MgZXZhbHVhdGlvbiBvZgotLy8gcGFyYW1ldGVyIGxpc3QgYmFz
ZWQgb24gY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMuCisvLyBQbGVhc2UgYWxzbyBub3RlIHRoYXQg
Z2VuZXJhdG9yIGV4cHJlc3Npb25zIChpbmNsdWRpbmcgcGFyYW1ldGVycyB0byB0aGUKKy8vIGdl
bmVyYXRvcnMpIGFyZSBldmFsdWF0ZWQgaW4gSW5pdEdvb2dsZVRlc3QoKSwgYWZ0ZXIgbWFpbigp
IGhhcyBzdGFydGVkLgorLy8gVGhpcyBhbGxvd3MgdGhlIHVzZXIgb24gb25lIGhhbmQsIHRvIGFk
anVzdCBnZW5lcmF0b3IgcGFyYW1ldGVycyBpbiBvcmRlcgorLy8gdG8gZHluYW1pY2FsbHkgZGV0
ZXJtaW5lIGEgc2V0IG9mIHRlc3RzIHRvIHJ1biBhbmQgb24gdGhlIG90aGVyIGhhbmQsCisvLyBn
aXZlIHRoZSB1c2VyIGEgY2hhbmNlIHRvIGluc3BlY3QgdGhlIGdlbmVyYXRlZCB0ZXN0cyB3aXRo
IEdvb2dsZSBUZXN0CisvLyByZWZsZWN0aW9uIEFQSSBiZWZvcmUgUlVOX0FMTF9URVNUUygpIGlz
IGV4ZWN1dGVkLgogLy8KIC8vIFlvdSBjYW4gc2VlIHNhbXBsZXMvc2FtcGxlN191bml0dGVzdC5j
YyBhbmQgc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjCiAvLyBmb3IgbW9yZSBleGFtcGxlcy4K
QEAgLTE0NCwyMyArMTQ4LDQ0IEBAIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFub3RoZXJJbnN0
YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwgVmFsdWVzSW4ocGV0cykpOwogLy8gSW4gdGhlIGZ1dHVy
ZSwgd2UgcGxhbiB0byBwdWJsaXNoIHRoZSBBUEkgZm9yIGRlZmluaW5nIG5ldyBwYXJhbWV0ZXIK
IC8vIGdlbmVyYXRvcnMuIEJ1dCBmb3Igbm93IHRoaXMgaW50ZXJmYWNlIHJlbWFpbnMgcGFydCBv
ZiB0aGUgaW50ZXJuYWwKIC8vIGltcGxlbWVudGF0aW9uIGFuZCBpcyBzdWJqZWN0IHRvIGNoYW5n
ZS4KKy8vCisvLworLy8gQSBwYXJhbWV0ZXJpemVkIHRlc3QgZml4dHVyZSBtdXN0IGJlIGRlcml2
ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0IGFuZCBmcm9tCisvLyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRl
cmZhY2U8VD4sIHdoZXJlIFQgaXMgdGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRlcgorLy8gdmFsdWVz
LiBJbmhlcml0aW5nIGZyb20gVGVzdFdpdGhQYXJhbTxUPiBzYXRpc2ZpZXMgdGhhdCByZXF1aXJl
bWVudCBiZWNhdXNlCisvLyBUZXN0V2l0aFBhcmFtPFQ+IGluaGVyaXRzIGZyb20gYm90aCBUZXN0
IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UuIEluIG1vcmUKKy8vIGNvbXBsaWNhdGVkIGhpZXJhcmNo
aWVzLCBob3dldmVyLCBpdCBpcyBvY2Nhc2lvbmFsbHkgdXNlZnVsIHRvIGluaGVyaXQKKy8vIHNl
cGFyYXRlbHkgZnJvbSBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UuIEZvciBleGFtcGxlOgor
CitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICAvLyBZb3UgY2Fu
IGluaGVyaXQgYWxsIHRoZSB1c3VhbCBtZW1iZXJzIGZvciBhIG5vbi1wYXJhbWV0ZXJpemVkIHRl
c3QKKyAgLy8gZml4dHVyZSBoZXJlLgorfTsKKworY2xhc3MgRGVyaXZlZFRlc3QgOiBwdWJsaWMg
QmFzZVRlc3QsIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxpbnQ+IHsKKyAg
Ly8gVGhlIHVzdWFsIHRlc3QgZml4dHVyZSBtZW1iZXJzIGdvIGhlcmUgdG9vLgorfTsKKworVEVT
VF9GKEJhc2VUZXN0LCBIYXNGb28pIHsKKyAgLy8gVGhpcyBpcyBhbiBvcmRpbmFyeSBub24tcGFy
YW1ldGVyaXplZCB0ZXN0LgorfQorCitURVNUX1AoRGVyaXZlZFRlc3QsIERvZXNCbGFoKSB7Cisg
IC8vIEdldFBhcmFtIHdvcmtzIGp1c3QgdGhlIHNhbWUgaGVyZSBhcyBpZiB5b3UgaW5oZXJpdCBm
cm9tIFRlc3RXaXRoUGFyYW0uCisgIEVYUEVDVF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsK
K30KIAogI2VuZGlmICAvLyAwCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0
Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAjaWYgIUdURVNU
X09TX1NZTUJJQU4KLSNpbmNsdWRlIDx1dGlsaXR5PgorIyBpbmNsdWRlIDx1dGlsaXR5PgogI2Vu
ZGlmCiAKLS8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBkZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhl
YWRlciBiZWluZyAjaW5jbHVkZWQKLS8vICp1bmNvbmRpdGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRo
ZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKLS8vIGluc2lkZSAjaWYgR1RFU1RfSEFTX1BB
UkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNp
bmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaD4KLQotI2lmIEdURVNUX0hB
U19QQVJBTV9URVNUCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIK
KyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgiCisjaW5jbHVkZSAi
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCIKIAogbmFtZXNwYWNl
IHRlc3RpbmcgewogCkBAIC0yNDEsNyArMjY2LDcgQEAgaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9y
PFQ+IFJhbmdlKFQgc3RhcnQsIFQgZW5kKSB7CiAvLyBlYWNoIHdpdGggQy1zdHJpbmcgdmFsdWVz
IG9mICJmb28iLCAiYmFyIiwgYW5kICJiYXoiOgogLy8KIC8vIGNvbnN0IGNoYXIqIHN0cmluZ3Nb
XSA9IHsiZm9vIiwgImJhciIsICJiYXoifTsKLS8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFN0
cmluZ1NlcXVlbmNlLCBTcnRpbmdUZXN0LCBWYWx1ZXNJbihzdHJpbmdzKSk7CisvLyBJTlNUQU5U
SUFURV9URVNUX0NBU0VfUChTdHJpbmdTZXF1ZW5jZSwgU3RyaW5nVGVzdCwgVmFsdWVzSW4oc3Ry
aW5ncykpOwogLy8KIC8vIFRoaXMgaW5zdGFudGlhdGVzIHRlc3RzIGZyb20gdGVzdCBjYXNlIFN0
bFN0cmluZ1Rlc3QKIC8vIGVhY2ggd2l0aCBTVEwgc3RyaW5ncyB3aXRoIHZhbHVlcyAiYSIgYW5k
ICJiIjoKQEAgLTI3NCwxMSArMjk5LDEwIEBAIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxUPiBS
YW5nZShUIHN0YXJ0LCBUIGVuZCkgewogLy8KIHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRl
cmF0b3I+CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ci0gICAgdHlwZW5hbWUgOjpzdGQ6Oml0
ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKLSAg
Rm9yd2FyZEl0ZXJhdG9yIGJlZ2luLAotICBGb3J3YXJkSXRlcmF0b3IgZW5kKSB7Ci0gIHR5cGVk
ZWYgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1
ZV90eXBlCi0gICAgICBQYXJhbVR5cGU7CisgIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6
Okl0ZXJhdG9yVHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+CitWYWx1ZXNJbihG
b3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJdGVyYXRvciBlbmQpIHsKKyAgdHlwZWRlZiB0
eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVyYXRvclRyYWl0czxGb3J3YXJkSXRlcmF0
b3I+CisgICAgICA6OnZhbHVlX3R5cGUgUGFyYW1UeXBlOwogICByZXR1cm4gaW50ZXJuYWw6OlBh
cmFtR2VuZXJhdG9yPFBhcmFtVHlwZT4oCiAgICAgICBuZXcgaW50ZXJuYWw6OlZhbHVlc0luSXRl
cmF0b3JSYW5nZUdlbmVyYXRvcjxQYXJhbVR5cGU+KGJlZ2luLCBlbmQpKTsKIH0KQEAgLTM0OCw3
ICszNzIsNyBAQCBpbmxpbmUgaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPGJvb2w+IEJvb2woKSB7
CiAgIHJldHVybiBWYWx1ZXMoZmFsc2UsIHRydWUpOwogfQogCi0jaWYgR1RFU1RfSEFTX0NPTUJJ
TkUKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKIC8vIENvbWJpbmUoKSBhbGxvd3MgdGhlIHVzZXIg
dG8gY29tYmluZSB0d28gb3IgbW9yZSBzZXF1ZW5jZXMgdG8gcHJvZHVjZQogLy8gdmFsdWVzIG9m
IGEgQ2FydGVzaWFuIHByb2R1Y3Qgb2YgdGhvc2Ugc2VxdWVuY2VzJyBlbGVtZW50cy4KIC8vCkBA
IC0zODQsNyArNDA4LDcgQEAgaW5saW5lIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxib29sPiBC
b29sKCkgewogLy8gQm9vbGVhbiBmbGFnczoKIC8vCiAvLyBjbGFzcyBGbGFnRGVwZW5kZW50VGVz
dAotLy8gICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08dHVwbGUoYm9vbCwgYm9v
bCk+ID4geworLy8gICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08dHVwbGU8Ym9v
bCwgYm9vbD4gPiB7CiAvLyAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKIC8vICAgICAvLyBBc3Np
Z25zIGV4dGVybmFsX2ZsYWdfMSBhbmQgZXh0ZXJuYWxfZmxhZ18yIHZhbHVlcyBmcm9tIHRoZSB0
dXBsZS4KIC8vICAgICB0aWUoZXh0ZXJuYWxfZmxhZ18xLCBleHRlcm5hbF9mbGFnXzIpID0gR2V0
UGFyYW0oKTsKQEAgLTQwOSwxMSArNDMzLDkgQEAgaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RI
b2xkZXIkaTwkZm9yIGosIFtbR2VuZXJhdG9yJGpdXT4gQ29tYmluZSgKIH0KIAogXV0KLSNlbmRp
ZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKLQotCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklO
RQogCi0jZGVmaW5lIFRFU1RfUCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBcCisjIGRlZmlu
ZSBURVNUX1AodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXAogICBjbGFzcyBHVEVTVF9URVNU
X0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIFwKICAgICAgIDogcHVibGlj
IHRlc3RfY2FzZV9uYW1lIHsgXAogICAgcHVibGljOiBcCkBAIC00MjMsMTQgKzQ0NSwxNyBAQCBp
bnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlciRpPCRmb3IgaiwgW1tHZW5lcmF0b3Ikal1d
PiBDb21iaW5lKAogICAgIHN0YXRpYyBpbnQgQWRkVG9SZWdpc3RyeSgpIHsgXAogICAgICAgOjp0
ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lz
dHJ5KCkuIFwKICAgICAgICAgICBHZXRUZXN0Q2FzZVBhdHRlcm5Ib2xkZXI8dGVzdF9jYXNlX25h
bWU+KFwKLSAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBfX0ZJTEVfXywgX19MSU5FX18p
LT5BZGRUZXN0UGF0dGVybihcCi0gICAgICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIFwK
LSAgICAgICAgICAgICAgICAgICN0ZXN0X25hbWUsIFwKLSAgICAgICAgICAgICAgICAgIG5ldyA6
OnRlc3Rpbmc6OmludGVybmFsOjpUZXN0TWV0YUZhY3Rvcnk8IFwKLSAgICAgICAgICAgICAgICAg
ICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpPigp
KTsgXAorICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIFwKKyAgICAgICAgICAgICAgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKFwKKyAgICAgICAgICAgICAgICAgIF9fRklM
RV9fLCBfX0xJTkVfXykpLT5BZGRUZXN0UGF0dGVybihcCisgICAgICAgICAgICAgICAgICAgICAg
R1RFU1RfU1RSSU5HSUZZXyh0ZXN0X2Nhc2VfbmFtZSksIFwKKyAgICAgICAgICAgICAgICAgICAg
ICBHVEVTVF9TVFJJTkdJRllfKHRlc3RfbmFtZSksIFwKKyAgICAgICAgICAgICAgICAgICAgICBu
ZXcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdE1ldGFGYWN0b3J5PCBcCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8oXAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSk+KCkpOyBcCiAgICAgICByZXR1
cm4gMDsgXAogICAgIH0gXAotICAgIHN0YXRpYyBpbnQgZ3Rlc3RfcmVnaXN0ZXJpbmdfZHVtbXlf
OyBcCisgICAgc3RhdGljIGludCBndGVzdF9yZWdpc3RlcmluZ19kdW1teV8gR1RFU1RfQVRUUklC
VVRFX1VOVVNFRF87IFwKICAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFwKICAg
ICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSk7
IFwKICAgfTsgXApAQCAtNDM5LDE5ICs0NjQsMzcgQEAgaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1
Y3RIb2xkZXIkaTwkZm9yIGosIFtbR2VuZXJhdG9yJGpdXT4gQ29tYmluZSgKICAgICAgIEdURVNU
X1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSk6OkFkZFRvUmVnaXN0
cnkoKTsgXAogICB2b2lkIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSk6OlRlc3RCb2R5KCkKIAotI2RlZmluZSBJTlNUQU5USUFURV9URVNUX0NBU0VfUChw
cmVmaXgsIHRlc3RfY2FzZV9uYW1lLCBnZW5lcmF0b3IpIFwKLSAgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6UGFyYW1HZW5lcmF0b3I8dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlwZT4gXAorLy8gVGhlIG9w
dGlvbmFsIGxhc3QgYXJndW1lbnQgdG8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgYWxsb3dzIHRo
ZSB1c2VyCisvLyB0byBzcGVjaWZ5IGEgZnVuY3Rpb24gb3IgZnVuY3RvciB0aGF0IGdlbmVyYXRl
cyBjdXN0b20gdGVzdCBuYW1lIHN1ZmZpeGVzCisvLyBiYXNlZCBvbiB0aGUgdGVzdCBwYXJhbWV0
ZXJzLiBUaGUgZnVuY3Rpb24gc2hvdWxkIGFjY2VwdCBvbmUgYXJndW1lbnQgb2YKKy8vIHR5cGUg
dGVzdGluZzo6VGVzdFBhcmFtSW5mbzxjbGFzcyBQYXJhbVR5cGU+LCBhbmQgcmV0dXJuIHN0ZDo6
c3RyaW5nLgorLy8KKy8vIHRlc3Rpbmc6OlByaW50VG9TdHJpbmdQYXJhbU5hbWUgaXMgYSBidWls
dGluIHRlc3Qgc3VmZml4IGdlbmVyYXRvciB0aGF0CisvLyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0
ZXN0aW5nOjpQcmludFRvU3RyaW5nKEdldFBhcmFtKCkpLgorLy8KKy8vIE5vdGU6IHRlc3QgbmFt
ZXMgbXVzdCBiZSBub24tZW1wdHksIHVuaXF1ZSwgYW5kIG1heSBvbmx5IGNvbnRhaW4gQVNDSUkK
Ky8vIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9yIHVuZGVyc2NvcmUuIEJlY2F1c2UgUHJpbnRU
b1N0cmluZyBhZGRzIHF1b3RlcworLy8gdG8gc3RkOjpzdHJpbmcgYW5kIEMgc3RyaW5ncywgaXQg
d29uJ3Qgd29yayBmb3IgdGhlc2UgdHlwZXMuCisKKyMgZGVmaW5lIElOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QKHByZWZpeCwgdGVzdF9jYXNlX25hbWUsIGdlbmVyYXRvciwgLi4uKSBcCisgIHN0YXRp
YyA6OnRlc3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVyYXRvcjx0ZXN0X2Nhc2VfbmFtZTo6UGFy
YW1UeXBlPiBcCiAgICAgICBndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2Vu
ZXJhdG9yXygpIHsgcmV0dXJuIGdlbmVyYXRvcjsgfSBcCi0gIGludCBndGVzdF8jI3ByZWZpeCMj
dGVzdF9jYXNlX25hbWUjI19kdW1teV8gPSBcCisgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIGd0ZXN0
XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0ZU5hbWVfKCBcCisgICAgICBj
b25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlwZT4m
IGluZm8pIHsgXAorICAgIHJldHVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpHZXRQYXJhbU5hbWVH
ZW48dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlwZT4gXAorICAgICAgICAoX19WQV9BUkdTX18pKGlu
Zm8pOyBcCisgIH0gXAorICBzdGF0aWMgaW50IGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFt
ZSMjX2R1bW15XyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9IFwKICAgICAgIDo6dGVzdGluZzo6
VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpLiBc
CiAgICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVyPHRlc3RfY2FzZV9uYW1lPihcCi0g
ICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgX19GSUxFX18sIF9fTElORV9fKS0+QWRkVGVz
dENhc2VJbnN0YW50aWF0aW9uKFwKLSAgICAgICAgICAgICAgICAgICNwcmVmaXgsIFwKLSAgICAg
ICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJh
dG9yXywgXAotICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKQorICAgICAgICAg
ICAgICAjdGVzdF9jYXNlX25hbWUsIFwKKyAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q29kZUxvY2F0aW9uKFwKKyAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykp
LT5BZGRUZXN0Q2FzZUluc3RhbnRpYXRpb24oXAorICAgICAgICAgICAgICAgICAgICAgICNwcmVm
aXgsIFwKKyAgICAgICAgICAgICAgICAgICAgICAmZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9u
YW1lIyNfRXZhbEdlbmVyYXRvcl8sIFwKKyAgICAgICAgICAgICAgICAgICAgICAmZ3Rlc3RfIyNw
cmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRlTmFtZV8sIFwKKyAgICAgICAgICAg
ICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pCiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5n
CiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQogI2VuZGlmICAvLyBHVEVTVF9J
TkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
MTg2NWY4NGU2ZjZmYTNlMGZjZTE5ODcwMGI1YTVkZmU1ZjY1NTBlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wcmludGVycy5o
CkBAIC0wLDAgKzEsMTEwNyBAQAorLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCisvLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
Ly8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
Ky8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisKKy8vIEdvb2dsZSBUZXN0IC0gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQg
TW9ja2luZyBGcmFtZXdvcmsKKy8vCisvLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBhIHVuaXZlcnNh
bCB2YWx1ZSBwcmludGVyIHRoYXQgY2FuIHByaW50IGEKKy8vIHZhbHVlIG9mIGFueSB0eXBlIFQ6
CisvLworLy8gICB2b2lkIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFByaW50ZXI8VD46
OlByaW50KHZhbHVlLCBvc3RyZWFtX3B0cik7CisvLworLy8gQSB1c2VyIGNhbiB0ZWFjaCB0aGlz
IGZ1bmN0aW9uIGhvdyB0byBwcmludCBhIGNsYXNzIHR5cGUgVCBieQorLy8gZGVmaW5pbmcgZWl0
aGVyIG9wZXJhdG9yPDwoKSBvciBQcmludFRvKCkgaW4gdGhlIG5hbWVzcGFjZSB0aGF0CisvLyBk
ZWZpbmVzIFQuICBNb3JlIHNwZWNpZmljYWxseSwgdGhlIEZJUlNUIGRlZmluZWQgZnVuY3Rpb24g
aW4gdGhlCisvLyBmb2xsb3dpbmcgbGlzdCB3aWxsIGJlIHVzZWQgKGFzc3VtaW5nIFQgaXMgZGVm
aW5lZCBpbiBuYW1lc3BhY2UKKy8vIGZvbyk6CisvLworLy8gICAxLiBmb286OlByaW50VG8oY29u
c3QgVCYsIG9zdHJlYW0qKQorLy8gICAyLiBvcGVyYXRvcjw8KG9zdHJlYW0mLCBjb25zdCBUJikg
ZGVmaW5lZCBpbiBlaXRoZXIgZm9vIG9yIHRoZQorLy8gICAgICBnbG9iYWwgbmFtZXNwYWNlLgor
Ly8KKy8vIEhvd2V2ZXIgaWYgVCBpcyBhbiBTVEwtc3R5bGUgY29udGFpbmVyIHRoZW4gaXQgaXMg
cHJpbnRlZCBlbGVtZW50LXdpc2UKKy8vIHVubGVzcyBmb286OlByaW50VG8oY29uc3QgVCYsIG9z
dHJlYW0qKSBpcyBkZWZpbmVkLiBOb3RlIHRoYXQKKy8vIG9wZXJhdG9yPDwoKSBpcyBpZ25vcmVk
IGZvciBjb250YWluZXIgdHlwZXMuCisvLworLy8gSWYgbm9uZSBvZiB0aGUgYWJvdmUgaXMgZGVm
aW5lZCwgaXQgd2lsbCBwcmludCB0aGUgZGVidWcgc3RyaW5nIG9mCisvLyB0aGUgdmFsdWUgaWYg
aXQgaXMgYSBwcm90b2NvbCBidWZmZXIsIG9yIHByaW50IHRoZSByYXcgYnl0ZXMgaW4gdGhlCisv
LyB2YWx1ZSBvdGhlcndpc2UuCisvLworLy8gVG8gYWlkIGRlYnVnZ2luZzogd2hlbiBUIGlzIGEg
cmVmZXJlbmNlIHR5cGUsIHRoZSBhZGRyZXNzIG9mIHRoZQorLy8gdmFsdWUgaXMgYWxzbyBwcmlu
dGVkOyB3aGVuIFQgaXMgYSAoY29uc3QpIGNoYXIgcG9pbnRlciwgYm90aCB0aGUKKy8vIHBvaW50
ZXIgdmFsdWUgYW5kIHRoZSBOVUwtdGVybWluYXRlZCBzdHJpbmcgaXQgcG9pbnRzIHRvIGFyZQor
Ly8gcHJpbnRlZC4KKy8vCisvLyBXZSBhbHNvIHByb3ZpZGUgc29tZSBjb252ZW5pZW50IHdyYXBw
ZXJzOgorLy8KKy8vICAgLy8gUHJpbnRzIGEgdmFsdWUgdG8gYSBzdHJpbmcuICBGb3IgYSAoY29u
c3Qgb3Igbm90KSBjaGFyCisvLyAgIC8vIHBvaW50ZXIsIHRoZSBOVUwtdGVybWluYXRlZCBzdHJp
bmcgKGJ1dCBub3QgdGhlIHBvaW50ZXIpIGlzCisvLyAgIC8vIHByaW50ZWQuCisvLyAgIHN0ZDo6
c3RyaW5nIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhjb25zdCBUJiB2YWx1ZSk7CisvLworLy8g
ICAvLyBQcmludHMgYSB2YWx1ZSB0ZXJzZWx5OiBmb3IgYSByZWZlcmVuY2UgdHlwZSwgdGhlIHJl
ZmVyZW5jZWQKKy8vICAgLy8gdmFsdWUgKGJ1dCBub3QgdGhlIGFkZHJlc3MpIGlzIHByaW50ZWQ7
IGZvciBhIChjb25zdCBvciBub3QpIGNoYXIKKy8vICAgLy8gcG9pbnRlciwgdGhlIE5VTC10ZXJt
aW5hdGVkIHN0cmluZyAoYnV0IG5vdCB0aGUgcG9pbnRlcikgaXMKKy8vICAgLy8gcHJpbnRlZC4K
Ky8vICAgdm9pZCA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50KGNvbnN0
IFQmIHZhbHVlLCBvc3RyZWFtKik7CisvLworLy8gICAvLyBQcmludHMgdmFsdWUgdXNpbmcgdGhl
IHR5cGUgaW5mZXJyZWQgYnkgdGhlIGNvbXBpbGVyLiAgVGhlIGRpZmZlcmVuY2UKKy8vICAgLy8g
ZnJvbSBVbml2ZXJzYWxUZXJzZVByaW50KCkgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uIHByaW50cyBi
b3RoIHRoZQorLy8gICAvLyBwb2ludGVyIGFuZCB0aGUgTlVMLXRlcm1pbmF0ZWQgc3RyaW5nIGZv
ciBhIChjb25zdCBvciBub3QpIGNoYXIgcG9pbnRlci4KKy8vICAgdm9pZCA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpVbml2ZXJzYWxQcmludChjb25zdCBUJiB2YWx1ZSwgb3N0cmVhbSopOworLy8KKy8v
ICAgLy8gUHJpbnRzIHRoZSBmaWVsZHMgb2YgYSB0dXBsZSB0ZXJzZWx5IHRvIGEgc3RyaW5nIHZl
Y3Rvciwgb25lCisvLyAgIC8vIGVsZW1lbnQgZm9yIGVhY2ggZmllbGQuIFR1cGxlIHN1cHBvcnQg
bXVzdCBiZSBlbmFibGVkIGluCisvLyAgIC8vIGd0ZXN0LXBvcnQuaC4KKy8vICAgc3RkOjp2ZWN0
b3I8c3RyaW5nPiBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoCisvLyAg
ICAgICBjb25zdCBUdXBsZSYgdmFsdWUpOworLy8KKy8vIEtub3duIGxpbWl0YXRpb246CisvLwor
Ly8gVGhlIHByaW50IHByaW1pdGl2ZXMgcHJpbnQgdGhlIGVsZW1lbnRzIG9mIGFuIFNUTC1zdHls
ZSBjb250YWluZXIKKy8vIHVzaW5nIHRoZSBjb21waWxlci1pbmZlcnJlZCB0eXBlIG9mICppdGVy
IHdoZXJlIGl0ZXIgaXMgYQorLy8gY29uc3RfaXRlcmF0b3Igb2YgdGhlIGNvbnRhaW5lci4gIFdo
ZW4gY29uc3RfaXRlcmF0b3IgaXMgYW4gaW5wdXQKKy8vIGl0ZXJhdG9yIGJ1dCBub3QgYSBmb3J3
YXJkIGl0ZXJhdG9yLCB0aGlzIGluZmVycmVkIHR5cGUgbWF5IG5vdAorLy8gbWF0Y2ggdmFsdWVf
dHlwZSwgYW5kIHRoZSBwcmludCBvdXRwdXQgbWF5IGJlIGluY29ycmVjdC4gIEluCisvLyBwcmFj
dGljZSwgdGhpcyBpcyByYXJlbHkgYSBwcm9ibGVtIGFzIGZvciBtb3N0IGNvbnRhaW5lcnMKKy8v
IGNvbnN0X2l0ZXJhdG9yIGlzIGEgZm9yd2FyZCBpdGVyYXRvci4gIFdlJ2xsIGZpeCB0aGlzIGlm
IHRoZXJlJ3MgYW4KKy8vIGFjdHVhbCBuZWVkIGZvciBpdC4gIE5vdGUgdGhhdCB0aGlzIGZpeCBj
YW5ub3QgcmVseSBvbiB2YWx1ZV90eXBlCisvLyBiZWluZyBkZWZpbmVkIGFzIG1hbnkgdXNlci1k
ZWZpbmVkIGNvbnRhaW5lciB0eXBlcyBkb24ndCBoYXZlCisvLyB2YWx1ZV90eXBlLgorCisvLyBH
T09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKKyNpZm5kZWYgR1RFU1RfSU5DTFVERV9H
VEVTVF9HVEVTVF9QUklOVEVSU19IXworI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNU
X1BSSU5URVJTX0hfCisKKyNpbmNsdWRlIDxvc3RyZWFtPiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8
c3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRl
IDx2ZWN0b3I+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorI2luY2x1
ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgiCisKKyNpZiBHVEVTVF9IQVNfU1RE
X1RVUExFXworIyBpbmNsdWRlIDx0dXBsZT4KKyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX0FCU0wK
KyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKKyNpbmNsdWRlICJhYnNsL3R5
cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy92YXJpYW50LmgiCisjZW5kaWYg
IC8vIEdURVNUX0hBU19BQlNMCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworLy8gRGVmaW5pdGlv
bnMgaW4gdGhlICdpbnRlcm5hbCcgYW5kICdpbnRlcm5hbDInIG5hbWUgc3BhY2VzIGFyZQorLy8g
c3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuICBETyBOT1QgVVNFIFRIRU0gSU4gVVNF
UiBDT0RFIQorbmFtZXNwYWNlIGludGVybmFsMiB7CisKKy8vIFByaW50cyB0aGUgZ2l2ZW4gbnVt
YmVyIG9mIGJ5dGVzIGluIHRoZSBnaXZlbiBvYmplY3QgdG8gdGhlIGdpdmVuCisvLyBvc3RyZWFt
LgorR1RFU1RfQVBJXyB2b2lkIFByaW50Qnl0ZXNJbk9iamVjdFRvKGNvbnN0IHVuc2lnbmVkIGNo
YXIqIG9ial9ieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6Om9z
dHJlYW0qIG9zKTsKKworLy8gRm9yIHNlbGVjdGluZyB3aGljaCBwcmludGVyIHRvIHVzZSB3aGVu
IGEgZ2l2ZW4gdHlwZSBoYXMgbmVpdGhlciA8PAorLy8gbm9yIFByaW50VG8oKS4KK2VudW0gVHlw
ZUtpbmQgeworICBrUHJvdG9idWYsICAgICAgICAgICAgICAvLyBhIHByb3RvYnVmIHR5cGUKKyAg
a0NvbnZlcnRpYmxlVG9JbnRlZ2VyLCAgLy8gYSB0eXBlIGltcGxpY2l0bHkgY29udmVydGlibGUg
dG8gQmlnZ2VzdEludAorICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoZS5nLiBhIG5hbWVk
IG9yIHVubmFtZWQgZW51bSB0eXBlKQorI2lmIEdURVNUX0hBU19BQlNMCisgIGtDb252ZXJ0aWJs
ZVRvU3RyaW5nVmlldywgIC8vIGEgdHlwZSBpbXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRvCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFic2w6OnN0cmluZ192aWV3CisjZW5kaWYKKyAg
a090aGVyVHlwZSAgLy8gYW55dGhpbmcgZWxzZQorfTsKKworLy8gVHlwZVdpdGhvdXRGb3JtYXR0
ZXI8VCwga1R5cGVLaW5kPjo6UHJpbnRWYWx1ZSh2YWx1ZSwgb3MpIGlzIGNhbGxlZAorLy8gYnkg
dGhlIHVuaXZlcnNhbCBwcmludGVyIHRvIHByaW50IGEgdmFsdWUgb2YgdHlwZSBUIHdoZW4gbmVp
dGhlcgorLy8gb3BlcmF0b3I8PCBub3IgUHJpbnRUbygpIGlzIGRlZmluZWQgZm9yIFQsIHdoZXJl
IGtUeXBlS2luZCBpcyB0aGUKKy8vICJraW5kIiBvZiBUIGFzIGRlZmluZWQgYnkgZW51bSBUeXBl
S2luZC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBUeXBlS2luZCBrVHlwZUtpbmQ+CitjbGFzcyBU
eXBlV2l0aG91dEZvcm1hdHRlciB7CisgcHVibGljOgorICAvLyBUaGlzIGRlZmF1bHQgdmVyc2lv
biBpcyBjYWxsZWQgd2hlbiBrVHlwZUtpbmQgaXMga090aGVyVHlwZS4KKyAgc3RhdGljIHZvaWQg
UHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgUHJp
bnRCeXRlc0luT2JqZWN0VG8oc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigm
dmFsdWUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodmFsdWUpLCBvcyk7Cisg
IH0KK307CisKKy8vIFdlIHByaW50IGEgcHJvdG9idWYgdXNpbmcgaXRzIFNob3J0RGVidWdTdHJp
bmcoKSB3aGVuIHRoZSBzdHJpbmcKKy8vIGRvZXNuJ3QgZXhjZWVkIHRoaXMgbWFueSBjaGFyYWN0
ZXJzOyBvdGhlcndpc2Ugd2UgcHJpbnQgaXQgdXNpbmcKKy8vIERlYnVnU3RyaW5nKCkgZm9yIGJl
dHRlciByZWFkYWJpbGl0eS4KK2NvbnN0IHNpemVfdCBrUHJvdG9idWZPbmVMaW5lck1heExlbmd0
aCA9IDUwOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVXaXRob3V0Rm9ybWF0
dGVyPFQsIGtQcm90b2J1Zj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnRWYWx1ZShj
b25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgc3RkOjpzdHJpbmcgcHJl
dHR5X3N0ciA9IHZhbHVlLlNob3J0RGVidWdTdHJpbmcoKTsKKyAgICBpZiAocHJldHR5X3N0ci5s
ZW5ndGgoKSA+IGtQcm90b2J1Zk9uZUxpbmVyTWF4TGVuZ3RoKSB7CisgICAgICBwcmV0dHlfc3Ry
ID0gIlxuIiArIHZhbHVlLkRlYnVnU3RyaW5nKCk7CisgICAgfQorICAgICpvcyA8PCAoIjwiICsg
cHJldHR5X3N0ciArICI+Iik7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xh
c3MgVHlwZVdpdGhvdXRGb3JtYXR0ZXI8VCwga0NvbnZlcnRpYmxlVG9JbnRlZ2VyPiB7CisgcHVi
bGljOgorICAvLyBTaW5jZSBUIGhhcyBubyA8PCBvcGVyYXRvciBvciBQcmludFRvKCkgYnV0IGNh
biBiZSBpbXBsaWNpdGx5CisgIC8vIGNvbnZlcnRlZCB0byBCaWdnZXN0SW50LCB3ZSBwcmludCBp
dCBhcyBhIEJpZ2dlc3RJbnQuCisgIC8vCisgIC8vIE1vc3QgbGlrZWx5IFQgaXMgYW4gZW51bSB0
eXBlIChlaXRoZXIgbmFtZWQgb3IgdW5uYW1lZCksIGluIHdoaWNoCisgIC8vIGNhc2UgcHJpbnRp
bmcgaXQgYXMgYW4gaW50ZWdlciBpcyB0aGUgZGVzaXJlZCBiZWhhdmlvci4gIEluIGNhc2UKKyAg
Ly8gVCBpcyBub3QgYW4gZW51bSwgcHJpbnRpbmcgaXQgYXMgYW4gaW50ZWdlciBpcyB0aGUgYmVz
dCB3ZSBjYW4gZG8KKyAgLy8gZ2l2ZW4gdGhhdCBpdCBoYXMgbm8gdXNlci1kZWZpbmVkIHByaW50
ZXIuCisgIHN0YXRpYyB2b2lkIFByaW50VmFsdWUoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3Ry
ZWFtKiBvcykgeworICAgIGNvbnN0IGludGVybmFsOjpCaWdnZXN0SW50IGtCaWdJbnQgPSB2YWx1
ZTsKKyAgICAqb3MgPDwga0JpZ0ludDsKKyAgfQorfTsKKworI2lmIEdURVNUX0hBU19BQlNMCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVXaXRob3V0Rm9ybWF0dGVyPFQsIGtDb252
ZXJ0aWJsZVRvU3RyaW5nVmlldz4geworIHB1YmxpYzoKKyAgLy8gU2luY2UgVCBoYXMgbmVpdGhl
ciBvcGVyYXRvcjw8IG5vciBQcmludFRvKCkgYnV0IGNhbiBiZSBpbXBsaWNpdGx5CisgIC8vIGNv
bnZlcnRlZCB0byBhYnNsOjpzdHJpbmdfdmlldywgd2UgcHJpbnQgaXQgYXMgYSBhYnNsOjpzdHJp
bmdfdmlldy4KKyAgLy8KKyAgLy8gTm90ZTogdGhlIGltcGxlbWVudGF0aW9uIGlzIGZ1cnRoZXIg
YmVsb3csIGFzIGl0IGRlcGVuZHMgb24KKyAgLy8gaW50ZXJuYWw6OlByaW50VG8gc3ltYm9sIHdo
aWNoIGlzIGRlZmluZWQgbGF0ZXIgaW4gdGhlIGZpbGUuCisgIHN0YXRpYyB2b2lkIFByaW50VmFs
dWUoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcyk7Cit9OworI2VuZGlmCisKKy8v
IFByaW50cyB0aGUgZ2l2ZW4gdmFsdWUgdG8gdGhlIGdpdmVuIG9zdHJlYW0uICBJZiB0aGUgdmFs
dWUgaXMgYQorLy8gcHJvdG9jb2wgbWVzc2FnZSwgaXRzIGRlYnVnIHN0cmluZyBpcyBwcmludGVk
OyBpZiBpdCdzIGFuIGVudW0gb3IKKy8vIG9mIGEgdHlwZSBpbXBsaWNpdGx5IGNvbnZlcnRpYmxl
IHRvIEJpZ2dlc3RJbnQsIGl0J3MgcHJpbnRlZCBhcyBhbgorLy8gaW50ZWdlcjsgb3RoZXJ3aXNl
IHRoZSBieXRlcyBpbiB0aGUgdmFsdWUgYXJlIHByaW50ZWQuICBUaGlzIGlzCisvLyB3aGF0IFVu
aXZlcnNhbFByaW50ZXI8VD46OlByaW50KCkgZG9lcyB3aGVuIGl0IGtub3dzIG5vdGhpbmcgYWJv
dXQKKy8vIHR5cGUgVCBhbmQgVCBoYXMgbmVpdGhlciA8PCBvcGVyYXRvciBub3IgUHJpbnRUbygp
LgorLy8KKy8vIEEgdXNlciBjYW4gb3ZlcnJpZGUgdGhpcyBiZWhhdmlvciBmb3IgYSBjbGFzcyB0
eXBlIEZvbyBieSBkZWZpbmluZworLy8gYSA8PCBvcGVyYXRvciBpbiB0aGUgbmFtZXNwYWNlIHdo
ZXJlIEZvbyBpcyBkZWZpbmVkLgorLy8KKy8vIFdlIHB1dCB0aGlzIG9wZXJhdG9yIGluIG5hbWVz
cGFjZSAnaW50ZXJuYWwyJyBpbnN0ZWFkIG9mICdpbnRlcm5hbCcKKy8vIHRvIHNpbXBsaWZ5IHRo
ZSBpbXBsZW1lbnRhdGlvbiwgYXMgbXVjaCBjb2RlIGluICdpbnRlcm5hbCcgbmVlZHMgdG8KKy8v
IHVzZSA8PCBpbiBTVEwsIHdoaWNoIHdvdWxkIGNvbmZsaWN0IHdpdGggb3VyIG93biA8PCB3ZXJl
IGl0IGRlZmluZWQKKy8vIGluICdpbnRlcm5hbCcuCisvLworLy8gTm90ZSB0aGF0IHRoaXMgb3Bl
cmF0b3I8PCB0YWtlcyBhIGdlbmVyaWMgc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsCisvLyBDaGFy
VHJhaXRzPiB0eXBlIGluc3RlYWQgb2YgdGhlIG1vcmUgcmVzdHJpY3RlZCBzdGQ6Om9zdHJlYW0u
ICBJZgorLy8gd2UgZGVmaW5lIGl0IHRvIHRha2UgYW4gc3RkOjpvc3RyZWFtIGluc3RlYWQsIHdl
J2xsIGdldCBhbgorLy8gImFtYmlndW91cyBvdmVybG9hZHMiIGNvbXBpbGVyIGVycm9yIHdoZW4g
dHJ5aW5nIHRvIHByaW50IGEgdHlwZQorLy8gRm9vIHRoYXQgc3VwcG9ydHMgc3RyZWFtaW5nIHRv
IHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLAorLy8gQ2hhclRyYWl0cz4sIGFzIHRoZSBjb21waWxl
ciBjYW5ub3QgdGVsbCB3aGV0aGVyCisvLyBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYsIGNvbnN0
IFQmKSBvcgorLy8gb3BlcmF0b3I8PChzdGQ6OmJhc2ljX3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRz
PiwgY29uc3QgRm9vJikgaXMgbW9yZQorLy8gc3BlY2lmaWMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhciwgdHlwZW5hbWUgQ2hhclRyYWl0cywgdHlwZW5hbWUgVD4KKzo6c3RkOjpiYXNpY19vc3Ry
ZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcGVyYXRvcjw8KAorICAgIDo6c3RkOjpiYXNpY19vc3Ry
ZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcywgY29uc3QgVCYgeCkgeworICBUeXBlV2l0aG91dEZv
cm1hdHRlcjxULCAoaW50ZXJuYWw6OklzQVByb3RvY29sTWVzc2FnZTxUPjo6dmFsdWUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA/IGtQcm90b2J1ZgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogaW50ZXJuYWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiwgaW50ZXJuYWw6OkJpZ2dlc3RJ
bnQ+Ojp2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ga0NvbnZl
cnRpYmxlVG9JbnRlZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOgor
I2lmIEdURVNUX0hBU19BQlNMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50ZXJuYWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVCYsIGFic2w6OnN0cmluZ192aWV3Pjo6dmFsdWUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBrQ29udmVydGlibGVUb1N0
cmluZ1ZpZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOgorI2Vu
ZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtPdGhlclR5cGUp
Pjo6UHJpbnRWYWx1ZSh4LCAmb3MpOworICByZXR1cm4gb3M7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSBpbnRlcm5hbDIKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKy8vIFRoaXMgbmFtZXNwYWNl
IE1VU1QgTk9UIEJFIE5FU1RFRCBJTiA6OnRlc3RpbmcsIG9yIHRoZSBuYW1lIGxvb2stdXAKKy8v
IG1hZ2ljIG5lZWRlZCBmb3IgaW1wbGVtZW50aW5nIFVuaXZlcnNhbFByaW50ZXIgd29uJ3Qgd29y
ay4KK25hbWVzcGFjZSB0ZXN0aW5nX2ludGVybmFsIHsKKworLy8gVXNlZCB0byBwcmludCBhIHZh
bHVlIHRoYXQgaXMgbm90IGFuIFNUTC1zdHlsZSBjb250YWluZXIgd2hlbiB0aGUKKy8vIHVzZXIg
ZG9lc24ndCBkZWZpbmUgUHJpbnRUbygpIGZvciBpdC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
dm9pZCBEZWZhdWx0UHJpbnROb25Db250YWluZXJUbyhjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgIC8vIFdpdGggdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQsIGR1cmluZyB1
bnF1YWxpZmllZCBuYW1lIGxvb2t1cCwKKyAgLy8gdGVzdGluZzo6aW50ZXJuYWwyOjpvcGVyYXRv
cjw8IGFwcGVhcnMgYXMgaWYgaXQgd2FzIGRlY2xhcmVkIGluCisgIC8vIHRoZSBuZWFyZXN0IGVu
Y2xvc2luZyBuYW1lc3BhY2UgdGhhdCBjb250YWlucyBib3RoCisgIC8vIDo6dGVzdGluZ19pbnRl
cm5hbCBhbmQgOjp0ZXN0aW5nOjppbnRlcm5hbDIsIGkuZS4gdGhlIGdsb2JhbAorICAvLyBuYW1l
c3BhY2UuICBGb3IgbW9yZSBkZXRhaWxzLCByZWZlciB0byB0aGUgQysrIFN0YW5kYXJkIHNlY3Rp
b24KKyAgLy8gNy4zLjQtMSBbbmFtZXNwYWNlLnVkaXJdLiAgVGhpcyBhbGxvd3MgdXMgdG8gZmFs
bCBiYWNrIG9udG8KKyAgLy8gdGVzdGluZzo6aW50ZXJuYWwyOjpvcGVyYXRvcjw8IGluIGNhc2Ug
VCBkb2Vzbid0IGNvbWUgd2l0aCBhIDw8CisgIC8vIG9wZXJhdG9yLgorICAvLworICAvLyBXZSBj
YW5ub3Qgd3JpdGUgJ3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWwyOjpvcGVyYXRvcjw8OycsIHdo
aWNoCisgIC8vIGdjYyAzLjMgZmFpbHMgdG8gY29tcGlsZSBkdWUgdG8gYSBjb21waWxlciBidWcu
CisgIHVzaW5nIG5hbWVzcGFjZSA6OnRlc3Rpbmc6OmludGVybmFsMjsgIC8vIE5PTElOVAorCisg
IC8vIEFzc3VtaW5nIFQgaXMgZGVmaW5lZCBpbiBuYW1lc3BhY2UgZm9vLCBpbiB0aGUgbmV4dCBz
dGF0ZW1lbnQsCisgIC8vIHRoZSBjb21waWxlciB3aWxsIGNvbnNpZGVyIGFsbCBvZjoKKyAgLy8K
KyAgLy8gICAxLiBmb286Om9wZXJhdG9yPDwgKHRoYW5rcyB0byBLb2VuaWcgbG9vay11cCksCisg
IC8vICAgMi4gOjpvcGVyYXRvcjw8IChhcyB0aGUgY3VycmVudCBuYW1lc3BhY2UgaXMgZW5jbG9z
ZWQgaW4gOjopLAorICAvLyAgIDMuIHRlc3Rpbmc6OmludGVybmFsMjo6b3BlcmF0b3I8PCAodGhh
bmtzIHRvIHRoZSB1c2luZyBzdGF0ZW1lbnQgYWJvdmUpLgorICAvLworICAvLyBUaGUgb3BlcmF0
b3I8PCB3aG9zZSB0eXBlIG1hdGNoZXMgVCBiZXN0IHdpbGwgYmUgcGlja2VkLgorICAvLworICAv
LyBXZSBkZWxpYmVyYXRlbHkgYWxsb3cgIzIgdG8gYmUgYSBjYW5kaWRhdGUsIGFzIHNvbWV0aW1l
cyBpdCdzCisgIC8vIGltcG9zc2libGUgdG8gZGVmaW5lICMxIChlLmcuIHdoZW4gZm9vIGlzIDo6
c3RkLCBkZWZpbmluZworICAvLyBhbnl0aGluZyBpbiBpdCBpcyB1bmRlZmluZWQgYmVoYXZpb3Ig
dW5sZXNzIHlvdSBhcmUgYSBjb21waWxlcgorICAvLyB2ZW5kb3IuKS4KKyAgKm9zIDw8IHZhbHVl
OworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZ19pbnRlcm5hbAorCituYW1lc3BhY2UgdGVz
dGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBGb3JtYXRGb3JDb21wYXJpc29uPFRv
UHJpbnQsIE90aGVyT3BlcmFuZD46OkZvcm1hdCh2YWx1ZSkgZm9ybWF0cyBhCisvLyB2YWx1ZSBv
ZiB0eXBlIFRvUHJpbnQgdGhhdCBpcyBhbiBvcGVyYW5kIG9mIGEgY29tcGFyaXNvbiBhc3NlcnRp
b24KKy8vIChlLmcuIEFTU0VSVF9FUSkuICBPdGhlck9wZXJhbmQgaXMgdGhlIHR5cGUgb2YgdGhl
IG90aGVyIG9wZXJhbmQgaW4KKy8vIHRoZSBjb21wYXJpc29uLCBhbmQgaXMgdXNlZCB0byBoZWxw
IGRldGVybWluZSB0aGUgYmVzdCB3YXkgdG8KKy8vIGZvcm1hdCB0aGUgdmFsdWUuICBJbiBwYXJ0
aWN1bGFyLCB3aGVuIHRoZSB2YWx1ZSBpcyBhIEMgc3RyaW5nCisvLyAoY2hhciBwb2ludGVyKSBh
bmQgdGhlIG90aGVyIG9wZXJhbmQgaXMgYW4gU1RMIHN0cmluZyBvYmplY3QsIHdlCisvLyB3YW50
IHRvIGZvcm1hdCB0aGUgQyBzdHJpbmcgYXMgYSBzdHJpbmcsIHNpbmNlIHdlIGtub3cgaXQgaXMK
Ky8vIGNvbXBhcmVkIGJ5IHZhbHVlIHdpdGggdGhlIHN0cmluZyBvYmplY3QuICBJZiB0aGUgdmFs
dWUgaXMgYSBjaGFyCisvLyBwb2ludGVyIGJ1dCB0aGUgb3RoZXIgb3BlcmFuZCBpcyBub3QgYW4g
U1RMIHN0cmluZyBvYmplY3QsIHdlIGRvbid0CisvLyBrbm93IHdoZXRoZXIgdGhlIHBvaW50ZXIg
aXMgc3VwcG9zZWQgdG8gcG9pbnQgdG8gYSBOVUwtdGVybWluYXRlZAorLy8gc3RyaW5nLCBhbmQg
dGh1cyB3YW50IHRvIHByaW50IGl0IGFzIGEgcG9pbnRlciB0byBiZSBzYWZlLgorLy8KKy8vIElO
VEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KKwor
Ly8gVGhlIGRlZmF1bHQgY2FzZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUb1ByaW50LCB0eXBlbmFt
ZSBPdGhlck9wZXJhbmQ+CitjbGFzcyBGb3JtYXRGb3JDb21wYXJpc29uIHsKKyBwdWJsaWM6Cisg
IHN0YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1hdChjb25zdCBUb1ByaW50JiB2YWx1ZSkgeworICAg
IHJldHVybiA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcodmFsdWUpOworICB9Cit9OworCisvLyBB
cnJheS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUb1ByaW50LCBzaXplX3QgTiwgdHlwZW5hbWUgT3Ro
ZXJPcGVyYW5kPgorY2xhc3MgRm9ybWF0Rm9yQ29tcGFyaXNvbjxUb1ByaW50W05dLCBPdGhlck9w
ZXJhbmQ+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1hdChjb25zdCBU
b1ByaW50KiB2YWx1ZSkgeworICAgIHJldHVybiBGb3JtYXRGb3JDb21wYXJpc29uPGNvbnN0IFRv
UHJpbnQqLCBPdGhlck9wZXJhbmQ+OjpGb3JtYXQodmFsdWUpOworICB9Cit9OworCisvLyBCeSBk
ZWZhdWx0LCBwcmludCBDIHN0cmluZyBhcyBwb2ludGVycyB0byBiZSBzYWZlLCBhcyB3ZSBkb24n
dCBrbm93CisvLyB3aGV0aGVyIHRoZXkgYWN0dWFsbHkgcG9pbnQgdG8gYSBOVUwtdGVybWluYXRl
ZCBzdHJpbmcuCisKKyNkZWZpbmUgR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfUE9JTlRF
Ul8oQ2hhclR5cGUpICAgICAgICAgICAgICAgIFwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIE90aGVy
T3BlcmFuZD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgY2xhc3Mg
Rm9ybWF0Rm9yQ29tcGFyaXNvbjxDaGFyVHlwZSosIE90aGVyT3BlcmFuZD4geyAgICAgICAgICAg
ICAgICAgIFwKKyAgIHB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgOjpzdGQ6OnN0cmluZyBGb3Jt
YXQoQ2hhclR5cGUqIHZhbHVlKSB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHJldHVy
biA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHZhbHVl
KSk7IFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklO
R19BU19QT0lOVEVSXyhjaGFyKTsKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1BPSU5U
RVJfKGNvbnN0IGNoYXIpOworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfUE9JTlRFUl8o
d2NoYXJfdCk7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19QT0lOVEVSXyhjb25zdCB3
Y2hhcl90KTsKKworI3VuZGVmIEdURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1BPSU5URVJf
CisKKy8vIElmIGEgQyBzdHJpbmcgaXMgY29tcGFyZWQgd2l0aCBhbiBTVEwgc3RyaW5nIG9iamVj
dCwgd2Uga25vdyBpdCdzIG1lYW50CisvLyB0byBwb2ludCB0byBhIE5VTC10ZXJtaW5hdGVkIHN0
cmluZywgYW5kIHRodXMgY2FuIHByaW50IGl0IGFzIGEgc3RyaW5nLgorCisjZGVmaW5lIEdURVNU
X0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18oQ2hhclR5cGUsIE90aGVyU3RyaW5nVHlw
ZSkgXAorICB0ZW1wbGF0ZSA8PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICBjbGFzcyBGb3JtYXRGb3JDb21wYXJpc29uPENoYXJU
eXBlKiwgT3RoZXJTdHJpbmdUeXBlPiB7ICAgICAgICAgICAgICAgXAorICAgcHVibGljOiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1hdChDaGFyVHlwZSogdmFsdWUpIHsgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgcmV0dXJuIDo6dGVzdGluZzo6UHJpbnRUb1N0cmlu
Zyh2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICB9CisKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18oY2hhciwgOjpzdGQ6
OnN0cmluZyk7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNvbnN0IGNo
YXIsIDo6c3RkOjpzdHJpbmcpOworCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK0dURVNU
X0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18oY2hhciwgOjpzdHJpbmcpOworR1RFU1Rf
SU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjb25zdCBjaGFyLCA6OnN0cmluZyk7Cisj
ZW5kaWYKKworI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORworR1RFU1RfSU1QTF9GT1JNQVRf
Q19TVFJJTkdfQVNfU1RSSU5HXyh3Y2hhcl90LCA6OndzdHJpbmcpOworR1RFU1RfSU1QTF9GT1JN
QVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjb25zdCB3Y2hhcl90LCA6OndzdHJpbmcpOworI2VuZGlm
CisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5H
X0FTX1NUUklOR18od2NoYXJfdCwgOjpzdGQ6OndzdHJpbmcpOworR1RFU1RfSU1QTF9GT1JNQVRf
Q19TVFJJTkdfQVNfU1RSSU5HXyhjb25zdCB3Y2hhcl90LCA6OnN0ZDo6d3N0cmluZyk7CisjZW5k
aWYKKworI3VuZGVmIEdURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18KKworLy8g
Rm9ybWF0cyBhIGNvbXBhcmlzb24gYXNzZXJ0aW9uIChlLmcuIEFTU0VSVF9FUSwgRVhQRUNUX0xU
LCBhbmQgZXRjKQorLy8gb3BlcmFuZCB0byBiZSB1c2VkIGluIGEgZmFpbHVyZSBtZXNzYWdlLiAg
VGhlIHR5cGUgKGJ1dCBub3QgdmFsdWUpCisvLyBvZiB0aGUgb3RoZXIgb3BlcmFuZCBtYXkgYWZm
ZWN0IHRoZSBmb3JtYXQuICBUaGlzIGFsbG93cyB1cyB0bworLy8gcHJpbnQgYSBjaGFyKiBhcyBh
IHJhdyBwb2ludGVyIHdoZW4gaXQgaXMgY29tcGFyZWQgYWdhaW5zdCBhbm90aGVyCisvLyBjaGFy
KiBvciB2b2lkKiwgYW5kIHByaW50IGl0IGFzIGEgQyBzdHJpbmcgd2hlbiBpdCBpcyBjb21wYXJl
ZAorLy8gYWdhaW5zdCBhbiBzdGQ6OnN0cmluZyBvYmplY3QsIGZvciBleGFtcGxlLgorLy8KKy8v
IElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitzdGQ6OnN0cmluZyBGb3JtYXRG
b3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoCisgICAgY29uc3QgVDEmIHZhbHVlLCBjb25zdCBU
MiYgLyogb3RoZXJfb3BlcmFuZCAqLykgeworICByZXR1cm4gRm9ybWF0Rm9yQ29tcGFyaXNvbjxU
MSwgVDI+OjpGb3JtYXQodmFsdWUpOworfQorCisvLyBVbml2ZXJzYWxQcmludGVyPFQ+OjpQcmlu
dCh2YWx1ZSwgb3N0cmVhbV9wdHIpIHByaW50cyB0aGUgZ2l2ZW4KKy8vIHZhbHVlIHRvIHRoZSBn
aXZlbiBvc3RyZWFtLiAgVGhlIGNhbGxlciBtdXN0IGVuc3VyZSB0aGF0CisvLyAnb3N0cmVhbV9w
dHInIGlzIG5vdCBOVUxMLCBvciB0aGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkLgorLy8KKy8vIFdl
IGRlZmluZSBVbml2ZXJzYWxQcmludGVyIGFzIGEgY2xhc3MgdGVtcGxhdGUgKGFzIG9wcG9zZWQg
dG8gYQorLy8gZnVuY3Rpb24gdGVtcGxhdGUpLCBhcyB3ZSBuZWVkIHRvIHBhcnRpYWxseSBzcGVj
aWFsaXplIGl0IGZvcgorLy8gcmVmZXJlbmNlIHR5cGVzLCB3aGljaCBjYW5ub3QgYmUgZG9uZSB3
aXRoIGZ1bmN0aW9uIHRlbXBsYXRlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVW5p
dmVyc2FsUHJpbnRlcjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFBy
aW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworCitlbnVtIERlZmF1bHRQ
cmludGVyVHlwZSB7CisgIGtQcmludENvbnRhaW5lciwKKyAga1ByaW50UG9pbnRlciwKKyAga1By
aW50RnVuY3Rpb25Qb2ludGVyLAorICBrUHJpbnRPdGhlciwKK307Cit0ZW1wbGF0ZSA8RGVmYXVs
dFByaW50ZXJUeXBlIHR5cGU+IHN0cnVjdCBXcmFwUHJpbnRlclR5cGUge307CisKKy8vIFVzZWQg
dG8gcHJpbnQgYW4gU1RMLXN0eWxlIGNvbnRhaW5lciB3aGVuIHRoZSB1c2VyIGRvZXNuJ3QgZGVm
aW5lCisvLyBhIFByaW50VG8oKSBmb3IgaXQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KK3ZvaWQg
RGVmYXVsdFByaW50VG8oV3JhcFByaW50ZXJUeXBlPGtQcmludENvbnRhaW5lcj4gLyogZHVtbXkg
Ki8sCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEMmIGNvbnRhaW5lciwgOjpzdGQ6Om9zdHJl
YW0qIG9zKSB7CisgIGNvbnN0IHNpemVfdCBrTWF4Q291bnQgPSAzMjsgIC8vIFRoZSBtYXhpbXVt
IG51bWJlciBvZiBlbGVtZW50cyB0byBwcmludC4KKyAgKm9zIDw8ICd7JzsKKyAgc2l6ZV90IGNv
dW50ID0gMDsKKyAgZm9yICh0eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvciBpdCA9IGNvbnRhaW5l
ci5iZWdpbigpOworICAgICAgIGl0ICE9IGNvbnRhaW5lci5lbmQoKTsgKytpdCwgKytjb3VudCkg
eworICAgIGlmIChjb3VudCA+IDApIHsKKyAgICAgICpvcyA8PCAnLCc7CisgICAgICBpZiAoY291
bnQgPT0ga01heENvdW50KSB7ICAvLyBFbm91Z2ggaGFzIGJlZW4gcHJpbnRlZC4KKyAgICAgICAg
Km9zIDw8ICIgLi4uIjsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAgICpvcyA8
PCAnICc7CisgICAgLy8gV2UgY2Fubm90IGNhbGwgUHJpbnRUbygqaXQsIG9zKSBoZXJlIGFzIFBy
aW50VG8oKSBkb2Vzbid0CisgICAgLy8gaGFuZGxlICppdCBiZWluZyBhIG5hdGl2ZSBhcnJheS4K
KyAgICBpbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnQoKml0LCBvcyk7CisgIH0KKworICBpZiAoY291
bnQgPiAwKSB7CisgICAgKm9zIDw8ICcgJzsKKyAgfQorICAqb3MgPDwgJ30nOworfQorCisvLyBV
c2VkIHRvIHByaW50IGEgcG9pbnRlciB0aGF0IGlzIG5laXRoZXIgYSBjaGFyIHBvaW50ZXIgbm9y
IGEgbWVtYmVyCisvLyBwb2ludGVyLCB3aGVuIHRoZSB1c2VyIGRvZXNuJ3QgZGVmaW5lIFByaW50
VG8oKSBmb3IgaXQuICAoQSBtZW1iZXIKKy8vIHZhcmlhYmxlIHBvaW50ZXIgb3IgbWVtYmVyIGZ1
bmN0aW9uIHBvaW50ZXIgZG9lc24ndCByZWFsbHkgcG9pbnQgdG8KKy8vIGEgbG9jYXRpb24gaW4g
dGhlIGFkZHJlc3Mgc3BhY2UuICBUaGVpciByZXByZXNlbnRhdGlvbiBpcworLy8gaW1wbGVtZW50
YXRpb24tZGVmaW5lZC4gIFRoZXJlZm9yZSB0aGV5IHdpbGwgYmUgcHJpbnRlZCBhcyByYXcKKy8v
IGJ5dGVzLikKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBEZWZhdWx0UHJpbnRUbyhXcmFw
UHJpbnRlclR5cGU8a1ByaW50UG9pbnRlcj4gLyogZHVtbXkgKi8sCisgICAgICAgICAgICAgICAg
ICAgIFQqIHAsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBpZiAocCA9PSBOVUxMKSB7CisgICAg
Km9zIDw8ICJOVUxMIjsKKyAgfSBlbHNlIHsKKyAgICAvLyBUIGlzIG5vdCBhIGZ1bmN0aW9uIHR5
cGUuICBXZSBqdXN0IGNhbGwgPDwgdG8gcHJpbnQgcCwKKyAgICAvLyByZWx5aW5nIG9uIEFETCB0
byBwaWNrIHVwIHVzZXItZGVmaW5lZCA8PCBmb3IgdGhlaXIgcG9pbnRlcgorICAgIC8vIHR5cGVz
LCBpZiBhbnkuCisgICAgKm9zIDw8IHA7CisgIH0KK30KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
dm9pZCBEZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5cGU8a1ByaW50RnVuY3Rpb25Qb2ludGVy
PiAvKiBkdW1teSAqLywKKyAgICAgICAgICAgICAgICAgICAgVCogcCwgOjpzdGQ6Om9zdHJlYW0q
IG9zKSB7CisgIGlmIChwID09IE5VTEwpIHsKKyAgICAqb3MgPDwgIk5VTEwiOworICB9IGVsc2Ug
eworICAgIC8vIFQgaXMgYSBmdW5jdGlvbiB0eXBlLCBzbyAnKm9zIDw8IHAnIGRvZXNuJ3QgZG8g
d2hhdCB3ZSB3YW50CisgICAgLy8gKGl0IGp1c3QgcHJpbnRzIHAgYXMgYm9vbCkuICBXZSB3YW50
IHRvIHByaW50IHAgYXMgYSBjb25zdAorICAgIC8vIHZvaWQqLgorICAgICpvcyA8PCByZWludGVy
cHJldF9jYXN0PGNvbnN0IHZvaWQqPihwKTsKKyAgfQorfQorCisvLyBVc2VkIHRvIHByaW50IGEg
bm9uLWNvbnRhaW5lciwgbm9uLXBvaW50ZXIgdmFsdWUgd2hlbiB0aGUgdXNlcgorLy8gZG9lc24n
dCBkZWZpbmUgUHJpbnRUbygpIGZvciBpdC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBE
ZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5cGU8a1ByaW50T3RoZXI+IC8qIGR1bW15ICovLAor
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7
CisgIDo6dGVzdGluZ19pbnRlcm5hbDo6RGVmYXVsdFByaW50Tm9uQ29udGFpbmVyVG8odmFsdWUs
IG9zKTsKK30KKworLy8gUHJpbnRzIHRoZSBnaXZlbiB2YWx1ZSB1c2luZyB0aGUgPDwgb3BlcmF0
b3IgaWYgaXQgaGFzIG9uZTsKKy8vIG90aGVyd2lzZSBwcmludHMgdGhlIGJ5dGVzIGluIGl0LiAg
VGhpcyBpcyB3aGF0CisvLyBVbml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCgpIGRvZXMgd2hlbiBQ
cmludFRvKCkgaXMgbm90IHNwZWNpYWxpemVkCisvLyBvciBvdmVybG9hZGVkIGZvciB0eXBlIFQu
CisvLworLy8gQSB1c2VyIGNhbiBvdmVycmlkZSB0aGlzIGJlaGF2aW9yIGZvciBhIGNsYXNzIHR5
cGUgRm9vIGJ5IGRlZmluaW5nCisvLyBhbiBvdmVybG9hZCBvZiBQcmludFRvKCkgaW4gdGhlIG5h
bWVzcGFjZSB3aGVyZSBGb28gaXMgZGVmaW5lZC4gIFdlCisvLyBnaXZlIHRoZSB1c2VyIHRoaXMg
b3B0aW9uIGFzIHNvbWV0aW1lcyBkZWZpbmluZyBhIDw8IG9wZXJhdG9yIGZvcgorLy8gRm9vIGlz
IG5vdCBkZXNpcmFibGUgKGUuZy4gdGhlIGNvZGluZyBzdHlsZSBtYXkgcHJldmVudCBkb2luZyBp
dCwKKy8vIG9yIHRoZXJlIGlzIGFscmVhZHkgYSA8PCBvcGVyYXRvciBidXQgaXQgZG9lc24ndCBk
byB3aGF0IHRoZSB1c2VyCisvLyB3YW50cykuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQg
UHJpbnRUbyhjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIC8vIERlZmF1
bHRQcmludFRvKCkgaXMgb3ZlcmxvYWRlZC4gIFRoZSB0eXBlIG9mIGl0cyBmaXJzdCBhcmd1bWVu
dAorICAvLyBkZXRlcm1pbmVzIHdoaWNoIHZlcnNpb24gd2lsbCBiZSBwaWNrZWQuCisgIC8vCisg
IC8vIE5vdGUgdGhhdCB3ZSBjaGVjayBmb3IgY29udGFpbmVyIHR5cGVzIGhlcmUsIHByaW9yIHRv
IHdlIGNoZWNrCisgIC8vIGZvciBwcm90b2NvbCBtZXNzYWdlIHR5cGVzIGluIG91ciBvcGVyYXRv
cjw8LiAgVGhlIHJhdGlvbmFsZSBpczoKKyAgLy8KKyAgLy8gRm9yIHByb3RvY29sIG1lc3NhZ2Vz
LCB3ZSB3YW50IHRvIGdpdmUgcGVvcGxlIGEgY2hhbmNlIHRvCisgIC8vIG92ZXJyaWRlIEdvb2ds
ZSBNb2NrJ3MgZm9ybWF0IGJ5IGRlZmluaW5nIGEgUHJpbnRUbygpIG9yCisgIC8vIG9wZXJhdG9y
PDwuICBGb3IgU1RMIGNvbnRhaW5lcnMsIG90aGVyIGZvcm1hdHMgY2FuIGJlCisgIC8vIGluY29t
cGF0aWJsZSB3aXRoIEdvb2dsZSBNb2NrJ3MgZm9ybWF0IGZvciB0aGUgY29udGFpbmVyCisgIC8v
IGVsZW1lbnRzOyB0aGVyZWZvcmUgd2UgY2hlY2sgZm9yIGNvbnRhaW5lciB0eXBlcyBoZXJlIHRv
IGVuc3VyZQorICAvLyB0aGF0IG91ciBmb3JtYXQgaXMgdXNlZC4KKyAgLy8KKyAgLy8gTm90ZSB0
aGF0IE1TVkMgYW5kIGNsYW5nLWNsIGRvIGFsbG93IGFuIGltcGxpY2l0IGNvbnZlcnNpb24gZnJv
bQorICAvLyBwb2ludGVyLXRvLWZ1bmN0aW9uIHRvIHBvaW50ZXItdG8tb2JqZWN0LCBidXQgY2xh
bmctY2wgd2FybnMgb24gaXQuCisgIC8vIFNvIGRvbid0IHVzZSBJbXBsaWNpdGx5Q29udmVydGli
bGUgaWYgaXQgY2FuIGJlIGhlbHBlZCBzaW5jZSBpdCB3aWxsCisgIC8vIGNhdXNlIHRoaXMgd2Fy
bmluZywgYW5kIHVzZSBhIHNlcGFyYXRlIG92ZXJsb2FkIG9mIERlZmF1bHRQcmludFRvIGZvcgor
ICAvLyBmdW5jdGlvbiBwb2ludGVycyBzbyB0aGF0IHRoZSBgKm9zIDw8IHBgIGluIHRoZSBvYmpl
Y3QgcG9pbnRlciBvdmVybG9hZAorICAvLyBkb2Vzbid0IGNhdXNlIHRoYXQgd2FybmluZyBlaXRo
ZXIuCisgIERlZmF1bHRQcmludFRvKAorICAgICAgV3JhcFByaW50ZXJUeXBlIDwKKyAgICAgICAg
ICAgICAgICAgIChzaXplb2YoSXNDb250YWluZXJUZXN0PFQ+KDApKSA9PSBzaXplb2YoSXNDb250
YWluZXIpKSAmJgorICAgICAgICAgICAgICAhSXNSZWN1cnNpdmVDb250YWluZXI8VD46OnZhbHVl
CisgICAgICAgICAgPyBrUHJpbnRDb250YWluZXIKKyAgICAgICAgICA6ICFpc19wb2ludGVyPFQ+
Ojp2YWx1ZQorICAgICAgICAgICAgICAgID8ga1ByaW50T3RoZXIKKyNpZiBHVEVTVF9MQU5HX0NY
WDExCisgICAgICAgICAgICAgICAgOiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX3BvaW50ZXI8VD46OnR5cGU+Ojp2YWx1ZQorI2Vsc2UKKyAgICAgICAgICAgICAgICA6ICFp
bnRlcm5hbDo6SW1wbGljaXRseUNvbnZlcnRpYmxlPFQsIGNvbnN0IHZvaWQqPjo6dmFsdWUKKyNl
bmRpZgorICAgICAgICAgICAgICAgICAgICAgID8ga1ByaW50RnVuY3Rpb25Qb2ludGVyCisgICAg
ICAgICAgICAgICAgICAgICAgOiBrUHJpbnRQb2ludGVyID4gKCksCisgICAgICB2YWx1ZSwgb3Mp
OworfQorCisvLyBUaGUgZm9sbG93aW5nIGxpc3Qgb2YgUHJpbnRUbygpIG92ZXJsb2FkcyB0ZWxs
cworLy8gVW5pdmVyc2FsUHJpbnRlcjxUPjo6UHJpbnQoKSBob3cgdG8gcHJpbnQgc3RhbmRhcmQg
dHlwZXMgKGJ1aWx0LWluCisvLyB0eXBlcywgc3RyaW5ncywgcGxhaW4gYXJyYXlzLCBhbmQgcG9p
bnRlcnMpLgorCisvLyBPdmVybG9hZHMgZm9yIHZhcmlvdXMgY2hhciB0eXBlcy4KK0dURVNUX0FQ
SV8gdm9pZCBQcmludFRvKHVuc2lnbmVkIGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKK0dU
RVNUX0FQSV8gdm9pZCBQcmludFRvKHNpZ25lZCBjaGFyIGMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7
CitpbmxpbmUgdm9pZCBQcmludFRvKGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIC8v
IFdoZW4gcHJpbnRpbmcgYSBwbGFpbiBjaGFyLCB3ZSBhbHdheXMgdHJlYXQgaXQgYXMgdW5zaWdu
ZWQuICBUaGlzCisgIC8vIHdheSwgdGhlIG91dHB1dCB3b24ndCBiZSBhZmZlY3RlZCBieSB3aGV0
aGVyIHRoZSBjb21waWxlciB0aGlua3MKKyAgLy8gY2hhciBpcyBzaWduZWQgb3Igbm90LgorICBQ
cmludFRvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpLCBvcyk7Cit9CisKKy8vIE92ZXJs
b2FkcyBmb3Igb3RoZXIgc2ltcGxlIGJ1aWx0LWluIHR5cGVzLgoraW5saW5lIHZvaWQgUHJpbnRU
byhib29sIHgsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAqb3MgPDwgKHggPyAidHJ1ZSIgOiAi
ZmFsc2UiKTsKK30KKworLy8gT3ZlcmxvYWQgZm9yIHdjaGFyX3QgdHlwZS4KKy8vIFByaW50cyBh
IHdjaGFyX3QgYXMgYSBzeW1ib2wgaWYgaXQgaXMgcHJpbnRhYmxlIG9yIGFzIGl0cyBpbnRlcm5h
bAorLy8gY29kZSBvdGhlcndpc2UgYW5kIGFsc28gYXMgaXRzIGRlY2ltYWwgY29kZSAoZXhjZXB0
IGZvciBMJ1wwJykuCisvLyBUaGUgTCdcMCcgY2hhciBpcyBwcmludGVkIGFzICJMJ1xcMCciLiBU
aGUgZGVjaW1hbCBjb2RlIGlzIHByaW50ZWQKKy8vIGFzIHNpZ25lZCBpbnRlZ2VyIHdoZW4gd2No
YXJfdCBpcyBpbXBsZW1lbnRlZCBieSB0aGUgY29tcGlsZXIKKy8vIGFzIGEgc2lnbmVkIHR5cGUg
YW5kIGlzIHByaW50ZWQgYXMgYW4gdW5zaWduZWQgaW50ZWdlciB3aGVuIHdjaGFyX3QKKy8vIGlz
IGltcGxlbWVudGVkIGFzIGFuIHVuc2lnbmVkIHR5cGUuCitHVEVTVF9BUElfIHZvaWQgUHJpbnRU
byh3Y2hhcl90IHdjLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworCisvLyBPdmVybG9hZHMgZm9yIEMg
c3RyaW5ncy4KK0dURVNUX0FQSV8gdm9pZCBQcmludFRvKGNvbnN0IGNoYXIqIHMsIDo6c3RkOjpv
c3RyZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRvKGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFt
KiBvcykgeworICBQcmludFRvKEltcGxpY2l0Q2FzdF88Y29uc3QgY2hhcio+KHMpLCBvcyk7Cit9
CisKKy8vIHNpZ25lZC91bnNpZ25lZCBjaGFyIGlzIG9mdGVuIHVzZWQgZm9yIHJlcHJlc2VudGlu
ZyBiaW5hcnkgZGF0YSwgc28KKy8vIHdlIHByaW50IHBvaW50ZXJzIHRvIGl0IGFzIHZvaWQqIHRv
IGJlIHNhZmUuCitpbmxpbmUgdm9pZCBQcmludFRvKGNvbnN0IHNpZ25lZCBjaGFyKiBzLCA6OnN0
ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUbyhJbXBsaWNpdENhc3RfPGNvbnN0IHZvaWQqPihz
KSwgb3MpOworfQoraW5saW5lIHZvaWQgUHJpbnRUbyhzaWduZWQgY2hhciogcywgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocyksIG9z
KTsKK30KK2lubGluZSB2b2lkIFByaW50VG8oY29uc3QgdW5zaWduZWQgY2hhciogcywgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocyks
IG9zKTsKK30KK2lubGluZSB2b2lkIFByaW50VG8odW5zaWduZWQgY2hhciogcywgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocyksIG9z
KTsKK30KKworLy8gTVNWQyBjYW4gYmUgY29uZmlndXJlZCB0byBkZWZpbmUgd2NoYXJfdCBhcyBh
IHR5cGVkZWYgb2YgdW5zaWduZWQKKy8vIHNob3J0LiAgSXQgZGVmaW5lcyBfTkFUSVZFX1dDSEFS
X1RfREVGSU5FRCB3aGVuIHdjaGFyX3QgaXMgYSBuYXRpdmUKKy8vIHR5cGUuICBXaGVuIHdjaGFy
X3QgaXMgYSB0eXBlZGVmLCBkZWZpbmluZyBhbiBvdmVybG9hZCBmb3IgY29uc3QKKy8vIHdjaGFy
X3QqIHdvdWxkIGNhdXNlIHVuc2lnbmVkIHNob3J0KiBiZSBwcmludGVkIGFzIGEgd2lkZSBzdHJp
bmcsCisvLyBwb3NzaWJseSBjYXVzaW5nIGludmFsaWQgbWVtb3J5IGFjY2Vzc2VzLgorI2lmICFk
ZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEKQorLy8g
T3ZlcmxvYWRzIGZvciB3aWRlIEMgc3RyaW5ncworR1RFU1RfQVBJXyB2b2lkIFByaW50VG8oY29u
c3Qgd2NoYXJfdCogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKK2lubGluZSB2b2lkIFByaW50VG8o
d2NoYXJfdCogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGljaXRDYXN0
Xzxjb25zdCB3Y2hhcl90Kj4ocyksIG9zKTsKK30KKyNlbmRpZgorCisvLyBPdmVybG9hZCBmb3Ig
QyBhcnJheXMuICBNdWx0aS1kaW1lbnNpb25hbCBhcnJheXMgYXJlIHByaW50ZWQKKy8vIHByb3Bl
cmx5LgorCisvLyBQcmludHMgdGhlIGdpdmVuIG51bWJlciBvZiBlbGVtZW50cyBpbiBhbiBhcnJh
eSwgd2l0aG91dCBwcmludGluZworLy8gdGhlIGN1cmx5IGJyYWNlcy4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgordm9pZCBQcmludFJhd0FycmF5VG8oY29uc3QgVCBhW10sIHNpemVfdCBjb3VudCwg
OjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFVuaXZlcnNhbFByaW50KGFbMF0sIG9zKTsKKyAgZm9y
IChzaXplX3QgaSA9IDE7IGkgIT0gY291bnQ7IGkrKykgeworICAgICpvcyA8PCAiLCAiOworICAg
IFVuaXZlcnNhbFByaW50KGFbaV0sIG9zKTsKKyAgfQorfQorCisvLyBPdmVybG9hZHMgZm9yIDo6
c3RyaW5nIGFuZCA6OnN0ZDo6c3RyaW5nLgorI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCitH
VEVTVF9BUElfIHZvaWQgUHJpbnRTdHJpbmdUbyhjb25zdCA6OnN0cmluZyZzLCA6OnN0ZDo6b3N0
cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6OnN0cmluZyYgcywgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgIFByaW50U3RyaW5nVG8ocywgb3MpOworfQorI2VuZGlmICAvLyBH
VEVTVF9IQVNfR0xPQkFMX1NUUklORworCitHVEVTVF9BUElfIHZvaWQgUHJpbnRTdHJpbmdUbyhj
b25zdCA6OnN0ZDo6c3RyaW5nJnMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQ
cmludFRvKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQ
cmludFN0cmluZ1RvKHMsIG9zKTsKK30KKworLy8gT3ZlcmxvYWRzIGZvciA6OndzdHJpbmcgYW5k
IDo6c3RkOjp3c3RyaW5nLgorI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORworR1RFU1RfQVBJ
XyB2b2lkIFByaW50V2lkZVN0cmluZ1RvKGNvbnN0IDo6d3N0cmluZyZzLCA6OnN0ZDo6b3N0cmVh
bSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6OndzdHJpbmcmIHMsIDo6c3RkOjpv
c3RyZWFtKiBvcykgeworICBQcmludFdpZGVTdHJpbmdUbyhzLCBvcyk7Cit9CisjZW5kaWYgIC8v
IEdURVNUX0hBU19HTE9CQUxfV1NUUklORworCisjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCitH
VEVTVF9BUElfIHZvaWQgUHJpbnRXaWRlU3RyaW5nVG8oY29uc3QgOjpzdGQ6OndzdHJpbmcmcywg
OjpzdGQ6Om9zdHJlYW0qIG9zKTsKK2lubGluZSB2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6Ondz
dHJpbmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFdpZGVTdHJpbmdUbyhzLCBv
cyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORworCisjaWYgR1RFU1RfSEFT
X0FCU0wKKy8vIE92ZXJsb2FkIGZvciBhYnNsOjpzdHJpbmdfdmlldy4KK2lubGluZSB2b2lkIFBy
aW50VG8oYWJzbDo6c3RyaW5nX3ZpZXcgc3AsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmlu
dFRvKDo6c3RkOjpzdHJpbmcoc3ApLCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNM
CisKKyNpZiBHVEVTVF9MQU5HX0NYWDExCitpbmxpbmUgdm9pZCBQcmludFRvKHN0ZDo6bnVsbHB0
cl90LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsgKm9zIDw8ICIobnVsbHB0cikiOyB9CisjZW5kaWYg
IC8vIEdURVNUX0xBTkdfQ1hYMTEKKworI2lmIEdURVNUX0hBU19UUjFfVFVQTEUgfHwgR1RFU1Rf
SEFTX1NURF9UVVBMRV8KKy8vIEhlbHBlciBmdW5jdGlvbiBmb3IgcHJpbnRpbmcgYSB0dXBsZS4g
IFQgbXVzdCBiZSBpbnN0YW50aWF0ZWQgd2l0aAorLy8gYSB0dXBsZSB0eXBlLgordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Cit2b2lkIFByaW50VHVwbGVUbyhjb25zdCBUJiB0LCA6OnN0ZDo6b3N0cmVh
bSogb3MpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfVFIxX1RVUExFIHx8IEdURVNUX0hBU19TVERf
VFVQTEVfCisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCisvLyBPdmVybG9hZCBmb3IgOjpzdGQ6
OnRyMTo6dHVwbGUuICBOZWVkZWQgZm9yIHByaW50aW5nIGZ1bmN0aW9uIGFyZ3VtZW50cywKKy8v
IHdoaWNoIGFyZSBwYWNrZWQgYXMgdHVwbGVzLgorCisvLyBPdmVybG9hZGVkIFByaW50VG8oKSBm
b3IgdHVwbGVzIG9mIHZhcmlvdXMgYXJpdGllcy4gIFdlIHN1cHBvcnQKKy8vIHR1cGxlcyBvZiB1
cC10byAxMCBmaWVsZHMuICBUaGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIHdvcmtzCisvLyBy
ZWdhcmRsZXNzIG9mIHdoZXRoZXIgdHIxOjp0dXBsZSBpcyBpbXBsZW1lbnRlZCB1c2luZyB0aGUK
Ky8vIG5vbi1zdGFuZGFyZCB2YXJpYWRpYyB0ZW1wbGF0ZSBmZWF0dXJlIG9yIG5vdC4KKworaW5s
aW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTw+JiB0LCA6OnN0ZDo6b3N0
cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQxPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxPiYgdCwgOjpz
dGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRy
MTo6dHVwbGU8VDEsIFQyPiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVU
byh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVu
YW1lIFQzPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDM+
JiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0Pgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0
PiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDU+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8
VDEsIFQyLCBUMywgVDQsIFQ1PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAg
ICAgICB0eXBlbmFtZSBUNj4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAg
ICAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+Cit2b2lkIFByaW50VG8oY29uc3QgOjpz
dGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+JiB0LAorICAgICAgICAg
ICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFR1cGxlVG8odCwgb3MpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUg
VDQsIHR5cGVuYW1lIFQ1LAorICAgICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlw
ZW5hbWUgVDg+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAg
ICAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBU
OT4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAg
ICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwg
dHlwZW5hbWUgVDEwPgordm9pZCBQcmludFRvKAorICAgIGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxl
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD4mIHQsCisgICAgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisjZW5kaWYgIC8vIEdU
RVNUX0hBU19UUjFfVFVQTEUKKworI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCit0ZW1wbGF0ZSA8
dHlwZW5hbWUuLi4gVHlwZXM+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnR1cGxlPFR5cGVz
Li4uPiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9
CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfVFVQTEVfCisKKy8vIE92ZXJsb2FkIGZvciBzdGQ6
OnBhaXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgordm9pZCBQcmludFRv
KGNvbnN0IDo6c3RkOjpwYWlyPFQxLCBUMj4mIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsK
KyAgKm9zIDw8ICcoJzsKKyAgLy8gV2UgY2Fubm90IHVzZSBVbml2ZXJzYWxQcmludCh2YWx1ZS5m
aXJzdCwgb3MpIGhlcmUsIGFzIFQxIG1heSBiZQorICAvLyBhIHJlZmVyZW5jZSB0eXBlLiAgVGhl
IHNhbWUgZm9yIHByaW50aW5nIHZhbHVlLnNlY29uZC4KKyAgVW5pdmVyc2FsUHJpbnRlcjxUMT46
OlByaW50KHZhbHVlLmZpcnN0LCBvcyk7CisgICpvcyA8PCAiLCAiOworICBVbml2ZXJzYWxQcmlu
dGVyPFQyPjo6UHJpbnQodmFsdWUuc2Vjb25kLCBvcyk7CisgICpvcyA8PCAnKSc7Cit9CisKKy8v
IEltcGxlbWVudHMgcHJpbnRpbmcgYSBub24tcmVmZXJlbmNlIHR5cGUgVCBieSBsZXR0aW5nIHRo
ZSBjb21waWxlcgorLy8gcGljayB0aGUgcmlnaHQgb3ZlcmxvYWQgb2YgUHJpbnRUbygpIGZvciBU
LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbml2ZXJzYWxQcmludGVyIHsKKyBwdWJs
aWM6CisgIC8vIE1TVkMgd2FybnMgYWJvdXQgYWRkaW5nIGNvbnN0IHRvIGEgZnVuY3Rpb24gdHlw
ZSwgc28gd2Ugd2FudCB0bworICAvLyBkaXNhYmxlIHRoZSB3YXJuaW5nLgorICBHVEVTVF9ESVNB
QkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MTgwKQorCisgIC8vIE5vdGU6IHdlIGRlbGliZXJhdGVs
eSBkb24ndCBjYWxsIHRoaXMgUHJpbnRUbygpLCBhcyB0aGF0IG5hbWUKKyAgLy8gY29uZmxpY3Rz
IHdpdGggOjp0ZXN0aW5nOjppbnRlcm5hbDo6UHJpbnRUbyBpbiB0aGUgYm9keSBvZiB0aGUKKyAg
Ly8gZnVuY3Rpb24uCisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6
b3N0cmVhbSogb3MpIHsKKyAgICAvLyBCeSBkZWZhdWx0LCA6OnRlc3Rpbmc6OmludGVybmFsOjpQ
cmludFRvKCkgaXMgdXNlZCBmb3IgcHJpbnRpbmcKKyAgICAvLyB0aGUgdmFsdWUuCisgICAgLy8K
KyAgICAvLyBUaGFua3MgdG8gS29lbmlnIGxvb2stdXAsIGlmIFQgaXMgYSBjbGFzcyBhbmQgaGFz
IGl0cyBvd24KKyAgICAvLyBQcmludFRvKCkgZnVuY3Rpb24gZGVmaW5lZCBpbiBpdHMgbmFtZXNw
YWNlLCB0aGF0IGZ1bmN0aW9uIHdpbGwKKyAgICAvLyBiZSB2aXNpYmxlIGhlcmUuICBTaW5jZSBp
dCBpcyBtb3JlIHNwZWNpZmljIHRoYW4gdGhlIGdlbmVyaWMgb25lcworICAgIC8vIGluIDo6dGVz
dGluZzo6aW50ZXJuYWwsIGl0IHdpbGwgYmUgcGlja2VkIGJ5IHRoZSBjb21waWxlciBpbiB0aGUK
KyAgICAvLyBmb2xsb3dpbmcgc3RhdGVtZW50IC0gZXhhY3RseSB3aGF0IHdlIHdhbnQuCisgICAg
UHJpbnRUbyh2YWx1ZSwgb3MpOworICB9CisKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1Nf
UE9QXygpCit9OworCisjaWYgR1RFU1RfSEFTX0FCU0wKKworLy8gUHJpbnRlciBmb3IgYWJzbDo6
b3B0aW9uYWwKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbml2ZXJzYWxQcmludGVy
PDo6YWJzbDo6b3B0aW9uYWw8VD4+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFByaW50KGNv
bnN0IDo6YWJzbDo6b3B0aW9uYWw8VD4mIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAg
ICAqb3MgPDwgJygnOworICAgIGlmICghdmFsdWUpIHsKKyAgICAgICpvcyA8PCAibnVsbG9wdCI7
CisgICAgfSBlbHNlIHsKKyAgICAgIFVuaXZlcnNhbFByaW50KCp2YWx1ZSwgb3MpOworICAgIH0K
KyAgICAqb3MgPDwgJyknOworICB9Cit9OworCisvLyBQcmludGVyIGZvciBhYnNsOjp2YXJpYW50
CisKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBUPgorY2xhc3MgVW5pdmVyc2FsUHJpbnRlcjw6OmFi
c2w6OnZhcmlhbnQ8VC4uLj4+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0
IDo6YWJzbDo6dmFyaWFudDxULi4uPiYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAg
ICpvcyA8PCAnKCc7CisgICAgYWJzbDo6dmlzaXQoVmlzaXRvcntvc30sIHZhbHVlKTsKKyAgICAq
b3MgPDwgJyknOworICB9CisKKyBwcml2YXRlOgorICBzdHJ1Y3QgVmlzaXRvciB7CisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFU+CisgICAgdm9pZCBvcGVyYXRvcigpKGNvbnN0IFUmIHUpIGNvbnN0
IHsKKyAgICAgICpvcyA8PCAiJyIgPDwgR2V0VHlwZU5hbWU8VT4oKSA8PCAiJyB3aXRoIHZhbHVl
ICI7CisgICAgICBVbml2ZXJzYWxQcmludCh1LCBvcyk7CisgICAgfQorICAgIDo6c3RkOjpvc3Ry
ZWFtKiBvczsKKyAgfTsKK307CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0FCU0wKKworLy8gVW5p
dmVyc2FsUHJpbnRBcnJheShiZWdpbiwgbGVuLCBvcykgcHJpbnRzIGFuIGFycmF5IG9mICdsZW4n
CisvLyBlbGVtZW50cywgc3RhcnRpbmcgYXQgYWRkcmVzcyAnYmVnaW4nLgordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFByaW50QXJyYXkoY29uc3QgVCogYmVnaW4sIHNpemVf
dCBsZW4sIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBpZiAobGVuID09IDApIHsKKyAgICAqb3Mg
PDwgInt9IjsKKyAgfSBlbHNlIHsKKyAgICAqb3MgPDwgInsgIjsKKyAgICBjb25zdCBzaXplX3Qg
a1RocmVzaG9sZCA9IDE4OworICAgIGNvbnN0IHNpemVfdCBrQ2h1bmtTaXplID0gODsKKyAgICAv
LyBJZiB0aGUgYXJyYXkgaGFzIG1vcmUgdGhhbiBrVGhyZXNob2xkIGVsZW1lbnRzLCB3ZSdsbCBo
YXZlIHRvCisgICAgLy8gb21pdCBzb21lIGRldGFpbHMgYnkgcHJpbnRpbmcgb25seSB0aGUgZmly
c3QgYW5kIHRoZSBsYXN0CisgICAgLy8ga0NodW5rU2l6ZSBlbGVtZW50cy4KKyAgICAvLyBGSVhN
RTogbGV0IHRoZSB1c2VyIGNvbnRyb2wgdGhlIHRocmVzaG9sZCB1c2luZyBhIGZsYWcuCisgICAg
aWYgKGxlbiA8PSBrVGhyZXNob2xkKSB7CisgICAgICBQcmludFJhd0FycmF5VG8oYmVnaW4sIGxl
biwgb3MpOworICAgIH0gZWxzZSB7CisgICAgICBQcmludFJhd0FycmF5VG8oYmVnaW4sIGtDaHVu
a1NpemUsIG9zKTsKKyAgICAgICpvcyA8PCAiLCAuLi4sICI7CisgICAgICBQcmludFJhd0FycmF5
VG8oYmVnaW4gKyBsZW4gLSBrQ2h1bmtTaXplLCBrQ2h1bmtTaXplLCBvcyk7CisgICAgfQorICAg
ICpvcyA8PCAiIH0iOworICB9Cit9CisvLyBUaGlzIG92ZXJsb2FkIHByaW50cyBhIChjb25zdCkg
Y2hhciBhcnJheSBjb21wYWN0bHkuCitHVEVTVF9BUElfIHZvaWQgVW5pdmVyc2FsUHJpbnRBcnJh
eSgKKyAgICBjb25zdCBjaGFyKiBiZWdpbiwgc2l6ZV90IGxlbiwgOjpzdGQ6Om9zdHJlYW0qIG9z
KTsKKworLy8gVGhpcyBvdmVybG9hZCBwcmludHMgYSAoY29uc3QpIHdjaGFyX3QgYXJyYXkgY29t
cGFjdGx5LgorR1RFU1RfQVBJXyB2b2lkIFVuaXZlcnNhbFByaW50QXJyYXkoCisgICAgY29uc3Qg
d2NoYXJfdCogYmVnaW4sIHNpemVfdCBsZW4sIDo6c3RkOjpvc3RyZWFtKiBvcyk7CisKKy8vIElt
cGxlbWVudHMgcHJpbnRpbmcgYW4gYXJyYXkgdHlwZSBUW05dLgordGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHNpemVfdCBOPgorY2xhc3MgVW5pdmVyc2FsUHJpbnRlcjxUW05dPiB7CisgcHVibGljOgor
ICAvLyBQcmludHMgdGhlIGdpdmVuIGFycmF5LCBvbWl0dGluZyBzb21lIGVsZW1lbnRzIHdoZW4g
dGhlcmUgYXJlIHRvbworICAvLyBtYW55LgorICBzdGF0aWMgdm9pZCBQcmludChjb25zdCBUICgm
YSlbTl0sIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIFVuaXZlcnNhbFByaW50QXJyYXkoYSwg
Tiwgb3MpOworICB9Cit9OworCisvLyBJbXBsZW1lbnRzIHByaW50aW5nIGEgcmVmZXJlbmNlIHR5
cGUgVCYuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFVuaXZlcnNhbFByaW50ZXI8VCY+
IHsKKyBwdWJsaWM6CisgIC8vIE1TVkMgd2FybnMgYWJvdXQgYWRkaW5nIGNvbnN0IHRvIGEgZnVu
Y3Rpb24gdHlwZSwgc28gd2Ugd2FudCB0bworICAvLyBkaXNhYmxlIHRoZSB3YXJuaW5nLgorICBH
VEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MTgwKQorCisgIHN0YXRpYyB2b2lkIFBy
aW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICAvLyBQcmludHMg
dGhlIGFkZHJlc3Mgb2YgdGhlIHZhbHVlLiAgV2UgdXNlIHJlaW50ZXJwcmV0X2Nhc3QgaGVyZQor
ICAgIC8vIGFzIHN0YXRpY19jYXN0IGRvZXNuJ3QgY29tcGlsZSB3aGVuIFQgaXMgYSBmdW5jdGlv
biB0eXBlLgorICAgICpvcyA8PCAiQCIgPDwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4o
JnZhbHVlKSA8PCAiICI7CisKKyAgICAvLyBUaGVuIHByaW50cyB0aGUgdmFsdWUgaXRzZWxmLgor
ICAgIFVuaXZlcnNhbFByaW50KHZhbHVlLCBvcyk7CisgIH0KKworICBHVEVTVF9ESVNBQkxFX01T
Q19XQVJOSU5HU19QT1BfKCkKK307CisKKy8vIFByaW50cyBhIHZhbHVlIHRlcnNlbHk6IGZvciBh
IHJlZmVyZW5jZSB0eXBlLCB0aGUgcmVmZXJlbmNlZCB2YWx1ZQorLy8gKGJ1dCBub3QgdGhlIGFk
ZHJlc3MpIGlzIHByaW50ZWQ7IGZvciBhIChjb25zdCkgY2hhciBwb2ludGVyLCB0aGUKKy8vIE5V
TC10ZXJtaW5hdGVkIHN0cmluZyAoYnV0IG5vdCB0aGUgcG9pbnRlcikgaXMgcHJpbnRlZC4KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbml2ZXJzYWxUZXJzZVByaW50ZXIgeworIHB1
YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFt
KiBvcykgeworICAgIFVuaXZlcnNhbFByaW50KHZhbHVlLCBvcyk7CisgIH0KK307Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxUJj4geworIHB1Ymxp
YzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBv
cykgeworICAgIFVuaXZlcnNhbFByaW50KHZhbHVlLCBvcyk7CisgIH0KK307Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitjbGFzcyBVbml2ZXJzYWxUZXJzZVByaW50ZXI8VFtOXT4g
eworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCAoJnZhbHVlKVtOXSwgOjpz
dGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVW5pdmVyc2FsUHJpbnRlcjxUW05dPjo6UHJpbnQodmFs
dWUsIG9zKTsKKyAgfQorfTsKK3RlbXBsYXRlIDw+CitjbGFzcyBVbml2ZXJzYWxUZXJzZVByaW50
ZXI8Y29uc3QgY2hhcio+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IGNo
YXIqIHN0ciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgaWYgKHN0ciA9PSBOVUxMKSB7Cisg
ICAgICAqb3MgPDwgIk5VTEwiOworICAgIH0gZWxzZSB7CisgICAgICBVbml2ZXJzYWxQcmludChz
dGQ6OnN0cmluZyhzdHIpLCBvcyk7CisgICAgfQorICB9Cit9OwordGVtcGxhdGUgPD4KK2NsYXNz
IFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjaGFyKj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQg
UHJpbnQoY2hhciogc3RyLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBVbml2ZXJzYWxUZXJz
ZVByaW50ZXI8Y29uc3QgY2hhcio+OjpQcmludChzdHIsIG9zKTsKKyAgfQorfTsKKworI2lmIEdU
RVNUX0hBU19TVERfV1NUUklORwordGVtcGxhdGUgPD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJp
bnRlcjxjb25zdCB3Y2hhcl90Kj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29u
c3Qgd2NoYXJfdCogc3RyLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBpZiAoc3RyID09IE5V
TEwpIHsKKyAgICAgICpvcyA8PCAiTlVMTCI7CisgICAgfSBlbHNlIHsKKyAgICAgIFVuaXZlcnNh
bFByaW50KDo6c3RkOjp3c3RyaW5nKHN0ciksIG9zKTsKKyAgICB9CisgIH0KK307CisjZW5kaWYK
KwordGVtcGxhdGUgPD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjx3Y2hhcl90Kj4gewor
IHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQod2NoYXJfdCogc3RyLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgICBVbml2ZXJzYWxUZXJzZVByaW50ZXI8Y29uc3Qgd2NoYXJfdCo+OjpQcmlu
dChzdHIsIG9zKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFVuaXZl
cnNhbFRlcnNlUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBV
bml2ZXJzYWxUZXJzZVByaW50ZXI8VD46OlByaW50KHZhbHVlLCBvcyk7Cit9CisKKy8vIFByaW50
cyBhIHZhbHVlIHVzaW5nIHRoZSB0eXBlIGluZmVycmVkIGJ5IHRoZSBjb21waWxlci4gIFRoZQor
Ly8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIFVuaXZlcnNhbFRlcnNlUHJpbnQoKSBpcyB0
aGF0IGZvciBhCisvLyAoY29uc3QpIGNoYXIgcG9pbnRlciwgdGhpcyBwcmludHMgYm90aCB0aGUg
cG9pbnRlciBhbmQgdGhlCisvLyBOVUwtdGVybWluYXRlZCBzdHJpbmcuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3ZvaWQgVW5pdmVyc2FsUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3Ry
ZWFtKiBvcykgeworICAvLyBBIHdvcmthcm9uZCBmb3IgdGhlIGJ1ZyBpbiBWQysrIDcuMSB0aGF0
IHByZXZlbnRzIHVzIGZyb20gaW5zdGFudGlhdGluZworICAvLyBVbml2ZXJzYWxQcmludGVyIHdp
dGggVCBkaXJlY3RseS4KKyAgdHlwZWRlZiBUIFQxOworICBVbml2ZXJzYWxQcmludGVyPFQxPjo6
UHJpbnQodmFsdWUsIG9zKTsKK30KKwordHlwZWRlZiA6OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6c3Ry
aW5nPiBTdHJpbmdzOworCisvLyBUdXBsZVBvbGljeTxUdXBsZVQ+IG11c3QgcHJvdmlkZToKKy8v
IC0gdHVwbGVfc2l6ZQorLy8gICAgIHNpemUgb2YgdHVwbGUgVHVwbGVULgorLy8gLSBnZXQ8c2l6
ZV90IEk+KGNvbnN0IFR1cGxlVCYgdCkKKy8vICAgICBzdGF0aWMgZnVuY3Rpb24gZXh0cmFjdGlu
ZyBlbGVtZW50IEkgb2YgdHVwbGUgVHVwbGVULgorLy8gLSB0dXBsZV9lbGVtZW50PHNpemVfdCBJ
Pjo6dHlwZQorLy8gICAgIHR5cGUgb2YgZWxlbWVudCBJIG9mIHR1cGxlIFR1cGxlVC4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBUdXBsZVQ+CitzdHJ1Y3QgVHVwbGVQb2xpY3k7CisKKyNpZiBHVEVTVF9I
QVNfVFIxX1RVUExFCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGVUPgorc3RydWN0IFR1cGxlUG9s
aWN5IHsKKyAgdHlwZWRlZiBUdXBsZVQgVHVwbGU7CisgIHN0YXRpYyBjb25zdCBzaXplX3QgdHVw
bGVfc2l6ZSA9IDo6c3RkOjp0cjE6OnR1cGxlX3NpemU8VHVwbGU+Ojp2YWx1ZTsKKworICB0ZW1w
bGF0ZSA8c2l6ZV90IEk+CisgIHN0cnVjdCB0dXBsZV9lbGVtZW50IDogOjpzdGQ6OnRyMTo6dHVw
bGVfZWxlbWVudDxzdGF0aWNfY2FzdDxpbnQ+KEkpLCBUdXBsZT4geworICB9OworCisgIHRlbXBs
YXRlIDxzaXplX3QgST4KKyAgc3RhdGljIHR5cGVuYW1lIEFkZFJlZmVyZW5jZTxjb25zdCB0eXBl
bmFtZSA6OnN0ZDo6dHIxOjp0dXBsZV9lbGVtZW50PAorICAgICAgc3RhdGljX2Nhc3Q8aW50PihJ
KSwgVHVwbGU+Ojp0eXBlPjo6dHlwZQorICBnZXQoY29uc3QgVHVwbGUmIHR1cGxlKSB7CisgICAg
cmV0dXJuIDo6c3RkOjp0cjE6OmdldDxJPih0dXBsZSk7CisgIH0KK307Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVHVwbGVUPgorY29uc3Qgc2l6ZV90IFR1cGxlUG9saWN5PFR1cGxlVD46OnR1cGxlX3Np
emU7CisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUKKworI2lmIEdURVNUX0hBU19TVERf
VFVQTEVfCit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHlwZXM+CitzdHJ1Y3QgVHVwbGVQb2xpY3k8
IDo6c3RkOjp0dXBsZTxUeXBlcy4uLj4gPiB7CisgIHR5cGVkZWYgOjpzdGQ6OnR1cGxlPFR5cGVz
Li4uPiBUdXBsZTsKKyAgc3RhdGljIGNvbnN0IHNpemVfdCB0dXBsZV9zaXplID0gOjpzdGQ6OnR1
cGxlX3NpemU8VHVwbGU+Ojp2YWx1ZTsKKworICB0ZW1wbGF0ZSA8c2l6ZV90IEk+CisgIHN0cnVj
dCB0dXBsZV9lbGVtZW50IDogOjpzdGQ6OnR1cGxlX2VsZW1lbnQ8SSwgVHVwbGU+IHt9OworCisg
IHRlbXBsYXRlIDxzaXplX3QgST4KKyAgc3RhdGljIGNvbnN0IHR5cGVuYW1lIDo6c3RkOjp0dXBs
ZV9lbGVtZW50PEksIFR1cGxlPjo6dHlwZSYgZ2V0KAorICAgICAgY29uc3QgVHVwbGUmIHR1cGxl
KSB7CisgICAgcmV0dXJuIDo6c3RkOjpnZXQ8ST4odHVwbGUpOworICB9Cit9OwordGVtcGxhdGUg
PHR5cGVuYW1lLi4uIFR5cGVzPgorY29uc3Qgc2l6ZV90IFR1cGxlUG9saWN5PCA6OnN0ZDo6dHVw
bGU8VHlwZXMuLi4+ID46OnR1cGxlX3NpemU7CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfVFVQ
TEVfCisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFIHx8IEdURVNUX0hBU19TVERfVFVQTEVfCisv
LyBUaGlzIGhlbHBlciB0ZW1wbGF0ZSBhbGxvd3MgUHJpbnRUbygpIGZvciB0dXBsZXMgYW5kCisv
LyBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoKSB0byBiZSBkZWZpbmVk
IGJ5CisvLyBpbmR1Y3Rpb24gb24gdGhlIG51bWJlciBvZiB0dXBsZSBmaWVsZHMuICBUaGUgaWRl
YSBpcyB0aGF0CisvLyBUdXBsZVByZWZpeFByaW50ZXI8Tj46OlByaW50UHJlZml4VG8odCwgb3Mp
IHByaW50cyB0aGUgZmlyc3QgTgorLy8gZmllbGRzIGluIHR1cGxlIHQsIGFuZCBjYW4gYmUgZGVm
aW5lZCBpbiB0ZXJtcyBvZgorLy8gVHVwbGVQcmVmaXhQcmludGVyPE4gLSAxPi4KKy8vCisvLyBU
aGUgaW5kdWN0aXZlIGNhc2UuCit0ZW1wbGF0ZSA8c2l6ZV90IE4+CitzdHJ1Y3QgVHVwbGVQcmVm
aXhQcmludGVyIHsKKyAgLy8gUHJpbnRzIHRoZSBmaXJzdCBOIGZpZWxkcyBvZiBhIHR1cGxlLgor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+CisgIHN0YXRpYyB2b2lkIFByaW50UHJlZml4VG8o
Y29uc3QgVHVwbGUmIHQsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIFR1cGxlUHJlZml4UHJp
bnRlcjxOIC0gMT46OlByaW50UHJlZml4VG8odCwgb3MpOworICAgIEdURVNUX0lOVEVOVElPTkFM
X0NPTlNUX0NPTkRfUFVTSF8oKQorICAgIGlmIChOID4gMSkgeworICAgIEdURVNUX0lOVEVOVElP
TkFMX0NPTlNUX0NPTkRfUE9QXygpCisgICAgICAqb3MgPDwgIiwgIjsKKyAgICB9CisgICAgVW5p
dmVyc2FsUHJpbnRlcjwKKyAgICAgICAgdHlwZW5hbWUgVHVwbGVQb2xpY3k8VHVwbGU+Ojp0ZW1w
bGF0ZSB0dXBsZV9lbGVtZW50PE4gLSAxPjo6dHlwZT4KKyAgICAgICAgOjpQcmludChUdXBsZVBv
bGljeTxUdXBsZT46OnRlbXBsYXRlIGdldDxOIC0gMT4odCksIG9zKTsKKyAgfQorCisgIC8vIFRl
cnNlbHkgcHJpbnRzIHRoZSBmaXJzdCBOIGZpZWxkcyBvZiBhIHR1cGxlIHRvIGEgc3RyaW5nIHZl
Y3RvciwKKyAgLy8gb25lIGVsZW1lbnQgZm9yIGVhY2ggZmllbGQuCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUdXBsZT4KKyAgc3RhdGljIHZvaWQgVGVyc2VQcmludFByZWZpeFRvU3RyaW5ncyhjb25z
dCBUdXBsZSYgdCwgU3RyaW5ncyogc3RyaW5ncykgeworICAgIFR1cGxlUHJlZml4UHJpbnRlcjxO
IC0gMT46OlRlcnNlUHJpbnRQcmVmaXhUb1N0cmluZ3ModCwgc3RyaW5ncyk7CisgICAgOjpzdGQ6
OnN0cmluZ3N0cmVhbSBzczsKKyAgICBVbml2ZXJzYWxUZXJzZVByaW50KFR1cGxlUG9saWN5PFR1
cGxlPjo6dGVtcGxhdGUgZ2V0PE4gLSAxPih0KSwgJnNzKTsKKyAgICBzdHJpbmdzLT5wdXNoX2Jh
Y2soc3Muc3RyKCkpOworICB9Cit9OworCisvLyBCYXNlIGNhc2UuCit0ZW1wbGF0ZSA8Pgorc3Ry
dWN0IFR1cGxlUHJlZml4UHJpbnRlcjwwPiB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4K
KyAgc3RhdGljIHZvaWQgUHJpbnRQcmVmaXhUbyhjb25zdCBUdXBsZSYsIDo6c3RkOjpvc3RyZWFt
Kikge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+CisgIHN0YXRpYyB2b2lkIFRlcnNl
UHJpbnRQcmVmaXhUb1N0cmluZ3MoY29uc3QgVHVwbGUmLCBTdHJpbmdzKikge30KK307CisKKy8v
IEhlbHBlciBmdW5jdGlvbiBmb3IgcHJpbnRpbmcgYSB0dXBsZS4KKy8vIFR1cGxlIG11c3QgYmUg
ZWl0aGVyIHN0ZDo6dHIxOjp0dXBsZSBvciBzdGQ6OnR1cGxlIHR5cGUuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVHVwbGU+Cit2b2lkIFByaW50VHVwbGVUbyhjb25zdCBUdXBsZSYgdCwgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgICpvcyA8PCAiKCI7CisgIFR1cGxlUHJlZml4UHJpbnRlcjxUdXBsZVBv
bGljeTxUdXBsZT46OnR1cGxlX3NpemU+OjpQcmludFByZWZpeFRvKHQsIG9zKTsKKyAgKm9zIDw8
ICIpIjsKK30KKworLy8gUHJpbnRzIHRoZSBmaWVsZHMgb2YgYSB0dXBsZSB0ZXJzZWx5IHRvIGEg
c3RyaW5nIHZlY3Rvciwgb25lCisvLyBlbGVtZW50IGZvciBlYWNoIGZpZWxkLiAgU2VlIHRoZSBj
b21tZW50IGJlZm9yZQorLy8gVW5pdmVyc2FsVGVyc2VQcmludCgpIGZvciBob3cgd2UgZGVmaW5l
ICJ0ZXJzZWx5Ii4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4KK1N0cmluZ3MgVW5pdmVyc2Fs
VGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKGNvbnN0IFR1cGxlJiB2YWx1ZSkgeworICBT
dHJpbmdzIHJlc3VsdDsKKyAgVHVwbGVQcmVmaXhQcmludGVyPFR1cGxlUG9saWN5PFR1cGxlPjo6
dHVwbGVfc2l6ZT46OgorICAgICAgVGVyc2VQcmludFByZWZpeFRvU3RyaW5ncyh2YWx1ZSwgJnJl
c3VsdCk7CisgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQ
TEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8KKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisK
KyNpZiBHVEVTVF9IQVNfQUJTTAorbmFtZXNwYWNlIGludGVybmFsMiB7Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3ZvaWQgVHlwZVdpdGhvdXRGb3JtYXR0ZXI8VCwga0NvbnZlcnRpYmxlVG9TdHJp
bmdWaWV3Pjo6UHJpbnRWYWx1ZSgKKyAgICBjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0q
IG9zKSB7CisgIGludGVybmFsOjpQcmludFRvKGFic2w6OnN0cmluZ192aWV3KHZhbHVlKSwgb3Mp
OworfQorfSAgLy8gbmFtZXNwYWNlIGludGVybmFsMgorI2VuZGlmCisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgorOjpzdGQ6OnN0cmluZyBQcmludFRvU3RyaW5nKGNvbnN0IFQmIHZhbHVlKSB7Cisg
IDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIGludGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50
ZXI8VD46OlByaW50KHZhbHVlLCAmc3MpOworICByZXR1cm4gc3Muc3RyKCk7Cit9CisKK30gIC8v
IG5hbWVzcGFjZSB0ZXN0aW5nCisKKy8vIEluY2x1ZGUgYW55IGN1c3RvbSBwcmludGVyIGFkZGVk
IGJ5IHRoZSBsb2NhbCBpbnN0YWxsYXRpb24uCisvLyBXZSBtdXN0IGluY2x1ZGUgdGhpcyBoZWFk
ZXIgYXQgdGhlIGVuZCB0byBtYWtlIHN1cmUgaXQgY2FuIHVzZSB0aGUKKy8vIGRlY2xhcmF0aW9u
cyBmcm9tIHRoaXMgZmlsZS4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3Qt
cHJpbnRlcnMuaCIKKworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BSSU5U
RVJTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2d0ZXN0LXNwaS5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVz
dC1zcGkuaAppbmRleCBjNDFkYTQ4NDQ3NjAzZTk2NWZiNzcyYWJjYTJmMTQ1ZWU4MmE2MDZmLi4x
ZTg5ODM5MzhlYTI3OTJjNTI2OTBlYWQyOWIwMGFiNThjZGFhZTljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXNwaS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qtc3BpLmgKQEAgLTI2LDE2ICsy
NiwyMCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ly8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogLy8KIC8vIFV0
aWxpdGllcyBmb3IgdGVzdGluZyBHb29nbGUgVGVzdCBpdHNlbGYgYW5kIGNvZGUgdGhhdCB1c2Vz
IEdvb2dsZSBUZXN0CiAvLyAoZS5nLiBmcmFtZXdvcmtzIGJ1aWx0IG9uIHRvcCBvZiBHb29nbGUg
VGVzdCkuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDA0IERPIE5PVCBERUxFVEUKKwogI2lmbmRlZiBH
VEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1NQSV9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dU
RVNUX0dURVNUX1NQSV9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgorCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MjUxIFwK
Ky8qIGNsYXNzIEEgbmVlZHMgdG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xp
ZW50cyBvZiBjbGFzcyBCICovKQogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKQEAgLTk3LDEzICsx
MDEsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBTaW5nbGVGYWlsdXJlQ2hlY2tlciB7CiAgcHVibGlj
OgogICAvLyBUaGUgY29uc3RydWN0b3IgcmVtZW1iZXJzIHRoZSBhcmd1bWVudHMuCiAgIFNpbmds
ZUZhaWx1cmVDaGVja2VyKGNvbnN0IFRlc3RQYXJ0UmVzdWx0QXJyYXkqIHJlc3VsdHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN1YnN0cik7CisgICAgICAgICAgICAgICAgICAgICAg
IFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUsIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdWJzdHIpOwog
ICB+U2luZ2xlRmFpbHVyZUNoZWNrZXIoKTsKICBwcml2YXRlOgogICBjb25zdCBUZXN0UGFydFJl
c3VsdEFycmF5KiBjb25zdCByZXN1bHRzXzsKICAgY29uc3QgVGVzdFBhcnRSZXN1bHQ6OlR5cGUg
dHlwZV87Ci0gIGNvbnN0IFN0cmluZyBzdWJzdHJfOworICBjb25zdCBzdGQ6OnN0cmluZyBzdWJz
dHJfOwogCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oU2luZ2xlRmFpbHVyZUNo
ZWNrZXIpOwogfTsKQEAgLTExMiw2ICsxMTUsOCBAQCBjbGFzcyBHVEVTVF9BUElfIFNpbmdsZUZh
aWx1cmVDaGVja2VyIHsKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAorR1RFU1RfRElTQUJM
RV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQorCiAvLyBBIHNldCBvZiBtYWNyb3MgZm9y
IHRlc3RpbmcgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBvciBjb2RlIHRoYXQncyBleHBlY3RlZAog
Ly8gdG8gZ2VuZXJhdGUgR29vZ2xlIFRlc3QgZmF0YWwgZmFpbHVyZXMuICBJdCB2ZXJpZmllcyB0
aGF0IHRoZSBnaXZlbgogLy8gc3RhdGVtZW50IHdpbGwgY2F1c2UgZXhhY3RseSBvbmUgZmF0YWwg
R29vZ2xlIFRlc3QgZmFpbHVyZSB3aXRoICdzdWJzdHInCkBAIC0yMjMsNyArMjI4LDcgQEAgY2xh
c3MgR1RFU1RfQVBJXyBTaW5nbGVGYWlsdXJlQ2hlY2tlciB7CiAgICAgICAgIChzdWJzdHIpKTtc
CiAgICAge1wKICAgICAgIDo6dGVzdGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0
ZXIgZ3Rlc3RfcmVwb3J0ZXIoXAotICAgICAgICAgIDo6dGVzdGluZzo6U2NvcGVkRmFrZVRlc3RQ
YXJ0UmVzdWx0UmVwb3J0ZXI6OklOVEVSQ0VQVF9BTExfVEhSRUFEUyxcCisgICAgICAgICAgOjp0
ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjo6SU5URVJDRVBUX0FMTF9U
SFJFQURTLCBcCiAgICAgICAgICAgJmd0ZXN0X2ZhaWx1cmVzKTtcCiAgICAgICBpZiAoOjp0ZXN0
aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IHN0YXRlbWVudDsgfVwKICAgICB9XApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10ZXN0
LXBhcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVz
dC1wYXJ0LmgKaW5kZXggZjcxNDc1OTA2NzYzOWYxZWE0ZWMwYTEyNjM0N2RlYzEyMDQ4MjQzOS4u
MWM3Yjg5ZTA4Nzk2ZDk3MzBmOWY4ZWVhZTQwNjIyNzE3N2RiYTUxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBhcnQuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXRlc3QtcGFydC5o
CkBAIC0yNywxNiArMjcsMTggQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIC8v
Ci0vLyBBdXRob3I6IG1oZXVsZUBnb29nbGUuY29tIChNYXJrdXMgSGV1bGUpCi0vLworLy8gR09P
R0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQogCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RF
U1RfR1RFU1RfVEVTVF9QQVJUX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1Rf
VEVTVF9QQVJUX0hfCiAKICNpbmNsdWRlIDxpb3Nmd2Q+CiAjaW5jbHVkZSA8dmVjdG9yPgotI2lu
Y2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
aW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKKwor
R1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDI1MSBcCisvKiBjbGFzcyBBIG5lZWRz
IHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2VkIGJ5IGNsaWVudHMgb2YgY2xhc3MgQiAq
LykKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC02Miw3ICs2NCw3IEBAIGNsYXNzIEdURVNU
X0FQSV8gVGVzdFBhcnRSZXN1bHQgewogICAgICAgICAgICAgICAgICBpbnQgYV9saW5lX251bWJl
ciwKICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV9tZXNzYWdlKQogICAgICAgOiB0eXBl
XyhhX3R5cGUpLAotICAgICAgICBmaWxlX25hbWVfKGFfZmlsZV9uYW1lKSwKKyAgICAgICAgZmls
ZV9uYW1lXyhhX2ZpbGVfbmFtZSA9PSBOVUxMID8gIiIgOiBhX2ZpbGVfbmFtZSksCiAgICAgICAg
IGxpbmVfbnVtYmVyXyhhX2xpbmVfbnVtYmVyKSwKICAgICAgICAgc3VtbWFyeV8oRXh0cmFjdFN1
bW1hcnkoYV9tZXNzYWdlKSksCiAgICAgICAgIG1lc3NhZ2VfKGFfbWVzc2FnZSkgewpAQCAtNzMs
NyArNzUsOSBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RQYXJ0UmVzdWx0IHsKIAogICAvLyBHZXRz
IHRoZSBuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB3aGVyZSB0aGUgdGVzdCBwYXJ0IHRvb2sgcGxh
Y2UsIG9yCiAgIC8vIE5VTEwgaWYgaXQncyB1bmtub3duLgotICBjb25zdCBjaGFyKiBmaWxlX25h
bWUoKSBjb25zdCB7IHJldHVybiBmaWxlX25hbWVfLmNfc3RyKCk7IH0KKyAgY29uc3QgY2hhciog
ZmlsZV9uYW1lKCkgY29uc3QgeworICAgIHJldHVybiBmaWxlX25hbWVfLmVtcHR5KCkgPyBOVUxM
IDogZmlsZV9uYW1lXy5jX3N0cigpOworICB9CiAKICAgLy8gR2V0cyB0aGUgbGluZSBpbiB0aGUg
c291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0b29rIHBsYWNlLAogICAvLyBvciAtMSBp
ZiBpdCdzIHVua25vd24uCkBAIC05NiwyMSArMTAwLDIyIEBAIGNsYXNzIEdURVNUX0FQSV8gVGVz
dFBhcnRSZXN1bHQgewogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgcGFydCBmYXRh
bGx5IGZhaWxlZC4KICAgYm9vbCBmYXRhbGx5X2ZhaWxlZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGVf
ID09IGtGYXRhbEZhaWx1cmU7IH0KKwogIHByaXZhdGU6CiAgIFR5cGUgdHlwZV87CiAKICAgLy8g
R2V0cyB0aGUgc3VtbWFyeSBvZiB0aGUgZmFpbHVyZSBtZXNzYWdlIGJ5IG9taXR0aW5nIHRoZSBz
dGFjawogICAvLyB0cmFjZSBpbiBpdC4KLSAgc3RhdGljIGludGVybmFsOjpTdHJpbmcgRXh0cmFj
dFN1bW1hcnkoY29uc3QgY2hhciogbWVzc2FnZSk7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFeHRy
YWN0U3VtbWFyeShjb25zdCBjaGFyKiBtZXNzYWdlKTsKIAogICAvLyBUaGUgbmFtZSBvZiB0aGUg
c291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0b29rIHBsYWNlLCBvcgotICAvLyBOVUxM
IGlmIHRoZSBzb3VyY2UgZmlsZSBpcyB1bmtub3duLgotICBpbnRlcm5hbDo6U3RyaW5nIGZpbGVf
bmFtZV87CisgIC8vICIiIGlmIHRoZSBzb3VyY2UgZmlsZSBpcyB1bmtub3duLgorICBzdGQ6OnN0
cmluZyBmaWxlX25hbWVfOwogICAvLyBUaGUgbGluZSBpbiB0aGUgc291cmNlIGZpbGUgd2hlcmUg
dGhlIHRlc3QgcGFydCB0b29rIHBsYWNlLCBvciAtMQogICAvLyBpZiB0aGUgbGluZSBudW1iZXIg
aXMgdW5rbm93bi4KICAgaW50IGxpbmVfbnVtYmVyXzsKLSAgaW50ZXJuYWw6OlN0cmluZyBzdW1t
YXJ5XzsgIC8vIFRoZSB0ZXN0IGZhaWx1cmUgc3VtbWFyeS4KLSAgaW50ZXJuYWw6OlN0cmluZyBt
ZXNzYWdlXzsgIC8vIFRoZSB0ZXN0IGZhaWx1cmUgbWVzc2FnZS4KKyAgc3RkOjpzdHJpbmcgc3Vt
bWFyeV87ICAvLyBUaGUgdGVzdCBmYWlsdXJlIHN1bW1hcnkuCisgIHN0ZDo6c3RyaW5nIG1lc3Nh
Z2VfOyAgLy8gVGhlIHRlc3QgZmFpbHVyZSBtZXNzYWdlLgogfTsKIAogLy8gUHJpbnRzIGEgVGVz
dFBhcnRSZXN1bHQgb2JqZWN0LgpAQCAtMTQwLDcgKzE0NSw3IEBAIGNsYXNzIEdURVNUX0FQSV8g
VGVzdFBhcnRSZXN1bHRBcnJheSB7CiB9OwogCiAvLyBUaGlzIGludGVyZmFjZSBrbm93cyBob3cg
dG8gcmVwb3J0IGEgdGVzdCBwYXJ0IHJlc3VsdC4KLWNsYXNzIFRlc3RQYXJ0UmVzdWx0UmVwb3J0
ZXJJbnRlcmZhY2UgeworY2xhc3MgR1RFU1RfQVBJXyBUZXN0UGFydFJlc3VsdFJlcG9ydGVySW50
ZXJmYWNlIHsKICBwdWJsaWM6CiAgIHZpcnR1YWwgflRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRl
cmZhY2UoKSB7fQogCkBAIC0xNzMsNCArMTc4LDYgQEAgY2xhc3MgR1RFU1RfQVBJXyBIYXNOZXdG
YXRhbEZhaWx1cmVIZWxwZXIKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAorR1RFU1RfRElT
QUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQorCiAjZW5kaWYgIC8vIEdURVNUX0lO
Q0xVREVfR1RFU1RfR1RFU1RfVEVTVF9QQVJUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oCmluZGV4IDFlYzhl
YjhkMzA5Mzk4ZDUyYmQ0OTYzODRjZjQ3NDgzYWUxMTUyZWUuLjI5YjA4NTk5MmRlMGVlNGYzN2I2
NzYyZmMzZTIzNjQzY2NlYWQ2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oCkBAIC0yNiw4ICsyNiw5IEBA
CiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisKKy8vIEdPT0dMRVRFU1Rf
Q00wMDAxIERPIE5PVCBERUxFVEUKIAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNU
X1RZUEVEX1RFU1RfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9UWVBFRF9U
RVNUX0hfCkBAIC04Miw2ICs4MywyNCBAQCBUWVBFRF9URVNUKEZvb1Rlc3QsIERvZXNCbGFoKSB7
CiAKIFRZUEVEX1RFU1QoRm9vVGVzdCwgSGFzUHJvcGVydHlBKSB7IC4uLiB9CiAKKy8vIFRZUEVE
X1RFU1RfQ0FTRSB0YWtlcyBhbiBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCB3aGljaCBhbGxvd3Mg
dG8gc3BlY2lmeSBhCisvLyBjbGFzcyB0aGF0IGdlbmVyYXRlcyBjdXN0b20gdGVzdCBuYW1lIHN1
ZmZpeGVzIGJhc2VkIG9uIHRoZSB0eXBlLiBUaGlzIHNob3VsZAorLy8gYmUgYSBjbGFzcyB3aGlj
aCBoYXMgYSBzdGF0aWMgdGVtcGxhdGUgZnVuY3Rpb24gR2V0TmFtZShpbnQgaW5kZXgpIHJldHVy
bmluZworLy8gYSBzdHJpbmcgZm9yIGVhY2ggdHlwZS4gVGhlIHByb3ZpZGVkIGludGVnZXIgaW5k
ZXggZXF1YWxzIHRoZSBpbmRleCBvZiB0aGUKKy8vIHR5cGUgaW4gdGhlIHByb3ZpZGVkIHR5cGUg
bGlzdC4gSW4gbWFueSBjYXNlcyB0aGUgaW5kZXggY2FuIGJlIGlnbm9yZWQuCisvLworLy8gRm9y
IGV4YW1wbGU6CisvLyAgIGNsYXNzIE15VHlwZU5hbWVzIHsKKy8vICAgIHB1YmxpYzoKKy8vICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy8vICAgICBzdGF0aWMgc3RkOjpzdHJpbmcgR2V0TmFt
ZShpbnQpIHsKKy8vICAgICAgIGlmIChzdGQ6OmlzX3NhbWU8VCwgY2hhcj4oKSkgcmV0dXJuICJj
aGFyIjsKKy8vICAgICAgIGlmIChzdGQ6OmlzX3NhbWU8VCwgaW50PigpKSByZXR1cm4gImludCI7
CisvLyAgICAgICBpZiAoc3RkOjppc19zYW1lPFQsIHVuc2lnbmVkIGludD4oKSkgcmV0dXJuICJ1
bnNpZ25lZF9pbnQiOworLy8gICAgIH0KKy8vICAgfTsKKy8vICAgVFlQRURfVEVTVF9DQVNFKEZv
b1Rlc3QsIE15VHlwZXMsIE15VHlwZU5hbWVzKTsKKwogI2VuZGlmICAvLyAwCiAKIC8vIFR5cGUt
cGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgYWJzdHJhY3QgdGVzdCBwYXR0ZXJucyBwYXJhbWV0ZXJp
emVkCkBAIC0xNDMsMTEgKzE2MiwxNiBAQCBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChN
eSwgRm9vVGVzdCwgTXlUeXBlcyk7CiAvLyBJZiB0aGUgdHlwZSBsaXN0IGNvbnRhaW5zIG9ubHkg
b25lIHR5cGUsIHlvdSBjYW4gd3JpdGUgdGhhdCB0eXBlCiAvLyBkaXJlY3RseSB3aXRob3V0IFR5
cGVzPC4uLj46CiAvLyAgIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0
LCBpbnQpOworLy8KKy8vIFNpbWlsYXIgdG8gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IG9mIFRZUEVE
X1RFU1RfQ0FTRSBhYm92ZSwKKy8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIHRha2VzIGFuIG9w
dGlvbmFsIGZvdXJ0aCBhcmd1bWVudCB3aGljaCBhbGxvd3MgdG8KKy8vIGdlbmVyYXRlIGN1c3Rv
bSBuYW1lcy4KKy8vICAgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3Qs
IE15VHlwZXMsIE15VHlwZU5hbWVzKTsKIAogI2VuZGlmICAvLyAwCiAKLSNpbmNsdWRlIDxndGVz
dC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
dHlwZS11dGlsLmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oIgogCiAvLyBJbXBsZW1lbnRz
IHR5cGVkIHRlc3RzLgogCkBAIC0xNTcsMzMgKzE4MSw0NyBAQCBJTlNUQU5USUFURV9UWVBFRF9U
RVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcyk7CiAvLwogLy8gRXhwYW5kcyB0byB0aGUg
bmFtZSBvZiB0aGUgdHlwZWRlZiBmb3IgdGhlIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUKIC8vIGdp
dmVuIHRlc3QgY2FzZS4KLSNkZWZpbmUgR1RFU1RfVFlQRV9QQVJBTVNfKFRlc3RDYXNlTmFtZSkg
Z3Rlc3RfdHlwZV9wYXJhbXNfIyNUZXN0Q2FzZU5hbWUjI18KKyMgZGVmaW5lIEdURVNUX1RZUEVf
UEFSQU1TXyhUZXN0Q2FzZU5hbWUpIGd0ZXN0X3R5cGVfcGFyYW1zXyMjVGVzdENhc2VOYW1lIyNf
CisKKy8vIEV4cGFuZHMgdG8gdGhlIG5hbWUgb2YgdGhlIHR5cGVkZWYgZm9yIHRoZSBOYW1lR2Vu
ZXJhdG9yLCByZXNwb25zaWJsZSBmb3IKKy8vIGNyZWF0aW5nIHRoZSBzdWZmaXhlcyBvZiB0aGUg
bmFtZS4KKyNkZWZpbmUgR1RFU1RfTkFNRV9HRU5FUkFUT1JfKFRlc3RDYXNlTmFtZSkgXAorICBn
dGVzdF90eXBlX3BhcmFtc18jI1Rlc3RDYXNlTmFtZSMjX05hbWVHZW5lcmF0b3IKIAogLy8gVGhl
ICdUeXBlcycgdGVtcGxhdGUgYXJndW1lbnQgYmVsb3cgbXVzdCBoYXZlIHNwYWNlcyBhcm91bmQg
aXQKIC8vIHNpbmNlIHNvbWUgY29tcGlsZXJzIG1heSBjaG9rZSBvbiAnPj4nIHdoZW4gcGFzc2lu
ZyBhIHRlbXBsYXRlCiAvLyBpbnN0YW5jZSAoZS5nLiBUeXBlczxpbnQ+KQotI2RlZmluZSBUWVBF
RF9URVNUX0NBU0UoQ2FzZU5hbWUsIFR5cGVzKSBcCi0gIHR5cGVkZWYgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6VHlwZUxpc3Q8IFR5cGVzID46OnR5cGUgXAotICAgICAgR1RFU1RfVFlQRV9QQVJBTVNf
KENhc2VOYW1lKQotCi0jZGVmaW5lIFRZUEVEX1RFU1QoQ2FzZU5hbWUsIFRlc3ROYW1lKSBcCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiBcCi0gIGNsYXNzIEdURVNUX1RF
U1RfQ0xBU1NfTkFNRV8oQ2FzZU5hbWUsIFRlc3ROYW1lKSBcCi0gICAgICA6IHB1YmxpYyBDYXNl
TmFtZTxndGVzdF9UeXBlUGFyYW1fPiB7IFwKLSAgIHByaXZhdGU6IFwKLSAgICB0eXBlZGVmIENh
c2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IFRlc3RGaXh0dXJlOyBcCi0gICAgdHlwZWRlZiBndGVz
dF9UeXBlUGFyYW1fIFR5cGVQYXJhbTsgXAotICAgIHZpcnR1YWwgdm9pZCBUZXN0Qm9keSgpOyBc
Ci0gIH07IFwKLSAgYm9vbCBndGVzdF8jI0Nhc2VOYW1lIyNfIyNUZXN0TmFtZSMjX3JlZ2lzdGVy
ZWRfID0gXAotICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZVBhcmFtZXRlcml6ZWRUZXN0
PCBcCi0gICAgICAgICAgQ2FzZU5hbWUsIFwKLSAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFs
OjpUZW1wbGF0ZVNlbDwgXAotICAgICAgICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKENh
c2VOYW1lLCBUZXN0TmFtZSk+LCBcCi0gICAgICAgICAgR1RFU1RfVFlQRV9QQVJBTVNfKENhc2VO
YW1lKT46OlJlZ2lzdGVyKFwKLSAgICAgICAgICAgICAgIiIsICNDYXNlTmFtZSwgI1Rlc3ROYW1l
LCAwKTsgXAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgZ3Rlc3RfVHlwZVBhcmFtXz4gXAotICB2b2lk
IEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8oQ2FzZU5hbWUsIFRlc3ROYW1lKTxndGVzdF9UeXBlUGFy
YW1fPjo6VGVzdEJvZHkoKQorIyBkZWZpbmUgVFlQRURfVEVTVF9DQVNFKENhc2VOYW1lLCBUeXBl
cywgLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB0eXBlZGVmIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OlR5cGVMaXN0PCBUeXBlcyA+Ojp0eXBlIEdURVNUX1RZUEVfUEFSQU1TXygg
XAorICAgICAgQ2FzZU5hbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICB0eXBlZGVmIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok5h
bWVHZW5lcmF0b3JTZWxlY3RvcjxfX1ZBX0FSR1NfXz46OnR5cGUgICAgXAorICAgICAgR1RFU1Rf
TkFNRV9HRU5FUkFUT1JfKENhc2VOYW1lKQorCisjIGRlZmluZSBUWVBFRF9URVNUKENhc2VOYW1l
LCBUZXN0TmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgIGNsYXNzIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8oQ2FzZU5h
bWUsIFRlc3ROYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICA6IHB1Ymxp
YyBDYXNlTmFtZTxndGVzdF9UeXBlUGFyYW1fPiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICBwcml2YXRlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdHlwZWRlZiBDYXNlTmFtZTxn
dGVzdF9UeXBlUGFyYW1fPiBUZXN0Rml4dHVyZTsgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgdHlwZWRlZiBndGVzdF9UeXBlUGFyYW1fIFR5cGVQYXJhbTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdmlydHVhbCB2b2lkIFRlc3RCb2R5KCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH07ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgIGJvb2wgZ3Rlc3RfIyNDYXNlTmFtZSMjXyMjVGVzdE5hbWUjI19y
ZWdpc3RlcmVkXyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9ICBcCisgICAgICA6OnRlc3Rpbmc6
OmludGVybmFsOjpUeXBlUGFyYW1ldGVyaXplZFRlc3Q8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgQ2FzZU5hbWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6VGVtcGxhdGVTZWw8R1RFU1RfVEVTVF9DTEFTU19OQU1FXyhDYXNlTmFtZSwgICBcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUZXN0TmFtZSk+LCBcCisgICAgICAgICAgR1RFU1RfVFlQRV9QQVJBTVNfKCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICAgIENhc2VOYW1lKT46OlJlZ2lzdGVyKCIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbiggICAgICAgICBcCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pLCAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNDYXNlTmFtZSwgI1Rlc3RO
YW1lLCAwLCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkdlbmVyYXRlTmFtZXM8ICAgICAgICBcCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9OQU1FX0dFTkVSQVRPUl8o
Q2FzZU5hbWUpLCAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHVEVTVF9UWVBFX1BBUkFNU18oQ2FzZU5hbWUpPigpKTsgICAgICBcCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgIHZvaWQgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyhDYXNlTmFtZSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUZXN0TmFtZSk8Z3Rlc3RfVHlwZVBhcmFtXz46OlRlc3RCb2R5KCkKIAogI2VuZGlm
ICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAogCkBAIC0xOTYsMzEgKzIzNCwzMSBAQCBJTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcyk7CiAvLyBFeHBhbmRz
IHRvIHRoZSBuYW1lc3BhY2UgbmFtZSB0aGF0IHRoZSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMg
Zm9yCiAvLyB0aGUgZ2l2ZW4gdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBhcmUgZGVmaW5l
ZCBpbi4gIFRoZSBleGFjdAogLy8gbmFtZSBvZiB0aGUgbmFtZXNwYWNlIGlzIHN1YmplY3QgdG8g
Y2hhbmdlIHdpdGhvdXQgbm90aWNlLgotI2RlZmluZSBHVEVTVF9DQVNFX05BTUVTUEFDRV8oVGVz
dENhc2VOYW1lKSBcCisjIGRlZmluZSBHVEVTVF9DQVNFX05BTUVTUEFDRV8oVGVzdENhc2VOYW1l
KSBcCiAgIGd0ZXN0X2Nhc2VfIyNUZXN0Q2FzZU5hbWUjI18KIAogLy8gSU5URVJOQUwgSU1QTEVN
RU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KIC8vCiAvLyBFeHBhbmRzIHRvIHRo
ZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSB1c2VkIHRvIHJlbWVtYmVyIHRoZSBuYW1lcyBvZgogLy8g
dGhlIGRlZmluZWQgdGVzdHMgaW4gdGhlIGdpdmVuIHRlc3QgY2FzZS4KLSNkZWZpbmUgR1RFU1Rf
VFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKFRlc3RDYXNlTmFtZSkgXAorIyBkZWZpbmUgR1RFU1Rf
VFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKFRlc3RDYXNlTmFtZSkgXAogICBndGVzdF90eXBlZF90
ZXN0X2Nhc2VfcF9zdGF0ZV8jI1Rlc3RDYXNlTmFtZSMjXwogCiAvLyBJTlRFUk5BTCBJTVBMRU1F
TlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFIERJUkVDVExZLgogLy8KIC8vIEV4cGFu
ZHMgdG8gdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIHVzZWQgdG8gcmVtZW1iZXIgdGhlIG5hbWVz
IG9mCiAvLyB0aGUgcmVnaXN0ZXJlZCB0ZXN0cyBpbiB0aGUgZ2l2ZW4gdGVzdCBjYXNlLgotI2Rl
ZmluZSBHVEVTVF9SRUdJU1RFUkVEX1RFU1RfTkFNRVNfKFRlc3RDYXNlTmFtZSkgXAorIyBkZWZp
bmUgR1RFU1RfUkVHSVNURVJFRF9URVNUX05BTUVTXyhUZXN0Q2FzZU5hbWUpIFwKICAgZ3Rlc3Rf
cmVnaXN0ZXJlZF90ZXN0X25hbWVzXyMjVGVzdENhc2VOYW1lIyNfCiAKIC8vIFRoZSB2YXJpYWJs
ZXMgZGVmaW5lZCBpbiB0aGUgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgbWFjcm9zIGFyZQogLy8g
c3RhdGljIGFzIHR5cGljYWxseSB0aGVzZSBtYWNyb3MgYXJlIHVzZWQgaW4gYSAuaCBmaWxlIHRo
YXQgY2FuIGJlCiAvLyAjaW5jbHVkZWQgaW4gbXVsdGlwbGUgdHJhbnNsYXRpb24gdW5pdHMgbGlu
a2VkIHRvZ2V0aGVyLgotI2RlZmluZSBUWVBFRF9URVNUX0NBU0VfUChDYXNlTmFtZSkgXAorIyBk
ZWZpbmUgVFlQRURfVEVTVF9DQVNFX1AoQ2FzZU5hbWUpIFwKICAgc3RhdGljIDo6dGVzdGluZzo6
aW50ZXJuYWw6OlR5cGVkVGVzdENhc2VQU3RhdGUgXAogICAgICAgR1RFU1RfVFlQRURfVEVTVF9D
QVNFX1BfU1RBVEVfKENhc2VOYW1lKQogCi0jZGVmaW5lIFRZUEVEX1RFU1RfUChDYXNlTmFtZSwg
VGVzdE5hbWUpIFwKKyMgZGVmaW5lIFRZUEVEX1RFU1RfUChDYXNlTmFtZSwgVGVzdE5hbWUpIFwK
ICAgbmFtZXNwYWNlIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhDYXNlTmFtZSkgeyBcCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiBcCiAgIGNsYXNzIFRlc3ROYW1lIDogcHVi
bGljIENhc2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IHsgXApAQCAtMjI5LDMwICsyNjcsMzggQEAg
SU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMpOwogICAg
IHR5cGVkZWYgZ3Rlc3RfVHlwZVBhcmFtXyBUeXBlUGFyYW07IFwKICAgICB2aXJ0dWFsIHZvaWQg
VGVzdEJvZHkoKTsgXAogICB9OyBcCi0gIHN0YXRpYyBib29sIGd0ZXN0XyMjVGVzdE5hbWUjI19k
ZWZpbmVkXyA9IFwKKyAgc3RhdGljIGJvb2wgZ3Rlc3RfIyNUZXN0TmFtZSMjX2RlZmluZWRfIEdU
RVNUX0FUVFJJQlVURV9VTlVTRURfID0gXAogICAgICAgR1RFU1RfVFlQRURfVEVTVF9DQVNFX1Bf
U1RBVEVfKENhc2VOYW1lKS5BZGRUZXN0TmFtZShcCiAgICAgICAgICAgX19GSUxFX18sIF9fTElO
RV9fLCAjQ2FzZU5hbWUsICNUZXN0TmFtZSk7IFwKICAgfSBcCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBndGVzdF9UeXBlUGFyYW1fPiBcCiAgIHZvaWQgR1RFU1RfQ0FTRV9OQU1FU1BBQ0VfKENhc2VO
YW1lKTo6VGVzdE5hbWU8Z3Rlc3RfVHlwZVBhcmFtXz46OlRlc3RCb2R5KCkKIAotI2RlZmluZSBS
RUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChDYXNlTmFtZSwgLi4uKSBcCisjIGRlZmluZSBSRUdJ
U1RFUl9UWVBFRF9URVNUX0NBU0VfUChDYXNlTmFtZSwgLi4uKSBcCiAgIG5hbWVzcGFjZSBHVEVT
VF9DQVNFX05BTUVTUEFDRV8oQ2FzZU5hbWUpIHsgXAogICB0eXBlZGVmIDo6dGVzdGluZzo6aW50
ZXJuYWw6OlRlbXBsYXRlczxfX1ZBX0FSR1NfXz46OnR5cGUgZ3Rlc3RfQWxsVGVzdHNfOyBcCiAg
IH0gXAotICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgR1RFU1RfUkVHSVNURVJFRF9URVNUX05B
TUVTXyhDYXNlTmFtZSkgPSBcCi0gICAgICBHVEVTVF9UWVBFRF9URVNUX0NBU0VfUF9TVEFURV8o
Q2FzZU5hbWUpLlZlcmlmeVJlZ2lzdGVyZWRUZXN0TmFtZXMoXAotICAgICAgICAgIF9fRklMRV9f
LCBfX0xJTkVfXywgI19fVkFfQVJHU19fKQorICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgR1RF
U1RfUkVHSVNURVJFRF9URVNUX05BTUVTXyhDYXNlTmFtZSkgXAorICAgICAgR1RFU1RfQVRUUklC
VVRFX1VOVVNFRF8gPSBcCisgICAgICAgICAgR1RFU1RfVFlQRURfVEVTVF9DQVNFX1BfU1RBVEVf
KENhc2VOYW1lKS5WZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVzKCBcCisgICAgICAgICAgICAgIF9f
RklMRV9fLCBfX0xJTkVfXywgI19fVkFfQVJHU19fKQogCiAvLyBUaGUgJ1R5cGVzJyB0ZW1wbGF0
ZSBhcmd1bWVudCBiZWxvdyBtdXN0IGhhdmUgc3BhY2VzIGFyb3VuZCBpdAogLy8gc2luY2Ugc29t
ZSBjb21waWxlcnMgbWF5IGNob2tlIG9uICc+Picgd2hlbiBwYXNzaW5nIGEgdGVtcGxhdGUKIC8v
IGluc3RhbmNlIChlLmcuIFR5cGVzPGludD4pCi0jZGVmaW5lIElOU1RBTlRJQVRFX1RZUEVEX1RF
U1RfQ0FTRV9QKFByZWZpeCwgQ2FzZU5hbWUsIFR5cGVzKSBcCi0gIGJvb2wgZ3Rlc3RfIyNQcmVm
aXgjI18jI0Nhc2VOYW1lID0gXAotICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZVBhcmFt
ZXRlcml6ZWRUZXN0Q2FzZTxDYXNlTmFtZSwgXAotICAgICAgICAgIEdURVNUX0NBU0VfTkFNRVNQ
QUNFXyhDYXNlTmFtZSk6Omd0ZXN0X0FsbFRlc3RzXywgXAotICAgICAgICAgIDo6dGVzdGluZzo6
aW50ZXJuYWw6OlR5cGVMaXN0PCBUeXBlcyA+Ojp0eXBlPjo6UmVnaXN0ZXIoXAotICAgICAgICAg
ICAgICAjUHJlZml4LCAjQ2FzZU5hbWUsIEdURVNUX1JFR0lTVEVSRURfVEVTVF9OQU1FU18oQ2Fz
ZU5hbWUpKQorIyBkZWZpbmUgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoUHJlZml4LCBD
YXNlTmFtZSwgVHlwZXMsIC4uLikgICAgICBcCisgIGJvb2wgZ3Rlc3RfIyNQcmVmaXgjI18jI0Nh
c2VOYW1lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gICAgICAgICAgICAgIFwKKyAgICAgIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2U8ICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgIENhc2VOYW1lLCBHVEVTVF9DQVNFX05BTUVTUEFDRV8oQ2Fz
ZU5hbWUpOjpndGVzdF9BbGxUZXN0c18sICAgICBcCisgICAgICAgICAgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6VHlwZUxpc3Q8IFR5cGVzID46OnR5cGU+OjogICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICBSZWdpc3RlcigjUHJlZml4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNv
ZGVMb2NhdGlvbihfX0ZJTEVfXywgX19MSU5FX18pLCBcCisgICAgICAgICAgICAgICAgICAgJkdU
RVNUX1RZUEVEX1RFU1RfQ0FTRV9QX1NUQVRFXyhDYXNlTmFtZSksICNDYXNlTmFtZSwgIFwKKyAg
ICAgICAgICAgICAgICAgICBHVEVTVF9SRUdJU1RFUkVEX1RFU1RfTkFNRVNfKENhc2VOYW1lKSwg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6
OkdlbmVyYXRlTmFtZXM8ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAg
ICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok5hbWVHZW5lcmF0b3JTZWxlY3RvcjwgICAgICAgIFwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fVkFfQVJHU19fPjo6dHlwZSwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpUeXBlTGlzdDwgVHlwZXMgPjo6dHlwZT4oKSkKIAogI2VuZGlmICAvLyBHVEVTVF9I
QVNfVFlQRURfVEVTVF9QCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvZ3Rlc3QuaAppbmRleCA5MjFmYWQxMWZjYzhmMjRjMGRkMjIzOTRhNDg2N2FiMjRiNmVhMGMz
Li4yYmU4YjExMmM2MzdiMTBkYWNmZDA2OWZiOTcxZmU2ODY2YThkODc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC5oCkBAIC0yNiwxMCArMjYsOSBA
QAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwot
Ly8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRoZSBHb29n
bGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIFRoZSBHb29nbGUgQysr
IFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAvLyBUaGlz
IGhlYWRlciBmaWxlIGRlZmluZXMgdGhlIHB1YmxpYyBBUEkgZm9yIEdvb2dsZSBUZXN0LiAgSXQg
c2hvdWxkIGJlCiAvLyBpbmNsdWRlZCBieSBhbnkgdGVzdCBwcm9ncmFtIHRoYXQgdXNlcyBHb29n
bGUgVGVzdC4KQEAgLTQ4LDM4ICs0Nyw1NCBAQAogLy8gcmVnaXN0cmF0aW9uIGZyb20gQmFydGhl
bGVteSBEYWdlbmFpcycgKGJhcnRoZWxlbXlAcHJvbG9naXF1ZS5jb20pCiAvLyBlYXN5VW5pdCBm
cmFtZXdvcmsuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKKwogI2lmbmRl
ZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RF
U1RfR1RFU1RfSF8KIAogI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxvc3RyZWFtPgogI2lu
Y2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFs
Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+Ci0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LW1lc3NhZ2Uu
aD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1wYXJhbS10ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3RfcHJvZC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oPgotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9n
dGVzdC1pbnRlcm5hbC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5o
IgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9n
dGVzdC1tZXNzYWdlLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LXByaW50ZXJzLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3RfcHJv
ZC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oIgorI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LXR5cGVkLXRlc3QuaCIKKworR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8o
NDI1MSBcCisvKiBjbGFzcyBBIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2Vk
IGJ5IGNsaWVudHMgb2YgY2xhc3MgQiAqLykKIAogLy8gRGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9y
bSwgZGlmZmVyZW50IHN0cmluZyBjbGFzc2VzIGFyZSBhdmFpbGFibGUuCiAvLyBPbiBMaW51eCwg
aW4gYWRkaXRpb24gdG8gOjpzdGQ6OnN0cmluZywgR29vZ2xlIGFsc28gbWFrZXMgdXNlIG9mCiAv
LyBjbGFzcyA6OnN0cmluZywgd2hpY2ggaGFzIHRoZSBzYW1lIGludGVyZmFjZSBhcyA6OnN0ZDo6
c3RyaW5nLCBidXQKIC8vIGhhcyBhIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbi4KIC8vCi0vLyBU
aGUgdXNlciBjYW4gZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HIHRvIDEgdG8gaW5kaWNh
dGUgdGhhdAorLy8gWW91IGNhbiBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgdG8gMSB0
byBpbmRpY2F0ZSB0aGF0CiAvLyA6OnN0cmluZyBpcyBhdmFpbGFibGUgQU5EIGlzIGEgZGlzdGlu
Y3QgdHlwZSB0byA6OnN0ZDo6c3RyaW5nLCBvcgogLy8gZGVmaW5lIGl0IHRvIDAgdG8gaW5kaWNh
dGUgb3RoZXJ3aXNlLgogLy8KLS8vIElmIHRoZSB1c2VyJ3MgOjpzdGQ6OnN0cmluZyBhbmQgOjpz
dHJpbmcgYXJlIHRoZSBzYW1lIGNsYXNzIGR1ZSB0bwotLy8gYWxpYXNpbmcsIGhlIHNob3VsZCBk
ZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgdG8gMC4KKy8vIElmIDo6c3RkOjpzdHJpbmcg
YW5kIDo6c3RyaW5nIGFyZSB0aGUgc2FtZSBjbGFzcyBvbiB5b3VyIHBsYXRmb3JtCisvLyBkdWUg
dG8gYWxpYXNpbmcsIHlvdSBzaG91bGQgZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HIHRv
IDAuCiAvLwotLy8gSWYgdGhlIHVzZXIgZG9lc24ndCBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9T
VFJJTkcsIGl0IGlzIGRlZmluZWQKKy8vIElmIHlvdSBkbyBub3QgZGVmaW5lIEdURVNUX0hBU19H
TE9CQUxfU1RSSU5HLCBpdCBpcyBkZWZpbmVkCiAvLyBoZXVyaXN0aWNhbGx5LgogCiBuYW1lc3Bh
Y2UgdGVzdGluZyB7CiAKKy8vIFNpbGVuY2UgQzQxMDAgKHVucmVmZXJlbmNlZCBmb3JtYWwgcGFy
YW1ldGVyKSBhbmQgNDgwNQorLy8gdW5zYWZlIG1peCBvZiB0eXBlICdjb25zdCBpbnQnIGFuZCB0
eXBlICdjb25zdCBib29sJworI2lmZGVmIF9NU0NfVkVSCisjIHByYWdtYSB3YXJuaW5nKHB1c2gp
CisjIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDgwNSkKKyMgcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTo0MTAwKQorI2VuZGlmCisKKwogLy8gRGVjbGFyZXMgdGhlIGZsYWdzLgogCiAvLyBUaGlzIGZs
YWcgdGVtcG9yYXJ5IGVuYWJsZXMgdGhlIGRpc2FibGVkIHRlc3RzLgpAQCAtMTEzLDYgKzEyOCw5
IEBAIEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhvdXRwdXQpOwogLy8gdGVzdC4KIEdURVNUX0RFQ0xB
UkVfYm9vbF8ocHJpbnRfdGltZSk7CiAKKy8vIFRoaXMgZmxhZ3MgY29udHJvbCB3aGV0aGVyIEdv
b2dsZSBUZXN0IHByaW50cyBVVEY4IGNoYXJhY3RlcnMgYXMgdGV4dC4KK0dURVNUX0RFQ0xBUkVf
Ym9vbF8ocHJpbnRfdXRmOCk7CisKIC8vIFRoaXMgZmxhZyBzcGVjaWZpZXMgdGhlIHJhbmRvbSBu
dW1iZXIgc2VlZC4KIEdURVNUX0RFQ0xBUkVfaW50MzJfKHJhbmRvbV9zZWVkKTsKIApAQCAtMTMz
LDkgKzE1MSwxNCBAQCBHVEVTVF9ERUNMQVJFX2ludDMyXyhzdGFja190cmFjZV9kZXB0aCk7CiAK
IC8vIFdoZW4gdGhpcyBmbGFnIGlzIHNwZWNpZmllZCwgYSBmYWlsZWQgYXNzZXJ0aW9uIHdpbGwg
dGhyb3cgYW4KIC8vIGV4Y2VwdGlvbiBpZiBleGNlcHRpb25zIGFyZSBlbmFibGVkLCBvciBleGl0
IHRoZSBwcm9ncmFtIHdpdGggYQotLy8gbm9uLXplcm8gY29kZSBvdGhlcndpc2UuCisvLyBub24t
emVybyBjb2RlIG90aGVyd2lzZS4gRm9yIHVzZSB3aXRoIGFuIGV4dGVybmFsIHRlc3QgZnJhbWV3
b3JrLgogR1RFU1RfREVDTEFSRV9ib29sXyh0aHJvd19vbl9mYWlsdXJlKTsKIAorLy8gV2hlbiB0
aGlzIGZsYWcgaXMgc2V0IHdpdGggYSAiaG9zdDpwb3J0IiBzdHJpbmcsIG9uIHN1cHBvcnRlZAor
Ly8gcGxhdGZvcm1zIHRlc3QgcmVzdWx0cyBhcmUgc3RyZWFtZWQgdG8gdGhlIHNwZWNpZmllZCBw
b3J0IG9uCisvLyB0aGUgc3BlY2lmaWVkIGhvc3QgbWFjaGluZS4KK0dURVNUX0RFQ0xBUkVfc3Ry
aW5nXyhzdHJlYW1fcmVzdWx0X3RvKTsKKwogLy8gVGhlIHVwcGVyIGxpbWl0IGZvciB2YWxpZCBz
dGFjayB0cmFjZSBkZXB0aHMuCiBjb25zdCBpbnQga01heFN0YWNrVHJhY2VEZXB0aCA9IDEwMDsK
IApAQCAtMTQ3LDMxICsxNzAsMjcgQEAgY2xhc3MgRXhlY0RlYXRoVGVzdDsKIGNsYXNzIE5vRXhl
Y0RlYXRoVGVzdDsKIGNsYXNzIEZpbmFsU3VjY2Vzc0NoZWNrZXI7CiBjbGFzcyBHVGVzdEZsYWdT
YXZlcjsKLWNsYXNzIFRlc3RJbmZvSW1wbDsKK2NsYXNzIFN0cmVhbWluZ0xpc3RlbmVyVGVzdDsK
IGNsYXNzIFRlc3RSZXN1bHRBY2Nlc3NvcjsKIGNsYXNzIFRlc3RFdmVudExpc3RlbmVyc0FjY2Vz
c29yOwogY2xhc3MgVGVzdEV2ZW50UmVwZWF0ZXI7CitjbGFzcyBVbml0VGVzdFJlY29yZFByb3Bl
cnR5VGVzdEhlbHBlcjsKIGNsYXNzIFdpbmRvd3NEZWF0aFRlc3Q7CitjbGFzcyBGdWNoc2lhRGVh
dGhUZXN0OwogY2xhc3MgVW5pdFRlc3RJbXBsKiBHZXRVbml0VGVzdEltcGwoKTsKIHZvaWQgUmVw
b3J0RmFpbHVyZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKLWNsYXNzIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjsKLWNsYXNzIFhtbFVu
aXRUZXN0UmVzdWx0UHJpbnRlcjsKLQotLy8gQ29udmVydHMgYSBzdHJlYW1hYmxlIHZhbHVlIHRv
IGEgU3RyaW5nLiAgQSBOVUxMIHBvaW50ZXIgaXMKLS8vIGNvbnZlcnRlZCB0byAiKG51bGwpIi4g
IFdoZW4gdGhlIGlucHV0IHZhbHVlIGlzIGEgOjpzdHJpbmcsCi0vLyA6OnN0ZDo6c3RyaW5nLCA6
OndzdHJpbmcsIG9yIDo6c3RkOjp3c3RyaW5nIG9iamVjdCwgZWFjaCBOVUwKLS8vIGNoYXJhY3Rl
ciBpbiBpdCBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgotLy8gRGVjbGFyZWQgaW4gZ3Rlc3QtaW50
ZXJuYWwuaCBidXQgZGVmaW5lZCBoZXJlLCBzbyB0aGF0IGl0IGhhcyBhY2Nlc3MKLS8vIHRvIHRo
ZSBkZWZpbml0aW9uIG9mIHRoZSBNZXNzYWdlIGNsYXNzLCByZXF1aXJlZCBieSB0aGUgQVJNCi0v
LyBjb21waWxlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotU3RyaW5nIFN0cmVhbWFibGVUb1N0
cmluZyhjb25zdCBUJiBzdHJlYW1hYmxlKSB7Ci0gIHJldHVybiAoTWVzc2FnZSgpIDw8IHN0cmVh
bWFibGUpLkdldFN0cmluZygpOwotfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpOwogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJu
YWwKIAorLy8gVGhlIGZyaWVuZCByZWxhdGlvbnNoaXAgb2Ygc29tZSBvZiB0aGVzZSBjbGFzc2Vz
IGlzIGN5Y2xpYy4KKy8vIElmIHdlIGRvbid0IGZvcndhcmQgZGVjbGFyZSB0aGVtIHRoZSBjb21w
aWxlciBtaWdodCBjb25mdXNlIHRoZSBjbGFzc2VzCisvLyBpbiBmcmllbmRzaGlwIGNsYXVzZXMg
d2l0aCBzYW1lIG5hbWVkIGNsYXNzZXMgb24gdGhlIHNjb3BlLgorY2xhc3MgVGVzdDsKK2NsYXNz
IFRlc3RDYXNlOworY2xhc3MgVGVzdEluZm87CitjbGFzcyBVbml0VGVzdDsKKwogLy8gQSBjbGFz
cyBmb3IgaW5kaWNhdGluZyB3aGV0aGVyIGFuIGFzc2VydGlvbiB3YXMgc3VjY2Vzc2Z1bC4gIFdo
ZW4KIC8vIHRoZSBhc3NlcnRpb24gd2Fzbid0IHN1Y2Nlc3NmdWwsIHRoZSBBc3NlcnRpb25SZXN1
bHQgb2JqZWN0CiAvLyByZW1lbWJlcnMgYSBub24tZW1wdHkgbWVzc2FnZSB0aGF0IGRlc2NyaWJl
cyBob3cgaXQgZmFpbGVkLgpAQCAtMjU2LDggKzI3NSwzNSBAQCBjbGFzcyBHVEVTVF9BUElfIEFz
c2VydGlvblJlc3VsdCB7CiAgIC8vIENvcHkgY29uc3RydWN0b3IuCiAgIC8vIFVzZWQgaW4gRVhQ
RUNUX1RSVUUvRkFMU0UoYXNzZXJ0aW9uX3Jlc3VsdCkuCiAgIEFzc2VydGlvblJlc3VsdChjb25z
dCBBc3NlcnRpb25SZXN1bHQmIG90aGVyKTsKKworI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9N
U0NfVkVSIDwgMTkxMAorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0ODAwIC8q
IGZvcmNpbmcgdmFsdWUgdG8gYm9vbCAqLykKKyNlbmRpZgorCiAgIC8vIFVzZWQgaW4gdGhlIEVY
UEVDVF9UUlVFL0ZBTFNFKGJvb2xfZXhwcmVzc2lvbikuCi0gIGV4cGxpY2l0IEFzc2VydGlvblJl
c3VsdChib29sIHN1Y2Nlc3MpIDogc3VjY2Vzc18oc3VjY2Vzcykge30KKyAgLy8KKyAgLy8gVCBt
dXN0IGJlIGNvbnRleHR1YWxseSBjb252ZXJ0aWJsZSB0byBib29sLgorICAvLworICAvLyBUaGUg
c2Vjb25kIHBhcmFtZXRlciBwcmV2ZW50cyB0aGlzIG92ZXJsb2FkIGZyb20gYmVpbmcgY29uc2lk
ZXJlZCBpZgorICAvLyB0aGUgYXJndW1lbnQgaXMgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0byBB
c3NlcnRpb25SZXN1bHQuIEluIHRoYXQgY2FzZQorICAvLyB3ZSB3YW50IEFzc2VydGlvblJlc3Vs
dCdzIGNvcHkgY29uc3RydWN0b3IgdG8gYmUgdXNlZC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CisgIGV4cGxpY2l0IEFzc2VydGlvblJlc3VsdCgKKyAgICAgIGNvbnN0IFQmIHN1Y2Nlc3MsCisg
ICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RW5hYmxlSWY8CisgICAgICAgICAgIWludGVybmFsOjpJ
bXBsaWNpdGx5Q29udmVydGlibGU8VCwgQXNzZXJ0aW9uUmVzdWx0Pjo6dmFsdWU+Ojp0eXBlKgor
ICAgICAgICAgIC8qZW5hYmxlciovID0gTlVMTCkKKyAgICAgIDogc3VjY2Vzc18oc3VjY2Vzcykg
e30KKworI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSIDwgMTkxMAorICBHVEVTVF9E
SVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKyNlbmRpZgorCisgIC8vIEFzc2lnbm1lbnQgb3Bl
cmF0b3IuCisgIEFzc2VydGlvblJlc3VsdCYgb3BlcmF0b3I9KEFzc2VydGlvblJlc3VsdCBvdGhl
cikgeworICAgIHN3YXAob3RoZXIpOworICAgIHJldHVybiAqdGhpczsKKyAgfQogCiAgIC8vIFJl
dHVybnMgdHJ1ZSBpZmYgdGhlIGFzc2VydGlvbiBzdWNjZWVkZWQuCiAgIG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiBzdWNjZXNzXzsgfSAgLy8gTk9MSU5UCkBAIC0yNzAsMjAgKzMxNiwz
NiBAQCBjbGFzcyBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCB7CiAgIC8vIGFzc2VydGlvbidz
IGV4cGVjdGF0aW9uKS4gV2hlbiBub3RoaW5nIGhhcyBiZWVuIHN0cmVhbWVkIGludG8gdGhlCiAg
IC8vIG9iamVjdCwgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcuCiAgIGNvbnN0IGNoYXIqIG1lc3Nh
Z2UoKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1lc3NhZ2VfLmdldCgpICE9IE5VTEwgJiYgbWVzc2Fn
ZV8tPmNfc3RyKCkgIT0gTlVMTCA/Ci0gICAgICAgICAgIG1lc3NhZ2VfLT5jX3N0cigpIDogIiI7
CisgICAgcmV0dXJuIG1lc3NhZ2VfLmdldCgpICE9IE5VTEwgPyAgbWVzc2FnZV8tPmNfc3RyKCkg
OiAiIjsKICAgfQotICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBSZW1vdmUgdGhpcyBhZnRl
ciBtYWtpbmcgc3VyZSBubyBjbGllbnRzIHVzZSBpdC4KKyAgLy8gRklYTUU6IFJlbW92ZSB0aGlz
IGFmdGVyIG1ha2luZyBzdXJlIG5vIGNsaWVudHMgdXNlIGl0LgogICAvLyBEZXByZWNhdGVkOyBw
bGVhc2UgdXNlIG1lc3NhZ2UoKSBpbnN0ZWFkLgogICBjb25zdCBjaGFyKiBmYWlsdXJlX21lc3Nh
Z2UoKSBjb25zdCB7IHJldHVybiBtZXNzYWdlKCk7IH0KIAogICAvLyBTdHJlYW1zIGEgY3VzdG9t
IGZhaWx1cmUgbWVzc2FnZSBpbnRvIHRoaXMgb2JqZWN0LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gQXNzZXJ0aW9uUmVzdWx0JiBvcGVyYXRvcjw8KGNvbnN0IFQmIHZhbHVlKTsKKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IEFzc2VydGlvblJlc3VsdCYgb3BlcmF0b3I8PChjb25zdCBUJiB2YWx1
ZSkgeworICAgIEFwcGVuZE1lc3NhZ2UoTWVzc2FnZSgpIDw8IHZhbHVlKTsKKyAgICByZXR1cm4g
KnRoaXM7CisgIH0KKworICAvLyBBbGxvd3Mgc3RyZWFtaW5nIGJhc2ljIG91dHB1dCBtYW5pcHVs
YXRvcnMgc3VjaCBhcyBlbmRsIG9yIGZsdXNoIGludG8KKyAgLy8gdGhpcyBvYmplY3QuCisgIEFz
c2VydGlvblJlc3VsdCYgb3BlcmF0b3I8PCgKKyAgICAgIDo6c3RkOjpvc3RyZWFtJiAoKmJhc2lj
X21hbmlwdWxhdG9yKSg6OnN0ZDo6b3N0cmVhbSYgc3RyZWFtKSkgeworICAgIEFwcGVuZE1lc3Nh
Z2UoTWVzc2FnZSgpIDw8IGJhc2ljX21hbmlwdWxhdG9yKTsKKyAgICByZXR1cm4gKnRoaXM7Cisg
IH0KIAogIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gd2Ugd2FudCBBc3NlcnRp
b25SZXN1bHQgdG8gYmUKLSAgLy8gY29weS1jb25zdHJ1Y3RpYmxlIGJ1dCBub3QgYXNzaWduYWJs
ZS4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQXNzZXJ0aW9uUmVzdWx0JiBvdGhlcik7CisgIC8v
IEFwcGVuZHMgdGhlIGNvbnRlbnRzIG9mIG1lc3NhZ2UgdG8gbWVzc2FnZV8uCisgIHZvaWQgQXBw
ZW5kTWVzc2FnZShjb25zdCBNZXNzYWdlJiBhX21lc3NhZ2UpIHsKKyAgICBpZiAobWVzc2FnZV8u
Z2V0KCkgPT0gTlVMTCkKKyAgICAgIG1lc3NhZ2VfLnJlc2V0KG5ldyA6OnN0ZDo6c3RyaW5nKTsK
KyAgICBtZXNzYWdlXy0+YXBwZW5kKGFfbWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0cigpKTsKKyAg
fQorCisgIC8vIFN3YXAgdGhlIGNvbnRlbnRzIG9mIHRoaXMgQXNzZXJ0aW9uUmVzdWx0IHdpdGgg
b3RoZXIuCisgIHZvaWQgc3dhcChBc3NlcnRpb25SZXN1bHQmIG90aGVyKTsKIAogICAvLyBTdG9y
ZXMgcmVzdWx0IG9mIHRoZSBhc3NlcnRpb24gcHJlZGljYXRlLgogICBib29sIHN1Y2Nlc3NfOwpA
QCAtMjkxLDE5ICszNTMsOCBAQCBjbGFzcyBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCB7CiAg
IC8vIGNvbnN0cnVjdCBpcyBub3Qgc2F0aXNmaWVkIHdpdGggdGhlIHByZWRpY2F0ZSdzIG91dGNv
bWUuCiAgIC8vIFJlZmVyZW5jZWQgdmlhIGEgcG9pbnRlciB0byBhdm9pZCB0YWtpbmcgdG9vIG11
Y2ggc3RhY2sgZnJhbWUgc3BhY2UKICAgLy8gd2l0aCB0ZXN0IGFzc2VydGlvbnMuCi0gIGludGVy
bmFsOjpzY29wZWRfcHRyPGludGVybmFsOjpTdHJpbmc+IG1lc3NhZ2VfOwotfTsgIC8vIGNsYXNz
IEFzc2VydGlvblJlc3VsdAotCi0vLyBTdHJlYW1zIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSBp
bnRvIHRoaXMgb2JqZWN0LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1Bc3NlcnRpb25SZXN1bHQm
IEFzc2VydGlvblJlc3VsdDo6b3BlcmF0b3I8PChjb25zdCBUJiB2YWx1ZSkgewotICBNZXNzYWdl
IG1zZzsKLSAgaWYgKG1lc3NhZ2VfLmdldCgpICE9IE5VTEwpCi0gICAgbXNnIDw8ICptZXNzYWdl
XzsKLSAgbXNnIDw8IHZhbHVlOwotICBtZXNzYWdlXy5yZXNldChuZXcgaW50ZXJuYWw6OlN0cmlu
Zyhtc2cuR2V0U3RyaW5nKCkpKTsKLSAgcmV0dXJuICp0aGlzOwotfQorICBpbnRlcm5hbDo6c2Nv
cGVkX3B0cjwgOjpzdGQ6OnN0cmluZz4gbWVzc2FnZV87Cit9OwogCiAvLyBNYWtlcyBhIHN1Y2Nl
c3NmdWwgYXNzZXJ0aW9uIHJlc3VsdC4KIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IEFzc2Vy
dGlvblN1Y2Nlc3MoKTsKQEAgLTMxNSw2ICszNjYsMTUgQEAgR1RFU1RfQVBJXyBBc3NlcnRpb25S
ZXN1bHQgQXNzZXJ0aW9uRmFpbHVyZSgpOwogLy8gRGVwcmVjYXRlZDsgdXNlIEFzc2VydGlvbkZh
aWx1cmUoKSA8PCBtc2cuCiBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBBc3NlcnRpb25GYWls
dXJlKGNvbnN0IE1lc3NhZ2UmIG1zZyk7CiAKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKy8v
IEluY2x1ZGVzIHRoZSBhdXRvLWdlbmVyYXRlZCBoZWFkZXIgdGhhdCBpbXBsZW1lbnRzIGEgZmFt
aWx5IG9mIGdlbmVyaWMKKy8vIHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9zLiBUaGlzIGluY2x1
ZGUgY29tZXMgbGF0ZSBiZWNhdXNlIGl0IHJlbGllcyBvbgorLy8gQVBJcyBkZWNsYXJlZCBhYm92
ZS4KKyNpbmNsdWRlICJndGVzdC9ndGVzdF9wcmVkX2ltcGwuaCIKKworbmFtZXNwYWNlIHRlc3Rp
bmcgeworCiAvLyBUaGUgYWJzdHJhY3QgY2xhc3MgdGhhdCBhbGwgdGVzdHMgaW5oZXJpdCBmcm9t
LgogLy8KIC8vIEluIEdvb2dsZSBUZXN0LCBhIHVuaXQgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIG9u
ZSBvciBtYW55IFRlc3RDYXNlcywgYW5kCkBAIC0zMjUsMTIgKzM4NSwxMiBAQCBHVEVTVF9BUElf
IEFzc2VydGlvblJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKGNvbnN0IE1lc3NhZ2UmIG1zZyk7CiAv
LyB0aGlzIGZvciB5b3UuCiAvLwogLy8gVGhlIG9ubHkgdGltZSB5b3UgZGVyaXZlIGZyb20gVGVz
dCBpcyB3aGVuIGRlZmluaW5nIGEgdGVzdCBmaXh0dXJlCi0vLyB0byBiZSB1c2VkIGEgVEVTVF9G
LiAgRm9yIGV4YW1wbGU6CisvLyB0byBiZSB1c2VkIGluIGEgVEVTVF9GLiAgRm9yIGV4YW1wbGU6
CiAvLwogLy8gICBjbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogLy8gICAg
cHJvdGVjdGVkOgotLy8gICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsgLi4uIH0KLS8vICAgICB2
aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7IC4uLiB9CisvLyAgICAgdm9pZCBTZXRVcCgpIG92ZXJy
aWRlIHsgLi4uIH0KKy8vICAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUgeyAuLi4gfQogLy8g
ICAgIC4uLgogLy8gICB9OwogLy8KQEAgLTM0MCw3ICs0MDAsNyBAQCBHVEVTVF9BUElfIEFzc2Vy
dGlvblJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKGNvbnN0IE1lc3NhZ2UmIG1zZyk7CiAvLyBUZXN0
IGlzIG5vdCBjb3B5YWJsZS4KIGNsYXNzIEdURVNUX0FQSV8gVGVzdCB7CiAgcHVibGljOgotICBm
cmllbmQgY2xhc3MgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbDsKKyAgZnJpZW5kIGNsYXNzIFRlc3RJ
bmZvOwogCiAgIC8vIERlZmluZXMgdHlwZXMgZm9yIHBvaW50ZXJzIHRvIGZ1bmN0aW9ucyB0aGF0
IHNldCB1cCBhbmQgdGVhciBkb3duCiAgIC8vIGEgdGVzdCBjYXNlLgpAQCAtMzc2LDIwICs0MzYs
MjEgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0IHsKICAgLy8gbm9uLWZhdGFsKSBmYWlsdXJlLgog
ICBzdGF0aWMgYm9vbCBIYXNGYWlsdXJlKCkgeyByZXR1cm4gSGFzRmF0YWxGYWlsdXJlKCkgfHwg
SGFzTm9uZmF0YWxGYWlsdXJlKCk7IH0KIAotICAvLyBMb2dzIGEgcHJvcGVydHkgZm9yIHRoZSBj
dXJyZW50IHRlc3QuICBPbmx5IHRoZSBsYXN0IHZhbHVlIGZvciBhIGdpdmVuCi0gIC8vIGtleSBp
cyByZW1lbWJlcmVkLgotICAvLyBUaGVzZSBhcmUgcHVibGljIHN0YXRpYyBzbyB0aGV5IGNhbiBi
ZSBjYWxsZWQgZnJvbSB1dGlsaXR5IGZ1bmN0aW9ucwotICAvLyB0aGF0IGFyZSBub3QgbWVtYmVy
cyBvZiB0aGUgdGVzdCBmaXh0dXJlLgotICAvLyBUaGUgYXJndW1lbnRzIGFyZSBjb25zdCBjaGFy
KiBpbnN0ZWFkIHN0cmluZ3MsIGFzIEdvb2dsZSBUZXN0IGlzIHVzZWQKLSAgLy8gb24gcGxhdGZv
cm1zIHdoZXJlIHN0cmluZyBkb2Vzbid0IGNvbXBpbGUuCi0gIC8vCi0gIC8vIE5vdGUgdGhhdCBh
IGRyaXZpbmcgY29uc2lkZXJhdGlvbiBmb3IgdGhlc2UgUmVjb3JkUHJvcGVydHkgbWV0aG9kcwot
ICAvLyB3YXMgdG8gcHJvZHVjZSB4bWwgb3V0cHV0IHN1aXRlZCB0byB0aGUgR3JlZW5zcGFuIGNo
YXJ0aW5nIHV0aWxpdHksCi0gIC8vIHdoaWNoIGF0IHByZXNlbnQgd2lsbCBvbmx5IGNoYXJ0IHZh
bHVlcyB0aGF0IGZpdCBpbiBhIDMyLWJpdCBpbnQuIEl0Ci0gIC8vIGlzIHRoZSB1c2VyJ3MgcmVz
cG9uc2liaWxpdHkgdG8gcmVzdHJpY3QgdGhlaXIgdmFsdWVzIHRvIDMyLWJpdCBpbnRzCi0gIC8v
IGlmIHRoZXkgaW50ZW5kIHRoZW0gdG8gYmUgdXNlZCB3aXRoIEdyZWVuc3Bhbi4KLSAgc3RhdGlj
IHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBjb25zdCBjaGFyKiB2YWx1ZSk7
Ci0gIHN0YXRpYyB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0IGNoYXIqIGtleSwgaW50IHZhbHVl
KTsKKyAgLy8gTG9ncyBhIHByb3BlcnR5IGZvciB0aGUgY3VycmVudCB0ZXN0LCB0ZXN0IGNhc2Us
IG9yIGZvciB0aGUgZW50aXJlCisgIC8vIGludm9jYXRpb24gb2YgdGhlIHRlc3QgcHJvZ3JhbSB3
aGVuIHVzZWQgb3V0c2lkZSBvZiB0aGUgY29udGV4dCBvZiBhCisgIC8vIHRlc3QgY2FzZS4gIE9u
bHkgdGhlIGxhc3QgdmFsdWUgZm9yIGEgZ2l2ZW4ga2V5IGlzIHJlbWVtYmVyZWQuICBUaGVzZQor
ICAvLyBhcmUgcHVibGljIHN0YXRpYyBzbyB0aGV5IGNhbiBiZSBjYWxsZWQgZnJvbSB1dGlsaXR5
IGZ1bmN0aW9ucyB0aGF0IGFyZQorICAvLyBub3QgbWVtYmVycyBvZiB0aGUgdGVzdCBmaXh0dXJl
LiAgQ2FsbHMgdG8gUmVjb3JkUHJvcGVydHkgbWFkZSBkdXJpbmcKKyAgLy8gbGlmZXNwYW4gb2Yg
dGhlIHRlc3QgKGZyb20gdGhlIG1vbWVudCBpdHMgY29uc3RydWN0b3Igc3RhcnRzIHRvIHRoZQor
ICAvLyBtb21lbnQgaXRzIGRlc3RydWN0b3IgZmluaXNoZXMpIHdpbGwgYmUgb3V0cHV0IGluIFhN
TCBhcyBhdHRyaWJ1dGVzIG9mCisgIC8vIHRoZSA8dGVzdGNhc2U+IGVsZW1lbnQuICBQcm9wZXJ0
aWVzIHJlY29yZGVkIGZyb20gZml4dHVyZSdzCisgIC8vIFNldFVwVGVzdENhc2Ugb3IgVGVhckRv
d25UZXN0Q2FzZSBhcmUgbG9nZ2VkIGFzIGF0dHJpYnV0ZXMgb2YgdGhlCisgIC8vIGNvcnJlc3Bv
bmRpbmcgPHRlc3RzdWl0ZT4gZWxlbWVudC4gIENhbGxzIHRvIFJlY29yZFByb3BlcnR5IG1hZGUg
aW4gdGhlCisgIC8vIGdsb2JhbCBjb250ZXh0IChiZWZvcmUgb3IgYWZ0ZXIgaW52b2NhdGlvbiBv
ZiBSVU5fQUxMX1RFU1RTIGFuZCBmcm9tCisgIC8vIFNldFVwL1RlYXJEb3duIG1ldGhvZCBvZiBF
bnZpcm9ubWVudCBvYmplY3RzIHJlZ2lzdGVyZWQgd2l0aCBHb29nbGUKKyAgLy8gVGVzdCkgd2ls
bCBiZSBvdXRwdXQgYXMgYXR0cmlidXRlcyBvZiB0aGUgPHRlc3RzdWl0ZXM+IGVsZW1lbnQuCisg
IHN0YXRpYyB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGNvbnN0
IHN0ZDo6c3RyaW5nJiB2YWx1ZSk7CisgIHN0YXRpYyB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0
IHN0ZDo6c3RyaW5nJiBrZXksIGludCB2YWx1ZSk7CiAKICBwcm90ZWN0ZWQ6CiAgIC8vIENyZWF0
ZXMgYSBUZXN0IG9iamVjdC4KQEAgLTQxNywyMCArNDc4LDIzIEBAIGNsYXNzIEdURVNUX0FQSV8g
VGVzdCB7CiAgIC8vIFNldHMgdXAsIGV4ZWN1dGVzLCBhbmQgdGVhcnMgZG93biB0aGUgdGVzdC4K
ICAgdm9pZCBSdW4oKTsKIAotICAvLyBVc2VzIGEgR1Rlc3RGbGFnU2F2ZXIgdG8gc2F2ZSBhbmQg
cmVzdG9yZSBhbGwgR29vZ2xlIFRlc3QgZmxhZ3MuCi0gIGNvbnN0IGludGVybmFsOjpHVGVzdEZs
YWdTYXZlciogY29uc3QgZ3Rlc3RfZmxhZ19zYXZlcl87CisgIC8vIERlbGV0ZXMgc2VsZi4gIFdl
IGRlbGliZXJhdGVseSBwaWNrIGFuIHVudXN1YWwgbmFtZSBmb3IgdGhpcworICAvLyBpbnRlcm5h
bCBtZXRob2QgdG8gYXZvaWQgY2xhc2hpbmcgd2l0aCBuYW1lcyB1c2VkIGluIHVzZXIgVEVTVHMu
CisgIHZvaWQgRGVsZXRlU2VsZl8oKSB7IGRlbGV0ZSB0aGlzOyB9CiAKLSAgLy8gT2Z0ZW4gYSB1
c2VyIG1pcy1zcGVsbHMgU2V0VXAoKSBhcyBTZXR1cCgpIGFuZCBzcGVuZHMgYSBsb25nIHRpbWUK
KyAgY29uc3QgaW50ZXJuYWw6OnNjb3BlZF9wdHI8IEdURVNUX0ZMQUdfU0FWRVJfID4gZ3Rlc3Rf
ZmxhZ19zYXZlcl87CisKKyAgLy8gT2Z0ZW4gYSB1c2VyIG1pc3NwZWxscyBTZXRVcCgpIGFzIFNl
dHVwKCkgYW5kIHNwZW5kcyBhIGxvbmcgdGltZQogICAvLyB3b25kZXJpbmcgd2h5IGl0IGlzIG5l
dmVyIGNhbGxlZCBieSBHb29nbGUgVGVzdC4gIFRoZSBkZWNsYXJhdGlvbiBvZgogICAvLyB0aGUg
Zm9sbG93aW5nIG1ldGhvZCBpcyBzb2xlbHkgZm9yIGNhdGNoaW5nIHN1Y2ggYW4gZXJyb3IgYXQK
ICAgLy8gY29tcGlsZSB0aW1lOgogICAvLwogICAvLyAgIC0gVGhlIHJldHVybiB0eXBlIGlzIGRl
bGliZXJhdGVseSBjaG9zZW4gdG8gYmUgbm90IHZvaWQsIHNvIGl0Ci0gIC8vICAgd2lsbCBiZSBh
IGNvbmZsaWN0IGlmIGEgdXNlciBkZWNsYXJlcyB2b2lkIFNldHVwKCkgaW4gaGlzIHRlc3QKLSAg
Ly8gICBmaXh0dXJlLgorICAvLyAgIHdpbGwgYmUgYSBjb25mbGljdCBpZiB2b2lkIFNldHVwKCkg
aXMgZGVjbGFyZWQgaW4gdGhlIHVzZXIncworICAvLyAgIHRlc3QgZml4dHVyZS4KICAgLy8KICAg
Ly8gICAtIFRoaXMgbWV0aG9kIGlzIHByaXZhdGUsIHNvIGl0IHdpbGwgYmUgYW5vdGhlciBjb21w
aWxlciBlcnJvcgotICAvLyAgIGlmIGEgdXNlciBjYWxscyBpdCBmcm9tIGhpcyB0ZXN0IGZpeHR1
cmUuCisgIC8vICAgaWYgdGhlIG1ldGhvZCBpcyBjYWxsZWQgZnJvbSB0aGUgdXNlcidzIHRlc3Qg
Zml4dHVyZS4KICAgLy8KICAgLy8gRE8gTk9UIE9WRVJSSURFIFRISVMgRlVOQ1RJT04uCiAgIC8v
CkBAIC00NTQsNyArNTE4LDcgQEAgY2xhc3MgVGVzdFByb3BlcnR5IHsKICAgLy8gQyd0b3IuICBU
ZXN0UHJvcGVydHkgZG9lcyBOT1QgaGF2ZSBhIGRlZmF1bHQgY29uc3RydWN0b3IuCiAgIC8vIEFs
d2F5cyB1c2UgdGhpcyBjb25zdHJ1Y3RvciAod2l0aCBwYXJhbWV0ZXJzKSB0byBjcmVhdGUgYQog
ICAvLyBUZXN0UHJvcGVydHkgb2JqZWN0LgotICBUZXN0UHJvcGVydHkoY29uc3QgY2hhciogYV9r
ZXksIGNvbnN0IGNoYXIqIGFfdmFsdWUpIDoKKyAgVGVzdFByb3BlcnR5KGNvbnN0IHN0ZDo6c3Ry
aW5nJiBhX2tleSwgY29uc3Qgc3RkOjpzdHJpbmcmIGFfdmFsdWUpIDoKICAgICBrZXlfKGFfa2V5
KSwgdmFsdWVfKGFfdmFsdWUpIHsKICAgfQogCkBAIC00NjksMTUgKzUzMywxNSBAQCBjbGFzcyBU
ZXN0UHJvcGVydHkgewogICB9CiAKICAgLy8gU2V0cyBhIG5ldyB2YWx1ZSwgb3ZlcnJpZGluZyB0
aGUgb25lIHN1cHBsaWVkIGluIHRoZSBjb25zdHJ1Y3Rvci4KLSAgdm9pZCBTZXRWYWx1ZShjb25z
dCBjaGFyKiBuZXdfdmFsdWUpIHsKKyAgdm9pZCBTZXRWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYg
bmV3X3ZhbHVlKSB7CiAgICAgdmFsdWVfID0gbmV3X3ZhbHVlOwogICB9CiAKICBwcml2YXRlOgog
ICAvLyBUaGUga2V5IHN1cHBsaWVkIGJ5IHRoZSB1c2VyLgotICBpbnRlcm5hbDo6U3RyaW5nIGtl
eV87CisgIHN0ZDo6c3RyaW5nIGtleV87CiAgIC8vIFRoZSB2YWx1ZSBzdXBwbGllZCBieSB0aGUg
dXNlci4KLSAgaW50ZXJuYWw6OlN0cmluZyB2YWx1ZV87CisgIHN0ZDo6c3RyaW5nIHZhbHVlXzsK
IH07CiAKIC8vIFRoZSByZXN1bHQgb2YgYSBzaW5nbGUgVGVzdC4gIFRoaXMgaW5jbHVkZXMgYSBs
aXN0IG9mCkBAIC01MTYsOSArNTgwLDggQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0UmVzdWx0IHsK
ICAgLy8gUmV0dXJucyB0aGUgZWxhcHNlZCB0aW1lLCBpbiBtaWxsaXNlY29uZHMuCiAgIFRpbWVJ
bk1pbGxpcyBlbGFwc2VkX3RpbWUoKSBjb25zdCB7IHJldHVybiBlbGFwc2VkX3RpbWVfOyB9CiAK
LSAgLy8gUmV0dXJucyB0aGUgaS10aCB0ZXN0IHBhcnQgcmVzdWx0IGFtb25nIGFsbCB0aGUgcmVz
dWx0cy4gaSBjYW4gcmFuZ2UKLSAgLy8gZnJvbSAwIHRvIHRlc3RfcHJvcGVydHlfY291bnQoKSAt
IDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIGFib3J0cwotICAvLyB0aGUgcHJvZ3JhbS4K
KyAgLy8gUmV0dXJucyB0aGUgaS10aCB0ZXN0IHBhcnQgcmVzdWx0IGFtb25nIGFsbCB0aGUgcmVz
dWx0cy4gaSBjYW4gcmFuZ2UgZnJvbSAwCisgIC8vIHRvIHRvdGFsX3BhcnRfY291bnQoKSAtIDEu
IElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIGFib3J0cyB0aGUgcHJvZ3JhbS4KICAgY29uc3Qg
VGVzdFBhcnRSZXN1bHQmIEdldFRlc3RQYXJ0UmVzdWx0KGludCBpKSBjb25zdDsKIAogICAvLyBS
ZXR1cm5zIHRoZSBpLXRoIHRlc3QgcHJvcGVydHkuIGkgY2FuIHJhbmdlIGZyb20gMCB0bwpAQCAt
NTI4LDEzICs1OTEsMTQgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0UmVzdWx0IHsKIAogIHByaXZh
dGU6CiAgIGZyaWVuZCBjbGFzcyBUZXN0SW5mbzsKKyAgZnJpZW5kIGNsYXNzIFRlc3RDYXNlOwog
ICBmcmllbmQgY2xhc3MgVW5pdFRlc3Q7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6RGVmYXVs
dEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6
RXhlY0RlYXRoVGVzdDsKLSAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpUZXN0SW5mb0ltcGw7CiAg
IGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VGVzdFJlc3VsdEFjY2Vzc29yOwogICBmcmllbmQgY2xh
c3MgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbDsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpXaW5k
b3dzRGVhdGhUZXN0OworICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkZ1Y2hzaWFEZWF0aFRlc3Q7
CiAKICAgLy8gR2V0cyB0aGUgdmVjdG9yIG9mIFRlc3RQYXJ0UmVzdWx0cy4KICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8VGVzdFBhcnRSZXN1bHQ+JiB0ZXN0X3BhcnRfcmVzdWx0cygpIGNvbnN0IHsKQEAg
LTU1MywxMyArNjE3LDE2IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFJlc3VsdCB7CiAgIC8vIGEg
bm9uLWZhdGFsIGZhaWx1cmUgaWYgaW52YWxpZCAoZS5nLiwgaWYgaXQgY29uZmxpY3RzIHdpdGgg
cmVzZXJ2ZWQKICAgLy8ga2V5IG5hbWVzKS4gSWYgYSBwcm9wZXJ0eSBpcyBhbHJlYWR5IHJlY29y
ZGVkIGZvciB0aGUgc2FtZSBrZXksIHRoZQogICAvLyB2YWx1ZSB3aWxsIGJlIHVwZGF0ZWQsIHJh
dGhlciB0aGFuIHN0b3JpbmcgbXVsdGlwbGUgdmFsdWVzIGZvciB0aGUgc2FtZQotICAvLyBrZXku
Ci0gIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5
KTsKKyAgLy8ga2V5LiAgeG1sX2VsZW1lbnQgc3BlY2lmaWVzIHRoZSBlbGVtZW50IGZvciB3aGlj
aCB0aGUgcHJvcGVydHkgaXMgYmVpbmcKKyAgLy8gcmVjb3JkZWQgYW5kIGlzIHVzZWQgZm9yIHZh
bGlkYXRpb24uCisgIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9l
bGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9w
cm9wZXJ0eSk7CiAKICAgLy8gQWRkcyBhIGZhaWx1cmUgaWYgdGhlIGtleSBpcyBhIHJlc2VydmVk
IGF0dHJpYnV0ZSBvZiBHb29nbGUgVGVzdAogICAvLyB0ZXN0Y2FzZSB0YWdzLiAgUmV0dXJucyB0
cnVlIGlmIHRoZSBwcm9wZXJ0eSBpcyB2YWxpZC4KLSAgLy8gVE9ETyhydXNzcik6IFZhbGlkYXRl
IGF0dHJpYnV0ZSBuYW1lcyBhcmUgbGVnYWwgYW5kIGh1bWFuIHJlYWRhYmxlLgotICBzdGF0aWMg
Ym9vbCBWYWxpZGF0ZVRlc3RQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVy
dHkpOworICAvLyBGSVhNRTogVmFsaWRhdGUgYXR0cmlidXRlIG5hbWVzIGFyZSBsZWdhbCBhbmQg
aHVtYW4gcmVhZGFibGUuCisgIHN0YXRpYyBib29sIFZhbGlkYXRlVGVzdFByb3BlcnR5KGNvbnN0
IHN0ZDo6c3RyaW5nJiB4bWxfZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5KTsKIAogICAvLyBBZGRzIGEg
dGVzdCBwYXJ0IHJlc3VsdCB0byB0aGUgbGlzdC4KICAgdm9pZCBBZGRUZXN0UGFydFJlc3VsdChj
b25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCk7CkBAIC02MTEsMjAgKzY3OCwz
OSBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RJbmZvIHsKICAgflRlc3RJbmZvKCk7CiAKICAgLy8g
UmV0dXJucyB0aGUgdGVzdCBjYXNlIG5hbWUuCi0gIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1l
KCkgY29uc3Q7CisgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lKCkgY29uc3QgeyByZXR1cm4g
dGVzdF9jYXNlX25hbWVfLmNfc3RyKCk7IH0KIAogICAvLyBSZXR1cm5zIHRoZSB0ZXN0IG5hbWUu
Ci0gIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKKyAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG5hbWVfLmNfc3RyKCk7IH0KKworICAvLyBSZXR1cm5zIHRoZSBuYW1lIG9mIHRo
ZSBwYXJhbWV0ZXIgdHlwZSwgb3IgTlVMTCBpZiB0aGlzIGlzIG5vdCBhIHR5cGVkCisgIC8vIG9y
IGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0oKSBj
b25zdCB7CisgICAgaWYgKHR5cGVfcGFyYW1fLmdldCgpICE9IE5VTEwpCisgICAgICByZXR1cm4g
dHlwZV9wYXJhbV8tPmNfc3RyKCk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICAvLyBSZXR1
cm5zIHRoZSB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2YWx1ZSBwYXJhbWV0ZXIsIG9yIE5V
TEwgaWYgdGhpcworICAvLyBpcyBub3QgYSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisgIGNv
bnN0IGNoYXIqIHZhbHVlX3BhcmFtKCkgY29uc3QgeworICAgIGlmICh2YWx1ZV9wYXJhbV8uZ2V0
KCkgIT0gTlVMTCkKKyAgICAgIHJldHVybiB2YWx1ZV9wYXJhbV8tPmNfc3RyKCk7CisgICAgcmV0
dXJuIE5VTEw7CisgIH0KKworICAvLyBSZXR1cm5zIHRoZSBmaWxlIG5hbWUgd2hlcmUgdGhpcyB0
ZXN0IGlzIGRlZmluZWQuCisgIGNvbnN0IGNoYXIqIGZpbGUoKSBjb25zdCB7IHJldHVybiBsb2Nh
dGlvbl8uZmlsZS5jX3N0cigpOyB9CiAKLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIGNvbW1l
bnQuCi0gIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9jb21tZW50KCkgY29uc3Q7CisgIC8vIFJldHVy
bnMgdGhlIGxpbmUgd2hlcmUgdGhpcyB0ZXN0IGlzIGRlZmluZWQuCisgIGludCBsaW5lKCkgY29u
c3QgeyByZXR1cm4gbG9jYXRpb25fLmxpbmU7IH0KIAotICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNv
bW1lbnQuCi0gIGNvbnN0IGNoYXIqIGNvbW1lbnQoKSBjb25zdDsKKyAgLy8gUmV0dXJuIHRydWUg
aWYgdGhpcyB0ZXN0IHNob3VsZCBub3QgYmUgcnVuIGJlY2F1c2UgaXQncyBpbiBhbm90aGVyIHNo
YXJkLgorICBib29sIGlzX2luX2Fub3RoZXJfc2hhcmQoKSBjb25zdCB7IHJldHVybiBpc19pbl9h
bm90aGVyX3NoYXJkXzsgfQogCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRlc3Qgc2hvdWxk
IHJ1biwgdGhhdCBpcyBpZiB0aGUgdGVzdCBpcyBub3QgZGlzYWJsZWQKLSAgLy8gKG9yIGl0IGlz
IGRpc2FibGVkIGJ1dCB0aGUgYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxhZyBoYXMgYmVlbiBz
cGVjaWZpZWQpCi0gIC8vIGFuZCBpdHMgZnVsbCBuYW1lIG1hdGNoZXMgdGhlIHVzZXItc3BlY2lm
aWVkIGZpbHRlci4KKyAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBzaG91bGQgcnVuLCB0
aGF0IGlzIGlmIHRoZSB0ZXN0IGlzIG5vdAorICAvLyBkaXNhYmxlZCAob3IgaXQgaXMgZGlzYWJs
ZWQgYnV0IHRoZSBhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnIGhhcworICAvLyBiZWVuIHNw
ZWNpZmllZCkgYW5kIGl0cyBmdWxsIG5hbWUgbWF0Y2hlcyB0aGUgdXNlci1zcGVjaWZpZWQgZmls
dGVyLgogICAvLwogICAvLyBHb29nbGUgVGVzdCBhbGxvd3MgdGhlIHVzZXIgdG8gZmlsdGVyIHRo
ZSB0ZXN0cyBieSB0aGVpciBmdWxsIG5hbWVzLgogICAvLyBUaGUgZnVsbCBuYW1lIG9mIGEgdGVz
dCBCYXIgaW4gdGVzdCBjYXNlIEZvbyBpcyBkZWZpbmVkIGFzCkBAIC02MzgsMTAgKzcyNCwxNyBA
QCBjbGFzcyBHVEVTVF9BUElfIFRlc3RJbmZvIHsKICAgLy8KICAgLy8gRm9yIGV4YW1wbGUsICpB
KjpGb28uKiBpcyBhIGZpbHRlciB0aGF0IG1hdGNoZXMgYW55IHN0cmluZyB0aGF0CiAgIC8vIGNv
bnRhaW5zIHRoZSBjaGFyYWN0ZXIgJ0EnIG9yIHN0YXJ0cyB3aXRoICJGb28uIi4KLSAgYm9vbCBz
aG91bGRfcnVuKCkgY29uc3Q7CisgIGJvb2wgc2hvdWxkX3J1bigpIGNvbnN0IHsgcmV0dXJuIHNo
b3VsZF9ydW5fOyB9CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIHRlc3Qgd2lsbCBhcHBl
YXIgaW4gdGhlIFhNTCByZXBvcnQuCisgIGJvb2wgaXNfcmVwb3J0YWJsZSgpIGNvbnN0IHsKKyAg
ICAvLyBUaGUgWE1MIHJlcG9ydCBpbmNsdWRlcyB0ZXN0cyBtYXRjaGluZyB0aGUgZmlsdGVyLCBl
eGNsdWRpbmcgdGhvc2UKKyAgICAvLyBydW4gaW4gb3RoZXIgc2hhcmRzLgorICAgIHJldHVybiBt
YXRjaGVzX2ZpbHRlcl8gJiYgIWlzX2luX2Fub3RoZXJfc2hhcmRfOworICB9CiAKICAgLy8gUmV0
dXJucyB0aGUgcmVzdWx0IG9mIHRoZSB0ZXN0LgotICBjb25zdCBUZXN0UmVzdWx0KiByZXN1bHQo
KSBjb25zdDsKKyAgY29uc3QgVGVzdFJlc3VsdCogcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gJnJl
c3VsdF87IH0KIAogIHByaXZhdGU6CiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKQEAgLTY0OSwz
NiArNzQyLDY1IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdEluZm8gewogI2VuZGlmICAvLyBHVEVT
VF9IQVNfREVBVEhfVEVTVAogICBmcmllbmQgY2xhc3MgVGVzdDsKICAgZnJpZW5kIGNsYXNzIFRl
c3RDYXNlOwotICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbDsKICAgZnJpZW5k
IGNsYXNzIGludGVybmFsOjpVbml0VGVzdEltcGw7CisgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6
U3RyZWFtaW5nTGlzdGVuZXJUZXN0OwogICBmcmllbmQgVGVzdEluZm8qIGludGVybmFsOjpNYWtl
QW5kUmVnaXN0ZXJUZXN0SW5mbygKLSAgICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLCBj
b25zdCBjaGFyKiBuYW1lLAotICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX2NvbW1lbnQsIGNv
bnN0IGNoYXIqIGNvbW1lbnQsCisgICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAg
ICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICBjb25zdCBjaGFyKiB0eXBlX3BhcmFtLAorICAg
ICAgY29uc3QgY2hhciogdmFsdWVfcGFyYW0sCisgICAgICBpbnRlcm5hbDo6Q29kZUxvY2F0aW9u
IGNvZGVfbG9jYXRpb24sCiAgICAgICBpbnRlcm5hbDo6VHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQs
CiAgICAgICBUZXN0OjpTZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCiAgICAgICBUZXN0OjpU
ZWFyRG93blRlc3RDYXNlRnVuYyB0ZWFyX2Rvd25fdGMsCiAgICAgICBpbnRlcm5hbDo6VGVzdEZh
Y3RvcnlCYXNlKiBmYWN0b3J5KTsKIAotICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IG1h
dGNoZXMgdGhlIHVzZXItc3BlY2lmaWVkIGZpbHRlci4KLSAgYm9vbCBtYXRjaGVzX2ZpbHRlcigp
IGNvbnN0OworICAvLyBDb25zdHJ1Y3RzIGEgVGVzdEluZm8gb2JqZWN0LiBUaGUgbmV3bHkgY29u
c3RydWN0ZWQgaW5zdGFuY2UgYXNzdW1lcworICAvLyBvd25lcnNoaXAgb2YgdGhlIGZhY3Rvcnkg
b2JqZWN0LgorICBUZXN0SW5mbyhjb25zdCBzdGQ6OnN0cmluZyYgdGVzdF9jYXNlX25hbWUsCisg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAorICAgICAgICAgICBjb25zdCBjaGFy
KiBhX3R5cGVfcGFyYW0sICAgLy8gTlVMTCBpZiBub3QgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVz
dAorICAgICAgICAgICBjb25zdCBjaGFyKiBhX3ZhbHVlX3BhcmFtLCAgLy8gTlVMTCBpZiBub3Qg
YSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QKKyAgICAgICAgICAgaW50ZXJuYWw6OkNvZGVMb2Nh
dGlvbiBhX2NvZGVfbG9jYXRpb24sCisgICAgICAgICAgIGludGVybmFsOjpUeXBlSWQgZml4dHVy
ZV9jbGFzc19pZCwKKyAgICAgICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9y
eSk7CiAKICAgLy8gSW5jcmVtZW50cyB0aGUgbnVtYmVyIG9mIGRlYXRoIHRlc3RzIGVuY291bnRl
cmVkIGluIHRoaXMgdGVzdCBzbwogICAvLyBmYXIuCi0gIGludCBpbmNyZW1lbnRfZGVhdGhfdGVz
dF9jb3VudCgpOworICBpbnQgaW5jcmVtZW50X2RlYXRoX3Rlc3RfY291bnQoKSB7CisgICAgcmV0
dXJuIHJlc3VsdF8uaW5jcmVtZW50X2RlYXRoX3Rlc3RfY291bnQoKTsKKyAgfQogCi0gIC8vIEFj
Y2Vzc29ycyBmb3IgdGhlIGltcGxlbWVudGF0aW9uIG9iamVjdC4KLSAgaW50ZXJuYWw6OlRlc3RJ
bmZvSW1wbCogaW1wbCgpIHsgcmV0dXJuIGltcGxfOyB9Ci0gIGNvbnN0IGludGVybmFsOjpUZXN0
SW5mb0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBpbXBsXzsgfQorICAvLyBDcmVhdGVzIHRo
ZSB0ZXN0IG9iamVjdCwgcnVucyBpdCwgcmVjb3JkcyBpdHMgcmVzdWx0LCBhbmQgdGhlbgorICAv
LyBkZWxldGVzIGl0LgorICB2b2lkIFJ1bigpOwogCi0gIC8vIENvbnN0cnVjdHMgYSBUZXN0SW5m
byBvYmplY3QuIFRoZSBuZXdseSBjb25zdHJ1Y3RlZCBpbnN0YW5jZSBhc3N1bWVzCi0gIC8vIG93
bmVyc2hpcCBvZiB0aGUgZmFjdG9yeSBvYmplY3QuCi0gIFRlc3RJbmZvKGNvbnN0IGNoYXIqIHRl
c3RfY2FzZV9uYW1lLCBjb25zdCBjaGFyKiBuYW1lLAotICAgICAgICAgICBjb25zdCBjaGFyKiB0
ZXN0X2Nhc2VfY29tbWVudCwgY29uc3QgY2hhciogY29tbWVudCwKLSAgICAgICAgICAgaW50ZXJu
YWw6OlR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkLAotICAgICAgICAgICBpbnRlcm5hbDo6VGVzdEZh
Y3RvcnlCYXNlKiBmYWN0b3J5KTsKKyAgc3RhdGljIHZvaWQgQ2xlYXJUZXN0UmVzdWx0KFRlc3RJ
bmZvKiB0ZXN0X2luZm8pIHsKKyAgICB0ZXN0X2luZm8tPnJlc3VsdF8uQ2xlYXIoKTsKKyAgfQog
Ci0gIC8vIEFuIG9wYXF1ZSBpbXBsZW1lbnRhdGlvbiBvYmplY3QuCi0gIGludGVybmFsOjpUZXN0
SW5mb0ltcGwqIGltcGxfOworICAvLyBUaGVzZSBmaWVsZHMgYXJlIGltbXV0YWJsZSBwcm9wZXJ0
aWVzIG9mIHRoZSB0ZXN0LgorICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0X2Nhc2VfbmFtZV87ICAg
ICAvLyBUZXN0IGNhc2UgbmFtZQorICBjb25zdCBzdGQ6OnN0cmluZyBuYW1lXzsgICAgICAgICAg
ICAgICAvLyBUZXN0IG5hbWUKKyAgLy8gTmFtZSBvZiB0aGUgcGFyYW1ldGVyIHR5cGUsIG9yIE5V
TEwgaWYgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhCisgIC8vIHR5cGUtcGFyYW1ldGVyaXplZCB0
ZXN0LgorICBjb25zdCBpbnRlcm5hbDo6c2NvcGVkX3B0cjxjb25zdCA6OnN0ZDo6c3RyaW5nPiB0
eXBlX3BhcmFtXzsKKyAgLy8gVGV4dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFsdWUgcGFyYW1l
dGVyLCBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEKKyAgLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0
ZXN0LgorICBjb25zdCBpbnRlcm5hbDo6c2NvcGVkX3B0cjxjb25zdCA6OnN0ZDo6c3RyaW5nPiB2
YWx1ZV9wYXJhbV87CisgIGludGVybmFsOjpDb2RlTG9jYXRpb24gbG9jYXRpb25fOworICBjb25z
dCBpbnRlcm5hbDo6VHlwZUlkIGZpeHR1cmVfY2xhc3NfaWRfOyAgIC8vIElEIG9mIHRoZSB0ZXN0
IGZpeHR1cmUgY2xhc3MKKyAgYm9vbCBzaG91bGRfcnVuXzsgICAgICAgICAgICAgICAgIC8vIFRy
dWUgaWZmIHRoaXMgdGVzdCBzaG91bGQgcnVuCisgIGJvb2wgaXNfZGlzYWJsZWRfOyAgICAgICAg
ICAgICAgICAvLyBUcnVlIGlmZiB0aGlzIHRlc3QgaXMgZGlzYWJsZWQKKyAgYm9vbCBtYXRjaGVz
X2ZpbHRlcl87ICAgICAgICAgICAgIC8vIFRydWUgaWYgdGhpcyB0ZXN0IG1hdGNoZXMgdGhlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VyLXNwZWNpZmllZCBmaWx0
ZXIuCisgIGJvb2wgaXNfaW5fYW5vdGhlcl9zaGFyZF87ICAgICAgICAvLyBXaWxsIGJlIHJ1biBp
biBhbm90aGVyIHNoYXJkLgorICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBjb25zdCBmYWN0
b3J5XzsgIC8vIFRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB0ZXN0IG9iamVjdAorCisgIC8vIFRoaXMg
ZmllbGQgaXMgbXV0YWJsZSBhbmQgbmVlZHMgdG8gYmUgcmVzZXQgYmVmb3JlIHJ1bm5pbmcgdGhl
CisgIC8vIHRlc3QgZm9yIHRoZSBzZWNvbmQgdGltZS4KKyAgVGVzdFJlc3VsdCByZXN1bHRfOwog
CiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdEluZm8pOwogfTsKQEAgLTY5
Niw5ICs4MTgsMTEgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIEFyZ3VtZW50
czoKICAgLy8KICAgLy8gICBuYW1lOiAgICAgICAgIG5hbWUgb2YgdGhlIHRlc3QgY2FzZQorICAv
LyAgIGFfdHlwZV9wYXJhbTogdGhlIG5hbWUgb2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwg
b3IgTlVMTCBpZgorICAvLyAgICAgICAgICAgICAgICAgdGhpcyBpcyBub3QgYSB0eXBlLXBhcmFt
ZXRlcml6ZWQgdGVzdC4KICAgLy8gICBzZXRfdXBfdGM6ICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0
aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBjYXNlCiAgIC8vICAgdGVhcl9kb3duX3RjOiBwb2lu
dGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQotICBUZXN0
Q2FzZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBjb21tZW50LAorICBUZXN0Q2FzZShj
b25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sCiAgICAgICAgICAgIFRl
c3Q6OlNldFVwVGVzdENhc2VGdW5jIHNldF91cF90YywKICAgICAgICAgICAgVGVzdDo6VGVhckRv
d25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3RjKTsKIApAQCAtNzA4LDggKzgzMiwxMyBAQCBjbGFz
cyBHVEVTVF9BUElfIFRlc3RDYXNlIHsKICAgLy8gR2V0cyB0aGUgbmFtZSBvZiB0aGUgVGVzdENh
c2UuCiAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7IHJldHVybiBuYW1lXy5jX3N0cigpOyB9
CiAKLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIGNvbW1lbnQuCi0gIGNvbnN0IGNoYXIqIGNv
bW1lbnQoKSBjb25zdCB7IHJldHVybiBjb21tZW50Xy5jX3N0cigpOyB9CisgIC8vIFJldHVybnMg
dGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB0eXBlLCBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEK
KyAgLy8gdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZS4KKyAgY29uc3QgY2hhciogdHlwZV9w
YXJhbSgpIGNvbnN0IHsKKyAgICBpZiAodHlwZV9wYXJhbV8uZ2V0KCkgIT0gTlVMTCkKKyAgICAg
IHJldHVybiB0eXBlX3BhcmFtXy0+Y19zdHIoKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQogCiAg
IC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZSBzaG91bGQgcnVu
LgogICBib29sIHNob3VsZF9ydW4oKSBjb25zdCB7IHJldHVybiBzaG91bGRfcnVuXzsgfQpAQCAt
NzIwLDkgKzg0OSwxNSBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RDYXNlIHsKICAgLy8gR2V0cyB0
aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KICAgaW50IGZhaWxl
ZF90ZXN0X2NvdW50KCkgY29uc3Q7CiAKKyAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVk
IHRlc3RzIHRoYXQgd2lsbCBiZSByZXBvcnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJl
cG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8vIEdldHMgdGhlIG51
bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KICAgaW50IGRpc2FibGVk
X3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8g
YmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFibGVfdGVzdF9jb3Vu
dCgpIGNvbnN0OworCiAgIC8vIEdldCB0aGUgbnVtYmVyIG9mIHRlc3RzIGluIHRoaXMgdGVzdCBj
YXNlIHRoYXQgc2hvdWxkIHJ1bi4KICAgaW50IHRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3Q7CiAK
QEAgLTc0Miw2ICs4NzcsMTAgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIHRv
dGFsX3Rlc3RfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMg
TlVMTC4KICAgY29uc3QgVGVzdEluZm8qIEdldFRlc3RJbmZvKGludCBpKSBjb25zdDsKIAorICAv
LyBSZXR1cm5zIHRoZSBUZXN0UmVzdWx0IHRoYXQgaG9sZHMgdGVzdCBwcm9wZXJ0aWVzIHJlY29y
ZGVkIGR1cmluZworICAvLyBleGVjdXRpb24gb2YgU2V0VXBUZXN0Q2FzZSBhbmQgVGVhckRvd25U
ZXN0Q2FzZS4KKyAgY29uc3QgVGVzdFJlc3VsdCYgYWRfaG9jX3Rlc3RfcmVzdWx0KCkgY29uc3Qg
eyByZXR1cm4gYWRfaG9jX3Rlc3RfcmVzdWx0XzsgfQorCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNs
YXNzIFRlc3Q7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsOwpAQCAtNzc2
LDE3ICs5MTUsNDQgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIFJ1bnMgZXZl
cnkgdGVzdCBpbiB0aGlzIFRlc3RDYXNlLgogICB2b2lkIFJ1bigpOwogCisgIC8vIFJ1bnMgU2V0
VXBUZXN0Q2FzZSgpIGZvciB0aGlzIFRlc3RDYXNlLiAgVGhpcyB3cmFwcGVyIGlzIG5lZWRlZAor
ICAvLyBmb3IgY2F0Y2hpbmcgZXhjZXB0aW9ucyB0aHJvd24gZnJvbSBTZXRVcFRlc3RDYXNlKCku
CisgIHZvaWQgUnVuU2V0VXBUZXN0Q2FzZSgpIHsgKCpzZXRfdXBfdGNfKSgpOyB9CisKKyAgLy8g
UnVucyBUZWFyRG93blRlc3RDYXNlKCkgZm9yIHRoaXMgVGVzdENhc2UuICBUaGlzIHdyYXBwZXIg
aXMKKyAgLy8gbmVlZGVkIGZvciBjYXRjaGluZyBleGNlcHRpb25zIHRocm93biBmcm9tIFRlYXJE
b3duVGVzdENhc2UoKS4KKyAgdm9pZCBSdW5UZWFyRG93blRlc3RDYXNlKCkgeyAoKnRlYXJfZG93
bl90Y18pKCk7IH0KKwogICAvLyBSZXR1cm5zIHRydWUgaWZmIHRlc3QgcGFzc2VkLgotICBzdGF0
aWMgYm9vbCBUZXN0UGFzc2VkKGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKTsKKyAgc3RhdGlj
IGJvb2wgVGVzdFBhc3NlZChjb25zdCBUZXN0SW5mbyogdGVzdF9pbmZvKSB7CisgICAgcmV0dXJu
IHRlc3RfaW5mby0+c2hvdWxkX3J1bigpICYmIHRlc3RfaW5mby0+cmVzdWx0KCktPlBhc3NlZCgp
OworICB9CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0IGZhaWxlZC4KLSAgc3RhdGljIGJv
b2wgVGVzdEZhaWxlZChjb25zdCBUZXN0SW5mbyAqIHRlc3RfaW5mbyk7CisgIHN0YXRpYyBib29s
IFRlc3RGYWlsZWQoY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0
X2luZm8tPnNob3VsZF9ydW4oKSAmJiB0ZXN0X2luZm8tPnJlc3VsdCgpLT5GYWlsZWQoKTsKKyAg
fQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgaXMgZGlzYWJsZWQgYW5kIHdpbGwg
YmUgcmVwb3J0ZWQgaW4gdGhlIFhNTAorICAvLyByZXBvcnQuCisgIHN0YXRpYyBib29sIFRlc3RS
ZXBvcnRhYmxlRGlzYWJsZWQoY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVy
biB0ZXN0X2luZm8tPmlzX3JlcG9ydGFibGUoKSAmJiB0ZXN0X2luZm8tPmlzX2Rpc2FibGVkXzsK
KyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGVzdCBpcyBkaXNhYmxlZC4KLSAgc3RhdGlj
IGJvb2wgVGVzdERpc2FibGVkKGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKTsKKyAgc3RhdGlj
IGJvb2wgVGVzdERpc2FibGVkKGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKKyAgICByZXR1
cm4gdGVzdF9pbmZvLT5pc19kaXNhYmxlZF87CisgIH0KKworICAvLyBSZXR1cm5zIHRydWUgaWZm
IHRoaXMgdGVzdCB3aWxsIGFwcGVhciBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgc3RhdGljIGJvb2wg
VGVzdFJlcG9ydGFibGUoY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0
ZXN0X2luZm8tPmlzX3JlcG9ydGFibGUoKTsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0
aGUgZ2l2ZW4gdGVzdCBzaG91bGQgcnVuLgotICBzdGF0aWMgYm9vbCBTaG91bGRSdW5UZXN0KGNv
bnN0IFRlc3RJbmZvICp0ZXN0X2luZm8pOworICBzdGF0aWMgYm9vbCBTaG91bGRSdW5UZXN0KGNv
bnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKKyAgICByZXR1cm4gdGVzdF9pbmZvLT5zaG91bGRf
cnVuKCk7CisgIH0KIAogICAvLyBTaHVmZmxlcyB0aGUgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2Uu
CiAgIHZvaWQgU2h1ZmZsZVRlc3RzKGludGVybmFsOjpSYW5kb20qIHJhbmRvbSk7CkBAIC03OTUs
OSArOTYxLDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdENhc2UgewogICB2b2lkIFVuc2h1ZmZs
ZVRlc3RzKCk7CiAKICAgLy8gTmFtZSBvZiB0aGUgdGVzdCBjYXNlLgotICBpbnRlcm5hbDo6U3Ry
aW5nIG5hbWVfOwotICAvLyBDb21tZW50IG9uIHRoZSB0ZXN0IGNhc2UuCi0gIGludGVybmFsOjpT
dHJpbmcgY29tbWVudF87CisgIHN0ZDo6c3RyaW5nIG5hbWVfOworICAvLyBOYW1lIG9mIHRoZSBw
YXJhbWV0ZXIgdHlwZSwgb3IgTlVMTCBpZiB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEKKyAgLy8g
dHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisgIGNvbnN0IGludGVybmFsOjpzY29wZWRfcHRyPGNv
bnN0IDo6c3RkOjpzdHJpbmc+IHR5cGVfcGFyYW1fOwogICAvLyBUaGUgdmVjdG9yIG9mIFRlc3RJ
bmZvcyBpbiB0aGVpciBvcmlnaW5hbCBvcmRlci4gIEl0IG93bnMgdGhlCiAgIC8vIGVsZW1lbnRz
IGluIHRoZSB2ZWN0b3IuCiAgIHN0ZDo6dmVjdG9yPFRlc3RJbmZvKj4gdGVzdF9pbmZvX2xpc3Rf
OwpAQCAtODEzLDEzICs5ODAsMTYgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIGJv
b2wgc2hvdWxkX3J1bl87CiAgIC8vIEVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBU
aW1lSW5NaWxsaXMgZWxhcHNlZF90aW1lXzsKKyAgLy8gSG9sZHMgdGVzdCBwcm9wZXJ0aWVzIHJl
Y29yZGVkIGR1cmluZyBleGVjdXRpb24gb2YgU2V0VXBUZXN0Q2FzZSBhbmQKKyAgLy8gVGVhckRv
d25UZXN0Q2FzZS4KKyAgVGVzdFJlc3VsdCBhZF9ob2NfdGVzdF9yZXN1bHRfOwogCiAgIC8vIFdl
IGRpc2FsbG93IGNvcHlpbmcgVGVzdENhc2VzLgogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKFRlc3RDYXNlKTsKIH07CiAKIC8vIEFuIEVudmlyb25tZW50IG9iamVjdCBpcyBjYXBh
YmxlIG9mIHNldHRpbmcgdXAgYW5kIHRlYXJpbmcgZG93biBhbgotLy8gZW52aXJvbm1lbnQuICBU
aGUgdXNlciBzaG91bGQgc3ViY2xhc3MgdGhpcyB0byBkZWZpbmUgaGlzIG93bgorLy8gZW52aXJv
bm1lbnQuICBZb3Ugc2hvdWxkIHN1YmNsYXNzIHRoaXMgdG8gZGVmaW5lIHlvdXIgb3duCiAvLyBl
bnZpcm9ubWVudChzKS4KIC8vCiAvLyBBbiBFbnZpcm9ubWVudCBvYmplY3QgZG9lcyB0aGUgc2V0
LXVwIGFuZCB0ZWFyLWRvd24gaW4gdmlydHVhbApAQCAtODQ5LDYgKzEwMTksMTggQEAgY2xhc3Mg
RW52aXJvbm1lbnQgewogICB2aXJ0dWFsIFNldHVwX3Nob3VsZF9iZV9zcGVsbGVkX1NldFVwKiBT
ZXR1cCgpIHsgcmV0dXJuIE5VTEw7IH0KIH07CiAKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwor
CisvLyBFeGNlcHRpb24gd2hpY2ggY2FuIGJlIHRocm93biBmcm9tIFRlc3RFdmVudExpc3RlbmVy
OjpPblRlc3RQYXJ0UmVzdWx0LgorY2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRpb25FeGNlcHRpb24K
KyAgICA6IHB1YmxpYyBpbnRlcm5hbDo6R29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24geworIHB1
YmxpYzoKKyAgZXhwbGljaXQgQXNzZXJ0aW9uRXhjZXB0aW9uKGNvbnN0IFRlc3RQYXJ0UmVzdWx0
JiByZXN1bHQpCisgICAgICA6IEdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uKHJlc3VsdCkge30K
K307CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKKwogLy8gVGhlIGludGVyZmFj
ZSBmb3IgdHJhY2luZyBleGVjdXRpb24gb2YgdGVzdHMuIFRoZSBtZXRob2RzIGFyZSBvcmdhbml6
ZWQgaW4KIC8vIHRoZSBvcmRlciB0aGUgY29ycmVzcG9uZGluZyBldmVudHMgYXJlIGZpcmVkLgog
Y2xhc3MgVGVzdEV2ZW50TGlzdGVuZXIgewpAQCAtODc2LDcgKzEwNTgsOSBAQCBjbGFzcyBUZXN0
RXZlbnRMaXN0ZW5lciB7CiAgIC8vIEZpcmVkIGJlZm9yZSB0aGUgdGVzdCBzdGFydHMuCiAgIHZp
cnR1YWwgdm9pZCBPblRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSA9IDA7CiAK
LSAgLy8gRmlyZWQgYWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VTUygpLgorICAv
LyBGaXJlZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRUVEKCkgaW52b2NhdGlv
bi4KKyAgLy8gSWYgeW91IHdhbnQgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIGZyb20gdGhpcyBmdW5j
dGlvbiB0byBza2lwIHRvIHRoZSBuZXh0CisgIC8vIFRFU1QsIGl0IG11c3QgYmUgQXNzZXJ0aW9u
RXhjZXB0aW9uIGRlZmluZWQgYWJvdmUsIG9yIGluaGVyaXRlZCBmcm9tIGl0LgogICB2aXJ0dWFs
IHZvaWQgT25UZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jl
c3VsdCkgPSAwOwogCiAgIC8vIEZpcmVkIGFmdGVyIHRoZSB0ZXN0IGVuZHMuCkBAIC05NjEsMTAg
KzExNDUsMTAgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0RXZlbnRMaXN0ZW5lcnMgewogCiAgcHJp
dmF0ZToKICAgZnJpZW5kIGNsYXNzIFRlc3RDYXNlOworICBmcmllbmQgY2xhc3MgVGVzdEluZm87
CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6RGVmYXVsdEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVw
b3J0ZXI7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6Tm9FeGVjRGVhdGhUZXN0OwogICBmcmll
bmQgY2xhc3MgaW50ZXJuYWw6OlRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOwotICBmcmllbmQg
Y2xhc3MgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbDsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpV
bml0VGVzdEltcGw7CiAKICAgLy8gUmV0dXJucyByZXBlYXRlciB0aGF0IGJyb2FkY2FzdHMgdGhl
IFRlc3RFdmVudExpc3RlbmVyIGV2ZW50cyB0byBhbGwKQEAgLTEwMzIsMjIgKzEyMTYsMjMgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdCB7CiAKICAgLy8gUmV0dXJucyB0aGUgVGVzdENhc2Ug
b2JqZWN0IGZvciB0aGUgdGVzdCB0aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcsCiAgIC8vIG9yIE5V
TEwgaWYgbm8gdGVzdCBpcyBydW5uaW5nLgotICBjb25zdCBUZXN0Q2FzZSogY3VycmVudF90ZXN0
X2Nhc2UoKSBjb25zdDsKKyAgY29uc3QgVGVzdENhc2UqIGN1cnJlbnRfdGVzdF9jYXNlKCkgY29u
c3QKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4Xyk7CiAKICAgLy8gUmV0dXJucyB0
aGUgVGVzdEluZm8gb2JqZWN0IGZvciB0aGUgdGVzdCB0aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcs
CiAgIC8vIG9yIE5VTEwgaWYgbm8gdGVzdCBpcyBydW5uaW5nLgotICBjb25zdCBUZXN0SW5mbyog
Y3VycmVudF90ZXN0X2luZm8oKSBjb25zdDsKKyAgY29uc3QgVGVzdEluZm8qIGN1cnJlbnRfdGVz
dF9pbmZvKCkgY29uc3QKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4Xyk7CiAKICAg
Ly8gUmV0dXJucyB0aGUgcmFuZG9tIHNlZWQgdXNlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGN1cnJl
bnQgdGVzdCBydW4uCiAgIGludCByYW5kb21fc2VlZCgpIGNvbnN0OwogCi0jaWYgR1RFU1RfSEFT
X1BBUkFNX1RFU1QKICAgLy8gUmV0dXJucyB0aGUgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0
cnkgb2JqZWN0IHVzZWQgdG8ga2VlcCB0cmFjayBvZgogICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVk
IHRlc3RzIGFuZCBpbnN0YW50aWF0ZSBhbmQgcmVnaXN0ZXIgdGhlbS4KICAgLy8KICAgLy8gSU5U
RVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotICBp
bnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkmIHBhcmFtZXRlcml6ZWRfdGVz
dF9yZWdpc3RyeSgpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAorICBpbnRlcm5h
bDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkmIHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdp
c3RyeSgpCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCiAgIC8vIEdldHMg
dGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIHRlc3QgY2FzZXMuCiAgIGludCBzdWNjZXNzZnVsX3Rl
c3RfY2FzZV9jb3VudCgpIGNvbnN0OwpAQCAtMTA2OCwxNSArMTI1MywyNSBAQCBjbGFzcyBHVEVT
VF9BUElfIFVuaXRUZXN0IHsKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cy4K
ICAgaW50IGZhaWxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CiAKKyAgLy8gR2V0cyB0aGUgbnVtYmVy
IG9mIGRpc2FibGVkIHRlc3RzIHRoYXQgd2lsbCBiZSByZXBvcnRlZCBpbiB0aGUgWE1MIHJlcG9y
dC4KKyAgaW50IHJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8v
IEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cy4KICAgaW50IGRpc2FibGVkX3Rlc3Rf
Y291bnQoKSBjb25zdDsKIAorICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJp
bnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNv
bnN0OworCiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdHMuCiAgIGludCB0b3RhbF90
ZXN0X2NvdW50KCkgY29uc3Q7CiAKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRoYXQg
c2hvdWxkIHJ1bi4KICAgaW50IHRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3Q7CiAKKyAgLy8gR2V0
cyB0aGUgdGltZSBvZiB0aGUgdGVzdCBwcm9ncmFtIHN0YXJ0LCBpbiBtcyBmcm9tIHRoZSBzdGFy
dCBvZiB0aGUKKyAgLy8gVU5JWCBlcG9jaC4KKyAgVGltZUluTWlsbGlzIHN0YXJ0X3RpbWVzdGFt
cCgpIGNvbnN0OworCiAgIC8vIEdldHMgdGhlIGVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRz
LgogICBUaW1lSW5NaWxsaXMgZWxhcHNlZF90aW1lKCkgY29uc3Q7CiAKQEAgLTEwOTEsNiArMTI4
NiwxMCBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0IHsKICAgLy8gdG90YWxfdGVzdF9jYXNl
X2NvdW50KCkgLSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCByZXR1cm5zIE5VTEwuCiAg
IGNvbnN0IFRlc3RDYXNlKiBHZXRUZXN0Q2FzZShpbnQgaSkgY29uc3Q7CiAKKyAgLy8gUmV0dXJu
cyB0aGUgVGVzdFJlc3VsdCBjb250YWluaW5nIGluZm9ybWF0aW9uIG9uIHRlc3QgZmFpbHVyZXMg
YW5kCisgIC8vIHByb3BlcnRpZXMgbG9nZ2VkIG91dHNpZGUgb2YgaW5kaXZpZHVhbCB0ZXN0IGNh
c2VzLgorICBjb25zdCBUZXN0UmVzdWx0JiBhZF9ob2NfdGVzdF9yZXN1bHQoKSBjb25zdDsKKwog
ICAvLyBSZXR1cm5zIHRoZSBsaXN0IG9mIGV2ZW50IGxpc3RlbmVycyB0aGF0IGNhbiBiZSB1c2Vk
IHRvIHRyYWNrIGV2ZW50cwogICAvLyBpbnNpZGUgR29vZ2xlIFRlc3QuCiAgIFRlc3RFdmVudExp
c3RlbmVycyYgbGlzdGVuZXJzKCk7CkBAIC0xMTE0LDEyICsxMzEzLDE2IEBAIGNsYXNzIEdURVNU
X0FQSV8gVW5pdFRlc3QgewogICB2b2lkIEFkZFRlc3RQYXJ0UmVzdWx0KFRlc3RQYXJ0UmVzdWx0
OjpUeXBlIHJlc3VsdF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGZpbGVfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZV9udW1iZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyYgbWVzc2FnZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnRlcm5hbDo6U3RyaW5nJiBvc19zdGFj
a190cmFjZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1l
c3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9zX3N0
YWNrX3RyYWNlKQorICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKTsKIAotICAvLyBB
ZGRzIGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0LiBJZiB0
aGUgcmVzdWx0IGFscmVhZHkKLSAgLy8gY29udGFpbnMgYSBwcm9wZXJ0eSB3aXRoIHRoZSBzYW1l
IGtleSwgdGhlIHZhbHVlIHdpbGwgYmUgdXBkYXRlZC4KLSAgdm9pZCBSZWNvcmRQcm9wZXJ0eUZv
ckN1cnJlbnRUZXN0KGNvbnN0IGNoYXIqIGtleSwgY29uc3QgY2hhciogdmFsdWUpOworICAvLyBB
ZGRzIGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0IHdoZW4g
aW52b2tlZCBmcm9tCisgIC8vIGluc2lkZSBhIHRlc3QsIHRvIGN1cnJlbnQgVGVzdENhc2UncyBh
ZF9ob2NfdGVzdF9yZXN1bHRfIHdoZW4gaW52b2tlZAorICAvLyBmcm9tIFNldFVwVGVzdENhc2Ug
b3IgVGVhckRvd25UZXN0Q2FzZSwgb3IgdG8gdGhlIGdsb2JhbCBwcm9wZXJ0eSBzZXQKKyAgLy8g
d2hlbiBpbnZva2VkIGVsc2V3aGVyZS4gIElmIHRoZSByZXN1bHQgYWxyZWFkeSBjb250YWlucyBh
IHByb3BlcnR5IHdpdGgKKyAgLy8gdGhlIHNhbWUga2V5LCB0aGUgdmFsdWUgd2lsbCBiZSB1cGRh
dGVkLgorICB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGNvbnN0
IHN0ZDo6c3RyaW5nJiB2YWx1ZSk7CiAKICAgLy8gR2V0cyB0aGUgaS10aCB0ZXN0IGNhc2UgYW1v
bmcgYWxsIHRoZSB0ZXN0IGNhc2VzLiBpIGNhbiByYW5nZSBmcm9tIDAgdG8KICAgLy8gdG90YWxf
dGVzdF9jYXNlX2NvdW50KCkgLSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCByZXR1cm5z
IE5VTEwuCkBAIC0xMTI5LDE2ICsxMzMyLDE4IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3Qg
ewogICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBpbXBsKCkgeyByZXR1cm4gaW1wbF87IH0KICAg
Y29uc3QgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIGltcGxf
OyB9CiAKLSAgLy8gVGhlc2UgY2xhc3NlcyBhbmQgZnVuY2lvbnMgYXJlIGZyaWVuZHMgYXMgdGhl
eSBuZWVkIHRvIGFjY2VzcyBwcml2YXRlCisgIC8vIFRoZXNlIGNsYXNzZXMgYW5kIGZ1bmN0aW9u
cyBhcmUgZnJpZW5kcyBhcyB0aGV5IG5lZWQgdG8gYWNjZXNzIHByaXZhdGUKICAgLy8gbWVtYmVy
cyBvZiBVbml0VGVzdC4KKyAgZnJpZW5kIGNsYXNzIFNjb3BlZFRyYWNlOwogICBmcmllbmQgY2xh
c3MgVGVzdDsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpBc3NlcnRIZWxwZXI7Ci0gIGZyaWVu
ZCBjbGFzcyBpbnRlcm5hbDo6U2NvcGVkVHJhY2U7CisgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6
U3RyZWFtaW5nTGlzdGVuZXJUZXN0OworICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlVuaXRUZXN0
UmVjb3JkUHJvcGVydHlUZXN0SGVscGVyOwogICBmcmllbmQgRW52aXJvbm1lbnQqIEFkZEdsb2Jh
bFRlc3RFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KTsKICAgZnJpZW5kIGludGVybmFsOjpV
bml0VGVzdEltcGwqIGludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKTsKICAgZnJpZW5kIHZvaWQg
aW50ZXJuYWw6OlJlcG9ydEZhaWx1cmVJblVua25vd25Mb2NhdGlvbigKICAgICAgIFRlc3RQYXJ0
UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAotICAgICAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyYg
bWVzc2FnZSk7CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSk7CiAKICAgLy8gQ3Jl
YXRlcyBhbiBlbXB0eSBVbml0VGVzdC4KICAgVW5pdFRlc3QoKTsKQEAgLTExNDgsMTAgKzEzNTMs
MTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdCB7CiAKICAgLy8gUHVzaGVzIGEgdHJhY2Ug
ZGVmaW5lZCBieSBTQ09QRURfVFJBQ0UoKSBvbiB0byB0aGUgcGVyLXRocmVhZAogICAvLyBHb29n
bGUgVGVzdCB0cmFjZSBzdGFjay4KLSAgdm9pZCBQdXNoR1Rlc3RUcmFjZShjb25zdCBpbnRlcm5h
bDo6VHJhY2VJbmZvJiB0cmFjZSk7CisgIHZvaWQgUHVzaEdUZXN0VHJhY2UoY29uc3QgaW50ZXJu
YWw6OlRyYWNlSW5mbyYgdHJhY2UpCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8p
OwogCiAgIC8vIFBvcHMgYSB0cmFjZSBmcm9tIHRoZSBwZXItdGhyZWFkIEdvb2dsZSBUZXN0IHRy
YWNlIHN0YWNrLgotICB2b2lkIFBvcEdUZXN0VHJhY2UoKTsKKyAgdm9pZCBQb3BHVGVzdFRyYWNl
KCkKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4Xyk7CiAKICAgLy8gUHJvdGVjdHMg
bXV0YWJsZSBzdGF0ZSBpbiAqaW1wbF8uICBUaGlzIGlzIG11dGFibGUgYXMgc29tZSBjb25zdAog
ICAvLyBtZXRob2RzIG5lZWQgdG8gbG9jayBpdCB0b28uCkBAIC0xMjA2LDgyICsxNDEzLDQwIEBA
IEdURVNUX0FQSV8gdm9pZCBJbml0R29vZ2xlVGVzdChpbnQqIGFyZ2MsIHdjaGFyX3QqKiBhcmd2
KTsKIAogbmFtZXNwYWNlIGludGVybmFsIHsKIAotLy8gVGhlc2Ugb3ZlcmxvYWRlZCB2ZXJzaW9u
cyBoYW5kbGUgOjpzdGQ6OnN0cmluZyBhbmQgOjpzdGQ6OndzdHJpbmcuCi1HVEVTVF9BUElfIGlu
bGluZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3QgOjpzdGQ6OnN0cmluZyYg
c3RyKSB7Ci0gIHJldHVybiAoTWVzc2FnZSgpIDw8ICciJyA8PCBzdHIgPDwgJyInKS5HZXRTdHJp
bmcoKTsKLX0KLQotI2lmIEdURVNUX0hBU19TVERfV1NUUklORwotR1RFU1RfQVBJXyBpbmxpbmUg
U3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKGNvbnN0IDo6c3RkOjp3c3RyaW5nJiB3c3Ry
KSB7Ci0gIHJldHVybiAoTWVzc2FnZSgpIDw8ICJMXCIiIDw8IHdzdHIgPDwgJyInKS5HZXRTdHJp
bmcoKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RSSU5HCi0KLS8vIFRoZXNlIG92
ZXJsb2FkZWQgdmVyc2lvbnMgaGFuZGxlIDo6c3RyaW5nIGFuZCA6OndzdHJpbmcuCi0jaWYgR1RF
U1RfSEFTX0dMT0JBTF9TVFJJTkcKLUdURVNUX0FQSV8gaW5saW5lIFN0cmluZyBGb3JtYXRGb3JG
YWlsdXJlTWVzc2FnZShjb25zdCA6OnN0cmluZyYgc3RyKSB7Ci0gIHJldHVybiAoTWVzc2FnZSgp
IDw8ICciJyA8PCBzdHIgPDwgJyInKS5HZXRTdHJpbmcoKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX0dMT0JBTF9TVFJJTkcKLQotI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotR1RFU1Rf
QVBJXyBpbmxpbmUgU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKGNvbnN0IDo6d3N0cmlu
ZyYgd3N0cikgewotICByZXR1cm4gKE1lc3NhZ2UoKSA8PCAiTFwiIiA8PCB3c3RyIDw8ICciJyku
R2V0U3RyaW5nKCk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotCi0v
LyBGb3JtYXRzIGEgY29tcGFyaXNvbiBhc3NlcnRpb24gKGUuZy4gQVNTRVJUX0VRLCBFWFBFQ1Rf
TFQsIGFuZCBldGMpCi0vLyBvcGVyYW5kIHRvIGJlIHVzZWQgaW4gYSBmYWlsdXJlIG1lc3NhZ2Uu
ICBUaGUgdHlwZSAoYnV0IG5vdCB2YWx1ZSkKLS8vIG9mIHRoZSBvdGhlciBvcGVyYW5kIG1heSBh
ZmZlY3QgdGhlIGZvcm1hdC4gIFRoaXMgYWxsb3dzIHVzIHRvCi0vLyBwcmludCBhIGNoYXIqIGFz
IGEgcmF3IHBvaW50ZXIgd2hlbiBpdCBpcyBjb21wYXJlZCBhZ2FpbnN0IGFub3RoZXIKLS8vIGNo
YXIqLCBhbmQgcHJpbnQgaXQgYXMgYSBDIHN0cmluZyB3aGVuIGl0IGlzIGNvbXBhcmVkIGFnYWlu
c3QgYW4KLS8vIHN0ZDo6c3RyaW5nIG9iamVjdCwgZm9yIGV4YW1wbGUuCi0vLwotLy8gVGhlIGRl
ZmF1bHQgaW1wbGVtZW50YXRpb24gaWdub3JlcyB0aGUgdHlwZSBvZiB0aGUgb3RoZXIgb3BlcmFu
ZC4KLS8vIFNvbWUgc3BlY2lhbGl6ZWQgdmVyc2lvbnMgYXJlIHVzZWQgdG8gaGFuZGxlIGZvcm1h
dHRpbmcgd2lkZSBvcgotLy8gbmFycm93IEMgc3RyaW5ncy4KLS8vCi0vLyBJTlRFUk5BTCBJTVBM
RU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCisvLyBTZXBhcmF0ZSB0
aGUgZXJyb3IgZ2VuZXJhdGluZyBjb2RlIGZyb20gdGhlIGNvZGUgcGF0aCB0byByZWR1Y2UgdGhl
IHN0YWNrCisvLyBmcmFtZSBzaXplIG9mIENtcEhlbHBlckVRLiBUaGlzIGhlbHBzIHJlZHVjZSB0
aGUgb3ZlcmhlYWQgb2Ygc29tZSBzYW5pdGl6ZXJzCisvLyB3aGVuIGNhbGxpbmcgRVhQRUNUXyog
aW4gYSB0aWdodCBsb29wLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLVN0
cmluZyBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoY29uc3QgVDEmIHZhbHVlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgLyogb3Ro
ZXJfb3BlcmFuZCAqLykgewotICByZXR1cm4gRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UodmFsdWUp
OworQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRRmFpbHVyZShjb25zdCBjaGFyKiBsaHNfZXhw
cmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
cmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFQxJiBsaHMsIGNvbnN0IFQyJiByaHMpIHsKKyAgcmV0dXJuIEVxRmFpbHVyZShsaHNfZXhwcmVz
c2lvbiwKKyAgICAgICAgICAgICAgICAgICByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAg
ICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UobGhzLCByaHMpLAorICAgICAg
ICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShyaHMsIGxocyks
CisgICAgICAgICAgICAgICAgICAgZmFsc2UpOwogfQogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9u
IGZvciB7QVNTRVJUfEVYUEVDVH1fRVEuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyPgotQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4
cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFs
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGV4cGVj
dGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiBhY3R1YWwpIHsKLSNp
ZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpICAgICAgICAgIC8vIFNhdmVzIHRo
ZSBjdXJyZW50IHdhcm5pbmcgc3RhdGUuCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0Mzg5KSAg
Ly8gVGVtcG9yYXJpbHkgZGlzYWJsZXMgd2FybmluZyBvbgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaC4KLSNlbmRpZgotCi0gIGlmIChl
eHBlY3RlZCA9PSBhY3R1YWwpIHsKK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJFUShjb25zdCBj
aGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
MSYgbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiByaHMpIHsKKyAg
aWYgKGxocyA9PSByaHMpIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9CiAK
LSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHBvcCkgICAgICAgICAgLy8gUmVzdG9y
ZXMgdGhlIHdhcm5pbmcgc3RhdGUuCi0jZW5kaWYKLQotICByZXR1cm4gRXFGYWlsdXJlKGV4cGVj
dGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgYWN0dWFsX2V4cHJlc3Npb24sCi0g
ICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKGV4cGVj
dGVkLCBhY3R1YWwpLAotICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWls
dXJlTWVzc2FnZShhY3R1YWwsIGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAgICAgICBmYWxzZSk7
CisgIHJldHVybiBDbXBIZWxwZXJFUUZhaWx1cmUobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNz
aW9uLCBsaHMsIHJocyk7CiB9CiAKIC8vIFdpdGggdGhpcyBvdmVybG9hZGVkIHZlcnNpb24sIHdl
IGFsbG93IGFub255bW91cyBlbnVtcyB0byBiZSB1c2VkCiAvLyBpbiB7QVNTRVJUfEVYUEVDVH1f
RVEgd2hlbiBjb21waWxlZCB3aXRoIGdjYyA0LCBhcyBhbm9ueW1vdXMgZW51bXMKIC8vIGNhbiBi
ZSBpbXBsaWNpdGx5IGNhc3QgdG8gQmlnZ2VzdEludC4KLUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVz
dWx0IENtcEhlbHBlckVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVz
c2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQg
ZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0
SW50IGFjdHVhbCk7CitHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJFUShjb25z
dCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBsaHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IHJocyk7CiAKIC8vIFRoZSBoZWxwZXIgY2xhc3Mg
Zm9yIHtBU1NFUlR8RVhQRUNUfV9FUS4gIFRoZSB0ZW1wbGF0ZSBhcmd1bWVudAogLy8gbGhzX2lz
X251bGxfbGl0ZXJhbCBpcyB0cnVlIGlmZiB0aGUgZmlyc3QgYXJndW1lbnQgdG8gQVNTRVJUX0VR
KCkKQEAgLTEyOTIsMTIgKzE0NTcsMTEgQEAgY2xhc3MgRXFIZWxwZXIgewogIHB1YmxpYzoKICAg
Ly8gVGhpcyB0ZW1wbGF0aXplZCB2ZXJzaW9uIGlzIGZvciB0aGUgZ2VuZXJhbCBjYXNlLgogICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICBzdGF0aWMgQXNzZXJ0aW9uUmVz
dWx0IENvbXBhcmUoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGV4cGVjdGVkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDImIGFjdHVhbCkgewotICAgIHJldHVy
biBDbXBIZWxwZXJFUShleHBlY3RlZF9leHByZXNzaW9uLCBhY3R1YWxfZXhwcmVzc2lvbiwgZXhw
ZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbCk7CisgIHN0YXRpYyBBc3NlcnRp
b25SZXN1bHQgQ29tcGFyZShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGxocywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiByaHMpIHsKKyAgICByZXR1cm4gQ21wSGVscGVy
RVEobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7CiAgIH0KIAogICAv
LyBXaXRoIHRoaXMgb3ZlcmxvYWRlZCB2ZXJzaW9uLCB3ZSBhbGxvdyBhbm9ueW1vdXMgZW51bXMg
dG8gYmUgdXNlZApAQCAtMTMwNiwxNyArMTQ3MCwxNiBAQCBjbGFzcyBFcUhlbHBlciB7CiAgIC8v
CiAgIC8vIEV2ZW4gdGhvdWdoIGl0cyBib2R5IGxvb2tzIHRoZSBzYW1lIGFzIHRoZSBhYm92ZSB2
ZXJzaW9uLCB3ZQogICAvLyBjYW5ub3QgbWVyZ2UgdGhlIHR3bywgYXMgaXQgd2lsbCBtYWtlIGFu
b255bW91cyBlbnVtcyB1bmhhcHB5LgotICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUo
Y29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgYWN0dWFsKSB7Ci0gICAgcmV0dXJuIENtcEhlbHBl
ckVRKGV4cGVjdGVkX2V4cHJlc3Npb24sIGFjdHVhbF9leHByZXNzaW9uLCBleHBlY3RlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgYWN0dWFsKTsKKyAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBD
b21wYXJlKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGxocywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJpZ2dlc3RJbnQgcmhzKSB7CisgICAgcmV0dXJuIENtcEhlbHBlckVRKGxoc19l
eHByZXNzaW9uLCByaHNfZXhwcmVzc2lvbiwgbGhzLCByaHMpOwogICB9CiB9OwogCiAvLyBUaGlz
IHNwZWNpYWxpemF0aW9uIGlzIHVzZWQgd2hlbiB0aGUgZmlyc3QgYXJndW1lbnQgdG8gQVNTRVJU
X0VRKCkKLS8vIGlzIGEgbnVsbCBwb2ludGVyIGxpdGVyYWwuCisvLyBpcyBhIG51bGwgcG9pbnRl
ciBsaXRlcmFsLCBsaWtlIE5VTEwsIGZhbHNlLCBvciAwLgogdGVtcGxhdGUgPD4KIGNsYXNzIEVx
SGVscGVyPHRydWU+IHsKICBwdWJsaWM6CkBAIC0xMzI1LDI3ICsxNDg4LDUzIEBAIGNsYXNzIEVx
SGVscGVyPHRydWU+IHsKICAgLy8gTk9UIGEgcG9pbnRlciwgZS5nLiBBU1NFUlRfRVEoMCwgQW5J
bnRGdW5jdGlvbigpKSBvcgogICAvLyBFWFBFQ1RfRVEoZmFsc2UsIGFfYm9vbCkuCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gIHN0YXRpYyBBc3NlcnRpb25SZXN1bHQg
Q29tcGFyZShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgZXhwZWN0ZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgYWN0dWFsKSB7Ci0gICAgcmV0dXJuIENt
cEhlbHBlckVRKGV4cGVjdGVkX2V4cHJlc3Npb24sIGFjdHVhbF9leHByZXNzaW9uLCBleHBlY3Rl
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsKTsKKyAgc3RhdGljIEFzc2VydGlvblJl
c3VsdCBDb21wYXJlKAorICAgICAgY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICBj
b25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgIGNvbnN0IFQxJiBsaHMsCisgICAgICBj
b25zdCBUMiYgcmhzLAorICAgICAgLy8gVGhlIGZvbGxvd2luZyBsaW5lIHByZXZlbnRzIHRoaXMg
b3ZlcmxvYWQgZnJvbSBiZWluZyBjb25zaWRlcmVkIGlmIFQyCisgICAgICAvLyBpcyBub3QgYSBw
b2ludGVyIHR5cGUuICBXZSBuZWVkIHRoaXMgYmVjYXVzZSBBU1NFUlRfRVEoTlVMTCwgbXlfcHRy
KQorICAgICAgLy8gZXhwYW5kcyB0byBDb21wYXJlKCIiLCAiIiwgTlVMTCwgbXlfcHRyKSwgd2hp
Y2ggcmVxdWlyZXMgYSBjb252ZXJzaW9uCisgICAgICAvLyB0byBtYXRjaCB0aGUgU2VjcmV0KiBp
biB0aGUgb3RoZXIgb3ZlcmxvYWQsIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBtYWtlCisgICAgICAv
LyB0aGlzIHRlbXBsYXRlIG1hdGNoIGJldHRlci4KKyAgICAgIHR5cGVuYW1lIEVuYWJsZUlmPCFp
c19wb2ludGVyPFQyPjo6dmFsdWU+Ojp0eXBlKiA9IDApIHsKKyAgICByZXR1cm4gQ21wSGVscGVy
RVEobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7CiAgIH0KIAotICAv
LyBUaGlzIHZlcnNpb24gd2lsbCBiZSBwaWNrZWQgd2hlbiB0aGUgc2Vjb25kIGFyZ3VtZW50IHRv
Ci0gIC8vIEFTU0VSVF9FUSgpIGlzIGEgcG9pbnRlciwgZS5nLiBBU1NFUlRfRVEoTlVMTCwgYV9w
b2ludGVyKS4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgc3RhdGlj
IEFzc2VydGlvblJlc3VsdCBDb21wYXJlKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhw
cmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiAvKiBl
eHBlY3RlZCAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQyKiBhY3R1YWwp
IHsKLSAgICAvLyBXZSBhbHJlYWR5IGtub3cgdGhhdCAnZXhwZWN0ZWQnIGlzIGEgbnVsbCBwb2lu
dGVyLgotICAgIHJldHVybiBDbXBIZWxwZXJFUShleHBlY3RlZF9leHByZXNzaW9uLCBhY3R1YWxf
ZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VDIqPihOVUxM
KSwgYWN0dWFsKTsKKyAgLy8gVGhpcyB2ZXJzaW9uIHdpbGwgYmUgcGlja2VkIHdoZW4gdGhlIHNl
Y29uZCBhcmd1bWVudCB0byBBU1NFUlRfRVEoKSBpcyBhCisgIC8vIHBvaW50ZXIsIGUuZy4gQVNT
RVJUX0VRKE5VTEwsIGFfcG9pbnRlcikuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGF0
aWMgQXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUoCisgICAgICBjb25zdCBjaGFyKiBsaHNfZXhwcmVz
c2lvbiwKKyAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgLy8gV2UgdXNl
ZCB0byBoYXZlIGEgc2Vjb25kIHRlbXBsYXRlIHBhcmFtZXRlciBpbnN0ZWFkIG9mIFNlY3JldCou
ICBUaGF0CisgICAgICAvLyB0ZW1wbGF0ZSBwYXJhbWV0ZXIgd291bGQgZGVkdWNlIHRvICdsb25n
JywgbWFraW5nIHRoaXMgYSBiZXR0ZXIgbWF0Y2gKKyAgICAgIC8vIHRoYW4gdGhlIGZpcnN0IG92
ZXJsb2FkIGV2ZW4gd2l0aG91dCB0aGUgZmlyc3Qgb3ZlcmxvYWQncyBFbmFibGVJZi4KKyAgICAg
IC8vIFVuZm9ydHVuYXRlbHksIGdjYyB3aXRoIC1XY29udmVyc2lvbi1udWxsIHdhcm5zIHdoZW4g
InBhc3NpbmcgTlVMTCB0bworICAgICAgLy8gbm9uLXBvaW50ZXIgYXJndW1lbnQiIChldmVuIGEg
ZGVkdWNlZCBpbnRlZ3JhbCBhcmd1bWVudCksIHNvIHRoZSBvbGQKKyAgICAgIC8vIGltcGxlbWVu
dGF0aW9uIGNhdXNlZCB3YXJuaW5ncyBpbiB1c2VyIGNvZGUuCisgICAgICBTZWNyZXQqIC8qIGxo
cyAoTlVMTCkgKi8sCisgICAgICBUKiByaHMpIHsKKyAgICAvLyBXZSBhbHJlYWR5IGtub3cgdGhh
dCAnbGhzJyBpcyBhIG51bGwgcG9pbnRlci4KKyAgICByZXR1cm4gQ21wSGVscGVyRVEobGhzX2V4
cHJlc3Npb24sIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxUKj4oTlVMTCksIHJocyk7CiAgIH0KIH07CiAKKy8vIFNlcGFyYXRlIHRoZSBlcnJvciBn
ZW5lcmF0aW5nIGNvZGUgZnJvbSB0aGUgY29kZSBwYXRoIHRvIHJlZHVjZSB0aGUgc3RhY2sKKy8v
IGZyYW1lIHNpemUgb2YgQ21wSGVscGVyT1AuIFRoaXMgaGVscHMgcmVkdWNlIHRoZSBvdmVyaGVh
ZCBvZiBzb21lIHNhbml0aXplcnMKKy8vIHdoZW4gY2FsbGluZyBFWFBFQ1RfT1AgaW4gYSB0aWdo
dCBsb29wLgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK0Fzc2VydGlvblJl
c3VsdCBDbXBIZWxwZXJPcEZhaWx1cmUoY29uc3QgY2hhciogZXhwcjEsIGNvbnN0IGNoYXIqIGV4
cHIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgdmFsMSwg
Y29uc3QgVDImIHZhbDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIG9wKSB7CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgICAgIDw8ICJF
eHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgIiA8PCBvcCA8PCAiICgiIDw8IGV4cHIyCisgICAg
ICAgICA8PCAiKSwgYWN0dWFsOiAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2Fn
ZSh2YWwxLCB2YWwyKQorICAgICAgICAgPDwgIiB2cyAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZSh2YWwyLCB2YWwxKTsKK30KKwogLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50
aW5nIHRoZSBoZWxwZXIgZnVuY3Rpb25zIG5lZWRlZCB0byBpbXBsZW1lbnQKIC8vIEFTU0VSVF8/
PyBhbmQgRVhQRUNUXz8/LiAgSXQgaXMgaGVyZSBqdXN0IHRvIGF2b2lkIGNvcHktYW5kLXBhc3Rl
CiAvLyBvZiBzaW1pbGFyIGNvZGUuCkBAIC0xMzU2LDYgKzE1NDUsNyBAQCBjbGFzcyBFcUhlbHBl
cjx0cnVlPiB7CiAvLyB3aXRoIGdjYyA0LgogLy8KIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9O
IC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KKwogI2RlZmluZSBHVEVTVF9JTVBMX0NN
UF9IRUxQRVJfKG9wX25hbWUsIG9wKVwKIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDI+XAogQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlciMjb3BfbmFtZShjb25zdCBjaGFyKiBleHBy
MSwgY29uc3QgY2hhciogZXhwcjIsIFwKQEAgLTEzNjMsMTEgKzE1NTMsNyBAQCBBc3NlcnRpb25S
ZXN1bHQgQ21wSGVscGVyIyNvcF9uYW1lKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFyKiBl
eHByMiwgXAogICBpZiAodmFsMSBvcCB2YWwyKSB7XAogICAgIHJldHVybiBBc3NlcnRpb25TdWNj
ZXNzKCk7XAogICB9IGVsc2Uge1wKLSAgICBNZXNzYWdlIG1zZztcCi0gICAgbXNnIDw8ICJFeHBl
Y3RlZDogKCIgPDwgZXhwcjEgPDwgIikgIiAjb3AgIiAoIiA8PCBleHByMlwKLSAgICAgICAgPDwg
IiksIGFjdHVhbDogIiA8PCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UodmFsMSwg
dmFsMilcCi0gICAgICAgIDw8ICIgdnMgIiA8PCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2UodmFsMiwgdmFsMSk7XAotICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7XAor
ICAgIHJldHVybiBDbXBIZWxwZXJPcEZhaWx1cmUoZXhwcjEsIGV4cHIyLCB2YWwxLCB2YWwyLCAj
b3ApO1wKICAgfVwKIH1cCiBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXIjI29w
X25hbWUoXApAQCAtMTM4MCwyOSArMTU2NiwyOSBAQCBHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKE5F
LCAhPSk7CiAvLyBJbXBsZW1lbnRzIHRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQ
RUNUfV9MRQogR1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhMRSwgPD0pOwogLy8gSW1wbGVtZW50cyB0
aGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fTFQKLUdURVNUX0lNUExfQ01Q
X0hFTFBFUl8oTFQsIDwgKTsKK0dURVNUX0lNUExfQ01QX0hFTFBFUl8oTFQsIDwpOwogLy8gSW1w
bGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fR0UKIEdURVNU
X0lNUExfQ01QX0hFTFBFUl8oR0UsID49KTsKIC8vIEltcGxlbWVudHMgdGhlIGhlbHBlciBmdW5j
dGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X0dUCi1HVEVTVF9JTVBMX0NNUF9IRUxQRVJfKEdULCA+
ICk7CitHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKEdULCA+KTsKIAogI3VuZGVmIEdURVNUX0lNUExf
Q01QX0hFTFBFUl8KIAogLy8gVGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9
X1NUUkVRLgogLy8KIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBB
IFVTRVIgUFJPR1JBTS4KLUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVR
KGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
YWN0dWFsKTsKK0dURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0
IGNoYXIqIHMxX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBzMl9leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMik7CiAKIC8vIFRoZSBoZWxwZXIg
ZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9TVFJDQVNFRVEuCiAvLwogLy8gSU5URVJOQUwg
SU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotR1RFU1RfQVBJ
XyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSQ0FTRUVRKGNvbnN0IGNoYXIqIGV4cGVjdGVk
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsKTsK
K0dURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VFUShjb25zdCBjaGFy
KiBzMV9leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHMyX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczIpOwogCiAvLyBUaGUg
aGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fU1RSTkUuCiAvLwpAQCAtMTQyNCwx
MCArMTYxMCwxMCBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJDQVNF
TkUoY29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgKl9T
VFJFUSBvbiB3aWRlIHN0cmluZ3MuCiAvLwogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBE
TyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQg
Q21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHBy
ZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
d2NoYXJfdCogZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB3Y2hhcl90KiBhY3R1YWwpOworR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQg
Q21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMyX2V4cHJlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiBz
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFy
X3QqIHMyKTsKIAogLy8gSGVscGVyIGZ1bmN0aW9uIGZvciAqX1NUUk5FIG9uIHdpZGUgc3RyaW5n
cy4KIC8vCkBAIC0xNDg1LDI4ICsxNjcxLDI4IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLwog
Ly8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFN
LgogdGVtcGxhdGUgPHR5cGVuYW1lIFJhd1R5cGU+Ci1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVy
RmxvYXRpbmdQb2ludEVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHBy
ZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdUeXBl
IGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdU
eXBlIGFjdHVhbCkgewotICBjb25zdCBGbG9hdGluZ1BvaW50PFJhd1R5cGU+IGxocyhleHBlY3Rl
ZCksIHJocyhhY3R1YWwpOworQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckZsb2F0aW5nUG9pbnRF
UShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhd1R5cGUgbGhzX3ZhbHVlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdUeXBlIHJoc192YWx1ZSkgeworICBj
b25zdCBGbG9hdGluZ1BvaW50PFJhd1R5cGU+IGxocyhsaHNfdmFsdWUpLCByaHMocmhzX3ZhbHVl
KTsKIAogICBpZiAobGhzLkFsbW9zdEVxdWFscyhyaHMpKSB7CiAgICAgcmV0dXJuIEFzc2VydGlv
blN1Y2Nlc3MoKTsKICAgfQogCi0gIFN0clN0cmVhbSBleHBlY3RlZF9zczsKLSAgZXhwZWN0ZWRf
c3MgPDwgc3RkOjpzZXRwcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxSYXdUeXBlPjo6ZGln
aXRzMTAgKyAyKQotICAgICAgICAgICAgICA8PCBleHBlY3RlZDsKKyAgOjpzdGQ6OnN0cmluZ3N0
cmVhbSBsaHNfc3M7CisgIGxoc19zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNf
bGltaXRzPFJhd1R5cGU+OjpkaWdpdHMxMCArIDIpCisgICAgICAgICA8PCBsaHNfdmFsdWU7CiAK
LSAgU3RyU3RyZWFtIGFjdHVhbF9zczsKLSAgYWN0dWFsX3NzIDw8IHN0ZDo6c2V0cHJlY2lzaW9u
KHN0ZDo6bnVtZXJpY19saW1pdHM8UmF3VHlwZT46OmRpZ2l0czEwICsgMikKLSAgICAgICAgICAg
IDw8IGFjdHVhbDsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSByaHNfc3M7CisgIHJoc19zcyA8PCBz
dGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+OjpkaWdpdHMxMCAr
IDIpCisgICAgICAgICA8PCByaHNfdmFsdWU7CiAKLSAgcmV0dXJuIEVxRmFpbHVyZShleHBlY3Rl
ZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIGFjdHVhbF9leHByZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgIFN0clN0cmVhbVRvU3RyaW5nKCZleHBlY3RlZF9zcyksCi0gICAgICAg
ICAgICAgICAgICAgU3RyU3RyZWFtVG9TdHJpbmcoJmFjdHVhbF9zcyksCisgIHJldHVybiBFcUZh
aWx1cmUobGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24s
CisgICAgICAgICAgICAgICAgICAgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJmxoc19zcyksCisgICAg
ICAgICAgICAgICAgICAgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnJoc19zcyksCiAgICAgICAgICAg
ICAgICAgICAgZmFsc2UpOwogfQogCkBAIC0xNTQ4LDkgKzE3MzQsOSBAQCBjbGFzcyBHVEVTVF9B
UElfIEFzc2VydEhlbHBlciB7CiAgICAgICAgIDogdHlwZSh0KSwgZmlsZShzcmNmaWxlKSwgbGlu
ZShsaW5lX251bSksIG1lc3NhZ2UobXNnKSB7IH0KIAogICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBl
IGNvbnN0IHR5cGU7Ci0gICAgY29uc3QgY2hhciogICAgICAgIGNvbnN0IGZpbGU7Ci0gICAgaW50
ICAgICAgICAgICAgICAgIGNvbnN0IGxpbmU7Ci0gICAgU3RyaW5nICAgICAgICAgICAgIGNvbnN0
IG1lc3NhZ2U7CisgICAgY29uc3QgY2hhciogY29uc3QgZmlsZTsKKyAgICBpbnQgY29uc3QgbGlu
ZTsKKyAgICBzdGQ6OnN0cmluZyBjb25zdCBtZXNzYWdlOwogCiAgICBwcml2YXRlOgogICAgIEdU
RVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQXNzZXJ0SGVscGVyRGF0YSk7CkBAIC0xNTYz
LDEwICsxNzQ5LDEzIEBAIGNsYXNzIEdURVNUX0FQSV8gQXNzZXJ0SGVscGVyIHsKIAogfSAgLy8g
bmFtZXNwYWNlIGludGVybmFsCiAKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotLy8gVGhlIGFi
c3RyYWN0IGJhc2UgY2xhc3MgdGhhdCBhbGwgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBpbmhl
cml0IGZyb20uCisvLyBUaGUgcHVyZSBpbnRlcmZhY2UgY2xhc3MgdGhhdCBhbGwgdmFsdWUtcGFy
YW1ldGVyaXplZCB0ZXN0cyBpbmhlcml0IGZyb20uCisvLyBBIHZhbHVlLXBhcmFtZXRlcml6ZWQg
Y2xhc3MgbXVzdCBpbmhlcml0IGZyb20gYm90aCA6OnRlc3Rpbmc6OlRlc3QgYW5kCisvLyA6OnRl
c3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZS4gSW4gbW9zdCBjYXNlcyB0aGF0IGp1c3QgbWVhbnMg
aW5oZXJpdGluZworLy8gZnJvbSA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW0sIGJ1dCBtb3JlIGNv
bXBsaWNhdGVkIHRlc3QgaGllcmFyY2hpZXMKKy8vIG1heSBuZWVkIHRvIGluaGVyaXQgZnJvbSBU
ZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UgYXQgZGlmZmVyZW50IGxldmVscy4KIC8vCi0vLyBU
aGlzIGNsYXNzIGFkZHMgc3VwcG9ydCBmb3IgYWNjZXNzaW5nIHRoZSB0ZXN0IHBhcmFtZXRlciB2
YWx1ZSB2aWEKKy8vIFRoaXMgaW50ZXJmYWNlIGhhcyBzdXBwb3J0IGZvciBhY2Nlc3NpbmcgdGhl
IHRlc3QgcGFyYW1ldGVyIHZhbHVlIHZpYQogLy8gdGhlIEdldFBhcmFtKCkgbWV0aG9kLgogLy8K
IC8vIFVzZSBpdCB3aXRoIG9uZSBvZiB0aGUgcGFyYW1ldGVyIGdlbmVyYXRvciBkZWZpbmluZyBm
dW5jdGlvbnMsIGxpa2UgUmFuZ2UoKSwKQEAgLTE1OTUsMTMgKzE3ODQsMjIgQEAgY2xhc3MgR1RF
U1RfQVBJXyBBc3NlcnRIZWxwZXIgewogLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoT25lVG9U
ZW5SYW5nZSwgRm9vVGVzdCwgOjp0ZXN0aW5nOjpSYW5nZSgxLCAxMCkpOwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLWNsYXNzIFRlc3RXaXRoUGFyYW0gOiBwdWJsaWMgVGVzdCB7CitjbGFzcyBX
aXRoUGFyYW1JbnRlcmZhY2UgewogIHB1YmxpYzoKICAgdHlwZWRlZiBUIFBhcmFtVHlwZTsKKyAg
dmlydHVhbCB+V2l0aFBhcmFtSW50ZXJmYWNlKCkge30KIAogICAvLyBUaGUgY3VycmVudCBwYXJh
bWV0ZXIgdmFsdWUuIElzIGFsc28gYXZhaWxhYmxlIGluIHRoZSB0ZXN0IGZpeHR1cmUncwotICAv
LyBjb25zdHJ1Y3Rvci4KLSAgY29uc3QgUGFyYW1UeXBlJiBHZXRQYXJhbSgpIGNvbnN0IHsgcmV0
dXJuICpwYXJhbWV0ZXJfOyB9CisgIC8vIGNvbnN0cnVjdG9yLiBUaGlzIG1lbWJlciBmdW5jdGlv
biBpcyBub24tc3RhdGljLCBldmVuIHRob3VnaCBpdCBvbmx5CisgIC8vIHJlZmVyZW5jZXMgc3Rh
dGljIGRhdGEsIHRvIHJlZHVjZSB0aGUgb3Bwb3J0dW5pdHkgZm9yIGluY29ycmVjdCB1c2VzCisg
IC8vIGxpa2Ugd3JpdGluZyAnV2l0aFBhcmFtSW50ZXJmYWNlPGJvb2w+OjpHZXRQYXJhbSgpJyBm
b3IgYSB0ZXN0IHRoYXQKKyAgLy8gdXNlcyBhIGZpeHR1cmUgd2hvc2UgcGFyYW1ldGVyIHR5cGUg
aXMgaW50LgorICBjb25zdCBQYXJhbVR5cGUmIEdldFBhcmFtKCkgY29uc3QgeworICAgIEdURVNU
X0NIRUNLXyhwYXJhbWV0ZXJfICE9IE5VTEwpCisgICAgICAgIDw8ICJHZXRQYXJhbSgpIGNhbiBv
bmx5IGJlIGNhbGxlZCBpbnNpZGUgYSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QgIgorICAgICAg
ICA8PCAiLS0gZGlkIHlvdSBpbnRlbmQgdG8gd3JpdGUgVEVTVF9QIGluc3RlYWQgb2YgVEVTVF9G
PyI7CisgICAgcmV0dXJuICpwYXJhbWV0ZXJfOworICB9CiAKICBwcml2YXRlOgogICAvLyBTZXRz
IHBhcmFtZXRlciB2YWx1ZS4gVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgbWFraW5nIHN1
cmUgdGhlIHZhbHVlCkBAIC0xNjEzLDE0ICsxODExLDE5IEBAIGNsYXNzIFRlc3RXaXRoUGFyYW0g
OiBwdWJsaWMgVGVzdCB7CiAgIC8vIFN0YXRpYyB2YWx1ZSB1c2VkIGZvciBhY2Nlc3NpbmcgcGFy
YW1ldGVyIGR1cmluZyBhIHRlc3QgbGlmZXRpbWUuCiAgIHN0YXRpYyBjb25zdCBQYXJhbVR5cGUq
IHBhcmFtZXRlcl87CiAKLSAgLy8gVGVzdENsYXNzIG11c3QgYmUgYSBzdWJjbGFzcyBvZiBUZXN0
V2l0aFBhcmFtPFQ+LgorICAvLyBUZXN0Q2xhc3MgbXVzdCBiZSBhIHN1YmNsYXNzIG9mIFdpdGhQ
YXJhbUludGVyZmFjZTxUPiBhbmQgVGVzdC4KICAgdGVtcGxhdGUgPGNsYXNzIFRlc3RDbGFzcz4g
ZnJpZW5kIGNsYXNzIGludGVybmFsOjpQYXJhbWV0ZXJpemVkVGVzdEZhY3Rvcnk7CiB9OwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRl
cl8gPSBOVUxMOworY29uc3QgVCogV2l0aFBhcmFtSW50ZXJmYWNlPFQ+OjpwYXJhbWV0ZXJfID0g
TlVMTDsKKworLy8gTW9zdCB2YWx1ZS1wYXJhbWV0ZXJpemVkIGNsYXNzZXMgY2FuIGlnbm9yZSB0
aGUgZXhpc3RlbmNlIG9mCisvLyBXaXRoUGFyYW1JbnRlcmZhY2UsIGFuZCBjYW4ganVzdCBpbmhl
cml0IGZyb20gOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtLgogCi0jZW5kaWYgIC8vIEdURVNUX0hB
U19QQVJBTV9URVNUCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFRlc3RXaXRoUGFyYW0g
OiBwdWJsaWMgVGVzdCwgcHVibGljIFdpdGhQYXJhbUludGVyZmFjZTxUPiB7Cit9OwogCiAvLyBN
YWNyb3MgZm9yIGluZGljYXRpbmcgc3VjY2Vzcy9mYWlsdXJlIGluIHRlc3QgY29kZS4KIApAQCAt
MTY0MCwyMyArMTg0MywyMyBAQCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJf
ID0gTlVMTDsKIC8vIHVzdWFsbHkgd2FudCB0aGUgZmFpbC1mYXN0IGJlaGF2aW9yIG9mIEZBSUwg
YW5kIEFTU0VSVF8qLCBidXQgdGhvc2UKIC8vIHdyaXRpbmcgZGF0YS1kcml2ZW4gdGVzdHMgb2Z0
ZW4gZmluZCB0aGVtc2VsdmVzIHVzaW5nIEFERF9GQUlMVVJFCiAvLyBhbmQgRVhQRUNUXyogbW9y
ZS4KLS8vCi0vLyBFeGFtcGxlczoKLS8vCi0vLyAgIEVYUEVDVF9UUlVFKHNlcnZlci5TdGF0dXNJ
c09LKCkpOwotLy8gICBBU1NFUlRfRkFMU0Uoc2VydmVyLkhhc1BlbmRpbmdSZXF1ZXN0KHBvcnQp
KQotLy8gICAgICAgPDwgIlRoZXJlIGFyZSBzdGlsbCBwZW5kaW5nIHJlcXVlc3RzICIgPDwgIm9u
IHBvcnQgIiA8PCBwb3J0OwogCiAvLyBHZW5lcmF0ZXMgYSBub25mYXRhbCBmYWlsdXJlIHdpdGgg
YSBnZW5lcmljIG1lc3NhZ2UuCiAjZGVmaW5lIEFERF9GQUlMVVJFKCkgR1RFU1RfTk9ORkFUQUxf
RkFJTFVSRV8oIkZhaWxlZCIpCiAKKy8vIEdlbmVyYXRlcyBhIG5vbmZhdGFsIGZhaWx1cmUgYXQg
dGhlIGdpdmVuIHNvdXJjZSBmaWxlIGxvY2F0aW9uIHdpdGgKKy8vIGEgZ2VuZXJpYyBtZXNzYWdl
LgorI2RlZmluZSBBRERfRkFJTFVSRV9BVChmaWxlLCBsaW5lKSBcCisgIEdURVNUX01FU1NBR0Vf
QVRfKGZpbGUsIGxpbmUsICJGYWlsZWQiLCBcCisgICAgICAgICAgICAgICAgICAgIDo6dGVzdGlu
Zzo6VGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUpCisKIC8vIEdlbmVyYXRlcyBhIGZh
dGFsIGZhaWx1cmUgd2l0aCBhIGdlbmVyaWMgbWVzc2FnZS4KICNkZWZpbmUgR1RFU1RfRkFJTCgp
IEdURVNUX0ZBVEFMX0ZBSUxVUkVfKCJGYWlsZWQiKQogCiAvLyBEZWZpbmUgdGhpcyBtYWNybyB0
byAxIHRvIG9taXQgdGhlIGRlZmluaXRpb24gb2YgRkFJTCgpLCB3aGljaCBpcyBhCiAvLyBnZW5l
cmljIG5hbWUgYW5kIGNsYXNoZXMgd2l0aCBzb21lIG90aGVyIGxpYnJhcmllcy4KICNpZiAhR1RF
U1RfRE9OVF9ERUZJTkVfRkFJTAotI2RlZmluZSBGQUlMKCkgR1RFU1RfRkFJTCgpCisjIGRlZmlu
ZSBGQUlMKCkgR1RFU1RfRkFJTCgpCiAjZW5kaWYKIAogLy8gR2VuZXJhdGVzIGEgc3VjY2VzcyB3
aXRoIGEgZ2VuZXJpYyBtZXNzYWdlLgpAQCAtMTY2NSw3ICsxODY4LDcgQEAgY29uc3QgVCogVGVz
dFdpdGhQYXJhbTxUPjo6cGFyYW1ldGVyXyA9IE5VTEw7CiAvLyBEZWZpbmUgdGhpcyBtYWNybyB0
byAxIHRvIG9taXQgdGhlIGRlZmluaXRpb24gb2YgU1VDQ0VFRCgpLCB3aGljaAogLy8gaXMgYSBn
ZW5lcmljIG5hbWUgYW5kIGNsYXNoZXMgd2l0aCBzb21lIG90aGVyIGxpYnJhcmllcy4KICNpZiAh
R1RFU1RfRE9OVF9ERUZJTkVfU1VDQ0VFRAotI2RlZmluZSBTVUNDRUVEKCkgR1RFU1RfU1VDQ0VF
RCgpCisjIGRlZmluZSBTVUNDRUVEKCkgR1RFU1RfU1VDQ0VFRCgpCiAjZW5kaWYKIAogLy8gTWFj
cm9zIGZvciB0ZXN0aW5nIGV4Y2VwdGlvbnMuCkBAIC0xNzA2LDE4ICsxOTA5LDE0IEBAIGNvbnN0
IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogICBHVEVTVF9URVNUX0JP
T0xFQU5fKCEoY29uZGl0aW9uKSwgI2NvbmRpdGlvbiwgdHJ1ZSwgZmFsc2UsIFwKICAgICAgICAg
ICAgICAgICAgICAgICBHVEVTVF9GQVRBTF9GQUlMVVJFXykKIAotLy8gSW5jbHVkZXMgdGhlIGF1
dG8tZ2VuZXJhdGVkIGhlYWRlciB0aGF0IGltcGxlbWVudHMgYSBmYW1pbHkgb2YKLS8vIGdlbmVy
aWMgcHJlZGljYXRlIGFzc2VydGlvbiBtYWNyb3MuCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3RfcHJl
ZF9pbXBsLmg+Ci0KIC8vIE1hY3JvcyBmb3IgdGVzdGluZyBlcXVhbGl0aWVzIGFuZCBpbmVxdWFs
aXRpZXMuCiAvLwotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fRVEoZXhwZWN0ZWQsIGFjdHVhbCk6
IFRlc3RzIHRoYXQgZXhwZWN0ZWQgPT0gYWN0dWFsCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9O
RSh2MSwgdjIpOiAgICAgICAgICAgVGVzdHMgdGhhdCB2MSAhPSB2MgotLy8gICAgKiB7QVNTRVJU
fEVYUEVDVH1fTFQodjEsIHYyKTogICAgICAgICAgIFRlc3RzIHRoYXQgdjEgPCB2MgotLy8gICAg
KiB7QVNTRVJUfEVYUEVDVH1fTEUodjEsIHYyKTogICAgICAgICAgIFRlc3RzIHRoYXQgdjEgPD0g
djIKLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0dUKHYxLCB2Mik6ICAgICAgICAgICBUZXN0cyB0
aGF0IHYxID4gdjIKLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0dFKHYxLCB2Mik6ICAgICAgICAg
ICBUZXN0cyB0aGF0IHYxID49IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9FUSh2MSwgdjIp
OiBUZXN0cyB0aGF0IHYxID09IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9ORSh2MSwgdjIp
OiBUZXN0cyB0aGF0IHYxICE9IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9MVCh2MSwgdjIp
OiBUZXN0cyB0aGF0IHYxIDwgdjIKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0xFKHYxLCB2Mik6
IFRlc3RzIHRoYXQgdjEgPD0gdjIKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0dUKHYxLCB2Mik6
IFRlc3RzIHRoYXQgdjEgPiB2MgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fR0UodjEsIHYyKTog
VGVzdHMgdGhhdCB2MSA+PSB2MgogLy8KIC8vIFdoZW4gdGhleSBhcmUgbm90LCBHb29nbGUgVGVz
dCBwcmludHMgYm90aCB0aGUgdGVzdGVkIGV4cHJlc3Npb25zIGFuZAogLy8gdGhlaXIgYWN0dWFs
IHZhbHVlcy4gIFRoZSB2YWx1ZXMgbXVzdCBiZSBjb21wYXRpYmxlIGJ1aWx0LWluIHR5cGVzLApA
QCAtMTczOSw4ICsxOTM4LDggQEAgY29uc3QgVCogVGVzdFdpdGhQYXJhbTxUPjo6cGFyYW1ldGVy
XyA9IE5VTEw7CiAvLyAgIGFyZSByZWxhdGVkLCBub3QgaG93IHRoZWlyIGNvbnRlbnQgaXMgcmVs
YXRlZC4gIFRvIGNvbXBhcmUgdHdvIEMKIC8vICAgc3RyaW5ncyBieSBjb250ZW50LCB1c2Uge0FT
U0VSVHxFWFBFQ1R9X1NUUiooKS4KIC8vCi0vLyAgIDMuIHtBU1NFUlR8RVhQRUNUfV9FUShleHBl
Y3RlZCwgYWN0dWFsKSBpcyBwcmVmZXJyZWQgdG8KLS8vICAge0FTU0VSVHxFWFBFQ1R9X1RSVUUo
ZXhwZWN0ZWQgPT0gYWN0dWFsKSwgYXMgdGhlIGZvcm1lciB0ZWxscyB5b3UKKy8vICAgMy4ge0FT
U0VSVHxFWFBFQ1R9X0VRKHYxLCB2MikgaXMgcHJlZmVycmVkIHRvCisvLyAgIHtBU1NFUlR8RVhQ
RUNUfV9UUlVFKHYxID09IHYyKSwgYXMgdGhlIGZvcm1lciB0ZWxscyB5b3UKIC8vICAgd2hhdCB0
aGUgYWN0dWFsIHZhbHVlIGlzIHdoZW4gaXQgZmFpbHMsIGFuZCBzaW1pbGFybHkgZm9yIHRoZQog
Ly8gICBvdGhlciBjb21wYXJpc29ucy4KIC8vCkBAIC0xNzUxLDE3ICsxOTUwLDE3IEBAIGNvbnN0
IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogLy8KIC8vIEV4YW1wbGVz
OgogLy8KLS8vICAgRVhQRUNUX05FKDUsIEZvbygpKTsKLS8vICAgRVhQRUNUX0VRKE5VTEwsIGFf
cG9pbnRlcik7CisvLyAgIEVYUEVDVF9ORShGb28oKSwgNSk7CisvLyAgIEVYUEVDVF9FUShhX3Bv
aW50ZXIsIE5VTEwpOwogLy8gICBBU1NFUlRfTFQoaSwgYXJyYXlfc2l6ZSk7CiAvLyAgIEFTU0VS
VF9HVChyZWNvcmRzLnNpemUoKSwgMCkgPDwgIlRoZXJlIGlzIG5vIHJlY29yZCBsZWZ0LiI7CiAK
LSNkZWZpbmUgRVhQRUNUX0VRKGV4cGVjdGVkLCBhY3R1YWwpIFwKKyNkZWZpbmUgRVhQRUNUX0VR
KHZhbDEsIHZhbDIpIFwKICAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFs
OjogXAotICAgICAgICAgICAgICAgICAgICAgIEVxSGVscGVyPEdURVNUX0lTX05VTExfTElURVJB
TF8oZXhwZWN0ZWQpPjo6Q29tcGFyZSwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
LCBhY3R1YWwpCi0jZGVmaW5lIEVYUEVDVF9ORShleHBlY3RlZCwgYWN0dWFsKSBcCi0gIEVYUEVD
VF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyTkUsIGV4cGVjdGVk
LCBhY3R1YWwpCisgICAgICAgICAgICAgICAgICAgICAgRXFIZWxwZXI8R1RFU1RfSVNfTlVMTF9M
SVRFUkFMXyh2YWwxKT46OkNvbXBhcmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICB2YWwxLCB2
YWwyKQorI2RlZmluZSBFWFBFQ1RfTkUodmFsMSwgdmFsMikgXAorICBFWFBFQ1RfUFJFRF9GT1JN
QVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlck5FLCB2YWwxLCB2YWwyKQogI2RlZmlu
ZSBFWFBFQ1RfTEUodmFsMSwgdmFsMikgXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkNtcEhlbHBlckxFLCB2YWwxLCB2YWwyKQogI2RlZmluZSBFWFBFQ1RfTFQo
dmFsMSwgdmFsMikgXApAQCAtMTc3MSwyMiArMTk3MCw0OSBAQCBjb25zdCBUKiBUZXN0V2l0aFBh
cmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKICNkZWZpbmUgRVhQRUNUX0dUKHZhbDEsIHZhbDIp
IFwKICAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJH
VCwgdmFsMSwgdmFsMikKIAotI2RlZmluZSBBU1NFUlRfRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAor
I2RlZmluZSBHVEVTVF9BU1NFUlRfRVEodmFsMSwgdmFsMikgXAogICBBU1NFUlRfUFJFRF9GT1JN
QVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OiBcCi0gICAgICAgICAgICAgICAgICAgICAgRXFIZWxw
ZXI8R1RFU1RfSVNfTlVMTF9MSVRFUkFMXyhleHBlY3RlZCk+OjpDb21wYXJlLCBcCi0gICAgICAg
ICAgICAgICAgICAgICAgZXhwZWN0ZWQsIGFjdHVhbCkKLSNkZWZpbmUgQVNTRVJUX05FKHZhbDEs
IHZhbDIpIFwKKyAgICAgICAgICAgICAgICAgICAgICBFcUhlbHBlcjxHVEVTVF9JU19OVUxMX0xJ
VEVSQUxfKHZhbDEpPjo6Q29tcGFyZSwgXAorICAgICAgICAgICAgICAgICAgICAgIHZhbDEsIHZh
bDIpCisjZGVmaW5lIEdURVNUX0FTU0VSVF9ORSh2YWwxLCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVE
X0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyTkUsIHZhbDEsIHZhbDIpCi0j
ZGVmaW5lIEFTU0VSVF9MRSh2YWwxLCB2YWwyKSBcCisjZGVmaW5lIEdURVNUX0FTU0VSVF9MRSh2
YWwxLCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
Q21wSGVscGVyTEUsIHZhbDEsIHZhbDIpCi0jZGVmaW5lIEFTU0VSVF9MVCh2YWwxLCB2YWwyKSBc
CisjZGVmaW5lIEdURVNUX0FTU0VSVF9MVCh2YWwxLCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZP
Uk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyTFQsIHZhbDEsIHZhbDIpCi0jZGVm
aW5lIEFTU0VSVF9HRSh2YWwxLCB2YWwyKSBcCisjZGVmaW5lIEdURVNUX0FTU0VSVF9HRSh2YWwx
LCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21w
SGVscGVyR0UsIHZhbDEsIHZhbDIpCi0jZGVmaW5lIEFTU0VSVF9HVCh2YWwxLCB2YWwyKSBcCisj
ZGVmaW5lIEdURVNUX0FTU0VSVF9HVCh2YWwxLCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1B
VDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyR1QsIHZhbDEsIHZhbDIpCiAKLS8vIEMg
U3RyaW5nIENvbXBhcmlzb25zLiAgQWxsIHRlc3RzIHRyZWF0IE5VTEwgYW5kIGFueSBub24tTlVM
TCBzdHJpbmcKKy8vIERlZmluZSBtYWNybyBHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfWFkgdG8g
MSB0byBvbWl0IHRoZSBkZWZpbml0aW9uIG9mCisvLyBBU1NFUlRfWFkoKSwgd2hpY2ggY2xhc2hl
cyB3aXRoIHNvbWUgdXNlcnMnIG93biBjb2RlLgorCisjaWYgIUdURVNUX0RPTlRfREVGSU5FX0FT
U0VSVF9FUQorIyBkZWZpbmUgQVNTRVJUX0VRKHZhbDEsIHZhbDIpIEdURVNUX0FTU0VSVF9FUSh2
YWwxLCB2YWwyKQorI2VuZGlmCisKKyNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX05FCisj
IGRlZmluZSBBU1NFUlRfTkUodmFsMSwgdmFsMikgR1RFU1RfQVNTRVJUX05FKHZhbDEsIHZhbDIp
CisjZW5kaWYKKworI2lmICFHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfTEUKKyMgZGVmaW5lIEFT
U0VSVF9MRSh2YWwxLCB2YWwyKSBHVEVTVF9BU1NFUlRfTEUodmFsMSwgdmFsMikKKyNlbmRpZgor
CisjaWYgIUdURVNUX0RPTlRfREVGSU5FX0FTU0VSVF9MVAorIyBkZWZpbmUgQVNTRVJUX0xUKHZh
bDEsIHZhbDIpIEdURVNUX0FTU0VSVF9MVCh2YWwxLCB2YWwyKQorI2VuZGlmCisKKyNpZiAhR1RF
U1RfRE9OVF9ERUZJTkVfQVNTRVJUX0dFCisjIGRlZmluZSBBU1NFUlRfR0UodmFsMSwgdmFsMikg
R1RFU1RfQVNTRVJUX0dFKHZhbDEsIHZhbDIpCisjZW5kaWYKKworI2lmICFHVEVTVF9ET05UX0RF
RklORV9BU1NFUlRfR1QKKyMgZGVmaW5lIEFTU0VSVF9HVCh2YWwxLCB2YWwyKSBHVEVTVF9BU1NF
UlRfR1QodmFsMSwgdmFsMikKKyNlbmRpZgorCisvLyBDLXN0cmluZyBDb21wYXJpc29ucy4gIEFs
bCB0ZXN0cyB0cmVhdCBOVUxMIGFuZCBhbnkgbm9uLU5VTEwgc3RyaW5nCiAvLyBhcyBkaWZmZXJl
bnQuICBUd28gTlVMTHMgYXJlIGVxdWFsLgogLy8KIC8vICAgICoge0FTU0VSVHxFWFBFQ1R9X1NU
UkVRKHMxLCBzMik6ICAgICBUZXN0cyB0aGF0IHMxID09IHMyCkBAIC0xODAyLDI5ICsyMDI4LDI5
IEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogLy8KIC8v
IFRoZXNlIG1hY3JvcyBldmFsdWF0ZSB0aGVpciBhcmd1bWVudHMgZXhhY3RseSBvbmNlLgogCi0j
ZGVmaW5lIEVYUEVDVF9TVFJFUShleHBlY3RlZCwgYWN0dWFsKSBcCi0gIEVYUEVDVF9QUkVEX0ZP
Uk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSRVEsIGV4cGVjdGVkLCBhY3R1
YWwpCisjZGVmaW5lIEVYUEVDVF9TVFJFUShzMSwgczIpIFwKKyAgRVhQRUNUX1BSRURfRk9STUFU
Mig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJFUSwgczEsIHMyKQogI2RlZmluZSBF
WFBFQ1RfU1RSTkUoczEsIHMyKSBcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6Q21wSGVscGVyU1RSTkUsIHMxLCBzMikKLSNkZWZpbmUgRVhQRUNUX1NUUkNBU0VF
UShleHBlY3RlZCwgYWN0dWFsKSBcCi0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6Q21wSGVscGVyU1RSQ0FTRUVRLCBleHBlY3RlZCwgYWN0dWFsKQorI2RlZmluZSBF
WFBFQ1RfU1RSQ0FTRUVRKHMxLCBzMikgXAorICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkNBU0VFUSwgczEsIHMyKQogI2RlZmluZSBFWFBFQ1Rf
U1RSQ0FTRU5FKHMxLCBzMilcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRl
cm5hbDo6Q21wSGVscGVyU1RSQ0FTRU5FLCBzMSwgczIpCiAKLSNkZWZpbmUgQVNTRVJUX1NUUkVR
KGV4cGVjdGVkLCBhY3R1YWwpIFwKLSAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6Omlu
dGVybmFsOjpDbXBIZWxwZXJTVFJFUSwgZXhwZWN0ZWQsIGFjdHVhbCkKKyNkZWZpbmUgQVNTRVJU
X1NUUkVRKHMxLCBzMikgXAorICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJu
YWw6OkNtcEhlbHBlclNUUkVRLCBzMSwgczIpCiAjZGVmaW5lIEFTU0VSVF9TVFJORShzMSwgczIp
IFwKICAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJT
VFJORSwgczEsIHMyKQotI2RlZmluZSBBU1NFUlRfU1RSQ0FTRUVRKGV4cGVjdGVkLCBhY3R1YWwp
IFwKLSAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJT
VFJDQVNFRVEsIGV4cGVjdGVkLCBhY3R1YWwpCisjZGVmaW5lIEFTU0VSVF9TVFJDQVNFRVEoczEs
IHMyKSBcCisgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVs
cGVyU1RSQ0FTRUVRLCBzMSwgczIpCiAjZGVmaW5lIEFTU0VSVF9TVFJDQVNFTkUoczEsIHMyKVwK
ICAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJD
QVNFTkUsIHMxLCBzMikKIAogLy8gTWFjcm9zIGZvciBjb21wYXJpbmcgZmxvYXRpbmctcG9pbnQg
bnVtYmVycy4KIC8vCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9GTE9BVF9FUShleHBlY3RlZCwg
YWN0dWFsKToKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0ZMT0FUX0VRKHZhbDEsIHZhbDIpOgog
Ly8gICAgICAgICBUZXN0cyB0aGF0IHR3byBmbG9hdCB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbC4K
LS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0RPVUJMRV9FUShleHBlY3RlZCwgYWN0dWFsKToKKy8v
ICAgICoge0FTU0VSVHxFWFBFQ1R9X0RPVUJMRV9FUSh2YWwxLCB2YWwyKToKIC8vICAgICAgICAg
VGVzdHMgdGhhdCB0d28gZG91YmxlIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsLgogLy8gICAgKiB7
QVNTRVJUfEVYUEVDVH1fTkVBUih2MSwgdjIsIGFic19lcnJvcik6CiAvLyAgICAgICAgIFRlc3Rz
IHRoYXQgdjEgYW5kIHYyIGFyZSB3aXRoaW4gdGhlIGdpdmVuIGRpc3RhbmNlIHRvIGVhY2ggb3Ro
ZXIuCkBAIC0xODM0LDIxICsyMDYwLDIxIEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBh
cmFtZXRlcl8gPSBOVUxMOwogLy8gRmxvYXRpbmdQb2ludCB0ZW1wbGF0ZSBjbGFzcyBpbiBndGVz
dC1pbnRlcm5hbC5oIGlmIHlvdSBhcmUKIC8vIGludGVyZXN0ZWQgaW4gdGhlIGltcGxlbWVudGF0
aW9uIGRldGFpbHMuCiAKLSNkZWZpbmUgRVhQRUNUX0ZMT0FUX0VRKGV4cGVjdGVkLCBhY3R1YWwp
XAorI2RlZmluZSBFWFBFQ1RfRkxPQVRfRVEodmFsMSwgdmFsMilcCiAgIEVYUEVDVF9QUkVEX0ZP
Uk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyRmxvYXRpbmdQb2ludEVRPGZsb2F0
PiwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLCBhY3R1YWwpCisgICAgICAgICAg
ICAgICAgICAgICAgdmFsMSwgdmFsMikKIAotI2RlZmluZSBFWFBFQ1RfRE9VQkxFX0VRKGV4cGVj
dGVkLCBhY3R1YWwpXAorI2RlZmluZSBFWFBFQ1RfRE9VQkxFX0VRKHZhbDEsIHZhbDIpXAogICBF
WFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckZsb2F0aW5n
UG9pbnRFUTxkb3VibGU+LCBcCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQsIGFjdHVh
bCkKKyAgICAgICAgICAgICAgICAgICAgICB2YWwxLCB2YWwyKQogCi0jZGVmaW5lIEFTU0VSVF9G
TE9BVF9FUShleHBlY3RlZCwgYWN0dWFsKVwKKyNkZWZpbmUgQVNTRVJUX0ZMT0FUX0VRKHZhbDEs
IHZhbDIpXAogICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhl
bHBlckZsb2F0aW5nUG9pbnRFUTxmbG9hdD4sIFwKLSAgICAgICAgICAgICAgICAgICAgICBleHBl
Y3RlZCwgYWN0dWFsKQorICAgICAgICAgICAgICAgICAgICAgIHZhbDEsIHZhbDIpCiAKLSNkZWZp
bmUgQVNTRVJUX0RPVUJMRV9FUShleHBlY3RlZCwgYWN0dWFsKVwKKyNkZWZpbmUgQVNTRVJUX0RP
VUJMRV9FUSh2YWwxLCB2YWwyKVwKICAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6Omlu
dGVybmFsOjpDbXBIZWxwZXJGbG9hdGluZ1BvaW50RVE8ZG91YmxlPiwgXAotICAgICAgICAgICAg
ICAgICAgICAgIGV4cGVjdGVkLCBhY3R1YWwpCisgICAgICAgICAgICAgICAgICAgICAgdmFsMSwg
dmFsMikKIAogI2RlZmluZSBFWFBFQ1RfTkVBUih2YWwxLCB2YWwyLCBhYnNfZXJyb3IpXAogICBF
WFBFQ1RfUFJFRF9GT1JNQVQzKDo6dGVzdGluZzo6aW50ZXJuYWw6OkRvdWJsZU5lYXJQcmVkRm9y
bWF0LCBcCkBAIC0xODgyLDE2ICsyMTA4LDE2IEBAIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0
IERvdWJsZUxFKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwKIC8vIGV4cGVj
dGVkIHJlc3VsdCBhbmQgdGhlIGFjdHVhbCByZXN1bHQgd2l0aCBib3RoIGEgaHVtYW4tcmVhZGFi
bGUKIC8vIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZXJyb3IsIGlmIGF2YWlsYWJsZSwg
YXMgd2VsbCBhcyB0aGUKIC8vIGhleCByZXN1bHQgY29kZS4KLSNkZWZpbmUgRVhQRUNUX0hSRVNV
TFRfU1VDQ0VFREVEKGV4cHIpIFwKKyMgZGVmaW5lIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChl
eHByKSBcCiAgICAgRVhQRUNUX1BSRURfRk9STUFUMSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hS
RVNVTFRTdWNjZXNzLCAoZXhwcikpCiAKLSNkZWZpbmUgQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVE
KGV4cHIpIFwKKyMgZGVmaW5lIEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChleHByKSBcCiAgICAg
QVNTRVJUX1BSRURfRk9STUFUMSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hSRVNVTFRTdWNjZXNz
LCAoZXhwcikpCiAKLSNkZWZpbmUgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKGV4cHIpIFwKKyMgZGVm
aW5lIEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChleHByKSBcCiAgICAgRVhQRUNUX1BSRURfRk9STUFU
MSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hSRVNVTFRGYWlsdXJlLCAoZXhwcikpCiAKLSNkZWZp
bmUgQVNTRVJUX0hSRVNVTFRfRkFJTEVEKGV4cHIpIFwKKyMgZGVmaW5lIEFTU0VSVF9IUkVTVUxU
X0ZBSUxFRChleHByKSBcCiAgICAgQVNTRVJUX1BSRURfRk9STUFUMSg6OnRlc3Rpbmc6OmludGVy
bmFsOjpJc0hSRVNVTFRGYWlsdXJlLCAoZXhwcikpCiAKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lO
RE9XUwpAQCAtMTkxMSw2ICsyMTM3LDU3IEBAIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IERv
dWJsZUxFKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwKICNkZWZpbmUgRVhQ
RUNUX05PX0ZBVEFMX0ZBSUxVUkUoc3RhdGVtZW50KSBcCiAgICAgR1RFU1RfVEVTVF9OT19GQVRB
TF9GQUlMVVJFXyhzdGF0ZW1lbnQsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVfKQogCisvLyBDYXVz
ZXMgYSB0cmFjZSAoaW5jbHVkaW5nIHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBwYXRoIGFuZCBsaW5l
IG51bWJlciwKKy8vIGFuZCB0aGUgZ2l2ZW4gbWVzc2FnZSkgdG8gYmUgaW5jbHVkZWQgaW4gZXZl
cnkgdGVzdCBmYWlsdXJlIG1lc3NhZ2UgZ2VuZXJhdGVkCisvLyBieSBjb2RlIGluIHRoZSBzY29w
ZSBvZiB0aGUgbGlmZXRpbWUgb2YgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy4gVGhlIGVmZmVj
dAorLy8gaXMgdW5kb25lIHdpdGggdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZS4KKy8v
CisvLyBUaGUgbWVzc2FnZSBhcmd1bWVudCBjYW4gYmUgYW55dGhpbmcgc3RyZWFtYWJsZSB0byBz
dGQ6Om9zdHJlYW0uCisvLworLy8gRXhhbXBsZToKKy8vICAgdGVzdGluZzo6U2NvcGVkVHJhY2Ug
dHJhY2UoImZpbGUuY2MiLCAxMjMsICJtZXNzYWdlIik7CisvLworY2xhc3MgR1RFU1RfQVBJXyBT
Y29wZWRUcmFjZSB7CisgcHVibGljOgorICAvLyBUaGUgYyd0b3IgcHVzaGVzIHRoZSBnaXZlbiBz
b3VyY2UgZmlsZSBsb2NhdGlvbiBhbmQgbWVzc2FnZSBvbnRvCisgIC8vIGEgdHJhY2Ugc3RhY2sg
bWFpbnRhaW5lZCBieSBHb29nbGUgVGVzdC4KKworICAvLyBUZW1wbGF0ZSB2ZXJzaW9uLiBVc2Vz
IE1lc3NhZ2UoKSB0byBjb252ZXJ0IHRoZSB2YWx1ZXMgaW50byBzdHJpbmdzLgorICAvLyBTbG93
LCBidXQgZmxleGlibGUuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBTY29wZWRUcmFjZShj
b25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgVCYgbWVzc2FnZSkgeworICAgIFB1c2hU
cmFjZShmaWxlLCBsaW5lLCAoTWVzc2FnZSgpIDw8IG1lc3NhZ2UpLkdldFN0cmluZygpKTsKKyAg
fQorCisgIC8vIE9wdGltaXplIGZvciBzb21lIGtub3duIHR5cGVzLgorICBTY29wZWRUcmFjZShj
b25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogbWVzc2FnZSkgeworICAgIFB1
c2hUcmFjZShmaWxlLCBsaW5lLCBtZXNzYWdlID8gbWVzc2FnZSA6ICIobnVsbCkiKTsKKyAgfQor
CisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKyAgU2NvcGVkVHJhY2UoY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUsIGNvbnN0IDo6c3RyaW5nJiBtZXNzYWdlKSB7CisgICAgUHVzaFRyYWNl
KGZpbGUsIGxpbmUsIG1lc3NhZ2UpOworICB9CisjZW5kaWYKKworICBTY29wZWRUcmFjZShjb25z
dCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsKKyAg
ICBQdXNoVHJhY2UoZmlsZSwgbGluZSwgbWVzc2FnZSk7CisgIH0KKworICAvLyBUaGUgZCd0b3Ig
cG9wcyB0aGUgaW5mbyBwdXNoZWQgYnkgdGhlIGMndG9yLgorICAvLworICAvLyBOb3RlIHRoYXQg
dGhlIGQndG9yIGlzIG5vdCB2aXJ0dWFsIGluIG9yZGVyIHRvIGJlIGVmZmljaWVudC4KKyAgLy8g
RG9uJ3QgaW5oZXJpdCBmcm9tIFNjb3BlZFRyYWNlIQorICB+U2NvcGVkVHJhY2UoKTsKKworIHBy
aXZhdGU6CisgIHZvaWQgUHVzaFRyYWNlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBzdGQ6
OnN0cmluZyBtZXNzYWdlKTsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNj
b3BlZFRyYWNlKTsKK30gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF87ICAvLyBBIFNjb3BlZFRyYWNl
IG9iamVjdCBkb2VzIGl0cyBqb2IgaW4gaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gYyd0b3IgYW5kIGQndG9yLiAgVGhlcmVmb3JlIGl0IGRvZXNuJ3QKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBuZWVkIHRvIGJlIHVzZWQgb3RoZXJ3aXNlLgorCiAvLyBDYXVzZXMg
YSB0cmFjZSAoaW5jbHVkaW5nIHRoZSBzb3VyY2UgZmlsZSBwYXRoLCB0aGUgY3VycmVudCBsaW5l
CiAvLyBudW1iZXIsIGFuZCB0aGUgZ2l2ZW4gbWVzc2FnZSkgdG8gYmUgaW5jbHVkZWQgaW4gZXZl
cnkgdGVzdCBmYWlsdXJlCiAvLyBtZXNzYWdlIGdlbmVyYXRlZCBieSBjb2RlIGluIHRoZSBjdXJy
ZW50IHNjb3BlLiAgVGhlIGVmZmVjdCBpcwpAQCAtMTkyMiwyMCArMjE5OSwxNCBAQCBHVEVTVF9B
UElfIEFzc2VydGlvblJlc3VsdCBEb3VibGVMRShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hh
ciogZXhwcjIsCiAvLyBvZiB0aGUgZHVtbXkgdmFyaWFibGUgbmFtZSwgdGh1cyBhbGxvd2luZyBt
dWx0aXBsZSBTQ09QRURfVFJBQ0UoKXMKIC8vIHRvIGFwcGVhciBpbiB0aGUgc2FtZSBibG9jayAt
IGFzIGxvbmcgYXMgdGhleSBhcmUgb24gZGlmZmVyZW50CiAvLyBsaW5lcy4KKy8vCisvLyBBc3N1
bWluZyB0aGF0IGVhY2ggdGhyZWFkIG1haW50YWlucyBpdHMgb3duIHN0YWNrIG9mIHRyYWNlcy4K
Ky8vIFRoZXJlZm9yZSwgYSBTQ09QRURfVFJBQ0UoKSB3b3VsZCAoY29ycmVjdGx5KSBvbmx5IGFm
ZmVjdCB0aGUKKy8vIGFzc2VydGlvbnMgaW4gaXRzIG93biB0aHJlYWQuCiAjZGVmaW5lIFNDT1BF
RF9UUkFDRShtZXNzYWdlKSBcCi0gIDo6dGVzdGluZzo6aW50ZXJuYWw6OlNjb3BlZFRyYWNlIEdU
RVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfdHJhY2VfLCBfX0xJTkVfXykoXAotICAgIF9fRklMRV9f
LCBfX0xJTkVfXywgOjp0ZXN0aW5nOjpNZXNzYWdlKCkgPDwgKG1lc3NhZ2UpKQotCi1uYW1lc3Bh
Y2UgaW50ZXJuYWwgewotCi0vLyBUaGlzIHRlbXBsYXRlIGlzIGRlY2xhcmVkLCBidXQgaW50ZW50
aW9uYWxseSB1bmRlZmluZWQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgot
c3RydWN0IFN0YXRpY0Fzc2VydFR5cGVFcUhlbHBlcjsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1zdHJ1Y3QgU3RhdGljQXNzZXJ0VHlwZUVxSGVscGVyPFQsIFQ+IHt9OworICA6OnRlc3Rpbmc6
OlNjb3BlZFRyYWNlIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfdHJhY2VfLCBfX0xJTkVfXyko
XAorICAgIF9fRklMRV9fLCBfX0xJTkVfXywgKG1lc3NhZ2UpKQogCi19ICAvLyBuYW1lc3BhY2Ug
aW50ZXJuYWwKIAogLy8gQ29tcGlsZS10aW1lIGFzc2VydGlvbiBmb3IgdHlwZSBlcXVhbGl0eS4K
IC8vIFN0YXRpY0Fzc2VydFR5cGVFcTx0eXBlMSwgdHlwZTI+KCkgY29tcGlsZXMgaWZmIHR5cGUx
IGFuZCB0eXBlMiBhcmUKQEAgLTE5NjksNyArMjI0MCw3IEBAIHN0cnVjdCBTdGF0aWNBc3NlcnRU
eXBlRXFIZWxwZXI8VCwgVD4ge307CiAvLyB0byBjYXVzZSBhIGNvbXBpbGVyIGVycm9yLgogdGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KIGJvb2wgU3RhdGljQXNzZXJ0VHlwZUVx
KCkgewotICBpbnRlcm5hbDo6U3RhdGljQXNzZXJ0VHlwZUVxSGVscGVyPFQxLCBUMj4oKTsKKyAg
KHZvaWQpaW50ZXJuYWw6OlN0YXRpY0Fzc2VydFR5cGVFcUhlbHBlcjxUMSwgVDI+KCk7CiAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC0xOTgxLDggKzIyNTIsOCBAQCBib29sIFN0YXRpY0Fzc2VydFR5
cGVFcSgpIHsKIC8vIFRoZSBjb252ZW50aW9uIGlzIHRvIGVuZCB0aGUgdGVzdCBjYXNlIG5hbWUg
d2l0aCAiVGVzdCIuICBGb3IKIC8vIGV4YW1wbGUsIGEgdGVzdCBjYXNlIGZvciB0aGUgRm9vIGNs
YXNzIGNhbiBiZSBuYW1lZCBGb29UZXN0LgogLy8KLS8vIFRoZSB1c2VyIHNob3VsZCBwdXQgaGlz
IHRlc3QgY29kZSBiZXR3ZWVuIGJyYWNlcyBhZnRlciB1c2luZyB0aGlzCi0vLyBtYWNyby4gIEV4
YW1wbGU6CisvLyBUZXN0IGNvZGUgc2hvdWxkIGFwcGVhciBiZXR3ZWVuIGJyYWNlcyBhZnRlciBh
biBpbnZvY2F0aW9uIG9mCisvLyB0aGlzIG1hY3JvLiAgRXhhbXBsZToKIC8vCiAvLyAgIFRFU1Qo
Rm9vVGVzdCwgSW5pdGlhbGl6ZXNDb3JyZWN0bHkpIHsKIC8vICAgICBGb28gZm9vOwpAQCAtMjAw
NSw3ICsyMjc2LDcgQEAgYm9vbCBTdGF0aWNBc3NlcnRUeXBlRXEoKSB7CiAvLyBEZWZpbmUgdGhp
cyBtYWNybyB0byAxIHRvIG9taXQgdGhlIGRlZmluaXRpb24gb2YgVEVTVCgpLCB3aGljaAogLy8g
aXMgYSBnZW5lcmljIG5hbWUgYW5kIGNsYXNoZXMgd2l0aCBzb21lIG90aGVyIGxpYnJhcmllcy4K
ICNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfVEVTVAotI2RlZmluZSBURVNUKHRlc3RfY2FzZV9uYW1l
LCB0ZXN0X25hbWUpIEdURVNUX1RFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkKKyMgZGVm
aW5lIFRFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgR1RFU1RfVEVTVCh0ZXN0X2Nhc2Vf
bmFtZSwgdGVzdF9uYW1lKQogI2VuZGlmCiAKIC8vIERlZmluZXMgYSB0ZXN0IHRoYXQgdXNlcyBh
IHRlc3QgZml4dHVyZS4KQEAgLTIwMTUsNyArMjI4Niw3IEBAIGJvb2wgU3RhdGljQXNzZXJ0VHlw
ZUVxKCkgewogLy8gbmFtZSBvZiB0aGUgdGVzdCB3aXRoaW4gdGhlIHRlc3QgY2FzZS4KIC8vCiAv
LyBBIHRlc3QgZml4dHVyZSBjbGFzcyBtdXN0IGJlIGRlY2xhcmVkIGVhcmxpZXIuICBUaGUgdXNl
ciBzaG91bGQgcHV0Ci0vLyBoaXMgdGVzdCBjb2RlIGJldHdlZW4gYnJhY2VzIGFmdGVyIHVzaW5n
IHRoaXMgbWFjcm8uICBFeGFtcGxlOgorLy8gdGhlIHRlc3QgY29kZSBiZXR3ZWVuIGJyYWNlcyBh
ZnRlciB1c2luZyB0aGlzIG1hY3JvLiAgRXhhbXBsZToKIC8vCiAvLyAgIGNsYXNzIEZvb1Rlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAvLyAgICBwcm90ZWN0ZWQ6CkBAIC0yMDMwLDIzICsy
MzAxLDM4IEBAIGJvb2wgU3RhdGljQXNzZXJ0VHlwZUVxKCkgewogLy8gICB9CiAvLwogLy8gICBU
RVNUX0YoRm9vVGVzdCwgUmV0dXJuc0VsZW1lbnRDb3VudENvcnJlY3RseSkgewotLy8gICAgIEVY
UEVDVF9FUSgwLCBhXy5zaXplKCkpOwotLy8gICAgIEVYUEVDVF9FUSgxLCBiXy5zaXplKCkpOwor
Ly8gICAgIEVYUEVDVF9FUShhXy5zaXplKCksIDApOworLy8gICAgIEVYUEVDVF9FUShiXy5zaXpl
KCksIDEpOwogLy8gICB9CiAKICNkZWZpbmUgVEVTVF9GKHRlc3RfZml4dHVyZSwgdGVzdF9uYW1l
KVwKICAgR1RFU1RfVEVTVF8odGVzdF9maXh0dXJlLCB0ZXN0X25hbWUsIHRlc3RfZml4dHVyZSwg
XAogICAgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpHZXRUeXBlSWQ8dGVzdF9maXh0
dXJlPigpKQogCi0vLyBVc2UgdGhpcyBtYWNybyBpbiBtYWluKCkgdG8gcnVuIGFsbCB0ZXN0cy4g
IEl0IHJldHVybnMgMCBpZiBhbGwKKy8vIFJldHVybnMgYSBwYXRoIHRvIHRlbXBvcmFyeSBkaXJl
Y3RvcnkuCisvLyBUcmllcyB0byBkZXRlcm1pbmUgYW4gYXBwcm9wcmlhdGUgZGlyZWN0b3J5IGZv
ciB0aGUgcGxhdGZvcm0uCitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFRlbXBEaXIoKTsKKworI2lm
ZGVmIF9NU0NfVkVSCisjICBwcmFnbWEgd2FybmluZyhwb3ApCisjZW5kaWYKKworfSAgLy8gbmFt
ZXNwYWNlIHRlc3RpbmcKKworLy8gVXNlIHRoaXMgZnVuY3Rpb24gaW4gbWFpbigpIHRvIHJ1biBh
bGwgdGVzdHMuICBJdCByZXR1cm5zIDAgaWYgYWxsCiAvLyB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwg
b3IgMSBvdGhlcndpc2UuCiAvLwogLy8gUlVOX0FMTF9URVNUUygpIHNob3VsZCBiZSBpbnZva2Vk
IGFmdGVyIHRoZSBjb21tYW5kIGxpbmUgaGFzIGJlZW4KIC8vIHBhcnNlZCBieSBJbml0R29vZ2xl
VGVzdCgpLgorLy8KKy8vIFRoaXMgZnVuY3Rpb24gd2FzIGZvcm1lcmx5IGEgbWFjcm87IHRodXMs
IGl0IGlzIGluIHRoZSBnbG9iYWwKKy8vIG5hbWVzcGFjZSBhbmQgaGFzIGFuIGFsbC1jYXBzIG5h
bWUuCitpbnQgUlVOX0FMTF9URVNUUygpIEdURVNUX01VU1RfVVNFX1JFU1VMVF87CiAKLSNkZWZp
bmUgUlVOX0FMTF9URVNUUygpXAotICAoOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2Uo
KS0+UnVuKCkpCitpbmxpbmUgaW50IFJVTl9BTExfVEVTVFMoKSB7CisgIHJldHVybiA6OnRlc3Rp
bmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5SdW4oKTsKK30KIAotfSAgLy8gbmFtZXNwYWNl
IHRlc3RpbmcKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQyNTEKIAog
I2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcmVkX2ltcGwuaAppbmRl
eCBlMWUyZjhjNGM4ODdhOGRlZmNiNzU4Y2EwY2FhYjNiN2NlYjlkNDFhLi4wYzExMDVjYjhlYjJl
ZjdjMjYxNmU2N2ZmNTU1NmFhYjI5ZmYyZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmgKQEAgLTI3LDE4ICsy
NywxOSBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0vLyBUaGlzIGZpbGUg
aXMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQgb24gMTAvMDIvMjAwOCBieSBjb21tYW5kCisvLyBU
aGlzIGZpbGUgaXMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQgb24gMDEvMDIvMjAxOCBieSBjb21t
YW5kCiAvLyAnZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weSA1Jy4gIERPIE5PVCBFRElUIEJZIEhBTkQh
CiAvLwogLy8gSW1wbGVtZW50cyBhIGZhbWlseSBvZiBnZW5lcmljIHByZWRpY2F0ZSBhc3NlcnRp
b24gbWFjcm9zLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5k
ZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KICNkZWZpbmUgR1RFU1Rf
SU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KIAotLy8gTWFrZXMgc3VyZSB0aGlzIGhl
YWRlciBpcyBub3QgaW5jbHVkZWQgYmVmb3JlIGd0ZXN0LmguCi0jaWZuZGVmIEdURVNUX0lOQ0xV
REVfR1RFU1RfR1RFU1RfSF8KLSNlcnJvciBEbyBub3QgaW5jbHVkZSBndGVzdF9wcmVkX2ltcGwu
aCBkaXJlY3RseS4gIEluY2x1ZGUgZ3Rlc3QuaCBpbnN0ZWFkLgotI2VuZGlmICAvLyBHVEVTVF9J
TkNMVURFX0dURVNUX0dURVNUX0hfCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNw
YWNlIHRlc3RpbmcgewogCiAvLyBUaGlzIGhlYWRlciBpbXBsZW1lbnRzIGEgZmFtaWx5IG9mIGdl
bmVyaWMgcHJlZGljYXRlIGFzc2VydGlvbgogLy8gbWFjcm9zOgpAQCAtNjYsOCArNjcsNiBAQAog
Ly8gV2UgYWxzbyBkZWZpbmUgdGhlIEVYUEVDVF8qIHZhcmlhdGlvbnMuCiAvLwogLy8gRm9yIG5v
dyB3ZSBvbmx5IHN1cHBvcnQgcHJlZGljYXRlcyB3aG9zZSBhcml0eSBpcyBhdCBtb3N0IDUuCi0v
LyBQbGVhc2UgZW1haWwgZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tIGlmIHlv
dSBuZWVkCi0vLyBzdXBwb3J0IGZvciBoaWdoZXIgYXJpdGllcy4KIAogLy8gR1RFU1RfQVNTRVJU
XyBpcyB0aGUgYmFzaWMgc3RhdGVtZW50IHRvIHdoaWNoIGFsbCBvZiB0aGUgYXNzZXJ0aW9ucwog
Ly8gaW4gdGhpcyBmaWxlIHJlZHVjZS4gIERvbid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KQEAg
LTkwLDE3ICs4OSwxNSBAQCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDFIZWxwZXIoY29uc3Qg
Y2hhciogcHJlZF90ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFQxJiB2MSkgewogICBpZiAocHJlZCh2MSkpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAK
LSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBwcmVkX3RleHQgPDwgIigiCi0gICAgICA8PCBlMSA8
PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8PCAi
IGV2YWx1YXRlcyB0byAiIDw8IHYxOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwor
ICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCBlMSA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJl
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0
ZXMgdG8gIiA8PCB2MTsKIH0KIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7
RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQxLgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBj
b2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDFfKHByZWRfZm9ybWF0LCB2MSwgb25fZmFp
bHVyZSlcCi0gIEdURVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoI3YxLCB2MSksXAorICBHVEVTVF9B
U1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgdjEpLCBcCiAgICAgICAgICAgICAgICAgb25fZmFpbHVy
ZSkKIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1f
UFJFRDEuICBEb24ndCB1c2UKQEAgLTEzNiwxOSArMTMzLDE3IEBAIEFzc2VydGlvblJlc3VsdCBB
c3NlcnRQcmVkMkhlbHBlcihjb25zdCBjaGFyKiBwcmVkX3RleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVDImIHYyKSB7CiAgIGlmIChwcmVkKHYxLCB2MikpIHJl
dHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBwcmVk
X3RleHQgPDwgIigiCi0gICAgICA8PCBlMSA8PCAiLCAiCi0gICAgICA8PCBlMiA8PCAiKSBldmFs
dWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRl
cyB0byAiIDw8IHYxCi0gICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwg
djI7Ci0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIHJldHVybiBBc3NlcnRpb25G
YWlsdXJlKCkgPDwgcHJlZF90ZXh0IDw8ICIoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDw8IGUxIDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMiA8PCAiKSBl
dmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MjsKIH0KIAog
Ly8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9G
T1JNQVQyLgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9Q
UkVEX0ZPUk1BVDJfKHByZWRfZm9ybWF0LCB2MSwgdjIsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9B
U1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCB2MSwgdjIpLFwKKyAgR1RFU1RfQVNTRVJUXyhw
cmVkX2Zvcm1hdCgjdjEsICN2MiwgdjEsIHYyKSwgXAogICAgICAgICAgICAgICAgIG9uX2ZhaWx1
cmUpCiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9
X1BSRUQyLiAgRG9uJ3QgdXNlCkBAIC0xODksMjEgKzE4NCwxOSBAQCBBc3NlcnRpb25SZXN1bHQg
QXNzZXJ0UHJlZDNIZWxwZXIoY29uc3QgY2hhciogcHJlZF90ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFQzJiB2MykgewogICBpZiAocHJlZCh2MSwgdjIsIHYz
KSkgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8
IHByZWRfdGV4dCA8PCAiKCIKLSAgICAgIDw8IGUxIDw8ICIsICIKLSAgICAgIDw8IGUyIDw8ICIs
ICIKLSAgICAgIDw8IGUzIDw8ICIpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmUiCi0gICAgICA8
PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjEKLSAgICAgIDw8ICJcbiIgPDwg
ZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MgotICAgICAgPDwgIlxuIiA8PCBlMyA8PCAiIGV2
YWx1YXRlcyB0byAiIDw8IHYzOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICBy
ZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCBlMSA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgZTIgPDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUzIDw8ICIp
IGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPDwgIlxuIiA8PCBlMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYyCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIiA8PCBlMyA8PCAiIGV2YWx1YXRlcyB0byAi
IDw8IHYzOwogfQogCiAvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8
QVNTRVJUfV9QUkVEX0ZPUk1BVDMuCiAvLyBEb24ndCB1c2UgdGhpcyBpbiB5b3VyIGNvZGUuCiAj
ZGVmaW5lIEdURVNUX1BSRURfRk9STUFUM18ocHJlZF9mb3JtYXQsIHYxLCB2MiwgdjMsIG9uX2Zh
aWx1cmUpXAotICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAjdjMsIHYxLCB2
MiwgdjMpLFwKKyAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3YzLCB2MSwg
djIsIHYzKSwgXAogICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVybmFsIG1h
Y3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQzLiAgRG9uJ3QgdXNlCkBA
IC0yNDksMjMgKzI0MiwyMSBAQCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDRIZWxwZXIoY29u
c3QgY2hhciogcHJlZF90ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFQ0JiB2NCkgewogICBpZiAocHJlZCh2MSwgdjIsIHYzLCB2NCkpIHJldHVybiBBc3NlcnRp
b25TdWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBwcmVkX3RleHQgPDwgIigi
Ci0gICAgICA8PCBlMSA8PCAiLCAiCi0gICAgICA8PCBlMiA8PCAiLCAiCi0gICAgICA8PCBlMyA8
PCAiLCAiCi0gICAgICA8PCBlNCA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgotICAg
ICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxCi0gICAgICA8PCAiXG4i
IDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjIKLSAgICAgIDw8ICJcbiIgPDwgZTMgPDwg
IiBldmFsdWF0ZXMgdG8gIiA8PCB2MwotICAgICAgPDwgIlxuIiA8PCBlNCA8PCAiIGV2YWx1YXRl
cyB0byAiIDw8IHY0OwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4g
QXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCBlMSA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
ZTIgPDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUzIDw8ICIsICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlNCA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2Us
IHdoZXJlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBl
dmFsdWF0ZXMgdG8gIiA8PCB2MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIg
PDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NDsK
IH0KIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1f
UFJFRF9GT1JNQVQ0LgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBH
VEVTVF9QUkVEX0ZPUk1BVDRfKHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCB2NCwgb25fZmFpbHVy
ZSlcCi0gIEdURVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoI3YxLCAjdjIsICN2MywgI3Y0LCB2MSwg
djIsIHYzLCB2NCksXAorICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAjdjMs
ICN2NCwgdjEsIHYyLCB2MywgdjQpLCBcCiAgICAgICAgICAgICAgICAgb25fZmFpbHVyZSkKIAog
Ly8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRDQu
ICBEb24ndCB1c2UKQEAgLTMxNiwyNSArMzA3LDIzIEBAIEFzc2VydGlvblJlc3VsdCBBc3NlcnRQ
cmVkNUhlbHBlcihjb25zdCBjaGFyKiBwcmVkX3RleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVDUmIHY1KSB7CiAgIGlmIChwcmVkKHYxLCB2MiwgdjMsIHY0LCB2
NSkpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8
PCBwcmVkX3RleHQgPDwgIigiCi0gICAgICA8PCBlMSA8PCAiLCAiCi0gICAgICA8PCBlMiA8PCAi
LCAiCi0gICAgICA8PCBlMyA8PCAiLCAiCi0gICAgICA8PCBlNCA8PCAiLCAiCi0gICAgICA8PCBl
NSA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8
PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxCi0gICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVh
dGVzIHRvICIgPDwgdjIKLSAgICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8
PCB2MwotICAgICAgPDwgIlxuIiA8PCBlNCA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHY0Ci0gICAg
ICA8PCAiXG4iIDw8IGU1IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjU7Ci0gIHJldHVybiBBc3Nl
cnRpb25GYWlsdXJlKG1zZyk7CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgcHJlZF90
ZXh0IDw8ICIoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUxIDw8ICIsICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMiA8PCAiLCAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPDwgZTMgPDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
IGU0IDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlNSA8PCAiKSBldmFs
dWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJc
biIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2
MworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTQgPDwgIiBldmFsdWF0
ZXMgdG8gIiA8PCB2NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTUg
PDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NTsKIH0KIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGlt
cGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQ1LgogLy8gRG9uJ3QgdXNlIHRo
aXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDVfKHByZWRfZm9ybWF0
LCB2MSwgdjIsIHYzLCB2NCwgdjUsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NFUlRfKHByZWRf
Zm9ybWF0KCN2MSwgI3YyLCAjdjMsICN2NCwgI3Y1LCB2MSwgdjIsIHYzLCB2NCwgdjUpLFwKKyAg
R1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3YzLCAjdjQsICN2NSwgdjEsIHYy
LCB2MywgdjQsIHY1KSwgXAogICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVy
bmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQ1LiAgRG9uJ3Qg
dXNlCkBAIC0zNjUsNCArMzU0LDYgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQ1SGVscGVy
KGNvbnN0IGNoYXIqIHByZWRfdGV4dCwKIAogCiAKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisK
ICNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5o
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmgKaW5k
ZXggZGE4MGRkYzZjNzBlZTJkYzc3M2VkNjc2NWE0Zjg5ZGZhOGNiMzhlOC4uZTY1MTY3MWViZGU4
NTlmYzczMWI1NDU5YmRjMDY2MWFmMDc1N2NiNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmgKQEAgLTI2LDEwICsyNiwxMCBAQAog
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIEdvb2dsZSBDKysg
VGVzdGluZyBGcmFtZXdvcmsgZGVmaW5pdGlvbnMgdXNlZnVsIGluIHByb2R1Y3Rpb24gY29kZS4K
Ky8vIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgZGVmaW5pdGlvbnMg
dXNlZnVsIGluIHByb2R1Y3Rpb24gY29kZS4KKy8vIEdPT0dMRVRFU1RfQ00wMDAzIERPIE5PVCBE
RUxFVEUKIAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BST0RfSF8KICNkZWZp
bmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUk9EX0hfCkBAIC00MCwxNyArNDAsMjAgQEAK
IC8vCiAvLyBjbGFzcyBNeUNsYXNzIHsKIC8vICBwcml2YXRlOgotLy8gICB2b2lkIE15TWV0aG9k
KCk7Ci0vLyAgIEZSSUVORF9URVNUKE15Q2xhc3NUZXN0LCBNeU1ldGhvZCk7CisvLyAgIHZvaWQg
UHJpdmF0ZU1ldGhvZCgpOworLy8gICBGUklFTkRfVEVTVChNeUNsYXNzVGVzdCwgUHJpdmF0ZU1l
dGhvZFdvcmtzKTsKIC8vIH07CiAvLwogLy8gY2xhc3MgTXlDbGFzc1Rlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7CiAvLyAgIC8vIC4uLgogLy8gfTsKIC8vCi0vLyBURVNUX0YoTXlDbGFzc1Rl
c3QsIE15TWV0aG9kKSB7Ci0vLyAgIC8vIENhbiBjYWxsIE15Q2xhc3M6Ok15TWV0aG9kKCkgaGVy
ZS4KKy8vIFRFU1RfRihNeUNsYXNzVGVzdCwgUHJpdmF0ZU1ldGhvZFdvcmtzKSB7CisvLyAgIC8v
IENhbiBjYWxsIE15Q2xhc3M6OlByaXZhdGVNZXRob2QoKSBoZXJlLgogLy8gfQorLy8KKy8vIE5v
dGU6IFRoZSB0ZXN0IGNsYXNzIG11c3QgYmUgaW4gdGhlIHNhbWUgbmFtZXNwYWNlIGFzIHRoZSBj
bGFzcyBiZWluZyB0ZXN0ZWQuCisvLyBGb3IgZXhhbXBsZSwgcHV0dGluZyBNeUNsYXNzVGVzdCBp
biBhbiBhbm9ueW1vdXMgbmFtZXNwYWNlIHdpbGwgbm90IHdvcmsuCiAKICNkZWZpbmUgRlJJRU5E
X1RFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSlcCiBmcmllbmQgY2xhc3MgdGVzdF9jYXNl
X25hbWUjI18jI3Rlc3RfbmFtZSMjX1Rlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL1JFQURNRS5tZCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL1JFQURNRS5tZApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mZjM5MWZiNGUyYjU3NjVjYWM4YzY5NDMzNTliMTViYmQ1ZjRmMTQ5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9jdXN0b20vUkVBRE1FLm1kCkBAIC0wLDAgKzEsNTYgQEAKKyMgQ3VzdG9taXphdGlvbiBQ
b2ludHMKKworVGhlIGN1c3RvbSBkaXJlY3RvcnkgaXMgYW4gaW5qZWN0aW9uIHBvaW50IGZvciBj
dXN0b20gdXNlciBjb25maWd1cmF0aW9ucy4KKworIyMgSGVhZGVyIGBndGVzdC5oYAorCisjIyMg
VGhlIGZvbGxvd2luZyBtYWNyb3MgY2FuIGJlIGRlZmluZWQ6CisKKyogICBgR1RFU1RfT1NfU1RB
Q0tfVFJBQ0VfR0VUVEVSX2AgLSBUaGUgbmFtZSBvZiBhbiBpbXBsZW1lbnRhdGlvbiBvZgorICAg
IGBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2VgLgorKiAgIGBHVEVTVF9DVVNUT01fVEVNUERJ
Ul9GVU5DVElPTl9gIC0gQW4gb3ZlcnJpZGUgZm9yIGB0ZXN0aW5nOjpUZW1wRGlyKClgLiBTZWUK
KyAgICBgdGVzdGluZzo6VGVtcERpcmAgZm9yIHNlbWFudGljcyBhbmQgc2lnbmF0dXJlLgorCisj
IyBIZWFkZXIgYGd0ZXN0LXBvcnQuaGAKKworVGhlIGZvbGxvd2luZyBtYWNyb3MgY2FuIGJlIGRl
ZmluZWQ6CisKKyMjIyBGbGFnIHJlbGF0ZWQgbWFjcm9zOgorCisqICAgYEdURVNUX0ZMQUcoZmxh
Z19uYW1lKWAKKyogICBgR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHX2AgLSBEZWZpbmUgdG8g
MCB3aGVuIHRoZSBzeXN0ZW0gcHJvdmlkZXMgaXRzCisgICAgb3duIGZsYWdmaWxlIGZsYWcgcGFy
c2luZy4KKyogICBgR1RFU1RfREVDTEFSRV9ib29sXyhuYW1lKWAKKyogICBgR1RFU1RfREVDTEFS
RV9pbnQzMl8obmFtZSlgCisqICAgYEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhuYW1lKWAKKyogICBg
R1RFU1RfREVGSU5FX2Jvb2xfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpYAorKiAgIGBHVEVTVF9E
RUZJTkVfaW50MzJfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpYAorKiAgIGBHVEVTVF9ERUZJTkVf
c3RyaW5nXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKWAKKworIyMjIExvZ2dpbmc6CisKKyogICBg
R1RFU1RfTE9HXyhzZXZlcml0eSlgCisqICAgYEdURVNUX0NIRUNLXyhjb25kaXRpb24pYAorKiAg
IEZ1bmN0aW9ucyBgTG9nVG9TdGRlcnIoKWAgYW5kIGBGbHVzaEluZm9Mb2coKWAgaGF2ZSB0byBi
ZSBwcm92aWRlZCB0b28uCisKKyMjIyBUaHJlYWRpbmc6CisKKyogICBgR1RFU1RfSEFTX05PVElG
SUNBVElPTl9gIC0gRW5hYmxlZCBpZiBOb3RpZmljYXRpb24gaXMgYWxyZWFkeSBwcm92aWRlZC4K
KyogICBgR1RFU1RfSEFTX01VVEVYX0FORF9USFJFQURfTE9DQUxfYCAtIEVuYWJsZWQgaWYgYE11
dGV4YCBhbmQgYFRocmVhZExvY2FsYAorICAgIGFyZSBhbHJlYWR5IHByb3ZpZGVkLiBNdXN0IGFs
c28gcHJvdmlkZSBgR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVURVhfKG11dGV4KWAKKyAgICBhbmQg
YEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKG11dGV4KWAKKyogICBgR1RFU1RfRVhDTFVTSVZF
X0xPQ0tfUkVRVUlSRURfKGxvY2tzKWAKKyogICBgR1RFU1RfTE9DS19FWENMVURFRF8obG9ja3Mp
YAorCisjIyMgVW5kZXJseWluZyBsaWJyYXJ5IHN1cHBvcnQgZmVhdHVyZXMKKworKiAgIGBHVEVT
VF9IQVNfQ1hYQUJJX0hfYAorCisjIyMgRXhwb3J0aW5nIEFQSSBzeW1ib2xzOgorCisqICAgYEdU
RVNUX0FQSV9gIC0gU3BlY2lmaWVyIGZvciBleHBvcnRlZCBzeW1ib2xzLgorCisjIyBIZWFkZXIg
YGd0ZXN0LXByaW50ZXJzLmhgCisKKyogICBTZWUgZG9jdW1lbnRhdGlvbiBhdCBgZ3Rlc3QvZ3Rl
c3QtcHJpbnRlcnMuaGAgZm9yIGRldGFpbHMgb24gaG93IHRvIGRlZmluZSBhCisgICAgY3VzdG9t
IHByaW50ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2Q4NWQ5NTZkMmRjMTdiZDUzN2YyMTQyMzQwYmRmNThmNDczNzExOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9t
L2d0ZXN0LXBvcnQuaApAQCAtMCwwICsxLDM3IEBACisvLyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xl
IEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
Ky8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gSW5qZWN0aW9uIHBvaW50IGZvciBjdXN0b20gdXNl
ciBjb25maWd1cmF0aW9ucy4gU2VlIFJFQURNRSBmb3IgZGV0YWlscworLy8KKy8vICoqIEN1c3Rv
bSBpbXBsZW1lbnRhdGlvbiBzdGFydHMgaGVyZSAqKgorCisjaWZuZGVmIEdURVNUX0lOQ0xVREVf
R1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX1BPUlRfSF8KKyNkZWZpbmUgR1RFU1RfSU5DTFVE
RV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RFU1RfUE9SVF9IXworCisjZW5kaWYgIC8vIEdURVNU
X0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX1BPUlRfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0
ZXN0LXByaW50ZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2N1c3RvbS9ndGVzdC1wcmludGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViNDQ2N2FiY2FiZWE3
ZmY3NmY5ZDJkNTI3Mzg3YzlkYTgxMDE0OGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wcmludGVy
cy5oCkBAIC0wLDAgKzEsNDIgQEAKKy8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgorLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
Ky8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
Ky8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKy8vCisvLyBUaGlzIGZpbGUgcHJvdmlkZXMgYW4gaW5qZWN0aW9uIHBvaW50IGZv
ciBjdXN0b20gcHJpbnRlcnMgaW4gYSBsb2NhbAorLy8gaW5zdGFsbGF0aW9uIG9mIGdUZXN0Lgor
Ly8gSXQgd2lsbCBiZSBpbmNsdWRlZCBmcm9tIGd0ZXN0LXByaW50ZXJzLmggYW5kIHRoZSBvdmVy
cmlkZXMgaW4gdGhpcyBmaWxlCisvLyB3aWxsIGJlIHZpc2libGUgdG8gZXZlcnlvbmUuCisvLwor
Ly8gSW5qZWN0aW9uIHBvaW50IGZvciBjdXN0b20gdXNlciBjb25maWd1cmF0aW9ucy4gU2VlIFJF
QURNRSBmb3IgZGV0YWlscworLy8KKy8vICoqIEN1c3RvbSBpbXBsZW1lbnRhdGlvbiBzdGFydHMg
aGVyZSAqKgorCisjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dU
RVNUX1BSSU5URVJTX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VT
VE9NX0dURVNUX1BSSU5URVJTX0hfCisKKyNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9J
TlRFUk5BTF9DVVNUT01fR1RFU1RfUFJJTlRFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRjOGUwN2JlMjNmMWZkNjE1OWFmZWYyZWVmZDc0NDQwMzRkZDA2MDQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2N1c3RvbS9ndGVzdC5oCkBAIC0wLDAgKzEsMzcgQEAKKy8vIENvcHlyaWdodCAyMDE1
LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBJbmplY3Rpb24gcG9pbnQgZm9yIGN1
c3RvbSB1c2VyIGNvbmZpZ3VyYXRpb25zLiBTZWUgUkVBRE1FIGZvciBkZXRhaWxzCisvLworLy8g
KiogQ3VzdG9tIGltcGxlbWVudGF0aW9uIHN0YXJ0cyBoZXJlICoqCisKKyNpZm5kZWYgR1RFU1Rf
SU5DTFVERV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RFU1RfSF8KKyNkZWZpbmUgR1RFU1RfSU5D
TFVERV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RFU1RfSF8KKworI2VuZGlmICAvLyBHVEVTVF9J
TkNMVURFX0dURVNUX0lOVEVSTkFMX0NVU1RPTV9HVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0
LWludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVy
bmFsL2d0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaAppbmRleCBlNDMzMDg0OGQ0ZWFlNTcwZjI4
MGRhYzU3Y2YwMGIyOTcyMmM3ZDBjLi4wYTliNDJjOGE1NzJhODcxOTRjNjUxMDkwM2UyMWVhMjI2
MGZhYzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3QtaW50ZXJu
YWwuaApAQCAtMjcsMTcgKzI3LDE4IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAvLwotLy8gQXV0aG9yczogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiksIGVlZmFjbUBn
bWFpbC5jb20gKFNlYW4gTWNhZmVlKQotLy8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJh
bWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tp
bmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAvLyBUaGlzIGhlYWRlciBmaWxlIGRlZmlu
ZXMgaW50ZXJuYWwgdXRpbGl0aWVzIG5lZWRlZCBmb3IgaW1wbGVtZW50aW5nCiAvLyBkZWF0aCB0
ZXN0cy4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgorLy8gR09P
R0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQogCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RF
U1RfSU5URVJOQUxfR1RFU1RfREVBVEhfVEVTVF9JTlRFUk5BTF9IXwogI2RlZmluZSBHVEVTVF9J
TkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0RFQVRIX1RFU1RfSU5URVJOQUxfSF8KIAotI2lu
Y2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg+CisjaW5jbHVkZSAiZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+CiAKIG5hbWVz
cGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CkBAIC01MSw2ICs1Miw5IEBAIGNv
bnN0IGNoYXIga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZ1tdID0gImludGVybmFsX3J1bl9kZWF0
aF90ZXN0IjsKIAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCiAKK0dURVNUX0RJU0FCTEVfTVND
X1dBUk5JTkdTX1BVU0hfKDQyNTEgXAorLyogY2xhc3MgQSBuZWVkcyB0byBoYXZlIGRsbC1pbnRl
cmZhY2UgdG8gYmUgdXNlZCBieSBjbGllbnRzIG9mIGNsYXNzIEIgKi8pCisKIC8vIERlYXRoVGVz
dCBpcyBhIGNsYXNzIHRoYXQgaGlkZXMgbXVjaCBvZiB0aGUgY29tcGxleGl0eSBvZiB0aGUKIC8v
IEdURVNUX0RFQVRIX1RFU1RfIG1hY3JvLiAgSXQgaXMgYWJzdHJhY3Q7IGl0cyBzdGF0aWMgQ3Jl
YXRlIG1ldGhvZAogLy8gcmV0dXJucyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiB0
aGUgcHJldmFpbGluZyBkZWF0aCB0ZXN0CkBAIC05Niw4ICsxMDAsMTIgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBEZWF0aFRlc3QgewogICAvLyB0ZXN0LCB0aGVuIHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRl
LgogICBlbnVtIFRlc3RSb2xlIHsgT1ZFUlNFRV9URVNULCBFWEVDVVRFX1RFU1QgfTsKIAotICAv
LyBBbiBlbnVtZXJhdGlvbiBvZiB0aGUgdHdvIHJlYXNvbnMgdGhhdCBhIHRlc3QgbWlnaHQgYmUg
YWJvcnRlZC4KLSAgZW51bSBBYm9ydFJlYXNvbiB7IFRFU1RfRU5DT1VOVEVSRURfUkVUVVJOX1NU
QVRFTUVOVCwgVEVTVF9ESURfTk9UX0RJRSB9OworICAvLyBBbiBlbnVtZXJhdGlvbiBvZiB0aGUg
dGhyZWUgcmVhc29ucyB0aGF0IGEgdGVzdCBtaWdodCBiZSBhYm9ydGVkLgorICBlbnVtIEFib3J0
UmVhc29uIHsKKyAgICBURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQsCisgICAgVEVT
VF9USFJFV19FWENFUFRJT04sCisgICAgVEVTVF9ESURfTk9UX0RJRQorICB9OwogCiAgIC8vIEFz
c3VtZXMgb25lIG9mIHRoZSBhYm92ZSByb2xlcy4KICAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVS
b2xlKCkgPSAwOwpAQCAtMTIxLDE1ICsxMjksMTcgQEAgY2xhc3MgR1RFU1RfQVBJXyBEZWF0aFRl
c3QgewogICAvLyB0aGUgbGFzdCBkZWF0aCB0ZXN0LgogICBzdGF0aWMgY29uc3QgY2hhciogTGFz
dE1lc3NhZ2UoKTsKIAotICBzdGF0aWMgdm9pZCBzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2Uo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgc3RhdGljIHZvaWQgc2V0X2xhc3RfZGVhdGhfdGVz
dF9tZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKTsKIAogIHByaXZhdGU6CiAgIC8v
IEEgc3RyaW5nIGNvbnRhaW5pbmcgYSBkZXNjcmlwdGlvbiBvZiB0aGUgb3V0Y29tZSBvZiB0aGUg
bGFzdCBkZWF0aCB0ZXN0LgotICBzdGF0aWMgU3RyaW5nIGxhc3RfZGVhdGhfdGVzdF9tZXNzYWdl
XzsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIGxhc3RfZGVhdGhfdGVzdF9tZXNzYWdlXzsKIAogICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKERlYXRoVGVzdCk7CiB9OwogCitHVEVTVF9E
SVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkgIC8vICA0MjUxCisKIC8vIEZhY3RvcnkgaW50ZXJm
YWNlIGZvciBkZWF0aCB0ZXN0cy4gIE1heSBiZSBtb2NrZWQgb3V0IGZvciB0ZXN0aW5nLgogY2xh
c3MgRGVhdGhUZXN0RmFjdG9yeSB7CiAgcHVibGljOgpAQCAtMTQ5LDkgKzE1OSwzNCBAQCBjbGFz
cyBEZWZhdWx0RGVhdGhUZXN0RmFjdG9yeSA6IHB1YmxpYyBEZWF0aFRlc3RGYWN0b3J5IHsKIC8v
IGJ5IGEgc2lnbmFsLCBvciBleGl0ZWQgbm9ybWFsbHkgd2l0aCBhIG5vbnplcm8gZXhpdCBjb2Rl
LgogR1RFU1RfQVBJXyBib29sIEV4aXRlZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1cyk7
CiAKKy8vIFRyYXBzIEMrKyBleGNlcHRpb25zIGVzY2FwaW5nIHN0YXRlbWVudCBhbmQgcmVwb3J0
cyB0aGVtIGFzIHRlc3QKKy8vIGZhaWx1cmVzLiBOb3RlIHRoYXQgdHJhcHBpbmcgU0VIIGV4Y2Vw
dGlvbnMgaXMgbm90IGltcGxlbWVudGVkIGhlcmUuCisjIGlmIEdURVNUX0hBU19FWENFUFRJT05T
CisjICBkZWZpbmUgR1RFU1RfRVhFQ1VURV9ERUFUSF9URVNUX1NUQVRFTUVOVF8oc3RhdGVtZW50
LCBkZWF0aF90ZXN0KSBcCisgIHRyeSB7IFwKKyAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJM
RV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKKyAgfSBjYXRjaCAoY29uc3QgOjpz
dGQ6OmV4Y2VwdGlvbiYgZ3Rlc3RfZXhjZXB0aW9uKSB7IFwKKyAgICBmcHJpbnRmKFwKKyAgICAg
ICAgc3RkZXJyLCBcCisgICAgICAgICJcbiVzOiBDYXVnaHQgc3RkOjpleGNlcHRpb24tZGVyaXZl
ZCBleGNlcHRpb24gZXNjYXBpbmcgdGhlICIgXAorICAgICAgICAiZGVhdGggdGVzdCBzdGF0ZW1l
bnQuIEV4Y2VwdGlvbiBtZXNzYWdlOiAlc1xuIiwgXAorICAgICAgICA6OnRlc3Rpbmc6OmludGVy
bmFsOjpGb3JtYXRGaWxlTG9jYXRpb24oX19GSUxFX18sIF9fTElORV9fKS5jX3N0cigpLCBcCisg
ICAgICAgIGd0ZXN0X2V4Y2VwdGlvbi53aGF0KCkpOyBcCisgICAgZmZsdXNoKHN0ZGVycik7IFwK
KyAgICBkZWF0aF90ZXN0LT5BYm9ydCg6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OlRF
U1RfVEhSRVdfRVhDRVBUSU9OKTsgXAorICB9IGNhdGNoICguLi4pIHsgXAorICAgIGRlYXRoX3Rl
c3QtPkFib3J0KDo6dGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVzdDo6VEVTVF9USFJFV19FWENF
UFRJT04pOyBcCisgIH0KKworIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfRVhFQ1VURV9ERUFUSF9U
RVNUX1NUQVRFTUVOVF8oc3RhdGVtZW50LCBkZWF0aF90ZXN0KSBcCisgIEdURVNUX1NVUFBSRVNT
X1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KQorCisjIGVuZGlmCisK
IC8vIFRoaXMgbWFjcm8gaXMgZm9yIGltcGxlbWVudGluZyBBU1NFUlRfREVBVEgqLCBFWFBFQ1Rf
REVBVEgqLAogLy8gQVNTRVJUX0VYSVQqLCBhbmQgRVhQRUNUX0VYSVQqLgotI2RlZmluZSBHVEVT
VF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIGZhaWwpIFwKKyMgZGVm
aW5lIEdURVNUX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgZmFpbCkg
XAogICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCiAgIGlmICg6OnRlc3Rpbmc6Omlu
dGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAogICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6
OlJFJiBndGVzdF9yZWdleCA9IChyZWdleCk7IFwKQEAgLTE3MiwxMCArMjA3LDEyIEBAIEdURVNU
X0FQSV8gYm9vbCBFeGl0ZWRVbnN1Y2Nlc3NmdWxseShpbnQgZXhpdF9zdGF0dXMpOwogICAgICAg
ICBjYXNlIDo6dGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVzdDo6RVhFQ1VURV9URVNUOiB7IFwK
ICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OlJldHVyblNlbnRpbmVs
IFwKICAgICAgICAgICAgICAgZ3Rlc3Rfc2VudGluZWwoZ3Rlc3RfZHQpOyBcCi0gICAgICAgICAg
R1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQp
OyBcCisgICAgICAgICAgR1RFU1RfRVhFQ1VURV9ERUFUSF9URVNUX1NUQVRFTUVOVF8oc3RhdGVt
ZW50LCBndGVzdF9kdCk7IFwKICAgICAgICAgICBndGVzdF9kdC0+QWJvcnQoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6RGVhdGhUZXN0OjpURVNUX0RJRF9OT1RfRElFKTsgXAogICAgICAgICAgIGJyZWFr
OyBcCiAgICAgICAgIH0gXAorICAgICAgICBkZWZhdWx0OiBcCisgICAgICAgICAgYnJlYWs7IFwK
ICAgICAgIH0gXAogICAgIH0gXAogICB9IGVsc2UgXApAQCAtMTg0LDEyICsyMjEsMjcgQEAgR1RF
U1RfQVBJXyBib29sIEV4aXRlZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1cyk7CiAvLyBU
aGUgc3ltYm9sICJmYWlsIiBoZXJlIGV4cGFuZHMgdG8gc29tZXRoaW5nIGludG8gd2hpY2ggYSBt
ZXNzYWdlCiAvLyBjYW4gYmUgc3RyZWFtZWQuCiAKKy8vIFRoaXMgbWFjcm8gaXMgZm9yIGltcGxl
bWVudGluZyBBU1NFUlQvRVhQRUNUX0RFQlVHX0RFQVRIIHdoZW4gY29tcGlsZWQgaW4KKy8vIE5E
RUJVRyBtb2RlLiBJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0aGUgc3RhdGVtZW50cyB0byBiZSBleGVj
dXRlZCBhbmQgdGhlIG1hY3JvCisvLyBtdXN0IGFjY2VwdCBhIHN0cmVhbWVkIG1lc3NhZ2UgZXZl
biB0aG91Z2ggdGhlIG1lc3NhZ2UgaXMgbmV2ZXIgcHJpbnRlZC4KKy8vIFRoZSByZWdleCBvYmpl
Y3QgaXMgbm90IGV2YWx1YXRlZCwgYnV0IGl0IGlzIHVzZWQgdG8gcHJldmVudCAidW51c2VkIgor
Ly8gd2FybmluZ3MgYW5kIHRvIGF2b2lkIGFuIGV4cHJlc3Npb24gdGhhdCBkb2Vzbid0IGNvbXBp
bGUgaW4gZGVidWcgbW9kZS4KKyNkZWZpbmUgR1RFU1RfRVhFQ1VURV9TVEFURU1FTlRfKHN0YXRl
bWVudCwgcmVnZXgpICAgICAgICAgICAgIFwKKyAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tF
Ul8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgaWYgKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBHVEVTVF9T
VVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKKyAg
fSBlbHNlIGlmICghOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7ICAgICAgICAg
ICAgIFwKKyAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpSRSYgZ3Rlc3RfcmVnZXggPSAo
cmVnZXgpOyAgICAgIFwKKyAgICBzdGF0aWNfY2FzdDx2b2lkPihndGVzdF9yZWdleCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSBlbHNlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICA6OnRlc3Rpbmc6Ok1lc3NhZ2Uo
KQorCiAvLyBBIGNsYXNzIHJlcHJlc2VudGluZyB0aGUgcGFyc2VkIGNvbnRlbnRzIG9mIHRoZQog
Ly8gLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFnLCBhcyBpdCBleGlzdGVkIHdo
ZW4KIC8vIFJVTl9BTExfVEVTVFMgd2FzIGNhbGxlZC4KIGNsYXNzIEludGVybmFsUnVuRGVhdGhU
ZXN0RmxhZyB7CiAgcHVibGljOgotICBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoY29uc3QgU3Ry
aW5nJiBhX2ZpbGUsCisgIEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyhjb25zdCBzdGQ6OnN0cmlu
ZyYgYV9maWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFfbGluZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBhbl9pbmRleCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBhX3dyaXRlX2ZkKQpAQCAtMjAxLDEzICsyNTMsMTMgQEAgY2xhc3MgSW50ZXJu
YWxSdW5EZWF0aFRlc3RGbGFnIHsKICAgICAgIHBvc2l4OjpDbG9zZSh3cml0ZV9mZF8pOwogICB9
CiAKLSAgU3RyaW5nIGZpbGUoKSBjb25zdCB7IHJldHVybiBmaWxlXzsgfQorICBjb25zdCBzdGQ6
OnN0cmluZyYgZmlsZSgpIGNvbnN0IHsgcmV0dXJuIGZpbGVfOyB9CiAgIGludCBsaW5lKCkgY29u
c3QgeyByZXR1cm4gbGluZV87IH0KICAgaW50IGluZGV4KCkgY29uc3QgeyByZXR1cm4gaW5kZXhf
OyB9CiAgIGludCB3cml0ZV9mZCgpIGNvbnN0IHsgcmV0dXJuIHdyaXRlX2ZkXzsgfQogCiAgcHJp
dmF0ZToKLSAgU3RyaW5nIGZpbGVfOworICBzdGQ6OnN0cmluZyBmaWxlXzsKICAgaW50IGxpbmVf
OwogICBpbnQgaW5kZXhfOwogICBpbnQgd3JpdGVfZmRfOwpAQCAtMjIwLDUzICsyNzIsNiBAQCBj
bGFzcyBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcgewogLy8gdGhlIGZsYWcgaXMgc3BlY2lmaWVk
OyBvdGhlcndpc2UgcmV0dXJucyBOVUxMLgogSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBQYXJz
ZUludGVybmFsUnVuRGVhdGhUZXN0RmxhZygpOwogCi0jZWxzZSAgLy8gR1RFU1RfSEFTX0RFQVRI
X1RFU1QKLQotLy8gVGhpcyBtYWNybyBpcyB1c2VkIGZvciBpbXBsZW1lbnRpbmcgbWFjcm9zIHN1
Y2ggYXMKLS8vIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQgYW5kIEFTU0VSVF9ERUFUSF9JRl9T
VVBQT1JURUQgb24gc3lzdGVtcyB3aGVyZQotLy8gZGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0
ZWQuIFRob3NlIG1hY3JvcyBtdXN0IGNvbXBpbGUgb24gc3VjaCBzeXN0ZW1zCi0vLyBpZmYgRVhQ
RUNUX0RFQVRIIGFuZCBBU1NFUlRfREVBVEggY29tcGlsZSB3aXRoIHRoZSBzYW1lIHBhcmFtZXRl
cnMgb24KLS8vIHN5c3RlbXMgdGhhdCBzdXBwb3J0IGRlYXRoIHRlc3RzLiBUaGlzIGFsbG93cyBv
bmUgdG8gd3JpdGUgc3VjaCBhIG1hY3JvCi0vLyBvbiBhIHN5c3RlbSB0aGF0IGRvZXMgbm90IHN1
cHBvcnQgZGVhdGggdGVzdHMgYW5kIGJlIHN1cmUgdGhhdCBpdCB3aWxsCi0vLyBjb21waWxlIG9u
IGEgZGVhdGgtdGVzdCBzdXBwb3J0aW5nIHN5c3RlbS4KLS8vCi0vLyBQYXJhbWV0ZXJzOgotLy8g
ICBzdGF0ZW1lbnQgLSAgQSBzdGF0ZW1lbnQgdGhhdCBhIG1hY3JvIHN1Y2ggYXMgRVhQRUNUX0RF
QVRIIHdvdWxkIHRlc3QKLS8vICAgICAgICAgICAgICAgIGZvciBwcm9ncmFtIHRlcm1pbmF0aW9u
LiBUaGlzIG1hY3JvIGhhcyB0byBtYWtlIHN1cmUgdGhpcwotLy8gICAgICAgICAgICAgICAgc3Rh
dGVtZW50IGlzIGNvbXBpbGVkIGJ1dCBub3QgZXhlY3V0ZWQsIHRvIGVuc3VyZSB0aGF0Ci0vLyAg
ICAgICAgICAgICAgICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEIGNvbXBpbGVzIHdpdGggYSBj
ZXJ0YWluCi0vLyAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgaWZmIEVYUEVDVF9ERUFUSCBjb21w
aWxlcyB3aXRoIGl0LgotLy8gICByZWdleCAgICAgLSAgQSByZWdleCB0aGF0IGEgbWFjcm8gc3Vj
aCBhcyBFWFBFQ1RfREVBVEggd291bGQgdXNlIHRvIHRlc3QKLS8vICAgICAgICAgICAgICAgIHRo
ZSBvdXRwdXQgb2Ygc3RhdGVtZW50LiAgVGhpcyBwYXJhbWV0ZXIgaGFzIHRvIGJlCi0vLyAgICAg
ICAgICAgICAgICBjb21waWxlZCBidXQgbm90IGV2YWx1YXRlZCBieSB0aGlzIG1hY3JvLCB0byBl
bnN1cmUgdGhhdAotLy8gICAgICAgICAgICAgICAgdGhpcyBtYWNybyBvbmx5IGFjY2VwdHMgZXhw
cmVzc2lvbnMgdGhhdCBhIG1hY3JvIHN1Y2ggYXMKLS8vICAgICAgICAgICAgICAgIEVYUEVDVF9E
RUFUSCB3b3VsZCBhY2NlcHQuCi0vLyAgIHRlcm1pbmF0b3IgLSBNdXN0IGJlIGFuIGVtcHR5IHN0
YXRlbWVudCBmb3IgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRAotLy8gICAgICAgICAgICAgICAg
YW5kIGEgcmV0dXJuIHN0YXRlbWVudCBmb3IgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRC4KLS8v
ICAgICAgICAgICAgICAgIFRoaXMgZW5zdXJlcyB0aGF0IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JU
RUQgd2lsbCBub3QKLS8vICAgICAgICAgICAgICAgIGNvbXBpbGUgaW5zaWRlIGZ1bmN0aW9ucyB3
aGVyZSBBU1NFUlRfREVBVEggZG9lc24ndAotLy8gICAgICAgICAgICAgICAgY29tcGlsZS4KLS8v
Ci0vLyAgVGhlIGJyYW5jaCB0aGF0IGhhcyBhbiBhbHdheXMgZmFsc2UgY29uZGl0aW9uIGlzIHVz
ZWQgdG8gZW5zdXJlIHRoYXQKLS8vICBzdGF0ZW1lbnQgYW5kIHJlZ2V4IGFyZSBjb21waWxlZCAo
YW5kIHRodXMgc3ludGFjdGljYWxseSBjb3JyZWN0KSBidXQKLS8vICBuZXZlciBleGVjdXRlZC4g
VGhlIHVucmVhY2hhYmxlIGNvZGUgbWFjcm8gcHJvdGVjdHMgdGhlIHRlcm1pbmF0b3IKLS8vICBz
dGF0ZW1lbnQgZnJvbSBnZW5lcmF0aW5nIGFuICd1bnJlYWNoYWJsZSBjb2RlJyB3YXJuaW5nIGlu
IGNhc2UKLS8vICBzdGF0ZW1lbnQgdW5jb25kaXRpb25hbGx5IHJldHVybnMgb3IgdGhyb3dzLiBU
aGUgTWVzc2FnZSBjb25zdHJ1Y3RvciBhdAotLy8gIHRoZSBlbmQgYWxsb3dzIHRoZSBzeW50YXgg
b2Ygc3RyZWFtaW5nIGFkZGl0aW9uYWwgbWVzc2FnZXMgaW50byB0aGUKLS8vICBtYWNybywgZm9y
IGNvbXBpbGF0aW9uYWwgY29tcGF0aWJpbGl0eSB3aXRoIEVYUEVDVF9ERUFUSC9BU1NFUlRfREVB
VEguCi0jZGVmaW5lIEdURVNUX1VOU1VQUE9SVEVEX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcmVn
ZXgsIHRlcm1pbmF0b3IpIFwKLSAgICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0g
ICAgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBcCi0gICAgICBHVEVT
VF9MT0dfKFdBUk5JTkcpIFwKLSAgICAgICAgICA8PCAiRGVhdGggdGVzdHMgYXJlIG5vdCBzdXBw
b3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS5cbiIgXAotICAgICAgICAgIDw8ICJTdGF0ZW1lbnQgJyIg
I3N0YXRlbWVudCAiJyBjYW5ub3QgYmUgdmVyaWZpZWQuIjsgXAotICAgIH0gZWxzZSBpZiAoOjp0
ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2UoKSkgeyBcCi0gICAgICA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpSRTo6UGFydGlhbE1hdGNoKCIuKiIsIChyZWdleCkpOyBcCi0gICAgICBHVEVTVF9T
VVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKLSAg
ICAgIHRlcm1pbmF0b3I7IFwKLSAgICB9IGVsc2UgXAotICAgICAgOjp0ZXN0aW5nOjpNZXNzYWdl
KCkKLQogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCiB9ICAvLyBuYW1lc3BhY2Ug
aW50ZXJuYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaAppbmRleCA0Yjc2ZDc5NTA2YjAy
NmFiYTM3MTY0NzJmYzQzY2VmYzFhN2UzODhhLi5hZTM4ZDk1YmY4NDRmYTlkYzIxNzM5Y2Y4MjEy
NzZkNWIzNDE3ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oCkBAIC0yNywyMCAr
MjcsMjMgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRob3I6
IGtlaXRoLnJheUBnbWFpbC5jb20gKEtlaXRoIFJheSkKLS8vCiAvLyBHb29nbGUgVGVzdCBmaWxl
cGF0aCB1dGlsaXRpZXMKIC8vCiAvLyBUaGlzIGhlYWRlciBmaWxlIGRlY2xhcmVzIGNsYXNzZXMg
YW5kIGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkgYnkKIC8vIEdvb2dsZSBUZXN0LiAgVGhleSBh
cmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCiAvLwotLy8gVGhpcyBmaWxlIGlz
ICNpbmNsdWRlZCBpbiA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4uCisvLyBUaGlz
IGZpbGUgaXMgI2luY2x1ZGVkIGluIGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmguCiAv
LyBEbyBub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBmaWxlIHNlcGFyYXRlbHkhCiAKKy8vIEdPT0dM
RVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNU
X0lOVEVSTkFMX0dURVNUX0ZJTEVQQVRIX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1Rf
SU5URVJOQUxfR1RFU1RfRklMRVBBVEhfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0
ZXN0LXN0cmluZy5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgor
CitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MjUxIFwKKy8qIGNsYXNzIEEgbmVl
ZHMgdG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50cyBvZiBjbGFzcyBC
ICovKQogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewpAQCAtNjEs
MTEgKzY0LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBGaWxlUGF0aCB7CiAgIEZpbGVQYXRoKCkgOiBw
YXRobmFtZV8oIiIpIHsgfQogICBGaWxlUGF0aChjb25zdCBGaWxlUGF0aCYgcmhzKSA6IHBhdGhu
YW1lXyhyaHMucGF0aG5hbWVfKSB7IH0KIAotICBleHBsaWNpdCBGaWxlUGF0aChjb25zdCBjaGFy
KiBwYXRobmFtZSkgOiBwYXRobmFtZV8ocGF0aG5hbWUpIHsKLSAgICBOb3JtYWxpemUoKTsKLSAg
fQotCi0gIGV4cGxpY2l0IEZpbGVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aG5hbWUpIDogcGF0aG5h
bWVfKHBhdGhuYW1lKSB7CisgIGV4cGxpY2l0IEZpbGVQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBw
YXRobmFtZSkgOiBwYXRobmFtZV8ocGF0aG5hbWUpIHsKICAgICBOb3JtYWxpemUoKTsKICAgfQog
CkBAIC03OCw3ICs3Nyw3IEBAIGNsYXNzIEdURVNUX0FQSV8gRmlsZVBhdGggewogICAgIHBhdGhu
YW1lXyA9IHJocy5wYXRobmFtZV87CiAgIH0KIAotICBTdHJpbmcgVG9TdHJpbmcoKSBjb25zdCB7
IHJldHVybiBwYXRobmFtZV87IH0KKyAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cmluZygpIGNvbnN0
IHsgcmV0dXJuIHBhdGhuYW1lXzsgfQogICBjb25zdCBjaGFyKiBjX3N0cigpIGNvbnN0IHsgcmV0
dXJuIHBhdGhuYW1lXy5jX3N0cigpOyB9CiAKICAgLy8gUmV0dXJucyB0aGUgY3VycmVudCB3b3Jr
aW5nIGRpcmVjdG9yeSwgb3IgIiIgaWYgdW5zdWNjZXNzZnVsLgpAQCAtMTExLDggKzExMCw4IEBA
IGNsYXNzIEdURVNUX0FQSV8gRmlsZVBhdGggewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBGaWxlUGF0aCYgYmFzZV9uYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHRlbnNpb24pOwogCi0gIC8v
IFJldHVybnMgdHJ1ZSBpZmYgdGhlIHBhdGggaXMgTlVMTCBvciAiIi4KLSAgYm9vbCBJc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gY19zdHIoKSA9PSBOVUxMIHx8ICpjX3N0cigpID09ICdcMCc7IH0K
KyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgcGF0aCBpcyAiIi4KKyAgYm9vbCBJc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gcGF0aG5hbWVfLmVtcHR5KCk7IH0KIAogICAvLyBJZiBpbnB1dCBuYW1l
IGhhcyBhIHRyYWlsaW5nIHNlcGFyYXRvciBjaGFyYWN0ZXIsIHJlbW92ZXMgaXQgYW5kIHJldHVy
bnMKICAgLy8gdGhlIG5hbWUsIG90aGVyd2lzZSByZXR1cm4gdGhlIG5hbWUgc3RyaW5nIHVubW9k
aWZpZWQuCkBAIC0yMDEsMTAgKzIwMCwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIEZpbGVQYXRoIHsK
ICAgLy8gc2VwYXJhdG9ycy4gUmV0dXJucyBOVUxMIGlmIG5vIHBhdGggc2VwYXJhdG9yIHdhcyBm
b3VuZC4KICAgY29uc3QgY2hhciogRmluZExhc3RQYXRoU2VwYXJhdG9yKCkgY29uc3Q7CiAKLSAg
U3RyaW5nIHBhdGhuYW1lXzsKKyAgc3RkOjpzdHJpbmcgcGF0aG5hbWVfOwogfTsgIC8vIGNsYXNz
IEZpbGVQYXRoCiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRl
c3RpbmcKIAorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQorCiAj
ZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfRklMRVBBVEhfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtaW50ZXJuYWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaAppbmRleCAzMWE2NmU5OWQzYzQ4MjE1MWU0MGZj
MzVhNDAyNzAwNjkwMzJhMWQ1Li5iNzYyZjYxZmM1M2MzZGI5Y2ZiNzUzOTQwZDkxYjVkNTRhYjM2
MzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2d0ZXN0LWludGVybmFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oCkBAIC0yNywzNCArMjcsNDMgQEAK
IC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRob3JzOiB3YW5AZ29v
Z2xlLmNvbSAoWmhhbnlvbmcgV2FuKSwgZWVmYWNtQGdtYWlsLmNvbSAoU2VhbiBNY2FmZWUpCi0v
LwotLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8g
VGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0
KQogLy8KIC8vIFRoaXMgaGVhZGVyIGZpbGUgZGVjbGFyZXMgZnVuY3Rpb25zIGFuZCBtYWNyb3Mg
dXNlZCBpbnRlcm5hbGx5IGJ5CiAvLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8g
Y2hhbmdlIHdpdGhvdXQgbm90aWNlLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVM
RVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9JTlRFUk5B
TF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0lOVEVSTkFM
X0hfCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAi
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAjaWYgR1RFU1RfT1NfTElOVVgKLSNpbmNs
dWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvd2Fp
dC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgorIyBpbmNsdWRlIDxzdGRsaWIuaD4KKyMgaW5jbHVk
ZSA8c3lzL3R5cGVzLmg+CisjIGluY2x1ZGUgPHN5cy93YWl0Lmg+CisjIGluY2x1ZGUgPHVuaXN0
ZC5oPgogI2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAogCisjaWYgR1RFU1RfSEFTX0VYQ0VQVElP
TlMKKyMgaW5jbHVkZSA8c3RkZXhjZXB0PgorI2VuZGlmCisKICNpbmNsdWRlIDxjdHlwZS5oPgor
I2luY2x1ZGUgPGZsb2F0Lmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8aW9tYW5p
cD4KICNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHNldD4KKyNp
bmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50
ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmls
ZXBhdGguaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaD4KKyNp
bmNsdWRlICJndGVzdC9ndGVzdC1tZXNzYWdlLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtZmlsZXBhdGguaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcu
aCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCIKIAogLy8gRHVl
IHRvIEMrKyBwcmVwcm9jZXNzb3Igd2VpcmRuZXNzLCB3ZSBuZWVkIGRvdWJsZSBpbmRpcmVjdGlv
biB0bwogLy8gY29uY2F0ZW5hdGUgdHdvIHRva2VucyB3aGVuIG9uZSBvZiB0aGVtIGlzIF9fTElO
RV9fLiAgV3JpdGluZwpAQCAtNjcsMzkgKzc2LDE1IEBACiAjZGVmaW5lIEdURVNUX0NPTkNBVF9U
T0tFTl8oZm9vLCBiYXIpIEdURVNUX0NPTkNBVF9UT0tFTl9JTVBMXyhmb28sIGJhcikKICNkZWZp
bmUgR1RFU1RfQ09OQ0FUX1RPS0VOX0lNUExfKGZvbywgYmFyKSBmb28gIyMgYmFyCiAKLS8vIEdv
b2dsZSBUZXN0IGRlZmluZXMgdGhlIHRlc3Rpbmc6Ok1lc3NhZ2UgY2xhc3MgdG8gYWxsb3cgY29u
c3RydWN0aW9uIG9mCi0vLyB0ZXN0IG1lc3NhZ2VzIHZpYSB0aGUgPDwgb3BlcmF0b3IuICBUaGUg
aWRlYSBpcyB0aGF0IGFueXRoaW5nCi0vLyBzdHJlYW1hYmxlIHRvIHN0ZDo6b3N0cmVhbSBjYW4g
YmUgc3RyZWFtZWQgdG8gYSB0ZXN0aW5nOjpNZXNzYWdlLgotLy8gVGhpcyBhbGxvd3MgYSB1c2Vy
IHRvIHVzZSBoaXMgb3duIHR5cGVzIGluIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgYnkKLS8vIG92
ZXJsb2FkaW5nIHRoZSA8PCBvcGVyYXRvci4KLS8vCi0vLyB1dGlsL2d0bC9zdGxfbG9nZ2luZy1p
bmwuaCBvdmVybG9hZHMgPDwgZm9yIFNUTCBjb250YWluZXJzLiAgVGhlc2UKLS8vIG92ZXJsb2Fk
cyBjYW5ub3QgYmUgZGVmaW5lZCBpbiB0aGUgc3RkIG5hbWVzcGFjZSwgYXMgdGhhdCB3aWxsIGJl
Ci0vLyB1bmRlZmluZWQgYmVoYXZpb3IuICBUaGVyZWZvcmUsIHRoZXkgYXJlIGRlZmluZWQgaW4g
dGhlIGdsb2JhbAotLy8gbmFtZXNwYWNlIGluc3RlYWQuCi0vLwotLy8gQysrJ3Mgc3ltYm9sIGxv
b2t1cCBydWxlIChpLmUuIEtvZW5pZyBsb29rdXApIHNheXMgdGhhdCB0aGVzZQotLy8gb3Zlcmxv
YWRzIGFyZSB2aXNpYmxlIGluIGVpdGhlciB0aGUgc3RkIG5hbWVzcGFjZSBvciB0aGUgZ2xvYmFs
Ci0vLyBuYW1lc3BhY2UsIGJ1dCBub3Qgb3RoZXIgbmFtZXNwYWNlcywgaW5jbHVkaW5nIHRoZSB0
ZXN0aW5nCi0vLyBuYW1lc3BhY2Ugd2hpY2ggR29vZ2xlIFRlc3QncyBNZXNzYWdlIGNsYXNzIGlz
IGluLgotLy8KLS8vIFRvIGFsbG93IFNUTCBjb250YWluZXJzIChhbmQgb3RoZXIgdHlwZXMgdGhh
dCBoYXMgYSA8PCBvcGVyYXRvcgotLy8gZGVmaW5lZCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZSkg
dG8gYmUgdXNlZCBpbiBHb29nbGUgVGVzdCBhc3NlcnRpb25zLAotLy8gdGVzdGluZzo6TWVzc2Fn
ZSBtdXN0IGFjY2VzcyB0aGUgY3VzdG9tIDw8IG9wZXJhdG9yIGZyb20gdGhlIGdsb2JhbAotLy8g
bmFtZXNwYWNlLiAgSGVuY2UgdGhpcyBoZWxwZXIgZnVuY3Rpb24uCi0vLwotLy8gTm90ZTogSmVm
ZnJleSBZYXNza2luIHN1Z2dlc3RlZCBhbiBhbHRlcm5hdGl2ZSBmaXggYnkgInVzaW5nCi0vLyA6
Om9wZXJhdG9yPDw7IiBpbiB0aGUgZGVmaW5pdGlvbiBvZiBNZXNzYWdlJ3Mgb3BlcmF0b3I8PC4g
IFRoYXQgZml4Ci0vLyBkb2Vzbid0IHJlcXVpcmUgYSBoZWxwZXIgZnVuY3Rpb24sIGJ1dCB1bmZv
cnR1bmF0ZWx5IGRvZXNuJ3QKLS8vIGNvbXBpbGUgd2l0aCBNU1ZDLgotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1pbmxpbmUgdm9pZCBHVGVzdFN0cmVhbVRvSGVscGVyKHN0ZDo6b3N0cmVhbSogb3Ms
IGNvbnN0IFQmIHZhbCkgewotICAqb3MgPDwgdmFsOwotfQorLy8gU3RyaW5naWZpZXMgaXRzIGFy
Z3VtZW50LgorI2RlZmluZSBHVEVTVF9TVFJJTkdJRllfKG5hbWUpICNuYW1lCisKK2NsYXNzIFBy
b3RvY29sTWVzc2FnZTsKK25hbWVzcGFjZSBwcm90bzIgeyBjbGFzcyBNZXNzYWdlOyB9CiAKIG5h
bWVzcGFjZSB0ZXN0aW5nIHsKIAotLy8gRm9yd2FyZCBkZWNsYXJhdGlvbiBvZiBjbGFzc2VzLgor
Ly8gRm9yd2FyZCBkZWNsYXJhdGlvbnMuCiAKIGNsYXNzIEFzc2VydGlvblJlc3VsdDsgICAgICAg
ICAgICAgICAgIC8vIFJlc3VsdCBvZiBhbiBhc3NlcnRpb24uCiBjbGFzcyBNZXNzYWdlOyAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBSZXByZXNlbnRzIGEgZmFpbHVyZSBtZXNzYWdlLgpAQCAt
MTA4LDI1ICs5MywxOSBAQCBjbGFzcyBUZXN0SW5mbzsgICAgICAgICAgICAgICAgICAgICAgICAv
LyBJbmZvcm1hdGlvbiBhYm91dCBhIHRlc3QuCiBjbGFzcyBUZXN0UGFydFJlc3VsdDsgICAgICAg
ICAgICAgICAgICAvLyBSZXN1bHQgb2YgYSB0ZXN0IHBhcnQuCiBjbGFzcyBVbml0VGVzdDsgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBBIGNvbGxlY3Rpb24gb2YgdGVzdCBjYXNlcy4KIAordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Cis6OnN0ZDo6c3RyaW5nIFByaW50VG9TdHJpbmcoY29uc3QgVCYg
dmFsdWUpOworCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCiBzdHJ1Y3QgVHJhY2VJbmZvOyAgICAg
ICAgICAgICAgICAgICAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCBhIHRyYWNlIHBvaW50LgotY2xh
c3MgU2NvcGVkVHJhY2U7ICAgICAgICAgICAgICAgICAgICAgLy8gSW1wbGVtZW50cyBzY29wZWQg
dHJhY2UuCiBjbGFzcyBUZXN0SW5mb0ltcGw7ICAgICAgICAgICAgICAgICAgICAvLyBPcGFxdWUg
aW1wbGVtZW50YXRpb24gb2YgVGVzdEluZm8KIGNsYXNzIFVuaXRUZXN0SW1wbDsgICAgICAgICAg
ICAgICAgICAgIC8vIE9wYXF1ZSBpbXBsZW1lbnRhdGlvbiBvZiBVbml0VGVzdAogCi0vLyBIb3cg
bWFueSB0aW1lcyBJbml0R29vZ2xlVGVzdCgpIGhhcyBiZWVuIGNhbGxlZC4KLWV4dGVybiBpbnQg
Z19pbml0X2d0ZXN0X2NvdW50OwotCiAvLyBUaGUgdGV4dCB1c2VkIGluIGZhaWx1cmUgbWVzc2Fn
ZXMgdG8gaW5kaWNhdGUgdGhlIHN0YXJ0IG9mIHRoZQogLy8gc3RhY2sgdHJhY2UuCiBHVEVTVF9B
UElfIGV4dGVybiBjb25zdCBjaGFyIGtTdGFja1RyYWNlTWFya2VyW107CiAKLS8vIEEgc2VjcmV0
IHR5cGUgdGhhdCBHb29nbGUgVGVzdCB1c2VycyBkb24ndCBrbm93IGFib3V0LiAgSXQgaGFzIG5v
Ci0vLyBkZWZpbml0aW9uIG9uIHB1cnBvc2UuICBUaGVyZWZvcmUgaXQncyBpbXBvc3NpYmxlIHRv
IGNyZWF0ZSBhCi0vLyBTZWNyZXQgb2JqZWN0LCB3aGljaCBpcyB3aGF0IHdlIHdhbnQuCi1jbGFz
cyBTZWNyZXQ7Ci0KIC8vIFR3byBvdmVybG9hZGVkIGhlbHBlcnMgZm9yIGNoZWNraW5nIGF0IGNv
bXBpbGUgdGltZSB3aGV0aGVyIGFuCiAvLyBleHByZXNzaW9uIGlzIGEgbnVsbCBwb2ludGVyIGxp
dGVyYWwgKGkuZS4gTlVMTCBvciBhbnkgMC12YWx1ZWQKIC8vIGNvbXBpbGUtdGltZSBpbnRlZ3Jh
bCBjb25zdGFudCkuICBUaGVpciByZXR1cm4gdmFsdWVzIGhhdmUKQEAgLTE1MCwxMjcgKzEyOSw2
NSBAQCBjaGFyICgmSXNOdWxsTGl0ZXJhbEhlbHBlciguLi4pKVsyXTsgIC8vIE5PTElOVAogI2lm
ZGVmIEdURVNUX0VMTElQU0lTX05FRURTX1BPRF8KIC8vIFdlIGxvc2Ugc3VwcG9ydCBmb3IgTlVM
TCBkZXRlY3Rpb24gd2hlcmUgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZQogLy8gcGFzc2luZyBu
b24tUE9EIGNsYXNzZXMgdGhyb3VnaCBlbGxpcHNpcyAoLi4uKS4KLSNkZWZpbmUgR1RFU1RfSVNf
TlVMTF9MSVRFUkFMXyh4KSBmYWxzZQorIyBkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4
KSBmYWxzZQogI2Vsc2UKLSNkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBcCisjIGRl
ZmluZSBHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHgpIFwKICAgICAoc2l6ZW9mKDo6dGVzdGluZzo6
aW50ZXJuYWw6OklzTnVsbExpdGVyYWxIZWxwZXIoeCkpID09IDEpCiAjZW5kaWYgIC8vIEdURVNU
X0VMTElQU0lTX05FRURTX1BPRF8KIAogLy8gQXBwZW5kcyB0aGUgdXNlci1zdXBwbGllZCBtZXNz
YWdlIHRvIHRoZSBHb29nbGUtVGVzdC1nZW5lcmF0ZWQgbWVzc2FnZS4KLUdURVNUX0FQSV8gU3Ry
aW5nIEFwcGVuZFVzZXJNZXNzYWdlKGNvbnN0IFN0cmluZyYgZ3Rlc3RfbXNnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVzc2FnZSYgdXNlcl9tc2cpOwotCi0v
LyBBIGhlbHBlciBjbGFzcyBmb3IgY3JlYXRpbmcgc2NvcGVkIHRyYWNlcyBpbiB1c2VyIHByb2dy
YW1zLgotY2xhc3MgR1RFU1RfQVBJXyBTY29wZWRUcmFjZSB7Ci0gcHVibGljOgotICAvLyBUaGUg
Yyd0b3IgcHVzaGVzIHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlvbiBhbmQgbWVzc2FnZSBv
bnRvCi0gIC8vIGEgdHJhY2Ugc3RhY2sgbWFpbnRhaW5lZCBieSBHb29nbGUgVGVzdC4KLSAgU2Nv
cGVkVHJhY2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IE1lc3NhZ2UmIG1lc3Nh
Z2UpOwotCi0gIC8vIFRoZSBkJ3RvciBwb3BzIHRoZSBpbmZvIHB1c2hlZCBieSB0aGUgYyd0b3Iu
Ci0gIC8vCi0gIC8vIE5vdGUgdGhhdCB0aGUgZCd0b3IgaXMgbm90IHZpcnR1YWwgaW4gb3JkZXIg
dG8gYmUgZWZmaWNpZW50LgotICAvLyBEb24ndCBpbmhlcml0IGZyb20gU2NvcGVkVHJhY2UhCi0g
IH5TY29wZWRUcmFjZSgpOwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOXyhTY29wZWRUcmFjZSk7Ci19IEdURVNUX0FUVFJJQlVURV9VTlVTRURfOyAgLy8gQSBT
Y29wZWRUcmFjZSBvYmplY3QgZG9lcyBpdHMgam9iIGluIGl0cwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGMndG9yIGFuZCBkJ3Rvci4gIFRoZXJlZm9yZSBpdCBkb2Vzbid0Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmVlZCB0byBiZSB1c2VkIG90aGVyd2lzZS4KLQot
Ly8gQ29udmVydHMgYSBzdHJlYW1hYmxlIHZhbHVlIHRvIGEgU3RyaW5nLiAgQSBOVUxMIHBvaW50
ZXIgaXMKLS8vIGNvbnZlcnRlZCB0byAiKG51bGwpIi4gIFdoZW4gdGhlIGlucHV0IHZhbHVlIGlz
IGEgOjpzdHJpbmcsCi0vLyA6OnN0ZDo6c3RyaW5nLCA6OndzdHJpbmcsIG9yIDo6c3RkOjp3c3Ry
aW5nIG9iamVjdCwgZWFjaCBOVUwKLS8vIGNoYXJhY3RlciBpbiBpdCBpcyByZXBsYWNlZCB3aXRo
ICJcXDAiLgotLy8gRGVjbGFyZWQgaGVyZSBidXQgZGVmaW5lZCBpbiBndGVzdC5oLCBzbyB0aGF0
IGl0IGhhcyBhY2Nlc3MKLS8vIHRvIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBNZXNzYWdlIGNsYXNz
LCByZXF1aXJlZCBieSB0aGUgQVJNCi0vLyBjb21waWxlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotU3RyaW5nIFN0cmVhbWFibGVUb1N0cmluZyhjb25zdCBUJiBzdHJlYW1hYmxlKTsKLQotLy8g
Rm9ybWF0cyBhIHZhbHVlIHRvIGJlIHVzZWQgaW4gYSBmYWlsdXJlIG1lc3NhZ2UuCi0KLSNpZmRl
ZiBHVEVTVF9ORUVEU19JU19QT0lOVEVSXwotCi0vLyBUaGVzZSBhcmUgbmVlZGVkIGFzIHRoZSBO
b2tpYSBTeW1iaWFuIGFuZCBJQk0gWEwgQy9DKysgY29tcGlsZXJzCi0vLyBjYW5ub3QgZGVjaWRl
IGJldHdlZW4gY29uc3QgVCYgYW5kIGNvbnN0IFQqIGluIGEgZnVuY3Rpb24gdGVtcGxhdGUuCi0v
LyBUaGVzZSBjb21waWxlcnMgX2Nhbl8gZGVjaWRlIGJldHdlZW4gY2xhc3MgdGVtcGxhdGUgc3Bl
Y2lhbGl6YXRpb25zCi0vLyBmb3IgVCBhbmQgVCosIHNvIGEgdHIxOjp0eXBlX3RyYWl0cy1saWtl
IGlzX3BvaW50ZXIgd29ya3MsIGFuZCB3ZQotLy8gY2FuIG92ZXJsb2FkIG9uIHRoYXQuCitHVEVT
VF9BUElfIHN0ZDo6c3RyaW5nIEFwcGVuZFVzZXJNZXNzYWdlKAorICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBndGVzdF9tc2csIGNvbnN0IE1lc3NhZ2UmIHVzZXJfbXNnKTsKIAotLy8gVGhpcyBvdmVy
bG9hZCBtYWtlcyBzdXJlIHRoYXQgYWxsIHBvaW50ZXJzIChpbmNsdWRpbmcKLS8vIHRob3NlIHRv
IGNoYXIgb3Igd2NoYXJfdCkgYXJlIHByaW50ZWQgYXMgcmF3IHBvaW50ZXJzLgotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1pbmxpbmUgU3RyaW5nIEZvcm1hdFZhbHVlRm9yRmFpbHVyZU1lc3NhZ2Uo
aW50ZXJuYWw6OnRydWVfdHlwZSAvKmR1bW15Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVCogcG9pbnRlcikgewotICByZXR1cm4gU3RyZWFtYWJsZVRvU3Ry
aW5nKHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihwb2ludGVyKSk7Ci19Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotaW5saW5lIFN0cmluZyBGb3JtYXRWYWx1ZUZvckZhaWx1cmVNZXNzYWdlKGlu
dGVybmFsOjpmYWxzZV90eXBlIC8qZHVtbXkqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUJiB2YWx1ZSkgewotICByZXR1cm4gU3RyZWFtYWJsZVRv
U3RyaW5nKHZhbHVlKTsKLX0KKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLWlubGluZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3Qg
VCYgdmFsdWUpIHsKLSAgcmV0dXJuIEZvcm1hdFZhbHVlRm9yRmFpbHVyZU1lc3NhZ2UoCi0gICAg
ICB0eXBlbmFtZSBpbnRlcm5hbDo6aXNfcG9pbnRlcjxUPjo6dHlwZSgpLCB2YWx1ZSk7Ci19CitH
VEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0Mjc1IFwKKy8qIGFuIGV4cG9ydGVkIGNs
YXNzIHdhcyBkZXJpdmVkIGZyb20gYSBjbGFzcyB0aGF0IHdhcyBub3QgZXhwb3J0ZWQgKi8pCiAK
LSNlbHNlCisvLyBUaGlzIGV4Y2VwdGlvbiBpcyB0aHJvd24gYnkgKGFuZCBvbmx5IGJ5KSBhIGZh
aWxlZCBHb29nbGUgVGVzdAorLy8gYXNzZXJ0aW9uIHdoZW4gR1RFU1RfRkxBRyh0aHJvd19vbl9m
YWlsdXJlKSBpcyB0cnVlIChpZiBleGNlcHRpb25zCisvLyBhcmUgZW5hYmxlZCkuICBXZSBkZXJp
dmUgaXQgZnJvbSBzdGQ6OnJ1bnRpbWVfZXJyb3IsIHdoaWNoIGlzIGZvcgorLy8gZXJyb3JzIHBy
ZXN1bWFibHkgZGV0ZWN0YWJsZSBvbmx5IGF0IHJ1biB0aW1lLiAgU2luY2UKKy8vIHN0ZDo6cnVu
dGltZV9lcnJvciBpbmhlcml0cyBmcm9tIHN0ZDo6ZXhjZXB0aW9uLCBtYW55IHRlc3RpbmcKKy8v
IGZyYW1ld29ya3Mga25vdyBob3cgdG8gZXh0cmFjdCBhbmQgcHJpbnQgdGhlIG1lc3NhZ2UgaW5z
aWRlIGl0LgorY2xhc3MgR1RFU1RfQVBJXyBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbiA6IHB1
YmxpYyA6OnN0ZDo6cnVudGltZV9lcnJvciB7CisgcHVibGljOgorICBleHBsaWNpdCBHb29nbGVU
ZXN0RmFpbHVyZUV4Y2VwdGlvbihjb25zdCBUZXN0UGFydFJlc3VsdCYgZmFpbHVyZSk7Cit9Owog
Ci0vLyBUaGVzZSBhcmUgbmVlZGVkIGFzIHRoZSBhYm92ZSBzb2x1dGlvbiB1c2luZyBpc19wb2lu
dGVyIGhhcyB0aGUKLS8vIGxpbWl0YXRpb24gdGhhdCBUIGNhbm5vdCBiZSBhIHR5cGUgd2l0aG91
dCBleHRlcm5hbCBsaW5rYWdlLCB3aGVuCi0vLyBjb21waWxlZCB1c2luZyBNU1ZDLgorR1RFU1Rf
RElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI3NQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLWlubGluZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3QgVCYgdmFs
dWUpIHsKLSAgcmV0dXJuIFN0cmVhbWFibGVUb1N0cmluZyh2YWx1ZSk7Ci19CisjZW5kaWYgIC8v
IEdURVNUX0hBU19FWENFUFRJT05TCiAKLS8vIFRoaXMgb3ZlcmxvYWQgbWFrZXMgc3VyZSB0aGF0
IGFsbCBwb2ludGVycyAoaW5jbHVkaW5nCi0vLyB0aG9zZSB0byBjaGFyIG9yIHdjaGFyX3QpIGFy
ZSBwcmludGVkIGFzIHJhdyBwb2ludGVycy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5l
IFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShUKiBwb2ludGVyKSB7Ci0gIHJldHVybiBT
dHJlYW1hYmxlVG9TdHJpbmcoc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHBvaW50ZXIpKTsKLX0K
K25hbWVzcGFjZSBlZGl0X2Rpc3RhbmNlIHsKKy8vIFJldHVybnMgdGhlIG9wdGltYWwgZWRpdHMg
dG8gZ28gZnJvbSAnbGVmdCcgdG8gJ3JpZ2h0Jy4KKy8vIEFsbCBlZGl0cyBjb3N0IHRoZSBzYW1l
LCB3aXRoIHJlcGxhY2UgaGF2aW5nIGxvd2VyIHByaW9yaXR5IHRoYW4KKy8vIGFkZC9yZW1vdmUu
CisvLyBTaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFdhZ25lci1GaXNjaGVyIGFsZ29yaXRo
bS4KKy8vIFNlZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dhZ25lci1GaXNjaGVyX2Fs
Z29yaXRobQorZW51bSBFZGl0VHlwZSB7IGtNYXRjaCwga0FkZCwga1JlbW92ZSwga1JlcGxhY2Ug
fTsKK0dURVNUX0FQSV8gc3RkOjp2ZWN0b3I8RWRpdFR5cGU+IENhbGN1bGF0ZU9wdGltYWxFZGl0
cygKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+JiBsZWZ0LCBjb25zdCBzdGQ6OnZlY3Rv
cjxzaXplX3Q+JiByaWdodCk7CiAKLSNlbmRpZiAgLy8gR1RFU1RfTkVFRFNfSVNfUE9JTlRFUl8K
LQotLy8gVGhlc2Ugb3ZlcmxvYWRlZCB2ZXJzaW9ucyBoYW5kbGUgbmFycm93IGFuZCB3aWRlIGNo
YXJhY3RlcnMuCi1HVEVTVF9BUElfIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjaGFy
IGNoKTsKLUdURVNUX0FQSV8gU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKHdjaGFyX3Qg
d2NoYXIpOwotCi0vLyBXaGVuIHRoaXMgb3BlcmFuZCBpcyBhIGNvbnN0IGNoYXIqIG9yIGNoYXIq
LCBhbmQgdGhlIG90aGVyIG9wZXJhbmQKLS8vIGlzIGEgOjpzdGQ6OnN0cmluZyBvciA6OnN0cmlu
Zywgd2UgcHJpbnQgdGhpcyBvcGVyYW5kIGFzIGEgQyBzdHJpbmcKLS8vIHJhdGhlciB0aGFuIGEg
cG9pbnRlci4gIFdlIGRvIHRoZSBzYW1lIGZvciB3aWRlIHN0cmluZ3MuCi0KLS8vIFRoaXMgaW50
ZXJuYWwgbWFjcm8gaXMgdXNlZCB0byBhdm9pZCBkdXBsaWNhdGVkIGNvZGUuCi0jZGVmaW5lIEdU
RVNUX0ZPUk1BVF9JTVBMXyhvcGVyYW5kMl90eXBlLCBvcGVyYW5kMV9wcmludGVyKVwKLWlubGlu
ZSBTdHJpbmcgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKFwKLSAgICBvcGVyYW5k
Ml90eXBlOjp2YWx1ZV90eXBlKiBzdHIsIGNvbnN0IG9wZXJhbmQyX3R5cGUmIC8qb3BlcmFuZDIq
Lykge1wKLSAgcmV0dXJuIG9wZXJhbmQxX3ByaW50ZXIoc3RyKTtcCi19XAotaW5saW5lIFN0cmlu
ZyBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoXAotICAgIGNvbnN0IG9wZXJhbmQy
X3R5cGU6OnZhbHVlX3R5cGUqIHN0ciwgY29uc3Qgb3BlcmFuZDJfdHlwZSYgLypvcGVyYW5kMiov
KSB7XAotICByZXR1cm4gb3BlcmFuZDFfcHJpbnRlcihzdHIpO1wKLX0KKy8vIFNhbWUgYXMgYWJv
dmUsIGJ1dCB0aGUgaW5wdXQgaXMgcmVwcmVzZW50ZWQgYXMgc3RyaW5ncy4KK0dURVNUX0FQSV8g
c3RkOjp2ZWN0b3I8RWRpdFR5cGU+IENhbGN1bGF0ZU9wdGltYWxFZGl0cygKKyAgICBjb25zdCBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGxlZnQsCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+JiByaWdodCk7CiAKLUdURVNUX0ZPUk1BVF9JTVBMXyg6OnN0ZDo6c3RyaW5nLCBT
dHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKQotI2lmIEdURVNUX0hBU19TVERfV1NUUklORwotR1RF
U1RfRk9STUFUX0lNUExfKDo6c3RkOjp3c3RyaW5nLCBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1
b3RlZCkKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RSSU5HCisvLyBDcmVhdGUgYSBkaWZm
IG9mIHRoZSBpbnB1dCBzdHJpbmdzIGluIFVuaWZpZWQgZGlmZiBmb3JtYXQuCitHVEVTVF9BUElf
IHN0ZDo6c3RyaW5nIENyZWF0ZVVuaWZpZWREaWZmKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiYgbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiByaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvbnRleHQgPSAyKTsKIAotI2lmIEdURVNUX0hB
U19HTE9CQUxfU1RSSU5HCi1HVEVTVF9GT1JNQVRfSU1QTF8oOjpzdHJpbmcsIFN0cmluZzo6U2hv
d0NTdHJpbmdRdW90ZWQpCi0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0jaWYg
R1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCi1HVEVTVF9GT1JNQVRfSU1QTF8oOjp3c3RyaW5nLCBT
dHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZCkKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JB
TF9XU1RSSU5HCit9ICAvLyBuYW1lc3BhY2UgZWRpdF9kaXN0YW5jZQogCi0jdW5kZWYgR1RFU1Rf
Rk9STUFUX0lNUExfCisvLyBDYWxjdWxhdGUgdGhlIGRpZmYgYmV0d2VlbiAnbGVmdCcgYW5kICdy
aWdodCcgYW5kIHJldHVybiBpdCBpbiB1bmlmaWVkIGRpZmYKKy8vIGZvcm1hdC4KKy8vIElmIG5v
dCBudWxsLCBzdG9yZXMgaW4gJ3RvdGFsX2xpbmVfY291bnQnIHRoZSB0b3RhbCBudW1iZXIgb2Yg
bGluZXMgZm91bmQKKy8vIGluIGxlZnQgKyByaWdodC4KK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcg
RGlmZlN0cmluZ3MoY29uc3Qgc3RkOjpzdHJpbmcmIGxlZnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiByaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiB0b3RhbF9saW5lX2NvdW50KTsKIAogLy8gQ29u
c3RydWN0cyBhbmQgcmV0dXJucyB0aGUgbWVzc2FnZSBmb3IgYW4gZXF1YWxpdHkgYXNzZXJ0aW9u
CiAvLyAoZS5nLiBBU1NFUlRfRVEsIEVYUEVDVF9TVFJFUSwgZXRjKSBmYWlsdXJlLgpAQCAtMjg5
LDEyICsyMDYsMTIgQEAgR1RFU1RfRk9STUFUX0lNUExfKDo6d3N0cmluZywgU3RyaW5nOjpTaG93
V2lkZUNTdHJpbmdRdW90ZWQpCiAvLyBiZSBpbnNlcnRlZCBpbnRvIHRoZSBtZXNzYWdlLgogR1RF
U1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgRXFGYWlsdXJlKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4
cHJlc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiBleHBlY3RlZF92YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGFjdHVhbF92YWx1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRfdmFsdWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IGFjdHVhbF92YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGlnbm9yaW5nX2Nhc2UpOwogCiAvLyBDb25zdHJ1Y3RzIGEgZmFpbHVyZSBtZXNzYWdlIGZvciBC
b29sZWFuIGFzc2VydGlvbnMgc3VjaCBhcyBFWFBFQ1RfVFJVRS4KLUdURVNUX0FQSV8gU3RyaW5n
IEdldEJvb2xBc3NlcnRpb25GYWlsdXJlTWVzc2FnZSgKK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcg
R2V0Qm9vbEFzc2VydGlvbkZhaWx1cmVNZXNzYWdlKAogICAgIGNvbnN0IEFzc2VydGlvblJlc3Vs
dCYgYXNzZXJ0aW9uX3Jlc3VsdCwKICAgICBjb25zdCBjaGFyKiBleHByZXNzaW9uX3RleHQsCiAg
ICAgY29uc3QgY2hhciogYWN0dWFsX3ByZWRpY2F0ZV92YWx1ZSwKQEAgLTM2OSw3ICsyODYsNyBA
QCBjbGFzcyBGbG9hdGluZ1BvaW50IHsKICAgLy8gYml0cy4gIFRoZXJlZm9yZSwgNCBzaG91bGQg
YmUgZW5vdWdoIGZvciBvcmRpbmFyeSB1c2UuCiAgIC8vCiAgIC8vIFNlZSB0aGUgZm9sbG93aW5n
IGFydGljbGUgZm9yIG1vcmUgZGV0YWlscyBvbiBVTFA6Ci0gIC8vIGh0dHA6Ly93d3cuY3lnbnVz
LXNvZnR3YXJlLmNvbS9wYXBlcnMvY29tcGFyaW5nZmxvYXRzL2NvbXBhcmluZ2Zsb2F0cy5odG0u
CisgIC8vIGh0dHA6Ly9yYW5kb21hc2NpaS53b3JkcHJlc3MuY29tLzIwMTIvMDIvMjUvY29tcGFy
aW5nLWZsb2F0aW5nLXBvaW50LW51bWJlcnMtMjAxMi1lZGl0aW9uLwogICBzdGF0aWMgY29uc3Qg
c2l6ZV90IGtNYXhVbHBzID0gNDsKIAogICAvLyBDb25zdHJ1Y3RzIGEgRmxvYXRpbmdQb2ludCBm
cm9tIGEgcmF3IGZsb2F0aW5nLXBvaW50IG51bWJlci4KQEAgLTM5Niw2ICszMTMsOSBAQCBjbGFz
cyBGbG9hdGluZ1BvaW50IHsKICAgICByZXR1cm4gUmVpbnRlcnByZXRCaXRzKGtFeHBvbmVudEJp
dE1hc2spOwogICB9CiAKKyAgLy8gUmV0dXJucyB0aGUgbWF4aW11bSByZXByZXNlbnRhYmxlIGZp
bml0ZSBmbG9hdGluZy1wb2ludCBudW1iZXIuCisgIHN0YXRpYyBSYXdUeXBlIE1heCgpOworCiAg
IC8vIE5vbi1zdGF0aWMgbWV0aG9kcwogCiAgIC8vIFJldHVybnMgdGhlIGJpdHMgdGhhdCByZXBy
ZXNlbnRzIHRoaXMgbnVtYmVyLgpAQCAtNDc2LDYgKzM5NiwxMyBAQCBjbGFzcyBGbG9hdGluZ1Bv
aW50IHsKICAgRmxvYXRpbmdQb2ludFVuaW9uIHVfOwogfTsKIAorLy8gV2UgY2Fubm90IHVzZSBz
dGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSBhcyBpdCBjbGFzaGVzIHdpdGggdGhlIG1heCgp
CisvLyBtYWNybyBkZWZpbmVkIGJ5IDx3aW5kb3dzLmg+LgordGVtcGxhdGUgPD4KK2lubGluZSBm
bG9hdCBGbG9hdGluZ1BvaW50PGZsb2F0Pjo6TWF4KCkgeyByZXR1cm4gRkxUX01BWDsgfQordGVt
cGxhdGUgPD4KK2lubGluZSBkb3VibGUgRmxvYXRpbmdQb2ludDxkb3VibGU+OjpNYXgoKSB7IHJl
dHVybiBEQkxfTUFYOyB9CisKIC8vIFR5cGVkZWZzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIEZsb2F0
aW5nUG9pbnQgdGVtcGxhdGUgY2xhc3MgdGhhdCB3ZQogLy8gY2FyZSB0byB1c2UuCiB0eXBlZGVm
IEZsb2F0aW5nUG9pbnQ8ZmxvYXQ+IEZsb2F0OwpAQCAtNTU4LDI0ICs0ODUsMTggQEAgR1RFU1Rf
QVBJXyBBc3NlcnRpb25SZXN1bHQgSXNIUkVTVUxURmFpbHVyZShjb25zdCBjaGFyKiBleHByLAog
CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAotLy8gRm9ybWF0cyBhIHNvdXJjZSBmaWxl
IHBhdGggYW5kIGEgbGluZSBudW1iZXIgYXMgdGhleSB3b3VsZCBhcHBlYXIKLS8vIGluIGEgY29t
cGlsZXIgZXJyb3IgbWVzc2FnZS4KLWlubGluZSBTdHJpbmcgRm9ybWF0RmlsZUxvY2F0aW9uKGNv
bnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKSB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IGZpbGVfbmFt
ZSA9IGZpbGUgPT0gTlVMTCA/ICJ1bmtub3duIGZpbGUiIDogZmlsZTsKLSAgaWYgKGxpbmUgPCAw
KSB7Ci0gICAgcmV0dXJuIFN0cmluZzo6Rm9ybWF0KCIlczoiLCBmaWxlX25hbWUpOwotICB9Ci0j
aWZkZWYgX01TQ19WRVIKLSAgcmV0dXJuIFN0cmluZzo6Rm9ybWF0KCIlcyglZCk6IiwgZmlsZV9u
YW1lLCBsaW5lKTsKLSNlbHNlCi0gIHJldHVybiBTdHJpbmc6OkZvcm1hdCgiJXM6JWQ6IiwgZmls
ZV9uYW1lLCBsaW5lKTsKLSNlbmRpZiAgLy8gX01TQ19WRVIKLX0KLQogLy8gVHlwZXMgb2YgU2V0
VXBUZXN0Q2FzZSgpIGFuZCBUZWFyRG93blRlc3RDYXNlKCkgZnVuY3Rpb25zLgogdHlwZWRlZiB2
b2lkICgqU2V0VXBUZXN0Q2FzZUZ1bmMpKCk7CiB0eXBlZGVmIHZvaWQgKCpUZWFyRG93blRlc3RD
YXNlRnVuYykoKTsKIAorc3RydWN0IENvZGVMb2NhdGlvbiB7CisgIENvZGVMb2NhdGlvbihjb25z
dCBzdGQ6OnN0cmluZyYgYV9maWxlLCBpbnQgYV9saW5lKQorICAgICAgOiBmaWxlKGFfZmlsZSks
IGxpbmUoYV9saW5lKSB7fQorCisgIHN0ZDo6c3RyaW5nIGZpbGU7CisgIGludCBsaW5lOworfTsK
KwogLy8gQ3JlYXRlcyBhIG5ldyBUZXN0SW5mbyBvYmplY3QgYW5kIHJlZ2lzdGVycyBpdCB3aXRo
IEdvb2dsZSBUZXN0OwogLy8gcmV0dXJucyB0aGUgY3JlYXRlZCBvYmplY3QuCiAvLwpAQCAtNTgz
LDEwICs1MDQsMTEgQEAgdHlwZWRlZiB2b2lkICgqVGVhckRvd25UZXN0Q2FzZUZ1bmMpKCk7CiAv
LwogLy8gICB0ZXN0X2Nhc2VfbmFtZTogICBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UKIC8vICAgbmFt
ZTogICAgICAgICAgICAgbmFtZSBvZiB0aGUgdGVzdAotLy8gICB0ZXN0X2Nhc2VfY29tbWVudDog
YSBjb21tZW50IG9uIHRoZSB0ZXN0IGNhc2UgdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluCi0vLyAg
ICAgICAgICAgICAgICAgICAgICB0aGUgdGVzdCBvdXRwdXQKLS8vICAgY29tbWVudDogICAgICAg
ICAgYSBjb21tZW50IG9uIHRoZSB0ZXN0IHRoYXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKLS8v
ICAgICAgICAgICAgICAgICAgICAgdGVzdCBvdXRwdXQKKy8vICAgdHlwZV9wYXJhbSAgICAgICAg
dGhlIG5hbWUgb2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorLy8gICAg
ICAgICAgICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3QuCisvLyAgIHZhbHVlX3BhcmFtICAgICAgIHRleHQgcmVwcmVzZW50YXRpb24gb2Yg
dGhlIHRlc3QncyB2YWx1ZSBwYXJhbWV0ZXIsCisvLyAgICAgICAgICAgICAgICAgICAgIG9yIE5V
TEwgaWYgdGhpcyBpcyBub3QgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKy8vICAgY29kZV9s
b2NhdGlvbjogICAgY29kZSBsb2NhdGlvbiB3aGVyZSB0aGUgdGVzdCBpcyBkZWZpbmVkCiAvLyAg
IGZpeHR1cmVfY2xhc3NfaWQ6IElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKIC8vICAgc2V0
X3VwX3RjOiAgICAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSB0
ZXN0IGNhc2UKIC8vICAgdGVhcl9kb3duX3RjOiAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24g
dGhhdCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UKQEAgLTU5NCw4ICs1MTYsMTEgQEAgdHlwZWRl
ZiB2b2lkICgqVGVhckRvd25UZXN0Q2FzZUZ1bmMpKCk7CiAvLyAgICAgICAgICAgICAgICAgICAg
IFRoZSBuZXdseSBjcmVhdGVkIFRlc3RJbmZvIGluc3RhbmNlIHdpbGwgYXNzdW1lCiAvLyAgICAg
ICAgICAgICAgICAgICAgIG93bmVyc2hpcCBvZiB0aGUgZmFjdG9yeSBvYmplY3QuCiBHVEVTVF9B
UElfIFRlc3RJbmZvKiBNYWtlQW5kUmVnaXN0ZXJUZXN0SW5mbygKLSAgICBjb25zdCBjaGFyKiB0
ZXN0X2Nhc2VfbmFtZSwgY29uc3QgY2hhciogbmFtZSwKLSAgICBjb25zdCBjaGFyKiB0ZXN0X2Nh
c2VfY29tbWVudCwgY29uc3QgY2hhciogY29tbWVudCwKKyAgICBjb25zdCBjaGFyKiB0ZXN0X2Nh
c2VfbmFtZSwKKyAgICBjb25zdCBjaGFyKiBuYW1lLAorICAgIGNvbnN0IGNoYXIqIHR5cGVfcGFy
YW0sCisgICAgY29uc3QgY2hhciogdmFsdWVfcGFyYW0sCisgICAgQ29kZUxvY2F0aW9uIGNvZGVf
bG9jYXRpb24sCiAgICAgVHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCiAgICAgU2V0VXBUZXN0Q2Fz
ZUZ1bmMgc2V0X3VwX3RjLAogICAgIFRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YywK
QEAgLTYwNCwxMCArNTI5LDEzIEBAIEdURVNUX0FQSV8gVGVzdEluZm8qIE1ha2VBbmRSZWdpc3Rl
clRlc3RJbmZvKAogLy8gSWYgKnBzdHIgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeCwgbW9k
aWZpZXMgKnBzdHIgdG8gYmUgcmlnaHQKIC8vIHBhc3QgdGhlIHByZWZpeCBhbmQgcmV0dXJucyB0
cnVlOyBvdGhlcndpc2UgbGVhdmVzICpwc3RyIHVuY2hhbmdlZAogLy8gYW5kIHJldHVybnMgZmFs
c2UuICBOb25lIG9mIHBzdHIsICpwc3RyLCBhbmQgcHJlZml4IGNhbiBiZSBOVUxMLgotYm9vbCBT
a2lwUHJlZml4KGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgY2hhcioqIHBzdHIpOworR1RFU1Rf
QVBJXyBib29sIFNraXBQcmVmaXgoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiogcHN0
cik7CiAKICNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9Q
CiAKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQyNTEgXAorLyogY2xhc3MgQSBu
ZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBieSBjbGllbnRzIG9mIGNsYXNz
IEIgKi8pCisKIC8vIFN0YXRlIG9mIHRoZSBkZWZpbml0aW9uIG9mIGEgdHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3QgY2FzZS4KIGNsYXNzIEdURVNUX0FQSV8gVHlwZWRUZXN0Q2FzZVBTdGF0ZSB7CiAg
cHVibGljOgpAQCAtNjI1LDEwICs1NTMsMjEgQEAgY2xhc3MgR1RFU1RfQVBJXyBUeXBlZFRlc3RD
YXNlUFN0YXRlIHsKICAgICAgIGZmbHVzaChzdGRlcnIpOwogICAgICAgcG9zaXg6OkFib3J0KCk7
CiAgICAgfQotICAgIGRlZmluZWRfdGVzdF9uYW1lc18uaW5zZXJ0KHRlc3RfbmFtZSk7CisgICAg
cmVnaXN0ZXJlZF90ZXN0c18uaW5zZXJ0KAorICAgICAgICA6OnN0ZDo6bWFrZV9wYWlyKHRlc3Rf
bmFtZSwgQ29kZUxvY2F0aW9uKGZpbGUsIGxpbmUpKSk7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0K
IAorICBib29sIFRlc3RFeGlzdHMoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RfbmFtZSkgY29uc3Qg
eworICAgIHJldHVybiByZWdpc3RlcmVkX3Rlc3RzXy5jb3VudCh0ZXN0X25hbWUpID4gMDsKKyAg
fQorCisgIGNvbnN0IENvZGVMb2NhdGlvbiYgR2V0Q29kZUxvY2F0aW9uKGNvbnN0IHN0ZDo6c3Ry
aW5nJiB0ZXN0X25hbWUpIGNvbnN0IHsKKyAgICBSZWdpc3RlcmVkVGVzdHNNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gcmVnaXN0ZXJlZF90ZXN0c18uZmluZCh0ZXN0X25hbWUpOworICAgIEdURVNU
X0NIRUNLXyhpdCAhPSByZWdpc3RlcmVkX3Rlc3RzXy5lbmQoKSk7CisgICAgcmV0dXJuIGl0LT5z
ZWNvbmQ7CisgIH0KKwogICAvLyBWZXJpZmllcyB0aGF0IHJlZ2lzdGVyZWRfdGVzdHMgbWF0Y2gg
dGhlIHRlc3QgbmFtZXMgaW4KICAgLy8gZGVmaW5lZF90ZXN0X25hbWVzXzsgcmV0dXJucyByZWdp
c3RlcmVkX3Rlc3RzIGlmIHN1Y2Nlc3NmdWwsIG9yCiAgIC8vIGFib3J0cyB0aGUgcHJvZ3JhbSBv
dGhlcndpc2UuCkBAIC02MzYsMTAgKzU3NSwxNCBAQCBjbGFzcyBHVEVTVF9BUElfIFR5cGVkVGVz
dENhc2VQU3RhdGUgewogICAgICAgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNo
YXIqIHJlZ2lzdGVyZWRfdGVzdHMpOwogCiAgcHJpdmF0ZToKKyAgdHlwZWRlZiA6OnN0ZDo6bWFw
PHN0ZDo6c3RyaW5nLCBDb2RlTG9jYXRpb24+IFJlZ2lzdGVyZWRUZXN0c01hcDsKKwogICBib29s
IHJlZ2lzdGVyZWRfOwotICA6OnN0ZDo6c2V0PGNvbnN0IGNoYXIqPiBkZWZpbmVkX3Rlc3RfbmFt
ZXNfOworICBSZWdpc3RlcmVkVGVzdHNNYXAgcmVnaXN0ZXJlZF90ZXN0c187CiB9OwogCitHVEVT
VF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkgIC8vICA0MjUxCisKIC8vIFNraXBzIHRvIHRo
ZSBmaXJzdCBub24tc3BhY2UgY2hhciBhZnRlciB0aGUgZmlyc3QgY29tbWEgaW4gJ3N0cic7CiAv
LyByZXR1cm5zIE5VTEwgaWYgbm8gY29tbWEgaXMgZm91bmQgaW4gJ3N0cicuCiBpbmxpbmUgY29u
c3QgY2hhciogU2tpcENvbW1hKGNvbnN0IGNoYXIqIHN0cikgewpAQCAtNjQ3LDE1ICs1OTAsNTEg
QEAgaW5saW5lIGNvbnN0IGNoYXIqIFNraXBDb21tYShjb25zdCBjaGFyKiBzdHIpIHsKICAgaWYg
KGNvbW1hID09IE5VTEwpIHsKICAgICByZXR1cm4gTlVMTDsKICAgfQotICB3aGlsZSAoaXNzcGFj
ZSgqKCsrY29tbWEpKSkge30KKyAgd2hpbGUgKElzU3BhY2UoKigrK2NvbW1hKSkpIHt9CiAgIHJl
dHVybiBjb21tYTsKIH0KIAogLy8gUmV0dXJucyB0aGUgcHJlZml4IG9mICdzdHInIGJlZm9yZSB0
aGUgZmlyc3QgY29tbWEgaW4gaXQ7IHJldHVybnMKIC8vIHRoZSBlbnRpcmUgc3RyaW5nIGlmIGl0
IGNvbnRhaW5zIG5vIGNvbW1hLgotaW5saW5lIFN0cmluZyBHZXRQcmVmaXhVbnRpbENvbW1hKGNv
bnN0IGNoYXIqIHN0cikgeworaW5saW5lIHN0ZDo6c3RyaW5nIEdldFByZWZpeFVudGlsQ29tbWEo
Y29uc3QgY2hhciogc3RyKSB7CiAgIGNvbnN0IGNoYXIqIGNvbW1hID0gc3RyY2hyKHN0ciwgJywn
KTsKLSAgcmV0dXJuIGNvbW1hID09IE5VTEwgPyBTdHJpbmcoc3RyKSA6IFN0cmluZyhzdHIsIGNv
bW1hIC0gc3RyKTsKKyAgcmV0dXJuIGNvbW1hID09IE5VTEwgPyBzdHIgOiBzdGQ6OnN0cmluZyhz
dHIsIGNvbW1hKTsKK30KKworLy8gU3BsaXRzIGEgZ2l2ZW4gc3RyaW5nIG9uIGEgZ2l2ZW4gZGVs
aW1pdGVyLCBwb3B1bGF0aW5nIGEgZ2l2ZW4KKy8vIHZlY3RvciB3aXRoIHRoZSBmaWVsZHMuCit2
b2lkIFNwbGl0U3RyaW5nKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgY2hhciBkZWxpbWl0ZXIs
CisgICAgICAgICAgICAgICAgIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpzdHJpbmc+KiBkZXN0KTsK
KworLy8gVGhlIGRlZmF1bHQgYXJndW1lbnQgdG8gdGhlIHRlbXBsYXRlIGJlbG93IGZvciB0aGUg
Y2FzZSB3aGVuIHRoZSB1c2VyIGRvZXMKKy8vIG5vdCBwcm92aWRlIGEgbmFtZSBnZW5lcmF0b3Iu
CitzdHJ1Y3QgRGVmYXVsdE5hbWVHZW5lcmF0b3IgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
KyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldE5hbWUoaW50IGkpIHsKKyAgICByZXR1cm4gU3RyZWFt
YWJsZVRvU3RyaW5nKGkpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUHJvdmlkZWQg
PSBEZWZhdWx0TmFtZUdlbmVyYXRvcj4KK3N0cnVjdCBOYW1lR2VuZXJhdG9yU2VsZWN0b3Igewor
ICB0eXBlZGVmIFByb3ZpZGVkIHR5cGU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTmFtZUdl
bmVyYXRvcj4KK3ZvaWQgR2VuZXJhdGVOYW1lc1JlY3Vyc2l2ZWx5KFR5cGVzMCwgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+KiwgaW50KSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTmFtZUdlbmVy
YXRvciwgdHlwZW5hbWUgVHlwZXM+Cit2b2lkIEdlbmVyYXRlTmFtZXNSZWN1cnNpdmVseShUeXBl
cywgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiByZXN1bHQsIGludCBpKSB7CisgIHJlc3VsdC0+
cHVzaF9iYWNrKE5hbWVHZW5lcmF0b3I6OnRlbXBsYXRlIEdldE5hbWU8dHlwZW5hbWUgVHlwZXM6
OkhlYWQ+KGkpKTsKKyAgR2VuZXJhdGVOYW1lc1JlY3Vyc2l2ZWx5PE5hbWVHZW5lcmF0b3I+KHR5
cGVuYW1lIFR5cGVzOjpUYWlsKCksIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGkgKyAxKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE5hbWVHZW5l
cmF0b3IsIHR5cGVuYW1lIFR5cGVzPgorc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdlbmVyYXRl
TmFtZXMoKSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiByZXN1bHQ7CisgIEdlbmVyYXRl
TmFtZXNSZWN1cnNpdmVseTxOYW1lR2VuZXJhdG9yPihUeXBlcygpLCAmcmVzdWx0LCAwKTsKKyAg
cmV0dXJuIHJlc3VsdDsKIH0KIAogLy8gVHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIFRl
c3RTZWwsIFR5cGVzPjo6UmVnaXN0ZXIoKQpAQCAtNjcyLDggKzY1MSwxMCBAQCBjbGFzcyBUeXBl
UGFyYW1ldGVyaXplZFRlc3QgewogICAvLyBzcGVjaWZpZWQgaW4gSU5TVEFOVElBVEVfVFlQRURf
VEVTVF9DQVNFX1AoUHJlZml4LCBUZXN0Q2FzZSwKICAgLy8gVHlwZXMpLiAgVmFsaWQgdmFsdWVz
IGZvciAnaW5kZXgnIGFyZSBbMCwgTiAtIDFdIHdoZXJlIE4gaXMgdGhlCiAgIC8vIGxlbmd0aCBv
ZiBUeXBlcy4KLSAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogcHJlZml4LCBjb25z
dCBjaGFyKiBjYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRl
c3RfbmFtZXMsIGludCBpbmRleCkgeworICBzdGF0aWMgYm9vbCBSZWdpc3Rlcihjb25zdCBjaGFy
KiBwcmVmaXgsIGNvbnN0IENvZGVMb2NhdGlvbiYgY29kZV9sb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogY2FzZV9uYW1lLCBjb25zdCBjaGFyKiB0ZXN0X25hbWVz
LCBpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiYgdHlwZV9uYW1lcyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5l
cmF0ZU5hbWVzPERlZmF1bHROYW1lR2VuZXJhdG9yLCBUeXBlcz4oKSkgewogICAgIHR5cGVkZWYg
dHlwZW5hbWUgVHlwZXM6OkhlYWQgVHlwZTsKICAgICB0eXBlZGVmIEZpeHR1cmU8VHlwZT4gRml4
dHVyZUNsYXNzOwogICAgIHR5cGVkZWYgdHlwZW5hbWUgR1RFU1RfQklORF8oVGVzdFNlbCwgVHlw
ZSkgVGVzdENsYXNzOwpAQCAtNjgxLDE5ICs2NjIsMjMgQEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6
ZWRUZXN0IHsKICAgICAvLyBGaXJzdCwgcmVnaXN0ZXJzIHRoZSBmaXJzdCB0eXBlLXBhcmFtZXRl
cml6ZWQgdGVzdCBpbiB0aGUgdHlwZQogICAgIC8vIGxpc3QuCiAgICAgTWFrZUFuZFJlZ2lzdGVy
VGVzdEluZm8oCi0gICAgICAgIFN0cmluZzo6Rm9ybWF0KCIlcyVzJXMvJWQiLCBwcmVmaXgsIHBy
ZWZpeFswXSA9PSAnXDAnID8gIiIgOiAiLyIsCi0gICAgICAgICAgICAgICAgICAgICAgIGNhc2Vf
bmFtZSwgaW5kZXgpLmNfc3RyKCksCi0gICAgICAgIEdldFByZWZpeFVudGlsQ29tbWEodGVzdF9u
YW1lcykuY19zdHIoKSwKLSAgICAgICAgU3RyaW5nOjpGb3JtYXQoIlR5cGVQYXJhbSA9ICVzIiwg
R2V0VHlwZU5hbWU8VHlwZT4oKS5jX3N0cigpKS5jX3N0cigpLAotICAgICAgICAiIiwKLSAgICAg
ICAgR2V0VHlwZUlkPEZpeHR1cmVDbGFzcz4oKSwKLSAgICAgICAgVGVzdENsYXNzOjpTZXRVcFRl
c3RDYXNlLAotICAgICAgICBUZXN0Q2xhc3M6OlRlYXJEb3duVGVzdENhc2UsCi0gICAgICAgIG5l
dyBUZXN0RmFjdG9yeUltcGw8VGVzdENsYXNzPik7CisgICAgICAgIChzdGQ6OnN0cmluZyhwcmVm
aXgpICsgKHByZWZpeFswXSA9PSAnXDAnID8gIiIgOiAiLyIpICsgY2FzZV9uYW1lICsKKyAgICAg
ICAgICIvIiArIHR5cGVfbmFtZXNbaW5kZXhdKQorICAgICAgICAgICAgLmNfc3RyKCksCisgICAg
ICAgIFN0cmlwVHJhaWxpbmdTcGFjZXMoR2V0UHJlZml4VW50aWxDb21tYSh0ZXN0X25hbWVzKSku
Y19zdHIoKSwKKyAgICAgICAgR2V0VHlwZU5hbWU8VHlwZT4oKS5jX3N0cigpLAorICAgICAgICBO
VUxMLCAgLy8gTm8gdmFsdWUgcGFyYW1ldGVyLgorICAgICAgICBjb2RlX2xvY2F0aW9uLCBHZXRU
eXBlSWQ8Rml4dHVyZUNsYXNzPigpLCBUZXN0Q2xhc3M6OlNldFVwVGVzdENhc2UsCisgICAgICAg
IFRlc3RDbGFzczo6VGVhckRvd25UZXN0Q2FzZSwgbmV3IFRlc3RGYWN0b3J5SW1wbDxUZXN0Q2xh
c3M+KTsKIAogICAgIC8vIE5leHQsIHJlY3Vyc2VzIChhdCBjb21waWxlIHRpbWUpIHdpdGggdGhl
IHRhaWwgb2YgdGhlIHR5cGUgbGlzdC4KLSAgICByZXR1cm4gVHlwZVBhcmFtZXRlcml6ZWRUZXN0
PEZpeHR1cmUsIFRlc3RTZWwsIHR5cGVuYW1lIFR5cGVzOjpUYWlsPgotICAgICAgICA6OlJlZ2lz
dGVyKHByZWZpeCwgY2FzZV9uYW1lLCB0ZXN0X25hbWVzLCBpbmRleCArIDEpOworICAgIHJldHVy
biBUeXBlUGFyYW1ldGVyaXplZFRlc3Q8Rml4dHVyZSwgVGVzdFNlbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpUYWlsPjo6UmVnaXN0ZXIocHJlZml4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb2RlX2xvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlX25hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4ICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV9uYW1lcyk7CiAgIH0K
IH07CiAKQEAgLTcwMSw4ICs2ODYsMTEgQEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0IHsK
IHRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gRml4dHVyZSwgY2xhc3MgVGVzdFNlbD4KIGNsYXNz
IFR5cGVQYXJhbWV0ZXJpemVkVGVzdDxGaXh0dXJlLCBUZXN0U2VsLCBUeXBlczA+IHsKICBwdWJs
aWM6Ci0gIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIqIC8qcHJlZml4Ki8sIGNvbnN0
IGNoYXIqIC8qY2FzZV9uYW1lKi8sCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IC8qdGVzdF9uYW1lcyovLCBpbnQgLyppbmRleCovKSB7CisgIHN0YXRpYyBib29sIFJlZ2lzdGVy
KGNvbnN0IGNoYXIqIC8qcHJlZml4Ki8sIGNvbnN0IENvZGVMb2NhdGlvbiYsCisgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qY2FzZV9uYW1lKi8sIGNvbnN0IGNoYXIqIC8qdGVz
dF9uYW1lcyovLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgLyppbmRleCovLAorICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mID0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPigpIC8qdHlwZV9u
YW1lcyovKSB7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIH07CkBAIC03MTQsMTcgKzcwMiwzNSBA
QCBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3Q8Rml4dHVyZSwgVGVzdFNlbCwgVHlwZXMwPiB7
CiB0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIEZpeHR1cmUsIHR5cGVuYW1lIFRlc3RzLCB0eXBl
bmFtZSBUeXBlcz4KIGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UgewogIHB1YmxpYzoK
LSAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiBj
YXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRlc3RfbmFtZXMp
IHsKKyAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogcHJlZml4LCBDb2RlTG9jYXRp
b24gY29kZV9sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHlwZWRUZXN0
Q2FzZVBTdGF0ZSogc3RhdGUsIGNvbnN0IGNoYXIqIGNhc2VfbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogdGVzdF9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiB0eXBlX25hbWVzID0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdlbmVyYXRlTmFtZXM8RGVmYXVsdE5hbWVHZW5lcmF0b3IsIFR5cGVz
PigpKSB7CisgICAgc3RkOjpzdHJpbmcgdGVzdF9uYW1lID0gU3RyaXBUcmFpbGluZ1NwYWNlcygK
KyAgICAgICAgR2V0UHJlZml4VW50aWxDb21tYSh0ZXN0X25hbWVzKSk7CisgICAgaWYgKCFzdGF0
ZS0+VGVzdEV4aXN0cyh0ZXN0X25hbWUpKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxl
ZCB0byBnZXQgY29kZSBsb2NhdGlvbiBmb3IgdGVzdCAlcy4lcyBhdCAlcy4iLAorICAgICAgICAg
ICAgICBjYXNlX25hbWUsIHRlc3RfbmFtZS5jX3N0cigpLAorICAgICAgICAgICAgICBGb3JtYXRG
aWxlTG9jYXRpb24oY29kZV9sb2NhdGlvbi5maWxlLmNfc3RyKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb2RlX2xvY2F0aW9uLmxpbmUpLmNfc3RyKCkpOworICAgICAgZmZs
dXNoKHN0ZGVycik7CisgICAgICBwb3NpeDo6QWJvcnQoKTsKKyAgICB9CisgICAgY29uc3QgQ29k
ZUxvY2F0aW9uJiB0ZXN0X2xvY2F0aW9uID0gc3RhdGUtPkdldENvZGVMb2NhdGlvbih0ZXN0X25h
bWUpOworCiAgICAgdHlwZWRlZiB0eXBlbmFtZSBUZXN0czo6SGVhZCBIZWFkOwogCiAgICAgLy8g
Rmlyc3QsIHJlZ2lzdGVyIHRoZSBmaXJzdCB0ZXN0IGluICdUZXN0JyBmb3IgZWFjaCB0eXBlIGlu
ICdUeXBlcycuCiAgICAgVHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIEhlYWQsIFR5cGVz
Pjo6UmVnaXN0ZXIoCi0gICAgICAgIHByZWZpeCwgY2FzZV9uYW1lLCB0ZXN0X25hbWVzLCAwKTsK
KyAgICAgICAgcHJlZml4LCB0ZXN0X2xvY2F0aW9uLCBjYXNlX25hbWUsIHRlc3RfbmFtZXMsIDAs
IHR5cGVfbmFtZXMpOwogCiAgICAgLy8gTmV4dCwgcmVjdXJzZXMgKGF0IGNvbXBpbGUgdGltZSkg
d2l0aCB0aGUgdGFpbCBvZiB0aGUgdGVzdCBsaXN0LgotICAgIHJldHVybiBUeXBlUGFyYW1ldGVy
aXplZFRlc3RDYXNlPEZpeHR1cmUsIHR5cGVuYW1lIFRlc3RzOjpUYWlsLCBUeXBlcz4KLSAgICAg
ICAgOjpSZWdpc3RlcihwcmVmaXgsIGNhc2VfbmFtZSwgU2tpcENvbW1hKHRlc3RfbmFtZXMpKTsK
KyAgICByZXR1cm4gVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTxGaXh0dXJlLCB0eXBlbmFtZSBU
ZXN0czo6VGFpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlcz46
OlJlZ2lzdGVyKHByZWZpeCwgY29kZV9sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLCBjYXNlX25hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa2lwQ29tbWEo
dGVzdF9uYW1lcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0eXBlX25hbWVzKTsKICAgfQogfTsKIApAQCAtNzMyLDE1ICs3MzgsMTggQEAg
Y2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSB7CiB0ZW1wbGF0ZSA8R1RFU1RfVEVNUExB
VEVfIEZpeHR1cmUsIHR5cGVuYW1lIFR5cGVzPgogY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0
Q2FzZTxGaXh0dXJlLCBUZW1wbGF0ZXMwLCBUeXBlcz4gewogIHB1YmxpYzoKLSAgc3RhdGljIGJv
b2wgUmVnaXN0ZXIoY29uc3QgY2hhciogLypwcmVmaXgqLywgY29uc3QgY2hhciogLypjYXNlX25h
bWUqLywKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLyp0ZXN0X25hbWVzKi8p
IHsKKyAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogLypwcmVmaXgqLywgY29uc3Qg
Q29kZUxvY2F0aW9uJiwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHlwZWRUZXN0Q2Fz
ZVBTdGF0ZSogLypzdGF0ZSovLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAv
KmNhc2VfbmFtZSovLCBjb25zdCBjaGFyKiAvKnRlc3RfbmFtZXMqLywKKyAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiA9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oKSAvKnR5cGVfbmFtZXMqLykg
ewogICAgIHJldHVybiB0cnVlOwogICB9CiB9OwogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBF
RF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AKIAotLy8gUmV0dXJucyB0aGUgY3VycmVu
dCBPUyBzdGFjayB0cmFjZSBhcyBhIFN0cmluZy4KKy8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mg
c3RhY2sgdHJhY2UgYXMgYW4gc3RkOjpzdHJpbmcuCiAvLwogLy8gVGhlIG1heGltdW0gbnVtYmVy
IG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZCBpcyBzcGVjaWZpZWQgYnkKIC8vIHRoZSBn
dGVzdF9zdGFja190cmFjZV9kZXB0aCBmbGFnLiAgVGhlIHNraXBfY291bnQgcGFyYW1ldGVyCkBA
IC03NTAsOCArNzU5LDggQEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTxGaXh0dXJl
LCBUZW1wbGF0ZXMwLCBUeXBlcz4gewogLy8gRm9yIGV4YW1wbGUsIGlmIEZvbygpIGNhbGxzIEJh
cigpLCB3aGljaCBpbiB0dXJuIGNhbGxzCiAvLyBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0
VG9wKC4uLiwgMSksIEZvbygpIHdpbGwgYmUgaW5jbHVkZWQgaW4KIC8vIHRoZSB0cmFjZSBidXQg
QmFyKCkgYW5kIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoKSB3b24ndC4KLUdURVNU
X0FQSV8gU3RyaW5nIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoVW5pdFRlc3QqIHVu
aXRfdGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHNraXBfY291bnQpOworR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBHZXRDdXJyZW50T3NT
dGFja1RyYWNlRXhjZXB0VG9wKAorICAgIFVuaXRUZXN0KiB1bml0X3Rlc3QsIGludCBza2lwX2Nv
dW50KTsKIAogLy8gSGVscGVycyBmb3Igc3VwcHJlc3Npbmcgd2FybmluZ3Mgb24gdW5yZWFjaGFi
bGUgY29kZSBvciBjb25zdGFudAogLy8gY29uZGl0aW9uLgpAQCAtNzYyLDYgKzc3MSwxNSBAQCBH
VEVTVF9BUElfIGJvb2wgQWx3YXlzVHJ1ZSgpOwogLy8gQWx3YXlzIHJldHVybnMgZmFsc2UuCiBp
bmxpbmUgYm9vbCBBbHdheXNGYWxzZSgpIHsgcmV0dXJuICFBbHdheXNUcnVlKCk7IH0KIAorLy8g
SGVscGVyIGZvciBzdXBwcmVzc2luZyBmYWxzZSB3YXJuaW5nIGZyb20gQ2xhbmcgb24gYSBjb25z
dCBjaGFyKgorLy8gdmFyaWFibGUgZGVjbGFyZWQgaW4gYSBjb25kaXRpb25hbCBleHByZXNzaW9u
IGFsd2F5cyBiZWluZyBOVUxMIGluCisvLyB0aGUgZWxzZSBicmFuY2guCitzdHJ1Y3QgR1RFU1Rf
QVBJXyBDb25zdENoYXJQdHIgeworICBDb25zdENoYXJQdHIoY29uc3QgY2hhciogc3RyKSA6IHZh
bHVlKHN0cikge30KKyAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAg
Y29uc3QgY2hhciogdmFsdWU7Cit9OworCiAvLyBBIHNpbXBsZSBMaW5lYXIgQ29uZ3J1ZW50aWFs
IEdlbmVyYXRvciBmb3IgZ2VuZXJhdGluZyByYW5kb20KIC8vIG51bWJlcnMgd2l0aCBhIHVuaWZv
cm0gZGlzdHJpYnV0aW9uLiAgVW5saWtlIHJhbmQoKSBhbmQgc3JhbmQoKSwgaXQKIC8vIGRvZXNu
J3QgdXNlIGdsb2JhbCBzdGF0ZSAoYW5kIHRoZXJlZm9yZSBjYW4ndCBpbnRlcmZlcmUgd2l0aCB1
c2VyCkBAIC03ODQsMTMgKzgwMiw0MDMgQEAgY2xhc3MgR1RFU1RfQVBJXyBSYW5kb20gewogICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFJhbmRvbSk7CiB9OwogCisvLyBEZWZpbmlu
ZyBhIHZhcmlhYmxlIG9mIHR5cGUgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8VDEsIFQyPiB3aWxs
IGNhdXNlIGEKKy8vIGNvbXBpbGVyIGVycm9yIGlmZiBUMSBhbmQgVDIgYXJlIGRpZmZlcmVudCB0
eXBlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitzdHJ1Y3QgQ29tcGls
ZUFzc2VydFR5cGVzRXF1YWw7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IENvbXBp
bGVBc3NlcnRUeXBlc0VxdWFsPFQsIFQ+IHsKK307CisKKy8vIFJlbW92ZXMgdGhlIHJlZmVyZW5j
ZSBmcm9tIGEgdHlwZSBpZiBpdCBpcyBhIHJlZmVyZW5jZSB0eXBlLAorLy8gb3RoZXJ3aXNlIGxl
YXZlcyBpdCB1bmNoYW5nZWQuICBUaGlzIGlzIHRoZSBzYW1lIGFzCisvLyB0cjE6OnJlbW92ZV9y
ZWZlcmVuY2UsIHdoaWNoIGlzIG5vdCB3aWRlbHkgYXZhaWxhYmxlIHlldC4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorc3RydWN0IFJlbW92ZVJlZmVyZW5jZSB7IHR5cGVkZWYgVCB0eXBlOyB9OyAg
Ly8gTk9MSU5UCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBSZW1vdmVSZWZlcmVuY2U8
VCY+IHsgdHlwZWRlZiBUIHR5cGU7IH07ICAvLyBOT0xJTlQKKworLy8gQSBoYW5keSB3cmFwcGVy
IGFyb3VuZCBSZW1vdmVSZWZlcmVuY2UgdGhhdCB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudAorLy8g
VCBkZXBlbmRzIG9uIHRlbXBsYXRlIHBhcmFtZXRlcnMuCisjZGVmaW5lIEdURVNUX1JFTU9WRV9S
RUZFUkVOQ0VfKFQpIFwKKyAgICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpSZW1vdmVS
ZWZlcmVuY2U8VD46OnR5cGUKKworLy8gUmVtb3ZlcyBjb25zdCBmcm9tIGEgdHlwZSBpZiBpdCBp
cyBhIGNvbnN0IHR5cGUsIG90aGVyd2lzZSBsZWF2ZXMKKy8vIGl0IHVuY2hhbmdlZC4gIFRoaXMg
aXMgdGhlIHNhbWUgYXMgdHIxOjpyZW1vdmVfY29uc3QsIHdoaWNoIGlzIG5vdAorLy8gd2lkZWx5
IGF2YWlsYWJsZSB5ZXQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBSZW1vdmVDb25z
dCB7IHR5cGVkZWYgVCB0eXBlOyB9OyAgLy8gTk9MSU5UCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K3N0cnVjdCBSZW1vdmVDb25zdDxjb25zdCBUPiB7IHR5cGVkZWYgVCB0eXBlOyB9OyAgLy8gTk9M
SU5UCisKKy8vIE1TVkMgOC4wLCBTdW4gQysrLCBhbmQgSUJNIFhMIEMrKyBoYXZlIGEgYnVnIHdo
aWNoIGNhdXNlcyB0aGUgYWJvdmUKKy8vIGRlZmluaXRpb24gdG8gZmFpbCB0byByZW1vdmUgdGhl
IGNvbnN0IGluICdjb25zdCBpbnRbM10nIGFuZCAnY29uc3QKKy8vIGNoYXJbM11bNF0nLiAgVGhl
IGZvbGxvd2luZyBzcGVjaWFsaXphdGlvbiB3b3JrcyBhcm91bmQgdGhlIGJ1Zy4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBULCBzaXplX3QgTj4KK3N0cnVjdCBSZW1vdmVDb25zdDxjb25zdCBUW05dPiB7
CisgIHR5cGVkZWYgdHlwZW5hbWUgUmVtb3ZlQ29uc3Q8VD46OnR5cGUgdHlwZVtOXTsKK307CisK
KyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA8IDE0MDAKKy8vIFRoaXMgaXMgdGhl
IG9ubHkgc3BlY2lhbGl6YXRpb24gdGhhdCBhbGxvd3MgVkMrKyA3LjEgdG8gcmVtb3ZlIGNvbnN0
IGluCisvLyAnY29uc3QgaW50WzNdIGFuZCAnY29uc3QgaW50WzNdWzRdJy4gIEhvd2V2ZXIsIGl0
IGNhdXNlcyB0cm91YmxlIHdpdGggR0NDCisvLyBhbmQgdGh1cyBuZWVkcyB0byBiZSBjb25kaXRp
b25hbGx5IGNvbXBpbGVkLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgorc3RydWN0
IFJlbW92ZUNvbnN0PFRbTl0+IHsKKyAgdHlwZWRlZiB0eXBlbmFtZSBSZW1vdmVDb25zdDxUPjo6
dHlwZSB0eXBlW05dOworfTsKKyNlbmRpZgorCisvLyBBIGhhbmR5IHdyYXBwZXIgYXJvdW5kIFJl
bW92ZUNvbnN0IHRoYXQgd29ya3Mgd2hlbiB0aGUgYXJndW1lbnQKKy8vIFQgZGVwZW5kcyBvbiB0
ZW1wbGF0ZSBwYXJhbWV0ZXJzLgorI2RlZmluZSBHVEVTVF9SRU1PVkVfQ09OU1RfKFQpIFwKKyAg
ICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpSZW1vdmVDb25zdDxUPjo6dHlwZQorCisv
LyBUdXJucyBjb25zdCBVJiwgVSYsIGNvbnN0IFUsIGFuZCBVIGFsbCBpbnRvIFUuCisjZGVmaW5l
IEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhUKSBcCisgICAgR1RFU1RfUkVNT1ZF
X0NPTlNUXyhHVEVTVF9SRU1PVkVfUkVGRVJFTkNFXyhUKSkKKworLy8gSW1wbGljaXRseUNvbnZl
cnRpYmxlPEZyb20sIFRvPjo6dmFsdWUgaXMgYSBjb21waWxlLXRpbWUgYm9vbAorLy8gY29uc3Rh
bnQgdGhhdCdzIHRydWUgaWZmIHR5cGUgRnJvbSBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQg
dG8KKy8vIHR5cGUgVG8uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Citj
bGFzcyBJbXBsaWNpdGx5Q29udmVydGlibGUgeworIHByaXZhdGU6CisgIC8vIFdlIG5lZWQgdGhl
IGZvbGxvd2luZyBoZWxwZXIgZnVuY3Rpb25zIG9ubHkgZm9yIHRoZWlyIHR5cGVzLgorICAvLyBU
aGV5IGhhdmUgbm8gaW1wbGVtZW50YXRpb25zLgorCisgIC8vIE1ha2VGcm9tKCkgaXMgYW4gZXhw
cmVzc2lvbiB3aG9zZSB0eXBlIGlzIEZyb20uICBXZSBjYW5ub3Qgc2ltcGx5CisgIC8vIHVzZSBG
cm9tKCksIGFzIHRoZSB0eXBlIEZyb20gbWF5IG5vdCBoYXZlIGEgcHVibGljIGRlZmF1bHQKKyAg
Ly8gY29uc3RydWN0b3IuCisgIHN0YXRpYyB0eXBlbmFtZSBBZGRSZWZlcmVuY2U8RnJvbT46OnR5
cGUgTWFrZUZyb20oKTsKKworICAvLyBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSBvdmVybG9hZGVk
LiAgR2l2ZW4gYW4gZXhwcmVzc2lvbgorICAvLyBIZWxwZXIoeCksIHRoZSBjb21waWxlciB3aWxs
IHBpY2sgdGhlIGZpcnN0IHZlcnNpb24gaWYgeCBjYW4gYmUKKyAgLy8gaW1wbGljaXRseSBjb252
ZXJ0ZWQgdG8gdHlwZSBUbzsgb3RoZXJ3aXNlIGl0IHdpbGwgcGljayB0aGUKKyAgLy8gc2Vjb25k
IHZlcnNpb24uCisgIC8vCisgIC8vIFRoZSBmaXJzdCB2ZXJzaW9uIHJldHVybnMgYSB2YWx1ZSBv
ZiBzaXplIDEsIGFuZCB0aGUgc2Vjb25kCisgIC8vIHZlcnNpb24gcmV0dXJucyBhIHZhbHVlIG9m
IHNpemUgMi4gIFRoZXJlZm9yZSwgYnkgY2hlY2tpbmcgdGhlCisgIC8vIHNpemUgb2YgSGVscGVy
KHgpLCB3aGljaCBjYW4gYmUgZG9uZSBhdCBjb21waWxlIHRpbWUsIHdlIGNhbiB0ZWxsCisgIC8v
IHdoaWNoIHZlcnNpb24gb2YgSGVscGVyKCkgaXMgdXNlZCwgYW5kIGhlbmNlIHdoZXRoZXIgeCBj
YW4gYmUKKyAgLy8gaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gdHlwZSBUby4KKyAgc3RhdGljIGNo
YXIgSGVscGVyKFRvKTsKKyAgc3RhdGljIGNoYXIgKCZIZWxwZXIoLi4uKSlbMl07ICAvLyBOT0xJ
TlQKKworICAvLyBXZSBoYXZlIHRvIHB1dCB0aGUgJ3B1YmxpYycgc2VjdGlvbiBhZnRlciB0aGUg
J3ByaXZhdGUnIHNlY3Rpb24sCisgIC8vIG9yIE1TVkMgcmVmdXNlcyB0byBjb21waWxlIHRoZSBj
b2RlLgorIHB1YmxpYzoKKyNpZiBkZWZpbmVkKF9fQk9STEFORENfXykKKyAgLy8gQysrQnVpbGRl
ciBjYW5ub3QgdXNlIG1lbWJlciBvdmVybG9hZCByZXNvbHV0aW9uIGR1cmluZyB0ZW1wbGF0ZQor
ICAvLyBpbnN0YW50aWF0aW9uLiAgVGhlIHNpbXBsZXN0IHdvcmthcm91bmQgaXMgdG8gdXNlIGl0
cyBDKysweCB0eXBlIHRyYWl0cworICAvLyBmdW5jdGlvbnMgKEMrK0J1aWxkZXIgMjAwOSBhbmQg
YWJvdmUgb25seSkuCisgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gX19pc19jb252ZXJ0aWJs
ZShGcm9tLCBUbyk7CisjZWxzZQorICAvLyBNU1ZDIHdhcm5zIGFib3V0IGltcGxpY2l0bHkgY29u
dmVydGluZyBmcm9tIGRvdWJsZSB0byBpbnQgZm9yCisgIC8vIHBvc3NpYmxlIGxvc3Mgb2YgZGF0
YSwgc28gd2UgbmVlZCB0byB0ZW1wb3JhcmlseSBkaXNhYmxlIHRoZQorICAvLyB3YXJuaW5nLgor
ICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MjQ0KQorICBzdGF0aWMgY29uc3Qg
Ym9vbCB2YWx1ZSA9CisgICAgICBzaXplb2YoSGVscGVyKEltcGxpY2l0bHlDb252ZXJ0aWJsZTo6
TWFrZUZyb20oKSkpID09IDE7CisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQor
I2VuZGlmICAvLyBfX0JPUkxBTkRDX18KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlw
ZW5hbWUgVG8+Citjb25zdCBib29sIEltcGxpY2l0bHlDb252ZXJ0aWJsZTxGcm9tLCBUbz46OnZh
bHVlOworCisvLyBJc0FQcm90b2NvbE1lc3NhZ2U8VD46OnZhbHVlIGlzIGEgY29tcGlsZS10aW1l
IGJvb2wgY29uc3RhbnQgdGhhdCdzCisvLyB0cnVlIGlmZiBUIGlzIHR5cGUgUHJvdG9jb2xNZXNz
YWdlLCBwcm90bzI6Ok1lc3NhZ2UsIG9yIGEgc3ViY2xhc3MKKy8vIG9mIHRob3NlLgordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNBUHJvdG9jb2xNZXNzYWdlCisgICAgOiBwdWJsaWMg
Ym9vbF9jb25zdGFudDwKKyAgSW1wbGljaXRseUNvbnZlcnRpYmxlPGNvbnN0IFQqLCBjb25zdCA6
OlByb3RvY29sTWVzc2FnZSo+Ojp2YWx1ZSB8fAorICBJbXBsaWNpdGx5Q29udmVydGlibGU8Y29u
c3QgVCosIGNvbnN0IDo6cHJvdG8yOjpNZXNzYWdlKj46OnZhbHVlPiB7Cit9OworCisvLyBXaGVu
IHRoZSBjb21waWxlciBzZWVzIGV4cHJlc3Npb24gSXNDb250YWluZXJUZXN0PEM+KDApLCBpZiBD
IGlzIGFuCisvLyBTVEwtc3R5bGUgY29udGFpbmVyIGNsYXNzLCB0aGUgZmlyc3Qgb3ZlcmxvYWQg
b2YgSXNDb250YWluZXJUZXN0CisvLyB3aWxsIGJlIHZpYWJsZSAoc2luY2UgYm90aCBDOjppdGVy
YXRvciogYW5kIEM6OmNvbnN0X2l0ZXJhdG9yKiBhcmUKKy8vIHZhbGlkIHR5cGVzIGFuZCBOVUxM
IGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0aGVtKS4gIEl0IHdpbGwKKy8vIGJlIHBp
Y2tlZCBvdmVyIHRoZSBzZWNvbmQgb3ZlcmxvYWQgYXMgJ2ludCcgaXMgYSBwZXJmZWN0IG1hdGNo
IGZvcgorLy8gdGhlIHR5cGUgb2YgYXJndW1lbnQgMC4gIElmIEM6Oml0ZXJhdG9yIG9yIEM6OmNv
bnN0X2l0ZXJhdG9yIGlzIG5vdAorLy8gYSB2YWxpZCB0eXBlLCB0aGUgZmlyc3Qgb3ZlcmxvYWQg
aXMgbm90IHZpYWJsZSwgYW5kIHRoZSBzZWNvbmQKKy8vIG92ZXJsb2FkIHdpbGwgYmUgcGlja2Vk
LiAgVGhlcmVmb3JlLCB3ZSBjYW4gZGV0ZXJtaW5lIHdoZXRoZXIgQyBpcworLy8gYSBjb250YWlu
ZXIgY2xhc3MgYnkgY2hlY2tpbmcgdGhlIHR5cGUgb2YgSXNDb250YWluZXJUZXN0PEM+KDApLgor
Ly8gVGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlzIGluc2lnbmlmaWNhbnQuCisvLworLy8g
SW4gQysrMTEgbW9kZSB3ZSBjaGVjayB0aGUgZXhpc3RlbmNlIG9mIGEgY29uc3RfaXRlcmF0b3Ig
YW5kIHRoYXQgYW4KKy8vIGl0ZXJhdG9yIGlzIHByb3Blcmx5IGltcGxlbWVudGVkIGZvciB0aGUg
Y29udGFpbmVyLgorLy8KKy8vIEZvciBwcmUtQysrMTEgdGhhdCB3ZSBsb29rIGZvciBib3RoIEM6
Oml0ZXJhdG9yIGFuZCBDOjpjb25zdF9pdGVyYXRvci4KKy8vIFRoZSByZWFzb24gaXMgdGhhdCBD
KysgaW5qZWN0cyB0aGUgbmFtZSBvZiBhIGNsYXNzIGFzIGEgbWVtYmVyIG9mIHRoZQorLy8gY2xh
c3MgaXRzZWxmIChlLmcuIHlvdSBjYW4gcmVmZXIgdG8gY2xhc3MgaXRlcmF0b3IgYXMgZWl0aGVy
CisvLyAnaXRlcmF0b3InIG9yICdpdGVyYXRvcjo6aXRlcmF0b3InKS4gIElmIHdlIGxvb2sgZm9y
IEM6Oml0ZXJhdG9yCisvLyBvbmx5LCBmb3IgZXhhbXBsZSwgd2Ugd291bGQgbWlzdGFrZW5seSB0
aGluayB0aGF0IGEgY2xhc3MgbmFtZWQKKy8vIGl0ZXJhdG9yIGlzIGFuIFNUTCBjb250YWluZXIu
CisvLworLy8gQWxzbyBub3RlIHRoYXQgdGhlIHNpbXBsZXIgYXBwcm9hY2ggb2Ygb3ZlcmxvYWRp
bmcKKy8vIElzQ29udGFpbmVyVGVzdCh0eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvciopIGFuZAor
Ly8gSXNDb250YWluZXJUZXN0KC4uLikgZG9lc24ndCB3b3JrIHdpdGggVmlzdWFsIEFnZSBDKysg
YW5kIFN1biBDKysuCit0eXBlZGVmIGludCBJc0NvbnRhaW5lcjsKKyNpZiBHVEVTVF9MQU5HX0NY
WDExCit0ZW1wbGF0ZSA8Y2xhc3MgQywKKyAgICAgICAgICBjbGFzcyBJdGVyYXRvciA9IGRlY2x0
eXBlKDo6c3RkOjpkZWNsdmFsPGNvbnN0IEMmPigpLmJlZ2luKCkpLAorICAgICAgICAgIGNsYXNz
ID0gZGVjbHR5cGUoOjpzdGQ6OmRlY2x2YWw8Y29uc3QgQyY+KCkuZW5kKCkpLAorICAgICAgICAg
IGNsYXNzID0gZGVjbHR5cGUoKys6OnN0ZDo6ZGVjbHZhbDxJdGVyYXRvciY+KCkpLAorICAgICAg
ICAgIGNsYXNzID0gZGVjbHR5cGUoKjo6c3RkOjpkZWNsdmFsPEl0ZXJhdG9yPigpKSwKKyAgICAg
ICAgICBjbGFzcyA9IHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yPgorSXNDb250YWluZXIgSXND
b250YWluZXJUZXN0KGludCAvKiBkdW1teSAqLykgeworICByZXR1cm4gMDsKK30KKyNlbHNlCit0
ZW1wbGF0ZSA8Y2xhc3MgQz4KK0lzQ29udGFpbmVyIElzQ29udGFpbmVyVGVzdChpbnQgLyogZHVt
bXkgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQzo6aXRlcmF0b3Iq
IC8qIGl0ICovID0gTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBD
Ojpjb25zdF9pdGVyYXRvciogLyogY29uc3RfaXQgKi8gPSBOVUxMKSB7CisgIHJldHVybiAwOwor
fQorI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisKK3R5cGVkZWYgY2hhciBJc05vdENvbnRh
aW5lcjsKK3RlbXBsYXRlIDxjbGFzcyBDPgorSXNOb3RDb250YWluZXIgSXNDb250YWluZXJUZXN0
KGxvbmcgLyogZHVtbXkgKi8pIHsgcmV0dXJuICdcMCc7IH0KKworLy8gVHJhaXQgdG8gZGV0ZWN0
IHdoZXRoZXIgYSB0eXBlIFQgaXMgYSBoYXNoIHRhYmxlLgorLy8gVGhlIGhldXJpc3RpYyB1c2Vk
IGlzIHRoYXQgdGhlIHR5cGUgY29udGFpbnMgYW4gaW5uZXIgdHlwZSBgaGFzaGVyYCBhbmQgZG9l
cworLy8gbm90IGNvbnRhaW4gYW4gaW5uZXIgdHlwZSBgcmV2ZXJzZV9pdGVyYXRvcmAuCisvLyBJ
ZiB0aGUgY29udGFpbmVyIGlzIGl0ZXJhYmxlIGluIHJldmVyc2UsIHRoZW4gb3JkZXIgbWlnaHQg
YWN0dWFsbHkgbWF0dGVyLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNIYXNoVGFi
bGUgeworIHByaXZhdGU6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICBzdGF0aWMgY2hhciB0
ZXN0KHR5cGVuYW1lIFU6Omhhc2hlciosIHR5cGVuYW1lIFU6OnJldmVyc2VfaXRlcmF0b3IqKTsK
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIHN0YXRpYyBpbnQgdGVzdCh0eXBlbmFtZSBVOjpo
YXNoZXIqLCAuLi4pOworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgc3RhdGljIGNoYXIgdGVz
dCguLi4pOworCisgcHVibGljOgorICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZih0
ZXN0PFQ+KDAsIDApKSA9PSBzaXplb2YoaW50KTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PgorY29uc3QgYm9vbCBJc0hhc2hUYWJsZTxUPjo6dmFsdWU7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitzdHJ1Y3QgVm9pZFQgeworICAgIHR5cGVkZWYgdm9pZCB2YWx1ZV90eXBlOworfTsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdm9pZD4KK3N0cnVjdCBIYXNWYWx1ZVR5
cGUgOiBmYWxzZV90eXBlIHt9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSGFzVmFs
dWVUeXBlPFQsIFZvaWRUPHR5cGVuYW1lIFQ6OnZhbHVlX3R5cGU+ID4gOiB0cnVlX3R5cGUgewor
fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEMsCisgICAgICAgICAgYm9vbCA9IHNpemVvZihJc0Nv
bnRhaW5lclRlc3Q8Qz4oMCkpID09IHNpemVvZihJc0NvbnRhaW5lciksCisgICAgICAgICAgYm9v
bCA9IEhhc1ZhbHVlVHlwZTxDPjo6dmFsdWU+CitzdHJ1Y3QgSXNSZWN1cnNpdmVDb250YWluZXJJ
bXBsOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQywgYm9vbCBIVj4KK3N0cnVjdCBJc1JlY3Vyc2l2
ZUNvbnRhaW5lckltcGw8QywgZmFsc2UsIEhWPiA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OworCisv
LyBTaW5jZSB0aGUgSXNSZWN1cnNpdmVDb250YWluZXJJbXBsIGRlcGVuZHMgb24gdGhlIElzQ29u
dGFpbmVyVGVzdCB3ZSBuZWVkIHRvCisvLyBvYmV5IHRoZSBzYW1lIGluY29uc2lzdGVuY2llcyBh
cyB0aGUgSXNDb250YWluZXJUZXN0LCBuYW1lbHkgY2hlY2sgaWYKKy8vIHNvbWV0aGluZyBpcyBh
IGNvbnRhaW5lciBpcyByZWx5aW5nIG9uIG9ubHkgY29uc3RfaXRlcmF0b3IgaW4gQysrMTEgYW5k
CisvLyBpcyByZWx5aW5nIG9uIGJvdGggY29uc3RfaXRlcmF0b3IgYW5kIGl0ZXJhdG9yIG90aGVy
d2lzZQordGVtcGxhdGUgPHR5cGVuYW1lIEM+CitzdHJ1Y3QgSXNSZWN1cnNpdmVDb250YWluZXJJ
bXBsPEMsIHRydWUsIGZhbHNlPiA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgQz4KK3N0cnVjdCBJc1JlY3Vyc2l2ZUNvbnRhaW5lckltcGw8QywgdHJ1ZSwgdHJ1
ZT4geworICAjaWYgR1RFU1RfTEFOR19DWFgxMQorICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9y
VHJhaXRzPHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yPjo6dmFsdWVfdHlwZQorICAgICAgdmFs
dWVfdHlwZTsKKyNlbHNlCisgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3JUcmFpdHM8dHlwZW5h
bWUgQzo6aXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7CisjZW5kaWYKKyAgdHlwZWRl
ZiBpc19zYW1lPHZhbHVlX3R5cGUsIEM+IHR5cGU7Cit9OworCisvLyBJc1JlY3Vyc2l2ZUNvbnRh
aW5lcjxUeXBlPiBpcyBhIHVuYXJ5IGNvbXBpbGUtdGltZSBwcmVkaWNhdGUgdGhhdAorLy8gZXZh
bHVhdGVzIHdoZXRoZXIgQyBpcyBhIHJlY3Vyc2l2ZSBjb250YWluZXIgdHlwZS4gQSByZWN1cnNp
dmUgY29udGFpbmVyCisvLyB0eXBlIGlzIGEgY29udGFpbmVyIHR5cGUgd2hvc2UgdmFsdWVfdHlw
ZSBpcyBlcXVhbCB0byB0aGUgY29udGFpbmVyIHR5cGUKKy8vIGl0c2VsZi4gQW4gZXhhbXBsZSBm
b3IgYSByZWN1cnNpdmUgY29udGFpbmVyIHR5cGUgaXMKKy8vIGJvb3N0OjpmaWxlc3lzdGVtOjpw
YXRoLCB3aG9zZSBpdGVyYXRvciBoYXMgYSB2YWx1ZV90eXBlIHRoYXQgaXMgZXF1YWwgdG8KKy8v
IGJvb3N0OjpmaWxlc3lzdGVtOjpwYXRoLgordGVtcGxhdGUgPHR5cGVuYW1lIEM+CitzdHJ1Y3Qg
SXNSZWN1cnNpdmVDb250YWluZXIgOiBwdWJsaWMgSXNSZWN1cnNpdmVDb250YWluZXJJbXBsPEM+
Ojp0eXBlIHt9OworCisvLyBFbmFibGVJZjxjb25kaXRpb24+Ojp0eXBlIGlzIHZvaWQgd2hlbiAn
Q29uZCcgaXMgdHJ1ZSwgYW5kCisvLyB1bmRlZmluZWQgd2hlbiAnQ29uZCcgaXMgZmFsc2UuICBU
byB1c2UgU0ZJTkFFIHRvIG1ha2UgYSBmdW5jdGlvbgorLy8gb3ZlcmxvYWQgb25seSBhcHBseSB3
aGVuIGEgcGFydGljdWxhciBleHByZXNzaW9uIGlzIHRydWUsIGFkZAorLy8gInR5cGVuYW1lIEVu
YWJsZUlmPGV4cHJlc3Npb24+Ojp0eXBlKiA9IDAiIGFzIHRoZSBsYXN0IHBhcmFtZXRlci4KK3Rl
bXBsYXRlPGJvb2w+IHN0cnVjdCBFbmFibGVJZjsKK3RlbXBsYXRlPD4gc3RydWN0IEVuYWJsZUlm
PHRydWU+IHsgdHlwZWRlZiB2b2lkIHR5cGU7IH07ICAvLyBOT0xJTlQKKworLy8gVXRpbGl0aWVz
IGZvciBuYXRpdmUgYXJyYXlzLgorCisvLyBBcnJheUVxKCkgY29tcGFyZXMgdHdvIGstZGltZW5z
aW9uYWwgbmF0aXZlIGFycmF5cyB1c2luZyB0aGUKKy8vIGVsZW1lbnRzJyBvcGVyYXRvcj09LCB3
aGVyZSBrIGNhbiBiZSBhbnkgaW50ZWdlciA+PSAwLiAgV2hlbiBrIGlzCisvLyAwLCBBcnJheUVx
KCkgZGVnZW5lcmF0ZXMgaW50byBjb21wYXJpbmcgYSBzaW5nbGUgcGFpciBvZiB2YWx1ZXMuCisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorYm9vbCBBcnJheUVxKGNvbnN0IFQq
IGxocywgc2l6ZV90IHNpemUsIGNvbnN0IFUqIHJocyk7CisKKy8vIFRoaXMgZ2VuZXJpYyB2ZXJz
aW9uIGlzIHVzZWQgd2hlbiBrIGlzIDAuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4KK2lubGluZSBib29sIEFycmF5RXEoY29uc3QgVCYgbGhzLCBjb25zdCBVJiByaHMpIHsgcmV0
dXJuIGxocyA9PSByaHM7IH0KKworLy8gVGhpcyBvdmVybG9hZCBpcyB1c2VkIHdoZW4gayA+PSAx
LgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBOPgoraW5saW5lIGJv
b2wgQXJyYXlFcShjb25zdCBUKCZsaHMpW05dLCBjb25zdCBVKCZyaHMpW05dKSB7CisgIHJldHVy
biBpbnRlcm5hbDo6QXJyYXlFcShsaHMsIE4sIHJocyk7Cit9CisKKy8vIFRoaXMgaGVscGVyIHJl
ZHVjZXMgY29kZSBibG9hdC4gIElmIHdlIGluc3RlYWQgcHV0IGl0cyBsb2dpYyBpbnNpZGUKKy8v
IHRoZSBwcmV2aW91cyBBcnJheUVxKCkgZnVuY3Rpb24sIGFycmF5cyB3aXRoIGRpZmZlcmVudCBz
aXplcyB3b3VsZAorLy8gbGVhZCB0byBkaWZmZXJlbnQgY29waWVzIG9mIHRoZSB0ZW1wbGF0ZSBj
b2RlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Citib29sIEFycmF5RXEoY29u
c3QgVCogbGhzLCBzaXplX3Qgc2l6ZSwgY29uc3QgVSogcmhzKSB7CisgIGZvciAoc2l6ZV90IGkg
PSAwOyBpICE9IHNpemU7IGkrKykgeworICAgIGlmICghaW50ZXJuYWw6OkFycmF5RXEobGhzW2ld
LCByaHNbaV0pKQorICAgICAgcmV0dXJuIGZhbHNlOworICB9CisgIHJldHVybiB0cnVlOworfQor
CisvLyBGaW5kcyB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgaXRlcmF0b3IgcmFuZ2UgW2JlZ2lu
LCBlbmQpIHRoYXQKKy8vIGVxdWFscyBlbGVtLiAgRWxlbWVudCBtYXkgYmUgYSBuYXRpdmUgYXJy
YXkgdHlwZSBpdHNlbGYuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlciwgdHlwZW5hbWUgRWxlbWVu
dD4KK0l0ZXIgQXJyYXlBd2FyZUZpbmQoSXRlciBiZWdpbiwgSXRlciBlbmQsIGNvbnN0IEVsZW1l
bnQmIGVsZW0pIHsKKyAgZm9yIChJdGVyIGl0ID0gYmVnaW47IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgIGlmIChpbnRlcm5hbDo6QXJyYXlFcSgqaXQsIGVsZW0pKQorICAgICAgcmV0dXJuIGl0Owor
ICB9CisgIHJldHVybiBlbmQ7Cit9CisKKy8vIENvcHlBcnJheSgpIGNvcGllcyBhIGstZGltZW5z
aW9uYWwgbmF0aXZlIGFycmF5IHVzaW5nIHRoZSBlbGVtZW50cycKKy8vIG9wZXJhdG9yPSwgd2hl
cmUgayBjYW4gYmUgYW55IGludGVnZXIgPj0gMC4gIFdoZW4gayBpcyAwLAorLy8gQ29weUFycmF5
KCkgZGVnZW5lcmF0ZXMgaW50byBjb3B5aW5nIGEgc2luZ2xlIHZhbHVlLgorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3ZvaWQgQ29weUFycmF5KGNvbnN0IFQqIGZyb20sIHNp
emVfdCBzaXplLCBVKiB0byk7CisKKy8vIFRoaXMgZ2VuZXJpYyB2ZXJzaW9uIGlzIHVzZWQgd2hl
biBrIGlzIDAuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2lubGluZSB2b2lk
IENvcHlBcnJheShjb25zdCBUJiBmcm9tLCBVKiB0bykgeyAqdG8gPSBmcm9tOyB9CisKKy8vIFRo
aXMgb3ZlcmxvYWQgaXMgdXNlZCB3aGVuIGsgPj0gMS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVLCBzaXplX3QgTj4KK2lubGluZSB2b2lkIENvcHlBcnJheShjb25zdCBUKCZmcm9t
KVtOXSwgVSgqdG8pW05dKSB7CisgIGludGVybmFsOjpDb3B5QXJyYXkoZnJvbSwgTiwgKnRvKTsK
K30KKworLy8gVGhpcyBoZWxwZXIgcmVkdWNlcyBjb2RlIGJsb2F0LiAgSWYgd2UgaW5zdGVhZCBw
dXQgaXRzIGxvZ2ljIGluc2lkZQorLy8gdGhlIHByZXZpb3VzIENvcHlBcnJheSgpIGZ1bmN0aW9u
LCBhcnJheXMgd2l0aCBkaWZmZXJlbnQgc2l6ZXMKKy8vIHdvdWxkIGxlYWQgdG8gZGlmZmVyZW50
IGNvcGllcyBvZiB0aGUgdGVtcGxhdGUgY29kZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPgordm9pZCBDb3B5QXJyYXkoY29uc3QgVCogZnJvbSwgc2l6ZV90IHNpemUsIFUqIHRv
KSB7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHNpemU7IGkrKykgeworICAgIGludGVybmFs
OjpDb3B5QXJyYXkoZnJvbVtpXSwgdG8gKyBpKTsKKyAgfQorfQorCisvLyBUaGUgcmVsYXRpb24g
YmV0d2VlbiBhbiBOYXRpdmVBcnJheSBvYmplY3QgKHNlZSBiZWxvdykgYW5kIHRoZQorLy8gbmF0
aXZlIGFycmF5IGl0IHJlcHJlc2VudHMuCisvLyBXZSB1c2UgMiBkaWZmZXJlbnQgc3RydWN0cyB0
byBhbGxvdyBub24tY29weWFibGUgdHlwZXMgdG8gYmUgdXNlZCwgYXMgbG9uZworLy8gYXMgUmVs
YXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgpIGlzIHBhc3NlZC4KK3N0cnVjdCBSZWxhdGlvblRvU291
cmNlUmVmZXJlbmNlIHt9Oworc3RydWN0IFJlbGF0aW9uVG9Tb3VyY2VDb3B5IHt9OworCisvLyBB
ZGFwdHMgYSBuYXRpdmUgYXJyYXkgdG8gYSByZWFkLW9ubHkgU1RMLXN0eWxlIGNvbnRhaW5lci4g
IEluc3RlYWQKKy8vIG9mIHRoZSBjb21wbGV0ZSBTVEwgY29udGFpbmVyIGNvbmNlcHQsIHRoaXMg
YWRhcHRvciBvbmx5IGltcGxlbWVudHMKKy8vIG1lbWJlcnMgdXNlZnVsIGZvciBHb29nbGUgTW9j
aydzIGNvbnRhaW5lciBtYXRjaGVycy4gIE5ldyBtZW1iZXJzCisvLyBzaG91bGQgYmUgYWRkZWQg
YXMgbmVlZGVkLiAgVG8gc2ltcGxpZnkgdGhlIGltcGxlbWVudGF0aW9uLCB3ZSBvbmx5CisvLyBz
dXBwb3J0IEVsZW1lbnQgYmVpbmcgYSByYXcgdHlwZSAoaS5lLiBoYXZpbmcgbm8gdG9wLWxldmVs
IGNvbnN0IG9yCisvLyByZWZlcmVuY2UgbW9kaWZpZXIpLiAgSXQncyB0aGUgY2xpZW50J3MgcmVz
cG9uc2liaWxpdHkgdG8gc2F0aXNmeQorLy8gdGhpcyByZXF1aXJlbWVudC4gIEVsZW1lbnQgY2Fu
IGJlIGFuIGFycmF5IHR5cGUgaXRzZWxmIChoZW5jZQorLy8gbXVsdGktZGltZW5zaW9uYWwgYXJy
YXlzIGFyZSBzdXBwb3J0ZWQpLgordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnQ+CitjbGFzcyBO
YXRpdmVBcnJheSB7CisgcHVibGljOgorICAvLyBTVEwtc3R5bGUgY29udGFpbmVyIHR5cGVkZWZz
LgorICB0eXBlZGVmIEVsZW1lbnQgdmFsdWVfdHlwZTsKKyAgdHlwZWRlZiBFbGVtZW50KiBpdGVy
YXRvcjsKKyAgdHlwZWRlZiBjb25zdCBFbGVtZW50KiBjb25zdF9pdGVyYXRvcjsKKworICAvLyBD
b25zdHJ1Y3RzIGZyb20gYSBuYXRpdmUgYXJyYXkuIFJlZmVyZW5jZXMgdGhlIHNvdXJjZS4KKyAg
TmF0aXZlQXJyYXkoY29uc3QgRWxlbWVudCogYXJyYXksIHNpemVfdCBjb3VudCwgUmVsYXRpb25U
b1NvdXJjZVJlZmVyZW5jZSkgeworICAgIEluaXRSZWYoYXJyYXksIGNvdW50KTsKKyAgfQorCisg
IC8vIENvbnN0cnVjdHMgZnJvbSBhIG5hdGl2ZSBhcnJheS4gQ29waWVzIHRoZSBzb3VyY2UuCisg
IE5hdGl2ZUFycmF5KGNvbnN0IEVsZW1lbnQqIGFycmF5LCBzaXplX3QgY291bnQsIFJlbGF0aW9u
VG9Tb3VyY2VDb3B5KSB7CisgICAgSW5pdENvcHkoYXJyYXksIGNvdW50KTsKKyAgfQorCisgIC8v
IENvcHkgY29uc3RydWN0b3IuCisgIE5hdGl2ZUFycmF5KGNvbnN0IE5hdGl2ZUFycmF5JiByaHMp
IHsKKyAgICAodGhpcy0+KnJocy5jbG9uZV8pKHJocy5hcnJheV8sIHJocy5zaXplXyk7CisgIH0K
KworICB+TmF0aXZlQXJyYXkoKSB7CisgICAgaWYgKGNsb25lXyAhPSAmTmF0aXZlQXJyYXk6Oklu
aXRSZWYpCisgICAgICBkZWxldGVbXSBhcnJheV87CisgIH0KKworICAvLyBTVEwtc3R5bGUgY29u
dGFpbmVyIG1ldGhvZHMuCisgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZV87IH0K
KyAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBhcnJheV87IH0KKyAgY29u
c3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gYXJyYXlfICsgc2l6ZV87IH0KKyAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IE5hdGl2ZUFycmF5JiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4g
c2l6ZSgpID09IHJocy5zaXplKCkgJiYKKyAgICAgICAgQXJyYXlFcShiZWdpbigpLCBzaXplKCks
IHJocy5iZWdpbigpKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgZW51bSB7CisgICAga0NoZWNrVHlw
ZUlzTm90Q29uc3RPckFSZWZlcmVuY2UgPSBTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI8CisgICAg
ICAgIEVsZW1lbnQsIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhFbGVtZW50KT46
OnZhbHVlCisgIH07CisKKyAgLy8gSW5pdGlhbGl6ZXMgdGhpcyBvYmplY3Qgd2l0aCBhIGNvcHkg
b2YgdGhlIGlucHV0LgorICB2b2lkIEluaXRDb3B5KGNvbnN0IEVsZW1lbnQqIGFycmF5LCBzaXpl
X3QgYV9zaXplKSB7CisgICAgRWxlbWVudCogY29uc3QgY29weSA9IG5ldyBFbGVtZW50W2Ffc2l6
ZV07CisgICAgQ29weUFycmF5KGFycmF5LCBhX3NpemUsIGNvcHkpOworICAgIGFycmF5XyA9IGNv
cHk7CisgICAgc2l6ZV8gPSBhX3NpemU7CisgICAgY2xvbmVfID0gJk5hdGl2ZUFycmF5OjpJbml0
Q29weTsKKyAgfQorCisgIC8vIEluaXRpYWxpemVzIHRoaXMgb2JqZWN0IHdpdGggYSByZWZlcmVu
Y2Ugb2YgdGhlIGlucHV0LgorICB2b2lkIEluaXRSZWYoY29uc3QgRWxlbWVudCogYXJyYXksIHNp
emVfdCBhX3NpemUpIHsKKyAgICBhcnJheV8gPSBhcnJheTsKKyAgICBzaXplXyA9IGFfc2l6ZTsK
KyAgICBjbG9uZV8gPSAmTmF0aXZlQXJyYXk6OkluaXRSZWY7CisgIH0KKworICBjb25zdCBFbGVt
ZW50KiBhcnJheV87CisgIHNpemVfdCBzaXplXzsKKyAgdm9pZCAoTmF0aXZlQXJyYXk6OipjbG9u
ZV8pKGNvbnN0IEVsZW1lbnQqLCBzaXplX3QpOworCisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8o
TmF0aXZlQXJyYXkpOworfTsKKwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1l
c3BhY2UgdGVzdGluZwogCi0jZGVmaW5lIEdURVNUX01FU1NBR0VfKG1lc3NhZ2UsIHJlc3VsdF90
eXBlKSBcCi0gIDo6dGVzdGluZzo6aW50ZXJuYWw6OkFzc2VydEhlbHBlcihyZXN1bHRfdHlwZSwg
X19GSUxFX18sIF9fTElORV9fLCBtZXNzYWdlKSBcCisjZGVmaW5lIEdURVNUX01FU1NBR0VfQVRf
KGZpbGUsIGxpbmUsIG1lc3NhZ2UsIHJlc3VsdF90eXBlKSBcCisgIDo6dGVzdGluZzo6aW50ZXJu
YWw6OkFzc2VydEhlbHBlcihyZXN1bHRfdHlwZSwgZmlsZSwgbGluZSwgbWVzc2FnZSkgXAogICAg
ID0gOjp0ZXN0aW5nOjpNZXNzYWdlKCkKIAorI2RlZmluZSBHVEVTVF9NRVNTQUdFXyhtZXNzYWdl
LCByZXN1bHRfdHlwZSkgXAorICBHVEVTVF9NRVNTQUdFX0FUXyhfX0ZJTEVfXywgX19MSU5FX18s
IG1lc3NhZ2UsIHJlc3VsdF90eXBlKQorCiAjZGVmaW5lIEdURVNUX0ZBVEFMX0ZBSUxVUkVfKG1l
c3NhZ2UpIFwKICAgcmV0dXJuIEdURVNUX01FU1NBR0VfKG1lc3NhZ2UsIDo6dGVzdGluZzo6VGVz
dFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUpCiAKQEAgLTgwMCw3ICsxMjA4LDcgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBSYW5kb20gewogI2RlZmluZSBHVEVTVF9TVUNDRVNTXyhtZXNzYWdlKSBcCiAg
IEdURVNUX01FU1NBR0VfKG1lc3NhZ2UsIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ6OmtTdWNj
ZXNzKQogCi0vLyBTdXBwcmVzc2VzIE1TVkMgd2FybmluZ3MgNDA3MiAodW5yZWFjaGFibGUgY29k
ZSkgZm9yIHRoZSBjb2RlIGZvbGxvd2luZworLy8gU3VwcHJlc3MgTVNWQyB3YXJuaW5nIDQ3MDIg
KHVucmVhY2hhYmxlIGNvZGUpIGZvciB0aGUgY29kZSBmb2xsb3dpbmcKIC8vIHN0YXRlbWVudCBp
ZiBpdCByZXR1cm5zIG9yIHRocm93cyAob3IgZG9lc24ndCByZXR1cm4gb3IgdGhyb3cgaW4gc29t
ZQogLy8gc2l0dWF0aW9ucykuCiAjZGVmaW5lIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NP
REVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KSBcCkBAIC04MDgsNyArMTIxNiw3IEBAIGNsYXNz
IEdURVNUX0FQSV8gUmFuZG9tIHsKIAogI2RlZmluZSBHVEVTVF9URVNUX1RIUk9XXyhzdGF0ZW1l
bnQsIGV4cGVjdGVkX2V4Y2VwdGlvbiwgZmFpbCkgXAogICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9C
TE9DS0VSXyBcCi0gIGlmIChjb25zdCBjaGFyKiBndGVzdF9tc2cgPSAiIikgeyBcCisgIGlmICg6
OnRlc3Rpbmc6OmludGVybmFsOjpDb25zdENoYXJQdHIgZ3Rlc3RfbXNnID0gIiIpIHsgXAogICAg
IGJvb2wgZ3Rlc3RfY2F1Z2h0X2V4cGVjdGVkID0gZmFsc2U7IFwKICAgICB0cnkgeyBcCiAgICAg
ICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVu
dCk7IFwKQEAgLTgxNywzOCArMTIyNSwzOCBAQCBjbGFzcyBHVEVTVF9BUElfIFJhbmRvbSB7CiAg
ICAgICBndGVzdF9jYXVnaHRfZXhwZWN0ZWQgPSB0cnVlOyBcCiAgICAgfSBcCiAgICAgY2F0Y2gg
KC4uLikgeyBcCi0gICAgICBndGVzdF9tc2cgPSAiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIHRo
cm93cyBhbiBleGNlcHRpb24gb2YgdHlwZSAiIFwKLSAgICAgICAgICAgICAgICAgICNleHBlY3Rl
ZF9leGNlcHRpb24gIi5cbiAgQWN0dWFsOiBpdCB0aHJvd3MgYSBkaWZmZXJlbnQgIiBcCi0gICAg
ICAgICAgICAgICAgICAidHlwZS4iOyBcCisgICAgICBndGVzdF9tc2cudmFsdWUgPSBcCisgICAg
ICAgICAgIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5
cGUgIiBcCisgICAgICAgICAgI2V4cGVjdGVkX2V4Y2VwdGlvbiAiLlxuICBBY3R1YWw6IGl0IHRo
cm93cyBhIGRpZmZlcmVudCB0eXBlLiI7IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VO
XyhndGVzdF9sYWJlbF90ZXN0dGhyb3dfLCBfX0xJTkVfXyk7IFwKICAgICB9IFwKICAgICBpZiAo
IWd0ZXN0X2NhdWdodF9leHBlY3RlZCkgeyBcCi0gICAgICBndGVzdF9tc2cgPSAiRXhwZWN0ZWQ6
ICIgI3N0YXRlbWVudCAiIHRocm93cyBhbiBleGNlcHRpb24gb2YgdHlwZSAiIFwKLSAgICAgICAg
ICAgICAgICAgICNleHBlY3RlZF9leGNlcHRpb24gIi5cbiAgQWN0dWFsOiBpdCB0aHJvd3Mgbm90
aGluZy4iOyBcCisgICAgICBndGVzdF9tc2cudmFsdWUgPSBcCisgICAgICAgICAgIkV4cGVjdGVk
OiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5cGUgIiBcCisgICAgICAg
ICAgI2V4cGVjdGVkX2V4Y2VwdGlvbiAiLlxuICBBY3R1YWw6IGl0IHRocm93cyBub3RoaW5nLiI7
IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0dGhyb3df
LCBfX0xJTkVfXyk7IFwKICAgICB9IFwKICAgfSBlbHNlIFwKICAgICBHVEVTVF9DT05DQVRfVE9L
RU5fKGd0ZXN0X2xhYmVsX3Rlc3R0aHJvd18sIF9fTElORV9fKTogXAotICAgICAgZmFpbChndGVz
dF9tc2cpCisgICAgICBmYWlsKGd0ZXN0X21zZy52YWx1ZSkKIAogI2RlZmluZSBHVEVTVF9URVNU
X05PX1RIUk9XXyhzdGF0ZW1lbnQsIGZhaWwpIFwKICAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxP
Q0tFUl8gXAotICBpZiAoY29uc3QgY2hhciogZ3Rlc3RfbXNnID0gIiIpIHsgXAorICBpZiAoOjp0
ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKICAgICB0cnkgeyBcCiAgICAgICBH
VEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7
IFwKICAgICB9IFwKICAgICBjYXRjaCAoLi4uKSB7IFwKLSAgICAgIGd0ZXN0X21zZyA9ICJFeHBl
Y3RlZDogIiAjc3RhdGVtZW50ICIgZG9lc24ndCB0aHJvdyBhbiBleGNlcHRpb24uXG4iIFwKLSAg
ICAgICAgICAgICAgICAgICIgIEFjdHVhbDogaXQgdGhyb3dzLiI7IFwKICAgICAgIGdvdG8gR1RF
U1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0bm90aHJvd18sIF9fTElORV9fKTsgXAog
ICAgIH0gXAogICB9IGVsc2UgXAogICAgIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxf
dGVzdG5vdGhyb3dfLCBfX0xJTkVfXyk6IFwKLSAgICAgIGZhaWwoZ3Rlc3RfbXNnKQorICAgICAg
ZmFpbCgiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgdGhyb3cgYW4gZXhjZXB0aW9u
LlxuIiBcCisgICAgICAgICAgICIgIEFjdHVhbDogaXQgdGhyb3dzLiIpCiAKICNkZWZpbmUgR1RF
U1RfVEVTVF9BTllfVEhST1dfKHN0YXRlbWVudCwgZmFpbCkgXAogICBHVEVTVF9BTUJJR1VPVVNf
RUxTRV9CTE9DS0VSXyBcCi0gIGlmIChjb25zdCBjaGFyKiBndGVzdF9tc2cgPSAiIikgeyBcCisg
IGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAogICAgIGJvb2wgZ3Rl
c3RfY2F1Z2h0X2FueSA9IGZhbHNlOyBcCiAgICAgdHJ5IHsgXAogICAgICAgR1RFU1RfU1VQUFJF
U1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCkBAIC04NTcs
MTMgKzEyNjUsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBSYW5kb20gewogICAgICAgZ3Rlc3RfY2F1
Z2h0X2FueSA9IHRydWU7IFwKICAgICB9IFwKICAgICBpZiAoIWd0ZXN0X2NhdWdodF9hbnkpIHsg
XAotICAgICAgZ3Rlc3RfbXNnID0gIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4g
ZXhjZXB0aW9uLlxuIiBcCi0gICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IGl0IGRvZXNuJ3Qu
IjsgXAogICAgICAgZ290byBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3Rhbnl0
aHJvd18sIF9fTElORV9fKTsgXAogICAgIH0gXAogICB9IGVsc2UgXAogICAgIEdURVNUX0NPTkNB
VF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdGFueXRocm93XywgX19MSU5FX18pOiBcCi0gICAgICBm
YWlsKGd0ZXN0X21zZykKKyAgICAgIGZhaWwoIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJv
d3MgYW4gZXhjZXB0aW9uLlxuIiBcCisgICAgICAgICAgICIgIEFjdHVhbDogaXQgZG9lc24ndC4i
KQogCiAKIC8vIEltcGxlbWVudHMgQm9vbGVhbiB0ZXN0IGFzc2VydGlvbnMgc3VjaCBhcyBFWFBF
Q1RfVFJVRS4gZXhwcmVzc2lvbiBjYW4gYmUKQEAgLTg4MCwxOCArMTI4NywxNyBAQCBjbGFzcyBH
VEVTVF9BUElfIFJhbmRvbSB7CiAKICNkZWZpbmUgR1RFU1RfVEVTVF9OT19GQVRBTF9GQUlMVVJF
XyhzdGF0ZW1lbnQsIGZhaWwpIFwKICAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAot
ICBpZiAoY29uc3QgY2hhciogZ3Rlc3RfbXNnID0gIiIpIHsgXAorICBpZiAoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpIYXNO
ZXdGYXRhbEZhaWx1cmVIZWxwZXIgZ3Rlc3RfZmF0YWxfZmFpbHVyZV9jaGVja2VyOyBcCiAgICAg
R1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQp
OyBcCiAgICAgaWYgKGd0ZXN0X2ZhdGFsX2ZhaWx1cmVfY2hlY2tlci5oYXNfbmV3X2ZhdGFsX2Zh
aWx1cmUoKSkgeyBcCi0gICAgICBndGVzdF9tc2cgPSAiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAi
IGRvZXNuJ3QgZ2VuZXJhdGUgbmV3IGZhdGFsICIgXAotICAgICAgICAgICAgICAgICAgImZhaWx1
cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZC5cbiIgXAotICAgICAgICAgICAgICAgICAgIiAgQWN0
dWFsOiBpdCBkb2VzLiI7IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9s
YWJlbF90ZXN0bm9mYXRhbF8sIF9fTElORV9fKTsgXAogICAgIH0gXAogICB9IGVsc2UgXAogICAg
IEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdG5vZmF0YWxfLCBfX0xJTkVfXyk6
IFwKLSAgICAgIGZhaWwoZ3Rlc3RfbXNnKQorICAgICAgZmFpbCgiRXhwZWN0ZWQ6ICIgI3N0YXRl
bWVudCAiIGRvZXNuJ3QgZ2VuZXJhdGUgbmV3IGZhdGFsICIgXAorICAgICAgICAgICAiZmFpbHVy
ZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkLlxuIiBcCisgICAgICAgICAgICIgIEFjdHVhbDogaXQg
ZG9lcy4iKQogCiAvLyBFeHBhbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyB0aGF0IGltcGxl
bWVudHMgdGhlIGdpdmVuIHRlc3QuCiAjZGVmaW5lIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVz
dF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXApAQCAtOTA0LDcgKzEzMTAsNyBAQCBjbGFzcyBHVEVT
VF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIDogcHVibGljIHBh
cmVudF9jbGFzcyB7XAogICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0
ZXN0X25hbWUpKCkge31cCiAgcHJpdmF0ZTpcCiAgIHZpcnR1YWwgdm9pZCBUZXN0Qm9keSgpO1wK
LSAgc3RhdGljIDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mb187XAorICBzdGF0
aWMgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvXyBHVEVTVF9BVFRSSUJVVEVf
VU5VU0VEXztcCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oXAogICAgICAgR1RF
U1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSk7XAogfTtcCkBA
IC05MTIsNyArMTMxOCw4IEBAIGNsYXNzIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNl
X25hbWUsIHRlc3RfbmFtZSkgOiBwdWJsaWMgcGFyZW50X2NsYXNzIHtcCiA6OnRlc3Rpbmc6OlRl
c3RJbmZvKiBjb25zdCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0
X25hbWUpXAogICA6OnRlc3RfaW5mb18gPVwKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpNYWtl
QW5kUmVnaXN0ZXJUZXN0SW5mbyhcCi0gICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgI3Rlc3RfbmFt
ZSwgIiIsICIiLCBcCisgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgI3Rlc3RfbmFtZSwgTlVMTCwg
TlVMTCwgXAorICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpDb2RlTG9jYXRpb24oX19GSUxF
X18sIF9fTElORV9fKSwgXAogICAgICAgICAocGFyZW50X2lkKSwgXAogICAgICAgICBwYXJlbnRf
Y2xhc3M6OlNldFVwVGVzdENhc2UsIFwKICAgICAgICAgcGFyZW50X2NsYXNzOjpUZWFyRG93blRl
c3RDYXNlLCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oCmluZGV4IDU0MGVmNGNk
NDRlNzJiNTU4NjU3MDgxYTVmMDdhMGYyOGIzZTQwZTMuLjA4MmI4NzI4OWFlMTdjOGFhN2I5NmQ4
ZThjOTJiOTZlMDE4Yzc2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oCkBA
IC0yNyw4ICsyNyw2IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8g
QXV0aG9yczogRGFuIEVnbm9yIChlZ25vckBnb29nbGUuY29tKQotLy8KIC8vIEEgInNtYXJ0IiBw
b2ludGVyIHR5cGUgd2l0aCByZWZlcmVuY2UgdHJhY2tpbmcuICBFdmVyeSBwb2ludGVyIHRvIGEK
IC8vIHBhcnRpY3VsYXIgb2JqZWN0IGlzIGtlcHQgb24gYSBjaXJjdWxhciBsaW5rZWQgbGlzdC4g
IFdoZW4gdGhlIGxhc3QgcG9pbnRlcgogLy8gdG8gYW4gb2JqZWN0IGlzIGRlc3Ryb3llZCBvciBy
ZWFzc2lnbmVkLCB0aGUgb2JqZWN0IGlzIGRlbGV0ZWQuCkBAIC02MiwxNiArNjAsMTggQEAKIC8v
ICAgICAgIHJhdyBwb2ludGVyIChlLmcuIHZpYSBnZXQoKSkgY29uY3VycmVudGx5LCBhbmQKIC8v
ICAgICAtIGl0J3Mgc2FmZSB0byB3cml0ZSB0byB0d28gbGlua2VkX3B0cnMgdGhhdCBwb2ludCB0
byB0aGUgc2FtZQogLy8gICAgICAgc2hhcmVkIG9iamVjdCBjb25jdXJyZW50bHkuCi0vLyBUT0RP
KHdhbkBnb29nbGUuY29tKTogcmVuYW1lIHRoaXMgdG8gc2FmZV9saW5rZWRfcHRyIHRvIGF2b2lk
CisvLyBGSVhNRTogcmVuYW1lIHRoaXMgdG8gc2FmZV9saW5rZWRfcHRyIHRvIGF2b2lkCiAvLyBj
b25mdXNpb24gd2l0aCBub3JtYWwgbGlua2VkX3B0ci4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEg
RE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RF
U1RfTElOS0VEX1BUUl9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dU
RVNUX0xJTktFRF9QVFJfSF8KIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPGFzc2Vy
dC5oPgogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorI2luY2x1ZGUg
Imd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFt
ZXNwYWNlIGludGVybmFsIHsKQEAgLTEwNSwyNSArMTA1LDM1IEBAIGNsYXNzIGxpbmtlZF9wdHJf
aW50ZXJuYWwgewogICAvLyBmcmFtZXdvcmsuCiAKICAgLy8gSm9pbiBhbiBleGlzdGluZyBjaXJj
bGUuCi0gIC8vIEwgPCBnX2xpbmtlZF9wdHJfbXV0ZXgKLSAgdm9pZCBqb2luKGxpbmtlZF9wdHJf
aW50ZXJuYWwgY29uc3QqIHB0cikgeworICB2b2lkIGpvaW4obGlua2VkX3B0cl9pbnRlcm5hbCBj
b25zdCogcHRyKQorICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8oZ19saW5rZWRfcHRyX211dGV4
KSB7CiAgICAgTXV0ZXhMb2NrIGxvY2soJmdfbGlua2VkX3B0cl9tdXRleCk7CiAKICAgICBsaW5r
ZWRfcHRyX2ludGVybmFsIGNvbnN0KiBwID0gcHRyOwotICAgIHdoaWxlIChwLT5uZXh0XyAhPSBw
dHIpIHAgPSBwLT5uZXh0XzsKKyAgICB3aGlsZSAocC0+bmV4dF8gIT0gcHRyKSB7CisgICAgICBh
c3NlcnQocC0+bmV4dF8gIT0gdGhpcyAmJgorICAgICAgICAgICAgICJUcnlpbmcgdG8gam9pbigp
IGEgbGlua2VkIHJpbmcgd2UgYXJlIGFscmVhZHkgaW4uICIKKyAgICAgICAgICAgICAiSXMgR01v
Y2sgdGhyZWFkIHNhZmV0eSBlbmFibGVkPyIpOworICAgICAgcCA9IHAtPm5leHRfOworICAgIH0K
ICAgICBwLT5uZXh0XyA9IHRoaXM7CiAgICAgbmV4dF8gPSBwdHI7CiAgIH0KIAogICAvLyBMZWF2
ZSB3aGF0ZXZlciBjaXJjbGUgd2UncmUgcGFydCBvZi4gIFJldHVybnMgdHJ1ZSBpZiB3ZSB3ZXJl
IHRoZQogICAvLyBsYXN0IG1lbWJlciBvZiB0aGUgY2lyY2xlLiAgT25jZSB0aGlzIGlzIGRvbmUs
IHlvdSBjYW4gam9pbigpIGFub3RoZXIuCi0gIC8vIEwgPCBnX2xpbmtlZF9wdHJfbXV0ZXgKLSAg
Ym9vbCBkZXBhcnQoKSB7CisgIGJvb2wgZGVwYXJ0KCkKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVE
RURfKGdfbGlua2VkX3B0cl9tdXRleCkgewogICAgIE11dGV4TG9jayBsb2NrKCZnX2xpbmtlZF9w
dHJfbXV0ZXgpOwogCiAgICAgaWYgKG5leHRfID09IHRoaXMpIHJldHVybiB0cnVlOwogICAgIGxp
bmtlZF9wdHJfaW50ZXJuYWwgY29uc3QqIHAgPSBuZXh0XzsKLSAgICB3aGlsZSAocC0+bmV4dF8g
IT0gdGhpcykgcCA9IHAtPm5leHRfOworICAgIHdoaWxlIChwLT5uZXh0XyAhPSB0aGlzKSB7Cisg
ICAgICBhc3NlcnQocC0+bmV4dF8gIT0gbmV4dF8gJiYKKyAgICAgICAgICAgICAiVHJ5aW5nIHRv
IGRlcGFydCgpIGEgbGlua2VkIHJpbmcgd2UgYXJlIG5vdCBpbi4gIgorICAgICAgICAgICAgICJJ
cyBHTW9jayB0aHJlYWQgc2FmZXR5IGVuYWJsZWQ/Iik7CisgICAgICBwID0gcC0+bmV4dF87Cisg
ICAgfQogICAgIHAtPm5leHRfID0gbmV4dF87CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CkBAIC0x
NzIsMTUgKzE4Miw2IEBAIGNsYXNzIGxpbmtlZF9wdHIgewogICBUKiBnZXQoKSBjb25zdCB7IHJl
dHVybiB2YWx1ZV87IH0KICAgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsg
fQogICBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqdmFsdWVfOyB9Ci0gIC8vIFJlbGVh
c2Ugb3duZXJzaGlwIG9mIHRoZSBwb2ludGVkIG9iamVjdCBhbmQgcmV0dXJucyBpdC4KLSAgLy8g
U29sZSBvd25lcnNoaXAgYnkgdGhpcyBsaW5rZWRfcHRyIG9iamVjdCBpcyByZXF1aXJlZC4KLSAg
VCogcmVsZWFzZSgpIHsKLSAgICBib29sIGxhc3QgPSBsaW5rXy5kZXBhcnQoKTsKLSAgICBhc3Nl
cnQobGFzdCk7Ci0gICAgVCogdiA9IHZhbHVlXzsKLSAgICB2YWx1ZV8gPSBOVUxMOwotICAgIHJl
dHVybiB2OwotICB9CiAKICAgYm9vbCBvcGVyYXRvcj09KFQqIHApIGNvbnN0IHsgcmV0dXJuIHZh
bHVlXyA9PSBwOyB9CiAgIGJvb2wgb3BlcmF0b3IhPShUKiBwKSBjb25zdCB7IHJldHVybiB2YWx1
ZV8gIT0gcDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVy
YXRlZC5oCmluZGV4IDYyYjVhZTEzZTI4ZTU2NmIxZTg4NTEyN2RiYjA3Y2QxNzJhMjZmMTkuLmY0
ZGY1OTkxOTA1NzJlN2IwOWU5ZDdiMGNlODk5NDcyZGM3ZWI5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRp
bC1nZW5lcmF0ZWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgKQEAgLTEsNCArMSw2IEBACi0v
LyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBhIHNjcmlwdC4gIERPIE5PVCBFRElUIEJZIEhB
TkQhISEKKy8vIFRoaXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5IGNvbW1hbmQ6CisvLyAgICAgcHVt
cC5weSBndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oLnB1bXAKKy8vIERPIE5PVCBFRElUIEJZ
IEhBTkQhISEKIAogLy8gQ29weXJpZ2h0IDIwMDggR29vZ2xlIEluYy4KIC8vIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCkBAIC0yOCw4ICszMCw3IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFk
IExvc2V2KQorCiAKIC8vIFR5cGUgYW5kIGZ1bmN0aW9uIHV0aWxpdGllcyBmb3IgaW1wbGVtZW50
aW5nIHBhcmFtZXRlcml6ZWQgdGVzdHMuCiAvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEg
U0NSSVBULiAgRE8gTk9UIEVESVQgQlkgSEFORCEKQEAgLTQxLDE2ICs0MiwxMyBAQAogLy8gYnkg
dGhlIG1heGltdW0gYXJpdHkgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mIHR1cGxlIHdoaWNoIGlz
CiAvLyBjdXJyZW50bHkgc2V0IGF0IDEwLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1Qg
REVMRVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJB
TV9VVElMX0dFTkVSQVRFRF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFM
X0dURVNUX1BBUkFNX1VUSUxfR0VORVJBVEVEX0hfCiAKLS8vIHNjcmlwdHMvZnVzZV9ndGVzdC5w
eSBkZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKLS8vICp1bmNv
bmRpdGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQK
LS8vIGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0
LXBvcnQuaD4KLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCisjaW5jbHVkZSAiZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0
LXBvcnQuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC01OCw4ICs1Niw4IEBAIG5hbWVz
cGFjZSB0ZXN0aW5nIHsKIC8vIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLgogdGVt
cGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcj4KIGludGVybmFsOjpQYXJhbUdlbmVyYXRv
cjwKLSAgICB0eXBlbmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcj46
OnZhbHVlX3R5cGU+IFZhbHVlc0luKAotICAgICAgICBGb3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZv
cndhcmRJdGVyYXRvciBlbmQpOworICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVy
YXRvclRyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPgorVmFsdWVzSW4oRm9yd2Fy
ZEl0ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKTsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHNpemVfdCBOPgogaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFZhbHVlc0luKGNv
bnN0IFQgKCZhcnJheSlbTl0pOwpAQCAtNzcsNyArNzUsMTAgQEAgY2xhc3MgVmFsdWVBcnJheTEg
ewogICBleHBsaWNpdCBWYWx1ZUFycmF5MShUMSB2MSkgOiB2MV8odjEpIHt9CiAKICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgeyBy
ZXR1cm4gVmFsdWVzSW4oJnYxXywgJnYxXyArIDEpOyB9CisgIG9wZXJhdG9yIFBhcmFtR2VuZXJh
dG9yPFQ+KCkgY29uc3QgeworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2
MV8pfTsKKyAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOworICB9CiAKICBwcml2YXRlOgogICAv
LyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC05Myw3
ICs5NCw3IEBAIGNsYXNzIFZhbHVlQXJyYXkyIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
ICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJh
eVtdID0ge3YxXywgdjJffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4o
djFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
ICAgfQogCkBAIC0xMTIsNyArMTEzLDggQEAgY2xhc3MgVmFsdWVBcnJheTMgewogCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
LSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzX307CisgICAgY29uc3QgVCBhcnJh
eVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0K
IApAQCAtMTMzLDcgKzEzNSw4IEBAIGNsYXNzIFZhbHVlQXJyYXk0IHsKIAogICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAg
Y29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0X307CisgICAgY29uc3QgVCBhcnJh
eVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyl9OwogICAgIHJldHVybiBW
YWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTU1LDcgKzE1OCw4IEBAIGNsYXNzIFZhbHVlQXJy
YXk1IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0
XywgdjVffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3Rh
dGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nh
c3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCkBAIC0xNzksNyArMTgzLDkgQEAgY2xhc3MgVmFsdWVBcnJheTYgewogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2
X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19j
YXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+
KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2Xyl9
OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjA0LDcgKzIxMCw5IEBA
IGNsYXNzIFZhbHVlQXJyYXk3IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0
b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3Yx
XywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3X307CisgICAgY29uc3QgVCBhcnJheVtdID0g
e3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3Xyl9OwogICAg
IHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjMxLDcgKzIzOSw5IEBAIGNsYXNz
IFZhbHVlQXJyYXk4IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFy
YW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJf
LCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7
c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGlj
X2Nhc3Q8VD4odjhfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0y
NTksNyArMjY5LDEwIEBAIGNsYXNzIFZhbHVlQXJyYXk5IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3Qg
VCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV99
OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2Fz
dDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2
NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBz
dGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2OV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTI4
OCw3ICszMDEsMTAgQEAgY2xhc3MgVmFsdWVBcnJheTEwIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3Qg
VCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8s
IHYxMF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0
aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2Fz
dDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKX07CiAgICAgcmV0dXJuIFZh
bHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0zMTksNyArMzM1LDEwIEBAIGNsYXNzIFZhbHVlQXJy
YXkxMSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJh
dG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2
NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFffTsKKyAgICBjb25zdCBUIGFy
cmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8
VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdf
KSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3Rh
dGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pfTsKICAgICByZXR1cm4gVmFs
dWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTM1MSw4ICszNzAsMTEgQEAgY2xhc3MgVmFsdWVBcnJh
eTEyIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0
XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl99Owor
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxU
Pih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8p
LCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0
aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkp
OwogICB9CiAKQEAgLTM4Niw4ICs0MDgsMTEgQEAgY2xhc3MgVmFsdWVBcnJheTEzIHsKIAogICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25z
dCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8s
IHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM199OworICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0
aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2Fz
dDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKX07CiAgICAgcmV0dXJu
IFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC00MjIsOCArNDQ3LDExIEBAIGNsYXNzIFZhbHVl
QXJyYXkxNCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNf
LCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJf
LCB2MTNfLCB2MTRffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8
VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJy
YXkpOwogICB9CiAKQEAgLTQ1OSw4ICs0ODcsMTIgQEAgY2xhc3MgVmFsdWVBcnJheTE1IHsKIAog
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBj
b25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2
Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8s
IHYxNV99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0
aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2Fz
dDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4o
djExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNf
KSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pfTsK
ICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTQ5OSw4ICs1MzEsMTIgQEAg
Y2xhc3MgVmFsdWVBcnJheTE2IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0
b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3Yx
XywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0g
ICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl99OworICAgIGNvbnN0IFQgYXJyYXlb
XSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2
NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBz
dGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNf
Y2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC01NDAsOCArNTc2LDEyIEBAIGNsYXNz
IFZhbHVlQXJyYXkxNyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYy
XywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAg
ICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdffTsKKyAgICBjb25zdCBUIGFycmF5
W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRp
Y19jYXN0PFQ+KHYxN18pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAg
LTU4Miw4ICs2MjIsMTMgQEAgY2xhc3MgVmFsdWVBcnJheTE4IHsKIAogICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29u
c3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2
OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYx
N18sIHYxOF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBz
dGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNf
Y2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8
VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2
MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8p
LCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYxOF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAK
QEAgLTYyNSw4ICs2NzAsMTMgQEAgY2xhc3MgVmFsdWVBcnJheTE5IHsKIAogICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAg
Y29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3Xywgdjhf
LCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8s
IHYxN18sIHYxOF8sIHYxOV99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxU
Pih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18p
LCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3Rh
dGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC02NzAsOCArNzIwLDEzIEBAIGNsYXNz
IFZhbHVlQXJyYXkyMCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYy
XywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAg
ICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBffTsK
KyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRp
Y19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nh
c3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pfTsKICAg
ICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTcxNyw4ICs3NzIsMTQgQEAgY2xh
c3MgVmFsdWVBcnJheTIxIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3Ig
UGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywg
djJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAg
ICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8s
IHYyMV99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0
aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2Fz
dDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4o
djExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNf
KSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBz
dGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIw
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4o
YXJyYXkpOwogICB9CiAKQEAgLTc2NSw4ICs4MjYsMTQgQEAgY2xhc3MgVmFsdWVBcnJheTIyIHsK
IAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4o
KSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVf
LCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYx
NF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl99OworICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2
Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBz
dGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNf
Y2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nh
c3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
OF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKX07CiAgICAgcmV0dXJu
IFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC04MTUsOSArODgyLDE0IEBAIGNsYXNzIFZhbHVl
QXJyYXkyMyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNf
LCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJf
LCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2
MjJfLAotICAgICAgICB2MjNffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8
VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNf
KSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0
YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRp
Y19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pfTsKICAgICByZXR1cm4gVmFsdWVzSW4o
YXJyYXkpOwogICB9CiAKQEAgLTg2Nyw5ICs5MzksMTUgQEAgY2xhc3MgVmFsdWVBcnJheTI0IHsK
IAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4o
KSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVf
LCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYx
NF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18s
Ci0gICAgICAgIHYyNF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2
MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBz
dGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGlj
X2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2Fz
dDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nh
c3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYy
NF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTkyMCw5ICs5OTgs
MTUgQEAgY2xhc3MgVmFsdWVBcnJheTI1IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAg
b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtd
ID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYx
MV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYx
OV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV99OworICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0
aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2Fz
dDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8
VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2
MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8p
LCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4o
djIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVf
KX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC05NzUsOSArMTA1OSwx
NSBAQCBjbGFzcyBWYWx1ZUFycmF5MjYgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5
XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2X307Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNf
Y2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0
PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2Fz
dDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+
KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5
KTsKICAgfQogCkBAIC0xMDMyLDkgKzExMjIsMTYgQEAgY2xhc3MgVmFsdWVBcnJheTI3IHsKIAog
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBj
b25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2
Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8s
IHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0g
ICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN199OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtz
dGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNf
Y2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
Ml8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8
VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2
MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8p
LCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4o
djI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pfTsKICAgICByZXR1cm4gVmFsdWVz
SW4oYXJyYXkpOwogICB9CiAKQEAgLTEwOTAsOSArMTE4NywxNiBAQCBjbGFzcyBWYWx1ZUFycmF5
MjggewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRf
LCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEz
XywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywg
djIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4X307CisgICAgY29uc3Qg
VCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19j
YXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+
KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5Xyks
IHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2
MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8p
LCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0
YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBz
dGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRp
Y19jYXN0PFQ+KHYyOF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAg
LTExNDksOSArMTI1MywxNiBAQCBjbGFzcyBWYWx1ZUFycmF5MjkgewogCiAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBj
b25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8s
IHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2Xywg
djE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0Xywg
djI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYx
OV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyks
IHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2
MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8p
LCBzdGF0aWNfY2FzdDxUPih2MjlfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAg
fQogCkBAIC0xMjEwLDkgKzEzMjEsMTcgQEAgY2xhc3MgVmFsdWVBcnJheTMwIHsKIAogICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7
Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3
XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8s
IHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAg
IHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF99OworICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2Fz
dDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2
N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBz
dGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwg
c3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0
aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNf
Y2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYzMF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTEyNzMs
OSArMTM5MiwxNyBAQCBjbGFzcyBWYWx1ZUFycmF5MzEgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBU
IGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5Xywg
djEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3Xywg
djE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1Xywg
djI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxX307CisgICAgY29uc3QgVCBhcnJheVtd
ID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0
YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19j
YXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0
PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+
KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMw
XyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwog
ICB9CiAKQEAgLTEzMzcsOSArMTQ2NCwxNyBAQCBjbGFzcyBWYWx1ZUFycmF5MzIgewogCiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0
IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywg
djdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1
XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAg
ICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyX307
CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0
PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0
XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0
YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0
aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19j
YXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0
PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2Fz
dDxUPih2MzJfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0xNDAz
LDkgKzE1MzgsMTggQEAgY2xhc3MgVmFsdWVBcnJheTMzIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3Qg
VCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8s
IHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18s
IHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8s
IHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM199OworICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0
aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2Fz
dDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8
VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2
MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8p
LCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4o
djIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVf
KSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBz
dGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMy
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pfTsKICAgICByZXR1cm4gVmFsdWVzSW4o
YXJyYXkpOwogICB9CiAKQEAgLTE0NzAsOSArMTYxNCwxOCBAQCBjbGFzcyBWYWx1ZUFycmF5MzQg
ewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2
NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywg
djE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIz
XywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMx
XywgdjMyXywgdjMzXywgdjM0X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0
PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
XyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBz
dGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRp
Y19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0
aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19j
YXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNf
Y2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0
PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkp
OwogICB9CiAKQEAgLTE1MzgsMTAgKzE2OTEsMTggQEAgY2xhc3MgVmFsdWVBcnJheTM1IHsKIAog
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBj
b25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2
Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8s
IHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0g
ICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYz
Ml8sIHYzM18sIHYzNF8sCi0gICAgICAgIHYzNV99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtz
dGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNf
Y2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
Ml8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8
VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2
MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8p
LCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4o
djI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2Mjhf
KSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBz
dGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1
Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTYwOSwxMCArMTc3
MCwxOSBAQCBjbGFzcyBWYWx1ZUFycmF5MzYgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
ICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5
W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywg
djExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4Xywg
djE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2Xywg
djI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAg
ICAgICAgdjM2X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyks
IHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRp
Y19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2Fz
dDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+
KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1
XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYy
Ml8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2
MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8p
LCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0
YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjM2Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAt
MTY4MiwxMCArMTg1MiwxOSBAQCBjbGFzcyBWYWx1ZUFycmF5MzcgewogCiAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBj
b25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8s
IHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2Xywg
djE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0Xywg
djI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0
XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYx
OV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyks
IHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2
MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8p
LCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0
YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pfTsK
ICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTE3NTYsMTAgKzE5MzUsMTkg
QEAgY2xhc3MgVmFsdWVBcnJheTM4IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3Bl
cmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0g
e3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8s
Ci0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8s
IHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18s
IHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8sCi0gICAgICAg
IHYzNl8sIHYzN18sIHYzOF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxU
Pih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18p
LCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3Rh
dGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nh
c3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
M18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8
VD4odjM4Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTgzMSwx
MCArMjAxOSwyMCBAQCBjbGFzcyBWYWx1ZUFycmF5MzkgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBU
IGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5Xywg
djEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3Xywg
djE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1Xywg
djI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1
XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5X307CisgICAgY29uc3QgVCBhcnJheVtd
ID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0
YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19j
YXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0
PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+
KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMw
XyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxU
Pih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYz
N18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5Xyl9
OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTkwOCwxMCArMjEwNiwy
MCBAQCBjbGFzcyBWYWx1ZUFycmF5NDAgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5
XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3
XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAg
ICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwX307CisgICAgY29uc3QgVCBhcnJheVtdID0g
e3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRp
Y19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0
PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2Fz
dDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+
KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIx
XyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYy
OF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyks
IHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2
MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18p
LCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0
YXRpY19jYXN0PFQ+KHY0MF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAK
QEAgLTE5ODcsMTAgKzIxOTUsMjAgQEAgY2xhc3MgVmFsdWVBcnJheTQxIHsKIAogICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0g
ICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3Xywg
djhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYx
Nl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYy
NF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18s
IHYzNF8sIHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYzOV8sIHY0MF8sIHY0MV99
OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2Fz
dDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2
NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBz
dGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNf
Y2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGlj
X2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2Fz
dDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nh
c3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxU
Pih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
Nl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8
VD4odjQxXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjA2Nywx
MCArMjI4NSwyMSBAQCBjbGFzcyBWYWx1ZUFycmF5NDIgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBU
IGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5Xywg
djEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3Xywg
djE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1Xywg
djI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1
XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyX307Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNf
Y2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0
PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2Fz
dDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+
KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3
XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxU
Pih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYz
NF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2Xyks
IHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2
NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyl9OwogICAgIHJldHVybiBWYWx1ZXNJ
bihhcnJheSk7CiAgIH0KIApAQCAtMjE0OCwxMCArMjM3NywyMSBAQCBjbGFzcyBWYWx1ZUFycmF5
NDMgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRf
LCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEz
XywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywg
djIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywg
djMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4Xywg
djM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYx
OV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyks
IHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2
MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8p
LCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0
YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBz
dGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRp
Y19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pfTsKICAgICByZXR1cm4gVmFsdWVzSW4o
YXJyYXkpOwogICB9CiAKQEAgLTIyMzEsMTAgKzI0NzEsMjEgQEAgY2xhc3MgVmFsdWVBcnJheTQ0
IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8
VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0Xywg
djVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18s
IHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYy
M18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYz
MV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYz
OV8sIHY0MF8sIHY0MV8sIHY0Ml8sIHY0M18sIHY0NF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9
IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0
aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2Fz
dDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nh
c3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYy
MV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8
VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2
MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8p
LCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4o
djM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2Mzdf
KSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBz
dGF0aWNfY2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY0Ml8pLCBzdGF0aWNfY2FzdDxUPih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4odjQ0
Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjMxNSwxMCArMjU2
NiwyMiBAQCBjbGFzcyBWYWx1ZUFycmF5NDUgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
ICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5
W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywg
djExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4Xywg
djE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2Xywg
djI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAg
ICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0
XywgdjQ1X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYx
M18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyks
IHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2
MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8p
LCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0
YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2Mjlf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBz
dGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRp
Y19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0
aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19j
YXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjQ1Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjQwMSwx
MCArMjY2NCwyMiBAQCBjbGFzcyBWYWx1ZUFycmF5NDYgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBU
IGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5Xywg
djEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3Xywg
djE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1Xywg
djI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1
XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQz
XywgdjQ0XywgdjQ1XywgdjQ2X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0
PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
XyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBz
dGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRp
Y19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0
aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19j
YXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNf
Y2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0
PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2Fz
dDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+
KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQy
XyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pfTsKICAgICByZXR1cm4g
VmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTI0ODksMTEgKzI3NjQsMjIgQEAgY2xhc3MgVmFs
dWVBcnJheTQ3IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1H
ZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2
M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYx
Ml8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8s
IHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8s
IHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18s
IHYzOF8sIHYzOV8sIHY0MF8sIHY0MV8sIHY0Ml8sIHY0M18sIHY0NF8sIHY0NV8sIHY0Nl8sCi0g
ICAgICAgIHY0N199OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8p
LCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0
aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nh
c3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
NV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8
VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2
MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8p
LCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4o
djI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFf
KSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBz
dGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2NDBfKSwg
c3RhdGljX2Nhc3Q8VD4odjQxXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0Ml8pLCBzdGF0
aWNfY2FzdDxUPih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4odjQ0XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY0NV8pLCBzdGF0aWNfY2FzdDxUPih2NDZfKSwgc3RhdGljX2Nhc3Q8VD4odjQ3Xyl9
OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjU3OSwxMSArMjg2NSwy
MyBAQCBjbGFzcyBWYWx1ZUFycmF5NDggewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5
XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3
XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAg
ICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0Xywg
djQ1XywgdjQ2XywgdjQ3XywKLSAgICAgICAgdjQ4X307CisgICAgY29uc3QgVCBhcnJheVtdID0g
e3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRp
Y19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0
PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2Fz
dDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+
KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIx
XyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYy
OF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyks
IHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2
MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18p
LCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0
YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBz
dGF0aWNfY2FzdDxUPih2NDdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ4Xyl9OwogICAg
IHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjY3MCwxMSArMjk2OCwyMyBAQCBj
bGFzcyBWYWx1ZUFycmF5NDkgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFf
LCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAg
ICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIw
XywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4
XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2
XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0XywgdjQ1Xywg
djQ2XywgdjQ3XywKLSAgICAgICAgdjQ4XywgdjQ5X307CisgICAgY29uc3QgVCBhcnJheVtdID0g
e3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRp
Y19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0
PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2Fz
dDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+
KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIx
XyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYy
OF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyks
IHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2
MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18p
LCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0
YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBz
dGF0aWNfY2FzdDxUPih2NDdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ4XyksIHN0YXRp
Y19jYXN0PFQ+KHY0OV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAg
LTI3NjIsMTEgKzMwNzIsMjMgQEAgY2xhc3MgVmFsdWVBcnJheTUwIHsKIAogICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAg
Y29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3Xywgdjhf
LCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8s
IHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8s
IHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYz
NF8sIHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYzOV8sIHY0MF8sIHY0MV8sIHY0
Ml8sIHY0M18sIHY0NF8sIHY0NV8sIHY0Nl8sIHY0N18sCi0gICAgICAgIHY0OF8sIHY0OV8sIHY1
MF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNf
Y2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxU
Pih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8p
LCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjEx
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwg
c3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0
aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3Rh
dGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNf
Y2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2Fz
dDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2NDBfKSwgc3RhdGljX2Nh
c3Q8VD4odjQxXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0Ml8pLCBzdGF0aWNfY2FzdDxU
Pih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4odjQ0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0
NV8pLCBzdGF0aWNfY2FzdDxUPih2NDZfKSwgc3RhdGljX2Nhc3Q8VD4odjQ3XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY0OF8pLCBzdGF0aWNfY2FzdDxUPih2NDlfKSwgc3RhdGljX2Nhc3Q8
VD4odjUwXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjgyNiw3
ICszMTQ4LDcgQEAgY2xhc3MgVmFsdWVBcnJheTUwIHsKICAgY29uc3QgVDUwIHY1MF87CiB9Owog
Ci0jaWYgR1RFU1RfSEFTX0NPTUJJTkUKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKIC8vIElOVEVS
TkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCiAvLwogLy8gR2Vu
ZXJhdGVzIHZhbHVlcyBmcm9tIHRoZSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB2YWx1ZXMgcHJvZHVj
ZWQKQEAgLTI4MzQsOSArMzE1Niw5IEBAIGNsYXNzIFZhbHVlQXJyYXk1MCB7CiAvLwogdGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3IyCi0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6c3RkOjp0dXBs
ZTxUMSwgVDI+ID4geworICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRl
c3Rpbmc6OnR1cGxlPFQxLCBUMj4gPiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0dXBs
ZTxUMSwgVDI+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMj4g
UGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IyKGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyKQpAQCAt
Mjg4Miw3ICszMjA0LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjIKICAgICB2
aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7
CiAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBj
b25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87
IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJu
IGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQ
YXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAv
LyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhl
cgogICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25j
YXN0LgpAQCAtMjkxNCw3ICszMjM2LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjIKIAogICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKICAgICAgIGlmICghQXRFbmQo
KSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJl
bnQyXyk7CisgICAgICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJhbVR5cGUoKmN1cnJl
bnQxXywgKmN1cnJlbnQyXykpOwogICAgIH0KICAgICBib29sIEF0RW5kKCkgY29uc3QgewogICAg
ICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3
aGVuIGVpdGhlciBvZiB0aGUKQEAgLTI5MzYsNyArMzI1OCw3IEBAIGNsYXNzIENhcnRlc2lhblBy
b2R1Y3RHZW5lcmF0b3IyCiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+Ojpp
dGVyYXRvciBiZWdpbjJfOwogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6
aXRlcmF0b3IgZW5kMl87CiAgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVyYXRv
ciBjdXJyZW50Ml87Ci0gICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFsdWVfOworICAgIGxpbmtlZF9w
dHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsKICAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblBy
b2R1Y3RHZW5lcmF0b3IyOjpJdGVyYXRvcgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNz
aWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTI5NDksOSArMzI3MSw5IEBAIGNsYXNzIENhcnRl
c2lhblByb2R1Y3RHZW5lcmF0b3IyCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzPgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjMKLSAgICA6
IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDM+
ID4geworICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1
cGxlPFQxLCBUMiwgVDM+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8VDEs
IFQyLCBUMz4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBU
Mz4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IzKGNvbnN0IFBhcmFt
R2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBj
b25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczKQpAQCAtMzAwNSw3ICszMzI3LDcgQEAgY2xhc3Mg
Q2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjMKICAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRl
cmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7CiAgICAgICByZXR1cm4gbmV3IEl0ZXJh
dG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQo
KSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBh
cmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9
CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBh
cmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAvLyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBn
ZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgogICAgICAgLy8gaXRlcmF0b3IgaXMg
b2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0LgpAQCAtMzA0MSw3ICszMzYzLDcg
QEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjMKIAogICAgIHZvaWQgQ29tcHV0ZUN1
cnJlbnRWYWx1ZSgpIHsKICAgICAgIGlmICghQXRFbmQoKSkKLSAgICAgICAgY3VycmVudF92YWx1
ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXyk7CisgICAg
ICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJl
bnQyXywgKmN1cnJlbnQzXykpOwogICAgIH0KICAgICBib29sIEF0RW5kKCkgY29uc3QgewogICAg
ICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3
aGVuIGVpdGhlciBvZiB0aGUKQEAgLTMwNjcsNyArMzM4OSw3IEBAIGNsYXNzIENhcnRlc2lhblBy
b2R1Y3RHZW5lcmF0b3IzCiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+Ojpp
dGVyYXRvciBiZWdpbjNfOwogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6
aXRlcmF0b3IgZW5kM187CiAgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+OjppdGVyYXRv
ciBjdXJyZW50M187Ci0gICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFsdWVfOworICAgIGxpbmtlZF9w
dHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsKICAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblBy
b2R1Y3RHZW5lcmF0b3IzOjpJdGVyYXRvcgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNz
aWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTMwODEsOSArMzQwMyw5IEBAIGNsYXNzIENhcnRl
c2lhblByb2R1Y3RHZW5lcmF0b3IzCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3I0Ci0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6c3RkOjp0dXBs
ZTxUMSwgVDIsIFQzLCBUND4gPiB7CisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZh
Y2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+ID4gewogIHB1YmxpYzoKLSAgdHlw
ZWRlZiA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6
OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjQoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMs
CkBAIC0zMTQ2LDcgKzM0NjgsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNAog
ICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNv
bnN0IHsKICAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwogICAgIH0KLSAgICB2aXJ0
dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3Zh
bHVlXzsgfQorICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyBy
ZXR1cm4gY3VycmVudF92YWx1ZV8uZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNv
bnN0IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKICAg
ICAgIC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhl
IG90aGVyCiAgICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4g
ZG93bmNhc3QuCkBAIC0zMTg2LDggKzM1MDgsOCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2Vu
ZXJhdG9yNAogCiAgICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYgKCFB
dEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAq
Y3VycmVudDJfLCAqY3VycmVudDNfLAotICAgICAgICAgICAgKmN1cnJlbnQ0Xyk7CisgICAgICAg
IGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQy
XywgKmN1cnJlbnQzXywKKyAgICAgICAgICAgICpjdXJyZW50NF8pKTsKICAgICB9CiAgICAgYm9v
bCBBdEVuZCgpIGNvbnN0IHsKICAgICAgIC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3Qg
dGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2hlbiBlaXRoZXIgb2YgdGhlCkBAIC0zMjE3LDcgKzM1Mzks
NyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNAogICAgIGNvbnN0IHR5cGVuYW1l
IFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgYmVnaW40XzsKICAgICBjb25zdCB0eXBlbmFt
ZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yIGVuZDRfOwogICAgIHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgY3VycmVudDRfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50
X3ZhbHVlXzsKKyAgICBsaW5rZWRfcHRyPFBhcmFtVHlwZT4gY3VycmVudF92YWx1ZV87CiAgIH07
ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNDo6SXRlcmF0b3IKIAogICAvLyBO
byBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC0zMjMyLDkg
KzM1NTQsOSBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNAogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVu
YW1lIFQ1PgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjUKLSAgICA6IHB1YmxpYyBQ
YXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4g
PiB7CisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVw
bGU8VDEsIFQyLCBUMywgVDQsIFQ1PiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjUoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBh
cmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBAIC0z
MzA0LDcgKzM2MjYsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNQogICAgIHZp
cnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsK
ICAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwogICAgIH0KLSAgICB2aXJ0dWFsIGNv
bnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsg
fQorICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4g
Y3VycmVudF92YWx1ZV8uZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBh
cmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKICAgICAgIC8v
IEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVy
CiAgICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNh
c3QuCkBAIC0zMzQ4LDggKzM2NzAsOCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9y
NQogCiAgICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgp
KQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVu
dDJfLCAqY3VycmVudDNfLAotICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1cnJlbnQ1Xyk7Cisg
ICAgICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1
cnJlbnQyXywgKmN1cnJlbnQzXywKKyAgICAgICAgICAgICpjdXJyZW50NF8sICpjdXJyZW50NV8p
KTsKICAgICB9CiAgICAgYm9vbCBBdEVuZCgpIGNvbnN0IHsKICAgICAgIC8vIFdlIG11c3QgcmVw
b3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2hlbiBlaXRoZXIgb2YgdGhl
CkBAIC0zMzgzLDcgKzM3MDUsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNQog
ICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgYmVnaW41XzsK
ICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJhdG9yIGVuZDVfOwog
ICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgY3VycmVudDVfOwotICAg
IFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKKyAgICBsaW5rZWRfcHRyPFBhcmFtVHlwZT4gY3Vy
cmVudF92YWx1ZV87CiAgIH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNTo6
SXRlcmF0b3IKIAogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBw
b3J0ZWQuCkBAIC0zNDAwLDEwICszNzIyLDEwIEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3I1CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgIHR5cGVuYW1lIFQ2PgogY2xhc3MgQ2FydGVz
aWFuUHJvZHVjdEdlbmVyYXRvcjYKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFj
ZTwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwKKyAgICA6IHB1YmxpYyBQYXJhbUdl
bmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsCiAg
ICAgICAgIFQ2PiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnR1cGxlPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDY+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDY+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2Vu
ZXJhdG9yNihjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKQEAgLTM0ODEs
NyArMzgwMyw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2CiAgICAgdmlydHVh
bCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3QgewogICAg
ICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwgY29uc3Qg
UGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9Cisg
ICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiBjdXJy
ZW50X3ZhbHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1J
dGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAgICAgLy8gSGF2
aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKICAg
ICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4K
QEAgLTM1MjksOCArMzg1MSw4IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2CiAK
ICAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkpCi0g
ICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8s
ICpjdXJyZW50M18sCi0gICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVudDVfLCAqY3VycmVu
dDZfKTsKKyAgICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVu
dDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAorICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1
cnJlbnQ1XywgKmN1cnJlbnQ2XykpOwogICAgIH0KICAgICBib29sIEF0RW5kKCkgY29uc3Qgewog
ICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5n
ZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAgLTM1NjgsNyArMzg5MCw3IEBAIGNsYXNzIENhcnRlc2lh
blByb2R1Y3RHZW5lcmF0b3I2CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDY+
OjppdGVyYXRvciBiZWdpbjZfOwogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ2
Pjo6aXRlcmF0b3IgZW5kNl87CiAgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDY+OjppdGVy
YXRvciBjdXJyZW50Nl87Ci0gICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFsdWVfOworICAgIGxpbmtl
ZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsKICAgfTsgIC8vIGNsYXNzIENhcnRlc2lh
blByb2R1Y3RHZW5lcmF0b3I2OjpJdGVyYXRvcgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0g
YXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTM1ODYsMTAgKzM5MDgsMTAgQEAgY2xhc3Mg
Q2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjYKIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgdHlwZW5h
bWUgVDYsIHR5cGVuYW1lIFQ3PgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjcKLSAg
ICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsCisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6
dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKICAgICAgICAgVDc+ID4gewog
IHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDc+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3PiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjco
Y29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9y
PFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBAIC0zNjc1LDcgKzM5OTcs
NyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNwogICAgIHZpcnR1YWwgUGFyYW1J
dGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKICAgICAgIHJldHVy
biBuZXcgSXRlcmF0b3IoKnRoaXMpOwogICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlw
ZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQorICAgIHZpcnR1
YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gY3VycmVudF92YWx1
ZV8uZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0b3JJ
bnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKICAgICAgIC8vIEhhdmluZyB0aGUg
c2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCiAgICAgICAvLyBp
dGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCkBAIC0zNzI3
LDggKzQwNDksOCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNwogCiAgICAgdm9p
ZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBj
dXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVu
dDNfLAotICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1
cnJlbnQ3Xyk7CisgICAgICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJhbVR5cGUoKmN1
cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKKyAgICAgICAgICAgICpjdXJyZW50NF8s
ICpjdXJyZW50NV8sICpjdXJyZW50Nl8sICpjdXJyZW50N18pKTsKICAgICB9CiAgICAgYm9vbCBB
dEVuZCgpIGNvbnN0IHsKICAgICAgIC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3QgdGhl
IGVuZCBvZiB0aGUgcmFuZ2Ugd2hlbiBlaXRoZXIgb2YgdGhlCkBAIC0zNzcwLDcgKzQwOTIsNyBA
QCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNwogICAgIGNvbnN0IHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQ3Pjo6aXRlcmF0b3IgYmVnaW43XzsKICAgICBjb25zdCB0eXBlbmFtZSBQ
YXJhbUdlbmVyYXRvcjxUNz46Oml0ZXJhdG9yIGVuZDdfOwogICAgIHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFQ3Pjo6aXRlcmF0b3IgY3VycmVudDdfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50X3Zh
bHVlXzsKKyAgICBsaW5rZWRfcHRyPFBhcmFtVHlwZT4gY3VycmVudF92YWx1ZV87CiAgIH07ICAv
LyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNzo6SXRlcmF0b3IKIAogICAvLyBObyBp
bXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC0zNzg5LDEwICs0
MTExLDEwIEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3CiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1l
IFQ1LAogICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+CiBjbGFzcyBD
YXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOAotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50
ZXJmYWNlPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKKyAgICA6IHB1Ymxp
YyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBU
NCwgVDUsIFQ2LAogICAgICAgICBUNywgVDg+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0
ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiBQYXJhbVR5cGU7CisgIHR5
cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+IFBh
cmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOChjb25zdCBQYXJhbUdlbmVy
YXRvcjxUMT4mIGcxLAogICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKQEAgLTM4ODgsNyArNDIxMCw3IEBAIGNsYXNzIENhcnRl
c2lhblByb2R1Y3RHZW5lcmF0b3I4CiAgICAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNl
PFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3QgewogICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcigq
dGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29u
c3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9CisgICAgdmlydHVhbCBjb25zdCBQYXJhbVR5
cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiBjdXJyZW50X3ZhbHVlXy5nZXQoKTsgfQogICAg
IHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5
cGU+JiBvdGhlcikgY29uc3QgewogICAgICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJh
dG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKICAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRo
ZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KQEAgLTM5NDQsOCArNDI2Niw4IEBAIGNs
YXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4CiAKICAgICB2b2lkIENvbXB1dGVDdXJyZW50
VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkpCi0gICAgICAgIGN1cnJlbnRfdmFsdWVfID0g
UGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18sCi0gICAgICAgICAg
ICAqY3VycmVudDRfLCAqY3VycmVudDVfLCAqY3VycmVudDZfLCAqY3VycmVudDdfLCAqY3VycmVu
dDhfKTsKKyAgICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVu
dDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAorICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1
cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1cnJlbnQ3XywgKmN1cnJlbnQ4XykpOwogICAgIH0KICAg
ICBib29sIEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3Ig
cGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAgLTM5OTEsNyAr
NDMxMyw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4CiAgICAgY29uc3QgdHlw
ZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDg+OjppdGVyYXRvciBiZWdpbjhfOwogICAgIGNvbnN0IHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ4Pjo6aXRlcmF0b3IgZW5kOF87CiAgICAgdHlwZW5hbWUg
UGFyYW1HZW5lcmF0b3I8VDg+OjppdGVyYXRvciBjdXJyZW50OF87Ci0gICAgUGFyYW1UeXBlIGN1
cnJlbnRfdmFsdWVfOworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsK
ICAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4OjpJdGVyYXRvcgogCiAg
IC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTQw
MTEsMTAgKzQzMzMsMTAgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjgKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwg
dHlwZW5hbWUgVDUsCiAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwg
dHlwZW5hbWUgVDk+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOQotICAgIDogcHVi
bGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5n
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAogICAgICAgICBUNywgVDgsIFQ5PiA+IHsK
ICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDk+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Q
cm9kdWN0R2VuZXJhdG9yOShjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywK
QEAgLTQxMTcsNyArNDQzOSw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5CiAg
ICAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29u
c3QgewogICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1
YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFs
dWVfOyB9CisgICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJl
dHVybiBjdXJyZW50X3ZhbHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29u
c3QgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAg
ICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUg
b3RoZXIKICAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBk
b3duY2FzdC4KQEAgLTQxNzcsOSArNDQ5OSw5IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3I5CiAKICAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0
RW5kKCkpCi0gICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpj
dXJyZW50Ml8sICpjdXJyZW50M18sCisgICAgICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQ
YXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKICAgICAgICAgICAg
ICpjdXJyZW50NF8sICpjdXJyZW50NV8sICpjdXJyZW50Nl8sICpjdXJyZW50N18sICpjdXJyZW50
OF8sCi0gICAgICAgICAgICAqY3VycmVudDlfKTsKKyAgICAgICAgICAgICpjdXJyZW50OV8pKTsK
ICAgICB9CiAgICAgYm9vbCBBdEVuZCgpIGNvbnN0IHsKICAgICAgIC8vIFdlIG11c3QgcmVwb3J0
IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2hlbiBlaXRoZXIgb2YgdGhlCkBA
IC00MjI5LDcgKzQ1NTEsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOQogICAg
IGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ5Pjo6aXRlcmF0b3IgYmVnaW45XzsKICAg
ICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOT46Oml0ZXJhdG9yIGVuZDlfOwogICAg
IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ5Pjo6aXRlcmF0b3IgY3VycmVudDlfOwotICAgIFBh
cmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKKyAgICBsaW5rZWRfcHRyPFBhcmFtVHlwZT4gY3VycmVu
dF92YWx1ZV87CiAgIH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOTo6SXRl
cmF0b3IKIAogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0
ZWQuCkBAIC00MjUwLDEwICs0NTcyLDEwIEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0
b3I5CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlw
ZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlw
ZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTA+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yMTAKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpz
dGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCisgICAgOiBwdWJsaWMgUGFyYW1HZW5l
cmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwK
ICAgICAgICAgVDcsIFQ4LCBUOSwgVDEwPiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6
OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD4gUGFyYW1UeXBl
OworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwPiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjEw
KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLApAQCAtNDM2NCw3ICs0Njg2
LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjEwCiAgICAgdmlydHVhbCBQYXJh
bUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3QgewogICAgICAgcmV0
dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1U
eXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9CisgICAgdmly
dHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiBjdXJyZW50X3Zh
bHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRv
ckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAgICAgLy8gSGF2aW5nIHRo
ZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKICAgICAgIC8v
IGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KQEAgLTQ0
MjgsOSArNDc1MCw5IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IxMAogCiAgICAg
dm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAg
ICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3Vy
cmVudDNfLAorICAgICAgICBjdXJyZW50X3ZhbHVlXy5yZXNldChuZXcgUGFyYW1UeXBlKCpjdXJy
ZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18sCiAgICAgICAgICAgICAqY3VycmVudDRfLCAq
Y3VycmVudDVfLCAqY3VycmVudDZfLCAqY3VycmVudDdfLCAqY3VycmVudDhfLAotICAgICAgICAg
ICAgKmN1cnJlbnQ5XywgKmN1cnJlbnQxMF8pOworICAgICAgICAgICAgKmN1cnJlbnQ5XywgKmN1
cnJlbnQxMF8pKTsKICAgICB9CiAgICAgYm9vbCBBdEVuZCgpIGNvbnN0IHsKICAgICAgIC8vIFdl
IG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2hlbiBlaXRo
ZXIgb2YgdGhlCkBAIC00NDg0LDcgKzQ4MDYsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2Vu
ZXJhdG9yMTAKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMTA+OjppdGVyYXRv
ciBiZWdpbjEwXzsKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMTA+OjppdGVy
YXRvciBlbmQxMF87CiAgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDEwPjo6aXRlcmF0b3Ig
Y3VycmVudDEwXzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0
cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjEwOjpJdGVyYXRvcgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNz
aWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTQ1MTUsOCArNDgzNyw4IEBAIGNsYXNzIENhcnRl
c2lhblByb2R1Y3RIb2xkZXIyIHsKIENhcnRlc2lhblByb2R1Y3RIb2xkZXIyKGNvbnN0IEdlbmVy
YXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMikKICAgICAgIDogZzFfKGcxKSwgZzJfKGcy
KSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICBvcGVyYXRvciBQ
YXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMj4gPigpIGNvbnN0IHsKLSAgICByZXR1
cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDI+ID4oCisgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMj4gPigpIGNvbnN0IHsKKyAgICBy
ZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyPiA+KAogICAgICAg
ICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjI8VDEsIFQyPigKICAgICAgICAgc3RhdGlj
X2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFy
YW1HZW5lcmF0b3I8VDI+ID4oZzJfKSkpOwpAQCAtNDUzNyw4ICs0ODU5LDggQEAgQ2FydGVzaWFu
UHJvZHVjdEhvbGRlcjMoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcy
LAogICAgIGNvbnN0IEdlbmVyYXRvcjMmIGczKQogICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBn
M18oZzMpIHt9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDM+
ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEs
IFQyLCBUMz4gPigKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8
VDEsIFQyLCBUMz4gPigpIGNvbnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVz
dGluZzo6dHVwbGU8VDEsIFQyLCBUMz4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RH
ZW5lcmF0b3IzPFQxLCBUMiwgVDM+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRv
cjxUMT4gPihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4gPihn
Ml8pLApAQCAtNDU2Miw4ICs0ODg0LDggQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjQoY29uc3Qg
R2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICAgIGNvbnN0IEdlbmVyYXRv
cjMmIGczLCBjb25zdCBHZW5lcmF0b3I0JiBnNCkKICAgICAgIDogZzFfKGcxKSwgZzJfKGcyKSwg
ZzNfKGczKSwgZzRfKGc0KSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6
OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFt
R2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+ID4oCisgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiA+KCkgY29uc3Qg
eworICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQz
LCBUND4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0PFQxLCBUMiwg
VDMsIFQ0PigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwK
ICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwKQEAgLTQ1ODks
OCArNDkxMSw4IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXI1KGNvbnN0IEdlbmVyYXRvcjEmIGcx
LCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKICAgICBjb25zdCBHZW5lcmF0b3IzJiBnMywgY29uc3Qg
R2VuZXJhdG9yNCYgZzQsIGNvbnN0IEdlbmVyYXRvcjUmIGc1KQogICAgICAgOiBnMV8oZzEpLCBn
Ml8oZzIpLCBnM18oZzMpLCBnNF8oZzQpLCBnNV8oZzUpIHt9CiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+
Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQs
IFQ1PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxl
PFQxLCBUMiwgVDMsIFQ0LCBUNT4gPigKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVz
dGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiA+KCkgY29uc3QgeworICAgIHJldHVybiBQ
YXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+ID4oCiAg
ICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNTxUMSwgVDIsIFQzLCBUNCwgVDU+
KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLAogICAgICAg
ICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pLApAQCAtNDYyMCw4ICs0OTQy
LDggQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjYoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0
IEdlbmVyYXRvcjImIGcyLAogICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBnM18oZzMpLCBnNF8o
ZzQpLCBnNV8oZzUpLCBnNl8oZzYpIHt9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgICB0eXBl
bmFtZSBUNj4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIs
IFQzLCBUNCwgVDUsIFQ2PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwg
OjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+ID4oCisgIG9wZXJhdG9yIFBhcmFt
R2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+ID4oKSBj
b25zdCB7CisgICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDY+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJh
dG9yNjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1H
ZW5lcmF0b3I8VDE+ID4oZzFfKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8
VDI+ID4oZzJfKSwKQEAgLTQ2NTMsOSArNDk3NSw5IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXI3
KGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKICAgICAgIDogZzFf
KGcxKSwgZzJfKGcyKSwgZzNfKGczKSwgZzRfKGc0KSwgZzVfKGc1KSwgZzZfKGc2KSwgZzdfKGc3
KSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3
PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsCisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsCiAgICAgICBUNz4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4g
UGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4g
PigKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDc+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJh
dG9yNzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBh
cmFtR2VuZXJhdG9yPFQxPiA+KGcxXyksCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJh
dG9yPFQyPiA+KGcyXyksCkBAIC00NjkxLDkgKzUwMTMsOSBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9s
ZGVyOChjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgICAg
ICAgZzhfKGc4KSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgICAgdHlwZW5hbWUgVDYsIHR5
cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3Rk
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywKKyAgb3BlcmF0b3IgUGFyYW1HZW5l
cmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsCiAgICAg
ICBUOD4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBs
ZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+ID4oCisgICAgcmV0dXJuIFBhcmFtR2Vu
ZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4g
PigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4PFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOD4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQx
PiA+KGcxXyksCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyks
CkBAIC00NzMyLDkgKzUwNTQsOSBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyOShjb25zdCBHZW5l
cmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgICAgICAgZzlfKGc5KSB7fQog
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBl
bmFtZSBUOCwgdHlwZW5hbWUgVDk+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LAorICBvcGVyYXRvciBQYXJhbUdl
bmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
CiAgICAgICBUOT4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3Rk
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsCisgICAgcmV0dXJuIFBhcmFt
R2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwKICAgICAgICAgVDk+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9y
OTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PigKICAgICAgICAgc3RhdGljX2Nh
c3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKQEAgLTQ3NzYsMTAgKzUwOTgsMTAgQEAgQ2Fy
dGVzaWFuUHJvZHVjdEhvbGRlcjEwKGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0
b3IyJiBnMiwKICAgICAgICAgICBnOV8oZzkpLCBnMTBfKGcxMCkge30KICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFt
ZSBUNSwKICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVu
YW1lIFQ5LCB0eXBlbmFtZSBUMTA+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LAotICAgICAgVDksIFQxMD4gPigp
IGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIs
IFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsCi0gICAgICAgIFQ5LCBUMTA+ID4oCisgIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksCisgICAgICBUMTA+ID4oKSBjb25zdCB7CisgICAgcmV0dXJuIFBhcmFtR2Vu
ZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksCisgICAgICAgIFQxMD4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0
b3IxMDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LAogICAgICAgICAgICAgVDEw
PigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKQEAgLTQ4
MTAsMTEgKzUxMzIsOSBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMTAoY29uc3QgR2VuZXJhdG9y
MSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICBjb25zdCBHZW5lcmF0b3IxMCBnMTBfOwog
fTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXIxMAogCi0jZW5kaWYgIC8vIEdURVNU
X0hBU19DT01CSU5FCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQogCiB9ICAvLyBuYW1l
c3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAKLSNlbmRpZiAgLy8gIEdU
RVNUX0hBU19QQVJBTV9URVNUCi0KICNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRF
Uk5BTF9HVEVTVF9QQVJBTV9VVElMX0dFTkVSQVRFRF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdl
bmVyYXRlZC5oLnB1bXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcAppbmRleCBiYWVkZmJjMmQ3
ZTgzNDFiNWI1NTlkOWNlMzNiOGQ4NzQ1M2RlZDQyLi5hZThjNTdiNTJiYTFmNzg1OTFjNTNhNTky
OTgzNjk0NzQxNjY4YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBh
cmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcApAQCAtMjksOCArMjksNyBAQCAkdmFyIG1heHR1cGxl
ID0gMTAgICQkIE1heGltdW0gbnVtYmVyIG9mIENvbWJpbmUgYXJndW1lbnRzIHdlIHdhbnQgdG8g
c3VwcG9ydC4KIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCisKIAogLy8gVHlw
ZSBhbmQgZnVuY3Rpb24gdXRpbGl0aWVzIGZvciBpbXBsZW1lbnRpbmcgcGFyYW1ldGVyaXplZCB0
ZXN0cy4KIC8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBETyBOT1QgRURJ
VCBCWSBIQU5EIQpAQCAtMzksMTkgKzM4LDE2IEBAICR2YXIgbWF4dHVwbGUgPSAxMCAgJCQgTWF4
aW11bSBudW1iZXIgb2YgQ29tYmluZSBhcmd1bWVudHMgd2Ugd2FudCB0byBzdXBwb3J0LgogLy8g
YW5kIGF0IG1vc3QgJG1heHR1cGxlIGFyZ3VtZW50cyBpbiBDb21iaW5lLiBQbGVhc2UgY29udGFj
dAogLy8gZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tIGlmIHlvdSBuZWVkIG1v
cmUuCiAvLyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHRvIENvbWJp
bmUgaXMgbGltaXRlZAotLy8gYnkgdGhlIG1heGltdW0gYXJpdHkgb2YgdGhlIGltcGxlbWVudGF0
aW9uIG9mIHRyMTo6dHVwbGUgd2hpY2ggaXMKKy8vIGJ5IHRoZSBtYXhpbXVtIGFyaXR5IG9mIHRo
ZSBpbXBsZW1lbnRhdGlvbiBvZiB0dXBsZSB3aGljaCBpcwogLy8gY3VycmVudGx5IHNldCBhdCAk
bWF4dHVwbGUuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKKwogI2lmbmRl
ZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BBUkFNX1VUSUxfR0VORVJBVEVE
X0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJ
TF9HRU5FUkFURURfSF8KIAotLy8gc2NyaXB0cy9mdXNlX2d0ZXN0LnB5IGRlcGVuZHMgb24gZ3Rl
c3QncyBvd24gaGVhZGVyIGJlaW5nICNpbmNsdWRlZAotLy8gKnVuY29uZGl0aW9uYWxseSouICBU
aGVyZWZvcmUgdGhlc2UgI2luY2x1ZGVzIGNhbm5vdCBiZSBtb3ZlZAotLy8gaW5zaWRlICNpZiBH
VEVTVF9IQVNfUEFSQU1fVEVTVC4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJh
bS11dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgotCi0jaWYg
R1RFU1RfSEFTX1BBUkFNX1RFU1QKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJh
bS11dGlsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiBuYW1l
c3BhY2UgdGVzdGluZyB7CiAKQEAgLTU5LDggKzU1LDggQEAgbmFtZXNwYWNlIHRlc3Rpbmcgewog
Ly8gaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmguCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Rm9yd2FyZEl0ZXJhdG9yPgogaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPAotICAgIHR5cGVuYW1l
IDo6c3RkOjppdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gVmFs
dWVzSW4oCi0gICAgICAgIEZvcndhcmRJdGVyYXRvciBiZWdpbiwgRm9yd2FyZEl0ZXJhdG9yIGVu
ZCk7CisgIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJhaXRzPEZvcndh
cmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+CitWYWx1ZXNJbihGb3J3YXJkSXRlcmF0b3IgYmVnaW4s
IEZvcndhcmRJdGVyYXRvciBlbmQpOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+
CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8VD4gVmFsdWVzSW4oY29uc3QgVCAoJmFycmF5KVtO
XSk7CkBAIC03MiwzMyArNjgsMTggQEAgaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPHR5cGVuYW1l
IENvbnRhaW5lcjo6dmFsdWVfdHlwZT4gVmFsdWVzSW4oCiBuYW1lc3BhY2UgaW50ZXJuYWwgewog
CiAvLyBVc2VkIGluIHRoZSBWYWx1ZXMoKSBmdW5jdGlvbiB0byBwcm92aWRlIHBvbHltb3JwaGlj
IGNhcGFiaWxpdGllcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMT4KLWNsYXNzIFZhbHVlQXJyYXkx
IHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFZhbHVlQXJyYXkxKFQxIHYxKSA6IHYxXyh2MSkge30K
LQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4o
KSBjb25zdCB7IHJldHVybiBWYWx1ZXNJbigmdjFfLCAmdjFfICsgMSk7IH0KLQotIHByaXZhdGU6
Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTEmIG90aGVyKTsKLQotICBjb25zdCBUMSB2
MV87Ci19OwotCi0kcmFuZ2UgaSAyLi5uCiskcmFuZ2UgaSAxLi5uCiAkZm9yIGkgW1sKICRyYW5n
ZSBqIDEuLmkKIAogdGVtcGxhdGUgPCRmb3IgaiwgW1t0eXBlbmFtZSBUJGpdXT4KIGNsYXNzIFZh
bHVlQXJyYXkkaSB7CiAgcHVibGljOgotICBWYWx1ZUFycmF5JGkoJGZvciBqLCBbW1QkaiB2JGpd
XSkgOiAkZm9yIGosIFtbdiQoailfKHYkaildXSB7fQorICAkaWYgaT09MSBbW2V4cGxpY2l0IF1d
VmFsdWVBcnJheSRpKCRmb3IgaiwgW1tUJGogdiRqXV0pIDogJGZvciBqLCBbW3YkKGopXyh2JGop
XV0ge30KIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0geyRmb3IgaiwgW1t2JChqKV9d
XX07CisgICAgY29uc3QgVCBhcnJheVtdID0geyRmb3IgaiwgW1tzdGF0aWNfY2FzdDxUPih2JChq
KV8pXV19OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTE1LDcgKzk2
LDcgQEAgJGZvciBqIFtbCiAKIF1dCiAKLSNpZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVT
VF9IQVNfQ09NQklORQogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElO
IFVTRVIgQ09ERS4KIC8vCiAvLyBHZW5lcmF0ZXMgdmFsdWVzIGZyb20gdGhlIENhcnRlc2lhbiBw
cm9kdWN0IG9mIHZhbHVlcyBwcm9kdWNlZApAQCAtMTI4LDkgKzEwOSw5IEBAICRyYW5nZSBrIDIu
LmkKIAogdGVtcGxhdGUgPCRmb3IgaiwgW1t0eXBlbmFtZSBUJGpdXT4KIGNsYXNzIENhcnRlc2lh
blByb2R1Y3RHZW5lcmF0b3IkaQotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNl
PCA6OnN0ZDo6dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4geworICAgIDogcHVibGljIFBh
cmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4g
PiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0cjE6OnR1cGxlPCRmb3IgaiwgW1tUJGpd
XT4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8JGZvciBqLCBbW1Qkal1d
PiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpKCRmb3IgaiwgW1tj
b25zdCBQYXJhbUdlbmVyYXRvcjxUJGo+JiBnJGpdXSkKICAgICAgIDogJGZvciBqLCBbW2ckKGop
XyhnJGopXV0ge30KQEAgLTE4MCw3ICsxNjEsNyBAQCAkZm9yIGsgW1sKICAgICB2aXJ0dWFsIFBh
cmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7CiAgICAgICBy
ZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJh
bVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KKyAgICB2
aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRf
dmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJh
dG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAvLyBIYXZpbmcg
dGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgogICAgICAg
Ly8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0LgpAQCAt
MjEyLDcgKzE5Myw3IEBAICRmb3IgayBbWwogCiAgICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVl
KCkgewogICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFt
VHlwZSgkZm9yIGosIFtbKmN1cnJlbnQkKGopX11dKTsKKyAgICAgICAgY3VycmVudF92YWx1ZV8u
cmVzZXQobmV3IFBhcmFtVHlwZSgkZm9yIGosIFtbKmN1cnJlbnQkKGopX11dKSk7CiAgICAgfQog
ICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRv
ciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQpAQCAtMjM3LDcg
KzIxOCw3IEBAICRmb3IgaiBbWwogICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQkaj46Oml0
ZXJhdG9yIGN1cnJlbnQkKGopXzsKIF1dCiAKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87
CisgICAgbGlua2VkX3B0cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAgLy8gY2xh
c3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpOjpJdGVyYXRvcgogCiAgIC8vIE5vIGltcGxl
bWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTI2OSw4ICsyNTAsOCBA
QCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyJGkgewogQ2FydGVzaWFuUHJvZHVjdEhvbGRl
ciRpKCRmb3IgaiwgW1tjb25zdCBHZW5lcmF0b3IkaiYgZyRqXV0pCiAgICAgICA6ICRmb3Igaiwg
W1tnJChqKV8oZyRqKV1dIHt9CiAgIHRlbXBsYXRlIDwkZm9yIGosIFtbdHlwZW5hbWUgVCRqXV0+
Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTwkZm9yIGosIFtb
VCRqXV0+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIx
Ojp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4oCisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6
OnRlc3Rpbmc6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4gPigpIGNvbnN0IHsKKyAgICByZXR1cm4g
UGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8JGZvciBqLCBbW1Qkal1dPiA+KAogICAg
ICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpPCRmb3IgaiwgW1tUJGpdXT4oCiAk
Zm9yIGosW1sKIApAQCAtMjkxLDExICsyNzIsOSBAQCAkZm9yIGogW1sKIAogXV0KIAotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfQ09NQklORQorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKIAog
fSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCi0jZW5k
aWYgIC8vICBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVf
R1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFURURfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFy
YW0tdXRpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC1wYXJhbS11dGlsLmgKaW5kZXggMGNiYjU4YzIxYjdiODljZDQ4YThkMWM1Y2I1MjBm
MzExMzc0Y2RlMi4uZDY0ZjYyMGM0YzY3NDM0NjczYzBhNjFlMjM5NjBiNjE1YzM0ZTc4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9n
dGVzdC1wYXJhbS11dGlsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgKQEAgLTI2LDI4ICsyNiw0OSBAQAogLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhv
cjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKwogCiAvLyBUeXBlIGFuZCBmdW5jdGlv
biB1dGlsaXRpZXMgZm9yIGltcGxlbWVudGluZyBwYXJhbWV0ZXJpemVkIHRlc3RzLgogCisvLyBH
T09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9H
VEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVf
R1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9IXwogCisjaW5jbHVkZSA8Y3R5cGUuaD4K
KwogI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDx1dGlsaXR5
PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotLy8gc2NyaXB0cy9mdXNlX2d0ZXN0LnB5IGRlcGVuZHMg
b24gZ3Rlc3QncyBvd24gaGVhZGVyIGJlaW5nICNpbmNsdWRlZAotLy8gKnVuY29uZGl0aW9uYWxs
eSouICBUaGVyZWZvcmUgdGhlc2UgI2luY2x1ZGVzIGNhbm5vdCBiZSBtb3ZlZAotLy8gaW5zaWRl
ICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVC4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVz
dC1pbnRlcm5hbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIu
aD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+Ci0KLSNpZiBHVEVTVF9I
QVNfUEFSQU1fVEVTVAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgi
CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oIgorI2luY2x1ZGUg
Imd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1wcmlu
dGVycy5oIgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CisKKy8vIElucHV0IHRvIGEgcGFyYW1ldGVy
aXplZCB0ZXN0IG5hbWUgZ2VuZXJhdG9yLCBkZXNjcmliaW5nIGEgdGVzdCBwYXJhbWV0ZXIuCisv
LyBDb25zaXN0cyBvZiB0aGUgcGFyYW1ldGVyIHZhbHVlIGFuZCB0aGUgaW50ZWdlciBwYXJhbWV0
ZXIgaW5kZXguCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgorc3RydWN0IFRlc3RQYXJhbUlu
Zm8geworICBUZXN0UGFyYW1JbmZvKGNvbnN0IFBhcmFtVHlwZSYgYV9wYXJhbSwgc2l6ZV90IGFu
X2luZGV4KSA6CisgICAgcGFyYW0oYV9wYXJhbSksCisgICAgaW5kZXgoYW5faW5kZXgpIHt9Cisg
IFBhcmFtVHlwZSBwYXJhbTsKKyAgc2l6ZV90IGluZGV4OworfTsKKworLy8gQSBidWlsdGluIHBh
cmFtZXRlcml6ZWQgdGVzdCBuYW1lIGdlbmVyYXRvciB3aGljaCByZXR1cm5zIHRoZSByZXN1bHQg
b2YKKy8vIHRlc3Rpbmc6OlByaW50VG9TdHJpbmcuCitzdHJ1Y3QgUHJpbnRUb1N0cmluZ1BhcmFt
TmFtZSB7CisgIHRlbXBsYXRlIDxjbGFzcyBQYXJhbVR5cGU+CisgIHN0ZDo6c3RyaW5nIG9wZXJh
dG9yKCkoY29uc3QgVGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+JiBpbmZvKSBjb25zdCB7CisgICAg
cmV0dXJuIFByaW50VG9TdHJpbmcoaW5mby5wYXJhbSk7CisgIH0KK307CisKIG5hbWVzcGFjZSBp
bnRlcm5hbCB7CiAKIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBV
U0VSIENPREUuCkBAIC01Nyw3ICs3OCw3IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLyBURVNU
X1AgbWFjcm8gaXMgdXNlZCB0byBkZWZpbmUgdHdvIHRlc3RzIHdpdGggdGhlIHNhbWUgbmFtZQog
Ly8gYnV0IGluIGRpZmZlcmVudCBuYW1lc3BhY2VzLgogR1RFU1RfQVBJXyB2b2lkIFJlcG9ydElu
dmFsaWRUZXN0Q2FzZVR5cGUoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGlu
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRp
b24gY29kZV9sb2NhdGlvbik7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZT4gY2xhc3MgUGFyYW1HZW5l
cmF0b3JJbnRlcmZhY2U7CiB0ZW1wbGF0ZSA8dHlwZW5hbWU+IGNsYXNzIFBhcmFtR2VuZXJhdG9y
OwpAQCAtMTcxLDcgKzE5Miw3IEBAIGNsYXNzIFBhcmFtR2VuZXJhdG9yIHsKICAgaXRlcmF0b3Ig
ZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoaW1wbF8tPkVuZCgpKTsgfQogCiAgcHJpdmF0
ZToKLSAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjxjb25zdCBQYXJhbUdlbmVyYXRv
ckludGVyZmFjZTxUPiA+IGltcGxfOworICBsaW5rZWRfcHRyPGNvbnN0IFBhcmFtR2VuZXJhdG9y
SW50ZXJmYWNlPFQ+ID4gaW1wbF87CiB9OwogCiAvLyBHZW5lcmF0ZXMgdmFsdWVzIGZyb20gYSBy
YW5nZSBvZiB0d28gY29tcGFyYWJsZSB2YWx1ZXMuIENhbiBiZSB1c2VkIHRvCkBAIC0yMDUsNyAr
MjI2LDcgQEAgY2xhc3MgUmFuZ2VHZW5lcmF0b3IgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRl
cmZhY2U8VD4gewogICAgICAgcmV0dXJuIGJhc2VfOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQg
QWR2YW5jZSgpIHsKLSAgICAgIHZhbHVlXyA9IHZhbHVlXyArIHN0ZXBfOworICAgICAgdmFsdWVf
ID0gc3RhdGljX2Nhc3Q8VD4odmFsdWVfICsgc3RlcF8pOwogICAgICAgaW5kZXhfKys7CiAgICAg
fQogICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxUPiogQ2xvbmUoKSBjb25zdCB7
CkBAIC0yNDIsNyArMjYzLDcgQEAgY2xhc3MgUmFuZ2VHZW5lcmF0b3IgOiBwdWJsaWMgUGFyYW1H
ZW5lcmF0b3JJbnRlcmZhY2U8VD4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFQmIGVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbmNyZW1l
bnRUJiBzdGVwKSB7CiAgICAgaW50IGVuZF9pbmRleCA9IDA7Ci0gICAgZm9yIChUIGkgPSBiZWdp
bjsgaSA8IGVuZDsgaSA9IGkgKyBzdGVwKQorICAgIGZvciAoVCBpID0gYmVnaW47IGkgPCBlbmQ7
IGkgPSBzdGF0aWNfY2FzdDxUPihpICsgc3RlcCkpCiAgICAgICBlbmRfaW5kZXgrKzsKICAgICBy
ZXR1cm4gZW5kX2luZGV4OwogICB9CkBAIC0yODUsNyArMzA2LDcgQEAgY2xhc3MgVmFsdWVzSW5J
dGVyYXRvclJhbmdlR2VuZXJhdG9yIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+
IHsKICAgIHB1YmxpYzoKICAgICBJdGVyYXRvcihjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFj
ZTxUPiogYmFzZSwKICAgICAgICAgICAgICB0eXBlbmFtZSBDb250YWluZXJUeXBlOjpjb25zdF9p
dGVyYXRvciBpdGVyYXRvcikKLSAgICAgICAgOiAgYmFzZV8oYmFzZSksIGl0ZXJhdG9yXyhpdGVy
YXRvcikge30KKyAgICAgICAgOiBiYXNlXyhiYXNlKSwgaXRlcmF0b3JfKGl0ZXJhdG9yKSB7fQog
ICAgIHZpcnR1YWwgfkl0ZXJhdG9yKCkge30KIAogICAgIHZpcnR1YWwgY29uc3QgUGFyYW1HZW5l
cmF0b3JJbnRlcmZhY2U8VD4qIEJhc2VHZW5lcmF0b3IoKSBjb25zdCB7CkBAIC0zNDQsNiArMzY1
LDM3IEBAIGNsYXNzIFZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvciA6IHB1YmxpYyBQYXJh
bUdlbmVyYXRvckludGVyZmFjZTxUPiB7CiAgIGNvbnN0IENvbnRhaW5lclR5cGUgY29udGFpbmVy
XzsKIH07ICAvLyBjbGFzcyBWYWx1ZXNJbkl0ZXJhdG9yUmFuZ2VHZW5lcmF0b3IKIAorLy8gSU5U
RVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KKy8vCisvLyBE
ZWZhdWx0IHBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lIGdlbmVyYXRvciwgcmV0dXJucyBhIHN0cmlu
ZyBjb250YWluaW5nIHRoZQorLy8gaW50ZWdlciB0ZXN0IHBhcmFtZXRlciBpbmRleC4KK3RlbXBs
YXRlIDxjbGFzcyBQYXJhbVR5cGU+CitzdGQ6OnN0cmluZyBEZWZhdWx0UGFyYW1OYW1lKGNvbnN0
IFRlc3RQYXJhbUluZm88UGFyYW1UeXBlPiYgaW5mbykgeworICBNZXNzYWdlIG5hbWVfc3RyZWFt
OworICBuYW1lX3N0cmVhbSA8PCBpbmZvLmluZGV4OworICByZXR1cm4gbmFtZV9zdHJlYW0uR2V0
U3RyaW5nKCk7Cit9CisKKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJ
TiBVU0VSIENPREUuCisvLworLy8gUGFyYW1ldGVyaXplZCB0ZXN0IG5hbWUgb3ZlcmxvYWQgaGVs
cGVycywgd2hpY2ggaGVscCB0aGUKKy8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIG1hY3JvIGNo
b29zZSBiZXR3ZWVuIHRoZSBkZWZhdWx0IHBhcmFtZXRlcml6ZWQKKy8vIHRlc3QgbmFtZSBnZW5l
cmF0b3IgYW5kIHVzZXIgcGFyYW0gbmFtZSBnZW5lcmF0b3IuCit0ZW1wbGF0ZSA8Y2xhc3MgUGFy
YW1UeXBlLCBjbGFzcyBQYXJhbU5hbWVHZW5GdW5jdG9yPgorUGFyYW1OYW1lR2VuRnVuY3RvciBH
ZXRQYXJhbU5hbWVHZW4oUGFyYW1OYW1lR2VuRnVuY3RvciBmdW5jKSB7CisgIHJldHVybiBmdW5j
OworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgorc3RydWN0IFBhcmFtTmFtZUdlbkZ1
bmMgeworICB0eXBlZGVmIHN0ZDo6c3RyaW5nIFR5cGUoY29uc3QgVGVzdFBhcmFtSW5mbzxQYXJh
bVR5cGU+Jik7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgordHlwZW5hbWUgUGFy
YW1OYW1lR2VuRnVuYzxQYXJhbVR5cGU+OjpUeXBlICpHZXRQYXJhbU5hbWVHZW4oKSB7CisgIHJl
dHVybiBEZWZhdWx0UGFyYW1OYW1lOworfQorCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAt
IERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgogLy8KIC8vIFN0b3JlcyBhIHBhcmFtZXRlciB2YWx1
ZSBhbmQgbGF0ZXIgY3JlYXRlcyB0ZXN0cyBwYXJhbWV0ZXJpemVkIHdpdGggdGhhdApAQCAtNDE2
LDcgKzQ2OCw3IEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9CYXNlIHsKICAgdmly
dHVhbCB+UGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UoKSB7fQogCiAgIC8vIEJhc2UgcGFy
dCBvZiB0ZXN0IGNhc2UgbmFtZSBmb3IgZGlzcGxheSBwdXJwb3Nlcy4KLSAgdmlydHVhbCBjb25z
dCBTdHJpbmcmIEdldFRlc3RDYXNlTmFtZSgpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCBjb25zdCBz
dGQ6OnN0cmluZyYgR2V0VGVzdENhc2VOYW1lKCkgY29uc3QgPSAwOwogICAvLyBUZXN0IGNhc2Ug
aWQgdG8gdmVyaWZ5IGlkZW50aXR5LgogICB2aXJ0dWFsIFR5cGVJZCBHZXRUZXN0Q2FzZVR5cGVJ
ZCgpIGNvbnN0ID0gMDsKICAgLy8gVW5pdFRlc3QgY2xhc3MgaW52b2tlcyB0aGlzIG1ldGhvZCB0
byByZWdpc3RlciB0ZXN0cyBpbiB0aGlzCkBAIC00NDgsMTIgKzUwMCwxNCBAQCBjbGFzcyBQYXJh
bWV0ZXJpemVkVGVzdENhc2VJbmZvIDogcHVibGljIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9C
YXNlIHsKICAgdHlwZWRlZiB0eXBlbmFtZSBUZXN0Q2FzZTo6UGFyYW1UeXBlIFBhcmFtVHlwZTsK
ICAgLy8gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgYXBwcm9wcmlhdGUg
Z2VuZXJhdG9yIHR5cGUuCiAgIHR5cGVkZWYgUGFyYW1HZW5lcmF0b3I8UGFyYW1UeXBlPihHZW5l
cmF0b3JDcmVhdGlvbkZ1bmMpKCk7CisgIHR5cGVkZWYgdHlwZW5hbWUgUGFyYW1OYW1lR2VuRnVu
YzxQYXJhbVR5cGU+OjpUeXBlIFBhcmFtTmFtZUdlbmVyYXRvckZ1bmM7CiAKLSAgZXhwbGljaXQg
UGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbyhjb25zdCBjaGFyKiBuYW1lKQotICAgICAgOiB0ZXN0
X2Nhc2VfbmFtZV8obmFtZSkge30KKyAgZXhwbGljaXQgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5m
bygKKyAgICAgIGNvbnN0IGNoYXIqIG5hbWUsIENvZGVMb2NhdGlvbiBjb2RlX2xvY2F0aW9uKQor
ICAgICAgOiB0ZXN0X2Nhc2VfbmFtZV8obmFtZSksIGNvZGVfbG9jYXRpb25fKGNvZGVfbG9jYXRp
b24pIHt9CiAKICAgLy8gVGVzdCBjYXNlIGJhc2UgbmFtZSBmb3IgZGlzcGxheSBwdXJwb3Nlcy4K
LSAgdmlydHVhbCBjb25zdCBTdHJpbmcmIEdldFRlc3RDYXNlTmFtZSgpIGNvbnN0IHsgcmV0dXJu
IHRlc3RfY2FzZV9uYW1lXzsgfQorICB2aXJ0dWFsIGNvbnN0IHN0ZDo6c3RyaW5nJiBHZXRUZXN0
Q2FzZU5hbWUoKSBjb25zdCB7IHJldHVybiB0ZXN0X2Nhc2VfbmFtZV87IH0KICAgLy8gVGVzdCBj
YXNlIGlkIHRvIHZlcmlmeSBpZGVudGl0eS4KICAgdmlydHVhbCBUeXBlSWQgR2V0VGVzdENhc2VU
eXBlSWQoKSBjb25zdCB7IHJldHVybiBHZXRUeXBlSWQ8VGVzdENhc2U+KCk7IH0KICAgLy8gVEVT
VF9QIG1hY3JvIHVzZXMgQWRkVGVzdFBhdHRlcm4oKSB0byByZWNvcmQgaW5mb3JtYXRpb24KQEAg
LTQ3MSwxMSArNTI1LDEyIEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8gOiBwdWJs
aWMgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UgewogICB9CiAgIC8vIElOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QIG1hY3JvIHVzZXMgQWRkR2VuZXJhdG9yKCkgdG8gcmVjb3JkIGluZm9ybWF0
aW9uCiAgIC8vIGFib3V0IGEgZ2VuZXJhdG9yLgotICBpbnQgQWRkVGVzdENhc2VJbnN0YW50aWF0
aW9uKGNvbnN0IGNoYXIqIGluc3RhbnRpYXRpb25fbmFtZSwKKyAgaW50IEFkZFRlc3RDYXNlSW5z
dGFudGlhdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgaW5zdGFudGlhdGlvbl9uYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvckNyZWF0aW9uRnVuYyogZnVuYywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKiBmaWxlICovLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKiBsaW5lICovKSB7Ci0gICAgaW5zdGFu
dGlhdGlvbnNfLnB1c2hfYmFjayg6OnN0ZDo6bWFrZV9wYWlyKGluc3RhbnRpYXRpb25fbmFtZSwg
ZnVuYykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtTmFtZUdlbmVyYXRv
ckZ1bmMqIG5hbWVfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBmaWxlLCBpbnQgbGluZSkgeworICAgIGluc3RhbnRpYXRpb25zXy5wdXNoX2JhY2soCisg
ICAgICAgIEluc3RhbnRpYXRpb25JbmZvKGluc3RhbnRpYXRpb25fbmFtZSwgZnVuYywgbmFtZV9m
dW5jLCBmaWxlLCBsaW5lKSk7CiAgICAgcmV0dXJuIDA7ICAvLyBSZXR1cm4gdmFsdWUgdXNlZCBv
bmx5IHRvIHJ1biB0aGlzIG1ldGhvZCBpbiBuYW1lc3BhY2Ugc2NvcGUuCiAgIH0KICAgLy8gVW5p
dFRlc3QgY2xhc3MgaW52b2tlcyB0aGlzIG1ldGhvZCB0byByZWdpc3RlciB0ZXN0cyBpbiB0aGlz
IHRlc3QgY2FzZQpAQCAtNDkwLDI2ICs1NDUsNDUgQEAgY2xhc3MgUGFyYW1ldGVyaXplZFRlc3RD
YXNlSW5mbyA6IHB1YmxpYyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvQmFzZSB7CiAgICAgICBm
b3IgKHR5cGVuYW1lIEluc3RhbnRpYXRpb25Db250YWluZXI6Oml0ZXJhdG9yIGdlbl9pdCA9CiAg
ICAgICAgICAgICAgICBpbnN0YW50aWF0aW9uc18uYmVnaW4oKTsgZ2VuX2l0ICE9IGluc3RhbnRp
YXRpb25zXy5lbmQoKTsKICAgICAgICAgICAgICAgICsrZ2VuX2l0KSB7Ci0gICAgICAgIGNvbnN0
IFN0cmluZyYgaW5zdGFudGlhdGlvbl9uYW1lID0gZ2VuX2l0LT5maXJzdDsKLSAgICAgICAgUGFy
YW1HZW5lcmF0b3I8UGFyYW1UeXBlPiBnZW5lcmF0b3IoKCpnZW5faXQtPnNlY29uZCkoKSk7Cisg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnN0YW50aWF0aW9uX25hbWUgPSBnZW5faXQtPm5h
bWU7CisgICAgICAgIFBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT4gZ2VuZXJhdG9yKCgqZ2VuX2l0
LT5nZW5lcmF0b3IpKCkpOworICAgICAgICBQYXJhbU5hbWVHZW5lcmF0b3JGdW5jKiBuYW1lX2Z1
bmMgPSBnZW5faXQtPm5hbWVfZnVuYzsKKyAgICAgICAgY29uc3QgY2hhciogZmlsZSA9IGdlbl9p
dC0+ZmlsZTsKKyAgICAgICAgaW50IGxpbmUgPSBnZW5faXQtPmxpbmU7CiAKLSAgICAgICAgTWVz
c2FnZSB0ZXN0X2Nhc2VfbmFtZV9zdHJlYW07CisgICAgICAgIHN0ZDo6c3RyaW5nIHRlc3RfY2Fz
ZV9uYW1lOwogICAgICAgICBpZiAoICFpbnN0YW50aWF0aW9uX25hbWUuZW1wdHkoKSApCi0gICAg
ICAgICAgdGVzdF9jYXNlX25hbWVfc3RyZWFtIDw8IGluc3RhbnRpYXRpb25fbmFtZS5jX3N0cigp
IDw8ICIvIjsKLSAgICAgICAgdGVzdF9jYXNlX25hbWVfc3RyZWFtIDw8IHRlc3RfaW5mby0+dGVz
dF9jYXNlX2Jhc2VfbmFtZS5jX3N0cigpOworICAgICAgICAgIHRlc3RfY2FzZV9uYW1lID0gaW5z
dGFudGlhdGlvbl9uYW1lICsgIi8iOworICAgICAgICB0ZXN0X2Nhc2VfbmFtZSArPSB0ZXN0X2lu
Zm8tPnRlc3RfY2FzZV9iYXNlX25hbWU7CiAKLSAgICAgICAgaW50IGkgPSAwOworICAgICAgICBz
aXplX3QgaSA9IDA7CisgICAgICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiB0ZXN0X3BhcmFtX25h
bWVzOwogICAgICAgICBmb3IgKHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT46Oml0
ZXJhdG9yIHBhcmFtX2l0ID0KICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmJlZ2luKCk7CiAg
ICAgICAgICAgICAgcGFyYW1faXQgIT0gZ2VuZXJhdG9yLmVuZCgpOyArK3BhcmFtX2l0LCArK2kp
IHsKICAgICAgICAgICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07Ci0gICAgICAgICAgdGVzdF9u
YW1lX3N0cmVhbSA8PCB0ZXN0X2luZm8tPnRlc3RfYmFzZV9uYW1lLmNfc3RyKCkgPDwgIi8iIDw8
IGk7Ci0gICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TWFrZUFuZFJlZ2lzdGVyVGVzdElu
Zm8oCi0gICAgICAgICAgICAgIHRlc3RfY2FzZV9uYW1lX3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0
cigpLAorCisgICAgICAgICAgc3RkOjpzdHJpbmcgcGFyYW1fbmFtZSA9IG5hbWVfZnVuYygKKyAg
ICAgICAgICAgICAgVGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+KCpwYXJhbV9pdCwgaSkpOworCisg
ICAgICAgICAgR1RFU1RfQ0hFQ0tfKElzVmFsaWRQYXJhbU5hbWUocGFyYW1fbmFtZSkpCisgICAg
ICAgICAgICAgIDw8ICJQYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSAnIiA8PCBwYXJhbV9uYW1lCisg
ICAgICAgICAgICAgIDw8ICInIGlzIGludmFsaWQsIGluICIgPDwgZmlsZQorICAgICAgICAgICAg
ICA8PCAiIGxpbmUgIiA8PCBsaW5lIDw8IHN0ZDo6ZW5kbDsKKworICAgICAgICAgIEdURVNUX0NI
RUNLXyh0ZXN0X3BhcmFtX25hbWVzLmNvdW50KHBhcmFtX25hbWUpID09IDApCisgICAgICAgICAg
ICAgIDw8ICJEdXBsaWNhdGUgcGFyYW1ldGVyaXplZCB0ZXN0IG5hbWUgJyIgPDwgcGFyYW1fbmFt
ZQorICAgICAgICAgICAgICA8PCAiJywgaW4gIiA8PCBmaWxlIDw8ICIgbGluZSAiIDw8IGxpbmUg
PDwgc3RkOjplbmRsOworCisgICAgICAgICAgdGVzdF9wYXJhbV9uYW1lcy5pbnNlcnQocGFyYW1f
bmFtZSk7CisKKyAgICAgICAgICB0ZXN0X25hbWVfc3RyZWFtIDw8IHRlc3RfaW5mby0+dGVzdF9i
YXNlX25hbWUgPDwgIi8iIDw8IHBhcmFtX25hbWU7CisgICAgICAgICAgTWFrZUFuZFJlZ2lzdGVy
VGVzdEluZm8oCisgICAgICAgICAgICAgIHRlc3RfY2FzZV9uYW1lLmNfc3RyKCksCiAgICAgICAg
ICAgICAgIHRlc3RfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19zdHIoKSwKLSAgICAgICAgICAg
ICAgIiIsICAvLyB0ZXN0X2Nhc2VfY29tbWVudAotICAgICAgICAgICAgICAiIiwgIC8vIGNvbW1l
bnQ7IFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IHByb3ZpZGUgcGFyYW1ldGVyIHZhbHVlCi0gICAg
ICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcmVz
ZW50YXRpb24uCisgICAgICAgICAgICAgIE5VTEwsICAvLyBObyB0eXBlIHBhcmFtZXRlci4KKyAg
ICAgICAgICAgICAgUHJpbnRUb1N0cmluZygqcGFyYW1faXQpLmNfc3RyKCksCisgICAgICAgICAg
ICAgIGNvZGVfbG9jYXRpb25fLAogICAgICAgICAgICAgICBHZXRUZXN0Q2FzZVR5cGVJZCgpLAog
ICAgICAgICAgICAgICBUZXN0Q2FzZTo6U2V0VXBUZXN0Q2FzZSwKICAgICAgICAgICAgICAgVGVz
dENhc2U6OlRlYXJEb3duVGVzdENhc2UsCkBAIC01MzAsMTcgKzYwNCw1MCBAQCBjbGFzcyBQYXJh
bWV0ZXJpemVkVGVzdENhc2VJbmZvIDogcHVibGljIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9C
YXNlIHsKICAgICAgICAgdGVzdF9iYXNlX25hbWUoYV90ZXN0X2Jhc2VfbmFtZSksCiAgICAgICAg
IHRlc3RfbWV0YV9mYWN0b3J5KGFfdGVzdF9tZXRhX2ZhY3RvcnkpIHt9CiAKLSAgICBjb25zdCBT
dHJpbmcgdGVzdF9jYXNlX2Jhc2VfbmFtZTsKLSAgICBjb25zdCBTdHJpbmcgdGVzdF9iYXNlX25h
bWU7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdF9jYXNlX2Jhc2VfbmFtZTsKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyB0ZXN0X2Jhc2VfbmFtZTsKICAgICBjb25zdCBzY29wZWRfcHRyPFRlc3RN
ZXRhRmFjdG9yeUJhc2U8UGFyYW1UeXBlPiA+IHRlc3RfbWV0YV9mYWN0b3J5OwogICB9OwogICB0
eXBlZGVmIDo6c3RkOjp2ZWN0b3I8bGlua2VkX3B0cjxUZXN0SW5mbz4gPiBUZXN0SW5mb0NvbnRh
aW5lcjsKLSAgLy8gS2VlcHMgcGFpcnMgb2YgPEluc3RhbnRpYXRpb24gbmFtZSwgU2VxdWVuY2Ug
Z2VuZXJhdG9yIGNyZWF0aW9uIGZ1bmN0aW9uPgotICAvLyByZWNlaXZlZCBmcm9tIElOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QIG1hY3Jvcy4KLSAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIEdlbmVyYXRvckNyZWF0aW9uRnVuYyo+ID4KLSAgICAgIEluc3RhbnRpYXRpb25D
b250YWluZXI7CisgIC8vIFJlY29yZHMgZGF0YSByZWNlaXZlZCBmcm9tIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QIG1hY3JvczoKKyAgLy8gIDxJbnN0YW50aWF0aW9uIG5hbWUsIFNlcXVlbmNlIGdl
bmVyYXRvciBjcmVhdGlvbiBmdW5jdGlvbiwKKyAgLy8gICAgIE5hbWUgZ2VuZXJhdG9yIGZ1bmN0
aW9uLCBTb3VyY2UgZmlsZSwgU291cmNlIGxpbmU+CisgIHN0cnVjdCBJbnN0YW50aWF0aW9uSW5m
byB7CisgICAgICBJbnN0YW50aWF0aW9uSW5mbyhjb25zdCBzdGQ6OnN0cmluZyAmbmFtZV9pbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvckNyZWF0aW9uRnVuYyogZ2VuZXJhdG9y
X2luLAorICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1OYW1lR2VuZXJhdG9yRnVuYyogbmFt
ZV9mdW5jX2luLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZV9pbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lX2luKQorICAgICAgICAgIDogbmFtZShu
YW1lX2luKSwKKyAgICAgICAgICAgIGdlbmVyYXRvcihnZW5lcmF0b3JfaW4pLAorICAgICAgICAg
ICAgbmFtZV9mdW5jKG5hbWVfZnVuY19pbiksCisgICAgICAgICAgICBmaWxlKGZpbGVfaW4pLAor
ICAgICAgICAgICAgbGluZShsaW5lX2luKSB7fQorCisgICAgICBzdGQ6OnN0cmluZyBuYW1lOwor
ICAgICAgR2VuZXJhdG9yQ3JlYXRpb25GdW5jKiBnZW5lcmF0b3I7CisgICAgICBQYXJhbU5hbWVH
ZW5lcmF0b3JGdW5jKiBuYW1lX2Z1bmM7CisgICAgICBjb25zdCBjaGFyKiBmaWxlOworICAgICAg
aW50IGxpbmU7CisgIH07CisgIHR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxJbnN0YW50aWF0aW9uSW5m
bz4gSW5zdGFudGlhdGlvbkNvbnRhaW5lcjsKIAotICBjb25zdCBTdHJpbmcgdGVzdF9jYXNlX25h
bWVfOworICBzdGF0aWMgYm9vbCBJc1ZhbGlkUGFyYW1OYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBu
YW1lKSB7CisgICAgLy8gQ2hlY2sgZm9yIGVtcHR5IHN0cmluZworICAgIGlmIChuYW1lLmVtcHR5
KCkpCisgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBDaGVjayBmb3IgaW52YWxpZCBjaGFy
YWN0ZXJzCisgICAgZm9yIChzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGluZGV4ID0gMDsgaW5kZXgg
PCBuYW1lLnNpemUoKTsgKytpbmRleCkgeworICAgICAgaWYgKCFpc2FsbnVtKG5hbWVbaW5kZXhd
KSAmJiBuYW1lW2luZGV4XSAhPSAnXycpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RfY2FzZV9u
YW1lXzsKKyAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb25fOwogICBUZXN0SW5mb0NvbnRhaW5l
ciB0ZXN0c187CiAgIEluc3RhbnRpYXRpb25Db250YWluZXIgaW5zdGFudGlhdGlvbnNfOwogCkBA
IC01NjgsOCArNjc1LDcgQEAgY2xhc3MgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgewog
ICB0ZW1wbGF0ZSA8Y2xhc3MgVGVzdENhc2U+CiAgIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm88
VGVzdENhc2U+KiBHZXRUZXN0Q2FzZVBhdHRlcm5Ib2xkZXIoCiAgICAgICBjb25zdCBjaGFyKiB0
ZXN0X2Nhc2VfbmFtZSwKLSAgICAgIGNvbnN0IGNoYXIqIGZpbGUsCi0gICAgICBpbnQgbGluZSkg
eworICAgICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24pIHsKICAgICBQYXJhbWV0ZXJpemVk
VGVzdENhc2VJbmZvPFRlc3RDYXNlPiogdHlwZWRfdGVzdF9pbmZvID0gTlVMTDsKICAgICBmb3Ig
KFRlc3RDYXNlSW5mb0NvbnRhaW5lcjo6aXRlcmF0b3IgaXQgPSB0ZXN0X2Nhc2VfaW5mb3NfLmJl
Z2luKCk7CiAgICAgICAgICBpdCAhPSB0ZXN0X2Nhc2VfaW5mb3NfLmVuZCgpOyArK2l0KSB7CkBA
IC01NzgsOCArNjg0LDggQEAgY2xhc3MgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgewog
ICAgICAgICAgIC8vIENvbXBsYWluIGFib3V0IGluY29ycmVjdCB1c2FnZSBvZiBHb29nbGUgVGVz
dCBmYWNpbGl0aWVzCiAgICAgICAgICAgLy8gYW5kIHRlcm1pbmF0ZSB0aGUgcHJvZ3JhbSBzaW5j
ZSB3ZSBjYW5ub3QgZ3VhcmFudHkgY29ycmVjdAogICAgICAgICAgIC8vIHRlc3QgY2FzZSBzZXR1
cCBhbmQgdGVhci1kb3duIGluIHRoaXMgY2FzZS4KLSAgICAgICAgICBSZXBvcnRJbnZhbGlkVGVz
dENhc2VUeXBlKHRlc3RfY2FzZV9uYW1lLCAgZmlsZSwgbGluZSk7Ci0gICAgICAgICAgYWJvcnQo
KTsKKyAgICAgICAgICBSZXBvcnRJbnZhbGlkVGVzdENhc2VUeXBlKHRlc3RfY2FzZV9uYW1lLCBj
b2RlX2xvY2F0aW9uKTsKKyAgICAgICAgICBwb3NpeDo6QWJvcnQoKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGFyZSBzdXJlIHRoYXQgdGhlIG9iamVj
dCB3ZSBmb3VuZCBpcyBvZiB0aGUgc2FtZQogICAgICAgICAgIC8vIHR5cGUgd2UgYXJlIGxvb2tp
bmcgZm9yLCBzbyB3ZSBkb3duY2FzdCBpdCB0byB0aGF0IHR5cGUKQEAgLTU5MSw3ICs2OTcsOCBA
QCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSB7CiAgICAgICB9CiAgICAgfQog
ICAgIGlmICh0eXBlZF90ZXN0X2luZm8gPT0gTlVMTCkgewotICAgICAgdHlwZWRfdGVzdF9pbmZv
ID0gbmV3IFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm88VGVzdENhc2U+KHRlc3RfY2FzZV9uYW1l
KTsKKyAgICAgIHR5cGVkX3Rlc3RfaW5mbyA9IG5ldyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZv
PFRlc3RDYXNlPigKKyAgICAgICAgICB0ZXN0X2Nhc2VfbmFtZSwgY29kZV9sb2NhdGlvbik7CiAg
ICAgICB0ZXN0X2Nhc2VfaW5mb3NfLnB1c2hfYmFjayh0eXBlZF90ZXN0X2luZm8pOwogICAgIH0K
ICAgICByZXR1cm4gdHlwZWRfdGVzdF9pbmZvOwpAQCAtNjE0LDYgKzcyMSw0IEBAIGNsYXNzIFBh
cmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IHsKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAog
fSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotI2VuZGlmICAvLyAgR1RFU1RfSEFTX1BBUkFNX1RF
U1QKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BBUkFN
X1VUSUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC1hcmNoLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9p
bmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4Mzcw
MGUwNmQ5OGMzNmY2NDg3MjkxYzNmOTMxODA3YWYzNTNmNzQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQt
YXJjaC5oCkBAIC0wLDAgKzEsMTAwIEBACisvLyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4K
Ky8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
Ky8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisvLworLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBG
cmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8KKy8vIFRoaXMgaGVhZGVyIGZpbGUgZGVmaW5lcyB0
aGUgR1RFU1RfT1NfKiBtYWNyby4KKy8vIEl0IGlzIHNlcGFyYXRlIGZyb20gZ3Rlc3QtcG9ydC5o
IHNvIHRoYXQgY3VzdG9tL2d0ZXN0LXBvcnQuaCBjYW4gaW5jbHVkZSBpdC4KKworI2lmbmRlZiBH
VEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRfQVJDSF9IXworI2RlZmluZSBH
VEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRfQVJDSF9IXworCisvLyBEZXRl
cm1pbmVzIHRoZSBwbGF0Zm9ybSBvbiB3aGljaCBHb29nbGUgVGVzdCBpcyBjb21waWxlZC4KKyNp
ZmRlZiBfX0NZR1dJTl9fCisjIGRlZmluZSBHVEVTVF9PU19DWUdXSU4gMQorI2VsaWYgZGVmaW5l
ZCBfX1NZTUJJQU4zMl9fCisjIGRlZmluZSBHVEVTVF9PU19TWU1CSUFOIDEKKyNlbGlmIGRlZmlu
ZWQgX1dJTjMyCisjIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTIDEKKyMgaWZkZWYgX1dJTjMyX1dD
RQorIyAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIDEKKyMgZWxpZiBkZWZpbmVkKF9f
TUlOR1dfXykgfHwgZGVmaW5lZChfX01JTkdXMzJfXykKKyMgIGRlZmluZSBHVEVTVF9PU19XSU5E
T1dTX01JTkdXIDEKKyMgZWxpZiBkZWZpbmVkKFdJTkFQSV9GQU1JTFkpCisjICBpbmNsdWRlIDx3
aW5hcGlmYW1pbHkuaD4KKyMgIGlmIFdJTkFQSV9GQU1JTFlfUEFSVElUSU9OKFdJTkFQSV9QQVJU
SVRJT05fREVTS1RPUCkKKyMgICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19ERVNLVE9QIDEKKyMg
IGVsaWYgV0lOQVBJX0ZBTUlMWV9QQVJUSVRJT04oV0lOQVBJX1BBUlRJVElPTl9QSE9ORV9BUFAp
CisjICAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfUEhPTkUgMQorIyAgZWxpZiBXSU5BUElfRkFN
SUxZX1BBUlRJVElPTihXSU5BUElfUEFSVElUSU9OX0FQUCkKKyMgICBkZWZpbmUgR1RFU1RfT1Nf
V0lORE9XU19SVCAxCisjICBlbGlmIFdJTkFQSV9GQU1JTFlfUEFSVElUSU9OKFdJTkFQSV9QQVJU
SVRJT05fVFZfVElUTEUpCisjICAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfUEhPTkUgMQorIyAg
IGRlZmluZSBHVEVTVF9PU19XSU5ET1dTX1RWX1RJVExFIDEKKyMgIGVsc2UKKyAgICAvLyBXSU5B
UElfRkFNSUxZIGRlZmluZWQgYnV0IG5vIGtub3duIHBhcnRpdGlvbiBtYXRjaGVkLgorICAgIC8v
IERlZmF1bHQgdG8gZGVza3RvcC4KKyMgICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19ERVNLVE9Q
IDEKKyMgIGVuZGlmCisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1Ag
MQorIyBlbmRpZiAgLy8gX1dJTjMyX1dDRQorI2VsaWYgZGVmaW5lZCBfX0FQUExFX18KKyMgZGVm
aW5lIEdURVNUX09TX01BQyAxCisjIGlmIFRBUkdFVF9PU19JUEhPTkUKKyMgIGRlZmluZSBHVEVT
VF9PU19JT1MgMQorIyBlbmRpZgorI2VsaWYgZGVmaW5lZCBfX0ZyZWVCU0RfXworIyBkZWZpbmUg
R1RFU1RfT1NfRlJFRUJTRCAxCisjZWxpZiBkZWZpbmVkIF9fRnVjaHNpYV9fCisjIGRlZmluZSBH
VEVTVF9PU19GVUNIU0lBIDEKKyNlbGlmIGRlZmluZWQgX19saW51eF9fCisjIGRlZmluZSBHVEVT
VF9PU19MSU5VWCAxCisjIGlmIGRlZmluZWQgX19BTkRST0lEX18KKyMgIGRlZmluZSBHVEVTVF9P
U19MSU5VWF9BTkRST0lEIDEKKyMgZW5kaWYKKyNlbGlmIGRlZmluZWQgX19NVlNfXworIyBkZWZp
bmUgR1RFU1RfT1NfWk9TIDEKKyNlbGlmIGRlZmluZWQoX19zdW4pICYmIGRlZmluZWQoX19TVlI0
KQorIyBkZWZpbmUgR1RFU1RfT1NfU09MQVJJUyAxCisjZWxpZiBkZWZpbmVkKF9BSVgpCisjIGRl
ZmluZSBHVEVTVF9PU19BSVggMQorI2VsaWYgZGVmaW5lZChfX2hwdXgpCisjIGRlZmluZSBHVEVT
VF9PU19IUFVYIDEKKyNlbGlmIGRlZmluZWQgX19uYXRpdmVfY2xpZW50X18KKyMgZGVmaW5lIEdU
RVNUX09TX05BQ0wgMQorI2VsaWYgZGVmaW5lZCBfX05ldEJTRF9fCisjIGRlZmluZSBHVEVTVF9P
U19ORVRCU0QgMQorI2VsaWYgZGVmaW5lZCBfX09wZW5CU0RfXworIyBkZWZpbmUgR1RFU1RfT1Nf
T1BFTkJTRCAxCisjZWxpZiBkZWZpbmVkIF9fUU5YX18KKyMgZGVmaW5lIEdURVNUX09TX1FOWCAx
CisjZW5kaWYgIC8vIF9fQ1lHV0lOX18KKworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNU
X0lOVEVSTkFMX0dURVNUX1BPUlRfQVJDSF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaAppbmRleCBm
OGJlODA5MjZmODk4N2QzYzk1ODI4NjE2MDIwMTBiZmY2ZTY0ZDZkLi43ODY0OTdkODU0Yzk3ZjFi
NmFiOTM3MmEyNDFjMWZhMTU1YTMwYTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaApAQCAtMjcs
MjkgKzI3LDU3IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQXV0
aG9yczogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCiAvLyBMb3ctbGV2ZWwgdHlw
ZXMgYW5kIHV0aWxpdGllcyBmb3IgcG9ydGluZyBHb29nbGUgVGVzdCB0byB2YXJpb3VzCi0vLyBw
bGF0Zm9ybXMuICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4gIERP
IE5PVCBVU0UKLS8vIFRIRU0gSU4gVVNFUiBDT0RFLgorLy8gcGxhdGZvcm1zLiAgQWxsIG1hY3Jv
cyBlbmRpbmcgd2l0aCBfIGFuZCBzeW1ib2xzIGRlZmluZWQgaW4gYW4KKy8vIGludGVybmFsIG5h
bWVzcGFjZSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuICBDb2RlCisvLyBv
dXRzaWRlIEdvb2dsZSBUZXN0IE1VU1QgTk9UIFVTRSBUSEVNIERJUkVDVExZLiAgTWFjcm9zIHRo
YXQgZG9uJ3QKKy8vIGVuZCB3aXRoIF8gYXJlIHBhcnQgb2YgR29vZ2xlIFRlc3QncyBwdWJsaWMg
QVBJIGFuZCBjYW4gYmUgdXNlZCBieQorLy8gY29kZSBvdXRzaWRlIEdvb2dsZSBUZXN0LgorLy8K
Ky8vIFRoaXMgZmlsZSBpcyBmdW5kYW1lbnRhbCB0byBHb29nbGUgVGVzdC4gIEFsbCBvdGhlciBH
b29nbGUgVGVzdCBzb3VyY2UKKy8vIGZpbGVzIGFyZSBleHBlY3RlZCB0byAjaW5jbHVkZSB0aGlz
LiAgVGhlcmVmb3JlLCBpdCBjYW5ub3QgI2luY2x1ZGUKKy8vIGFueSBvdGhlciBHb29nbGUgVGVz
dCBoZWFkZXIuCisKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKIAogI2lmbmRl
ZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRfSF8KICNkZWZpbmUgR1RF
U1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QT1JUX0hfCiAKLS8vIFRoZSB1c2VyIGNh
biBkZWZpbmUgdGhlIGZvbGxvd2luZyBtYWNyb3MgaW4gdGhlIGJ1aWxkIHNjcmlwdCB0bwotLy8g
Y29udHJvbCBHb29nbGUgVGVzdCdzIGJlaGF2aW9yLiAgSWYgdGhlIHVzZXIgZG9lc24ndCBkZWZp
bmUgYSBtYWNybwotLy8gaW4gdGhpcyBsaXN0LCBHb29nbGUgVGVzdCB3aWxsIGRlZmluZSBpdC4K
Ky8vIEVudmlyb25tZW50LWRlc2NyaWJpbmcgbWFjcm9zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIEdvb2dsZSBUZXN0IGNhbiBiZSB1c2VkIGluIG1hbnkgZGlmZmVy
ZW50IGVudmlyb25tZW50cy4gIE1hY3JvcyBpbgorLy8gdGhpcyBzZWN0aW9uIHRlbGwgR29vZ2xl
IFRlc3Qgd2hhdCBraW5kIG9mIGVudmlyb25tZW50IGl0IGlzIGJlaW5nCisvLyB1c2VkIGluLCBz
dWNoIHRoYXQgR29vZ2xlIFRlc3QgY2FuIHByb3ZpZGUgZW52aXJvbm1lbnQtc3BlY2lmaWMKKy8v
IGZlYXR1cmVzIGFuZCBpbXBsZW1lbnRhdGlvbnMuCisvLworLy8gR29vZ2xlIFRlc3QgdHJpZXMg
dG8gYXV0b21hdGljYWxseSBkZXRlY3QgdGhlIHByb3BlcnRpZXMgb2YgaXRzCisvLyBlbnZpcm9u
bWVudCwgc28gdXNlcnMgdXN1YWxseSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoZXNlCisv
LyBtYWNyb3MuICBIb3dldmVyLCB0aGUgYXV0b21hdGljIGRldGVjdGlvbiBpcyBub3QgcGVyZmVj
dC4KKy8vIFNvbWV0aW1lcyBpdCdzIG5lY2Vzc2FyeSBmb3IgYSB1c2VyIHRvIGRlZmluZSBzb21l
IG9mIHRoZSBmb2xsb3dpbmcKKy8vIG1hY3JvcyBpbiB0aGUgYnVpbGQgc2NyaXB0IHRvIG92ZXJy
aWRlIEdvb2dsZSBUZXN0J3MgZGVjaXNpb25zLgorLy8KKy8vIElmIHRoZSB1c2VyIGRvZXNuJ3Qg
ZGVmaW5lIGEgbWFjcm8gaW4gdGhlIGxpc3QsIEdvb2dsZSBUZXN0IHdpbGwKKy8vIHByb3ZpZGUg
YSBkZWZhdWx0IGRlZmluaXRpb24uICBBZnRlciB0aGlzIGhlYWRlciBpcyAjaW5jbHVkZWQsIGFs
bAorLy8gbWFjcm9zIGluIHRoaXMgbGlzdCB3aWxsIGJlIGRlZmluZWQgdG8gZWl0aGVyIDEgb3Ig
MC4KKy8vCisvLyBOb3RlcyB0byBtYWludGFpbmVyczoKKy8vICAgLSBFYWNoIG1hY3JvIGhlcmUg
aXMgYSB1c2VyLXR3ZWFrYWJsZSBrbm9iOyBkbyBub3QgZ3JvdyB0aGUgbGlzdAorLy8gICAgIGxp
Z2h0bHkuCisvLyAgIC0gVXNlICNpZiB0byBrZXkgb2ZmIHRoZXNlIG1hY3Jvcy4gIERvbid0IHVz
ZSAjaWZkZWYgb3IgIiNpZgorLy8gICAgIGRlZmluZWQoLi4uKSIsIHdoaWNoIHdpbGwgbm90IHdv
cmsgYXMgdGhlc2UgbWFjcm9zIGFyZSBBTFdBWVMKKy8vICAgICBkZWZpbmVkLgogLy8KIC8vICAg
R1RFU1RfSEFTX0NMT05FICAgICAgICAgIC0gRGVmaW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB0
aGF0IGNsb25lKDIpCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzL2lzbid0IGF2
YWlsYWJsZS4KIC8vICAgR1RFU1RfSEFTX0VYQ0VQVElPTlMgICAgIC0gRGVmaW5lIGl0IHRvIDEv
MCB0byBpbmRpY2F0ZSB0aGF0IGV4Y2VwdGlvbnMKIC8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJlIGVuYWJsZWQuCiAvLyAgIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HICAtIERlZmlu
ZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA6OnN0cmluZwotLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpcy9pc24ndCBhdmFpbGFibGUgKHNvbWUgc3lzdGVtcyBkZWZpbmUKLS8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdHJpbmcsIHdoaWNoIGlzIGRpZmZlcmVu
dCB0byBzdGQ6OnN0cmluZykuCi0vLyAgIEdURVNUX0hBU19HTE9CQUxfV1NUUklORyAtIERlZmlu
ZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA6OnN0cmluZwotLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpcy9pc24ndCBhdmFpbGFibGUgKHNvbWUgc3lzdGVtcyBkZWZpbmUKLS8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjp3c3RyaW5nLCB3aGljaCBpcyBkaWZmZXJl
bnQgdG8gc3RkOjp3c3RyaW5nKS4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMv
aXNuJ3QgYXZhaWxhYmxlCisvLyAgIEdURVNUX0hBU19HTE9CQUxfV1NUUklORyAtIERlZmluZSBp
dCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA6OndzdHJpbmcKKy8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlCisvLyAgIEdURVNUX0hBU19QT1NJWF9SRSAg
ICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCBQT1NJWCByZWd1bGFyCisv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zIGFyZS9hcmVuJ3QgYXZh
aWxhYmxlLgogLy8gICBHVEVTVF9IQVNfUFRIUkVBRCAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8w
IHRvIGluZGljYXRlIHRoYXQgPHB0aHJlYWQuaD4KIC8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlLgogLy8gICBHVEVTVF9IQVNfUlRUSSAgICAgICAgICAg
LSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgUlRUSSBpcy9pc24ndApAQCAtNjIs
MTAgKzkwLDE2IEBACiAvLyAgIEdURVNUX0hBU19TRUggICAgICAgICAgICAtIERlZmluZSBpdCB0
byAxLzAgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUKIC8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29tcGlsZXIgc3VwcG9ydHMgTWljcm9zb2Z0J3MgIlN0cnVjdHVyZWQKIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uIEhhbmRsaW5nIi4KKy8vICAgR1RFU1Rf
SEFTX1NUUkVBTV9SRURJUkVDVElPTgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBE
ZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlCisvLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBsYXRmb3JtIHN1cHBvcnRzIEkvTyBzdHJlYW0gcmVkaXJlY3Rpb24g
dXNpbmcKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVwKCkgYW5kIGR1cDIoKS4K
IC8vICAgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgIC0gRGVmaW5lIGl0IHRvIDEvMCB0byBpbmRp
Y2F0ZSB3aGV0aGVyIEdvb2dsZQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0
J3Mgb3duIHRyMSB0dXBsZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYmUKIC8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdXNlZC4gIFVudXNlZCB3aGVuIHRoZSB1c2VyIHNldHMKIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfSEFTX1RSMV9UVVBMRSB0byAwLgorLy8g
ICBHVEVTVF9MQU5HX0NYWDExICAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRl
IHRoYXQgR29vZ2xlIFRlc3QKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYnVp
bGRpbmcgaW4gQysrMTEvQysrOTggbW9kZS4KIC8vICAgR1RFU1RfTElOS0VEX0FTX1NIQVJFRF9M
SUJSQVJZCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIERlZmluZSB0byAxIHdoZW4g
Y29tcGlsaW5nIHRlc3RzIHRoYXQgdXNlCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdvb2dsZSBUZXN0IGFzIGEgc2hhcmVkIGxpYnJhcnkgKGtub3duIGFzCkBAIC03MywyMyArMTA3
LDQzIEBACiAvLyAgIEdURVNUX0NSRUFURV9TSEFSRURfTElCUkFSWQogLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLSBEZWZpbmUgdG8gMSB3aGVuIGNvbXBpbGluZyBHb29nbGUgVGVzdCBp
dHNlbGYKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgYSBzaGFyZWQgbGlicmFy
eS4KLQotLy8gVGhpcyBoZWFkZXIgZGVmaW5lcyB0aGUgZm9sbG93aW5nIHV0aWxpdGllczoKKy8v
ICAgR1RFU1RfREVGQVVMVF9ERUFUSF9URVNUX1NUWUxFCisvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAtIFRoZSBkZWZhdWx0IHZhbHVlIG9mIC0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZS4K
Ky8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxlZ2FjeSBkZWZhdWx0IGhhcyBi
ZWVuICJmYXN0IiBpbiB0aGUgb3BlbgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
b3VyY2UgdmVyc2lvbiBzaW5jZSAyMDA4LiBUaGUgcmVjb21tZW5kZWQgdmFsdWUKKy8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaXMgInRocmVhZHNhZmUiLCBhbmQgY2FuIGJlIHNldCBp
bgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b20vZ3Rlc3QtcG9ydC5oLgor
CisvLyBQbGF0Zm9ybS1pbmRpY2F0aW5nIG1hY3JvcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vCisvLyBNYWNyb3MgaW5kaWNhdGluZyB0aGUgcGxhdGZvcm0gb24gd2hpY2ggR29v
Z2xlIFRlc3QgaXMgYmVpbmcgdXNlZAorLy8gKGEgbWFjcm8gaXMgZGVmaW5lZCB0byAxIGlmIGNv
bXBpbGVkIG9uIHRoZSBnaXZlbiBwbGF0Zm9ybTsKKy8vIG90aGVyd2lzZSBVTkRFRklORUQgLS0g
aXQncyBuZXZlciBkZWZpbmVkIHRvIDAuKS4gIEdvb2dsZSBUZXN0CisvLyBkZWZpbmVzIHRoZXNl
IG1hY3JvcyBhdXRvbWF0aWNhbGx5LiAgQ29kZSBvdXRzaWRlIEdvb2dsZSBUZXN0IE1VU1QKKy8v
IE5PVCBkZWZpbmUgdGhlbS4KIC8vCi0vLyBNYWNyb3MgaW5kaWNhdGluZyB0aGUgY3VycmVudCBw
bGF0Zm9ybSAoZGVmaW5lZCB0byAxIGlmIGNvbXBpbGVkIG9uCi0vLyB0aGUgZ2l2ZW4gcGxhdGZv
cm07IG90aGVyd2lzZSB1bmRlZmluZWQpOgogLy8gICBHVEVTVF9PU19BSVggICAgICAtIElCTSBB
SVgKIC8vICAgR1RFU1RfT1NfQ1lHV0lOICAgLSBDeWd3aW4KLS8vICAgR1RFU1RfT1NfTElOVVgg
ICAgLSBMaW51eAogLy8gICBHVEVTVF9PU19GUkVFQlNEICAtIEZyZWVCU0QKLS8vICAgR1RFU1Rf
T1NfSFVSRCAgICAgLSBHTlUvSHVyZAorLy8gICBHVEVTVF9PU19GVUNIU0lBICAtIEZ1Y2hzaWEK
Ky8vICAgR1RFU1RfT1NfSFBVWCAgICAgLSBIUC1VWAorLy8gICBHVEVTVF9PU19MSU5VWCAgICAt
IExpbnV4CisvLyAgICAgR1RFU1RfT1NfTElOVVhfQU5EUk9JRCAtIEdvb2dsZSBBbmRyb2lkCiAv
LyAgIEdURVNUX09TX01BQyAgICAgIC0gTWFjIE9TIFgKKy8vICAgICBHVEVTVF9PU19JT1MgICAg
LSBpT1MKKy8vICAgR1RFU1RfT1NfTkFDTCAgICAgLSBHb29nbGUgTmF0aXZlIENsaWVudCAoTmFD
bCkKKy8vICAgR1RFU1RfT1NfTkVUQlNEICAgLSBOZXRCU0QKKy8vICAgR1RFU1RfT1NfT1BFTkJT
RCAgLSBPcGVuQlNECisvLyAgIEdURVNUX09TX1FOWCAgICAgIC0gUU5YCiAvLyAgIEdURVNUX09T
X1NPTEFSSVMgIC0gU3VuIFNvbGFyaXMKIC8vICAgR1RFU1RfT1NfU1lNQklBTiAgLSBTeW1iaWFu
CiAvLyAgIEdURVNUX09TX1dJTkRPV1MgIC0gV2luZG93cyAoRGVza3RvcCwgTWluR1csIG9yIE1v
YmlsZSkKIC8vICAgICBHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1AgIC0gV2luZG93cyBEZXNrdG9w
CiAvLyAgICAgR1RFU1RfT1NfV0lORE9XU19NSU5HVyAgICAtIE1pbkdXCiAvLyAgICAgR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUgICAtIFdpbmRvd3MgTW9iaWxlCisvLyAgICAgR1RFU1RfT1NfV0lO
RE9XU19QSE9ORSAgICAtIFdpbmRvd3MgUGhvbmUKKy8vICAgICBHVEVTVF9PU19XSU5ET1dTX1JU
ICAgICAgIC0gV2luZG93cyBTdG9yZSBBcHAvV2luUlQKIC8vICAgR1RFU1RfT1NfWk9TICAgICAg
LSB6L09TCiAvLwogLy8gQW1vbmcgdGhlIHBsYXRmb3JtcywgQ3lnd2luLCBMaW51eCwgTWF4IE9T
IFgsIGFuZCBXaW5kb3dzIGhhdmUgdGhlCkBAIC05OSwyMCArMTUzLDUwIEBACiAvLyBnb29nbGV0
ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20gKHBhdGNoZXMgZm9yIGZpeGluZyB0aGVtIGFy
ZQogLy8gZXZlbiBtb3JlIHdlbGNvbWUhKS4KIC8vCi0vLyBOb3RlIHRoYXQgaXQgaXMgcG9zc2li
bGUgdGhhdCBub25lIG9mIHRoZSBHVEVTVF9PU18qIG1hY3JvcyBhcmUgZGVmaW5lZC4KKy8vIEl0
IGlzIHBvc3NpYmxlIHRoYXQgbm9uZSBvZiB0aGUgR1RFU1RfT1NfKiBtYWNyb3MgYXJlIGRlZmlu
ZWQuCisKKy8vIEZlYXR1cmUtaW5kaWNhdGluZyBtYWNyb3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKy8vCisvLyBNYWNyb3MgaW5kaWNhdGluZyB3aGljaCBHb29nbGUgVGVzdCBmZWF0
dXJlcyBhcmUgYXZhaWxhYmxlIChhIG1hY3JvCisvLyBpcyBkZWZpbmVkIHRvIDEgaWYgdGhlIGNv
cnJlc3BvbmRpbmcgZmVhdHVyZSBpcyBzdXBwb3J0ZWQ7CisvLyBvdGhlcndpc2UgVU5ERUZJTkVE
IC0tIGl0J3MgbmV2ZXIgZGVmaW5lZCB0byAwLikuICBHb29nbGUgVGVzdAorLy8gZGVmaW5lcyB0
aGVzZSBtYWNyb3MgYXV0b21hdGljYWxseS4gIENvZGUgb3V0c2lkZSBHb29nbGUgVGVzdCBNVVNU
CisvLyBOT1QgZGVmaW5lIHRoZW0uCisvLworLy8gVGhlc2UgbWFjcm9zIGFyZSBwdWJsaWMgc28g
dGhhdCBwb3J0YWJsZSB0ZXN0cyBjYW4gYmUgd3JpdHRlbi4KKy8vIFN1Y2ggdGVzdHMgdHlwaWNh
bGx5IHN1cnJvdW5kIGNvZGUgdXNpbmcgYSBmZWF0dXJlIHdpdGggYW4gI2lmCisvLyB3aGljaCBj
b250cm9scyB0aGF0IGNvZGUuICBGb3IgZXhhbXBsZToKKy8vCisvLyAjaWYgR1RFU1RfSEFTX0RF
QVRIX1RFU1QKKy8vICAgRVhQRUNUX0RFQVRIKERvU29tZXRoaW5nRGVhZGx5KCkpOworLy8gI2Vu
ZGlmCiAvLwotLy8gTWFjcm9zIGluZGljYXRpbmcgYXZhaWxhYmxlIEdvb2dsZSBUZXN0IGZlYXR1
cmVzIChkZWZpbmVkIHRvIDEgaWYKLS8vIHRoZSBjb3JyZXNwb25kaW5nIGZlYXR1cmUgaXMgc3Vw
cG9ydGVkOyBvdGhlcndpc2UgdW5kZWZpbmVkKToKIC8vICAgR1RFU1RfSEFTX0NPTUJJTkUgICAg
ICAtIHRoZSBDb21iaW5lKCkgZnVuY3Rpb24gKGZvciB2YWx1ZS1wYXJhbWV0ZXJpemVkCiAvLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cykKIC8vICAgR1RFU1RfSEFTX0RFQVRIX1RF
U1QgICAtIGRlYXRoIHRlc3RzCi0vLyAgIEdURVNUX0hBU19QQVJBTV9URVNUICAgLSB2YWx1ZS1w
YXJhbWV0ZXJpemVkIHRlc3RzCiAvLyAgIEdURVNUX0hBU19UWVBFRF9URVNUICAgLSB0eXBlZCB0
ZXN0cwogLy8gICBHVEVTVF9IQVNfVFlQRURfVEVTVF9QIC0gdHlwZS1wYXJhbWV0ZXJpemVkIHRl
c3RzCi0vLyAgIEdURVNUX1VTRVNfUE9TSVhfUkUgICAgLSBlbmhhbmNlZCBQT1NJWCByZWdleCBp
cyB1c2VkLgorLy8gICBHVEVTVF9JU19USFJFQURTQUZFICAgIC0gR29vZ2xlIFRlc3QgaXMgdGhy
ZWFkLXNhZmUuCisvLyAgIEdPT0dMRVRFU1RfQ00wMDA3IERPIE5PVCBERUxFVEUKKy8vICAgR1RF
U1RfVVNFU19QT1NJWF9SRSAgICAtIGVuaGFuY2VkIFBPU0lYIHJlZ2V4IGlzIHVzZWQuIERvIG5v
dCBjb25mdXNlIHdpdGgKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX0hBU19Q
T1NJWF9SRSAoc2VlIGFib3ZlKSB3aGljaCB1c2VycyBjYW4KKy8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlZmluZSB0aGVtc2VsdmVzLgogLy8gICBHVEVTVF9VU0VTX1NJTVBMRV9SRSAg
IC0gb3VyIG93biBzaW1wbGUgcmVnZXggaXMgdXNlZDsKLS8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoZSBhYm92ZSB0d28gYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4KKy8vICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoZSBhYm92ZSBSRVxiKHMpIGFyZSBtdXR1YWxseSBleGNsdXNp
dmUuCiAvLyAgIEdURVNUX0NBTl9DT01QQVJFX05VTEwgLSBhY2NlcHRzIHVudHlwZWQgTlVMTCBp
biBFWFBFQ1RfRVEoKS4KKworLy8gTWlzYyBwdWJsaWMgbWFjcm9zCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0KKy8vCisvLyAgIEdURVNUX0ZMQUcoZmxhZ19uYW1lKSAgLSByZWZlcmVuY2VzIHRoZSB2
YXJpYWJsZSBjb3JyZXNwb25kaW5nIHRvCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGUgZ2l2ZW4gR29vZ2xlIFRlc3QgZmxhZy4KKworLy8gSW50ZXJuYWwgdXRpbGl0aWVzCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBUaGUgZm9sbG93aW5nIG1hY3JvcyBhbmQgdXRpbGl0
aWVzIGFyZSBmb3IgR29vZ2xlIFRlc3QncyBJTlRFUk5BTAorLy8gdXNlIG9ubHkuICBDb2RlIG91
dHNpZGUgR29vZ2xlIFRlc3QgTVVTVCBOT1QgVVNFIFRIRU0gRElSRUNUTFkuCiAvLwogLy8gTWFj
cm9zIGZvciBiYXNpYyBDKysgY29kaW5nOgogLy8gICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9D
S0VSXyAtIGZvciBkaXNhYmxpbmcgYSBnY2Mgd2FybmluZy4KQEAgLTEyMSwyNSArMjA1LDM0IEBA
CiAvLyAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8gICAtIGRpc2FibGVzIG9wZXJhdG9yPS4KIC8v
ICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyAtIGRpc2FibGVzIGNvcHkgY3RvciBh
bmQgb3BlcmF0b3I9LgogLy8gICBHVEVTVF9NVVNUX1VTRV9SRVNVTFRfICAgLSBkZWNsYXJlcyB0
aGF0IGEgZnVuY3Rpb24ncyByZXN1bHQgbXVzdCBiZSB1c2VkLgorLy8gICBHVEVTVF9JTlRFTlRJ
T05BTF9DT05TVF9DT05EX1BVU0hfIC0gc3RhcnQgY29kZSBzZWN0aW9uIHdoZXJlIE1TVkMgQzQx
MjcgaXMKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNz
ZWQgKGNvbnN0YW50IGNvbmRpdGlvbmFsKS4KKy8vICAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1Rf
Q09ORF9QT1BfICAtIGZpbmlzaCBjb2RlIHNlY3Rpb24gd2hlcmUgTVNWQyBDNDEyNworLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgc3VwcHJlc3NlZC4KKy8vCisv
LyBDKysxMSBmZWF0dXJlIHdyYXBwZXJzOgorLy8KKy8vICAgdGVzdGluZzo6aW50ZXJuYWw6OmZv
cndhcmQgLSBwb3J0YWJpbGl0eSB3cmFwcGVyIGZvciBzdGQ6OmZvcndhcmQuCisvLyAgIHRlc3Rp
bmc6OmludGVybmFsOjptb3ZlICAtIHBvcnRhYmlsaXR5IHdyYXBwZXIgZm9yIHN0ZDo6bW92ZS4K
IC8vCiAvLyBTeW5jaHJvbml6YXRpb246CiAvLyAgIE11dGV4LCBNdXRleExvY2ssIFRocmVhZExv
Y2FsLCBHZXRUaHJlYWRDb3VudCgpCi0vLyAgICAgICAgICAgICAgICAgIC0gc3luY2hyb25pemF0
aW9uIHByaW1pdGl2ZXMuCi0vLyAgIEdURVNUX0lTX1RIUkVBRFNBRkUgLSBkZWZpbmVkIHRvIDEg
dG8gaW5kaWNhdGUgdGhhdCB0aGUgYWJvdmUKLS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN5
bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGhhdmUgcmVhbCBpbXBsZW1lbnRhdGlvbnMKLS8vICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZCBHb29nbGUgVGVzdCBpcyB0aHJlYWQtc2FmZTsgb3Ig
MCBvdGhlcndpc2UuCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHN5bmNocm9uaXph
dGlvbiBwcmltaXRpdmVzLgogLy8KIC8vIFRlbXBsYXRlIG1ldGEgcHJvZ3JhbW1pbmc6CiAvLyAg
IGlzX3BvaW50ZXIgICAgIC0gYXMgaW4gVFIxOyBuZWVkZWQgb24gU3ltYmlhbiBhbmQgSUJNIFhM
IEMvQysrIG9ubHkuCisvLyAgIEl0ZXJhdG9yVHJhaXRzIC0gcGFydGlhbCBpbXBsZW1lbnRhdGlv
biBvZiBzdGQ6Oml0ZXJhdG9yX3RyYWl0cywgd2hpY2gKKy8vICAgICAgICAgICAgICAgICAgICBp
cyBub3QgYXZhaWxhYmxlIGluIGxpYkNzdGQgd2hlbiBjb21waWxlZCB3aXRoIFN1biBDKysuCiAv
LwogLy8gU21hcnQgcG9pbnRlcnM6CiAvLyAgIHNjb3BlZF9wdHIgICAgIC0gYXMgaW4gVFIyLgog
Ly8KIC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnM6CiAvLyAgIFJFICAgICAgICAgICAgIC0gYSBzaW1w
bGUgcmVndWxhciBleHByZXNzaW9uIGNsYXNzIHVzaW5nIHRoZSBQT1NJWAotLy8gICAgICAgICAg
ICAgICAgICAgIEV4dGVuZGVkIFJlZ3VsYXIgRXhwcmVzc2lvbiBzeW50YXguICBOb3QgYXZhaWxh
YmxlIG9uCi0vLyAgICAgICAgICAgICAgICAgICAgV2luZG93cy4KLS8vCisvLyAgICAgICAgICAg
ICAgICAgICAgRXh0ZW5kZWQgUmVndWxhciBFeHByZXNzaW9uIHN5bnRheCBvbiBVTklYLWxpa2Ug
cGxhdGZvcm1zCisvLyAgICAgICAgICAgICAgICAgICAgR09PR0xFVEVTVF9DTTAwMDggRE8gTk9U
IERFTEVURQorLy8gICAgICAgICAgICAgICAgICAgIG9yIGEgcmVkdWNlZCByZWd1bGFyIGV4Y2Vw
dGlvbiBzeW50YXggb24gb3RoZXIKKy8vICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybXMsIGlu
Y2x1ZGluZyBXaW5kb3dzLgogLy8gTG9nZ2luZzoKIC8vICAgR1RFU1RfTE9HXygpICAgLSBsb2dz
IG1lc3NhZ2VzIGF0IHRoZSBzcGVjaWZpZWQgc2V2ZXJpdHkgbGV2ZWwuCiAvLyAgIExvZ1RvU3Rk
ZXJyKCkgIC0gZGlyZWN0cyBhbGwgbG9nIG1lc3NhZ2VzIHRvIHN0ZGVyci4KQEAgLTE2MCwxMCAr
MjUzLDkgQEAKIC8vICAgQmlnZ2VzdEludCAgICAgLSB0aGUgYmlnZ2VzdCBzaWduZWQgaW50ZWdl
ciB0eXBlLgogLy8KIC8vIENvbW1hbmQtbGluZSB1dGlsaXRpZXM6Ci0vLyAgIEdURVNUX0ZMQUco
KSAgICAgICAtIHJlZmVyZW5jZXMgYSBmbGFnLgogLy8gICBHVEVTVF9ERUNMQVJFXyooKSAgLSBk
ZWNsYXJlcyBhIGZsYWcuCiAvLyAgIEdURVNUX0RFRklORV8qKCkgICAtIGRlZmluZXMgYSBmbGFn
LgotLy8gICBHZXRBcmd2cygpICAgICAgICAgLSByZXR1cm5zIHRoZSBjb21tYW5kIGxpbmUgYXMg
YSB2ZWN0b3Igb2Ygc3RyaW5ncy4KKy8vICAgR2V0SW5qZWN0YWJsZUFyZ3ZzKCkgLSByZXR1cm5z
IHRoZSBjb21tYW5kIGxpbmUgYXMgYSB2ZWN0b3Igb2Ygc3RyaW5ncy4KIC8vCiAvLyBFbnZpcm9u
bWVudCB2YXJpYWJsZSB1dGlsaXRpZXM6CiAvLyAgIEdldEVudigpICAgICAgICAgICAgIC0gZ2V0
cyB0aGUgdmFsdWUgb2YgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCkBAIC0xNzEsMTcxICsyNjMs
MzA1IEBACiAvLyAgIEludDMyRnJvbUdUZXN0RW52KCkgIC0gcGFyc2VzIGFuIEludDMyIGVudmly
b25tZW50IHZhcmlhYmxlLgogLy8gICBTdHJpbmdGcm9tR1Rlc3RFbnYoKSAtIHBhcnNlcyBhIHN0
cmluZyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KIAotI2luY2x1ZGUgPHN0ZGRlZi5oPiAgLy8gRm9y
IHB0cmRpZmZfdAorI2luY2x1ZGUgPGN0eXBlLmg+ICAgLy8gZm9yIGlzc3BhY2UsIGV0YworI2lu
Y2x1ZGUgPHN0ZGRlZi5oPiAgLy8gZm9yIHB0cmRpZmZfdAogI2luY2x1ZGUgPHN0ZGxpYi5oPgog
I2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaWZuZGVmIF9XSU4zMl9X
Q0UKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgorIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyMgaW5j
bHVkZSA8c3lzL3N0YXQuaD4KICNlbmRpZiAgLy8gIV9XSU4zMl9XQ0UKIAotI2luY2x1ZGUgPHd0
Zi9QbGF0Zm9ybS5oPgotI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KLSNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0V4cG9ydE1hY3Jvcy5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpZiBkZWZpbmVkIF9fQVBQTEVfXwor
IyBpbmNsdWRlIDxBdmFpbGFiaWxpdHlNYWNyb3MuaD4KKyMgaW5jbHVkZSA8VGFyZ2V0Q29uZGl0
aW9uYWxzLmg+CisjZW5kaWYKIAorLy8gQnJpbmdzIGluIHRoZSBkZWZpbml0aW9uIG9mIEhBU19H
TE9CQUxfU1RSSU5HLiAgVGhpcyBtdXN0IGJlIGRvbmUKKy8vIEJFRk9SRSB3ZSB0ZXN0IEhBU19H
TE9CQUxfU1RSSU5HLgorI2luY2x1ZGUgPHN0cmluZz4gIC8vIE5PTElOVAorI2luY2x1ZGUgPGFs
Z29yaXRobT4gIC8vIE5PTElOVAogI2luY2x1ZGUgPGlvc3RyZWFtPiAgLy8gTk9MSU5UCiAjaW5j
bHVkZSA8c3N0cmVhbT4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHN0cmluZz4gIC8vIE5PTElOVAor
I2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9yPiAgLy8gTk9MSU5UCisKKyNpbmNs
dWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LWFyY2guaCIKKyNpbmNsdWRlICJndGVzdC9p
bnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oIgorCisjaWYgIWRlZmluZWQoR1RFU1RfREVWX0VN
QUlMXykKKyMgZGVmaW5lIEdURVNUX0RFVl9FTUFJTF8gImdvb2dsZXRlc3RmcmFtZXdvcmtAQGdv
b2dsZWdyb3Vwcy5jb20iCisjIGRlZmluZSBHVEVTVF9GTEFHX1BSRUZJWF8gImd0ZXN0XyIKKyMg
ZGVmaW5lIEdURVNUX0ZMQUdfUFJFRklYX0RBU0hfICJndGVzdC0iCisjIGRlZmluZSBHVEVTVF9G
TEFHX1BSRUZJWF9VUFBFUl8gIkdURVNUXyIKKyMgZGVmaW5lIEdURVNUX05BTUVfICJHb29nbGUg
VGVzdCIKKyMgZGVmaW5lIEdURVNUX1BST0pFQ1RfVVJMXyAiaHR0cHM6Ly9naXRodWIuY29tL2dv
b2dsZS9nb29nbGV0ZXN0LyIKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfREVWX0VNQUlMXykK
IAotI2RlZmluZSBHVEVTVF9ERVZfRU1BSUxfICJnb29nbGV0ZXN0ZnJhbWV3b3JrQEBnb29nbGVn
cm91cHMuY29tIgotI2RlZmluZSBHVEVTVF9GTEFHX1BSRUZJWF8gImd0ZXN0XyIKLSNkZWZpbmUg
R1RFU1RfRkxBR19QUkVGSVhfREFTSF8gImd0ZXN0LSIKLSNkZWZpbmUgR1RFU1RfRkxBR19QUkVG
SVhfVVBQRVJfICJHVEVTVF8iCi0jZGVmaW5lIEdURVNUX05BTUVfICJHb29nbGUgVGVzdCIKLSNk
ZWZpbmUgR1RFU1RfUFJPSkVDVF9VUkxfICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xl
dGVzdC8iCisjaWYgIWRlZmluZWQoR1RFU1RfSU5JVF9HT09HTEVfVEVTVF9OQU1FXykKKyMgZGVm
aW5lIEdURVNUX0lOSVRfR09PR0xFX1RFU1RfTkFNRV8gInRlc3Rpbmc6OkluaXRHb29nbGVUZXN0
IgorI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9JTklUX0dPT0dMRV9URVNUX05BTUVfKQogCiAv
LyBEZXRlcm1pbmVzIHRoZSB2ZXJzaW9uIG9mIGdjYyB0aGF0IGlzIHVzZWQgdG8gY29tcGlsZSB0
aGlzLgogI2lmZGVmIF9fR05VQ19fCiAvLyA0MDMwMiBtZWFucyB2ZXJzaW9uIDQuMy4yLgotI2Rl
ZmluZSBHVEVTVF9HQ0NfVkVSXyBcCisjIGRlZmluZSBHVEVTVF9HQ0NfVkVSXyBcCiAgICAgKF9f
R05VQ19fKjEwMDAwICsgX19HTlVDX01JTk9SX18qMTAwICsgX19HTlVDX1BBVENITEVWRUxfXykK
ICNlbmRpZiAgLy8gX19HTlVDX18KIAotLy8gRGV0ZXJtaW5lcyB0aGUgcGxhdGZvcm0gb24gd2hp
Y2ggR29vZ2xlIFRlc3QgaXMgY29tcGlsZWQuCi0jaWZkZWYgX19DWUdXSU5fXwotI2RlZmluZSBH
VEVTVF9PU19DWUdXSU4gMQotI2VsaWYgZGVmaW5lZCBfX1NZTUJJQU4zMl9fCi0jZGVmaW5lIEdU
RVNUX09TX1NZTUJJQU4gMQotI2VsaWYgZGVmaW5lZCBfV0lOMzIKLSNkZWZpbmUgR1RFU1RfT1Nf
V0lORE9XUyAxCi0jaWZkZWYgX1dJTjMyX1dDRQotI2RlZmluZSBHVEVTVF9PU19XSU5ET1dTX01P
QklMRSAxCi0jZWxpZiBkZWZpbmVkKF9fTUlOR1dfXykgfHwgZGVmaW5lZChfX01JTkdXMzJfXykK
LSNkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19NSU5HVyAxCisvLyBNYWNyb3MgZm9yIGRpc2FibGlu
ZyBNaWNyb3NvZnQgVmlzdWFsIEMrKyB3YXJuaW5ncy4KKy8vCisvLyAgIEdURVNUX0RJU0FCTEVf
TVNDX1dBUk5JTkdTX1BVU0hfKDQ4MDAgNDM4NSkKKy8vICAgLyogY29kZSB0aGF0IHRyaWdnZXJz
IHdhcm5pbmdzIEM0ODAwIGFuZCBDNDM4NSAqLworLy8gICBHVEVTVF9ESVNBQkxFX01TQ19XQVJO
SU5HU19QT1BfKCkKKyNpZiBfTVNDX1ZFUiA+PSAxNDAwCisjIGRlZmluZSBHVEVTVF9ESVNBQkxF
X01TQ19XQVJOSU5HU19QVVNIXyh3YXJuaW5ncykgXAorICAgIF9fcHJhZ21hKHdhcm5pbmcocHVz
aCkpICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9fcHJhZ21hKHdhcm5pbmcoZGlzYWJs
ZTogd2FybmluZ3MpKQorIyBkZWZpbmUgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygp
ICAgICAgICAgIFwKKyAgICBfX3ByYWdtYSh3YXJuaW5nKHBvcCkpCiAjZWxzZQotI2RlZmluZSBH
VEVTVF9PU19XSU5ET1dTX0RFU0tUT1AgMQotI2VuZGlmICAvLyBfV0lOMzJfV0NFCi0jZWxpZiBk
ZWZpbmVkIF9fQVBQTEVfXwotI2RlZmluZSBHVEVTVF9PU19NQUMgMQotI2VsaWYgZGVmaW5lZCBf
X2xpbnV4X18KLSNkZWZpbmUgR1RFU1RfT1NfTElOVVggMQotI2VsaWYgZGVmaW5lZCBfX0dOVV9f
Ci0jZGVmaW5lIEdURVNUX09TX0hVUkQgMQotI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwg
ZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9rZXJuZWxfXykKLSNk
ZWZpbmUgR1RFU1RfT1NfRlJFRUJTRCAxCi0jZWxpZiBkZWZpbmVkIF9fTVZTX18KLSNkZWZpbmUg
R1RFU1RfT1NfWk9TIDEKLSNlbGlmIGRlZmluZWQoX19zdW4pICYmIGRlZmluZWQoX19TVlI0KQot
I2RlZmluZSBHVEVTVF9PU19TT0xBUklTIDEKLSNlbGlmIGRlZmluZWQoX0FJWCkKLSNkZWZpbmUg
R1RFU1RfT1NfQUlYIDEKLSNlbmRpZiAgLy8gX19DWUdXSU5fXwotCi0jaWYgR1RFU1RfT1NfQ1lH
V0lOIHx8IEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19TWU1CSUFO
IHx8IFwKLSAgICBHVEVTVF9PU19TT0xBUklTIHx8IEdURVNUX09TX0FJWCB8fCBHVEVTVF9PU19G
UkVFQlNEIHx8IEdURVNUX09TX0hVUkQKKy8vIE9sZGVyIHZlcnNpb25zIG9mIE1TVkMgZG9uJ3Qg
aGF2ZSBfX3ByYWdtYS4KKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hf
KHdhcm5pbmdzKQorIyBkZWZpbmUgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCisj
ZW5kaWYKKworLy8gQ2xhbmcgb24gV2luZG93cyBkb2VzIG5vdCB1bmRlcnN0YW5kIE1TVkMncyBw
cmFnbWEgd2FybmluZy4KKy8vIFdlIG5lZWQgY2xhbmctc3BlY2lmaWMgd2F5IHRvIGRpc2FibGUg
ZnVuY3Rpb24gZGVwcmVjYXRpb24gd2FybmluZy4KKyNpZmRlZiBfX2NsYW5nX18KKyMgZGVmaW5l
IEdURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVTSF8oKSAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgX1ByYWdtYSgiY2xhbmcgZGlhZ25vc3RpYyBwdXNoIikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9QcmFnbWEoImNsYW5nIGRpYWdub3N0aWMgaWdu
b3JlZCBcIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNcIiIpIFwKKyAgICBfUHJhZ21hKCJjbGFu
ZyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV2RlcHJlY2F0ZWQtaW1wbGVtZW50YXRpb25zXCIiKQor
I2RlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BPUF8oKSBcCisgICAgX1ByYWdt
YSgiY2xhbmcgZGlhZ25vc3RpYyBwb3AiKQorI2Vsc2UKKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVf
TVNDX0RFUFJFQ0FURURfUFVTSF8oKSBcCisgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1Nf
UFVTSF8oNDk5NikKKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUE9QXygp
IFwKKyAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKyNlbmRpZgorCisjaWZu
ZGVmIEdURVNUX0xBTkdfQ1hYMTEKKy8vIGdjYyBhbmQgY2xhbmcgZGVmaW5lIF9fR1hYX0VYUEVS
SU1FTlRBTF9DWFgwWF9fIHdoZW4KKy8vIC1zdGQ9e2MsZ251fSsrezB4LDExfSBpcyBwYXNzZWQu
ICBUaGUgQysrMTEgc3RhbmRhcmQgc3BlY2lmaWVzIGEKKy8vIHZhbHVlIGZvciBfX2NwbHVzcGx1
cywgYW5kIHJlY2VudCB2ZXJzaW9ucyBvZiBjbGFuZywgZ2NjLCBhbmQKKy8vIHByb2JhYmx5IG90
aGVyIGNvbXBpbGVycyBzZXQgdGhhdCB0b28gaW4gQysrMTEgbW9kZS4KKyMgaWYgX19HWFhfRVhQ
RVJJTUVOVEFMX0NYWDBYX18gfHwgX19jcGx1c3BsdXMgPj0gMjAxMTAzTCB8fCBfTVNDX1ZFUiA+
PSAxOTAwCisvLyBDb21waWxpbmcgaW4gYXQgbGVhc3QgQysrMTEgbW9kZS4KKyMgIGRlZmluZSBH
VEVTVF9MQU5HX0NYWDExIDEKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0xBTkdfQ1hYMTEgMAor
IyBlbmRpZgorI2VuZGlmCisKKy8vIERpc3RpbmN0IGZyb20gQysrMTEgbGFuZ3VhZ2Ugc3VwcG9y
dCwgc29tZSBlbnZpcm9ubWVudHMgZG9uJ3QgcHJvdmlkZQorLy8gcHJvcGVyIEMrKzExIGxpYnJh
cnkgc3VwcG9ydC4gTm90YWJseSwgaXQncyBwb3NzaWJsZSB0byBidWlsZCBpbgorLy8gQysrMTEg
bW9kZSB3aGVuIHRhcmdldGluZyBNYWMgT1MgWCAxMC42LCB3aGljaCBoYXMgYW4gb2xkIGxpYnN0
ZGMrKworLy8gd2l0aCBubyBDKysxMSBzdXBwb3J0LgorLy8KKy8vIGxpYnN0ZGMrKyBoYXMgc3Vm
ZmljaWVudCBDKysxMSBzdXBwb3J0IGFzIG9mIEdDQyA0LjYuMCwgX19HTElCQ1hYX18KKy8vIDIw
MTEwMzI1LCBidXQgbWFpbnRlbmFuY2UgcmVsZWFzZXMgaW4gdGhlIDQuNCBhbmQgNC41IHNlcmll
cyBmb2xsb3dlZAorLy8gdGhpcyBkYXRlLCBzbyBjaGVjayBmb3IgdGhvc2UgdmVyc2lvbnMgYnkg
dGhlaXIgZGF0ZSBzdGFtcHMuCisvLyBodHRwczovL2djYy5nbnUub3JnL29ubGluZWRvY3MvbGli
c3RkYysrL21hbnVhbC9hYmkuaHRtbCNhYmkudmVyc2lvbmluZworI2lmIEdURVNUX0xBTkdfQ1hY
MTEgJiYgXAorICAgICghZGVmaW5lZChfX0dMSUJDWFhfXykgfHwgKCBcCisgICAgICAgIF9fR0xJ
QkNYWF9fID49IDIwMTEwMzI1dWwgJiYgIC8qIEdDQyA+PSA0LjYuMCAqLyBcCisgICAgICAgIC8q
IEJsYWNrbGlzdCBvZiBwYXRjaCByZWxlYXNlcyBvZiBvbGRlciBicmFuY2hlczogKi8gXAorICAg
ICAgICBfX0dMSUJDWFhfXyAhPSAyMDExMDQxNnVsICYmICAvKiBHQ0MgNC40LjYgKi8gXAorICAg
ICAgICBfX0dMSUJDWFhfXyAhPSAyMDEyMDMxM3VsICYmICAvKiBHQ0MgNC40LjcgKi8gXAorICAg
ICAgICBfX0dMSUJDWFhfXyAhPSAyMDExMDQyOHVsICYmICAvKiBHQ0MgNC41LjMgKi8gXAorICAg
ICAgICBfX0dMSUJDWFhfXyAhPSAyMDEyMDcwMnVsKSkgICAvKiBHQ0MgNC41LjQgKi8KKyMgZGVm
aW5lIEdURVNUX1NURExJQl9DWFgxMSAxCisjZW5kaWYKKworLy8gT25seSB1c2UgQysrMTEgbGli
cmFyeSBmZWF0dXJlcyBpZiB0aGUgbGlicmFyeSBwcm92aWRlcyB0aGVtLgorI2lmIEdURVNUX1NU
RExJQl9DWFgxMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9CRUdJTl9BTkRfRU5EXyAxCisjIGRl
ZmluZSBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8gMQorIyBpZiAhZGVmaW5lZChfTVNDX1ZF
UikgfHwgKF9NU0NfRlVMTF9WRVIgPj0gMTkwMDIzODI0KQorLy8gd29ya3Mgb25seSB3aXRoIFZT
MjAxNVUyIGFuZCBiZXR0ZXIKKyMgICBkZWZpbmUgR1RFU1RfSEFTX1NURF9GVU5DVElPTl8gMQor
IyBlbmRpZgorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9JTklUSUFMSVpFUl9MSVNUXyAxCisjIGRl
ZmluZSBHVEVTVF9IQVNfU1REX01PVkVfIDEKKyMgZGVmaW5lIEdURVNUX0hBU19TVERfVU5JUVVF
X1BUUl8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9TSEFSRURfUFRSXyAxCisjIGRlZmluZSBH
VEVTVF9IQVNfVU5PUkRFUkVEX01BUF8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX1VOT1JERVJFRF9T
RVRfIDEKKyNlbmRpZgorCisvLyBDKysxMSBzcGVjaWZpZXMgdGhhdCA8dHVwbGU+IHByb3ZpZGVz
IHN0ZDo6dHVwbGUuCisvLyBTb21lIHBsYXRmb3JtcyBzdGlsbCBtaWdodCBub3QgaGF2ZSBpdCwg
aG93ZXZlci4KKyNpZiBHVEVTVF9MQU5HX0NYWDExCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX1RV
UExFXyAxCisjIGlmIGRlZmluZWQoX19jbGFuZ19fKQorLy8gSW5zcGlyZWQgYnkKKy8vIGh0dHBz
Oi8vY2xhbmcubGx2bS5vcmcvZG9jcy9MYW5ndWFnZUV4dGVuc2lvbnMuaHRtbCNpbmNsdWRlLWZp
bGUtY2hlY2tpbmctbWFjcm9zCisjICBpZiBkZWZpbmVkKF9faGFzX2luY2x1ZGUpICYmICFfX2hh
c19pbmNsdWRlKDx0dXBsZT4pCisjICAgdW5kZWYgR1RFU1RfSEFTX1NURF9UVVBMRV8KKyMgIGVu
ZGlmCisjIGVsaWYgZGVmaW5lZChfTVNDX1ZFUikKKy8vIEluc3BpcmVkIGJ5IGJvb3N0L2NvbmZp
Zy9zdGRsaWIvZGlua3Vtd2FyZS5ocHAKKyMgIGlmIGRlZmluZWQoX0NQUExJQl9WRVIpICYmIF9D
UFBMSUJfVkVSIDwgNTIwCisjICAgdW5kZWYgR1RFU1RfSEFTX1NURF9UVVBMRV8KKyMgIGVuZGlm
CisjIGVsaWYgZGVmaW5lZChfX0dMSUJDWFhfXykKKy8vIEluc3BpcmVkIGJ5IGJvb3N0L2NvbmZp
Zy9zdGRsaWIvbGlic3RkY3BwMy5ocHAsCisvLyBodHRwOi8vZ2NjLmdudS5vcmcvZ2NjLTQuMi9j
aGFuZ2VzLmh0bWwgYW5kCisvLyBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNDAyMjcw
NDQ0MjkvZ2NjLmdudS5vcmcvb25saW5lZG9jcy9saWJzdGRjKysvbWFudWFsL2JrMDFwdDAxY2gw
MS5odG1sI21hbnVhbC5pbnRyby5zdGF0dXMuc3RhbmRhcmQuMjAweAorIyAgaWYgX19HTlVDX18g
PCA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgMikKKyMgICB1bmRlZiBH
VEVTVF9IQVNfU1REX1RVUExFXworIyAgZW5kaWYKKyMgZW5kaWYKKyNlbmRpZgorCisvLyBCcmlu
Z3MgaW4gZGVmaW5pdGlvbnMgZm9yIGZ1bmN0aW9ucyB1c2VkIGluIHRoZSB0ZXN0aW5nOjppbnRl
cm5hbDo6cG9zaXgKKy8vIG5hbWVzcGFjZSAocmVhZCwgd3JpdGUsIGNsb3NlLCBjaGRpciwgaXNh
dHR5LCBzdGF0KS4gV2UgZG8gbm90IGN1cnJlbnRseQorLy8gdXNlIHRoZW0gb24gV2luZG93cyBN
b2JpbGUuCisjaWYgR1RFU1RfT1NfV0lORE9XUworIyBpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKKyMgIGluY2x1ZGUgPGRpcmVjdC5oPgorIyAgaW5jbHVkZSA8aW8uaD4KKyMgZW5kaWYKKy8v
IEluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBpbmNsdWRlIDx3aW5kb3dzLmg+LCB1c2UgZm9y
d2FyZCBkZWNsYXJhdGlvbgorI2lmIEdURVNUX09TX1dJTkRPV1NfTUlOR1cgJiYgIWRlZmluZWQo
X19NSU5HVzY0X1ZFUlNJT05fTUFKT1IpCisvLyBNaW5HVyBkZWZpbmVkIF9DUklUSUNBTF9TRUNU
SU9OIGFuZCBfUlRMX0NSSVRJQ0FMX1NFQ1RJT04gYXMgdHdvCisvLyBzZXBhcmF0ZSAoZXF1aXZh
bGVudCkgc3RydWN0cywgaW5zdGVhZCBvZiB1c2luZyB0eXBlZGVmCit0eXBlZGVmIHN0cnVjdCBf
Q1JJVElDQUxfU0VDVElPTiBHVEVTVF9DUklUSUNBTF9TRUNUSU9OOworI2Vsc2UKKy8vIEFzc3Vt
ZSBDUklUSUNBTF9TRUNUSU9OIGlzIGEgdHlwZWRlZiBvZiBfUlRMX0NSSVRJQ0FMX1NFQ1RJT04u
CisvLyBUaGlzIGFzc3VtcHRpb24gaXMgdmVyaWZpZWQgYnkKKy8vIFdpbmRvd3NUeXBlc1Rlc3Qu
Q1JJVElDQUxfU0VDVElPTklzX1JUTF9DUklUSUNBTF9TRUNUSU9OLgordHlwZWRlZiBzdHJ1Y3Qg
X1JUTF9DUklUSUNBTF9TRUNUSU9OIEdURVNUX0NSSVRJQ0FMX1NFQ1RJT047CisjZW5kaWYKKyNl
bHNlCisvLyBUaGlzIGFzc3VtZXMgdGhhdCBub24tV2luZG93cyBPU2VzIHByb3ZpZGUgdW5pc3Rk
LmguIEZvciBPU2VzIHdoZXJlIHRoaXMKKy8vIGlzIG5vdCB0aGUgY2FzZSwgd2UgbmVlZCB0byBp
bmNsdWRlIGhlYWRlcnMgdGhhdCBwcm92aWRlIHRoZSBmdW5jdGlvbnMKKy8vIG1lbnRpb25lZCBh
Ym92ZS4KKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjIGluY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjaWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRAorLy8g
VXNlZCB0byBkZWZpbmUgX19BTkRST0lEX0FQSV9fIG1hdGNoaW5nIHRoZSB0YXJnZXQgTkRLIEFQ
SSBsZXZlbC4KKyMgIGluY2x1ZGUgPGFuZHJvaWQvYXBpLWxldmVsLmg+ICAvLyBOT0xJTlQKKyNl
bmRpZgorCisvLyBEZWZpbmVzIHRoaXMgdG8gdHJ1ZSBpZmYgR29vZ2xlIFRlc3QgY2FuIHVzZSBQ
T1NJWCByZWd1bGFyIGV4cHJlc3Npb25zLgorI2lmbmRlZiBHVEVTVF9IQVNfUE9TSVhfUkUKKyMg
aWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRAorLy8gT24gQW5kcm9pZCwgPHJlZ2V4Lmg+IGlzIG9u
bHkgYXZhaWxhYmxlIHN0YXJ0aW5nIHdpdGggR2luZ2VyYnJlYWQuCisjICBkZWZpbmUgR1RFU1Rf
SEFTX1BPU0lYX1JFIChfX0FORFJPSURfQVBJX18gPj0gOSkKKyMgZWxzZQorIyAgZGVmaW5lIEdU
RVNUX0hBU19QT1NJWF9SRSAoIUdURVNUX09TX1dJTkRPV1MpCisjIGVuZGlmCisjZW5kaWYKKwor
I2lmIEdURVNUX1VTRVNfUENSRQorLy8gVGhlIGFwcHJvcHJpYXRlIGhlYWRlcnMgaGF2ZSBhbHJl
YWR5IGJlZW4gaW5jbHVkZWQuCisKKyNlbGlmIEdURVNUX0hBU19QT1NJWF9SRQogCiAvLyBPbiBz
b21lIHBsYXRmb3JtcywgPHJlZ2V4Lmg+IG5lZWRzIHNvbWVvbmUgdG8gZGVmaW5lIHNpemVfdCwg
YW5kCiAvLyB3b24ndCBjb21waWxlIG90aGVyd2lzZS4gIFdlIGNhbiAjaW5jbHVkZSBpdCBoZXJl
IGFzIHdlIGFscmVhZHkKIC8vIGluY2x1ZGVkIDxzdGRsaWIuaD4sIHdoaWNoIGlzIGd1YXJhbnRl
ZWQgdG8gZGVmaW5lIHNpemVfdCB0aHJvdWdoCiAvLyA8c3RkZGVmLmg+LgotI2lmIEhBVkUoUkVH
RVhfSCkKLSNpbmNsdWRlIDxyZWdleC5oPiAgLy8gTk9MSU5UCi0jZGVmaW5lIEdURVNUX1VTRVNf
UE9TSVhfUkUgMQotI2Vsc2UKLSNkZWZpbmUgR1RFU1RfVVNFU19TSU1QTEVfUkUgMQotI2VuZGlm
Ci0jaW5jbHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+
ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDx0aW1lLmg+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDx1bmlz
dGQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxyZWdleC5oPiAgLy8gTk9MSU5UCiAKKyMgZGVm
aW5lIEdURVNUX1VTRVNfUE9TSVhfUkUgMQogCiAjZWxpZiBHVEVTVF9PU19XSU5ET1dTCiAKLSNp
ZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSNpbmNsdWRlIDxkaXJlY3QuaD4gIC8vIE5PTElO
VAotI2luY2x1ZGUgPGlvLmg+ICAvLyBOT0xJTlQKLSNlbmRpZgotCiAvLyA8cmVnZXguaD4gaXMg
bm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLiAgVXNlIG91ciBvd24gc2ltcGxlIHJlZ2V4CiAvLyBp
bXBsZW1lbnRhdGlvbiBpbnN0ZWFkLgotI2RlZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9SRSAxCisj
IGRlZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9SRSAxCiAKICNlbHNlCiAKIC8vIDxyZWdleC5oPiBt
YXkgbm90IGJlIGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtLiAgVXNlIG91ciBvd24KIC8vIHNp
bXBsZSByZWdleCBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkLgotI2RlZmluZSBHVEVTVF9VU0VTX1NJ
TVBMRV9SRSAxCisjIGRlZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9SRSAxCiAKLSNlbmRpZiAgLy8g
R1RFU1RfT1NfQ1lHV0lOIHx8IEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fAotICAg
ICAgICAvLyBHVEVTVF9PU19TWU1CSUFOIHx8IEdURVNUX09TX1NPTEFSSVMgfHwgR1RFU1RfT1Nf
QUlYIHx8Ci0gICAgICAgIC8vIEdURVNUX09TX0ZSRUVCU0QgfHwgR1RFU1RfT1NfSFVSRAorI2Vu
ZGlmICAvLyBHVEVTVF9VU0VTX1BDUkUKIAogI2lmbmRlZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwog
Ly8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMgd2hldGhlciBleGNlcHRpb25zIGFyZSBlbmFibGVk
LCBzbyB3ZSBuZWVkCiAvLyB0byBmaWd1cmUgaXQgb3V0LgotI2lmIGRlZmluZWQoX01TQ19WRVIp
IHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQotLy8gTVNWQydzIGFuZCBDKytCdWlsZGVyJ3MgaW1w
bGVtZW50YXRpb25zIG9mIHRoZSBTVEwgdXNlIHRoZSBfSEFTX0VYQ0VQVElPTlMKKyMgaWYgZGVm
aW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZChfQ1BQVU5XSU5EKQorLy8gTVNWQyBkZWZpbmVzIF9D
UFBVTldJTkQgdG8gMSBpZmYgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZC4KKyMgIGRlZmluZSBHVEVT
VF9IQVNfRVhDRVBUSU9OUyAxCisjIGVsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCisvLyBDKytC
dWlsZGVyJ3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNUTCB1c2VzIHRoZSBfSEFTX0VYQ0VQVElP
TlMKIC8vIG1hY3JvIHRvIGVuYWJsZSBleGNlcHRpb25zLCBzbyB3ZSdsbCBkbyB0aGUgc2FtZS4K
IC8vIEFzc3VtZXMgdGhhdCBleGNlcHRpb25zIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQuCi0jaWZu
ZGVmIF9IQVNfRVhDRVBUSU9OUwotI2RlZmluZSBfSEFTX0VYQ0VQVElPTlMgMQotI2VuZGlmICAv
LyBfSEFTX0VYQ0VQVElPTlMKLSNkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgX0hBU19FWENF
UFRJT05TCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0VYQ0VQVElPTlMKKyMgIGlmbmRl
ZiBfSEFTX0VYQ0VQVElPTlMKKyMgICBkZWZpbmUgX0hBU19FWENFUFRJT05TIDEKKyMgIGVuZGlm
ICAvLyBfSEFTX0VYQ0VQVElPTlMKKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyBfSEFT
X0VYQ0VQVElPTlMKKyMgZWxpZiBkZWZpbmVkKF9fY2xhbmdfXykKKy8vIGNsYW5nIGRlZmluZXMg
X19FWENFUFRJT05TIGlmZiBleGNlcHRpb25zIGFyZSBlbmFibGVkIGJlZm9yZSBjbGFuZyAyMjA3
MTQsCisvLyBidXQgaWZmIGNsZWFudXBzIGFyZSBlbmFibGVkIGFmdGVyIHRoYXQuIEluIE9iai1D
KysgZmlsZXMsIHRoZXJlIGNhbiBiZQorLy8gY2xlYW51cHMgZm9yIE9iakMgZXhjZXB0aW9ucyB3
aGljaCBhbHNvIG5lZWQgY2xlYW51cHMsIGV2ZW4gaWYgQysrIGV4Y2VwdGlvbnMKKy8vIGFyZSBk
aXNhYmxlZC4gY2xhbmcgaGFzIF9faGFzX2ZlYXR1cmUoY3h4X2V4Y2VwdGlvbnMpIHdoaWNoIGNo
ZWNrcyBmb3IgQysrCisvLyBleGNlcHRpb25zIHN0YXJ0aW5nIGF0IGNsYW5nIHIyMDYzNTIsIGJ1
dCB3aGljaCBjaGVja2VkIGZvciBjbGVhbnVwcyBwcmlvciB0bworLy8gdGhhdC4gVG8gcmVsaWFi
bHkgY2hlY2sgZm9yIEMrKyBleGNlcHRpb24gYXZhaWxhYmlsaXR5IHdpdGggY2xhbmcsIGNoZWNr
IGZvcgorLy8gX19FWENFUFRJT05TICYmIF9faGFzX2ZlYXR1cmUoY3h4X2V4Y2VwdGlvbnMpLgor
IyAgZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIChfX0VYQ0VQVElPTlMgJiYgX19oYXNfZmVh
dHVyZShjeHhfZXhjZXB0aW9ucykpCisjIGVsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19FWENF
UFRJT05TCiAvLyBnY2MgZGVmaW5lcyBfX0VYQ0VQVElPTlMgdG8gMSBpZmYgZXhjZXB0aW9ucyBh
cmUgZW5hYmxlZC4KLSNkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMQotI2VsaWYgZGVmaW5l
ZChfX1NVTlBST19DQykKKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCisjIGVsaWYg
ZGVmaW5lZChfX1NVTlBST19DQykKIC8vIFN1biBQcm8gQ0Mgc3VwcG9ydHMgZXhjZXB0aW9ucy4g
IEhvd2V2ZXIsIHRoZXJlIGlzIG5vIGNvbXBpbGUtdGltZSB3YXkgb2YKIC8vIGRldGVjdGluZyB3
aGV0aGVyIHRoZXkgYXJlIGVuYWJsZWQgb3Igbm90LiAgVGhlcmVmb3JlLCB3ZSBhc3N1bWUgdGhh
dAogLy8gdGhleSBhcmUgZW5hYmxlZCB1bmxlc3MgdGhlIHVzZXIgdGVsbHMgdXMgb3RoZXJ3aXNl
LgotI2RlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCi0jZWxpZiBkZWZpbmVkKF9fSUJNQ1BQ
X18pICYmIF9fRVhDRVBUSU9OUworIyAgZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIDEKKyMg
ZWxpZiBkZWZpbmVkKF9fSUJNQ1BQX18pICYmIF9fRVhDRVBUSU9OUwogLy8geGxDIGRlZmluZXMg
X19FWENFUFRJT05TIHRvIDEgaWZmIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQuCi0jZGVmaW5lIEdU
RVNUX0hBU19FWENFUFRJT05TIDEKLSNlbHNlCisjICBkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElP
TlMgMQorIyBlbGlmIGRlZmluZWQoX19IUF9hQ0MpCisvLyBFeGNlcHRpb24gaGFuZGxpbmcgaXMg
aW4gZWZmZWN0IGJ5IGRlZmF1bHQgaW4gSFAgYUNDIGNvbXBpbGVyLiBJdCBoYXMgdG8KKy8vIGJl
IHR1cm5lZCBvZiBieSArbm9laCBjb21waWxlciBvcHRpb24gaWYgZGVzaXJlZC4KKyMgIGRlZmlu
ZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCisjIGVsc2UKIC8vIEZvciBvdGhlciBjb21waWxlcnMs
IHdlIGFzc3VtZSBleGNlcHRpb25zIGFyZSBkaXNhYmxlZCB0byBiZQogLy8gY29uc2VydmF0aXZl
LgotI2RlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAwCi0jZW5kaWYgIC8vIGRlZmluZWQoX01T
Q19WRVIpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQorIyAgZGVmaW5lIEdURVNUX0hBU19FWENF
UFRJT05TIDAKKyMgZW5kaWYgIC8vIGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19CT1JM
QU5EQ19fKQogI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUwogCiAjaWYgIWRlZmluZWQo
R1RFU1RfSEFTX1NURF9TVFJJTkcpCiAvLyBFdmVuIHRob3VnaCB3ZSBkb24ndCB1c2UgdGhpcyBt
YWNybyBhbnkgbG9uZ2VyLCB3ZSBrZWVwIGl0IGluIGNhc2UKIC8vIHNvbWUgY2xpZW50cyBzdGls
bCBkZXBlbmQgb24gaXQuCi0jZGVmaW5lIEdURVNUX0hBU19TVERfU1RSSU5HIDEKKyMgZGVmaW5l
IEdURVNUX0hBU19TVERfU1RSSU5HIDEKICNlbGlmICFHVEVTVF9IQVNfU1REX1NUUklORwogLy8g
VGhlIHVzZXIgdG9sZCB1cyB0aGF0IDo6c3RkOjpzdHJpbmcgaXNuJ3QgYXZhaWxhYmxlLgotI2Vy
cm9yICJHb29nbGUgVGVzdCBjYW5ub3QgYmUgdXNlZCB3aGVyZSA6OnN0ZDo6c3RyaW5nIGlzbid0
IGF2YWlsYWJsZS4iCisjIGVycm9yICI6OnN0ZDo6c3RyaW5nIGlzbid0IGF2YWlsYWJsZS4iCiAj
ZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0hBU19TVERfU1RSSU5HKQogCiAjaWZuZGVmIEdURVNU
X0hBU19HTE9CQUxfU1RSSU5HCi0vLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cyB3aGV0aGVyIDo6
c3RyaW5nIGlzIGF2YWlsYWJsZSwgc28gd2UgbmVlZAotLy8gdG8gZmlndXJlIGl0IG91dC4KLQot
I2RlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORyAwCi0KKyMgZGVmaW5lIEdURVNUX0hBU19H
TE9CQUxfU1RSSU5HIDAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKIAogI2lm
bmRlZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIHdo
ZXRoZXIgOjpzdGQ6OndzdHJpbmcgaXMgYXZhaWxhYmxlLCBzbyB3ZSBuZWVkCiAvLyB0byBmaWd1
cmUgaXQgb3V0LgotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHVzZXMgYXV0b2NvbmYgdG8gZGV0
ZWN0IHdoZXRoZXIgOjpzdGQ6OndzdHJpbmcKKy8vIEZJWE1FOiB1c2VzIGF1dG9jb25mIHRvIGRl
dGVjdCB3aGV0aGVyIDo6c3RkOjp3c3RyaW5nCiAvLyAgIGlzIGF2YWlsYWJsZS4KIAotLy8gQ3ln
d2luIDEuNSBhbmQgYmVsb3cgZG9lc24ndCBzdXBwb3J0IDo6c3RkOjp3c3RyaW5nLgotLy8gQ3ln
d2luIDEuNyBtaWdodCBhZGQgd3N0cmluZyBzdXBwb3J0OyB0aGlzIHNob3VsZCBiZSB1cGRhdGVk
IHdoZW4gY2xlYXIuCi0vLyBTb2xhcmlzJyBsaWJjKysgZG9lc24ndCBzdXBwb3J0IGl0IGVpdGhl
ci4KLSNkZWZpbmUgR1RFU1RfSEFTX1NURF9XU1RSSU5HICghKEdURVNUX09TX0NZR1dJTiB8fCBH
VEVTVF9PU19TT0xBUklTKSkKKy8vIEN5Z3dpbiAxLjcgYW5kIGJlbG93IGRvZXNuJ3Qgc3VwcG9y
dCA6OnN0ZDo6d3N0cmluZy4KKy8vIFNvbGFyaXMnIGxpYmMrKyBkb2Vzbid0IHN1cHBvcnQgaXQg
ZWl0aGVyLiAgQW5kcm9pZCBoYXMKKy8vIG5vIHN1cHBvcnQgZm9yIGl0IGF0IGxlYXN0IGFzIHJl
Y2VudCBhcyBGcm95byAoMi4yKS4KKyMgZGVmaW5lIEdURVNUX0hBU19TVERfV1NUUklORyBcCisg
ICAgKCEoR1RFU1RfT1NfTElOVVhfQU5EUk9JRCB8fCBHVEVTVF9PU19DWUdXSU4gfHwgR1RFU1Rf
T1NfU09MQVJJUykpCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RSSU5HCiAKICNpZm5k
ZWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCiAvLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cyB3
aGV0aGVyIDo6d3N0cmluZyBpcyBhdmFpbGFibGUsIHNvIHdlIG5lZWQKIC8vIHRvIGZpZ3VyZSBp
dCBvdXQuCi0jZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfV1NUUklORyBcCisjIGRlZmluZSBHVEVT
VF9IQVNfR0xPQkFMX1dTVFJJTkcgXAogICAgIChHVEVTVF9IQVNfU1REX1dTVFJJTkcgJiYgR1RF
U1RfSEFTX0dMT0JBTF9TVFJJTkcpCiAjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklO
RwogCkBAIC0zNDQsMTMzICs1NzAsMjEyIEBACiAvLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cyB3
aGV0aGVyIFJUVEkgaXMgZW5hYmxlZCwgc28gd2UgbmVlZCB0bwogLy8gZmlndXJlIGl0IG91dC4K
IAotI2lmZGVmIF9NU0NfVkVSCisjIGlmZGVmIF9NU0NfVkVSCiAKLSNpZmRlZiBfQ1BQUlRUSSAg
Ly8gTVNWQyBkZWZpbmVzIHRoaXMgbWFjcm8gaWZmIFJUVEkgaXMgZW5hYmxlZC4KLSNkZWZpbmUg
R1RFU1RfSEFTX1JUVEkgMQotI2Vsc2UKLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAotI2VuZGlm
CisjICBpZmRlZiBfQ1BQUlRUSSAgLy8gTVNWQyBkZWZpbmVzIHRoaXMgbWFjcm8gaWZmIFJUVEkg
aXMgZW5hYmxlZC4KKyMgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQorIyAgZWxzZQorIyAgIGRl
ZmluZSBHVEVTVF9IQVNfUlRUSSAwCisjICBlbmRpZgogCiAvLyBTdGFydGluZyB3aXRoIHZlcnNp
b24gNC4zLjIsIGdjYyBkZWZpbmVzIF9fR1hYX1JUVEkgaWZmIFJUVEkgaXMgZW5hYmxlZC4KLSNl
bGlmIGRlZmluZWQoX19HTlVDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSA0MDMwMikKLQotI2lm
ZGVmIF9fR1hYX1JUVEkKLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQotI2Vsc2UKLSNkZWZpbmUg
R1RFU1RfSEFTX1JUVEkgMAotI2VuZGlmICAvLyBfX0dYWF9SVFRJCisjIGVsaWYgZGVmaW5lZChf
X0dOVUNfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMzAyKQorCisjICBpZmRlZiBfX0dYWF9S
VFRJCisvLyBXaGVuIGJ1aWxkaW5nIGFnYWluc3QgU1RMcG9ydCB3aXRoIHRoZSBBbmRyb2lkIE5E
SyBhbmQgd2l0aAorLy8gLWZydHRpIC1mbm8tZXhjZXB0aW9ucywgdGhlIGJ1aWxkIGZhaWxzIGF0
IGxpbmsgdGltZSB3aXRoIHVuZGVmaW5lZAorLy8gcmVmZXJlbmNlcyB0byBfX2N4YV9iYWRfdHlw
ZWlkLiBOb3RlIHN1cmUgaWYgU1RMIG9yIHRvb2xjaGFpbiBidWcsCisvLyBzbyBkaXNhYmxlIFJU
VEkgd2hlbiBkZXRlY3RlZC4KKyMgICBpZiBHVEVTVF9PU19MSU5VWF9BTkRST0lEICYmIGRlZmlu
ZWQoX1NUTFBPUlRfTUFKT1IpICYmIFwKKyAgICAgICAhZGVmaW5lZChfX0VYQ0VQVElPTlMpCisj
ICAgIGRlZmluZSBHVEVTVF9IQVNfUlRUSSAwCisjICAgZWxzZQorIyAgICBkZWZpbmUgR1RFU1Rf
SEFTX1JUVEkgMQorIyAgIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWF9BTkRST0lEICYmIF9fU1RM
UE9SVF9NQUpPUiAmJiAhX19FWENFUFRJT05TCisjICBlbHNlCisjICAgZGVmaW5lIEdURVNUX0hB
U19SVFRJIDAKKyMgIGVuZGlmICAvLyBfX0dYWF9SVFRJCisKKy8vIENsYW5nIGRlZmluZXMgX19H
WFhfUlRUSSBzdGFydGluZyB3aXRoIHZlcnNpb24gMy4wLCBidXQgaXRzIG1hbnVhbCByZWNvbW1l
bmRzCisvLyB1c2luZyBoYXNfZmVhdHVyZSBpbnN0ZWFkLiBoYXNfZmVhdHVyZShjeHhfcnR0aSkg
aXMgc3VwcG9ydGVkIHNpbmNlIDIuNywgdGhlCisvLyBmaXJzdCB2ZXJzaW9uIHdpdGggQysrIHN1
cHBvcnQuCisjIGVsaWYgZGVmaW5lZChfX2NsYW5nX18pCisKKyMgIGRlZmluZSBHVEVTVF9IQVNf
UlRUSSBfX2hhc19mZWF0dXJlKGN4eF9ydHRpKQogCiAvLyBTdGFydGluZyB3aXRoIHZlcnNpb24g
OS4wIElCTSBWaXN1YWwgQWdlIGRlZmluZXMgX19SVFRJX0FMTF9fIHRvIDEgaWYKIC8vIGJvdGgg
dGhlIHR5cGVpZCBhbmQgZHluYW1pY19jYXN0IGZlYXR1cmVzIGFyZSBwcmVzZW50LgotI2VsaWYg
ZGVmaW5lZChfX0lCTUNQUF9fKSAmJiAoX19JQk1DUFBfXyA+PSA5MDApCisjIGVsaWYgZGVmaW5l
ZChfX0lCTUNQUF9fKSAmJiAoX19JQk1DUFBfXyA+PSA5MDApCiAKLSNpZmRlZiBfX1JUVElfQUxM
X18KLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQotI2Vsc2UKLSNkZWZpbmUgR1RFU1RfSEFTX1JU
VEkgMAotI2VuZGlmCisjICBpZmRlZiBfX1JUVElfQUxMX18KKyMgICBkZWZpbmUgR1RFU1RfSEFT
X1JUVEkgMQorIyAgZWxzZQorIyAgIGRlZmluZSBHVEVTVF9IQVNfUlRUSSAwCisjICBlbmRpZgog
Ci0jZWxzZQorIyBlbHNlCiAKIC8vIEZvciBhbGwgb3RoZXIgY29tcGlsZXJzLCB3ZSBhc3N1bWUg
UlRUSSBpcyBlbmFibGVkLgotI2RlZmluZSBHVEVTVF9IQVNfUlRUSSAxCisjICBkZWZpbmUgR1RF
U1RfSEFTX1JUVEkgMQogCi0jZW5kaWYgIC8vIF9NU0NfVkVSCisjIGVuZGlmICAvLyBfTVNDX1ZF
UgogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19SVFRJCiAKIC8vIEl0J3MgdGhpcyBoZWFkZXIncyBy
ZXNwb25zaWJpbGl0eSB0byAjaW5jbHVkZSA8dHlwZWluZm8+IHdoZW4gUlRUSQogLy8gaXMgZW5h
YmxlZC4KICNpZiBHVEVTVF9IQVNfUlRUSQotI2luY2x1ZGUgPHR5cGVpbmZvPgorIyBpbmNsdWRl
IDx0eXBlaW5mbz4KICNlbmRpZgogCiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgR29vZ2xlIFRlc3Qg
Y2FuIHVzZSB0aGUgcHRocmVhZHMgbGlicmFyeS4KICNpZm5kZWYgR1RFU1RfSEFTX1BUSFJFQUQK
LS8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIGV4cGxpY2l0bHksIHNvIHdlIGFzc3VtZSBwdGhy
ZWFkcyBzdXBwb3J0IGlzCi0vLyBhdmFpbGFibGUgb24gTGludXggYW5kIE1hYy4KKy8vIFRoZSB1
c2VyIGRpZG4ndCB0ZWxsIHVzIGV4cGxpY2l0bHksIHNvIHdlIG1ha2UgcmVhc29uYWJsZSBhc3N1
bXB0aW9ucyBhYm91dAorLy8gd2hpY2ggcGxhdGZvcm1zIGhhdmUgcHRocmVhZHMgc3VwcG9ydC4K
IC8vCiAvLyBUbyBkaXNhYmxlIHRocmVhZGluZyBzdXBwb3J0IGluIEdvb2dsZSBUZXN0LCBhZGQg
LURHVEVTVF9IQVNfUFRIUkVBRD0wCiAvLyB0byB5b3VyIGNvbXBpbGVyIGZsYWdzLgotI2RlZmlu
ZSBHVEVTVF9IQVNfUFRIUkVBRCAoR1RFU1RfT1NfTElOVVggfHwgR1RFU1RfT1NfRlJFRUJTRCB8
fCBHVEVTVF9PU19IVVJEIHx8IEdURVNUX09TX01BQykKKyNkZWZpbmUgR1RFU1RfSEFTX1BUSFJF
QUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIChHVEVT
VF9PU19MSU5VWCB8fCBHVEVTVF9PU19NQUMgfHwgR1RFU1RfT1NfSFBVWCB8fCBHVEVTVF9PU19R
TlggfHwgXAorICAgR1RFU1RfT1NfRlJFRUJTRCB8fCBHVEVTVF9PU19OQUNMIHx8IEdURVNUX09T
X05FVEJTRCB8fCBHVEVTVF9PU19GVUNIU0lBKQogI2VuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVB
RAogCisjaWYgR1RFU1RfSEFTX1BUSFJFQUQKKy8vIGd0ZXN0LXBvcnQuaCBndWFyYW50ZWVzIHRv
ICNpbmNsdWRlIDxwdGhyZWFkLmg+IHdoZW4gR1RFU1RfSEFTX1BUSFJFQUQgaXMKKy8vIHRydWUu
CisjIGluY2x1ZGUgPHB0aHJlYWQuaD4gIC8vIE5PTElOVAorCisvLyBGb3IgdGltZXNwZWMgYW5k
IG5hbm9zbGVlcCwgdXNlZCBiZWxvdy4KKyMgaW5jbHVkZSA8dGltZS5oPiAgLy8gTk9MSU5UCisj
ZW5kaWYKKworLy8gRGV0ZXJtaW5lcyBpZiBoYXNoX21hcC9oYXNoX3NldCBhcmUgYXZhaWxhYmxl
LgorLy8gT25seSB1c2VkIGZvciB0ZXN0aW5nIGFnYWluc3QgdGhvc2UgY29udGFpbmVycy4KKyNp
ZiAhZGVmaW5lZChHVEVTVF9IQVNfSEFTSF9NQVBfKQorIyBpZiBkZWZpbmVkKF9NU0NfVkVSKSAm
JiAoX01TQ19WRVIgPCAxOTAwKQorIyAgZGVmaW5lIEdURVNUX0hBU19IQVNIX01BUF8gMSAgLy8g
SW5kaWNhdGVzIHRoYXQgaGFzaF9tYXAgaXMgYXZhaWxhYmxlLgorIyAgZGVmaW5lIEdURVNUX0hB
U19IQVNIX1NFVF8gMSAgLy8gSW5kaWNhdGVzIHRoYXQgaGFzaF9zZXQgaXMgYXZhaWxhYmxlLgor
IyBlbmRpZiAgLy8gX01TQ19WRVIKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfSEFTX0hBU0hf
TUFQXykKKwogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIEdvb2dsZSBUZXN0IGNhbiB1c2UgdHIxL3R1
cGxlLiAgWW91IGNhbiBkZWZpbmUKIC8vIHRoaXMgbWFjcm8gdG8gMCB0byBwcmV2ZW50IEdvb2ds
ZSBUZXN0IGZyb20gdXNpbmcgdHVwbGUgKGFueQogLy8gZmVhdHVyZSBkZXBlbmRpbmcgb24gdHVw
bGUgd2l0aCBiZSBkaXNhYmxlZCBpbiB0aGlzIG1vZGUpLgogI2lmbmRlZiBHVEVTVF9IQVNfVFIx
X1RVUExFCisjIGlmIEdURVNUX09TX0xJTlVYX0FORFJPSUQgJiYgZGVmaW5lZChfU1RMUE9SVF9N
QUpPUikKKy8vIFNUTHBvcnQsIHByb3ZpZGVkIHdpdGggdGhlIEFuZHJvaWQgTkRLLCBoYXMgbmVp
dGhlciA8dHIxL3R1cGxlPiBvciA8dHVwbGU+LgorIyAgZGVmaW5lIEdURVNUX0hBU19UUjFfVFVQ
TEUgMAorIyBlbGlmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxOTEwKQorLy8g
UHJldmVudCBgd2FybmluZyBDNDk5NjogJ3N0ZDo6dHIxJzogd2FybmluZyBTVEw0MDAyOgorLy8g
VGhlIG5vbi1TdGFuZGFyZCBzdGQ6OnRyMSBuYW1lc3BhY2UgYW5kIFRSMS1vbmx5IG1hY2hpbmVy
eQorLy8gYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgUkVNT1ZFRC5gCisjICBkZWZpbmUgR1RF
U1RfSEFTX1RSMV9UVVBMRSAwCisjIGVsaWYgR1RFU1RfTEFOR19DWFgxMSAmJiBkZWZpbmVkKF9M
SUJDUFBfVkVSU0lPTikKKy8vIGxpYmMrKyBkb2Vzbid0IHN1cHBvcnQgVFIxLgorIyAgZGVmaW5l
IEdURVNUX0hBU19UUjFfVFVQTEUgMAorIyBlbHNlCiAvLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1
cyBub3QgdG8gZG8gaXQsIHNvIHdlIGFzc3VtZSBpdCdzIE9LLgotI2RlZmluZSBHVEVTVF9IQVNf
VFIxX1RVUExFIDEKKyMgIGRlZmluZSBHVEVTVF9IQVNfVFIxX1RVUExFIDEKKyMgZW5kaWYKICNl
bmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRQogCiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgR29v
Z2xlIFRlc3QncyBvd24gdHIxIHR1cGxlIGltcGxlbWVudGF0aW9uCiAvLyBzaG91bGQgYmUgdXNl
ZC4KICNpZm5kZWYgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUKKy8vIFdlIHVzZSBvdXIgb3duIHR1
cGxlIGltcGxlbWVudGF0aW9uIG9uIFN5bWJpYW4uCisjIGlmIEdURVNUX09TX1NZTUJJQU4KKyMg
IGRlZmluZSBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSAxCisjIGVsc2UKIC8vIFRoZSB1c2VyIGRp
ZG4ndCB0ZWxsIHVzLCBzbyB3ZSBuZWVkIHRvIGZpZ3VyZSBpdCBvdXQuCiAKIC8vIFdlIHVzZSBv
dXIgb3duIFRSMSB0dXBsZSBpZiB3ZSBhcmVuJ3Qgc3VyZSB0aGUgdXNlciBoYXMgYW4KLS8vIGlt
cGxlbWVudGF0aW9uIG9mIGl0IGFscmVhZHkuICBBdCB0aGlzIHRpbWUsIEdDQyA0LjAuMCsgYW5k
IE1TVkMKLS8vIDIwMTAgYXJlIHRoZSBvbmx5IG1haW5zdHJlYW0gY29tcGlsZXJzIHRoYXQgY29t
ZSB3aXRoIGEgVFIxIHR1cGxlCi0vLyBpbXBsZW1lbnRhdGlvbi4gIE5WSURJQSdzIENVREEgTlZD
QyBjb21waWxlciBwcmV0ZW5kcyB0byBiZSBHQ0MgYnkKLS8vIGRlZmluaW5nIF9fR05VQ19fIGFu
ZCBmcmllbmRzLCBidXQgY2Fubm90IGNvbXBpbGUgR0NDJ3MgdHVwbGUKLS8vIGltcGxlbWVudGF0
aW9uLiAgTVNWQyAyMDA4ICg5LjApIHByb3ZpZGVzIFRSMSB0dXBsZSBpbiBhIDMyMyBNQgotLy8g
RmVhdHVyZSBQYWNrIGRvd25sb2FkLCB3aGljaCB3ZSBjYW5ub3QgYXNzdW1lIHRoZSB1c2VyIGhh
cy4KLSNpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19DVURBQ0NfXykgJiYgKEdU
RVNUX0dDQ19WRVJfID49IDQwMDAwKSkgXAotICAgIHx8IF9NU0NfVkVSID49IDE2MDAKLSNkZWZp
bmUgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgMAotI2Vsc2UKLSNkZWZpbmUgR1RFU1RfVVNFX09X
Tl9UUjFfVFVQTEUgMQotI2VuZGlmCi0KKy8vIGltcGxlbWVudGF0aW9uIG9mIGl0IGFscmVhZHku
ICBBdCB0aGlzIHRpbWUsIGxpYnN0ZGMrKyA0LjAuMCsgYW5kCisvLyBNU1ZDIDIwMTAgYXJlIHRo
ZSBvbmx5IG1haW5zdHJlYW0gc3RhbmRhcmQgbGlicmFyaWVzIHRoYXQgY29tZQorLy8gd2l0aCBh
IFRSMSB0dXBsZSBpbXBsZW1lbnRhdGlvbi4gIE5WSURJQSdzIENVREEgTlZDQyBjb21waWxlcgor
Ly8gcHJldGVuZHMgdG8gYmUgR0NDIGJ5IGRlZmluaW5nIF9fR05VQ19fIGFuZCBmcmllbmRzLCBi
dXQgY2Fubm90CisvLyBjb21waWxlIEdDQydzIHR1cGxlIGltcGxlbWVudGF0aW9uLiAgTVNWQyAy
MDA4ICg5LjApIHByb3ZpZGVzIFRSMQorLy8gdHVwbGUgaW4gYSAzMjMgTUIgRmVhdHVyZSBQYWNr
IGRvd25sb2FkLCB3aGljaCB3ZSBjYW5ub3QgYXNzdW1lIHRoZQorLy8gdXNlciBoYXMuICBRTlgn
cyBRQ0MgY29tcGlsZXIgaXMgYSBtb2RpZmllZCBHQ0MgYnV0IGl0IGRvZXNuJ3QKKy8vIHN1cHBv
cnQgVFIxIHR1cGxlLiAgbGliYysrIG9ubHkgcHJvdmlkZXMgc3RkOjp0dXBsZSwgaW4gQysrMTEg
bW9kZSwKKy8vIGFuZCBpdCBjYW4gYmUgdXNlZCB3aXRoIHNvbWUgY29tcGlsZXJzIHRoYXQgZGVm
aW5lIF9fR05VQ19fLgorIyBpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19DVURB
Q0NfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMDAwKSBcCisgICAgICAmJiAhR1RFU1RfT1Nf
UU5YICYmICFkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikpIFwKKyAgICAgIHx8IChfTVNDX1ZFUiA+
PSAxNjAwICYmIF9NU0NfVkVSIDwgMTkwMCkKKyMgIGRlZmluZSBHVEVTVF9FTlZfSEFTX1RSMV9U
VVBMRV8gMQorIyBlbmRpZgorCisvLyBDKysxMSBzcGVjaWZpZXMgdGhhdCA8dHVwbGU+IHByb3Zp
ZGVzIHN0ZDo6dHVwbGUuIFVzZSB0aGF0IGlmIGd0ZXN0IGlzIHVzZWQKKy8vIGluIEMrKzExIG1v
ZGUgYW5kIGxpYnN0ZGMrKyBpc24ndCB2ZXJ5IG9sZCAoYmluYXJpZXMgdGFyZ2V0aW5nIE9TIFgg
MTAuNgorLy8gY2FuIGJ1aWxkIHdpdGggY2xhbmcgYnV0IG5lZWQgdG8gdXNlIGdjYzQuMidzIGxp
YnN0ZGMrKykuCisjIGlmIEdURVNUX0xBTkdfQ1hYMTEgJiYgKCFkZWZpbmVkKF9fR0xJQkNYWF9f
KSB8fCBfX0dMSUJDWFhfXyA+IDIwMTEwMzI1KQorIyAgZGVmaW5lIEdURVNUX0VOVl9IQVNfU1RE
X1RVUExFXyAxCisjIGVuZGlmCisKKyMgaWYgR1RFU1RfRU5WX0hBU19UUjFfVFVQTEVfIHx8IEdU
RVNUX0VOVl9IQVNfU1REX1RVUExFXworIyAgZGVmaW5lIEdURVNUX1VTRV9PV05fVFIxX1RVUExF
IDAKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX1VTRV9PV05fVFIxX1RVUExFIDEKKyMgZW5kaWYK
KyMgZW5kaWYgIC8vIEdURVNUX09TX1NZTUJJQU4KICNlbmRpZiAgLy8gR1RFU1RfVVNFX09XTl9U
UjFfVFVQTEUKIAotLy8gVG8gYXZvaWQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZXZlcnl3aGVy
ZSwgd2UgbWFrZSBpdAotLy8gZ3Rlc3QtcG9ydC5oJ3MgcmVzcG9uc2liaWxpdHkgdG8gI2luY2x1
ZGUgdGhlIGhlYWRlciBpbXBsZW1lbnRpbmcKLS8vIHRyMS90dXBsZS4KKy8vIFRvIGF2b2lkIGNv
bmRpdGlvbmFsIGNvbXBpbGF0aW9uIHdlIG1ha2UgaXQgZ3Rlc3QtcG9ydC5oJ3MgcmVzcG9uc2li
aWxpdHkKKy8vIHRvICNpbmNsdWRlIHRoZSBoZWFkZXIgaW1wbGVtZW50aW5nIHR1cGxlLgorI2lm
IEdURVNUX0hBU19TVERfVFVQTEVfCisjIGluY2x1ZGUgPHR1cGxlPiAgLy8gSVdZVSBwcmFnbWE6
IGV4cG9ydAorIyBkZWZpbmUgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXyA6OnN0ZAorI2VuZGlmICAv
LyBHVEVTVF9IQVNfU1REX1RVUExFXworCisvLyBXZSBpbmNsdWRlIHRyMTo6dHVwbGUgZXZlbiBp
ZiBzdGQ6OnR1cGxlIGlzIGF2YWlsYWJsZSB0byBkZWZpbmUgcHJpbnRlcnMgZm9yCisvLyB0aGVt
LgogI2lmIEdURVNUX0hBU19UUjFfVFVQTEUKKyMgaWZuZGVmIEdURVNUX1RVUExFX05BTUVTUEFD
RV8KKyMgIGRlZmluZSBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfIDo6c3RkOjp0cjEKKyMgZW5kaWYg
IC8vIEdURVNUX1RVUExFX05BTUVTUEFDRV8KIAotI2lmIEdURVNUX1VTRV9PV05fVFIxX1RVUExF
Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaD4KLSNlbGlmIEdURVNUX09T
X1NZTUJJQU4KKyMgaWYgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUKKyMgIGluY2x1ZGUgImd0ZXN0
L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0ICAvLyBOT0xJ
TlQKKyMgZWxpZiBHVEVTVF9PU19TWU1CSUFOCiAKIC8vIE9uIFN5bWJpYW4sIEJPT1NUX0hBU19U
UjFfVFVQTEUgY2F1c2VzIEJvb3N0J3MgVFIxIHR1cGxlIGxpYnJhcnkgdG8KIC8vIHVzZSBTVExw
b3J0J3MgdHVwbGUgaW1wbGVtZW50YXRpb24sIHdoaWNoIHVuZm9ydHVuYXRlbHkgZG9lc24ndAog
Ly8gd29yayBhcyB0aGUgY29weSBvZiBTVExwb3J0IGRpc3RyaWJ1dGVkIHdpdGggU3ltYmlhbiBp
cyBpbmNvbXBsZXRlLgogLy8gQnkgbWFraW5nIHN1cmUgQk9PU1RfSEFTX1RSMV9UVVBMRSBpcyB1
bmRlZmluZWQsIHdlIGZvcmNlIEJvb3N0IHRvCiAvLyB1c2UgaXRzIG93biB0dXBsZSBpbXBsZW1l
bnRhdGlvbi4KLSNpZmRlZiBCT09TVF9IQVNfVFIxX1RVUExFCi0jdW5kZWYgQk9PU1RfSEFTX1RS
MV9UVVBMRQotI2VuZGlmICAvLyBCT09TVF9IQVNfVFIxX1RVUExFCisjICBpZmRlZiBCT09TVF9I
QVNfVFIxX1RVUExFCisjICAgdW5kZWYgQk9PU1RfSEFTX1RSMV9UVVBMRQorIyAgZW5kaWYgIC8v
IEJPT1NUX0hBU19UUjFfVFVQTEUKIAogLy8gVGhpcyBwcmV2ZW50cyA8Ym9vc3QvdHIxL2RldGFp
bC9jb25maWcuaHBwPiwgd2hpY2ggZGVmaW5lcwogLy8gQk9PU1RfSEFTX1RSMV9UVVBMRSwgZnJv
bSBiZWluZyAjaW5jbHVkZWQgYnkgQm9vc3QncyA8dHVwbGU+LgotI2RlZmluZSBCT09TVF9UUjFf
REVUQUlMX0NPTkZJR19IUFBfSU5DTFVERUQKLSNpbmNsdWRlIDx0dXBsZT4KKyMgIGRlZmluZSBC
T09TVF9UUjFfREVUQUlMX0NPTkZJR19IUFBfSU5DTFVERUQKKyMgIGluY2x1ZGUgPHR1cGxlPiAg
Ly8gSVdZVSBwcmFnbWE6IGV4cG9ydCAgLy8gTk9MSU5UCiAKLSNlbGlmIGRlZmluZWQoX19HTlVD
X18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSA0MDAwMCkKKyMgZWxpZiBkZWZpbmVkKF9fR05VQ19f
KSAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0gNDAwMDApCiAvLyBHQ0MgNC4wKyBpbXBsZW1lbnRzIHRy
MS90dXBsZSBpbiB0aGUgPHRyMS90dXBsZT4gaGVhZGVyLiAgVGhpcyBkb2VzCiAvLyBub3QgY29u
Zm9ybSB0byB0aGUgVFIxIHNwZWMsIHdoaWNoIHJlcXVpcmVzIHRoZSBoZWFkZXIgdG8gYmUgPHR1
cGxlPi4KIAotI2lmICFHVEVTVF9IQVNfUlRUSSAmJiBHVEVTVF9HQ0NfVkVSXyA8IDQwMzAyCisj
ICBpZiAhR1RFU1RfSEFTX1JUVEkgJiYgR1RFU1RfR0NDX1ZFUl8gPCA0MDMwMgogLy8gVW50aWwg
dmVyc2lvbiA0LjMuMiwgZ2NjIGhhcyBhIGJ1ZyB0aGF0IGNhdXNlcyA8dHIxL2Z1bmN0aW9uYWw+
LAogLy8gd2hpY2ggaXMgI2luY2x1ZGVkIGJ5IDx0cjEvdHVwbGU+LCB0byBub3QgY29tcGlsZSB3
aGVuIFJUVEkgaXMKIC8vIGRpc2FibGVkLiAgX1RSMV9GVU5DVElPTkFMIGlzIHRoZSBoZWFkZXIg
Z3VhcmQgZm9yCi0vLyA8dHIxL2Z1bmN0aW9uYWw+LiAgSGVuY2UgdGhlIGZvbGxvd2luZyAjZGVm
aW5lIGlzIGEgaGFjayB0byBwcmV2ZW50CisvLyA8dHIxL2Z1bmN0aW9uYWw+LiAgSGVuY2UgdGhl
IGZvbGxvd2luZyAjZGVmaW5lIGlzIHVzZWQgdG8gcHJldmVudAogLy8gPHRyMS9mdW5jdGlvbmFs
PiBmcm9tIGJlaW5nIGluY2x1ZGVkLgotI2RlZmluZSBfVFIxX0ZVTkNUSU9OQUwgMQotI2luY2x1
ZGUgPHRyMS90dXBsZT4KLSN1bmRlZiBfVFIxX0ZVTkNUSU9OQUwgIC8vIEFsbG93cyB0aGUgdXNl
ciB0byAjaW5jbHVkZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gPHRyMS9mdW5jdGlvbmFs
PiBpZiBoZSBjaG9vc2VzIHRvLgotI2Vsc2UKLSNpbmNsdWRlIDx0cjEvdHVwbGU+ICAvLyBOT0xJ
TlQKLSNlbmRpZiAgLy8gIUdURVNUX0hBU19SVFRJICYmIEdURVNUX0dDQ19WRVJfIDwgNDAzMDIK
LQotI2Vsc2UKLS8vIElmIHRoZSBjb21waWxlciBpcyBub3QgR0NDIDQuMCssIHdlIGFzc3VtZSB0
aGUgdXNlciBpcyB1c2luZyBhCi0vLyBzcGVjLWNvbmZvcm1pbmcgVFIxIGltcGxlbWVudGF0aW9u
LgotI2luY2x1ZGUgPHR1cGxlPiAgLy8gTk9MSU5UCi0jZW5kaWYgIC8vIEdURVNUX1VTRV9PV05f
VFIxX1RVUExFCisjICAgZGVmaW5lIF9UUjFfRlVOQ1RJT05BTCAxCisjICAgaW5jbHVkZSA8dHIx
L3R1cGxlPgorIyAgIHVuZGVmIF9UUjFfRlVOQ1RJT05BTCAgLy8gQWxsb3dzIHRoZSB1c2VyIHRv
ICNpbmNsdWRlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyA8dHIxL2Z1bmN0aW9uYWw+IGlm
IHRoZXkgY2hvb3NlIHRvLgorIyAgZWxzZQorIyAgIGluY2x1ZGUgPHRyMS90dXBsZT4gIC8vIE5P
TElOVAorIyAgZW5kaWYgIC8vICFHVEVTVF9IQVNfUlRUSSAmJiBHVEVTVF9HQ0NfVkVSXyA8IDQw
MzAyCisKKy8vIFZTIDIwMTAgbm93IGhhcyB0cjEgc3VwcG9ydC4KKyMgZWxpZiBfTVNDX1ZFUiA+
PSAxNjAwCisjICBpbmNsdWRlIDx0dXBsZT4gIC8vIElXWVUgcHJhZ21hOiBleHBvcnQgIC8vIE5P
TElOVAorCisjIGVsc2UgIC8vIEdURVNUX1VTRV9PV05fVFIxX1RVUExFCisjICBpbmNsdWRlIDx0
cjEvdHVwbGU+ICAvLyBJV1lVIHByYWdtYTogZXhwb3J0ICAvLyBOT0xJTlQKKyMgZW5kaWYgIC8v
IEdURVNUX1VTRV9PV05fVFIxX1RVUExFCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBM
RQogCkBAIC00ODEsNTkgKzc4Niw4MCBAQAogI2lmbmRlZiBHVEVTVF9IQVNfQ0xPTkUKIC8vIFRo
ZSB1c2VyIGRpZG4ndCB0ZWxsIHVzLCBzbyB3ZSBuZWVkIHRvIGZpZ3VyZSBpdCBvdXQuCiAKLSNp
ZiBHVEVTVF9PU19MSU5VWCAmJiAhZGVmaW5lZChfX2lhNjRfXykKLSNkZWZpbmUgR1RFU1RfSEFT
X0NMT05FIDEKLSNlbHNlCi0jZGVmaW5lIEdURVNUX0hBU19DTE9ORSAwCi0jZW5kaWYgIC8vIEdU
RVNUX09TX0xJTlVYICYmICFkZWZpbmVkKF9faWE2NF9fKQorIyBpZiBHVEVTVF9PU19MSU5VWCAm
JiAhZGVmaW5lZChfX2lhNjRfXykKKyMgIGlmIEdURVNUX09TX0xJTlVYX0FORFJPSUQKKy8vIE9u
IEFuZHJvaWQsIGNsb25lKCkgYmVjYW1lIGF2YWlsYWJsZSBhdCBkaWZmZXJlbnQgQVBJIGxldmVs
cyBmb3IgZWFjaCAzMi1iaXQKKy8vIGFyY2hpdGVjdHVyZS4KKyMgICAgaWYgZGVmaW5lZChfX0xQ
NjRfXykgfHwgXAorICAgICAgICAoZGVmaW5lZChfX2FybV9fKSAmJiBfX0FORFJPSURfQVBJX18g
Pj0gOSkgfHwgXAorICAgICAgICAoZGVmaW5lZChfX21pcHNfXykgJiYgX19BTkRST0lEX0FQSV9f
ID49IDEyKSB8fCBcCisgICAgICAgIChkZWZpbmVkKF9faTM4Nl9fKSAmJiBfX0FORFJPSURfQVBJ
X18gPj0gMTcpCisjICAgICBkZWZpbmUgR1RFU1RfSEFTX0NMT05FIDEKKyMgICAgZWxzZQorIyAg
ICAgZGVmaW5lIEdURVNUX0hBU19DTE9ORSAwCisjICAgIGVuZGlmCisjICBlbHNlCisjICAgZGVm
aW5lIEdURVNUX0hBU19DTE9ORSAxCisjICBlbmRpZgorIyBlbHNlCisjICBkZWZpbmUgR1RFU1Rf
SEFTX0NMT05FIDAKKyMgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYICYmICFkZWZpbmVkKF9faWE2
NF9fKQogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORQogCiAvLyBEZXRlcm1pbmVzIHdoZXRo
ZXIgdG8gc3VwcG9ydCBzdHJlYW0gcmVkaXJlY3Rpb24uIFRoaXMgaXMgdXNlZCB0byB0ZXN0CiAv
LyBvdXRwdXQgY29ycmVjdG5lc3MgYW5kIHRvIGltcGxlbWVudCBkZWF0aCB0ZXN0cy4KLSNpZiAh
R1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZTUJJQU4KLSNkZWZpbmUgR1RF
U1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8gMQotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUgJiYgIUdURVNUX09TX1NZTUJJQU4KKyNpZm5kZWYgR1RFU1RfSEFTX1NUUkVBTV9S
RURJUkVDVElPTgorLy8gQnkgZGVmYXVsdCwgd2UgYXNzdW1lIHRoYXQgc3RyZWFtIHJlZGlyZWN0
aW9uIGlzIHN1cHBvcnRlZCBvbiBhbGwKKy8vIHBsYXRmb3JtcyBleGNlcHQga25vd24gbW9iaWxl
IG9uZXMuCisjIGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNUX09TX1NZTUJJQU4g
fHwgXAorICAgIEdURVNUX09TX1dJTkRPV1NfUEhPTkUgfHwgR1RFU1RfT1NfV0lORE9XU19SVAor
IyAgZGVmaW5lIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04gMAorIyBlbHNlCisjICBkZWZp
bmUgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTiAxCisjIGVuZGlmICAvLyAhR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZTUJJQU4KKyNlbmRpZiAgLy8gR1RFU1RfSEFT
X1NUUkVBTV9SRURJUkVDVElPTgogCiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc3VwcG9ydCBk
ZWF0aCB0ZXN0cy4KIC8vIEdvb2dsZSBUZXN0IGRvZXMgbm90IHN1cHBvcnQgZGVhdGggdGVzdHMg
Zm9yIFZDIDcuMSBhbmQgZWFybGllciBhcwogLy8gYWJvcnQoKSBpbiBhIFZDIDcuMSBhcHBsaWNh
dGlvbiBjb21waWxlZCBhcyBHVUkgaW4gZGVidWcgY29uZmlnCiAvLyBwb3BzIHVwIGEgZGlhbG9n
IHdpbmRvdyB0aGF0IGNhbm5vdCBiZSBzdXBwcmVzc2VkIHByb2dyYW1tYXRpY2FsbHkuCi0jaWYg
KEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX0ZSRUVCU0QgfHwgR1RFU1RfT1NfSFVSRCB8fCBc
Ci0gICAgIEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19DWUdXSU4gfHwgR1RFU1RfT1NfU09MQVJJ
UyB8fCBcCi0gICAgIChHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1AgJiYgX01TQ19WRVIgPj0gMTQw
MCkgfHwgXAotICAgICBHVEVTVF9PU19XSU5ET1dTX01JTkdXIHx8IEdURVNUX09TX0FJWCkKLSNk
ZWZpbmUgR1RFU1RfSEFTX0RFQVRIX1RFU1QgMQotI2luY2x1ZGUgPHZlY3Rvcj4gIC8vIE5PTElO
VAorI2lmIChHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19DWUdXSU4gfHwgR1RFU1RfT1NfU09M
QVJJUyB8fCAgIFwKKyAgICAgKEdURVNUX09TX01BQyAmJiAhR1RFU1RfT1NfSU9TKSB8fCAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgIChHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1AgJiYg
X01TQ19WRVIgPj0gMTQwMCkgfHwgICAgICAgICAgXAorICAgICBHVEVTVF9PU19XSU5ET1dTX01J
TkdXIHx8IEdURVNUX09TX0FJWCB8fCBHVEVTVF9PU19IUFVYIHx8IFwKKyAgICAgR1RFU1RfT1Nf
T1BFTkJTRCB8fCBHVEVTVF9PU19RTlggfHwgR1RFU1RfT1NfRlJFRUJTRCB8fCBcCisgICAgIEdU
RVNUX09TX05FVEJTRCB8fCBHVEVTVF9PU19GVUNIU0lBKQorIyBkZWZpbmUgR1RFU1RfSEFTX0RF
QVRIX1RFU1QgMQogI2VuZGlmCiAKLS8vIFdlIGRvbid0IHN1cHBvcnQgTVNWQyA3LjEgd2l0aCBl
eGNlcHRpb25zIGRpc2FibGVkIG5vdy4gIFRoZXJlZm9yZQotLy8gYWxsIHRoZSBjb21waWxlcnMg
d2UgY2FyZSBhYm91dCBhcmUgYWRlcXVhdGUgZm9yIHN1cHBvcnRpbmcKLS8vIHZhbHVlLXBhcmFt
ZXRlcml6ZWQgdGVzdHMuCi0jZGVmaW5lIEdURVNUX0hBU19QQVJBTV9URVNUIDEKLQogLy8gRGV0
ZXJtaW5lcyB3aGV0aGVyIHRvIHN1cHBvcnQgdHlwZS1kcml2ZW4gdGVzdHMuCiAKIC8vIFR5cGVk
IHRlc3RzIG5lZWQgPHR5cGVpbmZvPiBhbmQgdmFyaWFkaWMgbWFjcm9zLCB3aGljaCBHQ0MsIFZD
KysgOC4wLAotLy8gU3VuIFBybyBDQywgYW5kIElCTSBWaXN1YWwgQWdlIHN1cHBvcnQuCisvLyBT
dW4gUHJvIENDLCBJQk0gVmlzdWFsIEFnZSwgYW5kIEhQIGFDQyBzdXBwb3J0LgogI2lmIGRlZmlu
ZWQoX19HTlVDX18pIHx8IChfTVNDX1ZFUiA+PSAxNDAwKSB8fCBkZWZpbmVkKF9fU1VOUFJPX0ND
KSB8fCBcCi0gICAgZGVmaW5lZChfX0lCTUNQUF9fKQotI2RlZmluZSBHVEVTVF9IQVNfVFlQRURf
VEVTVCAxCi0jZGVmaW5lIEdURVNUX0hBU19UWVBFRF9URVNUX1AgMQorICAgIGRlZmluZWQoX19J
Qk1DUFBfXykgfHwgZGVmaW5lZChfX0hQX2FDQykKKyMgZGVmaW5lIEdURVNUX0hBU19UWVBFRF9U
RVNUIDEKKyMgZGVmaW5lIEdURVNUX0hBU19UWVBFRF9URVNUX1AgMQogI2VuZGlmCiAKIC8vIERl
dGVybWluZXMgd2hldGhlciB0byBzdXBwb3J0IENvbWJpbmUoKS4gVGhpcyBvbmx5IG1ha2VzIHNl
bnNlIHdoZW4KIC8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQuICBUaGUg
aW1wbGVtZW50YXRpb24gZG9lc24ndAogLy8gd29yayBvbiBTdW4gU3R1ZGlvIHNpbmNlIGl0IGRv
ZXNuJ3QgdW5kZXJzdGFuZCB0ZW1wbGF0ZWQgY29udmVyc2lvbgogLy8gb3BlcmF0b3JzLgotI2lm
IEdURVNUX0hBU19QQVJBTV9URVNUICYmIEdURVNUX0hBU19UUjFfVFVQTEUgJiYgIWRlZmluZWQo
X19TVU5QUk9fQ0MpCi0jZGVmaW5lIEdURVNUX0hBU19DT01CSU5FIDEKKyNpZiAoR1RFU1RfSEFT
X1RSMV9UVVBMRSB8fCBHVEVTVF9IQVNfU1REX1RVUExFXykgJiYgIWRlZmluZWQoX19TVU5QUk9f
Q0MpCisjIGRlZmluZSBHVEVTVF9IQVNfQ09NQklORSAxCiAjZW5kaWYKIAogLy8gRGV0ZXJtaW5l
cyB3aGV0aGVyIHRoZSBzeXN0ZW0gY29tcGlsZXIgdXNlcyBVVEYtMTYgZm9yIGVuY29kaW5nIHdp
ZGUgc3RyaW5ncy4KICNkZWZpbmUgR1RFU1RfV0lERV9TVFJJTkdfVVNFU19VVEYxNl8gXAogICAg
IChHVEVTVF9PU19XSU5ET1dTIHx8IEdURVNUX09TX0NZR1dJTiB8fCBHVEVTVF9PU19TWU1CSUFO
IHx8IEdURVNUX09TX0FJWCkKIAorLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRlc3QgcmVzdWx0cyBj
YW4gYmUgc3RyZWFtZWQgdG8gYSBzb2NrZXQuCisjaWYgR1RFU1RfT1NfTElOVVgKKyMgZGVmaW5l
IEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18gMQorI2VuZGlmCisKIC8vIERlZmluZXMgc29tZSB1
dGlsaXR5IG1hY3Jvcy4KIAogLy8gVGhlIEdOVSBjb21waWxlciBlbWl0cyBhIHdhcm5pbmcgaWYg
bmVzdGVkICJpZiIgc3RhdGVtZW50cyBhcmUgZm9sbG93ZWQgYnkKQEAgLTU0NSw5ICs4NzEsOSBA
QAogLy8KIC8vIFRoZSAic3dpdGNoICgwKSBjYXNlIDA6IiBpZGlvbSBpcyB1c2VkIHRvIHN1cHBy
ZXNzIHRoaXMuCiAjaWZkZWYgX19JTlRFTF9DT01QSUxFUgotI2RlZmluZSBHVEVTVF9BTUJJR1VP
VVNfRUxTRV9CTE9DS0VSXworIyBkZWZpbmUgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8K
ICNlbHNlCi0jZGVmaW5lIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIHN3aXRjaCAoMCkg
Y2FzZSAwOiAgLy8gTk9MSU5UCisjIGRlZmluZSBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VS
XyBzd2l0Y2ggKDApIGNhc2UgMDogZGVmYXVsdDogIC8vIE5PTElOVAogI2VuZGlmCiAKIC8vIFVz
ZSB0aGlzIGFubm90YXRpb24gYXQgdGhlIGVuZCBvZiBhIHN0cnVjdC9jbGFzcyBkZWZpbml0aW9u
IHRvCkBAIC01NjIsMjAgKzg4OCw0OSBAQAogLy8gQWxzbyB1c2UgaXQgYWZ0ZXIgYSB2YXJpYWJs
ZSBvciBwYXJhbWV0ZXIgZGVjbGFyYXRpb24gdG8gdGVsbCB0aGUKIC8vIGNvbXBpbGVyIHRoZSB2
YXJpYWJsZS9wYXJhbWV0ZXIgZG9lcyBub3QgaGF2ZSB0byBiZSB1c2VkLgogI2lmIGRlZmluZWQo
X19HTlVDX18pICYmICFkZWZpbmVkKENPTVBJTEVSX0lDQykKLSNkZWZpbmUgR1RFU1RfQVRUUklC
VVRFX1VOVVNFRF8gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCisjIGRlZmluZSBHVEVTVF9BVFRS
SUJVVEVfVU5VU0VEXyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKKyNlbGlmIGRlZmluZWQoX19j
bGFuZ19fKQorIyBpZiBfX2hhc19hdHRyaWJ1dGUodW51c2VkKQorIyAgZGVmaW5lIEdURVNUX0FU
VFJJQlVURV9VTlVTRURfIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQorIyBlbmRpZgorI2VuZGlm
CisjaWZuZGVmIEdURVNUX0FUVFJJQlVURV9VTlVTRURfCisjIGRlZmluZSBHVEVTVF9BVFRSSUJV
VEVfVU5VU0VEXworI2VuZGlmCisKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisjIGRlZmluZSBHVEVT
VF9DWFgxMV9FUVVBTFNfREVMRVRFXyA9IGRlbGV0ZQorI2Vsc2UgIC8vIEdURVNUX0xBTkdfQ1hY
MTEKKyMgZGVmaW5lIEdURVNUX0NYWDExX0VRVUFMU19ERUxFVEVfCisjZW5kaWYgIC8vIEdURVNU
X0xBTkdfQ1hYMTEKKworLy8gVXNlIHRoaXMgYW5ub3RhdGlvbiBiZWZvcmUgYSBmdW5jdGlvbiB0
aGF0IHRha2VzIGEgcHJpbnRmIGZvcm1hdCBzdHJpbmcuCisjaWYgKGRlZmluZWQoX19HTlVDX18p
IHx8IGRlZmluZWQoX19jbGFuZ19fKSkgJiYgIWRlZmluZWQoQ09NUElMRVJfSUNDKQorIyBpZiBk
ZWZpbmVkKF9fTUlOR1dfUFJJTlRGX0ZPUk1BVCkKKy8vIE1pbkdXIGhhcyB0d28gZGlmZmVyZW50
IHByaW50ZiBpbXBsZW1lbnRhdGlvbnMuIEVuc3VyZSB0aGUgZm9ybWF0IG1hY3JvCisvLyBtYXRj
aGVzIHRoZSBzZWxlY3RlZCBpbXBsZW1lbnRhdGlvbi4gU2VlCisvLyBodHRwczovL3NvdXJjZWZv
cmdlLm5ldC9wL21pbmd3LXc2NC93aWtpMi9nbnUlMjBwcmludGYvLgorIyAgZGVmaW5lIEdURVNU
X0FUVFJJQlVURV9QUklOVEZfKHN0cmluZ19pbmRleCwgZmlyc3RfdG9fY2hlY2spIFwKKyAgICAg
ICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fTUlOR1dfUFJJTlRGX0ZPUk1BVCwgc3RyaW5n
X2luZGV4LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF90b19jaGVj
aykpKQorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX1BSSU5URl8oc3RyaW5nX2lu
ZGV4LCBmaXJzdF90b19jaGVjaykgXAorICAgICAgIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18o
X19wcmludGZfXywgc3RyaW5nX2luZGV4LCBmaXJzdF90b19jaGVjaykpKQorIyBlbmRpZgogI2Vs
c2UKLSNkZWZpbmUgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8KKyMgZGVmaW5lIEdURVNUX0FUVFJJ
QlVURV9QUklOVEZfKHN0cmluZ19pbmRleCwgZmlyc3RfdG9fY2hlY2spCiAjZW5kaWYKIAorCiAv
LyBBIG1hY3JvIHRvIGRpc2FsbG93IG9wZXJhdG9yPQogLy8gVGhpcyBzaG91bGQgYmUgdXNlZCBp
biB0aGUgcHJpdmF0ZTogZGVjbGFyYXRpb25zIGZvciBhIGNsYXNzLgotI2RlZmluZSBHVEVTVF9E
SVNBTExPV19BU1NJR05fKHR5cGUpXAotICB2b2lkIG9wZXJhdG9yPSh0eXBlIGNvbnN0ICYpCisj
ZGVmaW5lIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8odHlwZSkgXAorICB2b2lkIG9wZXJhdG9yPSh0
eXBlIGNvbnN0ICYpIEdURVNUX0NYWDExX0VRVUFMU19ERUxFVEVfCiAKIC8vIEEgbWFjcm8gdG8g
ZGlzYWxsb3cgY29weSBjb25zdHJ1Y3RvciBhbmQgb3BlcmF0b3I9CiAvLyBUaGlzIHNob3VsZCBi
ZSB1c2VkIGluIHRoZSBwcml2YXRlOiBkZWNsYXJhdGlvbnMgZm9yIGEgY2xhc3MuCi0jZGVmaW5l
IEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8odHlwZSlcCi0gIHR5cGUodHlwZSBjb25z
dCAmKTtcCisjZGVmaW5lIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8odHlwZSkgXAor
ICB0eXBlKHR5cGUgY29uc3QgJikgR1RFU1RfQ1hYMTFfRVFVQUxTX0RFTEVURV87IFwKICAgR1RF
U1RfRElTQUxMT1dfQVNTSUdOXyh0eXBlKQogCiAvLyBUZWxsIHRoZSBjb21waWxlciB0byB3YXJu
IGFib3V0IHVudXNlZCByZXR1cm4gdmFsdWVzIGZvciBmdW5jdGlvbnMgZGVjbGFyZWQKQEAgLTU4
NCw3MiArOTM5LDI1MCBAQAogLy8KIC8vICAgU3Byb2NrZXQqIEFsbG9jYXRlU3Byb2NrZXQoKSBH
VEVTVF9NVVNUX1VTRV9SRVNVTFRfOwogI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChHVEVTVF9H
Q0NfVkVSXyA+PSAzMDQwMCkgJiYgIWRlZmluZWQoQ09NUElMRVJfSUNDKQotI2RlZmluZSBHVEVT
VF9NVVNUX1VTRV9SRVNVTFRfIF9fYXR0cmlidXRlX18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKQor
IyBkZWZpbmUgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXyBfX2F0dHJpYnV0ZV9fICgod2Fybl91bnVz
ZWRfcmVzdWx0KSkKICNlbHNlCi0jZGVmaW5lIEdURVNUX01VU1RfVVNFX1JFU1VMVF8KKyMgZGVm
aW5lIEdURVNUX01VU1RfVVNFX1JFU1VMVF8KICNlbmRpZiAgLy8gX19HTlVDX18gJiYgKEdURVNU
X0dDQ19WRVJfID49IDMwNDAwKSAmJiAhQ09NUElMRVJfSUNDCiAKKy8vIE1TIEMrKyBjb21waWxl
ciBlbWl0cyB3YXJuaW5nIHdoZW4gYSBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbXBpbGUg
dGltZQorLy8gY29uc3RhbnQuIEluIHNvbWUgY29udGV4dHMgdGhpcyB3YXJuaW5nIGlzIGZhbHNl
IHBvc2l0aXZlIGFuZCBuZWVkcyB0byBiZQorLy8gc3VwcHJlc3NlZC4gVXNlIHRoZSBmb2xsb3dp
bmcgdHdvIG1hY3JvcyBpbiBzdWNoIGNhc2VzOgorLy8KKy8vIEdURVNUX0lOVEVOVElPTkFMX0NP
TlNUX0NPTkRfUFVTSF8oKQorLy8gd2hpbGUgKHRydWUpIHsKKy8vIEdURVNUX0lOVEVOVElPTkFM
X0NPTlNUX0NPTkRfUE9QXygpCisvLyB9CisjIGRlZmluZSBHVEVTVF9JTlRFTlRJT05BTF9DT05T
VF9DT05EX1BVU0hfKCkgXAorICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQx
MjcpCisjIGRlZmluZSBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BPUF8oKSBcCisgICAg
R1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCisKIC8vIERldGVybWluZSB3aGV0aGVy
IHRoZSBjb21waWxlciBzdXBwb3J0cyBNaWNyb3NvZnQncyBTdHJ1Y3R1cmVkIEV4Y2VwdGlvbgog
Ly8gSGFuZGxpbmcuICBUaGlzIGlzIHN1cHBvcnRlZCBieSBzZXZlcmFsIFdpbmRvd3MgY29tcGls
ZXJzIGJ1dCBnZW5lcmFsbHkKIC8vIGRvZXMgbm90IGV4aXN0IG9uIGFueSBvdGhlciBzeXN0ZW0u
CiAjaWZuZGVmIEdURVNUX0hBU19TRUgKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzLCBzbyB3
ZSBuZWVkIHRvIGZpZ3VyZSBpdCBvdXQuCiAKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZp
bmVkKF9fQk9STEFORENfXykKKyMgaWYgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX0JP
UkxBTkRDX18pCiAvLyBUaGVzZSB0d28gY29tcGlsZXJzIGFyZSBrbm93biB0byBzdXBwb3J0IFNF
SC4KLSNkZWZpbmUgR1RFU1RfSEFTX1NFSCAxCi0jZWxzZQorIyAgZGVmaW5lIEdURVNUX0hBU19T
RUggMQorIyBlbHNlCiAvLyBBc3N1bWUgbm8gU0VILgotI2RlZmluZSBHVEVTVF9IQVNfU0VIIDAK
LSNlbmRpZgorIyAgZGVmaW5lIEdURVNUX0hBU19TRUggMAorIyBlbmRpZgogCi0jZW5kaWYgIC8v
IEdURVNUX0hBU19TRUgKKyNkZWZpbmUgR1RFU1RfSVNfVEhSRUFEU0FGRSBcCisgICAgKEdURVNU
X0hBU19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMXyBcCisgICAgIHx8IChHVEVTVF9PU19XSU5ET1dT
ICYmICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUKSBcCisg
ICAgIHx8IEdURVNUX0hBU19QVEhSRUFEKQogCi0jaWZkZWYgX01TQ19WRVIKKyNlbmRpZiAgLy8g
R1RFU1RfSEFTX1NFSAogCi0jaWYgR1RFU1RfTElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZCi0jZGVm
aW5lIEdURVNUX0FQSV8gX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jZWxpZiBHVEVTVF9DUkVBVEVf
U0hBUkVEX0xJQlJBUlkKLSNkZWZpbmUgR1RFU1RfQVBJXyBfX2RlY2xzcGVjKGRsbGV4cG9ydCkK
LSNlbmRpZgorLy8gR1RFU1RfQVBJXyBxdWFsaWZpZXMgYWxsIHN5bWJvbHMgdGhhdCBtdXN0IGJl
IGV4cG9ydGVkLiBUaGUgZGVmaW5pdGlvbnMgYmVsb3cKKy8vIGFyZSBndWFyZGVkIGJ5ICNpZm5k
ZWYgdG8gZ2l2ZSBlbWJlZGRlcnMgYSBjaGFuY2UgdG8gZGVmaW5lIEdURVNUX0FQSV8gaW4KKy8v
IGd0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmgKKyNpZm5kZWYgR1RFU1RfQVBJXwog
CisjaWZkZWYgX01TQ19WRVIKKyMgaWYgR1RFU1RfTElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZCisj
ICBkZWZpbmUgR1RFU1RfQVBJXyBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyMgZWxpZiBHVEVTVF9D
UkVBVEVfU0hBUkVEX0xJQlJBUlkKKyMgIGRlZmluZSBHVEVTVF9BUElfIF9fZGVjbHNwZWMoZGxs
ZXhwb3J0KQorIyBlbmRpZgorI2VsaWYgX19HTlVDX18gPj0gNCB8fCBkZWZpbmVkKF9fY2xhbmdf
XykKKyMgZGVmaW5lIEdURVNUX0FQSV8gX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1
bHQiKSkpCiAjZW5kaWYgIC8vIF9NU0NfVkVSCiAKKyNlbmRpZiAgLy8gR1RFU1RfQVBJXworCiAj
aWZuZGVmIEdURVNUX0FQSV8KLSNkZWZpbmUgR1RFU1RfQVBJXworIyBkZWZpbmUgR1RFU1RfQVBJ
XworI2VuZGlmICAvLyBHVEVTVF9BUElfCisKKyNpZm5kZWYgR1RFU1RfREVGQVVMVF9ERUFUSF9U
RVNUX1NUWUxFCisjIGRlZmluZSBHVEVTVF9ERUZBVUxUX0RFQVRIX1RFU1RfU1RZTEUgICJmYXN0
IgorI2VuZGlmICAvLyBHVEVTVF9ERUZBVUxUX0RFQVRIX1RFU1RfU1RZTEUKKworI2lmZGVmIF9f
R05VQ19fCisvLyBBc2sgdGhlIGNvbXBpbGVyIHRvIG5ldmVyIGlubGluZSBhIGdpdmVuIGZ1bmN0
aW9uLgorIyBkZWZpbmUgR1RFU1RfTk9fSU5MSU5FXyBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkp
CisjZWxzZQorIyBkZWZpbmUgR1RFU1RfTk9fSU5MSU5FXwogI2VuZGlmCiAKKy8vIF9MSUJDUFBf
VkVSU0lPTiBpcyBkZWZpbmVkIGJ5IHRoZSBsaWJjKysgbGlicmFyeSBmcm9tIHRoZSBMTFZNIHBy
b2plY3QuCisjaWYgIWRlZmluZWQoR1RFU1RfSEFTX0NYWEFCSV9IXykKKyMgaWYgZGVmaW5lZChf
X0dMSUJDWFhfXykgfHwgKGRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKSAmJiAhZGVmaW5lZChfTVND
X1ZFUikpCisjICBkZWZpbmUgR1RFU1RfSEFTX0NYWEFCSV9IXyAxCisjIGVsc2UKKyMgIGRlZmlu
ZSBHVEVTVF9IQVNfQ1hYQUJJX0hfIDAKKyMgZW5kaWYKKyNlbmRpZgorCisvLyBBIGZ1bmN0aW9u
IGxldmVsIGF0dHJpYnV0ZSB0byBkaXNhYmxlIGNoZWNraW5nIGZvciB1c2Ugb2YgdW5pbml0aWFs
aXplZAorLy8gbWVtb3J5IHdoZW4gYnVpbHQgd2l0aCBNZW1vcnlTYW5pdGl6ZXIuCisjaWYgZGVm
aW5lZChfX2NsYW5nX18pCisjIGlmIF9faGFzX2ZlYXR1cmUobWVtb3J5X3Nhbml0aXplcikKKyMg
IGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfTUVNT1JZXyBcCisgICAgICAgX19h
dHRyaWJ1dGVfXygobm9fc2FuaXRpemVfbWVtb3J5KSkKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNU
X0FUVFJJQlVURV9OT19TQU5JVElaRV9NRU1PUllfCisjIGVuZGlmICAvLyBfX2hhc19mZWF0dXJl
KG1lbW9yeV9zYW5pdGl6ZXIpCisjZWxzZQorIyBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NB
TklUSVpFX01FTU9SWV8KKyNlbmRpZiAgLy8gX19jbGFuZ19fCisKKy8vIEEgZnVuY3Rpb24gbGV2
ZWwgYXR0cmlidXRlIHRvIGRpc2FibGUgQWRkcmVzc1Nhbml0aXplciBpbnN0cnVtZW50YXRpb24u
CisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisjIGlmIF9faGFzX2ZlYXR1cmUoYWRkcmVzc19zYW5p
dGl6ZXIpCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX0FERFJFU1NfIFwK
KyAgICAgICBfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV9hZGRyZXNzKSkKKyMgZWxzZQorIyAg
ZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTXworIyBlbmRpZiAgLy8g
X19oYXNfZmVhdHVyZShhZGRyZXNzX3Nhbml0aXplcikKKyNlbHNlCisjIGRlZmluZSBHVEVTVF9B
VFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTU18KKyNlbmRpZiAgLy8gX19jbGFuZ19fCisKKy8v
IEEgZnVuY3Rpb24gbGV2ZWwgYXR0cmlidXRlIHRvIGRpc2FibGUgVGhyZWFkU2FuaXRpemVyIGlu
c3RydW1lbnRhdGlvbi4KKyNpZiBkZWZpbmVkKF9fY2xhbmdfXykKKyMgaWYgX19oYXNfZmVhdHVy
ZSh0aHJlYWRfc2FuaXRpemVyKQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVEla
RV9USFJFQURfIFwKKyAgICAgICBfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV90aHJlYWQpKQor
IyBlbHNlCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KKyMg
ZW5kaWYgIC8vIF9faGFzX2ZlYXR1cmUodGhyZWFkX3Nhbml0aXplcikKKyNlbHNlCisjIGRlZmlu
ZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXworI2VuZGlmICAvLyBfX2NsYW5n
X18KKwogbmFtZXNwYWNlIHRlc3RpbmcgewogCiBjbGFzcyBNZXNzYWdlOwogCisjaWYgZGVmaW5l
ZChHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfKQorLy8gSW1wb3J0IHR1cGxlIGFuZCBmcmllbmRzIGlu
dG8gdGhlIDo6dGVzdGluZyBuYW1lc3BhY2UuCisvLyBJdCBpcyBwYXJ0IG9mIG91ciBpbnRlcmZh
Y2UsIGhhdmluZyB0aGVtIGluIDo6dGVzdGluZyBhbGxvd3MgdXMgdG8gY2hhbmdlCisvLyB0aGVp
ciB0eXBlcyBhcyBuZWVkZWQuCit1c2luZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjpnZXQ7Cit1
c2luZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjptYWtlX3R1cGxlOwordXNpbmcgR1RFU1RfVFVQ
TEVfTkFNRVNQQUNFXzo6dHVwbGU7Cit1c2luZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjp0dXBs
ZV9zaXplOwordXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXzo6dHVwbGVfZWxlbWVudDsKKyNl
bmRpZiAgLy8gZGVmaW5lZChHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfKQorCiBuYW1lc3BhY2UgaW50
ZXJuYWwgewogCi1jbGFzcyBTdHJpbmc7CisvLyBBIHNlY3JldCB0eXBlIHRoYXQgR29vZ2xlIFRl
c3QgdXNlcnMgZG9uJ3Qga25vdyBhYm91dC4gIEl0IGhhcyBubworLy8gZGVmaW5pdGlvbiBvbiBw
dXJwb3NlLiAgVGhlcmVmb3JlIGl0J3MgaW1wb3NzaWJsZSB0byBjcmVhdGUgYQorLy8gU2VjcmV0
IG9iamVjdCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LgorY2xhc3MgU2VjcmV0OwogCi1jbGFzcyBT
dHJTdHJlYW0gOiBwdWJsaWMgOjpzdGQ6OnN0cmluZ3N0cmVhbSB7Ci0gcHVibGljOgotICB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9Ci0gIHZvaWQqIG9w
ZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfQorLy8gVGhlIEdURVNU
X0NPTVBJTEVfQVNTRVJUXyBtYWNybyBjYW4gYmUgdXNlZCB0byB2ZXJpZnkgdGhhdCBhIGNvbXBp
bGUgdGltZQorLy8gZXhwcmVzc2lvbiBpcyB0cnVlLiBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIHVz
ZSBpdCB0byB2ZXJpZnkgdGhlCisvLyBzaXplIG9mIGEgc3RhdGljIGFycmF5OgorLy8KKy8vICAg
R1RFU1RfQ09NUElMRV9BU1NFUlRfKEdURVNUX0FSUkFZX1NJWkVfKG5hbWVzKSA9PSBOVU1fTkFN
RVMsCisvLyAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc19pbmNvcnJlY3Rfc2l6ZSk7Cisv
LworLy8gb3IgdG8gbWFrZSBzdXJlIGEgc3RydWN0IGlzIHNtYWxsZXIgdGhhbiBhIGNlcnRhaW4g
c2l6ZToKKy8vCisvLyAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhzaXplb2YoZm9vKSA8IDEyOCwg
Zm9vX3Rvb19sYXJnZSk7CisvLworLy8gVGhlIHNlY29uZCBhcmd1bWVudCB0byB0aGUgbWFjcm8g
aXMgdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlLiBJZgorLy8gdGhlIGV4cHJlc3Npb24gaXMgZmFs
c2UsIG1vc3QgY29tcGlsZXJzIHdpbGwgaXNzdWUgYSB3YXJuaW5nL2Vycm9yCisvLyBjb250YWlu
aW5nIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZS4KKworI2lmIEdURVNUX0xBTkdfQ1hYMTEKKyMg
ZGVmaW5lIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhleHByLCBtc2cpIHN0YXRpY19hc3NlcnQoZXhw
ciwgI21zZykKKyNlbHNlICAvLyAhR1RFU1RfTEFOR19DWFgxMQordGVtcGxhdGUgPGJvb2w+Cisg
IHN0cnVjdCBDb21waWxlQXNzZXJ0IHsKK307CiAKLSAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVf
dCBzaXplKSB7Ci0gICAgcmV0dXJuIG1hbGxvYyhzaXplKTsKLSAgfQorIyBkZWZpbmUgR1RFU1Rf
Q09NUElMRV9BU1NFUlRfKGV4cHIsIG1zZykgXAorICB0eXBlZGVmIDo6dGVzdGluZzo6aW50ZXJu
YWw6OkNvbXBpbGVBc3NlcnQ8KHN0YXRpY19jYXN0PGJvb2w+KGV4cHIpKT4gXAorICAgICAgbXNn
W3N0YXRpY19jYXN0PGJvb2w+KGV4cHIpID8gMSA6IC0xXSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VE
XworI2VuZGlmICAvLyAhR1RFU1RfTEFOR19DWFgxMQogCi0gIHZvaWQgb3BlcmF0b3IgZGVsZXRl
KHZvaWQqIHApIHsKLSAgICBmcmVlKHApOwotICB9CisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWxz
IG9mIEdURVNUX0NPTVBJTEVfQVNTRVJUXzoKKy8vCisvLyAoSW4gQysrMTEsIHdlIHNpbXBseSB1
c2Ugc3RhdGljX2Fzc2VydCBpbnN0ZWFkIG9mIHRoZSBmb2xsb3dpbmcpCisvLworLy8gLSBHVEVT
VF9DT01QSUxFX0FTU0VSVF8gd29ya3MgYnkgZGVmaW5pbmcgYW4gYXJyYXkgdHlwZSB0aGF0IGhh
cyAtMQorLy8gICBlbGVtZW50cyAoYW5kIHRodXMgaXMgaW52YWxpZCkgd2hlbiB0aGUgZXhwcmVz
c2lvbiBpcyBmYWxzZS4KKy8vCisvLyAtIFRoZSBzaW1wbGVyIGRlZmluaXRpb24KKy8vCisvLyAg
ICAjZGVmaW5lIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhleHByLCBtc2cpIHR5cGVkZWYgY2hhciBt
c2dbKGV4cHIpID8gMSA6IC0xXQorLy8KKy8vICAgZG9lcyBub3Qgd29yaywgYXMgZ2NjIHN1cHBv
cnRzIHZhcmlhYmxlLWxlbmd0aCBhcnJheXMgd2hvc2Ugc2l6ZXMKKy8vICAgYXJlIGRldGVybWlu
ZWQgYXQgcnVuLXRpbWUgKHRoaXMgaXMgZ2NjJ3MgZXh0ZW5zaW9uIGFuZCBub3QgcGFydAorLy8g
ICBvZiB0aGUgQysrIHN0YW5kYXJkKS4gIEFzIGEgcmVzdWx0LCBnY2MgZmFpbHMgdG8gcmVqZWN0
IHRoZQorLy8gICBmb2xsb3dpbmcgY29kZSB3aXRoIHRoZSBzaW1wbGUgZGVmaW5pdGlvbjoKKy8v
CisvLyAgICAgaW50IGZvbzsKKy8vICAgICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oZm9vLCBtc2cp
OyAvLyBub3Qgc3VwcG9zZWQgdG8gY29tcGlsZSBhcyBmb28gaXMKKy8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBub3QgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuCisv
LworLy8gLSBCeSB1c2luZyB0aGUgdHlwZSBDb21waWxlQXNzZXJ0PChib29sKGV4cHIpKT4sIHdl
IGVuc3VyZXMgdGhhdAorLy8gICBleHByIGlzIGEgY29tcGlsZS10aW1lIGNvbnN0YW50LiAgKFRl
bXBsYXRlIGFyZ3VtZW50cyBtdXN0IGJlCisvLyAgIGRldGVybWluZWQgYXQgY29tcGlsZS10aW1l
LikKKy8vCisvLyAtIFRoZSBvdXR0ZXIgcGFyZW50aGVzZXMgaW4gQ29tcGlsZUFzc2VydDwoYm9v
bChleHByKSk+IGFyZSBuZWNlc3NhcnkKKy8vICAgdG8gd29yayBhcm91bmQgYSBidWcgaW4gZ2Nj
IDMuNC40IGFuZCA0LjAuMS4gIElmIHdlIGhhZCB3cml0dGVuCisvLworLy8gICAgIENvbXBpbGVB
c3NlcnQ8Ym9vbChleHByKT4KKy8vCisvLyAgIGluc3RlYWQsIHRoZXNlIGNvbXBpbGVycyB3aWxs
IHJlZnVzZSB0byBjb21waWxlCisvLworLy8gICAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyg1ID4g
MCwgc29tZV9tZXNzYWdlKTsKKy8vCisvLyAgIChUaGV5IHNlZW0gdG8gdGhpbmsgdGhlICI+IiBp
biAiNSA+IDAiIG1hcmtzIHRoZSBlbmQgb2YgdGhlCisvLyAgIHRlbXBsYXRlIGFyZ3VtZW50IGxp
c3QuKQorLy8KKy8vIC0gVGhlIGFycmF5IHNpemUgaXMgKGJvb2woZXhwcikgPyAxIDogLTEpLCBp
bnN0ZWFkIG9mIHNpbXBseQorLy8KKy8vICAgICAoKGV4cHIpID8gMSA6IC0xKS4KKy8vCisvLyAg
IFRoaXMgaXMgdG8gYXZvaWQgcnVubmluZyBpbnRvIGEgYnVnIGluIE1TIFZDIDcuMSwgd2hpY2gK
Ky8vICAgY2F1c2VzICgoMC4wKSA/IDEgOiAtMSkgdG8gaW5jb3JyZWN0bHkgZXZhbHVhdGUgdG8g
MS4KIAotICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgewotICAgIHJldHVybiBt
YWxsb2Moc2l6ZSk7Ci0gIH0KKy8vIFN0YXRpY0Fzc2VydFR5cGVFcUhlbHBlciBpcyB1c2VkIGJ5
IFN0YXRpY0Fzc2VydFR5cGVFcSBkZWZpbmVkIGluIGd0ZXN0LmguCisvLworLy8gVGhpcyB0ZW1w
bGF0ZSBpcyBkZWNsYXJlZCwgYnV0IGludGVudGlvbmFsbHkgdW5kZWZpbmVkLgordGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3N0cnVjdCBTdGF0aWNBc3NlcnRUeXBlRXFIZWxw
ZXI7CiAKLSAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7Ci0gICAgZnJlZShwKTsK
LSAgfQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgU3RhdGljQXNzZXJ0VHlwZUVxSGVs
cGVyPFQsIFQ+IHsKKyAgZW51bSB7IHZhbHVlID0gdHJ1ZSB9OwogfTsKIAorLy8gU2FtZSBhcyBz
dGQ6OmlzX3NhbWU8Pi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorc3RydWN0
IElzU2FtZSB7CisgIGVudW0geyB2YWx1ZSA9IGZhbHNlIH07Cit9OwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitzdHJ1Y3QgSXNTYW1lPFQsIFQ+IHsKKyAgZW51bSB7IHZhbHVlID0gdHJ1ZSB9Owor
fTsKIAorLy8gRXZhbHVhdGVzIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gJ2FycmF5Jy4K
KyNkZWZpbmUgR1RFU1RfQVJSQVlfU0laRV8oYXJyYXkpIChzaXplb2YoYXJyYXkpIC8gc2l6ZW9m
KGFycmF5WzBdKSkKKworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCit0eXBlZGVmIDo6c3Ry
aW5nIHN0cmluZzsKKyNlbHNlCit0eXBlZGVmIDo6c3RkOjpzdHJpbmcgc3RyaW5nOworI2VuZGlm
ICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RS
SU5HCit0eXBlZGVmIDo6d3N0cmluZyB3c3RyaW5nOworI2VsaWYgR1RFU1RfSEFTX1NURF9XU1RS
SU5HCit0eXBlZGVmIDo6c3RkOjp3c3RyaW5nIHdzdHJpbmc7CisjZW5kaWYgIC8vIEdURVNUX0hB
U19HTE9CQUxfV1NUUklORwogCiAvLyBBIGhlbHBlciBmb3Igc3VwcHJlc3Npbmcgd2FybmluZ3Mg
b24gY29uc3RhbnQgY29uZGl0aW9uLiAgSXQganVzdAogLy8gcmV0dXJucyAnY29uZGl0aW9uJy4K
QEAgLTY4NSw2ICsxMjE4LDEyIEBAIGNsYXNzIHNjb3BlZF9wdHIgewogICAgICAgcHRyXyA9IHA7
CiAgICAgfQogICB9CisKKyAgZnJpZW5kIHZvaWQgc3dhcChzY29wZWRfcHRyJiBhLCBzY29wZWRf
cHRyJiBiKSB7CisgICAgdXNpbmcgc3RkOjpzd2FwOworICAgIHN3YXAoYS5wdHJfLCBiLnB0cl8p
OworICB9CisKICBwcml2YXRlOgogICBUKiBwdHJfOwogCkBAIC02OTMsNiArMTIzMiwxMCBAQCBj
bGFzcyBzY29wZWRfcHRyIHsKIAogLy8gRGVmaW5lcyBSRS4KIAorI2lmIEdURVNUX1VTRVNfUENS
RQorLy8gaWYgdXNlZCwgUENSRSBpcyBpbmplY3RlZCBieSBjdXN0b20vZ3Rlc3QtcG9ydC5oCisj
ZWxpZiBHVEVTVF9VU0VTX1BPU0lYX1JFIHx8IEdURVNUX1VTRVNfU0lNUExFX1JFCisKIC8vIEEg
c2ltcGxlIEMrKyB3cmFwcGVyIGZvciA8cmVnZXguaD4uICBJdCB1c2VzIHRoZSBQT1NJWCBFeHRl
bmRlZAogLy8gUmVndWxhciBFeHByZXNzaW9uIHN5bnRheC4KIGNsYXNzIEdURVNUX0FQSV8gUkUg
ewpAQCAtNzA0LDkgKzEyNDcsMTEgQEAgY2xhc3MgR1RFU1RfQVBJXyBSRSB7CiAgIC8vIENvbnN0
cnVjdHMgYW4gUkUgZnJvbSBhIHN0cmluZy4KICAgUkUoY29uc3QgOjpzdGQ6OnN0cmluZyYgcmVn
ZXgpIHsgSW5pdChyZWdleC5jX3N0cigpKTsgfSAgLy8gTk9MSU5UCiAKLSNpZiBHVEVTVF9IQVNf
R0xPQkFMX1NUUklORworIyBpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCiAgIFJFKGNvbnN0
IDo6c3RyaW5nJiByZWdleCkgeyBJbml0KHJlZ2V4LmNfc3RyKCkpOyB9ICAvLyBOT0xJTlQKLSNl
bmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKworIyBlbmRpZiAgLy8gR1RFU1RfSEFT
X0dMT0JBTF9TVFJJTkcKIAogICBSRShjb25zdCBjaGFyKiByZWdleCkgeyBJbml0KHJlZ2V4KTsg
fSAgLy8gTk9MSU5UCiAgIH5SRSgpOwpAQCAtNzE5LDcgKzEyNjQsNyBAQCBjbGFzcyBHVEVTVF9B
UElfIFJFIHsKICAgLy8gUGFydGlhbE1hdGNoKHN0ciwgcmUpIHJldHVybnMgdHJ1ZSBpZmYgcmVn
dWxhciBleHByZXNzaW9uIHJlCiAgIC8vIG1hdGNoZXMgYSBzdWJzdHJpbmcgb2Ygc3RyIChpbmNs
dWRpbmcgc3RyIGl0c2VsZikuCiAgIC8vCi0gIC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBtYWtl
IEZ1bGxNYXRjaCgpIGFuZCBQYXJ0aWFsTWF0Y2goKSB3b3JrCisgIC8vIEZJWE1FOiBtYWtlIEZ1
bGxNYXRjaCgpIGFuZCBQYXJ0aWFsTWF0Y2goKSB3b3JrCiAgIC8vIHdoZW4gc3RyIGNvbnRhaW5z
IE5VTCBjaGFyYWN0ZXJzLgogICBzdGF0aWMgYm9vbCBGdWxsTWF0Y2goY29uc3QgOjpzdGQ6OnN0
cmluZyYgc3RyLCBjb25zdCBSRSYgcmUpIHsKICAgICByZXR1cm4gRnVsbE1hdGNoKHN0ci5jX3N0
cigpLCByZSk7CkBAIC03MjgsMTQgKzEyNzMsMTYgQEAgY2xhc3MgR1RFU1RfQVBJXyBSRSB7CiAg
ICAgcmV0dXJuIFBhcnRpYWxNYXRjaChzdHIuY19zdHIoKSwgcmUpOwogICB9CiAKLSNpZiBHVEVT
VF9IQVNfR0xPQkFMX1NUUklORworIyBpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCiAgIHN0
YXRpYyBib29sIEZ1bGxNYXRjaChjb25zdCA6OnN0cmluZyYgc3RyLCBjb25zdCBSRSYgcmUpIHsK
ICAgICByZXR1cm4gRnVsbE1hdGNoKHN0ci5jX3N0cigpLCByZSk7CiAgIH0KICAgc3RhdGljIGJv
b2wgUGFydGlhbE1hdGNoKGNvbnN0IDo6c3RyaW5nJiBzdHIsIGNvbnN0IFJFJiByZSkgewogICAg
IHJldHVybiBQYXJ0aWFsTWF0Y2goc3RyLmNfc3RyKCksIHJlKTsKICAgfQotI2VuZGlmICAvLyBH
VEVTVF9IQVNfR0xPQkFMX1NUUklORworCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NU
UklORwogCiAgIHN0YXRpYyBib29sIEZ1bGxNYXRjaChjb25zdCBjaGFyKiBzdHIsIGNvbnN0IFJF
JiByZSk7CiAgIHN0YXRpYyBib29sIFBhcnRpYWxNYXRjaChjb25zdCBjaGFyKiBzdHIsIGNvbnN0
IFJFJiByZSk7CkBAIC03NDMsMjIgKzEyOTAsMzggQEAgY2xhc3MgR1RFU1RfQVBJXyBSRSB7CiAg
cHJpdmF0ZToKICAgdm9pZCBJbml0KGNvbnN0IGNoYXIqIHJlZ2V4KTsKIAotICAvLyBXZSB1c2Ug
YSBjb25zdCBjaGFyKiBpbnN0ZWFkIG9mIGEgc3RyaW5nLCBhcyBHb29nbGUgVGVzdCBtYXkgYmUg
dXNlZAotICAvLyB3aGVyZSBzdHJpbmcgaXMgbm90IGF2YWlsYWJsZS4gIFdlIGFsc28gZG8gbm90
IHVzZSBHb29nbGUgVGVzdCdzIG93bgotICAvLyBTdHJpbmcgdHlwZSBoZXJlLCBpbiBvcmRlciB0
byBzaW1wbGlmeSBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGUKLSAgLy8gZmlsZXMuCisgIC8vIFdl
IHVzZSBhIGNvbnN0IGNoYXIqIGluc3RlYWQgb2YgYW4gc3RkOjpzdHJpbmcsIGFzIEdvb2dsZSBU
ZXN0IHVzZWQgdG8gYmUKKyAgLy8gdXNlZCB3aGVyZSBzdGQ6OnN0cmluZyBpcyBub3QgYXZhaWxh
YmxlLiAgRklYTUU6IGNoYW5nZSB0bworICAvLyBzdGQ6OnN0cmluZy4KICAgY29uc3QgY2hhciog
cGF0dGVybl87CiAgIGJvb2wgaXNfdmFsaWRfOwotI2lmIEdURVNUX1VTRVNfUE9TSVhfUkUKKwor
IyBpZiBHVEVTVF9VU0VTX1BPU0lYX1JFCisKICAgcmVnZXhfdCBmdWxsX3JlZ2V4XzsgICAgIC8v
IEZvciBGdWxsTWF0Y2goKS4KICAgcmVnZXhfdCBwYXJ0aWFsX3JlZ2V4XzsgIC8vIEZvciBQYXJ0
aWFsTWF0Y2goKS4KLSNlbHNlICAvLyBHVEVTVF9VU0VTX1NJTVBMRV9SRQorCisjIGVsc2UgIC8v
IEdURVNUX1VTRVNfU0lNUExFX1JFCisKICAgY29uc3QgY2hhciogZnVsbF9wYXR0ZXJuXzsgIC8v
IEZvciBGdWxsTWF0Y2goKTsKLSNlbmRpZgorCisjIGVuZGlmCiAKICAgR1RFU1RfRElTQUxMT1df
QVNTSUdOXyhSRSk7CiB9OwogCisjZW5kaWYgIC8vIEdURVNUX1VTRVNfUENSRQorCisvLyBGb3Jt
YXRzIGEgc291cmNlIGZpbGUgcGF0aCBhbmQgYSBsaW5lIG51bWJlciBhcyB0aGV5IHdvdWxkIGFw
cGVhcgorLy8gaW4gYW4gZXJyb3IgbWVzc2FnZSBmcm9tIHRoZSBjb21waWxlciB1c2VkIHRvIGNv
bXBpbGUgdGhpcyBjb2RlLgorR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEZvcm1hdEZpbGVMb2Nh
dGlvbihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7CisKKy8vIEZvcm1hdHMgYSBmaWxlIGxv
Y2F0aW9uIGZvciBjb21waWxlci1pbmRlcGVuZGVudCBYTUwgb3V0cHV0LgorLy8gQWx0aG91Z2gg
dGhpcyBmdW5jdGlvbiBpcyBub3QgcGxhdGZvcm0gZGVwZW5kZW50LCB3ZSBwdXQgaXQgbmV4dCB0
bworLy8gRm9ybWF0RmlsZUxvY2F0aW9uIGluIG9yZGVyIHRvIGNvbnRyYXN0IHRoZSB0d28gZnVu
Y3Rpb25zLgorR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEZvcm1hdENvbXBpbGVySW5kZXBlbmRl
bnRGaWxlTG9jYXRpb24oY29uc3QgY2hhciogZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lKTsKKwogLy8g
RGVmaW5lcyBsb2dnaW5nIHV0aWxpdGllczoKIC8vICAgR1RFU1RfTE9HXyhzZXZlcml0eSkgLSBs
b2dzIG1lc3NhZ2VzIGF0IHRoZSBzcGVjaWZpZWQgc2V2ZXJpdHkgbGV2ZWwuIFRoZQogLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgaXRzZWxmIGlzIHN0cmVhbWVkIGludG8gdGhl
IG1hY3JvLgpAQCAtNzkwLDEzICsxMzUzLDE4IEBAIGNsYXNzIEdURVNUX0FQSV8gR1Rlc3RMb2cg
ewogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEdUZXN0TG9nKTsKIH07CiAKLSNk
ZWZpbmUgR1RFU1RfTE9HXyhzZXZlcml0eSkgXAorI2lmICFkZWZpbmVkKEdURVNUX0xPR18pCisK
KyMgZGVmaW5lIEdURVNUX0xPR18oc2V2ZXJpdHkpIFwKICAgICA6OnRlc3Rpbmc6OmludGVybmFs
OjpHVGVzdExvZyg6OnRlc3Rpbmc6OmludGVybmFsOjpHVEVTVF8jI3NldmVyaXR5LCBcCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKS5HZXRTdHJl
YW0oKQogCiBpbmxpbmUgdm9pZCBMb2dUb1N0ZGVycigpIHt9CiBpbmxpbmUgdm9pZCBGbHVzaElu
Zm9Mb2coKSB7IGZmbHVzaChOVUxMKTsgfQogCisjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0xP
R18pCisKKyNpZiAhZGVmaW5lZChHVEVTVF9DSEVDS18pCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRB
VElPTiAtIERPIE5PVCBVU0UuCiAvLwogLy8gR1RFU1RfQ0hFQ0tfIGlzIGFuIGFsbC1tb2RlIGFz
c2VydC4gSXQgYWJvcnRzIHRoZSBwcm9ncmFtIGlmIHRoZSBjb25kaXRpb24KQEAgLTgxMSwxMiAr
MTM3OSwxMyBAQCBpbmxpbmUgdm9pZCBGbHVzaEluZm9Mb2coKSB7IGZmbHVzaChOVUxMKTsgfQog
Ly8gICAgY29uZGl0aW9uIGl0c2VsZiwgcGx1cyBhZGRpdGlvbmFsIG1lc3NhZ2Ugc3RyZWFtZWQg
aW50byBpdCwgaWYgYW55LAogLy8gICAgYW5kIHRoZW4gaXQgYWJvcnRzIHRoZSBwcm9ncmFtLiBJ
dCBhYm9ydHMgdGhlIHByb2dyYW0gaXJyZXNwZWN0aXZlIG9mCiAvLyAgICB3aGV0aGVyIGl0IGlz
IGJ1aWx0IGluIHRoZSBkZWJ1ZyBtb2RlIG9yIG5vdC4KLSNkZWZpbmUgR1RFU1RfQ0hFQ0tfKGNv
bmRpdGlvbikgXAorIyBkZWZpbmUgR1RFU1RfQ0hFQ0tfKGNvbmRpdGlvbikgXAogICAgIEdURVNU
X0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKICAgICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
SXNUcnVlKGNvbmRpdGlvbikpIFwKICAgICAgIDsgXAogICAgIGVsc2UgXAogICAgICAgR1RFU1Rf
TE9HXyhGQVRBTCkgPDwgIkNvbmRpdGlvbiAiICNjb25kaXRpb24gIiBmYWlsZWQuICIKKyNlbmRp
ZiAgLy8gIWRlZmluZWQoR1RFU1RfQ0hFQ0tfKQogCiAvLyBBbiBhbGwtbW9kZSBhc3NlcnQgdG8g
dmVyaWZ5IHRoYXQgdGhlIGdpdmVuIFBPU0lYLXN0eWxlIGZ1bmN0aW9uCiAvLyBjYWxsIHJldHVy
bnMgMCAoaW5kaWNhdGluZyBzdWNjZXNzKS4gIEtub3duIGxpbWl0YXRpb246IHRoaXMKQEAgLTgy
OCw4ICsxMzk3LDEyNSBAQCBpbmxpbmUgdm9pZCBGbHVzaEluZm9Mb2coKSB7IGZmbHVzaChOVUxM
KTsgfQogICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICNwb3NpeF9jYWxsIDw8ICJmYWlsZWQgd2l0
aCBlcnJvciAiIFwKICAgICAgICAgICAgICAgICAgICAgICA8PCBndGVzdF9lcnJvcgogCisvLyBB
ZGRzIHJlZmVyZW5jZSB0byBhIHR5cGUgaWYgaXQgaXMgbm90IGEgcmVmZXJlbmNlIHR5cGUsCisv
LyBvdGhlcndpc2UgbGVhdmVzIGl0IHVuY2hhbmdlZC4gIFRoaXMgaXMgdGhlIHNhbWUgYXMKKy8v
IHRyMTo6YWRkX3JlZmVyZW5jZSwgd2hpY2ggaXMgbm90IHdpZGVseSBhdmFpbGFibGUgeWV0Lgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQWRkUmVmZXJlbmNlIHsgdHlwZWRlZiBUJiB0
eXBlOyB9OyAgLy8gTk9MSU5UCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBBZGRSZWZl
cmVuY2U8VCY+IHsgdHlwZWRlZiBUJiB0eXBlOyB9OyAgLy8gTk9MSU5UCisKKy8vIEEgaGFuZHkg
d3JhcHBlciBhcm91bmQgQWRkUmVmZXJlbmNlIHRoYXQgd29ya3Mgd2hlbiB0aGUgYXJndW1lbnQg
VAorLy8gZGVwZW5kcyBvbiB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgorI2RlZmluZSBHVEVTVF9BRERf
UkVGRVJFTkNFXyhUKSBcCisgICAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWRkUmVm
ZXJlbmNlPFQ+Ojp0eXBlCisKKy8vIFRyYW5zZm9ybXMgIlQiIGludG8gImNvbnN0IFQmIiBhY2Nv
cmRpbmcgdG8gc3RhbmRhcmQgcmVmZXJlbmNlIGNvbGxhcHNpbmcKKy8vIHJ1bGVzICh0aGlzIGlz
IG9ubHkgbmVlZGVkIGFzIGEgYmFja3BvcnQgZm9yIEMrKzk4IGNvbXBpbGVycyB0aGF0IGRvIG5v
dAorLy8gc3VwcG9ydCByZWZlcmVuY2UgY29sbGFwc2luZykuIFNwZWNpZmljYWxseSwgaXQgdHJh
bnNmb3JtczoKKy8vCisvLyAgIGNoYXIgICAgICAgICA9PT4gY29uc3QgY2hhciYKKy8vICAgY29u
c3QgY2hhciAgID09PiBjb25zdCBjaGFyJgorLy8gICBjaGFyJiAgICAgICAgPT0+IGNoYXImCisv
LyAgIGNvbnN0IGNoYXImICA9PT4gY29uc3QgY2hhciYKKy8vCisvLyBOb3RlIHRoYXQgdGhlIG5v
bi1jb25zdCByZWZlcmVuY2Ugd2lsbCBub3QgaGF2ZSAiY29uc3QiIGFkZGVkLiBUaGlzIGlzCisv
LyBzdGFuZGFyZCwgYW5kIG5lY2Vzc2FyeSBzbyB0aGF0ICJUIiBjYW4gYWx3YXlzIGJpbmQgdG8g
ImNvbnN0IFQmIi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IENvbnN0UmVmIHsgdHlw
ZWRlZiBjb25zdCBUJiB0eXBlOyB9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQ29u
c3RSZWY8VCY+IHsgdHlwZWRlZiBUJiB0eXBlOyB9OworCisvLyBUaGUgYXJndW1lbnQgVCBtdXN0
IGRlcGVuZCBvbiBzb21lIHRlbXBsYXRlIHBhcmFtZXRlcnMuCisjZGVmaW5lIEdURVNUX1JFRkVS
RU5DRV9UT19DT05TVF8oVCkgXAorICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpDb25z
dFJlZjxUPjo6dHlwZQorCisjaWYgR1RFU1RfSEFTX1NURF9NT1ZFXwordXNpbmcgc3RkOjpmb3J3
YXJkOwordXNpbmcgc3RkOjptb3ZlOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBS
dmFsdWVSZWYgeworICB0eXBlZGVmIFQmJiB0eXBlOworfTsKKyNlbHNlICAvLyBHVEVTVF9IQVNf
U1REX01PVkVfCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0IFQmIG1vdmUoY29uc3QgVCYg
dCkgeworICByZXR1cm4gdDsKK30KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorR1RFU1RfQUREX1JF
RkVSRU5DRV8oVCkgZm9yd2FyZChHVEVTVF9BRERfUkVGRVJFTkNFXyhUKSB0KSB7IHJldHVybiB0
OyB9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IFJ2YWx1ZVJlZiB7CisgIHR5cGVk
ZWYgY29uc3QgVCYgdHlwZTsKK307CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfTU9WRV8KKwog
Ly8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KIC8v
CisvLyBVc2UgSW1wbGljaXRDYXN0XyBhcyBhIHNhZmUgdmVyc2lvbiBvZiBzdGF0aWNfY2FzdCBm
b3IgdXBjYXN0aW5nIGluCisvLyB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4gY2FzdGluZyBhIEZv
byogdG8gYSBTdXBlcmNsYXNzT2ZGb28qIG9yIGEKKy8vIGNvbnN0IEZvbyopLiAgV2hlbiB5b3Ug
dXNlIEltcGxpY2l0Q2FzdF8sIHRoZSBjb21waWxlciBjaGVja3MgdGhhdAorLy8gdGhlIGNhc3Qg
aXMgc2FmZS4gIFN1Y2ggZXhwbGljaXQgSW1wbGljaXRDYXN0X3MgYXJlIG5lY2Vzc2FyeSBpbgor
Ly8gc3VycHJpc2luZ2x5IG1hbnkgc2l0dWF0aW9ucyB3aGVyZSBDKysgZGVtYW5kcyBhbiBleGFj
dCB0eXBlIG1hdGNoCisvLyBpbnN0ZWFkIG9mIGFuIGFyZ3VtZW50IHR5cGUgY29udmVydGFibGUg
dG8gYSB0YXJnZXQgdHlwZS4KKy8vCisvLyBUaGUgc3ludGF4IGZvciB1c2luZyBJbXBsaWNpdENh
c3RfIGlzIHRoZSBzYW1lIGFzIGZvciBzdGF0aWNfY2FzdDoKKy8vCisvLyAgIEltcGxpY2l0Q2Fz
dF88VG9UeXBlPihleHByKQorLy8KKy8vIEltcGxpY2l0Q2FzdF8gd291bGQgaGF2ZSBiZWVuIHBh
cnQgb2YgdGhlIEMrKyBzdGFuZGFyZCBsaWJyYXJ5LAorLy8gYnV0IHRoZSBwcm9wb3NhbCB3YXMg
c3VibWl0dGVkIHRvbyBsYXRlLiAgSXQgd2lsbCBwcm9iYWJseSBtYWtlCisvLyBpdHMgd2F5IGlu
dG8gdGhlIGxhbmd1YWdlIGluIHRoZSBmdXR1cmUuCisvLworLy8gVGhpcyByZWxhdGl2ZWx5IHVn
bHkgbmFtZSBpcyBpbnRlbnRpb25hbC4gSXQgcHJldmVudHMgY2xhc2hlcyB3aXRoCisvLyBzaW1p
bGFyIGZ1bmN0aW9ucyB1c2VycyBtYXkgaGF2ZSAoZS5nLiwgaW1wbGljaXRfY2FzdCkuIFRoZSBp
bnRlcm5hbAorLy8gbmFtZXNwYWNlIGFsb25lIGlzIG5vdCBlbm91Z2ggYmVjYXVzZSB0aGUgZnVu
Y3Rpb24gY2FuIGJlIGZvdW5kIGJ5IEFETC4KK3RlbXBsYXRlPHR5cGVuYW1lIFRvPgoraW5saW5l
IFRvIEltcGxpY2l0Q2FzdF8oVG8geCkgeyByZXR1cm4geDsgfQorCisvLyBXaGVuIHlvdSB1cGNh
c3QgKHRoYXQgaXMsIGNhc3QgYSBwb2ludGVyIGZyb20gdHlwZSBGb28gdG8gdHlwZQorLy8gU3Vw
ZXJjbGFzc09mRm9vKSwgaXQncyBmaW5lIHRvIHVzZSBJbXBsaWNpdENhc3RfPD4sIHNpbmNlIHVw
Y2FzdHMKKy8vIGFsd2F5cyBzdWNjZWVkLiAgV2hlbiB5b3UgZG93bmNhc3QgKHRoYXQgaXMsIGNh
c3QgYSBwb2ludGVyIGZyb20KKy8vIHR5cGUgRm9vIHRvIHR5cGUgU3ViY2xhc3NPZkZvbyksIHN0
YXRpY19jYXN0PD4gaXNuJ3Qgc2FmZSwgYmVjYXVzZQorLy8gaG93IGRvIHlvdSBrbm93IHRoZSBw
b2ludGVyIGlzIHJlYWxseSBvZiB0eXBlIFN1YmNsYXNzT2ZGb28/ICBJdAorLy8gY291bGQgYmUg
YSBiYXJlIEZvbywgb3Igb2YgdHlwZSBEaWZmZXJlbnRTdWJjbGFzc09mRm9vLiAgVGh1cywKKy8v
IHdoZW4geW91IGRvd25jYXN0LCB5b3Ugc2hvdWxkIHVzZSB0aGlzIG1hY3JvLiAgSW4gZGVidWcg
bW9kZSwgd2UKKy8vIHVzZSBkeW5hbWljX2Nhc3Q8PiB0byBkb3VibGUtY2hlY2sgdGhlIGRvd25j
YXN0IGlzIGxlZ2FsICh3ZSBkaWUKKy8vIGlmIGl0J3Mgbm90KS4gIEluIG5vcm1hbCBtb2RlLCB3
ZSBkbyB0aGUgZWZmaWNpZW50IHN0YXRpY19jYXN0PD4KKy8vIGluc3RlYWQuICBUaHVzLCBpdCdz
IGltcG9ydGFudCB0byB0ZXN0IGluIGRlYnVnIG1vZGUgdG8gbWFrZSBzdXJlCisvLyB0aGUgY2Fz
dCBpcyBsZWdhbCEKKy8vICAgIFRoaXMgaXMgdGhlIG9ubHkgcGxhY2UgaW4gdGhlIGNvZGUgd2Ug
c2hvdWxkIHVzZSBkeW5hbWljX2Nhc3Q8Pi4KKy8vIEluIHBhcnRpY3VsYXIsIHlvdSBTSE9VTERO
J1QgYmUgdXNpbmcgZHluYW1pY19jYXN0PD4gaW4gb3JkZXIgdG8KKy8vIGRvIFJUVEkgKGVnIGNv
ZGUgbGlrZSB0aGlzOgorLy8gICAgaWYgKGR5bmFtaWNfY2FzdDxTdWJjbGFzczE+KGZvbykpIEhh
bmRsZUFTdWJjbGFzczFPYmplY3QoZm9vKTsKKy8vICAgIGlmIChkeW5hbWljX2Nhc3Q8U3ViY2xh
c3MyPihmb28pKSBIYW5kbGVBU3ViY2xhc3MyT2JqZWN0KGZvbyk7CisvLyBZb3Ugc2hvdWxkIGRl
c2lnbiB0aGUgY29kZSBzb21lIG90aGVyIHdheSBub3QgdG8gbmVlZCB0aGlzLgorLy8KKy8vIFRo
aXMgcmVsYXRpdmVseSB1Z2x5IG5hbWUgaXMgaW50ZW50aW9uYWwuIEl0IHByZXZlbnRzIGNsYXNo
ZXMgd2l0aAorLy8gc2ltaWxhciBmdW5jdGlvbnMgdXNlcnMgbWF5IGhhdmUgKGUuZy4sIGRvd25f
Y2FzdCkuIFRoZSBpbnRlcm5hbAorLy8gbmFtZXNwYWNlIGFsb25lIGlzIG5vdCBlbm91Z2ggYmVj
YXVzZSB0aGUgZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGJ5IEFETC4KK3RlbXBsYXRlPHR5cGVuYW1l
IFRvLCB0eXBlbmFtZSBGcm9tPiAgLy8gdXNlIGxpa2UgdGhpczogRG93bkNhc3RfPFQqPihmb28p
OworaW5saW5lIFRvIERvd25DYXN0XyhGcm9tKiBmKSB7ICAvLyBzbyB3ZSBvbmx5IGFjY2VwdCBw
b2ludGVycworICAvLyBFbnN1cmVzIHRoYXQgVG8gaXMgYSBzdWItdHlwZSBvZiBGcm9tICouICBU
aGlzIHRlc3QgaXMgaGVyZSBvbmx5CisgIC8vIGZvciBjb21waWxlLXRpbWUgdHlwZSBjaGVja2lu
ZywgYW5kIGhhcyBubyBvdmVyaGVhZCBpbiBhbgorICAvLyBvcHRpbWl6ZWQgYnVpbGQgYXQgcnVu
LXRpbWUsIGFzIGl0IHdpbGwgYmUgb3B0aW1pemVkIGF3YXkKKyAgLy8gY29tcGxldGVseS4KKyAg
R1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QVVNIXygpCisgIGlmIChmYWxzZSkgeworICBH
VEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BPUF8oKQorICAgIGNvbnN0IFRvIHRvID0gTlVM
TDsKKyAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEZyb20qPih0byk7Cisg
IH0KKworI2lmIEdURVNUX0hBU19SVFRJCisgIC8vIFJUVEk6IGRlYnVnIG1vZGUgb25seSEKKyAg
R1RFU1RfQ0hFQ0tfKGYgPT0gTlVMTCB8fCBkeW5hbWljX2Nhc3Q8VG8+KGYpICE9IE5VTEwpOwor
I2VuZGlmCisgIHJldHVybiBzdGF0aWNfY2FzdDxUbz4oZik7Cit9CisKIC8vIERvd25jYXN0cyB0
aGUgcG9pbnRlciBvZiB0eXBlIEJhc2UgdG8gRGVyaXZlZC4KIC8vIERlcml2ZWQgbXVzdCBiZSBh
IHN1YmNsYXNzIG9mIEJhc2UuIFRoZSBwYXJhbWV0ZXIgTVVTVAogLy8gcG9pbnQgdG8gYSBjbGFz
cyBvZiB0eXBlIERlcml2ZWQsIG5vdCBhbnkgc3ViY2xhc3Mgb2YgaXQuCkBAIC04MzksMTMgKzE1
MjUsMTggQEAgdGVtcGxhdGUgPGNsYXNzIERlcml2ZWQsIGNsYXNzIEJhc2U+CiBEZXJpdmVkKiBD
aGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGUoQmFzZSogYmFzZSkgewogI2lmIEdURVNUX0hBU19S
VFRJCiAgIEdURVNUX0NIRUNLXyh0eXBlaWQoKmJhc2UpID09IHR5cGVpZChEZXJpdmVkKSk7Cisj
ZW5kaWYKKworI2lmIEdURVNUX0hBU19ET1dOQ0FTVF8KKyAgcmV0dXJuIDo6ZG93bl9jYXN0PERl
cml2ZWQqPihiYXNlKTsKKyNlbGlmIEdURVNUX0hBU19SVFRJCiAgIHJldHVybiBkeW5hbWljX2Nh
c3Q8RGVyaXZlZCo+KGJhc2UpOyAgLy8gTk9MSU5UCiAjZWxzZQogICByZXR1cm4gc3RhdGljX2Nh
c3Q8RGVyaXZlZCo+KGJhc2UpOyAgLy8gUG9vciBtYW4ncyBkb3duY2FzdC4KICNlbmRpZgogfQog
Ci0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNpZiBHVEVTVF9IQVNfU1RSRUFN
X1JFRElSRUNUSU9OCiAKIC8vIERlZmluZXMgdGhlIHN0ZGVyciBjYXB0dXJlcjoKIC8vICAgQ2Fw
dHVyZVN0ZG91dCAgICAgLSBzdGFydHMgY2FwdHVyaW5nIHN0ZG91dC4KQEAgLTg1NCwzMCArMTU0
NSwzOSBAQCBEZXJpdmVkKiBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGUoQmFzZSogYmFzZSkg
ewogLy8gICBHZXRDYXB0dXJlZFN0ZGVyciAtIHN0b3BzIGNhcHR1cmluZyBzdGRlcnIgYW5kIHJl
dHVybnMgdGhlIGNhcHR1cmVkIHN0cmluZy4KIC8vCiBHVEVTVF9BUElfIHZvaWQgQ2FwdHVyZVN0
ZG91dCgpOwotR1RFU1RfQVBJXyBTdHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKTsKK0dURVNUX0FQ
SV8gc3RkOjpzdHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKTsKIEdURVNUX0FQSV8gdm9pZCBDYXB0
dXJlU3RkZXJyKCk7Ci1HVEVTVF9BUElfIFN0cmluZyBHZXRDYXB0dXJlZFN0ZGVycigpOworR1RF
U1RfQVBJXyBzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0ZGVycigpOwogCi0jZW5kaWYgIC8vIEdU
RVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCisjZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1f
UkVESVJFQ1RJT04KKy8vIFJldHVybnMgdGhlIHNpemUgKGluIGJ5dGVzKSBvZiBhIGZpbGUuCitH
VEVTVF9BUElfIHNpemVfdCBHZXRGaWxlU2l6ZShGSUxFKiBmaWxlKTsKIAorLy8gUmVhZHMgdGhl
IGVudGlyZSBjb250ZW50IG9mIGEgZmlsZSBhcyBhIHN0cmluZy4KK0dURVNUX0FQSV8gc3RkOjpz
dHJpbmcgUmVhZEVudGlyZUZpbGUoRklMRSogZmlsZSk7CiAKLSNpZiBHVEVTVF9IQVNfREVBVEhf
VEVTVAorLy8gQWxsIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCitHVEVTVF9BUElfIHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiBHZXRBcmd2cygpOwogCi0vLyBBIGNvcHkgb2YgYWxsIGNvbW1hbmQg
bGluZSBhcmd1bWVudHMuICBTZXQgYnkgSW5pdEdvb2dsZVRlc3QoKS4KLWV4dGVybiA6OnN0ZDo6
dmVjdG9yPFN0cmluZz4gZ19hcmd2czsKKyNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogCi0vLyBH
VEVTVF9IQVNfREVBVEhfVEVTVCBpbXBsaWVzIHdlIGhhdmUgOjpzdGQ6OnN0cmluZy4KLWNvbnN0
IDo6c3RkOjp2ZWN0b3I8U3RyaW5nPiYgR2V0QXJndnMoKTsKK3N0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiBHZXRJbmplY3RhYmxlQXJndnMoKTsKKy8vIERlcHJlY2F0ZWQ6IHBhc3MgdGhlIGFyZ3Mg
dmVjdG9yIGJ5IHZhbHVlIGluc3RlYWQuCit2b2lkIFNldEluamVjdGFibGVBcmd2cyhjb25zdCBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIG5ld19hcmd2cyk7Cit2b2lkIFNldEluamVjdGFibGVB
cmd2cyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIG5ld19hcmd2cyk7CisjaWYgR1RF
U1RfSEFTX0dMT0JBTF9TVFJJTkcKK3ZvaWQgU2V0SW5qZWN0YWJsZUFyZ3ZzKGNvbnN0IHN0ZDo6
dmVjdG9yPCA6OnN0cmluZz4mIG5ld19hcmd2cyk7CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9C
QUxfU1RSSU5HCit2b2lkIENsZWFySW5qZWN0YWJsZUFyZ3ZzKCk7CiAKICNlbmRpZiAgLy8gR1RF
U1RfSEFTX0RFQVRIX1RFU1QKIAogLy8gRGVmaW5lcyBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZl
cy4KLQotI2lmIEdURVNUX0hBU19QVEhSRUFECi0KLS8vIFNsZWVwcyBmb3IgKHJvdWdobHkpIG4g
bWlsbGktc2Vjb25kcy4gIFRoaXMgZnVuY3Rpb24gaXMgb25seSBmb3IKLS8vIHRlc3RpbmcgR29v
Z2xlIFRlc3QncyBvd24gY29uc3RydWN0cy4gIERvbid0IHVzZSBpdCBpbiB1c2VyIHRlc3RzLAot
Ly8gZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FG
RQorIyBpZiBHVEVTVF9IQVNfUFRIUkVBRAorLy8gU2xlZXBzIGZvciAocm91Z2hseSkgbiBtaWxs
aXNlY29uZHMuICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZm9yIHRlc3RpbmcKKy8vIEdvb2dsZSBU
ZXN0J3Mgb3duIGNvbnN0cnVjdHMuICBEb24ndCB1c2UgaXQgaW4gdXNlciB0ZXN0cywgZWl0aGVy
CisvLyBkaXJlY3RseSBvciBpbmRpcmVjdGx5LgogaW5saW5lIHZvaWQgU2xlZXBNaWxsaXNlY29u
ZHMoaW50IG4pIHsKICAgY29uc3QgdGltZXNwZWMgdGltZSA9IHsKICAgICAwLCAgICAgICAgICAg
ICAgICAgIC8vIDAgc2Vjb25kcy4KQEAgLTg4NSw3ICsxNTg1LDEzIEBAIGlubGluZSB2b2lkIFNs
ZWVwTWlsbGlzZWNvbmRzKGludCBuKSB7CiAgIH07CiAgIG5hbm9zbGVlcCgmdGltZSwgTlVMTCk7
CiB9CisjIGVuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVBRAogCisjIGlmIEdURVNUX0hBU19OT1RJ
RklDQVRJT05fCisvLyBOb3RpZmljYXRpb24gaGFzIGFscmVhZHkgYmVlbiBpbXBvcnRlZCBpbnRv
IHRoZSBuYW1lc3BhY2UuCisvLyBOb3RoaW5nIHRvIGRvIGhlcmUuCisKKyMgZWxpZiBHVEVTVF9I
QVNfUFRIUkVBRAogLy8gQWxsb3dzIGEgY29udHJvbGxlciB0aHJlYWQgdG8gcGF1c2UgZXhlY3V0
aW9uIG9mIG5ld2x5IGNyZWF0ZWQKIC8vIHRocmVhZHMgdW50aWwgbm90aWZpZWQuICBJbnN0YW5j
ZXMgb2YgdGhpcyBjbGFzcyBtdXN0IGJlIGNyZWF0ZWQKIC8vIGFuZCBkZXN0cm95ZWQgaW4gdGhl
IGNvbnRyb2xsZXIgdGhyZWFkLgpAQCAtODk0LDI1ICsxNjAwLDk2IEBAIGlubGluZSB2b2lkIFNs
ZWVwTWlsbGlzZWNvbmRzKGludCBuKSB7CiAvLyB1c2UgaXQgaW4gdXNlciB0ZXN0cywgZWl0aGVy
IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCiBjbGFzcyBOb3RpZmljYXRpb24gewogIHB1YmxpYzoK
LSAgTm90aWZpY2F0aW9uKCkgOiBub3RpZmllZF8oZmFsc2UpIHt9CisgIE5vdGlmaWNhdGlvbigp
IDogbm90aWZpZWRfKGZhbHNlKSB7CisgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRo
cmVhZF9tdXRleF9pbml0KCZtdXRleF8sIE5VTEwpKTsKKyAgfQorICB+Tm90aWZpY2F0aW9uKCkg
eworICAgIHB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmbXV0ZXhfKTsKKyAgfQogCiAgIC8vIE5vdGlm
aWVzIGFsbCB0aHJlYWRzIGNyZWF0ZWQgd2l0aCB0aGlzIG5vdGlmaWNhdGlvbiB0byBzdGFydC4g
TXVzdAogICAvLyBiZSBjYWxsZWQgZnJvbSB0aGUgY29udHJvbGxlciB0aHJlYWQuCi0gIHZvaWQg
Tm90aWZ5KCkgeyBub3RpZmllZF8gPSB0cnVlOyB9CisgIHZvaWQgTm90aWZ5KCkgeworICAgIHB0
aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXhfKTsKKyAgICBub3RpZmllZF8gPSB0cnVlOworICAgIHB0
aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleF8pOworICB9CiAKICAgLy8gQmxvY2tzIHVudGlsIHRo
ZSBjb250cm9sbGVyIHRocmVhZCBub3RpZmllcy4gTXVzdCBiZSBjYWxsZWQgZnJvbSBhIHRlc3QK
ICAgLy8gdGhyZWFkLgogICB2b2lkIFdhaXRGb3JOb3RpZmljYXRpb24oKSB7Ci0gICAgd2hpbGUo
IW5vdGlmaWVkXykgeworICAgIGZvciAoOzspIHsKKyAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygm
bXV0ZXhfKTsKKyAgICAgIGNvbnN0IGJvb2wgbm90aWZpZWQgPSBub3RpZmllZF87CisgICAgICBw
dGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXhfKTsKKyAgICAgIGlmIChub3RpZmllZCkKKyAgICAg
ICAgYnJlYWs7CiAgICAgICBTbGVlcE1pbGxpc2Vjb25kcygxMCk7CiAgICAgfQogICB9CiAKICBw
cml2YXRlOgotICB2b2xhdGlsZSBib29sIG5vdGlmaWVkXzsKKyAgcHRocmVhZF9tdXRleF90IG11
dGV4XzsKKyAgYm9vbCBub3RpZmllZF87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOXyhOb3RpZmljYXRpb24pOworfTsKKworIyBlbGlmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdU
RVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQKKworR1RFU1RfQVBJ
XyB2b2lkIFNsZWVwTWlsbGlzZWNvbmRzKGludCBuKTsKKworLy8gUHJvdmlkZXMgbGVhay1zYWZl
IFdpbmRvd3Mga2VybmVsIGhhbmRsZSBvd25lcnNoaXAuCisvLyBVc2VkIGluIGRlYXRoIHRlc3Rz
IGFuZCBpbiB0aHJlYWRpbmcgc3VwcG9ydC4KK2NsYXNzIEdURVNUX0FQSV8gQXV0b0hhbmRsZSB7
CisgcHVibGljOgorICAvLyBBc3N1bWUgdGhhdCBXaW4zMiBIQU5ETEUgdHlwZSBpcyBlcXVpdmFs
ZW50IHRvIHZvaWQqLiBEb2luZyBzbyBhbGxvd3MgdXMgdG8KKyAgLy8gYXZvaWQgaW5jbHVkaW5n
IDx3aW5kb3dzLmg+IGluIHRoaXMgaGVhZGVyIGZpbGUuIEluY2x1ZGluZyA8d2luZG93cy5oPiBp
cworICAvLyB1bmRlc2lyYWJsZSBiZWNhdXNlIGl0IGRlZmluZXMgYSBsb3Qgb2Ygc3ltYm9scyBh
bmQgbWFjcm9zIHRoYXQgdGVuZCB0bworICAvLyBjb25mbGljdCB3aXRoIGNsaWVudCBjb2RlLiBU
aGlzIGFzc3VtcHRpb24gaXMgdmVyaWZpZWQgYnkKKyAgLy8gV2luZG93c1R5cGVzVGVzdC5IQU5E
TEVJc1ZvaWRTdGFyLgorICB0eXBlZGVmIHZvaWQqIEhhbmRsZTsKKyAgQXV0b0hhbmRsZSgpOwor
ICBleHBsaWNpdCBBdXRvSGFuZGxlKEhhbmRsZSBoYW5kbGUpOworCisgIH5BdXRvSGFuZGxlKCk7
CisKKyAgSGFuZGxlIEdldCgpIGNvbnN0OworICB2b2lkIFJlc2V0KCk7CisgIHZvaWQgUmVzZXQo
SGFuZGxlIGhhbmRsZSk7CisKKyBwcml2YXRlOgorICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBo
YW5kbGUgaXMgYSB2YWxpZCBoYW5kbGUgb2JqZWN0IHRoYXQgY2FuIGJlIGNsb3NlZC4KKyAgYm9v
bCBJc0Nsb3NlYWJsZSgpIGNvbnN0OworCisgIEhhbmRsZSBoYW5kbGVfOworCisgIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQXV0b0hhbmRsZSk7Cit9OworCisvLyBBbGxvd3MgYSBj
b250cm9sbGVyIHRocmVhZCB0byBwYXVzZSBleGVjdXRpb24gb2YgbmV3bHkgY3JlYXRlZAorLy8g
dGhyZWFkcyB1bnRpbCBub3RpZmllZC4gIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIG11c3QgYmUg
Y3JlYXRlZAorLy8gYW5kIGRlc3Ryb3llZCBpbiB0aGUgY29udHJvbGxlciB0aHJlYWQuCisvLwor
Ly8gVGhpcyBjbGFzcyBpcyBvbmx5IGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0J3Mgb3duIGNvbnN0
cnVjdHMuIERvIG5vdAorLy8gdXNlIGl0IGluIHVzZXIgdGVzdHMsIGVpdGhlciBkaXJlY3RseSBv
ciBpbmRpcmVjdGx5LgorY2xhc3MgR1RFU1RfQVBJXyBOb3RpZmljYXRpb24geworIHB1YmxpYzoK
KyAgTm90aWZpY2F0aW9uKCk7CisgIHZvaWQgTm90aWZ5KCk7CisgIHZvaWQgV2FpdEZvck5vdGlm
aWNhdGlvbigpOworCisgcHJpdmF0ZToKKyAgQXV0b0hhbmRsZSBldmVudF87CiAKICAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhOb3RpZmljYXRpb24pOwogfTsKKyMgZW5kaWYgIC8v
IEdURVNUX0hBU19OT1RJRklDQVRJT05fCisKKy8vIE9uIE1pbkdXLCB3ZSBjYW4gaGF2ZSBib3Ro
IEdURVNUX09TX1dJTkRPV1MgYW5kIEdURVNUX0hBU19QVEhSRUFECisvLyBkZWZpbmVkLCBidXQg
d2UgZG9uJ3Qgd2FudCB0byB1c2UgTWluR1cncyBwdGhyZWFkcyBpbXBsZW1lbnRhdGlvbiwgd2hp
Y2gKKy8vIGhhcyBjb25mb3JtYW5jZSBwcm9ibGVtcyB3aXRoIHNvbWUgdmVyc2lvbnMgb2YgdGhl
IFBPU0lYIHN0YW5kYXJkLgorIyBpZiBHVEVTVF9IQVNfUFRIUkVBRCAmJiAhR1RFU1RfT1NfV0lO
RE9XU19NSU5HVwogCiAvLyBBcyBhIEMtZnVuY3Rpb24sIFRocmVhZEZ1bmNXaXRoQ0xpbmthZ2Ug
Y2Fubm90IGJlIHRlbXBsYXRlZCBpdHNlbGYuCiAvLyBDb25zZXF1ZW50bHksIGl0IGNhbm5vdCBz
ZWxlY3QgYSBjb3JyZWN0IGluc3RhbnRpYXRpb24gb2YgVGhyZWFkV2l0aFBhcmFtCkBAIC05NTEs
MTAgKzE3MjgsOSBAQCBleHRlcm4gIkMiIGlubGluZSB2b2lkKiBUaHJlYWRGdW5jV2l0aENMaW5r
YWdlKHZvaWQqIHRocmVhZCkgewogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBUaHJlYWRX
aXRoUGFyYW0gOiBwdWJsaWMgVGhyZWFkV2l0aFBhcmFtQmFzZSB7CiAgcHVibGljOgotICB0eXBl
ZGVmIHZvaWQgKCpVc2VyVGhyZWFkRnVuYykoVCk7CisgIHR5cGVkZWYgdm9pZCBVc2VyVGhyZWFk
RnVuYyhUKTsKIAotICBUaHJlYWRXaXRoUGFyYW0oCi0gICAgICBVc2VyVGhyZWFkRnVuYyBmdW5j
LCBUIHBhcmFtLCBOb3RpZmljYXRpb24qIHRocmVhZF9jYW5fc3RhcnQpCisgIFRocmVhZFdpdGhQ
YXJhbShVc2VyVGhyZWFkRnVuYyogZnVuYywgVCBwYXJhbSwgTm90aWZpY2F0aW9uKiB0aHJlYWRf
Y2FuX3N0YXJ0KQogICAgICAgOiBmdW5jXyhmdW5jKSwKICAgICAgICAgcGFyYW1fKHBhcmFtKSwK
ICAgICAgICAgdGhyZWFkX2Nhbl9zdGFydF8odGhyZWFkX2Nhbl9zdGFydCksCkBAIC05ODEsNyAr
MTc1Nyw3IEBAIGNsYXNzIFRocmVhZFdpdGhQYXJhbSA6IHB1YmxpYyBUaHJlYWRXaXRoUGFyYW1C
YXNlIHsKICAgfQogCiAgcHJpdmF0ZToKLSAgY29uc3QgVXNlclRocmVhZEZ1bmMgZnVuY187ICAv
LyBVc2VyLXN1cHBsaWVkIHRocmVhZCBmdW5jdGlvbi4KKyAgVXNlclRocmVhZEZ1bmMqIGNvbnN0
IGZ1bmNfOyAgLy8gVXNlci1zdXBwbGllZCB0aHJlYWQgZnVuY3Rpb24uCiAgIGNvbnN0IFQgcGFy
YW1fOyAgLy8gVXNlci1zdXBwbGllZCBwYXJhbWV0ZXIgdG8gdGhlIHRocmVhZCBmdW5jdGlvbi4K
ICAgLy8gV2hlbiBub24tTlVMTCwgdXNlZCB0byBibG9jayBleGVjdXRpb24gdW50aWwgdGhlIGNv
bnRyb2xsZXIgdGhyZWFkCiAgIC8vIG5vdGlmaWVzLgpAQCAtOTkxLDUxICsxNzY3LDMxNiBAQCBj
bGFzcyBUaHJlYWRXaXRoUGFyYW0gOiBwdWJsaWMgVGhyZWFkV2l0aFBhcmFtQmFzZSB7CiAKICAg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJlYWRXaXRoUGFyYW0pOwogfTsKKyMg
ZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTICYmIEdURVNUX0hBU19QVEhSRUFEIHx8CisgICAg
ICAgICAvLyBHVEVTVF9IQVNfTVVURVhfQU5EX1RIUkVBRF9MT0NBTF8KIAotLy8gZ3Rlc3QtcG9y
dC5oIGd1YXJhbnRlZXMgdG8gI2luY2x1ZGUgPHB0aHJlYWQuaD4gd2hlbiBHVEVTVF9IQVNfUFRI
UkVBRCBpcwotLy8gdHJ1ZS4KLSNpbmNsdWRlIDxwdGhyZWFkLmg+CisjIGlmIEdURVNUX0hBU19N
VVRFWF9BTkRfVEhSRUFEX0xPQ0FMXworLy8gTXV0ZXggYW5kIFRocmVhZExvY2FsIGhhdmUgYWxy
ZWFkeSBiZWVuIGltcG9ydGVkIGludG8gdGhlIG5hbWVzcGFjZS4KKy8vIE5vdGhpbmcgdG8gZG8g
aGVyZS4KIAotLy8gTXV0ZXhCYXNlIGFuZCBNdXRleCBpbXBsZW1lbnQgbXV0ZXggb24gcHRocmVh
ZHMtYmFzZWQgcGxhdGZvcm1zLiBUaGV5Ci0vLyBhcmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRo
IGNsYXNzIE11dGV4TG9jazoKKyMgZWxpZiBHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19X
SU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUCisKKy8vIE11dGV4IGltcGxlbWVu
dHMgbXV0ZXggb24gV2luZG93cyBwbGF0Zm9ybXMuICBJdCBpcyB1c2VkIGluIGNvbmp1bmN0aW9u
CisvLyB3aXRoIGNsYXNzIE11dGV4TG9jazoKIC8vCiAvLyAgIE11dGV4IG11dGV4OwogLy8gICAu
Li4KLS8vICAgTXV0ZXhMb2NrIGxvY2soJm11dGV4KTsgIC8vIEFjcXVpcmVzIHRoZSBtdXRleCBh
bmQgcmVsZWFzZXMgaXQgYXQgdGhlIGVuZAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gb2YgdGhlIGN1cnJlbnQgc2NvcGUuCi0vLwotLy8gTXV0ZXhCYXNlIGltcGxlbWVudHMgYmVo
YXZpb3IgZm9yIGJvdGggc3RhdGljYWxseSBhbmQgZHluYW1pY2FsbHkKLS8vIGFsbG9jYXRlZCBt
dXRleGVzLiAgRG8gbm90IHVzZSBNdXRleEJhc2UgZGlyZWN0bHkuICBJbnN0ZWFkLCB3cml0ZQot
Ly8gdGhlIGZvbGxvd2luZyB0byBkZWZpbmUgYSBzdGF0aWMgbXV0ZXg6CisvLyAgIE11dGV4TG9j
ayBsb2NrKCZtdXRleCk7ICAvLyBBY3F1aXJlcyB0aGUgbXV0ZXggYW5kIHJlbGVhc2VzIGl0IGF0
IHRoZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5kIG9mIHRoZSBjdXJyZW50
IHNjb3BlLgogLy8KKy8vIEEgc3RhdGljIE11dGV4ICptdXN0KiBiZSBkZWZpbmVkIG9yIGRlY2xh
cmVkIHVzaW5nIG9uZSBvZiB0aGUgZm9sbG93aW5nCisvLyBtYWNyb3M6CiAvLyAgIEdURVNUX0RF
RklORV9TVEFUSUNfTVVURVhfKGdfc29tZV9tdXRleCk7CisvLyAgIEdURVNUX0RFQ0xBUkVfU1RB
VElDX01VVEVYXyhnX3NvbWVfbXV0ZXgpOworLy8KKy8vIChBIG5vbi1zdGF0aWMgTXV0ZXggaXMg
ZGVmaW5lZC9kZWNsYXJlZCBpbiB0aGUgdXN1YWwgd2F5KS4KK2NsYXNzIEdURVNUX0FQSV8gTXV0
ZXggeworIHB1YmxpYzoKKyAgZW51bSBNdXRleFR5cGUgeyBrU3RhdGljID0gMCwga0R5bmFtaWMg
PSAxIH07CisgIC8vIFdlIHJlbHkgb24ga1N0YXRpY011dGV4IGJlaW5nIDAgYXMgaXQgaXMgdG8g
d2hhdCB0aGUgbGlua2VyIGluaXRpYWxpemVzCisgIC8vIHR5cGVfIGluIHN0YXRpYyBtdXRleGVz
LiAgY3JpdGljYWxfc2VjdGlvbl8gd2lsbCBiZSBpbml0aWFsaXplZCBsYXppbHkKKyAgLy8gaW4g
VGhyZWFkU2FmZUxhenlJbml0KCkuCisgIGVudW0gU3RhdGljQ29uc3RydWN0b3JTZWxlY3RvciB7
IGtTdGF0aWNNdXRleCA9IDAgfTsKKworICAvLyBUaGlzIGNvbnN0cnVjdG9yIGludGVudGlvbmFs
bHkgZG9lcyBub3RoaW5nLiAgSXQgcmVsaWVzIG9uIHR5cGVfIGJlaW5nCisgIC8vIHN0YXRpY2Fs
bHkgaW5pdGlhbGl6ZWQgdG8gMCAoZWZmZWN0aXZlbHkgc2V0dGluZyBpdCB0byBrU3RhdGljKSBh
bmQgb24KKyAgLy8gVGhyZWFkU2FmZUxhenlJbml0KCkgdG8gbGF6aWx5IGluaXRpYWxpemUgdGhl
IHJlc3Qgb2YgdGhlIG1lbWJlcnMuCisgIGV4cGxpY2l0IE11dGV4KFN0YXRpY0NvbnN0cnVjdG9y
U2VsZWN0b3IgLypkdW1teSovKSB7fQorCisgIE11dGV4KCk7CisgIH5NdXRleCgpOworCisgIHZv
aWQgTG9jaygpOworCisgIHZvaWQgVW5sb2NrKCk7CisKKyAgLy8gRG9lcyBub3RoaW5nIGlmIHRo
ZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUgbXV0ZXguIE90aGVyd2lzZSwgY3Jhc2hlcworICAv
LyB3aXRoIGhpZ2ggcHJvYmFiaWxpdHkuCisgIHZvaWQgQXNzZXJ0SGVsZCgpOworCisgcHJpdmF0
ZToKKyAgLy8gSW5pdGlhbGl6ZXMgb3duZXJfdGhyZWFkX2lkXyBhbmQgY3JpdGljYWxfc2VjdGlv
bl8gaW4gc3RhdGljIG11dGV4ZXMuCisgIHZvaWQgVGhyZWFkU2FmZUxhenlJbml0KCk7CisKKyAg
Ly8gUGVyIGh0dHBzOi8vYmxvZ3MubXNkbi5taWNyb3NvZnQuY29tL29sZG5ld3RoaW5nLzIwMDQw
MjIzLTAwLz9wPTQwNTAzLAorICAvLyB3ZSBhc3N1bWUgdGhhdCAwIGlzIGFuIGludmFsaWQgdmFs
dWUgZm9yIHRocmVhZCBJRHMuCisgIHVuc2lnbmVkIGludCBvd25lcl90aHJlYWRfaWRfOworCisg
IC8vIEZvciBzdGF0aWMgbXV0ZXhlcywgd2UgcmVseSBvbiB0aGVzZSBtZW1iZXJzIGJlaW5nIGlu
aXRpYWxpemVkIHRvIHplcm9zCisgIC8vIGJ5IHRoZSBsaW5rZXIuCisgIE11dGV4VHlwZSB0eXBl
XzsKKyAgbG9uZyBjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhhc2VfOyAgLy8gTk9MSU5UCisgIEdU
RVNUX0NSSVRJQ0FMX1NFQ1RJT04qIGNyaXRpY2FsX3NlY3Rpb25fOworCisgIEdURVNUX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTl8oTXV0ZXgpOworfTsKKworIyBkZWZpbmUgR1RFU1RfREVDTEFS
RV9TVEFUSUNfTVVURVhfKG11dGV4KSBcCisgICAgZXh0ZXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6
Ok11dGV4IG11dGV4CisKKyMgZGVmaW5lIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKG11dGV4
KSBcCisgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXggbXV0ZXgoOjp0ZXN0aW5nOjppbnRl
cm5hbDo6TXV0ZXg6OmtTdGF0aWNNdXRleCkKKworLy8gV2UgY2Fubm90IG5hbWUgdGhpcyBjbGFz
cyBNdXRleExvY2sgYmVjYXVzZSB0aGUgY3RvciBkZWNsYXJhdGlvbiB3b3VsZAorLy8gY29uZmxp
Y3Qgd2l0aCBhIG1hY3JvIG5hbWVkIE11dGV4TG9jaywgd2hpY2ggaXMgZGVmaW5lZCBvbiBzb21l
CisvLyBwbGF0Zm9ybXMuIFRoYXQgbWFjcm8gaXMgdXNlZCBhcyBhIGRlZmVuc2l2ZSBtZWFzdXJl
IHRvIHByZXZlbnQgYWdhaW5zdAorLy8gaW5hZHZlcnRlbnQgbWlzdXNlcyBvZiBNdXRleExvY2sg
bGlrZSAiTXV0ZXhMb2NrKCZtdSkiIHJhdGhlciB0aGFuCisvLyAiTXV0ZXhMb2NrIGwoJm11KSIu
ICBIZW5jZSB0aGUgdHlwZWRlZiB0cmljayBiZWxvdy4KK2NsYXNzIEdUZXN0TXV0ZXhMb2NrIHsK
KyBwdWJsaWM6CisgIGV4cGxpY2l0IEdUZXN0TXV0ZXhMb2NrKE11dGV4KiBtdXRleCkKKyAgICAg
IDogbXV0ZXhfKG11dGV4KSB7IG11dGV4Xy0+TG9jaygpOyB9CisKKyAgfkdUZXN0TXV0ZXhMb2Nr
KCkgeyBtdXRleF8tPlVubG9jaygpOyB9CisKKyBwcml2YXRlOgorICBNdXRleCogY29uc3QgbXV0
ZXhfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oR1Rlc3RNdXRleExvY2sp
OworfTsKKwordHlwZWRlZiBHVGVzdE11dGV4TG9jayBNdXRleExvY2s7CisKKy8vIEJhc2UgY2xh
c3MgZm9yIFZhbHVlSG9sZGVyPFQ+LiAgQWxsb3dzIGEgY2FsbGVyIHRvIGhvbGQgYW5kIGRlbGV0
ZSBhIHZhbHVlCisvLyB3aXRob3V0IGtub3dpbmcgaXRzIHR5cGUuCitjbGFzcyBUaHJlYWRMb2Nh
bFZhbHVlSG9sZGVyQmFzZSB7CisgcHVibGljOgorICB2aXJ0dWFsIH5UaHJlYWRMb2NhbFZhbHVl
SG9sZGVyQmFzZSgpIHt9Cit9OworCisvLyBQcm92aWRlcyBhIHdheSBmb3IgYSB0aHJlYWQgdG8g
c2VuZCBub3RpZmljYXRpb25zIHRvIGEgVGhyZWFkTG9jYWwKKy8vIHJlZ2FyZGxlc3Mgb2YgaXRz
IHBhcmFtZXRlciB0eXBlLgorY2xhc3MgVGhyZWFkTG9jYWxCYXNlIHsKKyBwdWJsaWM6CisgIC8v
IENyZWF0ZXMgYSBuZXcgVmFsdWVIb2xkZXI8VD4gb2JqZWN0IGhvbGRpbmcgYSBkZWZhdWx0IHZh
bHVlIHBhc3NlZCB0bworICAvLyB0aGlzIFRocmVhZExvY2FsPFQ+J3MgY29uc3RydWN0b3IgYW5k
IHJldHVybnMgaXQuICBJdCBpcyB0aGUgY2FsbGVyJ3MKKyAgLy8gcmVzcG9uc2liaWxpdHkgbm90
IHRvIGNhbGwgdGhpcyB3aGVuIHRoZSBUaHJlYWRMb2NhbDxUPiBpbnN0YW5jZSBhbHJlYWR5Cisg
IC8vIGhhcyBhIHZhbHVlIG9uIHRoZSBjdXJyZW50IHRocmVhZC4KKyAgdmlydHVhbCBUaHJlYWRM
b2NhbFZhbHVlSG9sZGVyQmFzZSogTmV3VmFsdWVGb3JDdXJyZW50VGhyZWFkKCkgY29uc3QgPSAw
OworCisgcHJvdGVjdGVkOgorICBUaHJlYWRMb2NhbEJhc2UoKSB7fQorICB2aXJ0dWFsIH5UaHJl
YWRMb2NhbEJhc2UoKSB7fQorCisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOXyhUaHJlYWRMb2NhbEJhc2UpOworfTsKKworLy8gTWFwcyBhIHRocmVhZCB0byBhIHNl
dCBvZiBUaHJlYWRMb2NhbHMgdGhhdCBoYXZlIHZhbHVlcyBpbnN0YW50aWF0ZWQgb24gdGhhdAor
Ly8gdGhyZWFkIGFuZCBub3RpZmllcyB0aGVtIHdoZW4gdGhlIHRocmVhZCBleGl0cy4gIEEgVGhy
ZWFkTG9jYWwgaW5zdGFuY2UgaXMKKy8vIGV4cGVjdGVkIHRvIHBlcnNpc3QgdW50aWwgYWxsIHRo
cmVhZHMgaXQgaGFzIHZhbHVlcyBvbiBoYXZlIHRlcm1pbmF0ZWQuCitjbGFzcyBHVEVTVF9BUElf
IFRocmVhZExvY2FsUmVnaXN0cnkgeworIHB1YmxpYzoKKyAgLy8gUmVnaXN0ZXJzIHRocmVhZF9s
b2NhbF9pbnN0YW5jZSBhcyBoYXZpbmcgdmFsdWUgb24gdGhlIGN1cnJlbnQgdGhyZWFkLgorICAv
LyBSZXR1cm5zIGEgdmFsdWUgdGhhdCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSB0aGUgdGhyZWFk
IGZyb20gb3RoZXIgdGhyZWFkcy4KKyAgc3RhdGljIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNl
KiBHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCgKKyAgICAgIGNvbnN0IFRocmVhZExvY2FsQmFzZSog
dGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKKworICAvLyBJbnZva2VkIHdoZW4gYSBUaHJlYWRMb2Nh
bCBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuCisgIHN0YXRpYyB2b2lkIE9uVGhyZWFkTG9jYWxEZXN0
cm95ZWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9pbnN0YW5j
ZSk7Cit9OworCitjbGFzcyBHVEVTVF9BUElfIFRocmVhZFdpdGhQYXJhbUJhc2UgeworIHB1Ymxp
YzoKKyAgdm9pZCBKb2luKCk7CisKKyBwcm90ZWN0ZWQ6CisgIGNsYXNzIFJ1bm5hYmxlIHsKKyAg
IHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5SdW5uYWJsZSgpIHt9CisgICAgdmlydHVhbCB2b2lkIFJ1
bigpID0gMDsKKyAgfTsKKworICBUaHJlYWRXaXRoUGFyYW1CYXNlKFJ1bm5hYmxlICpydW5uYWJs
ZSwgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KTsKKyAgdmlydHVhbCB+VGhyZWFkV2l0
aFBhcmFtQmFzZSgpOworCisgcHJpdmF0ZToKKyAgQXV0b0hhbmRsZSB0aHJlYWRfOworfTsKKwor
Ly8gSGVscGVyIGNsYXNzIGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0J3MgbXVsdGktdGhyZWFkaW5n
IGNvbnN0cnVjdHMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFRocmVhZFdpdGhQYXJh
bSA6IHB1YmxpYyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKKyBwdWJsaWM6CisgIHR5cGVkZWYgdm9p
ZCBVc2VyVGhyZWFkRnVuYyhUKTsKKworICBUaHJlYWRXaXRoUGFyYW0oVXNlclRocmVhZEZ1bmMq
IGZ1bmMsIFQgcGFyYW0sIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydCkKKyAgICAgIDog
VGhyZWFkV2l0aFBhcmFtQmFzZShuZXcgUnVubmFibGVJbXBsKGZ1bmMsIHBhcmFtKSwgdGhyZWFk
X2Nhbl9zdGFydCkgeworICB9CisgIHZpcnR1YWwgflRocmVhZFdpdGhQYXJhbSgpIHt9CisKKyBw
cml2YXRlOgorICBjbGFzcyBSdW5uYWJsZUltcGwgOiBwdWJsaWMgUnVubmFibGUgeworICAgcHVi
bGljOgorICAgIFJ1bm5hYmxlSW1wbChVc2VyVGhyZWFkRnVuYyogZnVuYywgVCBwYXJhbSkKKyAg
ICAgICAgOiBmdW5jXyhmdW5jKSwKKyAgICAgICAgICBwYXJhbV8ocGFyYW0pIHsKKyAgICB9Cisg
ICAgdmlydHVhbCB+UnVubmFibGVJbXBsKCkge30KKyAgICB2aXJ0dWFsIHZvaWQgUnVuKCkgewor
ICAgICAgZnVuY18ocGFyYW1fKTsKKyAgICB9CisKKyAgIHByaXZhdGU6CisgICAgVXNlclRocmVh
ZEZ1bmMqIGNvbnN0IGZ1bmNfOworICAgIGNvbnN0IFQgcGFyYW1fOworCisgICAgR1RFU1RfRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhSdW5uYWJsZUltcGwpOworICB9OworCisgIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkV2l0aFBhcmFtKTsKK307CisKKy8vIEltcGxl
bWVudHMgdGhyZWFkLWxvY2FsIHN0b3JhZ2Ugb24gV2luZG93cyBzeXN0ZW1zLgogLy8KLS8vIFlv
dSBjYW4gZm9yd2FyZCBkZWNsYXJlIGEgc3RhdGljIG11dGV4IGxpa2UgdGhpczoKKy8vICAgLy8g
VGhyZWFkIDEKKy8vICAgVGhyZWFkTG9jYWw8aW50PiB0bCgxMDApOyAgLy8gMTAwIGlzIHRoZSBk
ZWZhdWx0IHZhbHVlIGZvciBlYWNoIHRocmVhZC4KIC8vCi0vLyAgIEdURVNUX0RFQ0xBUkVfU1RB
VElDX01VVEVYXyhnX3NvbWVfbXV0ZXgpOworLy8gICAvLyBUaHJlYWQgMgorLy8gICB0bC5zZXQo
MTUwKTsgIC8vIENoYW5nZXMgdGhlIHZhbHVlIGZvciB0aHJlYWQgMiBvbmx5LgorLy8gICBFWFBF
Q1RfRVEoMTUwLCB0bC5nZXQoKSk7CiAvLwotLy8gVG8gY3JlYXRlIGEgZHluYW1pYyBtdXRleCwg
anVzdCBkZWZpbmUgYW4gb2JqZWN0IG9mIHR5cGUgTXV0ZXguCisvLyAgIC8vIFRocmVhZCAxCisv
LyAgIEVYUEVDVF9FUSgxMDAsIHRsLmdldCgpKTsgIC8vIEluIHRocmVhZCAxLCB0bCBoYXMgdGhl
IG9yaWdpbmFsIHZhbHVlLgorLy8gICB0bC5zZXQoMjAwKTsKKy8vICAgRVhQRUNUX0VRKDIwMCwg
dGwuZ2V0KCkpOworLy8KKy8vIFRoZSB0ZW1wbGF0ZSB0eXBlIGFyZ3VtZW50IFQgbXVzdCBoYXZl
IGEgcHVibGljIGNvcHkgY29uc3RydWN0b3IuCisvLyBJbiBhZGRpdGlvbiwgdGhlIGRlZmF1bHQg
VGhyZWFkTG9jYWwgY29uc3RydWN0b3IgcmVxdWlyZXMgVCB0byBoYXZlCisvLyBhIHB1YmxpYyBk
ZWZhdWx0IGNvbnN0cnVjdG9yLgorLy8KKy8vIFRoZSB1c2VycyBvZiBhIFRoZWFkTG9jYWwgaW5z
dGFuY2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCBhbGwgYnV0IG9uZQorLy8gdGhyZWFkcyAoaW5j
bHVkaW5nIHRoZSBtYWluIG9uZSkgdXNpbmcgdGhhdCBpbnN0YW5jZSBoYXZlIGV4aXRlZCBiZWZv
cmUKKy8vIGRlc3Ryb3lpbmcgaXQuIE90aGVyd2lzZSwgdGhlIHBlci10aHJlYWQgb2JqZWN0cyBt
YW5hZ2VkIGZvciB0aGVtIGJ5IHRoZQorLy8gVGhyZWFkTG9jYWwgaW5zdGFuY2UgYXJlIG5vdCBn
dWFyYW50ZWVkIHRvIGJlIGRlc3Ryb3llZCBvbiBhbGwgcGxhdGZvcm1zLgorLy8KKy8vIEdvb2ds
ZSBUZXN0IG9ubHkgdXNlcyBnbG9iYWwgVGhyZWFkTG9jYWwgb2JqZWN0cy4gIFRoYXQgbWVhbnMg
dGhleQorLy8gd2lsbCBkaWUgYWZ0ZXIgbWFpbigpIGhhcyByZXR1cm5lZC4gIFRoZXJlZm9yZSwg
bm8gcGVyLXRocmVhZAorLy8gb2JqZWN0IG1hbmFnZWQgYnkgR29vZ2xlIFRlc3Qgd2lsbCBiZSBs
ZWFrZWQgYXMgbG9uZyBhcyBhbGwgdGhyZWFkcworLy8gdXNpbmcgR29vZ2xlIFRlc3QgaGF2ZSBl
eGl0ZWQgd2hlbiBtYWluKCkgcmV0dXJucy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3Mg
VGhyZWFkTG9jYWwgOiBwdWJsaWMgVGhyZWFkTG9jYWxCYXNlIHsKKyBwdWJsaWM6CisgIFRocmVh
ZExvY2FsKCkgOiBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5
KCkpIHt9CisgIGV4cGxpY2l0IFRocmVhZExvY2FsKGNvbnN0IFQmIHZhbHVlKQorICAgICAgOiBk
ZWZhdWx0X2ZhY3RvcnlfKG5ldyBJbnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeSh2YWx1ZSkpIHt9
CisKKyAgflRocmVhZExvY2FsKCkgeyBUaHJlYWRMb2NhbFJlZ2lzdHJ5OjpPblRocmVhZExvY2Fs
RGVzdHJveWVkKHRoaXMpOyB9CisKKyAgVCogcG9pbnRlcigpIHsgcmV0dXJuIEdldE9yQ3JlYXRl
VmFsdWUoKTsgfQorICBjb25zdCBUKiBwb2ludGVyKCkgY29uc3QgeyByZXR1cm4gR2V0T3JDcmVh
dGVWYWx1ZSgpOyB9CisgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgcmV0dXJuICpwb2ludGVyKCk7
IH0KKyAgdm9pZCBzZXQoY29uc3QgVCYgdmFsdWUpIHsgKnBvaW50ZXIoKSA9IHZhbHVlOyB9CisK
KyBwcml2YXRlOgorICAvLyBIb2xkcyBhIHZhbHVlIG9mIFQuICBDYW4gYmUgZGVsZXRlZCB2aWEg
aXRzIGJhc2UgY2xhc3Mgd2l0aG91dCB0aGUgY2FsbGVyCisgIC8vIGtub3dpbmcgdGhlIHR5cGUg
b2YgVC4KKyAgY2xhc3MgVmFsdWVIb2xkZXIgOiBwdWJsaWMgVGhyZWFkTG9jYWxWYWx1ZUhvbGRl
ckJhc2UgeworICAgcHVibGljOgorICAgIFZhbHVlSG9sZGVyKCkgOiB2YWx1ZV8oKSB7fQorICAg
IGV4cGxpY2l0IFZhbHVlSG9sZGVyKGNvbnN0IFQmIHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30K
KworICAgIFQqIHBvaW50ZXIoKSB7IHJldHVybiAmdmFsdWVfOyB9CisKKyAgIHByaXZhdGU6Cisg
ICAgVCB2YWx1ZV87CisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhWYWx1ZUhv
bGRlcik7CisgIH07CisKKworICBUKiBHZXRPckNyZWF0ZVZhbHVlKCkgY29uc3QgeworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxWYWx1ZUhvbGRlcio+KAorICAgICAgICBUaHJlYWRMb2NhbFJlZ2lz
dHJ5OjpHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCh0aGlzKSktPnBvaW50ZXIoKTsKKyAgfQorCisg
IHZpcnR1YWwgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UqIE5ld1ZhbHVlRm9yQ3VycmVudFRo
cmVhZCgpIGNvbnN0IHsKKyAgICByZXR1cm4gZGVmYXVsdF9mYWN0b3J5Xy0+TWFrZU5ld0hvbGRl
cigpOworICB9CisKKyAgY2xhc3MgVmFsdWVIb2xkZXJGYWN0b3J5IHsKKyAgIHB1YmxpYzoKKyAg
ICBWYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1YWwgflZhbHVlSG9sZGVyRmFjdG9y
eSgpIHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRlciogTWFrZU5ld0hvbGRlcigpIGNvbnN0ID0g
MDsKKworICAgcHJpdmF0ZToKKyAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFZh
bHVlSG9sZGVyRmFjdG9yeSk7CisgIH07CisKKyAgY2xhc3MgRGVmYXVsdFZhbHVlSG9sZGVyRmFj
dG9yeSA6IHB1YmxpYyBWYWx1ZUhvbGRlckZhY3RvcnkgeworICAgcHVibGljOgorICAgIERlZmF1
bHRWYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1YWwgVmFsdWVIb2xkZXIqIE1ha2VO
ZXdIb2xkZXIoKSBjb25zdCB7IHJldHVybiBuZXcgVmFsdWVIb2xkZXIoKTsgfQorCisgICBwcml2
YXRlOgorICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oRGVmYXVsdFZhbHVlSG9s
ZGVyRmFjdG9yeSk7CisgIH07CisKKyAgY2xhc3MgSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3Rvcnkg
OiBwdWJsaWMgVmFsdWVIb2xkZXJGYWN0b3J5IHsKKyAgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBJ
bnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeShjb25zdCBUJiB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUp
IHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRlciogTWFrZU5ld0hvbGRlcigpIGNvbnN0IHsKKyAg
ICAgIHJldHVybiBuZXcgVmFsdWVIb2xkZXIodmFsdWVfKTsKKyAgICB9CisKKyAgIHByaXZhdGU6
CisgICAgY29uc3QgVCB2YWx1ZV87ICAvLyBUaGUgdmFsdWUgZm9yIGVhY2ggdGhyZWFkLgorCisg
ICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhJbnN0YW5jZVZhbHVlSG9sZGVyRmFj
dG9yeSk7CisgIH07CisKKyAgc2NvcGVkX3B0cjxWYWx1ZUhvbGRlckZhY3Rvcnk+IGRlZmF1bHRf
ZmFjdG9yeV87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJlYWRMb2Nh
bCk7Cit9OworCisjIGVsaWYgR1RFU1RfSEFTX1BUSFJFQUQKKworLy8gTXV0ZXhCYXNlIGFuZCBN
dXRleCBpbXBsZW1lbnQgbXV0ZXggb24gcHRocmVhZHMtYmFzZWQgcGxhdGZvcm1zLgogY2xhc3Mg
TXV0ZXhCYXNlIHsKICBwdWJsaWM6CiAgIC8vIEFjcXVpcmVzIHRoaXMgbXV0ZXguCiAgIHZvaWQg
TG9jaygpIHsKICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4X2xv
Y2soJm11dGV4XykpOwogICAgIG93bmVyXyA9IHB0aHJlYWRfc2VsZigpOworICAgIGhhc19vd25l
cl8gPSB0cnVlOwogICB9CiAKICAgLy8gUmVsZWFzZXMgdGhpcyBtdXRleC4KICAgdm9pZCBVbmxv
Y2soKSB7Ci0gICAgLy8gV2UgZG9uJ3QgcHJvdGVjdCB3cml0aW5nIHRvIG93bmVyXyBoZXJlLCBh
cyBpdCdzIHRoZSBjYWxsZXIncwotICAgIC8vIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGF0
IHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUKKyAgICAvLyBTaW5jZSB0aGUgbG9jayBpcyBi
ZWluZyByZWxlYXNlZCB0aGUgb3duZXJfIGZpZWxkIHNob3VsZCBubyBsb25nZXIgYmUKKyAgICAv
LyBjb25zaWRlcmVkIHZhbGlkLiBXZSBkb24ndCBwcm90ZWN0IHdyaXRpbmcgdG8gaGFzX293bmVy
XyBoZXJlLCBhcyBpdCdzCisgICAgLy8gdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGVu
c3VyZSB0aGF0IHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUKICAgICAvLyBtdXRleCB3aGVu
IHRoaXMgaXMgY2FsbGVkLgotICAgIG93bmVyXyA9IDA7CisgICAgaGFzX293bmVyXyA9IGZhbHNl
OwogICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZt
dXRleF8pKTsKICAgfQogCiAgIC8vIERvZXMgbm90aGluZyBpZiB0aGUgY3VycmVudCB0aHJlYWQg
aG9sZHMgdGhlIG11dGV4LiBPdGhlcndpc2UsIGNyYXNoZXMKICAgLy8gd2l0aCBoaWdoIHByb2Jh
YmlsaXR5LgogICB2b2lkIEFzc2VydEhlbGQoKSBjb25zdCB7Ci0gICAgR1RFU1RfQ0hFQ0tfKG93
bmVyXyA9PSBwdGhyZWFkX3NlbGYoKSkKKyAgICBHVEVTVF9DSEVDS18oaGFzX293bmVyXyAmJiBw
dGhyZWFkX2VxdWFsKG93bmVyXywgcHRocmVhZF9zZWxmKCkpKQogICAgICAgICA8PCAiVGhlIGN1
cnJlbnQgdGhyZWFkIGlzIG5vdCBob2xkaW5nIHRoZSBtdXRleCBAIiA8PCB0aGlzOwogICB9CiAK
QEAgLTEwNDYsMTYgKzIwODcsMjggQEAgY2xhc3MgTXV0ZXhCYXNlIHsKICAgLy8gaGF2ZSB0byBi
ZSBwdWJsaWMuCiAgcHVibGljOgogICBwdGhyZWFkX211dGV4X3QgbXV0ZXhfOyAgLy8gVGhlIHVu
ZGVybHlpbmcgcHRocmVhZCBtdXRleC4KLSAgcHRocmVhZF90IG93bmVyXzsgIC8vIFRoZSB0aHJl
YWQgaG9sZGluZyB0aGUgbXV0ZXg7IDAgbWVhbnMgbm8gb25lIGhvbGRzIGl0LgorICAvLyBoYXNf
b3duZXJfIGluZGljYXRlcyB3aGV0aGVyIHRoZSBvd25lcl8gZmllbGQgYmVsb3cgY29udGFpbnMg
YSB2YWxpZCB0aHJlYWQKKyAgLy8gSUQgYW5kIGlzIHRoZXJlZm9yZSBzYWZlIHRvIGluc3BlY3Qg
KGUuZy4sIHRvIHVzZSBpbiBwdGhyZWFkX2VxdWFsKCkpLiBBbGwKKyAgLy8gYWNjZXNzZXMgdG8g
dGhlIG93bmVyXyBmaWVsZCBzaG91bGQgYmUgcHJvdGVjdGVkIGJ5IGEgY2hlY2sgb2YgdGhpcyBm
aWVsZC4KKyAgLy8gQW4gYWx0ZXJuYXRpdmUgbWlnaHQgYmUgdG8gbWVtc2V0KCkgb3duZXJfIHRv
IGFsbCB6ZXJvcywgYnV0IHRoZXJlJ3Mgbm8KKyAgLy8gZ3VhcmFudGVlIHRoYXQgYSB6ZXJvJ2Qg
cHRocmVhZF90IGlzIG5lY2Vzc2FyaWx5IGludmFsaWQgb3IgZXZlbiBkaWZmZXJlbnQKKyAgLy8g
ZnJvbSBwdGhyZWFkX3NlbGYoKS4KKyAgYm9vbCBoYXNfb3duZXJfOworICBwdGhyZWFkX3Qgb3du
ZXJfOyAgLy8gVGhlIHRocmVhZCBob2xkaW5nIHRoZSBtdXRleC4KIH07CiAKIC8vIEZvcndhcmQt
ZGVjbGFyZXMgYSBzdGF0aWMgbXV0ZXguCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVfU1RBVElDX01V
VEVYXyhtdXRleCkgXAotICAgIGV4dGVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpNdXRleEJhc2Ug
bXV0ZXgKKyMgIGRlZmluZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRFWF8obXV0ZXgpIFwKKyAg
ICAgZXh0ZXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4QmFzZSBtdXRleAogCiAvLyBEZWZp
bmVzIGFuZCBzdGF0aWNhbGx5IChpLmUuIGF0IGxpbmsgdGltZSkgaW5pdGlhbGl6ZXMgYSBzdGF0
aWMgbXV0ZXguCisvLyBUaGUgaW5pdGlhbGl6YXRpb24gbGlzdCBoZXJlIGRvZXMgbm90IGV4cGxp
Y2l0bHkgaW5pdGlhbGl6ZSBlYWNoIGZpZWxkLAorLy8gaW5zdGVhZCByZWx5aW5nIG9uIGRlZmF1
bHQgaW5pdGlhbGl6YXRpb24gZm9yIHRoZSB1bnNwZWNpZmllZCBmaWVsZHMuIEluCisvLyBwYXJ0
aWN1bGFyLCB0aGUgb3duZXJfIGZpZWxkIChhIHB0aHJlYWRfdCkgaXMgbm90IGV4cGxpY2l0bHkg
aW5pdGlhbGl6ZWQuCisvLyBUaGlzIGFsbG93cyBpbml0aWFsaXphdGlvbiB0byB3b3JrIHdoZXRo
ZXIgcHRocmVhZF90IGlzIGEgc2NhbGFyIG9yIHN0cnVjdC4KKy8vIFRoZSBmbGFnIC1XbWlzc2lu
Zy1maWVsZC1pbml0aWFsaXplcnMgbXVzdCBub3QgYmUgc3BlY2lmaWVkIGZvciB0aGlzIHRvIHdv
cmsuCiAjZGVmaW5lIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKG11dGV4KSBcCi0gICAgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXhCYXNlIG11dGV4ID0geyBQVEhSRUFEX01VVEVYX0lOSVRJ
QUxJWkVSLCAwIH0KKyAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXhCYXNlIG11dGV4ID0ge1BU
SFJFQURfTVVURVhfSU5JVElBTElaRVIsIGZhbHNlLCAwfQogCiAvLyBUaGUgTXV0ZXggY2xhc3Mg
Y2FuIG9ubHkgYmUgdXNlZCBmb3IgbXV0ZXhlcyBjcmVhdGVkIGF0IHJ1bnRpbWUuIEl0CiAvLyBz
aGFyZXMgaXRzIEFQSSB3aXRoIE11dGV4QmFzZSBvdGhlcndpc2UuCkBAIC0xMDYzLDcgKzIxMTYs
NyBAQCBjbGFzcyBNdXRleCA6IHB1YmxpYyBNdXRleEJhc2UgewogIHB1YmxpYzoKICAgTXV0ZXgo
KSB7CiAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9pbml0KCZt
dXRleF8sIE5VTEwpKTsKLSAgICBvd25lcl8gPSAwOworICAgIGhhc19vd25lcl8gPSBmYWxzZTsK
ICAgfQogICB+TXV0ZXgoKSB7CiAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVh
ZF9tdXRleF9kZXN0cm95KCZtdXRleF8pKTsKQEAgLTEwNzMsOSArMjEyNiwxMSBAQCBjbGFzcyBN
dXRleCA6IHB1YmxpYyBNdXRleEJhc2UgewogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJ
R05fKE11dGV4KTsKIH07CiAKLS8vIFdlIGNhbm5vdCBuYW1lIHRoaXMgY2xhc3MgTXV0ZXhMb2Nr
IGFzIHRoZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCisvLyBXZSBjYW5ub3QgbmFtZSB0aGlzIGNs
YXNzIE11dGV4TG9jayBiZWNhdXNlIHRoZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCiAvLyBjb25m
bGljdCB3aXRoIGEgbWFjcm8gbmFtZWQgTXV0ZXhMb2NrLCB3aGljaCBpcyBkZWZpbmVkIG9uIHNv
bWUKLS8vIHBsYXRmb3Jtcy4gIEhlbmNlIHRoZSB0eXBlZGVmIHRyaWNrIGJlbG93LgorLy8gcGxh
dGZvcm1zLiBUaGF0IG1hY3JvIGlzIHVzZWQgYXMgYSBkZWZlbnNpdmUgbWVhc3VyZSB0byBwcmV2
ZW50IGFnYWluc3QKKy8vIGluYWR2ZXJ0ZW50IG1pc3VzZXMgb2YgTXV0ZXhMb2NrIGxpa2UgIk11
dGV4TG9jaygmbXUpIiByYXRoZXIgdGhhbgorLy8gIk11dGV4TG9jayBsKCZtdSkiLiAgSGVuY2Ug
dGhlIHR5cGVkZWYgdHJpY2sgYmVsb3cuCiBjbGFzcyBHVGVzdE11dGV4TG9jayB7CiAgcHVibGlj
OgogICBleHBsaWNpdCBHVGVzdE11dGV4TG9jayhNdXRleEJhc2UqIG11dGV4KQpAQCAtMTEwOSw0
MSArMjE2NCwxNCBAQCBleHRlcm4gIkMiIGlubGluZSB2b2lkIERlbGV0ZVRocmVhZExvY2FsVmFs
dWUodm9pZCogdmFsdWVfaG9sZGVyKSB7CiB9CiAKIC8vIEltcGxlbWVudHMgdGhyZWFkLWxvY2Fs
IHN0b3JhZ2Ugb24gcHRocmVhZHMtYmFzZWQgc3lzdGVtcy4KLS8vCi0vLyAgIC8vIFRocmVhZCAx
Ci0vLyAgIFRocmVhZExvY2FsPGludD4gdGwoMTAwKTsgIC8vIDEwMCBpcyB0aGUgZGVmYXVsdCB2
YWx1ZSBmb3IgZWFjaCB0aHJlYWQuCi0vLwotLy8gICAvLyBUaHJlYWQgMgotLy8gICB0bC5zZXQo
MTUwKTsgIC8vIENoYW5nZXMgdGhlIHZhbHVlIGZvciB0aHJlYWQgMiBvbmx5LgotLy8gICBFWFBF
Q1RfRVEoMTUwLCB0bC5nZXQoKSk7Ci0vLwotLy8gICAvLyBUaHJlYWQgMQotLy8gICBFWFBFQ1Rf
RVEoMTAwLCB0bC5nZXQoKSk7ICAvLyBJbiB0aHJlYWQgMSwgdGwgaGFzIHRoZSBvcmlnaW5hbCB2
YWx1ZS4KLS8vICAgdGwuc2V0KDIwMCk7Ci0vLyAgIEVYUEVDVF9FUSgyMDAsIHRsLmdldCgpKTsK
LS8vCi0vLyBUaGUgdGVtcGxhdGUgdHlwZSBhcmd1bWVudCBUIG11c3QgaGF2ZSBhIHB1YmxpYyBj
b3B5IGNvbnN0cnVjdG9yLgotLy8gSW4gYWRkaXRpb24sIHRoZSBkZWZhdWx0IFRocmVhZExvY2Fs
IGNvbnN0cnVjdG9yIHJlcXVpcmVzIFQgdG8gaGF2ZQotLy8gYSBwdWJsaWMgZGVmYXVsdCBjb25z
dHJ1Y3Rvci4KLS8vCi0vLyBBbiBvYmplY3QgbWFuYWdlZCBmb3IgYSB0aHJlYWQgYnkgYSBUaHJl
YWRMb2NhbCBpbnN0YW5jZSBpcyBkZWxldGVkCi0vLyB3aGVuIHRoZSB0aHJlYWQgZXhpdHMuICBP
ciwgaWYgdGhlIFRocmVhZExvY2FsIGluc3RhbmNlIGRpZXMgaW4KLS8vIHRoYXQgdGhyZWFkLCB3
aGVuIHRoZSBUaHJlYWRMb2NhbCBkaWVzLiAgSXQncyB0aGUgdXNlcidzCi0vLyByZXNwb25zaWJp
bGl0eSB0byBlbnN1cmUgdGhhdCBhbGwgb3RoZXIgdGhyZWFkcyB1c2luZyBhIFRocmVhZExvY2Fs
Ci0vLyBoYXZlIGV4aXRlZCB3aGVuIGl0IGRpZXMsIG9yIHRoZSBwZXItdGhyZWFkIG9iamVjdHMg
Zm9yIHRob3NlCi0vLyB0aHJlYWRzIHdpbGwgbm90IGJlIGRlbGV0ZWQuCi0vLwotLy8gR29vZ2xl
IFRlc3Qgb25seSB1c2VzIGdsb2JhbCBUaHJlYWRMb2NhbCBvYmplY3RzLiAgVGhhdCBtZWFucyB0
aGV5Ci0vLyB3aWxsIGRpZSBhZnRlciBtYWluKCkgaGFzIHJldHVybmVkLiAgVGhlcmVmb3JlLCBu
byBwZXItdGhyZWFkCi0vLyBvYmplY3QgbWFuYWdlZCBieSBHb29nbGUgVGVzdCB3aWxsIGJlIGxl
YWtlZCBhcyBsb25nIGFzIGFsbCB0aHJlYWRzCi0vLyB1c2luZyBHb29nbGUgVGVzdCBoYXZlIGV4
aXRlZCB3aGVuIG1haW4oKSByZXR1cm5zLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBU
aHJlYWRMb2NhbCB7CitjbGFzcyBHVEVTVF9BUElfIFRocmVhZExvY2FsIHsKICBwdWJsaWM6Ci0g
IFRocmVhZExvY2FsKCkgOiBrZXlfKENyZWF0ZUtleSgpKSwKLSAgICAgICAgICAgICAgICAgIGRl
ZmF1bHRfKCkge30KLSAgZXhwbGljaXQgVGhyZWFkTG9jYWwoY29uc3QgVCYgdmFsdWUpIDoga2V5
XyhDcmVhdGVLZXkoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHRfKHZhbHVlKSB7fQorICBUaHJlYWRMb2NhbCgpCisgICAgICA6IGtleV8oQ3JlYXRl
S2V5KCkpLCBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5KCkp
IHt9CisgIGV4cGxpY2l0IFRocmVhZExvY2FsKGNvbnN0IFQmIHZhbHVlKQorICAgICAgOiBrZXlf
KENyZWF0ZUtleSgpKSwKKyAgICAgICAgZGVmYXVsdF9mYWN0b3J5XyhuZXcgSW5zdGFuY2VWYWx1
ZUhvbGRlckZhY3RvcnkodmFsdWUpKSB7fQogCiAgIH5UaHJlYWRMb2NhbCgpIHsKICAgICAvLyBE
ZXN0cm95cyB0aGUgbWFuYWdlZCBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHRocmVhZCwgaWYgYW55
LgpAQCAtMTE2Myw2ICsyMTkxLDcgQEAgY2xhc3MgVGhyZWFkTG9jYWwgewogICAvLyBIb2xkcyBh
IHZhbHVlIG9mIHR5cGUgVC4KICAgY2xhc3MgVmFsdWVIb2xkZXIgOiBwdWJsaWMgVGhyZWFkTG9j
YWxWYWx1ZUhvbGRlckJhc2UgewogICAgcHVibGljOgorICAgIFZhbHVlSG9sZGVyKCkgOiB2YWx1
ZV8oKSB7fQogICAgIGV4cGxpY2l0IFZhbHVlSG9sZGVyKGNvbnN0IFQmIHZhbHVlKSA6IHZhbHVl
Xyh2YWx1ZSkge30KIAogICAgIFQqIHBvaW50ZXIoKSB7IHJldHVybiAmdmFsdWVfOyB9CkBAIC0x
MTg4LDIyICsyMjE3LDU0IEBAIGNsYXNzIFRocmVhZExvY2FsIHsKICAgICAgIHJldHVybiBDaGVj
a2VkRG93bmNhc3RUb0FjdHVhbFR5cGU8VmFsdWVIb2xkZXI+KGhvbGRlciktPnBvaW50ZXIoKTsK
ICAgICB9CiAKLSAgICBWYWx1ZUhvbGRlciogY29uc3QgbmV3X2hvbGRlciA9IG5ldyBWYWx1ZUhv
bGRlcihkZWZhdWx0Xyk7CisgICAgVmFsdWVIb2xkZXIqIGNvbnN0IG5ld19ob2xkZXIgPSBkZWZh
dWx0X2ZhY3RvcnlfLT5NYWtlTmV3SG9sZGVyKCk7CiAgICAgVGhyZWFkTG9jYWxWYWx1ZUhvbGRl
ckJhc2UqIGNvbnN0IGhvbGRlcl9iYXNlID0gbmV3X2hvbGRlcjsKICAgICBHVEVTVF9DSEVDS19Q
T1NJWF9TVUNDRVNTXyhwdGhyZWFkX3NldHNwZWNpZmljKGtleV8sIGhvbGRlcl9iYXNlKSk7CiAg
ICAgcmV0dXJuIG5ld19ob2xkZXItPnBvaW50ZXIoKTsKICAgfQogCisgIGNsYXNzIFZhbHVlSG9s
ZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAgVmFsdWVIb2xkZXJGYWN0b3J5KCkge30KKyAg
ICB2aXJ0dWFsIH5WYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1YWwgVmFsdWVIb2xk
ZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCA9IDA7CisKKyAgIHByaXZhdGU6CisgICAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9OworCisg
IGNsYXNzIERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkgOiBwdWJsaWMgVmFsdWVIb2xkZXJGYWN0
b3J5IHsKKyAgIHB1YmxpYzoKKyAgICBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5KCkge30KKyAg
ICB2aXJ0dWFsIFZhbHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkgY29uc3QgeyByZXR1cm4gbmV3
IFZhbHVlSG9sZGVyKCk7IH0KKworICAgcHJpdmF0ZToKKyAgICBHVEVTVF9ESVNBTExPV19DT1BZ
X0FORF9BU1NJR05fKERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9OworCisgIGNsYXNz
IEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5IDogcHVibGljIFZhbHVlSG9sZGVyRmFjdG9yeSB7
CisgICBwdWJsaWM6CisgICAgZXhwbGljaXQgSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkoY29u
c3QgVCYgdmFsdWUpIDogdmFsdWVfKHZhbHVlKSB7fQorICAgIHZpcnR1YWwgVmFsdWVIb2xkZXIq
IE1ha2VOZXdIb2xkZXIoKSBjb25zdCB7CisgICAgICByZXR1cm4gbmV3IFZhbHVlSG9sZGVyKHZh
bHVlXyk7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGNvbnN0IFQgdmFsdWVfOyAgLy8gVGhl
IHZhbHVlIGZvciBlYWNoIHRocmVhZC4KKworICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9OworCiAgIC8vIEEga2V5IHB0
aHJlYWRzIHVzZXMgZm9yIGxvb2tpbmcgdXAgcGVyLXRocmVhZCB2YWx1ZXMuCiAgIGNvbnN0IHB0
aHJlYWRfa2V5X3Qga2V5XzsKLSAgY29uc3QgVCBkZWZhdWx0XzsgIC8vIFRoZSBkZWZhdWx0IHZh
bHVlIGZvciBlYWNoIHRocmVhZC4KKyAgc2NvcGVkX3B0cjxWYWx1ZUhvbGRlckZhY3Rvcnk+IGRl
ZmF1bHRfZmFjdG9yeV87CiAKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJl
YWRMb2NhbCk7CiB9OwogCi0jZGVmaW5lIEdURVNUX0lTX1RIUkVBRFNBRkUgMQorIyBlbmRpZiAg
Ly8gR1RFU1RfSEFTX01VVEVYX0FORF9USFJFQURfTE9DQUxfCiAKLSNlbHNlICAvLyBHVEVTVF9I
QVNfUFRIUkVBRAorI2Vsc2UgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUKIAogLy8gQSBkdW1teSBp
bXBsZW1lbnRhdGlvbiBvZiBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyAobXV0ZXgsIGxvY2ss
CiAvLyBhbmQgdGhyZWFkLWxvY2FsIHZhcmlhYmxlKS4gIE5lY2Vzc2FyeSBmb3IgY29tcGlsaW5n
IEdvb2dsZSBUZXN0IHdoZXJlCkBAIC0xMjEzLDE0ICsyMjc0LDIxIEBAIGNsYXNzIFRocmVhZExv
Y2FsIHsKIGNsYXNzIE11dGV4IHsKICBwdWJsaWM6CiAgIE11dGV4KCkge30KKyAgdm9pZCBMb2Nr
KCkge30KKyAgdm9pZCBVbmxvY2soKSB7fQogICB2b2lkIEFzc2VydEhlbGQoKSBjb25zdCB7fQog
fTsKIAotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRFWF8obXV0ZXgpIFwKKyMgZGVm
aW5lIEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRleCkgXAogICBleHRlcm4gOjp0ZXN0
aW5nOjppbnRlcm5hbDo6TXV0ZXggbXV0ZXgKIAotI2RlZmluZSBHVEVTVF9ERUZJTkVfU1RBVElD
X01VVEVYXyhtdXRleCkgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXggbXV0ZXgKKyMgZGVmaW5l
IEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKG11dGV4KSA6OnRlc3Rpbmc6OmludGVybmFsOjpN
dXRleCBtdXRleAogCisvLyBXZSBjYW5ub3QgbmFtZSB0aGlzIGNsYXNzIE11dGV4TG9jayBiZWNh
dXNlIHRoZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCisvLyBjb25mbGljdCB3aXRoIGEgbWFjcm8g
bmFtZWQgTXV0ZXhMb2NrLCB3aGljaCBpcyBkZWZpbmVkIG9uIHNvbWUKKy8vIHBsYXRmb3Jtcy4g
VGhhdCBtYWNybyBpcyB1c2VkIGFzIGEgZGVmZW5zaXZlIG1lYXN1cmUgdG8gcHJldmVudCBhZ2Fp
bnN0CisvLyBpbmFkdmVydGVudCBtaXN1c2VzIG9mIE11dGV4TG9jayBsaWtlICJNdXRleExvY2so
Jm11KSIgcmF0aGVyIHRoYW4KKy8vICJNdXRleExvY2sgbCgmbXUpIi4gIEhlbmNlIHRoZSB0eXBl
ZGVmIHRyaWNrIGJlbG93LgogY2xhc3MgR1Rlc3RNdXRleExvY2sgewogIHB1YmxpYzoKICAgZXhw
bGljaXQgR1Rlc3RNdXRleExvY2soTXV0ZXgqKSB7fSAgLy8gTk9MSU5UCkBAIC0xMjI5LDcgKzIy
OTcsNyBAQCBjbGFzcyBHVGVzdE11dGV4TG9jayB7CiB0eXBlZGVmIEdUZXN0TXV0ZXhMb2NrIE11
dGV4TG9jazsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBUaHJlYWRMb2NhbCB7Citj
bGFzcyBHVEVTVF9BUElfIFRocmVhZExvY2FsIHsKICBwdWJsaWM6CiAgIFRocmVhZExvY2FsKCkg
OiB2YWx1ZV8oKSB7fQogICBleHBsaWNpdCBUaHJlYWRMb2NhbChjb25zdCBUJiB2YWx1ZSkgOiB2
YWx1ZV8odmFsdWUpIHt9CkBAIC0xMjQxLDI4ICsyMzA5LDI1IEBAIGNsYXNzIFRocmVhZExvY2Fs
IHsKICAgVCB2YWx1ZV87CiB9OwogCi0vLyBUaGUgYWJvdmUgc3luY2hyb25pemF0aW9uIHByaW1p
dGl2ZXMgaGF2ZSBkdW1teSBpbXBsZW1lbnRhdGlvbnMuCi0vLyBUaGVyZWZvcmUgR29vZ2xlIFRl
c3QgaXMgbm90IHRocmVhZC1zYWZlLgotI2RlZmluZSBHVEVTVF9JU19USFJFQURTQUZFIDAKLQot
I2VuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVBRAorI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURT
QUZFCiAKIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiB0aHJlYWRzIHJ1bm5pbmcgaW4gdGhlIHBy
b2Nlc3MsIG9yIDAgdG8gaW5kaWNhdGUgdGhhdAogLy8gd2UgY2Fubm90IGRldGVjdCBpdC4KIEdU
RVNUX0FQSV8gc2l6ZV90IEdldFRocmVhZENvdW50KCk7CiAKIC8vIFBhc3Npbmcgbm9uLVBPRCBj
bGFzc2VzIHRocm91Z2ggZWxsaXBzaXMgKC4uLikgY3Jhc2hlcyB0aGUgQVJNCi0vLyBjb21waWxl
ciBhbmQgZ2VuZXJhdGVzIGEgd2FybmluZyBpbiBTdW4gU3R1ZGlvLiAgVGhlIE5va2lhIFN5bWJp
YW4KKy8vIGNvbXBpbGVyIGFuZCBnZW5lcmF0ZXMgYSB3YXJuaW5nIGluIFN1biBTdHVkaW8gYmVm
b3JlIDEydTQuIFRoZSBOb2tpYSBTeW1iaWFuCiAvLyBhbmQgdGhlIElCTSBYTCBDL0MrKyBjb21w
aWxlciB0cnkgdG8gaW5zdGFudGlhdGUgYSBjb3B5IGNvbnN0cnVjdG9yCiAvLyBmb3Igb2JqZWN0
cyBwYXNzZWQgdGhyb3VnaCBlbGxpcHNpcyAoLi4uKSwgZmFpbGluZyBmb3IgdW5jb3B5YWJsZQog
Ly8gb2JqZWN0cy4gIFdlIGRlZmluZSB0aGlzIHRvIGVuc3VyZSB0aGF0IG9ubHkgUE9EIGlzIHBh
c3NlZCB0aHJvdWdoCiAvLyBlbGxpcHNpcyBvbiB0aGVzZSBzeXN0ZW1zLgotI2lmIGRlZmluZWQo
X19TWU1CSUFOMzJfXykgfHwgZGVmaW5lZChfX0lCTUNQUF9fKSB8fCBkZWZpbmVkKF9fU1VOUFJP
X0NDKQorI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgfHwgZGVmaW5lZChfX0lCTUNQUF9fKSB8
fCBcCisgICAgIChkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiBfX1NVTlBST19DQyA8IDB4NTEzMCkK
IC8vIFdlIGxvc2Ugc3VwcG9ydCBmb3IgTlVMTCBkZXRlY3Rpb24gd2hlcmUgdGhlIGNvbXBpbGVy
IGRvZXNuJ3QgbGlrZQogLy8gcGFzc2luZyBub24tUE9EIGNsYXNzZXMgdGhyb3VnaCBlbGxpcHNp
cyAoLi4uKS4KLSNkZWZpbmUgR1RFU1RfRUxMSVBTSVNfTkVFRFNfUE9EXyAxCisjIGRlZmluZSBH
VEVTVF9FTExJUFNJU19ORUVEU19QT0RfIDEKICNlbHNlCi0jZGVmaW5lIEdURVNUX0NBTl9DT01Q
QVJFX05VTEwgMQorIyBkZWZpbmUgR1RFU1RfQ0FOX0NPTVBBUkVfTlVMTCAxCiAjZW5kaWYKIAog
Ly8gVGhlIE5va2lhIFN5bWJpYW4gYW5kIElCTSBYTCBDL0MrKyBjb21waWxlcnMgY2Fubm90IGRl
Y2lkZSBiZXR3ZWVuCkBAIC0xMjcwLDcgKzIzMzUsNyBAQCBHVEVTVF9BUElfIHNpemVfdCBHZXRU
aHJlYWRDb3VudCgpOwogLy8gX2Nhbl8gZGVjaWRlIGJldHdlZW4gY2xhc3MgdGVtcGxhdGUgc3Bl
Y2lhbGl6YXRpb25zIGZvciBUIGFuZCBUKiwKIC8vIHNvIGEgdHIxOjp0eXBlX3RyYWl0cy1saWtl
IGlzX3BvaW50ZXIgd29ya3MuCiAjaWYgZGVmaW5lZChfX1NZTUJJQU4zMl9fKSB8fCBkZWZpbmVk
KF9fSUJNQ1BQX18pCi0jZGVmaW5lIEdURVNUX05FRURTX0lTX1BPSU5URVJfIDEKKyMgZGVmaW5l
IEdURVNUX05FRURTX0lTX1BPSU5URVJfIDEKICNlbmRpZgogCiB0ZW1wbGF0ZSA8Ym9vbCBib29s
X3ZhbHVlPgpAQCAtMTI4MywyMyArMjM0OCw5MyBAQCB0ZW1wbGF0ZSA8Ym9vbCBib29sX3ZhbHVl
PiBjb25zdCBib29sIGJvb2xfY29uc3RhbnQ8Ym9vbF92YWx1ZT46OnZhbHVlOwogdHlwZWRlZiBi
b29sX2NvbnN0YW50PGZhbHNlPiBmYWxzZV90eXBlOwogdHlwZWRlZiBib29sX2NvbnN0YW50PHRy
dWU+IHRydWVfdHlwZTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitzdHJ1
Y3QgaXNfc2FtZSA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK3N0cnVjdCBpc19zYW1lPFQsIFQ+IDogcHVibGljIHRydWVfdHlwZSB7fTsKKworCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KIHN0cnVjdCBpc19wb2ludGVyIDogcHVibGljIGZhbHNlX3R5cGUg
e307CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RydWN0IGlzX3BvaW50ZXI8VCo+IDogcHVi
bGljIHRydWVfdHlwZSB7fTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yPgorc3RydWN0
IEl0ZXJhdG9yVHJhaXRzIHsKKyAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvcjo6dmFsdWVfdHlw
ZSB2YWx1ZV90eXBlOworfTsKKworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBJdGVy
YXRvclRyYWl0czxUKj4geworICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKK307CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorc3RydWN0IEl0ZXJhdG9yVHJhaXRzPGNvbnN0IFQqPiB7CisgIHR5cGVk
ZWYgVCB2YWx1ZV90eXBlOworfTsKKwogI2lmIEdURVNUX09TX1dJTkRPV1MKLSNkZWZpbmUgR1RF
U1RfUEFUSF9TRVBfICJcXCIKLSNkZWZpbmUgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8gMQorIyBk
ZWZpbmUgR1RFU1RfUEFUSF9TRVBfICJcXCIKKyMgZGVmaW5lIEdURVNUX0hBU19BTFRfUEFUSF9T
RVBfIDEKIC8vIFRoZSBiaWdnZXN0IHNpZ25lZCBpbnRlZ2VyIHR5cGUgdGhlIGNvbXBpbGVyIHN1
cHBvcnRzLgogdHlwZWRlZiBfX2ludDY0IEJpZ2dlc3RJbnQ7CiAjZWxzZQotI2RlZmluZSBHVEVT
VF9QQVRIX1NFUF8gIi8iCi0jZGVmaW5lIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfIDAKKyMgZGVm
aW5lIEdURVNUX1BBVEhfU0VQXyAiLyIKKyMgZGVmaW5lIEdURVNUX0hBU19BTFRfUEFUSF9TRVBf
IDAKIHR5cGVkZWYgbG9uZyBsb25nIEJpZ2dlc3RJbnQ7ICAvLyBOT0xJTlQKICNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUwogCisvLyBVdGlsaXRpZXMgZm9yIGNoYXIuCisKKy8vIGlzc3BhY2Uo
aW50IGNoKSBhbmQgZnJpZW5kcyBhY2NlcHQgYW4gdW5zaWduZWQgY2hhciBvciBFT0YuICBjaGFy
CisvLyBtYXkgYmUgc2lnbmVkLCBkZXBlbmRpbmcgb24gdGhlIGNvbXBpbGVyIChvciBjb21waWxl
ciBmbGFncykuCisvLyBUaGVyZWZvcmUgd2UgbmVlZCB0byBjYXN0IGEgY2hhciB0byB1bnNpZ25l
ZCBjaGFyIGJlZm9yZSBjYWxsaW5nCisvLyBpc3NwYWNlKCksIGV0Yy4KKworaW5saW5lIGJvb2wg
SXNBbHBoYShjaGFyIGNoKSB7CisgIHJldHVybiBpc2FscGhhKHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KGNoKSkgIT0gMDsKK30KK2lubGluZSBib29sIElzQWxOdW0oY2hhciBjaCkgeworICBy
ZXR1cm4gaXNhbG51bShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpICE9IDA7Cit9Citp
bmxpbmUgYm9vbCBJc0RpZ2l0KGNoYXIgY2gpIHsKKyAgcmV0dXJuIGlzZGlnaXQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNMb3dlcihjaGFy
IGNoKSB7CisgIHJldHVybiBpc2xvd2VyKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkg
IT0gMDsKK30KK2lubGluZSBib29sIElzU3BhY2UoY2hhciBjaCkgeworICByZXR1cm4gaXNzcGFj
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpICE9IDA7Cit9CitpbmxpbmUgYm9vbCBJ
c1VwcGVyKGNoYXIgY2gpIHsKKyAgcmV0dXJuIGlzdXBwZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oY2gpKSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNYRGlnaXQoY2hhciBjaCkgeworICBy
ZXR1cm4gaXN4ZGlnaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOworfQor
aW5saW5lIGJvb2wgSXNYRGlnaXQod2NoYXJfdCBjaCkgeworICBjb25zdCB1bnNpZ25lZCBjaGFy
IGxvd19ieXRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpOworICByZXR1cm4gY2gg
PT0gbG93X2J5dGUgJiYgaXN4ZGlnaXQobG93X2J5dGUpICE9IDA7Cit9CisKK2lubGluZSBjaGFy
IFRvTG93ZXIoY2hhciBjaCkgeworICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcj4odG9sb3dlcihz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpKTsKK30KK2lubGluZSBjaGFyIFRvVXBwZXIo
Y2hhciBjaCkgeworICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcj4odG91cHBlcihzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyPihjaCkpKTsKK30KKworaW5saW5lIHN0ZDo6c3RyaW5nIFN0cmlwVHJh
aWxpbmdTcGFjZXMoc3RkOjpzdHJpbmcgc3RyKSB7CisgIHN0ZDo6c3RyaW5nOjppdGVyYXRvciBp
dCA9IHN0ci5lbmQoKTsKKyAgd2hpbGUgKGl0ICE9IHN0ci5iZWdpbigpICYmIElzU3BhY2UoKi0t
aXQpKQorICAgIGl0ID0gc3RyLmVyYXNlKGl0KTsKKyAgcmV0dXJuIHN0cjsKK30KKwogLy8gVGhl
IHRlc3Rpbmc6OmludGVybmFsOjpwb3NpeCBuYW1lc3BhY2UgaG9sZHMgd3JhcHBlcnMgZm9yIGNv
bW1vbgogLy8gUE9TSVggZnVuY3Rpb25zLiAgVGhlc2Ugd3JhcHBlcnMgaGlkZSB0aGUgZGlmZmVy
ZW5jZXMgYmV0d2VlbgogLy8gV2luZG93cy9NU1ZDIGFuZCBQT1NJWCBzeXN0ZW1zLiAgU2luY2Ug
c29tZSBjb21waWxlcnMgZGVmaW5lIHRoZXNlCkBAIC0xMzE0LDM2ICsyNDQ5LDM2IEBAIG5hbWVz
cGFjZSBwb3NpeCB7CiAKIHR5cGVkZWYgc3RydWN0IF9zdGF0IFN0YXRTdHJ1Y3Q7CiAKLSNpZmRl
ZiBfX0JPUkxBTkRDX18KKyMgaWZkZWYgX19CT1JMQU5EQ19fCiBpbmxpbmUgaW50IElzQVRUWShp
bnQgZmQpIHsgcmV0dXJuIGlzYXR0eShmZCk7IH0KIGlubGluZSBpbnQgU3RyQ2FzZUNtcChjb25z
dCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIpIHsKICAgcmV0dXJuIHN0cmljbXAoczEsIHMyKTsK
IH0KIGlubGluZSBjaGFyKiBTdHJEdXAoY29uc3QgY2hhciogc3JjKSB7IHJldHVybiBzdHJkdXAo
c3JjKTsgfQotI2Vsc2UgIC8vICFfX0JPUkxBTkRDX18KLSNpZiBHVEVTVF9PU19XSU5ET1dTX01P
QklMRQorIyBlbHNlICAvLyAhX19CT1JMQU5EQ19fCisjICBpZiBHVEVTVF9PU19XSU5ET1dTX01P
QklMRQogaW5saW5lIGludCBJc0FUVFkoaW50IC8qIGZkICovKSB7IHJldHVybiAwOyB9Ci0jZWxz
ZQorIyAgZWxzZQogaW5saW5lIGludCBJc0FUVFkoaW50IGZkKSB7IHJldHVybiBfaXNhdHR5KGZk
KTsgfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyAgZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1NfTU9CSUxFCiBpbmxpbmUgaW50IFN0ckNhc2VDbXAoY29uc3QgY2hhciog
czEsIGNvbnN0IGNoYXIqIHMyKSB7CiAgIHJldHVybiBfc3RyaWNtcChzMSwgczIpOwogfQogaW5s
aW5lIGNoYXIqIFN0ckR1cChjb25zdCBjaGFyKiBzcmMpIHsgcmV0dXJuIF9zdHJkdXAoc3JjKTsg
fQotI2VuZGlmICAvLyBfX0JPUkxBTkRDX18KKyMgZW5kaWYgIC8vIF9fQk9STEFORENfXwogCi0j
aWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
IGlubGluZSBpbnQgRmlsZU5vKEZJTEUqIGZpbGUpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
aW50PihfZmlsZW5vKGZpbGUpKTsgfQogLy8gU3RhdCgpLCBSbURpcigpLCBhbmQgSXNEaXIoKSBh
cmUgbm90IG5lZWRlZCBvbiBXaW5kb3dzIENFIGF0IHRoaXMKIC8vIHRpbWUgYW5kIHRodXMgbm90
IGRlZmluZWQgdGhlcmUuCi0jZWxzZQorIyBlbHNlCiBpbmxpbmUgaW50IEZpbGVObyhGSUxFKiBm
aWxlKSB7IHJldHVybiBfZmlsZW5vKGZpbGUpOyB9CiBpbmxpbmUgaW50IFN0YXQoY29uc3QgY2hh
ciogcGF0aCwgU3RhdFN0cnVjdCogYnVmKSB7IHJldHVybiBfc3RhdChwYXRoLCBidWYpOyB9CiBp
bmxpbmUgaW50IFJtRGlyKGNvbnN0IGNoYXIqIGRpcikgeyByZXR1cm4gX3JtZGlyKGRpcik7IH0K
IGlubGluZSBib29sIElzRGlyKGNvbnN0IFN0YXRTdHJ1Y3QmIHN0KSB7CiAgIHJldHVybiAoX1Nf
SUZESVIgJiBzdC5zdF9tb2RlKSAhPSAwOwogfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dT
X01PQklMRQorIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIAogI2Vsc2UKIApA
QCAtMTM2MywxMSArMjQ5OCw3IEBAIGlubGluZSBib29sIElzRGlyKGNvbnN0IFN0YXRTdHJ1Y3Qm
IHN0KSB7IHJldHVybiBTX0lTRElSKHN0LnN0X21vZGUpOyB9CiAKIC8vIEZ1bmN0aW9ucyBkZXBy
ZWNhdGVkIGJ5IE1TVkMgOC4wLgogCi0jaWZkZWYgX01TQ19WRVIKLS8vIFRlbXBvcmFyaWx5IGRp
c2FibGUgd2FybmluZyA0OTk2IChkZXByZWNhdGVkIGZ1bmN0aW9uKS4KLSNwcmFnbWEgd2Fybmlu
ZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDk5NikKLSNlbmRpZgorR1RFU1RfRElT
QUJMRV9NU0NfREVQUkVDQVRFRF9QVVNIXygpCiAKIGlubGluZSBjb25zdCBjaGFyKiBTdHJOQ3B5
KGNoYXIqIGRlc3QsIGNvbnN0IGNoYXIqIHNyYywgc2l6ZV90IG4pIHsKICAgcmV0dXJuIHN0cm5j
cHkoZGVzdCwgc3JjLCBuKTsKQEAgLTEzNzcsNyArMjUwOCw3IEBAIGlubGluZSBjb25zdCBjaGFy
KiBTdHJOQ3B5KGNoYXIqIGRlc3QsIGNvbnN0IGNoYXIqIHNyYywgc2l6ZV90IG4pIHsKIC8vIFN0
ckVycm9yKCkgYXJlbid0IG5lZWRlZCBvbiBXaW5kb3dzIENFIGF0IHRoaXMgdGltZSBhbmQgdGh1
cyBub3QKIC8vIGRlZmluZWQgdGhlcmUuCiAKLSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
KyNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1dJTkRPV1NfUEhPTkUg
JiYgIUdURVNUX09TX1dJTkRPV1NfUlQKIGlubGluZSBpbnQgQ2hEaXIoY29uc3QgY2hhciogZGly
KSB7IHJldHVybiBjaGRpcihkaXIpOyB9CiAjZW5kaWYKIGlubGluZSBGSUxFKiBGT3Blbihjb25z
dCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyKiBtb2RlKSB7CkBAIC0xNDAxLDggKzI1MzIsOSBAQCBp
bmxpbmUgaW50IENsb3NlKGludCBmZCkgeyByZXR1cm4gY2xvc2UoZmQpOyB9CiBpbmxpbmUgY29u
c3QgY2hhciogU3RyRXJyb3IoaW50IGVycm51bSkgeyByZXR1cm4gc3RyZXJyb3IoZXJybnVtKTsg
fQogI2VuZGlmCiBpbmxpbmUgY29uc3QgY2hhciogR2V0RW52KGNvbnN0IGNoYXIqIG5hbWUpIHsK
LSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxF
IHx8IEdURVNUX09TX1dJTkRPV1NfUEhPTkUgfHwgR1RFU1RfT1NfV0lORE9XU19SVAogICAvLyBX
ZSBhcmUgb24gV2luZG93cyBDRSwgd2hpY2ggaGFzIG5vIGVudmlyb25tZW50IHZhcmlhYmxlcy4K
KyAgc3RhdGljX2Nhc3Q8dm9pZD4obmFtZSk7ICAvLyBUbyBwcmV2ZW50ICd1bnVzZWQgYXJndW1l
bnQnIHdhcm5pbmcuCiAgIHJldHVybiBOVUxMOwogI2VsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18p
IHx8IGRlZmluZWQoX19TdW5PU181XzgpIHx8IGRlZmluZWQoX19TdW5PU181XzkpCiAgIC8vIEVu
dmlyb25tZW50IHZhcmlhYmxlcyB3aGljaCB3ZSBwcm9ncmFtbWF0aWNhbGx5IGNsZWFyIHdpbGwg
YmUgc2V0IHRvIHRoZQpAQCAtMTQxNCw5ICsyNTQ2LDcgQEAgaW5saW5lIGNvbnN0IGNoYXIqIEdl
dEVudihjb25zdCBjaGFyKiBuYW1lKSB7CiAjZW5kaWYKIH0KIAotI2lmZGVmIF9NU0NfVkVSCi0j
cHJhZ21hIHdhcm5pbmcocG9wKSAgLy8gUmVzdG9yZXMgdGhlIHdhcm5pbmcgc3RhdGUuCi0jZW5k
aWYKK0dURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUE9QXygpCiAKICNpZiBHVEVTVF9PU19X
SU5ET1dTX01PQklMRQogLy8gV2luZG93cyBDRSBoYXMgbm8gQyBsaWJyYXJ5LiBUaGUgYWJvcnQo
KSBmdW5jdGlvbiBpcyB1c2VkIGluCkBAIC0xNDI5LDYgKzI1NTksMjMgQEAgaW5saW5lIHZvaWQg
QWJvcnQoKSB7IGFib3J0KCk7IH0KIAogfSAgLy8gbmFtZXNwYWNlIHBvc2l4CiAKKy8vIE1TVkMg
ImRlcHJlY2F0ZXMiIHNucHJpbnRmIGFuZCBpc3N1ZXMgd2FybmluZ3Mgd2hlcmV2ZXIgaXQgaXMg
dXNlZC4gIEluCisvLyBvcmRlciB0byBhdm9pZCB0aGVzZSB3YXJuaW5ncywgd2UgbmVlZCB0byB1
c2UgX3NucHJpbnRmIG9yIF9zbnByaW50Zl9zIG9uCisvLyBNU1ZDLWJhc2VkIHBsYXRmb3Jtcy4g
IFdlIG1hcCB0aGUgR1RFU1RfU05QUklOVEZfIG1hY3JvIHRvIHRoZSBhcHByb3ByaWF0ZQorLy8g
ZnVuY3Rpb24gaW4gb3JkZXIgdG8gYWNoaWV2ZSB0aGF0LiAgV2UgdXNlIG1hY3JvIGRlZmluaXRp
b24gaGVyZSBiZWNhdXNlCisvLyBzbnByaW50ZiBpcyBhIHZhcmlhZGljIGZ1bmN0aW9uLgorI2lm
IF9NU0NfVkVSID49IDE0MDAgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisvLyBNU1ZDIDIw
MDUgYW5kIGFib3ZlIHN1cHBvcnQgdmFyaWFkaWMgbWFjcm9zLgorIyBkZWZpbmUgR1RFU1RfU05Q
UklOVEZfKGJ1ZmZlciwgc2l6ZSwgZm9ybWF0LCAuLi4pIFwKKyAgICAgX3NucHJpbnRmX3MoYnVm
ZmVyLCBzaXplLCBzaXplLCBmb3JtYXQsIF9fVkFfQVJHU19fKQorI2VsaWYgZGVmaW5lZChfTVND
X1ZFUikKKy8vIFdpbmRvd3MgQ0UgZG9lcyBub3QgZGVmaW5lIF9zbnByaW50Zl9zIGFuZCBNU1ZD
IHByaW9yIHRvIDIwMDUgZG9lc24ndAorLy8gY29tcGxhaW4gYWJvdXQgX3NucHJpbnRmLgorIyBk
ZWZpbmUgR1RFU1RfU05QUklOVEZfIF9zbnByaW50ZgorI2Vsc2UKKyMgZGVmaW5lIEdURVNUX1NO
UFJJTlRGXyBzbnByaW50ZgorI2VuZGlmCisKIC8vIFRoZSBtYXhpbXVtIG51bWJlciBhIEJpZ2dl
c3RJbnQgY2FuIHJlcHJlc2VudC4gIFRoaXMgZGVmaW5pdGlvbgogLy8gd29ya3Mgbm8gbWF0dGVy
IEJpZ2dlc3RJbnQgaXMgcmVwcmVzZW50ZWQgaW4gb25lJ3MgY29tcGxlbWVudCBvcgogLy8gdHdv
J3MgY29tcGxlbWVudC4KQEAgLTE1MDAsMjcgKzI2NDcsNDQgQEAgdHlwZWRlZiBUeXBlV2l0aFNp
emU8OD46OkludCBUaW1lSW5NaWxsaXM7ICAvLyBSZXByZXNlbnRzIHRpbWUgaW4gbWlsbGlzZWNv
bmRzLgogLy8gVXRpbGl0aWVzIGZvciBjb21tYW5kIGxpbmUgZmxhZ3MgYW5kIGVudmlyb25tZW50
IHZhcmlhYmxlcy4KIAogLy8gTWFjcm8gZm9yIHJlZmVyZW5jaW5nIGZsYWdzLgotI2RlZmluZSBH
VEVTVF9GTEFHKG5hbWUpIEZMQUdTX2d0ZXN0XyMjbmFtZQorI2lmICFkZWZpbmVkKEdURVNUX0ZM
QUcpCisjIGRlZmluZSBHVEVTVF9GTEFHKG5hbWUpIEZMQUdTX2d0ZXN0XyMjbmFtZQorI2VuZGlm
ICAvLyAhZGVmaW5lZChHVEVTVF9GTEFHKQorCisjaWYgIWRlZmluZWQoR1RFU1RfVVNFX09XTl9G
TEFHRklMRV9GTEFHXykKKyMgZGVmaW5lIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18gMQor
I2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfKQorCisjaWYg
IWRlZmluZWQoR1RFU1RfREVDTEFSRV9ib29sXykKKyMgZGVmaW5lIEdURVNUX0ZMQUdfU0FWRVJf
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkdUZXN0RmxhZ1NhdmVyCiAKIC8vIE1hY3JvcyBmb3IgZGVj
bGFyaW5nIGZsYWdzLgotI2RlZmluZSBHVEVTVF9ERUNMQVJFX2Jvb2xfKG5hbWUpIEdURVNUX0FQ
SV8gZXh0ZXJuIGJvb2wgR1RFU1RfRkxBRyhuYW1lKQotI2RlZmluZSBHVEVTVF9ERUNMQVJFX2lu
dDMyXyhuYW1lKSBcCisjIGRlZmluZSBHVEVTVF9ERUNMQVJFX2Jvb2xfKG5hbWUpIEdURVNUX0FQ
SV8gZXh0ZXJuIGJvb2wgR1RFU1RfRkxBRyhuYW1lKQorIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9p
bnQzMl8obmFtZSkgXAogICAgIEdURVNUX0FQSV8gZXh0ZXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6
OkludDMyIEdURVNUX0ZMQUcobmFtZSkKLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9zdHJpbmdfKG5h
bWUpIFwKLSAgICBHVEVTVF9BUElfIGV4dGVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmcg
R1RFU1RfRkxBRyhuYW1lKQorIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9zdHJpbmdfKG5hbWUpIFwK
KyAgICBHVEVTVF9BUElfIGV4dGVybiA6OnN0ZDo6c3RyaW5nIEdURVNUX0ZMQUcobmFtZSkKIAog
Ly8gTWFjcm9zIGZvciBkZWZpbmluZyBmbGFncy4KLSNkZWZpbmUgR1RFU1RfREVGSU5FX2Jvb2xf
KG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpIFwKKyMgZGVmaW5lIEdURVNUX0RFRklORV9ib29sXyhu
YW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCiAgICAgR1RFU1RfQVBJXyBib29sIEdURVNUX0ZMQUco
bmFtZSkgPSAoZGVmYXVsdF92YWwpCi0jZGVmaW5lIEdURVNUX0RFRklORV9pbnQzMl8obmFtZSwg
ZGVmYXVsdF92YWwsIGRvYykgXAorIyBkZWZpbmUgR1RFU1RfREVGSU5FX2ludDMyXyhuYW1lLCBk
ZWZhdWx0X3ZhbCwgZG9jKSBcCiAgICAgR1RFU1RfQVBJXyA6OnRlc3Rpbmc6OmludGVybmFsOjpJ
bnQzMiBHVEVTVF9GTEFHKG5hbWUpID0gKGRlZmF1bHRfdmFsKQotI2RlZmluZSBHVEVTVF9ERUZJ
TkVfc3RyaW5nXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCi0gICAgR1RFU1RfQVBJXyA6OnRl
c3Rpbmc6OmludGVybmFsOjpTdHJpbmcgR1RFU1RfRkxBRyhuYW1lKSA9IChkZWZhdWx0X3ZhbCkK
KyMgZGVmaW5lIEdURVNUX0RFRklORV9zdHJpbmdfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpIFwK
KyAgICBHVEVTVF9BUElfIDo6c3RkOjpzdHJpbmcgR1RFU1RfRkxBRyhuYW1lKSA9IChkZWZhdWx0
X3ZhbCkKKworI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9ERUNMQVJFX2Jvb2xfKQorCisvLyBU
aHJlYWQgYW5ub3RhdGlvbnMKKyNpZiAhZGVmaW5lZChHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFV
SVJFRF8pCisjIGRlZmluZSBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8obG9ja3MpCisj
IGRlZmluZSBHVEVTVF9MT0NLX0VYQ0xVREVEXyhsb2NrcykKKyNlbmRpZiAgLy8gIWRlZmluZWQo
R1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKQogCiAvLyBQYXJzZXMgJ3N0cicgZm9yIGEg
MzItYml0IHNpZ25lZCBpbnRlZ2VyLiAgSWYgc3VjY2Vzc2Z1bCwgd3JpdGVzIHRoZSByZXN1bHQK
IC8vIHRvICp2YWx1ZSBhbmQgcmV0dXJucyB0cnVlOyBvdGhlcndpc2UgbGVhdmVzICp2YWx1ZSB1
bmNoYW5nZWQgYW5kIHJldHVybnMKIC8vIGZhbHNlLgotLy8gVE9ETyhjaGFuZGxlcmMpOiBGaW5k
IGEgYmV0dGVyIHdheSB0byByZWZhY3RvciBmbGFnIGFuZCBlbnZpcm9ubWVudCBwYXJzaW5nCisv
LyBGSVhNRTogRmluZCBhIGJldHRlciB3YXkgdG8gcmVmYWN0b3IgZmxhZyBhbmQgZW52aXJvbm1l
bnQgcGFyc2luZwogLy8gb3V0IG9mIGJvdGggZ3Rlc3QtcG9ydC5jYyBhbmQgZ3Rlc3QuY2MgdG8g
YXZvaWQgZXhwb3J0aW5nIHRoaXMgdXRpbGl0eQogLy8gZnVuY3Rpb24uCiBib29sIFBhcnNlSW50
MzIoY29uc3QgTWVzc2FnZSYgc3JjX3RleHQsIGNvbnN0IGNoYXIqIHN0ciwgSW50MzIqIHZhbHVl
KTsKQEAgLTE1MjksNiArMjY5Myw3IEBAIGJvb2wgUGFyc2VJbnQzMihjb25zdCBNZXNzYWdlJiBz
cmNfdGV4dCwgY29uc3QgY2hhciogc3RyLCBJbnQzMiogdmFsdWUpOwogLy8gY29ycmVzcG9uZGlu
ZyB0byB0aGUgZ2l2ZW4gR29vZ2xlIFRlc3QgZmxhZy4KIGJvb2wgQm9vbEZyb21HVGVzdEVudihj
b25zdCBjaGFyKiBmbGFnLCBib29sIGRlZmF1bHRfdmFsKTsKIEdURVNUX0FQSV8gSW50MzIgSW50
MzJGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywgSW50MzIgZGVmYXVsdF92YWwpOworc3Rk
OjpzdHJpbmcgT3V0cHV0RmxhZ0Fsc29DaGVja0VudlZhcigpOwogY29uc3QgY2hhciogU3RyaW5n
RnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIGNvbnN0IGNoYXIqIGRlZmF1bHRfdmFsKTsK
IAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaAppbmRl
eCBhZmYwOTNkZWM4ZGIzOTkwNzRlYTNiNzFiYjcyMjdkYTdlOTY3MzBhLi40YzliNjI2MmMzYzEw
MzcyNmFhM2NhYjRjMTk5OTViYWVmOTU4Yjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgK
QEAgLTI3LDcwICsyNywzOCBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogLy8K
LS8vIEF1dGhvcnM6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pLCBlZWZhY21AZ21haWwu
Y29tIChTZWFuIE1jYWZlZSkKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29y
ayAoR29vZ2xlIFRlc3QpCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZy
YW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWNsYXJlcyB0
aGUgU3RyaW5nIGNsYXNzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5IGJ5CiAvLyBHb29n
bGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLiBUaGV5
IHNob3VsZCBub3QgdXNlZAogLy8gYnkgY29kZSBleHRlcm5hbCB0byBHb29nbGUgVGVzdC4KIC8v
Ci0vLyBUaGlzIGhlYWRlciBmaWxlIGlzICNpbmNsdWRlZCBieSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtaW50ZXJuYWwuaD4uCisvLyBUaGlzIGhlYWRlciBmaWxlIGlzICNpbmNsdWRlZCBieSBndGVz
dC1pbnRlcm5hbC5oLgogLy8gSXQgc2hvdWxkIG5vdCBiZSAjaW5jbHVkZWQgYnkgb3RoZXIgZmls
ZXMuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKKwogI2lmbmRlZiBHVEVT
VF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1NUUklOR19IXwogI2RlZmluZSBHVEVTVF9J
TkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1NUUklOR19IXwogCiAjaWZkZWYgX19CT1JMQU5E
Q19fCiAvLyBzdHJpbmcuaCBpcyBub3QgZ3VhcmFudGVlZCB0byBwcm92aWRlIHN0cmNweSBvbiBD
KysgQnVpbGRlci4KLSNpbmNsdWRlIDxtZW0uaD4KKyMgaW5jbHVkZSA8bWVtLmg+CiAjZW5kaWYK
IAogI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaD4KLQogI2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaCIKKwogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsK
IAotLy8gU3RyaW5nIC0gYSBVVEYtOCBzdHJpbmcgY2xhc3MuCi0vLwotLy8gRm9yIGhpc3Rvcmlj
IHJlYXNvbnMsIHdlIGRvbid0IHVzZSBzdGQ6OnN0cmluZy4KLS8vCi0vLyBUT0RPKHdhbkBnb29n
bGUuY29tKTogcmVwbGFjZSB0aGlzIGNsYXNzIHdpdGggc3RkOjpzdHJpbmcgb3IKLS8vIGltcGxl
bWVudCBpdCBpbiB0ZXJtcyBvZiB0aGUgbGF0dGVyLgotLy8KLS8vIE5vdGUgdGhhdCBTdHJpbmcg
Y2FuIHJlcHJlc2VudCBib3RoIE5VTEwgYW5kIHRoZSBlbXB0eSBzdHJpbmcsCi0vLyB3aGlsZSBz
dGQ6OnN0cmluZyBjYW5ub3QgcmVwcmVzZW50IE5VTEwuCi0vLwotLy8gTlVMTCBhbmQgdGhlIGVt
cHR5IHN0cmluZyBhcmUgY29uc2lkZXJlZCBkaWZmZXJlbnQuICBOVUxMIGlzIGxlc3MKLS8vIHRo
YW4gYW55dGhpbmcgKGluY2x1ZGluZyB0aGUgZW1wdHkgc3RyaW5nKSBleGNlcHQgaXRzZWxmLgot
Ly8KLS8vIFRoaXMgY2xhc3Mgb25seSBwcm92aWRlcyBtaW5pbXVtIGZ1bmN0aW9uYWxpdHkgbmVj
ZXNzYXJ5IGZvcgotLy8gaW1wbGVtZW50aW5nIEdvb2dsZSBUZXN0LiAgV2UgZG8gbm90IGludGVu
ZCB0byBpbXBsZW1lbnQgYSBmdWxsLWZsZWRnZWQKLS8vIHN0cmluZyBjbGFzcyBoZXJlLgotLy8K
LS8vIFNpbmNlIHRoZSBwdXJwb3NlIG9mIHRoaXMgY2xhc3MgaXMgdG8gcHJvdmlkZSBhIHN1YnN0
aXR1dGUgZm9yCi0vLyBzdGQ6OnN0cmluZyBvbiBwbGF0Zm9ybXMgd2hlcmUgaXQgY2Fubm90IGJl
IHVzZWQsIHdlIGRlZmluZSBhIGNvcHkKLS8vIGNvbnN0cnVjdG9yIGFuZCBhc3NpZ25tZW50IG9w
ZXJhdG9ycyBzdWNoIHRoYXQgd2UgZG9uJ3QgbmVlZAotLy8gY29uZGl0aW9uYWwgY29tcGlsYXRp
b24gaW4gYSBsb3Qgb2YgcGxhY2VzLgotLy8KLS8vIEluIG9yZGVyIHRvIG1ha2UgdGhlIHJlcHJl
c2VudGF0aW9uIGVmZmljaWVudCwgdGhlIGQndG9yIG9mIFN0cmluZwotLy8gaXMgbm90IHZpcnR1
YWwuICBUaGVyZWZvcmUgRE8gTk9UIElOSEVSSVQgRlJPTSBTdHJpbmcuCisvLyBTdHJpbmcgLSBh
biBhYnN0cmFjdCBjbGFzcyBob2xkaW5nIHN0YXRpYyBzdHJpbmcgdXRpbGl0aWVzLgogY2xhc3Mg
R1RFU1RfQVBJXyBTdHJpbmcgewogIHB1YmxpYzoKICAgLy8gU3RhdGljIHV0aWxpdHkgbWV0aG9k
cwogCi0gIC8vIFJldHVybnMgdGhlIGlucHV0IGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZXMgaWYg
aXQncyBub3QgTlVMTDsKLSAgLy8gb3RoZXJ3aXNlIHJldHVybnMgIihudWxsKSIuICBGb3IgZXhh
bXBsZSwgIlwiSGVsbG9cIiIgaXMgcmV0dXJuZWQKLSAgLy8gZm9yIGlucHV0ICJIZWxsbyIuCi0g
IC8vCi0gIC8vIFRoaXMgaXMgdXNlZnVsIGZvciBwcmludGluZyBhIEMgc3RyaW5nIGluIHRoZSBz
eW50YXggb2YgYSBsaXRlcmFsLgotICAvLwotICAvLyBLbm93biBpc3N1ZTogZXNjYXBlIHNlcXVl
bmNlcyBhcmUgbm90IGhhbmRsZWQgeWV0LgotICBzdGF0aWMgU3RyaW5nIFNob3dDU3RyaW5nUXVv
dGVkKGNvbnN0IGNoYXIqIGNfc3RyKTsKLQogICAvLyBDbG9uZXMgYSAwLXRlcm1pbmF0ZWQgQyBz
dHJpbmcsIGFsbG9jYXRpbmcgbWVtb3J5IHVzaW5nIG5ldy4gIFRoZQogICAvLyBjYWxsZXIgaXMg
cmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZSByZXR1cm4gdmFsdWUgdXNpbmcKICAgLy8gZGVs
ZXRlW10uICBSZXR1cm5zIHRoZSBjbG9uZWQgc3RyaW5nLCBvciBOVUxMIGlmIHRoZSBpbnB1dCBp
cwpAQCAtMTM3LDExICsxMDUsNyBAQCBjbGFzcyBHVEVTVF9BUElfIFN0cmluZyB7CiAgIC8vIE5V
TEwgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gIihudWxsKSIuICBJZiBhbiBlcnJvciBvY2N1cnJlZCBk
dXJpbmcKICAgLy8gdGhlIGNvbnZlcnNpb24sICIoZmFpbGVkIHRvIGNvbnZlcnQgZnJvbSB3aWRl
IHN0cmluZykiIGlzCiAgIC8vIHJldHVybmVkLgotICBzdGF0aWMgU3RyaW5nIFNob3dXaWRlQ1N0
cmluZyhjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKTsKLQotICAvLyBTaW1pbGFyIHRvIFNob3dX
aWRlQ1N0cmluZygpLCBleGNlcHQgdGhhdCB0aGlzIGZ1bmN0aW9uIGVuY2xvc2VzCi0gIC8vIHRo
ZSBjb252ZXJ0ZWQgc3RyaW5nIGluIGRvdWJsZSBxdW90ZXMuCi0gIHN0YXRpYyBTdHJpbmcgU2hv
d1dpZGVDU3RyaW5nUXVvdGVkKGNvbnN0IHdjaGFyX3QqIHdpZGVfY19zdHIpOworICBzdGF0aWMg
c3RkOjpzdHJpbmcgU2hvd1dpZGVDU3RyaW5nKGNvbnN0IHdjaGFyX3QqIHdpZGVfY19zdHIpOwog
CiAgIC8vIENvbXBhcmVzIHR3byB3aWRlIEMgc3RyaW5ncy4gIFJldHVybnMgdHJ1ZSBpZmYgdGhl
eSBoYXZlIHRoZSBzYW1lCiAgIC8vIGNvbnRlbnQuCkBAIC0xNzUsMTc0ICsxMzksMjcgQEAgY2xh
c3MgR1RFU1RfQVBJXyBTdHJpbmcgewogICBzdGF0aWMgYm9vbCBDYXNlSW5zZW5zaXRpdmVXaWRl
Q1N0cmluZ0VxdWFscyhjb25zdCB3Y2hhcl90KiBsaHMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIHJocyk7CiAKLSAgLy8gRm9y
bWF0cyBhIGxpc3Qgb2YgYXJndW1lbnRzIHRvIGEgU3RyaW5nLCB1c2luZyB0aGUgc2FtZSBmb3Jt
YXQKLSAgLy8gc3BlYyBzdHJpbmcgYXMgZm9yIHByaW50Zi4KLSAgLy8KLSAgLy8gV2UgZG8gbm90
IHVzZSB0aGUgU3RyaW5nUHJpbnRmIGNsYXNzIGFzIGl0IGlzIG5vdCB1bml2ZXJzYWxseQotICAv
LyBhdmFpbGFibGUuCi0gIC8vCi0gIC8vIFRoZSByZXN1bHQgaXMgbGltaXRlZCB0byA0MDk2IGNo
YXJhY3RlcnMgKGluY2x1ZGluZyB0aGUgdGFpbGluZwotICAvLyAwKS4gIElmIDQwOTYgY2hhcmFj
dGVycyBhcmUgbm90IGVub3VnaCB0byBmb3JtYXQgdGhlIGlucHV0LAotICAvLyAiPGJ1ZmZlciBl
eGNlZWRlZD4iIGlzIHJldHVybmVkLgotICBzdGF0aWMgU3RyaW5nIEZvcm1hdChjb25zdCBjaGFy
KiBmb3JtYXQsIC4uLik7Ci0KLSAgLy8gQyd0b3JzCi0KLSAgLy8gVGhlIGRlZmF1bHQgYyd0b3Ig
Y29uc3RydWN0cyBhIE5VTEwgc3RyaW5nLgotICBTdHJpbmcoKSA6IGNfc3RyXyhOVUxMKSwgbGVu
Z3RoXygwKSB7fQotCi0gIC8vIENvbnN0cnVjdHMgYSBTdHJpbmcgYnkgY2xvbmluZyBhIDAtdGVy
bWluYXRlZCBDIHN0cmluZy4KLSAgU3RyaW5nKGNvbnN0IGNoYXIqIGFfY19zdHIpIHsgIC8vIE5P
TElOVAotICAgIGlmIChhX2Nfc3RyID09IE5VTEwpIHsKLSAgICAgIGNfc3RyXyA9IE5VTEw7Ci0g
ICAgICBsZW5ndGhfID0gMDsKLSAgICB9IGVsc2UgewotICAgICAgQ29uc3RydWN0Tm9uTnVsbChh
X2Nfc3RyLCBzdHJsZW4oYV9jX3N0cikpOwotICAgIH0KLSAgfQorICAvLyBSZXR1cm5zIHRydWUg
aWZmIHRoZSBnaXZlbiBzdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXgsIGlnbm9yaW5n
CisgIC8vIGNhc2UuIEFueSBzdHJpbmcgaXMgY29uc2lkZXJlZCB0byBlbmQgd2l0aCBhbiBlbXB0
eSBzdWZmaXguCisgIHN0YXRpYyBib29sIEVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKAorICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHN0ciwgY29uc3Qgc3RkOjpzdHJpbmcmIHN1ZmZpeCk7CiAKLSAg
Ly8gQ29uc3RydWN0cyBhIFN0cmluZyBieSBjb3B5aW5nIGEgZ2l2ZW4gbnVtYmVyIG9mIGNoYXJz
IGZyb20gYQotICAvLyBidWZmZXIuICBFLmcuIFN0cmluZygiaGVsbG8iLCAzKSBjcmVhdGVzIHRo
ZSBzdHJpbmcgImhlbCIsCi0gIC8vIFN0cmluZygiYVwwYmNkIiwgNCkgY3JlYXRlcyAiYVwwYmMi
LCBTdHJpbmcoTlVMTCwgMCkgY3JlYXRlcyAiIiwKLSAgLy8gYW5kIFN0cmluZyhOVUxMLCAxKSBy
ZXN1bHRzIGluIGFjY2VzcyB2aW9sYXRpb24uCi0gIFN0cmluZyhjb25zdCBjaGFyKiBidWZmZXIs
IHNpemVfdCBhX2xlbmd0aCkgewotICAgIENvbnN0cnVjdE5vbk51bGwoYnVmZmVyLCBhX2xlbmd0
aCk7Ci0gIH0KKyAgLy8gRm9ybWF0cyBhbiBpbnQgdmFsdWUgYXMgIiUwMmQiLgorICBzdGF0aWMg
c3RkOjpzdHJpbmcgRm9ybWF0SW50V2lkdGgyKGludCB2YWx1ZSk7ICAvLyAiJTAyZCIgZm9yIHdp
ZHRoID09IDIKIAotICAvLyBUaGUgY29weSBjJ3RvciBjcmVhdGVzIGEgbmV3IGNvcHkgb2YgdGhl
IHN0cmluZy4gIFRoZSB0d28KLSAgLy8gU3RyaW5nIG9iamVjdHMgZG8gbm90IHNoYXJlIGNvbnRl
bnQuCi0gIFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cikgOiBjX3N0cl8oTlVMTCksIGxlbmd0aF8o
MCkgeyAqdGhpcyA9IHN0cjsgfQorICAvLyBGb3JtYXRzIGFuIGludCB2YWx1ZSBhcyAiJVgiLgor
ICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0SGV4SW50KGludCB2YWx1ZSk7CiAKLSAgLy8gRCd0
b3IuICBTdHJpbmcgaXMgaW50ZW5kZWQgdG8gYmUgYSBmaW5hbCBjbGFzcywgc28gdGhlIGQndG9y
Ci0gIC8vIGRvZXNuJ3QgbmVlZCB0byBiZSB2aXJ0dWFsLgotICB+U3RyaW5nKCkgeyBkZWxldGVb
XSBjX3N0cl87IH0KLQotICAvLyBBbGxvd3MgYSBTdHJpbmcgdG8gYmUgaW1wbGljaXRseSBjb252
ZXJ0ZWQgdG8gYW4gOjpzdGQ6OnN0cmluZyBvcgotICAvLyA6OnN0cmluZywgYW5kIHZpY2UgdmVy
c2EuICBDb252ZXJ0aW5nIGEgU3RyaW5nIGNvbnRhaW5pbmcgYSBOVUxMCi0gIC8vIHBvaW50ZXIg
dG8gOjpzdGQ6OnN0cmluZyBvciA6OnN0cmluZyBpcyB1bmRlZmluZWQgYmVoYXZpb3IuCi0gIC8v
IENvbnZlcnRpbmcgYSA6OnN0ZDo6c3RyaW5nIG9yIDo6c3RyaW5nIGNvbnRhaW5pbmcgYW4gZW1i
ZWRkZWQgTlVMCi0gIC8vIGNoYXJhY3RlciB0byBhIFN0cmluZyB3aWxsIHJlc3VsdCBpbiB0aGUg
cHJlZml4IHVwIHRvIHRoZSBmaXJzdAotICAvLyBOVUwgY2hhcmFjdGVyLgotICBTdHJpbmcoY29u
c3QgOjpzdGQ6OnN0cmluZyYgc3RyKSB7Ci0gICAgQ29uc3RydWN0Tm9uTnVsbChzdHIuY19zdHIo
KSwgc3RyLmxlbmd0aCgpKTsKLSAgfQotCi0gIG9wZXJhdG9yIDo6c3RkOjpzdHJpbmcoKSBjb25z
dCB7IHJldHVybiA6OnN0ZDo6c3RyaW5nKGNfc3RyKCksIGxlbmd0aCgpKTsgfQotCi0jaWYgR1RF
U1RfSEFTX0dMT0JBTF9TVFJJTkcKLSAgU3RyaW5nKGNvbnN0IDo6c3RyaW5nJiBzdHIpIHsKLSAg
ICBDb25zdHJ1Y3ROb25OdWxsKHN0ci5jX3N0cigpLCBzdHIubGVuZ3RoKCkpOwotICB9Ci0KLSAg
b3BlcmF0b3IgOjpzdHJpbmcoKSBjb25zdCB7IHJldHVybiA6OnN0cmluZyhjX3N0cigpLCBsZW5n
dGgoKSk7IH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLQotICAvLyBSZXR1
cm5zIHRydWUgaWZmIHRoaXMgaXMgYW4gZW1wdHkgc3RyaW5nIChpLmUuICIiKS4KLSAgYm9vbCBl
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIChjX3N0cigpICE9IE5VTEwpICYmIChsZW5ndGgoKSA9PSAw
KTsgfQotCi0gIC8vIENvbXBhcmVzIHRoaXMgd2l0aCBhbm90aGVyIFN0cmluZy4KLSAgLy8gUmV0
dXJucyA8IDAgaWYgdGhpcyBpcyBsZXNzIHRoYW4gcmhzLCAwIGlmIHRoaXMgaXMgZXF1YWwgdG8g
cmhzLCBvciA+IDAKLSAgLy8gaWYgdGhpcyBpcyBncmVhdGVyIHRoYW4gcmhzLgotICBpbnQgQ29t
cGFyZShjb25zdCBTdHJpbmcmIHJocykgY29uc3Q7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0
aGlzIFN0cmluZyBlcXVhbHMgdGhlIGdpdmVuIEMgc3RyaW5nLiAgQSBOVUxMCi0gIC8vIHN0cmlu
ZyBhbmQgYSBub24tTlVMTCBzdHJpbmcgYXJlIGNvbnNpZGVyZWQgbm90IGVxdWFsLgotICBib29s
IG9wZXJhdG9yPT0oY29uc3QgY2hhciogYV9jX3N0cikgY29uc3QgeyByZXR1cm4gQ29tcGFyZShh
X2Nfc3RyKSA9PSAwOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIFN0cmluZyBpcyBs
ZXNzIHRoYW4gdGhlIGdpdmVuIFN0cmluZy4gIEEKLSAgLy8gTlVMTCBzdHJpbmcgaXMgY29uc2lk
ZXJlZCBsZXNzIHRoYW4gIiIuCi0gIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFN0cmluZyYgcmhzKSBj
b25zdCB7IHJldHVybiBDb21wYXJlKHJocykgPCAwOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlm
ZiB0aGlzIFN0cmluZyBkb2Vzbid0IGVxdWFsIHRoZSBnaXZlbiBDIHN0cmluZy4gIEEgTlVMTAot
ICAvLyBzdHJpbmcgYW5kIGEgbm9uLU5VTEwgc3RyaW5nIGFyZSBjb25zaWRlcmVkIG5vdCBlcXVh
bC4KLSAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIqIGFfY19zdHIpIGNvbnN0IHsgcmV0dXJu
ICEoKnRoaXMgPT0gYV9jX3N0cik7IH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgU3Ry
aW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LiAgKkFueSoKLSAgLy8gU3RyaW5nIGlzIGNv
bnNpZGVyZWQgdG8gZW5kIHdpdGggYSBOVUxMIG9yIGVtcHR5IHN1ZmZpeC4KLSAgYm9vbCBFbmRz
V2l0aChjb25zdCBjaGFyKiBzdWZmaXgpIGNvbnN0OwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYg
dGhpcyBTdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXgsIG5vdCBjb25zaWRlcmluZwot
ICAvLyBjYXNlLiBBbnkgU3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGggYSBOVUxMIG9y
IGVtcHR5IHN1ZmZpeC4KLSAgYm9vbCBFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZShjb25zdCBjaGFy
KiBzdWZmaXgpIGNvbnN0OwotCi0gIC8vIFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgZW5jYXBz
dWxhdGVkIHN0cmluZywgb3IgMCBpZiB0aGUKLSAgLy8gc3RyaW5nIGlzIE5VTEwuCi0gIHNpemVf
dCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBsZW5ndGhfOyB9Ci0KLSAgLy8gR2V0cyB0aGUgMC10
ZXJtaW5hdGVkIEMgc3RyaW5nIHRoaXMgU3RyaW5nIG9iamVjdCByZXByZXNlbnRzLgotICAvLyBU
aGUgU3RyaW5nIG9iamVjdCBzdGlsbCBvd25zIHRoZSBzdHJpbmcuICBUaGVyZWZvcmUgdGhlIGNh
bGxlcgotICAvLyBzaG91bGQgTk9UIGRlbGV0ZSB0aGUgcmV0dXJuIHZhbHVlLgotICBjb25zdCBj
aGFyKiBjX3N0cigpIGNvbnN0IHsgcmV0dXJuIGNfc3RyXzsgfQotCi0gIC8vIEFzc2lnbnMgYSBD
IHN0cmluZyB0byB0aGlzIG9iamVjdC4gIFNlbGYtYXNzaWdubWVudCB3b3Jrcy4KLSAgY29uc3Qg
U3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgY2hhciogYV9jX3N0cikgewotICAgIHJldHVybiAqdGhp
cyA9IFN0cmluZyhhX2Nfc3RyKTsKLSAgfQotCi0gIC8vIEFzc2lnbnMgYSBTdHJpbmcgb2JqZWN0
IHRvIHRoaXMgb2JqZWN0LiAgU2VsZi1hc3NpZ25tZW50IHdvcmtzLgotICBjb25zdCBTdHJpbmcm
IG9wZXJhdG9yPShjb25zdCBTdHJpbmcmIHJocykgewotICAgIGlmICh0aGlzICE9ICZyaHMpIHsK
LSAgICAgIGRlbGV0ZVtdIGNfc3RyXzsKLSAgICAgIGlmIChyaHMuY19zdHIoKSA9PSBOVUxMKSB7
Ci0gICAgICAgIGNfc3RyXyA9IE5VTEw7Ci0gICAgICAgIGxlbmd0aF8gPSAwOwotICAgICAgfSBl
bHNlIHsKLSAgICAgICAgQ29uc3RydWN0Tm9uTnVsbChyaHMuY19zdHIoKSwgcmhzLmxlbmd0aCgp
KTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KKyAgLy8gRm9ybWF0
cyBhIGJ5dGUgYXMgIiUwMlgiLgorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0Qnl0ZSh1bnNp
Z25lZCBjaGFyIHZhbHVlKTsKIAogIHByaXZhdGU6Ci0gIC8vIENvbnN0cnVjdHMgYSBub24tTlVM
TCBTdHJpbmcgZnJvbSB0aGUgZ2l2ZW4gY29udGVudC4gIFRoaXMKLSAgLy8gZnVuY3Rpb24gY2Fu
IG9ubHkgYmUgY2FsbGVkIHdoZW4gZGF0YV8gaGFzIG5vdCBiZWVuIGFsbG9jYXRlZC4KLSAgLy8g
Q29uc3RydWN0Tm9uTnVsbChOVUxMLCAwKSByZXN1bHRzIGluIGFuIGVtcHR5IHN0cmluZyAoIiIp
LgotICAvLyBDb25zdHJ1Y3ROb25OdWxsKE5VTEwsIG5vbl96ZXJvKSBpcyB1bmRlZmluZWQgYmVo
YXZpb3IuCi0gIHZvaWQgQ29uc3RydWN0Tm9uTnVsbChjb25zdCBjaGFyKiBidWZmZXIsIHNpemVf
dCBhX2xlbmd0aCkgewotICAgIGNoYXIqIGNvbnN0IHN0ciA9IG5ldyBjaGFyW2FfbGVuZ3RoICsg
MV07Ci0gICAgbWVtY3B5KHN0ciwgYnVmZmVyLCBhX2xlbmd0aCk7Ci0gICAgc3RyW2FfbGVuZ3Ro
XSA9ICdcMCc7Ci0gICAgY19zdHJfID0gc3RyOwotICAgIGxlbmd0aF8gPSBhX2xlbmd0aDsKLSAg
fQotCi0gIGNvbnN0IGNoYXIqIGNfc3RyXzsKLSAgc2l6ZV90IGxlbmd0aF87CisgIFN0cmluZygp
OyAgLy8gTm90IG1lYW50IHRvIGJlIGluc3RhbnRpYXRlZC4KIH07ICAvLyBjbGFzcyBTdHJpbmcK
IAotLy8gU3RyZWFtcyBhIFN0cmluZyB0byBhbiBvc3RyZWFtLiAgRWFjaCAnXDAnIGNoYXJhY3Rl
ciBpbiB0aGUgU3RyaW5nCi0vLyBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgotaW5saW5lIDo6c3Rk
Ojpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBvcywgY29uc3QgU3RyaW5nJiBz
dHIpIHsKLSAgaWYgKHN0ci5jX3N0cigpID09IE5VTEwpIHsKLSAgICBvcyA8PCAiKG51bGwpIjsK
LSAgfSBlbHNlIHsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBjX3N0ciA9IHN0ci5jX3N0cigpOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHN0ci5sZW5ndGgoKTsgaSsrKSB7Ci0gICAgICBp
ZiAoY19zdHJbaV0gPT0gJ1wwJykgewotICAgICAgICBvcyA8PCAiXFwwIjsKLSAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgIG9zIDw8IGNfc3RyW2ldOwotICAgICAgfQotICAgIH0KLSAgfQotICByZXR1
cm4gb3M7Ci19Ci0KLS8vIEdldHMgdGhlIGNvbnRlbnQgb2YgdGhlIFN0clN0cmVhbSdzIGJ1ZmZl
ciBhcyBhIFN0cmluZy4gIEVhY2ggJ1wwJworLy8gR2V0cyB0aGUgY29udGVudCBvZiB0aGUgc3Ry
aW5nc3RyZWFtJ3MgYnVmZmVyIGFzIGFuIHN0ZDo6c3RyaW5nLiAgRWFjaCAnXDAnCiAvLyBjaGFy
YWN0ZXIgaW4gdGhlIGJ1ZmZlciBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgotR1RFU1RfQVBJXyBT
dHJpbmcgU3RyU3RyZWFtVG9TdHJpbmcoU3RyU3RyZWFtKiBzdHJlYW0pOwotCi0vLyBDb252ZXJ0
cyBhIHN0cmVhbWFibGUgdmFsdWUgdG8gYSBTdHJpbmcuICBBIE5VTEwgcG9pbnRlciBpcwotLy8g
Y29udmVydGVkIHRvICIobnVsbCkiLiAgV2hlbiB0aGUgaW5wdXQgdmFsdWUgaXMgYSA6OnN0cmlu
ZywKLS8vIDo6c3RkOjpzdHJpbmcsIDo6d3N0cmluZywgb3IgOjpzdGQ6OndzdHJpbmcgb2JqZWN0
LCBlYWNoIE5VTAotLy8gY2hhcmFjdGVyIGluIGl0IGlzIHJlcGxhY2VkIHdpdGggIlxcMCIuCi0K
LS8vIERlY2xhcmVkIGhlcmUgYnV0IGRlZmluZWQgaW4gZ3Rlc3QuaCwgc28gdGhhdCBpdCBoYXMg
YWNjZXNzCi0vLyB0byB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgTWVzc2FnZSBjbGFzcywgcmVxdWly
ZWQgYnkgdGhlIEFSTQotLy8gY29tcGlsZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVN0cmlu
ZyBTdHJlYW1hYmxlVG9TdHJpbmcoY29uc3QgVCYgc3RyZWFtYWJsZSk7CitHVEVTVF9BUElfIHN0
ZDo6c3RyaW5nIFN0cmluZ1N0cmVhbVRvU3RyaW5nKDo6c3RkOjpzdHJpbmdzdHJlYW0qIHN0cmVh
bSk7CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtdHVwbGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaAppbmRleCBjMjdmM2E0MjFkOWM0OTcxZWRlNDljYzMzMjkx
MmQ0YTgzNjBjNWE1Li43OGEzYTZhMDFmYWM3NTUxN2VhYjgzMTMxMjQyN2UxNWQ1ZTRlYmI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXR1cGxlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oCkBAIC0xLDQgKzEsNiBAQAotLy8gVGhpcyBmaWxlIHdh
cyBHRU5FUkFURUQgYnkgYSBzY3JpcHQuICBETyBOT1QgRURJVCBCWSBIQU5EISEhCisvLyBUaGlz
IGZpbGUgd2FzIEdFTkVSQVRFRCBieSBjb21tYW5kOgorLy8gICAgIHB1bXAucHkgZ3Rlc3QtdHVw
bGUuaC5wdW1wCisvLyBETyBOT1QgRURJVCBCWSBIQU5EISEhCiAKIC8vIENvcHlyaWdodCAyMDA5
IEdvb2dsZSBJbmMuCiAvLyBBbGwgUmlnaHRzIFJlc2VydmVkLgpAQCAtMjgsMTEgKzMwLDEyIEBA
CiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCiAKIC8vIEltcGxlbWVudHMg
YSBzdWJzZXQgb2YgVFIxIHR1cGxlIG5lZWRlZCBieSBHb29nbGUgVGVzdCBhbmQgR29vZ2xlIE1v
Y2suCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKKwogI2lmbmRlZiBHVEVT
VF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RVUExFX0hfCiAjZGVmaW5lIEdURVNUX0lO
Q0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFVQTEVfSF8KIApAQCAtNDAsMTcgKzQzLDI1IEBA
CiAKIC8vIFRoZSBjb21waWxlciB1c2VkIGluIFN5bWJpYW4gaGFzIGEgYnVnIHRoYXQgcHJldmVu
dHMgdXMgZnJvbSBkZWNsYXJpbmcgdGhlCiAvLyB0dXBsZSB0ZW1wbGF0ZSBhcyBhIGZyaWVuZCAo
aXQgY29tcGxhaW5zIHRoYXQgdHVwbGUgaXMgcmVkZWZpbmVkKS4gIFRoaXMKLS8vIGhhY2sgYnlw
YXNzZXMgdGhlIGJ1ZyBieSBkZWNsYXJpbmcgdGhlIG1lbWJlcnMgdGhhdCBzaG91bGQgb3RoZXJ3
aXNlIGJlCisvLyBieXBhc3NlcyB0aGUgYnVnIGJ5IGRlY2xhcmluZyB0aGUgbWVtYmVycyB0aGF0
IHNob3VsZCBvdGhlcndpc2UgYmUKIC8vIHByaXZhdGUgYXMgcHVibGljLgogLy8gU3VuIFN0dWRp
byB2ZXJzaW9ucyA8IDEyIGFsc28gaGF2ZSB0aGUgYWJvdmUgYnVnLgogI2lmIGRlZmluZWQoX19T
WU1CSUFOMzJfXykgfHwgKGRlZmluZWQoX19TVU5QUk9fQ0MpICYmIF9fU1VOUFJPX0NDIDwgMHg1
OTApCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBwdWJsaWM6CisjIGRl
ZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8gcHVibGljOgogI2Vsc2UKLSNkZWZp
bmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIFwKKyMgZGVmaW5lIEdURVNUX0RFQ0xB
UkVfVFVQTEVfQVNfRlJJRU5EXyBcCiAgICAgdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18o
VSk+IGZyaWVuZCBjbGFzcyB0dXBsZTsgXAogICAgcHJpdmF0ZToKICNlbmRpZgogCisvLyBWaXN1
YWwgU3R1ZGlvIDIwMTAsIDIwMTIsIGFuZCAyMDEzIGRlZmluZSBzeW1ib2xzIGluIHN0ZDo6dHIx
IHRoYXQgY29uZmxpY3QKKy8vIHdpdGggb3VyIG93biBkZWZpbml0aW9ucy4gVGhlcmVmb3JlIHVz
aW5nIG91ciBvd24gdHVwbGUgZG9lcyBub3Qgd29yayBvbgorLy8gdGhvc2UgY29tcGlsZXJzLgor
I2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE2MDAgIC8qIDE2MDAgaXMgVmlz
dWFsIFN0dWRpbyAyMDEwICovCisjIGVycm9yICJndGVzdCdzIHR1cGxlIGRvZXNuJ3QgY29tcGls
ZSBvbiBWaXN1YWwgU3R1ZGlvIDIwMTAgb3IgbGF0ZXIuIFwKK0dURVNUX1VTRV9PV05fVFIxX1RV
UExFIG11c3QgYmUgc2V0IHRvIDAgb24gdGhvc2UgY29tcGlsZXJzLiIKKyNlbmRpZgorCiAvLyBH
VEVTVF9uX1RVUExFXyhUKSBpcyB0aGUgdHlwZSBvZiBhbiBuLXR1cGxlLgogI2RlZmluZSBHVEVT
VF8wX1RVUExFXyhUKSB0dXBsZTw+CiAjZGVmaW5lIEdURVNUXzFfVFVQTEVfKFQpIHR1cGxlPFQj
IzAsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQsIFwKQEAgLTE0MCwzNCArMTUx
LDU0IEBAIHRlbXBsYXRlIDxib29sIGtJbmRleFZhbGlkLCBpbnQga0luZGV4LCBjbGFzcyBUdXBs
ZT4KIHN0cnVjdCBUdXBsZUVsZW1lbnQ7CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNf
KFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAwLCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsg
dHlwZWRlZiBUMCB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAwLCBHVEVTVF8x
MF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDAgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVT
VF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAxLCBHVEVTVF8x
MF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUMSB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0
cnVlLCAxLCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDEgdHlwZTsKK307CiAK
IHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0
cnVlLCAyLCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUMiB0eXBlOyB9Oworc3RydWN0
IFR1cGxlRWxlbWVudDx0cnVlLCAyLCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYg
VDIgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0
IFR1cGxlRWxlbWVudDx0cnVlLCAzLCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUMyB0
eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAzLCBHVEVTVF8xMF9UVVBMRV8oVCkg
PiB7CisgIHR5cGVkZWYgVDMgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFN
RVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA0LCBHVEVTVF8xMF9UVVBMRV8oVCk+
IHsgdHlwZWRlZiBUNCB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA0LCBHVEVT
VF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDQgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxH
VEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA1LCBHVEVT
VF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUNSB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVu
dDx0cnVlLCA1LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDUgdHlwZTsKK307
CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVu
dDx0cnVlLCA2LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUNiB0eXBlOyB9Oworc3Ry
dWN0IFR1cGxlRWxlbWVudDx0cnVlLCA2LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVk
ZWYgVDYgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3Ry
dWN0IFR1cGxlRWxlbWVudDx0cnVlLCA3LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBU
NyB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA3LCBHVEVTVF8xMF9UVVBMRV8o
VCkgPiB7CisgIHR5cGVkZWYgVDcgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBF
TkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA4LCBHVEVTVF8xMF9UVVBMRV8o
VCk+IHsgdHlwZWRlZiBUOCB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA4LCBH
VEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDggdHlwZTsKK307CiAKIHRlbXBsYXRl
IDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA5LCBH
VEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUOSB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxl
bWVudDx0cnVlLCA5LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDkgdHlwZTsK
K307CiAKIH0gIC8vIG5hbWVzcGFjZSBndGVzdF9pbnRlcm5hbAogCkBAIC03MDgsMzcgKzczOSw1
OSBAQCBpbmxpbmUgR1RFU1RfMTBfVFVQTEVfKFQpIG1ha2VfdHVwbGUoY29uc3QgVDAmIGYwLCBj
b25zdCBUMSYgZjEsIGNvbnN0IFQyJiBmMiwKIHRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4gc3Ry
dWN0IHR1cGxlX3NpemU7CiAKIHRlbXBsYXRlIDxHVEVTVF8wX1RZUEVOQU1FU18oVCk+Ci1zdHJ1
Y3QgdHVwbGVfc2l6ZTxHVEVTVF8wX1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVl
ID0gMDsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzBfVFVQTEVfKFQpID4geworICBzdGF0
aWMgY29uc3QgaW50IHZhbHVlID0gMDsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xX1RZUEVOQU1F
U18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8xX1RVUExFXyhUKT4geyBzdGF0aWMgY29u
c3QgaW50IHZhbHVlID0gMTsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzFfVFVQTEVfKFQp
ID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMTsKK307CiAKIHRlbXBsYXRlIDxHVEVT
VF8yX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8yX1RVUExFXyhUKT4g
eyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMjsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNU
XzJfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMjsKK307CiAKIHRl
bXBsYXRlIDxHVEVTVF8zX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8z
X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMzsgfTsKK3N0cnVjdCB0dXBs
ZV9zaXplPEdURVNUXzNfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0g
MzsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF80X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVf
c2l6ZTxHVEVTVF80X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNDsgfTsK
K3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzRfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3Qg
aW50IHZhbHVlID0gNDsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF81X1RZUEVOQU1FU18oVCk+Ci1z
dHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF81X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZh
bHVlID0gNTsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzVfVFVQTEVfKFQpID4geworICBz
dGF0aWMgY29uc3QgaW50IHZhbHVlID0gNTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF82X1RZUEVO
QU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF82X1RVUExFXyhUKT4geyBzdGF0aWMg
Y29uc3QgaW50IHZhbHVlID0gNjsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzZfVFVQTEVf
KFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNjsKK307CiAKIHRlbXBsYXRlIDxH
VEVTVF83X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF83X1RVUExFXyhU
KT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNzsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdU
RVNUXzdfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNzsKK307CiAK
IHRlbXBsYXRlIDxHVEVTVF84X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVT
VF84X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gODsgfTsKK3N0cnVjdCB0
dXBsZV9zaXplPEdURVNUXzhfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVl
ID0gODsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF85X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVw
bGVfc2l6ZTxHVEVTVF85X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gOTsg
fTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzlfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29u
c3QgaW50IHZhbHVlID0gOTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQp
Pgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFQpPiB7IHN0YXRpYyBjb25zdCBp
bnQgdmFsdWUgPSAxMDsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzEwX1RVUExFXyhUKSA+
IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDEwOworfTsKIAogdGVtcGxhdGUgPGludCBr
LCBjbGFzcyBUdXBsZT4KIHN0cnVjdCB0dXBsZV9lbGVtZW50IHsKQEAgLTkxMiw3ICs5NjUsNyBA
QCBzdHJ1Y3QgU2FtZVNpemVUdXBsZVByZWZpeENvbXBhcmF0b3I8aywgaz4gewogICB0ZW1wbGF0
ZSA8Y2xhc3MgVHVwbGUxLCBjbGFzcyBUdXBsZTI+CiAgIHN0YXRpYyBib29sIEVxKGNvbnN0IFR1
cGxlMSYgdDEsIGNvbnN0IFR1cGxlMiYgdDIpIHsKICAgICByZXR1cm4gU2FtZVNpemVUdXBsZVBy
ZWZpeENvbXBhcmF0b3I8ayAtIDEsIGsgLSAxPjo6RXEodDEsIHQyKSAmJgotICAgICAgICA6OnN0
ZDo6Z2V0PGsgLSAxPih0MSkgPT0gOjpzdGQ6OmdldDxrIC0gMT4odDIpOworICAgICAgICA6OnN0
ZDo6dHIxOjpnZXQ8ayAtIDE+KHQxKSA9PSA6OnN0ZDo6dHIxOjpnZXQ8ayAtIDE+KHQyKTsKICAg
fQogfTsKIApAQCAtOTIyLDggKzk3NSw4IEBAIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNf
KFQpLCBHVEVTVF8xMF9UWVBFTkFNRVNfKFUpPgogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBHVEVTVF8xMF9UVVBMRV8oVCkmIHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdU
RVNUXzEwX1RVUExFXyhVKSYgdSkgewogICByZXR1cm4gZ3Rlc3RfaW50ZXJuYWw6OlNhbWVTaXpl
VHVwbGVQcmVmaXhDb21wYXJhdG9yPAotICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8xMF9UVVBMRV8o
VCk+Ojp2YWx1ZSwKLSAgICAgIHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFUpPjo6dmFsdWU+
OjpFcSh0LCB1KTsKKyAgICAgIHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFQpID46OnZhbHVl
LAorICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8xMF9UVVBMRV8oVSkgPjo6dmFsdWU+OjpFcSh0LCB1
KTsKIH0KIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCksIEdURVNUXzEwX1RZUEVO
QU1FU18oVSk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1wCmluZGV4IDg1ZWJjODA2
MmVlMTA0NDczN2IzNmU4YTQwODVkMjY3ZjE4ZGMyMDUuLmJiNjI2ZTA0OWYwODc4MGZmY2U5NmQ0
ODUyY2I4ZWQ1ZDNlZjVmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1wCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1wCkBA
IC0yOSwxMSArMjksMTIgQEAgJCQgVGhpcyBtZXRhIGNvbW1lbnQgZml4ZXMgYXV0by1pbmRlbnRh
dGlvbiBpbiBFbWFjcy4gfX0KIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisK
IAogLy8gSW1wbGVtZW50cyBhIHN1YnNldCBvZiBUUjEgdHVwbGUgbmVlZGVkIGJ5IEdvb2dsZSBU
ZXN0IGFuZCBHb29nbGUgTW9jay4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVU
RQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFVQTEVfSF8K
ICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UVVBMRV9IXwogCkBA
IC00MSwxNyArNDIsMjUgQEAgJCQgVGhpcyBtZXRhIGNvbW1lbnQgZml4ZXMgYXV0by1pbmRlbnRh
dGlvbiBpbiBFbWFjcy4gfX0KIAogLy8gVGhlIGNvbXBpbGVyIHVzZWQgaW4gU3ltYmlhbiBoYXMg
YSBidWcgdGhhdCBwcmV2ZW50cyB1cyBmcm9tIGRlY2xhcmluZyB0aGUKIC8vIHR1cGxlIHRlbXBs
YXRlIGFzIGEgZnJpZW5kIChpdCBjb21wbGFpbnMgdGhhdCB0dXBsZSBpcyByZWRlZmluZWQpLiAg
VGhpcwotLy8gaGFjayBieXBhc3NlcyB0aGUgYnVnIGJ5IGRlY2xhcmluZyB0aGUgbWVtYmVycyB0
aGF0IHNob3VsZCBvdGhlcndpc2UgYmUKKy8vIGJ5cGFzc2VzIHRoZSBidWcgYnkgZGVjbGFyaW5n
IHRoZSBtZW1iZXJzIHRoYXQgc2hvdWxkIG90aGVyd2lzZSBiZQogLy8gcHJpdmF0ZSBhcyBwdWJs
aWMuCiAvLyBTdW4gU3R1ZGlvIHZlcnNpb25zIDwgMTIgYWxzbyBoYXZlIHRoZSBhYm92ZSBidWcu
CiAjaWYgZGVmaW5lZChfX1NZTUJJQU4zMl9fKSB8fCAoZGVmaW5lZChfX1NVTlBST19DQykgJiYg
X19TVU5QUk9fQ0MgPCAweDU5MCkKLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklF
TkRfIHB1YmxpYzoKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBwdWJs
aWM6CiAjZWxzZQotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8gXAorIyBk
ZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIFwKICAgICB0ZW1wbGF0ZSA8R1RF
U1RfJChuKV9UWVBFTkFNRVNfKFUpPiBmcmllbmQgY2xhc3MgdHVwbGU7IFwKICAgIHByaXZhdGU6
CiAjZW5kaWYKIAorLy8gVmlzdWFsIFN0dWRpbyAyMDEwLCAyMDEyLCBhbmQgMjAxMyBkZWZpbmUg
c3ltYm9scyBpbiBzdGQ6OnRyMSB0aGF0IGNvbmZsaWN0CisvLyB3aXRoIG91ciBvd24gZGVmaW5p
dGlvbnMuIFRoZXJlZm9yZSB1c2luZyBvdXIgb3duIHR1cGxlIGRvZXMgbm90IHdvcmsgb24KKy8v
IHRob3NlIGNvbXBpbGVycy4KKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAx
NjAwICAvKiAxNjAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxMCAqLworIyBlcnJvciAiZ3Rlc3QncyB0
dXBsZSBkb2Vzbid0IGNvbXBpbGUgb24gVmlzdWFsIFN0dWRpbyAyMDEwIG9yIGxhdGVyLiBcCitH
VEVTVF9VU0VfT1dOX1RSMV9UVVBMRSBtdXN0IGJlIHNldCB0byAwIG9uIHRob3NlIGNvbXBpbGVy
cy4iCisjZW5kaWYKKwogCiAkcmFuZ2UgaSAwLi5uLTEKICRyYW5nZSBqIDAuLm4KQEAgLTExOCw4
ICsxMjcsOSBAQCBzdHJ1Y3QgVHVwbGVFbGVtZW50OwogCiAkZm9yIGkgW1sKIHRlbXBsYXRlIDxH
VEVTVF8kKG4pX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsICRpLCBH
VEVTVF8kKG4pX1RVUExFXyhUKT4gW1tdXQoteyB0eXBlZGVmIFQkaSB0eXBlOyB9Oworc3RydWN0
IFR1cGxlRWxlbWVudDx0cnVlLCAkaSwgR1RFU1RfJChuKV9UVVBMRV8oVCkgPiB7CisgIHR5cGVk
ZWYgVCRpIHR5cGU7Cit9OwogCiAKIF1dCkBAIC0yMjAsNyArMjMwLDkgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIFR1cGxlPiBzdHJ1Y3QgdHVwbGVfc2l6ZTsKIAogJGZvciBqIFtbCiB0ZW1wbGF0ZSA8
R1RFU1RfJChqKV9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfJChqKV9U
VVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9ICRqOyB9Oworc3RydWN0IHR1cGxl
X3NpemU8R1RFU1RfJChqKV9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUg
PSAkajsKK307CiAKIAogXV0KQEAgLTMwMiw4ICszMTQsOCBAQCB0ZW1wbGF0ZSA8R1RFU1RfJChu
KV9UWVBFTkFNRVNfKFQpLCBHVEVTVF8kKG4pX1RZUEVOQU1FU18oVSk+CiBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEdURVNUXyQobilfVFVQTEVfKFQpJiB0LAogICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHVEVTVF8kKG4pX1RVUExFXyhVKSYgdSkgewogICByZXR1cm4gZ3Rlc3Rf
aW50ZXJuYWw6OlNhbWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9yPAotICAgICAgdHVwbGVfc2l6
ZTxHVEVTVF8kKG4pX1RVUExFXyhUKT46OnZhbHVlLAotICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8k
KG4pX1RVUExFXyhVKT46OnZhbHVlPjo6RXEodCwgdSk7CisgICAgICB0dXBsZV9zaXplPEdURVNU
XyQobilfVFVQTEVfKFQpID46OnZhbHVlLAorICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8kKG4pX1RV
UExFXyhVKSA+Ojp2YWx1ZT46OkVxKHQsIHUpOwogfQogCiB0ZW1wbGF0ZSA8R1RFU1RfJChuKV9U
WVBFTkFNRVNfKFQpLCBHVEVTVF8kKG4pX1RZUEVOQU1FU18oVSk+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRp
bC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC10eXBlLXV0aWwuaAppbmRleCAwOTNlZWU2ZjAxOTYzNTU2OWY0MDRhZTYzNTdiOGRlNDhiNzE4
ZTgxLi4yOGU0MTEyNDUzNjFjMDhmMjg3MDdlOTI0OGU2ZDAzMzIwZTY4NjE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5
cGUtdXRpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgKQEAgLTMwLDggKzMwLDcgQEAKIC8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
IC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogLy8gVHlwZSB1dGlsaXRpZXMgbmVlZGVkIGZvciBp
bXBsZW1lbnRpbmcgdHlwZWQgYW5kIHR5cGUtcGFyYW1ldGVyaXplZAogLy8gdGVzdHMuICBUaGlz
IGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBULiAgRE8gTk9UIEVESVQgQlkgSEFORCEKQEAg
LTQxLDU4ICs0MCw4NCBAQAogLy8gUGxlYXNlIGNvbnRhY3QgZ29vZ2xldGVzdGZyYW1ld29ya0Bn
b29nbGVncm91cHMuY29tIGlmIHlvdSBuZWVkCiAvLyBtb3JlLgogCisvLyBHT09HTEVURVNUX0NN
MDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5B
TF9HVEVTVF9UWVBFX1VUSUxfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5B
TF9HVEVTVF9UWVBFX1VUSUxfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4KLQotI2lmIEdU
RVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AKKyNpbmNsdWRlICJn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKIC8vICNpZmRlZiBfX0dOVUNfXyBpcyB0b28g
Z2VuZXJhbCBoZXJlLiAgSXQgaXMgcG9zc2libGUgdG8gdXNlIGdjYyB3aXRob3V0IHVzaW5nCiAv
LyBsaWJzdGRjKysgKHdoaWNoIGlzIHdoZXJlIGN4eGFiaS5oIGNvbWVzIGZyb20pLgotI2lmZGVm
IF9fR0xJQkNYWF9fCi0jaW5jbHVkZSA8Y3h4YWJpLmg+Ci0jZW5kaWYgIC8vIF9fR0xJQkNYWF9f
CisjIGlmIEdURVNUX0hBU19DWFhBQklfSF8KKyMgIGluY2x1ZGUgPGN4eGFiaS5oPgorIyBlbGlm
IGRlZmluZWQoX19IUF9hQ0MpCisjICBpbmNsdWRlIDxhY3h4X2RlbWFuZ2xlLmg+CisjIGVuZGlm
ICAvLyBHVEVTVF9IQVNIX0NYWEFCSV9IXwogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiBuYW1lc3Bh
Y2UgaW50ZXJuYWwgewogCi0vLyBBc3NlcnR5VHlwZUVxPFQxLCBUMj46OnR5cGUgaXMgZGVmaW5l
ZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQotLy8gdHlwZS4gIFRoaXMgY2FuIGJlIHVzZWQg
YXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0aGF0Ci0vLyB0d28gdHlwZXMg
YXJlIGVxdWFsLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotc3RydWN0
IEFzc2VydFR5cGVFcTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgQXNzZXJ0VHlw
ZUVxPFQsIFQ+IHsKLSAgdHlwZWRlZiBib29sIHR5cGU7Ci19OworLy8gQ2Fub25pY2FsaXplcyBh
IGdpdmVuIG5hbWUgd2l0aCByZXNwZWN0IHRvIHRoZSBTdGFuZGFyZCBDKysgTGlicmFyeS4KKy8v
IFRoaXMgaGFuZGxlcyByZW1vdmluZyB0aGUgaW5saW5lIG5hbWVzcGFjZSB3aXRoaW4gYHN0ZGAg
dGhhdCBpcworLy8gdXNlZCBieSB2YXJpb3VzIHN0YW5kYXJkIGxpYnJhcmllcyAoZS5nLiwgYHN0
ZDo6X18xYCkuICBOYW1lcyBvdXRzaWRlCisvLyBvZiBuYW1lc3BhY2Ugc3RkIGFyZSByZXR1cm5l
ZCB1bm1vZGlmaWVkLgoraW5saW5lIHN0ZDo6c3RyaW5nIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZl
cnNpb25pbmcoc3RkOjpzdHJpbmcgcykgeworICBzdGF0aWMgY29uc3QgY2hhciBwcmVmaXhbXSA9
ICJzdGQ6Ol9fIjsKKyAgaWYgKHMuY29tcGFyZSgwLCBzdHJsZW4ocHJlZml4KSwgcHJlZml4KSA9
PSAwKSB7CisgICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBlbmQgPSBzLmZpbmQoIjo6Iiwgc3Ry
bGVuKHByZWZpeCkpOworICAgIGlmIChlbmQgIT0gcy5ucG9zKSB7CisgICAgICAvLyBFcmFzZSBl
dmVyeXRoaW5nIGJldHdlZW4gdGhlIGluaXRpYWwgYHN0ZGAgYW5kIHRoZSBzZWNvbmQgYDo6YC4K
KyAgICAgIHMuZXJhc2Uoc3RybGVuKCJzdGQiKSwgZW5kIC0gc3RybGVuKCJzdGQiKSk7CisgICAg
fQorICB9CisgIHJldHVybiBzOworfQogCiAvLyBHZXRUeXBlTmFtZTxUPigpIHJldHVybnMgYSBo
dW1hbi1yZWFkYWJsZSBuYW1lIG9mIHR5cGUgVC4KKy8vIE5COiBUaGlzIGZ1bmN0aW9uIGlzIGFs
c28gdXNlZCBpbiBHb29nbGUgTW9jaywgc28gZG9uJ3QgbW92ZSBpdCBpbnNpZGUgb2YKKy8vIHRo
ZSB0eXBlZC10ZXN0LW9ubHkgc2VjdGlvbiBiZWxvdy4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
U3RyaW5nIEdldFR5cGVOYW1lKCkgewotI2lmIEdURVNUX0hBU19SVFRJCitzdGQ6OnN0cmluZyBH
ZXRUeXBlTmFtZSgpIHsKKyMgaWYgR1RFU1RfSEFTX1JUVEkKIAogICBjb25zdCBjaGFyKiBjb25z
dCBuYW1lID0gdHlwZWlkKFQpLm5hbWUoKTsKLSNpZmRlZiBfX0dMSUJDWFhfXworIyAgaWYgR1RF
U1RfSEFTX0NYWEFCSV9IXyB8fCBkZWZpbmVkKF9fSFBfYUNDKQogICBpbnQgc3RhdHVzID0gMDsK
ICAgLy8gZ2NjJ3MgaW1wbGVtZW50YXRpb24gb2YgdHlwZWlkKFQpLm5hbWUoKSBtYW5nbGVzIHRo
ZSB0eXBlIG5hbWUsCiAgIC8vIHNvIHdlIGhhdmUgdG8gZGVtYW5nbGUgaXQuCi0gIGNoYXIqIGNv
bnN0IHJlYWRhYmxlX25hbWUgPSBhYmk6Ol9fY3hhX2RlbWFuZ2xlKG5hbWUsIDAsIDAsICZzdGF0
dXMpOwotICBjb25zdCBTdHJpbmcgbmFtZV9zdHIoc3RhdHVzID09IDAgPyByZWFkYWJsZV9uYW1l
IDogbmFtZSk7CisjICAgaWYgR1RFU1RfSEFTX0NYWEFCSV9IXworICB1c2luZyBhYmk6Ol9fY3hh
X2RlbWFuZ2xlOworIyAgIGVuZGlmICAvLyBHVEVTVF9IQVNfQ1hYQUJJX0hfCisgIGNoYXIqIGNv
bnN0IHJlYWRhYmxlX25hbWUgPSBfX2N4YV9kZW1hbmdsZShuYW1lLCAwLCAwLCAmc3RhdHVzKTsK
KyAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZV9zdHIoc3RhdHVzID09IDAgPyByZWFkYWJsZV9uYW1l
IDogbmFtZSk7CiAgIGZyZWUocmVhZGFibGVfbmFtZSk7Ci0gIHJldHVybiBuYW1lX3N0cjsKLSNl
bHNlCisgIHJldHVybiBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKG5hbWVfc3RyKTsK
KyMgIGVsc2UKICAgcmV0dXJuIG5hbWU7Ci0jZW5kaWYgIC8vIF9fR0xJQkNYWF9fCisjICBlbmRp
ZiAgLy8gR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBfX0hQX2FDQworCisjIGVsc2UKIAotI2Vsc2UK
ICAgcmV0dXJuICI8dHlwZT4iOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUlRUSQorCisjIGVuZGlm
ICAvLyBHVEVTVF9IQVNfUlRUSQogfQogCisjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RF
U1RfSEFTX1RZUEVEX1RFU1RfUAorCisvLyBBc3NlcnR5VHlwZUVxPFQxLCBUMj46OnR5cGUgaXMg
ZGVmaW5lZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQorLy8gdHlwZS4gIFRoaXMgY2FuIGJl
IHVzZWQgYXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0aGF0CisvLyB0d28g
dHlwZXMgYXJlIGVxdWFsLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgor
c3RydWN0IEFzc2VydFR5cGVFcTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQXNz
ZXJ0VHlwZUVxPFQsIFQ+IHsKKyAgdHlwZWRlZiBib29sIHR5cGU7Cit9OworCiAvLyBBIHVuaXF1
ZSB0eXBlIHVzZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBhcmd1bWVudHMgb2YgY2xh
c3MKIC8vIHRlbXBsYXRlIFR5cGVzLiAgVGhpcyBhbGxvd3MgdXMgdG8gc2ltdWxhdGUgdmFyaWFk
aWMgdGVtcGxhdGVzCiAvLyAoZS5nLiBUeXBlczxpbnQ+LCBUeXBlPGludCwgZG91YmxlPiwgYW5k
IGV0YyksIHdoaWNoIEMrKyBkb2Vzbid0CkBAIC0xNjExLDcgKzE2MzYsNyBAQCBzdHJ1Y3QgVHlw
ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEz
LCBUMTQsIFQxNSwKIAogbmFtZXNwYWNlIGludGVybmFsIHsKIAotI2RlZmluZSBHVEVTVF9URU1Q
TEFURV8gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzCisjIGRlZmluZSBHVEVTVF9URU1QTEFU
RV8gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzCiAKIC8vIFRoZSB0ZW1wbGF0ZSAic2VsZWN0
b3IiIHN0cnVjdCBUZW1wbGF0ZVNlbDxUbXBsPiBpcyB1c2VkIHRvCiAvLyByZXByZXNlbnQgVG1w
bCwgd2hpY2ggbXVzdCBiZSBhIGNsYXNzIHRlbXBsYXRlIHdpdGggb25lIHR5cGUKQEAgLTE2Mjks
NyArMTY1NCw3IEBAIHN0cnVjdCBUZW1wbGF0ZVNlbCB7CiAgIH07CiB9OwogCi0jZGVmaW5lIEdU
RVNUX0JJTkRfKFRtcGxTZWwsIFQpIFwKKyMgZGVmaW5lIEdURVNUX0JJTkRfKFRtcGxTZWwsIFQp
IFwKICAgVG1wbFNlbDo6dGVtcGxhdGUgQmluZDxUPjo6dHlwZQogCiAvLyBBIHVuaXF1ZSBzdHJ1
Y3QgdGVtcGxhdGUgdXNlZCBhcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlCkBAIC0zMjkxLDcg
KzMzMTYsOSBAQCBzdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAogLy8gSU5TVEFOVElBVEVfVFlQRURfVEVT
VF9DQVNFX1AoKS4KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgVHlwZUxpc3QgeyB0
eXBlZGVmIFR5cGVzMTxUPiB0eXBlOyB9Oworc3RydWN0IFR5cGVMaXN0IHsKKyAgdHlwZWRlZiBU
eXBlczE8VD4gdHlwZTsKK307CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIs
IHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgdHlwZW5hbWUgVDYs
IHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKQEAg
LTMzMTMsOSArMzM0MCw5IEBAIHN0cnVjdCBUeXBlTGlzdDxUeXBlczxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCiAgICAgICBUNDEsIFQ0Miwg
VDQzLCBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5LCBUNTA+Ojp0eXBlIHR5cGU7CiB9Owog
CisjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNU
X1AKKwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwog
Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNU
X1AKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RZUEVf
VVRJTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wCmluZGV4IDVh
ZWQxZTU1NDRmYTJkYTE1ODk3MzRjYmMzYjQxNDFiNTg3YTFmMzIuLjAwMDFhNWQzOWRmYTZkMjRj
N2M0MWExNmExNWYyZTJhNWNlOTQ5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgucHVtcAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUt
dXRpbC5oLnB1bXAKQEAgLTI4LDggKzI4LDcgQEAgJHZhciBuID0gNTAgICQkIE1heGltdW0gbGVu
Z3RoIG9mIHR5cGUgbGlzdHMgd2Ugd2FudCB0byBzdXBwb3J0LgogLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUeXBlIHV0aWxpdGllcyBuZWVkZWQgZm9yIGltcGxl
bWVudGluZyB0eXBlZCBhbmQgdHlwZS1wYXJhbWV0ZXJpemVkCiAvLyB0ZXN0cy4gIFRoaXMgZmls
ZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBETyBOT1QgRURJVCBCWSBIQU5EIQpAQCAtMzks
NTggKzM4LDg0IEBAICR2YXIgbiA9IDUwICAkJCBNYXhpbXVtIGxlbmd0aCBvZiB0eXBlIGxpc3Rz
IHdlIHdhbnQgdG8gc3VwcG9ydC4KIC8vIFBsZWFzZSBjb250YWN0IGdvb2dsZXRlc3RmcmFtZXdv
cmtAZ29vZ2xlZ3JvdXBzLmNvbSBpZiB5b3UgbmVlZAogLy8gbW9yZS4KIAorLy8gR09PR0xFVEVT
VF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5U
RVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5U
RVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVz
dC1wb3J0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+Ci0KLSNp
ZiBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisjaW5jbHVk
ZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAvLyAjaWZkZWYgX19HTlVDX18gaXMg
dG9vIGdlbmVyYWwgaGVyZS4gIEl0IGlzIHBvc3NpYmxlIHRvIHVzZSBnY2Mgd2l0aG91dCB1c2lu
ZwogLy8gbGlic3RkYysrICh3aGljaCBpcyB3aGVyZSBjeHhhYmkuaCBjb21lcyBmcm9tKS4KLSNp
ZmRlZiBfX0dMSUJDWFhfXwotI2luY2x1ZGUgPGN4eGFiaS5oPgotI2VuZGlmICAvLyBfX0dMSUJD
WFhfXworIyBpZiBHVEVTVF9IQVNfQ1hYQUJJX0hfCisjICBpbmNsdWRlIDxjeHhhYmkuaD4KKyMg
ZWxpZiBkZWZpbmVkKF9fSFBfYUNDKQorIyAgaW5jbHVkZSA8YWN4eF9kZW1hbmdsZS5oPgorIyBl
bmRpZiAgLy8gR1RFU1RfSEFTSF9DWFhBQklfSF8KIAogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFt
ZXNwYWNlIGludGVybmFsIHsKIAotLy8gQXNzZXJ0eVR5cGVFcTxUMSwgVDI+Ojp0eXBlIGlzIGRl
ZmluZWQgaWZmIFQxIGFuZCBUMiBhcmUgdGhlIHNhbWUKLS8vIHR5cGUuICBUaGlzIGNhbiBiZSB1
c2VkIGFzIGEgY29tcGlsZS10aW1lIGFzc2VydGlvbiB0byBlbnN1cmUgdGhhdAotLy8gdHdvIHR5
cGVzIGFyZSBlcXVhbC4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLXN0
cnVjdCBBc3NlcnRUeXBlRXE7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IEFzc2Vy
dFR5cGVFcTxULCBUPiB7Ci0gIHR5cGVkZWYgYm9vbCB0eXBlOwotfTsKKy8vIENhbm9uaWNhbGl6
ZXMgYSBnaXZlbiBuYW1lIHdpdGggcmVzcGVjdCB0byB0aGUgU3RhbmRhcmQgQysrIExpYnJhcnku
CisvLyBUaGlzIGhhbmRsZXMgcmVtb3ZpbmcgdGhlIGlubGluZSBuYW1lc3BhY2Ugd2l0aGluIGBz
dGRgIHRoYXQgaXMKKy8vIHVzZWQgYnkgdmFyaW91cyBzdGFuZGFyZCBsaWJyYXJpZXMgKGUuZy4s
IGBzdGQ6Ol9fMWApLiAgTmFtZXMgb3V0c2lkZQorLy8gb2YgbmFtZXNwYWNlIHN0ZCBhcmUgcmV0
dXJuZWQgdW5tb2RpZmllZC4KK2lubGluZSBzdGQ6OnN0cmluZyBDYW5vbmljYWxpemVGb3JTdGRM
aWJWZXJzaW9uaW5nKHN0ZDo6c3RyaW5nIHMpIHsKKyAgc3RhdGljIGNvbnN0IGNoYXIgcHJlZml4
W10gPSAic3RkOjpfXyI7CisgIGlmIChzLmNvbXBhcmUoMCwgc3RybGVuKHByZWZpeCksIHByZWZp
eCkgPT0gMCkgeworICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgZW5kID0gcy5maW5kKCI6OiIs
IHN0cmxlbihwcmVmaXgpKTsKKyAgICBpZiAoZW5kICE9IHMubnBvcykgeworICAgICAgLy8gRXJh
c2UgZXZlcnl0aGluZyBiZXR3ZWVuIHRoZSBpbml0aWFsIGBzdGRgIGFuZCB0aGUgc2Vjb25kIGA6
OmAuCisgICAgICBzLmVyYXNlKHN0cmxlbigic3RkIiksIGVuZCAtIHN0cmxlbigic3RkIikpOwor
ICAgIH0KKyAgfQorICByZXR1cm4gczsKK30KIAogLy8gR2V0VHlwZU5hbWU8VD4oKSByZXR1cm5z
IGEgaHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0eXBlIFQuCisvLyBOQjogVGhpcyBmdW5jdGlvbiBp
cyBhbHNvIHVzZWQgaW4gR29vZ2xlIE1vY2ssIHNvIGRvbid0IG1vdmUgaXQgaW5zaWRlIG9mCisv
LyB0aGUgdHlwZWQtdGVzdC1vbmx5IHNlY3Rpb24gYmVsb3cuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLVN0cmluZyBHZXRUeXBlTmFtZSgpIHsKLSNpZiBHVEVTVF9IQVNfUlRUSQorc3RkOjpzdHJp
bmcgR2V0VHlwZU5hbWUoKSB7CisjIGlmIEdURVNUX0hBU19SVFRJCiAKICAgY29uc3QgY2hhciog
Y29uc3QgbmFtZSA9IHR5cGVpZChUKS5uYW1lKCk7Ci0jaWZkZWYgX19HTElCQ1hYX18KKyMgIGlm
IEdURVNUX0hBU19DWFhBQklfSF8gfHwgZGVmaW5lZChfX0hQX2FDQykKICAgaW50IHN0YXR1cyA9
IDA7CiAgIC8vIGdjYydzIGltcGxlbWVudGF0aW9uIG9mIHR5cGVpZChUKS5uYW1lKCkgbWFuZ2xl
cyB0aGUgdHlwZSBuYW1lLAogICAvLyBzbyB3ZSBoYXZlIHRvIGRlbWFuZ2xlIGl0LgotICBjaGFy
KiBjb25zdCByZWFkYWJsZV9uYW1lID0gYWJpOjpfX2N4YV9kZW1hbmdsZShuYW1lLCAwLCAwLCAm
c3RhdHVzKTsKLSAgY29uc3QgU3RyaW5nIG5hbWVfc3RyKHN0YXR1cyA9PSAwID8gcmVhZGFibGVf
bmFtZSA6IG5hbWUpOworIyAgIGlmIEdURVNUX0hBU19DWFhBQklfSF8KKyAgdXNpbmcgYWJpOjpf
X2N4YV9kZW1hbmdsZTsKKyMgICBlbmRpZiAgLy8gR1RFU1RfSEFTX0NYWEFCSV9IXworICBjaGFy
KiBjb25zdCByZWFkYWJsZV9uYW1lID0gX19jeGFfZGVtYW5nbGUobmFtZSwgMCwgMCwgJnN0YXR1
cyk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG5hbWVfc3RyKHN0YXR1cyA9PSAwID8gcmVhZGFibGVf
bmFtZSA6IG5hbWUpOwogICBmcmVlKHJlYWRhYmxlX25hbWUpOwotICByZXR1cm4gbmFtZV9zdHI7
Ci0jZWxzZQorICByZXR1cm4gQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZyhuYW1lX3N0
cik7CisjICBlbHNlCiAgIHJldHVybiBuYW1lOwotI2VuZGlmICAvLyBfX0dMSUJDWFhfXworIyAg
ZW5kaWYgIC8vIEdURVNUX0hBU19DWFhBQklfSF8gfHwgX19IUF9hQ0MKKworIyBlbHNlCiAKLSNl
bHNlCiAgIHJldHVybiAiPHR5cGU+IjsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1JUVEkKKworIyBl
bmRpZiAgLy8gR1RFU1RfSEFTX1JUVEkKIH0KIAorI2lmIEdURVNUX0hBU19UWVBFRF9URVNUIHx8
IEdURVNUX0hBU19UWVBFRF9URVNUX1AKKworLy8gQXNzZXJ0eVR5cGVFcTxUMSwgVDI+Ojp0eXBl
IGlzIGRlZmluZWQgaWZmIFQxIGFuZCBUMiBhcmUgdGhlIHNhbWUKKy8vIHR5cGUuICBUaGlzIGNh
biBiZSB1c2VkIGFzIGEgY29tcGlsZS10aW1lIGFzc2VydGlvbiB0byBlbnN1cmUgdGhhdAorLy8g
dHdvIHR5cGVzIGFyZSBlcXVhbC4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
Mj4KK3N0cnVjdCBBc3NlcnRUeXBlRXE7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0
IEFzc2VydFR5cGVFcTxULCBUPiB7CisgIHR5cGVkZWYgYm9vbCB0eXBlOworfTsKKwogLy8gQSB1
bmlxdWUgdHlwZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgYXJndW1lbnRzIG9m
IGNsYXNzCiAvLyB0ZW1wbGF0ZSBUeXBlcy4gIFRoaXMgYWxsb3dzIHVzIHRvIHNpbXVsYXRlIHZh
cmlhZGljIHRlbXBsYXRlcwogLy8gKGUuZy4gVHlwZXM8aW50PiwgVHlwZTxpbnQsIGRvdWJsZT4s
IGFuZCBldGMpLCB3aGljaCBDKysgZG9lc24ndApAQCAtMTY5LDcgKzE5NCw3IEBAIHN0cnVjdCBU
eXBlczwkZm9yIGosIFtbVCRqXV0kZm9yIGtbWywgaW50ZXJuYWw6Ok5vbmVdXT4gewogCiBuYW1l
c3BhY2UgaW50ZXJuYWwgewogCi0jZGVmaW5lIEdURVNUX1RFTVBMQVRFXyB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY2xhc3MKKyMgZGVmaW5lIEdURVNUX1RFTVBMQVRFXyB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MKIAogLy8gVGhlIHRlbXBsYXRlICJzZWxlY3RvciIgc3RydWN0IFRlbXBsYXRl
U2VsPFRtcGw+IGlzIHVzZWQgdG8KIC8vIHJlcHJlc2VudCBUbXBsLCB3aGljaCBtdXN0IGJlIGEg
Y2xhc3MgdGVtcGxhdGUgd2l0aCBvbmUgdHlwZQpAQCAtMTg3LDcgKzIxMiw3IEBAIHN0cnVjdCBU
ZW1wbGF0ZVNlbCB7CiAgIH07CiB9OwogCi0jZGVmaW5lIEdURVNUX0JJTkRfKFRtcGxTZWwsIFQp
IFwKKyMgZGVmaW5lIEdURVNUX0JJTkRfKFRtcGxTZWwsIFQpIFwKICAgVG1wbFNlbDo6dGVtcGxh
dGUgQmluZDxUPjo6dHlwZQogCiAvLyBBIHVuaXF1ZSBzdHJ1Y3QgdGVtcGxhdGUgdXNlZCBhcyB0
aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlCkBAIC0yNzAsNyArMjk1LDkgQEAgc3RydWN0IFRlbXBs
YXRlczwkZm9yIGosIFtbVCRqXV0kZm9yIGtbWywgTm9uZVRdXT4gewogLy8gSU5TVEFOVElBVEVf
VFlQRURfVEVTVF9DQVNFX1AoKS4KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgVHlw
ZUxpc3QgeyB0eXBlZGVmIFR5cGVzMTxUPiB0eXBlOyB9Oworc3RydWN0IFR5cGVMaXN0IHsKKyAg
dHlwZWRlZiBUeXBlczE8VD4gdHlwZTsKK307CiAKIAogJHJhbmdlIGkgMS4ubgpAQCAtMjc5LDkg
KzMwNiw5IEBAIHN0cnVjdCBUeXBlTGlzdDxUeXBlczwkZm9yIGksIFtbVCRpXV0+ID4gewogICB0
eXBlZGVmIHR5cGVuYW1lIFR5cGVzPCRmb3IgaSwgW1tUJGldXT46OnR5cGUgdHlwZTsKIH07CiAK
KyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1Rf
UAorCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAK
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1Rf
UAotCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQRV9V
VElMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tYWtlL01ha2VmaWxl
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbWFrZS9NYWtlZmlsZQppbmRleCA1YjI3YjZhMmNi
YjEzZTM4MGVlNzVkMTg2ZjU1M2JmYjVmYTE0NGI1Li45YWM3NDQ5M2JhNTUyNDY1OTdlOTBiODk4
ZmFlODQ3YWUzNThlYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tYWtl
L01ha2VmaWxlCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21ha2UvTWFrZWZpbGUKQEAg
LTIwLDEwICsyMCwxMiBAQCBHVEVTVF9ESVIgPSAuLgogVVNFUl9ESVIgPSAuLi9zYW1wbGVzCiAK
ICMgRmxhZ3MgcGFzc2VkIHRvIHRoZSBwcmVwcm9jZXNzb3IuCi1DUFBGTEFHUyArPSAtSSQoR1RF
U1RfRElSKS9pbmNsdWRlCisjIFNldCBHb29nbGUgVGVzdCdzIGhlYWRlciBkaXJlY3RvcnkgYXMg
YSBzeXN0ZW0gZGlyZWN0b3J5LCBzdWNoIHRoYXQKKyMgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgZ2Vu
ZXJhdGUgd2FybmluZ3MgaW4gR29vZ2xlIFRlc3QgaGVhZGVycy4KK0NQUEZMQUdTICs9IC1pc3lz
dGVtICQoR1RFU1RfRElSKS9pbmNsdWRlCiAKICMgRmxhZ3MgcGFzc2VkIHRvIHRoZSBDKysgY29t
cGlsZXIuCi1DWFhGTEFHUyArPSAtZyAtV2FsbCAtV2V4dHJhCitDWFhGTEFHUyArPSAtZyAtV2Fs
bCAtV2V4dHJhIC1wdGhyZWFkCiAKICMgQWxsIHRlc3RzIHByb2R1Y2VkIGJ5IHRoaXMgTWFrZWZp
bGUuICBSZW1lbWJlciB0byBhZGQgbmV3IHRlc3RzIHlvdQogIyBjcmVhdGVkIHRvIHRoZSBsaXN0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1k
LnNsbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC1tZC5zbG4KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTM2YjMzYjYyMTVjMzc0YWZjMTE2YjUyMDg0YjE2ZjQxNDg4MDQ3YQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC1tZC5z
bG4KQEAgLTAsMCArMSw1NSBAQAorTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmls
ZSwgRm9ybWF0IFZlcnNpb24gMTEuMDAKKyMgVmlzdWFsIEMrKyBFeHByZXNzIDIwMTAKK1Byb2pl
Y3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3QtbWQi
LCAiZ3Rlc3QtbWQudmN4cHJvaiIsICJ7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMx
QkU4fSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEw
QzkxQkM5NDJ9IikgPSAiZ3Rlc3RfbWFpbi1tZCIsICJndGVzdF9tYWluLW1kLnZjeHByb2oiLCAi
ezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzM30iCitFbmRQcm9qZWN0CitQcm9q
ZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0X3By
b2RfdGVzdC1tZCIsICJndGVzdF9wcm9kX3Rlc3QtbWQudmN4cHJvaiIsICJ7MjQ4NDg1NTEtRUY0
Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VC
OC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3RfdW5pdHRlc3QtbWQiLCAi
Z3Rlc3RfdW5pdHRlc3QtbWQudmN4cHJvaiIsICJ7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRF
RTBFRDQ4MUEyfSIKK0VuZFByb2plY3QKK0dsb2JhbAorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25D
b25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCisJCURlYnVnfFdpbjMyID0gRGVi
dWd8V2luMzIKKwkJRGVidWd8eDY0ID0gRGVidWd8eDY0CisJCVJlbGVhc2V8V2luMzIgPSBSZWxl
YXNlfFdpbjMyCisJCVJlbGVhc2V8eDY0ID0gUmVsZWFzZXx4NjQKKwlFbmRHbG9iYWxTZWN0aW9u
CisJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29s
dXRpb24KKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uRGVidWd8V2lu
MzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMz
QjQyM0IzMUJFOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXtDOEY2QzE3
Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1
Z3x4NjQKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uRGVidWd8eDY0
LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0Iz
MUJFOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtDOEY2QzE3
Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJl
bGVhc2V8V2luMzIKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uUmVs
ZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1C
NUZBLUMzQjQyM0IzMUJFOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXsz
QUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LkRlYnVnfFdpbjMyLkFjdGl2ZUNm
ZyA9IERlYnVnfFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9
LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7M0FGNTRDOEEtMTBCRi00MzMy
LTkxNDctRjY4RUQ5ODYyMDMzfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXsz
QUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LkRlYnVnfHg2NC5CdWlsZC4wID0g
RGVidWd8eDY0CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LlJlbGVh
c2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7M0FGNTRDOEEtMTBCRi00MzMy
LTkxNDctRjY4RUQ5ODYyMDMzfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMy
CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LlJlbGVhc2V8eDY0LkFj
dGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4
NjIwMzN9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7MjQ4NDg1NTEtRUY0
Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xX
aW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5EZWJ1Z3xXaW4z
Mi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0
OUJDM0VDQn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7MjQ4NDg1NTEtRUY0
Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAor
CQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5SZWxlYXNlfFdpbjMyLkFj
dGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0
OUJDM0VDQn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7MjQ4NDg1
NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBS
ZWxlYXNlfHg2NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5SZWxl
YXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjND
LUY0RUUwRUQ0ODFBMn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezRE
OUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uRGVidWd8V2luMzIuQnVpbGQuMCA9
IERlYnVnfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTJ9LkRl
YnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjND
LUY0RUUwRUQ0ODFBMn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezREOUZERkI1
LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBS
ZWxlYXNlfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTJ9LlJl
bGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEz
OS04MjNDLUY0RUUwRUQ0ODFBMn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQK
KwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uUmVsZWFzZXx4NjQuQnVp
bGQuMCA9IFJlbGVhc2V8eDY0CisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oU29s
dXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uCisJCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxT
RQorCUVuZEdsb2JhbFNlY3Rpb24KK0VuZEdsb2JhbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1kLnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QtbWQudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNmE2ZmYxMmY3
YjU3OTAxNWFiYjE0MTU4MGUyZjJkNGZkYTZmOWMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1kLnZjeHByb2oKQEAgLTAsMCArMSwx
NDkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVj
dCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDov
L3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1H
cm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3Vy
YXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8
L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwv
UHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9
IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4K
KyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRp
b24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgor
ICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0
Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8
UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZp
Z3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1Bs
YXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8
UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntDOEY2QzE3
Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9PC9Qcm9qZWN0R3VpZD4KKyAgICA8S2V5d29y
ZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9q
ZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0
aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVy
U2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwv
UGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBM
YWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJh
cnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFy
YWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+Cisg
IDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9u
Ij4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5
cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxh
dGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlv
blR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNl
dD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1Bs
YXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQo
VkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExh
YmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249
ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnBy
b3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4K
KyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJv
amVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3Bz
IiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9J
bXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAg
IDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3Jt
KS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0
LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9y
bSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hl
ZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBE
YXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVs
PSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVy
c2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPE91dERpciBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChT
b2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8
L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4K
KyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0p
LSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE91dERpcikkKFBy
b2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
PgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSkt
JChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKSQoUHJvamVj
dE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0ZDwvVGFyZ2V0TmFtZT4KKyAg
PC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0
aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0
RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAg
PFRhcmdldE5hbWU+Z3Rlc3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFBy
b3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3xXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0ZDwvVGFyZ2V0TmFtZT4KKyAgPC9Q
cm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVz
dDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGlt
aXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNf
TUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWls
ZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50
aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwv
UnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNv
bXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4K
KyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZv
cm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4u
XGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGliIC8+CisgIDwv
SXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8Q2xDb21w
aWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAg
PFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19M
SUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgor
ICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVD
aGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50
aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGls
ZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAg
ICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0
aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5j
bHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWIgLz4KKyAgPC9JdGVt
RGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21w
aWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9
MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRl
ZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRp
bWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxl
ZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAg
ICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRp
b25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNs
dWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgorICA8L0l0ZW1E
ZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8Q2xDb21waWxl
PgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7
TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmlu
aXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVM
aWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhl
YWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8
RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25G
b3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRl
Oy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgorICA8L0l0ZW1EZWZp
bml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwu
LlxzcmNcZ3Rlc3QtYWxsLmNjIj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
Pi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4
NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3Vw
PgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJn
ZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0lt
cG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC1tZC52Y3hwcm9q
LmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QtbWQudmN4
cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZWRlZmYyMzA2ZTFmYWM5M2U3N2M1NTNmMDU2Yjcw
ZmQyYTY4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3Zj
LzIwMTAvZ3Rlc3QtbWQudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTggQEAKK++7vzw/eG1s
IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249
IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVp
bGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmls
ZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJB
MzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7Yztj
eHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRl
cj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRl
bnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRl
bnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0
ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3QtYWxsLmNjIj4KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdy
b3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC5zbG4gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3Quc2xuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhY2Q1YzBjZTZi
OTMyODZiYTUyNzBmODMxMWY3ZDY0OTIxZTAyZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3Quc2xuCkBAIC0wLDAgKzEsNTUgQEAKK01p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDExLjAw
CisjIFZpc3VhbCBDKysgRXhwcmVzcyAyMDEwCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQw
LThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0IiwgImd0ZXN0LnZjeHByb2oiLCAie0M4RjZD
MTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7
OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0X21haW4iLCAi
Z3Rlc3RfbWFpbi52Y3hwcm9qIiwgInszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIw
MzJ9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBD
OTFCQzk0Mn0iKSA9ICJndGVzdF91bml0dGVzdCIsICJndGVzdF91bml0dGVzdC52Y3hwcm9qIiwg
Ins0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9IgorRW5kUHJvamVjdAorUHJv
amVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdF9w
cm9kX3Rlc3QiLCAiZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2oiLCAiezI0ODQ4NTUxLUVGNEYtNDdF
OC05QTlELUVBNEQ0OUJDM0VDQX0iCitFbmRQcm9qZWN0CitHbG9iYWwKKwlHbG9iYWxTZWN0aW9u
KFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbgorCQlEZWJ1Z3xX
aW4zMiA9IERlYnVnfFdpbjMyCisJCURlYnVnfHg2NCA9IERlYnVnfHg2NAorCQlSZWxlYXNlfFdp
bjMyID0gUmVsZWFzZXxXaW4zMgorCQlSZWxlYXNlfHg2NCA9IFJlbGVhc2V8eDY0CisJRW5kR2xv
YmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMp
ID0gcG9zdFNvbHV0aW9uCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9
LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtDOEY2QzE3Mi01NkYyLTRF
NzYtQjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgor
CQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fS5EZWJ1Z3x4NjQuQWN0aXZl
Q2ZnID0gRGVidWd8eDY0CisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9
LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVG
QS1DM0I0MjNCMzFCRTd9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgor
CQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fS5SZWxlYXNlfFdpbjMyLkJ1
aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNC
MzFCRTd9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtDOEY2QzE3Mi01
NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNl
fHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5EZWJ1Z3xXaW4z
Mi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4
RUQ5ODYyMDMyfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezNBRjU0QzhB
LTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVn
fHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5EZWJ1Z3x4NjQu
QnVpbGQuMCA9IERlYnVnfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYy
MDMyfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezNBRjU0QzhB
LTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVs
ZWFzZXxXaW4zMgorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5SZWxl
YXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkx
NDctRjY4RUQ5ODYyMDMyfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezRE
OUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uRGVidWd8V2luMzIuQWN0aXZlQ2Zn
ID0gRGVidWd8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0u
RGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzkt
ODIzQy1GNEVFMEVENDgxQTF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezRE
OUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBE
ZWJ1Z3x4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uUmVsZWFz
ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzkt
ODIzQy1GNEVFMEVENDgxQTF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIK
KwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uUmVsZWFzZXx4NjQuQWN0
aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0
ODFBMX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXsyNDg0ODU1MS1FRjRG
LTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdp
bjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LkRlYnVnfFdpbjMy
LkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5
QkMzRUNBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXsyNDg0ODU1MS1FRjRG
LTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJ
CXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LlJlbGVhc2V8V2luMzIuQWN0
aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5
QkMzRUNBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXsyNDg0ODU1
MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJl
bGVhc2V8eDY0CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LlJlbGVh
c2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxT
ZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbgorCQlIaWRlU29sdXRpb25O
b2RlID0gRkFMU0UKKwlFbmRHbG9iYWxTZWN0aW9uCitFbmRHbG9iYWwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC52Y3hwcm9qIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ2ZjVj
N2FmMjQ1MzhkMzk4YzM2MjZjOGVjY2U5MTQ4Yzk2ZjAxZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC52Y3hwcm9qCkBAIC0wLDAgKzEs
MTQ5IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2pl
Y3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6
Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVt
R3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1
cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVn
PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8
L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRl
PSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+
CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0
aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4K
KyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxh
dGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAg
PFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25m
aWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9Q
bGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAg
PFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57QzhGNkMx
NzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdv
cmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJv
amVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Cisg
IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJh
dGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3Rl
clNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8
L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIg
TGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJy
YXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hh
cmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0Pgor
ICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlv
biI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25U
eXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBs
YXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4K
KyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRp
b25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJT
ZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9Q
bGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIk
KFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBM
YWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9u
PSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+
CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwv
SW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAg
ICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29m
dC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZv
cm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNo
ZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3Bw
LiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBw
RGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJl
bD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZl
cnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQo
U29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilc
PC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0lu
dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxh
dGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE91dERp
cil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQ
cm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwk
KFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXRE
aXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdGQ8
L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAg
IDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25m
aWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKXRlbXBcJChQcm9qZWN0
TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3Q8L1RhcmdldE5hbWU+CisgIDwv
UHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0
ZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4K
KyAgICA8VGFyZ2V0TmFtZT5ndGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6
YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWls
ZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxl
RmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11
bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZl
bDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRD
b250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4K
KyAgICA8TGliIC8+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9u
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0
aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJ
Q19NQVg9MTA7X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hl
Y2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJl
YWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAg
ICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2Fy
bmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNl
PC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxM
aWIgLz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMy
O19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8
L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhy
ZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAg
PC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5n
TGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0Rl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAv
PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAg
ICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJ
QURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8
L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVj
b21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+
CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5m
b3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwu
LlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgorICA8
L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlwuLlxzcmNcZ3Rlc3QtYWxsLmNjIj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
KTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgIDwv
SXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0
LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMi
PgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC52
Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3Qu
dmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZWRlZmYyMzA2ZTFmYWM5M2U3N2M1NTNmMDU2
YjcwZmQyYTY4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9t
c3ZjLzIwMTAvZ3Rlc3QudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTggQEAKK++7vzw/eG1s
IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249
IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVp
bGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmls
ZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJB
MzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7Yztj
eHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRl
cj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRl
bnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRl
bnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0
ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3QtYWxsLmNjIj4KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdy
b3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9tYWluLW1kLnZjeHByb2og
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi1tZC52Y3hwcm9q
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNkNzczODk1YjcwMjNkZTg0NzQwZDYyYmJhNjNlYzkwMGY3NGM5MjcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3Rf
bWFpbi1tZC52Y3hwcm9qCkBAIC0wLDAgKzEsMTU0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29s
c1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxv
cGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0
aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4K
KyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRm
b3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3Vy
YXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9y
bT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlv
biBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8
L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwv
UHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9
IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRp
b24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1
cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMi
PgorICAgIDxQcm9qZWN0R3VpZD57M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMz
fTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3Nv
ZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25m
aWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmln
dXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4K
KyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0
eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxD
b25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8
Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xz
ZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0
eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0
YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlC
eXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRv
b2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmln
dXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3Vy
YXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Cisg
ICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlH
cm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAu
cHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8
L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4K
KyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxh
dGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3Bl
cnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29m
dC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9j
YWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIg
TGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlz
dHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycp
IiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJ
bXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIk
KFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRp
dGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVz
ZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdy
b3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5
R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZp
bGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQo
UGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXRE
aXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0aW9uRGly
KSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgor
ICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgIDwvUHJv
cGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIp
JChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Cisg
ICAgPEludERpcj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VGFyZ2V0
TmFtZT5ndGVzdF9tYWluZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJv
cGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwk
KFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXRE
aXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfbWFpbjwv
VGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAg
PFRhcmdldE5hbWU+Z3Rlc3RfbWFpbmQ8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4K
KyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfbWFpbjwvVGFyZ2V0
TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAg
PENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4K
KyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19E
RUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAg
IDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tz
PgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxp
YnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVh
ZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxE
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZv
cm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7
Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGliIC8+CisgIDwvSXRlbURlZmlu
aXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAg
ICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nl
c3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19MSUI7JShQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEJh
c2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Cisg
ICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFy
eT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+
CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0
PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwu
LjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWIgLz4KKyAgPC9JdGVtRGVmaW5pdGlv
bkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAg
ICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVH
O19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25z
PgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5
PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4K
KyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4u
OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9u
R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAg
PFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19M
SUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgor
ICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5Pgor
ICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAg
ICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZv
cm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+Cisg
ICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUo
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3Jv
dXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rl
c3RfbWFpbi5jYyI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Li47Li5c
aW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4uLjsuLlxp
bmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLjsu
LlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Li47
Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0
ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJndGVzdC1tZC52Y3hwcm9q
Ij4KKyAgICAgIDxQcm9qZWN0PntjOGY2YzE3Mi01NmYyLTRlNzYtYjVmYS1jM2I0MjNiMzFiZTh9
PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJ
bXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+
CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3Jv
dXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X21haW4tbWQudmN4cHJvai5m
aWx0ZXJzIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X21haW4tbWQu
dmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyNmM3NzNjY2IxNzc2YTU4ZDZmNGZkNjVhMTZj
YjUwZjQyMmQxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9t
c3ZjLzIwMTAvZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxOCBAQAor
77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xz
VmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9w
ZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNv
dXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2
LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25z
PmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAg
IDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxV
bmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9V
bmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7
eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1H
cm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xndGVzdF9tYWluLmNjIj4K
KyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+Cisg
IDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9tYWluLnZj
eHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi52Y3hw
cm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhmYjI1ODk3YzhiMWMyZGJiM2NmNmMxM2U5YjQxOTNmYzlhZTA1MGIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rl
c3RfbWFpbi52Y3hwcm9qCkBAIC0wLDAgKzEsMTYyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29s
c1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxv
cGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0
aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4K
KyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRm
b3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3Vy
YXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9y
bT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlv
biBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8
L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwv
UHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9
IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRp
b24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1
cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMi
PgorICAgIDxQcm9qZWN0R3VpZD57M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMy
fTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3Nv
ZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25m
aWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmln
dXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4K
KyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0
eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxD
b25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8
Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xz
ZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0
eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0
YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlC
eXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRv
b2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmln
dXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3Vy
YXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Cisg
ICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlH
cm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAu
cHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8
L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4K
KyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxh
dGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3Bl
cnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29m
dC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9j
YWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIg
TGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlz
dHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycp
IiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJ
bXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIk
KFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRp
dGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVz
ZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdy
b3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5
R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZp
bGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQo
UGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXRE
aXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRp
b25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXRE
aXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGly
PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE91dERpcj4kKFNv
bHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwv
T3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERp
cj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0
eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQo
U29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAg
IDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VGFy
Z2V0TmFtZT5ndGVzdF9tYWluPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQ
cm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluZDwvVGFyZ2V0TmFtZT4K
KyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFt
ZT5ndGVzdF9tYWluPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVm
aW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNh
YmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMy
O19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8
L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01p
bmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tz
PC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRl
ZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAg
IDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2Fybmlu
Z0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9E
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWI+
CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKWQubGliPC9PdXRwdXRG
aWxlPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5p
dGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8
L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFS
SUFESUNfTUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFz
dENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRp
VGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+
CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8
L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRh
YmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSlkLmxpYjwv
T3V0cHV0RmlsZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRl
bURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRp
bWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2
ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Q
cm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENv
bXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5h
bWUpLmxpYjwvT3V0cHV0RmlsZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3Vw
PgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztfTElCOyUo
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAg
IDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQ
cmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2Fy
bmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25G
b3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAg
IDwvQ2xDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFBy
b2plY3ROYW1lKS5saWI8L091dHB1dEZpbGU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRp
b25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNy
Y1xndGVzdF9tYWluLmNjIj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4u
LjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4u
Oy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
Pi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQn
Ij4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgor
ICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Imd0ZXN0LnZjeHBy
b2oiPgorICAgICAgPFByb2plY3Q+e2M4ZjZjMTcyLTU2ZjItNGU3Ni1iNWZhLWMzYjQyM2IzMWJl
N308L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAg
PEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIg
Lz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRH
cm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi52Y3hwcm9qLmZp
bHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi52Y3hw
cm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI2Yzc3M2NjYjE3NzZhNThkNmY0ZmQ2NWExNmNiNTBm
NDIyZDE1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMv
MjAxMC9ndGVzdF9tYWluLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDE4IEBACivvu788P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9u
PSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1
aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZp
bGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0y
QTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7
Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0
ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlk
ZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlk
ZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4
dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXGd0ZXN0X21haW4uY2MiPgorICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVt
R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52
Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVz
dC1tZC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzMGU1ZGNlNDEwNjIzYzE1YjY4ZmVhNzE4ZWQ5NGM0
NTdmMDcwZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3Zj
LzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjeHByb2oKQEAgLTAsMCArMSwxOTkgQEAKK++7vzw/
eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFy
Z2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWlj
cm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0i
UHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVk
ZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRp
b24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZp
Z3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+
CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0
Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFBy
b2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZp
Z3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwv
UGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZp
Z3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVs
ZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAg
IDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91
cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnsyNDg0ODU1MS1FRjRGLTQ3RTgt
OUE5RC1FQTRENDlCQzNFQ0J9PC9Qcm9qZWN0R3VpZD4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8
L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFy
Z2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBs
aWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8
L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNl
dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3Vy
YXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlv
blR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8
UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3Vw
PgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1
cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3Rl
clNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8
L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExh
YmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248
L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0
ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwv
UHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jv
c29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGlu
Z3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5
U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxB
cHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFi
ZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMo
JyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBM
YWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBv
cnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0
aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3Jv
dXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQ
cm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJv
cHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxh
dGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8
L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAg
PFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9f
UHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlv
bk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERp
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPExpbmtJbmNyZW1lbnRh
bCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9MaW5r
SW5jcmVtZW50YWw+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1l
KVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+
JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmZhbHNlPC9M
aW5rSW5jcmVtZW50YWw+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAg
ICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29u
ZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERpcikkKFByb2plY3ROYW1l
KVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9wcm9kX3Rlc3Q8L1RhcmdldE5hbWU+
CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxPdXREaXI+JChT
b2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8
L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgor
ICAgIDxUYXJnZXROYW1lPmd0ZXN0X3Byb2RfdGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0
eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfcHJvZF90
ZXN0PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
PgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X3Byb2RfdGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAg
ICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfQ09OU09MRTsl
KFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAg
ICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50
aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxS
dW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAg
ICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2Fy
bmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25G
b3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAg
IDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlv
bj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNl
RmlsZT4kKE91dERpcilndGVzdF9wcm9kX3Rlc3QucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgor
ICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGlu
ZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5p
dGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAg
ICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8UHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtfREVCVUc7X0NPTlNPTEU7JShQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAg
PEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+
CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGli
cmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPgor
ICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0lu
Zm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4K
KyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVn
SW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dy
YW1EYXRhYmFzZUZpbGU+JChPdXREaXIpZ3Rlc3RfcHJvZF90ZXN0LnBkYjwvUHJvZ3JhbURhdGFi
YXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGlu
az4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4K
KyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19W
QVJJQURJQ19NQVg9MTA7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMp
PC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRo
cmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8
L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdM
ZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVi
dWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
Pi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4K
KyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9y
bWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8T3B0
aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxFbmFibGVD
T01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8VGFyZ2V0TWFj
aGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVm
aW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPENsQ29tcGlsZT4K
KyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05E
RUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGlt
ZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRl
cj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVi
dWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3Jt
YXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4u
XC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVE
ZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxT
dWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50
cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVl
PC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdy
b3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxn
dGVzdF9wcm9kX3Rlc3QuY2MiPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
Pi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICAgIDwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICAgIDwvUHJl
Y29tcGlsZWRIZWFkZXI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4u
LjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+
Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgICAg
PC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgICA8
L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cLi5cdGVzdFxwcm9kdWN0aW9uLmNjIj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
KTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVy
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
KTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2
NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9J
dGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx0
ZXN0XHByb2R1Y3Rpb24uaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAg
PFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qIj4KKyAgICAg
IDxQcm9qZWN0PnszYWY1NGM4YS0xMGJmLTQzMzItOTE0Ny1mNjhlZDk4NjIwMzN9PC9Qcm9qZWN0
PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJv
amVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBv
cnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1By
b2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qLmZpbHRl
cnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LW1k
LnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzM2NzMxMGFlZTYyNmY0ZWM5YzFkZmZkYTcz
M2E1MGYyYTVjNWVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
bXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwy
NiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0
IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9k
ZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1
ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdB
NS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRl
bnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25z
PgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAg
ICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVC
RkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lu
bDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAg
PEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfcHJv
ZF90ZXN0LmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24u
Y2MiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGls
ZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24uaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwv
RmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2oKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQy
ZTEzNTExZGYyOGE1MzIyMjQyMDU3ZTc1NDFmOTY1NjcwZGRhMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9wcm9kX3Rlc3QudmN4cHJv
agpAQCAtMCwwICsxLDE5MSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRm
LTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAi
IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIw
MDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmln
dXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxh
dGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3Vy
YXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9D
b25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9q
ZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVs
ZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9u
PgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1
cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+
CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBs
YXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9J
dGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVj
dEd1aWQ+ezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQX08L1Byb2plY3RHdWlk
PgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0
LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Cisg
ICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAg
ICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRv
b2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9w
ZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBl
PkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRp
Qnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1U
b29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29u
ZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1
cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pgor
ICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5
R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25m
aWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJh
Y3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYx
MDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdy
b3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBv
cnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0i
JChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25k
aXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51
c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRH
cm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBv
cnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2Vy
LnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4k
KFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4K
KyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMi
PgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBs
YXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWlj
cm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQ
bGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3Bl
cnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29m
dC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9j
YWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3Vw
IExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RG
aWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPE91dERp
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0
aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUp
XDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4K
KyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxPdXREaXIg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMy
JyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0
aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKXRlbXBcJChQcm9qZWN0TmFt
ZSlcPC9JbnREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVu
dGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgIDwv
UHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29sdXRpb25E
aXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+
CisgICAgPEludERpcj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICA8
L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29sdXRp
b25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXRE
aXI+CisgICAgPEludERpcj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgor
ICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21w
aWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAg
PFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19D
T05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxC
YXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgor
ICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+
CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAg
IDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1h
dGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAg
ICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9y
bWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0
YWJhc2VGaWxlPiQoT3V0RGlyKWd0ZXN0X3Byb2RfdGVzdC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZp
bGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRN
YWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1E
ZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPENsQ29tcGlsZT4K
KyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfQ09OU09M
RTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Cisg
ICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNo
ZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVM
aWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+
CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0
PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwu
LjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVi
dWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJv
Z3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF9wcm9kX3Rlc3QucGRiPC9Qcm9ncmFtRGF0
YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9M
aW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
PgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7
X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRp
VGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xl
dmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgor
ICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3Jt
YXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxPcHRp
bWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPEVuYWJsZUNP
TURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICAgIDxUYXJnZXRNYWNo
aW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZp
bml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8Q2xDb21waWxlPgor
ICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRF
QlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGli
cmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPgor
ICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0lu
Zm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4K
KyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVn
SW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5
c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8
L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0Vu
YWJsZUNPTURBVEZvbGRpbmc+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+
CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XGd0ZXN0
X3Byb2RfdGVzdC5jYyI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Li47
Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4uLjsu
LlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgICAgPC9QcmVj
b21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgICAgPC9QcmVjb21w
aWxlZEhlYWRlcj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi4uOy4u
XGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLjsu
LlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgICA8L1By
ZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICAgIDwvUHJl
Y29tcGlsZWRIZWFkZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24uY2MiPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4K
KyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAg
ICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
PgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+
CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1H
cm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHRlc3Rc
cHJvZHVjdGlvbi5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJv
amVjdFJlZmVyZW5jZSBJbmNsdWRlPSJndGVzdF9tYWluLnZjeHByb2oiPgorICAgICAgPFByb2pl
Y3Q+ezNhZjU0YzhhLTEwYmYtNDMzMi05MTQ3LWY2OGVkOTg2MjAzMn08L1Byb2plY3Q+CisgICAg
PC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIk
KFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3Vw
IExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2ouZmlsdGVycyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9wcm9kX3Rlc3QudmN4cHJvai5maWx0
ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFjMzY3MzEwYWVlNjI2ZjRlYzljMWRmZmRhNzMzYTUwZjJhNWM1ZWMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rl
c3RfcHJvZF90ZXN0LnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDI2IEBACivvu788P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0
LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxk
LzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVz
Ij4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMy
RDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y3h4
O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+
CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50
aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50
aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVu
c2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxndGVzdF9wcm9kX3Rlc3QuY2MiPgorICAg
ICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RccHJvZHVjdGlvbi5jYyI+CisgICAgICA8Rmls
dGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91
cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHRlc3RccHJv
ZHVjdGlvbi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9D
bEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9n
dGVzdF91bml0dGVzdC1tZC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8y
MDEwL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTNiMGRjNGUxYTRlMDNh
ZThkNjNlZmYzNmM2N2JmZTgyMzY1ZjE4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC1tZC52Y3hwcm9qCkBAIC0wLDAg
KzEsMTg4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFBy
b2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0
dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJ
dGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25m
aWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRl
YnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAg
ICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNs
dWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRp
b24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1
cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMy
Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8
UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Cisg
ICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxD
b25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0
PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4K
KyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57NEQ5
RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfTwvUHJvamVjdEd1aWQ+CisgICAgPEtl
eXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQg
UHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+
CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmln
dXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0
ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAw
PC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCci
IExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRp
b248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFy
YWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+Cisg
IDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9u
Ij4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBl
PgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRm
b3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25U
eXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11
bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZv
cm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1Rh
cmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9
IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
IExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhp
c3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMn
KSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8
SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0
PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENv
bmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9y
dEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPElt
cG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVz
ZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3Bw
LiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAv
PgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMi
PgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBs
YXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWlj
cm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQ
bGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVz
ZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9u
PjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8T3V0RGlyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKFNvbHV0
aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0
RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAg
IDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3Jl
bWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRp
cikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4K
KyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxM
aW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3Jl
bWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQ
cm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwk
KFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXRE
aXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfdW5pdHRl
c3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgor
ICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChD
b25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKSQoUHJvamVjdE5h
bWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X3VuaXR0ZXN0PC9UYXJnZXROYW1l
PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFt
ZT5ndGVzdF91bml0dGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJv
cGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF91bml0dGVzdDwvVGFyZ2V0TmFt
ZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENs
Q29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAg
ICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJV
RztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAg
ICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNr
cz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVM
aWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+
CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0
PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwu
LjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVi
dWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJv
Z3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF91bml0dGVzdC5wZGI8L1Byb2dyYW1EYXRh
YmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxU
YXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8
L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPENsQ29t
cGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAg
IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztf
Q09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVu
dGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8
L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGls
ZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAg
ICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0
aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5j
bHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdl
bmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Cisg
ICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF91bml0dGVzdC5wZGI8L1By
b2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4K
KyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9u
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRl
ZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJh
cnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwz
PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0
YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+Cisg
ICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRl
RGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgor
ICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAg
ICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAg
PFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+Cisg
IDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxD
bENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElD
X01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRE
TEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29t
cGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgor
ICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9y
bWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5c
aW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAg
PEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+
CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxPcHRpbWl6ZVJl
ZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPEVuYWJsZUNPTURBVEZv
bGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURl
ZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XC4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2MiPgorICAgICAgPE9wdGltaXphdGlvbiBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+TWluU3Bh
Y2U8L09wdGltaXphdGlvbj4KKyAgICAgIDxPcHRpbWl6YXRpb24gQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5NaW5TcGFjZTwvT3B0aW1pemF0
aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uOy4uXGluY2x1ZGU7
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Li47Li5caW5jbHVkZTsl
KEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+RGVmYXVsdDwvQmFzaWNSdW50aW1lQ2hl
Y2tzPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkRlZmF1bHQ8L0Jhc2ljUnVudGltZUNoZWNr
cz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVy
PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgor
ICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZv
cm1hdGlvbkZvcm1hdD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0IENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+UHJvZ3JhbURhdGFi
YXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
KTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2
NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9J
dGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0i
Z3Rlc3RfbWFpbi1tZC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnszYWY1NGM4YS0xMGJmLTQz
MzItOTE0Ny1mNjhlZDk4NjIwMzN9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4K
KyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNy
b3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFy
Z2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0
ZXN0X3VuaXR0ZXN0LW1kLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDQ3ZGFlNTEzZTg2MDE1M2E1Y2VjMmY0NWI0OGNkYmM3NWY5YjZjZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC1tZC52
Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxOCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0
cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0
ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5p
cXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5p
cXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDto
cGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIg
SW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4
MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAg
PEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwv
RmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2MiPgorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1By
b2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0LnZjeHByb2ogYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfdW5pdHRlc3QudmN4cHJvagpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lYzZhYmRlN2RhMTdlMjllZDI0NzZmNzBjNjk0MTVhZTk2OGYyMWYzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0
LnZjeHByb2oKQEAgLTAsMCArMSwxODAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rp
bmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lv
bj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNi
dWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4K
KyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAg
PENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2lu
MzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RD
b25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5E
ZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAg
IDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmln
dXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0
Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFz
ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAg
ICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+
CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAg
PFByb2plY3RHdWlkPns0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9PC9Qcm9q
ZWN0R3VpZD4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlH
cm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAu
RGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRp
b24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5
cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxh
dGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0
aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNl
dD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1Bs
YXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFi
ZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwv
Q29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3Rl
clNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Q
cm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAg
ICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAg
IDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9v
bHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9y
dCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJ
bXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgor
ICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwv
SW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAg
ICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29m
dC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZv
cm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5
U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxB
cHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVs
PSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCck
KFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFi
ZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVy
dHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Q
cm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAg
IDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29u
ZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpdGVtcFwkKFByb2pl
Y3ROYW1lKVw8L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9MaW5rSW5jcmVt
ZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8
T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29u
ZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE91dERpcil0ZW1wXCQoUHJv
amVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJ
bmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFs
PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE91dERpcj4kKFNv
bHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwv
T3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERp
cj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE91dERpcj4k
KFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24p
XDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0lu
dERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAg
PENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4K
KyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19E
RUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+Cisg
ICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNo
ZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVM
aWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+
CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0
PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwu
LjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVi
dWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJv
Z3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF91bml0dGVzdC5wZGI8L1Byb2dyYW1EYXRh
YmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxU
YXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8
L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPENsQ29t
cGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAg
IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztf
Q09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVu
dGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1
bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRI
ZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAg
PERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVk
ZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVy
YXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAg
ICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF91bml0dGVzdC5wZGI8L1Byb2dy
YW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAg
ICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5X
SU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmlu
aXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+
TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+
VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJu
aW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8
L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExp
bms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJ
bmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAg
PE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8RW5h
YmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPFRhcmdl
dE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRl
bURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxDbENvbXBp
bGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0x
MDtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRp
bWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFk
ZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9y
bWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsu
LlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRl
RGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8
U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+
dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1
ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25H
cm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3Rc
Z3Rlc3RfdW5pdHRlc3QuY2MiPgorICAgICAgPE9wdGltaXphdGlvbiBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+TWluU3BhY2U8L09wdGlt
aXphdGlvbj4KKyAgICAgIDxPcHRpbWl6YXRpb24gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5NaW5TcGFjZTwvT3B0aW1pemF0aW9uPgorICAg
ICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAg
ICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAg
ICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+RGVmYXVsdDwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAg
ICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPkRlZmF1bHQ8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAg
IDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8eDY0JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPERl
YnVnSW5mb3JtYXRpb25Gb3JtYXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3xXaW4zMiciPlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZv
cm1hdD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0IENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMy
JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2
NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAg
ICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAg
ICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+
CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iZ3Rlc3RfbWFp
bi52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnszYWY1NGM4YS0xMGJmLTQzMzItOTE0Ny1mNjhl
ZDk4NjIwMzJ9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3Jv
dXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRh
cmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwv
SW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0
LnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVz
dF91bml0dGVzdC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ3ZGFlNTEzZTg2MDE1M2E1
Y2VjMmY0NWI0OGNkYmM3NWY5YjZjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAs
MCArMSwxOCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQ
cm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0
LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVy
IEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3
RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAg
IDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRl
bnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVz
Ij4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVG
QkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4
O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91
cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rl
c3RfdW5pdHRlc3QuY2MiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAg
ICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9n
dGVzdC1tZC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52
Y3hwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDA3OGU0YWFiNjkxNzEyYTEw
M2MyZWI2M2VlN2RhYzFlZjQ5OWJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4cHJv
agorKysgL2Rldi9udWxsCkBAIC0xLDM2MCArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29s
c1ZlcnNpb249IjE0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVs
b3Blci9tc2J1aWxkLzIwMDMiPgotICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJh
dGlvbnMiPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z1N1ZmZpeHxX
aW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Z1N1ZmZpeDwvQ29uZmlndXJhdGlvbj4K
LSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJh
dGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWdTdWZmaXh8eDY0
Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnU3VmZml4PC9Db25maWd1cmF0aW9uPgotICAg
ICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4K
LSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWdfV2luQ2Fpcm98V2luMzIi
PgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWdfV2luQ2Fpcm88L0NvbmZpZ3VyYXRpb24+Ci0g
ICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRp
b24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnX1dpbkNhaXJvfHg2
NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Z19XaW5DYWlybzwvQ29uZmlndXJhdGlvbj4K
LSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRp
b24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KLSAg
ICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3Jt
PldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9q
ZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgotICAgICAgPENvbmZpZ3VyYXRp
b24+RGVidWc8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4K
LSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJ
bmNsdWRlPSJQcm9kdWN0aW9ufFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPlByb2R1Y3Rp
b248L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAg
IDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IlByb2R1Y3Rpb258eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPlByb2R1Y3Rpb248L0Nv
bmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2pl
Y3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxl
YXNlX1dpbkNhaXJvfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2VfV2luQ2Fp
cm88L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAg
IDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IlJlbGVhc2VfV2luQ2Fpcm98eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2Vf
V2luQ2Fpcm88L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4K
LSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJ
bmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0Nv
bmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJv
amVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJl
bGVhc2V8eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+
Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0
aW9uPgotICA8L0l0ZW1Hcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgot
ICAgIDxQcm9qZWN0R3VpZD57QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU4fTwv
UHJvamVjdEd1aWQ+Ci0gICAgPFJvb3ROYW1lc3BhY2U+Z3Rlc3QtbWQ8L1Jvb3ROYW1lc3BhY2U+
Ci0gICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgotICAgIDxXaW5kb3dzVGFyZ2V0UGxh
dGZvcm1WZXJzaW9uPjguMTwvV2luZG93c1RhcmdldFBsYXRmb3JtVmVyc2lvbj4KLSAgPC9Qcm9w
ZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0
LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmln
dXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3Vy
YXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0g
ICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlH
cm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29u
ZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENo
YXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0
PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2Vf
V2luQ2Fpcm98V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRp
b25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJT
ZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9Q
bGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJv
fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3Rh
dGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5
dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9v
bHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIiBMYWJlbD0i
Q29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0Nv
bmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJT
ZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJv
cGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4K
LSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+
Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZv
cm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8
UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9u
VHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0
Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxh
dGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9
IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9D
b25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVy
U2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8L1By
b3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIiBMYWJlbD0iQ29uZmlndXJh
dGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRp
b25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAg
PFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91
cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAg
PENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAg
IDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9v
bHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3Bl
cnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z1N1ZmZpeHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlv
blR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNl
dD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1Bs
YXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCci
IExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGli
cmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0No
YXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4K
LSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClc
TWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25T
ZXR0aW5ncyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJv
cGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9z
b2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJM
b2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xp
YnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+
Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAg
PEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9u
LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyIg
TGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlz
dHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycp
IiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIk
KFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0lt
cG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0
cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQo
UGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0
YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0
b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9y
dEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVj
dGlvbnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0
PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENv
bmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBv
cnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9w
cyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIiBMYWJlbD0iUHJvcGVy
dHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0
LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9v
dERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2Nh
bEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJh
cmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0g
IDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIg
Q29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPElt
cG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnBy
b3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlT
aGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNw
cC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFw
cERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmll
cylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJ
bXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnX1dpbkNhaXJvfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0
IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0g
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29t
bW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIiBM
YWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0
cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJyki
IExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQo
V2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gIDwvSW1w
b3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4K
LSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxh
dGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xz
XHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRf
TGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGRlYnVnc3VmZml4LnByb3BzIiAvPgotICA8L0ltcG9y
dEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAg
IDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3Jt
KS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0
LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9y
bSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNw
cm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJy
YXJpZXMpXHRvb2xzXHZzcHJvcHNcZGVidWdzdWZmaXgucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3Jv
dXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgotICA8UHJvcGVydHlH
cm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0Rmls
ZVZlcnNpb24+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERp
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNh
aXJvfFdpbjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj4kKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERpciBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdp
bjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGli
JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0g
ICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXRE
aXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dp
bkNhaXJvfHg2NCciPiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQn
Ij4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9P
dXREaXI+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFt
ZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8eDY0JyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAg
ICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1l
PgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXRO
YW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5h
bWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5hbWU+
Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAg
PFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3x4NjQnIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXRO
YW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2lu
Q2Fpcm98V2luMzInIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJn
ZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdf
V2luQ2Fpcm98eDY0JyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFy
Z2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
U3VmZml4fFdpbjMyJyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFy
Z2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
U3VmZml4fHg2NCciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVy
dHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAg
ICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1
ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVh
ZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAg
IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMp
PC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAg
ICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJs
ZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8
TGliPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpZ3Rlc3QkKERlYnVnU3VmZml4KS5saWI8
L091dHB1dEZpbGU+Ci0gICAgPC9MaWI+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0
ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5E
aXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5j
bHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVk
SGVhZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNp
Y1J1bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYj4KLSAgICAgIDxPdXRw
dXRGaWxlPiQoT3V0RGlyKWd0ZXN0JChEZWJ1Z1N1ZmZpeCkubGliPC9PdXRwdXRGaWxlPgotICAg
IDwvTGliPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fp
cm98V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxl
ZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQ
cm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVp
bGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxw
cml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJh
cnk+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVy
PgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRp
bWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYj4KLSAgICAgIDxPdXRwdXRGaWxl
PiQoT3V0RGlyKWd0ZXN0LmxpYjwvT3V0cHV0RmlsZT4KLSAgICA8L0xpYj4KLSAgPC9JdGVtRGVm
aW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPgotICAgIDxDbENv
bXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAg
ICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0
RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRl
OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxSdW50aW1lTGli
cmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxQcmVjb21waWxl
ZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8QmFzaWNSdW50aW1l
Q2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICA8L0NsQ29t
cGlsZT4KLSAgICA8TGliPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpZ3Rlc3QubGliPC9P
dXRwdXRGaWxlPgotICAgIDwvTGliPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWdTdWZmaXh8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXph
dGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNv
bXBpbGVkSGVhZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tz
PC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYj4KLSAgICAg
IDxPdXRwdXRGaWxlPiQoT3V0RGlyKWd0ZXN0JChEZWJ1Z1N1ZmZpeCkubGliPC9PdXRwdXRGaWxl
PgotICAgIDwvTGliPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlv
bkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdT
dWZmaXh8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJs
ZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQo
UHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVc
cHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRp
b25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRp
b25zPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRl
cj4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50
aW1lQ2hlY2tzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWI+Ci0gICAgICA8T3V0cHV0Rmls
ZT4kKE91dERpcilndGVzdCQoRGVidWdTdWZmaXgpLmxpYjwvT3V0cHV0RmlsZT4KLSAgICA8L0xp
Yj4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4K
LSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQ
cm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVp
bGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxw
cml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0g
ICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25z
Pl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25z
PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3Vw
PgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5c
SW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgot
ICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAg
ICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGli
IC8+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJv
fFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVkZTskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliIC8+Ci0gIDwvSXRlbURlZmlu
aXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPgotICAgIDxDbENv
bXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIp
Li47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1
ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5j
bHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2
YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJl
Y29tcGlsZWRIZWFkZXI+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9D
bENvbXBpbGU+Ci0gICAgPExpYiAvPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1
ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVh
ZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAg
IDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwv
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYiAvPgot
ICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj4KLSAg
ICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9q
ZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2
YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAg
ICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9M
SUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgot
ICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgot
ICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LWRlYXRo
LXRlc3QuY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QtZmlsZXBh
dGguY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QtcG9ydC5jYyIg
Lz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC10ZXN0LXBhcnQuY2MiIC8+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QtdHlwZWQtdGVzdC5jYyIgLz4K
LSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC5jYyIgLz4KLSAgPC9JdGVtR3Jv
dXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0
ZXN0XGludGVybmFsXGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCIgLz4KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtZGVhdGgtdGVzdC5oIiAvPgotICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1maWxl
cGF0aC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LWludGVybmFs
LWlubC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRl
cm5hbFxndGVzdC1pbnRlcm5hbC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5j
bHVkZVxndGVzdFxndGVzdC1tZXNzYWdlLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LXBvcnQuaCIgLz4KLSAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3Qtc3BpLmgiIC8+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LXN0cmluZy5oIiAvPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC5oIiAvPgotICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdF9wcmVkX2ltcGwuaCIg
Lz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3RfcHJvZC5o
IiAvPgotICA8L0l0ZW1Hcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgp
XE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNp
b25UYXJnZXRzIj4KLSAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4cHJvai5maWx0ZXJzIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzN2QxYzliNGRjYTZhMTRlYzcwNmJjNGE4YzEzMWY2
YjVjODM4MDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMKKysr
IC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJ1dGYtOCI/PgotPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8v
c2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SXRlbUdy
b3VwPgotICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KLSAgICAgIDxVbmlxdWVJ
ZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJ
ZGVudGlmaWVyPgotICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajti
YXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+Ci0gICAgPC9GaWx0ZXI+Ci0gICAgPEZpbHRlciBJbmNs
dWRlPSJIZWFkZXIgRmlsZXMiPgotICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5
QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+Ci0gICAgICA8RXh0
ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+Ci0gICAgPC9GaWx0
ZXI+Ci0gIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cc3JjXGd0ZXN0LWRlYXRoLXRlc3QuY2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmls
ZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHNyY1xndGVzdC1maWxlcGF0aC5jYyI+Ci0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmls
dGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0
ZXN0LXBvcnQuY2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8
L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC10ZXN0LXBh
cnQuY2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29t
cGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC10eXBlZC10ZXN0LmNj
Ij4KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QuY2MiPgotICAgICAgPEZpbHRl
cj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtR3JvdXA+
Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0
XGludGVybmFsXGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCI+Ci0gICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC1kZWF0aC10ZXN0LmgiPgotICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rlc3QtZmlsZXBhdGguaCI+Ci0g
ICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LWludGVybmFsLWlubC5oIj4KLSAgICAg
IDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LWludGVybmFs
LmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVk
ZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtbWVzc2Fn
ZS5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1
ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0
ZXN0LXBvcnQuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwv
Q2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVz
dC1zcGkuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJ
bmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5h
bFxndGVzdC1zdHJpbmcuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgot
ICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVz
dFxndGVzdC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9D
bEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0
X3ByZWRfaW1wbC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAg
PC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0
ZXN0X3Byb2QuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwv
Q2xJbmNsdWRlPgotICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9ydW5fdGVzdHMu
cHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9ydW5fdGVzdHMucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IGUxMDg0MDU2ZTIzYmRkNWNmY2Y0NGYwNjc2YzFkNjI4YWU2M2Q3NjEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvcnVuX3Rlc3RzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBA
QAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
IyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiUnVucyB0aGUg
c3BlY2lmaWVkIHRlc3RzIGZvciBHb29nbGUgVGVzdC4KLQotVGhpcyBzY3JpcHQgcmVxdWlyZXMg
UHl0aG9uIDIuMyBvciBoaWdoZXIuICBUbyBsZWFybiB0aGUgdXNhZ2UsIHJ1biBpdAotd2l0aCAt
aC4KLSIiIgotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotU0NSSVBUX0RJUiA9IG9zLnBhdGgu
ZGlybmFtZShfX2ZpbGVfXykgb3IgJy4nCi0KLXN5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmpvaW4o
U0NSSVBUX0RJUiwgJ3Rlc3QnKSkKLWltcG9ydCBydW5fdGVzdHNfdXRpbAotCi0KLWRlZiBfTWFp
bigpOgotICAiIiJSdW5zIGFsbCB0ZXN0cyBmb3IgR29vZ2xlIFRlc3QuIiIiCi0KLSAgb3B0aW9u
cywgYXJncyA9IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygnZ3Rlc3QnKQotICB0ZXN0X3J1bm5l
ciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5uZXIoc2NyaXB0X2Rpcj1TQ1JJUFRfRElSKQotICB0
ZXN0cyA9IHRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oYXJncywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuY29uZmlndXJhdGlvbnMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRpb25zKQotICBp
ZiBub3QgdGVzdHM6Ci0gICAgc3lzLmV4aXQoMSkgICMgSW5jb3JyZWN0IHBhcmFtZXRlcnMgZ2l2
ZW4sIGFib3J0IGV4ZWN1dGlvbi4KLQotICBzeXMuZXhpdCh0ZXN0X3J1bm5lci5SdW5UZXN0cyh0
ZXN0c1swXSwgdGVzdHNbMV0pKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBfTWFp
bigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3ByaW1lX3Rh
Ymxlcy5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9wcmltZV90YWJsZXMuaApp
bmRleCA5MmNlMTZhMDE0NGQ1MDJmZDBlNDViNzNmMzdkMzJiYmVkZjFjM2YzLi41MjNjNTBiOWFm
YjFhMDkxOTE2ODA5NGQ3MWZkZjM3NmI2NGFmNmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zYW1wbGVzL3ByaW1lX3RhYmxlcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NhbXBsZXMvcHJpbWVfdGFibGVzLmgKQEAgLTI2LDkgKzI2LDggQEAKIC8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdh
bkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20g
KFZsYWQgTG9zZXYpCisKKwogCiAvLyBUaGlzIHByb3ZpZGVzIGludGVyZmFjZSBQcmltZVRhYmxl
IHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgbnVtYmVyIGlzIGEKIC8vIHByaW1lIGFuZCBkZXRl
cm1pbmVzIGEgbmV4dCBwcmltZSBudW1iZXIuIFRoaXMgaW50ZXJmYWNlIGlzIHVzZWQKQEAgLTEw
MywxMSArMTAyLDE1IEBAIGNsYXNzIFByZUNhbGN1bGF0ZWRQcmltZVRhYmxlIDogcHVibGljIFBy
aW1lVGFibGUgewogICAgIDo6c3RkOjpmaWxsKGlzX3ByaW1lXywgaXNfcHJpbWVfICsgaXNfcHJp
bWVfc2l6ZV8sIHRydWUpOwogICAgIGlzX3ByaW1lX1swXSA9IGlzX3ByaW1lX1sxXSA9IGZhbHNl
OwogCi0gICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gbWF4OyBpKyspIHsKKyAgICAvLyBDaGVja3Mg
ZXZlcnkgY2FuZGlkYXRlIGZvciBwcmltZSBudW1iZXIgKHdlIGtub3cgdGhhdCAyIGlzIHRoZSBv
bmx5IGV2ZW4KKyAgICAvLyBwcmltZSkuCisgICAgZm9yIChpbnQgaSA9IDI7IGkqaSA8PSBtYXg7
IGkgKz0gaSUyKzEpIHsKICAgICAgIGlmICghaXNfcHJpbWVfW2ldKSBjb250aW51ZTsKIAogICAg
ICAgLy8gTWFya3MgYWxsIG11bHRpcGxlcyBvZiBpIChleGNlcHQgaSBpdHNlbGYpIGFzIG5vbi1w
cmltZS4KLSAgICAgIGZvciAoaW50IGogPSAyKmk7IGogPD0gbWF4OyBqICs9IGkpIHsKKyAgICAg
IC8vIFdlIGFyZSBzdGFydGluZyBoZXJlIGZyb20gaS10aCBtdWx0aXBsaWVyLCBiZWNhdXNlIGFs
bCBzbWFsbGVyCisgICAgICAvLyBjb21wbGV4IG51bWJlcnMgd2VyZSBhbHJlYWR5IG1hcmtlZC4K
KyAgICAgIGZvciAoaW50IGogPSBpKmk7IGogPD0gbWF4OyBqICs9IGkpIHsKICAgICAgICAgaXNf
cHJpbWVfW2pdID0gZmFsc2U7CiAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2FtcGxlcy9zYW1wbGUxLmNjCmluZGV4IGYxNzFlMjYwOWQyNTEzMjI4NDYyMWZiNjJjZjNi
YTg2ZTFlNjk5MjUuLjEzY2VjMWQwZmJmYWJkYWFmMWM2YzQxYjFhODZiYzFkMDkwODk4M2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMS5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEuY2MKQEAgLTI4LDggKzI4
LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGlu
ZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2Fu
QGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAogI2luY2x1ZGUgInNhbXBsZTEuaCIKIApAQCAt
NTUsNyArNTMsNyBAQCBib29sIElzUHJpbWUoaW50IG4pIHsKIAogICAvLyBUcnkgdG8gZGl2aWRl
IG4gYnkgZXZlcnkgb2RkIG51bWJlciBpLCBzdGFydGluZyBmcm9tIDMKICAgZm9yIChpbnQgaSA9
IDM7IDsgaSArPSAyKSB7Ci0gICAgLy8gV2Ugb25seSBoYXZlIHRvIHRyeSBpIHVwIHRvIHRoZSBz
cXVyZSByb290IG9mIG4KKyAgICAvLyBXZSBvbmx5IGhhdmUgdG8gdHJ5IGkgdXAgdG8gdGhlIHNx
dWFyZSByb290IG9mIG4KICAgICBpZiAoaSA+IG4vaSkgYnJlYWs7CiAKICAgICAvLyBOb3csIHdl
IGhhdmUgaSA8PSBuL2kgPCBuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGUxLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBs
ZTEuaAppbmRleCAzZGZlYjk4YzQ1MDMwMTQ1ZjllYTE4ZDc5NTMxYzkxYzgxZWU4NDlhLi4yYzNl
OWYwNWYxYTEwYTQ0MjVmNzdiMjg3MTZlODA1OTY4MjE5NjFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEuaApAQCAtMjgsOCArMjgsNiBAQAogLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysg
dGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlv
bmcgV2FuKQogCiAjaWZuZGVmIEdURVNUX1NBTVBMRVNfU0FNUExFMV9IXwogI2RlZmluZSBHVEVT
VF9TQU1QTEVTX1NBTVBMRTFfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9z
YW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjCmluZGV4IDNhZDZmZDY1MzgyNjE3ZjdkNmI0MDFm
NGQxYmQ4M2ZjODZlZDg0ZmUuLjdjZTk1NTBmODgzYWEzNDJkMjViMDQ4NTkzZmFhOTZjYWJkOGUx
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMTBf
dW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUx
MF91bml0dGVzdC5jYwpAQCAtMjUsOCArMjUsNyBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAo
VmxhZCBMb3NldikKKwogCiAvLyBUaGlzIHNhbXBsZSBzaG93cyBob3cgdG8gdXNlIEdvb2dsZSBU
ZXN0IGxpc3RlbmVyIEFQSSB0byBpbXBsZW1lbnQKIC8vIGEgcHJpbWl0aXZlIGxlYWsgY2hlY2tl
ci4KQEAgLTM0LDE5ICszMywxNiBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3Rk
bGliLmg+CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKIHVzaW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lcjsKIHVzaW5nIDo6
dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7CiB1c2luZyA6OnRlc3Rpbmc6OlRlc3Q7Ci11c2luZyA6
OnRlc3Rpbmc6OlRlc3RDYXNlOwogdXNpbmcgOjp0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7
CiB1c2luZyA6OnRlc3Rpbmc6OlRlc3RJbmZvOwogdXNpbmcgOjp0ZXN0aW5nOjpUZXN0UGFydFJl
c3VsdDsKIHVzaW5nIDo6dGVzdGluZzo6VW5pdFRlc3Q7CiAKIG5hbWVzcGFjZSB7Ci0KIC8vIFdl
IHdpbGwgdHJhY2sgbWVtb3J5IHVzZWQgYnkgdGhpcyBjbGFzcy4KIGNsYXNzIFdhdGVyIHsKICBw
dWJsaWM6CkBAIC04OSw4ICs4NSw3IEBAIGNsYXNzIExlYWtDaGVja2VyIDogcHVibGljIEVtcHR5
VGVzdEV2ZW50TGlzdGVuZXIgewogICAgIC8vIFlvdSBjYW4gZ2VuZXJhdGUgYSBmYWlsdXJlIGlu
IGFueSBldmVudCBoYW5kbGVyIGV4Y2VwdAogICAgIC8vIE9uVGVzdFBhcnRSZXN1bHQuIEp1c3Qg
dXNlIGFuIGFwcHJvcHJpYXRlIEdvb2dsZSBUZXN0IGFzc2VydGlvbiB0byBkbwogICAgIC8vIGl0
LgotICAgIEVYUEVDVF9UUlVFKGRpZmZlcmVuY2UgPD0gMCkKLSAgICAgICAgPDwgIkxlYWtlZCAi
IDw8IGRpZmZlcmVuY2UgPDwgIiB1bml0KHMpIG9mIFdhdGVyISI7CisgICAgRVhQRUNUX0xFKGRp
ZmZlcmVuY2UsIDApIDw8ICJMZWFrZWQgIiA8PCBkaWZmZXJlbmNlIDw8ICIgdW5pdChzKSBvZiBX
YXRlciEiOwogICB9CiAKICAgaW50IGluaXRpYWxseV9hbGxvY2F0ZWRfOwpAQCAtMTA3LDcgKzEw
Miw2IEBAIFRFU1QoTGlzdGVuZXJzVGVzdCwgTGVha3NXYXRlcikgewogICBXYXRlciogd2F0ZXIg
PSBuZXcgV2F0ZXI7CiAgIEVYUEVDVF9UUlVFKHdhdGVyICE9IE5VTEwpOwogfQotCiB9ICAvLyBu
YW1lc3BhY2UKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QuY2MKaW5kZXgg
MDFlYjU0NjJmODFhZDU0YjM4YWM1ZWU2MzM3OTcyZWFhMDRkN2FkZS4uY2IwOGI2MWE1OWE5ZTE2
YjM2NTc4NjFmMWM5NjA5MDAxZDIwOTZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYwpAQCAtMjgsOSArMjgsNiBAQAogLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdv
b2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNv
bSAoWmhhbnlvbmcgV2FuKQotCiAKIC8vIFRoaXMgc2FtcGxlIHNob3dzIGhvdyB0byB3cml0ZSBh
IHNpbXBsZSB1bml0IHRlc3QgZm9yIGEgZnVuY3Rpb24sCiAvLyB1c2luZyBHb29nbGUgQysrIHRl
c3RpbmcgZnJhbWV3b3JrLgpAQCAtNDUsOCArNDIsOCBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+
CiAjaW5jbHVkZSAic2FtcGxlMS5oIgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgorbmFtZXNwYWNlIHsKIAogLy8gU3RlcCAyLiBVc2UgdGhlIFRF
U1QgbWFjcm8gdG8gZGVmaW5lIHlvdXIgdGVzdHMuCiAvLwpAQCAtODEsNyArNzgsNyBAQCBURVNU
KEZhY3RvcmlhbFRlc3QsIE5lZ2F0aXZlKSB7CiAgIC8vIHRlc3QgY2FzZS4KICAgRVhQRUNUX0VR
KDEsIEZhY3RvcmlhbCgtNSkpOwogICBFWFBFQ1RfRVEoMSwgRmFjdG9yaWFsKC0xKSk7Ci0gIEVY
UEVDVF9UUlVFKEZhY3RvcmlhbCgtMTApID4gMCk7CisgIEVYUEVDVF9HVChGYWN0b3JpYWwoLTEw
KSwgMCk7CiAKICAgLy8gPFRlY2huaWNhbERldGFpbHM+CiAgIC8vCkBAIC0xMzksNiArMTM2LDcg
QEAgVEVTVChJc1ByaW1lVGVzdCwgUG9zaXRpdmUpIHsKICAgRVhQRUNUX0ZBTFNFKElzUHJpbWUo
NikpOwogICBFWFBFQ1RfVFJVRShJc1ByaW1lKDIzKSk7CiB9Cit9ICAvLyBuYW1lc3BhY2UKIAog
Ly8gU3RlcCAzLiBDYWxsIFJVTl9BTExfVEVTVFMoKSBpbiBtYWluKCkuCiAvLwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUyLmNjCmluZGV4IDVmNzYzYjliZGY4ZDdhYmMx
M2M2MWM1NjgzMzFkMjFiOWZhNDk3NWQuLmYzYjcyMmZjYWNmZWVlN2Q4OTBiMmQxZjE5YmM5NzQx
NWVjYTQ5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2Ft
cGxlMi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTIuY2MK
QEAgLTI4LDggKzI4LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0g
ZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8v
IEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAogI2luY2x1ZGUgInNhbXBs
ZTIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1w
bGUyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTIuaAppbmRleCA1
YjU3ZTYwODJmYTRmNmI3MjRiZmI1ODI2ODdiZmUwYTYzMTlmMmE3Li41OGYzNjBmNDVjNzY1OGMw
MTk3ZTNmZmM2NWVjOGIzNzVmYjMzNmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1w
bGVzL3NhbXBsZTIuaApAQCAtMjgsOCArMjgsNiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBz
YW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFt
ZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCiAj
aWZuZGVmIEdURVNUX1NBTVBMRVNfU0FNUExFMl9IXwogI2RlZmluZSBHVEVTVF9TQU1QTEVTX1NB
TVBMRTJfSF8KQEAgLTQ0LDcgKzQyLDYgQEAgY2xhc3MgTXlTdHJpbmcgewogICBjb25zdCBNeVN0
cmluZyYgb3BlcmF0b3I9KGNvbnN0IE15U3RyaW5nJiByaHMpOwogCiAgcHVibGljOgotCiAgIC8v
IENsb25lcyBhIDAtdGVybWluYXRlZCBDIHN0cmluZywgYWxsb2NhdGluZyBtZW1vcnkgdXNpbmcg
bmV3LgogICBzdGF0aWMgY29uc3QgY2hhciogQ2xvbmVDU3RyaW5nKGNvbnN0IGNoYXIqIGFfY19z
dHJpbmcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3Nh
bXBsZTJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBs
ZTJfdW5pdHRlc3QuY2MKaW5kZXggMzIyMzJkOThjMGJkMjU0ODIxYzhmNjkxYTZiODU1ZjFmMTYx
NmZiOC4uMDg0ODgyNjE5MmNjNjZmY2I3OTA2ZWYyYzBhYWVmNjZhZjg0M2Y5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYwpA
QCAtMjgsOSArMjgsNiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBk
ZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCiAKIC8vIFRoaXMgc2FtcGxl
IHNob3dzIGhvdyB0byB3cml0ZSBhIG1vcmUgY29tcGxleCB1bml0IHRlc3QgZm9yIGEgY2xhc3MK
IC8vIHRoYXQgaGFzIG11bHRpcGxlIG1lbWJlciBmdW5jdGlvbnMuCkBAIC00MSw4ICszOCw4IEBA
CiAvLyBuZWVkZWQuCiAKICNpbmNsdWRlICJzYW1wbGUyLmgiCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KLQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCituYW1lc3BhY2UgewogLy8gSW4gdGhp
cyBleGFtcGxlLCB3ZSB0ZXN0IHRoZSBNeVN0cmluZyBjbGFzcyAoYSBzaW1wbGUgc3RyaW5nKS4K
IAogLy8gVGVzdHMgdGhlIGRlZmF1bHQgYyd0b3IuCkBAIC03OSw3ICs3Niw3IEBAIGNvbnN0IGNo
YXIga0hlbGxvU3RyaW5nW10gPSAiSGVsbG8sIHdvcmxkISI7CiAvLyBUZXN0cyB0aGUgYyd0b3Ig
dGhhdCBhY2NlcHRzIGEgQyBzdHJpbmcuCiBURVNUKE15U3RyaW5nLCBDb25zdHJ1Y3RvckZyb21D
U3RyaW5nKSB7CiAgIGNvbnN0IE15U3RyaW5nIHMoa0hlbGxvU3RyaW5nKTsKLSAgRVhQRUNUX1RS
VUUoc3RyY21wKHMuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSA9PSAwKTsKKyAgRVhQRUNUX0VR
KDAsIHN0cmNtcChzLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykpOwogICBFWFBFQ1RfRVEoc2l6
ZW9mKGtIZWxsb1N0cmluZykvc2l6ZW9mKGtIZWxsb1N0cmluZ1swXSkgLSAxLAogICAgICAgICAg
ICAgcy5MZW5ndGgoKSk7CiB9CkBAIC04OCw3ICs4NSw3IEBAIFRFU1QoTXlTdHJpbmcsIENvbnN0
cnVjdG9yRnJvbUNTdHJpbmcpIHsKIFRFU1QoTXlTdHJpbmcsIENvcHlDb25zdHJ1Y3Rvcikgewog
ICBjb25zdCBNeVN0cmluZyBzMShrSGVsbG9TdHJpbmcpOwogICBjb25zdCBNeVN0cmluZyBzMiA9
IHMxOwotICBFWFBFQ1RfVFJVRShzdHJjbXAoczIuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSA9
PSAwKTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzMi5jX3N0cmluZygpLCBrSGVsbG9TdHJpbmcp
KTsKIH0KIAogLy8gVGVzdHMgdGhlIFNldCBtZXRob2QuCkBAIC05NiwxNCArOTMsMTUgQEAgVEVT
VChNeVN0cmluZywgU2V0KSB7CiAgIE15U3RyaW5nIHM7CiAKICAgcy5TZXQoa0hlbGxvU3RyaW5n
KTsKLSAgRVhQRUNUX1RSVUUoc3RyY21wKHMuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSA9PSAw
KTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykpOwog
CiAgIC8vIFNldCBzaG91bGQgd29yayB3aGVuIHRoZSBpbnB1dCBwb2ludGVyIGlzIHRoZSBzYW1l
IGFzIHRoZSBvbmUKICAgLy8gYWxyZWFkeSBpbiB0aGUgTXlTdHJpbmcgb2JqZWN0LgogICBzLlNl
dChzLmNfc3RyaW5nKCkpOwotICBFWFBFQ1RfVFJVRShzdHJjbXAocy5jX3N0cmluZygpLCBrSGVs
bG9TdHJpbmcpID09IDApOworICBFWFBFQ1RfRVEoMCwgc3RyY21wKHMuY19zdHJpbmcoKSwga0hl
bGxvU3RyaW5nKSk7CiAKICAgLy8gQ2FuIHdlIHNldCB0aGUgTXlTdHJpbmcgdG8gTlVMTD8KICAg
cy5TZXQoTlVMTCk7CiAgIEVYUEVDVF9TVFJFUShOVUxMLCBzLmNfc3RyaW5nKCkpOwogfQorfSAg
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVz
L3NhbXBsZTMtaW5sLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTMt
aW5sLmgKaW5kZXggNDYzNjlhMDc2ZDg1YzQxMTQyM2FjYWE5OGRkNDU1ZTU1OWVkMzAwYS4uMWEy
OWNlOTI5NmE2NGRmZTk3YTlmN2ZkYzZkYTg2Mzg3ZGMwYjc1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzLWlubC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMy1pbmwuaApAQCAtMjgsOCArMjgsNiBAQAogLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdv
b2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNv
bSAoWmhhbnlvbmcgV2FuKQogCiAjaWZuZGVmIEdURVNUX1NBTVBMRVNfU0FNUExFM19JTkxfSF8K
ICNkZWZpbmUgR1RFU1RfU0FNUExFU19TQU1QTEUzX0lOTF9IXwpAQCAtNjAsNyArNTgsNyBAQCBj
bGFzcyBRdWV1ZU5vZGUgewogIHByaXZhdGU6CiAgIC8vIENyZWF0ZXMgYSBub2RlIHdpdGggYSBn
aXZlbiBlbGVtZW50IHZhbHVlLiAgVGhlIG5leHQgcG9pbnRlciBpcwogICAvLyBzZXQgdG8gTlVM
TC4KLSAgUXVldWVOb2RlKGNvbnN0IEUmIGFuX2VsZW1lbnQpIDogZWxlbWVudF8oYW5fZWxlbWVu
dCksIG5leHRfKE5VTEwpIHt9CisgIGV4cGxpY2l0IFF1ZXVlTm9kZShjb25zdCBFJiBhbl9lbGVt
ZW50KSA6IGVsZW1lbnRfKGFuX2VsZW1lbnQpLCBuZXh0XyhOVUxMKSB7fQogCiAgIC8vIFdlIGRp
c2FibGUgdGhlIGRlZmF1bHQgYXNzaWdubWVudCBvcGVyYXRvciBhbmQgY29weSBjJ3Rvci4KICAg
Y29uc3QgUXVldWVOb2RlJiBvcGVyYXRvciA9IChjb25zdCBRdWV1ZU5vZGUmKTsKQEAgLTcyLDgg
KzcwLDcgQEAgY2xhc3MgUXVldWVOb2RlIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEU+ICAvLyBF
IGlzIHRoZSBlbGVtZW50IHR5cGUuCiBjbGFzcyBRdWV1ZSB7Ci1wdWJsaWM6Ci0KKyBwdWJsaWM6
CiAgIC8vIENyZWF0ZXMgYW4gZW1wdHkgcXVldWUuCiAgIFF1ZXVlKCkgOiBoZWFkXyhOVUxMKSwg
bGFzdF8oTlVMTCksIHNpemVfKDApIHt9CiAKQEAgLTE2OCw2ICsxNjUsNiBAQCBwdWJsaWM6CiAg
IC8vIFdlIGRpc2FsbG93IGNvcHlpbmcgYSBxdWV1ZS4KICAgUXVldWUoY29uc3QgUXVldWUmKTsK
ICAgY29uc3QgUXVldWUmIG9wZXJhdG9yID0gKGNvbnN0IFF1ZXVlJik7Ci0gfTsKK307CiAKICNl
bmRpZiAgLy8gR1RFU1RfU0FNUExFU19TQU1QTEUzX0lOTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjCmluZGV4IDM0YzFjYTg2
NTZlYWI1NjQxODE1NjBkYmYxNDlkMGEyYWE5MmNjMWQuLmUwOTNjMjU4ODU3M2Y5NjI3MGE1ZWQ0
MTI0NWFjN2U4OWY0ODUxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nh
bXBsZXMvc2FtcGxlM191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9z
YW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MKQEAgLTI4LDkgKzI4LDYgQEAKIC8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysr
IHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKLQogCiAvLyBJbiB0aGlzIGV4YW1wbGUsIHdlIHVzZSBhIG1vcmUgYWR2YW5jZWQg
ZmVhdHVyZSBvZiBHb29nbGUgVGVzdCBjYWxsZWQKIC8vIHRlc3QgZml4dHVyZS4KQEAgLTY0LDE1
ICs2MSwxNSBAQAogLy8gPC9UZWNobmljYWxEZXRhaWxzPgogCiAjaW5jbHVkZSAic2FtcGxlMy1p
bmwuaCIKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKK25hbWVzcGFjZSB7CiAvLyBUbyB1c2UgYSB0ZXN0IGZpeHR1cmUsIGRlcml2ZSBhIGNsYXNz
IGZyb20gdGVzdGluZzo6VGVzdC4KLWNsYXNzIFF1ZXVlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKK2NsYXNzIFF1ZXVlVGVzdFNtcGwzIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogIHBy
b3RlY3RlZDogIC8vIFlvdSBzaG91bGQgbWFrZSB0aGUgbWVtYmVycyBwcm90ZWN0ZWQgcy50LiB0
aGV5IGNhbiBiZQogICAgICAgICAgICAgIC8vIGFjY2Vzc2VkIGZyb20gc3ViLWNsYXNzZXMuCiAK
ICAgLy8gdmlydHVhbCB2b2lkIFNldFVwKCkgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIGVhY2ggdGVz
dCBpcyBydW4uICBZb3UKLSAgLy8gc2hvdWxkIGRlZmluZSBpdCBpZiB5b3UgbmVlZCB0byBpbml0
aWFsaXplIHRoZSB2YXJhaWJsZXMuCisgIC8vIHNob3VsZCBkZWZpbmUgaXQgaWYgeW91IG5lZWQg
dG8gaW5pdGlhbGl6ZSB0aGUgdmFyaWFibGVzLgogICAvLyBPdGhlcndpc2UsIHRoaXMgY2FuIGJl
IHNraXBwZWQuCiAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKICAgICBxMV8uRW5xdWV1ZSgxKTsK
QEAgLTEyMCwxMyArMTE3LDEzIEBAIGNsYXNzIFF1ZXVlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKIC8vIGluc3RlYWQgb2YgVEVTVC4KIAogLy8gVGVzdHMgdGhlIGRlZmF1bHQgYyd0b3Iu
Ci1URVNUX0YoUXVldWVUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3IpIHsKK1RFU1RfRihRdWV1ZVRl
c3RTbXBsMywgRGVmYXVsdENvbnN0cnVjdG9yKSB7CiAgIC8vIFlvdSBjYW4gYWNjZXNzIGRhdGEg
aW4gdGhlIHRlc3QgZml4dHVyZSBoZXJlLgogICBFWFBFQ1RfRVEoMHUsIHEwXy5TaXplKCkpOwog
fQogCiAvLyBUZXN0cyBEZXF1ZXVlKCkuCi1URVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVlKSB7CitU
RVNUX0YoUXVldWVUZXN0U21wbDMsIERlcXVldWUpIHsKICAgaW50ICogbiA9IHEwXy5EZXF1ZXVl
KCk7CiAgIEVYUEVDVF9UUlVFKG4gPT0gTlVMTCk7CiAKQEAgLTE0NCw4ICsxNDEsOSBAQCBURVNU
X0YoUXVldWVUZXN0LCBEZXF1ZXVlKSB7CiB9CiAKIC8vIFRlc3RzIHRoZSBRdWV1ZTo6TWFwKCkg
ZnVuY3Rpb24uCi1URVNUX0YoUXVldWVUZXN0LCBNYXApIHsKK1RFU1RfRihRdWV1ZVRlc3RTbXBs
MywgTWFwKSB7CiAgIE1hcFRlc3RlcigmcTBfKTsKICAgTWFwVGVzdGVyKCZxMV8pOwogICBNYXBU
ZXN0ZXIoJnEyXyk7CiB9Cit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NhbXBsZXMvc2FtcGxlNC5jYwppbmRleCBhZTQ0YmRhNmYxYmFkNTNmZjNjNmYxNGUwMzAyYmQz
YmIzMDljYmE3Li5iMGVlNjA5M2I0YTI1MGNmMTE5MzZjY2M4MjA4YTYxMjI5MWI4MTQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTQuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0LmNjCkBAIC0yOCw4ICsyOCw2
IEBACiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogCiAvLyBBIHNhbXBsZSBwcm9ncmFtIGRlbW9uc3RyYXRpbmcg
dXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBBdXRob3I6IHdhbkBn
b29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAKICNpbmNsdWRlIDxzdGRpby5oPgogCkBAIC00MCw2
ICszOCwxNiBAQCBpbnQgQ291bnRlcjo6SW5jcmVtZW50KCkgewogICByZXR1cm4gY291bnRlcl8r
KzsKIH0KIAorLy8gUmV0dXJucyB0aGUgY3VycmVudCBjb3VudGVyIHZhbHVlLCBhbmQgZGVjcmVt
ZW50cyBpdC4KKy8vIGNvdW50ZXIgY2FuIG5vdCBiZSBsZXNzIHRoYW4gMCwgcmV0dXJuIDAgaW4g
dGhpcyBjYXNlCitpbnQgQ291bnRlcjo6RGVjcmVtZW50KCkgeworICBpZiAoY291bnRlcl8gPT0g
MCkgeworICAgIHJldHVybiBjb3VudGVyXzsKKyAgfSBlbHNlICB7CisgICAgcmV0dXJuIGNvdW50
ZXJfLS07CisgIH0KK30KKwogLy8gUHJpbnRzIHRoZSBjdXJyZW50IGNvdW50ZXIgdmFsdWUgdG8g
U1RET1VULgogdm9pZCBDb3VudGVyOjpQcmludCgpIGNvbnN0IHsKICAgcHJpbnRmKCIlZCIsIGNv
dW50ZXJfKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2Ft
cGxlNC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0LmgKaW5kZXgg
Y2Q2MGYwZGQyZDE4NjA3MzdiN2YwZWE0NWM1Njc1YTNhOGVhNzIxZi4uZTI1NmY0MDY0ZmU5MWE3
ZjAxYTk0NTUwZDMyYzNiYjExYjBhNGZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2FtcGxlcy9zYW1wbGU0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ft
cGxlcy9zYW1wbGU0LmgKQEAgLTI4LDkgKzI4LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEg
c2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJh
bWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQog
I2lmbmRlZiBHVEVTVF9TQU1QTEVTX1NBTVBMRTRfSF8KICNkZWZpbmUgR1RFU1RfU0FNUExFU19T
QU1QTEU0X0hfCiAKQEAgLTQ2LDYgKzQzLDkgQEAgY2xhc3MgQ291bnRlciB7CiAgIC8vIFJldHVy
bnMgdGhlIGN1cnJlbnQgY291bnRlciB2YWx1ZSwgYW5kIGluY3JlbWVudHMgaXQuCiAgIGludCBJ
bmNyZW1lbnQoKTsKIAorICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IGNvdW50ZXIgdmFsdWUsIGFu
ZCBkZWNyZW1lbnRzIGl0LgorICBpbnQgRGVjcmVtZW50KCk7CisKICAgLy8gUHJpbnRzIHRoZSBj
dXJyZW50IGNvdW50ZXIgdmFsdWUgdG8gU1RET1VULgogICB2b2lkIFByaW50KCkgY29uc3Q7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0X3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0X3VuaXR0
ZXN0LmNjCmluZGV4IGI0ZmIzNzM2YWJiZmY4M2Y3OWFmNDQ3Y2E0YmM2YjkxMDU4NjkzMmUuLmQ1
MTQ0YzBkMDBmNWM3NjAwNjkzZWEwMjU4MDJjMGQ3ZDUyNTBkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNF91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QuY2MKQEAgLTI2LDIw
ICsyNiwyOCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKICNpbmNsdWRlICJzYW1wbGU0LmgiCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKIAorbmFtZXNwYWNlIHsKIC8vIFRlc3RzIHRoZSBJbmNyZW1lbnQoKSBtZXRo
b2QuCisKIFRFU1QoQ291bnRlciwgSW5jcmVtZW50KSB7CiAgIENvdW50ZXIgYzsKIAorICAvLyBU
ZXN0IHRoYXQgY291bnRlciAwIHJldHVybnMgMAorICBFWFBFQ1RfRVEoMCwgYy5EZWNyZW1lbnQo
KSk7CisKICAgLy8gRVhQRUNUX0VRKCkgZXZhbHVhdGVzIGl0cyBhcmd1bWVudHMgZXhhY3RseSBv
bmNlLCBzbyB0aGV5CiAgIC8vIGNhbiBoYXZlIHNpZGUgZWZmZWN0cy4KIAogICBFWFBFQ1RfRVEo
MCwgYy5JbmNyZW1lbnQoKSk7CiAgIEVYUEVDVF9FUSgxLCBjLkluY3JlbWVudCgpKTsKICAgRVhQ
RUNUX0VRKDIsIGMuSW5jcmVtZW50KCkpOworCisgIEVYUEVDVF9FUSgzLCBjLkRlY3JlbWVudCgp
KTsKIH0KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MKaW5kZXggNDlkYWU3YzY5ZmE3NmU4YTQ4NjA3
NzA2YjRhMTYyYzY0MmYwYTA4NS4uZDhhODc4OGM2ZDBmZGEyMzg2NDZmZWEyOTBlMDk3Y2M3NjI3
Nzg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU1
X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxl
NV91bml0dGVzdC5jYwpAQCAtMjYsOCArMjYsNyBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbikKKwogCiAvLyBUaGlzIHNhbXBsZSB0ZWFjaGVzIGhvdyB0byByZXVzZSBhIHRl
c3QgZml4dHVyZSBpbiBtdWx0aXBsZSB0ZXN0CiAvLyBjYXNlcyBieSBkZXJpdmluZyBzdWItZml4
dHVyZXMgZnJvbSBpdC4KQEAgLTQ2LDEwICs0NSwxMCBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+
CiAjaW5jbHVkZSA8dGltZS5oPgotI2luY2x1ZGUgInNhbXBsZTMtaW5sLmgiCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgInNhbXBs
ZTEuaCIKLQorI2luY2x1ZGUgInNhbXBsZTMtaW5sLmgiCituYW1lc3BhY2UgewogLy8gSW4gdGhp
cyBzYW1wbGUsIHdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgZXZlcnkgdGVzdCBmaW5pc2hlcyB3aXRo
aW4KIC8vIH41IHNlY29uZHMuICBJZiBhIHRlc3QgdGFrZXMgbG9uZ2VyIHRvIHJ1biwgd2UgY29u
c2lkZXIgaXQgYQogLy8gZmFpbHVyZS4KQEAgLTEwMSw3ICsxMDAsNyBAQCBURVNUX0YoSW50ZWdl
ckZ1bmN0aW9uVGVzdCwgRmFjdG9yaWFsKSB7CiAgIC8vIFRlc3RzIGZhY3RvcmlhbCBvZiBuZWdh
dGl2ZSBudW1iZXJzLgogICBFWFBFQ1RfRVEoMSwgRmFjdG9yaWFsKC01KSk7CiAgIEVYUEVDVF9F
USgxLCBGYWN0b3JpYWwoLTEpKTsKLSAgRVhQRUNUX1RSVUUoRmFjdG9yaWFsKC0xMCkgPiAwKTsK
KyAgRVhQRUNUX0dUKEZhY3RvcmlhbCgtMTApLCAwKTsKIAogICAvLyBUZXN0cyBmYWN0b3JpYWwg
b2YgMC4KICAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgwKSk7CkBAIC0xMTcsMjAgKzExNiwyMCBA
QCBURVNUX0YoSW50ZWdlckZ1bmN0aW9uVGVzdCwgRmFjdG9yaWFsKSB7CiAvLyBUZXN0cyBJc1By
aW1lKCkKIFRFU1RfRihJbnRlZ2VyRnVuY3Rpb25UZXN0LCBJc1ByaW1lKSB7CiAgIC8vIFRlc3Rz
IG5lZ2F0aXZlIGlucHV0LgotICBFWFBFQ1RfVFJVRSghSXNQcmltZSgtMSkpOwotICBFWFBFQ1Rf
VFJVRSghSXNQcmltZSgtMikpOwotICBFWFBFQ1RfVFJVRSghSXNQcmltZShJTlRfTUlOKSk7Cisg
IEVYUEVDVF9GQUxTRShJc1ByaW1lKC0xKSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKC0yKSk7
CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKElOVF9NSU4pKTsKIAogICAvLyBUZXN0cyBzb21lIHRy
aXZpYWwgY2FzZXMuCi0gIEVYUEVDVF9UUlVFKCFJc1ByaW1lKDApKTsKLSAgRVhQRUNUX1RSVUUo
IUlzUHJpbWUoMSkpOworICBFWFBFQ1RfRkFMU0UoSXNQcmltZSgwKSk7CisgIEVYUEVDVF9GQUxT
RShJc1ByaW1lKDEpKTsKICAgRVhQRUNUX1RSVUUoSXNQcmltZSgyKSk7CiAgIEVYUEVDVF9UUlVF
KElzUHJpbWUoMykpOwogCiAgIC8vIFRlc3RzIHBvc2l0aXZlIGlucHV0LgotICBFWFBFQ1RfVFJV
RSghSXNQcmltZSg0KSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKDQpKTsKICAgRVhQRUNUX1RS
VUUoSXNQcmltZSg1KSk7Ci0gIEVYUEVDVF9UUlVFKCFJc1ByaW1lKDYpKTsKKyAgRVhQRUNUX0ZB
TFNFKElzUHJpbWUoNikpOwogICBFWFBFQ1RfVFJVRShJc1ByaW1lKDIzKSk7CiB9CiAKQEAgLTE5
MSw3ICsxOTAsNyBAQCBURVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVlKSB7CiAgIEVYUEVDVF9FUSgx
dSwgcTJfLlNpemUoKSk7CiAgIGRlbGV0ZSBuOwogfQotCit9ICAvLyBuYW1lc3BhY2UKIC8vIElm
IG5lY2Vzc2FyeSwgeW91IGNhbiBkZXJpdmUgZnVydGhlciB0ZXN0IGZpeHR1cmVzIGZyb20gYSBk
ZXJpdmVkCiAvLyBmaXh0dXJlIGl0c2VsZi4gIEZvciBleGFtcGxlLCB5b3UgY2FuIGRlcml2ZSBh
bm90aGVyIGZpeHR1cmUgZnJvbQogLy8gUXVldWVUZXN0LiAgR29vZ2xlIFRlc3QgaW1wb3NlcyBu
byBsaW1pdCBvbiBob3cgZGVlcCB0aGUgaGllcmFyY2h5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2MKaW5kZXggZGQwZGYzMWYwYmI3
Y2JmMjYxNjA3MzQyZTg2NDA0ZDc1YTg1MzQzZS4uZGRmMmYxYzEzYmJlMDM0ODEzNDQ5MzZiMGE3
MmRiYjJhMGIyODQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxl
cy9zYW1wbGU2X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBs
ZXMvc2FtcGxlNl91bml0dGVzdC5jYwpAQCAtMjYsOCArMjYsNyBAQAogLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAog
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUaGlzIHNhbXBsZSBzaG93cyBob3cgdG8gdGVz
dCBjb21tb24gcHJvcGVydGllcyBvZiBtdWx0aXBsZQogLy8gaW1wbGVtZW50YXRpb25zIG9mIHRo
ZSBzYW1lIGludGVyZmFjZSAoYWthIGludGVyZmFjZSB0ZXN0cykuCkBAIC0zNSw4ICszNCw4IEBA
CiAvLyBUaGUgaW50ZXJmYWNlIGFuZCBpdHMgaW1wbGVtZW50YXRpb25zIGFyZSBpbiB0aGlzIGhl
YWRlci4KICNpbmNsdWRlICJwcmltZV90YWJsZXMuaCIKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+Ci0KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorbmFtZXNwYWNlIHsKIC8vIEZpcnN0LCB3
ZSBkZWZpbmUgc29tZSBmYWN0b3J5IGZ1bmN0aW9ucyBmb3IgY3JlYXRpbmcgaW5zdGFuY2VzIG9m
CiAvLyB0aGUgaW1wbGVtZW50YXRpb25zLiAgWW91IG1heSBiZSBhYmxlIHRvIHNraXAgdGhpcyBz
dGVwIGlmIGFsbCB5b3VyCiAvLyBpbXBsZW1lbnRhdGlvbnMgY2FuIGJlIGNvbnN0cnVjdGVkIHRo
ZSBzYW1lIHdheS4KQEAgLTIyMiwzICsyMjEsNCBAQCBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NB
U0VfUChPblRoZUZseUFuZFByZUNhbGN1bGF0ZWQsICAgIC8vIEluc3RhbmNlIG5hbWUKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1lVGFibGVJbXBsZW1lbnRhdGlvbnMpOyAgLy8g
VHlwZSBsaXN0CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorfSAgLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBs
ZTdfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTdf
dW5pdHRlc3QuY2MKaW5kZXggZjQ1NTI4MjdlZDliODMwNmNkZDMxOWFhNTdmM2VkMDY3NjJiNGY1
Zi4uYzFhZThiZGVkYzlhZmM5YTExZDBkOTIwMjFlZjc2NzdkMzk4YTljOSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU3X3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYwpAQCAt
MjYsOCArMjYsNyBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKwogCiAv
LyBUaGlzIHNhbXBsZSBzaG93cyBob3cgdG8gdGVzdCBjb21tb24gcHJvcGVydGllcyBvZiBtdWx0
aXBsZQogLy8gaW1wbGVtZW50YXRpb25zIG9mIGFuIGludGVyZmFjZSAoYWthIGludGVyZmFjZSB0
ZXN0cykgdXNpbmcKQEAgLTM4LDE5ICszNywxNyBAQAogLy8gVGhlIGludGVyZmFjZSBhbmQgaXRz
IGltcGxlbWVudGF0aW9ucyBhcmUgaW4gdGhpcyBoZWFkZXIuCiAjaW5jbHVkZSAicHJpbWVfdGFi
bGVzLmgiCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0jaWYgR1RFU1RfSEFTX1BBUkFN
X1RFU1QKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorbmFtZXNwYWNlIHsKIAogdXNpbmcgOjp0
ZXN0aW5nOjpUZXN0V2l0aFBhcmFtOwogdXNpbmcgOjp0ZXN0aW5nOjpWYWx1ZXM7CiAKLS8vIEFz
IGEgZ2VuZXJhbCBydWxlLCB0ZXN0ZWQgb2JqZWN0cyBzaG91bGQgbm90IGJlIHJldXNlZCBiZXR3
ZWVuIHRlc3RzLgotLy8gQWxzbywgdGhlaXIgY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycyBv
ZiB0ZXN0ZWQgb2JqZWN0cyBjYW4gaGF2ZQotLy8gc2lkZSBlZmZlY3RzLiBUaHVzIHlvdSBzaG91
bGQgY3JlYXRlIGFuZCBkZXN0cm95IHRoZW0gZm9yIGVhY2ggdGVzdC4KLS8vIEluIHRoaXMgc2Ft
cGxlIHdlIHdpbGwgZGVmaW5lIGEgc2ltcGxlIGZhY3RvcnkgZnVuY3Rpb24gZm9yIFByaW1lVGFi
bGUKLS8vIG9iamVjdHMuIFdlIHdpbGwgaW5zdGFudGlhdGUgb2JqZWN0cyBpbiB0ZXN0J3MgU2V0
VXAoKSBtZXRob2QgYW5kCi0vLyBkZWxldGUgdGhlbSBpbiBUZWFyRG93bigpIG1ldGhvZC4KKy8v
IEFzIGEgZ2VuZXJhbCBydWxlLCB0byBwcmV2ZW50IGEgdGVzdCBmcm9tIGFmZmVjdGluZyB0aGUg
dGVzdHMgdGhhdCBjb21lCisvLyBhZnRlciBpdCwgeW91IHNob3VsZCBjcmVhdGUgYW5kIGRlc3Ry
b3kgdGhlIHRlc3RlZCBvYmplY3RzIGZvciBlYWNoIHRlc3QKKy8vIGluc3RlYWQgb2YgcmV1c2lu
ZyB0aGVtLiAgSW4gdGhpcyBzYW1wbGUgd2Ugd2lsbCBkZWZpbmUgYSBzaW1wbGUgZmFjdG9yeQor
Ly8gZnVuY3Rpb24gZm9yIFByaW1lVGFibGUgb2JqZWN0cy4gIFdlIHdpbGwgaW5zdGFudGlhdGUg
b2JqZWN0cyBpbiB0ZXN0J3MKKy8vIFNldFVwKCkgbWV0aG9kIGFuZCBkZWxldGUgdGhlbSBpbiBU
ZWFyRG93bigpIG1ldGhvZC4KIHR5cGVkZWYgUHJpbWVUYWJsZSogQ3JlYXRlUHJpbWVUYWJsZUZ1
bmMoKTsKIAogUHJpbWVUYWJsZSogQ3JlYXRlT25UaGVGbHlQcmltZVRhYmxlKCkgewpAQCAtNjIs
MTQgKzU5LDEzIEBAIFByaW1lVGFibGUqIENyZWF0ZVByZUNhbGN1bGF0ZWRQcmltZVRhYmxlKCkg
ewogICByZXR1cm4gbmV3IFByZUNhbGN1bGF0ZWRQcmltZVRhYmxlKG1heF9wcmVjYWxjdWxhdGVk
KTsKIH0KIAotLy8gSW5zaWRlIHRoZSB0ZXN0IGJvZHksIGZpeHR1cmUgY29uc3RydWN0b3IsIFNl
dFVwKCksIGFuZCBUZWFyRG93bigpCi0vLyB5b3UgY2FuIHJlZmVyIHRvIHRoZSB0ZXN0IHBhcmFt
ZXRlciBieSBHZXRQYXJhbSgpLgotLy8gSW4gdGhpcyBjYXNlLCB0aGUgdGVzdCBwYXJhbWV0ZXIg
aXMgYSBQcmltZVRhYmxlRmFjdG9yeSBpbnRlcmZhY2UgcG9pbnRlcgotLy8gd2hpY2ggd2UgdXNl
IGluIGZpeHR1cmUncyBTZXRVcCgpIHRvIGNyZWF0ZSBhbmQgc3RvcmUgYW4gaW5zdGFuY2Ugb2YK
LS8vIFByaW1lVGFibGUuCi1jbGFzcyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBh
cmFtPENyZWF0ZVByaW1lVGFibGVGdW5jKj4geworLy8gSW5zaWRlIHRoZSB0ZXN0IGJvZHksIGZp
eHR1cmUgY29uc3RydWN0b3IsIFNldFVwKCksIGFuZCBUZWFyRG93bigpIHlvdQorLy8gY2FuIHJl
ZmVyIHRvIHRoZSB0ZXN0IHBhcmFtZXRlciBieSBHZXRQYXJhbSgpLiAgSW4gdGhpcyBjYXNlLCB0
aGUgdGVzdAorLy8gcGFyYW1ldGVyIGlzIGEgZmFjdG9yeSBmdW5jdGlvbiB3aGljaCB3ZSBjYWxs
IGluIGZpeHR1cmUncyBTZXRVcCgpIHRvCisvLyBjcmVhdGUgYW5kIHN0b3JlIGFuIGluc3RhbmNl
IG9mIFByaW1lVGFibGUuCitjbGFzcyBQcmltZVRhYmxlVGVzdFNtcGw3IDogcHVibGljIFRlc3RX
aXRoUGFyYW08Q3JlYXRlUHJpbWVUYWJsZUZ1bmMqPiB7CiAgcHVibGljOgotICB2aXJ0dWFsIH5Q
cmltZVRhYmxlVGVzdCgpIHsgZGVsZXRlIHRhYmxlXzsgfQorICB2aXJ0dWFsIH5QcmltZVRhYmxl
VGVzdFNtcGw3KCkgeyBkZWxldGUgdGFibGVfOyB9CiAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsg
dGFibGVfID0gKCpHZXRQYXJhbSgpKSgpOyB9CiAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsK
ICAgICBkZWxldGUgdGFibGVfOwpAQCAtODAsNyArNzYsNyBAQCBjbGFzcyBQcmltZVRhYmxlVGVz
dCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPENyZWF0ZVByaW1lVGFibGVGdW5jKj4gewogICBQcmlt
ZVRhYmxlKiB0YWJsZV87CiB9OwogCi1URVNUX1AoUHJpbWVUYWJsZVRlc3QsIFJldHVybnNGYWxz
ZUZvck5vblByaW1lcykgeworVEVTVF9QKFByaW1lVGFibGVUZXN0U21wbDcsIFJldHVybnNGYWxz
ZUZvck5vblByaW1lcykgewogICBFWFBFQ1RfRkFMU0UodGFibGVfLT5Jc1ByaW1lKC01KSk7CiAg
IEVYUEVDVF9GQUxTRSh0YWJsZV8tPklzUHJpbWUoMCkpOwogICBFWFBFQ1RfRkFMU0UodGFibGVf
LT5Jc1ByaW1lKDEpKTsKQEAgLTg5LDcgKzg1LDcgQEAgVEVTVF9QKFByaW1lVGFibGVUZXN0LCBS
ZXR1cm5zRmFsc2VGb3JOb25QcmltZXMpIHsKICAgRVhQRUNUX0ZBTFNFKHRhYmxlXy0+SXNQcmlt
ZSgxMDApKTsKIH0KIAotVEVTVF9QKFByaW1lVGFibGVUZXN0LCBSZXR1cm5zVHJ1ZUZvclByaW1l
cykgeworVEVTVF9QKFByaW1lVGFibGVUZXN0U21wbDcsIFJldHVybnNUcnVlRm9yUHJpbWVzKSB7
CiAgIEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSgyKSk7CiAgIEVYUEVDVF9UUlVFKHRhYmxl
Xy0+SXNQcmltZSgzKSk7CiAgIEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSg1KSk7CkBAIC05
OCw3ICs5NCw3IEBAIFRFU1RfUChQcmltZVRhYmxlVGVzdCwgUmV0dXJuc1RydWVGb3JQcmltZXMp
IHsKICAgRVhQRUNUX1RSVUUodGFibGVfLT5Jc1ByaW1lKDEzMSkpOwogfQogCi1URVNUX1AoUHJp
bWVUYWJsZVRlc3QsIENhbkdldE5leHRQcmltZSkgeworVEVTVF9QKFByaW1lVGFibGVUZXN0U21w
bDcsIENhbkdldE5leHRQcmltZSkgewogICBFWFBFQ1RfRVEoMiwgdGFibGVfLT5HZXROZXh0UHJp
bWUoMCkpOwogICBFWFBFQ1RfRVEoMywgdGFibGVfLT5HZXROZXh0UHJpbWUoMikpOwogICBFWFBF
Q1RfRVEoNSwgdGFibGVfLT5HZXROZXh0UHJpbWUoMykpOwpAQCAtMTE0LDE5ICsxMTAsOCBAQCBU
RVNUX1AoUHJpbWVUYWJsZVRlc3QsIENhbkdldE5leHRQcmltZSkgewogLy8KIC8vIEhlcmUsIHdl
IGluc3RhbnRpYXRlIG91ciB0ZXN0cyB3aXRoIGEgbGlzdCBvZiB0d28gUHJpbWVUYWJsZSBvYmpl
Y3QKIC8vIGZhY3RvcnkgZnVuY3Rpb25zOgotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoCi0gICAg
T25UaGVGbHlBbmRQcmVDYWxjdWxhdGVkLAotICAgIFByaW1lVGFibGVUZXN0LAotICAgIFZhbHVl
cygmQ3JlYXRlT25UaGVGbHlQcmltZVRhYmxlLCAmQ3JlYXRlUHJlQ2FsY3VsYXRlZFByaW1lVGFi
bGU8MTAwMD4pKTsKLQotI2Vsc2UKLQotLy8gR29vZ2xlIFRlc3QgbWF5IG5vdCBzdXBwb3J0IHZh
bHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgd2l0aCBzb21lCi0vLyBjb21waWxlcnMuIElmIHdlIHVz
ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBjb21waWxlIG91dCBhbGwKLS8vIGNvZGUgcmVm
ZXJyaW5nIHRvIHRoZSBndGVzdF9tYWluIGxpYnJhcnksIE1TVkMgbGlua2VyIHdpbGwgbm90IGxp
bmsKLS8vIHRoYXQgbGlicmFyeSBhdCBhbGwgYW5kIGNvbnNlcXVlbnRseSBjb21wbGFpbiBhYm91
dCBtaXNzaW5nIGVudHJ5Ci0vLyBwb2ludCBkZWZpbmVkIGluIHRoYXQgbGlicmFyeSAoZmF0YWwg
ZXJyb3IgTE5LMTU2MTogZW50cnkgcG9pbnQKLS8vIG11c3QgYmUgZGVmaW5lZCkuIFRoaXMgZHVt
bXkgdGVzdCBrZWVwcyBndGVzdF9tYWluIGxpbmtlZCBpbi4KLVRFU1QoRHVtbXlUZXN0LCBWYWx1
ZVBhcmFtZXRlcml6ZWRUZXN0c0FyZU5vdFN1cHBvcnRlZE9uVGhpc1BsYXRmb3JtKSB7fQorSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoT25UaGVGbHlBbmRQcmVDYWxjdWxhdGVkLCBQcmltZVRhYmxl
VGVzdFNtcGw3LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKCZDcmVhdGVPblRoZUZs
eVByaW1lVGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNyZWF0ZVByZUNh
bGN1bGF0ZWRQcmltZVRhYmxlPDEwMDA+KSk7CiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFN
X1RFU1QKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjCmluZGV4IGNjZjYxZDkyYjg1YzMxMmY3ZjJlYzJm
NmQ4YTY3M2RmZjRiMDJkNjYuLmNlNzVjZjAzMDg3MGMzNzZkZmVjNjAzMWRiMjQ3MTEwODcwMzgz
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlOF91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZThf
dW5pdHRlc3QuY2MKQEAgLTI2LDggKzI2LDcgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZs
YWQgTG9zZXYpCisKIAogLy8gVGhpcyBzYW1wbGUgc2hvd3MgaG93IHRvIHRlc3QgY29kZSByZWx5
aW5nIG9uIHNvbWUgZ2xvYmFsIGZsYWcgdmFyaWFibGVzLgogLy8gQ29tYmluZSgpIGhlbHBzIHdp
dGggZ2VuZXJhdGluZyBhbGwgcG9zc2libGUgY29tYmluYXRpb25zIG9mIHN1Y2ggZmxhZ3MsCkBA
IC0zNiw4ICszNSw4IEBACiAvLyBVc2UgY2xhc3MgZGVmaW5pdGlvbnMgdG8gdGVzdCBmcm9tIHRo
aXMgaGVhZGVyLgogI2luY2x1ZGUgInByaW1lX3RhYmxlcy5oIgogCi0jaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QuaD4KLQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCituYW1lc3BhY2UgewogI2lmIEdU
RVNUX0hBU19DT01CSU5FCiAKIC8vIFN1cHBvc2Ugd2Ugd2FudCB0byBpbnRyb2R1Y2UgYSBuZXcs
IGltcHJvdmVkIGltcGxlbWVudGF0aW9uIG9mIFByaW1lVGFibGUKQEAgLTkwLDcgKzg5LDcgQEAg
dXNpbmcgOjp0ZXN0aW5nOjpDb21iaW5lOwogLy8gUHJlQ2FsY3VsYXRlZFByaW1lVGFibGUgZGlz
YWJsZWQuIFdlIGRvIHRoaXMgYnkgZGVmaW5pbmcgZml4dHVyZSB3aGljaCB3aWxsCiAvLyBhY2Nl
cHQgZGlmZmVyZW50IGNvbWJpbmF0aW9ucyBvZiBwYXJhbWV0ZXJzIGZvciBpbnN0YW50aWF0aW5n
IGEKIC8vIEh5YnJpZFByaW1lVGFibGUgaW5zdGFuY2UuCi1jbGFzcyBQcmltZVRhYmxlVGVzdCA6
IHB1YmxpYyBUZXN0V2l0aFBhcmFtPCA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQ+ID4gewor
Y2xhc3MgUHJpbWVUYWJsZVRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTwgOjp0ZXN0aW5nOjp0
dXBsZTxib29sLCBpbnQ+ID4gewogIHByb3RlY3RlZDoKICAgdmlydHVhbCB2b2lkIFNldFVwKCkg
ewogICAgIC8vIFRoaXMgY2FuIGJlIHdyaXR0ZW4gYXMKQEAgLTEwMSw4ICsxMDAsOCBAQCBjbGFz
cyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPCA6OnN0ZDo6dHIxOjp0dXBs
ZTxib29sLCBpbnQ+ID4gewogICAgIC8vCiAgICAgLy8gb25jZSB0aGUgR29vZ2xlIEMrKyBTdHls
ZSBHdWlkZSBhbGxvd3MgdXNlIG9mIDo6c3RkOjp0cjE6OnRpZS4KICAgICAvLwotICAgIGJvb2wg
Zm9yY2Vfb25fdGhlX2ZseSA9IDo6c3RkOjp0cjE6OmdldDwwPihHZXRQYXJhbSgpKTsKLSAgICBp
bnQgbWF4X3ByZWNhbGN1bGF0ZWQgPSA6OnN0ZDo6dHIxOjpnZXQ8MT4oR2V0UGFyYW0oKSk7Cisg
ICAgYm9vbCBmb3JjZV9vbl90aGVfZmx5ID0gOjp0ZXN0aW5nOjpnZXQ8MD4oR2V0UGFyYW0oKSk7
CisgICAgaW50IG1heF9wcmVjYWxjdWxhdGVkID0gOjp0ZXN0aW5nOjpnZXQ8MT4oR2V0UGFyYW0o
KSk7CiAgICAgdGFibGVfID0gbmV3IEh5YnJpZFByaW1lVGFibGUoZm9yY2Vfb25fdGhlX2ZseSwg
bWF4X3ByZWNhbGN1bGF0ZWQpOwogICB9CiAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKQEAg
LTE3MSwzICsxNzAsNCBAQCBJTlNUQU5USUFURV9URVNUX0NBU0VfUChNZWFuaW5nZnVsVGVzdFBh
cmFtZXRlcnMsCiBURVNUKER1bW15VGVzdCwgQ29tYmluZUlzTm90U3VwcG9ydGVkT25UaGlzUGxh
dGZvcm0pIHt9CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKK30gIC8vIG5hbWVzcGFj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU5X3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU5X3VuaXR0
ZXN0LmNjCmluZGV4IGQ4MjhlZjRkODZiNzQ2YjI1Njk3YmRkNDZkMjEwMGE0NDYxNDJkMzEuLjUz
ZjlhZjViYTFkZmMyNjk1NjYwNzhmMjM2ZjY5NTU5OWRjNTJhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MKQEAgLTI1LDgg
KzI1LDcgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCisKIAogLy8gVGhp
cyBzYW1wbGUgc2hvd3MgaG93IHRvIHVzZSBHb29nbGUgVGVzdCBsaXN0ZW5lciBBUEkgdG8gaW1w
bGVtZW50CiAvLyBhbiBhbHRlcm5hdGl2ZSBjb25zb2xlIG91dHB1dCBhbmQgaG93IHRvIHVzZSB0
aGUgVW5pdFRlc3QgcmVmbGVjdGlvbiBBUEkKQEAgLTM0LDcgKzMzLDcgQEAKIAogI2luY2x1ZGUg
PHN0ZGlvLmg+CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCiAKIHVzaW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lcjsKIHVzaW5n
IDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7CkBAIC00NCw5ICs0Myw3IEBAIHVzaW5nIDo6dGVz
dGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzOwogdXNpbmcgOjp0ZXN0aW5nOjpUZXN0SW5mbzsKIHVz
aW5nIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ7CiB1c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0
OwotCiBuYW1lc3BhY2UgewotCiAvLyBQcm92aWRlcyBhbHRlcm5hdGl2ZSBvdXRwdXQgbW9kZSB3
aGljaCBwcm9kdWNlcyBtaW5pbWFsIGFtb3VudCBvZgogLy8gaW5mb3JtYXRpb24gYWJvdXQgdGVz
dHMuCiBjbGFzcyBUZXJzZVByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7
CkBAIC02OSw3ICs2Niw3IEBAIGNsYXNzIFRlcnNlUHJpbnRlciA6IHB1YmxpYyBFbXB0eVRlc3RF
dmVudExpc3RlbmVyIHsKICAgICBmZmx1c2goc3Rkb3V0KTsKICAgfQogCi0gIC8vIENhbGxlZCBh
ZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRVNTKCkuCisgIC8vIENhbGxlZCBhZnRl
ciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRUVEKCkgaW52b2NhdGlvbi4KICAgdmlydHVh
bCB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9y
ZXN1bHQpIHsKICAgICBmcHJpbnRmKHN0ZG91dCwKICAgICAgICAgICAgICIlcyBpbiAlczolZFxu
JXNcbiIsCkBAIC0xMDIsNyArOTksNiBAQCBURVNUKEN1c3RvbU91dHB1dFRlc3QsIEZhaWxzKSB7
CiAgIEVYUEVDVF9FUSgxLCAyKQogICAgICAgPDwgIlRoaXMgdGVzdCBmYWlscyBpbiBvcmRlciB0
byBkZW1vbnN0cmF0ZSBhbHRlcm5hdGl2ZSBmYWlsdXJlIG1lc3NhZ2VzIjsKIH0KLQogfSAgLy8g
bmFtZXNwYWNlCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9jb21tb24ucHkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2NvbW1vbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzAzNDdhNzViZGZm
MzE4ODA5Nzc0NTAxNWE1ODAzNzY0YWQ3NDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9jb21tb24ucHkKQEAgLTAsMCArMSw4MyBAQAorIyBDb3B5
cmlnaHQgMjAxMyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworIiIiU2hhcmVkIHV0aWxpdGllcyBmb3Igd3JpdGluZyBzY3JpcHRzIGZvciBHb29n
bGUgVGVzdC9Nb2NrLiIiIgorCitfX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9u
ZyBXYW4pJworCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCisKKworIyBNYXRjaGVzIHRoZSBsaW5l
IGZyb20gJ3N2biBpbmZvIC4nIG91dHB1dCB0aGF0IGRlc2NyaWJlcyB3aGF0IFNWTgorIyBwYXRo
IHRoZSBjdXJyZW50IGxvY2FsIGRpcmVjdG9yeSBjb3JyZXNwb25kcyB0by4gIEZvciBleGFtcGxl
LCBpbgorIyBhIGdvb2dsZXRlc3QgU1ZOIHdvcmtzcGFjZSdzIHRydW5rL3Rlc3QgZGlyZWN0b3J5
LCB0aGUgb3V0cHV0IHdpbGwgYmU6CisjCisjIFVSTDogaHR0cHM6Ly9nb29nbGV0ZXN0Lmdvb2ds
ZWNvZGUuY29tL3N2bi90cnVuay90ZXN0CitfU1ZOX0lORk9fVVJMX1JFID0gcmUuY29tcGlsZShy
J15VUkw6IGh0dHBzOi8vKFx3KylcLmdvb2dsZWNvZGVcLmNvbS9zdm4oLiopJykKKworCitkZWYg
R2V0Q29tbWFuZE91dHB1dChjb21tYW5kKToKKyAgIiIiUnVucyB0aGUgc2hlbGwgY29tbWFuZCBh
bmQgcmV0dXJucyBpdHMgc3Rkb3V0IGFzIGEgbGlzdCBvZiBsaW5lcy4iIiIKKworICBmID0gb3Mu
cG9wZW4oY29tbWFuZCwgJ3InKQorICBsaW5lcyA9IFtsaW5lLnN0cmlwKCkgZm9yIGxpbmUgaW4g
Zi5yZWFkbGluZXMoKV0KKyAgZi5jbG9zZSgpCisgIHJldHVybiBsaW5lcworCisKK2RlZiBHZXRT
dm5JbmZvKCk6CisgICIiIlJldHVybnMgdGhlIHByb2plY3QgbmFtZSBhbmQgdGhlIGN1cnJlbnQg
U1ZOIHdvcmtzcGFjZSdzIHJvb3QgcGF0aC4iIiIKKworICBmb3IgbGluZSBpbiBHZXRDb21tYW5k
T3V0cHV0KCdzdm4gaW5mbyAuJyk6CisgICAgbSA9IF9TVk5fSU5GT19VUkxfUkUubWF0Y2gobGlu
ZSkKKyAgICBpZiBtOgorICAgICAgcHJvamVjdCA9IG0uZ3JvdXAoMSkgICMgZ29vZ2xldGVzdCBv
ciBnb29nbGVtb2NrCisgICAgICByZWxfcGF0aCA9IG0uZ3JvdXAoMikKKyAgICAgIHJvb3QgPSBv
cy5wYXRoLnJlYWxwYXRoKHJlbF9wYXRoLmNvdW50KCcvJykgKiAnLi4vJykKKyAgICAgIHJldHVy
biBwcm9qZWN0LCByb290CisKKyAgcmV0dXJuIE5vbmUsIE5vbmUKKworCitkZWYgR2V0U3ZuVHJ1
bmsoKToKKyAgIiIiUmV0dXJucyB0aGUgY3VycmVudCBTVk4gd29ya3NwYWNlJ3MgdHJ1bmsgcm9v
dCBwYXRoLiIiIgorCisgIF8sIHJvb3QgPSBHZXRTdm5JbmZvKCkKKyAgcmV0dXJuIHJvb3QgKyAn
L3RydW5rJyBpZiByb290IGVsc2UgTm9uZQorCisKK2RlZiBJc0luR1Rlc3RTdm4oKToKKyAgcHJv
amVjdCwgXyA9IEdldFN2bkluZm8oKQorICByZXR1cm4gcHJvamVjdCA9PSAnZ29vZ2xldGVzdCcK
KworCitkZWYgSXNJbkdNb2NrU3ZuKCk6CisgIHByb2plY3QsIF8gPSBHZXRTdm5JbmZvKCkKKyAg
cmV0dXJuIHByb2plY3QgPT0gJ2dvb2dsZW1vY2snCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zY3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zY3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMucHkKaW5kZXggMTQ4NDQ0Y2E3MTFiMWVk
YWFhZmVhOGQ3ODI2ZDNjZmQ0YzAxZGUwYi4uZDBkZDQ2NGZlOGI1OWM1NDEwYTNkMWI4NWRiNDc5
NWJiZDAzMWQ4OSAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9m
dXNlX2d0ZXN0X2ZpbGVzLnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMv
ZnVzZV9ndGVzdF9maWxlcy5weQpAQCAtNTIsNyArNTIsNyBAQCBFWEFNUExFUwogVGhpcyB0b29s
IGlzIGV4cGVyaW1lbnRhbC4gIEluIHBhcnRpY3VsYXIsIGl0IGFzc3VtZXMgdGhhdCB0aGVyZSBp
cyBubwogY29uZGl0aW9uYWwgaW5jbHVzaW9uIG9mIEdvb2dsZSBUZXN0IGhlYWRlcnMuICBQbGVh
c2UgcmVwb3J0IGFueQogcHJvYmxlbXMgdG8gZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91
cHMuY29tLiAgWW91IGNhbiByZWFkCi1odHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVz
dC93aWtpL0dvb2dsZVRlc3RBZHZhbmNlZEd1aWRlIGZvcgoraHR0cHM6Ly9naXRodWIuY29tL2dv
b2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2dsZXRlc3QvZG9jcy9hZHZhbmNlZC5tZCBm
b3IKIG1vcmUgaW5mb3JtYXRpb24uCiAiIiIKIApAQCAtNjAsMTUgKzYwLDE4IEBAIF9fYXV0aG9y
X18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCiAKIGltcG9ydCBvcwogaW1wb3J0
IHJlCi1pbXBvcnQgc2V0cwordHJ5OgorICBmcm9tIHNldHMgaW1wb3J0IFNldCBhcyBzZXQgICMg
Rm9yIFB5dGhvbiAyLjMgY29tcGF0aWJpbGl0eQorZXhjZXB0IEltcG9ydEVycm9yOgorICBwYXNz
CiBpbXBvcnQgc3lzCiAKICMgV2UgYXNzdW1lIHRoYXQgdGhpcyBmaWxlIGlzIGluIHRoZSBzY3Jp
cHRzLyBkaXJlY3RvcnkgaW4gdGhlIEdvb2dsZQogIyBUZXN0IHJvb3QgZGlyZWN0b3J5LgogREVG
QVVMVF9HVEVTVF9ST09UX0RJUiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxl
X18pLCAnLi4nKQogCi0jIFJlZ2V4IGZvciBtYXRjaGluZyAnI2luY2x1ZGUgPGd0ZXN0Ly4uLj4n
LgotSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VYID0gcmUuY29tcGlsZShyJ15ccyojXHMqaW5jbHVk
ZVxzKjwoZ3Rlc3QvLispPicpCisjIFJlZ2V4IGZvciBtYXRjaGluZyAnI2luY2x1ZGUgImd0ZXN0
Ly4uLiInLgorSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VYID0gcmUuY29tcGlsZShyJ15ccyojXHMq
aW5jbHVkZVxzKiIoZ3Rlc3QvLispIicpCiAKICMgUmVnZXggZm9yIG1hdGNoaW5nICcjaW5jbHVk
ZSAic3JjLy4uLiInLgogSU5DTFVERV9TUkNfRklMRV9SRUdFWCA9IHJlLmNvbXBpbGUocideXHMq
I1xzKmluY2x1ZGVccyoiKHNyYy8uKykiJykKQEAgLTkwLDEwICs5MywxMCBAQCBkZWYgVmVyaWZ5
RmlsZUV4aXN0cyhkaXJlY3RvcnksIHJlbGF0aXZlX3BhdGgpOgogICAiIiIKIAogICBpZiBub3Qg
b3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGRpcmVjdG9yeSwgcmVsYXRpdmVfcGF0aCkpOgot
ICAgIHByaW50ICdFUlJPUjogQ2Fubm90IGZpbmQgJXMgaW4gZGlyZWN0b3J5ICVzLicgJSAocmVs
YXRpdmVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpcmVjdG9yeSkKLSAgICBwcmludCAoJ1BsZWFzZSBlaXRoZXIgc3BlY2lmeSBh
IHZhbGlkIHByb2plY3Qgcm9vdCBkaXJlY3RvcnkgJwotICAgICAgICAgICAnb3Igb21pdCBpdCBv
biB0aGUgY29tbWFuZCBsaW5lLicpCisgICAgcHJpbnQoJ0VSUk9SOiBDYW5ub3QgZmluZCAlcyBp
biBkaXJlY3RvcnkgJXMuJyAlIChyZWxhdGl2ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5KSkKKyAgICBwcmludCgn
UGxlYXNlIGVpdGhlciBzcGVjaWZ5IGEgdmFsaWQgcHJvamVjdCByb290IGRpcmVjdG9yeSAnCisg
ICAgICAgICAgJ29yIG9taXQgaXQgb24gdGhlIGNvbW1hbmQgbGluZS4nKQogICAgIHN5cy5leGl0
KDEpCiAKIApAQCAtMTE5LDExICsxMjIsMTEgQEAgZGVmIFZlcmlmeU91dHB1dEZpbGUob3V0cHV0
X2RpciwgcmVsYXRpdmVfcGF0aCk6CiAgICAgIyBUT0RPKHdhbkBnb29nbGUuY29tKTogVGhlIGZv
bGxvd2luZyB1c2VyLWludGVyYWN0aW9uIGRvZXNuJ3QKICAgICAjIHdvcmsgd2l0aCBhdXRvbWF0
ZWQgcHJvY2Vzc2VzLiAgV2Ugc2hvdWxkIHByb3ZpZGUgYSB3YXkgZm9yIHRoZQogICAgICMgTWFr
ZWZpbGUgdG8gZm9yY2Ugb3ZlcndyaXRpbmcgdGhlIGZpbGVzLgotICAgIHByaW50ICgnJXMgYWxy
ZWFkeSBleGlzdHMgaW4gZGlyZWN0b3J5ICVzIC0gb3ZlcndyaXRlIGl0PyAoeS9OKSAnICUKLSAg
ICAgICAgICAgKHJlbGF0aXZlX3BhdGgsIG91dHB1dF9kaXIpKQorICAgIHByaW50KCclcyBhbHJl
YWR5IGV4aXN0cyBpbiBkaXJlY3RvcnkgJXMgLSBvdmVyd3JpdGUgaXQ/ICh5L04pICcgJQorICAg
ICAgICAgIChyZWxhdGl2ZV9wYXRoLCBvdXRwdXRfZGlyKSkKICAgICBhbnN3ZXIgPSBzeXMuc3Rk
aW4ucmVhZGxpbmUoKS5zdHJpcCgpCiAgICAgaWYgYW5zd2VyIG5vdCBpbiBbJ3knLCAnWSddOgot
ICAgICAgcHJpbnQgJ0FCT1JURUQuJworICAgICAgcHJpbnQoJ0FCT1JURUQuJykKICAgICAgIHN5
cy5leGl0KDEpCiAKICAgIyBNYWtlcyBzdXJlIHRoZSBkaXJlY3RvcnkgaG9sZGluZyB0aGUgb3V0
cHV0IGZpbGUgZXhpc3RzOyBjcmVhdGVzCkBAIC0xNDYsOCArMTQ5LDggQEAgZGVmIFZhbGlkYXRl
T3V0cHV0RGlyKG91dHB1dF9kaXIpOgogZGVmIEZ1c2VHVGVzdEgoZ3Rlc3Rfcm9vdCwgb3V0cHV0
X2Rpcik6CiAgICIiIlNjYW5zIGZvbGRlciBndGVzdF9yb290IHRvIGdlbmVyYXRlIGd0ZXN0L2d0
ZXN0LmggaW4gb3V0cHV0X2Rpci4iIiIKIAotICBvdXRwdXRfZmlsZSA9IGZpbGUob3MucGF0aC5q
b2luKG91dHB1dF9kaXIsIEdURVNUX0hfT1VUUFVUKSwgJ3cnKQotICBwcm9jZXNzZWRfZmlsZXMg
PSBzZXRzLlNldCgpICAjIEhvbGRzIGFsbCBndGVzdCBoZWFkZXJzIHdlJ3ZlIHByb2Nlc3NlZC4K
KyAgb3V0cHV0X2ZpbGUgPSBvcGVuKG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCBHVEVTVF9IX09V
VFBVVCksICd3JykKKyAgcHJvY2Vzc2VkX2ZpbGVzID0gc2V0KCkgICMgSG9sZHMgYWxsIGd0ZXN0
IGhlYWRlcnMgd2UndmUgcHJvY2Vzc2VkLgogCiAgIGRlZiBQcm9jZXNzRmlsZShndGVzdF9oZWFk
ZXJfcGF0aCk6CiAgICAgIiIiUHJvY2Vzc2VzIHRoZSBnaXZlbiBndGVzdCBoZWFkZXIgZmlsZS4i
IiIKQEAgLTE1OSwxMCArMTYyLDEwIEBAIGRlZiBGdXNlR1Rlc3RIKGd0ZXN0X3Jvb3QsIG91dHB1
dF9kaXIpOgogICAgIHByb2Nlc3NlZF9maWxlcy5hZGQoZ3Rlc3RfaGVhZGVyX3BhdGgpCiAKICAg
ICAjIFJlYWRzIGVhY2ggbGluZSBpbiB0aGUgZ2l2ZW4gZ3Rlc3QgaGVhZGVyLgotICAgIGZvciBs
aW5lIGluIGZpbGUob3MucGF0aC5qb2luKGd0ZXN0X3Jvb3QsIGd0ZXN0X2hlYWRlcl9wYXRoKSwg
J3InKToKKyAgICBmb3IgbGluZSBpbiBvcGVuKG9zLnBhdGguam9pbihndGVzdF9yb290LCBndGVz
dF9oZWFkZXJfcGF0aCksICdyJyk6CiAgICAgICBtID0gSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VY
Lm1hdGNoKGxpbmUpCiAgICAgICBpZiBtOgotICAgICAgICAjIEl0J3MgJyNpbmNsdWRlIDxndGVz
dC8uLi4+JyAtIGxldCdzIHByb2Nlc3MgaXQgcmVjdXJzaXZlbHkuCisgICAgICAgICMgSXQncyAn
I2luY2x1ZGUgImd0ZXN0Ly4uLiInIC0gbGV0J3MgcHJvY2VzcyBpdCByZWN1cnNpdmVseS4KICAg
ICAgICAgUHJvY2Vzc0ZpbGUoJ2luY2x1ZGUvJyArIG0uZ3JvdXAoMSkpCiAgICAgICBlbHNlOgog
ICAgICAgICAjIE90aGVyd2lzZSB3ZSBjb3B5IHRoZSBsaW5lIHVuY2hhbmdlZCB0byB0aGUgb3V0
cHV0IGZpbGUuCkBAIC0xNzUsNyArMTc4LDcgQEAgZGVmIEZ1c2VHVGVzdEgoZ3Rlc3Rfcm9vdCwg
b3V0cHV0X2Rpcik6CiBkZWYgRnVzZUdUZXN0QWxsQ2NUb0ZpbGUoZ3Rlc3Rfcm9vdCwgb3V0cHV0
X2ZpbGUpOgogICAiIiJTY2FucyBmb2xkZXIgZ3Rlc3Rfcm9vdCB0byBnZW5lcmF0ZSBndGVzdC9n
dGVzdC1hbGwuY2MgaW4gb3V0cHV0X2ZpbGUuIiIiCiAKLSAgcHJvY2Vzc2VkX2ZpbGVzID0gc2V0
cy5TZXQoKQorICBwcm9jZXNzZWRfZmlsZXMgPSBzZXQoKQogCiAgIGRlZiBQcm9jZXNzRmlsZShn
dGVzdF9zb3VyY2VfZmlsZSk6CiAgICAgIiIiUHJvY2Vzc2VzIHRoZSBnaXZlbiBndGVzdCBzb3Vy
Y2UgZmlsZS4iIiIKQEAgLTE4NywyMyArMTkwLDIzIEBAIGRlZiBGdXNlR1Rlc3RBbGxDY1RvRmls
ZShndGVzdF9yb290LCBvdXRwdXRfZmlsZSk6CiAgICAgcHJvY2Vzc2VkX2ZpbGVzLmFkZChndGVz
dF9zb3VyY2VfZmlsZSkKIAogICAgICMgUmVhZHMgZWFjaCBsaW5lIGluIHRoZSBnaXZlbiBndGVz
dCBzb3VyY2UgZmlsZS4KLSAgICBmb3IgbGluZSBpbiBmaWxlKG9zLnBhdGguam9pbihndGVzdF9y
b290LCBndGVzdF9zb3VyY2VfZmlsZSksICdyJyk6CisgICAgZm9yIGxpbmUgaW4gb3Blbihvcy5w
YXRoLmpvaW4oZ3Rlc3Rfcm9vdCwgZ3Rlc3Rfc291cmNlX2ZpbGUpLCAncicpOgogICAgICAgbSA9
IElOQ0xVREVfR1RFU1RfRklMRV9SRUdFWC5tYXRjaChsaW5lKQogICAgICAgaWYgbToKICAgICAg
ICAgaWYgJ2luY2x1ZGUvJyArIG0uZ3JvdXAoMSkgPT0gR1RFU1RfU1BJX0hfU0VFRDoKLSAgICAg
ICAgICAjIEl0J3MgJyNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGkuaD4nLiAgVGhpcyBmaWxlIGlz
IG5vdAotICAgICAgICAgICMgI2luY2x1ZGVkIGJ5IDxndGVzdC9ndGVzdC5oPiwgc28gd2UgbmVl
ZCB0byBwcm9jZXNzIGl0LgorICAgICAgICAgICMgSXQncyAnI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LXNwaS5oIicuICBUaGlzIGZpbGUgaXMgbm90CisgICAgICAgICAgIyAjaW5jbHVkZWQgYnkgImd0
ZXN0L2d0ZXN0LmgiLCBzbyB3ZSBuZWVkIHRvIHByb2Nlc3MgaXQuCiAgICAgICAgICAgUHJvY2Vz
c0ZpbGUoR1RFU1RfU1BJX0hfU0VFRCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAjIEl0J3Mg
JyNpbmNsdWRlIDxndGVzdC9mb28uaD4nIHdoZXJlIGZvbyBpcyBub3QgZ3Rlc3Qtc3BpLgotICAg
ICAgICAgICMgV2UgdHJlYXQgaXQgYXMgJyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPicsIGFzIGFs
bCBvdGhlcgorICAgICAgICAgICMgSXQncyAnI2luY2x1ZGUgImd0ZXN0L2Zvby5oIicgd2hlcmUg
Zm9vIGlzIG5vdCBndGVzdC1zcGkuCisgICAgICAgICAgIyBXZSB0cmVhdCBpdCBhcyAnI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiJywgYXMgYWxsIG90aGVyCiAgICAgICAgICAgIyBndGVzdCBoZWFk
ZXJzIGFyZSBiZWluZyBmdXNlZCBpbnRvIGd0ZXN0LmggYW5kIGNhbm5vdCBiZQogICAgICAgICAg
ICMgI2luY2x1ZGVkIGRpcmVjdGx5LgogCi0gICAgICAgICAgIyBUaGVyZSBpcyBubyBuZWVkIHRv
ICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPiBtb3JlIHRoYW4gb25jZS4KKyAgICAgICAgICAjIFRo
ZXJlIGlzIG5vIG5lZWQgdG8gI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiIG1vcmUgdGhhbiBvbmNl
LgogICAgICAgICAgIGlmIG5vdCBHVEVTVF9IX1NFRUQgaW4gcHJvY2Vzc2VkX2ZpbGVzOgogICAg
ICAgICAgICAgcHJvY2Vzc2VkX2ZpbGVzLmFkZChHVEVTVF9IX1NFRUQpCi0gICAgICAgICAgICBv
dXRwdXRfZmlsZS53cml0ZSgnI2luY2x1ZGUgPCVzPlxuJyAlIChHVEVTVF9IX09VVFBVVCwpKQor
ICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoJyNpbmNsdWRlICIlcyJcbicgJSAoR1RFU1Rf
SF9PVVRQVVQsKSkKICAgICAgIGVsc2U6CiAgICAgICAgIG0gPSBJTkNMVURFX1NSQ19GSUxFX1JF
R0VYLm1hdGNoKGxpbmUpCiAgICAgICAgIGlmIG06CkBAIC0yMTgsNyArMjIxLDcgQEAgZGVmIEZ1
c2VHVGVzdEFsbENjVG9GaWxlKGd0ZXN0X3Jvb3QsIG91dHB1dF9maWxlKToKIGRlZiBGdXNlR1Rl
c3RBbGxDYyhndGVzdF9yb290LCBvdXRwdXRfZGlyKToKICAgIiIiU2NhbnMgZm9sZGVyIGd0ZXN0
X3Jvb3QgdG8gZ2VuZXJhdGUgZ3Rlc3QvZ3Rlc3QtYWxsLmNjIGluIG91dHB1dF9kaXIuIiIiCiAK
LSAgb3V0cHV0X2ZpbGUgPSBmaWxlKG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCBHVEVTVF9BTExf
Q0NfT1VUUFVUKSwgJ3cnKQorICBvdXRwdXRfZmlsZSA9IG9wZW4ob3MucGF0aC5qb2luKG91dHB1
dF9kaXIsIEdURVNUX0FMTF9DQ19PVVRQVVQpLCAndycpCiAgIEZ1c2VHVGVzdEFsbENjVG9GaWxl
KGd0ZXN0X3Jvb3QsIG91dHB1dF9maWxlKQogICBvdXRwdXRfZmlsZS5jbG9zZSgpCiAKQEAgLTI0
Miw3ICsyNDUsNyBAQCBkZWYgbWFpbigpOgogICAgICMgZnVzZV9ndGVzdF9maWxlcy5weSBHVEVT
VF9ST09UX0RJUiBPVVRQVVRfRElSCiAgICAgRnVzZUdUZXN0KHN5cy5hcmd2WzFdLCBzeXMuYXJn
dlsyXSkKICAgZWxzZToKLSAgICBwcmludCBfX2RvY19fCisgICAgcHJpbnQoX19kb2NfXykKICAg
ICBzeXMuZXhpdCgxKQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nj
cmlwdHMvZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nj
cmlwdHMvZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weQppbmRleCA4MzA3MTM0YWRhZjRkYTJiZThmYTIz
MzIyOTE1MjBkMzljOTRiYjEyLi5iNDNlZmRmNDFlNWMwMjc0MGY3MmIzNTUzMmJlNWNmMDQ5Nzk0
ODM1IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2dlbl9ndGVz
dF9wcmVkX2ltcGwucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9nZW5f
Z3Rlc3RfcHJlZF9pbXBsLnB5CkBAIC0xMTUsMTAgKzExNSw5IEBAIGRlZiBIZWFkZXJQcmVhbWJs
ZShuKToKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KICNk
ZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KIAotLy8gTWFrZXMg
c3VyZSB0aGlzIGhlYWRlciBpcyBub3QgaW5jbHVkZWQgYmVmb3JlIGd0ZXN0LmguCi0jaWZuZGVm
IEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KLSNlcnJvciBEbyBub3QgaW5jbHVkZSBndGVz
dF9wcmVkX2ltcGwuaCBkaXJlY3RseS4gIEluY2x1ZGUgZ3Rlc3QuaCBpbnN0ZWFkLgotI2VuZGlm
ICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0hfCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKKworbmFtZXNwYWNlIHRlc3RpbmcgewogCiAvLyBUaGlzIGhlYWRlciBpbXBsZW1lbnRzIGEg
ZmFtaWx5IG9mIGdlbmVyaWMgcHJlZGljYXRlIGFzc2VydGlvbgogLy8gbWFjcm9zOgpAQCAtMjM4
LDI3ICsyMzcsMjUgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQlKG4pc0hlbHBlcihjb25z
dCBjaGFyKiBwcmVkX3RleHQiIiIgJSBERUZTCiAgIGltcGwgKz0gIiIiKSB7CiAgIGlmIChwcmVk
KCUodnMpcykpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7CiAi
IiIgJSBERUZTCiAKLSAgaW1wbCArPSAnICBtc2cgPDwgcHJlZF90ZXh0IDw8ICIoIicKKyAgaW1w
bCArPSAnICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCInCiAK
ICAgaW1wbCArPSBJdGVyKG4sICIiIgotICAgICAgPDwgZSVzIiIiLCBzZXA9JyA8PCAiLCAiJykK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlJXMiIiIsIHNlcD0nIDw8ICIsICInKQog
CiAgIGltcGwgKz0gJyA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIicKIAogICBpbXBs
ICs9IEl0ZXIobiwgIiIiCi0gICAgICA8PCAiXFxuIiA8PCBlJXMgPDwgIiBldmFsdWF0ZXMgdG8g
IiA8PCB2JXMiIiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxcbiIgPDwgZSVz
IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdiVzIiIiKQogCiAgIGltcGwgKz0gIiIiOwotICByZXR1
cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogCiAvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1w
bGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEX0ZPUk1BVCUobilzLgogLy8gRG9uJ3QgdXNl
IHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVCUobilzXyhwcmVk
X2Zvcm1hdCwgJSh2cylzLCBvbl9mYWlsdXJlKVxcCi0gIEdURVNUX0FTU0VSVF8ocHJlZF9mb3Jt
YXQoJSh2dHMpcywgJSh2cylzKSxcXAorICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCUodnRz
KXMsICUodnMpcyksIFxcCiAgICAgICAgICAgICAgICAgb25fZmFpbHVyZSkKIAogLy8gSW50ZXJu
YWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRCUobilzLiAgRG9u
J3QgdXNlCkBAIC0yOTcsMTYgKzI5NCwxNyBAQCBkZWYgSGVhZGVyUG9zdGFtYmxlKCk6CiAKICAg
cmV0dXJuICIiIgogCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCiAjZW5kaWYgIC8vIEdURVNU
X0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJFRF9JTVBMX0hfCiAiIiIKIAogCiBkZWYgR2VuZXJhdGVG
aWxlKHBhdGgsIGNvbnRlbnQpOgotICAiIiJHaXZlbiBhIGZpbGUgcGF0aCBhbmQgYSBjb250ZW50
IHN0cmluZywgb3ZlcndyaXRlcyBpdCB3aXRoIHRoZQotICBnaXZlbiBjb250ZW50LiIiIgotCisg
ICIiIkdpdmVuIGEgZmlsZSBwYXRoIGFuZCBhIGNvbnRlbnQgc3RyaW5nCisgICAgIG92ZXJ3cml0
ZXMgaXQgd2l0aCB0aGUgZ2l2ZW4gY29udGVudC4KKyAgIiIiCiAgIHByaW50ICdVcGRhdGluZyBm
aWxlICVzIC4gLiAuJyAlIHBhdGgKLQogICBmID0gZmlsZShwYXRoLCAndysnKQogICBwcmludCA+
PmYsIGNvbnRlbnQsCiAgIGYuY2xvc2UoKQpAQCAtMzE2LDggKzMxNCw4IEBAIGRlZiBHZW5lcmF0
ZUZpbGUocGF0aCwgY29udGVudCk6CiAKIGRlZiBHZW5lcmF0ZUhlYWRlcihuKToKICAgIiIiR2l2
ZW4gdGhlIG1heGltdW0gYXJpdHkgbiwgdXBkYXRlcyB0aGUgaGVhZGVyIGZpbGUgdGhhdCBpbXBs
ZW1lbnRzCi0gIHRoZSBwcmVkaWNhdGUgYXNzZXJ0aW9ucy4iIiIKLQorICB0aGUgcHJlZGljYXRl
IGFzc2VydGlvbnMuCisgICIiIgogICBHZW5lcmF0ZUZpbGUoSEVBREVSLAogICAgICAgICAgICAg
ICAgSGVhZGVyUHJlYW1ibGUobikKICAgICAgICAgICAgICAgICsgJycuam9pbihbSW1wbGVtZW50
YXRpb25Gb3JBcml0eShpKSBmb3IgaSBpbiBPbmVUbyhuKV0pCkBAIC0zODYsOCArMzg0LDggQEAg
ZGVmIFVuaXRUZXN0UHJlYW1ibGUoKToKIAogI2luY2x1ZGUgPGlvc3RyZWFtPgogCi0jaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGkuaD4KKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgogCiAvLyBBIHVz
ZXItZGVmaW5lZCBkYXRhIHR5cGUuCiBzdHJ1Y3QgQm9vbCB7CkBAIC00NzgsMTUgKzQ3NiwxNCBA
QCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1bmN0aW9uJShuKXMoIiIiICUg
REVGUwogICBpZiAoUHJlZEZ1bmN0aW9uJShuKXMoJSh2cylzKSkKICAgICByZXR1cm4gdGVzdGlu
Zzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIHRlc3Rpbmc6Ok1lc3NhZ2UgbXNnOwotICBtc2cg
PDwgIiIiICUgREVGUworICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAg
ICA8PCAiIiIgJSBERUZTCiAKICAgdGVzdHMgKz0gSXRlcihuLCAnZSVzJywgc2VwPScgPDwgIiAr
ICIgPDwgJykKIAogICB0ZXN0cyArPSAiIiIKICAgICAgIDw8ICIgaXMgZXhwZWN0ZWQgdG8gYmUg
cG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgogICAgICAgPDwgJSh2X3N1bSlzIDw8ICIuIjsK
LSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNnKTsKIH0KICIiIiAlIERFRlMK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9ndGVzdC1jb25m
aWcuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2d0ZXN0LWNvbmZpZy5pbgpp
bmRleCA5YzcyNjM4NTRiOWY4NjNiNjE4YzcwOGRlMWVmZTBlOGIxZjcyODBhLi43ODBmODQzMmVm
Y2MxYWVlYWFhZDA3MDYwODZkM2ZmNjQxMjg1YjY4IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zY3JpcHRzL2d0ZXN0LWNvbmZpZy5pbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zY3JpcHRzL2d0ZXN0LWNvbmZpZy5pbgpAQCAtMjA5LDcgKzIwOSw3IEBAIGlmIHRl
c3QgIiR7dGhpc19iaW5kaXJ9IiA9ICIke3RoaXNfYmluZGlyJSR7YmluZGlyfX0iOyB0aGVuCiAg
ICMgVGhlIHBhdGggdG8gdGhlIHNjcmlwdCBkb2Vzbid0IGVuZCBpbiB0aGUgYmluZGlyIHNlcXVl
bmNlIGZyb20gQXV0b2NvbmYsCiAgICMgYXNzdW1lIHRoYXQgd2UgYXJlIGluIGEgYnVpbGQgdHJl
ZS4KICAgYnVpbGRfZGlyPWBkaXJuYW1lICR7dGhpc19iaW5kaXJ9YAotICBzcmNfZGlyPWBjZCAk
e3RoaXNfYmluZGlyfS9AdG9wX3NyY2RpckA7IHB3ZCAtUGAKKyAgc3JjX2Rpcj1gY2QgJHt0aGlz
X2JpbmRpcn07IGNkIEB0b3Bfc3JjZGlyQDsgcHdkIC1QYAogCiAgICMgVE9ETyhjaGFuZGxlcmNA
Z29vZ2xlLmNvbSk6IFRoaXMgaXMgYSBkYW5nZXJvdXMgZGVwZW5kZW5jeSBvbiBsaWJ0b29sLCB3
ZQogICAjIHNob3VsZCB3b3JrIHRvIHJlbW92ZSBpdCwgYW5kL29yIHJlbW92ZSBsaWJ0b29sIGFs
dG9nZXRoZXIsIHJlcGxhY2luZyBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2NyaXB0cy9wdW1wLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9wdW1w
LnB5CmluZGV4IGYxNWMxYjZjZWI0YjhiMWJiMGJmNGU4M2UzZWE5M2IzOGM3ODU4MDAuLjVlZmI2
NTNjMjA3ZDFmMWMyYWVjYzRkNjkwYmY3MzJlM2MxZDcxYWIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcHVtcC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zY3JpcHRzL3B1bXAucHkKQEAgLTI5LDcgKzI5LDcgQEAKICMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKLSIiInB1bXAgdjAuMSAtIFByZXR0eSBVc2VmdWwgZm9yIE1ldGEgUHJv
Z3JhbW1pbmcuCisiIiJwdW1wIHYwLjIuMCAtIFByZXR0eSBVc2VmdWwgZm9yIE1ldGEgUHJvZ3Jh
bW1pbmcuCiAKIEEgdG9vbCBmb3IgcHJlcHJvY2Vzc29yIG1ldGEgcHJvZ3JhbW1pbmcuICBVc2Vm
dWwgZm9yIGdlbmVyYXRpbmcKIHJlcGV0aXRpdmUgYm9pbGVycGxhdGUgY29kZS4gIEVzcGVjaWFs
bHkgdXNlZnVsIGZvciB3cml0aW5nIEMrKwpAQCAtNzgsNyArNzgsNiBAQCBUT0tFTl9UQUJMRSA9
IFsKICAgICAocmUuY29tcGlsZShyJ1wkcmFuZ2VccysnKSwgJyRyYW5nZScpLAogICAgIChyZS5j
b21waWxlKHInXCRbX0EtWmEtel1cdyonKSwgJyRpZCcpLAogICAgIChyZS5jb21waWxlKHInXCRc
KFwkXCknKSwgJyQoJCknKSwKLSAgICAocmUuY29tcGlsZShyJ1wkXCQuKicpLCAnJCQnKSwKICAg
ICAocmUuY29tcGlsZShyJ1wkJyksICckJyksCiAgICAgKHJlLmNvbXBpbGUocidcW1xbXG4/Jyks
ICdbWycpLAogICAgIChyZS5jb21waWxlKHInXF1cXVxuPycpLCAnXV0nKSwKQEAgLTIyNCw2ICsy
MjMsMTcgQEAgZGVmIFN1YlN0cmluZyhsaW5lcywgc3RhcnQsIGVuZCk6CiAgIHJldHVybiAnJy5q
b2luKHJlc3VsdF9saW5lcykKIAogCitkZWYgU3RyaXBNZXRhQ29tbWVudHMoc3RyKToKKyAgIiIi
U3RyaXAgbWV0YSBjb21tZW50cyBmcm9tIGVhY2ggbGluZSBpbiB0aGUgZ2l2ZW4gc3RyaW5nLiIi
IgorCisgICMgRmlyc3QsIGNvbXBsZXRlbHkgcmVtb3ZlIGxpbmVzIGNvbnRhaW5pbmcgbm90aGlu
ZyBidXQgYSBtZXRhCisgICMgY29tbWVudCwgaW5jbHVkaW5nIHRoZSB0cmFpbGluZyBcbi4KKyAg
c3RyID0gcmUuc3ViKHInXlxzKlwkXCQuKlxuJywgJycsIHN0cikKKworICAjIFRoZW4sIHJlbW92
ZSBtZXRhIGNvbW1lbnRzIGZyb20gY29udGVudGZ1bCBsaW5lcy4KKyAgcmV0dXJuIHJlLnN1Yihy
J1xzKlwkXCQuKicsICcnLCBzdHIpCisKKwogZGVmIE1ha2VUb2tlbihsaW5lcywgc3RhcnQsIGVu
ZCwgdG9rZW5fdHlwZSk6CiAgICIiIkNyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgVG9rZW4uIiIi
CiAKQEAgLTMxMSwxMSArMzIxLDcgQEAgZGVmIFRva2VuaXplTGluZXMobGluZXMsIHBvcyk6CiAg
ICAgICBwcmV2X3Rva2VuID0gTWFrZVRva2VuKGxpbmVzLCBwb3MsIGZvdW5kLnN0YXJ0LCAnY29k
ZScpCiAgICAgICBwcmV2X3Rva2VuX3JzdHJpcHBlZCA9IFJTdHJpcE5ld0xpbmVGcm9tVG9rZW4o
cHJldl90b2tlbikKIAotICAgIGlmIGZvdW5kLnRva2VuX3R5cGUgPT0gJyQkJzogICMgQSBtZXRh
IGNvbW1lbnQuCi0gICAgICBpZiBwcmV2X3Rva2VuX3JzdHJpcHBlZDoKLSAgICAgICAgeWllbGQg
cHJldl90b2tlbl9yc3RyaXBwZWQKLSAgICAgIHBvcyA9IEN1cnNvcihmb3VuZC5lbmQubGluZSAr
IDEsIDApCi0gICAgZWxpZiBmb3VuZC50b2tlbl90eXBlID09ICckdmFyJzoKKyAgICBpZiBmb3Vu
ZC50b2tlbl90eXBlID09ICckdmFyJzoKICAgICAgIGlmIHByZXZfdG9rZW5fcnN0cmlwcGVkOgog
ICAgICAgICB5aWVsZCBwcmV2X3Rva2VuX3JzdHJpcHBlZAogICAgICAgeWllbGQgZm91bmQKQEAg
LTM3NCw4ICszODAsMTEgQEAgZGVmIFRva2VuaXplTGluZXMobGluZXMsIHBvcyk6CiAKIAogZGVm
IFRva2VuaXplKHMpOgotICBsaW5lcyA9IHMuc3BsaXRsaW5lcyhUcnVlKQotICByZXR1cm4gVG9r
ZW5pemVMaW5lcyhsaW5lcywgQ3Vyc29yKDAsIDApKQorICAiIiJBIGdlbmVyYXRvciB0aGF0IHlp
ZWxkcyB0aGUgdG9rZW5zIGluIHRoZSBnaXZlbiBzdHJpbmcuIiIiCisgIGlmIHMgIT0gJyc6Cisg
ICAgbGluZXMgPSBzLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICBmb3IgdG9rZW4gaW4gVG9rZW5pemVM
aW5lcyhsaW5lcywgQ3Vyc29yKDAsIDApKToKKyAgICAgIHlpZWxkIHRva2VuCiAKIAogY2xhc3Mg
Q29kZU5vZGU6CkBAIC01NjUsMTEgKzU3NCw5IEBAIGRlZiBQYXJzZUNvZGVOb2RlKHRva2Vucyk6
CiAgIHJldHVybiBDb2RlTm9kZShhdG9taWNfY29kZV9saXN0KQogCiAKLWRlZiBDb252ZXJ0KGZp
bGVfcGF0aCk6Ci0gIHMgPSBmaWxlKGZpbGVfcGF0aCwgJ3InKS5yZWFkKCkKLSAgdG9rZW5zID0g
W10KLSAgZm9yIHRva2VuIGluIFRva2VuaXplKHMpOgotICAgIHRva2Vucy5hcHBlbmQodG9rZW4p
CitkZWYgUGFyc2VUb0FTVChwdW1wX3NyY190ZXh0KToKKyAgIiIiQ29udmVydCB0aGUgZ2l2ZW4g
UHVtcCBzb3VyY2UgdGV4dCBpbnRvIGFuIEFTVC4iIiIKKyAgdG9rZW5zID0gbGlzdChUb2tlbml6
ZShwdW1wX3NyY190ZXh0KSkKICAgY29kZV9ub2RlID0gUGFyc2VDb2RlTm9kZSh0b2tlbnMpCiAg
IHJldHVybiBjb2RlX25vZGUKIApAQCAtNjk3LDE0ICs3MDQsMTQgQEAgZGVmIFJ1bkNvZGUoZW52
LCBjb2RlX25vZGUsIG91dHB1dCk6CiAgICAgUnVuQXRvbWljQ29kZShlbnYsIGF0b21pY19jb2Rl
LCBvdXRwdXQpCiAKIAotZGVmIElzQ29tbWVudChjdXJfbGluZSk6CitkZWYgSXNTaW5nbGVMaW5l
Q29tbWVudChjdXJfbGluZSk6CiAgIHJldHVybiAnLy8nIGluIGN1cl9saW5lCiAKIAotZGVmIElz
SW5QcmVwcm9jZXNzb3JEaXJldmF0aXZlKHByZXZfbGluZXMsIGN1cl9saW5lKToKK2RlZiBJc0lu
UHJlcHJvY2Vzc29yRGlyZWN0aXZlKHByZXZfbGluZXMsIGN1cl9saW5lKToKICAgaWYgY3VyX2xp
bmUubHN0cmlwKCkuc3RhcnRzd2l0aCgnIycpOgogICAgIHJldHVybiBUcnVlCi0gIHJldHVybiBw
cmV2X2xpbmVzICE9IFtdIGFuZCBwcmV2X2xpbmVzWy0xXS5lbmRzd2l0aCgnXFwnKQorICByZXR1
cm4gcHJldl9saW5lcyBhbmQgcHJldl9saW5lc1stMV0uZW5kc3dpdGgoJ1xcJykKIAogCiBkZWYg
V3JhcENvbW1lbnQobGluZSwgb3V0cHV0KToKQEAgLTc2MSw3ICs3NjgsNyBAQCBkZWYgV3JhcENv
ZGUobGluZSwgbGluZV9jb25jYXQsIG91dHB1dCk6CiAgICAgb3V0cHV0LmFwcGVuZChwcmVmaXgg
KyBjdXJfbGluZS5zdHJpcCgpKQogCiAKLWRlZiBXcmFwUHJlcHJvY2Vzc29yRGlyZXZhdGl2ZShs
aW5lLCBvdXRwdXQpOgorZGVmIFdyYXBQcmVwcm9jZXNzb3JEaXJlY3RpdmUobGluZSwgb3V0cHV0
KToKICAgV3JhcENvZGUobGluZSwgJyBcXCcsIG91dHB1dCkKIAogCkBAIC03NjksMjkgKzc3Niwz
NyBAQCBkZWYgV3JhcFBsYWluQ29kZShsaW5lLCBvdXRwdXQpOgogICBXcmFwQ29kZShsaW5lLCAn
Jywgb3V0cHV0KQogCiAKLWRlZiBJc0hlYWRlckd1YXJkT3JJbmNsdWRlKGxpbmUpOgorZGVmIElz
TXVsdGlMaW5lSVdZVVByYWdtYShsaW5lKToKKyAgcmV0dXJuIHJlLnNlYXJjaChyJy9cKiBJV1lV
IHByYWdtYTogJywgbGluZSkKKworCitkZWYgSXNIZWFkZXJHdWFyZEluY2x1ZGVPck9uZUxpbmVJ
V1lVUHJhZ21hKGxpbmUpOgogICByZXR1cm4gKHJlLm1hdGNoKHInXiMoaWZuZGVmfGRlZmluZXxl
bmRpZlxzKi8vKVxzKltcd19dK1xzKiQnLCBsaW5lKSBvcgotICAgICAgICAgIHJlLm1hdGNoKHIn
XiNpbmNsdWRlXHMnLCBsaW5lKSkKKyAgICAgICAgICByZS5tYXRjaChyJ14jaW5jbHVkZVxzJywg
bGluZSkgb3IKKyAgICAgICAgICAjIERvbid0IGJyZWFrIElXWVUgcHJhZ21hcywgZWl0aGVyOyB0
aGF0IGNhdXNlcyBpd3l1LnB5IHByb2JsZW1zLgorICAgICAgICAgIHJlLnNlYXJjaChyJy8vIElX
WVUgcHJhZ21hOiAnLCBsaW5lKSkKIAogCiBkZWYgV3JhcExvbmdMaW5lKGxpbmUsIG91dHB1dCk6
CiAgIGxpbmUgPSBsaW5lLnJzdHJpcCgpCiAgIGlmIGxlbihsaW5lKSA8PSA4MDoKICAgICBvdXRw
dXQuYXBwZW5kKGxpbmUpCi0gIGVsaWYgSXNDb21tZW50KGxpbmUpOgotICAgIGlmIElzSGVhZGVy
R3VhcmRPckluY2x1ZGUobGluZSk6Ci0gICAgICAjIFRoZSBzdHlsZSBndWlkZSBtYWRlIGFuIGV4
Y2VwdGlvbiB0byBhbGxvdyBsb25nIGhlYWRlciBndWFyZCBsaW5lcwotICAgICAgIyBhbmQgaW5j
bHVkZXMuCisgIGVsaWYgSXNTaW5nbGVMaW5lQ29tbWVudChsaW5lKToKKyAgICBpZiBJc0hlYWRl
ckd1YXJkSW5jbHVkZU9yT25lTGluZUlXWVVQcmFnbWEobGluZSk6CisgICAgICAjIFRoZSBzdHls
ZSBndWlkZSBtYWRlIGFuIGV4Y2VwdGlvbiB0byBhbGxvdyBsb25nIGhlYWRlciBndWFyZCBsaW5l
cywKKyAgICAgICMgaW5jbHVkZXMgYW5kIElXWVUgcHJhZ21hcy4KICAgICAgIG91dHB1dC5hcHBl
bmQobGluZSkKICAgICBlbHNlOgogICAgICAgV3JhcENvbW1lbnQobGluZSwgb3V0cHV0KQotICBl
bGlmIElzSW5QcmVwcm9jZXNzb3JEaXJldmF0aXZlKG91dHB1dCwgbGluZSk6Ci0gICAgaWYgSXNI
ZWFkZXJHdWFyZE9ySW5jbHVkZShsaW5lKToKLSAgICAgICMgVGhlIHN0eWxlIGd1aWRlIG1hZGUg
YW4gZXhjZXB0aW9uIHRvIGFsbG93IGxvbmcgaGVhZGVyIGd1YXJkIGxpbmVzCi0gICAgICAjIGFu
ZCBpbmNsdWRlcy4KKyAgZWxpZiBJc0luUHJlcHJvY2Vzc29yRGlyZWN0aXZlKG91dHB1dCwgbGlu
ZSk6CisgICAgaWYgSXNIZWFkZXJHdWFyZEluY2x1ZGVPck9uZUxpbmVJV1lVUHJhZ21hKGxpbmUp
OgorICAgICAgIyBUaGUgc3R5bGUgZ3VpZGUgbWFkZSBhbiBleGNlcHRpb24gdG8gYWxsb3cgbG9u
ZyBoZWFkZXIgZ3VhcmQgbGluZXMsCisgICAgICAjIGluY2x1ZGVzIGFuZCBJV1lVIHByYWdtYXMu
CiAgICAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCiAgICAgZWxzZToKLSAgICAgIFdyYXBQcmVwcm9j
ZXNzb3JEaXJldmF0aXZlKGxpbmUsIG91dHB1dCkKKyAgICAgIFdyYXBQcmVwcm9jZXNzb3JEaXJl
Y3RpdmUobGluZSwgb3V0cHV0KQorICBlbGlmIElzTXVsdGlMaW5lSVdZVVByYWdtYShsaW5lKToK
KyAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCiAgIGVsc2U6CiAgICAgV3JhcFBsYWluQ29kZShsaW5l
LCBvdXRwdXQpCiAKQEAgLTgwNSwxNiArODIwLDIxIEBAIGRlZiBCZWF1dGlmeUNvZGUoc3RyaW5n
KToKICAgcmV0dXJuICdcbicuam9pbihvdXRwdXQyKSArICdcbicKIAogCitkZWYgQ29udmVydEZy
b21QdW1wU291cmNlKHNyY190ZXh0KToKKyAgIiIiUmV0dXJuIHRoZSB0ZXh0IGdlbmVyYXRlZCBm
cm9tIHRoZSBnaXZlbiBQdW1wIHNvdXJjZSB0ZXh0LiIiIgorICBhc3QgPSBQYXJzZVRvQVNUKFN0
cmlwTWV0YUNvbW1lbnRzKHNyY190ZXh0KSkKKyAgb3V0cHV0ID0gT3V0cHV0KCkKKyAgUnVuQ29k
ZShFbnYoKSwgYXN0LCBvdXRwdXQpCisgIHJldHVybiBCZWF1dGlmeUNvZGUob3V0cHV0LnN0cmlu
ZykKKworCiBkZWYgbWFpbihhcmd2KToKICAgaWYgbGVuKGFyZ3YpID09IDE6CiAgICAgcHJpbnQg
X19kb2NfXwogICAgIHN5cy5leGl0KDEpCiAKICAgZmlsZV9wYXRoID0gYXJndlstMV0KLSAgYXN0
ID0gQ29udmVydChmaWxlX3BhdGgpCi0gIG91dHB1dCA9IE91dHB1dCgpCi0gIFJ1bkNvZGUoRW52
KCksIGFzdCwgb3V0cHV0KQotICBvdXRwdXRfc3RyID0gQmVhdXRpZnlDb2RlKG91dHB1dC5zdHJp
bmcpCisgIG91dHB1dF9zdHIgPSBDb252ZXJ0RnJvbVB1bXBTb3VyY2UoZmlsZShmaWxlX3BhdGgs
ICdyJykucmVhZCgpKQogICBpZiBmaWxlX3BhdGguZW5kc3dpdGgoJy5wdW1wJyk6CiAgICAgb3V0
cHV0X2ZpbGVfcGF0aCA9IGZpbGVfcGF0aFs6LTVdCiAgIGVsc2U6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3JlbGVhc2VfZG9jcy5weSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcmVsZWFzZV9kb2NzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyOTEzNDdm
Njc0YWZkN2FmODQ5NjE1YTc1YjEzOGQ1MjkzZjljZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3JlbGVhc2VfZG9jcy5weQpAQCAtMCwwICsxLDE1
OCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJTY3JpcHQg
Zm9yIGJyYW5jaGluZyBHb29nbGUgVGVzdC9Nb2NrIHdpa2kgcGFnZXMgZm9yIGEgbmV3IHZlcnNp
b24uCisKK1NZTk9QU0lTCisgICAgICAgcmVsZWFzZV9kb2NzLnB5IE5FV19SRUxFQVNFX1ZFUlNJ
T04KKworICAgICAgIEdvb2dsZSBUZXN0IGFuZCBHb29nbGUgTW9jaydzIGV4dGVybmFsIHVzZXIg
ZG9jdW1lbnRhdGlvbiBpcyBpbgorICAgICAgIGludGVybGlua2VkIHdpa2kgZmlsZXMuICBXaGVu
IHdlIHJlbGVhc2UgYSBuZXcgdmVyc2lvbiBvZgorICAgICAgIEdvb2dsZSBUZXN0IG9yIEdvb2ds
ZSBNb2NrLCB3ZSBuZWVkIHRvIGJyYW5jaCB0aGUgd2lraSBmaWxlcworICAgICAgIHN1Y2ggdGhh
dCB1c2VycyBvZiBhIHNwZWNpZmljIHZlcnNpb24gb2YgR29vZ2xlIFRlc3QvTW9jayBjYW4KKyAg
ICAgICBsb29rIHVwIGRvY3VtZW5hdGlvbiByZWxldmFudCBmb3IgdGhhdCB2ZXJzaW9uLiAgVGhp
cyBzY3JpcHQKKyAgICAgICBhdXRvbWF0ZXMgdGhhdCBwcm9jZXNzIGJ5OgorCisgICAgICAgICAt
IGJyYW5jaGluZyB0aGUgY3VycmVudCB3aWtpIHBhZ2VzICh3aGljaCBkb2N1bWVudCB0aGUKKyAg
ICAgICAgICAgYmVoYXZpb3Igb2YgdGhlIFNWTiB0cnVuayBoZWFkKSB0byBwYWdlcyBmb3IgdGhl
IHNwZWNpZmllZAorICAgICAgICAgICB2ZXJzaW9uIChlLmcuIGJyYW5jaGluZyBGQVEud2lraSB0
byBWMl82X0ZBUS53aWtpIHdoZW4KKyAgICAgICAgICAgTkVXX1JFTEVBU0VfVkVSU0lPTiBpcyAy
LjYpOworICAgICAgICAgLSB1cGRhdGluZyB0aGUgbGlua3MgaW4gdGhlIGJyYW5jaGVkIGZpbGVz
IHRvIHBvaW50IHRvIHRoZSBicmFuY2hlZAorICAgICAgICAgICB2ZXJzaW9uIChlLmcuIGEgbGlu
ayBpbiBWMl82X0ZBUS53aWtpIHRoYXQgcG9pbnRlZCB0bworICAgICAgICAgICBQcmltZXIud2lr
aSNBbmNob3Igd2lsbCBub3cgcG9pbnQgdG8gVjJfNl9QcmltZXIud2lraSNBbmNob3IpLgorCisg
ICAgICAgTk9URTogTkVXX1JFTEVBU0VfVkVSU0lPTiBtdXN0IGJlIGEgTkVXIHZlcnNpb24gbnVt
YmVyIGZvcgorICAgICAgIHdoaWNoIHRoZSB3aWtpIHBhZ2VzIGRvbid0IHlldCBleGlzdDsgb3Ro
ZXJ3aXNlIHlvdSdsbCBnZXQgU1ZOCisgICAgICAgZXJyb3JzIGxpa2UgInN2bjogUGF0aCAnVjFf
N19QdW1wTWFudWFsLndpa2knIGlzIG5vdCBhCisgICAgICAgZGlyZWN0b3J5IiB3aGVuIHJ1bm5p
bmcgdGhlIHNjcmlwdC4KKworRVhBTVBMRQorICAgICAgICQgY2QgUEFUSC9UTy9HVEVTVF9TVk5f
V09SS1NQQUNFL3RydW5rCisgICAgICAgJCBzY3JpcHRzL3JlbGVhc2VfZG9jcy5weSAyLjYgICMg
Y3JlYXRlIHdpa2kgcGFnZXMgZm9yIHYyLjYKKyAgICAgICAkIHN2biBzdGF0dXMgICAgICAgICAg
ICAgICAgICAgIyB2ZXJpZnkgdGhlIGZpbGUgbGlzdAorICAgICAgICQgc3ZuIGRpZmYgICAgICAg
ICAgICAgICAgICAgICAjIHZlcmlmeSB0aGUgZmlsZSBjb250ZW50cworICAgICAgICQgc3ZuIGNv
bW1pdCAtbSAicmVsZWFzZSB3aWtpIHBhZ2VzIGZvciB2Mi42IgorIiIiCisKK19fYXV0aG9yX18g
PSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCisKK2ltcG9ydCBvcworaW1wb3J0IHJl
CitpbXBvcnQgc3lzCisKK2ltcG9ydCBjb21tb24KKworCisjIFdpa2kgcGFnZXMgdGhhdCBzaG91
bGRuJ3QgYmUgYnJhbmNoZWQgZm9yIGV2ZXJ5IGd0ZXN0L2dtb2NrIHJlbGVhc2UuCitHVEVTVF9V
TlZFUlNJT05FRF9XSUtJUyA9IFsnRGV2R3VpZGUud2lraSddCitHTU9DS19VTlZFUlNJT05FRF9X
SUtJUyA9IFsKKyAgICAnRGVzaWduRG9jLndpa2knLAorICAgICdEZXZHdWlkZS53aWtpJywKKyAg
ICAnS25vd25Jc3N1ZXMud2lraScKKyAgICBdCisKKworZGVmIERyb3BXaWtpU3VmZml4KHdpa2lf
ZmlsZW5hbWUpOgorICAiIiJSZW1vdmVzIHRoZSAud2lraSBzdWZmaXggKGlmIGFueSkgZnJvbSB0
aGUgZ2l2ZW4gZmlsZW5hbWUuIiIiCisKKyAgcmV0dXJuICh3aWtpX2ZpbGVuYW1lWzotbGVuKCcu
d2lraScpXSBpZiB3aWtpX2ZpbGVuYW1lLmVuZHN3aXRoKCcud2lraScpCisgICAgICAgICAgZWxz
ZSB3aWtpX2ZpbGVuYW1lKQorCisKK2NsYXNzIFdpa2lCcmFuY2hlcihvYmplY3QpOgorICAiIiJC
cmFuY2hlcyAuLi4iIiIKKworICBkZWYgX19pbml0X18oc2VsZiwgZG90X3ZlcnNpb24pOgorICAg
IHNlbGYucHJvamVjdCwgc3ZuX3Jvb3RfcGF0aCA9IGNvbW1vbi5HZXRTdm5JbmZvKCkKKyAgICBp
ZiBzZWxmLnByb2plY3Qgbm90IGluICgnZ29vZ2xldGVzdCcsICdnb29nbGVtb2NrJyk6CisgICAg
ICBzeXMuZXhpdCgnVGhpcyBzY3JpcHQgbXVzdCBiZSBydW4gaW4gYSBndGVzdCBvciBnbW9jayBT
Vk4gd29ya3NwYWNlLicpCisgICAgc2VsZi53aWtpX2RpciA9IHN2bl9yb290X3BhdGggKyAnL3dp
a2knCisgICAgIyBUdXJuICcyLjYnIHRvICdWMl82XycuCisgICAgc2VsZi52ZXJzaW9uX3ByZWZp
eCA9ICdWJyArIGRvdF92ZXJzaW9uLnJlcGxhY2UoJy4nLCAnXycpICsgJ18nCisgICAgc2VsZi5m
aWxlc190b19icmFuY2ggPSBzZWxmLkdldEZpbGVzVG9CcmFuY2goKQorICAgIHBhZ2VfbmFtZXMg
PSBbRHJvcFdpa2lTdWZmaXgoZikgZm9yIGYgaW4gc2VsZi5maWxlc190b19icmFuY2hdCisgICAg
IyBBIGxpbmsgdG8gRm9vLndpa2kgaXMgaW4gb25lIG9mIHRoZSBmb2xsb3dpbmcgZm9ybXM6Cisg
ICAgIyAgIFtGb28gd29yZHNdCisgICAgIyAgIFtGb28jQW5jaG9yIHdvcmRzXQorICAgICMgICBb
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS8uLi4vd2lraS9Gb28gd29yZHNdCisgICAgIyAgIFtodHRw
Oi8vY29kZS5nb29nbGUuY29tLy4uLi93aWtpL0ZvbyNBbmNob3Igd29yZHNdCisgICAgIyBXZSB3
YW50IHRvIHJlcGxhY2UgJ0Zvbycgd2l0aCAnVjJfNl9Gb28nIGluIHRoZSBhYm92ZSBjYXNlcy4K
KyAgICBzZWxmLnNlYXJjaF9mb3JfcmUgPSByZS5jb21waWxlKAorICAgICAgICAjIFRoaXMgcmVn
ZXggbWF0Y2hlcyBlaXRoZXIKKyAgICAgICAgIyAgIFtGb28KKyAgICAgICAgIyBvcgorICAgICAg
ICAjICAgL3dpa2kvRm9vCisgICAgICAgICMgZm9sbG93ZWQgYnkgYSBzcGFjZSBvciBhICMsIHdo
ZXJlIEZvbyBpcyB0aGUgbmFtZSBvZiBhbgorICAgICAgICAjIHVudmVyc2lvbmVkIHdpa2kgcGFn
ZS4KKyAgICAgICAgcicoXFt8L3dpa2kvKSglcykoWyAjXSknICUgJ3wnLmpvaW4ocGFnZV9uYW1l
cykpCisgICAgc2VsZi5yZXBsYWNlX3dpdGggPSByJ1wxJXNcMlwzJyAlIChzZWxmLnZlcnNpb25f
cHJlZml4LCkKKworICBkZWYgR2V0RmlsZXNUb0JyYW5jaChzZWxmKToKKyAgICAiIiJSZXR1cm5z
IGEgbGlzdCBvZiAud2lraSBmaWxlIG5hbWVzIHRoYXQgbmVlZCB0byBiZSBicmFuY2hlZC4iIiIK
KworICAgIHVudmVyc2lvbmVkX3dpa2lzID0gKEdURVNUX1VOVkVSU0lPTkVEX1dJS0lTIGlmIHNl
bGYucHJvamVjdCA9PSAnZ29vZ2xldGVzdCcKKyAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
IEdNT0NLX1VOVkVSU0lPTkVEX1dJS0lTKQorICAgIHJldHVybiBbZiBmb3IgZiBpbiBvcy5saXN0
ZGlyKHNlbGYud2lraV9kaXIpCisgICAgICAgICAgICBpZiAoZi5lbmRzd2l0aCgnLndpa2knKSBh
bmQKKyAgICAgICAgICAgICAgICBub3QgcmUubWF0Y2gocideVlxkJywgZikgYW5kICAjIEV4Y2x1
ZGVkIHZlcnNpb25lZCAud2lraSBmaWxlcy4KKyAgICAgICAgICAgICAgICBmIG5vdCBpbiB1bnZl
cnNpb25lZF93aWtpcyldCisKKyAgZGVmIEJyYW5jaEZpbGVzKHNlbGYpOgorICAgICIiIkJyYW5j
aGVzIHRoZSAud2lraSBmaWxlcyBuZWVkZWQgdG8gYmUgYnJhbmNoZWQuIiIiCisKKyAgICBwcmlu
dCAnQnJhbmNoaW5nICVkIC53aWtpIGZpbGVzOicgJSAobGVuKHNlbGYuZmlsZXNfdG9fYnJhbmNo
KSwpCisgICAgb3MuY2hkaXIoc2VsZi53aWtpX2RpcikKKyAgICBmb3IgZiBpbiBzZWxmLmZpbGVz
X3RvX2JyYW5jaDoKKyAgICAgIGNvbW1hbmQgPSAnc3ZuIGNwICVzICVzJXMnICUgKGYsIHNlbGYu
dmVyc2lvbl9wcmVmaXgsIGYpCisgICAgICBwcmludCBjb21tYW5kCisgICAgICBvcy5zeXN0ZW0o
Y29tbWFuZCkKKworICBkZWYgVXBkYXRlTGlua3NJbkJyYW5jaGVkRmlsZXMoc2VsZik6CisKKyAg
ICBmb3IgZiBpbiBzZWxmLmZpbGVzX3RvX2JyYW5jaDoKKyAgICAgIHNvdXJjZV9maWxlID0gb3Mu
cGF0aC5qb2luKHNlbGYud2lraV9kaXIsIGYpCisgICAgICB2ZXJzaW9uZWRfZmlsZSA9IG9zLnBh
dGguam9pbihzZWxmLndpa2lfZGlyLCBzZWxmLnZlcnNpb25fcHJlZml4ICsgZikKKyAgICAgIHBy
aW50ICdVcGRhdGluZyBsaW5rcyBpbiAlcy4nICUgKHZlcnNpb25lZF9maWxlLCkKKyAgICAgIHRl
eHQgPSBmaWxlKHNvdXJjZV9maWxlLCAncicpLnJlYWQoKQorICAgICAgbmV3X3RleHQgPSBzZWxm
LnNlYXJjaF9mb3JfcmUuc3ViKHNlbGYucmVwbGFjZV93aXRoLCB0ZXh0KQorICAgICAgZmlsZSh2
ZXJzaW9uZWRfZmlsZSwgJ3cnKS53cml0ZShuZXdfdGV4dCkKKworCitkZWYgbWFpbigpOgorICBp
ZiBsZW4oc3lzLmFyZ3YpICE9IDI6CisgICAgc3lzLmV4aXQoX19kb2NfXykKKworICBicmFuY2hl
ciA9IFdpa2lCcmFuY2hlcihzeXMuYXJndlsxXSkKKyAgYnJhbmNoZXIuQnJhbmNoRmlsZXMoKQor
ICBicmFuY2hlci5VcGRhdGVMaW5rc0luQnJhbmNoZWRGaWxlcygpCisKKworaWYgX19uYW1lX18g
PT0gJ19fbWFpbl9fJzoKKyAgbWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3Jp
cHRzL3Rlc3QvTWFrZWZpbGUKaW5kZXggZmZjMGM5MGFkOTk1NzJkZjk0YWZiNWI2NDEzNmE5YzI5
NDg4YWUwNi4uY2RmZjU4NDYzN2I3YTZlOWRmMWZhNDNjZThmNTg4YzQzODE1ZTU2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy90ZXN0L01ha2VmaWxlCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvdGVzdC9NYWtlZmlsZQpAQCAtMjEsNyAr
MjEsOSBAQCBTQU1QTEVfRElSID0gLi4vLi4vc2FtcGxlcwogR1RFU1RfTUFJTl9DQyA9IC4uLy4u
L3NyYy9ndGVzdF9tYWluLmNjCiAKICMgRmxhZ3MgcGFzc2VkIHRvIHRoZSBwcmVwcm9jZXNzb3Iu
Ci1DUFBGTEFHUyArPSAtSSQoRlVTRURfR1RFU1RfRElSKQorIyBXZSBoYXZlIG5vIGlkZWEgaGVy
ZSB3aGV0aGVyIHB0aHJlYWRzIGlzIGF2YWlsYWJsZSBpbiB0aGUgc3lzdGVtLCBzbworIyBkaXNh
YmxlIGl0cyB1c2UuCitDUFBGTEFHUyArPSAtSSQoRlVTRURfR1RFU1RfRElSKSAtREdURVNUX0hB
U19QVEhSRUFEPTAKIAogIyBGbGFncyBwYXNzZWQgdG8gdGhlIEMrKyBjb21waWxlci4KIENYWEZM
QUdTICs9IC1nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3Vw
bG9hZC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvdXBsb2FkLnB5CmluZGV4
IDZlNmY5YTE0NzE5ZWY4YzlmZGI2MDNhZDUwYmRkMzVkYzc5OTZlMmQuLmM4NTJlNGM5MWUwNmVm
N2M0OWUwMzg2ODM1MDlmZmQ5NDk1YzgyMGYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NjcmlwdHMvdXBsb2FkLnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nj
cmlwdHMvdXBsb2FkLnB5CkBAIC0yNDIsNyArMjQyLDcgQEAgY2xhc3MgQWJzdHJhY3RScGNTZXJ2
ZXIob2JqZWN0KToKICAgICBUaGUgYXV0aGVudGljYXRpb24gcHJvY2VzcyB3b3JrcyBhcyBmb2xs
b3dzOgogICAgICAxKSBXZSBnZXQgYSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgZnJvbSB0aGUgdXNl
cgogICAgICAyKSBXZSB1c2UgQ2xpZW50TG9naW4gdG8gb2J0YWluIGFuIEFVVEggdG9rZW4gZm9y
IHRoZSB1c2VyCi0gICAgICAgIChzZWUgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9hcGlzL2FjY291
bnRzL0F1dGhGb3JJbnN0YWxsZWRBcHBzLmh0bWwpLgorICAgICAgICAoc2VlIGh0dHBzOi8vZGV2
ZWxvcGVycy5nb29nbGUuY29tL2lkZW50aXR5L3Byb3RvY29scy9BdXRoRm9ySW5zdGFsbGVkQXBw
cykuCiAgICAgIDMpIFdlIHBhc3MgdGhlIGF1dGggdG9rZW4gdG8gL19haC9sb2dpbiBvbiB0aGUg
c2VydmVyIHRvIG9idGFpbiBhbgogICAgICAgICBhdXRoZW50aWNhdGlvbiBjb29raWUuIElmIGxv
Z2luIHdhcyBzdWNjZXNzZnVsLCBpdCB0cmllcyB0byByZWRpcmVjdAogICAgICAgICB1cyB0byB0
aGUgVVJMIHdlIHByb3ZpZGVkLgpAQCAtNTA2LDcgKzUwNiw3IEBAIGRlZiBFbmNvZGVNdWx0aXBh
cnRGb3JtRGF0YShmaWVsZHMsIGZpbGVzKToKICAgICAoY29udGVudF90eXBlLCBib2R5KSByZWFk
eSBmb3IgaHR0cGxpYi5IVFRQIGluc3RhbmNlLgogCiAgIFNvdXJjZToKLSAgICBodHRwOi8vYXNw
bi5hY3RpdmVzdGF0ZS5jb20vQVNQTi9Db29rYm9vay9QeXRob24vUmVjaXBlLzE0NjMwNgorICAg
IGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE2MDExNjA1MjAwMS9jb2RlLmFjdGl2ZXN0
YXRlLmNvbS9yZWNpcGVzLzE0NjMwNgogICAiIiIKICAgQk9VTkRBUlkgPSAnLU0tQS1HLUktQy0t
LUItTy1VLU4tRC1BLVItWS0nCiAgIENSTEYgPSAnXHJcbicKQEAgLTczMiw3ICs3MzIsNyBAQCBj
bGFzcyBTdWJ2ZXJzaW9uVkNTKFZlcnNpb25Db250cm9sU3lzdGVtKToKICAgICBlbHNlOgogICAg
ICAgc2VsZi5yZXZfc3RhcnQgPSBzZWxmLnJldl9lbmQgPSBOb25lCiAgICAgIyBDYWNoZSBvdXRw
dXQgZnJvbSAic3ZuIGxpc3QgLXIgUkVWTk8gZGlybmFtZSIuCi0gICAgIyBLZXlzOiBkaXJuYW1l
LCBWYWx1ZXM6IDItdHVwbGUgKG91cHV0IGZvciBzdGFydCByZXYgYW5kIGVuZCByZXYpLgorICAg
ICMgS2V5czogZGlybmFtZSwgVmFsdWVzOiAyLXR1cGxlIChvdXRwdXQgZm9yIHN0YXJ0IHJldiBh
bmQgZW5kIHJldikuCiAgICAgc2VsZi5zdm5sc19jYWNoZSA9IHt9CiAgICAgIyBTVk4gYmFzZSBV
UkwgaXMgcmVxdWlyZWQgdG8gZmV0Y2ggZmlsZXMgZGVsZXRlZCBpbiBhbiBvbGRlciByZXZpc2lv
bi4KICAgICAjIFJlc3VsdCBpcyBjYWNoZWQgdG8gbm90IGd1ZXNzIGl0IG92ZXIgYW5kIG92ZXIg
YWdhaW4gaW4gR2V0QmFzZUZpbGUoKS4KQEAgLTgwNyw3ICs4MDcsNyBAQCBjbGFzcyBTdWJ2ZXJz
aW9uVkNTKFZlcnNpb25Db250cm9sU3lzdGVtKToKICAgICAjIHN2biBjYXQgdHJhbnNsYXRlcyBr
ZXl3b3JkcyBidXQgc3ZuIGRpZmYgZG9lc24ndC4gQXMgYSByZXN1bHQgb2YgdGhpcwogICAgICMg
YmVoYXZpb3IgcGF0Y2hpbmcuUGF0Y2hDaHVua3MoKSBmYWlscyB3aXRoIGEgY2h1bmsgbWlzbWF0
Y2ggZXJyb3IuCiAgICAgIyBUaGlzIHBhcnQgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSB0aGUg
UmV2aWV3IEJvYXJkIGRldmVsb3BtZW50IHRlYW0KLSAgICAjIHdobyBoYWQgdGhlIHNhbWUgcHJv
YmxlbSAoaHR0cDovL3Jldmlld3MucmV2aWV3LWJvYXJkLm9yZy9yLzI3Ni8pLgorICAgICMgd2hv
IGhhZCB0aGUgc2FtZSBwcm9ibGVtIChodHRwczovL3Jldmlld3MucmV2aWV3Ym9hcmQub3JnL3Iv
Mjc2LykuCiAgICAgIyBNYXBwaW5nIG9mIGtleXdvcmRzIHRvIGtub3duIGFsaWFzZXMKICAgICBz
dm5fa2V5d29yZHMgPSB7CiAgICAgICAjIFN0YW5kYXJkIGtleXdvcmRzCkBAIC04NjAsNyArODYw
LDcgQEAgY2xhc3MgU3VidmVyc2lvblZDUyhWZXJzaW9uQ29udHJvbFN5c3RlbSk6CiAgICAgICBz
dGF0dXNfbGluZXMgPSBzdGF0dXMuc3BsaXRsaW5lcygpCiAgICAgICAjIElmIGZpbGUgaXMgaW4g
YSBjbCwgdGhlIG91dHB1dCB3aWxsIGJlZ2luIHdpdGgKICAgICAgICMgIlxuLS0tIENoYW5nZWxp
c3QgJ2NsX25hbWUnOlxuIi4gIFNlZQotICAgICAgIyBodHRwOi8vc3ZuLmNvbGxhYi5uZXQvcmVw
b3Mvc3ZuL3RydW5rL25vdGVzL2NoYW5nZWxpc3QtZGVzaWduLnR4dAorICAgICAgIyBodHRwczov
L3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAwOTA5MTgyMzQ4MTUvc3ZuLmNvbGxhYi5uZXQvcmVwb3Mv
c3ZuL3RydW5rL25vdGVzL2NoYW5nZWxpc3QtZGVzaWduLnR4dAogICAgICAgaWYgKGxlbihzdGF0
dXNfbGluZXMpID09IDMgYW5kCiAgICAgICAgICAgbm90IHN0YXR1c19saW5lc1swXSBhbmQKICAg
ICAgICAgICBzdGF0dXNfbGluZXNbMV0uc3RhcnRzd2l0aCgiLS0tIENoYW5nZWxpc3QiKSk6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtYWxsLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWFsbC5jYwppbmRleCBmZTM0NzY1ZmI2NzIx
OGE1NmNiNWUyNTJhNzBlNjhhMzZiYzg4ZDA3Li5iMjE3YTE4MDA2YjBjOGJkYWY0YTlmOWI2ZDA2
ZGU0ZmQ4YWQ5ZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rl
c3QtYWxsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1hbGwuY2MK
QEAgLTI2LDIyICsyNiwyMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiBtaGV1bGVAZ29vZ2xlLmNvbSAoTWFya3VzIEhl
dWxlKQotLy8KLS8vIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQor
Ly8gR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3Qp
CiAvLwogLy8gU29tZXRpbWVzIGl0J3MgZGVzaXJhYmxlIHRvIGJ1aWxkIEdvb2dsZSBUZXN0IGJ5
IGNvbXBpbGluZyBhIHNpbmdsZSBmaWxlLgogLy8gVGhpcyBmaWxlIHNlcnZlcyB0aGlzIHB1cnBv
c2UuCiAKIC8vIFRoaXMgbGluZSBlbnN1cmVzIHRoYXQgZ3Rlc3QuaCBjYW4gYmUgY29tcGlsZWQg
b24gaXRzIG93biwgZXZlbgogLy8gd2hlbiBpdCdzIGZ1c2VkLgotI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogLy8gVGhlIGZvbGxvd2luZyBsaW5l
cyBwdWxsIGluIHRoZSByZWFsIGd0ZXN0ICouY2MgZmlsZXMuCiAjaW5jbHVkZSAic3JjL2d0ZXN0
LmNjIgogI2luY2x1ZGUgInNyYy9ndGVzdC1kZWF0aC10ZXN0LmNjIgogI2luY2x1ZGUgInNyYy9n
dGVzdC1maWxlcGF0aC5jYyIKICNpbmNsdWRlICJzcmMvZ3Rlc3QtcG9ydC5jYyIKKyNpbmNsdWRl
ICJzcmMvZ3Rlc3QtcHJpbnRlcnMuY2MiCiAjaW5jbHVkZSAic3JjL2d0ZXN0LXRlc3QtcGFydC5j
YyIKICNpbmNsdWRlICJzcmMvZ3Rlc3QtdHlwZWQtdGVzdC5jYyIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1kZWF0aC10ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MKaW5kZXggMGNmNzgyNWJjYWM3OWZh
MzVkMGExMjQ4ZTIzMDhhMjRhYTYyN2I4YS4uMDkwODM1NTE2MTJlM2MzYjliM2JkN2QxZWU2MDZj
MThmZmI1ZjczYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0
LWRlYXRoLXRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWRl
YXRoLXRlc3QuY2MKQEAgLTI2LDUyICsyNiw2NSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbiksIHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCisKIC8vCiAvLyBUaGlz
IGZpbGUgaW1wbGVtZW50cyBkZWF0aCB0ZXN0cy4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LWRl
YXRoLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFs
L2d0ZXN0LXBvcnQuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QuaCIK
IAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCiAKLSNpZiBHVEVTVF9PU19NQUMKLSNpbmNsdWRl
IDxjcnRfZXh0ZXJucy5oPgotI2VuZGlmICAvLyBHVEVTVF9PU19NQUMKKyMgaWYgR1RFU1RfT1Nf
TUFDCisjICBpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgorIyBlbmRpZiAgLy8gR1RFU1RfT1NfTUFD
CiAKLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8bGlt
aXRzLmg+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+CisjIGluY2x1ZGUgPGVycm5vLmg+CisjIGluY2x1
ZGUgPGZjbnRsLmg+CisjIGluY2x1ZGUgPGxpbWl0cy5oPgogCi0jaWYgR1RFU1RfT1NfV0lORE9X
UwotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbHNlCi0jaW5jbHVkZSA8c3lzL21tYW4uaD4KLSNp
bmNsdWRlIDxzeXMvd2FpdC5oPgotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdU
RVNUX09TX0xJTlVYCisjICBpbmNsdWRlIDxzaWduYWwuaD4KKyMgZW5kaWYgIC8vIEdURVNUX09T
X0xJTlVYCiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKKyMgaW5jbHVkZSA8c3Rk
YXJnLmg+CisKKyMgaWYgR1RFU1RfT1NfV0lORE9XUworIyAgaW5jbHVkZSA8d2luZG93cy5oPgor
IyBlbHNlCisjICBpbmNsdWRlIDxzeXMvbW1hbi5oPgorIyAgaW5jbHVkZSA8c3lzL3dhaXQuaD4K
KyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworIyBpZiBHVEVTVF9PU19RTlgKKyMgIGlu
Y2x1ZGUgPHNwYXduLmg+CisjIGVuZGlmICAvLyBHVEVTVF9PU19RTlgKKworIyBpZiBHVEVTVF9P
U19GVUNIU0lBCisjICBpbmNsdWRlIDxsaWIvZmRpby9pby5oPgorIyAgaW5jbHVkZSA8bGliL2Zk
aW8vc3Bhd24uaD4KKyMgIGluY2x1ZGUgPHppcmNvbi9wcm9jZXNzYXJncy5oPgorIyAgaW5jbHVk
ZSA8emlyY29uL3N5c2NhbGxzLmg+CisjICBpbmNsdWRlIDx6aXJjb24vc3lzY2FsbHMvcG9ydC5o
PgorIyBlbmRpZiAgLy8gR1RFU1RfT1NfRlVDSFNJQQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qt
bWVzc2FnZS5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oPgorI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRy
YW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlv
bi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1
ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRv
Ci0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50
ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElP
Tl8gMQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCIKKyNpbmNsdWRlICJndGVzdC9p
bnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKICNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5s
LmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsK
IAogLy8gQ29uc3RhbnRzLgogCiAvLyBUaGUgZGVmYXVsdCBkZWF0aCB0ZXN0IHN0eWxlLgotc3Rh
dGljIGNvbnN0IGNoYXIga0RlZmF1bHREZWF0aFRlc3RTdHlsZVtdID0gImZhc3QiOworLy8KKy8v
IFRoaXMgaXMgZGVmaW5lZCBpbiBpbnRlcm5hbC9ndGVzdC1wb3J0LmggYXMgImZhc3QiLCBidXQg
Y2FuIGJlIG92ZXJyaWRkZW4gYnkKKy8vIGEgZGVmaW5pdGlvbiBpbiBpbnRlcm5hbC9jdXN0b20v
Z3Rlc3QtcG9ydC5oLiBUaGUgcmVjb21tZW5kZWQgdmFsdWUsIHdoaWNoIGlzCisvLyB1c2VkIGlu
dGVybmFsbHkgYXQgR29vZ2xlLCBpcyAidGhyZWFkc2FmZSIuCitzdGF0aWMgY29uc3QgY2hhciBr
RGVmYXVsdERlYXRoVGVzdFN0eWxlW10gPSBHVEVTVF9ERUZBVUxUX0RFQVRIX1RFU1RfU1RZTEU7
CiAKIEdURVNUX0RFRklORV9zdHJpbmdfKAogICAgIGRlYXRoX3Rlc3Rfc3R5bGUsCkBAIC0xMDAs
MzYgKzExMyw3OSBAQCBHVEVTVF9ERUZJTkVfc3RyaW5nXygKICAgICAiSW5kaWNhdGVzIHRoZSBm
aWxlLCBsaW5lIG51bWJlciwgdGVtcG9yYWwgaW5kZXggb2YgIgogICAgICJ0aGUgc2luZ2xlIGRl
YXRoIHRlc3QgdG8gcnVuLCBhbmQgYSBmaWxlIGRlc2NyaXB0b3IgdG8gIgogICAgICJ3aGljaCBh
IHN1Y2Nlc3MgY29kZSBtYXkgYmUgc2VudCwgYWxsIHNlcGFyYXRlZCBieSAiCi0gICAgImNvbG9u
cy4gIFRoaXMgZmxhZyBpcyBzcGVjaWZpZWQgaWYgYW5kIG9ubHkgaWYgdGhlIGN1cnJlbnQgIgor
ICAgICJ0aGUgJ3wnIGNoYXJhY3RlcnMuICBUaGlzIGZsYWcgaXMgc3BlY2lmaWVkIGlmIGFuZCBv
bmx5IGlmIHRoZSBjdXJyZW50ICIKICAgICAicHJvY2VzcyBpcyBhIHN1Yi1wcm9jZXNzIGxhdW5j
aGVkIGZvciBydW5uaW5nIGEgdGhyZWFkLXNhZmUgIgogICAgICJkZWF0aCB0ZXN0LiAgRk9SIElO
VEVSTkFMIFVTRSBPTkxZLiIpOwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiAKICNpZiBHVEVT
VF9IQVNfREVBVEhfVEVTVAogCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBWYWxpZCBvbmx5
IGZvciBmYXN0IGRlYXRoIHRlc3RzLiBJbmRpY2F0ZXMgdGhlIGNvZGUgaXMgcnVubmluZyBpbiB0
aGUKKy8vIGNoaWxkIHByb2Nlc3Mgb2YgYSBmYXN0IHN0eWxlIGRlYXRoIHRlc3QuCisjIGlmICFH
VEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19GVUNIU0lBCitzdGF0aWMgYm9vbCBnX2luX2Zh
c3RfZGVhdGhfdGVzdF9jaGlsZCA9IGZhbHNlOworIyBlbmRpZgorCisvLyBSZXR1cm5zIGEgQm9v
bGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNhbGxlciBpcyBjdXJyZW50bHkKKy8v
IGV4ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiB0aGUgZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNz
LiAgVG9vbHMgc3VjaCBhcworLy8gVmFsZ3JpbmQgaGVhcCBjaGVja2VycyBtYXkgbmVlZCB0aGlz
IHRvIG1vZGlmeSB0aGVpciBiZWhhdmlvciBpbiBkZWF0aAorLy8gdGVzdHMuICBJTVBPUlRBTlQ6
IFRoaXMgaXMgYW4gaW50ZXJuYWwgdXRpbGl0eS4gIFVzaW5nIGl0IG1heSBicmVhayB0aGUKKy8v
IGltcGxlbWVudGF0aW9uIG9mIGRlYXRoIHRlc3RzLiAgVXNlciBjb2RlIE1VU1QgTk9UIHVzZSBp
dC4KK2Jvb2wgSW5EZWF0aFRlc3RDaGlsZCgpIHsKKyMgaWYgR1RFU1RfT1NfV0lORE9XUyB8fCBH
VEVTVF9PU19GVUNIU0lBCisKKyAgLy8gT24gV2luZG93cyBhbmQgRnVjaHNpYSwgZGVhdGggdGVz
dHMgYXJlIHRocmVhZC1zYWZlIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlCisgIC8vIG9mIHRoZSBk
ZWF0aF90ZXN0X3N0eWxlIGZsYWcuCisgIHJldHVybiAhR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5f
ZGVhdGhfdGVzdCkuZW1wdHkoKTsKKworIyBlbHNlCisKKyAgaWYgKEdURVNUX0ZMQUcoZGVhdGhf
dGVzdF9zdHlsZSkgPT0gInRocmVhZHNhZmUiKQorICAgIHJldHVybiAhR1RFU1RfRkxBRyhpbnRl
cm5hbF9ydW5fZGVhdGhfdGVzdCkuZW1wdHkoKTsKKyAgZWxzZQorICAgIHJldHVybiBnX2luX2Zh
c3RfZGVhdGhfdGVzdF9jaGlsZDsKKyNlbmRpZgorfQorCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJu
YWwKKwogLy8gRXhpdGVkV2l0aENvZGUgY29uc3RydWN0b3IuCiBFeGl0ZWRXaXRoQ29kZTo6RXhp
dGVkV2l0aENvZGUoaW50IGV4aXRfY29kZSkgOiBleGl0X2NvZGVfKGV4aXRfY29kZSkgewogfQog
CiAvLyBFeGl0ZWRXaXRoQ29kZSBmdW5jdGlvbi1jYWxsIG9wZXJhdG9yLgogYm9vbCBFeGl0ZWRX
aXRoQ29kZTo6b3BlcmF0b3IoKShpbnQgZXhpdF9zdGF0dXMpIGNvbnN0IHsKLSNpZiBHVEVTVF9P
U19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfRlVDSFNJQQorCiAg
IHJldHVybiBleGl0X3N0YXR1cyA9PSBleGl0X2NvZGVfOwotI2Vsc2UKKworIyBlbHNlCisKICAg
cmV0dXJuIFdJRkVYSVRFRChleGl0X3N0YXR1cykgJiYgV0VYSVRTVEFUVVMoZXhpdF9zdGF0dXMp
ID09IGV4aXRfY29kZV87Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworIyBlbmRpZiAg
Ly8gR1RFU1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19GVUNIU0lBCiB9CiAKLSNpZiAhR1RFU1Rf
T1NfV0lORE9XUworIyBpZiAhR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfRlVDSFNJQQog
Ly8gS2lsbGVkQnlTaWduYWwgY29uc3RydWN0b3IuCiBLaWxsZWRCeVNpZ25hbDo6S2lsbGVkQnlT
aWduYWwoaW50IHNpZ251bSkgOiBzaWdudW1fKHNpZ251bSkgewogfQogCiAvLyBLaWxsZWRCeVNp
Z25hbCBmdW5jdGlvbi1jYWxsIG9wZXJhdG9yLgogYm9vbCBLaWxsZWRCeVNpZ25hbDo6b3BlcmF0
b3IoKShpbnQgZXhpdF9zdGF0dXMpIGNvbnN0IHsKKyMgIGlmIGRlZmluZWQoR1RFU1RfS0lMTEVE
X0JZX1NJR05BTF9PVkVSUklERV8pCisgIHsKKyAgICBib29sIHJlc3VsdDsKKyAgICBpZiAoR1RF
U1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8oc2lnbnVtXywgZXhpdF9zdGF0dXMsICZyZXN1
bHQpKSB7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgfQorIyAgZW5kaWYgIC8vIGRl
ZmluZWQoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8pCiAgIHJldHVybiBXSUZTSUdO
QUxFRChleGl0X3N0YXR1cykgJiYgV1RFUk1TSUcoZXhpdF9zdGF0dXMpID09IHNpZ251bV87CiB9
Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyAhR1RFU1RfT1NfV0lO
RE9XUyAmJiAhR1RFU1RfT1NfRlVDSFNJQQogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCkBAIC0x
MzcsMjIgKzE5MywyNyBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogCiAvLyBHZW5lcmF0ZXMgYSB0
ZXh0dWFsIGRlc2NyaXB0aW9uIG9mIGEgZ2l2ZW4gZXhpdCBjb2RlLCBpbiB0aGUgZm9ybWF0CiAv
LyBzcGVjaWZpZWQgYnkgd2FpdCgyKS4KLXN0YXRpYyBTdHJpbmcgRXhpdFN1bW1hcnkoaW50IGV4
aXRfY29kZSkgeworc3RhdGljIHN0ZDo6c3RyaW5nIEV4aXRTdW1tYXJ5KGludCBleGl0X2NvZGUp
IHsKICAgTWVzc2FnZSBtOwotI2lmIEdURVNUX09TX1dJTkRPV1MKKworIyBpZiBHVEVTVF9PU19X
SU5ET1dTIHx8IEdURVNUX09TX0ZVQ0hTSUEKKwogICBtIDw8ICJFeGl0ZWQgd2l0aCBleGl0IHN0
YXR1cyAiIDw8IGV4aXRfY29kZTsKLSNlbHNlCisKKyMgZWxzZQorCiAgIGlmIChXSUZFWElURUQo
ZXhpdF9jb2RlKSkgewogICAgIG0gPDwgIkV4aXRlZCB3aXRoIGV4aXQgc3RhdHVzICIgPDwgV0VY
SVRTVEFUVVMoZXhpdF9jb2RlKTsKICAgfSBlbHNlIGlmIChXSUZTSUdOQUxFRChleGl0X2NvZGUp
KSB7CiAgICAgbSA8PCAiVGVybWluYXRlZCBieSBzaWduYWwgIiA8PCBXVEVSTVNJRyhleGl0X2Nv
ZGUpOwogICB9Ci0jaWZkZWYgV0NPUkVEVU1QCisjICBpZmRlZiBXQ09SRURVTVAKICAgaWYgKFdD
T1JFRFVNUChleGl0X2NvZGUpKSB7CiAgICAgbSA8PCAiIChjb3JlIGR1bXBlZCkiOwogICB9Ci0j
ZW5kaWYKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIyAgZW5kaWYKKyMgZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfRlVDSFNJQQorCiAgIHJldHVybiBtLkdldFN0
cmluZygpOwogfQogCkBAIC0xNjIsNDIgKzIyMyw1OSBAQCBib29sIEV4aXRlZFVuc3VjY2Vzc2Z1
bGx5KGludCBleGl0X3N0YXR1cykgewogICByZXR1cm4gIUV4aXRlZFdpdGhDb2RlKDApKGV4aXRf
c3RhdHVzKTsKIH0KIAotI2lmICFHVEVTVF9PU19XSU5ET1dTCisjIGlmICFHVEVTVF9PU19XSU5E
T1dTICYmICFHVEVTVF9PU19GVUNIU0lBCiAvLyBHZW5lcmF0ZXMgYSB0ZXh0dWFsIGZhaWx1cmUg
bWVzc2FnZSB3aGVuIGEgZGVhdGggdGVzdCBmaW5kcyBtb3JlIHRoYW4KIC8vIG9uZSB0aHJlYWQg
cnVubmluZywgb3IgY2Fubm90IGRldGVybWluZSB0aGUgbnVtYmVyIG9mIHRocmVhZHMsIHByaW9y
CiAvLyB0byBleGVjdXRpbmcgdGhlIGdpdmVuIHN0YXRlbWVudC4gIEl0IGlzIHRoZSByZXNwb25z
aWJpbGl0eSBvZiB0aGUKIC8vIGNhbGxlciBub3QgdG8gcGFzcyBhIHRocmVhZF9jb3VudCBvZiAx
Lgotc3RhdGljIFN0cmluZyBEZWF0aFRlc3RUaHJlYWRXYXJuaW5nKHNpemVfdCB0aHJlYWRfY291
bnQpIHsKK3N0YXRpYyBzdGQ6OnN0cmluZyBEZWF0aFRlc3RUaHJlYWRXYXJuaW5nKHNpemVfdCB0
aHJlYWRfY291bnQpIHsKICAgTWVzc2FnZSBtc2c7CiAgIG1zZyA8PCAiRGVhdGggdGVzdHMgdXNl
IGZvcmsoKSwgd2hpY2ggaXMgdW5zYWZlIHBhcnRpY3VsYXJseSIKICAgICAgIDw8ICIgaW4gYSB0
aHJlYWRlZCBjb250ZXh0LiBGb3IgdGhpcyB0ZXN0LCAiIDw8IEdURVNUX05BTUVfIDw8ICIgIjsK
LSAgaWYgKHRocmVhZF9jb3VudCA9PSAwKQorICBpZiAodGhyZWFkX2NvdW50ID09IDApIHsKICAg
ICBtc2cgPDwgImNvdWxkbid0IGRldGVjdCB0aGUgbnVtYmVyIG9mIHRocmVhZHMuIjsKLSAgZWxz
ZQorICB9IGVsc2UgewogICAgIG1zZyA8PCAiZGV0ZWN0ZWQgIiA8PCB0aHJlYWRfY291bnQgPDwg
IiB0aHJlYWRzLiI7CisgIH0KKyAgbXNnIDw8ICIgU2VlICIKKyAgICAgICAgICJodHRwczovL2dp
dGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvYmxvYi9tYXN0ZXIvZ29vZ2xldGVzdC9kb2NzLyIK
KyAgICAgICAgICJhZHZhbmNlZC5tZCNkZWF0aC10ZXN0cy1hbmQtdGhyZWFkcyIKKyAgICAgIDw8
ICIgZm9yIG1vcmUgZXhwbGFuYXRpb24gYW5kIHN1Z2dlc3RlZCBzb2x1dGlvbnMsIGVzcGVjaWFs
bHkgaWYiCisgICAgICA8PCAiIHRoaXMgaXMgdGhlIGxhc3QgbWVzc2FnZSB5b3Ugc2VlIGJlZm9y
ZSB5b3VyIHRlc3QgdGltZXMgb3V0LiI7CiAgIHJldHVybiBtc2cuR2V0U3RyaW5nKCk7CiB9Ci0j
ZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9X
UyAmJiAhR1RFU1RfT1NfRlVDSFNJQQogCiAvLyBGbGFnIGNoYXJhY3RlcnMgZm9yIHJlcG9ydGlu
ZyBhIGRlYXRoIHRlc3QgdGhhdCBkaWQgbm90IGRpZS4KIHN0YXRpYyBjb25zdCBjaGFyIGtEZWF0
aFRlc3RMaXZlZCA9ICdMJzsKIHN0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RSZXR1cm5lZCA9
ICdSJzsKK3N0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RUaHJldyA9ICdUJzsKIHN0YXRpYyBj
b25zdCBjaGFyIGtEZWF0aFRlc3RJbnRlcm5hbEVycm9yID0gJ0knOwogCi0vLyBBbiBlbnVtZXJh
dGlvbiBkZXNjcmliaW5nIGFsbCBvZiB0aGUgcG9zc2libGUgd2F5cyB0aGF0IGEgZGVhdGggdGVz
dAotLy8gY2FuIGNvbmNsdWRlLiAgRElFRCBtZWFucyB0aGF0IHRoZSBwcm9jZXNzIGRpZWQgd2hp
bGUgZXhlY3V0aW5nIHRoZQotLy8gdGVzdCBjb2RlOyBMSVZFRCBtZWFucyB0aGF0IHByb2Nlc3Mg
bGl2ZWQgYmV5b25kIHRoZSBlbmQgb2YgdGhlIHRlc3QKLS8vIGNvZGU7IGFuZCBSRVRVUk5FRCBt
ZWFucyB0aGF0IHRoZSB0ZXN0IHN0YXRlbWVudCBhdHRlbXB0ZWQgYSAicmV0dXJuLCIKLS8vIHdo
aWNoIGlzIG5vdCBhbGxvd2VkLiAgSU5fUFJPR1JFU1MgbWVhbnMgdGhlIHRlc3QgaGFzIG5vdCB5
ZXQKLS8vIGNvbmNsdWRlZC4KLWVudW0gRGVhdGhUZXN0T3V0Y29tZSB7IElOX1BST0dSRVNTLCBE
SUVELCBMSVZFRCwgUkVUVVJORUQgfTsKKyNpZiBHVEVTVF9PU19GVUNIU0lBCisKKy8vIEZpbGUg
ZGVzY3JpcHRvciB1c2VkIGZvciB0aGUgcGlwZSBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4KK3N0YXRp
YyBjb25zdCBpbnQga0Z1Y2hzaWFSZWFkUGlwZUZkID0gMzsKKworI2VuZGlmCisKKy8vIEFuIGVu
dW1lcmF0aW9uIGRlc2NyaWJpbmcgYWxsIG9mIHRoZSBwb3NzaWJsZSB3YXlzIHRoYXQgYSBkZWF0
aCB0ZXN0IGNhbgorLy8gY29uY2x1ZGUuICBESUVEIG1lYW5zIHRoYXQgdGhlIHByb2Nlc3MgZGll
ZCB3aGlsZSBleGVjdXRpbmcgdGhlIHRlc3QKKy8vIGNvZGU7IExJVkVEIG1lYW5zIHRoYXQgcHJv
Y2VzcyBsaXZlZCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgdGVzdCBjb2RlOworLy8gUkVUVVJORUQg
bWVhbnMgdGhhdCB0aGUgdGVzdCBzdGF0ZW1lbnQgYXR0ZW1wdGVkIHRvIGV4ZWN1dGUgYSByZXR1
cm4KKy8vIHN0YXRlbWVudCwgd2hpY2ggaXMgbm90IGFsbG93ZWQ7IFRIUkVXIG1lYW5zIHRoYXQg
dGhlIHRlc3Qgc3RhdGVtZW50CisvLyByZXR1cm5lZCBjb250cm9sIGJ5IHRocm93aW5nIGFuIGV4
Y2VwdGlvbi4gIElOX1BST0dSRVNTIG1lYW5zIHRoZSB0ZXN0CisvLyBoYXMgbm90IHlldCBjb25j
bHVkZWQuCisvLyBGSVhNRTogVW5pZnkgbmFtZXMgYW5kIHBvc3NpYmx5IHZhbHVlcyBmb3IKKy8v
IEFib3J0UmVhc29uLCBEZWF0aFRlc3RPdXRjb21lLCBhbmQgZmxhZyBjaGFyYWN0ZXJzIGFib3Zl
LgorZW51bSBEZWF0aFRlc3RPdXRjb21lIHsgSU5fUFJPR1JFU1MsIERJRUQsIExJVkVELCBSRVRV
Uk5FRCwgVEhSRVcgfTsKIAogLy8gUm91dGluZSBmb3IgYWJvcnRpbmcgdGhlIHByb2dyYW0gd2hp
Y2ggaXMgc2FmZSB0byBjYWxsIGZyb20gYW4KIC8vIGV4ZWMtc3R5bGUgZGVhdGggdGVzdCBjaGls
ZCBwcm9jZXNzLCBpbiB3aGljaCBjYXNlIHRoZSBlcnJvcgogLy8gbWVzc2FnZSBpcyBwcm9wYWdh
dGVkIGJhY2sgdG8gdGhlIHBhcmVudCBwcm9jZXNzLiAgT3RoZXJ3aXNlLCB0aGUKIC8vIG1lc3Nh
Z2UgaXMgc2ltcGx5IHByaW50ZWQgdG8gc3RkZXJyLiAgSW4gZWl0aGVyIGNhc2UsIHRoZSBwcm9n
cmFtCiAvLyB0aGVuIGV4aXRzIHdpdGggc3RhdHVzIDEuCi12b2lkIERlYXRoVGVzdEFib3J0KGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkgeworc3RhdGljIHZvaWQgRGVhdGhUZXN0QWJvcnQoY29uc3Qg
c3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsKICAgLy8gT24gYSBQT1NJWCBzeXN0ZW0sIHRoaXMgZnVu
Y3Rpb24gbWF5IGJlIGNhbGxlZCBmcm9tIGEgdGhyZWFkc2FmZS1zdHlsZQogICAvLyBkZWF0aCB0
ZXN0IGNoaWxkIHByb2Nlc3MsIHdoaWNoIG9wZXJhdGVzIG9uIGEgdmVyeSBzbWFsbCBzdGFjay4g
IFVzZQogICAvLyB0aGUgaGVhcCBmb3IgYW55IGFkZGl0aW9uYWwgbm9uLW1pbnVzY3VsZSBtZW1v
cnkgcmVxdWlyZW1lbnRzLgpAQCAtMjEyLDE4ICsyOTAsMTkgQEAgdm9pZCBEZWF0aFRlc3RBYm9y
dChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsKICAgfSBlbHNlIHsKICAgICBmcHJpbnRmKHN0ZGVy
ciwgIiVzIiwgbWVzc2FnZS5jX3N0cigpKTsKICAgICBmZmx1c2goc3RkZXJyKTsKLSAgICBhYm9y
dCgpOworICAgIHBvc2l4OjpBYm9ydCgpOwogICB9CiB9CiAKIC8vIEEgcmVwbGFjZW1lbnQgZm9y
IENIRUNLIHRoYXQgY2FsbHMgRGVhdGhUZXN0QWJvcnQgaWYgdGhlIGFzc2VydGlvbgogLy8gZmFp
bHMuCi0jZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGV4cHJlc3Npb24pIFwKKyMgZGVm
aW5lIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGV4cHJlc3Npb24pIFwKICAgZG8geyBcCiAgICAg
aWYgKCE6OnRlc3Rpbmc6OmludGVybmFsOjpJc1RydWUoZXhwcmVzc2lvbikpIHsgXAotICAgICAg
RGVhdGhUZXN0QWJvcnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOjpGb3JtYXQoIFwKLSAg
ICAgICAgICAiQ0hFQ0sgZmFpbGVkOiBGaWxlICVzLCBsaW5lICVkOiAlcyIsIFwKLSAgICAgICAg
ICBfX0ZJTEVfXywgX19MSU5FX18sICNleHByZXNzaW9uKSk7IFwKKyAgICAgIERlYXRoVGVzdEFi
b3J0KCBcCisgICAgICAgICAgOjpzdGQ6OnN0cmluZygiQ0hFQ0sgZmFpbGVkOiBGaWxlICIpICsg
X19GSUxFX18gKyAgIiwgbGluZSAiIFwKKyAgICAgICAgICArIDo6dGVzdGluZzo6aW50ZXJuYWw6
OlN0cmVhbWFibGVUb1N0cmluZyhfX0xJTkVfXykgKyAiOiAiIFwKKyAgICAgICAgICArICNleHBy
ZXNzaW9uKTsgXAogICAgIH0gXAogICB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdh
eXNGYWxzZSgpKQogCkBAIC0yMzQsMjIgKzMxMywyMyBAQCB2b2lkIERlYXRoVGVzdEFib3J0KGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkgewogLy8gZXZhbHVhdGVzIHRoZSBleHByZXNzaW9uIGFzIGxv
bmcgYXMgaXQgZXZhbHVhdGVzIHRvIC0xIGFuZCBzZXRzCiAvLyBlcnJubyB0byBFSU5UUi4gIElm
IHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAtMSBidXQgZXJybm8gaXMKIC8vIHNvbWV0aGlu
ZyBvdGhlciB0aGFuIEVJTlRSLCBEZWF0aFRlc3RBYm9ydCBpcyBjYWxsZWQuCi0jZGVmaW5lIEdU
RVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oZXhwcmVzc2lvbikgXAorIyBkZWZpbmUgR1RF
U1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhleHByZXNzaW9uKSBcCiAgIGRvIHsgXAogICAg
IGludCBndGVzdF9yZXR2YWw7IFwKICAgICBkbyB7IFwKICAgICAgIGd0ZXN0X3JldHZhbCA9IChl
eHByZXNzaW9uKTsgXAogICAgIH0gd2hpbGUgKGd0ZXN0X3JldHZhbCA9PSAtMSAmJiBlcnJubyA9
PSBFSU5UUik7IFwKICAgICBpZiAoZ3Rlc3RfcmV0dmFsID09IC0xKSB7IFwKLSAgICAgIERlYXRo
VGVzdEFib3J0KDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZzo6Rm9ybWF0KCBcCi0gICAgICAg
ICAgIkNIRUNLIGZhaWxlZDogRmlsZSAlcywgbGluZSAlZDogJXMgIT0gLTEiLCBcCi0gICAgICAg
ICAgX19GSUxFX18sIF9fTElORV9fLCAjZXhwcmVzc2lvbikpOyBcCisgICAgICBEZWF0aFRlc3RB
Ym9ydCggXAorICAgICAgICAgIDo6c3RkOjpzdHJpbmcoIkNIRUNLIGZhaWxlZDogRmlsZSAiKSAr
IF9fRklMRV9fICsgIiwgbGluZSAiIFwKKyAgICAgICAgICArIDo6dGVzdGluZzo6aW50ZXJuYWw6
OlN0cmVhbWFibGVUb1N0cmluZyhfX0xJTkVfXykgKyAiOiAiIFwKKyAgICAgICAgICArICNleHBy
ZXNzaW9uICsgIiAhPSAtMSIpOyBcCiAgICAgfSBcCiAgIH0gd2hpbGUgKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCiAKIC8vIFJldHVybnMgdGhlIG1lc3NhZ2UgZGVzY3JpYmlu
ZyB0aGUgbGFzdCBzeXN0ZW0gZXJyb3IgaW4gZXJybm8uCi1TdHJpbmcgR2V0TGFzdEVycm5vRGVz
Y3JpcHRpb24oKSB7Ci0gICAgcmV0dXJuIFN0cmluZyhlcnJubyA9PSAwID8gIiIgOiBwb3NpeDo6
U3RyRXJyb3IoZXJybm8pKTsKK3N0ZDo6c3RyaW5nIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkg
eworICAgIHJldHVybiBlcnJubyA9PSAwID8gIiIgOiBwb3NpeDo6U3RyRXJyb3IoZXJybm8pOwog
fQogCiAvLyBUaGlzIGlzIGNhbGxlZCBmcm9tIGEgZGVhdGggdGVzdCBwYXJlbnQgcHJvY2VzcyB0
byByZWFkIGEgZmFpbHVyZQpAQCAtMjk5LDExICszNzksMTEgQEAgY29uc3QgY2hhciogRGVhdGhU
ZXN0OjpMYXN0TWVzc2FnZSgpIHsKICAgcmV0dXJuIGxhc3RfZGVhdGhfdGVzdF9tZXNzYWdlXy5j
X3N0cigpOwogfQogCi12b2lkIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdl
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewordm9pZCBEZWF0aFRlc3Q6OnNldF9sYXN0X2RlYXRo
X3Rlc3RfbWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgewogICBsYXN0X2RlYXRo
X3Rlc3RfbWVzc2FnZV8gPSBtZXNzYWdlOwogfQogCi1TdHJpbmcgRGVhdGhUZXN0OjpsYXN0X2Rl
YXRoX3Rlc3RfbWVzc2FnZV87CitzdGQ6OnN0cmluZyBEZWF0aFRlc3Q6Omxhc3RfZGVhdGhfdGVz
dF9tZXNzYWdlXzsKIAogLy8gUHJvdmlkZXMgY3Jvc3MgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24g
Zm9yIHNvbWUgZGVhdGggZnVuY3Rpb25hbGl0eS4KIGNsYXNzIERlYXRoVGVzdEltcGwgOiBwdWJs
aWMgRGVhdGhUZXN0IHsKQEAgLTM4OCw2ICs0NjgsOSBAQCB2b2lkIERlYXRoVGVzdEltcGw6OlJl
YWRBbmRJbnRlcnByZXRTdGF0dXNCeXRlKCkgewogICAgICAgY2FzZSBrRGVhdGhUZXN0UmV0dXJu
ZWQ6CiAgICAgICAgIHNldF9vdXRjb21lKFJFVFVSTkVEKTsKICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIGtEZWF0aFRlc3RUaHJldzoKKyAgICAgICAgc2V0X291dGNvbWUoVEhSRVcpOworICAg
ICAgICBicmVhazsKICAgICAgIGNhc2Uga0RlYXRoVGVzdExpdmVkOgogICAgICAgICBzZXRfb3V0
Y29tZShMSVZFRCk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDE2LDE5ICs0OTksNDYgQEAgdm9pZCBE
ZWF0aFRlc3RJbXBsOjpBYm9ydChBYm9ydFJlYXNvbiByZWFzb24pIHsKICAgLy8gaXQgZmluZHMg
YW55IGRhdGEgaW4gb3VyIHBpcGUuICBTbywgaGVyZSB3ZSB3cml0ZSBhIHNpbmdsZSBmbGFnIGJ5
dGUKICAgLy8gdG8gdGhlIHBpcGUsIHRoZW4gZXhpdC4KICAgY29uc3QgY2hhciBzdGF0dXNfY2gg
PQotICAgICAgcmVhc29uID09IFRFU1RfRElEX05PVF9ESUUgPyBrRGVhdGhUZXN0TGl2ZWQgOiBr
RGVhdGhUZXN0UmV0dXJuZWQ7CisgICAgICByZWFzb24gPT0gVEVTVF9ESURfTk9UX0RJRSA/IGtE
ZWF0aFRlc3RMaXZlZCA6CisgICAgICByZWFzb24gPT0gVEVTVF9USFJFV19FWENFUFRJT04gPyBr
RGVhdGhUZXN0VGhyZXcgOiBrRGVhdGhUZXN0UmV0dXJuZWQ7CisKICAgR1RFU1RfREVBVEhfVEVT
VF9DSEVDS19TWVNDQUxMXyhwb3NpeDo6V3JpdGUod3JpdGVfZmQoKSwgJnN0YXR1c19jaCwgMSkp
OwotICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKHBvc2l4OjpDbG9zZSh3cml0ZV9m
ZCgpKSk7CisgIC8vIFdlIGFyZSBsZWFraW5nIHRoZSBkZXNjcmlwdG9yIGhlcmUgYmVjYXVzZSBv
biBzb21lIHBsYXRmb3JtcyAoaS5lLiwKKyAgLy8gd2hlbiBidWlsdCBhcyBXaW5kb3dzIERMTCks
IGRlc3RydWN0b3JzIG9mIGdsb2JhbCBvYmplY3RzIHdpbGwgc3RpbGwKKyAgLy8gcnVuIGFmdGVy
IGNhbGxpbmcgX2V4aXQoKS4gT24gc3VjaCBzeXN0ZW1zLCB3cml0ZV9mZF8gd2lsbCBiZQorICAv
LyBpbmRpcmVjdGx5IGNsb3NlZCBmcm9tIHRoZSBkZXN0cnVjdG9yIG9mIFVuaXRUZXN0SW1wbCwg
Y2F1c2luZyBkb3VibGUKKyAgLy8gY2xvc2UgaWYgaXQgaXMgYWxzbyBjbG9zZWQgaGVyZS4gT24g
ZGVidWcgY29uZmlndXJhdGlvbnMsIGRvdWJsZSBjbG9zZQorICAvLyBtYXkgYXNzZXJ0LiBBcyB0
aGVyZSBhcmUgbm8gaW4tcHJvY2VzcyBidWZmZXJzIHRvIGZsdXNoIGhlcmUsIHdlIGFyZQorICAv
LyByZWx5aW5nIG9uIHRoZSBPUyB0byBjbG9zZSB0aGUgZGVzY3JpcHRvciBhZnRlciB0aGUgcHJv
Y2VzcyB0ZXJtaW5hdGVzCisgIC8vIHdoZW4gdGhlIGRlc3RydWN0b3JzIGFyZSBub3QgcnVuLgog
ICBfZXhpdCgxKTsgIC8vIEV4aXRzIHcvbyBhbnkgbm9ybWFsIGV4aXQgaG9va3MgKHdlIHdlcmUg
c3VwcG9zZWQgdG8gY3Jhc2gpCiB9CiAKKy8vIFJldHVybnMgYW4gaW5kZW50ZWQgY29weSBvZiBz
dGRlcnIgb3V0cHV0IGZvciBhIGRlYXRoIHRlc3QuCisvLyBUaGlzIG1ha2VzIGRpc3Rpbmd1aXNo
aW5nIGRlYXRoIHRlc3Qgb3V0cHV0IGxpbmVzIGZyb20gcmVndWxhciBsb2cgbGluZXMKKy8vIG11
Y2ggZWFzaWVyLgorc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGNv
bnN0IDo6c3RkOjpzdHJpbmcmIG91dHB1dCkgeworICA6OnN0ZDo6c3RyaW5nIHJldDsKKyAgZm9y
IChzaXplX3QgYXQgPSAwOyA7ICkgeworICAgIGNvbnN0IHNpemVfdCBsaW5lX2VuZCA9IG91dHB1
dC5maW5kKCdcbicsIGF0KTsKKyAgICByZXQgKz0gIlsgIERFQVRIICAgXSAiOworICAgIGlmIChs
aW5lX2VuZCA9PSA6OnN0ZDo6c3RyaW5nOjpucG9zKSB7CisgICAgICByZXQgKz0gb3V0cHV0LnN1
YnN0cihhdCk7CisgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0ICs9IG91dHB1dC5zdWJzdHIo
YXQsIGxpbmVfZW5kICsgMSAtIGF0KTsKKyAgICBhdCA9IGxpbmVfZW5kICsgMTsKKyAgfQorICBy
ZXR1cm4gcmV0OworfQorCiAvLyBBc3Nlc3NlcyB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIGEg
ZGVhdGggdGVzdCwgdXNpbmcgYm90aCBwcml2YXRlCiAvLyBtZW1iZXJzIHdoaWNoIGhhdmUgcHJl
dmlvdXNseSBiZWVuIHNldCwgYW5kIG9uZSBhcmd1bWVudDoKIC8vCiAvLyBQcml2YXRlIGRhdGEg
bWVtYmVyczoKIC8vICAgb3V0Y29tZTogIEFuIGVudW1lcmF0aW9uIGRlc2NyaWJpbmcgaG93IHRo
ZSBkZWF0aCB0ZXN0Ci0vLyAgICAgICAgICAgICBjb25jbHVkZWQ6IERJRUQsIExJVkVELCBvciBS
RVRVUk5FRC4gIFRoZSBkZWF0aCB0ZXN0IGZhaWxzCi0vLyAgICAgICAgICAgICBpbiB0aGUgbGF0
dGVyIHR3byBjYXNlcy4KKy8vICAgICAgICAgICAgIGNvbmNsdWRlZDogRElFRCwgTElWRUQsIFRI
UkVXLCBvciBSRVRVUk5FRC4gIFRoZSBkZWF0aCB0ZXN0CisvLyAgICAgICAgICAgICBmYWlscyBp
biB0aGUgbGF0dGVyIHRocmVlIGNhc2VzLgogLy8gICBzdGF0dXM6ICAgVGhlIGV4aXQgc3RhdHVz
IG9mIHRoZSBjaGlsZCBwcm9jZXNzLiBPbiAqbml4LCBpdCBpcyBpbiB0aGUKIC8vICAgICAgICAg
ICAgIGluIHRoZSBmb3JtYXQgc3BlY2lmaWVkIGJ5IHdhaXQoMikuIE9uIFdpbmRvd3MsIHRoaXMg
aXMgdGhlCiAvLyAgICAgICAgICAgICB2YWx1ZSBzdXBwbGllZCB0byB0aGUgRXhpdFByb2Nlc3Mo
KSBBUEkgb3IgYSBudW1lcmljIGNvZGUKQEAgLTQ0OCw3ICs1NTgsNyBAQCBib29sIERlYXRoVGVz
dEltcGw6OlBhc3NlZChib29sIHN0YXR1c19vaykgewogICBpZiAoIXNwYXduZWQoKSkKICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgY29uc3QgU3RyaW5nIGVycm9yX21lc3NhZ2UgPSBHZXRDYXB0dXJl
ZFN0ZGVycigpOworICBjb25zdCBzdGQ6OnN0cmluZyBlcnJvcl9tZXNzYWdlID0gR2V0Q2FwdHVy
ZWRTdGRlcnIoKTsKIAogICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgTWVzc2FnZSBidWZmZXI7
CkBAIC00NTcsMjUgKzU2NywzNSBAQCBib29sIERlYXRoVGVzdEltcGw6OlBhc3NlZChib29sIHN0
YXR1c19vaykgewogICBzd2l0Y2ggKG91dGNvbWUoKSkgewogICAgIGNhc2UgTElWRUQ6CiAgICAg
ICBidWZmZXIgPDwgIiAgICBSZXN1bHQ6IGZhaWxlZCB0byBkaWUuXG4iCi0gICAgICAgICAgICAg
PDwgIiBFcnJvciBtc2c6ICIgPDwgZXJyb3JfbWVzc2FnZTsKKyAgICAgICAgICAgICA8PCAiIEVy
cm9yIG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGVycm9yX21lc3NhZ2UpOworICAg
ICAgYnJlYWs7CisgICAgY2FzZSBUSFJFVzoKKyAgICAgIGJ1ZmZlciA8PCAiICAgIFJlc3VsdDog
dGhyZXcgYW4gZXhjZXB0aW9uLlxuIgorICAgICAgICAgICAgIDw8ICIgRXJyb3IgbXNnOlxuIiA8
PCBGb3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2FnZSk7CiAgICAgICBicmVhazsKICAg
ICBjYXNlIFJFVFVSTkVEOgogICAgICAgYnVmZmVyIDw8ICIgICAgUmVzdWx0OiBpbGxlZ2FsIHJl
dHVybiBpbiB0ZXN0IHN0YXRlbWVudC5cbiIKLSAgICAgICAgICAgICA8PCAiIEVycm9yIG1zZzog
IiA8PCBlcnJvcl9tZXNzYWdlOworICAgICAgICAgICAgIDw8ICIgRXJyb3IgbXNnOlxuIiA8PCBG
b3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2FnZSk7CiAgICAgICBicmVhazsKICAgICBj
YXNlIERJRUQ6CiAgICAgICBpZiAoc3RhdHVzX29rKSB7CisjIGlmIEdURVNUX1VTRVNfUENSRQor
ICAgICAgICAvLyBQQ1JFIHJlZ2V4ZXMgc3VwcG9ydCBlbWJlZGRlZCBOVUxzLgorICAgICAgICBj
b25zdCBib29sIG1hdGNoZWQgPSBSRTo6UGFydGlhbE1hdGNoKGVycm9yX21lc3NhZ2UsICpyZWdl
eCgpKTsKKyMgZWxzZQogICAgICAgICBjb25zdCBib29sIG1hdGNoZWQgPSBSRTo6UGFydGlhbE1h
dGNoKGVycm9yX21lc3NhZ2UuY19zdHIoKSwgKnJlZ2V4KCkpOworIyBlbmRpZiAgLy8gR1RFU1Rf
VVNFU19QQ1JFCiAgICAgICAgIGlmIChtYXRjaGVkKSB7CiAgICAgICAgICAgc3VjY2VzcyA9IHRy
dWU7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgYnVmZmVyIDw8ICIgICAgUmVzdWx0OiBk
aWVkIGJ1dCBub3Qgd2l0aCBleHBlY3RlZCBlcnJvci5cbiIKICAgICAgICAgICAgICAgICAgPDwg
IiAgRXhwZWN0ZWQ6ICIgPDwgcmVnZXgoKS0+cGF0dGVybigpIDw8ICJcbiIKLSAgICAgICAgICAg
ICAgICAgPDwgIkFjdHVhbCBtc2c6ICIgPDwgZXJyb3JfbWVzc2FnZTsKKyAgICAgICAgICAgICAg
ICAgPDwgIkFjdHVhbCBtc2c6XG4iIDw8IEZvcm1hdERlYXRoVGVzdE91dHB1dChlcnJvcl9tZXNz
YWdlKTsKICAgICAgICAgfQogICAgICAgfSBlbHNlIHsKICAgICAgICAgYnVmZmVyIDw8ICIgICAg
UmVzdWx0OiBkaWVkIGJ1dCBub3Qgd2l0aCBleHBlY3RlZCBleGl0IGNvZGU6XG4iCi0gICAgICAg
ICAgICAgICA8PCAiICAgICAgICAgICAgIiA8PCBFeGl0U3VtbWFyeShzdGF0dXMoKSkgPDwgIlxu
IjsKKyAgICAgICAgICAgICAgIDw8ICIgICAgICAgICAgICAiIDw8IEV4aXRTdW1tYXJ5KHN0YXR1
cygpKSA8PCAiXG4iCisgICAgICAgICAgICAgICA8PCAiQWN0dWFsIG1zZzpcbiIgPDwgRm9ybWF0
RGVhdGhUZXN0T3V0cHV0KGVycm9yX21lc3NhZ2UpOwogICAgICAgfQogICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBJTl9QUk9HUkVTUzoKQEAgLTQ4OCw3ICs2MDgsNyBAQCBib29sIERlYXRoVGVzdElt
cGw6OlBhc3NlZChib29sIHN0YXR1c19vaykgewogICByZXR1cm4gc3VjY2VzczsKIH0KIAotI2lm
IEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lORE9XUwogLy8gV2luZG93c0RlYXRo
VGVzdCBpbXBsZW1lbnRzIGRlYXRoIHRlc3RzIG9uIFdpbmRvd3MuIER1ZSB0byB0aGUKIC8vIHNw
ZWNpZmljcyBvZiBzdGFydGluZyBuZXcgcHJvY2Vzc2VzIG9uIFdpbmRvd3MsIGRlYXRoIHRlc3Rz
IHRoZXJlIGFyZQogLy8gYWx3YXlzIHRocmVhZHNhZmUsIGFuZCBHb29nbGUgVGVzdCBjb25zaWRl
cnMgdGhlCkBAIC01MTksMTEgKzYzOSwxMSBAQCBib29sIERlYXRoVGVzdEltcGw6OlBhc3NlZChi
b29sIHN0YXR1c19vaykgewogLy8KIGNsYXNzIFdpbmRvd3NEZWF0aFRlc3QgOiBwdWJsaWMgRGVh
dGhUZXN0SW1wbCB7CiAgcHVibGljOgotICBXaW5kb3dzRGVhdGhUZXN0KGNvbnN0IGNoYXIqIHN0
YXRlbWVudCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBSRSogcmVnZXgsCisgIFdpbmRvd3NE
ZWF0aFRlc3QoY29uc3QgY2hhciogYV9zdGF0ZW1lbnQsCisgICAgICAgICAgICAgICAgICAgY29u
c3QgUkUqIGFfcmVnZXgsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwKICAg
ICAgICAgICAgICAgICAgICBpbnQgbGluZSkKLSAgICAgIDogRGVhdGhUZXN0SW1wbChzdGF0ZW1l
bnQsIHJlZ2V4KSwgZmlsZV8oZmlsZSksIGxpbmVfKGxpbmUpIHt9CisgICAgICA6IERlYXRoVGVz
dEltcGwoYV9zdGF0ZW1lbnQsIGFfcmVnZXgpLCBmaWxlXyhmaWxlKSwgbGluZV8obGluZSkge30K
IAogICAvLyBBbGwgb2YgdGhlc2UgdmlydHVhbCBmdW5jdGlvbnMgYXJlIGluaGVyaXRlZCBmcm9t
IERlYXRoVGVzdC4KICAgdmlydHVhbCBpbnQgV2FpdCgpOwpAQCAtNTgwLDEyICs3MDAsMTIgQEAg
aW50IFdpbmRvd3NEZWF0aFRlc3Q6OldhaXQoKSB7CiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tf
KAogICAgICAgV0FJVF9PQkpFQ1RfMCA9PSA6OldhaXRGb3JTaW5nbGVPYmplY3QoY2hpbGRfaGFu
ZGxlXy5HZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IElORklOSVRFKSk7Ci0gIERXT1JEIHN0YXR1czsKLSAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18o
OjpHZXRFeGl0Q29kZVByb2Nlc3MoY2hpbGRfaGFuZGxlXy5HZXQoKSwgJnN0YXR1cykKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIT0gRkFMU0UpOworICBEV09SRCBzdGF0dXNfY29kZTsKKyAg
R1RFU1RfREVBVEhfVEVTVF9DSEVDS18oCisgICAgICA6OkdldEV4aXRDb2RlUHJvY2VzcyhjaGls
ZF9oYW5kbGVfLkdldCgpLCAmc3RhdHVzX2NvZGUpICE9IEZBTFNFKTsKICAgY2hpbGRfaGFuZGxl
Xy5SZXNldCgpOwotICBzZXRfc3RhdHVzKHN0YXRpY19jYXN0PGludD4oc3RhdHVzKSk7Ci0gIHJl
dHVybiB0aGlzLT5zdGF0dXMoKTsKKyAgc2V0X3N0YXR1cyhzdGF0aWNfY2FzdDxpbnQ+KHN0YXR1
c19jb2RlKSk7CisgIHJldHVybiBzdGF0dXMoKTsKIH0KIAogLy8gVGhlIEFzc3VtZVJvbGUgcHJv
Y2VzcyBmb3IgYSBXaW5kb3dzIGRlYXRoIHRlc3QuICBJdCBjcmVhdGVzIGEgY2hpbGQKQEAgLTYy
NSwyMiArNzQ1LDE5IEBAIERlYXRoVGVzdDo6VGVzdFJvbGUgV2luZG93c0RlYXRoVGVzdDo6QXNz
dW1lUm9sZSgpIHsKICAgICAgIEZBTFNFLCAgIC8vIFRoZSBpbml0aWFsIHN0YXRlIGlzIG5vbi1z
aWduYWxsZWQuCiAgICAgICBOVUxMKSk7ICAvLyBUaGUgZXZlbiBpcyB1bm5hbWVkLgogICBHVEVT
VF9ERUFUSF9URVNUX0NIRUNLXyhldmVudF9oYW5kbGVfLkdldCgpICE9IE5VTEwpOwotICBjb25z
dCBTdHJpbmcgZmlsdGVyX2ZsYWcgPSBTdHJpbmc6OkZvcm1hdCgiLS0lcyVzPSVzLiVzIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfRkxBR19QUkVG
SVhfLCBrRmlsdGVyRmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5mby0+dGVzdF9jYXNlX25hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5mby0+bmFtZSgpKTsKLSAgY29uc3QgU3RyaW5nIGludGVybmFs
X2ZsYWcgPSBTdHJpbmc6OkZvcm1hdCgKLSAgICAiLS0lcyVzPSVzfCVkfCVkfCV1fCVJdXwlSXUi
LAotICAgICAgR1RFU1RfRkxBR19QUkVGSVhfLAotICAgICAga0ludGVybmFsUnVuRGVhdGhUZXN0
RmxhZywKLSAgICAgIGZpbGVfLCBsaW5lXywKLSAgICAgIGRlYXRoX3Rlc3RfaW5kZXgsCi0gICAg
ICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KDo6R2V0Q3VycmVudFByb2Nlc3NJZCgpKSwKLSAg
ICAgIC8vIHNpemVfdCBoYXMgdGhlIHNhbWUgd2l0aCBhcyBwb2ludGVycyBvbiBib3RoIDMyLWJp
dCBhbmQgNjQtYml0CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbHRlcl9mbGFnID0KKyAgICAgIHN0
ZDo6c3RyaW5nKCItLSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsga0ZpbHRlckZsYWcgKyAiPSIg
KworICAgICAgaW5mby0+dGVzdF9jYXNlX25hbWUoKSArICIuIiArIGluZm8tPm5hbWUoKTsKKyAg
Y29uc3Qgc3RkOjpzdHJpbmcgaW50ZXJuYWxfZmxhZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0i
KSArIEdURVNUX0ZMQUdfUFJFRklYXyArIGtJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcgKworICAg
ICAgIj0iICsgZmlsZV8gKyAifCIgKyBTdHJlYW1hYmxlVG9TdHJpbmcobGluZV8pICsgInwiICsK
KyAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhkZWF0aF90ZXN0X2luZGV4KSArICJ8IiArCisgICAg
ICBTdHJlYW1hYmxlVG9TdHJpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pig6OkdldEN1cnJl
bnRQcm9jZXNzSWQoKSkpICsKKyAgICAgIC8vIHNpemVfdCBoYXMgdGhlIHNhbWUgd2lkdGggYXMg
cG9pbnRlcnMgb24gYm90aCAzMi1iaXQgYW5kIDY0LWJpdAogICAgICAgLy8gV2luZG93cyBwbGF0
Zm9ybXMuCiAgICAgICAvLyBTZWUgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJy
YXJ5L3RjeGYxZHc2LmFzcHguCi0gICAgICByZWludGVycHJldF9jYXN0PHNpemVfdD4od3JpdGVf
aGFuZGxlKSwKLSAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihldmVudF9oYW5kbGVfLkdl
dCgpKSk7CisgICAgICAifCIgKyBTdHJlYW1hYmxlVG9TdHJpbmcocmVpbnRlcnByZXRfY2FzdDxz
aXplX3Q+KHdyaXRlX2hhbmRsZSkpICsKKyAgICAgICJ8IiArIFN0cmVhbWFibGVUb1N0cmluZyhy
ZWludGVycHJldF9jYXN0PHNpemVfdD4oZXZlbnRfaGFuZGxlXy5HZXQoKSkpOwogCiAgIGNoYXIg
ZXhlY3V0YWJsZV9wYXRoW19NQVhfUEFUSCArIDFdOyAgLy8gTk9MSU5UCiAgIEdURVNUX0RFQVRI
X1RFU1RfQ0hFQ0tfKApAQCAtNjQ4LDEwICs3NjUsOSBAQCBEZWF0aFRlc3Q6OlRlc3RSb2xlIFdp
bmRvd3NEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVfcGF0aCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX01BWF9QQVRIKSk7CiAKLSAgU3RyaW5nIGNvbW1hbmRf
bGluZSA9IFN0cmluZzo6Rm9ybWF0KCIlcyAlcyBcIiVzXCIiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOjpHZXRDb21tYW5kTGluZUEoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl9mbGFnLmNfc3RyKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbF9mbGFnLmNfc3RyKCkpOworICBz
dGQ6OnN0cmluZyBjb21tYW5kX2xpbmUgPQorICAgICAgc3RkOjpzdHJpbmcoOjpHZXRDb21tYW5k
TGluZUEoKSkgKyAiICIgKyBmaWx0ZXJfZmxhZyArICIgXCIiICsKKyAgICAgIGludGVybmFsX2Zs
YWcgKyAiXCIiOwogCiAgIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKCIi
KTsKIApAQCAtNjg0LDcgKzgwMCwyMDAgQEAgRGVhdGhUZXN0OjpUZXN0Um9sZSBXaW5kb3dzRGVh
dGhUZXN0OjpBc3N1bWVSb2xlKCkgewogICBzZXRfc3Bhd25lZCh0cnVlKTsKICAgcmV0dXJuIE9W
RVJTRUVfVEVTVDsKIH0KLSNlbHNlICAvLyBXZSBhcmUgbm90IG9uIFdpbmRvd3MuCisKKyMgZWxp
ZiBHVEVTVF9PU19GVUNIU0lBCisKK2NsYXNzIEZ1Y2hzaWFEZWF0aFRlc3QgOiBwdWJsaWMgRGVh
dGhUZXN0SW1wbCB7CisgcHVibGljOgorICBGdWNoc2lhRGVhdGhUZXN0KGNvbnN0IGNoYXIqIGFf
c3RhdGVtZW50LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFKiBhX3JlZ2V4LAorICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsCisgICAgICAgICAgICAgICAgICAgaW50IGxp
bmUpCisgICAgICA6IERlYXRoVGVzdEltcGwoYV9zdGF0ZW1lbnQsIGFfcmVnZXgpLCBmaWxlXyhm
aWxlKSwgbGluZV8obGluZSkge30KKyAgdmlydHVhbCB+RnVjaHNpYURlYXRoVGVzdCgpIHsKKyAg
ICB6eF9zdGF0dXNfdCBzdGF0dXMgPSB6eF9oYW5kbGVfY2xvc2UoY2hpbGRfcHJvY2Vzc18pOwor
ICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1cyA9PSBaWF9PSyk7CisgICAgc3RhdHVz
ID0genhfaGFuZGxlX2Nsb3NlKHBvcnRfKTsKKyAgICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhz
dGF0dXMgPT0gWlhfT0spOworICB9CisKKyAgLy8gQWxsIG9mIHRoZXNlIHZpcnR1YWwgZnVuY3Rp
b25zIGFyZSBpbmhlcml0ZWQgZnJvbSBEZWF0aFRlc3QuCisgIHZpcnR1YWwgaW50IFdhaXQoKTsK
KyAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCk7CisKKyBwcml2YXRlOgorICAvLyBUaGUg
bmFtZSBvZiB0aGUgZmlsZSBpbiB3aGljaCB0aGUgZGVhdGggdGVzdCBpcyBsb2NhdGVkLgorICBj
b25zdCBjaGFyKiBjb25zdCBmaWxlXzsKKyAgLy8gVGhlIGxpbmUgbnVtYmVyIG9uIHdoaWNoIHRo
ZSBkZWF0aCB0ZXN0IGlzIGxvY2F0ZWQuCisgIGNvbnN0IGludCBsaW5lXzsKKworICB6eF9oYW5k
bGVfdCBjaGlsZF9wcm9jZXNzXyA9IFpYX0hBTkRMRV9JTlZBTElEOworICB6eF9oYW5kbGVfdCBw
b3J0XyA9IFpYX0hBTkRMRV9JTlZBTElEOworfTsKKworLy8gVXRpbGl0eSBjbGFzcyBmb3IgYWNj
dW11bGF0aW5nIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuCitjbGFzcyBBcmd1bWVudHMgeworIHB1
YmxpYzoKKyAgQXJndW1lbnRzKCkgeworICAgIGFyZ3NfLnB1c2hfYmFjayhOVUxMKTsKKyAgfQor
CisgIH5Bcmd1bWVudHMoKSB7CisgICAgZm9yIChzdGQ6OnZlY3RvcjxjaGFyKj46Oml0ZXJhdG9y
IGkgPSBhcmdzXy5iZWdpbigpOyBpICE9IGFyZ3NfLmVuZCgpOworICAgICAgICAgKytpKSB7Cisg
ICAgICBmcmVlKCppKTsKKyAgICB9CisgIH0KKyAgdm9pZCBBZGRBcmd1bWVudChjb25zdCBjaGFy
KiBhcmd1bWVudCkgeworICAgIGFyZ3NfLmluc2VydChhcmdzXy5lbmQoKSAtIDEsIHBvc2l4OjpT
dHJEdXAoYXJndW1lbnQpKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBTdHI+CisgIHZv
aWQgQWRkQXJndW1lbnRzKGNvbnN0IDo6c3RkOjp2ZWN0b3I8U3RyPiYgYXJndW1lbnRzKSB7Cisg
ICAgZm9yICh0eXBlbmFtZSA6OnN0ZDo6dmVjdG9yPFN0cj46OmNvbnN0X2l0ZXJhdG9yIGkgPSBh
cmd1bWVudHMuYmVnaW4oKTsKKyAgICAgICAgIGkgIT0gYXJndW1lbnRzLmVuZCgpOworICAgICAg
ICAgKytpKSB7CisgICAgICBhcmdzXy5pbnNlcnQoYXJnc18uZW5kKCkgLSAxLCBwb3NpeDo6U3Ry
RHVwKGktPmNfc3RyKCkpKTsKKyAgICB9CisgIH0KKyAgY2hhciogY29uc3QqIEFyZ3YoKSB7Cisg
ICAgcmV0dXJuICZhcmdzX1swXTsKKyAgfQorCisgIGludCBzaXplKCkgeworICAgIHJldHVybiBh
cmdzXy5zaXplKCkgLSAxOworICB9CisKKyBwcml2YXRlOgorICBzdGQ6OnZlY3RvcjxjaGFyKj4g
YXJnc187Cit9OworCisvLyBXYWl0cyBmb3IgdGhlIGNoaWxkIGluIGEgZGVhdGggdGVzdCB0byBl
eGl0LCByZXR1cm5pbmcgaXRzIGV4aXQKKy8vIHN0YXR1cywgb3IgMCBpZiBubyBjaGlsZCBwcm9j
ZXNzIGV4aXN0cy4gIEFzIGEgc2lkZSBlZmZlY3QsIHNldHMgdGhlCisvLyBvdXRjb21lIGRhdGEg
bWVtYmVyLgoraW50IEZ1Y2hzaWFEZWF0aFRlc3Q6OldhaXQoKSB7CisgIGlmICghc3Bhd25lZCgp
KQorICAgIHJldHVybiAwOworCisgIC8vIFJlZ2lzdGVyIHRvIHdhaXQgZm9yIHRoZSBjaGlsZCBw
cm9jZXNzIHRvIHRlcm1pbmF0ZS4KKyAgenhfc3RhdHVzX3Qgc3RhdHVzX3p4OworICBzdGF0dXNf
enggPSB6eF9vYmplY3Rfd2FpdF9hc3luYyhjaGlsZF9wcm9jZXNzXywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcG9ydF8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAgLyoga2V5ICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBa
WF9QUk9DRVNTX1RFUk1JTkFURUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFpYX1dBSVRfQVNZTkNfT05DRSk7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1c196
eCA9PSBaWF9PSyk7CisKKyAgLy8gV2FpdCBmb3IgaXQgdG8gdGVybWluYXRlLCBvciBhbiBleGNl
cHRpb24gdG8gYmUgcmVjZWl2ZWQuCisgIHp4X3BvcnRfcGFja2V0X3QgcGFja2V0OworICBzdGF0
dXNfenggPSB6eF9wb3J0X3dhaXQocG9ydF8sIFpYX1RJTUVfSU5GSU5JVEUsICZwYWNrZXQpOwor
ICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhzdGF0dXNfenggPT0gWlhfT0spOworCisgIGlmICha
WF9QS1RfSVNfRVhDRVBUSU9OKHBhY2tldC50eXBlKSkgeworICAgIC8vIFByb2Nlc3MgZW5jb3Vu
dGVyZWQgYW4gZXhjZXB0aW9uLiBLaWxsIGl0IGRpcmVjdGx5IHJhdGhlciB0aGFuIGxldHRpbmcK
KyAgICAvLyBvdGhlciBoYW5kbGVycyBwcm9jZXNzIHRoZSBldmVudC4KKyAgICBzdGF0dXNfengg
PSB6eF90YXNrX2tpbGwoY2hpbGRfcHJvY2Vzc18pOworICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hF
Q0tfKHN0YXR1c196eCA9PSBaWF9PSyk7CisKKyAgICAvLyBOb3cgd2FpdCBmb3IgfGNoaWxkX3By
b2Nlc3NffCB0byB0ZXJtaW5hdGUuCisgICAgenhfc2lnbmFsc190IHNpZ25hbHMgPSAwOworICAg
IHN0YXR1c196eCA9IHp4X29iamVjdF93YWl0X29uZSgKKyAgICAgICAgY2hpbGRfcHJvY2Vzc18s
IFpYX1BST0NFU1NfVEVSTUlOQVRFRCwgWlhfVElNRV9JTkZJTklURSwgJnNpZ25hbHMpOworICAg
IEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1c196eCA9PSBaWF9PSyk7CisgICAgR1RFU1Rf
REVBVEhfVEVTVF9DSEVDS18oc2lnbmFscyAmIFpYX1BST0NFU1NfVEVSTUlOQVRFRCk7CisgIH0g
ZWxzZSB7CisgICAgLy8gUHJvY2VzcyB0ZXJtaW5hdGVkLgorICAgIEdURVNUX0RFQVRIX1RFU1Rf
Q0hFQ0tfKFpYX1BLVF9JU19TSUdOQUxfT05FKHBhY2tldC50eXBlKSk7CisgICAgR1RFU1RfREVB
VEhfVEVTVF9DSEVDS18ocGFja2V0LnNpZ25hbC5vYnNlcnZlZCAmIFpYX1BST0NFU1NfVEVSTUlO
QVRFRCk7CisgIH0KKworICBSZWFkQW5kSW50ZXJwcmV0U3RhdHVzQnl0ZSgpOworCisgIHp4X2lu
Zm9fcHJvY2Vzc190IGJ1ZmZlcjsKKyAgc3RhdHVzX3p4ID0genhfb2JqZWN0X2dldF9pbmZvKAor
ICAgICAgY2hpbGRfcHJvY2Vzc18sCisgICAgICBaWF9JTkZPX1BST0NFU1MsCisgICAgICAmYnVm
ZmVyLAorICAgICAgc2l6ZW9mKGJ1ZmZlciksCisgICAgICBudWxscHRyLAorICAgICAgbnVsbHB0
cik7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1c196eCA9PSBaWF9PSyk7CisKKyAg
R1RFU1RfREVBVEhfVEVTVF9DSEVDS18oYnVmZmVyLmV4aXRlZCk7CisgIHNldF9zdGF0dXMoYnVm
ZmVyLnJldHVybl9jb2RlKTsKKyAgcmV0dXJuIHN0YXR1cygpOworfQorCisvLyBUaGUgQXNzdW1l
Um9sZSBwcm9jZXNzIGZvciBhIEZ1Y2hzaWEgZGVhdGggdGVzdC4gIEl0IGNyZWF0ZXMgYSBjaGls
ZAorLy8gcHJvY2VzcyB3aXRoIHRoZSBzYW1lIGV4ZWN1dGFibGUgYXMgdGhlIGN1cnJlbnQgcHJv
Y2VzcyB0byBydW4gdGhlCisvLyBkZWF0aCB0ZXN0LiAgVGhlIGNoaWxkIHByb2Nlc3MgaXMgZ2l2
ZW4gdGhlIC0tZ3Rlc3RfZmlsdGVyIGFuZAorLy8gLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhf
dGVzdCBmbGFncyBzdWNoIHRoYXQgaXQga25vd3MgdG8gcnVuIHRoZQorLy8gY3VycmVudCBkZWF0
aCB0ZXN0IG9ubHkuCitEZWF0aFRlc3Q6OlRlc3RSb2xlIEZ1Y2hzaWFEZWF0aFRlc3Q6OkFzc3Vt
ZVJvbGUoKSB7CisgIGNvbnN0IFVuaXRUZXN0SW1wbCogY29uc3QgaW1wbCA9IEdldFVuaXRUZXN0
SW1wbCgpOworICBjb25zdCBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcqIGNvbnN0IGZsYWcgPQor
ICAgICAgaW1wbC0+aW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfZmxhZygpOworICBjb25zdCBUZXN0
SW5mbyogY29uc3QgaW5mbyA9IGltcGwtPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisgIGNvbnN0IGlu
dCBkZWF0aF90ZXN0X2luZGV4ID0gaW5mby0+cmVzdWx0KCktPmRlYXRoX3Rlc3RfY291bnQoKTsK
KworICBpZiAoZmxhZyAhPSBOVUxMKSB7CisgICAgLy8gUGFyc2VJbnRlcm5hbFJ1bkRlYXRoVGVz
dEZsYWcoKSBoYXMgcGVyZm9ybWVkIGFsbCB0aGUgbmVjZXNzYXJ5CisgICAgLy8gcHJvY2Vzc2lu
Zy4KKyAgICBzZXRfd3JpdGVfZmQoa0Z1Y2hzaWFSZWFkUGlwZUZkKTsKKyAgICByZXR1cm4gRVhF
Q1VURV9URVNUOworICB9CisKKyAgQ2FwdHVyZVN0ZGVycigpOworICAvLyBGbHVzaCB0aGUgbG9n
IGJ1ZmZlcnMgc2luY2UgdGhlIGxvZyBzdHJlYW1zIGFyZSBzaGFyZWQgd2l0aCB0aGUgY2hpbGQu
CisgIEZsdXNoSW5mb0xvZygpOworCisgIC8vIEJ1aWxkIHRoZSBjaGlsZCBwcm9jZXNzIGNvbW1h
bmQgbGluZS4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsdGVyX2ZsYWcgPQorICAgICAgc3RkOjpz
dHJpbmcoIi0tIikgKyBHVEVTVF9GTEFHX1BSRUZJWF8gKyBrRmlsdGVyRmxhZyArICI9IgorICAg
ICAgKyBpbmZvLT50ZXN0X2Nhc2VfbmFtZSgpICsgIi4iICsgaW5mby0+bmFtZSgpOworICBjb25z
dCBzdGQ6OnN0cmluZyBpbnRlcm5hbF9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIpICsg
R1RFU1RfRkxBR19QUkVGSVhfICsga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZyArICI9IgorICAg
ICAgKyBmaWxlXyArICJ8IgorICAgICAgKyBTdHJlYW1hYmxlVG9TdHJpbmcobGluZV8pICsgInwi
CisgICAgICArIFN0cmVhbWFibGVUb1N0cmluZyhkZWF0aF90ZXN0X2luZGV4KTsKKyAgQXJndW1l
bnRzIGFyZ3M7CisgIGFyZ3MuQWRkQXJndW1lbnRzKEdldEluamVjdGFibGVBcmd2cygpKTsKKyAg
YXJncy5BZGRBcmd1bWVudChmaWx0ZXJfZmxhZy5jX3N0cigpKTsKKyAgYXJncy5BZGRBcmd1bWVu
dChpbnRlcm5hbF9mbGFnLmNfc3RyKCkpOworCisgIC8vIEJ1aWxkIHRoZSBwaXBlIGZvciBjb21t
dW5pY2F0aW9uIHdpdGggdGhlIGNoaWxkLgorICB6eF9zdGF0dXNfdCBzdGF0dXM7CisgIHp4X2hh
bmRsZV90IGNoaWxkX3BpcGVfaGFuZGxlOworICB1aW50MzJfdCB0eXBlOworICBzdGF0dXMgPSBm
ZGlvX3BpcGVfaGFsZigmY2hpbGRfcGlwZV9oYW5kbGUsICZ0eXBlKTsKKyAgR1RFU1RfREVBVEhf
VEVTVF9DSEVDS18oc3RhdHVzID49IDApOworICBzZXRfcmVhZF9mZChzdGF0dXMpOworCisgIC8v
IFNldCB0aGUgcGlwZSBoYW5kbGUgZm9yIHRoZSBjaGlsZC4KKyAgZmRpb19zcGF3bl9hY3Rpb25f
dCBhZGRfaGFuZGxlX2FjdGlvbiA9IHt9OworICBhZGRfaGFuZGxlX2FjdGlvbi5hY3Rpb24gPSBG
RElPX1NQQVdOX0FDVElPTl9BRERfSEFORExFOworICBhZGRfaGFuZGxlX2FjdGlvbi5oLmlkID0g
UEFfSE5EKHR5cGUsIGtGdWNoc2lhUmVhZFBpcGVGZCk7CisgIGFkZF9oYW5kbGVfYWN0aW9uLmgu
aGFuZGxlID0gY2hpbGRfcGlwZV9oYW5kbGU7CisKKyAgLy8gU3Bhd24gdGhlIGNoaWxkIHByb2Nl
c3MuCisgIHN0YXR1cyA9IGZkaW9fc3Bhd25fZXRjKFpYX0hBTkRMRV9JTlZBTElELCBGRElPX1NQ
QVdOX0NMT05FX0FMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5Bcmd2KClbMF0s
IGFyZ3MuQXJndigpLCBudWxscHRyLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRk
X2hhbmRsZV9hY3Rpb24sICZjaGlsZF9wcm9jZXNzXywgbnVsbHB0cik7CisgIEdURVNUX0RFQVRI
X1RFU1RfQ0hFQ0tfKHN0YXR1cyA9PSBaWF9PSyk7CisKKyAgLy8gQ3JlYXRlIGFuIGV4Y2VwdGlv
biBwb3J0IGFuZCBhdHRhY2ggaXQgdG8gdGhlIHxjaGlsZF9wcm9jZXNzX3wsIHRvIGFsbG93Cisg
IC8vIHVzIHRvIHN1cHByZXNzIHRoZSBzeXN0ZW0gZGVmYXVsdCBleGNlcHRpb24gaGFuZGxlciBm
cm9tIGZpcmluZy4KKyAgc3RhdHVzID0genhfcG9ydF9jcmVhdGUoMCwgJnBvcnRfKTsKKyAgR1RF
U1RfREVBVEhfVEVTVF9DSEVDS18oc3RhdHVzID09IFpYX09LKTsKKyAgc3RhdHVzID0genhfdGFz
a19iaW5kX2V4Y2VwdGlvbl9wb3J0KAorICAgICAgY2hpbGRfcHJvY2Vzc18sIHBvcnRfLCAwIC8q
IGtleSAqLywgMCAvKm9wdGlvbnMgKi8pOworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhzdGF0
dXMgPT0gWlhfT0spOworCisgIHNldF9zcGF3bmVkKHRydWUpOworICByZXR1cm4gT1ZFUlNFRV9U
RVNUOworfQorCisjZWxzZSAgLy8gV2UgYXJlIG5laXRoZXIgb24gV2luZG93cywgbm9yIG9uIEZ1
Y2hzaWEuCiAKIC8vIEZvcmtpbmdEZWF0aFRlc3QgcHJvdmlkZXMgaW1wbGVtZW50YXRpb25zIGZv
ciBtb3N0IG9mIHRoZSBhYnN0cmFjdAogLy8gbWV0aG9kcyBvZiB0aGUgRGVhdGhUZXN0IGludGVy
ZmFjZS4gIE9ubHkgdGhlIEFzc3VtZVJvbGUgbWV0aG9kIGlzCkBAIC03NjgsNiArMTA3Nyw3IEBA
IERlYXRoVGVzdDo6VGVzdFJvbGUgTm9FeGVjRGVhdGhUZXN0OjpBc3N1bWVSb2xlKCkgewogICAg
IC8vIEV2ZW50IGZvcndhcmRpbmcgdG8gdGhlIGxpc3RlbmVycyBvZiBldmVudCBsaXN0ZW5lciBB
UEkgbXVzaCBiZSBzaHV0CiAgICAgLy8gZG93biBpbiBkZWF0aCB0ZXN0IHN1YnByb2Nlc3Nlcy4K
ICAgICBHZXRVbml0VGVzdEltcGwoKS0+bGlzdGVuZXJzKCktPlN1cHByZXNzRXZlbnRGb3J3YXJk
aW5nKCk7CisgICAgZ19pbl9mYXN0X2RlYXRoX3Rlc3RfY2hpbGQgPSB0cnVlOwogICAgIHJldHVy
biBFWEVDVVRFX1RFU1Q7CiAgIH0gZWxzZSB7CiAgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19T
WVNDQUxMXyhjbG9zZShwaXBlX2ZkWzFdKSk7CkBAIC03ODcsNiArMTA5NywxNSBAQCBjbGFzcyBF
eGVjRGVhdGhUZXN0IDogcHVibGljIEZvcmtpbmdEZWF0aFRlc3QgewogICAgICAgRm9ya2luZ0Rl
YXRoVGVzdChhX3N0YXRlbWVudCwgYV9yZWdleCksIGZpbGVfKGZpbGUpLCBsaW5lXyhsaW5lKSB7
IH0KICAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCk7CiAgcHJpdmF0ZToKKyAgc3RhdGlj
IDo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdldEFyZ3ZzRm9yRGVhdGhUZXN0Q2hpbGRQcm9j
ZXNzKCkgeworICAgIDo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGFyZ3MgPSBHZXRJbmplY3Rh
YmxlQXJndnMoKTsKKyMgIGlmIGRlZmluZWQoR1RFU1RfRVhUUkFfREVBVEhfVEVTVF9DT01NQU5E
X0xJTkVfQVJHU18pCisgICAgOjpzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gZXh0cmFfYXJncyA9
CisgICAgICAgIEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ09NTUFORF9MSU5FX0FSR1NfKCk7Cisg
ICAgYXJncy5pbnNlcnQoYXJncy5lbmQoKSwgZXh0cmFfYXJncy5iZWdpbigpLCBleHRyYV9hcmdz
LmVuZCgpKTsKKyMgIGVuZGlmICAvLyBkZWZpbmVkKEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ09N
TUFORF9MSU5FX0FSR1NfKQorICAgIHJldHVybiBhcmdzOworICB9CiAgIC8vIFRoZSBuYW1lIG9m
IHRoZSBmaWxlIGluIHdoaWNoIHRoZSBkZWF0aCB0ZXN0IGlzIGxvY2F0ZWQuCiAgIGNvbnN0IGNo
YXIqIGNvbnN0IGZpbGVfOwogICAvLyBUaGUgbGluZSBudW1iZXIgb24gd2hpY2ggdGhlIGRlYXRo
IHRlc3QgaXMgbG9jYXRlZC4KQEAgLTgyMSw2ICsxMTQwLDcgQEAgY2xhc3MgQXJndW1lbnRzIHsK
ICAgY2hhciogY29uc3QqIEFyZ3YoKSB7CiAgICAgcmV0dXJuICZhcmdzX1swXTsKICAgfQorCiAg
cHJpdmF0ZToKICAgc3RkOjp2ZWN0b3I8Y2hhcio+IGFyZ3NfOwogfTsKQEAgLTgzMiw2ICsxMTUy
LDIxIEBAIHN0cnVjdCBFeGVjRGVhdGhUZXN0QXJncyB7CiAgIGludCBjbG9zZV9mZDsgICAgICAg
Ly8gRmlsZSBkZXNjcmlwdG9yIHRvIGNsb3NlOyB0aGUgcmVhZCBlbmQgb2YgYSBwaXBlCiB9Owog
CisjICBpZiBHVEVTVF9PU19NQUMKK2lubGluZSBjaGFyKiogR2V0RW52aXJvbigpIHsKKyAgLy8g
V2hlbiBHb29nbGUgVGVzdCBpcyBidWlsdCBhcyBhIGZyYW1ld29yayBvbiBNYWNPUyBYLCB0aGUg
ZW52aXJvbiB2YXJpYWJsZQorICAvLyBpcyB1bmF2YWlsYWJsZS4gQXBwbGUncyBkb2N1bWVudGF0
aW9uIChtYW4gZW52aXJvbikgcmVjb21tZW5kcyB1c2luZworICAvLyBfTlNHZXRFbnZpcm9uKCkg
aW5zdGVhZC4KKyAgcmV0dXJuICpfTlNHZXRFbnZpcm9uKCk7Cit9CisjICBlbHNlCisvLyBTb21l
IFBPU0lYIHBsYXRmb3JtcyBleHBlY3QgeW91IHRvIGRlY2xhcmUgZW52aXJvbi4gZXh0ZXJuICJD
IiBtYWtlcworLy8gaXQgcmVzaWRlIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgorZXh0ZXJuICJD
IiBjaGFyKiogZW52aXJvbjsKK2lubGluZSBjaGFyKiogR2V0RW52aXJvbigpIHsgcmV0dXJuIGVu
dmlyb247IH0KKyMgIGVuZGlmICAvLyBHVEVTVF9PU19NQUMKKworIyAgaWYgIUdURVNUX09TX1FO
WAogLy8gVGhlIG1haW4gZnVuY3Rpb24gZm9yIGEgdGhyZWFkc2FmZS1zdHlsZSBkZWF0aCB0ZXN0
IGNoaWxkIHByb2Nlc3MuCiAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBhIGNsb25lKCkt
ZWQgcHJvY2VzcyBhbmQgdGh1cyBtdXN0IGF2b2lkCiAvLyBhbnkgcG90ZW50aWFsbHkgdW5zYWZl
IG9wZXJhdGlvbnMgbGlrZSBtYWxsb2Mgb3IgbGliYyBmdW5jdGlvbnMuCkBAIC04NDYsOSArMTE4
MSw4IEBAIHN0YXRpYyBpbnQgRXhlY0RlYXRoVGVzdENoaWxkTWFpbih2b2lkKiBjaGlsZF9hcmcp
IHsKICAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5nX2Rpcigp
OwogICAvLyBXZSBjYW4gc2FmZWx5IGNhbGwgY2hkaXIoKSBhcyBpdCdzIGEgZGlyZWN0IHN5c3Rl
bSBjYWxsLgogICBpZiAoY2hkaXIob3JpZ2luYWxfZGlyKSAhPSAwKSB7Ci0gICAgRGVhdGhUZXN0
QWJvcnQoU3RyaW5nOjpGb3JtYXQoImNoZGlyKFwiJXNcIikgZmFpbGVkOiAlcyIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxfZGlyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkuY19zdHIoKSkpOwor
ICAgIERlYXRoVGVzdEFib3J0KHN0ZDo6c3RyaW5nKCJjaGRpcihcIiIpICsgb3JpZ2luYWxfZGly
ICsgIlwiKSBmYWlsZWQ6ICIgKworICAgICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2Ny
aXB0aW9uKCkpOwogICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgIH0KIApAQCAtODU3LDQwICsx
MTkxLDk3IEBAIHN0YXRpYyBpbnQgRXhlY0RlYXRoVGVzdENoaWxkTWFpbih2b2lkKiBjaGlsZF9h
cmcpIHsKICAgLy8gdW5zYWZlLiAgU2luY2UgZXhlY3ZlKCkgZG9lc24ndCBzZWFyY2ggdGhlIFBB
VEgsIHRoZSB1c2VyIG11c3QKICAgLy8gaW52b2tlIHRoZSB0ZXN0IHByb2dyYW0gdmlhIGEgdmFs
aWQgcGF0aCB0aGF0IGNvbnRhaW5zIGF0IGxlYXN0CiAgIC8vIG9uZSBwYXRoIHNlcGFyYXRvci4K
LSAgLy8gV2UgaGF2ZSByZXBsYWNlZCBleGVjdmUoKSB3aXRoIGV4ZWN2KCkgZm9yIFdlYktpdCB0
byBhdm9pZCB1c2luZwotICAvLyBlbnZpcm9uLiBJdCBzaG91bGQgYmUgc2FmZSBiZWNhdXNlIGV4
ZWN2KCkgaXMganVzdCBhIHNpbXBsZSB3cmFwcGVyCi0gIC8vIG9mIGV4ZWN2ZSgpLgotICBleGVj
dihhcmdzLT5hcmd2WzBdLCBhcmdzLT5hcmd2KTsKLSAgRGVhdGhUZXN0QWJvcnQoU3RyaW5nOjpG
b3JtYXQoImV4ZWN2KCVzLCAuLi4pIGluICVzIGZhaWxlZDogJXMiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhcmdzLT5hcmd2WzBdLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcmlnaW5hbF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdl
dExhc3RFcnJub0Rlc2NyaXB0aW9uKCkuY19zdHIoKSkpOworICBleGVjdmUoYXJncy0+YXJndlsw
XSwgYXJncy0+YXJndiwgR2V0RW52aXJvbigpKTsKKyAgRGVhdGhUZXN0QWJvcnQoc3RkOjpzdHJp
bmcoImV4ZWN2ZSgiKSArIGFyZ3MtPmFyZ3ZbMF0gKyAiLCAuLi4pIGluICIgKworICAgICAgICAg
ICAgICAgICBvcmlnaW5hbF9kaXIgKyAiIGZhaWxlZDogIiArCisgICAgICAgICAgICAgICAgIEdl
dExhc3RFcnJub0Rlc2NyaXB0aW9uKCkpOwogICByZXR1cm4gRVhJVF9GQUlMVVJFOwogfQorIyAg
ZW5kaWYgIC8vICFHVEVTVF9PU19RTlgKIAorIyAgaWYgR1RFU1RfSEFTX0NMT05FCiAvLyBUd28g
dXRpbGl0eSByb3V0aW5lcyB0aGF0IHRvZ2V0aGVyIGRldGVybWluZSB0aGUgZGlyZWN0aW9uIHRo
ZSBzdGFjawogLy8gZ3Jvd3MuCiAvLyBUaGlzIGNvdWxkIGJlIGFjY29tcGxpc2hlZCBtb3JlIGVs
ZWdhbnRseSBieSBhIHNpbmdsZSByZWN1cnNpdmUKIC8vIGZ1bmN0aW9uLCBidXQgd2Ugd2FudCB0
byBndWFyZCBhZ2FpbnN0IHRoZSB1bmxpa2VseSBwb3NzaWJpbGl0eSBvZgogLy8gYSBzbWFydCBj
b21waWxlciBvcHRpbWl6aW5nIHRoZSByZWN1cnNpb24gYXdheS4KLWJvb2wgU3RhY2tMb3dlclRo
YW5BZGRyZXNzKGNvbnN0IHZvaWQqIHB0cikgeworLy8KKy8vIEdURVNUX05PX0lOTElORV8gaXMg
cmVxdWlyZWQgdG8gcHJldmVudCBHQ0MgNC42IGZyb20gaW5saW5pbmcKKy8vIFN0YWNrTG93ZXJU
aGFuQWRkcmVzcyBpbnRvIFN0YWNrR3Jvd3NEb3duLCB3aGljaCB0aGVuIGRvZXNuJ3QgZ2l2ZQor
Ly8gY29ycmVjdCBhbnN3ZXIuCitzdGF0aWMgdm9pZCBTdGFja0xvd2VyVGhhbkFkZHJlc3MoY29u
c3Qgdm9pZCogcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wqIHJl
c3VsdCkgR1RFU1RfTk9fSU5MSU5FXzsKK3N0YXRpYyB2b2lkIFN0YWNrTG93ZXJUaGFuQWRkcmVz
cyhjb25zdCB2b2lkKiBwdHIsIGJvb2wqIHJlc3VsdCkgewogICBpbnQgZHVtbXk7Ci0gIHJldHVy
biAmZHVtbXkgPCBwdHI7CisgICpyZXN1bHQgPSAoJmR1bW15IDwgcHRyKTsKIH0KIAotYm9vbCBT
dGFja0dyb3dzRG93bigpIHsKKy8vIE1ha2Ugc3VyZSBBZGRyZXNzU2FuaXRpemVyIGRvZXMgbm90
IHRhbXBlciB3aXRoIHRoZSBzdGFjayBoZXJlLgorR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpF
X0FERFJFU1NfCitzdGF0aWMgYm9vbCBTdGFja0dyb3dzRG93bigpIHsKICAgaW50IGR1bW15Owot
ICByZXR1cm4gU3RhY2tMb3dlclRoYW5BZGRyZXNzKCZkdW1teSk7CisgIGJvb2wgcmVzdWx0Owor
ICBTdGFja0xvd2VyVGhhbkFkZHJlc3MoJmR1bW15LCAmcmVzdWx0KTsKKyAgcmV0dXJuIHJlc3Vs
dDsKIH0KLQotLy8gQSB0aHJlYWRzYWZlIGltcGxlbWVudGF0aW9uIG9mIGZvcmsoMikgZm9yIHRo
cmVhZHNhZmUtc3R5bGUgZGVhdGggdGVzdHMKLS8vIHRoYXQgdXNlcyBjbG9uZSgyKS4gIEl0IGRp
ZXMgd2l0aCBhbiBlcnJvciBtZXNzYWdlIGlmIGFueXRoaW5nIGdvZXMKLS8vIHdyb25nLgotc3Rh
dGljIHBpZF90IEV4ZWNEZWF0aFRlc3RGb3JrKGNoYXIqIGNvbnN0KiBhcmd2LCBpbnQgY2xvc2Vf
ZmQpIHsKKyMgIGVuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUKKworLy8gU3Bhd25zIGEgY2hpbGQg
cHJvY2VzcyB3aXRoIHRoZSBzYW1lIGV4ZWN1dGFibGUgYXMgdGhlIGN1cnJlbnQgcHJvY2VzcyBp
bgorLy8gYSB0aHJlYWQtc2FmZSBtYW5uZXIgYW5kIGluc3RydWN0cyBpdCB0byBydW4gdGhlIGRl
YXRoIHRlc3QuICBUaGUKKy8vIGltcGxlbWVudGF0aW9uIHVzZXMgZm9yaygyKSArIGV4ZWMuICBP
biBzeXN0ZW1zIHdoZXJlIGNsb25lKDIpIGlzCisvLyBhdmFpbGFibGUsIGl0IGlzIHVzZWQgaW5z
dGVhZCwgYmVpbmcgc2xpZ2h0bHkgbW9yZSB0aHJlYWQtc2FmZS4gIE9uIFFOWCwKKy8vIGZvcmsg
c3VwcG9ydHMgb25seSBzaW5nbGUtdGhyZWFkZWQgZW52aXJvbm1lbnRzLCBzbyB0aGlzIGZ1bmN0
aW9uIHVzZXMKKy8vIHNwYXduKDIpIHRoZXJlIGluc3RlYWQuICBUaGUgZnVuY3Rpb24gZGllcyB3
aXRoIGFuIGVycm9yIG1lc3NhZ2UgaWYKKy8vIGFueXRoaW5nIGdvZXMgd3JvbmcuCitzdGF0aWMg
cGlkX3QgRXhlY0RlYXRoVGVzdFNwYXduQ2hpbGQoY2hhciogY29uc3QqIGFyZ3YsIGludCBjbG9z
ZV9mZCkgewogICBFeGVjRGVhdGhUZXN0QXJncyBhcmdzID0geyBhcmd2LCBjbG9zZV9mZCB9Owog
ICBwaWRfdCBjaGlsZF9waWQgPSAtMTsKIAotI2lmIEdURVNUX0hBU19DTE9ORQorIyAgaWYgR1RF
U1RfT1NfUU5YCisgIC8vIE9idGFpbnMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGFuZCBzZXRzIGl0
IHRvIGJlIGNsb3NlZCBpbiB0aGUgY2hpbGQKKyAgLy8gcHJvY2Vzcy4KKyAgY29uc3QgaW50IGN3
ZF9mZCA9IG9wZW4oIi4iLCBPX1JET05MWSk7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGN3
ZF9mZCAhPSAtMSk7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oZmNudGwoY3dk
X2ZkLCBGX1NFVEZELCBGRF9DTE9FWEVDKSk7CisgIC8vIFdlIG5lZWQgdG8gZXhlY3V0ZSB0aGUg
dGVzdCBwcm9ncmFtIGluIHRoZSBzYW1lIGVudmlyb25tZW50IHdoZXJlCisgIC8vIGl0IHdhcyBv
cmlnaW5hbGx5IGludm9rZWQuICBUaGVyZWZvcmUgd2UgY2hhbmdlIHRvIHRoZSBvcmlnaW5hbAor
ICAvLyB3b3JraW5nIGRpcmVjdG9yeSBmaXJzdC4KKyAgY29uc3QgY2hhciogY29uc3Qgb3JpZ2lu
YWxfZGlyID0KKyAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5n
X2RpcigpOworICAvLyBXZSBjYW4gc2FmZWx5IGNhbGwgY2hkaXIoKSBhcyBpdCdzIGEgZGlyZWN0
IHN5c3RlbSBjYWxsLgorICBpZiAoY2hkaXIob3JpZ2luYWxfZGlyKSAhPSAwKSB7CisgICAgRGVh
dGhUZXN0QWJvcnQoc3RkOjpzdHJpbmcoImNoZGlyKFwiIikgKyBvcmlnaW5hbF9kaXIgKyAiXCIp
IGZhaWxlZDogIiArCisgICAgICAgICAgICAgICAgICAgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24o
KSk7CisgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgfQorCisgIGludCBmZF9mbGFnczsKKyAg
Ly8gU2V0IGNsb3NlX2ZkIHRvIGJlIGNsb3NlZCBhZnRlciBzcGF3bi4KKyAgR1RFU1RfREVBVEhf
VEVTVF9DSEVDS19TWVNDQUxMXyhmZF9mbGFncyA9IGZjbnRsKGNsb3NlX2ZkLCBGX0dFVEZEKSk7
CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oZmNudGwoY2xvc2VfZmQsIEZfU0VU
RkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRfZmxhZ3MgfCBG
RF9DTE9FWEVDKSk7CisgIHN0cnVjdCBpbmhlcml0YW5jZSBpbmhlcml0ID0gezB9OworICAvLyBz
cGF3biBpcyBhIHN5c3RlbSBjYWxsLgorICBjaGlsZF9waWQgPSBzcGF3bihhcmdzLmFyZ3ZbMF0s
IDAsIE5VTEwsICZpbmhlcml0LCBhcmdzLmFyZ3YsIEdldEVudmlyb24oKSk7CisgIC8vIFJlc3Rv
cmVzIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorICBHVEVTVF9ERUFUSF9URVNUX0NI
RUNLXyhmY2hkaXIoY3dkX2ZkKSAhPSAtMSk7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lT
Q0FMTF8oY2xvc2UoY3dkX2ZkKSk7CisKKyMgIGVsc2UgICAvLyBHVEVTVF9PU19RTlgKKyMgICBp
ZiBHVEVTVF9PU19MSU5VWAorICAvLyBXaGVuIGEgU0lHUFJPRiBzaWduYWwgaXMgcmVjZWl2ZWQg
d2hpbGUgZm9yaygpIG9yIGNsb25lKCkgYXJlIGV4ZWN1dGluZywKKyAgLy8gdGhlIHByb2Nlc3Mg
bWF5IGhhbmcuIFRvIGF2b2lkIHRoaXMsIHdlIGlnbm9yZSBTSUdQUk9GIGhlcmUgYW5kIHJlLWVu
YWJsZQorICAvLyBpdCBhZnRlciB0aGUgY2FsbCB0byBmb3JrKCkvY2xvbmUoKSBpcyBjb21wbGV0
ZS4KKyAgc3RydWN0IHNpZ2FjdGlvbiBzYXZlZF9zaWdwcm9mX2FjdGlvbjsKKyAgc3RydWN0IHNp
Z2FjdGlvbiBpZ25vcmVfc2lncHJvZl9hY3Rpb247CisgIG1lbXNldCgmaWdub3JlX3NpZ3Byb2Zf
YWN0aW9uLCAwLCBzaXplb2YoaWdub3JlX3NpZ3Byb2ZfYWN0aW9uKSk7CisgIHNpZ2VtcHR5c2V0
KCZpZ25vcmVfc2lncHJvZl9hY3Rpb24uc2FfbWFzayk7CisgIGlnbm9yZV9zaWdwcm9mX2FjdGlv
bi5zYV9oYW5kbGVyID0gU0lHX0lHTjsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxM
XyhzaWdhY3Rpb24oCisgICAgICBTSUdQUk9GLCAmaWdub3JlX3NpZ3Byb2ZfYWN0aW9uLCAmc2F2
ZWRfc2lncHJvZl9hY3Rpb24pKTsKKyMgICBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKKworIyAg
IGlmIEdURVNUX0hBU19DTE9ORQogICBjb25zdCBib29sIHVzZV9mb3JrID0gR1RFU1RfRkxBRyhk
ZWF0aF90ZXN0X3VzZV9mb3JrKTsKIAogICBpZiAoIXVzZV9mb3JrKSB7CkBAIC05MDAsMjEgKzEy
OTEsMzcgQEAgc3RhdGljIHBpZF90IEV4ZWNEZWF0aFRlc3RGb3JrKGNoYXIqIGNvbnN0KiBhcmd2
LCBpbnQgY2xvc2VfZmQpIHsKICAgICB2b2lkKiBjb25zdCBzdGFjayA9IG1tYXAoTlVMTCwgc3Rh
Y2tfc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTUFQX0FOT04gfCBNQVBfUFJJVkFURSwgLTEsIDApOwogICAgIEdURVNUX0RFQVRIX1RF
U1RfQ0hFQ0tfKHN0YWNrICE9IE1BUF9GQUlMRUQpOworCisgICAgLy8gTWF4aW11bSBzdGFjayBh
bGlnbm1lbnQgaW4gYnl0ZXM6ICBGb3IgYSBkb3dud2FyZC1ncm93aW5nIHN0YWNrLCB0aGlzCisg
ICAgLy8gYW1vdW50IGlzIHN1YnRyYWN0ZWQgZnJvbSBzaXplIG9mIHRoZSBzdGFjayBzcGFjZSB0
byBnZXQgYW4gYWRkcmVzcworICAgIC8vIHRoYXQgaXMgd2l0aGluIHRoZSBzdGFjayBzcGFjZSBh
bmQgaXMgYWxpZ25lZCBvbiBhbGwgc3lzdGVtcyB3ZSBjYXJlCisgICAgLy8gYWJvdXQuICBBcyBm
YXIgYXMgSSBrbm93IHRoZXJlIGlzIG5vIEFCSSB3aXRoIHN0YWNrIGFsaWdubWVudCBncmVhdGVy
CisgICAgLy8gdGhhbiA2NC4gIFdlIGFzc3VtZSBzdGFjayBhbmQgc3RhY2tfc2l6ZSBhbHJlYWR5
IGhhdmUgYWxpZ25tZW50IG9mCisgICAgLy8ga01heFN0YWNrQWxpZ25tZW50LgorICAgIGNvbnN0
IHNpemVfdCBrTWF4U3RhY2tBbGlnbm1lbnQgPSA2NDsKICAgICB2b2lkKiBjb25zdCBzdGFja190
b3AgPQotICAgICAgICBzdGF0aWNfY2FzdDxjaGFyKj4oc3RhY2spICsgKHN0YWNrX2dyb3dzX2Rv
d24gPyBzdGFja19zaXplIDogMCk7CisgICAgICAgIHN0YXRpY19jYXN0PGNoYXIqPihzdGFjaykg
KworICAgICAgICAgICAgKHN0YWNrX2dyb3dzX2Rvd24gPyBzdGFja19zaXplIC0ga01heFN0YWNr
QWxpZ25tZW50IDogMCk7CisgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhY2tfc2l6ZSA+
IGtNYXhTdGFja0FsaWdubWVudCAmJgorICAgICAgICByZWludGVycHJldF9jYXN0PGludHB0cl90
PihzdGFja190b3ApICUga01heFN0YWNrQWxpZ25tZW50ID09IDApOwogCiAgICAgY2hpbGRfcGlk
ID0gY2xvbmUoJkV4ZWNEZWF0aFRlc3RDaGlsZE1haW4sIHN0YWNrX3RvcCwgU0lHQ0hMRCwgJmFy
Z3MpOwogCiAgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18obXVubWFwKHN0YWNrLCBzdGFja19z
aXplKSAhPSAtMSk7CiAgIH0KLSNlbHNlCisjICAgZWxzZQogICBjb25zdCBib29sIHVzZV9mb3Jr
ID0gdHJ1ZTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NMT05FCisjICAgZW5kaWYgIC8vIEdURVNU
X0hBU19DTE9ORQogCiAgIGlmICh1c2VfZm9yayAmJiAoY2hpbGRfcGlkID0gZm9yaygpKSA9PSAw
KSB7CiAgICAgICBFeGVjRGVhdGhUZXN0Q2hpbGRNYWluKCZhcmdzKTsKICAgICAgIF9leGl0KDAp
OwogICB9CisjICBlbmRpZiAgLy8gR1RFU1RfT1NfUU5YCisjICBpZiBHVEVTVF9PU19MSU5VWAor
ICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKAorICAgICAgc2lnYWN0aW9uKFNJR1BS
T0YsICZzYXZlZF9zaWdwcm9mX2FjdGlvbiwgTlVMTCkpOworIyAgZW5kaWYgIC8vIEdURVNUX09T
X0xJTlVYCiAKICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oY2hpbGRfcGlkICE9IC0xKTsKICAg
cmV0dXJuIGNoaWxkX3BpZDsKQEAgLTk0MiwxNiArMTM0OSwxNiBAQCBEZWF0aFRlc3Q6OlRlc3RS
b2xlIEV4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAgIC8vIGl0IGJlIGNsb3NlZCB3aGVu
IHRoZSBjaGlsZCBwcm9jZXNzIGRvZXMgYW4gZXhlYzoKICAgR1RFU1RfREVBVEhfVEVTVF9DSEVD
S18oZmNudGwocGlwZV9mZFsxXSwgRl9TRVRGRCwgMCkgIT0gLTEpOwogCi0gIGNvbnN0IFN0cmlu
ZyBmaWx0ZXJfZmxhZyA9Ci0gICAgICBTdHJpbmc6OkZvcm1hdCgiLS0lcyVzPSVzLiVzIiwKLSAg
ICAgICAgICAgICAgICAgICAgIEdURVNUX0ZMQUdfUFJFRklYXywga0ZpbHRlckZsYWcsCi0gICAg
ICAgICAgICAgICAgICAgICBpbmZvLT50ZXN0X2Nhc2VfbmFtZSgpLCBpbmZvLT5uYW1lKCkpOwot
ICBjb25zdCBTdHJpbmcgaW50ZXJuYWxfZmxhZyA9Ci0gICAgICBTdHJpbmc6OkZvcm1hdCgiLS0l
cyVzPSVzfCVkfCVkfCVkIiwKLSAgICAgICAgICAgICAgICAgICAgIEdURVNUX0ZMQUdfUFJFRklY
Xywga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZywKLSAgICAgICAgICAgICAgICAgICAgIGZpbGVf
LCBsaW5lXywgZGVhdGhfdGVzdF9pbmRleCwgcGlwZV9mZFsxXSk7CisgIGNvbnN0IHN0ZDo6c3Ry
aW5nIGZpbHRlcl9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIpICsgR1RFU1RfRkxBR19Q
UkVGSVhfICsga0ZpbHRlckZsYWcgKyAiPSIKKyAgICAgICsgaW5mby0+dGVzdF9jYXNlX25hbWUo
KSArICIuIiArIGluZm8tPm5hbWUoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgaW50ZXJuYWxfZmxh
ZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0iKSArIEdURVNUX0ZMQUdfUFJFRklYXyArIGtJbnRl
cm5hbFJ1bkRlYXRoVGVzdEZsYWcgKyAiPSIKKyAgICAgICsgZmlsZV8gKyAifCIgKyBTdHJlYW1h
YmxlVG9TdHJpbmcobGluZV8pICsgInwiCisgICAgICArIFN0cmVhbWFibGVUb1N0cmluZyhkZWF0
aF90ZXN0X2luZGV4KSArICJ8IgorICAgICAgKyBTdHJlYW1hYmxlVG9TdHJpbmcocGlwZV9mZFsx
XSk7CiAgIEFyZ3VtZW50cyBhcmdzOwotICBhcmdzLkFkZEFyZ3VtZW50cyhHZXRBcmd2cygpKTsK
KyAgYXJncy5BZGRBcmd1bWVudHMoR2V0QXJndnNGb3JEZWF0aFRlc3RDaGlsZFByb2Nlc3MoKSk7
CiAgIGFyZ3MuQWRkQXJndW1lbnQoZmlsdGVyX2ZsYWcuY19zdHIoKSk7CiAgIGFyZ3MuQWRkQXJn
dW1lbnQoaW50ZXJuYWxfZmxhZy5jX3N0cigpKTsKIApAQCAtOTYyLDcgKzEzNjksNyBAQCBEZWF0
aFRlc3Q6OlRlc3RSb2xlIEV4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAgIC8vIGlzIG5l
Y2Vzc2FyeS4KICAgRmx1c2hJbmZvTG9nKCk7CiAKLSAgY29uc3QgcGlkX3QgY2hpbGRfcGlkID0g
RXhlY0RlYXRoVGVzdEZvcmsoYXJncy5Bcmd2KCksIHBpcGVfZmRbMF0pOworICBjb25zdCBwaWRf
dCBjaGlsZF9waWQgPSBFeGVjRGVhdGhUZXN0U3Bhd25DaGlsZChhcmdzLkFyZ3YoKSwgcGlwZV9m
ZFswXSk7CiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oY2xvc2UocGlwZV9mZFsx
XSkpOwogICBzZXRfY2hpbGRfcGlkKGNoaWxkX3BpZCk7CiAgIHNldF9yZWFkX2ZkKHBpcGVfZmRb
MF0pOwpAQCAtOTcwLDcgKzEzNzcsNyBAQCBEZWF0aFRlc3Q6OlRlc3RSb2xlIEV4ZWNEZWF0aFRl
c3Q6OkFzc3VtZVJvbGUoKSB7CiAgIHJldHVybiBPVkVSU0VFX1RFU1Q7CiB9CiAKLSNlbmRpZiAg
Ly8gIUdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCiAKIC8v
IENyZWF0ZXMgYSBjb25jcmV0ZSBEZWF0aFRlc3QtZGVyaXZlZCBjbGFzcyB0aGF0IGRlcGVuZHMg
b24gdGhlCiAvLyAtLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgZmxhZywgYW5kIHNldHMgdGhlIHBv
aW50ZXIgcG9pbnRlZCB0bwpAQCAtOTg4LDkgKzEzOTUsMTAgQEAgYm9vbCBEZWZhdWx0RGVhdGhU
ZXN0RmFjdG9yeTo6Q3JlYXRlKGNvbnN0IGNoYXIqIHN0YXRlbWVudCwgY29uc3QgUkUqIHJlZ2V4
LAogCiAgIGlmIChmbGFnICE9IE5VTEwpIHsKICAgICBpZiAoZGVhdGhfdGVzdF9pbmRleCA+IGZs
YWctPmluZGV4KCkpIHsKLSAgICAgIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNz
YWdlKFN0cmluZzo6Rm9ybWF0KAotICAgICAgICAgICJEZWF0aCB0ZXN0IGNvdW50ICglZCkgc29t
ZWhvdyBleGNlZWRlZCBleHBlY3RlZCBtYXhpbXVtICglZCkiLAotICAgICAgICAgIGRlYXRoX3Rl
c3RfaW5kZXgsIGZsYWctPmluZGV4KCkpKTsKKyAgICAgIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVh
dGhfdGVzdF9tZXNzYWdlKAorICAgICAgICAgICJEZWF0aCB0ZXN0IGNvdW50ICgiICsgU3RyZWFt
YWJsZVRvU3RyaW5nKGRlYXRoX3Rlc3RfaW5kZXgpCisgICAgICAgICAgKyAiKSBzb21laG93IGV4
Y2VlZGVkIGV4cGVjdGVkIG1heGltdW0gKCIKKyAgICAgICAgICArIFN0cmVhbWFibGVUb1N0cmlu
ZyhmbGFnLT5pbmRleCgpKSArICIpIik7CiAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBA
IC0xMDAxLDY0ICsxNDA5LDU2IEBAIGJvb2wgRGVmYXVsdERlYXRoVGVzdEZhY3Rvcnk6OkNyZWF0
ZShjb25zdCBjaGFyKiBzdGF0ZW1lbnQsIGNvbnN0IFJFKiByZWdleCwKICAgICB9CiAgIH0KIAot
I2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lORE9XUworCiAgIGlmIChHVEVT
VF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZlIiB8fAogICAgICAgR1RFU1Rf
RkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAiZmFzdCIpIHsKICAgICAqdGVzdCA9IG5ldyBXaW5k
b3dzRGVhdGhUZXN0KHN0YXRlbWVudCwgcmVnZXgsIGZpbGUsIGxpbmUpOwogICB9Ci0jZWxzZQor
CisjIGVsaWYgR1RFU1RfT1NfRlVDSFNJQQorCisgIGlmIChHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rf
c3R5bGUpID09ICJ0aHJlYWRzYWZlIiB8fAorICAgICAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0
eWxlKSA9PSAiZmFzdCIpIHsKKyAgICAqdGVzdCA9IG5ldyBGdWNoc2lhRGVhdGhUZXN0KHN0YXRl
bWVudCwgcmVnZXgsIGZpbGUsIGxpbmUpOworICB9CisKKyMgZWxzZQorCiAgIGlmIChHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZlIikgewogICAgICp0ZXN0ID0gbmV3
IEV4ZWNEZWF0aFRlc3Qoc3RhdGVtZW50LCByZWdleCwgZmlsZSwgbGluZSk7CiAgIH0gZWxzZSBp
ZiAoR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAiZmFzdCIpIHsKICAgICAqdGVzdCA9
IG5ldyBOb0V4ZWNEZWF0aFRlc3Qoc3RhdGVtZW50LCByZWdleCk7CiAgIH0KLSNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUworCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKICAgZWxz
ZSB7ICAvLyBOT0xJTlQgLSB0aGlzIGlzIG1vcmUgcmVhZGFibGUgdGhhbiB1bmJhbGFuY2VkIGJy
YWNrZXRzIGluc2lkZSAjaWYuCi0gICAgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90ZXN0X21l
c3NhZ2UoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICJVbmtub3duIGRlYXRoIHRlc3Qgc3R5bGUg
XCIlc1wiIGVuY291bnRlcmVkIiwKLSAgICAgICAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxl
KS5jX3N0cigpKSk7CisgICAgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2Uo
CisgICAgICAgICJVbmtub3duIGRlYXRoIHRlc3Qgc3R5bGUgXCIiICsgR1RFU1RfRkxBRyhkZWF0
aF90ZXN0X3N0eWxlKQorICAgICAgICArICJcIiBlbmNvdW50ZXJlZCIpOwogICAgIHJldHVybiBm
YWxzZTsKICAgfQogCiAgIHJldHVybiB0cnVlOwogfQogCi0vLyBTcGxpdHMgYSBnaXZlbiBzdHJp
bmcgb24gYSBnaXZlbiBkZWxpbWl0ZXIsIHBvcHVsYXRpbmcgYSBnaXZlbgotLy8gdmVjdG9yIHdp
dGggdGhlIGZpZWxkcy4gIEdURVNUX0hBU19ERUFUSF9URVNUIGltcGxpZXMgdGhhdCB3ZSBoYXZl
Ci0vLyA6OnN0ZDo6c3RyaW5nLCBzbyB3ZSBjYW4gdXNlIGl0IGhlcmUuCi1zdGF0aWMgdm9pZCBT
cGxpdFN0cmluZyhjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIsIGNoYXIgZGVsaW1pdGVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4qIGRlc3Qp
IHsKLSAgOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4gcGFyc2VkOwotICA6OnN0ZDo6c3Ry
aW5nOjpzaXplX3R5cGUgcG9zID0gMDsKLSAgd2hpbGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFs
d2F5c1RydWUoKSkgewotICAgIGNvbnN0IDo6c3RkOjpzdHJpbmc6OnNpemVfdHlwZSBjb2xvbiA9
IHN0ci5maW5kKGRlbGltaXRlciwgcG9zKTsKLSAgICBpZiAoY29sb24gPT0gOjpzdGQ6OnN0cmlu
Zzo6bnBvcykgewotICAgICAgcGFyc2VkLnB1c2hfYmFjayhzdHIuc3Vic3RyKHBvcykpOwotICAg
ICAgYnJlYWs7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHBhcnNlZC5wdXNoX2JhY2soc3RyLnN1YnN0
cihwb3MsIGNvbG9uIC0gcG9zKSk7Ci0gICAgICBwb3MgPSBjb2xvbiArIDE7Ci0gICAgfQotICB9
Ci0gIGRlc3QtPnN3YXAocGFyc2VkKTsKLX0KLQotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYg
R1RFU1RfT1NfV0lORE9XUwogLy8gUmVjcmVhdGVzIHRoZSBwaXBlIGFuZCBldmVudCBoYW5kbGVz
IGZyb20gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMsCiAvLyBzaWduYWxzIHRoZSBldmVudCwgYW5k
IHJldHVybnMgYSBmaWxlIGRlc2NyaXB0b3Igd3JhcHBlZCBhcm91bmQgdGhlIHBpcGUKIC8vIGhh
bmRsZS4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gdGhlIGNoaWxkIHByb2Nlc3Mgb25seS4K
LWludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBpbnQgcGFyZW50X3Byb2Nlc3Nf
aWQsCitzdGF0aWMgaW50IEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9yKHVuc2lnbmVkIGludCBwYXJl
bnRfcHJvY2Vzc19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgd3JpdGVf
aGFuZGxlX2FzX3NpemVfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZXZl
bnRfaGFuZGxlX2FzX3NpemVfdCkgewogICBBdXRvSGFuZGxlIHBhcmVudF9wcm9jZXNzX2hhbmRs
ZSg6Ok9wZW5Qcm9jZXNzKFBST0NFU1NfRFVQX0hBTkRMRSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCAgLy8gTm9uLWluaGVyaXRhYmxl
LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
ZW50X3Byb2Nlc3NfaWQpKTsKICAgaWYgKHBhcmVudF9wcm9jZXNzX2hhbmRsZS5HZXQoKSA9PSBJ
TlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgIERlYXRoVGVzdEFib3J0KFN0cmluZzo6Rm9ybWF0
KCJVbmFibGUgdG8gb3BlbiBwYXJlbnQgcHJvY2VzcyAldSIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyZW50X3Byb2Nlc3NfaWQpKTsKKyAgICBEZWF0aFRlc3RBYm9ydCgi
VW5hYmxlIHRvIG9wZW4gcGFyZW50IHByb2Nlc3MgIiArCisgICAgICAgICAgICAgICAgICAgU3Ry
ZWFtYWJsZVRvU3RyaW5nKHBhcmVudF9wcm9jZXNzX2lkKSk7CiAgIH0KIAotICAvLyBUT0RPKHZs
YWRsQGdvb2dsZS5jb20pOiBSZXBsYWNlIHRoZSBmb2xsb3dpbmcgY2hlY2sgd2l0aCBhCisgIC8v
IEZJWE1FOiBSZXBsYWNlIHRoZSBmb2xsb3dpbmcgY2hlY2sgd2l0aCBhCiAgIC8vIGNvbXBpbGUt
dGltZSBhc3NlcnRpb24gd2hlbiBhdmFpbGFibGUuCiAgIEdURVNUX0NIRUNLXyhzaXplb2YoSEFO
RExFKSA8PSBzaXplb2Yoc2l6ZV90KSk7CiAKQEAgLTEwNjYsNyArMTQ2Niw3IEBAIGludCBHZXRT
dGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBpbnQgcGFyZW50X3Byb2Nlc3NfaWQsCiAgICAg
ICByZWludGVycHJldF9jYXN0PEhBTkRMRT4od3JpdGVfaGFuZGxlX2FzX3NpemVfdCk7CiAgIEhB
TkRMRSBkdXBfd3JpdGVfaGFuZGxlOwogCi0gIC8vIFRoZSBuZXdseSBpbml0aWFsaXplZCBoYW5k
bGUgaXMgYWNjZXNzaWJsZSBvbmx5IGluIGluIHRoZSBwYXJlbnQKKyAgLy8gVGhlIG5ld2x5IGlu
aXRpYWxpemVkIGhhbmRsZSBpcyBhY2Nlc3NpYmxlIG9ubHkgaW4gdGhlIHBhcmVudAogICAvLyBw
cm9jZXNzLiBUbyBvYnRhaW4gb25lIGFjY2Vzc2libGUgd2l0aGluIHRoZSBjaGlsZCwgd2UgbmVl
ZCB0byB1c2UKICAgLy8gRHVwbGljYXRlSGFuZGxlLgogICBpZiAoITo6RHVwbGljYXRlSGFuZGxl
KHBhcmVudF9wcm9jZXNzX2hhbmRsZS5HZXQoKSwgd3JpdGVfaGFuZGxlLApAQCAtMTA3NSw5ICsx
NDc1LDEwIEBAIGludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBpbnQgcGFyZW50
X3Byb2Nlc3NfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEVVBMSUNB
VEVfU0FNRV9BQ0NFU1MgaXMgdXNlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwg
IC8vIFJlcXVlc3Qgbm9uLWluaGVyaXRhYmxlIGhhbmRsZXIuCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFVQTElDQVRFX1NBTUVfQUNDRVNTKSkgewotICAgIERlYXRoVGVzdEFib3J0KFN0cmlu
Zzo6Rm9ybWF0KAotICAgICAgICAiVW5hYmxlIHRvIGR1cGxpY2F0ZSB0aGUgcGlwZSBoYW5kbGUg
JUl1IGZyb20gdGhlIHBhcmVudCBwcm9jZXNzICV1IiwKLSAgICAgICAgd3JpdGVfaGFuZGxlX2Fz
X3NpemVfdCwgcGFyZW50X3Byb2Nlc3NfaWQpKTsKKyAgICBEZWF0aFRlc3RBYm9ydCgiVW5hYmxl
IHRvIGR1cGxpY2F0ZSB0aGUgcGlwZSBoYW5kbGUgIiArCisgICAgICAgICAgICAgICAgICAgU3Ry
ZWFtYWJsZVRvU3RyaW5nKHdyaXRlX2hhbmRsZV9hc19zaXplX3QpICsKKyAgICAgICAgICAgICAg
ICAgICAiIGZyb20gdGhlIHBhcmVudCBwcm9jZXNzICIgKworICAgICAgICAgICAgICAgICAgIFN0
cmVhbWFibGVUb1N0cmluZyhwYXJlbnRfcHJvY2Vzc19pZCkpOwogICB9CiAKICAgY29uc3QgSEFO
RExFIGV2ZW50X2hhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPihldmVudF9oYW5kbGVf
YXNfc2l6ZV90KTsKQEAgLTEwODgsMTcgKzE0ODksMTggQEAgaW50IEdldFN0YXR1c0ZpbGVEZXNj
cmlwdG9yKHVuc2lnbmVkIGludCBwYXJlbnRfcHJvY2Vzc19pZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFVQTElDQVRFX1NBTUVfQUNDRVNTKSkgewotICAgIERlYXRoVGVzdEFi
b3J0KFN0cmluZzo6Rm9ybWF0KAotICAgICAgICAiVW5hYmxlIHRvIGR1cGxpY2F0ZSB0aGUgZXZl
bnQgaGFuZGxlICVJdSBmcm9tIHRoZSBwYXJlbnQgcHJvY2VzcyAldSIsCi0gICAgICAgIGV2ZW50
X2hhbmRsZV9hc19zaXplX3QsIHBhcmVudF9wcm9jZXNzX2lkKSk7CisgICAgRGVhdGhUZXN0QWJv
cnQoIlVuYWJsZSB0byBkdXBsaWNhdGUgdGhlIGV2ZW50IGhhbmRsZSAiICsKKyAgICAgICAgICAg
ICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcoZXZlbnRfaGFuZGxlX2FzX3NpemVfdCkgKworICAg
ICAgICAgICAgICAgICAgICIgZnJvbSB0aGUgcGFyZW50IHByb2Nlc3MgIiArCisgICAgICAgICAg
ICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHBhcmVudF9wcm9jZXNzX2lkKSk7CiAgIH0KIAog
ICBjb25zdCBpbnQgd3JpdGVfZmQgPQogICAgICAgOjpfb3Blbl9vc2ZoYW5kbGUocmVpbnRlcnBy
ZXRfY2FzdDxpbnRwdHJfdD4oZHVwX3dyaXRlX2hhbmRsZSksIE9fQVBQRU5EKTsKICAgaWYgKHdy
aXRlX2ZkID09IC0xKSB7Ci0gICAgRGVhdGhUZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQoCi0gICAg
ICAgICJVbmFibGUgdG8gY29udmVydCBwaXBlIGhhbmRsZSAlSXUgdG8gYSBmaWxlIGRlc2NyaXB0
b3IiLAotICAgICAgICB3cml0ZV9oYW5kbGVfYXNfc2l6ZV90KSk7CisgICAgRGVhdGhUZXN0QWJv
cnQoIlVuYWJsZSB0byBjb252ZXJ0IHBpcGUgaGFuZGxlICIgKworICAgICAgICAgICAgICAgICAg
IFN0cmVhbWFibGVUb1N0cmluZyh3cml0ZV9oYW5kbGVfYXNfc2l6ZV90KSArCisgICAgICAgICAg
ICAgICAgICAgIiB0byBhIGZpbGUgZGVzY3JpcHRvciIpOwogICB9CiAKICAgLy8gU2lnbmFscyB0
aGUgcGFyZW50IHRoYXQgdGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlwZSBoYXMgYmVlbiBhY3F1aXJl
ZApAQCAtMTEwNyw3ICsxNTA5LDcgQEAgaW50IEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9yKHVuc2ln
bmVkIGludCBwYXJlbnRfcHJvY2Vzc19pZCwKIAogICByZXR1cm4gd3JpdGVfZmQ7CiB9Ci0jZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAog
Ly8gUmV0dXJucyBhIG5ld2x5IGNyZWF0ZWQgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnIG9iamVj
dCB3aXRoIGZpZWxkcwogLy8gaW5pdGlhbGl6ZWQgZnJvbSB0aGUgR1RFU1RfRkxBRyhpbnRlcm5h
bF9ydW5fZGVhdGhfdGVzdCkgZmxhZyBpZgpAQCAtMTEyMyw3ICsxNTI1LDggQEAgSW50ZXJuYWxS
dW5EZWF0aFRlc3RGbGFnKiBQYXJzZUludGVybmFsUnVuRGVhdGhUZXN0RmxhZygpIHsKICAgU3Bs
aXRTdHJpbmcoR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkuY19zdHIoKSwgJ3wn
LCAmZmllbGRzKTsKICAgaW50IHdyaXRlX2ZkID0gLTE7CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dT
CisjIGlmIEdURVNUX09TX1dJTkRPV1MKKwogICB1bnNpZ25lZCBpbnQgcGFyZW50X3Byb2Nlc3Nf
aWQgPSAwOwogICBzaXplX3Qgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCA9IDA7CiAgIHNpemVfdCBl
dmVudF9oYW5kbGVfYXNfc2l6ZV90ID0gMDsKQEAgLTExMzQsMjMgKzE1MzcsMzQgQEAgSW50ZXJu
YWxSdW5EZWF0aFRlc3RGbGFnKiBQYXJzZUludGVybmFsUnVuRGVhdGhUZXN0RmxhZygpIHsKICAg
ICAgIHx8ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmllbGRzWzNdLCAmcGFyZW50X3Byb2Nlc3NfaWQp
CiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1s0XSwgJndyaXRlX2hhbmRsZV9h
c19zaXplX3QpCiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1s1XSwgJmV2ZW50
X2hhbmRsZV9hc19zaXplX3QpKSB7Ci0gICAgRGVhdGhUZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQo
Ci0gICAgICAgICJCYWQgLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFnOiAlcyIs
Ci0gICAgICAgIEdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpLmNfc3RyKCkpKTsK
KyAgICBEZWF0aFRlc3RBYm9ydCgiQmFkIC0tZ3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3Qg
ZmxhZzogIiArCisgICAgICAgICAgICAgICAgICAgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVh
dGhfdGVzdCkpOwogICB9CiAgIHdyaXRlX2ZkID0gR2V0U3RhdHVzRmlsZURlc2NyaXB0b3IocGFy
ZW50X3Byb2Nlc3NfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3Jp
dGVfaGFuZGxlX2FzX3NpemVfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBldmVudF9oYW5kbGVfYXNfc2l6ZV90KTsKLSNlbHNlCisKKyMgZWxpZiBHVEVTVF9PU19GVUNI
U0lBCisKKyAgaWYgKGZpZWxkcy5zaXplKCkgIT0gMworICAgICAgfHwgIVBhcnNlTmF0dXJhbE51
bWJlcihmaWVsZHNbMV0sICZsaW5lKQorICAgICAgfHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVs
ZHNbMl0sICZpbmRleCkpIHsKKyAgICBEZWF0aFRlc3RBYm9ydCgiQmFkIC0tZ3Rlc3RfaW50ZXJu
YWxfcnVuX2RlYXRoX3Rlc3QgZmxhZzogIgorICAgICAgICArIEdURVNUX0ZMQUcoaW50ZXJuYWxf
cnVuX2RlYXRoX3Rlc3QpKTsKKyAgfQorCisjIGVsc2UKKwogICBpZiAoZmllbGRzLnNpemUoKSAh
PSA0CiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1sxXSwgJmxpbmUpCiAgICAg
ICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1syXSwgJmluZGV4KQogICAgICAgfHwgIVBh
cnNlTmF0dXJhbE51bWJlcihmaWVsZHNbM10sICZ3cml0ZV9mZCkpIHsKLSAgICBEZWF0aFRlc3RB
Ym9ydChTdHJpbmc6OkZvcm1hdCgKLSAgICAgICAgIkJhZCAtLWd0ZXN0X2ludGVybmFsX3J1bl9k
ZWF0aF90ZXN0IGZsYWc6ICVzIiwKLSAgICAgICAgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVh
dGhfdGVzdCkuY19zdHIoKSkpOworICAgIERlYXRoVGVzdEFib3J0KCJCYWQgLS1ndGVzdF9pbnRl
cm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFnOiAiCisgICAgICAgICsgR1RFU1RfRkxBRyhpbnRlcm5h
bF9ydW5fZGVhdGhfdGVzdCkpOwogICB9Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKwor
IyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCiAgIHJldHVybiBuZXcgSW50ZXJuYWxSdW5E
ZWF0aFRlc3RGbGFnKGZpZWxkc1swXSwgbGluZSwgaW5kZXgsIHdyaXRlX2ZkKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWZpbGVwYXRoLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWZpbGVwYXRoLmNjCmluZGV4IGMxZWY5
MTg4YWQ4NWFiOGEwNDdhMzNiZjk5NDVlMWNkMGNjNzNlZmYuLmE3ZTY1YzA4MmE3NWZjNmZiMDM4
YTAyM2Q1YjFkM2UwOWU0NzlmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NyYy9ndGVzdC1maWxlcGF0aC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMv
Z3Rlc3QtZmlsZXBhdGguY2MKQEAgLTI2LDM5ICsyNiwzOCBAQAogLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcnM6IGtlaXRoLnJheUBn
bWFpbC5jb20gKEtlaXRoIFJheSkKIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWZp
bGVwYXRoLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorI2luY2x1
ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgiCiAKICNpbmNsdWRlIDxzdGRsaWIu
aD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QtbWVzc2FnZS5oIgogCiAjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSNpbmNs
dWRlIDx3aW5kb3dzLmg+CisjIGluY2x1ZGUgPHdpbmRvd3MuaD4KICNlbGlmIEdURVNUX09TX1dJ
TkRPV1MKLSNpbmNsdWRlIDxkaXJlY3QuaD4KLSNpbmNsdWRlIDxpby5oPgorIyBpbmNsdWRlIDxk
aXJlY3QuaD4KKyMgaW5jbHVkZSA8aW8uaD4KICNlbGlmIEdURVNUX09TX1NZTUJJQU4KIC8vIFN5
bWJpYW4gT3BlbkMgaGFzIFBBVEhfTUFYIGluIHN5cy9zeXNsaW1pdHMuaAotI2luY2x1ZGUgPHN5
cy9zeXNsaW1pdHMuaD4KKyMgaW5jbHVkZSA8c3lzL3N5c2xpbWl0cy5oPgogI2Vsc2UKLSNpbmNs
dWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxjbGltaXRzPiAgLy8gU29tZSBMaW51eCBkaXN0cmli
dXRpb25zIGRlZmluZSBQQVRIX01BWCBoZXJlLgorIyBpbmNsdWRlIDxsaW1pdHMuaD4KKyMgaW5j
bHVkZSA8Y2xpbWl0cz4gIC8vIFNvbWUgTGludXggZGlzdHJpYnV0aW9ucyBkZWZpbmUgUEFUSF9N
QVggaGVyZS4KICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIAorI2luY2x1ZGUg
Imd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgorCiAjaWYgR1RFU1RfT1NfV0lORE9XUwot
I2RlZmluZSBHVEVTVF9QQVRIX01BWF8gX01BWF9QQVRICisjIGRlZmluZSBHVEVTVF9QQVRIX01B
WF8gX01BWF9QQVRICiAjZWxpZiBkZWZpbmVkKFBBVEhfTUFYKQotI2RlZmluZSBHVEVTVF9QQVRI
X01BWF8gUEFUSF9NQVgKKyMgZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBQQVRIX01BWAogI2VsaWYg
ZGVmaW5lZChfWE9QRU5fUEFUSF9NQVgpCi0jZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBfWE9QRU5f
UEFUSF9NQVgKKyMgZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBfWE9QRU5fUEFUSF9NQVgKICNlbHNl
Ci0jZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBfUE9TSVhfUEFUSF9NQVgKKyMgZGVmaW5lIEdURVNU
X1BBVEhfTUFYXyBfUE9TSVhfUEFUSF9NQVgKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwog
Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+Ci0KIG5hbWVzcGFjZSB0
ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKQEAgLTY5LDIxICs2OCwxOSBAQCBuYW1l
c3BhY2UgaW50ZXJuYWwgewogLy8gb2YgdGhlbS4KIGNvbnN0IGNoYXIga1BhdGhTZXBhcmF0b3Ig
PSAnXFwnOwogY29uc3QgY2hhciBrQWx0ZXJuYXRlUGF0aFNlcGFyYXRvciA9ICcvJzsKLWNvbnN0
IGNoYXIga1BhdGhTZXBhcmF0b3JTdHJpbmdbXSA9ICJcXCI7CiBjb25zdCBjaGFyIGtBbHRlcm5h
dGVQYXRoU2VwYXJhdG9yU3RyaW5nW10gPSAiLyI7Ci0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIC8vIFdpbmRvd3MgQ0UgZG9lc24ndCBo
YXZlIGEgY3VycmVudCBkaXJlY3RvcnkuIFlvdSBzaG91bGQgbm90IHVzZQogLy8gdGhlIGN1cnJl
bnQgZGlyZWN0b3J5IGluIHRlc3RzIG9uIFdpbmRvd3MgQ0UsIGJ1dCB0aGlzIGF0IGxlYXN0CiAv
LyBwcm92aWRlcyBhIHJlYXNvbmFibGUgZmFsbGJhY2suCiBjb25zdCBjaGFyIGtDdXJyZW50RGly
ZWN0b3J5U3RyaW5nW10gPSAiXFwiOwogLy8gV2luZG93cyBDRSBkb2Vzbid0IGRlZmluZSBJTlZB
TElEX0ZJTEVfQVRUUklCVVRFUwogY29uc3QgRFdPUkQga0ludmFsaWRGaWxlQXR0cmlidXRlcyA9
IDB4ZmZmZmZmZmY7Ci0jZWxzZQorIyBlbHNlCiBjb25zdCBjaGFyIGtDdXJyZW50RGlyZWN0b3J5
U3RyaW5nW10gPSAiLlxcIjsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMg
ZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAjZWxzZQogY29uc3QgY2hhciBrUGF0
aFNlcGFyYXRvciA9ICcvJzsKLWNvbnN0IGNoYXIga1BhdGhTZXBhcmF0b3JTdHJpbmdbXSA9ICIv
IjsKIGNvbnN0IGNoYXIga0N1cnJlbnREaXJlY3RvcnlTdHJpbmdbXSA9ICIuLyI7CiAjZW5kaWYg
IC8vIEdURVNUX09TX1dJTkRPV1MKIApAQCAtOTgsNyArOTUsNyBAQCBzdGF0aWMgYm9vbCBJc1Bh
dGhTZXBhcmF0b3IoY2hhciBjKSB7CiAKIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgd29ya2luZyBk
aXJlY3RvcnksIG9yICIiIGlmIHVuc3VjY2Vzc2Z1bC4KIEZpbGVQYXRoIEZpbGVQYXRoOjpHZXRD
dXJyZW50RGlyKCkgewotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjaWYgR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUgfHwgR1RFU1RfT1NfV0lORE9XU19QSE9ORSB8fCBHVEVTVF9PU19XSU5E
T1dTX1JUCiAgIC8vIFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlIGEgY3VycmVudCBkaXJlY3Rvcnks
IHNvIHdlIGp1c3QgcmV0dXJuCiAgIC8vIHNvbWV0aGluZyByZWFzb25hYmxlLgogICByZXR1cm4g
RmlsZVBhdGgoa0N1cnJlbnREaXJlY3RvcnlTdHJpbmcpOwpAQCAtMTA3LDcgKzEwNCwxNCBAQCBG
aWxlUGF0aCBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpIHsKICAgcmV0dXJuIEZpbGVQYXRoKF9n
ZXRjd2QoY3dkLCBzaXplb2YoY3dkKSkgPT0gTlVMTCA/ICIiIDogY3dkKTsKICNlbHNlCiAgIGNo
YXIgY3dkW0dURVNUX1BBVEhfTUFYXyArIDFdID0geyAnXDAnIH07Ci0gIHJldHVybiBGaWxlUGF0
aChnZXRjd2QoY3dkLCBzaXplb2YoY3dkKSkgPT0gTlVMTCA/ICIiIDogY3dkKTsKKyAgY2hhciog
cmVzdWx0ID0gZ2V0Y3dkKGN3ZCwgc2l6ZW9mKGN3ZCkpOworIyBpZiBHVEVTVF9PU19OQUNMCisg
IC8vIGdldGN3ZCB3aWxsIGxpa2VseSBmYWlsIGluIE5hQ2wgZHVlIHRvIHRoZSBzYW5kYm94LCBz
byByZXR1cm4gc29tZXRoaW5nCisgIC8vIHJlYXNvbmFibGUuIFRoZSB1c2VyIG1heSBoYXZlIHBy
b3ZpZGVkIGEgc2hpbSBpbXBsZW1lbnRhdGlvbiBmb3IgZ2V0Y3dkLAorICAvLyBob3dldmVyLCBz
byBmYWxsYmFjayBvbmx5IHdoZW4gZmFpbHVyZSBpcyBkZXRlY3RlZC4KKyAgcmV0dXJuIEZpbGVQ
YXRoKHJlc3VsdCA9PSBOVUxMID8ga0N1cnJlbnREaXJlY3RvcnlTdHJpbmcgOiBjd2QpOworIyBl
bmRpZiAgLy8gR1RFU1RfT1NfTkFDTAorICByZXR1cm4gRmlsZVBhdGgocmVzdWx0ID09IE5VTEwg
PyAiIiA6IGN3ZCk7CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiB9CiAKQEAg
LTExNiwxNCArMTIwLDE1IEBAIEZpbGVQYXRoIEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkgewog
Ly8gRmlsZVBhdGgoImRpci9maWxlIikuIElmIGEgY2FzZS1pbnNlbnNpdGl2ZSBleHRlbnNpb24g
aXMgbm90CiAvLyBmb3VuZCwgcmV0dXJucyBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIEZpbGVQYXRo
LgogRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZUV4dGVuc2lvbihjb25zdCBjaGFyKiBleHRlbnNp
b24pIGNvbnN0IHsKLSAgU3RyaW5nIGRvdF9leHRlbnNpb24oU3RyaW5nOjpGb3JtYXQoIi4lcyIs
IGV4dGVuc2lvbikpOwotICBpZiAocGF0aG5hbWVfLkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKGRv
dF9leHRlbnNpb24uY19zdHIoKSkpIHsKLSAgICByZXR1cm4gRmlsZVBhdGgoU3RyaW5nKHBhdGhu
YW1lXy5jX3N0cigpLCBwYXRobmFtZV8ubGVuZ3RoKCkgLSA0KSk7CisgIGNvbnN0IHN0ZDo6c3Ry
aW5nIGRvdF9leHRlbnNpb24gPSBzdGQ6OnN0cmluZygiLiIpICsgZXh0ZW5zaW9uOworICBpZiAo
U3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZShwYXRobmFtZV8sIGRvdF9leHRlbnNpb24p
KSB7CisgICAgcmV0dXJuIEZpbGVQYXRoKHBhdGhuYW1lXy5zdWJzdHIoCisgICAgICAgIDAsIHBh
dGhuYW1lXy5sZW5ndGgoKSAtIGRvdF9leHRlbnNpb24ubGVuZ3RoKCkpKTsKICAgfQogICByZXR1
cm4gKnRoaXM7CiB9CiAKLS8vIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBsYXN0IG9jY3VyZW5j
ZSBvZiBhIHZhbGlkIHBhdGggc2VwYXJhdG9yIGluCisvLyBSZXR1cm5zIGEgcG9pbnRlciB0byB0
aGUgbGFzdCBvY2N1cnJlbmNlIG9mIGEgdmFsaWQgcGF0aCBzZXBhcmF0b3IgaW4KIC8vIHRoZSBG
aWxlUGF0aC4gT24gV2luZG93cywgZm9yIGV4YW1wbGUsIGJvdGggJy8nIGFuZCAnXCcgYXJlIHZh
bGlkIHBhdGgKIC8vIHNlcGFyYXRvcnMuIFJldHVybnMgTlVMTCBpZiBubyBwYXRoIHNlcGFyYXRv
ciB3YXMgZm91bmQuCiBjb25zdCBjaGFyKiBGaWxlUGF0aDo6RmluZExhc3RQYXRoU2VwYXJhdG9y
KCkgY29uc3QgewpAQCAtMTQ3LDcgKzE1Miw3IEBAIGNvbnN0IGNoYXIqIEZpbGVQYXRoOjpGaW5k
TGFzdFBhdGhTZXBhcmF0b3IoKSBjb25zdCB7CiAvLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCAnXCcg
aXMgdGhlIHBhdGggc2VwYXJhdG9yLCBvdGhlcndpc2UgaXQgaXMgJy8nLgogRmlsZVBhdGggRmls
ZVBhdGg6OlJlbW92ZURpcmVjdG9yeU5hbWUoKSBjb25zdCB7CiAgIGNvbnN0IGNoYXIqIGNvbnN0
IGxhc3Rfc2VwID0gRmluZExhc3RQYXRoU2VwYXJhdG9yKCk7Ci0gIHJldHVybiBsYXN0X3NlcCA/
IEZpbGVQYXRoKFN0cmluZyhsYXN0X3NlcCArIDEpKSA6ICp0aGlzOworICByZXR1cm4gbGFzdF9z
ZXAgPyBGaWxlUGF0aChsYXN0X3NlcCArIDEpIDogKnRoaXM7CiB9CiAKIC8vIFJlbW92ZUZpbGVO
YW1lIHJldHVybnMgdGhlIGRpcmVjdG9yeSBwYXRoIHdpdGggdGhlIGZpbGVuYW1lIHJlbW92ZWQu
CkBAIC0xNTgsOSArMTYzLDkgQEAgRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZURpcmVjdG9yeU5h
bWUoKSBjb25zdCB7CiAvLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCAnXCcgaXMgdGhlIHBhdGggc2Vw
YXJhdG9yLCBvdGhlcndpc2UgaXQgaXMgJy8nLgogRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZUZp
bGVOYW1lKCkgY29uc3QgewogICBjb25zdCBjaGFyKiBjb25zdCBsYXN0X3NlcCA9IEZpbmRMYXN0
UGF0aFNlcGFyYXRvcigpOwotICBTdHJpbmcgZGlyOworICBzdGQ6OnN0cmluZyBkaXI7CiAgIGlm
IChsYXN0X3NlcCkgewotICAgIGRpciA9IFN0cmluZyhjX3N0cigpLCBsYXN0X3NlcCArIDEgLSBj
X3N0cigpKTsKKyAgICBkaXIgPSBzdGQ6OnN0cmluZyhjX3N0cigpLCBsYXN0X3NlcCArIDEgLSBj
X3N0cigpKTsKICAgfSBlbHNlIHsKICAgICBkaXIgPSBrQ3VycmVudERpcmVjdG9yeVN0cmluZzsK
ICAgfQpAQCAtMTc3LDExICsxODIsMTIgQEAgRmlsZVBhdGggRmlsZVBhdGg6Ok1ha2VGaWxlTmFt
ZShjb25zdCBGaWxlUGF0aCYgZGlyZWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBGaWxlUGF0aCYgYmFzZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgbnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBleHRlbnNpb24pIHsKLSAgU3RyaW5nIGZpbGU7CisgIHN0ZDo6c3RyaW5nIGZpbGU7
CiAgIGlmIChudW1iZXIgPT0gMCkgewotICAgIGZpbGUgPSBTdHJpbmc6OkZvcm1hdCgiJXMuJXMi
LCBiYXNlX25hbWUuY19zdHIoKSwgZXh0ZW5zaW9uKTsKKyAgICBmaWxlID0gYmFzZV9uYW1lLnN0
cmluZygpICsgIi4iICsgZXh0ZW5zaW9uOwogICB9IGVsc2UgewotICAgIGZpbGUgPSBTdHJpbmc6
OkZvcm1hdCgiJXNfJWQuJXMiLCBiYXNlX25hbWUuY19zdHIoKSwgbnVtYmVyLCBleHRlbnNpb24p
OworICAgIGZpbGUgPSBiYXNlX25hbWUuc3RyaW5nKCkgKyAiXyIgKyBTdHJlYW1hYmxlVG9TdHJp
bmcobnVtYmVyKQorICAgICAgICArICIuIiArIGV4dGVuc2lvbjsKICAgfQogICByZXR1cm4gQ29u
Y2F0UGF0aHMoZGlyZWN0b3J5LCBGaWxlUGF0aChmaWxlKSk7CiB9CkBAIC0xOTMsOCArMTk5LDcg
QEAgRmlsZVBhdGggRmlsZVBhdGg6OkNvbmNhdFBhdGhzKGNvbnN0IEZpbGVQYXRoJiBkaXJlY3Rv
cnksCiAgIGlmIChkaXJlY3RvcnkuSXNFbXB0eSgpKQogICAgIHJldHVybiByZWxhdGl2ZV9wYXRo
OwogICBjb25zdCBGaWxlUGF0aCBkaXIoZGlyZWN0b3J5LlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFy
YXRvcigpKTsKLSAgcmV0dXJuIEZpbGVQYXRoKFN0cmluZzo6Rm9ybWF0KCIlcyVjJXMiLCBkaXIu
Y19zdHIoKSwga1BhdGhTZXBhcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWxhdGl2ZV9wYXRoLmNfc3RyKCkpKTsKKyAgcmV0dXJuIEZpbGVQYXRoKGRpci5zdHJpbmco
KSArIGtQYXRoU2VwYXJhdG9yICsgcmVsYXRpdmVfcGF0aC5zdHJpbmcoKSk7CiB9CiAKIC8vIFJl
dHVybnMgdHJ1ZSBpZiBwYXRobmFtZSBkZXNjcmliZXMgc29tZXRoaW5nIGZpbmRhYmxlIGluIHRo
ZSBmaWxlLXN5c3RlbSwKQEAgLTI0NSw3ICsyNTAsNyBAQCBib29sIEZpbGVQYXRoOjpEaXJlY3Rv
cnlFeGlzdHMoKSBjb25zdCB7CiAvLyByb290IGRpcmVjdG9yeSBwZXIgZGlzayBkcml2ZS4pCiBi
b29sIEZpbGVQYXRoOjpJc1Jvb3REaXJlY3RvcnkoKSBjb25zdCB7CiAjaWYgR1RFU1RfT1NfV0lO
RE9XUwotICAvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogb24gV2luZG93cyBhIG5ldHdvcmsgc2hh
cmUgbGlrZQorICAvLyBGSVhNRTogb24gV2luZG93cyBhIG5ldHdvcmsgc2hhcmUgbGlrZQogICAv
LyBcXHNlcnZlclxzaGFyZSBjYW4gYmUgYSByb290IGRpcmVjdG9yeSwgYWx0aG91Z2ggaXQgY2Fu
bm90IGJlIHRoZQogICAvLyBjdXJyZW50IGRpcmVjdG9yeS4gIEhhbmRsZSB0aGlzIHByb3Blcmx5
LgogICByZXR1cm4gcGF0aG5hbWVfLmxlbmd0aCgpID09IDMgJiYgSXNBYnNvbHV0ZVBhdGgoKTsK
QEAgLTMzOCwxNCArMzQzLDE0IEBAIGJvb2wgRmlsZVBhdGg6OkNyZWF0ZUZvbGRlcigpIGNvbnN0
IHsKIC8vIE9uIFdpbmRvd3MgcGxhdGZvcm0sIHVzZXMgXCBhcyB0aGUgc2VwYXJhdG9yLCBvdGhl
ciBwbGF0Zm9ybXMgdXNlIC8uCiBGaWxlUGF0aCBGaWxlUGF0aDo6UmVtb3ZlVHJhaWxpbmdQYXRo
U2VwYXJhdG9yKCkgY29uc3QgewogICByZXR1cm4gSXNEaXJlY3RvcnkoKQotICAgICAgPyBGaWxl
UGF0aChTdHJpbmcocGF0aG5hbWVfLmNfc3RyKCksIHBhdGhuYW1lXy5sZW5ndGgoKSAtIDEpKQor
ICAgICAgPyBGaWxlUGF0aChwYXRobmFtZV8uc3Vic3RyKDAsIHBhdGhuYW1lXy5sZW5ndGgoKSAt
IDEpKQogICAgICAgOiAqdGhpczsKIH0KIAogLy8gUmVtb3ZlcyBhbnkgcmVkdW5kYW50IHNlcGFy
YXRvcnMgdGhhdCBtaWdodCBiZSBpbiB0aGUgcGF0aG5hbWUuCiAvLyBGb3IgZXhhbXBsZSwgImJh
ci8vL2ZvbyIgYmVjb21lcyAiYmFyL2ZvbyIuIERvZXMgbm90IGVsaW1pbmF0ZSBvdGhlcgogLy8g
cmVkdW5kYW5jaWVzIHRoYXQgbWlnaHQgYmUgaW4gYSBwYXRobmFtZSBpbnZvbHZpbmcgIi4iIG9y
ICIuLiIuCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogaGFuZGxlIFdpbmRvd3MgbmV0d29yayBz
aGFyZXMgKGUuZy4gXFxzZXJ2ZXJcc2hhcmUpLgorLy8gRklYTUU6IGhhbmRsZSBXaW5kb3dzIG5l
dHdvcmsgc2hhcmVzIChlLmcuIFxcc2VydmVyXHNoYXJlKS4KIHZvaWQgRmlsZVBhdGg6Ok5vcm1h
bGl6ZSgpIHsKICAgaWYgKHBhdGhuYW1lXy5jX3N0cigpID09IE5VTEwpIHsKICAgICBwYXRobmFt
ZV8gPSAiIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1p
bnRlcm5hbC1pbmwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1pbnRlcm5h
bC1pbmwuaAppbmRleCAwMTQxNWY3ZDk1OWRjYTA3MDlmYWMxNzY2MTBkYjczODhmNjA0NTU5Li40
NzkwMDQxNDliNDhjMjg1NjRlMjA1ZTAyMTBjNmM0MzEwNDE4YjViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWludGVybmFsLWlubC5oCkBAIC0yNywyNiArMjcs
MTUgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotLy8gVXRpbGl0eSBmdW5j
dGlvbnMgYW5kIGNsYXNzZXMgdXNlZCBieSB0aGUgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29y
ay4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLworLy8g
VXRpbGl0eSBmdW5jdGlvbnMgYW5kIGNsYXNzZXMgdXNlZCBieSB0aGUgR29vZ2xlIEMrKyB0ZXN0
aW5nIGZyYW1ld29yay4vLwogLy8gVGhpcyBmaWxlIGNvbnRhaW5zIHB1cmVseSBHb29nbGUgVGVz
dCdzIGludGVybmFsIGltcGxlbWVudGF0aW9uLiAgUGxlYXNlCiAvLyBETyBOT1QgI0lOQ0xVREUg
SVQgSU4gQSBVU0VSIFBST0dSQU0uCiAKICNpZm5kZWYgR1RFU1RfU1JDX0dURVNUX0lOVEVSTkFM
X0lOTF9IXwogI2RlZmluZSBHVEVTVF9TUkNfR1RFU1RfSU5URVJOQUxfSU5MX0hfCiAKLS8vIEdU
RVNUX0lNUExFTUVOVEFUSU9OXyBpcyBkZWZpbmVkIHRvIDEgaWZmIHRoZSBjdXJyZW50IHRyYW5z
bGF0aW9uIHVuaXQgaXMKLS8vIHBhcnQgb2YgR29vZ2xlIFRlc3QncyBpbXBsZW1lbnRhdGlvbjsg
b3RoZXJ3aXNlIGl0J3MgdW5kZWZpbmVkLgotI2lmICFHVEVTVF9JTVBMRU1FTlRBVElPTl8KLS8v
IEEgdXNlciBpcyB0cnlpbmcgdG8gaW5jbHVkZSB0aGlzIGZyb20gaGlzIGNvZGUgLSBqdXN0IHNh
eSBuby4KLSNlcnJvciAiZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMgcGFydCBvZiBHb29nbGUgVGVz
dCdzIGludGVybmFsIGltcGxlbWVudGF0aW9uLiIKLSNlcnJvciAiSXQgbXVzdCBub3QgYmUgaW5j
bHVkZWQgZXhjZXB0IGJ5IEdvb2dsZSBUZXN0IGl0c2VsZi4iCi0jZW5kaWYgIC8vIEdURVNUX0lN
UExFTUVOVEFUSU9OXwotCiAjaWZuZGVmIF9XSU4zMl9XQ0UKLSNpbmNsdWRlIDxlcnJuby5oPgor
IyBpbmNsdWRlIDxlcnJuby5oPgogI2VuZGlmICAvLyAhX1dJTjMyX1dDRQogI2luY2x1ZGUgPHN0
ZGRlZi5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPiAgLy8gRm9yIHN0cnRvbGwvX3N0cnRvdWw2NC9t
YWxsb2MvZnJlZS4KQEAgLTU2LDE0ICs0NSwyMiBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNs
dWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+Cisj
aW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorCisjaWYgR1RFU1RfQ0FOX1NU
UkVBTV9SRVNVTFRTXworIyBpbmNsdWRlIDxhcnBhL2luZXQuaD4gIC8vIE5PTElOVAorIyBpbmNs
dWRlIDxuZXRkYi5oPiAgLy8gTk9MSU5UCisjZW5kaWYKIAogI2lmIEdURVNUX09TX1dJTkRPV1MK
LSNpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBGb3IgRFdPUkQuCisjIGluY2x1ZGUgPHdpbmRvd3Mu
aD4gIC8vIE5PTElOVAogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKLSNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+Cisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKwor
R1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDI1MSBcCisvKiBjbGFzcyBBIG5lZWRz
IHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2VkIGJ5IGNsaWVudHMgb2YgY2xhc3MgQiAq
LykKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC04OSwxMSArODYsMTQgQEAgY29uc3QgY2hh
ciBrRmlsdGVyRmxhZ1tdID0gImZpbHRlciI7CiBjb25zdCBjaGFyIGtMaXN0VGVzdHNGbGFnW10g
PSAibGlzdF90ZXN0cyI7CiBjb25zdCBjaGFyIGtPdXRwdXRGbGFnW10gPSAib3V0cHV0IjsKIGNv
bnN0IGNoYXIga1ByaW50VGltZUZsYWdbXSA9ICJwcmludF90aW1lIjsKK2NvbnN0IGNoYXIga1By
aW50VVRGOEZsYWdbXSA9ICJwcmludF91dGY4IjsKIGNvbnN0IGNoYXIga1JhbmRvbVNlZWRGbGFn
W10gPSAicmFuZG9tX3NlZWQiOwogY29uc3QgY2hhciBrUmVwZWF0RmxhZ1tdID0gInJlcGVhdCI7
CiBjb25zdCBjaGFyIGtTaHVmZmxlRmxhZ1tdID0gInNodWZmbGUiOwogY29uc3QgY2hhciBrU3Rh
Y2tUcmFjZURlcHRoRmxhZ1tdID0gInN0YWNrX3RyYWNlX2RlcHRoIjsKK2NvbnN0IGNoYXIga1N0
cmVhbVJlc3VsdFRvRmxhZ1tdID0gInN0cmVhbV9yZXN1bHRfdG8iOwogY29uc3QgY2hhciBrVGhy
b3dPbkZhaWx1cmVGbGFnW10gPSAidGhyb3dfb25fZmFpbHVyZSI7Citjb25zdCBjaGFyIGtGbGFn
ZmlsZUZsYWdbXSA9ICJmbGFnZmlsZSI7CiAKIC8vIEEgdmFsaWQgcmFuZG9tIHNlZWQgbXVzdCBi
ZSBpbiBbMSwga01heFJhbmRvbVNlZWRdLgogY29uc3QgaW50IGtNYXhSYW5kb21TZWVkID0gOTk5
OTk7CkBAIC0xMTEsNiArMTExLDEyIEBAIEdURVNUX0FQSV8gYm9vbCBTaG91bGRVc2VDb2xvcihi
b29sIHN0ZG91dF9pc190dHkpOwogLy8gRm9ybWF0cyB0aGUgZ2l2ZW4gdGltZSBpbiBtaWxsaXNl
Y29uZHMgYXMgc2Vjb25kcy4KIEdURVNUX0FQSV8gc3RkOjpzdHJpbmcgRm9ybWF0VGltZUluTWls
bGlzQXNTZWNvbmRzKFRpbWVJbk1pbGxpcyBtcyk7CiAKKy8vIENvbnZlcnRzIHRoZSBnaXZlbiB0
aW1lIGluIG1pbGxpc2Vjb25kcyB0byBhIGRhdGUgc3RyaW5nIGluIHRoZSBJU08gODYwMQorLy8g
Zm9ybWF0LCB3aXRob3V0IHRoZSB0aW1lem9uZSBpbmZvcm1hdGlvbi4gIE4uQi46IGR1ZSB0byB0
aGUgdXNlIHRoZQorLy8gbm9uLXJlZW50cmFudCBsb2NhbHRpbWUoKSBmdW5jdGlvbiwgdGhpcyBm
dW5jdGlvbiBpcyBub3QgdGhyZWFkIHNhZmUuICBEbworLy8gbm90IHVzZSBpdCBpbiBhbnkgY29k
ZSB0aGF0IGNhbiBiZSBjYWxsZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgorR1RFU1RfQVBJXyBz
dGQ6OnN0cmluZyBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMShUaW1lSW5NaWxsaXMg
bXMpOworCiAvLyBQYXJzZXMgYSBzdHJpbmcgZm9yIGFuIEludDMyIGZsYWcsIGluIHRoZSBmb3Jt
IG9mICItLWZsYWc9dmFsdWUiLgogLy8KIC8vIE9uIHN1Y2Nlc3MsIHN0b3JlcyB0aGUgdmFsdWUg
b2YgdGhlIGZsYWcgaW4gKnZhbHVlLCBhbmQgcmV0dXJucwpAQCAtMTYxLDEwICsxNjcsMTIgQEAg
Y2xhc3MgR1Rlc3RGbGFnU2F2ZXIgewogICAgIGxpc3RfdGVzdHNfID0gR1RFU1RfRkxBRyhsaXN0
X3Rlc3RzKTsKICAgICBvdXRwdXRfID0gR1RFU1RfRkxBRyhvdXRwdXQpOwogICAgIHByaW50X3Rp
bWVfID0gR1RFU1RfRkxBRyhwcmludF90aW1lKTsKKyAgICBwcmludF91dGY4XyA9IEdURVNUX0ZM
QUcocHJpbnRfdXRmOCk7CiAgICAgcmFuZG9tX3NlZWRfID0gR1RFU1RfRkxBRyhyYW5kb21fc2Vl
ZCk7CiAgICAgcmVwZWF0XyA9IEdURVNUX0ZMQUcocmVwZWF0KTsKICAgICBzaHVmZmxlXyA9IEdU
RVNUX0ZMQUcoc2h1ZmZsZSk7CiAgICAgc3RhY2tfdHJhY2VfZGVwdGhfID0gR1RFU1RfRkxBRyhz
dGFja190cmFjZV9kZXB0aCk7CisgICAgc3RyZWFtX3Jlc3VsdF90b18gPSBHVEVTVF9GTEFHKHN0
cmVhbV9yZXN1bHRfdG8pOwogICAgIHRocm93X29uX2ZhaWx1cmVfID0gR1RFU1RfRkxBRyh0aHJv
d19vbl9mYWlsdXJlKTsKICAgfQogCkBAIC0xODEsNDEgKzE4OSw0NCBAQCBjbGFzcyBHVGVzdEZs
YWdTYXZlciB7CiAgICAgR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSA9IGxpc3RfdGVzdHNfOwogICAg
IEdURVNUX0ZMQUcob3V0cHV0KSA9IG91dHB1dF87CiAgICAgR1RFU1RfRkxBRyhwcmludF90aW1l
KSA9IHByaW50X3RpbWVfOworICAgIEdURVNUX0ZMQUcocHJpbnRfdXRmOCkgPSBwcmludF91dGY4
XzsKICAgICBHVEVTVF9GTEFHKHJhbmRvbV9zZWVkKSA9IHJhbmRvbV9zZWVkXzsKICAgICBHVEVT
VF9GTEFHKHJlcGVhdCkgPSByZXBlYXRfOwogICAgIEdURVNUX0ZMQUcoc2h1ZmZsZSkgPSBzaHVm
ZmxlXzsKICAgICBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSA9IHN0YWNrX3RyYWNlX2Rl
cHRoXzsKKyAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pID0gc3RyZWFtX3Jlc3VsdF90
b187CiAgICAgR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9IHRocm93X29uX2ZhaWx1cmVf
OwogICB9CisKICBwcml2YXRlOgogICAvLyBGaWVsZHMgZm9yIHNhdmluZyB0aGUgb3JpZ2luYWwg
dmFsdWVzIG9mIGZsYWdzLgogICBib29sIGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzXzsKICAgYm9v
bCBicmVha19vbl9mYWlsdXJlXzsKICAgYm9vbCBjYXRjaF9leGNlcHRpb25zXzsKLSAgU3RyaW5n
IGNvbG9yXzsKLSAgU3RyaW5nIGRlYXRoX3Rlc3Rfc3R5bGVfOworICBzdGQ6OnN0cmluZyBjb2xv
cl87CisgIHN0ZDo6c3RyaW5nIGRlYXRoX3Rlc3Rfc3R5bGVfOwogICBib29sIGRlYXRoX3Rlc3Rf
dXNlX2ZvcmtfOwotICBTdHJpbmcgZmlsdGVyXzsKLSAgU3RyaW5nIGludGVybmFsX3J1bl9kZWF0
aF90ZXN0XzsKKyAgc3RkOjpzdHJpbmcgZmlsdGVyXzsKKyAgc3RkOjpzdHJpbmcgaW50ZXJuYWxf
cnVuX2RlYXRoX3Rlc3RfOwogICBib29sIGxpc3RfdGVzdHNfOwotICBTdHJpbmcgb3V0cHV0XzsK
KyAgc3RkOjpzdHJpbmcgb3V0cHV0XzsKICAgYm9vbCBwcmludF90aW1lXzsKKyAgYm9vbCBwcmlu
dF91dGY4XzsKICAgaW50ZXJuYWw6OkludDMyIHJhbmRvbV9zZWVkXzsKICAgaW50ZXJuYWw6Oklu
dDMyIHJlcGVhdF87CiAgIGJvb2wgc2h1ZmZsZV87CiAgIGludGVybmFsOjpJbnQzMiBzdGFja190
cmFjZV9kZXB0aF87CisgIHN0ZDo6c3RyaW5nIHN0cmVhbV9yZXN1bHRfdG9fOwogICBib29sIHRo
cm93X29uX2ZhaWx1cmVfOwogfSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXzsKIAogLy8gQ29udmVy
dHMgYSBVbmljb2RlIGNvZGUgcG9pbnQgdG8gYSBuYXJyb3cgc3RyaW5nIGluIFVURi04IGVuY29k
aW5nLgogLy8gY29kZV9wb2ludCBwYXJhbWV0ZXIgaXMgb2YgdHlwZSBVSW50MzIgYmVjYXVzZSB3
Y2hhcl90IG1heSBub3QgYmUKIC8vIHdpZGUgZW5vdWdoIHRvIGNvbnRhaW4gYSBjb2RlIHBvaW50
LgotLy8gVGhlIG91dHB1dCBidWZmZXIgc3RyIG11c3QgY29udGFpbnQgYXQgbGVhc3QgMzIgY2hh
cmFjdGVycy4KLS8vIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBhZGRyZXNzIG9mIHRoZSBvdXRw
dXQgYnVmZmVyLgogLy8gSWYgdGhlIGNvZGVfcG9pbnQgaXMgbm90IGEgdmFsaWQgVW5pY29kZSBj
b2RlIHBvaW50Ci0vLyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNvZGUgcmFuZ2UgVSswIHRvIFUrMTBG
RkZGKSBpdCB3aWxsIGJlIG91dHB1dAotLy8gYXMgJyhJbnZhbGlkIFVuaWNvZGUgMHhYWFhYWFhY
WCknLgotR1RFU1RfQVBJXyBjaGFyKiBDb2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQs
IGNoYXIqIHN0cik7CisvLyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNvZGUgcmFuZ2UgVSswIHRvIFUr
MTBGRkZGKSBpdCB3aWxsIGJlIGNvbnZlcnRlZAorLy8gdG8gIihJbnZhbGlkIFVuaWNvZGUgMHhY
WFhYWFhYWCkiLgorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBDb2RlUG9pbnRUb1V0ZjgoVUludDMy
IGNvZGVfcG9pbnQpOwogCiAvLyBDb252ZXJ0cyBhIHdpZGUgc3RyaW5nIHRvIGEgbmFycm93IHN0
cmluZyBpbiBVVEYtOCBlbmNvZGluZy4KIC8vIFRoZSB3aWRlIHN0cmluZyBpcyBhc3N1bWVkIHRv
IGhhdmUgdGhlIGZvbGxvd2luZyBlbmNvZGluZzoKQEAgLTIzMCw3ICsyNDEsNyBAQCBHVEVTVF9B
UElfIGNoYXIqIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9wb2ludCwgY2hhciogc3RyKTsK
IC8vIGFzICcoSW52YWxpZCBVbmljb2RlIDB4WFhYWFhYWFgpJy4gSWYgdGhlIHN0cmluZyBpcyBp
biBVVEYxNiBlbmNvZGluZwogLy8gYW5kIGNvbnRhaW5zIGludmFsaWQgVVRGLTE2IHN1cnJvZ2F0
ZSBwYWlycywgdmFsdWVzIGluIHRob3NlIHBhaXJzCiAvLyB3aWxsIGJlIGVuY29kZWQgYXMgaW5k
aXZpZHVhbCBVbmljb2RlIGNoYXJhY3RlcnMgZnJvbSBCYXNpYyBOb3JtYWwgUGxhbmUuCi1HVEVT
VF9BUElfIFN0cmluZyBXaWRlU3RyaW5nVG9VdGY4KGNvbnN0IHdjaGFyX3QqIHN0ciwgaW50IG51
bV9jaGFycyk7CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFdpZGVTdHJpbmdUb1V0ZjgoY29uc3Qg
d2NoYXJfdCogc3RyLCBpbnQgbnVtX2NoYXJzKTsKIAogLy8gUmVhZHMgdGhlIEdURVNUX1NIQVJE
X1NUQVRVU19GSUxFIGVudmlyb25tZW50IHZhcmlhYmxlLCBhbmQgY3JlYXRlcyB0aGUgZmlsZQog
Ly8gaWYgdGhlIHZhcmlhYmxlIGlzIHByZXNlbnQuIElmIGEgZmlsZSBhbHJlYWR5IGV4aXN0cyBh
dCB0aGlzIGxvY2F0aW9uLCB0aGlzCkBAIC0yNjYsNyArMjc3LDE0IEBAIEdURVNUX0FQSV8gYm9v
bCBTaG91bGRSdW5UZXN0T25TaGFyZCgKIC8vIHRoZSBnaXZlbiBwcmVkaWNhdGUuCiB0ZW1wbGF0
ZSA8Y2xhc3MgQ29udGFpbmVyLCB0eXBlbmFtZSBQcmVkaWNhdGU+CiBpbmxpbmUgaW50IENvdW50
SWYoY29uc3QgQ29udGFpbmVyJiBjLCBQcmVkaWNhdGUgcHJlZGljYXRlKSB7Ci0gIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KHN0ZDo6Y291bnRfaWYoYy5iZWdpbigpLCBjLmVuZCgpLCBwcmVkaWNh
dGUpKTsKKyAgLy8gSW1wbGVtZW50ZWQgYXMgYW4gZXhwbGljaXQgbG9vcCBzaW5jZSBzdGQ6OmNv
dW50X2lmKCkgaW4gbGliQ3N0ZCBvbgorICAvLyBTb2xhcmlzIGhhcyBhIG5vbi1zdGFuZGFyZCBz
aWduYXR1cmUuCisgIGludCBjb3VudCA9IDA7CisgIGZvciAodHlwZW5hbWUgQ29udGFpbmVyOjpj
b25zdF9pdGVyYXRvciBpdCA9IGMuYmVnaW4oKTsgaXQgIT0gYy5lbmQoKTsgKytpdCkgeworICAg
IGlmIChwcmVkaWNhdGUoKml0KSkKKyAgICAgICsrY291bnQ7CisgIH0KKyAgcmV0dXJuIGNvdW50
OwogfQogCiAvLyBBcHBsaWVzIGEgZnVuY3Rpb24vZnVuY3RvciB0byBlYWNoIGVsZW1lbnQgaW4g
dGhlIGNvbnRhaW5lci4KQEAgLTMyNyw5NSArMzQ1LDE1IEBAIGNsYXNzIFRlc3RQcm9wZXJ0eUtl
eUlzIHsKICAgLy8gQ29uc3RydWN0b3IuCiAgIC8vCiAgIC8vIFRlc3RQcm9wZXJ0eUtleUlzIGhh
cyBOTyBkZWZhdWx0IGNvbnN0cnVjdG9yLgotICBleHBsaWNpdCBUZXN0UHJvcGVydHlLZXlJcyhj
b25zdCBjaGFyKiBrZXkpCi0gICAgICA6IGtleV8oa2V5KSB7fQorICBleHBsaWNpdCBUZXN0UHJv
cGVydHlLZXlJcyhjb25zdCBzdGQ6OnN0cmluZyYga2V5KSA6IGtleV8oa2V5KSB7fQogCiAgIC8v
IFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgbmFtZSBvZiB0ZXN0IHByb3BlcnR5IG1hdGNoZXMg
b24ga2V5Xy4KICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9w
ZXJ0eSkgY29uc3QgewotICAgIHJldHVybiBTdHJpbmcodGVzdF9wcm9wZXJ0eS5rZXkoKSkuQ29t
cGFyZShrZXlfKSA9PSAwOwotICB9Ci0KLSBwcml2YXRlOgotICBTdHJpbmcga2V5XzsKLX07Ci0K
LWNsYXNzIFRlc3RJbmZvSW1wbCB7Ci0gcHVibGljOgotICBUZXN0SW5mb0ltcGwoVGVzdEluZm8q
IHBhcmVudCwgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfY29tbWVudCwKLSAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGNvbW1lbnQsIFR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkLAotICAgICAg
ICAgICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSk7Ci0gIH5UZXN0SW5m
b0ltcGwoKTsKLQotICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IHNob3VsZCBydW4uCi0g
IGJvb2wgc2hvdWxkX3J1bigpIGNvbnN0IHsgcmV0dXJuIHNob3VsZF9ydW5fOyB9Ci0KLSAgLy8g
U2V0cyB0aGUgc2hvdWxkX3J1biBtZW1iZXIuCi0gIHZvaWQgc2V0X3Nob3VsZF9ydW4oYm9vbCBz
aG91bGQpIHsgc2hvdWxkX3J1bl8gPSBzaG91bGQ7IH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhpcyB0ZXN0IGlzIGRpc2FibGVkLiBEaXNhYmxlZCB0ZXN0cyBhcmUgbm90IHJ1bi4KLSAgYm9v
bCBpc19kaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGlzX2Rpc2FibGVkXzsgfQotCi0gIC8vIFNl
dHMgdGhlIGlzX2Rpc2FibGVkIG1lbWJlci4KLSAgdm9pZCBzZXRfaXNfZGlzYWJsZWQoYm9vbCBp
cykgeyBpc19kaXNhYmxlZF8gPSBpczsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRl
c3QgbWF0Y2hlcyB0aGUgZmlsdGVyIHNwZWNpZmllZCBieSB0aGUgdXNlci4KLSAgYm9vbCBtYXRj
aGVzX2ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1hdGNoZXNfZmlsdGVyXzsgfQotCi0gIC8vIFNl
dHMgdGhlIG1hdGNoZXNfZmlsdGVyIG1lbWJlci4KLSAgdm9pZCBzZXRfbWF0Y2hlc19maWx0ZXIo
Ym9vbCBtYXRjaGVzKSB7IG1hdGNoZXNfZmlsdGVyXyA9IG1hdGNoZXM7IH0KLQotICAvLyBSZXR1
cm5zIHRoZSB0ZXN0IGNhc2UgbmFtZS4KLSAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUoKSBj
b25zdCB7IHJldHVybiB0ZXN0X2Nhc2VfbmFtZV8uY19zdHIoKTsgfQotCi0gIC8vIFJldHVybnMg
dGhlIHRlc3QgbmFtZS4KLSAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG5hbWVf
LmNfc3RyKCk7IH0KLQotICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNhc2UgY29tbWVudC4KLSAgY29u
c3QgY2hhciogdGVzdF9jYXNlX2NvbW1lbnQoKSBjb25zdCB7IHJldHVybiB0ZXN0X2Nhc2VfY29t
bWVudF8uY19zdHIoKTsgfQotCi0gIC8vIFJldHVybnMgdGhlIHRlc3QgY29tbWVudC4KLSAgY29u
c3QgY2hhciogY29tbWVudCgpIGNvbnN0IHsgcmV0dXJuIGNvbW1lbnRfLmNfc3RyKCk7IH0KLQot
ICAvLyBSZXR1cm5zIHRoZSBJRCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLgotICBUeXBlSWQg
Zml4dHVyZV9jbGFzc19pZCgpIGNvbnN0IHsgcmV0dXJuIGZpeHR1cmVfY2xhc3NfaWRfOyB9Ci0K
LSAgLy8gUmV0dXJucyB0aGUgdGVzdCByZXN1bHQuCi0gIFRlc3RSZXN1bHQqIHJlc3VsdCgpIHsg
cmV0dXJuICZyZXN1bHRfOyB9Ci0gIGNvbnN0IFRlc3RSZXN1bHQqIHJlc3VsdCgpIGNvbnN0IHsg
cmV0dXJuICZyZXN1bHRfOyB9Ci0KLSAgLy8gQ3JlYXRlcyB0aGUgdGVzdCBvYmplY3QsIHJ1bnMg
aXQsIHJlY29yZHMgaXRzIHJlc3VsdCwgYW5kIHRoZW4KLSAgLy8gZGVsZXRlcyBpdC4KLSAgdm9p
ZCBSdW4oKTsKLQotICAvLyBDbGVhcnMgdGhlIHRlc3QgcmVzdWx0LgotICB2b2lkIENsZWFyUmVz
dWx0KCkgeyByZXN1bHRfLkNsZWFyKCk7IH0KLQotICAvLyBDbGVhcnMgdGhlIHRlc3QgcmVzdWx0
IGluIHRoZSBnaXZlbiBUZXN0SW5mbyBvYmplY3QuCi0gIHN0YXRpYyB2b2lkIENsZWFyVGVzdFJl
c3VsdChUZXN0SW5mbyAqIHRlc3RfaW5mbykgewotICAgIHRlc3RfaW5mby0+aW1wbCgpLT5DbGVh
clJlc3VsdCgpOworICAgIHJldHVybiB0ZXN0X3Byb3BlcnR5LmtleSgpID09IGtleV87CiAgIH0K
IAogIHByaXZhdGU6Ci0gIC8vIFRoZXNlIGZpZWxkcyBhcmUgaW1tdXRhYmxlIHByb3BlcnRpZXMg
b2YgdGhlIHRlc3QuCi0gIFRlc3RJbmZvKiBjb25zdCBwYXJlbnRfOyAgICAgICAgICAvLyBUaGUg
b3duZXIgb2YgdGhpcyBvYmplY3QKLSAgY29uc3QgU3RyaW5nIHRlc3RfY2FzZV9uYW1lXzsgICAg
IC8vIFRlc3QgY2FzZSBuYW1lCi0gIGNvbnN0IFN0cmluZyBuYW1lXzsgICAgICAgICAgICAgICAv
LyBUZXN0IG5hbWUKLSAgY29uc3QgU3RyaW5nIHRlc3RfY2FzZV9jb21tZW50XzsgIC8vIFRlc3Qg
Y2FzZSBjb21tZW50Ci0gIGNvbnN0IFN0cmluZyBjb21tZW50XzsgICAgICAgICAgICAvLyBUZXN0
IGNvbW1lbnQKLSAgY29uc3QgVHlwZUlkIGZpeHR1cmVfY2xhc3NfaWRfOyAgIC8vIElEIG9mIHRo
ZSB0ZXN0IGZpeHR1cmUgY2xhc3MKLSAgYm9vbCBzaG91bGRfcnVuXzsgICAgICAgICAgICAgICAg
IC8vIFRydWUgaWZmIHRoaXMgdGVzdCBzaG91bGQgcnVuCi0gIGJvb2wgaXNfZGlzYWJsZWRfOyAg
ICAgICAgICAgICAgICAvLyBUcnVlIGlmZiB0aGlzIHRlc3QgaXMgZGlzYWJsZWQKLSAgYm9vbCBt
YXRjaGVzX2ZpbHRlcl87ICAgICAgICAgICAgIC8vIFRydWUgaWYgdGhpcyB0ZXN0IG1hdGNoZXMg
dGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VyLXNwZWNpZmll
ZCBmaWx0ZXIuCi0gIGludGVybmFsOjpUZXN0RmFjdG9yeUJhc2UqIGNvbnN0IGZhY3RvcnlfOyAg
Ly8gVGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gdGhlIHRlc3Qgb2JqZWN0Ci0KLSAgLy8gVGhpcyBmaWVsZCBp
cyBtdXRhYmxlIGFuZCBuZWVkcyB0byBiZSByZXNldCBiZWZvcmUgcnVubmluZyB0aGUKLSAgLy8g
dGVzdCBmb3IgdGhlIHNlY29uZCB0aW1lLgotICBUZXN0UmVzdWx0IHJlc3VsdF87Ci0KLSAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0SW5mb0ltcGwpOworICBzdGQ6OnN0cmlu
ZyBrZXlfOwogfTsKIAogLy8gQ2xhc3MgVW5pdFRlc3RPcHRpb25zLgpAQCAtNDMzLDEyICszNzEs
MTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdE9wdGlvbnMgewogICAvLyBGdW5jdGlvbnMg
Zm9yIHByb2Nlc3NpbmcgdGhlIGd0ZXN0X291dHB1dCBmbGFnLgogCiAgIC8vIFJldHVybnMgdGhl
IG91dHB1dCBmb3JtYXQsIG9yICIiIGZvciBub3JtYWwgcHJpbnRlZCBvdXRwdXQuCi0gIHN0YXRp
YyBTdHJpbmcgR2V0T3V0cHV0Rm9ybWF0KCk7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBHZXRPdXRw
dXRGb3JtYXQoKTsKIAogICAvLyBSZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSByZXF1
ZXN0ZWQgb3V0cHV0IGZpbGUsIG9yIHRoZQogICAvLyBkZWZhdWx0ICh0ZXN0X2RldGFpbC54bWwg
aW4gdGhlIG9yaWdpbmFsIHdvcmtpbmcgZGlyZWN0b3J5KSBpZgogICAvLyBub25lIHdhcyBleHBs
aWNpdGx5IHNwZWNpZmllZC4KLSAgc3RhdGljIFN0cmluZyBHZXRBYnNvbHV0ZVBhdGhUb091dHB1
dEZpbGUoKTsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldEFic29sdXRlUGF0aFRvT3V0cHV0Rmls
ZSgpOwogCiAgIC8vIEZ1bmN0aW9ucyBmb3IgcHJvY2Vzc2luZyB0aGUgZ3Rlc3RfZmlsdGVyIGZs
YWcuCiAKQEAgLTQ1MSw4ICszODksOCBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0T3B0aW9u
cyB7CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdXNlci1zcGVjaWZpZWQgZmlsdGVyIG1h
dGNoZXMgdGhlIHRlc3QgY2FzZQogICAvLyBuYW1lIGFuZCB0aGUgdGVzdCBuYW1lLgotICBzdGF0
aWMgYm9vbCBGaWx0ZXJNYXRjaGVzVGVzdChjb25zdCBTdHJpbmcgJnRlc3RfY2FzZV9uYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcgJnRlc3RfbmFtZSk7
CisgIHN0YXRpYyBib29sIEZpbHRlck1hdGNoZXNUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0
X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnRlc3RfbmFtZSk7CiAKICNpZiBHVEVTVF9PU19XSU5ET1dTCiAgIC8vIEZ1bmN0aW9u
IGZvciBzdXBwb3J0aW5nIHRoZSBndGVzdF9jYXRjaF9leGNlcHRpb24gZmxhZy4KQEAgLTQ2NSw3
ICs0MDMsNyBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0T3B0aW9ucyB7CiAKICAgLy8gUmV0
dXJucyB0cnVlIGlmICJuYW1lIiBtYXRjaGVzIHRoZSAnOicgc2VwYXJhdGVkIGxpc3Qgb2YgZ2xv
Yi1zdHlsZQogICAvLyBmaWx0ZXJzIGluICJmaWx0ZXIiLgotICBzdGF0aWMgYm9vbCBNYXRjaGVz
RmlsdGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgY2hhciogZmlsdGVyKTsKKyAgc3RhdGlj
IGJvb2wgTWF0Y2hlc0ZpbHRlcihjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgY29uc3QgY2hhciog
ZmlsdGVyKTsKIH07CiAKIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24ncyBuYW1l
LCByZW1vdmluZyBkaXJlY3RvcnkgcGF0aCBpZiB0aGF0CkBAIC00NzgsMTkgKzQxNiwyMyBAQCBj
bGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UgewogICBPc1N0YWNrVHJhY2VHZXR0ZXJJ
bnRlcmZhY2UoKSB7fQogICB2aXJ0dWFsIH5Pc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UoKSB7
fQogCi0gIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYSBTdHJpbmcu
ICBQYXJhbWV0ZXJzOgorICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFz
IGFuIHN0ZDo6c3RyaW5nLiAgUGFyYW1ldGVyczoKICAgLy8KICAgLy8gICBtYXhfZGVwdGggIC0g
dGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZAogICAvLyAg
ICAgICAgICAgICAgICBpbiB0aGUgdHJhY2UuCiAgIC8vICAgc2tpcF9jb3VudCAtIHRoZSBudW1i
ZXIgb2YgdG9wIGZyYW1lcyB0byBiZSBza2lwcGVkOyBkb2Vzbid0IGNvdW50CiAgIC8vICAgICAg
ICAgICAgICAgIGFnYWluc3QgbWF4X2RlcHRoLgotICB2aXJ0dWFsIFN0cmluZyBDdXJyZW50U3Rh
Y2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCkgPSAwOworICB2aXJ0dWFsIHN0
ZDo6c3RyaW5nIEN1cnJlbnRTdGFja1RyYWNlKGludCBtYXhfZGVwdGgsIGludCBza2lwX2NvdW50
KSA9IDA7CiAKICAgLy8gVXBvbkxlYXZpbmdHVGVzdCgpIHNob3VsZCBiZSBjYWxsZWQgaW1tZWRp
YXRlbHkgYmVmb3JlIEdvb2dsZSBUZXN0IGNhbGxzCiAgIC8vIHVzZXIgY29kZS4gSXQgc2F2ZXMg
c29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBzdGFjayB0aGF0CiAgIC8vIEN1cnJl
bnRTdGFja1RyYWNlKCkgd2lsbCB1c2UgdG8gZmluZCBhbmQgaGlkZSBHb29nbGUgVGVzdCBzdGFj
ayBmcmFtZXMuCiAgIHZpcnR1YWwgdm9pZCBVcG9uTGVhdmluZ0dUZXN0KCkgPSAwOwogCisgIC8v
IFRoaXMgc3RyaW5nIGlzIGluc2VydGVkIGluIHBsYWNlIG9mIHN0YWNrIGZyYW1lcyB0aGF0IGFy
ZSBwYXJ0IG9mCisgIC8vIEdvb2dsZSBUZXN0J3MgaW1wbGVtZW50YXRpb24uCisgIHN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCBrRWxpZGVkRnJhbWVzTWFya2VyOworCiAgcHJpdmF0ZToKICAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2Up
OwogfTsKQEAgLTQ5OCwyMiArNDQwLDIxIEBAIGNsYXNzIE9zU3RhY2tUcmFjZUdldHRlckludGVy
ZmFjZSB7CiAvLyBBIHdvcmtpbmcgaW1wbGVtZW50YXRpb24gb2YgdGhlIE9zU3RhY2tUcmFjZUdl
dHRlckludGVyZmFjZSBpbnRlcmZhY2UuCiBjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXIgOiBwdWJs
aWMgT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlIHsKICBwdWJsaWM6Ci0gIE9zU3RhY2tUcmFj
ZUdldHRlcigpIDogY2FsbGVyX2ZyYW1lXyhOVUxMKSB7fQotICB2aXJ0dWFsIFN0cmluZyBDdXJy
ZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCk7Ci0gIHZpcnR1YWwg
dm9pZCBVcG9uTGVhdmluZ0dUZXN0KCk7CisgIE9zU3RhY2tUcmFjZUdldHRlcigpIHt9CiAKLSAg
Ly8gVGhpcyBzdHJpbmcgaXMgaW5zZXJ0ZWQgaW4gcGxhY2Ugb2Ygc3RhY2sgZnJhbWVzIHRoYXQg
YXJlIHBhcnQgb2YKLSAgLy8gR29vZ2xlIFRlc3QncyBpbXBsZW1lbnRhdGlvbi4KLSAgc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IGtFbGlkZWRGcmFtZXNNYXJrZXI7CisgIHZpcnR1YWwgc3RkOjpz
dHJpbmcgQ3VycmVudFN0YWNrVHJhY2UoaW50IG1heF9kZXB0aCwgaW50IHNraXBfY291bnQpOwor
ICB2aXJ0dWFsIHZvaWQgVXBvbkxlYXZpbmdHVGVzdCgpOwogCiAgcHJpdmF0ZToKLSAgTXV0ZXgg
bXV0ZXhfOyAgLy8gcHJvdGVjdHMgYWxsIGludGVybmFsIHN0YXRlCisjaWYgR1RFU1RfSEFTX0FC
U0wKKyAgTXV0ZXggbXV0ZXhfOyAgLy8gUHJvdGVjdHMgYWxsIGludGVybmFsIHN0YXRlLgogCiAg
IC8vIFdlIHNhdmUgdGhlIHN0YWNrIGZyYW1lIGJlbG93IHRoZSBmcmFtZSB0aGF0IGNhbGxzIHVz
ZXIgY29kZS4KICAgLy8gV2UgZG8gdGhpcyBiZWNhdXNlIHRoZSBhZGRyZXNzIG9mIHRoZSBmcmFt
ZSBpbW1lZGlhdGVseSBiZWxvdwogICAvLyB0aGUgdXNlciBjb2RlIGNoYW5nZXMgYmV0d2VlbiB0
aGUgY2FsbCB0byBVcG9uTGVhdmluZ0dUZXN0KCkKLSAgLy8gYW5kIGFueSBjYWxscyB0byBDdXJy
ZW50U3RhY2tUcmFjZSgpIGZyb20gd2l0aGluIHRoZSB1c2VyIGNvZGUuCi0gIHZvaWQqIGNhbGxl
cl9mcmFtZV87CisgIC8vIGFuZCBhbnkgY2FsbHMgdG8gdGhlIHN0YWNrIHRyYWNlIGNvZGUgZnJv
bSB3aXRoaW4gdGhlIHVzZXIgY29kZS4KKyAgdm9pZCogY2FsbGVyX2ZyYW1lXyA9IG51bGxwdHI7
CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCiAKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOXyhPc1N0YWNrVHJhY2VHZXR0ZXIpOwogfTsKQEAgLTUyMiw3ICs0NjMsNyBAQCBjbGFz
cyBPc1N0YWNrVHJhY2VHZXR0ZXIgOiBwdWJsaWMgT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNl
IHsKIHN0cnVjdCBUcmFjZUluZm8gewogICBjb25zdCBjaGFyKiBmaWxlOwogICBpbnQgbGluZTsK
LSAgU3RyaW5nIG1lc3NhZ2U7CisgIHN0ZDo6c3RyaW5nIG1lc3NhZ2U7CiB9OwogCiAvLyBUaGlz
IGlzIHRoZSBkZWZhdWx0IGdsb2JhbCB0ZXN0IHBhcnQgcmVzdWx0IHJlcG9ydGVyIHVzZWQgaW4g
VW5pdFRlc3RJbXBsLgpAQCAtNjA2LDE1ICs1NDcsMjUgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0
VGVzdEltcGwgewogICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZmFpbGVkIHRlc3RzLgogICBpbnQg
ZmFpbGVkX3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlz
YWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0LgorICBp
bnQgcmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CisKICAgLy8gR2V0cyB0
aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzLgogICBpbnQgZGlzYWJsZWRfdGVzdF9jb3VudCgp
IGNvbnN0OwogCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0cyB0byBiZSBwcmludGVkIGlu
IHRoZSBYTUwgcmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV90ZXN0X2NvdW50KCkgY29uc3Q7CisK
ICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0cy4KICAgaW50IHRvdGFsX3Rlc3RfY291
bnQoKSBjb25zdDsKIAogICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdGhhdCBzaG91bGQg
cnVuLgogICBpbnQgdGVzdF90b19ydW5fY291bnQoKSBjb25zdDsKIAorICAvLyBHZXRzIHRoZSB0
aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0gc3RhcnQsIGluIG1zIGZyb20gdGhlIHN0YXJ0IG9mIHRo
ZQorICAvLyBVTklYIGVwb2NoLgorICBUaW1lSW5NaWxsaXMgc3RhcnRfdGltZXN0YW1wKCkgY29u
c3QgeyByZXR1cm4gc3RhcnRfdGltZXN0YW1wXzsgfQorCiAgIC8vIEdldHMgdGhlIGVsYXBzZWQg
dGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5NaWxsaXMgZWxhcHNlZF90aW1lKCkgY29u
c3QgeyByZXR1cm4gZWxhcHNlZF90aW1lXzsgfQogCkBAIC02NjMsNyArNjE0LDcgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBnZXR0ZXIsIGFuZCByZXR1cm5zIGl0Lgog
ICBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UqIG9zX3N0YWNrX3RyYWNlX2dldHRlcigpOwog
Ci0gIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYSBTdHJpbmcuCisg
IC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYW4gc3RkOjpzdHJpbmcu
CiAgIC8vCiAgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMgdG8gYmUgaW5j
bHVkZWQgaXMgc3BlY2lmaWVkIGJ5CiAgIC8vIHRoZSBndGVzdF9zdGFja190cmFjZV9kZXB0aCBm
bGFnLiAgVGhlIHNraXBfY291bnQgcGFyYW1ldGVyCkBAIC02NzMsNyArNjI0LDcgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBGb3IgZXhhbXBsZSwgaWYgRm9vKCkgY2Fs
bHMgQmFyKCksIHdoaWNoIGluIHR1cm4gY2FsbHMKICAgLy8gQ3VycmVudE9zU3RhY2tUcmFjZUV4
Y2VwdFRvcCgxKSwgRm9vKCkgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKICAgLy8gdHJhY2UgYnV0
IEJhcigpIGFuZCBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKCkgd29uJ3QuCi0gIFN0cmlu
ZyBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKGludCBza2lwX2NvdW50KTsKKyAgc3RkOjpz
dHJpbmcgQ3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcChpbnQgc2tpcF9jb3VudCkgR1RFU1Rf
Tk9fSU5MSU5FXzsKIAogICAvLyBGaW5kcyBhbmQgcmV0dXJucyBhIFRlc3RDYXNlIHdpdGggdGhl
IGdpdmVuIG5hbWUuICBJZiBvbmUgZG9lc24ndAogICAvLyBleGlzdCwgY3JlYXRlcyBvbmUgYW5k
IHJldHVybnMgaXQuCkBAIC02ODEsMTAgKzYzMiwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRU
ZXN0SW1wbCB7CiAgIC8vIEFyZ3VtZW50czoKICAgLy8KICAgLy8gICB0ZXN0X2Nhc2VfbmFtZTog
bmFtZSBvZiB0aGUgdGVzdCBjYXNlCisgIC8vICAgdHlwZV9wYXJhbTogICAgIHRoZSBuYW1lIG9m
IHRoZSB0ZXN0J3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYKKyAgLy8gICAgICAgICAgICAg
ICAgICAgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0Lgog
ICAvLyAgIHNldF91cF90YzogICAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHNldHMg
dXAgdGhlIHRlc3QgY2FzZQogICAvLyAgIHRlYXJfZG93bl90YzogICBwb2ludGVyIHRvIHRoZSBm
dW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQogICBUZXN0Q2FzZSogR2V0VGVz
dENhc2UoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBjb21tZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogdHlwZV9wYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3Q6OlNldFVwVGVzdENh
c2VGdW5jIHNldF91cF90YywKICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3Q6OlRlYXJEb3du
VGVzdENhc2VGdW5jIHRlYXJfZG93bl90Yyk7CiAKQEAgLTY5Nyw3ICs2NTAsNyBAQCBjbGFzcyBH
VEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vICAgdGVzdF9pbmZvOiAgICB0aGUgVGVzdElu
Zm8gb2JqZWN0CiAgIHZvaWQgQWRkVGVzdEluZm8oVGVzdDo6U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0
X3VwX3RjLAogICAgICAgICAgICAgICAgICAgIFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRl
YXJfZG93bl90YywKLSAgICAgICAgICAgICAgICAgICBUZXN0SW5mbyAqIHRlc3RfaW5mbykgewor
ICAgICAgICAgICAgICAgICAgIFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKICAgICAvLyBJbiBvcmRl
ciB0byBzdXBwb3J0IHRocmVhZC1zYWZlIGRlYXRoIHRlc3RzLCB3ZSBuZWVkIHRvCiAgICAgLy8g
cmVtZW1iZXIgdGhlIG9yaWdpbmFsIHdvcmtpbmcgZGlyZWN0b3J5IHdoZW4gdGhlIHRlc3QgcHJv
Z3JhbQogICAgIC8vIHdhcyBmaXJzdCBpbnZva2VkLiAgV2UgY2Fubm90IGRvIHRoaXMgaW4gUlVO
X0FMTF9URVNUUygpLCBhcwpAQCAtNzEyLDE4ICs2NjUsMTYgQEAgY2xhc3MgR1RFU1RfQVBJXyBV
bml0VGVzdEltcGwgewogICAgIH0KIAogICAgIEdldFRlc3RDYXNlKHRlc3RfaW5mby0+dGVzdF9j
YXNlX25hbWUoKSwKLSAgICAgICAgICAgICAgICB0ZXN0X2luZm8tPnRlc3RfY2FzZV9jb21tZW50
KCksCisgICAgICAgICAgICAgICAgdGVzdF9pbmZvLT50eXBlX3BhcmFtKCksCiAgICAgICAgICAg
ICAgICAgc2V0X3VwX3RjLAogICAgICAgICAgICAgICAgIHRlYXJfZG93bl90YyktPkFkZFRlc3RJ
bmZvKHRlc3RfaW5mbyk7CiAgIH0KIAotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiAgIC8vIFJl
dHVybnMgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgb2JqZWN0IHVzZWQgdG8ga2VlcCB0
cmFjayBvZgogICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFuZCBpbnN0YW50aWF0ZSBh
bmQgcmVnaXN0ZXIgdGhlbS4KICAgaW50ZXJuYWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lz
dHJ5JiBwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKSB7CiAgICAgcmV0dXJuIHBhcmFtZXRl
cml6ZWRfdGVzdF9yZWdpc3RyeV87CiAgIH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RF
U1QKIAogICAvLyBTZXRzIHRoZSBUZXN0Q2FzZSBvYmplY3QgZm9yIHRoZSB0ZXN0IHRoYXQncyBj
dXJyZW50bHkgcnVubmluZy4KICAgdm9pZCBzZXRfY3VycmVudF90ZXN0X2Nhc2UoVGVzdENhc2Uq
IGFfY3VycmVudF90ZXN0X2Nhc2UpIHsKQEAgLTczOCwyNyArNjg5LDM1IEBAIGNsYXNzIEdURVNU
X0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgfQogCiAgIC8vIFJlZ2lzdGVycyBhbGwgcGFyYW1ldGVy
aXplZCB0ZXN0cyBkZWZpbmVkIHVzaW5nIFRFU1RfUCBhbmQKLSAgLy8gSU5TVEFOVElBVEVfVEVT
VF9QLCBjcmVhdGluZyByZWd1bGFyIHRlc3RzIGZvciBlYWNoIHRlc3QvcGFyYW1ldGVyCi0gIC8v
IGNvbWJpbmF0aW9uLiBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIG1vcmUgdGhlbiBvbmNlOyBp
dCBoYXMKLSAgLy8gZ3VhcmRzIHByb3RlY3RpbmcgZnJvbSByZWdpc3RlcmluZyB0aGUgdGVzdHMg
bW9yZSB0aGVuIG9uY2UuCi0gIC8vIElmIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGRp
c2FibGVkLCBSZWdpc3RlclBhcmFtZXRlcml6ZWRUZXN0cwotICAvLyBpcyBwcmVzZW50IGJ1dCBk
b2VzIG5vdGhpbmcuCisgIC8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QLCBjcmVhdGluZyByZWd1
bGFyIHRlc3RzIGZvciBlYWNoIHRlc3QvcGFyYW1ldGVyCisgIC8vIGNvbWJpbmF0aW9uLiBUaGlz
IG1ldGhvZCBjYW4gYmUgY2FsbGVkIG1vcmUgdGhlbiBvbmNlOyBpdCBoYXMgZ3VhcmRzCisgIC8v
IHByb3RlY3RpbmcgZnJvbSByZWdpc3RlcmluZyB0aGUgdGVzdHMgbW9yZSB0aGVuIG9uY2UuICBJ
ZgorICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBkaXNhYmxlZCwgUmVnaXN0ZXJQ
YXJhbWV0ZXJpemVkVGVzdHMgaXMKKyAgLy8gcHJlc2VudCBidXQgZG9lcyBub3RoaW5nLgogICB2
b2lkIFJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzKCk7CiAKICAgLy8gUnVucyBhbGwgdGVzdHMg
aW4gdGhpcyBVbml0VGVzdCBvYmplY3QsIHByaW50cyB0aGUgcmVzdWx0LCBhbmQKLSAgLy8gcmV0
dXJucyAwIGlmIGFsbCB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3IgMSBvdGhlcndpc2UuICBJZiBh
bnkKLSAgLy8gZXhjZXB0aW9uIGlzIHRocm93biBkdXJpbmcgYSB0ZXN0IG9uIFdpbmRvd3MsIHRo
aXMgdGVzdCBpcwotICAvLyBjb25zaWRlcmVkIHRvIGJlIGZhaWxlZCwgYnV0IHRoZSByZXN0IG9m
IHRoZSB0ZXN0cyB3aWxsIHN0aWxsIGJlCi0gIC8vIHJ1bi4gIChXZSBkaXNhYmxlIGV4Y2VwdGlv
bnMgb24gTGludXggYW5kIE1hYyBPUyBYLCBzbyB0aGUgaXNzdWUKLSAgLy8gZG9lc24ndCBhcHBs
eSB0aGVyZS4pCi0gIGludCBSdW5BbGxUZXN0cygpOwotCi0gIC8vIENsZWFycyB0aGUgcmVzdWx0
cyBvZiBhbGwgdGVzdHMsIGluY2x1ZGluZyB0aGUgYWQgaG9jIHRlc3QuCi0gIHZvaWQgQ2xlYXJS
ZXN1bHQoKSB7CisgIC8vIHJldHVybnMgdHJ1ZSBpZiBhbGwgdGVzdHMgYXJlIHN1Y2Nlc3NmdWwu
ICBJZiBhbnkgZXhjZXB0aW9uIGlzCisgIC8vIHRocm93biBkdXJpbmcgYSB0ZXN0LCB0aGlzIHRl
c3QgaXMgY29uc2lkZXJlZCB0byBiZSBmYWlsZWQsIGJ1dAorICAvLyB0aGUgcmVzdCBvZiB0aGUg
dGVzdHMgd2lsbCBzdGlsbCBiZSBydW4uCisgIGJvb2wgUnVuQWxsVGVzdHMoKTsKKworICAvLyBD
bGVhcnMgdGhlIHJlc3VsdHMgb2YgYWxsIHRlc3RzLCBleGNlcHQgdGhlIGFkIGhvYyB0ZXN0cy4K
KyAgdm9pZCBDbGVhck5vbkFkSG9jVGVzdFJlc3VsdCgpIHsKICAgICBGb3JFYWNoKHRlc3RfY2Fz
ZXNfLCBUZXN0Q2FzZTo6Q2xlYXJUZXN0Q2FzZVJlc3VsdCk7CisgIH0KKworICAvLyBDbGVhcnMg
dGhlIHJlc3VsdHMgb2YgYWQtaG9jIHRlc3QgYXNzZXJ0aW9ucy4KKyAgdm9pZCBDbGVhckFkSG9j
VGVzdFJlc3VsdCgpIHsKICAgICBhZF9ob2NfdGVzdF9yZXN1bHRfLkNsZWFyKCk7CiAgIH0KIAor
ICAvLyBBZGRzIGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0
IHdoZW4gaW52b2tlZCBpbiBhCisgIC8vIGNvbnRleHQgb2YgYSB0ZXN0IG9yIGEgdGVzdCBjYXNl
LCBvciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNldC4gSWYgdGhlCisgIC8vIHJlc3VsdCBhbHJl
YWR5IGNvbnRhaW5zIGEgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBrZXksIHRoZSB2YWx1ZSB3aWxs
IGJlCisgIC8vIHVwZGF0ZWQuCisgIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3QgVGVzdFByb3Bl
cnR5JiB0ZXN0X3Byb3BlcnR5KTsKKwogICBlbnVtIFJlYWN0aW9uVG9TaGFyZGluZyB7CiAgICAg
SE9OT1JfU0hBUkRJTkdfUFJPVE9DT0wsCiAgICAgSUdOT1JFX1NIQVJESU5HX1BST1RPQ09MCkBA
IC04MTcsNiArNzc2LDEyIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8g
VW5pdFRlc3RPcHRpb25zLiBNdXN0IG5vdCBiZSBjYWxsZWQgYmVmb3JlIEluaXRHb29nbGVUZXN0
LgogICB2b2lkIENvbmZpZ3VyZVhtbE91dHB1dCgpOwogCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9S
RVNVTFRTXworICAvLyBJbml0aWFsaXplcyB0aGUgZXZlbnQgbGlzdGVuZXIgZm9yIHN0cmVhbWlu
ZyB0ZXN0IHJlc3VsdHMgdG8gYSBzb2NrZXQuCisgIC8vIE11c3Qgbm90IGJlIGNhbGxlZCBiZWZv
cmUgSW5pdEdvb2dsZVRlc3QuCisgIHZvaWQgQ29uZmlndXJlU3RyZWFtaW5nT3V0cHV0KCk7Cisj
ZW5kaWYKKwogICAvLyBQZXJmb3JtcyBpbml0aWFsaXphdGlvbiBkZXBlbmRlbnQgdXBvbiBmbGFn
IHZhbHVlcyBvYnRhaW5lZCBpbgogICAvLyBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkuICBJcyBj
YWxsZWQgZnJvbSBJbml0R29vZ2xlVGVzdCBhZnRlciB0aGUgY2FsbCB0bwogICAvLyBQYXJzZUdv
b2dsZVRlc3RGbGFnc09ubHkuICBJbiBjYXNlIGEgdXNlciBuZWdsZWN0cyB0byBjYWxsIEluaXRH
b29nbGVUZXN0CkBAIC04MzcsOSArODAyLDE3IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJ
bXBsIHsKICAgLy8gUmVzdG9yZXMgdGhlIHRlc3QgY2FzZXMgYW5kIHRlc3RzIHRvIHRoZWlyIG9y
ZGVyIGJlZm9yZSB0aGUgZmlyc3Qgc2h1ZmZsZS4KICAgdm9pZCBVbnNodWZmbGVUZXN0cygpOwog
CisgIC8vIFJldHVybnMgdGhlIHZhbHVlIG9mIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykg
YXQgdGhlIG1vbWVudAorICAvLyBVbml0VGVzdDo6UnVuKCkgc3RhcnRzLgorICBib29sIGNhdGNo
X2V4Y2VwdGlvbnMoKSBjb25zdCB7IHJldHVybiBjYXRjaF9leGNlcHRpb25zXzsgfQorCiAgcHJp
dmF0ZToKICAgZnJpZW5kIGNsYXNzIDo6dGVzdGluZzo6VW5pdFRlc3Q7CiAKKyAgLy8gVXNlZCBi
eSBVbml0VGVzdDo6UnVuKCkgdG8gY2FwdHVyZSB0aGUgc3RhdGUgb2YKKyAgLy8gR1RFU1RfRkxB
RyhjYXRjaF9leGNlcHRpb25zKSBhdCB0aGUgbW9tZW50IGl0IHN0YXJ0cy4KKyAgdm9pZCBzZXRf
Y2F0Y2hfZXhjZXB0aW9ucyhib29sIHZhbHVlKSB7IGNhdGNoX2V4Y2VwdGlvbnNfID0gdmFsdWU7
IH0KKwogICAvLyBUaGUgVW5pdFRlc3Qgb2JqZWN0IHRoYXQgb3ducyB0aGlzIGltcGxlbWVudGF0
aW9uIG9iamVjdC4KICAgVW5pdFRlc3QqIGNvbnN0IHBhcmVudF87CiAKQEAgLTg3NiwxNCArODQ5
LDEyIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gc2h1ZmZsZWQgb3Jk
ZXIuCiAgIHN0ZDo6dmVjdG9yPGludD4gdGVzdF9jYXNlX2luZGljZXNfOwogCi0jaWYgR1RFU1Rf
SEFTX1BBUkFNX1RFU1QKICAgLy8gUGFyYW1ldGVyaXplZFRlc3RSZWdpc3RyeSBvYmplY3QgdXNl
ZCB0byByZWdpc3RlciB2YWx1ZS1wYXJhbWV0ZXJpemVkCiAgIC8vIHRlc3RzLgogICBpbnRlcm5h
bDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgcGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lz
dHJ5XzsKIAogICAvLyBJbmRpY2F0ZXMgd2hldGhlciBSZWdpc3RlclBhcmFtZXRlcml6ZWRUZXN0
cygpIGhhcyBiZWVuIGNhbGxlZCBhbHJlYWR5LgogICBib29sIHBhcmFtZXRlcml6ZWRfdGVzdHNf
cmVnaXN0ZXJlZF87Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCiAKICAgLy8gSW5k
ZXggb2YgdGhlIGxhc3QgZGVhdGggdGVzdCBjYXNlIHJlZ2lzdGVyZWQuICBJbml0aWFsbHkgLTEu
CiAgIGludCBsYXN0X2RlYXRoX3Rlc3RfY2FzZV87CkBAIC05MjksNiArOTAwLDEwIEBAIGNsYXNz
IEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gT3VyIHJhbmRvbSBudW1iZXIgZ2VuZXJh
dG9yLgogICBpbnRlcm5hbDo6UmFuZG9tIHJhbmRvbV87CiAKKyAgLy8gVGhlIHRpbWUgb2YgdGhl
IHRlc3QgcHJvZ3JhbSBzdGFydCwgaW4gbXMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlCisgIC8vIFVO
SVggZXBvY2guCisgIFRpbWVJbk1pbGxpcyBzdGFydF90aW1lc3RhbXBfOworCiAgIC8vIEhvdyBs
b25nIHRoZSB0ZXN0IHRvb2sgdG8gcnVuLCBpbiBtaWxsaXNlY29uZHMuCiAgIFRpbWVJbk1pbGxp
cyBlbGFwc2VkX3RpbWVfOwogCkBAIC05NDIsNiArOTE3LDEwIEBAIGNsYXNzIEdURVNUX0FQSV8g
VW5pdFRlc3RJbXBsIHsKICAgLy8gQSBwZXItdGhyZWFkIHN0YWNrIG9mIHRyYWNlcyBjcmVhdGVk
IGJ5IHRoZSBTQ09QRURfVFJBQ0UoKSBtYWNyby4KICAgaW50ZXJuYWw6OlRocmVhZExvY2FsPHN0
ZDo6dmVjdG9yPFRyYWNlSW5mbz4gPiBndGVzdF90cmFjZV9zdGFja187CiAKKyAgLy8gVGhlIHZh
bHVlIG9mIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgYXQgdGhlIG1vbWVudCBSdW5BbGxU
ZXN0cygpCisgIC8vIHN0YXJ0cy4KKyAgYm9vbCBjYXRjaF9leGNlcHRpb25zXzsKKwogICBHVEVT
VF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFVuaXRUZXN0SW1wbCk7CiB9OyAgLy8gY2xhc3Mg
VW5pdFRlc3RJbXBsCiAKQEAgLTk1MSwxNCArOTMwLDE2IEBAIGlubGluZSBVbml0VGVzdEltcGwq
IEdldFVuaXRUZXN0SW1wbCgpIHsKICAgcmV0dXJuIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5p
bXBsKCk7CiB9CiAKKyNpZiBHVEVTVF9VU0VTX1NJTVBMRV9SRQorCiAvLyBJbnRlcm5hbCBoZWxw
ZXIgZnVuY3Rpb25zIGZvciBpbXBsZW1lbnRpbmcgdGhlIHNpbXBsZSByZWd1bGFyCiAvLyBleHBy
ZXNzaW9uIG1hdGNoZXIuCiBHVEVTVF9BUElfIGJvb2wgSXNJblNldChjaGFyIGNoLCBjb25zdCBj
aGFyKiBzdHIpOwotR1RFU1RfQVBJXyBib29sIElzRGlnaXQoY2hhciBjaCk7Ci1HVEVTVF9BUElf
IGJvb2wgSXNQdW5jdChjaGFyIGNoKTsKK0dURVNUX0FQSV8gYm9vbCBJc0FzY2lpRGlnaXQoY2hh
ciBjaCk7CitHVEVTVF9BUElfIGJvb2wgSXNBc2NpaVB1bmN0KGNoYXIgY2gpOwogR1RFU1RfQVBJ
XyBib29sIElzUmVwZWF0KGNoYXIgY2gpOwotR1RFU1RfQVBJXyBib29sIElzV2hpdGVTcGFjZShj
aGFyIGNoKTsKLUdURVNUX0FQSV8gYm9vbCBJc1dvcmRDaGFyKGNoYXIgY2gpOworR1RFU1RfQVBJ
XyBib29sIElzQXNjaWlXaGl0ZVNwYWNlKGNoYXIgY2gpOworR1RFU1RfQVBJXyBib29sIElzQXNj
aWlXb3JkQ2hhcihjaGFyIGNoKTsKIEdURVNUX0FQSV8gYm9vbCBJc1ZhbGlkRXNjYXBlKGNoYXIg
Y2gpOwogR1RFU1RfQVBJXyBib29sIEF0b21NYXRjaGVzQ2hhcihib29sIGVzY2FwZWQsIGNoYXIg
cGF0dGVybiwgY2hhciBjaCk7CiBHVEVTVF9BUElfIGJvb2wgVmFsaWRhdGVSZWdleChjb25zdCBj
aGFyKiByZWdleCk7CkBAIC05NjcsNiArOTQ4LDggQEAgR1RFU1RfQVBJXyBib29sIE1hdGNoUmVw
ZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKAogICAgIGJvb2wgZXNjYXBlZCwgY2hhciBjaCwgY2hhciBy
ZXBlYXQsIGNvbnN0IGNoYXIqIHJlZ2V4LCBjb25zdCBjaGFyKiBzdHIpOwogR1RFU1RfQVBJXyBi
b29sIE1hdGNoUmVnZXhBbnl3aGVyZShjb25zdCBjaGFyKiByZWdleCwgY29uc3QgY2hhciogc3Ry
KTsKIAorI2VuZGlmICAvLyBHVEVTVF9VU0VTX1NJTVBMRV9SRQorCiAvLyBQYXJzZXMgdGhlIGNv
bW1hbmQgbGluZSBmb3IgR29vZ2xlIFRlc3QgZmxhZ3MsIHdpdGhvdXQgaW5pdGlhbGl6aW5nCiAv
LyBvdGhlciBwYXJ0cyBvZiBHb29nbGUgVGVzdC4KIEdURVNUX0FQSV8gdm9pZCBQYXJzZUdvb2ds
ZVRlc3RGbGFnc09ubHkoaW50KiBhcmdjLCBjaGFyKiogYXJndik7CkBAIC05NzYsMzMgKzk1OSw3
IEBAIEdURVNUX0FQSV8gdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoaW50KiBhcmdjLCB3
Y2hhcl90KiogYXJndik7CiAKIC8vIFJldHVybnMgdGhlIG1lc3NhZ2UgZGVzY3JpYmluZyB0aGUg
bGFzdCBzeXN0ZW0gZXJyb3IsIHJlZ2FyZGxlc3Mgb2YgdGhlCiAvLyBwbGF0Zm9ybS4KLVN0cmlu
ZyBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpOwotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotLy8g
UHJvdmlkZXMgbGVhay1zYWZlIFdpbmRvd3Mga2VybmVsIGhhbmRsZSBvd25lcnNoaXAuCi1jbGFz
cyBBdXRvSGFuZGxlIHsKLSBwdWJsaWM6Ci0gIEF1dG9IYW5kbGUoKSA6IGhhbmRsZV8oSU5WQUxJ
RF9IQU5ETEVfVkFMVUUpIHt9Ci0gIGV4cGxpY2l0IEF1dG9IYW5kbGUoSEFORExFIGhhbmRsZSkg
OiBoYW5kbGVfKGhhbmRsZSkge30KLQotICB+QXV0b0hhbmRsZSgpIHsgUmVzZXQoKTsgfQotCi0g
IEhBTkRMRSBHZXQoKSBjb25zdCB7IHJldHVybiBoYW5kbGVfOyB9Ci0gIHZvaWQgUmVzZXQoKSB7
IFJlc2V0KElOVkFMSURfSEFORExFX1ZBTFVFKTsgfQotICB2b2lkIFJlc2V0KEhBTkRMRSBoYW5k
bGUpIHsKLSAgICBpZiAoaGFuZGxlICE9IGhhbmRsZV8pIHsKLSAgICAgIGlmIChoYW5kbGVfICE9
IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICA6OkNsb3NlSGFuZGxlKGhhbmRsZV8pOwot
ICAgICAgaGFuZGxlXyA9IGhhbmRsZTsKLSAgICB9Ci0gIH0KLQotIHByaXZhdGU6Ci0gIEhBTkRM
RSBoYW5kbGVfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQXV0b0hhbmRs
ZSk7Ci19OwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCitHVEVTVF9BUElfIHN0ZDo6c3Ry
aW5nIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCk7CiAKIC8vIEF0dGVtcHRzIHRvIHBhcnNlIGEg
c3RyaW5nIGludG8gYSBwb3NpdGl2ZSBpbnRlZ2VyIHBvaW50ZWQgdG8gYnkgdGhlCiAvLyBudW1i
ZXIgcGFyYW1ldGVyLiAgUmV0dXJucyB0cnVlIGlmIHRoYXQgaXMgcG9zc2libGUuCkBAIC0xMDEz
LDcgKzk3MCw3IEBAIGJvb2wgUGFyc2VOYXR1cmFsTnVtYmVyKGNvbnN0IDo6c3RkOjpzdHJpbmcm
IHN0ciwgSW50ZWdlciogbnVtYmVyKSB7CiAgIC8vIEZhaWwgZmFzdCBpZiB0aGUgZ2l2ZW4gc3Ry
aW5nIGRvZXMgbm90IGJlZ2luIHdpdGggYSBkaWdpdDsKICAgLy8gdGhpcyBieXBhc3NlcyBzdHJ0
b1hYWCdzICJvcHRpb25hbCBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIHBsdXMKICAgLy8gb3IgbWlu
dXMgc2lnbiIgc2VtYW50aWNzLCB3aGljaCBhcmUgdW5kZXNpcmFibGUgaGVyZS4KLSAgaWYgKHN0
ci5lbXB0eSgpIHx8ICFpc2RpZ2l0KHN0clswXSkpIHsKKyAgaWYgKHN0ci5lbXB0eSgpIHx8ICFJ
c0RpZ2l0KHN0clswXSkpIHsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KICAgZXJybm8gPSAwOwpA
QCAtMTAyMSwxNyArOTc4LDIzIEBAIGJvb2wgUGFyc2VOYXR1cmFsTnVtYmVyKGNvbnN0IDo6c3Rk
OjpzdHJpbmcmIHN0ciwgSW50ZWdlciogbnVtYmVyKSB7CiAgIGNoYXIqIGVuZDsKICAgLy8gQmln
Z2VzdENvbnZlcnRpYmxlIGlzIHRoZSBsYXJnZXN0IGludGVnZXIgdHlwZSB0aGF0IHN5c3RlbS1w
cm92aWRlZAogICAvLyBzdHJpbmctdG8tbnVtYmVyIGNvbnZlcnNpb24gcm91dGluZXMgY2FuIHJl
dHVybi4KLSNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVkKF9fR05VQ19fKQorCisjIGlm
IEdURVNUX09TX1dJTkRPV1MgJiYgIWRlZmluZWQoX19HTlVDX18pCisKICAgLy8gTVNWQyBhbmQg
QysrIEJ1aWxkZXIgZGVmaW5lIF9faW50NjQgaW5zdGVhZCBvZiB0aGUgc3RhbmRhcmQgbG9uZyBs
b25nLgogICB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgQmlnZ2VzdENvbnZlcnRpYmxlOwogICBj
b25zdCBCaWdnZXN0Q29udmVydGlibGUgcGFyc2VkID0gX3N0cnRvdWk2NChzdHIuY19zdHIoKSwg
JmVuZCwgMTApOwotI2Vsc2UKKworIyBlbHNlCisKICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxv
bmcgQmlnZ2VzdENvbnZlcnRpYmxlOyAgLy8gTk9MSU5UCiAgIGNvbnN0IEJpZ2dlc3RDb252ZXJ0
aWJsZSBwYXJzZWQgPSBzdHJ0b3VsbChzdHIuY19zdHIoKSwgJmVuZCwgMTApOwotI2VuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVkKF9fR05VQ19fKQorCisjIGVuZGlmICAvLyBH
VEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVkKF9fR05VQ19fKQorCiAgIGNvbnN0IGJvb2wgcGFy
c2Vfc3VjY2VzcyA9ICplbmQgPT0gJ1wwJyAmJiBlcnJubyA9PSAwOwogCi0gIC8vIFRPRE8odmxh
ZGxAZ29vZ2xlLmNvbSk6IENvbnZlcnQgdGhpcyB0byBjb21waWxlIHRpbWUgYXNzZXJ0aW9uIHdo
ZW4gaXQgaXMKKyAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBjb21waWxlIHRpbWUgYXNzZXJ0
aW9uIHdoZW4gaXQgaXMKICAgLy8gYXZhaWxhYmxlLgogICBHVEVTVF9DSEVDS18oc2l6ZW9mKElu
dGVnZXIpIDw9IHNpemVvZihwYXJzZWQpKTsKIApAQCAtMTA1Myw4ICsxMDE2LDkgQEAgYm9vbCBQ
YXJzZU5hdHVyYWxOdW1iZXIoY29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyLCBJbnRlZ2VyKiBudW1i
ZXIpIHsKIGNsYXNzIFRlc3RSZXN1bHRBY2Nlc3NvciB7CiAgcHVibGljOgogICBzdGF0aWMgdm9p
ZCBSZWNvcmRQcm9wZXJ0eShUZXN0UmVzdWx0KiB0ZXN0X3Jlc3VsdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UHJvcGVydHkmIHByb3BlcnR5KSB7Ci0gICAg
dGVzdF9yZXN1bHQtPlJlY29yZFByb3BlcnR5KHByb3BlcnR5KTsKKyAgICB0ZXN0X3Jlc3VsdC0+
UmVjb3JkUHJvcGVydHkoeG1sX2VsZW1lbnQsIHByb3BlcnR5KTsKICAgfQogCiAgIHN0YXRpYyB2
b2lkIENsZWFyVGVzdFBhcnRSZXN1bHRzKFRlc3RSZXN1bHQqIHRlc3RfcmVzdWx0KSB7CkBAIC0x
MDY3LDcgKzEwMzEsMTU3IEBAIGNsYXNzIFRlc3RSZXN1bHRBY2Nlc3NvciB7CiAgIH0KIH07CiAK
KyNpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKKy8vIFN0cmVhbXMgdGVzdCByZXN1bHRz
IHRvIHRoZSBnaXZlbiBwb3J0IG9uIHRoZSBnaXZlbiBob3N0IG1hY2hpbmUuCitjbGFzcyBTdHJl
YW1pbmdMaXN0ZW5lciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKKyBwdWJsaWM6
CisgIC8vIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHdyaXRpbmcgc3RyaW5ncyB0byBhIHNvY2tl
dC4KKyAgY2xhc3MgQWJzdHJhY3RTb2NrZXRXcml0ZXIgeworICAgcHVibGljOgorICAgIHZpcnR1
YWwgfkFic3RyYWN0U29ja2V0V3JpdGVyKCkge30KKworICAgIC8vIFNlbmRzIGEgc3RyaW5nIHRv
IHRoZSBzb2NrZXQuCisgICAgdmlydHVhbCB2b2lkIFNlbmQoY29uc3Qgc3RkOjpzdHJpbmcmIG1l
c3NhZ2UpID0gMDsKKworICAgIC8vIENsb3NlcyB0aGUgc29ja2V0LgorICAgIHZpcnR1YWwgdm9p
ZCBDbG9zZUNvbm5lY3Rpb24oKSB7fQorCisgICAgLy8gU2VuZHMgYSBzdHJpbmcgYW5kIGEgbmV3
bGluZSB0byB0aGUgc29ja2V0LgorICAgIHZvaWQgU2VuZExuKGNvbnN0IHN0ZDo6c3RyaW5nJiBt
ZXNzYWdlKSB7IFNlbmQobWVzc2FnZSArICJcbiIpOyB9CisgIH07CisKKyAgLy8gQ29uY3JldGUg
Y2xhc3MgZm9yIGFjdHVhbGx5IHdyaXRpbmcgc3RyaW5ncyB0byBhIHNvY2tldC4KKyAgY2xhc3Mg
U29ja2V0V3JpdGVyIDogcHVibGljIEFic3RyYWN0U29ja2V0V3JpdGVyIHsKKyAgIHB1YmxpYzoK
KyAgICBTb2NrZXRXcml0ZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGhvc3QsIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBwb3J0KQorICAgICAgICA6IHNvY2tmZF8oLTEpLCBob3N0X25hbWVfKGhvc3QpLCBwb3J0
X251bV8ocG9ydCkgeworICAgICAgTWFrZUNvbm5lY3Rpb24oKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIH5Tb2NrZXRXcml0ZXIoKSB7CisgICAgICBpZiAoc29ja2ZkXyAhPSAtMSkKKyAgICAgICAg
Q2xvc2VDb25uZWN0aW9uKCk7CisgICAgfQorCisgICAgLy8gU2VuZHMgYSBzdHJpbmcgdG8gdGhl
IHNvY2tldC4KKyAgICB2aXJ0dWFsIHZvaWQgU2VuZChjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2Fn
ZSkgeworICAgICAgR1RFU1RfQ0hFQ0tfKHNvY2tmZF8gIT0gLTEpCisgICAgICAgICAgPDwgIlNl
bmQoKSBjYW4gYmUgY2FsbGVkIG9ubHkgd2hlbiB0aGVyZSBpcyBhIGNvbm5lY3Rpb24uIjsKKwor
ICAgICAgY29uc3QgaW50IGxlbiA9IHN0YXRpY19jYXN0PGludD4obWVzc2FnZS5sZW5ndGgoKSk7
CisgICAgICBpZiAod3JpdGUoc29ja2ZkXywgbWVzc2FnZS5jX3N0cigpLCBsZW4pICE9IGxlbikg
eworICAgICAgICBHVEVTVF9MT0dfKFdBUk5JTkcpCisgICAgICAgICAgICA8PCAic3RyZWFtX3Jl
c3VsdF90bzogZmFpbGVkIHRvIHN0cmVhbSB0byAiCisgICAgICAgICAgICA8PCBob3N0X25hbWVf
IDw8ICI6IiA8PCBwb3J0X251bV87CisgICAgICB9CisgICAgfQorCisgICBwcml2YXRlOgorICAg
IC8vIENyZWF0ZXMgYSBjbGllbnQgc29ja2V0IGFuZCBjb25uZWN0cyB0byB0aGUgc2VydmVyLgor
ICAgIHZvaWQgTWFrZUNvbm5lY3Rpb24oKTsKKworICAgIC8vIENsb3NlcyB0aGUgc29ja2V0Lgor
ICAgIHZvaWQgQ2xvc2VDb25uZWN0aW9uKCkgeworICAgICAgR1RFU1RfQ0hFQ0tfKHNvY2tmZF8g
IT0gLTEpCisgICAgICAgICAgPDwgIkNsb3NlQ29ubmVjdGlvbigpIGNhbiBiZSBjYWxsZWQgb25s
eSB3aGVuIHRoZXJlIGlzIGEgY29ubmVjdGlvbi4iOworCisgICAgICBjbG9zZShzb2NrZmRfKTsK
KyAgICAgIHNvY2tmZF8gPSAtMTsKKyAgICB9CisKKyAgICBpbnQgc29ja2ZkXzsgIC8vIHNvY2tl
dCBmaWxlIGRlc2NyaXB0b3IKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBob3N0X25hbWVfOworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIHBvcnRfbnVtXzsKKworICAgIEdURVNUX0RJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTl8oU29ja2V0V3JpdGVyKTsKKyAgfTsgIC8vIGNsYXNzIFNvY2tldFdyaXRlcgor
CisgIC8vIEVzY2FwZXMgJz0nLCAnJicsICclJywgYW5kICdcbicgY2hhcmFjdGVycyBpbiBzdHIg
YXMgIiV4eCIuCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBVcmxFbmNvZGUoY29uc3QgY2hhciogc3Ry
KTsKKworICBTdHJlYW1pbmdMaXN0ZW5lcihjb25zdCBzdGQ6OnN0cmluZyYgaG9zdCwgY29uc3Qg
c3RkOjpzdHJpbmcmIHBvcnQpCisgICAgICA6IHNvY2tldF93cml0ZXJfKG5ldyBTb2NrZXRXcml0
ZXIoaG9zdCwgcG9ydCkpIHsKKyAgICBTdGFydCgpOworICB9CisKKyAgZXhwbGljaXQgU3RyZWFt
aW5nTGlzdGVuZXIoQWJzdHJhY3RTb2NrZXRXcml0ZXIqIHNvY2tldF93cml0ZXIpCisgICAgICA6
IHNvY2tldF93cml0ZXJfKHNvY2tldF93cml0ZXIpIHsgU3RhcnQoKTsgfQorCisgIHZvaWQgT25U
ZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKiB1bml0X3Rlc3QgKi8pIHsKKyAgICBT
ZW5kTG4oImV2ZW50PVRlc3RQcm9ncmFtU3RhcnQiKTsKKyAgfQorCisgIHZvaWQgT25UZXN0UHJv
Z3JhbUVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KSB7CisgICAgLy8gTm90ZSB0aGF0IEdv
b2dsZSBUZXN0IGN1cnJlbnQgb25seSByZXBvcnQgZWxhcHNlZCB0aW1lIGZvciBlYWNoCisgICAg
Ly8gdGVzdCBpdGVyYXRpb24sIG5vdCBmb3IgdGhlIGVudGlyZSB0ZXN0IHByb2dyYW0uCisgICAg
U2VuZExuKCJldmVudD1UZXN0UHJvZ3JhbUVuZCZwYXNzZWQ9IiArIEZvcm1hdEJvb2wodW5pdF90
ZXN0LlBhc3NlZCgpKSk7CisKKyAgICAvLyBOb3RpZnkgdGhlIHN0cmVhbWluZyBzZXJ2ZXIgdG8g
c3RvcC4KKyAgICBzb2NrZXRfd3JpdGVyXy0+Q2xvc2VDb25uZWN0aW9uKCk7CisgIH0KKworICB2
b2lkIE9uVGVzdEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKiB1bml0X3Rlc3QgKi8s
IGludCBpdGVyYXRpb24pIHsKKyAgICBTZW5kTG4oImV2ZW50PVRlc3RJdGVyYXRpb25TdGFydCZp
dGVyYXRpb249IiArCisgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhpdGVyYXRpb24pKTsK
KyAgfQorCisgIHZvaWQgT25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rl
c3QsIGludCAvKiBpdGVyYXRpb24gKi8pIHsKKyAgICBTZW5kTG4oImV2ZW50PVRlc3RJdGVyYXRp
b25FbmQmcGFzc2VkPSIgKworICAgICAgICAgICBGb3JtYXRCb29sKHVuaXRfdGVzdC5QYXNzZWQo
KSkgKyAiJmVsYXBzZWRfdGltZT0iICsKKyAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHVu
aXRfdGVzdC5lbGFwc2VkX3RpbWUoKSkgKyAibXMiKTsKKyAgfQorCisgIHZvaWQgT25UZXN0Q2Fz
ZVN0YXJ0KGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKKyAgICBTZW5kTG4oc3RkOjpzdHJp
bmcoImV2ZW50PVRlc3RDYXNlU3RhcnQmbmFtZT0iKSArIHRlc3RfY2FzZS5uYW1lKCkpOworICB9
CisKKyAgdm9pZCBPblRlc3RDYXNlRW5kKGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKKyAg
ICBTZW5kTG4oImV2ZW50PVRlc3RDYXNlRW5kJnBhc3NlZD0iICsgRm9ybWF0Qm9vbCh0ZXN0X2Nh
c2UuUGFzc2VkKCkpCisgICAgICAgICAgICsgIiZlbGFwc2VkX3RpbWU9IiArIFN0cmVhbWFibGVU
b1N0cmluZyh0ZXN0X2Nhc2UuZWxhcHNlZF90aW1lKCkpCisgICAgICAgICAgICsgIm1zIik7Cisg
IH0KKworICB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKKyAg
ICBTZW5kTG4oc3RkOjpzdHJpbmcoImV2ZW50PVRlc3RTdGFydCZuYW1lPSIpICsgdGVzdF9pbmZv
Lm5hbWUoKSk7CisgIH0KKworICB2b2lkIE9uVGVzdEVuZChjb25zdCBUZXN0SW5mbyYgdGVzdF9p
bmZvKSB7CisgICAgU2VuZExuKCJldmVudD1UZXN0RW5kJnBhc3NlZD0iICsKKyAgICAgICAgICAg
Rm9ybWF0Qm9vbCgodGVzdF9pbmZvLnJlc3VsdCgpKS0+UGFzc2VkKCkpICsKKyAgICAgICAgICAg
IiZlbGFwc2VkX3RpbWU9IiArCisgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZygodGVzdF9p
bmZvLnJlc3VsdCgpKS0+ZWxhcHNlZF90aW1lKCkpICsgIm1zIik7CisgIH0KKworICB2b2lkIE9u
VGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsK
KyAgICBjb25zdCBjaGFyKiBmaWxlX25hbWUgPSB0ZXN0X3BhcnRfcmVzdWx0LmZpbGVfbmFtZSgp
OworICAgIGlmIChmaWxlX25hbWUgPT0gTlVMTCkKKyAgICAgIGZpbGVfbmFtZSA9ICIiOworICAg
IFNlbmRMbigiZXZlbnQ9VGVzdFBhcnRSZXN1bHQmZmlsZT0iICsgVXJsRW5jb2RlKGZpbGVfbmFt
ZSkgKworICAgICAgICAgICAiJmxpbmU9IiArIFN0cmVhbWFibGVUb1N0cmluZyh0ZXN0X3BhcnRf
cmVzdWx0LmxpbmVfbnVtYmVyKCkpICsKKyAgICAgICAgICAgIiZtZXNzYWdlPSIgKyBVcmxFbmNv
ZGUodGVzdF9wYXJ0X3Jlc3VsdC5tZXNzYWdlKCkpKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8g
U2VuZHMgdGhlIGdpdmVuIG1lc3NhZ2UgYW5kIGEgbmV3bGluZSB0byB0aGUgc29ja2V0LgorICB2
b2lkIFNlbmRMbihjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgeyBzb2NrZXRfd3JpdGVyXy0+
U2VuZExuKG1lc3NhZ2UpOyB9CisKKyAgLy8gQ2FsbGVkIGF0IHRoZSBzdGFydCBvZiBzdHJlYW1p
bmcgdG8gbm90aWZ5IHRoZSByZWNlaXZlciB3aGF0CisgIC8vIHByb3RvY29sIHdlIGFyZSB1c2lu
Zy4KKyAgdm9pZCBTdGFydCgpIHsgU2VuZExuKCJndGVzdF9zdHJlYW1pbmdfcHJvdG9jb2xfdmVy
c2lvbj0xLjAiKTsgfQorCisgIHN0ZDo6c3RyaW5nIEZvcm1hdEJvb2woYm9vbCB2YWx1ZSkgeyBy
ZXR1cm4gdmFsdWUgPyAiMSIgOiAiMCI7IH0KKworICBjb25zdCBzY29wZWRfcHRyPEFic3RyYWN0
U29ja2V0V3JpdGVyPiBzb2NrZXRfd3JpdGVyXzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FO
RF9BU1NJR05fKFN0cmVhbWluZ0xpc3RlbmVyKTsKK307ICAvLyBjbGFzcyBTdHJlYW1pbmdMaXN0
ZW5lcgorCisjZW5kaWYgIC8vIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKwogfSAgLy8gbmFt
ZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCitHVEVTVF9ESVNBQkxF
X01TQ19XQVJOSU5HU19QT1BfKCkgIC8vICA0MjUxCisKICNlbmRpZiAgLy8gR1RFU1RfU1JDX0dU
RVNUX0lOVEVSTkFMX0lOTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c3JjL2d0ZXN0LXBvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcG9y
dC5jYwppbmRleCBiOTUwNGY1NmFlNmY5M2UxMjZkMmI1NjhhN2Q5N2RiNTE3ZmI4M2U0Li5mZWNi
NWQxMWMyMTI5NmE5MTgxYTExMjgwMjI2MDY3YjY0M2VkZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYwpAQCAtMjYsNDIgKzI2LDUyIEBACiAvLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oPgorCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAj
aW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RkaW8u
aD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxmc3RyZWFtPgogCi0jaWYgR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKLSNpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBGb3IgVGVybWluYXRl
UHJvY2VzcygpCi0jZWxpZiBHVEVTVF9PU19XSU5ET1dTCi0jaW5jbHVkZSA8aW8uaD4KLSNpbmNs
dWRlIDxzeXMvc3RhdC5oPgorI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaW5jbHVkZSA8d2luZG93
cy5oPgorIyBpbmNsdWRlIDxpby5oPgorIyBpbmNsdWRlIDxzeXMvc3RhdC5oPgorIyBpbmNsdWRl
IDxtYXA+ICAvLyBVc2VkIGluIFRocmVhZExvY2FsLgogI2Vsc2UKLSNpbmNsdWRlIDx1bmlzdGQu
aD4KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaW5jbHVkZSA8dW5pc3Rk
Lmg+CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAogI2lmIEdURVNUX09TX01BQwotI2lu
Y2x1ZGUgPG1hY2gvbWFjaF9pbml0Lmg+Ci0jaW5jbHVkZSA8bWFjaC90YXNrLmg+Ci0jaW5jbHVk
ZSA8bWFjaC92bV9tYXAuaD4KKyMgaW5jbHVkZSA8bWFjaC9tYWNoX2luaXQuaD4KKyMgaW5jbHVk
ZSA8bWFjaC90YXNrLmg+CisjIGluY2x1ZGUgPG1hY2gvdm1fbWFwLmg+CiAjZW5kaWYgIC8vIEdU
RVNUX09TX01BQwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+Ci0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QtbWVzc2FnZS5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmlu
Zy5oPgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBv
ZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUg
Z3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEg
Y29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9t
IGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBj
b2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQorI2lmIEdURVNUX09TX1FOWAor
IyBpbmNsdWRlIDxkZXZjdGwuaD4KKyMgaW5jbHVkZSA8ZmNudGwuaD4KKyMgaW5jbHVkZSA8c3lz
L3Byb2Nmcy5oPgorI2VuZGlmICAvLyBHVEVTVF9PU19RTlgKKworI2lmIEdURVNUX09TX0FJWAor
IyBpbmNsdWRlIDxwcm9jaW5mby5oPgorIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZiAg
Ly8gR1RFU1RfT1NfQUlYCisKKyNpZiBHVEVTVF9PU19GVUNIU0lBCisjIGluY2x1ZGUgPHppcmNv
bi9wcm9jZXNzLmg+CisjIGluY2x1ZGUgPHppcmNvbi9zeXNjYWxscy5oPgorI2VuZGlmICAvLyBH
VEVTVF9PU19GVUNIU0lBCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC1tZXNzYWdlLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
aW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKICNp
bmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5U
QVRJT05fCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CkBAIC03
NSwxMCArODUsMzEgQEAgY29uc3QgaW50IGtTdGRPdXRGaWxlbm8gPSBTVERPVVRfRklMRU5POwog
Y29uc3QgaW50IGtTdGRFcnJGaWxlbm8gPSBTVERFUlJfRklMRU5POwogI2VuZGlmICAvLyBfTVND
X1ZFUgogCi0jaWYgR1RFU1RfT1NfTUFDCisjaWYgR1RFU1RfT1NfTElOVVgKKworbmFtZXNwYWNl
IHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorVCBSZWFkUHJvY0ZpbGVGaWVsZChjb25zdCBzdGQ6
OnN0cmluZyYgZmlsZW5hbWUsIGludCBmaWVsZCkgeworICBzdGQ6OnN0cmluZyBkdW1teTsKKyAg
c3RkOjppZnN0cmVhbSBmaWxlKGZpbGVuYW1lLmNfc3RyKCkpOworICB3aGlsZSAoZmllbGQtLSA+
IDApIHsKKyAgICBmaWxlID4+IGR1bW15OworICB9CisgIFQgb3V0cHV0ID0gMDsKKyAgZmlsZSA+
PiBvdXRwdXQ7CisgIHJldHVybiBvdXRwdXQ7Cit9Cit9ICAvLyBuYW1lc3BhY2UKKworLy8gUmV0
dXJucyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSB0aHJlYWRzLCBvciAwIHdoZW4gdGhlcmUgaXMgYW4g
ZXJyb3IuCitzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZp
bGVuYW1lID0KKyAgICAgIChNZXNzYWdlKCkgPDwgIi9wcm9jLyIgPDwgZ2V0cGlkKCkgPDwgIi9z
dGF0IikuR2V0U3RyaW5nKCk7CisgIHJldHVybiBSZWFkUHJvY0ZpbGVGaWVsZDxpbnQ+KGZpbGVu
YW1lLCAxOSk7Cit9CisKKyNlbGlmIEdURVNUX09TX01BQwogCi0vLyBSZXR1cm5zIHRoZSBudW1i
ZXIgb2YgdGhyZWFkcyBydW5uaW5nIGluIHRoZSBwcm9jZXNzLCBvciAwIHRvIGluZGljYXRlIHRo
YXQKLS8vIHdlIGNhbm5vdCBkZXRlY3QgaXQuCiBzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CiAg
IGNvbnN0IHRhc2tfdCB0YXNrID0gbWFjaF90YXNrX3NlbGYoKTsKICAgbWFjaF9tc2dfdHlwZV9u
dW1iZXJfdCB0aHJlYWRfY291bnQ7CkBAIC05Niw2ICsxMjcsNTggQEAgc2l6ZV90IEdldFRocmVh
ZENvdW50KCkgewogICB9CiB9CiAKKyNlbGlmIEdURVNUX09TX1FOWAorCisvLyBSZXR1cm5zIHRo
ZSBudW1iZXIgb2YgdGhyZWFkcyBydW5uaW5nIGluIHRoZSBwcm9jZXNzLCBvciAwIHRvIGluZGlj
YXRlIHRoYXQKKy8vIHdlIGNhbm5vdCBkZXRlY3QgaXQuCitzaXplX3QgR2V0VGhyZWFkQ291bnQo
KSB7CisgIGNvbnN0IGludCBmZCA9IG9wZW4oIi9wcm9jL3NlbGYvYXMiLCBPX1JET05MWSk7Cisg
IGlmIChmZCA8IDApIHsKKyAgICByZXR1cm4gMDsKKyAgfQorICBwcm9jZnNfaW5mbyBwcm9jZXNz
X2luZm87CisgIGNvbnN0IGludCBzdGF0dXMgPQorICAgICAgZGV2Y3RsKGZkLCBEQ01EX1BST0Nf
SU5GTywgJnByb2Nlc3NfaW5mbywgc2l6ZW9mKHByb2Nlc3NfaW5mbyksIE5VTEwpOworICBjbG9z
ZShmZCk7CisgIGlmIChzdGF0dXMgPT0gRU9LKSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNp
emVfdD4ocHJvY2Vzc19pbmZvLm51bV90aHJlYWRzKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4g
MDsKKyAgfQorfQorCisjZWxpZiBHVEVTVF9PU19BSVgKKworc2l6ZV90IEdldFRocmVhZENvdW50
KCkgeworICBzdHJ1Y3QgcHJvY2VudHJ5NjQgZW50cnk7CisgIHBpZF90IHBpZCA9IGdldHBpZCgp
OworICBpbnQgc3RhdHVzID0gZ2V0cHJvY3M2NCgmZW50cnksIHNpemVvZihlbnRyeSksIE5VTEws
IDAsICZwaWQsIDEpOworICBpZiAoc3RhdHVzID09IDEpIHsKKyAgICByZXR1cm4gZW50cnkucGlf
dGhjb3VudDsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCisjZWxpZiBHVEVT
VF9PU19GVUNIU0lBCisKK3NpemVfdCBHZXRUaHJlYWRDb3VudCgpIHsKKyAgaW50IGR1bW15X2J1
ZmZlcjsKKyAgc2l6ZV90IGF2YWlsOworICB6eF9zdGF0dXNfdCBzdGF0dXMgPSB6eF9vYmplY3Rf
Z2V0X2luZm8oCisgICAgICB6eF9wcm9jZXNzX3NlbGYoKSwKKyAgICAgIFpYX0lORk9fUFJPQ0VT
U19USFJFQURTLAorICAgICAgJmR1bW15X2J1ZmZlciwKKyAgICAgIDAsCisgICAgICBudWxscHRy
LAorICAgICAgJmF2YWlsKTsKKyAgaWYgKHN0YXR1cyA9PSBaWF9PSykgeworICAgIHJldHVybiBh
dmFpbDsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCiAjZWxzZQogCiBzaXpl
X3QgR2V0VGhyZWFkQ291bnQoKSB7CkBAIC0xMDQsNyArMTg3LDQzMiBAQCBzaXplX3QgR2V0VGhy
ZWFkQ291bnQoKSB7CiAgIHJldHVybiAwOwogfQogCi0jZW5kaWYgIC8vIEdURVNUX09TX01BQwor
I2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRSAmJiBH
VEVTVF9PU19XSU5ET1dTCisKK3ZvaWQgU2xlZXBNaWxsaXNlY29uZHMoaW50IG4pIHsKKyAgOjpT
bGVlcChuKTsKK30KKworQXV0b0hhbmRsZTo6QXV0b0hhbmRsZSgpCisgICAgOiBoYW5kbGVfKElO
VkFMSURfSEFORExFX1ZBTFVFKSB7fQorCitBdXRvSGFuZGxlOjpBdXRvSGFuZGxlKEhhbmRsZSBo
YW5kbGUpCisgICAgOiBoYW5kbGVfKGhhbmRsZSkge30KKworQXV0b0hhbmRsZTo6fkF1dG9IYW5k
bGUoKSB7CisgIFJlc2V0KCk7Cit9CisKK0F1dG9IYW5kbGU6OkhhbmRsZSBBdXRvSGFuZGxlOjpH
ZXQoKSBjb25zdCB7CisgIHJldHVybiBoYW5kbGVfOworfQorCit2b2lkIEF1dG9IYW5kbGU6OlJl
c2V0KCkgeworICBSZXNldChJTlZBTElEX0hBTkRMRV9WQUxVRSk7Cit9CisKK3ZvaWQgQXV0b0hh
bmRsZTo6UmVzZXQoSEFORExFIGhhbmRsZSkgeworICAvLyBSZXNldHRpbmcgd2l0aCB0aGUgc2Ft
ZSBoYW5kbGUgd2UgYWxyZWFkeSBvd24gaXMgaW52YWxpZC4KKyAgaWYgKGhhbmRsZV8gIT0gaGFu
ZGxlKSB7CisgICAgaWYgKElzQ2xvc2VhYmxlKCkpIHsKKyAgICAgIDo6Q2xvc2VIYW5kbGUoaGFu
ZGxlXyk7CisgICAgfQorICAgIGhhbmRsZV8gPSBoYW5kbGU7CisgIH0gZWxzZSB7CisgICAgR1RF
U1RfQ0hFQ0tfKCFJc0Nsb3NlYWJsZSgpKQorICAgICAgICA8PCAiUmVzZXR0aW5nIGEgdmFsaWQg
aGFuZGxlIHRvIGl0c2VsZiBpcyBsaWtlbHkgYSBwcm9ncmFtbWVyIGVycm9yICIKKyAgICAgICAg
ICAgICJhbmQgdGh1cyBub3QgYWxsb3dlZC4iOworICB9Cit9CisKK2Jvb2wgQXV0b0hhbmRsZTo6
SXNDbG9zZWFibGUoKSBjb25zdCB7CisgIC8vIERpZmZlcmVudCBXaW5kb3dzIEFQSXMgbWF5IHVz
ZSBlaXRoZXIgb2YgdGhlc2UgdmFsdWVzIHRvIHJlcHJlc2VudCBhbgorICAvLyBpbnZhbGlkIGhh
bmRsZS4KKyAgcmV0dXJuIGhhbmRsZV8gIT0gTlVMTCAmJiBoYW5kbGVfICE9IElOVkFMSURfSEFO
RExFX1ZBTFVFOworfQorCitOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbigpCisgICAgOiBldmVu
dF8oOjpDcmVhdGVFdmVudChOVUxMLCAgIC8vIERlZmF1bHQgc2VjdXJpdHkgYXR0cmlidXRlcy4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsICAgLy8gRG8gbm90IHJlc2V0IGF1dG9t
YXRpY2FsbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwgIC8vIEluaXRpYWxs
eSB1bnNldC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKSB7ICAvLyBBbm9ueW1v
dXMgZXZlbnQuCisgIEdURVNUX0NIRUNLXyhldmVudF8uR2V0KCkgIT0gTlVMTCk7Cit9CisKK3Zv
aWQgTm90aWZpY2F0aW9uOjpOb3RpZnkoKSB7CisgIEdURVNUX0NIRUNLXyg6OlNldEV2ZW50KGV2
ZW50Xy5HZXQoKSkgIT0gRkFMU0UpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6V2FpdEZvck5v
dGlmaWNhdGlvbigpIHsKKyAgR1RFU1RfQ0hFQ0tfKAorICAgICAgOjpXYWl0Rm9yU2luZ2xlT2Jq
ZWN0KGV2ZW50Xy5HZXQoKSwgSU5GSU5JVEUpID09IFdBSVRfT0JKRUNUXzApOworfQorCitNdXRl
eDo6TXV0ZXgoKQorICAgIDogb3duZXJfdGhyZWFkX2lkXygwKSwKKyAgICAgIHR5cGVfKGtEeW5h
bWljKSwKKyAgICAgIGNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFzZV8oMCksCisgICAgICBjcml0
aWNhbF9zZWN0aW9uXyhuZXcgQ1JJVElDQUxfU0VDVElPTikgeworICA6OkluaXRpYWxpemVDcml0
aWNhbFNlY3Rpb24oY3JpdGljYWxfc2VjdGlvbl8pOworfQorCitNdXRleDo6fk11dGV4KCkgewor
ICAvLyBTdGF0aWMgbXV0ZXhlcyBhcmUgbGVha2VkIGludGVudGlvbmFsbHkuIEl0IGlzIG5vdCB0
aHJlYWQtc2FmZSB0byB0cnkKKyAgLy8gdG8gY2xlYW4gdGhlbSB1cC4KKyAgLy8gRklYTUU6IFN3
aXRjaCB0byBTbGltIFJlYWRlci9Xcml0ZXIgKFNSVykgTG9ja3MsIHdoaWNoIHJlcXVpcmVzCisg
IC8vIG5vdGhpbmcgdG8gY2xlYW4gaXQgdXAgYnV0IGlzIGF2YWlsYWJsZSBvbmx5IG9uIFZpc3Rh
IGFuZCBsYXRlci4KKyAgLy8gaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93
cy9kZXNrdG9wL1N5bmMvc2xpbS1yZWFkZXItd3JpdGVyLS1zcnctLWxvY2tzCisgIGlmICh0eXBl
XyA9PSBrRHluYW1pYykgeworICAgIDo6RGVsZXRlQ3JpdGljYWxTZWN0aW9uKGNyaXRpY2FsX3Nl
Y3Rpb25fKTsKKyAgICBkZWxldGUgY3JpdGljYWxfc2VjdGlvbl87CisgICAgY3JpdGljYWxfc2Vj
dGlvbl8gPSBOVUxMOworICB9Cit9CisKK3ZvaWQgTXV0ZXg6OkxvY2soKSB7CisgIFRocmVhZFNh
ZmVMYXp5SW5pdCgpOworICA6OkVudGVyQ3JpdGljYWxTZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb25f
KTsKKyAgb3duZXJfdGhyZWFkX2lkXyA9IDo6R2V0Q3VycmVudFRocmVhZElkKCk7Cit9CisKK3Zv
aWQgTXV0ZXg6OlVubG9jaygpIHsKKyAgVGhyZWFkU2FmZUxhenlJbml0KCk7CisgIC8vIFdlIGRv
bid0IHByb3RlY3Qgd3JpdGluZyB0byBvd25lcl90aHJlYWRfaWRfIGhlcmUsIGFzIGl0J3MgdGhl
CisgIC8vIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGF0IHRoZSBjdXJyZW50
IHRocmVhZCBob2xkcyB0aGUKKyAgLy8gbXV0ZXggd2hlbiB0aGlzIGlzIGNhbGxlZC4KKyAgb3du
ZXJfdGhyZWFkX2lkXyA9IDA7CisgIDo6TGVhdmVDcml0aWNhbFNlY3Rpb24oY3JpdGljYWxfc2Vj
dGlvbl8pOworfQorCisvLyBEb2VzIG5vdGhpbmcgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGhvbGRz
IHRoZSBtdXRleC4gT3RoZXJ3aXNlLCBjcmFzaGVzCisvLyB3aXRoIGhpZ2ggcHJvYmFiaWxpdHku
Cit2b2lkIE11dGV4OjpBc3NlcnRIZWxkKCkgeworICBUaHJlYWRTYWZlTGF6eUluaXQoKTsKKyAg
R1RFU1RfQ0hFQ0tfKG93bmVyX3RocmVhZF9pZF8gPT0gOjpHZXRDdXJyZW50VGhyZWFkSWQoKSkK
KyAgICAgIDw8ICJUaGUgY3VycmVudCB0aHJlYWQgaXMgbm90IGhvbGRpbmcgdGhlIG11dGV4IEAi
IDw8IHRoaXM7Cit9CisKK25hbWVzcGFjZSB7CisKKy8vIFVzZSB0aGUgUkFJSSBpZGlvbSB0byBm
bGFnIG1lbSBhbGxvY3MgdGhhdCBhcmUgaW50ZW50aW9uYWxseSBuZXZlcgorLy8gZGVhbGxvY2F0
ZWQuIFRoZSBtb3RpdmF0aW9uIGlzIHRvIHNpbGVuY2UgdGhlIGZhbHNlIHBvc2l0aXZlIG1lbSBs
ZWFrcworLy8gdGhhdCBhcmUgcmVwb3J0ZWQgYnkgdGhlIGRlYnVnIHZlcnNpb24gb2YgTVMncyBD
UlQgd2hpY2ggY2FuIG9ubHkgZGV0ZWN0CisvLyBpZiBhbiBhbGxvYyBpcyBtaXNzaW5nIGEgbWF0
Y2hpbmcgZGVhbGxvY2F0aW9uLgorLy8gRXhhbXBsZToKKy8vICAgIE1lbW9yeUlzTm90RGVhbGxv
Y2F0ZWQgbWVtb3J5X2lzX25vdF9kZWFsbG9jYXRlZDsKKy8vICAgIGNyaXRpY2FsX3NlY3Rpb25f
ID0gbmV3IENSSVRJQ0FMX1NFQ1RJT047CisvLworY2xhc3MgTWVtb3J5SXNOb3REZWFsbG9jYXRl
ZAoreworIHB1YmxpYzoKKyAgTWVtb3J5SXNOb3REZWFsbG9jYXRlZCgpIDogb2xkX2NydGRiZ19m
bGFnXygwKSB7CisjaWZkZWYgX01TQ19WRVIKKyAgICBvbGRfY3J0ZGJnX2ZsYWdfID0gX0NydFNl
dERiZ0ZsYWcoX0NSVERCR19SRVBPUlRfRkxBRyk7CisgICAgLy8gU2V0IGhlYXAgYWxsb2NhdGlv
biBibG9jayB0eXBlIHRvIF9JR05PUkVfQkxPQ0sgc28gdGhhdCBNUyBkZWJ1ZyBDUlQKKyAgICAv
LyBkb2Vzbid0IHJlcG9ydCBtZW0gbGVhayBpZiB0aGVyZSdzIG5vIG1hdGNoaW5nIGRlYWxsb2Nh
dGlvbi4KKyAgICBfQ3J0U2V0RGJnRmxhZyhvbGRfY3J0ZGJnX2ZsYWdfICYgfl9DUlREQkdfQUxM
T0NfTUVNX0RGKTsKKyNlbmRpZiAgLy8gIF9NU0NfVkVSCisgIH0KKworICB+TWVtb3J5SXNOb3RE
ZWFsbG9jYXRlZCgpIHsKKyNpZmRlZiBfTVNDX1ZFUgorICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdp
bmFsIF9DUlREQkdfQUxMT0NfTUVNX0RGIGZsYWcKKyAgICBfQ3J0U2V0RGJnRmxhZyhvbGRfY3J0
ZGJnX2ZsYWdfKTsKKyNlbmRpZiAgLy8gIF9NU0NfVkVSCisgIH0KKworIHByaXZhdGU6CisgIGlu
dCBvbGRfY3J0ZGJnX2ZsYWdfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8o
TWVtb3J5SXNOb3REZWFsbG9jYXRlZCk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UKKworLy8gSW5p
dGlhbGl6ZXMgb3duZXJfdGhyZWFkX2lkXyBhbmQgY3JpdGljYWxfc2VjdGlvbl8gaW4gc3RhdGlj
IG11dGV4ZXMuCit2b2lkIE11dGV4OjpUaHJlYWRTYWZlTGF6eUluaXQoKSB7CisgIC8vIER5bmFt
aWMgbXV0ZXhlcyBhcmUgaW5pdGlhbGl6ZWQgaW4gdGhlIGNvbnN0cnVjdG9yLgorICBpZiAodHlw
ZV8gPT0ga1N0YXRpYykgeworICAgIHN3aXRjaCAoCisgICAgICAgIDo6SW50ZXJsb2NrZWRDb21w
YXJlRXhjaGFuZ2UoJmNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFzZV8sIDFMLCAwTCkpIHsKKyAg
ICAgIGNhc2UgMDoKKyAgICAgICAgLy8gSWYgY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXyB3
YXMgMCBiZWZvcmUgdGhlIGV4Y2hhbmdlLCB3ZQorICAgICAgICAvLyBhcmUgdGhlIGZpcnN0IHRv
IHRlc3QgaXQgYW5kIG5lZWQgdG8gcGVyZm9ybSB0aGUgaW5pdGlhbGl6YXRpb24uCisgICAgICAg
IG93bmVyX3RocmVhZF9pZF8gPSAwOworICAgICAgICB7CisgICAgICAgICAgLy8gVXNlIFJBSUkg
dG8gZmxhZyB0aGF0IGZvbGxvd2luZyBtZW0gYWxsb2MgaXMgbmV2ZXIgZGVhbGxvY2F0ZWQuCisg
ICAgICAgICAgTWVtb3J5SXNOb3REZWFsbG9jYXRlZCBtZW1vcnlfaXNfbm90X2RlYWxsb2NhdGVk
OworICAgICAgICAgIGNyaXRpY2FsX3NlY3Rpb25fID0gbmV3IENSSVRJQ0FMX1NFQ1RJT047Cisg
ICAgICAgIH0KKyAgICAgICAgOjpJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKGNyaXRpY2FsX3Nl
Y3Rpb25fKTsKKyAgICAgICAgLy8gVXBkYXRlcyB0aGUgY3JpdGljYWxfc2VjdGlvbl9pbml0X3Bo
YXNlXyB0byAyIHRvIHNpZ25hbAorICAgICAgICAvLyBpbml0aWFsaXphdGlvbiBjb21wbGV0ZS4K
KyAgICAgICAgR1RFU1RfQ0hFQ0tfKDo6SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICZjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhhc2VfLCAyTCwg
MUwpID09CisgICAgICAgICAgICAgICAgICAgICAgMUwpOworICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgMToKKyAgICAgICAgLy8gU29tZWJvZHkgZWxzZSBpcyBhbHJlYWR5IGluaXRpYWxpemlu
ZyB0aGUgbXV0ZXg7IHNwaW4gdW50aWwgdGhleQorICAgICAgICAvLyBhcmUgZG9uZS4KKyAgICAg
ICAgd2hpbGUgKDo6SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoJmNyaXRpY2FsX3NlY3Rpb25f
aW5pdF9waGFzZV8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDJMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyTCkgIT0g
MkwpIHsKKyAgICAgICAgICAvLyBQb3NzaWJseSB5aWVsZHMgdGhlIHJlc3Qgb2YgdGhlIHRocmVh
ZCdzIHRpbWUgc2xpY2UgdG8gb3RoZXIKKyAgICAgICAgICAvLyB0aHJlYWRzLgorICAgICAgICAg
IDo6U2xlZXAoMCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgMjoK
KyAgICAgICAgYnJlYWs7ICAvLyBUaGUgbXV0ZXggaXMgYWxyZWFkeSBpbml0aWFsaXplZCBhbmQg
cmVhZHkgZm9yIHVzZS4KKworICAgICAgZGVmYXVsdDoKKyAgICAgICAgR1RFU1RfQ0hFQ0tfKGZh
bHNlKQorICAgICAgICAgICAgPDwgIlVuZXhwZWN0ZWQgdmFsdWUgb2YgY3JpdGljYWxfc2VjdGlv
bl9pbml0X3BoYXNlXyAiCisgICAgICAgICAgICA8PCAid2hpbGUgaW5pdGlhbGl6aW5nIGEgc3Rh
dGljIG11dGV4LiI7CisgICAgfQorICB9Cit9CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIFRocmVh
ZFdpdGhQYXJhbVN1cHBvcnQgOiBwdWJsaWMgVGhyZWFkV2l0aFBhcmFtQmFzZSB7CisgcHVibGlj
OgorICBzdGF0aWMgSEFORExFIENyZWF0ZVRocmVhZChSdW5uYWJsZSogcnVubmFibGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydCkg
eworICAgIFRocmVhZE1haW5QYXJhbSogcGFyYW0gPSBuZXcgVGhyZWFkTWFpblBhcmFtKHJ1bm5h
YmxlLCB0aHJlYWRfY2FuX3N0YXJ0KTsKKyAgICBEV09SRCB0aHJlYWRfaWQ7CisgICAgLy8gRklY
TUU6IENvbnNpZGVyIHRvIHVzZSBfYmVnaW50aHJlYWRleCBpbnN0ZWFkLgorICAgIEhBTkRMRSB0
aHJlYWRfaGFuZGxlID0gOjpDcmVhdGVUaHJlYWQoCisgICAgICAgIE5VTEwsICAgIC8vIERlZmF1
bHQgc2VjdXJpdHkuCisgICAgICAgIDAsICAgICAgIC8vIERlZmF1bHQgc3RhY2sgc2l6ZS4KKyAg
ICAgICAgJlRocmVhZFdpdGhQYXJhbVN1cHBvcnQ6OlRocmVhZE1haW4sCisgICAgICAgIHBhcmFt
LCAgIC8vIFBhcmFtZXRlciB0byBUaHJlYWRNYWluU3RhdGljCisgICAgICAgIDB4MCwgICAgIC8v
IERlZmF1bHQgY3JlYXRpb24gZmxhZ3MuCisgICAgICAgICZ0aHJlYWRfaWQpOyAgLy8gTmVlZCBh
IHZhbGlkIHBvaW50ZXIgZm9yIHRoZSBjYWxsIHRvIHdvcmsgdW5kZXIgV2luOTguCisgICAgR1RF
U1RfQ0hFQ0tfKHRocmVhZF9oYW5kbGUgIT0gTlVMTCkgPDwgIkNyZWF0ZVRocmVhZCBmYWlsZWQg
d2l0aCBlcnJvciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
OjpHZXRMYXN0RXJyb3IoKSA8PCAiLiI7CisgICAgaWYgKHRocmVhZF9oYW5kbGUgPT0gTlVMTCkg
eworICAgICAgZGVsZXRlIHBhcmFtOworICAgIH0KKyAgICByZXR1cm4gdGhyZWFkX2hhbmRsZTsK
KyAgfQorCisgcHJpdmF0ZToKKyAgc3RydWN0IFRocmVhZE1haW5QYXJhbSB7CisgICAgVGhyZWFk
TWFpblBhcmFtKFJ1bm5hYmxlKiBydW5uYWJsZSwgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0
YXJ0KQorICAgICAgICA6IHJ1bm5hYmxlXyhydW5uYWJsZSksCisgICAgICAgICAgdGhyZWFkX2Nh
bl9zdGFydF8odGhyZWFkX2Nhbl9zdGFydCkgeworICAgIH0KKyAgICBzY29wZWRfcHRyPFJ1bm5h
YmxlPiBydW5uYWJsZV87CisgICAgLy8gRG9lcyBub3Qgb3duLgorICAgIE5vdGlmaWNhdGlvbiog
dGhyZWFkX2Nhbl9zdGFydF87CisgIH07CisKKyAgc3RhdGljIERXT1JEIFdJTkFQSSBUaHJlYWRN
YWluKHZvaWQqIHB0cikgeworICAgIC8vIFRyYW5zZmVycyBvd25lcnNoaXAuCisgICAgc2NvcGVk
X3B0cjxUaHJlYWRNYWluUGFyYW0+IHBhcmFtKHN0YXRpY19jYXN0PFRocmVhZE1haW5QYXJhbSo+
KHB0cikpOworICAgIGlmIChwYXJhbS0+dGhyZWFkX2Nhbl9zdGFydF8gIT0gTlVMTCkKKyAgICAg
IHBhcmFtLT50aHJlYWRfY2FuX3N0YXJ0Xy0+V2FpdEZvck5vdGlmaWNhdGlvbigpOworICAgIHBh
cmFtLT5ydW5uYWJsZV8tPlJ1bigpOworICAgIHJldHVybiAwOworICB9CisKKyAgLy8gUHJvaGli
aXQgaW5zdGFudGlhdGlvbi4KKyAgVGhyZWFkV2l0aFBhcmFtU3VwcG9ydCgpOworCisgIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkV2l0aFBhcmFtU3VwcG9ydCk7Cit9Owor
Cit9ICAvLyBuYW1lc3BhY2UKKworVGhyZWFkV2l0aFBhcmFtQmFzZTo6VGhyZWFkV2l0aFBhcmFt
QmFzZShSdW5uYWJsZSAqcnVubmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydCkKKyAgICAgIDogdGhyZWFk
XyhUaHJlYWRXaXRoUGFyYW1TdXBwb3J0OjpDcmVhdGVUaHJlYWQocnVubmFibGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZF9jYW5f
c3RhcnQpKSB7Cit9CisKK1RocmVhZFdpdGhQYXJhbUJhc2U6On5UaHJlYWRXaXRoUGFyYW1CYXNl
KCkgeworICBKb2luKCk7Cit9CisKK3ZvaWQgVGhyZWFkV2l0aFBhcmFtQmFzZTo6Sm9pbigpIHsK
KyAgR1RFU1RfQ0hFQ0tfKDo6V2FpdEZvclNpbmdsZU9iamVjdCh0aHJlYWRfLkdldCgpLCBJTkZJ
TklURSkgPT0gV0FJVF9PQkpFQ1RfMCkKKyAgICAgIDw8ICJGYWlsZWQgdG8gam9pbiB0aGUgdGhy
ZWFkIHdpdGggZXJyb3IgIiA8PCA6OkdldExhc3RFcnJvcigpIDw8ICIuIjsKK30KKworLy8gTWFw
cyBhIHRocmVhZCB0byBhIHNldCBvZiBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzIHRoYXQgaGF2ZSB2
YWx1ZXMKKy8vIGluc3RhbnRpYXRlZCBvbiB0aGF0IHRocmVhZCBhbmQgbm90aWZpZXMgdGhlbSB3
aGVuIHRoZSB0aHJlYWQgZXhpdHMuICBBCisvLyBUaHJlYWRMb2NhbCBpbnN0YW5jZSBpcyBleHBl
Y3RlZCB0byBwZXJzaXN0IHVudGlsIGFsbCB0aHJlYWRzIGl0IGhhcworLy8gdmFsdWVzIG9uIGhh
dmUgdGVybWluYXRlZC4KK2NsYXNzIFRocmVhZExvY2FsUmVnaXN0cnlJbXBsIHsKKyBwdWJsaWM6
CisgIC8vIFJlZ2lzdGVycyB0aHJlYWRfbG9jYWxfaW5zdGFuY2UgYXMgaGF2aW5nIHZhbHVlIG9u
IHRoZSBjdXJyZW50IHRocmVhZC4KKyAgLy8gUmV0dXJucyBhIHZhbHVlIHRoYXQgY2FuIGJlIHVz
ZWQgdG8gaWRlbnRpZnkgdGhlIHRocmVhZCBmcm9tIG90aGVyIHRocmVhZHMuCisgIHN0YXRpYyBU
aHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogR2V0VmFsdWVPbkN1cnJlbnRUaHJlYWQoCisgICAg
ICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9pbnN0YW5jZSkgeworICAgIERX
T1JEIGN1cnJlbnRfdGhyZWFkID0gOjpHZXRDdXJyZW50VGhyZWFkSWQoKTsKKyAgICBNdXRleExv
Y2sgbG9jaygmbXV0ZXhfKTsKKyAgICBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzKiBjb25zdCB0aHJl
YWRfdG9fdGhyZWFkX2xvY2FscyA9CisgICAgICAgIEdldFRocmVhZExvY2Fsc01hcExvY2tlZCgp
OworICAgIFRocmVhZElkVG9UaHJlYWRMb2NhbHM6Oml0ZXJhdG9yIHRocmVhZF9sb2NhbF9wb3Mg
PQorICAgICAgICB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+ZmluZChjdXJyZW50X3RocmVhZCk7
CisgICAgaWYgKHRocmVhZF9sb2NhbF9wb3MgPT0gdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmVu
ZCgpKSB7CisgICAgICB0aHJlYWRfbG9jYWxfcG9zID0gdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMt
Pmluc2VydCgKKyAgICAgICAgICBzdGQ6Om1ha2VfcGFpcihjdXJyZW50X3RocmVhZCwgVGhyZWFk
TG9jYWxWYWx1ZXMoKSkpLmZpcnN0OworICAgICAgU3RhcnRXYXRjaGVyVGhyZWFkRm9yKGN1cnJl
bnRfdGhyZWFkKTsKKyAgICB9CisgICAgVGhyZWFkTG9jYWxWYWx1ZXMmIHRocmVhZF9sb2NhbF92
YWx1ZXMgPSB0aHJlYWRfbG9jYWxfcG9zLT5zZWNvbmQ7CisgICAgVGhyZWFkTG9jYWxWYWx1ZXM6
Oml0ZXJhdG9yIHZhbHVlX3BvcyA9CisgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMuZmluZCh0
aHJlYWRfbG9jYWxfaW5zdGFuY2UpOworICAgIGlmICh2YWx1ZV9wb3MgPT0gdGhyZWFkX2xvY2Fs
X3ZhbHVlcy5lbmQoKSkgeworICAgICAgdmFsdWVfcG9zID0KKyAgICAgICAgICB0aHJlYWRfbG9j
YWxfdmFsdWVzCisgICAgICAgICAgICAgIC5pbnNlcnQoc3RkOjptYWtlX3BhaXIoCisgICAgICAg
ICAgICAgICAgICB0aHJlYWRfbG9jYWxfaW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICBsaW5r
ZWRfcHRyPFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlPigKKyAgICAgICAgICAgICAgICAgICAg
ICB0aHJlYWRfbG9jYWxfaW5zdGFuY2UtPk5ld1ZhbHVlRm9yQ3VycmVudFRocmVhZCgpKSkpCisg
ICAgICAgICAgICAgIC5maXJzdDsKKyAgICB9CisgICAgcmV0dXJuIHZhbHVlX3Bvcy0+c2Vjb25k
LmdldCgpOworICB9CisKKyAgc3RhdGljIHZvaWQgT25UaHJlYWRMb2NhbERlc3Ryb3llZCgKKyAg
ICAgIGNvbnN0IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2FsX2luc3RhbmNlKSB7CisgICAg
c3RkOjp2ZWN0b3I8bGlua2VkX3B0cjxUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZT4gPiB2YWx1
ZV9ob2xkZXJzOworICAgIC8vIENsZWFuIHVwIHRoZSBUaHJlYWRMb2NhbFZhbHVlcyBkYXRhIHN0
cnVjdHVyZSB3aGlsZSBob2xkaW5nIHRoZSBsb2NrLCBidXQKKyAgICAvLyBkZWZlciB0aGUgZGVz
dHJ1Y3Rpb24gb2YgdGhlIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlcy4KKyAgICB7CisgICAg
ICBNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKKyAgICAgIFRocmVhZElkVG9UaHJlYWRMb2NhbHMq
IGNvbnN0IHRocmVhZF90b190aHJlYWRfbG9jYWxzID0KKyAgICAgICAgICBHZXRUaHJlYWRMb2Nh
bHNNYXBMb2NrZWQoKTsKKyAgICAgIGZvciAoVGhyZWFkSWRUb1RocmVhZExvY2Fsczo6aXRlcmF0
b3IgaXQgPQorICAgICAgICAgIHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5iZWdpbigpOworICAg
ICAgICAgIGl0ICE9IHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5lbmQoKTsKKyAgICAgICAgICAr
K2l0KSB7CisgICAgICAgIFRocmVhZExvY2FsVmFsdWVzJiB0aHJlYWRfbG9jYWxfdmFsdWVzID0g
aXQtPnNlY29uZDsKKyAgICAgICAgVGhyZWFkTG9jYWxWYWx1ZXM6Oml0ZXJhdG9yIHZhbHVlX3Bv
cyA9CisgICAgICAgICAgICB0aHJlYWRfbG9jYWxfdmFsdWVzLmZpbmQodGhyZWFkX2xvY2FsX2lu
c3RhbmNlKTsKKyAgICAgICAgaWYgKHZhbHVlX3BvcyAhPSB0aHJlYWRfbG9jYWxfdmFsdWVzLmVu
ZCgpKSB7CisgICAgICAgICAgdmFsdWVfaG9sZGVycy5wdXNoX2JhY2sodmFsdWVfcG9zLT5zZWNv
bmQpOworICAgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMuZXJhc2UodmFsdWVfcG9zKTsKKyAg
ICAgICAgICAvLyBUaGlzICdpZicgY2FuIG9ubHkgYmUgc3VjY2Vzc2Z1bCBhdCBtb3N0IG9uY2Us
IHNvIHRoZW9yZXRpY2FsbHkgd2UKKyAgICAgICAgICAvLyBjb3VsZCBicmVhayBvdXQgb2YgdGhl
IGxvb3AgaGVyZSwgYnV0IHdlIGRvbid0IGJvdGhlciBkb2luZyBzby4KKyAgICAgICAgfQorICAg
ICAgfQorICAgIH0KKyAgICAvLyBPdXRzaWRlIHRoZSBsb2NrLCBsZXQgdGhlIGRlc3RydWN0b3Ig
Zm9yICd2YWx1ZV9ob2xkZXJzJyBkZWFsbG9jYXRlIHRoZQorICAgIC8vIFRocmVhZExvY2FsVmFs
dWVIb2xkZXJCYXNlcy4KKyAgfQorCisgIHN0YXRpYyB2b2lkIE9uVGhyZWFkRXhpdChEV09SRCB0
aHJlYWRfaWQpIHsKKyAgICBHVEVTVF9DSEVDS18odGhyZWFkX2lkICE9IDApIDw8IDo6R2V0TGFz
dEVycm9yKCk7CisgICAgc3RkOjp2ZWN0b3I8bGlua2VkX3B0cjxUaHJlYWRMb2NhbFZhbHVlSG9s
ZGVyQmFzZT4gPiB2YWx1ZV9ob2xkZXJzOworICAgIC8vIENsZWFuIHVwIHRoZSBUaHJlYWRJZFRv
VGhyZWFkTG9jYWxzIGRhdGEgc3RydWN0dXJlIHdoaWxlIGhvbGRpbmcgdGhlCisgICAgLy8gbG9j
aywgYnV0IGRlZmVyIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgVGhyZWFkTG9jYWxWYWx1ZUhvbGRl
ckJhc2VzLgorICAgIHsKKyAgICAgIE11dGV4TG9jayBsb2NrKCZtdXRleF8pOworICAgICAgVGhy
ZWFkSWRUb1RocmVhZExvY2FscyogY29uc3QgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMgPQorICAg
ICAgICAgIEdldFRocmVhZExvY2Fsc01hcExvY2tlZCgpOworICAgICAgVGhyZWFkSWRUb1RocmVh
ZExvY2Fsczo6aXRlcmF0b3IgdGhyZWFkX2xvY2FsX3BvcyA9CisgICAgICAgICAgdGhyZWFkX3Rv
X3RocmVhZF9sb2NhbHMtPmZpbmQodGhyZWFkX2lkKTsKKyAgICAgIGlmICh0aHJlYWRfbG9jYWxf
cG9zICE9IHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5lbmQoKSkgeworICAgICAgICBUaHJlYWRM
b2NhbFZhbHVlcyYgdGhyZWFkX2xvY2FsX3ZhbHVlcyA9IHRocmVhZF9sb2NhbF9wb3MtPnNlY29u
ZDsKKyAgICAgICAgZm9yIChUaHJlYWRMb2NhbFZhbHVlczo6aXRlcmF0b3IgdmFsdWVfcG9zID0K
KyAgICAgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMuYmVnaW4oKTsKKyAgICAgICAgICAgIHZh
bHVlX3BvcyAhPSB0aHJlYWRfbG9jYWxfdmFsdWVzLmVuZCgpOworICAgICAgICAgICAgKyt2YWx1
ZV9wb3MpIHsKKyAgICAgICAgICB2YWx1ZV9ob2xkZXJzLnB1c2hfYmFjayh2YWx1ZV9wb3MtPnNl
Y29uZCk7CisgICAgICAgIH0KKyAgICAgICAgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmVyYXNl
KHRocmVhZF9sb2NhbF9wb3MpOworICAgICAgfQorICAgIH0KKyAgICAvLyBPdXRzaWRlIHRoZSBs
b2NrLCBsZXQgdGhlIGRlc3RydWN0b3IgZm9yICd2YWx1ZV9ob2xkZXJzJyBkZWFsbG9jYXRlIHRo
ZQorICAgIC8vIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlcy4KKyAgfQorCisgcHJpdmF0ZToK
KyAgLy8gSW4gYSBwYXJ0aWN1bGFyIHRocmVhZCwgbWFwcyBhIFRocmVhZExvY2FsIG9iamVjdCB0
byBpdHMgdmFsdWUuCisgIHR5cGVkZWYgc3RkOjptYXA8Y29uc3QgVGhyZWFkTG9jYWxCYXNlKiwK
KyAgICAgICAgICAgICAgICAgICBsaW5rZWRfcHRyPFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNl
PiA+IFRocmVhZExvY2FsVmFsdWVzOworICAvLyBTdG9yZXMgYWxsIFRocmVhZElkVG9UaHJlYWRM
b2NhbHMgaGF2aW5nIHZhbHVlcyBpbiBhIHRocmVhZCwgaW5kZXhlZCBieQorICAvLyB0aHJlYWQn
cyBJRC4KKyAgdHlwZWRlZiBzdGQ6Om1hcDxEV09SRCwgVGhyZWFkTG9jYWxWYWx1ZXM+IFRocmVh
ZElkVG9UaHJlYWRMb2NhbHM7CisKKyAgLy8gSG9sZHMgdGhlIHRocmVhZCBpZCBhbmQgdGhyZWFk
IGhhbmRsZSB0aGF0IHdlIHBhc3MgZnJvbQorICAvLyBTdGFydFdhdGNoZXJUaHJlYWRGb3IgdG8g
V2F0Y2hlclRocmVhZEZ1bmMuCisgIHR5cGVkZWYgc3RkOjpwYWlyPERXT1JELCBIQU5ETEU+IFRo
cmVhZElkQW5kSGFuZGxlOworCisgIHN0YXRpYyB2b2lkIFN0YXJ0V2F0Y2hlclRocmVhZEZvcihE
V09SRCB0aHJlYWRfaWQpIHsKKyAgICAvLyBUaGUgcmV0dXJuZWQgaGFuZGxlIHdpbGwgYmUga2Vw
dCBpbiB0aHJlYWRfbWFwIGFuZCBjbG9zZWQgYnkKKyAgICAvLyB3YXRjaGVyX3RocmVhZCBpbiBX
YXRjaGVyVGhyZWFkRnVuYy4KKyAgICBIQU5ETEUgdGhyZWFkID0gOjpPcGVuVGhyZWFkKFNZTkNI
Uk9OSVpFIHwgVEhSRUFEX1FVRVJZX0lORk9STUFUSU9OLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJl
YWRfaWQpOworICAgIEdURVNUX0NIRUNLXyh0aHJlYWQgIT0gTlVMTCk7CisgICAgLy8gV2UgbmVl
ZCB0byBwYXNzIGEgdmFsaWQgdGhyZWFkIElEIHBvaW50ZXIgaW50byBDcmVhdGVUaHJlYWQgZm9y
IGl0CisgICAgLy8gdG8gd29yayBjb3JyZWN0bHkgdW5kZXIgV2luOTguCisgICAgRFdPUkQgd2F0
Y2hlcl90aHJlYWRfaWQ7CisgICAgSEFORExFIHdhdGNoZXJfdGhyZWFkID0gOjpDcmVhdGVUaHJl
YWQoCisgICAgICAgIE5VTEwsICAgLy8gRGVmYXVsdCBzZWN1cml0eS4KKyAgICAgICAgMCwgICAg
ICAvLyBEZWZhdWx0IHN0YWNrIHNpemUKKyAgICAgICAgJlRocmVhZExvY2FsUmVnaXN0cnlJbXBs
OjpXYXRjaGVyVGhyZWFkRnVuYywKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxMUFZPSUQ+KG5l
dyBUaHJlYWRJZEFuZEhhbmRsZSh0aHJlYWRfaWQsIHRocmVhZCkpLAorICAgICAgICBDUkVBVEVf
U1VTUEVOREVELAorICAgICAgICAmd2F0Y2hlcl90aHJlYWRfaWQpOworICAgIEdURVNUX0NIRUNL
Xyh3YXRjaGVyX3RocmVhZCAhPSBOVUxMKTsKKyAgICAvLyBHaXZlIHRoZSB3YXRjaGVyIHRocmVh
ZCB0aGUgc2FtZSBwcmlvcml0eSBhcyBvdXJzIHRvIGF2b2lkIGJlaW5nCisgICAgLy8gYmxvY2tl
ZCBieSBpdC4KKyAgICA6OlNldFRocmVhZFByaW9yaXR5KHdhdGNoZXJfdGhyZWFkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgOjpHZXRUaHJlYWRQcmlvcml0eSg6OkdldEN1cnJlbnRUaHJlYWQo
KSkpOworICAgIDo6UmVzdW1lVGhyZWFkKHdhdGNoZXJfdGhyZWFkKTsKKyAgICA6OkNsb3NlSGFu
ZGxlKHdhdGNoZXJfdGhyZWFkKTsKKyAgfQorCisgIC8vIE1vbml0b3JzIGV4aXQgZnJvbSBhIGdp
dmVuIHRocmVhZCBhbmQgbm90aWZpZXMgdGhvc2UKKyAgLy8gVGhyZWFkSWRUb1RocmVhZExvY2Fs
cyBhYm91dCB0aHJlYWQgdGVybWluYXRpb24uCisgIHN0YXRpYyBEV09SRCBXSU5BUEkgV2F0Y2hl
clRocmVhZEZ1bmMoTFBWT0lEIHBhcmFtKSB7CisgICAgY29uc3QgVGhyZWFkSWRBbmRIYW5kbGUq
IHRhaCA9CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVGhyZWFkSWRBbmRIYW5kbGUq
PihwYXJhbSk7CisgICAgR1RFU1RfQ0hFQ0tfKAorICAgICAgICA6OldhaXRGb3JTaW5nbGVPYmpl
Y3QodGFoLT5zZWNvbmQsIElORklOSVRFKSA9PSBXQUlUX09CSkVDVF8wKTsKKyAgICBPblRocmVh
ZEV4aXQodGFoLT5maXJzdCk7CisgICAgOjpDbG9zZUhhbmRsZSh0YWgtPnNlY29uZCk7CisgICAg
ZGVsZXRlIHRhaDsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIC8vIFJldHVybnMgbWFwIG9mIHRo
cmVhZCBsb2NhbCBpbnN0YW5jZXMuCisgIHN0YXRpYyBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzKiBH
ZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKSB7CisgICAgbXV0ZXhfLkFzc2VydEhlbGQoKTsKKyAg
ICBNZW1vcnlJc05vdERlYWxsb2NhdGVkIG1lbW9yeV9pc19ub3RfZGVhbGxvY2F0ZWQ7CisgICAg
c3RhdGljIFRocmVhZElkVG9UaHJlYWRMb2NhbHMqIG1hcCA9IG5ldyBUaHJlYWRJZFRvVGhyZWFk
TG9jYWxzKCk7CisgICAgcmV0dXJuIG1hcDsKKyAgfQorCisgIC8vIFByb3RlY3RzIGFjY2VzcyB0
byBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKSBhbmQgaXRzIHJldHVybiB2YWx1ZS4KKyAgc3Rh
dGljIE11dGV4IG11dGV4XzsKKyAgLy8gUHJvdGVjdHMgYWNjZXNzIHRvIEdldFRocmVhZE1hcExv
Y2tlZCgpIGFuZCBpdHMgcmV0dXJuIHZhbHVlLgorICBzdGF0aWMgTXV0ZXggdGhyZWFkX21hcF9t
dXRleF87Cit9OworCitNdXRleCBUaHJlYWRMb2NhbFJlZ2lzdHJ5SW1wbDo6bXV0ZXhfKE11dGV4
OjprU3RhdGljTXV0ZXgpOworTXV0ZXggVGhyZWFkTG9jYWxSZWdpc3RyeUltcGw6OnRocmVhZF9t
YXBfbXV0ZXhfKE11dGV4OjprU3RhdGljTXV0ZXgpOworCitUaHJlYWRMb2NhbFZhbHVlSG9sZGVy
QmFzZSogVGhyZWFkTG9jYWxSZWdpc3RyeTo6R2V0VmFsdWVPbkN1cnJlbnRUaHJlYWQoCisgICAg
ICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9pbnN0YW5jZSkgeworICByZXR1
cm4gVGhyZWFkTG9jYWxSZWdpc3RyeUltcGw6OkdldFZhbHVlT25DdXJyZW50VGhyZWFkKAorICAg
ICAgdGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKK30KKwordm9pZCBUaHJlYWRMb2NhbFJlZ2lzdHJ5
OjpPblRocmVhZExvY2FsRGVzdHJveWVkKAorICAgICAgY29uc3QgVGhyZWFkTG9jYWxCYXNlKiB0
aHJlYWRfbG9jYWxfaW5zdGFuY2UpIHsKKyAgVGhyZWFkTG9jYWxSZWdpc3RyeUltcGw6Ok9uVGhy
ZWFkTG9jYWxEZXN0cm95ZWQodGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKK30KKworI2VuZGlmICAv
LyBHVEVTVF9JU19USFJFQURTQUZFICYmIEdURVNUX09TX1dJTkRPV1MKIAogI2lmIEdURVNUX1VT
RVNfUE9TSVhfUkUKIApAQCAtMTgwLDIwICs2ODgsMjAgQEAgYm9vbCBJc0luU2V0KGNoYXIgY2gs
IGNvbnN0IGNoYXIqIHN0cikgewogLy8gUmV0dXJucyB0cnVlIGlmZiBjaCBiZWxvbmdzIHRvIHRo
ZSBnaXZlbiBjbGFzc2lmaWNhdGlvbi4gIFVubGlrZQogLy8gc2ltaWxhciBmdW5jdGlvbnMgaW4g
PGN0eXBlLmg+LCB0aGVzZSBhcmVuJ3QgYWZmZWN0ZWQgYnkgdGhlCiAvLyBjdXJyZW50IGxvY2Fs
ZS4KLWJvb2wgSXNEaWdpdChjaGFyIGNoKSB7IHJldHVybiAnMCcgPD0gY2ggJiYgY2ggPD0gJzkn
OyB9Ci1ib29sIElzUHVuY3QoY2hhciBjaCkgeworYm9vbCBJc0FzY2lpRGlnaXQoY2hhciBjaCkg
eyByZXR1cm4gJzAnIDw9IGNoICYmIGNoIDw9ICc5JzsgfQorYm9vbCBJc0FzY2lpUHVuY3QoY2hh
ciBjaCkgewogICByZXR1cm4gSXNJblNldChjaCwgIl4tIVwiIyQlJicoKSorLC4vOjs8PT4/QFtc
XF1fYHt8fX4iKTsKIH0KIGJvb2wgSXNSZXBlYXQoY2hhciBjaCkgeyByZXR1cm4gSXNJblNldChj
aCwgIj8qKyIpOyB9Ci1ib29sIElzV2hpdGVTcGFjZShjaGFyIGNoKSB7IHJldHVybiBJc0luU2V0
KGNoLCAiIFxmXG5cclx0XHYiKTsgfQotYm9vbCBJc1dvcmRDaGFyKGNoYXIgY2gpIHsKK2Jvb2wg
SXNBc2NpaVdoaXRlU3BhY2UoY2hhciBjaCkgeyByZXR1cm4gSXNJblNldChjaCwgIiBcZlxuXHJc
dFx2Iik7IH0KK2Jvb2wgSXNBc2NpaVdvcmRDaGFyKGNoYXIgY2gpIHsKICAgcmV0dXJuICgnYScg
PD0gY2ggJiYgY2ggPD0gJ3onKSB8fCAoJ0EnIDw9IGNoICYmIGNoIDw9ICdaJykgfHwKICAgICAg
ICgnMCcgPD0gY2ggJiYgY2ggPD0gJzknKSB8fCBjaCA9PSAnXyc7CiB9CiAKIC8vIFJldHVybnMg
dHJ1ZSBpZmYgIlxcYyIgaXMgYSBzdXBwb3J0ZWQgZXNjYXBlIHNlcXVlbmNlLgogYm9vbCBJc1Zh
bGlkRXNjYXBlKGNoYXIgYykgewotICByZXR1cm4gKElzUHVuY3QoYykgfHwgSXNJblNldChjLCAi
ZERmbnJzU3R2d1ciKSk7CisgIHJldHVybiAoSXNBc2NpaVB1bmN0KGMpIHx8IElzSW5TZXQoYywg
ImREZm5yc1N0dndXIikpOwogfQogCiAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBnaXZlbiBhdG9t
IChzcGVjaWZpZWQgYnkgZXNjYXBlZCBhbmQgcGF0dGVybikKQEAgLTIwMSwyNiArNzA5LDI2IEBA
IGJvb2wgSXNWYWxpZEVzY2FwZShjaGFyIGMpIHsKIGJvb2wgQXRvbU1hdGNoZXNDaGFyKGJvb2wg
ZXNjYXBlZCwgY2hhciBwYXR0ZXJuX2NoYXIsIGNoYXIgY2gpIHsKICAgaWYgKGVzY2FwZWQpIHsg
IC8vICJcXHAiIHdoZXJlIHAgaXMgcGF0dGVybl9jaGFyLgogICAgIHN3aXRjaCAocGF0dGVybl9j
aGFyKSB7Ci0gICAgICBjYXNlICdkJzogcmV0dXJuIElzRGlnaXQoY2gpOwotICAgICAgY2FzZSAn
RCc6IHJldHVybiAhSXNEaWdpdChjaCk7CisgICAgICBjYXNlICdkJzogcmV0dXJuIElzQXNjaWlE
aWdpdChjaCk7CisgICAgICBjYXNlICdEJzogcmV0dXJuICFJc0FzY2lpRGlnaXQoY2gpOwogICAg
ICAgY2FzZSAnZic6IHJldHVybiBjaCA9PSAnXGYnOwogICAgICAgY2FzZSAnbic6IHJldHVybiBj
aCA9PSAnXG4nOwogICAgICAgY2FzZSAncic6IHJldHVybiBjaCA9PSAnXHInOwotICAgICAgY2Fz
ZSAncyc6IHJldHVybiBJc1doaXRlU3BhY2UoY2gpOwotICAgICAgY2FzZSAnUyc6IHJldHVybiAh
SXNXaGl0ZVNwYWNlKGNoKTsKKyAgICAgIGNhc2UgJ3MnOiByZXR1cm4gSXNBc2NpaVdoaXRlU3Bh
Y2UoY2gpOworICAgICAgY2FzZSAnUyc6IHJldHVybiAhSXNBc2NpaVdoaXRlU3BhY2UoY2gpOwog
ICAgICAgY2FzZSAndCc6IHJldHVybiBjaCA9PSAnXHQnOwogICAgICAgY2FzZSAndic6IHJldHVy
biBjaCA9PSAnXHYnOwotICAgICAgY2FzZSAndyc6IHJldHVybiBJc1dvcmRDaGFyKGNoKTsKLSAg
ICAgIGNhc2UgJ1cnOiByZXR1cm4gIUlzV29yZENoYXIoY2gpOworICAgICAgY2FzZSAndyc6IHJl
dHVybiBJc0FzY2lpV29yZENoYXIoY2gpOworICAgICAgY2FzZSAnVyc6IHJldHVybiAhSXNBc2Np
aVdvcmRDaGFyKGNoKTsKICAgICB9Ci0gICAgcmV0dXJuIElzUHVuY3QocGF0dGVybl9jaGFyKSAm
JiBwYXR0ZXJuX2NoYXIgPT0gY2g7CisgICAgcmV0dXJuIElzQXNjaWlQdW5jdChwYXR0ZXJuX2No
YXIpICYmIHBhdHRlcm5fY2hhciA9PSBjaDsKICAgfQogCiAgIHJldHVybiAocGF0dGVybl9jaGFy
ID09ICcuJyAmJiBjaCAhPSAnXG4nKSB8fCBwYXR0ZXJuX2NoYXIgPT0gY2g7CiB9CiAKIC8vIEhl
bHBlciBmdW5jdGlvbiB1c2VkIGJ5IFZhbGlkYXRlUmVnZXgoKSB0byBmb3JtYXQgZXJyb3IgbWVz
c2FnZXMuCi1TdHJpbmcgRm9ybWF0UmVnZXhTeW50YXhFcnJvcihjb25zdCBjaGFyKiByZWdleCwg
aW50IGluZGV4KSB7CitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0UmVnZXhTeW50YXhFcnJvcihj
b25zdCBjaGFyKiByZWdleCwgaW50IGluZGV4KSB7CiAgIHJldHVybiAoTWVzc2FnZSgpIDw8ICJT
eW50YXggZXJyb3IgYXQgaW5kZXggIiA8PCBpbmRleAogICAgICAgICAgIDw8ICIgaW4gc2ltcGxl
IHJlZ3VsYXIgZXhwcmVzc2lvbiBcIiIgPDwgcmVnZXggPDwgIlwiOiAiKS5HZXRTdHJpbmcoKTsK
IH0KQEAgLTIyOSw3ICs3MzcsNyBAQCBTdHJpbmcgRm9ybWF0UmVnZXhTeW50YXhFcnJvcihjb25z
dCBjaGFyKiByZWdleCwgaW50IGluZGV4KSB7CiAvLyBvdGhlcndpc2UgcmV0dXJucyB0cnVlLgog
Ym9vbCBWYWxpZGF0ZVJlZ2V4KGNvbnN0IGNoYXIqIHJlZ2V4KSB7CiAgIGlmIChyZWdleCA9PSBO
VUxMKSB7Ci0gICAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IGZpeCB0aGUgc291cmNlIGZpbGUg
bG9jYXRpb24gaW4gdGhlCisgICAgLy8gRklYTUU6IGZpeCB0aGUgc291cmNlIGZpbGUgbG9jYXRp
b24gaW4gdGhlCiAgICAgLy8gYXNzZXJ0aW9uIGZhaWx1cmVzIHRvIG1hdGNoIHdoZXJlIHRoZSBy
ZWdleCBpcyB1c2VkIGluIHVzZXIKICAgICAvLyBjb2RlLgogICAgIEFERF9GQUlMVVJFKCkgPDwg
Ik5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbi4iOwpAQCAtNDIy
LDYgKzkzMCwzNyBAQCB2b2lkIFJFOjpJbml0KGNvbnN0IGNoYXIqIHJlZ2V4KSB7CiAKICNlbmRp
ZiAgLy8gR1RFU1RfVVNFU19QT1NJWF9SRQogCitjb25zdCBjaGFyIGtVbmtub3duRmlsZVtdID0g
InVua25vd24gZmlsZSI7CisKKy8vIEZvcm1hdHMgYSBzb3VyY2UgZmlsZSBwYXRoIGFuZCBhIGxp
bmUgbnVtYmVyIGFzIHRoZXkgd291bGQgYXBwZWFyCisvLyBpbiBhbiBlcnJvciBtZXNzYWdlIGZy
b20gdGhlIGNvbXBpbGVyIHVzZWQgdG8gY29tcGlsZSB0aGlzIGNvZGUuCitHVEVTVF9BUElfIDo6
c3RkOjpzdHJpbmcgRm9ybWF0RmlsZUxvY2F0aW9uKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5l
KSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbGVfbmFtZShmaWxlID09IE5VTEwgPyBrVW5rbm93
bkZpbGUgOiBmaWxlKTsKKworICBpZiAobGluZSA8IDApIHsKKyAgICByZXR1cm4gZmlsZV9uYW1l
ICsgIjoiOworICB9CisjaWZkZWYgX01TQ19WRVIKKyAgcmV0dXJuIGZpbGVfbmFtZSArICIoIiAr
IFN0cmVhbWFibGVUb1N0cmluZyhsaW5lKSArICIpOiI7CisjZWxzZQorICByZXR1cm4gZmlsZV9u
YW1lICsgIjoiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGxpbmUpICsgIjoiOworI2VuZGlmICAvLyBf
TVNDX1ZFUgorfQorCisvLyBGb3JtYXRzIGEgZmlsZSBsb2NhdGlvbiBmb3IgY29tcGlsZXItaW5k
ZXBlbmRlbnQgWE1MIG91dHB1dC4KKy8vIEFsdGhvdWdoIHRoaXMgZnVuY3Rpb24gaXMgbm90IHBs
YXRmb3JtIGRlcGVuZGVudCwgd2UgcHV0IGl0IG5leHQgdG8KKy8vIEZvcm1hdEZpbGVMb2NhdGlv
biBpbiBvcmRlciB0byBjb250cmFzdCB0aGUgdHdvIGZ1bmN0aW9ucy4KKy8vIE5vdGUgdGhhdCBG
b3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uKCkgZG9lcyBOT1QgYXBwZW5kIGNv
bG9uCisvLyB0byB0aGUgZmlsZSBsb2NhdGlvbiBpdCBwcm9kdWNlcywgdW5saWtlIEZvcm1hdEZp
bGVMb2NhdGlvbigpLgorR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEZvcm1hdENvbXBpbGVySW5k
ZXBlbmRlbnRGaWxlTG9jYXRpb24oCisgICAgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpIHsK
KyAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsZV9uYW1lKGZpbGUgPT0gTlVMTCA/IGtVbmtub3duRmls
ZSA6IGZpbGUpOworCisgIGlmIChsaW5lIDwgMCkKKyAgICByZXR1cm4gZmlsZV9uYW1lOworICBl
bHNlCisgICAgcmV0dXJuIGZpbGVfbmFtZSArICI6IiArIFN0cmVhbWFibGVUb1N0cmluZyhsaW5l
KTsKK30KIAogR1Rlc3RMb2c6OkdUZXN0TG9nKEdUZXN0TG9nU2V2ZXJpdHkgc2V2ZXJpdHksIGNv
bnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKQogICAgIDogc2V2ZXJpdHlfKHNldmVyaXR5KSB7CkBA
IC00NDEsMjEgKzk4MCwxOSBAQCBHVGVzdExvZzo6fkdUZXN0TG9nKCkgewogICAgIHBvc2l4OjpB
Ym9ydCgpOwogICB9CiB9CisKIC8vIERpc2FibGUgTWljcm9zb2Z0IGRlcHJlY2F0aW9uIHdhcm5p
bmdzIGZvciBQT1NJWCBmdW5jdGlvbnMgY2FsbGVkIGZyb20KIC8vIHRoaXMgY2xhc3MgKGNyZWF0
LCBkdXAsIGR1cDIsIGFuZCBjbG9zZSkKLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5n
KHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDk5NikKLSNlbmRpZiAgLy8gX01TQ19W
RVIKK0dURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVTSF8oKQogCi0jaWYgR1RFU1RfSEFT
X1NUUkVBTV9SRURJUkVDVElPTl8KKyNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCiAK
IC8vIE9iamVjdCB0aGF0IGNhcHR1cmVzIGFuIG91dHB1dCBzdHJlYW0gKHN0ZG91dC9zdGRlcnIp
LgogY2xhc3MgQ2FwdHVyZWRTdHJlYW0gewogIHB1YmxpYzoKICAgLy8gVGhlIGN0b3IgcmVkaXJl
Y3RzIHRoZSBzdHJlYW0gdG8gYSB0ZW1wb3JhcnkgZmlsZS4KLSAgQ2FwdHVyZWRTdHJlYW0oaW50
IGZkKSA6IGZkXyhmZCksIHVuY2FwdHVyZWRfZmRfKGR1cChmZCkpIHsKLSNpZiBHVEVTVF9PU19X
SU5ET1dTCisgIGV4cGxpY2l0IENhcHR1cmVkU3RyZWFtKGludCBmZCkgOiBmZF8oZmQpLCB1bmNh
cHR1cmVkX2ZkXyhkdXAoZmQpKSB7CisjIGlmIEdURVNUX09TX1dJTkRPV1MKICAgICBjaGFyIHRl
bXBfZGlyX3BhdGhbTUFYX1BBVEggKyAxXSA9IHsgJ1wwJyB9OyAgLy8gTk9MSU5UCiAgICAgY2hh
ciB0ZW1wX2ZpbGVfcGF0aFtNQVhfUEFUSCArIDFdID0geyAnXDAnIH07ICAvLyBOT0xJTlQKIApA
QCAtNDcwLDE0ICsxMDA3LDMzIEBAIGNsYXNzIENhcHR1cmVkU3RyZWFtIHsKICAgICBHVEVTVF9D
SEVDS18oY2FwdHVyZWRfZmQgIT0gLTEpIDw8ICJVbmFibGUgdG8gb3BlbiB0ZW1wb3JhcnkgZmls
ZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCB0ZW1wX2ZpbGVfcGF0
aDsKICAgICBmaWxlbmFtZV8gPSB0ZW1wX2ZpbGVfcGF0aDsKLSNlbHNlCi0gICAgLy8gVGhlcmUn
cyBubyBndWFyYW50ZWUgdGhhdCBhIHRlc3QgaGFzIHdyaXRlIGFjY2VzcyB0byB0aGUKLSAgICAv
LyBjdXJyZW50IGRpcmVjdG9yeSwgc28gd2UgY3JlYXRlIHRoZSB0ZW1wb3JhcnkgZmlsZSBpbiB0
aGUgL3RtcAotICAgIC8vIGRpcmVjdG9yeSBpbnN0ZWFkLgorIyBlbHNlCisgICAgLy8gVGhlcmUn
cyBubyBndWFyYW50ZWUgdGhhdCBhIHRlc3QgaGFzIHdyaXRlIGFjY2VzcyB0byB0aGUgY3VycmVu
dAorICAgIC8vIGRpcmVjdG9yeSwgc28gd2UgY3JlYXRlIHRoZSB0ZW1wb3JhcnkgZmlsZSBpbiB0
aGUgL3RtcCBkaXJlY3RvcnkKKyAgICAvLyBpbnN0ZWFkLiBXZSB1c2UgL3RtcCBvbiBtb3N0IHN5
c3RlbXMsIGFuZCAvc2RjYXJkIG9uIEFuZHJvaWQuCisgICAgLy8gVGhhdCdzIGJlY2F1c2UgQW5k
cm9pZCBkb2Vzbid0IGhhdmUgL3RtcC4KKyMgIGlmIEdURVNUX09TX0xJTlVYX0FORFJPSUQKKyAg
ICAvLyBOb3RlOiBBbmRyb2lkIGFwcGxpY2F0aW9ucyBhcmUgZXhwZWN0ZWQgdG8gY2FsbCB0aGUg
ZnJhbWV3b3JrJ3MKKyAgICAvLyBDb250ZXh0LmdldEV4dGVybmFsU3RvcmFnZURpcmVjdG9yeSgp
IG1ldGhvZCB0aHJvdWdoIEpOSSB0byBnZXQKKyAgICAvLyB0aGUgbG9jYXRpb24gb2YgdGhlIHdv
cmxkLXdyaXRhYmxlIFNEIENhcmQgZGlyZWN0b3J5LiBIb3dldmVyLAorICAgIC8vIHRoaXMgcmVx
dWlyZXMgYSBDb250ZXh0IGhhbmRsZSwgd2hpY2ggY2Fubm90IGJlIHJldHJpZXZlZAorICAgIC8v
IGdsb2JhbGx5IGZyb20gbmF0aXZlIGNvZGUuIERvaW5nIHNvIGFsc28gcHJlY2x1ZGVzIHJ1bm5p
bmcgdGhlCisgICAgLy8gY29kZSBhcyBwYXJ0IG9mIGEgcmVndWxhciBzdGFuZGFsb25lIGV4ZWN1
dGFibGUsIHdoaWNoIGRvZXNuJ3QKKyAgICAvLyBydW4gaW4gYSBEYWx2aWsgcHJvY2VzcyAoZS5n
LiB3aGVuIHJ1bm5pbmcgaXQgdGhyb3VnaCAnYWRiIHNoZWxsJykuCisgICAgLy8KKyAgICAvLyBU
aGUgbG9jYXRpb24gL3NkY2FyZCBpcyBkaXJlY3RseSBhY2Nlc3NpYmxlIGZyb20gbmF0aXZlIGNv
ZGUKKyAgICAvLyBhbmQgaXMgdGhlIG9ubHkgbG9jYXRpb24gKHVub2ZmaWNpYWxseSkgc3VwcG9y
dGVkIGJ5IHRoZSBBbmRyb2lkCisgICAgLy8gdGVhbS4gSXQncyBnZW5lcmFsbHkgYSBzeW1saW5r
IHRvIHRoZSByZWFsIFNEIENhcmQgbW91bnQgcG9pbnQKKyAgICAvLyB3aGljaCBjYW4gYmUgL21u
dC9zZGNhcmQsIC9tbnQvc2RjYXJkMCwgL3N5c3RlbS9tZWRpYS9zZGNhcmQsIG9yCisgICAgLy8g
b3RoZXIgT0VNLWN1c3RvbWl6ZWQgbG9jYXRpb25zLiBOZXZlciByZWx5IG9uIHRoZXNlLCBhbmQg
YWx3YXlzCisgICAgLy8gdXNlIC9zZGNhcmQuCisgICAgY2hhciBuYW1lX3RlbXBsYXRlW10gPSAi
L3NkY2FyZC9ndGVzdF9jYXB0dXJlZF9zdHJlYW0uWFhYWFhYIjsKKyMgIGVsc2UKICAgICBjaGFy
IG5hbWVfdGVtcGxhdGVbXSA9ICIvdG1wL2NhcHR1cmVkX3N0cmVhbS5YWFhYWFgiOworIyAgZW5k
aWYgIC8vIEdURVNUX09TX0xJTlVYX0FORFJPSUQKICAgICBjb25zdCBpbnQgY2FwdHVyZWRfZmQg
PSBta3N0ZW1wKG5hbWVfdGVtcGxhdGUpOwogICAgIGZpbGVuYW1lXyA9IG5hbWVfdGVtcGxhdGU7
Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRP
V1MKICAgICBmZmx1c2goTlVMTCk7CiAgICAgZHVwMihjYXB0dXJlZF9mZCwgZmRfKTsKICAgICBj
bG9zZShjYXB0dXJlZF9mZCk7CkBAIC00ODcsNyArMTA0Myw3IEBAIGNsYXNzIENhcHR1cmVkU3Ry
ZWFtIHsKICAgICByZW1vdmUoZmlsZW5hbWVfLmNfc3RyKCkpOwogICB9CiAKLSAgU3RyaW5nIEdl
dENhcHR1cmVkU3RyaW5nKCkgeworICBzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0cmluZygpIHsK
ICAgICBpZiAodW5jYXB0dXJlZF9mZF8gIT0gLTEpIHsKICAgICAgIC8vIFJlc3RvcmVzIHRoZSBv
cmlnaW5hbCBzdHJlYW0uCiAgICAgICBmZmx1c2goTlVMTCk7CkBAIC00OTcsMTggKzEwNTMsMTIg
QEAgY2xhc3MgQ2FwdHVyZWRTdHJlYW0gewogICAgIH0KIAogICAgIEZJTEUqIGNvbnN0IGZpbGUg
PSBwb3NpeDo6Rk9wZW4oZmlsZW5hbWVfLmNfc3RyKCksICJyIik7Ci0gICAgY29uc3QgU3RyaW5n
IGNvbnRlbnQgPSBSZWFkRW50aXJlRmlsZShmaWxlKTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBj
b250ZW50ID0gUmVhZEVudGlyZUZpbGUoZmlsZSk7CiAgICAgcG9zaXg6OkZDbG9zZShmaWxlKTsK
ICAgICByZXR1cm4gY29udGVudDsKICAgfQogCiAgcHJpdmF0ZToKLSAgLy8gUmVhZHMgdGhlIGVu
dGlyZSBjb250ZW50IG9mIGEgZmlsZSBhcyBhIFN0cmluZy4KLSAgc3RhdGljIFN0cmluZyBSZWFk
RW50aXJlRmlsZShGSUxFKiBmaWxlKTsKLQotICAvLyBSZXR1cm5zIHRoZSBzaXplIChpbiBieXRl
cykgb2YgYSBmaWxlLgotICBzdGF0aWMgc2l6ZV90IEdldEZpbGVTaXplKEZJTEUqIGZpbGUpOwot
CiAgIGNvbnN0IGludCBmZF87ICAvLyBBIHN0cmVhbSB0byBjYXB0dXJlLgogICBpbnQgdW5jYXB0
dXJlZF9mZF87CiAgIC8vIE5hbWUgb2YgdGhlIHRlbXBvcmFyeSBmaWxlIGhvbGRpbmcgdGhlIHN0
ZGVyciBvdXRwdXQuCkBAIC01MTcsNDQgKzEwNjcsMTQgQEAgY2xhc3MgQ2FwdHVyZWRTdHJlYW0g
ewogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKENhcHR1cmVkU3RyZWFtKTsKIH07
CiAKLS8vIFJldHVybnMgdGhlIHNpemUgKGluIGJ5dGVzKSBvZiBhIGZpbGUuCi1zaXplX3QgQ2Fw
dHVyZWRTdHJlYW06OkdldEZpbGVTaXplKEZJTEUqIGZpbGUpIHsKLSAgZnNlZWsoZmlsZSwgMCwg
U0VFS19FTkQpOwotICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihmdGVsbChmaWxlKSk7Ci19
Ci0KLS8vIFJlYWRzIHRoZSBlbnRpcmUgY29udGVudCBvZiBhIGZpbGUgYXMgYSBzdHJpbmcuCi1T
dHJpbmcgQ2FwdHVyZWRTdHJlYW06OlJlYWRFbnRpcmVGaWxlKEZJTEUqIGZpbGUpIHsKLSAgY29u
c3Qgc2l6ZV90IGZpbGVfc2l6ZSA9IEdldEZpbGVTaXplKGZpbGUpOwotICBjaGFyKiBjb25zdCBi
dWZmZXIgPSBuZXcgY2hhcltmaWxlX3NpemVdOwotCi0gIHNpemVfdCBieXRlc19sYXN0X3JlYWQg
PSAwOyAgLy8gIyBvZiBieXRlcyByZWFkIGluIHRoZSBsYXN0IGZyZWFkKCkKLSAgc2l6ZV90IGJ5
dGVzX3JlYWQgPSAwOyAgICAgICAvLyAjIG9mIGJ5dGVzIHJlYWQgc28gZmFyCi0KLSAgZnNlZWso
ZmlsZSwgMCwgU0VFS19TRVQpOwotCi0gIC8vIEtlZXBzIHJlYWRpbmcgdGhlIGZpbGUgdW50aWwg
d2UgY2Fubm90IHJlYWQgZnVydGhlciBvciB0aGUKLSAgLy8gcHJlLWRldGVybWluZWQgZmlsZSBz
aXplIGlzIHJlYWNoZWQuCi0gIGRvIHsKLSAgICBieXRlc19sYXN0X3JlYWQgPSBmcmVhZChidWZm
ZXIrYnl0ZXNfcmVhZCwgMSwgZmlsZV9zaXplLWJ5dGVzX3JlYWQsIGZpbGUpOwotICAgIGJ5dGVz
X3JlYWQgKz0gYnl0ZXNfbGFzdF9yZWFkOwotICB9IHdoaWxlIChieXRlc19sYXN0X3JlYWQgPiAw
ICYmIGJ5dGVzX3JlYWQgPCBmaWxlX3NpemUpOwotCi0gIGNvbnN0IFN0cmluZyBjb250ZW50KGJ1
ZmZlciwgYnl0ZXNfcmVhZCk7Ci0gIGRlbGV0ZVtdIGJ1ZmZlcjsKLQotICByZXR1cm4gY29udGVu
dDsKLX0KLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmICAv
LyBfTVNDX1ZFUgorR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRFRF9QT1BfKCkKIAogc3RhdGlj
IENhcHR1cmVkU3RyZWFtKiBnX2NhcHR1cmVkX3N0ZGVyciA9IE5VTEw7CiBzdGF0aWMgQ2FwdHVy
ZWRTdHJlYW0qIGdfY2FwdHVyZWRfc3Rkb3V0ID0gTlVMTDsKIAogLy8gU3RhcnRzIGNhcHR1cmlu
ZyBhbiBvdXRwdXQgc3RyZWFtIChzdGRvdXQvc3RkZXJyKS4KLXZvaWQgQ2FwdHVyZVN0cmVhbShp
bnQgZmQsIGNvbnN0IGNoYXIqIHN0cmVhbV9uYW1lLCBDYXB0dXJlZFN0cmVhbSoqIHN0cmVhbSkg
eworc3RhdGljIHZvaWQgQ2FwdHVyZVN0cmVhbShpbnQgZmQsIGNvbnN0IGNoYXIqIHN0cmVhbV9u
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICBDYXB0dXJlZFN0cmVhbSoqIHN0cmVhbSkg
ewogICBpZiAoKnN0cmVhbSAhPSBOVUxMKSB7CiAgICAgR1RFU1RfTE9HXyhGQVRBTCkgPDwgIk9u
bHkgb25lICIgPDwgc3RyZWFtX25hbWUKICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGNhcHR1
cmVyIGNhbiBleGlzdCBhdCBhIHRpbWUuIjsKQEAgLTU2Myw4ICsxMDgzLDggQEAgdm9pZCBDYXB0
dXJlU3RyZWFtKGludCBmZCwgY29uc3QgY2hhciogc3RyZWFtX25hbWUsIENhcHR1cmVkU3RyZWFt
Kiogc3RyZWFtKSB7CiB9CiAKIC8vIFN0b3BzIGNhcHR1cmluZyB0aGUgb3V0cHV0IHN0cmVhbSBh
bmQgcmV0dXJucyB0aGUgY2FwdHVyZWQgc3RyaW5nLgotU3RyaW5nIEdldENhcHR1cmVkU3RyZWFt
KENhcHR1cmVkU3RyZWFtKiogY2FwdHVyZWRfc3RyZWFtKSB7Ci0gIGNvbnN0IFN0cmluZyBjb250
ZW50ID0gKCpjYXB0dXJlZF9zdHJlYW0pLT5HZXRDYXB0dXJlZFN0cmluZygpOworc3RhdGljIHN0
ZDo6c3RyaW5nIEdldENhcHR1cmVkU3RyZWFtKENhcHR1cmVkU3RyZWFtKiogY2FwdHVyZWRfc3Ry
ZWFtKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvbnRlbnQgPSAoKmNhcHR1cmVkX3N0cmVhbSkt
PkdldENhcHR1cmVkU3RyaW5nKCk7CiAKICAgZGVsZXRlICpjYXB0dXJlZF9zdHJlYW07CiAgICpj
YXB0dXJlZF9zdHJlYW0gPSBOVUxMOwpAQCAtNTgzLDIxICsxMTAzLDc5IEBAIHZvaWQgQ2FwdHVy
ZVN0ZGVycigpIHsKIH0KIAogLy8gU3RvcHMgY2FwdHVyaW5nIHN0ZG91dCBhbmQgcmV0dXJucyB0
aGUgY2FwdHVyZWQgc3RyaW5nLgotU3RyaW5nIEdldENhcHR1cmVkU3Rkb3V0KCkgeyByZXR1cm4g
R2V0Q2FwdHVyZWRTdHJlYW0oJmdfY2FwdHVyZWRfc3Rkb3V0KTsgfQorc3RkOjpzdHJpbmcgR2V0
Q2FwdHVyZWRTdGRvdXQoKSB7CisgIHJldHVybiBHZXRDYXB0dXJlZFN0cmVhbSgmZ19jYXB0dXJl
ZF9zdGRvdXQpOworfQogCiAvLyBTdG9wcyBjYXB0dXJpbmcgc3RkZXJyIGFuZCByZXR1cm5zIHRo
ZSBjYXB0dXJlZCBzdHJpbmcuCi1TdHJpbmcgR2V0Q2FwdHVyZWRTdGRlcnIoKSB7IHJldHVybiBH
ZXRDYXB0dXJlZFN0cmVhbSgmZ19jYXB0dXJlZF9zdGRlcnIpOyB9CitzdGQ6OnN0cmluZyBHZXRD
YXB0dXJlZFN0ZGVycigpIHsKKyAgcmV0dXJuIEdldENhcHR1cmVkU3RyZWFtKCZnX2NhcHR1cmVk
X3N0ZGVycik7Cit9CiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8K
KyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgorCisKKworCisKK3NpemVf
dCBHZXRGaWxlU2l6ZShGSUxFKiBmaWxlKSB7CisgIGZzZWVrKGZpbGUsIDAsIFNFRUtfRU5EKTsK
KyAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oZnRlbGwoZmlsZSkpOworfQorCitzdGQ6OnN0
cmluZyBSZWFkRW50aXJlRmlsZShGSUxFKiBmaWxlKSB7CisgIGNvbnN0IHNpemVfdCBmaWxlX3Np
emUgPSBHZXRGaWxlU2l6ZShmaWxlKTsKKyAgY2hhciogY29uc3QgYnVmZmVyID0gbmV3IGNoYXJb
ZmlsZV9zaXplXTsKKworICBzaXplX3QgYnl0ZXNfbGFzdF9yZWFkID0gMDsgIC8vICMgb2YgYnl0
ZXMgcmVhZCBpbiB0aGUgbGFzdCBmcmVhZCgpCisgIHNpemVfdCBieXRlc19yZWFkID0gMDsgICAg
ICAgLy8gIyBvZiBieXRlcyByZWFkIHNvIGZhcgorCisgIGZzZWVrKGZpbGUsIDAsIFNFRUtfU0VU
KTsKKworICAvLyBLZWVwcyByZWFkaW5nIHRoZSBmaWxlIHVudGlsIHdlIGNhbm5vdCByZWFkIGZ1
cnRoZXIgb3IgdGhlCisgIC8vIHByZS1kZXRlcm1pbmVkIGZpbGUgc2l6ZSBpcyByZWFjaGVkLgor
ICBkbyB7CisgICAgYnl0ZXNfbGFzdF9yZWFkID0gZnJlYWQoYnVmZmVyK2J5dGVzX3JlYWQsIDEs
IGZpbGVfc2l6ZS1ieXRlc19yZWFkLCBmaWxlKTsKKyAgICBieXRlc19yZWFkICs9IGJ5dGVzX2xh
c3RfcmVhZDsKKyAgfSB3aGlsZSAoYnl0ZXNfbGFzdF9yZWFkID4gMCAmJiBieXRlc19yZWFkIDwg
ZmlsZV9zaXplKTsKKworICBjb25zdCBzdGQ6OnN0cmluZyBjb250ZW50KGJ1ZmZlciwgYnl0ZXNf
cmVhZCk7CisgIGRlbGV0ZVtdIGJ1ZmZlcjsKKworICByZXR1cm4gY29udGVudDsKK30KIAogI2lm
IEdURVNUX0hBU19ERUFUSF9URVNUCitzdGF0aWMgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+KiBnX2luamVjdGVkX3Rlc3RfYXJndnMgPSBOVUxMOyAgLy8gT3duZWQuCiAKLS8vIEEgY29w
eSBvZiBhbGwgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4gIFNldCBieSBJbml0R29vZ2xlVGVzdCgp
LgotOjpzdGQ6OnZlY3RvcjxTdHJpbmc+IGdfYXJndnM7CitzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4gR2V0SW5qZWN0YWJsZUFyZ3ZzKCkgeworICBpZiAoZ19pbmplY3RlZF90ZXN0X2FyZ3ZzICE9
IE5VTEwpIHsKKyAgICByZXR1cm4gKmdfaW5qZWN0ZWRfdGVzdF9hcmd2czsKKyAgfQorICByZXR1
cm4gR2V0QXJndnMoKTsKK30KKwordm9pZCBTZXRJbmplY3RhYmxlQXJndnMoY29uc3Qgc3RkOjp2
ZWN0b3I8c3RkOjpzdHJpbmc+KiBuZXdfYXJndnMpIHsKKyAgaWYgKGdfaW5qZWN0ZWRfdGVzdF9h
cmd2cyAhPSBuZXdfYXJndnMpIGRlbGV0ZSBnX2luamVjdGVkX3Rlc3RfYXJndnM7CisgIGdfaW5q
ZWN0ZWRfdGVzdF9hcmd2cyA9IG5ld19hcmd2czsKK30KIAotLy8gUmV0dXJucyB0aGUgY29tbWFu
ZCBsaW5lIGFzIGEgdmVjdG9yIG9mIHN0cmluZ3MuCi1jb25zdCA6OnN0ZDo6dmVjdG9yPFN0cmlu
Zz4mIEdldEFyZ3ZzKCkgeyByZXR1cm4gZ19hcmd2czsgfQordm9pZCBTZXRJbmplY3RhYmxlQXJn
dnMoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBuZXdfYXJndnMpIHsKKyAgU2V0SW5q
ZWN0YWJsZUFyZ3ZzKAorICAgICAgbmV3IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPihuZXdfYXJn
dnMuYmVnaW4oKSwgbmV3X2FyZ3ZzLmVuZCgpKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfR0xPQkFM
X1NUUklORwordm9pZCBTZXRJbmplY3RhYmxlQXJndnMoY29uc3Qgc3RkOjp2ZWN0b3I8IDo6c3Ry
aW5nPiYgbmV3X2FyZ3ZzKSB7CisgIFNldEluamVjdGFibGVBcmd2cygKKyAgICAgIG5ldyBzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4obmV3X2FyZ3ZzLmJlZ2luKCksIG5ld19hcmd2cy5lbmQoKSkp
OworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwogCit2b2lkIENsZWFySW5q
ZWN0YWJsZUFyZ3ZzKCkgeworICBkZWxldGUgZ19pbmplY3RlZF90ZXN0X2FyZ3ZzOworICBnX2lu
amVjdGVkX3Rlc3RfYXJndnMgPSBOVUxMOworfQogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhf
VEVTVAogCiAjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKQEAgLTYxMiwxMyArMTE5MCwxMyBA
QCB2b2lkIEFib3J0KCkgewogLy8gUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgZW52aXJvbm1lbnQg
dmFyaWFibGUgY29ycmVzcG9uZGluZyB0byB0aGUKIC8vIGdpdmVuIGZsYWcuICBGb3IgZXhhbXBs
ZSwgRmxhZ1RvRW52VmFyKCJmb28iKSB3aWxsIHJldHVybgogLy8gIkdURVNUX0ZPTyIgaW4gdGhl
IG9wZW4tc291cmNlIHZlcnNpb24uCi1zdGF0aWMgU3RyaW5nIEZsYWdUb0VudlZhcihjb25zdCBj
aGFyKiBmbGFnKSB7Ci0gIGNvbnN0IFN0cmluZyBmdWxsX2ZsYWcgPQorc3RhdGljIHN0ZDo6c3Ry
aW5nIEZsYWdUb0VudlZhcihjb25zdCBjaGFyKiBmbGFnKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5n
IGZ1bGxfZmxhZyA9CiAgICAgICAoTWVzc2FnZSgpIDw8IEdURVNUX0ZMQUdfUFJFRklYXyA8PCBm
bGFnKS5HZXRTdHJpbmcoKTsKIAogICBNZXNzYWdlIGVudl92YXI7CiAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpICE9IGZ1bGxfZmxhZy5sZW5ndGgoKTsgaSsrKSB7Ci0gICAgZW52X3ZhciA8PCBzdGF0
aWNfY2FzdDxjaGFyPih0b3VwcGVyKGZ1bGxfZmxhZy5jX3N0cigpW2ldKSk7CisgICAgZW52X3Zh
ciA8PCBUb1VwcGVyKGZ1bGxfZmxhZy5jX3N0cigpW2ldKTsKICAgfQogCiAgIHJldHVybiBlbnZf
dmFyLkdldFN0cmluZygpOwpAQCAtNjcwLDE3ICsxMjQ4LDI0IEBAIGJvb2wgUGFyc2VJbnQzMihj
b25zdCBNZXNzYWdlJiBzcmNfdGV4dCwgY29uc3QgY2hhciogc3RyLCBJbnQzMiogdmFsdWUpIHsK
IC8vCiAvLyBUaGUgdmFsdWUgaXMgY29uc2lkZXJlZCB0cnVlIGlmZiBpdCdzIG5vdCAiMCIuCiBi
b29sIEJvb2xGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywgYm9vbCBkZWZhdWx0X3ZhbHVl
KSB7Ci0gIGNvbnN0IFN0cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52VmFyKGZsYWcpOworI2lmIGRl
ZmluZWQoR1RFU1RfR0VUX0JPT0xfRlJPTV9FTlZfKQorICByZXR1cm4gR1RFU1RfR0VUX0JPT0xf
RlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOworI2Vsc2UKKyAgY29uc3Qgc3RkOjpzdHJp
bmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFnKTsKICAgY29uc3QgY2hhciogY29uc3Qgc3Ry
aW5nX3ZhbHVlID0gcG9zaXg6OkdldEVudihlbnZfdmFyLmNfc3RyKCkpOwogICByZXR1cm4gc3Ry
aW5nX3ZhbHVlID09IE5VTEwgPwogICAgICAgZGVmYXVsdF92YWx1ZSA6IHN0cmNtcChzdHJpbmdf
dmFsdWUsICIwIikgIT0gMDsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9HRVRfQk9PTF9GUk9N
X0VOVl8pCiB9CiAKIC8vIFJlYWRzIGFuZCByZXR1cm5zIGEgMzItYml0IGludGVnZXIgc3RvcmVk
IGluIHRoZSBlbnZpcm9ubWVudAogLy8gdmFyaWFibGUgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2
ZW4gZmxhZzsgaWYgaXQgaXNuJ3Qgc2V0IG9yCiAvLyBkb2Vzbid0IHJlcHJlc2VudCBhIHZhbGlk
IDMyLWJpdCBpbnRlZ2VyLCByZXR1cm5zIGRlZmF1bHRfdmFsdWUuCiBJbnQzMiBJbnQzMkZyb21H
VGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBJbnQzMiBkZWZhdWx0X3ZhbHVlKSB7Ci0gIGNvbnN0
IFN0cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52VmFyKGZsYWcpOworI2lmIGRlZmluZWQoR1RFU1Rf
R0VUX0lOVDMyX0ZST01fRU5WXykKKyAgcmV0dXJuIEdURVNUX0dFVF9JTlQzMl9GUk9NX0VOVl8o
ZmxhZywgZGVmYXVsdF92YWx1ZSk7CisjZWxzZQorICBjb25zdCBzdGQ6OnN0cmluZyBlbnZfdmFy
ID0gRmxhZ1RvRW52VmFyKGZsYWcpOwogICBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdfdmFsdWUg
PSBwb3NpeDo6R2V0RW52KGVudl92YXIuY19zdHIoKSk7CiAgIGlmIChzdHJpbmdfdmFsdWUgPT0g
TlVMTCkgewogICAgIC8vIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0LgpAQCAt
Njk3LDE0ICsxMjgyLDM2IEBAIEludDMyIEludDMyRnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZs
YWcsIEludDMyIGRlZmF1bHRfdmFsdWUpIHsKICAgfQogCiAgIHJldHVybiByZXN1bHQ7CisjZW5k
aWYgIC8vIGRlZmluZWQoR1RFU1RfR0VUX0lOVDMyX0ZST01fRU5WXykKK30KKworLy8gQXMgYSBz
cGVjaWFsIGNhc2UgZm9yIHRoZSAnb3V0cHV0JyBmbGFnLCBpZiBHVEVTVF9PVVRQVVQgaXMgbm90
CisvLyBzZXQsIHdlIGxvb2sgZm9yIFhNTF9PVVRQVVRfRklMRSwgd2hpY2ggaXMgc2V0IGJ5IHRo
ZSBCYXplbCBidWlsZAorLy8gc3lzdGVtLiAgVGhlIHZhbHVlIG9mIFhNTF9PVVRQVVRfRklMRSBp
cyBhIGZpbGVuYW1lIHdpdGhvdXQgdGhlCisvLyAieG1sOiIgcHJlZml4IG9mIEdURVNUX09VVFBV
VC4KKy8vIE5vdGUgdGhhdCB0aGlzIGlzIG1lYW50IHRvIGJlIGNhbGxlZCBhdCB0aGUgY2FsbCBz
aXRlIHNvIGl0IGRvZXMKKy8vIG5vdCBjaGVjayB0aGF0IHRoZSBmbGFnIGlzICdvdXRwdXQnCisv
LyBJbiBlc3NlbmNlIHRoaXMgY2hlY2tzIGFuIGVudiB2YXJpYWJsZSBjYWxsZWQgWE1MX09VVFBV
VF9GSUxFCisvLyBhbmQgaWYgaXQgaXMgc2V0IHdlIHByZXBlbmQgInhtbDoiIHRvIGl0cyB2YWx1
ZSwgaWYgaXQgbm90IHNldCB3ZSByZXR1cm4gIiIKK3N0ZDo6c3RyaW5nIE91dHB1dEZsYWdBbHNv
Q2hlY2tFbnZWYXIoKXsKKyAgc3RkOjpzdHJpbmcgZGVmYXVsdF92YWx1ZV9mb3Jfb3V0cHV0X2Zs
YWcgPSAiIjsKKyAgY29uc3QgY2hhciogeG1sX291dHB1dF9maWxlX2VudiA9IHBvc2l4OjpHZXRF
bnYoIlhNTF9PVVRQVVRfRklMRSIpOworICBpZiAoTlVMTCAhPSB4bWxfb3V0cHV0X2ZpbGVfZW52
KSB7CisgICAgZGVmYXVsdF92YWx1ZV9mb3Jfb3V0cHV0X2ZsYWcgPSBzdGQ6OnN0cmluZygieG1s
OiIpICsgeG1sX291dHB1dF9maWxlX2VudjsKKyAgfQorICByZXR1cm4gZGVmYXVsdF92YWx1ZV9m
b3Jfb3V0cHV0X2ZsYWc7CiB9CiAKIC8vIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBzdHJpbmcgZW52
aXJvbm1lbnQgdmFyaWFibGUgY29ycmVzcG9uZGluZyB0bwogLy8gdGhlIGdpdmVuIGZsYWc7IGlm
IGl0J3Mgbm90IHNldCwgcmV0dXJucyBkZWZhdWx0X3ZhbHVlLgogY29uc3QgY2hhciogU3RyaW5n
RnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIGNvbnN0IGNoYXIqIGRlZmF1bHRfdmFsdWUp
IHsKLSAgY29uc3QgU3RyaW5nIGVudl92YXIgPSBGbGFnVG9FbnZWYXIoZmxhZyk7CisjaWYgZGVm
aW5lZChHVEVTVF9HRVRfU1RSSU5HX0ZST01fRU5WXykKKyAgcmV0dXJuIEdURVNUX0dFVF9TVFJJ
TkdfRlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOworI2Vsc2UKKyAgY29uc3Qgc3RkOjpz
dHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFnKTsKICAgY29uc3QgY2hhciogY29uc3Qg
dmFsdWUgPSBwb3NpeDo6R2V0RW52KGVudl92YXIuY19zdHIoKSk7CiAgIHJldHVybiB2YWx1ZSA9
PSBOVUxMID8gZGVmYXVsdF92YWx1ZSA6IHZhbHVlOworI2VuZGlmICAvLyBkZWZpbmVkKEdURVNU
X0dFVF9TVFJJTkdfRlJPTV9FTlZfKQogfQogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1wcmludGVycy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1wcmludGVycy5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kZTRkMjQ1ZTlmYzg4OTdhZjIxMzc2NzlkOTEzZDY2NWZkODQzNmUxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXByaW50ZXJzLmNjCkBAIC0w
LDAgKzEsNDU3IEBACisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKworLy8gR29vZ2xlIFRlc3QgLSBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5n
IEZyYW1ld29yaworLy8KKy8vIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGEgdW5pdmVyc2FsIHZhbHVl
IHByaW50ZXIgdGhhdCBjYW4gcHJpbnQgYQorLy8gdmFsdWUgb2YgYW55IHR5cGUgVDoKKy8vCisv
LyAgIHZvaWQgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnRlcjxUPjo6UHJpbnQo
dmFsdWUsIG9zdHJlYW1fcHRyKTsKKy8vCisvLyBJdCB1c2VzIHRoZSA8PCBvcGVyYXRvciB3aGVu
IHBvc3NpYmxlLCBhbmQgcHJpbnRzIHRoZSBieXRlcyBpbiB0aGUKKy8vIG9iamVjdCBvdGhlcndp
c2UuICBBIHVzZXIgY2FuIG92ZXJyaWRlIGl0cyBiZWhhdmlvciBmb3IgYSBjbGFzcworLy8gdHlw
ZSBGb28gYnkgZGVmaW5pbmcgZWl0aGVyIG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0mLCBjb25z
dCBGb28mKQorLy8gb3Igdm9pZCBQcmludFRvKGNvbnN0IEZvbyYsIDo6c3RkOjpvc3RyZWFtKikg
aW4gdGhlIG5hbWVzcGFjZSB0aGF0CisvLyBkZWZpbmVzIEZvby4KKworI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LXByaW50ZXJzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxjY3R5cGU+
CisjaW5jbHVkZSA8Y3djaGFyPgorI2luY2x1ZGUgPG9zdHJlYW0+ICAvLyBOT0xJTlQKKyNpbmNs
dWRlIDxzdHJpbmc+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorI2lu
Y2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKworbmFtZXNwYWNlIHRlc3Rpbmcgewor
CituYW1lc3BhY2UgeworCit1c2luZyA6OnN0ZDo6b3N0cmVhbTsKKworLy8gUHJpbnRzIGEgc2Vn
bWVudCBvZiBieXRlcyBpbiB0aGUgZ2l2ZW4gb2JqZWN0LgorR1RFU1RfQVRUUklCVVRFX05PX1NB
TklUSVpFX01FTU9SWV8KK0dURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTXworR1RF
U1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KK3ZvaWQgUHJpbnRCeXRlU2VnbWVudElu
T2JqZWN0VG8oY29uc3QgdW5zaWduZWQgY2hhciogb2JqX2J5dGVzLCBzaXplX3Qgc3RhcnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCwgb3N0cmVhbSogb3Mp
IHsKKyAgY2hhciB0ZXh0WzVdID0gIiI7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGNvdW50
OyBpKyspIHsKKyAgICBjb25zdCBzaXplX3QgaiA9IHN0YXJ0ICsgaTsKKyAgICBpZiAoaSAhPSAw
KSB7CisgICAgICAvLyBPcmdhbml6ZXMgdGhlIGJ5dGVzIGludG8gZ3JvdXBzIG9mIDIgZm9yIGVh
c3kgcGFyc2luZyBieQorICAgICAgLy8gaHVtYW4uCisgICAgICBpZiAoKGogJSAyKSA9PSAwKQor
ICAgICAgICAqb3MgPDwgJyAnOworICAgICAgZWxzZQorICAgICAgICAqb3MgPDwgJy0nOworICAg
IH0KKyAgICBHVEVTVF9TTlBSSU5URl8odGV4dCwgc2l6ZW9mKHRleHQpLCAiJTAyWCIsIG9ial9i
eXRlc1tqXSk7CisgICAgKm9zIDw8IHRleHQ7CisgIH0KK30KKworLy8gUHJpbnRzIHRoZSBieXRl
cyBpbiB0aGUgZ2l2ZW4gdmFsdWUgdG8gdGhlIGdpdmVuIG9zdHJlYW0uCit2b2lkIFByaW50Qnl0
ZXNJbk9iamVjdFRvSW1wbChjb25zdCB1bnNpZ25lZCBjaGFyKiBvYmpfYnl0ZXMsIHNpemVfdCBj
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zdHJlYW0qIG9zKSB7CisgIC8v
IFRlbGxzIHRoZSB1c2VyIGhvdyBiaWcgdGhlIG9iamVjdCBpcy4KKyAgKm9zIDw8IGNvdW50IDw8
ICItYnl0ZSBvYmplY3QgPCI7CisKKyAgY29uc3Qgc2l6ZV90IGtUaHJlc2hvbGQgPSAxMzI7Cisg
IGNvbnN0IHNpemVfdCBrQ2h1bmtTaXplID0gNjQ7CisgIC8vIElmIHRoZSBvYmplY3Qgc2l6ZSBp
cyBiaWdnZXIgdGhhbiBrVGhyZXNob2xkLCB3ZSdsbCBoYXZlIHRvIG9taXQKKyAgLy8gc29tZSBk
ZXRhaWxzIGJ5IHByaW50aW5nIG9ubHkgdGhlIGZpcnN0IGFuZCB0aGUgbGFzdCBrQ2h1bmtTaXpl
CisgIC8vIGJ5dGVzLgorICAvLyBGSVhNRTogbGV0IHRoZSB1c2VyIGNvbnRyb2wgdGhlIHRocmVz
aG9sZCB1c2luZyBhIGZsYWcuCisgIGlmIChjb3VudCA8IGtUaHJlc2hvbGQpIHsKKyAgICBQcmlu
dEJ5dGVTZWdtZW50SW5PYmplY3RUbyhvYmpfYnl0ZXMsIDAsIGNvdW50LCBvcyk7CisgIH0gZWxz
ZSB7CisgICAgUHJpbnRCeXRlU2VnbWVudEluT2JqZWN0VG8ob2JqX2J5dGVzLCAwLCBrQ2h1bmtT
aXplLCBvcyk7CisgICAgKm9zIDw8ICIgLi4uICI7CisgICAgLy8gUm91bmRzIHVwIHRvIDItYnl0
ZSBib3VuZGFyeS4KKyAgICBjb25zdCBzaXplX3QgcmVzdW1lX3BvcyA9IChjb3VudCAtIGtDaHVu
a1NpemUgKyAxKS8yKjI7CisgICAgUHJpbnRCeXRlU2VnbWVudEluT2JqZWN0VG8ob2JqX2J5dGVz
LCByZXN1bWVfcG9zLCBjb3VudCAtIHJlc3VtZV9wb3MsIG9zKTsKKyAgfQorICAqb3MgPDwgIj4i
OworfQorCit9ICAvLyBuYW1lc3BhY2UKKworbmFtZXNwYWNlIGludGVybmFsMiB7CisKKy8vIERl
bGVnYXRlcyB0byBQcmludEJ5dGVzSW5PYmplY3RUb0ltcGwoKSB0byBwcmludCB0aGUgYnl0ZXMg
aW4gdGhlCisvLyBnaXZlbiBvYmplY3QuICBUaGUgZGVsZWdhdGlvbiBzaW1wbGlmaWVzIHRoZSBp
bXBsZW1lbnRhdGlvbiwgd2hpY2gKKy8vIHVzZXMgdGhlIDw8IG9wZXJhdG9yIGFuZCB0aHVzIGlz
IGVhc2llciBkb25lIG91dHNpZGUgb2YgdGhlCisvLyA6OnRlc3Rpbmc6OmludGVybmFsIG5hbWVz
cGFjZSwgd2hpY2ggY29udGFpbnMgYSA8PCBvcGVyYXRvciB0aGF0CisvLyBzb21ldGltZXMgY29u
ZmxpY3RzIHdpdGggdGhlIG9uZSBpbiBTVEwuCit2b2lkIFByaW50Qnl0ZXNJbk9iamVjdFRvKGNv
bnN0IHVuc2lnbmVkIGNoYXIqIG9ial9ieXRlcywgc2l6ZV90IGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBvc3RyZWFtKiBvcykgeworICBQcmludEJ5dGVzSW5PYmplY3RUb0ltcGwo
b2JqX2J5dGVzLCBjb3VudCwgb3MpOworfQorCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwyCisK
K25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIERlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgYSBj
aGFyIChvciB3Y2hhcl90KSwgd2UgcHJpbnQgaXQgaW4gb25lCisvLyBvZiB0aHJlZSBmb3JtYXRz
OgorLy8gICAtIGFzIGlzIGlmIGl0J3MgYSBwcmludGFibGUgQVNDSUkgKGUuZy4gJ2EnLCAnMics
ICcgJyksCisvLyAgIC0gYXMgYSBoZXhhZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2UgKGUuZy4gJ1x4
N0YnKSwgb3IKKy8vICAgLSBhcyBhIHNwZWNpYWwgZXNjYXBlIHNlcXVlbmNlIChlLmcuICdccics
ICdcbicpLgorZW51bSBDaGFyRm9ybWF0IHsKKyAga0FzSXMsCisgIGtIZXhFc2NhcGUsCisgIGtT
cGVjaWFsRXNjYXBlCit9OworCisvLyBSZXR1cm5zIHRydWUgaWYgYyBpcyBhIHByaW50YWJsZSBB
U0NJSSBjaGFyYWN0ZXIuICBXZSB0ZXN0IHRoZQorLy8gdmFsdWUgb2YgYyBkaXJlY3RseSBpbnN0
ZWFkIG9mIGNhbGxpbmcgaXNwcmludCgpLCB3aGljaCBpcyBidWdneSBvbgorLy8gV2luZG93cyBN
b2JpbGUuCitpbmxpbmUgYm9vbCBJc1ByaW50YWJsZUFzY2lpKHdjaGFyX3QgYykgeworICByZXR1
cm4gMHgyMCA8PSBjICYmIGMgPD0gMHg3RTsKK30KKworLy8gUHJpbnRzIGEgd2lkZSBvciBuYXJy
b3cgY2hhciBjIGFzIGEgY2hhcmFjdGVyIGxpdGVyYWwgd2l0aG91dCB0aGUKKy8vIHF1b3Rlcywg
ZXNjYXBpbmcgaXQgd2hlbiBuZWNlc3Nhcnk7IHJldHVybnMgaG93IGMgd2FzIGZvcm1hdHRlZC4K
Ky8vIFRoZSB0ZW1wbGF0ZSBhcmd1bWVudCBVbnNpZ25lZENoYXIgaXMgdGhlIHVuc2lnbmVkIHZl
cnNpb24gb2YgQ2hhciwKKy8vIHdoaWNoIGlzIHRoZSB0eXBlIG9mIGMuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVW5zaWduZWRDaGFyLCB0eXBlbmFtZSBDaGFyPgorc3RhdGljIENoYXJGb3JtYXQgUHJp
bnRBc0NoYXJMaXRlcmFsVG8oQ2hhciBjLCBvc3RyZWFtKiBvcykgeworICBzd2l0Y2ggKHN0YXRp
Y19jYXN0PHdjaGFyX3Q+KGMpKSB7CisgICAgY2FzZSBMJ1wwJzoKKyAgICAgICpvcyA8PCAiXFww
IjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTCdcJyc6CisgICAgICAqb3MgPDwgIlxcJyI7Cisg
ICAgICBicmVhazsKKyAgICBjYXNlIEwnXFwnOgorICAgICAgKm9zIDw8ICJcXFxcIjsKKyAgICAg
IGJyZWFrOworICAgIGNhc2UgTCdcYSc6CisgICAgICAqb3MgPDwgIlxcYSI7CisgICAgICBicmVh
azsKKyAgICBjYXNlIEwnXGInOgorICAgICAgKm9zIDw8ICJcXGIiOworICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBMJ1xmJzoKKyAgICAgICpvcyA8PCAiXFxmIjsKKyAgICAgIGJyZWFrOworICAgIGNh
c2UgTCdcbic6CisgICAgICAqb3MgPDwgIlxcbiI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwn
XHInOgorICAgICAgKm9zIDw8ICJcXHIiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1x0JzoK
KyAgICAgICpvcyA8PCAiXFx0IjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTCdcdic6CisgICAg
ICAqb3MgPDwgIlxcdiI7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgaWYgKElz
UHJpbnRhYmxlQXNjaWkoYykpIHsKKyAgICAgICAgKm9zIDw8IHN0YXRpY19jYXN0PGNoYXI+KGMp
OworICAgICAgICByZXR1cm4ga0FzSXM7CisgICAgICB9IGVsc2UgeworICAgICAgICBvc3RyZWFt
OjpmbXRmbGFncyBmbGFncyA9IG9zLT5mbGFncygpOworICAgICAgICAqb3MgPDwgIlxceCIgPDwg
c3RkOjpoZXggPDwgc3RkOjp1cHBlcmNhc2UKKyAgICAgICAgICAgIDw8IHN0YXRpY19jYXN0PGlu
dD4oc3RhdGljX2Nhc3Q8VW5zaWduZWRDaGFyPihjKSk7CisgICAgICAgIG9zLT5mbGFncyhmbGFn
cyk7CisgICAgICAgIHJldHVybiBrSGV4RXNjYXBlOworICAgICAgfQorICB9CisgIHJldHVybiBr
U3BlY2lhbEVzY2FwZTsKK30KKworLy8gUHJpbnRzIGEgd2NoYXJfdCBjIGFzIGlmIGl0J3MgcGFy
dCBvZiBhIHN0cmluZyBsaXRlcmFsLCBlc2NhcGluZyBpdCB3aGVuCisvLyBuZWNlc3Nhcnk7IHJl
dHVybnMgaG93IGMgd2FzIGZvcm1hdHRlZC4KK3N0YXRpYyBDaGFyRm9ybWF0IFByaW50QXNTdHJp
bmdMaXRlcmFsVG8od2NoYXJfdCBjLCBvc3RyZWFtKiBvcykgeworICBzd2l0Y2ggKGMpIHsKKyAg
ICBjYXNlIEwnXCcnOgorICAgICAgKm9zIDw8ICInIjsKKyAgICAgIHJldHVybiBrQXNJczsKKyAg
ICBjYXNlIEwnIic6CisgICAgICAqb3MgPDwgIlxcXCIiOworICAgICAgcmV0dXJuIGtTcGVjaWFs
RXNjYXBlOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gUHJpbnRBc0NoYXJMaXRlcmFsVG88
d2NoYXJfdD4oYywgb3MpOworICB9Cit9CisKKy8vIFByaW50cyBhIGNoYXIgYyBhcyBpZiBpdCdz
IHBhcnQgb2YgYSBzdHJpbmcgbGl0ZXJhbCwgZXNjYXBpbmcgaXQgd2hlbgorLy8gbmVjZXNzYXJ5
OyByZXR1cm5zIGhvdyBjIHdhcyBmb3JtYXR0ZWQuCitzdGF0aWMgQ2hhckZvcm1hdCBQcmludEFz
U3RyaW5nTGl0ZXJhbFRvKGNoYXIgYywgb3N0cmVhbSogb3MpIHsKKyAgcmV0dXJuIFByaW50QXNT
dHJpbmdMaXRlcmFsVG8oCisgICAgICBzdGF0aWNfY2FzdDx3Y2hhcl90PihzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPihjKSksIG9zKTsKK30KKworLy8gUHJpbnRzIGEgd2lkZSBvciBuYXJyb3cg
Y2hhcmFjdGVyIGMgYW5kIGl0cyBjb2RlLiAgJ1wwJyBpcyBwcmludGVkCisvLyBhcyAiJ1xcMCci
LCBvdGhlciB1bnByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZSBhbHNvIHByb3Blcmx5IGVzY2FwZWQK
Ky8vIHVzaW5nIHRoZSBzdGFuZGFyZCBDKysgZXNjYXBlIHNlcXVlbmNlLiAgVGhlIHRlbXBsYXRl
IGFyZ3VtZW50CisvLyBVbnNpZ25lZENoYXIgaXMgdGhlIHVuc2lnbmVkIHZlcnNpb24gb2YgQ2hh
ciwgd2hpY2ggaXMgdGhlIHR5cGUgb2YgYy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBVbnNpZ25lZENo
YXIsIHR5cGVuYW1lIENoYXI+Cit2b2lkIFByaW50Q2hhckFuZENvZGVUbyhDaGFyIGMsIG9zdHJl
YW0qIG9zKSB7CisgIC8vIEZpcnN0LCBwcmludCBjIGFzIGEgbGl0ZXJhbCBpbiB0aGUgbW9zdCBy
ZWFkYWJsZSBmb3JtIHdlIGNhbiBmaW5kLgorICAqb3MgPDwgKChzaXplb2YoYykgPiAxKSA/ICJM
JyIgOiAiJyIpOworICBjb25zdCBDaGFyRm9ybWF0IGZvcm1hdCA9IFByaW50QXNDaGFyTGl0ZXJh
bFRvPFVuc2lnbmVkQ2hhcj4oYywgb3MpOworICAqb3MgPDwgIiciOworCisgIC8vIFRvIGFpZCB1
c2VyIGRlYnVnZ2luZywgd2UgYWxzbyBwcmludCBjJ3MgY29kZSBpbiBkZWNpbWFsLCB1bmxlc3MK
KyAgLy8gaXQncyAwIChpbiB3aGljaCBjYXNlIGMgd2FzIHByaW50ZWQgYXMgJ1xcMCcsIG1ha2lu
ZyB0aGUgY29kZQorICAvLyBvYnZpb3VzKS4KKyAgaWYgKGMgPT0gMCkKKyAgICByZXR1cm47Cisg
ICpvcyA8PCAiICgiIDw8IHN0YXRpY19jYXN0PGludD4oYyk7CisKKyAgLy8gRm9yIG1vcmUgY29u
dmVuaWVuY2UsIHdlIHByaW50IGMncyBjb2RlIGFnYWluIGluIGhleGFkZWNpbWFsLAorICAvLyB1
bmxlc3MgYyB3YXMgYWxyZWFkeSBwcmludGVkIGluIHRoZSBmb3JtICdceCMjJyBvciB0aGUgY29k
ZSBpcyBpbgorICAvLyBbMSwgOV0uCisgIGlmIChmb3JtYXQgPT0ga0hleEVzY2FwZSB8fCAoMSA8
PSBjICYmIGMgPD0gOSkpIHsKKyAgICAvLyBEbyBub3RoaW5nLgorICB9IGVsc2UgeworICAgICpv
cyA8PCAiLCAweCIgPDwgU3RyaW5nOjpGb3JtYXRIZXhJbnQoc3RhdGljX2Nhc3Q8VW5zaWduZWRD
aGFyPihjKSk7CisgIH0KKyAgKm9zIDw8ICIpIjsKK30KKwordm9pZCBQcmludFRvKHVuc2lnbmVk
IGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hhckFuZENvZGVUbzx1bnNp
Z25lZCBjaGFyPihjLCBvcyk7Cit9Cit2b2lkIFByaW50VG8oc2lnbmVkIGNoYXIgYywgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hhckFuZENvZGVUbzx1bnNpZ25lZCBjaGFyPihjLCBv
cyk7Cit9CisKKy8vIFByaW50cyBhIHdjaGFyX3QgYXMgYSBzeW1ib2wgaWYgaXQgaXMgcHJpbnRh
YmxlIG9yIGFzIGl0cyBpbnRlcm5hbAorLy8gY29kZSBvdGhlcndpc2UgYW5kIGFsc28gYXMgaXRz
IGNvZGUuICBMJ1wwJyBpcyBwcmludGVkIGFzICJMJ1xcMCciLgordm9pZCBQcmludFRvKHdjaGFy
X3Qgd2MsIG9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hhckFuZENvZGVUbzx3Y2hhcl90Pih3Yywg
b3MpOworfQorCisvLyBQcmludHMgdGhlIGdpdmVuIGFycmF5IG9mIGNoYXJhY3RlcnMgdG8gdGhl
IG9zdHJlYW0uICBDaGFyVHlwZSBtdXN0IGJlIGVpdGhlcgorLy8gY2hhciBvciB3Y2hhcl90Lgor
Ly8gVGhlIGFycmF5IHN0YXJ0cyBhdCBiZWdpbiwgdGhlIGxlbmd0aCBpcyBsZW4sIGl0IG1heSBp
bmNsdWRlICdcMCcgY2hhcmFjdGVycworLy8gYW5kIG1heSBub3QgYmUgTlVMLXRlcm1pbmF0ZWQu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJ
WkVfTUVNT1JZXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX0FERFJFU1NfCitHVEVTVF9B
VFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXworc3RhdGljIENoYXJGb3JtYXQgUHJpbnRDaGFy
c0FzU3RyaW5nVG8oCisgICAgY29uc3QgQ2hhclR5cGUqIGJlZ2luLCBzaXplX3QgbGVuLCBvc3Ry
ZWFtKiBvcykgeworICBjb25zdCBjaGFyKiBjb25zdCBrUXVvdGVCZWdpbiA9IHNpemVvZihDaGFy
VHlwZSkgPT0gMSA/ICJcIiIgOiAiTFwiIjsKKyAgKm9zIDw8IGtRdW90ZUJlZ2luOworICBib29s
IGlzX3ByZXZpb3VzX2hleCA9IGZhbHNlOworICBDaGFyRm9ybWF0IHByaW50X2Zvcm1hdCA9IGtB
c0lzOworICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbGVuOyArK2luZGV4KSB7Cisg
ICAgY29uc3QgQ2hhclR5cGUgY3VyID0gYmVnaW5baW5kZXhdOworICAgIGlmIChpc19wcmV2aW91
c19oZXggJiYgSXNYRGlnaXQoY3VyKSkgeworICAgICAgLy8gUHJldmlvdXMgY2hhcmFjdGVyIGlz
IG9mICdceC4uJyBmb3JtIGFuZCB0aGlzIGNoYXJhY3RlciBjYW4gYmUKKyAgICAgIC8vIGludGVy
cHJldGVkIGFzIGFub3RoZXIgaGV4YWRlY2ltYWwgZGlnaXQgaW4gaXRzIG51bWJlci4gQnJlYWsg
c3RyaW5nIHRvCisgICAgICAvLyBkaXNhbWJpZ3VhdGUuCisgICAgICAqb3MgPDwgIlwiICIgPDwg
a1F1b3RlQmVnaW47CisgICAgfQorICAgIGlzX3ByZXZpb3VzX2hleCA9IFByaW50QXNTdHJpbmdM
aXRlcmFsVG8oY3VyLCBvcykgPT0ga0hleEVzY2FwZTsKKyAgICAvLyBSZW1lbWJlciBpZiBhbnkg
Y2hhcmFjdGVycyByZXF1aXJlZCBoZXggZXNjYXBpbmcuCisgICAgaWYgKGlzX3ByZXZpb3VzX2hl
eCkgeworICAgICAgcHJpbnRfZm9ybWF0ID0ga0hleEVzY2FwZTsKKyAgICB9CisgIH0KKyAgKm9z
IDw8ICJcIiI7CisgIHJldHVybiBwcmludF9mb3JtYXQ7Cit9CisKKy8vIFByaW50cyBhIChjb25z
dCkgY2hhci93Y2hhcl90IGFycmF5IG9mICdsZW4nIGVsZW1lbnRzLCBzdGFydGluZyBhdCBhZGRy
ZXNzCisvLyAnYmVnaW4nLiAgQ2hhclR5cGUgbXVzdCBiZSBlaXRoZXIgY2hhciBvciB3Y2hhcl90
LgordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorR1RFU1RfQVRUUklCVVRFX05PX1NBTklU
SVpFX01FTU9SWV8KK0dURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTXworR1RFU1Rf
QVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KK3N0YXRpYyB2b2lkIFVuaXZlcnNhbFByaW50
Q2hhckFycmF5KAorICAgIGNvbnN0IENoYXJUeXBlKiBiZWdpbiwgc2l6ZV90IGxlbiwgb3N0cmVh
bSogb3MpIHsKKyAgLy8gVGhlIGNvZGUKKyAgLy8gICBjb25zdCBjaGFyIGtGb29bXSA9ICJmb28i
OworICAvLyBnZW5lcmF0ZXMgYW4gYXJyYXkgb2YgNCwgbm90IDMsIGVsZW1lbnRzLCB3aXRoIHRo
ZSBsYXN0IG9uZSBiZWluZyAnXDAnLgorICAvLworICAvLyBUaGVyZWZvcmUgd2hlbiBwcmludGlu
ZyBhIGNoYXIgYXJyYXksIHdlIGRvbid0IHByaW50IHRoZSBsYXN0IGVsZW1lbnQgaWYKKyAgLy8g
aXQncyAnXDAnLCBzdWNoIHRoYXQgdGhlIG91dHB1dCBtYXRjaGVzIHRoZSBzdHJpbmcgbGl0ZXJh
bCBhcyBpdCdzCisgIC8vIHdyaXR0ZW4gaW4gdGhlIHNvdXJjZSBjb2RlLgorICBpZiAobGVuID4g
MCAmJiBiZWdpbltsZW4gLSAxXSA9PSAnXDAnKSB7CisgICAgUHJpbnRDaGFyc0FzU3RyaW5nVG8o
YmVnaW4sIGxlbiAtIDEsIG9zKTsKKyAgICByZXR1cm47CisgIH0KKworICAvLyBJZiwgaG93ZXZl
ciwgdGhlIGxhc3QgZWxlbWVudCBpbiB0aGUgYXJyYXkgaXMgbm90ICdcMCcsIGUuZy4KKyAgLy8g
ICAgY29uc3QgY2hhciBrRm9vW10gPSB7ICdmJywgJ28nLCAnbycgfTsKKyAgLy8gd2UgbXVzdCBw
cmludCB0aGUgZW50aXJlIGFycmF5LiAgV2UgYWxzbyBwcmludCBhIG1lc3NhZ2UgdG8gaW5kaWNh
dGUKKyAgLy8gdGhhdCB0aGUgYXJyYXkgaXMgbm90IE5VTC10ZXJtaW5hdGVkLgorICBQcmludENo
YXJzQXNTdHJpbmdUbyhiZWdpbiwgbGVuLCBvcyk7CisgICpvcyA8PCAiIChubyB0ZXJtaW5hdGlu
ZyBOVUwpIjsKK30KKworLy8gUHJpbnRzIGEgKGNvbnN0KSBjaGFyIGFycmF5IG9mICdsZW4nIGVs
ZW1lbnRzLCBzdGFydGluZyBhdCBhZGRyZXNzICdiZWdpbicuCit2b2lkIFVuaXZlcnNhbFByaW50
QXJyYXkoY29uc3QgY2hhciogYmVnaW4sIHNpemVfdCBsZW4sIG9zdHJlYW0qIG9zKSB7CisgIFVu
aXZlcnNhbFByaW50Q2hhckFycmF5KGJlZ2luLCBsZW4sIG9zKTsKK30KKworLy8gUHJpbnRzIGEg
KGNvbnN0KSB3Y2hhcl90IGFycmF5IG9mICdsZW4nIGVsZW1lbnRzLCBzdGFydGluZyBhdCBhZGRy
ZXNzCisvLyAnYmVnaW4nLgordm9pZCBVbml2ZXJzYWxQcmludEFycmF5KGNvbnN0IHdjaGFyX3Qq
IGJlZ2luLCBzaXplX3QgbGVuLCBvc3RyZWFtKiBvcykgeworICBVbml2ZXJzYWxQcmludENoYXJB
cnJheShiZWdpbiwgbGVuLCBvcyk7Cit9CisKKy8vIFByaW50cyB0aGUgZ2l2ZW4gQyBzdHJpbmcg
dG8gdGhlIG9zdHJlYW0uCit2b2lkIFByaW50VG8oY29uc3QgY2hhciogcywgb3N0cmVhbSogb3Mp
IHsKKyAgaWYgKHMgPT0gTlVMTCkgeworICAgICpvcyA8PCAiTlVMTCI7CisgIH0gZWxzZSB7Cisg
ICAgKm9zIDw8IEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMpIDw8ICIgcG9pbnRpbmcgdG8g
IjsKKyAgICBQcmludENoYXJzQXNTdHJpbmdUbyhzLCBzdHJsZW4ocyksIG9zKTsKKyAgfQorfQor
CisvLyBNU1ZDIGNvbXBpbGVyIGNhbiBiZSBjb25maWd1cmVkIHRvIGRlZmluZSB3aGFyX3QgYXMg
YSB0eXBlZGVmCisvLyBvZiB1bnNpZ25lZCBzaG9ydC4gRGVmaW5pbmcgYW4gb3ZlcmxvYWQgZm9y
IGNvbnN0IHdjaGFyX3QqIGluIHRoYXQgY2FzZQorLy8gd291bGQgY2F1c2UgcG9pbnRlcnMgdG8g
dW5zaWduZWQgc2hvcnRzIGJlIHByaW50ZWQgYXMgd2lkZSBzdHJpbmdzLAorLy8gcG9zc2libHkg
YWNjZXNzaW5nIG1vcmUgbWVtb3J5IHRoYW4gaW50ZW5kZWQgYW5kIGNhdXNpbmcgaW52YWxpZAor
Ly8gbWVtb3J5IGFjY2Vzc2VzLiBNU1ZDIGRlZmluZXMgX05BVElWRV9XQ0hBUl9UX0RFRklORUQg
c3ltYm9sIHdoZW4KKy8vIHdjaGFyX3QgaXMgaW1wbGVtZW50ZWQgYXMgYSBuYXRpdmUgdHlwZS4K
KyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5F
RCkKKy8vIFByaW50cyB0aGUgZ2l2ZW4gd2lkZSBDIHN0cmluZyB0byB0aGUgb3N0cmVhbS4KK3Zv
aWQgUHJpbnRUbyhjb25zdCB3Y2hhcl90KiBzLCBvc3RyZWFtKiBvcykgeworICBpZiAocyA9PSBO
VUxMKSB7CisgICAgKm9zIDw8ICJOVUxMIjsKKyAgfSBlbHNlIHsKKyAgICAqb3MgPDwgSW1wbGlj
aXRDYXN0Xzxjb25zdCB2b2lkKj4ocykgPDwgIiBwb2ludGluZyB0byAiOworICAgIFByaW50Q2hh
cnNBc1N0cmluZ1RvKHMsIHN0ZDo6d2NzbGVuKHMpLCBvcyk7CisgIH0KK30KKyNlbmRpZiAgLy8g
d2NoYXJfdCBpcyBuYXRpdmUKKworbmFtZXNwYWNlIHsKKworYm9vbCBDb250YWluc1VucHJpbnRh
YmxlQ29udHJvbENvZGVzKGNvbnN0IGNoYXIqIHN0ciwgc2l6ZV90IGxlbmd0aCkgeworICBjb25z
dCB1bnNpZ25lZCBjaGFyICpzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
ICo+KHN0cik7CisKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAg
IHVuc2lnbmVkIGNoYXIgY2ggPSAqcysrOworICAgIGlmIChzdGQ6OmlzY250cmwoY2gpKSB7Cisg
ICAgICAgIHN3aXRjaCAoY2gpIHsKKyAgICAgICAgY2FzZSAnXHQnOgorICAgICAgICBjYXNlICdc
bic6CisgICAgICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgfQorICB9CisgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBJc1VURjhUcmFpbEJ5dGUodW5zaWduZWQgY2hhciB0KSB7
IHJldHVybiAweDgwIDw9IHQgJiYgdDw9IDB4YmY7IH0KKworYm9vbCBJc1ZhbGlkVVRGOChjb25z
dCBjaGFyKiBzdHIsIHNpemVfdCBsZW5ndGgpIHsKKyAgY29uc3QgdW5zaWduZWQgY2hhciAqcyA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAqPihzdHIpOworCisgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOykgeworICAgIHVuc2lnbmVkIGNoYXIgbGVhZCA9IHNb
aSsrXTsKKworICAgIGlmIChsZWFkIDw9IDB4N2YpIHsKKyAgICAgIGNvbnRpbnVlOyAgLy8gc2lu
Z2xlLWJ5dGUgY2hhcmFjdGVyIChBU0NJSSkgMC4uN0YKKyAgICB9CisgICAgaWYgKGxlYWQgPCAw
eGMyKSB7CisgICAgICByZXR1cm4gZmFsc2U7ICAvLyB0cmFpbCBieXRlIG9yIG5vbi1zaG9ydGVz
dCBmb3JtCisgICAgfSBlbHNlIGlmIChsZWFkIDw9IDB4ZGYgJiYgKGkgKyAxKSA8PSBsZW5ndGgg
JiYgSXNVVEY4VHJhaWxCeXRlKHNbaV0pKSB7CisgICAgICArK2k7ICAvLyAyLWJ5dGUgY2hhcmFj
dGVyCisgICAgfSBlbHNlIGlmICgweGUwIDw9IGxlYWQgJiYgbGVhZCA8PSAweGVmICYmIChpICsg
MikgPD0gbGVuZ3RoICYmCisgICAgICAgICAgICAgICBJc1VURjhUcmFpbEJ5dGUoc1tpXSkgJiYK
KyAgICAgICAgICAgICAgIElzVVRGOFRyYWlsQnl0ZShzW2kgKyAxXSkgJiYKKyAgICAgICAgICAg
ICAgIC8vIGNoZWNrIGZvciBub24tc2hvcnRlc3QgZm9ybSBhbmQgc3Vycm9nYXRlCisgICAgICAg
ICAgICAgICAobGVhZCAhPSAweGUwIHx8IHNbaV0gPj0gMHhhMCkgJiYKKyAgICAgICAgICAgICAg
IChsZWFkICE9IDB4ZWQgfHwgc1tpXSA8IDB4YTApKSB7CisgICAgICBpICs9IDI7ICAvLyAzLWJ5
dGUgY2hhcmFjdGVyCisgICAgfSBlbHNlIGlmICgweGYwIDw9IGxlYWQgJiYgbGVhZCA8PSAweGY0
ICYmIChpICsgMykgPD0gbGVuZ3RoICYmCisgICAgICAgICAgICAgICBJc1VURjhUcmFpbEJ5dGUo
c1tpXSkgJiYKKyAgICAgICAgICAgICAgIElzVVRGOFRyYWlsQnl0ZShzW2kgKyAxXSkgJiYKKyAg
ICAgICAgICAgICAgIElzVVRGOFRyYWlsQnl0ZShzW2kgKyAyXSkgJiYKKyAgICAgICAgICAgICAg
IC8vIGNoZWNrIGZvciBub24tc2hvcnRlc3QgZm9ybQorICAgICAgICAgICAgICAgKGxlYWQgIT0g
MHhmMCB8fCBzW2ldID49IDB4OTApICYmCisgICAgICAgICAgICAgICAobGVhZCAhPSAweGY0IHx8
IHNbaV0gPCAweDkwKSkgeworICAgICAgaSArPSAzOyAgLy8gNC1ieXRlIGNoYXJhY3RlcgorICAg
IH0gZWxzZSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiB0cnVl
OworfQorCit2b2lkIENvbmRpdGlvbmFsUHJpbnRBc1RleHQoY29uc3QgY2hhciogc3RyLCBzaXpl
X3QgbGVuZ3RoLCBvc3RyZWFtKiBvcykgeworICBpZiAoIUNvbnRhaW5zVW5wcmludGFibGVDb250
cm9sQ29kZXMoc3RyLCBsZW5ndGgpICYmCisgICAgICBJc1ZhbGlkVVRGOChzdHIsIGxlbmd0aCkp
IHsKKyAgICAqb3MgPDwgIlxuICAgIEFzIFRleHQ6IFwiIiA8PCBzdHIgPDwgIlwiIjsKKyAgfQor
fQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKKy8vIFByaW50cyBhIDo6c3RyaW5nIG9i
amVjdC4KKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwordm9pZCBQcmludFN0cmluZ1RvKGNv
bnN0IDo6c3RyaW5nJiBzLCBvc3RyZWFtKiBvcykgeworICBpZiAoUHJpbnRDaGFyc0FzU3RyaW5n
VG8ocy5kYXRhKCksIHMuc2l6ZSgpLCBvcykgPT0ga0hleEVzY2FwZSkgeworICAgIGlmIChHVEVT
VF9GTEFHKHByaW50X3V0ZjgpKSB7CisgICAgICBDb25kaXRpb25hbFByaW50QXNUZXh0KHMuZGF0
YSgpLCBzLnNpemUoKSwgb3MpOworICAgIH0KKyAgfQorfQorI2VuZGlmICAvLyBHVEVTVF9IQVNf
R0xPQkFMX1NUUklORworCit2b2lkIFByaW50U3RyaW5nVG8oY29uc3QgOjpzdGQ6OnN0cmluZyYg
cywgb3N0cmVhbSogb3MpIHsKKyAgaWYgKFByaW50Q2hhcnNBc1N0cmluZ1RvKHMuZGF0YSgpLCBz
LnNpemUoKSwgb3MpID09IGtIZXhFc2NhcGUpIHsKKyAgICBpZiAoR1RFU1RfRkxBRyhwcmludF91
dGY4KSkgeworICAgICAgQ29uZGl0aW9uYWxQcmludEFzVGV4dChzLmRhdGEoKSwgcy5zaXplKCks
IG9zKTsKKyAgICB9CisgIH0KK30KKworLy8gUHJpbnRzIGEgOjp3c3RyaW5nIG9iamVjdC4KKyNp
ZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKK3ZvaWQgUHJpbnRXaWRlU3RyaW5nVG8oY29uc3Qg
Ojp3c3RyaW5nJiBzLCBvc3RyZWFtKiBvcykgeworICBQcmludENoYXJzQXNTdHJpbmdUbyhzLmRh
dGEoKSwgcy5zaXplKCksIG9zKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9XU1RS
SU5HCisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKK3ZvaWQgUHJpbnRXaWRlU3RyaW5nVG8o
Y29uc3QgOjpzdGQ6OndzdHJpbmcmIHMsIG9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hhcnNBc1N0
cmluZ1RvKHMuZGF0YSgpLCBzLnNpemUoKSwgb3MpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNf
U1REX1dTVFJJTkcKKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKK30gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3Qt
dGVzdC1wYXJ0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXRlc3QtcGFy
dC5jYwppbmRleCA1ZDE4M2E0NDZmMjk0Y2U5ZTFhODU4N2M4YjkxMjBhOWJlYzg4N2RkLi5jODg4
NjBkOTIzODU2MTllYTY3NjQ4ODQ1ODM5ZDE0NTgzZjExMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10ZXN0LXBhcnQuY2MKQEAgLTI2LDIxICsyNiwxMiBAQAog
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcjogbWhldWxlQGdvb2dsZS5jb20gKE1hcmt1cyBIZXVsZSkKLS8vCi0vLyBUaGUgR29vZ2xl
IEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAKLSNpbmNsdWRlIDxndGVzdC9n
dGVzdC10ZXN0LXBhcnQuaD4KKy8vCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2Nr
aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAKLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJh
bnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9u
LiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVk
ZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8K
LS8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRl
cm5hbC1pbmwuaCBpbgotLy8gaGlzIGNvZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9O
XyAxCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgiCiAjaW5jbHVkZSAic3JjL2d0
ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwogCiBuYW1l
c3BhY2UgdGVzdGluZyB7CiAKQEAgLTQ4LDEwICszOSwxMCBAQCB1c2luZyBpbnRlcm5hbDo6R2V0
VW5pdFRlc3RJbXBsOwogCiAvLyBHZXRzIHRoZSBzdW1tYXJ5IG9mIHRoZSBmYWlsdXJlIG1lc3Nh
Z2UgYnkgb21pdHRpbmcgdGhlIHN0YWNrIHRyYWNlCiAvLyBpbiBpdC4KLWludGVybmFsOjpTdHJp
bmcgVGVzdFBhcnRSZXN1bHQ6OkV4dHJhY3RTdW1tYXJ5KGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsK
K3N0ZDo6c3RyaW5nIFRlc3RQYXJ0UmVzdWx0OjpFeHRyYWN0U3VtbWFyeShjb25zdCBjaGFyKiBt
ZXNzYWdlKSB7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IHN0YWNrX3RyYWNlID0gc3Ryc3RyKG1lc3Nh
Z2UsIGludGVybmFsOjprU3RhY2tUcmFjZU1hcmtlcik7Ci0gIHJldHVybiBzdGFja190cmFjZSA9
PSBOVUxMID8gaW50ZXJuYWw6OlN0cmluZyhtZXNzYWdlKSA6Ci0gICAgICBpbnRlcm5hbDo6U3Ry
aW5nKG1lc3NhZ2UsIHN0YWNrX3RyYWNlIC0gbWVzc2FnZSk7CisgIHJldHVybiBzdGFja190cmFj
ZSA9PSBOVUxMID8gbWVzc2FnZSA6CisgICAgICBzdGQ6OnN0cmluZyhtZXNzYWdlLCBzdGFja190
cmFjZSk7CiB9CiAKIC8vIFByaW50cyBhIFRlc3RQYXJ0UmVzdWx0IG9iamVjdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10eXBlZC10ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKaW5kZXggM2NjNGI1
ZGUyYWFjYjc1OTg5MTE5YzVmOTZjN2Y0ZjgwZWFkNWNhZS4uMWRjMmFkMzhiYWI5OGJjMTQ2YzE2
MTU4YTQ3ZGExZTM5NGJmMzg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3Jj
L2d0ZXN0LXR5cGVkLXRlc3QuY2MKQEAgLTI2LDExICsyNiwxMSBAQAogLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAog
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbikKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXR5cGVkLXRlc3Qu
aD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtdHlw
ZWQtdGVzdC5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogbmFtZXNwYWNlIHRlc3Rp
bmcgewogbmFtZXNwYWNlIGludGVybmFsIHsKQEAgLTQwLDM4ICs0MCw0NiBAQCBuYW1lc3BhY2Ug
aW50ZXJuYWwgewogLy8gU2tpcHMgdG8gdGhlIGZpcnN0IG5vbi1zcGFjZSBjaGFyIGluIHN0ci4g
UmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgc3RyCiAvLyBjb250YWlucyBvbmx5IHdoaXRlc3Bh
Y2UgY2hhcmFjdGVycy4KIHN0YXRpYyBjb25zdCBjaGFyKiBTa2lwU3BhY2VzKGNvbnN0IGNoYXIq
IHN0cikgewotICB3aGlsZSAoaXNzcGFjZSgqc3RyKSkKKyAgd2hpbGUgKElzU3BhY2UoKnN0cikp
CiAgICAgc3RyKys7CiAgIHJldHVybiBzdHI7CiB9CiAKK3N0YXRpYyBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gU3BsaXRJbnRvVGVzdE5hbWVzKGNvbnN0IGNoYXIqIHNyYykgeworICBzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4gbmFtZV92ZWM7CisgIHNyYyA9IFNraXBTcGFjZXMoc3JjKTsKKyAg
Zm9yICg7IHNyYyAhPSBOVUxMOyBzcmMgPSBTa2lwQ29tbWEoc3JjKSkgeworICAgIG5hbWVfdmVj
LnB1c2hfYmFjayhTdHJpcFRyYWlsaW5nU3BhY2VzKEdldFByZWZpeFVudGlsQ29tbWEoc3JjKSkp
OworICB9CisgIHJldHVybiBuYW1lX3ZlYzsKK30KKwogLy8gVmVyaWZpZXMgdGhhdCByZWdpc3Rl
cmVkX3Rlc3RzIG1hdGNoIHRoZSB0ZXN0IG5hbWVzIGluCi0vLyBkZWZpbmVkX3Rlc3RfbmFtZXNf
OyByZXR1cm5zIHJlZ2lzdGVyZWRfdGVzdHMgaWYgc3VjY2Vzc2Z1bCwgb3IKKy8vIHJlZ2lzdGVy
ZWRfdGVzdHNfOyByZXR1cm5zIHJlZ2lzdGVyZWRfdGVzdHMgaWYgc3VjY2Vzc2Z1bCwgb3IKIC8v
IGFib3J0cyB0aGUgcHJvZ3JhbSBvdGhlcndpc2UuCiBjb25zdCBjaGFyKiBUeXBlZFRlc3RDYXNl
UFN0YXRlOjpWZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVzKAogICAgIGNvbnN0IGNoYXIqIGZpbGUs
IGludCBsaW5lLCBjb25zdCBjaGFyKiByZWdpc3RlcmVkX3Rlc3RzKSB7Ci0gIHR5cGVkZWYgOjpz
dGQ6OnNldDxjb25zdCBjaGFyKj46OmNvbnN0X2l0ZXJhdG9yIERlZmluZWRUZXN0SXRlcjsKKyAg
dHlwZWRlZiBSZWdpc3RlcmVkVGVzdHNNYXA6OmNvbnN0X2l0ZXJhdG9yIFJlZ2lzdGVyZWRUZXN0
SXRlcjsKICAgcmVnaXN0ZXJlZF8gPSB0cnVlOwogCi0gIC8vIFNraXAgaW5pdGlhbCB3aGl0ZXNw
YWNlIGluIHJlZ2lzdGVyZWRfdGVzdHMgc2luY2Ugc29tZQotICAvLyBwcmVwcm9jZXNzb3JzIHBy
ZWZpeCBzdHJpbmdpemllZCBsaXRlcmFscyB3aXRoIHdoaXRlc3BhY2UuCi0gIHJlZ2lzdGVyZWRf
dGVzdHMgPSBTa2lwU3BhY2VzKHJlZ2lzdGVyZWRfdGVzdHMpOworICBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gbmFtZV92ZWMgPSBTcGxpdEludG9UZXN0TmFtZXMocmVnaXN0ZXJlZF90ZXN0cyk7
CiAKICAgTWVzc2FnZSBlcnJvcnM7Ci0gIDo6c3RkOjpzZXQ8U3RyaW5nPiB0ZXN0czsKLSAgZm9y
IChjb25zdCBjaGFyKiBuYW1lcyA9IHJlZ2lzdGVyZWRfdGVzdHM7IG5hbWVzICE9IE5VTEw7Ci0g
ICAgICAgbmFtZXMgPSBTa2lwQ29tbWEobmFtZXMpKSB7Ci0gICAgY29uc3QgU3RyaW5nIG5hbWUg
PSBHZXRQcmVmaXhVbnRpbENvbW1hKG5hbWVzKTsKKworICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4g
dGVzdHM7CisgIGZvciAoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBu
YW1lX2l0ID0gbmFtZV92ZWMuYmVnaW4oKTsKKyAgICAgICBuYW1lX2l0ICE9IG5hbWVfdmVjLmVu
ZCgpOyArK25hbWVfaXQpIHsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSA9ICpuYW1lX2l0
OwogICAgIGlmICh0ZXN0cy5jb3VudChuYW1lKSAhPSAwKSB7CiAgICAgICBlcnJvcnMgPDwgIlRl
c3QgIiA8PCBuYW1lIDw8ICIgaXMgbGlzdGVkIG1vcmUgdGhhbiBvbmNlLlxuIjsKICAgICAgIGNv
bnRpbnVlOwogICAgIH0KIAogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICBmb3IgKERlZmlu
ZWRUZXN0SXRlciBpdCA9IGRlZmluZWRfdGVzdF9uYW1lc18uYmVnaW4oKTsKLSAgICAgICAgIGl0
ICE9IGRlZmluZWRfdGVzdF9uYW1lc18uZW5kKCk7CisgICAgZm9yIChSZWdpc3RlcmVkVGVzdEl0
ZXIgaXQgPSByZWdpc3RlcmVkX3Rlc3RzXy5iZWdpbigpOworICAgICAgICAgaXQgIT0gcmVnaXN0
ZXJlZF90ZXN0c18uZW5kKCk7CiAgICAgICAgICArK2l0KSB7Ci0gICAgICBpZiAobmFtZSA9PSAq
aXQpIHsKKyAgICAgIGlmIChuYW1lID09IGl0LT5maXJzdCkgewogICAgICAgICBmb3VuZCA9IHRy
dWU7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQpAQCAtODUsMTUgKzkzLDE1IEBAIGNvbnN0IGNo
YXIqIFR5cGVkVGVzdENhc2VQU3RhdGU6OlZlcmlmeVJlZ2lzdGVyZWRUZXN0TmFtZXMoCiAgICAg
fQogICB9CiAKLSAgZm9yIChEZWZpbmVkVGVzdEl0ZXIgaXQgPSBkZWZpbmVkX3Rlc3RfbmFtZXNf
LmJlZ2luKCk7Ci0gICAgICAgaXQgIT0gZGVmaW5lZF90ZXN0X25hbWVzXy5lbmQoKTsKKyAgZm9y
IChSZWdpc3RlcmVkVGVzdEl0ZXIgaXQgPSByZWdpc3RlcmVkX3Rlc3RzXy5iZWdpbigpOworICAg
ICAgIGl0ICE9IHJlZ2lzdGVyZWRfdGVzdHNfLmVuZCgpOwogICAgICAgICsraXQpIHsKLSAgICBp
ZiAodGVzdHMuY291bnQoKml0KSA9PSAwKSB7Ci0gICAgICBlcnJvcnMgPDwgIllvdSBmb3Jnb3Qg
dG8gbGlzdCB0ZXN0ICIgPDwgKml0IDw8ICIuXG4iOworICAgIGlmICh0ZXN0cy5jb3VudChpdC0+
Zmlyc3QpID09IDApIHsKKyAgICAgIGVycm9ycyA8PCAiWW91IGZvcmdvdCB0byBsaXN0IHRlc3Qg
IiA8PCBpdC0+Zmlyc3QgPDwgIi5cbiI7CiAgICAgfQogICB9CiAKLSAgY29uc3QgU3RyaW5nJiBl
cnJvcnNfc3RyID0gZXJyb3JzLkdldFN0cmluZygpOworICBjb25zdCBzdGQ6OnN0cmluZyYgZXJy
b3JzX3N0ciA9IGVycm9ycy5HZXRTdHJpbmcoKTsKICAgaWYgKGVycm9yc19zdHIgIT0gIiIpIHsK
ICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzICVzIiwgRm9ybWF0RmlsZUxvY2F0aW9uKGZpbGUsIGxp
bmUpLmNfc3RyKCksCiAgICAgICAgICAgICBlcnJvcnNfc3RyLmNfc3RyKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc3JjL2d0ZXN0LmNjCmluZGV4IDViODcxYzBhZGIwYTFjNGNmYTIzNzU1NDA1N2Q1
MTYwODQ2MTk1MGUuLjk3OTY2Mzc3NDlhN2FkYTk0MDNkNmFkOGQ2NWMyYTY2NzU1ZDQxNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QuY2MKQEAgLTI2LDExMiArMjYsMTMxIEBACiAv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKIC8vCi0vLyBB
dXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGhlIEdvb2dsZSBD
KysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gVGhlIEdvb2dsZSBDKysgVGVz
dGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGkuaD4KKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRl
IDxtYXRoLmg+CiAjaW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNs
dWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CiAjaW5jbHVkZSA8d2NoYXIuaD4KICNp
bmNsdWRlIDx3Y3R5cGUuaD4KIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxvc3Ry
ZWFtPgorI2luY2x1ZGUgPGlvbWFuaXA+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPGxp
c3Q+CisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPG9zdHJlYW0+ICAvLyBOT0xJTlQKICNpbmNs
dWRlIDxzc3RyZWFtPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2lmIEdURVNUX09TX0xJTlVYCiAK
LS8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBVc2UgYXV0b2NvbmYgdG8gZGV0ZWN0IGF2YWls
YWJpbGl0eSBvZgorLy8gRklYTUU6IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZhaWxhYmlsaXR5
IG9mCiAvLyBnZXR0aW1lb2ZkYXkoKS4KLSNkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8g
MQorIyBkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQogCi0jaW5jbHVkZSA8ZmNudGwu
aD4KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxzY2hlZC5oPgorIyBpbmNsdWRlIDxm
Y250bC5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPGxpbWl0cy5oPiAgLy8gTk9MSU5UCisjIGlu
Y2x1ZGUgPHNjaGVkLmg+ICAvLyBOT0xJTlQKIC8vIERlY2xhcmVzIHZzbnByaW50ZigpLiAgVGhp
cyBoZWFkZXIgaXMgbm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgotI2luY2x1ZGUgPHN0cmluZ3Mu
aD4KLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0jaW5jbHVk
ZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KKyMgaW5j
bHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy9tbWFuLmg+ICAvLyBO
T0xJTlQKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDx1bmlz
dGQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxzdHJpbmc+CiAKICNlbGlmIEdURVNUX09TX1NZ
TUJJQU4KLSNkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQotI2luY2x1ZGUgPHN5cy90
aW1lLmg+ICAvLyBOT0xJTlQKKyMgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKKyMg
aW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAogCiAjZWxpZiBHVEVTVF9PU19aT1MKLSNk
ZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQotI2luY2x1ZGUgPHN5cy90aW1lLmg+ICAv
LyBOT0xJTlQKKyMgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKKyMgaW5jbHVkZSA8
c3lzL3RpbWUuaD4gIC8vIE5PTElOVAogCiAvLyBPbiB6L09TIHdlIGFkZGl0aW9uYWxseSBuZWVk
IHN0cmluZ3MuaCBmb3Igc3RyY2FzZWNtcC4KLSNpbmNsdWRlIDxzdHJpbmdzLmg+ICAvLyBOT0xJ
TlQKKyMgaW5jbHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5UCiAKICNlbGlmIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFICAvLyBXZSBhcmUgb24gV2luZG93cyBDRS4KIAotI2luY2x1ZGUgPHdpbmRv
d3MuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBOT0xJTlQKKyMgdW5k
ZWYgbWluCiAKICNlbGlmIEdURVNUX09TX1dJTkRPV1MgIC8vIFdlIGFyZSBvbiBXaW5kb3dzIHBy
b3Blci4KIAotI2luY2x1ZGUgPGlvLmg+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDxzeXMvdGltZWIu
aD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPiAgLy8gTk9MSU5UCi0jaW5jbHVk
ZSA8c3lzL3N0YXQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxpby5oPiAgLy8gTk9MSU5UCisj
IGluY2x1ZGUgPHN5cy90aW1lYi5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy90eXBlcy5o
PiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+ICAvLyBOT0xJTlQKIAotI2lmIEdU
RVNUX09TX1dJTkRPV1NfTUlOR1cKKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NSU5HVwogLy8gTWlu
R1cgaGFzIGdldHRpbWVvZmRheSgpIGJ1dCBub3QgX2Z0aW1lNjQoKS4KLS8vIFRPRE8oa2VudG9u
QGdvb2dsZS5jb20pOiBVc2UgYXV0b2NvbmYgdG8gZGV0ZWN0IGF2YWlsYWJpbGl0eSBvZgorLy8g
RklYTUU6IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZhaWxhYmlsaXR5IG9mCiAvLyAgIGdldHRp
bWVvZmRheSgpLgotLy8gVE9ETyhrZW50b25AZ29vZ2xlLmNvbSk6IFRoZXJlIGFyZSBvdGhlciB3
YXlzIHRvIGdldCB0aGUgdGltZSBvbgorLy8gRklYTUU6IFRoZXJlIGFyZSBvdGhlciB3YXlzIHRv
IGdldCB0aGUgdGltZSBvbgogLy8gICBXaW5kb3dzLCBsaWtlIEdldFRpY2tDb3VudCgpIG9yIEdl
dFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCkuICBNaW5HVwogLy8gICBzdXBwb3J0cyB0aGVzZS4gIGNv
bnNpZGVyIHVzaW5nIHRoZW0gaW5zdGVhZC4KLSNkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRB
WV8gMQotI2luY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gR1RFU1Rf
T1NfV0lORE9XU19NSU5HVworIyAgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKKyMg
IGluY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1NfTUlOR1cKIAogLy8gY3BwbGludCB0aGlua3MgdGhhdCB0aGUgaGVhZGVyIGlzIGFscmVh
ZHkgaW5jbHVkZWQsIHNvIHdlIHdhbnQgdG8KIC8vIHNpbGVuY2UgaXQuCi0jaW5jbHVkZSA8d2lu
ZG93cy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAorIyB1
bmRlZiBtaW4KIAogI2Vsc2UKIAogLy8gQXNzdW1lIG90aGVyIHBsYXRmb3JtcyBoYXZlIGdldHRp
bWVvZmRheSgpLgotLy8gVE9ETyhrZW50b25AZ29vZ2xlLmNvbSk6IFVzZSBhdXRvY29uZiB0byBk
ZXRlY3QgYXZhaWxhYmlsaXR5IG9mCisvLyBGSVhNRTogVXNlIGF1dG9jb25mIHRvIGRldGVjdCBh
dmFpbGFiaWxpdHkgb2YKIC8vICAgZ2V0dGltZW9mZGF5KCkuCi0jZGVmaW5lIEdURVNUX0hBU19H
RVRUSU1FT0ZEQVlfIDEKKyMgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKIAogLy8g
Y3BwbGludCB0aGlua3MgdGhhdCB0aGUgaGVhZGVyIGlzIGFscmVhZHkgaW5jbHVkZWQsIHNvIHdl
IHdhbnQgdG8KIC8vIHNpbGVuY2UgaXQuCi0jaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElO
VAotI2luY2x1ZGUgPHVuaXN0ZC5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy90aW1lLmg+
ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8dW5pc3RkLmg+ICAvLyBOT0xJTlQKIAogI2VuZGlmICAv
LyBHVEVTVF9PU19MSU5VWAogCiAjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLSNpbmNsdWRlIDxz
dGRleGNlcHQ+CisjIGluY2x1ZGUgPHN0ZGV4Y2VwdD4KKyNlbmRpZgorCisjaWYgR1RFU1RfQ0FO
X1NUUkVBTV9SRVNVTFRTXworIyBpbmNsdWRlIDxhcnBhL2luZXQuaD4gIC8vIE5PTElOVAorIyBp
bmNsdWRlIDxuZXRkYi5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy9zb2NrZXQuaD4gIC8v
IE5PTElOVAorIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4gIC8vIE5PTElOVAogI2VuZGlmCiAKLS8v
IEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBU
ZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRl
cm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBl
cnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRh
bGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8gaGlzIGNvZGUuCi0jZGVm
aW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCiAjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFs
LWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwogCiAjaWYgR1RFU1RfT1NfV0lO
RE9XUwotI2RlZmluZSB2c25wcmludGYgX3ZzbnByaW50ZgorIyBkZWZpbmUgdnNucHJpbnRmIF92
c25wcmludGYKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCisjaWYgR1RFU1RfT1NfTUFD
CisjaWZuZGVmIEdURVNUX09TX0lPUworI2luY2x1ZGUgPGNydF9leHRlcm5zLmg+CisjZW5kaWYK
KyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX0FCU0wKKyNpbmNsdWRlICJhYnNsL2RlYnVnZ2luZy9m
YWlsdXJlX3NpZ25hbF9oYW5kbGVyLmgiCisjaW5jbHVkZSAiYWJzbC9kZWJ1Z2dpbmcvc3RhY2t0
cmFjZS5oIgorI2luY2x1ZGUgImFic2wvZGVidWdnaW5nL3N5bWJvbGl6ZS5oIgorI2luY2x1ZGUg
ImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCisKIG5h
bWVzcGFjZSB0ZXN0aW5nIHsKIAogdXNpbmcgaW50ZXJuYWw6OkNvdW50SWY7CkBAIC0xNTMsOCAr
MTcyLDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RDYXNlRmlsdGVyW10gPSAiKkRl
YXRoVGVzdDoqRGVhdGhUZXN0LyoiOwogLy8gQSB0ZXN0IGZpbHRlciB0aGF0IG1hdGNoZXMgZXZl
cnl0aGluZy4KIHN0YXRpYyBjb25zdCBjaGFyIGtVbml2ZXJzYWxGaWx0ZXJbXSA9ICIqIjsKIAot
Ly8gVGhlIGRlZmF1bHQgb3V0cHV0IGZpbGUgZm9yIFhNTCBvdXRwdXQuCi1zdGF0aWMgY29uc3Qg
Y2hhciBrRGVmYXVsdE91dHB1dEZpbGVbXSA9ICJ0ZXN0X2RldGFpbC54bWwiOworLy8gVGhlIGRl
ZmF1bHQgb3V0cHV0IGZvcm1hdC4KK3N0YXRpYyBjb25zdCBjaGFyIGtEZWZhdWx0T3V0cHV0Rm9y
bWF0W10gPSAieG1sIjsKKy8vIFRoZSBkZWZhdWx0IG91dHB1dCBmaWxlLgorc3RhdGljIGNvbnN0
IGNoYXIga0RlZmF1bHRPdXRwdXRGaWxlW10gPSAidGVzdF9kZXRhaWwiOwogCiAvLyBUaGUgZW52
aXJvbm1lbnQgdmFyaWFibGUgbmFtZSBmb3IgdGhlIHRlc3Qgc2hhcmQgaW5kZXguCiBzdGF0aWMg
Y29uc3QgY2hhciBrVGVzdFNoYXJkSW5kZXhbXSA9ICJHVEVTVF9TSEFSRF9JTkRFWCI7CkBAIC0x
NzMsOCArMTk0LDM0IEBAIGNvbnN0IGNoYXIga1N0YWNrVHJhY2VNYXJrZXJbXSA9ICJcblN0YWNr
IHRyYWNlOlxuIjsKIC8vIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLgogYm9vbCBnX2hl
bHBfZmxhZyA9IGZhbHNlOwogCisvLyBVdGlsdHkgZnVuY3Rpb24gdG8gT3BlbiBGaWxlIGZvciBX
cml0aW5nCitzdGF0aWMgRklMRSogT3BlbkZpbGVGb3JXcml0aW5nKGNvbnN0IHN0ZDo6c3RyaW5n
JiBvdXRwdXRfZmlsZSkgeworICBGSUxFKiBmaWxlb3V0ID0gTlVMTDsKKyAgRmlsZVBhdGggb3V0
cHV0X2ZpbGVfcGF0aChvdXRwdXRfZmlsZSk7CisgIEZpbGVQYXRoIG91dHB1dF9kaXIob3V0cHV0
X2ZpbGVfcGF0aC5SZW1vdmVGaWxlTmFtZSgpKTsKKworICBpZiAob3V0cHV0X2Rpci5DcmVhdGVE
aXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpIHsKKyAgICBmaWxlb3V0ID0gcG9zaXg6OkZPcGVuKG91
dHB1dF9maWxlLmNfc3RyKCksICJ3Iik7CisgIH0KKyAgaWYgKGZpbGVvdXQgPT0gTlVMTCkgewor
ICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICJVbmFibGUgdG8gb3BlbiBmaWxlIFwiIiA8PCBvdXRw
dXRfZmlsZSA8PCAiXCIiOworICB9CisgIHJldHVybiBmaWxlb3V0OworfQorCiB9ICAvLyBuYW1l
c3BhY2UgaW50ZXJuYWwKIAorLy8gQmF6ZWwgcGFzc2VzIGluIHRoZSBhcmd1bWVudCB0byAnLS10
ZXN0X2ZpbHRlcicgdmlhIHRoZSBURVNUQlJJREdFX1RFU1RfT05MWQorLy8gZW52aXJvbm1lbnQg
dmFyaWFibGUuCitzdGF0aWMgY29uc3QgY2hhciogR2V0RGVmYXVsdEZpbHRlcigpIHsKKyAgY29u
c3QgY2hhciogY29uc3QgdGVzdGJyaWRnZV90ZXN0X29ubHkgPQorICAgICAgaW50ZXJuYWw6OnBv
c2l4OjpHZXRFbnYoIlRFU1RCUklER0VfVEVTVF9PTkxZIik7CisgIGlmICh0ZXN0YnJpZGdlX3Rl
c3Rfb25seSAhPSBOVUxMKSB7CisgICAgcmV0dXJuIHRlc3RicmlkZ2VfdGVzdF9vbmx5OworICB9
CisgIHJldHVybiBrVW5pdmVyc2FsRmlsdGVyOworfQorCiBHVEVTVF9ERUZJTkVfYm9vbF8oCiAg
ICAgYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMsCiAgICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RF
bnYoImFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIiwgZmFsc2UpLApAQCAtMTg3LDcgKzIzNCw3IEBA
IEdURVNUX0RFRklORV9ib29sXygKIAogR1RFU1RfREVGSU5FX2Jvb2xfKAogICAgIGNhdGNoX2V4
Y2VwdGlvbnMsCi0gICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RFbnYoImNhdGNoX2V4Y2VwdGlv
bnMiLCBmYWxzZSksCisgICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RFbnYoImNhdGNoX2V4Y2Vw
dGlvbnMiLCB0cnVlKSwKICAgICAiVHJ1ZSBpZmYgIiBHVEVTVF9OQU1FXwogICAgICIgc2hvdWxk
IGNhdGNoIGV4Y2VwdGlvbnMgYW5kIHRyZWF0IHRoZW0gYXMgdGVzdCBmYWlsdXJlcy4iKTsKIApA
QCAtMTk3LDI2ICsyNDQsMzkgQEAgR1RFU1RfREVGSU5FX3N0cmluZ18oCiAgICAgIldoZXRoZXIg
dG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0LiAgVmFsaWQgdmFsdWVzOiB5ZXMsIG5vLCAiCiAg
ICAgImFuZCBhdXRvLiAgJ2F1dG8nIG1lYW5zIHRvIHVzZSBjb2xvcnMgaWYgdGhlIG91dHB1dCBp
cyAiCiAgICAgImJlaW5nIHNlbnQgdG8gYSB0ZXJtaW5hbCBhbmQgdGhlIFRFUk0gZW52aXJvbm1l
bnQgdmFyaWFibGUgIgotICAgICJpcyBzZXQgdG8geHRlcm0sIHh0ZXJtLWNvbG9yLCB4dGVybS0y
NTZjb2xvciwgbGludXggb3IgY3lnd2luLiIpOworICAgICJpcyBzZXQgdG8gYSB0ZXJtaW5hbCB0
eXBlIHRoYXQgc3VwcG9ydHMgY29sb3JzLiIpOwogCiBHVEVTVF9ERUZJTkVfc3RyaW5nXygKICAg
ICBmaWx0ZXIsCi0gICAgaW50ZXJuYWw6OlN0cmluZ0Zyb21HVGVzdEVudigiZmlsdGVyIiwga1Vu
aXZlcnNhbEZpbHRlciksCisgICAgaW50ZXJuYWw6OlN0cmluZ0Zyb21HVGVzdEVudigiZmlsdGVy
IiwgR2V0RGVmYXVsdEZpbHRlcigpKSwKICAgICAiQSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBn
bG9iIChub3QgcmVnZXgpIHBhdHRlcm5zICIKICAgICAiZm9yIGZpbHRlcmluZyB0aGUgdGVzdHMg
dG8gcnVuLCBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgIgogICAgICInLScgYW5kIGEgOiBzZXBh
cmF0ZWQgbGlzdCBvZiBuZWdhdGl2ZSBwYXR0ZXJucyAodGVzdHMgdG8gIgogICAgICJleGNsdWRl
KS4gIEEgdGVzdCBpcyBydW4gaWYgaXQgbWF0Y2hlcyBvbmUgb2YgdGhlIHBvc2l0aXZlICIKICAg
ICAicGF0dGVybnMgYW5kIGRvZXMgbm90IG1hdGNoIGFueSBvZiB0aGUgbmVnYXRpdmUgcGF0dGVy
bnMuIik7CiAKK0dURVNUX0RFRklORV9ib29sXygKKyAgICBpbnN0YWxsX2ZhaWx1cmVfc2lnbmFs
X2hhbmRsZXIsCisgICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RFbnYoImluc3RhbGxfZmFpbHVy
ZV9zaWduYWxfaGFuZGxlciIsIGZhbHNlKSwKKyAgICAiSWYgdHJ1ZSBhbmQgc3VwcG9ydGVkIG9u
IHRoZSBjdXJyZW50IHBsYXRmb3JtLCAiIEdURVNUX05BTUVfICIgc2hvdWxkICIKKyAgICAiaW5z
dGFsbCBhIHNpZ25hbCBoYW5kbGVyIHRoYXQgZHVtcHMgZGVidWdnaW5nIGluZm9ybWF0aW9uIHdo
ZW4gZmF0YWwgIgorICAgICJzaWduYWxzIGFyZSByYWlzZWQuIik7CisKIEdURVNUX0RFRklORV9i
b29sXyhsaXN0X3Rlc3RzLCBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAiTGlzdCBhbGwgdGVz
dHMgd2l0aG91dCBydW5uaW5nIHRoZW0uIik7CiAKKy8vIFRoZSBuZXQgcHJpb3JpdHkgb3JkZXIg
YWZ0ZXIgZmxhZyBwcm9jZXNzaW5nIGlzIHRodXM6CisvLyAgIC0tZ3Rlc3Rfb3V0cHV0IGNvbW1h
bmQgbGluZSBmbGFnCisvLyAgIEdURVNUX09VVFBVVCBlbnZpcm9ubWVudCB2YXJpYWJsZQorLy8g
ICBYTUxfT1VUUFVUX0ZJTEUgZW52aXJvbm1lbnQgdmFyaWFibGUKKy8vICAgJycKIEdURVNUX0RF
RklORV9zdHJpbmdfKAogICAgIG91dHB1dCwKLSAgICBpbnRlcm5hbDo6U3RyaW5nRnJvbUdUZXN0
RW52KCJvdXRwdXQiLCAiIiksCi0gICAgIkEgZm9ybWF0IChjdXJyZW50bHkgbXVzdCBiZSBcInht
bFwiKSwgb3B0aW9uYWxseSBmb2xsb3dlZCAiCi0gICAgImJ5IGEgY29sb24gYW5kIGFuIG91dHB1
dCBmaWxlIG5hbWUgb3IgZGlyZWN0b3J5LiBBIGRpcmVjdG9yeSAiCi0gICAgImlzIGluZGljYXRl
ZCBieSBhIHRyYWlsaW5nIHBhdGhuYW1lIHNlcGFyYXRvci4gIgorICAgIGludGVybmFsOjpTdHJp
bmdGcm9tR1Rlc3RFbnYoIm91dHB1dCIsCisgICAgICBpbnRlcm5hbDo6T3V0cHV0RmxhZ0Fsc29D
aGVja0VudlZhcigpLmNfc3RyKCkpLAorICAgICJBIGZvcm1hdCAoZGVmYXVsdHMgdG8gXCJ4bWxc
IiBidXQgY2FuIGJlIHNwZWNpZmllZCB0byBiZSBcImpzb25cIiksICIKKyAgICAib3B0aW9uYWxs
eSBmb2xsb3dlZCBieSBhIGNvbG9uIGFuZCBhbiBvdXRwdXQgZmlsZSBuYW1lIG9yIGRpcmVjdG9y
eS4gIgorICAgICJBIGRpcmVjdG9yeSBpcyBpbmRpY2F0ZWQgYnkgYSB0cmFpbGluZyBwYXRobmFt
ZSBzZXBhcmF0b3IuICIKICAgICAiRXhhbXBsZXM6IFwieG1sOmZpbGVuYW1lLnhtbFwiLCBcInht
bDo6ZGlyZWN0b3J5bmFtZS9cIi4gIgogICAgICJJZiBhIGRpcmVjdG9yeSBpcyBzcGVjaWZpZWQs
IG91dHB1dCBmaWxlcyB3aWxsIGJlIGNyZWF0ZWQgIgogICAgICJ3aXRoaW4gdGhhdCBkaXJlY3Rv
cnksIHdpdGggZmlsZS1uYW1lcyBiYXNlZCBvbiB0aGUgdGVzdCAiCkBAIC0yMjksNiArMjg5LDEy
IEBAIEdURVNUX0RFRklORV9ib29sXygKICAgICAiVHJ1ZSBpZmYgIiBHVEVTVF9OQU1FXwogICAg
ICIgc2hvdWxkIGRpc3BsYXkgZWxhcHNlZCB0aW1lIGluIHRleHQgb3V0cHV0LiIpOwogCitHVEVT
VF9ERUZJTkVfYm9vbF8oCisgICAgcHJpbnRfdXRmOCwKKyAgICBpbnRlcm5hbDo6Qm9vbEZyb21H
VGVzdEVudigicHJpbnRfdXRmOCIsIHRydWUpLAorICAgICJUcnVlIGlmZiAiIEdURVNUX05BTUVf
CisgICAgIiBwcmludHMgVVRGOCBjaGFyYWN0ZXJzIGFzIHRleHQuIik7CisKIEdURVNUX0RFRklO
RV9pbnQzMl8oCiAgICAgcmFuZG9tX3NlZWQsCiAgICAgaW50ZXJuYWw6OkludDMyRnJvbUdUZXN0
RW52KCJyYW5kb21fc2VlZCIsIDApLApAQCAtMjU4LDEyICszMjQsMjYgQEAgR1RFU1RfREVGSU5F
X2ludDMyXygKICAgICAiVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBwcmlu
dCB3aGVuIGFuICIKICAgICAiYXNzZXJ0aW9uIGZhaWxzLiAgVGhlIHZhbGlkIHJhbmdlIGlzIDAg
dGhyb3VnaCAxMDAsIGluY2x1c2l2ZS4iKTsKIAorR1RFU1RfREVGSU5FX3N0cmluZ18oCisgICAg
c3RyZWFtX3Jlc3VsdF90bywKKyAgICBpbnRlcm5hbDo6U3RyaW5nRnJvbUdUZXN0RW52KCJzdHJl
YW1fcmVzdWx0X3RvIiwgIiIpLAorICAgICJUaGlzIGZsYWcgc3BlY2lmaWVzIHRoZSBob3N0IG5h
bWUgYW5kIHRoZSBwb3J0IG51bWJlciBvbiB3aGljaCB0byBzdHJlYW0gIgorICAgICJ0ZXN0IHJl
c3VsdHMuIEV4YW1wbGU6IFwibG9jYWxob3N0OjU1NVwiLiBUaGUgZmxhZyBpcyBlZmZlY3RpdmUg
b25seSBvbiAiCisgICAgIkxpbnV4LiIpOworCiBHVEVTVF9ERUZJTkVfYm9vbF8oCiAgICAgdGhy
b3dfb25fZmFpbHVyZSwKICAgICBpbnRlcm5hbDo6Qm9vbEZyb21HVGVzdEVudigidGhyb3dfb25f
ZmFpbHVyZSIsIGZhbHNlKSwKICAgICAiV2hlbiB0aGlzIGZsYWcgaXMgc3BlY2lmaWVkLCBhIGZh
aWxlZCBhc3NlcnRpb24gd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gIgogICAgICJpZiBleGNlcHRp
b25zIGFyZSBlbmFibGVkIG9yIGV4aXQgdGhlIHByb2dyYW0gd2l0aCBhIG5vbi16ZXJvIGNvZGUg
IgotICAgICJvdGhlcndpc2UuIik7CisgICAgIm90aGVyd2lzZS4gRm9yIHVzZSB3aXRoIGFuIGV4
dGVybmFsIHRlc3QgZnJhbWV3b3JrLiIpOworCisjaWYgR1RFU1RfVVNFX09XTl9GTEFHRklMRV9G
TEFHXworR1RFU1RfREVGSU5FX3N0cmluZ18oCisgICAgZmxhZ2ZpbGUsCisgICAgaW50ZXJuYWw6
OlN0cmluZ0Zyb21HVGVzdEVudigiZmxhZ2ZpbGUiLCAiIiksCisgICAgIlRoaXMgZmxhZyBzcGVj
aWZpZXMgdGhlIGZsYWdmaWxlIHRvIHJlYWQgY29tbWFuZC1saW5lIGZsYWdzIGZyb20uIik7Cisj
ZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KIAogbmFtZXNwYWNlIGludGVy
bmFsIHsKIApAQCAtMjcyLDcgKzM1Miw4IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLyB0aGFu
IGtNYXhSYW5nZS4KIFVJbnQzMiBSYW5kb206OkdlbmVyYXRlKFVJbnQzMiByYW5nZSkgewogICAv
LyBUaGVzZSBjb25zdGFudHMgYXJlIHRoZSBzYW1lIGFzIGFyZSB1c2VkIGluIGdsaWJjJ3MgcmFu
ZCgzKS4KLSAgc3RhdGVfID0gKDExMDM1MTUyNDVVKnN0YXRlXyArIDEyMzQ1VSkgJSBrTWF4UmFu
Z2U7CisgIC8vIFVzZSB3aWRlciB0eXBlcyB0aGFuIG5lY2Vzc2FyeSB0byBwcmV2ZW50IHVuc2ln
bmVkIG92ZXJmbG93IGRpYWdub3N0aWNzLgorICBzdGF0ZV8gPSBzdGF0aWNfY2FzdDxVSW50MzI+
KDExMDM1MTUyNDVVTEwqc3RhdGVfICsgMTIzNDVVKSAlIGtNYXhSYW5nZTsKIAogICBHVEVTVF9D
SEVDS18ocmFuZ2UgPiAwKQogICAgICAgPDwgIkNhbm5vdCBnZW5lcmF0ZSBhIG51bWJlciBpbiB0
aGUgcmFuZ2UgWzAsIDApLiI7CkBAIC0yODksMTMgKzM3MCw3IEBAIFVJbnQzMiBSYW5kb206Okdl
bmVyYXRlKFVJbnQzMiByYW5nZSkgewogLy8gR1Rlc3RJc0luaXRpYWxpemVkKCkgcmV0dXJucyB0
cnVlIGlmZiB0aGUgdXNlciBoYXMgaW5pdGlhbGl6ZWQKIC8vIEdvb2dsZSBUZXN0LiAgVXNlZnVs
IGZvciBjYXRjaGluZyB0aGUgdXNlciBtaXN0YWtlIG9mIG5vdCBpbml0aWFsaXppbmcKIC8vIEdv
b2dsZSBUZXN0IGJlZm9yZSBjYWxsaW5nIFJVTl9BTExfVEVTVFMoKS4KLS8vCi0vLyBBIHVzZXIg
bXVzdCBjYWxsIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCkgdG8gaW5pdGlhbGl6ZSBHb29nbGUK
LS8vIFRlc3QuICBnX2luaXRfZ3Rlc3RfY291bnQgaXMgc2V0IHRvIHRoZSBudW1iZXIgb2YgdGlt
ZXMKLS8vIEluaXRHb29nbGVUZXN0KCkgaGFzIGJlZW4gY2FsbGVkLiAgV2UgZG9uJ3QgcHJvdGVj
dCB0aGlzIHZhcmlhYmxlCi0vLyB1bmRlciBhIG11dGV4IGFzIGl0IGlzIG9ubHkgYWNjZXNzZWQg
aW4gdGhlIG1haW4gdGhyZWFkLgotaW50IGdfaW5pdF9ndGVzdF9jb3VudCA9IDA7Ci1zdGF0aWMg
Ym9vbCBHVGVzdElzSW5pdGlhbGl6ZWQoKSB7IHJldHVybiBnX2luaXRfZ3Rlc3RfY291bnQgIT0g
MDsgfQorc3RhdGljIGJvb2wgR1Rlc3RJc0luaXRpYWxpemVkKCkgeyByZXR1cm4gR2V0QXJndnMo
KS5zaXplKCkgPiAwOyB9CiAKIC8vIEl0ZXJhdGVzIG92ZXIgYSB2ZWN0b3Igb2YgVGVzdENhc2Vz
LCBrZWVwaW5nIGEgcnVubmluZyBzdW0gb2YgdGhlCiAvLyByZXN1bHRzIG9mIGNhbGxpbmcgYSBn
aXZlbiBpbnQtcmV0dXJuaW5nIG1ldGhvZCBvbiBlYWNoLgpAQCAtMzQ5LDEwICs0MjQsMjEgQEAg
dm9pZCBBc3NlcnRIZWxwZXI6Om9wZXJhdG9yPShjb25zdCBNZXNzYWdlJiBtZXNzYWdlKSBjb25z
dCB7CiB9CiAKIC8vIE11dGV4IGZvciBsaW5rZWQgcG9pbnRlcnMuCi1HVEVTVF9ERUZJTkVfU1RB
VElDX01VVEVYXyhnX2xpbmtlZF9wdHJfbXV0ZXgpOworR1RFU1RfQVBJXyBHVEVTVF9ERUZJTkVf
U1RBVElDX01VVEVYXyhnX2xpbmtlZF9wdHJfbXV0ZXgpOwogCi0vLyBBcHBsaWNhdGlvbiBwYXRo
bmFtZSBnb3R0ZW4gaW4gSW5pdEdvb2dsZVRlc3QuCi1TdHJpbmcgZ19leGVjdXRhYmxlX3BhdGg7
CisvLyBBIGNvcHkgb2YgYWxsIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuICBTZXQgYnkgSW5pdEdv
b2dsZVRlc3QoKS4KKzo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGdfYXJndnM7CisKKzo6c3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdldEFyZ3ZzKCkgeworI2lmIGRlZmluZWQoR1RFU1RfQ1VT
VE9NX0dFVF9BUkdWU18pCisgIC8vIEdURVNUX0NVU1RPTV9HRVRfQVJHVlNfKCkgbWF5IHJldHVy
biBhIGNvbnRhaW5lciBvZiBzdGQ6OnN0cmluZyBvcgorICAvLyA6OnN0cmluZy4gVGhpcyBjb2Rl
IGNvbnZlcnRzIGl0IHRvIHRoZSBhcHByb3ByaWF0ZSB0eXBlLgorICBjb25zdCBhdXRvJiBjdXN0
b20gPSBHVEVTVF9DVVNUT01fR0VUX0FSR1ZTXygpOworICByZXR1cm4gOjpzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4oY3VzdG9tLmJlZ2luKCksIGN1c3RvbS5lbmQoKSk7CisjZWxzZSAgIC8vIGRl
ZmluZWQoR1RFU1RfQ1VTVE9NX0dFVF9BUkdWU18pCisgIHJldHVybiBnX2FyZ3ZzOworI2VuZGlm
ICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9HRVRfQVJHVlNfKQorfQogCiAvLyBSZXR1cm5zIHRo
ZSBjdXJyZW50IGFwcGxpY2F0aW9uJ3MgbmFtZSwgcmVtb3ZpbmcgZGlyZWN0b3J5IHBhdGggaWYg
dGhhdAogLy8gaXMgcHJlc2VudC4KQEAgLTM2MCw5ICs0NDYsOSBAQCBGaWxlUGF0aCBHZXRDdXJy
ZW50RXhlY3V0YWJsZU5hbWUoKSB7CiAgIEZpbGVQYXRoIHJlc3VsdDsKIAogI2lmIEdURVNUX09T
X1dJTkRPV1MKLSAgcmVzdWx0LlNldChGaWxlUGF0aChnX2V4ZWN1dGFibGVfcGF0aCkuUmVtb3Zl
RXh0ZW5zaW9uKCJleGUiKSk7CisgIHJlc3VsdC5TZXQoRmlsZVBhdGgoR2V0QXJndnMoKVswXSku
UmVtb3ZlRXh0ZW5zaW9uKCJleGUiKSk7CiAjZWxzZQotICByZXN1bHQuU2V0KEZpbGVQYXRoKGdf
ZXhlY3V0YWJsZV9wYXRoKSk7CisgIHJlc3VsdC5TZXQoRmlsZVBhdGgoR2V0QXJndnMoKVswXSkp
OwogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKICAgcmV0dXJuIHJlc3VsdC5SZW1vdmVE
aXJlY3RvcnlOYW1lKCk7CkBAIC0zNzEsMzMgKzQ1NywzNCBAQCBGaWxlUGF0aCBHZXRDdXJyZW50
RXhlY3V0YWJsZU5hbWUoKSB7CiAvLyBGdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgdGhlIGd0ZXN0
X291dHB1dCBmbGFnLgogCiAvLyBSZXR1cm5zIHRoZSBvdXRwdXQgZm9ybWF0LCBvciAiIiBmb3Ig
bm9ybWFsIHByaW50ZWQgb3V0cHV0LgotU3RyaW5nIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0
Rm9ybWF0KCkgeworc3RkOjpzdHJpbmcgVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQo
KSB7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGd0ZXN0X291dHB1dF9mbGFnID0gR1RFU1RfRkxBRyhv
dXRwdXQpLmNfc3RyKCk7Ci0gIGlmIChndGVzdF9vdXRwdXRfZmxhZyA9PSBOVUxMKSByZXR1cm4g
U3RyaW5nKCIiKTsKLQogICBjb25zdCBjaGFyKiBjb25zdCBjb2xvbiA9IHN0cmNocihndGVzdF9v
dXRwdXRfZmxhZywgJzonKTsKICAgcmV0dXJuIChjb2xvbiA9PSBOVUxMKSA/Ci0gICAgICBTdHJp
bmcoZ3Rlc3Rfb3V0cHV0X2ZsYWcpIDoKLSAgICAgIFN0cmluZyhndGVzdF9vdXRwdXRfZmxhZywg
Y29sb24gLSBndGVzdF9vdXRwdXRfZmxhZyk7CisgICAgICBzdGQ6OnN0cmluZyhndGVzdF9vdXRw
dXRfZmxhZykgOgorICAgICAgc3RkOjpzdHJpbmcoZ3Rlc3Rfb3V0cHV0X2ZsYWcsIGNvbG9uIC0g
Z3Rlc3Rfb3V0cHV0X2ZsYWcpOwogfQogCiAvLyBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSByZXF1
ZXN0ZWQgb3V0cHV0IGZpbGUsIG9yIHRoZSBkZWZhdWx0IGlmIG5vbmUKIC8vIHdhcyBleHBsaWNp
dGx5IHNwZWNpZmllZC4KLVN0cmluZyBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRv
T3V0cHV0RmlsZSgpIHsKK3N0ZDo6c3RyaW5nIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQ
YXRoVG9PdXRwdXRGaWxlKCkgewogICBjb25zdCBjaGFyKiBjb25zdCBndGVzdF9vdXRwdXRfZmxh
ZyA9IEdURVNUX0ZMQUcob3V0cHV0KS5jX3N0cigpOwotICBpZiAoZ3Rlc3Rfb3V0cHV0X2ZsYWcg
PT0gTlVMTCkKLSAgICByZXR1cm4gU3RyaW5nKCIiKTsKKworICBzdGQ6OnN0cmluZyBmb3JtYXQg
PSBHZXRPdXRwdXRGb3JtYXQoKTsKKyAgaWYgKGZvcm1hdC5lbXB0eSgpKQorICAgIGZvcm1hdCA9
IHN0ZDo6c3RyaW5nKGtEZWZhdWx0T3V0cHV0Rm9ybWF0KTsKIAogICBjb25zdCBjaGFyKiBjb25z
dCBjb2xvbiA9IHN0cmNocihndGVzdF9vdXRwdXRfZmxhZywgJzonKTsKICAgaWYgKGNvbG9uID09
IE5VTEwpCi0gICAgcmV0dXJuIFN0cmluZyhpbnRlcm5hbDo6RmlsZVBhdGg6OkNvbmNhdFBhdGhz
KAotICAgICAgICAgICAgICAgaW50ZXJuYWw6OkZpbGVQYXRoKAotICAgICAgICAgICAgICAgICAg
IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5nX2RpcigpKSwKLSAgICAg
ICAgICAgICAgIGludGVybmFsOjpGaWxlUGF0aChrRGVmYXVsdE91dHB1dEZpbGUpKS5Ub1N0cmlu
ZygpICk7CisgICAgcmV0dXJuIGludGVybmFsOjpGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKAorICAg
ICAgICBpbnRlcm5hbDo6RmlsZVBhdGgoCisgICAgICAgICAgICBVbml0VGVzdDo6R2V0SW5zdGFu
Y2UoKS0+b3JpZ2luYWxfd29ya2luZ19kaXIoKSksCisgICAgICAgIGludGVybmFsOjpGaWxlUGF0
aChrRGVmYXVsdE91dHB1dEZpbGUpLCAwLAorICAgICAgICBmb3JtYXQuY19zdHIoKSkuc3RyaW5n
KCk7CiAKICAgaW50ZXJuYWw6OkZpbGVQYXRoIG91dHB1dF9uYW1lKGNvbG9uICsgMSk7CiAgIGlm
ICghb3V0cHV0X25hbWUuSXNBYnNvbHV0ZVBhdGgoKSkKLSAgICAvLyBUT0RPKHdhbkBnb29nbGUu
Y29tKTogb24gV2luZG93cyBcc29tZVxwYXRoIGlzIG5vdCBhbiBhYnNvbHV0ZQorICAgIC8vIEZJ
WE1FOiBvbiBXaW5kb3dzIFxzb21lXHBhdGggaXMgbm90IGFuIGFic29sdXRlCiAgICAgLy8gcGF0
aCAoYXMgaXRzIG1lYW5pbmcgZGVwZW5kcyBvbiB0aGUgY3VycmVudCBkcml2ZSksIHlldCB0aGUK
ICAgICAvLyBmb2xsb3dpbmcgbG9naWMgZm9yIHR1cm5pbmcgaXQgaW50byBhbiBhYnNvbHV0ZSBw
YXRoIGlzIHdyb25nLgogICAgIC8vIEZpeCBpdC4KQEAgLTQwNiwxMiArNDkzLDEyIEBAIFN0cmlu
ZyBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpIHsKICAgICAg
ICAgaW50ZXJuYWw6OkZpbGVQYXRoKGNvbG9uICsgMSkpOwogCiAgIGlmICghb3V0cHV0X25hbWUu
SXNEaXJlY3RvcnkoKSkKLSAgICByZXR1cm4gb3V0cHV0X25hbWUuVG9TdHJpbmcoKTsKKyAgICBy
ZXR1cm4gb3V0cHV0X25hbWUuc3RyaW5nKCk7CiAKICAgaW50ZXJuYWw6OkZpbGVQYXRoIHJlc3Vs
dChpbnRlcm5hbDo6RmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5hbWUoCiAgICAgICBvdXRw
dXRfbmFtZSwgaW50ZXJuYWw6OkdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLAogICAgICAgR2V0
T3V0cHV0Rm9ybWF0KCkuY19zdHIoKSkpOwotICByZXR1cm4gcmVzdWx0LlRvU3RyaW5nKCk7Cisg
IHJldHVybiByZXN1bHQuc3RyaW5nKCk7CiB9CiAKIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHdp
bGRjYXJkIHBhdHRlcm4gbWF0Y2hlcyB0aGUgc3RyaW5nLiAgVGhlCkBAIC00MzYsNyArNTIzLDgg
QEAgYm9vbCBVbml0VGVzdE9wdGlvbnM6OlBhdHRlcm5NYXRjaGVzU3RyaW5nKGNvbnN0IGNoYXIg
KnBhdHRlcm4sCiAgIH0KIH0KIAotYm9vbCBVbml0VGVzdE9wdGlvbnM6Ok1hdGNoZXNGaWx0ZXIo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBjaGFyKiBmaWx0ZXIpIHsKK2Jvb2wgVW5pdFRlc3RP
cHRpb25zOjpNYXRjaGVzRmlsdGVyKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBjb25z
dCBjaGFyKiBmaWx0ZXIpIHsKICAgY29uc3QgY2hhciAqY3VyX3BhdHRlcm4gPSBmaWx0ZXI7CiAg
IGZvciAoOzspIHsKICAgICBpZiAoUGF0dGVybk1hdGNoZXNTdHJpbmcoY3VyX3BhdHRlcm4sIG5h
bWUuY19zdHIoKSkpIHsKQEAgLTQ1NiwyOCArNTQ0LDI0IEBAIGJvb2wgVW5pdFRlc3RPcHRpb25z
OjpNYXRjaGVzRmlsdGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgY2hhciogZmlsdGVyKSB7
CiAgIH0KIH0KIAotLy8gVE9ETyhrZWl0aHJheSk6IG1vdmUgU3RyaW5nIGZ1bmN0aW9uIGltcGxl
bWVudGF0aW9ucyB0byBndGVzdC1zdHJpbmcuY2MuCi0KIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhl
IHVzZXItc3BlY2lmaWVkIGZpbHRlciBtYXRjaGVzIHRoZSB0ZXN0IGNhc2UKIC8vIG5hbWUgYW5k
IHRoZSB0ZXN0IG5hbWUuCi1ib29sIFVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0Y2hlc1Rlc3Qo
Y29uc3QgU3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTdHJpbmcgJnRlc3RfbmFtZSkgewotICBjb25zdCBTdHJpbmcm
IGZ1bGxfbmFtZSA9IFN0cmluZzo6Rm9ybWF0KCIlcy4lcyIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jYXNlX25hbWUuY19zdHIoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X25hbWUuY19zdHIoKSk7Citi
b29sIFVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0Y2hlc1Rlc3QoY29uc3Qgc3RkOjpzdHJpbmcg
JnRlc3RfY2FzZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0X25hbWUpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIGZ1
bGxfbmFtZSA9IHRlc3RfY2FzZV9uYW1lICsgIi4iICsgdGVzdF9uYW1lLmNfc3RyKCk7CiAKICAg
Ly8gU3BsaXQgLS1ndGVzdF9maWx0ZXIgYXQgJy0nLCBpZiB0aGVyZSBpcyBvbmUsIHRvIHNlcGFy
YXRlIGludG8KICAgLy8gcG9zaXRpdmUgZmlsdGVyIGFuZCBuZWdhdGl2ZSBmaWx0ZXIgcG9ydGlv
bnMKICAgY29uc3QgY2hhciogY29uc3QgcCA9IEdURVNUX0ZMQUcoZmlsdGVyKS5jX3N0cigpOwog
ICBjb25zdCBjaGFyKiBjb25zdCBkYXNoID0gc3RyY2hyKHAsICctJyk7Ci0gIFN0cmluZyBwb3Np
dGl2ZTsKLSAgU3RyaW5nIG5lZ2F0aXZlOworICBzdGQ6OnN0cmluZyBwb3NpdGl2ZTsKKyAgc3Rk
OjpzdHJpbmcgbmVnYXRpdmU7CiAgIGlmIChkYXNoID09IE5VTEwpIHsKICAgICBwb3NpdGl2ZSA9
IEdURVNUX0ZMQUcoZmlsdGVyKS5jX3N0cigpOyAgLy8gV2hvbGUgc3RyaW5nIGlzIGEgcG9zaXRp
dmUgZmlsdGVyCi0gICAgbmVnYXRpdmUgPSBTdHJpbmcoIiIpOworICAgIG5lZ2F0aXZlID0gIiI7
CiAgIH0gZWxzZSB7Ci0gICAgcG9zaXRpdmUgPSBTdHJpbmcocCwgZGFzaCAtIHApOyAgLy8gRXZl
cnl0aGluZyB1cCB0byB0aGUgZGFzaAotICAgIG5lZ2F0aXZlID0gU3RyaW5nKGRhc2grMSk7ICAg
ICAgIC8vIEV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGRhc2gKKyAgICBwb3NpdGl2ZSA9IHN0ZDo6c3Ry
aW5nKHAsIGRhc2gpOyAgIC8vIEV2ZXJ5dGhpbmcgdXAgdG8gdGhlIGRhc2gKKyAgICBuZWdhdGl2
ZSA9IHN0ZDo6c3RyaW5nKGRhc2ggKyAxKTsgIC8vIEV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGRhc2gK
ICAgICBpZiAocG9zaXRpdmUuZW1wdHkoKSkgewogICAgICAgLy8gVHJlYXQgJy10ZXN0MScgYXMg
dGhlIHNhbWUgYXMgJyotdGVzdDEnCiAgICAgICBwb3NpdGl2ZSA9IGtVbml2ZXJzYWxGaWx0ZXI7
CkBAIC00OTAsMjAgKzU3NCwzMyBAQCBib29sIFVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0Y2hl
c1Rlc3QoY29uc3QgU3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSwKICAgICAgICAgICAhTWF0Y2hlc0Zp
bHRlcihmdWxsX25hbWUsIG5lZ2F0aXZlLmNfc3RyKCkpKTsKIH0KIAotI2lmIEdURVNUX09TX1dJ
TkRPV1MKKyNpZiBHVEVTVF9IQVNfU0VICiAvLyBSZXR1cm5zIEVYQ0VQVElPTl9FWEVDVVRFX0hB
TkRMRVIgaWYgR29vZ2xlIFRlc3Qgc2hvdWxkIGhhbmRsZSB0aGUKIC8vIGdpdmVuIFNFSCBleGNl
cHRpb24sIG9yIEVYQ0VQVElPTl9DT05USU5VRV9TRUFSQ0ggb3RoZXJ3aXNlLgogLy8gVGhpcyBm
dW5jdGlvbiBpcyB1c2VmdWwgYXMgYW4gX19leGNlcHQgY29uZGl0aW9uLgogaW50IFVuaXRUZXN0
T3B0aW9uczo6R1Rlc3RTaG91bGRQcm9jZXNzU0VIKERXT1JEIGV4Y2VwdGlvbl9jb2RlKSB7Ci0g
IC8vIEdvb2dsZSBUZXN0IHNob3VsZCBoYW5kbGUgYW4gZXhjZXB0aW9uIGlmOgorICAvLyBHb29n
bGUgVGVzdCBzaG91bGQgaGFuZGxlIGEgU0VIIGV4Y2VwdGlvbiBpZjoKICAgLy8gICAxLiB0aGUg
dXNlciB3YW50cyBpdCB0bywgQU5ECi0gIC8vICAgMi4gdGhpcyBpcyBub3QgYSBicmVha3BvaW50
IGV4Y2VwdGlvbi4KLSAgcmV0dXJuIChHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpICYmCi0g
ICAgICAgICAgZXhjZXB0aW9uX2NvZGUgIT0gRVhDRVBUSU9OX0JSRUFLUE9JTlQpID8KLSAgICAg
IEVYQ0VQVElPTl9FWEVDVVRFX0hBTkRMRVIgOgotICAgICAgRVhDRVBUSU9OX0NPTlRJTlVFX1NF
QVJDSDsKKyAgLy8gICAyLiB0aGlzIGlzIG5vdCBhIGJyZWFrcG9pbnQgZXhjZXB0aW9uLCBBTkQK
KyAgLy8gICAzLiB0aGlzIGlzIG5vdCBhIEMrKyBleGNlcHRpb24gKFZDKysgaW1wbGVtZW50cyB0
aGVtIHZpYSBTRUgsCisgIC8vICAgICAgYXBwYXJlbnRseSkuCisgIC8vCisgIC8vIFNFSCBleGNl
cHRpb24gY29kZSBmb3IgQysrIGV4Y2VwdGlvbnMuCisgIC8vIChzZWUgaHR0cDovL3N1cHBvcnQu
bWljcm9zb2Z0LmNvbS9rYi8xODUyOTQgZm9yIG1vcmUgaW5mb3JtYXRpb24pLgorICBjb25zdCBE
V09SRCBrQ3h4RXhjZXB0aW9uQ29kZSA9IDB4ZTA2ZDczNjM7CisKKyAgYm9vbCBzaG91bGRfaGFu
ZGxlID0gdHJ1ZTsKKworICBpZiAoIUdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykpCisgICAg
c2hvdWxkX2hhbmRsZSA9IGZhbHNlOworICBlbHNlIGlmIChleGNlcHRpb25fY29kZSA9PSBFWENF
UFRJT05fQlJFQUtQT0lOVCkKKyAgICBzaG91bGRfaGFuZGxlID0gZmFsc2U7CisgIGVsc2UgaWYg
KGV4Y2VwdGlvbl9jb2RlID09IGtDeHhFeGNlcHRpb25Db2RlKQorICAgIHNob3VsZF9oYW5kbGUg
PSBmYWxzZTsKKworICByZXR1cm4gc2hvdWxkX2hhbmRsZSA/IEVYQ0VQVElPTl9FWEVDVVRFX0hB
TkRMRVIgOiBFWENFUFRJT05fQ09OVElOVUVfU0VBUkNIOwogfQotI2VuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCisjZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKIAogfSAgLy8gbmFtZXNwYWNlIGlu
dGVybmFsCiAKQEAgLTU3OCwxMyArNjc1LDEzIEBAIGV4dGVybiBjb25zdCBUeXBlSWQga1Rlc3RU
eXBlSWRJbkdvb2dsZVRlc3QgPSBHZXRUZXN0VHlwZUlkKCk7CiAvLyBUaGlzIHByZWRpY2F0ZS1m
b3JtYXR0ZXIgY2hlY2tzIHRoYXQgJ3Jlc3VsdHMnIGNvbnRhaW5zIGEgdGVzdCBwYXJ0CiAvLyBm
YWlsdXJlIG9mIHRoZSBnaXZlbiB0eXBlIGFuZCB0aGF0IHRoZSBmYWlsdXJlIG1lc3NhZ2UgY29u
dGFpbnMgdGhlCiAvLyBnaXZlbiBzdWJzdHJpbmcuCi1Bc3NlcnRpb25SZXN1bHQgSGFzT25lRmFp
bHVyZShjb25zdCBjaGFyKiAvKiByZXN1bHRzX2V4cHIgKi8sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiAvKiB0eXBlX2V4cHIgKi8sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKiBzdWJzdHJfZXhwciAqLywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0QXJyYXkmIHJlc3VsdHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogc3Vic3RyKSB7Ci0gIGNv
bnN0IFN0cmluZyBleHBlY3RlZCh0eXBlID09IFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJl
ID8KK3N0YXRpYyBBc3NlcnRpb25SZXN1bHQgSGFzT25lRmFpbHVyZShjb25zdCBjaGFyKiAvKiBy
ZXN1bHRzX2V4cHIgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogLyogdHlwZV9leHByICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIC8qIHN1YnN0cl9leHByICovLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0QXJyYXkmIHJlc3VsdHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdFBhcnRSZXN1bHQ6OlR5cGUg
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgc3Vic3RyKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdGVkKHR5cGUgPT0gVGVz
dFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUgPwogICAgICAgICAgICAgICAgICAgICAgICAgIjEg
ZmF0YWwgZmFpbHVyZSIgOgogICAgICAgICAgICAgICAgICAgICAgICAgIjEgbm9uLWZhdGFsIGZh
aWx1cmUiKTsKICAgTWVzc2FnZSBtc2c7CkBAIC01OTQsMjMgKzY5MSwyMSBAQCBBc3NlcnRpb25S
ZXN1bHQgSGFzT25lRmFpbHVyZShjb25zdCBjaGFyKiAvKiByZXN1bHRzX2V4cHIgKi8sCiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7CiAgICAgICBtc2cgPDwg
IlxuIiA8PCByZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KGkpOwogICAgIH0KLSAgICByZXR1cm4g
QXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwg
bXNnOwogICB9CiAKICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIHIgPSByZXN1bHRzLkdldFRlc3RQ
YXJ0UmVzdWx0KDApOwogICBpZiAoci50eXBlKCkgIT0gdHlwZSkgewotICAgIG1zZyA8PCAiRXhw
ZWN0ZWQ6ICIgPDwgZXhwZWN0ZWQgPDwgIlxuIgotICAgICAgICA8PCAiICBBY3R1YWw6XG4iCi0g
ICAgICAgIDw8IHI7Ci0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgICByZXR1
cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJFeHBlY3RlZDogIiA8PCBleHBlY3RlZCA8PCAiXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiICBBY3R1YWw6XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCByOwogICB9CiAKLSAgaWYgKHN0cnN0cihyLm1lc3Nh
Z2UoKSwgc3Vic3RyKSA9PSBOVUxMKSB7Ci0gICAgbXNnIDw8ICJFeHBlY3RlZDogIiA8PCBleHBl
Y3RlZCA8PCAiIGNvbnRhaW5pbmcgXCIiCi0gICAgICAgIDw8IHN1YnN0ciA8PCAiXCJcbiIKLSAg
ICAgICAgPDwgIiAgQWN0dWFsOlxuIgotICAgICAgICA8PCByOwotICAgIHJldHVybiBBc3NlcnRp
b25GYWlsdXJlKG1zZyk7CisgIGlmIChzdHJzdHIoci5tZXNzYWdlKCksIHN1YnN0ci5jX3N0cigp
KSA9PSBOVUxMKSB7CisgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiRXhwZWN0ZWQ6
ICIgPDwgZXhwZWN0ZWQgPDwgIiBjb250YWluaW5nIFwiIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgc3Vic3RyIDw8ICJcIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIiAgQWN0dWFsOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcjsK
ICAgfQogCiAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CkBAIC02MTksMjAgKzcxNCwxNyBA
QCBBc3NlcnRpb25SZXN1bHQgSGFzT25lRmFpbHVyZShjb25zdCBjaGFyKiAvKiByZXN1bHRzX2V4
cHIgKi8sCiAvLyBUaGUgY29uc3RydWN0b3Igb2YgU2luZ2xlRmFpbHVyZUNoZWNrZXIgcmVtZW1i
ZXJzIHdoZXJlIHRvIGxvb2sgdXAKIC8vIHRlc3QgcGFydCByZXN1bHRzLCB3aGF0IHR5cGUgb2Yg
ZmFpbHVyZSB3ZSBleHBlY3QsIGFuZCB3aGF0CiAvLyBzdWJzdHJpbmcgdGhlIGZhaWx1cmUgbWVz
c2FnZSBzaG91bGQgY29udGFpbi4KLVNpbmdsZUZhaWx1cmVDaGVja2VyOjogU2luZ2xlRmFpbHVy
ZUNoZWNrZXIoCi0gICAgY29uc3QgVGVzdFBhcnRSZXN1bHRBcnJheSogcmVzdWx0cywKLSAgICBU
ZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlLAotICAgIGNvbnN0IGNoYXIqIHN1YnN0cikKLSAgICA6
IHJlc3VsdHNfKHJlc3VsdHMpLAotICAgICAgdHlwZV8odHlwZSksCi0gICAgICBzdWJzdHJfKHN1
YnN0cikge30KK1NpbmdsZUZhaWx1cmVDaGVja2VyOjpTaW5nbGVGYWlsdXJlQ2hlY2tlcihjb25z
dCBUZXN0UGFydFJlc3VsdEFycmF5KiByZXN1bHRzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN1YnN0
cikKKyAgICA6IHJlc3VsdHNfKHJlc3VsdHMpLCB0eXBlXyh0eXBlKSwgc3Vic3RyXyhzdWJzdHIp
IHt9CiAKIC8vIFRoZSBkZXN0cnVjdG9yIG9mIFNpbmdsZUZhaWx1cmVDaGVja2VyIHZlcmlmaWVz
IHRoYXQgdGhlIGdpdmVuCiAvLyBUZXN0UGFydFJlc3VsdEFycmF5IGNvbnRhaW5zIGV4YWN0bHkg
b25lIGZhaWx1cmUgdGhhdCBoYXMgdGhlIGdpdmVuCiAvLyB0eXBlIGFuZCBjb250YWlucyB0aGUg
Z2l2ZW4gc3Vic3RyaW5nLiAgSWYgdGhhdCdzIG5vdCB0aGUgY2FzZSwgYQogLy8gbm9uLWZhdGFs
IGZhaWx1cmUgd2lsbCBiZSBnZW5lcmF0ZWQuCiBTaW5nbGVGYWlsdXJlQ2hlY2tlcjo6flNpbmds
ZUZhaWx1cmVDaGVja2VyKCkgewotICBFWFBFQ1RfUFJFRF9GT1JNQVQzKEhhc09uZUZhaWx1cmUs
ICpyZXN1bHRzXywgdHlwZV8sIHN1YnN0cl8uY19zdHIoKSk7CisgIEVYUEVDVF9QUkVEX0ZPUk1B
VDMoSGFzT25lRmFpbHVyZSwgKnJlc3VsdHNfLCB0eXBlXywgc3Vic3RyXyk7CiB9CiAKIERlZmF1
bHRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpEZWZhdWx0R2xvYmFsVGVzdFBhcnRSZXN1
bHRSZXBvcnRlcigKQEAgLTcwOSwxMSArODAxLDIyIEBAIGludCBVbml0VGVzdEltcGw6OmZhaWxl
ZF90ZXN0X2NvdW50KCkgY29uc3QgewogICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0ZXN0
X2Nhc2VzXywgJlRlc3RDYXNlOjpmYWlsZWRfdGVzdF9jb3VudCk7CiB9CiAKKy8vIEdldHMgdGhl
IG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhN
TCByZXBvcnQuCitpbnQgVW5pdFRlc3RJbXBsOjpyZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291
bnQoKSBjb25zdCB7CisgIHJldHVybiBTdW1PdmVyVGVzdENhc2VMaXN0KHRlc3RfY2FzZXNfLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmVGVzdENhc2U6OnJlcG9ydGFibGVfZGlzYWJs
ZWRfdGVzdF9jb3VudCk7Cit9CisKIC8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0
cy4KIGludCBVbml0VGVzdEltcGw6OmRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7CiAgIHJl
dHVybiBTdW1PdmVyVGVzdENhc2VMaXN0KHRlc3RfY2FzZXNfLCAmVGVzdENhc2U6OmRpc2FibGVk
X3Rlc3RfY291bnQpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJp
bnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KK2ludCBVbml0VGVzdEltcGw6OnJlcG9ydGFibGVfdGVz
dF9jb3VudCgpIGNvbnN0IHsKKyAgcmV0dXJuIFN1bU92ZXJUZXN0Q2FzZUxpc3QodGVzdF9jYXNl
c18sICZUZXN0Q2FzZTo6cmVwb3J0YWJsZV90ZXN0X2NvdW50KTsKK30KKwogLy8gR2V0cyB0aGUg
bnVtYmVyIG9mIGFsbCB0ZXN0cy4KIGludCBVbml0VGVzdEltcGw6OnRvdGFsX3Rlc3RfY291bnQo
KSBjb25zdCB7CiAgIHJldHVybiBTdW1PdmVyVGVzdENhc2VMaXN0KHRlc3RfY2FzZXNfLCAmVGVz
dENhc2U6OnRvdGFsX3Rlc3RfY291bnQpOwpAQCAtNzI0LDcgKzgyNyw3IEBAIGludCBVbml0VGVz
dEltcGw6OnRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3QgewogICByZXR1cm4gU3VtT3ZlclRlc3RD
YXNlTGlzdCh0ZXN0X2Nhc2VzXywgJlRlc3RDYXNlOjp0ZXN0X3RvX3J1bl9jb3VudCk7CiB9CiAK
LS8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYSBTdHJpbmcuCisvLyBS
ZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFzIGFuIHN0ZDo6c3RyaW5nLgogLy8K
IC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMgdG8gYmUgaW5jbHVkZWQgaXMg
c3BlY2lmaWVkIGJ5CiAvLyB0aGUgZ3Rlc3Rfc3RhY2tfdHJhY2VfZGVwdGggZmxhZy4gIFRoZSBz
a2lwX2NvdW50IHBhcmFtZXRlcgpAQCAtNzM0LDkgKzgzNywxMyBAQCBpbnQgVW5pdFRlc3RJbXBs
Ojp0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0IHsKIC8vIEZvciBleGFtcGxlLCBpZiBGb28oKSBj
YWxscyBCYXIoKSwgd2hpY2ggaW4gdHVybiBjYWxscwogLy8gQ3VycmVudE9zU3RhY2tUcmFjZUV4
Y2VwdFRvcCgxKSwgRm9vKCkgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKIC8vIHRyYWNlIGJ1dCBC
YXIoKSBhbmQgQ3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgpIHdvbid0LgotU3RyaW5nIFVu
aXRUZXN0SW1wbDo6Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcChpbnQgc2tpcF9jb3VudCkg
ewotICAodm9pZClza2lwX2NvdW50OwotICByZXR1cm4gU3RyaW5nKCIiKTsKK3N0ZDo6c3RyaW5n
IFVuaXRUZXN0SW1wbDo6Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcChpbnQgc2tpcF9jb3Vu
dCkgeworICByZXR1cm4gb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPkN1cnJlbnRTdGFja1RyYWNl
KAorICAgICAgc3RhdGljX2Nhc3Q8aW50PihHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSks
CisgICAgICBza2lwX2NvdW50ICsgMQorICAgICAgLy8gU2tpcHMgdGhlIHVzZXItc3BlY2lmaWVk
IG51bWJlciBvZiBmcmFtZXMgcGx1cyB0aGlzIGZ1bmN0aW9uCisgICAgICAvLyBpdHNlbGYuCisg
ICAgICApOyAgLy8gTk9MSU5UCiB9CiAKIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgdGltZSBpbiBt
aWxsaXNlY29uZHMuCkBAIC03NTEsNyArODU4LDcgQEAgVGltZUluTWlsbGlzIEdldFRpbWVJbk1p
bGxpcygpIHsKICAgU1lTVEVNVElNRSBub3dfc3lzdGltZTsKICAgRklMRVRJTUUgbm93X2ZpbGV0
aW1lOwogICBVTEFSR0VfSU5URUdFUiBub3dfaW50NjQ7Ci0gIC8vIFRPRE8oa2VudG9uQGdvb2ds
ZS5jb20pOiBTaG91bGRuJ3QgdGhpcyBqdXN0IHVzZQorICAvLyBGSVhNRTogU2hvdWxkbid0IHRo
aXMganVzdCB1c2UKICAgLy8gICBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgpPwogICBHZXRTeXN0
ZW1UaW1lKCZub3dfc3lzdGltZSk7CiAgIGlmIChTeXN0ZW1UaW1lVG9GaWxlVGltZSgmbm93X3N5
c3RpbWUsICZub3dfZmlsZXRpbWUpKSB7CkBAIC03NjQsNjUgKzg3MSwyOCBAQCBUaW1lSW5NaWxs
aXMgR2V0VGltZUluTWlsbGlzKCkgewogICByZXR1cm4gMDsKICNlbGlmIEdURVNUX09TX1dJTkRP
V1MgJiYgIUdURVNUX0hBU19HRVRUSU1FT0ZEQVlfCiAgIF9fdGltZWI2NCBub3c7Ci0jaWZkZWYg
X01TQ19WRVIKKwogICAvLyBNU1ZDIDggZGVwcmVjYXRlcyBfZnRpbWU2NCgpLCBzbyB3ZSB3YW50
IHRvIHN1cHByZXNzIHdhcm5pbmcgNDk5NgogICAvLyAoZGVwcmVjYXRlZCBmdW5jdGlvbikgdGhl
cmUuCi0gIC8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBVc2UgR2V0VGlja0NvdW50KCk/ICBP
ciB1c2UKKyAgLy8gRklYTUU6IFVzZSBHZXRUaWNrQ291bnQoKT8gIE9yIHVzZQogICAvLyAgIFN5
c3RlbVRpbWVUb0ZpbGVUaW1lKCkKLSNwcmFnbWEgd2FybmluZyhwdXNoKSAgICAgICAgICAvLyBT
YXZlcyB0aGUgY3VycmVudCB3YXJuaW5nIHN0YXRlLgotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6
NDk5NikgIC8vIFRlbXBvcmFyaWx5IGRpc2FibGVzIHdhcm5pbmcgNDk5Ni4KKyAgR1RFU1RfRElT
QUJMRV9NU0NfREVQUkVDQVRFRF9QVVNIXygpCiAgIF9mdGltZTY0KCZub3cpOwotI3ByYWdtYSB3
YXJuaW5nKHBvcCkgICAgICAgICAgIC8vIFJlc3RvcmVzIHRoZSB3YXJuaW5nIHN0YXRlLgotI2Vs
c2UKLSAgX2Z0aW1lNjQoJm5vdyk7Ci0jZW5kaWYgIC8vIF9NU0NfVkVSCisgIEdURVNUX0RJU0FC
TEVfTVNDX0RFUFJFQ0FURURfUE9QXygpCisKICAgcmV0dXJuIHN0YXRpY19jYXN0PFRpbWVJbk1p
bGxpcz4obm93LnRpbWUpICogMTAwMCArIG5vdy5taWxsaXRtOwogI2VsaWYgR1RFU1RfSEFTX0dF
VFRJTUVPRkRBWV8KICAgc3RydWN0IHRpbWV2YWwgbm93OwogICBnZXR0aW1lb2ZkYXkoJm5vdywg
TlVMTCk7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxUaW1lSW5NaWxsaXM+KG5vdy50dl9zZWMpICog
MTAwMCArIG5vdy50dl91c2VjIC8gMTAwMDsKICNlbHNlCi0jZXJyb3IgIkRvbid0IGtub3cgaG93
IHRvIGdldCB0aGUgY3VycmVudCB0aW1lIG9uIHlvdXIgc3lzdGVtLiIKKyMgZXJyb3IgIkRvbid0
IGtub3cgaG93IHRvIGdldCB0aGUgY3VycmVudCB0aW1lIG9uIHlvdXIgc3lzdGVtLiIKICNlbmRp
ZgogfQogCiAvLyBVdGlsaXRpZXMKIAotLy8gY2xhc3MgU3RyaW5nCi0KLS8vIFJldHVybnMgdGhl
IGlucHV0IGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZXMgaWYgaXQncyBub3QgTlVMTDsKLS8vIG90
aGVyd2lzZSByZXR1cm5zICIobnVsbCkiLiAgRm9yIGV4YW1wbGUsICJcIkhlbGxvXCIiIGlzIHJl
dHVybmVkCi0vLyBmb3IgaW5wdXQgIkhlbGxvIi4KLS8vCi0vLyBUaGlzIGlzIHVzZWZ1bCBmb3Ig
cHJpbnRpbmcgYSBDIHN0cmluZyBpbiB0aGUgc3ludGF4IG9mIGEgbGl0ZXJhbC4KLS8vCi0vLyBL
bm93biBpc3N1ZTogZXNjYXBlIHNlcXVlbmNlcyBhcmUgbm90IGhhbmRsZWQgeWV0LgotU3RyaW5n
IFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQoY29uc3QgY2hhciogY19zdHIpIHsKLSAgcmV0dXJu
IGNfc3RyID8gU3RyaW5nOjpGb3JtYXQoIlwiJXNcIiIsIGNfc3RyKSA6IFN0cmluZygiKG51bGwp
Iik7Ci19Ci0KLS8vIENvcGllcyBhdCBtb3N0IGxlbmd0aCBjaGFyYWN0ZXJzIGZyb20gc3RyIGlu
dG8gYSBuZXdseS1hbGxvY2F0ZWQKLS8vIHBpZWNlIG9mIG1lbW9yeSBvZiBzaXplIGxlbmd0aCsx
LiAgVGhlIG1lbW9yeSBpcyBhbGxvY2F0ZWQgd2l0aCBuZXdbXS4KLS8vIEEgdGVybWluYXRpbmcg
bnVsbCBieXRlIGlzIHdyaXR0ZW4gdG8gdGhlIG1lbW9yeSwgYW5kIGEgcG9pbnRlciB0byBpdAot
Ly8gaXMgcmV0dXJuZWQuICBJZiBzdHIgaXMgTlVMTCwgTlVMTCBpcyByZXR1cm5lZC4KLXN0YXRp
YyBjaGFyKiBDbG9uZVN0cmluZyhjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW5ndGgpIHsKLSAg
aWYgKHN0ciA9PSBOVUxMKSB7Ci0gICAgcmV0dXJuIE5VTEw7Ci0gIH0gZWxzZSB7Ci0gICAgY2hh
ciogY29uc3QgY2xvbmUgPSBuZXcgY2hhcltsZW5ndGggKyAxXTsKLSAgICBwb3NpeDo6U3RyTkNw
eShjbG9uZSwgc3RyLCBsZW5ndGgpOwotICAgIGNsb25lW2xlbmd0aF0gPSAnXDAnOwotICAgIHJl
dHVybiBjbG9uZTsKLSAgfQotfQotCi0vLyBDbG9uZXMgYSAwLXRlcm1pbmF0ZWQgQyBzdHJpbmcs
IGFsbG9jYXRpbmcgbWVtb3J5IHVzaW5nIG5ldy4gIFRoZQotLy8gY2FsbGVyIGlzIHJlc3BvbnNp
YmxlIGZvciBkZWxldGluZ1tdIHRoZSByZXR1cm4gdmFsdWUuICBSZXR1cm5zIHRoZQotLy8gY2xv
bmVkIHN0cmluZywgb3IgTlVMTCBpZiB0aGUgaW5wdXQgaXMgTlVMTC4KLWNvbnN0IGNoYXIgKiBT
dHJpbmc6OkNsb25lQ1N0cmluZyhjb25zdCBjaGFyKiBjX3N0cikgewotICByZXR1cm4gKGNfc3Ry
ID09IE5VTEwpID8KLSAgICAgICAgICAgICAgICAgICAgTlVMTCA6IENsb25lU3RyaW5nKGNfc3Ry
LCBzdHJsZW4oY19zdHIpKTsKLX0KKy8vIGNsYXNzIFN0cmluZy4KIAogI2lmIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCiAvLyBDcmVhdGVzIGEgVVRGLTE2IHdpZGUgc3RyaW5nIGZyb20gdGhlIGdp
dmVuIEFOU0kgc3RyaW5nLCBhbGxvY2F0aW5nCkBAIC04NzksMTEgKzk0OSw2IEBAIGJvb2wgU3Ry
aW5nOjpDU3RyaW5nRXF1YWxzKGNvbnN0IGNoYXIgKiBsaHMsIGNvbnN0IGNoYXIgKiByaHMpIHsK
IC8vIGVuY29kaW5nLCBhbmQgc3RyZWFtcyB0aGUgcmVzdWx0IHRvIHRoZSBnaXZlbiBNZXNzYWdl
IG9iamVjdC4KIHN0YXRpYyB2b2lkIFN0cmVhbVdpZGVDaGFyc1RvTWVzc2FnZShjb25zdCB3Y2hh
cl90KiB3c3RyLCBzaXplX3QgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE1lc3NhZ2UqIG1zZykgewotICAvLyBUT0RPKHdhbik6IGNvbnNpZGVyIGFsbG93aW5n
IGEgdGVzdGluZzo6U3RyaW5nIG9iamVjdCB0bwotICAvLyBjb250YWluICdcMCcuICBUaGlzIHdp
bGwgbWFrZSBpdCBiZWhhdmUgbW9yZSBsaWtlIHN0ZDo6c3RyaW5nLAotICAvLyBhbmQgd2lsbCBh
bGxvdyBUb1V0ZjhTdHJpbmcoKSB0byByZXR1cm4gdGhlIGNvcnJlY3QgZW5jb2RpbmcKLSAgLy8g
Zm9yICdcMCcgcy50LiB3ZSBjYW4gZ2V0IHJpZCBvZiB0aGUgY29uZGl0aW9uYWwgaGVyZSAoYW5k
IGluCi0gIC8vIHNldmVyYWwgb3RoZXIgcGxhY2VzKS4KICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
IT0gbGVuZ3RoOyApIHsgIC8vIE5PTElOVAogICAgIGlmICh3c3RyW2ldICE9IEwnXDAnKSB7CiAg
ICAgICAqbXNnIDw8IFdpZGVTdHJpbmdUb1V0Zjgod3N0ciArIGksIHN0YXRpY19jYXN0PGludD4o
bGVuZ3RoIC0gaSkpOwpAQCAtODk4LDggKzk2Myw0NSBAQCBzdGF0aWMgdm9pZCBTdHJlYW1XaWRl
Q2hhcnNUb01lc3NhZ2UoY29uc3Qgd2NoYXJfdCogd3N0ciwgc2l6ZV90IGxlbmd0aCwKIAogI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcgfHwgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5H
CiAKK3ZvaWQgU3BsaXRTdHJpbmcoY29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyLCBjaGFyIGRlbGlt
aXRlciwKKyAgICAgICAgICAgICAgICAgOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4qIGRl
c3QpIHsKKyAgOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4gcGFyc2VkOworICA6OnN0ZDo6
c3RyaW5nOjpzaXplX3R5cGUgcG9zID0gMDsKKyAgd2hpbGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6
OkFsd2F5c1RydWUoKSkgeworICAgIGNvbnN0IDo6c3RkOjpzdHJpbmc6OnNpemVfdHlwZSBjb2xv
biA9IHN0ci5maW5kKGRlbGltaXRlciwgcG9zKTsKKyAgICBpZiAoY29sb24gPT0gOjpzdGQ6OnN0
cmluZzo6bnBvcykgeworICAgICAgcGFyc2VkLnB1c2hfYmFjayhzdHIuc3Vic3RyKHBvcykpOwor
ICAgICAgYnJlYWs7CisgICAgfSBlbHNlIHsKKyAgICAgIHBhcnNlZC5wdXNoX2JhY2soc3RyLnN1
YnN0cihwb3MsIGNvbG9uIC0gcG9zKSk7CisgICAgICBwb3MgPSBjb2xvbiArIDE7CisgICAgfQor
ICB9CisgIGRlc3QtPnN3YXAocGFyc2VkKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
CiAKKy8vIENvbnN0cnVjdHMgYW4gZW1wdHkgTWVzc2FnZS4KKy8vIFdlIGFsbG9jYXRlIHRoZSBz
dHJpbmdzdHJlYW0gc2VwYXJhdGVseSBiZWNhdXNlIG90aGVyd2lzZSBlYWNoIHVzZSBvZgorLy8g
QVNTRVJUL0VYUEVDVCBpbiBhIHByb2NlZHVyZSBhZGRzIG92ZXIgMjAwIGJ5dGVzIHRvIHRoZSBw
cm9jZWR1cmUncworLy8gc3RhY2sgZnJhbWUgbGVhZGluZyB0byBodWdlIHN0YWNrIGZyYW1lcyBp
biBzb21lIGNhc2VzOyBnY2MgZG9lcyBub3QgcmV1c2UKKy8vIHRoZSBzdGFjayBzcGFjZS4KK01l
c3NhZ2U6Ok1lc3NhZ2UoKSA6IHNzXyhuZXcgOjpzdGQ6OnN0cmluZ3N0cmVhbSkgeworICAvLyBC
eSBkZWZhdWx0LCB3ZSB3YW50IHRoZXJlIHRvIGJlIGVub3VnaCBwcmVjaXNpb24gd2hlbiBwcmlu
dGluZworICAvLyBhIGRvdWJsZSB0byBhIE1lc3NhZ2UuCisgICpzc18gPDwgc3RkOjpzZXRwcmVj
aXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpkaWdpdHMxMCArIDIpOworfQorCisv
LyBUaGVzZSB0d28gb3ZlcmxvYWRzIGFsbG93IHN0cmVhbWluZyBhIHdpZGUgQyBzdHJpbmcgdG8g
YSBNZXNzYWdlCisvLyB1c2luZyB0aGUgVVRGLTggZW5jb2RpbmcuCitNZXNzYWdlJiBNZXNzYWdl
OjpvcGVyYXRvciA8PChjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKSB7CisgIHJldHVybiAqdGhp
cyA8PCBpbnRlcm5hbDo6U3RyaW5nOjpTaG93V2lkZUNTdHJpbmcod2lkZV9jX3N0cik7Cit9CitN
ZXNzYWdlJiBNZXNzYWdlOjpvcGVyYXRvciA8PCh3Y2hhcl90KiB3aWRlX2Nfc3RyKSB7CisgIHJl
dHVybiAqdGhpcyA8PCBpbnRlcm5hbDo6U3RyaW5nOjpTaG93V2lkZUNTdHJpbmcod2lkZV9jX3N0
cik7Cit9CisKICNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKIC8vIENvbnZlcnRzIHRoZSBnaXZl
biB3aWRlIHN0cmluZyB0byBhIG5hcnJvdyBzdHJpbmcgdXNpbmcgdGhlIFVURi04CiAvLyBlbmNv
ZGluZywgYW5kIHN0cmVhbXMgdGhlIHJlc3VsdCB0byB0aGlzIE1lc3NhZ2Ugb2JqZWN0LgpAQCAt
OTE4LDU1ICsxMDIwLDI2IEBAIE1lc3NhZ2UmIE1lc3NhZ2U6Om9wZXJhdG9yIDw8KGNvbnN0IDo6
d3N0cmluZyYgd3N0cikgewogfQogI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcK
IAotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8gRm9ybWF0cyBhIHZhbHVlIHRvIGJlIHVzZWQg
aW4gYSBmYWlsdXJlIG1lc3NhZ2UuCi0KLS8vIEZvciBhIGNoYXIgdmFsdWUsIHdlIHByaW50IGl0
IGFzIGEgQysrIGNoYXIgbGl0ZXJhbCBhbmQgYXMgYW4KLS8vIHVuc2lnbmVkIGludGVnZXIgKGJv
dGggaW4gZGVjaW1hbCBhbmQgaW4gaGV4YWRlY2ltYWwpLgotU3RyaW5nIEZvcm1hdEZvckZhaWx1
cmVNZXNzYWdlKGNoYXIgY2gpIHsKLSAgY29uc3QgdW5zaWduZWQgaW50IGNoX2FzX3VpbnQgPSBj
aDsKLSAgLy8gQSBTdHJpbmcgb2JqZWN0IGNhbm5vdCBjb250YWluICdcMCcsIHNvIHdlIHByaW50
ICJcXDAiIHdoZW4gY2ggaXMKLSAgLy8gJ1wwJy4KLSAgcmV0dXJuIFN0cmluZzo6Rm9ybWF0KCIn
JXMnICgldSwgMHglWCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgY2ggPyBTdHJpbmc6OkZv
cm1hdCgiJWMiLCBjaCkuY19zdHIoKSA6ICJcXDAiLAotICAgICAgICAgICAgICAgICAgICAgICAg
Y2hfYXNfdWludCwgY2hfYXNfdWludCk7Ci19Ci0KLS8vIEZvciBhIHdjaGFyX3QgdmFsdWUsIHdl
IHByaW50IGl0IGFzIGEgQysrIHdjaGFyX3QgbGl0ZXJhbCBhbmQgYXMgYW4KLS8vIHVuc2lnbmVk
IGludGVnZXIgKGJvdGggaW4gZGVjaW1hbCBhbmQgaW4gaGV4aWRlY2ltYWwpLgotU3RyaW5nIEZv
cm1hdEZvckZhaWx1cmVNZXNzYWdlKHdjaGFyX3Qgd2NoYXIpIHsKLSAgLy8gVGhlIEMrKyBzdGFu
ZGFyZCBkb2Vzbid0IHNwZWNpZnkgdGhlIGV4YWN0IHNpemUgb2YgdGhlIHdjaGFyX3QKLSAgLy8g
dHlwZS4gIEl0IGp1c3Qgc2F5cyB0aGF0IGl0IHNoYWxsIGhhdmUgdGhlIHNhbWUgc2l6ZSBhcyBh
bm90aGVyCi0gIC8vIGludGVncmFsIHR5cGUsIGNhbGxlZCBpdHMgdW5kZXJseWluZyB0eXBlLgot
ICAvLwotICAvLyBUaGVyZWZvcmUsIGluIG9yZGVyIHRvIHByaW50IGEgd2NoYXJfdCB2YWx1ZSBp
biB0aGUgbnVtZXJpYyBmb3JtLAotICAvLyB3ZSBmaXJzdCBjb252ZXJ0IGl0IHRvIHRoZSBsYXJn
ZXN0IGludGVncmFsIHR5cGUgKFVJbnQ2NCkgYW5kCi0gIC8vIHRoZW4gcHJpbnQgdGhlIGNvbnZl
cnRlZCB2YWx1ZS4KLSAgLy8KLSAgLy8gV2UgdXNlIHN0cmVhbWluZyB0byBwcmludCB0aGUgdmFs
dWUgYXMgIiVsbHUiIGRvZXNuJ3Qgd29yawotICAvLyBjb3JyZWN0bHkgd2l0aCBNU1ZDIDcuMS4K
LSAgY29uc3QgVUludDY0IHdjaGFyX2FzX3VpbnQ2NCA9IHdjaGFyOwotICBNZXNzYWdlIG1zZzsK
LSAgLy8gQSBTdHJpbmcgb2JqZWN0IGNhbm5vdCBjb250YWluICdcMCcsIHNvIHdlIHByaW50ICJc
XDAiIHdoZW4gd2NoYXIgaXMKLSAgLy8gTCdcMCcuCi0gIGNoYXIgYnVmZmVyWzMyXTsgIC8vIENv
ZGVQb2ludFRvVXRmOCByZXF1aXJlcyBhIGJ1ZmZlciB0aGF0IGJpZy4KLSAgbXNnIDw8ICJMJyIK
LSAgICAgIDw8ICh3Y2hhciA/IENvZGVQb2ludFRvVXRmOChzdGF0aWNfY2FzdDxVSW50MzI+KHdj
aGFyKSwgYnVmZmVyKSA6ICJcXDAiKQotICAgICAgPDwgIicgKCIgPDwgd2NoYXJfYXNfdWludDY0
IDw8ICIsIDB4IiA8PCA6OnN0ZDo6c2V0YmFzZSgxNikKLSAgICAgIDw8IHdjaGFyX2FzX3VpbnQ2
NCA8PCAiKSI7Ci0gIHJldHVybiBtc2cuR2V0U3RyaW5nKCk7CisvLyBHZXRzIHRoZSB0ZXh0IHN0
cmVhbWVkIHRvIHRoaXMgb2JqZWN0IHNvIGZhciBhcyBhbiBzdGQ6OnN0cmluZy4KKy8vIEVhY2gg
J1wwJyBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlciBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgorc3Rk
OjpzdHJpbmcgTWVzc2FnZTo6R2V0U3RyaW5nKCkgY29uc3QgeworICByZXR1cm4gaW50ZXJuYWw6
OlN0cmluZ1N0cmVhbVRvU3RyaW5nKHNzXy5nZXQoKSk7CiB9CiAKLX0gIC8vIG5hbWVzcGFjZSBp
bnRlcm5hbAotCiAvLyBBc3NlcnRpb25SZXN1bHQgY29uc3RydWN0b3JzLgogLy8gVXNlZCBpbiBF
WFBFQ1RfVFJVRS9GQUxTRShhc3NlcnRpb25fcmVzdWx0KS4KIEFzc2VydGlvblJlc3VsdDo6QXNz
ZXJ0aW9uUmVzdWx0KGNvbnN0IEFzc2VydGlvblJlc3VsdCYgb3RoZXIpCiAgICAgOiBzdWNjZXNz
XyhvdGhlci5zdWNjZXNzXyksCiAgICAgICBtZXNzYWdlXyhvdGhlci5tZXNzYWdlXy5nZXQoKSAh
PSBOVUxMID8KLSAgICAgICAgICAgICAgIG5ldyBpbnRlcm5hbDo6U3RyaW5nKCpvdGhlci5tZXNz
YWdlXykgOgotICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50ZXJuYWw6OlN0cmluZyo+KE5V
TEwpKSB7CisgICAgICAgICAgICAgICBuZXcgOjpzdGQ6OnN0cmluZygqb3RoZXIubWVzc2FnZV8p
IDoKKyAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PCA6OnN0ZDo6c3RyaW5nKj4oTlVMTCkpIHsK
K30KKworLy8gU3dhcHMgdHdvIEFzc2VydGlvblJlc3VsdHMuCit2b2lkIEFzc2VydGlvblJlc3Vs
dDo6c3dhcChBc3NlcnRpb25SZXN1bHQmIG90aGVyKSB7CisgIHVzaW5nIHN0ZDo6c3dhcDsKKyAg
c3dhcChzdWNjZXNzXywgb3RoZXIuc3VjY2Vzc18pOworICBzd2FwKG1lc3NhZ2VfLCBvdGhlci5t
ZXNzYWdlXyk7CiB9CiAKIC8vIFJldHVybnMgdGhlIGFzc2VydGlvbidzIG5lZ2F0aW9uLiBVc2Vk
IHdpdGggRVhQRUNUL0FTU0VSVF9GQUxTRS4KQEAgLTk5NSw2ICsxMDY4LDI3NiBAQCBBc3NlcnRp
b25SZXN1bHQgQXNzZXJ0aW9uRmFpbHVyZShjb25zdCBNZXNzYWdlJiBtZXNzYWdlKSB7CiAKIG5h
bWVzcGFjZSBpbnRlcm5hbCB7CiAKK25hbWVzcGFjZSBlZGl0X2Rpc3RhbmNlIHsKK3N0ZDo6dmVj
dG9yPEVkaXRUeXBlPiBDYWxjdWxhdGVPcHRpbWFsRWRpdHMoY29uc3Qgc3RkOjp2ZWN0b3I8c2l6
ZV90PiYgbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8c2l6ZV90PiYgcmlnaHQpIHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp2
ZWN0b3I8ZG91YmxlPiA+IGNvc3RzKAorICAgICAgbGVmdC5zaXplKCkgKyAxLCBzdGQ6OnZlY3Rv
cjxkb3VibGU+KHJpZ2h0LnNpemUoKSArIDEpKTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8
RWRpdFR5cGU+ID4gYmVzdF9tb3ZlKAorICAgICAgbGVmdC5zaXplKCkgKyAxLCBzdGQ6OnZlY3Rv
cjxFZGl0VHlwZT4ocmlnaHQuc2l6ZSgpICsgMSkpOworCisgIC8vIFBvcHVsYXRlIGZvciBlbXB0
eSByaWdodC4KKyAgZm9yIChzaXplX3QgbF9pID0gMDsgbF9pIDwgY29zdHMuc2l6ZSgpOyArK2xf
aSkgeworICAgIGNvc3RzW2xfaV1bMF0gPSBzdGF0aWNfY2FzdDxkb3VibGU+KGxfaSk7CisgICAg
YmVzdF9tb3ZlW2xfaV1bMF0gPSBrUmVtb3ZlOworICB9CisgIC8vIFBvcHVsYXRlIGZvciBlbXB0
eSBsZWZ0LgorICBmb3IgKHNpemVfdCByX2kgPSAxOyByX2kgPCBjb3N0c1swXS5zaXplKCk7ICsr
cl9pKSB7CisgICAgY29zdHNbMF1bcl9pXSA9IHN0YXRpY19jYXN0PGRvdWJsZT4ocl9pKTsKKyAg
ICBiZXN0X21vdmVbMF1bcl9pXSA9IGtBZGQ7CisgIH0KKworICBmb3IgKHNpemVfdCBsX2kgPSAw
OyBsX2kgPCBsZWZ0LnNpemUoKTsgKytsX2kpIHsKKyAgICBmb3IgKHNpemVfdCByX2kgPSAwOyBy
X2kgPCByaWdodC5zaXplKCk7ICsrcl9pKSB7CisgICAgICBpZiAobGVmdFtsX2ldID09IHJpZ2h0
W3JfaV0pIHsKKyAgICAgICAgLy8gRm91bmQgYSBtYXRjaC4gQ29uc3VtZSBpdC4KKyAgICAgICAg
Y29zdHNbbF9pICsgMV1bcl9pICsgMV0gPSBjb3N0c1tsX2ldW3JfaV07CisgICAgICAgIGJlc3Rf
bW92ZVtsX2kgKyAxXVtyX2kgKyAxXSA9IGtNYXRjaDsKKyAgICAgICAgY29udGludWU7CisgICAg
ICB9CisKKyAgICAgIGNvbnN0IGRvdWJsZSBhZGQgPSBjb3N0c1tsX2kgKyAxXVtyX2ldOworICAg
ICAgY29uc3QgZG91YmxlIHJlbW92ZSA9IGNvc3RzW2xfaV1bcl9pICsgMV07CisgICAgICBjb25z
dCBkb3VibGUgcmVwbGFjZSA9IGNvc3RzW2xfaV1bcl9pXTsKKyAgICAgIGlmIChhZGQgPCByZW1v
dmUgJiYgYWRkIDwgcmVwbGFjZSkgeworICAgICAgICBjb3N0c1tsX2kgKyAxXVtyX2kgKyAxXSA9
IGFkZCArIDE7CisgICAgICAgIGJlc3RfbW92ZVtsX2kgKyAxXVtyX2kgKyAxXSA9IGtBZGQ7Cisg
ICAgICB9IGVsc2UgaWYgKHJlbW92ZSA8IGFkZCAmJiByZW1vdmUgPCByZXBsYWNlKSB7CisgICAg
ICAgIGNvc3RzW2xfaSArIDFdW3JfaSArIDFdID0gcmVtb3ZlICsgMTsKKyAgICAgICAgYmVzdF9t
b3ZlW2xfaSArIDFdW3JfaSArIDFdID0ga1JlbW92ZTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIFdlIG1ha2UgcmVwbGFjZSBhIGxpdHRsZSBtb3JlIGV4cGVuc2l2ZSB0aGFuIGFkZC9yZW1v
dmUgdG8gbG93ZXIKKyAgICAgICAgLy8gdGhlaXIgcHJpb3JpdHkuCisgICAgICAgIGNvc3RzW2xf
aSArIDFdW3JfaSArIDFdID0gcmVwbGFjZSArIDEuMDAwMDE7CisgICAgICAgIGJlc3RfbW92ZVts
X2kgKyAxXVtyX2kgKyAxXSA9IGtSZXBsYWNlOworICAgICAgfQorICAgIH0KKyAgfQorCisgIC8v
IFJlY29uc3RydWN0IHRoZSBiZXN0IHBhdGguIFdlIGRvIGl0IGluIHJldmVyc2Ugb3JkZXIuCisg
IHN0ZDo6dmVjdG9yPEVkaXRUeXBlPiBiZXN0X3BhdGg7CisgIGZvciAoc2l6ZV90IGxfaSA9IGxl
ZnQuc2l6ZSgpLCByX2kgPSByaWdodC5zaXplKCk7IGxfaSA+IDAgfHwgcl9pID4gMDspIHsKKyAg
ICBFZGl0VHlwZSBtb3ZlID0gYmVzdF9tb3ZlW2xfaV1bcl9pXTsKKyAgICBiZXN0X3BhdGgucHVz
aF9iYWNrKG1vdmUpOworICAgIGxfaSAtPSBtb3ZlICE9IGtBZGQ7CisgICAgcl9pIC09IG1vdmUg
IT0ga1JlbW92ZTsKKyAgfQorICBzdGQ6OnJldmVyc2UoYmVzdF9wYXRoLmJlZ2luKCksIGJlc3Rf
cGF0aC5lbmQoKSk7CisgIHJldHVybiBiZXN0X3BhdGg7Cit9CisKK25hbWVzcGFjZSB7CisKKy8v
IEhlbHBlciBjbGFzcyB0byBjb252ZXJ0IHN0cmluZyBpbnRvIGlkcyB3aXRoIGRlZHVwbGljYXRp
b24uCitjbGFzcyBJbnRlcm5hbFN0cmluZ3MgeworIHB1YmxpYzoKKyAgc2l6ZV90IEdldElkKGNv
bnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKKyAgICBJZE1hcDo6aXRlcmF0b3IgaXQgPSBpZHNfLmZp
bmQoc3RyKTsKKyAgICBpZiAoaXQgIT0gaWRzXy5lbmQoKSkgcmV0dXJuIGl0LT5zZWNvbmQ7Cisg
ICAgc2l6ZV90IGlkID0gaWRzXy5zaXplKCk7CisgICAgcmV0dXJuIGlkc19bc3RyXSA9IGlkOwor
ICB9CisKKyBwcml2YXRlOgorICB0eXBlZGVmIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzaXplX3Q+
IElkTWFwOworICBJZE1hcCBpZHNfOworfTsKKworfSAgLy8gbmFtZXNwYWNlCisKK3N0ZDo6dmVj
dG9yPEVkaXRUeXBlPiBDYWxjdWxhdGVPcHRpbWFsRWRpdHMoCisgICAgY29uc3Qgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+JiBsZWZ0LAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
PiYgcmlnaHQpIHsKKyAgc3RkOjp2ZWN0b3I8c2l6ZV90PiBsZWZ0X2lkcywgcmlnaHRfaWRzOwor
ICB7CisgICAgSW50ZXJuYWxTdHJpbmdzIGludGVybl90YWJsZTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGxlZnQuc2l6ZSgpOyArK2kpIHsKKyAgICAgIGxlZnRfaWRzLnB1c2hfYmFjayhp
bnRlcm5fdGFibGUuR2V0SWQobGVmdFtpXSkpOworICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHJpZ2h0LnNpemUoKTsgKytpKSB7CisgICAgICByaWdodF9pZHMucHVzaF9iYWNrKGlu
dGVybl90YWJsZS5HZXRJZChyaWdodFtpXSkpOworICAgIH0KKyAgfQorICByZXR1cm4gQ2FsY3Vs
YXRlT3B0aW1hbEVkaXRzKGxlZnRfaWRzLCByaWdodF9pZHMpOworfQorCituYW1lc3BhY2Ugewor
CisvLyBIZWxwZXIgY2xhc3MgdGhhdCBob2xkcyB0aGUgc3RhdGUgZm9yIG9uZSBodW5rIGFuZCBw
cmludHMgaXQgb3V0IHRvIHRoZQorLy8gc3RyZWFtLgorLy8gSXQgcmVvcmRlcnMgYWRkcy9yZW1v
dmVzIHdoZW4gcG9zc2libGUgdG8gZ3JvdXAgYWxsIHJlbW92ZXMgYmVmb3JlIGFsbAorLy8gYWRk
cy4gSXQgYWxzbyBhZGRzIHRoZSBodW5rIGhlYWRlciBiZWZvcmUgcHJpbnRpbnQgaW50byB0aGUg
c3RyZWFtLgorY2xhc3MgSHVuayB7CisgcHVibGljOgorICBIdW5rKHNpemVfdCBsZWZ0X3N0YXJ0
LCBzaXplX3QgcmlnaHRfc3RhcnQpCisgICAgICA6IGxlZnRfc3RhcnRfKGxlZnRfc3RhcnQpLAor
ICAgICAgICByaWdodF9zdGFydF8ocmlnaHRfc3RhcnQpLAorICAgICAgICBhZGRzXygpLAorICAg
ICAgICByZW1vdmVzXygpLAorICAgICAgICBjb21tb25fKCkge30KKworICB2b2lkIFB1c2hMaW5l
KGNoYXIgZWRpdCwgY29uc3QgY2hhciogbGluZSkgeworICAgIHN3aXRjaCAoZWRpdCkgeworICAg
ICAgY2FzZSAnICc6CisgICAgICAgICsrY29tbW9uXzsKKyAgICAgICAgRmx1c2hFZGl0cygpOwor
ICAgICAgICBodW5rXy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoJyAnLCBsaW5lKSk7CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSAnLSc6CisgICAgICAgICsrcmVtb3Zlc187CisgICAgICAg
IGh1bmtfcmVtb3Zlc18ucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKCctJywgbGluZSkpOworICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgJysnOgorICAgICAgICArK2FkZHNfOworICAgICAgICBo
dW5rX2FkZHNfLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcignKycsIGxpbmUpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICB9CisKKyAgdm9pZCBQcmludFRvKHN0ZDo6b3N0cmVhbSogb3MpIHsK
KyAgICBQcmludEhlYWRlcihvcyk7CisgICAgRmx1c2hFZGl0cygpOworICAgIGZvciAoc3RkOjps
aXN0PHN0ZDo6cGFpcjxjaGFyLCBjb25zdCBjaGFyKj4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPQor
ICAgICAgICAgICAgIGh1bmtfLmJlZ2luKCk7CisgICAgICAgICBpdCAhPSBodW5rXy5lbmQoKTsg
KytpdCkgeworICAgICAgKm9zIDw8IGl0LT5maXJzdCA8PCBpdC0+c2Vjb25kIDw8ICJcbiI7Cisg
ICAgfQorICB9CisKKyAgYm9vbCBoYXNfZWRpdHMoKSBjb25zdCB7IHJldHVybiBhZGRzXyB8fCBy
ZW1vdmVzXzsgfQorCisgcHJpdmF0ZToKKyAgdm9pZCBGbHVzaEVkaXRzKCkgeworICAgIGh1bmtf
LnNwbGljZShodW5rXy5lbmQoKSwgaHVua19yZW1vdmVzXyk7CisgICAgaHVua18uc3BsaWNlKGh1
bmtfLmVuZCgpLCBodW5rX2FkZHNfKTsKKyAgfQorCisgIC8vIFByaW50IGEgdW5pZmllZCBkaWZm
IGhlYWRlciBmb3Igb25lIGh1bmsuCisgIC8vIFRoZSBmb3JtYXQgaXMKKyAgLy8gICAiQEAgLTxs
ZWZ0X3N0YXJ0Piw8bGVmdF9sZW5ndGg+ICs8cmlnaHRfc3RhcnQ+LDxyaWdodF9sZW5ndGg+IEBA
IgorICAvLyB3aGVyZSB0aGUgbGVmdC9yaWdodCBwYXJ0cyBhcmUgb21pdHRlZCBpZiB1bm5lY2Vz
c2FyeS4KKyAgdm9pZCBQcmludEhlYWRlcihzdGQ6Om9zdHJlYW0qIHNzKSBjb25zdCB7CisgICAg
KnNzIDw8ICJAQCAiOworICAgIGlmIChyZW1vdmVzXykgeworICAgICAgKnNzIDw8ICItIiA8PCBs
ZWZ0X3N0YXJ0XyA8PCAiLCIgPDwgKHJlbW92ZXNfICsgY29tbW9uXyk7CisgICAgfQorICAgIGlm
IChyZW1vdmVzXyAmJiBhZGRzXykgeworICAgICAgKnNzIDw8ICIgIjsKKyAgICB9CisgICAgaWYg
KGFkZHNfKSB7CisgICAgICAqc3MgPDwgIisiIDw8IHJpZ2h0X3N0YXJ0XyA8PCAiLCIgPDwgKGFk
ZHNfICsgY29tbW9uXyk7CisgICAgfQorICAgICpzcyA8PCAiIEBAXG4iOworICB9CisKKyAgc2l6
ZV90IGxlZnRfc3RhcnRfLCByaWdodF9zdGFydF87CisgIHNpemVfdCBhZGRzXywgcmVtb3Zlc18s
IGNvbW1vbl87CisgIHN0ZDo6bGlzdDxzdGQ6OnBhaXI8Y2hhciwgY29uc3QgY2hhcio+ID4gaHVu
a18sIGh1bmtfYWRkc18sIGh1bmtfcmVtb3Zlc187Cit9OworCit9ICAvLyBuYW1lc3BhY2UKKwor
Ly8gQ3JlYXRlIGEgbGlzdCBvZiBkaWZmIGh1bmtzIGluIFVuaWZpZWQgZGlmZiBmb3JtYXQuCisv
LyBFYWNoIGh1bmsgaGFzIGEgaGVhZGVyIGdlbmVyYXRlZCBieSBQcmludEhlYWRlciBhYm92ZSBw
bHVzIGEgYm9keSB3aXRoCisvLyBsaW5lcyBwcmVmaXhlZCB3aXRoICcgJyBmb3Igbm8gY2hhbmdl
LCAnLScgZm9yIGRlbGV0aW9uIGFuZCAnKycgZm9yCisvLyBhZGRpdGlvbi4KKy8vICdjb250ZXh0
JyByZXByZXNlbnRzIHRoZSBkZXNpcmVkIHVuY2hhbmdlZCBwcmVmaXgvc3VmZml4IGFyb3VuZCB0
aGUgZGlmZi4KKy8vIElmIHR3byBodW5rcyBhcmUgY2xvc2UgZW5vdWdoIHRoYXQgdGhlaXIgY29u
dGV4dHMgb3ZlcmxhcCwgdGhlbiB0aGV5IGFyZQorLy8gam9pbmVkIGludG8gb25lIGh1bmsuCitz
dGQ6OnN0cmluZyBDcmVhdGVVbmlmaWVkRGlmZihjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4mIGxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4mIHJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGNvbnRleHQpIHsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+IGVkaXRzID0gQ2Fs
Y3VsYXRlT3B0aW1hbEVkaXRzKGxlZnQsIHJpZ2h0KTsKKworICBzaXplX3QgbF9pID0gMCwgcl9p
ID0gMCwgZWRpdF9pID0gMDsKKyAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIHdoaWxlIChlZGl0
X2kgPCBlZGl0cy5zaXplKCkpIHsKKyAgICAvLyBGaW5kIGZpcnN0IGVkaXQuCisgICAgd2hpbGUg
KGVkaXRfaSA8IGVkaXRzLnNpemUoKSAmJiBlZGl0c1tlZGl0X2ldID09IGtNYXRjaCkgeworICAg
ICAgKytsX2k7CisgICAgICArK3JfaTsKKyAgICAgICsrZWRpdF9pOworICAgIH0KKworICAgIC8v
IEZpbmQgdGhlIGZpcnN0IGxpbmUgdG8gaW5jbHVkZSBpbiB0aGUgaHVuay4KKyAgICBjb25zdCBz
aXplX3QgcHJlZml4X2NvbnRleHQgPSBzdGQ6Om1pbihsX2ksIGNvbnRleHQpOworICAgIEh1bmsg
aHVuayhsX2kgLSBwcmVmaXhfY29udGV4dCArIDEsIHJfaSAtIHByZWZpeF9jb250ZXh0ICsgMSk7
CisgICAgZm9yIChzaXplX3QgaSA9IHByZWZpeF9jb250ZXh0OyBpID4gMDsgLS1pKSB7CisgICAg
ICBodW5rLlB1c2hMaW5lKCcgJywgbGVmdFtsX2kgLSBpXS5jX3N0cigpKTsKKyAgICB9CisKKyAg
ICAvLyBJdGVyYXRlIHRoZSBlZGl0cyB1bnRpbCB3ZSBmb3VuZCBlbm91Z2ggc3VmZml4IGZvciB0
aGUgaHVuayBvciB0aGUgaW5wdXQKKyAgICAvLyBpcyBvdmVyLgorICAgIHNpemVfdCBuX3N1ZmZp
eCA9IDA7CisgICAgZm9yICg7IGVkaXRfaSA8IGVkaXRzLnNpemUoKTsgKytlZGl0X2kpIHsKKyAg
ICAgIGlmIChuX3N1ZmZpeCA+PSBjb250ZXh0KSB7CisgICAgICAgIC8vIENvbnRpbnVlIG9ubHkg
aWYgdGhlIG5leHQgaHVuayBpcyB2ZXJ5IGNsb3NlLgorICAgICAgICBzdGQ6OnZlY3RvcjxFZGl0
VHlwZT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZWRpdHMuYmVnaW4oKSArIGVkaXRfaTsKKyAgICAg
ICAgd2hpbGUgKGl0ICE9IGVkaXRzLmVuZCgpICYmICppdCA9PSBrTWF0Y2gpICsraXQ7CisgICAg
ICAgIGlmIChpdCA9PSBlZGl0cy5lbmQoKSB8fCAoaXQgLSBlZGl0cy5iZWdpbigpKSAtIGVkaXRf
aSA+PSBjb250ZXh0KSB7CisgICAgICAgICAgLy8gVGhlcmUgaXMgbm8gbmV4dCBlZGl0IG9yIGl0
IGlzIHRvbyBmYXIgYXdheS4KKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgfQor
CisgICAgICBFZGl0VHlwZSBlZGl0ID0gZWRpdHNbZWRpdF9pXTsKKyAgICAgIC8vIFJlc2V0IGNv
dW50IHdoZW4gYSBub24gbWF0Y2ggaXMgZm91bmQuCisgICAgICBuX3N1ZmZpeCA9IGVkaXQgPT0g
a01hdGNoID8gbl9zdWZmaXggKyAxIDogMDsKKworICAgICAgaWYgKGVkaXQgPT0ga01hdGNoIHx8
IGVkaXQgPT0ga1JlbW92ZSB8fCBlZGl0ID09IGtSZXBsYWNlKSB7CisgICAgICAgIGh1bmsuUHVz
aExpbmUoZWRpdCA9PSBrTWF0Y2ggPyAnICcgOiAnLScsIGxlZnRbbF9pXS5jX3N0cigpKTsKKyAg
ICAgIH0KKyAgICAgIGlmIChlZGl0ID09IGtBZGQgfHwgZWRpdCA9PSBrUmVwbGFjZSkgeworICAg
ICAgICBodW5rLlB1c2hMaW5lKCcrJywgcmlnaHRbcl9pXS5jX3N0cigpKTsKKyAgICAgIH0KKwor
ICAgICAgLy8gQWR2YW5jZSBpbmRpY2VzLCBkZXBlbmRpbmcgb24gZWRpdCB0eXBlLgorICAgICAg
bF9pICs9IGVkaXQgIT0ga0FkZDsKKyAgICAgIHJfaSArPSBlZGl0ICE9IGtSZW1vdmU7CisgICAg
fQorCisgICAgaWYgKCFodW5rLmhhc19lZGl0cygpKSB7CisgICAgICAvLyBXZSBhcmUgZG9uZS4g
V2UgZG9uJ3Qgd2FudCB0aGlzIGh1bmsuCisgICAgICBicmVhazsKKyAgICB9CisKKyAgICBodW5r
LlByaW50VG8oJnNzKTsKKyAgfQorICByZXR1cm4gc3Muc3RyKCk7Cit9CisKK30gIC8vIG5hbWVz
cGFjZSBlZGl0X2Rpc3RhbmNlCisKK25hbWVzcGFjZSB7CisKKy8vIFRoZSBzdHJpbmcgcmVwcmVz
ZW50YXRpb24gb2YgdGhlIHZhbHVlcyByZWNlaXZlZCBpbiBFcUZhaWx1cmUoKSBhcmUgYWxyZWFk
eQorLy8gZXNjYXBlZC4gU3BsaXQgdGhlbSBvbiBlc2NhcGVkICdcbicgYm91bmRhcmllcy4gTGVh
dmUgYWxsIG90aGVyIGVzY2FwZWQKKy8vIGNoYXJhY3RlcnMgdGhlIHNhbWUuCitzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4gU3BsaXRFc2NhcGVkU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIp
IHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGxpbmVzOworICBzaXplX3Qgc3RhcnQgPSAw
LCBlbmQgPSBzdHIuc2l6ZSgpOworICBpZiAoZW5kID4gMiAmJiBzdHJbMF0gPT0gJyInICYmIHN0
cltlbmQgLSAxXSA9PSAnIicpIHsKKyAgICArK3N0YXJ0OworICAgIC0tZW5kOworICB9CisgIGJv
b2wgZXNjYXBlZCA9IGZhbHNlOworICBmb3IgKHNpemVfdCBpID0gc3RhcnQ7IGkgKyAxIDwgZW5k
OyArK2kpIHsKKyAgICBpZiAoZXNjYXBlZCkgeworICAgICAgZXNjYXBlZCA9IGZhbHNlOworICAg
ICAgaWYgKHN0cltpXSA9PSAnbicpIHsKKyAgICAgICAgbGluZXMucHVzaF9iYWNrKHN0ci5zdWJz
dHIoc3RhcnQsIGkgLSBzdGFydCAtIDEpKTsKKyAgICAgICAgc3RhcnQgPSBpICsgMTsKKyAgICAg
IH0KKyAgICB9IGVsc2UgeworICAgICAgZXNjYXBlZCA9IHN0cltpXSA9PSAnXFwnOworICAgIH0K
KyAgfQorICBsaW5lcy5wdXNoX2JhY2soc3RyLnN1YnN0cihzdGFydCwgZW5kIC0gc3RhcnQpKTsK
KyAgcmV0dXJuIGxpbmVzOworfQorCit9ICAvLyBuYW1lc3BhY2UKKwogLy8gQ29uc3RydWN0cyBh
bmQgcmV0dXJucyB0aGUgbWVzc2FnZSBmb3IgYW4gZXF1YWxpdHkgYXNzZXJ0aW9uCiAvLyAoZS5n
LiBBU1NFUlRfRVEsIEVYUEVDVF9TVFJFUSwgZXRjKSBmYWlsdXJlLgogLy8KQEAgLTEwMDIsNDEg
KzEzNDUsNTQgQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIC8vIGFuZCB0aGVpciB2YWx1ZXMsIGFz
IHN0cmluZ3MuICBGb3IgZXhhbXBsZSwgZm9yIEFTU0VSVF9FUShmb28sIGJhcikKIC8vIHdoZXJl
IGZvbyBpcyA1IGFuZCBiYXIgaXMgNiwgd2UgaGF2ZToKIC8vCi0vLyAgIGV4cGVjdGVkX2V4cHJl
c3Npb246ICJmb28iCi0vLyAgIGFjdHVhbF9leHByZXNzaW9uOiAgICJiYXIiCi0vLyAgIGV4cGVj
dGVkX3ZhbHVlOiAgICAgICI1IgotLy8gICBhY3R1YWxfdmFsdWU6ICAgICAgICAiNiIKKy8vICAg
bGhzX2V4cHJlc3Npb246ICJmb28iCisvLyAgIHJoc19leHByZXNzaW9uOiAiYmFyIgorLy8gICBs
aHNfdmFsdWU6ICAgICAgIjUiCisvLyAgIHJoc192YWx1ZTogICAgICAiNiIKIC8vCiAvLyBUaGUg
aWdub3JpbmdfY2FzZSBwYXJhbWV0ZXIgaXMgdHJ1ZSBpZmYgdGhlIGFzc2VydGlvbiBpcyBhCi0v
LyAqX1NUUkNBU0VFUSouICBXaGVuIGl0J3MgdHJ1ZSwgdGhlIHN0cmluZyAiIChpZ25vcmluZyBj
YXNlKSIgd2lsbAorLy8gKl9TVFJDQVNFRVEqLiAgV2hlbiBpdCdzIHRydWUsIHRoZSBzdHJpbmcg
Iklnbm9yaW5nIGNhc2UiIHdpbGwKIC8vIGJlIGluc2VydGVkIGludG8gdGhlIG1lc3NhZ2UuCi1B
c3NlcnRpb25SZXN1bHQgRXFGYWlsdXJlKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4cGVjdGVkX3ZhbHVl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGFjdHVhbF92YWx1ZSwK
K0Fzc2VydGlvblJlc3VsdCBFcUZhaWx1cmUoY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbGhzX3ZhbHVlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcmhzX3ZhbHVlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yaW5nX2Nhc2UpIHsKICAgTWVzc2FnZSBt
c2c7Ci0gIG1zZyA8PCAiVmFsdWUgb2Y6ICIgPDwgYWN0dWFsX2V4cHJlc3Npb247Ci0gIGlmIChh
Y3R1YWxfdmFsdWUgIT0gYWN0dWFsX2V4cHJlc3Npb24pIHsKLSAgICBtc2cgPDwgIlxuICBBY3R1
YWw6ICIgPDwgYWN0dWFsX3ZhbHVlOworICBtc2cgPDwgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRo
ZXNlIHZhbHVlczoiOworICBtc2cgPDwgIlxuICAiIDw8IGxoc19leHByZXNzaW9uOworICBpZiAo
bGhzX3ZhbHVlICE9IGxoc19leHByZXNzaW9uKSB7CisgICAgbXNnIDw8ICJcbiAgICBXaGljaCBp
czogIiA8PCBsaHNfdmFsdWU7CisgIH0KKyAgbXNnIDw8ICJcbiAgIiA8PCByaHNfZXhwcmVzc2lv
bjsKKyAgaWYgKHJoc192YWx1ZSAhPSByaHNfZXhwcmVzc2lvbikgeworICAgIG1zZyA8PCAiXG4g
ICAgV2hpY2ggaXM6ICIgPDwgcmhzX3ZhbHVlOwogICB9CiAKLSAgbXNnIDw8ICJcbkV4cGVjdGVk
OiAiIDw8IGV4cGVjdGVkX2V4cHJlc3Npb247CiAgIGlmIChpZ25vcmluZ19jYXNlKSB7Ci0gICAg
bXNnIDw8ICIgKGlnbm9yaW5nIGNhc2UpIjsKKyAgICBtc2cgPDwgIlxuSWdub3JpbmcgY2FzZSI7
CiAgIH0KLSAgaWYgKGV4cGVjdGVkX3ZhbHVlICE9IGV4cGVjdGVkX2V4cHJlc3Npb24pIHsKLSAg
ICBtc2cgPDwgIlxuV2hpY2ggaXM6ICIgPDwgZXhwZWN0ZWRfdmFsdWU7CisKKyAgaWYgKCFsaHNf
dmFsdWUuZW1wdHkoKSAmJiAhcmhzX3ZhbHVlLmVtcHR5KCkpIHsKKyAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4gbGhzX2xpbmVzID0KKyAgICAgICAgU3BsaXRFc2NhcGVkU3RyaW5n
KGxoc192YWx1ZSk7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHJoc19saW5l
cyA9CisgICAgICAgIFNwbGl0RXNjYXBlZFN0cmluZyhyaHNfdmFsdWUpOworICAgIGlmIChsaHNf
bGluZXMuc2l6ZSgpID4gMSB8fCByaHNfbGluZXMuc2l6ZSgpID4gMSkgeworICAgICAgbXNnIDw8
ICJcbldpdGggZGlmZjpcbiIKKyAgICAgICAgICA8PCBlZGl0X2Rpc3RhbmNlOjpDcmVhdGVVbmlm
aWVkRGlmZihsaHNfbGluZXMsIHJoc19saW5lcyk7CisgICAgfQogICB9CiAKLSAgcmV0dXJuIEFz
c2VydGlvbkZhaWx1cmUobXNnKTsKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBtc2c7
CiB9CiAKIC8vIENvbnN0cnVjdHMgYSBmYWlsdXJlIG1lc3NhZ2UgZm9yIEJvb2xlYW4gYXNzZXJ0
aW9ucyBzdWNoIGFzIEVYUEVDVF9UUlVFLgotU3RyaW5nIEdldEJvb2xBc3NlcnRpb25GYWlsdXJl
TWVzc2FnZShjb25zdCBBc3NlcnRpb25SZXN1bHQmIGFzc2VydGlvbl9yZXN1bHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cHJlc3Npb25fdGV4
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0
dWFsX3ByZWRpY2F0ZV92YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogZXhwZWN0ZWRfcHJlZGljYXRlX3ZhbHVlKSB7CitzdGQ6OnN0cmluZyBH
ZXRCb29sQXNzZXJ0aW9uRmFpbHVyZU1lc3NhZ2UoCisgICAgY29uc3QgQXNzZXJ0aW9uUmVzdWx0
JiBhc3NlcnRpb25fcmVzdWx0LAorICAgIGNvbnN0IGNoYXIqIGV4cHJlc3Npb25fdGV4dCwKKyAg
ICBjb25zdCBjaGFyKiBhY3R1YWxfcHJlZGljYXRlX3ZhbHVlLAorICAgIGNvbnN0IGNoYXIqIGV4
cGVjdGVkX3ByZWRpY2F0ZV92YWx1ZSkgewogICBjb25zdCBjaGFyKiBhY3R1YWxfbWVzc2FnZSA9
IGFzc2VydGlvbl9yZXN1bHQubWVzc2FnZSgpOwogICBNZXNzYWdlIG1zZzsKICAgbXNnIDw8ICJW
YWx1ZSBvZjogIiA8PCBleHByZXNzaW9uX3RleHQKQEAgLTEwNTcsMTUgKzE0MTMsMTQgQEAgQXNz
ZXJ0aW9uUmVzdWx0IERvdWJsZU5lYXJQcmVkRm9ybWF0KGNvbnN0IGNoYXIqIGV4cHIxLAogICBj
b25zdCBkb3VibGUgZGlmZiA9IGZhYnModmFsMSAtIHZhbDIpOwogICBpZiAoZGlmZiA8PSBhYnNf
ZXJyb3IpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgLy8gVE9ETyh3YW4pOiBkbyBu
b3QgcHJpbnQgdGhlIHZhbHVlIG9mIGFuIGV4cHJlc3Npb24gaWYgaXQncworICAvLyBGSVhNRTog
ZG8gbm90IHByaW50IHRoZSB2YWx1ZSBvZiBhbiBleHByZXNzaW9uIGlmIGl0J3MKICAgLy8gYWxy
ZWFkeSBhIGxpdGVyYWwuCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgIlRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gIiA8PCBleHByMSA8PCAiIGFuZCAiIDw8IGV4cHIyCisgIHJldHVybiBBc3NlcnRp
b25GYWlsdXJlKCkKKyAgICAgIDw8ICJUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuICIgPDwgZXhwcjEg
PDwgIiBhbmQgIiA8PCBleHByMgogICAgICAgPDwgIiBpcyAiIDw8IGRpZmYgPDwgIiwgd2hpY2gg
ZXhjZWVkcyAiIDw8IGFic19lcnJvcl9leHByIDw8ICIsIHdoZXJlXG4iCiAgICAgICA8PCBleHBy
MSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHZhbDEgPDwgIixcbiIKICAgICAgIDw8IGV4cHIyIDw8
ICIgZXZhbHVhdGVzIHRvICIgPDwgdmFsMiA8PCAiLCBhbmRcbiIKICAgICAgIDw8IGFic19lcnJv
cl9leHByIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgYWJzX2Vycm9yIDw8ICIuIjsKLSAgcmV0dXJu
IEFzc2VydGlvbkZhaWx1cmUobXNnKTsKIH0KIAogCkBAIC0xMDkwLDIwICsxNDQ1LDE4IEBAIEFz
c2VydGlvblJlc3VsdCBGbG9hdGluZ1BvaW50TEUoY29uc3QgY2hhciogZXhwcjEsCiAgIC8vIHZh
bDIgaXMgTmFOLCBhcyB0aGUgSUVFRSBmbG9hdGluZy1wb2ludCBzdGFuZGFyZCByZXF1aXJlcyB0
aGF0CiAgIC8vIGFueSBwcmVkaWNhdGUgaW52b2x2aW5nIGEgTmFOIG11c3QgcmV0dXJuIGZhbHNl
LgogCi0gIFN0clN0cmVhbSB2YWwxX3NzOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHZhbDFfc3M7
CiAgIHZhbDFfc3MgPDwgc3RkOjpzZXRwcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxSYXdU
eXBlPjo6ZGlnaXRzMTAgKyAyKQogICAgICAgICAgIDw8IHZhbDE7CiAKLSAgU3RyU3RyZWFtIHZh
bDJfc3M7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gdmFsMl9zczsKICAgdmFsMl9zcyA8PCBzdGQ6
OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+OjpkaWdpdHMxMCArIDIp
CiAgICAgICAgICAgPDwgdmFsMjsKIAotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8ICJFeHBlY3Rl
ZDogKCIgPDwgZXhwcjEgPDwgIikgPD0gKCIgPDwgZXhwcjIgPDwgIilcbiIKLSAgICAgIDw8ICIg
IEFjdHVhbDogIiA8PCBTdHJTdHJlYW1Ub1N0cmluZygmdmFsMV9zcykgPDwgIiB2cyAiCi0gICAg
ICA8PCBTdHJTdHJlYW1Ub1N0cmluZygmdmFsMl9zcyk7Ci0KLSAgcmV0dXJuIEFzc2VydGlvbkZh
aWx1cmUobXNnKTsKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwgIkV4cGVj
dGVkOiAoIiA8PCBleHByMSA8PCAiKSA8PSAoIiA8PCBleHByMiA8PCAiKVxuIgorICAgICAgPDwg
IiAgQWN0dWFsOiAiIDw8IFN0cmluZ1N0cmVhbVRvU3RyaW5nKCZ2YWwxX3NzKSA8PCAiIHZzICIK
KyAgICAgIDw8IFN0cmluZ1N0cmVhbVRvU3RyaW5nKCZ2YWwyX3NzKTsKIH0KIAogfSAgLy8gbmFt
ZXNwYWNlIGludGVybmFsCkBAIC0xMTI2LDE4ICsxNDc5LDE4IEBAIG5hbWVzcGFjZSBpbnRlcm5h
bCB7CiAKIC8vIFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9FUSB3aXRo
IGludCBvciBlbnVtCiAvLyBhcmd1bWVudHMuCi1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRVEo
Y29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCaWdnZXN0SW50IGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEJpZ2dlc3RJbnQgYWN0dWFsKSB7Ci0gIGlmIChleHBlY3RlZCA9PSBhY3R1YWwpIHsKK0Fzc2Vy
dGlvblJlc3VsdCBDbXBIZWxwZXJFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGxocywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBCaWdnZXN0SW50IHJocykgeworICBpZiAobGhzID09IHJocykgewogICAgIHJl
dHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAgIH0KIAotICByZXR1cm4gRXFGYWlsdXJlKGV4cGVj
dGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgYWN0dWFsX2V4cHJlc3Npb24sCi0g
ICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKGV4cGVj
dGVkLCBhY3R1YWwpLAotICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWls
dXJlTWVzc2FnZShhY3R1YWwsIGV4cGVjdGVkKSwKKyAgcmV0dXJuIEVxRmFpbHVyZShsaHNfZXhw
cmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UobGhzLCByaHMpLAorICAg
ICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShyaHMsIGxo
cyksCiAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwogfQogCkBAIC0xMTUwLDExICsxNTAzLDEw
IEBAIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXIjI29wX25hbWUoY29uc3QgY2hhciogZXhwcjEs
IGNvbnN0IGNoYXIqIGV4cHIyLCBcCiAgIGlmICh2YWwxIG9wIHZhbDIpIHtcCiAgICAgcmV0dXJu
IEFzc2VydGlvblN1Y2Nlc3MoKTtcCiAgIH0gZWxzZSB7XAotICAgIE1lc3NhZ2UgbXNnO1wKLSAg
ICBtc2cgPDwgIkV4cGVjdGVkOiAoIiA8PCBleHByMSA8PCAiKSAiICNvcCAiICgiIDw8IGV4cHIy
XAorICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgXAorICAgICAgICA8PCAiRXhwZWN0ZWQ6
ICgiIDw8IGV4cHIxIDw8ICIpICIgI29wICIgKCIgPDwgZXhwcjJcCiAgICAgICAgIDw8ICIpLCBh
Y3R1YWw6ICIgPDwgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHZhbDEsIHZhbDIp
XAogICAgICAgICA8PCAiIHZzICIgPDwgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdl
KHZhbDIsIHZhbDEpO1wKLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpO1wKICAgfVwK
IH0KIApAQCAtMTE3NywzNCArMTUyOSwzNCBAQCBHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKEdULCA+
ICkKICN1bmRlZiBHVEVTVF9JTVBMX0NNUF9IRUxQRVJfCiAKIC8vIFRoZSBoZWxwZXIgZnVuY3Rp
b24gZm9yIHtBU1NFUlR8RVhQRUNUfV9TVFJFUS4KLUFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJT
VFJFUShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbCkgewotICBpZiAoU3RyaW5nOjpDU3Ry
aW5nRXF1YWxzKGV4cGVjdGVkLCBhY3R1YWwpKSB7CitBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVy
U1RSRVEoY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHJocykgeworICBpZiAoU3RyaW5nOjpDU3RyaW5nRXF1YWxzKGxocywg
cmhzKSkgewogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAgIH0KIAotICByZXR1cm4g
RXFGYWlsdXJlKGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgYWN0dWFs
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93Q1N0cmluZ1F1b3Rl
ZChleHBlY3RlZCksCi0gICAgICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93Q1N0cmluZ1F1b3Rl
ZChhY3R1YWwpLAorICByZXR1cm4gRXFGYWlsdXJlKGxoc19leHByZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIFByaW50VG9TdHJp
bmcobGhzKSwKKyAgICAgICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKHJocyksCiAgICAgICAg
ICAgICAgICAgICAgZmFsc2UpOwogfQogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNT
RVJUfEVYUEVDVH1fU1RSQ0FTRUVRLgotQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VF
UShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbCkgewotICBpZiAoU3Ry
aW5nOjpDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGV4cGVjdGVkLCBhY3R1YWwpKSB7CitB
c3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSQ0FTRUVRKGNvbnN0IGNoYXIqIGxoc19leHByZXNz
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNf
ZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBy
aHMpIHsKKyAgaWYgKFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFscyhsaHMsIHJo
cykpIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9CiAKLSAgcmV0dXJuIEVx
RmFpbHVyZShleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIGFjdHVhbF9l
eHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQo
ZXhwZWN0ZWQpLAotICAgICAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQo
YWN0dWFsKSwKKyAgcmV0dXJuIEVxRmFpbHVyZShsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICBQcmludFRvU3RyaW5n
KGxocyksCisgICAgICAgICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhyaHMpLAogICAgICAgICAg
ICAgICAgICAgIHRydWUpOwogfQogCkBAIC0xMjE2LDExICsxNTY4LDkgQEAgQXNzZXJ0aW9uUmVz
dWx0IENtcEhlbHBlclNUUk5FKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24sCiAgIGlmICghU3Ry
aW5nOjpDU3RyaW5nRXF1YWxzKHMxLCBzMikpIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2Vz
cygpOwogICB9IGVsc2UgewotICAgIE1lc3NhZ2UgbXNnOwotICAgIG1zZyA8PCAiRXhwZWN0ZWQ6
ICgiIDw8IHMxX2V4cHJlc3Npb24gPDwgIikgIT0gKCIKLSAgICAgICAgPDwgczJfZXhwcmVzc2lv
biA8PCAiKSwgYWN0dWFsOiBcIiIKLSAgICAgICAgPDwgczEgPDwgIlwiIHZzIFwiIiA8PCBzMiA8
PCAiXCIiOwotICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgICAgcmV0dXJuIEFz
c2VydGlvbkZhaWx1cmUoKSA8PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4cHJlc3Npb24gPDwgIikg
IT0gKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHMyX2V4cHJlc3Npb24gPDwg
IiksIGFjdHVhbDogXCIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzMSA8PCAi
XCIgdnMgXCIiIDw8IHMyIDw8ICJcIiI7CiAgIH0KIH0KIApAQCAtMTIzMiwxMSArMTU4MiwxMCBA
QCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSQ0FTRU5FKGNvbnN0IGNoYXIqIHMxX2V4cHJl
c3Npb24sCiAgIGlmICghU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKHMxLCBz
MikpIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9IGVsc2UgewotICAgIE1l
c3NhZ2UgbXNnOwotICAgIG1zZyA8PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4cHJlc3Npb24gPDwg
IikgIT0gKCIKKyAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICAgIDw8ICJFeHBl
Y3RlZDogKCIgPDwgczFfZXhwcmVzc2lvbiA8PCAiKSAhPSAoIgogICAgICAgICA8PCBzMl9leHBy
ZXNzaW9uIDw8ICIpIChpZ25vcmluZyBjYXNlKSwgYWN0dWFsOiBcIiIKICAgICAgICAgPDwgczEg
PDwgIlwiIHZzIFwiIiA8PCBzMiA8PCAiXCIiOwotICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJl
KG1zZyk7CiAgIH0KIH0KIApAQCAtMTI4NSwxMyArMTYzNCwxMiBAQCBBc3NlcnRpb25SZXN1bHQg
SXNTdWJzdHJpbmdJbXBsKAogCiAgIGNvbnN0IGJvb2wgaXNfd2lkZV9zdHJpbmcgPSBzaXplb2Yo
bmVlZGxlWzBdKSA+IDE7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGJlZ2luX3N0cmluZ19xdW90ZSA9
IGlzX3dpZGVfc3RyaW5nID8gIkxcIiIgOiAiXCIiOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVy
ZSgKLSAgICAgIE1lc3NhZ2UoKQorICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpCiAgICAgICA8
PCAiVmFsdWUgb2Y6ICIgPDwgbmVlZGxlX2V4cHIgPDwgIlxuIgogICAgICAgPDwgIiAgQWN0dWFs
OiAiIDw8IGJlZ2luX3N0cmluZ19xdW90ZSA8PCBuZWVkbGUgPDwgIlwiXG4iCiAgICAgICA8PCAi
RXhwZWN0ZWQ6ICIgPDwgKGV4cGVjdGVkX3RvX2JlX3N1YnN0cmluZyA/ICIiIDogIm5vdCAiKQog
ICAgICAgPDwgImEgc3Vic3RyaW5nIG9mICIgPDwgaGF5c3RhY2tfZXhwciA8PCAiXG4iCi0gICAg
ICA8PCAiV2hpY2ggaXM6ICIgPDwgYmVnaW5fc3RyaW5nX3F1b3RlIDw8IGhheXN0YWNrIDw8ICJc
IiIpOworICAgICAgPDwgIldoaWNoIGlzOiAiIDw8IGJlZ2luX3N0cmluZ19xdW90ZSA8PCBoYXlz
dGFjayA8PCAiXCIiOwogfQogCiB9ICAvLyBuYW1lc3BhY2UKQEAgLTEzNjAsMTYgKzE3MDgsMTkg
QEAgbmFtZXNwYWNlIHsKIEFzc2VydGlvblJlc3VsdCBIUkVTVUxURmFpbHVyZUhlbHBlcihjb25z
dCBjaGFyKiBleHByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv
bmcgaHIpIHsgIC8vIE5PTElOVAotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGlmIEdU
RVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNUX09TX1dJTkRPV1NfVFZfVElUTEUKKwogICAv
LyBXaW5kb3dzIENFIGRvZXNuJ3Qgc3VwcG9ydCBGb3JtYXRNZXNzYWdlLgogICBjb25zdCBjaGFy
IGVycm9yX3RleHRbXSA9ICIiOwotI2Vsc2UKKworIyBlbHNlCisKICAgLy8gTG9va3MgdXAgdGhl
IGh1bWFuLXJlYWRhYmxlIHN5c3RlbSBtZXNzYWdlIGZvciB0aGUgSFJFU1VMVCBjb2RlCiAgIC8v
IGFuZCBzaW5jZSB3ZSdyZSBub3QgcGFzc2luZyBhbnkgcGFyYW1zIHRvIEZvcm1hdE1lc3NhZ2Us
IHdlIGRvbid0CiAgIC8vIHdhbnQgaW5zZXJ0cyBleHBhbmRlZC4KICAgY29uc3QgRFdPUkQga0Zs
YWdzID0gRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0gfAogICAgICAgICAgICAgICAgICAgICAg
ICBGT1JNQVRfTUVTU0FHRV9JR05PUkVfSU5TRVJUUzsKLSAgY29uc3QgRFdPUkQga0J1ZlNpemUg
PSA0MDk2OyAgLy8gU3RyaW5nOjpGb3JtYXQgY2FuJ3QgZXhjZWVkIHRoaXMgbGVuZ3RoLgorICBj
b25zdCBEV09SRCBrQnVmU2l6ZSA9IDQwOTY7CiAgIC8vIEdldHMgdGhlIHN5c3RlbSdzIGh1bWFu
IHJlYWRhYmxlIG1lc3NhZ2Ugc3RyaW5nIGZvciB0aGlzIEhSRVNVTFQuCiAgIGNoYXIgZXJyb3Jf
dGV4dFtrQnVmU2l6ZV0gPSB7ICdcMCcgfTsKICAgRFdPUkQgbWVzc2FnZV9sZW5ndGggPSA6OkZv
cm1hdE1lc3NhZ2VBKGtGbGFncywKQEAgLTEzNzksMTkgKzE3MzAsMTggQEAgQXNzZXJ0aW9uUmVz
dWx0IEhSRVNVTFRGYWlsdXJlSGVscGVyKGNvbnN0IGNoYXIqIGV4cHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl90ZXh0LCAgLy8gb3V0cHV0IGJ1ZmZl
cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0J1ZlNpemUsICAv
LyBidWYgc2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM
TCk7ICAvLyBubyBhcmd1bWVudHMgZm9yIGluc2VydHMKLSAgLy8gVHJpbXMgdGFpbGluZyB3aGl0
ZSBzcGFjZSAoRm9ybWF0TWVzc2FnZSBsZWF2ZXMgYSB0cmFpbGluZyBjci1sZikKLSAgZm9yICg7
IG1lc3NhZ2VfbGVuZ3RoICYmIGlzc3BhY2UoZXJyb3JfdGV4dFttZXNzYWdlX2xlbmd0aCAtIDFd
KTsKKyAgLy8gVHJpbXMgdGFpbGluZyB3aGl0ZSBzcGFjZSAoRm9ybWF0TWVzc2FnZSBsZWF2ZXMg
YSB0cmFpbGluZyBDUi1MRikKKyAgZm9yICg7IG1lc3NhZ2VfbGVuZ3RoICYmIElzU3BhY2UoZXJy
b3JfdGV4dFttZXNzYWdlX2xlbmd0aCAtIDFdKTsKICAgICAgICAgICAtLW1lc3NhZ2VfbGVuZ3Ro
KSB7CiAgICAgZXJyb3JfdGV4dFttZXNzYWdlX2xlbmd0aCAtIDFdID0gJ1wwJzsKICAgfQotI2Vu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogCi0gIGNvbnN0IFN0cmluZyBlcnJvcl9o
ZXgoU3RyaW5nOjpGb3JtYXQoIjB4JTA4WCAiLCBocikpOwotICBNZXNzYWdlIG1zZzsKLSAgbXNn
IDw8ICJFeHBlY3RlZDogIiA8PCBleHByIDw8ICIgIiA8PCBleHBlY3RlZCA8PCAiLlxuIgotICAg
ICAgPDwgIiAgQWN0dWFsOiAiIDw8IGVycm9yX2hleCA8PCBlcnJvcl90ZXh0IDw8ICJcbiI7Cisj
IGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogCi0gIHJldHVybiA6OnRlc3Rpbmc6
OkFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZXJyb3JfaGV4KCIw
eCIgKyBTdHJpbmc6OkZvcm1hdEhleEludChocikpOworICByZXR1cm4gOjp0ZXN0aW5nOjpBc3Nl
cnRpb25GYWlsdXJlKCkKKyAgICAgIDw8ICJFeHBlY3RlZDogIiA8PCBleHByIDw8ICIgIiA8PCBl
eHBlY3RlZCA8PCAiLlxuIgorICAgICAgPDwgIiAgQWN0dWFsOiAiIDw8IGVycm9yX2hleCA8PCAi
ICIgPDwgZXJyb3JfdGV4dCA8PCAiXG4iOwogfQogCiB9ICAvLyBuYW1lc3BhY2UKQEAgLTE0MTUs
NyArMTc2NSw3IEBAIEFzc2VydGlvblJlc3VsdCBJc0hSRVNVTFRGYWlsdXJlKGNvbnN0IGNoYXIq
IGV4cHIsIGxvbmcgaHIpIHsgIC8vIE5PTElOVAogLy8gVXRpbGl0eSBmdW5jdGlvbnMgZm9yIGVu
Y29kaW5nIFVuaWNvZGUgdGV4dCAod2lkZSBzdHJpbmdzKSBpbgogLy8gVVRGLTguCiAKLS8vIEEg
VW5pY29kZSBjb2RlLXBvaW50IGNhbiBoYXZlIHVwdG8gMjEgYml0cywgYW5kIGlzIGVuY29kZWQg
aW4gVVRGLTgKKy8vIEEgVW5pY29kZSBjb2RlLXBvaW50IGNhbiBoYXZlIHVwIHRvIDIxIGJpdHMs
IGFuZCBpcyBlbmNvZGVkIGluIFVURi04CiAvLyBsaWtlIHRoaXM6CiAvLwogLy8gQ29kZS1wb2lu
dCBsZW5ndGggICBFbmNvZGluZwpAQCAtMTQ0OCwxMiArMTc5OCwxNSBAQCBpbmxpbmUgVUludDMy
IENob3BMb3dCaXRzKFVJbnQzMiogYml0cywgaW50IG4pIHsKIC8vIENvbnZlcnRzIGEgVW5pY29k
ZSBjb2RlIHBvaW50IHRvIGEgbmFycm93IHN0cmluZyBpbiBVVEYtOCBlbmNvZGluZy4KIC8vIGNv
ZGVfcG9pbnQgcGFyYW1ldGVyIGlzIG9mIHR5cGUgVUludDMyIGJlY2F1c2Ugd2NoYXJfdCBtYXkg
bm90IGJlCiAvLyB3aWRlIGVub3VnaCB0byBjb250YWluIGEgY29kZSBwb2ludC4KLS8vIFRoZSBv
dXRwdXQgYnVmZmVyIHN0ciBtdXN0IGNvbnRhaW50IGF0IGxlYXN0IDMyIGNoYXJhY3RlcnMuCi0v
LyBUaGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgYWRkcmVzcyBvZiB0aGUgb3V0cHV0IGJ1ZmZlci4K
IC8vIElmIHRoZSBjb2RlX3BvaW50IGlzIG5vdCBhIHZhbGlkIFVuaWNvZGUgY29kZSBwb2ludAot
Ly8gKGkuZS4gb3V0c2lkZSBvZiBVbmljb2RlIHJhbmdlIFUrMCB0byBVKzEwRkZGRikgaXQgd2ls
bCBiZSBvdXRwdXQKLS8vIGFzICcoSW52YWxpZCBVbmljb2RlIDB4WFhYWFhYWFgpJy4KLWNoYXIq
IENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9wb2ludCwgY2hhciogc3RyKSB7CisvLyAoaS5l
LiBvdXRzaWRlIG9mIFVuaWNvZGUgcmFuZ2UgVSswIHRvIFUrMTBGRkZGKSBpdCB3aWxsIGJlIGNv
bnZlcnRlZAorLy8gdG8gIihJbnZhbGlkIFVuaWNvZGUgMHhYWFhYWFhYWCkiLgorc3RkOjpzdHJp
bmcgQ29kZVBvaW50VG9VdGY4KFVJbnQzMiBjb2RlX3BvaW50KSB7CisgIGlmIChjb2RlX3BvaW50
ID4ga01heENvZGVQb2ludDQpIHsKKyAgICByZXR1cm4gIihJbnZhbGlkIFVuaWNvZGUgMHgiICsg
U3RyaW5nOjpGb3JtYXRIZXhJbnQoY29kZV9wb2ludCkgKyAiKSI7CisgIH0KKworICBjaGFyIHN0
cls1XTsgIC8vIEJpZyBlbm91Z2ggZm9yIHRoZSBsYXJnZXN0IHZhbGlkIGNvZGUgcG9pbnQuCiAg
IGlmIChjb2RlX3BvaW50IDw9IGtNYXhDb2RlUG9pbnQxKSB7CiAgICAgc3RyWzFdID0gJ1wwJzsK
ICAgICBzdHJbMF0gPSBzdGF0aWNfY2FzdDxjaGFyPihjb2RlX3BvaW50KTsgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIDB4eHh4eHh4CkBAIC0xNDY2LDI3ICsxODE5LDE3IEBAIGNoYXIqIENv
ZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9wb2ludCwgY2hhciogc3RyKSB7CiAgICAgc3RyWzJd
ID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHg4MCB8IENob3BMb3dCaXRzKCZjb2RlX3BvaW50LCA2KSk7
ICAvLyAxMHh4eHh4eAogICAgIHN0clsxXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgfCBDaG9w
TG93Qml0cygmY29kZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKICAgICBzdHJbMF0gPSBzdGF0
aWNfY2FzdDxjaGFyPigweEUwIHwgY29kZV9wb2ludCk7ICAgICAgICAgICAgICAgICAgIC8vIDEx
MTB4eHh4Ci0gIH0gZWxzZSBpZiAoY29kZV9wb2ludCA8PSBrTWF4Q29kZVBvaW50NCkgeworICB9
IGVsc2UgeyAgLy8gY29kZV9wb2ludCA8PSBrTWF4Q29kZVBvaW50NAogICAgIHN0cls0XSA9ICdc
MCc7CiAgICAgc3RyWzNdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHg4MCB8IENob3BMb3dCaXRzKCZj
b2RlX3BvaW50LCA2KSk7ICAvLyAxMHh4eHh4eAogICAgIHN0clsyXSA9IHN0YXRpY19jYXN0PGNo
YXI+KDB4ODAgfCBDaG9wTG93Qml0cygmY29kZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKICAg
ICBzdHJbMV0gPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVfcG9p
bnQsIDYpKTsgIC8vIDEweHh4eHh4CiAgICAgc3RyWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHhG
MCB8IGNvZGVfcG9pbnQpOyAgICAgICAgICAgICAgICAgICAvLyAxMTExMHh4eAotICB9IGVsc2Ug
ewotICAgIC8vIFRoZSBsb25nZXN0IHN0cmluZyBTdHJpbmc6OkZvcm1hdCBjYW4gcHJvZHVjZSB3
aGVuIGludm9rZWQKLSAgICAvLyB3aXRoIHRoZXNlIHBhcmFtZXRlcnMgaXMgMjggY2hhcmFjdGVy
IGxvbmcgKG5vdCBpbmNsdWRpbmcKLSAgICAvLyB0aGUgdGVybWluYXRpbmcgbnVsIGNoYXJhY3Rl
cikuIFdlIGFyZSBhc2tpbmcgZm9yIDMyIGNoYXJhY3RlcgotICAgIC8vIGJ1ZmZlciBqdXN0IGlu
IGNhc2UuIFRoaXMgaXMgYWxzbyBlbm91Z2ggZm9yIHN0cm5jcHkgdG8KLSAgICAvLyBudWxsLXRl
cm1pbmF0ZSB0aGUgZGVzdGluYXRpb24gc3RyaW5nLgotICAgIHBvc2l4OjpTdHJOQ3B5KAotICAg
ICAgICBzdHIsIFN0cmluZzo6Rm9ybWF0KCIoSW52YWxpZCBVbmljb2RlIDB4JVgpIiwgY29kZV9w
b2ludCkuY19zdHIoKSwgMzIpOwotICAgIHN0clszMV0gPSAnXDAnOyAgLy8gTWFrZXMgc3VyZSBu
byBjaGFuZ2UgaW4gdGhlIGZvcm1hdCB0byBzdHJuY3B5IGxlYXZlcwotICAgICAgICAgICAgICAg
ICAgICAgLy8gdGhlIHJlc3VsdCB1bnRlcm1pbmF0ZWQuCiAgIH0KICAgcmV0dXJuIHN0cjsKIH0K
IAotLy8gVGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIG9ubHkgbWFrZSBzZW5zZSBpZiB0aGUg
dGhlIHN5c3RlbQorLy8gVGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIG9ubHkgbWFrZSBzZW5z
ZSBpZiB0aGUgc3lzdGVtCiAvLyB1c2VzIFVURi0xNiBmb3Igd2lkZSBzdHJpbmcgZW5jb2Rpbmcu
IEFsbCBzdXBwb3J0ZWQgc3lzdGVtcwogLy8gd2l0aCAxNiBiaXQgd2NoYXJfdCAoV2luZG93cywg
Q3lnd2luLCBTeW1iaWFuIE9TKSBkbyB1c2UgVVRGLTE2LgogCkBAIC0xNTIyLDExICsxODY1LDEx
IEBAIGlubGluZSBVSW50MzIgQ3JlYXRlQ29kZVBvaW50RnJvbVV0ZjE2U3Vycm9nYXRlUGFpcih3
Y2hhcl90IGZpcnN0LAogLy8gYXMgJyhJbnZhbGlkIFVuaWNvZGUgMHhYWFhYWFhYWCknLiBJZiB0
aGUgc3RyaW5nIGlzIGluIFVURjE2IGVuY29kaW5nCiAvLyBhbmQgY29udGFpbnMgaW52YWxpZCBV
VEYtMTYgc3Vycm9nYXRlIHBhaXJzLCB2YWx1ZXMgaW4gdGhvc2UgcGFpcnMKIC8vIHdpbGwgYmUg
ZW5jb2RlZCBhcyBpbmRpdmlkdWFsIFVuaWNvZGUgY2hhcmFjdGVycyBmcm9tIEJhc2ljIE5vcm1h
bCBQbGFuZS4KLVN0cmluZyBXaWRlU3RyaW5nVG9VdGY4KGNvbnN0IHdjaGFyX3QqIHN0ciwgaW50
IG51bV9jaGFycykgeworc3RkOjpzdHJpbmcgV2lkZVN0cmluZ1RvVXRmOChjb25zdCB3Y2hhcl90
KiBzdHIsIGludCBudW1fY2hhcnMpIHsKICAgaWYgKG51bV9jaGFycyA9PSAtMSkKICAgICBudW1f
Y2hhcnMgPSBzdGF0aWNfY2FzdDxpbnQ+KHdjc2xlbihzdHIpKTsKIAotICBTdHJTdHJlYW0gc3Ry
ZWFtOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBudW1fY2hhcnM7ICsraSkgewogICAgIFVJbnQzMiB1bmljb2RlX2NvZGVfcG9pbnQ7CiAKQEAg
LTE1NDAsMjcgKzE4ODMsMTcgQEAgU3RyaW5nIFdpZGVTdHJpbmdUb1V0ZjgoY29uc3Qgd2NoYXJf
dCogc3RyLCBpbnQgbnVtX2NoYXJzKSB7CiAgICAgICB1bmljb2RlX2NvZGVfcG9pbnQgPSBzdGF0
aWNfY2FzdDxVSW50MzI+KHN0cltpXSk7CiAgICAgfQogCi0gICAgY2hhciBidWZmZXJbMzJdOyAg
Ly8gQ29kZVBvaW50VG9VdGY4IHJlcXVpcmVzIGEgYnVmZmVyIHRoaXMgYmlnLgotICAgIHN0cmVh
bSA8PCBDb2RlUG9pbnRUb1V0ZjgodW5pY29kZV9jb2RlX3BvaW50LCBidWZmZXIpOworICAgIHN0
cmVhbSA8PCBDb2RlUG9pbnRUb1V0ZjgodW5pY29kZV9jb2RlX3BvaW50KTsKICAgfQotICByZXR1
cm4gU3RyU3RyZWFtVG9TdHJpbmcoJnN0cmVhbSk7CisgIHJldHVybiBTdHJpbmdTdHJlYW1Ub1N0
cmluZygmc3RyZWFtKTsKIH0KIAotLy8gQ29udmVydHMgYSB3aWRlIEMgc3RyaW5nIHRvIGEgU3Ry
aW5nIHVzaW5nIHRoZSBVVEYtOCBlbmNvZGluZy4KKy8vIENvbnZlcnRzIGEgd2lkZSBDIHN0cmlu
ZyB0byBhbiBzdGQ6OnN0cmluZyB1c2luZyB0aGUgVVRGLTggZW5jb2RpbmcuCiAvLyBOVUxMIHdp
bGwgYmUgY29udmVydGVkIHRvICIobnVsbCkiLgotU3RyaW5nIFN0cmluZzo6U2hvd1dpZGVDU3Ry
aW5nKGNvbnN0IHdjaGFyX3QgKiB3aWRlX2Nfc3RyKSB7Ci0gIGlmICh3aWRlX2Nfc3RyID09IE5V
TEwpIHJldHVybiBTdHJpbmcoIihudWxsKSIpOwotCi0gIHJldHVybiBTdHJpbmcoaW50ZXJuYWw6
OldpZGVTdHJpbmdUb1V0Zjgod2lkZV9jX3N0ciwgLTEpLmNfc3RyKCkpOwotfQotCi0vLyBTaW1p
bGFyIHRvIFNob3dXaWRlQ1N0cmluZygpLCBleGNlcHQgdGhhdCB0aGlzIGZ1bmN0aW9uIGVuY2xv
c2VzCi0vLyB0aGUgY29udmVydGVkIHN0cmluZyBpbiBkb3VibGUgcXVvdGVzLgotU3RyaW5nIFN0
cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVvdGVkKGNvbnN0IHdjaGFyX3QqIHdpZGVfY19zdHIpIHsK
LSAgaWYgKHdpZGVfY19zdHIgPT0gTlVMTCkgcmV0dXJuIFN0cmluZygiKG51bGwpIik7CitzdGQ6
OnN0cmluZyBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZyhjb25zdCB3Y2hhcl90ICogd2lkZV9jX3N0
cikgeworICBpZiAod2lkZV9jX3N0ciA9PSBOVUxMKSAgcmV0dXJuICIobnVsbCkiOwogCi0gIHJl
dHVybiBTdHJpbmc6OkZvcm1hdCgiTFwiJXNcIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBT
dHJpbmc6OlNob3dXaWRlQ1N0cmluZyh3aWRlX2Nfc3RyKS5jX3N0cigpKTsKKyAgcmV0dXJuIGlu
dGVybmFsOjpXaWRlU3RyaW5nVG9VdGY4KHdpZGVfY19zdHIsIC0xKTsKIH0KIAogLy8gQ29tcGFy
ZXMgdHdvIHdpZGUgQyBzdHJpbmdzLiAgUmV0dXJucyB0cnVlIGlmZiB0aGV5IGhhdmUgdGhlIHNh
bWUKQEAgLTE1NzgsMTggKzE5MTEsMTggQEAgYm9vbCBTdHJpbmc6OldpZGVDU3RyaW5nRXF1YWxz
KGNvbnN0IHdjaGFyX3QgKiBsaHMsIGNvbnN0IHdjaGFyX3QgKiByaHMpIHsKIH0KIAogLy8gSGVs
cGVyIGZ1bmN0aW9uIGZvciAqX1NUUkVRIG9uIHdpZGUgc3RyaW5ncy4KLUFzc2VydGlvblJlc3Vs
dCBDbXBIZWxwZXJTVFJFUShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIGV4cGVjdGVkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIGFjdHVhbCkgewot
ICBpZiAoU3RyaW5nOjpXaWRlQ1N0cmluZ0VxdWFscyhleHBlY3RlZCwgYWN0dWFsKSkgeworQXNz
ZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIGxocywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiByaHMpIHsKKyAgaWYg
KFN0cmluZzo6V2lkZUNTdHJpbmdFcXVhbHMobGhzLCByaHMpKSB7CiAgICAgcmV0dXJuIEFzc2Vy
dGlvblN1Y2Nlc3MoKTsKICAgfQogCi0gIHJldHVybiBFcUZhaWx1cmUoZXhwZWN0ZWRfZXhwcmVz
c2lvbiwKLSAgICAgICAgICAgICAgICAgICBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAg
ICAgICAgICBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChleHBlY3RlZCksCi0gICAgICAg
ICAgICAgICAgICAgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoYWN0dWFsKSwKKyAgcmV0
dXJuIEVxRmFpbHVyZShsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICByaHNfZXhw
cmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKGxocyksCisgICAgICAg
ICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhyaHMpLAogICAgICAgICAgICAgICAgICAgIGZhbHNl
KTsKIH0KIApAQCAtMTYwMiwxMiArMTkzNSwxMCBAQCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVy
U1RSTkUoY29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKICAgICByZXR1cm4gQXNzZXJ0aW9uU3Vj
Y2VzcygpOwogICB9CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCAiRXhwZWN0ZWQ6ICgiIDw8
IHMxX2V4cHJlc3Npb24gPDwgIikgIT0gKCIKLSAgICAgIDw8IHMyX2V4cHJlc3Npb24gPDwgIiks
IGFjdHVhbDogIgotICAgICAgPDwgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoczEpCi0g
ICAgICA8PCAiIHZzICIgPDwgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoczIpOwotICBy
ZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgp
IDw8ICJFeHBlY3RlZDogKCIgPDwgczFfZXhwcmVzc2lvbiA8PCAiKSAhPSAoIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IHMyX2V4cHJlc3Npb24gPDwgIiksIGFjdHVhbDogIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8IFByaW50VG9TdHJpbmcoczEpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgIiB2cyAiIDw8IFByaW50VG9TdHJpbmcoczIpOwogfQogCiAv
LyBDb21wYXJlcyB0d28gQyBzdHJpbmdzLCBpZ25vcmluZyBjYXNlLiAgUmV0dXJucyB0cnVlIGlm
ZiB0aGV5IGhhdmUKQEAgLTE2MzgsMTcgKzE5NjksMTcgQEAgYm9vbCBTdHJpbmc6OkNhc2VJbnNl
bnNpdGl2ZUNTdHJpbmdFcXVhbHMoY29uc3QgY2hhciAqIGxocywgY29uc3QgY2hhciAqIHJocykg
ewogICAvLyBjdXJyZW50IGxvY2FsZS4KIGJvb2wgU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVXaWRl
Q1N0cmluZ0VxdWFscyhjb25zdCB3Y2hhcl90KiBsaHMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogcmhzKSB7Ci0gIGlmICggbGhz
ID09IE5VTEwgKSByZXR1cm4gcmhzID09IE5VTEw7CisgIGlmIChsaHMgPT0gTlVMTCkgcmV0dXJu
IHJocyA9PSBOVUxMOwogCi0gIGlmICggcmhzID09IE5VTEwgKSByZXR1cm4gZmFsc2U7CisgIGlm
IChyaHMgPT0gTlVMTCkgcmV0dXJuIGZhbHNlOwogCiAjaWYgR1RFU1RfT1NfV0lORE9XUwogICBy
ZXR1cm4gX3djc2ljbXAobGhzLCByaHMpID09IDA7Ci0jZWxpZiBHVEVTVF9PU19MSU5VWAorI2Vs
aWYgR1RFU1RfT1NfTElOVVggJiYgIUdURVNUX09TX0xJTlVYX0FORFJPSUQKICAgcmV0dXJuIHdj
c2Nhc2VjbXAobGhzLCByaHMpID09IDA7CiAjZWxzZQotICAvLyBNYWMgT1MgWCBhbmQgQ3lnd2lu
IGRvbid0IGRlZmluZSB3Y3NjYXNlY21wLiAgT3RoZXIgdW5rbm93biBPU2VzCi0gIC8vIG1heSBu
b3QgZGVmaW5lIGl0IGVpdGhlci4KKyAgLy8gQW5kcm9pZCwgTWFjIE9TIFggYW5kIEN5Z3dpbiBk
b24ndCBkZWZpbmUgd2NzY2FzZWNtcC4KKyAgLy8gT3RoZXIgdW5rbm93biBPU2VzIG1heSBub3Qg
ZGVmaW5lIGl0IGVpdGhlci4KICAgd2ludF90IGxlZnQsIHJpZ2h0OwogICBkbyB7CiAgICAgbGVm
dCA9IHRvd2xvd2VyKCpsaHMrKyk7CkBAIC0xNjU4LDEzMyArMTk4OSw2OSBAQCBib29sIFN0cmlu
Zzo6Q2FzZUluc2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMoY29uc3Qgd2NoYXJfdCogbGhzLAog
I2VuZGlmICAvLyBPUyBzZWxlY3RvcgogfQogCi0vLyBDb21wYXJlcyB0aGlzIHdpdGggYW5vdGhl
ciBTdHJpbmcuCi0vLyBSZXR1cm5zIDwgMCBpZiB0aGlzIGlzIGxlc3MgdGhhbiByaHMsIDAgaWYg
dGhpcyBpcyBlcXVhbCB0byByaHMsIG9yID4gMAotLy8gaWYgdGhpcyBpcyBncmVhdGVyIHRoYW4g
cmhzLgotaW50IFN0cmluZzo6Q29tcGFyZShjb25zdCBTdHJpbmcgJiByaHMpIGNvbnN0IHsKLSAg
Y29uc3QgY2hhciogY29uc3QgbGhzX2Nfc3RyID0gY19zdHIoKTsKLSAgY29uc3QgY2hhciogY29u
c3QgcmhzX2Nfc3RyID0gcmhzLmNfc3RyKCk7Ci0KLSAgaWYgKGxoc19jX3N0ciA9PSBOVUxMKSB7
Ci0gICAgcmV0dXJuIHJoc19jX3N0ciA9PSBOVUxMID8gMCA6IC0xOyAgLy8gTlVMTCA8IGFueXRo
aW5nIGV4Y2VwdCBOVUxMCi0gIH0gZWxzZSBpZiAocmhzX2Nfc3RyID09IE5VTEwpIHsKLSAgICBy
ZXR1cm4gMTsKLSAgfQotCi0gIGNvbnN0IHNpemVfdCBzaG9ydGVyX3N0cl9sZW4gPQotICAgICAg
bGVuZ3RoKCkgPD0gcmhzLmxlbmd0aCgpID8gbGVuZ3RoKCkgOiByaHMubGVuZ3RoKCk7Ci0gIGZv
ciAoc2l6ZV90IGkgPSAwOyBpICE9IHNob3J0ZXJfc3RyX2xlbjsgaSsrKSB7Ci0gICAgaWYgKGxo
c19jX3N0cltpXSA8IHJoc19jX3N0cltpXSkgewotICAgICAgcmV0dXJuIC0xOwotICAgIH0gZWxz
ZSBpZiAobGhzX2Nfc3RyW2ldID4gcmhzX2Nfc3RyW2ldKSB7Ci0gICAgICByZXR1cm4gMTsKLSAg
ICB9Ci0gIH0KLSAgcmV0dXJuIChsZW5ndGgoKSA8IHJocy5sZW5ndGgoKSkgPyAtMSA6Ci0gICAg
ICAobGVuZ3RoKCkgPiByaHMubGVuZ3RoKCkpID8gMSA6IDA7CisvLyBSZXR1cm5zIHRydWUgaWZm
IHN0ciBlbmRzIHdpdGggdGhlIGdpdmVuIHN1ZmZpeCwgaWdub3JpbmcgY2FzZS4KKy8vIEFueSBz
dHJpbmcgaXMgY29uc2lkZXJlZCB0byBlbmQgd2l0aCBhbiBlbXB0eSBzdWZmaXguCitib29sIFN0
cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0
ciwgY29uc3Qgc3RkOjpzdHJpbmcmIHN1ZmZpeCkgeworICBjb25zdCBzaXplX3Qgc3RyX2xlbiA9
IHN0ci5sZW5ndGgoKTsKKyAgY29uc3Qgc2l6ZV90IHN1ZmZpeF9sZW4gPSBzdWZmaXgubGVuZ3Ro
KCk7CisgIHJldHVybiAoc3RyX2xlbiA+PSBzdWZmaXhfbGVuKSAmJgorICAgICAgICAgQ2FzZUlu
c2Vuc2l0aXZlQ1N0cmluZ0VxdWFscyhzdHIuY19zdHIoKSArIHN0cl9sZW4gLSBzdWZmaXhfbGVu
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXguY19zdHIoKSk7
CiB9CiAKLS8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBTdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZl
biBzdWZmaXguICAqQW55KgotLy8gU3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGggYSBO
VUxMIG9yIGVtcHR5IHN1ZmZpeC4KLWJvb2wgU3RyaW5nOjpFbmRzV2l0aChjb25zdCBjaGFyKiBz
dWZmaXgpIGNvbnN0IHsKLSAgaWYgKHN1ZmZpeCA9PSBOVUxMIHx8IENTdHJpbmdFcXVhbHMoc3Vm
Zml4LCAiIikpIHJldHVybiB0cnVlOwotCi0gIGlmIChjX3N0cigpID09IE5VTEwpIHJldHVybiBm
YWxzZTsKLQotICBjb25zdCBzaXplX3QgdGhpc19sZW4gPSBzdHJsZW4oY19zdHIoKSk7Ci0gIGNv
bnN0IHNpemVfdCBzdWZmaXhfbGVuID0gc3RybGVuKHN1ZmZpeCk7Ci0gIHJldHVybiAodGhpc19s
ZW4gPj0gc3VmZml4X2xlbikgJiYKLSAgICAgICAgIENTdHJpbmdFcXVhbHMoY19zdHIoKSArIHRo
aXNfbGVuIC0gc3VmZml4X2xlbiwgc3VmZml4KTsKKy8vIEZvcm1hdHMgYW4gaW50IHZhbHVlIGFz
ICIlMDJkIi4KK3N0ZDo6c3RyaW5nIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKGludCB2YWx1ZSkg
eworICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgc3MgPDwgc3RkOjpzZXRmaWxsKCcwJykgPDwg
c3RkOjpzZXR3KDIpIDw8IHZhbHVlOworICByZXR1cm4gc3Muc3RyKCk7CiB9CiAKLS8vIFJldHVy
bnMgdHJ1ZSBpZmYgdGhpcyBTdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXgsIGlnbm9y
aW5nIGNhc2UuCi0vLyBBbnkgU3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGggYSBOVUxM
IG9yIGVtcHR5IHN1ZmZpeC4KLWJvb2wgU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZShj
b25zdCBjaGFyKiBzdWZmaXgpIGNvbnN0IHsKLSAgaWYgKHN1ZmZpeCA9PSBOVUxMIHx8IENTdHJp
bmdFcXVhbHMoc3VmZml4LCAiIikpIHJldHVybiB0cnVlOwotCi0gIGlmIChjX3N0cigpID09IE5V
TEwpIHJldHVybiBmYWxzZTsKLQotICBjb25zdCBzaXplX3QgdGhpc19sZW4gPSBzdHJsZW4oY19z
dHIoKSk7Ci0gIGNvbnN0IHNpemVfdCBzdWZmaXhfbGVuID0gc3RybGVuKHN1ZmZpeCk7Ci0gIHJl
dHVybiAodGhpc19sZW4gPj0gc3VmZml4X2xlbikgJiYKLSAgICAgICAgIENhc2VJbnNlbnNpdGl2
ZUNTdHJpbmdFcXVhbHMoY19zdHIoKSArIHRoaXNfbGVuIC0gc3VmZml4X2xlbiwgc3VmZml4KTsK
Ky8vIEZvcm1hdHMgYW4gaW50IHZhbHVlIGFzICIlWCIuCitzdGQ6OnN0cmluZyBTdHJpbmc6OkZv
cm1hdEhleEludChpbnQgdmFsdWUpIHsKKyAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIHNzIDw8
IHN0ZDo6aGV4IDw8IHN0ZDo6dXBwZXJjYXNlIDw8IHZhbHVlOworICByZXR1cm4gc3Muc3RyKCk7
CiB9CiAKLS8vIEZvcm1hdHMgYSBsaXN0IG9mIGFyZ3VtZW50cyB0byBhIFN0cmluZywgdXNpbmcg
dGhlIHNhbWUgZm9ybWF0Ci0vLyBzcGVjIHN0cmluZyBhcyBmb3IgcHJpbnRmLgotLy8KLS8vIFdl
IGRvIG5vdCB1c2UgdGhlIFN0cmluZ1ByaW50ZiBjbGFzcyBhcyBpdCBpcyBub3QgdW5pdmVyc2Fs
bHkKLS8vIGF2YWlsYWJsZS4KLS8vCi0vLyBUaGUgcmVzdWx0IGlzIGxpbWl0ZWQgdG8gNDA5NiBj
aGFyYWN0ZXJzIChpbmNsdWRpbmcgdGhlIHRhaWxpbmcgMCkuCi0vLyBJZiA0MDk2IGNoYXJhY3Rl
cnMgYXJlIG5vdCBlbm91Z2ggdG8gZm9ybWF0IHRoZSBpbnB1dCwgb3IgaWYKLS8vIHRoZXJlJ3Mg
YW4gZXJyb3IsICI8Zm9ybWF0dGluZyBlcnJvciBvciBidWZmZXIgZXhjZWVkZWQ+IiBpcwotLy8g
cmV0dXJuZWQuCi1TdHJpbmcgU3RyaW5nOjpGb3JtYXQoY29uc3QgY2hhciAqIGZvcm1hdCwgLi4u
KSB7Ci0gIHZhX2xpc3QgYXJnczsKLSAgdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKLQotICBjaGFy
IGJ1ZmZlcls0MDk2XTsKLSAgY29uc3QgaW50IGtCdWZmZXJTaXplID0gc2l6ZW9mKGJ1ZmZlcikv
c2l6ZW9mKGJ1ZmZlclswXSk7Ci0KLSAgLy8gTVNWQyA4IGRlcHJlY2F0ZXMgdnNucHJpbnRmKCks
IHNvIHdlIHdhbnQgdG8gc3VwcHJlc3Mgd2FybmluZwotICAvLyA0OTk2IChkZXByZWNhdGVkIGZ1
bmN0aW9uKSB0aGVyZS4KLSNpZmRlZiBfTVNDX1ZFUiAgLy8gV2UgYXJlIHVzaW5nIE1TVkMuCi0j
cHJhZ21hIHdhcm5pbmcocHVzaCkgICAgICAgICAgLy8gU2F2ZXMgdGhlIGN1cnJlbnQgd2Fybmlu
ZyBzdGF0ZS4KLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5OTYpICAvLyBUZW1wb3JhcmlseSBk
aXNhYmxlcyB3YXJuaW5nIDQ5OTYuCi0gIGNvbnN0IGludCBzaXplID0gdnNucHJpbnRmKGJ1ZmZl
ciwga0J1ZmZlclNpemUsIGZvcm1hdCwgYXJncyk7Ci0jcHJhZ21hIHdhcm5pbmcocG9wKSAgICAg
ICAgICAgLy8gUmVzdG9yZXMgdGhlIHdhcm5pbmcgc3RhdGUuCi0jZWxzZSAgLy8gV2UgYXJlIG5v
dCB1c2luZyBNU1ZDLgotICBjb25zdCBpbnQgc2l6ZSA9IHZzbnByaW50ZihidWZmZXIsIGtCdWZm
ZXJTaXplLCBmb3JtYXQsIGFyZ3MpOwotI2VuZGlmICAvLyBfTVNDX1ZFUgotICB2YV9lbmQoYXJn
cyk7Ci0KLSAgLy8gdnNucHJpbnRmKCkncyBiZWhhdmlvciBpcyBub3QgcG9ydGFibGUuICBXaGVu
IHRoZSBidWZmZXIgaXMgbm90Ci0gIC8vIGJpZyBlbm91Z2gsIGl0IHJldHVybnMgYSBuZWdhdGl2
ZSB2YWx1ZSBpbiBNU1ZDLCBhbmQgcmV0dXJucyB0aGUKLSAgLy8gbmVlZGVkIGJ1ZmZlciBzaXpl
IG9uIExpbnV4LiAgV2hlbiB0aGVyZSBpcyBhbiBvdXRwdXQgZXJyb3IsIGl0Ci0gIC8vIGFsd2F5
cyByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUuICBGb3Igc2ltcGxpY2l0eSwgd2UgbHVtcCB0aGUg
dHdvCi0gIC8vIGVycm9yIGNhc2VzIHRvZ2V0aGVyLgotICBpZiAoc2l6ZSA8IDAgfHwgc2l6ZSA+
PSBrQnVmZmVyU2l6ZSkgewotICAgIHJldHVybiBTdHJpbmcoIjxmb3JtYXR0aW5nIGVycm9yIG9y
IGJ1ZmZlciBleGNlZWRlZD4iKTsKLSAgfSBlbHNlIHsKLSAgICByZXR1cm4gU3RyaW5nKGJ1ZmZl
ciwgc2l6ZSk7Ci0gIH0KKy8vIEZvcm1hdHMgYSBieXRlIGFzICIlMDJYIi4KK3N0ZDo6c3RyaW5n
IFN0cmluZzo6Rm9ybWF0Qnl0ZSh1bnNpZ25lZCBjaGFyIHZhbHVlKSB7CisgIHN0ZDo6c3RyaW5n
c3RyZWFtIHNzOworICBzcyA8PCBzdGQ6OnNldGZpbGwoJzAnKSA8PCBzdGQ6OnNldHcoMikgPDwg
c3RkOjpoZXggPDwgc3RkOjp1cHBlcmNhc2UKKyAgICAgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
aW50Pih2YWx1ZSk7CisgIHJldHVybiBzcy5zdHIoKTsKIH0KIAotLy8gQ29udmVydHMgdGhlIGJ1
ZmZlciBpbiBhIFN0clN0cmVhbSB0byBhIFN0cmluZywgY29udmVydGluZyBOVUwKKy8vIENvbnZl
cnRzIHRoZSBidWZmZXIgaW4gYSBzdHJpbmdzdHJlYW0gdG8gYW4gc3RkOjpzdHJpbmcsIGNvbnZl
cnRpbmcgTlVMCiAvLyBieXRlcyB0byAiXFwwIiBhbG9uZyB0aGUgd2F5LgotU3RyaW5nIFN0clN0
cmVhbVRvU3RyaW5nKFN0clN0cmVhbSogc3MpIHsKK3N0ZDo6c3RyaW5nIFN0cmluZ1N0cmVhbVRv
U3RyaW5nKDo6c3RkOjpzdHJpbmdzdHJlYW0qIHNzKSB7CiAgIGNvbnN0IDo6c3RkOjpzdHJpbmcm
IHN0ciA9IHNzLT5zdHIoKTsKICAgY29uc3QgY2hhciogY29uc3Qgc3RhcnQgPSBzdHIuY19zdHIo
KTsKICAgY29uc3QgY2hhciogY29uc3QgZW5kID0gc3RhcnQgKyBzdHIubGVuZ3RoKCk7CiAKLSAg
Ly8gV2UgbmVlZCB0byB1c2UgYSBoZWxwZXIgU3RyU3RyZWFtIHRvIGRvIHRoaXMgdHJhbnNmb3Jt
YXRpb24KLSAgLy8gYmVjYXVzZSBTdHJpbmcgZG9lc24ndCBzdXBwb3J0IHB1c2hfYmFjaygpLgot
ICBTdHJTdHJlYW0gaGVscGVyOworICBzdGQ6OnN0cmluZyByZXN1bHQ7CisgIHJlc3VsdC5yZXNl
cnZlKDIgKiAoZW5kIC0gc3RhcnQpKTsKICAgZm9yIChjb25zdCBjaGFyKiBjaCA9IHN0YXJ0OyBj
aCAhPSBlbmQ7ICsrY2gpIHsKICAgICBpZiAoKmNoID09ICdcMCcpIHsKLSAgICAgIGhlbHBlciA8
PCAiXFwwIjsgIC8vIFJlcGxhY2VzIE5VTCB3aXRoICJcXDAiOworICAgICAgcmVzdWx0ICs9ICJc
XDAiOyAgLy8gUmVwbGFjZXMgTlVMIHdpdGggIlxcMCI7CiAgICAgfSBlbHNlIHsKLSAgICAgIGhl
bHBlci5wdXQoKmNoKTsKKyAgICAgIHJlc3VsdCArPSAqY2g7CiAgICAgfQogICB9CiAKLSAgcmV0
dXJuIFN0cmluZyhoZWxwZXIuc3RyKCkuY19zdHIoKSk7CisgIHJldHVybiByZXN1bHQ7CiB9CiAK
IC8vIEFwcGVuZHMgdGhlIHVzZXItc3VwcGxpZWQgbWVzc2FnZSB0byB0aGUgR29vZ2xlLVRlc3Qt
Z2VuZXJhdGVkIG1lc3NhZ2UuCi1TdHJpbmcgQXBwZW5kVXNlck1lc3NhZ2UoY29uc3QgU3RyaW5n
JiBndGVzdF9tc2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVzc2FnZSYgdXNl
cl9tc2cpIHsKK3N0ZDo6c3RyaW5nIEFwcGVuZFVzZXJNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5n
JiBndGVzdF9tc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNZXNzYWdl
JiB1c2VyX21zZykgewogICAvLyBBcHBlbmRzIHRoZSB1c2VyIG1lc3NhZ2UgaWYgaXQncyBub24t
ZW1wdHkuCi0gIGNvbnN0IFN0cmluZyB1c2VyX21zZ19zdHJpbmcgPSB1c2VyX21zZy5HZXRTdHJp
bmcoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgdXNlcl9tc2dfc3RyaW5nID0gdXNlcl9tc2cuR2V0
U3RyaW5nKCk7CiAgIGlmICh1c2VyX21zZ19zdHJpbmcuZW1wdHkoKSkgewogICAgIHJldHVybiBn
dGVzdF9tc2c7CiAgIH0KIAotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGd0ZXN0X21zZyA8PCAi
XG4iIDw8IHVzZXJfbXNnX3N0cmluZzsKLQotICByZXR1cm4gbXNnLkdldFN0cmluZygpOworICBy
ZXR1cm4gZ3Rlc3RfbXNnICsgIlxuIiArIHVzZXJfbXNnX3N0cmluZzsKIH0KIAogfSAgLy8gbmFt
ZXNwYWNlIGludGVybmFsCkBAIC0xODMyLDggKzIwOTksOSBAQCB2b2lkIFRlc3RSZXN1bHQ6OkFk
ZFRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7
CiAvLyBBZGRzIGEgdGVzdCBwcm9wZXJ0eSB0byB0aGUgbGlzdC4gSWYgYSBwcm9wZXJ0eSB3aXRo
IHRoZSBzYW1lIGtleSBhcyB0aGUKIC8vIHN1cHBsaWVkIHByb3BlcnR5IGlzIGFscmVhZHkgcmVw
cmVzZW50ZWQsIHRoZSB2YWx1ZSBvZiB0aGlzIHRlc3RfcHJvcGVydHkKIC8vIHJlcGxhY2VzIHRo
ZSBvbGQgdmFsdWUgZm9yIHRoYXQga2V5Lgotdm9pZCBUZXN0UmVzdWx0OjpSZWNvcmRQcm9wZXJ0
eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpIHsKLSAgaWYgKCFWYWxpZGF0ZVRl
c3RQcm9wZXJ0eSh0ZXN0X3Byb3BlcnR5KSkgewordm9pZCBUZXN0UmVzdWx0OjpSZWNvcmRQcm9w
ZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgeG1sX2VsZW1lbnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgeworICBpZiAo
IVZhbGlkYXRlVGVzdFByb3BlcnR5KHhtbF9lbGVtZW50LCB0ZXN0X3Byb3BlcnR5KSkgewogICAg
IHJldHVybjsKICAgfQogICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGxvY2soJnRlc3RfcHJvcGVyaXRl
c19tdXRleF8pOwpAQCAtMTg0NywyMSArMjExNSw5MCBAQCB2b2lkIFRlc3RSZXN1bHQ6OlJlY29y
ZFByb3BlcnR5KGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgewogICBwcm9wZXJ0
eV93aXRoX21hdGNoaW5nX2tleS0+U2V0VmFsdWUodGVzdF9wcm9wZXJ0eS52YWx1ZSgpKTsKIH0K
IAotLy8gQWRkcyBhIGZhaWx1cmUgaWYgdGhlIGtleSBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBv
ZiBHb29nbGUgVGVzdAotLy8gdGVzdGNhc2UgdGFncy4gIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJv
cGVydHkgaXMgdmFsaWQuCi1ib29sIFRlc3RSZXN1bHQ6OlZhbGlkYXRlVGVzdFByb3BlcnR5KGNv
bnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgewotICBpbnRlcm5hbDo6U3RyaW5nIGtl
eSh0ZXN0X3Byb3BlcnR5LmtleSgpKTsKLSAgaWYgKGtleSA9PSAibmFtZSIgfHwga2V5ID09ICJz
dGF0dXMiIHx8IGtleSA9PSAidGltZSIgfHwga2V5ID09ICJjbGFzc25hbWUiKSB7Ci0gICAgQURE
X0ZBSUxVUkUoKQotICAgICAgICA8PCAiUmVzZXJ2ZWQga2V5IHVzZWQgaW4gUmVjb3JkUHJvcGVy
dHkoKTogIgotICAgICAgICA8PCBrZXkKLSAgICAgICAgPDwgIiAoJ25hbWUnLCAnc3RhdHVzJywg
J3RpbWUnLCBhbmQgJ2NsYXNzbmFtZScgYXJlIHJlc2VydmVkIGJ5ICIKLSAgICAgICAgPDwgR1RF
U1RfTkFNRV8gPDwgIikiOworLy8gVGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgYXR0cmlidXRlcyB1c2Vk
IGluIHRoZSA8dGVzdHN1aXRlcz4gZWxlbWVudCBvZiBYTUwKKy8vIG91dHB1dC4KK3N0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCBrUmVzZXJ2ZWRUZXN0U3VpdGVzQXR0cmlidXRlc1tdID0geworICAi
ZGlzYWJsZWQiLAorICAiZXJyb3JzIiwKKyAgImZhaWx1cmVzIiwKKyAgIm5hbWUiLAorICAicmFu
ZG9tX3NlZWQiLAorICAidGVzdHMiLAorICAidGltZSIsCisgICJ0aW1lc3RhbXAiCit9OworCisv
LyBUaGUgbGlzdCBvZiByZXNlcnZlZCBhdHRyaWJ1dGVzIHVzZWQgaW4gdGhlIDx0ZXN0c3VpdGU+
IGVsZW1lbnQgb2YgWE1MCisvLyBvdXRwdXQuCitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qga1Jl
c2VydmVkVGVzdFN1aXRlQXR0cmlidXRlc1tdID0geworICAiZGlzYWJsZWQiLAorICAiZXJyb3Jz
IiwKKyAgImZhaWx1cmVzIiwKKyAgIm5hbWUiLAorICAidGVzdHMiLAorICAidGltZSIKK307CisK
Ky8vIFRoZSBsaXN0IG9mIHJlc2VydmVkIGF0dHJpYnV0ZXMgdXNlZCBpbiB0aGUgPHRlc3RjYXNl
PiBlbGVtZW50IG9mIFhNTCBvdXRwdXQuCitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qga1Jlc2Vy
dmVkVGVzdENhc2VBdHRyaWJ1dGVzW10gPSB7CisgICAgImNsYXNzbmFtZSIsICAibmFtZSIsICAg
ICAgICAic3RhdHVzIiwgInRpbWUiLAorICAgICJ0eXBlX3BhcmFtIiwgInZhbHVlX3BhcmFtIiwg
ImZpbGUiLCAgICJsaW5lIn07CisKK3RlbXBsYXRlIDxpbnQga1NpemU+CitzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gQXJyYXlBc1ZlY3Rvcihjb25zdCBjaGFyKiBjb25zdCAoJmFycmF5KVtrU2l6
ZV0pIHsKKyAgcmV0dXJuIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPihhcnJheSwgYXJyYXkgKyBr
U2l6ZSk7Cit9CisKK3N0YXRpYyBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0UmVzZXJ2ZWRB
dHRyaWJ1dGVzRm9yRWxlbWVudCgKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgeG1sX2VsZW1lbnQp
IHsKKyAgaWYgKHhtbF9lbGVtZW50ID09ICJ0ZXN0c3VpdGVzIikgeworICAgIHJldHVybiBBcnJh
eUFzVmVjdG9yKGtSZXNlcnZlZFRlc3RTdWl0ZXNBdHRyaWJ1dGVzKTsKKyAgfSBlbHNlIGlmICh4
bWxfZWxlbWVudCA9PSAidGVzdHN1aXRlIikgeworICAgIHJldHVybiBBcnJheUFzVmVjdG9yKGtS
ZXNlcnZlZFRlc3RTdWl0ZUF0dHJpYnV0ZXMpOworICB9IGVsc2UgaWYgKHhtbF9lbGVtZW50ID09
ICJ0ZXN0Y2FzZSIpIHsKKyAgICByZXR1cm4gQXJyYXlBc1ZlY3RvcihrUmVzZXJ2ZWRUZXN0Q2Fz
ZUF0dHJpYnV0ZXMpOworICB9IGVsc2UgeworICAgIEdURVNUX0NIRUNLXyhmYWxzZSkgPDwgIlVu
cmVjb2duaXplZCB4bWxfZWxlbWVudCBwcm92aWRlZDogIiA8PCB4bWxfZWxlbWVudDsKKyAgfQor
ICAvLyBUaGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgYnV0IHNvbWUgY29tcGlsZXJzIG1heSBub3Qg
cmVhbGl6ZXMgdGhhdC4KKyAgcmV0dXJuIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPigpOworfQor
CitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0V29yZExpc3QoY29uc3Qgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+JiB3b3JkcykgeworICBNZXNzYWdlIHdvcmRfbGlzdDsKKyAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB3b3Jkcy5zaXplKCk7ICsraSkgeworICAgIGlmIChpID4gMCAmJiB3b3Jkcy5z
aXplKCkgPiAyKSB7CisgICAgICB3b3JkX2xpc3QgPDwgIiwgIjsKKyAgICB9CisgICAgaWYgKGkg
PT0gd29yZHMuc2l6ZSgpIC0gMSkgeworICAgICAgd29yZF9saXN0IDw8ICJhbmQgIjsKKyAgICB9
CisgICAgd29yZF9saXN0IDw8ICInIiA8PCB3b3Jkc1tpXSA8PCAiJyI7CisgIH0KKyAgcmV0dXJu
IHdvcmRfbGlzdC5HZXRTdHJpbmcoKTsKK30KKworc3RhdGljIGJvb2wgVmFsaWRhdGVUZXN0UHJv
cGVydHlOYW1lKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9wZXJ0eV9uYW1lLAorICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgcmVzZXJ2ZWRfbmFtZXMpIHsKKyAgaWYgKHN0
ZDo6ZmluZChyZXNlcnZlZF9uYW1lcy5iZWdpbigpLCByZXNlcnZlZF9uYW1lcy5lbmQoKSwgcHJv
cGVydHlfbmFtZSkgIT0KKyAgICAgICAgICByZXNlcnZlZF9uYW1lcy5lbmQoKSkgeworICAgIEFE
RF9GQUlMVVJFKCkgPDwgIlJlc2VydmVkIGtleSB1c2VkIGluIFJlY29yZFByb3BlcnR5KCk6ICIg
PDwgcHJvcGVydHlfbmFtZQorICAgICAgICAgICAgICAgICAgPDwgIiAoIiA8PCBGb3JtYXRXb3Jk
TGlzdChyZXNlcnZlZF9uYW1lcykKKyAgICAgICAgICAgICAgICAgIDw8ICIgYXJlIHJlc2VydmVk
IGJ5ICIgPDwgR1RFU1RfTkFNRV8gPDwgIikiOwogICAgIHJldHVybiBmYWxzZTsKICAgfQogICBy
ZXR1cm4gdHJ1ZTsKIH0KIAorLy8gQWRkcyBhIGZhaWx1cmUgaWYgdGhlIGtleSBpcyBhIHJlc2Vy
dmVkIGF0dHJpYnV0ZSBvZiB0aGUgZWxlbWVudCBuYW1lZAorLy8geG1sX2VsZW1lbnQuICBSZXR1
cm5zIHRydWUgaWYgdGhlIHByb3BlcnR5IGlzIHZhbGlkLgorYm9vbCBUZXN0UmVzdWx0OjpWYWxp
ZGF0ZVRlc3RQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgeG1sX2VsZW1lbnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9w
cm9wZXJ0eSkgeworICByZXR1cm4gVmFsaWRhdGVUZXN0UHJvcGVydHlOYW1lKHRlc3RfcHJvcGVy
dHkua2V5KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0UmVzZXJ2ZWRB
dHRyaWJ1dGVzRm9yRWxlbWVudCh4bWxfZWxlbWVudCkpOworfQorCiAvLyBDbGVhcnMgdGhlIG9i
amVjdC4KIHZvaWQgVGVzdFJlc3VsdDo6Q2xlYXIoKSB7CiAgIHRlc3RfcGFydF9yZXN1bHRzXy5j
bGVhcigpOwpAQCAtMTkxNCwxNCArMjI1MSwxNSBAQCBpbnQgVGVzdFJlc3VsdDo6dGVzdF9wcm9w
ZXJ0eV9jb3VudCgpIGNvbnN0IHsKIAogLy8gQ3JlYXRlcyBhIFRlc3Qgb2JqZWN0LgogCi0vLyBU
aGUgYyd0b3Igc2F2ZXMgdGhlIHZhbHVlcyBvZiBhbGwgR29vZ2xlIFRlc3QgZmxhZ3MuCisvLyBU
aGUgYyd0b3Igc2F2ZXMgdGhlIHN0YXRlcyBvZiBhbGwgZmxhZ3MuCiBUZXN0OjpUZXN0KCkKLSAg
ICA6IGd0ZXN0X2ZsYWdfc2F2ZXJfKG5ldyBpbnRlcm5hbDo6R1Rlc3RGbGFnU2F2ZXIpIHsKKyAg
ICA6IGd0ZXN0X2ZsYWdfc2F2ZXJfKG5ldyBHVEVTVF9GTEFHX1NBVkVSXykgewogfQogCi0vLyBU
aGUgZCd0b3IgcmVzdG9yZXMgdGhlIHZhbHVlcyBvZiBhbGwgR29vZ2xlIFRlc3QgZmxhZ3MuCisv
LyBUaGUgZCd0b3IgcmVzdG9yZXMgdGhlIHN0YXRlcyBvZiBhbGwgZmxhZ3MuICBUaGUgYWN0dWFs
IHdvcmsgaXMKKy8vIGRvbmUgYnkgdGhlIGQndG9yIG9mIHRoZSBndGVzdF9mbGFnX3NhdmVyXyBm
aWVsZCwgYW5kIHRodXMgbm90CisvLyB2aXNpYmxlIGhlcmUuCiBUZXN0Ojp+VGVzdCgpIHsKLSAg
ZGVsZXRlIGd0ZXN0X2ZsYWdfc2F2ZXJfOwogfQogCiAvLyBTZXRzIHVwIHRoZSB0ZXN0IGZpeHR1
cmUuCkBAIC0xOTM3LDEyICsyMjc1LDEyIEBAIHZvaWQgVGVzdDo6VGVhckRvd24oKSB7CiB9CiAK
IC8vIEFsbG93cyB1c2VyIHN1cHBsaWVkIGtleSB2YWx1ZSBwYWlycyB0byBiZSByZWNvcmRlZCBm
b3IgbGF0ZXIgb3V0cHV0Lgotdm9pZCBUZXN0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBjaGFyKiBr
ZXksIGNvbnN0IGNoYXIqIHZhbHVlKSB7Ci0gIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5SZWNv
cmRQcm9wZXJ0eUZvckN1cnJlbnRUZXN0KGtleSwgdmFsdWUpOwordm9pZCBUZXN0OjpSZWNvcmRQ
cm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYga2V5LCBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUp
IHsKKyAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPlJlY29yZFByb3BlcnR5KGtleSwgdmFsdWUp
OwogfQogCiAvLyBBbGxvd3MgdXNlciBzdXBwbGllZCBrZXkgdmFsdWUgcGFpcnMgdG8gYmUgcmVj
b3JkZWQgZm9yIGxhdGVyIG91dHB1dC4KLXZvaWQgVGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3Qg
Y2hhcioga2V5LCBpbnQgdmFsdWUpIHsKK3ZvaWQgVGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3Qg
c3RkOjpzdHJpbmcmIGtleSwgaW50IHZhbHVlKSB7CiAgIE1lc3NhZ2UgdmFsdWVfbWVzc2FnZTsK
ICAgdmFsdWVfbWVzc2FnZSA8PCB2YWx1ZTsKICAgUmVjb3JkUHJvcGVydHkoa2V5LCB2YWx1ZV9t
ZXNzYWdlLkdldFN0cmluZygpLmNfc3RyKCkpOwpAQCAtMTk1MSw3ICsyMjg5LDcgQEAgdm9pZCBU
ZXN0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBjaGFyKiBrZXksIGludCB2YWx1ZSkgewogbmFtZXNw
YWNlIGludGVybmFsIHsKIAogdm9pZCBSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oVGVz
dFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7CiAgIC8vIFRoaXMg
ZnVuY3Rpb24gaXMgYSBmcmllbmQgb2YgVW5pdFRlc3QgYW5kIGFzIHN1Y2ggaGFzIGFjY2VzcyB0
bwogICAvLyBBZGRUZXN0UGFydFJlc3VsdC4KICAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPkFk
ZFRlc3RQYXJ0UmVzdWx0KApAQCAtMTk1OSwyNyArMjI5NywxMSBAQCB2b2lkIFJlcG9ydEZhaWx1
cmVJblVua25vd25Mb2NhdGlvbihUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKICAg
ICAgIE5VTEwsICAvLyBObyBpbmZvIGFib3V0IHRoZSBzb3VyY2UgZmlsZSB3aGVyZSB0aGUgZXhj
ZXB0aW9uIG9jY3VycmVkLgogICAgICAgLTEsICAgIC8vIFdlIGhhdmUgbm8gaW5mbyBvbiB3aGlj
aCBsaW5lIGNhdXNlZCB0aGUgZXhjZXB0aW9uLgogICAgICAgbWVzc2FnZSwKLSAgICAgIFN0cmlu
ZygpKTsgIC8vIE5vIHN0YWNrIHRyYWNlLCBlaXRoZXIuCisgICAgICAiIik7ICAgLy8gTm8gc3Rh
Y2sgdHJhY2UsIGVpdGhlci4KIH0KIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiAKLSNpZiBH
VEVTVF9PU19XSU5ET1dTCi0vLyBXZSBhcmUgb24gV2luZG93cy4KLQotLy8gQWRkcyBhbiAiZXhj
ZXB0aW9uIHRocm93biIgZmF0YWwgZmFpbHVyZSB0byB0aGUgY3VycmVudCB0ZXN0Lgotc3RhdGlj
IHZvaWQgQWRkRXhjZXB0aW9uVGhyb3duRmFpbHVyZShEV09SRCBleGNlcHRpb25fY29kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbG9jYXRpb24p
IHsKLSAgTWVzc2FnZSBtZXNzYWdlOwotICBtZXNzYWdlIDw8ICJFeGNlcHRpb24gdGhyb3duIHdp
dGggY29kZSAweCIgPDwgc3RkOjpzZXRiYXNlKDE2KSA8PAotICAgIGV4Y2VwdGlvbl9jb2RlIDw8
IHN0ZDo6c2V0YmFzZSgxMCkgPDwgIiBpbiAiIDw8IGxvY2F0aW9uIDw8ICIuIjsKLQotICBpbnRl
cm5hbDo6UmVwb3J0RmFpbHVyZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjprRmF0
YWxGYWlsdXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2UuR2V0U3RyaW5nKCkpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQog
Ly8gR29vZ2xlIFRlc3QgcmVxdWlyZXMgYWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSB0
byB1c2UgdGhlIHNhbWUgdGVzdAogLy8gZml4dHVyZSBjbGFzcy4gIFRoaXMgZnVuY3Rpb24gY2hl
Y2tzIGlmIHRoZSBjdXJyZW50IHRlc3QgaGFzIHRoZQogLy8gc2FtZSBmaXh0dXJlIGNsYXNzIGFz
IHRoZSBmaXJzdCB0ZXN0IGluIHRoZSBjdXJyZW50IHRlc3QgY2FzZS4gIElmCkBAIC0xOTkwLDE1
ICsyMzEyLDEzIEBAIGJvb2wgVGVzdDo6SGFzU2FtZUZpeHR1cmVDbGFzcygpIHsKICAgY29uc3Qg
VGVzdENhc2UqIGNvbnN0IHRlc3RfY2FzZSA9IGltcGwtPmN1cnJlbnRfdGVzdF9jYXNlKCk7CiAK
ICAgLy8gSW5mbyBhYm91dCB0aGUgZmlyc3QgdGVzdCBpbiB0aGUgY3VycmVudCB0ZXN0IGNhc2Uu
Ci0gIGNvbnN0IGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGNvbnN0IGZpcnN0X3Rlc3RfaW5mbyA9
Ci0gICAgICB0ZXN0X2Nhc2UtPnRlc3RfaW5mb19saXN0KClbMF0tPmltcGwoKTsKLSAgY29uc3Qg
aW50ZXJuYWw6OlR5cGVJZCBmaXJzdF9maXh0dXJlX2lkID0gZmlyc3RfdGVzdF9pbmZvLT5maXh0
dXJlX2NsYXNzX2lkKCk7CisgIGNvbnN0IFRlc3RJbmZvKiBjb25zdCBmaXJzdF90ZXN0X2luZm8g
PSB0ZXN0X2Nhc2UtPnRlc3RfaW5mb19saXN0KClbMF07CisgIGNvbnN0IGludGVybmFsOjpUeXBl
SWQgZmlyc3RfZml4dHVyZV9pZCA9IGZpcnN0X3Rlc3RfaW5mby0+Zml4dHVyZV9jbGFzc19pZF87
CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGZpcnN0X3Rlc3RfbmFtZSA9IGZpcnN0X3Rlc3RfaW5mby0+
bmFtZSgpOwogCiAgIC8vIEluZm8gYWJvdXQgdGhlIGN1cnJlbnQgdGVzdC4KLSAgY29uc3QgaW50
ZXJuYWw6OlRlc3RJbmZvSW1wbCogY29uc3QgdGhpc190ZXN0X2luZm8gPQotICAgICAgaW1wbC0+
Y3VycmVudF90ZXN0X2luZm8oKS0+aW1wbCgpOwotICBjb25zdCBpbnRlcm5hbDo6VHlwZUlkIHRo
aXNfZml4dHVyZV9pZCA9IHRoaXNfdGVzdF9pbmZvLT5maXh0dXJlX2NsYXNzX2lkKCk7CisgIGNv
bnN0IFRlc3RJbmZvKiBjb25zdCB0aGlzX3Rlc3RfaW5mbyA9IGltcGwtPmN1cnJlbnRfdGVzdF9p
bmZvKCk7CisgIGNvbnN0IGludGVybmFsOjpUeXBlSWQgdGhpc19maXh0dXJlX2lkID0gdGhpc190
ZXN0X2luZm8tPmZpeHR1cmVfY2xhc3NfaWRfOwogICBjb25zdCBjaGFyKiBjb25zdCB0aGlzX3Rl
c3RfbmFtZSA9IHRoaXNfdGVzdF9pbmZvLT5uYW1lKCk7CiAKICAgaWYgKHRoaXNfZml4dHVyZV9p
ZCAhPSBmaXJzdF9maXh0dXJlX2lkKSB7CkBAIC0yMDA4LDggKzIzMjgsOCBAQCBib29sIFRlc3Q6
Okhhc1NhbWVGaXh0dXJlQ2xhc3MoKSB7CiAgICAgY29uc3QgYm9vbCB0aGlzX2lzX1RFU1QgPSB0
aGlzX2ZpeHR1cmVfaWQgPT0gaW50ZXJuYWw6OkdldFRlc3RUeXBlSWQoKTsKIAogICAgIGlmIChm
aXJzdF9pc19URVNUIHx8IHRoaXNfaXNfVEVTVCkgewotICAgICAgLy8gVGhlIHVzZXIgbWl4ZWQg
VEVTVCBhbmQgVEVTVF9GIGluIHRoaXMgdGVzdCBjYXNlIC0gd2UnbGwgdGVsbAotICAgICAgLy8g
aGltL2hlciBob3cgdG8gZml4IGl0LgorICAgICAgLy8gQm90aCBURVNUIGFuZCBURVNUX0YgYXBw
ZWFyIGluIHNhbWUgdGVzdCBjYXNlLCB3aGljaCBpcyBpbmNvcnJlY3QuCisgICAgICAvLyBUZWxs
IHRoZSB1c2VyIGhvdyB0byBmaXggdGhpcy4KIAogICAgICAgLy8gR2V0cyB0aGUgbmFtZSBvZiB0
aGUgVEVTVCBhbmQgdGhlIG5hbWUgb2YgdGhlIFRFU1RfRi4gIE5vdGUKICAgICAgIC8vIHRoYXQg
Zmlyc3RfaXNfVEVTVCBhbmQgdGhpc19pc19URVNUIGNhbm5vdCBib3RoIGJlIHRydWUsIGFzCkBA
IC0yMDI5LDggKzIzNDksOCBAQCBib29sIFRlc3Q6Okhhc1NhbWVGaXh0dXJlQ2xhc3MoKSB7CiAg
ICAgICAgICAgPDwgIndhbnQgdG8gY2hhbmdlIHRoZSBURVNUIHRvIFRFU1RfRiBvciBtb3ZlIGl0
IHRvIGFub3RoZXIgdGVzdFxuIgogICAgICAgICAgIDw8ICJjYXNlLiI7CiAgICAgfSBlbHNlIHsK
LSAgICAgIC8vIFRoZSB1c2VyIGRlZmluZWQgdHdvIGZpeHR1cmUgY2xhc3NlcyB3aXRoIHRoZSBz
YW1lIG5hbWUgaW4KLSAgICAgIC8vIHR3byBuYW1lc3BhY2VzIC0gd2UnbGwgdGVsbCBoaW0vaGVy
IGhvdyB0byBmaXggaXQuCisgICAgICAvLyBUd28gZml4dHVyZSBjbGFzc2VzIHdpdGggdGhlIHNh
bWUgbmFtZSBhcHBlYXIgaW4gdHdvIGRpZmZlcmVudAorICAgICAgLy8gbmFtZXNwYWNlcywgd2hp
Y2ggaXMgbm90IGFsbG93ZWQuIFRlbGwgdGhlIHVzZXIgaG93IHRvIGZpeCB0aGlzLgogICAgICAg
QUREX0ZBSUxVUkUoKQogICAgICAgICAgIDw8ICJBbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBj
YXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZVxuIgogICAgICAgICAgIDw8ICJjbGFz
cy4gIEhvd2V2ZXIsIGluIHRlc3QgY2FzZSAiCkBAIC0yMDQ4LDYyICsyMzY4LDE2NCBAQCBib29s
IFRlc3Q6Okhhc1NhbWVGaXh0dXJlQ2xhc3MoKSB7CiAgIHJldHVybiB0cnVlOwogfQogCi0vLyBS
dW5zIHRoZSB0ZXN0IGFuZCB1cGRhdGVzIHRoZSB0ZXN0IHJlc3VsdC4KLXZvaWQgVGVzdDo6UnVu
KCkgewotICBpZiAoIUhhc1NhbWVGaXh0dXJlQ2xhc3MoKSkgcmV0dXJuOwotCi0gIGludGVybmFs
OjpVbml0VGVzdEltcGwqIGNvbnN0IGltcGwgPSBpbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCk7
CiAjaWYgR1RFU1RfSEFTX1NFSAotICAvLyBDYXRjaCBTRUgtc3R5bGUgZXhjZXB0aW9ucy4KLSAg
aW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgX190
cnkgewotICAgIFNldFVwKCk7Ci0gIH0gX19leGNlcHQoaW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9u
czo6R1Rlc3RTaG91bGRQcm9jZXNzU0VIKAotICAgICAgR2V0RXhjZXB0aW9uQ29kZSgpKSkgewot
ICAgIEFkZEV4Y2VwdGlvblRocm93bkZhaWx1cmUoR2V0RXhjZXB0aW9uQ29kZSgpLCAiU2V0VXAo
KSIpOwotICB9CiAKLSAgLy8gV2Ugd2lsbCBydW4gdGhlIHRlc3Qgb25seSBpZiBTZXRVcCgpIGhh
ZCBubyBmYXRhbCBmYWlsdXJlLgotICBpZiAoIUhhc0ZhdGFsRmFpbHVyZSgpKSB7Ci0gICAgaW1w
bC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgICBfX3Ry
eSB7Ci0gICAgICBUZXN0Qm9keSgpOwotICAgIH0gX19leGNlcHQoaW50ZXJuYWw6OlVuaXRUZXN0
T3B0aW9uczo6R1Rlc3RTaG91bGRQcm9jZXNzU0VIKAotICAgICAgICBHZXRFeGNlcHRpb25Db2Rl
KCkpKSB7Ci0gICAgICBBZGRFeGNlcHRpb25UaHJvd25GYWlsdXJlKEdldEV4Y2VwdGlvbkNvZGUo
KSwgInRoZSB0ZXN0IGJvZHkiKTsKLSAgICB9Ci0gIH0KKy8vIEFkZHMgYW4gImV4Y2VwdGlvbiB0
aHJvd24iIGZhdGFsIGZhaWx1cmUgdG8gdGhlIGN1cnJlbnQgdGVzdC4gIFRoaXMKKy8vIGZ1bmN0
aW9uIHJldHVybnMgaXRzIHJlc3VsdCB2aWEgYW4gb3V0cHV0IHBhcmFtZXRlciBwb2ludGVyIGJl
Y2F1c2UgVkMrKworLy8gcHJvaGliaXRzIGNyZWF0aW9uIG9mIG9iamVjdHMgd2l0aCBkZXN0cnVj
dG9ycyBvbiBzdGFjayBpbiBmdW5jdGlvbnMKKy8vIHVzaW5nIF9fdHJ5IChzZWUgZXJyb3IgQzI3
MTIpLgorc3RhdGljIHN0ZDo6c3RyaW5nKiBGb3JtYXRTZWhFeGNlcHRpb25NZXNzYWdlKERXT1JE
IGV4Y2VwdGlvbl9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7CisgIE1lc3NhZ2UgbWVzc2FnZTsKKyAgbWVz
c2FnZSA8PCAiU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgiIDw8IHN0ZDo6c2V0YmFzZSgxNikg
PDwKKyAgICBleGNlcHRpb25fY29kZSA8PCBzdGQ6OnNldGJhc2UoMTApIDw8ICIgdGhyb3duIGlu
ICIgPDwgbG9jYXRpb24gPDwgIi4iOwogCi0gIC8vIEhvd2V2ZXIsIHdlIHdhbnQgdG8gY2xlYW4g
dXAgYXMgbXVjaCBhcyBwb3NzaWJsZS4gIEhlbmNlIHdlIHdpbGwKLSAgLy8gYWx3YXlzIGNhbGwg
VGVhckRvd24oKSwgZXZlbiBpZiBTZXRVcCgpIG9yIHRoZSB0ZXN0IGJvZHkgaGFzCi0gIC8vIGZh
aWxlZC4KLSAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3Qo
KTsKKyAgcmV0dXJuIG5ldyBzdGQ6OnN0cmluZyhtZXNzYWdlLkdldFN0cmluZygpKTsKK30KKwor
I2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICisKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKyNpZiBH
VEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBBZGRzIGFuICJleGNlcHRpb24gdGhyb3duIiBmYXRh
bCBmYWlsdXJlIHRvIHRoZSBjdXJyZW50IHRlc3QuCitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0
Q3h4RXhjZXB0aW9uTWVzc2FnZShjb25zdCBjaGFyKiBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7
CisgIE1lc3NhZ2UgbWVzc2FnZTsKKyAgaWYgKGRlc2NyaXB0aW9uICE9IE5VTEwpIHsKKyAgICBt
ZXNzYWdlIDw8ICJDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gXCIiIDw8IGRlc2NyaXB0
aW9uIDw8ICJcIiI7CisgIH0gZWxzZSB7CisgICAgbWVzc2FnZSA8PCAiVW5rbm93biBDKysgZXhj
ZXB0aW9uIjsKKyAgfQorICBtZXNzYWdlIDw8ICIgdGhyb3duIGluICIgPDwgbG9jYXRpb24gPDwg
Ii4iOworCisgIHJldHVybiBtZXNzYWdlLkdldFN0cmluZygpOworfQorCitzdGF0aWMgc3RkOjpz
dHJpbmcgUHJpbnRUZXN0UGFydFJlc3VsdFRvU3RyaW5nKAorICAgIGNvbnN0IFRlc3RQYXJ0UmVz
dWx0JiB0ZXN0X3BhcnRfcmVzdWx0KTsKKworR29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb246Okdv
b2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uKAorICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBmYWls
dXJlKQorICAgIDogOjpzdGQ6OnJ1bnRpbWVfZXJyb3IoUHJpbnRUZXN0UGFydFJlc3VsdFRvU3Ry
aW5nKGZhaWx1cmUpLmNfc3RyKCkpIHt9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElP
TlMKKworLy8gV2UgcHV0IHRoZXNlIGhlbHBlciBmdW5jdGlvbnMgaW4gdGhlIGludGVybmFsIG5h
bWVzcGFjZSBhcyBJQk0ncyB4bEMKKy8vIGNvbXBpbGVyIHJlamVjdHMgdGhlIGNvZGUgaWYgdGhl
eSB3ZXJlIGRlY2xhcmVkIHN0YXRpYy4KKworLy8gUnVucyB0aGUgZ2l2ZW4gbWV0aG9kIGFuZCBo
YW5kbGVzIFNFSCBleGNlcHRpb25zIGl0IHRocm93cywgd2hlbgorLy8gU0VIIGlzIHN1cHBvcnRl
ZDsgcmV0dXJucyB0aGUgMC12YWx1ZSBmb3IgdHlwZSBSZXN1bHQgaW4gY2FzZSBvZiBhbgorLy8g
U0VIIGV4Y2VwdGlvbi4gIChNaWNyb3NvZnQgY29tcGlsZXJzIGNhbm5vdCBoYW5kbGUgU0VIIGFu
ZCBDKysKKy8vIGV4Y2VwdGlvbnMgaW4gdGhlIHNhbWUgZnVuY3Rpb24uICBUaGVyZWZvcmUsIHdl
IHByb3ZpZGUgYSBzZXBhcmF0ZQorLy8gd3JhcHBlciBmdW5jdGlvbiBmb3IgaGFuZGxpbmcgU0VI
IGV4Y2VwdGlvbnMuKQordGVtcGxhdGUgPGNsYXNzIFQsIHR5cGVuYW1lIFJlc3VsdD4KK1Jlc3Vs
dCBIYW5kbGVTZWhFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAgICBUKiBvYmplY3Qs
IFJlc3VsdCAoVDo6Km1ldGhvZCkoKSwgY29uc3QgY2hhciogbG9jYXRpb24pIHsKKyNpZiBHVEVT
VF9IQVNfU0VICiAgIF9fdHJ5IHsKLSAgICBUZWFyRG93bigpOwotICB9IF9fZXhjZXB0KGludGVy
bmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCgKKyAgICByZXR1cm4g
KG9iamVjdC0+Km1ldGhvZCkoKTsKKyAgfSBfX2V4Y2VwdCAoaW50ZXJuYWw6OlVuaXRUZXN0T3B0
aW9uczo6R1Rlc3RTaG91bGRQcm9jZXNzU0VIKCAgLy8gTk9MSU5UCiAgICAgICBHZXRFeGNlcHRp
b25Db2RlKCkpKSB7Ci0gICAgQWRkRXhjZXB0aW9uVGhyb3duRmFpbHVyZShHZXRFeGNlcHRpb25D
b2RlKCksICJUZWFyRG93bigpIik7CisgICAgLy8gV2UgY3JlYXRlIHRoZSBleGNlcHRpb24gbWVz
c2FnZSBvbiB0aGUgaGVhcCBiZWNhdXNlIFZDKysgcHJvaGliaXRzCisgICAgLy8gY3JlYXRpb24g
b2Ygb2JqZWN0cyB3aXRoIGRlc3RydWN0b3JzIG9uIHN0YWNrIGluIGZ1bmN0aW9ucyB1c2luZyBf
X3RyeQorICAgIC8vIChzZWUgZXJyb3IgQzI3MTIpLgorICAgIHN0ZDo6c3RyaW5nKiBleGNlcHRp
b25fbWVzc2FnZSA9IEZvcm1hdFNlaEV4Y2VwdGlvbk1lc3NhZ2UoCisgICAgICAgIEdldEV4Y2Vw
dGlvbkNvZGUoKSwgbG9jYXRpb24pOworICAgIGludGVybmFsOjpSZXBvcnRGYWlsdXJlSW5Vbmtu
b3duTG9jYXRpb24oVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXhjZXB0aW9uX21lc3NhZ2UpOworICAg
IGRlbGV0ZSBleGNlcHRpb25fbWVzc2FnZTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzdWx0
PigwKTsKICAgfQorI2Vsc2UKKyAgKHZvaWQpbG9jYXRpb247CisgIHJldHVybiAob2JqZWN0LT4q
bWV0aG9kKSgpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICit9CiAKLSNlbHNlICAvLyBXZSBh
cmUgb24gYSBjb21waWxlciBvciBwbGF0Zm9ybSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBTRUguCi0g
IGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7Ci0gIFNl
dFVwKCk7CisvLyBSdW5zIHRoZSBnaXZlbiBtZXRob2QgYW5kIGNhdGNoZXMgYW5kIHJlcG9ydHMg
QysrIGFuZC9vciBTRUgtc3R5bGUKKy8vIGV4Y2VwdGlvbnMsIGlmIHRoZXkgYXJlIHN1cHBvcnRl
ZDsgcmV0dXJucyB0aGUgMC12YWx1ZSBmb3IgdHlwZQorLy8gUmVzdWx0IGluIGNhc2Ugb2YgYW4g
U0VIIGV4Y2VwdGlvbi4KK3RlbXBsYXRlIDxjbGFzcyBULCB0eXBlbmFtZSBSZXN1bHQ+CitSZXN1
bHQgSGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgVCogb2JqZWN0LCBS
ZXN1bHQgKFQ6OiptZXRob2QpKCksIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7CisgIC8vIE5PVEU6
IFRoZSB1c2VyIGNvZGUgY2FuIGFmZmVjdCB0aGUgd2F5IGluIHdoaWNoIEdvb2dsZSBUZXN0IGhh
bmRsZXMKKyAgLy8gZXhjZXB0aW9ucyBieSBzZXR0aW5nIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0
aW9ucyksIGJ1dCBvbmx5IGJlZm9yZQorICAvLyBSVU5fQUxMX1RFU1RTKCkgc3RhcnRzLiBJdCBp
cyB0ZWNobmljYWxseSBwb3NzaWJsZSB0byBjaGVjayB0aGUgZmxhZworICAvLyBhZnRlciB0aGUg
ZXhjZXB0aW9uIGlzIGNhdWdodCBhbmQgZWl0aGVyIHJlcG9ydCBvciByZS10aHJvdyB0aGUKKyAg
Ly8gZXhjZXB0aW9uIGJhc2VkIG9uIHRoZSBmbGFnJ3MgdmFsdWU6CisgIC8vCisgIC8vIHRyeSB7
CisgIC8vICAgLy8gUGVyZm9ybSB0aGUgdGVzdCBtZXRob2QuCisgIC8vIH0gY2F0Y2ggKC4uLikg
eworICAvLyAgIGlmIChHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKQorICAvLyAgICAgLy8g
UmVwb3J0IHRoZSBleGNlcHRpb24gYXMgZmFpbHVyZS4KKyAgLy8gICBlbHNlCisgIC8vICAgICB0
aHJvdzsgIC8vIFJlLXRocm93cyB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uLgorICAvLyB9CisgIC8v
CisgIC8vIEhvd2V2ZXIsIHRoZSBwdXJwb3NlIG9mIHRoaXMgZmxhZyBpcyB0byBhbGxvdyB0aGUg
cHJvZ3JhbSB0byBkcm9wIGludG8KKyAgLy8gdGhlIGRlYnVnZ2VyIHdoZW4gdGhlIGV4Y2VwdGlv
biBpcyB0aHJvd24uIE9uIG1vc3QgcGxhdGZvcm1zLCBvbmNlIHRoZQorICAvLyBjb250cm9sIGVu
dGVycyB0aGUgY2F0Y2ggYmxvY2ssIHRoZSBleGNlcHRpb24gb3JpZ2luIGluZm9ybWF0aW9uIGlz
CisgIC8vIGxvc3QgYW5kIHRoZSBkZWJ1Z2dlciB3aWxsIHN0b3AgdGhlIHByb2dyYW0gYXQgdGhl
IHBvaW50IG9mIHRoZQorICAvLyByZS10aHJvdyBpbiB0aGlzIGZ1bmN0aW9uIC0tIGluc3RlYWQg
b2YgYXQgdGhlIHBvaW50IG9mIHRoZSBvcmlnaW5hbAorICAvLyB0aHJvdyBzdGF0ZW1lbnQgaW4g
dGhlIGNvZGUgdW5kZXIgdGVzdC4gIEZvciB0aGlzIHJlYXNvbiwgd2UgcGVyZm9ybQorICAvLyB0
aGUgY2hlY2sgZWFybHksIHNhY3JpZmljaW5nIHRoZSBhYmlsaXR5IHRvIGFmZmVjdCBHb29nbGUg
VGVzdCdzCisgIC8vIGV4Y2VwdGlvbiBoYW5kbGluZyBpbiB0aGUgbWV0aG9kIHdoZXJlIHRoZSBl
eGNlcHRpb24gaXMgdGhyb3duLgorICBpZiAoaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpLT5j
YXRjaF9leGNlcHRpb25zKCkpIHsKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworICAgIHRyeSB7
CisgICAgICByZXR1cm4gSGFuZGxlU2VoRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQob2Jq
ZWN0LCBtZXRob2QsIGxvY2F0aW9uKTsKKyAgICB9IGNhdGNoIChjb25zdCBBc3NlcnRpb25FeGNl
cHRpb24mKSB7ICAvLyBOT0xJTlQKKyAgICAgIC8vIFRoaXMgZmFpbHVyZSB3YXMgcmVwb3J0ZWQg
YWxyZWFkeS4KKyAgICB9IGNhdGNoIChjb25zdCBpbnRlcm5hbDo6R29vZ2xlVGVzdEZhaWx1cmVF
eGNlcHRpb24mKSB7ICAvLyBOT0xJTlQKKyAgICAgIC8vIFRoaXMgZXhjZXB0aW9uIHR5cGUgY2Fu
IG9ubHkgYmUgdGhyb3duIGJ5IGEgZmFpbGVkIEdvb2dsZQorICAgICAgLy8gVGVzdCBhc3NlcnRp
b24gd2l0aCB0aGUgaW50ZW50aW9uIG9mIGxldHRpbmcgYW5vdGhlciB0ZXN0aW5nCisgICAgICAv
LyBmcmFtZXdvcmsgY2F0Y2ggaXQuICBUaGVyZWZvcmUgd2UganVzdCByZS10aHJvdyBpdC4KKyAg
ICAgIHRocm93OworICAgIH0gY2F0Y2ggKGNvbnN0IHN0ZDo6ZXhjZXB0aW9uJiBlKSB7ICAvLyBO
T0xJTlQKKyAgICAgIGludGVybmFsOjpSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oCisg
ICAgICAgICAgVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsCisgICAgICAgICAgRm9ybWF0
Q3h4RXhjZXB0aW9uTWVzc2FnZShlLndoYXQoKSwgbG9jYXRpb24pKTsKKyAgICB9IGNhdGNoICgu
Li4pIHsgIC8vIE5PTElOVAorICAgICAgaW50ZXJuYWw6OlJlcG9ydEZhaWx1cmVJblVua25vd25M
b2NhdGlvbigKKyAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKKyAgICAg
ICAgICBGb3JtYXRDeHhFeGNlcHRpb25NZXNzYWdlKE5VTEwsIGxvY2F0aW9uKSk7CisgICAgfQor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZXN1bHQ+KDApOworI2Vsc2UKKyAgICByZXR1cm4gSGFu
ZGxlU2VoRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQob2JqZWN0LCBtZXRob2QsIGxvY2F0
aW9uKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKKyAgfSBlbHNlIHsKKyAgICBy
ZXR1cm4gKG9iamVjdC0+Km1ldGhvZCkoKTsKKyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UgaW50
ZXJuYWwKIAorLy8gUnVucyB0aGUgdGVzdCBhbmQgdXBkYXRlcyB0aGUgdGVzdCByZXN1bHQuCit2
b2lkIFRlc3Q6OlJ1bigpIHsKKyAgaWYgKCFIYXNTYW1lRml4dHVyZUNsYXNzKCkpIHJldHVybjsK
KworICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0gaW50ZXJuYWw6OkdldFVu
aXRUZXN0SW1wbCgpOworICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZp
bmdHVGVzdCgpOworICBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0
ZWQodGhpcywgJlRlc3Q6OlNldFVwLCAiU2V0VXAoKSIpOwogICAvLyBXZSB3aWxsIHJ1biB0aGUg
dGVzdCBvbmx5IGlmIFNldFVwKCkgd2FzIHN1Y2Nlc3NmdWwuCiAgIGlmICghSGFzRmF0YWxGYWls
dXJlKCkpIHsKICAgICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdH
VGVzdCgpOwotICAgIFRlc3RCb2R5KCk7CisgICAgaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJ
bk1ldGhvZElmU3VwcG9ydGVkKAorICAgICAgICB0aGlzLCAmVGVzdDo6VGVzdEJvZHksICJ0aGUg
dGVzdCBib2R5Iik7CiAgIH0KIAogICAvLyBIb3dldmVyLCB3ZSB3YW50IHRvIGNsZWFuIHVwIGFz
IG11Y2ggYXMgcG9zc2libGUuICBIZW5jZSB3ZSB3aWxsCiAgIC8vIGFsd2F5cyBjYWxsIFRlYXJE
b3duKCksIGV2ZW4gaWYgU2V0VXAoKSBvciB0aGUgdGVzdCBib2R5IGhhcwogICAvLyBmYWlsZWQu
CiAgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7Ci0g
IFRlYXJEb3duKCk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKKyAgaW50ZXJuYWw6OkhhbmRs
ZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAorICAgICAgdGhpcywgJlRlc3Q6OlRlYXJE
b3duLCAiVGVhckRvd24oKSIpOwogfQogCi0KIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGN1cnJl
bnQgdGVzdCBoYXMgYSBmYXRhbCBmYWlsdXJlLgogYm9vbCBUZXN0OjpIYXNGYXRhbEZhaWx1cmUo
KSB7CiAgIHJldHVybiBpbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCktPmN1cnJlbnRfdGVzdF9y
ZXN1bHQoKS0+SGFzRmF0YWxGYWlsdXJlKCk7CkBAIC0yMTE4LDIyICsyNTQwLDI4IEBAIGJvb2wg
VGVzdDo6SGFzTm9uZmF0YWxGYWlsdXJlKCkgewogLy8gY2xhc3MgVGVzdEluZm8KIAogLy8gQ29u
c3RydWN0cyBhIFRlc3RJbmZvIG9iamVjdC4gSXQgYXNzdW1lcyBvd25lcnNoaXAgb2YgdGhlIHRl
c3QgZmFjdG9yeQotLy8gb2JqZWN0IHZpYSBpbXBsXy4KLVRlc3RJbmZvOjpUZXN0SW5mbyhjb25z
dCBjaGFyKiBhX3Rlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGFfbmFtZSwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX3Rlc3RfY2FzZV9jb21t
ZW50LAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfY29tbWVudCwKKy8vIG9iamVj
dC4KK1Rlc3RJbmZvOjpUZXN0SW5mbyhjb25zdCBzdGQ6OnN0cmluZyYgYV90ZXN0X2Nhc2VfbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgYV9uYW1lLAorICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfdHlwZV9wYXJhbSwKKyAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBhX3ZhbHVlX3BhcmFtLAorICAgICAgICAgICAgICAgICAgIGludGVybmFs
OjpDb2RlTG9jYXRpb24gYV9jb2RlX2xvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgIGludGVy
bmFsOjpUeXBlSWQgZml4dHVyZV9jbGFzc19pZCwKLSAgICAgICAgICAgICAgICAgICBpbnRlcm5h
bDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5KSB7Ci0gIGltcGxfID0gbmV3IGludGVybmFsOjpU
ZXN0SW5mb0ltcGwodGhpcywgYV90ZXN0X2Nhc2VfbmFtZSwgYV9uYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFfdGVzdF9jYXNlX2NvbW1lbnQsIGFfY29tbWVudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXh0dXJlX2NsYXNzX2lkLCBm
YWN0b3J5KTsKLX0KKyAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNl
KiBmYWN0b3J5KQorICAgIDogdGVzdF9jYXNlX25hbWVfKGFfdGVzdF9jYXNlX25hbWUpLAorICAg
ICAgbmFtZV8oYV9uYW1lKSwKKyAgICAgIHR5cGVfcGFyYW1fKGFfdHlwZV9wYXJhbSA/IG5ldyBz
dGQ6OnN0cmluZyhhX3R5cGVfcGFyYW0pIDogTlVMTCksCisgICAgICB2YWx1ZV9wYXJhbV8oYV92
YWx1ZV9wYXJhbSA/IG5ldyBzdGQ6OnN0cmluZyhhX3ZhbHVlX3BhcmFtKSA6IE5VTEwpLAorICAg
ICAgbG9jYXRpb25fKGFfY29kZV9sb2NhdGlvbiksCisgICAgICBmaXh0dXJlX2NsYXNzX2lkXyhm
aXh0dXJlX2NsYXNzX2lkKSwKKyAgICAgIHNob3VsZF9ydW5fKGZhbHNlKSwKKyAgICAgIGlzX2Rp
c2FibGVkXyhmYWxzZSksCisgICAgICBtYXRjaGVzX2ZpbHRlcl8oZmFsc2UpLAorICAgICAgZmFj
dG9yeV8oZmFjdG9yeSksCisgICAgICByZXN1bHRfKCkge30KIAogLy8gRGVzdHJ1Y3RzIGEgVGVz
dEluZm8gb2JqZWN0LgotVGVzdEluZm86On5UZXN0SW5mbygpIHsKLSAgZGVsZXRlIGltcGxfOwot
fQorVGVzdEluZm86On5UZXN0SW5mbygpIHsgZGVsZXRlIGZhY3RvcnlfOyB9CiAKIG5hbWVzcGFj
ZSBpbnRlcm5hbCB7CiAKQEAgLTIxNDQsMTAgKzI1NzIsMTEgQEAgbmFtZXNwYWNlIGludGVybmFs
IHsKIC8vCiAvLyAgIHRlc3RfY2FzZV9uYW1lOiAgIG5hbWUgb2YgdGhlIHRlc3QgY2FzZQogLy8g
ICBuYW1lOiAgICAgICAgICAgICBuYW1lIG9mIHRoZSB0ZXN0Ci0vLyAgIHRlc3RfY2FzZV9jb21t
ZW50OiBhIGNvbW1lbnQgb24gdGhlIHRlc3QgY2FzZSB0aGF0IHdpbGwgYmUgaW5jbHVkZWQgaW4K
LS8vICAgICAgICAgICAgICAgICAgICAgIHRoZSB0ZXN0IG91dHB1dAotLy8gICBjb21tZW50OiAg
ICAgICAgICBhIGNvbW1lbnQgb24gdGhlIHRlc3QgdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluIHRo
ZQotLy8gICAgICAgICAgICAgICAgICAgICB0ZXN0IG91dHB1dAorLy8gICB0eXBlX3BhcmFtOiAg
ICAgICB0aGUgbmFtZSBvZiB0aGUgdGVzdCdzIHR5cGUgcGFyYW1ldGVyLCBvciBOVUxMIGlmCisv
LyAgICAgICAgICAgICAgICAgICAgIHRoaXMgaXMgbm90IGEgdHlwZWQgb3IgYSB0eXBlLXBhcmFt
ZXRlcml6ZWQgdGVzdC4KKy8vICAgdmFsdWVfcGFyYW06ICAgICAgdGV4dCByZXByZXNlbnRhdGlv
biBvZiB0aGUgdGVzdCdzIHZhbHVlIHBhcmFtZXRlciwKKy8vICAgICAgICAgICAgICAgICAgICAg
b3IgTlVMTCBpZiB0aGlzIGlzIG5vdCBhIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKy8vICAg
Y29kZV9sb2NhdGlvbjogICAgY29kZSBsb2NhdGlvbiB3aGVyZSB0aGUgdGVzdCBpcyBkZWZpbmVk
CiAvLyAgIGZpeHR1cmVfY2xhc3NfaWQ6IElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKIC8v
ICAgc2V0X3VwX3RjOiAgICAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzIHVw
IHRoZSB0ZXN0IGNhc2UKIC8vICAgdGVhcl9kb3duX3RjOiAgICAgcG9pbnRlciB0byB0aGUgZnVu
Y3Rpb24gdGhhdCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UKQEAgLTIxNTUsMjIgKzI1ODQsMjQg
QEAgbmFtZXNwYWNlIGludGVybmFsIHsKIC8vICAgICAgICAgICAgICAgICAgICAgVGhlIG5ld2x5
IGNyZWF0ZWQgVGVzdEluZm8gaW5zdGFuY2Ugd2lsbCBhc3N1bWUKIC8vICAgICAgICAgICAgICAg
ICAgICAgb3duZXJzaGlwIG9mIHRoZSBmYWN0b3J5IG9iamVjdC4KIFRlc3RJbmZvKiBNYWtlQW5k
UmVnaXN0ZXJUZXN0SW5mbygKLSAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwgY29uc3Qg
Y2hhciogbmFtZSwKLSAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfY29tbWVudCwgY29uc3QgY2hh
ciogY29tbWVudCwKKyAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICBjb25zdCBj
aGFyKiBuYW1lLAorICAgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0sCisgICAgY29uc3QgY2hhciog
dmFsdWVfcGFyYW0sCisgICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24sCiAgICAgVHlwZUlk
IGZpeHR1cmVfY2xhc3NfaWQsCiAgICAgU2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAg
IFRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YywKICAgICBUZXN0RmFjdG9yeUJhc2Uq
IGZhY3RvcnkpIHsKICAgVGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9Ci0gICAgICBuZXcgVGVz
dEluZm8odGVzdF9jYXNlX25hbWUsIG5hbWUsIHRlc3RfY2FzZV9jb21tZW50LCBjb21tZW50LAot
ICAgICAgICAgICAgICAgICAgIGZpeHR1cmVfY2xhc3NfaWQsIGZhY3RvcnkpOworICAgICAgbmV3
IFRlc3RJbmZvKHRlc3RfY2FzZV9uYW1lLCBuYW1lLCB0eXBlX3BhcmFtLCB2YWx1ZV9wYXJhbSwK
KyAgICAgICAgICAgICAgICAgICBjb2RlX2xvY2F0aW9uLCBmaXh0dXJlX2NsYXNzX2lkLCBmYWN0
b3J5KTsKICAgR2V0VW5pdFRlc3RJbXBsKCktPkFkZFRlc3RJbmZvKHNldF91cF90YywgdGVhcl9k
b3duX3RjLCB0ZXN0X2luZm8pOwogICByZXR1cm4gdGVzdF9pbmZvOwogfQogCi0jaWYgR1RFU1Rf
SEFTX1BBUkFNX1RFU1QKIHZvaWQgUmVwb3J0SW52YWxpZFRlc3RDYXNlVHlwZShjb25zdCBjaGFy
KiB0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBmaWxlLCBpbnQgbGluZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
ZGVMb2NhdGlvbiBjb2RlX2xvY2F0aW9uKSB7CiAgIE1lc3NhZ2UgZXJyb3JzOwogICBlcnJvcnMK
ICAgICAgIDw8ICJBdHRlbXB0ZWQgcmVkZWZpbml0aW9uIG9mIHRlc3QgY2FzZSAiIDw8IHRlc3Rf
Y2FzZV9uYW1lIDw8ICIuXG4iCkBAIC0yMTgyLDQ4ICsyNjEzLDEyIEBAIHZvaWQgUmVwb3J0SW52
YWxpZFRlc3RDYXNlVHlwZShjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKICAgICAgIDw8ICJw
cm9iYWJseSByZW5hbWUgb25lIG9mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50byBk
aWZmZXJlbnRcbiIKICAgICAgIDw8ICJ0ZXN0IGNhc2VzLiI7CiAKLSAgZnByaW50ZihzdGRlcnIs
ICIlcyAlcyIsIEZvcm1hdEZpbGVMb2NhdGlvbihmaWxlLCBsaW5lKS5jX3N0cigpLAotICAgICAg
ICAgIGVycm9ycy5HZXRTdHJpbmcoKS5jX3N0cigpKTsKKyAgR1RFU1RfTE9HXyhFUlJPUikgPDwg
Rm9ybWF0RmlsZUxvY2F0aW9uKGNvZGVfbG9jYXRpb24uZmlsZS5jX3N0cigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZV9sb2NhdGlvbi5saW5lKQorICAg
ICAgICAgICAgICAgICAgICA8PCAiICIgPDwgZXJyb3JzLkdldFN0cmluZygpOwogfQotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAot
Ly8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIG5hbWUuCi1jb25zdCBjaGFyKiBUZXN0SW5mbzo6dGVz
dF9jYXNlX25hbWUoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBsXy0+dGVzdF9jYXNlX25hbWUoKTsK
LX0KLQotLy8gUmV0dXJucyB0aGUgdGVzdCBuYW1lLgotY29uc3QgY2hhciogVGVzdEluZm86Om5h
bWUoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBsXy0+bmFtZSgpOwotfQotCi0vLyBSZXR1cm5zIHRo
ZSB0ZXN0IGNhc2UgY29tbWVudC4KLWNvbnN0IGNoYXIqIFRlc3RJbmZvOjp0ZXN0X2Nhc2VfY29t
bWVudCgpIGNvbnN0IHsKLSAgcmV0dXJuIGltcGxfLT50ZXN0X2Nhc2VfY29tbWVudCgpOwotfQot
Ci0vLyBSZXR1cm5zIHRoZSB0ZXN0IGNvbW1lbnQuCi1jb25zdCBjaGFyKiBUZXN0SW5mbzo6Y29t
bWVudCgpIGNvbnN0IHsKLSAgcmV0dXJuIGltcGxfLT5jb21tZW50KCk7Ci19Ci0KLS8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGlzIHRlc3Qgc2hvdWxkIHJ1bi4KLWJvb2wgVGVzdEluZm86OnNob3VsZF9y
dW4oKSBjb25zdCB7IHJldHVybiBpbXBsXy0+c2hvdWxkX3J1bigpOyB9Ci0KLS8vIFJldHVybnMg
dHJ1ZSBpZiB0aGlzIHRlc3QgbWF0Y2hlcyB0aGUgdXNlci1zcGVjaWZpZWQgZmlsdGVyLgotYm9v
bCBUZXN0SW5mbzo6bWF0Y2hlc19maWx0ZXIoKSBjb25zdCB7IHJldHVybiBpbXBsXy0+bWF0Y2hl
c19maWx0ZXIoKTsgfQotCi0vLyBSZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIHRlc3QuCi1jb25z
dCBUZXN0UmVzdWx0KiBUZXN0SW5mbzo6cmVzdWx0KCkgY29uc3QgeyByZXR1cm4gaW1wbF8tPnJl
c3VsdCgpOyB9Ci0KLS8vIEluY3JlbWVudHMgdGhlIG51bWJlciBvZiBkZWF0aCB0ZXN0cyBlbmNv
dW50ZXJlZCBpbiB0aGlzIHRlc3Qgc28KLS8vIGZhci4KLWludCBUZXN0SW5mbzo6aW5jcmVtZW50
X2RlYXRoX3Rlc3RfY291bnQoKSB7Ci0gIHJldHVybiBpbXBsXy0+cmVzdWx0KCktPmluY3JlbWVu
dF9kZWF0aF90ZXN0X2NvdW50KCk7Ci19Ci0KIG5hbWVzcGFjZSB7CiAKIC8vIEEgcHJlZGljYXRl
IHRoYXQgY2hlY2tzIHRoZSB0ZXN0IG5hbWUgb2YgYSBUZXN0SW5mbyBhZ2FpbnN0IGEga25vd24K
QEAgLTIyNDQsMTEgKzI2MzksMTEgQEAgY2xhc3MgVGVzdE5hbWVJcyB7CiAKICAgLy8gUmV0dXJu
cyB0cnVlIGlmZiB0aGUgdGVzdCBuYW1lIG9mIHRlc3RfaW5mbyBtYXRjaGVzIG5hbWVfLgogICBi
b29sIG9wZXJhdG9yKCkoY29uc3QgVGVzdEluZm8gKiB0ZXN0X2luZm8pIGNvbnN0IHsKLSAgICBy
ZXR1cm4gdGVzdF9pbmZvICYmIGludGVybmFsOjpTdHJpbmcodGVzdF9pbmZvLT5uYW1lKCkpLkNv
bXBhcmUobmFtZV8pID09IDA7CisgICAgcmV0dXJuIHRlc3RfaW5mbyAmJiB0ZXN0X2luZm8tPm5h
bWUoKSA9PSBuYW1lXzsKICAgfQogCiAgcHJpdmF0ZToKLSAgaW50ZXJuYWw6OlN0cmluZyBuYW1l
XzsKKyAgc3RkOjpzdHJpbmcgbmFtZV87CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UKQEAgLTIyNTks
NzggKzI2NTQsNjAgQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIC8vIGFuZCBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUCBpbnRvIHJlZ3VsYXIgdGVzdHMgYW5kIHJlZ2lzdGVycyB0aG9zZS4KIC8vIFRo
aXMgd2lsbCBiZSBkb25lIGp1c3Qgb25jZSBkdXJpbmcgdGhlIHByb2dyYW0gcnVudGltZS4KIHZv
aWQgVW5pdFRlc3RJbXBsOjpSZWdpc3RlclBhcmFtZXRlcml6ZWRUZXN0cygpIHsKLSNpZiBHVEVT
VF9IQVNfUEFSQU1fVEVTVAogICBpZiAoIXBhcmFtZXRlcml6ZWRfdGVzdHNfcmVnaXN0ZXJlZF8p
IHsKICAgICBwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnlfLlJlZ2lzdGVyVGVzdHMoKTsKICAg
ICBwYXJhbWV0ZXJpemVkX3Rlc3RzX3JlZ2lzdGVyZWRfID0gdHJ1ZTsKICAgfQotI2VuZGlmCiB9
CiAKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCiAvLyBDcmVhdGVzIHRoZSB0ZXN0IG9iamVj
dCwgcnVucyBpdCwgcmVjb3JkcyBpdHMgcmVzdWx0LCBhbmQgdGhlbgogLy8gZGVsZXRlcyBpdC4K
LXZvaWQgVGVzdEluZm9JbXBsOjpSdW4oKSB7Cit2b2lkIFRlc3RJbmZvOjpSdW4oKSB7CiAgIGlm
ICghc2hvdWxkX3J1bl8pIHJldHVybjsKIAogICAvLyBUZWxscyBVbml0VGVzdCB3aGVyZSB0byBz
dG9yZSB0ZXN0IHJlc3VsdC4KLSAgVW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0gaW50ZXJuYWw6
OkdldFVuaXRUZXN0SW1wbCgpOwotICBpbXBsLT5zZXRfY3VycmVudF90ZXN0X2luZm8ocGFyZW50
Xyk7CisgIGludGVybmFsOjpVbml0VGVzdEltcGwqIGNvbnN0IGltcGwgPSBpbnRlcm5hbDo6R2V0
VW5pdFRlc3RJbXBsKCk7CisgIGltcGwtPnNldF9jdXJyZW50X3Rlc3RfaW5mbyh0aGlzKTsKIAog
ICBUZXN0RXZlbnRMaXN0ZW5lciogcmVwZWF0ZXIgPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+
bGlzdGVuZXJzKCkucmVwZWF0ZXIoKTsKIAogICAvLyBOb3RpZmllcyB0aGUgdW5pdCB0ZXN0IGV2
ZW50IGxpc3RlbmVycyB0aGF0IGEgdGVzdCBpcyBhYm91dCB0byBzdGFydC4KLSAgcmVwZWF0ZXIt
Pk9uVGVzdFN0YXJ0KCpwYXJlbnRfKTsKKyAgcmVwZWF0ZXItPk9uVGVzdFN0YXJ0KCp0aGlzKTsK
IAotICBjb25zdCBUaW1lSW5NaWxsaXMgc3RhcnQgPSBHZXRUaW1lSW5NaWxsaXMoKTsKKyAgY29u
c3QgVGltZUluTWlsbGlzIHN0YXJ0ID0gaW50ZXJuYWw6OkdldFRpbWVJbk1pbGxpcygpOwogCiAg
IGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7Ci0jaWYg
R1RFU1RfSEFTX1NFSAotICAvLyBDYXRjaCBTRUgtc3R5bGUgZXhjZXB0aW9ucy4KLSAgVGVzdCog
dGVzdCA9IE5VTEw7Ci0KLSAgX190cnkgewotICAgIC8vIENyZWF0ZXMgdGhlIHRlc3Qgb2JqZWN0
LgotICAgIHRlc3QgPSBmYWN0b3J5Xy0+Q3JlYXRlVGVzdCgpOwotICB9IF9fZXhjZXB0KGludGVy
bmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCgKLSAgICAgIEdldEV4
Y2VwdGlvbkNvZGUoKSkpIHsKLSAgICBBZGRFeGNlcHRpb25UaHJvd25GYWlsdXJlKEdldEV4Y2Vw
dGlvbkNvZGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgdGVzdCBmaXh0
dXJlJ3MgY29uc3RydWN0b3IiKTsKLSAgICByZXR1cm47Ci0gIH0KLSNlbHNlICAvLyBXZSBhcmUg
b24gYSBjb21waWxlciBvciBwbGF0Zm9ybSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBTRUguCi0KLSAg
Ly8gVE9ETyh3YW4pOiBJZiB0ZXN0LT5SdW4oKSB0aHJvd3MsIHRlc3Qgd29uJ3QgYmUgZGVsZXRl
ZC4gIFRoaXMgaXMKLSAgLy8gbm90IGEgcHJvYmxlbSBub3cgYXMgd2UgZG9uJ3QgdXNlIGV4Y2Vw
dGlvbnMuICBJZiB3ZSB3ZXJlIHRvCi0gIC8vIGVuYWJsZSBleGNlcHRpb25zLCB3ZSBzaG91bGQg
cmV2aXNlIHRoZSBmb2xsb3dpbmcgdG8gYmUKLSAgLy8gZXhjZXB0aW9uLXNhZmUuCiAKICAgLy8g
Q3JlYXRlcyB0aGUgdGVzdCBvYmplY3QuCi0gIFRlc3QqIHRlc3QgPSBmYWN0b3J5Xy0+Q3JlYXRl
VGVzdCgpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICisgIFRlc3QqIGNvbnN0IHRlc3QgPSBp
bnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgICBmYWN0
b3J5XywgJmludGVybmFsOjpUZXN0RmFjdG9yeUJhc2U6OkNyZWF0ZVRlc3QsCisgICAgICAidGhl
IHRlc3QgZml4dHVyZSdzIGNvbnN0cnVjdG9yIik7CiAKLSAgLy8gUnVucyB0aGUgdGVzdCBvbmx5
IGlmIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgdGVzdCBmaXh0dXJlIGRpZG4ndAotICAvLyBnZW5l
cmF0ZSBhIGZhdGFsIGZhaWx1cmUuCisgIC8vIFJ1bnMgdGhlIHRlc3QgaWYgdGhlIGNvbnN0cnVj
dG9yIGRpZG4ndCBnZW5lcmF0ZSBhIGZhdGFsIGZhaWx1cmUuCisgIC8vIE5vdGUgdGhhdCB0aGUg
b2JqZWN0IHdpbGwgbm90IGJlIG51bGwKICAgaWYgKCFUZXN0OjpIYXNGYXRhbEZhaWx1cmUoKSkg
eworICAgIC8vIFRoaXMgZG9lc24ndCB0aHJvdyBhcyBhbGwgdXNlciBjb2RlIHRoYXQgY2FuIHRo
cm93IGFyZSB3cmFwcGVkIGludG8KKyAgICAvLyBleGNlcHRpb24gaGFuZGxpbmcgY29kZS4KICAg
ICB0ZXN0LT5SdW4oKTsKICAgfQogCi0gIC8vIERlbGV0ZXMgdGhlIHRlc3Qgb2JqZWN0LgotICBp
bXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotICBkZWxl
dGUgdGVzdDsKLSAgdGVzdCA9IE5VTEw7CisgICAgLy8gRGVsZXRlcyB0aGUgdGVzdCBvYmplY3Qu
CisgICAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsK
KyAgICBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisgICAg
ICAgIHRlc3QsICZUZXN0OjpEZWxldGVTZWxmXywgInRoZSB0ZXN0IGZpeHR1cmUncyBkZXN0cnVj
dG9yIik7CiAKLSAgcmVzdWx0Xy5zZXRfZWxhcHNlZF90aW1lKEdldFRpbWVJbk1pbGxpcygpIC0g
c3RhcnQpOworICByZXN1bHRfLnNldF9lbGFwc2VkX3RpbWUoaW50ZXJuYWw6OkdldFRpbWVJbk1p
bGxpcygpIC0gc3RhcnQpOwogCiAgIC8vIE5vdGlmaWVzIHRoZSB1bml0IHRlc3QgZXZlbnQgbGlz
dGVuZXIgdGhhdCBhIHRlc3QgaGFzIGp1c3QgZmluaXNoZWQuCi0gIHJlcGVhdGVyLT5PblRlc3RF
bmQoKnBhcmVudF8pOworICByZXBlYXRlci0+T25UZXN0RW5kKCp0aGlzKTsKIAogICAvLyBUZWxs
cyBVbml0VGVzdCB0byBzdG9wIGFzc29jaWF0aW5nIGFzc2VydGlvbiByZXN1bHRzIHRvIHRoaXMK
ICAgLy8gdGVzdC4KICAgaW1wbC0+c2V0X2N1cnJlbnRfdGVzdF9pbmZvKE5VTEwpOwogfQogCi19
ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQogLy8gY2xhc3MgVGVzdENhc2UKIAogLy8gR2V0cyB0
aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCkBAIC0yMzQz
LDEwICsyNzIwLDIxIEBAIGludCBUZXN0Q2FzZTo6ZmFpbGVkX3Rlc3RfY291bnQoKSBjb25zdCB7
CiAgIHJldHVybiBDb3VudElmKHRlc3RfaW5mb19saXN0XywgVGVzdEZhaWxlZCk7CiB9CiAKKy8v
IEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQg
aW4gdGhlIFhNTCByZXBvcnQuCitpbnQgVGVzdENhc2U6OnJlcG9ydGFibGVfZGlzYWJsZWRfdGVz
dF9jb3VudCgpIGNvbnN0IHsKKyAgcmV0dXJuIENvdW50SWYodGVzdF9pbmZvX2xpc3RfLCBUZXN0
UmVwb3J0YWJsZURpc2FibGVkKTsKK30KKworLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVk
IHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlLgogaW50IFRlc3RDYXNlOjpkaXNhYmxlZF90ZXN0X2Nv
dW50KCkgY29uc3QgewogICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlzdF8sIFRlc3REaXNh
YmxlZCk7CiB9CiAKKy8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0cyB0byBiZSBwcmludGVkIGlu
IHRoZSBYTUwgcmVwb3J0LgoraW50IFRlc3RDYXNlOjpyZXBvcnRhYmxlX3Rlc3RfY291bnQoKSBj
b25zdCB7CisgIHJldHVybiBDb3VudElmKHRlc3RfaW5mb19saXN0XywgVGVzdFJlcG9ydGFibGUp
OworfQorCiAvLyBHZXQgdGhlIG51bWJlciBvZiB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZSB0aGF0
IHNob3VsZCBydW4uCiBpbnQgVGVzdENhc2U6OnRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3Qgewog
ICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlzdF8sIFNob3VsZFJ1blRlc3QpOwpAQCAtMjM2
MiwxMyArMjc1MCwxNSBAQCBpbnQgVGVzdENhc2U6OnRvdGFsX3Rlc3RfY291bnQoKSBjb25zdCB7
CiAvLyBBcmd1bWVudHM6CiAvLwogLy8gICBuYW1lOiAgICAgICAgIG5hbWUgb2YgdGhlIHRlc3Qg
Y2FzZQorLy8gICBhX3R5cGVfcGFyYW06IHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UncyB0eXBl
IHBhcmFtZXRlciwgb3IgTlVMTCBpZgorLy8gICAgICAgICAgICAgICAgIHRoaXMgaXMgbm90IGEg
dHlwZWQgb3IgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlLgogLy8gICBzZXRfdXBfdGM6
ICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBjYXNlCiAv
LyAgIHRlYXJfZG93bl90YzogcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCB0ZWFycyBkb3du
IHRoZSB0ZXN0IGNhc2UKLVRlc3RDYXNlOjpUZXN0Q2FzZShjb25zdCBjaGFyKiBhX25hbWUsIGNv
bnN0IGNoYXIqIGFfY29tbWVudCwKK1Rlc3RDYXNlOjpUZXN0Q2FzZShjb25zdCBjaGFyKiBhX25h
bWUsIGNvbnN0IGNoYXIqIGFfdHlwZV9wYXJhbSwKICAgICAgICAgICAgICAgICAgICBUZXN0OjpT
ZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCiAgICAgICAgICAgICAgICAgICAgVGVzdDo6VGVh
ckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3RjKQogICAgIDogbmFtZV8oYV9uYW1lKSwKLSAg
ICAgIGNvbW1lbnRfKGFfY29tbWVudCksCisgICAgICB0eXBlX3BhcmFtXyhhX3R5cGVfcGFyYW0g
PyBuZXcgc3RkOjpzdHJpbmcoYV90eXBlX3BhcmFtKSA6IE5VTEwpLAogICAgICAgc2V0X3VwX3Rj
XyhzZXRfdXBfdGMpLAogICAgICAgdGVhcl9kb3duX3RjXyh0ZWFyX2Rvd25fdGMpLAogICAgICAg
c2hvdWxkX3J1bl8oZmFsc2UpLApAQCAtMjQxMyw0NSArMjgwMywyNyBAQCB2b2lkIFRlc3RDYXNl
OjpSdW4oKSB7CiAKICAgcmVwZWF0ZXItPk9uVGVzdENhc2VTdGFydCgqdGhpcyk7CiAgIGltcGwt
Pm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7Ci0gIHNldF91cF90
Y18oKTsKKyAgaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAor
ICAgICAgdGhpcywgJlRlc3RDYXNlOjpSdW5TZXRVcFRlc3RDYXNlLCAiU2V0VXBUZXN0Q2FzZSgp
Iik7CiAKICAgY29uc3QgaW50ZXJuYWw6OlRpbWVJbk1pbGxpcyBzdGFydCA9IGludGVybmFsOjpH
ZXRUaW1lSW5NaWxsaXMoKTsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbF90ZXN0X2NvdW50
KCk7IGkrKykgewotICAgIEdldE11dGFibGVUZXN0SW5mbyhpKS0+aW1wbCgpLT5SdW4oKTsKKyAg
ICBHZXRNdXRhYmxlVGVzdEluZm8oaSktPlJ1bigpOwogICB9CiAgIGVsYXBzZWRfdGltZV8gPSBp
bnRlcm5hbDo6R2V0VGltZUluTWlsbGlzKCkgLSBzdGFydDsKIAogICBpbXBsLT5vc19zdGFja190
cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotICB0ZWFyX2Rvd25fdGNfKCk7Cisg
IGludGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAgICAgIHRo
aXMsICZUZXN0Q2FzZTo6UnVuVGVhckRvd25UZXN0Q2FzZSwgIlRlYXJEb3duVGVzdENhc2UoKSIp
OworCiAgIHJlcGVhdGVyLT5PblRlc3RDYXNlRW5kKCp0aGlzKTsKICAgaW1wbC0+c2V0X2N1cnJl
bnRfdGVzdF9jYXNlKE5VTEwpOwogfQogCiAvLyBDbGVhcnMgdGhlIHJlc3VsdHMgb2YgYWxsIHRl
c3RzIGluIHRoaXMgdGVzdCBjYXNlLgogdm9pZCBUZXN0Q2FzZTo6Q2xlYXJSZXN1bHQoKSB7Ci0g
IEZvckVhY2godGVzdF9pbmZvX2xpc3RfLCBpbnRlcm5hbDo6VGVzdEluZm9JbXBsOjpDbGVhclRl
c3RSZXN1bHQpOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRlc3QgcGFzc2VkLgotYm9vbCBU
ZXN0Q2FzZTo6VGVzdFBhc3NlZChjb25zdCBUZXN0SW5mbyAqIHRlc3RfaW5mbykgewotICBjb25z
dCBpbnRlcm5hbDo6VGVzdEluZm9JbXBsKiBjb25zdCBpbXBsID0gdGVzdF9pbmZvLT5pbXBsKCk7
Ci0gIHJldHVybiBpbXBsLT5zaG91bGRfcnVuKCkgJiYgaW1wbC0+cmVzdWx0KCktPlBhc3NlZCgp
OwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRlc3QgZmFpbGVkLgotYm9vbCBUZXN0Q2FzZTo6
VGVzdEZhaWxlZChjb25zdCBUZXN0SW5mbyAqIHRlc3RfaW5mbykgewotICBjb25zdCBpbnRlcm5h
bDo6VGVzdEluZm9JbXBsKiBjb25zdCBpbXBsID0gdGVzdF9pbmZvLT5pbXBsKCk7Ci0gIHJldHVy
biBpbXBsLT5zaG91bGRfcnVuKCkgJiYgaW1wbC0+cmVzdWx0KCktPkZhaWxlZCgpOwotfQotCi0v
LyBSZXR1cm5zIHRydWUgaWZmIHRlc3QgaXMgZGlzYWJsZWQuCi1ib29sIFRlc3RDYXNlOjpUZXN0
RGlzYWJsZWQoY29uc3QgVGVzdEluZm8gKiB0ZXN0X2luZm8pIHsKLSAgcmV0dXJuIHRlc3RfaW5m
by0+aW1wbCgpLT5pc19kaXNhYmxlZCgpOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdp
dmVuIHRlc3Qgc2hvdWxkIHJ1bi4KLWJvb2wgVGVzdENhc2U6OlNob3VsZFJ1blRlc3QoY29uc3Qg
VGVzdEluZm8gKnRlc3RfaW5mbykgewotICByZXR1cm4gdGVzdF9pbmZvLT5pbXBsKCktPnNob3Vs
ZF9ydW4oKTsKKyAgYWRfaG9jX3Rlc3RfcmVzdWx0Xy5DbGVhcigpOworICBGb3JFYWNoKHRlc3Rf
aW5mb19saXN0XywgVGVzdEluZm86OkNsZWFyVGVzdFJlc3VsdCk7CiB9CiAKIC8vIFNodWZmbGVz
IHRoZSB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KQEAgLTI0NzEsMjAgKzI4NDMsMjAgQEAgdm9p
ZCBUZXN0Q2FzZTo6VW5zaHVmZmxlVGVzdHMoKSB7CiAvLwogLy8gRm9ybWF0Q291bnRhYmxlTm91
bigxLCAiZm9ybXVsYSIsICJmb3JtdWxpIikgcmV0dXJucyAiMSBmb3JtdWxhIi4KIC8vIEZvcm1h
dENvdW50YWJsZU5vdW4oNSwgImJvb2siLCAiYm9va3MiKSByZXR1cm5zICI1IGJvb2tzIi4KLXN0
YXRpYyBpbnRlcm5hbDo6U3RyaW5nIEZvcm1hdENvdW50YWJsZU5vdW4oaW50IGNvdW50LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogc2lu
Z3VsYXJfZm9ybSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAqIHBsdXJhbF9mb3JtKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6U3RyaW5nOjpG
b3JtYXQoIiVkICVzIiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y291bnQgPT0gMSA/IHNpbmd1bGFyX2Zvcm0gOiBwbHVyYWxfZm9ybSk7CitzdGF0aWMgc3RkOjpz
dHJpbmcgRm9ybWF0Q291bnRhYmxlTm91bihpbnQgY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogc2luZ3VsYXJfZm9ybSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBwbHVyYWxfZm9ybSkg
eworICByZXR1cm4gaW50ZXJuYWw6OlN0cmVhbWFibGVUb1N0cmluZyhjb3VudCkgKyAiICIgKwor
ICAgICAgKGNvdW50ID09IDEgPyBzaW5ndWxhcl9mb3JtIDogcGx1cmFsX2Zvcm0pOwogfQogCiAv
LyBGb3JtYXRzIHRoZSBjb3VudCBvZiB0ZXN0cy4KLXN0YXRpYyBpbnRlcm5hbDo6U3RyaW5nIEZv
cm1hdFRlc3RDb3VudChpbnQgdGVzdF9jb3VudCkgeworc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1h
dFRlc3RDb3VudChpbnQgdGVzdF9jb3VudCkgewogICByZXR1cm4gRm9ybWF0Q291bnRhYmxlTm91
bih0ZXN0X2NvdW50LCAidGVzdCIsICJ0ZXN0cyIpOwogfQogCiAvLyBGb3JtYXRzIHRoZSBjb3Vu
dCBvZiB0ZXN0IGNhc2VzLgotc3RhdGljIGludGVybmFsOjpTdHJpbmcgRm9ybWF0VGVzdENhc2VD
b3VudChpbnQgdGVzdF9jYXNlX2NvdW50KSB7CitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0VGVz
dENhc2VDb3VudChpbnQgdGVzdF9jYXNlX2NvdW50KSB7CiAgIHJldHVybiBGb3JtYXRDb3VudGFi
bGVOb3VuKHRlc3RfY2FzZV9jb3VudCwgInRlc3QgY2FzZSIsICJ0ZXN0IGNhc2VzIik7CiB9CiAK
QEAgLTI1MDQsMTMgKzI4NzYsMTUgQEAgc3RhdGljIGNvbnN0IGNoYXIgKiBUZXN0UGFydFJlc3Vs
dFR5cGVUb1N0cmluZyhUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlKSB7CiAjZWxzZQogICAgICAg
cmV0dXJuICJGYWlsdXJlXG4iOwogI2VuZGlmCisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiAi
VW5rbm93biByZXN1bHQgdHlwZSI7CiAgIH0KLQotICByZXR1cm4gIlVua25vd24gcmVzdWx0IHR5
cGUiOwogfQogCi0vLyBQcmludHMgYSBUZXN0UGFydFJlc3VsdCB0byBhIFN0cmluZy4KLXN0YXRp
YyBpbnRlcm5hbDo6U3RyaW5nIFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmluZygKK25hbWVzcGFj
ZSBpbnRlcm5hbCB7CisKKy8vIFByaW50cyBhIFRlc3RQYXJ0UmVzdWx0IHRvIGFuIHN0ZDo6c3Ry
aW5nLgorc3RhdGljIHN0ZDo6c3RyaW5nIFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmluZygKICAg
ICBjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgewogICByZXR1cm4gKE1l
c3NhZ2UoKQogICAgICAgICAgIDw8IGludGVybmFsOjpGb3JtYXRGaWxlTG9jYXRpb24odGVzdF9w
YXJ0X3Jlc3VsdC5maWxlX25hbWUoKSwKQEAgLTI1MjEsNyArMjg5NSw3IEBAIHN0YXRpYyBpbnRl
cm5hbDo6U3RyaW5nIFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmluZygKIAogLy8gUHJpbnRzIGEg
VGVzdFBhcnRSZXN1bHQuCiBzdGF0aWMgdm9pZCBQcmludFRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRl
c3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7Ci0gIGNvbnN0IGludGVybmFsOjpTdHJp
bmcmIHJlc3VsdCA9CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiByZXN1bHQgPQogICAgICAgUHJpbnRU
ZXN0UGFydFJlc3VsdFRvU3RyaW5nKHRlc3RfcGFydF9yZXN1bHQpOwogICBwcmludGYoIiVzXG4i
LCByZXN1bHQuY19zdHIoKSk7CiAgIGZmbHVzaChzdGRvdXQpOwpAQCAtMjU0MCw4ICsyOTE0LDYg
QEAgc3RhdGljIHZvaWQgUHJpbnRUZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYg
dGVzdF9wYXJ0X3Jlc3VsdCkgewogCiAvLyBjbGFzcyBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50
ZXIKIAotbmFtZXNwYWNlIGludGVybmFsIHsKLQogZW51bSBHVGVzdENvbG9yIHsKICAgQ09MT1Jf
REVGQVVMVCwKICAgQ09MT1JfUkVELApAQCAtMjU0OSwxMCArMjkyMSwxMSBAQCBlbnVtIEdUZXN0
Q29sb3IgewogICBDT0xPUl9ZRUxMT1cKIH07CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFH
VEVTVF9PU19XSU5ET1dTX01PQklMRQorI2lmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09T
X1dJTkRPV1NfTU9CSUxFICYmIFwKKyAgICAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RF
U1RfT1NfV0lORE9XU19SVCAmJiAhR1RFU1RfT1NfV0lORE9XU19NSU5HVwogCiAvLyBSZXR1cm5z
IHRoZSBjaGFyYWN0ZXIgYXR0cmlidXRlIGZvciB0aGUgZ2l2ZW4gY29sb3IuCi1XT1JEIEdldENv
bG9yQXR0cmlidXRlKEdUZXN0Q29sb3IgY29sb3IpIHsKK3N0YXRpYyBXT1JEIEdldENvbG9yQXR0
cmlidXRlKEdUZXN0Q29sb3IgY29sb3IpIHsKICAgc3dpdGNoIChjb2xvcikgewogICAgIGNhc2Ug
Q09MT1JfUkVEOiAgICByZXR1cm4gRk9SRUdST1VORF9SRUQ7CiAgICAgY2FzZSBDT0xPUl9HUkVF
TjogIHJldHVybiBGT1JFR1JPVU5EX0dSRUVOOwpAQCAtMjU2MSwxMSArMjkzNCw0MiBAQCBXT1JE
IEdldENvbG9yQXR0cmlidXRlKEdUZXN0Q29sb3IgY29sb3IpIHsKICAgfQogfQogCitzdGF0aWMg
aW50IEdldEJpdE9mZnNldChXT1JEIGNvbG9yX21hc2spIHsKKyAgaWYgKGNvbG9yX21hc2sgPT0g
MCkgcmV0dXJuIDA7CisKKyAgaW50IGJpdE9mZnNldCA9IDA7CisgIHdoaWxlICgoY29sb3JfbWFz
ayAmIDEpID09IDApIHsKKyAgICBjb2xvcl9tYXNrID4+PSAxOworICAgICsrYml0T2Zmc2V0Owor
ICB9CisgIHJldHVybiBiaXRPZmZzZXQ7Cit9CisKK3N0YXRpYyBXT1JEIEdldE5ld0NvbG9yKEdU
ZXN0Q29sb3IgY29sb3IsIFdPUkQgb2xkX2NvbG9yX2F0dHJzKSB7CisgIC8vIExldCdzIHJldXNl
IHRoZSBCRworICBzdGF0aWMgY29uc3QgV09SRCBiYWNrZ3JvdW5kX21hc2sgPSBCQUNLR1JPVU5E
X0JMVUUgfCBCQUNLR1JPVU5EX0dSRUVOIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQkFDS0dST1VORF9SRUQgfCBCQUNLR1JPVU5EX0lOVEVOU0lUWTsKKyAgc3RhdGlj
IGNvbnN0IFdPUkQgZm9yZWdyb3VuZF9tYXNrID0gRk9SRUdST1VORF9CTFVFIHwgRk9SRUdST1VO
RF9HUkVFTiB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZPUkVHUk9V
TkRfUkVEIHwgRk9SRUdST1VORF9JTlRFTlNJVFk7CisgIGNvbnN0IFdPUkQgZXhpc3RpbmdfYmcg
PSBvbGRfY29sb3JfYXR0cnMgJiBiYWNrZ3JvdW5kX21hc2s7CisKKyAgV09SRCBuZXdfY29sb3Ig
PQorICAgICAgR2V0Q29sb3JBdHRyaWJ1dGUoY29sb3IpIHwgZXhpc3RpbmdfYmcgfCBGT1JFR1JP
VU5EX0lOVEVOU0lUWTsKKyAgc3RhdGljIGNvbnN0IGludCBiZ19iaXRPZmZzZXQgPSBHZXRCaXRP
ZmZzZXQoYmFja2dyb3VuZF9tYXNrKTsKKyAgc3RhdGljIGNvbnN0IGludCBmZ19iaXRPZmZzZXQg
PSBHZXRCaXRPZmZzZXQoZm9yZWdyb3VuZF9tYXNrKTsKKworICBpZiAoKChuZXdfY29sb3IgJiBi
YWNrZ3JvdW5kX21hc2spID4+IGJnX2JpdE9mZnNldCkgPT0KKyAgICAgICgobmV3X2NvbG9yICYg
Zm9yZWdyb3VuZF9tYXNrKSA+PiBmZ19iaXRPZmZzZXQpKSB7CisgICAgbmV3X2NvbG9yIF49IEZP
UkVHUk9VTkRfSU5URU5TSVRZOyAgLy8gaW52ZXJ0IGludGVuc2l0eQorICB9CisgIHJldHVybiBu
ZXdfY29sb3I7Cit9CisKICNlbHNlCiAKIC8vIFJldHVybnMgdGhlIEFOU0kgY29sb3IgY29kZSBm
b3IgdGhlIGdpdmVuIGNvbG9yLiAgQ09MT1JfREVGQVVMVCBpcwogLy8gYW4gaW52YWxpZCBpbnB1
dC4KLWNvbnN0IGNoYXIqIEdldEFuc2lDb2xvckNvZGUoR1Rlc3RDb2xvciBjb2xvcikgeworc3Rh
dGljIGNvbnN0IGNoYXIqIEdldEFuc2lDb2xvckNvZGUoR1Rlc3RDb2xvciBjb2xvcikgewogICBz
d2l0Y2ggKGNvbG9yKSB7CiAgICAgY2FzZSBDT0xPUl9SRUQ6ICAgICByZXR1cm4gIjEiOwogICAg
IGNhc2UgQ09MT1JfR1JFRU46ICAgcmV0dXJuICIyIjsKQEAgLTI1ODEsNyArMjk4NSw3IEBAIGJv
b2wgU2hvdWxkVXNlQ29sb3IoYm9vbCBzdGRvdXRfaXNfdHR5KSB7CiAgIGNvbnN0IGNoYXIqIGNv
bnN0IGd0ZXN0X2NvbG9yID0gR1RFU1RfRkxBRyhjb2xvcikuY19zdHIoKTsKIAogICBpZiAoU3Ry
aW5nOjpDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGd0ZXN0X2NvbG9yLCAiYXV0byIpKSB7
Ci0jaWYgR1RFU1RfT1NfV0lORE9XUworI2lmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09T
X1dJTkRPV1NfTUlOR1cKICAgICAvLyBPbiBXaW5kb3dzIHRoZSBURVJNIHZhcmlhYmxlIGlzIHVz
dWFsbHkgbm90IHNldCwgYnV0IHRoZQogICAgIC8vIGNvbnNvbGUgdGhlcmUgZG9lcyBzdXBwb3J0
IGNvbG9ycy4KICAgICByZXR1cm4gc3Rkb3V0X2lzX3R0eTsKQEAgLTI1OTIsNiArMjk5NiwxMiBA
QCBib29sIFNob3VsZFVzZUNvbG9yKGJvb2wgc3Rkb3V0X2lzX3R0eSkgewogICAgICAgICBTdHJp
bmc6OkNTdHJpbmdFcXVhbHModGVybSwgInh0ZXJtIikgfHwKICAgICAgICAgU3RyaW5nOjpDU3Ry
aW5nRXF1YWxzKHRlcm0sICJ4dGVybS1jb2xvciIpIHx8CiAgICAgICAgIFN0cmluZzo6Q1N0cmlu
Z0VxdWFscyh0ZXJtLCAieHRlcm0tMjU2Y29sb3IiKSB8fAorICAgICAgICBTdHJpbmc6OkNTdHJp
bmdFcXVhbHModGVybSwgInNjcmVlbiIpIHx8CisgICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFs
cyh0ZXJtLCAic2NyZWVuLTI1NmNvbG9yIikgfHwKKyAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1
YWxzKHRlcm0sICJ0bXV4IikgfHwKKyAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0s
ICJ0bXV4LTI1NmNvbG9yIikgfHwKKyAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0s
ICJyeHZ0LXVuaWNvZGUiKSB8fAorICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwg
InJ4dnQtdW5pY29kZS0yNTZjb2xvciIpIHx8CiAgICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFs
cyh0ZXJtLCAibGludXgiKSB8fAogICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwg
ImN5Z3dpbiIpOwogICAgIHJldHVybiBzdGRvdXRfaXNfdHR5ICYmIHRlcm1fc3VwcG9ydHNfY29s
b3I7CkBAIC0yNjExLDEyICszMDIxLDEzIEBAIGJvb2wgU2hvdWxkVXNlQ29sb3IoYm9vbCBzdGRv
dXRfaXNfdHR5KSB7CiAvLyBjYW5ub3Qgc2ltcGx5IGVtaXQgc3BlY2lhbCBjaGFyYWN0ZXJzIGFu
ZCBoYXZlIHRoZSB0ZXJtaW5hbCBjaGFuZ2UgY29sb3JzLgogLy8gVGhpcyByb3V0aW5lIG11c3Qg
YWN0dWFsbHkgZW1pdCB0aGUgY2hhcmFjdGVycyByYXRoZXIgdGhhbiByZXR1cm4gYSBzdHJpbmcK
IC8vIHRoYXQgd291bGQgYmUgY29sb3JlZCB3aGVuIHByaW50ZWQsIGFzIGNhbiBiZSBkb25lIG9u
IExpbnV4Lgotdm9pZCBDb2xvcmVkUHJpbnRmKEdUZXN0Q29sb3IgY29sb3IsIGNvbnN0IGNoYXIq
IGZtdCwgLi4uKSB7CitzdGF0aWMgdm9pZCBDb2xvcmVkUHJpbnRmKEdUZXN0Q29sb3IgY29sb3Is
IGNvbnN0IGNoYXIqIGZtdCwgLi4uKSB7CiAgIHZhX2xpc3QgYXJnczsKICAgdmFfc3RhcnQoYXJn
cywgZm10KTsKIAotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNUX09TX1NZTUJJ
QU4gfHwgR1RFU1RfT1NfWk9TCi0gIGNvbnN0IGJvb2wgdXNlX2NvbG9yID0gZmFsc2U7CisjaWYg
R1RFU1RfT1NfV0lORE9XU19NT0JJTEUgfHwgR1RFU1RfT1NfU1lNQklBTiB8fCBHVEVTVF9PU19a
T1MgfHwgXAorICAgIEdURVNUX09TX0lPUyB8fCBHVEVTVF9PU19XSU5ET1dTX1BIT05FIHx8IEdU
RVNUX09TX1dJTkRPV1NfUlQKKyAgY29uc3QgYm9vbCB1c2VfY29sb3IgPSBBbHdheXNGYWxzZSgp
OwogI2Vsc2UKICAgc3RhdGljIGNvbnN0IGJvb2wgaW5fY29sb3JfbW9kZSA9CiAgICAgICBTaG91
bGRVc2VDb2xvcihwb3NpeDo6SXNBVFRZKHBvc2l4OjpGaWxlTm8oc3Rkb3V0KSkgIT0gMCk7CkBA
IC0yNjMwLDIwICszMDQxLDIyIEBAIHZvaWQgQ29sb3JlZFByaW50ZihHVGVzdENvbG9yIGNvbG9y
LCBjb25zdCBjaGFyKiBmbXQsIC4uLikgewogICAgIHJldHVybjsKICAgfQogCi0jaWYgR1RFU1Rf
T1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyNpZiBHVEVTVF9PU19XSU5E
T1dTICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRSAmJiBcCisgICAgIUdURVNUX09TX1dJTkRP
V1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQgJiYgIUdURVNUX09TX1dJTkRPV1NfTUlO
R1cKICAgY29uc3QgSEFORExFIHN0ZG91dF9oYW5kbGUgPSBHZXRTdGRIYW5kbGUoU1REX09VVFBV
VF9IQU5ETEUpOwogCiAgIC8vIEdldHMgdGhlIGN1cnJlbnQgdGV4dCBjb2xvci4KICAgQ09OU09M
RV9TQ1JFRU5fQlVGRkVSX0lORk8gYnVmZmVyX2luZm87CiAgIEdldENvbnNvbGVTY3JlZW5CdWZm
ZXJJbmZvKHN0ZG91dF9oYW5kbGUsICZidWZmZXJfaW5mbyk7CiAgIGNvbnN0IFdPUkQgb2xkX2Nv
bG9yX2F0dHJzID0gYnVmZmVyX2luZm8ud0F0dHJpYnV0ZXM7CisgIGNvbnN0IFdPUkQgbmV3X2Nv
bG9yID0gR2V0TmV3Q29sb3IoY29sb3IsIG9sZF9jb2xvcl9hdHRycyk7CiAKICAgLy8gV2UgbmVl
ZCB0byBmbHVzaCB0aGUgc3RyZWFtIGJ1ZmZlcnMgaW50byB0aGUgY29uc29sZSBiZWZvcmUgZWFj
aAogICAvLyBTZXRDb25zb2xlVGV4dEF0dHJpYnV0ZSBjYWxsIGxlc3QgaXQgYWZmZWN0IHRoZSB0
ZXh0IHRoYXQgaXMgYWxyZWFkeQogICAvLyBwcmludGVkIGJ1dCBoYXMgbm90IHlldCByZWFjaGVk
IHRoZSBjb25zb2xlLgogICBmZmx1c2goc3Rkb3V0KTsKLSAgU2V0Q29uc29sZVRleHRBdHRyaWJ1
dGUoc3Rkb3V0X2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0Q29sb3JBdHRy
aWJ1dGUoY29sb3IpIHwgRk9SRUdST1VORF9JTlRFTlNJVFkpOworICBTZXRDb25zb2xlVGV4dEF0
dHJpYnV0ZShzdGRvdXRfaGFuZGxlLCBuZXdfY29sb3IpOworCiAgIHZwcmludGYoZm10LCBhcmdz
KTsKIAogICBmZmx1c2goc3Rkb3V0KTsKQEAgLTI2NTcsNiArMzA3MCwyOCBAQCB2b2lkIENvbG9y
ZWRQcmludGYoR1Rlc3RDb2xvciBjb2xvciwgY29uc3QgY2hhciogZm10LCAuLi4pIHsKICAgdmFf
ZW5kKGFyZ3MpOwogfQogCisvLyBUZXh0IHByaW50ZWQgaW4gR29vZ2xlIFRlc3QncyB0ZXh0IG91
dHB1dCBhbmQgLS1ndGVzdF9saXN0X3Rlc3RzCisvLyBvdXRwdXQgdG8gbGFiZWwgdGhlIHR5cGUg
cGFyYW1ldGVyIGFuZCB2YWx1ZSBwYXJhbWV0ZXIgZm9yIGEgdGVzdC4KK3N0YXRpYyBjb25zdCBj
aGFyIGtUeXBlUGFyYW1MYWJlbFtdID0gIlR5cGVQYXJhbSI7CitzdGF0aWMgY29uc3QgY2hhciBr
VmFsdWVQYXJhbUxhYmVsW10gPSAiR2V0UGFyYW0oKSI7CisKK3N0YXRpYyB2b2lkIFByaW50RnVs
bFRlc3RDb21tZW50SWZQcmVzZW50KGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKKyAgY29u
c3QgY2hhciogY29uc3QgdHlwZV9wYXJhbSA9IHRlc3RfaW5mby50eXBlX3BhcmFtKCk7CisgIGNv
bnN0IGNoYXIqIGNvbnN0IHZhbHVlX3BhcmFtID0gdGVzdF9pbmZvLnZhbHVlX3BhcmFtKCk7CisK
KyAgaWYgKHR5cGVfcGFyYW0gIT0gTlVMTCB8fCB2YWx1ZV9wYXJhbSAhPSBOVUxMKSB7CisgICAg
cHJpbnRmKCIsIHdoZXJlICIpOworICAgIGlmICh0eXBlX3BhcmFtICE9IE5VTEwpIHsKKyAgICAg
IHByaW50ZigiJXMgPSAlcyIsIGtUeXBlUGFyYW1MYWJlbCwgdHlwZV9wYXJhbSk7CisgICAgICBp
ZiAodmFsdWVfcGFyYW0gIT0gTlVMTCkKKyAgICAgICAgcHJpbnRmKCIgYW5kICIpOworICAgIH0K
KyAgICBpZiAodmFsdWVfcGFyYW0gIT0gTlVMTCkgeworICAgICAgcHJpbnRmKCIlcyA9ICVzIiwg
a1ZhbHVlUGFyYW1MYWJlbCwgdmFsdWVfcGFyYW0pOworICAgIH0KKyAgfQorfQorCiAvLyBUaGlz
IGNsYXNzIGltcGxlbWVudHMgdGhlIFRlc3RFdmVudExpc3RlbmVyIGludGVyZmFjZS4KIC8vCiAv
LyBDbGFzcyBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXIgaXMgY29weWFibGUuCkBAIC0yNjg0
LDggKzMxMTksNiBAQCBjbGFzcyBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXIgOiBwdWJsaWMg
VGVzdEV2ZW50TGlzdGVuZXIgewogCiAgcHJpdmF0ZToKICAgc3RhdGljIHZvaWQgUHJpbnRGYWls
ZWRUZXN0cyhjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KTsKLQotICBpbnRlcm5hbDo6U3RyaW5n
IHRlc3RfY2FzZV9uYW1lXzsKIH07CiAKICAgLy8gRmlyZWQgYmVmb3JlIGVhY2ggaXRlcmF0aW9u
IG9mIHRlc3RzIHN0YXJ0cy4KQEAgLTI2OTgsMTUgKzMxMzEsMTYgQEAgdm9pZCBQcmV0dHlVbml0
VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdEl0ZXJhdGlvblN0YXJ0KAogCiAgIC8vIFByaW50cyB0
aGUgZmlsdGVyIGlmIGl0J3Mgbm90ICouICBUaGlzIHJlbWluZHMgdGhlIHVzZXIgdGhhdCBzb21l
CiAgIC8vIHRlc3RzIG1heSBiZSBza2lwcGVkLgotICBpZiAoIWludGVybmFsOjpTdHJpbmc6OkNT
dHJpbmdFcXVhbHMoZmlsdGVyLCBrVW5pdmVyc2FsRmlsdGVyKSkgeworICBpZiAoIVN0cmluZzo6
Q1N0cmluZ0VxdWFscyhmaWx0ZXIsIGtVbml2ZXJzYWxGaWx0ZXIpKSB7CiAgICAgQ29sb3JlZFBy
aW50ZihDT0xPUl9ZRUxMT1csCiAgICAgICAgICAgICAgICAgICAiTm90ZTogJXMgZmlsdGVyID0g
JXNcbiIsIEdURVNUX05BTUVfLCBmaWx0ZXIpOwogICB9CiAKICAgaWYgKGludGVybmFsOjpTaG91
bGRTaGFyZChrVGVzdFRvdGFsU2hhcmRzLCBrVGVzdFNoYXJkSW5kZXgsIGZhbHNlKSkgeworICAg
IGNvbnN0IEludDMyIHNoYXJkX2luZGV4ID0gSW50MzJGcm9tRW52T3JEaWUoa1Rlc3RTaGFyZElu
ZGV4LCAtMSk7CiAgICAgQ29sb3JlZFByaW50ZihDT0xPUl9ZRUxMT1csCi0gICAgICAgICAgICAg
ICAgICAiTm90ZTogVGhpcyBpcyB0ZXN0IHNoYXJkICVzIG9mICVzLlxuIiwKLSAgICAgICAgICAg
ICAgICAgIGludGVybmFsOjpwb3NpeDo6R2V0RW52KGtUZXN0U2hhcmRJbmRleCksCisgICAgICAg
ICAgICAgICAgICAiTm90ZTogVGhpcyBpcyB0ZXN0IHNoYXJkICVkIG9mICVzLlxuIiwKKyAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oc2hhcmRfaW5kZXgpICsgMSwKICAgICAgICAg
ICAgICAgICAgIGludGVybmFsOjpwb3NpeDo6R2V0RW52KGtUZXN0VG90YWxTaGFyZHMpKTsKICAg
fQogCkBAIC0yNzMxLDI3ICszMTY1LDIyIEBAIHZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmlu
dGVyOjpPbkVudmlyb25tZW50c1NldFVwU3RhcnQoCiB9CiAKIHZvaWQgUHJldHR5VW5pdFRlc3RS
ZXN1bHRQcmludGVyOjpPblRlc3RDYXNlU3RhcnQoY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSkg
ewotICB0ZXN0X2Nhc2VfbmFtZV8gPSB0ZXN0X2Nhc2UubmFtZSgpOwotICBjb25zdCBpbnRlcm5h
bDo6U3RyaW5nIGNvdW50cyA9CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvdW50cyA9CiAgICAgICBG
b3JtYXRDb3VudGFibGVOb3VuKHRlc3RfY2FzZS50ZXN0X3RvX3J1bl9jb3VudCgpLCAidGVzdCIs
ICJ0ZXN0cyIpOwogICBDb2xvcmVkUHJpbnRmKENPTE9SX0dSRUVOLCAiWy0tLS0tLS0tLS1dICIp
OwotICBwcmludGYoIiVzIGZyb20gJXMiLCBjb3VudHMuY19zdHIoKSwgdGVzdF9jYXNlX25hbWVf
LmNfc3RyKCkpOwotICBpZiAodGVzdF9jYXNlLmNvbW1lbnQoKVswXSA9PSAnXDAnKSB7CisgIHBy
aW50ZigiJXMgZnJvbSAlcyIsIGNvdW50cy5jX3N0cigpLCB0ZXN0X2Nhc2UubmFtZSgpKTsKKyAg
aWYgKHRlc3RfY2FzZS50eXBlX3BhcmFtKCkgPT0gTlVMTCkgewogICAgIHByaW50ZigiXG4iKTsK
ICAgfSBlbHNlIHsKLSAgICBwcmludGYoIiwgd2hlcmUgJXNcbiIsIHRlc3RfY2FzZS5jb21tZW50
KCkpOworICAgIHByaW50ZigiLCB3aGVyZSAlcyA9ICVzXG4iLCBrVHlwZVBhcmFtTGFiZWwsIHRl
c3RfY2FzZS50eXBlX3BhcmFtKCkpOwogICB9CiAgIGZmbHVzaChzdGRvdXQpOwogfQogCiB2b2lk
IFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8m
IHRlc3RfaW5mbykgewogICBDb2xvcmVkUHJpbnRmKENPTE9SX0dSRUVOLCAgIlsgUlVOICAgICAg
XSAiKTsKLSAgUHJpbnRUZXN0TmFtZSh0ZXN0X2Nhc2VfbmFtZV8uY19zdHIoKSwgdGVzdF9pbmZv
Lm5hbWUoKSk7Ci0gIGlmICh0ZXN0X2luZm8uY29tbWVudCgpWzBdID09ICdcMCcpIHsKLSAgICBw
cmludGYoIlxuIik7Ci0gIH0gZWxzZSB7Ci0gICAgcHJpbnRmKCIsIHdoZXJlICVzXG4iLCB0ZXN0
X2luZm8uY29tbWVudCgpKTsKLSAgfQorICBQcmludFRlc3ROYW1lKHRlc3RfaW5mby50ZXN0X2Nh
c2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgcHJpbnRmKCJcbiIpOwogICBmZmx1c2go
c3Rkb3V0KTsKIH0KIApAQCAtMjc3Myw3ICszMjAyLDEwIEBAIHZvaWQgUHJldHR5VW5pdFRlc3RS
ZXN1bHRQcmludGVyOjpPblRlc3RFbmQoY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbykgewogICB9
IGVsc2UgewogICAgIENvbG9yZWRQcmludGYoQ09MT1JfUkVELCAiWyAgRkFJTEVEICBdICIpOwog
ICB9Ci0gIFByaW50VGVzdE5hbWUodGVzdF9jYXNlX25hbWVfLmNfc3RyKCksIHRlc3RfaW5mby5u
YW1lKCkpOworICBQcmludFRlc3ROYW1lKHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0
X2luZm8ubmFtZSgpKTsKKyAgaWYgKHRlc3RfaW5mby5yZXN1bHQoKS0+RmFpbGVkKCkpCisgICAg
UHJpbnRGdWxsVGVzdENvbW1lbnRJZlByZXNlbnQodGVzdF9pbmZvKTsKKwogICBpZiAoR1RFU1Rf
RkxBRyhwcmludF90aW1lKSkgewogICAgIHByaW50ZigiICglcyBtcylcbiIsIGludGVybmFsOjpT
dHJlYW1hYmxlVG9TdHJpbmcoCiAgICAgICAgICAgIHRlc3RfaW5mby5yZXN1bHQoKS0+ZWxhcHNl
ZF90aW1lKCkpLmNfc3RyKCkpOwpAQCAtMjc4NiwxMiArMzIxOCwxMSBAQCB2b2lkIFByZXR0eVVu
aXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0RW5kKGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8p
IHsKIHZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RDYXNlRW5kKGNvbnN0
IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKICAgaWYgKCFHVEVTVF9GTEFHKHByaW50X3RpbWUpKSBy
ZXR1cm47CiAKLSAgdGVzdF9jYXNlX25hbWVfID0gdGVzdF9jYXNlLm5hbWUoKTsKLSAgY29uc3Qg
aW50ZXJuYWw6OlN0cmluZyBjb3VudHMgPQorICBjb25zdCBzdGQ6OnN0cmluZyBjb3VudHMgPQog
ICAgICAgRm9ybWF0Q291bnRhYmxlTm91bih0ZXN0X2Nhc2UudGVzdF90b19ydW5fY291bnQoKSwg
InRlc3QiLCAidGVzdHMiKTsKICAgQ29sb3JlZFByaW50ZihDT0xPUl9HUkVFTiwgIlstLS0tLS0t
LS0tXSAiKTsKICAgcHJpbnRmKCIlcyBmcm9tICVzICglcyBtcyB0b3RhbClcblxuIiwKLSAgICAg
ICAgIGNvdW50cy5jX3N0cigpLCB0ZXN0X2Nhc2VfbmFtZV8uY19zdHIoKSwKKyAgICAgICAgIGNv
dW50cy5jX3N0cigpLCB0ZXN0X2Nhc2UubmFtZSgpLAogICAgICAgICAgaW50ZXJuYWw6OlN0cmVh
bWFibGVUb1N0cmluZyh0ZXN0X2Nhc2UuZWxhcHNlZF90aW1lKCkpLmNfc3RyKCkpOwogICBmZmx1
c2goc3Rkb3V0KTsKIH0KQEAgLTI4MjIsMjEgKzMyNTMsMTQgQEAgdm9pZCBQcmV0dHlVbml0VGVz
dFJlc3VsdFByaW50ZXI6OlByaW50RmFpbGVkVGVzdHMoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVz
dCkgewogICAgICAgfQogICAgICAgQ29sb3JlZFByaW50ZihDT0xPUl9SRUQsICJbICBGQUlMRUQg
IF0gIik7CiAgICAgICBwcmludGYoIiVzLiVzIiwgdGVzdF9jYXNlLm5hbWUoKSwgdGVzdF9pbmZv
Lm5hbWUoKSk7Ci0gICAgICBpZiAodGVzdF9jYXNlLmNvbW1lbnQoKVswXSAhPSAnXDAnIHx8Ci0g
ICAgICAgICAgdGVzdF9pbmZvLmNvbW1lbnQoKVswXSAhPSAnXDAnKSB7Ci0gICAgICAgIHByaW50
ZigiLCB3aGVyZSAlcyIsIHRlc3RfY2FzZS5jb21tZW50KCkpOwotICAgICAgICBpZiAodGVzdF9j
YXNlLmNvbW1lbnQoKVswXSAhPSAnXDAnICYmCi0gICAgICAgICAgICB0ZXN0X2luZm8uY29tbWVu
dCgpWzBdICE9ICdcMCcpIHsKLSAgICAgICAgICBwcmludGYoIiBhbmQgIik7Ci0gICAgICAgIH0K
LSAgICAgIH0KLSAgICAgIHByaW50ZigiJXNcbiIsIHRlc3RfaW5mby5jb21tZW50KCkpOworICAg
ICAgUHJpbnRGdWxsVGVzdENvbW1lbnRJZlByZXNlbnQodGVzdF9pbmZvKTsKKyAgICAgIHByaW50
ZigiXG4iKTsKICAgICB9CiAgIH0KIH0KIAotIHZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmlu
dGVyOjpPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKml0
ZXJhdGlvbiovKSB7Cit2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0SXRl
cmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKml0ZXJhdGlvbiovKSB7CiAg
IENvbG9yZWRQcmludGYoQ09MT1JfR1JFRU4sICAiWz09PT09PT09PT1dICIpOwogICBwcmludGYo
IiVzIGZyb20gJXMgcmFuLiIsCiAgICAgICAgICBGb3JtYXRUZXN0Q291bnQodW5pdF90ZXN0LnRl
c3RfdG9fcnVuX2NvdW50KCkpLmNfc3RyKCksCkBAIC0yODU5LDcgKzMyODMsNyBAQCB2b2lkIFBy
ZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRGYWlsZWRUZXN0cyhjb25zdCBVbml0VGVz
dCYgdW5pdF90ZXN0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBudW1fZmFpbHVyZXMgPT0g
MSA/ICJURVNUIiA6ICJURVNUUyIpOwogICB9CiAKLSAgaW50IG51bV9kaXNhYmxlZCA9IHVuaXRf
dGVzdC5kaXNhYmxlZF90ZXN0X2NvdW50KCk7CisgIGludCBudW1fZGlzYWJsZWQgPSB1bml0X3Rl
c3QucmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCk7CiAgIGlmIChudW1fZGlzYWJsZWQg
JiYgIUdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpKSB7CiAgICAgaWYgKCFudW1f
ZmFpbHVyZXMpIHsKICAgICAgIHByaW50ZigiXG4iKTsgIC8vIEFkZCBhIHNwYWNlciBpZiBubyBG
QUlMVVJFIGJhbm5lciBpcyBkaXNwbGF5ZWQuCkBAIC0yOTIyLDcgKzMzNDYsNyBAQCB2b2lkIFRl
c3RFdmVudFJlcGVhdGVyOjpBcHBlbmQoVGVzdEV2ZW50TGlzdGVuZXIgKmxpc3RlbmVyKSB7CiAg
IGxpc3RlbmVyc18ucHVzaF9iYWNrKGxpc3RlbmVyKTsKIH0KIAotLy8gVE9ETyh2bGFkbEBnb29n
bGUuY29tKTogRmFjdG9yIHRoZSBzZWFyY2ggZnVuY3Rpb25hbGl0eSBpbnRvIFZlY3Rvcjo6Rmlu
ZC4KKy8vIEZJWE1FOiBGYWN0b3IgdGhlIHNlYXJjaCBmdW5jdGlvbmFsaXR5IGludG8gVmVjdG9y
OjpGaW5kLgogVGVzdEV2ZW50TGlzdGVuZXIqIFRlc3RFdmVudFJlcGVhdGVyOjpSZWxlYXNlKFRl
c3RFdmVudExpc3RlbmVyICpsaXN0ZW5lcikgewogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxp
c3RlbmVyc18uc2l6ZSgpOyArK2kpIHsKICAgICBpZiAobGlzdGVuZXJzX1tpXSA9PSBsaXN0ZW5l
cikgewpAQCAtMjk5Niw2ICszNDIwLDExIEBAIGNsYXNzIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRl
ciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKICAgZXhwbGljaXQgWG1sVW5pdFRl
c3RSZXN1bHRQcmludGVyKGNvbnN0IGNoYXIqIG91dHB1dF9maWxlKTsKIAogICB2aXJ0dWFsIHZv
aWQgT25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsIGludCBpdGVy
YXRpb24pOworICB2b2lkIExpc3RUZXN0c01hdGNoaW5nRmlsdGVyKGNvbnN0IHN0ZDo6dmVjdG9y
PFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMpOworCisgIC8vIFByaW50cyBhbiBYTUwgc3VtbWFyeSBv
ZiBhbGwgdW5pdCB0ZXN0cy4KKyAgc3RhdGljIHZvaWQgUHJpbnRYbWxUZXN0c0xpc3Qoc3RkOjpv
c3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMpOwogCiAgcHJpdmF0ZToKICAgLy8gSXMg
YyBhIHdoaXRlc3BhY2UgY2hhcmFjdGVyIHRoYXQgaXMgbm9ybWFsaXplZCB0byBhIHNwYWNlIGNo
YXJhY3RlcgpAQCAtMzAxMywxOCArMzQ0MiwyNyBAQCBjbGFzcyBYbWxVbml0VGVzdFJlc3VsdFBy
aW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CiAgIC8vIGlzX2F0dHJpYnV0
ZSBpcyB0cnVlLCB0aGUgdGV4dCBpcyBtZWFudCB0byBhcHBlYXIgYXMgYW4gYXR0cmlidXRlCiAg
IC8vIHZhbHVlLCBhbmQgbm9ybWFsaXphYmxlIHdoaXRlc3BhY2UgaXMgcHJlc2VydmVkIGJ5IHJl
cGxhY2luZyBpdAogICAvLyB3aXRoIGNoYXJhY3RlciByZWZlcmVuY2VzLgotICBzdGF0aWMgU3Ry
aW5nIEVzY2FwZVhtbChjb25zdCBjaGFyKiBzdHIsIGJvb2wgaXNfYXR0cmlidXRlKTsKKyAgc3Rh
dGljIHN0ZDo6c3RyaW5nIEVzY2FwZVhtbChjb25zdCBzdGQ6OnN0cmluZyYgc3RyLCBib29sIGlz
X2F0dHJpYnV0ZSk7CiAKICAgLy8gUmV0dXJucyB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGggYWxsIGNo
YXJhY3RlcnMgaW52YWxpZCBpbiBYTUwgcmVtb3ZlZC4KLSAgc3RhdGljIFN0cmluZyBSZW1vdmVJ
bnZhbGlkWG1sQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBzdHIpOworICBzdGF0aWMgc3RkOjpzdHJp
bmcgUmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cik7CiAK
ICAgLy8gQ29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgRXNjYXBlWG1sIHdoZW4gc3RyIGlzIGFu
IGF0dHJpYnV0ZSB2YWx1ZS4KLSAgc3RhdGljIFN0cmluZyBFc2NhcGVYbWxBdHRyaWJ1dGUoY29u
c3QgY2hhciogc3RyKSB7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFc2NhcGVYbWxBdHRyaWJ1dGUo
Y29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgewogICAgIHJldHVybiBFc2NhcGVYbWwoc3RyLCB0cnVl
KTsKICAgfQogCiAgIC8vIENvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIEVzY2FwZVhtbCB3aGVu
IHN0ciBpcyBub3QgYW4gYXR0cmlidXRlIHZhbHVlLgotICBzdGF0aWMgU3RyaW5nIEVzY2FwZVht
bFRleHQoY29uc3QgY2hhciogc3RyKSB7IHJldHVybiBFc2NhcGVYbWwoc3RyLCBmYWxzZSk7IH0K
KyAgc3RhdGljIHN0ZDo6c3RyaW5nIEVzY2FwZVhtbFRleHQoY29uc3QgY2hhciogc3RyKSB7Cisg
ICAgcmV0dXJuIEVzY2FwZVhtbChzdHIsIGZhbHNlKTsKKyAgfQorCisgIC8vIFZlcmlmaWVzIHRo
YXQgdGhlIGdpdmVuIGF0dHJpYnV0ZSBiZWxvbmdzIHRvIHRoZSBnaXZlbiBlbGVtZW50IGFuZAor
ICAvLyBzdHJlYW1zIHRoZSBhdHRyaWJ1dGUgYXMgWE1MLgorICBzdGF0aWMgdm9pZCBPdXRwdXRY
bWxBdHRyaWJ1dGUoc3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZWxlbWVudF9uYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpOwogCiAgIC8v
IFN0cmVhbXMgYW4gWE1MIENEQVRBIHNlY3Rpb24sIGVzY2FwaW5nIGludmFsaWQgQ0RBVEEgc2Vx
dWVuY2VzIGFzIG5lZWRlZC4KICAgc3RhdGljIHZvaWQgT3V0cHV0WG1sQ0RhdGFTZWN0aW9uKDo6
c3RkOjpvc3RyZWFtKiBzdHJlYW0sIGNvbnN0IGNoYXIqIGRhdGEpOwpAQCAtMzAzNSwxOSArMzQ3
MywyNiBAQCBjbGFzcyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0
RXZlbnRMaXN0ZW5lciB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRl
c3RJbmZvJiB0ZXN0X2luZm8pOwogCiAgIC8vIFByaW50cyBhbiBYTUwgcmVwcmVzZW50YXRpb24g
b2YgYSBUZXN0Q2FzZSBvYmplY3QKLSAgc3RhdGljIHZvaWQgUHJpbnRYbWxUZXN0Q2FzZShGSUxF
KiBvdXQsIGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpOworICBzdGF0aWMgdm9pZCBQcmludFht
bFRlc3RDYXNlKDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSk7CiAKICAgLy8gUHJpbnRzIGFuIFhN
TCBzdW1tYXJ5IG9mIHVuaXRfdGVzdCB0byBvdXRwdXQgc3RyZWFtIG91dC4KLSAgc3RhdGljIHZv
aWQgUHJpbnRYbWxVbml0VGVzdChGSUxFKiBvdXQsIGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3Qp
OworICBzdGF0aWMgdm9pZCBQcmludFhtbFVuaXRUZXN0KDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVz
dCk7CiAKICAgLy8gUHJvZHVjZXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0ZXN0IHByb3Bl
cnRpZXMgaW4gYSByZXN1bHQgYXMgc3BhY2UKICAgLy8gZGVsaW1pdGVkIFhNTCBhdHRyaWJ1dGVz
IGJhc2VkIG9uIHRoZSBwcm9wZXJ0eSBrZXk9InZhbHVlIiBwYWlycy4KLSAgLy8gV2hlbiB0aGUg
U3RyaW5nIGlzIG5vdCBlbXB0eSwgaXQgaW5jbHVkZXMgYSBzcGFjZSBhdCB0aGUgYmVnaW5uaW5n
LAorICAvLyBXaGVuIHRoZSBzdGQ6OnN0cmluZyBpcyBub3QgZW1wdHksIGl0IGluY2x1ZGVzIGEg
c3BhY2UgYXQgdGhlIGJlZ2lubmluZywKICAgLy8gdG8gZGVsaW1pdCB0aGlzIGF0dHJpYnV0ZSBm
cm9tIHByaW9yIGF0dHJpYnV0ZXMuCi0gIHN0YXRpYyBTdHJpbmcgVGVzdFByb3BlcnRpZXNBc1ht
bEF0dHJpYnV0ZXMoY29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0KTsKKyAgc3RhdGljIHN0ZDo6c3Ry
aW5nIFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKGNvbnN0IFRlc3RSZXN1bHQmIHJlc3Vs
dCk7CisKKyAgLy8gU3RyZWFtcyBhbiBYTUwgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRlc3QgcHJv
cGVydGllcyBvZiBhIFRlc3RSZXN1bHQKKyAgLy8gb2JqZWN0LgorICBzdGF0aWMgdm9pZCBPdXRw
dXRYbWxUZXN0UHJvcGVydGllcyhzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0KTsKIAogICAv
LyBUaGUgb3V0cHV0IGZpbGUuCi0gIGNvbnN0IFN0cmluZyBvdXRwdXRfZmlsZV87CisgIGNvbnN0
IHN0ZDo6c3RyaW5nIG91dHB1dF9maWxlXzsKIAogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcik7CiB9OwpAQCAtMzA1NSw0MSArMzUwMCwy
NyBAQCBjbGFzcyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZl
bnRMaXN0ZW5lciB7CiAvLyBDcmVhdGVzIGEgbmV3IFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlci4K
IFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6WG1sVW5pdFRlc3RSZXN1bHRQcmludGVyKGNvbnN0
IGNoYXIqIG91dHB1dF9maWxlKQogICAgIDogb3V0cHV0X2ZpbGVfKG91dHB1dF9maWxlKSB7Ci0g
IGlmIChvdXRwdXRfZmlsZV8uY19zdHIoKSA9PSBOVUxMIHx8IG91dHB1dF9maWxlXy5lbXB0eSgp
KSB7Ci0gICAgZnByaW50ZihzdGRlcnIsICJYTUwgb3V0cHV0IGZpbGUgbWF5IG5vdCBiZSBudWxs
XG4iKTsKLSAgICBmZmx1c2goc3RkZXJyKTsKLSAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgIGlm
IChvdXRwdXRfZmlsZV8uZW1wdHkoKSkgeworICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICJYTUwg
b3V0cHV0IGZpbGUgbWF5IG5vdCBiZSBudWxsIjsKICAgfQogfQogCiAvLyBDYWxsZWQgYWZ0ZXIg
dGhlIHVuaXQgdGVzdCBlbmRzLgogdm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVz
dEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgLyppdGVyYXRpb24qLykgewot
ICBGSUxFKiB4bWxvdXQgPSBOVUxMOwotICBGaWxlUGF0aCBvdXRwdXRfZmlsZShvdXRwdXRfZmls
ZV8pOwotICBGaWxlUGF0aCBvdXRwdXRfZGlyKG91dHB1dF9maWxlLlJlbW92ZUZpbGVOYW1lKCkp
OworICBGSUxFKiB4bWxvdXQgPSBPcGVuRmlsZUZvcldyaXRpbmcob3V0cHV0X2ZpbGVfKTsKKyAg
c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOworICBQcmludFhtbFVuaXRUZXN0KCZzdHJlYW0sIHVu
aXRfdGVzdCk7CisgIGZwcmludGYoeG1sb3V0LCAiJXMiLCBTdHJpbmdTdHJlYW1Ub1N0cmluZygm
c3RyZWFtKS5jX3N0cigpKTsKKyAgZmNsb3NlKHhtbG91dCk7Cit9CiAKLSAgaWYgKG91dHB1dF9k
aXIuQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKSB7Ci0gICAgeG1sb3V0ID0gcG9zaXg6
OkZPcGVuKG91dHB1dF9maWxlXy5jX3N0cigpLCAidyIpOwotICB9Ci0gIGlmICh4bWxvdXQgPT0g
TlVMTCkgewotICAgIC8vIFRPRE8od2FuKTogcmVwb3J0IHRoZSByZWFzb24gb2YgdGhlIGZhaWx1
cmUuCi0gICAgLy8KLSAgICAvLyBXZSBkb24ndCBkbyBpdCBmb3Igbm93IGFzOgotICAgIC8vCi0g
ICAgLy8gICAxLiBUaGVyZSBpcyBubyB1cmdlbnQgbmVlZCBmb3IgaXQuCi0gICAgLy8gICAyLiBJ
dCdzIGEgYml0IGludm9sdmVkIHRvIG1ha2UgdGhlIGVycm5vIHZhcmlhYmxlIHRocmVhZC1zYWZl
IG9uCi0gICAgLy8gICAgICBhbGwgdGhyZWUgb3BlcmF0aW5nIHN5c3RlbXMgKExpbnV4LCBXaW5k
b3dzLCBhbmQgTWFjIE9TKS4KLSAgICAvLyAgIDMuIFRvIGludGVycHJldCB0aGUgbWVhbmluZyBv
ZiBlcnJubyBpbiBhIHRocmVhZC1zYWZlIHdheSwKLSAgICAvLyAgICAgIHdlIG5lZWQgdGhlIHN0
cmVycm9yX3IoKSBmdW5jdGlvbiwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBvbgotICAgIC8vICAg
ICAgV2luZG93cy4KLSAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICJVbmFibGUgdG8g
b3BlbiBmaWxlIFwiJXNcIlxuIiwKLSAgICAgICAgICAgIG91dHB1dF9maWxlXy5jX3N0cigpKTsK
LSAgICBmZmx1c2goc3RkZXJyKTsKLSAgICBleGl0KEVYSVRfRkFJTFVSRSk7Ci0gIH0KLSAgUHJp
bnRYbWxVbml0VGVzdCh4bWxvdXQsIHVuaXRfdGVzdCk7Cit2b2lkIFhtbFVuaXRUZXN0UmVzdWx0
UHJpbnRlcjo6TGlzdFRlc3RzTWF0Y2hpbmdGaWx0ZXIoCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
VGVzdENhc2UqPiYgdGVzdF9jYXNlcykgeworICBGSUxFKiB4bWxvdXQgPSBPcGVuRmlsZUZvcldy
aXRpbmcob3V0cHV0X2ZpbGVfKTsKKyAgc3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOworICBQcmlu
dFhtbFRlc3RzTGlzdCgmc3RyZWFtLCB0ZXN0X2Nhc2VzKTsKKyAgZnByaW50Zih4bWxvdXQsICIl
cyIsIFN0cmluZ1N0cmVhbVRvU3RyaW5nKCZzdHJlYW0pLmNfc3RyKCkpOwogICBmY2xvc2UoeG1s
b3V0KTsKIH0KIApAQCAtMzEwMyw0NCArMzUzNCw0NSBAQCB2b2lkIFhtbFVuaXRUZXN0UmVzdWx0
UHJpbnRlcjo6T25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsCiAv
LyBtb2R1bGUgd2lsbCBjb25zaXN0IG9mIG9yZGluYXJ5IEVuZ2xpc2ggdGV4dC4KIC8vIElmIHRo
aXMgbW9kdWxlIGlzIGV2ZXIgbW9kaWZpZWQgdG8gcHJvZHVjZSB2ZXJzaW9uIDEuMSBYTUwgb3V0
cHV0LAogLy8gbW9zdCBpbnZhbGlkIGNoYXJhY3RlcnMgY2FuIGJlIHJldGFpbmVkIHVzaW5nIGNo
YXJhY3RlciByZWZlcmVuY2VzLgotLy8gVE9ETyh3YW4pOiBJdCBtaWdodCBiZSBuaWNlIHRvIGhh
dmUgYSBtaW5pbWFsbHkgaW52YXNpdmUsIGh1bWFuLXJlYWRhYmxlCisvLyBGSVhNRTogSXQgbWln
aHQgYmUgbmljZSB0byBoYXZlIGEgbWluaW1hbGx5IGludmFzaXZlLCBodW1hbi1yZWFkYWJsZQog
Ly8gZXNjYXBpbmcgc2NoZW1lIGZvciBpbnZhbGlkIGNoYXJhY3RlcnMsIHJhdGhlciB0aGFuIGRy
b3BwaW5nIHRoZW0uCi1TdHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpFc2NhcGVYbWwo
Y29uc3QgY2hhciogc3RyLCBib29sIGlzX2F0dHJpYnV0ZSkgeworc3RkOjpzdHJpbmcgWG1sVW5p
dFRlc3RSZXN1bHRQcmludGVyOjpFc2NhcGVYbWwoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0
ciwgYm9vbCBpc19hdHRyaWJ1dGUpIHsKICAgTWVzc2FnZSBtOwogCi0gIGlmIChzdHIgIT0gTlVM
TCkgewotICAgIGZvciAoY29uc3QgY2hhciogc3JjID0gc3RyOyAqc3JjOyArK3NyYykgewotICAg
ICAgc3dpdGNoICgqc3JjKSB7Ci0gICAgICAgIGNhc2UgJzwnOgotICAgICAgICAgIG0gPDwgIiZs
dDsiOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICc+JzoKLSAgICAgICAgICBtIDw8
ICImZ3Q7IjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnJic6Ci0gICAgICAgICAg
bSA8PCAiJmFtcDsiOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdcJyc6Ci0gICAg
ICAgICAgaWYgKGlzX2F0dHJpYnV0ZSkKLSAgICAgICAgICAgIG0gPDwgIiZhcG9zOyI7Ci0gICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbSA8PCAnXCcnOwotICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlICciJzoKLSAgICAgICAgICBpZiAoaXNfYXR0cmlidXRlKQotICAgICAgICAgICAg
bSA8PCAiJnF1b3Q7IjsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHIuc2l6ZSgpOyArK2kp
IHsKKyAgICBjb25zdCBjaGFyIGNoID0gc3RyW2ldOworICAgIHN3aXRjaCAoY2gpIHsKKyAgICAg
IGNhc2UgJzwnOgorICAgICAgICBtIDw8ICImbHQ7IjsKKyAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlICc+JzoKKyAgICAgICAgbSA8PCAiJmd0OyI7CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSAnJic6CisgICAgICAgIG0gPDwgIiZhbXA7IjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
ICdcJyc6CisgICAgICAgIGlmIChpc19hdHRyaWJ1dGUpCisgICAgICAgICAgbSA8PCAiJmFwb3M7
IjsKKyAgICAgICAgZWxzZQorICAgICAgICAgIG0gPDwgJ1wnJzsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlICciJzoKKyAgICAgICAgaWYgKGlzX2F0dHJpYnV0ZSkKKyAgICAgICAgICBtIDw8
ICImcXVvdDsiOworICAgICAgICBlbHNlCisgICAgICAgICAgbSA8PCAnIic7CisgICAgICAgIGJy
ZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKElzVmFsaWRYbWxDaGFyYWN0ZXIoY2gp
KSB7CisgICAgICAgICAgaWYgKGlzX2F0dHJpYnV0ZSAmJiBJc05vcm1hbGl6YWJsZVdoaXRlc3Bh
Y2UoY2gpKQorICAgICAgICAgICAgbSA8PCAiJiN4IiA8PCBTdHJpbmc6OkZvcm1hdEJ5dGUoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKQorICAgICAgICAgICAgICA8PCAiOyI7CiAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbSA8PCAnIic7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgaWYgKElzVmFsaWRYbWxDaGFyYWN0ZXIoKnNyYykpIHsK
LSAgICAgICAgICAgIGlmIChpc19hdHRyaWJ1dGUgJiYgSXNOb3JtYWxpemFibGVXaGl0ZXNwYWNl
KCpzcmMpKQotICAgICAgICAgICAgICBtIDw8IFN0cmluZzo6Rm9ybWF0KCImI3glMDJYOyIsIHVu
c2lnbmVkKCpzcmMpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgbSA8PCAqc3Jj
OwotICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLSAgICAgIH0KKyAgICAgICAgICAgIG0g
PDwgY2g7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgfQogICB9CiAKQEAgLTMxNTAs
MjEgKzM1ODIsMjAgQEAgU3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6RXNjYXBlWG1s
KGNvbnN0IGNoYXIqIHN0ciwgYm9vbCBpc19hdHRyaWJ1dGUpIHsKIC8vIFJldHVybnMgdGhlIGdp
dmVuIHN0cmluZyB3aXRoIGFsbCBjaGFyYWN0ZXJzIGludmFsaWQgaW4gWE1MIHJlbW92ZWQuCiAv
LyBDdXJyZW50bHkgaW52YWxpZCBjaGFyYWN0ZXJzIGFyZSBkcm9wcGVkIGZyb20gdGhlIHN0cmlu
Zy4gQW4KIC8vIGFsdGVybmF0aXZlIGlzIHRvIHJlcGxhY2UgdGhlbSB3aXRoIGNlcnRhaW4gY2hh
cmFjdGVycyBzdWNoIGFzIC4gb3IgPy4KLVN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6
OlJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIHN0cikgewotICBjaGFyKiBj
b25zdCBvdXRwdXQgPSBuZXcgY2hhcltzdHJsZW4oc3RyKSArIDFdOwotICBjaGFyKiBhcHBlbmRl
ciA9IG91dHB1dDsKLSAgZm9yIChjaGFyIGNoID0gKnN0cjsgY2ggIT0gJ1wwJzsgY2ggPSAqKytz
dHIpCi0gICAgaWYgKElzVmFsaWRYbWxDaGFyYWN0ZXIoY2gpKQotICAgICAgKmFwcGVuZGVyKysg
PSBjaDsKLSAgKmFwcGVuZGVyID0gJ1wwJzsKK3N0ZDo6c3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0
UHJpbnRlcjo6UmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoCisgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHN0cikgeworICBzdGQ6OnN0cmluZyBvdXRwdXQ7CisgIG91dHB1dC5yZXNlcnZlKHN0ci5z
aXplKCkpOworICBmb3IgKHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvciBpdCA9IHN0ci5iZWdp
bigpOyBpdCAhPSBzdHIuZW5kKCk7ICsraXQpCisgICAgaWYgKElzVmFsaWRYbWxDaGFyYWN0ZXIo
Kml0KSkKKyAgICAgIG91dHB1dC5wdXNoX2JhY2soKml0KTsKIAotICBTdHJpbmcgcmV0X3ZhbHVl
KG91dHB1dCk7Ci0gIGRlbGV0ZVtdIG91dHB1dDsKLSAgcmV0dXJuIHJldF92YWx1ZTsKKyAgcmV0
dXJuIG91dHB1dDsKIH0KIAogLy8gVGhlIGZvbGxvd2luZyByb3V0aW5lcyBnZW5lcmF0ZSBhbiBY
TUwgcmVwcmVzZW50YXRpb24gb2YgYSBVbml0VGVzdAogLy8gb2JqZWN0LgorLy8gR09PR0xFVEVT
VF9DTTAwMDkgRE8gTk9UIERFTEVURQogLy8KIC8vIFRoaXMgaXMgaG93IEdvb2dsZSBUZXN0IGNv
bmNlcHRzIG1hcCB0byB0aGUgRFREOgogLy8KQEAgLTMxODIsMTAgKzM2MTMsNDEgQEAgU3RyaW5n
IFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoY29u
c3QgY2hhciogc3RyKSB7CiAvLyBGb3JtYXRzIHRoZSBnaXZlbiB0aW1lIGluIG1pbGxpc2Vjb25k
cyBhcyBzZWNvbmRzLgogc3RkOjpzdHJpbmcgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKFRp
bWVJbk1pbGxpcyBtcykgewogICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOwotICBzcyA8PCBtcy8x
MDAwLjA7CisgIHNzIDw8IChzdGF0aWNfY2FzdDxkb3VibGU+KG1zKSAqIDFlLTMpOwogICByZXR1
cm4gc3Muc3RyKCk7CiB9CiAKK3N0YXRpYyBib29sIFBvcnRhYmxlTG9jYWx0aW1lKHRpbWVfdCBz
ZWNvbmRzLCBzdHJ1Y3QgdG0qIG91dCkgeworI2lmIGRlZmluZWQoX01TQ19WRVIpCisgIHJldHVy
biBsb2NhbHRpbWVfcyhvdXQsICZzZWNvbmRzKSA9PSAwOworI2VsaWYgZGVmaW5lZChfX01JTkdX
MzJfXykgfHwgZGVmaW5lZChfX01JTkdXNjRfXykKKyAgLy8gTUlOR1cgPHRpbWUuaD4gcHJvdmlk
ZXMgbmVpdGhlciBsb2NhbHRpbWVfciBub3IgbG9jYWx0aW1lX3MsIGJ1dCB1c2VzCisgIC8vIFdp
bmRvd3MnIGxvY2FsdGltZSgpLCB3aGljaCBoYXMgYSB0aHJlYWQtbG9jYWwgdG0gYnVmZmVyLgor
ICBzdHJ1Y3QgdG0qIHRtX3B0ciA9IGxvY2FsdGltZSgmc2Vjb25kcyk7ICAvLyBOT0xJTlQKKyAg
aWYgKHRtX3B0ciA9PSBOVUxMKQorICAgIHJldHVybiBmYWxzZTsKKyAgKm91dCA9ICp0bV9wdHI7
CisgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgcmV0dXJuIGxvY2FsdGltZV9yKCZzZWNvbmRzLCBv
dXQpICE9IE5VTEw7CisjZW5kaWYKK30KKworLy8gQ29udmVydHMgdGhlIGdpdmVuIGVwb2NoIHRp
bWUgaW4gbWlsbGlzZWNvbmRzIHRvIGEgZGF0ZSBzdHJpbmcgaW4gdGhlIElTTworLy8gODYwMSBm
b3JtYXQsIHdpdGhvdXQgdGhlIHRpbWV6b25lIGluZm9ybWF0aW9uLgorc3RkOjpzdHJpbmcgRm9y
bWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoVGltZUluTWlsbGlzIG1zKSB7CisgIHN0cnVj
dCB0bSB0aW1lX3N0cnVjdDsKKyAgaWYgKCFQb3J0YWJsZUxvY2FsdGltZShzdGF0aWNfY2FzdDx0
aW1lX3Q+KG1zIC8gMTAwMCksICZ0aW1lX3N0cnVjdCkpCisgICAgcmV0dXJuICIiOworICAvLyBZ
WVlZLU1NLUREVGhoOm1tOnNzCisgIHJldHVybiBTdHJlYW1hYmxlVG9TdHJpbmcodGltZV9zdHJ1
Y3QudG1feWVhciArIDE5MDApICsgIi0iICsKKyAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgy
KHRpbWVfc3RydWN0LnRtX21vbiArIDEpICsgIi0iICsKKyAgICAgIFN0cmluZzo6Rm9ybWF0SW50
V2lkdGgyKHRpbWVfc3RydWN0LnRtX21kYXkpICsgIlQiICsKKyAgICAgIFN0cmluZzo6Rm9ybWF0
SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX2hvdXIpICsgIjoiICsKKyAgICAgIFN0cmluZzo6Rm9y
bWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX21pbikgKyAiOiIgKworICAgICAgU3RyaW5nOjpG
b3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1fc2VjKTsKK30KKwogLy8gU3RyZWFtcyBhbiBY
TUwgQ0RBVEEgc2VjdGlvbiwgZXNjYXBpbmcgaW52YWxpZCBDREFUQSBzZXF1ZW5jZXMgYXMgbmVl
ZGVkLgogdm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dFhtbENEYXRhU2VjdGlv
big6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhKSB7CkBAIC0zMjA2LDg5ICsz
NjY4LDE3OSBAQCB2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T3V0cHV0WG1sQ0RhdGFT
ZWN0aW9uKDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCiAgICpzdHJlYW0gPDwgIl1dPiI7CiB9CiAK
K3ZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPdXRwdXRYbWxBdHRyaWJ1dGUoCisgICAg
c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGVsZW1lbnRfbmFt
ZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYg
dmFsdWUpIHsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBhbGxvd2VkX25hbWVz
ID0KKyAgICAgIEdldFJlc2VydmVkQXR0cmlidXRlc0ZvckVsZW1lbnQoZWxlbWVudF9uYW1lKTsK
KworICBHVEVTVF9DSEVDS18oc3RkOjpmaW5kKGFsbG93ZWRfbmFtZXMuYmVnaW4oKSwgYWxsb3dl
ZF9uYW1lcy5lbmQoKSwgbmFtZSkgIT0KKyAgICAgICAgICAgICAgICAgICBhbGxvd2VkX25hbWVz
LmVuZCgpKQorICAgICAgPDwgIkF0dHJpYnV0ZSAiIDw8IG5hbWUgPDwgIiBpcyBub3QgYWxsb3dl
ZCBmb3IgZWxlbWVudCA8IiA8PCBlbGVtZW50X25hbWUKKyAgICAgIDw8ICI+LiI7CisKKyAgKnN0
cmVhbSA8PCAiICIgPDwgbmFtZSA8PCAiPVwiIiA8PCBFc2NhcGVYbWxBdHRyaWJ1dGUodmFsdWUp
IDw8ICJcIiI7Cit9CisKIC8vIFByaW50cyBhbiBYTUwgcmVwcmVzZW50YXRpb24gb2YgYSBUZXN0
SW5mbyBvYmplY3QuCi0vLyBUT0RPKHdhbik6IFRoZXJlIGlzIGFsc28gdmFsdWUgaW4gcHJpbnRp
bmcgcHJvcGVydGllcyB3aXRoIHRoZSBwbGFpbiBwcmludGVyLgorLy8gRklYTUU6IFRoZXJlIGlz
IGFsc28gdmFsdWUgaW4gcHJpbnRpbmcgcHJvcGVydGllcyB3aXRoIHRoZSBwbGFpbiBwcmludGVy
Lgogdm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dFhtbFRlc3RJbmZvKDo6c3Rk
Ojpvc3RyZWFtKiBzdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdEluZm8mIHRlc3RfaW5m
bykgewogICBjb25zdCBUZXN0UmVzdWx0JiByZXN1bHQgPSAqdGVzdF9pbmZvLnJlc3VsdCgpOwot
ICAqc3RyZWFtIDw8ICIgICAgPHRlc3RjYXNlIG5hbWU9XCIiCi0gICAgICAgICAgPDwgRXNjYXBl
WG1sQXR0cmlidXRlKHRlc3RfaW5mby5uYW1lKCkpLmNfc3RyKCkKLSAgICAgICAgICA8PCAiXCIg
c3RhdHVzPVwiIgotICAgICAgICAgIDw8ICh0ZXN0X2luZm8uc2hvdWxkX3J1bigpID8gInJ1biIg
OiAibm90cnVuIikKLSAgICAgICAgICA8PCAiXCIgdGltZT1cIiIKLSAgICAgICAgICA8PCBGb3Jt
YXRUaW1lSW5NaWxsaXNBc1NlY29uZHMocmVzdWx0LmVsYXBzZWRfdGltZSgpKQotICAgICAgICAg
IDw8ICJcIiBjbGFzc25hbWU9XCIiIDw8IEVzY2FwZVhtbEF0dHJpYnV0ZSh0ZXN0X2Nhc2VfbmFt
ZSkuY19zdHIoKQotICAgICAgICAgIDw8ICJcIiIgPDwgVGVzdFByb3BlcnRpZXNBc1htbEF0dHJp
YnV0ZXMocmVzdWx0KS5jX3N0cigpOworICBjb25zdCBzdGQ6OnN0cmluZyBrVGVzdGNhc2UgPSAi
dGVzdGNhc2UiOworCisgIGlmICh0ZXN0X2luZm8uaXNfaW5fYW5vdGhlcl9zaGFyZCgpKSB7Cisg
ICAgcmV0dXJuOworICB9CisKKyAgKnN0cmVhbSA8PCAiICAgIDx0ZXN0Y2FzZSI7CisgIE91dHB1
dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgIm5hbWUiLCB0ZXN0X2luZm8ubmFtZSgp
KTsKKworICBpZiAodGVzdF9pbmZvLnZhbHVlX3BhcmFtKCkgIT0gTlVMTCkgeworICAgIE91dHB1
dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgInZhbHVlX3BhcmFtIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdF9pbmZvLnZhbHVlX3BhcmFtKCkpOworICB9CisgIGlmICh0ZXN0
X2luZm8udHlwZV9wYXJhbSgpICE9IE5VTEwpIHsKKyAgICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3Ry
ZWFtLCBrVGVzdGNhc2UsICJ0eXBlX3BhcmFtIiwgdGVzdF9pbmZvLnR5cGVfcGFyYW0oKSk7Cisg
IH0KKyAgaWYgKEdURVNUX0ZMQUcobGlzdF90ZXN0cykpIHsKKyAgICBPdXRwdXRYbWxBdHRyaWJ1
dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJmaWxlIiwgdGVzdF9pbmZvLmZpbGUoKSk7CisgICAgT3V0
cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNlLCAibGluZSIsCisgICAgICAgICAgICAg
ICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh0ZXN0X2luZm8ubGluZSgpKSk7CisgICAgKnN0
cmVhbSA8PCAiIC8+XG4iOworICAgIHJldHVybjsKKyAgfQorCisgIE91dHB1dFhtbEF0dHJpYnV0
ZShzdHJlYW0sIGtUZXN0Y2FzZSwgInN0YXR1cyIsCisgICAgICAgICAgICAgICAgICAgICB0ZXN0
X2luZm8uc2hvdWxkX3J1bigpID8gInJ1biIgOiAibm90cnVuIik7CisgIE91dHB1dFhtbEF0dHJp
YnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgInRpbWUiLAorICAgICAgICAgICAgICAgICAgICAgRm9y
bWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKHJlc3VsdC5lbGFwc2VkX3RpbWUoKSkpOworICBPdXRw
dXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJjbGFzc25hbWUiLCB0ZXN0X2Nhc2Vf
bmFtZSk7CiAKICAgaW50IGZhaWx1cmVzID0gMDsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1
bHQudG90YWxfcGFydF9jb3VudCgpOyArK2kpIHsKICAgICBjb25zdCBUZXN0UGFydFJlc3VsdCYg
cGFydCA9IHJlc3VsdC5HZXRUZXN0UGFydFJlc3VsdChpKTsKICAgICBpZiAocGFydC5mYWlsZWQo
KSkgewotICAgICAgaWYgKCsrZmFpbHVyZXMgPT0gMSkKKyAgICAgIGlmICgrK2ZhaWx1cmVzID09
IDEpIHsKICAgICAgICAgKnN0cmVhbSA8PCAiPlxuIjsKKyAgICAgIH0KKyAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIGxvY2F0aW9uID0KKyAgICAgICAgICBpbnRlcm5hbDo6Rm9ybWF0Q29tcGlsZXJJ
bmRlcGVuZGVudEZpbGVMb2NhdGlvbihwYXJ0LmZpbGVfbmFtZSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnQubGluZV9udW1i
ZXIoKSk7CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyBzdW1tYXJ5ID0gbG9jYXRpb24gKyAiXG4i
ICsgcGFydC5zdW1tYXJ5KCk7CiAgICAgICAqc3RyZWFtIDw8ICIgICAgICA8ZmFpbHVyZSBtZXNz
YWdlPVwiIgotICAgICAgICAgICAgICA8PCBFc2NhcGVYbWxBdHRyaWJ1dGUocGFydC5zdW1tYXJ5
KCkpLmNfc3RyKCkKKyAgICAgICAgICAgICAgPDwgRXNjYXBlWG1sQXR0cmlidXRlKHN1bW1hcnku
Y19zdHIoKSkKICAgICAgICAgICAgICAgPDwgIlwiIHR5cGU9XCJcIj4iOwotICAgICAgY29uc3Qg
U3RyaW5nIG1lc3NhZ2UgPSBSZW1vdmVJbnZhbGlkWG1sQ2hhcmFjdGVycyhTdHJpbmc6OkZvcm1h
dCgKLSAgICAgICAgICAiJXM6JWRcbiVzIiwKLSAgICAgICAgICBwYXJ0LmZpbGVfbmFtZSgpLCBw
YXJ0LmxpbmVfbnVtYmVyKCksCi0gICAgICAgICAgcGFydC5tZXNzYWdlKCkpLmNfc3RyKCkpOwot
ICAgICAgT3V0cHV0WG1sQ0RhdGFTZWN0aW9uKHN0cmVhbSwgbWVzc2FnZS5jX3N0cigpKTsKKyAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGRldGFpbCA9IGxvY2F0aW9uICsgIlxuIiArIHBhcnQubWVz
c2FnZSgpOworICAgICAgT3V0cHV0WG1sQ0RhdGFTZWN0aW9uKHN0cmVhbSwgUmVtb3ZlSW52YWxp
ZFhtbENoYXJhY3RlcnMoZGV0YWlsKS5jX3N0cigpKTsKICAgICAgICpzdHJlYW0gPDwgIjwvZmFp
bHVyZT5cbiI7CiAgICAgfQogICB9CiAKLSAgaWYgKGZhaWx1cmVzID09IDApCisgIGlmIChmYWls
dXJlcyA9PSAwICYmIHJlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCkgPT0gMCkgewogICAgICpz
dHJlYW0gPDwgIiAvPlxuIjsKLSAgZWxzZQorICB9IGVsc2UgeworICAgIGlmIChmYWlsdXJlcyA9
PSAwKSB7CisgICAgICAqc3RyZWFtIDw8ICI+XG4iOworICAgIH0KKyAgICBPdXRwdXRYbWxUZXN0
UHJvcGVydGllcyhzdHJlYW0sIHJlc3VsdCk7CiAgICAgKnN0cmVhbSA8PCAiICAgIDwvdGVzdGNh
c2U+XG4iOworICB9CiB9CiAKIC8vIFByaW50cyBhbiBYTUwgcmVwcmVzZW50YXRpb24gb2YgYSBU
ZXN0Q2FzZSBvYmplY3QKLXZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludFhtbFRl
c3RDYXNlKEZJTEUqIG91dCwKK3ZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludFht
bFRlc3RDYXNlKHN0ZDo6b3N0cmVhbSogc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSkgewotICBm
cHJpbnRmKG91dCwKLSAgICAgICAgICAiICA8dGVzdHN1aXRlIG5hbWU9XCIlc1wiIHRlc3RzPVwi
JWRcIiBmYWlsdXJlcz1cIiVkXCIgIgotICAgICAgICAgICJkaXNhYmxlZD1cIiVkXCIgIiwKLSAg
ICAgICAgICBFc2NhcGVYbWxBdHRyaWJ1dGUodGVzdF9jYXNlLm5hbWUoKSkuY19zdHIoKSwKLSAg
ICAgICAgICB0ZXN0X2Nhc2UudG90YWxfdGVzdF9jb3VudCgpLAotICAgICAgICAgIHRlc3RfY2Fz
ZS5mYWlsZWRfdGVzdF9jb3VudCgpLAotICAgICAgICAgIHRlc3RfY2FzZS5kaXNhYmxlZF90ZXN0
X2NvdW50KCkpOwotICBmcHJpbnRmKG91dCwKLSAgICAgICAgICAiZXJyb3JzPVwiMFwiIHRpbWU9
XCIlc1wiPlxuIiwKLSAgICAgICAgICBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHModGVzdF9j
YXNlLmVsYXBzZWRfdGltZSgpKS5jX3N0cigpKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3Rz
dWl0ZSA9ICJ0ZXN0c3VpdGUiOworICAqc3RyZWFtIDw8ICIgIDwiIDw8IGtUZXN0c3VpdGU7Cisg
IE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUsICJuYW1lIiwgdGVzdF9jYXNl
Lm5hbWUoKSk7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUsICJ0ZXN0
cyIsCisgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodGVzdF9jYXNlLnJl
cG9ydGFibGVfdGVzdF9jb3VudCgpKSk7CisgIGlmICghR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSkg
eworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUsICJmYWlsdXJlcyIs
CisgICAgICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh0ZXN0X2Nhc2UuZmFp
bGVkX3Rlc3RfY291bnQoKSkpOworICAgIE91dHB1dFhtbEF0dHJpYnV0ZSgKKyAgICAgICAgc3Ry
ZWFtLCBrVGVzdHN1aXRlLCAiZGlzYWJsZWQiLAorICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmco
dGVzdF9jYXNlLnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpKSk7CisgICAgT3V0cHV0
WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZSwgImVycm9ycyIsICIwIik7CisgICAgT3V0
cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZSwgInRpbWUiLAorICAgICAgICAgICAg
ICAgICAgICAgICBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHModGVzdF9jYXNlLmVsYXBzZWRf
dGltZSgpKSk7CisgICAgKnN0cmVhbSA8PCBUZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRlcyh0
ZXN0X2Nhc2UuYWRfaG9jX3Rlc3RfcmVzdWx0KCkpOworICB9CisgICpzdHJlYW0gPDwgIj5cbiI7
CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVzdF9jYXNlLnRvdGFsX3Rlc3RfY291bnQoKTsgKytp
KSB7Ci0gICAgU3RyU3RyZWFtIHN0cmVhbTsKLSAgICBPdXRwdXRYbWxUZXN0SW5mbygmc3RyZWFt
LCB0ZXN0X2Nhc2UubmFtZSgpLCAqdGVzdF9jYXNlLkdldFRlc3RJbmZvKGkpKTsKLSAgICBmcHJp
bnRmKG91dCwgIiVzIiwgU3RyU3RyZWFtVG9TdHJpbmcoJnN0cmVhbSkuY19zdHIoKSk7CisgICAg
aWYgKHRlc3RfY2FzZS5HZXRUZXN0SW5mbyhpKS0+aXNfcmVwb3J0YWJsZSgpKQorICAgICAgT3V0
cHV0WG1sVGVzdEluZm8oc3RyZWFtLCB0ZXN0X2Nhc2UubmFtZSgpLCAqdGVzdF9jYXNlLkdldFRl
c3RJbmZvKGkpKTsKICAgfQotICBmcHJpbnRmKG91dCwgIiAgPC90ZXN0c3VpdGU+XG4iKTsKKyAg
KnN0cmVhbSA8PCAiICA8LyIgPDwga1Rlc3RzdWl0ZSA8PCAiPlxuIjsKIH0KIAogLy8gUHJpbnRz
IGFuIFhNTCBzdW1tYXJ5IG9mIHVuaXRfdGVzdCB0byBvdXRwdXQgc3RyZWFtIG91dC4KLXZvaWQg
WG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludFhtbFVuaXRUZXN0KEZJTEUqIG91dCwKK3Zv
aWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludFhtbFVuaXRUZXN0KHN0ZDo6b3N0cmVh
bSogc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCkgewotICBmcHJpbnRmKG91dCwgIjw/eG1sIHZl
cnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCI/PlxuIik7Ci0gIGZwcmludGYob3V0LAot
ICAgICAgICAgICI8dGVzdHN1aXRlcyB0ZXN0cz1cIiVkXCIgZmFpbHVyZXM9XCIlZFwiIGRpc2Fi
bGVkPVwiJWRcIiAiCi0gICAgICAgICAgImVycm9ycz1cIjBcIiB0aW1lPVwiJXNcIiAiLAotICAg
ICAgICAgIHVuaXRfdGVzdC50b3RhbF90ZXN0X2NvdW50KCksCi0gICAgICAgICAgdW5pdF90ZXN0
LmZhaWxlZF90ZXN0X2NvdW50KCksCi0gICAgICAgICAgdW5pdF90ZXN0LmRpc2FibGVkX3Rlc3Rf
Y291bnQoKSwKLSAgICAgICAgICBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHModW5pdF90ZXN0
LmVsYXBzZWRfdGltZSgpKS5jX3N0cigpKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RzdWl0
ZXMgPSAidGVzdHN1aXRlcyI7CisKKyAgKnN0cmVhbSA8PCAiPD94bWwgdmVyc2lvbj1cIjEuMFwi
IGVuY29kaW5nPVwiVVRGLThcIj8+XG4iOworICAqc3RyZWFtIDw8ICI8IiA8PCBrVGVzdHN1aXRl
czsKKworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlcywgInRlc3RzIiwK
KyAgICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh1bml0X3Rlc3QucmVwb3J0
YWJsZV90ZXN0X2NvdW50KCkpKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3Rz
dWl0ZXMsICJmYWlsdXJlcyIsCisgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJp
bmcodW5pdF90ZXN0LmZhaWxlZF90ZXN0X2NvdW50KCkpKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRl
KAorICAgICAgc3RyZWFtLCBrVGVzdHN1aXRlcywgImRpc2FibGVkIiwKKyAgICAgIFN0cmVhbWFi
bGVUb1N0cmluZyh1bml0X3Rlc3QucmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkpKTsK
KyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJlcnJvcnMiLCAiMCIp
OworICBPdXRwdXRYbWxBdHRyaWJ1dGUoCisgICAgICBzdHJlYW0sIGtUZXN0c3VpdGVzLCAidGlt
ZXN0YW1wIiwKKyAgICAgIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKHVuaXRfdGVz
dC5zdGFydF90aW1lc3RhbXAoKSkpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVz
dHN1aXRlcywgInRpbWUiLAorICAgICAgICAgICAgICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlz
QXNTZWNvbmRzKHVuaXRfdGVzdC5lbGFwc2VkX3RpbWUoKSkpOworCiAgIGlmIChHVEVTVF9GTEFH
KHNodWZmbGUpKSB7Ci0gICAgZnByaW50ZihvdXQsICJyYW5kb21fc2VlZD1cIiVkXCIgIiwgdW5p
dF90ZXN0LnJhbmRvbV9zZWVkKCkpOworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtU
ZXN0c3VpdGVzLCAicmFuZG9tX3NlZWQiLAorICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW1h
YmxlVG9TdHJpbmcodW5pdF90ZXN0LnJhbmRvbV9zZWVkKCkpKTsKKyAgfQorICAqc3RyZWFtIDw8
IFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKHVuaXRfdGVzdC5hZF9ob2NfdGVzdF9yZXN1
bHQoKSk7CisKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJuYW1l
IiwgIkFsbFRlc3RzIik7CisgICpzdHJlYW0gPDwgIj5cbiI7CisKKyAgZm9yIChpbnQgaSA9IDA7
IGkgPCB1bml0X3Rlc3QudG90YWxfdGVzdF9jYXNlX2NvdW50KCk7ICsraSkgeworICAgIGlmICh1
bml0X3Rlc3QuR2V0VGVzdENhc2UoaSktPnJlcG9ydGFibGVfdGVzdF9jb3VudCgpID4gMCkKKyAg
ICAgIFByaW50WG1sVGVzdENhc2Uoc3RyZWFtLCAqdW5pdF90ZXN0LkdldFRlc3RDYXNlKGkpKTsK
ICAgfQotICBmcHJpbnRmKG91dCwgIm5hbWU9XCJBbGxUZXN0c1wiPlxuIik7Ci0gIGZvciAoaW50
IGkgPSAwOyBpIDwgdW5pdF90ZXN0LnRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpOyArK2kpCi0gICAg
UHJpbnRYbWxUZXN0Q2FzZShvdXQsICp1bml0X3Rlc3QuR2V0VGVzdENhc2UoaSkpOwotICBmcHJp
bnRmKG91dCwgIjwvdGVzdHN1aXRlcz5cbiIpOworICAqc3RyZWFtIDw8ICI8LyIgPDwga1Rlc3Rz
dWl0ZXMgPDwgIj5cbiI7Cit9CisKK3ZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmlu
dFhtbFRlc3RzTGlzdCgKKyAgICBzdGQ6Om9zdHJlYW0qIHN0cmVhbSwgY29uc3Qgc3RkOjp2ZWN0
b3I8VGVzdENhc2UqPiYgdGVzdF9jYXNlcykgeworICBjb25zdCBzdGQ6OnN0cmluZyBrVGVzdHN1
aXRlcyA9ICJ0ZXN0c3VpdGVzIjsKKworICAqc3RyZWFtIDw8ICI8P3htbCB2ZXJzaW9uPVwiMS4w
XCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz5cbiI7CisgICpzdHJlYW0gPDwgIjwiIDw8IGtUZXN0c3Vp
dGVzOworCisgIGludCB0b3RhbF90ZXN0cyA9IDA7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dGVzdF9jYXNlcy5zaXplKCk7ICsraSkgeworICAgIHRvdGFsX3Rlc3RzICs9IHRlc3RfY2FzZXNb
aV0tPnRvdGFsX3Rlc3RfY291bnQoKTsKKyAgfQorICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFt
LCBrVGVzdHN1aXRlcywgInRlc3RzIiwKKyAgICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVU
b1N0cmluZyh0b3RhbF90ZXN0cykpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVz
dHN1aXRlcywgIm5hbWUiLCAiQWxsVGVzdHMiKTsKKyAgKnN0cmVhbSA8PCAiPlxuIjsKKworICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBQcmlu
dFhtbFRlc3RDYXNlKHN0cmVhbSwgKnRlc3RfY2FzZXNbaV0pOworICB9CisgICpzdHJlYW0gPDwg
IjwvIiA8PCBrVGVzdHN1aXRlcyA8PCAiPlxuIjsKIH0KIAogLy8gUHJvZHVjZXMgYSBzdHJpbmcg
cmVwcmVzZW50aW5nIHRoZSB0ZXN0IHByb3BlcnRpZXMgaW4gYSByZXN1bHQgYXMgc3BhY2UKIC8v
IGRlbGltaXRlZCBYTUwgYXR0cmlidXRlcyBiYXNlZCBvbiB0aGUgcHJvcGVydHkga2V5PSJ2YWx1
ZSIgcGFpcnMuCi1TdHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpUZXN0UHJvcGVydGll
c0FzWG1sQXR0cmlidXRlcygKK3N0ZDo6c3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6
VGVzdFByb3BlcnRpZXNBc1htbEF0dHJpYnV0ZXMoCiAgICAgY29uc3QgVGVzdFJlc3VsdCYgcmVz
dWx0KSB7CiAgIE1lc3NhZ2UgYXR0cmlidXRlczsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1
bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpOyArK2kpIHsKQEAgLTMyOTksNTIgKzM4NTEsNTYyIEBA
IFN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRy
aWJ1dGVzKAogICByZXR1cm4gYXR0cmlidXRlcy5HZXRTdHJpbmcoKTsKIH0KIAordm9pZCBYbWxV
bml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dFhtbFRlc3RQcm9wZXJ0aWVzKAorICAgIHN0ZDo6
b3N0cmVhbSogc3RyZWFtLCBjb25zdCBUZXN0UmVzdWx0JiByZXN1bHQpIHsKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcga1Byb3BlcnRpZXMgPSAicHJvcGVydGllcyI7CisgIGNvbnN0IHN0ZDo6c3RyaW5n
IGtQcm9wZXJ0eSA9ICJwcm9wZXJ0eSI7CisKKyAgaWYgKHJlc3VsdC50ZXN0X3Byb3BlcnR5X2Nv
dW50KCkgPD0gMCkgeworICAgIHJldHVybjsKKyAgfQorCisgICpzdHJlYW0gPDwgIjwiIDw8IGtQ
cm9wZXJ0aWVzIDw8ICI+XG4iOworICBmb3IgKGludCBpID0gMDsgaSA8IHJlc3VsdC50ZXN0X3By
b3BlcnR5X2NvdW50KCk7ICsraSkgeworICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgcHJvcGVydHkg
PSByZXN1bHQuR2V0VGVzdFByb3BlcnR5KGkpOworICAgICpzdHJlYW0gPDwgIjwiIDw8IGtQcm9w
ZXJ0eTsKKyAgICAqc3RyZWFtIDw8ICIgbmFtZT1cIiIgPDwgRXNjYXBlWG1sQXR0cmlidXRlKHBy
b3BlcnR5LmtleSgpKSA8PCAiXCIiOworICAgICpzdHJlYW0gPDwgIiB2YWx1ZT1cIiIgPDwgRXNj
YXBlWG1sQXR0cmlidXRlKHByb3BlcnR5LnZhbHVlKCkpIDw8ICJcIiI7CisgICAgKnN0cmVhbSA8
PCAiLz5cbiI7CisgIH0KKyAgKnN0cmVhbSA8PCAiPC8iIDw8IGtQcm9wZXJ0aWVzIDw8ICI+XG4i
OworfQorCiAvLyBFbmQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyCiAKLS8vIENsYXNzIFNjb3Bl
ZFRyYWNlCisvLyBUaGlzIGNsYXNzIGdlbmVyYXRlcyBhbiBKU09OIG91dHB1dCBmaWxlLgorY2xh
c3MgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3Rl
bmVyIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIoY29u
c3QgY2hhciogb3V0cHV0X2ZpbGUpOwogCi0vLyBQdXNoZXMgdGhlIGdpdmVuIHNvdXJjZSBmaWxl
IGxvY2F0aW9uIGFuZCBtZXNzYWdlIG9udG8gYSBwZXItdGhyZWFkCi0vLyB0cmFjZSBzdGFjayBt
YWludGFpbmVkIGJ5IEdvb2dsZSBUZXN0LgotLy8gTCA8IFVuaXRUZXN0OjptdXRleF8KLVNjb3Bl
ZFRyYWNlOjpTY29wZWRUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgTWVz
c2FnZSYgbWVzc2FnZSkgewotICBUcmFjZUluZm8gdHJhY2U7Ci0gIHRyYWNlLmZpbGUgPSBmaWxl
OwotICB0cmFjZS5saW5lID0gbGluZTsKLSAgdHJhY2UubWVzc2FnZSA9IG1lc3NhZ2UuR2V0U3Ry
aW5nKCk7CisgIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3Qm
IHVuaXRfdGVzdCwgaW50IGl0ZXJhdGlvbik7CiAKLSAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkt
PlB1c2hHVGVzdFRyYWNlKHRyYWNlKTsKKyAgLy8gUHJpbnRzIGFuIEpTT04gc3VtbWFyeSBvZiBh
bGwgdW5pdCB0ZXN0cy4KKyAgc3RhdGljIHZvaWQgUHJpbnRKc29uVGVzdExpc3QoOjpzdGQ6Om9z
dHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8VGVzdENhc2UqPiYgdGVzdF9jYXNlcyk7CisKKyBwcml2YXRlOgorICAvLyBSZXR1
cm5zIGFuIEpTT04tZXNjYXBlZCBjb3B5IG9mIHRoZSBpbnB1dCBzdHJpbmcgc3RyLgorICBzdGF0
aWMgc3RkOjpzdHJpbmcgRXNjYXBlSnNvbihjb25zdCBzdGQ6OnN0cmluZyYgc3RyKTsKKworICAv
Ly8vIFZlcmlmaWVzIHRoYXQgdGhlIGdpdmVuIGF0dHJpYnV0ZSBiZWxvbmdzIHRvIHRoZSBnaXZl
biBlbGVtZW50IGFuZAorICAvLy8vIHN0cmVhbXMgdGhlIGF0dHJpYnV0ZSBhcyBKU09OLgorICBz
dGF0aWMgdm9pZCBPdXRwdXRKc29uS2V5KHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBlbGVtZW50X25hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbmRlbnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBjb21tYSA9IHRydWUpOworICBzdGF0aWMgdm9pZCBPdXRw
dXRKc29uS2V5KHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBlbGVtZW50X25hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBpbmRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjb21tYSA9
IHRydWUpOworCisgIC8vIFN0cmVhbXMgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdElu
Zm8gb2JqZWN0LgorICBzdGF0aWMgdm9pZCBPdXRwdXRKc29uVGVzdEluZm8oOjpzdGQ6Om9zdHJl
YW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHRlc3RfY2FzZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VGVzdEluZm8mIHRlc3RfaW5mbyk7CisKKyAgLy8gUHJpbnRzIGEgSlNPTiByZXByZXNlbnRhdGlv
biBvZiBhIFRlc3RDYXNlIG9iamVjdAorICBzdGF0aWMgdm9pZCBQcmludEpzb25UZXN0Q2FzZSg6
OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKTsKKworICAvLyBQcmludHMgYSBKU09OIHN1bW1hcnkg
b2YgdW5pdF90ZXN0IHRvIG91dHB1dCBzdHJlYW0gb3V0LgorICBzdGF0aWMgdm9pZCBQcmludEpz
b25Vbml0VGVzdCg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KTsKKworICAvLyBQcm9kdWNlcyBh
IHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHRlc3QgcHJvcGVydGllcyBpbiBhIHJlc3VsdCBhcwor
ICAvLyBhIEpTT04gZGljdGlvbmFyeS4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIFRlc3RQcm9wZXJ0
aWVzQXNKc29uKGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbmRlbnQpOworCisgIC8v
IFRoZSBvdXRwdXQgZmlsZS4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgb3V0cHV0X2ZpbGVfOworCisg
IEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRl
cik7Cit9OworCisvLyBDcmVhdGVzIGEgbmV3IEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIuCitK
c29uVW5pdFRlc3RSZXN1bHRQcmludGVyOjpKc29uVW5pdFRlc3RSZXN1bHRQcmludGVyKGNvbnN0
IGNoYXIqIG91dHB1dF9maWxlKQorICAgIDogb3V0cHV0X2ZpbGVfKG91dHB1dF9maWxlKSB7Cisg
IGlmIChvdXRwdXRfZmlsZV8uZW1wdHkoKSkgeworICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICJK
U09OIG91dHB1dCBmaWxlIG1heSBub3QgYmUgbnVsbCI7CisgIH0KIH0KIAotLy8gUG9wcyB0aGUg
aW5mbyBwdXNoZWQgYnkgdGhlIGMndG9yLgotLy8gTCA8IFVuaXRUZXN0OjptdXRleF8KLVNjb3Bl
ZFRyYWNlOjp+U2NvcGVkVHJhY2UoKSB7Ci0gIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5Qb3BH
VGVzdFRyYWNlKCk7Cit2b2lkIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdEl0ZXJh
dGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgLyppdGVyYXRpb24qLykgeworICBGSUxF
KiBqc29ub3V0ID0gT3BlbkZpbGVGb3JXcml0aW5nKG91dHB1dF9maWxlXyk7CisgIHN0ZDo6c3Ry
aW5nc3RyZWFtIHN0cmVhbTsKKyAgUHJpbnRKc29uVW5pdFRlc3QoJnN0cmVhbSwgdW5pdF90ZXN0
KTsKKyAgZnByaW50Zihqc29ub3V0LCAiJXMiLCBTdHJpbmdTdHJlYW1Ub1N0cmluZygmc3RyZWFt
KS5jX3N0cigpKTsKKyAgZmNsb3NlKGpzb25vdXQpOwogfQogCisvLyBSZXR1cm5zIGFuIEpTT04t
ZXNjYXBlZCBjb3B5IG9mIHRoZSBpbnB1dCBzdHJpbmcgc3RyLgorc3RkOjpzdHJpbmcgSnNvblVu
aXRUZXN0UmVzdWx0UHJpbnRlcjo6RXNjYXBlSnNvbihjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7
CisgIE1lc3NhZ2UgbTsKIAotLy8gY2xhc3MgT3NTdGFja1RyYWNlR2V0dGVyCisgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc3RyLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgY2hhciBjaCA9IHN0
cltpXTsKKyAgICBzd2l0Y2ggKGNoKSB7CisgICAgICBjYXNlICdcXCc6CisgICAgICBjYXNlICci
JzoKKyAgICAgIGNhc2UgJy8nOgorICAgICAgICBtIDw8ICdcXCcgPDwgY2g7CisgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSAnXGInOgorICAgICAgICBtIDw8ICJcXGIiOworICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgJ1x0JzoKKyAgICAgICAgbSA8PCAiXFx0IjsKKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlICdcbic6CisgICAgICAgIG0gPDwgIlxcbiI7CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSAnXGYnOgorICAgICAgICBtIDw8ICJcXGYiOworICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgbSA8PCAiXFxyIjsKKyAgICAgICAgYnJlYWs7CisgICAg
ICBkZWZhdWx0OgorICAgICAgICBpZiAoY2ggPCAnICcpIHsKKyAgICAgICAgICBtIDw8ICJcXHUw
MCIgPDwgU3RyaW5nOjpGb3JtYXRCeXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgbSA8PCBjaDsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICB9CisgIH0KIAotLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0
cmFjZSBhcyBhIFN0cmluZy4gIFBhcmFtZXRlcnM6Ci0vLwotLy8gICBtYXhfZGVwdGggIC0gdGhl
IG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZAotLy8gICAgICAg
ICAgICAgICAgaW4gdGhlIHRyYWNlLgotLy8gICBza2lwX2NvdW50IC0gdGhlIG51bWJlciBvZiB0
b3AgZnJhbWVzIHRvIGJlIHNraXBwZWQ7IGRvZXNuJ3QgY291bnQKLS8vICAgICAgICAgICAgICAg
IGFnYWluc3QgbWF4X2RlcHRoLgotLy8KLS8vIEwgPCBtdXRleF8KLS8vIFdlIHVzZSAiTCA8IG11
dGV4XyIgdG8gZGVub3RlIHRoYXQgdGhlIGZ1bmN0aW9uIG1heSBhY3F1aXJlIG11dGV4Xy4KLVN0
cmluZyBPc1N0YWNrVHJhY2VHZXR0ZXI6OkN1cnJlbnRTdGFja1RyYWNlKGludCwgaW50KSB7Ci0g
IHJldHVybiBTdHJpbmcoIiIpOworICByZXR1cm4gbS5HZXRTdHJpbmcoKTsKIH0KIAotLy8gTCA8
IG11dGV4Xwotdm9pZCBPc1N0YWNrVHJhY2VHZXR0ZXI6OlVwb25MZWF2aW5nR1Rlc3QoKSB7Cisv
LyBUaGUgZm9sbG93aW5nIHJvdXRpbmVzIGdlbmVyYXRlIGFuIEpTT04gcmVwcmVzZW50YXRpb24g
b2YgYSBVbml0VGVzdAorLy8gb2JqZWN0LgorCisvLyBGb3JtYXRzIHRoZSBnaXZlbiB0aW1lIGlu
IG1pbGxpc2Vjb25kcyBhcyBzZWNvbmRzLgorc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFRpbWVJ
bk1pbGxpc0FzRHVyYXRpb24oVGltZUluTWlsbGlzIG1zKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJl
YW0gc3M7CisgIHNzIDw8IChzdGF0aWNfY2FzdDxkb3VibGU+KG1zKSAqIDFlLTMpIDw8ICJzIjsK
KyAgcmV0dXJuIHNzLnN0cigpOwogfQogCi1jb25zdCBjaGFyKiBjb25zdAotT3NTdGFja1RyYWNl
R2V0dGVyOjprRWxpZGVkRnJhbWVzTWFya2VyID0KKy8vIENvbnZlcnRzIHRoZSBnaXZlbiBlcG9j
aCB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byBhIGRhdGUgc3RyaW5nIGluIHRoZQorLy8gUkZDMzMz
OSBmb3JtYXQsIHdpdGhvdXQgdGhlIHRpbWV6b25lIGluZm9ybWF0aW9uLgorc3RhdGljIHN0ZDo6
c3RyaW5nIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNSRkMzMzM5KFRpbWVJbk1pbGxpcyBtcykg
eworICBzdHJ1Y3QgdG0gdGltZV9zdHJ1Y3Q7CisgIGlmICghUG9ydGFibGVMb2NhbHRpbWUoc3Rh
dGljX2Nhc3Q8dGltZV90PihtcyAvIDEwMDApLCAmdGltZV9zdHJ1Y3QpKQorICAgIHJldHVybiAi
IjsKKyAgLy8gWVlZWS1NTS1ERFRoaDptbTpzcworICByZXR1cm4gU3RyZWFtYWJsZVRvU3RyaW5n
KHRpbWVfc3RydWN0LnRtX3llYXIgKyAxOTAwKSArICItIiArCisgICAgICBTdHJpbmc6OkZvcm1h
dEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9tb24gKyAxKSArICItIiArCisgICAgICBTdHJpbmc6
OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9tZGF5KSArICJUIiArCisgICAgICBTdHJp
bmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9ob3VyKSArICI6IiArCisgICAgICBT
dHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9taW4pICsgIjoiICsKKyAgICAg
IFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX3NlYykgKyAiWiI7Cit9CisK
K3N0YXRpYyBpbmxpbmUgc3RkOjpzdHJpbmcgSW5kZW50KGludCB3aWR0aCkgeworICByZXR1cm4g
c3RkOjpzdHJpbmcod2lkdGgsICcgJyk7Cit9CisKK3ZvaWQgSnNvblVuaXRUZXN0UmVzdWx0UHJp
bnRlcjo6T3V0cHV0SnNvbktleSgKKyAgICBzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyYgZWxlbWVudF9uYW1lLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1l
LAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYg
aW5kZW50LAorICAgIGJvb2wgY29tbWEpIHsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+JiBhbGxvd2VkX25hbWVzID0KKyAgICAgIEdldFJlc2VydmVkQXR0cmlidXRlc0ZvckVsZW1l
bnQoZWxlbWVudF9uYW1lKTsKKworICBHVEVTVF9DSEVDS18oc3RkOjpmaW5kKGFsbG93ZWRfbmFt
ZXMuYmVnaW4oKSwgYWxsb3dlZF9uYW1lcy5lbmQoKSwgbmFtZSkgIT0KKyAgICAgICAgICAgICAg
ICAgICBhbGxvd2VkX25hbWVzLmVuZCgpKQorICAgICAgPDwgIktleSBcIiIgPDwgbmFtZSA8PCAi
XCIgaXMgbm90IGFsbG93ZWQgZm9yIHZhbHVlIFwiIiA8PCBlbGVtZW50X25hbWUKKyAgICAgIDw8
ICJcIi4iOworCisgICpzdHJlYW0gPDwgaW5kZW50IDw8ICJcIiIgPDwgbmFtZSA8PCAiXCI6IFwi
IiA8PCBFc2NhcGVKc29uKHZhbHVlKSA8PCAiXCIiOworICBpZiAoY29tbWEpCisgICAgKnN0cmVh
bSA8PCAiLFxuIjsKK30KKwordm9pZCBKc29uVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPdXRwdXRK
c29uS2V5KAorICAgIHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBlbGVtZW50X25hbWUsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCisgICAgaW50IHZh
bHVlLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbmRlbnQsCisgICAgYm9vbCBjb21tYSkgewor
ICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGFsbG93ZWRfbmFtZXMgPQorICAgICAg
R2V0UmVzZXJ2ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudChlbGVtZW50X25hbWUpOworCisgIEdURVNU
X0NIRUNLXyhzdGQ6OmZpbmQoYWxsb3dlZF9uYW1lcy5iZWdpbigpLCBhbGxvd2VkX25hbWVzLmVu
ZCgpLCBuYW1lKSAhPQorICAgICAgICAgICAgICAgICAgIGFsbG93ZWRfbmFtZXMuZW5kKCkpCisg
ICAgICA8PCAiS2V5IFwiIiA8PCBuYW1lIDw8ICJcIiBpcyBub3QgYWxsb3dlZCBmb3IgdmFsdWUg
XCIiIDw8IGVsZW1lbnRfbmFtZQorICAgICAgPDwgIlwiLiI7CisKKyAgKnN0cmVhbSA8PCBpbmRl
bnQgPDwgIlwiIiA8PCBuYW1lIDw8ICJcIjogIiA8PCBTdHJlYW1hYmxlVG9TdHJpbmcodmFsdWUp
OworICBpZiAoY29tbWEpCisgICAgKnN0cmVhbSA8PCAiLFxuIjsKK30KKworLy8gUHJpbnRzIGEg
SlNPTiByZXByZXNlbnRhdGlvbiBvZiBhIFRlc3RJbmZvIG9iamVjdC4KK3ZvaWQgSnNvblVuaXRU
ZXN0UmVzdWx0UHJpbnRlcjo6T3V0cHV0SnNvblRlc3RJbmZvKDo6c3RkOjpvc3RyZWFtKiBzdHJl
YW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKKyAgY29u
c3QgVGVzdFJlc3VsdCYgcmVzdWx0ID0gKnRlc3RfaW5mby5yZXN1bHQoKTsKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcga1Rlc3RjYXNlID0gInRlc3RjYXNlIjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga0lu
ZGVudCA9IEluZGVudCgxMCk7CisKKyAgKnN0cmVhbSA8PCBJbmRlbnQoOCkgPDwgIntcbiI7Cisg
IE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdGNhc2UsICJuYW1lIiwgdGVzdF9pbmZvLm5hbWUo
KSwga0luZGVudCk7CisKKyAgaWYgKHRlc3RfaW5mby52YWx1ZV9wYXJhbSgpICE9IE5VTEwpIHsK
KyAgICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RjYXNlLCAidmFsdWVfcGFyYW0iLAorICAg
ICAgICAgICAgICAgICAgdGVzdF9pbmZvLnZhbHVlX3BhcmFtKCksIGtJbmRlbnQpOworICB9Cisg
IGlmICh0ZXN0X2luZm8udHlwZV9wYXJhbSgpICE9IE5VTEwpIHsKKyAgICBPdXRwdXRKc29uS2V5
KHN0cmVhbSwga1Rlc3RjYXNlLCAidHlwZV9wYXJhbSIsIHRlc3RfaW5mby50eXBlX3BhcmFtKCks
CisgICAgICAgICAgICAgICAgICBrSW5kZW50KTsKKyAgfQorICBpZiAoR1RFU1RfRkxBRyhsaXN0
X3Rlc3RzKSkgeworICAgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdGNhc2UsICJmaWxlIiwg
dGVzdF9pbmZvLmZpbGUoKSwga0luZGVudCk7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtU
ZXN0Y2FzZSwgImxpbmUiLCB0ZXN0X2luZm8ubGluZSgpLCBrSW5kZW50LCBmYWxzZSk7CisgICAg
KnN0cmVhbSA8PCAiXG4iIDw8IEluZGVudCg4KSA8PCAifSI7CisgICAgcmV0dXJuOworICB9CisK
KyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0Y2FzZSwgInN0YXR1cyIsCisgICAgICAgICAg
ICAgICAgdGVzdF9pbmZvLnNob3VsZF9ydW4oKSA/ICJSVU4iIDogIk5PVFJVTiIsIGtJbmRlbnQp
OworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RjYXNlLCAidGltZSIsCisgICAgICAgICAg
ICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNEdXJhdGlvbihyZXN1bHQuZWxhcHNlZF90aW1lKCkp
LCBrSW5kZW50KTsKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0Y2FzZSwgImNsYXNzbmFt
ZSIsIHRlc3RfY2FzZV9uYW1lLCBrSW5kZW50LCBmYWxzZSk7CisgICpzdHJlYW0gPDwgVGVzdFBy
b3BlcnRpZXNBc0pzb24ocmVzdWx0LCBrSW5kZW50KTsKKworICBpbnQgZmFpbHVyZXMgPSAwOwor
ICBmb3IgKGludCBpID0gMDsgaSA8IHJlc3VsdC50b3RhbF9wYXJ0X2NvdW50KCk7ICsraSkgewor
ICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBwYXJ0ID0gcmVzdWx0LkdldFRlc3RQYXJ0UmVzdWx0
KGkpOworICAgIGlmIChwYXJ0LmZhaWxlZCgpKSB7CisgICAgICAqc3RyZWFtIDw8ICIsXG4iOwor
ICAgICAgaWYgKCsrZmFpbHVyZXMgPT0gMSkgeworICAgICAgICAqc3RyZWFtIDw8IGtJbmRlbnQg
PDwgIlwiIiA8PCAiZmFpbHVyZXMiIDw8ICJcIjogW1xuIjsKKyAgICAgIH0KKyAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIGxvY2F0aW9uID0KKyAgICAgICAgICBpbnRlcm5hbDo6Rm9ybWF0Q29tcGls
ZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvbihwYXJ0LmZpbGVfbmFtZSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnQubGluZV9u
dW1iZXIoKSk7CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyBtZXNzYWdlID0gRXNjYXBlSnNvbihs
b2NhdGlvbiArICJcbiIgKyBwYXJ0Lm1lc3NhZ2UoKSk7CisgICAgICAqc3RyZWFtIDw8IGtJbmRl
bnQgPDwgIiAge1xuIgorICAgICAgICAgICAgICA8PCBrSW5kZW50IDw8ICIgICAgXCJmYWlsdXJl
XCI6IFwiIiA8PCBtZXNzYWdlIDw8ICJcIixcbiIKKyAgICAgICAgICAgICAgPDwga0luZGVudCA8
PCAiICAgIFwidHlwZVwiOiBcIlwiXG4iCisgICAgICAgICAgICAgIDw8IGtJbmRlbnQgPDwgIiAg
fSI7CisgICAgfQorICB9CisKKyAgaWYgKGZhaWx1cmVzID4gMCkKKyAgICAqc3RyZWFtIDw8ICJc
biIgPDwga0luZGVudCA8PCAiXSI7CisgICpzdHJlYW0gPDwgIlxuIiA8PCBJbmRlbnQoOCkgPDwg
In0iOworfQorCisvLyBQcmludHMgYW4gSlNPTiByZXByZXNlbnRhdGlvbiBvZiBhIFRlc3RDYXNl
IG9iamVjdAordm9pZCBKc29uVW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludEpzb25UZXN0Q2Fz
ZShzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSkgeworICBjb25zdCBz
dGQ6OnN0cmluZyBrVGVzdHN1aXRlID0gInRlc3RzdWl0ZSI7CisgIGNvbnN0IHN0ZDo6c3RyaW5n
IGtJbmRlbnQgPSBJbmRlbnQoNik7CisKKyAgKnN0cmVhbSA8PCBJbmRlbnQoNCkgPDwgIntcbiI7
CisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRlLCAibmFtZSIsIHRlc3RfY2FzZS5u
YW1lKCksIGtJbmRlbnQpOworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZSwgInRl
c3RzIiwgdGVzdF9jYXNlLnJlcG9ydGFibGVfdGVzdF9jb3VudCgpLAorICAgICAgICAgICAgICAg
IGtJbmRlbnQpOworICBpZiAoIUdURVNUX0ZMQUcobGlzdF90ZXN0cykpIHsKKyAgICBPdXRwdXRK
c29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZSwgImZhaWx1cmVzIiwgdGVzdF9jYXNlLmZhaWxlZF90
ZXN0X2NvdW50KCksCisgICAgICAgICAgICAgICAgICBrSW5kZW50KTsKKyAgICBPdXRwdXRKc29u
S2V5KHN0cmVhbSwga1Rlc3RzdWl0ZSwgImRpc2FibGVkIiwKKyAgICAgICAgICAgICAgICAgIHRl
c3RfY2FzZS5yZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSwga0luZGVudCk7CisgICAg
T3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGUsICJlcnJvcnMiLCAwLCBrSW5kZW50KTsK
KyAgICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZSwgInRpbWUiLAorICAgICAgICAg
ICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNEdXJhdGlvbih0ZXN0X2Nhc2UuZWxhcHNlZF90
aW1lKCkpLAorICAgICAgICAgICAgICAgICAga0luZGVudCwgZmFsc2UpOworICAgICpzdHJlYW0g
PDwgVGVzdFByb3BlcnRpZXNBc0pzb24odGVzdF9jYXNlLmFkX2hvY190ZXN0X3Jlc3VsdCgpLCBr
SW5kZW50KQorICAgICAgICAgICAgPDwgIixcbiI7CisgIH0KKworICAqc3RyZWFtIDw8IGtJbmRl
bnQgPDwgIlwiIiA8PCBrVGVzdHN1aXRlIDw8ICJcIjogW1xuIjsKKworICBib29sIGNvbW1hID0g
ZmFsc2U7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVzdF9jYXNlLnRvdGFsX3Rlc3RfY291bnQo
KTsgKytpKSB7CisgICAgaWYgKHRlc3RfY2FzZS5HZXRUZXN0SW5mbyhpKS0+aXNfcmVwb3J0YWJs
ZSgpKSB7CisgICAgICBpZiAoY29tbWEpIHsKKyAgICAgICAgKnN0cmVhbSA8PCAiLFxuIjsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIGNvbW1hID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIE91dHB1
dEpzb25UZXN0SW5mbyhzdHJlYW0sIHRlc3RfY2FzZS5uYW1lKCksICp0ZXN0X2Nhc2UuR2V0VGVz
dEluZm8oaSkpOworICAgIH0KKyAgfQorICAqc3RyZWFtIDw8ICJcbiIgPDwga0luZGVudCA8PCAi
XVxuIiA8PCBJbmRlbnQoNCkgPDwgIn0iOworfQorCisvLyBQcmludHMgYSBKU09OIHN1bW1hcnkg
b2YgdW5pdF90ZXN0IHRvIG91dHB1dCBzdHJlYW0gb3V0Lgordm9pZCBKc29uVW5pdFRlc3RSZXN1
bHRQcmludGVyOjpQcmludEpzb25Vbml0VGVzdChzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pdFRl
c3QmIHVuaXRfdGVzdCkgeworICBjb25zdCBzdGQ6OnN0cmluZyBrVGVzdHN1aXRlcyA9ICJ0ZXN0
c3VpdGVzIjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga0luZGVudCA9IEluZGVudCgyKTsKKyAgKnN0
cmVhbSA8PCAie1xuIjsKKworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0
ZXN0cyIsIHVuaXRfdGVzdC5yZXBvcnRhYmxlX3Rlc3RfY291bnQoKSwKKyAgICAgICAgICAgICAg
ICBrSW5kZW50KTsKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAiZmFpbHVy
ZXMiLCB1bml0X3Rlc3QuZmFpbGVkX3Rlc3RfY291bnQoKSwKKyAgICAgICAgICAgICAgICBrSW5k
ZW50KTsKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAiZGlzYWJsZWQiLAor
ICAgICAgICAgICAgICAgIHVuaXRfdGVzdC5yZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQo
KSwga0luZGVudCk7CisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRlcywgImVycm9y
cyIsIDAsIGtJbmRlbnQpOworICBpZiAoR1RFU1RfRkxBRyhzaHVmZmxlKSkgeworICAgIE91dHB1
dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRlcywgInJhbmRvbV9zZWVkIiwgdW5pdF90ZXN0LnJh
bmRvbV9zZWVkKCksCisgICAgICAgICAgICAgICAgICBrSW5kZW50KTsKKyAgfQorICBPdXRwdXRK
c29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0aW1lc3RhbXAiLAorICAgICAgICAgICAgICAg
IEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNSRkMzMzM5KHVuaXRfdGVzdC5zdGFydF90aW1lc3Rh
bXAoKSksCisgICAgICAgICAgICAgICAga0luZGVudCk7CisgIE91dHB1dEpzb25LZXkoc3RyZWFt
LCBrVGVzdHN1aXRlcywgInRpbWUiLAorICAgICAgICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxp
c0FzRHVyYXRpb24odW5pdF90ZXN0LmVsYXBzZWRfdGltZSgpKSwga0luZGVudCwKKyAgICAgICAg
ICAgICAgICBmYWxzZSk7CisKKyAgKnN0cmVhbSA8PCBUZXN0UHJvcGVydGllc0FzSnNvbih1bml0
X3Rlc3QuYWRfaG9jX3Rlc3RfcmVzdWx0KCksIGtJbmRlbnQpCisgICAgICAgICAgPDwgIixcbiI7
CisKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAibmFtZSIsICJBbGxUZXN0
cyIsIGtJbmRlbnQpOworICAqc3RyZWFtIDw8IGtJbmRlbnQgPDwgIlwiIiA8PCBrVGVzdHN1aXRl
cyA8PCAiXCI6IFtcbiI7CisKKyAgYm9vbCBjb21tYSA9IGZhbHNlOworICBmb3IgKGludCBpID0g
MDsgaSA8IHVuaXRfdGVzdC50b3RhbF90ZXN0X2Nhc2VfY291bnQoKTsgKytpKSB7CisgICAgaWYg
KHVuaXRfdGVzdC5HZXRUZXN0Q2FzZShpKS0+cmVwb3J0YWJsZV90ZXN0X2NvdW50KCkgPiAwKSB7
CisgICAgICBpZiAoY29tbWEpIHsKKyAgICAgICAgKnN0cmVhbSA8PCAiLFxuIjsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIGNvbW1hID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIFByaW50SnNvblRl
c3RDYXNlKHN0cmVhbSwgKnVuaXRfdGVzdC5HZXRUZXN0Q2FzZShpKSk7CisgICAgfQorICB9CisK
KyAgKnN0cmVhbSA8PCAiXG4iIDw8IGtJbmRlbnQgPDwgIl1cbiIgPDwgIn1cbiI7Cit9CisKK3Zv
aWQgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRKc29uVGVzdExpc3QoCisgICAgc3Rk
Ojpvc3RyZWFtKiBzdHJlYW0sIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RDYXNlKj4mIHRlc3RfY2Fz
ZXMpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RzdWl0ZXMgPSAidGVzdHN1aXRlcyI7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGtJbmRlbnQgPSBJbmRlbnQoMik7CisgICpzdHJlYW0gPDwgIntc
biI7CisgIGludCB0b3RhbF90ZXN0cyA9IDA7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGVz
dF9jYXNlcy5zaXplKCk7ICsraSkgeworICAgIHRvdGFsX3Rlc3RzICs9IHRlc3RfY2FzZXNbaV0t
PnRvdGFsX3Rlc3RfY291bnQoKTsKKyAgfQorICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3Rz
dWl0ZXMsICJ0ZXN0cyIsIHRvdGFsX3Rlc3RzLCBrSW5kZW50KTsKKworICBPdXRwdXRKc29uS2V5
KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJuYW1lIiwgIkFsbFRlc3RzIiwga0luZGVudCk7CisgICpz
dHJlYW0gPDwga0luZGVudCA8PCAiXCIiIDw8IGtUZXN0c3VpdGVzIDw8ICJcIjogW1xuIjsKKwor
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBp
ZiAoaSAhPSAwKSB7CisgICAgICAqc3RyZWFtIDw8ICIsXG4iOworICAgIH0KKyAgICBQcmludEpz
b25UZXN0Q2FzZShzdHJlYW0sICp0ZXN0X2Nhc2VzW2ldKTsKKyAgfQorCisgICpzdHJlYW0gPDwg
IlxuIgorICAgICAgICAgIDw8IGtJbmRlbnQgPDwgIl1cbiIKKyAgICAgICAgICA8PCAifVxuIjsK
K30KKy8vIFByb2R1Y2VzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdGVzdCBwcm9wZXJ0aWVz
IGluIGEgcmVzdWx0IGFzCisvLyBhIEpTT04gZGljdGlvbmFyeS4KK3N0ZDo6c3RyaW5nIEpzb25V
bml0VGVzdFJlc3VsdFByaW50ZXI6OlRlc3RQcm9wZXJ0aWVzQXNKc29uKAorICAgIGNvbnN0IFRl
c3RSZXN1bHQmIHJlc3VsdCwgY29uc3Qgc3RkOjpzdHJpbmcmIGluZGVudCkgeworICBNZXNzYWdl
IGF0dHJpYnV0ZXM7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0LnRlc3RfcHJvcGVydHlf
Y291bnQoKTsgKytpKSB7CisgICAgY29uc3QgVGVzdFByb3BlcnR5JiBwcm9wZXJ0eSA9IHJlc3Vs
dC5HZXRUZXN0UHJvcGVydHkoaSk7CisgICAgYXR0cmlidXRlcyA8PCAiLFxuIiA8PCBpbmRlbnQg
PDwgIlwiIiA8PCBwcm9wZXJ0eS5rZXkoKSA8PCAiXCI6ICIKKyAgICAgICAgICAgICAgIDw8ICJc
IiIgPDwgRXNjYXBlSnNvbihwcm9wZXJ0eS52YWx1ZSgpKSA8PCAiXCIiOworICB9CisgIHJldHVy
biBhdHRyaWJ1dGVzLkdldFN0cmluZygpOworfQorCisvLyBFbmQgSnNvblVuaXRUZXN0UmVzdWx0
UHJpbnRlcgorCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworCisvLyBDaGVja3MgaWYg
c3RyIGNvbnRhaW5zICc9JywgJyYnLCAnJScgb3IgJ1xuJyBjaGFyYWN0ZXJzLiBJZiB5ZXMsCisv
LyByZXBsYWNlcyB0aGVtIGJ5ICIleHgiIHdoZXJlIHh4IGlzIHRoZWlyIGhleGFkZWNpbWFsIHZh
bHVlLiBGb3IKKy8vIGV4YW1wbGUsIHJlcGxhY2VzICI9IiB3aXRoICIlM0QiLiAgVGhpcyBhbGdv
cml0aG0gaXMgTyhzdHJsZW4oc3RyKSkKKy8vIGluIGJvdGggdGltZSBhbmQgc3BhY2UgLS0gaW1w
b3J0YW50IGFzIHRoZSBpbnB1dCBzdHIgbWF5IGNvbnRhaW4gYW4KKy8vIGFyYml0cmFyaWx5IGxv
bmcgdGVzdCBmYWlsdXJlIG1lc3NhZ2UgYW5kIHN0YWNrIHRyYWNlLgorc3RkOjpzdHJpbmcgU3Ry
ZWFtaW5nTGlzdGVuZXI6OlVybEVuY29kZShjb25zdCBjaGFyKiBzdHIpIHsKKyAgc3RkOjpzdHJp
bmcgcmVzdWx0OworICByZXN1bHQucmVzZXJ2ZShzdHJsZW4oc3RyKSArIDEpOworICBmb3IgKGNo
YXIgY2ggPSAqc3RyOyBjaCAhPSAnXDAnOyBjaCA9ICorK3N0cikgeworICAgIHN3aXRjaCAoY2gp
IHsKKyAgICAgIGNhc2UgJyUnOgorICAgICAgY2FzZSAnPSc6CisgICAgICBjYXNlICcmJzoKKyAg
ICAgIGNhc2UgJ1xuJzoKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiJSIgKyBTdHJpbmc6OkZvcm1h
dEJ5dGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSk7CisgICAgICAgIGJyZWFrOwor
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmVzdWx0LnB1c2hfYmFjayhjaCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFN0cmVhbWluZ0xp
c3RlbmVyOjpTb2NrZXRXcml0ZXI6Ok1ha2VDb25uZWN0aW9uKCkgeworICBHVEVTVF9DSEVDS18o
c29ja2ZkXyA9PSAtMSkKKyAgICAgIDw8ICJNYWtlQ29ubmVjdGlvbigpIGNhbid0IGJlIGNhbGxl
ZCB3aGVuIHRoZXJlIGlzIGFscmVhZHkgYSBjb25uZWN0aW9uLiI7CisKKyAgYWRkcmluZm8gaGlu
dHM7CisgIG1lbXNldCgmaGludHMsIDAsIHNpemVvZihoaW50cykpOworICBoaW50cy5haV9mYW1p
bHkgPSBBRl9VTlNQRUM7ICAgIC8vIFRvIGFsbG93IGJvdGggSVB2NCBhbmQgSVB2NiBhZGRyZXNz
ZXMuCisgIGhpbnRzLmFpX3NvY2t0eXBlID0gU09DS19TVFJFQU07CisgIGFkZHJpbmZvKiBzZXJ2
aW5mbyA9IE5VTEw7CisKKyAgLy8gVXNlIHRoZSBnZXRhZGRyaW5mbygpIHRvIGdldCBhIGxpbmtl
ZCBsaXN0IG9mIElQIGFkZHJlc3NlcyBmb3IKKyAgLy8gdGhlIGdpdmVuIGhvc3QgbmFtZS4KKyAg
Y29uc3QgaW50IGVycm9yX251bSA9IGdldGFkZHJpbmZvKAorICAgICAgaG9zdF9uYW1lXy5jX3N0
cigpLCBwb3J0X251bV8uY19zdHIoKSwgJmhpbnRzLCAmc2VydmluZm8pOworICBpZiAoZXJyb3Jf
bnVtICE9IDApIHsKKyAgICBHVEVTVF9MT0dfKFdBUk5JTkcpIDw8ICJzdHJlYW1fcmVzdWx0X3Rv
OiBnZXRhZGRyaW5mbygpIGZhaWxlZDogIgorICAgICAgICAgICAgICAgICAgICAgICAgPDwgZ2Fp
X3N0cmVycm9yKGVycm9yX251bSk7CisgIH0KKworICAvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBy
ZXN1bHRzIGFuZCBjb25uZWN0IHRvIHRoZSBmaXJzdCB3ZSBjYW4uCisgIGZvciAoYWRkcmluZm8q
IGN1cl9hZGRyID0gc2VydmluZm87IHNvY2tmZF8gPT0gLTEgJiYgY3VyX2FkZHIgIT0gTlVMTDsK
KyAgICAgICBjdXJfYWRkciA9IGN1cl9hZGRyLT5haV9uZXh0KSB7CisgICAgc29ja2ZkXyA9IHNv
Y2tldCgKKyAgICAgICAgY3VyX2FkZHItPmFpX2ZhbWlseSwgY3VyX2FkZHItPmFpX3NvY2t0eXBl
LCBjdXJfYWRkci0+YWlfcHJvdG9jb2wpOworICAgIGlmIChzb2NrZmRfICE9IC0xKSB7CisgICAg
ICAvLyBDb25uZWN0IHRoZSBjbGllbnQgc29ja2V0IHRvIHRoZSBzZXJ2ZXIgc29ja2V0LgorICAg
ICAgaWYgKGNvbm5lY3Qoc29ja2ZkXywgY3VyX2FkZHItPmFpX2FkZHIsIGN1cl9hZGRyLT5haV9h
ZGRybGVuKSA9PSAtMSkgeworICAgICAgICBjbG9zZShzb2NrZmRfKTsKKyAgICAgICAgc29ja2Zk
XyA9IC0xOworICAgICAgfQorICAgIH0KKyAgfQorCisgIGZyZWVhZGRyaW5mbyhzZXJ2aW5mbyk7
ICAvLyBhbGwgZG9uZSB3aXRoIHRoaXMgc3RydWN0dXJlCisKKyAgaWYgKHNvY2tmZF8gPT0gLTEp
IHsKKyAgICBHVEVTVF9MT0dfKFdBUk5JTkcpIDw8ICJzdHJlYW1fcmVzdWx0X3RvOiBmYWlsZWQg
dG8gY29ubmVjdCB0byAiCisgICAgICAgICAgICAgICAgICAgICAgICA8PCBob3N0X25hbWVfIDw8
ICI6IiA8PCBwb3J0X251bV87CisgIH0KK30KKworLy8gRW5kIG9mIGNsYXNzIFN0cmVhbWluZyBM
aXN0ZW5lcgorI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfXworCisvLyBjbGFz
cyBPc1N0YWNrVHJhY2VHZXR0ZXIKKworY29uc3QgY2hhciogY29uc3QgT3NTdGFja1RyYWNlR2V0
dGVySW50ZXJmYWNlOjprRWxpZGVkRnJhbWVzTWFya2VyID0KICAgICAiLi4uICIgR1RFU1RfTkFN
RV8gIiBpbnRlcm5hbCBmcmFtZXMgLi4uIjsKIAorc3RkOjpzdHJpbmcgT3NTdGFja1RyYWNlR2V0
dGVyOjpDdXJyZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCkKKyAg
ICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pIHsKKyNpZiBHVEVTVF9IQVNfQUJTTAorICBz
dGQ6OnN0cmluZyByZXN1bHQ7CisKKyAgaWYgKG1heF9kZXB0aCA8PSAwKSB7CisgICAgcmV0dXJu
IHJlc3VsdDsKKyAgfQorCisgIG1heF9kZXB0aCA9IHN0ZDo6bWluKG1heF9kZXB0aCwga01heFN0
YWNrVHJhY2VEZXB0aCk7CisKKyAgc3RkOjp2ZWN0b3I8dm9pZCo+IHJhd19zdGFjayhtYXhfZGVw
dGgpOworICAvLyBTa2lwcyB0aGUgZnJhbWVzIHJlcXVlc3RlZCBieSB0aGUgY2FsbGVyLCBwbHVz
IHRoaXMgZnVuY3Rpb24uCisgIGNvbnN0IGludCByYXdfc3RhY2tfc2l6ZSA9CisgICAgICBhYnNs
OjpHZXRTdGFja1RyYWNlKCZyYXdfc3RhY2tbMF0sIG1heF9kZXB0aCwgc2tpcF9jb3VudCArIDEp
OworCisgIHZvaWQqIGNhbGxlcl9mcmFtZSA9IG51bGxwdHI7CisgIHsKKyAgICBNdXRleExvY2sg
bG9jaygmbXV0ZXhfKTsKKyAgICBjYWxsZXJfZnJhbWUgPSBjYWxsZXJfZnJhbWVfOworICB9CisK
KyAgZm9yIChpbnQgaSA9IDA7IGkgPCByYXdfc3RhY2tfc2l6ZTsgKytpKSB7CisgICAgaWYgKHJh
d19zdGFja1tpXSA9PSBjYWxsZXJfZnJhbWUgJiYKKyAgICAgICAgIUdURVNUX0ZMQUcoc2hvd19p
bnRlcm5hbF9zdGFja19mcmFtZXMpKSB7CisgICAgICAvLyBBZGQgYSBtYXJrZXIgdG8gdGhlIHRy
YWNlIGFuZCBzdG9wIGFkZGluZyBmcmFtZXMuCisgICAgICBhYnNsOjpTdHJBcHBlbmQoJnJlc3Vs
dCwga0VsaWRlZEZyYW1lc01hcmtlciwgIlxuIik7CisgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBjaGFyIHRtcFsxMDI0XTsKKyAgICBjb25zdCBjaGFyKiBzeW1ib2wgPSAiKHVua25vd24pIjsK
KyAgICBpZiAoYWJzbDo6U3ltYm9saXplKHJhd19zdGFja1tpXSwgdG1wLCBzaXplb2YodG1wKSkp
IHsKKyAgICAgIHN5bWJvbCA9IHRtcDsKKyAgICB9CisKKyAgICBjaGFyIGxpbmVbMTAyNF07Cisg
ICAgc25wcmludGYobGluZSwgc2l6ZW9mKGxpbmUpLCAiICAlcDogJXNcbiIsIHJhd19zdGFja1tp
XSwgc3ltYm9sKTsKKyAgICByZXN1bHQgKz0gbGluZTsKKyAgfQorCisgIHJldHVybiByZXN1bHQ7
CisKKyNlbHNlICAvLyAhR1RFU1RfSEFTX0FCU0wKKyAgc3RhdGljX2Nhc3Q8dm9pZD4obWF4X2Rl
cHRoKTsKKyAgc3RhdGljX2Nhc3Q8dm9pZD4oc2tpcF9jb3VudCk7CisgIHJldHVybiAiIjsKKyNl
bmRpZiAgLy8gR1RFU1RfSEFTX0FCU0wKK30KKwordm9pZCBPc1N0YWNrVHJhY2VHZXR0ZXI6OlVw
b25MZWF2aW5nR1Rlc3QoKSBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pIHsKKyNpZiBHVEVT
VF9IQVNfQUJTTAorICB2b2lkKiBjYWxsZXJfZnJhbWUgPSBudWxscHRyOworICBpZiAoYWJzbDo6
R2V0U3RhY2tUcmFjZSgmY2FsbGVyX2ZyYW1lLCAxLCAzKSA8PSAwKSB7CisgICAgY2FsbGVyX2Zy
YW1lID0gbnVsbHB0cjsKKyAgfQorCisgIE11dGV4TG9jayBsb2NrKCZtdXRleF8pOworICBjYWxs
ZXJfZnJhbWVfID0gY2FsbGVyX2ZyYW1lOworI2VuZGlmICAvLyBHVEVTVF9IQVNfQUJTTAorfQor
CisvLyBBIGhlbHBlciBjbGFzcyB0aGF0IGNyZWF0ZXMgdGhlIHByZW1hdHVyZS1leGl0IGZpbGUg
aW4gaXRzCisvLyBjb25zdHJ1Y3RvciBhbmQgZGVsZXRlcyB0aGUgZmlsZSBpbiBpdHMgZGVzdHJ1
Y3Rvci4KK2NsYXNzIFNjb3BlZFByZW1hdHVyZUV4aXRGaWxlIHsKKyBwdWJsaWM6CisgIGV4cGxp
Y2l0IFNjb3BlZFByZW1hdHVyZUV4aXRGaWxlKGNvbnN0IGNoYXIqIHByZW1hdHVyZV9leGl0X2Zp
bGVwYXRoKQorICAgICAgOiBwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8ocHJlbWF0dXJlX2V4aXRf
ZmlsZXBhdGggPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlbWF0dXJlX2V4
aXRfZmlsZXBhdGggOiAiIikgeworICAgIC8vIElmIGEgcGF0aCB0byB0aGUgcHJlbWF0dXJlLWV4
aXQgZmlsZSBpcyBzcGVjaWZpZWQuLi4KKyAgICBpZiAoIXByZW1hdHVyZV9leGl0X2ZpbGVwYXRo
Xy5lbXB0eSgpKSB7CisgICAgICAvLyBjcmVhdGUgdGhlIGZpbGUgd2l0aCBhIHNpbmdsZSAiMCIg
Y2hhcmFjdGVyIGluIGl0LiAgSS9PCisgICAgICAvLyBlcnJvcnMgYXJlIGlnbm9yZWQgYXMgdGhl
cmUncyBub3RoaW5nIGJldHRlciB3ZSBjYW4gZG8gYW5kIHdlCisgICAgICAvLyBkb24ndCB3YW50
IHRvIGZhaWwgdGhlIHRlc3QgYmVjYXVzZSBvZiB0aGlzLgorICAgICAgRklMRSogcGZpbGUgPSBw
b3NpeDo6Rk9wZW4ocHJlbWF0dXJlX2V4aXRfZmlsZXBhdGgsICJ3Iik7CisgICAgICBmd3JpdGUo
IjAiLCAxLCAxLCBwZmlsZSk7CisgICAgICBmY2xvc2UocGZpbGUpOworICAgIH0KKyAgfQorCisg
IH5TY29wZWRQcmVtYXR1cmVFeGl0RmlsZSgpIHsKKyAgICBpZiAoIXByZW1hdHVyZV9leGl0X2Zp
bGVwYXRoXy5lbXB0eSgpKSB7CisgICAgICBpbnQgcmV0dmFsID0gcmVtb3ZlKHByZW1hdHVyZV9l
eGl0X2ZpbGVwYXRoXy5jX3N0cigpKTsKKyAgICAgIGlmIChyZXR2YWwpIHsKKyAgICAgICAgR1RF
U1RfTE9HXyhFUlJPUikgPDwgIkZhaWxlZCB0byByZW1vdmUgcHJlbWF0dXJlIGV4aXQgZmlsZXBh
dGggXCIiCisgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHByZW1hdHVyZV9leGl0X2ZpbGVw
YXRoXyA8PCAiXCIgd2l0aCBlcnJvciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHJl
dHZhbDsKKyAgICAgIH0KKyAgICB9CisgIH0KKworIHByaXZhdGU6CisgIGNvbnN0IHN0ZDo6c3Ry
aW5nIHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoXzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FO
RF9BU1NJR05fKFNjb3BlZFByZW1hdHVyZUV4aXRGaWxlKTsKK307CisKIH0gIC8vIG5hbWVzcGFj
ZSBpbnRlcm5hbAogCiAvLyBjbGFzcyBUZXN0RXZlbnRMaXN0ZW5lcnMKQEAgLTM0MzEsNyArNDQ5
Myw3IEBAIHZvaWQgVGVzdEV2ZW50TGlzdGVuZXJzOjpTdXBwcmVzc0V2ZW50Rm9yd2FyZGluZygp
IHsKIC8vIFdlIGRvbid0IHByb3RlY3QgdGhpcyB1bmRlciBtdXRleF8gYXMgYSB1c2VyIGlzIG5v
dCBzdXBwb3NlZCB0bwogLy8gY2FsbCB0aGlzIGJlZm9yZSBtYWluKCkgc3RhcnRzLCBmcm9tIHdo
aWNoIHBvaW50IG9uIHRoZSByZXR1cm4KIC8vIHZhbHVlIHdpbGwgbmV2ZXIgY2hhbmdlLgotVW5p
dFRlc3QgKiBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKSB7CitVbml0VGVzdCogVW5pdFRlc3Q6Okdl
dEluc3RhbmNlKCkgewogICAvLyBXaGVuIGNvbXBpbGVkIHdpdGggTVNWQyA3LjEgaW4gb3B0aW1p
emVkIG1vZGUsIGRlc3Ryb3lpbmcgdGhlCiAgIC8vIFVuaXRUZXN0IG9iamVjdCB1cG9uIGV4aXRp
bmcgdGhlIHByb2dyYW0gbWVzc2VzIHVwIHRoZSBleGl0IGNvZGUsCiAgIC8vIGNhdXNpbmcgc3Vj
Y2Vzc2Z1bCB0ZXN0cyB0byBhcHBlYXIgZmFpbGVkLiAgV2UgaGF2ZSB0byB1c2UgYQpAQCAtMzQ4
MSwxNyArNDU0MywzMyBAQCBpbnQgVW5pdFRlc3Q6OnN1Y2Nlc3NmdWxfdGVzdF9jb3VudCgpIGNv
bnN0IHsKIC8vIEdldHMgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVzdHMuCiBpbnQgVW5pdFRlc3Q6
OmZhaWxlZF90ZXN0X2NvdW50KCkgY29uc3QgeyByZXR1cm4gaW1wbCgpLT5mYWlsZWRfdGVzdF9j
b3VudCgpOyB9CiAKKy8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB0aGF0IHdp
bGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhNTCByZXBvcnQuCitpbnQgVW5pdFRlc3Q6OnJlcG9ydGFi
bGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKKyAgcmV0dXJuIGltcGwoKS0+cmVwb3J0
YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCk7Cit9CisKIC8vIEdldHMgdGhlIG51bWJlciBvZiBk
aXNhYmxlZCB0ZXN0cy4KIGludCBVbml0VGVzdDo6ZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0
IHsKICAgcmV0dXJuIGltcGwoKS0+ZGlzYWJsZWRfdGVzdF9jb3VudCgpOwogfQogCisvLyBHZXRz
IHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KK2lu
dCBVbml0VGVzdDo6cmVwb3J0YWJsZV90ZXN0X2NvdW50KCkgY29uc3QgeworICByZXR1cm4gaW1w
bCgpLT5yZXBvcnRhYmxlX3Rlc3RfY291bnQoKTsKK30KKwogLy8gR2V0cyB0aGUgbnVtYmVyIG9m
IGFsbCB0ZXN0cy4KIGludCBVbml0VGVzdDo6dG90YWxfdGVzdF9jb3VudCgpIGNvbnN0IHsgcmV0
dXJuIGltcGwoKS0+dG90YWxfdGVzdF9jb3VudCgpOyB9CiAKIC8vIEdldHMgdGhlIG51bWJlciBv
ZiB0ZXN0cyB0aGF0IHNob3VsZCBydW4uCiBpbnQgVW5pdFRlc3Q6OnRlc3RfdG9fcnVuX2NvdW50
KCkgY29uc3QgeyByZXR1cm4gaW1wbCgpLT50ZXN0X3RvX3J1bl9jb3VudCgpOyB9CiAKKy8vIEdl
dHMgdGhlIHRpbWUgb2YgdGhlIHRlc3QgcHJvZ3JhbSBzdGFydCwgaW4gbXMgZnJvbSB0aGUgc3Rh
cnQgb2YgdGhlCisvLyBVTklYIGVwb2NoLgoraW50ZXJuYWw6OlRpbWVJbk1pbGxpcyBVbml0VGVz
dDo6c3RhcnRfdGltZXN0YW1wKCkgY29uc3QgeworICAgIHJldHVybiBpbXBsKCktPnN0YXJ0X3Rp
bWVzdGFtcCgpOworfQorCiAvLyBHZXRzIHRoZSBlbGFwc2VkIHRpbWUsIGluIG1pbGxpc2Vjb25k
cy4KIGludGVybmFsOjpUaW1lSW5NaWxsaXMgVW5pdFRlc3Q6OmVsYXBzZWRfdGltZSgpIGNvbnN0
IHsKICAgcmV0dXJuIGltcGwoKS0+ZWxhcHNlZF90aW1lKCk7CkBAIC0zNTEwLDYgKzQ1ODgsMTIg
QEAgY29uc3QgVGVzdENhc2UqIFVuaXRUZXN0OjpHZXRUZXN0Q2FzZShpbnQgaSkgY29uc3Qgewog
ICByZXR1cm4gaW1wbCgpLT5HZXRUZXN0Q2FzZShpKTsKIH0KIAorLy8gUmV0dXJucyB0aGUgVGVz
dFJlc3VsdCBjb250YWluaW5nIGluZm9ybWF0aW9uIG9uIHRlc3QgZmFpbHVyZXMgYW5kCisvLyBw
cm9wZXJ0aWVzIGxvZ2dlZCBvdXRzaWRlIG9mIGluZGl2aWR1YWwgdGVzdCBjYXNlcy4KK2NvbnN0
IFRlc3RSZXN1bHQmIFVuaXRUZXN0OjphZF9ob2NfdGVzdF9yZXN1bHQoKSBjb25zdCB7CisgIHJl
dHVybiAqaW1wbCgpLT5hZF9ob2NfdGVzdF9yZXN1bHQoKTsKK30KKwogLy8gR2V0cyB0aGUgaS10
aCB0ZXN0IGNhc2UgYW1vbmcgYWxsIHRoZSB0ZXN0IGNhc2VzLiBpIGNhbiByYW5nZSBmcm9tIDAg
dG8KIC8vIHRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpIC0gMS4gSWYgaSBpcyBub3QgaW4gdGhhdCBy
YW5nZSwgcmV0dXJucyBOVUxMLgogVGVzdENhc2UqIFVuaXRUZXN0OjpHZXRNdXRhYmxlVGVzdENh
c2UoaW50IGkpIHsKQEAgLTM1NDEsMjkgKzQ2MjUsMTYgQEAgRW52aXJvbm1lbnQqIFVuaXRUZXN0
OjpBZGRFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KSB7CiAgIHJldHVybiBlbnY7CiB9CiAK
LSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwotLy8gQSBmYWlsZWQgR29vZ2xlIFRlc3QgYXNzZXJ0
aW9uIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIG9mIHRoaXMgdHlwZQotLy8gd2hlbiBleGNlcHRp
b25zIGFyZSBlbmFibGVkLiAgV2UgZGVyaXZlIGl0IGZyb20gc3RkOjpydW50aW1lX2Vycm9yLAot
Ly8gd2hpY2ggaXMgZm9yIGVycm9ycyBwcmVzdW1hYmx5IGRldGVjdGFibGUgb25seSBhdCBydW4g
dGltZS4gIFNpbmNlCi0vLyBzdGQ6OnJ1bnRpbWVfZXJyb3IgaW5oZXJpdHMgZnJvbSBzdGQ6OmV4
Y2VwdGlvbiwgbWFueSB0ZXN0aW5nCi0vLyBmcmFtZXdvcmtzIGtub3cgaG93IHRvIGV4dHJhY3Qg
YW5kIHByaW50IHRoZSBtZXNzYWdlIGluc2lkZSBpdC4KLWNsYXNzIEdvb2dsZVRlc3RGYWlsdXJl
RXhjZXB0aW9uIDogcHVibGljIDo6c3RkOjpydW50aW1lX2Vycm9yIHsKLSBwdWJsaWM6Ci0gIGV4
cGxpY2l0IEdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uKGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBm
YWlsdXJlKQotICAgICAgOiA6OnN0ZDo6cnVudGltZV9lcnJvcihQcmludFRlc3RQYXJ0UmVzdWx0
VG9TdHJpbmcoZmFpbHVyZSkuY19zdHIoKSkge30KLX07Ci0jZW5kaWYKLQogLy8gQWRkcyBhIFRl
c3RQYXJ0UmVzdWx0IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0LiAgQWxsIEdvb2ds
ZSBUZXN0CiAvLyBhc3NlcnRpb24gbWFjcm9zIChlLmcuIEFTU0VSVF9UUlVFLCBFWFBFQ1RfRVEs
IGV0YykgZXZlbnR1YWxseSBjYWxsCiAvLyB0aGlzIHRvIHJlcG9ydCB0aGVpciByZXN1bHRzLiAg
VGhlIHVzZXIgY29kZSBzaG91bGQgdXNlIHRoZQogLy8gYXNzZXJ0aW9uIG1hY3JvcyBpbnN0ZWFk
IG9mIGNhbGxpbmcgdGhpcyBkaXJlY3RseS4KLS8vIEwgPCBtdXRleF8KLXZvaWQgVW5pdFRlc3Q6
OkFkZFRlc3RQYXJ0UmVzdWx0KFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZV9uYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVfbnVtYmVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyYgbWVzc2FnZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludGVybmFsOjpTdHJpbmcm
IG9zX3N0YWNrX3RyYWNlKSB7Cit2b2lkIFVuaXRUZXN0OjpBZGRUZXN0UGFydFJlc3VsdCgKKyAg
ICBUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKKyAgICBjb25zdCBjaGFyKiBmaWxl
X25hbWUsCisgICAgaW50IGxpbmVfbnVtYmVyLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNz
YWdlLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvc19zdGFja190cmFjZSkgR1RFU1RfTE9DS19F
WENMVURFRF8obXV0ZXhfKSB7CiAgIE1lc3NhZ2UgbXNnOwogICBtc2cgPDwgbWVzc2FnZTsKIApA
QCAtMzU5NiwxNyArNDY2NywyNiBAQCB2b2lkIFVuaXRUZXN0OjpBZGRUZXN0UGFydFJlc3VsdChU
ZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKICAgICAvLyB3aXRoIGFub3RoZXIgdGVz
dGluZyBmcmFtZXdvcmspIGFuZCBzcGVjaWZ5IHRoZSBmb3JtZXIgb24gdGhlCiAgICAgLy8gY29t
bWFuZCBsaW5lIGZvciBkZWJ1Z2dpbmcuCiAgICAgaWYgKEdURVNUX0ZMQUcoYnJlYWtfb25fZmFp
bHVyZSkpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAh
R1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lORE9XU19SVAogICAgICAgLy8g
VXNpbmcgRGVidWdCcmVhayBvbiBXaW5kb3dzIGFsbG93cyBndGVzdCB0byBzdGlsbCBicmVhayBp
bnRvIGEgZGVidWdnZXIKICAgICAgIC8vIHdoZW4gYSBmYWlsdXJlIGhhcHBlbnMgYW5kIGJvdGgg
dGhlIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBhbmQKICAgICAgIC8vIHRoZSAtLWd0ZXN0X2Nh
dGNoX2V4Y2VwdGlvbnMgZmxhZ3MgYXJlIHNwZWNpZmllZC4KICAgICAgIERlYnVnQnJlYWsoKTsK
KyNlbGlmICghZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykpICYmICAgICAgICAgICAgXAorICAg
ICgoZGVmaW5lZChfX2NsYW5nX18pIHx8IGRlZmluZWQoX19HTlVDX18pKSAmJiBcCisgICAgIChk
ZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19pMzg2X18pKSkKKyAgICAgIC8vIHdpdGgg
Y2xhbmcvZ2NjIHdlIGNhbiBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBvbiB4ODYgYnkgaW52b2tp
bmcgaW50MworICAgICAgYXNtKCJpbnQzIik7CiAjZWxzZQorICAgICAgLy8gRGVyZWZlcmVuY2Ug
TlVMTCB0aHJvdWdoIGEgdm9sYXRpbGUgcG9pbnRlciB0byBwcmV2ZW50IHRoZSBjb21waWxlcgor
ICAgICAgLy8gZnJvbSByZW1vdmluZy4gV2UgdXNlIHRoaXMgcmF0aGVyIHRoYW4gYWJvcnQoKSBv
ciBfX2J1aWx0aW5fdHJhcCgpIGZvcgorICAgICAgLy8gcG9ydGFiaWxpdHk6IFN5bWJpYW4gZG9l
c24ndCBpbXBsZW1lbnQgYWJvcnQoKSB3ZWxsLCBhbmQgc29tZSBkZWJ1Z2dlcnMKKyAgICAgIC8v
IGRvbid0IGNvcnJlY3RseSB0cmFwIGFib3J0KCkuCiAgICAgICAqc3RhdGljX2Nhc3Q8dm9sYXRp
bGUgaW50Kj4oTlVMTCkgPSAxOwogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAgICAgfSBl
bHNlIGlmIChHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpKSB7CiAjaWYgR1RFU1RfSEFTX0VY
Q0VQVElPTlMKLSAgICAgIHRocm93IEdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uKHJlc3VsdCk7
CisgICAgICB0aHJvdyBpbnRlcm5hbDo6R29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24ocmVzdWx0
KTsKICNlbHNlCiAgICAgICAvLyBXZSBjYW5ub3QgY2FsbCBhYm9ydCgpIGFzIGl0IGdlbmVyYXRl
cyBhIHBvcC11cCBpbiBkZWJ1ZyBtb2RlCiAgICAgICAvLyB0aGF0IGNhbm5vdCBiZSBzdXBwcmVz
c2VkIGluIFZDIDcuMSBvciBiZWxvdy4KQEAgLTM2MTYsMTIgKzQ2OTYsMTQgQEAgdm9pZCBVbml0
VGVzdDo6QWRkVGVzdFBhcnRSZXN1bHQoVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUs
CiAgIH0KIH0KIAotLy8gQ3JlYXRlcyBhbmQgYWRkcyBhIHByb3BlcnR5IHRvIHRoZSBjdXJyZW50
IFRlc3RSZXN1bHQuIElmIGEgcHJvcGVydHkgbWF0Y2hpbmcKLS8vIHRoZSBzdXBwbGllZCB2YWx1
ZSBhbHJlYWR5IGV4aXN0cywgdXBkYXRlcyBpdHMgdmFsdWUgaW5zdGVhZC4KLXZvaWQgVW5pdFRl
c3Q6OlJlY29yZFByb3BlcnR5Rm9yQ3VycmVudFRlc3QoY29uc3QgY2hhcioga2V5LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB2YWx1ZSkg
ewotICBjb25zdCBUZXN0UHJvcGVydHkgdGVzdF9wcm9wZXJ0eShrZXksIHZhbHVlKTsKLSAgaW1w
bF8tPmN1cnJlbnRfdGVzdF9yZXN1bHQoKS0+UmVjb3JkUHJvcGVydHkodGVzdF9wcm9wZXJ0eSk7
CisvLyBBZGRzIGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0
IHdoZW4gaW52b2tlZCBmcm9tCisvLyBpbnNpZGUgYSB0ZXN0LCB0byBjdXJyZW50IFRlc3RDYXNl
J3MgYWRfaG9jX3Rlc3RfcmVzdWx0XyB3aGVuIGludm9rZWQKKy8vIGZyb20gU2V0VXBUZXN0Q2Fz
ZSBvciBUZWFyRG93blRlc3RDYXNlLCBvciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNldAorLy8g
d2hlbiBpbnZva2VkIGVsc2V3aGVyZS4gIElmIHRoZSByZXN1bHQgYWxyZWFkeSBjb250YWlucyBh
IHByb3BlcnR5IHdpdGgKKy8vIHRoZSBzYW1lIGtleSwgdGhlIHZhbHVlIHdpbGwgYmUgdXBkYXRl
ZC4KK3ZvaWQgVW5pdFRlc3Q6OlJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUp
IHsKKyAgaW1wbF8tPlJlY29yZFByb3BlcnR5KFRlc3RQcm9wZXJ0eShrZXksIHZhbHVlKSk7CiB9
CiAKIC8vIFJ1bnMgYWxsIHRlc3RzIGluIHRoaXMgVW5pdFRlc3Qgb2JqZWN0IGFuZCBwcmludHMg
dGhlIHJlc3VsdC4KQEAgLTM2MzAsMzEgKzQ3MTIsNTggQEAgdm9pZCBVbml0VGVzdDo6UmVjb3Jk
UHJvcGVydHlGb3JDdXJyZW50VGVzdChjb25zdCBjaGFyKiBrZXksCiAvLyBXZSBkb24ndCBwcm90
ZWN0IHRoaXMgdW5kZXIgbXV0ZXhfLCBhcyB3ZSBvbmx5IHN1cHBvcnQgY2FsbGluZyBpdAogLy8g
ZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiBpbnQgVW5pdFRlc3Q6OlJ1bigpIHsKLSNpZiBHVEVTVF9I
QVNfU0VICi0gIC8vIENhdGNoIFNFSC1zdHlsZSBleGNlcHRpb25zLgotCiAgIGNvbnN0IGJvb2wg
aW5fZGVhdGhfdGVzdF9jaGlsZF9wcm9jZXNzID0KICAgICAgIGludGVybmFsOjpHVEVTVF9GTEFH
KGludGVybmFsX3J1bl9kZWF0aF90ZXN0KS5sZW5ndGgoKSA+IDA7CiAKKyAgLy8gR29vZ2xlIFRl
c3QgaW1wbGVtZW50cyB0aGlzIHByb3RvY29sIGZvciBjYXRjaGluZyB0aGF0IGEgdGVzdAorICAv
LyBwcm9ncmFtIGV4aXRzIGJlZm9yZSByZXR1cm5pbmcgY29udHJvbCB0byBHb29nbGUgVGVzdDoK
KyAgLy8KKyAgLy8gICAxLiBVcG9uIHN0YXJ0LCBHb29nbGUgVGVzdCBjcmVhdGVzIGEgZmlsZSB3
aG9zZSBhYnNvbHV0ZSBwYXRoCisgIC8vICAgICAgaXMgc3BlY2lmaWVkIGJ5IHRoZSBlbnZpcm9u
bWVudCB2YXJpYWJsZQorICAvLyAgICAgIFRFU1RfUFJFTUFUVVJFX0VYSVRfRklMRS4KKyAgLy8g
ICAyLiBXaGVuIEdvb2dsZSBUZXN0IGhhcyBmaW5pc2hlZCBpdHMgd29yaywgaXQgZGVsZXRlcyB0
aGUgZmlsZS4KKyAgLy8KKyAgLy8gVGhpcyBhbGxvd3MgYSB0ZXN0IHJ1bm5lciB0byBzZXQgVEVT
VF9QUkVNQVRVUkVfRVhJVF9GSUxFIGJlZm9yZQorICAvLyBydW5uaW5nIGEgR29vZ2xlLVRlc3Qt
YmFzZWQgdGVzdCBwcm9ncmFtIGFuZCBjaGVjayB0aGUgZXhpc3RlbmNlCisgIC8vIG9mIHRoZSBm
aWxlIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QgZXhlY3V0aW9uIHRvIHNlZSBpZiBpdCBoYXMKKyAg
Ly8gZXhpdGVkIHByZW1hdHVyZWx5LgorCisgIC8vIElmIHdlIGFyZSBpbiB0aGUgY2hpbGQgcHJv
Y2VzcyBvZiBhIGRlYXRoIHRlc3QsIGRvbid0CisgIC8vIGNyZWF0ZS9kZWxldGUgdGhlIHByZW1h
dHVyZSBleGl0IGZpbGUsIGFzIGRvaW5nIHNvIGlzIHVubmVjZXNzYXJ5CisgIC8vIGFuZCB3aWxs
IGNvbmZ1c2UgdGhlIHBhcmVudCBwcm9jZXNzLiAgT3RoZXJ3aXNlLCBjcmVhdGUvZGVsZXRlCisg
IC8vIHRoZSBmaWxlIHVwb24gZW50ZXJpbmcvbGVhdmluZyB0aGlzIGZ1bmN0aW9uLiAgSWYgdGhl
IHByb2dyYW0KKyAgLy8gc29tZWhvdyBleGl0cyBiZWZvcmUgdGhpcyBmdW5jdGlvbiBoYXMgYSBj
aGFuY2UgdG8gcmV0dXJuLCB0aGUKKyAgLy8gcHJlbWF0dXJlLWV4aXQgZmlsZSB3aWxsIGJlIGxl
ZnQgdW5kZWxldGVkLCBjYXVzaW5nIGEgdGVzdCBydW5uZXIKKyAgLy8gdGhhdCB1bmRlcnN0YW5k
cyB0aGUgcHJlbWF0dXJlLWV4aXQtZmlsZSBwcm90b2NvbCB0byByZXBvcnQgdGhlCisgIC8vIHRl
c3QgYXMgaGF2aW5nIGZhaWxlZC4KKyAgY29uc3QgaW50ZXJuYWw6OlNjb3BlZFByZW1hdHVyZUV4
aXRGaWxlIHByZW1hdHVyZV9leGl0X2ZpbGUoCisgICAgICBpbl9kZWF0aF90ZXN0X2NoaWxkX3By
b2Nlc3MgPworICAgICAgTlVMTCA6IGludGVybmFsOjpwb3NpeDo6R2V0RW52KCJURVNUX1BSRU1B
VFVSRV9FWElUX0ZJTEUiKSk7CisKKyAgLy8gQ2FwdHVyZXMgdGhlIHZhbHVlIG9mIEdURVNUX0ZM
QUcoY2F0Y2hfZXhjZXB0aW9ucykuICBUaGlzIHZhbHVlIHdpbGwgYmUKKyAgLy8gdXNlZCBmb3Ig
dGhlIGR1cmF0aW9uIG9mIHRoZSBwcm9ncmFtLgorICBpbXBsKCktPnNldF9jYXRjaF9leGNlcHRp
b25zKEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykpOworCisjaWYgR1RFU1RfT1NfV0lORE9X
UwogICAvLyBFaXRoZXIgdGhlIHVzZXIgd2FudHMgR29vZ2xlIFRlc3QgdG8gY2F0Y2ggZXhjZXB0
aW9ucyB0aHJvd24gYnkgdGhlCiAgIC8vIHRlc3RzIG9yIHRoaXMgaXMgZXhlY3V0aW5nIGluIHRo
ZSBjb250ZXh0IG9mIGRlYXRoIHRlc3QgY2hpbGQKICAgLy8gcHJvY2Vzcy4gSW4gZWl0aGVyIGNh
c2UgdGhlIHVzZXIgZG9lcyBub3Qgd2FudCB0byBzZWUgcG9wLXVwIGRpYWxvZ3MKLSAgLy8gYWJv
dXQgY3Jhc2hlcyAtIHRoZXkgYXJlIGV4cGVjdGVkLi4KLSAgaWYgKEdURVNUX0ZMQUcoY2F0Y2hf
ZXhjZXB0aW9ucykgfHwgaW5fZGVhdGhfdGVzdF9jaGlsZF9wcm9jZXNzKSB7Ci0jaWYgIUdURVNU
X09TX1dJTkRPV1NfTU9CSUxFCisgIC8vIGFib3V0IGNyYXNoZXMgLSB0aGV5IGFyZSBleHBlY3Rl
ZC4KKyAgaWYgKGltcGwoKS0+Y2F0Y2hfZXhjZXB0aW9ucygpIHx8IGluX2RlYXRoX3Rlc3RfY2hp
bGRfcHJvY2VzcykgeworIyBpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09T
X1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQKICAgICAvLyBTZXRFcnJvck1v
ZGUgZG9lc24ndCBleGlzdCBvbiBDRS4KICAgICBTZXRFcnJvck1vZGUoU0VNX0ZBSUxDUklUSUNB
TEVSUk9SUyB8IFNFTV9OT0FMSUdOTUVOVEZBVUxURVhDRVBUIHwKICAgICAgICAgICAgICAgICAg
U0VNX05PR1BGQVVMVEVSUk9SQk9YIHwgU0VNX05PT1BFTkZJTEVFUlJPUkJPWCk7Ci0jZW5kaWYg
IC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCiAKLSNpZiAoZGVmaW5lZChfTVNDX1ZFUikgfHwgR1RFU1RfT1NfV0lORE9XU19N
SU5HVykgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGlmIChkZWZpbmVkKF9NU0NfVkVS
KSB8fCBHVEVTVF9PU19XSU5ET1dTX01JTkdXKSAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
ICAgICAvLyBEZWF0aCB0ZXN0IGNoaWxkcmVuIGNhbiBiZSB0ZXJtaW5hdGVkIHdpdGggX2Fib3J0
KCkuICBPbiBXaW5kb3dzLAogICAgIC8vIF9hYm9ydCgpIGNhbiBzaG93IGEgZGlhbG9nIHdpdGgg
YSB3YXJuaW5nIG1lc3NhZ2UuICBUaGlzIGZvcmNlcyB0aGUKICAgICAvLyBhYm9ydCBtZXNzYWdl
IHRvIGdvIHRvIHN0ZGVyciBpbnN0ZWFkLgogICAgIF9zZXRfZXJyb3JfbW9kZShfT1VUX1RPX1NU
REVSUik7Ci0jZW5kaWYKKyMgZW5kaWYKIAotI2lmIF9NU0NfVkVSID49IDE0MDAgJiYgIUdURVNU
X09TX1dJTkRPV1NfTU9CSUxFCisjIGlmIF9NU0NfVkVSID49IDE0MDAgJiYgIUdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCiAgICAgLy8gSW4gdGhlIGRlYnVnIHZlcnNpb24sIFZpc3VhbCBTdHVkaW8g
cG9wcyB1cCBhIHNlcGFyYXRlIGRpYWxvZwogICAgIC8vIG9mZmVyaW5nIGEgY2hvaWNlIHRvIGRl
YnVnIHRoZSBhYm9ydGVkIHByb2dyYW0uIFdlIG5lZWQgdG8gc3VwcHJlc3MKICAgICAvLyB0aGlz
IGRpYWxvZyBvciBpdCB3aWxsIHBvcCB1cCBmb3IgZXZlcnkgRVhQRUNUL0FTU0VSVF9ERUFUSCBz
dGF0ZW1lbnQKQEAgLTM2NjQsMjggKzQ3NzMsMjAgQEAgaW50IFVuaXRUZXN0OjpSdW4oKSB7CiAg
ICAgLy8gVkMrKyBkb2Vzbid0IGRlZmluZSBfc2V0X2Fib3J0X2JlaGF2aW9yKCkgcHJpb3IgdG8g
dGhlIHZlcnNpb24gOC4wLgogICAgIC8vIFVzZXJzIG9mIHByaW9yIFZDIHZlcnNpb25zIHNoYWxs
IHN1ZmZlciB0aGUgYWdvbnkgYW5kIHBhaW4gb2YKICAgICAvLyBjbGlja2luZyB0aHJvdWdoIHRo
ZSBjb3VudGxlc3MgZGVidWcgZGlhbG9ncy4KLSAgICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20p
OiBmaW5kIGEgd2F5IHRvIHN1cHByZXNzIHRoZSBhYm9ydCBkaWFsb2coKSBpbiB0aGUKKyAgICAv
LyBGSVhNRTogZmluZCBhIHdheSB0byBzdXBwcmVzcyB0aGUgYWJvcnQgZGlhbG9nKCkgaW4gdGhl
CiAgICAgLy8gZGVidWcgbW9kZSB3aGVuIGNvbXBpbGVkIHdpdGggVkMgNy4xIG9yIGxvd2VyLgog
ICAgIGlmICghR1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJlKSkKICAgICAgIF9zZXRfYWJvcnRf
YmVoYXZpb3IoCiAgICAgICAgICAgMHgwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIENsZWFyIHRoZSBmb2xsb3dpbmcgZmxhZ3M6CiAgICAgICAgICAgX1dSSVRFX0FCT1JU
X01TRyB8IF9DQUxMX1JFUE9SVEZBVUxUKTsgIC8vIHBvcC11cCB3aW5kb3csIGNvcmUgZHVtcC4K
LSNlbmRpZgorIyBlbmRpZgogICB9CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAotICBf
X3RyeSB7Ci0gICAgcmV0dXJuIGltcGxfLT5SdW5BbGxUZXN0cygpOwotICB9IF9fZXhjZXB0KGlu
dGVybmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCgKLSAgICAgIEdl
dEV4Y2VwdGlvbkNvZGUoKSkpIHsKLSAgICBwcmludGYoIkV4Y2VwdGlvbiB0aHJvd24gd2l0aCBj
b2RlIDB4JXguXG5GQUlMXG4iLCBHZXRFeGNlcHRpb25Db2RlKCkpOwotICAgIGZmbHVzaChzdGRv
dXQpOwotICAgIHJldHVybiAxOwotICB9Ci0KLSNlbHNlICAvLyBXZSBhcmUgb24gYSBjb21waWxl
ciBvciBwbGF0Zm9ybSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBTRUguCi0KLSAgcmV0dXJuIGltcGxf
LT5SdW5BbGxUZXN0cygpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICisgIHJldHVybiBpbnRl
cm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgICBpbXBsKCks
CisgICAgICAmaW50ZXJuYWw6OlVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMsCisgICAgICAiYXV4
aWxpYXJ5IHRlc3QgY29kZSAoZW52aXJvbm1lbnRzIG9yIGV2ZW50IGxpc3RlbmVycykiKSA/IDAg
OiAxOwogfQogCiAvLyBSZXR1cm5zIHRoZSB3b3JraW5nIGRpcmVjdG9yeSB3aGVuIHRoZSBmaXJz
dCBURVNUKCkgb3IgVEVTVF9GKCkgd2FzCkBAIC0zNjk2LDE2ICs0Nzk3LDE2IEBAIGNvbnN0IGNo
YXIqIFVuaXRUZXN0OjpvcmlnaW5hbF93b3JraW5nX2RpcigpIGNvbnN0IHsKIAogLy8gUmV0dXJu
cyB0aGUgVGVzdENhc2Ugb2JqZWN0IGZvciB0aGUgdGVzdCB0aGF0J3MgY3VycmVudGx5IHJ1bm5p
bmcsCiAvLyBvciBOVUxMIGlmIG5vIHRlc3QgaXMgcnVubmluZy4KLS8vIEwgPCBtdXRleF8KLWNv
bnN0IFRlc3RDYXNlKiBVbml0VGVzdDo6Y3VycmVudF90ZXN0X2Nhc2UoKSBjb25zdCB7Citjb25z
dCBUZXN0Q2FzZSogVW5pdFRlc3Q6OmN1cnJlbnRfdGVzdF9jYXNlKCkgY29uc3QKKyAgICBHVEVT
VF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pIHsKICAgaW50ZXJuYWw6Ok11dGV4TG9jayBsb2NrKCZt
dXRleF8pOwogICByZXR1cm4gaW1wbF8tPmN1cnJlbnRfdGVzdF9jYXNlKCk7CiB9CiAKIC8vIFJl
dHVybnMgdGhlIFRlc3RJbmZvIG9iamVjdCBmb3IgdGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBy
dW5uaW5nLAogLy8gb3IgTlVMTCBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcuCi0vLyBMIDwgbXV0ZXhf
Ci1jb25zdCBUZXN0SW5mbyogVW5pdFRlc3Q6OmN1cnJlbnRfdGVzdF9pbmZvKCkgY29uc3Qgewor
Y29uc3QgVGVzdEluZm8qIFVuaXRUZXN0OjpjdXJyZW50X3Rlc3RfaW5mbygpIGNvbnN0CisgICAg
R1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7CiAgIGludGVybmFsOjpNdXRleExvY2sgbG9j
aygmbXV0ZXhfKTsKICAgcmV0dXJuIGltcGxfLT5jdXJyZW50X3Rlc3RfaW5mbygpOwogfQpAQCAt
MzcxMywxNSArNDgxNCwxMyBAQCBjb25zdCBUZXN0SW5mbyogVW5pdFRlc3Q6OmN1cnJlbnRfdGVz
dF9pbmZvKCkgY29uc3QgewogLy8gUmV0dXJucyB0aGUgcmFuZG9tIHNlZWQgdXNlZCBhdCB0aGUg
c3RhcnQgb2YgdGhlIGN1cnJlbnQgdGVzdCBydW4uCiBpbnQgVW5pdFRlc3Q6OnJhbmRvbV9zZWVk
KCkgY29uc3QgeyByZXR1cm4gaW1wbF8tPnJhbmRvbV9zZWVkKCk7IH0KIAotI2lmIEdURVNUX0hB
U19QQVJBTV9URVNUCiAvLyBSZXR1cm5zIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IG9i
amVjdCB1c2VkIHRvIGtlZXAgdHJhY2sgb2YKIC8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMg
YW5kIGluc3RhbnRpYXRlIGFuZCByZWdpc3RlciB0aGVtLgotLy8gTCA8IG11dGV4XwogaW50ZXJu
YWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5JgotICAgIFVuaXRUZXN0OjpwYXJhbWV0
ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKSB7CisgICAgVW5pdFRlc3Q6OnBhcmFtZXRlcml6ZWRfdGVz
dF9yZWdpc3RyeSgpCisgICAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4XykgewogICBy
ZXR1cm4gaW1wbF8tPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpOwogfQotI2VuZGlmICAv
LyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogCiAvLyBDcmVhdGVzIGFuIGVtcHR5IFVuaXRUZXN0Lgog
VW5pdFRlc3Q6OlVuaXRUZXN0KCkgewpAQCAtMzczNSwxNSArNDgzNCwxNSBAQCBVbml0VGVzdDo6
flVuaXRUZXN0KCkgewogCiAvLyBQdXNoZXMgYSB0cmFjZSBkZWZpbmVkIGJ5IFNDT1BFRF9UUkFD
RSgpIG9uIHRvIHRoZSBwZXItdGhyZWFkCiAvLyBHb29nbGUgVGVzdCB0cmFjZSBzdGFjay4KLS8v
IEwgPCBtdXRleF8KLXZvaWQgVW5pdFRlc3Q6OlB1c2hHVGVzdFRyYWNlKGNvbnN0IGludGVybmFs
OjpUcmFjZUluZm8mIHRyYWNlKSB7Cit2b2lkIFVuaXRUZXN0OjpQdXNoR1Rlc3RUcmFjZShjb25z
dCBpbnRlcm5hbDo6VHJhY2VJbmZvJiB0cmFjZSkKKyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyht
dXRleF8pIHsKICAgaW50ZXJuYWw6Ok11dGV4TG9jayBsb2NrKCZtdXRleF8pOwogICBpbXBsXy0+
Z3Rlc3RfdHJhY2Vfc3RhY2soKS5wdXNoX2JhY2sodHJhY2UpOwogfQogCiAvLyBQb3BzIGEgdHJh
Y2UgZnJvbSB0aGUgcGVyLXRocmVhZCBHb29nbGUgVGVzdCB0cmFjZSBzdGFjay4KLS8vIEwgPCBt
dXRleF8KLXZvaWQgVW5pdFRlc3Q6OlBvcEdUZXN0VHJhY2UoKSB7Cit2b2lkIFVuaXRUZXN0OjpQ
b3BHVGVzdFRyYWNlKCkKKyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pIHsKICAgaW50
ZXJuYWw6Ok11dGV4TG9jayBsb2NrKCZtdXRleF8pOwogICBpbXBsXy0+Z3Rlc3RfdHJhY2Vfc3Rh
Y2soKS5wb3BfYmFjaygpOwogfQpAQCAtMzc1MiwyNSArNDg1MSwxNiBAQCBuYW1lc3BhY2UgaW50
ZXJuYWwgewogCiBVbml0VGVzdEltcGw6OlVuaXRUZXN0SW1wbChVbml0VGVzdCogcGFyZW50KQog
ICAgIDogcGFyZW50XyhwYXJlbnQpLAotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmco
cHVzaCkgICAgICAgICAgICAgICAgICAgIC8vIFNhdmVzIHRoZSBjdXJyZW50IHdhcm5pbmcgc3Rh
dGUuCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MzU1KSAgICAgICAgICAgIC8vIFRlbXBvcmFy
aWx5IGRpc2FibGVzIHdhcm5pbmcgNDM1NQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyAodXNpbmcgdGhpcyBpbiBpbml0aWFsaXplcikuCi0gICAgICBkZWZhdWx0
X2dsb2JhbF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXyh0aGlzKSwKLSAgICAgIGRlZmF1bHRf
cGVyX3RocmVhZF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXyh0aGlzKSwKLSNwcmFnbWEgd2Fy
bmluZyhwb3ApICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdG9yZXMgdGhlIHdhcm5pbmcgc3Rh
dGUgYWdhaW4uCi0jZWxzZQorICAgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8o
NDM1NSAvKiB1c2luZyB0aGlzIGluIGluaXRpYWxpemVyICovKQogICAgICAgZGVmYXVsdF9nbG9i
YWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8odGhpcyksCiAgICAgICBkZWZhdWx0X3Blcl90
aHJlYWRfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8odGhpcyksCi0jZW5kaWYgIC8vIF9NU0Nf
VkVSCisgICAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKICAgICAgIGdsb2Jh
bF90ZXN0X3BhcnRfcmVzdWx0X3JlcG90ZXJfKAogICAgICAgICAgICZkZWZhdWx0X2dsb2JhbF90
ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXyksCiAgICAgICBwZXJfdGhyZWFkX3Rlc3RfcGFydF9y
ZXN1bHRfcmVwb3J0ZXJfKAogICAgICAgICAgICZkZWZhdWx0X3Blcl90aHJlYWRfdGVzdF9wYXJ0
X3Jlc3VsdF9yZXBvcnRlcl8pLAotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiAgICAgICBwYXJh
bWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnlfKCksCiAgICAgICBwYXJhbWV0ZXJpemVkX3Rlc3RzX3Jl
Z2lzdGVyZWRfKGZhbHNlKSwKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgICAg
IGxhc3RfZGVhdGhfdGVzdF9jYXNlXygtMSksCiAgICAgICBjdXJyZW50X3Rlc3RfY2FzZV8oTlVM
TCksCiAgICAgICBjdXJyZW50X3Rlc3RfaW5mb18oTlVMTCksCkBAIC0zNzc5LDEzICs0ODY5LDEz
IEBAIFVuaXRUZXN0SW1wbDo6VW5pdFRlc3RJbXBsKFVuaXRUZXN0KiBwYXJlbnQpCiAgICAgICBw
b3N0X2ZsYWdfcGFyc2VfaW5pdF9wZXJmb3JtZWRfKGZhbHNlKSwKICAgICAgIHJhbmRvbV9zZWVk
XygwKSwgIC8vIFdpbGwgYmUgb3ZlcnJpZGRlbiBieSB0aGUgZmxhZyBiZWZvcmUgZmlyc3QgdXNl
LgogICAgICAgcmFuZG9tXygwKSwgIC8vIFdpbGwgYmUgcmVzZWVkZWQgYmVmb3JlIGZpcnN0IHVz
ZS4KLSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorICAgICAgc3RhcnRfdGltZXN0YW1wXygwKSwK
ICAgICAgIGVsYXBzZWRfdGltZV8oMCksCi0gICAgICBpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdF9m
bGFnXyhOVUxMKSwKLSAgICAgIGRlYXRoX3Rlc3RfZmFjdG9yeV8obmV3IERlZmF1bHREZWF0aFRl
c3RGYWN0b3J5KSB7Ci0jZWxzZQotICAgICAgZWxhcHNlZF90aW1lXygwKSB7Ci0jZW5kaWYgIC8v
IEdURVNUX0hBU19ERUFUSF9URVNUCisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKyAgICAgIGRl
YXRoX3Rlc3RfZmFjdG9yeV8obmV3IERlZmF1bHREZWF0aFRlc3RGYWN0b3J5KSwKKyNlbmRpZgor
ICAgICAgLy8gV2lsbCBiZSBvdmVycmlkZGVuIGJ5IHRoZSBmbGFnIGJlZm9yZSBmaXJzdCB1c2Uu
CisgICAgICBjYXRjaF9leGNlcHRpb25zXyhmYWxzZSkgewogICBsaXN0ZW5lcnMoKS0+U2V0RGVm
YXVsdFJlc3VsdFByaW50ZXIobmV3IFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcik7CiB9CiAK
QEAgLTM3OTksNiArNDg4OSwyOCBAQCBVbml0VGVzdEltcGw6On5Vbml0VGVzdEltcGwoKSB7CiAg
IGRlbGV0ZSBvc19zdGFja190cmFjZV9nZXR0ZXJfOwogfQogCisvLyBBZGRzIGEgVGVzdFByb3Bl
cnR5IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0IHdoZW4gaW52b2tlZCBpbiBhCisv
LyBjb250ZXh0IG9mIGEgdGVzdCwgdG8gY3VycmVudCB0ZXN0IGNhc2UncyBhZF9ob2NfdGVzdF9y
ZXN1bHQgd2hlbiBpbnZva2UKKy8vIGZyb20gU2V0VXBUZXN0Q2FzZS9UZWFyRG93blRlc3RDYXNl
LCBvciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNldAorLy8gb3RoZXJ3aXNlLiAgSWYgdGhlIHJl
c3VsdCBhbHJlYWR5IGNvbnRhaW5zIGEgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBrZXksCisvLyB0
aGUgdmFsdWUgd2lsbCBiZSB1cGRhdGVkLgordm9pZCBVbml0VGVzdEltcGw6OlJlY29yZFByb3Bl
cnR5KGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgeworICBzdGQ6OnN0cmluZyB4
bWxfZWxlbWVudDsKKyAgVGVzdFJlc3VsdCogdGVzdF9yZXN1bHQ7ICAvLyBUZXN0UmVzdWx0IGFw
cHJvcHJpYXRlIGZvciBwcm9wZXJ0eSByZWNvcmRpbmcuCisKKyAgaWYgKGN1cnJlbnRfdGVzdF9p
bmZvXyAhPSBOVUxMKSB7CisgICAgeG1sX2VsZW1lbnQgPSAidGVzdGNhc2UiOworICAgIHRlc3Rf
cmVzdWx0ID0gJihjdXJyZW50X3Rlc3RfaW5mb18tPnJlc3VsdF8pOworICB9IGVsc2UgaWYgKGN1
cnJlbnRfdGVzdF9jYXNlXyAhPSBOVUxMKSB7CisgICAgeG1sX2VsZW1lbnQgPSAidGVzdHN1aXRl
IjsKKyAgICB0ZXN0X3Jlc3VsdCA9ICYoY3VycmVudF90ZXN0X2Nhc2VfLT5hZF9ob2NfdGVzdF9y
ZXN1bHRfKTsKKyAgfSBlbHNlIHsKKyAgICB4bWxfZWxlbWVudCA9ICJ0ZXN0c3VpdGVzIjsKKyAg
ICB0ZXN0X3Jlc3VsdCA9ICZhZF9ob2NfdGVzdF9yZXN1bHRfOworICB9CisgIHRlc3RfcmVzdWx0
LT5SZWNvcmRQcm9wZXJ0eSh4bWxfZWxlbWVudCwgdGVzdF9wcm9wZXJ0eSk7Cit9CisKICNpZiBH
VEVTVF9IQVNfREVBVEhfVEVTVAogLy8gRGlzYWJsZXMgZXZlbnQgZm9yd2FyZGluZyBpZiB0aGUg
Y29udHJvbCBpcyBjdXJyZW50bHkgaW4gYSBkZWF0aCB0ZXN0CiAvLyBzdWJwcm9jZXNzLiBNdXN0
IG5vdCBiZSBjYWxsZWQgYmVmb3JlIEluaXRHb29nbGVUZXN0LgpAQCAtMzgxMSwxNyArNDkyMywz
NyBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6U3VwcHJlc3NUZXN0RXZlbnRzSWZJblN1YnByb2Nlc3Mo
KSB7CiAvLyBJbml0aWFsaXplcyBldmVudCBsaXN0ZW5lcnMgcGVyZm9ybWluZyBYTUwgb3V0cHV0
IGFzIHNwZWNpZmllZCBieQogLy8gVW5pdFRlc3RPcHRpb25zLiBNdXN0IG5vdCBiZSBjYWxsZWQg
YmVmb3JlIEluaXRHb29nbGVUZXN0Lgogdm9pZCBVbml0VGVzdEltcGw6OkNvbmZpZ3VyZVhtbE91
dHB1dCgpIHsKLSAgY29uc3QgU3RyaW5nJiBvdXRwdXRfZm9ybWF0ID0gVW5pdFRlc3RPcHRpb25z
OjpHZXRPdXRwdXRGb3JtYXQoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9mb3JtYXQg
PSBVbml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdCgpOwogICBpZiAob3V0cHV0X2Zvcm1h
dCA9PSAieG1sIikgewogICAgIGxpc3RlbmVycygpLT5TZXREZWZhdWx0WG1sR2VuZXJhdG9yKG5l
dyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIoCiAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0
QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSkpOworICB9IGVsc2UgaWYgKG91dHB1
dF9mb3JtYXQgPT0gImpzb24iKSB7CisgICAgbGlzdGVuZXJzKCktPlNldERlZmF1bHRYbWxHZW5l
cmF0b3IobmV3IEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIoCisgICAgICAgIFVuaXRUZXN0T3B0
aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSkpOwogICB9IGVsc2Ug
aWYgKG91dHB1dF9mb3JtYXQgIT0gIiIpIHsKLSAgICBwcmludGYoIldBUk5JTkc6IHVucmVjb2du
aXplZCBvdXRwdXQgZm9ybWF0IFwiJXNcIiBpZ25vcmVkLlxuIiwKLSAgICAgICAgICAgb3V0cHV0
X2Zvcm1hdC5jX3N0cigpKTsKLSAgICBmZmx1c2goc3Rkb3V0KTsKKyAgICBHVEVTVF9MT0dfKFdB
Uk5JTkcpIDw8ICJXQVJOSU5HOiB1bnJlY29nbml6ZWQgb3V0cHV0IGZvcm1hdCBcIiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IG91dHB1dF9mb3JtYXQgPDwgIlwiIGlnbm9yZWQuIjsKICAg
fQogfQogCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworLy8gSW5pdGlhbGl6ZXMgZXZl
bnQgbGlzdGVuZXJzIGZvciBzdHJlYW1pbmcgdGVzdCByZXN1bHRzIGluIHN0cmluZyBmb3JtLgor
Ly8gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBJbml0R29vZ2xlVGVzdC4KK3ZvaWQgVW5pdFRl
c3RJbXBsOjpDb25maWd1cmVTdHJlYW1pbmdPdXRwdXQoKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5n
JiB0YXJnZXQgPSBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pOworICBpZiAoIXRhcmdldC5l
bXB0eSgpKSB7CisgICAgY29uc3Qgc2l6ZV90IHBvcyA9IHRhcmdldC5maW5kKCc6Jyk7CisgICAg
aWYgKHBvcyAhPSBzdGQ6OnN0cmluZzo6bnBvcykgeworICAgICAgbGlzdGVuZXJzKCktPkFwcGVu
ZChuZXcgU3RyZWFtaW5nTGlzdGVuZXIodGFyZ2V0LnN1YnN0cigwLCBwb3MpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN1YnN0cihwb3Mr
MSkpKTsKKyAgICB9IGVsc2UgeworICAgICAgR1RFU1RfTE9HXyhXQVJOSU5HKSA8PCAidW5yZWNv
Z25pemVkIHN0cmVhbWluZyB0YXJnZXQgXCIiIDw8IHRhcmdldAorICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCAiXCIgaWdub3JlZC4iOworICAgIH0KKyAgfQorfQorI2VuZGlmICAvLyBHVEVT
VF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKIC8vIFBlcmZvcm1zIGluaXRpYWxpemF0aW9uIGRlcGVu
ZGVudCB1cG9uIGZsYWcgdmFsdWVzIG9idGFpbmVkIGluCiAvLyBQYXJzZUdvb2dsZVRlc3RGbGFn
c09ubHkuICBJcyBjYWxsZWQgZnJvbSBJbml0R29vZ2xlVGVzdCBhZnRlciB0aGUgY2FsbCB0bwog
Ly8gUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5LiAgSW4gY2FzZSBhIHVzZXIgbmVnbGVjdHMgdG8g
Y2FsbCBJbml0R29vZ2xlVGVzdApAQCAtMzgzMiw2ICs0OTY0LDExIEBAIHZvaWQgVW5pdFRlc3RJ
bXBsOjpQb3N0RmxhZ1BhcnNpbmdJbml0KCkgewogICBpZiAoIXBvc3RfZmxhZ19wYXJzZV9pbml0
X3BlcmZvcm1lZF8pIHsKICAgICBwb3N0X2ZsYWdfcGFyc2VfaW5pdF9wZXJmb3JtZWRfID0gdHJ1
ZTsKIAorI2lmIGRlZmluZWQoR1RFU1RfQ1VTVE9NX1RFU1RfRVZFTlRfTElTVEVORVJfKQorICAg
IC8vIFJlZ2lzdGVyIHRvIHNlbmQgbm90aWZpY2F0aW9ucyBhYm91dCBrZXkgcHJvY2VzcyBzdGF0
ZSBjaGFuZ2VzLgorICAgIGxpc3RlbmVycygpLT5BcHBlbmQobmV3IEdURVNUX0NVU1RPTV9URVNU
X0VWRU5UX0xJU1RFTkVSXygpKTsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01fVEVT
VF9FVkVOVF9MSVNURU5FUl8pCisKICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogICAgIEluaXRE
ZWF0aFRlc3RTdWJwcm9jZXNzQ29udHJvbEluZm8oKTsKICAgICBTdXBwcmVzc1Rlc3RFdmVudHNJ
ZkluU3VicHJvY2VzcygpOwpAQCAtMzg0NSw2ICs0OTgyLDE4IEBAIHZvaWQgVW5pdFRlc3RJbXBs
OjpQb3N0RmxhZ1BhcnNpbmdJbml0KCkgewogICAgIC8vIENvbmZpZ3VyZXMgbGlzdGVuZXJzIGZv
ciBYTUwgb3V0cHV0LiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIGZvciB1c2VycwogICAgIC8vIHRv
IHNodXQgZG93biB0aGUgZGVmYXVsdCBYTUwgb3V0cHV0IGJlZm9yZSBpbnZva2luZyBSVU5fQUxM
X1RFU1RTLgogICAgIENvbmZpZ3VyZVhtbE91dHB1dCgpOworCisjaWYgR1RFU1RfQ0FOX1NUUkVB
TV9SRVNVTFRTXworICAgIC8vIENvbmZpZ3VyZXMgbGlzdGVuZXJzIGZvciBzdHJlYW1pbmcgdGVz
dCByZXN1bHRzIHRvIHRoZSBzcGVjaWZpZWQgc2VydmVyLgorICAgIENvbmZpZ3VyZVN0cmVhbWlu
Z091dHB1dCgpOworI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKKyNpZiBH
VEVTVF9IQVNfQUJTTAorICAgIGlmIChHVEVTVF9GTEFHKGluc3RhbGxfZmFpbHVyZV9zaWduYWxf
aGFuZGxlcikpIHsKKyAgICAgIGFic2w6OkZhaWx1cmVTaWduYWxIYW5kbGVyT3B0aW9ucyBvcHRp
b25zOworICAgICAgYWJzbDo6SW5zdGFsbEZhaWx1cmVTaWduYWxIYW5kbGVyKG9wdGlvbnMpOwor
ICAgIH0KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0FCU0wKICAgfQogfQogCkBAIC0zODU5LDcgKzUw
MDgsNyBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6UG9zdEZsYWdQYXJzaW5nSW5pdCgpIHsKIGNsYXNz
IFRlc3RDYXNlTmFtZUlzIHsKICBwdWJsaWM6CiAgIC8vIENvbnN0cnVjdG9yLgotICBleHBsaWNp
dCBUZXN0Q2FzZU5hbWVJcyhjb25zdCBTdHJpbmcmIG5hbWUpCisgIGV4cGxpY2l0IFRlc3RDYXNl
TmFtZUlzKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKQogICAgICAgOiBuYW1lXyhuYW1lKSB7fQog
CiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIG5hbWUgb2YgdGVzdF9jYXNlIG1hdGNoZXMgbmFt
ZV8uCkBAIC0zODY4LDcgKzUwMTcsNyBAQCBjbGFzcyBUZXN0Q2FzZU5hbWVJcyB7CiAgIH0KIAog
IHByaXZhdGU6Ci0gIFN0cmluZyBuYW1lXzsKKyAgc3RkOjpzdHJpbmcgbmFtZV87CiB9OwogCiAv
LyBGaW5kcyBhbmQgcmV0dXJucyBhIFRlc3RDYXNlIHdpdGggdGhlIGdpdmVuIG5hbWUuICBJZiBv
bmUgZG9lc24ndApAQCAtMzg3OSwyNiArNTAyOCwyOCBAQCBjbGFzcyBUZXN0Q2FzZU5hbWVJcyB7
CiAvLyBBcmd1bWVudHM6CiAvLwogLy8gICB0ZXN0X2Nhc2VfbmFtZTogbmFtZSBvZiB0aGUgdGVz
dCBjYXNlCisvLyAgIHR5cGVfcGFyYW06ICAgICB0aGUgbmFtZSBvZiB0aGUgdGVzdCBjYXNlJ3Mg
dHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYKKy8vICAgICAgICAgICAgICAgICAgIHRoaXMgaXMg
bm90IGEgdHlwZWQgb3IgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlLgogLy8gICBzZXRf
dXBfdGM6ICAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSB0ZXN0
IGNhc2UKIC8vICAgdGVhcl9kb3duX3RjOiAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQg
dGVhcnMgZG93biB0aGUgdGVzdCBjYXNlCiBUZXN0Q2FzZSogVW5pdFRlc3RJbXBsOjpHZXRUZXN0
Q2FzZShjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0eXBlX3BhcmFtLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGVzdDo6U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdDo6VGVhckRvd25UZXN0Q2FzZUZ1
bmMgdGVhcl9kb3duX3RjKSB7CiAgIC8vIENhbiB3ZSBmaW5kIGEgVGVzdENhc2Ugd2l0aCB0aGUg
Z2l2ZW4gbmFtZT8KLSAgY29uc3Qgc3RkOjp2ZWN0b3I8VGVzdENhc2UqPjo6Y29uc3RfaXRlcmF0
b3IgdGVzdF9jYXNlID0KLSAgICAgIHN0ZDo6ZmluZF9pZih0ZXN0X2Nhc2VzXy5iZWdpbigpLCB0
ZXN0X2Nhc2VzXy5lbmQoKSwKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8VGVzdENhc2UqPjo6Y29uc3Rf
cmV2ZXJzZV9pdGVyYXRvciB0ZXN0X2Nhc2UgPQorICAgICAgc3RkOjpmaW5kX2lmKHRlc3RfY2Fz
ZXNfLnJiZWdpbigpLCB0ZXN0X2Nhc2VzXy5yZW5kKCksCiAgICAgICAgICAgICAgICAgICAgVGVz
dENhc2VOYW1lSXModGVzdF9jYXNlX25hbWUpKTsKIAotICBpZiAodGVzdF9jYXNlICE9IHRlc3Rf
Y2FzZXNfLmVuZCgpKQorICBpZiAodGVzdF9jYXNlICE9IHRlc3RfY2FzZXNfLnJlbmQoKSkKICAg
ICByZXR1cm4gKnRlc3RfY2FzZTsKIAogICAvLyBOby4gIExldCdzIGNyZWF0ZSBvbmUuCiAgIFRl
c3RDYXNlKiBjb25zdCBuZXdfdGVzdF9jYXNlID0KLSAgICAgIG5ldyBUZXN0Q2FzZSh0ZXN0X2Nh
c2VfbmFtZSwgY29tbWVudCwgc2V0X3VwX3RjLCB0ZWFyX2Rvd25fdGMpOworICAgICAgbmV3IFRl
c3RDYXNlKHRlc3RfY2FzZV9uYW1lLCB0eXBlX3BhcmFtLCBzZXRfdXBfdGMsIHRlYXJfZG93bl90
Yyk7CiAKICAgLy8gSXMgdGhpcyBhIGRlYXRoIHRlc3QgY2FzZT8KLSAgaWYgKGludGVybmFsOjpV
bml0VGVzdE9wdGlvbnM6Ok1hdGNoZXNGaWx0ZXIoU3RyaW5nKHRlc3RfY2FzZV9uYW1lKSwKKyAg
aWYgKGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6Ok1hdGNoZXNGaWx0ZXIodGVzdF9jYXNlX25h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtEZWF0
aFRlc3RDYXNlRmlsdGVyKSkgewogICAgIC8vIFllcy4gIEluc2VydHMgdGhlIHRlc3QgY2FzZSBh
ZnRlciB0aGUgbGFzdCBkZWF0aCB0ZXN0IGNhc2UKICAgICAvLyBkZWZpbmVkIHNvIGZhci4gIFRo
aXMgb25seSB3b3JrcyB3aGVuIHRoZSB0ZXN0IGNhc2VzIGhhdmVuJ3QKQEAgLTM5MjIsMjcgKzUw
NzMsMjEgQEAgc3RhdGljIHZvaWQgU2V0VXBFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KSB7
IGVudi0+U2V0VXAoKTsgfQogc3RhdGljIHZvaWQgVGVhckRvd25FbnZpcm9ubWVudChFbnZpcm9u
bWVudCogZW52KSB7IGVudi0+VGVhckRvd24oKTsgfQogCiAvLyBSdW5zIGFsbCB0ZXN0cyBpbiB0
aGlzIFVuaXRUZXN0IG9iamVjdCwgcHJpbnRzIHRoZSByZXN1bHQsIGFuZAotLy8gcmV0dXJucyAw
IGlmIGFsbCB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3IgMSBvdGhlcndpc2UuICBJZiBhbnkKLS8v
IGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIGEgdGVzdCBvbiBXaW5kb3dzLCB0aGlzIHRlc3Qg
aXMKLS8vIGNvbnNpZGVyZWQgdG8gYmUgZmFpbGVkLCBidXQgdGhlIHJlc3Qgb2YgdGhlIHRlc3Rz
IHdpbGwgc3RpbGwgYmUKLS8vIHJ1bi4gIChXZSBkaXNhYmxlIGV4Y2VwdGlvbnMgb24gTGludXgg
YW5kIE1hYyBPUyBYLCBzbyB0aGUgaXNzdWUKLS8vIGRvZXNuJ3QgYXBwbHkgdGhlcmUuKQorLy8g
cmV0dXJucyB0cnVlIGlmIGFsbCB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bC4gIElmIGFueSBleGNlcHRp
b24gaXMKKy8vIHRocm93biBkdXJpbmcgYSB0ZXN0LCB0aGUgdGVzdCBpcyBjb25zaWRlcmVkIHRv
IGJlIGZhaWxlZCwgYnV0IHRoZQorLy8gcmVzdCBvZiB0aGUgdGVzdHMgd2lsbCBzdGlsbCBiZSBy
dW4uCisvLwogLy8gV2hlbiBwYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBlbmFibGVkLCBpdCBleHBh
bmRzIGFuZCByZWdpc3RlcnMKIC8vIHBhcmFtZXRlcml6ZWQgdGVzdHMgZmlyc3QgaW4gUmVnaXN0
ZXJQYXJhbWV0ZXJpemVkVGVzdHMoKS4KIC8vIEFsbCBvdGhlciBmdW5jdGlvbnMgY2FsbGVkIGZy
b20gUnVuQWxsVGVzdHMoKSBtYXkgc2FmZWx5IGFzc3VtZSB0aGF0CiAvLyBwYXJhbWV0ZXJpemVk
IHRlc3RzIGFyZSByZWFkeSB0byBiZSBjb3VudGVkIGFuZCBydW4uCi1pbnQgVW5pdFRlc3RJbXBs
OjpSdW5BbGxUZXN0cygpIHsKLSAgLy8gTWFrZXMgc3VyZSBJbml0R29vZ2xlVGVzdCgpIHdhcyBj
YWxsZWQuCi0gIGlmICghR1Rlc3RJc0luaXRpYWxpemVkKCkpIHsKLSAgICBwcmludGYoIiVzIiwK
LSAgICAgICAgICAgIlxuVGhpcyB0ZXN0IHByb2dyYW0gZGlkIE5PVCBjYWxsIDo6dGVzdGluZzo6
SW5pdEdvb2dsZVRlc3QgIgotICAgICAgICAgICAiYmVmb3JlIGNhbGxpbmcgUlVOX0FMTF9URVNU
UygpLiAgUGxlYXNlIGZpeCBpdC5cbiIpOwotICAgIHJldHVybiAxOwotICB9Citib29sIFVuaXRU
ZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7CisgIC8vIFRydWUgaWZmIEdvb2dsZSBUZXN0IGlzIGlu
aXRpYWxpemVkIGJlZm9yZSBSVU5fQUxMX1RFU1RTKCkgaXMgY2FsbGVkLgorICBjb25zdCBib29s
IGd0ZXN0X2lzX2luaXRpYWxpemVkX2JlZm9yZV9ydW5fYWxsX3Rlc3RzID0gR1Rlc3RJc0luaXRp
YWxpemVkKCk7CiAKICAgLy8gRG8gbm90IHJ1biBhbnkgdGVzdCBpZiB0aGUgLS1oZWxwIGZsYWcg
d2FzIHNwZWNpZmllZC4KICAgaWYgKGdfaGVscF9mbGFnKQotICAgIHJldHVybiAwOworICAgIHJl
dHVybiB0cnVlOwogCiAgIC8vIFJlcGVhdHMgdGhlIGNhbGwgdG8gdGhlIHBvc3QtZmxhZyBwYXJz
aW5nIGluaXRpYWxpemF0aW9uIGluIGNhc2UgdGhlCiAgIC8vIHVzZXIgZGlkbid0IGNhbGwgSW5p
dEdvb2dsZVRlc3QuCkBAIC0zOTU5LDYgKzUxMDQsMTEgQEAgaW50IFVuaXRUZXN0SW1wbDo6UnVu
QWxsVGVzdHMoKSB7CiAKICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogICBpbl9zdWJwcm9jZXNz
X2Zvcl9kZWF0aF90ZXN0ID0gKGludGVybmFsX3J1bl9kZWF0aF90ZXN0X2ZsYWdfLmdldCgpICE9
IE5VTEwpOworIyBpZiBkZWZpbmVkKEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ0hJTERfU0VUVVBf
KQorICBpZiAoaW5fc3VicHJvY2Vzc19mb3JfZGVhdGhfdGVzdCkgeworICAgIEdURVNUX0VYVFJB
X0RFQVRIX1RFU1RfQ0hJTERfU0VUVVBfKCk7CisgIH0KKyMgZW5kaWYgIC8vIGRlZmluZWQoR1RF
U1RfRVhUUkFfREVBVEhfVEVTVF9DSElMRF9TRVRVUF8pCiAjZW5kaWYgIC8vIEdURVNUX0hBU19E
RUFUSF9URVNUCiAKICAgY29uc3QgYm9vbCBzaG91bGRfc2hhcmQgPSBTaG91bGRTaGFyZChrVGVz
dFRvdGFsU2hhcmRzLCBrVGVzdFNoYXJkSW5kZXgsCkBAIC0zOTc0LDcgKzUxMjQsNyBAQCBpbnQg
VW5pdFRlc3RJbXBsOjpSdW5BbGxUZXN0cygpIHsKICAgaWYgKEdURVNUX0ZMQUcobGlzdF90ZXN0
cykpIHsKICAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkICphZnRlciogRmlsdGVyVGVzdHMoKSBo
YXMgYmVlbiBjYWxsZWQuCiAgICAgTGlzdFRlc3RzTWF0Y2hpbmdGaWx0ZXIoKTsKLSAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gdHJ1ZTsKICAgfQogCiAgIHJhbmRvbV9zZWVkXyA9IEdURVNUX0ZM
QUcoc2h1ZmZsZSkgPwpAQCAtMzk4NSw2ICs1MTM1LDcgQEAgaW50IFVuaXRUZXN0SW1wbDo6UnVu
QWxsVGVzdHMoKSB7CiAKICAgVGVzdEV2ZW50TGlzdGVuZXIqIHJlcGVhdGVyID0gbGlzdGVuZXJz
KCktPnJlcGVhdGVyKCk7CiAKKyAgc3RhcnRfdGltZXN0YW1wXyA9IEdldFRpbWVJbk1pbGxpcygp
OwogICByZXBlYXRlci0+T25UZXN0UHJvZ3JhbVN0YXJ0KCpwYXJlbnRfKTsKIAogICAvLyBIb3cg
bWFueSB0aW1lcyB0byByZXBlYXQgdGhlIHRlc3RzPyAgV2UgZG9uJ3Qgd2FudCB0byByZXBlYXQg
dGhlbQpAQCAtMzk5Myw3ICs1MTQ0LDkgQEAgaW50IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMo
KSB7CiAgIC8vIFJlcGVhdHMgZm9yZXZlciBpZiB0aGUgcmVwZWF0IGNvdW50IGlzIG5lZ2F0aXZl
LgogICBjb25zdCBib29sIGZvcmV2ZXIgPSByZXBlYXQgPCAwOwogICBmb3IgKGludCBpID0gMDsg
Zm9yZXZlciB8fCBpICE9IHJlcGVhdDsgaSsrKSB7Ci0gICAgQ2xlYXJSZXN1bHQoKTsKKyAgICAv
LyBXZSB3YW50IHRvIHByZXNlcnZlIGZhaWx1cmVzIGdlbmVyYXRlZCBieSBhZC1ob2MgdGVzdAor
ICAgIC8vIGFzc2VydGlvbnMgZXhlY3V0ZWQgYmVmb3JlIFJVTl9BTExfVEVTVFMoKS4KKyAgICBD
bGVhck5vbkFkSG9jVGVzdFJlc3VsdCgpOwogCiAgICAgY29uc3QgVGltZUluTWlsbGlzIHN0YXJ0
ID0gR2V0VGltZUluTWlsbGlzKCk7CiAKQEAgLTQwNTgsOCArNTIxMSwyMSBAQCBpbnQgVW5pdFRl
c3RJbXBsOjpSdW5BbGxUZXN0cygpIHsKIAogICByZXBlYXRlci0+T25UZXN0UHJvZ3JhbUVuZCgq
cGFyZW50Xyk7CiAKLSAgLy8gUmV0dXJucyAwIGlmIGFsbCB0ZXN0cyBwYXNzZWQsIG9yIDEgb3Ro
ZXIgd2lzZS4KLSAgcmV0dXJuIGZhaWxlZCA/IDEgOiAwOworICBpZiAoIWd0ZXN0X2lzX2luaXRp
YWxpemVkX2JlZm9yZV9ydW5fYWxsX3Rlc3RzKSB7CisgICAgQ29sb3JlZFByaW50ZigKKyAgICAg
ICAgQ09MT1JfUkVELAorICAgICAgICAiXG5JTVBPUlRBTlQgTk9USUNFIC0gRE8gTk9UIElHTk9S
RTpcbiIKKyAgICAgICAgIlRoaXMgdGVzdCBwcm9ncmFtIGRpZCBOT1QgY2FsbCAiIEdURVNUX0lO
SVRfR09PR0xFX1RFU1RfTkFNRV8KKyAgICAgICAgIigpIGJlZm9yZSBjYWxsaW5nIFJVTl9BTExf
VEVTVFMoKS4gVGhpcyBpcyBJTlZBTElELiBTb29uICIgR1RFU1RfTkFNRV8KKyAgICAgICAgIiB3
aWxsIHN0YXJ0IHRvIGVuZm9yY2UgdGhlIHZhbGlkIHVzYWdlLiAiCisgICAgICAgICJQbGVhc2Ug
Zml4IGl0IEFTQVAsIG9yIElUIFdJTEwgU1RBUlQgVE8gRkFJTC5cbiIpOyAgLy8gTk9MSU5UCisj
aWYgR1RFU1RfRk9SX0dPT0dMRV8KKyAgICBDb2xvcmVkUHJpbnRmKENPTE9SX1JFRCwKKyAgICAg
ICAgICAgICAgICAgICJGb3IgbW9yZSBkZXRhaWxzLCBzZWUgaHR0cDovL3dpa2kvTWFpbi9WYWxp
ZEdVbml0TWFpbi5cbiIpOworI2VuZGlmICAvLyBHVEVTVF9GT1JfR09PR0xFXworICB9CisKKyAg
cmV0dXJuICFmYWlsZWQ7CiB9CiAKIC8vIFJlYWRzIHRoZSBHVEVTVF9TSEFSRF9TVEFUVVNfRklM
RSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYW5kIGNyZWF0ZXMgdGhlIGZpbGUKQEAgLTQxMzMsNyAr
NTI5OSw3IEBAIGJvb2wgU2hvdWxkU2hhcmQoY29uc3QgY2hhciogdG90YWxfc2hhcmRzX2VudiwK
IC8vIFBhcnNlcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgdmFyIGFzIGFuIEludDMyLiBJZiBp
dCBpcyB1bnNldCwKIC8vIHJldHVybnMgZGVmYXVsdF92YWwuIElmIGl0IGlzIG5vdCBhbiBJbnQz
MiwgcHJpbnRzIGFuIGVycm9yCiAvLyBhbmQgYWJvcnRzLgotSW50MzIgSW50MzJGcm9tRW52T3JE
aWUoY29uc3QgY2hhciogY29uc3QgdmFyLCBJbnQzMiBkZWZhdWx0X3ZhbCkgeworSW50MzIgSW50
MzJGcm9tRW52T3JEaWUoY29uc3QgY2hhciogdmFyLCBJbnQzMiBkZWZhdWx0X3ZhbCkgewogICBj
b25zdCBjaGFyKiBzdHJfdmFsID0gcG9zaXg6OkdldEVudih2YXIpOwogICBpZiAoc3RyX3ZhbCA9
PSBOVUxMKSB7CiAgICAgcmV0dXJuIGRlZmF1bHRfdmFsOwpAQCAtNDE2MCw4ICs1MzI2LDggQEAg
Ym9vbCBTaG91bGRSdW5UZXN0T25TaGFyZChpbnQgdG90YWxfc2hhcmRzLCBpbnQgc2hhcmRfaW5k
ZXgsIGludCB0ZXN0X2lkKSB7CiAvLyBlYWNoIFRlc3RDYXNlIGFuZCBUZXN0SW5mbyBvYmplY3Qu
CiAvLyBJZiBzaGFyZF90ZXN0cyA9PSB0cnVlLCBmdXJ0aGVyIGZpbHRlcnMgdGVzdHMgYmFzZWQg
b24gc2hhcmRpbmcKIC8vIHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQgLSBzZWUKLS8vIGh0
dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L3dpa2kvR29vZ2xlVGVzdEFkdmFuY2Vk
R3VpZGUuCi0vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGVzdHMgdGhhdCBzaG91bGQgcnVuLgor
Ly8gaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2ds
ZXRlc3QvZG9jcy9hZHZhbmNlZC5tZAorLy8gLiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGVzdHMg
dGhhdCBzaG91bGQgcnVuLgogaW50IFVuaXRUZXN0SW1wbDo6RmlsdGVyVGVzdHMoUmVhY3Rpb25U
b1NoYXJkaW5nIHNoYXJkX3Rlc3RzKSB7CiAgIGNvbnN0IEludDMyIHRvdGFsX3NoYXJkcyA9IHNo
YXJkX3Rlc3RzID09IEhPTk9SX1NIQVJESU5HX1BST1RPQ09MID8KICAgICAgIEludDMyRnJvbUVu
dk9yRGllKGtUZXN0VG90YWxTaGFyZHMsIC0xKSA6IC0xOwpAQCAtNDE3NiwxMiArNTM0MiwxMiBA
QCBpbnQgVW5pdFRlc3RJbXBsOjpGaWx0ZXJUZXN0cyhSZWFjdGlvblRvU2hhcmRpbmcgc2hhcmRf
dGVzdHMpIHsKICAgaW50IG51bV9zZWxlY3RlZF90ZXN0cyA9IDA7CiAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdGVzdF9jYXNlc18uc2l6ZSgpOyBpKyspIHsKICAgICBUZXN0Q2FzZSogY29uc3Qg
dGVzdF9jYXNlID0gdGVzdF9jYXNlc19baV07Ci0gICAgY29uc3QgU3RyaW5nICZ0ZXN0X2Nhc2Vf
bmFtZSA9IHRlc3RfY2FzZS0+bmFtZSgpOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0X2Nh
c2VfbmFtZSA9IHRlc3RfY2FzZS0+bmFtZSgpOwogICAgIHRlc3RfY2FzZS0+c2V0X3Nob3VsZF9y
dW4oZmFsc2UpOwogCiAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCB0ZXN0X2Nhc2UtPnRlc3Rf
aW5mb19saXN0KCkuc2l6ZSgpOyBqKyspIHsKICAgICAgIFRlc3RJbmZvKiBjb25zdCB0ZXN0X2lu
Zm8gPSB0ZXN0X2Nhc2UtPnRlc3RfaW5mb19saXN0KClbal07Ci0gICAgICBjb25zdCBTdHJpbmcg
dGVzdF9uYW1lKHRlc3RfaW5mby0+bmFtZSgpKTsKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRl
c3RfbmFtZSh0ZXN0X2luZm8tPm5hbWUoKSk7CiAgICAgICAvLyBBIHRlc3QgaXMgZGlzYWJsZWQg
aWYgdGVzdCBjYXNlIG5hbWUgb3IgdGVzdCBuYW1lIG1hdGNoZXMKICAgICAgIC8vIGtEaXNhYmxl
VGVzdEZpbHRlci4KICAgICAgIGNvbnN0IGJvb2wgaXNfZGlzYWJsZWQgPQpAQCAtNDE4OSwzNCAr
NTM1NSw2MCBAQCBpbnQgVW5pdFRlc3RJbXBsOjpGaWx0ZXJUZXN0cyhSZWFjdGlvblRvU2hhcmRp
bmcgc2hhcmRfdGVzdHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtEaXNhYmxlVGVzdEZpbHRlcikgfHwKICAgICAgICAgICBpbnRlcm5hbDo6
VW5pdFRlc3RPcHRpb25zOjpNYXRjaGVzRmlsdGVyKHRlc3RfbmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtEaXNhYmxlVGVzdEZpbHRlcik7
Ci0gICAgICB0ZXN0X2luZm8tPmltcGwoKS0+c2V0X2lzX2Rpc2FibGVkKGlzX2Rpc2FibGVkKTsK
KyAgICAgIHRlc3RfaW5mby0+aXNfZGlzYWJsZWRfID0gaXNfZGlzYWJsZWQ7CiAKICAgICAgIGNv
bnN0IGJvb2wgbWF0Y2hlc19maWx0ZXIgPQogICAgICAgICAgIGludGVybmFsOjpVbml0VGVzdE9w
dGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KHRlc3RfY2FzZV9uYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbmFtZSk7Ci0gICAg
ICB0ZXN0X2luZm8tPmltcGwoKS0+c2V0X21hdGNoZXNfZmlsdGVyKG1hdGNoZXNfZmlsdGVyKTsK
KyAgICAgIHRlc3RfaW5mby0+bWF0Y2hlc19maWx0ZXJfID0gbWF0Y2hlc19maWx0ZXI7CiAKICAg
ICAgIGNvbnN0IGJvb2wgaXNfcnVubmFibGUgPQogICAgICAgICAgIChHVEVTVF9GTEFHKGFsc29f
cnVuX2Rpc2FibGVkX3Rlc3RzKSB8fCAhaXNfZGlzYWJsZWQpICYmCiAgICAgICAgICAgbWF0Y2hl
c19maWx0ZXI7CiAKLSAgICAgIGNvbnN0IGJvb2wgaXNfc2VsZWN0ZWQgPSBpc19ydW5uYWJsZSAm
JgotICAgICAgICAgIChzaGFyZF90ZXN0cyA9PSBJR05PUkVfU0hBUkRJTkdfUFJPVE9DT0wgfHwK
LSAgICAgICAgICAgU2hvdWxkUnVuVGVzdE9uU2hhcmQodG90YWxfc2hhcmRzLCBzaGFyZF9pbmRl
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3J1bm5hYmxlX3Rlc3RzKSk7
CisgICAgICBjb25zdCBib29sIGlzX2luX2Fub3RoZXJfc2hhcmQgPQorICAgICAgICAgIHNoYXJk
X3Rlc3RzICE9IElHTk9SRV9TSEFSRElOR19QUk9UT0NPTCAmJgorICAgICAgICAgICFTaG91bGRS
dW5UZXN0T25TaGFyZCh0b3RhbF9zaGFyZHMsIHNoYXJkX2luZGV4LCBudW1fcnVubmFibGVfdGVz
dHMpOworICAgICAgdGVzdF9pbmZvLT5pc19pbl9hbm90aGVyX3NoYXJkXyA9IGlzX2luX2Fub3Ro
ZXJfc2hhcmQ7CisgICAgICBjb25zdCBib29sIGlzX3NlbGVjdGVkID0gaXNfcnVubmFibGUgJiYg
IWlzX2luX2Fub3RoZXJfc2hhcmQ7CiAKICAgICAgIG51bV9ydW5uYWJsZV90ZXN0cyArPSBpc19y
dW5uYWJsZTsKICAgICAgIG51bV9zZWxlY3RlZF90ZXN0cyArPSBpc19zZWxlY3RlZDsKIAotICAg
ICAgdGVzdF9pbmZvLT5pbXBsKCktPnNldF9zaG91bGRfcnVuKGlzX3NlbGVjdGVkKTsKKyAgICAg
IHRlc3RfaW5mby0+c2hvdWxkX3J1bl8gPSBpc19zZWxlY3RlZDsKICAgICAgIHRlc3RfY2FzZS0+
c2V0X3Nob3VsZF9ydW4odGVzdF9jYXNlLT5zaG91bGRfcnVuKCkgfHwgaXNfc2VsZWN0ZWQpOwog
ICAgIH0KICAgfQogICByZXR1cm4gbnVtX3NlbGVjdGVkX3Rlc3RzOwogfQogCisvLyBQcmludHMg
dGhlIGdpdmVuIEMtc3RyaW5nIG9uIGEgc2luZ2xlIGxpbmUgYnkgcmVwbGFjaW5nIGFsbCAnXG4n
CisvLyBjaGFyYWN0ZXJzIHdpdGggc3RyaW5nICJcXG4iLiAgSWYgdGhlIG91dHB1dCB0YWtlcyBt
b3JlIHRoYW4KKy8vIG1heF9sZW5ndGggY2hhcmFjdGVycywgb25seSBwcmludHMgdGhlIGZpcnN0
IG1heF9sZW5ndGggY2hhcmFjdGVycworLy8gYW5kICIuLi4iLgorc3RhdGljIHZvaWQgUHJpbnRP
bk9uZUxpbmUoY29uc3QgY2hhciogc3RyLCBpbnQgbWF4X2xlbmd0aCkgeworICBpZiAoc3RyICE9
IE5VTEwpIHsKKyAgICBmb3IgKGludCBpID0gMDsgKnN0ciAhPSAnXDAnOyArK3N0cikgeworICAg
ICAgaWYgKGkgPj0gbWF4X2xlbmd0aCkgeworICAgICAgICBwcmludGYoIi4uLiIpOworICAgICAg
ICBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmICgqc3RyID09ICdcbicpIHsKKyAgICAgICAgcHJp
bnRmKCJcXG4iKTsKKyAgICAgICAgaSArPSAyOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHJp
bnRmKCIlYyIsICpzdHIpOworICAgICAgICArK2k7CisgICAgICB9CisgICAgfQorICB9Cit9CisK
IC8vIFByaW50cyB0aGUgbmFtZXMgb2YgdGhlIHRlc3RzIG1hdGNoaW5nIHRoZSB1c2VyLXNwZWNp
ZmllZCBmaWx0ZXIgZmxhZy4KIHZvaWQgVW5pdFRlc3RJbXBsOjpMaXN0VGVzdHNNYXRjaGluZ0Zp
bHRlcigpIHsKKyAgLy8gUHJpbnQgYXQgbW9zdCB0aGlzIG1hbnkgY2hhcmFjdGVycyBmb3IgZWFj
aCB0eXBlL3ZhbHVlIHBhcmFtZXRlci4KKyAgY29uc3QgaW50IGtNYXhQYXJhbUxlbmd0aCA9IDI1
MDsKKwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXNfLnNpemUoKTsgaSsrKSB7
CiAgICAgY29uc3QgVGVzdENhc2UqIGNvbnN0IHRlc3RfY2FzZSA9IHRlc3RfY2FzZXNfW2ldOwog
ICAgIGJvb2wgcHJpbnRlZF90ZXN0X2Nhc2VfbmFtZSA9IGZhbHNlOwpAQCAtNDIyNCwxNiArNTQx
Niw0NyBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6TGlzdFRlc3RzTWF0Y2hpbmdGaWx0ZXIoKSB7CiAg
ICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCB0ZXN0X2Nhc2UtPnRlc3RfaW5mb19saXN0KCkuc2l6
ZSgpOyBqKyspIHsKICAgICAgIGNvbnN0IFRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQogICAg
ICAgICAgIHRlc3RfY2FzZS0+dGVzdF9pbmZvX2xpc3QoKVtqXTsKLSAgICAgIGlmICh0ZXN0X2lu
Zm8tPm1hdGNoZXNfZmlsdGVyKCkpIHsKKyAgICAgIGlmICh0ZXN0X2luZm8tPm1hdGNoZXNfZmls
dGVyXykgewogICAgICAgICBpZiAoIXByaW50ZWRfdGVzdF9jYXNlX25hbWUpIHsKICAgICAgICAg
ICBwcmludGVkX3Rlc3RfY2FzZV9uYW1lID0gdHJ1ZTsKLSAgICAgICAgICBwcmludGYoIiVzLlxu
IiwgdGVzdF9jYXNlLT5uYW1lKCkpOworICAgICAgICAgIHByaW50ZigiJXMuIiwgdGVzdF9jYXNl
LT5uYW1lKCkpOworICAgICAgICAgIGlmICh0ZXN0X2Nhc2UtPnR5cGVfcGFyYW0oKSAhPSBOVUxM
KSB7CisgICAgICAgICAgICBwcmludGYoIiAgIyAlcyA9ICIsIGtUeXBlUGFyYW1MYWJlbCk7Cisg
ICAgICAgICAgICAvLyBXZSBwcmludCB0aGUgdHlwZSBwYXJhbWV0ZXIgb24gYSBzaW5nbGUgbGlu
ZSB0byBtYWtlCisgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IGVhc3kgdG8gcGFyc2UgYnkgYSBw
cm9ncmFtLgorICAgICAgICAgICAgUHJpbnRPbk9uZUxpbmUodGVzdF9jYXNlLT50eXBlX3BhcmFt
KCksIGtNYXhQYXJhbUxlbmd0aCk7CisgICAgICAgICAgfQorICAgICAgICAgIHByaW50ZigiXG4i
KTsKKyAgICAgICAgfQorICAgICAgICBwcmludGYoIiAgJXMiLCB0ZXN0X2luZm8tPm5hbWUoKSk7
CisgICAgICAgIGlmICh0ZXN0X2luZm8tPnZhbHVlX3BhcmFtKCkgIT0gTlVMTCkgeworICAgICAg
ICAgIHByaW50ZigiICAjICVzID0gIiwga1ZhbHVlUGFyYW1MYWJlbCk7CisgICAgICAgICAgLy8g
V2UgcHJpbnQgdGhlIHZhbHVlIHBhcmFtZXRlciBvbiBhIHNpbmdsZSBsaW5lIHRvIG1ha2UgdGhl
CisgICAgICAgICAgLy8gb3V0cHV0IGVhc3kgdG8gcGFyc2UgYnkgYSBwcm9ncmFtLgorICAgICAg
ICAgIFByaW50T25PbmVMaW5lKHRlc3RfaW5mby0+dmFsdWVfcGFyYW0oKSwga01heFBhcmFtTGVu
Z3RoKTsKICAgICAgICAgfQotICAgICAgICBwcmludGYoIiAgJXNcbiIsIHRlc3RfaW5mby0+bmFt
ZSgpKTsKKyAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgICAgfQogICAgIH0KICAgfQogICBmZmx1
c2goc3Rkb3V0KTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9mb3JtYXQgPSBVbml0VGVz
dE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdCgpOworICBpZiAob3V0cHV0X2Zvcm1hdCA9PSAieG1s
IiB8fCBvdXRwdXRfZm9ybWF0ID09ICJqc29uIikgeworICAgIEZJTEUqIGZpbGVvdXQgPSBPcGVu
RmlsZUZvcldyaXRpbmcoCisgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRo
VG9PdXRwdXRGaWxlKCkuY19zdHIoKSk7CisgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOwor
ICAgIGlmIChvdXRwdXRfZm9ybWF0ID09ICJ4bWwiKSB7CisgICAgICBYbWxVbml0VGVzdFJlc3Vs
dFByaW50ZXIoCisgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091
dHB1dEZpbGUoKS5jX3N0cigpKQorICAgICAgICAgIC5QcmludFhtbFRlc3RzTGlzdCgmc3RyZWFt
LCB0ZXN0X2Nhc2VzXyk7CisgICAgfSBlbHNlIGlmIChvdXRwdXRfZm9ybWF0ID09ICJqc29uIikg
eworICAgICAgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcigKKyAgICAgICAgICBVbml0VGVzdE9w
dGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpCisgICAgICAgICAg
LlByaW50SnNvblRlc3RMaXN0KCZzdHJlYW0sIHRlc3RfY2FzZXNfKTsKKyAgICB9CisgICAgZnBy
aW50ZihmaWxlb3V0LCAiJXMiLCBTdHJpbmdTdHJlYW1Ub1N0cmluZygmc3RyZWFtKS5jX3N0cigp
KTsKKyAgICBmY2xvc2UoZmlsZW91dCk7CisgIH0KIH0KIAogLy8gU2V0cyB0aGUgT1Mgc3RhY2sg
dHJhY2UgZ2V0dGVyLgpAQCAtNDI1NCwxNyArNTQ3NywyNSBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6
c2V0X29zX3N0YWNrX3RyYWNlX2dldHRlcigKIC8vIGdldHRlciwgYW5kIHJldHVybnMgaXQuCiBP
c1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UqIFVuaXRUZXN0SW1wbDo6b3Nfc3RhY2tfdHJhY2Vf
Z2V0dGVyKCkgewogICBpZiAob3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXyA9PSBOVUxMKSB7CisjaWZk
ZWYgR1RFU1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVSXworICAgIG9zX3N0YWNrX3RyYWNlX2dldHRl
cl8gPSBuZXcgR1RFU1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVSXzsKKyNlbHNlCiAgICAgb3Nfc3Rh
Y2tfdHJhY2VfZ2V0dGVyXyA9IG5ldyBPc1N0YWNrVHJhY2VHZXR0ZXI7CisjZW5kaWYgIC8vIEdU
RVNUX09TX1NUQUNLX1RSQUNFX0dFVFRFUl8KICAgfQogCiAgIHJldHVybiBvc19zdGFja190cmFj
ZV9nZXR0ZXJfOwogfQogCi0vLyBSZXR1cm5zIHRoZSBUZXN0UmVzdWx0IGZvciB0aGUgdGVzdCB0
aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcsIG9yCi0vLyB0aGUgVGVzdFJlc3VsdCBmb3IgdGhlIGFk
IGhvYyB0ZXN0IGlmIG5vIHRlc3QgaXMgcnVubmluZy4KKy8vIFJldHVybnMgdGhlIG1vc3Qgc3Bl
Y2lmaWMgVGVzdFJlc3VsdCBjdXJyZW50bHkgcnVubmluZy4KIFRlc3RSZXN1bHQqIFVuaXRUZXN0
SW1wbDo6Y3VycmVudF90ZXN0X3Jlc3VsdCgpIHsKLSAgcmV0dXJuIGN1cnJlbnRfdGVzdF9pbmZv
XyA/Ci0gICAgY3VycmVudF90ZXN0X2luZm9fLT5pbXBsKCktPnJlc3VsdCgpIDogJmFkX2hvY190
ZXN0X3Jlc3VsdF87CisgIGlmIChjdXJyZW50X3Rlc3RfaW5mb18gIT0gTlVMTCkgeworICAgIHJl
dHVybiAmY3VycmVudF90ZXN0X2luZm9fLT5yZXN1bHRfOworICB9CisgIGlmIChjdXJyZW50X3Rl
c3RfY2FzZV8gIT0gTlVMTCkgeworICAgIHJldHVybiAmY3VycmVudF90ZXN0X2Nhc2VfLT5hZF9o
b2NfdGVzdF9yZXN1bHRfOworICB9CisgIHJldHVybiAmYWRfaG9jX3Rlc3RfcmVzdWx0XzsKIH0K
IAogLy8gU2h1ZmZsZXMgYWxsIHRlc3QgY2FzZXMsIGFuZCB0aGUgdGVzdHMgd2l0aGluIGVhY2gg
dGVzdCBjYXNlLApAQCAtNDI5MywzMyArNTUyNCw3IEBAIHZvaWQgVW5pdFRlc3RJbXBsOjpVbnNo
dWZmbGVUZXN0cygpIHsKICAgfQogfQogCi0vLyBUZXN0SW5mb0ltcGwgY29uc3RydWN0b3IuIFRo
ZSBuZXcgaW5zdGFuY2UgYXNzdW1lcyBvd25lcnNoaXAgb2YgdGhlIHRlc3QKLS8vIGZhY3Rvcnkg
b2JqZWN0LgotVGVzdEluZm9JbXBsOjpUZXN0SW5mb0ltcGwoVGVzdEluZm8qIHBhcmVudCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfdGVzdF9jYXNlX25hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX25hbWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX3Rlc3RfY2FzZV9jb21tZW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV9jb21tZW50LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVHlwZUlkIGFfZml4dHVyZV9jbGFzc19pZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludGVybmFsOjpUZXN0RmFjdG9yeUJhc2UqIGZhY3RvcnkpIDoKLSAgICBw
YXJlbnRfKHBhcmVudCksCi0gICAgdGVzdF9jYXNlX25hbWVfKFN0cmluZyhhX3Rlc3RfY2FzZV9u
YW1lKSksCi0gICAgbmFtZV8oU3RyaW5nKGFfbmFtZSkpLAotICAgIHRlc3RfY2FzZV9jb21tZW50
XyhTdHJpbmcoYV90ZXN0X2Nhc2VfY29tbWVudCkpLAotICAgIGNvbW1lbnRfKFN0cmluZyhhX2Nv
bW1lbnQpKSwKLSAgICBmaXh0dXJlX2NsYXNzX2lkXyhhX2ZpeHR1cmVfY2xhc3NfaWQpLAotICAg
IHNob3VsZF9ydW5fKGZhbHNlKSwKLSAgICBpc19kaXNhYmxlZF8oZmFsc2UpLAotICAgIG1hdGNo
ZXNfZmlsdGVyXyhmYWxzZSksCi0gICAgZmFjdG9yeV8oZmFjdG9yeSkgewotfQotCi0vLyBUZXN0
SW5mb0ltcGwgZGVzdHJ1Y3Rvci4KLVRlc3RJbmZvSW1wbDo6flRlc3RJbmZvSW1wbCgpIHsKLSAg
ZGVsZXRlIGZhY3RvcnlfOwotfQotCi0vLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRy
YWNlIGFzIGEgU3RyaW5nLgorLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBh
cyBhbiBzdGQ6OnN0cmluZy4KIC8vCiAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhY2sgZnJh
bWVzIHRvIGJlIGluY2x1ZGVkIGlzIHNwZWNpZmllZCBieQogLy8gdGhlIGd0ZXN0X3N0YWNrX3Ry
YWNlX2RlcHRoIGZsYWcuICBUaGUgc2tpcF9jb3VudCBwYXJhbWV0ZXIKQEAgLTQzMjksMTUgKzU1
MzQsMTUgQEAgVGVzdEluZm9JbXBsOjp+VGVzdEluZm9JbXBsKCkgewogLy8gRm9yIGV4YW1wbGUs
IGlmIEZvbygpIGNhbGxzIEJhcigpLCB3aGljaCBpbiB0dXJuIGNhbGxzCiAvLyBHZXRDdXJyZW50
T3NTdGFja1RyYWNlRXhjZXB0VG9wKC4uLiwgMSksIEZvbygpIHdpbGwgYmUgaW5jbHVkZWQgaW4K
IC8vIHRoZSB0cmFjZSBidXQgQmFyKCkgYW5kIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRU
b3AoKSB3b24ndC4KLVN0cmluZyBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKFVuaXRU
ZXN0KiAvKnVuaXRfdGVzdCovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHNraXBfY291bnQpIHsKK3N0ZDo6c3RyaW5nIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VF
eGNlcHRUb3AoVW5pdFRlc3QqIC8qdW5pdF90ZXN0Ki8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBza2lwX2NvdW50KSB7CiAgIC8vIFdlIHBhc3Mgc2tp
cF9jb3VudCArIDEgdG8gc2tpcCB0aGlzIHdyYXBwZXIgZnVuY3Rpb24gaW4gYWRkaXRpb24KICAg
Ly8gdG8gd2hhdCB0aGUgdXNlciByZWFsbHkgd2FudHMgdG8gc2tpcC4KICAgcmV0dXJuIEdldFVu
aXRUZXN0SW1wbCgpLT5DdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKHNraXBfY291bnQgKyAx
KTsKIH0KIAotLy8gVXNlZCBieSB0aGUgR1RFU1RfSElERV9VTlJFQUNIQUJMRV9DT0RFXyBtYWNy
byB0byBzdXBwcmVzcyB1bnJlYWNoYWJsZQotLy8gY29kZSB3YXJuaW5ncy4KKy8vIFVzZWQgYnkg
dGhlIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18gbWFjcm8g
dG8KKy8vIHN1cHByZXNzIHVucmVhY2hhYmxlIGNvZGUgd2FybmluZ3MuCiBuYW1lc3BhY2Ugewog
Y2xhc3MgQ2xhc3NVbmlxdWVUb0Fsd2F5c1RydWUge307CiB9CkBAIC00MzcxLDE0ICs1NTc2LDEz
IEBAIGJvb2wgU2tpcFByZWZpeChjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IGNoYXIqKiBwc3Ry
KSB7CiAvLyBwYXJ0IGNhbiBiZSBvbWl0dGVkLgogLy8KIC8vIFJldHVybnMgdGhlIHZhbHVlIG9m
IHRoZSBmbGFnLCBvciBOVUxMIGlmIHRoZSBwYXJzaW5nIGZhaWxlZC4KLWNvbnN0IGNoYXIqIFBh
cnNlRmxhZ1ZhbHVlKGNvbnN0IGNoYXIqIHN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGZsYWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlZl9v
cHRpb25hbCkgeworc3RhdGljIGNvbnN0IGNoYXIqIFBhcnNlRmxhZ1ZhbHVlKGNvbnN0IGNoYXIq
IHN0ciwgY29uc3QgY2hhciogZmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGRlZl9vcHRpb25hbCkgewogICAvLyBzdHIgYW5kIGZsYWcgbXVzdCBub3QgYmUgTlVM
TC4KICAgaWYgKHN0ciA9PSBOVUxMIHx8IGZsYWcgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CiAKICAg
Ly8gVGhlIGZsYWcgbXVzdCBzdGFydCB3aXRoICItLSIgZm9sbG93ZWQgYnkgR1RFU1RfRkxBR19Q
UkVGSVhfLgotICBjb25zdCBTdHJpbmcgZmxhZ19zdHIgPSBTdHJpbmc6OkZvcm1hdCgiLS0lcyVz
IiwgR1RFU1RfRkxBR19QUkVGSVhfLCBmbGFnKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmxhZ19z
dHIgPSBzdGQ6OnN0cmluZygiLS0iKSArIEdURVNUX0ZMQUdfUFJFRklYXyArIGZsYWc7CiAgIGNv
bnN0IHNpemVfdCBmbGFnX2xlbiA9IGZsYWdfc3RyLmxlbmd0aCgpOwogICBpZiAoc3RybmNtcChz
dHIsIGZsYWdfc3RyLmNfc3RyKCksIGZsYWdfbGVuKSAhPSAwKSByZXR1cm4gTlVMTDsKIApAQCAt
NDQwOSw3ICs1NjEzLDcgQEAgY29uc3QgY2hhciogUGFyc2VGbGFnVmFsdWUoY29uc3QgY2hhciog
c3RyLAogLy8KIC8vIE9uIHN1Y2Nlc3MsIHN0b3JlcyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcgaW4g
KnZhbHVlLCBhbmQgcmV0dXJucwogLy8gdHJ1ZS4gIE9uIGZhaWx1cmUsIHJldHVybnMgZmFsc2Ug
d2l0aG91dCBjaGFuZ2luZyAqdmFsdWUuCi1ib29sIFBhcnNlQm9vbEZsYWcoY29uc3QgY2hhciog
c3RyLCBjb25zdCBjaGFyKiBmbGFnLCBib29sKiB2YWx1ZSkgeworc3RhdGljIGJvb2wgUGFyc2VC
b29sRmxhZyhjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsIGJvb2wqIHZhbHVlKSB7
CiAgIC8vIEdldHMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIGFzIGEgc3RyaW5nLgogICBjb25zdCBj
aGFyKiBjb25zdCB2YWx1ZV9zdHIgPSBQYXJzZUZsYWdWYWx1ZShzdHIsIGZsYWcsIHRydWUpOwog
CkBAIC00NDQzLDcgKzU2NDcsOCBAQCBib29sIFBhcnNlSW50MzJGbGFnKGNvbnN0IGNoYXIqIHN0
ciwgY29uc3QgY2hhciogZmxhZywgSW50MzIqIHZhbHVlKSB7CiAvLwogLy8gT24gc3VjY2Vzcywg
c3RvcmVzIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyBpbiAqdmFsdWUsIGFuZCByZXR1cm5zCiAvLyB0
cnVlLiAgT24gZmFpbHVyZSwgcmV0dXJucyBmYWxzZSB3aXRob3V0IGNoYW5naW5nICp2YWx1ZS4K
LWJvb2wgUGFyc2VTdHJpbmdGbGFnKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgY2hhciogZmxhZywg
U3RyaW5nKiB2YWx1ZSkgewordGVtcGxhdGUgPHR5cGVuYW1lIFN0cmluZz4KK3N0YXRpYyBib29s
IFBhcnNlU3RyaW5nRmxhZyhjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsIFN0cmlu
ZyogdmFsdWUpIHsKICAgLy8gR2V0cyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcgYXMgYSBzdHJpbmcu
CiAgIGNvbnN0IGNoYXIqIGNvbnN0IHZhbHVlX3N0ciA9IFBhcnNlRmxhZ1ZhbHVlKHN0ciwgZmxh
ZywgZmFsc2UpOwogCkBAIC00NDc5LDcgKzU2ODQsNyBAQCBzdGF0aWMgYm9vbCBIYXNHb29nbGVU
ZXN0RmxhZ1ByZWZpeChjb25zdCBjaGFyKiBzdHIpIHsKIC8vICAgQFkgICAgY2hhbmdlcyB0aGUg
Y29sb3IgdG8geWVsbG93LgogLy8gICBARCAgICBjaGFuZ2VzIHRvIHRoZSBkZWZhdWx0IHRlcm1p
bmFsIHRleHQgY29sb3IuCiAvLwotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IFdyaXRlIHRlc3Rz
IGZvciB0aGlzIG9uY2Ugd2UgYWRkIHN0ZG91dAorLy8gRklYTUU6IFdyaXRlIHRlc3RzIGZvciB0
aGlzIG9uY2Ugd2UgYWRkIHN0ZG91dAogLy8gY2FwdHVyaW5nIHRvIEdvb2dsZSBUZXN0Lgogc3Rh
dGljIHZvaWQgUHJpbnRDb2xvckVuY29kZWQoY29uc3QgY2hhciogc3RyKSB7CiAgIEdUZXN0Q29s
b3IgY29sb3IgPSBDT0xPUl9ERUZBVUxUOyAgLy8gVGhlIGN1cnJlbnQgY29sb3IuCkBAIC00NDk1
LDcgKzU3MDAsNyBAQCBzdGF0aWMgdm9pZCBQcmludENvbG9yRW5jb2RlZChjb25zdCBjaGFyKiBz
dHIpIHsKICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDb2xvcmVkUHJpbnRmKGNvbG9yLCAi
JXMiLCBTdHJpbmcoc3RyLCBwIC0gc3RyKS5jX3N0cigpKTsKKyAgICBDb2xvcmVkUHJpbnRmKGNv
bG9yLCAiJXMiLCBzdGQ6OnN0cmluZyhzdHIsIHApLmNfc3RyKCkpOwogCiAgICAgY29uc3QgY2hh
ciBjaCA9IHBbMV07CiAgICAgc3RyID0gcCArIDI7CkBAIC00NTQ1LDI0ICs1NzUwLDI4IEBAIHN0
YXRpYyBjb25zdCBjaGFyIGtDb2xvckVuY29kZWRIZWxwTWVzc2FnZVtdID0KICIgICAgICBFbmFi
bGUvZGlzYWJsZSBjb2xvcmVkIG91dHB1dC4gVGhlIGRlZmF1bHQgaXMgQEdhdXRvQEQuXG4iCiAi
ICAtQEctIiBHVEVTVF9GTEFHX1BSRUZJWF8gInByaW50X3RpbWU9MEBEXG4iCiAiICAgICAgRG9u
J3QgcHJpbnQgdGhlIGVsYXBzZWQgdGltZSBvZiBlYWNoIHRlc3QuXG4iCi0iICBARy0tIiBHVEVT
VF9GTEFHX1BSRUZJWF8gIm91dHB1dD14bWxAWVtARzpAWURJUkVDVE9SWV9QQVRIQEciCisiICBA
Ry0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gIm91dHB1dD1AWShAR2pzb25AWXxAR3htbEBZKVtARzpA
WURJUkVDVE9SWV9QQVRIQEciCiAgICAgR1RFU1RfUEFUSF9TRVBfICJAWXxARzpAWUZJTEVfUEFU
SF1ARFxuIgotIiAgICAgIEdlbmVyYXRlIGFuIFhNTCByZXBvcnQgaW4gdGhlIGdpdmVuIGRpcmVj
dG9yeSBvciB3aXRoIHRoZSBnaXZlbiBmaWxlXG4iCi0iICAgICAgbmFtZS4gQFlGSUxFX1BBVEhA
RCBkZWZhdWx0cyB0byBAR3Rlc3RfZGV0YWlscy54bWxARC5cbiIKKyIgICAgICBHZW5lcmF0ZSBh
IEpTT04gb3IgWE1MIHJlcG9ydCBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5IG9yIHdpdGggdGhlIGdp
dmVuXG4iCisiICAgICAgZmlsZSBuYW1lLiBAWUZJTEVfUEFUSEBEIGRlZmF1bHRzIHRvIEBHdGVz
dF9kZXRhaWxzLnhtbEBELlxuIgorIyBpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisiICBA
Ry0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gInN0cmVhbV9yZXN1bHRfdG89QFlIT1NUQEc6QFlQT1JU
QERcbiIKKyIgICAgICBTdHJlYW0gdGVzdCByZXN1bHRzIHRvIHRoZSBnaXZlbiBzZXJ2ZXIuXG4i
CisjIGVuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCiAiXG4iCiAiQXNzZXJ0aW9u
IEJlaGF2aW9yOlxuIgotI2lmIEdURVNUX0hBU19ERUFUSF9URVNUICYmICFHVEVTVF9PU19XSU5E
T1dTCisjIGlmIEdURVNUX0hBU19ERUFUSF9URVNUICYmICFHVEVTVF9PU19XSU5ET1dTCiAiICBA
Ry0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImRlYXRoX3Rlc3Rfc3R5bGU9QFkoQEdmYXN0QFl8QEd0
aHJlYWRzYWZlQFkpQERcbiIKICIgICAgICBTZXQgdGhlIGRlZmF1bHQgZGVhdGggdGVzdCBzdHls
ZS5cbiIKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QgJiYgIUdURVNUX09TX1dJTkRP
V1MKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUICYmICFHVEVTVF9PU19XSU5ET1dT
CiAiICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImJyZWFrX29uX2ZhaWx1cmVARFxuIgogIiAg
ICAgIFR1cm4gYXNzZXJ0aW9uIGZhaWx1cmVzIGludG8gZGVidWdnZXIgYnJlYWstcG9pbnRzLlxu
IgogIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJ0aHJvd19vbl9mYWlsdXJlQERcbiIKLSIg
ICAgICBUdXJuIGFzc2VydGlvbiBmYWlsdXJlcyBpbnRvIEMrKyBleGNlcHRpb25zLlxuIgotI2lm
IEdURVNUX09TX1dJTkRPV1MKLSIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiY2F0Y2hfZXhj
ZXB0aW9uc0BEXG4iCi0iICAgICAgU3VwcHJlc3MgcG9wLXVwcyBjYXVzZWQgYnkgZXhjZXB0aW9u
cy5cbiIKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIiAgICAgIFR1cm4gYXNzZXJ0aW9u
IGZhaWx1cmVzIGludG8gQysrIGV4Y2VwdGlvbnMgZm9yIHVzZSBieSBhbiBleHRlcm5hbFxuIgor
IiAgICAgIHRlc3QgZnJhbWV3b3JrLlxuIgorIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJj
YXRjaF9leGNlcHRpb25zPTBARFxuIgorIiAgICAgIERvIG5vdCByZXBvcnQgZXhjZXB0aW9ucyBh
cyB0ZXN0IGZhaWx1cmVzLiBJbnN0ZWFkLCBhbGxvdyB0aGVtXG4iCisiICAgICAgdG8gY3Jhc2gg
dGhlIHByb2dyYW0gb3IgdGhyb3cgYSBwb3AtdXAgKG9uIFdpbmRvd3MpLlxuIgogIlxuIgogIkV4
Y2VwdCBmb3IgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJsaXN0X3Rlc3RzQEQsIHlvdSBjYW4g
YWx0ZXJuYXRpdmVseSBzZXQgIgogICAgICJ0aGUgY29ycmVzcG9uZGluZ1xuIgpAQCAtNDU3Niw0
NSArNTc4NSw4NyBAQCBzdGF0aWMgY29uc3QgY2hhciBrQ29sb3JFbmNvZGVkSGVscE1lc3NhZ2Vb
XSA9CiAiKG5vdCBvbmUgaW4geW91ciBvd24gY29kZSBvciB0ZXN0cyksIHBsZWFzZSByZXBvcnQg
aXQgdG9cbiIKICJARzwiIEdURVNUX0RFVl9FTUFJTF8gIj5ARC5cbiI7CiAKK3N0YXRpYyBib29s
IFBhcnNlR29vZ2xlVGVzdEZsYWcoY29uc3QgY2hhciogY29uc3QgYXJnKSB7CisgIHJldHVybiBQ
YXJzZUJvb2xGbGFnKGFyZywga0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgJkdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpKSB8fAorICAg
ICAgUGFyc2VCb29sRmxhZyhhcmcsIGtCcmVha09uRmFpbHVyZUZsYWcsCisgICAgICAgICAgICAg
ICAgICAgICZHVEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpKSB8fAorICAgICAgUGFyc2VCb29s
RmxhZyhhcmcsIGtDYXRjaEV4Y2VwdGlvbnNGbGFnLAorICAgICAgICAgICAgICAgICAgICAmR1RF
U1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSkgfHwKKyAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcs
IGtDb2xvckZsYWcsICZHVEVTVF9GTEFHKGNvbG9yKSkgfHwKKyAgICAgIFBhcnNlU3RyaW5nRmxh
ZyhhcmcsIGtEZWF0aFRlc3RTdHlsZUZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgJkdURVNU
X0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkpIHx8CisgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0Rl
YXRoVGVzdFVzZUZvcmssCisgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGRlYXRoX3Rl
c3RfdXNlX2ZvcmspKSB8fAorICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga0ZpbHRlckZsYWcs
ICZHVEVTVF9GTEFHKGZpbHRlcikpIHx8CisgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrSW50
ZXJuYWxSdW5EZWF0aFRlc3RGbGFnLAorICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFH
KGludGVybmFsX3J1bl9kZWF0aF90ZXN0KSkgfHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBr
TGlzdFRlc3RzRmxhZywgJkdURVNUX0ZMQUcobGlzdF90ZXN0cykpIHx8CisgICAgICBQYXJzZVN0
cmluZ0ZsYWcoYXJnLCBrT3V0cHV0RmxhZywgJkdURVNUX0ZMQUcob3V0cHV0KSkgfHwKKyAgICAg
IFBhcnNlQm9vbEZsYWcoYXJnLCBrUHJpbnRUaW1lRmxhZywgJkdURVNUX0ZMQUcocHJpbnRfdGlt
ZSkpIHx8CisgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga1ByaW50VVRGOEZsYWcsICZHVEVTVF9G
TEFHKHByaW50X3V0ZjgpKSB8fAorICAgICAgUGFyc2VJbnQzMkZsYWcoYXJnLCBrUmFuZG9tU2Vl
ZEZsYWcsICZHVEVTVF9GTEFHKHJhbmRvbV9zZWVkKSkgfHwKKyAgICAgIFBhcnNlSW50MzJGbGFn
KGFyZywga1JlcGVhdEZsYWcsICZHVEVTVF9GTEFHKHJlcGVhdCkpIHx8CisgICAgICBQYXJzZUJv
b2xGbGFnKGFyZywga1NodWZmbGVGbGFnLCAmR1RFU1RfRkxBRyhzaHVmZmxlKSkgfHwKKyAgICAg
IFBhcnNlSW50MzJGbGFnKGFyZywga1N0YWNrVHJhY2VEZXB0aEZsYWcsCisgICAgICAgICAgICAg
ICAgICAgICAmR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkpIHx8CisgICAgICBQYXJzZVN0
cmluZ0ZsYWcoYXJnLCBrU3RyZWFtUmVzdWx0VG9GbGFnLAorICAgICAgICAgICAgICAgICAgICAg
ICZHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pKSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhh
cmcsIGtUaHJvd09uRmFpbHVyZUZsYWcsCisgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFH
KHRocm93X29uX2ZhaWx1cmUpKTsKK30KKworI2lmIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxB
R18KK3N0YXRpYyB2b2lkIExvYWRGbGFnc0Zyb21GaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRo
KSB7CisgIEZJTEUqIGZsYWdmaWxlID0gcG9zaXg6OkZPcGVuKHBhdGguY19zdHIoKSwgInIiKTsK
KyAgaWYgKCFmbGFnZmlsZSkgeworICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICJVbmFibGUgdG8g
b3BlbiBmaWxlIFwiIiA8PCBHVEVTVF9GTEFHKGZsYWdmaWxlKQorICAgICAgICAgICAgICAgICAg
ICAgIDw8ICJcIiI7CisgIH0KKyAgc3RkOjpzdHJpbmcgY29udGVudHMoUmVhZEVudGlyZUZpbGUo
ZmxhZ2ZpbGUpKTsKKyAgcG9zaXg6OkZDbG9zZShmbGFnZmlsZSk7CisgIHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiBsaW5lczsKKyAgU3BsaXRTdHJpbmcoY29udGVudHMsICdcbicsICZsaW5lcyk7
CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGluZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBpZiAo
bGluZXNbaV0uZW1wdHkoKSkKKyAgICAgIGNvbnRpbnVlOworICAgIGlmICghUGFyc2VHb29nbGVU
ZXN0RmxhZyhsaW5lc1tpXS5jX3N0cigpKSkKKyAgICAgIGdfaGVscF9mbGFnID0gdHJ1ZTsKKyAg
fQorfQorI2VuZGlmICAvLyBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCisKIC8vIFBhcnNl
cyB0aGUgY29tbWFuZCBsaW5lIGZvciBHb29nbGUgVGVzdCBmbGFncywgd2l0aG91dCBpbml0aWFs
aXppbmcKIC8vIG90aGVyIHBhcnRzIG9mIEdvb2dsZSBUZXN0LiAgVGhlIHR5cGUgcGFyYW1ldGVy
IENoYXJUeXBlIGNhbiBiZQogLy8gaW5zdGFudGlhdGVkIHRvIGVpdGhlciBjaGFyIG9yIHdjaGFy
X3QuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiB2b2lkIFBhcnNlR29vZ2xlVGVzdEZs
YWdzT25seUltcGwoaW50KiBhcmdjLCBDaGFyVHlwZSoqIGFyZ3YpIHsKICAgZm9yIChpbnQgaSA9
IDE7IGkgPCAqYXJnYzsgaSsrKSB7Ci0gICAgY29uc3QgU3RyaW5nIGFyZ19zdHJpbmcgPSBTdHJl
YW1hYmxlVG9TdHJpbmcoYXJndltpXSk7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgYXJnX3N0cmlu
ZyA9IFN0cmVhbWFibGVUb1N0cmluZyhhcmd2W2ldKTsKICAgICBjb25zdCBjaGFyKiBjb25zdCBh
cmcgPSBhcmdfc3RyaW5nLmNfc3RyKCk7CiAKICAgICB1c2luZyBpbnRlcm5hbDo6UGFyc2VCb29s
RmxhZzsKICAgICB1c2luZyBpbnRlcm5hbDo6UGFyc2VJbnQzMkZsYWc7CiAgICAgdXNpbmcgaW50
ZXJuYWw6OlBhcnNlU3RyaW5nRmxhZzsKIAotICAgIC8vIERvIHdlIHNlZSBhIEdvb2dsZSBUZXN0
IGZsYWc/Ci0gICAgaWYgKFBhcnNlQm9vbEZsYWcoYXJnLCBrQWxzb1J1bkRpc2FibGVkVGVzdHNG
bGFnLAotICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVk
X3Rlc3RzKSkgfHwKLSAgICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtCcmVha09uRmFpbHVyZUZs
YWcsCi0gICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSkp
IHx8Ci0gICAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrQ2F0Y2hFeGNlcHRpb25zRmxhZywKLSAg
ICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSkgfHwKLSAg
ICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga0NvbG9yRmxhZywgJkdURVNUX0ZMQUcoY29sb3Ip
KSB8fAotICAgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrRGVhdGhUZXN0U3R5bGVGbGFnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkpIHx8
Ci0gICAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrRGVhdGhUZXN0VXNlRm9yaywKLSAgICAgICAg
ICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKSkgfHwKLSAgICAg
ICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga0ZpbHRlckZsYWcsICZHVEVTVF9GTEFHKGZpbHRlcikp
IHx8Ci0gICAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtJbnRlcm5hbFJ1bkRlYXRoVGVzdEZs
YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVh
dGhfdGVzdCkpIHx8Ci0gICAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrTGlzdFRlc3RzRmxhZywg
JkdURVNUX0ZMQUcobGlzdF90ZXN0cykpIHx8Ci0gICAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcs
IGtPdXRwdXRGbGFnLCAmR1RFU1RfRkxBRyhvdXRwdXQpKSB8fAotICAgICAgICBQYXJzZUJvb2xG
bGFnKGFyZywga1ByaW50VGltZUZsYWcsICZHVEVTVF9GTEFHKHByaW50X3RpbWUpKSB8fAotICAg
ICAgICBQYXJzZUludDMyRmxhZyhhcmcsIGtSYW5kb21TZWVkRmxhZywgJkdURVNUX0ZMQUcocmFu
ZG9tX3NlZWQpKSB8fAotICAgICAgICBQYXJzZUludDMyRmxhZyhhcmcsIGtSZXBlYXRGbGFnLCAm
R1RFU1RfRkxBRyhyZXBlYXQpKSB8fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga1NodWZm
bGVGbGFnLCAmR1RFU1RfRkxBRyhzaHVmZmxlKSkgfHwKLSAgICAgICAgUGFyc2VJbnQzMkZsYWco
YXJnLCBrU3RhY2tUcmFjZURlcHRoRmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAgJkdURVNU
X0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpKSB8fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywg
a1Rocm93T25GYWlsdXJlRmxhZywgJkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkpCi0gICAg
ICAgICkgewotICAgICAgLy8gWWVzLiAgU2hpZnQgdGhlIHJlbWFpbmRlciBvZiB0aGUgYXJndiBs
aXN0IGxlZnQgYnkgb25lLiAgTm90ZQorICAgIGJvb2wgcmVtb3ZlX2ZsYWcgPSBmYWxzZTsKKyAg
ICBpZiAoUGFyc2VHb29nbGVUZXN0RmxhZyhhcmcpKSB7CisgICAgICByZW1vdmVfZmxhZyA9IHRy
dWU7CisjaWYgR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXworICAgIH0gZWxzZSBpZiAoUGFy
c2VTdHJpbmdGbGFnKGFyZywga0ZsYWdmaWxlRmxhZywgJkdURVNUX0ZMQUcoZmxhZ2ZpbGUpKSkg
eworICAgICAgTG9hZEZsYWdzRnJvbUZpbGUoR1RFU1RfRkxBRyhmbGFnZmlsZSkpOworICAgICAg
cmVtb3ZlX2ZsYWcgPSB0cnVlOworI2VuZGlmICAvLyBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZM
QUdfCisgICAgfSBlbHNlIGlmIChhcmdfc3RyaW5nID09ICItLWhlbHAiIHx8IGFyZ19zdHJpbmcg
PT0gIi1oIiB8fAorICAgICAgICAgICAgICAgYXJnX3N0cmluZyA9PSAiLT8iIHx8IGFyZ19zdHJp
bmcgPT0gIi8/IiB8fAorICAgICAgICAgICAgICAgSGFzR29vZ2xlVGVzdEZsYWdQcmVmaXgoYXJn
KSkgeworICAgICAgLy8gQm90aCBoZWxwIGZsYWcgYW5kIHVucmVjb2duaXplZCBHb29nbGUgVGVz
dCBmbGFncyAoZXhjbHVkaW5nCisgICAgICAvLyBpbnRlcm5hbCBvbmVzKSB0cmlnZ2VyIGhlbHAg
ZGlzcGxheS4KKyAgICAgIGdfaGVscF9mbGFnID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAocmVt
b3ZlX2ZsYWcpIHsKKyAgICAgIC8vIFNoaWZ0IHRoZSByZW1haW5kZXIgb2YgdGhlIGFyZ3YgbGlz
dCBsZWZ0IGJ5IG9uZS4gIE5vdGUKICAgICAgIC8vIHRoYXQgYXJndiBoYXMgKCphcmdjICsgMSkg
ZWxlbWVudHMsIHRoZSBsYXN0IG9uZSBhbHdheXMgYmVpbmcKICAgICAgIC8vIE5VTEwuICBUaGUg
Zm9sbG93aW5nIGxvb3AgbW92ZXMgdGhlIHRyYWlsaW5nIE5VTEwgZWxlbWVudCBhcwogICAgICAg
Ly8gd2VsbC4KQEAgLTQ2MjgsMTIgKzU4NzksNiBAQCB2b2lkIFBhcnNlR29vZ2xlVGVzdEZsYWdz
T25seUltcGwoaW50KiBhcmdjLCBDaGFyVHlwZSoqIGFyZ3YpIHsKICAgICAgIC8vIFdlIGFsc28g
bmVlZCB0byBkZWNyZW1lbnQgdGhlIGl0ZXJhdG9yIGFzIHdlIGp1c3QgcmVtb3ZlZAogICAgICAg
Ly8gYW4gZWxlbWVudC4KICAgICAgIGktLTsKLSAgICB9IGVsc2UgaWYgKGFyZ19zdHJpbmcgPT0g
Ii0taGVscCIgfHwgYXJnX3N0cmluZyA9PSAiLWgiIHx8Ci0gICAgICAgICAgICAgICBhcmdfc3Ry
aW5nID09ICItPyIgfHwgYXJnX3N0cmluZyA9PSAiLz8iIHx8Ci0gICAgICAgICAgICAgICBIYXNH
b29nbGVUZXN0RmxhZ1ByZWZpeChhcmcpKSB7Ci0gICAgICAvLyBCb3RoIGhlbHAgZmxhZyBhbmQg
dW5yZWNvZ25pemVkIEdvb2dsZSBUZXN0IGZsYWdzIChleGNsdWRpbmcKLSAgICAgIC8vIGludGVy
bmFsIG9uZXMpIHRyaWdnZXIgaGVscCBkaXNwbGF5LgotICAgICAgZ19oZWxwX2ZsYWcgPSB0cnVl
OwogICAgIH0KICAgfQogCkBAIC00NjQ5LDYgKzU4OTQsMTcgQEAgdm9pZCBQYXJzZUdvb2dsZVRl
c3RGbGFnc09ubHlJbXBsKGludCogYXJnYywgQ2hhclR5cGUqKiBhcmd2KSB7CiAvLyBvdGhlciBw
YXJ0cyBvZiBHb29nbGUgVGVzdC4KIHZvaWQgUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5KGludCog
YXJnYywgY2hhcioqIGFyZ3YpIHsKICAgUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5SW1wbChhcmdj
LCBhcmd2KTsKKworICAvLyBGaXggdGhlIHZhbHVlIG9mICpfTlNHZXRBcmdjKCkgb24gbWFjT1Ms
IGJ1dCBpZmYKKyAgLy8gKl9OU0dldEFyZ3YoKSA9PSBhcmd2CisgIC8vIE9ubHkgYXBwbGljYWJs
ZSB0byBjaGFyKiogdmVyc2lvbiBvZiBhcmd2CisjaWYgR1RFU1RfT1NfTUFDCisjaWZuZGVmIEdU
RVNUX09TX0lPUworICBpZiAoKl9OU0dldEFyZ3YoKSA9PSBhcmd2KSB7CisgICAgKl9OU0dldEFy
Z2MoKSA9ICphcmdjOworICB9CisjZW5kaWYKKyNlbmRpZgogfQogdm9pZCBQYXJzZUdvb2dsZVRl
c3RGbGFnc09ubHkoaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndikgewogICBQYXJzZUdvb2dsZVRl
c3RGbGFnc09ubHlJbXBsKGFyZ2MsIGFyZ3YpOwpAQCAtNDY2MCwyMSArNTkxNiwxOSBAQCB2b2lk
IFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seShpbnQqIGFyZ2MsIHdjaGFyX3QqKiBhcmd2KSB7CiAv
LyB3Y2hhcl90LgogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogdm9pZCBJbml0R29vZ2xl
VGVzdEltcGwoaW50KiBhcmdjLCBDaGFyVHlwZSoqIGFyZ3YpIHsKLSAgZ19pbml0X2d0ZXN0X2Nv
dW50Kys7Ci0KICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBydW4gdGhlIGluaXRpYWxpemF0aW9uIGNv
ZGUgdHdpY2UuCi0gIGlmIChnX2luaXRfZ3Rlc3RfY291bnQgIT0gMSkgcmV0dXJuOworICBpZiAo
R1Rlc3RJc0luaXRpYWxpemVkKCkpIHJldHVybjsKIAogICBpZiAoKmFyZ2MgPD0gMCkgcmV0dXJu
OwogCi0gIGludGVybmFsOjpnX2V4ZWN1dGFibGVfcGF0aCA9IGludGVybmFsOjpTdHJlYW1hYmxl
VG9TdHJpbmcoYXJndlswXSk7Ci0KLSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogICBnX2FyZ3Zz
LmNsZWFyKCk7CiAgIGZvciAoaW50IGkgPSAwOyBpICE9ICphcmdjOyBpKyspIHsKICAgICBnX2Fy
Z3ZzLnB1c2hfYmFjayhTdHJlYW1hYmxlVG9TdHJpbmcoYXJndltpXSkpOwogICB9Ci0jZW5kaWYg
IC8vIEdURVNUX0hBU19ERUFUSF9URVNUCisKKyNpZiBHVEVTVF9IQVNfQUJTTAorICBhYnNsOjpJ
bml0aWFsaXplU3ltYm9saXplcihnX2FyZ3ZzWzBdLmNfc3RyKCkpOworI2VuZGlmICAvLyBHVEVT
VF9IQVNfQUJTTAogCiAgIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seShhcmdjLCBhcmd2KTsKICAg
R2V0VW5pdFRlc3RJbXBsKCktPlBvc3RGbGFnUGFyc2luZ0luaXQoKTsKQEAgLTQ2OTIsMTMgKzU5
NDYsNjIgQEAgdm9pZCBJbml0R29vZ2xlVGVzdEltcGwoaW50KiBhcmdjLCBDaGFyVHlwZSoqIGFy
Z3YpIHsKIC8vCiAvLyBDYWxsaW5nIHRoZSBmdW5jdGlvbiBmb3IgdGhlIHNlY29uZCB0aW1lIGhh
cyBubyB1c2VyLXZpc2libGUgZWZmZWN0Lgogdm9pZCBJbml0R29vZ2xlVGVzdChpbnQqIGFyZ2Ms
IGNoYXIqKiBhcmd2KSB7CisjaWYgZGVmaW5lZChHVEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVT
VF9GVU5DVElPTl8pCisgIEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9OXyhh
cmdjLCBhcmd2KTsKKyNlbHNlICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9U
RVNUX0ZVTkNUSU9OXykKICAgaW50ZXJuYWw6OkluaXRHb29nbGVUZXN0SW1wbChhcmdjLCBhcmd2
KTsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5D
VElPTl8pCiB9CiAKIC8vIFRoaXMgb3ZlcmxvYWRlZCB2ZXJzaW9uIGNhbiBiZSB1c2VkIGluIFdp
bmRvd3MgcHJvZ3JhbXMgY29tcGlsZWQgaW4KIC8vIFVOSUNPREUgbW9kZS4KIHZvaWQgSW5pdEdv
b2dsZVRlc3QoaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndikgeworI2lmIGRlZmluZWQoR1RFU1Rf
Q1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQorICBHVEVTVF9DVVNUT01fSU5JVF9H
T09HTEVfVEVTVF9GVU5DVElPTl8oYXJnYywgYXJndik7CisjZWxzZSAgLy8gZGVmaW5lZChHVEVT
VF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8pCiAgIGludGVybmFsOjpJbml0R29v
Z2xlVGVzdEltcGwoYXJnYywgYXJndik7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfQ1VTVE9N
X0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQorfQorCitzdGQ6OnN0cmluZyBUZW1wRGlyKCkg
eworI2lmIGRlZmluZWQoR1RFU1RfQ1VTVE9NX1RFTVBESVJfRlVOQ1RJT05fKQorICByZXR1cm4g
R1RFU1RfQ1VTVE9NX1RFTVBESVJfRlVOQ1RJT05fKCk7CisjZW5kaWYKKworI2lmIEdURVNUX09T
X1dJTkRPV1NfTU9CSUxFCisgIHJldHVybiAiXFx0ZW1wXFwiOworI2VsaWYgR1RFU1RfT1NfV0lO
RE9XUworICBjb25zdCBjaGFyKiB0ZW1wX2RpciA9IGludGVybmFsOjpwb3NpeDo6R2V0RW52KCJU
RU1QIik7CisgIGlmICh0ZW1wX2RpciA9PSBOVUxMIHx8IHRlbXBfZGlyWzBdID09ICdcMCcpCisg
ICAgcmV0dXJuICJcXHRlbXBcXCI7CisgIGVsc2UgaWYgKHRlbXBfZGlyW3N0cmxlbih0ZW1wX2Rp
cikgLSAxXSA9PSAnXFwnKQorICAgIHJldHVybiB0ZW1wX2RpcjsKKyAgZWxzZQorICAgIHJldHVy
biBzdGQ6OnN0cmluZyh0ZW1wX2RpcikgKyAiXFwiOworI2VsaWYgR1RFU1RfT1NfTElOVVhfQU5E
Uk9JRAorICByZXR1cm4gIi9zZGNhcmQvIjsKKyNlbHNlCisgIHJldHVybiAiL3RtcC8iOworI2Vu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorfQorCisvLyBDbGFzcyBTY29wZWRUcmFj
ZQorCisvLyBQdXNoZXMgdGhlIGdpdmVuIHNvdXJjZSBmaWxlIGxvY2F0aW9uIGFuZCBtZXNzYWdl
IG9udG8gYSBwZXItdGhyZWFkCisvLyB0cmFjZSBzdGFjayBtYWludGFpbmVkIGJ5IEdvb2dsZSBU
ZXN0Lgordm9pZCBTY29wZWRUcmFjZTo6UHVzaFRyYWNlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBs
aW5lLCBzdGQ6OnN0cmluZyBtZXNzYWdlKSB7CisgIGludGVybmFsOjpUcmFjZUluZm8gdHJhY2U7
CisgIHRyYWNlLmZpbGUgPSBmaWxlOworICB0cmFjZS5saW5lID0gbGluZTsKKyAgdHJhY2UubWVz
c2FnZS5zd2FwKG1lc3NhZ2UpOworCisgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5QdXNoR1Rl
c3RUcmFjZSh0cmFjZSk7Cit9CisKKy8vIFBvcHMgdGhlIGluZm8gcHVzaGVkIGJ5IHRoZSBjJ3Rv
ci4KK1Njb3BlZFRyYWNlOjp+U2NvcGVkVHJhY2UoKQorICAgIEdURVNUX0xPQ0tfRVhDTFVERURf
KCZVbml0VGVzdDo6bXV0ZXhfKSB7CisgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5Qb3BHVGVz
dFRyYWNlKCk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3RfbWFpbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NyYy9ndGVzdF9tYWluLmNjCmluZGV4IGQyMGMwMmZkZmIwYTk0NjFkY2MyYTI3ODlj
NDkyMmI1YjMwNTYzNTIuLjIxMTNmNjIxZTY1NDMwZTU1NzBkZmIyMDE1ODg0YTJkNGY0Y2YwYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdF9tYWluLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdF9tYWluLmNjCkBAIC0yNywxMyAr
MjcsMTEgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2luY2x1ZGUgPGlv
c3RyZWFtPgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIgKiphcmd2KSB7Ci0gIHN0ZDo6Y291dCA8PCAiUnVubmluZyBtYWluKCkgZnJvbSBndGVz
dF9tYWluLmNjXG4iOworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKIAorR1RFU1RfQVBJXyBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgcHJp
bnRmKCJSdW5uaW5nIG1haW4oKSBmcm9tICVzXG4iLCBfX0ZJTEVfXyk7CiAgIHRlc3Rpbmc6Oklu
aXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKICAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvQlVJTEQuYmF6ZWwgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L0JVSUxELmJhemVsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5MzBk
NjVlMDQ0MDE0NDQxNmFlODhhYjI3NThmZDkzNDBhMDkzN2IKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L0JVSUxELmJhemVsCkBAIC0wLDAgKzEsNTI3IEBA
CisjIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuCisjIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisj
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorIworIyBBdXRob3I6IG1pc3RlcmdAZ29vZ2xlLmNvbSAoR2Vu
bmFkaXkgQ2l2aWwpCisjCisjIEJhemVsIEJVSUxEIGZvciBUaGUgR29vZ2xlIEMrKyBUZXN0aW5n
IEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisKK2xpY2Vuc2VzKFsibm90aWNlIl0pCisKK2NvbmZp
Z19zZXR0aW5nKAorICAgIG5hbWUgPSAid2luZG93cyIsCisgICAgdmFsdWVzID0geyJjcHUiOiAi
eDY0X3dpbmRvd3MifSwKKykKKworY29uZmlnX3NldHRpbmcoCisgICAgbmFtZSA9ICJ3aW5kb3dz
X21zdmMiLAorICAgIHZhbHVlcyA9IHsiY3B1IjogIng2NF93aW5kb3dzX21zdmMifSwKKykKKwor
Y29uZmlnX3NldHRpbmcoCisgICAgbmFtZSA9ICJoYXNfYWJzbCIsCisgICAgdmFsdWVzID0geyJk
ZWZpbmUiOiAiYWJzbD0xIn0sCispCisKKyNvbiB3aW5kb3dzIGV4Y2x1ZGUgZ3Rlc3QtdHVwbGUu
aCBhbmQgZ29vZ2xldGVzdC10dXBsZS10ZXN0LmNjCitjY190ZXN0KAorICAgIG5hbWUgPSAiZ3Rl
c3RfYWxsX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBnbG9iKAorICAg
ICAgICBpbmNsdWRlID0gWworICAgICAgICAgICAgImd0ZXN0LSouY2MiLAorICAgICAgICAgICAg
Imdvb2dsZXRlc3QtKi5jYyIsCisgICAgICAgICAgICAiKi5oIiwKKyAgICAgICAgICAgICJnb29n
bGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvKiovKi5oIiwKKyAgICAgICAgXSwKKyAgICAgICAgZXhjbHVk
ZSA9IFsKKyAgICAgICAgICAgICJndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYyIsCisgICAgICAg
ICAgICAiZ29vZ2xldGVzdC10dXBsZS10ZXN0LmNjIiwKKyAgICAgICAgICAgICJnb29nbGV0ZXN0
L3NyYy9ndGVzdC1hbGwuY2MiLAorICAgICAgICAgICAgImd0ZXN0X2FsbF90ZXN0LmNjIiwKKyAg
ICAgICAgICAgICJndGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MiLAorICAgICAgICAgICAgImd0
ZXN0LWxpc3RlbmVyX3Rlc3QuY2MiLAorICAgICAgICAgICAgImd0ZXN0LXVuaXR0ZXN0LWFwaV90
ZXN0LmNjIiwKKyAgICAgICAgICAgICJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYyIsCisg
ICAgICAgICAgICAiZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3RfLmNjIiwKKyAgICAg
ICAgICAgICJnb29nbGV0ZXN0LWNvbG9yLXRlc3RfLmNjIiwKKyAgICAgICAgICAgICJnb29nbGV0
ZXN0LWVudi12YXItdGVzdF8uY2MiLAorICAgICAgICAgICAgImdvb2dsZXRlc3QtZmlsdGVyLXVu
aXR0ZXN0Xy5jYyIsCisgICAgICAgICAgICAiZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVu
aXR0ZXN0Xy5jYyIsCisgICAgICAgICAgICAgImdvb2dsZXRlc3QtbGlzdGVuZXItdGVzdC5jYyIs
CisgICAgICAgICAgICAgImdvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjIiwKKyAgICAgICAgICAg
ICAiZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0Xy5jYyIsCisgICAgICAgICAgICAgImdv
b2dsZXRlc3Qtc2h1ZmZsZS10ZXN0Xy5jYyIsCisgICAgICAgICAgICAgImdvb2dsZXRlc3QtdW5p
bml0aWFsaXplZC10ZXN0Xy5jYyIsCisgICAgICAgICAgICAgImdvb2dsZXRlc3QtZGVhdGgtdGVz
dF9leF90ZXN0LmNjIiwKKyAgICAgICAgICAgICAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3Qi
LAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8uY2MiLAor
ICAgICAgICAgICAgICJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMS10ZXN0Xy5j
YyIsCisgICAgICAgICAgICAgImdvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRl
c3RfLmNjIiwKKworICAgICAgICBdLAorICAgICkgKyBzZWxlY3QoeworICAgICAgICAiLy86d2lu
ZG93cyI6IFtdLAorICAgICAgICAiLy86d2luZG93c19tc3ZjIjogW10sCisgICAgICAgICIvL2Nv
bmRpdGlvbnM6ZGVmYXVsdCI6IFsKKyAgICAgICAgICAgICJnb29nbGV0ZXN0LXR1cGxlLXRlc3Qu
Y2MiLAorICAgICAgICBdLAorICAgIH0pLAorICAgIGNvcHRzID0gc2VsZWN0KHsKKyAgICAgICAg
Ii8vOndpbmRvd3MiOiBbIi1ER1RFU1RfVVNFX09XTl9UUjFfVFVQTEU9MCJdLAorICAgICAgICAi
Ly86d2luZG93c19tc3ZjIjogWyItREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTAiXSwKKyAgICAg
ICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogWyItREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTEi
XSwKKyAgICB9KSwKKyAgICBpbmNsdWRlcyA9IFsKKyAgICAgICAgImdvb2dsZXRlc3QiLAorICAg
ICAgICAiZ29vZ2xldGVzdC9pbmNsdWRlIiwKKyAgICAgICAgImdvb2dsZXRlc3QvaW5jbHVkZS9p
bnRlcm5hbCIsCisgICAgICAgICJnb29nbGV0ZXN0L3Rlc3QiLAorICAgIF0sCisgICAgbGlua29w
dHMgPSBzZWxlY3QoeworICAgICAgICAiLy86d2luZG93cyI6IFtdLAorICAgICAgICAiLy86d2lu
ZG93c19tc3ZjIjogW10sCisgICAgICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsKKyAgICAg
ICAgICAgICItcHRocmVhZCIsCisgICAgICAgIF0sCisgICAgfSksCisgICAgZGVwcyA9IFsiLy86
Z3Rlc3RfbWFpbiJdLAorKQorCisKKyMgVGVzdHMgZGVhdGggdGVzdHMuCitjY190ZXN0KAorICAg
IG5hbWUgPSAiZ29vZ2xldGVzdC1kZWF0aC10ZXN0LXRlc3QiLAorICAgIHNpemUgPSAibWVkaXVt
IiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWRlYXRoLXRlc3QtdGVzdC5jYyJdLAorICAgIGRl
cHMgPSBbIi8vOmd0ZXN0X21haW4iXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0
X3Rlc3RfbWFjcm9fc3RhY2tfZm9vdHByaW50X3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAor
ICAgIHNyY3MgPSBbImd0ZXN0X3Rlc3RfbWFjcm9fc3RhY2tfZm9vdHByaW50X3Rlc3QuY2MiXSwK
KyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCisjVGhlc2UgZ29vZ2xldGVzdCB0ZXN0cyBo
YXZlIHRoZWlyIG93biBtYWluKCkKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWxp
c3RlbmVyLXRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImdvb2dsZXRl
c3QtbGlzdGVuZXItdGVzdC5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0X21haW4iXSwKKykK
KworY2NfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0IiwKKyAgICBz
aXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWworICAgICAgICAiZ3Rlc3QtdW5pdHRlc3QtYXBp
X3Rlc3QuY2MiLAorICAgIF0sCisgICAgZGVwcyA9IFsKKyAgICAgICAgIi8vOmd0ZXN0IiwKKyAg
ICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRl
c3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJnb29nbGV0
ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYyIsCisgICAgICAgICJnb29nbGV0ZXN0LXBhcmFtLXRlc3Qt
dGVzdC5oIiwKKyAgICAgICAgImdvb2dsZXRlc3QtcGFyYW0tdGVzdDItdGVzdC5jYyIsCisgICAg
XSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAi
Z3Rlc3RfdW5pdHRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImd0ZXN0
X3VuaXR0ZXN0LmNjIl0sCisgICAgYXJncyA9IFsiLS1oZWFwX2NoZWNrPXN0cmljdCJdLAorICAg
IHNoYXJkX2NvdW50ID0gMiwKKyAgICBkZXBzID0gWyIvLzpndGVzdF9tYWluIl0sCispCisKKyMg
IFB5IHRlc3RzCisKK3B5X2xpYnJhcnkoCisgICAgbmFtZSA9ICJndGVzdF90ZXN0X3V0aWxzIiwK
KyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ3Rlc3RfdGVzdF91dGlscy5weSJdLAor
KQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJndGVzdF9oZWxwX3Rlc3RfIiwKKyAgICB0ZXN0
b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ3Rlc3RfaGVscF90ZXN0Xy5jYyJdLAorICAgIGRlcHMg
PSBbIi8vOmd0ZXN0X21haW4iXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0X2hl
bHBfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ3Rlc3RfaGVscF90
ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmd0ZXN0X2hlbHBfdGVzdF8iXSwKKyAgICBkZXBzID0g
WyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29n
bGV0ZXN0LW91dHB1dC10ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImdv
b2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykK
KworCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1vdXRwdXQtdGVzdCIsCisgICAg
c2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1vdXRwdXQtdGVzdC5weSJd
LAorICAgIGFyZ3MgPSBzZWxlY3QoeworICAgICAgICAiOmhhc19hYnNsIjogW10sCisgICAgICAg
ICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsiLS1ub19zdGFja3RyYWNlX3N1cHBvcnQiXSwKKyAg
ICB9KSwKKyAgICBkYXRhID0gWworICAgICAgICAiZ29vZ2xldGVzdC1vdXRwdXQtdGVzdC1nb2xk
ZW4tbGluLnR4dCIsCisgICAgICAgICI6Z29vZ2xldGVzdC1vdXRwdXQtdGVzdF8iLAorICAgIF0s
CisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworY2NfYmluYXJ5KAorICAg
IG5hbWUgPSAiZ29vZ2xldGVzdC1jb2xvci10ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAg
IHNyY3MgPSBbImdvb2dsZXRlc3QtY29sb3ItdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpn
dGVzdCJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1jb2xvci10ZXN0
IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWNvbG9yLXRl
c3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z29vZ2xldGVzdC1jb2xvci10ZXN0XyJdLAorICAgIGRl
cHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0g
Imdvb2dsZXRlc3QtZW52LXZhci10ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3Mg
PSBbImdvb2dsZXRlc3QtZW52LXZhci10ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0
Il0sCispCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWVudi12YXItdGVzdCIs
CisgICAgc2l6ZSA9ICJtZWRpdW0iLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtZW52LXZhci10
ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmdvb2dsZXRlc3QtZW52LXZhci10ZXN0XyJdLAorICAg
IGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1l
ID0gImdvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAg
IHNyY3MgPSBbImdvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBb
Ii8vOmd0ZXN0Il0sCispCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWZpbHRl
ci11bml0dGVzdCIsCisgICAgc2l6ZSA9ICJtZWRpdW0iLAorICAgIHNyY3MgPSBbImdvb2dsZXRl
c3QtZmlsdGVyLXVuaXR0ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmdvb2dsZXRlc3QtZmlsdGVy
LXVuaXR0ZXN0XyJdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKKwor
Y2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0
ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtYnJlYWst
b24tZmFpbHVyZS11bml0dGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQor
CisKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11
bml0dGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1i
cmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmdvb2dsZXRlc3Qt
YnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91
dGlscyJdLAorKQorCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJndGVzdF9hc3NlcnRfYnlfZXhj
ZXB0aW9uX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImd0ZXN0X2Fz
c2VydF9ieV9leGNlcHRpb25fdGVzdC5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCisp
CisKKworCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1
cmUtdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LXRo
cm93LW9uLWZhaWx1cmUtdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQor
CitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3Qi
LAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtdGhyb3ctb24t
ZmFpbHVyZS10ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmdvb2dsZXRlc3QtdGhyb3ctb24tZmFp
bHVyZS10ZXN0XyJdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKKwor
Y2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0XyIs
CisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtbGlzdC10ZXN0cy11
bml0dGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAor
ICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0IiwKKyAgICBzaXplID0g
InNtYWxsIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3QucHki
XSwKKyAgICBkYXRhID0gWyI6Z29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0XyJdLAorICAg
IGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1l
ID0gImdvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0XyIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1z
aHVmZmxlLXRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworcHlfdGVz
dCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0IiwKKyAgICBzaXplID0gInNt
YWxsIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LXNodWZmbGUtdGVzdC5weSJdLAorICAgIGRh
dGEgPSBbIjpnb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3Rf
dGVzdF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWNh
dGNoLWV4Y2VwdGlvbnMtbm8tZXgtdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNz
ID0gWyJnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdF8uY2MiXSwKKyAgICBkZXBzID0g
WyIvLzpndGVzdF9tYWluIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRl
c3QtY2F0Y2gtZXhjZXB0aW9ucy1leC10ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNy
Y3MgPSBbImdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0Xy5jYyJdLAorICAgIGNvcHRz
ID0gWyItZmV4Y2VwdGlvbnMiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdF9tYWluIl0sCispCisK
K3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdCIs
CisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1jYXRjaC1leGNl
cHRpb25zLXRlc3QucHkiXSwKKyAgICBkYXRhID0gWworICAgICAgICAiOmdvb2dsZXRlc3QtY2F0
Y2gtZXhjZXB0aW9ucy1leC10ZXN0XyIsCisgICAgICAgICI6Z29vZ2xldGVzdC1jYXRjaC1leGNl
cHRpb25zLW5vLWV4LXRlc3RfIiwKKyAgICBdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0
aWxzIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImd0ZXN0X3htbF9vdXRwdXRfdW5p
dHRlc3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ3Rlc3RfeG1sX291dHB1
dF91bml0dGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitjY190ZXN0
KAorICAgIG5hbWUgPSAiZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCIsCisgICAgc2l6ZSA9ICJzbWFs
bCIsCisgICAgc3JjcyA9IFsiZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdC5jYyJdLAorICAgIGRlcHMg
PSBbIi8vOmd0ZXN0Il0sCispCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJndGVzdF94bWxfb3V0
cHV0X3VuaXR0ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWworICAgICAg
ICAiZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdC5weSIsCisgICAgICAgICJndGVzdF94bWxfdGVz
dF91dGlscy5weSIsCisgICAgXSwKKyAgICBhcmdzID0gc2VsZWN0KHsKKyAgICAgICAgIjpoYXNf
YWJzbCI6IFtdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi0tbm9fc3RhY2t0
cmFjZV9zdXBwb3J0Il0sCisgICAgfSksCisgICAgZGF0YSA9IFsKKyAgICAgICAgIyBXZSBpbnZv
a2UgZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCB0byB2ZXJpZnkgdGhlIFhNTCBvdXRwdXQKKyAgICAg
ICAgIyB3aGVuIHRoZSB0ZXN0IHByb2dyYW0gY29udGFpbnMgbm8gdGVzdCBkZWZpbml0aW9uLgor
ICAgICAgICAiOmd0ZXN0X25vX3Rlc3RfdW5pdHRlc3QiLAorICAgICAgICAiOmd0ZXN0X3htbF9v
dXRwdXRfdW5pdHRlc3RfIiwKKyAgICBdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxz
Il0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImd0ZXN0X3htbF9vdXRmaWxlMV90ZXN0
XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImd0ZXN0X3htbF9vdXRmaWxlMV90
ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0X21haW4iXSwKKykKKworY2NfYmluYXJ5
KAorICAgIG5hbWUgPSAiZ3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfIiwKKyAgICB0ZXN0b25seSA9
IDEsCisgICAgc3JjcyA9IFsiZ3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfLmNjIl0sCisgICAgZGVw
cyA9IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ3Rlc3Rf
eG1sX291dGZpbGVzX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbCisg
ICAgICAgICJndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weSIsCisgICAgICAgICJndGVzdF94bWxf
dGVzdF91dGlscy5weSIsCisgICAgXSwKKyAgICBkYXRhID0gWworICAgICAgICAiOmd0ZXN0X3ht
bF9vdXRmaWxlMV90ZXN0XyIsCisgICAgICAgICI6Z3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfIiwK
KyAgICBdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK2NjX2JpbmFy
eSgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0XyIsCisgICAgdGVz
dG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0Xy5j
YyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9
ICJnb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdCIsCisgICAgc2l6ZSA9ICJtZWRpdW0iLAor
ICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0LnB5Il0sCisgICAgZGF0
YSA9IFsiZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3RfIl0sCisgICAgZGVwcyA9IFsiOmd0
ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ3Rlc3RfdGVz
dGJyaWRnZV90ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImd0ZXN0X3Rl
c3RicmlkZ2VfdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdF9tYWluIl0sCispCisK
KyMgVGVzdHMgdGhhdCBmaWx0ZXJpbmcgdmlhIHRlc3RicmlkZ2Ugd29ya3MKK3B5X3Rlc3QoCisg
ICAgbmFtZSA9ICJndGVzdF90ZXN0YnJpZGdlX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAor
ICAgIHNyY3MgPSBbImd0ZXN0X3Rlc3RicmlkZ2VfdGVzdC5weSJdLAorICAgIGRhdGEgPSBbIjpn
dGVzdF90ZXN0YnJpZGdlX3Rlc3RfIl0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMi
XSwKKykKKworCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1qc29uLW91dGZpbGVz
LXRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJnb29n
bGV0ZXN0LWpzb24tb3V0ZmlsZXMtdGVzdC5weSIsCisgICAgICAgICJndGVzdF9qc29uX3Rlc3Rf
dXRpbHMucHkiLAorICAgIF0sCisgICAgZGF0YSA9IFsKKyAgICAgICAgIjpndGVzdF94bWxfb3V0
ZmlsZTFfdGVzdF8iLAorICAgICAgICAiOmd0ZXN0X3htbF9vdXRmaWxlMl90ZXN0XyIsCisgICAg
XSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitweV90ZXN0KAorICAg
IG5hbWUgPSAiZ29vZ2xldGVzdC1qc29uLW91dHB1dC11bml0dGVzdCIsCisgICAgc2l6ZSA9ICJt
ZWRpdW0iLAorICAgIHNyY3MgPSBbCisgICAgICAgICJnb29nbGV0ZXN0LWpzb24tb3V0cHV0LXVu
aXR0ZXN0LnB5IiwKKyAgICAgICAgImd0ZXN0X2pzb25fdGVzdF91dGlscy5weSIsCisgICAgXSwK
KyAgICBkYXRhID0gWworICAgICAgICAjIFdlIGludm9rZSBndGVzdF9ub190ZXN0X3VuaXR0ZXN0
IHRvIHZlcmlmeSB0aGUgSlNPTiBvdXRwdXQKKyAgICAgICAgIyB3aGVuIHRoZSB0ZXN0IHByb2dy
YW0gY29udGFpbnMgbm8gdGVzdCBkZWZpbml0aW9uLgorICAgICAgICAiOmd0ZXN0X25vX3Rlc3Rf
dW5pdHRlc3QiLAorICAgICAgICAiOmd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfIiwKKyAgICBd
LAorICAgIGFyZ3MgPSBzZWxlY3QoeworICAgICAgICAiOmhhc19hYnNsIjogW10sCisgICAgICAg
ICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsiLS1ub19zdGFja3RyYWNlX3N1cHBvcnQiXSwKKyAg
ICB9KSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorIyBWZXJpZmllcyBp
bnRlcmFjdGlvbiBvZiBkZWF0aCB0ZXN0cyBhbmQgZXhjZXB0aW9ucy4KK2NjX3Rlc3QoCisgICAg
bmFtZSA9ICJnb29nbGV0ZXN0LWRlYXRoLXRlc3RfZXhfY2F0Y2hfdGVzdCIsCisgICAgc2l6ZSA9
ICJtZWRpdW0iLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNj
Il0sCisgICAgY29wdHMgPSBbIi1mZXhjZXB0aW9ucyJdLAorICAgIGRlZmluZXMgPSBbIkdURVNU
X0VOQUJMRV9DQVRDSF9FWENFUFRJT05TXz0xIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwK
KykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFs
aWQtbmFtZTEtdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0
ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMS10ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8v
Omd0ZXN0Il0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtcGFyYW0t
dGVzdC1pbnZhbGlkLW5hbWUyLXRlc3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9
IFsiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTItdGVzdF8uY2MiXSwKKyAgICBk
ZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVz
dC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisg
ICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdC5weSJd
LAorICAgIGRhdGEgPSBbIjpnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMS10ZXN0
XyJdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK3B5X3Rlc3QoCisg
ICAgbmFtZSA9ICJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0IiwKKyAg
ICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52
YWxpZC1uYW1lMi10ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmdvb2dsZXRlc3QtcGFyYW0tdGVz
dC1pbnZhbGlkLW5hbWUyLXRlc3RfIl0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMi
XSwKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVz
dC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9nb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTVkZmJjNjkzYjQzYTFiMTllMzg0N2RjYmNhYjg4NmQyZjRkMjhlNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1icmVhay1vbi1mYWls
dXJlLXVuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMjA4IEBACisjIS91c3IvYmluL2VudiBweXRob24K
KyMKKyMgQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgYnJl
YWstb24tZmFpbHVyZSBtb2RlLgorCitBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBzZWct
ZmF1bHQgd2hlbiBhbiBhc3NlcnRpb24gZmFpbHMsIHVzaW5nCitlaXRoZXIgdGhlIEdURVNUX0JS
RUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCistLWd0ZXN0X2JyZWFr
X29uX2ZhaWx1cmUgZmxhZy4gIFRoaXMgc2NyaXB0IHRlc3RzIHN1Y2ggZnVuY3Rpb25hbGl0eQor
YnkgaW52b2tpbmcgZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0XyAoYSBwcm9n
cmFtIHdyaXR0ZW4gd2l0aAorR29vZ2xlIFRlc3QpIHdpdGggZGlmZmVyZW50IGVudmlyb25tZW50
cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdzLgorIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IGd0ZXN0
X3Rlc3RfdXRpbHMKKworIyBDb25zdGFudHMuCisKK0lTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdu
dCcKKworIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0
aGUgYnJlYWstb24tZmFpbHVyZSBtb2RlLgorQlJFQUtfT05fRkFJTFVSRV9FTlZfVkFSID0gJ0dU
RVNUX0JSRUFLX09OX0ZBSUxVUkUnCisKKyMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciBlbmFi
bGluZy9kaXNhYmxpbmcgdGhlIGJyZWFrLW9uLWZhaWx1cmUgbW9kZS4KK0JSRUFLX09OX0ZBSUxV
UkVfRkxBRyA9ICdndGVzdF9icmVha19vbl9mYWlsdXJlJworCisjIFRoZSBlbnZpcm9ubWVudCB2
YXJpYWJsZSBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUu
CitUSFJPV19PTl9GQUlMVVJFX0VOVl9WQVIgPSAnR1RFU1RfVEhST1dfT05fRkFJTFVSRScKKwor
IyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgY2F0
Y2gtZXhjZXB0aW9ucyBtb2RlLgorQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSID0gJ0dURVNUX0NB
VENIX0VYQ0VQVElPTlMnCisKKyMgUGF0aCB0byB0aGUgZ29vZ2xldGVzdC1icmVhay1vbi1mYWls
dXJlLXVuaXR0ZXN0XyBwcm9ncmFtLgorRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRl
c3RFeGVjdXRhYmxlUGF0aCgKKyAgICAnZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0
ZXN0XycpCisKKworZW52aXJvbiA9IGd0ZXN0X3Rlc3RfdXRpbHMuZW52aXJvbgorU2V0RW52VmFy
ID0gZ3Rlc3RfdGVzdF91dGlscy5TZXRFbnZWYXIKKworIyBUZXN0cyBpbiB0aGlzIGZpbGUgcnVu
IGEgR29vZ2xlLVRlc3QtYmFzZWQgdGVzdCBwcm9ncmFtIGFuZCBleHBlY3QgaXQKKyMgdG8gdGVy
bWluYXRlIHByZW1hdHVyZWx5LiAgVGhlcmVmb3JlIHRoZXkgYXJlIGluY29tcGF0aWJsZSB3aXRo
CisjIHRoZSBwcmVtYXR1cmUtZXhpdC1maWxlIHByb3RvY29sIGJ5IGRlc2lnbi4gIFVuc2V0IHRo
ZQorIyBwcmVtYXR1cmUtZXhpdCBmaWxlcGF0aCB0byBwcmV2ZW50IEdvb2dsZSBUZXN0IGZyb20g
Y3JlYXRpbmcKKyMgdGhlIGZpbGUuCitTZXRFbnZWYXIoZ3Rlc3RfdGVzdF91dGlscy5QUkVNQVRV
UkVfRVhJVF9GSUxFX0VOVl9WQVIsIE5vbmUpCisKKworZGVmIFJ1bihjb21tYW5kKToKKyAgIiIi
UnVucyBhIGNvbW1hbmQ7IHJldHVybnMgMSBpZiBpdCB3YXMga2lsbGVkIGJ5IGEgc2lnbmFsLCBv
ciAwIG90aGVyd2lzZS4iIiIKKworICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNv
bW1hbmQsIGVudj1lbnZpcm9uKQorICBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsOgorICAgIHJl
dHVybiAxCisgIGVsc2U6CisgICAgcmV0dXJuIDAKKworCisjIFRoZSB0ZXN0cy4KKworCitjbGFz
cyBHVGVzdEJyZWFrT25GYWlsdXJlVW5pdFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6
CisgICIiIlRlc3RzIHVzaW5nIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50
IHZhcmlhYmxlIG9yCisgIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZyB0byB0dXJu
IGFzc2VydGlvbiBmYWlsdXJlcyBpbnRvCisgIHNlZ21lbnRhdGlvbiBmYXVsdHMuCisgICIiIgor
CisgIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwgZW52X3Zhcl92YWx1ZSwgZmxhZ192YWx1ZSwgZXhw
ZWN0X3NlZ19mYXVsdCk6CisgICAgIiIiUnVucyBnb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUt
dW5pdHRlc3RfIGFuZCB2ZXJpZmllcyB0aGF0IGl0IGRvZXMKKyAgICAob3IgZG9lcyBub3QpIGhh
dmUgYSBzZWctZmF1bHQuCisKKyAgICBBcmdzOgorICAgICAgZW52X3Zhcl92YWx1ZTogICAgdmFs
dWUgb2YgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZhcmlhYmxlOyBOb25lIGlmIHRoZSB2YXJpYWJsZSBzaG91bGQgYmUgdW5z
ZXQuCisgICAgICBmbGFnX3ZhbHVlOiAgICAgICB2YWx1ZSBvZiB0aGUgLS1ndGVzdF9icmVha19v
bl9mYWlsdXJlIGZsYWc7CisgICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFn
IHNob3VsZCBub3QgYmUgcHJlc2VudC4KKyAgICAgIGV4cGVjdF9zZWdfZmF1bHQ6IDEgaWYgdGhl
IHByb2dyYW0gaXMgZXhwZWN0ZWQgdG8gZ2VuZXJhdGUgYSBzZWctZmF1bHQ7CisgICAgICAgICAg
ICAgICAgICAgICAgICAwIG90aGVyd2lzZS4KKyAgICAiIiIKKworICAgIFNldEVudlZhcihCUkVB
S19PTl9GQUlMVVJFX0VOVl9WQVIsIGVudl92YXJfdmFsdWUpCisKKyAgICBpZiBlbnZfdmFyX3Zh
bHVlIGlzIE5vbmU6CisgICAgICBlbnZfdmFyX3ZhbHVlX21zZyA9ICcgaXMgbm90IHNldCcKKyAg
ICBlbHNlOgorICAgICAgZW52X3Zhcl92YWx1ZV9tc2cgPSAnPScgKyBlbnZfdmFyX3ZhbHVlCisK
KyAgICBpZiBmbGFnX3ZhbHVlIGlzIE5vbmU6CisgICAgICBmbGFnID0gJycKKyAgICBlbGlmIGZs
YWdfdmFsdWUgPT0gJzAnOgorICAgICAgZmxhZyA9ICctLSVzPTAnICUgQlJFQUtfT05fRkFJTFVS
RV9GTEFHCisgICAgZWxzZToKKyAgICAgIGZsYWcgPSAnLS0lcycgJSBCUkVBS19PTl9GQUlMVVJF
X0ZMQUcKKworICAgIGNvbW1hbmQgPSBbRVhFX1BBVEhdCisgICAgaWYgZmxhZzoKKyAgICAgIGNv
bW1hbmQuYXBwZW5kKGZsYWcpCisKKyAgICBpZiBleHBlY3Rfc2VnX2ZhdWx0OgorICAgICAgc2hv
dWxkX29yX25vdCA9ICdzaG91bGQnCisgICAgZWxzZToKKyAgICAgIHNob3VsZF9vcl9ub3QgPSAn
c2hvdWxkIG5vdCcKKworICAgIGhhc19zZWdfZmF1bHQgPSBSdW4oY29tbWFuZCkKKworICAgIFNl
dEVudlZhcihCUkVBS19PTl9GQUlMVVJFX0VOVl9WQVIsIE5vbmUpCisKKyAgICBtc2cgPSAoJ3do
ZW4gJXMlcywgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4gIiVzIiAlcyBjYXVzZSBhIHNlZy1mYXVs
dC4nICUKKyAgICAgICAgICAgKEJSRUFLX09OX0ZBSUxVUkVfRU5WX1ZBUiwgZW52X3Zhcl92YWx1
ZV9tc2csICcgJy5qb2luKGNvbW1hbmQpLAorICAgICAgICAgICAgc2hvdWxkX29yX25vdCkpCisg
ICAgc2VsZi5hc3NlcnRfKGhhc19zZWdfZmF1bHQgPT0gZXhwZWN0X3NlZ19mYXVsdCwgbXNnKQor
CisgIGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9yKHNlbGYpOgorICAgICIiIlRlc3RzIHRoZSBiZWhh
dmlvciBvZiB0aGUgZGVmYXVsdCBtb2RlLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52
X3Zhcl92YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwK
KyAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCisKKyAgZGVmIHRlc3RF
bnZWYXIoc2VsZik6CisgICAgIiIiVGVzdHMgdXNpbmcgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxV
UkUgZW52aXJvbm1lbnQgdmFyaWFibGUuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZf
dmFyX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCisg
ICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0wKQorICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFs
dWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCisKKyAg
ZGVmIHRlc3RGbGFnKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5nIHRoZSAtLWd0ZXN0X2JyZWFr
X29uX2ZhaWx1cmUgZmxhZy4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFs
dWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKKyAgICAgICAg
ICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCisgICAgc2VsZi5SdW5BbmRWZXJpZnko
ZW52X3Zhcl92YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEn
LAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKKworICBkZWYgdGVz
dEZsYWdPdmVycmlkZXNFbnZWYXIoc2VsZik6CisgICAgIiIiVGVzdHMgdGhhdCB0aGUgZmxhZyBv
dmVycmlkZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLiIiIgorCisgICAgc2VsZi5SdW5BbmRW
ZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1
ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0wKQorICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAg
IGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9
MSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKKyAgICAgICAgICAg
ICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rf
c2VnX2ZhdWx0PTApCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCisg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0X3NlZ19mYXVsdD0xKQorCisgIGRlZiB0ZXN0QnJlYWtPbkZhaWx1cmVPdmVycmlk
ZXNUaHJvd09uRmFpbHVyZShzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0IGd0ZXN0X2JyZWFrX29u
X2ZhaWx1cmUgb3ZlcnJpZGVzIGd0ZXN0X3Rocm93X29uX2ZhaWx1cmUuIiIiCisKKyAgICBTZXRF
bnZWYXIoVEhST1dfT05fRkFJTFVSRV9FTlZfVkFSLCAnMScpCisgICAgdHJ5OgorICAgICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2Zh
dWx0PTEpCisgICAgZmluYWxseToKKyAgICAgIFNldEVudlZhcihUSFJPV19PTl9GQUlMVVJFX0VO
Vl9WQVIsIE5vbmUpCisKKyAgaWYgSVNfV0lORE9XUzoKKyAgICBkZWYgdGVzdENhdGNoRXhjZXB0
aW9uc0RvZXNOb3RJbnRlcmZlcmUoc2VsZik6CisgICAgICAiIiJUZXN0cyB0aGF0IGd0ZXN0X2Nh
dGNoX2V4Y2VwdGlvbnMgZG9lc24ndCBpbnRlcmZlcmUuIiIiCisKKyAgICAgIFNldEVudlZhcihD
QVRDSF9FWENFUFRJT05TX0VOVl9WQVIsICcxJykKKyAgICAgIHRyeToKKyAgICAgICAgc2VsZi5S
dW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2Zh
dWx0PTEpCisgICAgICBmaW5hbGx5OgorICAgICAgICBTZXRFbnZWYXIoQ0FUQ0hfRVhDRVBUSU9O
U19FTlZfVkFSLCBOb25lKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0
X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8uY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8u
Y2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjg0OTU3YTJkMDNiNTYyNjBjOGUyYzBhZThmNWEyN2JlYjZmNjM3OAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVz
dC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0Xy5jYwpAQCAtMCwwICsxLDg2IEBACisvLyBDb3B5
cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
Ky8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1
dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
Ky8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gVW5pdCB0ZXN0IGZv
ciBHb29nbGUgVGVzdCdzIGJyZWFrLW9uLWZhaWx1cmUgbW9kZS4KKy8vCisvLyBBIHVzZXIgY2Fu
IGFzayBHb29nbGUgVGVzdCB0byBzZWctZmF1bHQgd2hlbiBhbiBhc3NlcnRpb24gZmFpbHMsIHVz
aW5nCisvLyBlaXRoZXIgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFy
aWFibGUgb3IgdGhlCisvLyAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZy4gIFRoaXMgZmls
ZSBpcyB1c2VkIGZvciB0ZXN0aW5nIHN1Y2gKKy8vIGZ1bmN0aW9uYWxpdHkuCisvLworLy8gVGhp
cyBwcm9ncmFtIHdpbGwgYmUgaW52b2tlZCBmcm9tIGEgUHl0aG9uIHVuaXQgdGVzdC4gIEl0IGlz
CisvLyBleHBlY3RlZCB0byBmYWlsLiAgRG9uJ3QgcnVuIGl0IGRpcmVjdGx5LgorCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaW5jbHVkZSA8d2lu
ZG93cy5oPgorIyBpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgeworCisv
LyBBIHRlc3QgdGhhdCdzIGV4cGVjdGVkIHRvIGZhaWwuCitURVNUKEZvbywgQmFyKSB7CisgIEVY
UEVDVF9FUSgyLCAzKTsKK30KKworI2lmIEdURVNUX0hBU19TRUggJiYgIUdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCisvLyBPbiBXaW5kb3dzIE1vYmlsZSBnbG9iYWwgZXhjZXB0aW9uIGhhbmRsZXJz
IGFyZSBub3Qgc3VwcG9ydGVkLgorTE9ORyBXSU5BUEkgRXhpdFdpdGhFeGNlcHRpb25Db2RlKAor
ICAgIHN0cnVjdCBfRVhDRVBUSU9OX1BPSU5URVJTKiBleGNlcHRpb25fcG9pbnRlcnMpIHsKKyAg
ZXhpdChleGNlcHRpb25fcG9pbnRlcnMtPkV4Y2VwdGlvblJlY29yZC0+RXhjZXB0aW9uQ29kZSk7
Cit9CisjZW5kaWYKKworfSAgLy8gbmFtZXNwYWNlCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFy
ICoqYXJndikgeworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgLy8gU3VwcHJlc3NlcyBkaXNwbGF5
IG9mIHRoZSBXaW5kb3dzIGVycm9yIGRpYWxvZyB1cG9uIGVuY291bnRlcmluZworICAvLyBhIGdl
bmVyYWwgcHJvdGVjdGlvbiBmYXVsdCAoc2VnbWVudCB2aW9sYXRpb24pLgorICBTZXRFcnJvck1v
ZGUoU0VNX05PR1BGQVVMVEVSUk9SQk9YIHwgU0VNX0ZBSUxDUklUSUNBTEVSUk9SUyk7CisKKyMg
aWYgR1RFU1RfSEFTX1NFSCAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKworICAvLyBUaGUg
ZGVmYXVsdCB1bmhhbmRsZWQgZXhjZXB0aW9uIGZpbHRlciBkb2VzIG5vdCBhbHdheXMgZXhpdAor
ICAvLyB3aXRoIHRoZSBleGNlcHRpb24gY29kZSBhcyBleGl0IGNvZGUgLSBmb3IgZXhhbXBsZSBp
dCBleGl0cyB3aXRoCisgIC8vIDAgZm9yIEVYQ0VQVElPTl9BQ0NFU1NfVklPTEFUSU9OIGFuZCAx
IGZvciBFWENFUFRJT05fQlJFQUtQT0lOVAorICAvLyBpZiB0aGUgYXBwbGljYXRpb24gaXMgY29t
cGlsZWQgaW4gZGVidWcgbW9kZS4gVGh1cyB3ZSB1c2Ugb3VyIG93bgorICAvLyBmaWx0ZXIgd2hp
Y2ggYWx3YXlzIGV4aXRzIHdpdGggdGhlIGV4Y2VwdGlvbiBjb2RlIGZvciB1bmhhbmRsZWQKKyAg
Ly8gZXhjZXB0aW9ucy4KKyAgU2V0VW5oYW5kbGVkRXhjZXB0aW9uRmlsdGVyKEV4aXRXaXRoRXhj
ZXB0aW9uQ29kZSk7CisKKyMgZW5kaWYKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworICB0
ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgcmV0dXJuIFJVTl9BTExf
VEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVk
NDljMTAyM2M1MGVmMTY4MzNlNmI4ZTJhOGU2MjAyNDg0MzJhYzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9u
cy10ZXN0LnB5CkBAIC0wLDAgKzEsMjMzIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMg
Q29weXJpZ2h0IDIwMTAgR29vZ2xlIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisiIiJUZXN0cyBHb29nbGUgVGVzdCdzIGV4Y2VwdGlvbiBjYXRjaGluZyBi
ZWhhdmlvci4KKworVGhpcyBzY3JpcHQgaW52b2tlcyBnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlv
bnMtdGVzdF8gYW5kCitnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtZXgtdGVzdF8gKHByb2dy
YW1zIHdyaXR0ZW4gd2l0aAorR29vZ2xlIFRlc3QpIGFuZCB2ZXJpZmllcyB0aGVpciBvdXRwdXQu
CisiIiIKKworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworIyBDb25zdGFudHMuCitGTEFHX1BS
RUZJWCA9ICctLWd0ZXN0XycKK0xJU1RfVEVTVFNfRkxBRyA9IEZMQUdfUFJFRklYICsgJ2xpc3Rf
dGVzdHMnCitOT19DQVRDSF9FWENFUFRJT05TX0ZMQUcgPSBGTEFHX1BSRUZJWCArICdjYXRjaF9l
eGNlcHRpb25zPTAnCitGSUxURVJfRkxBRyA9IEZMQUdfUFJFRklYICsgJ2ZpbHRlcicKKworIyBQ
YXRoIHRvIHRoZSBnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtZXgtdGVzdF8gYmluYXJ5LCBj
b21waWxlZCB3aXRoCisjIGV4Y2VwdGlvbnMgZW5hYmxlZC4KK0VYX0VYRV9QQVRIID0gZ3Rlc3Rf
dGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisgICAgJ2dvb2dsZXRlc3QtY2F0Y2gt
ZXhjZXB0aW9ucy1leC10ZXN0XycpCisKKyMgUGF0aCB0byB0aGUgZ29vZ2xldGVzdC1jYXRjaC1l
eGNlcHRpb25zLXRlc3RfIGJpbmFyeSwgY29tcGlsZWQgd2l0aAorIyBleGNlcHRpb25zIGRpc2Fi
bGVkLgorRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgK
KyAgICAnZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLW5vLWV4LXRlc3RfJykKKworZW52aXJv
biA9IGd0ZXN0X3Rlc3RfdXRpbHMuZW52aXJvbgorU2V0RW52VmFyID0gZ3Rlc3RfdGVzdF91dGls
cy5TZXRFbnZWYXIKKworIyBUZXN0cyBpbiB0aGlzIGZpbGUgcnVuIGEgR29vZ2xlLVRlc3QtYmFz
ZWQgdGVzdCBwcm9ncmFtIGFuZCBleHBlY3QgaXQKKyMgdG8gdGVybWluYXRlIHByZW1hdHVyZWx5
LiAgVGhlcmVmb3JlIHRoZXkgYXJlIGluY29tcGF0aWJsZSB3aXRoCisjIHRoZSBwcmVtYXR1cmUt
ZXhpdC1maWxlIHByb3RvY29sIGJ5IGRlc2lnbi4gIFVuc2V0IHRoZQorIyBwcmVtYXR1cmUtZXhp
dCBmaWxlcGF0aCB0byBwcmV2ZW50IEdvb2dsZSBUZXN0IGZyb20gY3JlYXRpbmcKKyMgdGhlIGZp
bGUuCitTZXRFbnZWYXIoZ3Rlc3RfdGVzdF91dGlscy5QUkVNQVRVUkVfRVhJVF9GSUxFX0VOVl9W
QVIsIE5vbmUpCisKK1RFU1RfTElTVCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKKyAg
ICBbRVhFX1BBVEgsIExJU1RfVEVTVFNfRkxBR10sIGVudj1lbnZpcm9uKS5vdXRwdXQKKworU1VQ
UE9SVFNfU0VIX0VYQ0VQVElPTlMgPSAnVGhyb3dzU2VoRXhjZXB0aW9uJyBpbiBURVNUX0xJU1QK
KworaWYgU1VQUE9SVFNfU0VIX0VYQ0VQVElPTlM6CisgIEJJTkFSWV9PVVRQVVQgPSBndGVzdF90
ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0VYRV9QQVRIXSwgZW52PWVudmlyb24pLm91dHB1dAorCitF
WF9CSU5BUllfT1VUUFVUID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAorICAgIFtFWF9F
WEVfUEFUSF0sIGVudj1lbnZpcm9uKS5vdXRwdXQKKworCisjIFRoZSB0ZXN0cy4KK2lmIFNVUFBP
UlRTX1NFSF9FWENFUFRJT05TOgorICAjIHB5bGludDpkaXNhYmxlLW1zZz1DNjMwMgorICBjbGFz
cyBDYXRjaFNlaEV4Y2VwdGlvbnNUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAg
ICIiIlRlc3RzIGV4Y2VwdGlvbi1jYXRjaGluZyBiZWhhdmlvci4iIiIKKworCisgICAgZGVmIFRl
c3RTZWhFeGNlcHRpb25zKHNlbGYsIHRlc3Rfb3V0cHV0KToKKyAgICAgIHNlbGYuYXNzZXJ0Xygn
U0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24gJworICAgICAgICAgICAgICAgICAg
ICdpbiB0aGUgdGVzdCBmaXh0dXJlXCdzIGNvbnN0cnVjdG9yJworICAgICAgICAgICAgICAgICAg
IGluIHRlc3Rfb3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGgg
Y29kZSAweDJhIHRocm93biAnCisgICAgICAgICAgICAgICAgICAgJ2luIHRoZSB0ZXN0IGZpeHR1
cmVcJ3MgZGVzdHJ1Y3RvcicKKyAgICAgICAgICAgICAgICAgICBpbiB0ZXN0X291dHB1dCkKKyAg
ICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24gaW4g
U2V0VXBUZXN0Q2FzZSgpJworICAgICAgICAgICAgICAgICAgIGluIHRlc3Rfb3V0cHV0KQorICAg
ICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGggY29kZSAweDJhIHRocm93biBpbiBU
ZWFyRG93blRlc3RDYXNlKCknCisgICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCisg
ICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhyb3duIGlu
IFNldFVwKCknCisgICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCisgICAgICBzZWxm
LmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhyb3duIGluIFRlYXJEb3du
KCknCisgICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCisgICAgICBzZWxmLmFzc2Vy
dF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhyb3duIGluIHRoZSB0ZXN0IGJvZHkn
CisgICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCisKKyAgICBkZWYgdGVzdENhdGNo
ZXNTZWhFeGNlcHRpb25zV2l0aEN4eEV4Y2VwdGlvbnNFbmFibGVkKHNlbGYpOgorICAgICAgc2Vs
Zi5UZXN0U2VoRXhjZXB0aW9ucyhFWF9CSU5BUllfT1VUUFVUKQorCisgICAgZGVmIHRlc3RDYXRj
aGVzU2VoRXhjZXB0aW9uc1dpdGhDeHhFeGNlcHRpb25zRGlzYWJsZWQoc2VsZik6CisgICAgICBz
ZWxmLlRlc3RTZWhFeGNlcHRpb25zKEJJTkFSWV9PVVRQVVQpCisKKworY2xhc3MgQ2F0Y2hDeHhF
eGNlcHRpb25zVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgIiIiVGVzdHMgQysr
IGV4Y2VwdGlvbi1jYXRjaGluZyBiZWhhdmlvci4KKworICAgICBUZXN0cyBpbiB0aGlzIHRlc3Qg
Y2FzZSB2ZXJpZnkgdGhhdDoKKyAgICAgKiBDKysgZXhjZXB0aW9ucyBhcmUgY2F1Z2h0IGFuZCBs
b2dnZWQgYXMgQysrIChub3QgU0VIKSBleGNlcHRpb25zCisgICAgICogRXhjZXB0aW9uIHRocm93
biBhZmZlY3QgdGhlIHJlbWFpbmRlciBvZiB0aGUgdGVzdCB3b3JrIGZsb3cgaW4gdGhlCisgICAg
ICAgZXhwZWN0ZWQgbWFubmVyLgorICAiIiIKKworICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRp
b25zSW5GaXh0dXJlQ29uc3RydWN0b3Ioc2VsZik6CisgICAgc2VsZi5hc3NlcnRfKCdDKysgZXhj
ZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gJworICAgICAgICAgICAgICAgICAnIlN0YW5kYXJkIEMr
KyBleGNlcHRpb24iIHRocm93biAnCisgICAgICAgICAgICAgICAgICdpbiB0aGUgdGVzdCBmaXh0
dXJlXCdzIGNvbnN0cnVjdG9yJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVU
KQorICAgIHNlbGYuYXNzZXJ0XygndW5leHBlY3RlZCcgbm90IGluIEVYX0JJTkFSWV9PVVRQVVQs
CisgICAgICAgICAgICAgICAgICdUaGlzIGZhaWx1cmUgYmVsb25ncyBpbiB0aGlzIHRlc3Qgb25s
eSBpZiAnCisgICAgICAgICAgICAgICAgICciQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Qi
IChubyBxdW90ZXMpICcKKyAgICAgICAgICAgICAgICAgJ2FwcGVhcnMgb24gdGhlIHNhbWUgbGlu
ZSBhcyB3b3JkcyAiY2FsbGVkIHVuZXhwZWN0ZWRseSInKQorCisgIGlmICgnQ3h4RXhjZXB0aW9u
SW5EZXN0cnVjdG9yVGVzdC5UaHJvd3NFeGNlcHRpb25JbkRlc3RydWN0b3InIGluCisgICAgICBF
WF9CSU5BUllfT1VUUFVUKToKKworICAgIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJbkZp
eHR1cmVEZXN0cnVjdG9yKHNlbGYpOgorICAgICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0aW9u
IHdpdGggZGVzY3JpcHRpb24gJworICAgICAgICAgICAgICAgICAgICciU3RhbmRhcmQgQysrIGV4
Y2VwdGlvbiIgdGhyb3duICcKKyAgICAgICAgICAgICAgICAgICAnaW4gdGhlIHRlc3QgZml4dHVy
ZVwncyBkZXN0cnVjdG9yJworICAgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQp
CisgICAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3Q6OlRlYXJE
b3duVGVzdENhc2UoKSAnCisgICAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4n
CisgICAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKworICBkZWYgdGVzdENh
dGNoZXNDeHhFeGNlcHRpb25zSW5TZXRVcFRlc3RDYXNlKHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0
XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICJTdGFuZGFyZCBDKysgZXhjZXB0aW9u
IicKKyAgICAgICAgICAgICAgICAgJyB0aHJvd24gaW4gU2V0VXBUZXN0Q2FzZSgpJworICAgICAg
ICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhj
ZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAnCisgICAgICAgICAg
ICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5B
UllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNl
VGVzdCBjb25zdHJ1Y3RvciAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQu
JworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0
XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCBkZXN0cnVjdG9yICcKKyAgICAgICAg
ICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJ
TkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVzdENh
c2VUZXN0OjpTZXRVcCgpICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4n
CisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRf
KCdDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0OjpUZWFyRG93bigpICcKKyAgICAgICAg
ICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJ
TkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVzdENh
c2VUZXN0IHRlc3QgYm9keSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQu
JworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorCisgIGRlZiB0ZXN0Q2F0
Y2hlc0N4eEV4Y2VwdGlvbnNJblRlYXJEb3duVGVzdENhc2Uoc2VsZik6CisgICAgc2VsZi5hc3Nl
cnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gIlN0YW5kYXJkIEMrKyBleGNlcHRp
b24iJworICAgICAgICAgICAgICAgICAnIHRocm93biBpbiBUZWFyRG93blRlc3RDYXNlKCknCisg
ICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisKKyAgZGVmIHRlc3RDYXRjaGVz
Q3h4RXhjZXB0aW9uc0luU2V0VXAoc2VsZik6CisgICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0
aW9uIHdpdGggZGVzY3JpcHRpb24gIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iJworICAgICAgICAg
ICAgICAgICAnIHRocm93biBpbiBTZXRVcCgpJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5B
UllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Q6OlRl
YXJEb3duVGVzdENhc2UoKSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQu
JworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0
XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QgZGVzdHJ1Y3RvciAnCisgICAgICAgICAgICAgICAg
ICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VU
UFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Q6OlRlYXJEb3du
KCkgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAg
ICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ3VuZXhwZWN0ZWQn
IG5vdCBpbiBFWF9CSU5BUllfT1VUUFVULAorICAgICAgICAgICAgICAgICAnVGhpcyBmYWlsdXJl
IGJlbG9uZ3MgaW4gdGhpcyB0ZXN0IG9ubHkgaWYgJworICAgICAgICAgICAgICAgICAnIkN4eEV4
Y2VwdGlvbkluU2V0VXBUZXN0IiAobm8gcXVvdGVzKSAnCisgICAgICAgICAgICAgICAgICdhcHBl
YXJzIG9uIHRoZSBzYW1lIGxpbmUgYXMgd29yZHMgImNhbGxlZCB1bmV4cGVjdGVkbHkiJykKKwor
ICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5UZWFyRG93bihzZWxmKToKKyAgICBzZWxm
LmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlvbiAiU3RhbmRhcmQgQysrIGV4
Y2VwdGlvbiInCisgICAgICAgICAgICAgICAgICcgdGhyb3duIGluIFRlYXJEb3duKCknCisgICAg
ICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhF
eGNlcHRpb25JblRlYXJEb3duVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICcKKyAgICAgICAgICAg
ICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFS
WV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCBk
ZXN0cnVjdG9yICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAg
ICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisKKyAgZGVmIHRlc3RDYXRjaGVzQ3h4
RXhjZXB0aW9uc0luVGVzdEJvZHkoc2VsZik6CisgICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0
aW9uIHdpdGggZGVzY3JpcHRpb24gIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iJworICAgICAgICAg
ICAgICAgICAnIHRocm93biBpbiB0aGUgdGVzdCBib2R5JworICAgICAgICAgICAgICAgICBpbiBF
WF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5UZXN0Qm9k
eVRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMg
ZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNl
bGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QgZGVzdHJ1Y3RvciAnCisgICAg
ICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBF
WF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5UZXN0Qm9k
eVRlc3Q6OlRlYXJEb3duKCkgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVk
LicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKworICBkZWYgdGVzdENh
dGNoZXNOb25TdGRDeHhFeGNlcHRpb25zKHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0XygnVW5rbm93
biBDKysgZXhjZXB0aW9uIHRocm93biBpbiB0aGUgdGVzdCBib2R5JworICAgICAgICAgICAgICAg
ICBpbiBFWF9CSU5BUllfT1VUUFVUKQorCisgIGRlZiB0ZXN0VW5oYW5kbGVkQ3h4RXhjZXB0aW9u
c0Fib3J0VGhlUHJvZ3JhbShzZWxmKToKKyAgICAjIEZpbHRlcnMgb3V0IFNFSCBleGNlcHRpb24g
dGVzdHMgb24gV2luZG93cy4gVW5oYW5kbGVkIFNFSCBleGNlcHRpb25zCisgICAgIyBjYXVzZSB0
ZXN0cyB0byBzaG93IHBvcC11cCB3aW5kb3dzIHRoZXJlLgorICAgIEZJVExFUl9PVVRfU0VIX1RF
U1RTX0ZMQUcgPSBGSUxURVJfRkxBRyArICc9LSpTZWgqJworICAgICMgQnkgZGVmYXVsdCwgR29v
Z2xlIFRlc3QgZG9lc24ndCBjYXRjaCB0aGUgZXhjZXB0aW9ucy4KKyAgICB1bmNhdWdodF9leGNl
cHRpb25zX2V4X2JpbmFyeV9vdXRwdXQgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisg
ICAgICAgIFtFWF9FWEVfUEFUSCwKKyAgICAgICAgIE5PX0NBVENIX0VYQ0VQVElPTlNfRkxBRywK
KyAgICAgICAgIEZJVExFUl9PVVRfU0VIX1RFU1RTX0ZMQUddLAorICAgICAgICBlbnY9ZW52aXJv
bikub3V0cHV0CisKKyAgICBzZWxmLmFzc2VydF8oJ1VuaGFuZGxlZCBDKysgZXhjZXB0aW9uIHRl
cm1pbmF0aW5nIHRoZSBwcm9ncmFtJworICAgICAgICAgICAgICAgICBpbiB1bmNhdWdodF9leGNl
cHRpb25zX2V4X2JpbmFyeV9vdXRwdXQpCisgICAgc2VsZi5hc3NlcnRfKCd1bmV4cGVjdGVkJyBu
b3QgaW4gdW5jYXVnaHRfZXhjZXB0aW9uc19leF9iaW5hcnlfb3V0cHV0KQorCisKK2lmIF9fbmFt
ZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9u
cy10ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1jYXRj
aC1leGNlcHRpb25zLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5ZGFlNzAwMzBhMzNhZWFiYTA2MGFh
ZWY5N2E5NzlhOGY1ODA0YWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0Xy5jYwpAQCAtMCwwICsx
LDMxMSBAQAorLy8gQ29weXJpZ2h0IDIwMTAsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
Ly8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisv
LworLy8gVGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZi4gVGVzdHMgaW4gdGhpcyBmaWxlIHRo
cm93IEMrKyBvciBTRUgKKy8vIGV4Y2VwdGlvbnMsIGFuZCB0aGUgb3V0cHV0IGlzIHZlcmlmaWVk
IGJ5CisvLyBnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdC5weS4KKworI2luY2x1ZGUg
PHN0ZGlvLmg+ICAvLyBOT0xJTlQKKyNpbmNsdWRlIDxzdGRsaWIuaD4gIC8vIEZvciBleGl0KCku
CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisjaWYgR1RFU1RfSEFTX1NFSAorIyBpbmNs
dWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19FWENFUFRJT05TCisjIGlu
Y2x1ZGUgPGV4Y2VwdGlvbj4gIC8vIEZvciBzZXRfdGVybWluYXRlKCkuCisjIGluY2x1ZGUgPHN0
ZGV4Y2VwdD4KKyNlbmRpZgorCit1c2luZyB0ZXN0aW5nOjpUZXN0OworCisjaWYgR1RFU1RfSEFT
X1NFSAorCitjbGFzcyBTZWhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCA6IHB1YmxpYyBUZXN0
IHsKKyBwdWJsaWM6CisgIFNlaEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0KCkgeyBSYWlzZUV4
Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7IH0KK307CisKK1RFU1RfRihTZWhFeGNlcHRpb25JbkNv
bnN0cnVjdG9yVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5Db25zdHJ1Y3Rvcikge30KKworY2xhc3Mg
U2VoRXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6Cisg
IH5TZWhFeGNlcHRpb25JbkRlc3RydWN0b3JUZXN0KCkgeyBSYWlzZUV4Y2VwdGlvbig0MiwgMCwg
MCwgTlVMTCk7IH0KK307CisKK1RFU1RfRihTZWhFeGNlcHRpb25JbkRlc3RydWN0b3JUZXN0LCBU
aHJvd3NFeGNlcHRpb25JbkRlc3RydWN0b3IpIHt9CisKK2NsYXNzIFNlaEV4Y2VwdGlvbkluU2V0
VXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBT
ZXRVcFRlc3RDYXNlKCkgeyBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7IH0KK307CisK
K1RFU1RfRihTZWhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0LCBUaHJvd3NFeGNlcHRpb25J
blNldFVwVGVzdENhc2UpIHt9CisKK2NsYXNzIFNlaEV4Y2VwdGlvbkluVGVhckRvd25UZXN0Q2Fz
ZVRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRl
c3RDYXNlKCkgeyBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7IH0KK307CisKK1RFU1Rf
RihTZWhFeGNlcHRpb25JblRlYXJEb3duVGVzdENhc2VUZXN0LCBUaHJvd3NFeGNlcHRpb25JblRl
YXJEb3duVGVzdENhc2UpIHt9CisKK2NsYXNzIFNlaEV4Y2VwdGlvbkluU2V0VXBUZXN0IDogcHVi
bGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeyBSYWlzZUV4
Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7IH0KK307CisKK1RFU1RfRihTZWhFeGNlcHRpb25JblNl
dFVwVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5TZXRVcCkge30KKworY2xhc3MgU2VoRXhjZXB0aW9u
SW5UZWFyRG93blRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIHZv
aWQgVGVhckRvd24oKSB7IFJhaXNlRXhjZXB0aW9uKDQyLCAwLCAwLCBOVUxMKTsgfQorfTsKKwor
VEVTVF9GKFNlaEV4Y2VwdGlvbkluVGVhckRvd25UZXN0LCBUaHJvd3NFeGNlcHRpb25JblRlYXJE
b3duKSB7fQorCitURVNUKFNlaEV4Y2VwdGlvblRlc3QsIFRocm93c1NlaEV4Y2VwdGlvbikgewor
ICBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1NFSAorCisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworY2xhc3MgQ3h4RXhjZXB0aW9u
SW5Db25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBDeHhFeGNlcHRp
b25JbkNvbnN0cnVjdG9yVGVzdCgpIHsKKyAgICAvLyBXaXRob3V0IHRoaXMgbWFjcm8gVkMrKyBj
b21wbGFpbnMgYWJvdXQgdW5yZWFjaGFibGUgY29kZSBhdCB0aGUgZW5kIG9mCisgICAgLy8gdGhl
IGNvbnN0cnVjdG9yLgorICAgIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklO
R19CRUxPV18oCisgICAgICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcigiU3RhbmRhcmQgQysr
IGV4Y2VwdGlvbiIpKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7
CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9y
VGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3Rl
ZC5cbiIpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIH5DeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9y
VGVzdCgpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9y
VGVzdCBkZXN0cnVjdG9yICIKKyAgICAgICAgICAgICAgICAgIDw8ICJjYWxsZWQgdW5leHBlY3Rl
ZGx5LiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgQUREX0ZBSUxVUkUo
KSA8PCAiQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Q6OlNldFVwKCkgIgorICAgICAgICAg
ICAgICAgICAgPDwgImNhbGxlZCB1bmV4cGVjdGVkbHkuIjsKKyAgfQorCisgIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJDeHhFeGNlcHRpb25JbkNvbnN0
cnVjdG9yVGVzdDo6VGVhckRvd24oKSAiCisgICAgICAgICAgICAgICAgICA8PCAiY2FsbGVkIHVu
ZXhwZWN0ZWRseS4iOworICB9Cit9OworCitURVNUX0YoQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3Rv
clRlc3QsIFRocm93c0V4Y2VwdGlvbkluQ29uc3RydWN0b3IpIHsKKyAgQUREX0ZBSUxVUkUoKSA8
PCAiQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QgdGVzdCBib2R5ICIKKyAgICAgICAgICAg
ICAgICA8PCAiY2FsbGVkIHVuZXhwZWN0ZWRseS4iOworfQorCisvLyBFeGNlcHRpb25zIGluIGRl
c3RydWN0b3JzIGFyZSBub3Qgc3VwcG9ydGVkIGluIEMrKzExLgorI2lmICFHVEVTVF9MQU5HX0NY
WDExCitjbGFzcyBDeHhFeGNlcHRpb25JbkRlc3RydWN0b3JUZXN0IDogcHVibGljIFRlc3Qgewor
IHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBwcmludGYo
IiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3Q6OlRlYXJEb3du
VGVzdENhc2UoKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQor
CisgcHJvdGVjdGVkOgorICB+Q3h4RXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCgpIHsKKyAgICBH
VEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKAorICAgICAgICB0
aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iKSk7CisgIH0K
K307CisKK1RFU1RfRihDeHhFeGNlcHRpb25JbkRlc3RydWN0b3JUZXN0LCBUaHJvd3NFeGNlcHRp
b25JbkRlc3RydWN0b3IpIHt9CisjZW5kaWYgIC8vIEMrKzExIG1vZGUKKworY2xhc3MgQ3h4RXhj
ZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIEN4
eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAg
ICAgICAgICJDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0IGNvbnN0cnVjdG9yICIKKyAg
ICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyAgc3RhdGljIHZvaWQg
U2V0VXBUZXN0Q2FzZSgpIHsKKyAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJk
IEMrKyBleGNlcHRpb24iKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2Uo
KSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblNldFVwVGVz
dENhc2VUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4
cGVjdGVkLlxuIik7CisgIH0KKworIHByb3RlY3RlZDoKKyAgfkN4eEV4Y2VwdGlvbkluU2V0VXBU
ZXN0Q2FzZVRlc3QoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRp
b25JblNldFVwVGVzdENhc2VUZXN0IGRlc3RydWN0b3IgIgorICAgICAgICAgICAiY2FsbGVkIGFz
IGV4cGVjdGVkLlxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgcHJp
bnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0OjpT
ZXRVcCgpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyAg
dmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAi
Q3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6VGVhckRvd24oKSAiCisgICAgICAgICAg
ICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorfTsKKworVEVTVF9GKEN4eEV4Y2VwdGlv
bkluU2V0VXBUZXN0Q2FzZVRlc3QsIFRocm93c0V4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZSkgewor
ICBwcmludGYoIiVzIiwKKyAgICAgICAgICJDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0
IHRlc3QgYm9keSAiCisgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7Cit9CisKK2Ns
YXNzIEN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0Q2FzZVRlc3QgOiBwdWJsaWMgVGVzdCB7Cisg
cHVibGljOgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHRocm93IHN0
ZDo6cnVudGltZV9lcnJvcigiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIpOworICB9Cit9OworCitU
RVNUX0YoQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNlVGVzdCwgVGhyb3dzRXhjZXB0aW9u
SW5UZWFyRG93blRlc3RDYXNlKSB7fQorCitjbGFzcyBDeHhFeGNlcHRpb25JblNldFVwVGVzdCA6
IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2Uo
KSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblNldFVwVGVz
dDo6VGVhckRvd25UZXN0Q2FzZSgpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5c
biIpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIH5DeHhFeGNlcHRpb25JblNldFVwVGVzdCgpIHsK
KyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0IGRl
c3RydWN0b3IgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKwor
ICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IHRocm93IHN0ZDo6cnVudGltZV9lcnJvcigiU3RhbmRh
cmQgQysrIGV4Y2VwdGlvbiIpOyB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAg
IHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Q6OlRlYXJE
b3duKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KK307CisK
K1RFU1RfRihDeHhFeGNlcHRpb25JblNldFVwVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5TZXRVcCkg
eworICBBRERfRkFJTFVSRSgpIDw8ICJDeHhFeGNlcHRpb25JblNldFVwVGVzdCB0ZXN0IGJvZHkg
IgorICAgICAgICAgICAgICAgIDw8ICJjYWxsZWQgdW5leHBlY3RlZGx5LiI7Cit9CisKK2NsYXNz
IEN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAg
c3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAg
ICAgICAgIkN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgIgor
ICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworIHByb3RlY3RlZDoK
KyAgfkN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0KCkgeworICAgIHByaW50ZigiJXMiLAorICAg
ICAgICAgICAiQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3QgZGVzdHJ1Y3RvciAiCisgICAgICAg
ICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpIHsKKyAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBleGNl
cHRpb24iKTsKKyAgfQorfTsKKworVEVTVF9GKEN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0LCBU
aHJvd3NFeGNlcHRpb25JblRlYXJEb3duKSB7fQorCitjbGFzcyBDeHhFeGNlcHRpb25JblRlc3RC
b2R5VGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFRlYXJEb3du
VGVzdENhc2UoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25J
blRlc3RCb2R5VGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIKKyAgICAgICAgICAgImNhbGxlZCBh
cyBleHBlY3RlZC5cbiIpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIH5DeHhFeGNlcHRpb25JblRl
c3RCb2R5VGVzdCgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlv
bkluVGVzdEJvZHlUZXN0IGRlc3RydWN0b3IgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVj
dGVkLlxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgcHJpbnRm
KCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdDo6VGVhckRvd24o
KSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorfTsKKworVEVT
VF9GKEN4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0LCBUaHJvd3NTdGRDeHhFeGNlcHRpb24pIHsK
KyAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIik7Cit9
CisKK1RFU1QoQ3h4RXhjZXB0aW9uVGVzdCwgVGhyb3dzTm9uU3RkQ3h4RXhjZXB0aW9uKSB7Cisg
IHRocm93ICJDLXN0cmluZyI7Cit9CisKKy8vIFRoaXMgdGVybWluYXRlIGhhbmRsZXIgYWJvcnRz
IHRoZSBwcm9ncmFtIHVzaW5nIGV4aXQoKSByYXRoZXIgdGhhbiBhYm9ydCgpLgorLy8gVGhpcyBh
dm9pZHMgc2hvd2luZyBwb3AtdXBzIG9uIFdpbmRvd3Mgc3lzdGVtcyBhbmQgY29yZSBkdW1wcyBv
biBVbml4LWxpa2UKKy8vIG9uZXMuCit2b2lkIFRlcm1pbmF0ZUhhbmRsZXIoKSB7CisgIGZwcmlu
dGYoc3RkZXJyLCAiJXNcbiIsICJVbmhhbmRsZWQgQysrIGV4Y2VwdGlvbiB0ZXJtaW5hdGluZyB0
aGUgcHJvZ3JhbS4iKTsKKyAgZmZsdXNoKE5VTEwpOworICBleGl0KDMpOworfQorCisjZW5kaWYg
IC8vIEdURVNUX0hBU19FWENFUFRJT05TCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJn
dikgeworI2lmIEdURVNUX0hBU19FWENFUFRJT05TCisgIHN0ZDo6c2V0X3Rlcm1pbmF0ZSgmVGVy
bWluYXRlSGFuZGxlcik7CisjZW5kaWYKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2Ms
IGFyZ3YpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNvbG9yLXRlc3QucHkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY29sb3ItdGVzdC5weQpuZXcgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mM2I3Yzk5OTBiY2Y0NGE2NTAzNmMyNTNlN2EwMTg0NWFmOWMzNzE3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNvbG9yLXRlc3Qu
cHkKQEAgLTAsMCArMSwxMjcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmln
aHQgMjAwOCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3QgY29ycmVjdGx5IGRldGVybWlu
ZXMgd2hldGhlciB0byB1c2UgY29sb3JzLiIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBndGVzdF90
ZXN0X3V0aWxzCisKK0lTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdudCcKKworQ09MT1JfRU5WX1ZB
UiA9ICdHVEVTVF9DT0xPUicKK0NPTE9SX0ZMQUcgPSAnZ3Rlc3RfY29sb3InCitDT01NQU5EID0g
Z3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2dvb2dsZXRlc3QtY29sb3It
dGVzdF8nKQorCisKK2RlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgorICAiIiJTZXRzIHRo
ZSBlbnYgdmFyaWFibGUgdG8gJ3ZhbHVlJzsgdW5zZXRzIGl0IHdoZW4gJ3ZhbHVlJyBpcyBOb25l
LiIiIgorCisgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAgIG9zLmVudmlyb25bZW52X3Zhcl0g
PSB2YWx1ZQorICBlbGlmIGVudl92YXIgaW4gb3MuZW52aXJvbjoKKyAgICBkZWwgb3MuZW52aXJv
bltlbnZfdmFyXQorCisKK2RlZiBVc2VzQ29sb3IodGVybSwgY29sb3JfZW52X3ZhciwgY29sb3Jf
ZmxhZyk6CisgICIiIlJ1bnMgZ29vZ2xldGVzdC1jb2xvci10ZXN0XyBhbmQgcmV0dXJucyBpdHMg
ZXhpdCBjb2RlLiIiIgorCisgIFNldEVudlZhcignVEVSTScsIHRlcm0pCisgIFNldEVudlZhcihD
T0xPUl9FTlZfVkFSLCBjb2xvcl9lbnZfdmFyKQorCisgIGlmIGNvbG9yX2ZsYWcgaXMgTm9uZToK
KyAgICBhcmdzID0gW10KKyAgZWxzZToKKyAgICBhcmdzID0gWyctLSVzPSVzJyAlIChDT0xPUl9G
TEFHLCBjb2xvcl9mbGFnKV0KKyAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhbQ09N
TUFORF0gKyBhcmdzKQorICByZXR1cm4gbm90IHAuZXhpdGVkIG9yIHAuZXhpdF9jb2RlCisKKwor
Y2xhc3MgR1Rlc3RDb2xvclRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgIGRlZiB0
ZXN0Tm9FbnZWYXJOb0ZsYWcoc2VsZik6CisgICAgIiIiVGVzdHMgdGhlIGNhc2Ugd2hlbiB0aGVy
ZSdzIG5laXRoZXIgR1RFU1RfQ09MT1Igbm9yIC0tZ3Rlc3RfY29sb3IuIiIiCisKKyAgICBpZiBu
b3QgSVNfV0lORE9XUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdkdW1iJywg
Tm9uZSwgTm9uZSkpCisgICAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcignZW1hY3MnLCBO
b25lLCBOb25lKSkKKyAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybS1tb25v
JywgTm9uZSwgTm9uZSkpCisgICAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigndW5rbm93
bicsIE5vbmUsIE5vbmUpKQorICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoTm9uZSwg
Tm9uZSwgTm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignbGludXgnLCBOb25lLCBO
b25lKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdjeWd3aW4nLCBOb25lLCBOb25lKSkK
KyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybScsIE5vbmUsIE5vbmUpKQorICAgIHNl
bGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywgTm9uZSwgTm9uZSkpCisgICAgc2Vs
Zi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tMjU2Y29sb3InLCBOb25lLCBOb25lKSkKKworICBk
ZWYgdGVzdEZsYWdPbmx5KHNlbGYpOgorICAgICIiIlRlc3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUn
cyAtLWd0ZXN0X2NvbG9yIGJ1dCBub3QgR1RFU1RfQ09MT1IuIiIiCisKKyAgICBzZWxmLmFzc2Vy
dF8obm90IFVzZXNDb2xvcignZHVtYicsIE5vbmUsICdubycpKQorICAgIHNlbGYuYXNzZXJ0Xyhu
b3QgVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsIE5vbmUsICdubycpKQorICAgIGlmIG5vdCBJU19X
SU5ET1dTOgorICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ2VtYWNzJywgTm9uZSwg
J2F1dG8nKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybScsIE5vbmUsICdhdXRv
JykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUsICd5ZXMnKSkKKyAg
ICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybScsIE5vbmUsICd5ZXMnKSkKKworICBkZWYg
dGVzdEVudlZhck9ubHkoc2VsZik6CisgICAgIiIiVGVzdHMgdGhlIGNhc2Ugd2hlbiB0aGVyZSdz
IEdURVNUX0NPTE9SIGJ1dCBub3QgLS1ndGVzdF9jb2xvci4iIiIKKworICAgIHNlbGYuYXNzZXJ0
Xyhub3QgVXNlc0NvbG9yKCdkdW1iJywgJ25vJywgTm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKG5v
dCBVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywgJ25vJywgTm9uZSkpCisgICAgaWYgbm90IElTX1dJ
TkRPV1M6CisgICAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcignZHVtYicsICdhdXRvJywg
Tm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAnYXV0bycs
IE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCAneWVzJywgTm9uZSkp
CisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAneWVzJywgTm9uZSkp
CisKKyAgZGVmIHRlc3RFbnZWYXJBbmRGbGFnKHNlbGYpOgorICAgICIiIlRlc3RzIHRoZSBjYXNl
IHdoZW4gdGhlcmUgYXJlIGJvdGggR1RFU1RfQ09MT1IgYW5kIC0tZ3Rlc3RfY29sb3IuIiIiCisK
KyAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAnbm8nLCAnbm8n
KSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgJ25vJywgJ3llcycpKQorICAg
IHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywgJ25vJywgJ2F1dG8nKSkKKwor
ICBkZWYgdGVzdEFsaWFzZXNPZlllc0FuZE5vKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5nIGFs
aWFzZXMgaW4gc3BlY2lmeWluZyAtLWd0ZXN0X2NvbG9yLiIiIgorCisgICAgc2VsZi5hc3NlcnRf
KFVzZXNDb2xvcignZHVtYicsIE5vbmUsICd0cnVlJykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXND
b2xvcignZHVtYicsIE5vbmUsICdZRVMnKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdk
dW1iJywgTm9uZSwgJ1QnKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9u
ZSwgJzEnKSkKKworICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybScsIE5vbmUs
ICdmJykpCisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwgJ2Zh
bHNlJykpCisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwgJzAn
KSkKKyAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0nLCBOb25lLCAndW5rbm93
bicpKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMu
TWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtY29sb3ItdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtY29sb3ItdGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjIwYTNhMDA1NDhmZGIxZTkzNWEzZGExNmRm
NTYzYTUwZTE3OWE4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1jb2xvci10ZXN0Xy5jYwpAQCAtMCwwICsxLDYyIEBACisvLyBDb3B5
cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
Ky8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1
dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
Ky8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gQSBoZWxwZXIgcHJv
Z3JhbSBmb3IgdGVzdGluZyBob3cgR29vZ2xlIFRlc3QgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHVz
ZQorLy8gY29sb3JzIGluIHRoZSBvdXRwdXQuICBJdCBwcmludHMgIllFUyIgYW5kIHJldHVybnMg
MSBpZiBHb29nbGUgVGVzdAorLy8gZGVjaWRlcyB0byB1c2UgY29sb3JzLCBhbmQgcHJpbnRzICJO
TyIgYW5kIHJldHVybnMgMCBvdGhlcndpc2UuCisKKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgi
CisKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaG91bGRVc2VDb2xvcjsKKworLy8gVGhlIHB1
cnBvc2Ugb2YgdGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUgVW5pdFRlc3Qgc2luZ2xldG9uIGlz
CisvLyBjcmVhdGVkIGJlZm9yZSBtYWluKCkgaXMgZW50ZXJlZCwgYW5kIHRodXMgdGhhdCBTaG91
bGRVc2VDb2xvcigpCisvLyB3b3JrcyB0aGUgc2FtZSB3YXkgYXMgaW4gYSByZWFsIEdvb2dsZS1U
ZXN0LWJhc2VkIHRlc3QuICBXZSBkb24ndCBhY3R1YWwKKy8vIHJ1biB0aGUgVEVTVCBpdHNlbGYu
CitURVNUKEdUZXN0Q29sb3JUZXN0LCBEdW1teSkgeworfQorCitpbnQgbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpIHsKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwor
CisgIGlmIChTaG91bGRVc2VDb2xvcih0cnVlKSkgeworICAgIC8vIEdvb2dsZSBUZXN0IGRlY2lk
ZXMgdG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0IChhc3N1bWluZyBpdAorICAgIC8vIGdvZXMg
dG8gYSBUVFkpLgorICAgIHByaW50ZigiWUVTXG4iKTsKKyAgICByZXR1cm4gMTsKKyAgfSBlbHNl
IHsKKyAgICAvLyBHb29nbGUgVGVzdCBkZWNpZGVzIG5vdCB0byB1c2UgY29sb3JzIGluIHRoZSBv
dXRwdXQuCisgICAgcHJpbnRmKCJOT1xuIik7CisgICAgcmV0dXJuIDA7CisgIH0KK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1kZWF0aC10ZXN0
LXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZGVhdGgt
dGVzdC10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwYzMwMjZmYjU4OTU2NjBhZDJjOWQ2NWZiZDk5YjVm
YWY5YWQ0OGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtZGVhdGgtdGVzdC10ZXN0LmNjCkBAIC0wLDAgKzEsMTQyMyBAQAorLy8gQ29w
eXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmli
dXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gVGVzdHMgZm9y
IGRlYXRoIHRlc3RzLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmls
ZXBhdGguaCIKKwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlOwordXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWU7CisKKyNpZiBHVEVTVF9IQVNfREVBVEhfVEVT
VAorCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKyMgIGluY2x1ZGUgPGRpcmVjdC5oPiAgICAgICAg
ICAvLyBGb3IgY2hkaXIoKS4KKyMgZWxzZQorIyAgaW5jbHVkZSA8dW5pc3RkLmg+CisjICBpbmNs
dWRlIDxzeXMvd2FpdC5oPiAgICAgICAgLy8gRm9yIHdhaXRwaWQuCisjIGVuZGlmICAvLyBHVEVT
VF9PU19XSU5ET1dTCisKKyMgaW5jbHVkZSA8bGltaXRzLmg+CisjIGluY2x1ZGUgPHNpZ25hbC5o
PgorIyBpbmNsdWRlIDxzdGRpby5oPgorCisjIGlmIEdURVNUX09TX0xJTlVYCisjICBpbmNsdWRl
IDxzeXMvdGltZS5oPgorIyBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKKworIyBpbmNsdWRlICJn
dGVzdC9ndGVzdC1zcGkuaCIKKyMgaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgor
CituYW1lc3BhY2UgcG9zaXggPSA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDsKKwordXNpbmcg
dGVzdGluZzo6TWVzc2FnZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q7Cit1
c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0RmFjdG9yeTsKK3VzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpGaWxlUGF0aDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRMYXN0RXJy
bm9EZXNjcmlwdGlvbjsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRVbml0VGVzdEltcGw7
Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SW5EZWF0aFRlc3RDaGlsZDsKK3VzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpQYXJzZU5hdHVyYWxOdW1iZXI7CisKK25hbWVzcGFjZSB0ZXN0aW5nIHsK
K25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIEEgaGVscGVyIGNsYXNzIHdob3NlIG9iamVjdHMg
cmVwbGFjZSB0aGUgZGVhdGggdGVzdCBmYWN0b3J5IGZvciBhCisvLyBzaW5nbGUgVW5pdFRlc3Qg
b2JqZWN0IGR1cmluZyB0aGVpciBsaWZldGltZXMuCitjbGFzcyBSZXBsYWNlRGVhdGhUZXN0RmFj
dG9yeSB7CisgcHVibGljOgorICBleHBsaWNpdCBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeShEZWF0
aFRlc3RGYWN0b3J5KiBuZXdfZmFjdG9yeSkKKyAgICAgIDogdW5pdF90ZXN0X2ltcGxfKEdldFVu
aXRUZXN0SW1wbCgpKSB7CisgICAgb2xkX2ZhY3RvcnlfID0gdW5pdF90ZXN0X2ltcGxfLT5kZWF0
aF90ZXN0X2ZhY3RvcnlfLnJlbGVhc2UoKTsKKyAgICB1bml0X3Rlc3RfaW1wbF8tPmRlYXRoX3Rl
c3RfZmFjdG9yeV8ucmVzZXQobmV3X2ZhY3RvcnkpOworICB9CisKKyAgflJlcGxhY2VEZWF0aFRl
c3RGYWN0b3J5KCkgeworICAgIHVuaXRfdGVzdF9pbXBsXy0+ZGVhdGhfdGVzdF9mYWN0b3J5Xy5y
ZWxlYXNlKCk7CisgICAgdW5pdF90ZXN0X2ltcGxfLT5kZWF0aF90ZXN0X2ZhY3RvcnlfLnJlc2V0
KG9sZF9mYWN0b3J5Xyk7CisgIH0KKyBwcml2YXRlOgorICAvLyBQcmV2ZW50cyBjb3B5aW5nIFJl
cGxhY2VEZWF0aFRlc3RGYWN0b3J5IG9iamVjdHMuCisgIFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5
KGNvbnN0IFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5Jik7CisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0
IFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5Jik7CisKKyAgVW5pdFRlc3RJbXBsKiB1bml0X3Rlc3Rf
aW1wbF87CisgIERlYXRoVGVzdEZhY3RvcnkqIG9sZF9mYWN0b3J5XzsKK307CisKK30gIC8vIG5h
bWVzcGFjZSBpbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKwordm9pZCBEaWVXaXRo
TWVzc2FnZShjb25zdCA6OnN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7CisgIGZwcmludGYoc3RkZXJy
LCAiJXMiLCBtZXNzYWdlLmNfc3RyKCkpOworICBmZmx1c2goc3RkZXJyKTsgIC8vIE1ha2Ugc3Vy
ZSB0aGUgdGV4dCBpcyBwcmludGVkIGJlZm9yZSB0aGUgcHJvY2VzcyBleGl0cy4KKworICAvLyBX
ZSBjYWxsIF9leGl0KCkgaW5zdGVhZCBvZiBleGl0KCksIGFzIHRoZSBmb3JtZXIgaXMgYSBkaXJl
Y3QKKyAgLy8gc3lzdGVtIGNhbGwgYW5kIHRodXMgc2FmZXIgaW4gdGhlIHByZXNlbmNlIG9mIHRo
cmVhZHMuICBleGl0KCkKKyAgLy8gd2lsbCBpbnZva2UgdXNlci1kZWZpbmVkIGV4aXQtaG9va3Ms
IHdoaWNoIG1heSBkbyBkYW5nZXJvdXMKKyAgLy8gdGhpbmdzIHRoYXQgY29uZmxpY3Qgd2l0aCBk
ZWF0aCB0ZXN0cy4KKyAgLy8KKyAgLy8gU29tZSBjb21waWxlcnMgY2FuIHJlY29nbml6ZSB0aGF0
IF9leGl0KCkgbmV2ZXIgcmV0dXJucyBhbmQgaXNzdWUgdGhlCisgIC8vICd1bnJlYWNoYWJsZSBj
b2RlJyB3YXJuaW5nIGZvciBjb2RlIGZvbGxvd2luZyB0aGlzIGZ1bmN0aW9uLCB1bmxlc3MKKyAg
Ly8gZm9vbGVkIGJ5IGEgZmFrZSBjb25kaXRpb24uCisgIGlmIChBbHdheXNUcnVlKCkpCisgICAg
X2V4aXQoMSk7Cit9CisKK3ZvaWQgRGllSW5zaWRlKGNvbnN0IDo6c3RkOjpzdHJpbmcmIGZ1bmN0
aW9uKSB7CisgIERpZVdpdGhNZXNzYWdlKCJkZWF0aCBpbnNpZGUgIiArIGZ1bmN0aW9uICsgIigp
LiIpOworfQorCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHdvcmsuCisKK2NsYXNzIFRlc3RG
b3JEZWF0aFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICBUZXN0
Rm9yRGVhdGhUZXN0KCkgOiBvcmlnaW5hbF9kaXJfKEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkp
IHt9CisKKyAgdmlydHVhbCB+VGVzdEZvckRlYXRoVGVzdCgpIHsKKyAgICBwb3NpeDo6Q2hEaXIo
b3JpZ2luYWxfZGlyXy5jX3N0cigpKTsKKyAgfQorCisgIC8vIEEgc3RhdGljIG1lbWJlciBmdW5j
dGlvbiB0aGF0J3MgZXhwZWN0ZWQgdG8gZGllLgorICBzdGF0aWMgdm9pZCBTdGF0aWNNZW1iZXJG
dW5jdGlvbigpIHsgRGllSW5zaWRlKCJTdGF0aWNNZW1iZXJGdW5jdGlvbiIpOyB9CisKKyAgLy8g
QSBtZXRob2Qgb2YgdGhlIHRlc3QgZml4dHVyZSB0aGF0IG1heSBkaWUuCisgIHZvaWQgTWVtYmVy
RnVuY3Rpb24oKSB7CisgICAgaWYgKHNob3VsZF9kaWVfKQorICAgICAgRGllSW5zaWRlKCJNZW1i
ZXJGdW5jdGlvbiIpOworICB9CisKKyAgLy8gVHJ1ZSBpZmYgTWVtYmVyRnVuY3Rpb24oKSBzaG91
bGQgZGllLgorICBib29sIHNob3VsZF9kaWVfOworICBjb25zdCBGaWxlUGF0aCBvcmlnaW5hbF9k
aXJfOworfTsKKworLy8gQSBjbGFzcyB3aXRoIGEgbWVtYmVyIGZ1bmN0aW9uIHRoYXQgbWF5IGRp
ZS4KK2NsYXNzIE1heURpZSB7CisgcHVibGljOgorICBleHBsaWNpdCBNYXlEaWUoYm9vbCBzaG91
bGRfZGllKSA6IHNob3VsZF9kaWVfKHNob3VsZF9kaWUpIHt9CisKKyAgLy8gQSBtZW1iZXIgZnVu
Y3Rpb24gdGhhdCBtYXkgZGllLgorICB2b2lkIE1lbWJlckZ1bmN0aW9uKCkgY29uc3QgeworICAg
IGlmIChzaG91bGRfZGllXykKKyAgICAgIERpZUluc2lkZSgiTWF5RGllOjpNZW1iZXJGdW5jdGlv
biIpOworICB9CisKKyBwcml2YXRlOgorICAvLyBUcnVlIGlmZiBNZW1iZXJGdW5jdGlvbigpIHNo
b3VsZCBkaWUuCisgIGJvb2wgc2hvdWxkX2RpZV87Cit9OworCisvLyBBIGdsb2JhbCBmdW5jdGlv
biB0aGF0J3MgZXhwZWN0ZWQgdG8gZGllLgordm9pZCBHbG9iYWxGdW5jdGlvbigpIHsgRGllSW5z
aWRlKCJHbG9iYWxGdW5jdGlvbiIpOyB9CisKKy8vIEEgbm9uLXZvaWQgZnVuY3Rpb24gdGhhdCdz
IGV4cGVjdGVkIHRvIGRpZS4KK2ludCBOb25Wb2lkRnVuY3Rpb24oKSB7CisgIERpZUluc2lkZSgi
Tm9uVm9pZEZ1bmN0aW9uIik7CisgIHJldHVybiAxOworfQorCisvLyBBIHVuYXJ5IGZ1bmN0aW9u
IHRoYXQgbWF5IGRpZS4KK3ZvaWQgRGllSWYoYm9vbCBzaG91bGRfZGllKSB7CisgIGlmIChzaG91
bGRfZGllKQorICAgIERpZUluc2lkZSgiRGllSWYiKTsKK30KKworLy8gQSBiaW5hcnkgZnVuY3Rp
b24gdGhhdCBtYXkgZGllLgorYm9vbCBEaWVJZkxlc3NUaGFuKGludCB4LCBpbnQgeSkgeworICBp
ZiAoeCA8IHkpIHsKKyAgICBEaWVJbnNpZGUoIkRpZUlmTGVzc1RoYW4iKTsKKyAgfQorICByZXR1
cm4gdHJ1ZTsKK30KKworLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVBVEggY2FuIGJlIHVzZWQgb3V0
c2lkZSBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdCBmaXh0dXJlLgordm9pZCBEZWF0aFRlc3RTdWJy
b3V0aW5lKCkgeworICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgImRlYXRoLipHbG9i
YWxGdW5jdGlvbiIpOworICBBU1NFUlRfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgImRlYXRoLipH
bG9iYWxGdW5jdGlvbiIpOworfQorCisvLyBEZWF0aCBpbiBkYmcsIG5vdCBvcHQuCitpbnQgRGll
SW5EZWJ1Z0Vsc2UxMihpbnQqIHNpZGVlZmZlY3QpIHsKKyAgaWYgKHNpZGVlZmZlY3QpICpzaWRl
ZWZmZWN0ID0gMTI7CisKKyMgaWZuZGVmIE5ERUJVRworCisgIERpZUluc2lkZSgiRGllSW5EZWJ1
Z0Vsc2UxMiIpOworCisjIGVuZGlmICAvLyBOREVCVUcKKworICByZXR1cm4gMTI7Cit9CisKKyMg
aWYgR1RFU1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19GVUNIU0lBCisKKy8vIFRlc3RzIHRoZSBF
eGl0ZWRXaXRoQ29kZSBwcmVkaWNhdGUuCitURVNUKEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0LCBF
eGl0ZWRXaXRoQ29kZSkgeworICAvLyBPbiBXaW5kb3dzLCB0aGUgcHJvY2VzcydzIGV4aXQgY29k
ZSBpcyB0aGUgc2FtZSBhcyBpdHMgZXhpdCBzdGF0dXMsCisgIC8vIHNvIHRoZSBwcmVkaWNhdGUg
anVzdCBjb21wYXJlcyB0aGUgaXRzIGlucHV0IHdpdGggaXRzIHBhcmFtZXRlci4KKyAgRVhQRUNU
X1RSVUUodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCkoMCkpOworICBFWFBFQ1RfVFJVRSh0ZXN0
aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSgxKSk7CisgIEVYUEVDVF9UUlVFKHRlc3Rpbmc6OkV4aXRl
ZFdpdGhDb2RlKDQyKSg0MikpOworICBFWFBFQ1RfRkFMU0UodGVzdGluZzo6RXhpdGVkV2l0aENv
ZGUoMCkoMSkpOworICBFWFBFQ1RfRkFMU0UodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSkoMCkp
OworfQorCisjIGVsc2UKKworLy8gUmV0dXJucyB0aGUgZXhpdCBzdGF0dXMgb2YgYSBwcm9jZXNz
IHRoYXQgY2FsbHMgX2V4aXQoMikgd2l0aCBhCisvLyBnaXZlbiBleGl0IGNvZGUuICBUaGlzIGlz
IGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGUKKy8vIEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0IHRl
c3Qgc3VpdGUuCitzdGF0aWMgaW50IE5vcm1hbEV4aXRTdGF0dXMoaW50IGV4aXRfY29kZSkgewor
ICBwaWRfdCBjaGlsZF9waWQgPSBmb3JrKCk7CisgIGlmIChjaGlsZF9waWQgPT0gMCkgeworICAg
IF9leGl0KGV4aXRfY29kZSk7CisgIH0KKyAgaW50IHN0YXR1czsKKyAgd2FpdHBpZChjaGlsZF9w
aWQsICZzdGF0dXMsIDApOworICByZXR1cm4gc3RhdHVzOworfQorCisvLyBSZXR1cm5zIHRoZSBl
eGl0IHN0YXR1cyBvZiBhIHByb2Nlc3MgdGhhdCByYWlzZXMgYSBnaXZlbiBzaWduYWwuCisvLyBJ
ZiB0aGUgc2lnbmFsIGRvZXMgbm90IGNhdXNlIHRoZSBwcm9jZXNzIHRvIGRpZSwgdGhlbiBpdCBy
ZXR1cm5zCisvLyBpbnN0ZWFkIHRoZSBleGl0IHN0YXR1cyBvZiBhIHByb2Nlc3MgdGhhdCBleGl0
cyBub3JtYWxseSB3aXRoIGV4aXQKKy8vIGNvZGUgMS4gIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rp
b24gZm9yIHRoZSBFeGl0U3RhdHVzUHJlZGljYXRlVGVzdAorLy8gdGVzdCBzdWl0ZS4KK3N0YXRp
YyBpbnQgS2lsbGVkRXhpdFN0YXR1cyhpbnQgc2lnbnVtKSB7CisgIHBpZF90IGNoaWxkX3BpZCA9
IGZvcmsoKTsKKyAgaWYgKGNoaWxkX3BpZCA9PSAwKSB7CisgICAgcmFpc2Uoc2lnbnVtKTsKKyAg
ICBfZXhpdCgxKTsKKyAgfQorICBpbnQgc3RhdHVzOworICB3YWl0cGlkKGNoaWxkX3BpZCwgJnN0
YXR1cywgMCk7CisgIHJldHVybiBzdGF0dXM7Cit9CisKKy8vIFRlc3RzIHRoZSBFeGl0ZWRXaXRo
Q29kZSBwcmVkaWNhdGUuCitURVNUKEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0LCBFeGl0ZWRXaXRo
Q29kZSkgeworICBjb25zdCBpbnQgc3RhdHVzMCAgPSBOb3JtYWxFeGl0U3RhdHVzKDApOworICBj
b25zdCBpbnQgc3RhdHVzMSAgPSBOb3JtYWxFeGl0U3RhdHVzKDEpOworICBjb25zdCBpbnQgc3Rh
dHVzNDIgPSBOb3JtYWxFeGl0U3RhdHVzKDQyKTsKKyAgY29uc3QgdGVzdGluZzo6RXhpdGVkV2l0
aENvZGUgcHJlZDAoMCk7CisgIGNvbnN0IHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlIHByZWQxKDEp
OworICBjb25zdCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSBwcmVkNDIoNDIpOworICBFWFBFQ1Rf
UFJFRDEocHJlZDAsICBzdGF0dXMwKTsKKyAgRVhQRUNUX1BSRUQxKHByZWQxLCAgc3RhdHVzMSk7
CisgIEVYUEVDVF9QUkVEMShwcmVkNDIsIHN0YXR1czQyKTsKKyAgRVhQRUNUX0ZBTFNFKHByZWQw
KHN0YXR1czEpKTsKKyAgRVhQRUNUX0ZBTFNFKHByZWQ0MihzdGF0dXMwKSk7CisgIEVYUEVDVF9G
QUxTRShwcmVkMShzdGF0dXM0MikpOworfQorCisvLyBUZXN0cyB0aGUgS2lsbGVkQnlTaWduYWwg
cHJlZGljYXRlLgorVEVTVChFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCwgS2lsbGVkQnlTaWduYWwp
IHsKKyAgY29uc3QgaW50IHN0YXR1c19zZWd2ID0gS2lsbGVkRXhpdFN0YXR1cyhTSUdTRUdWKTsK
KyAgY29uc3QgaW50IHN0YXR1c19raWxsID0gS2lsbGVkRXhpdFN0YXR1cyhTSUdLSUxMKTsKKyAg
Y29uc3QgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwgcHJlZF9zZWd2KFNJR1NFR1YpOworICBjb25z
dCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbCBwcmVkX2tpbGwoU0lHS0lMTCk7CisgIEVYUEVDVF9Q
UkVEMShwcmVkX3NlZ3YsIHN0YXR1c19zZWd2KTsKKyAgRVhQRUNUX1BSRUQxKHByZWRfa2lsbCwg
c3RhdHVzX2tpbGwpOworICBFWFBFQ1RfRkFMU0UocHJlZF9zZWd2KHN0YXR1c19raWxsKSk7Cisg
IEVYUEVDVF9GQUxTRShwcmVkX2tpbGwoc3RhdHVzX3NlZ3YpKTsKK30KKworIyBlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19GVUNIU0lBCisKKy8vIFRlc3RzIHRoYXQgdGhl
IGRlYXRoIHRlc3QgbWFjcm9zIGV4cGFuZCB0byBjb2RlIHdoaWNoIG1heSBvciBtYXkgbm90Cisv
LyBiZSBmb2xsb3dlZCBieSBvcGVyYXRvcjw8LCBhbmQgdGhhdCBpbiBlaXRoZXIgY2FzZSB0aGUg
Y29tcGxldGUgdGV4dAorLy8gY29tcHJpc2VzIG9ubHkgYSBzaW5nbGUgQysrIHN0YXRlbWVudC4K
K1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTaW5nbGVTdGF0ZW1lbnQpIHsKKyAgaWYgKEFsd2F5
c0ZhbHNlKCkpCisgICAgLy8gVGhpcyB3b3VsZCBmYWlsIGlmIGV4ZWN1dGVkOyB0aGlzIGlzIGEg
Y29tcGlsYXRpb24gdGVzdCBvbmx5CisgICAgQVNTRVJUX0RFQVRIKHJldHVybiwgIiIpOworCisg
IGlmIChBbHdheXNUcnVlKCkpCisgICAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIik7CisgIGVs
c2UKKyAgICAvLyBUaGlzIGVtcHR5ICJlbHNlIiBicmFuY2ggaXMgbWVhbnQgdG8gZW5zdXJlIHRo
YXQgRVhQRUNUX0RFQVRICisgICAgLy8gZG9lc24ndCBleHBhbmQgaW50byBhbiAiaWYiIHN0YXRl
bWVudCB3aXRob3V0IGFuICJlbHNlIgorICAgIDsKKworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAg
ICBBU1NFUlRfREVBVEgocmV0dXJuLCAiIikgPDwgImRpZCBub3QgZGllIjsKKworICBpZiAoQWx3
YXlzRmFsc2UoKSkKKyAgICA7CisgIGVsc2UKKyAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIi
KSA8PCAxIDw8IDIgPDwgMzsKK30KKwordm9pZCBEaWVXaXRoRW1iZWRkZWROdWwoKSB7CisgIGZw
cmludGYoc3RkZXJyLCAiSGVsbG8lY215IG51bGwgd29ybGQuXG4iLCAnXDAnKTsKKyAgZmZsdXNo
KHN0ZGVycik7CisgIF9leGl0KDEpOworfQorCisjIGlmIEdURVNUX1VTRVNfUENSRQorCisvLyBU
ZXN0cyB0aGF0IEVYUEVDVF9ERUFUSCBhbmQgQVNTRVJUX0RFQVRIIHdvcmsgd2hlbiB0aGUgZXJy
b3IKKy8vIG1lc3NhZ2UgaGFzIGEgTlVMIGNoYXJhY3RlciBpbiBpdC4KK1RFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBFbWJlZGRlZE51bEluTWVzc2FnZSkgeworICBFWFBFQ1RfREVBVEgoRGllV2l0
aEVtYmVkZGVkTnVsKCksICJteSBudWxsIHdvcmxkIik7CisgIEFTU0VSVF9ERUFUSChEaWVXaXRo
RW1iZWRkZWROdWwoKSwgIm15IG51bGwgd29ybGQiKTsKK30KKworIyBlbmRpZiAgLy8gR1RFU1Rf
VVNFU19QQ1JFCisKKy8vIFRlc3RzIHRoYXQgZGVhdGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNv
ZGUgd2hpY2ggaW50ZXJhY3RzIHdlbGwgd2l0aCBzd2l0Y2gKKy8vIHN0YXRlbWVudHMuCitURVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgU3dpdGNoU3RhdGVtZW50KSB7CisgIC8vIE1pY3Jvc29mdCBj
b21waWxlciB1c3VhbGx5IGNvbXBsYWlucyBhYm91dCBzd2l0Y2ggc3RhdGVtZW50cyB3aXRob3V0
CisgIC8vIGNhc2UgbGFiZWxzLiBXZSBzdXBwcmVzcyB0aGF0IHdhcm5pbmcgZm9yIHRoaXMgdGVz
dC4KKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDA2NSkKKworICBzd2l0Y2gg
KDApCisgICAgZGVmYXVsdDoKKyAgICAgIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8ICJl
eGl0IGluIGRlZmF1bHQgc3dpdGNoIGhhbmRsZXIiOworCisgIHN3aXRjaCAoMCkKKyAgICBjYXNl
IDA6CisgICAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKSA8PCAiZXhpdCBpbiBzd2l0Y2gg
Y2FzZSI7CisKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCit9CisKKy8vIFRl
c3RzIHRoYXQgYSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGluIGEgImZhc3Qi
IHN0eWxlCisvLyBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFN0YXRpY01l
bWJlckZ1bmN0aW9uRmFzdFN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVz
dF9zdHlsZSkgPSAiZmFzdCI7CisgIEFTU0VSVF9ERUFUSChTdGF0aWNNZW1iZXJGdW5jdGlvbigp
LCAiZGVhdGguKlN0YXRpY01lbWJlciIpOworfQorCisvLyBUZXN0cyB0aGF0IGEgbWV0aG9kIG9m
IHRoZSB0ZXN0IGZpeHR1cmUgY2FuIGJlIHVzZWQgaW4gYSAiZmFzdCIKKy8vIHN0eWxlIGRlYXRo
IHRlc3QuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgTWVtYmVyRnVuY3Rpb25GYXN0U3R5bGUp
IHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAg
c2hvdWxkX2RpZV8gPSB0cnVlOworICBFWFBFQ1RfREVBVEgoTWVtYmVyRnVuY3Rpb24oKSwgImlu
c2lkZS4qTWVtYmVyRnVuY3Rpb24iKTsKK30KKwordm9pZCBDaGFuZ2VUb1Jvb3REaXIoKSB7IHBv
c2l4OjpDaERpcihHVEVTVF9QQVRIX1NFUF8pOyB9CisKKy8vIFRlc3RzIHRoYXQgZGVhdGggdGVz
dHMgd29yayBldmVuIGlmIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBoYXMgYmVlbgorLy8gY2hhbmdl
ZC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBGYXN0RGVhdGhUZXN0SW5DaGFuZ2VkRGlyKSB7
CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisKKyAg
Q2hhbmdlVG9Sb290RGlyKCk7CisgIEVYUEVDVF9FWElUKF9leGl0KDEpLCB0ZXN0aW5nOjpFeGl0
ZWRXaXRoQ29kZSgxKSwgIiIpOworCisgIENoYW5nZVRvUm9vdERpcigpOworICBBU1NFUlRfREVB
VEgoX2V4aXQoMSksICIiKTsKK30KKworIyBpZiBHVEVTVF9PU19MSU5VWAordm9pZCBTaWdwcm9m
QWN0aW9uKGludCwgc2lnaW5mb190Kiwgdm9pZCopIHsgLyogbm8gb3AgKi8gfQorCisvLyBTZXRz
IFNJR1BST0YgYWN0aW9uIGFuZCBJVElNRVJfUFJPRiB0aW1lciAoaW50ZXJ2YWw6IDFtcykuCit2
b2lkIFNldFNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigpIHsKKyAgc3RydWN0IGl0aW1lcnZhbCB0aW1l
cjsKKyAgdGltZXIuaXRfaW50ZXJ2YWwudHZfc2VjID0gMDsKKyAgdGltZXIuaXRfaW50ZXJ2YWwu
dHZfdXNlYyA9IDE7CisgIHRpbWVyLml0X3ZhbHVlID0gdGltZXIuaXRfaW50ZXJ2YWw7CisgIEFT
U0VSVF9FUSgwLCBzZXRpdGltZXIoSVRJTUVSX1BST0YsICZ0aW1lciwgTlVMTCkpOworICBzdHJ1
Y3Qgc2lnYWN0aW9uIHNpZ25hbF9hY3Rpb247CisgIG1lbXNldCgmc2lnbmFsX2FjdGlvbiwgMCwg
c2l6ZW9mKHNpZ25hbF9hY3Rpb24pKTsKKyAgc2lnZW1wdHlzZXQoJnNpZ25hbF9hY3Rpb24uc2Ff
bWFzayk7CisgIHNpZ25hbF9hY3Rpb24uc2Ffc2lnYWN0aW9uID0gU2lncHJvZkFjdGlvbjsKKyAg
c2lnbmFsX2FjdGlvbi5zYV9mbGFncyA9IFNBX1JFU1RBUlQgfCBTQV9TSUdJTkZPOworICBBU1NF
UlRfRVEoMCwgc2lnYWN0aW9uKFNJR1BST0YsICZzaWduYWxfYWN0aW9uLCBOVUxMKSk7Cit9CisK
Ky8vIERpc2FibGVzIElUSU1FUl9QUk9GIHRpbWVyIGFuZCBpZ25vcmVzIFNJR1BST0Ygc2lnbmFs
Lgordm9pZCBEaXNhYmxlU2lncHJvZkFjdGlvbkFuZFRpbWVyKHN0cnVjdCBzaWdhY3Rpb24qIG9s
ZF9zaWduYWxfYWN0aW9uKSB7CisgIHN0cnVjdCBpdGltZXJ2YWwgdGltZXI7CisgIHRpbWVyLml0
X2ludGVydmFsLnR2X3NlYyA9IDA7CisgIHRpbWVyLml0X2ludGVydmFsLnR2X3VzZWMgPSAwOwor
ICB0aW1lci5pdF92YWx1ZSA9IHRpbWVyLml0X2ludGVydmFsOworICBBU1NFUlRfRVEoMCwgc2V0
aXRpbWVyKElUSU1FUl9QUk9GLCAmdGltZXIsIE5VTEwpKTsKKyAgc3RydWN0IHNpZ2FjdGlvbiBz
aWduYWxfYWN0aW9uOworICBtZW1zZXQoJnNpZ25hbF9hY3Rpb24sIDAsIHNpemVvZihzaWduYWxf
YWN0aW9uKSk7CisgIHNpZ2VtcHR5c2V0KCZzaWduYWxfYWN0aW9uLnNhX21hc2spOworICBzaWdu
YWxfYWN0aW9uLnNhX2hhbmRsZXIgPSBTSUdfSUdOOworICBBU1NFUlRfRVEoMCwgc2lnYWN0aW9u
KFNJR1BST0YsICZzaWduYWxfYWN0aW9uLCBvbGRfc2lnbmFsX2FjdGlvbikpOworfQorCisvLyBU
ZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHdvcmsgd2hlbiBTSUdQUk9GIGhhbmRsZXIgYW5kIHRpbWVy
IGFyZSBzZXQuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRmFzdFNpZ3Byb2ZBY3Rpb25TZXQp
IHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAg
U2V0U2lncHJvZkFjdGlvbkFuZFRpbWVyKCk7CisgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIp
OworICBzdHJ1Y3Qgc2lnYWN0aW9uIG9sZF9zaWduYWxfYWN0aW9uOworICBEaXNhYmxlU2lncHJv
ZkFjdGlvbkFuZFRpbWVyKCZvbGRfc2lnbmFsX2FjdGlvbik7CisgIEVYUEVDVF9UUlVFKG9sZF9z
aWduYWxfYWN0aW9uLnNhX3NpZ2FjdGlvbiA9PSBTaWdwcm9mQWN0aW9uKTsKK30KKworVEVTVF9G
KFRlc3RGb3JEZWF0aFRlc3QsIFRocmVhZFNhZmVTaWdwcm9mQWN0aW9uU2V0KSB7CisgIHRlc3Rp
bmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7CisgIFNldFNp
Z3Byb2ZBY3Rpb25BbmRUaW1lcigpOworICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKTsKKyAg
c3RydWN0IHNpZ2FjdGlvbiBvbGRfc2lnbmFsX2FjdGlvbjsKKyAgRGlzYWJsZVNpZ3Byb2ZBY3Rp
b25BbmRUaW1lcigmb2xkX3NpZ25hbF9hY3Rpb24pOworICBFWFBFQ1RfVFJVRShvbGRfc2lnbmFs
X2FjdGlvbi5zYV9zaWdhY3Rpb24gPT0gU2lncHJvZkFjdGlvbik7Cit9CisjIGVuZGlmICAvLyBH
VEVTVF9PU19MSU5VWAorCisvLyBSZXBlYXRzIGEgcmVwcmVzZW50YXRpdmUgc2FtcGxlIG9mIGRl
YXRoIHRlc3RzIGluIHRoZSAidGhyZWFkc2FmZSIgc3R5bGU6CisKK1RFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBTdGF0aWNNZW1iZXJGdW5jdGlvblRocmVhZHNhZmVTdHlsZSkgeworICB0ZXN0aW5n
OjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOworICBBU1NFUlRf
REVBVEgoU3RhdGljTWVtYmVyRnVuY3Rpb24oKSwgImRlYXRoLipTdGF0aWNNZW1iZXIiKTsKK30K
KworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE1lbWJlckZ1bmN0aW9uVGhyZWFkc2FmZVN0eWxl
KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2Fm
ZSI7CisgIHNob3VsZF9kaWVfID0gdHJ1ZTsKKyAgRVhQRUNUX0RFQVRIKE1lbWJlckZ1bmN0aW9u
KCksICJpbnNpZGUuKk1lbWJlckZ1bmN0aW9uIik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhU
ZXN0LCBUaHJlYWRzYWZlRGVhdGhUZXN0SW5Mb29wKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUco
ZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7CisKKyAgZm9yIChpbnQgaSA9IDA7IGkg
PCAzOyArK2kpCisgICAgRVhQRUNUX0VYSVQoX2V4aXQoaSksIHRlc3Rpbmc6OkV4aXRlZFdpdGhD
b2RlKGkpLCAiIikgPDwgIjogaSA9ICIgPDwgaTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIFRocmVhZHNhZmVEZWF0aFRlc3RJbkNoYW5nZWREaXIpIHsKKyAgdGVzdGluZzo6R1RFU1Rf
RkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKKworICBDaGFuZ2VUb1Jvb3RE
aXIoKTsKKyAgRVhQRUNUX0VYSVQoX2V4aXQoMSksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEp
LCAiIik7CisKKyAgQ2hhbmdlVG9Sb290RGlyKCk7CisgIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwg
IiIpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgTWl4ZWRTdHlsZXMpIHsKKyAgdGVz
dGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKKyAgRVhQ
RUNUX0RFQVRIKF9leGl0KDEpLCAiIik7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVz
dF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOworfQorCisj
IGlmIEdURVNUX0hBU19DTE9ORSAmJiBHVEVTVF9IQVNfUFRIUkVBRAorCituYW1lc3BhY2Ugewor
Citib29sIHB0aHJlYWRfZmxhZzsKKwordm9pZCBTZXRQdGhyZWFkRmxhZygpIHsKKyAgcHRocmVh
ZF9mbGFnID0gdHJ1ZTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK1RFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBEb2VzTm90RXhlY3V0ZUF0Zm9ya0hvb2tzKSB7CisgIGlmICghdGVzdGluZzo6R1RF
U1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKSkgeworICAgIHRlc3Rpbmc6OkdURVNUX0ZMQUco
ZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7CisgICAgcHRocmVhZF9mbGFnID0gZmFs
c2U7CisgICAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXRmb3JrKCZTZXRQdGhyZWFkRmxhZywgTlVM
TCwgTlVMTCkpOworICAgIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwgIiIpOworICAgIEFTU0VSVF9G
QUxTRShwdGhyZWFkX2ZsYWcpOworICB9Cit9CisKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19DTE9O
RSAmJiBHVEVTVF9IQVNfUFRIUkVBRAorCisvLyBUZXN0cyB0aGF0IGEgbWV0aG9kIG9mIGFub3Ro
ZXIgY2xhc3MgY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RGb3JEZWF0
aFRlc3QsIE1ldGhvZE9mQW5vdGhlckNsYXNzKSB7CisgIGNvbnN0IE1heURpZSB4KHRydWUpOwor
ICBBU1NFUlRfREVBVEgoeC5NZW1iZXJGdW5jdGlvbigpLCAiTWF5RGllXFw6XFw6TWVtYmVyRnVu
Y3Rpb24iKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIGdsb2JhbCBmdW5jdGlvbiBjYW4gYmUgdXNl
ZCBpbiBhIGRlYXRoIHRlc3QuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgR2xvYmFsRnVuY3Rp
b24pIHsKKyAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksICJHbG9iYWxGdW5jdGlvbiIp
OworfQorCisvLyBUZXN0cyB0aGF0IGFueSB2YWx1ZSBjb252ZXJ0aWJsZSB0byBhbiBSRSB3b3Jr
cyBhcyBhIHNlY29uZAorLy8gYXJndW1lbnQgdG8gRVhQRUNUX0RFQVRILgorVEVTVF9GKFRlc3RG
b3JEZWF0aFRlc3QsIEFjY2VwdHNBbnl0aGluZ0NvbnZlcnRpYmxlVG9SRSkgeworICBzdGF0aWMg
Y29uc3QgY2hhciByZWdleF9jX3N0cltdID0gIkdsb2JhbEZ1bmN0aW9uIjsKKyAgRVhQRUNUX0RF
QVRIKEdsb2JhbEZ1bmN0aW9uKCksIHJlZ2V4X2Nfc3RyKTsKKworICBjb25zdCB0ZXN0aW5nOjpp
bnRlcm5hbDo6UkUgcmVnZXgocmVnZXhfY19zdHIpOworICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVu
Y3Rpb24oKSwgcmVnZXgpOworCisjIGlmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKKyAgY29u
c3QgOjpzdHJpbmcgcmVnZXhfc3RyKHJlZ2V4X2Nfc3RyKTsKKyAgRVhQRUNUX0RFQVRIKEdsb2Jh
bEZ1bmN0aW9uKCksIHJlZ2V4X3N0cik7CisKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxf
U1RSSU5HCisKKyMgaWYgIUdURVNUX1VTRVNfUENSRQorCisgIGNvbnN0IDo6c3RkOjpzdHJpbmcg
cmVnZXhfc3RkX3N0cihyZWdleF9jX3N0cik7CisgIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlv
bigpLCByZWdleF9zdGRfc3RyKTsKKworIyBlbmRpZiAgLy8gIUdURVNUX1VTRVNfUENSRQorfQor
CisvLyBUZXN0cyB0aGF0IGEgbm9uLXZvaWQgZnVuY3Rpb24gY2FuIGJlIHVzZWQgaW4gYSBkZWF0
aCB0ZXN0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE5vblZvaWRGdW5jdGlvbikgeworICBB
U1NFUlRfREVBVEgoTm9uVm9pZEZ1bmN0aW9uKCksICJOb25Wb2lkRnVuY3Rpb24iKTsKK30KKwor
Ly8gVGVzdHMgdGhhdCBmdW5jdGlvbnMgdGhhdCB0YWtlIHBhcmFtZXRlcihzKSBjYW4gYmUgdXNl
ZCBpbiBhIGRlYXRoIHRlc3QuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRnVuY3Rpb25XaXRo
UGFyYW1ldGVyKSB7CisgIEVYUEVDVF9ERUFUSChEaWVJZih0cnVlKSwgIkRpZUlmXFwoXFwpIik7
CisgIEVYUEVDVF9ERUFUSChEaWVJZkxlc3NUaGFuKDIsIDMpLCAiRGllSWZMZXNzVGhhbiIpOwor
fQorCisvLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUFUSCBjYW4gYmUgdXNlZCBvdXRzaWRlIGEgVEVT
VCwgVEVTVF9GLCBvciB0ZXN0IGZpeHR1cmUuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgT3V0
c2lkZUZpeHR1cmUpIHsKKyAgRGVhdGhUZXN0U3Vicm91dGluZSgpOworfQorCisvLyBUZXN0cyB0
aGF0IGRlYXRoIHRlc3RzIGNhbiBiZSBkb25lIGluc2lkZSBhIGxvb3AuCitURVNUX0YoVGVzdEZv
ckRlYXRoVGVzdCwgSW5zaWRlTG9vcCkgeworICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykg
eworICAgIEVYUEVDVF9ERUFUSChEaWVJZkxlc3NUaGFuKC0xLCBpKSwgIkRpZUlmTGVzc1RoYW4i
KSA8PCAid2hlcmUgaSA9PSAiIDw8IGk7CisgIH0KK30KKworLy8gVGVzdHMgdGhhdCBhIGNvbXBv
dW5kIHN0YXRlbWVudCBjYW4gYmUgdXNlZCBpbiBhIGRlYXRoIHRlc3QuCitURVNUX0YoVGVzdEZv
ckRlYXRoVGVzdCwgQ29tcG91bmRTdGF0ZW1lbnQpIHsKKyAgRVhQRUNUX0RFQVRIKHsgIC8vIE5P
TElOVAorICAgIGNvbnN0IGludCB4ID0gMjsKKyAgICBjb25zdCBpbnQgeSA9IHggKyAxOworICAg
IERpZUlmTGVzc1RoYW4oeCwgeSk7CisgIH0sCisgICJEaWVJZkxlc3NUaGFuIik7Cit9CisKKy8v
IFRlc3RzIHRoYXQgY29kZSB0aGF0IGRvZXNuJ3QgZGllIGNhdXNlcyBhIGRlYXRoIHRlc3QgdG8g
ZmFpbC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEb2VzTm90RGllKSB7CisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ERUFUSChEaWVJZihmYWxzZSksICJEaWVJZiIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGRpZSIpOworfQorCisvLyBUZXN0cyB0
aGF0IGEgZGVhdGggdGVzdCBmYWlscyB3aGVuIHRoZSBlcnJvciBtZXNzYWdlIGlzbid0IGV4cGVj
dGVkLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEVycm9yTWVzc2FnZU1pc21hdGNoKSB7Cisg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9ERUFUSChE
aWVJZih0cnVlKSwgIkRpZUlmTGVzc1RoYW4iKSA8PCAiRW5kIG9mIGRlYXRoIHRlc3QgbWVzc2Fn
ZS4iOworICB9LCAiZGllZCBidXQgbm90IHdpdGggZXhwZWN0ZWQgZXJyb3IiKTsKK30KKworLy8g
T24gZXhpdCwgKmFib3J0ZWQgd2lsbCBiZSB0cnVlIGlmZiB0aGUgRVhQRUNUX0RFQVRIKCkgc3Rh
dGVtZW50CisvLyBhYm9ydGVkIHRoZSBmdW5jdGlvbi4KK3ZvaWQgRXhwZWN0RGVhdGhUZXN0SGVs
cGVyKGJvb2wqIGFib3J0ZWQpIHsKKyAgKmFib3J0ZWQgPSB0cnVlOworICBFWFBFQ1RfREVBVEgo
RGllSWYoZmFsc2UpLCAiRGllSWYiKTsgIC8vIFRoaXMgYXNzZXJ0aW9uIHNob3VsZCBmYWlsLgor
ICAqYWJvcnRlZCA9IGZhbHNlOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSCBkb2Vz
bid0IGFib3J0IHRoZSB0ZXN0IG9uIGZhaWx1cmUuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
RVhQRUNUX0RFQVRIKSB7CisgIGJvb2wgYWJvcnRlZCA9IHRydWU7CisgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEV4cGVjdERlYXRoVGVzdEhlbHBlcigmYWJvcnRlZCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICJmYWlsZWQgdG8gZGllIik7CisgIEVYUEVDVF9GQUxTRShhYm9ydGVkKTsK
K30KKworLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVBVEggZG9lcyBhYm9ydCB0aGUgdGVzdCBvbiBm
YWlsdXJlLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFTU0VSVF9ERUFUSCkgeworICBzdGF0
aWMgYm9vbCBhYm9ydGVkOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAg
ICBhYm9ydGVkID0gdHJ1ZTsKKyAgICBBU1NFUlRfREVBVEgoRGllSWYoZmFsc2UpLCAiRGllSWYi
KTsgIC8vIFRoaXMgYXNzZXJ0aW9uIHNob3VsZCBmYWlsLgorICAgIGFib3J0ZWQgPSBmYWxzZTsK
KyAgfSwgImZhaWxlZCB0byBkaWUiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRIIGV2YWx1YXRlcyB0aGUgYXJndW1lbnRzIGV4YWN0bHkg
b25jZS4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTaW5nbGVFdmFsdWF0aW9uKSB7CisgIGlu
dCB4ID0gMzsKKyAgRVhQRUNUX0RFQVRIKERpZUlmKCgrK3gpID09IDQpLCAiRGllSWYiKTsKKwor
ICBjb25zdCBjaGFyKiByZWdleCA9ICJEaWVJZiI7CisgIGNvbnN0IGNoYXIqIHJlZ2V4X3NhdmUg
PSByZWdleDsKKyAgRVhQRUNUX0RFQVRIKERpZUlmTGVzc1RoYW4oMywgNCksIHJlZ2V4KyspOwor
ICBFWFBFQ1RfRVEocmVnZXhfc2F2ZSArIDEsIHJlZ2V4KTsKK30KKworLy8gVGVzdHMgdGhhdCBy
dW4tYXdheSBkZWF0aCB0ZXN0cyBhcmUgcmVwb3J0ZWQgYXMgZmFpbHVyZXMuCitURVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgUnVuYXdheUlzRmFpbHVyZSkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShFWFBFQ1RfREVBVEgoc3RhdGljX2Nhc3Q8dm9pZD4oMCksICJGb28iKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBkaWUuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQg
ZGVhdGggdGVzdHMgcmVwb3J0IGV4ZWN1dGluZyAncmV0dXJuJyBpbiB0aGUgc3RhdGVtZW50IGFz
CisvLyBmYWlsdXJlLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFJldHVybklzRmFpbHVyZSkg
eworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfREVBVEgocmV0dXJuLCAiQmFyIiksCisg
ICAgICAgICAgICAgICAgICAgICAgICJpbGxlZ2FsIHJldHVybiBpbiB0ZXN0IHN0YXRlbWVudC4i
KTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVCVUdfREVBVEggd29ya3MgYXMgZXhwZWN0
ZWQsIHRoYXQgaXMsIHlvdSBjYW4gc3RyZWFtIGEKKy8vIG1lc3NhZ2UgdG8gaXQsIGFuZCBpbiBk
ZWJ1ZyBtb2RlIGl0OgorLy8gMS4gQXNzZXJ0cyBvbiBkZWF0aC4KKy8vIDIuIEhhcyBubyBzaWRl
IGVmZmVjdC4KKy8vCisvLyBBbmQgaW4gb3B0IG1vZGUsIGl0OgorLy8gMS4gIEhhcyBzaWRlIGVm
ZmVjdHMgYnV0IGRvZXMgbm90IGFzc2VydC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUZXN0
RXhwZWN0RGVidWdEZWF0aCkgeworICBpbnQgc2lkZWVmZmVjdCA9IDA7CisKKyAgLy8gUHV0IHRo
ZSByZWdleCBpbiBhIGxvY2FsIHZhcmlhYmxlIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBnZXQgYW4g
InVudXNlZCIKKyAgLy8gd2FybmluZyBpbiBvcHQgbW9kZS4KKyAgY29uc3QgY2hhciogcmVnZXgg
PSAiZGVhdGguKkRpZUluRGVidWdFbHNlMTIiOworCisgIEVYUEVDVF9ERUJVR19ERUFUSChEaWVJ
bkRlYnVnRWxzZTEyKCZzaWRlZWZmZWN0KSwgcmVnZXgpCisgICAgICA8PCAiTXVzdCBhY2NlcHQg
YSBzdHJlYW1lZCBtZXNzYWdlIjsKKworIyBpZmRlZiBOREVCVUcKKworICAvLyBDaGVja3MgdGhh
dCB0aGUgYXNzaWdubWVudCBvY2N1cnMgaW4gb3B0IG1vZGUgKHNpZGVlZmZlY3QpLgorICBFWFBF
Q1RfRVEoMTIsIHNpZGVlZmZlY3QpOworCisjIGVsc2UKKworICAvLyBDaGVja3MgdGhhdCB0aGUg
YXNzaWdubWVudCBkb2VzIG5vdCBvY2N1ciBpbiBkYmcgbW9kZSAobm8gc2lkZWVmZmVjdCkuCisg
IEVYUEVDVF9FUSgwLCBzaWRlZWZmZWN0KTsKKworIyBlbmRpZgorfQorCisvLyBUZXN0cyB0aGF0
IEFTU0VSVF9ERUJVR19ERUFUSCB3b3JrcyBhcyBleHBlY3RlZCwgdGhhdCBpcywgeW91IGNhbiBz
dHJlYW0gYQorLy8gbWVzc2FnZSB0byBpdCwgYW5kIGluIGRlYnVnIG1vZGUgaXQ6CisvLyAxLiBB
c3NlcnRzIG9uIGRlYXRoLgorLy8gMi4gSGFzIG5vIHNpZGUgZWZmZWN0LgorLy8KKy8vIEFuZCBp
biBvcHQgbW9kZSwgaXQ6CisvLyAxLiAgSGFzIHNpZGUgZWZmZWN0cyBidXQgZG9lcyBub3QgYXNz
ZXJ0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRlc3RBc3NlcnREZWJ1Z0RlYXRoKSB7Cisg
IGludCBzaWRlZWZmZWN0ID0gMDsKKworICBBU1NFUlRfREVCVUdfREVBVEgoRGllSW5EZWJ1Z0Vs
c2UxMigmc2lkZWVmZmVjdCksICJkZWF0aC4qRGllSW5EZWJ1Z0Vsc2UxMiIpCisgICAgICA8PCAi
TXVzdCBhY2NlcHQgYSBzdHJlYW1lZCBtZXNzYWdlIjsKKworIyBpZmRlZiBOREVCVUcKKworICAv
LyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBvY2N1cnMgaW4gb3B0IG1vZGUgKHNpZGVlZmZl
Y3QpLgorICBFWFBFQ1RfRVEoMTIsIHNpZGVlZmZlY3QpOworCisjIGVsc2UKKworICAvLyBDaGVj
a3MgdGhhdCB0aGUgYXNzaWdubWVudCBkb2VzIG5vdCBvY2N1ciBpbiBkYmcgbW9kZSAobm8gc2lk
ZWVmZmVjdCkuCisgIEVYUEVDVF9FUSgwLCBzaWRlZWZmZWN0KTsKKworIyBlbmRpZgorfQorCisj
IGlmbmRlZiBOREVCVUcKKwordm9pZCBFeHBlY3REZWJ1Z0RlYXRoSGVscGVyKGJvb2wqIGFib3J0
ZWQpIHsKKyAgKmFib3J0ZWQgPSB0cnVlOworICBFWFBFQ1RfREVCVUdfREVBVEgocmV0dXJuLCAi
IikgPDwgIlRoaXMgaXMgZXhwZWN0ZWQgdG8gZmFpbC4iOworICAqYWJvcnRlZCA9IGZhbHNlOwor
fQorCisjICBpZiBHVEVTVF9PU19XSU5ET1dTCitURVNUKFBvcFVwRGVhdGhUZXN0LCBEb2VzTm90
U2hvd1BvcFVwT25BYm9ydCkgeworICBwcmludGYoIlRoaXMgdGVzdCBzaG91bGQgYmUgY29uc2lk
ZXJlZCBmYWlsaW5nIGlmIGl0IHNob3dzICIKKyAgICAgICAgICJhbnkgcG9wLXVwIGRpYWxvZ3Mu
XG4iKTsKKyAgZmZsdXNoKHN0ZG91dCk7CisKKyAgRVhQRUNUX0RFQVRIKHsKKyAgICB0ZXN0aW5n
OjpHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpID0gZmFsc2U7CisgICAgYWJvcnQoKTsKKyAg
fSwgIiIpOworfQorIyAgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworLy8gVGVzdHMgdGhh
dCBFWFBFQ1RfREVCVUdfREVBVEggaW4gZGVidWcgbW9kZSBkb2VzIG5vdCBhYm9ydAorLy8gdGhl
IGZ1bmN0aW9uLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEV4cGVjdERlYnVnRGVhdGhEb2Vz
Tm90QWJvcnQpIHsKKyAgYm9vbCBhYm9ydGVkID0gdHJ1ZTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoRXhwZWN0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX0ZB
TFNFKGFib3J0ZWQpOworfQorCit2b2lkIEFzc2VydERlYnVnRGVhdGhIZWxwZXIoYm9vbCogYWJv
cnRlZCkgeworICAqYWJvcnRlZCA9IHRydWU7CisgIEdURVNUX0xPR18oSU5GTykgPDwgIkJlZm9y
ZSBBU1NFUlRfREVCVUdfREVBVEgiOworICBBU1NFUlRfREVCVUdfREVBVEgoR1RFU1RfTE9HXyhJ
TkZPKSA8PCAiSW4gQVNTRVJUX0RFQlVHX0RFQVRIIjsgcmV0dXJuLCAiIikKKyAgICAgIDw8ICJU
aGlzIGlzIGV4cGVjdGVkIHRvIGZhaWwuIjsKKyAgR1RFU1RfTE9HXyhJTkZPKSA8PCAiQWZ0ZXIg
QVNTRVJUX0RFQlVHX0RFQVRIIjsKKyAgKmFib3J0ZWQgPSBmYWxzZTsKK30KKworLy8gVGVzdHMg
dGhhdCBBU1NFUlRfREVCVUdfREVBVEggaW4gZGVidWcgbW9kZSBhYm9ydHMgdGhlIGZ1bmN0aW9u
IG9uCisvLyBmYWlsdXJlLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVh
dGhBYm9ydHMpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZhbHNlOwor
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwg
IiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHMyKSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7Cisg
IGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0
aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKK1RF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzMykgeworICBzdGF0
aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVF
KGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0
aEFib3J0czQpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZhbHNlOwor
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwg
IiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM1KSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7Cisg
IGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0
aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKK1RF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzNikgeworICBzdGF0
aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVF
KGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0
aEFib3J0czcpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZhbHNlOwor
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwg
IiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM4KSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7Cisg
IGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0
aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKK1RF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzOSkgeworICBzdGF0
aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVF
KGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0
aEFib3J0czEwKSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsK
KyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCks
ICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKKyMgZW5kaWYgIC8vIF9OREVCVUcK
KworLy8gVGVzdHMgdGhlICpfRVhJVCBmYW1pbHkgb2YgbWFjcm9zLCB1c2luZyBhIHZhcmlldHkg
b2YgcHJlZGljYXRlcy4KK3N0YXRpYyB2b2lkIFRlc3RFeGl0TWFjcm9zKCkgeworICBFWFBFQ1Rf
RVhJVChfZXhpdCgxKSwgIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEpLCAgIiIpOworICBBU1NF
UlRfRVhJVChfZXhpdCg0MiksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDQyKSwgIiIpOworCisj
IGlmIEdURVNUX09TX1dJTkRPV1MKKworICAvLyBPZiBhbGwgc2lnbmFscyBlZmZlY3RzIG9uIHRo
ZSBwcm9jZXNzIGV4aXQgY29kZSwgb25seSB0aG9zZSBvZiBTSUdBQlJUCisgIC8vIGFyZSBkb2N1
bWVudGVkIG9uIFdpbmRvd3MuCisgIC8vIFNlZSBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9l
bi11cy9xdWVyeS1iaS9tL2R3d3prdDRjLgorICBFWFBFQ1RfRVhJVChyYWlzZShTSUdBQlJUKSwg
dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMyksICIiKSA8PCAiYl9hciI7CisKKyMgZWxpZiAhR1RF
U1RfT1NfRlVDSFNJQQorCisgIC8vIEZ1Y2hzaWEgaGFzIG5vIHVuaXggc2lnbmFscy4KKyAgRVhQ
RUNUX0VYSVQocmFpc2UoU0lHS0lMTCksIHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKFNJR0tJTEwp
LCAiIikgPDwgImZvbyI7CisgIEFTU0VSVF9FWElUKHJhaXNlKFNJR1VTUjIpLCB0ZXN0aW5nOjpL
aWxsZWRCeVNpZ25hbChTSUdVU1IyKSwgIiIpIDw8ICJiYXIiOworCisgIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9FWElUKF9leGl0KDApLCB0ZXN0aW5nOjpL
aWxsZWRCeVNpZ25hbChTSUdTRUdWKSwgIiIpCisgICAgICA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4
cGVjdGVkLCB0b28uIjsKKyAgfSwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgdG9vLiIpOwor
CisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX0VYSVQocmFpc2UoU0lHU0VHViksIHRlc3Rpbmc6
OkV4aXRlZFdpdGhDb2RlKDApLCAiIikKKyAgICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0
ZWQuIjsKKyAgfSwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4iKTsKK30KKworVEVTVF9GKFRl
c3RGb3JEZWF0aFRlc3QsIEV4aXRNYWNyb3MpIHsKKyAgVGVzdEV4aXRNYWNyb3MoKTsKK30KKwor
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEV4aXRNYWNyb3NVc2luZ0ZvcmspIHsKKyAgdGVzdGlu
Zzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKSA9IHRydWU7CisgIFRlc3RFeGl0TWFj
cm9zKCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBJbnZhbGlkU3R5bGUpIHsKKyAg
dGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJyb2NvY28iOworICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfREVBVEgoX2V4aXQo
MCksICIiKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiI7CisgIH0sICJUaGlzIGZhaWx1
cmUgaXMgZXhwZWN0ZWQuIik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEZWF0aFRl
c3RGYWlsZWRPdXRwdXQpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxl
KSA9ICJmYXN0IjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBFWFBFQ1RfREVB
VEgoRGllV2l0aE1lc3NhZ2UoImRlYXRoXG4iKSwKKyAgICAgICAgICAgICAgICAgICAiZXhwZWN0
ZWQgbWVzc2FnZSIpLAorICAgICAgIkFjdHVhbCBtc2c6XG4iCisgICAgICAiWyAgREVBVEggICBd
IGRlYXRoXG4iKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERlYXRoVGVzdFVuZXhw
ZWN0ZWRSZXR1cm5PdXRwdXQpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0
eWxlKSA9ICJmYXN0IjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBFWFBFQ1Rf
REVBVEgoeworICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicmV0dXJuaW5nXG4iKTsKKyAgICAg
ICAgICBmZmx1c2goc3RkZXJyKTsKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0sICIiKSwK
KyAgICAgICIgICAgUmVzdWx0OiBpbGxlZ2FsIHJldHVybiBpbiB0ZXN0IHN0YXRlbWVudC5cbiIK
KyAgICAgICIgRXJyb3IgbXNnOlxuIgorICAgICAgIlsgIERFQVRIICAgXSByZXR1cm5pbmdcbiIp
OworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRGVhdGhUZXN0QmFkRXhpdENvZGVPdXRw
dXQpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsK
KyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBFWFBFQ1RfRVhJVChEaWVXaXRoTWVz
c2FnZSgiZXhpdGluZyB3aXRoIHJjIDFcbiIpLAorICAgICAgICAgICAgICAgICAgdGVzdGluZzo6
RXhpdGVkV2l0aENvZGUoMyksCisgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgbWVzc2FnZSIp
LAorICAgICAgIiAgICBSZXN1bHQ6IGRpZWQgYnV0IG5vdCB3aXRoIGV4cGVjdGVkIGV4aXQgY29k
ZTpcbiIKKyAgICAgICIgICAgICAgICAgICBFeGl0ZWQgd2l0aCBleGl0IHN0YXR1cyAxXG4iCisg
ICAgICAiQWN0dWFsIG1zZzpcbiIKKyAgICAgICJbICBERUFUSCAgIF0gZXhpdGluZyB3aXRoIHJj
IDFcbiIpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRGVhdGhUZXN0TXVsdGlMaW5l
TWF0Y2hGYWlsKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAi
ZmFzdCI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAorICAgICAgRVhQRUNUX0RFQVRIKERp
ZVdpdGhNZXNzYWdlKCJsaW5lIDFcbmxpbmUgMlxubGluZSAzXG4iKSwKKyAgICAgICAgICAgICAg
ICAgICAibGluZSAxXG54eXpcbmxpbmUgM1xuIiksCisgICAgICAiQWN0dWFsIG1zZzpcbiIKKyAg
ICAgICJbICBERUFUSCAgIF0gbGluZSAxXG4iCisgICAgICAiWyAgREVBVEggICBdIGxpbmUgMlxu
IgorICAgICAgIlsgIERFQVRIICAgXSBsaW5lIDNcbiIpOworfQorCitURVNUX0YoVGVzdEZvckRl
YXRoVGVzdCwgRGVhdGhUZXN0TXVsdGlMaW5lTWF0Y2hQYXNzKSB7CisgIHRlc3Rpbmc6OkdURVNU
X0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9ERUFUSChEaWVXaXRo
TWVzc2FnZSgibGluZSAxXG5saW5lIDJcbmxpbmUgM1xuIiksCisgICAgICAgICAgICAgICAibGlu
ZSAxXG5saW5lIDJcbmxpbmUgM1xuIik7Cit9CisKKy8vIEEgRGVhdGhUZXN0RmFjdG9yeSB0aGF0
IHJldHVybnMgTW9ja0RlYXRoVGVzdHMuCitjbGFzcyBNb2NrRGVhdGhUZXN0RmFjdG9yeSA6IHB1
YmxpYyBEZWF0aFRlc3RGYWN0b3J5IHsKKyBwdWJsaWM6CisgIE1vY2tEZWF0aFRlc3RGYWN0b3J5
KCk7CisgIHZpcnR1YWwgYm9vbCBDcmVhdGUoY29uc3QgY2hhciogc3RhdGVtZW50LAorICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6OlJFKiByZWdleCwKKyAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgRGVhdGhUZXN0
KiogdGVzdCk7CisKKyAgLy8gU2V0cyB0aGUgcGFyYW1ldGVycyBmb3Igc3Vic2VxdWVudCBjYWxs
cyB0byBDcmVhdGUuCisgIHZvaWQgU2V0UGFyYW1ldGVycyhib29sIGNyZWF0ZSwgRGVhdGhUZXN0
OjpUZXN0Um9sZSByb2xlLAorICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXR1cywgYm9vbCBw
YXNzZWQpOworCisgIC8vIEFjY2Vzc29ycy4KKyAgaW50IEFzc3VtZVJvbGVDYWxscygpIGNvbnN0
IHsgcmV0dXJuIGFzc3VtZV9yb2xlX2NhbGxzXzsgfQorICBpbnQgV2FpdENhbGxzKCkgY29uc3Qg
eyByZXR1cm4gd2FpdF9jYWxsc187IH0KKyAgc2l6ZV90IFBhc3NlZENhbGxzKCkgY29uc3QgeyBy
ZXR1cm4gcGFzc2VkX2FyZ3NfLnNpemUoKTsgfQorICBib29sIFBhc3NlZEFyZ3VtZW50KGludCBu
KSBjb25zdCB7IHJldHVybiBwYXNzZWRfYXJnc19bbl07IH0KKyAgc2l6ZV90IEFib3J0Q2FsbHMo
KSBjb25zdCB7IHJldHVybiBhYm9ydF9hcmdzXy5zaXplKCk7IH0KKyAgRGVhdGhUZXN0OjpBYm9y
dFJlYXNvbiBBYm9ydEFyZ3VtZW50KGludCBuKSBjb25zdCB7CisgICAgcmV0dXJuIGFib3J0X2Fy
Z3NfW25dOworICB9CisgIGJvb2wgVGVzdERlbGV0ZWQoKSBjb25zdCB7IHJldHVybiB0ZXN0X2Rl
bGV0ZWRfOyB9CisKKyBwcml2YXRlOgorICBmcmllbmQgY2xhc3MgTW9ja0RlYXRoVGVzdDsKKyAg
Ly8gSWYgdHJ1ZSwgQ3JlYXRlIHdpbGwgcmV0dXJuIGEgTW9ja0RlYXRoVGVzdDsgb3RoZXJ3aXNl
IGl0IHJldHVybnMKKyAgLy8gTlVMTC4KKyAgYm9vbCBjcmVhdGVfOworICAvLyBUaGUgdmFsdWUg
YSBNb2NrRGVhdGhUZXN0IHdpbGwgcmV0dXJuIGZyb20gaXRzIEFzc3VtZVJvbGUgbWV0aG9kLgor
ICBEZWF0aFRlc3Q6OlRlc3RSb2xlIHJvbGVfOworICAvLyBUaGUgdmFsdWUgYSBNb2NrRGVhdGhU
ZXN0IHdpbGwgcmV0dXJuIGZyb20gaXRzIFdhaXQgbWV0aG9kLgorICBpbnQgc3RhdHVzXzsKKyAg
Ly8gVGhlIHZhbHVlIGEgTW9ja0RlYXRoVGVzdCB3aWxsIHJldHVybiBmcm9tIGl0cyBQYXNzZWQg
bWV0aG9kLgorICBib29sIHBhc3NlZF87CisKKyAgLy8gTnVtYmVyIG9mIHRpbWVzIEFzc3VtZVJv
bGUgd2FzIGNhbGxlZC4KKyAgaW50IGFzc3VtZV9yb2xlX2NhbGxzXzsKKyAgLy8gTnVtYmVyIG9m
IHRpbWVzIFdhaXQgd2FzIGNhbGxlZC4KKyAgaW50IHdhaXRfY2FsbHNfOworICAvLyBUaGUgYXJn
dW1lbnRzIHRvIHRoZSBjYWxscyB0byBQYXNzZWQgc2luY2UgdGhlIGxhc3QgY2FsbCB0bworICAv
LyBTZXRQYXJhbWV0ZXJzLgorICBzdGQ6OnZlY3Rvcjxib29sPiBwYXNzZWRfYXJnc187CisgIC8v
IFRoZSBhcmd1bWVudHMgdG8gdGhlIGNhbGxzIHRvIEFib3J0IHNpbmNlIHRoZSBsYXN0IGNhbGwg
dG8KKyAgLy8gU2V0UGFyYW1ldGVycy4KKyAgc3RkOjp2ZWN0b3I8RGVhdGhUZXN0OjpBYm9ydFJl
YXNvbj4gYWJvcnRfYXJnc187CisgIC8vIFRydWUgaWYgdGhlIGxhc3QgTW9ja0RlYXRoVGVzdCBy
ZXR1cm5lZCBieSBDcmVhdGUgaGFzIGJlZW4KKyAgLy8gZGVsZXRlZC4KKyAgYm9vbCB0ZXN0X2Rl
bGV0ZWRfOworfTsKKworCisvLyBBIERlYXRoVGVzdCBpbXBsZW1lbnRhdGlvbiB1c2VmdWwgaW4g
dGVzdGluZy4gIEl0IHJldHVybnMgdmFsdWVzIHNldAorLy8gYXQgaXRzIGNyZWF0aW9uIGZyb20g
aXRzIHZhcmlvdXMgaW5oZXJpdGVkIERlYXRoVGVzdCBtZXRob2RzLCBhbmQKKy8vIHJlcG9ydHMg
Y2FsbHMgdG8gdGhvc2UgbWV0aG9kcyB0byBpdHMgcGFyZW50IE1vY2tEZWF0aFRlc3RGYWN0b3J5
CisvLyBvYmplY3QuCitjbGFzcyBNb2NrRGVhdGhUZXN0IDogcHVibGljIERlYXRoVGVzdCB7Cisg
cHVibGljOgorICBNb2NrRGVhdGhUZXN0KE1vY2tEZWF0aFRlc3RGYWN0b3J5ICpwYXJlbnQsCisg
ICAgICAgICAgICAgICAgVGVzdFJvbGUgcm9sZSwgaW50IHN0YXR1cywgYm9vbCBwYXNzZWQpIDoK
KyAgICAgIHBhcmVudF8ocGFyZW50KSwgcm9sZV8ocm9sZSksIHN0YXR1c18oc3RhdHVzKSwgcGFz
c2VkXyhwYXNzZWQpIHsKKyAgfQorICB2aXJ0dWFsIH5Nb2NrRGVhdGhUZXN0KCkgeworICAgIHBh
cmVudF8tPnRlc3RfZGVsZXRlZF8gPSB0cnVlOworICB9CisgIHZpcnR1YWwgVGVzdFJvbGUgQXNz
dW1lUm9sZSgpIHsKKyAgICArK3BhcmVudF8tPmFzc3VtZV9yb2xlX2NhbGxzXzsKKyAgICByZXR1
cm4gcm9sZV87CisgIH0KKyAgdmlydHVhbCBpbnQgV2FpdCgpIHsKKyAgICArK3BhcmVudF8tPndh
aXRfY2FsbHNfOworICAgIHJldHVybiBzdGF0dXNfOworICB9CisgIHZpcnR1YWwgYm9vbCBQYXNz
ZWQoYm9vbCBleGl0X3N0YXR1c19vaykgeworICAgIHBhcmVudF8tPnBhc3NlZF9hcmdzXy5wdXNo
X2JhY2soZXhpdF9zdGF0dXNfb2spOworICAgIHJldHVybiBwYXNzZWRfOworICB9CisgIHZpcnR1
YWwgdm9pZCBBYm9ydChBYm9ydFJlYXNvbiByZWFzb24pIHsKKyAgICBwYXJlbnRfLT5hYm9ydF9h
cmdzXy5wdXNoX2JhY2socmVhc29uKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgTW9ja0RlYXRoVGVz
dEZhY3RvcnkqIGNvbnN0IHBhcmVudF87CisgIGNvbnN0IFRlc3RSb2xlIHJvbGVfOworICBjb25z
dCBpbnQgc3RhdHVzXzsKKyAgY29uc3QgYm9vbCBwYXNzZWRfOworfTsKKworCisvLyBNb2NrRGVh
dGhUZXN0RmFjdG9yeSBjb25zdHJ1Y3Rvci4KK01vY2tEZWF0aFRlc3RGYWN0b3J5OjpNb2NrRGVh
dGhUZXN0RmFjdG9yeSgpCisgICAgOiBjcmVhdGVfKHRydWUpLAorICAgICAgcm9sZV8oRGVhdGhU
ZXN0OjpPVkVSU0VFX1RFU1QpLAorICAgICAgc3RhdHVzXygwKSwKKyAgICAgIHBhc3NlZF8odHJ1
ZSksCisgICAgICBhc3N1bWVfcm9sZV9jYWxsc18oMCksCisgICAgICB3YWl0X2NhbGxzXygwKSwK
KyAgICAgIHBhc3NlZF9hcmdzXygpLAorICAgICAgYWJvcnRfYXJnc18oKSB7Cit9CisKKworLy8g
U2V0cyB0aGUgcGFyYW1ldGVycyBmb3Igc3Vic2VxdWVudCBjYWxscyB0byBDcmVhdGUuCit2b2lk
IE1vY2tEZWF0aFRlc3RGYWN0b3J5OjpTZXRQYXJhbWV0ZXJzKGJvb2wgY3JlYXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWF0aFRlc3Q6OlRlc3RSb2xlIHJv
bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0dXMs
IGJvb2wgcGFzc2VkKSB7CisgIGNyZWF0ZV8gPSBjcmVhdGU7CisgIHJvbGVfID0gcm9sZTsKKyAg
c3RhdHVzXyA9IHN0YXR1czsKKyAgcGFzc2VkXyA9IHBhc3NlZDsKKworICBhc3N1bWVfcm9sZV9j
YWxsc18gPSAwOworICB3YWl0X2NhbGxzXyA9IDA7CisgIHBhc3NlZF9hcmdzXy5jbGVhcigpOwor
ICBhYm9ydF9hcmdzXy5jbGVhcigpOworfQorCisKKy8vIFNldHMgdGVzdCB0byBOVUxMIChpZiBj
cmVhdGVfIGlzIGZhbHNlKSBvciB0byB0aGUgYWRkcmVzcyBvZiBhIG5ldworLy8gTW9ja0RlYXRo
VGVzdCBvYmplY3Qgd2l0aCBwYXJhbWV0ZXJzIHRha2VuIGZyb20gdGhlIGxhc3QgY2FsbAorLy8g
dG8gU2V0UGFyYW1ldGVycyAoaWYgY3JlYXRlXyBpcyB0cnVlKS4gIEFsd2F5cyByZXR1cm5zIHRy
dWUuCitib29sIE1vY2tEZWF0aFRlc3RGYWN0b3J5OjpDcmVhdGUoY29uc3QgY2hhciogLypzdGF0
ZW1lbnQqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rp
bmc6OmludGVybmFsOjpSRSogLypyZWdleCovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIC8qZmlsZSovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCAvKmxpbmUqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
ZWF0aFRlc3QqKiB0ZXN0KSB7CisgIHRlc3RfZGVsZXRlZF8gPSBmYWxzZTsKKyAgaWYgKGNyZWF0
ZV8pIHsKKyAgICAqdGVzdCA9IG5ldyBNb2NrRGVhdGhUZXN0KHRoaXMsIHJvbGVfLCBzdGF0dXNf
LCBwYXNzZWRfKTsKKyAgfSBlbHNlIHsKKyAgICAqdGVzdCA9IE5VTEw7CisgIH0KKyAgcmV0dXJu
IHRydWU7Cit9CisKKy8vIEEgdGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIHRoZSBsb2dpYyBvZiB0
aGUgR1RFU1RfREVBVEhfVEVTVF8gbWFjcm8uCisvLyBJdCBpbnN0YWxscyBhIE1vY2tEZWF0aFRl
c3RGYWN0b3J5IHRoYXQgaXMgdXNlZCBmb3IgdGhlIGR1cmF0aW9uCisvLyBvZiB0aGUgdGVzdCBj
YXNlLgorY2xhc3MgTWFjcm9Mb2dpY0RlYXRoVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
KyBwcm90ZWN0ZWQ6CisgIHN0YXRpYyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVwbGFjZURlYXRoVGVz
dEZhY3RvcnkqIHJlcGxhY2VyXzsKKyAgc3RhdGljIE1vY2tEZWF0aFRlc3RGYWN0b3J5KiBmYWN0
b3J5XzsKKworICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgeworICAgIGZhY3RvcnlfID0g
bmV3IE1vY2tEZWF0aFRlc3RGYWN0b3J5OworICAgIHJlcGxhY2VyXyA9IG5ldyB0ZXN0aW5nOjpp
bnRlcm5hbDo6UmVwbGFjZURlYXRoVGVzdEZhY3RvcnkoZmFjdG9yeV8pOworICB9CisKKyAgc3Rh
dGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBkZWxldGUgcmVwbGFjZXJfOworICAg
IHJlcGxhY2VyXyA9IE5VTEw7CisgICAgZGVsZXRlIGZhY3RvcnlfOworICAgIGZhY3RvcnlfID0g
TlVMTDsKKyAgfQorCisgIC8vIFJ1bnMgYSBkZWF0aCB0ZXN0IHRoYXQgYnJlYWtzIHRoZSBydWxl
cyBieSByZXR1cm5pbmcuICBTdWNoIGEgZGVhdGgKKyAgLy8gdGVzdCBjYW5ub3QgYmUgcnVuIGRp
cmVjdGx5IGZyb20gYSB0ZXN0IHJvdXRpbmUgdGhhdCB1c2VzIGEKKyAgLy8gTW9ja0RlYXRoVGVz
dCwgb3IgdGhlIHJlbWFpbmRlciBvZiB0aGUgcm91dGluZSB3aWxsIG5vdCBiZSBleGVjdXRlZC4K
KyAgc3RhdGljIHZvaWQgUnVuUmV0dXJuaW5nRGVhdGhUZXN0KGJvb2wqIGZsYWcpIHsKKyAgICBB
U1NFUlRfREVBVEgoeyAgLy8gTk9MSU5UCisgICAgICAqZmxhZyA9IHRydWU7CisgICAgICByZXR1
cm47CisgICAgfSwgIiIpOworICB9Cit9OworCit0ZXN0aW5nOjppbnRlcm5hbDo6UmVwbGFjZURl
YXRoVGVzdEZhY3RvcnkqIE1hY3JvTG9naWNEZWF0aFRlc3Q6OnJlcGxhY2VyXworICAgID0gTlVM
TDsKK01vY2tEZWF0aFRlc3RGYWN0b3J5KiBNYWNyb0xvZ2ljRGVhdGhUZXN0OjpmYWN0b3J5XyA9
IE5VTEw7CisKKworLy8gVGVzdCB0aGF0IG5vdGhpbmcgaGFwcGVucyB3aGVuIHRoZSBmYWN0b3J5
IGRvZXNuJ3QgcmV0dXJuIGEgRGVhdGhUZXN0OgorVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3Qs
IE5vdGhpbmdIYXBwZW5zKSB7CisgIGJvb2wgZmxhZyA9IGZhbHNlOworICBmYWN0b3J5Xy0+U2V0
UGFyYW1ldGVycyhmYWxzZSwgRGVhdGhUZXN0OjpPVkVSU0VFX1RFU1QsIDAsIHRydWUpOworICBF
WFBFQ1RfREVBVEgoZmxhZyA9IHRydWUsICIiKTsKKyAgRVhQRUNUX0ZBTFNFKGZsYWcpOworICBF
WFBFQ1RfRVEoMCwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKKyAgRVhQRUNUX0VRKDAs
IGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPlBhc3Nl
ZENhbGxzKCkpOworICBFWFBFQ1RfRVEoMFUsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOworICBF
WFBFQ1RfRkFMU0UoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkpOworfQorCisvLyBUZXN0IHRoYXQg
dGhlIHBhcmVudCBwcm9jZXNzIGRvZXNuJ3QgcnVuIHRoZSBkZWF0aCB0ZXN0IGNvZGUsCisvLyBh
bmQgdGhhdCB0aGUgUGFzc2VkIG1ldGhvZCByZXR1cm5zIGZhbHNlIHdoZW4gdGhlIChzaW11bGF0
ZWQpCisvLyBjaGlsZCBwcm9jZXNzIGV4aXRzIHdpdGggc3RhdHVzIDA6CitURVNUX0YoTWFjcm9M
b2dpY0RlYXRoVGVzdCwgQ2hpbGRFeGl0c1N1Y2Nlc3NmdWxseSkgeworICBib29sIGZsYWcgPSBm
YWxzZTsKKyAgZmFjdG9yeV8tPlNldFBhcmFtZXRlcnModHJ1ZSwgRGVhdGhUZXN0OjpPVkVSU0VF
X1RFU1QsIDAsIHRydWUpOworICBFWFBFQ1RfREVBVEgoZmxhZyA9IHRydWUsICIiKTsKKyAgRVhQ
RUNUX0ZBTFNFKGZsYWcpOworICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxs
cygpKTsKKyAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7CisgIEFTU0VSVF9F
USgxVSwgZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOworICBFWFBFQ1RfRkFMU0UoZmFjdG9yeV8t
PlBhc3NlZEFyZ3VtZW50KDApKTsKKyAgRVhQRUNUX0VRKDBVLCBmYWN0b3J5Xy0+QWJvcnRDYWxs
cygpKTsKKyAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkpOworfQorCisvLyBU
ZXN0cyB0aGF0IHRoZSBQYXNzZWQgbWV0aG9kIHdhcyBnaXZlbiB0aGUgYXJndW1lbnQgInRydWUi
IHdoZW4KKy8vIHRoZSAoc2ltdWxhdGVkKSBjaGlsZCBwcm9jZXNzIGV4aXRzIHdpdGggc3RhdHVz
IDE6CitURVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwgQ2hpbGRFeGl0c1Vuc3VjY2Vzc2Z1bGx5
KSB7CisgIGJvb2wgZmxhZyA9IGZhbHNlOworICBmYWN0b3J5Xy0+U2V0UGFyYW1ldGVycyh0cnVl
LCBEZWF0aFRlc3Q6Ok9WRVJTRUVfVEVTVCwgMSwgdHJ1ZSk7CisgIEVYUEVDVF9ERUFUSChmbGFn
ID0gdHJ1ZSwgIiIpOworICBFWFBFQ1RfRkFMU0UoZmxhZyk7CisgIEVYUEVDVF9FUSgxLCBmYWN0
b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOworICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPldhaXRD
YWxscygpKTsKKyAgQVNTRVJUX0VRKDFVLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7CisgIEVY
UEVDVF9UUlVFKGZhY3RvcnlfLT5QYXNzZWRBcmd1bWVudCgwKSk7CisgIEVYUEVDVF9FUSgwVSwg
ZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7CisgIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5UZXN0RGVs
ZXRlZCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgKHNpbXVsYXRlZCkgY2hpbGQgcHJvY2Vz
cyBleGVjdXRlcyB0aGUgZGVhdGggdGVzdAorLy8gY29kZSwgYW5kIGlzIGFib3J0ZWQgd2l0aCB0
aGUgY29ycmVjdCBBYm9ydFJlYXNvbiBpZiBpdAorLy8gZXhlY3V0ZXMgYSByZXR1cm4gc3RhdGVt
ZW50LgorVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxkUGVyZm9ybXNSZXR1cm4pIHsK
KyAgYm9vbCBmbGFnID0gZmFsc2U7CisgIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJzKHRydWUsIERl
YXRoVGVzdDo6RVhFQ1VURV9URVNULCAwLCB0cnVlKTsKKyAgUnVuUmV0dXJuaW5nRGVhdGhUZXN0
KCZmbGFnKTsKKyAgRVhQRUNUX1RSVUUoZmxhZyk7CisgIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+
QXNzdW1lUm9sZUNhbGxzKCkpOworICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPldhaXRDYWxscygp
KTsKKyAgRVhQRUNUX0VRKDBVLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7CisgIEVYUEVDVF9F
USgxVSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7CisgIEVYUEVDVF9FUShEZWF0aFRlc3Q6OlRF
U1RfRU5DT1VOVEVSRURfUkVUVVJOX1NUQVRFTUVOVCwKKyAgICAgICAgICAgIGZhY3RvcnlfLT5B
Ym9ydEFyZ3VtZW50KDApKTsKKyAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkp
OworfQorCisvLyBUZXN0cyB0aGF0IHRoZSAoc2ltdWxhdGVkKSBjaGlsZCBwcm9jZXNzIGlzIGFi
b3J0ZWQgd2l0aCB0aGUKKy8vIGNvcnJlY3QgQWJvcnRSZWFzb24gaWYgaXQgZG9lcyBub3QgZGll
LgorVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxkRG9lc05vdERpZSkgeworICBib29s
IGZsYWcgPSBmYWxzZTsKKyAgZmFjdG9yeV8tPlNldFBhcmFtZXRlcnModHJ1ZSwgRGVhdGhUZXN0
OjpFWEVDVVRFX1RFU1QsIDAsIHRydWUpOworICBFWFBFQ1RfREVBVEgoZmxhZyA9IHRydWUsICIi
KTsKKyAgRVhQRUNUX1RSVUUoZmxhZyk7CisgIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1l
Um9sZUNhbGxzKCkpOworICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPldhaXRDYWxscygpKTsKKyAg
RVhQRUNUX0VRKDBVLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7CisgIC8vIFRoaXMgdGltZSB0
aGVyZSBhcmUgdHdvIGNhbGxzIHRvIEFib3J0OiBvbmUgc2luY2UgdGhlIHRlc3QgZGlkbid0Cisg
IC8vIGRpZSwgYW5kIGFub3RoZXIgZnJvbSB0aGUgUmV0dXJuU2VudGluZWwgd2hlbiBpdCdzIGRl
c3Ryb3llZC4gIFRoZQorICAvLyBzZW50aW5lbCBub3JtYWxseSBpc24ndCBkZXN0cm95ZWQgaWYg
YSB0ZXN0IGRvZXNuJ3QgZGllLCBzaW5jZQorICAvLyBfZXhpdCgyKSBpcyBjYWxsZWQgaW4gdGhh
dCBjYXNlIGJ5IEZvcmtpbmdEZWF0aFRlc3QsIGJ1dCBub3QgYnkKKyAgLy8gb3VyIE1vY2tEZWF0
aFRlc3QuCisgIEFTU0VSVF9FUSgyVSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7CisgIEVYUEVD
VF9FUShEZWF0aFRlc3Q6OlRFU1RfRElEX05PVF9ESUUsCisgICAgICAgICAgICBmYWN0b3J5Xy0+
QWJvcnRBcmd1bWVudCgwKSk7CisgIEVYUEVDVF9FUShEZWF0aFRlc3Q6OlRFU1RfRU5DT1VOVEVS
RURfUkVUVVJOX1NUQVRFTUVOVCwKKyAgICAgICAgICAgIGZhY3RvcnlfLT5BYm9ydEFyZ3VtZW50
KDEpKTsKKyAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkpOworfQorCisvLyBU
ZXN0cyB0aGF0IGEgc3VjY2Vzc2Z1bCBkZWF0aCB0ZXN0IGRvZXMgbm90IHJlZ2lzdGVyIGEgc3Vj
Y2Vzc2Z1bAorLy8gdGVzdCBwYXJ0LgorVEVTVChTdWNjZXNzUmVnaXN0cmF0aW9uRGVhdGhUZXN0
LCBOb1N1Y2Nlc3NQYXJ0KSB7CisgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOworICBFWFBF
Q1RfRVEoMCwgR2V0VW5pdFRlc3RJbXBsKCktPmN1cnJlbnRfdGVzdF9yZXN1bHQoKS0+dG90YWxf
cGFydF9jb3VudCgpKTsKK30KKworVEVTVChTdHJlYW1pbmdBc3NlcnRpb25zRGVhdGhUZXN0LCBE
ZWF0aFRlc3QpIHsKKyAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgInVuZXhwZWN0ZWQg
ZmFpbHVyZSI7CisgIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8ICJ1bmV4cGVjdGVkIGZh
aWx1cmUiOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBF
Q1RfREVBVEgoX2V4aXQoMCksICIiKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSI7CisgIH0sICJleHBl
Y3RlZCBmYWlsdXJlIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAg
IEFTU0VSVF9ERUFUSChfZXhpdCgwKSwgIiIpIDw8ICJleHBlY3RlZCBmYWlsdXJlIjsKKyAgfSwg
ImV4cGVjdGVkIGZhaWx1cmUiKTsKK30KKworLy8gVGVzdHMgdGhhdCBHZXRMYXN0RXJybm9EZXNj
cmlwdGlvbiByZXR1cm5zIGFuIGVtcHR5IHN0cmluZyB3aGVuIHRoZQorLy8gbGFzdCBlcnJvciBp
cyAwIGFuZCBub24tZW1wdHkgc3RyaW5nIHdoZW4gaXQgaXMgbm9uLXplcm8uCitURVNUKEdldExh
c3RFcnJub0Rlc2NyaXB0aW9uLCBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbldvcmtzKSB7CisgIGVy
cm5vID0gRU5PRU5UOworICBFWFBFQ1RfU1RSTkUoIiIsIEdldExhc3RFcnJub0Rlc2NyaXB0aW9u
KCkuY19zdHIoKSk7CisgIGVycm5vID0gMDsKKyAgRVhQRUNUX1NUUkVRKCIiLCBHZXRMYXN0RXJy
bm9EZXNjcmlwdGlvbigpLmNfc3RyKCkpOworfQorCisjIGlmIEdURVNUX09TX1dJTkRPV1MKK1RF
U1QoQXV0b0hhbmRsZVRlc3QsIEF1dG9IYW5kbGVXb3JrcykgeworICBIQU5ETEUgaGFuZGxlID0g
OjpDcmVhdGVFdmVudChOVUxMLCBGQUxTRSwgRkFMU0UsIE5VTEwpOworICBBU1NFUlRfTkUoSU5W
QUxJRF9IQU5ETEVfVkFMVUUsIGhhbmRsZSk7CisKKyAgLy8gVGVzdHMgdGhhdCB0aGUgQXV0b0hh
bmRsZSBpcyBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgd2l0aCBhIGhhbmRsZS4KKyAgdGVzdGluZzo6
aW50ZXJuYWw6OkF1dG9IYW5kbGUgYXV0b19oYW5kbGUoaGFuZGxlKTsKKyAgRVhQRUNUX0VRKGhh
bmRsZSwgYXV0b19oYW5kbGUuR2V0KCkpOworCisgIC8vIFRlc3RzIHRoYXQgUmVzZXQgYXNzaWdu
cyBJTlZBTElEX0hBTkRMRV9WQUxVRS4KKyAgLy8gTm90ZSB0aGF0IHRoaXMgY2Fubm90IHZlcmlm
eSB3aGV0aGVyIHRoZSBvcmlnaW5hbCBoYW5kbGUgaXMgY2xvc2VkLgorICBhdXRvX2hhbmRsZS5S
ZXNldCgpOworICBFWFBFQ1RfRVEoSU5WQUxJRF9IQU5ETEVfVkFMVUUsIGF1dG9faGFuZGxlLkdl
dCgpKTsKKworICAvLyBUZXN0cyB0aGF0IFJlc2V0IGFzc2lnbnMgdGhlIG5ldyBoYW5kbGUuCisg
IC8vIE5vdGUgdGhhdCB0aGlzIGNhbm5vdCB2ZXJpZnkgd2hldGhlciB0aGUgb3JpZ2luYWwgaGFu
ZGxlIGlzIGNsb3NlZC4KKyAgaGFuZGxlID0gOjpDcmVhdGVFdmVudChOVUxMLCBGQUxTRSwgRkFM
U0UsIE5VTEwpOworICBBU1NFUlRfTkUoSU5WQUxJRF9IQU5ETEVfVkFMVUUsIGhhbmRsZSk7Cisg
IGF1dG9faGFuZGxlLlJlc2V0KGhhbmRsZSk7CisgIEVYUEVDVF9FUShoYW5kbGUsIGF1dG9faGFu
ZGxlLkdldCgpKTsKKworICAvLyBUZXN0cyB0aGF0IEF1dG9IYW5kbGUgY29udGFpbnMgSU5WQUxJ
RF9IQU5ETEVfVkFMVUUgYnkgZGVmYXVsdC4KKyAgdGVzdGluZzo6aW50ZXJuYWw6OkF1dG9IYW5k
bGUgYXV0b19oYW5kbGUyOworICBFWFBFQ1RfRVEoSU5WQUxJRF9IQU5ETEVfVkFMVUUsIGF1dG9f
aGFuZGxlMi5HZXQoKSk7Cit9CisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKyMgaWYg
R1RFU1RfT1NfV0lORE9XUwordHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IEJpZ2dlc3RQYXJzYWJs
ZTsKK3R5cGVkZWYgc2lnbmVkIF9faW50NjQgQmlnZ2VzdFNpZ25lZFBhcnNhYmxlOworIyBlbHNl
Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBCaWdnZXN0UGFyc2FibGU7Cit0eXBlZGVmIHNp
Z25lZCBsb25nIGxvbmcgQmlnZ2VzdFNpZ25lZFBhcnNhYmxlOworIyBlbmRpZiAgLy8gR1RFU1Rf
T1NfV0lORE9XUworCisvLyBXZSBjYW5ub3QgdXNlIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1h
eCgpIGFzIGl0IGNsYXNoZXMgd2l0aCB0aGUKKy8vIG1heCgpIG1hY3JvIGRlZmluZWQgYnkgPHdp
bmRvd3MuaD4uCitjb25zdCBCaWdnZXN0UGFyc2FibGUga0JpZ2dlc3RQYXJzYWJsZU1heCA9IFVM
TE9OR19NQVg7Citjb25zdCBCaWdnZXN0U2lnbmVkUGFyc2FibGUga0JpZ2dlc3RTaWduZWRQYXJz
YWJsZU1heCA9IExMT05HX01BWDsKKworVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBSZWpl
Y3RzSW52YWxpZEZvcm1hdCkgeworICBCaWdnZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsKKworICAv
LyBSZWplY3RzIG5vbi1udW1iZXJzLgorICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVy
KCJub24tbnVtYmVyIHN0cmluZyIsICZyZXN1bHQpKTsKKworICAvLyBSZWplY3RzIG51bWJlcnMg
d2l0aCB3aGl0ZXNwYWNlIHByZWZpeC4KKyAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJl
cigiIDEyMyIsICZyZXN1bHQpKTsKKworICAvLyBSZWplY3RzIG5lZ2F0aXZlIG51bWJlcnMuCisg
IEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoIi0xMjMiLCAmcmVzdWx0KSk7CisKKyAg
Ly8gUmVqZWN0cyBudW1iZXJzIHN0YXJ0aW5nIHdpdGggYSBwbHVzIHNpZ24uCisgIEVYUEVDVF9G
QUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoIisxMjMiLCAmcmVzdWx0KSk7CisgIGVycm5vID0gMDsK
K30KKworVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBSZWplY3RzT3ZlcmZsb3duTnVtYmVy
cykgeworICBCaWdnZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsKKworICBFWFBFQ1RfRkFMU0UoUGFy
c2VOYXR1cmFsTnVtYmVyKCI5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSIsICZyZXN1bHQpKTsKKwor
ICBzaWduZWQgY2hhciBjaGFyX3Jlc3VsdCA9IDA7CisgIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVy
YWxOdW1iZXIoIjIwMCIsICZjaGFyX3Jlc3VsdCkpOworICBlcnJubyA9IDA7Cit9CisKK1RFU1Qo
UGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgQWNjZXB0c1ZhbGlkTnVtYmVycykgeworICBCaWdnZXN0
UGFyc2FibGUgcmVzdWx0ID0gMDsKKworICByZXN1bHQgPSAwOworICBBU1NFUlRfVFJVRShQYXJz
ZU5hdHVyYWxOdW1iZXIoIjEyMyIsICZyZXN1bHQpKTsKKyAgRVhQRUNUX0VRKDEyM1UsIHJlc3Vs
dCk7CisKKyAgLy8gQ2hlY2sgMCBhcyBhbiBlZGdlIGNhc2UuCisgIHJlc3VsdCA9IDE7CisgIEFT
U0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcigiMCIsICZyZXN1bHQpKTsKKyAgRVhQRUNUX0VR
KDBVLCByZXN1bHQpOworCisgIHJlc3VsdCA9IDE7CisgIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJh
bE51bWJlcigiMDAwMDAiLCAmcmVzdWx0KSk7CisgIEVYUEVDVF9FUSgwVSwgcmVzdWx0KTsKK30K
KworVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBBY2NlcHRzVHlwZUxpbWl0cykgeworICBN
ZXNzYWdlIG1zZzsKKyAgbXNnIDw8IGtCaWdnZXN0UGFyc2FibGVNYXg7CisKKyAgQmlnZ2VzdFBh
cnNhYmxlIHJlc3VsdCA9IDA7CisgIEVYUEVDVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihtc2cu
R2V0U3RyaW5nKCksICZyZXN1bHQpKTsKKyAgRVhQRUNUX0VRKGtCaWdnZXN0UGFyc2FibGVNYXgs
IHJlc3VsdCk7CisKKyAgTWVzc2FnZSBtc2cyOworICBtc2cyIDw8IGtCaWdnZXN0U2lnbmVkUGFy
c2FibGVNYXg7CisKKyAgQmlnZ2VzdFNpZ25lZFBhcnNhYmxlIHNpZ25lZF9yZXN1bHQgPSAwOwor
ICBFWFBFQ1RfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIobXNnMi5HZXRTdHJpbmcoKSwgJnNpZ25l
ZF9yZXN1bHQpKTsKKyAgRVhQRUNUX0VRKGtCaWdnZXN0U2lnbmVkUGFyc2FibGVNYXgsIHNpZ25l
ZF9yZXN1bHQpOworCisgIE1lc3NhZ2UgbXNnMzsKKyAgbXNnMyA8PCBJTlRfTUFYOworCisgIGlu
dCBpbnRfcmVzdWx0ID0gMDsKKyAgRVhQRUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKG1zZzMu
R2V0U3RyaW5nKCksICZpbnRfcmVzdWx0KSk7CisgIEVYUEVDVF9FUShJTlRfTUFYLCBpbnRfcmVz
dWx0KTsKKworICBNZXNzYWdlIG1zZzQ7CisgIG1zZzQgPDwgVUlOVF9NQVg7CisKKyAgdW5zaWdu
ZWQgaW50IHVpbnRfcmVzdWx0ID0gMDsKKyAgRVhQRUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVy
KG1zZzQuR2V0U3RyaW5nKCksICZ1aW50X3Jlc3VsdCkpOworICBFWFBFQ1RfRVEoVUlOVF9NQVgs
IHVpbnRfcmVzdWx0KTsKK30KKworVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBXb3Jrc0Zv
clNob3J0ZXJJbnRlZ2VycykgeworICBzaG9ydCBzaG9ydF9yZXN1bHQgPSAwOworICBBU1NFUlRf
VFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjEyMyIsICZzaG9ydF9yZXN1bHQpKTsKKyAgRVhQRUNU
X0VRKDEyMywgc2hvcnRfcmVzdWx0KTsKKworICBzaWduZWQgY2hhciBjaGFyX3Jlc3VsdCA9IDA7
CisgIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcigiMTIzIiwgJmNoYXJfcmVzdWx0KSk7
CisgIEVYUEVDVF9FUSgxMjMsIGNoYXJfcmVzdWx0KTsKK30KKworIyBpZiBHVEVTVF9PU19XSU5E
T1dTCitURVNUKEVudmlyb25tZW50VGVzdCwgSGFuZGxlRml0c0ludG9TaXplVCkgeworICAvLyBG
SVhNRTogUmVtb3ZlIHRoaXMgdGVzdCBhZnRlciB0aGlzIGNvbmRpdGlvbiBpcyB2ZXJpZmllZAor
ICAvLyBpbiBhIHN0YXRpYyBhc3NlcnRpb24gaW4gZ3Rlc3QtZGVhdGgtdGVzdC5jYyBpbiB0aGUg
ZnVuY3Rpb24KKyAgLy8gR2V0U3RhdHVzRmlsZURlc2NyaXB0b3IuCisgIEFTU0VSVF9UUlVFKHNp
emVvZihIQU5ETEUpIDw9IHNpemVvZihzaXplX3QpKTsKK30KKyMgZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEL0FTU0VS
VF9ERUFUSF9JRl9TVVBQT1JURUQgdHJpZ2dlcgorLy8gZmFpbHVyZXMgd2hlbiBkZWF0aCB0ZXN0
cyBhcmUgYXZhaWxhYmxlIG9uIHRoZSBzeXN0ZW0uCitURVNUKENvbmRpdGlvbmFsRGVhdGhNYWNy
b3NEZWF0aFRlc3QsIEV4cGVjdHNEZWF0aFdoZW5EZWF0aFRlc3RzQXZhaWxhYmxlKSB7CisgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoRGllSW5zaWRlKCJDb25kRGVhdGhUZXN0RXhwZWN0TWFj
cm8iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVhdGggaW5zaWRlIENvbmREZWF0
aFRlc3RFeHBlY3RNYWNybyIpOworICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKERpZUluc2lk
ZSgiQ29uZERlYXRoVGVzdEFzc2VydE1hY3JvIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImRlYXRoIGluc2lkZSBDb25kRGVhdGhUZXN0QXNzZXJ0TWFjcm8iKTsKKworICAvLyBFbXB0
eSBzdGF0ZW1lbnQgd2lsbCBub3QgY3Jhc2gsIHdoaWNoIG11c3QgdHJpZ2dlciBhIGZhaWx1cmUu
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoOywg
IiIpLCAiIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JU
RUQoOywgIiIpLCAiIik7Cit9CisKK1RFU1QoSW5EZWF0aFRlc3RDaGlsZERlYXRoVGVzdCwgUmVw
b3J0c0RlYXRoVGVzdENvcnJlY3RseUluRmFzdFN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZM
QUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9GQUxTRShJbkRlYXRoVGVz
dENoaWxkKCkpOworICBFWFBFQ1RfREVBVEgoeworICAgIGZwcmludGYoc3RkZXJyLCBJbkRlYXRo
VGVzdENoaWxkKCkgPyAiSW5zaWRlIiA6ICJPdXRzaWRlIik7CisgICAgZmZsdXNoKHN0ZGVycik7
CisgICAgX2V4aXQoMSk7CisgIH0sICJJbnNpZGUiKTsKK30KKworVEVTVChJbkRlYXRoVGVzdENo
aWxkRGVhdGhUZXN0LCBSZXBvcnRzRGVhdGhUZXN0Q29ycmVjdGx5SW5UaHJlYWRTYWZlU3R5bGUp
IHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZl
IjsKKyAgRVhQRUNUX0ZBTFNFKEluRGVhdGhUZXN0Q2hpbGQoKSk7CisgIEVYUEVDVF9ERUFUSCh7
CisgICAgZnByaW50ZihzdGRlcnIsIEluRGVhdGhUZXN0Q2hpbGQoKSA/ICJJbnNpZGUiIDogIk91
dHNpZGUiKTsKKyAgICBmZmx1c2goc3RkZXJyKTsKKyAgICBfZXhpdCgxKTsKKyAgfSwgIkluc2lk
ZSIpOworfQorCisjZWxzZSAgLy8gIUdURVNUX0hBU19ERUFUSF9URVNUIGZvbGxvd3MKKwordXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OkNhcHR1cmVTdGRlcnI7Cit1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6R2V0Q2FwdHVyZWRTdGRlcnI7CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRIX0lG
X1NVUFBPUlRFRC9BU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEIGFyZSBzdGlsbAorLy8gZGVmaW5l
ZCBidXQgZG8gbm90IHRyaWdnZXIgZmFpbHVyZXMgd2hlbiBkZWF0aCB0ZXN0cyBhcmUgbm90IGF2
YWlsYWJsZSBvbgorLy8gdGhlIHN5c3RlbS4KK1RFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc1Rl
c3QsIFdhcm5zV2hlbkRlYXRoVGVzdHNOb3RBdmFpbGFibGUpIHsKKyAgLy8gRW1wdHkgc3RhdGVt
ZW50IHdpbGwgbm90IGNyYXNoLCBidXQgdGhhdCBzaG91bGQgbm90IHRyaWdnZXIgYSBmYWlsdXJl
CisgIC8vIHdoZW4gZGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQuCisgIENhcHR1cmVTdGRl
cnIoKTsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIik7CisgIHN0ZDo6c3RyaW5n
IG91dHB1dCA9IEdldENhcHR1cmVkU3RkZXJyKCk7CisgIEFTU0VSVF9UUlVFKE5VTEwgIT0gc3Ry
c3RyKG91dHB1dC5jX3N0cigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVhdGgg
dGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSIpKTsKKyAgQVNTRVJUX1RS
VUUoTlVMTCAhPSBzdHJzdHIob3V0cHV0LmNfc3RyKCksICI7IikpOworCisgIC8vIFRoZSBzdHJl
YW1lZCBtZXNzYWdlIHNob3VsZCBub3QgYmUgcHJpbnRlZCBhcyB0aGVyZSBpcyBubyB0ZXN0IGZh
aWx1cmUuCisgIENhcHR1cmVTdGRlcnIoKTsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg7
LCAiIikgPDwgInN0cmVhbWVkIG1lc3NhZ2UiOworICBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVy
cigpOworICBBU1NFUlRfVFJVRShOVUxMID09IHN0cnN0cihvdXRwdXQuY19zdHIoKSwgInN0cmVh
bWVkIG1lc3NhZ2UiKSk7CisKKyAgQ2FwdHVyZVN0ZGVycigpOworICBBU1NFUlRfREVBVEhfSUZf
U1VQUE9SVEVEKDssICIiKTsgIC8vIE5PTElOVAorICBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVy
cigpOworICBBU1NFUlRfVFJVRShOVUxMICE9IHN0cnN0cihvdXRwdXQuY19zdHIoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkIG9u
IHRoaXMgcGxhdGZvcm0iKSk7CisgIEFTU0VSVF9UUlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5j
X3N0cigpLCAiOyIpKTsKKworICBDYXB0dXJlU3RkZXJyKCk7CisgIEFTU0VSVF9ERUFUSF9JRl9T
VVBQT1JURUQoOywgIiIpIDw8ICJzdHJlYW1lZCBtZXNzYWdlIjsgIC8vIE5PTElOVAorICBvdXRw
dXQgPSBHZXRDYXB0dXJlZFN0ZGVycigpOworICBBU1NFUlRfVFJVRShOVUxMID09IHN0cnN0cihv
dXRwdXQuY19zdHIoKSwgInN0cmVhbWVkIG1lc3NhZ2UiKSk7Cit9CisKK3ZvaWQgRnVuY1dpdGhB
c3NlcnQoaW50KiBuKSB7CisgIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQocmV0dXJuOywgIiIp
OworICAoKm4pKys7Cit9CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRF
RCBkb2VzIG5vdCByZXR1cm4gZnJvbSB0aGUgY3VycmVudAorLy8gZnVuY3Rpb24gKGFzIEFTU0VS
VF9ERUFUSCBkb2VzKSBpZiBkZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZC4KK1RFU1QoQ29u
ZGl0aW9uYWxEZWF0aE1hY3Jvc1Rlc3QsIEFzc2VydERlYXREb2VzTm90UmV0dXJuaElmVW5zdXBw
b3J0ZWQpIHsKKyAgaW50IG4gPSAwOworICBGdW5jV2l0aEFzc2VydCgmbik7CisgIEVYUEVDVF9F
USgxLCBuKTsKK30KKworI2VuZGlmICAvLyAhR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworLy8gVGVz
dHMgdGhhdCB0aGUgZGVhdGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUgd2hpY2ggbWF5IG9y
IG1heSBub3QKKy8vIGJlIGZvbGxvd2VkIGJ5IG9wZXJhdG9yPDwsIGFuZCB0aGF0IGluIGVpdGhl
ciBjYXNlIHRoZSBjb21wbGV0ZSB0ZXh0CisvLyBjb21wcmlzZXMgb25seSBhIHNpbmdsZSBDKysg
c3RhdGVtZW50LgorLy8KKy8vIFRoZSBzeW50YXggc2hvdWxkIHdvcmsgd2hldGhlciBkZWF0aCB0
ZXN0cyBhcmUgYXZhaWxhYmxlIG9yIG5vdC4KK1RFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc1N5
bnRheERlYXRoVGVzdCwgU2luZ2xlU3RhdGVtZW50KSB7CisgIGlmIChBbHdheXNGYWxzZSgpKQor
ICAgIC8vIFRoaXMgd291bGQgZmFpbCBpZiBleGVjdXRlZDsgdGhpcyBpcyBhIGNvbXBpbGF0aW9u
IHRlc3Qgb25seQorICAgIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQocmV0dXJuLCAiIik7CisK
KyAgaWYgKEFsd2F5c1RydWUoKSkKKyAgICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKF9leGl0
KDEpLCAiIik7CisgIGVsc2UKKyAgICAvLyBUaGlzIGVtcHR5ICJlbHNlIiBicmFuY2ggaXMgbWVh
bnQgdG8gZW5zdXJlIHRoYXQgRVhQRUNUX0RFQVRICisgICAgLy8gZG9lc24ndCBleHBhbmQgaW50
byBhbiAiaWYiIHN0YXRlbWVudCB3aXRob3V0IGFuICJlbHNlIgorICAgIDsgIC8vIE5PTElOVAor
CisgIGlmIChBbHdheXNGYWxzZSgpKQorICAgIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQocmV0
dXJuLCAiIikgPDwgImRpZCBub3QgZGllIjsKKworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICA7
ICAvLyBOT0xJTlQKKyAgZWxzZQorICAgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQo
MSksICIiKSA8PCAxIDw8IDIgPDwgMzsKK30KKworLy8gVGVzdHMgdGhhdCBjb25kaXRpb25hbCBk
ZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29kZSB3aGljaCBpbnRlcmFjdHMKKy8vIHdlbGwg
d2l0aCBzd2l0Y2ggc3RhdGVtZW50cy4KK1RFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc1N5bnRh
eERlYXRoVGVzdCwgU3dpdGNoU3RhdGVtZW50KSB7CisgIC8vIE1pY3Jvc29mdCBjb21waWxlciB1
c3VhbGx5IGNvbXBsYWlucyBhYm91dCBzd2l0Y2ggc3RhdGVtZW50cyB3aXRob3V0CisgIC8vIGNh
c2UgbGFiZWxzLiBXZSBzdXBwcmVzcyB0aGF0IHdhcm5pbmcgZm9yIHRoaXMgdGVzdC4KKyAgR1RF
U1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDA2NSkKKworICBzd2l0Y2ggKDApCisgICAg
ZGVmYXVsdDoKKyAgICAgIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQoMSksICIiKQor
ICAgICAgICAgIDw8ICJleGl0IGluIGRlZmF1bHQgc3dpdGNoIGhhbmRsZXIiOworCisgIHN3aXRj
aCAoMCkKKyAgICBjYXNlIDA6CisgICAgICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKF9leGl0
KDEpLCAiIikgPDwgImV4aXQgaW4gc3dpdGNoIGNhc2UiOworCisgIEdURVNUX0RJU0FCTEVfTVND
X1dBUk5JTkdTX1BPUF8oKQorfQorCisvLyBUZXN0cyB0aGF0IGEgdGVzdCBjYXNlIHdob3NlIG5h
bWUgZW5kcyB3aXRoICJEZWF0aFRlc3QiIHdvcmtzIGZpbmUKKy8vIG9uIFdpbmRvd3MuCitURVNU
KE5vdEFEZWF0aFRlc3QsIFRlc3QpIHsKKyAgU1VDQ0VFRCgpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1kZWF0aC10ZXN0X2V4
X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhiOTQ3MGZjODhhZDE3YWFlYjY2NGQ0N2MyNzBjZmNhYTcz
MWJlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MKQEAgLTAsMCArMSw5MiBAQAorLy8gQ29weXJp
Z2h0IDIwMTAsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRp
b24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisv
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gVGVzdHMgdGhhdCB2
ZXJpZnkgaW50ZXJhY3Rpb24gb2YgZXhjZXB0aW9ucyBhbmQgZGVhdGggdGVzdHMuCisKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
KworI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCisKKyMgaWYgR1RFU1RfSEFTX1NFSAorIyAgaW5j
bHVkZSA8d2luZG93cy5oPiAgICAgICAgICAvLyBGb3IgUmFpc2VFeGNlcHRpb24oKS4KKyMgZW5k
aWYKKworIyBpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKworIyBpZiBHVEVTVF9IQVNfRVhD
RVBUSU9OUworCisjICBpbmNsdWRlIDxleGNlcHRpb24+ICAvLyBGb3Igc3RkOjpleGNlcHRpb24u
CisKKy8vIFRlc3RzIHRoYXQgZGVhdGggdGVzdHMgcmVwb3J0IHRocm93biBleGNlcHRpb25zIGFz
IGZhaWx1cmVzIGFuZCB0aGF0IHRoZQorLy8gZXhjZXB0aW9ucyBkbyBub3QgZXNjYXBlIGRlYXRo
IHRlc3QgbWFjcm9zLgorVEVTVChDeHhFeGNlcHRpb25EZWF0aFRlc3QsIEV4Y2VwdGlvbklzRmFp
bHVyZSkgeworICB0cnkgeworICAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ERUFU
SCh0aHJvdyAxLCAiIiksICJ0aHJldyBhbiBleGNlcHRpb24iKTsKKyAgfSBjYXRjaCAoLi4uKSB7
ICAvLyBOT0xJTlQKKyAgICBGQUlMKCkgPDwgIkFuIGV4Y2VwdGlvbiBlc2NhcGVkIGEgZGVhdGgg
dGVzdCBtYWNybyBpbnZvY2F0aW9uICIKKyAgICAgICAgICAgPDwgIndpdGggY2F0Y2hfZXhjZXB0
aW9ucyAiCisgICAgICAgICAgIDw8ICh0ZXN0aW5nOjpHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlv
bnMpID8gImVuYWJsZWQiIDogImRpc2FibGVkIik7CisgIH0KK30KKworY2xhc3MgVGVzdEV4Y2Vw
dGlvbiA6IHB1YmxpYyBzdGQ6OmV4Y2VwdGlvbiB7CisgcHVibGljOgorICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHdoYXQoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuICJleGNlcHRpb25hbCBtZXNzYWdl
IjsgfQorfTsKKworVEVTVChDeHhFeGNlcHRpb25EZWF0aFRlc3QsIFByaW50c01lc3NhZ2VGb3JT
dGRFeGNlcHRpb25zKSB7CisgIC8vIFZlcmlmaWVzIHRoYXQgdGhlIGV4Y2VwdGlvbiBtZXNzYWdl
IGlzIHF1b3RlZCBpbiB0aGUgZmFpbHVyZSB0ZXh0LgorICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShFWFBFQ1RfREVBVEgodGhyb3cgVGVzdEV4Y2VwdGlvbigpLCAiIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICJleGNlcHRpb25hbCBtZXNzYWdlIik7CisgIC8vIFZlcmlmaWVzIHRoYXQg
dGhlIGxvY2F0aW9uIGlzIG1lbnRpb25lZCBpbiB0aGUgZmFpbHVyZSB0ZXh0LgorICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgodGhyb3cgVGVzdEV4Y2VwdGlvbigpLCAiIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICJnb29nbGV0ZXN0LWRlYXRoLXRlc3RfZXhfdGVz
dC5jYyIpOworfQorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworIyBpZiBHVEVT
VF9IQVNfU0VICisvLyBUZXN0cyB0aGF0IGVuYWJsaW5nIGludGVyY2VwdGlvbiBvZiBTRUggZXhj
ZXB0aW9ucyB3aXRoIHRoZQorLy8gY2F0Y2hfZXhjZXB0aW9ucyBmbGFnIGRvZXMgbm90IGludGVy
ZmVyZSB3aXRoIFNFSCBleGNlcHRpb25zIGJlaW5nCisvLyB0cmVhdGVkIGFzIGRlYXRoIGJ5IGRl
YXRoIHRlc3RzLgorVEVTVChTZWhFeGNlcHRpb25EZWFzVGVzdCwgQ2F0Y2hFeGNlcHRpb25zRG9l
c05vdEludGVyZmVyZSkgeworICBFWFBFQ1RfREVBVEgoUmFpc2VFeGNlcHRpb24oNDIsIDB4MCwg
MCwgTlVMTCksICIiKQorICAgICAgPDwgIndpdGggY2F0Y2hfZXhjZXB0aW9ucyAiCisgICAgICA8
PCAodGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA/ICJlbmFibGVkIiA6ICJk
aXNhYmxlZCIpOworfQorIyBlbmRpZgorCisjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNU
CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICB0ZXN0aW5nOjpJbml0R29v
Z2xlVGVzdCgmYXJnYywgYXJndik7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0
aW9ucykgPSBHVEVTVF9FTkFCTEVfQ0FUQ0hfRVhDRVBUSU9OU18gIT0gMDsKKyAgcmV0dXJuIFJV
Tl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxZWZlZWUxZWFiOGM2
ZGFjYjVkMjkyNmY0YjVjOTA4MDkzOGRiMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0LnB5CkBAIC0wLDAgKzEs
MTE3IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDgsIEdvb2ds
ZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJW
ZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IGNvcnJlY3RseSBwYXJzZXMgZW52aXJvbm1lbnQgdmFy
aWFibGVzLiIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKKworSVNf
V0lORE9XUyA9IG9zLm5hbWUgPT0gJ250JworSVNfTElOVVggPSBvcy5uYW1lID09ICdwb3NpeCcg
YW5kIG9zLnVuYW1lKClbMF0gPT0gJ0xpbnV4JworCitDT01NQU5EID0gZ3Rlc3RfdGVzdF91dGls
cy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2dvb2dsZXRlc3QtZW52LXZhci10ZXN0XycpCisKK2Vu
dmlyb24gPSBvcy5lbnZpcm9uLmNvcHkoKQorCisKK2RlZiBBc3NlcnRFcShleHBlY3RlZCwgYWN0
dWFsKToKKyAgaWYgZXhwZWN0ZWQgIT0gYWN0dWFsOgorICAgIHByaW50ICdFeHBlY3RlZDogJXMn
ICUgKGV4cGVjdGVkLCkKKyAgICBwcmludCAnICBBY3R1YWw6ICVzJyAlIChhY3R1YWwsKQorICAg
IHJhaXNlIEFzc2VydGlvbkVycm9yCisKKworZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6
CisgICIiIlNldHMgdGhlIGVudiB2YXJpYWJsZSB0byAndmFsdWUnOyB1bnNldHMgaXQgd2hlbiAn
dmFsdWUnIGlzIE5vbmUuIiIiCisKKyAgaWYgdmFsdWUgaXMgbm90IE5vbmU6CisgICAgZW52aXJv
bltlbnZfdmFyXSA9IHZhbHVlCisgIGVsaWYgZW52X3ZhciBpbiBlbnZpcm9uOgorICAgIGRlbCBl
bnZpcm9uW2Vudl92YXJdCisKKworZGVmIEdldEZsYWcoZmxhZyk6CisgICIiIlJ1bnMgZ29vZ2xl
dGVzdC1lbnYtdmFyLXRlc3RfIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQuIiIiCisKKyAgYXJncyA9
IFtDT01NQU5EXQorICBpZiBmbGFnIGlzIG5vdCBOb25lOgorICAgIGFyZ3MgKz0gW2ZsYWddCisg
IHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoYXJncywgZW52PWVudmlyb24pLm91
dHB1dAorCisKK2RlZiBUZXN0RmxhZyhmbGFnLCB0ZXN0X3ZhbCwgZGVmYXVsdF92YWwpOgorICAi
IiJWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBmbGFnIGlzIGFmZmVjdGVkIGJ5IHRoZSBjb3JyZXNw
b25kaW5nIGVudiB2YXIuIiIiCisKKyAgZW52X3ZhciA9ICdHVEVTVF8nICsgZmxhZy51cHBlcigp
CisgIFNldEVudlZhcihlbnZfdmFyLCB0ZXN0X3ZhbCkKKyAgQXNzZXJ0RXEodGVzdF92YWwsIEdl
dEZsYWcoZmxhZykpCisgIFNldEVudlZhcihlbnZfdmFyLCBOb25lKQorICBBc3NlcnRFcShkZWZh
dWx0X3ZhbCwgR2V0RmxhZyhmbGFnKSkKKworCitjbGFzcyBHVGVzdEVudlZhclRlc3QoZ3Rlc3Rf
dGVzdF91dGlscy5UZXN0Q2FzZSk6CisKKyAgZGVmIHRlc3RFbnZWYXJBZmZlY3RzRmxhZyhzZWxm
KToKKyAgICAiIiJUZXN0cyB0aGF0IGVudmlyb25tZW50IHZhcmlhYmxlIHNob3VsZCBhZmZlY3Qg
dGhlIGNvcnJlc3BvbmRpbmcgZmxhZy4iIiIKKworICAgIFRlc3RGbGFnKCdicmVha19vbl9mYWls
dXJlJywgJzEnLCAnMCcpCisgICAgVGVzdEZsYWcoJ2NvbG9yJywgJ3llcycsICdhdXRvJykKKyAg
ICBUZXN0RmxhZygnZmlsdGVyJywgJ0Zvb1Rlc3QuQmFyJywgJyonKQorICAgIFNldEVudlZhcign
WE1MX09VVFBVVF9GSUxFJywgTm9uZSkgICMgRm9yICdvdXRwdXQnIHRlc3QKKyAgICBUZXN0Rmxh
Zygnb3V0cHV0JywgJ3htbDp0bXAvZm9vLnhtbCcsICcnKQorICAgIFRlc3RGbGFnKCdwcmludF90
aW1lJywgJzAnLCAnMScpCisgICAgVGVzdEZsYWcoJ3JlcGVhdCcsICc5OTknLCAnMScpCisgICAg
VGVzdEZsYWcoJ3Rocm93X29uX2ZhaWx1cmUnLCAnMScsICcwJykKKyAgICBUZXN0RmxhZygnZGVh
dGhfdGVzdF9zdHlsZScsICd0aHJlYWRzYWZlJywgJ2Zhc3QnKQorICAgIFRlc3RGbGFnKCdjYXRj
aF9leGNlcHRpb25zJywgJzAnLCAnMScpCisKKyAgICBpZiBJU19MSU5VWDoKKyAgICAgIFRlc3RG
bGFnKCdkZWF0aF90ZXN0X3VzZV9mb3JrJywgJzEnLCAnMCcpCisgICAgICBUZXN0RmxhZygnc3Rh
Y2tfdHJhY2VfZGVwdGgnLCAnMCcsICcxMDAnKQorCisKKyAgZGVmIHRlc3RYbWxPdXRwdXRGaWxl
KHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgJFhNTF9PVVRQVVRfRklMRSBhZmZlY3RzIHRoZSBv
dXRwdXQgZmxhZy4iIiIKKworICAgIFNldEVudlZhcignR1RFU1RfT1VUUFVUJywgTm9uZSkKKyAg
ICBTZXRFbnZWYXIoJ1hNTF9PVVRQVVRfRklMRScsICd0bXAvYmFyLnhtbCcpCisgICAgQXNzZXJ0
RXEoJ3htbDp0bXAvYmFyLnhtbCcsIEdldEZsYWcoJ291dHB1dCcpKQorCisgIGRlZiB0ZXN0WG1s
T3V0cHV0RmlsZU92ZXJyaWRlKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgJFhNTF9PVVRQVVRf
RklMRSBpcyBvdmVycmlkZGVuIGJ5ICRHVEVTVF9PVVRQVVQuIiIiCisKKyAgICBTZXRFbnZWYXIo
J0dURVNUX09VVFBVVCcsICd4bWw6dG1wL2Zvby54bWwnKQorICAgIFNldEVudlZhcignWE1MX09V
VFBVVF9GSUxFJywgJ3RtcC9iYXIueG1sJykKKyAgICBBc3NlcnRFcSgneG1sOnRtcC9mb28ueG1s
JywgR2V0RmxhZygnb3V0cHV0JykpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0
ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkMmFhODJm
NzRmYWEyMTIwMWU3OWFlMGU1YzNiNTY4NTUzZGYzMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0Xy5jYwpAQCAt
MCwwICsxLDEyMiBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0
OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8v
CisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisKKy8vIEEgaGVscGVyIHByb2dyYW0gZm9yIHRlc3RpbmcgdGhhdCBHb29nbGUgVGVzdCBw
YXJzZXMgdGhlIGVudmlyb25tZW50CisvLyB2YXJpYWJsZXMgY29ycmVjdGx5LgorCisjaW5jbHVk
ZSA8aW9zdHJlYW0+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgInNyYy9n
dGVzdC1pbnRlcm5hbC1pbmwuaCIKKwordXNpbmcgOjpzdGQ6OmNvdXQ7CisKK25hbWVzcGFjZSB0
ZXN0aW5nIHsKKworLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBpcyB0byBtYWtlIHRoZSB0ZXN0IG1v
cmUgcmVhbGlzdGljIGJ5IGVuc3VyaW5nCisvLyB0aGF0IHRoZSBVbml0VGVzdCBzaW5nbGV0b24g
aXMgY3JlYXRlZCBiZWZvcmUgbWFpbigpIGlzIGVudGVyZWQuCisvLyBXZSBkb24ndCBhY3R1YWwg
cnVuIHRoZSBURVNUIGl0c2VsZi4KK1RFU1QoR1Rlc3RFbnZWYXJUZXN0LCBEdW1teSkgeworfQor
Cit2b2lkIFByaW50RmxhZyhjb25zdCBjaGFyKiBmbGFnKSB7CisgIGlmIChzdHJjbXAoZmxhZywg
ImJyZWFrX29uX2ZhaWx1cmUiKSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKGJyZWFr
X29uX2ZhaWx1cmUpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgImNh
dGNoX2V4Y2VwdGlvbnMiKSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKGNhdGNoX2V4
Y2VwdGlvbnMpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgImNvbG9y
IikgPT0gMCkgeworICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhjb2xvcik7CisgICAgcmV0dXJuOwor
ICB9CisKKyAgaWYgKHN0cmNtcChmbGFnLCAiZGVhdGhfdGVzdF9zdHlsZSIpID09IDApIHsKKyAg
ICBjb3V0IDw8IEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSk7CisgICAgcmV0dXJuOworICB9
CisKKyAgaWYgKHN0cmNtcChmbGFnLCAiZGVhdGhfdGVzdF91c2VfZm9yayIpID09IDApIHsKKyAg
ICBjb3V0IDw8IEdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yayk7CisgICAgcmV0dXJuOwor
ICB9CisKKyAgaWYgKHN0cmNtcChmbGFnLCAiZmlsdGVyIikgPT0gMCkgeworICAgIGNvdXQgPDwg
R1RFU1RfRkxBRyhmaWx0ZXIpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxh
ZywgIm91dHB1dCIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZMQUcob3V0cHV0KTsKKyAg
ICByZXR1cm47CisgIH0KKworICBpZiAoc3RyY21wKGZsYWcsICJwcmludF90aW1lIikgPT0gMCkg
eworICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhwcmludF90aW1lKTsKKyAgICByZXR1cm47CisgIH0K
KworICBpZiAoc3RyY21wKGZsYWcsICJyZXBlYXQiKSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVT
VF9GTEFHKHJlcGVhdCk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChmbGFnLCAi
c3RhY2tfdHJhY2VfZGVwdGgiKSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKHN0YWNr
X3RyYWNlX2RlcHRoKTsKKyAgICByZXR1cm47CisgIH0KKworICBpZiAoc3RyY21wKGZsYWcsICJ0
aHJvd19vbl9mYWlsdXJlIikgPT0gMCkgeworICAgIGNvdXQgPDwgR1RFU1RfRkxBRyh0aHJvd19v
bl9mYWlsdXJlKTsKKyAgICByZXR1cm47CisgIH0KKworICBjb3V0IDw8ICJJbnZhbGlkIGZsYWcg
bmFtZSAiIDw8IGZsYWcKKyAgICAgICA8PCAiLiAgVmFsaWQgbmFtZXMgYXJlIGJyZWFrX29uX2Zh
aWx1cmUsIGNvbG9yLCBmaWx0ZXIsIGV0Yy5cbiI7CisgIGV4aXQoMSk7Cit9CisKK30gIC8vIG5h
bWVzcGFjZSB0ZXN0aW5nCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICB0
ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgaWYgKGFyZ2MgIT0gMikg
eworICAgIGNvdXQgPDwgIlVzYWdlOiBnb29nbGV0ZXN0LWVudi12YXItdGVzdF8gTkFNRV9PRl9G
TEFHXG4iOworICAgIHJldHVybiAxOworICB9CisKKyAgdGVzdGluZzo6UHJpbnRGbGFnKGFyZ3Zb
MV0pOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1maWxlcGF0aC10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LWZpbGVwYXRoLXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdmMDJmYjRi
ZDc3OTdkMTRkMzgzYTA1ZmExOTdjMzZiMzE4MjVmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1maWxlcGF0aC10ZXN0LmNjCkBAIC0w
LDAgKzEsNjUxIEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisvLworLy8gR29vZ2xlIFRlc3QgZmlsZXBhdGggdXRpbGl0aWVzCisvLworLy8gVGhpcyBmaWxl
IHRlc3RzIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkgYnkKKy8vIEdvb2ds
ZSBUZXN0LiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCisvLwor
Ly8gVGhpcyBmaWxlIGlzICNpbmNsdWRlZCBmcm9tIGd0ZXN0LWludGVybmFsLmguCisvLyBEbyBu
b3QgI2luY2x1ZGUgdGhpcyBmaWxlIGFueXdoZXJlIGVsc2UhCisKKyNpbmNsdWRlICJndGVzdC9p
bnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5j
bHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgorCisjaWYgR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKKyMgaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gTk9MSU5UCisjZWxpZiBHVEVTVF9PU19X
SU5ET1dTCisjIGluY2x1ZGUgPGRpcmVjdC5oPiAgLy8gTk9MSU5UCisjZW5kaWYgIC8vIEdURVNU
X09TX1dJTkRPV1NfTU9CSUxFCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFjZSBpbnRl
cm5hbCB7CituYW1lc3BhY2UgeworCisjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKy8vIEZJ
WE1FOiBNb3ZlIHRoZXNlIHRvIHRoZSBQT1NJWCBhZGFwdGVyIHNlY3Rpb24gaW4KKy8vIGd0ZXN0
LXBvcnQuaC4KKworLy8gV2luZG93cyBDRSBkb2Vzbid0IGhhdmUgdGhlIHJlbW92ZSBDIGZ1bmN0
aW9uLgoraW50IHJlbW92ZShjb25zdCBjaGFyKiBwYXRoKSB7CisgIExQQ1dTVFIgd3BhdGggPSBT
dHJpbmc6OkFuc2lUb1V0ZjE2KHBhdGgpOworICBpbnQgcmV0ID0gRGVsZXRlRmlsZSh3cGF0aCkg
PyAwIDogLTE7CisgIGRlbGV0ZSBbXSB3cGF0aDsKKyAgcmV0dXJuIHJldDsKK30KKy8vIFdpbmRv
d3MgQ0UgZG9lc24ndCBoYXZlIHRoZSBfcm1kaXIgQyBmdW5jdGlvbi4KK2ludCBfcm1kaXIoY29u
c3QgY2hhciogcGF0aCkgeworICBGaWxlUGF0aCBmaWxlcGF0aChwYXRoKTsKKyAgTFBDV1NUUiB3
cGF0aCA9IFN0cmluZzo6QW5zaVRvVXRmMTYoCisgICAgICBmaWxlcGF0aC5SZW1vdmVUcmFpbGlu
Z1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKKyAgaW50IHJldCA9IFJlbW92ZURpcmVjdG9yeSh3
cGF0aCkgPyAwIDogLTE7CisgIGRlbGV0ZSBbXSB3cGF0aDsKKyAgcmV0dXJuIHJldDsKK30KKwor
I2Vsc2UKKworVEVTVChHZXRDdXJyZW50RGlyVGVzdCwgUmV0dXJuc0N1cnJlbnREaXIpIHsKKyAg
Y29uc3QgRmlsZVBhdGggb3JpZ2luYWxfZGlyID0gRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKTsK
KyAgRVhQRUNUX0ZBTFNFKG9yaWdpbmFsX2Rpci5Jc0VtcHR5KCkpOworCisgIHBvc2l4OjpDaERp
cihHVEVTVF9QQVRIX1NFUF8pOworICBjb25zdCBGaWxlUGF0aCBjd2QgPSBGaWxlUGF0aDo6R2V0
Q3VycmVudERpcigpOworICBwb3NpeDo6Q2hEaXIob3JpZ2luYWxfZGlyLmNfc3RyKCkpOworCisj
IGlmIEdURVNUX09TX1dJTkRPV1MKKworICAvLyBTa2lwcyB0aGUgIjoiLgorICBjb25zdCBjaGFy
KiBjb25zdCBjd2Rfd2l0aG91dF9kcml2ZSA9IHN0cmNocihjd2QuY19zdHIoKSwgJzonKTsKKyAg
QVNTRVJUX1RSVUUoY3dkX3dpdGhvdXRfZHJpdmUgIT0gTlVMTCk7CisgIEVYUEVDVF9TVFJFUShH
VEVTVF9QQVRIX1NFUF8sIGN3ZF93aXRob3V0X2RyaXZlICsgMSk7CisKKyMgZWxzZQorCisgIEVY
UEVDVF9FUShHVEVTVF9QQVRIX1NFUF8sIGN3ZC5zdHJpbmcoKSk7CisKKyMgZW5kaWYKK30KKwor
I2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCitURVNUKElzRW1wdHlUZXN0LCBS
ZXR1cm5zVHJ1ZUZvckVtcHR5UGF0aCkgeworICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiIikuSXNF
bXB0eSgpKTsKK30KKworVEVTVChJc0VtcHR5VGVzdCwgUmV0dXJuc0ZhbHNlRm9yTm9uRW1wdHlQ
YXRoKSB7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYSIpLklzRW1wdHkoKSk7CisgIEVYUEVD
VF9GQUxTRShGaWxlUGF0aCgiLiIpLklzRW1wdHkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0
aCgiYS9iIikuSXNFbXB0eSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJhXFxiXFwiKS5J
c0VtcHR5KCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lICIiIC0+ICIiCitURVNUKFJl
bW92ZURpcmVjdG9yeU5hbWVUZXN0LCBXaGVuRW1wdHlOYW1lKSB7CisgIEVYUEVDVF9FUSgiIiwg
RmlsZVBhdGgoIiIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJl
bW92ZURpcmVjdG9yeU5hbWUgImFmaWxlIiAtPiAiYWZpbGUiCitURVNUKFJlbW92ZURpcmVjdG9y
eU5hbWVUZXN0LCBCdXROb0RpcmVjdG9yeSkgeworICBFWFBFQ1RfRVEoImFmaWxlIiwKKyAgICAg
IEZpbGVQYXRoKCJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9CisK
Ky8vIFJlbW92ZURpcmVjdG9yeU5hbWUgIi9hZmlsZSIgLT4gImFmaWxlIgorVEVTVChSZW1vdmVE
aXJlY3RvcnlOYW1lVGVzdCwgUm9vdEZpbGVTaG91bGRHaXZlRmlsZU5hbWUpIHsKKyAgRVhQRUNU
X0VRKCJhZmlsZSIsCisgICAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikuUmVt
b3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlRGlyZWN0b3J5TmFt
ZSAiYWRpci8iIC0+ICIiCitURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBXaGVyZVRoZXJl
SXNOb0ZpbGVOYW1lKSB7CisgIEVYUEVDVF9FUSgiIiwKKyAgICAgIEZpbGVQYXRoKCJhZGlyIiBH
VEVTVF9QQVRIX1NFUF8pLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8v
IFJlbW92ZURpcmVjdG9yeU5hbWUgImFkaXIvYWZpbGUiIC0+ICJhZmlsZSIKK1RFU1QoUmVtb3Zl
RGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEdpdmVGaWxlTmFtZSkgeworICBFWFBFQ1RfRVEoImFm
aWxlIiwKKyAgICAgIEZpbGVQYXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikuUmVt
b3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlRGlyZWN0b3J5TmFt
ZSAiYWRpci9zdWJkaXIvYWZpbGUiIC0+ICJhZmlsZSIKK1RFU1QoUmVtb3ZlRGlyZWN0b3J5TmFt
ZVRlc3QsIFNob3VsZEFsc29HaXZlRmlsZU5hbWUpIHsKKyAgRVhQRUNUX0VRKCJhZmlsZSIsCisg
ICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhf
U0VQXyAiYWZpbGUiKQorICAgICAgLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9
CisKKyNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXworCisvLyBUZXN0cyB0aGF0IFJlbW92ZURp
cmVjdG9yeU5hbWUoKSB3b3JrcyB3aXRoIHRoZSBhbHRlcm5hdGUgc2VwYXJhdG9yCisvLyBvbiBX
aW5kb3dzLgorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCIvYWZpbGUiKSAtPiAiYWZpbGUiCitU
RVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBSb290RmlsZVNob3VsZEdpdmVGaWxlTmFtZUZv
ckFsdGVybmF0ZVNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEoImFmaWxlIiwgRmlsZVBhdGgoIi9h
ZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZURp
cmVjdG9yeU5hbWUoImFkaXIvIikgLT4gIiIKK1RFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3Qs
IFdoZXJlVGhlcmVJc05vRmlsZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNU
X0VRKCIiLCBGaWxlUGF0aCgiYWRpci8iKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkp
OworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCJhZGlyL2FmaWxlIikgLT4gImFmaWxlIgor
VEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgU2hvdWxkR2l2ZUZpbGVOYW1lRm9yQWx0ZXJu
YXRlU2VwYXJhdG9yKSB7CisgIEVYUEVDVF9FUSgiYWZpbGUiLCBGaWxlUGF0aCgiYWRpci9hZmls
ZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZURpcmVj
dG9yeU5hbWUoImFkaXIvc3ViZGlyL2FmaWxlIikgLT4gImFmaWxlIgorVEVTVChSZW1vdmVEaXJl
Y3RvcnlOYW1lVGVzdCwgU2hvdWxkQWxzb0dpdmVGaWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRv
cikgeworICBFWFBFQ1RfRVEoImFmaWxlIiwKKyAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL3N1
YmRpci9hZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKyNlbmRp
ZgorCisvLyBSZW1vdmVGaWxlTmFtZSAiIiAtPiAiLi8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVz
dCwgRW1wdHlOYW1lKSB7CisjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyAgLy8gT24gV2lu
ZG93cyBDRSwgd2UgdXNlIHRoZSByb290IGFzIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKyAgRVhQ
RUNUX0VRKEdURVNUX1BBVEhfU0VQXywgRmlsZVBhdGgoIiIpLlJlbW92ZUZpbGVOYW1lKCkuc3Ry
aW5nKCkpOworI2Vsc2UKKyAgRVhQRUNUX0VRKCIuIiBHVEVTVF9QQVRIX1NFUF8sIEZpbGVQYXRo
KCIiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKKyNlbmRpZgorfQorCisvLyBSZW1vdmVG
aWxlTmFtZSAiYWRpci8iIC0+ICJhZGlyLyIKK1RFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBCdXRO
b0ZpbGUpIHsKKyAgRVhQRUNUX0VRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8sCisgICAgICBGaWxl
UGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsK
K30KKworLy8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvYWZpbGUiIC0+ICJhZGlyLyIKK1RFU1QoUmVt
b3ZlRmlsZU5hbWVUZXN0LCBHaXZlc0Rpck5hbWUpIHsKKyAgRVhQRUNUX0VRKCJhZGlyIiBHVEVT
VF9QQVRIX1NFUF8sCisgICAgICAgICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBf
ICJhZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVGaWxl
TmFtZSAiYWRpci9zdWJkaXIvYWZpbGUiIC0+ICJhZGlyL3N1YmRpci8iCitURVNUKFJlbW92ZUZp
bGVOYW1lVGVzdCwgR2l2ZXNEaXJBbmRTdWJEaXJOYW1lKSB7CisgIEVYUEVDVF9FUSgiYWRpciIg
R1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXywKKyAgICAgIEZpbGVQYXRo
KCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIp
CisgICAgICAuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZUZpbGVO
YW1lICIvYWZpbGUiIC0+ICIvIgorVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzUm9vdERp
cikgeworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfLAorICAgICAgRmlsZVBhdGgoR1RFU1Rf
UEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOworfQorCisjaWYg
R1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KKworLy8gVGVzdHMgdGhhdCBSZW1vdmVGaWxlTmFtZSgp
IHdvcmtzIHdpdGggdGhlIGFsdGVybmF0ZSBzZXBhcmF0b3Igb24KKy8vIFdpbmRvd3MuCisKKy8v
IFJlbW92ZUZpbGVOYW1lKCJhZGlyLyIpIC0+ICJhZGlyLyIKK1RFU1QoUmVtb3ZlRmlsZU5hbWVU
ZXN0LCBCdXROb0ZpbGVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNUX0VRKCJhZGly
IiBHVEVTVF9QQVRIX1NFUF8sCisgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci8iKS5SZW1vdmVG
aWxlTmFtZSgpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlRmlsZU5hbWUoImFkaXIvYWZpbGUi
KSAtPiAiYWRpci8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNEaXJOYW1lRm9yQWx0
ZXJuYXRlU2VwYXJhdG9yKSB7CisgIEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAor
ICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmlu
ZygpKTsKK30KKworLy8gUmVtb3ZlRmlsZU5hbWUoImFkaXIvc3ViZGlyL2FmaWxlIikgLT4gImFk
aXIvc3ViZGlyLyIKK1RFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc0RpckFuZFN1YkRpck5h
bWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNUX0VRKCJhZGlyIiBHVEVTVF9QQVRI
X1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgoImFk
aXIvc3ViZGlyL2FmaWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJl
bW92ZUZpbGVOYW1lKCIvYWZpbGUiKSAtPiAiXCIKK1RFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBH
aXZlc1Jvb3REaXJGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNUX0VRKEdURVNUX1BB
VEhfU0VQXywgRmlsZVBhdGgoIi9hZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOwor
fQorCisjZW5kaWYKKworVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZVdoZW5OdW1iZXJJ
c1plcm8pIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxl
UGF0aCgiZm9vIiksIEZpbGVQYXRoKCJiYXIiKSwKKyAgICAgIDAsICJ4bWwiKTsKKyAgRVhQRUNU
X0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Cit9
CisKK1RFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVGaWxlTmFtZU51bWJlckd0WmVybykg
eworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCJm
b28iKSwgRmlsZVBhdGgoImJhciIpLAorICAgICAgMTIsICJ4bWwiKTsKKyAgRVhQRUNUX0VRKCJm
b28iIEdURVNUX1BBVEhfU0VQXyAiYmFyXzEyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisK
K1RFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVGaWxlTmFtZVdpdGhTbGFzaE51bWJlcklz
WmVybykgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQ
YXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyksCisgICAgICBGaWxlUGF0aCgiYmFyIiksIDAsICJ4
bWwiKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVh
bC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVGaWxlTmFt
ZVdpdGhTbGFzaE51bWJlckd0WmVybykgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6
TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyksCisgICAgICBGaWxl
UGF0aCgiYmFyIiksIDEyLCAieG1sIik7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8gImJhcl8xMi54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKE1ha2VGaWxlTmFt
ZVRlc3QsIEdlbmVyYXRlV2hlbk51bWJlcklzWmVyb0FuZERpcklzRW1wdHkpIHsKKyAgRmlsZVBh
dGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiIiksIEZpbGVQYXRo
KCJiYXIiKSwKKyAgICAgIDAsICJ4bWwiKTsKKyAgRVhQRUNUX0VRKCJiYXIueG1sIiwgYWN0dWFs
LnN0cmluZygpKTsKK30KKworVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZVdoZW5OdW1i
ZXJJc05vdFplcm9BbmREaXJJc0VtcHR5KSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRo
OjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoIiIpLCBGaWxlUGF0aCgiYmFyIiksCisgICAgICAxNCwg
InhtbCIpOworICBFWFBFQ1RfRVEoImJhcl8xNC54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQor
CitURVNUKENvbmNhdFBhdGhzVGVzdCwgV29ya3NXaGVuRGlyRG9lc05vdEVuZFdpdGhQYXRoU2Vw
KSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgi
Zm9vIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0
aCgiYmFyLnhtbCIpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnht
bCIsIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoQ29uY2F0UGF0aHNUZXN0LCBXb3Jrc1do
ZW5QYXRoMUVuZHNXaXRoUGF0aFNlcCkgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6
Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJiYXIueG1sIikpOworICBF
WFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFsLnN0cmluZygp
KTsKK30KKworVEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgxQmVpbmdFbXB0eSkgeworICBGaWxl
UGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoIiIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJhci54bWwiKSk7
CisgIEVYUEVDVF9FUSgiYmFyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoQ29u
Y2F0UGF0aHNUZXN0LCBQYXRoMkJlaW5nRW1wdHkpIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmls
ZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iKSwgRmlsZVBhdGgoIiIpKTsKKyAgRVhQ
RUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywgYWN0dWFsLnN0cmluZygpKTsKK30KKworVEVT
VChDb25jYXRQYXRoc1Rlc3QsIEJvdGhQYXRoQmVpbmdFbXB0eSkgeworICBGaWxlUGF0aCBhY3R1
YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoIiIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoIiIpKTsKKyAgRVhQRUNUX0VRKCIi
LCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDFDb250
YWluc1BhdGhTZXApIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhz
KEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9vYmFyLnhtbCIpKTsKKyAgRVhQ
RUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBHVEVTVF9QQVRIX1NFUF8gImZvb2Jh
ci54bWwiLAorICAgICAgICAgICAgYWN0dWFsLnN0cmluZygpKTsKK30KKworVEVTVChDb25jYXRQ
YXRoc1Rlc3QsIFBhdGgyQ29udGFpbnNQYXRoU2VwKSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZp
bGVQYXRoOjpDb25jYXRQYXRocygKKyAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQ
XyksCisgICAgICBGaWxlUGF0aCgiYmFyIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiKSk7Cisg
IEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBfICJi
YXIueG1sIiwKKyAgICAgICAgICAgIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoQ29uY2F0
UGF0aHNUZXN0LCBQYXRoMkVuZHNXaXRoUGF0aFNlcCkgeworICBGaWxlUGF0aCBhY3R1YWwgPSBG
aWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJhciIgR1RFU1RfUEFUSF9TRVBfKSk7
CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBf
LCBhY3R1YWwuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3Ig
IiIgLT4gIiIKK1RFU1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgRW1wdHlTdHJp
bmcpIHsKKyAgRVhQRUNUX0VRKCIiLCBGaWxlUGF0aCgiIikuUmVtb3ZlVHJhaWxpbmdQYXRoU2Vw
YXJhdG9yKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3Ig
ImZvbyIgLT4gImZvbyIKK1RFU1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgRmls
ZU5vU2xhc2hTdHJpbmcpIHsKKyAgRVhQRUNUX0VRKCJmb28iLCBGaWxlUGF0aCgiZm9vIikuUmVt
b3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVUcmFp
bGluZ1BhdGhTZXBhcmF0b3IgImZvby8iIC0+ICJmb28iCitURVNUKFJlbW92ZVRyYWlsaW5nUGF0
aFNlcGFyYXRvclRlc3QsIFNob3VsZFJlbW92ZVRyYWlsaW5nU2VwYXJhdG9yKSB7CisgIEVYUEVD
VF9FUSgiZm9vIiwKKyAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXykuUmVtb3Zl
VHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuc3RyaW5nKCkpOworI2lmIEdURVNUX0hBU19BTFRfUEFU
SF9TRVBfCisgIEVYUEVDVF9FUSgiZm9vIiwgRmlsZVBhdGgoImZvby8iKS5SZW1vdmVUcmFpbGlu
Z1BhdGhTZXBhcmF0b3IoKS5zdHJpbmcoKSk7CisjZW5kaWYKK30KKworLy8gUmVtb3ZlVHJhaWxp
bmdQYXRoU2VwYXJhdG9yICJmb28vYmFyLyIgLT4gImZvby9iYXIvIgorVEVTVChSZW1vdmVUcmFp
bGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBTaG91bGRSZW1vdmVMYXN0U2VwYXJhdG9yKSB7CisgIEVY
UEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCisgICAgICAgICAgICBGaWxlUGF0
aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBfKQorICAgICAgICAg
ICAgICAgIC5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5zdHJpbmcoKSk7Cit9CisKKy8v
IFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiZm9vL2JhciIgLT4gImZvby9iYXIiCitURVNU
KFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvclRlc3QsIFNob3VsZFJldHVyblVubW9kaWZpZWQp
IHsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKKyAgICAgICAgICAg
IEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIikKKyAgICAgICAgICAgICAgICAu
UmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuc3RyaW5nKCkpOworfQorCitURVNUKERpcmVj
dG9yeVRlc3QsIFJvb3REaXJlY3RvcnlFeGlzdHMpIHsKKyNpZiBHVEVTVF9PU19XSU5ET1dTICAv
LyBXZSBhcmUgb24gV2luZG93cy4KKyAgY2hhciBjdXJyZW50X2RyaXZlW19NQVhfUEFUSF07ICAv
LyBOT0xJTlQKKyAgY3VycmVudF9kcml2ZVswXSA9IHN0YXRpY19jYXN0PGNoYXI+KF9nZXRkcml2
ZSgpICsgJ0EnIC0gMSk7CisgIGN1cnJlbnRfZHJpdmVbMV0gPSAnOic7CisgIGN1cnJlbnRfZHJp
dmVbMl0gPSAnXFwnOworICBjdXJyZW50X2RyaXZlWzNdID0gJ1wwJzsKKyAgRVhQRUNUX1RSVUUo
RmlsZVBhdGgoY3VycmVudF9kcml2ZSkuRGlyZWN0b3J5RXhpc3RzKCkpOworI2Vsc2UKKyAgRVhQ
RUNUX1RSVUUoRmlsZVBhdGgoIi8iKS5EaXJlY3RvcnlFeGlzdHMoKSk7CisjZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MKK30KKworI2lmIEdURVNUX09TX1dJTkRPV1MKK1RFU1QoRGlyZWN0b3J5
VGVzdCwgUm9vdE9mV3JvbmdEcml2ZURvZXNOb3RFeGlzdHMpIHsKKyAgY29uc3QgaW50IHNhdmVk
X2RyaXZlXyA9IF9nZXRkcml2ZSgpOworICAvLyBGaW5kIGEgZHJpdmUgdGhhdCBkb2Vzbid0IGV4
aXN0LiBTdGFydCB3aXRoICdaJyB0byBhdm9pZCBjb21tb24gb25lcy4KKyAgZm9yIChjaGFyIGRy
aXZlID0gJ1onOyBkcml2ZSA+PSAnQSc7IGRyaXZlLS0pCisgICAgaWYgKF9jaGRyaXZlKGRyaXZl
IC0gJ0EnICsgMSkgPT0gLTEpIHsKKyAgICAgIGNoYXIgbm9uX2RyaXZlW19NQVhfUEFUSF07ICAv
LyBOT0xJTlQKKyAgICAgIG5vbl9kcml2ZVswXSA9IGRyaXZlOworICAgICAgbm9uX2RyaXZlWzFd
ID0gJzonOworICAgICAgbm9uX2RyaXZlWzJdID0gJ1xcJzsKKyAgICAgIG5vbl9kcml2ZVszXSA9
ICdcMCc7CisgICAgICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgobm9uX2RyaXZlKS5EaXJlY3RvcnlF
eGlzdHMoKSk7CisgICAgICBicmVhazsKKyAgICB9CisgIF9jaGRyaXZlKHNhdmVkX2RyaXZlXyk7
Cit9CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworI2lmICFHVEVTVF9PU19XSU5ET1dT
X01PQklMRQorLy8gV2luZG93cyBDRSBfZG9lc18gY29uc2lkZXIgYW4gZW1wdHkgZGlyZWN0b3J5
IHRvIGV4aXN0LgorVEVTVChEaXJlY3RvcnlUZXN0LCBFbXB0eVBhdGhEaXJlY3RvcnlEb2VzTm90
RXhpc3QpIHsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIiKS5EaXJlY3RvcnlFeGlzdHMoKSk7
Cit9CisjZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCitURVNUKERpcmVjdG9y
eVRlc3QsIEN1cnJlbnREaXJlY3RvcnlFeGlzdHMpIHsKKyNpZiBHVEVTVF9PU19XSU5ET1dTICAv
LyBXZSBhcmUgb24gV2luZG93cy4KKyMgaWZuZGVmIF9XSU4zMl9DRSAgLy8gV2luZG93cyBDRSBk
b2Vzbid0IGhhdmUgYSBjdXJyZW50IGRpcmVjdG9yeS4KKworICBFWFBFQ1RfVFJVRShGaWxlUGF0
aCgiLiIpLkRpcmVjdG9yeUV4aXN0cygpKTsKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi5cXCIp
LkRpcmVjdG9yeUV4aXN0cygpKTsKKworIyBlbmRpZiAgLy8gX1dJTjMyX0NFCisjZWxzZQorICBF
WFBFQ1RfVFJVRShGaWxlUGF0aCgiLiIpLkRpcmVjdG9yeUV4aXN0cygpKTsKKyAgRVhQRUNUX1RS
VUUoRmlsZVBhdGgoIi4vIikuRGlyZWN0b3J5RXhpc3RzKCkpOworI2VuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCit9CisKKy8vICJmb28vYmFyIiA9PSBmb28vL2JhciIgPT0gImZvby8vL2JhciIK
K1RFU1QoTm9ybWFsaXplVGVzdCwgTXVsdGlwbGVDb25zZWN1dGl2ZVNlcGFwYXJhdG9yc0luTWlk
c3RyaW5nKSB7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCisgICAg
ICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIpLnN0cmluZygpKTsK
KyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKKyAgICAgICAgICAgIEZp
bGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gImJhciIpLnN0cmlu
ZygpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKKyAgICAgICAg
ICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8KKyAgICAg
ICAgICAgICAgICAgICAgIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOworfQorCisv
LyAiL2JhciIgPT0gLy9iYXIiID09ICIvLy9iYXIiCitURVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRp
cGxlQ29uc2VjdXRpdmVTZXBhcGFyYXRvcnNBdFN0cmluZ1N0YXJ0KSB7CisgIEVYUEVDVF9FUShH
VEVTVF9QQVRIX1NFUF8gImJhciIsCisgICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfICJiYXIi
KS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUShHVEVTVF9QQVRIX1NFUF8gImJhciIsCisgICAgRmls
ZVBhdGgoR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOwor
ICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgIEZpbGVQYXRoKEdURVNUX1BB
VEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5zdHJpbmcoKSk7
Cit9CisKKy8vICJmb28vIiA9PSBmb28vLyIgPT0gImZvby8vLyIKK1RFU1QoTm9ybWFsaXplVGVz
dCwgTXVsdGlwbGVDb25zZWN1dGl2ZVNlcGFwYXJhdG9yc0F0U3RyaW5nRW5kKSB7CisgIEVYUEVD
VF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCisgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFU
SF9TRVBfKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCisg
ICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXykuc3RyaW5n
KCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAgIEZpbGVQYXRoKCJm
b28iIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfKS5zdHJp
bmcoKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXworCisvLyBUZXN0cyB0aGF0
IHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGFyZSBub3JtYWxpemVkCisvLyBy
ZWdhcmRsZXNzIG9mIHRoZWlyIGNvbWJpbmF0aW9uIChlLmcuICJmb29cIiA9PSJmb28vXCIgPT0K
Ky8vICJmb29cXC8iKS4KK1RFU1QoTm9ybWFsaXplVGVzdCwgTWl4QWx0ZXJuYXRlU2VwYXJhdG9y
QXRTdHJpbmdFbmQpIHsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKKyAgICAg
ICAgICAgIEZpbGVQYXRoKCJmb28vIikuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RF
U1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBf
ICIvIikuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAg
ICAgICAgICAgRmlsZVBhdGgoImZvby8vIiBHVEVTVF9QQVRIX1NFUF8pLnN0cmluZygpKTsKK30K
KworI2VuZGlmCisKK1RFU1QoQXNzaWdubWVudE9wZXJhdG9yVGVzdCwgRGVmYXVsdEFzc2lnbmVk
VG9Ob25EZWZhdWx0KSB7CisgIEZpbGVQYXRoIGRlZmF1bHRfcGF0aDsKKyAgRmlsZVBhdGggbm9u
X2RlZmF1bHRfcGF0aCgicGF0aCIpOworICBub25fZGVmYXVsdF9wYXRoID0gZGVmYXVsdF9wYXRo
OworICBFWFBFQ1RfRVEoIiIsIG5vbl9kZWZhdWx0X3BhdGguc3RyaW5nKCkpOworICBFWFBFQ1Rf
RVEoIiIsIGRlZmF1bHRfcGF0aC5zdHJpbmcoKSk7ICAvLyBSSFMgdmFyIGlzIHVuY2hhbmdlZC4K
K30KKworVEVTVChBc3NpZ25tZW50T3BlcmF0b3JUZXN0LCBOb25EZWZhdWx0QXNzaWduZWRUb0Rl
ZmF1bHQpIHsKKyAgRmlsZVBhdGggbm9uX2RlZmF1bHRfcGF0aCgicGF0aCIpOworICBGaWxlUGF0
aCBkZWZhdWx0X3BhdGg7CisgIGRlZmF1bHRfcGF0aCA9IG5vbl9kZWZhdWx0X3BhdGg7CisgIEVY
UEVDVF9FUSgicGF0aCIsIGRlZmF1bHRfcGF0aC5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgicGF0
aCIsIG5vbl9kZWZhdWx0X3BhdGguc3RyaW5nKCkpOyAgLy8gUkhTIHZhciBpcyB1bmNoYW5nZWQu
Cit9CisKK1RFU1QoQXNzaWdubWVudE9wZXJhdG9yVGVzdCwgQ29uc3RBc3NpZ25lZFRvTm9uQ29u
c3QpIHsKKyAgY29uc3QgRmlsZVBhdGggY29uc3RfZGVmYXVsdF9wYXRoKCJjb25zdF9wYXRoIik7
CisgIEZpbGVQYXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgiKTsKKyAgbm9uX2RlZmF1bHRfcGF0
aCA9IGNvbnN0X2RlZmF1bHRfcGF0aDsKKyAgRVhQRUNUX0VRKCJjb25zdF9wYXRoIiwgbm9uX2Rl
ZmF1bHRfcGF0aC5zdHJpbmcoKSk7Cit9CisKK2NsYXNzIERpcmVjdG9yeUNyZWF0aW9uVGVzdCA6
IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAg
ICB0ZXN0ZGF0YV9wYXRoXy5TZXQoRmlsZVBhdGgoCisgICAgICAgIFRlbXBEaXIoKSArIEdldEN1
cnJlbnRFeGVjdXRhYmxlTmFtZSgpLnN0cmluZygpICsKKyAgICAgICAgIl9kaXJlY3RvcnlfY3Jl
YXRpb24iIEdURVNUX1BBVEhfU0VQXyAidGVzdCIgR1RFU1RfUEFUSF9TRVBfKSk7CisgICAgdGVz
dGRhdGFfZmlsZV8uU2V0KHRlc3RkYXRhX3BhdGhfLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRv
cigpKTsKKworICAgIHVuaXF1ZV9maWxlMF8uU2V0KEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUodGVz
dGRhdGFfcGF0aF8sIEZpbGVQYXRoKCJ1bmlxdWUiKSwKKyAgICAgICAgMCwgInR4dCIpKTsKKyAg
ICB1bmlxdWVfZmlsZTFfLlNldChGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKHRlc3RkYXRhX3BhdGhf
LCBGaWxlUGF0aCgidW5pcXVlIiksCisgICAgICAgIDEsICJ0eHQiKSk7CisKKyAgICByZW1vdmUo
dGVzdGRhdGFfZmlsZV8uY19zdHIoKSk7CisgICAgcmVtb3ZlKHVuaXF1ZV9maWxlMF8uY19zdHIo
KSk7CisgICAgcmVtb3ZlKHVuaXF1ZV9maWxlMV8uY19zdHIoKSk7CisgICAgcG9zaXg6OlJtRGly
KHRlc3RkYXRhX3BhdGhfLmNfc3RyKCkpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3du
KCkgeworICAgIHJlbW92ZSh0ZXN0ZGF0YV9maWxlXy5jX3N0cigpKTsKKyAgICByZW1vdmUodW5p
cXVlX2ZpbGUwXy5jX3N0cigpKTsKKyAgICByZW1vdmUodW5pcXVlX2ZpbGUxXy5jX3N0cigpKTsK
KyAgICBwb3NpeDo6Um1EaXIodGVzdGRhdGFfcGF0aF8uY19zdHIoKSk7CisgIH0KKworICB2b2lk
IENyZWF0ZVRleHRGaWxlKGNvbnN0IGNoYXIqIGZpbGVuYW1lKSB7CisgICAgRklMRSogZiA9IHBv
c2l4OjpGT3BlbihmaWxlbmFtZSwgInciKTsKKyAgICBmcHJpbnRmKGYsICJ0ZXh0XG4iKTsKKyAg
ICBmY2xvc2UoZik7CisgIH0KKworICAvLyBTdHJpbmdzIHJlcHJlc2VudGluZyBhIGRpcmVjdG9y
eSBhbmQgYSBmaWxlLCB3aXRoIGlkZW50aWNhbCBwYXRocworICAvLyBleGNlcHQgZm9yIHRoZSB0
cmFpbGluZyBzZXBhcmF0b3IgY2hhcmFjdGVyIHRoYXQgZGlzdGlucXVpc2hlcworICAvLyBhIGRp
cmVjdG9yeSBuYW1lZCAndGVzdCcgZnJvbSBhIGZpbGUgbmFtZWQgJ3Rlc3QnLiBFeGFtcGxlIG5h
bWVzOgorICBGaWxlUGF0aCB0ZXN0ZGF0YV9wYXRoXzsgIC8vICIvdG1wL2RpcmVjdG9yeV9jcmVh
dGlvbi90ZXN0LyIKKyAgRmlsZVBhdGggdGVzdGRhdGFfZmlsZV87ICAvLyAiL3RtcC9kaXJlY3Rv
cnlfY3JlYXRpb24vdGVzdCIKKyAgRmlsZVBhdGggdW5pcXVlX2ZpbGUwXzsgIC8vICIvdG1wL2Rp
cmVjdG9yeV9jcmVhdGlvbi90ZXN0L3VuaXF1ZS50eHQiCisgIEZpbGVQYXRoIHVuaXF1ZV9maWxl
MV87ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRpb24vdGVzdC91bmlxdWVfMS50eHQiCit9Owor
CitURVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2
ZWx5KSB7CisgIEVYUEVDVF9GQUxTRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlzdHMoKSkg
PDwgdGVzdGRhdGFfcGF0aF8uc3RyaW5nKCk7CisgIEVYUEVDVF9UUlVFKHRlc3RkYXRhX3BhdGhf
LkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKSk7CisgIEVYUEVDVF9UUlVFKHRlc3RkYXRh
X3BhdGhfLkRpcmVjdG9yeUV4aXN0cygpKTsKK30KKworVEVTVF9GKERpcmVjdG9yeUNyZWF0aW9u
VGVzdCwgQ3JlYXRlRGlyZWN0b3JpZXNGb3JBbHJlYWR5RXhpc3RpbmdQYXRoKSB7CisgIEVYUEVD
VF9GQUxTRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlzdHMoKSkgPDwgdGVzdGRhdGFfcGF0
aF8uc3RyaW5nKCk7CisgIEVYUEVDVF9UUlVFKHRlc3RkYXRhX3BhdGhfLkNyZWF0ZURpcmVjdG9y
aWVzUmVjdXJzaXZlbHkoKSk7CisgIC8vIENhbGwgJ2NyZWF0ZScgYWdhaW4uLi4gc2hvdWxkIHN0
aWxsIHN1Y2NlZWQuCisgIEVYUEVDVF9UUlVFKHRlc3RkYXRhX3BhdGhfLkNyZWF0ZURpcmVjdG9y
aWVzUmVjdXJzaXZlbHkoKSk7Cit9CisKK1RFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENy
ZWF0ZURpcmVjdG9yaWVzQW5kVW5pcXVlRmlsZW5hbWUpIHsKKyAgRmlsZVBhdGggZmlsZV9wYXRo
KEZpbGVQYXRoOjpHZW5lcmF0ZVVuaXF1ZUZpbGVOYW1lKHRlc3RkYXRhX3BhdGhfLAorICAgICAg
RmlsZVBhdGgoInVuaXF1ZSIpLCAidHh0IikpOworICBFWFBFQ1RfRVEodW5pcXVlX2ZpbGUwXy5z
dHJpbmcoKSwgZmlsZV9wYXRoLnN0cmluZygpKTsKKyAgRVhQRUNUX0ZBTFNFKGZpbGVfcGF0aC5G
aWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAvLyBmaWxlIG5vdCB0aGVyZQorCisgIHRlc3RkYXRh
X3BhdGhfLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKTsKKyAgRVhQRUNUX0ZBTFNFKGZp
bGVfcGF0aC5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAvLyBmaWxlIHN0aWxsIG5vdCB0aGVy
ZQorICBDcmVhdGVUZXh0RmlsZShmaWxlX3BhdGguY19zdHIoKSk7CisgIEVYUEVDVF9UUlVFKGZp
bGVfcGF0aC5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7CisKKyAgRmlsZVBhdGggZmlsZV9wYXRo
MihGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFtZSh0ZXN0ZGF0YV9wYXRoXywKKyAgICAg
IEZpbGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIpKTsKKyAgRVhQRUNUX0VRKHVuaXF1ZV9maWxlMV8u
c3RyaW5nKCksIGZpbGVfcGF0aDIuc3RyaW5nKCkpOworICBFWFBFQ1RfRkFMU0UoZmlsZV9wYXRo
Mi5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAvLyBmaWxlIG5vdCB0aGVyZQorICBDcmVhdGVU
ZXh0RmlsZShmaWxlX3BhdGgyLmNfc3RyKCkpOworICBFWFBFQ1RfVFJVRShmaWxlX3BhdGgyLkZp
bGVPckRpcmVjdG9yeUV4aXN0cygpKTsKK30KKworVEVTVF9GKERpcmVjdG9yeUNyZWF0aW9uVGVz
dCwgQ3JlYXRlRGlyZWN0b3JpZXNGYWlsKSB7CisgIC8vIGZvcmNlIGEgZmFpbHVyZSBieSBwdXR0
aW5nIGEgZmlsZSB3aGVyZSB3ZSB3aWxsIHRyeSB0byBjcmVhdGUgYSBkaXJlY3RvcnkuCisgIENy
ZWF0ZVRleHRGaWxlKHRlc3RkYXRhX2ZpbGVfLmNfc3RyKCkpOworICBFWFBFQ1RfVFJVRSh0ZXN0
ZGF0YV9maWxlXy5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7CisgIEVYUEVDVF9GQUxTRSh0ZXN0
ZGF0YV9maWxlXy5EaXJlY3RvcnlFeGlzdHMoKSk7CisgIEVYUEVDVF9GQUxTRSh0ZXN0ZGF0YV9m
aWxlXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOworfQorCitURVNUKE5vRGlyZWN0
b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVOb0RpcmVjdG9yaWVzRm9yRGVmYXVsdFhtbEZpbGUpIHsK
KyAgY29uc3QgRmlsZVBhdGggdGVzdF9kZXRhaWxfeG1sKCJ0ZXN0X2RldGFpbC54bWwiKTsKKyAg
RVhQRUNUX0ZBTFNFKHRlc3RfZGV0YWlsX3htbC5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5
KCkpOworfQorCitURVNUKEZpbGVQYXRoVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yKSB7CisgIEZp
bGVQYXRoIGZwOworICBFWFBFQ1RfRVEoIiIsIGZwLnN0cmluZygpKTsKK30KKworVEVTVChGaWxl
UGF0aFRlc3QsIENoYXJBbmRDb3B5Q29uc3RydWN0b3JzKSB7CisgIGNvbnN0IEZpbGVQYXRoIGZw
KCJzcGljeSIpOworICBFWFBFQ1RfRVEoInNwaWN5IiwgZnAuc3RyaW5nKCkpOworCisgIGNvbnN0
IEZpbGVQYXRoIGZwX2NvcHkoZnApOworICBFWFBFQ1RfRVEoInNwaWN5IiwgZnBfY29weS5zdHJp
bmcoKSk7Cit9CisKK1RFU1QoRmlsZVBhdGhUZXN0LCBTdHJpbmdDb25zdHJ1Y3RvcikgeworICBj
b25zdCBGaWxlUGF0aCBmcChzdGQ6OnN0cmluZygiY2lkZXIiKSk7CisgIEVYUEVDVF9FUSgiY2lk
ZXIiLCBmcC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoRmlsZVBhdGhUZXN0LCBTZXQpIHsKKyAgY29u
c3QgRmlsZVBhdGggYXBwbGUoImFwcGxlIik7CisgIEZpbGVQYXRoIG1hYygibWFjIik7CisgIG1h
Yy5TZXQoYXBwbGUpOyAgLy8gSW1wbGVtZW50IFNldCgpIHNpbmNlIG92ZXJsb2FkaW5nIG9wZXJh
dG9yPSBpcyBmb3JiaWRkZW4uCisgIEVYUEVDVF9FUSgiYXBwbGUiLCBtYWMuc3RyaW5nKCkpOwor
ICBFWFBFQ1RfRVEoImFwcGxlIiwgYXBwbGUuc3RyaW5nKCkpOworfQorCitURVNUKEZpbGVQYXRo
VGVzdCwgVG9TdHJpbmcpIHsKKyAgY29uc3QgRmlsZVBhdGggZmlsZSgiZHJpbmsiKTsKKyAgRVhQ
RUNUX0VRKCJkcmluayIsIGZpbGUuc3RyaW5nKCkpOworfQorCitURVNUKEZpbGVQYXRoVGVzdCwg
UmVtb3ZlRXh0ZW5zaW9uKSB7CisgIEVYUEVDVF9FUSgiYXBwIiwgRmlsZVBhdGgoImFwcC5jYyIp
LlJlbW92ZUV4dGVuc2lvbigiY2MiKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiYXBwIiwgRmls
ZVBhdGgoImFwcC5leGUiKS5SZW1vdmVFeHRlbnNpb24oImV4ZSIpLnN0cmluZygpKTsKKyAgRVhQ
RUNUX0VRKCJBUFAiLCBGaWxlUGF0aCgiQVBQLkVYRSIpLlJlbW92ZUV4dGVuc2lvbigiZXhlIiku
c3RyaW5nKCkpOworfQorCitURVNUKEZpbGVQYXRoVGVzdCwgUmVtb3ZlRXh0ZW5zaW9uV2hlblRo
ZXJlSXNOb0V4dGVuc2lvbikgeworICBFWFBFQ1RfRVEoImFwcCIsIEZpbGVQYXRoKCJhcHAiKS5S
ZW1vdmVFeHRlbnNpb24oImV4ZSIpLnN0cmluZygpKTsKK30KKworVEVTVChGaWxlUGF0aFRlc3Qs
IElzRGlyZWN0b3J5KSB7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiY29sYSIpLklzRGlyZWN0
b3J5KCkpOworICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgia29hbGEiIEdURVNUX1BBVEhfU0VQXyku
SXNEaXJlY3RvcnkoKSk7CisjaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KKyAgRVhQRUNUX1RS
VUUoRmlsZVBhdGgoImtvYWxhLyIpLklzRGlyZWN0b3J5KCkpOworI2VuZGlmCit9CisKK1RFU1Qo
RmlsZVBhdGhUZXN0LCBJc0Fic29sdXRlUGF0aCkgeworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgo
ImlzIiBHVEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIikuSXNBYnNvbHV0ZVBhdGgoKSk7CisgIEVY
UEVDVF9GQUxTRShGaWxlUGF0aCgiIikuSXNBYnNvbHV0ZVBhdGgoKSk7CisjaWYgR1RFU1RfT1Nf
V0lORE9XUworICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiYzpcXCIgR1RFU1RfUEFUSF9TRVBfICJp
c19ub3QiCisgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1BBVEhfU0VQXyAicmVsYXRpdmUi
KS5Jc0Fic29sdXRlUGF0aCgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJjOmZvbyIgR1RF
U1RfUEFUSF9TRVBfICJiYXIiKS5Jc0Fic29sdXRlUGF0aCgpKTsKKyAgRVhQRUNUX1RSVUUoRmls
ZVBhdGgoImM6LyIgR1RFU1RfUEFUSF9TRVBfICJpc19ub3QiCisgICAgICAgICAgICAgICAgICAg
ICAgIEdURVNUX1BBVEhfU0VQXyAicmVsYXRpdmUiKS5Jc0Fic29sdXRlUGF0aCgpKTsKKyNlbHNl
CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiaXNfbm90IiBHVEVTVF9Q
QVRIX1NFUF8gInJlbGF0aXZlIikKKyAgICAgICAgICAgICAgLklzQWJzb2x1dGVQYXRoKCkpOwor
I2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCit9CisKK1RFU1QoRmlsZVBhdGhUZXN0LCBJc1Jv
b3REaXJlY3RvcnkpIHsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIEVYUEVDVF9UUlVFKEZpbGVQ
YXRoKCJhOlxcIikuSXNSb290RGlyZWN0b3J5KCkpOworICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgi
WjovIikuSXNSb290RGlyZWN0b3J5KCkpOworICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiZTovLyIp
LklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIiKS5Jc1Jvb3RE
aXJlY3RvcnkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYjoiKS5Jc1Jvb3REaXJlY3Rv
cnkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYjphIikuSXNSb290RGlyZWN0b3J5KCkp
OworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIjg6LyIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAg
RVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJjfC8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisjZWxzZQor
ICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiLyIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNU
X1RSVUUoRmlsZVBhdGgoIi8vIikuSXNSb290RGlyZWN0b3J5KCkpOworICBFWFBFQ1RfRkFMU0Uo
RmlsZVBhdGgoIiIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRo
KCJcXCIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIveCIp
LklzUm9vdERpcmVjdG9yeSgpKTsKKyNlbmRpZgorfQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8v
IG5hbWVzcGFjZSBpbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3Qu
cHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZmlsdGVyLXVuaXR0
ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRjMGI1YmQ5YTVjZmM1YmZlOGM2OGFmMWI2NDc4OTllMWZlYmRh
NjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3QtZmlsdGVyLXVuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNjM2IEBACisjIS91c3IvYmluL2Vu
diBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3Qg
dGVzdCBmaWx0ZXJzLgorCitBIHVzZXIgY2FuIHNwZWNpZnkgd2hpY2ggdGVzdChzKSBpbiBhIEdv
b2dsZSBUZXN0IHByb2dyYW0gdG8gcnVuIHZpYSBlaXRoZXIKK3RoZSBHVEVTVF9GSUxURVIgZW52
aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlIC0tZ3Rlc3RfZmlsdGVyIGZsYWcuCitUaGlzIHNjcmlw
dCB0ZXN0cyBzdWNoIGZ1bmN0aW9uYWxpdHkgYnkgaW52b2tpbmcKK2dvb2dsZXRlc3QtZmlsdGVy
LXVuaXR0ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aCBHb29nbGUgVGVzdCkgd2l0aCBkaWZm
ZXJlbnQKK2Vudmlyb25tZW50cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdzLgorCitOb3RlIHRoYXQg
dGVzdCBzaGFyZGluZyBtYXkgYWxzbyBpbmZsdWVuY2Ugd2hpY2ggdGVzdHMgYXJlIGZpbHRlcmVk
LiBUaGVyZWZvcmUsCit3ZSB0ZXN0IHRoYXQgaGVyZSBhbHNvLgorIiIiCisKK2ltcG9ydCBvcwor
aW1wb3J0IHJlCitpbXBvcnQgc2V0cworaW1wb3J0IHN5cworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRp
bHMKKworIyBDb25zdGFudHMuCisKKyMgQ2hlY2tzIGlmIHRoaXMgcGxhdGZvcm0gY2FuIHBhc3Mg
ZW1wdHkgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGNoaWxkCisjIHByb2Nlc3Nlcy4gIFdlIHNl
dCBhbiBlbnYgdmFyaWFibGUgdG8gYW4gZW1wdHkgc3RyaW5nIGFuZCBpbnZva2UgYSBweXRob24K
KyMgc2NyaXB0IGluIGEgc3VicHJvY2VzcyB0byBwcmludCB3aGV0aGVyIHRoZSB2YXJpYWJsZSBp
cyBTVElMTCBpbgorIyBvcy5lbnZpcm9uLiAgV2UgdGhlbiB1c2UgJ2V2YWwnIHRvIHBhcnNlIHRo
ZSBjaGlsZCdzIG91dHB1dCBzbyB0aGF0IGFuCisjIGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgdGhl
IGlucHV0IGlzIGFueXRoaW5nIG90aGVyIHRoYW4gJ1RydWUnIG5vciAnRmFsc2UnLgorQ0FOX1BB
U1NfRU1QVFlfRU5WID0gRmFsc2UKK2lmIHN5cy5leGVjdXRhYmxlOgorICBvcy5lbnZpcm9uWydF
TVBUWV9WQVInXSA9ICcnCisgIGNoaWxkID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAor
ICAgICAgW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAnaW1wb3J0IG9zOyBwcmludCBcJ0VNUFRZX1ZB
UlwnIGluIG9zLmVudmlyb24nXSkKKyAgQ0FOX1BBU1NfRU1QVFlfRU5WID0gZXZhbChjaGlsZC5v
dXRwdXQpCisKKworIyBDaGVjayBpZiB0aGlzIHBsYXRmb3JtIGNhbiB1bnNldCBlbnZpcm9ubWVu
dCB2YXJpYWJsZXMgaW4gY2hpbGQgcHJvY2Vzc2VzLgorIyBXZSBzZXQgYW4gZW52IHZhcmlhYmxl
IHRvIGEgbm9uLWVtcHR5IHN0cmluZywgdW5zZXQgaXQsIGFuZCBpbnZva2UKKyMgYSBweXRob24g
c2NyaXB0IGluIGEgc3VicHJvY2VzcyB0byBwcmludCB3aGV0aGVyIHRoZSB2YXJpYWJsZQorIyBp
cyBOTyBMT05HRVIgaW4gb3MuZW52aXJvbi4KKyMgV2UgdXNlICdldmFsJyB0byBwYXJzZSB0aGUg
Y2hpbGQncyBvdXRwdXQgc28gdGhhdCBhbiBleGNlcHRpb24KKyMgaXMgdGhyb3duIGlmIHRoZSBp
bnB1dCBpcyBuZWl0aGVyICdUcnVlJyBub3IgJ0ZhbHNlJy4KK0NBTl9VTlNFVF9FTlYgPSBGYWxz
ZQoraWYgc3lzLmV4ZWN1dGFibGU6CisgIG9zLmVudmlyb25bJ1VOU0VUX1ZBUiddID0gJ1gnCisg
IGRlbCBvcy5lbnZpcm9uWydVTlNFVF9WQVInXQorICBjaGlsZCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
U3VicHJvY2VzcygKKyAgICAgIFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgJ2ltcG9ydCBvczsgcHJp
bnQgXCdVTlNFVF9WQVJcJyBub3QgaW4gb3MuZW52aXJvbicKKyAgICAgIF0pCisgIENBTl9VTlNF
VF9FTlYgPSBldmFsKGNoaWxkLm91dHB1dCkKKworCisjIENoZWNrcyBpZiB3ZSBzaG91bGQgdGVz
dCB3aXRoIGFuIGVtcHR5IGZpbHRlci4gVGhpcyBkb2Vzbid0CisjIG1ha2Ugc2Vuc2Ugb24gcGxh
dGZvcm1zIHRoYXQgY2Fubm90IHBhc3MgZW1wdHkgZW52IHZhcmlhYmxlcyAoV2luMzIpCisjIGFu
ZCBvbiBwbGF0Zm9ybXMgdGhhdCBjYW5ub3QgdW5zZXQgdmFyaWFibGVzIChzaW5jZSB3ZSBjYW5u
b3QgdGVsbAorIyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuICIiIGFuZCBOVUxMIC0tIEJvcmxhbmQg
YW5kIFNvbGFyaXMgPCA1LjEwKQorQ0FOX1RFU1RfRU1QVFlfRklMVEVSID0gKENBTl9QQVNTX0VN
UFRZX0VOViBhbmQgQ0FOX1VOU0VUX0VOVikKKworCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJs
ZSBmb3Igc3BlY2lmeWluZyB0aGUgdGVzdCBmaWx0ZXJzLgorRklMVEVSX0VOVl9WQVIgPSAnR1RF
U1RfRklMVEVSJworCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRlc3Qgc2hhcmRp
bmcuCitUT1RBTF9TSEFSRFNfRU5WX1ZBUiA9ICdHVEVTVF9UT1RBTF9TSEFSRFMnCitTSEFSRF9J
TkRFWF9FTlZfVkFSID0gJ0dURVNUX1NIQVJEX0lOREVYJworU0hBUkRfU1RBVFVTX0ZJTEVfRU5W
X1ZBUiA9ICdHVEVTVF9TSEFSRF9TVEFUVVNfRklMRScKKworIyBUaGUgY29tbWFuZCBsaW5lIGZs
YWcgZm9yIHNwZWNpZnlpbmcgdGhlIHRlc3QgZmlsdGVycy4KK0ZJTFRFUl9GTEFHID0gJ2d0ZXN0
X2ZpbHRlcicKKworIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgZm9yIGluY2x1ZGluZyBkaXNhYmxl
ZCB0ZXN0cy4KK0FMU09fUlVOX0RJU0FCTEVEX1RFU1RTX0ZMQUcgPSAnZ3Rlc3RfYWxzb19ydW5f
ZGlzYWJsZWRfdGVzdHMnCisKKyMgQ29tbWFuZCB0byBydW4gdGhlIGdvb2dsZXRlc3QtZmlsdGVy
LXVuaXR0ZXN0XyBwcm9ncmFtLgorQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4
ZWN1dGFibGVQYXRoKCdnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8nKQorCisjIFJlZ2V4IGZv
ciBkZXRlcm1pbmluZyB3aGV0aGVyIHBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQgaW4g
dGhlIGJpbmFyeS4KK1BBUkFNX1RFU1RfUkVHRVggPSByZS5jb21waWxlKHInL1BhcmFtVGVzdCcp
CisKKyMgUmVnZXggZm9yIHBhcnNpbmcgdGVzdCBjYXNlIG5hbWVzIGZyb20gR29vZ2xlIFRlc3Qn
cyBvdXRwdXQuCitURVNUX0NBU0VfUkVHRVggPSByZS5jb21waWxlKHInXlxbXC0rXF0gXGQrIHRl
c3RzPyBmcm9tIChcdysoL1x3Kyk/KScpCisKKyMgUmVnZXggZm9yIHBhcnNpbmcgdGVzdCBuYW1l
cyBmcm9tIEdvb2dsZSBUZXN0J3Mgb3V0cHV0LgorVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocide
XFtccypSVU5ccypcXS4qXC4oXHcrKC9cdyspPyknKQorCisjIFRoZSBjb21tYW5kIGxpbmUgZmxh
ZyB0byB0ZWxsIEdvb2dsZSBUZXN0IHRvIG91dHB1dCB0aGUgbGlzdCBvZiB0ZXN0cyBpdAorIyB3
aWxsIHJ1bi4KK0xJU1RfVEVTVFNfRkxBRyA9ICctLWd0ZXN0X2xpc3RfdGVzdHMnCisKKyMgSW5k
aWNhdGVzIHdoZXRoZXIgR29vZ2xlIFRlc3Qgc3VwcG9ydHMgZGVhdGggdGVzdHMuCitTVVBQT1JU
U19ERUFUSF9URVNUUyA9ICdIYXNEZWF0aFRlc3QnIGluIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJv
Y2VzcygKKyAgICBbQ09NTUFORCwgTElTVF9URVNUU19GTEFHXSkub3V0cHV0CisKKyMgRnVsbCBu
YW1lcyBvZiBhbGwgdGVzdHMgaW4gZ29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3RzXy4KK1BBUkFN
X1RFU1RTID0gWworICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywKKyAgICAnU2VxUC9QYXJh
bVRlc3QuVGVzdFgvMScsCisgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzAnLAorICAgICdTZXFQ
L1BhcmFtVGVzdC5UZXN0WS8xJywKKyAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFgvMCcsCisgICAg
J1NlcVEvUGFyYW1UZXN0LlRlc3RYLzEnLAorICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WS8wJywK
KyAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFkvMScsCisgICAgXQorCitESVNBQkxFRF9URVNUUyA9
IFsKKyAgICAnQmFyVGVzdC5ESVNBQkxFRF9UZXN0Rm91cicsCisgICAgJ0JhclRlc3QuRElTQUJM
RURfVGVzdEZpdmUnLAorICAgICdCYXpUZXN0LkRJU0FCTEVEX1Rlc3RDJywKKyAgICAnRElTQUJM
RURfRm9vYmFyVGVzdC5UZXN0MScsCisgICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuRElTQUJMRURf
VGVzdDInLAorICAgICdESVNBQkxFRF9Gb29iYXJiYXpUZXN0LlRlc3RBJywKKyAgICBdCisKK2lm
IFNVUFBPUlRTX0RFQVRIX1RFU1RTOgorICBERUFUSF9URVNUUyA9IFsKKyAgICAnSGFzRGVhdGhU
ZXN0LlRlc3QxJywKKyAgICAnSGFzRGVhdGhUZXN0LlRlc3QyJywKKyAgICBdCitlbHNlOgorICBE
RUFUSF9URVNUUyA9IFtdCisKKyMgQWxsIHRoZSBub24tZGlzYWJsZWQgdGVzdHMuCitBQ1RJVkVf
VEVTVFMgPSBbCisgICAgJ0Zvb1Rlc3QuQWJjJywKKyAgICAnRm9vVGVzdC5YeXonLAorCisgICAg
J0JhclRlc3QuVGVzdE9uZScsCisgICAgJ0JhclRlc3QuVGVzdFR3bycsCisgICAgJ0JhclRlc3Qu
VGVzdFRocmVlJywKKworICAgICdCYXpUZXN0LlRlc3RPbmUnLAorICAgICdCYXpUZXN0LlRlc3RB
JywKKyAgICAnQmF6VGVzdC5UZXN0QicsCisgICAgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVT
VFMKKworcGFyYW1fdGVzdHNfcHJlc2VudCA9IE5vbmUKKworIyBVdGlsaXRpZXMuCisKK2Vudmly
b24gPSBvcy5lbnZpcm9uLmNvcHkoKQorCisKK2RlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUp
OgorICAiIiJTZXRzIHRoZSBlbnYgdmFyaWFibGUgdG8gJ3ZhbHVlJzsgdW5zZXRzIGl0IHdoZW4g
J3ZhbHVlJyBpcyBOb25lLiIiIgorCisgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAgIGVudmly
b25bZW52X3Zhcl0gPSB2YWx1ZQorICBlbGlmIGVudl92YXIgaW4gZW52aXJvbjoKKyAgICBkZWwg
ZW52aXJvbltlbnZfdmFyXQorCisKK2RlZiBSdW5BbmRSZXR1cm5PdXRwdXQoYXJncyA9IE5vbmUp
OgorICAiIiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0gYW5kIHJldHVybnMgaXRzIG91dHB1dC4iIiIK
KworICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtDT01NQU5EXSArIChhcmdz
IG9yIFtdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52aXJv
bikub3V0cHV0CisKKworZGVmIFJ1bkFuZEV4dHJhY3RUZXN0TGlzdChhcmdzID0gTm9uZSk6Cisg
ICIiIlJ1bnMgdGhlIHRlc3QgcHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgZXhpdCBjb2RlIGFuZCBh
IGxpc3Qgb2YgdGVzdHMgcnVuLiIiIgorCisgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nl
c3MoW0NPTU1BTkRdICsgKGFyZ3Mgb3IgW10pLCBlbnY9ZW52aXJvbikKKyAgdGVzdHNfcnVuID0g
W10KKyAgdGVzdF9jYXNlID0gJycKKyAgdGVzdCA9ICcnCisgIGZvciBsaW5lIGluIHAub3V0cHV0
LnNwbGl0KCdcbicpOgorICAgIG1hdGNoID0gVEVTVF9DQVNFX1JFR0VYLm1hdGNoKGxpbmUpCisg
ICAgaWYgbWF0Y2ggaXMgbm90IE5vbmU6CisgICAgICB0ZXN0X2Nhc2UgPSBtYXRjaC5ncm91cCgx
KQorICAgIGVsc2U6CisgICAgICBtYXRjaCA9IFRFU1RfUkVHRVgubWF0Y2gobGluZSkKKyAgICAg
IGlmIG1hdGNoIGlzIG5vdCBOb25lOgorICAgICAgICB0ZXN0ID0gbWF0Y2guZ3JvdXAoMSkKKyAg
ICAgICAgdGVzdHNfcnVuLmFwcGVuZCh0ZXN0X2Nhc2UgKyAnLicgKyB0ZXN0KQorICByZXR1cm4g
KHRlc3RzX3J1biwgcC5leGl0X2NvZGUpCisKKworZGVmIEludm9rZVdpdGhNb2RpZmllZEVudihl
eHRyYV9lbnYsIGZ1bmN0aW9uLCAqYXJncywgKiprd2FyZ3MpOgorICAiIiJSdW5zIHRoZSBnaXZl
biBmdW5jdGlvbiBhbmQgYXJndW1lbnRzIGluIGEgbW9kaWZpZWQgZW52aXJvbm1lbnQuIiIiCisg
IHRyeToKKyAgICBvcmlnaW5hbF9lbnYgPSBlbnZpcm9uLmNvcHkoKQorICAgIGVudmlyb24udXBk
YXRlKGV4dHJhX2VudikKKyAgICByZXR1cm4gZnVuY3Rpb24oKmFyZ3MsICoqa3dhcmdzKQorICBm
aW5hbGx5OgorICAgIGVudmlyb24uY2xlYXIoKQorICAgIGVudmlyb24udXBkYXRlKG9yaWdpbmFs
X2VudikKKworCitkZWYgUnVuV2l0aFNoYXJkaW5nKHRvdGFsX3NoYXJkcywgc2hhcmRfaW5kZXgs
IGNvbW1hbmQpOgorICAiIiJSdW5zIGEgdGVzdCBwcm9ncmFtIHNoYXJkIGFuZCByZXR1cm5zIGV4
aXQgY29kZSBhbmQgYSBsaXN0IG9mIHRlc3RzIHJ1bi4iIiIKKworICBleHRyYV9lbnYgPSB7U0hB
UkRfSU5ERVhfRU5WX1ZBUjogc3RyKHNoYXJkX2luZGV4KSwKKyAgICAgICAgICAgICAgIFRPVEFM
X1NIQVJEU19FTlZfVkFSOiBzdHIodG90YWxfc2hhcmRzKX0KKyAgcmV0dXJuIEludm9rZVdpdGhN
b2RpZmllZEVudihleHRyYV9lbnYsIFJ1bkFuZEV4dHJhY3RUZXN0TGlzdCwgY29tbWFuZCkKKwor
IyBUaGUgdW5pdCB0ZXN0LgorCisKK2NsYXNzIEdUZXN0RmlsdGVyVW5pdFRlc3QoZ3Rlc3RfdGVz
dF91dGlscy5UZXN0Q2FzZSk6CisgICIiIlRlc3RzIHRoZSBlbnYgdmFyaWFibGUgb3IgdGhlIGNv
bW1hbmQgbGluZSBmbGFnIHRvIGZpbHRlciB0ZXN0cy4iIiIKKworICAjIFV0aWxpdGllcy4KKwor
ICBkZWYgQXNzZXJ0U2V0RXF1YWwoc2VsZiwgbGhzLCByaHMpOgorICAgICIiIkFzc2VydHMgdGhh
dCB0d28gc2V0cyBhcmUgZXF1YWwuIiIiCisKKyAgICBmb3IgZWxlbSBpbiBsaHM6CisgICAgICBz
ZWxmLmFzc2VydF8oZWxlbSBpbiByaHMsICclcyBpbiAlcycgJSAoZWxlbSwgcmhzKSkKKworICAg
IGZvciBlbGVtIGluIHJoczoKKyAgICAgIHNlbGYuYXNzZXJ0XyhlbGVtIGluIGxocywgJyVzIGlu
ICVzJyAlIChlbGVtLCBsaHMpKQorCisgIGRlZiBBc3NlcnRQYXJ0aXRpb25Jc1ZhbGlkKHNlbGYs
IHNldF92YXIsIGxpc3Rfb2Zfc2V0cyk6CisgICAgIiIiQXNzZXJ0cyB0aGF0IGxpc3Rfb2Zfc2V0
cyBpcyBhIHZhbGlkIHBhcnRpdGlvbiBvZiBzZXRfdmFyLiIiIgorCisgICAgZnVsbF9wYXJ0aXRp
b24gPSBbXQorICAgIGZvciBzbGljZV92YXIgaW4gbGlzdF9vZl9zZXRzOgorICAgICAgZnVsbF9w
YXJ0aXRpb24uZXh0ZW5kKHNsaWNlX3ZhcikKKyAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXRf
dmFyKSwgbGVuKGZ1bGxfcGFydGl0aW9uKSkKKyAgICBzZWxmLmFzc2VydEVxdWFsKHNldHMuU2V0
KHNldF92YXIpLCBzZXRzLlNldChmdWxsX3BhcnRpdGlvbikpCisKKyAgZGVmIEFkanVzdEZvclBh
cmFtZXRlcml6ZWRUZXN0cyhzZWxmLCB0ZXN0c190b19ydW4pOgorICAgICIiIkFkanVzdCB0ZXN0
c190b19ydW4gaW4gY2FzZSB2YWx1ZSBwYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBkaXNhYmxlZC4i
IiIKKworICAgIGdsb2JhbCBwYXJhbV90ZXN0c19wcmVzZW50CisgICAgaWYgbm90IHBhcmFtX3Rl
c3RzX3ByZXNlbnQ6CisgICAgICByZXR1cm4gbGlzdChzZXRzLlNldCh0ZXN0c190b19ydW4pIC0g
c2V0cy5TZXQoUEFSQU1fVEVTVFMpKQorICAgIGVsc2U6CisgICAgICByZXR1cm4gdGVzdHNfdG9f
cnVuCisKKyAgZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBndGVzdF9maWx0ZXIsIHRlc3RzX3RvX3J1
bik6CisgICAgIiIiQ2hlY2tzIHRoYXQgdGhlIGJpbmFyeSBydW5zIGNvcnJlY3Qgc2V0IG9mIHRl
c3RzIGZvciBhIGdpdmVuIGZpbHRlci4iIiIKKworICAgIHRlc3RzX3RvX3J1biA9IHNlbGYuQWRq
dXN0Rm9yUGFyYW1ldGVyaXplZFRlc3RzKHRlc3RzX3RvX3J1bikKKworICAgICMgRmlyc3QsIHRl
c3RzIHVzaW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKworICAgICMgV2luZG93cyByZW1v
dmVzIGVtcHR5IHZhcmlhYmxlcyBmcm9tIHRoZSBlbnZpcm9ubWVudCB3aGVuIHBhc3NpbmcgaXQK
KyAgICAjIHRvIGEgbmV3IHByb2Nlc3MuICBUaGlzIG1lYW5zIGl0IGlzIGltcG9zc2libGUgdG8g
cGFzcyBhbiBlbXB0eSBmaWx0ZXIKKyAgICAjIGludG8gYSBwcm9jZXNzIHVzaW5nIHRoZSBlbnZp
cm9ubWVudCB2YXJpYWJsZS4gIEhvd2V2ZXIsIHdlIGNhbiBzdGlsbAorICAgICMgdGVzdCB0aGUg
Y2FzZSB3aGVuIHRoZSB2YXJpYWJsZSBpcyBub3Qgc3VwcGxpZWQgKGkuZS4sIGd0ZXN0X2ZpbHRl
ciBpcworICAgICMgTm9uZSkuCisgICAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2NDAzCisgICAg
aWYgQ0FOX1RFU1RfRU1QVFlfRklMVEVSIG9yIGd0ZXN0X2ZpbHRlciAhPSAnJzoKKyAgICAgIFNl
dEVudlZhcihGSUxURVJfRU5WX1ZBUiwgZ3Rlc3RfZmlsdGVyKQorICAgICAgdGVzdHNfcnVuID0g
UnVuQW5kRXh0cmFjdFRlc3RMaXN0KClbMF0KKyAgICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZB
UiwgTm9uZSkKKyAgICAgIHNlbGYuQXNzZXJ0U2V0RXF1YWwodGVzdHNfcnVuLCB0ZXN0c190b19y
dW4pCisgICAgIyBweWxpbnQ6IGVuYWJsZS1tc2c9QzY0MDMKKworICAgICMgTmV4dCwgdGVzdHMg
dXNpbmcgdGhlIGNvbW1hbmQgbGluZSBmbGFnLgorCisgICAgaWYgZ3Rlc3RfZmlsdGVyIGlzIE5v
bmU6CisgICAgICBhcmdzID0gW10KKyAgICBlbHNlOgorICAgICAgYXJncyA9IFsnLS0lcz0lcycg
JSAoRklMVEVSX0ZMQUcsIGd0ZXN0X2ZpbHRlcildCisKKyAgICB0ZXN0c19ydW4gPSBSdW5BbmRF
eHRyYWN0VGVzdExpc3QoYXJncylbMF0KKyAgICBzZWxmLkFzc2VydFNldEVxdWFsKHRlc3RzX3J1
biwgdGVzdHNfdG9fcnVuKQorCisgIGRlZiBSdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoc2VsZiwg
Z3Rlc3RfZmlsdGVyLCB0b3RhbF9zaGFyZHMsIHRlc3RzX3RvX3J1biwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhcmdzPU5vbmUsIGNoZWNrX2V4aXRfMD1GYWxzZSk6CisgICAgIiIi
Q2hlY2tzIHRoYXQgYmluYXJ5IHJ1bnMgY29ycmVjdCB0ZXN0cyBmb3IgdGhlIGdpdmVuIGZpbHRl
ciBhbmQgc2hhcmQuCisKKyAgICBSdW5zIGFsbCBzaGFyZHMgb2YgZ29vZ2xldGVzdC1maWx0ZXIt
dW5pdHRlc3RfIHdpdGggdGhlIGdpdmVuIGZpbHRlciwgYW5kCisgICAgdmVyaWZpZXMgdGhhdCB0
aGUgcmlnaHQgc2V0IG9mIHRlc3RzIHdlcmUgcnVuLiBUaGUgdW5pb24gb2YgdGVzdHMgcnVuCisg
ICAgb24gZWFjaCBzaGFyZCBzaG91bGQgYmUgaWRlbnRpY2FsIHRvIHRlc3RzX3RvX3J1biwgd2l0
aG91dCBkdXBsaWNhdGVzLgorICAgIElmIGNoZWNrX2V4aXRfMCwgLgorCisgICAgQXJnczoKKyAg
ICAgIGd0ZXN0X2ZpbHRlcjogQSBmaWx0ZXIgdG8gYXBwbHkgdG8gdGhlIHRlc3RzLgorICAgICAg
dG90YWxfc2hhcmRzOiBBIHRvdGFsIG51bWJlciBvZiBzaGFyZHMgdG8gc3BsaXQgdGVzdCBydW4g
aW50by4KKyAgICAgIHRlc3RzX3RvX3J1bjogQSBzZXQgb2YgdGVzdHMgZXhwZWN0ZWQgdG8gcnVu
LgorICAgICAgYXJncyAgIDogICAgICBBcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgdG8gdGhlIHRl
c3QgYmluYXJ5LgorICAgICAgY2hlY2tfZXhpdF8wOiBXaGVuIHNldCB0byBhIHRydWUgdmFsdWUs
IG1ha2Ugc3VyZSB0aGF0IGFsbCBzaGFyZHMKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAu
CisgICAgIiIiCisKKyAgICB0ZXN0c190b19ydW4gPSBzZWxmLkFkanVzdEZvclBhcmFtZXRlcml6
ZWRUZXN0cyh0ZXN0c190b19ydW4pCisKKyAgICAjIFdpbmRvd3MgcmVtb3ZlcyBlbXB0eSB2YXJp
YWJsZXMgZnJvbSB0aGUgZW52aXJvbm1lbnQgd2hlbiBwYXNzaW5nIGl0CisgICAgIyB0byBhIG5l
dyBwcm9jZXNzLiAgVGhpcyBtZWFucyBpdCBpcyBpbXBvc3NpYmxlIHRvIHBhc3MgYW4gZW1wdHkg
ZmlsdGVyCisgICAgIyBpbnRvIGEgcHJvY2VzcyB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFi
bGUuICBIb3dldmVyLCB3ZSBjYW4gc3RpbGwKKyAgICAjIHRlc3QgdGhlIGNhc2Ugd2hlbiB0aGUg
dmFyaWFibGUgaXMgbm90IHN1cHBsaWVkIChpLmUuLCBndGVzdF9maWx0ZXIgaXMKKyAgICAjIE5v
bmUpLgorICAgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwMworICAgIGlmIENBTl9URVNUX0VN
UFRZX0ZJTFRFUiBvciBndGVzdF9maWx0ZXIgIT0gJyc6CisgICAgICBTZXRFbnZWYXIoRklMVEVS
X0VOVl9WQVIsIGd0ZXN0X2ZpbHRlcikKKyAgICAgIHBhcnRpdGlvbiA9IFtdCisgICAgICBmb3Ig
aSBpbiByYW5nZSgwLCB0b3RhbF9zaGFyZHMpOgorICAgICAgICAodGVzdHNfcnVuLCBleGl0X2Nv
ZGUpID0gUnVuV2l0aFNoYXJkaW5nKHRvdGFsX3NoYXJkcywgaSwgYXJncykKKyAgICAgICAgaWYg
Y2hlY2tfZXhpdF8wOgorICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZXhpdF9jb2RlKQor
ICAgICAgICBwYXJ0aXRpb24uYXBwZW5kKHRlc3RzX3J1bikKKworICAgICAgc2VsZi5Bc3NlcnRQ
YXJ0aXRpb25Jc1ZhbGlkKHRlc3RzX3RvX3J1biwgcGFydGl0aW9uKQorICAgICAgU2V0RW52VmFy
KEZJTFRFUl9FTlZfVkFSLCBOb25lKQorICAgICMgcHlsaW50OiBlbmFibGUtbXNnPUM2NDAzCisK
KyAgZGVmIFJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoc2VsZiwgZ3Rlc3RfZmlsdGVyLCB0
ZXN0c190b19ydW4pOgorICAgICIiIkNoZWNrcyB0aGF0IHRoZSBiaW5hcnkgcnVucyBjb3JyZWN0
IHNldCBvZiB0ZXN0cyBmb3IgdGhlIGdpdmVuIGZpbHRlci4KKworICAgIFJ1bnMgZ29vZ2xldGVz
dC1maWx0ZXItdW5pdHRlc3RfIHdpdGggdGhlIGdpdmVuIGZpbHRlciwgYW5kIGVuYWJsZXMKKyAg
ICBkaXNhYmxlZCB0ZXN0cy4gVmVyaWZpZXMgdGhhdCB0aGUgcmlnaHQgc2V0IG9mIHRlc3RzIHdl
cmUgcnVuLgorCisgICAgQXJnczoKKyAgICAgIGd0ZXN0X2ZpbHRlcjogQSBmaWx0ZXIgdG8gYXBw
bHkgdG8gdGhlIHRlc3RzLgorICAgICAgdGVzdHNfdG9fcnVuOiBBIHNldCBvZiB0ZXN0cyBleHBl
Y3RlZCB0byBydW4uCisgICAgIiIiCisKKyAgICB0ZXN0c190b19ydW4gPSBzZWxmLkFkanVzdEZv
clBhcmFtZXRlcml6ZWRUZXN0cyh0ZXN0c190b19ydW4pCisKKyAgICAjIENvbnN0cnVjdCB0aGUg
Y29tbWFuZCBsaW5lLgorICAgIGFyZ3MgPSBbJy0tJXMnICUgQUxTT19SVU5fRElTQUJMRURfVEVT
VFNfRkxBR10KKyAgICBpZiBndGVzdF9maWx0ZXIgaXMgbm90IE5vbmU6CisgICAgICBhcmdzLmFw
cGVuZCgnLS0lcz0lcycgJSAoRklMVEVSX0ZMQUcsIGd0ZXN0X2ZpbHRlcikpCisKKyAgICB0ZXN0
c19ydW4gPSBSdW5BbmRFeHRyYWN0VGVzdExpc3QoYXJncylbMF0KKyAgICBzZWxmLkFzc2VydFNl
dEVxdWFsKHRlc3RzX3J1biwgdGVzdHNfdG9fcnVuKQorCisgIGRlZiBzZXRVcChzZWxmKToKKyAg
ICAiIiJTZXRzIHVwIHRlc3QgY2FzZS4KKworICAgIERldGVybWluZXMgd2hldGhlciB2YWx1ZS1w
YXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBlbmFibGVkIGluIHRoZSBiaW5hcnkgYW5kCisgICAgc2V0
cyB0aGUgZmxhZ3MgYWNjb3JkaW5nbHkuCisgICAgIiIiCisKKyAgICBnbG9iYWwgcGFyYW1fdGVz
dHNfcHJlc2VudAorICAgIGlmIHBhcmFtX3Rlc3RzX3ByZXNlbnQgaXMgTm9uZToKKyAgICAgIHBh
cmFtX3Rlc3RzX3ByZXNlbnQgPSBQQVJBTV9URVNUX1JFR0VYLnNlYXJjaCgKKyAgICAgICAgICBS
dW5BbmRSZXR1cm5PdXRwdXQoKSkgaXMgbm90IE5vbmUKKworICBkZWYgdGVzdERlZmF1bHRCZWhh
dmlvcihzZWxmKToKKyAgICAiIiJUZXN0cyB0aGUgYmVoYXZpb3Igb2Ygbm90IHNwZWNpZnlpbmcg
dGhlIGZpbHRlci4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KE5vbmUsIEFDVElWRV9URVNU
UykKKworICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcldpdGhTaGFyZHMoc2VsZik6CisgICAgIiIi
VGVzdHMgdGhlIGJlaGF2aW9yIHdpdGhvdXQgdGhlIGZpbHRlciwgd2l0aCBzaGFyZGluZyBlbmFi
bGVkLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgMSwgQUNU
SVZFX1RFU1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKE5vbmUsIDIsIEFD
VElWRV9URVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhOb25lLCBsZW4o
QUNUSVZFX1RFU1RTKSAtIDEsIEFDVElWRV9URVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdp
dGhTaGFyZGluZyhOb25lLCBsZW4oQUNUSVZFX1RFU1RTKSwgQUNUSVZFX1RFU1RTKQorICAgIHNl
bGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKE5vbmUsIGxlbihBQ1RJVkVfVEVTVFMpICsgMSwg
QUNUSVZFX1RFU1RTKQorCisgIGRlZiB0ZXN0RW1wdHlGaWx0ZXIoc2VsZik6CisgICAgIiIiVGVz
dHMgYW4gZW1wdHkgZmlsdGVyLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJycsIFtdKQor
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKCcnLCAxLCBbXSkKKyAgICBzZWxmLlJ1
bkFuZFZlcmlmeVdpdGhTaGFyZGluZygnJywgMiwgW10pCisKKyAgZGVmIHRlc3RCYWRGaWx0ZXIo
c2VsZik6CisgICAgIiIiVGVzdHMgYSBmaWx0ZXIgdGhhdCBtYXRjaGVzIG5vdGhpbmcuIiIiCisK
KyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnQmFkRmlsdGVyJywgW10pCisgICAgc2VsZi5SdW5BbmRW
ZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdCYWRGaWx0ZXInLCBbXSkKKworICBkZWYgdGVzdEZ1bGxO
YW1lKHNlbGYpOgorICAgICIiIlRlc3RzIGZpbHRlcmluZyBieSBmdWxsIG5hbWUuIiIiCisKKyAg
ICBzZWxmLlJ1bkFuZFZlcmlmeSgnRm9vVGVzdC5YeXonLCBbJ0Zvb1Rlc3QuWHl6J10pCisgICAg
c2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdGb29UZXN0Llh5eicsIFsnRm9vVGVz
dC5YeXonXSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZygnRm9vVGVzdC5YeXon
LCA1LCBbJ0Zvb1Rlc3QuWHl6J10pCisKKyAgZGVmIHRlc3RVbml2ZXJzYWxGaWx0ZXJzKHNlbGYp
OgorICAgICIiIlRlc3RzIGZpbHRlcnMgdGhhdCBtYXRjaCBldmVyeXRoaW5nLiIiIgorCisgICAg
c2VsZi5SdW5BbmRWZXJpZnkoJyonLCBBQ1RJVkVfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRWZXJp
ZnkoJyouKicsIEFDVElWRV9URVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGlu
ZygnKi4qJywgbGVuKEFDVElWRV9URVNUUykgLSAzLCBBQ1RJVkVfVEVTVFMpCisgICAgc2VsZi5S
dW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCcqJywgQUNUSVZFX1RFU1RTICsgRElTQUJMRURf
VEVTVFMpCisgICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCcqLionLCBBQ1RJ
VkVfVEVTVFMgKyBESVNBQkxFRF9URVNUUykKKworICBkZWYgdGVzdEZpbHRlckJ5VGVzdENhc2Uo
c2VsZik6CisgICAgIiIiVGVzdHMgZmlsdGVyaW5nIGJ5IHRlc3QgY2FzZSBuYW1lLiIiIgorCisg
ICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0Zvb1Rlc3QuKicsIFsnRm9vVGVzdC5BYmMnLCAnRm9vVGVz
dC5YeXonXSkKKworICAgIEJBWl9URVNUUyA9IFsnQmF6VGVzdC5UZXN0T25lJywgJ0JhelRlc3Qu
VGVzdEEnLCAnQmF6VGVzdC5UZXN0QiddCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0JhelRlc3Qu
KicsIEJBWl9URVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0Jh
elRlc3QuKicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJBWl9URVNU
UyArIFsnQmF6VGVzdC5ESVNBQkxFRF9UZXN0QyddKQorCisgIGRlZiB0ZXN0RmlsdGVyQnlUZXN0
KHNlbGYpOgorICAgICIiIlRlc3RzIGZpbHRlcmluZyBieSB0ZXN0IG5hbWUuIiIiCisKKyAgICBz
ZWxmLlJ1bkFuZFZlcmlmeSgnKi5UZXN0T25lJywgWydCYXJUZXN0LlRlc3RPbmUnLCAnQmF6VGVz
dC5UZXN0T25lJ10pCisKKyAgZGVmIHRlc3RGaWx0ZXJEaXNhYmxlZFRlc3RzKHNlbGYpOgorICAg
ICIiIlNlbGVjdCBvbmx5IHRoZSBkaXNhYmxlZCB0ZXN0cyB0byBydW4uIiIiCisKKyAgICBzZWxm
LlJ1bkFuZFZlcmlmeSgnRElTQUJMRURfRm9vYmFyVGVzdC5UZXN0MScsIFtdKQorICAgIHNlbGYu
UnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnRElTQUJMRURfRm9vYmFyVGVzdC5UZXN0MScs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnRElTQUJMRURfRm9vYmFy
VGVzdC5UZXN0MSddKQorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJypESVNBQkxFRF8qJywgW10p
CisgICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCcqRElTQUJMRURfKicsIERJ
U0FCTEVEX1RFU1RTKQorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyouRElTQUJMRURfKicsIFtd
KQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnKi5ESVNBQkxFRF8qJywg
WworICAgICAgICAnQmFyVGVzdC5ESVNBQkxFRF9UZXN0Rm91cicsCisgICAgICAgICdCYXJUZXN0
LkRJU0FCTEVEX1Rlc3RGaXZlJywKKyAgICAgICAgJ0JhelRlc3QuRElTQUJMRURfVGVzdEMnLAor
ICAgICAgICAnRElTQUJMRURfRm9vYmFyVGVzdC5ESVNBQkxFRF9UZXN0MicsCisgICAgICAgIF0p
CisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnRElTQUJMRURfKicsIFtdKQorICAgIHNlbGYuUnVu
QW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnRElTQUJMRURfKicsIFsKKyAgICAgICAgJ0RJU0FC
TEVEX0Zvb2JhclRlc3QuVGVzdDEnLAorICAgICAgICAnRElTQUJMRURfRm9vYmFyVGVzdC5ESVNB
QkxFRF9UZXN0MicsCisgICAgICAgICdESVNBQkxFRF9Gb29iYXJiYXpUZXN0LlRlc3RBJywKKyAg
ICAgICAgXSkKKworICBkZWYgdGVzdFdpbGRjYXJkSW5UZXN0Q2FzZU5hbWUoc2VsZik6CisgICAg
IiIiVGVzdHMgdXNpbmcgd2lsZGNhcmQgaW4gdGhlIHRlc3QgY2FzZSBuYW1lLiIiIgorCisgICAg
c2VsZi5SdW5BbmRWZXJpZnkoJyphKi4qJywgWworICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywK
KyAgICAgICAgJ0JhclRlc3QuVGVzdFR3bycsCisgICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScs
CisKKyAgICAgICAgJ0JhelRlc3QuVGVzdE9uZScsCisgICAgICAgICdCYXpUZXN0LlRlc3RBJywK
KyAgICAgICAgJ0JhelRlc3QuVGVzdEInLCBdICsgREVBVEhfVEVTVFMgKyBQQVJBTV9URVNUUykK
KworICBkZWYgdGVzdFdpbGRjYXJkSW5UZXN0TmFtZShzZWxmKToKKyAgICAiIiJUZXN0cyB1c2lu
ZyB3aWxkY2FyZCBpbiB0aGUgdGVzdCBuYW1lLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnko
JyouKkEqJywgWydGb29UZXN0LkFiYycsICdCYXpUZXN0LlRlc3RBJ10pCisKKyAgZGVmIHRlc3RG
aWx0ZXJXaXRob3V0RG90KHNlbGYpOgorICAgICIiIlRlc3RzIGEgZmlsdGVyIHRoYXQgaGFzIG5v
ICcuJyBpbiBpdC4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqeionLCBbCisgICAgICAg
ICdGb29UZXN0Llh5eicsCisKKyAgICAgICAgJ0JhelRlc3QuVGVzdE9uZScsCisgICAgICAgICdC
YXpUZXN0LlRlc3RBJywKKyAgICAgICAgJ0JhelRlc3QuVGVzdEInLAorICAgICAgICBdKQorCisg
IGRlZiB0ZXN0VHdvUGF0dGVybnMoc2VsZik6CisgICAgIiIiVGVzdHMgZmlsdGVycyB0aGF0IGNv
bnNpc3Qgb2YgdHdvIHBhdHRlcm5zLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0Zvbyou
KjoqQSonLCBbCisgICAgICAgICdGb29UZXN0LkFiYycsCisgICAgICAgICdGb29UZXN0Llh5eics
CisKKyAgICAgICAgJ0JhelRlc3QuVGVzdEEnLAorICAgICAgICBdKQorCisgICAgIyBBbiBlbXB0
eSBwYXR0ZXJuICsgYSBub24tZW1wdHkgb25lCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJzoqQSon
LCBbJ0Zvb1Rlc3QuQWJjJywgJ0JhelRlc3QuVGVzdEEnXSkKKworICBkZWYgdGVzdFRocmVlUGF0
dGVybnMoc2VsZik6CisgICAgIiIiVGVzdHMgZmlsdGVycyB0aGF0IGNvbnNpc3Qgb2YgdGhyZWUg
cGF0dGVybnMuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKm9vKjoqQSo6Kk9uZScsIFsK
KyAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKKyAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKKworICAgICAg
ICAnQmFyVGVzdC5UZXN0T25lJywKKworICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKKyAgICAg
ICAgJ0JhelRlc3QuVGVzdEEnLAorICAgICAgICBdKQorCisgICAgIyBUaGUgMm5kIHBhdHRlcm4g
aXMgZW1wdHkuCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJypvbyo6OipPbmUnLCBbCisgICAgICAg
ICdGb29UZXN0LkFiYycsCisgICAgICAgICdGb29UZXN0Llh5eicsCisKKyAgICAgICAgJ0JhclRl
c3QuVGVzdE9uZScsCisKKyAgICAgICAgJ0JhelRlc3QuVGVzdE9uZScsCisgICAgICAgIF0pCisK
KyAgICAjIFRoZSBsYXN0IDIgcGF0dGVybnMgYXJlIGVtcHR5LgorICAgIHNlbGYuUnVuQW5kVmVy
aWZ5KCcqb28qOjonLCBbCisgICAgICAgICdGb29UZXN0LkFiYycsCisgICAgICAgICdGb29UZXN0
Llh5eicsCisgICAgICAgIF0pCisKKyAgZGVmIHRlc3ROZWdhdGl2ZUZpbHRlcnMoc2VsZik6Cisg
ICAgc2VsZi5SdW5BbmRWZXJpZnkoJyotQmF6VGVzdC5UZXN0T25lJywgWworICAgICAgICAnRm9v
VGVzdC5BYmMnLAorICAgICAgICAnRm9vVGVzdC5YeXonLAorCisgICAgICAgICdCYXJUZXN0LlRl
c3RPbmUnLAorICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKKyAgICAgICAgJ0JhclRlc3QuVGVz
dFRocmVlJywKKworICAgICAgICAnQmF6VGVzdC5UZXN0QScsCisgICAgICAgICdCYXpUZXN0LlRl
c3RCJywKKyAgICAgICAgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMpCisKKyAgICBzZWxm
LlJ1bkFuZFZlcmlmeSgnKi1Gb29UZXN0LkFiYzpCYXpUZXN0LionLCBbCisgICAgICAgICdGb29U
ZXN0Llh5eicsCisKKyAgICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCisgICAgICAgICdCYXJUZXN0
LlRlc3RUd28nLAorICAgICAgICAnQmFyVGVzdC5UZXN0VGhyZWUnLAorICAgICAgICBdICsgREVB
VEhfVEVTVFMgKyBQQVJBTV9URVNUUykKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdCYXJUZXN0
LiotQmFyVGVzdC5UZXN0T25lJywgWworICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKKyAgICAg
ICAgJ0JhclRlc3QuVGVzdFRocmVlJywKKyAgICAgICAgXSkKKworICAgICMgVGVzdHMgd2l0aG91
dCBsZWFkaW5nICcqJy4KKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnLUZvb1Rlc3QuQWJjOkZvb1Rl
c3QuWHl6OkJhelRlc3QuKicsIFsKKyAgICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCisgICAgICAg
ICdCYXJUZXN0LlRlc3RUd28nLAorICAgICAgICAnQmFyVGVzdC5UZXN0VGhyZWUnLAorICAgICAg
ICBdICsgREVBVEhfVEVTVFMgKyBQQVJBTV9URVNUUykKKworICAgICMgVmFsdWUgcGFyYW1ldGVy
aXplZCB0ZXN0cy4KKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi8qJywgUEFSQU1fVEVTVFMpCisK
KyAgICAjIFZhbHVlIHBhcmFtZXRlcml6ZWQgdGVzdHMgZmlsdGVyaW5nIGJ5IHRoZSBzZXF1ZW5j
ZSBuYW1lLgorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdTZXFQLyonLCBbCisgICAgICAgICdTZXFQ
L1BhcmFtVGVzdC5UZXN0WC8wJywKKyAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzEnLAor
ICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMCcsCisgICAgICAgICdTZXFQL1BhcmFtVGVz
dC5UZXN0WS8xJywKKyAgICAgICAgXSkKKworICAgICMgVmFsdWUgcGFyYW1ldGVyaXplZCB0ZXN0
cyBmaWx0ZXJpbmcgYnkgdGhlIHRlc3QgbmFtZS4KKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi8w
JywgWworICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMCcsCisgICAgICAgICdTZXFQL1Bh
cmFtVGVzdC5UZXN0WS8wJywKKyAgICAgICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RYLzAnLAorICAg
ICAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFkvMCcsCisgICAgICAgIF0pCisKKyAgZGVmIHRlc3RG
bGFnT3ZlcnJpZGVzRW52VmFyKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgdGhlIGZpbHRlciBm
bGFnIG92ZXJyaWRlcyB0aGUgZmlsdGVyaW5nIGVudi4gdmFyaWFibGUuIiIiCisKKyAgICBTZXRF
bnZWYXIoRklMVEVSX0VOVl9WQVIsICdGb28qJykKKyAgICBhcmdzID0gWyctLSVzPSVzJyAlIChG
SUxURVJfRkxBRywgJypPbmUnKV0KKyAgICB0ZXN0c19ydW4gPSBSdW5BbmRFeHRyYWN0VGVzdExp
c3QoYXJncylbMF0KKyAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIE5vbmUpCisKKyAgICBz
ZWxmLkFzc2VydFNldEVxdWFsKHRlc3RzX3J1biwgWydCYXJUZXN0LlRlc3RPbmUnLCAnQmF6VGVz
dC5UZXN0T25lJ10pCisKKyAgZGVmIHRlc3RTaGFyZFN0YXR1c0ZpbGVJc0NyZWF0ZWQoc2VsZik6
CisgICAgIiIiVGVzdHMgdGhhdCB0aGUgc2hhcmQgZmlsZSBpcyBjcmVhdGVkIGlmIHNwZWNpZmll
ZCBpbiB0aGUgZW52aXJvbm1lbnQuIiIiCisKKyAgICBzaGFyZF9zdGF0dXNfZmlsZSA9IG9zLnBh
dGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnc2hhcmRfc3RhdHVzX2ZpbGUnKQorICAgIHNlbGYuYXNzZXJ0
Xyhub3Qgb3MucGF0aC5leGlzdHMoc2hhcmRfc3RhdHVzX2ZpbGUpKQorCisgICAgZXh0cmFfZW52
ID0ge1NIQVJEX1NUQVRVU19GSUxFX0VOVl9WQVI6IHNoYXJkX3N0YXR1c19maWxlfQorICAgIHRy
eToKKyAgICAgIEludm9rZVdpdGhNb2RpZmllZEVudihleHRyYV9lbnYsIFJ1bkFuZFJldHVybk91
dHB1dCkKKyAgICBmaW5hbGx5OgorICAgICAgc2VsZi5hc3NlcnRfKG9zLnBhdGguZXhpc3RzKHNo
YXJkX3N0YXR1c19maWxlKSkKKyAgICAgIG9zLnJlbW92ZShzaGFyZF9zdGF0dXNfZmlsZSkKKwor
ICBkZWYgdGVzdFNoYXJkU3RhdHVzRmlsZUlzQ3JlYXRlZFdpdGhMaXN0VGVzdHMoc2VsZik6Cisg
ICAgIiIiVGVzdHMgdGhhdCB0aGUgc2hhcmQgZmlsZSBpcyBjcmVhdGVkIHdpdGggdGhlICJsaXN0
X3Rlc3RzIiBmbGFnLiIiIgorCisgICAgc2hhcmRfc3RhdHVzX2ZpbGUgPSBvcy5wYXRoLmpvaW4o
Z3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3NoYXJkX3N0YXR1c19maWxlMicpCisgICAgc2VsZi5hc3NlcnRfKG5vdCBv
cy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkpCisKKyAgICBleHRyYV9lbnYgPSB7U0hB
UkRfU1RBVFVTX0ZJTEVfRU5WX1ZBUjogc2hhcmRfc3RhdHVzX2ZpbGV9CisgICAgdHJ5OgorICAg
ICAgb3V0cHV0ID0gSW52b2tlV2l0aE1vZGlmaWVkRW52KGV4dHJhX2VudiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSdW5BbmRSZXR1cm5PdXRwdXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgW0xJU1RfVEVTVFNfRkxBR10pCisgICAgZmluYWxs
eToKKyAgICAgICMgVGhpcyBhc3NlcnRpb24gZW5zdXJlcyB0aGF0IEdvb2dsZSBUZXN0IGVudW1l
cmF0ZWQgdGhlIHRlc3RzIGFzCisgICAgICAjIG9wcG9zZWQgdG8gcnVubmluZyB0aGVtLgorICAg
ICAgc2VsZi5hc3NlcnRfKCdbPT09PT09PT09PV0nIG5vdCBpbiBvdXRwdXQsCisgICAgICAgICAg
ICAgICAgICAgJ1VuZXhwZWN0ZWQgb3V0cHV0IGR1cmluZyB0ZXN0IGVudW1lcmF0aW9uLlxuJwor
ICAgICAgICAgICAgICAgICAgICdQbGVhc2UgZW5zdXJlIHRoYXQgTElTVF9URVNUU19GTEFHIGlz
IGFzc2lnbmVkIHRoZVxuJworICAgICAgICAgICAgICAgICAgICdjb3JyZWN0IGZsYWcgdmFsdWUg
Zm9yIGxpc3RpbmcgR29vZ2xlIFRlc3QgdGVzdHMuJykKKworICAgICAgc2VsZi5hc3NlcnRfKG9z
LnBhdGguZXhpc3RzKHNoYXJkX3N0YXR1c19maWxlKSkKKyAgICAgIG9zLnJlbW92ZShzaGFyZF9z
dGF0dXNfZmlsZSkKKworICBpZiBTVVBQT1JUU19ERUFUSF9URVNUUzoKKyAgICBkZWYgdGVzdFNo
YXJkaW5nV29ya3NXaXRoRGVhdGhUZXN0cyhzZWxmKToKKyAgICAgICIiIlRlc3RzIGludGVncmF0
aW9uIHdpdGggZGVhdGggdGVzdHMgYW5kIHNoYXJkaW5nLiIiIgorCisgICAgICBndGVzdF9maWx0
ZXIgPSAnSGFzRGVhdGhUZXN0Lio6U2VxUC8qJworICAgICAgZXhwZWN0ZWRfdGVzdHMgPSBbCisg
ICAgICAgICAgJ0hhc0RlYXRoVGVzdC5UZXN0MScsCisgICAgICAgICAgJ0hhc0RlYXRoVGVzdC5U
ZXN0MicsCisKKyAgICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMCcsCisgICAgICAgICAg
J1NlcVAvUGFyYW1UZXN0LlRlc3RYLzEnLAorICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0
WS8wJywKKyAgICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMScsCisgICAgICAgICAgXQor
CisgICAgICBmb3IgZmxhZyBpbiBbJy0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZT10aHJlYWRzYWZl
JywKKyAgICAgICAgICAgICAgICAgICAnLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlPWZhc3QnXToK
KyAgICAgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoZ3Rlc3RfZmlsdGVyLCAzLCBl
eHBlY3RlZF90ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hl
Y2tfZXhpdF8wPVRydWUsIGFyZ3M9W2ZsYWddKQorICAgICAgICBzZWxmLlJ1bkFuZFZlcmlmeVdp
dGhTaGFyZGluZyhndGVzdF9maWx0ZXIsIDUsIGV4cGVjdGVkX3Rlc3RzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19leGl0XzA9VHJ1ZSwgYXJncz1bZmxhZ10p
CisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZmls
dGVyLXVuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVz
dC1maWx0ZXItdW5pdHRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzMzViNjAzOTFkMWQ0NjhhNDExNjFi
MzhjMTRlY2NiZjFkMTM4MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0Xy5jYwpAQCAtMCwwICsxLDEzNyBA
QAorLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisv
LyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIFVu
aXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QgdGVzdCBmaWx0ZXJzLgorLy8KKy8vIEEgdXNlciBjYW4g
c3BlY2lmeSB3aGljaCB0ZXN0KHMpIGluIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSB0byBydW4gdmlh
CisvLyBlaXRoZXIgdGhlIEdURVNUX0ZJTFRFUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUg
LS1ndGVzdF9maWx0ZXIKKy8vIGZsYWcuICBUaGlzIGlzIHVzZWQgZm9yIHRlc3Rpbmcgc3VjaCBm
dW5jdGlvbmFsaXR5LgorLy8KKy8vIFRoZSBwcm9ncmFtIHdpbGwgYmUgaW52b2tlZCBmcm9tIGEg
UHl0aG9uIHVuaXQgdGVzdC4gIERvbid0IHJ1biBpdAorLy8gZGlyZWN0bHkuCisKKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCisvLyBUZXN0IGNhc2UgRm9vVGVzdC4K
KworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK1RFU1RfRihG
b29UZXN0LCBBYmMpIHsKK30KKworVEVTVF9GKEZvb1Rlc3QsIFh5eikgeworICBGQUlMKCkgPDwg
IkV4cGVjdGVkIGZhaWx1cmUuIjsKK30KKworLy8gVGVzdCBjYXNlIEJhclRlc3QuCisKK1RFU1Qo
QmFyVGVzdCwgVGVzdE9uZSkgeworfQorCitURVNUKEJhclRlc3QsIFRlc3RUd28pIHsKK30KKwor
VEVTVChCYXJUZXN0LCBUZXN0VGhyZWUpIHsKK30KKworVEVTVChCYXJUZXN0LCBESVNBQkxFRF9U
ZXN0Rm91cikgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKK30KKworVEVTVChC
YXJUZXN0LCBESVNBQkxFRF9UZXN0Rml2ZSkgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1
cmUuIjsKK30KKworLy8gVGVzdCBjYXNlIEJhelRlc3QuCisKK1RFU1QoQmF6VGVzdCwgVGVzdE9u
ZSkgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKK30KKworVEVTVChCYXpUZXN0
LCBUZXN0QSkgeworfQorCitURVNUKEJhelRlc3QsIFRlc3RCKSB7Cit9CisKK1RFU1QoQmF6VGVz
dCwgRElTQUJMRURfVGVzdEMpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9
CisKKy8vIFRlc3QgY2FzZSBIYXNEZWF0aFRlc3QKKworVEVTVChIYXNEZWF0aFRlc3QsIFRlc3Qx
KSB7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoZXhpdCgxKSwgIi4qIik7Cit9CisKKy8v
IFdlIG5lZWQgYXQgbGVhc3QgdHdvIGRlYXRoIHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBh
bGwgZGVhdGggdGVzdHMKKy8vIGFyZW4ndCBvbiB0aGUgZmlyc3Qgc2hhcmQuCitURVNUKEhhc0Rl
YXRoVGVzdCwgVGVzdDIpIHsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChleGl0KDEpLCAi
LioiKTsKK30KKworLy8gVGVzdCBjYXNlIEZvb2JhclRlc3QKKworVEVTVChESVNBQkxFRF9Gb29i
YXJUZXN0LCBUZXN0MSkgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKK30KKwor
VEVTVChESVNBQkxFRF9Gb29iYXJUZXN0LCBESVNBQkxFRF9UZXN0MikgeworICBGQUlMKCkgPDwg
IkV4cGVjdGVkIGZhaWx1cmUuIjsKK30KKworLy8gVGVzdCBjYXNlIEZvb2JhcmJhelRlc3QKKwor
VEVTVChESVNBQkxFRF9Gb29iYXJiYXpUZXN0LCBUZXN0QSkgeworICBGQUlMKCkgPDwgIkV4cGVj
dGVkIGZhaWx1cmUuIjsKK30KKworY2xhc3MgUGFyYW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3RXaXRoUGFyYW08aW50PiB7Cit9OworCitURVNUX1AoUGFyYW1UZXN0LCBUZXN0WCkgeworfQor
CitURVNUX1AoUGFyYW1UZXN0LCBUZXN0WSkgeworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0Vf
UChTZXFQLCBQYXJhbVRlc3QsIHRlc3Rpbmc6OlZhbHVlcygxLCAyKSk7CitJTlNUQU5USUFURV9U
RVNUX0NBU0VfUChTZXFRLCBQYXJhbVRlc3QsIHRlc3Rpbmc6OlZhbHVlcyg1LCA2KSk7CisKK30g
IC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgOjp0
ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgcmV0dXJuIFJVTl9BTExf
VEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC1qc29uLW91dGZpbGVzLXRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3QtanNvbi1vdXRmaWxlcy10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5OWJlNDhl
OGFjMzY1MDllZDMyZWEyZmI4ZTRmYTFlYTdmYzgzNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtanNvbi1vdXRmaWxlcy10ZXN0LnB5
CkBAIC0wLDAgKzEsMTYyIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IDIw
MTgsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisj
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisiIiJVbml0IHRlc3QgZm9yIHRoZSBndGVzdF9qc29uX291dHB1dCBtb2R1bGUuIiIiCisK
K2ltcG9ydCBqc29uCitpbXBvcnQgb3MKK2ltcG9ydCBndGVzdF9qc29uX3Rlc3RfdXRpbHMKK2lt
cG9ydCBndGVzdF90ZXN0X3V0aWxzCisKK0dURVNUX09VVFBVVF9TVUJESVIgPSAnanNvbl9vdXRm
aWxlcycKK0dURVNUX09VVFBVVF8xX1RFU1QgPSAnZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfJwor
R1RFU1RfT1VUUFVUXzJfVEVTVCA9ICdndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8nCisKK0VYUEVD
VEVEXzEgPSB7CisgICAgdSd0ZXN0cyc6IDEsCisgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgdSdk
aXNhYmxlZCc6IDAsCisgICAgdSdlcnJvcnMnOiAwLAorICAgIHUndGltZSc6IHUnKicsCisgICAg
dSd0aW1lc3RhbXAnOiB1JyonLAorICAgIHUnbmFtZSc6IHUnQWxsVGVzdHMnLAorICAgIHUndGVz
dHN1aXRlcyc6IFt7CisgICAgICAgIHUnbmFtZSc6IHUnUHJvcGVydHlPbmUnLAorICAgICAgICB1
J3Rlc3RzJzogMSwKKyAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgIHUnZGlzYWJsZWQn
OiAwLAorICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgIHUndGltZSc6IHUnKicsCisgICAg
ICAgIHUndGVzdHN1aXRlJzogW3sKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnVGVzdFNvbWVQcm9w
ZXJ0aWVzJywKKyAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgdSd0
aW1lJzogdScqJywKKyAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdQcm9wZXJ0eU9uZScsCisg
ICAgICAgICAgICB1J1NldFVwUHJvcCc6IHUnMScsCisgICAgICAgICAgICB1J1Rlc3RTb21lUHJv
cGVydHknOiB1JzEnLAorICAgICAgICAgICAgdSdUZWFyRG93blByb3AnOiB1JzEnLAorICAgICAg
ICB9XSwKKyAgICB9XSwKK30KKworRVhQRUNURURfMiA9IHsKKyAgICB1J3Rlc3RzJzogMSwKKyAg
ICB1J2ZhaWx1cmVzJzogMCwKKyAgICB1J2Rpc2FibGVkJzogMCwKKyAgICB1J2Vycm9ycyc6IDAs
CisgICAgdSd0aW1lJzogdScqJywKKyAgICB1J3RpbWVzdGFtcCc6IHUnKicsCisgICAgdSduYW1l
JzogdSdBbGxUZXN0cycsCisgICAgdSd0ZXN0c3VpdGVzJzogW3sKKyAgICAgICAgdSduYW1lJzog
dSdQcm9wZXJ0eVR3bycsCisgICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICB1J2ZhaWx1cmVz
JzogMCwKKyAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgIHUnZXJyb3JzJzogMCwKKyAg
ICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgdSd0ZXN0c3VpdGUnOiBbeworICAgICAgICAg
ICAgdSduYW1lJzogdSdUZXN0U29tZVByb3BlcnRpZXMnLAorICAgICAgICAgICAgdSdzdGF0dXMn
OiB1J1JVTicsCisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSdjbGFz
c25hbWUnOiB1J1Byb3BlcnR5VHdvJywKKyAgICAgICAgICAgIHUnU2V0VXBQcm9wJzogdScyJywK
KyAgICAgICAgICAgIHUnVGVzdFNvbWVQcm9wZXJ0eSc6IHUnMicsCisgICAgICAgICAgICB1J1Rl
YXJEb3duUHJvcCc6IHUnMicsCisgICAgICAgIH1dLAorICAgIH1dLAorfQorCisKK2NsYXNzIEdU
ZXN0SnNvbk91dEZpbGVzVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgIiIiVW5p
dCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIEpTT04gb3V0cHV0IGZ1bmN0aW9uYWxpdHkuIiIiCisK
KyAgZGVmIHNldFVwKHNlbGYpOgorICAgICMgV2Ugd2FudCB0aGUgdHJhaWxpbmcgJy8nIHRoYXQg
dGhlIGxhc3QgIiIgcHJvdmlkZXMgaW4gb3MucGF0aC5qb2luLCBmb3IKKyAgICAjIHRlbGxpbmcg
R29vZ2xlIFRlc3QgdG8gY3JlYXRlIGFuIG91dHB1dCBkaXJlY3RvcnkgaW5zdGVhZCBvZiBhIHNp
bmdsZSBmaWxlCisgICAgIyBmb3IgeG1sIG91dHB1dC4KKyAgICBzZWxmLm91dHB1dF9kaXJfID0g
b3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfT1VUUFVUX1NVQkRJUiwgJycpCisgICAgc2Vs
Zi5EZWxldGVGaWxlc0FuZERpcigpCisKKyAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgIHNlbGYu
RGVsZXRlRmlsZXNBbmREaXIoKQorCisgIGRlZiBEZWxldGVGaWxlc0FuZERpcihzZWxmKToKKyAg
ICB0cnk6CisgICAgICBvcy5yZW1vdmUob3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2Rpcl8sIEdU
RVNUX09VVFBVVF8xX1RFU1QgKyAnLmpzb24nKSkKKyAgICBleGNlcHQgb3MuZXJyb3I6CisgICAg
ICBwYXNzCisgICAgdHJ5OgorICAgICAgb3MucmVtb3ZlKG9zLnBhdGguam9pbihzZWxmLm91dHB1
dF9kaXJfLCBHVEVTVF9PVVRQVVRfMl9URVNUICsgJy5qc29uJykpCisgICAgZXhjZXB0IG9zLmVy
cm9yOgorICAgICAgcGFzcworICAgIHRyeToKKyAgICAgIG9zLnJtZGlyKHNlbGYub3V0cHV0X2Rp
cl8pCisgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgcGFzcworCisgIGRlZiB0ZXN0T3V0Zmls
ZTEoc2VsZik6CisgICAgc2VsZi5fVGVzdE91dEZpbGUoR1RFU1RfT1VUUFVUXzFfVEVTVCwgRVhQ
RUNURURfMSkKKworICBkZWYgdGVzdE91dGZpbGUyKHNlbGYpOgorICAgIHNlbGYuX1Rlc3RPdXRG
aWxlKEdURVNUX09VVFBVVF8yX1RFU1QsIEVYUEVDVEVEXzIpCisKKyAgZGVmIF9UZXN0T3V0Rmls
ZShzZWxmLCB0ZXN0X25hbWUsIGV4cGVjdGVkKToKKyAgICBndGVzdF9wcm9nX3BhdGggPSBndGVz
dF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCh0ZXN0X25hbWUpCisgICAgY29tbWFu
ZCA9IFtndGVzdF9wcm9nX3BhdGgsICctLWd0ZXN0X291dHB1dD1qc29uOiVzJyAlIHNlbGYub3V0
cHV0X2Rpcl9dCisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2luZ19kaXI9Z3Rlc3RfdGVz
dF91dGlscy5HZXRUZW1wRGlyKCkpCisgICAgc2VsZi5hc3NlcnRfKHAuZXhpdGVkKQorICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKDAsIHAuZXhpdF9jb2RlKQorCisgICAgIyBGSVhNRTogbGlidG9vbCBj
YXVzZXMgdGhlIGJ1aWx0IHRlc3QgYmluYXJ5IHRvIGJlCisgICAgIyAgIG5hbWVkIGx0LWd0ZXN0
X3htbF9vdXRmaWxlc190ZXN0XyBpbnN0ZWFkIG9mCisgICAgIyAgIGd0ZXN0X3htbF9vdXRmaWxl
c190ZXN0Xy4gIFRvIGFjY291bnQgZm9yIHRoaXMgcG9zc2liaWxpdHksIHdlCisgICAgIyAgIGFs
bG93IGJvdGggbmFtZXMgaW4gdGhlIGZvbGxvd2luZyBjb2RlLiAgV2Ugc2hvdWxkIHJlbW92ZSB0
aGlzCisgICAgIyAgIHdoZW4gbGlidG9vbCByZXBsYWNlbWVudCB0b29sIGlzIHJlYWR5LgorICAg
IG91dHB1dF9maWxlX25hbWUxID0gdGVzdF9uYW1lICsgJy5qc29uJworICAgIG91dHB1dF9maWxl
MSA9IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXJfLCBvdXRwdXRfZmlsZV9uYW1lMSkKKyAg
ICBvdXRwdXRfZmlsZV9uYW1lMiA9ICdsdC0nICsgb3V0cHV0X2ZpbGVfbmFtZTEKKyAgICBvdXRw
dXRfZmlsZTIgPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGlyXywgb3V0cHV0X2ZpbGVfbmFt
ZTIpCisgICAgc2VsZi5hc3NlcnRfKG9zLnBhdGguaXNmaWxlKG91dHB1dF9maWxlMSkgb3Igb3Mu
cGF0aC5pc2ZpbGUob3V0cHV0X2ZpbGUyKSwKKyAgICAgICAgICAgICAgICAgb3V0cHV0X2ZpbGUx
KQorCisgICAgaWYgb3MucGF0aC5pc2ZpbGUob3V0cHV0X2ZpbGUxKToKKyAgICAgIHdpdGggb3Bl
bihvdXRwdXRfZmlsZTEpIGFzIGY6CisgICAgICAgIGFjdHVhbCA9IGpzb24ubG9hZChmKQorICAg
IGVsc2U6CisgICAgICB3aXRoIG9wZW4ob3V0cHV0X2ZpbGUyKSBhcyBmOgorICAgICAgICBhY3R1
YWwgPSBqc29uLmxvYWQoZikKKyAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBndGVzdF9q
c29uX3Rlc3RfdXRpbHMubm9ybWFsaXplKGFjdHVhbCkpCisKKworaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKKyAgb3MuZW52aXJvblsnR1RFU1RfU1RBQ0tfVFJBQ0VfREVQVEgnXSA9ICcwJwor
ICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWpzb24tb3V0cHV0LXVuaXR0ZXN0LnB5IGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWpzb24tb3V0cHV0LXVuaXR0ZXN0LnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU3ZGNkNWZhMWM0NjM5ZjE1MmZiNTRlNTBmYjljMDU5OGEwZTQ2YTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtanNv
bi1vdXRwdXQtdW5pdHRlc3QucHkKQEAgLTAsMCArMSw2MTggQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorIyBDb3B5cmlnaHQgMjAxOCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVzdCBmb3IgdGhlIGd0ZXN0X2pzb25f
b3V0cHV0IG1vZHVsZS4iIiIKKworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgZXJybm8KK2ltcG9y
dCBqc29uCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworCitpbXBvcnQgZ3Rlc3Rf
anNvbl90ZXN0X3V0aWxzCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitHVEVTVF9GSUxURVJf
RkxBRyA9ICctLWd0ZXN0X2ZpbHRlcicKK0dURVNUX0xJU1RfVEVTVFNfRkxBRyA9ICctLWd0ZXN0
X2xpc3RfdGVzdHMnCitHVEVTVF9PVVRQVVRfRkxBRyA9ICctLWd0ZXN0X291dHB1dCcKK0dURVNU
X0RFRkFVTFRfT1VUUFVUX0ZJTEUgPSAndGVzdF9kZXRhaWwuanNvbicKK0dURVNUX1BST0dSQU1f
TkFNRSA9ICdndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0XycKKworIyBUaGUgZmxhZyBpbmRpY2F0
aW5nIHN0YWNrdHJhY2VzIGFyZSBub3Qgc3VwcG9ydGVkCitOT19TVEFDS1RSQUNFX1NVUFBPUlRf
RkxBRyA9ICctLW5vX3N0YWNrdHJhY2Vfc3VwcG9ydCcKKworU1VQUE9SVFNfU1RBQ0tfVFJBQ0VT
ID0gTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZMQUcgbm90IGluIHN5cy5hcmd2CisKK2lmIFNVUFBP
UlRTX1NUQUNLX1RSQUNFUzoKKyAgU1RBQ0tfVFJBQ0VfVEVNUExBVEUgPSAnXG5TdGFjayB0cmFj
ZTpcbionCitlbHNlOgorICBTVEFDS19UUkFDRV9URU1QTEFURSA9ICcnCisKK0VYUEVDVEVEX05P
Tl9FTVBUWSA9IHsKKyAgICB1J3Rlc3RzJzogMjMsCisgICAgdSdmYWlsdXJlcyc6IDQsCisgICAg
dSdkaXNhYmxlZCc6IDIsCisgICAgdSdlcnJvcnMnOiAwLAorICAgIHUndGltZXN0YW1wJzogdScq
JywKKyAgICB1J3RpbWUnOiB1JyonLAorICAgIHUnYWRfaG9jX3Byb3BlcnR5JzogdSc0MicsCisg
ICAgdSduYW1lJzogdSdBbGxUZXN0cycsCisgICAgdSd0ZXN0c3VpdGVzJzogWworICAgICAgICB7
CisgICAgICAgICAgICB1J25hbWUnOiB1J1N1Y2Nlc3NmdWxUZXN0JywKKyAgICAgICAgICAgIHUn
dGVzdHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgICAgICB1J2Rp
c2FibGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGlt
ZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnU3VjY2VlZHMnLAorICAgICAgICAgICAg
ICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzog
dScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1N1Y2Nlc3NmdWxUZXN0
JworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICAgdSduYW1lJzogdSdGYWlsZWRUZXN0JywKKyAgICAgICAgICAgIHUndGVz
dHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDEsCisgICAgICAgICAgICB1J2Rpc2Fi
bGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6
IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnRmFpbHMnLAorICAgICAgICAgICAgICAgICAg
ICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywK
KyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J0ZhaWxlZFRlc3QnLAorICAgICAg
ICAgICAgICAgICAgICB1J2ZhaWx1cmVzJzogWworICAgICAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnZmFpbHVyZSc6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHUnZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KlxuJworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNl
IHZhbHVlczpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdScgIDFcbiAgMicg
KyBTVEFDS19UUkFDRV9URU1QTEFURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J3R5
cGUnOiB1JycKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICAgdSduYW1lJzogdSdEaXNhYmxlZFRlc3QnLAorICAgICAgICAgICAgdSd0
ZXN0cyc6IDEsCisgICAgICAgICAgICB1J2ZhaWx1cmVzJzogMCwKKyAgICAgICAgICAgIHUnZGlz
YWJsZWQnOiAxLAorICAgICAgICAgICAgdSdlcnJvcnMnOiAwLAorICAgICAgICAgICAgdSd0aW1l
JzogdScqJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRlJzogWworICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdESVNBQkxFRF90ZXN0X25vdF9ydW4nLAor
ICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnTk9UUlVOJywKKyAgICAgICAgICAgICAg
ICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1
J0Rpc2FibGVkVGVzdCcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnTWl4ZWRSZXN1bHRUZXN0JywK
KyAgICAgICAgICAgIHUndGVzdHMnOiAzLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDEsCisg
ICAgICAgICAgICB1J2Rpc2FibGVkJzogMSwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAg
ICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnU3VjY2VlZHMn
LAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAg
ICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1
J01peGVkUmVzdWx0VGVzdCcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdGYWlscycsCisgICAgICAgICAgICAgICAg
ICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1Jyon
LAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnTWl4ZWRSZXN1bHRUZXN0JywK
KyAgICAgICAgICAgICAgICAgICAgdSdmYWlsdXJlcyc6IFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2ZhaWx1cmUnOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1J2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOipc
bicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdFeHBlY3RlZCBlcXVhbGl0eSBv
ZiB0aGVzZSB2YWx1ZXM6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnICAx
XG4gIDInICsgU1RBQ0tfVFJBQ0VfVEVNUExBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdSd0eXBlJzogdScnCisgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnZmFpbHVyZSc6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnZ3Rlc3RfeG1sX291dHB1dF91bml0dGVz
dF8uY2M6KlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J0V4cGVjdGVkIGVx
dWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdScgIDJcbiAgMycgKyBTVEFDS19UUkFDRV9URU1QTEFURSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1J3R5cGUnOiB1JycKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0RJU0FCTEVEX3Rlc3QnLAorICAgICAgICAg
ICAgICAgICAgICB1J3N0YXR1cyc6IHUnTk9UUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0
aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J01peGVkUmVz
dWx0VGVzdCcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnWG1sUXVvdGluZ1Rlc3QnLAorICAgICAg
ICAgICAgdSd0ZXN0cyc6IDEsCisgICAgICAgICAgICB1J2ZhaWx1cmVzJzogMSwKKyAgICAgICAg
ICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAgICAgICAgdSdlcnJvcnMnOiAwLAorICAgICAgICAg
ICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRlJzogWworICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdPdXRwdXRzQ0RhdGEnLAor
ICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAg
ICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1ht
bFF1b3RpbmdUZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdmYWlsdXJlcyc6IFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2ZhaWx1
cmUnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2d0ZXN0X3htbF9vdXRwdXRf
dW5pdHRlc3RfLmNjOipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdGYWls
ZWRcblhNTCBvdXRwdXQ6IDw/eG1sIGVuY29kaW5nPSJ1dGYtOCI+JworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1Jzx0b3A+PCFbQ0RBVEFbY2RhdGEgdGV4dF1dPjwvdG9wPicgKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFDS19UUkFDRV9URU1QTEFURSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1J3R5cGUnOiB1JycKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdJ
bnZhbGlkQ2hhcmFjdGVyc1Rlc3QnLAorICAgICAgICAgICAgdSd0ZXN0cyc6IDEsCisgICAgICAg
ICAgICB1J2ZhaWx1cmVzJzogMSwKKyAgICAgICAgICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAg
ICAgICAgdSdlcnJvcnMnOiAwLAorICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAg
ICAgIHUndGVzdHN1aXRlJzogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgdSduYW1lJzogdSdJbnZhbGlkQ2hhcmFjdGVyc0luTWVzc2FnZScsCisgICAgICAgICAgICAg
ICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1
JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnSW52YWxpZENoYXJhY3Rl
cnNUZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdmYWlsdXJlcyc6IFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2ZhaWx1cmUnOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRl
c3RfLmNjOipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdGYWlsZWRcbklu
dmFsaWQgY2hhcmFjdGVycyBpbiBicmFja2V0cycKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdScgW1x4MDFceDAyXScgKyBTVEFDS19UUkFDRV9URU1QTEFURSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1J3R5cGUnOiB1JycKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0K
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdQcm9wZXJ0eVJl
Y29yZGluZ1Rlc3QnLAorICAgICAgICAgICAgdSd0ZXN0cyc6IDQsCisgICAgICAgICAgICB1J2Zh
aWx1cmVzJzogMCwKKyAgICAgICAgICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAgICAgICAgdSdl
cnJvcnMnOiAwLAorICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgIHUnU2V0
VXBUZXN0Q2FzZSc6IHUneWVzJywKKyAgICAgICAgICAgIHUnVGVhckRvd25UZXN0Q2FzZSc6IHUn
YXllJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRlJzogWworICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdPbmVQcm9wZXJ0eScsCisgICAgICAgICAgICAg
ICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1
JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnUHJvcGVydHlSZWNvcmRp
bmdUZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdrZXlfMSc6IHUnMScKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzog
dSdJbnRWYWx1ZWRQcm9wZXJ0eScsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdS
VU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAg
ICAgICB1J2NsYXNzbmFtZSc6IHUnUHJvcGVydHlSZWNvcmRpbmdUZXN0JywKKyAgICAgICAgICAg
ICAgICAgICAgdSdrZXlfaW50JzogdScxJworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J1RocmVlUHJvcGVydGllcycs
CisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAg
ICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUn
UHJvcGVydHlSZWNvcmRpbmdUZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdrZXlfMSc6IHUn
MScsCisgICAgICAgICAgICAgICAgICAgIHUna2V5XzInOiB1JzInLAorICAgICAgICAgICAgICAg
ICAgICB1J2tleV8zJzogdSczJworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J1R3b1ZhbHVlc0Zvck9uZUtleVVzZXNM
YXN0VmFsdWUnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAg
ICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFz
c25hbWUnOiB1J1Byb3BlcnR5UmVjb3JkaW5nVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUn
a2V5XzEnOiB1JzInCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1J05vRml4dHVyZVRlc3QnLAorICAg
ICAgICAgICAgdSd0ZXN0cyc6IDMsCisgICAgICAgICAgICB1J2ZhaWx1cmVzJzogMCwKKyAgICAg
ICAgICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAgICAgICAgdSdlcnJvcnMnOiAwLAorICAgICAg
ICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRlJzogWworICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdSZWNvcmRQcm9wZXJ0
eScsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAg
ICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6
IHUnTm9GaXh0dXJlVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUna2V5JzogdScxJworICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1
J25hbWUnOiB1J0V4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZEludFZhbHVlZFByb3BlcnR5
JywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAg
ICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzog
dSdOb0ZpeHR1cmVUZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdrZXlfZm9yX3V0aWxpdHlf
aW50JzogdScxJworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICB1J25hbWUnOgorICAgICAgICAgICAgICAgICAgICAgICAgdSdFeHRlcm5h
bFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRTdHJpbmdWYWx1ZWRQcm9wZXJ0eScsCisgICAgICAgICAg
ICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUn
OiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnTm9GaXh0dXJlVGVz
dCcsCisgICAgICAgICAgICAgICAgICAgIHUna2V5X2Zvcl91dGlsaXR5X3N0cmluZyc6IHUnMScK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIHUnbmFtZSc6IHUnVHlwZWRUZXN0LzAnLAorICAgICAgICAgICAgdSd0ZXN0
cyc6IDEsCisgICAgICAgICAgICB1J2ZhaWx1cmVzJzogMCwKKyAgICAgICAgICAgIHUnZGlzYWJs
ZWQnOiAwLAorICAgICAgICAgICAgdSdlcnJvcnMnOiAwLAorICAgICAgICAgICAgdSd0aW1lJzog
dScqJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRlJzogWworICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdIYXNUeXBlUGFyYW1BdHRyaWJ1dGUnLAorICAg
ICAgICAgICAgICAgICAgICB1J3R5cGVfcGFyYW0nOiB1J2ludCcsCisgICAgICAgICAgICAgICAg
ICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1Jyon
LAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnVHlwZWRUZXN0LzAnCisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICB1J25hbWUnOiB1J1R5cGVkVGVzdC8xJywKKyAgICAgICAgICAgIHUndGVzdHMnOiAx
LAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzog
MCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKics
CisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHUnbmFtZSc6IHUnSGFzVHlwZVBhcmFtQXR0cmlidXRlJywKKyAgICAgICAg
ICAgICAgICAgICAgdSd0eXBlX3BhcmFtJzogdSdsb25nJywKKyAgICAgICAgICAgICAgICAgICAg
dSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisg
ICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdUeXBlZFRlc3QvMScKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHUnbmFtZSc6IHUnU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMCcsCisgICAg
ICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAwLAorICAgICAg
ICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAg
ICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBbCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0hhc1R5cGVQYXJhbUF0
dHJpYnV0ZScsCisgICAgICAgICAgICAgICAgICAgIHUndHlwZV9wYXJhbSc6IHUnaW50JywKKyAg
ICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAg
IHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdTaW5n
bGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8wJworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdT
aW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8xJywKKyAgICAgICAgICAgIHUndGVzdHMn
OiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVk
JzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUn
KicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnSGFzVHlwZVBhcmFtQXR0cmlidXRlJywKKyAgICAg
ICAgICAgICAgICAgICAgdSd0eXBlX3BhcmFtJzogdSdsb25nJywKKyAgICAgICAgICAgICAgICAg
ICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKics
CisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdTaW5nbGUvVHlwZVBhcmFtZXRl
cml6ZWRUZXN0Q2FzZS8xJworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAg
ICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdTaW5nbGUvVmFsdWVQYXJh
bVRlc3QnLAorICAgICAgICAgICAgdSd0ZXN0cyc6IDQsCisgICAgICAgICAgICB1J2ZhaWx1cmVz
JzogMCwKKyAgICAgICAgICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAgICAgICAgdSdlcnJvcnMn
OiAwLAorICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRl
JzogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdI
YXNWYWx1ZVBhcmFtQXR0cmlidXRlLzAnLAorICAgICAgICAgICAgICAgICAgICB1J3ZhbHVlX3Bh
cmFtJzogdSczMycsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAg
ICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2Ns
YXNzbmFtZSc6IHUnU2luZ2xlL1ZhbHVlUGFyYW1UZXN0JworICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0hhc1ZhbHVl
UGFyYW1BdHRyaWJ1dGUvMScsCisgICAgICAgICAgICAgICAgICAgIHUndmFsdWVfcGFyYW0nOiB1
JzQyJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAg
ICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1l
JzogdSdTaW5nbGUvVmFsdWVQYXJhbVRlc3QnCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnQW5vdGhlclRlc3RUaGF0
SGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8wJywKKyAgICAgICAgICAgICAgICAgICAgdSd2YWx1ZV9w
YXJhbSc6IHUnMzMnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAg
ICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdj
bGFzc25hbWUnOiB1J1NpbmdsZS9WYWx1ZVBhcmFtVGVzdCcKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdBbm90aGVy
VGVzdFRoYXRIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzEnLAorICAgICAgICAgICAgICAgICAgICB1
J3ZhbHVlX3BhcmFtJzogdSc0MicsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdS
VU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAg
ICAgICB1J2NsYXNzbmFtZSc6IHUnU2luZ2xlL1ZhbHVlUGFyYW1UZXN0JworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0KK30KKworRVhQRUNURURfRklM
VEVSRUQgPSB7CisgICAgdSd0ZXN0cyc6IDEsCisgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgdSdk
aXNhYmxlZCc6IDAsCisgICAgdSdlcnJvcnMnOiAwLAorICAgIHUndGltZSc6IHUnKicsCisgICAg
dSd0aW1lc3RhbXAnOiB1JyonLAorICAgIHUnbmFtZSc6IHUnQWxsVGVzdHMnLAorICAgIHUnYWRf
aG9jX3Byb3BlcnR5JzogdSc0MicsCisgICAgdSd0ZXN0c3VpdGVzJzogW3sKKyAgICAgICAgdSdu
YW1lJzogdSdTdWNjZXNzZnVsVGVzdCcsCisgICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICB1
J2ZhaWx1cmVzJzogMCwKKyAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgIHUnZXJyb3Jz
JzogMCwKKyAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgdSd0ZXN0c3VpdGUnOiBbewor
ICAgICAgICAgICAgdSduYW1lJzogdSdTdWNjZWVkcycsCisgICAgICAgICAgICB1J3N0YXR1cyc6
IHUnUlVOJywKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J2NsYXNz
bmFtZSc6IHUnU3VjY2Vzc2Z1bFRlc3QnLAorICAgICAgICB9XQorICAgIH1dLAorfQorCitFWFBF
Q1RFRF9FTVBUWSA9IHsKKyAgICB1J3Rlc3RzJzogMCwKKyAgICB1J2ZhaWx1cmVzJzogMCwKKyAg
ICB1J2Rpc2FibGVkJzogMCwKKyAgICB1J2Vycm9ycyc6IDAsCisgICAgdSd0aW1lJzogdScqJywK
KyAgICB1J3RpbWVzdGFtcCc6IHUnKicsCisgICAgdSduYW1lJzogdSdBbGxUZXN0cycsCisgICAg
dSd0ZXN0c3VpdGVzJzogW10sCit9CisKK0dURVNUX1BST0dSQU1fUEFUSCA9IGd0ZXN0X3Rlc3Rf
dXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKEdURVNUX1BST0dSQU1fTkFNRSkKKworU1VQUE9S
VFNfVFlQRURfVEVTVFMgPSAnVHlwZWRUZXN0JyBpbiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nl
c3MoCisgICAgW0dURVNUX1BST0dSQU1fUEFUSCwgR1RFU1RfTElTVF9URVNUU19GTEFHXSwgY2Fw
dHVyZV9zdGRlcnI9RmFsc2UpLm91dHB1dAorCisKK2NsYXNzIEdUZXN0SnNvbk91dHB1dFVuaXRU
ZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJVbml0IHRlc3QgZm9yIEdvb2ds
ZSBUZXN0J3MgSlNPTiBvdXRwdXQgZnVuY3Rpb25hbGl0eS4KKyAgIiIiCisKKyAgIyBUaGlzIHRl
c3QgY3VycmVudGx5IGJyZWFrcyBvbiBwbGF0Zm9ybXMgdGhhdCBkbyBub3Qgc3VwcG9ydCB0eXBl
ZCBhbmQKKyAgIyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIHNvIHdlIGRvbid0IHJ1biBpdCB1
bmRlciB0aGVtLgorICBpZiBTVVBQT1JUU19UWVBFRF9URVNUUzoKKworICAgIGRlZiB0ZXN0Tm9u
RW1wdHlKc29uT3V0cHV0KHNlbGYpOgorICAgICAgIiIiVmVyaWZpZXMgSlNPTiBvdXRwdXQgZm9y
IGEgR29vZ2xlIFRlc3QgYmluYXJ5IHdpdGggbm9uLWVtcHR5IG91dHB1dC4KKworICAgICAgUnVu
cyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBhIG5vbi1lbXB0eSBKU09OIG91dHB1dCwg
YW5kCisgICAgICB0ZXN0cyB0aGF0IHRoZSBKU09OIG91dHB1dCBpcyBleHBlY3RlZC4KKyAgICAg
ICIiIgorICAgICAgc2VsZi5fVGVzdEpzb25PdXRwdXQoR1RFU1RfUFJPR1JBTV9OQU1FLCBFWFBF
Q1RFRF9OT05fRU1QVFksIDEpCisKKyAgZGVmIHRlc3RFbXB0eUpzb25PdXRwdXQoc2VsZik6Cisg
ICAgIiIiVmVyaWZpZXMgSlNPTiBvdXRwdXQgZm9yIGEgR29vZ2xlIFRlc3QgYmluYXJ5IHdpdGhv
dXQgYWN0dWFsIHRlc3RzLgorCisgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRl
cyBhbiBlbXB0eSBKU09OIG91dHB1dCwgYW5kCisgICAgdGVzdHMgdGhhdCB0aGUgSlNPTiBvdXRw
dXQgaXMgZXhwZWN0ZWQuCisgICAgIiIiCisKKyAgICBzZWxmLl9UZXN0SnNvbk91dHB1dCgnZ3Rl
c3Rfbm9fdGVzdF91bml0dGVzdCcsIEVYUEVDVEVEX0VNUFRZLCAwKQorCisgIGRlZiB0ZXN0VGlt
ZXN0YW1wVmFsdWUoc2VsZik6CisgICAgIiIiQ2hlY2tzIHdoZXRoZXIgdGhlIHRpbWVzdGFtcCBh
dHRyaWJ1dGUgaW4gdGhlIEpTT04gb3V0cHV0IGlzIHZhbGlkLgorCisgICAgUnVucyBhIHRlc3Qg
cHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBhbiBlbXB0eSBKU09OIG91dHB1dCwgYW5kIGNoZWNrcyBp
ZgorICAgIHRoZSB0aW1lc3RhbXAgYXR0cmlidXRlIGluIHRoZSB0ZXN0c3VpdGVzIHRhZyBpcyB2
YWxpZC4KKyAgICAiIiIKKyAgICBhY3R1YWwgPSBzZWxmLl9HZXRKc29uT3V0cHV0KCdndGVzdF9u
b190ZXN0X3VuaXR0ZXN0JywgW10sIDApCisgICAgZGF0ZV90aW1lX3N0ciA9IGFjdHVhbFsndGlt
ZXN0YW1wJ10KKyAgICAjIGRhdGV0aW1lLnN0cnB0aW1lKCkgaXMgb25seSBhdmFpbGFibGUgaW4g
UHl0aG9uIDIuNSsgc28gd2UgaGF2ZSB0bworICAgICMgcGFyc2UgdGhlIGV4cGVjdGVkIGRhdGV0
aW1lIG1hbnVhbGx5LgorICAgIG1hdGNoID0gcmUubWF0Y2gocicoXGQrKS0oXGRcZCktKFxkXGQp
VChcZFxkKTooXGRcZCk6KFxkXGQpJywgZGF0ZV90aW1lX3N0cikKKyAgICBzZWxmLmFzc2VydFRy
dWUoCisgICAgICAgIHJlLm1hdGNoLAorICAgICAgICAnSlNPTiBkYXRldHRpbWUgc3RyaW5nICVz
IGhhcyBpbmNvcnJlY3QgZm9ybWF0JyAlIGRhdGVfdGltZV9zdHIpCisgICAgZGF0ZV90aW1lX2Zy
b21fanNvbiA9IGRhdGV0aW1lLmRhdGV0aW1lKAorICAgICAgICB5ZWFyPWludChtYXRjaC5ncm91
cCgxKSksIG1vbnRoPWludChtYXRjaC5ncm91cCgyKSksCisgICAgICAgIGRheT1pbnQobWF0Y2gu
Z3JvdXAoMykpLCBob3VyPWludChtYXRjaC5ncm91cCg0KSksCisgICAgICAgIG1pbnV0ZT1pbnQo
bWF0Y2guZ3JvdXAoNSkpLCBzZWNvbmQ9aW50KG1hdGNoLmdyb3VwKDYpKSkKKworICAgIHRpbWVf
ZGVsdGEgPSBhYnMoZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkgLSBkYXRlX3RpbWVfZnJvbV9qc29u
KQorICAgICMgdGltZXN0YW1wIHZhbHVlIHNob3VsZCBiZSBuZWFyIHRoZSBjdXJyZW50IGxvY2Fs
IHRpbWUKKyAgICBzZWxmLmFzc2VydFRydWUodGltZV9kZWx0YSA8IGRhdGV0aW1lLnRpbWVkZWx0
YShzZWNvbmRzPTYwMCksCisgICAgICAgICAgICAgICAgICAgICd0aW1lX2RlbHRhIGlzICVzJyAl
IHRpbWVfZGVsdGEpCisKKyAgZGVmIHRlc3REZWZhdWx0T3V0cHV0RmlsZShzZWxmKToKKyAgICAi
IiJWZXJpZmllcyB0aGUgZGVmYXVsdCBvdXRwdXQgZmlsZSBuYW1lLgorCisgICAgQ29uZmlybXMg
dGhhdCBHb29nbGUgVGVzdCBwcm9kdWNlcyBhbiBKU09OIG91dHB1dCBmaWxlIHdpdGggdGhlIGV4
cGVjdGVkCisgICAgZGVmYXVsdCBuYW1lIGlmIG5vIG5hbWUgaXMgZXhwbGljaXRseSBzcGVjaWZp
ZWQuCisgICAgIiIiCisgICAgb3V0cHV0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91
dGlscy5HZXRUZW1wRGlyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1Rf
REVGQVVMVF9PVVRQVVRfRklMRSkKKyAgICBndGVzdF9wcm9nX3BhdGggPSBndGVzdF90ZXN0X3V0
aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKKyAgICAgICAgJ2d0ZXN0X25vX3Rlc3RfdW5pdHRl
c3QnKQorICAgIHRyeToKKyAgICAgIG9zLnJlbW92ZShvdXRwdXRfZmlsZSkKKyAgICBleGNlcHQg
T1NFcnJvcjoKKyAgICAgIGUgPSBzeXMuZXhjX2luZm8oKVsxXQorICAgICAgaWYgZS5lcnJubyAh
PSBlcnJuby5FTk9FTlQ6CisgICAgICAgIHJhaXNlCisKKyAgICBwID0gZ3Rlc3RfdGVzdF91dGls
cy5TdWJwcm9jZXNzKAorICAgICAgICBbZ3Rlc3RfcHJvZ19wYXRoLCAnJXM9anNvbicgJSBHVEVT
VF9PVVRQVVRfRkxBR10sCisgICAgICAgIHdvcmtpbmdfZGlyPWd0ZXN0X3Rlc3RfdXRpbHMuR2V0
VGVtcERpcigpKQorICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKKyAgICBzZWxmLmFzc2VydEVx
dWFscygwLCBwLmV4aXRfY29kZSkKKyAgICBzZWxmLmFzc2VydF8ob3MucGF0aC5pc2ZpbGUob3V0
cHV0X2ZpbGUpKQorCisgIGRlZiB0ZXN0U3VwcHJlc3NlZEpzb25PdXRwdXQoc2VsZik6CisgICAg
IiIiVmVyaWZpZXMgdGhhdCBubyBKU09OIG91dHB1dCBpcyBnZW5lcmF0ZWQuCisKKyAgICBUZXN0
cyB0aGF0IG5vIEpTT04gZmlsZSBpcyBnZW5lcmF0ZWQgaWYgdGhlIGRlZmF1bHQgSlNPTiBsaXN0
ZW5lciBpcworICAgIHNodXQgZG93biBiZWZvcmUgUlVOX0FMTF9URVNUUyBpcyBpbnZva2VkLgor
ICAgICIiIgorCisgICAganNvbl9wYXRoID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMu
R2V0VGVtcERpcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QUk9HUkFN
X05BTUUgKyAnb3V0Lmpzb24nKQorICAgIGlmIG9zLnBhdGguaXNmaWxlKGpzb25fcGF0aCk6Cisg
ICAgICBvcy5yZW1vdmUoanNvbl9wYXRoKQorCisgICAgY29tbWFuZCA9IFtHVEVTVF9QUk9HUkFN
X1BBVEgsCisgICAgICAgICAgICAgICAnJXM9anNvbjolcycgJSAoR1RFU1RfT1VUUFVUX0ZMQUcs
IGpzb25fcGF0aCksCisgICAgICAgICAgICAgICAnLS1zaHV0X2Rvd25feG1sJ10KKyAgICBwID0g
Z3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCisgICAgaWYgcC50ZXJtaW5hdGVk
X2J5X3NpZ25hbDoKKyAgICAgICMgcC5zaWduYWwgaXMgYXZhaWxhYmxlIG9ubHkgaWYgcC50ZXJt
aW5hdGVkX2J5X3NpZ25hbCBpcyBUcnVlLgorICAgICAgc2VsZi5hc3NlcnRGYWxzZSgKKyAgICAg
ICAgICBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsLAorICAgICAgICAgICclcyB3YXMga2lsbGVkIGJ5
IHNpZ25hbCAlZCcgJSAoR1RFU1RfUFJPR1JBTV9OQU1FLCBwLnNpZ25hbCkpCisgICAgZWxzZToK
KyAgICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEs
IHAuZXhpdF9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIiclcycgZXhpdGVkIHdpdGgg
Y29kZSAlcywgd2hpY2ggZG9lc24ndCBtYXRjaCAiCisgICAgICAgICAgICAgICAgICAgICAgICAn
dGhlIGV4cGVjdGVkIGV4aXQgY29kZSAlcy4nCisgICAgICAgICAgICAgICAgICAgICAgICAlIChj
b21tYW5kLCBwLmV4aXRfY29kZSwgMSkpCisKKyAgICBzZWxmLmFzc2VydF8obm90IG9zLnBhdGgu
aXNmaWxlKGpzb25fcGF0aCkpCisKKyAgZGVmIHRlc3RGaWx0ZXJlZFRlc3RKc29uT3V0cHV0KHNl
bGYpOgorICAgICIiIlZlcmlmaWVzIEpTT04gb3V0cHV0IHdoZW4gYSBmaWx0ZXIgaXMgYXBwbGll
ZC4KKworICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBleGVjdXRlcyBvbmx5IHNvbWUgdGVz
dHMgYW5kIHZlcmlmaWVzIHRoYXQKKyAgICBub24tc2VsZWN0ZWQgdGVzdHMgZG8gbm90IHNob3cg
dXAgaW4gdGhlIEpTT04gb3V0cHV0LgorICAgICIiIgorCisgICAgc2VsZi5fVGVzdEpzb25PdXRw
dXQoR1RFU1RfUFJPR1JBTV9OQU1FLCBFWFBFQ1RFRF9GSUxURVJFRCwgMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBleHRyYV9hcmdzPVsnJXM9U3VjY2Vzc2Z1bFRlc3QuKicgJSBHVEVTVF9G
SUxURVJfRkxBR10pCisKKyAgZGVmIF9HZXRKc29uT3V0cHV0KHNlbGYsIGd0ZXN0X3Byb2dfbmFt
ZSwgZXh0cmFfYXJncywgZXhwZWN0ZWRfZXhpdF9jb2RlKToKKyAgICAiIiJSZXR1cm5zIHRoZSBK
U09OIG91dHB1dCBnZW5lcmF0ZWQgYnkgcnVubmluZyB0aGUgcHJvZ3JhbSBndGVzdF9wcm9nX25h
bWUuCisKKyAgICBGdXJ0aGVybW9yZSwgdGhlIHByb2dyYW0ncyBleGl0IGNvZGUgbXVzdCBiZSBl
eHBlY3RlZF9leGl0X2NvZGUuCisKKyAgICBBcmdzOgorICAgICAgZ3Rlc3RfcHJvZ19uYW1lOiBH
b29nbGUgVGVzdCBiaW5hcnkgbmFtZS4KKyAgICAgIGV4dHJhX2FyZ3M6IGV4dHJhIGFyZ3VtZW50
cyB0byBiaW5hcnkgaW52b2NhdGlvbi4KKyAgICAgIGV4cGVjdGVkX2V4aXRfY29kZTogcHJvZ3Jh
bSdzIGV4aXQgY29kZS4KKyAgICAiIiIKKyAgICBqc29uX3BhdGggPSBvcy5wYXRoLmpvaW4oZ3Rl
c3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGd0ZXN0X3Byb2dfbmFtZSArICdvdXQuanNvbicpCisgICAgZ3Rlc3RfcHJvZ19wYXRoID0gZ3Rl
c3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoZ3Rlc3RfcHJvZ19uYW1lKQorCisg
ICAgY29tbWFuZCA9ICgKKyAgICAgICAgW2d0ZXN0X3Byb2dfcGF0aCwgJyVzPWpzb246JXMnICUg
KEdURVNUX09VVFBVVF9GTEFHLCBqc29uX3BhdGgpXSArCisgICAgICAgIGV4dHJhX2FyZ3MKKyAg
ICApCisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kKQorICAgIGlm
IHAudGVybWluYXRlZF9ieV9zaWduYWw6CisgICAgICBzZWxmLmFzc2VydF8oRmFsc2UsCisgICAg
ICAgICAgICAgICAgICAgJyVzIHdhcyBraWxsZWQgYnkgc2lnbmFsICVkJyAlIChndGVzdF9wcm9n
X25hbWUsIHAuc2lnbmFsKSkKKyAgICBlbHNlOgorICAgICAgc2VsZi5hc3NlcnRfKHAuZXhpdGVk
KQorICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfZXhpdF9jb2RlLCBwLmV4aXRfY29k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIGV4aXRlZCB3aXRoIGNvZGUgJXMsIHdo
aWNoIGRvZXNuJ3QgbWF0Y2ggIgorICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBleHBlY3Rl
ZCBleGl0IGNvZGUgJXMuJworICAgICAgICAgICAgICAgICAgICAgICAgJSAoY29tbWFuZCwgcC5l
eGl0X2NvZGUsIGV4cGVjdGVkX2V4aXRfY29kZSkpCisgICAgd2l0aCBvcGVuKGpzb25fcGF0aCkg
YXMgZjoKKyAgICAgIGFjdHVhbCA9IGpzb24ubG9hZChmKQorICAgIHJldHVybiBhY3R1YWwKKwor
ICBkZWYgX1Rlc3RKc29uT3V0cHV0KHNlbGYsIGd0ZXN0X3Byb2dfbmFtZSwgZXhwZWN0ZWQsCisg
ICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlLCBleHRyYV9hcmdzPU5vbmUp
OgorICAgICIiIkNoZWNrcyB0aGUgSlNPTiBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHRoZSBHb29nbGUg
VGVzdCBiaW5hcnkuCisKKyAgICBBc3NlcnRzIHRoYXQgdGhlIEpTT04gZG9jdW1lbnQgZ2VuZXJh
dGVkIGJ5IHJ1bm5pbmcgdGhlIHByb2dyYW0KKyAgICBndGVzdF9wcm9nX25hbWUgbWF0Y2hlcyBl
eHBlY3RlZF9qc29uLCBhIHN0cmluZyBjb250YWluaW5nIGFub3RoZXIKKyAgICBKU09OIGRvY3Vt
ZW50LiAgRnVydGhlcm1vcmUsIHRoZSBwcm9ncmFtJ3MgZXhpdCBjb2RlIG11c3QgYmUKKyAgICBl
eHBlY3RlZF9leGl0X2NvZGUuCisKKyAgICBBcmdzOgorICAgICAgZ3Rlc3RfcHJvZ19uYW1lOiBH
b29nbGUgVGVzdCBiaW5hcnkgbmFtZS4KKyAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCBvdXRwdXQu
CisgICAgICBleHBlY3RlZF9leGl0X2NvZGU6IHByb2dyYW0ncyBleGl0IGNvZGUuCisgICAgICBl
eHRyYV9hcmdzOiBleHRyYSBhcmd1bWVudHMgdG8gYmluYXJ5IGludm9jYXRpb24uCisgICAgIiIi
CisKKyAgICBhY3R1YWwgPSBzZWxmLl9HZXRKc29uT3V0cHV0KGd0ZXN0X3Byb2dfbmFtZSwgZXh0
cmFfYXJncyBvciBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
X2V4aXRfY29kZSkKKyAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBndGVzdF9qc29uX3Rl
c3RfdXRpbHMubm9ybWFsaXplKGFjdHVhbCkpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9f
JzoKKyAgaWYgTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZMQUcgaW4gc3lzLmFyZ3Y6CisgICAgIyB1
bml0dGVzdC5tYWluKCkgY2FuJ3QgaGFuZGxlIHVua25vd24gZmxhZ3MKKyAgICBzeXMuYXJndi5y
ZW1vdmUoTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZMQUcpCisKKyAgb3MuZW52aXJvblsnR1RFU1Rf
U1RBQ0tfVFJBQ0VfREVQVEgnXSA9ICcxJworICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWxpbmtlZC1w
dHItdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1saW5r
ZWQtcHRyLXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmEwMGYzNDI5NmJkNTc5NGMxNjQ0NzlmMjJhODhk
ZDRmNzM2MDAxZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ29vZ2xldGVzdC1saW5rZWQtcHRyLXRlc3QuY2MKQEAgLTAsMCArMSwxNTEgQEAKKy8vIENv
cHlyaWdodCAyMDAzLCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisv
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJp
YnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1ZGUgPHN0ZGxp
Yi5oPgorCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CisKK3VzaW5nIHRlc3Rpbmc6Ok1l
c3NhZ2U7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjsKKworaW50IG51bTsK
K01lc3NhZ2UqIGhpc3RvcnkgPSBOVUxMOworCisvLyBDbGFzcyB3aGljaCB0cmFja3MgYWxsb2Nh
dGlvbi9kZWFsbG9jYXRpb24KK2NsYXNzIEEgeworIHB1YmxpYzoKKyAgQSgpOiBteW51bShudW0r
KykgeyAqaGlzdG9yeSA8PCAiQSIgPDwgbXludW0gPDwgIiBjdG9yXG4iOyB9CisgIHZpcnR1YWwg
fkEoKSB7ICpoaXN0b3J5IDw8ICJBIiA8PCBteW51bSA8PCAiIGR0b3JcbiI7IH0KKyAgdmlydHVh
bCB2b2lkIFVzZSgpIHsgKmhpc3RvcnkgPDwgIkEiIDw8IG15bnVtIDw8ICIgdXNlXG4iOyB9Cisg
cHJvdGVjdGVkOgorICBpbnQgbXludW07Cit9OworCisvLyBTdWJjbGFzcworY2xhc3MgQiA6IHB1
YmxpYyBBIHsKKyBwdWJsaWM6CisgIEIoKSB7ICpoaXN0b3J5IDw8ICJCIiA8PCBteW51bSA8PCAi
IGN0b3JcbiI7IH0KKyAgfkIoKSB7ICpoaXN0b3J5IDw8ICJCIiA8PCBteW51bSA8PCAiIGR0b3Jc
biI7IH0KKyAgdmlydHVhbCB2b2lkIFVzZSgpIHsgKmhpc3RvcnkgPDwgIkIiIDw8IG15bnVtIDw8
ICIgdXNlXG4iOyB9Cit9OworCitjbGFzcyBMaW5rZWRQdHJUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgeworIHB1YmxpYzoKKyAgTGlua2VkUHRyVGVzdCgpIHsKKyAgICBudW0gPSAwOworICAg
IGhpc3RvcnkgPSBuZXcgTWVzc2FnZTsKKyAgfQorCisgIHZpcnR1YWwgfkxpbmtlZFB0clRlc3Qo
KSB7CisgICAgZGVsZXRlIGhpc3Rvcnk7CisgICAgaGlzdG9yeSA9IE5VTEw7CisgIH0KK307CisK
K1RFU1RfRihMaW5rZWRQdHJUZXN0LCBHZW5lcmFsVGVzdCkgeworICB7CisgICAgbGlua2VkX3B0
cjxBPiBhMCwgYTEsIGEyOworICAgIC8vIFVzZSBleHBsaWNpdCBmdW5jdGlvbiBjYWxsIG5vdGF0
aW9uIGhlcmUgdG8gc3VwcHJlc3Mgc2VsZi1hc3NpZ24gd2FybmluZy4KKyAgICBhMC5vcGVyYXRv
cj0oYTApOworICAgIGExID0gYTI7CisgICAgQVNTRVJUX0VRKGEwLmdldCgpLCBzdGF0aWNfY2Fz
dDxBKj4oTlVMTCkpOworICAgIEFTU0VSVF9FUShhMS5nZXQoKSwgc3RhdGljX2Nhc3Q8QSo+KE5V
TEwpKTsKKyAgICBBU1NFUlRfRVEoYTIuZ2V0KCksIHN0YXRpY19jYXN0PEEqPihOVUxMKSk7Cisg
ICAgQVNTRVJUX1RSVUUoYTAgPT0gTlVMTCk7CisgICAgQVNTRVJUX1RSVUUoYTEgPT0gTlVMTCk7
CisgICAgQVNTRVJUX1RSVUUoYTIgPT0gTlVMTCk7CisKKyAgICB7CisgICAgICBsaW5rZWRfcHRy
PEE+IGEzKG5ldyBBKTsKKyAgICAgIGEwID0gYTM7CisgICAgICBBU1NFUlRfVFJVRShhMCA9PSBh
Myk7CisgICAgICBBU1NFUlRfVFJVRShhMCAhPSBOVUxMKTsKKyAgICAgIEFTU0VSVF9UUlVFKGEw
LmdldCgpID09IGEzKTsKKyAgICAgIEFTU0VSVF9UUlVFKGEwID09IGEzLmdldCgpKTsKKyAgICAg
IGxpbmtlZF9wdHI8QT4gYTQoYTApOworICAgICAgYTEgPSBhNDsKKyAgICAgIGxpbmtlZF9wdHI8
QT4gYTUobmV3IEEpOworICAgICAgQVNTRVJUX1RSVUUoYTUuZ2V0KCkgIT0gYTMpOworICAgICAg
QVNTRVJUX1RSVUUoYTUgIT0gYTMuZ2V0KCkpOworICAgICAgYTIgPSBhNTsKKyAgICAgIGxpbmtl
ZF9wdHI8Qj4gYjAobmV3IEIpOworICAgICAgbGlua2VkX3B0cjxBPiBhNihiMCk7CisgICAgICBB
U1NFUlRfVFJVRShiMCA9PSBhNik7CisgICAgICBBU1NFUlRfVFJVRShhNiA9PSBiMCk7CisgICAg
ICBBU1NFUlRfVFJVRShiMCAhPSBOVUxMKTsKKyAgICAgIGE1ID0gYjA7CisgICAgICBhNSA9IGIw
OworICAgICAgYTMtPlVzZSgpOworICAgICAgYTQtPlVzZSgpOworICAgICAgYTUtPlVzZSgpOwor
ICAgICAgYTYtPlVzZSgpOworICAgICAgYjAtPlVzZSgpOworICAgICAgKCpiMCkuVXNlKCk7Cisg
ICAgICBiMC5nZXQoKS0+VXNlKCk7CisgICAgfQorCisgICAgYTAtPlVzZSgpOworICAgIGExLT5V
c2UoKTsKKyAgICBhMi0+VXNlKCk7CisKKyAgICBhMSA9IGEyOworICAgIGEyLnJlc2V0KG5ldyBB
KTsKKyAgICBhMC5yZXNldCgpOworCisgICAgbGlua2VkX3B0cjxBPiBhNzsKKyAgfQorCisgIEFT
U0VSVF9TVFJFUSgKKyAgICAiQTAgY3RvclxuIgorICAgICJBMSBjdG9yXG4iCisgICAgIkEyIGN0
b3JcbiIKKyAgICAiQjIgY3RvclxuIgorICAgICJBMCB1c2VcbiIKKyAgICAiQTAgdXNlXG4iCisg
ICAgIkIyIHVzZVxuIgorICAgICJCMiB1c2VcbiIKKyAgICAiQjIgdXNlXG4iCisgICAgIkIyIHVz
ZVxuIgorICAgICJCMiB1c2VcbiIKKyAgICAiQjIgZHRvclxuIgorICAgICJBMiBkdG9yXG4iCisg
ICAgIkEwIHVzZVxuIgorICAgICJBMCB1c2VcbiIKKyAgICAiQTEgdXNlXG4iCisgICAgIkEzIGN0
b3JcbiIKKyAgICAiQTAgZHRvclxuIgorICAgICJBMyBkdG9yXG4iCisgICAgIkExIGR0b3JcbiIs
CisgICAgaGlzdG9yeS0+R2V0U3RyaW5nKCkuY19zdHIoKSk7Cit9CisKK30gIC8vIFVubmFtZWQg
bmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxNDIzYTMz
OWU4ZmQyOGFhMmI0MjUzMDEzYjNjMjNjZTM1MzM3NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdC5w
eQpAQCAtMCwwICsxLDIwNSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdo
dCAyMDA2LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIC0tZ3Rlc3RfbGlzdF90ZXN0
cyBmbGFnLgorCitBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBsaXN0IGFsbCB0ZXN0cyBi
eSBzcGVjaWZ5aW5nIHRoZQorLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuICBUaGlzIHNjcmlwdCB0
ZXN0cyBzdWNoIGZ1bmN0aW9uYWxpdHkKK2J5IGludm9raW5nIGdvb2dsZXRlc3QtbGlzdC10ZXN0
cy11bml0dGVzdF8gKGEgcHJvZ3JhbSB3cml0dGVuIHdpdGgKK0dvb2dsZSBUZXN0KSB0aGUgY29t
bWFuZCBsaW5lIGZsYWdzLgorIiIiCisKK2ltcG9ydCByZQoraW1wb3J0IGd0ZXN0X3Rlc3RfdXRp
bHMKKworIyBDb25zdGFudHMuCisKKyMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciBlbmFibGlu
Zy9kaXNhYmxpbmcgbGlzdGluZyBhbGwgdGVzdHMuCitMSVNUX1RFU1RTX0ZMQUcgPSAnZ3Rlc3Rf
bGlzdF90ZXN0cycKKworIyBQYXRoIHRvIHRoZSBnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRl
c3RfIHByb2dyYW0uCitFWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFi
bGVQYXRoKCdnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfJykKKworIyBUaGUgZXhwZWN0
ZWQgb3V0cHV0IHdoZW4gcnVubmluZyBnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfIHdp
dGgKKyMgLS1ndGVzdF9saXN0X3Rlc3RzCitFWFBFQ1RFRF9PVVRQVVRfTk9fRklMVEVSX1JFID0g
cmUuY29tcGlsZShyIiIiRm9vRGVhdGhUZXN0XC4KKyAgVGVzdDEKK0Zvb1wuCisgIEJhcjEKKyAg
QmFyMgorICBESVNBQkxFRF9CYXIzCitBYmNcLgorICBYeXoKKyAgRGVmCitGb29CYXJcLgorICBC
YXoKK0Zvb1Rlc3RcLgorICBUZXN0MQorICBESVNBQkxFRF9UZXN0MgorICBUZXN0MworVHlwZWRU
ZXN0LzBcLiAgIyBUeXBlUGFyYW0gPSAoVmVyeUxvezI0NX18Y2xhc3MgVmVyeUxvezIzOX0pXC5c
LlwuCisgIFRlc3RBCisgIFRlc3RCCitUeXBlZFRlc3QvMVwuICAjIFR5cGVQYXJhbSA9IGludFxz
KlwqKCBfX3B0cjY0KT8KKyAgVGVzdEEKKyAgVGVzdEIKK1R5cGVkVGVzdC8yXC4gICMgVHlwZVBh
cmFtID0gLipNeUFycmF5PGJvb2wsXHMqNDI+CisgIFRlc3RBCisgIFRlc3RCCitNeS9UeXBlUGFy
YW1UZXN0LzBcLiAgIyBUeXBlUGFyYW0gPSAoVmVyeUxvezI0NX18Y2xhc3MgVmVyeUxvezIzOX0p
XC5cLlwuCisgIFRlc3RBCisgIFRlc3RCCitNeS9UeXBlUGFyYW1UZXN0LzFcLiAgIyBUeXBlUGFy
YW0gPSBpbnRccypcKiggX19wdHI2NCk/CisgIFRlc3RBCisgIFRlc3RCCitNeS9UeXBlUGFyYW1U
ZXN0LzJcLiAgIyBUeXBlUGFyYW0gPSAuKk15QXJyYXk8Ym9vbCxccyo0Mj4KKyAgVGVzdEEKKyAg
VGVzdEIKK015SW5zdGFudGlhdGlvbi9WYWx1ZVBhcmFtVGVzdFwuCisgIFRlc3RBLzAgICMgR2V0
UGFyYW1cKFwpID0gb25lIGxpbmUKKyAgVGVzdEEvMSAgIyBHZXRQYXJhbVwoXCkgPSB0d29cXG5s
aW5lcworICBUZXN0QS8yICAjIEdldFBhcmFtXChcKSA9IGEgdmVyeVxcbmxvezI0MX1cLlwuXC4K
KyAgVGVzdEIvMCAgIyBHZXRQYXJhbVwoXCkgPSBvbmUgbGluZQorICBUZXN0Qi8xICAjIEdldFBh
cmFtXChcKSA9IHR3b1xcbmxpbmVzCisgIFRlc3RCLzIgICMgR2V0UGFyYW1cKFwpID0gYSB2ZXJ5
XFxubG97MjQxfVwuXC5cLgorIiIiKQorCisjIFRoZSBleHBlY3RlZCBvdXRwdXQgd2hlbiBydW5u
aW5nIGdvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdF8gd2l0aAorIyAtLWd0ZXN0X2xpc3Rf
dGVzdHMgYW5kIC0tZ3Rlc3RfZmlsdGVyPUZvbyouCitFWFBFQ1RFRF9PVVRQVVRfRklMVEVSX0ZP
T19SRSA9IHJlLmNvbXBpbGUociIiIkZvb0RlYXRoVGVzdFwuCisgIFRlc3QxCitGb29cLgorICBC
YXIxCisgIEJhcjIKKyAgRElTQUJMRURfQmFyMworRm9vQmFyXC4KKyAgQmF6CitGb29UZXN0XC4K
KyAgVGVzdDEKKyAgRElTQUJMRURfVGVzdDIKKyAgVGVzdDMKKyIiIikKKworIyBVdGlsaXRpZXMu
CisKKworZGVmIFJ1bihhcmdzKToKKyAgIiIiUnVucyBnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5p
dHRlc3RfIGFuZCByZXR1cm5zIHRoZSBsaXN0IG9mIHRlc3RzIHByaW50ZWQuIiIiCisKKyAgcmV0
dXJuIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhbRVhFX1BBVEhdICsgYXJncywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXB0dXJlX3N0ZGVycj1GYWxzZSkub3V0
cHV0CisKKworIyBUaGUgdW5pdCB0ZXN0LgorCisKK2NsYXNzIEdUZXN0TGlzdFRlc3RzVW5pdFRl
c3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICIiIlRlc3RzIHVzaW5nIHRoZSAtLWd0
ZXN0X2xpc3RfdGVzdHMgZmxhZyB0byBsaXN0IGFsbCB0ZXN0cy4iIiIKKworICBkZWYgUnVuQW5k
VmVyaWZ5KHNlbGYsIGZsYWdfdmFsdWUsIGV4cGVjdGVkX291dHB1dF9yZSwgb3RoZXJfZmxhZyk6
CisgICAgIiIiUnVucyBnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfIGFuZCB2ZXJpZmll
cyB0aGF0IGl0IHByaW50cworICAgIHRoZSBjb3JyZWN0IHRlc3RzLgorCisgICAgQXJnczoKKyAg
ICAgIGZsYWdfdmFsdWU6ICAgICAgICAgdmFsdWUgb2YgdGhlIC0tZ3Rlc3RfbGlzdF90ZXN0cyBm
bGFnOworICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBu
b3QgYmUgcHJlc2VudC4KKyAgICAgIGV4cGVjdGVkX291dHB1dF9yZTogcmVndWxhciBleHByZXNz
aW9uIHRoYXQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
b3V0cHV0IGFmdGVyIHJ1bm5pbmcgY29tbWFuZDsKKyAgICAgIG90aGVyX2ZsYWc6ICAgICAgICAg
YSBkaWZmZXJlbnQgZmxhZyB0byBiZSBwYXNzZWQgdG8gY29tbWFuZAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbG9uZyB3aXRoIGd0ZXN0X2xpc3RfdGVzdHM7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgorICAgICIi
IgorCisgICAgaWYgZmxhZ192YWx1ZSBpcyBOb25lOgorICAgICAgZmxhZyA9ICcnCisgICAgICBm
bGFnX2V4cHJlc3Npb24gPSAnbm90IHNldCcKKyAgICBlbGlmIGZsYWdfdmFsdWUgPT0gJzAnOgor
ICAgICAgZmxhZyA9ICctLSVzPTAnICUgTElTVF9URVNUU19GTEFHCisgICAgICBmbGFnX2V4cHJl
c3Npb24gPSAnMCcKKyAgICBlbHNlOgorICAgICAgZmxhZyA9ICctLSVzJyAlIExJU1RfVEVTVFNf
RkxBRworICAgICAgZmxhZ19leHByZXNzaW9uID0gJzEnCisKKyAgICBhcmdzID0gW2ZsYWddCisK
KyAgICBpZiBvdGhlcl9mbGFnIGlzIG5vdCBOb25lOgorICAgICAgYXJncyArPSBbb3RoZXJfZmxh
Z10KKworICAgIG91dHB1dCA9IFJ1bihhcmdzKQorCisgICAgaWYgZXhwZWN0ZWRfb3V0cHV0X3Jl
OgorICAgICAgc2VsZi5hc3NlcnRfKAorICAgICAgICAgIGV4cGVjdGVkX291dHB1dF9yZS5tYXRj
aChvdXRwdXQpLAorICAgICAgICAgICgnd2hlbiAlcyBpcyAlcywgdGhlIG91dHB1dCBvZiAiJXMi
IGlzICIlcyIsXG4nCisgICAgICAgICAgICd3aGljaCBkb2VzIG5vdCBtYXRjaCByZWdleCAiJXMi
JyAlCisgICAgICAgICAgIChMSVNUX1RFU1RTX0ZMQUcsIGZsYWdfZXhwcmVzc2lvbiwgJyAnLmpv
aW4oYXJncyksIG91dHB1dCwKKyAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dF9yZS5wYXR0ZXJu
KSkpCisgICAgZWxzZToKKyAgICAgIHNlbGYuYXNzZXJ0XygKKyAgICAgICAgICBub3QgRVhQRUNU
RURfT1VUUFVUX05PX0ZJTFRFUl9SRS5tYXRjaChvdXRwdXQpLAorICAgICAgICAgICgnd2hlbiAl
cyBpcyAlcywgdGhlIG91dHB1dCBvZiAiJXMiIGlzICIlcyInJQorICAgICAgICAgICAoTElTVF9U
RVNUU19GTEFHLCBmbGFnX2V4cHJlc3Npb24sICcgJy5qb2luKGFyZ3MpLCBvdXRwdXQpKSkKKwor
ICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcihzZWxmKToKKyAgICAiIiJUZXN0cyB0aGUgYmVoYXZp
b3Igb2YgdGhlIGRlZmF1bHQgbW9kZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdf
dmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9Tm9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPU5vbmUpCisKKyAgZGVmIHRlc3RG
bGFnKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5nIHRoZSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxh
Zy4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFsdWU9JzAnLAorICAgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dF9yZT1Ob25lLAorICAgICAgICAgICAgICAgICAg
ICAgIG90aGVyX2ZsYWc9Tm9uZSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPScx
JywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9RVhQRUNURURfT1VU
UFVUX05PX0ZJTFRFUl9SRSwKKyAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPU5vbmUp
CisKKyAgZGVmIHRlc3RPdmVycmlkZU5vbkZpbHRlckZsYWdzKHNlbGYpOgorICAgICIiIlRlc3Rz
IHRoYXQgLS1ndGVzdF9saXN0X3Rlc3RzIG92ZXJyaWRlcyB0aGUgbm9uLWZpbHRlciBmbGFncy4i
IiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAg
ICAgICAgICAgIGV4cGVjdGVkX291dHB1dF9yZT1FWFBFQ1RFRF9PVVRQVVRfTk9fRklMVEVSX1JF
LAorICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2ZsYWc9Jy0tZ3Rlc3RfYnJlYWtfb25fZmFp
bHVyZScpCisKKyAgZGVmIHRlc3RXaXRoRmlsdGVyRmxhZ3Moc2VsZik6CisgICAgIiIiVGVzdHMg
dGhhdCAtLWd0ZXN0X2xpc3RfdGVzdHMgdGFrZXMgaW50byBhY2NvdW50IHRoZQorICAgIC0tZ3Rl
c3RfZmlsdGVyIGZsYWcuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPScx
JywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9RVhQRUNURURfT1VU
UFVUX0ZJTFRFUl9GT09fUkUsCisgICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz0nLS1n
dGVzdF9maWx0ZXI9Rm9vKicpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rl
c3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0Xy5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNDczYzdkMWE0NWYxZjE5NmIxMzc0ODNiMDUzY2E1OTgwMDdkMjg4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWxpc3QtdGVz
dHMtdW5pdHRlc3RfLmNjCkBAIC0wLDAgKzEsMTU2IEBACisvLyBDb3B5cmlnaHQgMjAwNiwgR29v
Z2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdz
IC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLgorLy8KKy8vIEEgdXNlciBjYW4gYXNrIEdvb2dsZSBU
ZXN0IHRvIGxpc3QgYWxsIHRlc3RzIHRoYXQgd2lsbCBydW4KKy8vIHNvIHRoYXQgd2hlbiB1c2lu
ZyBhIGZpbHRlciwgYSB1c2VyIHdpbGwga25vdyB3aGF0CisvLyB0ZXN0cyB0byBsb29rIGZvci4g
VGhlIHRlc3RzIHdpbGwgbm90IGJlIHJ1biBhZnRlciBsaXN0aW5nLgorLy8KKy8vIFRoaXMgcHJv
Z3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRlc3QuCisvLyBEb24ndCBy
dW4gaXQgZGlyZWN0bHkuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisvLyBTZXZlcmFs
IGRpZmZlcmVudCB0ZXN0IGNhc2VzIGFuZCB0ZXN0cyB0aGF0IHdpbGwgYmUgbGlzdGVkLgorVEVT
VChGb28sIEJhcjEpIHsKK30KKworVEVTVChGb28sIEJhcjIpIHsKK30KKworVEVTVChGb28sIERJ
U0FCTEVEX0JhcjMpIHsKK30KKworVEVTVChBYmMsIFh5eikgeworfQorCitURVNUKEFiYywgRGVm
KSB7Cit9CisKK1RFU1QoRm9vQmFyLCBCYXopIHsKK30KKworY2xhc3MgRm9vVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK1RFU1RfRihGb29UZXN0LCBUZXN0MSkgeworfQorCitU
RVNUX0YoRm9vVGVzdCwgRElTQUJMRURfVGVzdDIpIHsKK30KKworVEVTVF9GKEZvb1Rlc3QsIFRl
c3QzKSB7Cit9CisKK1RFU1QoRm9vRGVhdGhUZXN0LCBUZXN0MSkgeworfQorCisvLyBBIGdyb3Vw
IG9mIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCisKK2NsYXNzIE15VHlwZSB7CisgcHVibGlj
OgorICBleHBsaWNpdCBNeVR5cGUoY29uc3Qgc3RkOjpzdHJpbmcmIGFfdmFsdWUpIDogdmFsdWVf
KGFfdmFsdWUpIHt9CisKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKCkgY29uc3QgeyByZXR1
cm4gdmFsdWVfOyB9CisKKyBwcml2YXRlOgorICBzdGQ6OnN0cmluZyB2YWx1ZV87Cit9OworCisv
LyBUZWFjaGVzIEdvb2dsZSBUZXN0IGhvdyB0byBwcmludCBhIE15VHlwZS4KK3ZvaWQgUHJpbnRU
byhjb25zdCBNeVR5cGUmIHgsIHN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8IHgudmFsdWUo
KTsKK30KKworY2xhc3MgVmFsdWVQYXJhbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQ
YXJhbTxNeVR5cGU+IHsKK307CisKK1RFU1RfUChWYWx1ZVBhcmFtVGVzdCwgVGVzdEEpIHsKK30K
KworVEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBUZXN0QikgeworfQorCitJTlNUQU5USUFURV9URVNU
X0NBU0VfUCgKKyAgICBNeUluc3RhbnRpYXRpb24sIFZhbHVlUGFyYW1UZXN0LAorICAgIHRlc3Rp
bmc6OlZhbHVlcyhNeVR5cGUoIm9uZSBsaW5lIiksCisgICAgICAgICAgICAgICAgICAgIE15VHlw
ZSgidHdvXG5saW5lcyIpLAorICAgICAgICAgICAgICAgICAgICBNeVR5cGUoImEgdmVyeVxubG9v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29uZyBsaW5lIikpKTsgIC8vIE5PTElOVAorCisvLyBBIGdyb3Vw
IG9mIHR5cGVkIHRlc3RzLgorCisvLyBBIGRlbGliZXJhdGVseSBsb25nIHR5cGUgbmFtZSBmb3Ig
dGVzdGluZyB0aGUgbGluZS10cnVuY2F0aW5nCisvLyBiZWhhdmlvciB3aGVuIHByaW50aW5nIGEg
dHlwZSBwYXJhbWV0ZXIuCitjbGFzcyBWZXJ5TG9vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29nTmFtZSB7
ICAvLyBOT0xJTlQKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZWRUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIGlu
dCBrU2l6ZT4KK2NsYXNzIE15QXJyYXkgeworfTsKKwordHlwZWRlZiB0ZXN0aW5nOjpUeXBlczxW
ZXJ5TG9vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29nTmFtZSwgIC8vIE5PTElOVAorICAgICAgICAgICAg
ICAgICAgICAgICBpbnQqLCBNeUFycmF5PGJvb2wsIDQyPiA+IE15VHlwZXM7CisKK1RZUEVEX1RF
U1RfQ0FTRShUeXBlZFRlc3QsIE15VHlwZXMpOworCitUWVBFRF9URVNUKFR5cGVkVGVzdCwgVGVz
dEEpIHsKK30KKworVFlQRURfVEVTVChUeXBlZFRlc3QsIFRlc3RCKSB7Cit9CisKKy8vIEEgZ3Jv
dXAgb2YgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2NsYXNzIFR5cGVQYXJhbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitUWVBF
RF9URVNUX0NBU0VfUChUeXBlUGFyYW1UZXN0KTsKKworVFlQRURfVEVTVF9QKFR5cGVQYXJhbVRl
c3QsIFRlc3RBKSB7Cit9CisKK1RZUEVEX1RFU1RfUChUeXBlUGFyYW1UZXN0LCBUZXN0Qikgewor
fQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChUeXBlUGFyYW1UZXN0LCBUZXN0QSwgVGVz
dEIpOworCitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgVHlwZVBhcmFtVGVzdCwg
TXlUeXBlcyk7CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICA6OnRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICByZXR1cm4gUlVOX0FMTF9URVNU
UygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LWxpc3RlbmVyLXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3QtbGlzdGVuZXItdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzU1NTk3MTUxZDA5ZDZjMzE1Njcx
ZjQyZGI2NmNjNGJkNDg1MGZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWxpc3RlbmVyLXRlc3QuY2MKQEAgLTAsMCArMSwzMTEgQEAK
Ky8vIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3Ry
aWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vCisvLyBUaGUgR29v
Z2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLwor
Ly8gVGhpcyBmaWxlIHZlcmlmaWVzIEdvb2dsZSBUZXN0IGV2ZW50IGxpc3RlbmVycyByZWNlaXZl
IGV2ZW50cyBhdCB0aGUKKy8vIHJpZ2h0IHRpbWVzLgorCisjaW5jbHVkZSA8dmVjdG9yPgorCisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKwordXNpbmcgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0
RW52aXJvbm1lbnQ7Cit1c2luZyA6OnRlc3Rpbmc6OkVudmlyb25tZW50OwordXNpbmcgOjp0ZXN0
aW5nOjpJbml0R29vZ2xlVGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdDsKK3VzaW5nIDo6dGVz
dGluZzo6VGVzdENhc2U7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyOwordXNp
bmcgOjp0ZXN0aW5nOjpUZXN0SW5mbzsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ7
Cit1c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OworCisvLyBVc2VkIGJ5IHRlc3RzIHRvIHJlZ2lz
dGVyIHRoZWlyIGV2ZW50cy4KK3N0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiogZ19ldmVudHMgPSBO
VUxMOworCituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCitjbGFz
cyBFdmVudFJlY29yZGluZ0xpc3RlbmVyIDogcHVibGljIFRlc3RFdmVudExpc3RlbmVyIHsKKyBw
dWJsaWM6CisgIGV4cGxpY2l0IEV2ZW50UmVjb3JkaW5nTGlzdGVuZXIoY29uc3QgY2hhciogbmFt
ZSkgOiBuYW1lXyhuYW1lKSB7fQorCisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIHZvaWQgT25UZXN0
UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7CisgICAgZ19ldmVu
dHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0UHJvZ3JhbVN0YXJ0IikpOwor
ICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVuaXRUZXN0
JiAvKnVuaXRfdGVzdCovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGl0ZXJhdGlvbikgeworICAgIE1lc3NhZ2UgbWVzc2FnZTsKKyAgICBtZXNzYWdlIDw8IEdldEZ1
bGxNZXRob2ROYW1lKCJPblRlc3RJdGVyYXRpb25TdGFydCIpCisgICAgICAgICAgICA8PCAiKCIg
PDwgaXRlcmF0aW9uIDw8ICIpIjsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKG1lc3NhZ2UuR2V0
U3RyaW5nKCkpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzU2V0VXBTdGFy
dChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgeworICAgIGdfZXZlbnRzLT5wdXNoX2Jh
Y2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIpKTsKKyAgfQor
CisgIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1NldFVwRW5kKGNvbnN0IFVuaXRUZXN0JiAv
KnVuaXRfdGVzdCovKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFt
ZSgiT25FbnZpcm9ubWVudHNTZXRVcEVuZCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPblRl
c3RDYXNlU3RhcnQoY29uc3QgVGVzdENhc2UmIC8qdGVzdF9jYXNlKi8pIHsKKyAgICBnX2V2ZW50
cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RDYXNlU3RhcnQiKSk7CisgIH0K
KworICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8mIC8qdGVzdF9pbmZv
Ki8pIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RT
dGFydCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRl
c3RQYXJ0UmVzdWx0JiAvKnRlc3RfcGFydF9yZXN1bHQqLykgeworICAgIGdfZXZlbnRzLT5wdXNo
X2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdFBhcnRSZXN1bHQiKSk7CisgIH0KKworICB2
aXJ0dWFsIHZvaWQgT25UZXN0RW5kKGNvbnN0IFRlc3RJbmZvJiAvKnRlc3RfaW5mbyovKSB7Cisg
ICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0RW5kIikpOwor
ICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdENhc2VFbmQoY29uc3QgVGVzdENhc2UmIC8qdGVz
dF9jYXNlKi8pIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJP
blRlc3RDYXNlRW5kIikpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzVGVh
ckRvd25TdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgeworICAgIGdfZXZlbnRz
LT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFy
dCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1RlYXJEb3duRW5kKGNv
bnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhH
ZXRGdWxsTWV0aG9kTmFtZSgiT25FbnZpcm9ubWVudHNUZWFyRG93bkVuZCIpKTsKKyAgfQorCisg
IHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90
ZXN0Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGl0ZXJhdGlvbikg
eworICAgIE1lc3NhZ2UgbWVzc2FnZTsKKyAgICBtZXNzYWdlIDw8IEdldEZ1bGxNZXRob2ROYW1l
KCJPblRlc3RJdGVyYXRpb25FbmQiKQorICAgICAgICAgICAgPDwgIigiICA8PCBpdGVyYXRpb24g
PDwgIikiOworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2sobWVzc2FnZS5HZXRTdHJpbmcoKSk7Cisg
IH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0UHJvZ3JhbUVuZChjb25zdCBVbml0VGVzdCYgLyp1
bml0X3Rlc3QqLykgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUo
Ik9uVGVzdFByb2dyYW1FbmQiKSk7CisgIH0KKworIHByaXZhdGU6CisgIHN0ZDo6c3RyaW5nIEdl
dEZ1bGxNZXRob2ROYW1lKGNvbnN0IGNoYXIqIG5hbWUpIHsKKyAgICByZXR1cm4gbmFtZV8gKyAi
LiIgKyBuYW1lOworICB9CisKKyAgc3RkOjpzdHJpbmcgbmFtZV87Cit9OworCitjbGFzcyBFbnZp
cm9ubWVudEludm9jYXRpb25DYXRjaGVyIDogcHVibGljIEVudmlyb25tZW50IHsKKyBwcm90ZWN0
ZWQ6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKCJF
bnZpcm9ubWVudDo6U2V0VXAiKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsK
KyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKCJFbnZpcm9ubWVudDo6VGVhckRvd24iKTsKKyAgfQor
fTsKKworY2xhc3MgTGlzdGVuZXJUZXN0IDogcHVibGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAg
c3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKCJM
aXN0ZW5lclRlc3Q6OlNldFVwVGVzdENhc2UiKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFRlYXJE
b3duVGVzdENhc2UoKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0OjpU
ZWFyRG93blRlc3RDYXNlIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAg
Z19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0OjpTZXRVcCIpOworICB9CisKKyAgdmly
dHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVy
VGVzdDo6VGVhckRvd24iKTsKKyAgfQorfTsKKworVEVTVF9GKExpc3RlbmVyVGVzdCwgRG9lc0Zv
bykgeworICAvLyBUZXN0IGV4ZWN1dGlvbiBvcmRlciB3aXRoaW4gYSB0ZXN0IGNhc2UgaXMgbm90
IGd1YXJhbnRlZWQgc28gd2UgYXJlIG5vdAorICAvLyByZWNvcmRpbmcgdGhlIHRlc3QgbmFtZS4K
KyAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIpOworICBT
VUNDRUVEKCk7ICAvLyBUcmlnZ2VycyBPblRlc3RQYXJ0UmVzdWx0LgorfQorCitURVNUX0YoTGlz
dGVuZXJUZXN0LCBEb2VzQmFyKSB7CisgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVyVGVz
dDo6KiBUZXN0IEJvZHkiKTsKKyAgU1VDQ0VFRCgpOyAgLy8gVHJpZ2dlcnMgT25UZXN0UGFydFJl
c3VsdC4KK30KKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKK30gIC8vIG5hbWVzcGFjZSB0
ZXN0aW5nCisKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OkVudmlyb25tZW50SW52b2NhdGlv
bkNhdGNoZXI7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpFdmVudFJlY29yZGluZ0xpc3Rl
bmVyOworCit2b2lkIFZlcmlmeVJlc3VsdHMoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
JiBkYXRhLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0KiBleHBlY3RlZF9k
YXRhLAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBleHBlY3RlZF9kYXRhX3NpemUpIHsKKyAg
Y29uc3Qgc2l6ZV90IGFjdHVhbF9zaXplID0gZGF0YS5zaXplKCk7CisgIC8vIElmIHRoZSBmb2xs
b3dpbmcgYXNzZXJ0aW9uIGZhaWxzLCBhIG5ldyBlbnRyeSB3aWxsIGJlIGFwcGVuZGVkIHRvCisg
IC8vIGRhdGEuICBIZW5jZSB3ZSBzYXZlIGRhdGEuc2l6ZSgpIGZpcnN0LgorICBFWFBFQ1RfRVEo
ZXhwZWN0ZWRfZGF0YV9zaXplLCBhY3R1YWxfc2l6ZSk7CisKKyAgLy8gQ29tcGFyZXMgdGhlIGNv
bW1vbiBwcmVmaXguCisgIGNvbnN0IHNpemVfdCBzaG9ydGVyX3NpemUgPSBleHBlY3RlZF9kYXRh
X3NpemUgPD0gYWN0dWFsX3NpemUgPworICAgICAgZXhwZWN0ZWRfZGF0YV9zaXplIDogYWN0dWFs
X3NpemU7CisgIHNpemVfdCBpID0gMDsKKyAgZm9yICg7IGkgPCBzaG9ydGVyX3NpemU7ICsraSkg
eworICAgIEFTU0VSVF9TVFJFUShleHBlY3RlZF9kYXRhW2ldLCBkYXRhW2ldLmNfc3RyKCkpCisg
ICAgICAgIDw8ICJhdCBwb3NpdGlvbiAiIDw8IGk7CisgIH0KKworICAvLyBQcmludHMgZXh0cmEg
ZWxlbWVudHMgaW4gdGhlIGFjdHVhbCBkYXRhLgorICBmb3IgKDsgaSA8IGFjdHVhbF9zaXplOyAr
K2kpIHsKKyAgICBwcmludGYoIiAgQWN0dWFsIGV2ZW50ICMlbHU6ICVzXG4iLAorICAgICAgICBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpKSwgZGF0YVtpXS5jX3N0cigpKTsKKyAgfQorfQor
CitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpz
dHJpbmc+IGV2ZW50czsKKyAgZ19ldmVudHMgPSAmZXZlbnRzOworICBJbml0R29vZ2xlVGVzdCgm
YXJnYywgYXJndik7CisKKyAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpLkFw
cGVuZCgKKyAgICAgIG5ldyBFdmVudFJlY29yZGluZ0xpc3RlbmVyKCIxc3QiKSk7CisgIFVuaXRU
ZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKS5BcHBlbmQoCisgICAgICBuZXcgRXZlbnRS
ZWNvcmRpbmdMaXN0ZW5lcigiMm5kIikpOworCisgIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChu
ZXcgRW52aXJvbm1lbnRJbnZvY2F0aW9uQ2F0Y2hlcik7CisKKyAgR1RFU1RfQ0hFQ0tfKGV2ZW50
cy5zaXplKCkgPT0gMCkKKyAgICAgIDw8ICJBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQgc2hvdWxk
IG5vdCBnZW5lcmF0ZSBhbnkgZXZlbnRzIGl0c2VsZi4iOworCisgIDo6dGVzdGluZzo6R1RFU1Rf
RkxBRyhyZXBlYXQpID0gMjsKKyAgaW50IHJldF92YWwgPSBSVU5fQUxMX1RFU1RTKCk7CisKKyAg
Y29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRfZXZlbnRzW10gPSB7CisgICAgIjFzdC5PblRlc3RQ
cm9ncmFtU3RhcnQiLAorICAgICIybmQuT25UZXN0UHJvZ3JhbVN0YXJ0IiwKKyAgICAiMXN0Lk9u
VGVzdEl0ZXJhdGlvblN0YXJ0KDApIiwKKyAgICAiMm5kLk9uVGVzdEl0ZXJhdGlvblN0YXJ0KDAp
IiwKKyAgICAiMXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIsCisgICAgIjJuZC5PbkVudmly
b25tZW50c1NldFVwU3RhcnQiLAorICAgICJFbnZpcm9ubWVudDo6U2V0VXAiLAorICAgICIybmQu
T25FbnZpcm9ubWVudHNTZXRVcEVuZCIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVwRW5k
IiwKKyAgICAiMXN0Lk9uVGVzdENhc2VTdGFydCIsCisgICAgIjJuZC5PblRlc3RDYXNlU3RhcnQi
LAorICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwVGVzdENhc2UiLAorICAgICIxc3QuT25UZXN0U3Rh
cnQiLAorICAgICIybmQuT25UZXN0U3RhcnQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwK
KyAgICAiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCisgICAgIjFzdC5PblRlc3RQYXJ0UmVz
dWx0IiwKKyAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlRl
YXJEb3duIiwKKyAgICAiMm5kLk9uVGVzdEVuZCIsCisgICAgIjFzdC5PblRlc3RFbmQiLAorICAg
ICIxc3QuT25UZXN0U3RhcnQiLAorICAgICIybmQuT25UZXN0U3RhcnQiLAorICAgICJMaXN0ZW5l
clRlc3Q6OlNldFVwIiwKKyAgICAiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCisgICAgIjFz
dC5PblRlc3RQYXJ0UmVzdWx0IiwKKyAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAorICAgICJM
aXN0ZW5lclRlc3Q6OlRlYXJEb3duIiwKKyAgICAiMm5kLk9uVGVzdEVuZCIsCisgICAgIjFzdC5P
blRlc3RFbmQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duVGVzdENhc2UiLAorICAgICIy
bmQuT25UZXN0Q2FzZUVuZCIsCisgICAgIjFzdC5PblRlc3RDYXNlRW5kIiwKKyAgICAiMXN0Lk9u
RW52aXJvbm1lbnRzVGVhckRvd25TdGFydCIsCisgICAgIjJuZC5PbkVudmlyb25tZW50c1RlYXJE
b3duU3RhcnQiLAorICAgICJFbnZpcm9ubWVudDo6VGVhckRvd24iLAorICAgICIybmQuT25FbnZp
cm9ubWVudHNUZWFyRG93bkVuZCIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5k
IiwKKyAgICAiMm5kLk9uVGVzdEl0ZXJhdGlvbkVuZCgwKSIsCisgICAgIjFzdC5PblRlc3RJdGVy
YXRpb25FbmQoMCkiLAorICAgICIxc3QuT25UZXN0SXRlcmF0aW9uU3RhcnQoMSkiLAorICAgICIy
bmQuT25UZXN0SXRlcmF0aW9uU3RhcnQoMSkiLAorICAgICIxc3QuT25FbnZpcm9ubWVudHNTZXRV
cFN0YXJ0IiwKKyAgICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIsCisgICAgIkVudmly
b25tZW50OjpTZXRVcCIsCisgICAgIjJuZC5PbkVudmlyb25tZW50c1NldFVwRW5kIiwKKyAgICAi
MXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiLAorICAgICIxc3QuT25UZXN0Q2FzZVN0YXJ0IiwK
KyAgICAiMm5kLk9uVGVzdENhc2VTdGFydCIsCisgICAgIkxpc3RlbmVyVGVzdDo6U2V0VXBUZXN0
Q2FzZSIsCisgICAgIjFzdC5PblRlc3RTdGFydCIsCisgICAgIjJuZC5PblRlc3RTdGFydCIsCisg
ICAgIkxpc3RlbmVyVGVzdDo6U2V0VXAiLAorICAgICJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5
IiwKKyAgICAiMXN0Lk9uVGVzdFBhcnRSZXN1bHQiLAorICAgICIybmQuT25UZXN0UGFydFJlc3Vs
dCIsCisgICAgIkxpc3RlbmVyVGVzdDo6VGVhckRvd24iLAorICAgICIybmQuT25UZXN0RW5kIiwK
KyAgICAiMXN0Lk9uVGVzdEVuZCIsCisgICAgIjFzdC5PblRlc3RTdGFydCIsCisgICAgIjJuZC5P
blRlc3RTdGFydCIsCisgICAgIkxpc3RlbmVyVGVzdDo6U2V0VXAiLAorICAgICJMaXN0ZW5lclRl
c3Q6OiogVGVzdCBCb2R5IiwKKyAgICAiMXN0Lk9uVGVzdFBhcnRSZXN1bHQiLAorICAgICIybmQu
T25UZXN0UGFydFJlc3VsdCIsCisgICAgIkxpc3RlbmVyVGVzdDo6VGVhckRvd24iLAorICAgICIy
bmQuT25UZXN0RW5kIiwKKyAgICAiMXN0Lk9uVGVzdEVuZCIsCisgICAgIkxpc3RlbmVyVGVzdDo6
VGVhckRvd25UZXN0Q2FzZSIsCisgICAgIjJuZC5PblRlc3RDYXNlRW5kIiwKKyAgICAiMXN0Lk9u
VGVzdENhc2VFbmQiLAorICAgICIxc3QuT25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0IiwKKyAg
ICAiMm5kLk9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydCIsCisgICAgIkVudmlyb25tZW50OjpU
ZWFyRG93biIsCisgICAgIjJuZC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5kIiwKKyAgICAiMXN0
Lk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiLAorICAgICIybmQuT25UZXN0SXRlcmF0aW9uRW5k
KDEpIiwKKyAgICAiMXN0Lk9uVGVzdEl0ZXJhdGlvbkVuZCgxKSIsCisgICAgIjJuZC5PblRlc3RQ
cm9ncmFtRW5kIiwKKyAgICAiMXN0Lk9uVGVzdFByb2dyYW1FbmQiCisgIH07CisgIFZlcmlmeVJl
c3VsdHMoZXZlbnRzLAorICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V2ZW50cywKKyAgICAgICAg
ICAgICAgICBzaXplb2YoZXhwZWN0ZWRfZXZlbnRzKS9zaXplb2YoZXhwZWN0ZWRfZXZlbnRzWzBd
KSk7CisKKyAgLy8gV2UgbmVlZCB0byBjaGVjayBtYW51YWxseSBmb3IgYWQgaG9jIHRlc3QgZmFp
bHVyZXMgdGhhdCBoYXBwZW4gYWZ0ZXIKKyAgLy8gUlVOX0FMTF9URVNUUyBmaW5pc2hlcy4KKyAg
aWYgKFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5GYWlsZWQoKSkKKyAgICByZXRfdmFsID0gMTsK
KworICByZXR1cm4gcmV0X3ZhbDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ29vZ2xldGVzdC1tZXNzYWdlLXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtbWVzc2FnZS10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2NDQ1ODUz
ZTQzM2QzYzE0MzQ1MjU3MzkxYTZiOTg4YTlkMzgwZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbWVzc2FnZS10ZXN0LmNjCkBAIC0w
LDAgKzEsMTU4IEBACisvLyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKy8vCisvLyBUZXN0cyBmb3IgdGhlIE1lc3NhZ2UgY2xhc3MuCisKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC1tZXNzYWdlLmgiCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3Bh
Y2UgeworCit1c2luZyA6OnRlc3Rpbmc6Ok1lc3NhZ2U7CisKKy8vIFRlc3RzIHRoZSB0ZXN0aW5n
OjpNZXNzYWdlIGNsYXNzCisKKy8vIFRlc3RzIHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yLgorVEVT
VChNZXNzYWdlVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yKSB7CisgIGNvbnN0IE1lc3NhZ2UgbXNn
OworICBFWFBFQ1RfRVEoIiIsIG1zZy5HZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRlc3RzIHRoZSBj
b3B5IGNvbnN0cnVjdG9yLgorVEVTVChNZXNzYWdlVGVzdCwgQ29weUNvbnN0cnVjdG9yKSB7Cisg
IGNvbnN0IE1lc3NhZ2UgbXNnMSgiSGVsbG8iKTsKKyAgY29uc3QgTWVzc2FnZSBtc2cyKG1zZzEp
OworICBFWFBFQ1RfRVEoIkhlbGxvIiwgbXNnMi5HZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRlc3Rz
IGNvbnN0cnVjdGluZyBhIE1lc3NhZ2UgZnJvbSBhIEMtc3RyaW5nLgorVEVTVChNZXNzYWdlVGVz
dCwgQ29uc3RydWN0c0Zyb21DU3RyaW5nKSB7CisgIE1lc3NhZ2UgbXNnKCJIZWxsbyIpOworICBF
WFBFQ1RfRVEoIkhlbGxvIiwgbXNnLkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMgc3RyZWFt
aW5nIGEgZmxvYXQuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zRmxvYXQpIHsKKyAgY29uc3Qg
c3RkOjpzdHJpbmcgcyA9IChNZXNzYWdlKCkgPDwgMS4yMzQ1NkYgPDwgIiAiIDw8IDIuMzQ1NjdG
KS5HZXRTdHJpbmcoKTsKKyAgLy8gQm90aCBudW1iZXJzIHNob3VsZCBiZSBwcmludGVkIHdpdGgg
ZW5vdWdoIHByZWNpc2lvbi4KKyAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0
cmluZywgIjEuMjM0NTYwIiwgcy5jX3N0cigpKTsKKyAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0
aW5nOjpJc1N1YnN0cmluZywgIiAyLjM0NTY2OSIsIHMuY19zdHIoKSk7Cit9CisKKy8vIFRlc3Rz
IHN0cmVhbWluZyBhIGRvdWJsZS4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNEb3VibGUpIHsK
KyAgY29uc3Qgc3RkOjpzdHJpbmcgcyA9IChNZXNzYWdlKCkgPDwgMTI2MDU3MDg4MC40NTU1NDk3
IDw8ICIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDEyNjA1NzIyNjUu
MTk1NDUzNCkuR2V0U3RyaW5nKCk7CisgIC8vIEJvdGggbnVtYmVycyBzaG91bGQgYmUgcHJpbnRl
ZCB3aXRoIGVub3VnaCBwcmVjaXNpb24uCisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6
SXNTdWJzdHJpbmcsICIxMjYwNTcwODgwLjQ1Iiwgcy5jX3N0cigpKTsKKyAgRVhQRUNUX1BSRURf
Rk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIiAxMjYwNTcyMjY1LjE5Iiwgcy5jX3N0cigp
KTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGEgbm9uLWNoYXIgcG9pbnRlci4KK1RFU1QoTWVz
c2FnZVRlc3QsIFN0cmVhbXNQb2ludGVyKSB7CisgIGludCBuID0gMDsKKyAgaW50KiBwID0gJm47
CisgIEVYUEVDVF9ORSgiKG51bGwpIiwgKE1lc3NhZ2UoKSA8PCBwKS5HZXRTdHJpbmcoKSk7Cit9
CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIE5VTEwgbm9uLWNoYXIgcG9pbnRlci4KK1RFU1QoTWVz
c2FnZVRlc3QsIFN0cmVhbXNOdWxsUG9pbnRlcikgeworICBpbnQqIHAgPSBOVUxMOworICBFWFBF
Q1RfRVEoIihudWxsKSIsIChNZXNzYWdlKCkgPDwgcCkuR2V0U3RyaW5nKCkpOworfQorCisvLyBU
ZXN0cyBzdHJlYW1pbmcgYSBDIHN0cmluZy4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNDU3Ry
aW5nKSB7CisgIEVYUEVDVF9FUSgiRm9vIiwgKE1lc3NhZ2UoKSA8PCAiRm9vIikuR2V0U3RyaW5n
KCkpOworfQorCisvLyBUZXN0cyBzdHJlYW1pbmcgYSBOVUxMIEMgc3RyaW5nLgorVEVTVChNZXNz
YWdlVGVzdCwgU3RyZWFtc051bGxDU3RyaW5nKSB7CisgIGNoYXIqIHAgPSBOVUxMOworICBFWFBF
Q1RfRVEoIihudWxsKSIsIChNZXNzYWdlKCkgPDwgcCkuR2V0U3RyaW5nKCkpOworfQorCisvLyBU
ZXN0cyBzdHJlYW1pbmcgc3RkOjpzdHJpbmcuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zU3Ry
aW5nKSB7CisgIGNvbnN0IDo6c3RkOjpzdHJpbmcgc3RyKCJIZWxsbyIpOworICBFWFBFQ1RfRVEo
IkhlbGxvIiwgKE1lc3NhZ2UoKSA8PCBzdHIpLkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMg
dGhhdCB3ZSBjYW4gb3V0cHV0IHN0cmluZ3MgY29udGFpbmluZyBlbWJlZGRlZCBOVUxzLgorVEVT
VChNZXNzYWdlVGVzdCwgU3RyZWFtc1N0cmluZ1dpdGhFbWJlZGRlZE5VTCkgeworICBjb25zdCBj
aGFyIGNoYXJfYXJyYXlfd2l0aF9udWxbXSA9CisgICAgICAiSGVyZSdzIGEgTlVMXDAgYW5kIHNv
bWUgbW9yZSBzdHJpbmciOworICBjb25zdCA6OnN0ZDo6c3RyaW5nIHN0cmluZ193aXRoX251bChj
aGFyX2FycmF5X3dpdGhfbnVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplb2YoY2hhcl9hcnJheV93aXRoX251bCkgLSAxKTsKKyAgRVhQRUNUX0VRKCJIZXJlJ3Mg
YSBOVUxcXDAgYW5kIHNvbWUgbW9yZSBzdHJpbmciLAorICAgICAgICAgICAgKE1lc3NhZ2UoKSA8
PCBzdHJpbmdfd2l0aF9udWwpLkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5n
IGEgTlVMIGNoYXIuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zTlVMQ2hhcikgeworICBFWFBF
Q1RfRVEoIlxcMCIsIChNZXNzYWdlKCkgPDwgJ1wwJykuR2V0U3RyaW5nKCkpOworfQorCisvLyBU
ZXN0cyBzdHJlYW1pbmcgaW50LgorVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc0ludCkgeworICBF
WFBFQ1RfRVEoIjEyMyIsIChNZXNzYWdlKCkgPDwgMTIzKS5HZXRTdHJpbmcoKSk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgYmFzaWMgSU8gbWFuaXB1bGF0b3JzIChlbmRsLCBlbmRzLCBhbmQgZmx1c2gp
IGNhbiBiZQorLy8gc3RyZWFtZWQgdG8gTWVzc2FnZS4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVh
bXNCYXNpY0lvTWFuaXApIHsKKyAgRVhQRUNUX0VRKCJMaW5lIDEuXG5BIE5VTCBjaGFyIFxcMCBp
biBsaW5lIDIuIiwKKyAgICAgICAgICAgICAgIChNZXNzYWdlKCkgPDwgIkxpbmUgMS4iIDw8IHN0
ZDo6ZW5kbAorICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJBIE5VTCBjaGFyICIgPDwgc3Rk
OjplbmRzIDw8IHN0ZDo6Zmx1c2gKKyAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGluIGxp
bmUgMi4iKS5HZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRlc3RzIE1lc3NhZ2U6OkdldFN0cmluZygp
CitURVNUKE1lc3NhZ2VUZXN0LCBHZXRTdHJpbmcpIHsKKyAgTWVzc2FnZSBtc2c7CisgIG1zZyA8
PCAxIDw8ICIgbGFtYiI7CisgIEVYUEVDVF9FUSgiMSBsYW1iIiwgbXNnLkdldFN0cmluZygpKTsK
K30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGEgTWVzc2FnZSBvYmplY3QgdG8gYW4gb3N0cmVhbS4K
K1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNUb09TdHJlYW0pIHsKKyAgTWVzc2FnZSBtc2coIkhl
bGxvIik7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIHNzIDw8IG1zZzsKKyAgRVhQRUNU
X0VRKCJIZWxsbyIsIHRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmdTdHJlYW1Ub1N0cmluZygmc3Mp
KTsKK30KKworLy8gVGVzdHMgdGhhdCBhIE1lc3NhZ2Ugb2JqZWN0IGRvZXNuJ3QgdGFrZSB1cCB0
b28gbXVjaCBzdGFjayBzcGFjZS4KK1RFU1QoTWVzc2FnZVRlc3QsIERvZXNOb3RUYWtlVXBNdWNo
U3RhY2tTcGFjZSkgeworICBFWFBFQ1RfTEUoc2l6ZW9mKE1lc3NhZ2UpLCAxNlUpOworfQorCit9
ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z29vZ2xldGVzdC1vcHRpb25zLXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3Qtb3B0aW9ucy10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkZDRlYmEzYmQzMTA5NTk1
MGE4ZDk4Y2YzZGFmNmYzNGQ2NDk2OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3B0aW9ucy10ZXN0LmNjCkBAIC0wLDAgKzEsMjEx
IEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
Ky8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8g
R29vZ2xlIFRlc3QgVW5pdFRlc3RPcHRpb25zIHRlc3RzCisvLworLy8gVGhpcyBmaWxlIHRlc3Rz
IGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkgYnkKKy8vIEdvb2dsZSBUZXN0
LiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCisvLworLy8gVGhp
cyBmaWxlIGlzICNpbmNsdWRlZCBmcm9tIGd0ZXN0LmNjLCB0byBhdm9pZCBjaGFuZ2luZyBidWls
ZCBvcgorLy8gbWFrZS1maWxlcyBvbiBXaW5kb3dzIGFuZCBvdGhlciBwbGF0Zm9ybXMuIERvIG5v
dCAjaW5jbHVkZSB0aGlzIGZpbGUKKy8vIGFueXdoZXJlIGVsc2UhCisKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgorCisjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaW5jbHVkZSA8d2lu
ZG93cy5oPgorI2VsaWYgR1RFU1RfT1NfV0lORE9XUworIyBpbmNsdWRlIDxkaXJlY3QuaD4KKyNl
bmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKworI2luY2x1ZGUgInNyYy9ndGVzdC1p
bnRlcm5hbC1pbmwuaCIKKworbmFtZXNwYWNlIHRlc3RpbmcgeworbmFtZXNwYWNlIGludGVybmFs
IHsKK25hbWVzcGFjZSB7CisKKy8vIFR1cm5zIHRoZSBnaXZlbiByZWxhdGl2ZSBwYXRoIGludG8g
YW4gYWJzb2x1dGUgcGF0aC4KK0ZpbGVQYXRoIEdldEFic29sdXRlUGF0aE9mKGNvbnN0IEZpbGVQ
YXRoJiByZWxhdGl2ZV9wYXRoKSB7CisgIHJldHVybiBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmls
ZVBhdGg6OkdldEN1cnJlbnREaXIoKSwgcmVsYXRpdmVfcGF0aCk7Cit9CisKKy8vIFRlc3Rpbmcg
VW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQvR2V0T3V0cHV0RmlsZS4KKworVEVTVChY
bWxPdXRwdXRUZXN0LCBHZXRPdXRwdXRGb3JtYXREZWZhdWx0KSB7CisgIEdURVNUX0ZMQUcob3V0
cHV0KSA9ICIiOworICBFWFBFQ1RfU1RSRVEoIiIsIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0
Rm9ybWF0KCkuY19zdHIoKSk7Cit9CisKK1RFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0Rm9y
bWF0KSB7CisgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6ZmlsZW5hbWUiOworICBFWFBFQ1Rf
U1RSRVEoInhtbCIsIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCkuY19zdHIoKSk7
Cit9CisKK1RFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0RmlsZURlZmF1bHQpIHsKKyAgR1RF
U1RfRkxBRyhvdXRwdXQpID0gIiI7CisgIEVYUEVDVF9FUShHZXRBYnNvbHV0ZVBhdGhPZihGaWxl
UGF0aCgidGVzdF9kZXRhaWwueG1sIikpLnN0cmluZygpLAorICAgICAgICAgICAgVW5pdFRlc3RP
cHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSk7Cit9CisKK1RFU1QoWG1sT3V0
cHV0VGVzdCwgR2V0T3V0cHV0RmlsZVNpbmdsZUZpbGUpIHsKKyAgR1RFU1RfRkxBRyhvdXRwdXQp
ID0gInhtbDpmaWxlbmFtZS5hYmMiOworICBFWFBFQ1RfRVEoR2V0QWJzb2x1dGVQYXRoT2YoRmls
ZVBhdGgoImZpbGVuYW1lLmFiYyIpKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0
aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOworfQorCitURVNUKFhtbE91dHB1
dFRlc3QsIEdldE91dHB1dEZpbGVGcm9tRGlyZWN0b3J5UGF0aCkgeworICBHVEVTVF9GTEFHKG91
dHB1dCkgPSAieG1sOnBhdGgiIEdURVNUX1BBVEhfU0VQXzsKKyAgY29uc3Qgc3RkOjpzdHJpbmcg
ZXhwZWN0ZWRfb3V0cHV0X2ZpbGUgPQorICAgICAgR2V0QWJzb2x1dGVQYXRoT2YoCisgICAgICAg
ICAgRmlsZVBhdGgoc3RkOjpzdHJpbmcoInBhdGgiKSArIEdURVNUX1BBVEhfU0VQXyArCisgICAg
ICAgICAgICAgICAgICAgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKyAiLnht
bCIpKS5zdHJpbmcoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9maWxlID0KKyAgICAg
IFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7CisjaWYgR1RF
U1RfT1NfV0lORE9XUworICBFWFBFQ1RfU1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxlLmNf
c3RyKCksIG91dHB1dF9maWxlLmNfc3RyKCkpOworI2Vsc2UKKyAgRVhQRUNUX0VRKGV4cGVjdGVk
X291dHB1dF9maWxlLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKKyNlbmRpZgorfQorCitURVNUKE91
dHB1dEZpbGVIZWxwZXJzVGVzdCwgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKSB7CisgIGNvbnN0
IHN0ZDo6c3RyaW5nIGV4ZV9zdHIgPSBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmco
KTsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIGNvbnN0IGJvb2wgc3VjY2VzcyA9CisgICAgICBf
c3RyY21waSgiZ29vZ2xldGVzdC1vcHRpb25zLXRlc3QiLCBleGVfc3RyLmNfc3RyKCkpID09IDAg
fHwKKyAgICAgIF9zdHJjbXBpKCJndGVzdC1vcHRpb25zLWV4X3Rlc3QiLCBleGVfc3RyLmNfc3Ry
KCkpID09IDAgfHwKKyAgICAgIF9zdHJjbXBpKCJndGVzdF9hbGxfdGVzdCIsIGV4ZV9zdHIuY19z
dHIoKSkgPT0gMCB8fAorICAgICAgX3N0cmNtcGkoImd0ZXN0X2RsbF90ZXN0IiwgZXhlX3N0ci5j
X3N0cigpKSA9PSAwOworI2VsaWYgR1RFU1RfT1NfRlVDSFNJQQorICBjb25zdCBib29sIHN1Y2Nl
c3MgPSBleGVfc3RyID09ICJhcHAiOworI2Vsc2UKKyAgLy8gRklYTUU6IHJlbW92ZSB0aGUgaGFy
ZC1jb2RlZCAibHQtIiBwcmVmaXggd2hlbiBsaWJ0b29sIHJlcGxhY2VtZW50IGlzIHJlYWR5Cisg
IGNvbnN0IGJvb2wgc3VjY2VzcyA9CisgICAgICBleGVfc3RyID09ICJnb29nbGV0ZXN0LW9wdGlv
bnMtdGVzdCIgfHwKKyAgICAgIGV4ZV9zdHIgPT0gImd0ZXN0X2FsbF90ZXN0IiB8fAorICAgICAg
ZXhlX3N0ciA9PSAibHQtZ3Rlc3RfYWxsX3Rlc3QiIHx8CisgICAgICBleGVfc3RyID09ICJndGVz
dF9kbGxfdGVzdCI7CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyAgaWYgKCFzdWNjZXNz
KQorICAgIEZBSUwoKSA8PCAiR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkgcmV0dXJucyAiIDw8
IGV4ZV9zdHI7Cit9CisKKyNpZiAhR1RFU1RfT1NfRlVDSFNJQQorCitjbGFzcyBYbWxPdXRwdXRD
aGFuZ2VEaXJUZXN0IDogcHVibGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB2b2lk
IFNldFVwKCkgeworICAgIG9yaWdpbmFsX3dvcmtpbmdfZGlyXyA9IEZpbGVQYXRoOjpHZXRDdXJy
ZW50RGlyKCk7CisgICAgcG9zaXg6OkNoRGlyKCIuLiIpOworICAgIC8vIFRoaXMgd2lsbCBtYWtl
IHRoZSB0ZXN0IGZhaWwgaWYgcnVuIGZyb20gdGhlIHJvb3QgZGlyZWN0b3J5LgorICAgIEVYUEVD
VF9ORShvcmlnaW5hbF93b3JraW5nX2Rpcl8uc3RyaW5nKCksCisgICAgICAgICAgICAgIEZpbGVQ
YXRoOjpHZXRDdXJyZW50RGlyKCkuc3RyaW5nKCkpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRl
YXJEb3duKCkgeworICAgIHBvc2l4OjpDaERpcihvcmlnaW5hbF93b3JraW5nX2Rpcl8uc3RyaW5n
KCkuY19zdHIoKSk7CisgIH0KKworICBGaWxlUGF0aCBvcmlnaW5hbF93b3JraW5nX2Rpcl87Cit9
OworCitURVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtp
bmdEaXJXaXRoRGVmYXVsdCkgeworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAiIjsKKyAgRVhQRUNU
X0VRKEZpbGVQYXRoOjpDb25jYXRQYXRocyhvcmlnaW5hbF93b3JraW5nX2Rpcl8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoInRlc3RfZGV0YWlsLnhtbCIpKS5z
dHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9P
dXRwdXRGaWxlKCkpOworfQorCitURVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwgUHJlc2Vy
dmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoRGVmYXVsdFhNTCkgeworICBHVEVTVF9GTEFHKG91dHB1
dCkgPSAieG1sIjsKKyAgRVhQRUNUX0VRKEZpbGVQYXRoOjpDb25jYXRQYXRocyhvcmlnaW5hbF93
b3JraW5nX2Rpcl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgo
InRlc3RfZGV0YWlsLnhtbCIpKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9u
czo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOworfQorCitURVNUX0YoWG1sT3V0cHV0
Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoUmVsYXRpdmVGaWxl
KSB7CisgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6ZmlsZW5hbWUuYWJjIjsKKyAgRVhQRUNU
X0VRKEZpbGVQYXRoOjpDb25jYXRQYXRocyhvcmlnaW5hbF93b3JraW5nX2Rpcl8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImZpbGVuYW1lLmFiYyIpKS5zdHJp
bmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRw
dXRGaWxlKCkpOworfQorCitURVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVP
cmlnaW5hbFdvcmtpbmdEaXJXaXRoUmVsYXRpdmVQYXRoKSB7CisgIEdURVNUX0ZMQUcob3V0cHV0
KSA9ICJ4bWw6cGF0aCIgR1RFU1RfUEFUSF9TRVBfOworICBjb25zdCBzdGQ6OnN0cmluZyBleHBl
Y3RlZF9vdXRwdXRfZmlsZSA9CisgICAgICBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoCisgICAgICAg
ICAgb3JpZ2luYWxfd29ya2luZ19kaXJfLAorICAgICAgICAgIEZpbGVQYXRoKHN0ZDo6c3RyaW5n
KCJwYXRoIikgKyBHVEVTVF9QQVRIX1NFUF8gKworICAgICAgICAgICAgICAgICAgIEdldEN1cnJl
bnRFeGVjdXRhYmxlTmFtZSgpLnN0cmluZygpICsgIi54bWwiKSkuc3RyaW5nKCk7CisgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZmlsZSA9CisgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFi
c29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpOworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgRVhQRUNU
X1NUUkNBU0VFUShleHBlY3RlZF9vdXRwdXRfZmlsZS5jX3N0cigpLCBvdXRwdXRfZmlsZS5jX3N0
cigpKTsKKyNlbHNlCisgIEVYUEVDVF9FUShleHBlY3RlZF9vdXRwdXRfZmlsZSwgb3V0cHV0X2Zp
bGUuY19zdHIoKSk7CisjZW5kaWYKK30KKworVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3Qs
IFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aEFic29sdXRlRmlsZSkgeworI2lmIEdURVNU
X09TX1dJTkRPV1MKKyAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbDpjOlxcdG1wXFxmaWxlbmFt
ZS5hYmMiOworICBFWFBFQ1RfRVEoRmlsZVBhdGgoImM6XFx0bXBcXGZpbGVuYW1lLmFiYyIpLnN0
cmluZygpLAorICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091
dHB1dEZpbGUoKSk7CisjZWxzZQorICBHVEVTVF9GTEFHKG91dHB1dCkgPSJ4bWw6L3RtcC9maWxl
bmFtZS5hYmMiOworICBFWFBFQ1RfRVEoRmlsZVBhdGgoIi90bXAvZmlsZW5hbWUuYWJjIikuc3Ry
aW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0
cHV0RmlsZSgpKTsKKyNlbmRpZgorfQorCitURVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwg
UHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoQWJzb2x1dGVQYXRoKSB7CisjaWYgR1RFU1Rf
T1NfV0lORE9XUworICBjb25zdCBzdGQ6OnN0cmluZyBwYXRoID0gImM6XFx0bXBcXCI7CisjZWxz
ZQorICBjb25zdCBzdGQ6OnN0cmluZyBwYXRoID0gIi90bXAvIjsKKyNlbmRpZgorCisgIEdURVNU
X0ZMQUcob3V0cHV0KSA9ICJ4bWw6IiArIHBhdGg7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVj
dGVkX291dHB1dF9maWxlID0KKyAgICAgIHBhdGggKyBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUo
KS5zdHJpbmcoKSArICIueG1sIjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9maWxlID0K
KyAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7CisK
KyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIEVYUEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWRfb3V0cHV0
X2ZpbGUuY19zdHIoKSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7CisjZWxzZQorICBFWFBFQ1RfRVEo
ZXhwZWN0ZWRfb3V0cHV0X2ZpbGUsIG91dHB1dF9maWxlLmNfc3RyKCkpOworI2VuZGlmCit9CisK
KyNlbmRpZiAgLy8gIUdURVNUX09TX0ZVQ0hTSUEKKworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBu
YW1lc3BhY2UgaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3QtZ29sZGVu
LWxpbi50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0
LXRlc3QtZ29sZGVuLWxpbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzcxMWNkYzY4YWU1MzhjY2U5ZTM5ODRi
Y2UxYjdhYjY1YWE2MmE1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ29vZ2xldGVzdC1vdXRwdXQtdGVzdC1nb2xkZW4tbGluLnR4dApAQCAtMCwwICsx
LDEwNDcgQEAKK1RoZSBub24tdGVzdCBwYXJ0IG9mIHRoZSBjb2RlIGlzIGV4cGVjdGVkIHRvIGhh
dmUgMiBmYWlsdXJlcy4KKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQor
VmFsdWUgb2Y6IGZhbHNlCisgIEFjdHVhbDogZmFsc2UKK0V4cGVjdGVkOiB0cnVlCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUK
K0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMgorICAzCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKKxtbMDszMm1bPT09PT09PT09PV0gG1ttUnVubmluZyA3NiB0ZXN0cyBm
cm9tIDM0IHRlc3QgY2FzZXMuCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbUdsb2JhbCB0ZXN0IGVu
dmlyb25tZW50IHNldC11cC4KK0Zvb0Vudmlyb25tZW50OjpTZXRVcCgpIGNhbGxlZC4KK0JhckVu
dmlyb25tZW50OjpTZXRVcCgpIGNhbGxlZC4KKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0
IGZyb20gQURlYXRoVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21BRGVhdGhUZXN0LlNob3Vs
ZFJ1bkZpcnN0CisbWzA7MzJtWyAgICAgICBPSyBdIBtbbUFEZWF0aFRlc3QuU2hvdWxkUnVuRmly
c3QKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gQVR5cGVkRGVhdGhUZXN0LzAs
IHdoZXJlIFR5cGVQYXJhbSA9IGludAorG1swOzMybVsgUlVOICAgICAgXSAbW21BVHlwZWREZWF0
aFRlc3QvMC5TaG91bGRSdW5GaXJzdAorG1swOzMybVsgICAgICAgT0sgXSAbW21BVHlwZWREZWF0
aFRlc3QvMC5TaG91bGRSdW5GaXJzdAorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJv
bSBBVHlwZWREZWF0aFRlc3QvMSwgd2hlcmUgVHlwZVBhcmFtID0gZG91YmxlCisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbUFUeXBlZERlYXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0CisbWzA7MzJtWyAg
ICAgICBPSyBdIBtbbUFUeXBlZERlYXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0CisbWzA7MzJtWy0t
LS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMCwgd2hlcmUg
VHlwZVBhcmFtID0gaW50CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbU15L0FUeXBlUGFyYW1EZWF0
aFRlc3QvMC5TaG91bGRSdW5GaXJzdAorG1swOzMybVsgICAgICAgT0sgXSAbW21NeS9BVHlwZVBh
cmFtRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0
ZXN0IGZyb20gTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8xLCB3aGVyZSBUeXBlUGFyYW0gPSBkb3Vi
bGUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8xLlNob3Vs
ZFJ1bkZpcnN0CisbWzA7MzJtWyAgICAgICBPSyBdIBtbbU15L0FUeXBlUGFyYW1EZWF0aFRlc3Qv
MS5TaG91bGRSdW5GaXJzdAorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gUGFz
c2luZ1Rlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3Qx
CisbWzA7MzJtWyAgICAgICBPSyBdIBtbbVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MQorG1swOzMy
bVsgUlVOICAgICAgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDIKKxtbMDszMm1bICAgICAg
IE9LIF0gG1ttUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtb
bTIgdGVzdHMgZnJvbSBOb25mYXRhbEZhaWx1cmVUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtb
bU5vbmZhdGFsRmFpbHVyZVRlc3QuRXNjYXBlc1N0cmluZ09wZXJhbmRzCitnb29nbGV0ZXN0LW91
dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1
ZXM6CisgIGtHb2xkZW5TdHJpbmcKKyAgICBXaGljaCBpczogIlwiTGluZSIKKyAgYWN0dWFsCisg
ICAgV2hpY2ggaXM6ICJhY3R1YWwgXCJzdHJpbmdcIiIKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkK
KworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxp
dHkgb2YgdGhlc2UgdmFsdWVzOgorICBnb2xkZW4KKyAgICBXaGljaCBpczogIlwiTGluZSIKKyAg
YWN0dWFsCisgICAgV2hpY2ggaXM6ICJhY3R1YWwgXCJzdHJpbmdcIiIKK1N0YWNrIHRyYWNlOiAo
b21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkVz
Y2FwZXNTdHJpbmdPcGVyYW5kcworG1swOzMybVsgUlVOICAgICAgXSAbW21Ob25mYXRhbEZhaWx1
cmVUZXN0LkRpZmZGb3JMb25nU3RyaW5ncworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izog
RmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICBnb2xkZW5fc3Ry
CisgICAgV2hpY2ggaXM6ICJcIkxpbmVcMCAxXCJcbkxpbmUgMiIKKyAgIkxpbmUgMiIKK1dpdGgg
ZGlmZjoKK0BAIC0xLDIgQEAKKy1cIkxpbmVcMCAxXCIKKyBMaW5lIDIKKworU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbmZhdGFsRmFpbHVyZVRlc3Qu
RGlmZkZvckxvbmdTdHJpbmdzCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTMgdGVzdHMgZnJvbSBG
YXRhbEZhaWx1cmVUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZVRlc3Qu
RmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCisoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hv
dWxkIGJlIDEpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3Rl
ZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAgeAorICAgIFdoaWNoIGlzOiAyCitT
dGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWls
dXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1tt
RmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKKyhleHBlY3Rp
bmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQor
ICB4CisgICAgV2hpY2ggaXM6IDIKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91
dGluZQorG1swOzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFp
bHVyZUluU3Vicm91dGluZQorKGV4cGVjdGluZyBhIGZhaWx1cmUgb24gZmFsc2UpCitnb29nbGV0
ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitWYWx1ZSBvZjogZmFsc2UKKyAgQWN0dWFs
OiBmYWxzZQorRXhwZWN0ZWQ6IHRydWUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91
dGluZQorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBMb2dnaW5nVGVzdAorG1sw
OzMybVsgUlVOICAgICAgXSAbW21Mb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNz
ZXJ0aW9ucworKGV4cGVjdGluZyAyIGZhaWx1cmVzIG9uICgzKSA+PSAoYVtpXSkpCitpID09IDAK
K2kgPT0gMQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6
ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA5CitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisK
K2kgPT0gMgoraSA9PSAzCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitF
eHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDYKK1N0YWNrIHRyYWNlOiAob21p
dHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Mb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdM
b2dnaW5nQW5kQXNzZXJ0aW9ucworG1swOzMybVstLS0tLS0tLS0tXSAbW203IHRlc3RzIGZyb20g
U0NPUEVEX1RSQUNFVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0
LkFjY2VwdGVkVmFsdWVzCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitG
YWlsZWQKK0p1c3QgY2hlY2tpbmcgdGhhdCBhbGwgdGhlc2UgdmFsdWVzIHdvcmsgZmluZS4KK0dv
b2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogKG51bGwpCitn
b29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiAxMzM3Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0
Xy5jYzojOiBzdGQ6OnN0cmluZworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogbGl0ZXJh
bCBzdHJpbmcKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21TQ09QRURfVFJBQ0VUZXN0LkFjY2VwdGVkVmFsdWVzCisbWzA7MzJtWyBSVU4gICAgICBdIBtb
bVNDT1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMKKyhleHBlY3RlZCB0byBmYWlsKQorZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitUaGlzIGZhaWx1cmUgaXMg
ZXhwZWN0ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNlLgorU3RhY2sgdHJhY2U6IChvbWl0
dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK1Ro
aXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBoYXZlIGEgdHJhY2UuCitHb29nbGUg
VGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEV4cGVjdGVkIHRyYWNl
CitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6
IEZhaWx1cmUKK0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkbid0
IGhhdmUgYSB0cmFjZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lk9iZXlzU2NvcGVzCisbWzA7MzJtWyBSVU4gICAgICBd
IBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJbkxvb3AKKyhleHBlY3RlZCB0byBmYWlsKQorZ29v
Z2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2Yg
dGhlc2UgdmFsdWVzOgorICAyCisgIG4KKyAgICBXaGljaCBpczogMQorR29vZ2xlIFRlc3QgdHJh
Y2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBpID0gMQorU3RhY2sgdHJhY2U6IChv
bWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3Rl
ZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAgbgorICAgIFdoaWNoIGlzOiAyCitH
b29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IGkgPSAyCitT
dGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RS
QUNFVGVzdC5Xb3Jrc0luTG9vcAorG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VU
ZXN0LldvcmtzSW5TdWJyb3V0aW5lCisoZXhwZWN0ZWQgdG8gZmFpbCkKK2dvb2dsZXRlc3Qtb3V0
cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVl
czoKKyAgMgorICBuCisgICAgV2hpY2ggaXM6IDEKK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogbiA9IDEKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKwor
Z29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkg
b2YgdGhlc2UgdmFsdWVzOgorICAxCisgIG4KKyAgICBXaGljaCBpczogMgorR29vZ2xlIFRlc3Qg
dHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBuID0gMgorU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29y
a3NJblN1YnJvdXRpbmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5D
YW5CZU5lc3RlZAorKGV4cGVjdGVkIHRvIGZhaWwpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5j
YzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAg
bgorICAgIFdoaWNoIGlzOiAyCitHb29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0
LXRlc3RfLmNjOiM6IG4gPSAyCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiAKK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VU
ZXN0LkNhbkJlTmVzdGVkCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3Qu
Q2FuQmVSZXBlYXRlZAorKGV4cGVjdGVkIHRvIGZhaWwpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0
Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK1RoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNo
b3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEuCitHb29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRl
c3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEEKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitUaGlzIGZhaWx1cmUgaXMg
ZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBIGFuZCBCLgorR29vZ2xl
IFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBCCitnb29nbGV0ZXN0
LW91dHB1dC10ZXN0Xy5jYzojOiBBCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRl
c3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlzIGV4
cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEMuCitHb29n
bGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEMKK2dvb2dsZXRl
c3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEIKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEEK
K1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izog
RmFpbHVyZQorRmFpbGVkCitUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29u
dGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQgRC4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRAorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izog
QgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogQQorU3RhY2sgdHJhY2U6IChvbWl0dGVk
KQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVSZXBlYXRl
ZAorG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzQ29uY3VycmVu
dGx5CisoZXhwZWN0aW5nIDYgZmFpbHVyZXMpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzoj
OiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzEgKGluIHRocmVhZCBCLCBvbmx5
IHRyYWNlIEIgYWxpdmUpLgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBUcmFjZSBCCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMiAo
aW4gdGhyZWFkIEEsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLgorR29vZ2xlIFRlc3QgdHJhY2U6
Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBUcmFjZSBBCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAor
RXhwZWN0ZWQgZmFpbHVyZSAjMyAoaW4gdGhyZWFkIEIsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUp
LgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBUcmFj
ZSBCCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNj
OiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjNCAoaW4gdGhyZWFkIEIsIG9u
bHkgdHJhY2UgQSBhbGl2ZSkuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjNSAo
aW4gdGhyZWFkIEEsIG9ubHkgdHJhY2UgQSBhbGl2ZSkuCitHb29nbGUgVGVzdCB0cmFjZToKK2dv
b2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IFRyYWNlIEEKK1N0YWNrIHRyYWNlOiAob21pdHRl
ZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBl
Y3RlZCBmYWlsdXJlICM2IChpbiB0aHJlYWQgQSwgbm8gdHJhY2UgYWxpdmUpLgorU3RhY2sgdHJh
Y2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3Qu
V29ya3NDb25jdXJyZW50bHkKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gU2Nv
cGVkVHJhY2VUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVNjb3BlZFRyYWNlVGVzdC5XaXRo
RXhwbGljaXRGaWxlQW5kTGluZQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVy
ZQorRmFpbGVkCitDaGVjayB0aGF0IHRoZSB0cmFjZSBpcyBhdHRhY2hlZCB0byBhIHBhcnRpY3Vs
YXIgbG9jYXRpb24uCitHb29nbGUgVGVzdCB0cmFjZToKK2V4cGxpY2l0X2ZpbGUuY2M6MTIzOiBl
eHBlY3RlZCB0cmFjZSBtZXNzYWdlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttU2NvcGVkVHJhY2VUZXN0LldpdGhFeHBsaWNpdEZpbGVBbmRMaW5lCisb
WzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIE5vbkZhdGFsRmFpbHVyZUluRml4dHVy
ZUNvbnN0cnVjdG9yVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21Ob25GYXRhbEZhaWx1cmVJ
bkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKKyhleHBlY3Rpbmcg
NSBmYWlsdXJlcykKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxl
ZAorRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4KK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVy
ZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBTZXRVcCgpLgorU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWls
ZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGJvZHkuCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxl
ZAorRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gVGVhckRvd24uCitTdGFjayB0cmFjZTogKG9taXR0
ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhw
ZWN0ZWQgZmFpbHVyZSAjNSwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJbkZp
eHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKKxtbMDszMm1bLS0tLS0t
LS0tLV0gG1ttMSB0ZXN0IGZyb20gRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0
CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9y
VGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgorKGV4cGVjdGluZyAyIGZhaWx1cmVzKQorZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJl
ICMxLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGMndG9yLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQor
Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVk
IGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29u
c3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtb
bTEgdGVzdCBmcm9tIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0CisbWzA7MzJtWyBSVU4gICAg
ICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCisoZXhwZWN0
aW5nIDQgZmFpbHVyZXMpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitG
YWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCkuCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAor
RXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZnVuY3Rpb24uCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxl
ZAorRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gVGVhckRvd24oKS4KK1N0YWNrIHRyYWNlOiAob21p
dHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitF
eHBlY3RlZCBmYWlsdXJlICM0LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgorU3RhY2sgdHJh
Y2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVyZUlu
U2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBm
cm9tIEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFs
RmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCisoZXhwZWN0aW5nIDMgZmFpbHVyZXMp
Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVk
IGZhaWx1cmUgIzEsIGluIFNldFVwKCkuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVy
ZSAjMiwgaW4gVGVhckRvd24oKS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMz
LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisb
WzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNl
dFVwCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEFkZEZhaWx1cmVBdFRlc3QK
KxtbMDszMm1bIFJVTiAgICAgIF0gG1ttQWRkRmFpbHVyZUF0VGVzdC5NZXNzYWdlQ29udGFpbnNT
cGVjaWZpZWRGaWxlQW5kTGluZU51bWJlcgorZm9vLmNjOjQyOiBGYWlsdXJlCitGYWlsZWQKK0V4
cGVjdGVkIGZhaWx1cmUgaW4gZm9vLmNjCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttQWRkRmFpbHVyZUF0VGVzdC5NZXNzYWdlQ29udGFpbnNTcGVjaWZp
ZWRGaWxlQW5kTGluZU51bWJlcgorG1swOzMybVstLS0tLS0tLS0tXSAbW200IHRlc3RzIGZyb20g
TWl4ZWRVcFRlc3RDYXNlVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENh
c2VUZXN0LkZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28KKxtbMDszMm1bICAgICAgIE9LIF0gG1tt
TWl4ZWRVcFRlc3RDYXNlVGVzdC5GaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vCisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuU2Vjb25kVGVzdEZyb21OYW1lc3BhY2VG
b28KKxtbMDszMm1bICAgICAgIE9LIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5TZWNvbmRUZXN0
RnJvbU5hbWVzcGFjZUZvbworG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VU
ZXN0LlRoaXNTaG91bGRGYWlsCitndGVzdC5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0FsbCB0ZXN0
cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCitj
bGFzcy4gIEhvd2V2ZXIsIGluIHRlc3QgY2FzZSBNaXhlZFVwVGVzdENhc2VUZXN0LAoreW91IGRl
ZmluZWQgdGVzdCBGaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vIGFuZCB0ZXN0IFRoaXNTaG91bGRG
YWlsCit1c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAgVGhpcyBjYW4g
aGFwcGVuIGlmCit0aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMg
b3IgdHJhbnNsYXRpb24KK3VuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZb3Ugc2hvdWxk
IHByb2JhYmx5IHJlbmFtZSBvbmUKK29mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50
byBkaWZmZXJlbnQgdGVzdCBjYXNlcy4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsCisbWzA7
MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWxUb28K
K2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3Qg
Y2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKK2NsYXNzLiAgSG93ZXZlciwgaW4g
dGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVRlc3QsCit5b3UgZGVmaW5lZCB0ZXN0IEZpcnN0VGVz
dEZyb21OYW1lc3BhY2VGb28gYW5kIHRlc3QgVGhpc1Nob3VsZEZhaWxUb28KK3VzaW5nIHR3byBk
aWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKK3RoZSB0
d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlvbgor
dW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVuYW1l
IG9uZQorb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0ZXN0
IGNhc2VzLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWxUb28KKxtbMDszMm1bLS0tLS0tLS0t
LV0gG1ttMiB0ZXN0cyBmcm9tIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0Cisb
WzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0
LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCisbWzA7MzJtWyAgICAgICBPSyBd
IBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRo
VGhpc05hbWVTaG91bGRGYWlsCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2Fz
ZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWls
CitndGVzdC5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0FsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0
IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCitjbGFzcy4gIEhvd2V2ZXIsIGlu
IHRlc3QgY2FzZSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdCwKK3lvdSBkZWZp
bmVkIHRlc3QgVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwgYW5kIHRlc3QgVGhl
U2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKK3VzaW5nIHR3byBkaWZmZXJlbnQgdGVz
dCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKK3RoZSB0d28gY2xhc3NlcyBh
cmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlvbgordW5pdHMgYW5kIGhh
dmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVuYW1lIG9uZQorb2YgdGhl
IGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0ZXN0IGNhc2VzLgorU3Rh
Y2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0
Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRG
YWlsCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBURVNUX0ZfYmVmb3JlX1RF
U1RfaW5fc2FtZV90ZXN0X2Nhc2UKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVEVTVF9GX2JlZm9y
ZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRgorG1swOzMybVsgICAg
ICAgT0sgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVz
aW5nVEVTVF9GCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9z
YW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxkRmFpbAorZ3Rlc3QuY2M6Izog
RmFpbHVyZQorRmFpbGVkCitBbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNl
IHRoZSBzYW1lIHRlc3QgZml4dHVyZQorY2xhc3MsIHNvIG1peGluZyBURVNUX0YgYW5kIFRFU1Qg
aW4gdGhlIHNhbWUgdGVzdCBjYXNlIGlzCitpbGxlZ2FsLiAgSW4gdGVzdCBjYXNlIFRFU1RfRl9i
ZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSwKK3Rlc3QgRGVmaW5lZFVzaW5nVEVTVF9GIGlz
IGRlZmluZWQgdXNpbmcgVEVTVF9GIGJ1dAordGVzdCBEZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxk
RmFpbCBpcyBkZWZpbmVkIHVzaW5nIFRFU1QuICBZb3UgcHJvYmFibHkKK3dhbnQgdG8gY2hhbmdl
IHRoZSBURVNUIHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRvIGFub3RoZXIgdGVzdAorY2FzZS4KK1N0
YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21URVNUX0ZfYmVm
b3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwK
KxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFRFU1RfYmVmb3JlX1RFU1RfRl9p
bl9zYW1lX3Rlc3RfY2FzZQorG1swOzMybVsgUlVOICAgICAgXSAbW21URVNUX2JlZm9yZV9URVNU
X0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVAorG1swOzMybVsgICAgICAgT0sg
XSAbW21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVT
VAorG1swOzMybVsgUlVOICAgICAgXSAbW21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0
X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbAorZ3Rlc3QuY2M6IzogRmFpbHVy
ZQorRmFpbGVkCitBbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBz
YW1lIHRlc3QgZml4dHVyZQorY2xhc3MsIHNvIG1peGluZyBURVNUX0YgYW5kIFRFU1QgaW4gdGhl
IHNhbWUgdGVzdCBjYXNlIGlzCitpbGxlZ2FsLiAgSW4gdGVzdCBjYXNlIFRFU1RfYmVmb3JlX1RF
U1RfRl9pbl9zYW1lX3Rlc3RfY2FzZSwKK3Rlc3QgRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxk
RmFpbCBpcyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKK3Rlc3QgRGVmaW5lZFVzaW5nVEVTVCBp
cyBkZWZpbmVkIHVzaW5nIFRFU1QuICBZb3UgcHJvYmFibHkKK3dhbnQgdG8gY2hhbmdlIHRoZSBU
RVNUIHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRvIGFub3RoZXIgdGVzdAorY2FzZS4KK1N0YWNrIHRy
YWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21URVNUX2JlZm9yZV9URVNU
X0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbAorG1sw
OzMybVstLS0tLS0tLS0tXSAbW204IHRlc3RzIGZyb20gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVz
dAorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJl
ZmVyZW5jZUdsb2JhbFZhcmlhYmxlcworG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcworG1swOzMybVsgUlVO
ICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsVmFy
aWFibGVzCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qu
Q2FuUmVmZXJlbmNlTG9jYWxWYXJpYWJsZXMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJl
CisbWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuU3VjY2Vl
ZHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQorG1swOzMybVsgUlVOICAgICAgXSAbW21F
eHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb05vbmZhdGFsRmFpbHVy
ZQorKGV4cGVjdGluZyBhIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDog
MSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDAgZmFpbHVyZXMKK1N0YWNrIHRyYWNlOiAo
b21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVU
ZXN0LkZhaWxzV2hlblRoZXJlSXNOb05vbmZhdGFsRmFpbHVyZQorG1swOzMybVsgUlVOICAgICAg
XSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvTm9uZmF0
YWxGYWlsdXJlcworKGV4cGVjdGluZyBhIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitF
eHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDIgZmFpbHVyZXMKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgorRmFpbGVkCitFeHBl
Y3RlZCBub24tZmF0YWwgZmFpbHVyZSAxLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK2dv
b2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgorRmFpbGVkCitF
eHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSAyLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisK
K1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvTm9uZmF0YWxGYWlsdXJlcwor
G1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hl
blRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6
IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOgorZ29v
Z2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0
ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWls
dXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCisbWzA7MzJtWyBSVU4gICAg
ICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJu
cworKGV4cGVjdGluZyBhIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDog
MSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDAgZmFpbHVyZXMKK1N0YWNrIHRyYWNlOiAo
b21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVU
ZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKKyhleHBlY3Rp
bmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFs
IGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZhaWx1cmVzCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1do
ZW5TdGF0ZW1lbnRUaHJvd3MKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttOCB0ZXN0cyBmcm9tIEV4
cGVjdEZhdGFsRmFpbHVyZVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKKxtbMDszMm1bICAgICAgIE9L
IF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMK
KxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVu
Y2VMb2NhbFN0YXRpY1ZhcmlhYmxlcworG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3RGYXRh
bEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsU3RhdGljVmFyaWFibGVzCisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09u
ZUZhdGFsRmFpbHVyZQorG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKKxtbMDszMm1bIFJVTiAgICAg
IF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1
cmUKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6
IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDAgZmFpbHVyZXMKK1N0YWNrIHRyYWNlOiAob21p
dHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZh
aWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZQorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBl
Y3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcworKGV4
cGVjdGluZyBhIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBmYXRh
bCBmYWlsdXJlCisgIEFjdHVhbDogMiBmYWlsdXJlcworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8u
Y2M6IzogRmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KK1N0
YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBG
YXRhbCBmYWlsdXJlOgorRmFpbGVkCitFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJh
Y2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0
YWxGYWlsdXJlcworG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0
LkZhaWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKKyhleHBlY3RpbmcgYSBmYWlsdXJl
KQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1
YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKK0Zh
aWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQp
CisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4
cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQor
G1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0
YXRlbWVudFJldHVybnMKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVy
ZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDAgZmFpbHVyZXMKK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKKxtbMDszMm1bIFJVTiAgICAgIF0g
G1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKKyhleHBl
Y3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwg
ZmFpbHVyZQorICBBY3R1YWw6IDAgZmFpbHVyZXMKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKwor
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0
YXRlbWVudFRocm93cworG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVHlwZWRU
ZXN0LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGludAorG1swOzMybVsgUlVOICAgICAgXSAbW21UeXBl
ZFRlc3QvMC5TdWNjZXNzCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbVR5cGVkVGVzdC8wLlN1Y2Nl
c3MKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVHlwZWRUZXN0LzAuRmFpbHVyZQorZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2Ug
dmFsdWVzOgorICAxCisgIFR5cGVQYXJhbSgpCisgICAgV2hpY2ggaXM6IDAKK0V4cGVjdGVkIGZh
aWx1cmUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21U
eXBlZFRlc3QvMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDszMm1bLS0tLS0t
LS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFR5cGVkVGVzdFdpdGhOYW1lcy9jaGFyXzAsIHdoZXJlIFR5
cGVQYXJhbSA9IGNoYXIKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVz
L2NoYXJfMC5TdWNjZXNzCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbVR5cGVkVGVzdFdpdGhOYW1l
cy9jaGFyXzAuU3VjY2VzcworG1swOzMybVsgUlVOICAgICAgXSAbW21UeXBlZFRlc3RXaXRoTmFt
ZXMvY2hhcl8wLkZhaWx1cmUKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUK
K0ZhaWxlZAorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bVR5cGVkVGVzdFdpdGhOYW1lcy9jaGFyXzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gY2hh
cgorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVHlwZWRUZXN0V2l0aE5hbWVz
L2ludF8xLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVHlw
ZWRUZXN0V2l0aE5hbWVzL2ludF8xLlN1Y2Nlc3MKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttVHlw
ZWRUZXN0V2l0aE5hbWVzL2ludF8xLlN1Y2Nlc3MKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVHlw
ZWRUZXN0V2l0aE5hbWVzL2ludF8xLkZhaWx1cmUKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNj
OiM6IEZhaWx1cmUKK0ZhaWxlZAorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbVR5cGVkVGVzdFdpdGhOYW1lcy9pbnRfMS5GYWlsdXJlLCB3aGVyZSBUeXBl
UGFyYW0gPSBpbnQKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFVuc2lnbmVk
L1R5cGVkVGVzdFAvMCwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgorG1swOzMybVsg
UlVOICAgICAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuU3VjY2VzcworG1swOzMybVsgICAg
ICAgT0sgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuU3VjY2VzcworG1swOzMybVsgUlVOICAg
ICAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZQorZ29vZ2xldGVzdC1vdXRwdXQt
dGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgor
ICAxVQorICAgIFdoaWNoIGlzOiAxCisgIFR5cGVQYXJhbSgpCisgICAgV2hpY2ggaXM6ICdcMCcK
K0V4cGVjdGVkIGZhaWx1cmUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFt
ID0gdW5zaWduZWQgY2hhcgorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVW5z
aWduZWQvVHlwZWRUZXN0UC8xLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKKxtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1Y2Nlc3MKKxtbMDszMm1b
ICAgICAgIE9LIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1Y2Nlc3MKKxtbMDszMm1bIFJV
TiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUKK2dvb2dsZXRlc3Qtb3V0
cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVl
czoKKyAgMVUKKyAgICBXaGljaCBpczogMQorICBUeXBlUGFyYW0oKQorICAgIFdoaWNoIGlzOiAw
CitFeHBlY3RlZCBmYWlsdXJlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJh
bSA9IHVuc2lnbmVkIGludAorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVW5z
aWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRfY2hhcl8wLCB3aGVyZSBUeXBlUGFy
YW0gPSB1bnNpZ25lZCBjaGFyCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkQ3VzdG9t
TmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkX2NoYXJfMC5TdWNjZXNzCisbWzA7MzJtWyAgICAgICBP
SyBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkX2NoYXJfMC5TdWNj
ZXNzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQ
L3Vuc2lnbmVkX2NoYXJfMC5GYWlsdXJlCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBG
YWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDFVCisgICAgV2hp
Y2ggaXM6IDEKKyAgVHlwZVBhcmFtKCkKKyAgICBXaGljaCBpczogJ1wwJworRXhwZWN0ZWQgZmFp
bHVyZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVVu
c2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkX2NoYXJfMC5GYWlsdXJlLCB3aGVy
ZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBjaGFyCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVz
dHMgZnJvbSBVbnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZF9pbnRfMSwgd2hl
cmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2ln
bmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkX2ludF8xLlN1Y2Nlc3MKKxtbMDszMm1b
ICAgICAgIE9LIF0gG1ttVW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRfaW50
XzEuU3VjY2VzcworG1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25lZEN1c3RvbU5hbWUvVHlw
ZWRUZXN0UC91bnNpZ25lZF9pbnRfMS5GYWlsdXJlCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5j
YzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDFVCisg
ICAgV2hpY2ggaXM6IDEKKyAgVHlwZVBhcmFtKCkKKyAgICBXaGljaCBpczogMAorRXhwZWN0ZWQg
ZmFpbHVyZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkX2ludF8xLkZhaWx1cmUsIHdo
ZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAorG1swOzMybVstLS0tLS0tLS0tXSAbW200IHRl
c3RzIGZyb20gRXhwZWN0RmFpbHVyZVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0
RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCisoZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0
ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOgor
Z29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogU3VjY2VzczoKK1N1Y2NlZWRlZAorU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworKGV4cGVjdGlu
ZyAxIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBmYXRhbCBmYWls
dXJlCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IE5vbi1mYXRhbCBm
YWlsdXJlOgorRmFpbGVkCitFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKyhleHBlY3RpbmcgMSBm
YWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZSBj
b250YWluaW5nICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUgZXhwZWN0ZWQuIgorICBBY3R1YWw6
Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgorRmFpbGVkCitF
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJl
VGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFp
bHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCisoZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0
ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCisgIEFjdHVh
bDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IFN1Y2Nlc3M6CitTdWNjZWVkZWQKK1N0
YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKyhleHBl
Y3RpbmcgMSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZh
dGFsIGZhaWx1cmUKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmF0
YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKyhleHBlY3RpbmcgMSBm
YWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1
cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBub24tZmF0YWwgZmFpbHVyZS4iCisgIEFjdHVhbDoK
K2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgorRmFpbGVk
CitFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKwor
CitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0
RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCisbWzA7MzJtWyBSVU4gICAgICBdIBtb
bUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcworKGV4cGVj
dGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBmYXRhbCBm
YWlsdXJlCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IFN1Y2Nlc3M6
CitTdWNjZWVkZWQKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKyhleHBlY3RpbmcgMSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhw
ZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0
Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZh
aWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVk
KQorCisoZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVk
OiAxIGZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBmYXRhbCBmYWlsdXJlIGV4
cGVjdGVkLiIKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmF0YWwg
ZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAo
b21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQg
IF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCisb
WzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFp
bHVyZU9uQWxsVGhyZWFkcworKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWls
dXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6Citnb29nbGV0ZXN0
LW91dHB1dC10ZXN0Xy5jYzojOiBTdWNjZXNzOgorU3VjY2VlZGVkCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisoZXhwZWN0aW5nIDEgZmFpbHVy
ZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCisg
IEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6CitG
YWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisK
KworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisoZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0ZXN0
LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcg
IlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1cmUuIgorICBBY3R1YWw6Citnb29nbGV0ZXN0LW91
dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9u
LWZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4
cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcworG1swOzMybVstLS0tLS0tLS0tXSAbW20y
IHRlc3RzIGZyb20gRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdAorG1swOzMybVsgUlVOICAg
ICAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQor
KGV4cGVjdGluZyAyIGZhaWx1cmVzKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFp
bHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0
dGVkKQorCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCisg
IEFjdHVhbDogMCBmYWlsdXJlcworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0RmF0YWxGYWls
dXJlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3Qu
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlCisoZXhwZWN0aW5nIDIgZmFpbHVyZXMpCitnb29nbGV0ZXN0
LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRhbCBm
YWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitndGVzdC5jYzojOiBGYWlsdXJlCitF
eHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDAgZmFpbHVyZXMKK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJl
V2l0aFRocmVhZHNUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQorG1swOzMybVstLS0tLS0tLS0t
XSAbW20xIHRlc3QgZnJvbSBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3QKKxtb
MDszMm1bIFJVTiAgICAgIF0gG1ttU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0
LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCisoZXhwZWN0aW5nIDIgZmFpbHVyZXMpCitnb29n
bGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRl
c3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCitT
dGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU2NvcGVkRmFr
ZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCisb
WzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIFByaW50aW5nRmFpbGluZ1BhcmFtcy9G
YWlsaW5nUGFyYW1UZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVByaW50aW5nRmFpbGluZ1Bh
cmFtcy9GYWlsaW5nUGFyYW1UZXN0LkZhaWxzLzAKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNj
OiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICBH
ZXRQYXJhbSgpCisgICAgV2hpY2ggaXM6IDIKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1sw
OzMxbVsgIEZBSUxFRCAgXSAbW21QcmludGluZ0ZhaWxpbmdQYXJhbXMvRmFpbGluZ1BhcmFtVGVz
dC5GYWlscy8wLCB3aGVyZSBHZXRQYXJhbSgpID0gMgorG1swOzMybVstLS0tLS0tLS0tXSAbW20y
IHRlc3RzIGZyb20gUHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdAorG1swOzMybVsgUlVOICAgICAg
XSAbW21QcmludGluZ1N0cmluZ3MvUGFyYW1UZXN0LlN1Y2Nlc3MvYQorG1swOzMybVsgICAgICAg
T0sgXSAbW21QcmludGluZ1N0cmluZ3MvUGFyYW1UZXN0LlN1Y2Nlc3MvYQorG1swOzMybVsgUlVO
ICAgICAgXSAbW21QcmludGluZ1N0cmluZ3MvUGFyYW1UZXN0LkZhaWx1cmUvYQorZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2Ug
dmFsdWVzOgorICAiYiIKKyAgR2V0UGFyYW0oKQorICAgIFdoaWNoIGlzOiAiYSIKK0V4cGVjdGVk
IGZhaWx1cmUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21QcmludGluZ1N0cmluZ3MvUGFyYW1UZXN0LkZhaWx1cmUvYSwgd2hlcmUgR2V0UGFyYW0oKSA9
ICJhIgorG1swOzMybVstLS0tLS0tLS0tXSAbW21HbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFy
LWRvd24KK0JhckVudmlyb25tZW50OjpUZWFyRG93bigpIGNhbGxlZC4KK2dvb2dsZXRlc3Qtb3V0
cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK0Zvb0Vudmlyb25tZW50OjpUZWFyRG93bigp
IGNhbGxlZC4KK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAor
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMy
bVs9PT09PT09PT09XSAbW203NiB0ZXN0cyBmcm9tIDM0IHRlc3QgY2FzZXMgcmFuLgorG1swOzMy
bVsgIFBBU1NFRCAgXSAbW20yNiB0ZXN0cy4KKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttNTAgdGVz
dHMsIGxpc3RlZCBiZWxvdzoKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uZmF0YWxGYWlsdXJl
VGVzdC5Fc2NhcGVzU3RyaW5nT3BlcmFuZHMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uZmF0
YWxGYWlsdXJlVGVzdC5EaWZmRm9yTG9uZ1N0cmluZ3MKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
RmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKKxtbMDszMW1bICBGQUlM
RUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJ
blN1YnJvdXRpbmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2
aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RS
QUNFVGVzdC5BY2NlcHRlZFZhbHVlcworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJB
Q0VUZXN0Lk9iZXlzU2NvcGVzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRl
c3QuV29ya3NJbkxvb3AKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5X
b3Jrc0luU3Vicm91dGluZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0
LkNhbkJlTmVzdGVkCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2Fu
QmVSZXBlYXRlZAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lldvcmtz
Q29uY3VycmVudGx5CisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNjb3BlZFRyYWNlVGVzdC5XaXRo
RXhwbGljaXRGaWxlQW5kTGluZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25GYXRhbEZhaWx1
cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1
cmVJbkNvbnN0cnVjdG9yCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVyZUlu
U2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFp
bHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUFk
ZEZhaWx1cmVBdFRlc3QuTWVzc2FnZUNvbnRhaW5zU3BlY2lmaWVkRmlsZUFuZExpbmVOdW1iZXIK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFp
bAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRG
YWlsVG9vCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVz
dE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVk
VXNpbmdURVNUQW5kU2hvdWxkRmFpbAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21URVNUX2JlZm9y
ZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFp
bAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxz
V2hlblRoZXJlSXNOb05vbmZhdGFsRmFpbHVyZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvTm9uZmF0YWxGYWlsdXJl
cworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxz
V2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50
VGhyb3dzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFp
bHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVj
dEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJ
c09uZU5vbmZhdGFsRmFpbHVyZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKKxtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKKxtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttVHlwZWRUZXN0LzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0g
aW50CisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVR5cGVkVGVzdFdpdGhOYW1lcy9jaGFyXzAuRmFp
bHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gY2hhcgorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBl
ZFRlc3RXaXRoTmFtZXMvaW50XzEuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gaW50CisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5GYWlsdXJlLCB3aGVyZSBU
eXBlUGFyYW0gPSB1bnNpZ25lZCBjaGFyCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVVuc2lnbmVk
L1R5cGVkVGVzdFAvMS5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKKxtb
MDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWdu
ZWRfY2hhcl8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKKxtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRf
aW50XzEuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50CisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQorG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWls
dXJlT25BbGxUaHJlYWRzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0
LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcworG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQorG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdE5vbkZh
dGFsRmFpbHVyZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TY29wZWRGYWtlVGVzdFBhcnRSZXN1
bHRSZXBvcnRlclRlc3QuSW50ZXJjZXB0T25seUN1cnJlbnRUaHJlYWQKKxtbMDszMW1bICBGQUlM
RUQgIF0gG1ttUHJpbnRpbmdGYWlsaW5nUGFyYW1zL0ZhaWxpbmdQYXJhbVRlc3QuRmFpbHMvMCwg
d2hlcmUgR2V0UGFyYW0oKSA9IDIKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttUHJpbnRpbmdTdHJp
bmdzL1BhcmFtVGVzdC5GYWlsdXJlL2EsIHdoZXJlIEdldFBhcmFtKCkgPSAiYSIKKworNTAgRkFJ
TEVEIFRFU1RTCisbWzA7MzNtICBZT1UgSEFWRSAxIERJU0FCTEVEIFRFU1QKKworG1ttTm90ZTog
R29vZ2xlIFRlc3QgZmlsdGVyID0gRmF0YWxGYWlsdXJlVGVzdC4qOkxvZ2dpbmdUZXN0LioKK1s9
PT09PT09PT09XSBSdW5uaW5nIDQgdGVzdHMgZnJvbSAyIHRlc3QgY2FzZXMuCitbLS0tLS0tLS0t
LV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgorWy0tLS0tLS0tLS1dIDMgdGVzdHMg
ZnJvbSBGYXRhbEZhaWx1cmVUZXN0CitbIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRh
bEZhaWx1cmVJblN1YnJvdXRpbmUKKyhleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQg
YmUgMSkKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVx
dWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICB4CisgICAgV2hpY2ggaXM6IDIKK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxG
YWlsdXJlSW5TdWJyb3V0aW5lICg/IG1zKQorWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3Qu
RmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCisoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0
IHggc2hvdWxkIGJlIDEpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitF
eHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAgeAorICAgIFdoaWNoIGlz
OiAyCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVU
ZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZSAoPyBtcykKK1sgUlVOICAgICAgXSBG
YXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZQorKGV4cGVjdGluZyBh
IGZhaWx1cmUgb24gZmFsc2UpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJl
CitWYWx1ZSBvZjogZmFsc2UKKyAgQWN0dWFsOiBmYWxzZQorRXhwZWN0ZWQ6IHRydWUKK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0
YWxGYWlsdXJlSW5TdWJyb3V0aW5lICg/IG1zKQorWy0tLS0tLS0tLS1dIDMgdGVzdHMgZnJvbSBG
YXRhbEZhaWx1cmVUZXN0ICg/IG1zIHRvdGFsKQorCitbLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20g
TG9nZ2luZ1Rlc3QKK1sgUlVOICAgICAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5n
QW5kQXNzZXJ0aW9ucworKGV4cGVjdGluZyAyIGZhaWx1cmVzIG9uICgzKSA+PSAoYVtpXSkpCitp
ID09IDAKK2kgPT0gMQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhw
ZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA5CitTdGFjayB0cmFjZTogKG9taXR0
ZWQpCisKK2kgPT0gMgoraSA9PSAzCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWls
dXJlCitFeHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDYKK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworWyAgRkFJTEVEICBdIExvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dp
bmdBbmRBc3NlcnRpb25zICg/IG1zKQorWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExvZ2dpbmdU
ZXN0ICg/IG1zIHRvdGFsKQorCitbLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQg
dGVhci1kb3duCitbPT09PT09PT09PV0gNCB0ZXN0cyBmcm9tIDIgdGVzdCBjYXNlcyByYW4uICg/
IG1zIHRvdGFsKQorWyAgUEFTU0VEICBdIDAgdGVzdHMuCitbICBGQUlMRUQgIF0gNCB0ZXN0cywg
bGlzdGVkIGJlbG93OgorWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJl
SW5TdWJyb3V0aW5lCitbICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJ
bk5lc3RlZFN1YnJvdXRpbmUKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFs
RmFpbHVyZUluU3Vicm91dGluZQorWyAgRkFJTEVEICBdIExvZ2dpbmdUZXN0LkludGVybGVhdmlu
Z0xvZ2dpbmdBbmRBc3NlcnRpb25zCisKKyA0IEZBSUxFRCBURVNUUworTm90ZTogR29vZ2xlIFRl
c3QgZmlsdGVyID0gKkRJU0FCTEVEXyoKK1s9PT09PT09PT09XSBSdW5uaW5nIDEgdGVzdCBmcm9t
IDEgdGVzdCBjYXNlLgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11
cC4KK1stLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBEaXNhYmxlZFRlc3RzV2FybmluZ1Rlc3QKK1sg
UlVOICAgICAgXSBEaXNhYmxlZFRlc3RzV2FybmluZ1Rlc3QuRElTQUJMRURfQWxzb1J1bkRpc2Fi
bGVkVGVzdHNGbGFnU3VwcHJlc3Nlc1dhcm5pbmcKK1sgICAgICAgT0sgXSBEaXNhYmxlZFRlc3Rz
V2FybmluZ1Rlc3QuRElTQUJMRURfQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnU3VwcHJlc3Nlc1dh
cm5pbmcKK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KK1s9
PT09PT09PT09XSAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZSByYW4uCitbICBQQVNTRUQgIF0gMSB0
ZXN0LgorTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gUGFzc2luZ1Rlc3QuKgorTm90ZTogVGhp
cyBpcyB0ZXN0IHNoYXJkIDIgb2YgMi4KK1s9PT09PT09PT09XSBSdW5uaW5nIDEgdGVzdCBmcm9t
IDEgdGVzdCBjYXNlLgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11
cC4KK1stLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBQYXNzaW5nVGVzdAorWyBSVU4gICAgICBdIFBh
c3NpbmdUZXN0LlBhc3NpbmdUZXN0MgorWyAgICAgICBPSyBdIFBhc3NpbmdUZXN0LlBhc3NpbmdU
ZXN0MgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgorWz09
PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlIHJhbi4KK1sgIFBBU1NFRCAgXSAxIHRl
c3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQ2OWUzNTNhMTllMzY5NDY1MzNiZjVmN2UwYTJj
OTI0NmY3ZGNlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ29vZ2xldGVzdC1vdXRwdXQtdGVzdC5weQpAQCAtMCwwICsxLDM0NyBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorIyBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVGVzdHMgdGhlIHRleHQgb3V0
cHV0IG9mIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsuCisKK1RvIHVw
ZGF0ZSB0aGUgZ29sZGVuIGZpbGU6Citnb29nbGV0ZXN0X291dHB1dF90ZXN0LnB5IC0tYnVpbGRf
ZGlyPUJVSUxEL0RJUiAtLWdlbmdvbGRlbgord2hlcmUgQlVJTEQvRElSIGNvbnRhaW5zIHRoZSBi
dWlsdCBnb29nbGV0ZXN0LW91dHB1dC10ZXN0XyBmaWxlLgorZ29vZ2xldGVzdF9vdXRwdXRfdGVz
dC5weSAtLWdlbmdvbGRlbgorZ29vZ2xldGVzdF9vdXRwdXRfdGVzdC5weQorIiIiCisKK2ltcG9y
dCBkaWZmbGliCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IGd0ZXN0
X3Rlc3RfdXRpbHMKKworCisjIFRoZSBmbGFnIGZvciBnZW5lcmF0aW5nIHRoZSBnb2xkZW4gZmls
ZQorR0VOR09MREVOX0ZMQUcgPSAnLS1nZW5nb2xkZW4nCitDQVRDSF9FWENFUFRJT05TX0VOVl9W
QVJfTkFNRSA9ICdHVEVTVF9DQVRDSF9FWENFUFRJT05TJworCisjIFRoZSBmbGFnIGluZGljYXRp
bmcgc3RhY2t0cmFjZXMgYXJlIG5vdCBzdXBwb3J0ZWQKK05PX1NUQUNLVFJBQ0VfU1VQUE9SVF9G
TEFHID0gJy0tbm9fc3RhY2t0cmFjZV9zdXBwb3J0JworCitJU19MSU5VWCA9IG9zLm5hbWUgPT0g
J3Bvc2l4JyBhbmQgb3MudW5hbWUoKVswXSA9PSAnTGludXgnCitJU19XSU5ET1dTID0gb3MubmFt
ZSA9PSAnbnQnCisKKyMgRklYTUU6IHJlbW92ZSB0aGUgX2xpbiBzdWZmaXguCitHT0xERU5fTkFN
RSA9ICdnb29nbGV0ZXN0LW91dHB1dC10ZXN0LWdvbGRlbi1saW4udHh0JworCitQUk9HUkFNX1BB
VEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ29vZ2xldGVzdC1v
dXRwdXQtdGVzdF8nKQorCisjIEF0IGxlYXN0IG9uZSBjb21tYW5kIHdlIGV4ZXJjaXNlIG11c3Qg
bm90IGhhdmUgdGhlCisjICdpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVz
dHMnIGFyZ3VtZW50LgorQ09NTUFORF9MSVNUX1RFU1RTID0gKHt9LCBbUFJPR1JBTV9QQVRILCAn
LS1ndGVzdF9saXN0X3Rlc3RzJ10pCitDT01NQU5EX1dJVEhfQ09MT1IgPSAoe30sIFtQUk9HUkFN
X1BBVEgsICctLWd0ZXN0X2NvbG9yPXllcyddKQorQ09NTUFORF9XSVRIX1RJTUUgPSAoe30sIFtQ
Uk9HUkFNX1BBVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICctLWd0ZXN0X3ByaW50X3Rp
bWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVu
dF9hbmRfYWRfaG9jX3Rlc3RzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZ3Rlc3Rf
ZmlsdGVyPUZhdGFsRmFpbHVyZVRlc3QuKjpMb2dnaW5nVGVzdC4qJ10pCitDT01NQU5EX1dJVEhf
RElTQUJMRUQgPSAoCisgICAge30sIFtQUk9HUkFNX1BBVEgsCisgICAgICAgICAnLS1ndGVzdF9h
bHNvX3J1bl9kaXNhYmxlZF90ZXN0cycsCisgICAgICAgICAnaW50ZXJuYWxfc2tpcF9lbnZpcm9u
bWVudF9hbmRfYWRfaG9jX3Rlc3RzJywKKyAgICAgICAgICctLWd0ZXN0X2ZpbHRlcj0qRElTQUJM
RURfKiddKQorQ09NTUFORF9XSVRIX1NIQVJESU5HID0gKAorICAgIHsnR1RFU1RfU0hBUkRfSU5E
RVgnOiAnMScsICdHVEVTVF9UT1RBTF9TSEFSRFMnOiAnMid9LAorICAgIFtQUk9HUkFNX1BBVEgs
CisgICAgICdpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMnLAorICAg
ICAnLS1ndGVzdF9maWx0ZXI9UGFzc2luZ1Rlc3QuKiddKQorCitHT0xERU5fUEFUSCA9IG9zLnBh
dGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFNvdXJjZURpcigpLCBHT0xERU5fTkFNRSkKKwor
CitkZWYgVG9Vbml4TGluZUVuZGluZyhzKToKKyAgIiIiQ2hhbmdlcyBhbGwgV2luZG93cy9NYWMg
bGluZSBlbmRpbmdzIGluIHMgdG8gVU5JWCBsaW5lIGVuZGluZ3MuIiIiCisKKyAgcmV0dXJuIHMu
cmVwbGFjZSgnXHJcbicsICdcbicpLnJlcGxhY2UoJ1xyJywgJ1xuJykKKworCitkZWYgUmVtb3Zl
TG9jYXRpb25zKHRlc3Rfb3V0cHV0KToKKyAgIiIiUmVtb3ZlcyBhbGwgZmlsZSBsb2NhdGlvbiBp
bmZvIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LgorCisgIEFyZ3M6CisgICAg
ICAgdGVzdF9vdXRwdXQ6ICB0aGUgb3V0cHV0IG9mIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbS4KKwor
ICBSZXR1cm5zOgorICAgICAgIG91dHB1dCB3aXRoIGFsbCBmaWxlIGxvY2F0aW9uIGluZm8gKGlu
IHRoZSBmb3JtIG9mCisgICAgICAgJ0RJUkVDVE9SWS9GSUxFX05BTUU6TElORV9OVU1CRVI6ICdv
cgorICAgICAgICdESVJFQ1RPUllcXEZJTEVfTkFNRShMSU5FX05VTUJFUik6ICcpIHJlcGxhY2Vk
IGJ5CisgICAgICAgJ0ZJTEVfTkFNRTojOiAnLgorICAiIiIKKworICByZXR1cm4gcmUuc3ViKHIn
LipbL1xcXSgoZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF98Z3Rlc3QpLmNjKShcOlxkK3xcKFxkK1wp
KVw6ICcsCisgICAgICAgICAgICAgICAgcidcMTojOiAnLCB0ZXN0X291dHB1dCkKKworCitkZWYg
UmVtb3ZlU3RhY2tUcmFjZURldGFpbHMob3V0cHV0KToKKyAgIiIiUmVtb3ZlcyBhbGwgc3RhY2sg
dHJhY2VzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgorCisgICMgKj8g
bWVhbnMgImZpbmQgdGhlIHNob3J0ZXN0IHN0cmluZyB0aGF0IG1hdGNoZXMiLgorICByZXR1cm4g
cmUuc3ViKHInU3RhY2sgdHJhY2U6KC58XG4pKj9cblxuJywKKyAgICAgICAgICAgICAgICAnU3Rh
Y2sgdHJhY2U6IChvbWl0dGVkKVxuXG4nLCBvdXRwdXQpCisKKworZGVmIFJlbW92ZVN0YWNrVHJh
Y2VzKG91dHB1dCk6CisgICIiIlJlbW92ZXMgYWxsIHRyYWNlcyBvZiBzdGFjayB0cmFjZXMgZnJv
bSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCisKKyAgIyAqPyBtZWFucyAiZmlu
ZCB0aGUgc2hvcnRlc3Qgc3RyaW5nIHRoYXQgbWF0Y2hlcyIuCisgIHJldHVybiByZS5zdWIocidT
dGFjayB0cmFjZTooLnxcbikqP1xuXG4nLCAnJywgb3V0cHV0KQorCisKK2RlZiBSZW1vdmVUaW1l
KG91dHB1dCk6CisgICIiIlJlbW92ZXMgYWxsIHRpbWUgaW5mb3JtYXRpb24gZnJvbSBhIEdvb2ds
ZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCisKKyAgcmV0dXJuIHJlLnN1YihyJ1woXGQrIG1z
JywgJyg/IG1zJywgb3V0cHV0KQorCisKK2RlZiBSZW1vdmVUeXBlSW5mb0RldGFpbHModGVzdF9v
dXRwdXQpOgorICAiIiJSZW1vdmVzIGNvbXBpbGVyLXNwZWNpZmljIHR5cGUgaW5mbyBmcm9tIEdv
b2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuCisKKyAgQXJnczoKKyAgICAgICB0ZXN0X291dHB1
dDogIHRoZSBvdXRwdXQgb2YgYSBHb29nbGUgVGVzdCBwcm9ncmFtLgorCisgIFJldHVybnM6Cisg
ICAgICAgb3V0cHV0IHdpdGggdHlwZSBpbmZvcm1hdGlvbiBub3JtYWxpemVkIHRvIGNhbm9uaWNh
bCBmb3JtLgorICAiIiIKKworICAjIHNvbWUgY29tcGlsZXJzIG91dHB1dCB0aGUgbmFtZSBvZiB0
eXBlICd1bnNpZ25lZCBpbnQnIGFzICd1bnNpZ25lZCcKKyAgcmV0dXJuIHJlLnN1YihyJ3Vuc2ln
bmVkIGludCcsICd1bnNpZ25lZCcsIHRlc3Rfb3V0cHV0KQorCisKK2RlZiBOb3JtYWxpemVUb0N1
cnJlbnRQbGF0Zm9ybSh0ZXN0X291dHB1dCk6CisgICIiIk5vcm1hbGl6ZXMgcGxhdGZvcm0gc3Bl
Y2lmaWMgb3V0cHV0IGRldGFpbHMgZm9yIGVhc2llciBjb21wYXJpc29uLiIiIgorCisgIGlmIElT
X1dJTkRPV1M6CisgICAgIyBSZW1vdmVzIHRoZSBjb2xvciBpbmZvcm1hdGlvbiB0aGF0IGlzIG5v
dCBwcmVzZW50IG9uIFdpbmRvd3MuCisgICAgdGVzdF9vdXRwdXQgPSByZS5zdWIoJ1x4MWJcXFso
MDszXGQpP20nLCAnJywgdGVzdF9vdXRwdXQpCisgICAgIyBDaGFuZ2VzIGZhaWx1cmUgbWVzc2Fn
ZSBoZWFkZXJzIGludG8gdGhlIFdpbmRvd3MgZm9ybWF0LgorICAgIHRlc3Rfb3V0cHV0ID0gcmUu
c3ViKHInOiBGYWlsdXJlXG4nLCByJzogZXJyb3I6ICcsIHRlc3Rfb3V0cHV0KQorICAgICMgQ2hh
bmdlcyBmaWxlKGxpbmVfbnVtYmVyKSB0byBmaWxlOmxpbmVfbnVtYmVyLgorICAgIHRlc3Rfb3V0
cHV0ID0gcmUuc3ViKHInKChcd3xcLikrKVwoKFxkKylcKTonLCByJ1wxOlwzOicsIHRlc3Rfb3V0
cHV0KQorCisgIHJldHVybiB0ZXN0X291dHB1dAorCisKK2RlZiBSZW1vdmVUZXN0Q291bnRzKG91
dHB1dCk6CisgICIiIlJlbW92ZXMgdGVzdCBjb3VudHMgZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dy
YW0ncyBvdXRwdXQuIiIiCisKKyAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIHRlc3RzPywgbGlzdGVk
IGJlbG93JywKKyAgICAgICAgICAgICAgICAgICc/IHRlc3RzLCBsaXN0ZWQgYmVsb3cnLCBvdXRw
dXQpCisgIG91dHB1dCA9IHJlLnN1YihyJ1xkKyBGQUlMRUQgVEVTVFMnLAorICAgICAgICAgICAg
ICAgICAgJz8gRkFJTEVEIFRFU1RTJywgb3V0cHV0KQorICBvdXRwdXQgPSByZS5zdWIocidcZCsg
dGVzdHM/IGZyb20gXGQrIHRlc3QgY2FzZXM/JywKKyAgICAgICAgICAgICAgICAgICc/IHRlc3Rz
IGZyb20gPyB0ZXN0IGNhc2VzJywgb3V0cHV0KQorICBvdXRwdXQgPSByZS5zdWIocidcZCsgdGVz
dHM/IGZyb20gKFthLXpBLVpfXSknLAorICAgICAgICAgICAgICAgICAgcic/IHRlc3RzIGZyb20g
XDEnLCBvdXRwdXQpCisgIHJldHVybiByZS5zdWIocidcZCsgdGVzdHM/XC4nLCAnPyB0ZXN0cy4n
LCBvdXRwdXQpCisKKworZGVmIFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsIHBhdHRl
cm4pOgorICAiIiJSZW1vdmVzIG91dHB1dCBvZiBzcGVjaWZpZWQgdGVzdHMgZnJvbSBhIEdvb2ds
ZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuCisKKyAgVGhpcyBmdW5jdGlvbiBzdHJpcHMgbm90IG9u
bHkgdGhlIGJlZ2lubmluZyBhbmQgdGhlIGVuZCBvZiBhIHRlc3QgYnV0IGFsc28KKyAgYWxsIG91
dHB1dCBpbiBiZXR3ZWVuLgorCisgIEFyZ3M6CisgICAgdGVzdF9vdXRwdXQ6ICAgICAgIEEgc3Ry
aW5nIGNvbnRhaW5pbmcgdGhlIHRlc3Qgb3V0cHV0LgorICAgIHBhdHRlcm46ICAgICAgICAgICBB
IHJlZ2V4IHN0cmluZyB0aGF0IG1hdGNoZXMgbmFtZXMgb2YgdGVzdCBjYXNlcyBvcgorICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0cyB0byByZW1vdmUuCisKKyAgUmV0dXJuczoKKyAgICBDb250
ZW50cyBvZiB0ZXN0X291dHB1dCB3aXRoIHRlc3RzIHdob3NlIG5hbWVzIG1hdGNoIHBhdHRlcm4g
cmVtb3ZlZC4KKyAgIiIiCisKKyAgdGVzdF9vdXRwdXQgPSByZS5zdWIoCisgICAgICByJy4qXFsg
UlVOICAgICAgXF0gLiolcygufFxuKSo/XFsoICBGQUlMRUQgIHwgICAgICAgT0sgKVxdIC4qJXMu
KlxuJyAlICgKKyAgICAgICAgICBwYXR0ZXJuLCBwYXR0ZXJuKSwKKyAgICAgICcnLAorICAgICAg
dGVzdF9vdXRwdXQpCisgIHJldHVybiByZS5zdWIocicuKiVzLipcbicgJSBwYXR0ZXJuLCAnJywg
dGVzdF9vdXRwdXQpCisKKworZGVmIE5vcm1hbGl6ZU91dHB1dChvdXRwdXQpOgorICAiIiJOb3Jt
YWxpemVzIG91dHB1dCAodGhlIG91dHB1dCBvZiBnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5leGUp
LiIiIgorCisgIG91dHB1dCA9IFRvVW5peExpbmVFbmRpbmcob3V0cHV0KQorICBvdXRwdXQgPSBS
ZW1vdmVMb2NhdGlvbnMob3V0cHV0KQorICBvdXRwdXQgPSBSZW1vdmVTdGFja1RyYWNlRGV0YWls
cyhvdXRwdXQpCisgIG91dHB1dCA9IFJlbW92ZVRpbWUob3V0cHV0KQorICByZXR1cm4gb3V0cHV0
CisKKworZGVmIEdldFNoZWxsQ29tbWFuZE91dHB1dChlbnZfY21kKToKKyAgIiIiUnVucyBhIGNv
bW1hbmQgaW4gYSBzdWItcHJvY2VzcywgYW5kIHJldHVybnMgaXRzIG91dHB1dCBpbiBhIHN0cmlu
Zy4KKworICBBcmdzOgorICAgIGVudl9jbWQ6IFRoZSBzaGVsbCBjb21tYW5kLiBBIDItdHVwbGUg
d2hlcmUgZWxlbWVudCAwIGlzIGEgZGljdCBvZiBleHRyYQorICAgICAgICAgICAgIGVudmlyb25t
ZW50IHZhcmlhYmxlcyB0byBzZXQsIGFuZCBlbGVtZW50IDEgaXMgYSBzdHJpbmcgd2l0aAorICAg
ICAgICAgICAgIHRoZSBjb21tYW5kIGFuZCBhbnkgZmxhZ3MuCisKKyAgUmV0dXJuczoKKyAgICBB
IHN0cmluZyB3aXRoIHRoZSBjb21tYW5kJ3MgY29tYmluZWQgc3RhbmRhcmQgYW5kIGRpYWdub3N0
aWMgb3V0cHV0LgorICAiIiIKKworICAjIFNwYXducyBjbWQgaW4gYSBzdWItcHJvY2VzcywgYW5k
IGdldHMgaXRzIHN0YW5kYXJkIEkvTyBmaWxlIG9iamVjdHMuCisgICMgU2V0IGFuZCBzYXZlIHRo
ZSBlbnZpcm9ubWVudCBwcm9wZXJseS4KKyAgZW52aXJvbiA9IG9zLmVudmlyb24uY29weSgpCisg
IGVudmlyb24udXBkYXRlKGVudl9jbWRbMF0pCisgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnBy
b2Nlc3MoZW52X2NtZFsxXSwgZW52PWVudmlyb24pCisKKyAgcmV0dXJuIHAub3V0cHV0CisKKwor
ZGVmIEdldENvbW1hbmRPdXRwdXQoZW52X2NtZCk6CisgICIiIlJ1bnMgYSBjb21tYW5kIGFuZCBy
ZXR1cm5zIGl0cyBvdXRwdXQgd2l0aCBhbGwgZmlsZSBsb2NhdGlvbgorICBpbmZvIHN0cmlwcGVk
IG9mZi4KKworICBBcmdzOgorICAgIGVudl9jbWQ6ICBUaGUgc2hlbGwgY29tbWFuZC4gQSAyLXR1
cGxlIHdoZXJlIGVsZW1lbnQgMCBpcyBhIGRpY3Qgb2YgZXh0cmEKKyAgICAgICAgICAgICAgZW52
aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCwgYW5kIGVsZW1lbnQgMSBpcyBhIHN0cmluZyB3aXRo
CisgICAgICAgICAgICAgIHRoZSBjb21tYW5kIGFuZCBhbnkgZmxhZ3MuCisgICIiIgorCisgICMg
RGlzYWJsZXMgZXhjZXB0aW9uIHBvcC11cHMgb24gV2luZG93cy4KKyAgZW52aXJvbiwgY21kbGlu
ZSA9IGVudl9jbWQKKyAgZW52aXJvbiA9IGRpY3QoZW52aXJvbikgICMgRW5zdXJlcyB3ZSBhcmUg
bW9kaWZ5aW5nIGEgY29weS4KKyAgZW52aXJvbltDQVRDSF9FWENFUFRJT05TX0VOVl9WQVJfTkFN
RV0gPSAnMScKKyAgcmV0dXJuIE5vcm1hbGl6ZU91dHB1dChHZXRTaGVsbENvbW1hbmRPdXRwdXQo
KGVudmlyb24sIGNtZGxpbmUpKSkKKworCitkZWYgR2V0T3V0cHV0T2ZBbGxDb21tYW5kcygpOgor
ICAiIiJSZXR1cm5zIGNvbmNhdGVuYXRlZCBvdXRwdXQgZnJvbSBzZXZlcmFsIHJlcHJlc2VudGF0
aXZlIGNvbW1hbmRzLiIiIgorCisgIHJldHVybiAoR2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJ
VEhfQ09MT1IpICsKKyAgICAgICAgICBHZXRDb21tYW5kT3V0cHV0KENPTU1BTkRfV0lUSF9USU1F
KSArCisgICAgICAgICAgR2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJVEhfRElTQUJMRUQpICsK
KyAgICAgICAgICBHZXRDb21tYW5kT3V0cHV0KENPTU1BTkRfV0lUSF9TSEFSRElORykpCisKKwor
dGVzdF9saXN0ID0gR2V0U2hlbGxDb21tYW5kT3V0cHV0KENPTU1BTkRfTElTVF9URVNUUykKK1NV
UFBPUlRTX0RFQVRIX1RFU1RTID0gJ0RlYXRoVGVzdCcgaW4gdGVzdF9saXN0CitTVVBQT1JUU19U
WVBFRF9URVNUUyA9ICdUeXBlZFRlc3QnIGluIHRlc3RfbGlzdAorU1VQUE9SVFNfVEhSRUFEUyA9
ICdFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0JyBpbiB0ZXN0X2xpc3QKK1NVUFBPUlRTX1NU
QUNLX1RSQUNFUyA9IE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFHIG5vdCBpbiBzeXMuYXJndgor
CitDQU5fR0VORVJBVEVfR09MREVOX0ZJTEUgPSAoU1VQUE9SVFNfREVBVEhfVEVTVFMgYW5kCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VQUE9SVFNfVFlQRURfVEVTVFMgYW5kCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU1VQUE9SVFNfVEhSRUFEUyBhbmQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTVVBQT1JUU19TVEFDS19UUkFDRVMpCisKK2NsYXNzIEdUZXN0T3V0
cHV0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgZGVmIFJlbW92ZVVuc3VwcG9y
dGVkVGVzdHMoc2VsZiwgdGVzdF9vdXRwdXQpOgorICAgIGlmIG5vdCBTVVBQT1JUU19ERUFUSF9U
RVNUUzoKKyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1
dCwgJ0RlYXRoVGVzdCcpCisgICAgaWYgbm90IFNVUFBPUlRTX1RZUEVEX1RFU1RTOgorICAgICAg
dGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCAnVHlwZWRUZXN0
JykKKyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwg
J1R5cGVkRGVhdGhUZXN0JykKKyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0
cyh0ZXN0X291dHB1dCwgJ1R5cGVQYXJhbURlYXRoVGVzdCcpCisgICAgaWYgbm90IFNVUFBPUlRT
X1RIUkVBRFM6CisgICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9v
dXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4cGVjdEZh
aWx1cmVXaXRoVGhyZWFkc1Rlc3QnKQorICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGlu
Z1Rlc3RzKHRlc3Rfb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3QnKQorICAgICAgdGVzdF9v
dXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdXb3Jrc0NvbmN1cnJlbnRseScpCisgICAgaWYgbm90
IFNVUFBPUlRTX1NUQUNLX1RSQUNFUzoKKyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlU3RhY2tU
cmFjZXModGVzdF9vdXRwdXQpCisKKyAgICByZXR1cm4gdGVzdF9vdXRwdXQKKworICBkZWYgdGVz
dE91dHB1dChzZWxmKToKKyAgICBvdXRwdXQgPSBHZXRPdXRwdXRPZkFsbENvbW1hbmRzKCkKKwor
ICAgIGdvbGRlbl9maWxlID0gb3BlbihHT0xERU5fUEFUSCwgJ3JiJykKKyAgICAjIEEgbWlzLWNv
bmZpZ3VyZWQgc291cmNlIGNvbnRyb2wgc3lzdGVtIGNhbiBjYXVzZSBcciBhcHBlYXIgaW4gRU9M
CisgICAgIyBzZXF1ZW5jZXMgd2hlbiB3ZSByZWFkIHRoZSBnb2xkZW4gZmlsZSBpcnJlc3BlY3Rp
dmUgb2YgYW4gb3BlcmF0aW5nCisgICAgIyBzeXN0ZW0gdXNlZC4gVGhlcmVmb3JlLCB3ZSBuZWVk
IHRvIHN0cmlwIHRob3NlIFxyJ3MgZnJvbSBuZXdsaW5lcworICAgICMgdW5jb25kaXRpb25hbGx5
LgorICAgIGdvbGRlbiA9IFRvVW5peExpbmVFbmRpbmcoZ29sZGVuX2ZpbGUucmVhZCgpKQorICAg
IGdvbGRlbl9maWxlLmNsb3NlKCkKKworICAgICMgV2Ugd2FudCB0aGUgdGVzdCB0byBwYXNzIHJl
Z2FyZGxlc3Mgb2YgY2VydGFpbiBmZWF0dXJlcyBiZWluZworICAgICMgc3VwcG9ydGVkIG9yIG5v
dC4KKworICAgICMgV2Ugc3RpbGwgaGF2ZSB0byByZW1vdmUgdHlwZSBuYW1lIHNwZWNpZmljcyBp
biBhbGwgY2FzZXMuCisgICAgbm9ybWFsaXplZF9hY3R1YWwgPSBSZW1vdmVUeXBlSW5mb0RldGFp
bHMob3V0cHV0KQorICAgIG5vcm1hbGl6ZWRfZ29sZGVuID0gUmVtb3ZlVHlwZUluZm9EZXRhaWxz
KGdvbGRlbikKKworICAgIGlmIENBTl9HRU5FUkFURV9HT0xERU5fRklMRToKKyAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobm9ybWFsaXplZF9nb2xkZW4sIG5vcm1hbGl6ZWRfYWN0dWFsLAorICAgICAg
ICAgICAgICAgICAgICAgICAnXG4nLmpvaW4oZGlmZmxpYi51bmlmaWVkX2RpZmYoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkX2dvbGRlbi5zcGxpdCgnXG4nKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRfYWN0dWFsLnNwbGl0KCdcbicpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2dvbGRlbicsICdhY3R1YWwnKSkpCisgICAgZWxzZToK
KyAgICAgIG5vcm1hbGl6ZWRfYWN0dWFsID0gTm9ybWFsaXplVG9DdXJyZW50UGxhdGZvcm0oCisg
ICAgICAgICAgUmVtb3ZlVGVzdENvdW50cyhub3JtYWxpemVkX2FjdHVhbCkpCisgICAgICBub3Jt
YWxpemVkX2dvbGRlbiA9IE5vcm1hbGl6ZVRvQ3VycmVudFBsYXRmb3JtKAorICAgICAgICAgIFJl
bW92ZVRlc3RDb3VudHMoc2VsZi5SZW1vdmVVbnN1cHBvcnRlZFRlc3RzKG5vcm1hbGl6ZWRfZ29s
ZGVuKSkpCisKKyAgICAgICMgVGhpcyBjb2RlIGlzIHZlcnkgaGFuZHkgd2hlbiBkZWJ1Z2dpbmcg
Z29sZGVuIGZpbGUgZGlmZmVyZW5jZXM6CisgICAgICBpZiBvcy5nZXRlbnYoJ0RFQlVHX0dURVNU
X09VVFBVVF9URVNUJyk6CisgICAgICAgIG9wZW4ob3MucGF0aC5qb2luKAorICAgICAgICAgICAg
Z3Rlc3RfdGVzdF91dGlscy5HZXRTb3VyY2VEaXIoKSwKKyAgICAgICAgICAgICdfZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF9ub3JtYWxpemVkX2FjdHVhbC50eHQnKSwgJ3diJykud3JpdGUoCisgICAg
ICAgICAgICAgICAgbm9ybWFsaXplZF9hY3R1YWwpCisgICAgICAgIG9wZW4ob3MucGF0aC5qb2lu
KAorICAgICAgICAgICAgZ3Rlc3RfdGVzdF91dGlscy5HZXRTb3VyY2VEaXIoKSwKKyAgICAgICAg
ICAgICdfZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF9ub3JtYWxpemVkX2dvbGRlbi50eHQnKSwgJ3di
Jykud3JpdGUoCisgICAgICAgICAgICAgICAgbm9ybWFsaXplZF9nb2xkZW4pCisKKyAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobm9ybWFsaXplZF9nb2xkZW4sIG5vcm1hbGl6ZWRfYWN0dWFsKQorCisK
K2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGlmIE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9G
TEFHIGluIHN5cy5hcmd2OgorICAgICMgdW5pdHRlc3QubWFpbigpIGNhbid0IGhhbmRsZSB1bmtu
b3duIGZsYWdzCisgICAgc3lzLmFyZ3YucmVtb3ZlKE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFH
KQorCisgIGlmIEdFTkdPTERFTl9GTEFHIGluIHN5cy5hcmd2OgorICAgIGlmIENBTl9HRU5FUkFU
RV9HT0xERU5fRklMRToKKyAgICAgIG91dHB1dCA9IEdldE91dHB1dE9mQWxsQ29tbWFuZHMoKQor
ICAgICAgZ29sZGVuX2ZpbGUgPSBvcGVuKEdPTERFTl9QQVRILCAnd2InKQorICAgICAgZ29sZGVu
X2ZpbGUud3JpdGUob3V0cHV0KQorICAgICAgZ29sZGVuX2ZpbGUuY2xvc2UoKQorICAgIGVsc2U6
CisgICAgICBtZXNzYWdlID0gKAorICAgICAgICAgICIiIlVuYWJsZSB0byB3cml0ZSBhIGdvbGRl
biBmaWxlIHdoZW4gY29tcGlsZWQgaW4gYW4gZW52aXJvbm1lbnQKK3RoYXQgZG9lcyBub3Qgc3Vw
cG9ydCBhbGwgdGhlIHJlcXVpcmVkIGZlYXR1cmVzIChkZWF0aCB0ZXN0cywKK3R5cGVkIHRlc3Rz
LCBzdGFjayB0cmFjZXMsIGFuZCBtdWx0aXBsZSB0aHJlYWRzKS4KK1BsZWFzZSBidWlsZCB0aGlz
IHRlc3QgYW5kIGdlbmVyYXRlIHRoZSBnb2xkZW4gZmlsZSB1c2luZyBCbGF6ZSBvbiBMaW51eC4i
IiIpCisKKyAgICAgIHN5cy5zdGRlcnIud3JpdGUobWVzc2FnZSkKKyAgICAgIHN5cy5leGl0KDEp
CisgIGVsc2U6CisgICAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE4MDYzMGUyODJiMDM4YTdlOTljNmYyMzE1MjM2ZjEzODNkYTkxYTcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0
LXRlc3RfLmNjCkBAIC0wLDAgKzEsMTEwOSBAQAorLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJ
bmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgZmlsZSBpcyB0byBn
ZW5lcmF0ZSBHb29nbGUgVGVzdCBvdXRwdXQgdW5kZXIKKy8vIHZhcmlvdXMgY29uZGl0aW9ucy4g
IFRoZSBvdXRwdXQgd2lsbCB0aGVuIGJlIHZlcmlmaWVkIGJ5CisvLyBnb29nbGV0ZXN0LW91dHB1
dC10ZXN0LnB5IHRvIGVuc3VyZSB0aGF0IEdvb2dsZSBUZXN0IGdlbmVyYXRlcyB0aGUKKy8vIGRl
c2lyZWQgbWVzc2FnZXMuICBUaGVyZWZvcmUsIG1vc3QgdGVzdHMgaW4gdGhpcyBmaWxlIGFyZSBN
RUFOVCBUTworLy8gRkFJTC4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgorI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgor
CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpZiBfTVNDX1ZFUgorICBHVEVTVF9ESVNBQkxFX01T
Q19XQVJOSU5HU19QVVNIXyg0MTI3IC8qIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29uc3Rh
bnQgKi8pCisjZW5kaWYgIC8vIC4gX01TQ19WRVIgICAgCisKKyNpZiBHVEVTVF9JU19USFJFQURT
QUZFCit1c2luZyB0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjsKK3Vz
aW5nIHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0QXJyYXk7CisKK3VzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpOb3RpZmljYXRpb247Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkV2l0aFBh
cmFtOworI2VuZGlmCisKK25hbWVzcGFjZSBwb3NpeCA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OnBv
c2l4OworCisvLyBUZXN0cyBjYXRjaGluZyBmYXRhbCBmYWlsdXJlcy4KKworLy8gQSBzdWJyb3V0
aW5lIHVzZWQgYnkgdGhlIGZvbGxvd2luZyB0ZXN0Lgordm9pZCBUZXN0RXExKGludCB4KSB7Cisg
IEFTU0VSVF9FUSgxLCB4KTsKK30KKworLy8gVGhpcyBmdW5jdGlvbiBjYWxscyBhIHRlc3Qgc3Vi
cm91dGluZSwgY2F0Y2hlcyB0aGUgZmF0YWwgZmFpbHVyZSBpdAorLy8gZ2VuZXJhdGVzLCBhbmQg
dGhlbiByZXR1cm5zIGVhcmx5Lgordm9pZCBUcnlUZXN0U3Vicm91dGluZSgpIHsKKyAgLy8gQ2Fs
bHMgYSBzdWJyb3VudGluZSB0aGF0IHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUuCisgIFRlc3RFcTEo
Mik7CisKKyAgLy8gQ2F0Y2hlcyB0aGUgZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSB0ZXN0
LgorICAvLworICAvLyBUaGUgdGVzdGluZzo6VGVzdDo6IHByZWZpeCBpcyBuZWNlc3Nhcnkgd2hl
biBjYWxsaW5nCisgIC8vIEhhc0ZhdGFsRmFpbHVyZSgpIG91dHNpZGUgb2YgYSBURVNULCBURVNU
X0YsIG9yIHRlc3QgZml4dHVyZS4KKyAgaWYgKHRlc3Rpbmc6OlRlc3Q6Okhhc0ZhdGFsRmFpbHVy
ZSgpKSByZXR1cm47CisKKyAgLy8gSWYgd2UgZ2V0IGhlcmUsIHNvbWV0aGluZyBpcyB3cm9uZy4K
KyAgRkFJTCgpIDw8ICJUaGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkLiI7Cit9CisKK1RFU1Qo
UGFzc2luZ1Rlc3QsIFBhc3NpbmdUZXN0MSkgeworfQorCitURVNUKFBhc3NpbmdUZXN0LCBQYXNz
aW5nVGVzdDIpIHsKK30KKworLy8gVGVzdHMgdGhhdCBwYXJhbWV0ZXJzIG9mIGZhaWxpbmcgcGFy
YW1ldGVyaXplZCB0ZXN0cyBhcmUgcHJpbnRlZCBpbiB0aGUKKy8vIGZhaWxpbmcgdGVzdCBzdW1t
YXJ5LgorY2xhc3MgRmFpbGluZ1BhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBh
cmFtPGludD4ge307CisKK1RFU1RfUChGYWlsaW5nUGFyYW1UZXN0LCBGYWlscykgeworICBFWFBF
Q1RfRVEoMSwgR2V0UGFyYW0oKSk7Cit9CisKKy8vIFRoaXMgZ2VuZXJhdGVzIGEgdGVzdCB3aGlj
aCB3aWxsIGZhaWwuIEdvb2dsZSBUZXN0IGlzIGV4cGVjdGVkIHRvIHByaW50CisvLyBpdHMgcGFy
YW1ldGVyIHdoZW4gaXQgb3V0cHV0cyB0aGUgbGlzdCBvZiBhbGwgZmFpbGVkIHRlc3RzLgorSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoUHJpbnRpbmdGYWlsaW5nUGFyYW1zLAorICAgICAgICAgICAg
ICAgICAgICAgICAgRmFpbGluZ1BhcmFtVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3Rpbmc6OlZhbHVlcygyKSk7CisKK3N0YXRpYyBjb25zdCBjaGFyIGtHb2xkZW5TdHJpbmdbXSA9
ICJcIkxpbmVcMCAxXCJcbkxpbmUgMiI7CisKK1RFU1QoTm9uZmF0YWxGYWlsdXJlVGVzdCwgRXNj
YXBlc1N0cmluZ09wZXJhbmRzKSB7CisgIHN0ZDo6c3RyaW5nIGFjdHVhbCA9ICJhY3R1YWwgXCJz
dHJpbmdcIiI7CisgIEVYUEVDVF9FUShrR29sZGVuU3RyaW5nLCBhY3R1YWwpOworCisgIGNvbnN0
IGNoYXIqIGdvbGRlbiA9IGtHb2xkZW5TdHJpbmc7CisgIEVYUEVDVF9FUShnb2xkZW4sIGFjdHVh
bCk7Cit9CisKK1RFU1QoTm9uZmF0YWxGYWlsdXJlVGVzdCwgRGlmZkZvckxvbmdTdHJpbmdzKSB7
CisgIHN0ZDo6c3RyaW5nIGdvbGRlbl9zdHIoa0dvbGRlblN0cmluZywgc2l6ZW9mKGtHb2xkZW5T
dHJpbmcpIC0gMSk7CisgIEVYUEVDVF9FUShnb2xkZW5fc3RyLCAiTGluZSAyIik7Cit9CisKKy8v
IFRlc3RzIGNhdGNoaW5nIGEgZmF0YWwgZmFpbHVyZSBpbiBhIHN1YnJvdXRpbmUuCitURVNUKEZh
dGFsRmFpbHVyZVRlc3QsIEZhdGFsRmFpbHVyZUluU3Vicm91dGluZSkgeworICBwcmludGYoIihl
eHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSlcbiIpOworCisgIFRyeVRlc3RT
dWJyb3V0aW5lKCk7Cit9CisKKy8vIFRlc3RzIGNhdGNoaW5nIGEgZmF0YWwgZmFpbHVyZSBpbiBh
IG5lc3RlZCBzdWJyb3V0aW5lLgorVEVTVChGYXRhbEZhaWx1cmVUZXN0LCBGYXRhbEZhaWx1cmVJ
bk5lc3RlZFN1YnJvdXRpbmUpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0
IHggc2hvdWxkIGJlIDEpXG4iKTsKKworICAvLyBDYWxscyBhIHN1YnJvdW50aW5lIHRoYXQgeWll
bGRzIGEgZmF0YWwgZmFpbHVyZS4KKyAgVHJ5VGVzdFN1YnJvdXRpbmUoKTsKKworICAvLyBDYXRj
aGVzIHRoZSBmYXRhbCBmYWlsdXJlIGFuZCBhYm9ydHMgdGhlIHRlc3QuCisgIC8vCisgIC8vIFdo
ZW4gY2FsbGluZyBIYXNGYXRhbEZhaWx1cmUoKSBpbnNpZGUgYSBURVNULCBURVNUX0YsIG9yIHRl
c3QKKyAgLy8gZml4dHVyZSwgdGhlIHRlc3Rpbmc6OlRlc3Q6OiBwcmVmaXggaXMgbm90IG5lZWRl
ZC4KKyAgaWYgKEhhc0ZhdGFsRmFpbHVyZSgpKSByZXR1cm47CisKKyAgLy8gSWYgd2UgZ2V0IGhl
cmUsIHNvbWV0aGluZyBpcyB3cm9uZy4KKyAgRkFJTCgpIDw8ICJUaGlzIHNob3VsZCBuZXZlciBi
ZSByZWFjaGVkLiI7Cit9CisKKy8vIFRlc3RzIEhhc0ZhdGFsRmFpbHVyZSgpIGFmdGVyIGEgZmFp
bGVkIEVYUEVDVCBjaGVjay4KK1RFU1QoRmF0YWxGYWlsdXJlVGVzdCwgTm9uZmF0YWxGYWlsdXJl
SW5TdWJyb3V0aW5lKSB7CisgIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUgb24gZmFsc2Up
XG4iKTsKKyAgRVhQRUNUX1RSVUUoZmFsc2UpOyAgLy8gR2VuZXJhdGVzIGEgbm9uZmF0YWwgZmFp
bHVyZQorICBBU1NFUlRfRkFMU0UoSGFzRmF0YWxGYWlsdXJlKCkpOyAgLy8gVGhpcyBzaG91bGQg
c3VjY2VlZC4KK30KKworLy8gVGVzdHMgaW50ZXJsZWF2aW5nIHVzZXIgbG9nZ2luZyBhbmQgR29v
Z2xlIFRlc3QgYXNzZXJ0aW9ucy4KK1RFU1QoTG9nZ2luZ1Rlc3QsIEludGVybGVhdmluZ0xvZ2dp
bmdBbmRBc3NlcnRpb25zKSB7CisgIHN0YXRpYyBjb25zdCBpbnQgYVs0XSA9IHsKKyAgICAzLCA5
LCAyLCA2CisgIH07CisKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24gKDMpID49
IChhW2ldKSlcbiIpOworICBmb3IgKGludCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKGEpL3NpemVvZigqYSkpOyBpKyspIHsKKyAgICBwcmludGYoImkgPT0gJWRcbiIsIGkpOwor
ICAgIEVYUEVDVF9HRSgzLCBhW2ldKTsKKyAgfQorfQorCisvLyBUZXN0cyB0aGUgU0NPUEVEX1RS
QUNFIG1hY3JvLgorCisvLyBBIGhlbHBlciBmdW5jdGlvbiBmb3IgdGVzdGluZyBTQ09QRURfVFJB
Q0UuCit2b2lkIFN1YldpdGhvdXRUcmFjZShpbnQgbikgeworICBFWFBFQ1RfRVEoMSwgbik7Cisg
IEFTU0VSVF9FUSgyLCBuKTsKK30KKworLy8gQW5vdGhlciBoZWxwZXIgZnVuY3Rpb24gZm9yIHRl
c3RpbmcgU0NPUEVEX1RSQUNFLgordm9pZCBTdWJXaXRoVHJhY2UoaW50IG4pIHsKKyAgU0NPUEVE
X1RSQUNFKHRlc3Rpbmc6Ok1lc3NhZ2UoKSA8PCAibiA9ICIgPDwgbik7CisKKyAgU3ViV2l0aG91
dFRyYWNlKG4pOworfQorCitURVNUKFNDT1BFRF9UUkFDRVRlc3QsIEFjY2VwdGVkVmFsdWVzKSB7
CisgIFNDT1BFRF9UUkFDRSgibGl0ZXJhbCBzdHJpbmciKTsKKyAgU0NPUEVEX1RSQUNFKHN0ZDo6
c3RyaW5nKCJzdGQ6OnN0cmluZyIpKTsKKyAgU0NPUEVEX1RSQUNFKDEzMzcpOyAgLy8gc3RyZWFt
YWJsZSB0eXBlCisgIGNvbnN0IGNoYXIqIG51bGxfdmFsdWUgPSBOVUxMOworICBTQ09QRURfVFJB
Q0UobnVsbF92YWx1ZSk7CisKKyAgQUREX0ZBSUxVUkUoKSA8PCAiSnVzdCBjaGVja2luZyB0aGF0
IGFsbCB0aGVzZSB2YWx1ZXMgd29yayBmaW5lLiI7Cit9CisKKy8vIFRlc3RzIHRoYXQgU0NPUEVE
X1RSQUNFKCkgb2JleXMgbGV4aWNhbCBzY29wZXMuCitURVNUKFNDT1BFRF9UUkFDRVRlc3QsIE9i
ZXlzU2NvcGVzKSB7CisgIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKKworICAvLyBU
aGVyZSBzaG91bGQgYmUgbm8gdHJhY2UgYmVmb3JlIFNDT1BFRF9UUkFDRSgpIGlzIGludm9rZWQu
CisgIEFERF9GQUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3Vs
ZG4ndCBoYXZlIGEgdHJhY2UuIjsKKworICB7CisgICAgU0NPUEVEX1RSQUNFKCJFeHBlY3RlZCB0
cmFjZSIpOworICAgIC8vIEFmdGVyIFNDT1BFRF9UUkFDRSgpLCBhIGZhaWx1cmUgaW4gdGhlIGN1
cnJlbnQgc2NvcGUgc2hvdWxkIGNvbnRhaW4KKyAgICAvLyB0aGUgdHJhY2UuCisgICAgQUREX0ZB
SUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGhhdmUgYSB0
cmFjZS4iOworICB9CisKKyAgLy8gT25jZSB0aGUgY29udHJvbCBsZWF2ZXMgdGhlIHNjb3BlIG9m
IHRoZSBTQ09QRURfVFJBQ0UoKSwgdGhlcmUKKyAgLy8gc2hvdWxkIGJlIG5vIHRyYWNlIGFnYWlu
LgorICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91
bGRuJ3QgaGF2ZSBhIHRyYWNlLiI7Cit9CisKKy8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFIHdv
cmtzIGluc2lkZSBhIGxvb3AuCitURVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtzSW5Mb29wKSB7
CisgIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKKworICBmb3IgKGludCBpID0gMTsg
aSA8PSAyOyBpKyspIHsKKyAgICBTQ09QRURfVFJBQ0UodGVzdGluZzo6TWVzc2FnZSgpIDw8ICJp
ID0gIiA8PCBpKTsKKworICAgIFN1YldpdGhvdXRUcmFjZShpKTsKKyAgfQorfQorCisvLyBUZXN0
cyB0aGF0IFNDT1BFRF9UUkFDRSB3b3JrcyBpbiBhIHN1YnJvdXRpbmUuCitURVNUKFNDT1BFRF9U
UkFDRVRlc3QsIFdvcmtzSW5TdWJyb3V0aW5lKSB7CisgIHByaW50ZigiKGV4cGVjdGVkIHRvIGZh
aWwpXG4iKTsKKworICBTdWJXaXRoVHJhY2UoMSk7CisgIFN1YldpdGhUcmFjZSgyKTsKK30KKwor
Ly8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0UgY2FuIGJlIG5lc3RlZC4KK1RFU1QoU0NPUEVEX1RS
QUNFVGVzdCwgQ2FuQmVOZXN0ZWQpIHsKKyAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIp
OworCisgIFNDT1BFRF9UUkFDRSgiIik7ICAvLyBBIHRyYWNlIHdpdGhvdXQgYSBtZXNzYWdlLgor
CisgIFN1YldpdGhUcmFjZSgyKTsKK30KKworLy8gVGVzdHMgdGhhdCBtdWx0aXBsZSBTQ09QRURf
VFJBQ0VzIGNhbiBiZSB1c2VkIGluIHRoZSBzYW1lIHNjb3BlLgorVEVTVChTQ09QRURfVFJBQ0VU
ZXN0LCBDYW5CZVJlcGVhdGVkKSB7CisgIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsK
KworICBTQ09QRURfVFJBQ0UoIkEiKTsKKyAgQUREX0ZBSUxVUkUoKQorICAgICAgPDwgIlRoaXMg
ZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEuIjsK
KworICBTQ09QRURfVFJBQ0UoIkIiKTsKKyAgQUREX0ZBSUxVUkUoKQorICAgICAgPDwgIlRoaXMg
ZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEgYW5k
IEIuIjsKKworICB7CisgICAgU0NPUEVEX1RSQUNFKCJDIik7CisgICAgQUREX0ZBSUxVUkUoKSA8
PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkICIKKyAgICAgICAgICAgICAg
ICAgIDw8ICJjb250YWluIHRyYWNlIHBvaW50IEEsIEIsIGFuZCBDLiI7CisgIH0KKworICBTQ09Q
RURfVFJBQ0UoIkQiKTsKKyAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVj
dGVkLCBhbmQgc2hvdWxkICIKKyAgICAgICAgICAgICAgICA8PCAiY29udGFpbiB0cmFjZSBwb2lu
dCBBLCBCLCBhbmQgRC4iOworfQorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorLy8gVGVzdHMg
dGhhdCBTQ09QRURfVFJBQ0UoKXMgY2FuIGJlIHVzZWQgY29uY3VycmVudGx5IGZyb20gbXVsdGlw
bGUKKy8vIHRocmVhZHMuICBOYW1lbHksIGFuIGFzc2VydGlvbiBzaG91bGQgYmUgYWZmZWN0ZWQg
YnkKKy8vIFNDT1BFRF9UUkFDRSgpcyBpbiBpdHMgb3duIHRocmVhZCBvbmx5LgorCisvLyBIZXJl
J3MgdGhlIHNlcXVlbmNlIG9mIGFjdGlvbnMgdGhhdCBoYXBwZW4gaW4gdGhlIHRlc3Q6CisvLwor
Ly8gICBUaHJlYWQgQSAobWFpbikgICAgICAgICAgICAgICAgfCBUaHJlYWQgQiAoc3Bhd25lZCkK
Ky8vICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PXw9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQorLy8gICBzcGF3bnMgdGhyZWFkIEIgICAgICAgICAgICAgICAgfAorLy8g
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLyAgIHdhaXRzIGZvciBuMSAgICAgICAgICAgICAgICAgICB8IFNDT1BFRF9U
UkFDRSgiVHJhY2UgQiIpOworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBn
ZW5lcmF0ZXMgZmFpbHVyZSAjMQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCBub3RpZmllcyBuMQorLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIFNDT1BFRF9UUkFDRSgiVHJhY2UgQSIp
OyAgICAgICB8IHdhaXRzIGZvciBuMgorLy8gICBnZW5lcmF0ZXMgZmFpbHVyZSAjMiAgICAgICAg
ICAgfAorLy8gICBub3RpZmllcyBuMiAgICAgICAgICAgICAgICAgICAgfAorLy8gICAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLyAgIHdhaXRzIGZvciBuMyAgICAgICAgICAgICAgICAgICB8IGdlbmVyYXRlcyBmYWlsdXJl
ICMzCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRyYWNlIEIgZGllcwor
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnZW5lcmF0ZXMgZmFpbHVyZSAj
NAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBub3RpZmllcyBuMworLy8g
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLyAgIGdlbmVyYXRlcyBmYWlsdXJlICM1ICAgICAgICAgICB8IGZpbmlzaGVz
CisvLyAgIHRyYWNlIEEgZGllcyAgICAgICAgICAgICAgICAgICB8CisvLyAgIGdlbmVyYXRlcyBm
YWlsdXJlICM2ICAgICAgICAgICB8CisvLyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgd2FpdHMgZm9yIHRocmVh
ZCBCIHRvIGZpbmlzaCAgIHwKKworc3RydWN0IENoZWNrUG9pbnRzIHsKKyAgTm90aWZpY2F0aW9u
IG4xOworICBOb3RpZmljYXRpb24gbjI7CisgIE5vdGlmaWNhdGlvbiBuMzsKK307CisKK3N0YXRp
YyB2b2lkIFRocmVhZFdpdGhTY29wZWRUcmFjZShDaGVja1BvaW50cyogY2hlY2tfcG9pbnRzKSB7
CisgIHsKKyAgICBTQ09QRURfVFJBQ0UoIlRyYWNlIEIiKTsKKyAgICBBRERfRkFJTFVSRSgpCisg
ICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxIChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBC
IGFsaXZlKS4iOworICAgIGNoZWNrX3BvaW50cy0+bjEuTm90aWZ5KCk7CisgICAgY2hlY2tfcG9p
bnRzLT5uMi5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7CisKKyAgICBBRERfRkFJTFVSRSgpCisgICAg
ICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzIChpbiB0aHJlYWQgQiwgdHJhY2UgQSAmIEIgYm90
aCBhbGl2ZSkuIjsKKyAgfSAgLy8gVHJhY2UgQiBkaWVzIGhlcmUuCisgIEFERF9GQUlMVVJFKCkK
KyAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM0IChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBB
IGFsaXZlKS4iOworICBjaGVja19wb2ludHMtPm4zLk5vdGlmeSgpOworfQorCitURVNUKFNDT1BF
RF9UUkFDRVRlc3QsIFdvcmtzQ29uY3VycmVudGx5KSB7CisgIHByaW50ZigiKGV4cGVjdGluZyA2
IGZhaWx1cmVzKVxuIik7CisKKyAgQ2hlY2tQb2ludHMgY2hlY2tfcG9pbnRzOworICBUaHJlYWRX
aXRoUGFyYW08Q2hlY2tQb2ludHMqPiB0aHJlYWQoJlRocmVhZFdpdGhTY29wZWRUcmFjZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaGVja19wb2ludHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgY2hlY2tfcG9pbnRz
Lm4xLldhaXRGb3JOb3RpZmljYXRpb24oKTsKKworICB7CisgICAgU0NPUEVEX1RSQUNFKCJUcmFj
ZSBBIik7CisgICAgQUREX0ZBSUxVUkUoKQorICAgICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAj
MiAoaW4gdGhyZWFkIEEsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLiI7CisgICAgY2hlY2tfcG9p
bnRzLm4yLk5vdGlmeSgpOworICAgIGNoZWNrX3BvaW50cy5uMy5XYWl0Rm9yTm90aWZpY2F0aW9u
KCk7CisKKyAgICBBRERfRkFJTFVSRSgpCisgICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM1
IChpbiB0aHJlYWQgQSwgb25seSB0cmFjZSBBIGFsaXZlKS4iOworICB9ICAvLyBUcmFjZSBBIGRp
ZXMgaGVyZS4KKyAgQUREX0ZBSUxVUkUoKQorICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzYg
KGluIHRocmVhZCBBLCBubyB0cmFjZSBhbGl2ZSkuIjsKKyAgdGhyZWFkLkpvaW4oKTsKK30KKyNl
bmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFEU0FGRQorCisvLyBUZXN0cyBiYXNpYyBmdW5jdGlvbmFs
aXR5IG9mIHRoZSBTY29wZWRUcmFjZSB1dGlsaXR5IChtb3N0IG9mIGl0cyBmZWF0dXJlcworLy8g
YXJlIGFscmVhZHkgdGVzdGVkIGluIFNDT1BFRF9UUkFDRVRlc3QpLgorVEVTVChTY29wZWRUcmFj
ZVRlc3QsIFdpdGhFeHBsaWNpdEZpbGVBbmRMaW5lKSB7CisgIHRlc3Rpbmc6OlNjb3BlZFRyYWNl
IHRyYWNlKCJleHBsaWNpdF9maWxlLmNjIiwgMTIzLCAiZXhwZWN0ZWQgdHJhY2UgbWVzc2FnZSIp
OworICBBRERfRkFJTFVSRSgpIDw8ICJDaGVjayB0aGF0IHRoZSB0cmFjZSBpcyBhdHRhY2hlZCB0
byBhIHBhcnRpY3VsYXIgbG9jYXRpb24uIjsKK30KKworVEVTVChEaXNhYmxlZFRlc3RzV2Fybmlu
Z1Rlc3QsCisgICAgIERJU0FCTEVEX0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZ1N1cHByZXNzZXNX
YXJuaW5nKSB7CisgIC8vIFRoaXMgdGVzdCBib2R5IGlzIGludGVudGlvbmFsbHkgZW1wdHkuICBJ
dHMgc29sZSBwdXJwb3NlIGlzIGZvcgorICAvLyB2ZXJpZnlpbmcgdGhhdCB0aGUgLS1ndGVzdF9h
bHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnCisgIC8vIHN1cHByZXNzZXMgdGhlICJZT1UgSEFW
RSAxMiBESVNBQkxFRCBURVNUUyIgd2FybmluZyBhdCB0aGUgZW5kIG9mCisgIC8vIHRoZSB0ZXN0
IG91dHB1dC4KK30KKworLy8gVGVzdHMgdXNpbmcgYXNzZXJ0aW9ucyBvdXRzaWRlIG9mIFRFU1Qg
YW5kIFRFU1RfRi4KKy8vCisvLyBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgdHdvIGZhaWx1cmVzIGlu
dGVudGlvbmFsbHkuCit2b2lkIEFkSG9jVGVzdCgpIHsKKyAgcHJpbnRmKCJUaGUgbm9uLXRlc3Qg
cGFydCBvZiB0aGUgY29kZSBpcyBleHBlY3RlZCB0byBoYXZlIDIgZmFpbHVyZXMuXG5cbiIpOwor
ICBFWFBFQ1RfVFJVRShmYWxzZSk7CisgIEVYUEVDVF9FUSgyLCAzKTsKK30KKworLy8gUnVucyBh
bGwgVEVTVHMsIGFsbCBURVNUX0ZzLCBhbmQgdGhlIGFkIGhvYyB0ZXN0LgoraW50IFJ1bkFsbFRl
c3RzKCkgeworICBBZEhvY1Rlc3QoKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KKwor
Ly8gVGVzdHMgbm9uLWZhdGFsIGZhaWx1cmVzIGluIHRoZSBmaXh0dXJlIGNvbnN0cnVjdG9yLgor
Y2xhc3MgTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29u
c3RydWN0b3JUZXN0KCkgeworICAgIHByaW50ZigiKGV4cGVjdGluZyA1IGZhaWx1cmVzKVxuIik7
CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3Qg
Zml4dHVyZSBjJ3Rvci4iOworICB9CisKKyAgfk5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0
cnVjdG9yVGVzdCgpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM1
LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgU2V0
VXAoKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gU2V0
VXAoKS4iOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIEFERF9GQUlM
VVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIFRlYXJEb3duLiI7CisgIH0KK307CisK
K1RFU1RfRihOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QsIEZhaWx1cmVJ
bkNvbnN0cnVjdG9yKSB7CisgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMs
IGluIHRoZSB0ZXN0IGJvZHkuIjsKK30KKworLy8gVGVzdHMgZmF0YWwgZmFpbHVyZXMgaW4gdGhl
IGZpeHR1cmUgY29uc3RydWN0b3IuCitjbGFzcyBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1
Y3RvclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICBGYXRhbEZh
aWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QoKSB7CisgICAgcHJpbnRmKCIoZXhwZWN0aW5n
IDIgZmFpbHVyZXMpXG4iKTsKKyAgICBJbml0KCk7CisgIH0KKworICB+RmF0YWxGYWlsdXJlSW5G
aXh0dXJlQ29uc3RydWN0b3JUZXN0KCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVk
IGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKKyAgfQorCisgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1
cmUgaW4gU2V0VXAoKS4gICIKKyAgICAgICAgICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIg
Z2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgIgorICAgICAgICAgICAgICAgICAg
PDwgImhhZCBhIGZhdGFsIGZhaWx1cmUuIjsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93
bigpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gVGVhckRv
d24oKS4gICIKKyAgICAgICAgICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUs
IGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgIgorICAgICAgICAgICAgICAgICAgPDwgImhhZCBh
IGZhdGFsIGZhaWx1cmUuIjsKKyAgfQorCisgcHJpdmF0ZToKKyAgdm9pZCBJbml0KCkgeworICAg
IEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rv
ci4iOworICB9Cit9OworCitURVNUX0YoRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JU
ZXN0LCBGYWlsdXJlSW5Db25zdHJ1Y3RvcikgeworICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVD
VEVEIGZhaWx1cmUgaW4gdGhlIHRlc3QgYm9keS4gICIKKyAgICAgICAgICAgICAgICA8PCAiV2Ug
c2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yICIKKyAgICAg
ICAgICAgICAgICA8PCAiaGFkIGEgZmF0YWwgZmFpbHVyZS4iOworfQorCisvLyBUZXN0cyBub24t
ZmF0YWwgZmFpbHVyZXMgaW4gU2V0VXAoKS4KK2NsYXNzIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB+Tm9u
RmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QoKSB7CisgICAgRGVpbml0KCk7CisgIH0KKworICB2aXJ0
dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgcHJpbnRmKCIoZXhwZWN0aW5nIDQgZmFpbHVyZXMpXG4i
KTsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgp
LiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgRkFJTCgpIDw8ICJF
eHBlY3RlZCBmYWlsdXJlICMzLCBpbiBUZWFyRG93bigpLiI7CisgIH0KKyBwcml2YXRlOgorICB2
b2lkIERlaW5pdCgpIHsKKyAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRo
ZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKKyAgfQorfTsKKworVEVTVF9GKE5vbkZhdGFsRmFpbHVy
ZUluU2V0VXBUZXN0LCBGYWlsdXJlSW5TZXRVcCkgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZh
aWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLiI7Cit9CisKKy8vIFRlc3RzIGZhdGFsIGZh
aWx1cmVzIGluIFNldFVwKCkuCitjbGFzcyBGYXRhbEZhaWx1cmVJblNldFVwVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgfkZhdGFsRmFpbHVyZUlu
U2V0VXBUZXN0KCkgeworICAgIERlaW5pdCgpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNldFVw
KCkgeworICAgIHByaW50ZigiKGV4cGVjdGluZyAzIGZhaWx1cmVzKVxuIik7CisgICAgRkFJTCgp
IDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLiI7CisgIH0KKworICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBp
biBUZWFyRG93bigpLiI7CisgIH0KKyBwcml2YXRlOgorICB2b2lkIERlaW5pdCgpIHsKKyAgICBG
QUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3Iu
IjsKKyAgfQorfTsKKworVEVTVF9GKEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LCBGYWlsdXJlSW5T
ZXRVcCkgeworICBGQUlMKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBmdW5j
dGlvbi4gICIKKyAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIFNldFVw
KCkgZmFpbGVkLiI7Cit9CisKK1RFU1QoQWRkRmFpbHVyZUF0VGVzdCwgTWVzc2FnZUNvbnRhaW5z
U3BlY2lmaWVkRmlsZUFuZExpbmVOdW1iZXIpIHsKKyAgQUREX0ZBSUxVUkVfQVQoImZvby5jYyIs
IDQyKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSBpbiBmb28uY2MiOworfQorCisjaWYgR1RFU1RfSVNf
VEhSRUFEU0FGRQorCisvLyBBIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KK3ZvaWQgRGll
SWYoYm9vbCBzaG91bGRfZGllKSB7CisgIEdURVNUX0NIRUNLXyghc2hvdWxkX2RpZSkgPDwgIiAt
IGRlYXRoIGluc2lkZSBEaWVJZigpLiI7Cit9CisKKy8vIFRlc3RzIHJ1bm5pbmcgZGVhdGggdGVz
dHMgaW4gYSBtdWx0aS10aHJlYWRlZCBjb250ZXh0LgorCisvLyBVc2VkIGZvciBjb29yZGluYXRp
b24gYmV0d2VlbiB0aGUgbWFpbiBhbmQgdGhlIHNwYXduIHRocmVhZC4KK3N0cnVjdCBTcGF3blRo
cmVhZE5vdGlmaWNhdGlvbnMgeworICBTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMoKSB7fQorCisg
IE5vdGlmaWNhdGlvbiBzcGF3bl90aHJlYWRfc3RhcnRlZDsKKyAgTm90aWZpY2F0aW9uIHNwYXdu
X3RocmVhZF9va190b190ZXJtaW5hdGU7CisKKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExPV19D
T1BZX0FORF9BU1NJR05fKFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyk7Cit9OworCisvLyBUaGUg
ZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgaW4gdGhlIHRocmVhZCBzcGF3biBieSB0aGUKKy8vIE11
bHRpcGxlVGhyZWFkcyB0ZXN0IChiZWxvdykuCitzdGF0aWMgdm9pZCBUaHJlYWRSb3V0aW5lKFNw
YXduVGhyZWFkTm90aWZpY2F0aW9ucyogbm90aWZpY2F0aW9ucykgeworICAvLyBTaWduYWxzIHRo
ZSBtYWluIHRocmVhZCB0aGF0IHRoaXMgdGhyZWFkIGhhcyBzdGFydGVkLgorICBub3RpZmljYXRp
b25zLT5zcGF3bl90aHJlYWRfc3RhcnRlZC5Ob3RpZnkoKTsKKworICAvLyBXYWl0cyBmb3IgcGVy
bWlzc2lvbiB0byBmaW5pc2ggZnJvbSB0aGUgbWFpbiB0aHJlYWQuCisgIG5vdGlmaWNhdGlvbnMt
PnNwYXduX3RocmVhZF9va190b190ZXJtaW5hdGUuV2FpdEZvck5vdGlmaWNhdGlvbigpOworfQor
CisvLyBUaGlzIGlzIGEgZGVhdGgtdGVzdCB0ZXN0LCBidXQgaXQncyBub3QgbmFtZWQgd2l0aCBh
IERlYXRoVGVzdAorLy8gc3VmZml4LiAgSXQgc3RhcnRzIHRocmVhZHMgd2hpY2ggbWlnaHQgaW50
ZXJmZXJlIHdpdGggbGF0ZXIKKy8vIGRlYXRoIHRlc3RzLCBzbyBpdCBtdXN0IHJ1biBhZnRlciBh
bGwgb3RoZXIgZGVhdGggdGVzdHMuCitjbGFzcyBEZWF0aFRlc3RBbmRNdWx0aVRocmVhZHNUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLy8gU3RhcnRzIGEgdGhy
ZWFkIGFuZCB3YWl0cyBmb3IgaXQgdG8gYmVnaW4uCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsK
KyAgICB0aHJlYWRfLnJlc2V0KG5ldyBUaHJlYWRXaXRoUGFyYW08U3Bhd25UaHJlYWROb3RpZmlj
YXRpb25zKj4oCisgICAgICAgICZUaHJlYWRSb3V0aW5lLCAmbm90aWZpY2F0aW9uc18sIE5VTEwp
KTsKKyAgICBub3RpZmljYXRpb25zXy5zcGF3bl90aHJlYWRfc3RhcnRlZC5XYWl0Rm9yTm90aWZp
Y2F0aW9uKCk7CisgIH0KKyAgLy8gVGVsbHMgdGhlIHRocmVhZCB0byBmaW5pc2gsIGFuZCByZWFw
cyBpdC4KKyAgLy8gRGVwZW5kaW5nIG9uIHRoZSB2ZXJzaW9uIG9mIHRoZSB0aHJlYWQgbGlicmFy
eSBpbiB1c2UsCisgIC8vIGEgbWFuYWdlciB0aHJlYWQgbWlnaHQgc3RpbGwgYmUgbGVmdCBydW5u
aW5nIHRoYXQgd2lsbCBpbnRlcmZlcmUKKyAgLy8gd2l0aCBsYXRlciBkZWF0aCB0ZXN0cy4gIFRo
aXMgaXMgdW5mb3J0dW5hdGUsIGJ1dCB0aGlzIGNsYXNzCisgIC8vIGNsZWFucyB1cCBhZnRlciBp
dHNlbGYgYXMgYmVzdCBpdCBjYW4uCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBu
b3RpZmljYXRpb25zXy5zcGF3bl90aHJlYWRfb2tfdG9fdGVybWluYXRlLk5vdGlmeSgpOworICB9
CisKKyBwcml2YXRlOgorICBTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMgbm90aWZpY2F0aW9uc187
CisgIHRlc3Rpbmc6OmludGVybmFsOjpzY29wZWRfcHRyPFRocmVhZFdpdGhQYXJhbTxTcGF3blRo
cmVhZE5vdGlmaWNhdGlvbnMqPiA+CisgICAgICB0aHJlYWRfOworfTsKKworI2VuZGlmICAvLyBH
VEVTVF9JU19USFJFQURTQUZFCisKKy8vIFRoZSBNaXhlZFVwVGVzdENhc2VUZXN0IHRlc3QgY2Fz
ZSB2ZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IHdpbGwgZmFpbCBhCisvLyB0ZXN0IGlmIGl0IHVz
ZXMgYSBkaWZmZXJlbnQgZml4dHVyZSBjbGFzcyB0aGFuIHdoYXQgb3RoZXIgdGVzdHMgaW4KKy8v
IHRoZSBzYW1lIHRlc3QgY2FzZSB1c2UuICBJdCBkZWxpYmVyYXRlbHkgY29udGFpbnMgdHdvIGZp
eHR1cmUKKy8vIGNsYXNzZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGJ1dCBkZWZpbmVkIGluIGRpZmZl
cmVudCBuYW1lc3BhY2VzLgorCisvLyBUaGUgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFt
ZVRlc3QgdGVzdCBjYXNlIHZlcmlmaWVzIHRoYXQKKy8vIHdoZW4gdGhlIHVzZXIgZGVmaW5lcyB0
d28gdGVzdHMgd2l0aCB0aGUgc2FtZSB0ZXN0IGNhc2UgbmFtZSBBTkQKKy8vIHNhbWUgdGVzdCBu
YW1lIChidXQgaW4gZGlmZmVyZW50IG5hbWVzcGFjZXMpLCB0aGUgc2Vjb25kIHRlc3Qgd2lsbAor
Ly8gZmFpbC4KKworbmFtZXNwYWNlIGZvbyB7CisKK2NsYXNzIE1peGVkVXBUZXN0Q2FzZVRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitURVNUX0YoTWl4ZWRVcFRlc3RDYXNlVGVz
dCwgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbykge30KK1RFU1RfRihNaXhlZFVwVGVzdENhc2VU
ZXN0LCBTZWNvbmRUZXN0RnJvbU5hbWVzcGFjZUZvbykge30KKworY2xhc3MgTWl4ZWRVcFRlc3RD
YXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitU
RVNUX0YoTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCisgICAgICAgVGhlU2Vj
b25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwpIHt9CisKK30gIC8vIG5hbWVzcGFjZSBmb28K
KworbmFtZXNwYWNlIGJhciB7CisKK2NsYXNzIE1peGVkVXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7Cit9OworCisvLyBUaGUgZm9sbG93aW5nIHR3byB0ZXN0cyBhcmUgZXhw
ZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24gdGhlCisvLyBnb2xkZW4gZmlsZSB0byBjaGVjayB0
aGF0IEdvb2dsZSBUZXN0IGdlbmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KK1RFU1Rf
RihNaXhlZFVwVGVzdENhc2VUZXN0LCBUaGlzU2hvdWxkRmFpbCkge30KK1RFU1RfRihNaXhlZFVw
VGVzdENhc2VUZXN0LCBUaGlzU2hvdWxkRmFpbFRvbykge30KKworY2xhc3MgTWl4ZWRVcFRlc3RD
YXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCisv
LyBFeHBlY3RlZCB0byBmYWlsLiAgV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gY2hlY2sg
dGhhdCBHb29nbGUgVGVzdAorLy8gZ2VuZXJhdGVzIHRoZSByaWdodCBlcnJvciBtZXNzYWdlLgor
VEVTVF9GKE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAorICAgICAgIFRoZVNl
Y29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsKSB7fQorCit9ICAvLyBuYW1lc3BhY2UgYmFy
CisKKy8vIFRoZSBmb2xsb3dpbmcgdHdvIHRlc3QgY2FzZXMgdmVyaWZ5IHRoYXQgR29vZ2xlIFRl
c3QgY2F0Y2hlcyB0aGUgdXNlcgorLy8gZXJyb3Igb2YgbWl4aW5nIFRFU1QgYW5kIFRFU1RfRiBp
biB0aGUgc2FtZSB0ZXN0IGNhc2UuICBUaGUgZmlyc3QKKy8vIHRlc3QgY2FzZSBjaGVja3MgdGhl
IHNjZW5hcmlvIHdoZXJlIFRFU1RfRiBhcHBlYXJzIGJlZm9yZSBURVNULCBhbmQKKy8vIHRoZSBz
ZWNvbmQgb25lIGNoZWNrcyB3aGVyZSBURVNUIGFwcGVhcnMgYmVmb3JlIFRFU1RfRi4KKworY2xh
c3MgVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlIDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgeworfTsKKworVEVTVF9GKFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2Fz
ZSwgRGVmaW5lZFVzaW5nVEVTVF9GKSB7fQorCisvLyBFeHBlY3RlZCB0byBmYWlsLiAgV2UgcmVs
eSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gY2hlY2sgdGhhdCBHb29nbGUgVGVzdAorLy8gZ2VuZXJh
dGVzIHRoZSByaWdodCBlcnJvciBtZXNzYWdlLgorVEVTVChURVNUX0ZfYmVmb3JlX1RFU1RfaW5f
c2FtZV90ZXN0X2Nhc2UsIERlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsKSB7fQorCitjbGFz
cyBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Cit9OworCitURVNUKFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZSwg
RGVmaW5lZFVzaW5nVEVTVCkge30KKworLy8gRXhwZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24g
dGhlIGdvbGRlbiBmaWxlIHRvIGNoZWNrIHRoYXQgR29vZ2xlIFRlc3QKKy8vIGdlbmVyYXRlcyB0
aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KK1RFU1RfRihURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2Ft
ZV90ZXN0X2Nhc2UsIERlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwpIHsKK30KKworLy8g
VXNlZCBmb3IgdGVzdGluZyBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGFuZCBFWFBFQ1RfRkFU
QUxfRkFJTFVSRSgpLgoraW50IGdsb2JhbF9pbnRlZ2VyID0gMDsKKworLy8gVGVzdHMgdGhhdCBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVuY2UgZ2xvYmFsIHZhcmlhYmxlcy4K
K1RFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFi
bGVzKSB7CisgIGdsb2JhbF9pbnRlZ2VyID0gMDsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
eworICAgIEVYUEVDVF9FUSgxLCBnbG9iYWxfaW50ZWdlcikgPDwgIkV4cGVjdGVkIG5vbi1mYXRh
bCBmYWlsdXJlLiI7CisgIH0sICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKK30KKwor
Ly8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVuY2UgbG9j
YWwgdmFyaWFibGVzCisvLyAoc3RhdGljIG9yIG5vdCkuCitURVNUKEV4cGVjdE5vbmZhdGFsRmFp
bHVyZVRlc3QsIENhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVzKSB7CisgIGludCBtID0gMDsKKyAg
c3RhdGljIGludCBuOworICBuID0gMTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAg
IEVYUEVDVF9FUShtLCBuKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKKyAgfSwg
IkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKCkgc3VjY2VlZHMgd2hlbiB0aGVyZSBpcyBleGFjdGx5CisvLyBv
bmUgbm9uLWZhdGFsIGZhaWx1cmUgYW5kIG5vIGZhdGFsIGZhaWx1cmUuCitURVNUKEV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QsIFN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUp
IHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4
cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7CisgIH0sICJFeHBlY3RlZCBub24tZmF0YWwgZmFp
bHVyZS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZh
aWxzIHdoZW4gdGhlcmUgaXMgbm8KKy8vIG5vbi1mYXRhbCBmYWlsdXJlLgorVEVTVChFeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUpIHsK
KyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRSh7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgYXJlIHR3bworLy8gbm9uLWZhdGFsIGZhaWx1cmVz
LgorVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUFyZVR3b05v
bmZhdGFsRmFpbHVyZXMpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwor
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0
ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMS4iOworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVk
IG5vbi1mYXRhbCBmYWlsdXJlIDIuIjsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBvbmUgZmF0YWwKKy8v
IGZhaWx1cmUuCitURVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJl
SXNPbmVGYXRhbEZhaWx1cmUpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIp
OworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBm
YXRhbCBmYWlsdXJlLiI7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWluZworLy8gdGVzdGVk
IHJldHVybnMuCitURVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblN0YXRl
bWVudFJldHVybnMpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAgcmV0dXJuOworICB9LCAiIik7Cit9CisKKyNp
ZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKCkgZmFpbHMgd2hlbiB0aGUgc3RhdGVtZW50IGJlaW5nCisvLyB0ZXN0ZWQgdGhyb3dz
LgorVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRUaHJv
d3MpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICB0cnkgeworICAg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKKyAgICAgIHRocm93IDA7CisgICAgfSwgIiIpOwor
ICB9IGNhdGNoKGludCkgeyAgLy8gTk9MSU5UCisgIH0KK30KKworI2VuZGlmICAvLyBHVEVTVF9I
QVNfRVhDRVBUSU9OUworCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgY2Fu
IHJlZmVyZW5jZSBnbG9iYWwgdmFyaWFibGVzLgorVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0
LCBDYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMpIHsKKyAgZ2xvYmFsX2ludGVnZXIgPSAwOwor
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CisgICAgQVNTRVJUX0VRKDEsIGdsb2JhbF9pbnRlZ2Vy
KSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOworICB9LCAiRXhwZWN0ZWQgZmF0YWwgZmFp
bHVyZS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGNhbiBy
ZWZlcmVuY2UgbG9jYWwgc3RhdGljCisvLyB2YXJpYWJsZXMuCitURVNUKEV4cGVjdEZhdGFsRmFp
bHVyZVRlc3QsIENhblJlZmVyZW5jZUxvY2FsU3RhdGljVmFyaWFibGVzKSB7CisgIHN0YXRpYyBp
bnQgbjsKKyAgbiA9IDE7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKKyAgICBBU1NFUlRfRVEo
MCwgbikgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKKyAgfSwgIkV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBz
dWNjZWVkcyB3aGVuIHRoZXJlIGlzIGV4YWN0bHkKKy8vIG9uZSBmYXRhbCBmYWlsdXJlIGFuZCBu
byBub24tZmF0YWwgZmFpbHVyZS4KK1RFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgU3VjY2Vl
ZHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZSkgeworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7
CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7CisgIH0sICJFeHBlY3Rl
ZCBmYXRhbCBmYWlsdXJlLiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlM
VVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBubyBmYXRhbAorLy8gZmFpbHVyZS4KK1RFU1QoRXhw
ZWN0RmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlKSB7Cisg
IHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoeworICB9LCAiIik7Cit9CisKKy8vIEEgaGVscGVyIGZvciBnZW5lcmF0aW5nIGEgZmF0YWwg
ZmFpbHVyZS4KK3ZvaWQgRmF0YWxGYWlsdXJlKCkgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZh
dGFsIGZhaWx1cmUuIjsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgp
IGZhaWxzIHdoZW4gdGhlcmUgYXJlIHR3bworLy8gZmF0YWwgZmFpbHVyZXMuCitURVNUKEV4cGVj
dEZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcykgewor
ICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKHsKKyAgICBGYXRhbEZhaWx1cmUoKTsKKyAgICBGYXRhbEZhaWx1cmUoKTsKKyAgfSwgIiIp
OworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0
aGVyZSBpcyBvbmUgbm9uLWZhdGFsCisvLyBmYWlsdXJlLgorVEVTVChFeHBlY3RGYXRhbEZhaWx1
cmVUZXN0LCBGYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlKSB7CisgIHByaW50Zigi
KGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeworICAg
IEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7CisgIH0sICIi
KTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4g
dGhlIHN0YXRlbWVudCBiZWluZworLy8gdGVzdGVkIHJldHVybnMuCitURVNUKEV4cGVjdEZhdGFs
RmFpbHVyZVRlc3QsIEZhaWxzV2hlblN0YXRlbWVudFJldHVybnMpIHsKKyAgcHJpbnRmKCIoZXhw
ZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CisgICAgcmV0
dXJuOworICB9LCAiIik7Cit9CisKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBUZXN0
cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGUgc3RhdGVtZW50IGJl
aW5nCisvLyB0ZXN0ZWQgdGhyb3dzLgorVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWls
c1doZW5TdGF0ZW1lbnRUaHJvd3MpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlc
biIpOworICB0cnkgeworICAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKKyAgICAgIHRocm93IDA7
CisgICAgfSwgIiIpOworICB9IGNhdGNoKGludCkgeyAgLy8gTk9MSU5UCisgIH0KK30KKworI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBUaGlzICNpZmRlZiBibG9jayB0ZXN0
cyB0aGUgb3V0cHV0IG9mIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCisKK3N0ZDo6c3RyaW5n
IFBhcmFtTmFtZUZ1bmMoY29uc3QgdGVzdGluZzo6VGVzdFBhcmFtSW5mbzxzdGQ6OnN0cmluZz4m
IGluZm8pIHsKKyAgcmV0dXJuIGluZm8ucGFyYW07Cit9CisKK2NsYXNzIFBhcmFtVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHN0ZDo6c3RyaW5nPiB7Cit9OworCitURVNUX1Ao
UGFyYW1UZXN0LCBTdWNjZXNzKSB7CisgIEVYUEVDVF9FUSgiYSIsIEdldFBhcmFtKCkpOworfQor
CitURVNUX1AoUGFyYW1UZXN0LCBGYWlsdXJlKSB7CisgIEVYUEVDVF9FUSgiYiIsIEdldFBhcmFt
KCkpIDw8ICJFeHBlY3RlZCBmYWlsdXJlIjsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ao
UHJpbnRpbmdTdHJpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1UZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6VmFsdWVzKHN0ZDo6c3RyaW5nKCJhIikpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1OYW1lRnVuYyk7CisKKy8vIFRoaXMgI2lmZGVm
IGJsb2NrIHRlc3RzIHRoZSBvdXRwdXQgb2YgdHlwZWQgdGVzdHMuCisjaWYgR1RFU1RfSEFTX1RZ
UEVEX1RFU1QKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlZFRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitUWVBFRF9URVNUX0NBU0UoVHlwZWRUZXN0LCB0ZXN0
aW5nOjpUeXBlczxpbnQ+KTsKKworVFlQRURfVEVTVChUeXBlZFRlc3QsIFN1Y2Nlc3MpIHsKKyAg
RVhQRUNUX0VRKDAsIFR5cGVQYXJhbSgpKTsKK30KKworVFlQRURfVEVTVChUeXBlZFRlc3QsIEZh
aWx1cmUpIHsKKyAgRVhQRUNUX0VRKDEsIFR5cGVQYXJhbSgpKSA8PCAiRXhwZWN0ZWQgZmFpbHVy
ZSI7Cit9CisKK3R5cGVkZWYgdGVzdGluZzo6VHlwZXM8Y2hhciwgaW50PiBUeXBlc0ZvclRlc3RX
aXRoTmFtZXM7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZWRUZXN0V2l0aE5h
bWVzIDogcHVibGljIHRlc3Rpbmc6OlRlc3Qge307CisKK2NsYXNzIFR5cGVkVGVzdE5hbWVzIHsK
KyBwdWJsaWM6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGF0aWMgc3RkOjpzdHJpbmcg
R2V0TmFtZShpbnQgaSkgeworICAgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFQsIGNo
YXI+Ojp2YWx1ZSkKKyAgICAgIHJldHVybiBzdGQ6OnN0cmluZygiY2hhcl8iKSArIDo6dGVzdGlu
Zzo6UHJpbnRUb1N0cmluZyhpKTsKKyAgICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxU
LCBpbnQ+Ojp2YWx1ZSkKKyAgICAgIHJldHVybiBzdGQ6OnN0cmluZygiaW50XyIpICsgOjp0ZXN0
aW5nOjpQcmludFRvU3RyaW5nKGkpOworICB9Cit9OworCitUWVBFRF9URVNUX0NBU0UoVHlwZWRU
ZXN0V2l0aE5hbWVzLCBUeXBlc0ZvclRlc3RXaXRoTmFtZXMsIFR5cGVkVGVzdE5hbWVzKTsKKwor
VFlQRURfVEVTVChUeXBlZFRlc3RXaXRoTmFtZXMsIFN1Y2Nlc3MpIHt9CisKK1RZUEVEX1RFU1Qo
VHlwZWRUZXN0V2l0aE5hbWVzLCBGYWlsdXJlKSB7IEZBSUwoKTsgfQorCisjZW5kaWYgIC8vIEdU
RVNUX0hBU19UWVBFRF9URVNUCisKKy8vIFRoaXMgI2lmZGVmIGJsb2NrIHRlc3RzIHRoZSBvdXRw
dXQgb2YgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorI2lmIEdURVNUX0hBU19UWVBFRF9URVNU
X1AKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlZFRlc3RQIDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgeworfTsKKworVFlQRURfVEVTVF9DQVNFX1AoVHlwZWRUZXN0UCk7CisKK1RZ
UEVEX1RFU1RfUChUeXBlZFRlc3RQLCBTdWNjZXNzKSB7CisgIEVYUEVDVF9FUSgwVSwgVHlwZVBh
cmFtKCkpOworfQorCitUWVBFRF9URVNUX1AoVHlwZWRUZXN0UCwgRmFpbHVyZSkgeworICBFWFBF
Q1RfRVEoMVUsIFR5cGVQYXJhbSgpKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7Cit9CisKK1JFR0lT
VEVSX1RZUEVEX1RFU1RfQ0FTRV9QKFR5cGVkVGVzdFAsIFN1Y2Nlc3MsIEZhaWx1cmUpOworCit0
eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPHVuc2lnbmVkIGNoYXIsIHVuc2lnbmVkIGludD4gVW5zaWdu
ZWRUeXBlczsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFVuc2lnbmVkLCBUeXBlZFRl
c3RQLCBVbnNpZ25lZFR5cGVzKTsKKworY2xhc3MgVHlwZWRUZXN0UE5hbWVzIHsKKyBwdWJsaWM6
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGF0aWMgc3RkOjpzdHJpbmcgR2V0TmFtZShp
bnQgaSkgeworICAgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFQsIHVuc2lnbmVkIGNo
YXI+Ojp2YWx1ZSkgeworICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCJ1bnNpZ25lZF9jaGFyXyIp
ICsgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGkpOworICAgIH0KKyAgICBpZiAodGVzdGluZzo6
aW50ZXJuYWw6OklzU2FtZTxULCB1bnNpZ25lZCBpbnQ+Ojp2YWx1ZSkgeworICAgICAgcmV0dXJu
IHN0ZDo6c3RyaW5nKCJ1bnNpZ25lZF9pbnRfIikgKyA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmco
aSk7CisgICAgfQorICB9Cit9OworCitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChVbnNp
Z25lZEN1c3RvbU5hbWUsIFR5cGVkVGVzdFAsIFVuc2lnbmVkVHlwZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUeXBlZFRlc3RQTmFtZXMpOworCisjZW5kaWYgIC8vIEdURVNUX0hB
U19UWVBFRF9URVNUX1AKKworI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCisKKy8vIFdlIHJlbHkg
b24gdGhlIGdvbGRlbiBmaWxlIHRvIHZlcmlmeSB0aGF0IHRlc3RzIHdob3NlIHRlc3QgY2FzZQor
Ly8gbmFtZSBlbmRzIHdpdGggRGVhdGhUZXN0IGFyZSBydW4gZmlyc3QuCisKK1RFU1QoQURlYXRo
VGVzdCwgU2hvdWxkUnVuRmlyc3QpIHsKK30KKworIyBpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAor
CisvLyBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmlsZSB0byB2ZXJpZnkgdGhhdCB0eXBlZCB0ZXN0
cyB3aG9zZSB0ZXN0CisvLyBjYXNlIG5hbWUgZW5kcyB3aXRoIERlYXRoVGVzdCBhcmUgcnVuIGZp
cnN0LgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEFUeXBlZERlYXRoVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK3R5cGVkZWYgdGVzdGluZzo6VHlwZXM8aW50LCBk
b3VibGU+IE51bWVyaWNUeXBlczsKK1RZUEVEX1RFU1RfQ0FTRShBVHlwZWREZWF0aFRlc3QsIE51
bWVyaWNUeXBlcyk7CisKK1RZUEVEX1RFU1QoQVR5cGVkRGVhdGhUZXN0LCBTaG91bGRSdW5GaXJz
dCkgeworfQorCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAorCisjIGlmIEdURVNU
X0hBU19UWVBFRF9URVNUX1AKKworCisvLyBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmlsZSB0byB2
ZXJpZnkgdGhhdCB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMKKy8vIHdob3NlIHRlc3QgY2FzZSBu
YW1lIGVuZHMgd2l0aCBEZWF0aFRlc3QgYXJlIHJ1biBmaXJzdC4KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitjbGFzcyBBVHlwZVBhcmFtRGVhdGhUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qg
eworfTsKKworVFlQRURfVEVTVF9DQVNFX1AoQVR5cGVQYXJhbURlYXRoVGVzdCk7CisKK1RZUEVE
X1RFU1RfUChBVHlwZVBhcmFtRGVhdGhUZXN0LCBTaG91bGRSdW5GaXJzdCkgeworfQorCitSRUdJ
U1RFUl9UWVBFRF9URVNUX0NBU0VfUChBVHlwZVBhcmFtRGVhdGhUZXN0LCBTaG91bGRSdW5GaXJz
dCk7CisKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBBVHlwZVBhcmFtRGVhdGhU
ZXN0LCBOdW1lcmljVHlwZXMpOworCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVF9Q
CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworLy8gVGVzdHMgdmFyaW91cyBm
YWlsdXJlIGNvbmRpdGlvbnMgb2YKKy8vIEVYUEVDVF97LE5PTn1GQVRBTF9GQUlMVVJFeyxfT05f
QUxMX1RIUkVBRFN9LgorY2xhc3MgRXhwZWN0RmFpbHVyZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7CisgcHVibGljOiAgLy8gTXVzdCBiZSBwdWJsaWMgYW5kIG5vdCBwcm90ZWN0ZWQgZHVl
IHRvIGEgYnVnIGluIGcrKyAzLjQuMi4KKyAgZW51bSBGYWlsdXJlTW9kZSB7CisgICAgRkFUQUxf
RkFJTFVSRSwKKyAgICBOT05GQVRBTF9GQUlMVVJFCisgIH07CisgIHN0YXRpYyB2b2lkIEFkZEZh
aWx1cmUoRmFpbHVyZU1vZGUgZmFpbHVyZSkgeworICAgIGlmIChmYWlsdXJlID09IEZBVEFMX0ZB
SUxVUkUpIHsKKyAgICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOworICAg
IH0gZWxzZSB7CisgICAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFp
bHVyZS4iOworICAgIH0KKyAgfQorfTsKKworVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBl
Y3RGYXRhbEZhaWx1cmUpIHsKKyAgLy8gRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0IHN1Y2Nl
ZWRzLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKFNVQ0NFRUQoKSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7CisgIC8vIEV4
cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBub24tZmF0YWwgZmFpbHVyZS4KKyAgcHJp
bnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShB
ZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpLCAiRXhwZWN0ZWQgbm9uLWZhdGFsICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgImZhaWx1cmUuIik7CisgIC8vIFdyb25nIG1lc3NhZ2UuCisgIHBy
aW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
QWRkRmFpbHVyZShGQVRBTF9GQUlMVVJFKSwgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSAiCisg
ICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZC4iKTsKK30KKworVEVTVF9GKEV4cGVjdEZh
aWx1cmVUZXN0LCBFeHBlY3ROb25GYXRhbEZhaWx1cmUpIHsKKyAgLy8gRXhwZWN0ZWQgbm9uLWZh
dGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVy
ZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShTVUNDRUVEKCksICJFeHBlY3RlZCBu
b24tZmF0YWwgZmFpbHVyZS4iKTsKKyAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1
dCBnb3QgYSBmYXRhbCBmYWlsdXJlLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxu
Iik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSks
ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOworICAvLyBXcm9uZyBtZXNzYWdlLgorICBwcmlu
dGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJTFVSRSksICJTb21lIG90aGVyIG5vbi1mYXRhbCAiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsdXJlLiIpOworfQorCisjaWYgR1RFU1RfSVNf
VEhSRUFEU0FGRQorCitjbGFzcyBFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0IDogcHVibGlj
IEV4cGVjdEZhaWx1cmVUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHN0YXRpYyB2b2lkIEFkZEZhaWx1
cmVJbk90aGVyVGhyZWFkKEZhaWx1cmVNb2RlIGZhaWx1cmUpIHsKKyAgICBUaHJlYWRXaXRoUGFy
YW08RmFpbHVyZU1vZGU+IHRocmVhZCgmQWRkRmFpbHVyZSwgZmFpbHVyZSwgTlVMTCk7CisgICAg
dGhyZWFkLkpvaW4oKTsKKyAgfQorfTsKKworVEVTVF9GKEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFk
c1Rlc3QsIEV4cGVjdEZhdGFsRmFpbHVyZSkgeworICAvLyBXZSBvbmx5IGludGVyY2VwdCB0aGUg
Y3VycmVudCB0aHJlYWQuCisgIHByaW50ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7Cisg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZBVEFMX0ZBSUxV
UkUpLAorICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsK
K30KKworVEVTVF9GKEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QsIEV4cGVjdE5vbkZhdGFs
RmFpbHVyZSkgeworICAvLyBXZSBvbmx5IGludGVyY2VwdCB0aGUgY3VycmVudCB0aHJlYWQuCisg
IHByaW50ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKE5PTkZBVEFMX0ZBSUxVUkUpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7Cit9CisK
K3R5cGVkZWYgRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCBTY29wZWRGYWtlVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlclRlc3Q7CisKKy8vIFRlc3RzIHRoYXQgdGhlIFNjb3BlZEZha2VUZXN0UGFy
dFJlc3VsdFJlcG9ydGVyIG9ubHkgY2F0Y2hlcyBmYWlsdXJlcyBmcm9tCisvLyB0aGUgY3VycmVu
dCB0aHJlYWQgaWYgaXQgaXMgaW5zdGFudGlhdGVkIHdpdGggSU5URVJDRVBUX09OTFlfQ1VSUkVO
VF9USFJFQUQuCitURVNUX0YoU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LCBJ
bnRlcmNlcHRPbmx5Q3VycmVudFRocmVhZCkgeworICBwcmludGYoIihleHBlY3RpbmcgMiBmYWls
dXJlcylcbiIpOworICBUZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7CisgIHsKKyAgICBTY29w
ZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlciByZXBvcnRlcigKKyAgICAgICAgU2NvcGVkRmFr
ZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6OklOVEVSQ0VQVF9PTkxZX0NVUlJFTlRfVEhSRUFELAor
ICAgICAgICAmcmVzdWx0cyk7CisgICAgQWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoRkFUQUxfRkFJ
TFVSRSk7CisgICAgQWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoTk9ORkFUQUxfRkFJTFVSRSk7Cisg
IH0KKyAgLy8gVGhlIHR3byBmYWlsdXJlcyBzaG91bGQgbm90IGhhdmUgYmVlbiBpbnRlcmNlcHRl
ZC4KKyAgRVhQRUNUX0VRKDAsIHJlc3VsdHMuc2l6ZSgpKSA8PCAiVGhpcyBzaG91bGRuJ3QgZmFp
bC4iOworfQorCisjZW5kaWYgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUKKworVEVTVF9GKEV4cGVj
dEZhaWx1cmVUZXN0LCBFeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKKyAgLy8gRXhw
ZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0IHN1Y2NlZWRzLgorICBwcmludGYoIihleHBlY3Rpbmcg
MSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKFNV
Q0NFRUQoKSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7CisgIC8vIEV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUsIGJ1dCBnb3QgYSBub24tZmF0YWwgZmFpbHVyZS4KKyAgcHJpbnRmKCIoZXhwZWN0
aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFE
UyhBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7CisgIC8vIFdyb25n
IG1lc3NhZ2UuCisgIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJFKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNvbWUgb3RoZXIgZmF0YWwg
ZmFpbHVyZSBleHBlY3RlZC4iKTsKK30KKworVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBl
Y3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKKyAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFs
IGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlc
biIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhTVUNDRUVEKCks
ICJFeHBlY3RlZCBub24tZmF0YWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZmFpbHVyZS4iKTsKKyAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1
dCBnb3QgYSBmYXRhbCBmYWlsdXJlLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxu
Iik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUo
RkFUQUxfRkFJTFVSRSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOworICAvLyBXcm9uZyBtZXNzYWdlLgorICBwcmlu
dGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
X09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJTFVSRSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb21lIG90aGVyIG5vbi1mYXRhbCBmYWls
dXJlLiIpOworfQorCisKKy8vIFR3byB0ZXN0IGVudmlyb25tZW50cyBmb3IgdGVzdGluZyB0ZXN0
aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKS4KKworY2xhc3MgRm9vRW52aXJvbm1lbnQg
OiBwdWJsaWMgdGVzdGluZzo6RW52aXJvbm1lbnQgeworIHB1YmxpYzoKKyAgdmlydHVhbCB2b2lk
IFNldFVwKCkgeworICAgIHByaW50ZigiJXMiLCAiRm9vRW52aXJvbm1lbnQ6OlNldFVwKCkgY2Fs
bGVkLlxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgcHJpbnRm
KCIlcyIsICJGb29FbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuXG4iKTsKKyAgICBGQUlM
KCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKKyAgfQorfTsKKworY2xhc3MgQmFyRW52
aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6RW52aXJvbm1lbnQgeworIHB1YmxpYzoKKyAgdmly
dHVhbCB2b2lkIFNldFVwKCkgeworICAgIHByaW50ZigiJXMiLCAiQmFyRW52aXJvbm1lbnQ6OlNl
dFVwKCkgY2FsbGVkLlxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Cisg
ICAgcHJpbnRmKCIlcyIsICJCYXJFbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuXG4iKTsK
KyAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOworICB9
Cit9OworCisvLyBUaGUgbWFpbiBmdW5jdGlvbi4KKy8vCisvLyBUaGUgaWRlYSBpcyB0byB1c2Ug
R29vZ2xlIFRlc3QgdG8gcnVuIGFsbCB0aGUgdGVzdHMgd2UgaGF2ZSBkZWZpbmVkIChzb21lCisv
LyBvZiB0aGVtIGFyZSBpbnRlbmRlZCB0byBmYWlsKSwgYW5kIHRoZW4gY29tcGFyZSB0aGUgdGVz
dCByZXN1bHRzCisvLyB3aXRoIHRoZSAiZ29sZGVuIiBmaWxlLgoraW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIgKiphcmd2KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcocHJpbnRfdGltZSkgPSBmYWxz
ZTsKKworICAvLyBXZSBqdXN0IHJ1biB0aGUgdGVzdHMsIGtub3dpbmcgc29tZSBvZiB0aGVtIGFy
ZSBpbnRlbmRlZCB0byBmYWlsLgorICAvLyBXZSB3aWxsIHVzZSBhIHNlcGFyYXRlIFB5dGhvbiBz
Y3JpcHQgdG8gY29tcGFyZSB0aGUgb3V0cHV0IG9mCisgIC8vIHRoaXMgcHJvZ3JhbSB3aXRoIHRo
ZSBnb2xkZW4gZmlsZS4KKworICAvLyBJdCdzIGhhcmQgdG8gdGVzdCBJbml0R29vZ2xlVGVzdCgp
IGRpcmVjdGx5LCBhcyBpdCBoYXMgbWFueQorICAvLyBnbG9iYWwgc2lkZSBlZmZlY3RzLiAgVGhl
IGZvbGxvd2luZyBsaW5lIHNlcnZlcyBhcyBhIHNhbml0eSB0ZXN0CisgIC8vIGZvciBpdC4KKyAg
dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICBib29sIGludGVybmFsX3Nr
aXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cyA9CisgICAgICBzdGQ6OmNvdW50KGFyZ3Ys
IGFyZ3YgKyBhcmdjLAorICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZygiaW50ZXJuYWxfc2tp
cF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzIikpID4gMDsKKworI2lmIEdURVNUX0hBU19E
RUFUSF9URVNUCisgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6R1RFU1RfRkxBRyhpbnRlcm5hbF9y
dW5fZGVhdGhfdGVzdCkgIT0gIiIpIHsKKyAgICAvLyBTa2lwIHRoZSB1c3VhbCBvdXRwdXQgY2Fw
dHVyaW5nIGlmIHdlJ3JlIHJ1bm5pbmcgYXMgdGhlIGNoaWxkCisgICAgLy8gcHJvY2VzcyBvZiBh
biB0aHJlYWRzYWZlLXN0eWxlIGRlYXRoIHRlc3QuCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKyAg
ICBwb3NpeDo6RlJlb3BlbigibnVsOiIsICJ3Iiwgc3Rkb3V0KTsKKyMgZWxzZQorICAgIHBvc2l4
OjpGUmVvcGVuKCIvZGV2L251bGwiLCAidyIsIHN0ZG91dCk7CisjIGVuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCisgICAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKKyAgfQorI2VuZGlmICAvLyBH
VEVTVF9IQVNfREVBVEhfVEVTVAorCisgIGlmIChpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2Fu
ZF9hZF9ob2NfdGVzdHMpCisgICAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKKworICAvLyBSZWdp
c3RlcnMgdHdvIGdsb2JhbCB0ZXN0IGVudmlyb25tZW50cy4KKyAgLy8gVGhlIGdvbGRlbiBmaWxl
IHZlcmlmaWVzIHRoYXQgdGhleSBhcmUgc2V0IHVwIGluIHRoZSBvcmRlciB0aGV5CisgIC8vIGFy
ZSByZWdpc3RlcmVkLCBhbmQgdG9ybiBkb3duIGluIHRoZSByZXZlcnNlIG9yZGVyLgorICB0ZXN0
aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEZvb0Vudmlyb25tZW50KTsKKyAgdGVz
dGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBCYXJFbnZpcm9ubWVudCk7CisjaWYg
X01TQ19WRVIKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDEyNwor
I2VuZGlmICAvLyAuIF9NU0NfVkVSICAgIAorICByZXR1cm4gUnVuQWxsVGVzdHMoKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10
ZXN0LWludmFsaWQtbmFtZTEtdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
YTA4NDc3YTc3ZWJkZjBhYTU1ZjIzNDQ0YWJkNmI4MzlkOTBiYTQzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52
YWxpZC1uYW1lMS10ZXN0LnB5CkBAIC0wLDAgKzEsNjMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorIworIyBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworIiIiVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCB3YXJucyB0
aGUgdXNlciB3aGVuIG5vdCBpbml0aWFsaXplZCBwcm9wZXJseS4iIiIKKworaW1wb3J0IGd0ZXN0
X3Rlc3RfdXRpbHMKKworYmluYXJ5X25hbWUgPSAnZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFs
aWQtbmFtZTEtdGVzdF8nCitDT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0
YWJsZVBhdGgoYmluYXJ5X25hbWUpCisKKworZGVmIEFzc2VydChjb25kaXRpb24pOgorICBpZiBu
b3QgY29uZGl0aW9uOgorICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisKKworZGVmIFRlc3RFeGl0
Q29kZUFuZE91dHB1dChjb21tYW5kKToKKyAgIiIiUnVucyB0aGUgZ2l2ZW4gY29tbWFuZCBhbmQg
dmVyaWZpZXMgaXRzIGV4aXQgY29kZSBhbmQgb3V0cHV0LiIiIgorCisgIGVyciA9ICgnUGFyYW1l
dGVyaXplZCB0ZXN0IG5hbWUgXCciSW52YWxpZFdpdGhRdW90ZXMiXCcgaXMgaW52YWxpZCcpCisK
KyAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kKQorICBBc3NlcnQocC50
ZXJtaW5hdGVkX2J5X3NpZ25hbCkKKworICAjIFZlcmlmeSB0aGUgb3V0cHV0IG1lc3NhZ2UgY29u
dGFpbnMgYXBwcm9wcmlhdGUgb3V0cHV0CisgIEFzc2VydChlcnIgaW4gcC5vdXRwdXQpCisKKwor
Y2xhc3MgR1Rlc3RQYXJhbVRlc3RJbnZhbGlkTmFtZTFUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVz
dENhc2UpOgorCisgIGRlZiB0ZXN0RXhpdENvZGVBbmRPdXRwdXQoc2VsZik6CisgICAgVGVzdEV4
aXRDb2RlQW5kT3V0cHV0KENPTU1BTkQpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
KyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdF8uY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZh
bGlkLW5hbWUxLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhOTUxNTViMjNhNzg3MWRiNWQyNTQ5YTBl
OWY5MDUwNzVhOTM5OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3RfLmNjCkBAIC0w
LDAgKzEsNTAgQEAKKy8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoK
Ky8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
Ly8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLwor
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsKK2NsYXNzIER1bW15
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08Y29uc3QgY2hhciAqPiB7fTsK
KworVEVTVF9QKER1bW15VGVzdCwgRHVtbXkpIHsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoSW52YWxpZFRlc3ROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgRHVtbXlUZXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMoIkludmFsaWRXaXRoUXVv
dGVzIiksCisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmdQ
YXJhbU5hbWUoKSk7CisKK30gIC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hh
ciAqYXJndltdKSB7CisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAg
cmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0LnB5
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52
YWxpZC1uYW1lMi10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiODM4ZjQ2MzIyOTFkMWNiNzhlNGExMWVj
M2FiMGM3NzNiOTRkNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRlc3QucHkKQEAgLTAs
MCArMSw2MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDE1IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJW
ZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IHdhcm5zIHRoZSB1c2VyIHdoZW4gbm90IGluaXRpYWxp
emVkIHByb3Blcmx5LiIiIgorCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitiaW5hcnlfbmFt
ZSA9ICdnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0XycKK0NPTU1BTkQg
PSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aChiaW5hcnlfbmFtZSkKKwor
CitkZWYgQXNzZXJ0KGNvbmRpdGlvbik6CisgIGlmIG5vdCBjb25kaXRpb246CisgICAgcmFpc2Ug
QXNzZXJ0aW9uRXJyb3IKKworCitkZWYgVGVzdEV4aXRDb2RlQW5kT3V0cHV0KGNvbW1hbmQpOgor
ICAiIiJSdW5zIHRoZSBnaXZlbiBjb21tYW5kIGFuZCB2ZXJpZmllcyBpdHMgZXhpdCBjb2RlIGFu
ZCBvdXRwdXQuIiIiCisKKyAgZXJyID0gKCdEdXBsaWNhdGUgcGFyYW1ldGVyaXplZCB0ZXN0IG5h
bWUgXCdhXCcnKQorCisgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkK
KyAgQXNzZXJ0KHAudGVybWluYXRlZF9ieV9zaWduYWwpCisKKyAgIyBDaGVjayBmb3IgYXBwcm9w
cmlhdGUgb3V0cHV0CisgIEFzc2VydChlcnIgaW4gcC5vdXRwdXQpCisKKworY2xhc3MgR1Rlc3RQ
YXJhbVRlc3RJbnZhbGlkTmFtZTJUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorCisg
IGRlZiB0ZXN0RXhpdENvZGVBbmRPdXRwdXQoc2VsZik6CisgICAgVGVzdEV4aXRDb2RlQW5kT3V0
cHV0KENPTU1BTkQpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3Rf
dXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRlc3RfLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0
Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lZjA5MzQ5MGU5ZGEyZjAyZWQyOGEyZDA3MTI0NDVlMjQxN2NiZGEz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0Xy5jYwpAQCAtMCwwICsxLDU1IEBACisv
LyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRp
c3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
Ky8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CitjbGFzcyBEdW1teVRlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGNvbnN0IGNoYXIgKj4ge307CisKK3N0ZDo6c3RyaW5n
IFN0cmluZ1BhcmFtVGVzdFN1ZmZpeCgKKyAgICBjb25zdCB0ZXN0aW5nOjpUZXN0UGFyYW1JbmZv
PGNvbnN0IGNoYXIqPiYgaW5mbykgeworICByZXR1cm4gc3RkOjpzdHJpbmcoaW5mby5wYXJhbSk7
Cit9CisKK1RFU1RfUChEdW1teVRlc3QsIER1bW15KSB7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QKER1cGxpY2F0ZVRlc3ROYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgIER1bW15
VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKCJhIiwgImIi
LCAiYSIsICJjIiksCisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdQYXJhbVRlc3RTdWZm
aXgpOworfSAgLy8gbmFtZXNwYWNlCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p
IHsKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICByZXR1cm4gUlVO
X0FMTF9URVNUUygpOworfQorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3ODlj
YWIyNzA3NDE0YzQ2NDg0OTZkN2I5ZmJhYjRmZTUzMWYwYjcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmNj
CkBAIC0wLDAgKzEsMTEwOSBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
Ly8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
Ky8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisvLworLy8gVGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZi4gVGhpcyBmaWxl
IHZlcmlmaWVzIHRoYXQgdGhlIHBhcmFtZXRlcgorLy8gZ2VuZXJhdG9ycyBvYmplY3RzIHByb2R1
Y2UgY29ycmVjdCBwYXJhbWV0ZXIgc2VxdWVuY2VzIGFuZCB0aGF0CisvLyBHb29nbGUgVGVzdCBy
dW50aW1lIGluc3RhbnRpYXRlcyBjb3JyZWN0IHRlc3RzIGZyb20gdGhvc2Ugc2VxdWVuY2VzLgor
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworIyBpbmNsdWRlIDxhbGdvcml0aG0+CisjIGlu
Y2x1ZGUgPGlvc3RyZWFtPgorIyBpbmNsdWRlIDxsaXN0PgorIyBpbmNsdWRlIDxzc3RyZWFtPgor
IyBpbmNsdWRlIDxzdHJpbmc+CisjIGluY2x1ZGUgPHZlY3Rvcj4KKworIyBpbmNsdWRlICJzcmMv
Z3Rlc3QtaW50ZXJuYWwtaW5sLmgiICAvLyBmb3IgVW5pdFRlc3RPcHRpb25zCisjIGluY2x1ZGUg
InRlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuaCIKKwordXNpbmcgOjpzdGQ6OnZlY3Rv
cjsKK3VzaW5nIDo6c3RkOjpzb3J0OworCit1c2luZyA6OnRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RF
bnZpcm9ubWVudDsKK3VzaW5nIDo6dGVzdGluZzo6Qm9vbDsKK3VzaW5nIDo6dGVzdGluZzo6TWVz
c2FnZTsKK3VzaW5nIDo6dGVzdGluZzo6UmFuZ2U7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3RXaXRo
UGFyYW07Cit1c2luZyA6OnRlc3Rpbmc6OlZhbHVlczsKK3VzaW5nIDo6dGVzdGluZzo6VmFsdWVz
SW47CisKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKK3VzaW5nIDo6dGVzdGluZzo6Q29tYmluZTsK
K3VzaW5nIDo6dGVzdGluZzo6Z2V0OwordXNpbmcgOjp0ZXN0aW5nOjptYWtlX3R1cGxlOwordXNp
bmcgOjp0ZXN0aW5nOjp0dXBsZTsKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCisKK3Vz
aW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yOwordXNpbmcgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOworCisvLyBQcmludHMgYSB2YWx1ZSB0byBhIHN0
cmluZy4KKy8vCisvLyBGSVhNRTogcmVtb3ZlIFByaW50VmFsdWUoKSB3aGVuIHdlIG1vdmUgbWF0
Y2hlcnMgYW5kCisvLyBFWFBFQ1RfVEhBVCgpIGZyb20gR29vZ2xlIE1vY2sgdG8gR29vZ2xlIFRl
c3QuICBBdCB0aGF0IHRpbWUsIHdlCisvLyBjYW4gd3JpdGUgRVhQRUNUX1RIQVQoeCwgRXEoeSkp
IHRvIGNvbXBhcmUgdHdvIHR1cGxlcyB4IGFuZCB5LCBhcworLy8gRVhQRUNUX1RIQVQoKSBhbmQg
dGhlIG1hdGNoZXJzIGtub3cgaG93IHRvIHByaW50IHR1cGxlcy4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKGNvbnN0IFQmIHZhbHVlKSB7CisgIDo6c3Rk
OjpzdHJpbmdzdHJlYW0gc3RyZWFtOworICBzdHJlYW0gPDwgdmFsdWU7CisgIHJldHVybiBzdHJl
YW0uc3RyKCk7Cit9CisKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKKworLy8gVGhlc2Ugb3Zlcmxv
YWRzIGFsbG93IHByaW50aW5nIHR1cGxlcyBpbiBvdXIgdGVzdHMuICBXZSBjYW5ub3QKKy8vIGRl
ZmluZSBhbiBvcGVyYXRvcjw8IGZvciB0dXBsZXMsIGFzIHRoYXQgZGVmaW5pdGlvbiBuZWVkcyB0
byBiZSBpbgorLy8gdGhlIHN0ZCBuYW1lc3BhY2UgaW4gb3JkZXIgdG8gYmUgcGlja2VkIHVwIGJ5
IEdvb2dsZSBUZXN0IHZpYQorLy8gQXJndW1lbnQtRGVwZW5kZW50IExvb2t1cCwgeWV0IGRlZmlu
aW5nIGFueXRoaW5nIGluIHRoZSBzdGQKKy8vIG5hbWVzcGFjZSBpbiBub24tU1RMIGNvZGUgaXMg
dW5kZWZpbmVkIGJlaGF2aW9yLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
PgorOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKGNvbnN0IHR1cGxlPFQxLCBUMj4mIHZhbHVlKSB7
CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOworICBzdHJlYW0gPDwgIigiIDw8IGdldDww
Pih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8MT4odmFsdWUpIDw8ICIpIjsKKyAgcmV0dXJuIHN0cmVh
bS5zdHIoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5h
bWUgVDM+Cis6OnN0ZDo6c3RyaW5nIFByaW50VmFsdWUoY29uc3QgdHVwbGU8VDEsIFQyLCBUMz4m
IHZhbHVlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOworICBzdHJlYW0gPDwgIigi
IDw8IGdldDwwPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8MT4odmFsdWUpCisgICAgICAgICA8PCAi
LCAiPDwgZ2V0PDI+KHZhbHVlKSA8PCAiKSI7CisgIHJldHVybiBzdHJlYW0uc3RyKCk7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0
eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMD4KKzo6c3RkOjpzdHJpbmcgUHJp
bnRWYWx1ZSgKKyAgICBjb25zdCB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTA+JiB2YWx1ZSkgeworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgc3Ry
ZWFtIDw8ICIoIiA8PCBnZXQ8MD4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDE+KHZhbHVlKQorICAg
ICAgICAgPDwgIiwgIjw8IGdldDwyPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8Mz4odmFsdWUpCisg
ICAgICAgICA8PCAiLCAiPDwgZ2V0PDQ+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDw1Pih2YWx1ZSkK
KyAgICAgICAgIDw8ICIsICI8PCBnZXQ8Nj4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDc+KHZhbHVl
KQorICAgICAgICAgPDwgIiwgIjw8IGdldDw4Pih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8OT4odmFs
dWUpIDw8ICIpIjsKKyAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKK30KKworIyBlbmRpZiAgLy8gR1RF
U1RfSEFTX0NPTUJJTkUKKworLy8gVmVyaWZpZXMgdGhhdCBhIHNlcXVlbmNlIGdlbmVyYXRlZCBi
eSB0aGUgZ2VuZXJhdG9yIGFuZCBhY2Nlc3NlZAorLy8gdmlhIHRoZSBpdGVyYXRvciBvYmplY3Qg
bWF0Y2hlcyB0aGUgZXhwZWN0ZWQgb25lIHVzaW5nIEdvb2dsZSBUZXN0CisvLyBhc3NlcnRpb25z
LgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgordm9pZCBWZXJpZnlHZW5lcmF0b3Io
Y29uc3QgUGFyYW1HZW5lcmF0b3I8VD4mIGdlbmVyYXRvciwKKyAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFQgKCZleHBlY3RlZF92YWx1ZXMpW05dKSB7CisgIHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFQ+OjppdGVyYXRvciBpdCA9IGdlbmVyYXRvci5iZWdpbigpOworICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IE47ICsraSkgeworICAgIEFTU0VSVF9GQUxTRShpdCA9PSBnZW5lcmF0b3IuZW5k
KCkpCisgICAgICAgIDw8ICJBdCBlbGVtZW50ICIgPDwgaSA8PCAiIHdoZW4gYWNjZXNzaW5nIHZp
YSBhbiBpdGVyYXRvciAiCisgICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhlIGNvcHkgY29uc3Ry
dWN0b3IuXG4iOworICAgIC8vIFdlIGNhbm5vdCB1c2UgRVhQRUNUX0VRKCkgaGVyZSBhcyB0aGUg
dmFsdWVzIG1heSBiZSB0dXBsZXMsCisgICAgLy8gd2hpY2ggZG9uJ3Qgc3VwcG9ydCA8PC4KKyAg
ICBFWFBFQ1RfVFJVRShleHBlY3RlZF92YWx1ZXNbaV0gPT0gKml0KQorICAgICAgICA8PCAid2hl
cmUgaSBpcyAiIDw8IGkKKyAgICAgICAgPDwgIiwgZXhwZWN0ZWRfdmFsdWVzW2ldIGlzICIgPDwg
UHJpbnRWYWx1ZShleHBlY3RlZF92YWx1ZXNbaV0pCisgICAgICAgIDw8ICIsICppdCBpcyAiIDw8
IFByaW50VmFsdWUoKml0KQorICAgICAgICA8PCAiLCBhbmQgJ2l0JyBpcyBhbiBpdGVyYXRvciBj
cmVhdGVkIHdpdGggdGhlIGNvcHkgY29uc3RydWN0b3IuXG4iOworICAgICsraXQ7CisgIH0KKyAg
RVhQRUNUX1RSVUUoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKQorICAgICAgICA8PCAiQXQgdGhlIHBy
ZXN1bWVkIGVuZCBvZiBzZXF1ZW5jZSB3aGVuIGFjY2Vzc2luZyB2aWEgYW4gaXRlcmF0b3IgIgor
ICAgICAgICA8PCAiY3JlYXRlZCB3aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9yLlxuIjsKKworICAv
LyBUZXN0IHRoZSBpdGVyYXRvciBhc3NpZ25tZW50LiBUaGUgZm9sbG93aW5nIGxpbmVzIHZlcmlm
eSB0aGF0CisgIC8vIHRoZSBzZXF1ZW5jZSBhY2Nlc3NlZCB2aWEgYW4gaXRlcmF0b3IgaW5pdGlh
bGl6ZWQgdmlhIHRoZQorICAvLyBhc3NpZ25tZW50IG9wZXJhdG9yIChhcyBvcHBvc2VkIHRvIGEg
Y29weSBjb25zdHJ1Y3RvcikgbWF0Y2hlcworICAvLyBqdXN0IHRoZSBzYW1lLgorICBpdCA9IGdl
bmVyYXRvci5iZWdpbigpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IE47ICsraSkgeworICAg
IEFTU0VSVF9GQUxTRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpCisgICAgICAgIDw8ICJBdCBlbGVt
ZW50ICIgPDwgaSA8PCAiIHdoZW4gYWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRvciAiCisgICAgICAg
IDw8ICJjcmVhdGVkIHdpdGggdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuXG4iOworICAgIEVYUEVD
VF9UUlVFKGV4cGVjdGVkX3ZhbHVlc1tpXSA9PSAqaXQpCisgICAgICAgIDw8ICJ3aGVyZSBpIGlz
ICIgPDwgaQorICAgICAgICA8PCAiLCBleHBlY3RlZF92YWx1ZXNbaV0gaXMgIiA8PCBQcmludFZh
bHVlKGV4cGVjdGVkX3ZhbHVlc1tpXSkKKyAgICAgICAgPDwgIiwgKml0IGlzICIgPDwgUHJpbnRW
YWx1ZSgqaXQpCisgICAgICAgIDw8ICIsIGFuZCAnaXQnIGlzIGFuIGl0ZXJhdG9yIGNyZWF0ZWQg
d2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rvci5cbiI7CisgICAgKytpdDsKKyAgfQorICBFWFBFQ1Rf
VFJVRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpCisgICAgICAgIDw8ICJBdCB0aGUgcHJlc3VtZWQg
ZW5kIG9mIHNlcXVlbmNlIHdoZW4gYWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRvciAiCisgICAgICAg
IDw8ICJjcmVhdGVkIHdpdGggdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuXG4iOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShjb25zdCBQYXJh
bUdlbmVyYXRvcjxUPiYgZ2VuZXJhdG9yKSB7CisgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ+
OjppdGVyYXRvciBpdCA9IGdlbmVyYXRvci5iZWdpbigpOworICBFWFBFQ1RfVFJVRShpdCA9PSBn
ZW5lcmF0b3IuZW5kKCkpOworCisgIGl0ID0gZ2VuZXJhdG9yLmJlZ2luKCk7CisgIEVYUEVDVF9U
UlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSk7Cit9CisKKy8vIEdlbmVyYXRvciB0ZXN0cy4gVGhl
eSB0ZXN0IHRoYXQgZWFjaCBvZiB0aGUgcHJvdmlkZWQgZ2VuZXJhdG9yIGZ1bmN0aW9ucworLy8g
Z2VuZXJhdGVzIGFuIGV4cGVjdGVkIHNlcXVlbmNlIG9mIHZhbHVlcy4gVGhlIGdlbmVyYWwgdGVz
dCBwYXR0ZXJuCisvLyBpbnN0YW50aWF0ZXMgYSBnZW5lcmF0b3IgdXNpbmcgb25lIG9mIHRoZSBn
ZW5lcmF0b3IgZnVuY3Rpb25zLAorLy8gY2hlY2tzIHRoZSBzZXF1ZW5jZSBwcm9kdWNlZCBieSB0
aGUgZ2VuZXJhdG9yIHVzaW5nIGl0cyBpdGVyYXRvciBBUEksCisvLyBhbmQgdGhlbiByZXNldHMg
dGhlIGl0ZXJhdG9yIGJhY2sgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VxdWVuY2UKKy8vIGFu
ZCBjaGVja3MgdGhlIHNlcXVlbmNlIGFnYWluLgorCisvLyBUZXN0cyB0aGF0IGl0ZXJhdG9ycyBw
cm9kdWNlZCBieSBnZW5lcmF0b3IgZnVuY3Rpb25zIGNvbmZvcm0gdG8gdGhlCisvLyBGb3J3YXJk
SXRlcmF0b3IgY29uY2VwdC4KK1RFU1QoSXRlcmF0b3JUZXN0LCBQYXJhbUl0ZXJhdG9yQ29uZm9y
bXNUb0ZvcndhcmRJdGVyYXRvckNvbmNlcHQpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50
PiBnZW4gPSBSYW5nZSgwLCAxMCk7CisgIFBhcmFtR2VuZXJhdG9yPGludD46Oml0ZXJhdG9yIGl0
ID0gZ2VuLmJlZ2luKCk7CisKKyAgLy8gVmVyaWZpZXMgdGhhdCBpdGVyYXRvciBpbml0aWFsaXph
dGlvbiB3b3JrcyBhcyBleHBlY3RlZC4KKyAgUGFyYW1HZW5lcmF0b3I8aW50Pjo6aXRlcmF0b3Ig
aXQyID0gaXQ7CisgIEVYUEVDVF9UUlVFKCppdCA9PSAqaXQyKSA8PCAiSW5pdGlhbGl6ZWQgaXRl
cmF0b3JzIG11c3QgcG9pbnQgdG8gdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICJlbGVtZW50IHNhbWUgYXMgaXRzIHNvdXJjZSBwb2ludHMgdG8iOworCisgIC8vIFZlcmlmaWVz
IHRoYXQgaXRlcmF0b3IgYXNzaWdubWVudCB3b3JrcyBhcyBleHBlY3RlZC4KKyAgKytpdDsKKyAg
RVhQRUNUX0ZBTFNFKCppdCA9PSAqaXQyKTsKKyAgaXQyID0gaXQ7CisgIEVYUEVDVF9UUlVFKCpp
dCA9PSAqaXQyKSA8PCAiQXNzaWduZWQgaXRlcmF0b3JzIG11c3QgcG9pbnQgdG8gdGhlICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJlbGVtZW50IHNhbWUgYXMgaXRzIHNvdXJjZSBw
b2ludHMgdG8iOworCisgIC8vIFZlcmlmaWVzIHRoYXQgcHJlZml4IG9wZXJhdG9yKysoKSByZXR1
cm5zICp0aGlzLgorICBFWFBFQ1RfRVEoJml0LCAmKCsraXQpKSA8PCAiUmVzdWx0IG9mIHRoZSBw
cmVmaXggb3BlcmF0b3IrKyBtdXN0IGJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
InJlZmVyIHRvIHRoZSBvcmlnaW5hbCBvYmplY3QiOworCisgIC8vIFZlcmlmaWVzIHRoYXQgdGhl
IHJlc3VsdCBvZiB0aGUgcG9zdGZpeCBvcGVyYXRvcisrIHBvaW50cyB0byB0aGUgdmFsdWUKKyAg
Ly8gcG9pbnRlZCB0byBieSB0aGUgb3JpZ2luYWwgaXRlcmF0b3IuCisgIGludCBvcmlnaW5hbF92
YWx1ZSA9ICppdDsgIC8vIEhhdmUgdG8gY29tcHV0ZSBpdCBvdXRzaWRlIG9mIG1hY3JvIGNhbGwg
dG8gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5hZmZlY3RlZCBieSB0aGUg
cGFyYW1ldGVyIGV2YWx1YXRpb24gb3JkZXIuCisgIEVYUEVDVF9FUShvcmlnaW5hbF92YWx1ZSwg
KihpdCsrKSk7CisKKyAgLy8gVmVyaWZpZXMgdGhhdCBwcmVmaXggYW5kIHBvc3RmaXggb3BlcmF0
b3IrKygpIGFkdmFuY2UgYW4gaXRlcmF0b3IKKyAgLy8gYWxsIHRoZSBzYW1lLgorICBpdDIgPSBp
dDsKKyAgKytpdDsKKyAgKytpdDI7CisgIEVYUEVDVF9UUlVFKCppdCA9PSAqaXQyKTsKK30KKwor
Ly8gVGVzdHMgdGhhdCBSYW5nZSgpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCitU
RVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VXaXRoRGVmYXVsdFN0ZXApIHsKKyAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAzKTsKKyAgY29uc3QgaW50IGV4cGVjdGVkX3Zh
bHVlc1tdID0gezAsIDEsIDJ9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1
ZXMpOworfQorCisvLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgUmFuZ2UoKSBnZW5lcmF0ZXMgdGhl
IHNpbmdsZSBlbGVtZW50IHNlcXVlbmNlCisvLyBhcyBleHBlY3RlZCB3aGVuIHByb3ZpZGVkIHdp
dGggcmFuZ2UgbGltaXRzIHRoYXQgYXJlIGVxdWFsLgorVEVTVChSYW5nZVRlc3QsIEludFJhbmdl
U2luZ2xlVmFsdWUpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgw
LCAxKTsKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezB9OworICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBFZGdlIGNhc2UuIFRlc3RzIHRo
YXQgUmFuZ2UoKSB3aXRoIGdlbmVyYXRlcyBlbXB0eSBzZXF1ZW5jZSB3aGVuCisvLyBzdXBwbGll
ZCB3aXRoIGFuIGVtcHR5IHJhbmdlLgorVEVTVChSYW5nZVRlc3QsIEludFJhbmdlRW1wdHkpIHsK
KyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAwKTsKKyAgVmVyaWZ5
R2VuZXJhdG9ySXNFbXB0eShnZW4pOworfQorCisvLyBUZXN0cyB0aGF0IFJhbmdlKCkgd2l0aCBj
dXN0b20gc3RlcCAoZ3JlYXRlciB0aGVuIG9uZSkgZ2VuZXJhdGVzCisvLyB0aGUgZXhwZWN0ZWQg
c2VxdWVuY2UuCitURVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VXaXRoQ3VzdG9tU3RlcCkgeworICBj
b25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDksIDMpOworICBjb25zdCBp
bnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MCwgMywgNn07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4s
IGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUmFuZ2UoKSB3aXRoIGN1c3Rv
bSBzdGVwIChncmVhdGVyIHRoZW4gb25lKSBnZW5lcmF0ZXMKKy8vIHRoZSBleHBlY3RlZCBzZXF1
ZW5jZSB3aGVuIHRoZSBsYXN0IGVsZW1lbnQgZG9lcyBub3QgZmFsbCBvbiB0aGUKKy8vIHVwcGVy
IHJhbmdlIGxpbWl0LiBTZXF1ZW5jZXMgZ2VuZXJhdGVkIGJ5IFJhbmdlKCkgbXVzdCBub3QgaGF2
ZQorLy8gZWxlbWVudHMgYmV5b25kIHRoZSByYW5nZSBsaW1pdHMuCitURVNUKFJhbmdlVGVzdCwg
SW50UmFuZ2VXaXRoQ3VzdG9tU3RlcE92ZXJVcHBlckJvdW5kKSB7CisgIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgNCwgMyk7CisgIGNvbnN0IGludCBleHBlY3RlZF92
YWx1ZXNbXSA9IHswLCAzfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVz
KTsKK30KKworLy8gVmVyaWZpZXMgdGhhdCBSYW5nZSB3b3JrcyB3aXRoIHVzZXItZGVmaW5lZCB0
eXBlcyB0aGF0IGRlZmluZQorLy8gY29weSBjb25zdHJ1Y3Rvciwgb3BlcmF0b3I9KCksIG9wZXJh
dG9yKygpLCBhbmQgb3BlcmF0b3I8KCkuCitjbGFzcyBEb2dBZGRlciB7CisgcHVibGljOgorICBl
eHBsaWNpdCBEb2dBZGRlcihjb25zdCBjaGFyKiBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7
fQorICBEb2dBZGRlcihjb25zdCBEb2dBZGRlciYgb3RoZXIpIDogdmFsdWVfKG90aGVyLnZhbHVl
Xy5jX3N0cigpKSB7fQorCisgIERvZ0FkZGVyIG9wZXJhdG9yPShjb25zdCBEb2dBZGRlciYgb3Ro
ZXIpIHsKKyAgICBpZiAodGhpcyAhPSAmb3RoZXIpCisgICAgICB2YWx1ZV8gPSBvdGhlci52YWx1
ZV87CisgICAgcmV0dXJuICp0aGlzOworICB9CisgIERvZ0FkZGVyIG9wZXJhdG9yKyhjb25zdCBE
b2dBZGRlciYgb3RoZXIpIGNvbnN0IHsKKyAgICBNZXNzYWdlIG1zZzsKKyAgICBtc2cgPDwgdmFs
dWVfLmNfc3RyKCkgPDwgb3RoZXIudmFsdWVfLmNfc3RyKCk7CisgICAgcmV0dXJuIERvZ0FkZGVy
KG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKTsKKyAgfQorICBib29sIG9wZXJhdG9yPChjb25zdCBE
b2dBZGRlciYgb3RoZXIpIGNvbnN0IHsKKyAgICByZXR1cm4gdmFsdWVfIDwgb3RoZXIudmFsdWVf
OworICB9CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVl
XzsgfQorCisgcHJpdmF0ZToKKyAgc3RkOjpzdHJpbmcgdmFsdWVfOworfTsKKworVEVTVChSYW5n
ZVRlc3QsIFdvcmtzV2l0aEFDdXN0b21UeXBlKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPERv
Z0FkZGVyPiBnZW4gPQorICAgICAgUmFuZ2UoRG9nQWRkZXIoImNhdCIpLCBEb2dBZGRlcigiY2F0
ZG9nZG9nIiksIERvZ0FkZGVyKCJkb2ciKSk7CisgIFBhcmFtR2VuZXJhdG9yPERvZ0FkZGVyPjo6
aXRlcmF0b3IgaXQgPSBnZW4uYmVnaW4oKTsKKworICBBU1NFUlRfRkFMU0UoaXQgPT0gZ2VuLmVu
ZCgpKTsKKyAgRVhQRUNUX1NUUkVRKCJjYXQiLCBpdC0+dmFsdWUoKS5jX3N0cigpKTsKKworICBB
U1NFUlRfRkFMU0UoKytpdCA9PSBnZW4uZW5kKCkpOworICBFWFBFQ1RfU1RSRVEoImNhdGRvZyIs
IGl0LT52YWx1ZSgpLmNfc3RyKCkpOworCisgIEVYUEVDVF9UUlVFKCsraXQgPT0gZ2VuLmVuZCgp
KTsKK30KKworY2xhc3MgSW50V3JhcHBlciB7CisgcHVibGljOgorICBleHBsaWNpdCBJbnRXcmFw
cGVyKGludCBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7fQorICBJbnRXcmFwcGVyKGNvbnN0
IEludFdyYXBwZXImIG90aGVyKSA6IHZhbHVlXyhvdGhlci52YWx1ZV8pIHt9CisKKyAgSW50V3Jh
cHBlciBvcGVyYXRvcj0oY29uc3QgSW50V3JhcHBlciYgb3RoZXIpIHsKKyAgICB2YWx1ZV8gPSBv
dGhlci52YWx1ZV87CisgICAgcmV0dXJuICp0aGlzOworICB9CisgIC8vIG9wZXJhdG9yKygpIGFk
ZHMgYSBkaWZmZXJlbnQgdHlwZS4KKyAgSW50V3JhcHBlciBvcGVyYXRvcisoaW50IG90aGVyKSBj
b25zdCB7IHJldHVybiBJbnRXcmFwcGVyKHZhbHVlXyArIG90aGVyKTsgfQorICBib29sIG9wZXJh
dG9yPChjb25zdCBJbnRXcmFwcGVyJiBvdGhlcikgY29uc3QgeworICAgIHJldHVybiB2YWx1ZV8g
PCBvdGhlci52YWx1ZV87CisgIH0KKyAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVf
OyB9CisKKyBwcml2YXRlOgorICBpbnQgdmFsdWVfOworfTsKKworVEVTVChSYW5nZVRlc3QsIFdv
cmtzV2l0aEFDdXN0b21UeXBlV2l0aERpZmZlcmVudEluY3JlbWVudFR5cGUpIHsKKyAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8SW50V3JhcHBlcj4gZ2VuID0gUmFuZ2UoSW50V3JhcHBlcigwKSwgSW50
V3JhcHBlcigyKSk7CisgIFBhcmFtR2VuZXJhdG9yPEludFdyYXBwZXI+OjppdGVyYXRvciBpdCA9
IGdlbi5iZWdpbigpOworCisgIEFTU0VSVF9GQUxTRShpdCA9PSBnZW4uZW5kKCkpOworICBFWFBF
Q1RfRVEoMCwgaXQtPnZhbHVlKCkpOworCisgIEFTU0VSVF9GQUxTRSgrK2l0ID09IGdlbi5lbmQo
KSk7CisgIEVYUEVDVF9FUSgxLCBpdC0+dmFsdWUoKSk7CisKKyAgRVhQRUNUX1RSVUUoKytpdCA9
PSBnZW4uZW5kKCkpOworfQorCisvLyBUZXN0cyB0aGF0IFZhbHVlc0luKCkgd2l0aCBhbiBhcnJh
eSBwYXJhbWV0ZXIgZ2VuZXJhdGVzCisvLyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCitURVNUKFZh
bHVlc0luVGVzdCwgVmFsdWVzSW5BcnJheSkgeworICBpbnQgYXJyYXlbXSA9IHszLCA1LCA4fTsK
KyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbihhcnJheSk7CisgIFZl
cmlmeUdlbmVyYXRvcihnZW4sIGFycmF5KTsKK30KKworLy8gVGVzdHMgdGhhdCBWYWx1ZXNJbigp
IHdpdGggYSBjb25zdCBhcnJheSBwYXJhbWV0ZXIgZ2VuZXJhdGVzCisvLyB0aGUgZXhwZWN0ZWQg
c2VxdWVuY2UuCitURVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5Db25zdEFycmF5KSB7CisgIGNv
bnN0IGludCBhcnJheVtdID0gezMsIDUsIDh9OworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+
IGdlbiA9IFZhbHVlc0luKGFycmF5KTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgYXJyYXkpOwor
fQorCisvLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSB3aXRoIGFuIGFycmF5IHBh
cmFtZXRlciBjb250YWluaW5nIGEKKy8vIHNpbmdsZSBlbGVtZW50IGdlbmVyYXRlcyB0aGUgc2lu
Z2xlIGVsZW1lbnQgc2VxdWVuY2UuCitURVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5TaW5nbGVF
bGVtZW50QXJyYXkpIHsKKyAgaW50IGFycmF5W10gPSB7NDJ9OworICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKGFycmF5KTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwg
YXJyYXkpOworfQorCisvLyBUZXN0cyB0aGF0IFZhbHVlc0luKCkgZ2VuZXJhdGVzIHRoZSBleHBl
Y3RlZCBzZXF1ZW5jZSBmb3IgYW4gU1RMCisvLyBjb250YWluZXIgKHZlY3RvcikuCitURVNUKFZh
bHVlc0luVGVzdCwgVmFsdWVzSW5WZWN0b3IpIHsKKyAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGlu
dD4gQ29udGFpbmVyVHlwZTsKKyAgQ29udGFpbmVyVHlwZSB2YWx1ZXM7CisgIHZhbHVlcy5wdXNo
X2JhY2soMyk7CisgIHZhbHVlcy5wdXNoX2JhY2soNSk7CisgIHZhbHVlcy5wdXNoX2JhY2soOCk7
CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4odmFsdWVzKTsKKwor
ICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MywgNSwgOH07CisgIFZlcmlmeUdlbmVy
YXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgVmFsdWVzSW4o
KSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgorVEVTVChWYWx1ZXNJblRlc3QsIFZh
bHVlc0luSXRlcmF0b3JSYW5nZSkgeworICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8aW50PiBDb250
YWluZXJUeXBlOworICBDb250YWluZXJUeXBlIHZhbHVlczsKKyAgdmFsdWVzLnB1c2hfYmFjaygz
KTsKKyAgdmFsdWVzLnB1c2hfYmFjayg1KTsKKyAgdmFsdWVzLnB1c2hfYmFjayg4KTsKKyAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbih2YWx1ZXMuYmVnaW4oKSwgdmFs
dWVzLmVuZCgpKTsKKworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MywgNSwgOH07
CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIEVkZ2Ug
Y2FzZS4gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIHByb3ZpZGVkIHdpdGggYW4gaXRlcmF0b3IgcmFu
Z2Ugc3BlY2lmeWluZyBhCisvLyBzaW5nbGUgdmFsdWUgZ2VuZXJhdGVzIGEgc2luZ2xlLWVsZW1l
bnQgc2VxdWVuY2UuCitURVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5TaW5nbGVFbGVtZW50SXRl
cmF0b3JSYW5nZSkgeworICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8aW50PiBDb250YWluZXJUeXBl
OworICBDb250YWluZXJUeXBlIHZhbHVlczsKKyAgdmFsdWVzLnB1c2hfYmFjayg0Mik7CisgIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4odmFsdWVzLmJlZ2luKCksIHZh
bHVlcy5lbmQoKSk7CisKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezQyfTsKKyAg
VmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gRWRnZSBjYXNl
LiBUZXN0cyB0aGF0IFZhbHVlc0luKCkgcHJvdmlkZWQgd2l0aCBhbiBlbXB0eSBpdGVyYXRvciBy
YW5nZQorLy8gZ2VuZXJhdGVzIGFuIGVtcHR5IHNlcXVlbmNlLgorVEVTVChWYWx1ZXNJblRlc3Qs
IFZhbHVlc0luRW1wdHlJdGVyYXRvclJhbmdlKSB7CisgIHR5cGVkZWYgOjpzdGQ6OnZlY3Rvcjxp
bnQ+IENvbnRhaW5lclR5cGU7CisgIENvbnRhaW5lclR5cGUgdmFsdWVzOworICBjb25zdCBQYXJh
bUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5k
KCkpOworCisgIFZlcmlmeUdlbmVyYXRvcklzRW1wdHkoZ2VuKTsKK30KKworLy8gVGVzdHMgdGhh
dCB0aGUgVmFsdWVzKCkgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoVmFs
dWVzVGVzdCwgVmFsdWVzV29ya3MpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4g
PSBWYWx1ZXMoMywgNSwgOCk7CisKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezMs
IDUsIDh9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisv
LyBUZXN0cyB0aGF0IFZhbHVlcygpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2VzIGZy
b20gZWxlbWVudHMgb2YKKy8vIGRpZmZlcmVudCB0eXBlcyBjb252ZXJ0aWJsZSB0byBQYXJhbUdl
bmVyYXRvcidzIHBhcmFtZXRlciB0eXBlLgorVEVTVChWYWx1ZXNUZXN0LCBWYWx1ZXNXb3Jrc0Zv
clZhbHVlc09mQ29tcGF0aWJsZVR5cGVzKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGRvdWJs
ZT4gZ2VuID0gVmFsdWVzKDMsIDUuMGYsIDguMCk7CisKKyAgY29uc3QgZG91YmxlIGV4cGVjdGVk
X3ZhbHVlc1tdID0gezMuMCwgNS4wLCA4LjB9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBl
Y3RlZF92YWx1ZXMpOworfQorCitURVNUKFZhbHVlc1Rlc3QsIFZhbHVlc1dvcmtzRm9yTWF4TGVu
Z3RoTGlzdCkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlcygKKyAg
ICAgIDEwLCAyMCwgMzAsIDQwLCA1MCwgNjAsIDcwLCA4MCwgOTAsIDEwMCwKKyAgICAgIDExMCwg
MTIwLCAxMzAsIDE0MCwgMTUwLCAxNjAsIDE3MCwgMTgwLCAxOTAsIDIwMCwKKyAgICAgIDIxMCwg
MjIwLCAyMzAsIDI0MCwgMjUwLCAyNjAsIDI3MCwgMjgwLCAyOTAsIDMwMCwKKyAgICAgIDMxMCwg
MzIwLCAzMzAsIDM0MCwgMzUwLCAzNjAsIDM3MCwgMzgwLCAzOTAsIDQwMCwKKyAgICAgIDQxMCwg
NDIwLCA0MzAsIDQ0MCwgNDUwLCA0NjAsIDQ3MCwgNDgwLCA0OTAsIDUwMCk7CisKKyAgY29uc3Qg
aW50IGV4cGVjdGVkX3ZhbHVlc1tdID0geworICAgICAgMTAsIDIwLCAzMCwgNDAsIDUwLCA2MCwg
NzAsIDgwLCA5MCwgMTAwLAorICAgICAgMTEwLCAxMjAsIDEzMCwgMTQwLCAxNTAsIDE2MCwgMTcw
LCAxODAsIDE5MCwgMjAwLAorICAgICAgMjEwLCAyMjAsIDIzMCwgMjQwLCAyNTAsIDI2MCwgMjcw
LCAyODAsIDI5MCwgMzAwLAorICAgICAgMzEwLCAzMjAsIDMzMCwgMzQwLCAzNTAsIDM2MCwgMzcw
LCAzODAsIDM5MCwgNDAwLAorICAgICAgNDEwLCA0MjAsIDQzMCwgNDQwLCA0NTAsIDQ2MCwgNDcw
LCA0ODAsIDQ5MCwgNTAwfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVz
KTsKK30KKworLy8gRWRnZSBjYXNlIHRlc3QuIFRlc3RzIHRoYXQgc2luZ2xlLXBhcmFtZXRlciBW
YWx1ZXMoKSBnZW5lcmF0ZXMgdGhlIHNlcXVlbmNlCisvLyB3aXRoIHRoZSBzaW5nbGUgdmFsdWUu
CitURVNUKFZhbHVlc1Rlc3QsIFZhbHVlc1dpdGhTaW5nbGVQYXJhbWV0ZXIpIHsKKyAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXMoNDIpOworCisgIGNvbnN0IGludCBleHBl
Y3RlZF92YWx1ZXNbXSA9IHs0Mn07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3Zh
bHVlcyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQm9vbCgpIGdlbmVyYXRlcyBzZXF1ZW5jZSAoZmFs
c2UsIHRydWUpLgorVEVTVChCb29sVGVzdCwgQm9vbFdvcmtzKSB7CisgIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPGJvb2w+IGdlbiA9IEJvb2woKTsKKworICBjb25zdCBib29sIGV4cGVjdGVkX3ZhbHVl
c1tdID0ge2ZhbHNlLCB0cnVlfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFs
dWVzKTsKK30KKworIyBpZiBHVEVTVF9IQVNfQ09NQklORQorCisvLyBUZXN0cyB0aGF0IENvbWJp
bmUoKSB3aXRoIHR3byBwYXJhbWV0ZXJzIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2Uu
CitURVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFR3b1BhcmFtZXRlcnMpIHsKKyAgY29uc3Qg
Y2hhciogZm9vID0gImZvbyI7CisgIGNvbnN0IGNoYXIqIGJhciA9ICJiYXIiOworICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjx0dXBsZTxjb25zdCBjaGFyKiwgaW50PiA+IGdlbiA9CisgICAgICBDb21i
aW5lKFZhbHVlcyhmb28sIGJhciksIFZhbHVlcygzLCA0KSk7CisKKyAgdHVwbGU8Y29uc3QgY2hh
ciosIGludD4gZXhwZWN0ZWRfdmFsdWVzW10gPSB7CisgICAgbWFrZV90dXBsZShmb28sIDMpLCBt
YWtlX3R1cGxlKGZvbywgNCksCisgICAgbWFrZV90dXBsZShiYXIsIDMpLCBtYWtlX3R1cGxlKGJh
ciwgNCl9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisv
LyBUZXN0cyB0aGF0IENvbWJpbmUoKSB3aXRoIHRocmVlIHBhcmFtZXRlcnMgZ2VuZXJhdGVzIHRo
ZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoVGhyZWVQ
YXJhbWV0ZXJzKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50LCBpbnQ+
ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoMCwgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMywgNCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1
ZXMoNSwgNikpOworICB0dXBsZTxpbnQsIGludCwgaW50PiBleHBlY3RlZF92YWx1ZXNbXSA9IHsK
KyAgICBtYWtlX3R1cGxlKDAsIDMsIDUpLCBtYWtlX3R1cGxlKDAsIDMsIDYpLAorICAgIG1ha2Vf
dHVwbGUoMCwgNCwgNSksIG1ha2VfdHVwbGUoMCwgNCwgNiksCisgICAgbWFrZV90dXBsZSgxLCAz
LCA1KSwgbWFrZV90dXBsZSgxLCAzLCA2KSwKKyAgICBtYWtlX3R1cGxlKDEsIDQsIDUpLCBtYWtl
X3R1cGxlKDEsIDQsIDYpfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVz
KTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgQ29tYmluZSgpIHdpdGggdGhlIGZpcnN0IHBhcmFt
ZXRlciBnZW5lcmF0aW5nIGEgc2luZ2xlIHZhbHVlCisvLyBzZXF1ZW5jZSBnZW5lcmF0ZXMgYSBz
ZXF1ZW5jZSB3aXRoIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZXF1YWwgdG8gdGhlCisvLyBudW1i
ZXIgb2YgZWxlbWVudHMgaW4gdGhlIHNlcXVlbmNlIGdlbmVyYXRlZCBieSB0aGUgc2Vjb25kIHBh
cmFtZXRlci4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoRmlyc3RQYXJhbWV0ZXJTaW5n
bGVWYWx1ZSkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludD4gPiBnZW4g
PSBDb21iaW5lKFZhbHVlcyg0MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDAsIDEpKTsKKworICB0dXBsZTxpbnQsIGludD4g
ZXhwZWN0ZWRfdmFsdWVzW10gPSB7bWFrZV90dXBsZSg0MiwgMCksIG1ha2VfdHVwbGUoNDIsIDEp
fTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gVGVz
dHMgdGhhdCB0aGUgQ29tYmluZSgpIHdpdGggdGhlIHNlY29uZCBwYXJhbWV0ZXIgZ2VuZXJhdGlu
ZyBhIHNpbmdsZSB2YWx1ZQorLy8gc2VxdWVuY2UgZ2VuZXJhdGVzIGEgc2VxdWVuY2Ugd2l0aCB0
aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGVxdWFsIHRvIHRoZQorLy8gbnVtYmVyIG9mIGVsZW1lbnRz
IGluIHRoZSBzZXF1ZW5jZSBnZW5lcmF0ZWQgYnkgdGhlIGZpcnN0IHBhcmFtZXRlci4KK1RFU1Qo
Q29tYmluZVRlc3QsIENvbWJpbmVXaXRoU2Vjb25kUGFyYW1ldGVyU2luZ2xlVmFsdWUpIHsKKyAg
Y29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1
ZXMoMCwgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsdWVzKDQyKSk7CisKKyAgdHVwbGU8aW50LCBpbnQ+IGV4cGVjdGVkX3ZhbHVl
c1tdID0ge21ha2VfdHVwbGUoMCwgNDIpLCBtYWtlX3R1cGxlKDEsIDQyKX07CisgIFZlcmlmeUdl
bmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgd2hlbiB0
aGUgZmlyc3QgcGFyYW1ldGVyIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLAorLy8gQ29tYmlu
ZSgpIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLCB0b28uCitURVNUKENvbWJpbmVUZXN0LCBD
b21iaW5lV2l0aEZpcnN0UGFyYW1ldGVyRW1wdHlSYW5nZSkgeworICBjb25zdCBQYXJhbUdlbmVy
YXRvcjx0dXBsZTxpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFJhbmdlKDAsIDApLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygw
LCAxKSk7CisgIFZlcmlmeUdlbmVyYXRvcklzRW1wdHkoZ2VuKTsKK30KKworLy8gVGVzdHMgdGhh
dCB3aGVuIHRoZSBzZWNvbmQgcGFyYW1ldGVyIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLAor
Ly8gQ29tYmluZSgpIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLCB0b28uCitURVNUKENvbWJp
bmVUZXN0LCBDb21iaW5lV2l0aFNlY29uZFBhcmFtZXRlckVtcHR5UmFuZ2UpIHsKKyAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoMCwg
MSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmFuZ2UoMSwgMSkpOworICBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7Cit9CisKKy8v
IEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBjb21iaW5lIHdvcmtzIHdpdGggdGhlIG1heGltdW0gbnVt
YmVyCisvLyBvZiBwYXJhbWV0ZXJzIHN1cHBvcnRlZCBieSBHb29nbGUgVGVzdCAoY3VycmVudGx5
IDEwKS4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoTWF4TnVtYmVyT2ZQYXJhbWV0ZXJz
KSB7CisgIGNvbnN0IGNoYXIqIGZvbyA9ICJmb28iOworICBjb25zdCBjaGFyKiBiYXIgPSAiYmFy
IjsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8Y29uc3QgY2hhciosIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoZm9vLCBiYXIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygxKSwgVmFsdWVz
KDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcygzKSwgVmFsdWVzKDQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg1KSwgVmFsdWVzKDYpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg3KSwg
VmFsdWVzKDgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbHVlcyg5KSk7CisKKyAgdHVwbGU8Y29uc3QgY2hhciosIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQ+CisgICAgICBleHBlY3RlZF92YWx1ZXNb
XSA9IHttYWtlX3R1cGxlKGZvbywgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYWtlX3R1cGxlKGJhciwgMSwgMiwgMywgNCwgNSwgNiwgNywg
OCwgOSl9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisj
aWYgR1RFU1RfTEFOR19DWFgxMQorCitjbGFzcyBOb25EZWZhdWx0Q29uc3RydWN0QXNzaWduU3Ry
aW5nIHsKKyBwdWJsaWM6CisgIE5vbkRlZmF1bHRDb25zdHJ1Y3RBc3NpZ25TdHJpbmcoY29uc3Qg
c3RkOjpzdHJpbmcmIHMpIDogc3RyXyhzKSB7fQorCisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIo
KSBjb25zdCB7IHJldHVybiBzdHJfOyB9CisKKyBwcml2YXRlOgorICBzdGQ6OnN0cmluZyBzdHJf
OworCisgIC8vIE5vdCBkZWZhdWx0IGNvbnN0cnVjdGlibGUKKyAgTm9uRGVmYXVsdENvbnN0cnVj
dEFzc2lnblN0cmluZygpOworICAvLyBOb3QgYXNzaWduYWJsZQorICB2b2lkIG9wZXJhdG9yPShj
b25zdCBOb25EZWZhdWx0Q29uc3RydWN0QXNzaWduU3RyaW5nJik7Cit9OworCitURVNUKENvbWJp
bmVUZXN0LCBOb25EZWZhdWx0Q29uc3RydWN0QXNzaWduKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPHR1cGxlPGludCwgTm9uRGVmYXVsdENvbnN0cnVjdEFzc2lnblN0cmluZz4gPiBnZW4gPQor
ICAgICAgQ29tYmluZShWYWx1ZXMoMCwgMSksIFZhbHVlcyhOb25EZWZhdWx0Q29uc3RydWN0QXNz
aWduU3RyaW5nKCJBIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbkRl
ZmF1bHRDb25zdHJ1Y3RBc3NpZ25TdHJpbmcoIkIiKSkpOworCisgIFBhcmFtR2VuZXJhdG9yPHR1
cGxlPGludCwgTm9uRGVmYXVsdENvbnN0cnVjdEFzc2lnblN0cmluZz4gPjo6aXRlcmF0b3IgaXQg
PQorICAgICAgZ2VuLmJlZ2luKCk7CisKKyAgRVhQRUNUX0VRKDAsIHN0ZDo6Z2V0PDA+KCppdCkp
OworICBFWFBFQ1RfRVEoIkEiLCBzdGQ6OmdldDwxPigqaXQpLnN0cigpKTsKKyAgKytpdDsKKwor
ICBFWFBFQ1RfRVEoMCwgc3RkOjpnZXQ8MD4oKml0KSk7CisgIEVYUEVDVF9FUSgiQiIsIHN0ZDo6
Z2V0PDE+KCppdCkuc3RyKCkpOworICArK2l0OworCisgIEVYUEVDVF9FUSgxLCBzdGQ6OmdldDww
PigqaXQpKTsKKyAgRVhQRUNUX0VRKCJBIiwgc3RkOjpnZXQ8MT4oKml0KS5zdHIoKSk7CisgICsr
aXQ7CisKKyAgRVhQRUNUX0VRKDEsIHN0ZDo6Z2V0PDA+KCppdCkpOworICBFWFBFQ1RfRVEoIkIi
LCBzdGQ6OmdldDwxPigqaXQpLnN0cigpKTsKKyAgKytpdDsKKworICBFWFBFQ1RfVFJVRShpdCA9
PSBnZW4uZW5kKCkpOworfQorCisjZW5kaWYgICAvLyBHVEVTVF9MQU5HX0NYWDExCisjIGVuZGlm
ICAvLyBHVEVTVF9IQVNfQ09NQklORQorCisvLyBUZXN0cyB0aGF0IGFuIGdlbmVyYXRvciBwcm9k
dWNlcyBjb3JyZWN0IHNlcXVlbmNlIGFmdGVyIGJlaW5nCisvLyBhc3NpZ25lZCBmcm9tIGFub3Ro
ZXIgZ2VuZXJhdG9yLgorVEVTVChQYXJhbUdlbmVyYXRvclRlc3QsIEFzc2lnbm1lbnRXb3Jrcykg
eworICBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlcygxLCAyKTsKKyAgY29uc3QgUGFy
YW1HZW5lcmF0b3I8aW50PiBnZW4yID0gVmFsdWVzKDMsIDQpOworICBnZW4gPSBnZW4yOworCisg
IGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHszLCA0fTsKKyAgVmVyaWZ5R2VuZXJhdG9y
KGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQg
dGhlIHRlc3RzIGFyZSBleHBhbmRlZCBhbmQgcnVuIGFzIHNwZWNpZmllZDoKKy8vIG9uZSB0ZXN0
IHBlciBlbGVtZW50IGZyb20gdGhlIHNlcXVlbmNlIHByb2R1Y2VkIGJ5IHRoZSBnZW5lcmF0b3IK
Ky8vIHNwZWNpZmllZCBpbiBJTlNUQU5USUFURV9URVNUX0NBU0VfUC4gSXQgYWxzbyB2ZXJpZmll
cyB0aGF0IHRoZSB0ZXN0J3MKKy8vIGZpeHR1cmUgY29uc3RydWN0b3IsIFNldFVwKCksIGFuZCBU
ZWFyRG93bigpIGhhdmUgcnVuIGFuZCBoYXZlIGJlZW4KKy8vIHN1cHBsaWVkIHdpdGggdGhlIGNv
cnJlY3QgcGFyYW1ldGVycy4KKworLy8gVGhlIHVzZSBvZiBlbnZpcm9ubWVudCBvYmplY3QgYWxs
b3dzIGRldGVjdGlvbiBvZiB0aGUgY2FzZSB3aGVyZSBubyB0ZXN0CisvLyBjYXNlIGZ1bmN0aW9u
YWxpdHkgaXMgcnVuIGF0IGFsbC4gSW4gdGhpcyBjYXNlIFRlc3RDYXNlVGVhckRvd24gd2lsbCBu
b3QKKy8vIGJlIGFibGUgdG8gZGV0ZWN0IG1pc3NpbmcgdGVzdHMsIG5hdHVyYWxseS4KK3RlbXBs
YXRlIDxpbnQga0V4cGVjdGVkQ2FsbHM+CitjbGFzcyBUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50
IDogcHVibGljIDo6dGVzdGluZzo6RW52aXJvbm1lbnQgeworIHB1YmxpYzoKKyAgc3RhdGljIFRl
c3RHZW5lcmF0aW9uRW52aXJvbm1lbnQqIEluc3RhbmNlKCkgeworICAgIHN0YXRpYyBUZXN0R2Vu
ZXJhdGlvbkVudmlyb25tZW50KiBpbnN0YW5jZSA9IG5ldyBUZXN0R2VuZXJhdGlvbkVudmlyb25t
ZW50OworICAgIHJldHVybiBpbnN0YW5jZTsKKyAgfQorCisgIHZvaWQgRml4dHVyZUNvbnN0cnVj
dG9yRXhlY3V0ZWQoKSB7IGZpeHR1cmVfY29uc3RydWN0b3JfY291bnRfKys7IH0KKyAgdm9pZCBT
ZXRVcEV4ZWN1dGVkKCkgeyBzZXRfdXBfY291bnRfKys7IH0KKyAgdm9pZCBUZWFyRG93bkV4ZWN1
dGVkKCkgeyB0ZWFyX2Rvd25fY291bnRfKys7IH0KKyAgdm9pZCBUZXN0Qm9keUV4ZWN1dGVkKCkg
eyB0ZXN0X2JvZHlfY291bnRfKys7IH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Cisg
ICAgLy8gSWYgYWxsIE11bHRpcGxlVGVzdEdlbmVyYXRpb25UZXN0IHRlc3RzIGhhdmUgYmVlbiBk
ZS1zZWxlY3RlZAorICAgIC8vIGJ5IHRoZSBmaWx0ZXIgZmxhZywgdGhlIGZvbGxvd2luZyBjaGVj
a3MgbWFrZSBubyBzZW5zZS4KKyAgICBib29sIHBlcmZvcm1fY2hlY2sgPSBmYWxzZTsKKworICAg
IGZvciAoaW50IGkgPSAwOyBpIDwga0V4cGVjdGVkQ2FsbHM7ICsraSkgeworICAgICAgTWVzc2Fn
ZSBtc2c7CisgICAgICBtc2cgPDwgIlRlc3RzRXhwYW5kZWRBbmRSdW4vIiA8PCBpOworICAgICAg
aWYgKFVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0Y2hlc1Rlc3QoCisgICAgICAgICAgICAgIlRl
c3RFeHBhbnNpb25Nb2R1bGUvTXVsdGlwbGVUZXN0R2VuZXJhdGlvblRlc3QiLAorICAgICAgICAg
ICAgICBtc2cuR2V0U3RyaW5nKCkuY19zdHIoKSkpIHsKKyAgICAgICAgcGVyZm9ybV9jaGVjayA9
IHRydWU7CisgICAgICB9CisgICAgfQorICAgIGlmIChwZXJmb3JtX2NoZWNrKSB7CisgICAgICBF
WFBFQ1RfRVEoa0V4cGVjdGVkQ2FsbHMsIGZpeHR1cmVfY29uc3RydWN0b3JfY291bnRfKQorICAg
ICAgICAgIDw8ICJGaXh0dXJlIGNvbnN0cnVjdG9yIG9mIFBhcmFtVGVzdEdlbmVyYXRpb25UZXN0
IHRlc3QgY2FzZSAiCisgICAgICAgICAgPDwgImhhcyBub3QgYmVlbiBydW4gYXMgZXhwZWN0ZWQu
IjsKKyAgICAgIEVYUEVDVF9FUShrRXhwZWN0ZWRDYWxscywgc2V0X3VwX2NvdW50XykKKyAgICAg
ICAgICA8PCAiRml4dHVyZSBTZXRVcCBtZXRob2Qgb2YgUGFyYW1UZXN0R2VuZXJhdGlvblRlc3Qg
dGVzdCBjYXNlICIKKyAgICAgICAgICA8PCAiaGFzIG5vdCBiZWVuIHJ1biBhcyBleHBlY3RlZC4i
OworICAgICAgRVhQRUNUX0VRKGtFeHBlY3RlZENhbGxzLCB0ZWFyX2Rvd25fY291bnRfKQorICAg
ICAgICAgIDw8ICJGaXh0dXJlIFRlYXJEb3duIG1ldGhvZCBvZiBQYXJhbVRlc3RHZW5lcmF0aW9u
VGVzdCB0ZXN0IGNhc2UgIgorICAgICAgICAgIDw8ICJoYXMgbm90IGJlZW4gcnVuIGFzIGV4cGVj
dGVkLiI7CisgICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2FsbHMsIHRlc3RfYm9keV9jb3VudF8p
CisgICAgICAgICAgPDwgIlRlc3QgaW4gUGFyYW1UZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNl
ICIKKyAgICAgICAgICA8PCAiaGFzIG5vdCBiZWVuIHJ1biBhcyBleHBlY3RlZC4iOworICAgIH0K
KyAgfQorCisgcHJpdmF0ZToKKyAgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudCgpIDogZml4dHVy
ZV9jb25zdHJ1Y3Rvcl9jb3VudF8oMCksIHNldF91cF9jb3VudF8oMCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlYXJfZG93bl9jb3VudF8oMCksIHRlc3RfYm9keV9jb3VudF8o
MCkge30KKworICBpbnQgZml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3VudF87CisgIGludCBzZXRfdXBf
Y291bnRfOworICBpbnQgdGVhcl9kb3duX2NvdW50XzsKKyAgaW50IHRlc3RfYm9keV9jb3VudF87
CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0R2VuZXJhdGlvbkVudmly
b25tZW50KTsKK307CisKK2NvbnN0IGludCB0ZXN0X2dlbmVyYXRpb25fcGFyYW1zW10gPSB7MzYs
IDQyLCA3Mn07CisKK2NsYXNzIFRlc3RHZW5lcmF0aW9uVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBh
cmFtPGludD4geworIHB1YmxpYzoKKyAgZW51bSB7CisgICAgUEFSQU1FVEVSX0NPVU5UID0KKyAg
ICAgICAgc2l6ZW9mKHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMpL3NpemVvZih0ZXN0X2dlbmVyYXRp
b25fcGFyYW1zWzBdKQorICB9OworCisgIHR5cGVkZWYgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVu
dDxQQVJBTUVURVJfQ09VTlQ+IEVudmlyb25tZW50OworCisgIFRlc3RHZW5lcmF0aW9uVGVzdCgp
IHsKKyAgICBFbnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+Rml4dHVyZUNvbnN0cnVjdG9yRXhlY3V0
ZWQoKTsKKyAgICBjdXJyZW50X3BhcmFtZXRlcl8gPSBHZXRQYXJhbSgpOworICB9CisgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBFbnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+U2V0VXBFeGVj
dXRlZCgpOworICAgIEVYUEVDVF9FUShjdXJyZW50X3BhcmFtZXRlcl8sIEdldFBhcmFtKCkpOwor
ICB9CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBFbnZpcm9ubWVudDo6SW5zdGFu
Y2UoKS0+VGVhckRvd25FeGVjdXRlZCgpOworICAgIEVYUEVDVF9FUShjdXJyZW50X3BhcmFtZXRl
cl8sIEdldFBhcmFtKCkpOworICB9CisKKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsK
KyAgICBib29sIGFsbF90ZXN0c19pbl90ZXN0X2Nhc2Vfc2VsZWN0ZWQgPSB0cnVlOworCisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBQQVJBTUVURVJfQ09VTlQ7ICsraSkgeworICAgICAgTWVzc2Fn
ZSB0ZXN0X25hbWU7CisgICAgICB0ZXN0X25hbWUgPDwgIlRlc3RzRXhwYW5kZWRBbmRSdW4vIiA8
PCBpOworICAgICAgaWYgKCAhVW5pdFRlc3RPcHRpb25zOjpGaWx0ZXJNYXRjaGVzVGVzdCgKKyAg
ICAgICAgICAgICAgICAiVGVzdEV4cGFuc2lvbk1vZHVsZS9NdWx0aXBsZVRlc3RHZW5lcmF0aW9u
VGVzdCIsCisgICAgICAgICAgICAgICAgdGVzdF9uYW1lLkdldFN0cmluZygpKSkgeworICAgICAg
ICBhbGxfdGVzdHNfaW5fdGVzdF9jYXNlX3NlbGVjdGVkID0gZmFsc2U7CisgICAgICB9CisgICAg
fQorICAgIEVYUEVDVF9UUlVFKGFsbF90ZXN0c19pbl90ZXN0X2Nhc2Vfc2VsZWN0ZWQpCisgICAg
ICAgIDw8ICJXaGVuIHJ1bm5pbmcgdGhlIFRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgYWxs
IG9mIGl0cyB0ZXN0c1xuIgorICAgICAgICA8PCAibXVzdCBiZSBzZWxlY3RlZCBieSB0aGUgZmls
dGVyIGZsYWcgZm9yIHRoZSB0ZXN0IGNhc2UgdG8gcGFzcy5cbiIKKyAgICAgICAgPDwgIklmIG5v
dCBhbGwgb2YgdGhlbSBhcmUgZW5hYmxlZCwgd2UgY2FuJ3QgcmVsaWFibHkgY29uY2x1ZGVcbiIK
KyAgICAgICAgPDwgInRoYXQgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIHRlc3RzIGhhdmUgYmVlbiBn
ZW5lcmF0ZWQuIjsKKworICAgIGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5jbGVhcigpOworICB9CisK
KyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICB2ZWN0b3I8aW50PiBleHBl
Y3RlZF92YWx1ZXModGVzdF9nZW5lcmF0aW9uX3BhcmFtcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdF9nZW5lcmF0aW9uX3BhcmFtcyArIFBBUkFNRVRFUl9DT1VOVCk7Cisg
ICAgLy8gVGVzdCBleGVjdXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQgYnkgR29vZ2xlIFRl
c3QsCisgICAgLy8gc28gdGhlIG9yZGVyIG9mIHZhbHVlcyBpbiBjb2xsZWN0ZWRfcGFyYW1ldGVy
c18gY2FuIGJlCisgICAgLy8gZGlmZmVyZW50IGFuZCB3ZSBoYXZlIHRvIHNvcnQgdG8gY29tcGFy
ZS4KKyAgICBzb3J0KGV4cGVjdGVkX3ZhbHVlcy5iZWdpbigpLCBleHBlY3RlZF92YWx1ZXMuZW5k
KCkpOworICAgIHNvcnQoY29sbGVjdGVkX3BhcmFtZXRlcnNfLmJlZ2luKCksIGNvbGxlY3RlZF9w
YXJhbWV0ZXJzXy5lbmQoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShjb2xsZWN0ZWRfcGFyYW1ldGVy
c18gPT0gZXhwZWN0ZWRfdmFsdWVzKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICBpbnQgY3VycmVu
dF9wYXJhbWV0ZXJfOworICBzdGF0aWMgdmVjdG9yPGludD4gY29sbGVjdGVkX3BhcmFtZXRlcnNf
OworCisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0R2Vu
ZXJhdGlvblRlc3QpOworfTsKK3ZlY3RvcjxpbnQ+IFRlc3RHZW5lcmF0aW9uVGVzdDo6Y29sbGVj
dGVkX3BhcmFtZXRlcnNfOworCitURVNUX1AoVGVzdEdlbmVyYXRpb25UZXN0LCBUZXN0c0V4cGFu
ZGVkQW5kUnVuKSB7CisgIEVudmlyb25tZW50OjpJbnN0YW5jZSgpLT5UZXN0Qm9keUV4ZWN1dGVk
KCk7CisgIEVYUEVDVF9FUShjdXJyZW50X3BhcmFtZXRlcl8sIEdldFBhcmFtKCkpOworICBjb2xs
ZWN0ZWRfcGFyYW1ldGVyc18ucHVzaF9iYWNrKEdldFBhcmFtKCkpOworfQorSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoVGVzdEV4cGFuc2lvbk1vZHVsZSwgVGVzdEdlbmVyYXRpb25UZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWVzSW4odGVzdF9nZW5lcmF0aW9uX3BhcmFtcykpOwor
CisvLyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgZWxlbWVudCBzZXF1ZW5jZSAodGhpcmQg
cGFyYW1ldGVyIG9mCisvLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUCkgaXMgZXZhbHVhdGVkIGlu
IEluaXRHb29nbGVUZXN0KCkgYW5kIG5laXRoZXIgYXQKKy8vIHRoZSBjYWxsIHNpdGUgb2YgSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1Agbm9yIGluIFJVTl9BTExfVEVTVFMoKS4gIEZvcgorLy8gdGhh
dCwgd2UgZGVjbGFyZSBwYXJhbV92YWx1ZV8gdG8gYmUgYSBzdGF0aWMgbWVtYmVyIG9mCisvLyBH
ZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCBhbmQgaW5pdGlhbGl6ZSBpdCB0byAwLiAgV2Ugc2V0IGl0
IHRvIDEgaW4KKy8vIG1haW4oKSwganVzdCBiZWZvcmUgaW52b2NhdGlvbiBvZiBJbml0R29vZ2xl
VGVzdCgpLiAgQWZ0ZXIgY2FsbGluZworLy8gSW5pdEdvb2dsZVRlc3QoKSwgd2Ugc2V0IHRoZSB2
YWx1ZSB0byAyLiAgSWYgdGhlIHNlcXVlbmNlIGlzIGV2YWx1YXRlZAorLy8gYmVmb3JlIG9yIGFm
dGVyIEluaXRHb29nbGVUZXN0LCBJTlNUQU5USUFURV9URVNUX0NBU0VfUCB3aWxsIGNyZWF0ZSBh
CisvLyB0ZXN0IHdpdGggcGFyYW1ldGVyIG90aGVyIHRoYW4gMSwgYW5kIHRoZSB0ZXN0IGJvZHkg
d2lsbCBmYWlsIHRoZQorLy8gYXNzZXJ0aW9uLgorY2xhc3MgR2VuZXJhdG9yRXZhbHVhdGlvblRl
c3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyBpbnQg
cGFyYW1fdmFsdWUoKSB7IHJldHVybiBwYXJhbV92YWx1ZV87IH0KKyAgc3RhdGljIHZvaWQgc2V0
X3BhcmFtX3ZhbHVlKGludCBwYXJhbV92YWx1ZSkgeyBwYXJhbV92YWx1ZV8gPSBwYXJhbV92YWx1
ZTsgfQorCisgcHJpdmF0ZToKKyAgc3RhdGljIGludCBwYXJhbV92YWx1ZV87Cit9OworaW50IEdl
bmVyYXRvckV2YWx1YXRpb25UZXN0OjpwYXJhbV92YWx1ZV8gPSAwOworCitURVNUX1AoR2VuZXJh
dG9yRXZhbHVhdGlvblRlc3QsIEdlbmVyYXRvcnNFdmFsdWF0ZWRJbk1haW4pIHsKKyAgRVhQRUNU
X0VRKDEsIEdldFBhcmFtKCkpOworfQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoR2VuRXZhbE1v
ZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEdlbmVyYXRvckV2YWx1YXRpb25UZXN0Ojpw
YXJhbV92YWx1ZSgpKSk7CisKKy8vIFRlc3RzIHRoYXQgZ2VuZXJhdG9ycyBkZWZpbmVkIGluIGEg
ZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXQgYXJlCisvLyBmdW5jdGlvbmFsLiBHZW5lcmF0b3Ig
ZXh0ZXJuX2dlbiBpcyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdDIuY2MuCitleHRl
cm4gUGFyYW1HZW5lcmF0b3I8aW50PiBleHRlcm5fZ2VuOworY2xhc3MgRXh0ZXJuYWxHZW5lcmF0
b3JUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7fTsKK1RFU1RfUChFeHRlcm5hbEdl
bmVyYXRvclRlc3QsIEV4dGVybmFsR2VuZXJhdG9yKSB7CisgIC8vIFNlcXVlbmNlIHByb2R1Y2Vk
IGJ5IGV4dGVybl9nZW4gY29udGFpbnMgb25seSBhIHNpbmdsZSB2YWx1ZQorICAvLyB3aGljaCB3
ZSB2ZXJpZnkgaGVyZS4KKyAgRVhQRUNUX0VRKEdldFBhcmFtKCksIDMzKTsKK30KK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKEV4dGVybmFsR2VuZXJhdG9yTW9kdWxlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgRXh0ZXJuYWxHZW5lcmF0b3JUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ZXh0ZXJuX2dlbik7CisKKy8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBj
YW4gYmUgZGVmaW5lZCBpbiBvbmUgdHJhbnNsYXRpb24KKy8vIHVuaXQgYW5kIGluc3RhbnRpYXRl
ZCBpbiBhbm90aGVyLiBUaGlzIHRlc3Qgd2lsbCBiZSBpbnN0YW50aWF0ZWQgaW4KKy8vIGd0ZXN0
LXBhcmFtLXRlc3RfdGVzdDIuY2MuIEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3QgZml4dHVyZSBj
bGFzcyBpcworLy8gZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaC4KK1RFU1RfUChF
eHRlcm5hbEluc3RhbnRpYXRpb25UZXN0LCBJc011bHRpcGxlT2YzMykgeworICBFWFBFQ1RfRVEo
MCwgR2V0UGFyYW0oKSAlIDMzKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQg
dGVzdCBjYXNlIGNhbiBiZSBpbnN0YW50aWF0ZWQgd2l0aCBtdWx0aXBsZQorLy8gZ2VuZXJhdG9y
cy4KK2NsYXNzIE11bHRpcGxlSW5zdGFudGlhdGlvblRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJh
bTxpbnQ+IHt9OworVEVTVF9QKE11bHRpcGxlSW5zdGFudGlhdGlvblRlc3QsIEFsbG93c011bHRp
cGxlSW5zdGFuY2VzKSB7Cit9CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5jZTEsIE11
bHRpcGxlSW5zdGFudGlhdGlvblRlc3QsIFZhbHVlcygxLCAyKSk7CitJTlNUQU5USUFURV9URVNU
X0NBU0VfUChTZXF1ZW5jZTIsIE11bHRpcGxlSW5zdGFudGlhdGlvblRlc3QsIFJhbmdlKDMsIDUp
KTsKKworLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBpbnN0
YW50aWF0ZWQKKy8vIGluIG11bHRpcGxlIHRyYW5zbGF0aW9uIHVuaXRzLiBUaGlzIHRlc3Qgd2ls
bCBiZSBpbnN0YW50aWF0ZWQKKy8vIGhlcmUgYW5kIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdDIu
Y2MuCisvLyBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGF0aW9uVW5pdHNUZXN0IGZpeHR1
cmUgY2xhc3MKKy8vIGlzIGRlZmluZWQgaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmguCitURVNU
X1AoSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0LCBJc011bHRpcGxl
T2Y0MikgeworICBFWFBFQ1RfRVEoMCwgR2V0UGFyYW0oKSAlIDQyKTsKK30KK0lOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKFNlcXVlbmNlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbnRp
YXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcyg0MiwgNDIqMikpOworCisvLyBUZXN0cyB0aGF0IGVhY2ggaXRlcmF0aW9uIG9m
IHBhcmFtZXRlcml6ZWQgdGVzdCBydW5zIGluIGEgc2VwYXJhdGUgdGVzdAorLy8gb2JqZWN0Lgor
Y2xhc3MgU2VwYXJhdGVJbnN0YW5jZVRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsK
KyBwdWJsaWM6CisgIFNlcGFyYXRlSW5zdGFuY2VUZXN0KCkgOiBjb3VudF8oMCkge30KKworICBz
dGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIEVYUEVDVF9HRShnbG9iYWxfY291
bnRfLCAyKQorICAgICAgICA8PCAiSWYgc29tZSAoYnV0IG5vdCBhbGwpIFNlcGFyYXRlSW5zdGFu
Y2VUZXN0IHRlc3RzIGhhdmUgYmVlbiAiCisgICAgICAgIDw8ICJmaWx0ZXJlZCBvdXQgdGhpcyB0
ZXN0IHdpbGwgZmFpbC4gTWFrZSBzdXJlIHRoYXQgYWxsICIKKyAgICAgICAgPDwgIkdlbmVyYXRv
ckV2YWx1YXRpb25UZXN0IGFyZSBzZWxlY3RlZCBvciBkZS1zZWxlY3RlZCB0b2dldGhlciAiCisg
ICAgICAgIDw8ICJieSB0aGUgdGVzdCBmaWx0ZXIuIjsKKyAgfQorCisgcHJvdGVjdGVkOgorICBp
bnQgY291bnRfOworICBzdGF0aWMgaW50IGdsb2JhbF9jb3VudF87Cit9OworaW50IFNlcGFyYXRl
SW5zdGFuY2VUZXN0OjpnbG9iYWxfY291bnRfID0gMDsKKworVEVTVF9QKFNlcGFyYXRlSW5zdGFu
Y2VUZXN0LCBUZXN0c1J1bkluU2VwYXJhdGVJbnN0YW5jZXMpIHsKKyAgRVhQRUNUX0VRKDAsIGNv
dW50XysrKTsKKyAgZ2xvYmFsX2NvdW50XysrOworfQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ao
Rm91ckVsZW1TZXF1ZW5jZSwgU2VwYXJhdGVJbnN0YW5jZVRlc3QsIFJhbmdlKDEsIDQpKTsKKwor
Ly8gVGVzdHMgdGhhdCBhbGwgaW5zdGFudGlhdGlvbnMgb2YgYSB0ZXN0IGhhdmUgbmFtZWQgYXBw
cm9wcmlhdGVseS4gVGVzdAorLy8gZGVmaW5lZCB3aXRoIFRFU1RfUChUZXN0Q2FzZU5hbWUsIFRl
c3ROYW1lKSBhbmQgaW5zdGFudGlhdGVkIHdpdGgKKy8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KFNlcXVlbmNlTmFtZSwgVGVzdENhc2VOYW1lLCBnZW5lcmF0b3IpIG11c3QgYmUgbmFtZWQKKy8v
IFNlcXVlbmNlTmFtZS9UZXN0Q2FzZU5hbWUuVGVzdE5hbWUvaSwgd2hlcmUgaSBpcyB0aGUgMC1i
YXNlZCBpbmRleCBvZiB0aGUKKy8vIHNlcXVlbmNlIGVsZW1lbnQgdXNlZCB0byBpbnN0YW50aWF0
ZSB0aGUgdGVzdC4KK2NsYXNzIE5hbWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+
IHt9OworCitURVNUX1AoTmFtaW5nVGVzdCwgVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXNBbmRQYXJh
bWV0ZXJzKSB7CisgIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9
CisgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9p
bmZvKCk7CisKKyAgRVhQRUNUX1NUUkVRKCJaZXJvVG9GaXZlU2VxdWVuY2UvTmFtaW5nVGVzdCIs
IHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7CisKKyAgTWVzc2FnZSBpbmRleF9zdHJlYW07
CisgIGluZGV4X3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXNBbmRQYXJhbWV0ZXJz
LyIgPDwgR2V0UGFyYW0oKTsKKyAgRVhQRUNUX1NUUkVRKGluZGV4X3N0cmVhbS5HZXRTdHJpbmco
KS5jX3N0cigpLCB0ZXN0X2luZm8tPm5hbWUoKSk7CisKKyAgRVhQRUNUX0VRKDo6dGVzdGluZzo6
UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgpKSwgdGVzdF9pbmZvLT52YWx1ZV9wYXJhbSgpKTsKK30K
KworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoWmVyb1RvRml2ZVNlcXVlbmNlLCBOYW1pbmdUZXN0
LCBSYW5nZSgwLCA1KSk7CisKKy8vIFRlc3RzIHRoYXQgbWFjcm9zIGluIHRlc3QgbmFtZXMgYXJl
IGV4cGFuZGVkIGNvcnJlY3RseS4KK2NsYXNzIE1hY3JvTmFtaW5nVGVzdCA6IHB1YmxpYyBUZXN0
V2l0aFBhcmFtPGludD4ge307CisKKyNkZWZpbmUgUFJFRklYX1dJVEhfRk9PKHRlc3RfbmFtZSkg
Rm9vIyN0ZXN0X25hbWUKKyNkZWZpbmUgUFJFRklYX1dJVEhfTUFDUk8odGVzdF9uYW1lKSBNYWNy
byMjdGVzdF9uYW1lCisKK1RFU1RfUChQUkVGSVhfV0lUSF9NQUNSTyhOYW1pbmdUZXN0KSwgUFJF
RklYX1dJVEhfRk9PKFNvbWVUZXN0TmFtZSkpIHsKKyAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5m
byogY29uc3QgdGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFu
Y2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKworICBFWFBFQ1RfU1RSRVEoIkZvcnR5VHdvL01h
Y3JvTmFtaW5nVGVzdCIsIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7CisgIEVYUEVDVF9T
VFJFUSgiRm9vU29tZVRlc3ROYW1lIiwgdGVzdF9pbmZvLT5uYW1lKCkpOworfQorCitJTlNUQU5U
SUFURV9URVNUX0NBU0VfUChGb3J0eVR3bywgTWFjcm9OYW1pbmdUZXN0LCBWYWx1ZXMoNDIpKTsK
KworLy8gVGVzdHMgdGhlIHNhbWUgdGhpbmcgZm9yIG5vbi1wYXJhbWV0cml6ZWQgdGVzdHMuCitj
bGFzcyBNYWNyb05hbWluZ1Rlc3ROb25QYXJhbWV0cml6ZWQgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHt9OworCitURVNUX0YoUFJFRklYX1dJVEhfTUFDUk8oTmFtaW5nVGVzdE5vblBhcmFtZXRy
aXplZCksCisgICAgICAgUFJFRklYX1dJVEhfRk9PKFNvbWVUZXN0TmFtZSkpIHsKKyAgY29uc3Qg
Ojp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0aW5nOjpV
bml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKworICBFWFBFQ1Rf
U1RSRVEoIk1hY3JvTmFtaW5nVGVzdE5vblBhcmFtZXRyaXplZCIsIHRlc3RfaW5mby0+dGVzdF9j
YXNlX25hbWUoKSk7CisgIEVYUEVDVF9TVFJFUSgiRm9vU29tZVRlc3ROYW1lIiwgdGVzdF9pbmZv
LT5uYW1lKCkpOworfQorCisvLyBUZXN0cyB0aGF0IHVzZXIgc3VwcGxpZWQgY3VzdG9tIHBhcmFt
ZXRlciBuYW1lcyBhcmUgd29ya2luZyBjb3JyZWN0bHkuCisvLyBSdW5zIHRoZSB0ZXN0IHdpdGgg
YSBidWlsdGluIGhlbHBlciBtZXRob2Qgd2hpY2ggdXNlcyBQcmludFRvU3RyaW5nLAorLy8gYXMg
d2VsbCBhcyBhIGN1c3RvbSBmdW5jdGlvbiBhbmQgY3VzdG9tIGZ1bmN0b3IgdG8gZW5zdXJlIGFs
bCBwb3NzaWJsZQorLy8gdXNlcyB3b3JrIGNvcnJlY3RseS4KK2NsYXNzIEN1c3RvbUZ1bmN0b3JO
YW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08c3RkOjpzdHJpbmc+IHt9OworVEVTVF9Q
KEN1c3RvbUZ1bmN0b3JOYW1pbmdUZXN0LCBDdXN0b21UZXN0TmFtZXMpIHt9CisKK3N0cnVjdCBD
dXN0b21QYXJhbU5hbWVGdW5jdG9yIHsKKyAgc3RkOjpzdHJpbmcgb3BlcmF0b3IoKShjb25zdCA6
OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88c3RkOjpzdHJpbmc+JiBpbmYpIHsKKyAgICByZXR1cm4g
aW5mLnBhcmFtOworICB9Cit9OworCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChDdXN0b21QYXJh
bU5hbWVGdW5jdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRnVuY3Rvck5hbWlu
Z1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoc3RkOjpzdHJpbmcoIkZ1bmN0
b3JOYW1lIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tUGFyYW1OYW1lRnVuY3Rv
cigpKTsKKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQWxsQWxsb3dlZENoYXJhY3RlcnMsCisg
ICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GdW5jdG9yTmFtaW5nVGVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbHVlcygiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjAxMjM0NTY3ODkwXyIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgQ3VzdG9tUGFyYW1OYW1lRnVuY3RvcigpKTsKKworaW5saW5lIHN0
ZDo6c3RyaW5nIEN1c3RvbVBhcmFtTmFtZUZ1bmN0aW9uKAorICAgIGNvbnN0IDo6dGVzdGluZzo6
VGVzdFBhcmFtSW5mbzxzdGQ6OnN0cmluZz4mIGluZikgeworICByZXR1cm4gaW5mLnBhcmFtOwor
fQorCitjbGFzcyBDdXN0b21GdW5jdGlvbk5hbWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJh
bTxzdGQ6OnN0cmluZz4ge307CitURVNUX1AoQ3VzdG9tRnVuY3Rpb25OYW1pbmdUZXN0LCBDdXN0
b21UZXN0TmFtZXMpIHt9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEN1c3RvbVBhcmFtTmFt
ZUZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRnVuY3Rpb25OYW1pbmdU
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKHN0ZDo6c3RyaW5nKCJGdW5jdGlv
bk5hbWUiKSksCisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21QYXJhbU5hbWVGdW5jdGlv
bik7CisKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisKKy8vIFRlc3QgY3VzdG9tIG5hbWluZyB3aXRo
IGEgbGFtYmRhCisKK2NsYXNzIEN1c3RvbUxhbWJkYU5hbWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdp
dGhQYXJhbTxzdGQ6OnN0cmluZz4ge307CitURVNUX1AoQ3VzdG9tTGFtYmRhTmFtaW5nVGVzdCwg
Q3VzdG9tVGVzdE5hbWVzKSB7fQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChDdXN0b21QYXJh
bU5hbWVMYW1iZGEsIEN1c3RvbUxhbWJkYU5hbWluZ1Rlc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICBWYWx1ZXMoc3RkOjpzdHJpbmcoIkxhbWJkYU5hbWUiKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICBbXShjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88c3RkOjpzdHJpbmc+JiBp
bmYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZi5wYXJhbTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0pOworCisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKwor
VEVTVChDdXN0b21OYW1pbmdUZXN0LCBDaGVja05hbWVSZWdpc3RyeSkgeworICA6OnRlc3Rpbmc6
OlVuaXRUZXN0KiB1bml0X3Rlc3QgPSA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgp
OworICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gdGVzdF9uYW1lczsKKyAgZm9yIChpbnQgY2FzZV9u
dW0gPSAwOworICAgICAgIGNhc2VfbnVtIDwgdW5pdF90ZXN0LT50b3RhbF90ZXN0X2Nhc2VfY291
bnQoKTsKKyAgICAgICArK2Nhc2VfbnVtKSB7CisgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0Q2Fz
ZSogdGVzdF9jYXNlID0gdW5pdF90ZXN0LT5HZXRUZXN0Q2FzZShjYXNlX251bSk7CisgICAgZm9y
IChpbnQgdGVzdF9udW0gPSAwOworICAgICAgICAgdGVzdF9udW0gPCB0ZXN0X2Nhc2UtPnRvdGFs
X3Rlc3RfY291bnQoKTsKKyAgICAgICAgICsrdGVzdF9udW0pIHsKKyAgICAgIGNvbnN0IDo6dGVz
dGluZzo6VGVzdEluZm8qIHRlc3RfaW5mbyA9IHRlc3RfY2FzZS0+R2V0VGVzdEluZm8odGVzdF9u
dW0pOworICAgICAgdGVzdF9uYW1lcy5pbnNlcnQoc3RkOjpzdHJpbmcodGVzdF9pbmZvLT5uYW1l
KCkpKTsKKyAgICB9CisgIH0KKyAgRVhQRUNUX0VRKDF1LCB0ZXN0X25hbWVzLmNvdW50KCJDdXN0
b21UZXN0TmFtZXMvRnVuY3Rvck5hbWUiKSk7CisgIEVYUEVDVF9FUSgxdSwgdGVzdF9uYW1lcy5j
b3VudCgiQ3VzdG9tVGVzdE5hbWVzL0Z1bmN0aW9uTmFtZSIpKTsKKyNpZiBHVEVTVF9MQU5HX0NY
WDExCisgIEVYUEVDVF9FUSgxdSwgdGVzdF9uYW1lcy5jb3VudCgiQ3VzdG9tVGVzdE5hbWVzL0xh
bWJkYU5hbWUiKSk7CisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKK30KKworLy8gVGVzdCBh
IG51bWVyaWMgbmFtZSB0byBlbnN1cmUgUHJpbnRUb1N0cmluZ1BhcmFtTmFtZSB3b3JrcyBjb3Jy
ZWN0bHkuCisKK2NsYXNzIEN1c3RvbUludGVnZXJOYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRo
UGFyYW08aW50PiB7fTsKKworVEVTVF9QKEN1c3RvbUludGVnZXJOYW1pbmdUZXN0LCBUZXN0c1Jl
cG9ydENvcnJlY3ROYW1lcykgeworICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0
ZXN0X2luZm8gPQorICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJy
ZW50X3Rlc3RfaW5mbygpOworICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07CisgIHRlc3RfbmFt
ZV9zdHJlYW0gPDwgIlRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzLyIgPDwgR2V0UGFyYW0oKTsKKyAg
RVhQRUNUX1NUUkVRKHRlc3RfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19zdHIoKSwgdGVzdF9p
bmZvLT5uYW1lKCkpOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChQcmludFRvU3RyaW5n
LAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tSW50ZWdlck5hbWluZ1Rlc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICBSYW5nZSgwLCA1KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgpKTsKKworLy8gVGVzdCBhIGN1c3Rv
bSBzdHJ1Y3Qgd2l0aCBQcmludFRvU3RyaW5nLgorCitzdHJ1Y3QgQ3VzdG9tU3RydWN0IHsKKyAg
ZXhwbGljaXQgQ3VzdG9tU3RydWN0KGludCB2YWx1ZSkgOiB4KHZhbHVlKSB7fQorICBpbnQgeDsK
K307CisKK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIHN0cmVhbSwgY29u
c3QgQ3VzdG9tU3RydWN0JiB2YWwpIHsKKyAgc3RyZWFtIDw8IHZhbC54OworICByZXR1cm4gc3Ry
ZWFtOworfQorCitjbGFzcyBDdXN0b21TdHJ1Y3ROYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRo
UGFyYW08Q3VzdG9tU3RydWN0PiB7fTsKKworVEVTVF9QKEN1c3RvbVN0cnVjdE5hbWluZ1Rlc3Qs
IFRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzKSB7CisgIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8q
IGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisgIE1lc3NhZ2UgdGVzdF9uYW1lX3N0cmVhbTsKKyAg
dGVzdF9uYW1lX3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMvIiA8PCBHZXRQYXJh
bSgpOworICBFWFBFQ1RfU1RSRVEodGVzdF9uYW1lX3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0cigp
LCB0ZXN0X2luZm8tPm5hbWUoKSk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFByaW50
VG9TdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21TdHJ1Y3ROYW1pbmdUZXN0
LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEN1c3RvbVN0cnVjdCgwKSwgQ3VzdG9t
U3RydWN0KDEpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6UHJpbnRUb1N0
cmluZ1BhcmFtTmFtZSgpKTsKKworLy8gVGVzdCB0aGF0IHVzaW5nIGEgc3RhdGVmdWwgcGFyYW1l
dGVyIG5hbWluZyBmdW5jdGlvbiB3b3JrcyBhcyBleHBlY3RlZC4KKworc3RydWN0IFN0YXRlZnVs
TmFtaW5nRnVuY3RvciB7CisgIFN0YXRlZnVsTmFtaW5nRnVuY3RvcigpIDogc3VtKDApIHt9Cisg
IHN0ZDo6c3RyaW5nIG9wZXJhdG9yKCkoY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPGlu
dD4mIGluZm8pIHsKKyAgICBpbnQgdmFsdWUgPSBpbmZvLnBhcmFtICsgc3VtOworICAgIHN1bSAr
PSBpbmZvLnBhcmFtOworICAgIHJldHVybiA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcodmFsdWUp
OworICB9CisgIGludCBzdW07Cit9OworCitjbGFzcyBTdGF0ZWZ1bE5hbWluZ1Rlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4geworIHByb3RlY3RlZDoKKyAgU3RhdGVm
dWxOYW1pbmdUZXN0KCkgOiBzdW1fKDApIHt9CisgIGludCBzdW1fOworfTsKKworVEVTVF9QKFN0
YXRlZnVsTmFtaW5nVGVzdCwgVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMpIHsKKyAgY29uc3QgOjp0
ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0aW5nOjpVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKyAgc3VtXyArPSBHZXRQ
YXJhbSgpOworICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07CisgIHRlc3RfbmFtZV9zdHJlYW0g
PDwgIlRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzLyIgPDwgc3VtXzsKKyAgRVhQRUNUX1NUUkVRKHRl
c3RfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19zdHIoKSwgdGVzdF9pbmZvLT5uYW1lKCkpOwor
fQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChTdGF0ZWZ1bE5hbWluZ0Z1bmN0b3IsCisgICAg
ICAgICAgICAgICAgICAgICAgICBTdGF0ZWZ1bE5hbWluZ1Rlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICBSYW5nZSgwLCA1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlZnVsTmFt
aW5nRnVuY3RvcigpKTsKKworLy8gQ2xhc3MgdGhhdCBjYW5ub3QgYmUgc3RyZWFtZWQgaW50byBh
biBvc3RyZWFtLiAgSXQgbmVlZHMgdG8gYmUgY29weWFibGUKKy8vIChhbmQsIGluIGNhc2Ugb2Yg
TVNWQywgYWxzbyBhc3NpZ25hYmxlKSBpbiBvcmRlciB0byBiZSBhIHRlc3QgcGFyYW1ldGVyCisv
LyB0eXBlLiAgSXRzIGRlZmF1bHQgY29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVy
YXRvciBkbyBleGFjdGx5CisvLyB3aGF0IHdlIG5lZWQuCitjbGFzcyBVbnN0cmVhbWFibGUgewor
IHB1YmxpYzoKKyAgZXhwbGljaXQgVW5zdHJlYW1hYmxlKGludCB2YWx1ZSkgOiB2YWx1ZV8odmFs
dWUpIHt9CisKKyBwcml2YXRlOgorICBpbnQgdmFsdWVfOworfTsKKworY2xhc3MgQ29tbWVudFRl
c3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxVbnN0cmVhbWFibGU+IHt9OworCitURVNUX1AoQ29t
bWVudFRlc3QsIFRlc3RzQ29ycmVjdGx5UmVwb3J0VW5zdHJlYW1hYmxlUGFyYW1zKSB7CisgIGNv
bnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGlu
Zzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisKKyAgRVhQ
RUNUX0VRKDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgpKSwgdGVzdF9pbmZvLT52
YWx1ZV9wYXJhbSgpKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSW5zdGFudGlhdGlv
bldpdGhDb21tZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbW1lbnRUZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKFVuc3RyZWFtYWJsZSgxKSkpOworCisvLyBWZXJp
ZnkgdGhhdCB3ZSBjYW4gY3JlYXRlIGEgaGllcmFyY2h5IG9mIHRlc3QgZml4dHVyZXMsIHdoZXJl
IHRoZSBiYXNlCisvLyBjbGFzcyBmaXh0dXJlIGlzIG5vdCBwYXJhbWV0ZXJpemVkIGFuZCB0aGUg
ZGVyaXZlZCBjbGFzcyBpcy4gSW4gdGhpcyBjYXNlCisvLyBQYXJhbWV0ZXJpemVkRGVyaXZlZFRl
c3QgaW5oZXJpdHMgZnJvbSBOb25QYXJhbWV0ZXJpemVkQmFzZVRlc3QuICBXZQorLy8gcGVyZm9y
bSBzaW1wbGUgdGVzdHMgb24gYm90aC4KK2NsYXNzIE5vblBhcmFtZXRlcml6ZWRCYXNlVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHB1YmxpYzoKKyAgTm9uUGFyYW1ldGVyaXplZEJh
c2VUZXN0KCkgOiBuXygxNykgeyB9CisgcHJvdGVjdGVkOgorICBpbnQgbl87Cit9OworCitjbGFz
cyBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3QgOiBwdWJsaWMgTm9uUGFyYW1ldGVyaXplZEJhc2VU
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIDo6dGVzdGluZzo6
V2l0aFBhcmFtSW50ZXJmYWNlPGludD4geworIHByb3RlY3RlZDoKKyAgUGFyYW1ldGVyaXplZERl
cml2ZWRUZXN0KCkgOiBjb3VudF8oMCkgeyB9CisgIGludCBjb3VudF87CisgIHN0YXRpYyBpbnQg
Z2xvYmFsX2NvdW50XzsKK307CisKK2ludCBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3Q6Omdsb2Jh
bF9jb3VudF8gPSAwOworCitURVNUX0YoTm9uUGFyYW1ldGVyaXplZEJhc2VUZXN0LCBGaXh0dXJl
SXNJbml0aWFsaXplZCkgeworICBFWFBFQ1RfRVEoMTcsIG5fKTsKK30KKworVEVTVF9QKFBhcmFt
ZXRlcml6ZWREZXJpdmVkVGVzdCwgU2Vlc1NlcXVlbmNlKSB7CisgIEVYUEVDVF9FUSgxNywgbl8p
OworICBFWFBFQ1RfRVEoMCwgY291bnRfKyspOworICBFWFBFQ1RfRVEoR2V0UGFyYW0oKSwgZ2xv
YmFsX2NvdW50XysrKTsKK30KKworY2xhc3MgUGFyYW1ldGVyaXplZERlYXRoVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7IH07CisKK1RFU1RfRihQYXJhbWV0ZXJp
emVkRGVhdGhUZXN0LCBHZXRQYXJhbURpZXNGcm9tVGVzdEYpIHsKKyAgRVhQRUNUX0RFQVRIX0lG
X1NVUFBPUlRFRChHZXRQYXJhbSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuKiB2
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QgLioiKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoUmFuZ2VaZXJvVG9GaXZlLCBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3QsIFJhbmdlKDAsIDUp
KTsKKworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgLy8gVXNlZCBpbiBU
ZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlLgorICBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQo
VGVzdEdlbmVyYXRpb25UZXN0OjpFbnZpcm9ubWVudDo6SW5zdGFuY2UoKSk7CisgIC8vIFVzZWQg
aW4gR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QgdGVzdCBjYXNlLiBUZXN0cyB0aGF0IHRoZSB1cGRh
dGVkIHZhbHVlCisgIC8vIHdpbGwgYmUgcGlja2VkIHVwIGZvciBpbnN0YW50aWF0aW5nIHRlc3Rz
IGluIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0LgorICBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6
c2V0X3BhcmFtX3ZhbHVlKDEpOworCisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2Ms
IGFyZ3YpOworCisgIC8vIFVzZWQgaW4gR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QgdGVzdCBjYXNl
LiBUZXN0cyB0aGF0IHZhbHVlIHVwZGF0ZWQKKyAgLy8gaGVyZSB3aWxsIE5PVCBiZSB1c2VkIGZv
ciBpbnN0YW50aWF0aW5nIHRlc3RzIGluCisgIC8vIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0Lgor
ICBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6c2V0X3BhcmFtX3ZhbHVlKDIpOworCisgIHJldHVy
biBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjMyYTYx
ZjQ5MjZiYTkyMjUxNTlkYjQ2OTgxMGU0MWNhYzBkMjBjNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuaApA
QCAtMCwwICsxLDUxIEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBt
ZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisvLworLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsg
KEdvb2dsZSBUZXN0KQorLy8KKy8vIFRoaXMgaGVhZGVyIGZpbGUgcHJvdmlkZXMgY2xhc3NlcyBh
bmQgZnVuY3Rpb25zIHVzZWQgaW50ZXJuYWxseQorLy8gZm9yIHRlc3RpbmcgR29vZ2xlIFRlc3Qg
aXRzZWxmLgorCisjaWZuZGVmIEdURVNUX1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9URVNUX0hfCisj
ZGVmaW5lIEdURVNUX1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9URVNUX0hfCisKKyNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgorCisvLyBUZXN0IGZpeHR1cmUgZm9yIHRlc3RpbmcgZGVmaW5pdGlvbiBh
bmQgaW5zdGFudGlhdGlvbiBvZiBhIHRlc3QKKy8vIGluIHNlcGFyYXRlIHRyYW5zbGF0aW9uIHVu
aXRzLgorY2xhc3MgRXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3RXaXRoUGFyYW08aW50PiB7Cit9OworCisvLyBUZXN0IGZpeHR1cmUgZm9yIHRlc3Rpbmcg
aW5zdGFudGlhdGlvbiBvZiBhIHRlc3QgaW4gbXVsdGlwbGUKKy8vIHRyYW5zbGF0aW9uIHVuaXRz
LgorY2xhc3MgSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0CisgICAg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4geworfTsKKworI2VuZGlmICAv
LyBHVEVTVF9URVNUX0dURVNUX1BBUkFNX1RFU1RfVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QyLXRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdDItdGVzdC5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNWJiOTQ1YzJmOGVkMjlmZDkwODU2YjIzZTAzYzAxZTJhODQzMDYwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0
LXBhcmFtLXRlc3QyLXRlc3QuY2MKQEAgLTAsMCArMSw2MSBAQAorLy8gQ29weXJpZ2h0IDIwMDgs
IEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gVGVzdHMgZm9yIEdvb2dsZSBUZXN0
IGl0c2VsZi4gIFRoaXMgdmVyaWZpZXMgdGhhdCB0aGUgYmFzaWMgY29uc3RydWN0cyBvZgorLy8g
R29vZ2xlIFRlc3Qgd29yay4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAi
dGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5oIgorCit1c2luZyA6OnRlc3Rpbmc6OlZh
bHVlczsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yOworCisvLyBU
ZXN0cyB0aGF0IGdlbmVyYXRvcnMgZGVmaW5lZCBpbiBhIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1
bml0CisvLyBhcmUgZnVuY3Rpb25hbC4gVGhlIHRlc3QgdXNpbmcgZXh0ZXJuX2dlbiBpcyBkZWZp
bmVkCisvLyBpbiBnb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYy4KK1BhcmFtR2VuZXJhdG9y
PGludD4gZXh0ZXJuX2dlbiA9IFZhbHVlcygzMyk7CisKKy8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0
ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgdHJhbnNsYXRpb24gdW5pdAor
Ly8gYW5kIGluc3RhbnRpYXRlZCBpbiBhbm90aGVyLiBUaGUgdGVzdCBpcyBkZWZpbmVkIGluCisv
LyBnb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYyBhbmQgRXh0ZXJuYWxJbnN0YW50aWF0aW9u
VGVzdCBmaXh0dXJlIGNsYXNzIGlzCisvLyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVz
dC5oLgorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoTXVsdGlwbGVzT2YzMywKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICBWYWx1ZXMoMzMsIDY2KSk7CisKKy8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVk
IHRlc3QgY2FzZSBjYW4gYmUgaW5zdGFudGlhdGVkCisvLyBpbiBtdWx0aXBsZSB0cmFuc2xhdGlv
biB1bml0cy4gQW5vdGhlciBpbnN0YW50aWF0aW9uIGlzIGRlZmluZWQKKy8vIGluIGdvb2dsZXRl
c3QtcGFyYW0tdGVzdC10ZXN0LmNjIGFuZAorLy8gSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFu
c2xhaW9uVW5pdHNUZXN0IGZpeHR1cmUgaXMgZGVmaW5lZCBpbgorLy8gZ3Rlc3QtcGFyYW0tdGVz
dF90ZXN0LmgKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg0MiozLCA0Mio0LCA0Mio1KSk7CisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wb3J0LXRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcG9ydC10ZXN0
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM5OTMxNmY5NWI2MzdhY2E5MmZiNWExNTQ0ZWM3ZmMyN2MyZWZiMjcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtcG9ydC10ZXN0LmNjCkBAIC0wLDAgKzEsMTMwMCBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdv
b2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisv
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIFRoaXMgZmlsZSB0ZXN0cyB0aGUgaW50ZXJu
YWwgY3Jvc3MtcGxhdGZvcm0gc3VwcG9ydCB1dGlsaXRpZXMuCisjaW5jbHVkZSA8c3RkaW8uaD4K
KworI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKworI2lmIEdURVNUX09T
X01BQworIyBpbmNsdWRlIDx0aW1lLmg+CisjZW5kaWYgIC8vIEdURVNUX09TX01BQworCisjaW5j
bHVkZSA8bGlzdD4KKyNpbmNsdWRlIDx1dGlsaXR5PiAgLy8gRm9yIHN0ZDo6cGFpciBhbmQgc3Rk
OjptYWtlX3BhaXIuCisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50
ZXJuYWwtaW5sLmgiCisKK3VzaW5nIHN0ZDo6bWFrZV9wYWlyOwordXNpbmcgc3RkOjpwYWlyOwor
CituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCitURVNUKElzWERp
Z2l0VGVzdCwgV29ya3NGb3JOYXJyb3dBc2NpaSkgeworICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgn
MCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoJzknKSk7CisgIEVYUEVDVF9UUlVFKElzWERp
Z2l0KCdBJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgnRicpKTsKKyAgRVhQRUNUX1RSVUUo
SXNYRGlnaXQoJ2EnKSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KCdmJykpOworCisgIEVYUEVD
VF9GQUxTRShJc1hEaWdpdCgnLScpKTsKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KCdnJykpOwor
ICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoJ0cnKSk7Cit9CisKK1RFU1QoSXNYRGlnaXRUZXN0LCBS
ZXR1cm5zRmFsc2VGb3JOYXJyb3dOb25Bc2NpaSkgeworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQo
c3RhdGljX2Nhc3Q8Y2hhcj4oJ1x4ODAnKSkpOworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoc3Rh
dGljX2Nhc3Q8Y2hhcj4oJzAnIHwgJ1x4ODAnKSkpOworfQorCitURVNUKElzWERpZ2l0VGVzdCwg
V29ya3NGb3JXaWRlQXNjaWkpIHsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoTCcwJykpOworICBF
WFBFQ1RfVFJVRShJc1hEaWdpdChMJzknKSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnQScp
KTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoTCdGJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdp
dChMJ2EnKSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnZicpKTsKKworICBFWFBFQ1RfRkFM
U0UoSXNYRGlnaXQoTCctJykpOworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoTCdnJykpOworICBF
WFBFQ1RfRkFMU0UoSXNYRGlnaXQoTCdHJykpOworfQorCitURVNUKElzWERpZ2l0VGVzdCwgUmV0
dXJuc0ZhbHNlRm9yV2lkZU5vbkFzY2lpKSB7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdChzdGF0
aWNfY2FzdDx3Y2hhcl90PigweDgwKSkpOworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoc3RhdGlj
X2Nhc3Q8d2NoYXJfdD4oTCcwJyB8IDB4ODApKSk7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdChz
dGF0aWNfY2FzdDx3Y2hhcl90PihMJzAnIHwgMHgxMDApKSk7Cit9CisKK2NsYXNzIEJhc2Ugewor
IHB1YmxpYzoKKyAgLy8gQ29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVyYXRvciBk
byBleGFjdGx5IHdoYXQgd2UgbmVlZCwgc28gd2UKKyAgLy8gdXNlIHRoZW0uCisgIEJhc2UoKSA6
IG1lbWJlcl8oMCkge30KKyAgZXhwbGljaXQgQmFzZShpbnQgbikgOiBtZW1iZXJfKG4pIHt9Cisg
IHZpcnR1YWwgfkJhc2UoKSB7fQorICBpbnQgbWVtYmVyKCkgeyByZXR1cm4gbWVtYmVyXzsgfQor
CisgcHJpdmF0ZToKKyAgaW50IG1lbWJlcl87Cit9OworCitjbGFzcyBEZXJpdmVkIDogcHVibGlj
IEJhc2UgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgRGVyaXZlZChpbnQgbikgOiBCYXNlKG4pIHt9
Cit9OworCitURVNUKEltcGxpY2l0Q2FzdFRlc3QsIENvbnZlcnRzUG9pbnRlcnMpIHsKKyAgRGVy
aXZlZCBkZXJpdmVkKDApOworICBFWFBFQ1RfVFJVRSgmZGVyaXZlZCA9PSA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2UqPigmZGVyaXZlZCkpOworfQorCitURVNUKEltcGxp
Y2l0Q2FzdFRlc3QsIENhblVzZUluaGVyaXRhbmNlKSB7CisgIERlcml2ZWQgZGVyaXZlZCgxKTsK
KyAgQmFzZSBiYXNlID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlPihk
ZXJpdmVkKTsKKyAgRVhQRUNUX0VRKGRlcml2ZWQubWVtYmVyKCksIGJhc2UubWVtYmVyKCkpOwor
fQorCitjbGFzcyBDYXN0YWJsZSB7CisgcHVibGljOgorICBleHBsaWNpdCBDYXN0YWJsZShib29s
KiBjb252ZXJ0ZWQpIDogY29udmVydGVkXyhjb252ZXJ0ZWQpIHt9CisgIG9wZXJhdG9yIEJhc2Uo
KSB7CisgICAgKmNvbnZlcnRlZF8gPSB0cnVlOworICAgIHJldHVybiBCYXNlKCk7CisgIH0KKwor
IHByaXZhdGU6CisgIGJvb2wqIGNvbnZlcnRlZF87Cit9OworCitURVNUKEltcGxpY2l0Q2FzdFRl
c3QsIENhblVzZU5vbkNvbnN0Q2FzdE9wZXJhdG9yKSB7CisgIGJvb2wgY29udmVydGVkID0gZmFs
c2U7CisgIENhc3RhYmxlIGNhc3RhYmxlKCZjb252ZXJ0ZWQpOworICBCYXNlIGJhc2UgPSA6OnRl
c3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+KGNhc3RhYmxlKTsKKyAgRVhQRUNU
X1RSVUUoY29udmVydGVkKTsKK30KKworY2xhc3MgQ29uc3RDYXN0YWJsZSB7CisgcHVibGljOgor
ICBleHBsaWNpdCBDb25zdENhc3RhYmxlKGJvb2wqIGNvbnZlcnRlZCkgOiBjb252ZXJ0ZWRfKGNv
bnZlcnRlZCkge30KKyAgb3BlcmF0b3IgQmFzZSgpIGNvbnN0IHsKKyAgICAqY29udmVydGVkXyA9
IHRydWU7CisgICAgcmV0dXJuIEJhc2UoKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgYm9vbCogY29u
dmVydGVkXzsKK307CisKK1RFU1QoSW1wbGljaXRDYXN0VGVzdCwgQ2FuVXNlQ29uc3RDYXN0T3Bl
cmF0b3JPbkNvbnN0VmFsdWVzKSB7CisgIGJvb2wgY29udmVydGVkID0gZmFsc2U7CisgIGNvbnN0
IENvbnN0Q2FzdGFibGUgY29uc3RfY2FzdGFibGUoJmNvbnZlcnRlZCk7CisgIEJhc2UgYmFzZSA9
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88QmFzZT4oY29uc3RfY2FzdGFibGUp
OworICBFWFBFQ1RfVFJVRShjb252ZXJ0ZWQpOworfQorCitjbGFzcyBDb25zdEFuZE5vbkNvbnN0
Q2FzdGFibGUgeworIHB1YmxpYzoKKyAgQ29uc3RBbmROb25Db25zdENhc3RhYmxlKGJvb2wqIGNv
bnZlcnRlZCwgYm9vbCogY29uc3RfY29udmVydGVkKQorICAgICAgOiBjb252ZXJ0ZWRfKGNvbnZl
cnRlZCksIGNvbnN0X2NvbnZlcnRlZF8oY29uc3RfY29udmVydGVkKSB7fQorICBvcGVyYXRvciBC
YXNlKCkgeworICAgICpjb252ZXJ0ZWRfID0gdHJ1ZTsKKyAgICByZXR1cm4gQmFzZSgpOworICB9
CisgIG9wZXJhdG9yIEJhc2UoKSBjb25zdCB7CisgICAgKmNvbnN0X2NvbnZlcnRlZF8gPSB0cnVl
OworICAgIHJldHVybiBCYXNlKCk7CisgIH0KKworIHByaXZhdGU6CisgIGJvb2wqIGNvbnZlcnRl
ZF87CisgIGJvb2wqIGNvbnN0X2NvbnZlcnRlZF87Cit9OworCitURVNUKEltcGxpY2l0Q2FzdFRl
c3QsIENhblNlbGVjdEJldHdlZW5Db25zdEFuZE5vbkNvbnN0Q2FzckFwcHJvcHJpYXRlbHkpIHsK
KyAgYm9vbCBjb252ZXJ0ZWQgPSBmYWxzZTsKKyAgYm9vbCBjb25zdF9jb252ZXJ0ZWQgPSBmYWxz
ZTsKKyAgQ29uc3RBbmROb25Db25zdENhc3RhYmxlIGNhc3RhYmxlKCZjb252ZXJ0ZWQsICZjb25z
dF9jb252ZXJ0ZWQpOworICBCYXNlIGJhc2UgPSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNp
dENhc3RfPEJhc2U+KGNhc3RhYmxlKTsKKyAgRVhQRUNUX1RSVUUoY29udmVydGVkKTsKKyAgRVhQ
RUNUX0ZBTFNFKGNvbnN0X2NvbnZlcnRlZCk7CisKKyAgY29udmVydGVkID0gZmFsc2U7CisgIGNv
bnN0X2NvbnZlcnRlZCA9IGZhbHNlOworICBjb25zdCBDb25zdEFuZE5vbkNvbnN0Q2FzdGFibGUg
Y29uc3RfY2FzdGFibGUoJmNvbnZlcnRlZCwgJmNvbnN0X2NvbnZlcnRlZCk7CisgIGJhc2UgPSA6
OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+KGNvbnN0X2Nhc3RhYmxlKTsK
KyAgRVhQRUNUX0ZBTFNFKGNvbnZlcnRlZCk7CisgIEVYUEVDVF9UUlVFKGNvbnN0X2NvbnZlcnRl
ZCk7Cit9CisKK2NsYXNzIFRvIHsKKyBwdWJsaWM6CisgIFRvKGJvb2wqIGNvbnZlcnRlZCkgeyAq
Y29udmVydGVkID0gdHJ1ZTsgfSAgLy8gTk9MSU5UCit9OworCitURVNUKEltcGxpY2l0Q2FzdFRl
c3QsIENhblVzZUltcGxpY2l0Q29uc3RydWN0b3IpIHsKKyAgYm9vbCBjb252ZXJ0ZWQgPSBmYWxz
ZTsKKyAgVG8gdG8gPSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPFRvPigmY29u
dmVydGVkKTsKKyAgKHZvaWQpdG87CisgIEVYUEVDVF9UUlVFKGNvbnZlcnRlZCk7Cit9CisKK1RF
U1QoSXRlcmF0b3JUcmFpdHNUZXN0LCBXb3Jrc0ZvclNUTENvbnRhaW5lckl0ZXJhdG9ycykgewor
ICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50LAorICAgICAgSXRlcmF0b3JUcmFpdHM8IDo6c3RkOjp2
ZWN0b3I8aW50Pjo6Y29uc3RfaXRlcmF0b3I+Ojp2YWx1ZV90eXBlPigpOworICBTdGF0aWNBc3Nl
cnRUeXBlRXE8Ym9vbCwKKyAgICAgIEl0ZXJhdG9yVHJhaXRzPCA6OnN0ZDo6bGlzdDxib29sPjo6
aXRlcmF0b3I+Ojp2YWx1ZV90eXBlPigpOworfQorCitURVNUKEl0ZXJhdG9yVHJhaXRzVGVzdCwg
V29ya3NGb3JQb2ludGVyVG9Ob25Db25zdCkgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y2hhciwg
SXRlcmF0b3JUcmFpdHM8Y2hhcio+Ojp2YWx1ZV90eXBlPigpOworICBTdGF0aWNBc3NlcnRUeXBl
RXE8Y29uc3Qgdm9pZCosIEl0ZXJhdG9yVHJhaXRzPGNvbnN0IHZvaWQqKj46OnZhbHVlX3R5cGU+
KCk7Cit9CisKK1RFU1QoSXRlcmF0b3JUcmFpdHNUZXN0LCBXb3Jrc0ZvclBvaW50ZXJUb0NvbnN0
KSB7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxjaGFyLCBJdGVyYXRvclRyYWl0czxjb25zdCBjaGFy
Kj46OnZhbHVlX3R5cGU+KCk7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCB2b2lkKiwKKyAg
ICAgIEl0ZXJhdG9yVHJhaXRzPGNvbnN0IHZvaWQqIGNvbnN0Kj46OnZhbHVlX3R5cGU+KCk7Cit9
CisKKy8vIFRlc3RzIHRoYXQgdGhlIGVsZW1lbnRfdHlwZSB0eXBlZGVmIGlzIGF2YWlsYWJsZSBp
biBzY29wZWRfcHRyIGFuZCByZWZlcnMKKy8vIHRvIHRoZSBwYXJhbWV0ZXIgdHlwZS4KK1RFU1Qo
U2NvcGVkUHRyVGVzdCwgRGVmaW5lc0VsZW1lbnRUeXBlKSB7CisgIFN0YXRpY0Fzc2VydFR5cGVF
cTxpbnQsIDo6dGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI8aW50Pjo6ZWxlbWVudF90eXBl
PigpOworfQorCisvLyBGSVhNRTogSW1wbGVtZW50IFRIRSBSRVNUIG9mIHNjb3BlZF9wdHIgdGVz
dHMuCisKK1RFU1QoR3Rlc3RDaGVja1N5bnRheFRlc3QsIEJlaGF2ZXNMaWtlQVNpbmdsZVN0YXRl
bWVudCkgeworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICBHVEVTVF9DSEVDS18oZmFsc2UpIDw8
ICJUaGlzIHNob3VsZCBuZXZlciBiZSBleGVjdXRlZDsgIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkl0J3MgYSBjb21waWxhdGlvbiB0ZXN0IG9ubHkuIjsKKworICBpZiAoQWx3YXlzVHJ1
ZSgpKQorICAgIEdURVNUX0NIRUNLXyh0cnVlKTsKKyAgZWxzZQorICAgIDsgIC8vIE5PTElOVAor
CisgIGlmIChBbHdheXNGYWxzZSgpKQorICAgIDsgIC8vIE5PTElOVAorICBlbHNlCisgICAgR1RF
U1RfQ0hFQ0tfKHRydWUpIDw8ICIiOworfQorCitURVNUKEd0ZXN0Q2hlY2tTeW50YXhUZXN0LCBX
b3Jrc1dpdGhTd2l0Y2gpIHsKKyAgc3dpdGNoICgwKSB7CisgICAgY2FzZSAxOgorICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdURVNUX0NIRUNLXyh0cnVlKTsKKyAgfQorCisgIHN3
aXRjaCAoMCkKKyAgICBjYXNlIDA6CisgICAgICBHVEVTVF9DSEVDS18odHJ1ZSkgPDwgIkNoZWNr
IGZhaWxlZCBpbiBzd2l0Y2ggY2FzZSI7Cit9CisKKy8vIFZlcmlmaWVzIGJlaGF2aW9yIG9mIEZv
cm1hdEZpbGVMb2NhdGlvbi4KK1RFU1QoRm9ybWF0RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c0Zp
bGVMb2NhdGlvbikgeworICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzU3Vic3RyaW5nLCAiZm9vLmNj
IiwgRm9ybWF0RmlsZUxvY2F0aW9uKCJmb28uY2MiLCA0MikpOworICBFWFBFQ1RfUFJFRF9GT1JN
QVQyKElzU3Vic3RyaW5nLCAiNDIiLCBGb3JtYXRGaWxlTG9jYXRpb24oImZvby5jYyIsIDQyKSk7
Cit9CisKK1RFU1QoRm9ybWF0RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c1Vua25vd25GaWxlKSB7
CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoCisgICAgICBJc1N1YnN0cmluZywgInVua25vd24gZmls
ZSIsIEZvcm1hdEZpbGVMb2NhdGlvbihOVUxMLCA0MikpOworICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KElzU3Vic3RyaW5nLCAiNDIiLCBGb3JtYXRGaWxlTG9jYXRpb24oTlVMTCwgNDIpKTsKK30KKwor
VEVTVChGb3JtYXRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzVWtub3duTGluZSkgeworICBFWFBF
Q1RfRVEoImZvby5jYzoiLCBGb3JtYXRGaWxlTG9jYXRpb24oImZvby5jYyIsIC0xKSk7Cit9CisK
K1RFU1QoRm9ybWF0RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c1Vrbm93bkZpbGVBbmRMaW5lKSB7
CisgIEVYUEVDVF9FUSgidW5rbm93biBmaWxlOiIsIEZvcm1hdEZpbGVMb2NhdGlvbihOVUxMLCAt
MSkpOworfQorCisvLyBWZXJpZmllcyBiZWhhdmlvciBvZiBGb3JtYXRDb21waWxlckluZGVwZW5k
ZW50RmlsZUxvY2F0aW9uLgorVEVTVChGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0
aW9uVGVzdCwgRm9ybWF0c0ZpbGVMb2NhdGlvbikgeworICBFWFBFQ1RfRVEoImZvby5jYzo0MiIs
IEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oImZvby5jYyIsIDQyKSk7Cit9
CisKK1RFU1QoRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvblRlc3QsIEZvcm1h
dHNVa25vd25GaWxlKSB7CisgIEVYUEVDVF9FUSgidW5rbm93biBmaWxlOjQyIiwKKyAgICAgICAg
ICAgIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oTlVMTCwgNDIpKTsKK30K
KworVEVTVChGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0
c1Vrbm93bkxpbmUpIHsKKyAgRVhQRUNUX0VRKCJmb28uY2MiLCBGb3JtYXRDb21waWxlckluZGVw
ZW5kZW50RmlsZUxvY2F0aW9uKCJmb28uY2MiLCAtMSkpOworfQorCitURVNUKEZvcm1hdENvbXBp
bGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzVWtub3duRmlsZUFuZExpbmUp
IHsKKyAgRVhQRUNUX0VRKCJ1bmtub3duIGZpbGUiLCBGb3JtYXRDb21waWxlckluZGVwZW5kZW50
RmlsZUxvY2F0aW9uKE5VTEwsIC0xKSk7Cit9CisKKyNpZiBHVEVTVF9PU19MSU5VWCB8fCBHVEVT
VF9PU19NQUMgfHwgR1RFU1RfT1NfUU5YIHx8IEdURVNUX09TX0ZVQ0hTSUEKK3ZvaWQqIFRocmVh
ZEZ1bmModm9pZCogZGF0YSkgeworICBpbnRlcm5hbDo6TXV0ZXgqIG11dGV4ID0gc3RhdGljX2Nh
c3Q8aW50ZXJuYWw6Ok11dGV4Kj4oZGF0YSk7CisgIG11dGV4LT5Mb2NrKCk7CisgIG11dGV4LT5V
bmxvY2soKTsKKyAgcmV0dXJuIE5VTEw7Cit9CisKK1RFU1QoR2V0VGhyZWFkQ291bnRUZXN0LCBS
ZXR1cm5zQ29ycmVjdFZhbHVlKSB7CisgIGNvbnN0IHNpemVfdCBzdGFydGluZ19jb3VudCA9IEdl
dFRocmVhZENvdW50KCk7CisgIHB0aHJlYWRfdCAgICAgICB0aHJlYWRfaWQ7CisKKyAgaW50ZXJu
YWw6Ok11dGV4IG11dGV4OworICB7CisgICAgaW50ZXJuYWw6Ok11dGV4TG9jayBsb2NrKCZtdXRl
eCk7CisgICAgcHRocmVhZF9hdHRyX3QgIGF0dHI7CisgICAgQVNTRVJUX0VRKDAsIHB0aHJlYWRf
YXR0cl9pbml0KCZhdHRyKSk7CisgICAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXR0cl9zZXRkZXRh
Y2hzdGF0ZSgmYXR0ciwgUFRIUkVBRF9DUkVBVEVfSk9JTkFCTEUpKTsKKworICAgIGNvbnN0IGlu
dCBzdGF0dXMgPSBwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkX2lkLCAmYXR0ciwgJlRocmVhZEZ1bmMs
ICZtdXRleCk7CisgICAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXR0cl9kZXN0cm95KCZhdHRyKSk7
CisgICAgQVNTRVJUX0VRKDAsIHN0YXR1cyk7CisgICAgRVhQRUNUX0VRKHN0YXJ0aW5nX2NvdW50
ICsgMSwgR2V0VGhyZWFkQ291bnQoKSk7CisgIH0KKworICB2b2lkKiBkdW1teTsKKyAgQVNTRVJU
X0VRKDAsIHB0aHJlYWRfam9pbih0aHJlYWRfaWQsICZkdW1teSkpOworCisgIC8vIFRoZSBPUyBt
YXkgbm90IGltbWVkaWF0ZWx5IHJlcG9ydCB0aGUgdXBkYXRlZCB0aHJlYWQgY291bnQgYWZ0ZXIK
KyAgLy8gam9pbmluZyBhIHRocmVhZCwgY2F1c2luZyBmbGFraW5lc3MgaW4gdGhpcyB0ZXN0LiBU
byBjb3VudGVyIHRoYXQsIHdlCisgIC8vIHdhaXQgZm9yIHVwIHRvIC41IHNlY29uZHMgZm9yIHRo
ZSBPUyB0byByZXBvcnQgdGhlIGNvcnJlY3QgdmFsdWUuCisgIGZvciAoaW50IGkgPSAwOyBpIDwg
NTsgKytpKSB7CisgICAgaWYgKEdldFRocmVhZENvdW50KCkgPT0gc3RhcnRpbmdfY291bnQpCisg
ICAgICBicmVhazsKKworICAgIFNsZWVwTWlsbGlzZWNvbmRzKDEwMCk7CisgIH0KKworICBFWFBF
Q1RfRVEoc3RhcnRpbmdfY291bnQsIEdldFRocmVhZENvdW50KCkpOworfQorI2Vsc2UKK1RFU1Qo
R2V0VGhyZWFkQ291bnRUZXN0LCBSZXR1cm5zWmVyb1doZW5VbmFibGVUb0NvdW50VGhyZWFkcykg
eworICBFWFBFQ1RfRVEoMFUsIEdldFRocmVhZENvdW50KCkpOworfQorI2VuZGlmICAvLyBHVEVT
VF9PU19MSU5VWCB8fCBHVEVTVF9PU19NQUMgfHwgR1RFU1RfT1NfUU5YIHx8IEdURVNUX09TX0ZV
Q0hTSUEKKworVEVTVChHdGVzdENoZWNrRGVhdGhUZXN0LCBEaWVzV2l0aENvcnJlY3RPdXRwdXRP
bkZhaWx1cmUpIHsKKyAgY29uc3QgYm9vbCBhX2ZhbHNlX2NvbmRpdGlvbiA9IGZhbHNlOworICBj
b25zdCBjaGFyIHJlZ2V4W10gPQorI2lmZGVmIF9NU0NfVkVSCisgICAgICJnb29nbGV0ZXN0LXBv
cnQtdGVzdFxcLmNjXFwoXFxkK1xcKToiCisjZWxpZiBHVEVTVF9VU0VTX1BPU0lYX1JFCisgICAg
ICJnb29nbGV0ZXN0LXBvcnQtdGVzdFxcLmNjOlswLTldKyIKKyNlbHNlCisgICAgICJnb29nbGV0
ZXN0LXBvcnQtdGVzdFxcLmNjOlxcZCsiCisjZW5kaWYgIC8vIF9NU0NfVkVSCisgICAgICIuKmFf
ZmFsc2VfY29uZGl0aW9uLipFeHRyYSBpbmZvLioiOworCisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQ
T1JURUQoR1RFU1RfQ0hFQ0tfKGFfZmFsc2VfY29uZGl0aW9uKSA8PCAiRXh0cmEgaW5mbyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXgpOworfQorCisjaWYgR1RFU1RfSEFTX0RF
QVRIX1RFU1QKKworVEVTVChHdGVzdENoZWNrRGVhdGhUZXN0LCBMaXZlc1NpbGVudGx5T25TdWNj
ZXNzKSB7CisgIEVYUEVDVF9FWElUKHsKKyAgICAgIEdURVNUX0NIRUNLXyh0cnVlKSA8PCAiRXh0
cmEgaW5mbyI7CisgICAgICA6OnN0ZDo6Y2VyciA8PCAiU3VjY2Vzc1xuIjsKKyAgICAgIGV4aXQo
MCk7IH0sCisgICAgICA6OnRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApLCAiU3VjY2VzcyIpOwor
fQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCisKKy8vIFZlcmlmaWVzIHRoYXQg
R29vZ2xlIFRlc3QgY2hvb3NlIHJlZ3VsYXIgZXhwcmVzc2lvbiBlbmdpbmUgYXBwcm9wcmlhdGUg
dG8KKy8vIHRoZSBwbGF0Zm9ybS4gVGhlIHRlc3Qgd2lsbCBwcm9kdWNlIGNvbXBpbGVyIGVycm9y
cyBpbiBjYXNlIG9mIGZhaWx1cmUuCisvLyBGb3Igc2ltcGxpY2l0eSwgd2Ugb25seSBjb3ZlciB0
aGUgbW9zdCBpbXBvcnRhbnQgcGxhdGZvcm1zIGhlcmUuCitURVNUKFJlZ2V4RW5naW5lU2VsZWN0
aW9uVGVzdCwgU2VsZWN0c0NvcnJlY3RSZWdleEVuZ2luZSkgeworI2lmICFHVEVTVF9VU0VTX1BD
UkUKKyMgaWYgR1RFU1RfSEFTX1BPU0lYX1JFCisKKyAgRVhQRUNUX1RSVUUoR1RFU1RfVVNFU19Q
T1NJWF9SRSk7CisKKyMgZWxzZQorCisgIEVYUEVDVF9UUlVFKEdURVNUX1VTRVNfU0lNUExFX1JF
KTsKKworIyBlbmRpZgorI2VuZGlmICAvLyAhR1RFU1RfVVNFU19QQ1JFCit9CisKKyNpZiBHVEVT
VF9VU0VTX1BPU0lYX1JFCisKKyMgaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFN0cj4KK2NsYXNzIFJFVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307
CisKKy8vIERlZmluZXMgU3RyaW5nVHlwZXMgYXMgdGhlIGxpc3Qgb2YgYWxsIHN0cmluZyB0eXBl
cyB0aGF0IGNsYXNzIFJFCisvLyBzdXBwb3J0cy4KK3R5cGVkZWYgdGVzdGluZzo6VHlwZXM8Cisg
ICAgOjpzdGQ6OnN0cmluZywKKyMgIGlmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisgICAgOjpz
dHJpbmcsCisjICBlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKyAgICBjb25zdCBj
aGFyKj4gU3RyaW5nVHlwZXM7CisKK1RZUEVEX1RFU1RfQ0FTRShSRVRlc3QsIFN0cmluZ1R5cGVz
KTsKKworLy8gVGVzdHMgUkUncyBpbXBsaWNpdCBjb25zdHJ1Y3RvcnMuCitUWVBFRF9URVNUKFJF
VGVzdCwgSW1wbGljaXRDb25zdHJ1Y3RvcldvcmtzKSB7CisgIGNvbnN0IFJFIGVtcHR5KFR5cGVQ
YXJhbSgiIikpOworICBFWFBFQ1RfU1RSRVEoIiIsIGVtcHR5LnBhdHRlcm4oKSk7CisKKyAgY29u
c3QgUkUgc2ltcGxlKFR5cGVQYXJhbSgiaGVsbG8iKSk7CisgIEVYUEVDVF9TVFJFUSgiaGVsbG8i
LCBzaW1wbGUucGF0dGVybigpKTsKKworICBjb25zdCBSRSBub3JtYWwoVHlwZVBhcmFtKCIuKihc
XHcrKSIpKTsKKyAgRVhQRUNUX1NUUkVRKCIuKihcXHcrKSIsIG5vcm1hbC5wYXR0ZXJuKCkpOwor
fQorCisvLyBUZXN0cyB0aGF0IFJFJ3MgY29uc3RydWN0b3JzIHJlamVjdCBpbnZhbGlkIHJlZ3Vs
YXIgZXhwcmVzc2lvbnMuCitUWVBFRF9URVNUKFJFVGVzdCwgUmVqZWN0c0ludmFsaWRSZWdleCkg
eworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAgY29uc3QgUkUgaW52YWxpZChUeXBl
UGFyYW0oIj8iKSk7CisgIH0sICJcIj9cIiBpcyBub3QgYSB2YWxpZCBQT1NJWCBFeHRlbmRlZCBy
ZWd1bGFyIGV4cHJlc3Npb24uIik7Cit9CisKKy8vIFRlc3RzIFJFOjpGdWxsTWF0Y2goKS4KK1RZ
UEVEX1RFU1QoUkVUZXN0LCBGdWxsTWF0Y2hXb3JrcykgeworICBjb25zdCBSRSBlbXB0eShUeXBl
UGFyYW0oIiIpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oIiIpLCBl
bXB0eSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oImEiKSwgZW1w
dHkpKTsKKworICBjb25zdCBSRSByZShUeXBlUGFyYW0oImEuKnoiKSk7CisgIEVYUEVDVF9UUlVF
KFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJheiIpLCByZSkpOworICBFWFBFQ1RfVFJVRShSRTo6
RnVsbE1hdGNoKFR5cGVQYXJhbSgiYXh5eiIpLCByZSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OkZ1
bGxNYXRjaChUeXBlUGFyYW0oImJheiIpLCByZSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxN
YXRjaChUeXBlUGFyYW0oImF6eSIpLCByZSkpOworfQorCisvLyBUZXN0cyBSRTo6UGFydGlhbE1h
dGNoKCkuCitUWVBFRF9URVNUKFJFVGVzdCwgUGFydGlhbE1hdGNoV29ya3MpIHsKKyAgY29uc3Qg
UkUgZW1wdHkoVHlwZVBhcmFtKCIiKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2go
VHlwZVBhcmFtKCIiKSwgZW1wdHkpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChU
eXBlUGFyYW0oImEiKSwgZW1wdHkpKTsKKworICBjb25zdCBSRSByZShUeXBlUGFyYW0oImEuKnoi
KSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCJheiIpLCByZSkp
OworICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiYXh5eiIpLCByZSkp
OworICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiYmF6IiksIHJlKSk7
CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCJhenkiKSwgcmUpKTsK
KyAgRVhQRUNUX0ZBTFNFKFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCJ6emEiKSwgcmUpKTsK
K30KKworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QKKworI2VsaWYgR1RFU1RfVVNF
U19TSU1QTEVfUkUKKworVEVTVChJc0luU2V0VGVzdCwgTnVsQ2hhcklzTm90SW5BbnlTZXQpIHsK
KyAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ1wwJywgIiIpKTsKKyAgRVhQRUNUX0ZBTFNFKElzSW5T
ZXQoJ1wwJywgIlwwIikpOworICBFWFBFQ1RfRkFMU0UoSXNJblNldCgnXDAnLCAiYSIpKTsKK30K
KworVEVTVChJc0luU2V0VGVzdCwgV29ya3NGb3JOb25OdWxDaGFycykgeworICBFWFBFQ1RfRkFM
U0UoSXNJblNldCgnYScsICJBYiIpKTsKKyAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ2MnLCAiIikp
OworCisgIEVYUEVDVF9UUlVFKElzSW5TZXQoJ2InLCAiYmNkIikpOworICBFWFBFQ1RfVFJVRShJ
c0luU2V0KCdiJywgImFiIikpOworfQorCitURVNUKElzQXNjaWlEaWdpdFRlc3QsIElzRmFsc2VG
b3JOb25EaWdpdCkgeworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaURpZ2l0KCdcMCcpKTsKKyAgRVhQ
RUNUX0ZBTFNFKElzQXNjaWlEaWdpdCgnICcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlEaWdp
dCgnKycpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlEaWdpdCgnLScpKTsKKyAgRVhQRUNUX0ZB
TFNFKElzQXNjaWlEaWdpdCgnLicpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlEaWdpdCgnYScp
KTsKK30KKworVEVTVChJc0FzY2lpRGlnaXRUZXN0LCBJc1RydWVGb3JEaWdpdCkgeworICBFWFBF
Q1RfVFJVRShJc0FzY2lpRGlnaXQoJzAnKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlEaWdpdCgn
MScpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaURpZ2l0KCc1JykpOworICBFWFBFQ1RfVFJVRShJ
c0FzY2lpRGlnaXQoJzknKSk7Cit9CisKK1RFU1QoSXNBc2NpaVB1bmN0VGVzdCwgSXNGYWxzZUZv
ck5vblB1bmN0KSB7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3QoJ1wwJykpOworICBFWFBF
Q1RfRkFMU0UoSXNBc2NpaVB1bmN0KCcgJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVB1bmN0
KCdcbicpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlQdW5jdCgnYScpKTsKKyAgRVhQRUNUX0ZB
TFNFKElzQXNjaWlQdW5jdCgnMCcpKTsKK30KKworVEVTVChJc0FzY2lpUHVuY3RUZXN0LCBJc1Ry
dWVGb3JQdW5jdCkgeworICBmb3IgKGNvbnN0IGNoYXIqIHAgPSAiXi0hXCIjJCUmJygpKissLi86
Ozw9Pj9AW1xcXV9ge3x9fiI7ICpwOyBwKyspIHsKKyAgICBFWFBFQ1RfUFJFRDEoSXNBc2NpaVB1
bmN0LCAqcCk7CisgIH0KK30KKworVEVTVChJc1JlcGVhdFRlc3QsIElzRmFsc2VGb3JOb25SZXBl
YXRDaGFyKSB7CisgIEVYUEVDVF9GQUxTRShJc1JlcGVhdCgnXDAnKSk7CisgIEVYUEVDVF9GQUxT
RShJc1JlcGVhdCgnICcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCdhJykpOworICBFWFBF
Q1RfRkFMU0UoSXNSZXBlYXQoJzEnKSk7CisgIEVYUEVDVF9GQUxTRShJc1JlcGVhdCgnLScpKTsK
K30KKworVEVTVChJc1JlcGVhdFRlc3QsIElzVHJ1ZUZvclJlcGVhdENoYXIpIHsKKyAgRVhQRUNU
X1RSVUUoSXNSZXBlYXQoJz8nKSk7CisgIEVYUEVDVF9UUlVFKElzUmVwZWF0KCcqJykpOworICBF
WFBFQ1RfVFJVRShJc1JlcGVhdCgnKycpKTsKK30KKworVEVTVChJc0FzY2lpV2hpdGVTcGFjZVRl
c3QsIElzRmFsc2VGb3JOb25XaGl0ZVNwYWNlKSB7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV2hp
dGVTcGFjZSgnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV2hpdGVTcGFjZSgnYScpKTsK
KyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXaGl0ZVNwYWNlKCcxJykpOworICBFWFBFQ1RfRkFMU0Uo
SXNBc2NpaVdoaXRlU3BhY2UoJysnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV2hpdGVTcGFj
ZSgnXycpKTsKK30KKworVEVTVChJc0FzY2lpV2hpdGVTcGFjZVRlc3QsIElzVHJ1ZUZvcldoaXRl
U3BhY2UpIHsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdoaXRlU3BhY2UoJyAnKSk7CisgIEVYUEVD
VF9UUlVFKElzQXNjaWlXaGl0ZVNwYWNlKCdcbicpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdo
aXRlU3BhY2UoJ1xyJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnXHQnKSk7
CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXaGl0ZVNwYWNlKCdcdicpKTsKKyAgRVhQRUNUX1RSVUUo
SXNBc2NpaVdoaXRlU3BhY2UoJ1xmJykpOworfQorCitURVNUKElzQXNjaWlXb3JkQ2hhclRlc3Qs
IElzRmFsc2VGb3JOb25Xb3JkQ2hhcikgeworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdvcmRDaGFy
KCdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXb3JkQ2hhcignKycpKTsKKyAgRVhQRUNU
X0ZBTFNFKElzQXNjaWlXb3JkQ2hhcignLicpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXb3Jk
Q2hhcignICcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXb3JkQ2hhcignXG4nKSk7Cit9CisK
K1RFU1QoSXNBc2NpaVdvcmRDaGFyVGVzdCwgSXNUcnVlRm9yTGV0dGVyKSB7CisgIEVYUEVDVF9U
UlVFKElzQXNjaWlXb3JkQ2hhcignYScpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFy
KCdiJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJ0EnKSk7CisgIEVYUEVDVF9U
UlVFKElzQXNjaWlXb3JkQ2hhcignWicpKTsKK30KKworVEVTVChJc0FzY2lpV29yZENoYXJUZXN0
LCBJc1RydWVGb3JEaWdpdCkgeworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJzAnKSk7
CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignMScpKTsKKyAgRVhQRUNUX1RSVUUoSXNB
c2NpaVdvcmRDaGFyKCc3JykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJzknKSk7
Cit9CisKK1RFU1QoSXNBc2NpaVdvcmRDaGFyVGVzdCwgSXNUcnVlRm9yVW5kZXJzY29yZSkgewor
ICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJ18nKSk7Cit9CisKK1RFU1QoSXNWYWxpZEVz
Y2FwZVRlc3QsIElzRmFsc2VGb3JOb25QcmludGFibGUpIHsKKyAgRVhQRUNUX0ZBTFNFKElzVmFs
aWRFc2NhcGUoJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnXDAwNycpKTsK
K30KKworVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZvckRpZ2l0KSB7CisgIEVYUEVD
VF9GQUxTRShJc1ZhbGlkRXNjYXBlKCcwJykpOworICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2Fw
ZSgnOScpKTsKK30KKworVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZvcldoaXRlU3Bh
Y2UpIHsKKyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJyAnKSk7CisgIEVYUEVDVF9GQUxT
RShJc1ZhbGlkRXNjYXBlKCdcbicpKTsKK30KKworVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNG
YWxzZUZvclNvbWVMZXR0ZXIpIHsKKyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJ2EnKSk7
CisgIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdaJykpOworfQorCitURVNUKElzVmFsaWRF
c2NhcGVUZXN0LCBJc1RydWVGb3JQdW5jdCkgeworICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBl
KCcuJykpOworICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCctJykpOworICBFWFBFQ1RfVFJV
RShJc1ZhbGlkRXNjYXBlKCdeJykpOworICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCckJykp
OworICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCcoJykpOworICBFWFBFQ1RfVFJVRShJc1Zh
bGlkRXNjYXBlKCddJykpOworICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCd7JykpOworICBF
WFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCd8JykpOworfQorCitURVNUKElzVmFsaWRFc2NhcGVU
ZXN0LCBJc1RydWVGb3JTb21lTGV0dGVyKSB7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUo
J2QnKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ0QnKSk7CisgIEVYUEVDVF9UUlVF
KElzVmFsaWRFc2NhcGUoJ3MnKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ1MnKSk7
CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ3cnKSk7CisgIEVYUEVDVF9UUlVFKElzVmFs
aWRFc2NhcGUoJ1cnKSk7Cit9CisKK1RFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZFB1
bmN0KSB7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1xcJywgJ1wwJykp
OworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdcXCcsICcgJykpOworICBF
WFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdfJywgJy4nKSk7CisgIEVYUEVDVF9G
QUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJy4nLCAnYScpKTsKKworICBFWFBFQ1RfVFJVRShB
dG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1xcJywgJ1xcJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0
Y2hlc0NoYXIodHJ1ZSwgJ18nLCAnXycpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFy
KHRydWUsICcrJywgJysnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
LicsICcuJykpOworfQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfZCkgewor
ICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywgJ1wwJykpOworICBFWFBF
Q1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywgJ2EnKSk7CisgIEVYUEVDVF9GQUxT
RShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnLicpKTsKKworICBFWFBFQ1RfVFJVRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnMCcpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXND
aGFyKHRydWUsICdkJywgJzknKSk7Cit9CisKK1RFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNj
YXBlZF9EKSB7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0QnLCAnMCcp
KTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcsICc5JykpOworCisg
IEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcsICdcMCcpKTsKKyAgRVhQRUNU
X1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJ2EnKSk7CisgIEVYUEVDVF9UUlVFKEF0
b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcsICctJykpOworfQorCitURVNUKEF0b21NYXRjaGVzQ2hh
clRlc3QsIEVzY2FwZWRfcykgeworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICdzJywgJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywg
J2EnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnLicpKTsK
KyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICc5JykpOworCisgIEVY
UEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICcgJykpOworICBFWFBFQ1RfVFJV
RShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnXG4nKSk7CisgIEVYUEVDVF9UUlVFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAncycsICdcdCcpKTsKK30KKworVEVTVChBdG9tTWF0Y2hlc0NoYXJU
ZXN0LCBFc2NhcGVkX1MpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
UycsICcgJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdTJywgJ1xy
JykpOworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICdcMCcpKTsK
KyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdTJywgJ2EnKSk7CisgIEVYUEVD
VF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICc5JykpOworfQorCitURVNUKEF0b21N
YXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfdykgeworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICd3JywgJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICd3JywgJysnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cn
LCAnICcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdcbicp
KTsKKworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnMCcpKTsKKyAg
RVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJ2InKSk7CisgIEVYUEVDVF9U
UlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdDJykpOworICBFWFBFQ1RfVFJVRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnXycpKTsKK30KKworVEVTVChBdG9tTWF0Y2hlc0NoYXJU
ZXN0LCBFc2NhcGVkX1cpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
VycsICdBJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJ2In
KSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnOScpKTsKKyAg
RVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICdfJykpOworCisgIEVYUEVD
VF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICdcMCcpKTsKKyAgRVhQRUNUX1RSVUUo
QXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJyonKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAnVycsICdcbicpKTsKK30KKworVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0
LCBFc2NhcGVkV2hpdGVTcGFjZSkgeworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICdmJywgJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdm
JywgJ1xuJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICduJywgJ1ww
JykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICduJywgJ1xyJykpOwor
ICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdyJywgJ1wwJykpOworICBFWFBF
Q1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdyJywgJ2EnKSk7CisgIEVYUEVDVF9GQUxT
RShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3QnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ3QnLCAndCcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAndicsICdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAndicsICdcZicpKTsKKworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwg
J2YnLCAnXGYnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnbicsICdc
bicpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdyJywgJ1xyJykpOwor
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3QnLCAnXHQnKSk7CisgIEVYUEVD
VF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndicsICdcdicpKTsKK30KKworVEVTVChBdG9t
TWF0Y2hlc0NoYXJUZXN0LCBVbmVzY2FwZWREb3QpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRj
aGVzQ2hhcihmYWxzZSwgJy4nLCAnXG4nKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXND
aGFyKGZhbHNlLCAnLicsICdcMCcpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZh
bHNlLCAnLicsICcuJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICcu
JywgJ2EnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4nLCAnICcp
KTsKK30KKworVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBVbmVzY2FwZWRDaGFyKSB7CisgIEVY
UEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICdhJywgJ1wwJykpOworICBFWFBFQ1Rf
RkFMU0UoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnYScsICdiJykpOworICBFWFBFQ1RfRkFMU0Uo
QXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnJCcsICdhJykpOworCisgIEVYUEVDVF9UUlVFKEF0b21N
YXRjaGVzQ2hhcihmYWxzZSwgJyQnLCAnJCcpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXND
aGFyKGZhbHNlLCAnNScsICc1JykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFs
c2UsICdaJywgJ1onKSk7Cit9CisKK1RFU1QoVmFsaWRhdGVSZWdleFRlc3QsIEdlbmVyYXRlc0Zh
aWx1cmVBbmRSZXR1cm5zRmFsc2VGb3JJbnZhbGlkKSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KE5VTEwpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIk5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiIp
OworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKKyAgICAgIEFTU0VSVF9GQUxTRShWYWxpZGF0
ZVJlZ2V4KCJhXFwiKSksCisgICAgICAiU3ludGF4IGVycm9yIGF0IGluZGV4IDEgaW4gc2ltcGxl
IHJlZ3VsYXIgZXhwcmVzc2lvbiBcImFcXFwiOiAiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImFcXCIpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIidcXCcgY2Fubm90IGFwcGVhciBhdCB0aGUgZW5kIik7CisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJcXG5cXCIpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIidcXCcgY2Fubm90IGFwcGVhciBhdCB0aGUgZW5kIik7Cisg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJcXHNc
XGhiIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBlc2NhcGUgc2VxdWVu
Y2UgXCJcXGhcIiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFs
aWRhdGVSZWdleCgiXl4iKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICInXicgY2FuIG9u
bHkgYXBwZWFyIGF0IHRoZSBiZWdpbm5pbmciKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
QVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIi4qXmIiKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICInXicgY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBiZWdpbm5pbmciKTsKKyAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIiQkIikpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAiJyQnIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgZW5kIik7
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJe
JGEiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICInJCcgY2FuIG9ubHkgYXBwZWFyIGF0
IHRoZSBlbmQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlk
YXRlUmVnZXgoImEoYiIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIicoJyBpcyB1bnN1
cHBvcnRlZCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRh
dGVSZWdleCgiYWIpIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJyknIGlzIHVuc3Vw
cG9ydGVkIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0
ZVJlZ2V4KCJbYWIiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICInWycgaXMgdW5zdXBw
b3J0ZWQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRl
UmVnZXgoImF7MiIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIid7JyBpcyB1bnN1cHBv
cnRlZCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVS
ZWdleCgiPyIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIic/JyBjYW4gb25seSBmb2xs
b3cgYSByZXBlYXRhYmxlIHRva2VuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VS
VF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJeKiIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IicqJyBjYW4gb25seSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2VuIik7CisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCI1KisiKSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICInKycgY2FuIG9ubHkgZm9sbG93IGEgcmVwZWF0YWJsZSB0b2tl
biIpOworfQorCitURVNUKFZhbGlkYXRlUmVnZXhUZXN0LCBSZXR1cm5zVHJ1ZUZvclZhbGlkKSB7
CisgIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIiIpKTsKKyAgRVhQRUNUX1RSVUUoVmFsaWRh
dGVSZWdleCgiYSIpKTsKKyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiLioiKSk7CisgIEVY
UEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIl5hXysiKSk7CisgIEVYUEVDVF9UUlVFKFZhbGlkYXRl
UmVnZXgoIl5hXFx0XFwmPyIpKTsKKyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiMDkqJCIp
KTsKKyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiXlokIikpOworICBFWFBFQ1RfVFJVRShW
YWxpZGF0ZVJlZ2V4KCJhXFxeWlxcJFxcKFxcKVxcfFxcW1xcXVxce1xcfSIpKTsKK30KKworVEVT
VChNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZFRlc3QsIFdvcmtzRm9yWmVyb09yT25lKSB7
CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJ2En
LCAnPycsICJhIiwgImJhIikpOworICAvLyBSZXBlYXRpbmcgbW9yZSB0aGFuIG9uY2UuCisgIEVY
UEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJ2EnLCAnPycs
ICJiIiwgImFhYiIpKTsKKworICAvLyBSZXBlYXRpbmcgemVybyB0aW1lcy4KKyAgRVhQRUNUX1RS
VUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICdhJywgJz8nLCAiYiIsICJi
YSIpKTsKKyAgLy8gUmVwZWF0aW5nIG9uY2UuCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlv
bkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImIiLCAiYWIiKSk7CisgIEVYUEVDVF9U
UlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnIycsICc/JywgIi4iLCAi
IyMiKSk7Cit9CisKK1RFU1QoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWRUZXN0LCBXb3Jr
c0Zvclplcm9Pck1hbnkpIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4
QXRIZWFkKGZhbHNlLCAnLicsICcqJywgImEkIiwgImJhYWIiKSk7CisKKyAgLy8gUmVwZWF0aW5n
IHplcm8gdGltZXMuCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFk
KGZhbHNlLCAnLicsICcqJywgImIiLCAiYmMiKSk7CisgIC8vIFJlcGVhdGluZyBvbmNlLgorICBF
WFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKics
ICJiIiwgImFiYyIpKTsKKyAgLy8gUmVwZWF0aW5nIG1vcmUgdGhhbiBvbmNlLgorICBFWFBFQ1Rf
VFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZCh0cnVlLCAndycsICcqJywgIi0iLCAi
YWJfMS1nIikpOworfQorCitURVNUKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkVGVzdCwg
V29ya3NGb3JPbmVPck1hbnkpIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlvbkFuZFJl
Z2V4QXRIZWFkKGZhbHNlLCAnLicsICcrJywgImEkIiwgImJhYWIiKSk7CisgIC8vIFJlcGVhdGlu
ZyB6ZXJvIHRpbWVzLgorICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhl
YWQoZmFsc2UsICcuJywgJysnLCAiYiIsICJiYyIpKTsKKworICAvLyBSZXBlYXRpbmcgb25jZS4K
KyAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywg
JysnLCAiYiIsICJhYmMiKSk7CisgIC8vIFJlcGVhdGluZyBtb3JlIHRoYW4gb25jZS4KKyAgRVhQ
RUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQodHJ1ZSwgJ3cnLCAnKycsICIt
IiwgImFiXzEtZyIpKTsKK30KKworVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgUmV0dXJuc1Ry
dWVGb3JFbXB0eVJlZ2V4KSB7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIiIsICIi
KSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIiIsICJhYiIpKTsKK30KKworVEVT
VChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NXaGVuRG9sbGFySXNJblJlZ2V4KSB7CisgIEVY
UEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCIkIiwgImEiKSk7CisKKyAgRVhQRUNUX1RSVUUo
TWF0Y2hSZWdleEF0SGVhZCgiJCIsICIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhl
YWQoImEkIiwgImEiKSk7Cit9CisKK1RFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIFdvcmtzV2hl
blJlZ2V4U3RhcnRzV2l0aEVzY2FwZVNlcXVlbmNlKSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJl
Z2V4QXRIZWFkKCJcXHciLCAiKyIpKTsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQo
IlxcVyIsICJhYiIpKTsKKworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXHNhIiwg
IlxuYWIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcZCIsICIxYSIpKTsK
K30KKworVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NXaGVuUmVnZXhTdGFydHNXaXRo
UmVwZXRpdGlvbikgeworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiLithIiwgImFi
YyIpKTsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoImE/YiIsICJhYWIiKSk7CisK
KyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiLiphIiwgImJjMTItYWIiKSk7CisgIEVY
UEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoImE/YiIsICJiIikpOworICBFWFBFQ1RfVFJVRShN
YXRjaFJlZ2V4QXRIZWFkKCJhP2IiLCAiYWIiKSk7Cit9CisKK1RFU1QoTWF0Y2hSZWdleEF0SGVh
ZFRlc3QsCisgICAgIFdvcmtzV2hlblJlZ2V4U3RhcnRzV2l0aFJlcGV0aW9uT2ZFc2NhcGVTZXF1
ZW5jZSkgeworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiXFwuK2EiLCAiYWJjIikp
OworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiXFxzP2IiLCAiICBiIikpOworCisg
IEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcKCphIiwgIigoKChhYiIpKTsKKyAgRVhQ
RUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxeP2IiLCAiXmIiKSk7CisgIEVYUEVDVF9UUlVF
KE1hdGNoUmVnZXhBdEhlYWQoIlxcXFw/YiIsICJiIikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJl
Z2V4QXRIZWFkKCJcXFxcP2IiLCAiXFxiIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBdEhlYWRU
ZXN0LCBNYXRjaGVzU2VxdWVudGlhbGx5KSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRI
ZWFkKCJhYi4qYyIsICJhY2FiYyIpKTsKKworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFk
KCJhYi4qYyIsICJhYi1mc2MiKSk7Cit9CisKK1RFU1QoTWF0Y2hSZWdleEFueXdoZXJlVGVzdCwg
UmV0dXJuc0ZhbHNlV2hlblN0cmluZ0lzTnVsbCkgeworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdl
eEFueXdoZXJlKCIiLCBOVUxMKSk7Cit9CisKK1RFU1QoTWF0Y2hSZWdleEFueXdoZXJlVGVzdCwg
V29ya3NXaGVuUmVnZXhTdGFydHNXaXRoQ2FyZXQpIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVn
ZXhBbnl3aGVyZSgiXmEiLCAiYmEiKSk7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hl
cmUoIl4kIiwgImEiKSk7CisKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJeYSIs
ICJhYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJeIiwgImFiIikpOwor
ICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIl4kIiwgIiIpKTsKK30KKworVEVTVChN
YXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5zRmFsc2VXaGVuTm9NYXRjaCkgeworICBFWFBF
Q1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJlKCJhIiwgImJjZGUxMjMiKSk7CisgIEVYUEVDVF9G
QUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoImEuK2EiLCAiLS1hYTg4ODg4ODg4IikpOworfQorCitU
RVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFJldHVybnNUcnVlV2hlbk1hdGNoaW5nUHJlZml4
KSB7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXFx3KyIsICJhYjFfIC0gNSIp
KTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCIuKj0iLCAiPSIpKTsKKyAgRVhQ
RUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJ4LiphYj8uKmJjIiwgInhhYWFiYyIpKTsKK30K
KworVEVTVChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5zVHJ1ZVdoZW5NYXRjaGluZ05v
blByZWZpeCkgeworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIlxcdysiLCAiJCQk
IGFiMV8gLSA1IikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIlxcLis9Iiwg
Ij0gIC4uLj0iKSk7Cit9CisKKy8vIFRlc3RzIFJFJ3MgaW1wbGljaXQgY29uc3RydWN0b3JzLgor
VEVTVChSRVRlc3QsIEltcGxpY2l0Q29uc3RydWN0b3JXb3JrcykgeworICBjb25zdCBSRSBlbXB0
eSgiIik7CisgIEVYUEVDVF9TVFJFUSgiIiwgZW1wdHkucGF0dGVybigpKTsKKworICBjb25zdCBS
RSBzaW1wbGUoImhlbGxvIik7CisgIEVYUEVDVF9TVFJFUSgiaGVsbG8iLCBzaW1wbGUucGF0dGVy
bigpKTsKK30KKworLy8gVGVzdHMgdGhhdCBSRSdzIGNvbnN0cnVjdG9ycyByZWplY3QgaW52YWxp
ZCByZWd1bGFyIGV4cHJlc3Npb25zLgorVEVTVChSRVRlc3QsIFJlamVjdHNJbnZhbGlkUmVnZXgp
IHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIGNvbnN0IFJFIG5vcm1hbChOVUxM
KTsKKyAgfSwgIk5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiIp
OworCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKKyAgICBjb25zdCBSRSBub3JtYWwoIi4q
KFxcdysiKTsKKyAgfSwgIicoJyBpcyB1bnN1cHBvcnRlZCIpOworCisgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKHsKKyAgICBjb25zdCBSRSBpbnZhbGlkKCJePyIpOworICB9LCAiJz8nIGNhbiBv
bmx5IGZvbGxvdyBhIHJlcGVhdGFibGUgdG9rZW4iKTsKK30KKworLy8gVGVzdHMgUkU6OkZ1bGxN
YXRjaCgpLgorVEVTVChSRVRlc3QsIEZ1bGxNYXRjaFdvcmtzKSB7CisgIGNvbnN0IFJFIGVtcHR5
KCIiKTsKKyAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaCgiIiwgZW1wdHkpKTsKKyAgRVhQRUNU
X0ZBTFNFKFJFOjpGdWxsTWF0Y2goImEiLCBlbXB0eSkpOworCisgIGNvbnN0IFJFIHJlMSgiYSIp
OworICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKCJhIiwgcmUxKSk7CisKKyAgY29uc3QgUkUg
cmUoImEuKnoiKTsKKyAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaCgiYXoiLCByZSkpOworICBF
WFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKCJheHl6IiwgcmUpKTsKKyAgRVhQRUNUX0ZBTFNFKFJF
OjpGdWxsTWF0Y2goImJheiIsIHJlKSk7CisgIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKCJh
enkiLCByZSkpOworfQorCisvLyBUZXN0cyBSRTo6UGFydGlhbE1hdGNoKCkuCitURVNUKFJFVGVz
dCwgUGFydGlhbE1hdGNoV29ya3MpIHsKKyAgY29uc3QgUkUgZW1wdHkoIiIpOworICBFWFBFQ1Rf
VFJVRShSRTo6UGFydGlhbE1hdGNoKCIiLCBlbXB0eSkpOworICBFWFBFQ1RfVFJVRShSRTo6UGFy
dGlhbE1hdGNoKCJhIiwgZW1wdHkpKTsKKworICBjb25zdCBSRSByZSgiYS4qeiIpOworICBFWFBF
Q1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCJheiIsIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQ
YXJ0aWFsTWF0Y2goImF4eXoiLCByZSkpOworICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNo
KCJiYXoiLCByZSkpOworICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCJhenkiLCByZSkp
OworICBFWFBFQ1RfRkFMU0UoUkU6OlBhcnRpYWxNYXRjaCgienphIiwgcmUpKTsKK30KKworI2Vu
ZGlmICAvLyBHVEVTVF9VU0VTX1BPU0lYX1JFCisKKyNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKKworVEVTVChDYXB0dXJlVGVzdCwgQ2FwdHVyZXNTdGRvdXQpIHsKKyAgQ2FwdHVyZVN0ZG91
dCgpOworICBmcHJpbnRmKHN0ZG91dCwgImFiYyIpOworICBFWFBFQ1RfU1RSRVEoImFiYyIsIEdl
dENhcHR1cmVkU3Rkb3V0KCkuY19zdHIoKSk7CisKKyAgQ2FwdHVyZVN0ZG91dCgpOworICBmcHJp
bnRmKHN0ZG91dCwgImRlZiVjZ2hpIiwgJ1wwJyk7CisgIEVYUEVDVF9FUSg6OnN0ZDo6c3RyaW5n
KCJkZWZcMGdoaSIsIDcpLCA6OnN0ZDo6c3RyaW5nKEdldENhcHR1cmVkU3Rkb3V0KCkpKTsKK30K
KworVEVTVChDYXB0dXJlVGVzdCwgQ2FwdHVyZXNTdGRlcnIpIHsKKyAgQ2FwdHVyZVN0ZGVycigp
OworICBmcHJpbnRmKHN0ZGVyciwgImprbCIpOworICBFWFBFQ1RfU1RSRVEoImprbCIsIEdldENh
cHR1cmVkU3RkZXJyKCkuY19zdHIoKSk7CisKKyAgQ2FwdHVyZVN0ZGVycigpOworICBmcHJpbnRm
KHN0ZGVyciwgImprbCVjbW5vIiwgJ1wwJyk7CisgIEVYUEVDVF9FUSg6OnN0ZDo6c3RyaW5nKCJq
a2xcMG1ubyIsIDcpLCA6OnN0ZDo6c3RyaW5nKEdldENhcHR1cmVkU3RkZXJyKCkpKTsKK30KKwor
Ly8gVGVzdHMgdGhhdCBzdGRvdXQgYW5kIHN0ZGVyciBjYXB0dXJlIGRvbid0IGludGVyZmVyZSB3
aXRoIGVhY2ggb3RoZXIuCitURVNUKENhcHR1cmVUZXN0LCBDYXB0dXJlc1N0ZG91dEFuZFN0ZGVy
cikgeworICBDYXB0dXJlU3Rkb3V0KCk7CisgIENhcHR1cmVTdGRlcnIoKTsKKyAgZnByaW50Zihz
dGRvdXQsICJwcXIiKTsKKyAgZnByaW50ZihzdGRlcnIsICJzdHUiKTsKKyAgRVhQRUNUX1NUUkVR
KCJwcXIiLCBHZXRDYXB0dXJlZFN0ZG91dCgpLmNfc3RyKCkpOworICBFWFBFQ1RfU1RSRVEoInN0
dSIsIEdldENhcHR1cmVkU3RkZXJyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoQ2FwdHVyZURlYXRo
VGVzdCwgQ2Fubm90UmVlbnRlclN0ZG91dENhcHR1cmUpIHsKKyAgQ2FwdHVyZVN0ZG91dCgpOwor
ICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKENhcHR1cmVTdGRvdXQoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiT25seSBvbmUgc3Rkb3V0IGNhcHR1cmVyIGNhbiBleGlzdCBhdCBh
IHRpbWUiKTsKKyAgR2V0Q2FwdHVyZWRTdGRvdXQoKTsKKworICAvLyBXZSBjYW5ub3QgdGVzdCBz
dGRlcnIgY2FwdHVyaW5nIHVzaW5nIGRlYXRoIHRlc3RzIGFzIHRoZXkgdXNlIGl0CisgIC8vIHRo
ZW1zZWx2ZXMuCit9CisKKyNlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisKK1RF
U1QoVGhyZWFkTG9jYWxUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3JJbml0aWFsaXplc1RvRGVmYXVs
dFZhbHVlcykgeworICBUaHJlYWRMb2NhbDxpbnQ+IHQxOworICBFWFBFQ1RfRVEoMCwgdDEuZ2V0
KCkpOworCisgIFRocmVhZExvY2FsPHZvaWQqPiB0MjsKKyAgRVhQRUNUX1RSVUUodDIuZ2V0KCkg
PT0gTlVMTCk7Cit9CisKK1RFU1QoVGhyZWFkTG9jYWxUZXN0LCBTaW5nbGVQYXJhbUNvbnN0cnVj
dG9ySW5pdGlhbGl6ZXNUb1BhcmFtKSB7CisgIFRocmVhZExvY2FsPGludD4gdDEoMTIzKTsKKyAg
RVhQRUNUX0VRKDEyMywgdDEuZ2V0KCkpOworCisgIGludCBpID0gMDsKKyAgVGhyZWFkTG9jYWw8
aW50Kj4gdDIoJmkpOworICBFWFBFQ1RfRVEoJmksIHQyLmdldCgpKTsKK30KKworY2xhc3MgTm9E
ZWZhdWx0Q29udHJ1Y3RvciB7CisgcHVibGljOgorICBleHBsaWNpdCBOb0RlZmF1bHRDb250cnVj
dG9yKGNvbnN0IGNoYXIqKSB7fQorICBOb0RlZmF1bHRDb250cnVjdG9yKGNvbnN0IE5vRGVmYXVs
dENvbnRydWN0b3ImKSB7fQorfTsKKworVEVTVChUaHJlYWRMb2NhbFRlc3QsIFZhbHVlRGVmYXVs
dENvbnRydWN0b3JJc05vdFJlcXVpcmVkRm9yUGFyYW1WZXJzaW9uKSB7CisgIFRocmVhZExvY2Fs
PE5vRGVmYXVsdENvbnRydWN0b3I+IGJhcihOb0RlZmF1bHRDb250cnVjdG9yKCJmb28iKSk7Cisg
IGJhci5wb2ludGVyKCk7Cit9CisKK1RFU1QoVGhyZWFkTG9jYWxUZXN0LCBHZXRBbmRQb2ludGVy
UmV0dXJuU2FtZVZhbHVlKSB7CisgIFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiB0aHJlYWRfbG9j
YWxfc3RyaW5nOworCisgIEVYUEVDVF9FUSh0aHJlYWRfbG9jYWxfc3RyaW5nLnBvaW50ZXIoKSwg
Jih0aHJlYWRfbG9jYWxfc3RyaW5nLmdldCgpKSk7CisKKyAgLy8gVmVyaWZpZXMgdGhlIGNvbmRp
dGlvbiBzdGlsbCBob2xkcyBhZnRlciBjYWxsaW5nIHNldC4KKyAgdGhyZWFkX2xvY2FsX3N0cmlu
Zy5zZXQoImZvbyIpOworICBFWFBFQ1RfRVEodGhyZWFkX2xvY2FsX3N0cmluZy5wb2ludGVyKCks
ICYodGhyZWFkX2xvY2FsX3N0cmluZy5nZXQoKSkpOworfQorCitURVNUKFRocmVhZExvY2FsVGVz
dCwgUG9pbnRlckFuZENvbnN0UG9pbnRlclJldHVyblNhbWVWYWx1ZSkgeworICBUaHJlYWRMb2Nh
bDxzdGQ6OnN0cmluZz4gdGhyZWFkX2xvY2FsX3N0cmluZzsKKyAgY29uc3QgVGhyZWFkTG9jYWw8
c3RkOjpzdHJpbmc+JiBjb25zdF90aHJlYWRfbG9jYWxfc3RyaW5nID0KKyAgICAgIHRocmVhZF9s
b2NhbF9zdHJpbmc7CisKKyAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbF9zdHJpbmcucG9pbnRlcigp
LCBjb25zdF90aHJlYWRfbG9jYWxfc3RyaW5nLnBvaW50ZXIoKSk7CisKKyAgdGhyZWFkX2xvY2Fs
X3N0cmluZy5zZXQoImZvbyIpOworICBFWFBFQ1RfRVEodGhyZWFkX2xvY2FsX3N0cmluZy5wb2lu
dGVyKCksIGNvbnN0X3RocmVhZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpKTsKK30KKworI2lmIEdU
RVNUX0lTX1RIUkVBRFNBRkUKKwordm9pZCBBZGRUd28oaW50KiBwYXJhbSkgeyAqcGFyYW0gKz0g
MjsgfQorCitURVNUKFRocmVhZFdpdGhQYXJhbVRlc3QsIENvbnN0cnVjdG9yRXhlY3V0ZXNUaHJl
YWRGdW5jKSB7CisgIGludCBpID0gNDA7CisgIFRocmVhZFdpdGhQYXJhbTxpbnQqPiB0aHJlYWQo
JkFkZFR3bywgJmksIE5VTEwpOworICB0aHJlYWQuSm9pbigpOworICBFWFBFQ1RfRVEoNDIsIGkp
OworfQorCitURVNUKE11dGV4RGVhdGhUZXN0LCBBc3NlcnRIZWxkU2hvdWxkQXNzZXJ0V2hlbk5v
dExvY2tlZCkgeworICAvLyBBc3NlcnRIZWxkKCkgaXMgZmxha3kgb25seSBpbiB0aGUgcHJlc2Vu
Y2Ugb2YgbXVsdGlwbGUgdGhyZWFkcyBhY2Nlc3NpbmcKKyAgLy8gdGhlIGxvY2suIEluIHRoaXMg
Y2FzZSwgdGhlIHRlc3QgaXMgcm9idXN0LgorICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHsK
KyAgICBNdXRleCBtOworICAgIHsgTXV0ZXhMb2NrIGxvY2soJm0pOyB9CisgICAgbS5Bc3NlcnRI
ZWxkKCk7CisgIH0sCisgICJ0aHJlYWQgLipob2xkIik7Cit9CisKK1RFU1QoTXV0ZXhUZXN0LCBB
c3NlcnRIZWxkU2hvdWxkTm90QXNzZXJ0V2hlbkxvY2tlZCkgeworICBNdXRleCBtOworICBNdXRl
eExvY2sgbG9jaygmbSk7CisgIG0uQXNzZXJ0SGVsZCgpOworfQorCitjbGFzcyBBdG9taWNDb3Vu
dGVyV2l0aE11dGV4IHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEF0b21pY0NvdW50ZXJXaXRoTXV0
ZXgoTXV0ZXgqIG11dGV4KSA6CisgICAgdmFsdWVfKDApLCBtdXRleF8obXV0ZXgpLCByYW5kb21f
KDQyKSB7fQorCisgIHZvaWQgSW5jcmVtZW50KCkgeworICAgIE11dGV4TG9jayBsb2NrKG11dGV4
Xyk7CisgICAgaW50IHRlbXAgPSB2YWx1ZV87CisgICAgeworICAgICAgLy8gV2UgbmVlZCB0byBw
dXQgdXAgYSBtZW1vcnkgYmFycmllciB0byBwcmV2ZW50IHJlYWRzIGFuZCB3cml0ZXMgdG8KKyAg
ICAgIC8vIHZhbHVlXyByZWFycmFuZ2VkIHdpdGggdGhlIGNhbGwgdG8gU2xlZXBNaWxsaXNlY29u
ZHMgd2hlbiBvYnNlcnZlZAorICAgICAgLy8gZnJvbSBvdGhlciB0aHJlYWRzLgorI2lmIEdURVNU
X0hBU19QVEhSRUFECisgICAgICAvLyBPbiBQT1NJWCwgbG9ja2luZyBhIG11dGV4IHB1dHMgdXAg
YSBtZW1vcnkgYmFycmllci4gIFdlIGNhbm5vdCB1c2UKKyAgICAgIC8vIE11dGV4IGFuZCBNdXRl
eExvY2sgaGVyZSBvciByZWx5IG9uIHRoZWlyIG1lbW9yeSBiYXJyaWVyCisgICAgICAvLyBmdW5j
dGlvbmFsaXR5IGFzIHdlIGFyZSB0ZXN0aW5nIHRoZW0gaGVyZS4KKyAgICAgIHB0aHJlYWRfbXV0
ZXhfdCBtZW1vcnlfYmFycmllcl9tdXRleDsKKyAgICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NF
U1NfKAorICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgmbWVtb3J5X2JhcnJpZXJfbXV0ZXgs
IE5VTEwpKTsKKyAgICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhf
bG9jaygmbWVtb3J5X2JhcnJpZXJfbXV0ZXgpKTsKKworICAgICAgU2xlZXBNaWxsaXNlY29uZHMo
cmFuZG9tXy5HZW5lcmF0ZSgzMCkpOworCisgICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNT
XyhwdGhyZWFkX211dGV4X3VubG9jaygmbWVtb3J5X2JhcnJpZXJfbXV0ZXgpKTsKKyAgICAgIEdU
RVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmbWVtb3J5X2Jh
cnJpZXJfbXV0ZXgpKTsKKyNlbGlmIEdURVNUX09TX1dJTkRPV1MKKyAgICAgIC8vIE9uIFdpbmRv
d3MsIHBlcmZvcm1pbmcgYW4gaW50ZXJsb2NrZWQgYWNjZXNzIHB1dHMgdXAgYSBtZW1vcnkgYmFy
cmllci4KKyAgICAgIHZvbGF0aWxlIExPTkcgZHVtbXkgPSAwOworICAgICAgOjpJbnRlcmxvY2tl
ZEluY3JlbWVudCgmZHVtbXkpOworICAgICAgU2xlZXBNaWxsaXNlY29uZHMocmFuZG9tXy5HZW5l
cmF0ZSgzMCkpOworICAgICAgOjpJbnRlcmxvY2tlZEluY3JlbWVudCgmZHVtbXkpOworI2Vsc2UK
KyMgZXJyb3IgIk1lbW9yeSBiYXJyaWVyIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3Jt
LiIKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1BUSFJFQUQKKyAgICB9CisgICAgdmFsdWVfID0gdGVt
cCArIDE7CisgIH0KKyAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CisKKyBw
cml2YXRlOgorICB2b2xhdGlsZSBpbnQgdmFsdWVfOworICBNdXRleCogY29uc3QgbXV0ZXhfOyAg
Ly8gUHJvdGVjdHMgdmFsdWVfLgorICBSYW5kb20gICAgICAgcmFuZG9tXzsKK307CisKK3ZvaWQg
Q291bnRpbmdUaHJlYWRGdW5jKHBhaXI8QXRvbWljQ291bnRlcldpdGhNdXRleCosIGludD4gcGFy
YW0pIHsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbS5zZWNvbmQ7ICsraSkKKyAgICAgIHBh
cmFtLmZpcnN0LT5JbmNyZW1lbnQoKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgbXV0ZXggb25s
eSBsZXRzIG9uZSB0aHJlYWQgYXQgYSB0aW1lIHRvIGxvY2sgaXQuCitURVNUKE11dGV4VGVzdCwg
T25seU9uZVRocmVhZENhbkxvY2tBdEFUaW1lKSB7CisgIE11dGV4IG11dGV4OworICBBdG9taWND
b3VudGVyV2l0aE11dGV4IGxvY2tlZF9jb3VudGVyKCZtdXRleCk7CisKKyAgdHlwZWRlZiBUaHJl
YWRXaXRoUGFyYW08cGFpcjxBdG9taWNDb3VudGVyV2l0aE11dGV4KiwgaW50PiA+IFRocmVhZFR5
cGU7CisgIGNvbnN0IGludCBrQ3ljbGVDb3VudCA9IDIwOworICBjb25zdCBpbnQga1RocmVhZENv
dW50ID0gNzsKKyAgc2NvcGVkX3B0cjxUaHJlYWRUeXBlPiBjb3VudGluZ190aHJlYWRzW2tUaHJl
YWRDb3VudF07CisgIE5vdGlmaWNhdGlvbiB0aHJlYWRzX2Nhbl9zdGFydDsKKyAgLy8gQ3JlYXRl
cyBhbmQgcnVucyBrVGhyZWFkQ291bnQgdGhyZWFkcyB0aGF0IGluY3JlbWVudCBsb2NrZWRfY291
bnRlcgorICAvLyBrQ3ljbGVDb3VudCB0aW1lcyBlYWNoLgorICBmb3IgKGludCBpID0gMDsgaSA8
IGtUaHJlYWRDb3VudDsgKytpKSB7CisgICAgY291bnRpbmdfdGhyZWFkc1tpXS5yZXNldChuZXcg
VGhyZWFkVHlwZSgmQ291bnRpbmdUaHJlYWRGdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWFrZV9wYWlyKCZsb2NrZWRfY291bnRlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ3ljbGVDb3Vu
dCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGhyZWFk
c19jYW5fc3RhcnQpKTsKKyAgfQorICB0aHJlYWRzX2Nhbl9zdGFydC5Ob3RpZnkoKTsKKyAgZm9y
IChpbnQgaSA9IDA7IGkgPCBrVGhyZWFkQ291bnQ7ICsraSkKKyAgICBjb3VudGluZ190aHJlYWRz
W2ldLT5Kb2luKCk7CisKKyAgLy8gSWYgdGhlIG11dGV4IGxldHMgbW9yZSB0aGFuIG9uZSB0aHJl
YWQgdG8gaW5jcmVtZW50IHRoZSBjb3VudGVyIGF0IGEKKyAgLy8gdGltZSwgdGhleSBhcmUgbGlr
ZWx5IHRvIGVuY291bnRlciBhIHJhY2UgY29uZGl0aW9uIGFuZCBoYXZlIHNvbWUKKyAgLy8gaW5j
cmVtZW50cyBvdmVyd3JpdHRlbiwgcmVzdWx0aW5nIGluIHRoZSBsb3dlciB0aGVuIGV4cGVjdGVk
IGNvdW50ZXIKKyAgLy8gdmFsdWUuCisgIEVYUEVDVF9FUShrQ3ljbGVDb3VudCAqIGtUaHJlYWRD
b3VudCwgbG9ja2VkX2NvdW50ZXIudmFsdWUoKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
Pgordm9pZCBSdW5Gcm9tVGhyZWFkKHZvaWQgKGZ1bmMpKFQpLCBUIHBhcmFtKSB7CisgIFRocmVh
ZFdpdGhQYXJhbTxUPiB0aHJlYWQoZnVuYywgcGFyYW0sIE5VTEwpOworICB0aHJlYWQuSm9pbigp
OworfQorCit2b2lkIFJldHJpZXZlVGhyZWFkTG9jYWxWYWx1ZSgKKyAgICBwYWlyPFRocmVhZExv
Y2FsPHN0ZDo6c3RyaW5nPiosIHN0ZDo6c3RyaW5nKj4gcGFyYW0pIHsKKyAgKnBhcmFtLnNlY29u
ZCA9IHBhcmFtLmZpcnN0LT5nZXQoKTsKK30KKworVEVTVChUaHJlYWRMb2NhbFRlc3QsIFBhcmFt
ZXRlcml6ZWRDb25zdHJ1Y3RvclNldHNEZWZhdWx0KSB7CisgIFRocmVhZExvY2FsPHN0ZDo6c3Ry
aW5nPiB0aHJlYWRfbG9jYWxfc3RyaW5nKCJmb28iKTsKKyAgRVhQRUNUX1NUUkVRKCJmb28iLCB0
aHJlYWRfbG9jYWxfc3RyaW5nLmdldCgpLmNfc3RyKCkpOworCisgIHRocmVhZF9sb2NhbF9zdHJp
bmcuc2V0KCJiYXIiKTsKKyAgRVhQRUNUX1NUUkVRKCJiYXIiLCB0aHJlYWRfbG9jYWxfc3RyaW5n
LmdldCgpLmNfc3RyKCkpOworCisgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKKyAgUnVuRnJvbVRocmVh
ZCgmUmV0cmlldmVUaHJlYWRMb2NhbFZhbHVlLAorICAgICAgICAgICAgICAgIG1ha2VfcGFpcigm
dGhyZWFkX2xvY2FsX3N0cmluZywgJnJlc3VsdCkpOworICBFWFBFQ1RfU1RSRVEoImZvbyIsIHJl
c3VsdC5jX3N0cigpKTsKK30KKworLy8gS2VlcHMgdHJhY2sgb2Ygd2hldGhlciBvZiBkZXN0cnVj
dG9ycyBiZWluZyBjYWxsZWQgb24gaW5zdGFuY2VzIG9mCisvLyBEZXN0cnVjdG9yVHJhY2tlci4g
IE9uIFdpbmRvd3MsIHdhaXRzIGZvciB0aGUgZGVzdHJ1Y3RvciBjYWxsIHJlcG9ydHMuCitjbGFz
cyBEZXN0cnVjdG9yQ2FsbCB7CisgcHVibGljOgorICBEZXN0cnVjdG9yQ2FsbCgpIHsKKyAgICBp
bnZva2VkXyA9IGZhbHNlOworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgICB3YWl0X2V2ZW50Xy5S
ZXNldCg6OkNyZWF0ZUV2ZW50KE5VTEwsIFRSVUUsIEZBTFNFLCBOVUxMKSk7CisgICAgR1RFU1Rf
Q0hFQ0tfKHdhaXRfZXZlbnRfLkdldCgpICE9IE5VTEwpOworI2VuZGlmCisgIH0KKworICBib29s
IENoZWNrRGVzdHJveWVkKCkgY29uc3QgeworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgICBpZiAo
OjpXYWl0Rm9yU2luZ2xlT2JqZWN0KHdhaXRfZXZlbnRfLkdldCgpLCAxMDAwKSAhPSBXQUlUX09C
SkVDVF8wKQorICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgcmV0dXJuIGludm9rZWRf
OworICB9CisKKyAgdm9pZCBSZXBvcnREZXN0cm95ZWQoKSB7CisgICAgaW52b2tlZF8gPSB0cnVl
OworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgICA6OlNldEV2ZW50KHdhaXRfZXZlbnRfLkdldCgp
KTsKKyNlbmRpZgorICB9CisKKyAgc3RhdGljIHN0ZDo6dmVjdG9yPERlc3RydWN0b3JDYWxsKj4m
IExpc3QoKSB7IHJldHVybiAqbGlzdF87IH0KKworICBzdGF0aWMgdm9pZCBSZXNldExpc3QoKSB7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0Xy0+c2l6ZSgpOyArK2kpIHsKKyAgICAg
IGRlbGV0ZSBsaXN0Xy0+YXQoaSk7CisgICAgfQorICAgIGxpc3RfLT5jbGVhcigpOworICB9CisK
KyBwcml2YXRlOgorICBib29sIGludm9rZWRfOworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgQXV0
b0hhbmRsZSB3YWl0X2V2ZW50XzsKKyNlbmRpZgorICBzdGF0aWMgc3RkOjp2ZWN0b3I8RGVzdHJ1
Y3RvckNhbGwqPiogY29uc3QgbGlzdF87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOXyhEZXN0cnVjdG9yQ2FsbCk7Cit9OworCitzdGQ6OnZlY3RvcjxEZXN0cnVjdG9yQ2FsbCo+
KiBjb25zdCBEZXN0cnVjdG9yQ2FsbDo6bGlzdF8gPQorICAgIG5ldyBzdGQ6OnZlY3RvcjxEZXN0
cnVjdG9yQ2FsbCo+OworCisvLyBEZXN0cnVjdG9yVHJhY2tlciBrZWVwcyB0cmFjayBvZiB3aGV0
aGVyIGl0cyBpbnN0YW5jZXMgaGF2ZSBiZWVuCisvLyBkZXN0cm95ZWQuCitjbGFzcyBEZXN0cnVj
dG9yVHJhY2tlciB7CisgcHVibGljOgorICBEZXN0cnVjdG9yVHJhY2tlcigpIDogaW5kZXhfKEdl
dE5ld0luZGV4KCkpIHt9CisgIERlc3RydWN0b3JUcmFja2VyKGNvbnN0IERlc3RydWN0b3JUcmFj
a2VyJiAvKiByaHMgKi8pCisgICAgICA6IGluZGV4XyhHZXROZXdJbmRleCgpKSB7fQorICB+RGVz
dHJ1Y3RvclRyYWNrZXIoKSB7CisgICAgLy8gV2UgbmV2ZXIgYWNjZXNzIERlc3RydWN0b3JDYWxs
OjpMaXN0KCkgY29uY3VycmVudGx5LCBzbyB3ZSBkb24ndCBuZWVkCisgICAgLy8gdG8gcHJvdGVj
dCB0aGlzIGFjY2VzcyB3aXRoIGEgbXV0ZXguCisgICAgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKVtp
bmRleF9dLT5SZXBvcnREZXN0cm95ZWQoKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgc3RhdGljIHNp
emVfdCBHZXROZXdJbmRleCgpIHsKKyAgICBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnB1c2hfYmFj
ayhuZXcgRGVzdHJ1Y3RvckNhbGwpOworICAgIHJldHVybiBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgp
LnNpemUoKSAtIDE7CisgIH0KKyAgY29uc3Qgc2l6ZV90IGluZGV4XzsKKworICBHVEVTVF9ESVNB
TExPV19BU1NJR05fKERlc3RydWN0b3JUcmFja2VyKTsKK307CisKK3R5cGVkZWYgVGhyZWFkTG9j
YWw8RGVzdHJ1Y3RvclRyYWNrZXI+KiBUaHJlYWRQYXJhbTsKKwordm9pZCBDYWxsVGhyZWFkTG9j
YWxHZXQoVGhyZWFkUGFyYW0gdGhyZWFkX2xvY2FsX3BhcmFtKSB7CisgIHRocmVhZF9sb2NhbF9w
YXJhbS0+Z2V0KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgd2hlbiBhIFRocmVhZExvY2FsIG9iamVj
dCBkaWVzIGluIGEgdGhyZWFkLCBpdCBkZXN0cm95cworLy8gdGhlIG1hbmFnZWQgb2JqZWN0IGZv
ciB0aGF0IHRocmVhZC4KK1RFU1QoVGhyZWFkTG9jYWxUZXN0LCBEZXN0cm95c01hbmFnZWRPYmpl
Y3RGb3JPd25UaHJlYWRXaGVuRHlpbmcpIHsKKyAgRGVzdHJ1Y3RvckNhbGw6OlJlc2V0TGlzdCgp
OworCisgIHsKKyAgICBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4gdGhyZWFkX2xvY2Fs
X3RyYWNrZXI7CisgICAgQVNTRVJUX0VRKDBVLCBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnNpemUo
KSk7CisKKyAgICAvLyBUaGlzIGNyZWF0ZXMgYW5vdGhlciBEZXN0cnVjdG9yVHJhY2tlciBvYmpl
Y3QgZm9yIHRoZSBtYWluIHRocmVhZC4KKyAgICB0aHJlYWRfbG9jYWxfdHJhY2tlci5nZXQoKTsK
KyAgICBBU1NFUlRfRVEoMVUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpKTsKKyAgICBB
U1NFUlRfRkFMU0UoRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKVswXS0+Q2hlY2tEZXN0cm95ZWQoKSk7
CisgIH0KKworICAvLyBOb3cgdGhyZWFkX2xvY2FsX3RyYWNrZXIgaGFzIGRpZWQuCisgIEFTU0VS
VF9FUSgxVSwgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKS5zaXplKCkpOworICBFWFBFQ1RfVFJVRShE
ZXN0cnVjdG9yQ2FsbDo6TGlzdCgpWzBdLT5DaGVja0Rlc3Ryb3llZCgpKTsKKworICBEZXN0cnVj
dG9yQ2FsbDo6UmVzZXRMaXN0KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgd2hlbiBhIHRocmVhZCBl
eGl0cywgdGhlIHRocmVhZC1sb2NhbCBvYmplY3QgZm9yIHRoYXQKKy8vIHRocmVhZCBpcyBkZXN0
cm95ZWQuCitURVNUKFRocmVhZExvY2FsVGVzdCwgRGVzdHJveXNNYW5hZ2VkT2JqZWN0QXRUaHJl
YWRFeGl0KSB7CisgIERlc3RydWN0b3JDYWxsOjpSZXNldExpc3QoKTsKKworICB7CisgICAgVGhy
ZWFkTG9jYWw8RGVzdHJ1Y3RvclRyYWNrZXI+IHRocmVhZF9sb2NhbF90cmFja2VyOworICAgIEFT
U0VSVF9FUSgwVSwgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKS5zaXplKCkpOworCisgICAgLy8gVGhp
cyBjcmVhdGVzIGFub3RoZXIgRGVzdHJ1Y3RvclRyYWNrZXIgb2JqZWN0IGluIHRoZSBuZXcgdGhy
ZWFkLgorICAgIFRocmVhZFdpdGhQYXJhbTxUaHJlYWRQYXJhbT4gdGhyZWFkKAorICAgICAgICAm
Q2FsbFRocmVhZExvY2FsR2V0LCAmdGhyZWFkX2xvY2FsX3RyYWNrZXIsIE5VTEwpOworICAgIHRo
cmVhZC5Kb2luKCk7CisKKyAgICAvLyBUaGUgdGhyZWFkIGhhcyBleGl0ZWQsIGFuZCB3ZSBzaG91
bGQgaGF2ZSBhIERlc3Ryb3llZFRyYWNrZXIKKyAgICAvLyBpbnN0YW5jZSBjcmVhdGVkIGZvciBp
dC4gQnV0IGl0IG1heSBub3QgaGF2ZSBiZWVuIGRlc3Ryb3llZCB5ZXQuCisgICAgQVNTRVJUX0VR
KDFVLCBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnNpemUoKSk7CisgIH0KKworICAvLyBUaGUgdGhy
ZWFkIGhhcyBleGl0ZWQgYW5kIHRocmVhZF9sb2NhbF90cmFja2VyIGhhcyBkaWVkLgorICBBU1NF
UlRfRVEoMVUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpKTsKKyAgRVhQRUNUX1RSVUUo
RGVzdHJ1Y3RvckNhbGw6Okxpc3QoKVswXS0+Q2hlY2tEZXN0cm95ZWQoKSk7CisKKyAgRGVzdHJ1
Y3RvckNhbGw6OlJlc2V0TGlzdCgpOworfQorCitURVNUKFRocmVhZExvY2FsVGVzdCwgVGhyZWFk
TG9jYWxNdXRhdGlvbnNBZmZlY3RPbmx5Q3VycmVudFRocmVhZCkgeworICBUaHJlYWRMb2NhbDxz
dGQ6OnN0cmluZz4gdGhyZWFkX2xvY2FsX3N0cmluZzsKKyAgdGhyZWFkX2xvY2FsX3N0cmluZy5z
ZXQoIkZvbyIpOworICBFWFBFQ1RfU1RSRVEoIkZvbyIsIHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0
KCkuY19zdHIoKSk7CisKKyAgc3RkOjpzdHJpbmcgcmVzdWx0OworICBSdW5Gcm9tVGhyZWFkKCZS
ZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUsCisgICAgICAgICAgICAgICAgbWFrZV9wYWlyKCZ0aHJl
YWRfbG9jYWxfc3RyaW5nLCAmcmVzdWx0KSk7CisgIEVYUEVDVF9UUlVFKHJlc3VsdC5lbXB0eSgp
KTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCisKKyNpZiBHVEVTVF9PU19X
SU5ET1dTCitURVNUKFdpbmRvd3NUeXBlc1Rlc3QsIEhBTkRMRUlzVm9pZFN0YXIpIHsKKyAgU3Rh
dGljQXNzZXJ0VHlwZUVxPEhBTkRMRSwgdm9pZCo+KCk7Cit9CisKKyNpZiBHVEVTVF9PU19XSU5E
T1dTX01JTkdXICYmICFkZWZpbmVkKF9fTUlOR1c2NF9WRVJTSU9OX01BSk9SKQorVEVTVChXaW5k
b3dzVHlwZXNUZXN0LCBfQ1JJVElDQUxfU0VDVElPTklzX0NSSVRJQ0FMX1NFQ1RJT04pIHsKKyAg
U3RhdGljQXNzZXJ0VHlwZUVxPENSSVRJQ0FMX1NFQ1RJT04sIF9DUklUSUNBTF9TRUNUSU9OPigp
OworfQorI2Vsc2UKK1RFU1QoV2luZG93c1R5cGVzVGVzdCwgQ1JJVElDQUxfU0VDVElPTklzX1JU
TF9DUklUSUNBTF9TRUNUSU9OKSB7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxDUklUSUNBTF9TRUNU
SU9OLCBfUlRMX0NSSVRJQ0FMX1NFQ1RJT04+KCk7Cit9CisjZW5kaWYKKworI2VuZGlmICAvLyBH
VEVTVF9PU19XSU5ET1dTCisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorfSAgLy8gbmFtZXNw
YWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC1wcmludGVycy10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
b29nbGV0ZXN0LXByaW50ZXJzLXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWE4MzY5ZDI3ZTUwNDcwZjFl
YWJlM2FmMjgwNGQzNDU0OTNhZGVkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wcmludGVycy10ZXN0LmNjCkBAIC0wLDAgKzEsMTc0
OCBAQAorLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8v
IEdvb2dsZSBUZXN0IC0gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdv
cmsKKy8vCisvLyBUaGlzIGZpbGUgdGVzdHMgdGhlIHVuaXZlcnNhbCB2YWx1ZSBwcmludGVyLgor
CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxzdHJp
bmcuaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8ZGVxdWU+CisjaW5jbHVkZSA8
bGlzdD4KKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8c2V0PgorI2luY2x1ZGUgPHNzdHJlYW0+
CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9y
PgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCIKKyNpbmNsdWRlICJndGVzdC9n
dGVzdC5oIgorCisjaWYgR1RFU1RfSEFTX1VOT1JERVJFRF9NQVBfCisjIGluY2x1ZGUgPHVub3Jk
ZXJlZF9tYXA+ICAvLyBOT0xJTlQKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1VOT1JERVJFRF9NQVBf
CisKKyNpZiBHVEVTVF9IQVNfVU5PUkRFUkVEX1NFVF8KKyMgaW5jbHVkZSA8dW5vcmRlcmVkX3Nl
dD4gIC8vIE5PTElOVAorI2VuZGlmICAvLyBHVEVTVF9IQVNfVU5PUkRFUkVEX1NFVF8KKworI2lm
IEdURVNUX0hBU19TVERfRk9SV0FSRF9MSVNUXworIyBpbmNsdWRlIDxmb3J3YXJkX2xpc3Q+IC8v
IE5PTElOVAorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8KKworLy8gU29t
ZSB1c2VyLWRlZmluZWQgdHlwZXMgZm9yIHRlc3RpbmcgdGhlIHVuaXZlcnNhbCB2YWx1ZSBwcmlu
dGVyLgorCisvLyBBbiBhbm9ueW1vdXMgZW51bSB0eXBlLgorZW51bSBBbm9ueW1vdXNFbnVtIHsK
KyAga0FFMSA9IC0xLAorICBrQUUyID0gMQorfTsKKworLy8gQW4gZW51bSB3aXRob3V0IGEgdXNl
ci1kZWZpbmVkIHByaW50ZXIuCitlbnVtIEVudW1XaXRob3V0UHJpbnRlciB7CisgIGtFV1AxID0g
LTIsCisgIGtFV1AyID0gNDIKK307CisKKy8vIEFuIGVudW0gd2l0aCBhIDw8IG9wZXJhdG9yLgor
ZW51bSBFbnVtV2l0aFN0cmVhbWluZyB7CisgIGtFV1MxID0gMTAKK307CisKK3N0ZDo6b3N0cmVh
bSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBFbnVtV2l0aFN0cmVhbWluZyBlKSB7Cisg
IHJldHVybiBvcyA8PCAoZSA9PSBrRVdTMSA/ICJrRVdTMSIgOiAiaW52YWxpZCIpOworfQorCisv
LyBBbiBlbnVtIHdpdGggYSBQcmludFRvKCkgZnVuY3Rpb24uCitlbnVtIEVudW1XaXRoUHJpbnRU
byB7CisgIGtFV1BUMSA9IDEKK307CisKK3ZvaWQgUHJpbnRUbyhFbnVtV2l0aFByaW50VG8gZSwg
c3RkOjpvc3RyZWFtKiBvcykgeworICAqb3MgPDwgKGUgPT0ga0VXUFQxID8gImtFV1BUMSIgOiAi
aW52YWxpZCIpOworfQorCisvLyBBIGNsYXNzIGltcGxpY2l0bHkgY29udmVydGlibGUgdG8gQmln
Z2VzdEludC4KK2NsYXNzIEJpZ2dlc3RJbnRDb252ZXJ0aWJsZSB7CisgcHVibGljOgorICBvcGVy
YXRvciA6OnRlc3Rpbmc6OmludGVybmFsOjpCaWdnZXN0SW50KCkgY29uc3QgeyByZXR1cm4gNDI7
IH0KK307CisKKy8vIEEgdXNlci1kZWZpbmVkIHVucHJpbnRhYmxlIGNsYXNzIHRlbXBsYXRlIGlu
IHRoZSBnbG9iYWwgbmFtZXNwYWNlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbnBy
aW50YWJsZVRlbXBsYXRlSW5HbG9iYWwgeworIHB1YmxpYzoKKyAgVW5wcmludGFibGVUZW1wbGF0
ZUluR2xvYmFsKCkgOiB2YWx1ZV8oKSB7fQorIHByaXZhdGU6CisgIFQgdmFsdWVfOworfTsKKwor
Ly8gQSB1c2VyLWRlZmluZWQgc3RyZWFtYWJsZSB0eXBlIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNl
LgorY2xhc3MgU3RyZWFtYWJsZUluR2xvYmFsIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgflN0cmVh
bWFibGVJbkdsb2JhbCgpIHt9Cit9OworCitpbmxpbmUgdm9pZCBvcGVyYXRvcjw8KDo6c3RkOjpv
c3RyZWFtJiBvcywgY29uc3QgU3RyZWFtYWJsZUluR2xvYmFsJiAvKiB4ICovKSB7CisgIG9zIDw8
ICJTdHJlYW1hYmxlSW5HbG9iYWwiOworfQorCit2b2lkIG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJl
YW0mIG9zLCBjb25zdCBTdHJlYW1hYmxlSW5HbG9iYWwqIC8qIHggKi8pIHsKKyAgb3MgPDwgIlN0
cmVhbWFibGVJbkdsb2JhbCoiOworfQorCituYW1lc3BhY2UgZm9vIHsKKworLy8gQSB1c2VyLWRl
ZmluZWQgdW5wcmludGFibGUgdHlwZSBpbiBhIHVzZXIgbmFtZXNwYWNlLgorY2xhc3MgVW5wcmlu
dGFibGVJbkZvbyB7CisgcHVibGljOgorICBVbnByaW50YWJsZUluRm9vKCkgOiB6XygwKSB7IG1l
bWNweSh4eV8sICJceEVGXHgxMlx4MFx4MFx4MzRceEFCXHgwXHgwIiwgOCk7IH0KKyAgZG91Ymxl
IHooKSBjb25zdCB7IHJldHVybiB6XzsgfQorIHByaXZhdGU6CisgIGNoYXIgeHlfWzhdOworICBk
b3VibGUgel87Cit9OworCisvLyBBIHVzZXItZGVmaW5lZCBwcmludGFibGUgdHlwZSBpbiBhIHVz
ZXItY2hvc2VuIG5hbWVzcGFjZS4KK3N0cnVjdCBQcmludGFibGVWaWFQcmludFRvIHsKKyAgUHJp
bnRhYmxlVmlhUHJpbnRUbygpIDogdmFsdWUoKSB7fQorICBpbnQgdmFsdWU7Cit9OworCit2b2lk
IFByaW50VG8oY29uc3QgUHJpbnRhYmxlVmlhUHJpbnRUbyYgeCwgOjpzdGQ6Om9zdHJlYW0qIG9z
KSB7CisgICpvcyA8PCAiUHJpbnRhYmxlVmlhUHJpbnRUbzogIiA8PCB4LnZhbHVlOworfQorCisv
LyBBIHR5cGUgd2l0aCBhIHVzZXItZGVmaW5lZCA8PCBmb3IgcHJpbnRpbmcgaXRzIHBvaW50ZXIu
CitzdHJ1Y3QgUG9pbnRlclByaW50YWJsZSB7Cit9OworCis6OnN0ZDo6b3N0cmVhbSYgb3BlcmF0
b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBQb2ludGVyUHJpbnRhYmxlKiAvKiB4ICovKSB7CisgIHJldHVybiBvcyA8PCAiUG9pbnRlclBy
aW50YWJsZSoiOworfQorCisvLyBBIHVzZXItZGVmaW5lZCBwcmludGFibGUgY2xhc3MgdGVtcGxh
dGUgaW4gYSB1c2VyLWNob3NlbiBuYW1lc3BhY2UuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIFByaW50YWJsZVZpYVByaW50VG9UZW1wbGF0ZSB7CisgcHVibGljOgorICBleHBsaWNpdCBQ
cmludGFibGVWaWFQcmludFRvVGVtcGxhdGUoY29uc3QgVCYgYV92YWx1ZSkgOiB2YWx1ZV8oYV92
YWx1ZSkge30KKworICBjb25zdCBUJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQor
IHByaXZhdGU6CisgIFQgdmFsdWVfOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lk
IFByaW50VG8oY29uc3QgUHJpbnRhYmxlVmlhUHJpbnRUb1RlbXBsYXRlPFQ+JiB4LCA6OnN0ZDo6
b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8ICJQcmludGFibGVWaWFQcmludFRvVGVtcGxhdGU6ICIg
PDwgeC52YWx1ZSgpOworfQorCisvLyBBIHVzZXItZGVmaW5lZCBzdHJlYW1hYmxlIGNsYXNzIHRl
bXBsYXRlIGluIGEgdXNlciBuYW1lc3BhY2UuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNz
IFN0cmVhbWFibGVUZW1wbGF0ZUluRm9vIHsKKyBwdWJsaWM6CisgIFN0cmVhbWFibGVUZW1wbGF0
ZUluRm9vKCkgOiB2YWx1ZV8oKSB7fQorCisgIGNvbnN0IFQmIHZhbHVlKCkgY29uc3QgeyByZXR1
cm4gdmFsdWVfOyB9CisgcHJpdmF0ZToKKyAgVCB2YWx1ZV87Cit9OworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2lubGluZSA6OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVh
bSYgb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyZWFtYWJs
ZVRlbXBsYXRlSW5Gb288VD4mIHgpIHsKKyAgcmV0dXJuIG9zIDw8ICJTdHJlYW1hYmxlVGVtcGxh
dGVJbkZvbzogIiA8PCB4LnZhbHVlKCk7Cit9CisKKy8vIEEgdXNlci1kZWZpbmVkIHN0cmVhbWFi
bGUgYnV0IHJlY3Vyc2l2bHktZGVmaW5lZCBjb250YWluZXIgdHlwZSBpbgorLy8gYSB1c2VyIG5h
bWVzcGFjZSwgaXQgbWltaWNzIHRoZXJlZm9yZSBzdGQ6OmZpbGVzeXN0ZW06OnBhdGggb3IKKy8v
IGJvb3N0OjpmaWxlc3lzdGVtOjpwYXRoLgorY2xhc3MgUGF0aExpa2UgeworIHB1YmxpYzoKKyAg
c3RydWN0IGl0ZXJhdG9yIHsKKyAgICB0eXBlZGVmIFBhdGhMaWtlIHZhbHVlX3R5cGU7CisgIH07
CisKKyAgUGF0aExpa2UoKSB7fQorCisgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4g
aXRlcmF0b3IoKTsgfQorICBpdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBpdGVyYXRvcigp
OyB9CisKKyAgZnJpZW5kIDo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFt
JiBvcywgY29uc3QgUGF0aExpa2UmKSB7CisgICAgcmV0dXJuIG9zIDw8ICJTdHJlYW1hYmxlLVBh
dGhMaWtlIjsKKyAgfQorfTsKKworfSAgLy8gbmFtZXNwYWNlIGZvbworCituYW1lc3BhY2UgdGVz
dGluZyB7CituYW1lc3BhY2UgZ3Rlc3RfcHJpbnRlcnNfdGVzdCB7CisKK3VzaW5nIDo6c3RkOjpk
ZXF1ZTsKK3VzaW5nIDo6c3RkOjpsaXN0OwordXNpbmcgOjpzdGQ6Om1ha2VfcGFpcjsKK3VzaW5n
IDo6c3RkOjptYXA7Cit1c2luZyA6OnN0ZDo6bXVsdGltYXA7Cit1c2luZyA6OnN0ZDo6bXVsdGlz
ZXQ7Cit1c2luZyA6OnN0ZDo6cGFpcjsKK3VzaW5nIDo6c3RkOjpzZXQ7Cit1c2luZyA6OnN0ZDo6
dmVjdG9yOwordXNpbmcgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nOwordXNpbmcgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlOwordXNpbmcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJu
YWw6Ok5hdGl2ZUFycmF5OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UkU7Cit1c2luZyA6
OnRlc3Rpbmc6OmludGVybmFsOjpSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlOwordXNpbmcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nczsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVu
aXZlcnNhbFByaW50OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnRl
cjsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnQ7CisjaWYg
R1RFU1RfSEFTX1RSMV9UVVBMRSB8fCBHVEVTVF9IQVNfU1REX1RVUExFXwordXNpbmcgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzOwor
I2VuZGlmCisKKy8vIFByaW50cyBhIHZhbHVlIHRvIGEgc3RyaW5nIHVzaW5nIHRoZSB1bml2ZXJz
YWwgdmFsdWUgcHJpbnRlci4gIFRoaXMKKy8vIGlzIGEgaGVscGVyIGZvciB0ZXN0aW5nIFVuaXZl
cnNhbFByaW50ZXI8VD46OlByaW50KCkgZm9yIHZhcmlvdXMgdHlwZXMuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3N0ZDo6c3RyaW5nIFByaW50KGNvbnN0IFQmIHZhbHVlKSB7CisgIDo6c3RkOjpz
dHJpbmdzdHJlYW0gc3M7CisgIFVuaXZlcnNhbFByaW50ZXI8VD46OlByaW50KHZhbHVlLCAmc3Mp
OworICByZXR1cm4gc3Muc3RyKCk7Cit9CisKKy8vIFByaW50cyBhIHZhbHVlIHBhc3NlZCBieSBy
ZWZlcmVuY2UgdG8gYSBzdHJpbmcsIHVzaW5nIHRoZSB1bml2ZXJzYWwKKy8vIHZhbHVlIHByaW50
ZXIuICBUaGlzIGlzIGEgaGVscGVyIGZvciB0ZXN0aW5nCisvLyBVbml2ZXJzYWxQcmludGVyPFQm
Pjo6UHJpbnQoKSBmb3IgdmFyaW91cyB0eXBlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3Rk
OjpzdHJpbmcgUHJpbnRCeVJlZihjb25zdCBUJiB2YWx1ZSkgeworICA6OnN0ZDo6c3RyaW5nc3Ry
ZWFtIHNzOworICBVbml2ZXJzYWxQcmludGVyPFQmPjo6UHJpbnQodmFsdWUsICZzcyk7CisgIHJl
dHVybiBzcy5zdHIoKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgdmFyaW91cyBlbnVtIHR5cGVz
LgorCitURVNUKFByaW50RW51bVRlc3QsIEFub255bW91c0VudW0pIHsKKyAgRVhQRUNUX0VRKCIt
MSIsIFByaW50KGtBRTEpKTsKKyAgRVhQRUNUX0VRKCIxIiwgUHJpbnQoa0FFMikpOworfQorCitU
RVNUKFByaW50RW51bVRlc3QsIEVudW1XaXRob3V0UHJpbnRlcikgeworICBFWFBFQ1RfRVEoIi0y
IiwgUHJpbnQoa0VXUDEpKTsKKyAgRVhQRUNUX0VRKCI0MiIsIFByaW50KGtFV1AyKSk7Cit9CisK
K1RFU1QoUHJpbnRFbnVtVGVzdCwgRW51bVdpdGhTdHJlYW1pbmcpIHsKKyAgRVhQRUNUX0VRKCJr
RVdTMSIsIFByaW50KGtFV1MxKSk7CisgIEVYUEVDVF9FUSgiaW52YWxpZCIsIFByaW50KHN0YXRp
Y19jYXN0PEVudW1XaXRoU3RyZWFtaW5nPigwKSkpOworfQorCitURVNUKFByaW50RW51bVRlc3Qs
IEVudW1XaXRoUHJpbnRUbykgeworICBFWFBFQ1RfRVEoImtFV1BUMSIsIFByaW50KGtFV1BUMSkp
OworICBFWFBFQ1RfRVEoImludmFsaWQiLCBQcmludChzdGF0aWNfY2FzdDxFbnVtV2l0aFByaW50
VG8+KDApKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIGEgY2xhc3MgaW1wbGljaXRseSBjb252
ZXJ0aWJsZSB0byBCaWdnZXN0SW50LgorCitURVNUKFByaW50Q2xhc3NUZXN0LCBCaWdnZXN0SW50
Q29udmVydGlibGUpIHsKKyAgRVhQRUNUX0VRKCI0MiIsIFByaW50KEJpZ2dlc3RJbnRDb252ZXJ0
aWJsZSgpKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIHZhcmlvdXMgY2hhciB0eXBlcy4KKwor
Ly8gY2hhci4KK1RFU1QoUHJpbnRDaGFyVGVzdCwgUGxhaW5DaGFyKSB7CisgIEVYUEVDVF9FUSgi
J1xcMCciLCBQcmludCgnXDAnKSk7CisgIEVYUEVDVF9FUSgiJ1xcJycgKDM5LCAweDI3KSIsIFBy
aW50KCdcJycpKTsKKyAgRVhQRUNUX0VRKCInXCInICgzNCwgMHgyMikiLCBQcmludCgnIicpKTsK
KyAgRVhQRUNUX0VRKCInPycgKDYzLCAweDNGKSIsIFByaW50KCc/JykpOworICBFWFBFQ1RfRVEo
IidcXFxcJyAoOTIsIDB4NUMpIiwgUHJpbnQoJ1xcJykpOworICBFWFBFQ1RfRVEoIidcXGEnICg3
KSIsIFByaW50KCdcYScpKTsKKyAgRVhQRUNUX0VRKCInXFxiJyAoOCkiLCBQcmludCgnXGInKSk7
CisgIEVYUEVDVF9FUSgiJ1xcZicgKDEyLCAweEMpIiwgUHJpbnQoJ1xmJykpOworICBFWFBFQ1Rf
RVEoIidcXG4nICgxMCwgMHhBKSIsIFByaW50KCdcbicpKTsKKyAgRVhQRUNUX0VRKCInXFxyJyAo
MTMsIDB4RCkiLCBQcmludCgnXHInKSk7CisgIEVYUEVDVF9FUSgiJ1xcdCcgKDkpIiwgUHJpbnQo
J1x0JykpOworICBFWFBFQ1RfRVEoIidcXHYnICgxMSwgMHhCKSIsIFByaW50KCdcdicpKTsKKyAg
RVhQRUNUX0VRKCInXFx4N0YnICgxMjcpIiwgUHJpbnQoJ1x4N0YnKSk7CisgIEVYUEVDVF9FUSgi
J1xceEZGJyAoMjU1KSIsIFByaW50KCdceEZGJykpOworICBFWFBFQ1RfRVEoIicgJyAoMzIsIDB4
MjApIiwgUHJpbnQoJyAnKSk7CisgIEVYUEVDVF9FUSgiJ2EnICg5NywgMHg2MSkiLCBQcmludCgn
YScpKTsKK30KKworLy8gc2lnbmVkIGNoYXIuCitURVNUKFByaW50Q2hhclRlc3QsIFNpZ25lZENo
YXIpIHsKKyAgRVhQRUNUX0VRKCInXFwwJyIsIFByaW50KHN0YXRpY19jYXN0PHNpZ25lZCBjaGFy
PignXDAnKSkpOworICBFWFBFQ1RfRVEoIidcXHhDRScgKC01MCkiLAorICAgICAgICAgICAgUHJp
bnQoc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+KC01MCkpKTsKK30KKworLy8gdW5zaWduZWQgY2hh
ci4KK1RFU1QoUHJpbnRDaGFyVGVzdCwgVW5zaWduZWRDaGFyKSB7CisgIEVYUEVDVF9FUSgiJ1xc
MCciLCBQcmludChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPignXDAnKSkpOworICBFWFBFQ1Rf
RVEoIidiJyAoOTgsIDB4NjIpIiwKKyAgICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KCdiJykpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgb3RoZXIgc2ltcGxlLCBi
dWlsdC1pbiB0eXBlcy4KKworLy8gYm9vbC4KK1RFU1QoUHJpbnRCdWlsdEluVHlwZVRlc3QsIEJv
b2wpIHsKKyAgRVhQRUNUX0VRKCJmYWxzZSIsIFByaW50KGZhbHNlKSk7CisgIEVYUEVDVF9FUSgi
dHJ1ZSIsIFByaW50KHRydWUpKTsKK30KKworLy8gd2NoYXJfdC4KK1RFU1QoUHJpbnRCdWlsdElu
VHlwZVRlc3QsIFdjaGFyX3QpIHsKKyAgRVhQRUNUX0VRKCJMJ1xcMCciLCBQcmludChMJ1wwJykp
OworICBFWFBFQ1RfRVEoIkwnXFwnJyAoMzksIDB4MjcpIiwgUHJpbnQoTCdcJycpKTsKKyAgRVhQ
RUNUX0VRKCJMJ1wiJyAoMzQsIDB4MjIpIiwgUHJpbnQoTCciJykpOworICBFWFBFQ1RfRVEoIkwn
PycgKDYzLCAweDNGKSIsIFByaW50KEwnPycpKTsKKyAgRVhQRUNUX0VRKCJMJ1xcXFwnICg5Miwg
MHg1QykiLCBQcmludChMJ1xcJykpOworICBFWFBFQ1RfRVEoIkwnXFxhJyAoNykiLCBQcmludChM
J1xhJykpOworICBFWFBFQ1RfRVEoIkwnXFxiJyAoOCkiLCBQcmludChMJ1xiJykpOworICBFWFBF
Q1RfRVEoIkwnXFxmJyAoMTIsIDB4QykiLCBQcmludChMJ1xmJykpOworICBFWFBFQ1RfRVEoIkwn
XFxuJyAoMTAsIDB4QSkiLCBQcmludChMJ1xuJykpOworICBFWFBFQ1RfRVEoIkwnXFxyJyAoMTMs
IDB4RCkiLCBQcmludChMJ1xyJykpOworICBFWFBFQ1RfRVEoIkwnXFx0JyAoOSkiLCBQcmludChM
J1x0JykpOworICBFWFBFQ1RfRVEoIkwnXFx2JyAoMTEsIDB4QikiLCBQcmludChMJ1x2JykpOwor
ICBFWFBFQ1RfRVEoIkwnXFx4N0YnICgxMjcpIiwgUHJpbnQoTCdceDdGJykpOworICBFWFBFQ1Rf
RVEoIkwnXFx4RkYnICgyNTUpIiwgUHJpbnQoTCdceEZGJykpOworICBFWFBFQ1RfRVEoIkwnICcg
KDMyLCAweDIwKSIsIFByaW50KEwnICcpKTsKKyAgRVhQRUNUX0VRKCJMJ2EnICg5NywgMHg2MSki
LCBQcmludChMJ2EnKSk7CisgIEVYUEVDVF9FUSgiTCdcXHg1NzYnICgxMzk4KSIsIFByaW50KHN0
YXRpY19jYXN0PHdjaGFyX3Q+KDB4NTc2KSkpOworICBFWFBFQ1RfRVEoIkwnXFx4Qzc0RCcgKDUx
MDIxKSIsIFByaW50KHN0YXRpY19jYXN0PHdjaGFyX3Q+KDB4Qzc0RCkpKTsKK30KKworLy8gVGVz
dCB0aGF0IEludDY0IHByb3ZpZGVzIG1vcmUgc3RvcmFnZSB0aGFuIHdjaGFyX3QuCitURVNUKFBy
aW50VHlwZVNpemVUZXN0LCBXY2hhcl90KSB7CisgIEVYUEVDVF9MVChzaXplb2Yod2NoYXJfdCks
IHNpemVvZih0ZXN0aW5nOjppbnRlcm5hbDo6SW50NjQpKTsKK30KKworLy8gVmFyaW91cyBpbnRl
Z2VyIHR5cGVzLgorVEVTVChQcmludEJ1aWx0SW5UeXBlVGVzdCwgSW50ZWdlcikgeworICBFWFBF
Q1RfRVEoIidcXHhGRicgKDI1NSkiLCBQcmludChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigy
NTUpKSk7ICAvLyB1aW50OAorICBFWFBFQ1RfRVEoIidcXHg4MCcgKC0xMjgpIiwgUHJpbnQoc3Rh
dGljX2Nhc3Q8c2lnbmVkIGNoYXI+KC0xMjgpKSk7ICAvLyBpbnQ4CisgIEVYUEVDVF9FUSgiNjU1
MzUiLCBQcmludChVU0hSVF9NQVgpKTsgIC8vIHVpbnQxNgorICBFWFBFQ1RfRVEoIi0zMjc2OCIs
IFByaW50KFNIUlRfTUlOKSk7ICAvLyBpbnQxNgorICBFWFBFQ1RfRVEoIjQyOTQ5NjcyOTUiLCBQ
cmludChVSU5UX01BWCkpOyAgLy8gdWludDMyCisgIEVYUEVDVF9FUSgiLTIxNDc0ODM2NDgiLCBQ
cmludChJTlRfTUlOKSk7ICAvLyBpbnQzMgorICBFWFBFQ1RfRVEoIjE4NDQ2NzQ0MDczNzA5NTUx
NjE1IiwKKyAgICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0PHRlc3Rpbmc6OmludGVybmFsOjpV
SW50NjQ+KC0xKSkpOyAgLy8gdWludDY0CisgIEVYUEVDVF9FUSgiLTkyMjMzNzIwMzY4NTQ3NzU4
MDgiLAorICAgICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8dGVzdGluZzo6aW50ZXJuYWw6Oklu
dDY0PigxKSA8PCA2MykpOyAgLy8gaW50NjQKK30KKworLy8gU2l6ZSB0eXBlcy4KK1RFU1QoUHJp
bnRCdWlsdEluVHlwZVRlc3QsIFNpemVfdCkgeworICBFWFBFQ1RfRVEoIjEiLCBQcmludChzaXpl
b2YoJ2EnKSkpOyAgLy8gc2l6ZV90LgorI2lmICFHVEVTVF9PU19XSU5ET1dTCisgIC8vIFdpbmRv
d3MgaGFzIG5vIHNzaXplX3QgdHlwZS4KKyAgRVhQRUNUX0VRKCItMiIsIFByaW50KHN0YXRpY19j
YXN0PHNzaXplX3Q+KC0yKSkpOyAgLy8gc3NpemVfdC4KKyNlbmRpZiAgLy8gIUdURVNUX09TX1dJ
TkRPV1MKK30KKworLy8gRmxvYXRpbmctcG9pbnRzLgorVEVTVChQcmludEJ1aWx0SW5UeXBlVGVz
dCwgRmxvYXRpbmdQb2ludHMpIHsKKyAgRVhQRUNUX0VRKCIxLjUiLCBQcmludCgxLjVmKSk7ICAg
Ly8gZmxvYXQKKyAgRVhQRUNUX0VRKCItMi41IiwgUHJpbnQoLTIuNSkpOyAgLy8gZG91YmxlCit9
CisKKy8vIFNpbmNlIDo6c3RkOjpzdHJpbmdzdHJlYW06Om9wZXJhdG9yPDwoY29uc3Qgdm9pZCAq
KSBmb3JtYXRzIHRoZSBwb2ludGVyCisvLyBvdXRwdXQgZGlmZmVyZW50bHkgd2l0aCBkaWZmZXJl
bnQgY29tcGlsZXJzLCB3ZSBoYXZlIHRvIGNyZWF0ZSB0aGUgZXhwZWN0ZWQKKy8vIG91dHB1dCBm
aXJzdCBhbmQgdXNlIGl0IGFzIG91ciBleHBlY3RhdGlvbi4KK3N0YXRpYyBzdGQ6OnN0cmluZyBQ
cmludFBvaW50ZXIoY29uc3Qgdm9pZCogcCkgeworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIGV4cGVj
dGVkX3Jlc3VsdF9zdHJlYW07CisgIGV4cGVjdGVkX3Jlc3VsdF9zdHJlYW0gPDwgcDsKKyAgcmV0
dXJuIGV4cGVjdGVkX3Jlc3VsdF9zdHJlYW0uc3RyKCk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5n
IEMgc3RyaW5ncy4KKworLy8gY29uc3QgY2hhciouCitURVNUKFByaW50Q1N0cmluZ1Rlc3QsIENv
bnN0KSB7CisgIGNvbnN0IGNoYXIqIHAgPSAiV29ybGQiOworICBFWFBFQ1RfRVEoUHJpbnRQb2lu
dGVyKHApICsgIiBwb2ludGluZyB0byBcIldvcmxkXCIiLCBQcmludChwKSk7Cit9CisKKy8vIGNo
YXIqLgorVEVTVChQcmludENTdHJpbmdUZXN0LCBOb25Db25zdCkgeworICBjaGFyIHBbXSA9ICJI
aSI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCkgKyAiIHBvaW50aW5nIHRvIFwiSGlcIiIs
CisgICAgICAgICAgICBQcmludChzdGF0aWNfY2FzdDxjaGFyKj4ocCkpKTsKK30KKworLy8gTlVM
TCBDIHN0cmluZy4KK1RFU1QoUHJpbnRDU3RyaW5nVGVzdCwgTnVsbCkgeworICBjb25zdCBjaGFy
KiBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBUZXN0
cyB0aGF0IEMgc3RyaW5ncyBhcmUgZXNjYXBlZCBwcm9wZXJseS4KK1RFU1QoUHJpbnRDU3RyaW5n
VGVzdCwgRXNjYXBlc1Byb3Blcmx5KSB7CisgIGNvbnN0IGNoYXIqIHAgPSAiJ1wiP1xcXGFcYlxm
XG5cclx0XHZceDdGXHhGRiBhIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSArICIgcG9p
bnRpbmcgdG8gXCInXFxcIj9cXFxcXFxhXFxiXFxmIgorICAgICAgICAgICAgIlxcblxcclxcdFxc
dlxceDdGXFx4RkYgYVwiIiwKKyAgICAgICAgICAgIFByaW50KHApKTsKK30KKworLy8gTVNWQyBj
b21waWxlciBjYW4gYmUgY29uZmlndXJlZCB0byBkZWZpbmUgd2hhcl90IGFzIGEgdHlwZWRlZgor
Ly8gb2YgdW5zaWduZWQgc2hvcnQuIERlZmluaW5nIGFuIG92ZXJsb2FkIGZvciBjb25zdCB3Y2hh
cl90KiBpbiB0aGF0IGNhc2UKKy8vIHdvdWxkIGNhdXNlIHBvaW50ZXJzIHRvIHVuc2lnbmVkIHNo
b3J0cyBiZSBwcmludGVkIGFzIHdpZGUgc3RyaW5ncywKKy8vIHBvc3NpYmx5IGFjY2Vzc2luZyBt
b3JlIG1lbW9yeSB0aGFuIGludGVuZGVkIGFuZCBjYXVzaW5nIGludmFsaWQKKy8vIG1lbW9yeSBh
Y2Nlc3Nlcy4gTVNWQyBkZWZpbmVzIF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEIHN5bWJvbCB3aGVu
CisvLyB3Y2hhcl90IGlzIGltcGxlbWVudGVkIGFzIGEgbmF0aXZlIHR5cGUuCisjaWYgIWRlZmlu
ZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX05BVElWRV9XQ0hBUl9UX0RFRklORUQpCisKKy8vIGNv
bnN0IHdjaGFyX3QqLgorVEVTVChQcmludFdpZGVDU3RyaW5nVGVzdCwgQ29uc3QpIHsKKyAgY29u
c3Qgd2NoYXJfdCogcCA9IEwiV29ybGQiOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApICsg
IiBwb2ludGluZyB0byBMXCJXb3JsZFwiIiwgUHJpbnQocCkpOworfQorCisvLyB3Y2hhcl90Ki4K
K1RFU1QoUHJpbnRXaWRlQ1N0cmluZ1Rlc3QsIE5vbkNvbnN0KSB7CisgIHdjaGFyX3QgcFtdID0g
TCJIaSI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCkgKyAiIHBvaW50aW5nIHRvIExcIkhp
XCIiLAorICAgICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KHApKSk7Cit9CisK
Ky8vIE5VTEwgd2lkZSBDIHN0cmluZy4KK1RFU1QoUHJpbnRXaWRlQ1N0cmluZ1Rlc3QsIE51bGwp
IHsKKyAgY29uc3Qgd2NoYXJfdCogcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50
KHApKTsKK30KKworLy8gVGVzdHMgdGhhdCB3aWRlIEMgc3RyaW5ncyBhcmUgZXNjYXBlZCBwcm9w
ZXJseS4KK1RFU1QoUHJpbnRXaWRlQ1N0cmluZ1Rlc3QsIEVzY2FwZXNQcm9wZXJseSkgeworICBj
b25zdCB3Y2hhcl90IHNbXSA9IHsnXCcnLCAnIicsICc/JywgJ1xcJywgJ1xhJywgJ1xiJywgJ1xm
JywgJ1xuJywgJ1xyJywKKyAgICAgICAgICAgICAgICAgICAgICAgJ1x0JywgJ1x2JywgMHhEMywg
MHg1NzYsIDB4OEQzLCAweEM3NEQsICcgJywgJ2EnLCAnXDAnfTsKKyAgRVhQRUNUX0VRKFByaW50
UG9pbnRlcihzKSArICIgcG9pbnRpbmcgdG8gTFwiJ1xcXCI/XFxcXFxcYVxcYlxcZiIKKyAgICAg
ICAgICAgICJcXG5cXHJcXHRcXHZcXHhEM1xceDU3NlxceDhEM1xceEM3NEQgYVwiIiwKKyAgICAg
ICAgICAgIFByaW50KHN0YXRpY19jYXN0PGNvbnN0IHdjaGFyX3QqPihzKSkpOworfQorI2VuZGlm
ICAvLyBuYXRpdmUgd2NoYXJfdAorCisvLyBUZXN0cyBwcmludGluZyBwb2ludGVycyB0byBvdGhl
ciBjaGFyIHR5cGVzLgorCisvLyBzaWduZWQgY2hhciouCitURVNUKFByaW50Q2hhclBvaW50ZXJU
ZXN0LCBTaWduZWRDaGFyKSB7CisgIHNpZ25lZCBjaGFyKiBwID0gcmVpbnRlcnByZXRfY2FzdDxz
aWduZWQgY2hhcio+KDB4MTIzNCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50
KHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKwor
Ly8gY29uc3Qgc2lnbmVkIGNoYXIqLgorVEVTVChQcmludENoYXJQb2ludGVyVGVzdCwgQ29uc3RT
aWduZWRDaGFyKSB7CisgIHNpZ25lZCBjaGFyKiBwID0gcmVpbnRlcnByZXRfY2FzdDxzaWduZWQg
Y2hhcio+KDB4MTIzNCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHApKTsK
KyAgcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gdW5z
aWduZWQgY2hhciouCitURVNUKFByaW50Q2hhclBvaW50ZXJUZXN0LCBVbnNpZ25lZENoYXIpIHsK
KyAgdW5zaWduZWQgY2hhciogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KDB4
MTIzNCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5V
TEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gY29uc3QgdW5zaWdu
ZWQgY2hhciouCitURVNUKFByaW50Q2hhclBvaW50ZXJUZXN0LCBDb25zdFVuc2lnbmVkQ2hhcikg
eworICBjb25zdCB1bnNpZ25lZCBjaGFyKiBwID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyKj4oMHgxMjM0KTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQo
cCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisv
LyBUZXN0cyBwcmludGluZyBwb2ludGVycyB0byBzaW1wbGUsIGJ1aWx0LWluIHR5cGVzLgorCisv
LyBib29sKi4KK1RFU1QoUHJpbnRQb2ludGVyVG9CdWlsdEluVHlwZVRlc3QsIEJvb2wpIHsKKyAg
Ym9vbCogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Ym9vbCo+KDB4QUJDRCk7CisgIEVYUEVDVF9FUShQ
cmludFBvaW50ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVM
TCIsIFByaW50KHApKTsKK30KKworLy8gdm9pZCouCitURVNUKFByaW50UG9pbnRlclRvQnVpbHRJ
blR5cGVUZXN0LCBWb2lkKSB7CisgIHZvaWQqIHAgPSByZWludGVycHJldF9jYXN0PHZvaWQqPigw
eEFCQ0QpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7CisgIHAgPSBO
VUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9CisKKy8vIGNvbnN0IHZvaWQq
LgorVEVTVChQcmludFBvaW50ZXJUb0J1aWx0SW5UeXBlVGVzdCwgQ29uc3RWb2lkKSB7CisgIGNv
bnN0IHZvaWQqIHAgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigweEFCQ0QpOworICBF
WFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7CisgIHAgPSBOVUxMOworICBFWFBF
Q1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIHBvaW50ZXJz
IHRvIHBvaW50ZXJzLgorVEVTVChQcmludFBvaW50ZXJUb1BvaW50ZXJUZXN0LCBJbnRQb2ludGVy
UG9pbnRlcikgeworICBpbnQqKiBwID0gcmVpbnRlcnByZXRfY2FzdDxpbnQqKj4oMHhBQkNEKTsK
KyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0gTlVMTDsKKyAg
RVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBUZXN0cyBwcmludGluZyAobm9u
LW1lbWJlcikgZnVuY3Rpb24gcG9pbnRlcnMuCisKK3ZvaWQgTXlGdW5jdGlvbihpbnQgLyogbiAq
Lykge30KKworVEVTVChQcmludFBvaW50ZXJUZXN0LCBOb25NZW1iZXJGdW5jdGlvblBvaW50ZXIp
IHsKKyAgLy8gV2UgY2Fubm90IGRpcmVjdGx5IGNhc3QgJk15RnVuY3Rpb24gdG8gY29uc3Qgdm9p
ZCogYmVjYXVzZSB0aGUKKyAgLy8gc3RhbmRhcmQgZGlzYWxsb3dzIGNhc3RpbmcgYmV0d2VlbiBw
b2ludGVycyB0byBmdW5jdGlvbnMgYW5kCisgIC8vIHBvaW50ZXJzIHRvIG9iamVjdHMsIGFuZCBz
b21lIGNvbXBpbGVycyAoZS5nLiBHQ0MgMy40KSBlbmZvcmNlCisgIC8vIHRoaXMgbGltaXRhdGlv
bi4KKyAgRVhQRUNUX0VRKAorICAgICAgUHJpbnRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3Qgdm9pZCo+KAorICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8aW50ZXJuYWw6OkJpZ2dlc3RJ
bnQ+KCZNeUZ1bmN0aW9uKSkpLAorICAgICAgUHJpbnQoJk15RnVuY3Rpb24pKTsKKyAgaW50ICgq
cCkoYm9vbCkgPSBOVUxMOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHAp
KTsKK30KKworLy8gQW4gYXNzZXJ0aW9uIHByZWRpY2F0ZSBkZXRlcm1pbmluZyB3aGV0aGVyIGEg
b25lIHN0cmluZyBpcyBhIHByZWZpeCBmb3IKKy8vIGFub3RoZXIuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgU3RyaW5nVHlwZT4KK0Fzc2VydGlvblJlc3VsdCBIYXNQcmVmaXgoY29uc3QgU3RyaW5nVHlw
ZSYgc3RyLCBjb25zdCBTdHJpbmdUeXBlJiBwcmVmaXgpIHsKKyAgaWYgKHN0ci5maW5kKHByZWZp
eCwgMCkgPT0gMCkKKyAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOworCisgIGNvbnN0IGJv
b2wgaXNfd2lkZV9zdHJpbmcgPSBzaXplb2YocHJlZml4WzBdKSA+IDE7CisgIGNvbnN0IGNoYXIq
IGNvbnN0IGJlZ2luX3N0cmluZ19xdW90ZSA9IGlzX3dpZGVfc3RyaW5nID8gIkxcIiIgOiAiXCIi
OworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBiZWdpbl9zdHJpbmdfcXVv
dGUgPDwgcHJlZml4IDw8ICJcIiBpcyBub3QgYSBwcmVmaXggb2YgIgorICAgICAgPDwgYmVnaW5f
c3RyaW5nX3F1b3RlIDw8IHN0ciA8PCAiXCJcbiI7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIG1l
bWJlciB2YXJpYWJsZSBwb2ludGVycy4gIEFsdGhvdWdoIHRoZXkgYXJlIGNhbGxlZAorLy8gcG9p
bnRlcnMsIHRoZXkgZG9uJ3QgcG9pbnQgdG8gYSBsb2NhdGlvbiBpbiB0aGUgYWRkcmVzcyBzcGFj
ZS4KKy8vIFRoZWlyIHJlcHJlc2VudGF0aW9uIGlzIGltcGxlbWVudGF0aW9uLWRlZmluZWQuICBU
aHVzIHRoZXkgd2lsbCBiZQorLy8gcHJpbnRlZCBhcyByYXcgYnl0ZXMuCisKK3N0cnVjdCBGb28g
eworIHB1YmxpYzoKKyAgdmlydHVhbCB+Rm9vKCkge30KKyAgaW50IE15TWV0aG9kKGNoYXIgeCkg
eyByZXR1cm4geCArIDE7IH0KKyAgdmlydHVhbCBjaGFyIE15VmlydHVhbE1ldGhvZChpbnQgLyog
biAqLykgeyByZXR1cm4gJ2EnOyB9CisKKyAgaW50IHZhbHVlOworfTsKKworVEVTVChQcmludFBv
aW50ZXJUZXN0LCBNZW1iZXJWYXJpYWJsZVBvaW50ZXIpIHsKKyAgRVhQRUNUX1RSVUUoSGFzUHJl
Zml4KFByaW50KCZGb286OnZhbHVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFByaW50KHNp
emVvZigmRm9vOjp2YWx1ZSkpICsgIi1ieXRlIG9iamVjdCAiKSk7CisgIGludCBGb286OipwID0g
TlVMTDsgIC8vIE5PTElOVAorICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoUHJpbnQocCksCisgICAg
ICAgICAgICAgICAgICAgICAgICBQcmludChzaXplb2YocCkpICsgIi1ieXRlIG9iamVjdCAiKSk7
Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIG1lbWJlciBmdW5jdGlvbiBwb2ludGVycy4gIEFsdGhv
dWdoIHRoZXkgYXJlIGNhbGxlZAorLy8gcG9pbnRlcnMsIHRoZXkgZG9uJ3QgcG9pbnQgdG8gYSBs
b2NhdGlvbiBpbiB0aGUgYWRkcmVzcyBzcGFjZS4KKy8vIFRoZWlyIHJlcHJlc2VudGF0aW9uIGlz
IGltcGxlbWVudGF0aW9uLWRlZmluZWQuICBUaHVzIHRoZXkgd2lsbCBiZQorLy8gcHJpbnRlZCBh
cyByYXcgYnl0ZXMuCitURVNUKFByaW50UG9pbnRlclRlc3QsIE1lbWJlckZ1bmN0aW9uUG9pbnRl
cikgeworICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoUHJpbnQoJkZvbzo6TXlNZXRob2QpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgUHJpbnQoc2l6ZW9mKCZGb286Ok15TWV0aG9kKSkgKyAiLWJ5
dGUgb2JqZWN0ICIpKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBIYXNQcmVmaXgoUHJpbnQoJkZv
bzo6TXlWaXJ0dWFsTWV0aG9kKSwKKyAgICAgICAgICAgICAgICBQcmludChzaXplb2YoKCZGb286
Ok15VmlydHVhbE1ldGhvZCkpKSArICItYnl0ZSBvYmplY3QgIikpOworICBpbnQgKEZvbzo6KnAp
KGNoYXIpID0gTlVMTDsgIC8vIE5PTElOVAorICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoUHJpbnQo
cCksCisgICAgICAgICAgICAgICAgICAgICAgICBQcmludChzaXplb2YocCkpICsgIi1ieXRlIG9i
amVjdCAiKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIEMgYXJyYXlzLgorCisvLyBUaGUgZGlm
ZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIFByaW50KCkgaXMgdGhhdCBpdCBlbnN1cmVzIHRoYXQg
dGhlCisvLyBhcmd1bWVudCBpcyBhIHJlZmVyZW5jZSB0byBhbiBhcnJheS4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBULCBzaXplX3QgTj4KK3N0ZDo6c3RyaW5nIFByaW50QXJyYXlIZWxwZXIoVCAoJmEp
W05dKSB7CisgIHJldHVybiBQcmludChhKTsKK30KKworLy8gT25lLWRpbWVuc2lvbmFsIGFycmF5
LgorVEVTVChQcmludEFycmF5VGVzdCwgT25lRGltZW5zaW9uYWxBcnJheSkgeworICBpbnQgYVs1
XSA9IHsgMSwgMiwgMywgNCwgNSB9OworICBFWFBFQ1RfRVEoInsgMSwgMiwgMywgNCwgNSB9Iiwg
UHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIFR3by1kaW1lbnNpb25hbCBhcnJheS4KK1RF
U1QoUHJpbnRBcnJheVRlc3QsIFR3b0RpbWVuc2lvbmFsQXJyYXkpIHsKKyAgaW50IGFbMl1bNV0g
PSB7CisgICAgeyAxLCAyLCAzLCA0LCA1IH0sCisgICAgeyA2LCA3LCA4LCA5LCAwIH0KKyAgfTsK
KyAgRVhQRUNUX0VRKCJ7IHsgMSwgMiwgMywgNCwgNSB9LCB7IDYsIDcsIDgsIDksIDAgfSB9Iiwg
UHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIEFycmF5IG9mIGNvbnN0IGVsZW1lbnRzLgor
VEVTVChQcmludEFycmF5VGVzdCwgQ29uc3RBcnJheSkgeworICBjb25zdCBib29sIGFbMV0gPSB7
IGZhbHNlIH07CisgIEVYUEVDVF9FUSgieyBmYWxzZSB9IiwgUHJpbnRBcnJheUhlbHBlcihhKSk7
Cit9CisKKy8vIGNoYXIgYXJyYXkgd2l0aG91dCB0ZXJtaW5hdGluZyBOVUwuCitURVNUKFByaW50
QXJyYXlUZXN0LCBDaGFyQXJyYXlXaXRoTm9UZXJtaW5hdGluZ051bCkgeworICAvLyBBcnJheSBh
IGNvbnRhaW5zICdcMCcgaW4gdGhlIG1pZGRsZSBhbmQgZG9lc24ndCBlbmQgd2l0aCAnXDAnLgor
ICBjaGFyIGFbXSA9IHsgJ0gnLCAnXDAnLCAnaScgfTsKKyAgRVhQRUNUX0VRKCJcIkhcXDBpXCIg
KG5vIHRlcm1pbmF0aW5nIE5VTCkiLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8gY29u
c3QgY2hhciBhcnJheSB3aXRoIHRlcm1pbmF0aW5nIE5VTC4KK1RFU1QoUHJpbnRBcnJheVRlc3Qs
IENvbnN0Q2hhckFycmF5V2l0aFRlcm1pbmF0aW5nTnVsKSB7CisgIGNvbnN0IGNoYXIgYVtdID0g
IlwwSGkiOworICBFWFBFQ1RfRVEoIlwiXFwwSGlcIiIsIFByaW50QXJyYXlIZWxwZXIoYSkpOwor
fQorCisvLyBjb25zdCB3Y2hhcl90IGFycmF5IHdpdGhvdXQgdGVybWluYXRpbmcgTlVMLgorVEVT
VChQcmludEFycmF5VGVzdCwgV0NoYXJBcnJheVdpdGhOb1Rlcm1pbmF0aW5nTnVsKSB7CisgIC8v
IEFycmF5IGEgY29udGFpbnMgJ1wwJyBpbiB0aGUgbWlkZGxlIGFuZCBkb2Vzbid0IGVuZCB3aXRo
ICdcMCcuCisgIGNvbnN0IHdjaGFyX3QgYVtdID0geyBMJ0gnLCBMJ1wwJywgTCdpJyB9OworICBF
WFBFQ1RfRVEoIkxcIkhcXDBpXCIgKG5vIHRlcm1pbmF0aW5nIE5VTCkiLCBQcmludEFycmF5SGVs
cGVyKGEpKTsKK30KKworLy8gd2NoYXJfdCBhcnJheSB3aXRoIHRlcm1pbmF0aW5nIE5VTC4KK1RF
U1QoUHJpbnRBcnJheVRlc3QsIFdDb25zdENoYXJBcnJheVdpdGhUZXJtaW5hdGluZ051bCkgewor
ICBjb25zdCB3Y2hhcl90IGFbXSA9IEwiXDBIaSI7CisgIEVYUEVDVF9FUSgiTFwiXFwwSGlcIiIs
IFByaW50QXJyYXlIZWxwZXIoYSkpOworfQorCisvLyBBcnJheSBvZiBvYmplY3RzLgorVEVTVChQ
cmludEFycmF5VGVzdCwgT2JqZWN0QXJyYXkpIHsKKyAgc3RkOjpzdHJpbmcgYVszXSA9IHsiSGki
LCAiSGVsbG8iLCAiTmkgaGFvIn07CisgIEVYUEVDVF9FUSgieyBcIkhpXCIsIFwiSGVsbG9cIiwg
XCJOaSBoYW9cIiB9IiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIEFycmF5IHdpdGgg
bWFueSBlbGVtZW50cy4KK1RFU1QoUHJpbnRBcnJheVRlc3QsIEJpZ0FycmF5KSB7CisgIGludCBh
WzEwMF0gPSB7IDEsIDIsIDMgfTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDIsIDMsIDAsIDAsIDAsIDAs
IDAsIC4uLiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9IiwKKyAgICAgICAgICAgIFByaW50QXJy
YXlIZWxwZXIoYSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyA6OnN0cmluZyBhbmQgOjpzdGQ6
OnN0cmluZy4KKworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisvLyA6OnN0cmluZy4KK1RF
U1QoUHJpbnRTdHJpbmdUZXN0LCBTdHJpbmdJbkdsb2JhbE5hbWVzcGFjZSkgeworICBjb25zdCBj
aGFyIHNbXSA9ICInXCI/XFxcYVxiXGZcblwwXHJcdFx2XHg3Rlx4RkYgYSI7CisgIGNvbnN0IDo6
c3RyaW5nIHN0cihzLCBzaXplb2YocykpOworICBFWFBFQ1RfRVEoIlwiJ1xcXCI/XFxcXFxcYVxc
YlxcZlxcblxcMFxcclxcdFxcdlxceDdGXFx4RkYgYVxcMFwiIiwKKyAgICAgICAgICAgIFByaW50
KHN0cikpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCisvLyA6OnN0
ZDo6c3RyaW5nLgorVEVTVChQcmludFN0cmluZ1Rlc3QsIFN0cmluZ0luU3RkTmFtZXNwYWNlKSB7
CisgIGNvbnN0IGNoYXIgc1tdID0gIidcIj9cXFxhXGJcZlxuXDBcclx0XHZceDdGXHhGRiBhIjsK
KyAgY29uc3QgOjpzdGQ6OnN0cmluZyBzdHIocywgc2l6ZW9mKHMpKTsKKyAgRVhQRUNUX0VRKCJc
IidcXFwiP1xcXFxcXGFcXGJcXGZcXG5cXDBcXHJcXHRcXHZcXHg3RlxceEZGIGFcXDBcIiIsCisg
ICAgICAgICAgICBQcmludChzdHIpKTsKK30KKworVEVTVChQcmludFN0cmluZ1Rlc3QsIFN0cmlu
Z0FtYmlndW91c0hleCkgeworICAvLyAiXHg2QkFOQU5BIiBpcyBhbWJpZ3VvdXMsIGl0IGNhbiBi
ZSBpbnRlcnByZXRlZCBhcyBzdGFydGluZyB3aXRoIGVpdGhlciBvZjoKKyAgLy8gJ1x4NicsICdc
eDZCJywgb3IgJ1x4NkJBJy4KKworICAvLyBhIGhleCBlc2NhcGluZyBzZXF1ZW5jZSBmb2xsb3dp
bmcgYnkgYSBkZWNpbWFsIGRpZ2l0CisgIEVYUEVDVF9FUSgiXCIwXFx4MTJcIiBcIjNcIiIsIFBy
aW50KDo6c3RkOjpzdHJpbmcoIjBceDEyIiAiMyIpKSk7CisgIC8vIGEgaGV4IGVzY2FwaW5nIHNl
cXVlbmNlIGZvbGxvd2luZyBieSBhIGhleCBkaWdpdCAobG93ZXItY2FzZSkKKyAgRVhQRUNUX0VR
KCJcIm1tXFx4NlwiIFwiYmFuYW5hc1wiIiwgUHJpbnQoOjpzdGQ6OnN0cmluZygibW1ceDYiICJi
YW5hbmFzIikpKTsKKyAgLy8gYSBoZXggZXNjYXBpbmcgc2VxdWVuY2UgZm9sbG93aW5nIGJ5IGEg
aGV4IGRpZ2l0ICh1cHBlci1jYXNlKQorICBFWFBFQ1RfRVEoIlwiTk9NXFx4NlwiIFwiQkFOQU5B
XCIiLCBQcmludCg6OnN0ZDo6c3RyaW5nKCJOT01ceDYiICJCQU5BTkEiKSkpOworICAvLyBhIGhl
eCBlc2NhcGluZyBzZXF1ZW5jZSBmb2xsb3dpbmcgYnkgYSBub24teGRpZ2l0CisgIEVYUEVDVF9F
USgiXCIhXFx4NS0hXCIiLCBQcmludCg6OnN0ZDo6c3RyaW5nKCIhXHg1LSEiKSkpOworfQorCisv
LyBUZXN0cyBwcmludGluZyA6OndzdHJpbmcgYW5kIDo6c3RkOjp3c3RyaW5nLgorCisjaWYgR1RF
U1RfSEFTX0dMT0JBTF9XU1RSSU5HCisvLyA6OndzdHJpbmcuCitURVNUKFByaW50V2lkZVN0cmlu
Z1Rlc3QsIFN0cmluZ0luR2xvYmFsTmFtZXNwYWNlKSB7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0g
TCInXCI/XFxcYVxiXGZcblwwXHJcdFx2XHhEM1x4NTc2XHg4RDNceEM3NEQgYSI7CisgIGNvbnN0
IDo6d3N0cmluZyBzdHIocywgc2l6ZW9mKHMpL3NpemVvZih3Y2hhcl90KSk7CisgIEVYUEVDVF9F
USgiTFwiJ1xcXCI/XFxcXFxcYVxcYlxcZlxcblxcMFxcclxcdFxcdiIKKyAgICAgICAgICAgICJc
XHhEM1xceDU3NlxceDhEM1xceEM3NEQgYVxcMFwiIiwKKyAgICAgICAgICAgIFByaW50KHN0cikp
OworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKKworI2lmIEdURVNUX0hB
U19TVERfV1NUUklORworLy8gOjpzdGQ6OndzdHJpbmcuCitURVNUKFByaW50V2lkZVN0cmluZ1Rl
c3QsIFN0cmluZ0luU3RkTmFtZXNwYWNlKSB7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0gTCInXCI/
XFxcYVxiXGZcblwwXHJcdFx2XHhEM1x4NTc2XHg4RDNceEM3NEQgYSI7CisgIGNvbnN0IDo6c3Rk
Ojp3c3RyaW5nIHN0cihzLCBzaXplb2Yocykvc2l6ZW9mKHdjaGFyX3QpKTsKKyAgRVhQRUNUX0VR
KCJMXCInXFxcIj9cXFxcXFxhXFxiXFxmXFxuXFwwXFxyXFx0XFx2IgorICAgICAgICAgICAgIlxc
eEQzXFx4NTc2XFx4OEQzXFx4Qzc0RCBhXFwwXCIiLAorICAgICAgICAgICAgUHJpbnQoc3RyKSk7
Cit9CisKK1RFU1QoUHJpbnRXaWRlU3RyaW5nVGVzdCwgU3RyaW5nQW1iaWd1b3VzSGV4KSB7Cisg
IC8vIHNhbWUgZm9yIHdpZGUgc3RyaW5ncy4KKyAgRVhQRUNUX0VRKCJMXCIwXFx4MTJcIiBMXCIz
XCIiLCBQcmludCg6OnN0ZDo6d3N0cmluZyhMIjBceDEyIiBMIjMiKSkpOworICBFWFBFQ1RfRVEo
IkxcIm1tXFx4NlwiIExcImJhbmFuYXNcIiIsCisgICAgICAgICAgICBQcmludCg6OnN0ZDo6d3N0
cmluZyhMIm1tXHg2IiBMImJhbmFuYXMiKSkpOworICBFWFBFQ1RfRVEoIkxcIk5PTVxceDZcIiBM
XCJCQU5BTkFcIiIsCisgICAgICAgICAgICBQcmludCg6OnN0ZDo6d3N0cmluZyhMIk5PTVx4NiIg
TCJCQU5BTkEiKSkpOworICBFWFBFQ1RfRVEoIkxcIiFcXHg1LSFcIiIsIFByaW50KDo6c3RkOjp3
c3RyaW5nKEwiIVx4NS0hIikpKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RSSU5H
CisKKy8vIFRlc3RzIHByaW50aW5nIHR5cGVzIHRoYXQgc3VwcG9ydCBnZW5lcmljIHN0cmVhbWlu
ZyAoaS5lLiBzdHJlYW1pbmcKKy8vIHRvIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJh
aXRzPiBmb3IgYW55IHZhbGlkIENoYXIgYW5kCisvLyBDaGFyVHJhaXRzIHR5cGVzKS4KKworLy8g
VGVzdHMgcHJpbnRpbmcgYSBub24tdGVtcGxhdGUgdHlwZSB0aGF0IHN1cHBvcnRzIGdlbmVyaWMg
c3RyZWFtaW5nLgorCitjbGFzcyBBbGxvd3NHZW5lcmljU3RyZWFtaW5nIHt9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhciwgdHlwZW5hbWUgQ2hhclRyYWl0cz4KK3N0ZDo6YmFzaWNfb3N0cmVh
bTxDaGFyLCBDaGFyVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICBzdGQ6OmJhc2ljX29zdHJlYW08
Q2hhciwgQ2hhclRyYWl0cz4mIG9zLAorICAgIGNvbnN0IEFsbG93c0dlbmVyaWNTdHJlYW1pbmcm
IC8qIGEgKi8pIHsKKyAgcmV0dXJuIG9zIDw8ICJBbGxvd3NHZW5lcmljU3RyZWFtaW5nIjsKK30K
KworVEVTVChQcmludFR5cGVXaXRoR2VuZXJpY1N0cmVhbWluZ1Rlc3QsIE5vblRlbXBsYXRlVHlw
ZSkgeworICBBbGxvd3NHZW5lcmljU3RyZWFtaW5nIGE7CisgIEVYUEVDVF9FUSgiQWxsb3dzR2Vu
ZXJpY1N0cmVhbWluZyIsIFByaW50KGEpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgYSB0ZW1w
bGF0ZSB0eXBlIHRoYXQgc3VwcG9ydHMgZ2VuZXJpYyBzdHJlYW1pbmcuCisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorY2xhc3MgQWxsb3dzR2VuZXJpY1N0cmVhbWluZ1RlbXBsYXRlIHt9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhciwgdHlwZW5hbWUgQ2hhclRyYWl0cywgdHlwZW5hbWUgVD4K
K3N0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICBz
dGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9zLAorICAgIGNvbnN0IEFsbG93
c0dlbmVyaWNTdHJlYW1pbmdUZW1wbGF0ZTxUPiYgLyogYSAqLykgeworICByZXR1cm4gb3MgPDwg
IkFsbG93c0dlbmVyaWNTdHJlYW1pbmdUZW1wbGF0ZSI7Cit9CisKK1RFU1QoUHJpbnRUeXBlV2l0
aEdlbmVyaWNTdHJlYW1pbmdUZXN0LCBUZW1wbGF0ZVR5cGUpIHsKKyAgQWxsb3dzR2VuZXJpY1N0
cmVhbWluZ1RlbXBsYXRlPGludD4gYTsKKyAgRVhQRUNUX0VRKCJBbGxvd3NHZW5lcmljU3RyZWFt
aW5nVGVtcGxhdGUiLCBQcmludChhKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIGEgdHlwZSB0
aGF0IHN1cHBvcnRzIGdlbmVyaWMgc3RyZWFtaW5nIGFuZCBjYW4gYmUKKy8vIGltcGxpY2l0bHkg
Y29udmVydGVkIHRvIGFub3RoZXIgcHJpbnRhYmxlIHR5cGUuCisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgQWxsb3dzR2VuZXJpY1N0cmVhbWluZ0FuZEltcGxpY2l0Q29udmVyc2lvblRl
bXBsYXRlIHsKKyBwdWJsaWM6CisgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXIsIHR5cGVuYW1lIENoYXJUcmFpdHMs
IHR5cGVuYW1lIFQ+CitzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9wZXJh
dG9yPDwoCisgICAgc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcywKKyAg
ICBjb25zdCBBbGxvd3NHZW5lcmljU3RyZWFtaW5nQW5kSW1wbGljaXRDb252ZXJzaW9uVGVtcGxh
dGU8VD4mIC8qIGEgKi8pIHsKKyAgcmV0dXJuIG9zIDw8ICJBbGxvd3NHZW5lcmljU3RyZWFtaW5n
QW5kSW1wbGljaXRDb252ZXJzaW9uVGVtcGxhdGUiOworfQorCitURVNUKFByaW50VHlwZVdpdGhH
ZW5lcmljU3RyZWFtaW5nVGVzdCwgVHlwZUltcGxpY2l0bHlDb252ZXJ0aWJsZSkgeworICBBbGxv
d3NHZW5lcmljU3RyZWFtaW5nQW5kSW1wbGljaXRDb252ZXJzaW9uVGVtcGxhdGU8aW50PiBhOwor
ICBFWFBFQ1RfRVEoIkFsbG93c0dlbmVyaWNTdHJlYW1pbmdBbmRJbXBsaWNpdENvbnZlcnNpb25U
ZW1wbGF0ZSIsIFByaW50KGEpKTsKK30KKworI2lmIEdURVNUX0hBU19BQlNMCisKKy8vIFRlc3Rz
IHByaW50aW5nIDo6YWJzbDo6c3RyaW5nX3ZpZXcuCisKK1RFU1QoUHJpbnRTdHJpbmdWaWV3VGVz
dCwgU2ltcGxlU3RyaW5nVmlldykgeworICBjb25zdCA6OmFic2w6OnN0cmluZ192aWV3IHNwID0g
IkhlbGxvIjsKKyAgRVhQRUNUX0VRKCJcIkhlbGxvXCIiLCBQcmludChzcCkpOworfQorCitURVNU
KFByaW50U3RyaW5nVmlld1Rlc3QsIFVucHJpbnRhYmxlQ2hhcmFjdGVycykgeworICBjb25zdCBj
aGFyIHN0cltdID0gIk5VTCAoXDApIGFuZCBcclx0IjsKKyAgY29uc3QgOjphYnNsOjpzdHJpbmdf
dmlldyBzcChzdHIsIHNpemVvZihzdHIpIC0gMSk7CisgIEVYUEVDVF9FUSgiXCJOVUwgKFxcMCkg
YW5kIFxcclxcdFwiIiwgUHJpbnQoc3ApKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfQUJT
TAorCisvLyBUZXN0cyBwcmludGluZyBTVEwgY29udGFpbmVycy4KKworVEVTVChQcmludFN0bENv
bnRhaW5lclRlc3QsIEVtcHR5RGVxdWUpIHsKKyAgZGVxdWU8Y2hhcj4gZW1wdHk7CisgIEVYUEVD
VF9FUSgie30iLCBQcmludChlbXB0eSkpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVz
dCwgTm9uRW1wdHlEZXF1ZSkgeworICBkZXF1ZTxpbnQ+IG5vbl9lbXB0eTsKKyAgbm9uX2VtcHR5
LnB1c2hfYmFjaygxKTsKKyAgbm9uX2VtcHR5LnB1c2hfYmFjaygzKTsKKyAgRVhQRUNUX0VRKCJ7
IDEsIDMgfSIsIFByaW50KG5vbl9lbXB0eSkpOworfQorCisjaWYgR1RFU1RfSEFTX1VOT1JERVJF
RF9NQVBfCisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBPbmVFbGVtZW50SGFzaE1hcCkg
eworICA6OnN0ZDo6dW5vcmRlcmVkX21hcDxpbnQsIGNoYXI+IG1hcDE7CisgIG1hcDFbMV0gPSAn
YSc7CisgIEVYUEVDVF9FUSgieyAoMSwgJ2EnICg5NywgMHg2MSkpIH0iLCBQcmludChtYXAxKSk7
Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBIYXNoTXVsdGlNYXApIHsKKyAgOjpz
dGQ6OnVub3JkZXJlZF9tdWx0aW1hcDxpbnQsIGJvb2w+IG1hcDE7CisgIG1hcDEuaW5zZXJ0KG1h
a2VfcGFpcig1LCB0cnVlKSk7CisgIG1hcDEuaW5zZXJ0KG1ha2VfcGFpcig1LCBmYWxzZSkpOwor
CisgIC8vIEVsZW1lbnRzIG9mIGhhc2hfbXVsdGltYXAgY2FuIGJlIHByaW50ZWQgaW4gYW55IG9y
ZGVyLgorICBjb25zdCBzdGQ6OnN0cmluZyByZXN1bHQgPSBQcmludChtYXAxKTsKKyAgRVhQRUNU
X1RSVUUocmVzdWx0ID09ICJ7ICg1LCB0cnVlKSwgKDUsIGZhbHNlKSB9IiB8fAorICAgICAgICAg
ICAgICByZXN1bHQgPT0gInsgKDUsIGZhbHNlKSwgKDUsIHRydWUpIH0iKQorICAgICAgICAgICAg
ICAgICAgPDwgIiB3aGVyZSBQcmludChtYXAxKSByZXR1cm5zIFwiIiA8PCByZXN1bHQgPDwgIlwi
LiI7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1VOT1JERVJFRF9NQVBfCisKKyNpZiBHVEVT
VF9IQVNfVU5PUkRFUkVEX1NFVF8KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIEhhc2hT
ZXQpIHsKKyAgOjpzdGQ6OnVub3JkZXJlZF9zZXQ8aW50PiBzZXQxOworICBzZXQxLmluc2VydCgx
KTsKKyAgRVhQRUNUX0VRKCJ7IDEgfSIsIFByaW50KHNldDEpKTsKK30KKworVEVTVChQcmludFN0
bENvbnRhaW5lclRlc3QsIEhhc2hNdWx0aVNldCkgeworICBjb25zdCBpbnQga1NpemUgPSA1Owor
ICBpbnQgYVtrU2l6ZV0gPSB7IDEsIDEsIDIsIDUsIDEgfTsKKyAgOjpzdGQ6OnVub3JkZXJlZF9t
dWx0aXNldDxpbnQ+IHNldDEoYSwgYSArIGtTaXplKTsKKworICAvLyBFbGVtZW50cyBvZiBoYXNo
X211bHRpc2V0IGNhbiBiZSBwcmludGVkIGluIGFueSBvcmRlci4KKyAgY29uc3Qgc3RkOjpzdHJp
bmcgcmVzdWx0ID0gUHJpbnQoc2V0MSk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdGVkX3Bh
dHRlcm4gPSAieyBkLCBkLCBkLCBkLCBkIH0iOyAgLy8gZCBtZWFucyBhIGRpZ2l0LgorCisgIC8v
IFZlcmlmaWVzIHRoZSByZXN1bHQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgcGF0dGVybjsgYWxzbyBl
eHRyYWN0cworICAvLyB0aGUgbnVtYmVycyBpbiB0aGUgcmVzdWx0LgorICBBU1NFUlRfRVEoZXhw
ZWN0ZWRfcGF0dGVybi5sZW5ndGgoKSwgcmVzdWx0Lmxlbmd0aCgpKTsKKyAgc3RkOjp2ZWN0b3I8
aW50PiBudW1iZXJzOworICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSByZXN1bHQubGVuZ3RoKCk7
IGkrKykgeworICAgIGlmIChleHBlY3RlZF9wYXR0ZXJuW2ldID09ICdkJykgeworICAgICAgQVNT
RVJUX05FKGlzZGlnaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4ocmVzdWx0W2ldKSksIDAp
OworICAgICAgbnVtYmVycy5wdXNoX2JhY2socmVzdWx0W2ldIC0gJzAnKTsKKyAgICB9IGVsc2Ug
eworICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkX3BhdHRlcm5baV0sIHJlc3VsdFtpXSkgPDwgIiB3
aGVyZSByZXN1bHQgaXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgcmVzdWx0OworICAgIH0KKyAgfQorCisgIC8vIE1ha2VzIHN1cmUgdGhlIHJl
c3VsdCBjb250YWlucyB0aGUgcmlnaHQgbnVtYmVycy4KKyAgc3RkOjpzb3J0KG51bWJlcnMuYmVn
aW4oKSwgbnVtYmVycy5lbmQoKSk7CisgIHN0ZDo6c29ydChhLCBhICsga1NpemUpOworICBFWFBF
Q1RfVFJVRShzdGQ6OmVxdWFsKGEsIGEgKyBrU2l6ZSwgbnVtYmVycy5iZWdpbigpKSk7Cit9CisK
KyNlbmRpZiAgLy8gIEdURVNUX0hBU19VTk9SREVSRURfU0VUXworCitURVNUKFByaW50U3RsQ29u
dGFpbmVyVGVzdCwgTGlzdCkgeworICBjb25zdCBzdGQ6OnN0cmluZyBhW10gPSB7ImhlbGxvIiwg
IndvcmxkIn07CisgIGNvbnN0IGxpc3Q8c3RkOjpzdHJpbmc+IHN0cmluZ3MoYSwgYSArIDIpOwor
ICBFWFBFQ1RfRVEoInsgXCJoZWxsb1wiLCBcIndvcmxkXCIgfSIsIFByaW50KHN0cmluZ3MpKTsK
K30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIE1hcCkgeworICBtYXA8aW50LCBib29s
PiBtYXAxOworICBtYXAxWzFdID0gdHJ1ZTsKKyAgbWFwMVs1XSA9IGZhbHNlOworICBtYXAxWzNd
ID0gdHJ1ZTsKKyAgRVhQRUNUX0VRKCJ7ICgxLCB0cnVlKSwgKDMsIHRydWUpLCAoNSwgZmFsc2Up
IH0iLCBQcmludChtYXAxKSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBNdWx0
aU1hcCkgeworICBtdWx0aW1hcDxib29sLCBpbnQ+IG1hcDE7CisgIC8vIFRoZSBtYWtlX3BhaXIg
dGVtcGxhdGUgZnVuY3Rpb24gd291bGQgZGVkdWNlIHRoZSB0eXBlIGFzCisgIC8vIHBhaXI8Ym9v
bCwgaW50PiBoZXJlLCBhbmQgc2luY2UgdGhlIGtleSBwYXJ0IGluIGEgbXVsdGltYXAgaGFzIHRv
CisgIC8vIGJlIGNvbnN0YW50LCB3aXRob3V0IGEgdGVtcGxhdGVkIGN0b3IgaW4gdGhlIHBhaXIg
Y2xhc3MgKGFzIGluCisgIC8vIGxpYkNzdGQgb24gU29sYXJpcyksIG1ha2VfcGFpciBjYWxsIHdv
dWxkIGZhaWwgdG8gY29tcGlsZSBhcyBubworICAvLyBpbXBsaWNpdCBjb252ZXJzaW9uIGlzIGZv
dW5kLiAgVGh1cyBleHBsaWNpdCB0eXBlbmFtZSBpcyB1c2VkCisgIC8vIGhlcmUgaW5zdGVhZC4K
KyAgbWFwMS5pbnNlcnQocGFpcjxjb25zdCBib29sLCBpbnQ+KHRydWUsIDApKTsKKyAgbWFwMS5p
bnNlcnQocGFpcjxjb25zdCBib29sLCBpbnQ+KHRydWUsIDEpKTsKKyAgbWFwMS5pbnNlcnQocGFp
cjxjb25zdCBib29sLCBpbnQ+KGZhbHNlLCAyKSk7CisgIEVYUEVDVF9FUSgieyAoZmFsc2UsIDIp
LCAodHJ1ZSwgMCksICh0cnVlLCAxKSB9IiwgUHJpbnQobWFwMSkpOworfQorCitURVNUKFByaW50
U3RsQ29udGFpbmVyVGVzdCwgU2V0KSB7CisgIGNvbnN0IHVuc2lnbmVkIGludCBhW10gPSB7IDMs
IDAsIDUgfTsKKyAgc2V0PHVuc2lnbmVkIGludD4gc2V0MShhLCBhICsgMyk7CisgIEVYUEVDVF9F
USgieyAwLCAzLCA1IH0iLCBQcmludChzZXQxKSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWlu
ZXJUZXN0LCBNdWx0aVNldCkgeworICBjb25zdCBpbnQgYVtdID0geyAxLCAxLCAyLCA1LCAxIH07
CisgIG11bHRpc2V0PGludD4gc2V0MShhLCBhICsgNSk7CisgIEVYUEVDVF9FUSgieyAxLCAxLCAx
LCAyLCA1IH0iLCBQcmludChzZXQxKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfU1REX0ZPUldBUkRf
TElTVF8KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIFNpbmdseUxpbmtlZExpc3QpIHsK
KyAgaW50IGFbXSA9IHsgOSwgMiwgOCB9OworICBjb25zdCBzdGQ6OmZvcndhcmRfbGlzdDxpbnQ+
IGludHMoYSwgYSArIDMpOworICBFWFBFQ1RfRVEoInsgOSwgMiwgOCB9IiwgUHJpbnQoaW50cykp
OworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8KKworVEVTVChQcmlu
dFN0bENvbnRhaW5lclRlc3QsIFBhaXIpIHsKKyAgcGFpcjxjb25zdCBib29sLCBpbnQ+IHAodHJ1
ZSwgNSk7CisgIEVYUEVDVF9FUSgiKHRydWUsIDUpIiwgUHJpbnQocCkpOworfQorCitURVNUKFBy
aW50U3RsQ29udGFpbmVyVGVzdCwgVmVjdG9yKSB7CisgIHZlY3RvcjxpbnQ+IHY7CisgIHYucHVz
aF9iYWNrKDEpOworICB2LnB1c2hfYmFjaygyKTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDIgfSIsIFBy
aW50KHYpKTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIExvbmdTZXF1ZW5jZSkg
eworICBjb25zdCBpbnQgYVsxMDBdID0geyAxLCAyLCAzIH07CisgIGNvbnN0IHZlY3RvcjxpbnQ+
IHYoYSwgYSArIDEwMCk7CisgIEVYUEVDVF9FUSgieyAxLCAyLCAzLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAiCisgICAgICAgICAgICAiMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgLi4uIH0iLCBQcmludCh2KSk7Cit9CisKK1RF
U1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBOZXN0ZWRDb250YWluZXIpIHsKKyAgY29uc3QgaW50
IGExW10gPSB7IDEsIDIgfTsKKyAgY29uc3QgaW50IGEyW10gPSB7IDMsIDQsIDUgfTsKKyAgY29u
c3QgbGlzdDxpbnQ+IGwxKGExLCBhMSArIDIpOworICBjb25zdCBsaXN0PGludD4gbDIoYTIsIGEy
ICsgMyk7CisKKyAgdmVjdG9yPGxpc3Q8aW50PiA+IHY7CisgIHYucHVzaF9iYWNrKGwxKTsKKyAg
di5wdXNoX2JhY2sobDIpOworICBFWFBFQ1RfRVEoInsgeyAxLCAyIH0sIHsgMywgNCwgNSB9IH0i
LCBQcmludCh2KSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBPbmVEaW1lbnNp
b25hbE5hdGl2ZUFycmF5KSB7CisgIGNvbnN0IGludCBhWzNdID0geyAxLCAyLCAzIH07CisgIE5h
dGl2ZUFycmF5PGludD4gYihhLCAzLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOworICBF
WFBFQ1RfRVEoInsgMSwgMiwgMyB9IiwgUHJpbnQoYikpOworfQorCitURVNUKFByaW50U3RsQ29u
dGFpbmVyVGVzdCwgVHdvRGltZW5zaW9uYWxOYXRpdmVBcnJheSkgeworICBjb25zdCBpbnQgYVsy
XVszXSA9IHsgeyAxLCAyLCAzIH0sIHsgNCwgNSwgNiB9IH07CisgIE5hdGl2ZUFycmF5PGludFsz
XT4gYihhLCAyLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOworICBFWFBFQ1RfRVEoInsg
eyAxLCAyLCAzIH0sIHsgNCwgNSwgNiB9IH0iLCBQcmludChiKSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgYSBjbGFzcyBuYW1lZCBpdGVyYXRvciBpc24ndCB0cmVhdGVkIGFzIGEgY29udGFpbmVyLgor
CitzdHJ1Y3QgaXRlcmF0b3IgeworICBjaGFyIHg7Cit9OworCitURVNUKFByaW50U3RsQ29udGFp
bmVyVGVzdCwgSXRlcmF0b3IpIHsKKyAgaXRlcmF0b3IgaXQgPSB7fTsKKyAgRVhQRUNUX0VRKCIx
LWJ5dGUgb2JqZWN0IDwwMD4iLCBQcmludChpdCkpOworfQorCisvLyBUZXN0cyB0aGF0IGEgY2xh
c3MgbmFtZWQgY29uc3RfaXRlcmF0b3IgaXNuJ3QgdHJlYXRlZCBhcyBhIGNvbnRhaW5lci4KKwor
c3RydWN0IGNvbnN0X2l0ZXJhdG9yIHsKKyAgY2hhciB4OworfTsKKworVEVTVChQcmludFN0bENv
bnRhaW5lclRlc3QsIENvbnN0SXRlcmF0b3IpIHsKKyAgY29uc3RfaXRlcmF0b3IgaXQgPSB7fTsK
KyAgRVhQRUNUX0VRKCIxLWJ5dGUgb2JqZWN0IDwwMD4iLCBQcmludChpdCkpOworfQorCisjaWYg
R1RFU1RfSEFTX1RSMV9UVVBMRQorLy8gVGVzdHMgcHJpbnRpbmcgOjpzdGQ6OnRyMTo6dHVwbGVz
LgorCisvLyBUdXBsZXMgb2YgdmFyaW91cyBhcml0aWVzLgorVEVTVChQcmludFRyMVR1cGxlVGVz
dCwgVmFyaW91c1NpemVzKSB7CisgIDo6c3RkOjp0cjE6OnR1cGxlPD4gdDA7CisgIEVYUEVDVF9F
USgiKCkiLCBQcmludCh0MCkpOworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGludD4gdDEoNSk7Cisg
IEVYUEVDVF9FUSgiKDUpIiwgUHJpbnQodDEpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxjaGFy
LCBib29sPiB0MignYScsIHRydWUpOworICBFWFBFQ1RfRVEoIignYScgKDk3LCAweDYxKSwgdHJ1
ZSkiLCBQcmludCh0MikpOworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludCwgaW50PiB0
MyhmYWxzZSwgMiwgMyk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzKSIsIFByaW50KHQzKSk7
CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludD4gdDQoZmFsc2UsIDIs
IDMsIDQpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCkiLCBQcmludCh0NCkpOworCisg
IDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2w+IHQ1KGZhbHNlLCAy
LCAzLCA0LCB0cnVlKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUpIiwgUHJp
bnQodDUpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29s
LCBpbnQ+IHQ2KGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2Us
IDIsIDMsIDQsIHRydWUsIDYpIiwgUHJpbnQodDYpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxi
b29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGludD4gdDcoCisgICAgICBmYWxzZSwgMiwg
MywgNCwgdHJ1ZSwgNiwgNyk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2
LCA3KSIsIFByaW50KHQ3KSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBpbnQs
IGludCwgYm9vbCwgaW50LCBpbnQsIGJvb2w+IHQ4KAorICAgICAgZmFsc2UsIDIsIDMsIDQsIHRy
dWUsIDYsIDcsIHRydWUpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwg
NywgdHJ1ZSkiLCBQcmludCh0OCkpOworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludCwg
aW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBib29sLCBpbnQ+IHQ5KAorICAgICAgZmFsc2UsIDIs
IDMsIDQsIHRydWUsIDYsIDcsIHRydWUsIDkpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywg
NCwgdHJ1ZSwgNiwgNywgdHJ1ZSwgOSkiLCBQcmludCh0OSkpOworCisgIGNvbnN0IGNoYXIqIGNv
bnN0IHN0ciA9ICI4IjsKKyAgLy8gVkMrKyAyMDEwJ3MgaW1wbGVtZW50YXRpb24gb2YgdHVwbGUg
b2YgQysrMHggaXMgZGVmaWNpZW50LCByZXF1aXJpbmcKKyAgLy8gYW4gZXhwbGljaXQgdHlwZSBj
YXN0IG9mIE5VTEwgdG8gYmUgdXNlZC4KKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgY2hhciwg
c2hvcnQsIHRlc3Rpbmc6OmludGVybmFsOjpJbnQzMiwgIC8vIE5PTElOVAorICAgICAgICAgICAg
ICAgICAgICB0ZXN0aW5nOjppbnRlcm5hbDo6SW50NjQsIGZsb2F0LCBkb3VibGUsIGNvbnN0IGNo
YXIqLCB2b2lkKiwKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmc+CisgICAgICB0MTAo
ZmFsc2UsICdhJywgc3RhdGljX2Nhc3Q8c2hvcnQ+KDMpLCA0LCA1LCAxLjVGLCAtMi41LCBzdHIs
ICAvLyBOT0xJTlQKKyAgICAgICAgICBJbXBsaWNpdENhc3RfPHZvaWQqPihOVUxMKSwgIjEwIik7
CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAnYScgKDk3LCAweDYxKSwgMywgNCwgNSwgMS41LCAtMi41
LCAiICsgUHJpbnRQb2ludGVyKHN0cikgKworICAgICAgICAgICAgIiBwb2ludGluZyB0byBcIjhc
IiwgTlVMTCwgXCIxMFwiKSIsCisgICAgICAgICAgICBQcmludCh0MTApKTsKK30KKworLy8gTmVz
dGVkIHR1cGxlcy4KK1RFU1QoUHJpbnRUcjFUdXBsZVRlc3QsIE5lc3RlZFR1cGxlKSB7CisgIDo6
c3RkOjp0cjE6OnR1cGxlPCA6OnN0ZDo6dHIxOjp0dXBsZTxpbnQsIGJvb2w+LCBjaGFyPiBuZXN0
ZWQoCisgICAgICA6OnN0ZDo6dHIxOjptYWtlX3R1cGxlKDUsIHRydWUpLCAnYScpOworICBFWFBF
Q1RfRVEoIigoNSwgdHJ1ZSksICdhJyAoOTcsIDB4NjEpKSIsIFByaW50KG5lc3RlZCkpOworfQor
CisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUKKworI2lmIEdURVNUX0hBU19TVERfVFVQ
TEVfCisvLyBUZXN0cyBwcmludGluZyA6OnN0ZDo6dHVwbGVzLgorCisvLyBUdXBsZXMgb2YgdmFy
aW91cyBhcml0aWVzLgorVEVTVChQcmludFN0ZFR1cGxlVGVzdCwgVmFyaW91c1NpemVzKSB7Cisg
IDo6c3RkOjp0dXBsZTw+IHQwOworICBFWFBFQ1RfRVEoIigpIiwgUHJpbnQodDApKTsKKworICA6
OnN0ZDo6dHVwbGU8aW50PiB0MSg1KTsKKyAgRVhQRUNUX0VRKCIoNSkiLCBQcmludCh0MSkpOwor
CisgIDo6c3RkOjp0dXBsZTxjaGFyLCBib29sPiB0MignYScsIHRydWUpOworICBFWFBFQ1RfRVEo
IignYScgKDk3LCAweDYxKSwgdHJ1ZSkiLCBQcmludCh0MikpOworCisgIDo6c3RkOjp0dXBsZTxi
b29sLCBpbnQsIGludD4gdDMoZmFsc2UsIDIsIDMpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwg
MykiLCBQcmludCh0MykpOworCisgIDo6c3RkOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50PiB0
NChmYWxzZSwgMiwgMywgNCk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0KSIsIFByaW50
KHQ0KSk7CisKKyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2w+IHQ1KGZh
bHNlLCAyLCAzLCA0LCB0cnVlKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUp
IiwgUHJpbnQodDUpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9v
bCwgaW50PiB0NihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNik7CisgIEVYUEVDVF9FUSgiKGZhbHNl
LCAyLCAzLCA0LCB0cnVlLCA2KSIsIFByaW50KHQ2KSk7CisKKyAgOjpzdGQ6OnR1cGxlPGJvb2ws
IGludCwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50PiB0NygKKyAgICAgIGZhbHNlLCAyLCAzLCA0
LCB0cnVlLCA2LCA3KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcp
IiwgUHJpbnQodDcpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9v
bCwgaW50LCBpbnQsIGJvb2w+IHQ4KAorICAgICAgZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcs
IHRydWUpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSki
LCBQcmludCh0OCkpOworCisgIDo6c3RkOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29s
LCBpbnQsIGludCwgYm9vbCwgaW50PiB0OSgKKyAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2
LCA3LCB0cnVlLCA5KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcs
IHRydWUsIDkpIiwgUHJpbnQodDkpKTsKKworICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAiOCI7
CisgIC8vIFZDKysgMjAxMCdzIGltcGxlbWVudGF0aW9uIG9mIHR1cGxlIG9mIEMrKzB4IGlzIGRl
ZmljaWVudCwgcmVxdWlyaW5nCisgIC8vIGFuIGV4cGxpY2l0IHR5cGUgY2FzdCBvZiBOVUxMIHRv
IGJlIHVzZWQuCisgIDo6c3RkOjp0dXBsZTxib29sLCBjaGFyLCBzaG9ydCwgdGVzdGluZzo6aW50
ZXJuYWw6OkludDMyLCAgLy8gTk9MSU5UCisgICAgICAgICAgICAgICB0ZXN0aW5nOjppbnRlcm5h
bDo6SW50NjQsIGZsb2F0LCBkb3VibGUsIGNvbnN0IGNoYXIqLCB2b2lkKiwKKyAgICAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nPgorICAgICAgdDEwKGZhbHNlLCAnYScsIHN0YXRpY19jYXN0PHNob3J0
PigzKSwgNCwgNSwgMS41RiwgLTIuNSwgc3RyLCAgLy8gTk9MSU5UCisgICAgICAgICAgSW1wbGlj
aXRDYXN0Xzx2b2lkKj4oTlVMTCksICIxMCIpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgJ2EnICg5
NywgMHg2MSksIDMsIDQsIDUsIDEuNSwgLTIuNSwgIiArIFByaW50UG9pbnRlcihzdHIpICsKKyAg
ICAgICAgICAgICIgcG9pbnRpbmcgdG8gXCI4XCIsIE5VTEwsIFwiMTBcIikiLAorICAgICAgICAg
ICAgUHJpbnQodDEwKSk7Cit9CisKKy8vIE5lc3RlZCB0dXBsZXMuCitURVNUKFByaW50U3RkVHVw
bGVUZXN0LCBOZXN0ZWRUdXBsZSkgeworICA6OnN0ZDo6dHVwbGU8IDo6c3RkOjp0dXBsZTxpbnQs
IGJvb2w+LCBjaGFyPiBuZXN0ZWQoCisgICAgICA6OnN0ZDo6bWFrZV90dXBsZSg1LCB0cnVlKSwg
J2EnKTsKKyAgRVhQRUNUX0VRKCIoKDUsIHRydWUpLCAnYScgKDk3LCAweDYxKSkiLCBQcmludChu
ZXN0ZWQpKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisKKyNpZiBHVEVTVF9M
QU5HX0NYWDExCitURVNUKFByaW50TnVsbHB0clQsIEJhc2ljKSB7CisgIEVYUEVDVF9FUSgiKG51
bGxwdHIpIiwgUHJpbnQobnVsbHB0cikpOworfQorI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDEx
CisKKy8vIFRlc3RzIHByaW50aW5nIHVzZXItZGVmaW5lZCB1bnByaW50YWJsZSB0eXBlcy4KKwor
Ly8gVW5wcmludGFibGUgdHlwZXMgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCitURVNUKFByaW50
VW5wcmludGFibGVUeXBlVGVzdCwgSW5HbG9iYWxOYW1lc3BhY2UpIHsKKyAgRVhQRUNUX0VRKCIx
LWJ5dGUgb2JqZWN0IDwwMD4iLAorICAgICAgICAgICAgUHJpbnQoVW5wcmludGFibGVUZW1wbGF0
ZUluR2xvYmFsPGNoYXI+KCkpKTsKK30KKworLy8gVW5wcmludGFibGUgdHlwZXMgaW4gYSB1c2Vy
IG5hbWVzcGFjZS4KK1RFU1QoUHJpbnRVbnByaW50YWJsZVR5cGVUZXN0LCBJblVzZXJOYW1lc3Bh
Y2UpIHsKKyAgRVhQRUNUX0VRKCIxNi1ieXRlIG9iamVjdCA8RUYtMTIgMDAtMDAgMzQtQUIgMDAt
MDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDA+IiwKKyAgICAgICAgICAgIFByaW50KDo6Zm9vOjpV
bnByaW50YWJsZUluRm9vKCkpKTsKK30KKworLy8gVW5wcmludGFibGUgdHlwZXMgYXJlIHRoYXQg
dG9vIGJpZyB0byBiZSBwcmludGVkIGNvbXBsZXRlbHkuCisKK3N0cnVjdCBCaWcgeworICBCaWco
KSB7IG1lbXNldChhcnJheSwgMCwgc2l6ZW9mKGFycmF5KSk7IH0KKyAgY2hhciBhcnJheVsyNTdd
OworfTsKKworVEVTVChQcmludFVucHJpdGFibGVUeXBlVGVzdCwgQmlnT2JqZWN0KSB7CisgIEVY
UEVDVF9FUSgiMjU3LWJ5dGUgb2JqZWN0IDwwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAw
MC0wMCAiCisgICAgICAgICAgICAiMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAg
MDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgIgorICAgICAgICAgICAgIjAwLTAwIDAwLTAwIDAwLTAw
IDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwICIKKyAgICAgICAgICAg
ICIwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAuLi4gMDAtMDAgMDAtMDAgMDAt
MDAgIgorICAgICAgICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAw
LTAwIDAwLTAwIDAwLTAwIDAwLTAwICIKKyAgICAgICAgICAgICIwMC0wMCAwMC0wMCAwMC0wMCAw
MC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAiCisgICAgICAgICAgICAi
MDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDA+IiwKKyAg
ICAgICAgICAgIFByaW50KEJpZygpKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIHVzZXItZGVm
aW5lZCBzdHJlYW1hYmxlIHR5cGVzLgorCisvLyBTdHJlYW1hYmxlIHR5cGVzIGluIHRoZSBnbG9i
YWwgbmFtZXNwYWNlLgorVEVTVChQcmludFN0cmVhbWFibGVUeXBlVGVzdCwgSW5HbG9iYWxOYW1l
c3BhY2UpIHsKKyAgU3RyZWFtYWJsZUluR2xvYmFsIHg7CisgIEVYUEVDVF9FUSgiU3RyZWFtYWJs
ZUluR2xvYmFsIiwgUHJpbnQoeCkpOworICBFWFBFQ1RfRVEoIlN0cmVhbWFibGVJbkdsb2JhbCoi
LCBQcmludCgmeCkpOworfQorCisvLyBQcmludGFibGUgdGVtcGxhdGUgdHlwZXMgaW4gYSB1c2Vy
IG5hbWVzcGFjZS4KK1RFU1QoUHJpbnRTdHJlYW1hYmxlVHlwZVRlc3QsIFRlbXBsYXRlVHlwZUlu
VXNlck5hbWVzcGFjZSkgeworICBFWFBFQ1RfRVEoIlN0cmVhbWFibGVUZW1wbGF0ZUluRm9vOiAw
IiwKKyAgICAgICAgICAgIFByaW50KDo6Zm9vOjpTdHJlYW1hYmxlVGVtcGxhdGVJbkZvbzxpbnQ+
KCkpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgYSB1c2VyLWRlZmluZWQgcmVjdXJzaXZlIGNv
bnRhaW5lciB0eXBlIHRoYXQgaGFzIGEgPDwKKy8vIG9wZXJhdG9yLgorVEVTVChQcmludFN0cmVh
bWFibGVUeXBlVGVzdCwgUGF0aExpa2VJblVzZXJOYW1lc3BhY2UpIHsKKyAgOjpmb286OlBhdGhM
aWtlIHg7CisgIEVYUEVDVF9FUSgiU3RyZWFtYWJsZS1QYXRoTGlrZSIsIFByaW50KHgpKTsKKyAg
Y29uc3QgOjpmb286OlBhdGhMaWtlIGN4OworICBFWFBFQ1RfRVEoIlN0cmVhbWFibGUtUGF0aExp
a2UiLCBQcmludChjeCkpOworfQorCisvLyBUZXN0cyBwcmludGluZyB1c2VyLWRlZmluZWQgdHlw
ZXMgdGhhdCBoYXZlIGEgUHJpbnRUbygpIGZ1bmN0aW9uLgorVEVTVChQcmludFByaW50YWJsZVR5
cGVUZXN0LCBJblVzZXJOYW1lc3BhY2UpIHsKKyAgRVhQRUNUX0VRKCJQcmludGFibGVWaWFQcmlu
dFRvOiAwIiwKKyAgICAgICAgICAgIFByaW50KDo6Zm9vOjpQcmludGFibGVWaWFQcmludFRvKCkp
KTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgYSBwb2ludGVyIHRvIGEgdXNlci1kZWZpbmVkIHR5
cGUgdGhhdCBoYXMgYSA8PAorLy8gb3BlcmF0b3IgZm9yIGl0cyBwb2ludGVyLgorVEVTVChQcmlu
dFByaW50YWJsZVR5cGVUZXN0LCBQb2ludGVySW5Vc2VyTmFtZXNwYWNlKSB7CisgIDo6Zm9vOjpQ
b2ludGVyUHJpbnRhYmxlIHg7CisgIEVYUEVDVF9FUSgiUG9pbnRlclByaW50YWJsZSoiLCBQcmlu
dCgmeCkpOworfQorCisvLyBUZXN0cyBwcmludGluZyB1c2VyLWRlZmluZWQgY2xhc3MgdGVtcGxh
dGUgdGhhdCBoYXZlIGEgUHJpbnRUbygpIGZ1bmN0aW9uLgorVEVTVChQcmludFByaW50YWJsZVR5
cGVUZXN0LCBUZW1wbGF0ZUluVXNlck5hbWVzcGFjZSkgeworICBFWFBFQ1RfRVEoIlByaW50YWJs
ZVZpYVByaW50VG9UZW1wbGF0ZTogNSIsCisgICAgICAgICAgICBQcmludCg6OmZvbzo6UHJpbnRh
YmxlVmlhUHJpbnRUb1RlbXBsYXRlPGludD4oNSkpKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUg
dW5pdmVyc2FsIHByaW50ZXIgcHJpbnRzIGJvdGggdGhlIGFkZHJlc3MgYW5kIHRoZQorLy8gdmFs
dWUgb2YgYSByZWZlcmVuY2UuCitURVNUKFByaW50UmVmZXJlbmNlVGVzdCwgUHJpbnRzQWRkcmVz
c0FuZFZhbHVlKSB7CisgIGludCBuID0gNTsKKyAgRVhQRUNUX0VRKCJAIiArIFByaW50UG9pbnRl
cigmbikgKyAiIDUiLCBQcmludEJ5UmVmKG4pKTsKKworICBpbnQgYVsyXVszXSA9IHsKKyAgICB7
IDAsIDEsIDIgfSwKKyAgICB7IDMsIDQsIDUgfQorICB9OworICBFWFBFQ1RfRVEoIkAiICsgUHJp
bnRQb2ludGVyKGEpICsgIiB7IHsgMCwgMSwgMiB9LCB7IDMsIDQsIDUgfSB9IiwKKyAgICAgICAg
ICAgIFByaW50QnlSZWYoYSkpOworCisgIGNvbnN0IDo6Zm9vOjpVbnByaW50YWJsZUluRm9vIHg7
CisgIEVYUEVDVF9FUSgiQCIgKyBQcmludFBvaW50ZXIoJngpICsgIiAxNi1ieXRlIG9iamVjdCAi
CisgICAgICAgICAgICAiPEVGLTEyIDAwLTAwIDM0LUFCIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAw
IDAwLTAwPiIsCisgICAgICAgICAgICBQcmludEJ5UmVmKHgpKTsKK30KKworLy8gVGVzdHMgdGhh
dCB0aGUgdW5pdmVyc2FsIHByaW50ZXIgcHJpbnRzIGEgZnVuY3Rpb24gcG9pbnRlciBwYXNzZWQg
YnkKKy8vIHJlZmVyZW5jZS4KK1RFU1QoUHJpbnRSZWZlcmVuY2VUZXN0LCBIYW5kbGVzRnVuY3Rp
b25Qb2ludGVyKSB7CisgIHZvaWQgKCpmcCkoaW50IG4pID0gJk15RnVuY3Rpb247CisgIGNvbnN0
IHN0ZDo6c3RyaW5nIGZwX3BvaW50ZXJfc3RyaW5nID0KKyAgICAgIFByaW50UG9pbnRlcihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigmZnApKTsKKyAgLy8gV2UgY2Fubm90IGRpcmVjdGx5
IGNhc3QgJk15RnVuY3Rpb24gdG8gY29uc3Qgdm9pZCogYmVjYXVzZSB0aGUKKyAgLy8gc3RhbmRh
cmQgZGlzYWxsb3dzIGNhc3RpbmcgYmV0d2VlbiBwb2ludGVycyB0byBmdW5jdGlvbnMgYW5kCisg
IC8vIHBvaW50ZXJzIHRvIG9iamVjdHMsIGFuZCBzb21lIGNvbXBpbGVycyAoZS5nLiBHQ0MgMy40
KSBlbmZvcmNlCisgIC8vIHRoaXMgbGltaXRhdGlvbi4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgZnBf
c3RyaW5nID0gUHJpbnRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KAorICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxpbnRlcm5hbDo6QmlnZ2VzdEludD4oZnApKSk7CisgIEVYUEVD
VF9FUSgiQCIgKyBmcF9wb2ludGVyX3N0cmluZyArICIgIiArIGZwX3N0cmluZywKKyAgICAgICAg
ICAgIFByaW50QnlSZWYoZnApKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgdW5pdmVyc2FsIHBy
aW50ZXIgcHJpbnRzIGEgbWVtYmVyIGZ1bmN0aW9uIHBvaW50ZXIKKy8vIHBhc3NlZCBieSByZWZl
cmVuY2UuCitURVNUKFByaW50UmVmZXJlbmNlVGVzdCwgSGFuZGxlc01lbWJlckZ1bmN0aW9uUG9p
bnRlcikgeworICBpbnQgKEZvbzo6KnApKGNoYXIgY2gpID0gJkZvbzo6TXlNZXRob2Q7CisgIEVY
UEVDVF9UUlVFKEhhc1ByZWZpeCgKKyAgICAgIFByaW50QnlSZWYocCksCisgICAgICAiQCIgKyBQ
cmludFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oJnApKSArICIgIiArCisg
ICAgICAgICAgUHJpbnQoc2l6ZW9mKHApKSArICItYnl0ZSBvYmplY3QgIikpOworCisgIGNoYXIg
KEZvbzo6KnAyKShpbnQgbikgPSAmRm9vOjpNeVZpcnR1YWxNZXRob2Q7CisgIEVYUEVDVF9UUlVF
KEhhc1ByZWZpeCgKKyAgICAgIFByaW50QnlSZWYocDIpLAorICAgICAgIkAiICsgUHJpbnRQb2lu
dGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KCZwMikpICsgIiAiICsKKyAgICAgICAg
ICBQcmludChzaXplb2YocDIpKSArICItYnl0ZSBvYmplY3QgIikpOworfQorCisvLyBUZXN0cyB0
aGF0IHRoZSB1bml2ZXJzYWwgcHJpbnRlciBwcmludHMgYSBtZW1iZXIgdmFyaWFibGUgcG9pbnRl
cgorLy8gcGFzc2VkIGJ5IHJlZmVyZW5jZS4KK1RFU1QoUHJpbnRSZWZlcmVuY2VUZXN0LCBIYW5k
bGVzTWVtYmVyVmFyaWFibGVQb2ludGVyKSB7CisgIGludCBGb286OipwID0gJkZvbzo6dmFsdWU7
ICAvLyBOT0xJTlQKKyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KAorICAgICAgUHJpbnRCeVJlZihw
KSwKKyAgICAgICJAIiArIFByaW50UG9pbnRlcigmcCkgKyAiICIgKyBQcmludChzaXplb2YocCkp
ICsgIi1ieXRlIG9iamVjdCAiKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlKCksIHdoaWNoIGlzIHVzZWQgdG8gcHJpbnQKKy8vIGFuIG9wZXJh
bmQgaW4gYSBjb21wYXJpc29uIGFzc2VydGlvbiAoZS5nLiBBU1NFUlRfRVEpIHdoZW4gdGhlIGFz
c2VydGlvbgorLy8gZmFpbHMsIGZvcm1hdHMgdGhlIG9wZXJhbmQgaW4gdGhlIGRlc2lyZWQgd2F5
LgorCisvLyBzY2FsYXIKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVz
dCwgV29ya3NGb3JTY2FsYXIpIHsKKyAgRVhQRUNUX1NUUkVRKCIxMjMiLAorICAgICAgICAgICAg
ICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKDEyMywgMTI0KS5jX3N0cigpKTsK
K30KKworLy8gbm9uLWNoYXIgcG9pbnRlcgorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVy
ZU1lc3NhZ2VUZXN0LCBXb3Jrc0Zvck5vbkNoYXJQb2ludGVyKSB7CisgIGludCBuID0gMDsKKyAg
RVhQRUNUX0VRKFByaW50UG9pbnRlcigmbiksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2UoJm4sICZuKS5jX3N0cigpKTsKK30KKworLy8gbm9uLWNoYXIgYXJy
YXkKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgRm9ybWF0c05v
bkNoYXJBcnJheUFzUG9pbnRlcikgeworICAvLyBJbiBleHByZXNzaW9uICdhcnJheSA9PSB4Jywg
J2FycmF5JyBpcyBjb21wYXJlZCBieSBwb2ludGVyLgorICAvLyBUaGVyZWZvcmUgd2Ugd2FudCB0
byBwcmludCBhbiBhcnJheSBvcGVyYW5kIGFzIGEgcG9pbnRlci4KKyAgaW50IG5bXSA9IHsgMSwg
MiwgMyB9OworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKG4pLAorICAgICAgICAgICAgRm9ybWF0
Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKG4sIG4pLmNfc3RyKCkpOworfQorCisvLyBUZXN0
cyBmb3JtYXR0aW5nIGEgY2hhciBwb2ludGVyIHdoZW4gaXQncyBjb21wYXJlZCB3aXRoIGFub3Ro
ZXIgcG9pbnRlci4KKy8vIEluIHRoaXMgY2FzZSB3ZSB3YW50IHRvIHByaW50IGl0IGFzIGEgcmF3
IHBvaW50ZXIsIGFzIHRoZSBjb21wYXJpc29uIGlzIGJ5CisvLyBwb2ludGVyLgorCisvLyBjaGFy
IHBvaW50ZXIgdnMgcG9pbnRlcgorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2VUZXN0LCBXb3Jrc0ZvckNoYXJQb2ludGVyVnNQb2ludGVyKSB7CisgIC8vIEluIGV4cHJlc3Np
b24gJ3AgPT0geCcsIHdoZXJlICdwJyBhbmQgJ3gnIGFyZSAoY29uc3Qgb3Igbm90KSBjaGFyCisg
IC8vIHBvaW50ZXJzLCB0aGUgb3BlcmFuZHMgYXJlIGNvbXBhcmVkIGJ5IHBvaW50ZXIuICBUaGVy
ZWZvcmUgd2UKKyAgLy8gd2FudCB0byBwcmludCAncCcgYXMgYSBwb2ludGVyIGluc3RlYWQgb2Yg
YSBDIHN0cmluZyAod2UgZG9uJ3QKKyAgLy8gZXZlbiBrbm93IGlmIGl0J3Mgc3VwcG9zZWQgdG8g
cG9pbnQgdG8gYSB2YWxpZCBDIHN0cmluZykuCisKKyAgLy8gY29uc3QgY2hhcioKKyAgY29uc3Qg
Y2hhciogcyA9ICJoZWxsbyI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocyksCisgICAgICAg
ICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgcykuY19zdHIoKSk7CisK
KyAgLy8gY2hhcioKKyAgY2hhciBjaCA9ICdhJzsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcigm
Y2gpLAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKCZjaCwg
JmNoKS5jX3N0cigpKTsKK30KKworLy8gd2NoYXJfdCBwb2ludGVyIHZzIHBvaW50ZXIKK1RFU1Qo
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhclBvaW50
ZXJWc1BvaW50ZXIpIHsKKyAgLy8gSW4gZXhwcmVzc2lvbiAncCA9PSB4Jywgd2hlcmUgJ3AnIGFu
ZCAneCcgYXJlIChjb25zdCBvciBub3QpIGNoYXIKKyAgLy8gcG9pbnRlcnMsIHRoZSBvcGVyYW5k
cyBhcmUgY29tcGFyZWQgYnkgcG9pbnRlci4gIFRoZXJlZm9yZSB3ZQorICAvLyB3YW50IHRvIHBy
aW50ICdwJyBhcyBhIHBvaW50ZXIgaW5zdGVhZCBvZiBhIHdpZGUgQyBzdHJpbmcgKHdlIGRvbid0
CisgIC8vIGV2ZW4ga25vdyBpZiBpdCdzIHN1cHBvc2VkIHRvIHBvaW50IHRvIGEgdmFsaWQgd2lk
ZSBDIHN0cmluZykuCisKKyAgLy8gY29uc3Qgd2NoYXJfdCoKKyAgY29uc3Qgd2NoYXJfdCogcyA9
IEwiaGVsbG8iOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHMpLAorICAgICAgICAgICAgRm9y
bWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHMsIHMpLmNfc3RyKCkpOworCisgIC8vIHdj
aGFyX3QqCisgIHdjaGFyX3QgY2ggPSBMJ2EnOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKCZj
aCksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoJmNoLCAm
Y2gpLmNfc3RyKCkpOworfQorCisvLyBUZXN0cyBmb3JtYXR0aW5nIGEgY2hhciBwb2ludGVyIHdo
ZW4gaXQncyBjb21wYXJlZCB0byBhIHN0cmluZyBvYmplY3QuCisvLyBJbiB0aGlzIGNhc2Ugd2Ug
d2FudCB0byBwcmludCB0aGUgY2hhciBwb2ludGVyIGFzIGEgQyBzdHJpbmcuCisKKyNpZiBHVEVT
VF9IQVNfR0xPQkFMX1NUUklORworLy8gY2hhciBwb2ludGVyIHZzIDo6c3RyaW5nCitURVNUKEZv
cm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhclBvaW50ZXJW
c1N0cmluZykgeworICBjb25zdCBjaGFyKiBzID0gImhlbGxvIFwid29ybGQiOworICBFWFBFQ1Rf
U1RSRVEoIlwiaGVsbG8gXFxcIndvcmxkXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNob3Vs
ZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVN
ZXNzYWdlKHMsIDo6c3RyaW5nKCkpLmNfc3RyKCkpOworCisgIC8vIGNoYXIqCisgIGNoYXIgc3Ry
W10gPSAiaGlcMSI7CisgIGNoYXIqIHAgPSBzdHI7CisgIEVYUEVDVF9TVFJFUSgiXCJoaVxceDFc
IiIsICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAg
ICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocCwgOjpzdHJpbmcoKSkuY19z
dHIoKSk7Cit9CisjZW5kaWYKKworLy8gY2hhciBwb2ludGVyIHZzIHN0ZDo6c3RyaW5nCitURVNU
KEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhclBvaW50
ZXJWc1N0ZFN0cmluZykgeworICBjb25zdCBjaGFyKiBzID0gImhlbGxvIFwid29ybGQiOworICBF
WFBFQ1RfU1RSRVEoIlwiaGVsbG8gXFxcIndvcmxkXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50
IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZh
aWx1cmVNZXNzYWdlKHMsIDo6c3RkOjpzdHJpbmcoKSkuY19zdHIoKSk7CisKKyAgLy8gY2hhcioK
KyAgY2hhciBzdHJbXSA9ICJoaVwxIjsKKyAgY2hhciogcCA9IHN0cjsKKyAgRVhQRUNUX1NUUkVR
KCJcImhpXFx4MVwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4K
KyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShwLCA6OnN0
ZDo6c3RyaW5nKCkpLmNfc3RyKCkpOworfQorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5H
CisvLyB3Y2hhcl90IHBvaW50ZXIgdnMgOjp3c3RyaW5nCitURVNUKEZvcm1hdEZvckNvbXBhcmlz
b25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJQb2ludGVyVnNXU3RyaW5nKSB7Cisg
IGNvbnN0IHdjaGFyX3QqIHMgPSBMImhpIFwid29ybGQiOworICBFWFBFQ1RfU1RSRVEoIkxcImhp
IFxcXCJ3b3JsZFwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4K
KyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzLCA6Ondz
dHJpbmcoKSkuY19zdHIoKSk7CisKKyAgLy8gd2NoYXJfdCoKKyAgd2NoYXJfdCBzdHJbXSA9IEwi
aGlcMSI7CisgIHdjaGFyX3QqIHAgPSBzdHI7CisgIEVYUEVDVF9TVFJFUSgiTFwiaGlcXHgxXCIi
LCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAg
ICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHAsIDo6d3N0cmluZygpKS5jX3N0
cigpKTsKK30KKyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCisvLyB3Y2hhcl90
IHBvaW50ZXIgdnMgc3RkOjp3c3RyaW5nCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJl
TWVzc2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJQb2ludGVyVnNTdGRXU3RyaW5nKSB7CisgIGNvbnN0
IHdjaGFyX3QqIHMgPSBMImhpIFwid29ybGQiOworICBFWFBFQ1RfU1RSRVEoIkxcImhpIFxcXCJ3
b3JsZFwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAgICAg
ICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzLCA6OnN0ZDo6d3N0
cmluZygpKS5jX3N0cigpKTsKKworICAvLyB3Y2hhcl90KgorICB3Y2hhcl90IHN0cltdID0gTCJo
aVwxIjsKKyAgd2NoYXJfdCogcCA9IHN0cjsKKyAgRVhQRUNUX1NUUkVRKCJMXCJoaVxceDFcIiIs
ICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAg
ICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocCwgOjpzdGQ6OndzdHJpbmcoKSku
Y19zdHIoKSk7Cit9CisjZW5kaWYKKworLy8gVGVzdHMgZm9ybWF0dGluZyBhIGNoYXIgYXJyYXkg
d2hlbiBpdCdzIGNvbXBhcmVkIHdpdGggYSBwb2ludGVyIG9yIGFycmF5LgorLy8gSW4gdGhpcyBj
YXNlIHdlIHdhbnQgdG8gcHJpbnQgdGhlIGFycmF5IGFzIGEgcm93IHBvaW50ZXIsIGFzIHRoZSBj
b21wYXJpc29uCisvLyBpcyBieSBwb2ludGVyLgorCisvLyBjaGFyIGFycmF5IHZzIHBvaW50ZXIK
K1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JDaGFy
QXJyYXlWc1BvaW50ZXIpIHsKKyAgY2hhciBzdHJbXSA9ICJoaSBcIndvcmxkXCIiOworICBjaGFy
KiBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihzdHIpLAorICAgICAgICAgICAg
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgcCkuY19zdHIoKSk7Cit9CisK
Ky8vIGNoYXIgYXJyYXkgdnMgY2hhciBhcnJheQorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFp
bHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVZzQ2hhckFycmF5KSB7CisgIGNvbnN0
IGNoYXIgc3RyW10gPSAiaGkgXCJ3b3JsZFwiIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihz
dHIpLAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwg
c3RyKS5jX3N0cigpKTsKK30KKworLy8gd2NoYXJfdCBhcnJheSB2cyBwb2ludGVyCitURVNUKEZv
cm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJBcnJheVZz
UG9pbnRlcikgeworICB3Y2hhcl90IHN0cltdID0gTCJoaSBcIndvcmxkXCIiOworICB3Y2hhcl90
KiBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihzdHIpLAorICAgICAgICAgICAg
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgcCkuY19zdHIoKSk7Cit9CisK
Ky8vIHdjaGFyX3QgYXJyYXkgdnMgd2NoYXJfdCBhcnJheQorVEVTVChGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvcldDaGFyQXJyYXlWc1dDaGFyQXJyYXkpIHsK
KyAgY29uc3Qgd2NoYXJfdCBzdHJbXSA9IEwiaGkgXCJ3b3JsZFwiIjsKKyAgRVhQRUNUX0VRKFBy
aW50UG9pbnRlcihzdHIpLAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVN
ZXNzYWdlKHN0ciwgc3RyKS5jX3N0cigpKTsKK30KKworLy8gVGVzdHMgZm9ybWF0dGluZyBhIGNo
YXIgYXJyYXkgd2hlbiBpdCdzIGNvbXBhcmVkIHdpdGggYSBzdHJpbmcgb2JqZWN0LgorLy8gSW4g
dGhpcyBjYXNlIHdlIHdhbnQgdG8gcHJpbnQgdGhlIGFycmF5IGFzIGEgQyBzdHJpbmcuCisKKyNp
ZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworLy8gY2hhciBhcnJheSB2cyBzdHJpbmcKK1RFU1Qo
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JDaGFyQXJyYXlW
c1N0cmluZykgeworICBjb25zdCBjaGFyIHN0cltdID0gImhpIFwid1wwcmxkXCIiOworICBFWFBF
Q1RfU1RSRVEoIlwiaGkgXFxcIndcIiIsICAvLyBUaGUgY29udGVudCBzaG91bGQgYmUgZXNjYXBl
ZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW1iZWRkZWQgTlVMIHRlcm1p
bmF0ZXMgdGhlIHN0cmluZy4KKyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWls
dXJlTWVzc2FnZShzdHIsIDo6c3RyaW5nKCkpLmNfc3RyKCkpOworfQorI2VuZGlmCisKKy8vIGNo
YXIgYXJyYXkgdnMgc3RkOjpzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVN
ZXNzYWdlVGVzdCwgV29ya3NGb3JDaGFyQXJyYXlWc1N0ZFN0cmluZykgeworICBjb25zdCBjaGFy
IHN0cltdID0gImhpIFwid29ybGRcIiI7CisgIEVYUEVDVF9TVFJFUSgiXCJoaSBcXFwid29ybGRc
XFwiXCIiLCAgLy8gVGhlIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAg
ICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCA6OnN0ZDo6c3RyaW5nKCkp
LmNfc3RyKCkpOworfQorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCisvLyB3Y2hhcl90
IGFycmF5IHZzIHdzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdl
VGVzdCwgV29ya3NGb3JXQ2hhckFycmF5VnNXU3RyaW5nKSB7CisgIGNvbnN0IHdjaGFyX3Qgc3Ry
W10gPSBMImhpIFwid29ybGRcIiI7CisgIEVYUEVDVF9TVFJFUSgiTFwiaGkgXFxcIndvcmxkXFxc
IlwiIiwgIC8vIFRoZSBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAg
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgOjp3c3RyaW5nKCkpLmNfc3Ry
KCkpOworfQorI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKKy8vIHdjaGFyX3Qg
YXJyYXkgdnMgc3RkOjp3c3RyaW5nCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVz
c2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJBcnJheVZzU3RkV1N0cmluZykgeworICBjb25zdCB3Y2hh
cl90IHN0cltdID0gTCJoaSBcIndcMHJsZFwiIjsKKyAgRVhQRUNUX1NUUkVRKAorICAgICAgIkxc
ImhpIFxcXCJ3XCIiLCAgLy8gVGhlIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBFbWJlZGRlZCBOVUwgdGVybWluYXRlcyB0aGUgc3RyaW5nLgor
ICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgOjpzdGQ6OndzdHJp
bmcoKSkuY19zdHIoKSk7Cit9CisjZW5kaWYKKworLy8gVXNlZnVsIGZvciB0ZXN0aW5nIFByaW50
VG9TdHJpbmcoKS4gIFdlIGNhbm5vdCB1c2UgRVhQRUNUX0VRKCkKKy8vIHRoZXJlIGFzIGl0cyBp
bXBsZW1lbnRhdGlvbiB1c2VzIFByaW50VG9TdHJpbmcoKS4gIFRoZSBjYWxsZXIgbXVzdAorLy8g
ZW5zdXJlIHRoYXQgJ3ZhbHVlJyBoYXMgbm8gc2lkZSBlZmZlY3QuCisjZGVmaW5lIEVYUEVDVF9Q
UklOVF9UT19TVFJJTkdfKHZhbHVlLCBleHBlY3RlZF9zdHJpbmcpICAgICAgICAgXAorICBFWFBF
Q1RfVFJVRShQcmludFRvU3RyaW5nKHZhbHVlKSA9PSAoZXhwZWN0ZWRfc3RyaW5nKSkgICAgICAg
IFwKKyAgICAgIDw8ICIgd2hlcmUgIiAjdmFsdWUgIiBwcmludHMgYXMgIiA8PCAoUHJpbnRUb1N0
cmluZyh2YWx1ZSkpCisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIFdvcmtzRm9yU2NhbGFyKSB7
CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKDEyMywgIjEyMyIpOworfQorCitURVNUKFByaW50
VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvclBvaW50ZXJUb0NvbnN0Q2hhcikgeworICBjb25zdCBjaGFy
KiBwID0gImhlbGxvIjsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18ocCwgIlwiaGVsbG9cIiIp
OworfQorCitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvclBvaW50ZXJUb05vbkNvbnN0
Q2hhcikgeworICBjaGFyIHNbXSA9ICJoZWxsbyI7CisgIGNoYXIqIHAgPSBzOworICBFWFBFQ1Rf
UFJJTlRfVE9fU1RSSU5HXyhwLCAiXCJoZWxsb1wiIik7Cit9CisKK1RFU1QoUHJpbnRUb1N0cmlu
Z1Rlc3QsIEVzY2FwZXNGb3JQb2ludGVyVG9Db25zdENoYXIpIHsKKyAgY29uc3QgY2hhciogcCA9
ICJoZWxsb1xuIjsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18ocCwgIlwiaGVsbG9cXG5cIiIp
OworfQorCitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBFc2NhcGVzRm9yUG9pbnRlclRvTm9uQ29u
c3RDaGFyKSB7CisgIGNoYXIgc1tdID0gImhlbGxvXDEiOworICBjaGFyKiBwID0gczsKKyAgRVhQ
RUNUX1BSSU5UX1RPX1NUUklOR18ocCwgIlwiaGVsbG9cXHgxXCIiKTsKK30KKworVEVTVChQcmlu
dFRvU3RyaW5nVGVzdCwgV29ya3NGb3JBcnJheSkgeworICBpbnQgblszXSA9IHsgMSwgMiwgMyB9
OworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhuLCAieyAxLCAyLCAzIH0iKTsKK30KKworVEVT
VChQcmludFRvU3RyaW5nVGVzdCwgV29ya3NGb3JDaGFyQXJyYXkpIHsKKyAgY2hhciBzW10gPSAi
aGVsbG8iOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhzLCAiXCJoZWxsb1wiIik7Cit9CisK
K1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIFdvcmtzRm9yQ2hhckFycmF5V2l0aEVtYmVkZGVkTnVs
KSB7CisgIGNvbnN0IGNoYXIgc3RyX3dpdGhfbnVsW10gPSAiaGVsbG9cMCB3b3JsZCI7CisgIEVY
UEVDVF9QUklOVF9UT19TVFJJTkdfKHN0cl93aXRoX251bCwgIlwiaGVsbG9cXDAgd29ybGRcIiIp
OworCisgIGNoYXIgbXV0YWJsZV9zdHJfd2l0aF9udWxbXSA9ICJoZWxsb1wwIHdvcmxkIjsKKyAg
RVhQRUNUX1BSSU5UX1RPX1NUUklOR18obXV0YWJsZV9zdHJfd2l0aF9udWwsICJcImhlbGxvXFww
IHdvcmxkXCIiKTsKK30KKworICBURVNUKFByaW50VG9TdHJpbmdUZXN0LCBDb250YWluc05vbkxh
dGluKSB7CisgIC8vIFNhbml0eSB0ZXN0IHdpdGggdmFsaWQgVVRGLTguIFByaW50cyBib3RoIGlu
IGhleCBhbmQgYXMgdGV4dC4KKyAgc3RkOjpzdHJpbmcgbm9uX2FzY2lpX3N0ciA9IDo6c3RkOjpz
dHJpbmcoIuyYpOyghCA0OjMwIik7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKG5vbl9hc2Np
aV9zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcIlxceEVDXFx4OThcXHhBNFxceEVD
XFx4QTBcXHg4NCA0OjMwXCJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBBcyBU
ZXh0OiBcIuyYpOyghCA0OjMwXCIiKTsKKyAgbm9uX2FzY2lpX3N0ciA9IDo6c3RkOjpzdHJpbmco
IkZyb20gw6Qg4oCUIOG6kSIpOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhub25fYXNjaWlf
c3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiXCJGcm9tIFxceEMzXFx4QTQgXFx4RTJc
XHg4MFxceDk0IFxceEUxXFx4QkFcXHg5MVwiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4gICAgQXMgVGV4dDogXCJGcm9tIMOkIOKAlCDhupFcIiIpOworfQorCitURVNUKElzVmFsaWRV
VEY4VGVzdCwgSWxsRm9ybWVkVVRGOCkgeworICAvLyBUaGUgZm9sbG93aW5nIHRlc3Qgc3RyaW5n
cyBhcmUgaWxsLWZvcm1lZCBVVEYtOCBhbmQgYXJlIHByaW50ZWQKKyAgLy8gYXMgaGV4IG9ubHkg
KG9yIEFTQ0lJLCBpbiBjYXNlIG9mIEFTQ0lJIGJ5dGVzKSBiZWNhdXNlIElzVmFsaWRVVEY4KCkg
aXMKKyAgLy8gZXhwZWN0ZWQgdG8gZmFpbCwgdGh1cyBvdXRwdXQgZG9lcyBub3QgY29udGFpbiAi
QXMgVGV4dDoiLgorCisgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBrVGVzdGRhdGFbXVsyXSA9
IHsKKyAgICAvLyAyLWJ5dGUgbGVhZCBieXRlIGZvbGxvd2VkIGJ5IGEgc2luZ2xlLWJ5dGUgY2hh
cmFjdGVyLgorICAgIHsiXHhDM1x4NzQiLCAiXCJcXHhDM3RcIiJ9LAorICAgIC8vIFZhbGlkIDIt
Ynl0ZSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkgYW4gb3JwaGFuIHRyYWlsIGJ5dGUuCisgICAgeyJc
eEMzXHg4NFx4QTQiLCAiXCJcXHhDM1xceDg0XFx4QTRcIiJ9LAorICAgIC8vIExlYWQgYnl0ZSB3
aXRob3V0IHRyYWlsIGJ5dGUuCisgICAgeyJhYmNceEMzIiwgIlwiYWJjXFx4QzNcIiJ9LAorICAg
IC8vIDMtYnl0ZSBsZWFkIGJ5dGUsIHNpbmdsZS1ieXRlIGNoYXJhY3Rlciwgb3JwaGFuIHRyYWls
IGJ5dGUuCisgICAgeyJ4XHhFMlx4NzBceDk0IiwgIlwieFxceEUycFxceDk0XCIifSwKKyAgICAv
LyBUcnVuY2F0ZWQgMy1ieXRlIGNoYXJhY3Rlci4KKyAgICB7Ilx4RTJceDgwIiwgIlwiXFx4RTJc
XHg4MFwiIn0sCisgICAgLy8gVHJ1bmNhdGVkIDMtYnl0ZSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkg
dmFsaWQgMi1ieXRlIGNoYXIuCisgICAgeyJceEUyXHg4MFx4QzNceDg0IiwgIlwiXFx4RTJcXHg4
MFxceEMzXFx4ODRcIiJ9LAorICAgIC8vIFRydW5jYXRlZCAzLWJ5dGUgY2hhcmFjdGVyIGZvbGxv
d2VkIGJ5IGEgc2luZ2xlLWJ5dGUgY2hhcmFjdGVyLgorICAgIHsiXHhFMlx4ODBceDdBIiwgIlwi
XFx4RTJcXHg4MHpcIiJ9LAorICAgIC8vIDMtYnl0ZSBsZWFkIGJ5dGUgZm9sbG93ZWQgYnkgdmFs
aWQgMy1ieXRlIGNoYXJhY3Rlci4KKyAgICB7Ilx4RTJceEUyXHg4MFx4OTQiLCAiXCJcXHhFMlxc
eEUyXFx4ODBcXHg5NFwiIn0sCisgICAgLy8gNC1ieXRlIGxlYWQgYnl0ZSBmb2xsb3dlZCBieSB2
YWxpZCAzLWJ5dGUgY2hhcmFjdGVyLgorICAgIHsiXHhGMFx4RTJceDgwXHg5NCIsICJcIlxceEYw
XFx4RTJcXHg4MFxceDk0XCIifSwKKyAgICAvLyBUcnVuY2F0ZWQgNC1ieXRlIGNoYXJhY3Rlci4K
KyAgICB7Ilx4RjBceEUyXHg4MCIsICJcIlxceEYwXFx4RTJcXHg4MFwiIn0sCisgICAgIC8vIElu
dmFsaWQgVVRGLTggYnl0ZSBzZXF1ZW5jZXMgZW1iZWRkZWQgaW4gb3RoZXIgY2hhcnMuCisgICAg
eyJhYmNceEUyXHg4MFx4OTRceEMzXHg3NHh5YyIsICJcImFiY1xceEUyXFx4ODBcXHg5NFxceEMz
dHh5Y1wiIn0sCisgICAgeyJhYmNceEMzXHg4NFx4RTJceDgwXHhDM1x4ODR4eXoiLAorICAgICAi
XCJhYmNcXHhDM1xceDg0XFx4RTJcXHg4MFxceEMzXFx4ODR4eXpcIiJ9LAorICAgIC8vIE5vbi1z
aG9ydGVzdCBVVEYtOCBieXRlIHNlcXVlbmNlcyBhcmUgYWxzbyBpbGwtZm9ybWVkLgorICAgIC8v
IFRoZSBjbGFzc2ljczogeEMwLCB4QzEgbGVhZCBieXRlLgorICAgIHsiXHhDMFx4ODAiLCAiXCJc
XHhDMFxceDgwXCIifSwKKyAgICB7Ilx4QzFceDgxIiwgIlwiXFx4QzFcXHg4MVwiIn0sCisgICAg
Ly8gTm9uLXNob3J0ZXN0IHNlcXVlbmNlcy4KKyAgICB7Ilx4RTBceDgwXHg4MCIsICJcIlxceEUw
XFx4ODBcXHg4MFwiIn0sCisgICAgeyJceGYwXHg4MFx4ODBceDgwIiwgIlwiXFx4RjBcXHg4MFxc
eDgwXFx4ODBcIiJ9LAorICAgIC8vIExhc3QgdmFsaWQgY29kZSBwb2ludCBiZWZvcmUgc3Vycm9n
YXRlIHJhbmdlLCBzaG91bGQgYmUgcHJpbnRlZCBhcyB0ZXh0LAorICAgIC8vIHRvby4KKyAgICB7
Ilx4RURceDlGXHhCRiIsICJcIlxceEVEXFx4OUZcXHhCRlwiXG4gICAgQXMgVGV4dDogXCLtn79c
IiJ9LAorICAgIC8vIFN0YXJ0IG9mIHN1cnJvZ2F0ZSBsZWFkLiBTdXJyb2dhdGVzIGFyZSBub3Qg
cHJpbnRlZCBhcyB0ZXh0LgorICAgIHsiXHhFRFx4QTBceDgwIiwgIlwiXFx4RURcXHhBMFxceDgw
XCIifSwKKyAgICAvLyBMYXN0IG5vbi1wcml2YXRlIHN1cnJvZ2F0ZSBsZWFkLgorICAgIHsiXHhF
RFx4QURceEJGIiwgIlwiXFx4RURcXHhBRFxceEJGXCIifSwKKyAgICAvLyBGaXJzdCBwcml2YXRl
LXVzZSBzdXJyb2dhdGUgbGVhZC4KKyAgICB7Ilx4RURceEFFXHg4MCIsICJcIlxceEVEXFx4QUVc
XHg4MFwiIn0sCisgICAgLy8gTGFzdCBwcml2YXRlLXVzZSBzdXJyb2dhdGUgbGVhZC4KKyAgICB7
Ilx4RURceEFGXHhCRiIsICJcIlxceEVEXFx4QUZcXHhCRlwiIn0sCisgICAgLy8gTWlkLXBvaW50
IG9mIHN1cnJvZ2F0ZSB0cmFpbC4KKyAgICB7Ilx4RURceEIzXHhCRiIsICJcIlxceEVEXFx4QjNc
XHhCRlwiIn0sCisgICAgLy8gRmlyc3QgdmFsaWQgY29kZSBwb2ludCBhZnRlciBzdXJyb2dhdGUg
cmFuZ2UsIHNob3VsZCBiZSBwcmludGVkIGFzIHRleHQsCisgICAgLy8gdG9vLgorICAgIHsiXHhF
RVx4ODBceDgwIiwgIlwiXFx4RUVcXHg4MFxceDgwXCJcbiAgICBBcyBUZXh0OiBcIu6AgFwiIn0K
KyAgfTsKKworICBmb3IgKGludCBpID0gMDsgaSA8IGludChzaXplb2Yoa1Rlc3RkYXRhKS9zaXpl
b2Yoa1Rlc3RkYXRhWzBdKSk7ICsraSkgeworICAgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKGtU
ZXN0ZGF0YVtpXVswXSwga1Rlc3RkYXRhW2ldWzFdKTsKKyAgfQorfQorCisjdW5kZWYgRVhQRUNU
X1BSSU5UX1RPX1NUUklOR18KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VGVzdCwgV29ya3NG
b3JOb25SZWZlcmVuY2UpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2Fs
VGVyc2VQcmludCgxMjMsICZzcyk7CisgIEVYUEVDVF9FUSgiMTIzIiwgc3Muc3RyKCkpOworfQor
CitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUZXN0LCBXb3Jrc0ZvclJlZmVyZW5jZSkgeworICBj
b25zdCBpbnQmIG4gPSAxMjM7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIFVuaXZlcnNh
bFRlcnNlUHJpbnQobiwgJnNzKTsKKyAgRVhQRUNUX0VRKCIxMjMiLCBzcy5zdHIoKSk7Cit9CisK
K1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFRlc3QsIFdvcmtzRm9yQ1N0cmluZykgeworICBjb25z
dCBjaGFyKiBzMSA9ICJhYmMiOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMTsKKyAgVW5pdmVy
c2FsVGVyc2VQcmludChzMSwgJnNzMSk7CisgIEVYUEVDVF9FUSgiXCJhYmNcIiIsIHNzMS5zdHIo
KSk7CisKKyAgY2hhciogczIgPSBjb25zdF9jYXN0PGNoYXIqPihzMSk7CisgIDo6c3RkOjpzdHJp
bmdzdHJlYW0gc3MyOworICBVbml2ZXJzYWxUZXJzZVByaW50KHMyLCAmc3MyKTsKKyAgRVhQRUNU
X0VRKCJcImFiY1wiIiwgc3MyLnN0cigpKTsKKworICBjb25zdCBjaGFyKiBzMyA9IE5VTEw7Cisg
IDo6c3RkOjpzdHJpbmdzdHJlYW0gc3MzOworICBVbml2ZXJzYWxUZXJzZVByaW50KHMzLCAmc3Mz
KTsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgc3MzLnN0cigpKTsKK30KKworVEVTVChVbml2ZXJzYWxQ
cmludFRlc3QsIFdvcmtzRm9yTm9uUmVmZXJlbmNlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0g
c3M7CisgIFVuaXZlcnNhbFByaW50KDEyMywgJnNzKTsKKyAgRVhQRUNUX0VRKCIxMjMiLCBzcy5z
dHIoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsUHJpbnRUZXN0LCBXb3Jrc0ZvclJlZmVyZW5jZSkg
eworICBjb25zdCBpbnQmIG4gPSAxMjM7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIFVu
aXZlcnNhbFByaW50KG4sICZzcyk7CisgIEVYUEVDVF9FUSgiMTIzIiwgc3Muc3RyKCkpOworfQor
CitURVNUKFVuaXZlcnNhbFByaW50VGVzdCwgV29ya3NGb3JDU3RyaW5nKSB7CisgIGNvbnN0IGNo
YXIqIHMxID0gImFiYyI7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3MxOworICBVbml2ZXJzYWxQ
cmludChzMSwgJnNzMSk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIoczEpICsgIiBwb2ludGlu
ZyB0byBcImFiY1wiIiwgc3RkOjpzdHJpbmcoc3MxLnN0cigpKSk7CisKKyAgY2hhciogczIgPSBj
b25zdF9jYXN0PGNoYXIqPihzMSk7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3MyOworICBVbml2
ZXJzYWxQcmludChzMiwgJnNzMik7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIoczIpICsgIiBw
b2ludGluZyB0byBcImFiY1wiIiwgc3RkOjpzdHJpbmcoc3MyLnN0cigpKSk7CisKKyAgY29uc3Qg
Y2hhciogczMgPSBOVUxMOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMzsKKyAgVW5pdmVyc2Fs
UHJpbnQoczMsICZzczMpOworICBFWFBFQ1RfRVEoIk5VTEwiLCBzczMuc3RyKCkpOworfQorCitU
RVNUKFVuaXZlcnNhbFByaW50VGVzdCwgV29ya3NGb3JDaGFyQXJyYXkpIHsKKyAgY29uc3QgY2hh
ciBzdHJbXSA9ICJcIkxpbmVcMCAxXCJcbkxpbmUgMiI7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0g
c3MxOworICBVbml2ZXJzYWxQcmludChzdHIsICZzczEpOworICBFWFBFQ1RfRVEoIlwiXFxcIkxp
bmVcXDAgMVxcXCJcXG5MaW5lIDJcIiIsIHNzMS5zdHIoKSk7CisKKyAgY29uc3QgY2hhciBtdXRh
YmxlX3N0cltdID0gIlwiTGluZVwwIDFcIlxuTGluZSAyIjsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVh
bSBzczI7CisgIFVuaXZlcnNhbFByaW50KG11dGFibGVfc3RyLCAmc3MyKTsKKyAgRVhQRUNUX0VR
KCJcIlxcXCJMaW5lXFwwIDFcXFwiXFxuTGluZSAyXCIiLCBzczIuc3RyKCkpOworfQorCisjaWYg
R1RFU1RfSEFTX1RSMV9UVVBMRQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxk
c1RvU3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmludHNFbXB0eVR1cGxlKSB7CisgIFN0cmluZ3MgcmVz
dWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAorICAgICAgOjpz
dGQ6OnRyMTo6bWFrZV90dXBsZSgpKTsKKyAgRVhQRUNUX0VRKDB1LCByZXN1bHQuc2l6ZSgpKTsK
K30KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0
aFRyMSwgUHJpbnRzT25lVHVwbGUpIHsKKyAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJz
ZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoCisgICAgICA6OnN0ZDo6dHIxOjptYWtlX3R1cGxl
KDEpKTsKKyAgQVNTRVJUX0VRKDF1LCByZXN1bHQuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKCIxIiwg
cmVzdWx0WzBdKTsKK30KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0
cmluZ3NUZXN0V2l0aFRyMSwgUHJpbnRzVHdvVHVwbGUpIHsKKyAgU3RyaW5ncyByZXN1bHQgPSBV
bml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoCisgICAgICA6OnN0ZDo6dHIx
OjptYWtlX3R1cGxlKDEsICdhJykpOworICBBU1NFUlRfRVEoMnUsIHJlc3VsdC5zaXplKCkpOwor
ICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRbMF0pOworICBFWFBFQ1RfRVEoIidhJyAoOTcsIDB4NjEp
IiwgcmVzdWx0WzFdKTsKK30KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNU
b1N0cmluZ3NUZXN0V2l0aFRyMSwgUHJpbnRzVGVyc2VseSkgeworICBjb25zdCBpbnQgbiA9IDE7
CisgIFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJp
bmdzKAorICAgICAgOjpzdGQ6OnRyMTo6dHVwbGU8Y29uc3QgaW50JiwgY29uc3QgY2hhcio+KG4s
ICJhIikpOworICBBU1NFUlRfRVEoMnUsIHJlc3VsdC5zaXplKCkpOworICBFWFBFQ1RfRVEoIjEi
LCByZXN1bHRbMF0pOworICBFWFBFQ1RfRVEoIlwiYVwiIiwgcmVzdWx0WzFdKTsKK30KKworI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfVFIxX1RVUExFCisKKyNpZiBHVEVTVF9IQVNfU1REX1RVUExFXwor
CitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoU3Rk
LCBQcmludHNFbXB0eVR1cGxlKSB7CisgIFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQ
cmludFR1cGxlRmllbGRzVG9TdHJpbmdzKDo6c3RkOjptYWtlX3R1cGxlKCkpOworICBFWFBFQ1Rf
RVEoMHUsIHJlc3VsdC5zaXplKCkpOworfQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBs
ZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoU3RkLCBQcmludHNPbmVUdXBsZSkgeworICBTdHJpbmdz
IHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKKyAgICAg
IDo6c3RkOjptYWtlX3R1cGxlKDEpKTsKKyAgQVNTRVJUX0VRKDF1LCByZXN1bHQuc2l6ZSgpKTsK
KyAgRVhQRUNUX0VRKCIxIiwgcmVzdWx0WzBdKTsKK30KKworVEVTVChVbml2ZXJzYWxUZXJzZVBy
aW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0aFN0ZCwgUHJpbnRzVHdvVHVwbGUpIHsKKyAg
U3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3Mo
CisgICAgICA6OnN0ZDo6bWFrZV90dXBsZSgxLCAnYScpKTsKKyAgQVNTRVJUX0VRKDJ1LCByZXN1
bHQuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKCIxIiwgcmVzdWx0WzBdKTsKKyAgRVhQRUNUX0VRKCIn
YScgKDk3LCAweDYxKSIsIHJlc3VsdFsxXSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmlu
dFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhTdGQsIFByaW50c1RlcnNlbHkpIHsKKyAgY29u
c3QgaW50IG4gPSAxOworICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBs
ZUZpZWxkc1RvU3RyaW5ncygKKyAgICAgIDo6c3RkOjp0dXBsZTxjb25zdCBpbnQmLCBjb25zdCBj
aGFyKj4obiwgImEiKSk7CisgIEFTU0VSVF9FUSgydSwgcmVzdWx0LnNpemUoKSk7CisgIEVYUEVD
VF9FUSgiMSIsIHJlc3VsdFswXSk7CisgIEVYUEVDVF9FUSgiXCJhXCIiLCByZXN1bHRbMV0pOwor
fQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfVFVQTEVfCisKKyNpZiBHVEVTVF9IQVNfQUJT
TAorCitURVNUKFByaW50T3B0aW9uYWxUZXN0LCBCYXNpYykgeworICBhYnNsOjpvcHRpb25hbDxp
bnQ+IHZhbHVlOworICBFWFBFQ1RfRVEoIihudWxsb3B0KSIsIFByaW50VG9TdHJpbmcodmFsdWUp
KTsKKyAgdmFsdWUgPSB7N307CisgIEVYUEVDVF9FUSgiKDcpIiwgUHJpbnRUb1N0cmluZyh2YWx1
ZSkpOworICBFWFBFQ1RfRVEoIigxLjEpIiwgUHJpbnRUb1N0cmluZyhhYnNsOjpvcHRpb25hbDxk
b3VibGU+ezEuMX0pKTsKKyAgRVhQRUNUX0VRKCIoXCJBXCIpIiwgUHJpbnRUb1N0cmluZyhhYnNs
OjpvcHRpb25hbDxzdGQ6OnN0cmluZz57IkEifSkpOworfQorCitzdHJ1Y3QgTm9uUHJpbnRhYmxl
IHsKKyAgdW5zaWduZWQgY2hhciBjb250ZW50cyA9IDE3OworfTsKKworVEVTVChQcmludE9uZW9m
VGVzdCwgQmFzaWMpIHsKKyAgdXNpbmcgVHlwZSA9IGFic2w6OnZhcmlhbnQ8aW50LCBTdHJlYW1h
YmxlSW5HbG9iYWwsIE5vblByaW50YWJsZT47CisgIEVYUEVDVF9FUSgiKCdpbnQnIHdpdGggdmFs
dWUgNykiLCBQcmludFRvU3RyaW5nKFR5cGUoNykpKTsKKyAgRVhQRUNUX0VRKCIoJ1N0cmVhbWFi
bGVJbkdsb2JhbCcgd2l0aCB2YWx1ZSBTdHJlYW1hYmxlSW5HbG9iYWwpIiwKKyAgICAgICAgICAg
IFByaW50VG9TdHJpbmcoVHlwZShTdHJlYW1hYmxlSW5HbG9iYWx7fSkpKTsKKyAgRVhQRUNUX0VR
KAorICAgICAgIigndGVzdGluZzo6Z3Rlc3RfcHJpbnRlcnNfdGVzdDo6Tm9uUHJpbnRhYmxlJyB3
aXRoIHZhbHVlIDEtYnl0ZSBvYmplY3QgIgorICAgICAgIjwxMT4pIiwKKyAgICAgIFByaW50VG9T
dHJpbmcoVHlwZShOb25QcmludGFibGV7fSkpKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0FC
U0wKKworfSAgLy8gbmFtZXNwYWNlIGd0ZXN0X3ByaW50ZXJzX3Rlc3QKK30gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3Qtc2h1ZmZsZS10ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LXNodWZmbGUtdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NzNjYzVlY2EzZmNlNDU4YWEzYWMz
ZTM5ODUwZjQ3YmIzODJlNTViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXNodWZmbGUtdGVzdC5weQpAQCAtMCwwICsxLDMyMyBAQAor
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJWZXJpZmllcyB0aGF0
IHRlc3Qgc2h1ZmZsaW5nIHdvcmtzLiIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBndGVzdF90ZXN0
X3V0aWxzCisKKyMgQ29tbWFuZCB0byBydW4gdGhlIGdvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0XyBw
cm9ncmFtLgorQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRo
KCdnb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8nKQorCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJs
ZXMgZm9yIHRlc3Qgc2hhcmRpbmcuCitUT1RBTF9TSEFSRFNfRU5WX1ZBUiA9ICdHVEVTVF9UT1RB
TF9TSEFSRFMnCitTSEFSRF9JTkRFWF9FTlZfVkFSID0gJ0dURVNUX1NIQVJEX0lOREVYJworCitU
RVNUX0ZJTFRFUiA9ICdBKi5BOkEqLkI6QyonCisKK0FMTF9URVNUUyA9IFtdCitBQ1RJVkVfVEVT
VFMgPSBbXQorRklMVEVSRURfVEVTVFMgPSBbXQorU0hBUkRFRF9URVNUUyA9IFtdCisKK1NIVUZG
TEVEX0FMTF9URVNUUyA9IFtdCitTSFVGRkxFRF9BQ1RJVkVfVEVTVFMgPSBbXQorU0hVRkZMRURf
RklMVEVSRURfVEVTVFMgPSBbXQorU0hVRkZMRURfU0hBUkRFRF9URVNUUyA9IFtdCisKKworZGVm
IEFsc29SdW5EaXNhYmxlZFRlc3RzRmxhZygpOgorICByZXR1cm4gJy0tZ3Rlc3RfYWxzb19ydW5f
ZGlzYWJsZWRfdGVzdHMnCisKKworZGVmIEZpbHRlckZsYWcodGVzdF9maWx0ZXIpOgorICByZXR1
cm4gJy0tZ3Rlc3RfZmlsdGVyPSVzJyAlICh0ZXN0X2ZpbHRlciwpCisKKworZGVmIFJlcGVhdEZs
YWcobik6CisgIHJldHVybiAnLS1ndGVzdF9yZXBlYXQ9JXMnICUgKG4sKQorCisKK2RlZiBTaHVm
ZmxlRmxhZygpOgorICByZXR1cm4gJy0tZ3Rlc3Rfc2h1ZmZsZScKKworCitkZWYgUmFuZG9tU2Vl
ZEZsYWcobik6CisgIHJldHVybiAnLS1ndGVzdF9yYW5kb21fc2VlZD0lcycgJSAobiwpCisKKwor
ZGVmIFJ1bkFuZFJldHVybk91dHB1dChleHRyYV9lbnYsIGFyZ3MpOgorICAiIiJSdW5zIHRoZSB0
ZXN0IHByb2dyYW0gYW5kIHJldHVybnMgaXRzIG91dHB1dC4iIiIKKworICBlbnZpcm9uX2NvcHkg
PSBvcy5lbnZpcm9uLmNvcHkoKQorICBlbnZpcm9uX2NvcHkudXBkYXRlKGV4dHJhX2VudikKKwor
ICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtDT01NQU5EXSArIGFyZ3MsIGVu
dj1lbnZpcm9uX2NvcHkpLm91dHB1dAorCisKK2RlZiBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMo
ZXh0cmFfZW52LCBhcmdzKToKKyAgIiIiUnVucyB0aGUgdGVzdCBwcm9ncmFtIGFuZCByZXR1cm5z
IGEgbGlzdCBvZiB0ZXN0IGxpc3RzLgorCisgIEFyZ3M6CisgICAgZXh0cmFfZW52OiBhIG1hcCBm
cm9tIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byB0aGVpciB2YWx1ZXMKKyAgICBhcmdzOiBjb21t
YW5kIGxpbmUgZmxhZ3MgdG8gcGFzcyB0byBnb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8KKworICBS
ZXR1cm5zOgorICAgIEEgbGlzdCB3aGVyZSB0aGUgaS10aCBlbGVtZW50IGlzIHRoZSBsaXN0IG9m
IHRlc3RzIHJ1biBpbiB0aGUgaS10aAorICAgIHRlc3QgaXRlcmF0aW9uLgorICAiIiIKKworICB0
ZXN0X2l0ZXJhdGlvbnMgPSBbXQorICBmb3IgbGluZSBpbiBSdW5BbmRSZXR1cm5PdXRwdXQoZXh0
cmFfZW52LCBhcmdzKS5zcGxpdCgnXG4nKToKKyAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJy0tLS0n
KToKKyAgICAgIHRlc3RzID0gW10KKyAgICAgIHRlc3RfaXRlcmF0aW9ucy5hcHBlbmQodGVzdHMp
CisgICAgZWxpZiBsaW5lLnN0cmlwKCk6CisgICAgICB0ZXN0cy5hcHBlbmQobGluZS5zdHJpcCgp
KSAgIyAnVGVzdENhc2VOYW1lLlRlc3ROYW1lJworCisgIHJldHVybiB0ZXN0X2l0ZXJhdGlvbnMK
KworCitkZWYgR2V0VGVzdENhc2VzKHRlc3RzKToKKyAgIiIiUmV0dXJucyBhIGxpc3Qgb2YgdGVz
dCBjYXNlcyBpbiB0aGUgZ2l2ZW4gZnVsbCB0ZXN0IG5hbWVzLgorCisgIEFyZ3M6CisgICAgdGVz
dHM6IGEgbGlzdCBvZiBmdWxsIHRlc3QgbmFtZXMKKworICBSZXR1cm5zOgorICAgIEEgbGlzdCBv
ZiB0ZXN0IGNhc2VzIGZyb20gJ3Rlc3RzJywgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIuCisgICAg
Q29uc2VjdXRpdmUgZHVwbGljYXRlcyBhcmUgcmVtb3ZlZC4KKyAgIiIiCisKKyAgdGVzdF9jYXNl
cyA9IFtdCisgIGZvciB0ZXN0IGluIHRlc3RzOgorICAgIHRlc3RfY2FzZSA9IHRlc3Quc3BsaXQo
Jy4nKVswXQorICAgIGlmIG5vdCB0ZXN0X2Nhc2UgaW4gdGVzdF9jYXNlczoKKyAgICAgIHRlc3Rf
Y2FzZXMuYXBwZW5kKHRlc3RfY2FzZSkKKworICByZXR1cm4gdGVzdF9jYXNlcworCisKK2RlZiBD
YWxjdWxhdGVUZXN0TGlzdHMoKToKKyAgIiIiQ2FsY3VsYXRlcyB0aGUgbGlzdCBvZiB0ZXN0cyBy
dW4gdW5kZXIgZGlmZmVyZW50IGZsYWdzLiIiIgorCisgIGlmIG5vdCBBTExfVEVTVFM6CisgICAg
QUxMX1RFU1RTLmV4dGVuZCgKKyAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHt9LCBb
QWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKCldKVswXSkKKworICBpZiBub3QgQUNUSVZFX1RFU1RT
OgorICAgIEFDVElWRV9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHt9LCBb
XSlbMF0pCisKKyAgaWYgbm90IEZJTFRFUkVEX1RFU1RTOgorICAgIEZJTFRFUkVEX1RFU1RTLmV4
dGVuZCgKKyAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHt9LCBbRmlsdGVyRmxhZyhU
RVNUX0ZJTFRFUildKVswXSkKKworICBpZiBub3QgU0hBUkRFRF9URVNUUzoKKyAgICBTSEFSREVE
X1RFU1RTLmV4dGVuZCgKKyAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9T
SEFSRFNfRU5WX1ZBUjogJzMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNI
QVJEX0lOREVYX0VOVl9WQVI6ICcxJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbXSlbMF0pCisKKyAgaWYgbm90IFNIVUZGTEVEX0FMTF9URVNUUzoKKyAgICBTSFVGRkxFRF9B
TExfVEVTVFMuZXh0ZW5kKEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKKyAgICAgICAge30sIFtB
bHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcoKSwgU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWco
MSldKVswXSkKKworICBpZiBub3QgU0hVRkZMRURfQUNUSVZFX1RFU1RTOgorICAgIFNIVUZGTEVE
X0FDVElWRV9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICB7
fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSlbMF0pCisKKyAgaWYgbm90IFNI
VUZGTEVEX0ZJTFRFUkVEX1RFU1RTOgorICAgIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTLmV4dGVu
ZChHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisgICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwg
UmFuZG9tU2VlZEZsYWcoMSksIEZpbHRlckZsYWcoVEVTVF9GSUxURVIpXSlbMF0pCisKKyAgaWYg
bm90IFNIVUZGTEVEX1NIQVJERURfVEVTVFM6CisgICAgU0hVRkZMRURfU0hBUkRFRF9URVNUUy5l
eHRlbmQoCisgICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7VE9UQUxfU0hBUkRTX0VO
Vl9WQVI6ICczJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRF9JTkRF
WF9FTlZfVkFSOiAnMSd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NodWZm
bGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSlbMF0pCisKKworY2xhc3MgR1Rlc3RTaHVmZmxl
VW5pdFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICIiIlRlc3RzIHRlc3Qgc2h1
ZmZsaW5nLiIiIgorCisgIGRlZiBzZXRVcChzZWxmKToKKyAgICBDYWxjdWxhdGVUZXN0TGlzdHMo
KQorCisgIGRlZiB0ZXN0U2h1ZmZsZVByZXNlcnZlc051bWJlck9mVGVzdHMoc2VsZik6CisgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oQUxMX1RFU1RTKSwgbGVuKFNIVUZGTEVEX0FMTF9URVNUUykp
CisgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oQUNUSVZFX1RFU1RTKSwgbGVuKFNIVUZGTEVEX0FD
VElWRV9URVNUUykpCisgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oRklMVEVSRURfVEVTVFMpLCBs
ZW4oU0hVRkZMRURfRklMVEVSRURfVEVTVFMpKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFNI
QVJERURfVEVTVFMpLCBsZW4oU0hVRkZMRURfU0hBUkRFRF9URVNUUykpCisKKyAgZGVmIHRlc3RT
aHVmZmxlQ2hhbmdlc1Rlc3RPcmRlcihzZWxmKToKKyAgICBzZWxmLmFzc2VydF8oU0hVRkZMRURf
QUxMX1RFU1RTICE9IEFMTF9URVNUUywgU0hVRkZMRURfQUxMX1RFU1RTKQorICAgIHNlbGYuYXNz
ZXJ0XyhTSFVGRkxFRF9BQ1RJVkVfVEVTVFMgIT0gQUNUSVZFX1RFU1RTLCBTSFVGRkxFRF9BQ1RJ
VkVfVEVTVFMpCisgICAgc2VsZi5hc3NlcnRfKFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTICE9IEZJ
TFRFUkVEX1RFU1RTLAorICAgICAgICAgICAgICAgICBTSFVGRkxFRF9GSUxURVJFRF9URVNUUykK
KyAgICBzZWxmLmFzc2VydF8oU0hVRkZMRURfU0hBUkRFRF9URVNUUyAhPSBTSEFSREVEX1RFU1RT
LAorICAgICAgICAgICAgICAgICBTSFVGRkxFRF9TSEFSREVEX1RFU1RTKQorCisgIGRlZiB0ZXN0
U2h1ZmZsZUNoYW5nZXNUZXN0Q2FzZU9yZGVyKHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0XyhHZXRU
ZXN0Q2FzZXMoU0hVRkZMRURfQUxMX1RFU1RTKSAhPSBHZXRUZXN0Q2FzZXMoQUxMX1RFU1RTKSwK
KyAgICAgICAgICAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX0FMTF9URVNUUykpCisgICAg
c2VsZi5hc3NlcnRfKAorICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfQUNUSVZFX1RFU1RT
KSAhPSBHZXRUZXN0Q2FzZXMoQUNUSVZFX1RFU1RTKSwKKyAgICAgICAgR2V0VGVzdENhc2VzKFNI
VUZGTEVEX0FDVElWRV9URVNUUykpCisgICAgc2VsZi5hc3NlcnRfKAorICAgICAgICBHZXRUZXN0
Q2FzZXMoU0hVRkZMRURfRklMVEVSRURfVEVTVFMpICE9IEdldFRlc3RDYXNlcyhGSUxURVJFRF9U
RVNUUyksCisgICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9GSUxURVJFRF9URVNUUykpCisg
ICAgc2VsZi5hc3NlcnRfKAorICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfU0hBUkRFRF9U
RVNUUykgIT0gR2V0VGVzdENhc2VzKFNIQVJERURfVEVTVFMpLAorICAgICAgICBHZXRUZXN0Q2Fz
ZXMoU0hVRkZMRURfU0hBUkRFRF9URVNUUykpCisKKyAgZGVmIHRlc3RTaHVmZmxlRG9lc05vdFJl
cGVhdFRlc3Qoc2VsZik6CisgICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUxMX1RFU1RTOgorICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9BTExfVEVTVFMuY291bnQodGVzdCksCisg
ICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0ZXN0
LCkpCisgICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTOgorICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMuY291bnQodGVzdCksCisgICAgICAg
ICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0ZXN0LCkpCisg
ICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFM6CisgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDEsIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTLmNvdW50KHRlc3QpLAorICAgICAgICAg
ICAgICAgICAgICAgICAnJXMgYXBwZWFycyBtb3JlIHRoYW4gb25jZScgJSAodGVzdCwpKQorICAg
IGZvciB0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydEVx
dWFsKDEsIFNIVUZGTEVEX1NIQVJERURfVEVTVFMuY291bnQodGVzdCksCisgICAgICAgICAgICAg
ICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0ZXN0LCkpCisKKyAgZGVm
IHRlc3RTaHVmZmxlRG9lc05vdENyZWF0ZU5ld1Rlc3Qoc2VsZik6CisgICAgZm9yIHRlc3QgaW4g
U0hVRkZMRURfQUxMX1RFU1RTOgorICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gQUxMX1RFU1RT
LCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCisgICAgZm9yIHRlc3QgaW4gU0hV
RkZMRURfQUNUSVZFX1RFU1RTOgorICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gQUNUSVZFX1RF
U1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCisgICAgZm9yIHRlc3QgaW4g
U0hVRkZMRURfRklMVEVSRURfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBGSUxU
RVJFRF9URVNUUywgJyVzIGlzIGFuIGludmFsaWQgdGVzdCcgJSAodGVzdCwpKQorICAgIGZvciB0
ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydF8odGVzdCBp
biBTSEFSREVEX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCisKKyAg
ZGVmIHRlc3RTaHVmZmxlSW5jbHVkZXNBbGxUZXN0cyhzZWxmKToKKyAgICBmb3IgdGVzdCBpbiBB
TExfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVGRkxFRF9BTExfVEVTVFMs
ICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCisgICAgZm9yIHRlc3QgaW4gQUNUSVZFX1RFU1RT
OgorICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTLCAnJXMg
aXMgbWlzc2luZycgJSAodGVzdCwpKQorICAgIGZvciB0ZXN0IGluIEZJTFRFUkVEX1RFU1RTOgor
ICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFMsICclcyBp
cyBtaXNzaW5nJyAlICh0ZXN0LCkpCisgICAgZm9yIHRlc3QgaW4gU0hBUkRFRF9URVNUUzoKKyAg
ICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFMsICclcyBpcyBt
aXNzaW5nJyAlICh0ZXN0LCkpCisKKyAgZGVmIHRlc3RTaHVmZmxlTGVhdmVzRGVhdGhUZXN0c0F0
RnJvbnQoc2VsZik6CisgICAgbm9uX2RlYXRoX3Rlc3RfZm91bmQgPSBGYWxzZQorICAgIGZvciB0
ZXN0IGluIFNIVUZGTEVEX0FDVElWRV9URVNUUzoKKyAgICAgIGlmICdEZWF0aFRlc3QuJyBpbiB0
ZXN0OgorICAgICAgICBzZWxmLmFzc2VydF8obm90IG5vbl9kZWF0aF90ZXN0X2ZvdW5kLAorICAg
ICAgICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgYWZ0ZXIgYSBub24tZGVhdGggdGVzdCcgJSAo
dGVzdCwpKQorICAgICAgZWxzZToKKyAgICAgICAgbm9uX2RlYXRoX3Rlc3RfZm91bmQgPSBUcnVl
CisKKyAgZGVmIF9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUoc2VsZiwgdGVzdHMpOgor
ICAgIHRlc3RfY2FzZXMgPSBbXQorICAgIGZvciB0ZXN0IGluIHRlc3RzOgorICAgICAgW3Rlc3Rf
Y2FzZSwgX10gPSB0ZXN0LnNwbGl0KCcuJykKKyAgICAgIGlmIHRlc3RfY2FzZXMgYW5kIHRlc3Rf
Y2FzZXNbLTFdICE9IHRlc3RfY2FzZToKKyAgICAgICAgdGVzdF9jYXNlcy5hcHBlbmQodGVzdF9j
YXNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHRlc3RfY2FzZXMuY291bnQodGVzdF9j
YXNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnVGVzdCBjYXNlICVzIGlzIG5vdCBncm91
cGVkIHRvZ2V0aGVyIGluICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3RfY2Fz
ZSwgdGVzdHMpKQorCisgIGRlZiB0ZXN0U2h1ZmZsZURvZXNOb3RJbnRlcmxlYXZlVGVzdENhc2Vz
KHNlbGYpOgorICAgIHNlbGYuX1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50ZXJsZWF2ZShTSFVGRkxF
RF9BTExfVEVTVFMpCisgICAgc2VsZi5fVmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRlcmxlYXZlKFNI
VUZGTEVEX0FDVElWRV9URVNUUykKKyAgICBzZWxmLl9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVy
bGVhdmUoU0hVRkZMRURfRklMVEVSRURfVEVTVFMpCisgICAgc2VsZi5fVmVyaWZ5VGVzdENhc2Vz
RG9Ob3RJbnRlcmxlYXZlKFNIVUZGTEVEX1NIQVJERURfVEVTVFMpCisKKyAgZGVmIHRlc3RTaHVm
ZmxlUmVzdG9yZXNPcmRlckFmdGVyRWFjaEl0ZXJhdGlvbihzZWxmKToKKyAgICAjIEdldCB0aGUg
dGVzdCBsaXN0cyBpbiBhbGwgMyBpdGVyYXRpb25zLCB1c2luZyByYW5kb20gc2VlZCAxLCAyLAor
ICAgICMgYW5kIDMgcmVzcGVjdGl2ZWx5LiAgR29vZ2xlIFRlc3QgcGlja3MgYSBkaWZmZXJlbnQg
c2VlZCBpbiBlYWNoCisgICAgIyBpdGVyYXRpb24sIGFuZCB0aGlzIHRlc3QgZGVwZW5kcyBvbiB0
aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbgorICAgICMgcGlja2luZyBzdWNjZXNzaXZlIG51bWJl
cnMuICBUaGlzIGRlcGVuZGVuY3kgaXMgbm90IGlkZWFsLCBidXQKKyAgICAjIG1ha2VzIHRoZSB0
ZXN0IG11Y2ggZWFzaWVyIHRvIHdyaXRlLgorICAgIFt0ZXN0c19pbl9pdGVyYXRpb24xLCB0ZXN0
c19pbl9pdGVyYXRpb24yLCB0ZXN0c19pbl9pdGVyYXRpb24zXSA9ICgKKyAgICAgICAgR2V0VGVz
dHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5k
b21TZWVkRmxhZygxKSwgUmVwZWF0RmxhZygzKV0pKQorCisgICAgIyBNYWtlIHN1cmUgcnVubmlu
ZyB0aGUgdGVzdHMgd2l0aCByYW5kb20gc2VlZCAxIGdldHMgdGhlIHNhbWUKKyAgICAjIG9yZGVy
IGFzIGluIGl0ZXJhdGlvbiAxIGFib3ZlLgorICAgIFt0ZXN0c193aXRoX3NlZWQxXSA9IEdldFRl
c3RzRm9yQWxsSXRlcmF0aW9ucygKKyAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21T
ZWVkRmxhZygxKV0pCisgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0c19pbl9pdGVyYXRpb24xLCB0
ZXN0c193aXRoX3NlZWQxKQorCisgICAgIyBNYWtlIHN1cmUgcnVubmluZyB0aGUgdGVzdHMgd2l0
aCByYW5kb20gc2VlZCAyIGdldHMgdGhlIHNhbWUKKyAgICAjIG9yZGVyIGFzIGluIGl0ZXJhdGlv
biAyIGFib3ZlLiAgU3VjY2VzcyBtZWFucyB0aGF0IEdvb2dsZSBUZXN0CisgICAgIyBjb3JyZWN0
bHkgcmVzdG9yZXMgdGhlIHRlc3Qgb3JkZXIgYmVmb3JlIHJlLXNodWZmbGluZyBhdCB0aGUKKyAg
ICAjIGJlZ2lubmluZyBvZiBpdGVyYXRpb24gMi4KKyAgICBbdGVzdHNfd2l0aF9zZWVkMl0gPSBH
ZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisgICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFu
ZG9tU2VlZEZsYWcoMildKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHNfaW5faXRlcmF0aW9u
MiwgdGVzdHNfd2l0aF9zZWVkMikKKworICAgICMgTWFrZSBzdXJlIHJ1bm5pbmcgdGhlIHRlc3Rz
IHdpdGggcmFuZG9tIHNlZWQgMyBnZXRzIHRoZSBzYW1lCisgICAgIyBvcmRlciBhcyBpbiBpdGVy
YXRpb24gMyBhYm92ZS4gIFN1Y2Nlc3MgbWVhbnMgdGhhdCBHb29nbGUgVGVzdAorICAgICMgY29y
cmVjdGx5IHJlc3RvcmVzIHRoZSB0ZXN0IG9yZGVyIGJlZm9yZSByZS1zaHVmZmxpbmcgYXQgdGhl
CisgICAgIyBiZWdpbm5pbmcgb2YgaXRlcmF0aW9uIDMuCisgICAgW3Rlc3RzX3dpdGhfc2VlZDNd
ID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCks
IFJhbmRvbVNlZWRGbGFnKDMpXSkKKyAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzX2luX2l0ZXJh
dGlvbjMsIHRlc3RzX3dpdGhfc2VlZDMpCisKKyAgZGVmIHRlc3RTaHVmZmxlR2VuZXJhdGVzTmV3
T3JkZXJJbkVhY2hJdGVyYXRpb24oc2VsZik6CisgICAgW3Rlc3RzX2luX2l0ZXJhdGlvbjEsIHRl
c3RzX2luX2l0ZXJhdGlvbjIsIHRlc3RzX2luX2l0ZXJhdGlvbjNdID0gKAorICAgICAgICBHZXRU
ZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisgICAgICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJh
bmRvbVNlZWRGbGFnKDEpLCBSZXBlYXRGbGFnKDMpXSkpCisKKyAgICBzZWxmLmFzc2VydF8odGVz
dHNfaW5faXRlcmF0aW9uMSAhPSB0ZXN0c19pbl9pdGVyYXRpb24yLAorICAgICAgICAgICAgICAg
ICB0ZXN0c19pbl9pdGVyYXRpb24xKQorICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0c19pbl9pdGVyYXRp
b24xICE9IHRlc3RzX2luX2l0ZXJhdGlvbjMsCisgICAgICAgICAgICAgICAgIHRlc3RzX2luX2l0
ZXJhdGlvbjEpCisgICAgc2VsZi5hc3NlcnRfKHRlc3RzX2luX2l0ZXJhdGlvbjIgIT0gdGVzdHNf
aW5faXRlcmF0aW9uMywKKyAgICAgICAgICAgICAgICAgdGVzdHNfaW5faXRlcmF0aW9uMikKKwor
ICBkZWYgdGVzdFNodWZmbGVTaGFyZGVkVGVzdHNQcmVzZXJ2ZXNQYXJ0aXRpb24oc2VsZik6Cisg
ICAgIyBJZiB3ZSBydW4gTSB0ZXN0cyBvbiBOIHNoYXJkcywgdGhlIHNhbWUgTSB0ZXN0cyBzaG91
bGQgYmUgcnVuIGluCisgICAgIyB0b3RhbCwgcmVnYXJkbGVzcyBvZiB0aGUgcmFuZG9tIHNlZWRz
IHVzZWQgYnkgdGhlIHNoYXJkcy4KKyAgICBbdGVzdHMxXSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0
aW9ucyh7VE9UQUxfU0hBUkRTX0VOVl9WQVI6ICczJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU0hBUkRfSU5ERVhfRU5WX1ZBUjogJzAnfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZs
YWcoMSldKQorICAgIFt0ZXN0czJdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9T
SEFSRFNfRU5WX1ZBUjogJzMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMSd9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygyMCldKQorICAg
IFt0ZXN0czNdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZB
UjogJzMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRF9J
TkRFWF9FTlZfVkFSOiAnMid9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygyNSldKQorICAgIHNvcnRlZF9zaGFy
ZGVkX3Rlc3RzID0gdGVzdHMxICsgdGVzdHMyICsgdGVzdHMzCisgICAgc29ydGVkX3NoYXJkZWRf
dGVzdHMuc29ydCgpCisgICAgc29ydGVkX2FjdGl2ZV90ZXN0cyA9IFtdCisgICAgc29ydGVkX2Fj
dGl2ZV90ZXN0cy5leHRlbmQoQUNUSVZFX1RFU1RTKQorICAgIHNvcnRlZF9hY3RpdmVfdGVzdHMu
c29ydCgpCisgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWRfYWN0aXZlX3Rlc3RzLCBzb3J0ZWRf
c2hhcmRlZF90ZXN0cykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rlc3RfdGVz
dF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9nb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZlNWY2YWJhMmE1ZTBm
ZmNhYjkxNWU0NjM4ZDIzZjU4Y2Y0OGZmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfLmNjCkBAIC0wLDAgKzEs
MTAyIEBACisvLyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLwor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKwor
Ly8gVmVyaWZpZXMgdGhhdCB0ZXN0IHNodWZmbGluZyB3b3Jrcy4KKworI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CisKK3VzaW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZl
bnRMaXN0ZW5lcjsKK3VzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7Cit1c2luZyA6OnRl
c3Rpbmc6Ok1lc3NhZ2U7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6
OlRlc3RFdmVudExpc3RlbmVyczsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdEluZm87Cit1c2luZyA6
OnRlc3Rpbmc6OlVuaXRUZXN0OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVkX3B0
cjsKKworLy8gVGhlIHRlc3QgbWV0aG9kcyBhcmUgZW1wdHksIGFzIHRoZSBzb2xlIHB1cnBvc2Ug
b2YgdGhpcyBwcm9ncmFtIGlzCisvLyB0byBwcmludCB0aGUgdGVzdCBuYW1lcyBiZWZvcmUvYWZ0
ZXIgc2h1ZmZsaW5nLgorCitjbGFzcyBBIDogcHVibGljIFRlc3Qge307CitURVNUX0YoQSwgQSkg
e30KK1RFU1RfRihBLCBCKSB7fQorCitURVNUKEFEZWF0aFRlc3QsIEEpIHt9CitURVNUKEFEZWF0
aFRlc3QsIEIpIHt9CitURVNUKEFEZWF0aFRlc3QsIEMpIHt9CisKK1RFU1QoQiwgQSkge30KK1RF
U1QoQiwgQikge30KK1RFU1QoQiwgQykge30KK1RFU1QoQiwgRElTQUJMRURfRCkge30KK1RFU1Qo
QiwgRElTQUJMRURfRSkge30KKworVEVTVChCRGVhdGhUZXN0LCBBKSB7fQorVEVTVChCRGVhdGhU
ZXN0LCBCKSB7fQorCitURVNUKEMsIEEpIHt9CitURVNUKEMsIEIpIHt9CitURVNUKEMsIEMpIHt9
CitURVNUKEMsIERJU0FCTEVEX0QpIHt9CisKK1RFU1QoQ0RlYXRoVGVzdCwgQSkge30KKworVEVT
VChESVNBQkxFRF9ELCBBKSB7fQorVEVTVChESVNBQkxFRF9ELCBESVNBQkxFRF9CKSB7fQorCisv
LyBUaGlzIHByaW50ZXIgcHJpbnRzIHRoZSBmdWxsIHRlc3QgbmFtZXMgb25seSwgc3RhcnRpbmcg
ZWFjaCB0ZXN0CisvLyBpdGVyYXRpb24gd2l0aCBhICItLS0tIiBtYXJrZXIuCitjbGFzcyBUZXN0
TmFtZVByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CisgcHVibGljOgor
ICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qIHVu
aXRfdGVzdCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKiBp
dGVyYXRpb24gKi8pIHsKKyAgICBwcmludGYoIi0tLS1cbiIpOworICB9CisKKyAgdmlydHVhbCB2
b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKKyAgICBwcmludGYo
IiVzLiVzXG4iLCB0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7
CisgIH0KK307CisKK30gIC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
KmFyZ3YpIHsKKyAgSW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIC8vIFJlcGxhY2Vz
IHRoZSBkZWZhdWx0IHByaW50ZXIgd2l0aCBUZXN0TmFtZVByaW50ZXIsIHdoaWNoIHByaW50cwor
ICAvLyB0aGUgdGVzdCBuYW1lIG9ubHkuCisgIFRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJz
ID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpOworICBkZWxldGUgbGlzdGVu
ZXJzLlJlbGVhc2UobGlzdGVuZXJzLmRlZmF1bHRfcmVzdWx0X3ByaW50ZXIoKSk7CisgIGxpc3Rl
bmVycy5BcHBlbmQobmV3IFRlc3ROYW1lUHJpbnRlcik7CisKKyAgcmV0dXJuIFJVTl9BTExfVEVT
VFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xl
dGVzdC10ZXN0LXBhcnQtdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC10ZXN0LXBhcnQtdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDJkNmY5ZTg1OGY1Mjc5YmE1
YTE2YTVkMWE2ZTM3YWZmZTkxMGFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRlc3QtcGFydC10ZXN0LmNjCkBAIC0wLDAgKzEsMjA1
IEBACisvLyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLgorLy8gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
Ly8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
KwordXNpbmcgdGVzdGluZzo6TWVzc2FnZTsKK3VzaW5nIHRlc3Rpbmc6OlRlc3Q7Cit1c2luZyB0
ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDsKK3VzaW5nIHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0QXJy
YXk7CisKK25hbWVzcGFjZSB7CisKKy8vIFRlc3RzIHRoZSBUZXN0UGFydFJlc3VsdCBjbGFzcy4K
KworLy8gVGhlIHRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyBUZXN0UGFydFJlc3VsdC4KK2NsYXNz
IFRlc3RQYXJ0UmVzdWx0VGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIFRlc3RQ
YXJ0UmVzdWx0VGVzdCgpCisgICAgICA6IHIxXyhUZXN0UGFydFJlc3VsdDo6a1N1Y2Nlc3MsICJm
b28vYmFyLmNjIiwgMTAsICJTdWNjZXNzISIpLAorICAgICAgICByMl8oVGVzdFBhcnRSZXN1bHQ6
OmtOb25GYXRhbEZhaWx1cmUsICJmb28vYmFyLmNjIiwgLTEsICJGYWlsdXJlISIpLAorICAgICAg
ICByM18oVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsIE5VTEwsIC0xLCAiRmFpbHVyZSEi
KSB7fQorCisgIFRlc3RQYXJ0UmVzdWx0IHIxXywgcjJfLCByM187Cit9OworCisKK1RFU1RfRihU
ZXN0UGFydFJlc3VsdFRlc3QsIENvbnN0cnVjdG9yV29ya3MpIHsKKyAgTWVzc2FnZSBtZXNzYWdl
OworICBtZXNzYWdlIDw8ICJzb21ldGhpbmcgaXMgdGVycmlibHkgd3JvbmciOworICBtZXNzYWdl
IDw8IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPih0ZXN0aW5nOjppbnRlcm5hbDo6a1N0YWNrVHJh
Y2VNYXJrZXIpOworICBtZXNzYWdlIDw8ICJzb21lIHVuaW1wb3J0YW50IHN0YWNrIHRyYWNlIjsK
KworICBjb25zdCBUZXN0UGFydFJlc3VsdCByZXN1bHQoVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRh
bEZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic29tZV9maWxlLmNjIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0cigpKTsKKworICBFWFBFQ1RfRVEoVGVz
dFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsIHJlc3VsdC50eXBlKCkpOworICBFWFBFQ1Rf
U1RSRVEoInNvbWVfZmlsZS5jYyIsIHJlc3VsdC5maWxlX25hbWUoKSk7CisgIEVYUEVDVF9FUSg0
MiwgcmVzdWx0LmxpbmVfbnVtYmVyKCkpOworICBFWFBFQ1RfU1RSRVEobWVzc2FnZS5HZXRTdHJp
bmcoKS5jX3N0cigpLCByZXN1bHQubWVzc2FnZSgpKTsKKyAgRVhQRUNUX1NUUkVRKCJzb21ldGhp
bmcgaXMgdGVycmlibHkgd3JvbmciLCByZXN1bHQuc3VtbWFyeSgpKTsKK30KKworVEVTVF9GKFRl
c3RQYXJ0UmVzdWx0VGVzdCwgUmVzdWx0QWNjZXNzb3JzV29yaykgeworICBjb25zdCBUZXN0UGFy
dFJlc3VsdCBzdWNjZXNzKFRlc3RQYXJ0UmVzdWx0OjprU3VjY2VzcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZmlsZS5jYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UiKTsKKyAgRVhQ
RUNUX1RSVUUoc3VjY2Vzcy5wYXNzZWQoKSk7CisgIEVYUEVDVF9GQUxTRShzdWNjZXNzLmZhaWxl
ZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3Mubm9uZmF0YWxseV9mYWlsZWQoKSk7CisgIEVY
UEVDVF9GQUxTRShzdWNjZXNzLmZhdGFsbHlfZmFpbGVkKCkpOworCisgIGNvbnN0IFRlc3RQYXJ0
UmVzdWx0IG5vbmZhdGFsX2ZhaWx1cmUoVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUuY2MiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIik7CisgIEVYUEVDVF9GQUxTRShub25m
YXRhbF9mYWlsdXJlLnBhc3NlZCgpKTsKKyAgRVhQRUNUX1RSVUUobm9uZmF0YWxfZmFpbHVyZS5m
YWlsZWQoKSk7CisgIEVYUEVDVF9UUlVFKG5vbmZhdGFsX2ZhaWx1cmUubm9uZmF0YWxseV9mYWls
ZWQoKSk7CisgIEVYUEVDVF9GQUxTRShub25mYXRhbF9mYWlsdXJlLmZhdGFsbHlfZmFpbGVkKCkp
OworCisgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IGZhdGFsX2ZhaWx1cmUoVGVzdFBhcnRSZXN1bHQ6
OmtGYXRhbEZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZp
bGUuY2MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIik7CisgIEVYUEVDVF9GQUxT
RShmYXRhbF9mYWlsdXJlLnBhc3NlZCgpKTsKKyAgRVhQRUNUX1RSVUUoZmF0YWxfZmFpbHVyZS5m
YWlsZWQoKSk7CisgIEVYUEVDVF9GQUxTRShmYXRhbF9mYWlsdXJlLm5vbmZhdGFsbHlfZmFpbGVk
KCkpOworICBFWFBFQ1RfVFJVRShmYXRhbF9mYWlsdXJlLmZhdGFsbHlfZmFpbGVkKCkpOworfQor
CisvLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6dHlwZSgpLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0
VGVzdCwgdHlwZSkgeworICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNzLCByMV8u
dHlwZSgpKTsKKyAgRVhQRUNUX0VRKFRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlLCBy
Ml8udHlwZSgpKTsKKyAgRVhQRUNUX0VRKFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLCBy
M18udHlwZSgpKTsKK30KKworLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6OmZpbGVfbmFtZSgpLgor
VEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgZmlsZV9uYW1lKSB7CisgIEVYUEVDVF9TVFJFUSgi
Zm9vL2Jhci5jYyIsIHIxXy5maWxlX25hbWUoKSk7CisgIEVYUEVDVF9TVFJFUShOVUxMLCByM18u
ZmlsZV9uYW1lKCkpOworfQorCisvLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6bGluZV9udW1iZXIo
KS4KK1RFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIGxpbmVfbnVtYmVyKSB7CisgIEVYUEVDVF9F
USgxMCwgcjFfLmxpbmVfbnVtYmVyKCkpOworICBFWFBFQ1RfRVEoLTEsIHIyXy5saW5lX251bWJl
cigpKTsKK30KKworLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6Om1lc3NhZ2UoKS4KK1RFU1RfRihU
ZXN0UGFydFJlc3VsdFRlc3QsIG1lc3NhZ2UpIHsKKyAgRVhQRUNUX1NUUkVRKCJTdWNjZXNzISIs
IHIxXy5tZXNzYWdlKCkpOworfQorCisvLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6cGFzc2VkKCku
CitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBQYXNzZWQpIHsKKyAgRVhQRUNUX1RSVUUocjFf
LnBhc3NlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHIyXy5wYXNzZWQoKSk7CisgIEVYUEVDVF9GQUxT
RShyM18ucGFzc2VkKCkpOworfQorCisvLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6ZmFpbGVkKCku
CitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBGYWlsZWQpIHsKKyAgRVhQRUNUX0ZBTFNFKHIx
Xy5mYWlsZWQoKSk7CisgIEVYUEVDVF9UUlVFKHIyXy5mYWlsZWQoKSk7CisgIEVYUEVDVF9UUlVF
KHIzXy5mYWlsZWQoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpmYXRhbGx5X2Zh
aWxlZCgpLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgRmF0YWxseUZhaWxlZCkgeworICBF
WFBFQ1RfRkFMU0UocjFfLmZhdGFsbHlfZmFpbGVkKCkpOworICBFWFBFQ1RfRkFMU0UocjJfLmZh
dGFsbHlfZmFpbGVkKCkpOworICBFWFBFQ1RfVFJVRShyM18uZmF0YWxseV9mYWlsZWQoKSk7Cit9
CisKKy8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0Ojpub25mYXRhbGx5X2ZhaWxlZCgpLgorVEVTVF9G
KFRlc3RQYXJ0UmVzdWx0VGVzdCwgTm9uZmF0YWxseUZhaWxlZCkgeworICBFWFBFQ1RfRkFMU0Uo
cjFfLm5vbmZhdGFsbHlfZmFpbGVkKCkpOworICBFWFBFQ1RfVFJVRShyMl8ubm9uZmF0YWxseV9m
YWlsZWQoKSk7CisgIEVYUEVDVF9GQUxTRShyM18ubm9uZmF0YWxseV9mYWlsZWQoKSk7Cit9CisK
Ky8vIFRlc3RzIHRoZSBUZXN0UGFydFJlc3VsdEFycmF5IGNsYXNzLgorCitjbGFzcyBUZXN0UGFy
dFJlc3VsdEFycmF5VGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIFRlc3RQYXJ0
UmVzdWx0QXJyYXlUZXN0KCkKKyAgICAgIDogcjFfKFRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxG
YWlsdXJlLCAiZm9vL2Jhci5jYyIsIC0xLCAiRmFpbHVyZSAxIiksCisgICAgICAgIHIyXyhUZXN0
UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwgImZvby9iYXIuY2MiLCAtMSwgIkZhaWx1cmUgMiIp
IHt9CisKKyAgY29uc3QgVGVzdFBhcnRSZXN1bHQgcjFfLCByMl87Cit9OworCisvLyBUZXN0cyB0
aGF0IFRlc3RQYXJ0UmVzdWx0QXJyYXkgaW5pdGlhbGx5IGhhcyBzaXplIDAuCitURVNUX0YoVGVz
dFBhcnRSZXN1bHRBcnJheVRlc3QsIEluaXRpYWxTaXplSXNaZXJvKSB7CisgIFRlc3RQYXJ0UmVz
dWx0QXJyYXkgcmVzdWx0czsKKyAgRVhQRUNUX0VRKDAsIHJlc3VsdHMuc2l6ZSgpKTsKK30KKwor
Ly8gVGVzdHMgdGhhdCBUZXN0UGFydFJlc3VsdEFycmF5IGNvbnRhaW5zIHRoZSBnaXZlbiBUZXN0
UGFydFJlc3VsdAorLy8gYWZ0ZXIgb25lIEFwcGVuZCgpIG9wZXJhdGlvbi4KK1RFU1RfRihUZXN0
UGFydFJlc3VsdEFycmF5VGVzdCwgQ29udGFpbnNHaXZlblJlc3VsdEFmdGVyQXBwZW5kKSB7Cisg
IFRlc3RQYXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsKKyAgcmVzdWx0cy5BcHBlbmQocjFfKTsKKyAg
RVhQRUNUX0VRKDEsIHJlc3VsdHMuc2l6ZSgpKTsKKyAgRVhQRUNUX1NUUkVRKCJGYWlsdXJlIDEi
LCByZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDApLm1lc3NhZ2UoKSk7Cit9CisKKy8vIFRlc3Rz
IHRoYXQgVGVzdFBhcnRSZXN1bHRBcnJheSBjb250YWlucyB0aGUgZ2l2ZW4gVGVzdFBhcnRSZXN1
bHRzCisvLyBhZnRlciB0d28gQXBwZW5kKCkgb3BlcmF0aW9ucy4KK1RFU1RfRihUZXN0UGFydFJl
c3VsdEFycmF5VGVzdCwgQ29udGFpbnNHaXZlblJlc3VsdHNBZnRlclR3b0FwcGVuZHMpIHsKKyAg
VGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOworICByZXN1bHRzLkFwcGVuZChyMV8pOworICBy
ZXN1bHRzLkFwcGVuZChyMl8pOworICBFWFBFQ1RfRVEoMiwgcmVzdWx0cy5zaXplKCkpOworICBF
WFBFQ1RfU1RSRVEoIkZhaWx1cmUgMSIsIHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMCkubWVz
c2FnZSgpKTsKKyAgRVhQRUNUX1NUUkVRKCJGYWlsdXJlIDIiLCByZXN1bHRzLkdldFRlc3RQYXJ0
UmVzdWx0KDEpLm1lc3NhZ2UoKSk7Cit9CisKK3R5cGVkZWYgVGVzdFBhcnRSZXN1bHRBcnJheVRl
c3QgVGVzdFBhcnRSZXN1bHRBcnJheURlYXRoVGVzdDsKKworLy8gVGVzdHMgdGhhdCB0aGUgcHJv
Z3JhbSBkaWVzIHdoZW4gR2V0VGVzdFBhcnRSZXN1bHQoKSBpcyBjYWxsZWQgd2l0aAorLy8gYW4g
aW52YWxpZCBpbmRleC4KK1RFU1RfRihUZXN0UGFydFJlc3VsdEFycmF5RGVhdGhUZXN0LCBEaWVz
V2hlbkluZGV4SXNPdXRPZkJvdW5kKSB7CisgIFRlc3RQYXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsK
KyAgcmVzdWx0cy5BcHBlbmQocjFfKTsKKworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHJl
c3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoLTEpLCAiIik7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQ
T1JURUQocmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgxKSwgIiIpOworfQorCisvLyBGSVhNRTog
QWRkIGEgdGVzdCBmb3IgdGhlIGNsYXNzIEhhc05ld0ZhdGFsRmFpbHVyZUhlbHBlci4KKworfSAg
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3QtdGVzdDJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC10ZXN0Ml90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyZjk4ZGM3ZDFjM2U5MDk3NThiYTYw
NzcyZTk3NzQ5OGNlODFmZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtdGVzdDJfdGVzdC5jYwpAQCAtMCwwICsxLDYxIEBACisvLyBD
b3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3Ry
aWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vCisvLyBUZXN0cyBm
b3IgR29vZ2xlIFRlc3QgaXRzZWxmLiAgVGhpcyB2ZXJpZmllcyB0aGF0IHRoZSBiYXNpYyBjb25z
dHJ1Y3RzIG9mCisvLyBHb29nbGUgVGVzdCB3b3JrLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKKyNpbmNsdWRlICJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5oIgorCit1c2luZyA6OnRl
c3Rpbmc6OlZhbHVlczsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9y
OworCisvLyBUZXN0cyB0aGF0IGdlbmVyYXRvcnMgZGVmaW5lZCBpbiBhIGRpZmZlcmVudCB0cmFu
c2xhdGlvbiB1bml0CisvLyBhcmUgZnVuY3Rpb25hbC4gVGhlIHRlc3QgdXNpbmcgZXh0ZXJuX2dl
bl8yIGlzIGRlZmluZWQKKy8vIGluIGdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmNjLgorUGFy
YW1HZW5lcmF0b3I8aW50PiBleHRlcm5fZ2VuXzIgPSBWYWx1ZXMoMzMpOworCisvLyBUZXN0cyB0
aGF0IGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGRlZmluZWQgaW4gb25lIHRyYW5z
bGF0aW9uIHVuaXQKKy8vIGFuZCBpbnN0YW50aWF0ZWQgaW4gYW5vdGhlci4gVGhlIHRlc3QgaXMg
ZGVmaW5lZCBpbgorLy8gZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MgYW5kIEV4dGVybmFs
SW5zdGFudGlhdGlvblRlc3QgZml4dHVyZSBjbGFzcyBpcworLy8gZGVmaW5lZCBpbiBndGVzdC1w
YXJhbS10ZXN0X3Rlc3QuaC4KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKE11bHRpcGxlc09mMzMs
CisgICAgICAgICAgICAgICAgICAgICAgICBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDMzLCA2NikpOworCisvLyBUZXN0cyB0aGF0IGEg
cGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGluc3RhbnRpYXRlZAorLy8gaW4gbXVsdGlw
bGUgdHJhbnNsYXRpb24gdW5pdHMuIEFub3RoZXIgaW5zdGFudGlhdGlvbiBpcyBkZWZpbmVkCisv
LyBpbiBnb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYyBhbmQKKy8vIEluc3RhbnRpYXRpb25J
bk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCBmaXh0dXJlIGlzIGRlZmluZWQgaW4KKy8vIGd0
ZXN0LXBhcmFtLXRlc3RfdGVzdC5oCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5jZTIs
CisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFp
b25Vbml0c1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNDIqMywgNDIqNCwg
NDIqNSkpOworCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9nb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NmNi
OWY2ZGEzMWRlYWRmZDdlZWZkMjM1ZTliMzdkZjI5ZmIzYmFmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUt
dGVzdC5weQpAQCAtMCwwICsxLDE2OSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENv
cHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworIiIiVGVzdHMgR29vZ2xlIFRlc3QncyB0aHJvdy1vbi1mYWlsdXJlIG1v
ZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLgorCitUaGlzIHNjcmlwdCBpbnZva2VzIGdvb2ds
ZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aAorR29v
Z2xlIFRlc3QpIHdpdGggZGlmZmVyZW50IGVudmlyb25tZW50cyBhbmQgY29tbWFuZCBsaW5lIGZs
YWdzLgorIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworCisjIENv
bnN0YW50cy4KKworIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgZm9yIGVuYWJsaW5nL2Rpc2FibGlu
ZyB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLgorVEhST1dfT05fRkFJTFVSRSA9ICdndGVzdF90
aHJvd19vbl9mYWlsdXJlJworCisjIFBhdGggdG8gdGhlIGdvb2dsZXRlc3QtdGhyb3ctb24tZmFp
bHVyZS10ZXN0XyBwcm9ncmFtLCBjb21waWxlZCB3aXRoCisjIGV4Y2VwdGlvbnMgZGlzYWJsZWQu
CitFWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKAorICAg
ICdnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8nKQorCisKKyMgVXRpbGl0aWVzLgor
CisKK2RlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgorICAiIiJTZXRzIGFuIGVudmlyb25t
ZW50IHZhcmlhYmxlIHRvIGEgZ2l2ZW4gdmFsdWU7IHVuc2V0cyBpdCB3aGVuIHRoZQorICBnaXZl
biB2YWx1ZSBpcyBOb25lLgorICAiIiIKKworICBlbnZfdmFyID0gZW52X3Zhci51cHBlcigpCisg
IGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAgIG9zLmVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQor
ICBlbGlmIGVudl92YXIgaW4gb3MuZW52aXJvbjoKKyAgICBkZWwgb3MuZW52aXJvbltlbnZfdmFy
XQorCisKK2RlZiBSdW4oY29tbWFuZCk6CisgICIiIlJ1bnMgYSBjb21tYW5kOyByZXR1cm5zIFRy
dWUvRmFsc2UgaWYgaXRzIGV4aXQgY29kZSBpcy9pc24ndCAwLiIiIgorCisgIHByaW50ICdSdW5u
aW5nICIlcyIuIC4gLicgJSAnICcuam9pbihjb21tYW5kKQorICBwID0gZ3Rlc3RfdGVzdF91dGls
cy5TdWJwcm9jZXNzKGNvbW1hbmQpCisgIHJldHVybiBwLmV4aXRlZCBhbmQgcC5leGl0X2NvZGUg
PT0gMAorCisKKyMgVGhlIHRlc3RzLiAgRklYTUU6IHJlZmFjdG9yIHRoZSBjbGFzcyB0byBzaGFy
ZSBjb21tb24KKyMgbG9naWMgd2l0aCBjb2RlIGluIGdvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVy
ZS11bml0dGVzdC5weS4KK2NsYXNzIFRocm93T25GYWlsdXJlVGVzdChndGVzdF90ZXN0X3V0aWxz
LlRlc3RDYXNlKToKKyAgIiIiVGVzdHMgdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZS4iIiIKKwor
ICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGVudl92YXJfdmFsdWUsIGZsYWdfdmFsdWUsIHNob3Vs
ZF9mYWlsKToKKyAgICAiIiJSdW5zIGdvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0XyBh
bmQgdmVyaWZpZXMgdGhhdCBpdCBkb2VzCisgICAgKG9yIGRvZXMgbm90KSBleGl0IHdpdGggYSBu
b24temVybyBjb2RlLgorCisgICAgQXJnczoKKyAgICAgIGVudl92YXJfdmFsdWU6ICAgIHZhbHVl
IG9mIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50CisgICAgICAgICAgICAg
ICAgICAgICAgICB2YXJpYWJsZTsgTm9uZSBpZiB0aGUgdmFyaWFibGUgc2hvdWxkIGJlIHVuc2V0
LgorICAgICAgZmxhZ192YWx1ZTogICAgICAgdmFsdWUgb2YgdGhlIC0tZ3Rlc3RfYnJlYWtfb25f
ZmFpbHVyZSBmbGFnOworICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSBpZiB0aGUgZmxhZyBz
aG91bGQgbm90IGJlIHByZXNlbnQuCisgICAgICBzaG91bGRfZmFpbDogICAgICBUcnVlIGlmZiB0
aGUgcHJvZ3JhbSBpcyBleHBlY3RlZCB0byBmYWlsLgorICAgICIiIgorCisgICAgU2V0RW52VmFy
KFRIUk9XX09OX0ZBSUxVUkUsIGVudl92YXJfdmFsdWUpCisKKyAgICBpZiBlbnZfdmFyX3ZhbHVl
IGlzIE5vbmU6CisgICAgICBlbnZfdmFyX3ZhbHVlX21zZyA9ICcgaXMgbm90IHNldCcKKyAgICBl
bHNlOgorICAgICAgZW52X3Zhcl92YWx1ZV9tc2cgPSAnPScgKyBlbnZfdmFyX3ZhbHVlCisKKyAg
ICBpZiBmbGFnX3ZhbHVlIGlzIE5vbmU6CisgICAgICBmbGFnID0gJycKKyAgICBlbGlmIGZsYWdf
dmFsdWUgPT0gJzAnOgorICAgICAgZmxhZyA9ICctLSVzPTAnICUgVEhST1dfT05fRkFJTFVSRQor
ICAgIGVsc2U6CisgICAgICBmbGFnID0gJy0tJXMnICUgVEhST1dfT05fRkFJTFVSRQorCisgICAg
Y29tbWFuZCA9IFtFWEVfUEFUSF0KKyAgICBpZiBmbGFnOgorICAgICAgY29tbWFuZC5hcHBlbmQo
ZmxhZykKKworICAgIGlmIHNob3VsZF9mYWlsOgorICAgICAgc2hvdWxkX29yX25vdCA9ICdzaG91
bGQnCisgICAgZWxzZToKKyAgICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxkIG5vdCcKKworICAg
IGZhaWxlZCA9IG5vdCBSdW4oY29tbWFuZCkKKworICAgIFNldEVudlZhcihUSFJPV19PTl9GQUlM
VVJFLCBOb25lKQorCisgICAgbXNnID0gKCd3aGVuICVzJXMsIGFuIGFzc2VydGlvbiBmYWlsdXJl
IGluICIlcyIgJXMgY2F1c2UgYSBub24temVybyAnCisgICAgICAgICAgICdleGl0IGNvZGUuJyAl
CisgICAgICAgICAgIChUSFJPV19PTl9GQUlMVVJFLCBlbnZfdmFyX3ZhbHVlX21zZywgJyAnLmpv
aW4oY29tbWFuZCksCisgICAgICAgICAgICBzaG91bGRfb3Jfbm90KSkKKyAgICBzZWxmLmFzc2Vy
dF8oZmFpbGVkID09IHNob3VsZF9mYWlsLCBtc2cpCisKKyAgZGVmIHRlc3REZWZhdWx0QmVoYXZp
b3Ioc2VsZik6CisgICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0IG1vZGUu
IiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsIGZsYWdfdmFs
dWU9Tm9uZSwgc2hvdWxkX2ZhaWw9RmFsc2UpCisKKyAgZGVmIHRlc3RUaHJvd09uRmFpbHVyZUVu
dlZhcihzZWxmKToKKyAgICAiIiJUZXN0cyB1c2luZyB0aGUgR1RFU1RfVEhST1dfT05fRkFJTFVS
RSBlbnZpcm9ubWVudCB2YXJpYWJsZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92
YXJfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1GYWxzZSkKKyAgICBzZWxmLlJ1bkFuZFZl
cmlmeShlbnZfdmFyX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVl
PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9VHJ1ZSkKKworICBkZWYg
dGVzdFRocm93T25GYWlsdXJlRmxhZyhzZWxmKToKKyAgICAiIiJUZXN0cyB1c2luZyB0aGUgLS1n
dGVzdF90aHJvd19vbl9mYWlsdXJlIGZsYWcuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShl
bnZfdmFyX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcs
CisgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9RmFsc2UpCisgICAgc2VsZi5SdW5B
bmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdf
dmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPVRydWUpCisKKyAg
ZGVmIHRlc3RUaHJvd09uRmFpbHVyZUZsYWdPdmVycmlkZXNFbnZWYXIoc2VsZik6CisgICAgIiIi
VGVzdHMgdGhhdCAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmUgb3ZlcnJpZGVzIEdURVNUX1RIUk9X
X09OX0ZBSUxVUkUuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScw
JywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAg
ICAgICAgICBzaG91bGRfZmFpbD1GYWxzZSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFy
X3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKKyAgICAg
ICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1UcnVlKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5
KGVudl92YXJfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAn
LAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPUZhbHNlKQorICAgIHNlbGYuUnVu
QW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdf
dmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPVRydWUpCisKKwor
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10aHJvdy1v
bi1mYWlsdXJlLXRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjlhMmM2NDQ4YTI5Y2Ey
OTY0OWExMjQ4MDU5YTk4NWE1MWFmODYzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfLmNjCkBA
IC0wLDAgKzEsNzEgQEAKKy8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworCisvLyBUZXN0cyBHb29nbGUgVGVzdCdzIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRo
IGV4Y2VwdGlvbnMgZGlzYWJsZWQuCisvLworLy8gVGhpcyBwcm9ncmFtIG11c3QgYmUgY29tcGls
ZWQgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLiAgSXQgd2lsbCBiZQorLy8gaW52b2tlZCBieSBn
b29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdC5weSwgYW5kIGlzIGV4cGVjdGVkIHRvIGV4
aXQKKy8vIHdpdGggbm9uLXplcm8gaW4gdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZSBvciAwIG90
aGVyd2lzZS4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpbmNsdWRlIDxzdGRpby5o
PiAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgZmZsdXNoLCBmcHJpbnRmLCBOVUxMLCBldGMu
CisjaW5jbHVkZSA8c3RkbGliLmg+ICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGV4aXQKKyNp
bmNsdWRlIDxleGNlcHRpb24+ICAgICAgICAgICAgICAgICAgICAvLyBmb3Igc2V0X3Rlcm1pbmF0
ZQorCisvLyBUaGlzIHRlcm1pbmF0ZSBoYW5kbGVyIGFib3J0cyB0aGUgcHJvZ3JhbSB1c2luZyBl
eGl0KCkgcmF0aGVyIHRoYW4gYWJvcnQoKS4KKy8vIFRoaXMgYXZvaWRzIHNob3dpbmcgcG9wLXVw
cyBvbiBXaW5kb3dzIHN5c3RlbXMgYW5kIGNvcmUgZHVtcHMgb24gVW5peC1saWtlCisvLyBvbmVz
Lgordm9pZCBUZXJtaW5hdGVIYW5kbGVyKCkgeworICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCAi
VW5oYW5kbGVkIEMrKyBleGNlcHRpb24gdGVybWluYXRpbmcgdGhlIHByb2dyYW0uIik7CisgIGZm
bHVzaChOVUxMKTsKKyAgZXhpdCgxKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBh
cmd2KSB7CisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKyAgc3RkOjpzZXRfdGVybWluYXRlKCZU
ZXJtaW5hdGVIYW5kbGVyKTsKKyNlbmRpZgorICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJn
YywgYXJndik7CisKKyAgLy8gV2Ugd2FudCB0byBlbnN1cmUgdGhhdCBwZW9wbGUgY2FuIHVzZSBH
b29nbGUgVGVzdCBhc3NlcnRpb25zIGluCisgIC8vIG90aGVyIHRlc3RpbmcgZnJhbWV3b3Jrcywg
YXMgbG9uZyBhcyB0aGV5IGluaXRpYWxpemUgR29vZ2xlIFRlc3QKKyAgLy8gcHJvcGVybHkgYW5k
IHNldCB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLiAgVGhlcmVmb3JlLCB3ZSBkb24ndAorICAv
LyB1c2UgR29vZ2xlIFRlc3QncyBjb25zdHJ1Y3RzIGZvciBkZWZpbmluZyBhbmQgcnVubmluZyB0
ZXN0cworICAvLyAoZS5nLiBURVNUIGFuZCBSVU5fQUxMX1RFU1RTKSBoZXJlLgorCisgIC8vIElu
IHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLCB0aGlz
CisgIC8vIGFzc2VydGlvbiB3aWxsIGNhdXNlIHRoZSBwcm9ncmFtIHRvIGV4aXQgd2l0aCBhIG5v
bi16ZXJvIGNvZGUuCisgIEVYUEVDVF9FUSgyLCAzKTsKKworICAvLyBXaGVuIG5vdCBpbiB0aGUg
dGhyb3ctb24tZmFpbHVyZSBtb2RlLCB0aGUgY29udHJvbCB3aWxsIHJlYWNoCisgIC8vIGhlcmUu
CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9nb29nbGV0ZXN0LXR1cGxlLXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtdHVwbGUtdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDgyYzE2MGYxNzdkNmYzYmFk
ZDc3MDY0YWI4YzdlOThiZDI5NzY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXR1cGxlLXRlc3QuY2MKQEAgLTAsMCArMSwzMTkgQEAK
Ky8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8g
ZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjaW5jbHVk
ZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaCIKKyNpbmNsdWRlIDx1dGlsaXR5PgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CisKK3VzaW5nIDo6c3RkOjp0cjE6
OmdldDsKK3VzaW5nIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGU7Cit1c2luZyA6OnN0ZDo6dHIxOjp0
dXBsZTsKK3VzaW5nIDo6c3RkOjp0cjE6OnR1cGxlX2VsZW1lbnQ7Cit1c2luZyA6OnN0ZDo6dHIx
Ojp0dXBsZV9zaXplOwordXNpbmcgOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE7CisKKy8v
IFRlc3RzIHRoYXQgdHVwbGVfZWxlbWVudDxLLCB0dXBsZTxUMCwgVDEsIC4uLiwgVE4+ID46OnR5
cGUgcmV0dXJucyBUSy4KK1RFU1QodHVwbGVfZWxlbWVudF9UZXN0LCBSZXR1cm5zRWxlbWVudFR5
cGUpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCwgdHVwbGVfZWxlbWVudDwwLCB0dXBsZTxp
bnQsIGNoYXI+ID46OnR5cGU+KCk7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxpbnQmLCB0dXBsZV9l
bGVtZW50PDEsIHR1cGxlPGRvdWJsZSwgaW50Jj4gPjo6dHlwZT4oKTsKKyAgU3RhdGljQXNzZXJ0
VHlwZUVxPGJvb2wsIHR1cGxlX2VsZW1lbnQ8MiwgdHVwbGU8ZG91YmxlLCBpbnQsIGJvb2w+ID46
OnR5cGU+KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdHVwbGVfc2l6ZTxUPjo6dmFsdWUgZ2l2ZXMg
dGhlIG51bWJlciBvZiBmaWVsZHMgaW4gdHVwbGUKKy8vIHR5cGUgVC4KK1RFU1QodHVwbGVfc2l6
ZV9UZXN0LCBSZXR1cm5zTnVtYmVyT2ZGaWVsZHMpIHsKKyAgRVhQRUNUX0VRKDAsICt0dXBsZV9z
aXplPHR1cGxlPD4gPjo6dmFsdWUpOworICBFWFBFQ1RfRVEoMSwgK3R1cGxlX3NpemU8dHVwbGU8
dm9pZCo+ID46OnZhbHVlKTsKKyAgRVhQRUNUX0VRKDEsICt0dXBsZV9zaXplPHR1cGxlPGNoYXI+
ID46OnZhbHVlKTsKKyAgRVhQRUNUX0VRKDEsICsodHVwbGVfc2l6ZTx0dXBsZTx0dXBsZTxpbnQs
IGRvdWJsZT4gPiA+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRVEoMiwgKyh0dXBsZV9zaXplPHR1cGxl
PGludCYsIGNvbnN0IGNoYXI+ID46OnZhbHVlKSk7CisgIEVYUEVDVF9FUSgzLCArKHR1cGxlX3Np
emU8dHVwbGU8Y2hhciosIHZvaWQsIGNvbnN0IGJvb2wmPiA+Ojp2YWx1ZSkpOworfQorCisvLyBU
ZXN0cyBjb21wYXJpbmcgYSB0dXBsZSB3aXRoIGl0c2VsZi4KK1RFU1QoQ29tcGFyaXNvblRlc3Qs
IENvbXBhcmVzV2l0aFNlbGYpIHsKKyAgY29uc3QgdHVwbGU8aW50LCBjaGFyLCBib29sPiBhKDUs
ICdhJywgZmFsc2UpOworCisgIEVYUEVDVF9UUlVFKGEgPT0gYSk7CisgIEVYUEVDVF9GQUxTRShh
ICE9IGEpOworfQorCisvLyBUZXN0cyBjb21wYXJpbmcgdHdvIHR1cGxlcyB3aXRoIHRoZSBzYW1l
IHZhbHVlLgorVEVTVChDb21wYXJpc29uVGVzdCwgQ29tcGFyZXNFcXVhbFR1cGxlcykgeworICBj
b25zdCB0dXBsZTxpbnQsIGJvb2w+IGEoNSwgdHJ1ZSksIGIoNSwgdHJ1ZSk7CisKKyAgRVhQRUNU
X1RSVUUoYSA9PSBiKTsKKyAgRVhQRUNUX0ZBTFNFKGEgIT0gYik7Cit9CisKKy8vIFRlc3RzIGNv
bXBhcmluZyB0d28gZGlmZmVyZW50IHR1cGxlcyB0aGF0IGhhdmUgbm8gcmVmZXJlbmNlIGZpZWxk
cy4KK1RFU1QoQ29tcGFyaXNvblRlc3QsIENvbXBhcmVzVW5lcXVhbFR1cGxlc1dpdGhvdXRSZWZl
cmVuY2VGaWVsZHMpIHsKKyAgdHlwZWRlZiB0dXBsZTxjb25zdCBpbnQsIGNoYXI+IEZvb1R1cGxl
OworCisgIGNvbnN0IEZvb1R1cGxlIGEoMCwgJ3gnKTsKKyAgY29uc3QgRm9vVHVwbGUgYigxLCAn
YScpOworCisgIEVYUEVDVF9UUlVFKGEgIT0gYik7CisgIEVYUEVDVF9GQUxTRShhID09IGIpOwor
CisgIGNvbnN0IEZvb1R1cGxlIGMoMSwgJ2InKTsKKworICBFWFBFQ1RfVFJVRShiICE9IGMpOwor
ICBFWFBFQ1RfRkFMU0UoYiA9PSBjKTsKK30KKworLy8gVGVzdHMgY29tcGFyaW5nIHR3byBkaWZm
ZXJlbnQgdHVwbGVzIHRoYXQgaGF2ZSByZWZlcmVuY2UgZmllbGRzLgorVEVTVChDb21wYXJpc29u
VGVzdCwgQ29tcGFyZXNVbmVxdWFsVHVwbGVzV2l0aFJlZmVyZW5jZUZpZWxkcykgeworICB0eXBl
ZGVmIHR1cGxlPGludCYsIGNvbnN0IGNoYXImPiBGb29UdXBsZTsKKworICBpbnQgaSA9IDU7Cisg
IGNvbnN0IGNoYXIgY2ggPSAnYSc7CisgIGNvbnN0IEZvb1R1cGxlIGEoaSwgY2gpOworCisgIGlu
dCBqID0gNjsKKyAgY29uc3QgRm9vVHVwbGUgYihqLCBjaCk7CisKKyAgRVhQRUNUX1RSVUUoYSAh
PSBiKTsKKyAgRVhQRUNUX0ZBTFNFKGEgPT0gYik7CisKKyAgaiA9IDU7CisgIGNvbnN0IGNoYXIg
Y2gyID0gJ2InOworICBjb25zdCBGb29UdXBsZSBjKGosIGNoMik7CisKKyAgRVhQRUNUX1RSVUUo
YiAhPSBjKTsKKyAgRVhQRUNUX0ZBTFNFKGIgPT0gYyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSB0
dXBsZSBmaWVsZCB3aXRoIGEgcmVmZXJlbmNlIHR5cGUgaXMgYW4gYWxpYXMgb2YgdGhlCisvLyB2
YXJpYWJsZSBpdCdzIHN1cHBvc2VkIHRvIHJlZmVyZW5jZS4KK1RFU1QoUmVmZXJlbmNlRmllbGRU
ZXN0LCBJc0FsaWFzT2ZSZWZlcmVuY2VkVmFyaWFibGUpIHsKKyAgaW50IG4gPSAwOworICB0dXBs
ZTxib29sLCBpbnQmPiB0KHRydWUsIG4pOworCisgIG4gPSAxOworICBFWFBFQ1RfRVEobiwgZ2V0
PDE+KHQpKQorICAgICAgPDwgIkNoYW5naW5nIGEgdW5kZXJseWluZyB2YXJpYWJsZSBzaG91bGQg
dXBkYXRlIHRoZSByZWZlcmVuY2UgZmllbGQuIjsKKworICAvLyBNYWtlcyBzdXJlIHRoYXQgdGhl
IGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgZG8gYW55dGhpbmcgZnVubnkgd2l0aAorICAvLyB0aGUg
JiBvcGVyYXRvciBmb3IgdGhlIHJldHVybiB0eXBlIG9mIGdldDw+KCkuCisgIEVYUEVDVF9FUSgm
biwgJihnZXQ8MT4odCkpKQorICAgICAgPDwgIlRoZSBhZGRyZXNzIG9mIGEgcmVmZXJlbmNlIGZp
ZWxkIHNob3VsZCBlcXVhbCB0aGUgYWRkcmVzcyBvZiAiCisgICAgICA8PCAidGhlIHVuZGVybHlp
bmcgdmFyaWFibGUuIjsKKworICBnZXQ8MT4odCkgPSAyOworICBFWFBFQ1RfRVEoMiwgbikKKyAg
ICAgIDw8ICJDaGFuZ2luZyBhIHJlZmVyZW5jZSBmaWVsZCBzaG91bGQgdXBkYXRlIHRoZSB1bmRl
cmx5aW5nIHZhcmlhYmxlLiI7Cit9CisKKy8vIFRlc3RzIHRoYXQgdHVwbGUncyBkZWZhdWx0IGNv
bnN0cnVjdG9yIGRlZmF1bHQgaW5pdGlhbGl6ZXMgZWFjaCBmaWVsZC4KKy8vIFRoaXMgdGVzdCBu
ZWVkcyB0byBjb21waWxlIHdpdGhvdXQgZ2VuZXJhdGluZyB3YXJuaW5ncy4KK1RFU1QoVHVwbGVD
b25zdHJ1Y3RvclRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvckRlZmF1bHRJbml0aWFsaXplc0VhY2hG
aWVsZCkgeworICAvLyBUaGUgVFIxIHJlcG9ydCByZXF1aXJlcyB0aGF0IHR1cGxlJ3MgZGVmYXVs
dCBjb25zdHJ1Y3RvciBkZWZhdWx0CisgIC8vIGluaXRpYWxpemVzIGVhY2ggZmllbGQsIGV2ZW4g
aWYgaXQncyBhIHByaW1pdGl2ZSB0eXBlLiAgSWYgdGhlCisgIC8vIGltcGxlbWVudGF0aW9uIGZv
cmdldHMgdG8gZG8gdGhpcywgdGhpcyB0ZXN0IHdpbGwgY2F0Y2ggaXQgYnkKKyAgLy8gZ2VuZXJh
dGluZyB3YXJuaW5ncyBhYm91dCB1c2luZyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyAoYXNzdW1p
bmcKKyAgLy8gYSBkZWNlbnQgY29tcGlsZXIpLgorCisgIHR1cGxlPD4gZW1wdHk7CisKKyAgdHVw
bGU8aW50PiBhMSwgYjE7CisgIGIxID0gYTE7CisgIEVYUEVDVF9FUSgwLCBnZXQ8MD4oYjEpKTsK
KworICB0dXBsZTxpbnQsIGRvdWJsZT4gYTIsIGIyOworICBiMiA9IGEyOworICBFWFBFQ1RfRVEo
MCwgZ2V0PDA+KGIyKSk7CisgIEVYUEVDVF9FUSgwLjAsIGdldDwxPihiMikpOworCisgIHR1cGxl
PGRvdWJsZSwgY2hhciwgYm9vbCo+IGEzLCBiMzsKKyAgYjMgPSBhMzsKKyAgRVhQRUNUX0VRKDAu
MCwgZ2V0PDA+KGIzKSk7CisgIEVYUEVDVF9FUSgnXDAnLCBnZXQ8MT4oYjMpKTsKKyAgRVhQRUNU
X1RSVUUoZ2V0PDI+KGIzKSA9PSBOVUxMKTsKKworICB0dXBsZTxpbnQsIGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQ+IGExMCwgYjEwOworICBiMTAgPSBhMTA7Cisg
IEVYUEVDVF9FUSgwLCBnZXQ8MD4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8MT4oYjEwKSk7
CisgIEVYUEVDVF9FUSgwLCBnZXQ8Mj4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8Mz4oYjEw
KSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8ND4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8NT4o
YjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8Nj4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8
Nz4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8OD4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBn
ZXQ8OT4oYjEwKSk7Cit9CisKKy8vIFRlc3RzIGNvbnN0cnVjdGluZyBhIHR1cGxlIGZyb20gaXRz
IGZpZWxkcy4KK1RFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3QsIENvbnN0cnVjdHNGcm9tRmllbGRz
KSB7CisgIGludCBuID0gMTsKKyAgLy8gUmVmZXJlbmNlIGZpZWxkLgorICB0dXBsZTxpbnQmPiBh
KG4pOworICBFWFBFQ1RfRVEoJm4sICYoZ2V0PDA+KGEpKSk7CisKKyAgLy8gTm9uLXJlZmVyZW5j
ZSBmaWVsZHMuCisgIHR1cGxlPGludCwgY2hhcj4gYig1LCAnYScpOworICBFWFBFQ1RfRVEoNSwg
Z2V0PDA+KGIpKTsKKyAgRVhQRUNUX0VRKCdhJywgZ2V0PDE+KGIpKTsKKworICAvLyBDb25zdCBy
ZWZlcmVuY2UgZmllbGQuCisgIGNvbnN0IGludCBtID0gMjsKKyAgdHVwbGU8Ym9vbCwgY29uc3Qg
aW50Jj4gYyh0cnVlLCBtKTsKKyAgRVhQRUNUX1RSVUUoZ2V0PDA+KGMpKTsKKyAgRVhQRUNUX0VR
KCZtLCAmKGdldDwxPihjKSkpOworfQorCisvLyBUZXN0cyB0dXBsZSdzIGNvcHkgY29uc3RydWN0
b3IuCitURVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBDb3B5Q29uc3RydWN0b3IpIHsKKyAgdHVw
bGU8ZG91YmxlLCBib29sPiBhKDAuMCwgdHJ1ZSk7CisgIHR1cGxlPGRvdWJsZSwgYm9vbD4gYihh
KTsKKworICBFWFBFQ1RfRE9VQkxFX0VRKDAuMCwgZ2V0PDA+KGIpKTsKKyAgRVhQRUNUX1RSVUUo
Z2V0PDE+KGIpKTsKK30KKworLy8gVGVzdHMgY29uc3RydWN0aW5nIGEgdHVwbGUgZnJvbSBhbm90
aGVyIHR1cGxlIHRoYXQgaGFzIGEgY29tcGF0aWJsZQorLy8gYnV0IGRpZmZlcmVudCB0eXBlLgor
VEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgQ29uc3RydWN0c0Zyb21EaWZmZXJlbnRUdXBsZVR5
cGUpIHsKKyAgdHVwbGU8aW50LCBpbnQsIGNoYXI+IGEoMCwgMSwgJ2EnKTsKKyAgdHVwbGU8ZG91
YmxlLCBsb25nLCBpbnQ+IGIoYSk7CisKKyAgRVhQRUNUX0RPVUJMRV9FUSgwLjAsIGdldDwwPihi
KSk7CisgIEVYUEVDVF9FUSgxLCBnZXQ8MT4oYikpOworICBFWFBFQ1RfRVEoJ2EnLCBnZXQ8Mj4o
YikpOworfQorCisvLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSAyLXR1cGxlIGZyb20gYW4gc3RkOjpw
YWlyLgorVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgQ29uc3RydWN0c0Zyb21QYWlyKSB7Cisg
IDo6c3RkOjpwYWlyPGludCwgY2hhcj4gYSgxLCAnYScpOworICB0dXBsZTxpbnQsIGNoYXI+IGIo
YSk7CisgIHR1cGxlPGludCwgY29uc3QgY2hhciY+IGMoYSk7Cit9CisKKy8vIFRlc3RzIGFzc2ln
bmluZyBhIHR1cGxlIHRvIGFub3RoZXIgdHVwbGUgd2l0aCB0aGUgc2FtZSB0eXBlLgorVEVTVChU
dXBsZUFzc2lnbm1lbnRUZXN0LCBBc3NpZ25zVG9TYW1lVHVwbGVUeXBlKSB7CisgIGNvbnN0IHR1
cGxlPGludCwgbG9uZz4gYSg1LCA3TCk7CisgIHR1cGxlPGludCwgbG9uZz4gYjsKKyAgYiA9IGE7
CisgIEVYUEVDVF9FUSg1LCBnZXQ8MD4oYikpOworICBFWFBFQ1RfRVEoN0wsIGdldDwxPihiKSk7
Cit9CisKKy8vIFRlc3RzIGFzc2lnbmluZyBhIHR1cGxlIHRvIGFub3RoZXIgdHVwbGUgd2l0aCBh
IGRpZmZlcmVudCBidXQKKy8vIGNvbXBhdGlibGUgdHlwZS4KK1RFU1QoVHVwbGVBc3NpZ25tZW50
VGVzdCwgQXNzaWduc1RvRGlmZmVyZW50VHVwbGVUeXBlKSB7CisgIGNvbnN0IHR1cGxlPGludCwg
bG9uZywgYm9vbD4gYSgxLCA3TCwgdHJ1ZSk7CisgIHR1cGxlPGxvbmcsIGludCwgYm9vbD4gYjsK
KyAgYiA9IGE7CisgIEVYUEVDVF9FUSgxTCwgZ2V0PDA+KGIpKTsKKyAgRVhQRUNUX0VRKDcsIGdl
dDwxPihiKSk7CisgIEVYUEVDVF9UUlVFKGdldDwyPihiKSk7Cit9CisKKy8vIFRlc3RzIGFzc2ln
bmluZyBhbiBzdGQ6OnBhaXIgdG8gYSAyLXR1cGxlLgorVEVTVChUdXBsZUFzc2lnbm1lbnRUZXN0
LCBBc3NpZ25zRnJvbVBhaXIpIHsKKyAgY29uc3QgOjpzdGQ6OnBhaXI8aW50LCBib29sPiBhKDUs
IHRydWUpOworICB0dXBsZTxpbnQsIGJvb2w+IGI7CisgIGIgPSBhOworICBFWFBFQ1RfRVEoNSwg
Z2V0PDA+KGIpKTsKKyAgRVhQRUNUX1RSVUUoZ2V0PDE+KGIpKTsKKworICB0dXBsZTxsb25nLCBi
b29sPiBjOworICBjID0gYTsKKyAgRVhQRUNUX0VRKDVMLCBnZXQ8MD4oYykpOworICBFWFBFQ1Rf
VFJVRShnZXQ8MT4oYykpOworfQorCisvLyBBIGZpeHR1cmUgZm9yIHRlc3RpbmcgYmlnIHR1cGxl
cy4KK2NsYXNzIEJpZ1R1cGxlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0
ZWQ6CisgIHR5cGVkZWYgdHVwbGU8aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50PiBCaWdUdXBsZTsKKworICBCaWdUdXBsZVRlc3QoKSA6CisgICAgICBhXygx
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyKSwKKyAgICAgIGJfKDEsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDMpIHt9CisKKyAgQmlnVHVwbGUgYV8sIGJfOworfTsKKworLy8gVGVzdHMgY29u
c3RydWN0aW5nIGJpZyB0dXBsZXMuCitURVNUX0YoQmlnVHVwbGVUZXN0LCBDb25zdHJ1Y3Rpb24p
IHsKKyAgQmlnVHVwbGUgYTsKKyAgQmlnVHVwbGUgYihiXyk7Cit9CisKKy8vIFRlc3RzIHRoYXQg
Z2V0PE4+KHQpIHJldHVybnMgdGhlIE4tdGggKDAtYmFzZWQpIGZpZWxkIG9mIHR1cGxlIHQuCitU
RVNUX0YoQmlnVHVwbGVUZXN0LCBnZXQpIHsKKyAgRVhQRUNUX0VRKDEsIGdldDwwPihhXykpOwor
ICBFWFBFQ1RfRVEoMiwgZ2V0PDk+KGFfKSk7CisKKyAgLy8gVGVzdHMgdGhhdCBnZXQoKSB3b3Jr
cyBvbiBhIGNvbnN0IHR1cGxlIHRvby4KKyAgY29uc3QgQmlnVHVwbGUgYShhXyk7CisgIEVYUEVD
VF9FUSgxLCBnZXQ8MD4oYSkpOworICBFWFBFQ1RfRVEoMiwgZ2V0PDk+KGEpKTsKK30KKworLy8g
VGVzdHMgY29tcGFyaW5nIGJpZyB0dXBsZXMuCitURVNUX0YoQmlnVHVwbGVUZXN0LCBDb21wYXJp
c29ucykgeworICBFWFBFQ1RfVFJVRShhXyA9PSBhXyk7CisgIEVYUEVDVF9GQUxTRShhXyAhPSBh
Xyk7CisKKyAgRVhQRUNUX1RSVUUoYV8gIT0gYl8pOworICBFWFBFQ1RfRkFMU0UoYV8gPT0gYl8p
OworfQorCitURVNUKE1ha2VUdXBsZVRlc3QsIFdvcmtzRm9yU2NhbGFyVHlwZXMpIHsKKyAgdHVw
bGU8Ym9vbCwgaW50PiBhOworICBhID0gbWFrZV90dXBsZSh0cnVlLCA1KTsKKyAgRVhQRUNUX1RS
VUUoZ2V0PDA+KGEpKTsKKyAgRVhQRUNUX0VRKDUsIGdldDwxPihhKSk7CisKKyAgdHVwbGU8Y2hh
ciwgaW50LCBsb25nPiBiOworICBiID0gbWFrZV90dXBsZSgnYScsICdiJywgNSk7CisgIEVYUEVD
VF9FUSgnYScsIGdldDwwPihiKSk7CisgIEVYUEVDVF9FUSgnYicsIGdldDwxPihiKSk7CisgIEVY
UEVDVF9FUSg1LCBnZXQ8Mj4oYikpOworfQorCitURVNUKE1ha2VUdXBsZVRlc3QsIFdvcmtzRm9y
UG9pbnRlcnMpIHsKKyAgaW50IGFbXSA9IHsgMSwgMiwgMywgNCB9OworICBjb25zdCBjaGFyKiBj
b25zdCBzdHIgPSAiaGkiOworICBpbnQqIGNvbnN0IHAgPSBhOworCisgIHR1cGxlPGNvbnN0IGNo
YXIqLCBpbnQqPiB0OworICB0ID0gbWFrZV90dXBsZShzdHIsIHApOworICBFWFBFQ1RfRVEoc3Ry
LCBnZXQ8MD4odCkpOworICBFWFBFQ1RfRVEocCwgZ2V0PDE+KHQpKTsKK30KKworfSAgLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtdW5pbml0aWFsaXplZC10ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
b29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjdkMWU3NGY2N2Zj
YjAwY2I4NDg1NTc5NjdkZWY0ZjZhNTZjYzhmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdC5weQpAQCAt
MCwwICsxLDY3IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDgs
IEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisiIiJWZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IHdhcm5zIHRoZSB1c2VyIHdoZW4gbm90IGlu
aXRpYWxpemVkIHByb3Blcmx5LiIiIgorCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitDT01N
QU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2dvb2dsZXRlc3Qt
dW5pbml0aWFsaXplZC10ZXN0XycpCisKKworZGVmIEFzc2VydChjb25kaXRpb24pOgorICBpZiBu
b3QgY29uZGl0aW9uOgorICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisKKworZGVmIEFzc2VydEVx
KGV4cGVjdGVkLCBhY3R1YWwpOgorICBpZiBleHBlY3RlZCAhPSBhY3R1YWw6CisgICAgcHJpbnQg
J0V4cGVjdGVkOiAlcycgJSAoZXhwZWN0ZWQsKQorICAgIHByaW50ICcgIEFjdHVhbDogJXMnICUg
KGFjdHVhbCwpCisgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKKworCitkZWYgVGVzdEV4aXRDb2Rl
QW5kT3V0cHV0KGNvbW1hbmQpOgorICAiIiJSdW5zIHRoZSBnaXZlbiBjb21tYW5kIGFuZCB2ZXJp
ZmllcyBpdHMgZXhpdCBjb2RlIGFuZCBvdXRwdXQuIiIiCisKKyAgIyBWZXJpZmllcyB0aGF0ICdj
b21tYW5kJyBleGl0cyB3aXRoIGNvZGUgMS4KKyAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJv
Y2Vzcyhjb21tYW5kKQorICBpZiBwLmV4aXRlZCBhbmQgcC5leGl0X2NvZGUgPT0gMDoKKyAgICBB
c3NlcnQoJ0lNUE9SVEFOVCBOT1RJQ0UnIGluIHAub3V0cHV0KTsKKyAgQXNzZXJ0KCdJbml0R29v
Z2xlVGVzdCcgaW4gcC5vdXRwdXQpCisKKworY2xhc3MgR1Rlc3RVbmluaXRpYWxpemVkVGVzdChn
dGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgZGVmIHRlc3RFeGl0Q29kZUFuZE91dHB1dChz
ZWxmKToKKyAgICBUZXN0RXhpdENvZGVBbmRPdXRwdXQoQ09NTUFORCkKKworCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVz
dF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdW5pbml0aWFs
aXplZC10ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDQzNGQ1MWVlYmZkODcyNmJkM2YwNGMyZDA0MjZi
YmE5NjAyOThjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9nb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdF8uY2MKQEAgLTAsMCArMSw0MiBAQAorLy8g
Q29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0
cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisv
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgorCitURVNUKER1bW15VGVzdCwgRHVtbXkpIHsKKyAgLy8gVGhpcyB0ZXN0
IGRvZXNuJ3QgdmVyaWZ5IGFueXRoaW5nLiAgV2UganVzdCBuZWVkIGl0IHRvIGNyZWF0ZSBhCisg
IC8vIHJlYWxpc3RpYyBzdGFnZSBmb3IgdGVzdGluZyB0aGUgYmVoYXZpb3Igb2YgR29vZ2xlIFRl
c3Qgd2hlbgorICAvLyBSVU5fQUxMX1RFU1RTKCkgaXMgY2FsbGVkIHdpdGhvdXQKKyAgLy8gdGVz
dGluZzo6SW5pdEdvb2dsZVRlc3QoKSBiZWluZyBjYWxsZWQgZmlyc3QuCit9CisKK2ludCBtYWlu
KCkgeworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfdGVzdC5jYwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZWQ1YjUzYjcxYWYyZjc5NTYwZDcxNzJhYTY3Y2M3NDBiYTcwNDAx
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfdGVzdC5jYworKysgL2Rldi9u
dWxsCkBAIC0xLDEyMzAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCi0v
LyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0v
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikK
LS8vCi0vLyBUZXN0cyBmb3IgZGVhdGggdGVzdHMuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1k
ZWF0aC10ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9p
bnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oPgotCi11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QWx3
YXlzRmFsc2U7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZTsKLQotI2lmIEdU
RVNUX0hBU19ERUFUSF9URVNUCi0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0jaW5jbHVkZSA8ZGly
ZWN0Lmg+ICAgICAgICAgIC8vIEZvciBjaGRpcigpLgotI2Vsc2UKLSNpbmNsdWRlIDx1bmlzdGQu
aD4KLSNpbmNsdWRlIDxzeXMvd2FpdC5oPiAgICAgICAgLy8gRm9yIHdhaXRwaWQuCi0jaW5jbHVk
ZSA8bGltaXRzPiAgICAgICAgICAgIC8vIEZvciBzdGQ6Om51bWVyaWNfbGltaXRzLgotI2VuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxz
aWduYWwuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3Bp
Lmg+Ci0KLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9m
IEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBn
dGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBj
b21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2VyIGZyb20g
YWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8gaGlzIGNv
ZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0
LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi1uYW1lc3Bh
Y2UgcG9zaXggPSA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDsKLQotdXNpbmcgdGVzdGluZzo6
TWVzc2FnZTsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q7Ci11c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0RmFjdG9yeTsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjpGaWxlUGF0aDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRMYXN0RXJybm9EZXNjcmlw
dGlvbjsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRVbml0VGVzdEltcGw7Ci11c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6UGFyc2VOYXR1cmFsTnVtYmVyOwotdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OlN0cmluZzsKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVybmFs
IHsKLQotLy8gQSBoZWxwZXIgY2xhc3Mgd2hvc2Ugb2JqZWN0cyByZXBsYWNlIHRoZSBkZWF0aCB0
ZXN0IGZhY3RvcnkgZm9yIGEKLS8vIHNpbmdsZSBVbml0VGVzdCBvYmplY3QgZHVyaW5nIHRoZWly
IGxpZmV0aW1lcy4KLWNsYXNzIFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5IHsKLSBwdWJsaWM6Ci0g
IGV4cGxpY2l0IFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KERlYXRoVGVzdEZhY3RvcnkqIG5ld19m
YWN0b3J5KQotICAgICAgOiB1bml0X3Rlc3RfaW1wbF8oR2V0VW5pdFRlc3RJbXBsKCkpIHsKLSAg
ICBvbGRfZmFjdG9yeV8gPSB1bml0X3Rlc3RfaW1wbF8tPmRlYXRoX3Rlc3RfZmFjdG9yeV8ucmVs
ZWFzZSgpOwotICAgIHVuaXRfdGVzdF9pbXBsXy0+ZGVhdGhfdGVzdF9mYWN0b3J5Xy5yZXNldChu
ZXdfZmFjdG9yeSk7Ci0gIH0KLQotICB+UmVwbGFjZURlYXRoVGVzdEZhY3RvcnkoKSB7Ci0gICAg
dW5pdF90ZXN0X2ltcGxfLT5kZWF0aF90ZXN0X2ZhY3RvcnlfLnJlbGVhc2UoKTsKLSAgICB1bml0
X3Rlc3RfaW1wbF8tPmRlYXRoX3Rlc3RfZmFjdG9yeV8ucmVzZXQob2xkX2ZhY3RvcnlfKTsKLSAg
fQotIHByaXZhdGU6Ci0gIC8vIFByZXZlbnRzIGNvcHlpbmcgUmVwbGFjZURlYXRoVGVzdEZhY3Rv
cnkgb2JqZWN0cy4KLSAgUmVwbGFjZURlYXRoVGVzdEZhY3RvcnkoY29uc3QgUmVwbGFjZURlYXRo
VGVzdEZhY3RvcnkmKTsKLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgUmVwbGFjZURlYXRoVGVzdEZh
Y3RvcnkmKTsKLQotICBVbml0VGVzdEltcGwqIHVuaXRfdGVzdF9pbXBsXzsKLSAgRGVhdGhUZXN0
RmFjdG9yeSogb2xkX2ZhY3RvcnlfOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi19
ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi12b2lkIERpZUluc2lkZShjb25zdCBjaGFyKiBmdW5j
dGlvbikgewotICBmcHJpbnRmKHN0ZGVyciwgImRlYXRoIGluc2lkZSAlcygpLiIsIGZ1bmN0aW9u
KTsKLSAgZmZsdXNoKHN0ZGVycik7Ci0gIC8vIFdlIGNhbGwgX2V4aXQoKSBpbnN0ZWFkIG9mIGV4
aXQoKSwgYXMgdGhlIGZvcm1lciBpcyBhIGRpcmVjdAotICAvLyBzeXN0ZW0gY2FsbCBhbmQgdGh1
cyBzYWZlciBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhyZWFkcy4gIGV4aXQoKQotICAvLyB3aWxsIGlu
dm9rZSB1c2VyLWRlZmluZWQgZXhpdC1ob29rcywgd2hpY2ggbWF5IGRvIGRhbmdlcm91cwotICAv
LyB0aGluZ3MgdGhhdCBjb25mbGljdCB3aXRoIGRlYXRoIHRlc3RzLgotICAvLwotICAvLyBTb21l
IGNvbXBpbGVycyBjYW4gcmVjb2duaXplIHRoYXQgX2V4aXQoKSBuZXZlciByZXR1cm5zIGFuZCBp
c3N1ZSB0aGUKLSAgLy8gJ3VucmVhY2hhYmxlIGNvZGUnIHdhcm5pbmcgZm9yIGNvZGUgZm9sbG93
aW5nIHRoaXMgZnVuY3Rpb24sIHVubGVzcwotICAvLyBmb29sZWQgYnkgYSBmYWtlIGNvbmRpdGlv
bi4KLSAgaWYgKEFsd2F5c1RydWUoKSkKLSAgICBfZXhpdCgxKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBkZWF0aCB0ZXN0cyB3b3JrLgotCi1jbGFzcyBUZXN0Rm9yRGVhdGhUZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgVGVzdEZvckRlYXRoVGVzdCgpIDogb3JpZ2lu
YWxfZGlyXyhGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpKSB7fQotCi0gIHZpcnR1YWwgflRlc3RG
b3JEZWF0aFRlc3QoKSB7Ci0gICAgcG9zaXg6OkNoRGlyKG9yaWdpbmFsX2Rpcl8uY19zdHIoKSk7
Ci0gIH0KLQotICAvLyBBIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24gdGhhdCdzIGV4cGVjdGVkIHRv
IGRpZS4KLSAgc3RhdGljIHZvaWQgU3RhdGljTWVtYmVyRnVuY3Rpb24oKSB7IERpZUluc2lkZSgi
U3RhdGljTWVtYmVyRnVuY3Rpb24iKTsgfQotCi0gIC8vIEEgbWV0aG9kIG9mIHRoZSB0ZXN0IGZp
eHR1cmUgdGhhdCBtYXkgZGllLgotICB2b2lkIE1lbWJlckZ1bmN0aW9uKCkgewotICAgIGlmIChz
aG91bGRfZGllXykKLSAgICAgIERpZUluc2lkZSgiTWVtYmVyRnVuY3Rpb24iKTsKLSAgfQotCi0g
IC8vIFRydWUgaWZmIE1lbWJlckZ1bmN0aW9uKCkgc2hvdWxkIGRpZS4KLSAgYm9vbCBzaG91bGRf
ZGllXzsKLSAgY29uc3QgRmlsZVBhdGggb3JpZ2luYWxfZGlyXzsKLX07Ci0KLS8vIEEgY2xhc3Mg
d2l0aCBhIG1lbWJlciBmdW5jdGlvbiB0aGF0IG1heSBkaWUuCi1jbGFzcyBNYXlEaWUgewotIHB1
YmxpYzoKLSAgZXhwbGljaXQgTWF5RGllKGJvb2wgc2hvdWxkX2RpZSkgOiBzaG91bGRfZGllXyhz
aG91bGRfZGllKSB7fQotCi0gIC8vIEEgbWVtYmVyIGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KLSAg
dm9pZCBNZW1iZXJGdW5jdGlvbigpIGNvbnN0IHsKLSAgICBpZiAoc2hvdWxkX2RpZV8pCi0gICAg
ICBEaWVJbnNpZGUoIk1heURpZTo6TWVtYmVyRnVuY3Rpb24iKTsKLSAgfQotCi0gcHJpdmF0ZToK
LSAgLy8gVHJ1ZSBpZmYgTWVtYmVyRnVuY3Rpb24oKSBzaG91bGQgZGllLgotICBib29sIHNob3Vs
ZF9kaWVfOwotfTsKLQotLy8gQSBnbG9iYWwgZnVuY3Rpb24gdGhhdCdzIGV4cGVjdGVkIHRvIGRp
ZS4KLXZvaWQgR2xvYmFsRnVuY3Rpb24oKSB7IERpZUluc2lkZSgiR2xvYmFsRnVuY3Rpb24iKTsg
fQotCi0vLyBBIG5vbi12b2lkIGZ1bmN0aW9uIHRoYXQncyBleHBlY3RlZCB0byBkaWUuCi1pbnQg
Tm9uVm9pZEZ1bmN0aW9uKCkgewotICBEaWVJbnNpZGUoIk5vblZvaWRGdW5jdGlvbiIpOwotICBy
ZXR1cm4gMTsKLX0KLQotLy8gQSB1bmFyeSBmdW5jdGlvbiB0aGF0IG1heSBkaWUuCi12b2lkIERp
ZUlmKGJvb2wgc2hvdWxkX2RpZSkgewotICBpZiAoc2hvdWxkX2RpZSkKLSAgICBEaWVJbnNpZGUo
IkRpZUlmIik7Ci19Ci0KLS8vIEEgYmluYXJ5IGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KLWJvb2wg
RGllSWZMZXNzVGhhbihpbnQgeCwgaW50IHkpIHsKLSAgaWYgKHggPCB5KSB7Ci0gICAgRGllSW5z
aWRlKCJEaWVJZkxlc3NUaGFuIik7Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgQVNTRVJUX0RFQVRIIGNhbiBiZSB1c2VkIG91dHNpZGUgYSBURVNULCBURVNUX0YsIG9y
IHRlc3QgZml4dHVyZS4KLXZvaWQgRGVhdGhUZXN0U3Vicm91dGluZSgpIHsKLSAgRVhQRUNUX0RF
QVRIKEdsb2JhbEZ1bmN0aW9uKCksICJkZWF0aC4qR2xvYmFsRnVuY3Rpb24iKTsKLSAgQVNTRVJU
X0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksICJkZWF0aC4qR2xvYmFsRnVuY3Rpb24iKTsKLX0KLQot
Ly8gRGVhdGggaW4gZGJnLCBub3Qgb3B0LgotaW50IERpZUluRGVidWdFbHNlMTIoaW50KiBzaWRl
ZWZmZWN0KSB7Ci0gIGlmIChzaWRlZWZmZWN0KSAqc2lkZWVmZmVjdCA9IDEyOwotI2lmbmRlZiBO
REVCVUcKLSAgRGllSW5zaWRlKCJEaWVJbkRlYnVnRWxzZTEyIik7Ci0jZW5kaWYgIC8vIE5ERUJV
RwotICByZXR1cm4gMTI7Ci19Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0KLS8vIFRlc3RzIHRo
ZSBFeGl0ZWRXaXRoQ29kZSBwcmVkaWNhdGUuCi1URVNUKEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0
LCBFeGl0ZWRXaXRoQ29kZSkgewotICAvLyBPbiBXaW5kb3dzLCB0aGUgcHJvY2VzcydzIGV4aXQg
Y29kZSBpcyB0aGUgc2FtZSBhcyBpdHMgZXhpdCBzdGF0dXMsCi0gIC8vIHNvIHRoZSBwcmVkaWNh
dGUganVzdCBjb21wYXJlcyB0aGUgaXRzIGlucHV0IHdpdGggaXRzIHBhcmFtZXRlci4KLSAgRVhQ
RUNUX1RSVUUodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCkoMCkpOwotICBFWFBFQ1RfVFJVRSh0
ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSgxKSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Rpbmc6OkV4
aXRlZFdpdGhDb2RlKDQyKSg0MikpOwotICBFWFBFQ1RfRkFMU0UodGVzdGluZzo6RXhpdGVkV2l0
aENvZGUoMCkoMSkpOwotICBFWFBFQ1RfRkFMU0UodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSko
MCkpOwotfQotCi0jZWxzZQotCi0vLyBSZXR1cm5zIHRoZSBleGl0IHN0YXR1cyBvZiBhIHByb2Nl
c3MgdGhhdCBjYWxscyBfZXhpdCgyKSB3aXRoIGEKLS8vIGdpdmVuIGV4aXQgY29kZS4gIFRoaXMg
aXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIHRoZQotLy8gRXhpdFN0YXR1c1ByZWRpY2F0ZVRlc3Qg
dGVzdCBzdWl0ZS4KLXN0YXRpYyBpbnQgTm9ybWFsRXhpdFN0YXR1cyhpbnQgZXhpdF9jb2RlKSB7
Ci0gIHBpZF90IGNoaWxkX3BpZCA9IGZvcmsoKTsKLSAgaWYgKGNoaWxkX3BpZCA9PSAwKSB7Ci0g
ICAgX2V4aXQoZXhpdF9jb2RlKTsKLSAgfQotICBpbnQgc3RhdHVzOwotICB3YWl0cGlkKGNoaWxk
X3BpZCwgJnN0YXR1cywgMCk7Ci0gIHJldHVybiBzdGF0dXM7Ci19Ci0KLS8vIFJldHVybnMgdGhl
IGV4aXQgc3RhdHVzIG9mIGEgcHJvY2VzcyB0aGF0IHJhaXNlcyBhIGdpdmVuIHNpZ25hbC4KLS8v
IElmIHRoZSBzaWduYWwgZG9lcyBub3QgY2F1c2UgdGhlIHByb2Nlc3MgdG8gZGllLCB0aGVuIGl0
IHJldHVybnMKLS8vIGluc3RlYWQgdGhlIGV4aXQgc3RhdHVzIG9mIGEgcHJvY2VzcyB0aGF0IGV4
aXRzIG5vcm1hbGx5IHdpdGggZXhpdAotLy8gY29kZSAxLiAgVGhpcyBpcyBhIGhlbHBlciBmdW5j
dGlvbiBmb3IgdGhlIEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0Ci0vLyB0ZXN0IHN1aXRlLgotc3Rh
dGljIGludCBLaWxsZWRFeGl0U3RhdHVzKGludCBzaWdudW0pIHsKLSAgcGlkX3QgY2hpbGRfcGlk
ID0gZm9yaygpOwotICBpZiAoY2hpbGRfcGlkID09IDApIHsKLSAgICByYWlzZShzaWdudW0pOwot
ICAgIF9leGl0KDEpOwotICB9Ci0gIGludCBzdGF0dXM7Ci0gIHdhaXRwaWQoY2hpbGRfcGlkLCAm
c3RhdHVzLCAwKTsKLSAgcmV0dXJuIHN0YXR1czsKLX0KLQotLy8gVGVzdHMgdGhlIEV4aXRlZFdp
dGhDb2RlIHByZWRpY2F0ZS4KLVRFU1QoRXhpdFN0YXR1c1ByZWRpY2F0ZVRlc3QsIEV4aXRlZFdp
dGhDb2RlKSB7Ci0gIGNvbnN0IGludCBzdGF0dXMwICA9IE5vcm1hbEV4aXRTdGF0dXMoMCk7Ci0g
IGNvbnN0IGludCBzdGF0dXMxICA9IE5vcm1hbEV4aXRTdGF0dXMoMSk7Ci0gIGNvbnN0IGludCBz
dGF0dXM0MiA9IE5vcm1hbEV4aXRTdGF0dXMoNDIpOwotICBjb25zdCB0ZXN0aW5nOjpFeGl0ZWRX
aXRoQ29kZSBwcmVkMCgwKTsKLSAgY29uc3QgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUgcHJlZDEo
MSk7Ci0gIGNvbnN0IHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlIHByZWQ0Mig0Mik7Ci0gIEVYUEVD
VF9QUkVEMShwcmVkMCwgIHN0YXR1czApOwotICBFWFBFQ1RfUFJFRDEocHJlZDEsICBzdGF0dXMx
KTsKLSAgRVhQRUNUX1BSRUQxKHByZWQ0Miwgc3RhdHVzNDIpOwotICBFWFBFQ1RfRkFMU0UocHJl
ZDAoc3RhdHVzMSkpOwotICBFWFBFQ1RfRkFMU0UocHJlZDQyKHN0YXR1czApKTsKLSAgRVhQRUNU
X0ZBTFNFKHByZWQxKHN0YXR1czQyKSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBLaWxsZWRCeVNpZ25h
bCBwcmVkaWNhdGUuCi1URVNUKEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0LCBLaWxsZWRCeVNpZ25h
bCkgewotICBjb25zdCBpbnQgc3RhdHVzX3NlZ3YgPSBLaWxsZWRFeGl0U3RhdHVzKFNJR1NFR1Yp
OwotICBjb25zdCBpbnQgc3RhdHVzX2tpbGwgPSBLaWxsZWRFeGl0U3RhdHVzKFNJR0tJTEwpOwot
ICBjb25zdCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbCBwcmVkX3NlZ3YoU0lHU0VHVik7Ci0gIGNv
bnN0IHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsIHByZWRfa2lsbChTSUdLSUxMKTsKLSAgRVhQRUNU
X1BSRUQxKHByZWRfc2Vndiwgc3RhdHVzX3NlZ3YpOwotICBFWFBFQ1RfUFJFRDEocHJlZF9raWxs
LCBzdGF0dXNfa2lsbCk7Ci0gIEVYUEVDVF9GQUxTRShwcmVkX3NlZ3Yoc3RhdHVzX2tpbGwpKTsK
LSAgRVhQRUNUX0ZBTFNFKHByZWRfa2lsbChzdGF0dXNfc2VndikpOwotfQotCi0jZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1MKLQotLy8gVGVzdHMgdGhhdCB0aGUgZGVhdGggdGVzdCBtYWNyb3Mg
ZXhwYW5kIHRvIGNvZGUgd2hpY2ggbWF5IG9yIG1heSBub3QKLS8vIGJlIGZvbGxvd2VkIGJ5IG9w
ZXJhdG9yPDwsIGFuZCB0aGF0IGluIGVpdGhlciBjYXNlIHRoZSBjb21wbGV0ZSB0ZXh0Ci0vLyBj
b21wcmlzZXMgb25seSBhIHNpbmdsZSBDKysgc3RhdGVtZW50LgotVEVTVF9GKFRlc3RGb3JEZWF0
aFRlc3QsIFNpbmdsZVN0YXRlbWVudCkgewotICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAgICAvLyBU
aGlzIHdvdWxkIGZhaWwgaWYgZXhlY3V0ZWQ7IHRoaXMgaXMgYSBjb21waWxhdGlvbiB0ZXN0IG9u
bHkKLSAgICBBU1NFUlRfREVBVEgocmV0dXJuLCAiIik7Ci0KLSAgaWYgKEFsd2F5c1RydWUoKSkK
LSAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKTsKLSAgZWxzZQotICAgIC8vIFRoaXMgZW1w
dHkgImVsc2UiIGJyYW5jaCBpcyBtZWFudCB0byBlbnN1cmUgdGhhdCBFWFBFQ1RfREVBVEgKLSAg
ICAvLyBkb2Vzbid0IGV4cGFuZCBpbnRvIGFuICJpZiIgc3RhdGVtZW50IHdpdGhvdXQgYW4gImVs
c2UiCi0gICAgOwotCi0gIGlmIChBbHdheXNGYWxzZSgpKQotICAgIEFTU0VSVF9ERUFUSChyZXR1
cm4sICIiKSA8PCAiZGlkIG5vdCBkaWUiOwotCi0gIGlmIChBbHdheXNGYWxzZSgpKQotICAgIDsK
LSAgZWxzZQotICAgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8IDEgPDwgMiA8PCAzOwot
fQotCi12b2lkIERpZVdpdGhFbWJlZGRlZE51bCgpIHsKLSAgZnByaW50ZihzdGRlcnIsICJIZWxs
byVjbXkgbnVsbCB3b3JsZC5cbiIsICdcMCcpOwotICBmZmx1c2goc3RkZXJyKTsKLSAgX2V4aXQo
MSk7Ci19Ci0KLSNpZiBHVEVTVF9VU0VTX1BDUkUKLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRI
IGFuZCBBU1NFUlRfREVBVEggd29yayB3aGVuIHRoZSBlcnJvcgotLy8gbWVzc2FnZSBoYXMgYSBO
VUwgY2hhcmFjdGVyIGluIGl0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEVtYmVkZGVkTnVs
SW5NZXNzYWdlKSB7Ci0gIC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiA8cmVnZXguaD4gZG9lc24n
dCBzdXBwb3J0IG1hdGNoaW5nIHN0cmluZ3MKLSAgLy8gd2l0aCBlbWJlZGRlZCBOVUwgY2hhcmFj
dGVycyAtIGZpbmQgYSB3YXkgdG8gd29ya2Fyb3VuZCBpdC4KLSAgRVhQRUNUX0RFQVRIKERpZVdp
dGhFbWJlZGRlZE51bCgpLCAibXkgbnVsbCB3b3JsZCIpOwotICBBU1NFUlRfREVBVEgoRGllV2l0
aEVtYmVkZGVkTnVsKCksICJteSBudWxsIHdvcmxkIik7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX1VT
RVNfUENSRQotCi0vLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3QgbWFjcm9zIGV4cGFuZCB0byBjb2Rl
IHdoaWNoIGludGVyYWN0cyB3ZWxsIHdpdGggc3dpdGNoCi0vLyBzdGF0ZW1lbnRzLgotVEVTVF9G
KFRlc3RGb3JEZWF0aFRlc3QsIFN3aXRjaFN0YXRlbWVudCkgewotLy8gTWljcm9zb2Z0IGNvbXBp
bGVyIHVzdWFsbHkgY29tcGxhaW5zIGFib3V0IHN3aXRjaCBzdGF0ZW1lbnRzIHdpdGhvdXQKLS8v
IGNhc2UgbGFiZWxzLiBXZSBzdXBwcmVzcyB0aGF0IHdhcm5pbmcgZm9yIHRoaXMgdGVzdC4KLSNp
ZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlz
YWJsZTogNDA2NSkKLSNlbmRpZiAgLy8gX01TQ19WRVIKLQotICBzd2l0Y2ggKDApCi0gICAgZGVm
YXVsdDoKLSAgICAgIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8ICJleGl0IGluIGRlZmF1
bHQgc3dpdGNoIGhhbmRsZXIiOwotCi0gIHN3aXRjaCAoMCkKLSAgICBjYXNlIDA6Ci0gICAgICBF
WFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKSA8PCAiZXhpdCBpbiBzd2l0Y2ggY2FzZSI7Ci0KLSNp
ZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZiAgLy8gX01TQ19WRVIK
LX0KLQotLy8gVGVzdHMgdGhhdCBhIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24gY2FuIGJlIHVzZWQg
aW4gYSAiZmFzdCIgc3R5bGUKLS8vIGRlYXRoIHRlc3QuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVz
dCwgU3RhdGljTWVtYmVyRnVuY3Rpb25GYXN0U3R5bGUpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxB
RyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKLSAgQVNTRVJUX0RFQVRIKFN0YXRpY01lbWJl
ckZ1bmN0aW9uKCksICJkZWF0aC4qU3RhdGljTWVtYmVyIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
YSBtZXRob2Qgb2YgdGhlIHRlc3QgZml4dHVyZSBjYW4gYmUgdXNlZCBpbiBhICJmYXN0IgotLy8g
c3R5bGUgZGVhdGggdGVzdC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNZW1iZXJGdW5jdGlv
bkZhc3RTdHlsZSkgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0g
ImZhc3QiOwotICBzaG91bGRfZGllXyA9IHRydWU7Ci0gIEVYUEVDVF9ERUFUSChNZW1iZXJGdW5j
dGlvbigpLCAiaW5zaWRlLipNZW1iZXJGdW5jdGlvbiIpOwotfQotCi12b2lkIENoYW5nZVRvUm9v
dERpcigpIHsgcG9zaXg6OkNoRGlyKEdURVNUX1BBVEhfU0VQXyk7IH0KLQotLy8gVGVzdHMgdGhh
dCBkZWF0aCB0ZXN0cyB3b3JrIGV2ZW4gaWYgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGhhcyBiZWVu
Ci0vLyBjaGFuZ2VkLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEZhc3REZWF0aFRlc3RJbkNo
YW5nZWREaXIpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJm
YXN0IjsKLQotICBDaGFuZ2VUb1Jvb3REaXIoKTsKLSAgRVhQRUNUX0VYSVQoX2V4aXQoMSksIHRl
c3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEpLCAiIik7Ci0KLSAgQ2hhbmdlVG9Sb290RGlyKCk7Ci0g
IEFTU0VSVF9ERUFUSChfZXhpdCgxKSwgIiIpOwotfQotCi0vLyBSZXBlYXRzIGEgcmVwcmVzZW50
YXRpdmUgc2FtcGxlIG9mIGRlYXRoIHRlc3RzIGluIHRoZSAidGhyZWFkc2FmZSIgc3R5bGU6Ci0K
LVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTdGF0aWNNZW1iZXJGdW5jdGlvblRocmVhZHNhZmVT
dHlsZSkgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVh
ZHNhZmUiOwotICBBU1NFUlRfREVBVEgoU3RhdGljTWVtYmVyRnVuY3Rpb24oKSwgImRlYXRoLipT
dGF0aWNNZW1iZXIiKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE1lbWJlckZ1bmN0
aW9uVGhyZWFkc2FmZVN0eWxlKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9z
dHlsZSkgPSAidGhyZWFkc2FmZSI7Ci0gIHNob3VsZF9kaWVfID0gdHJ1ZTsKLSAgRVhQRUNUX0RF
QVRIKE1lbWJlckZ1bmN0aW9uKCksICJpbnNpZGUuKk1lbWJlckZ1bmN0aW9uIik7Ci19Ci0KLVRF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUaHJlYWRzYWZlRGVhdGhUZXN0SW5Mb29wKSB7Ci0gIHRl
c3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7Ci0KLSAg
Zm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpCi0gICAgRVhQRUNUX0VYSVQoX2V4aXQoaSksIHRl
c3Rpbmc6OkV4aXRlZFdpdGhDb2RlKGkpLCAiIikgPDwgIjogaSA9ICIgPDwgaTsKLX0KLQotVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRocmVhZHNhZmVEZWF0aFRlc3RJbkNoYW5nZWREaXIpIHsK
LSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsK
LQotICBDaGFuZ2VUb1Jvb3REaXIoKTsKLSAgRVhQRUNUX0VYSVQoX2V4aXQoMSksIHRlc3Rpbmc6
OkV4aXRlZFdpdGhDb2RlKDEpLCAiIik7Ci0KLSAgQ2hhbmdlVG9Sb290RGlyKCk7Ci0gIEFTU0VS
VF9ERUFUSChfZXhpdCgxKSwgIiIpOwotfQotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgTWl4
ZWRTdHlsZXMpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0
aHJlYWRzYWZlIjsKLSAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci0gIHRlc3Rpbmc6OkdU
RVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7Ci0gIEVYUEVDVF9ERUFUSChfZXhp
dCgxKSwgIiIpOwotfQotCi1uYW1lc3BhY2UgewotCi1ib29sIHB0aHJlYWRfZmxhZzsKLQotdm9p
ZCBTZXRQdGhyZWFkRmxhZygpIHsKLSAgcHRocmVhZF9mbGFnID0gdHJ1ZTsKLX0KLQotfSAgLy8g
bmFtZXNwYWNlCi0KLSNpZiBHVEVTVF9IQVNfQ0xPTkUgJiYgR1RFU1RfSEFTX1BUSFJFQUQKLQot
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERvZXNOb3RFeGVjdXRlQXRmb3JrSG9va3MpIHsKLSAg
aWYgKCF0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspKSB7Ci0gICAgdGVz
dGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKLSAgICBw
dGhyZWFkX2ZsYWcgPSBmYWxzZTsKLSAgICBBU1NFUlRfRVEoMCwgcHRocmVhZF9hdGZvcmsoJlNl
dFB0aHJlYWRGbGFnLCBOVUxMLCBOVUxMKSk7Ci0gICAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAi
Iik7Ci0gICAgQVNTRVJUX0ZBTFNFKHB0aHJlYWRfZmxhZyk7Ci0gIH0KLX0KLQotI2VuZGlmICAv
LyBHVEVTVF9IQVNfQ0xPTkUgJiYgR1RFU1RfSEFTX1BUSFJFQUQKLQotLy8gVGVzdHMgdGhhdCBh
IG1ldGhvZCBvZiBhbm90aGVyIGNsYXNzIGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KLVRF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNZXRob2RPZkFub3RoZXJDbGFzcykgewotICBjb25zdCBN
YXlEaWUgeCh0cnVlKTsKLSAgQVNTRVJUX0RFQVRIKHguTWVtYmVyRnVuY3Rpb24oKSwgIk1heURp
ZVxcOlxcOk1lbWJlckZ1bmN0aW9uIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBnbG9iYWwgZnVu
Y3Rpb24gY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIEdsb2JhbEZ1bmN0aW9uKSB7Ci0gIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCAi
R2xvYmFsRnVuY3Rpb24iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhbnkgdmFsdWUgY29udmVydGli
bGUgdG8gYW4gUkUgd29ya3MgYXMgYSBzZWNvbmQKLS8vIGFyZ3VtZW50IHRvIEVYUEVDVF9ERUFU
SC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBY2NlcHRzQW55dGhpbmdDb252ZXJ0aWJsZVRv
UkUpIHsKLSAgc3RhdGljIGNvbnN0IGNoYXIgcmVnZXhfY19zdHJbXSA9ICJHbG9iYWxGdW5jdGlv
biI7Ci0gIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleF9jX3N0cik7Ci0KLSAg
Y29uc3QgdGVzdGluZzo6aW50ZXJuYWw6OlJFIHJlZ2V4KHJlZ2V4X2Nfc3RyKTsKLSAgRVhQRUNU
X0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksIHJlZ2V4KTsKLQotI2lmIEdURVNUX0hBU19HTE9CQUxf
U1RSSU5HCi0gIGNvbnN0IHN0cmluZyByZWdleF9zdHIocmVnZXhfY19zdHIpOwotICBFWFBFQ1Rf
REVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXhfc3RyKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X0dMT0JBTF9TVFJJTkcKLQotICBjb25zdCA6OnN0ZDo6c3RyaW5nIHJlZ2V4X3N0ZF9zdHIocmVn
ZXhfY19zdHIpOwotICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXhfc3RkX3N0
cik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBub24tdm9pZCBmdW5jdGlvbiBjYW4gYmUgdXNlZCBp
biBhIGRlYXRoIHRlc3QuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgTm9uVm9pZEZ1bmN0aW9u
KSB7Ci0gIEFTU0VSVF9ERUFUSChOb25Wb2lkRnVuY3Rpb24oKSwgIk5vblZvaWRGdW5jdGlvbiIp
OwotfQotCi0vLyBUZXN0cyB0aGF0IGZ1bmN0aW9ucyB0aGF0IHRha2UgcGFyYW1ldGVyKHMpIGNh
biBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBGdW5j
dGlvbldpdGhQYXJhbWV0ZXIpIHsKLSAgRVhQRUNUX0RFQVRIKERpZUlmKHRydWUpLCAiRGllSWZc
XChcXCkiKTsKLSAgRVhQRUNUX0RFQVRIKERpZUlmTGVzc1RoYW4oMiwgMyksICJEaWVJZkxlc3NU
aGFuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQVRIIGNhbiBiZSB1c2VkIG91dHNp
ZGUgYSBURVNULCBURVNUX0YsIG9yIHRlc3QgZml4dHVyZS4KLVRFU1RfRihUZXN0Rm9yRGVhdGhU
ZXN0LCBPdXRzaWRlRml4dHVyZSkgewotICBEZWF0aFRlc3RTdWJyb3V0aW5lKCk7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgZGVhdGggdGVzdHMgY2FuIGJlIGRvbmUgaW5zaWRlIGEgbG9vcC4KLVRFU1Rf
RihUZXN0Rm9yRGVhdGhUZXN0LCBJbnNpZGVMb29wKSB7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwg
NTsgaSsrKSB7Ci0gICAgRVhQRUNUX0RFQVRIKERpZUlmTGVzc1RoYW4oLTEsIGkpLCAiRGllSWZM
ZXNzVGhhbiIpIDw8ICJ3aGVyZSBpID09ICIgPDwgaTsKLSAgfQotfQotCi0vLyBUZXN0cyB0aGF0
IGEgY29tcG91bmQgc3RhdGVtZW50IGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KLVRFU1Rf
RihUZXN0Rm9yRGVhdGhUZXN0LCBDb21wb3VuZFN0YXRlbWVudCkgewotICBFWFBFQ1RfREVBVEgo
eyAgLy8gTk9MSU5UCi0gICAgY29uc3QgaW50IHggPSAyOwotICAgIGNvbnN0IGludCB5ID0geCAr
IDE7Ci0gICAgRGllSWZMZXNzVGhhbih4LCB5KTsKLSAgfSwKLSAgIkRpZUlmTGVzc1RoYW4iKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBjb2RlIHRoYXQgZG9lc24ndCBkaWUgY2F1c2VzIGEgZGVhdGgg
dGVzdCB0byBmYWlsLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERvZXNOb3REaWUpIHsKLSAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKERpZUlmKGZhbHNlKSwgIkRpZUlm
IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZGllIik7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgYSBkZWF0aCB0ZXN0IGZhaWxzIHdoZW4gdGhlIGVycm9yIG1lc3NhZ2UgaXNu
J3QgZXhwZWN0ZWQuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRXJyb3JNZXNzYWdlTWlzbWF0
Y2gpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNU
X0RFQVRIKERpZUlmKHRydWUpLCAiRGllSWZMZXNzVGhhbiIpIDw8ICJFbmQgb2YgZGVhdGggdGVz
dCBtZXNzYWdlLiI7Ci0gIH0sICJkaWVkIGJ1dCBub3Qgd2l0aCBleHBlY3RlZCBlcnJvciIpOwot
fQotCi0vLyBPbiBleGl0LCAqYWJvcnRlZCB3aWxsIGJlIHRydWUgaWZmIHRoZSBFWFBFQ1RfREVB
VEgoKSBzdGF0ZW1lbnQKLS8vIGFib3J0ZWQgdGhlIGZ1bmN0aW9uLgotdm9pZCBFeHBlY3REZWF0
aFRlc3RIZWxwZXIoYm9vbCogYWJvcnRlZCkgewotICAqYWJvcnRlZCA9IHRydWU7Ci0gIEVYUEVD
VF9ERUFUSChEaWVJZihmYWxzZSksICJEaWVJZiIpOyAgLy8gVGhpcyBhc3NlcnRpb24gc2hvdWxk
IGZhaWwuCi0gICphYm9ydGVkID0gZmFsc2U7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RF
QVRIIGRvZXNuJ3QgYWJvcnQgdGhlIHRlc3Qgb24gZmFpbHVyZS4KLVRFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBFWFBFQ1RfREVBVEgpIHsKLSAgYm9vbCBhYm9ydGVkID0gdHJ1ZTsKLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoRXhwZWN0RGVhdGhUZXN0SGVscGVyKCZhYm9ydGVkKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBkaWUiKTsKLSAgRVhQRUNUX0ZBTFNFKGFi
b3J0ZWQpOwotfQotCi0vLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUFUSCBkb2VzIGFib3J0IHRoZSB0
ZXN0IG9uIGZhaWx1cmUuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQVNTRVJUX0RFQVRIKSB7
Ci0gIHN0YXRpYyBib29sIGFib3J0ZWQ7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5P
TElOVAotICAgIGFib3J0ZWQgPSB0cnVlOwotICAgIEFTU0VSVF9ERUFUSChEaWVJZihmYWxzZSks
ICJEaWVJZiIpOyAgLy8gVGhpcyBhc3NlcnRpb24gc2hvdWxkIGZhaWwuCi0gICAgYWJvcnRlZCA9
IGZhbHNlOwotICB9LCAiZmFpbGVkIHRvIGRpZSIpOwotICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEggZXZhbHVhdGVzIHRoZSBhcmd1bWVudHMg
ZXhhY3RseSBvbmNlLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFNpbmdsZUV2YWx1YXRpb24p
IHsKLSAgaW50IHggPSAzOwotICBFWFBFQ1RfREVBVEgoRGllSWYoKCsreCkgPT0gNCksICJEaWVJ
ZiIpOwotCi0gIGNvbnN0IGNoYXIqIHJlZ2V4ID0gIkRpZUlmIjsKLSAgY29uc3QgY2hhciogcmVn
ZXhfc2F2ZSA9IHJlZ2V4OwotICBFWFBFQ1RfREVBVEgoRGllSWZMZXNzVGhhbigzLCA0KSwgcmVn
ZXgrKyk7Ci0gIEVYUEVDVF9FUShyZWdleF9zYXZlICsgMSwgcmVnZXgpOwotfQotCi0vLyBUZXN0
cyB0aGF0IHJ1bi1hd2F5IGRlYXRoIHRlc3RzIGFyZSByZXBvcnRlZCBhcyBmYWlsdXJlcy4KLVRF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBSdW5hd2F5KSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEVYUEVDVF9ERUFUSChzdGF0aWNfY2FzdDx2b2lkPigwKSwgIkZvbyIpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGRpZS4iKTsKLQotICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShBU1NFUlRfREVBVEgocmV0dXJuLCAiQmFyIiksCi0gICAgICAgICAgICAgICAgICAgICAg
ICJpbGxlZ2FsIHJldHVybiBpbiB0ZXN0IHN0YXRlbWVudC4iKTsKLX0KLQotCi0vLyBUZXN0cyB0
aGF0IEVYUEVDVF9ERUJVR19ERUFUSCB3b3JrcyBhcyBleHBlY3RlZCwKLS8vIHRoYXQgaXMsIGlu
IGRlYnVnIG1vZGUsIGl0OgotLy8gMS4gQXNzZXJ0cyBvbiBkZWF0aC4KLS8vIDIuIEhhcyBubyBz
aWRlIGVmZmVjdC4KLS8vCi0vLyBBbmQgaW4gb3B0IG1vZGUsIGl0OgotLy8gMS4gIEhhcyBzaWRl
IGVmZmVjdHMgYnV0IGRvZXMgbm90IGFzc2VydC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBU
ZXN0RXhwZWN0RGVidWdEZWF0aCkgewotICBpbnQgc2lkZWVmZmVjdCA9IDA7Ci0KLSAgRVhQRUNU
X0RFQlVHX0RFQVRIKERpZUluRGVidWdFbHNlMTIoJnNpZGVlZmZlY3QpLAotICAgICAgICAgICAg
ICAgICAgICAgImRlYXRoLipEaWVJbkRlYnVnRWxzZTEyIik7Ci0KLSNpZmRlZiBOREVCVUcKLSAg
Ly8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgb2NjdXJzIGluIG9wdCBtb2RlIChzaWRlZWZm
ZWN0KS4KLSAgRVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0KTsKLSNlbHNlCi0gIC8vIENoZWNrcyB0
aGF0IHRoZSBhc3NpZ25tZW50IGRvZXMgbm90IG9jY3VyIGluIGRiZyBtb2RlIChubyBzaWRlZWZm
ZWN0KS4KLSAgRVhQRUNUX0VRKDAsIHNpZGVlZmZlY3QpOwotI2VuZGlmCi19Ci0KLS8vIFRlc3Rz
IHRoYXQgQVNTRVJUX0RFQlVHX0RFQVRIIHdvcmtzIGFzIGV4cGVjdGVkCi0vLyBJbiBkZWJ1ZyBt
b2RlOgotLy8gMS4gQXNzZXJ0cyBvbiBkZWJ1ZyBkZWF0aC4KLS8vIDIuIEhhcyBubyBzaWRlIGVm
ZmVjdC4KLS8vCi0vLyBJbiBvcHQgbW9kZToKLS8vIDEuIEhhcyBzaWRlIGVmZmVjdHMgYW5kIHJl
dHVybnMgdGhlIGV4cGVjdGVkIHZhbHVlICgxMikuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
VGVzdEFzc2VydERlYnVnRGVhdGgpIHsKLSAgaW50IHNpZGVlZmZlY3QgPSAwOwotCi0gIEFTU0VS
VF9ERUJVR19ERUFUSCh7ICAvLyBOT0xJTlQKLSAgICAvLyBUZXN0cyB0aGF0IHRoZSByZXR1cm4g
dmFsdWUgaXMgMTIgaW4gb3B0IG1vZGUuCi0gICAgRVhQRUNUX0VRKDEyLCBEaWVJbkRlYnVnRWxz
ZTEyKCZzaWRlZWZmZWN0KSk7Ci0gICAgLy8gVGVzdHMgdGhhdCB0aGUgc2lkZSBlZmZlY3Qgb2Nj
dXJyZWQgaW4gb3B0IG1vZGUuCi0gICAgRVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0KTsKLSAgfSwg
ImRlYXRoLipEaWVJbkRlYnVnRWxzZTEyIik7Ci0KLSNpZmRlZiBOREVCVUcKLSAgLy8gQ2hlY2tz
IHRoYXQgdGhlIGFzc2lnbm1lbnQgb2NjdXJzIGluIG9wdCBtb2RlIChzaWRlZWZmZWN0KS4KLSAg
RVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0KTsKLSNlbHNlCi0gIC8vIENoZWNrcyB0aGF0IHRoZSBh
c3NpZ25tZW50IGRvZXMgbm90IG9jY3VyIGluIGRiZyBtb2RlIChubyBzaWRlZWZmZWN0KS4KLSAg
RVhQRUNUX0VRKDAsIHNpZGVlZmZlY3QpOwotI2VuZGlmCi19Ci0KLSNpZm5kZWYgTkRFQlVHCi0K
LXZvaWQgRXhwZWN0RGVidWdEZWF0aEhlbHBlcihib29sKiBhYm9ydGVkKSB7Ci0gICphYm9ydGVk
ID0gdHJ1ZTsKLSAgRVhQRUNUX0RFQlVHX0RFQVRIKHJldHVybiwgIiIpIDw8ICJUaGlzIGlzIGV4
cGVjdGVkIHRvIGZhaWwuIjsKLSAgKmFib3J0ZWQgPSBmYWxzZTsKLX0KLQotI2lmIEdURVNUX09T
X1dJTkRPV1MKLVRFU1QoUG9wVXBEZWF0aFRlc3QsIERvZXNOb3RTaG93UG9wVXBPbkFib3J0KSB7
Ci0gIHByaW50ZigiVGhpcyB0ZXN0IHNob3VsZCBiZSBjb25zaWRlcmVkIGZhaWxpbmcgaWYgaXQg
c2hvd3MgIgotICAgICAgICAgImFueSBwb3AtdXAgZGlhbG9ncy5cbiIpOwotICBmZmx1c2goc3Rk
b3V0KTsKLQotICBFWFBFQ1RfREVBVEgoewotICAgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hf
ZXhjZXB0aW9ucykgPSBmYWxzZTsKLSAgICBhYm9ydCgpOwotICB9LCAiIik7Ci19Ci0KLVRFU1Qo
UG9wVXBEZWF0aFRlc3QsIERvZXNOb3RTaG93UG9wVXBPblRocm93KSB7Ci0gIHByaW50ZigiVGhp
cyB0ZXN0IHNob3VsZCBiZSBjb25zaWRlcmVkIGZhaWxpbmcgaWYgaXQgc2hvd3MgIgotICAgICAg
ICAgImFueSBwb3AtdXAgZGlhbG9ncy5cbiIpOwotICBmZmx1c2goc3Rkb3V0KTsKLQotICBFWFBF
Q1RfREVBVEgoewotICAgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgPSBm
YWxzZTsKLSAgICB0aHJvdyAxOwotICB9LCAiIik7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1MKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVCVUdfREVBVEggaW4gZGVidWcgbW9kZSBk
b2VzIG5vdCBhYm9ydAotLy8gdGhlIGZ1bmN0aW9uLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3Qs
IEV4cGVjdERlYnVnRGVhdGhEb2VzTm90QWJvcnQpIHsKLSAgYm9vbCBhYm9ydGVkID0gdHJ1ZTsK
LSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRXhwZWN0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRl
ZCksICIiKTsKLSAgRVhQRUNUX0ZBTFNFKGFib3J0ZWQpOwotfQotCi12b2lkIEFzc2VydERlYnVn
RGVhdGhIZWxwZXIoYm9vbCogYWJvcnRlZCkgewotICAqYWJvcnRlZCA9IHRydWU7Ci0gIEFTU0VS
VF9ERUJVR19ERUFUSChyZXR1cm4sICIiKSA8PCAiVGhpcyBpcyBleHBlY3RlZCB0byBmYWlsLiI7
Ci0gICphYm9ydGVkID0gZmFsc2U7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQlVHX0RF
QVRIIGluIGRlYnVnIG1vZGUgYWJvcnRzIHRoZSBmdW5jdGlvbiBvbgotLy8gZmFpbHVyZS4KLVRF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzKSB7Ci0gIHN0YXRp
YyBib29sIGFib3J0ZWQ7Ci0gIGFib3J0ZWQgPSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKLSAgRVhQRUNUX1RSVUUo
YWJvcnRlZCk7Ci19Ci0KLSNlbmRpZiAgLy8gX05ERUJVRwotCi0vLyBUZXN0cyB0aGUgKl9FWElU
IGZhbWlseSBvZiBtYWNyb3MsIHVzaW5nIGEgdmFyaWV0eSBvZiBwcmVkaWNhdGVzLgotc3RhdGlj
IHZvaWQgVGVzdEV4aXRNYWNyb3MoKSB7Ci0gIEVYUEVDVF9FWElUKF9leGl0KDEpLCAgdGVzdGlu
Zzo6RXhpdGVkV2l0aENvZGUoMSksICAiIik7Ci0gIEFTU0VSVF9FWElUKF9leGl0KDQyKSwgdGVz
dGluZzo6RXhpdGVkV2l0aENvZGUoNDIpLCAiIik7Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0g
IC8vIE9mIGFsbCBzaWduYWxzIGVmZmVjdHMgb24gdGhlIHByb2Nlc3MgZXhpdCBjb2RlLCBvbmx5
IHRob3NlIG9mIFNJR0FCUlQKLSAgLy8gYXJlIGRvY3VtZW50ZWQgb24gV2luZG93cy4KLSAgLy8g
U2VlIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9kd3d6a3Q0YyhWUy43
MSkuYXNweC4KLSAgRVhQRUNUX0VYSVQocmFpc2UoU0lHQUJSVCksIHRlc3Rpbmc6OkV4aXRlZFdp
dGhDb2RlKDMpLCAiIik7Ci0jZWxzZQotICBFWFBFQ1RfRVhJVChyYWlzZShTSUdLSUxMKSwgdGVz
dGluZzo6S2lsbGVkQnlTaWduYWwoU0lHS0lMTCksICIiKSA8PCAiZm9vIjsKLSAgQVNTRVJUX0VY
SVQocmFpc2UoU0lHVVNSMiksIHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKFNJR1VTUjIpLCAiIikg
PDwgImJhciI7Ci0KLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNT
RVJUX0VYSVQoX2V4aXQoMCksIHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKFNJR1NFR1YpLCAiIikK
LSAgICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgdG9vLiI7Ci0gIH0sICJUaGlz
IGZhaWx1cmUgaXMgZXhwZWN0ZWQsIHRvby4iKTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9X
UwotCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9F
WElUKHJhaXNlKFNJR1NFR1YpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgwKSwgIiIpCi0gICAg
ICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIjsKLSAgfSwgIlRoaXMgZmFpbHVyZSBp
cyBleHBlY3RlZC4iKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEV4aXRNYWNyb3Mp
IHsKLSAgVGVzdEV4aXRNYWNyb3MoKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEV4
aXRNYWNyb3NVc2luZ0ZvcmspIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3Vz
ZV9mb3JrKSA9IHRydWU7Ci0gIFRlc3RFeGl0TWFjcm9zKCk7Ci19Ci0KLVRFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBJbnZhbGlkU3R5bGUpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90
ZXN0X3N0eWxlKSA9ICJyb2NvY28iOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBO
T0xJTlQKLSAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMCksICIiKSA8PCAiVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkLiI7Ci0gIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIik7Ci19Ci0KLS8v
IEEgRGVhdGhUZXN0RmFjdG9yeSB0aGF0IHJldHVybnMgTW9ja0RlYXRoVGVzdHMuCi1jbGFzcyBN
b2NrRGVhdGhUZXN0RmFjdG9yeSA6IHB1YmxpYyBEZWF0aFRlc3RGYWN0b3J5IHsKLSBwdWJsaWM6
Ci0gIE1vY2tEZWF0aFRlc3RGYWN0b3J5KCk7Ci0gIHZpcnR1YWwgYm9vbCBDcmVhdGUoY29uc3Qg
Y2hhciogc3RhdGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IDo6dGVzdGluZzo6
aW50ZXJuYWw6OlJFKiByZWdleCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBm
aWxlLCBpbnQgbGluZSwgRGVhdGhUZXN0KiogdGVzdCk7Ci0KLSAgLy8gU2V0cyB0aGUgcGFyYW1l
dGVycyBmb3Igc3Vic2VxdWVudCBjYWxscyB0byBDcmVhdGUuCi0gIHZvaWQgU2V0UGFyYW1ldGVy
cyhib29sIGNyZWF0ZSwgRGVhdGhUZXN0OjpUZXN0Um9sZSByb2xlLAotICAgICAgICAgICAgICAg
ICAgICAgaW50IHN0YXR1cywgYm9vbCBwYXNzZWQpOwotCi0gIC8vIEFjY2Vzc29ycy4KLSAgaW50
IEFzc3VtZVJvbGVDYWxscygpIGNvbnN0IHsgcmV0dXJuIGFzc3VtZV9yb2xlX2NhbGxzXzsgfQot
ICBpbnQgV2FpdENhbGxzKCkgY29uc3QgeyByZXR1cm4gd2FpdF9jYWxsc187IH0KLSAgaW50IFBh
c3NlZENhbGxzKCkgY29uc3QgeyByZXR1cm4gcGFzc2VkX2FyZ3NfLnNpemUoKTsgfQotICBib29s
IFBhc3NlZEFyZ3VtZW50KGludCBuKSBjb25zdCB7IHJldHVybiBwYXNzZWRfYXJnc19bbl07IH0K
LSAgaW50IEFib3J0Q2FsbHMoKSBjb25zdCB7IHJldHVybiBhYm9ydF9hcmdzXy5zaXplKCk7IH0K
LSAgRGVhdGhUZXN0OjpBYm9ydFJlYXNvbiBBYm9ydEFyZ3VtZW50KGludCBuKSBjb25zdCB7Ci0g
ICAgcmV0dXJuIGFib3J0X2FyZ3NfW25dOwotICB9Ci0gIGJvb2wgVGVzdERlbGV0ZWQoKSBjb25z
dCB7IHJldHVybiB0ZXN0X2RlbGV0ZWRfOyB9Ci0KLSBwcml2YXRlOgotICBmcmllbmQgY2xhc3Mg
TW9ja0RlYXRoVGVzdDsKLSAgLy8gSWYgdHJ1ZSwgQ3JlYXRlIHdpbGwgcmV0dXJuIGEgTW9ja0Rl
YXRoVGVzdDsgb3RoZXJ3aXNlIGl0IHJldHVybnMKLSAgLy8gTlVMTC4KLSAgYm9vbCBjcmVhdGVf
OwotICAvLyBUaGUgdmFsdWUgYSBNb2NrRGVhdGhUZXN0IHdpbGwgcmV0dXJuIGZyb20gaXRzIEFz
c3VtZVJvbGUgbWV0aG9kLgotICBEZWF0aFRlc3Q6OlRlc3RSb2xlIHJvbGVfOwotICAvLyBUaGUg
dmFsdWUgYSBNb2NrRGVhdGhUZXN0IHdpbGwgcmV0dXJuIGZyb20gaXRzIFdhaXQgbWV0aG9kLgot
ICBpbnQgc3RhdHVzXzsKLSAgLy8gVGhlIHZhbHVlIGEgTW9ja0RlYXRoVGVzdCB3aWxsIHJldHVy
biBmcm9tIGl0cyBQYXNzZWQgbWV0aG9kLgotICBib29sIHBhc3NlZF87Ci0KLSAgLy8gTnVtYmVy
IG9mIHRpbWVzIEFzc3VtZVJvbGUgd2FzIGNhbGxlZC4KLSAgaW50IGFzc3VtZV9yb2xlX2NhbGxz
XzsKLSAgLy8gTnVtYmVyIG9mIHRpbWVzIFdhaXQgd2FzIGNhbGxlZC4KLSAgaW50IHdhaXRfY2Fs
bHNfOwotICAvLyBUaGUgYXJndW1lbnRzIHRvIHRoZSBjYWxscyB0byBQYXNzZWQgc2luY2UgdGhl
IGxhc3QgY2FsbCB0bwotICAvLyBTZXRQYXJhbWV0ZXJzLgotICBzdGQ6OnZlY3Rvcjxib29sPiBw
YXNzZWRfYXJnc187Ci0gIC8vIFRoZSBhcmd1bWVudHMgdG8gdGhlIGNhbGxzIHRvIEFib3J0IHNp
bmNlIHRoZSBsYXN0IGNhbGwgdG8KLSAgLy8gU2V0UGFyYW1ldGVycy4KLSAgc3RkOjp2ZWN0b3I8
RGVhdGhUZXN0OjpBYm9ydFJlYXNvbj4gYWJvcnRfYXJnc187Ci0gIC8vIFRydWUgaWYgdGhlIGxh
c3QgTW9ja0RlYXRoVGVzdCByZXR1cm5lZCBieSBDcmVhdGUgaGFzIGJlZW4KLSAgLy8gZGVsZXRl
ZC4KLSAgYm9vbCB0ZXN0X2RlbGV0ZWRfOwotfTsKLQotCi0vLyBBIERlYXRoVGVzdCBpbXBsZW1l
bnRhdGlvbiB1c2VmdWwgaW4gdGVzdGluZy4gIEl0IHJldHVybnMgdmFsdWVzIHNldAotLy8gYXQg
aXRzIGNyZWF0aW9uIGZyb20gaXRzIHZhcmlvdXMgaW5oZXJpdGVkIERlYXRoVGVzdCBtZXRob2Rz
LCBhbmQKLS8vIHJlcG9ydHMgY2FsbHMgdG8gdGhvc2UgbWV0aG9kcyB0byBpdHMgcGFyZW50IE1v
Y2tEZWF0aFRlc3RGYWN0b3J5Ci0vLyBvYmplY3QuCi1jbGFzcyBNb2NrRGVhdGhUZXN0IDogcHVi
bGljIERlYXRoVGVzdCB7Ci0gcHVibGljOgotICBNb2NrRGVhdGhUZXN0KE1vY2tEZWF0aFRlc3RG
YWN0b3J5ICpwYXJlbnQsCi0gICAgICAgICAgICAgICAgVGVzdFJvbGUgcm9sZSwgaW50IHN0YXR1
cywgYm9vbCBwYXNzZWQpIDoKLSAgICAgIHBhcmVudF8ocGFyZW50KSwgcm9sZV8ocm9sZSksIHN0
YXR1c18oc3RhdHVzKSwgcGFzc2VkXyhwYXNzZWQpIHsKLSAgfQotICB2aXJ0dWFsIH5Nb2NrRGVh
dGhUZXN0KCkgewotICAgIHBhcmVudF8tPnRlc3RfZGVsZXRlZF8gPSB0cnVlOwotICB9Ci0gIHZp
cnR1YWwgVGVzdFJvbGUgQXNzdW1lUm9sZSgpIHsKLSAgICArK3BhcmVudF8tPmFzc3VtZV9yb2xl
X2NhbGxzXzsKLSAgICByZXR1cm4gcm9sZV87Ci0gIH0KLSAgdmlydHVhbCBpbnQgV2FpdCgpIHsK
LSAgICArK3BhcmVudF8tPndhaXRfY2FsbHNfOwotICAgIHJldHVybiBzdGF0dXNfOwotICB9Ci0g
IHZpcnR1YWwgYm9vbCBQYXNzZWQoYm9vbCBleGl0X3N0YXR1c19vaykgewotICAgIHBhcmVudF8t
PnBhc3NlZF9hcmdzXy5wdXNoX2JhY2soZXhpdF9zdGF0dXNfb2spOwotICAgIHJldHVybiBwYXNz
ZWRfOwotICB9Ci0gIHZpcnR1YWwgdm9pZCBBYm9ydChBYm9ydFJlYXNvbiByZWFzb24pIHsKLSAg
ICBwYXJlbnRfLT5hYm9ydF9hcmdzXy5wdXNoX2JhY2socmVhc29uKTsKLSAgfQotIHByaXZhdGU6
Ci0gIE1vY2tEZWF0aFRlc3RGYWN0b3J5KiBjb25zdCBwYXJlbnRfOwotICBjb25zdCBUZXN0Um9s
ZSByb2xlXzsKLSAgY29uc3QgaW50IHN0YXR1c187Ci0gIGNvbnN0IGJvb2wgcGFzc2VkXzsKLX07
Ci0KLQotLy8gTW9ja0RlYXRoVGVzdEZhY3RvcnkgY29uc3RydWN0b3IuCi1Nb2NrRGVhdGhUZXN0
RmFjdG9yeTo6TW9ja0RlYXRoVGVzdEZhY3RvcnkoKQotICAgIDogY3JlYXRlXyh0cnVlKSwKLSAg
ICAgIHJvbGVfKERlYXRoVGVzdDo6T1ZFUlNFRV9URVNUKSwKLSAgICAgIHN0YXR1c18oMCksCi0g
ICAgICBwYXNzZWRfKHRydWUpLAotICAgICAgYXNzdW1lX3JvbGVfY2FsbHNfKDApLAotICAgICAg
d2FpdF9jYWxsc18oMCksCi0gICAgICBwYXNzZWRfYXJnc18oKSwKLSAgICAgIGFib3J0X2FyZ3Nf
KCkgewotfQotCi0KLS8vIFNldHMgdGhlIHBhcmFtZXRlcnMgZm9yIHN1YnNlcXVlbnQgY2FsbHMg
dG8gQ3JlYXRlLgotdm9pZCBNb2NrRGVhdGhUZXN0RmFjdG9yeTo6U2V0UGFyYW1ldGVycyhib29s
IGNyZWF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVhdGhU
ZXN0OjpUZXN0Um9sZSByb2xlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgc3RhdHVzLCBib29sIHBhc3NlZCkgewotICBjcmVhdGVfID0gY3JlYXRlOwotICBy
b2xlXyA9IHJvbGU7Ci0gIHN0YXR1c18gPSBzdGF0dXM7Ci0gIHBhc3NlZF8gPSBwYXNzZWQ7Ci0K
LSAgYXNzdW1lX3JvbGVfY2FsbHNfID0gMDsKLSAgd2FpdF9jYWxsc18gPSAwOwotICBwYXNzZWRf
YXJnc18uY2xlYXIoKTsKLSAgYWJvcnRfYXJnc18uY2xlYXIoKTsKLX0KLQotCi0vLyBTZXRzIHRl
c3QgdG8gTlVMTCAoaWYgY3JlYXRlXyBpcyBmYWxzZSkgb3IgdG8gdGhlIGFkZHJlc3Mgb2YgYSBu
ZXcKLS8vIE1vY2tEZWF0aFRlc3Qgb2JqZWN0IHdpdGggcGFyYW1ldGVycyB0YWtlbiBmcm9tIHRo
ZSBsYXN0IGNhbGwKLS8vIHRvIFNldFBhcmFtZXRlcnMgKGlmIGNyZWF0ZV8gaXMgdHJ1ZSkuICBB
bHdheXMgcmV0dXJucyB0cnVlLgotYm9vbCBNb2NrRGVhdGhUZXN0RmFjdG9yeTo6Q3JlYXRlKGNv
bnN0IGNoYXIqIC8qc3RhdGVtZW50Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UkUqIC8qcmVnZXgqLywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKmZpbGUqLywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgLypsaW5lKi8sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRGVhdGhUZXN0KiogdGVzdCkgewotICB0ZXN0X2RlbGV0ZWRfID0gZmFs
c2U7Ci0gIGlmIChjcmVhdGVfKSB7Ci0gICAgKnRlc3QgPSBuZXcgTW9ja0RlYXRoVGVzdCh0aGlz
LCByb2xlXywgc3RhdHVzXywgcGFzc2VkXyk7Ci0gIH0gZWxzZSB7Ci0gICAgKnRlc3QgPSBOVUxM
OwotICB9Ci0gIHJldHVybiB0cnVlOwotfQotCi0vLyBBIHRlc3QgZml4dHVyZSBmb3IgdGVzdGlu
ZyB0aGUgbG9naWMgb2YgdGhlIEdURVNUX0RFQVRIX1RFU1RfIG1hY3JvLgotLy8gSXQgaW5zdGFs
bHMgYSBNb2NrRGVhdGhUZXN0RmFjdG9yeSB0aGF0IGlzIHVzZWQgZm9yIHRoZSBkdXJhdGlvbgot
Ly8gb2YgdGhlIHRlc3QgY2FzZS4KLWNsYXNzIE1hY3JvTG9naWNEZWF0aFRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICBzdGF0aWMgdGVzdGluZzo6aW50ZXJuYWw6
OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KiByZXBsYWNlcl87Ci0gIHN0YXRpYyBNb2NrRGVhdGhU
ZXN0RmFjdG9yeSogZmFjdG9yeV87Ci0KLSAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsK
LSAgICBmYWN0b3J5XyA9IG5ldyBNb2NrRGVhdGhUZXN0RmFjdG9yeTsKLSAgICByZXBsYWNlcl8g
PSBuZXcgdGVzdGluZzo6aW50ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KGZhY3Rvcnlf
KTsKLSAgfQotCi0gIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7Ci0gICAgZGVsZXRl
IHJlcGxhY2VyXzsKLSAgICByZXBsYWNlcl8gPSBOVUxMOwotICAgIGRlbGV0ZSBmYWN0b3J5XzsK
LSAgICBmYWN0b3J5XyA9IE5VTEw7Ci0gIH0KLQotICAvLyBSdW5zIGEgZGVhdGggdGVzdCB0aGF0
IGJyZWFrcyB0aGUgcnVsZXMgYnkgcmV0dXJuaW5nLiAgU3VjaCBhIGRlYXRoCi0gIC8vIHRlc3Qg
Y2Fubm90IGJlIHJ1biBkaXJlY3RseSBmcm9tIGEgdGVzdCByb3V0aW5lIHRoYXQgdXNlcyBhCi0g
IC8vIE1vY2tEZWF0aFRlc3QsIG9yIHRoZSByZW1haW5kZXIgb2YgdGhlIHJvdXRpbmUgd2lsbCBu
b3QgYmUgZXhlY3V0ZWQuCi0gIHN0YXRpYyB2b2lkIFJ1blJldHVybmluZ0RlYXRoVGVzdChib29s
KiBmbGFnKSB7Ci0gICAgQVNTRVJUX0RFQVRIKHsgIC8vIE5PTElOVAotICAgICAgKmZsYWcgPSB0
cnVlOwotICAgICAgcmV0dXJuOwotICAgIH0sICIiKTsKLSAgfQotfTsKLQotdGVzdGluZzo6aW50
ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KiBNYWNyb0xvZ2ljRGVhdGhUZXN0OjpyZXBs
YWNlcl8KLSAgICA9IE5VTEw7Ci1Nb2NrRGVhdGhUZXN0RmFjdG9yeSogTWFjcm9Mb2dpY0RlYXRo
VGVzdDo6ZmFjdG9yeV8gPSBOVUxMOwotCi0KLS8vIFRlc3QgdGhhdCBub3RoaW5nIGhhcHBlbnMg
d2hlbiB0aGUgZmFjdG9yeSBkb2Vzbid0IHJldHVybiBhIERlYXRoVGVzdDoKLVRFU1RfRihNYWNy
b0xvZ2ljRGVhdGhUZXN0LCBOb3RoaW5nSGFwcGVucykgewotICBib29sIGZsYWcgPSBmYWxzZTsK
LSAgZmFjdG9yeV8tPlNldFBhcmFtZXRlcnMoZmFsc2UsIERlYXRoVGVzdDo6T1ZFUlNFRV9URVNU
LCAwLCB0cnVlKTsKLSAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7Ci0gIEVYUEVDVF9G
QUxTRShmbGFnKTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5Bc3N1bWVSb2xlQ2FsbHMoKSk7
Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+V2FpdENhbGxzKCkpOwotICBFWFBFQ1RfRVEoMCwg
ZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPkFib3J0
Q2FsbHMoKSk7Ci0gIEVYUEVDVF9GQUxTRShmYWN0b3J5Xy0+VGVzdERlbGV0ZWQoKSk7Ci19Ci0K
LS8vIFRlc3QgdGhhdCB0aGUgcGFyZW50IHByb2Nlc3MgZG9lc24ndCBydW4gdGhlIGRlYXRoIHRl
c3QgY29kZSwKLS8vIGFuZCB0aGF0IHRoZSBQYXNzZWQgbWV0aG9kIHJldHVybnMgZmFsc2Ugd2hl
biB0aGUgKHNpbXVsYXRlZCkKLS8vIGNoaWxkIHByb2Nlc3MgZXhpdHMgd2l0aCBzdGF0dXMgMDoK
LVRFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBDaGlsZEV4aXRzU3VjY2Vzc2Z1bGx5KSB7Ci0g
IGJvb2wgZmxhZyA9IGZhbHNlOwotICBmYWN0b3J5Xy0+U2V0UGFyYW1ldGVycyh0cnVlLCBEZWF0
aFRlc3Q6Ok9WRVJTRUVfVEVTVCwgMCwgdHJ1ZSk7Ci0gIEVYUEVDVF9ERUFUSChmbGFnID0gdHJ1
ZSwgIiIpOwotICBFWFBFQ1RfRkFMU0UoZmxhZyk7Ci0gIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+
QXNzdW1lUm9sZUNhbGxzKCkpOwotICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPldhaXRDYWxscygp
KTsKLSAgQVNTRVJUX0VRKDEsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKLSAgRVhQRUNUX0ZB
TFNFKGZhY3RvcnlfLT5QYXNzZWRBcmd1bWVudCgwKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5
Xy0+QWJvcnRDYWxscygpKTsKLSAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkp
OwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBQYXNzZWQgbWV0aG9kIHdhcyBnaXZlbiB0aGUgYXJn
dW1lbnQgInRydWUiIHdoZW4KLS8vIHRoZSAoc2ltdWxhdGVkKSBjaGlsZCBwcm9jZXNzIGV4aXRz
IHdpdGggc3RhdHVzIDE6Ci1URVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwgQ2hpbGRFeGl0c1Vu
c3VjY2Vzc2Z1bGx5KSB7Ci0gIGJvb2wgZmxhZyA9IGZhbHNlOwotICBmYWN0b3J5Xy0+U2V0UGFy
YW1ldGVycyh0cnVlLCBEZWF0aFRlc3Q6Ok9WRVJTRUVfVEVTVCwgMSwgdHJ1ZSk7Ci0gIEVYUEVD
VF9ERUFUSChmbGFnID0gdHJ1ZSwgIiIpOwotICBFWFBFQ1RfRkFMU0UoZmxhZyk7Ci0gIEVYUEVD
VF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOwotICBFWFBFQ1RfRVEoMSwgZmFj
dG9yeV8tPldhaXRDYWxscygpKTsKLSAgQVNTRVJUX0VRKDEsIGZhY3RvcnlfLT5QYXNzZWRDYWxs
cygpKTsKLSAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlBhc3NlZEFyZ3VtZW50KDApKTsKLSAgRVhQ
RUNUX0VRKDAsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOwotICBFWFBFQ1RfVFJVRShmYWN0b3J5
Xy0+VGVzdERlbGV0ZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIChzaW11bGF0ZWQpIGNo
aWxkIHByb2Nlc3MgZXhlY3V0ZXMgdGhlIGRlYXRoIHRlc3QKLS8vIGNvZGUsIGFuZCBpcyBhYm9y
dGVkIHdpdGggdGhlIGNvcnJlY3QgQWJvcnRSZWFzb24gaWYgaXQKLS8vIGV4ZWN1dGVzIGEgcmV0
dXJuIHN0YXRlbWVudC4KLVRFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBDaGlsZFBlcmZvcm1z
UmV0dXJuKSB7Ci0gIGJvb2wgZmxhZyA9IGZhbHNlOwotICBmYWN0b3J5Xy0+U2V0UGFyYW1ldGVy
cyh0cnVlLCBEZWF0aFRlc3Q6OkVYRUNVVEVfVEVTVCwgMCwgdHJ1ZSk7Ci0gIFJ1blJldHVybmlu
Z0RlYXRoVGVzdCgmZmxhZyk7Ci0gIEVYUEVDVF9UUlVFKGZsYWcpOwotICBFWFBFQ1RfRVEoMSwg
ZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5X
YWl0Q2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7Ci0g
IEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKLSAgRVhQRUNUX0VRKERlYXRo
VGVzdDo6VEVTVF9FTkNPVU5URVJFRF9SRVRVUk5fU1RBVEVNRU5ULAotICAgICAgICAgICAgZmFj
dG9yeV8tPkFib3J0QXJndW1lbnQoMCkpOwotICBFWFBFQ1RfVFJVRShmYWN0b3J5Xy0+VGVzdERl
bGV0ZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIChzaW11bGF0ZWQpIGNoaWxkIHByb2Nl
c3MgaXMgYWJvcnRlZCB3aXRoIHRoZQotLy8gY29ycmVjdCBBYm9ydFJlYXNvbiBpZiBpdCBkb2Vz
IG5vdCBkaWUuCi1URVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwgQ2hpbGREb2VzTm90RGllKSB7
Ci0gIGJvb2wgZmxhZyA9IGZhbHNlOwotICBmYWN0b3J5Xy0+U2V0UGFyYW1ldGVycyh0cnVlLCBE
ZWF0aFRlc3Q6OkVYRUNVVEVfVEVTVCwgMCwgdHJ1ZSk7Ci0gIEVYUEVDVF9ERUFUSChmbGFnID0g
dHJ1ZSwgIiIpOwotICBFWFBFQ1RfVFJVRShmbGFnKTsKLSAgRVhQRUNUX0VRKDEsIGZhY3Rvcnlf
LT5Bc3N1bWVSb2xlQ2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+V2FpdENhbGxz
KCkpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOwotICAvLyBUaGlz
IHRpbWUgdGhlcmUgYXJlIHR3byBjYWxscyB0byBBYm9ydDogb25lIHNpbmNlIHRoZSB0ZXN0IGRp
ZG4ndAotICAvLyBkaWUsIGFuZCBhbm90aGVyIGZyb20gdGhlIFJldHVyblNlbnRpbmVsIHdoZW4g
aXQncyBkZXN0cm95ZWQuICBUaGUKLSAgLy8gc2VudGluZWwgbm9ybWFsbHkgaXNuJ3QgZGVzdHJv
eWVkIGlmIGEgdGVzdCBkb2Vzbid0IGRpZSwgc2luY2UKLSAgLy8gX2V4aXQoMikgaXMgY2FsbGVk
IGluIHRoYXQgY2FzZSBieSBGb3JraW5nRGVhdGhUZXN0LCBidXQgbm90IGJ5Ci0gIC8vIG91ciBN
b2NrRGVhdGhUZXN0LgotICBBU1NFUlRfRVEoMiwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7Ci0g
IEVYUEVDVF9FUShEZWF0aFRlc3Q6OlRFU1RfRElEX05PVF9ESUUsCi0gICAgICAgICAgICBmYWN0
b3J5Xy0+QWJvcnRBcmd1bWVudCgwKSk7Ci0gIEVYUEVDVF9FUShEZWF0aFRlc3Q6OlRFU1RfRU5D
T1VOVEVSRURfUkVUVVJOX1NUQVRFTUVOVCwKLSAgICAgICAgICAgIGZhY3RvcnlfLT5BYm9ydEFy
Z3VtZW50KDEpKTsKLSAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IGEgc3VjY2Vzc2Z1bCBkZWF0aCB0ZXN0IGRvZXMgbm90IHJlZ2lzdGVy
IGEgc3VjY2Vzc2Z1bAotLy8gdGVzdCBwYXJ0LgotVEVTVChTdWNjZXNzUmVnaXN0cmF0aW9uRGVh
dGhUZXN0LCBOb1N1Y2Nlc3NQYXJ0KSB7Ci0gIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOwot
ICBFWFBFQ1RfRVEoMCwgR2V0VW5pdFRlc3RJbXBsKCktPmN1cnJlbnRfdGVzdF9yZXN1bHQoKS0+
dG90YWxfcGFydF9jb3VudCgpKTsKLX0KLQotVEVTVChTdHJlYW1pbmdBc3NlcnRpb25zRGVhdGhU
ZXN0LCBEZWF0aFRlc3QpIHsKLSAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgInVuZXhw
ZWN0ZWQgZmFpbHVyZSI7Ci0gIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8ICJ1bmV4cGVj
dGVkIGZhaWx1cmUiOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAg
ICBFWFBFQ1RfREVBVEgoX2V4aXQoMCksICIiKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIH0s
ICJleHBlY3RlZCBmYWlsdXJlIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElO
VAotICAgIEFTU0VSVF9ERUFUSChfZXhpdCgwKSwgIiIpIDw8ICJleHBlY3RlZCBmYWlsdXJlIjsK
LSAgfSwgImV4cGVjdGVkIGZhaWx1cmUiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBHZXRMYXN0RXJy
bm9EZXNjcmlwdGlvbiByZXR1cm5zIGFuIGVtcHR5IHN0cmluZyB3aGVuIHRoZQotLy8gbGFzdCBl
cnJvciBpcyAwIGFuZCBub24tZW1wdHkgc3RyaW5nIHdoZW4gaXQgaXMgbm9uLXplcm8uCi1URVNU
KEdldExhc3RFcnJub0Rlc2NyaXB0aW9uLCBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbldvcmtzKSB7
Ci0gIGVycm5vID0gRU5PRU5UOwotICBFWFBFQ1RfU1RSTkUoIiIsIEdldExhc3RFcnJub0Rlc2Ny
aXB0aW9uKCkuY19zdHIoKSk7Ci0gIGVycm5vID0gMDsKLSAgRVhQRUNUX1NUUkVRKCIiLCBHZXRM
YXN0RXJybm9EZXNjcmlwdGlvbigpLmNfc3RyKCkpOwotfQotCi0jaWYgR1RFU1RfT1NfV0lORE9X
UwotVEVTVChBdXRvSGFuZGxlVGVzdCwgQXV0b0hhbmRsZVdvcmtzKSB7Ci0gIEhBTkRMRSBoYW5k
bGUgPSA6OkNyZWF0ZUV2ZW50KE5VTEwsIEZBTFNFLCBGQUxTRSwgTlVMTCk7Ci0gIEFTU0VSVF9O
RShJTlZBTElEX0hBTkRMRV9WQUxVRSwgaGFuZGxlKTsKLQotICAvLyBUZXN0cyB0aGF0IHRoZSBB
dXRvSGFuZGxlIGlzIGNvcnJlY3RseSBpbml0aWFsaXplZCB3aXRoIGEgaGFuZGxlLgotICB0ZXN0
aW5nOjppbnRlcm5hbDo6QXV0b0hhbmRsZSBhdXRvX2hhbmRsZShoYW5kbGUpOwotICBFWFBFQ1Rf
RVEoaGFuZGxlLCBhdXRvX2hhbmRsZS5HZXQoKSk7Ci0KLSAgLy8gVGVzdHMgdGhhdCBSZXNldCBh
c3NpZ25zIElOVkFMSURfSEFORExFX1ZBTFVFLgotICAvLyBOb3RlIHRoYXQgdGhpcyBjYW5ub3Qg
dmVyaWZ5IHdoZXRoZXIgdGhlIG9yaWdpbmFsIGhhbmRsZSBpcyBjbG9zZWQuCi0gIGF1dG9faGFu
ZGxlLlJlc2V0KCk7Ci0gIEVYUEVDVF9FUShJTlZBTElEX0hBTkRMRV9WQUxVRSwgYXV0b19oYW5k
bGUuR2V0KCkpOwotCi0gIC8vIFRlc3RzIHRoYXQgUmVzZXQgYXNzaWducyB0aGUgbmV3IGhhbmRs
ZS4KLSAgLy8gTm90ZSB0aGF0IHRoaXMgY2Fubm90IHZlcmlmeSB3aGV0aGVyIHRoZSBvcmlnaW5h
bCBoYW5kbGUgaXMgY2xvc2VkLgotICBoYW5kbGUgPSA6OkNyZWF0ZUV2ZW50KE5VTEwsIEZBTFNF
LCBGQUxTRSwgTlVMTCk7Ci0gIEFTU0VSVF9ORShJTlZBTElEX0hBTkRMRV9WQUxVRSwgaGFuZGxl
KTsKLSAgYXV0b19oYW5kbGUuUmVzZXQoaGFuZGxlKTsKLSAgRVhQRUNUX0VRKGhhbmRsZSwgYXV0
b19oYW5kbGUuR2V0KCkpOwotCi0gIC8vIFRlc3RzIHRoYXQgQXV0b0hhbmRsZSBjb250YWlucyBJ
TlZBTElEX0hBTkRMRV9WQUxVRSBieSBkZWZhdWx0LgotICB0ZXN0aW5nOjppbnRlcm5hbDo6QXV0
b0hhbmRsZSBhdXRvX2hhbmRsZTI7Ci0gIEVYUEVDVF9FUShJTlZBTElEX0hBTkRMRV9WQUxVRSwg
YXV0b19oYW5kbGUyLkdldCgpKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0j
aWYgR1RFU1RfT1NfV0lORE9XUwotdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IEJpZ2dlc3RQYXJz
YWJsZTsKLXR5cGVkZWYgc2lnbmVkIF9faW50NjQgQmlnZ2VzdFNpZ25lZFBhcnNhYmxlOwotY29u
c3QgQmlnZ2VzdFBhcnNhYmxlIGtCaWdnZXN0UGFyc2FibGVNYXggPSBVTExPTkdfTUFYOwotY29u
c3QgQmlnZ2VzdFBhcnNhYmxlIGtCaWdnZXN0U2lnbmVkUGFyc2FibGVNYXggPSBMTE9OR19NQVg7
Ci0jZWxzZQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgQmlnZ2VzdFBhcnNhYmxlOwotdHlw
ZWRlZiBzaWduZWQgbG9uZyBsb25nIEJpZ2dlc3RTaWduZWRQYXJzYWJsZTsKLWNvbnN0IEJpZ2dl
c3RQYXJzYWJsZSBrQmlnZ2VzdFBhcnNhYmxlTWF4ID0KLSAgICA6OnN0ZDo6bnVtZXJpY19saW1p
dHM8QmlnZ2VzdFBhcnNhYmxlPjo6bWF4KCk7Ci1jb25zdCBCaWdnZXN0U2lnbmVkUGFyc2FibGUg
a0JpZ2dlc3RTaWduZWRQYXJzYWJsZU1heCA9Ci0gICAgOjpzdGQ6Om51bWVyaWNfbGltaXRzPEJp
Z2dlc3RTaWduZWRQYXJzYWJsZT46Om1heCgpOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dT
Ci0KLVRFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgUmVqZWN0c0ludmFsaWRGb3JtYXQpIHsK
LSAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7Ci0KLSAgLy8gUmVqZWN0cyBub24tbnVtYmVy
cy4KLSAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIm5vbi1udW1iZXIg
c3RyaW5nIiksICZyZXN1bHQpKTsKLQotICAvLyBSZWplY3RzIG51bWJlcnMgd2l0aCB3aGl0ZXNw
YWNlIHByZWZpeC4KLSAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIiAx
MjMiKSwgJnJlc3VsdCkpOwotCi0gIC8vIFJlamVjdHMgbmVnYXRpdmUgbnVtYmVycy4KLSAgRVhQ
RUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIi0xMjMiKSwgJnJlc3VsdCkpOwot
Ci0gIC8vIFJlamVjdHMgbnVtYmVycyBzdGFydGluZyB3aXRoIGEgcGx1cyBzaWduLgotICBFWFBF
Q1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygiKzEyMyIpLCAmcmVzdWx0KSk7Ci0g
IGVycm5vID0gMDsKLX0KLQotVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBSZWplY3RzT3Zl
cmZsb3duTnVtYmVycykgewotICBCaWdnZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsKLQotICBFWFBF
Q1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygiOTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTkiKSwgJnJlc3VsdCkpOwotCi0gIHNpZ25lZCBjaGFyIGNoYXJfcmVzdWx0ID0gMDsKLSAgRVhQ
RUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIjIwMCIpLCAmY2hhcl9yZXN1bHQp
KTsKLSAgZXJybm8gPSAwOwotfQotCi1URVNUKFBhcnNlTmF0dXJhbE51bWJlclRlc3QsIEFjY2Vw
dHNWYWxpZE51bWJlcnMpIHsKLSAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7Ci0KLSAgcmVz
dWx0ID0gMDsKLSAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygiMTIzIiks
ICZyZXN1bHQpKTsKLSAgRVhQRUNUX0VRKDEyM1UsIHJlc3VsdCk7Ci0KLSAgLy8gQ2hlY2sgMCBh
cyBhbiBlZGdlIGNhc2UuCi0gIHJlc3VsdCA9IDE7Ci0gIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJh
bE51bWJlcihTdHJpbmcoIjAiKSwgJnJlc3VsdCkpOwotICBFWFBFQ1RfRVEoMFUsIHJlc3VsdCk7
Ci0KLSAgcmVzdWx0ID0gMTsKLSAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmlu
ZygiMDAwMDAiKSwgJnJlc3VsdCkpOwotICBFWFBFQ1RfRVEoMFUsIHJlc3VsdCk7Ci19Ci0KLVRF
U1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgQWNjZXB0c1R5cGVMaW1pdHMpIHsKLSAgTWVzc2Fn
ZSBtc2c7Ci0gIG1zZyA8PCBrQmlnZ2VzdFBhcnNhYmxlTWF4OwotCi0gIEJpZ2dlc3RQYXJzYWJs
ZSByZXN1bHQgPSAwOwotICBFWFBFQ1RfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIobXNnLkdldFN0
cmluZygpLCAmcmVzdWx0KSk7Ci0gIEVYUEVDVF9FUShrQmlnZ2VzdFBhcnNhYmxlTWF4LCByZXN1
bHQpOwotCi0gIE1lc3NhZ2UgbXNnMjsKLSAgbXNnMiA8PCBrQmlnZ2VzdFNpZ25lZFBhcnNhYmxl
TWF4OwotCi0gIEJpZ2dlc3RTaWduZWRQYXJzYWJsZSBzaWduZWRfcmVzdWx0ID0gMDsKLSAgRVhQ
RUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKG1zZzIuR2V0U3RyaW5nKCksICZzaWduZWRfcmVz
dWx0KSk7Ci0gIEVYUEVDVF9FUShrQmlnZ2VzdFNpZ25lZFBhcnNhYmxlTWF4LCBzaWduZWRfcmVz
dWx0KTsKLQotICBNZXNzYWdlIG1zZzM7Ci0gIG1zZzMgPDwgSU5UX01BWDsKLQotICBpbnQgaW50
X3Jlc3VsdCA9IDA7Ci0gIEVYUEVDVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihtc2czLkdldFN0
cmluZygpLCAmaW50X3Jlc3VsdCkpOwotICBFWFBFQ1RfRVEoSU5UX01BWCwgaW50X3Jlc3VsdCk7
Ci0KLSAgTWVzc2FnZSBtc2c0OwotICBtc2c0IDw8IFVJTlRfTUFYOwotCi0gIHVuc2lnbmVkIGlu
dCB1aW50X3Jlc3VsdCA9IDA7Ci0gIEVYUEVDVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihtc2c0
LkdldFN0cmluZygpLCAmdWludF9yZXN1bHQpKTsKLSAgRVhQRUNUX0VRKFVJTlRfTUFYLCB1aW50
X3Jlc3VsdCk7Ci19Ci0KLVRFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgV29ya3NGb3JTaG9y
dGVySW50ZWdlcnMpIHsKLSAgc2hvcnQgc2hvcnRfcmVzdWx0ID0gMDsKLSAgQVNTRVJUX1RSVUUo
UGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygiMTIzIiksICZzaG9ydF9yZXN1bHQpKTsKLSAgRVhQ
RUNUX0VRKDEyMywgc2hvcnRfcmVzdWx0KTsKLQotICBzaWduZWQgY2hhciBjaGFyX3Jlc3VsdCA9
IDA7Ci0gIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIjEyMyIpLCAmY2hh
cl9yZXN1bHQpKTsKLSAgRVhQRUNUX0VRKDEyMywgY2hhcl9yZXN1bHQpOwotfQotCi0jaWYgR1RF
U1RfT1NfV0lORE9XUwotVEVTVChFbnZpcm9ubWVudFRlc3QsIEhhbmRsZUZpdHNJbnRvU2l6ZVQp
IHsKLSAgLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogUmVtb3ZlIHRoaXMgdGVzdCBhZnRlciB0
aGlzIGNvbmRpdGlvbiBpcyB2ZXJpZmllZAotICAvLyBpbiBhIHN0YXRpYyBhc3NlcnRpb24gaW4g
Z3Rlc3QtZGVhdGgtdGVzdC5jYyBpbiB0aGUgZnVuY3Rpb24KLSAgLy8gR2V0U3RhdHVzRmlsZURl
c2NyaXB0b3IuCi0gIEFTU0VSVF9UUlVFKHNpemVvZihIQU5ETEUpIDw9IHNpemVvZihzaXplX3Qp
KTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0vLyBUZXN0cyB0aGF0IEVYUEVD
VF9ERUFUSF9JRl9TVVBQT1JURUQvQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCB0cmlnZ2VyCi0v
LyBmYWlsdXJlcyB3aGVuIGRlYXRoIHRlc3RzIGFyZSBhdmFpbGFibGUgb24gdGhlIHN5c3RlbS4K
LVRFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc0RlYXRoVGVzdCwgRXhwZWN0c0RlYXRoV2hlbkRl
YXRoVGVzdHNBdmFpbGFibGUpIHsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChEaWVJbnNp
ZGUoIkNvbmREZWF0aFRlc3RFeHBlY3RNYWNybyIpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJkZWF0aCBpbnNpZGUgQ29uZERlYXRoVGVzdEV4cGVjdE1hY3JvIik7Ci0gIEFTU0VSVF9E
RUFUSF9JRl9TVVBQT1JURUQoRGllSW5zaWRlKCJDb25kRGVhdGhUZXN0QXNzZXJ0TWFjcm8iKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVhdGggaW5zaWRlIENvbmREZWF0aFRlc3RB
c3NlcnRNYWNybyIpOwotCi0gIC8vIEVtcHR5IHN0YXRlbWVudCB3aWxsIG5vdCBjcmFzaCwgd2hp
Y2ggbXVzdCB0cmlnZ2VyIGEgZmFpbHVyZS4KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIiksICIiKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIiksICIiKTsKLX0KLQotI2Vsc2UKLQot
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkNhcHR1cmVTdGRlcnI7Ci11c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6R2V0Q2FwdHVyZWRTdGRlcnI7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U3Ry
aW5nOwotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQvQVNTRVJUX0RF
QVRIX0lGX1NVUFBPUlRFRCBhcmUgc3RpbGwKLS8vIGRlZmluZWQgYnV0IGRvIG5vdCB0cmlnZ2Vy
IGZhaWx1cmVzIHdoZW4gZGVhdGggdGVzdHMgYXJlIG5vdCBhdmFpbGFibGUgb24KLS8vIHRoZSBz
eXN0ZW0uCi1URVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NUZXN0LCBXYXJuc1doZW5EZWF0aFRl
c3RzTm90QXZhaWxhYmxlKSB7Ci0gIC8vIEVtcHR5IHN0YXRlbWVudCB3aWxsIG5vdCBjcmFzaCwg
YnV0IHRoYXQgc2hvdWxkIG5vdCB0cmlnZ2VyIGEgZmFpbHVyZQotICAvLyB3aGVuIGRlYXRoIHRl
c3RzIGFyZSBub3Qgc3VwcG9ydGVkLgotICBDYXB0dXJlU3RkZXJyKCk7Ci0gIEVYUEVDVF9ERUFU
SF9JRl9TVVBQT1JURUQoOywgIiIpOwotICBTdHJpbmcgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRl
cnIoKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCAhPSBzdHJzdHIob3V0cHV0LmNfc3RyKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJEZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCBv
biB0aGlzIHBsYXRmb3JtIikpOwotICBBU1NFUlRfVFJVRShOVUxMICE9IHN0cnN0cihvdXRwdXQu
Y19zdHIoKSwgIjsiKSk7Ci0KLSAgLy8gVGhlIHN0cmVhbWVkIG1lc3NhZ2Ugc2hvdWxkIG5vdCBi
ZSBwcmludGVkIGFzIHRoZXJlIGlzIG5vIHRlc3QgZmFpbHVyZS4KLSAgQ2FwdHVyZVN0ZGVycigp
OwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKSA8PCAic3RyZWFtZWQgbWVzc2Fn
ZSI7Ci0gIG91dHB1dCA9IEdldENhcHR1cmVkU3RkZXJyKCk7Ci0gIEFTU0VSVF9UUlVFKE5VTEwg
PT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLCAic3RyZWFtZWQgbWVzc2FnZSIpKTsKLQotICBDYXB0
dXJlU3RkZXJyKCk7Ci0gIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIpOyAgLy8gTk9M
SU5UCi0gIG91dHB1dCA9IEdldENhcHR1cmVkU3RkZXJyKCk7Ci0gIEFTU0VSVF9UUlVFKE5VTEwg
IT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
RGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSIpKTsKLSAgQVNT
RVJUX1RSVUUoTlVMTCAhPSBzdHJzdHIob3V0cHV0LmNfc3RyKCksICI7IikpOwotCi0gIENhcHR1
cmVTdGRlcnIoKTsKLSAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIikgPDwgInN0cmVh
bWVkIG1lc3NhZ2UiOyAgLy8gTk9MSU5UCi0gIG91dHB1dCA9IEdldENhcHR1cmVkU3RkZXJyKCk7
Ci0gIEFTU0VSVF9UUlVFKE5VTEwgPT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLCAic3RyZWFtZWQg
bWVzc2FnZSIpKTsKLX0KLQotdm9pZCBGdW5jV2l0aEFzc2VydChpbnQqIG4pIHsKLSAgQVNTRVJU
X0RFQVRIX0lGX1NVUFBPUlRFRChyZXR1cm47LCAiIik7Ci0gICgqbikrKzsKLX0KLQotLy8gVGVz
dHMgdGhhdCBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEIGRvZXMgbm90IHJldHVybiBmcm9tIHRo
ZSBjdXJyZW50Ci0vLyBmdW5jdGlvbiAoYXMgQVNTRVJUX0RFQVRIIGRvZXMpIGlmIGRlYXRoIHRl
c3RzIGFyZSBub3Qgc3VwcG9ydGVkLgotVEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zVGVzdCwg
QXNzZXJ0RGVhdERvZXNOb3RSZXR1cm5oSWZVbnN1cHBvcnRlZCkgewotICBpbnQgbiA9IDA7Ci0g
IEZ1bmNXaXRoQXNzZXJ0KCZuKTsKLSAgRVhQRUNUX0VRKDEsIG4pOwotfQotI2VuZGlmICAvLyBH
VEVTVF9IQVNfREVBVEhfVEVTVAotCi0vLyBUZXN0cyB0aGF0IHRoZSBkZWF0aCB0ZXN0IG1hY3Jv
cyBleHBhbmQgdG8gY29kZSB3aGljaCBtYXkgb3IgbWF5IG5vdAotLy8gYmUgZm9sbG93ZWQgYnkg
b3BlcmF0b3I8PCwgYW5kIHRoYXQgaW4gZWl0aGVyIGNhc2UgdGhlIGNvbXBsZXRlIHRleHQKLS8v
IGNvbXByaXNlcyBvbmx5IGEgc2luZ2xlIEMrKyBzdGF0ZW1lbnQuCi0vLwotLy8gVGhlIHN5bnRh
eCBzaG91bGQgd29yayB3aGV0aGVyIGRlYXRoIHRlc3RzIGFyZSBhdmFpbGFibGUgb3Igbm90Lgot
VEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zU3ludGF4RGVhdGhUZXN0LCBTaW5nbGVTdGF0ZW1l
bnQpIHsKLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgLy8gVGhpcyB3b3VsZCBmYWlsIGlmIGV4
ZWN1dGVkOyB0aGlzIGlzIGEgY29tcGlsYXRpb24gdGVzdCBvbmx5Ci0gICAgQVNTRVJUX0RFQVRI
X0lGX1NVUFBPUlRFRChyZXR1cm4sICIiKTsKLQotICBpZiAoQWx3YXlzVHJ1ZSgpKQotICAgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQoMSksICIiKTsKLSAgZWxzZQotICAgIC8vIFRo
aXMgZW1wdHkgImVsc2UiIGJyYW5jaCBpcyBtZWFudCB0byBlbnN1cmUgdGhhdCBFWFBFQ1RfREVB
VEgKLSAgICAvLyBkb2Vzbid0IGV4cGFuZCBpbnRvIGFuICJpZiIgc3RhdGVtZW50IHdpdGhvdXQg
YW4gImVsc2UiCi0gICAgOyAgLy8gTk9MSU5UCi0KLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAg
QVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChyZXR1cm4sICIiKSA8PCAiZGlkIG5vdCBkaWUiOwot
Ci0gIGlmIChBbHdheXNGYWxzZSgpKQotICAgIDsgIC8vIE5PTElOVAotICBlbHNlCi0gICAgRVhQ
RUNUX0RFQVRIX0lGX1NVUFBPUlRFRChfZXhpdCgxKSwgIiIpIDw8IDEgPDwgMiA8PCAzOwotfQot
Ci0vLyBUZXN0cyB0aGF0IGNvbmRpdGlvbmFsIGRlYXRoIHRlc3QgbWFjcm9zIGV4cGFuZCB0byBj
b2RlIHdoaWNoIGludGVyYWN0cwotLy8gd2VsbCB3aXRoIHN3aXRjaCBzdGF0ZW1lbnRzLgotVEVT
VChDb25kaXRpb25hbERlYXRoTWFjcm9zU3ludGF4RGVhdGhUZXN0LCBTd2l0Y2hTdGF0ZW1lbnQp
IHsKLS8vIE1pY3Jvc29mdCBjb21waWxlciB1c3VhbGx5IGNvbXBsYWlucyBhYm91dCBzd2l0Y2gg
c3RhdGVtZW50cyB3aXRob3V0Ci0vLyBjYXNlIGxhYmVscy4gV2Ugc3VwcHJlc3MgdGhhdCB3YXJu
aW5nIGZvciB0aGlzIHRlc3QuCi0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhwdXNo
KQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQwNjUpCi0jZW5kaWYgIC8vIF9NU0NfVkVSCi0K
LSAgc3dpdGNoICgwKQotICAgIGRlZmF1bHQ6Ci0gICAgICBBU1NFUlRfREVBVEhfSUZfU1VQUE9S
VEVEKF9leGl0KDEpLCAiIikKLSAgICAgICAgICA8PCAiZXhpdCBpbiBkZWZhdWx0IHN3aXRjaCBo
YW5kbGVyIjsKLQotICBzd2l0Y2ggKDApCi0gICAgY2FzZSAwOgotICAgICAgRVhQRUNUX0RFQVRI
X0lGX1NVUFBPUlRFRChfZXhpdCgxKSwgIiIpIDw8ICJleGl0IGluIHN3aXRjaCBjYXNlIjsKLQot
I2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmICAvLyBfTVNDX1ZF
UgotfQotCi0vLyBUZXN0cyB0aGF0IGEgdGVzdCBjYXNlIHdob3NlIG5hbWUgZW5kcyB3aXRoICJE
ZWF0aFRlc3QiIHdvcmtzIGZpbmUKLS8vIG9uIFdpbmRvd3MuCi1URVNUKE5vdEFEZWF0aFRlc3Qs
IFRlc3QpIHsKLSAgU1VDQ0VFRCgpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdC1maWxlcGF0aF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdC1maWxlcGF0aF90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2MjUwMjgyNzU4ZGZiM2M5M2Y0N2YwOTFjNTJhMmRiZjkyY2FjZWViLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3QtZmlsZXBhdGhfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDY5MCAr
MCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwot
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0v
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwot
Ly8gQXV0aG9yczoga2VpdGgucmF5QGdtYWlsLmNvbSAoS2VpdGggUmF5KQotLy8KLS8vIEdvb2ds
ZSBUZXN0IGZpbGVwYXRoIHV0aWxpdGllcwotLy8KLS8vIFRoaXMgZmlsZSB0ZXN0cyBjbGFzc2Vz
IGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5IGJ5Ci0vLyBHb29nbGUgVGVzdC4gIFRoZXkg
YXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotLy8KLS8vIFRoaXMgZmlsZSBp
cyAjaW5jbHVkZWQgZnJvbSBndGVzdF91bml0dGVzdC5jYywgdG8gYXZvaWQgY2hhbmdpbmcKLS8v
IGJ1aWxkIG9yIG1ha2UtZmlsZXMgZm9yIHNvbWUgZXhpc3RpbmcgR29vZ2xlIFRlc3QgY2xpZW50
cy4gRG8gbm90Ci0vLyAjaW5jbHVkZSB0aGlzIGZpbGUgYW55d2hlcmUgZWxzZSEKLQotI2luY2x1
ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQg
b2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3Jl
IGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBh
IGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJv
bSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMg
Y29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rl
c3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLSNpZiBH
VEVTVF9PU19XSU5ET1dTX01PQklMRQotI2luY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAot
I2VsaWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1ZGUgPGRpcmVjdC5oPiAgLy8gTk9MSU5UCi0j
ZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsK
LW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci1uYW1lc3BhY2UgewotCi0jaWYgR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKLS8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBNb3ZlIHRoZXNlIHRvIHRoZSBQT1NJ
WCBhZGFwdGVyIHNlY3Rpb24gaW4KLS8vIGd0ZXN0LXBvcnQuaC4KLQotLy8gV2luZG93cyBDRSBk
b2Vzbid0IGhhdmUgdGhlIHJlbW92ZSBDIGZ1bmN0aW9uLgotaW50IHJlbW92ZShjb25zdCBjaGFy
KiBwYXRoKSB7Ci0gIExQQ1dTVFIgd3BhdGggPSBTdHJpbmc6OkFuc2lUb1V0ZjE2KHBhdGgpOwot
ICBpbnQgcmV0ID0gRGVsZXRlRmlsZSh3cGF0aCkgPyAwIDogLTE7Ci0gIGRlbGV0ZSBbXSB3cGF0
aDsKLSAgcmV0dXJuIHJldDsKLX0KLS8vIFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlIHRoZSBfcm1k
aXIgQyBmdW5jdGlvbi4KLWludCBfcm1kaXIoY29uc3QgY2hhciogcGF0aCkgewotICBGaWxlUGF0
aCBmaWxlcGF0aChwYXRoKTsKLSAgTFBDV1NUUiB3cGF0aCA9IFN0cmluZzo6QW5zaVRvVXRmMTYo
Ci0gICAgICBmaWxlcGF0aC5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsK
LSAgaW50IHJldCA9IFJlbW92ZURpcmVjdG9yeSh3cGF0aCkgPyAwIDogLTE7Ci0gIGRlbGV0ZSBb
XSB3cGF0aDsKLSAgcmV0dXJuIHJldDsKLX0KLQotI2Vsc2UKLQotVEVTVChHZXRDdXJyZW50RGly
VGVzdCwgUmV0dXJuc0N1cnJlbnREaXIpIHsKLSAgY29uc3QgRmlsZVBhdGggb3JpZ2luYWxfZGly
ID0gRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKTsKLSAgRVhQRUNUX0ZBTFNFKG9yaWdpbmFsX2Rp
ci5Jc0VtcHR5KCkpOwotCi0gIHBvc2l4OjpDaERpcihHVEVTVF9QQVRIX1NFUF8pOwotICBjb25z
dCBGaWxlUGF0aCBjd2QgPSBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpOwotICBwb3NpeDo6Q2hE
aXIob3JpZ2luYWxfZGlyLmNfc3RyKCkpOwotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotICAvLyBT
a2lwcyB0aGUgIjoiLgotICBjb25zdCBjaGFyKiBjb25zdCBjd2Rfd2l0aG91dF9kcml2ZSA9IHN0
cmNocihjd2QuY19zdHIoKSwgJzonKTsKLSAgQVNTRVJUX1RSVUUoY3dkX3dpdGhvdXRfZHJpdmUg
IT0gTlVMTCk7Ci0gIEVYUEVDVF9TVFJFUShHVEVTVF9QQVRIX1NFUF8sIGN3ZF93aXRob3V0X2Ry
aXZlICsgMSk7Ci0jZWxzZQotICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLCBjd2QuY19z
dHIoKSk7Ci0jZW5kaWYKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQot
Ci1URVNUKElzRW1wdHlUZXN0LCBSZXR1cm5zVHJ1ZUZvckVtcHR5UGF0aCkgewotICBFWFBFQ1Rf
VFJVRShGaWxlUGF0aCgiIikuSXNFbXB0eSgpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoTlVM
TCkuSXNFbXB0eSgpKTsKLX0KLQotVEVTVChJc0VtcHR5VGVzdCwgUmV0dXJuc0ZhbHNlRm9yTm9u
RW1wdHlQYXRoKSB7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYSIpLklzRW1wdHkoKSk7Ci0g
IEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiLiIpLklzRW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShG
aWxlUGF0aCgiYS9iIikuSXNFbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJhXFxi
XFwiKS5Jc0VtcHR5KCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lICIiIC0+ICIiCi1U
RVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBXaGVuRW1wdHlOYW1lKSB7Ci0gIEVYUEVDVF9T
VFJFUSgiIiwgRmlsZVBhdGgoIiIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0cigpKTsKLX0K
LQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiYWZpbGUiIC0+ICJhZmlsZSIKLVRFU1QoUmVtb3Zl
RGlyZWN0b3J5TmFtZVRlc3QsIEJ1dE5vRGlyZWN0b3J5KSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWZp
bGUiLAotICAgICAgRmlsZVBhdGgoImFmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3Ry
KCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lICIvYWZpbGUiIC0+ICJhZmlsZSIKLVRF
U1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFJvb3RGaWxlU2hvdWxkR2l2ZUZpbGVOYW1lKSB7
Ci0gIEVYUEVDVF9TVFJFUSgiYWZpbGUiLAotICAgICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBf
ICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3Zl
RGlyZWN0b3J5TmFtZSAiYWRpci8iIC0+ICIiCi1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0
LCBXaGVyZVRoZXJlSXNOb0ZpbGVOYW1lKSB7Ci0gIEVYUEVDVF9TVFJFUSgiIiwKLSAgICAgIEZp
bGVQYXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8pLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0
cigpKTsKLX0KLQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiYWRpci9hZmlsZSIgLT4gImFmaWxl
IgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgU2hvdWxkR2l2ZUZpbGVOYW1lKSB7Ci0g
IEVYUEVDVF9TVFJFUSgiYWZpbGUiLAotICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhf
U0VQXyAiYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJl
bW92ZURpcmVjdG9yeU5hbWUgImFkaXIvc3ViZGlyL2FmaWxlIiAtPiAiYWZpbGUiCi1URVNUKFJl
bW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRBbHNvR2l2ZUZpbGVOYW1lKSB7Ci0gIEVYUEVD
VF9TVFJFUSgiYWZpbGUiLAotICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAi
c3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikKLSAgICAgIC5SZW1vdmVEaXJlY3RvcnlO
YW1lKCkuY19zdHIoKSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXwotCi0vLyBU
ZXN0cyB0aGF0IFJlbW92ZURpcmVjdG9yeU5hbWUoKSB3b3JrcyB3aXRoIHRoZSBhbHRlcm5hdGUg
c2VwYXJhdG9yCi0vLyBvbiBXaW5kb3dzLgotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCIvYWZp
bGUiKSAtPiAiYWZpbGUiCi1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBSb290RmlsZVNo
b3VsZEdpdmVGaWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEo
ImFmaWxlIiwKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1vdmVEaXJlY3Rv
cnlOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5hbWUoImFkaXIvIikg
LT4gIiIKLVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFdoZXJlVGhlcmVJc05vRmlsZU5h
bWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCIiLAotICAgICAgICAg
ICAgICAgRmlsZVBhdGgoImFkaXIvIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOwot
fQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCJhZGlyL2FmaWxlIikgLT4gImFmaWxlIgotVEVT
VChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgU2hvdWxkR2l2ZUZpbGVOYW1lRm9yQWx0ZXJuYXRl
U2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWZpbGUiLAotICAgICAgICAgICAgICAgRmls
ZVBhdGgoImFkaXIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIoKSk7Ci19Ci0K
LS8vIFJlbW92ZURpcmVjdG9yeU5hbWUoImFkaXIvc3ViZGlyL2FmaWxlIikgLT4gImFmaWxlIgot
VEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgU2hvdWxkQWxzb0dpdmVGaWxlTmFtZUZvckFs
dGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoImFmaWxlIiwKLSAgICAgICAgICAg
ICAgIEZpbGVQYXRoKCJhZGlyL3N1YmRpci9hZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5j
X3N0cigpKTsKLX0KLQotI2VuZGlmCi0KLS8vIFJlbW92ZUZpbGVOYW1lICIiIC0+ICIuLyIKLVRF
U1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBFbXB0eU5hbWUpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dT
X01PQklMRQotICAvLyBPbiBXaW5kb3dzIENFLCB3ZSB1c2UgdGhlIHJvb3QgYXMgdGhlIGN1cnJl
bnQgZGlyZWN0b3J5LgotICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLAotICAgICAgRmls
ZVBhdGgoIiIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci0jZWxzZQotICBFWFBFQ1RfU1RS
RVEoIi4iIEdURVNUX1BBVEhfU0VQXywKLSAgICAgIEZpbGVQYXRoKCIiKS5SZW1vdmVGaWxlTmFt
ZSgpLmNfc3RyKCkpOwotI2VuZGlmCi19Ci0KLS8vIFJlbW92ZUZpbGVOYW1lICJhZGlyLyIgLT4g
ImFkaXIvIgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEJ1dE5vRmlsZSkgewotICBFWFBFQ1Rf
U1RSRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXywKLSAgICAgIEZpbGVQYXRoKCJhZGlyIiBHVEVT
VF9QQVRIX1NFUF8pLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZUZp
bGVOYW1lICJhZGlyL2FmaWxlIiAtPiAiYWRpci8iCi1URVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwg
R2l2ZXNEaXJOYW1lKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAot
ICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKQotICAgICAgLlJl
bW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZUZpbGVOYW1lICJhZGlyL3N1
YmRpci9hZmlsZSIgLT4gImFkaXIvc3ViZGlyLyIKLVRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBH
aXZlc0RpckFuZFN1YkRpck5hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZGlyIiBHVEVTVF9QQVRI
X1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9TRVBfLAotICAgICAgRmlsZVBhdGgoImFkaXIiIEdU
RVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikKLSAgICAgIC5S
ZW1vdmVGaWxlTmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVGaWxlTmFtZSAiL2FmaWxl
IiAtPiAiLyIKLVRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc1Jvb3REaXIpIHsKLSAgRVhQ
RUNUX1NUUkVRKEdURVNUX1BBVEhfU0VQXywKLSAgICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQ
XyAiYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLmNfc3RyKCkpOwotfQotCi0jaWYgR1RFU1RfSEFT
X0FMVF9QQVRIX1NFUF8KLQotLy8gVGVzdHMgdGhhdCBSZW1vdmVGaWxlTmFtZSgpIHdvcmtzIHdp
dGggdGhlIGFsdGVybmF0ZSBzZXBhcmF0b3Igb24KLS8vIFdpbmRvd3MuCi0KLS8vIFJlbW92ZUZp
bGVOYW1lKCJhZGlyLyIpIC0+ICJhZGlyLyIKLVRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBCdXRO
b0ZpbGVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZGlyIiBHVEVT
VF9QQVRIX1NFUF8sCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci8iKS5SZW1vdmVGaWxl
TmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVGaWxlTmFtZSgiYWRpci9hZmlsZSIpIC0+
ICJhZGlyLyIKLVRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc0Rpck5hbWVGb3JBbHRlcm5h
dGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8sCi0g
ICAgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci9hZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuY19z
dHIoKSk7Ci19Ci0KLS8vIFJlbW92ZUZpbGVOYW1lKCJhZGlyL3N1YmRpci9hZmlsZSIpIC0+ICJh
ZGlyL3N1YmRpci8iCi1URVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNEaXJBbmRTdWJEaXJO
YW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWRpciIgR1RFU1Rf
UEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQ
YXRoKCJhZGlyL3N1YmRpci9hZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci19Ci0K
LS8vIFJlbW92ZUZpbGVOYW1lKCIvYWZpbGUiKSAtPiAiXCIKLVRFU1QoUmVtb3ZlRmlsZU5hbWVU
ZXN0LCBHaXZlc1Jvb3REaXJGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVR
KEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1v
dmVGaWxlTmFtZSgpLmNfc3RyKCkpOwotfQotCi0jZW5kaWYKLQotVEVTVChNYWtlRmlsZU5hbWVU
ZXN0LCBHZW5lcmF0ZVdoZW5OdW1iZXJJc1plcm8pIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmls
ZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiksIEZpbGVQYXRoKCJiYXIiKSwKLSAg
ICAgIDAsICJ4bWwiKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFy
LnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5l
cmF0ZUZpbGVOYW1lTnVtYmVyR3RaZXJvKSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRo
OjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoImZvbyIpLCBGaWxlUGF0aCgiYmFyIiksCi0gICAgICAx
MiwgInhtbCIpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXJfMTIu
eG1sIiwgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVy
YXRlRmlsZU5hbWVXaXRoU2xhc2hOdW1iZXJJc1plcm8pIHsKLSAgRmlsZVBhdGggYWN0dWFsID0g
RmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAot
ICAgICAgRmlsZVBhdGgoImJhciIpLCAwLCAieG1sIik7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBH
VEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1QoTWFr
ZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVGaWxlTmFtZVdpdGhTbGFzaE51bWJlckd0WmVybykgewot
ICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCJmb28i
IEdURVNUX1BBVEhfU0VQXyksCi0gICAgICBGaWxlUGF0aCgiYmFyIiksIDEyLCAieG1sIik7Ci0g
IEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhcl8xMi54bWwiLCBhY3R1YWwu
Y19zdHIoKSk7Ci19Ci0KLVRFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVy
SXNaZXJvQW5kRGlySXNFbXB0eSkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFr
ZUZpbGVOYW1lKEZpbGVQYXRoKCIiKSwgRmlsZVBhdGgoImJhciIpLAotICAgICAgMCwgInhtbCIp
OwotICBFWFBFQ1RfU1RSRVEoImJhci54bWwiLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1Qo
TWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVySXNOb3RaZXJvQW5kRGlySXNFbXB0
eSkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRo
KCIiKSwgRmlsZVBhdGgoImJhciIpLAotICAgICAgMTQsICJ4bWwiKTsKLSAgRVhQRUNUX1NUUkVR
KCJiYXJfMTQueG1sIiwgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNUKENvbmNhdFBhdGhzVGVz
dCwgV29ya3NXaGVuRGlyRG9lc05vdEVuZFdpdGhQYXRoU2VwKSB7Ci0gIEZpbGVQYXRoIGFjdHVh
bCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiYmFyLnhtbCIpKTsKLSAgRVhQ
RUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVhbC5jX3N0cigp
KTsKLX0KLQotVEVTVChDb25jYXRQYXRoc1Rlc3QsIFdvcmtzV2hlblBhdGgxRW5kc1dpdGhQYXRo
U2VwKSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0
aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRmlsZVBhdGgoImJhci54bWwiKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBH
VEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1QoQ29u
Y2F0UGF0aHNUZXN0LCBQYXRoMUJlaW5nRW1wdHkpIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmls
ZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJiYXIueG1sIikpOwotICBFWFBFQ1RfU1RSRVEo
ImJhci54bWwiLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBQ
YXRoMkJlaW5nRW1wdHkpIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBh
dGhzKEZpbGVQYXRoKCJmb28iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZpbGVQYXRoKCIiKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8sIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChDb25jYXRQYXRoc1Rlc3QsIEJvdGhQYXRo
QmVpbmdFbXB0eSkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMo
RmlsZVBhdGgoIiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RmlsZVBhdGgoIiIpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0K
LVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMUNvbnRhaW5zUGF0aFNlcCkgewotICBGaWxlUGF0
aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFU
SF9TRVBfICJiYXIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZpbGVQYXRoKCJmb29iYXIueG1sIikpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFU
SF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXyAiZm9vYmFyLnhtbCIsCi0gICAgICAgICAgICAg
ICBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMkNvbnRh
aW5zUGF0aFNlcCkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMo
Ci0gICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAotICAgICAgRmlsZVBhdGgo
ImJhciIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIikpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIg
R1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsCi0gICAgICAg
ICAgICAgICBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRo
MkVuZHNXaXRoUGF0aFNlcCkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0
UGF0aHMoRmlsZVBhdGgoImZvbyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRmlsZVBhdGgoImJhciIgR1RFU1RfUEFUSF9TRVBfKSk7Ci0gIEVYUEVDVF9TVFJF
USgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBfLCBhY3R1YWwuY19z
dHIoKSk7Ci19Ci0KLS8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiIiAtPiAiIgotVEVT
VChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBFbXB0eVN0cmluZykgewotICBFWFBF
Q1RfU1RSRVEoIiIsCi0gICAgICBGaWxlUGF0aCgiIikuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJh
dG9yKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiZm9v
IiAtPiAiZm9vIgotVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBGaWxlTm9T
bGFzaFN0cmluZykgewotICBFWFBFQ1RfU1RSRVEoImZvbyIsCi0gICAgICBGaWxlUGF0aCgiZm9v
IikuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92
ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiZm9vLyIgLT4gImZvbyIKLVRFU1QoUmVtb3ZlVHJhaWxp
bmdQYXRoU2VwYXJhdG9yVGVzdCwgU2hvdWxkUmVtb3ZlVHJhaWxpbmdTZXBhcmF0b3IpIHsKLSAg
RVhQRUNUX1NUUkVRKAotICAgICAgImZvbyIsCi0gICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8pLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLmNfc3RyKCkpOwotI2lmIEdU
RVNUX0hBU19BTFRfUEFUSF9TRVBfCi0gIEVYUEVDVF9TVFJFUSgiZm9vIiwKLSAgICAgICAgICAg
ICAgIEZpbGVQYXRoKCJmb28vIikuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuY19zdHIo
KSk7Ci0jZW5kaWYKLX0KLQotLy8gUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28vYmFy
LyIgLT4gImZvby9iYXIvIgotVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBT
aG91bGRSZW1vdmVMYXN0U2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8gImJhciIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRI
X1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBfKQotICAgICAgICAgICAgICAgLlJlbW92ZVRyYWls
aW5nUGF0aFNlcGFyYXRvcigpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVUcmFpbGluZ1BhdGhT
ZXBhcmF0b3IgImZvby9iYXIiIC0+ICJmb28vYmFyIgotVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhT
ZXBhcmF0b3JUZXN0LCBTaG91bGRSZXR1cm5Vbm1vZGlmaWVkKSB7Ci0gIEVYUEVDVF9TVFJFUSgi
Zm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8gImJhciIpCi0gICAgICAgICAgICAgICAuUmVtb3ZlVHJhaWxpbmdQ
YXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7Ci19Ci0KLVRFU1QoRGlyZWN0b3J5VGVzdCwgUm9vdERp
cmVjdG9yeUV4aXN0cykgewotI2lmIEdURVNUX09TX1dJTkRPV1MgIC8vIFdlIGFyZSBvbiBXaW5k
b3dzLgotICBjaGFyIGN1cnJlbnRfZHJpdmVbX01BWF9QQVRIXTsgIC8vIE5PTElOVAotICBjdXJy
ZW50X2RyaXZlWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oX2dldGRyaXZlKCkgKyAnQScgLSAxKTsK
LSAgY3VycmVudF9kcml2ZVsxXSA9ICc6JzsKLSAgY3VycmVudF9kcml2ZVsyXSA9ICdcXCc7Ci0g
IGN1cnJlbnRfZHJpdmVbM10gPSAnXDAnOwotICBFWFBFQ1RfVFJVRShGaWxlUGF0aChjdXJyZW50
X2RyaXZlKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0jZWxzZQotICBFWFBFQ1RfVFJVRShGaWxlUGF0
aCgiLyIpLkRpcmVjdG9yeUV4aXN0cygpKTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwot
fQotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotVEVTVChEaXJlY3RvcnlUZXN0LCBSb290T2ZXcm9u
Z0RyaXZlRG9lc05vdEV4aXN0cykgewotICBjb25zdCBpbnQgc2F2ZWRfZHJpdmVfID0gX2dldGRy
aXZlKCk7Ci0gIC8vIEZpbmQgYSBkcml2ZSB0aGF0IGRvZXNuJ3QgZXhpc3QuIFN0YXJ0IHdpdGgg
J1onIHRvIGF2b2lkIGNvbW1vbiBvbmVzLgotICBmb3IgKGNoYXIgZHJpdmUgPSAnWic7IGRyaXZl
ID49ICdBJzsgZHJpdmUtLSkKLSAgICBpZiAoX2NoZHJpdmUoZHJpdmUgLSAnQScgKyAxKSA9PSAt
MSkgewotICAgICAgY2hhciBub25fZHJpdmVbX01BWF9QQVRIXTsgIC8vIE5PTElOVAotICAgICAg
bm9uX2RyaXZlWzBdID0gZHJpdmU7Ci0gICAgICBub25fZHJpdmVbMV0gPSAnOic7Ci0gICAgICBu
b25fZHJpdmVbMl0gPSAnXFwnOwotICAgICAgbm9uX2RyaXZlWzNdID0gJ1wwJzsKLSAgICAgIEVY
UEVDVF9GQUxTRShGaWxlUGF0aChub25fZHJpdmUpLkRpcmVjdG9yeUV4aXN0cygpKTsKLSAgICAg
IGJyZWFrOwotICAgIH0KLSAgX2NoZHJpdmUoc2F2ZWRfZHJpdmVfKTsKLX0KLSNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUwotCi0jaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0vLyBXaW5k
b3dzIENFIF9kb2VzXyBjb25zaWRlciBhbiBlbXB0eSBkaXJlY3RvcnkgdG8gZXhpc3QuCi1URVNU
KERpcmVjdG9yeVRlc3QsIEVtcHR5UGF0aERpcmVjdG9yeURvZXNOb3RFeGlzdCkgewotICBFWFBF
Q1RfRkFMU0UoRmlsZVBhdGgoIiIpLkRpcmVjdG9yeUV4aXN0cygpKTsKLX0KLSNlbmRpZiAgLy8g
IUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLVRFU1QoRGlyZWN0b3J5VGVzdCwgQ3VycmVudERp
cmVjdG9yeUV4aXN0cykgewotI2lmIEdURVNUX09TX1dJTkRPV1MgIC8vIFdlIGFyZSBvbiBXaW5k
b3dzLgotI2lmbmRlZiBfV0lOMzJfQ0UgIC8vIFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlIGEgY3Vy
cmVudCBkaXJlY3RvcnkuCi0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIuIikuRGlyZWN0b3J5RXhp
c3RzKCkpOwotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiLlxcIikuRGlyZWN0b3J5RXhpc3RzKCkp
OwotI2VuZGlmICAvLyBfV0lOMzJfQ0UKLSNlbHNlCi0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIu
IikuRGlyZWN0b3J5RXhpc3RzKCkpOwotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiLi8iKS5EaXJl
Y3RvcnlFeGlzdHMoKSk7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLX0KLQotVEVTVChO
b3JtYWxpemVUZXN0LCBOdWxsU3RyaW5nc0VxdWFsRW1wdHlEaXJlY3RvcnkpIHsKLSAgRVhQRUNU
X1NUUkVRKCIiLCBGaWxlUGF0aChOVUxMKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCBG
aWxlUGF0aChTdHJpbmcoTlVMTCkpLmNfc3RyKCkpOwotfQotCi0vLyAiZm9vL2JhciIgPT0gZm9v
Ly9iYXIiID09ICJmb28vLy9iYXIiCi1URVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRpcGxlQ29uc2Vj
dXRpdmVTZXBhcGFyYXRvcnNJbk1pZHN0cmluZykgewotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RF
U1RfUEFUSF9TRVBfICJiYXIiLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1Rf
UEFUSF9TRVBfICJiYXIiKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BB
VEhfU0VQXyAiYmFyIiwKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhf
U0VQXyBHVEVTVF9QQVRIX1NFUF8gImJhciIpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoImZv
byIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIg
R1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXwotICAgICAgICAgICAgICAgICAgICAgICAg
R1RFU1RfUEFUSF9TRVBfICJiYXIiKS5jX3N0cigpKTsKLX0KLQotLy8gIi9iYXIiID09IC8vYmFy
IiA9PSAiLy8vYmFyIgotVEVTVChOb3JtYWxpemVUZXN0LCBNdWx0aXBsZUNvbnNlY3V0aXZlU2Vw
YXBhcmF0b3JzQXRTdHJpbmdTdGFydCkgewotICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBf
ICJiYXIiLAotICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiYmFyIikuY19zdHIoKSk7Ci0g
IEVYUEVDVF9TVFJFUShHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAgRmlsZVBhdGgoR1RFU1Rf
UEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJF
UShHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfIEdU
RVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gImJhciIpLmNfc3RyKCkpOwotfQotCi0vLyAi
Zm9vLyIgPT0gZm9vLy8iID09ICJmb28vLy8iCi1URVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRpcGxl
Q29uc2VjdXRpdmVTZXBhcGFyYXRvcnNBdFN0cmluZ0VuZCkgewotICBFWFBFQ1RfU1RSRVEoImZv
byIgR1RFU1RfUEFUSF9TRVBfLAotICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyku
Y19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgRmls
ZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXykuY19zdHIoKSk7Ci0g
IEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgRmlsZVBhdGgoImZvbyIg
R1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8pLmNfc3RyKCkp
OwotfQotCi0jaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KLQotLy8gVGVzdHMgdGhhdCBzZXBh
cmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBhcmUgbm9ybWFsaXplZAotLy8gcmVnYXJk
bGVzcyBvZiB0aGVpciBjb21iaW5hdGlvbiAoZS5nLiAiZm9vXCIgPT0iZm9vL1wiID09Ci0vLyAi
Zm9vXFwvIikuCi1URVNUKE5vcm1hbGl6ZVRlc3QsIE1peEFsdGVybmF0ZVNlcGFyYXRvckF0U3Ry
aW5nRW5kKSB7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICAg
ICAgICAgICBGaWxlUGF0aCgiZm9vLyIpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIg
R1RFU1RfUEFUSF9TRVBfLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFU
SF9TRVBfICIvIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8sCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9vLy8iIEdURVNUX1BBVEhfU0VQXykuY19z
dHIoKSk7Ci19Ci0KLSNlbmRpZgotCi1URVNUKEFzc2lnbm1lbnRPcGVyYXRvclRlc3QsIERlZmF1
bHRBc3NpZ25lZFRvTm9uRGVmYXVsdCkgewotICBGaWxlUGF0aCBkZWZhdWx0X3BhdGg7Ci0gIEZp
bGVQYXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgiKTsKLSAgbm9uX2RlZmF1bHRfcGF0aCA9IGRl
ZmF1bHRfcGF0aDsKLSAgRVhQRUNUX1NUUkVRKCIiLCBub25fZGVmYXVsdF9wYXRoLmNfc3RyKCkp
OwotICBFWFBFQ1RfU1RSRVEoIiIsIGRlZmF1bHRfcGF0aC5jX3N0cigpKTsgIC8vIFJIUyB2YXIg
aXMgdW5jaGFuZ2VkLgotfQotCi1URVNUKEFzc2lnbm1lbnRPcGVyYXRvclRlc3QsIE5vbkRlZmF1
bHRBc3NpZ25lZFRvRGVmYXVsdCkgewotICBGaWxlUGF0aCBub25fZGVmYXVsdF9wYXRoKCJwYXRo
Iik7Ci0gIEZpbGVQYXRoIGRlZmF1bHRfcGF0aDsKLSAgZGVmYXVsdF9wYXRoID0gbm9uX2RlZmF1
bHRfcGF0aDsKLSAgRVhQRUNUX1NUUkVRKCJwYXRoIiwgZGVmYXVsdF9wYXRoLmNfc3RyKCkpOwot
ICBFWFBFQ1RfU1RSRVEoInBhdGgiLCBub25fZGVmYXVsdF9wYXRoLmNfc3RyKCkpOyAgLy8gUkhT
IHZhciBpcyB1bmNoYW5nZWQuCi19Ci0KLVRFU1QoQXNzaWdubWVudE9wZXJhdG9yVGVzdCwgQ29u
c3RBc3NpZ25lZFRvTm9uQ29uc3QpIHsKLSAgY29uc3QgRmlsZVBhdGggY29uc3RfZGVmYXVsdF9w
YXRoKCJjb25zdF9wYXRoIik7Ci0gIEZpbGVQYXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgiKTsK
LSAgbm9uX2RlZmF1bHRfcGF0aCA9IGNvbnN0X2RlZmF1bHRfcGF0aDsKLSAgRVhQRUNUX1NUUkVR
KCJjb25zdF9wYXRoIiwgbm9uX2RlZmF1bHRfcGF0aC5jX3N0cigpKTsKLX0KLQotY2xhc3MgRGly
ZWN0b3J5Q3JlYXRpb25UZXN0IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVh
bCB2b2lkIFNldFVwKCkgewotICAgIHRlc3RkYXRhX3BhdGhfLlNldChGaWxlUGF0aChTdHJpbmc6
OkZvcm1hdCgiJXMlcyVzIiwKLSAgICAgICAgVGVtcERpcigpLmNfc3RyKCksIEdldEN1cnJlbnRF
eGVjdXRhYmxlTmFtZSgpLmNfc3RyKCksCi0gICAgICAgICJfZGlyZWN0b3J5X2NyZWF0aW9uIiBH
VEVTVF9QQVRIX1NFUF8gInRlc3QiIEdURVNUX1BBVEhfU0VQXykpKTsKLSAgICB0ZXN0ZGF0YV9m
aWxlXy5TZXQodGVzdGRhdGFfcGF0aF8uUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkpOwot
Ci0gICAgdW5pcXVlX2ZpbGUwXy5TZXQoRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZSh0ZXN0ZGF0YV9w
YXRoXywgRmlsZVBhdGgoInVuaXF1ZSIpLAotICAgICAgICAwLCAidHh0IikpOwotICAgIHVuaXF1
ZV9maWxlMV8uU2V0KEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUodGVzdGRhdGFfcGF0aF8sIEZpbGVQ
YXRoKCJ1bmlxdWUiKSwKLSAgICAgICAgMSwgInR4dCIpKTsKLQotICAgIHJlbW92ZSh0ZXN0ZGF0
YV9maWxlXy5jX3N0cigpKTsKLSAgICByZW1vdmUodW5pcXVlX2ZpbGUwXy5jX3N0cigpKTsKLSAg
ICByZW1vdmUodW5pcXVlX2ZpbGUxXy5jX3N0cigpKTsKLSAgICBwb3NpeDo6Um1EaXIodGVzdGRh
dGFfcGF0aF8uY19zdHIoKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0g
ICAgcmVtb3ZlKHRlc3RkYXRhX2ZpbGVfLmNfc3RyKCkpOwotICAgIHJlbW92ZSh1bmlxdWVfZmls
ZTBfLmNfc3RyKCkpOwotICAgIHJlbW92ZSh1bmlxdWVfZmlsZTFfLmNfc3RyKCkpOwotICAgIHBv
c2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKLSAgfQotCi0gIFN0cmluZyBUZW1w
RGlyKCkgY29uc3QgewotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0gICAgcmV0dXJuIFN0
cmluZygiXFx0ZW1wXFwiKTsKLSNlbGlmIEdURVNUX09TX1dJTkRPV1MKLSAgICBjb25zdCBjaGFy
KiB0ZW1wX2RpciA9IHBvc2l4OjpHZXRFbnYoIlRFTVAiKTsKLSAgICBpZiAodGVtcF9kaXIgPT0g
TlVMTCB8fCB0ZW1wX2RpclswXSA9PSAnXDAnKQotICAgICAgcmV0dXJuIFN0cmluZygiXFx0ZW1w
XFwiKTsKLSAgICBlbHNlIGlmIChTdHJpbmcodGVtcF9kaXIpLkVuZHNXaXRoKCJcXCIpKQotICAg
ICAgcmV0dXJuIFN0cmluZyh0ZW1wX2Rpcik7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIFN0cmlu
Zzo6Rm9ybWF0KCIlc1xcIiwgdGVtcF9kaXIpOwotI2Vsc2UKLSAgICByZXR1cm4gU3RyaW5nKCIv
dG1wLyIpOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotICB9Ci0KLSAgdm9p
ZCBDcmVhdGVUZXh0RmlsZShjb25zdCBjaGFyKiBmaWxlbmFtZSkgewotICAgIEZJTEUqIGYgPSBw
b3NpeDo6Rk9wZW4oZmlsZW5hbWUsICJ3Iik7Ci0gICAgZnByaW50ZihmLCAidGV4dFxuIik7Ci0g
ICAgZmNsb3NlKGYpOwotICB9Ci0KLSAgLy8gU3RyaW5ncyByZXByZXNlbnRpbmcgYSBkaXJlY3Rv
cnkgYW5kIGEgZmlsZSwgd2l0aCBpZGVudGljYWwgcGF0aHMKLSAgLy8gZXhjZXB0IGZvciB0aGUg
dHJhaWxpbmcgc2VwYXJhdG9yIGNoYXJhY3RlciB0aGF0IGRpc3RpbnF1aXNoZXMKLSAgLy8gYSBk
aXJlY3RvcnkgbmFtZWQgJ3Rlc3QnIGZyb20gYSBmaWxlIG5hbWVkICd0ZXN0Jy4gRXhhbXBsZSBu
YW1lczoKLSAgRmlsZVBhdGggdGVzdGRhdGFfcGF0aF87ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3Jl
YXRpb24vdGVzdC8iCi0gIEZpbGVQYXRoIHRlc3RkYXRhX2ZpbGVfOyAgLy8gIi90bXAvZGlyZWN0
b3J5X2NyZWF0aW9uL3Rlc3QiCi0gIEZpbGVQYXRoIHVuaXF1ZV9maWxlMF87ICAvLyAiL3RtcC9k
aXJlY3RvcnlfY3JlYXRpb24vdGVzdC91bmlxdWUudHh0IgotICBGaWxlUGF0aCB1bmlxdWVfZmls
ZTFfOyAgLy8gIi90bXAvZGlyZWN0b3J5X2NyZWF0aW9uL3Rlc3QvdW5pcXVlXzEudHh0IgotfTsK
LQotVEVTVF9GKERpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNp
dmVseSkgewotICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfcGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkp
IDw8IHRlc3RkYXRhX3BhdGhfLmNfc3RyKCk7Ci0gIEVYUEVDVF9UUlVFKHRlc3RkYXRhX3BhdGhf
LkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3RkYXRh
X3BhdGhfLkRpcmVjdG9yeUV4aXN0cygpKTsKLX0KLQotVEVTVF9GKERpcmVjdG9yeUNyZWF0aW9u
VGVzdCwgQ3JlYXRlRGlyZWN0b3JpZXNGb3JBbHJlYWR5RXhpc3RpbmdQYXRoKSB7Ci0gIEVYUEVD
VF9GQUxTRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlzdHMoKSkgPDwgdGVzdGRhdGFfcGF0
aF8uY19zdHIoKTsKLSAgRVhQRUNUX1RSVUUodGVzdGRhdGFfcGF0aF8uQ3JlYXRlRGlyZWN0b3Jp
ZXNSZWN1cnNpdmVseSgpKTsKLSAgLy8gQ2FsbCAnY3JlYXRlJyBhZ2Fpbi4uLiBzaG91bGQgc3Rp
bGwgc3VjY2VlZC4KLSAgRVhQRUNUX1RSVUUodGVzdGRhdGFfcGF0aF8uQ3JlYXRlRGlyZWN0b3Jp
ZXNSZWN1cnNpdmVseSgpKTsKLX0KLQotVEVTVF9GKERpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3Jl
YXRlRGlyZWN0b3JpZXNBbmRVbmlxdWVGaWxlbmFtZSkgewotICBGaWxlUGF0aCBmaWxlX3BhdGgo
RmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5hbWUodGVzdGRhdGFfcGF0aF8sCi0gICAgICBG
aWxlUGF0aCgidW5pcXVlIiksICJ0eHQiKSk7Ci0gIEVYUEVDVF9TVFJFUSh1bmlxdWVfZmlsZTBf
LmNfc3RyKCksIGZpbGVfcGF0aC5jX3N0cigpKTsKLSAgRVhQRUNUX0ZBTFNFKGZpbGVfcGF0aC5G
aWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAvLyBmaWxlIG5vdCB0aGVyZQotCi0gIHRlc3RkYXRh
X3BhdGhfLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKTsKLSAgRVhQRUNUX0ZBTFNFKGZp
bGVfcGF0aC5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAvLyBmaWxlIHN0aWxsIG5vdCB0aGVy
ZQotICBDcmVhdGVUZXh0RmlsZShmaWxlX3BhdGguY19zdHIoKSk7Ci0gIEVYUEVDVF9UUlVFKGZp
bGVfcGF0aC5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7Ci0KLSAgRmlsZVBhdGggZmlsZV9wYXRo
MihGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFtZSh0ZXN0ZGF0YV9wYXRoXywKLSAgICAg
IEZpbGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIpKTsKLSAgRVhQRUNUX1NUUkVRKHVuaXF1ZV9maWxl
MV8uY19zdHIoKSwgZmlsZV9wYXRoMi5jX3N0cigpKTsKLSAgRVhQRUNUX0ZBTFNFKGZpbGVfcGF0
aDIuRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8gZmlsZSBub3QgdGhlcmUKLSAgQ3JlYXRl
VGV4dEZpbGUoZmlsZV9wYXRoMi5jX3N0cigpKTsKLSAgRVhQRUNUX1RSVUUoZmlsZV9wYXRoMi5G
aWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7Ci19Ci0KLVRFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRl
c3QsIENyZWF0ZURpcmVjdG9yaWVzRmFpbCkgewotICAvLyBmb3JjZSBhIGZhaWx1cmUgYnkgcHV0
dGluZyBhIGZpbGUgd2hlcmUgd2Ugd2lsbCB0cnkgdG8gY3JlYXRlIGEgZGlyZWN0b3J5LgotICBD
cmVhdGVUZXh0RmlsZSh0ZXN0ZGF0YV9maWxlXy5jX3N0cigpKTsKLSAgRVhQRUNUX1RSVUUodGVz
dGRhdGFfZmlsZV8uRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOwotICBFWFBFQ1RfRkFMU0UodGVz
dGRhdGFfZmlsZV8uRGlyZWN0b3J5RXhpc3RzKCkpOwotICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFf
ZmlsZV8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKTsKLX0KLQotVEVTVChOb0RpcmVj
dG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlTm9EaXJlY3Rvcmllc0ZvckRlZmF1bHRYbWxGaWxlKSB7
Ci0gIGNvbnN0IEZpbGVQYXRoIHRlc3RfZGV0YWlsX3htbCgidGVzdF9kZXRhaWwueG1sIik7Ci0g
IEVYUEVDVF9GQUxTRSh0ZXN0X2RldGFpbF94bWwuQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVs
eSgpKTsKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvcikgewotICBG
aWxlUGF0aCBmcDsKLSAgRVhQRUNUX1NUUkVRKCIiLCBmcC5jX3N0cigpKTsKLX0KLQotVEVTVChG
aWxlUGF0aFRlc3QsIENoYXJBbmRDb3B5Q29uc3RydWN0b3JzKSB7Ci0gIGNvbnN0IEZpbGVQYXRo
IGZwKCJzcGljeSIpOwotICBFWFBFQ1RfU1RSRVEoInNwaWN5IiwgZnAuY19zdHIoKSk7Ci0KLSAg
Y29uc3QgRmlsZVBhdGggZnBfY29weShmcCk7Ci0gIEVYUEVDVF9TVFJFUSgic3BpY3kiLCBmcF9j
b3B5LmNfc3RyKCkpOwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgU3RyaW5nQ29uc3RydWN0b3Ip
IHsKLSAgY29uc3QgRmlsZVBhdGggZnAoU3RyaW5nKCJjaWRlciIpKTsKLSAgRVhQRUNUX1NUUkVR
KCJjaWRlciIsIGZwLmNfc3RyKCkpOwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgU2V0KSB7Ci0g
IGNvbnN0IEZpbGVQYXRoIGFwcGxlKCJhcHBsZSIpOwotICBGaWxlUGF0aCBtYWMoIm1hYyIpOwot
ICBtYWMuU2V0KGFwcGxlKTsgIC8vIEltcGxlbWVudCBTZXQoKSBzaW5jZSBvdmVybG9hZGluZyBv
cGVyYXRvcj0gaXMgZm9yYmlkZGVuLgotICBFWFBFQ1RfU1RSRVEoImFwcGxlIiwgbWFjLmNfc3Ry
KCkpOwotICBFWFBFQ1RfU1RSRVEoImFwcGxlIiwgYXBwbGUuY19zdHIoKSk7Ci19Ci0KLVRFU1Qo
RmlsZVBhdGhUZXN0LCBUb1N0cmluZykgewotICBjb25zdCBGaWxlUGF0aCBmaWxlKCJkcmluayIp
OwotICBTdHJpbmcgc3RyKGZpbGUuVG9TdHJpbmcoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZHJpbmsi
LCBzdHIuY19zdHIoKSk7Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0LCBSZW1vdmVFeHRlbnNpb24p
IHsKLSAgRVhQRUNUX1NUUkVRKCJhcHAiLCBGaWxlUGF0aCgiYXBwLmV4ZSIpLlJlbW92ZUV4dGVu
c2lvbigiZXhlIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiQVBQIiwgRmlsZVBhdGgoIkFQ
UC5FWEUiKS5SZW1vdmVFeHRlbnNpb24oImV4ZSIpLmNfc3RyKCkpOwotfQotCi1URVNUKEZpbGVQ
YXRoVGVzdCwgUmVtb3ZlRXh0ZW5zaW9uV2hlblRoZXJlSXNOb0V4dGVuc2lvbikgewotICBFWFBF
Q1RfU1RSRVEoImFwcCIsIEZpbGVQYXRoKCJhcHAiKS5SZW1vdmVFeHRlbnNpb24oImV4ZSIpLmNf
c3RyKCkpOwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgSXNEaXJlY3RvcnkpIHsKLSAgRVhQRUNU
X0ZBTFNFKEZpbGVQYXRoKCJjb2xhIikuSXNEaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9UUlVFKEZp
bGVQYXRoKCJrb2FsYSIgR1RFU1RfUEFUSF9TRVBfKS5Jc0RpcmVjdG9yeSgpKTsKLSNpZiBHVEVT
VF9IQVNfQUxUX1BBVEhfU0VQXwotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgia29hbGEvIikuSXNE
aXJlY3RvcnkoKSk7Ci0jZW5kaWYKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIElzQWJzb2x1dGVQ
YXRoKSB7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiaXMiIEdURVNUX1BBVEhfU0VQXyAicmVs
YXRpdmUiKS5Jc0Fic29sdXRlUGF0aCgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIiKS5J
c0Fic29sdXRlUGF0aCgpKTsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIEVYUEVDVF9UUlVFKEZp
bGVQYXRoKCJjOlxcIiBHVEVTVF9QQVRIX1NFUF8gImlzX25vdCIKLSAgICAgICAgICAgICAgICAg
ICAgICAgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIpLklzQWJzb2x1dGVQYXRoKCkpOwotICBF
WFBFQ1RfRkFMU0UoRmlsZVBhdGgoImM6Zm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIpLklzQWJz
b2x1dGVQYXRoKCkpOwotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiYzovIiBHVEVTVF9QQVRIX1NF
UF8gImlzX25vdCIKLSAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfUEFUSF9TRVBfICJyZWxh
dGl2ZSIpLklzQWJzb2x1dGVQYXRoKCkpOwotI2Vsc2UKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgo
R1RFU1RfUEFUSF9TRVBfICJpc19ub3QiIEdURVNUX1BBVEhfU0VQXyAicmVsYXRpdmUiKQotICAg
ICAgICAgICAgICAuSXNBYnNvbHV0ZVBhdGgoKSk7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRP
V1MKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIElzUm9vdERpcmVjdG9yeSkgewotI2lmIEdURVNU
X09TX1dJTkRPV1MKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImE6XFwiKS5Jc1Jvb3REaXJlY3Rv
cnkoKSk7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJaOi8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7
Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJlOi8vIikuSXNSb290RGlyZWN0b3J5KCkpOwotICBF
WFBFQ1RfRkFMU0UoRmlsZVBhdGgoIiIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX0ZB
TFNFKEZpbGVQYXRoKCJiOiIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZp
bGVQYXRoKCJiOmEiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0
aCgiODovIikuSXNSb290RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImN8
LyIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSNlbHNlCi0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIv
IikuSXNSb290RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiLy8iKS5Jc1Jv
b3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiIikuSXNSb290RGlyZWN0
b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIlxcIikuSXNSb290RGlyZWN0b3J5KCkp
OwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIi94IikuSXNSb290RGlyZWN0b3J5KCkpOwotI2Vu
ZGlmCi19Ci0KLX0gIC8vIG5hbWVzcGFjZQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi19ICAv
LyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdC1saW5rZWRfcHRyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZWFlODIyOTZjOTIxZjBhZmU0MmZjMjMzNTc0OTcwZWU3NzA5ZTViZC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDE1NCAr
MCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwMywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwot
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0v
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwot
Ly8gQXV0aG9yczogRGFuIEVnbm9yIChlZ25vckBnb29nbGUuY29tKQotLy8gUG9ydGVkIHRvIFdp
bmRvd3M6IFZhZGltIEJlcm1hbiAodmFkaW1iQGdvb2dsZS5jb20pCi0KLSNpbmNsdWRlIDxndGVz
dC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRyLmg+Ci0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1uYW1lc3BhY2UgewotCi11c2luZyB0ZXN0aW5nOjpN
ZXNzYWdlOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmxpbmtlZF9wdHI7Ci0KLWludCBudW07
Ci1NZXNzYWdlKiBoaXN0b3J5ID0gTlVMTDsKLQotLy8gQ2xhc3Mgd2hpY2ggdHJhY2tzIGFsbG9j
YXRpb24vZGVhbGxvY2F0aW9uCi1jbGFzcyBBIHsKLSBwdWJsaWM6Ci0gIEEoKTogbXludW0obnVt
KyspIHsgKmhpc3RvcnkgPDwgIkEiIDw8IG15bnVtIDw8ICIgY3RvclxuIjsgfQotICB2aXJ0dWFs
IH5BKCkgeyAqaGlzdG9yeSA8PCAiQSIgPDwgbXludW0gPDwgIiBkdG9yXG4iOyB9Ci0gIHZpcnR1
YWwgdm9pZCBVc2UoKSB7ICpoaXN0b3J5IDw8ICJBIiA8PCBteW51bSA8PCAiIHVzZVxuIjsgfQot
IHByb3RlY3RlZDoKLSAgaW50IG15bnVtOwotfTsKLQotLy8gU3ViY2xhc3MKLWNsYXNzIEIgOiBw
dWJsaWMgQSB7Ci0gcHVibGljOgotICBCKCkgeyAqaGlzdG9yeSA8PCAiQiIgPDwgbXludW0gPDwg
IiBjdG9yXG4iOyB9Ci0gIH5CKCkgeyAqaGlzdG9yeSA8PCAiQiIgPDwgbXludW0gPDwgIiBkdG9y
XG4iOyB9Ci0gIHZpcnR1YWwgdm9pZCBVc2UoKSB7ICpoaXN0b3J5IDw8ICJCIiA8PCBteW51bSA8
PCAiIHVzZVxuIjsgfQotfTsKLQotY2xhc3MgTGlua2VkUHRyVGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKLSBwdWJsaWM6Ci0gIExpbmtlZFB0clRlc3QoKSB7Ci0gICAgbnVtID0gMDsKLSAg
ICBoaXN0b3J5ID0gbmV3IE1lc3NhZ2U7Ci0gIH0KLQotICB2aXJ0dWFsIH5MaW5rZWRQdHJUZXN0
KCkgewotICAgIGRlbGV0ZSBoaXN0b3J5OwotICAgIGhpc3RvcnkgPSBOVUxMOwotICB9Ci19Owot
Ci1URVNUX0YoTGlua2VkUHRyVGVzdCwgR2VuZXJhbFRlc3QpIHsKLSAgewotICAgIGxpbmtlZF9w
dHI8QT4gYTAsIGExLCBhMjsKLSAgICBhMCA9IGEwOwotICAgIGExID0gYTI7Ci0gICAgQVNTRVJU
X0VRKGEwLmdldCgpLCBzdGF0aWNfY2FzdDxBKj4oTlVMTCkpOwotICAgIEFTU0VSVF9FUShhMS5n
ZXQoKSwgc3RhdGljX2Nhc3Q8QSo+KE5VTEwpKTsKLSAgICBBU1NFUlRfRVEoYTIuZ2V0KCksIHN0
YXRpY19jYXN0PEEqPihOVUxMKSk7Ci0gICAgQVNTRVJUX1RSVUUoYTAgPT0gTlVMTCk7Ci0gICAg
QVNTRVJUX1RSVUUoYTEgPT0gTlVMTCk7Ci0gICAgQVNTRVJUX1RSVUUoYTIgPT0gTlVMTCk7Ci0K
LSAgICB7Ci0gICAgICBsaW5rZWRfcHRyPEE+IGEzKG5ldyBBKTsKLSAgICAgIGEwID0gYTM7Ci0g
ICAgICBBU1NFUlRfVFJVRShhMCA9PSBhMyk7Ci0gICAgICBBU1NFUlRfVFJVRShhMCAhPSBOVUxM
KTsKLSAgICAgIEFTU0VSVF9UUlVFKGEwLmdldCgpID09IGEzKTsKLSAgICAgIEFTU0VSVF9UUlVF
KGEwID09IGEzLmdldCgpKTsKLSAgICAgIGxpbmtlZF9wdHI8QT4gYTQoYTApOwotICAgICAgYTEg
PSBhNDsKLSAgICAgIGxpbmtlZF9wdHI8QT4gYTUobmV3IEEpOwotICAgICAgQVNTRVJUX1RSVUUo
YTUuZ2V0KCkgIT0gYTMpOwotICAgICAgQVNTRVJUX1RSVUUoYTUgIT0gYTMuZ2V0KCkpOwotICAg
ICAgYTIgPSBhNTsKLSAgICAgIGxpbmtlZF9wdHI8Qj4gYjAobmV3IEIpOwotICAgICAgbGlua2Vk
X3B0cjxBPiBhNihiMCk7Ci0gICAgICBBU1NFUlRfVFJVRShiMCA9PSBhNik7Ci0gICAgICBBU1NF
UlRfVFJVRShhNiA9PSBiMCk7Ci0gICAgICBBU1NFUlRfVFJVRShiMCAhPSBOVUxMKTsKLSAgICAg
IGE1ID0gYjA7Ci0gICAgICBhNSA9IGIwOwotICAgICAgYTMtPlVzZSgpOwotICAgICAgYTQtPlVz
ZSgpOwotICAgICAgYTUtPlVzZSgpOwotICAgICAgYTYtPlVzZSgpOwotICAgICAgYjAtPlVzZSgp
OwotICAgICAgKCpiMCkuVXNlKCk7Ci0gICAgICBiMC5nZXQoKS0+VXNlKCk7Ci0gICAgfQotCi0g
ICAgYTAtPlVzZSgpOwotICAgIGExLT5Vc2UoKTsKLSAgICBhMi0+VXNlKCk7Ci0KLSAgICBhMSA9
IGEyOwotICAgIGEyLnJlc2V0KG5ldyBBKTsKLSAgICBhMC5yZXNldCgpOwotCi0gICAgbGlua2Vk
X3B0cjxBPiBhNzsKLSAgfQotCi0gIEFTU0VSVF9TVFJFUSgKLSAgICAiQTAgY3RvclxuIgotICAg
ICJBMSBjdG9yXG4iCi0gICAgIkEyIGN0b3JcbiIKLSAgICAiQjIgY3RvclxuIgotICAgICJBMCB1
c2VcbiIKLSAgICAiQTAgdXNlXG4iCi0gICAgIkIyIHVzZVxuIgotICAgICJCMiB1c2VcbiIKLSAg
ICAiQjIgdXNlXG4iCi0gICAgIkIyIHVzZVxuIgotICAgICJCMiB1c2VcbiIKLSAgICAiQjIgZHRv
clxuIgotICAgICJBMiBkdG9yXG4iCi0gICAgIkEwIHVzZVxuIgotICAgICJBMCB1c2VcbiIKLSAg
ICAiQTEgdXNlXG4iCi0gICAgIkEzIGN0b3JcbiIKLSAgICAiQTAgZHRvclxuIgotICAgICJBMyBk
dG9yXG4iCi0gICAgIkExIGR0b3JcbiIsCi0gICAgaGlzdG9yeS0+R2V0U3RyaW5nKCkuY19zdHIo
KQotICApOwotfQotCi19ICAvLyBVbm5hbWVkIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saXN0ZW5lcl90ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saXN0ZW5lcl90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjOWJlMzlhODdlODhkODk2MDFiOWJjOTM3MmExNGVkYWFmNjEyOTQz
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYworKysgL2Rldi9udWxs
CkBAIC0xLDMxMyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0
OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8v
Ci0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCi0vLyBU
aGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCi0vLwotLy8gVGhp
cyBmaWxlIHZlcmlmaWVzIEdvb2dsZSBUZXN0IGV2ZW50IGxpc3RlbmVycyByZWNlaXZlIGV2ZW50
cyBhdCB0aGUKLS8vIHJpZ2h0IHRpbWVzLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNp
bmNsdWRlIDx2ZWN0b3I+Ci0KLXVzaW5nIDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25t
ZW50OwotdXNpbmcgOjp0ZXN0aW5nOjpFbnZpcm9ubWVudDsKLXVzaW5nIDo6dGVzdGluZzo6SW5p
dEdvb2dsZVRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OlRl
c3RDYXNlOwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcjsKLXVzaW5nIDo6dGVz
dGluZzo6VGVzdEluZm87Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OwotdXNpbmcg
Ojp0ZXN0aW5nOjpVbml0VGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZzsK
LQotLy8gVXNlZCBieSB0ZXN0cyB0byByZWdpc3RlciB0aGVpciBldmVudHMuCi1zdGQ6OnZlY3Rv
cjxTdHJpbmc+KiBnX2V2ZW50cyA9IE5VTEw7Ci0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVz
cGFjZSBpbnRlcm5hbCB7Ci0KLWNsYXNzIEV2ZW50UmVjb3JkaW5nTGlzdGVuZXIgOiBwdWJsaWMg
VGVzdEV2ZW50TGlzdGVuZXIgewotIHB1YmxpYzoKLSAgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lcihj
b25zdCBjaGFyKiBuYW1lKSA6IG5hbWVfKG5hbWUpIHt9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1
YWwgdm9pZCBPblRlc3RQcm9ncmFtU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8p
IHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RQcm9n
cmFtU3RhcnQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uU3RhcnQo
Y29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaXRlcmF0aW9uKSB7Ci0gICAgTWVzc2FnZSBtZXNzYWdlOwotICAgIG1l
c3NhZ2UgPDwgR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdEl0ZXJhdGlvblN0YXJ0IikKLSAgICAg
ICAgICAgIDw8ICIoIiA8PCBpdGVyYXRpb24gPDwgIikiOwotICAgIGdfZXZlbnRzLT5wdXNoX2Jh
Y2sobWVzc2FnZS5HZXRTdHJpbmcoKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9u
bWVudHNTZXRVcFN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7Ci0gICAgZ19l
dmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25FbnZpcm9ubWVudHNTZXRVcFN0
YXJ0IikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzU2V0VXBFbmQoY29u
c3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdl
dEZ1bGxNZXRob2ROYW1lKCJPbkVudmlyb25tZW50c1NldFVwRW5kIikpOwotICB9Ci0KLSAgdmly
dHVhbCB2b2lkIE9uVGVzdENhc2VTdGFydChjb25zdCBUZXN0Q2FzZSYgLyp0ZXN0X2Nhc2UqLykg
ewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdENhc2VT
dGFydCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RTdGFydChjb25zdCBUZXN0SW5m
byYgLyp0ZXN0X2luZm8qLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhv
ZE5hbWUoIk9uVGVzdFN0YXJ0IikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdFBhcnRS
ZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIC8qdGVzdF9wYXJ0X3Jlc3VsdCovKSB7Ci0gICAg
Z19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0UGFydFJlc3VsdCIp
KTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3QgVGVzdEluZm8mIC8qdGVz
dF9pbmZvKi8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJP
blRlc3RFbmQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0Q2FzZUVuZChjb25zdCBU
ZXN0Q2FzZSYgLyp0ZXN0X2Nhc2UqLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVs
bE1ldGhvZE5hbWUoIk9uVGVzdENhc2VFbmQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25F
bnZpcm9ubWVudHNUZWFyRG93blN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7
Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25FbnZpcm9ubWVu
dHNUZWFyRG93blN0YXJ0IikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRz
VGVhckRvd25FbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKLSAgICBnX2V2ZW50
cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPbkVudmlyb25tZW50c1RlYXJEb3duRW5k
IikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0
VGVzdCYgLyp1bml0X3Rlc3QqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgaXRlcmF0aW9uKSB7Ci0gICAgTWVzc2FnZSBtZXNzYWdlOwotICAgIG1lc3NhZ2UgPDwgR2V0
RnVsbE1ldGhvZE5hbWUoIk9uVGVzdEl0ZXJhdGlvbkVuZCIpCi0gICAgICAgICAgICA8PCAiKCIg
IDw8IGl0ZXJhdGlvbiA8PCAiKSI7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhtZXNzYWdlLkdl
dFN0cmluZygpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RQcm9ncmFtRW5kKGNvbnN0
IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRG
dWxsTWV0aG9kTmFtZSgiT25UZXN0UHJvZ3JhbUVuZCIpKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAg
U3RyaW5nIEdldEZ1bGxNZXRob2ROYW1lKGNvbnN0IGNoYXIqIG5hbWUpIHsKLSAgICBNZXNzYWdl
IG1lc3NhZ2U7Ci0gICAgbWVzc2FnZSA8PCBuYW1lXyA8PCAiLiIgPDwgbmFtZTsKLSAgICByZXR1
cm4gbWVzc2FnZS5HZXRTdHJpbmcoKTsKLSAgfQotCi0gIFN0cmluZyBuYW1lXzsKLX07Ci0KLWNs
YXNzIEVudmlyb25tZW50SW52b2NhdGlvbkNhdGNoZXIgOiBwdWJsaWMgRW52aXJvbm1lbnQgewot
IHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIGdfZXZlbnRzLT5wdXNo
X2JhY2soU3RyaW5nKCJFbnZpcm9ubWVudDo6U2V0VXAiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZv
aWQgVGVhckRvd24oKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkVudmlyb25t
ZW50OjpUZWFyRG93biIpKTsKLSAgfQotfTsKLQotY2xhc3MgTGlzdGVuZXJUZXN0IDogcHVibGlj
IFRlc3QgewotIHByb3RlY3RlZDoKLSAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKLSAg
ICBnX2V2ZW50cy0+cHVzaF9iYWNrKFN0cmluZygiTGlzdGVuZXJUZXN0OjpTZXRVcFRlc3RDYXNl
IikpOwotICB9Ci0KLSAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKLSAgICBnX2V2
ZW50cy0+cHVzaF9iYWNrKFN0cmluZygiTGlzdGVuZXJUZXN0OjpUZWFyRG93blRlc3RDYXNlIikp
OwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2Jh
Y2soU3RyaW5nKCJMaXN0ZW5lclRlc3Q6OlNldFVwIikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lk
IFRlYXJEb3duKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJMaXN0ZW5lclRl
c3Q6OlRlYXJEb3duIikpOwotICB9Ci19OwotCi1URVNUX0YoTGlzdGVuZXJUZXN0LCBEb2VzRm9v
KSB7Ci0gIC8vIFRlc3QgZXhlY3V0aW9uIG9yZGVyIHdpdGhpbiBhIHRlc3QgY2FzZSBpcyBub3Qg
Z3VhcmFudGVlZCBzbyB3ZSBhcmUgbm90Ci0gIC8vIHJlY29yZGluZyB0aGUgdGVzdCBuYW1lLgot
ICBnX2V2ZW50cy0+cHVzaF9iYWNrKFN0cmluZygiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIp
KTsKLSAgU1VDQ0VFRCgpOyAgLy8gVHJpZ2dlcnMgT25UZXN0UGFydFJlc3VsdC4KLX0KLQotVEVT
VF9GKExpc3RlbmVyVGVzdCwgRG9lc0JhcikgewotICBnX2V2ZW50cy0+cHVzaF9iYWNrKFN0cmlu
ZygiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIpKTsKLSAgU1VDQ0VFRCgpOyAgLy8gVHJpZ2dl
cnMgT25UZXN0UGFydFJlc3VsdC4KLX0KLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KLX0g
IC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OkVudmly
b25tZW50SW52b2NhdGlvbkNhdGNoZXI7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpFdmVu
dFJlY29yZGluZ0xpc3RlbmVyOwotCi12b2lkIFZlcmlmeVJlc3VsdHMoY29uc3Qgc3RkOjp2ZWN0
b3I8U3RyaW5nPiYgZGF0YSwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb25zdCog
ZXhwZWN0ZWRfZGF0YSwKLSAgICAgICAgICAgICAgICAgICBpbnQgZXhwZWN0ZWRfZGF0YV9zaXpl
KSB7Ci0gIGNvbnN0IGludCBhY3R1YWxfc2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAvLyBJZiB0aGUg
Zm9sbG93aW5nIGFzc2VydGlvbiBmYWlscywgYSBuZXcgZW50cnkgd2lsbCBiZSBhcHBlbmRlZCB0
bwotICAvLyBkYXRhLiAgSGVuY2Ugd2Ugc2F2ZSBkYXRhLnNpemUoKSBmaXJzdC4KLSAgRVhQRUNU
X0VRKGV4cGVjdGVkX2RhdGFfc2l6ZSwgYWN0dWFsX3NpemUpOwotCi0gIC8vIENvbXBhcmVzIHRo
ZSBjb21tb24gcHJlZml4LgotICBjb25zdCBpbnQgc2hvcnRlcl9zaXplID0gZXhwZWN0ZWRfZGF0
YV9zaXplIDw9IGFjdHVhbF9zaXplID8KLSAgICAgIGV4cGVjdGVkX2RhdGFfc2l6ZSA6IGFjdHVh
bF9zaXplOwotICBpbnQgaSA9IDA7Ci0gIGZvciAoOyBpIDwgc2hvcnRlcl9zaXplOyArK2kpIHsK
LSAgICBBU1NFUlRfU1RSRVEoZXhwZWN0ZWRfZGF0YVtpXSwgZGF0YVtpXS5jX3N0cigpKQotICAg
ICAgICA8PCAiYXQgcG9zaXRpb24gIiA8PCBpOwotICB9Ci0KLSAgLy8gUHJpbnRzIGV4dHJhIGVs
ZW1lbnRzIGluIHRoZSBhY3R1YWwgZGF0YS4KLSAgZm9yICg7IGkgPCBhY3R1YWxfc2l6ZTsgKytp
KSB7Ci0gICAgcHJpbnRmKCIgIEFjdHVhbCBldmVudCAjJWQ6ICVzXG4iLCBpLCBkYXRhW2ldLmNf
c3RyKCkpOwotICB9Ci19Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotICBz
dGQ6OnZlY3RvcjxTdHJpbmc+IGV2ZW50czsKLSAgZ19ldmVudHMgPSAmZXZlbnRzOwotICBJbml0
R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxp
c3RlbmVycygpLkFwcGVuZCgKLSAgICAgIG5ldyBFdmVudFJlY29yZGluZ0xpc3RlbmVyKCIxc3Qi
KSk7Ci0gIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKS5BcHBlbmQoCi0gICAg
ICBuZXcgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lcigiMm5kIikpOwotCi0gIEFkZEdsb2JhbFRlc3RF
bnZpcm9ubWVudChuZXcgRW52aXJvbm1lbnRJbnZvY2F0aW9uQ2F0Y2hlcik7Ci0KLSAgR1RFU1Rf
Q0hFQ0tfKGV2ZW50cy5zaXplKCkgPT0gMCkKLSAgICAgIDw8ICJBZGRHbG9iYWxUZXN0RW52aXJv
bm1lbnQgc2hvdWxkIG5vdCBnZW5lcmF0ZSBhbnkgZXZlbnRzIGl0c2VsZi4iOwotCi0gIDo6dGVz
dGluZzo6R1RFU1RfRkxBRyhyZXBlYXQpID0gMjsKLSAgaW50IHJldF92YWwgPSBSVU5fQUxMX1RF
U1RTKCk7Ci0KLSAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRfZXZlbnRzW10gPSB7Ci0gICAg
IjFzdC5PblRlc3RQcm9ncmFtU3RhcnQiLAotICAgICIybmQuT25UZXN0UHJvZ3JhbVN0YXJ0IiwK
LSAgICAiMXN0Lk9uVGVzdEl0ZXJhdGlvblN0YXJ0KDApIiwKLSAgICAiMm5kLk9uVGVzdEl0ZXJh
dGlvblN0YXJ0KDApIiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIsCi0gICAg
IjJuZC5PbkVudmlyb25tZW50c1NldFVwU3RhcnQiLAotICAgICJFbnZpcm9ubWVudDo6U2V0VXAi
LAotICAgICIybmQuT25FbnZpcm9ubWVudHNTZXRVcEVuZCIsCi0gICAgIjFzdC5PbkVudmlyb25t
ZW50c1NldFVwRW5kIiwKLSAgICAiMXN0Lk9uVGVzdENhc2VTdGFydCIsCi0gICAgIjJuZC5PblRl
c3RDYXNlU3RhcnQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwVGVzdENhc2UiLAotICAgICIx
c3QuT25UZXN0U3RhcnQiLAotICAgICIybmQuT25UZXN0U3RhcnQiLAotICAgICJMaXN0ZW5lclRl
c3Q6OlNldFVwIiwKLSAgICAiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCi0gICAgIjFzdC5P
blRlc3RQYXJ0UmVzdWx0IiwKLSAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAotICAgICJMaXN0
ZW5lclRlc3Q6OlRlYXJEb3duIiwKLSAgICAiMm5kLk9uVGVzdEVuZCIsCi0gICAgIjFzdC5PblRl
c3RFbmQiLAotICAgICIxc3QuT25UZXN0U3RhcnQiLAotICAgICIybmQuT25UZXN0U3RhcnQiLAot
ICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwKLSAgICAiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9k
eSIsCi0gICAgIjFzdC5PblRlc3RQYXJ0UmVzdWx0IiwKLSAgICAiMm5kLk9uVGVzdFBhcnRSZXN1
bHQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duIiwKLSAgICAiMm5kLk9uVGVzdEVuZCIs
Ci0gICAgIjFzdC5PblRlc3RFbmQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duVGVzdENh
c2UiLAotICAgICIybmQuT25UZXN0Q2FzZUVuZCIsCi0gICAgIjFzdC5PblRlc3RDYXNlRW5kIiwK
LSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydCIsCi0gICAgIjJuZC5PbkVudmly
b25tZW50c1RlYXJEb3duU3RhcnQiLAotICAgICJFbnZpcm9ubWVudDo6VGVhckRvd24iLAotICAg
ICIybmQuT25FbnZpcm9ubWVudHNUZWFyRG93bkVuZCIsCi0gICAgIjFzdC5PbkVudmlyb25tZW50
c1RlYXJEb3duRW5kIiwKLSAgICAiMm5kLk9uVGVzdEl0ZXJhdGlvbkVuZCgwKSIsCi0gICAgIjFz
dC5PblRlc3RJdGVyYXRpb25FbmQoMCkiLAotICAgICIxc3QuT25UZXN0SXRlcmF0aW9uU3RhcnQo
MSkiLAotICAgICIybmQuT25UZXN0SXRlcmF0aW9uU3RhcnQoMSkiLAotICAgICIxc3QuT25FbnZp
cm9ubWVudHNTZXRVcFN0YXJ0IiwKLSAgICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIs
Ci0gICAgIkVudmlyb25tZW50OjpTZXRVcCIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50c1NldFVw
RW5kIiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiLAotICAgICIxc3QuT25UZXN0
Q2FzZVN0YXJ0IiwKLSAgICAiMm5kLk9uVGVzdENhc2VTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVz
dDo6U2V0VXBUZXN0Q2FzZSIsCi0gICAgIjFzdC5PblRlc3RTdGFydCIsCi0gICAgIjJuZC5PblRl
c3RTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6U2V0VXAiLAotICAgICJMaXN0ZW5lclRlc3Q6
OiogVGVzdCBCb2R5IiwKLSAgICAiMXN0Lk9uVGVzdFBhcnRSZXN1bHQiLAotICAgICIybmQuT25U
ZXN0UGFydFJlc3VsdCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6VGVhckRvd24iLAotICAgICIybmQu
T25UZXN0RW5kIiwKLSAgICAiMXN0Lk9uVGVzdEVuZCIsCi0gICAgIjFzdC5PblRlc3RTdGFydCIs
Ci0gICAgIjJuZC5PblRlc3RTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6U2V0VXAiLAotICAg
ICJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5IiwKLSAgICAiMXN0Lk9uVGVzdFBhcnRSZXN1bHQi
LAotICAgICIybmQuT25UZXN0UGFydFJlc3VsdCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6VGVhckRv
d24iLAotICAgICIybmQuT25UZXN0RW5kIiwKLSAgICAiMXN0Lk9uVGVzdEVuZCIsCi0gICAgIkxp
c3RlbmVyVGVzdDo6VGVhckRvd25UZXN0Q2FzZSIsCi0gICAgIjJuZC5PblRlc3RDYXNlRW5kIiwK
LSAgICAiMXN0Lk9uVGVzdENhc2VFbmQiLAotICAgICIxc3QuT25FbnZpcm9ubWVudHNUZWFyRG93
blN0YXJ0IiwKLSAgICAiMm5kLk9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydCIsCi0gICAgIkVu
dmlyb25tZW50OjpUZWFyRG93biIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5k
IiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiLAotICAgICIybmQuT25UZXN0
SXRlcmF0aW9uRW5kKDEpIiwKLSAgICAiMXN0Lk9uVGVzdEl0ZXJhdGlvbkVuZCgxKSIsCi0gICAg
IjJuZC5PblRlc3RQcm9ncmFtRW5kIiwKLSAgICAiMXN0Lk9uVGVzdFByb2dyYW1FbmQiCi0gIH07
Ci0gIFZlcmlmeVJlc3VsdHMoZXZlbnRzLAotICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V2ZW50
cywKLSAgICAgICAgICAgICAgICBzaXplb2YoZXhwZWN0ZWRfZXZlbnRzKS9zaXplb2YoZXhwZWN0
ZWRfZXZlbnRzWzBdKSk7Ci0KLSAgLy8gV2UgbmVlZCB0byBjaGVjayBtYW51YWxseSBmb3IgYWQg
aG9jIHRlc3QgZmFpbHVyZXMgdGhhdCBoYXBwZW4gYWZ0ZXIKLSAgLy8gUlVOX0FMTF9URVNUUyBm
aW5pc2hlcy4KLSAgaWYgKFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5GYWlsZWQoKSkKLSAgICBy
ZXRfdmFsID0gMTsKLQotICByZXR1cm4gcmV0X3ZhbDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1tZXNzYWdlX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGU0MmIwMzQ0Nzg3MmUzZThmMDdhOWE0YWRkMmJlNWRkNDY5ODBiNTUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1tZXNzYWdlX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAt
MSwxNjcgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0
OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8v
Ci0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBU
ZXN0cyBmb3IgdGhlIE1lc3NhZ2UgY2xhc3MuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1tZXNz
YWdlLmg+Ci0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1uYW1lc3BhY2UgewotCi11c2lu
ZyA6OnRlc3Rpbmc6Ok1lc3NhZ2U7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJTdHJl
YW07Ci0KLS8vIEEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgdHVybnMgYSBNZXNzYWdlIGludG8gYSBD
IHN0cmluZy4KLWNvbnN0IGNoYXIqIFRvQ1N0cmluZyhjb25zdCBNZXNzYWdlJiBtc2cpIHsKLSAg
c3RhdGljIHRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmcgcmVzdWx0OwotICByZXN1bHQgPSBtc2cu
R2V0U3RyaW5nKCk7Ci0gIHJldHVybiByZXN1bHQuY19zdHIoKTsKLX0KLQotLy8gVGVzdHMgdGhl
IHRlc3Rpbmc6Ok1lc3NhZ2UgY2xhc3MKLQotLy8gVGVzdHMgdGhlIGRlZmF1bHQgY29uc3RydWN0
b3IuCi1URVNUKE1lc3NhZ2VUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3IpIHsKLSAgY29uc3QgTWVz
c2FnZSBtc2c7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgVG9DU3RyaW5nKG1zZykpOwotfQotCi0vLyBU
ZXN0cyB0aGUgY29weSBjb25zdHJ1Y3Rvci4KLVRFU1QoTWVzc2FnZVRlc3QsIENvcHlDb25zdHJ1
Y3RvcikgewotICBjb25zdCBNZXNzYWdlIG1zZzEoIkhlbGxvIik7Ci0gIGNvbnN0IE1lc3NhZ2Ug
bXNnMihtc2cxKTsKLSAgRVhQRUNUX1NUUkVRKCJIZWxsbyIsIFRvQ1N0cmluZyhtc2cyKSk7Ci19
Ci0KLS8vIFRlc3RzIGNvbnN0cnVjdGluZyBhIE1lc3NhZ2UgZnJvbSBhIEMtc3RyaW5nLgotVEVT
VChNZXNzYWdlVGVzdCwgQ29uc3RydWN0c0Zyb21DU3RyaW5nKSB7Ci0gIE1lc3NhZ2UgbXNnKCJI
ZWxsbyIpOwotICBFWFBFQ1RfU1RSRVEoIkhlbGxvIiwgVG9DU3RyaW5nKG1zZykpOwotfQotCi0v
LyBUZXN0cyBzdHJlYW1pbmcgYSBmbG9hdC4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNGbG9h
dCkgewotICBjb25zdCBjaGFyKiBjb25zdCBzID0gVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCAxLjIz
NDU2RiA8PCAiICIgPDwgMi4zNDU2N0YpOwotICAvLyBCb3RoIG51bWJlcnMgc2hvdWxkIGJlIHBy
aW50ZWQgd2l0aCBlbm91Z2ggcHJlY2lzaW9uLgotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rp
bmc6OklzU3Vic3RyaW5nLCAiMS4yMzQ1NjAiLCBzKTsKLSAgRVhQRUNUX1BSRURfRk9STUFUMih0
ZXN0aW5nOjpJc1N1YnN0cmluZywgIiAyLjM0NTY2OSIsIHMpOwotfQotCi0vLyBUZXN0cyBzdHJl
YW1pbmcgYSBkb3VibGUuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zRG91YmxlKSB7Ci0gIGNv
bnN0IGNoYXIqIGNvbnN0IHMgPSBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8IDEyNjA1NzA4ODAuNDU1
NTQ5NyA8PCAiICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAxMjYwNTcy
MjY1LjE5NTQ1MzQpOwotICAvLyBCb3RoIG51bWJlcnMgc2hvdWxkIGJlIHByaW50ZWQgd2l0aCBl
bm91Z2ggcHJlY2lzaW9uLgotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6OklzU3Vic3Ry
aW5nLCAiMTI2MDU3MDg4MC40NSIsIHMpOwotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6
OklzU3Vic3RyaW5nLCAiIDEyNjA1NzIyNjUuMTkiLCBzKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFt
aW5nIGEgbm9uLWNoYXIgcG9pbnRlci4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNQb2ludGVy
KSB7Ci0gIGludCBuID0gMDsKLSAgaW50KiBwID0gJm47Ci0gIEVYUEVDVF9TVFJORSgiKG51bGwp
IiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCBwKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBh
IE5VTEwgbm9uLWNoYXIgcG9pbnRlci4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNOdWxsUG9p
bnRlcikgewotICBpbnQqIHAgPSBOVUxMOwotICBFWFBFQ1RfU1RSRVEoIihudWxsKSIsIFRvQ1N0
cmluZyhNZXNzYWdlKCkgPDwgcCkpOwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcgYSBDIHN0cmlu
Zy4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNDU3RyaW5nKSB7Ci0gIEVYUEVDVF9TVFJFUSgi
Rm9vIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCAiRm9vIikpOwotfQotCi0vLyBUZXN0cyBzdHJl
YW1pbmcgYSBOVUxMIEMgc3RyaW5nLgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc051bGxDU3Ry
aW5nKSB7Ci0gIGNoYXIqIHAgPSBOVUxMOwotICBFWFBFQ1RfU1RSRVEoIihudWxsKSIsIFRvQ1N0
cmluZyhNZXNzYWdlKCkgPDwgcCkpOwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcgc3RkOjpzdHJp
bmcuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zU3RyaW5nKSB7Ci0gIGNvbnN0IDo6c3RkOjpz
dHJpbmcgc3RyKCJIZWxsbyIpOwotICBFWFBFQ1RfU1RSRVEoIkhlbGxvIiwgVG9DU3RyaW5nKE1l
c3NhZ2UoKSA8PCBzdHIpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB3ZSBjYW4gb3V0cHV0IHN0cmlu
Z3MgY29udGFpbmluZyBlbWJlZGRlZCBOVUxzLgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc1N0
cmluZ1dpdGhFbWJlZGRlZE5VTCkgewotICBjb25zdCBjaGFyIGNoYXJfYXJyYXlfd2l0aF9udWxb
XSA9Ci0gICAgICAiSGVyZSdzIGEgTlVMXDAgYW5kIHNvbWUgbW9yZSBzdHJpbmciOwotICBjb25z
dCA6OnN0ZDo6c3RyaW5nIHN0cmluZ193aXRoX251bChjaGFyX2FycmF5X3dpdGhfbnVsLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoY2hhcl9hcnJheV93aXRo
X251bCkgLSAxKTsKLSAgRVhQRUNUX1NUUkVRKCJIZXJlJ3MgYSBOVUxcXDAgYW5kIHNvbWUgbW9y
ZSBzdHJpbmciLAotICAgICAgICAgICAgICAgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCBzdHJpbmdf
d2l0aF9udWwpKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFtaW5nIGEgTlVMIGNoYXIuCi1URVNUKE1l
c3NhZ2VUZXN0LCBTdHJlYW1zTlVMQ2hhcikgewotICBFWFBFQ1RfU1RSRVEoIlxcMCIsIFRvQ1N0
cmluZyhNZXNzYWdlKCkgPDwgJ1wwJykpOwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcgaW50Lgot
VEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc0ludCkgewotICBFWFBFQ1RfU1RSRVEoIjEyMyIsIFRv
Q1N0cmluZyhNZXNzYWdlKCkgPDwgMTIzKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYmFzaWMgSU8g
bWFuaXB1bGF0b3JzIChlbmRsLCBlbmRzLCBhbmQgZmx1c2gpIGNhbiBiZQotLy8gc3RyZWFtZWQg
dG8gTWVzc2FnZS4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNCYXNpY0lvTWFuaXApIHsKLSAg
RVhQRUNUX1NUUkVRKCJMaW5lIDEuXG5BIE5VTCBjaGFyIFxcMCBpbiBsaW5lIDIuIiwKLSAgICAg
ICAgICAgICAgIFRvQ1N0cmluZyhNZXNzYWdlKCkgPDwgIkxpbmUgMS4iIDw8IHN0ZDo6ZW5kbAot
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJBIE5VTCBjaGFyICIgPDwgc3RkOjplbmRzIDw8
IHN0ZDo6Zmx1c2gKLSAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGluIGxpbmUgMi4iKSk7
Ci19Ci0KLS8vIFRlc3RzIE1lc3NhZ2U6OkdldFN0cmluZygpCi1URVNUKE1lc3NhZ2VUZXN0LCBH
ZXRTdHJpbmcpIHsKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCAxIDw8ICIgbGFtYiI7Ci0gIEVY
UEVDVF9TVFJFUSgiMSBsYW1iIiwgbXNnLkdldFN0cmluZygpLmNfc3RyKCkpOwotfQotCi0vLyBU
ZXN0cyBzdHJlYW1pbmcgYSBNZXNzYWdlIG9iamVjdCB0byBhbiBvc3RyZWFtLgotVEVTVChNZXNz
YWdlVGVzdCwgU3RyZWFtc1RvT1N0cmVhbSkgewotICBNZXNzYWdlIG1zZygiSGVsbG8iKTsKLSAg
U3RyU3RyZWFtIHNzOwotICBzcyA8PCBtc2c7Ci0gIEVYUEVDVF9TVFJFUSgiSGVsbG8iLCB0ZXN0
aW5nOjppbnRlcm5hbDo6U3RyU3RyZWFtVG9TdHJpbmcoJnNzKS5jX3N0cigpKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBhIE1lc3NhZ2Ugb2JqZWN0IGRvZXNuJ3QgdGFrZSB1cCB0b28gbXVjaCBzdGFj
ayBzcGFjZS4KLVRFU1QoTWVzc2FnZVRlc3QsIERvZXNOb3RUYWtlVXBNdWNoU3RhY2tTcGFjZSkg
ewotICBFWFBFQ1RfTEUoc2l6ZW9mKE1lc3NhZ2UpLCAxNlUpOwotfQotCi19ICAvLyBuYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Qtb3B0aW9u
c190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1vcHRpb25zX3Rl
c3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlMmNiYzkyZTVlMDI4Yzc0Yzgy
ZjA3NTBmZGQ4YmRmYjRlODgzMWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1vcHRpb25zX3Rl
c3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyMTIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgs
IEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0v
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcnM6IGtlaXRoLnJheUBnbWFp
bC5jb20gKEtlaXRoIFJheSkKLS8vCi0vLyBHb29nbGUgVGVzdCBVbml0VGVzdE9wdGlvbnMgdGVz
dHMKLS8vCi0vLyBUaGlzIGZpbGUgdGVzdHMgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIHVzZWQgaW50
ZXJuYWxseSBieQotLy8gR29vZ2xlIFRlc3QuICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3
aXRob3V0IG5vdGljZS4KLS8vCi0vLyBUaGlzIGZpbGUgaXMgI2luY2x1ZGVkIGZyb20gZ3Rlc3Qu
Y2MsIHRvIGF2b2lkIGNoYW5naW5nIGJ1aWxkIG9yCi0vLyBtYWtlLWZpbGVzIG9uIFdpbmRvd3Mg
YW5kIG90aGVyIHBsYXRmb3Jtcy4gRG8gbm90ICNpbmNsdWRlIHRoaXMgZmlsZQotLy8gYW55d2hl
cmUgZWxzZSEKLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLSNpZiBHVEVTVF9PU19XSU5E
T1dTX01PQklMRQotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbGlmIEdURVNUX09TX1dJTkRPV1MK
LSNpbmNsdWRlIDxkaXJlY3QuaD4KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
LQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29v
Z2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0
LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBp
bGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2Np
ZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4K
LSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50
ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLW5hbWVzcGFjZSB0
ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci1uYW1lc3BhY2UgewotCi0vLyBUdXJucyB0
aGUgZ2l2ZW4gcmVsYXRpdmUgcGF0aCBpbnRvIGFuIGFic29sdXRlIHBhdGguCi1GaWxlUGF0aCBH
ZXRBYnNvbHV0ZVBhdGhPZihjb25zdCBGaWxlUGF0aCYgcmVsYXRpdmVfcGF0aCkgewotICByZXR1
cm4gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCksIHJlbGF0
aXZlX3BhdGgpOwotfQotCi0vLyBUZXN0aW5nIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9y
bWF0L0dldE91dHB1dEZpbGUuCi0KLVRFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0Rm9ybWF0
RGVmYXVsdCkgewotICBHVEVTVF9GTEFHKG91dHB1dCkgPSAiIjsKLSAgRVhQRUNUX1NUUkVRKCIi
LCBVbml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdCgpLmNfc3RyKCkpOwotfQotCi1URVNU
KFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZvcm1hdCkgewotICBHVEVTVF9GTEFHKG91dHB1dCkg
PSAieG1sOmZpbGVuYW1lIjsKLSAgRVhQRUNUX1NUUkVRKCJ4bWwiLCBVbml0VGVzdE9wdGlvbnM6
OkdldE91dHB1dEZvcm1hdCgpLmNfc3RyKCkpOwotfQotCi1URVNUKFhtbE91dHB1dFRlc3QsIEdl
dE91dHB1dEZpbGVEZWZhdWx0KSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICIiOwotICBFWFBF
Q1RfU1RSRVEoR2V0QWJzb2x1dGVQYXRoT2YoRmlsZVBhdGgoInRlc3RfZGV0YWlsLnhtbCIpKS5j
X3N0cigpLAotICAgICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhU
b091dHB1dEZpbGUoKS5jX3N0cigpKTsKLX0KLQotVEVTVChYbWxPdXRwdXRUZXN0LCBHZXRPdXRw
dXRGaWxlU2luZ2xlRmlsZSkgewotICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOmZpbGVuYW1l
LmFiYyI7Ci0gIEVYUEVDVF9TVFJFUShHZXRBYnNvbHV0ZVBhdGhPZihGaWxlUGF0aCgiZmlsZW5h
bWUuYWJjIikpLmNfc3RyKCksCi0gICAgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFi
c29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOwotfQotCi1URVNUKFhtbE91dHB1dFRl
c3QsIEdldE91dHB1dEZpbGVGcm9tRGlyZWN0b3J5UGF0aCkgewotICBHVEVTVF9GTEFHKG91dHB1
dCkgPSAieG1sOnBhdGgiIEdURVNUX1BBVEhfU0VQXzsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZXhw
ZWN0ZWRfb3V0cHV0X2ZpbGUgPQotICAgICAgR2V0QWJzb2x1dGVQYXRoT2YoCi0gICAgICAgICAg
RmlsZVBhdGgoc3RkOjpzdHJpbmcoInBhdGgiKSArIEdURVNUX1BBVEhfU0VQXyArCi0gICAgICAg
ICAgICAgICAgICAgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuY19zdHIoKSArICIueG1sIikp
LmNfc3RyKCk7Ci0gIGNvbnN0IFN0cmluZyYgb3V0cHV0X2ZpbGUgPSBVbml0VGVzdE9wdGlvbnM6
OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpOwotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAg
RVhQRUNUX1NUUkNBU0VFUShleHBlY3RlZF9vdXRwdXRfZmlsZS5jX3N0cigpLCBvdXRwdXRfZmls
ZS5jX3N0cigpKTsKLSNlbHNlCi0gIEVYUEVDVF9FUShleHBlY3RlZF9vdXRwdXRfZmlsZSwgb3V0
cHV0X2ZpbGUuY19zdHIoKSk7Ci0jZW5kaWYKLX0KLQotVEVTVChPdXRwdXRGaWxlSGVscGVyc1Rl
c3QsIEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSkgewotICBjb25zdCBzdGQ6OnN0cmluZyBleGVf
c3RyID0gR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuY19zdHIoKTsKLSNpZiBHVEVTVF9PU19X
SU5ET1dTCi0gIGNvbnN0IGJvb2wgc3VjY2VzcyA9Ci0gICAgICBfc3RyY21waSgiZ3Rlc3Qtb3B0
aW9uc190ZXN0IiwgZXhlX3N0ci5jX3N0cigpKSA9PSAwIHx8Ci0gICAgICBfc3RyY21waSgiZ3Rl
c3Qtb3B0aW9ucy1leF90ZXN0IiwgZXhlX3N0ci5jX3N0cigpKSA9PSAwIHx8Ci0gICAgICBfc3Ry
Y21waSgiZ3Rlc3RfYWxsX3Rlc3QiLCBleGVfc3RyLmNfc3RyKCkpID09IDAgfHwKLSAgICAgIF9z
dHJjbXBpKCJndGVzdF9kbGxfdGVzdCIsIGV4ZV9zdHIuY19zdHIoKSkgPT0gMDsKLSNlbHNlCi0g
IC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiByZW1vdmUgdGhlIGhhcmQtY29kZWQgImx0LSIgcHJl
Zml4IHdoZW4KLSAgLy8gICBDaGFuZGxlciBDYXJydXRoJ3MgbGlidG9vbCByZXBsYWNlbWVudCBp
cyByZWFkeS4KLSAgY29uc3QgYm9vbCBzdWNjZXNzID0KLSAgICAgIGV4ZV9zdHIgPT0gImd0ZXN0
LW9wdGlvbnNfdGVzdCIgfHwKLSAgICAgIGV4ZV9zdHIgPT0gImd0ZXN0X2FsbF90ZXN0IiB8fAot
ICAgICAgZXhlX3N0ciA9PSAibHQtZ3Rlc3RfYWxsX3Rlc3QiIHx8Ci0gICAgICBleGVfc3RyID09
ICJndGVzdF9kbGxfdGVzdCI7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLSAgaWYgKCFz
dWNjZXNzKQotICAgIEZBSUwoKSA8PCAiR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkgcmV0dXJu
cyAiIDw8IGV4ZV9zdHI7Ci19Ci0KLWNsYXNzIFhtbE91dHB1dENoYW5nZURpclRlc3QgOiBwdWJs
aWMgVGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgb3Jp
Z2luYWxfd29ya2luZ19kaXJfID0gRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKTsKLSAgICBwb3Np
eDo6Q2hEaXIoIi4uIik7Ci0gICAgLy8gVGhpcyB3aWxsIG1ha2UgdGhlIHRlc3QgZmFpbCBpZiBy
dW4gZnJvbSB0aGUgcm9vdCBkaXJlY3RvcnkuCi0gICAgRVhQRUNUX1NUUk5FKG9yaWdpbmFsX3dv
cmtpbmdfZGlyXy5jX3N0cigpLAotICAgICAgICAgICAgICAgICBGaWxlUGF0aDo6R2V0Q3VycmVu
dERpcigpLmNfc3RyKCkpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAg
IHBvc2l4OjpDaERpcihvcmlnaW5hbF93b3JraW5nX2Rpcl8uY19zdHIoKSk7Ci0gIH0KLQotICBG
aWxlUGF0aCBvcmlnaW5hbF93b3JraW5nX2Rpcl87Ci19OwotCi1URVNUX0YoWG1sT3V0cHV0Q2hh
bmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoRGVmYXVsdCkgewotICBH
VEVTVF9GTEFHKG91dHB1dCkgPSAiIjsKLSAgRVhQRUNUX1NUUkVRKEZpbGVQYXRoOjpDb25jYXRQ
YXRocyhvcmlnaW5hbF93b3JraW5nX2Rpcl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRmlsZVBhdGgoInRlc3RfZGV0YWlsLnhtbCIpKS5jX3N0cigpLAotICAgICAgICAg
ICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0
cigpKTsKLX0KLQotVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2lu
YWxXb3JraW5nRGlyV2l0aERlZmF1bHRYTUwpIHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInht
bCI7Ci0gIEVYUEVDVF9TVFJFUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2lu
Z19kaXJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJ0
ZXN0X2RldGFpbC54bWwiKSkuY19zdHIoKSwKLSAgICAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9u
czo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSk7Ci19Ci0KLVRFU1RfRihY
bWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhSZWxh
dGl2ZUZpbGUpIHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbDpmaWxlbmFtZS5hYmMiOwot
ICBFWFBFQ1RfU1RSRVEoRmlsZVBhdGg6OkNvbmNhdFBhdGhzKG9yaWdpbmFsX3dvcmtpbmdfZGly
XywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiZmlsZW5h
bWUuYWJjIikpLmNfc3RyKCksCi0gICAgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFi
c29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOwotfQotCi1URVNUX0YoWG1sT3V0cHV0
Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoUmVsYXRpdmVQYXRo
KSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6cGF0aCIgR1RFU1RfUEFUSF9TRVBfOwot
ICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3RlZF9vdXRwdXRfZmlsZSA9Ci0gICAgICBGaWxlUGF0
aDo6Q29uY2F0UGF0aHMoCi0gICAgICAgICAgb3JpZ2luYWxfd29ya2luZ19kaXJfLAotICAgICAg
ICAgIEZpbGVQYXRoKHN0ZDo6c3RyaW5nKCJwYXRoIikgKyBHVEVTVF9QQVRIX1NFUF8gKwotICAg
ICAgICAgICAgICAgICAgIEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLmNfc3RyKCkgKyAiLnht
bCIpKS5jX3N0cigpOwotICBjb25zdCBTdHJpbmcmIG91dHB1dF9maWxlID0gVW5pdFRlc3RPcHRp
b25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKTsKLSNpZiBHVEVTVF9PU19XSU5ET1dT
Ci0gIEVYUEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUuY19zdHIoKSwgb3V0cHV0
X2ZpbGUuY19zdHIoKSk7Ci0jZWxzZQotICBFWFBFQ1RfRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUs
IG91dHB1dF9maWxlLmNfc3RyKCkpOwotI2VuZGlmCi19Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFu
Z2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhBYnNvbHV0ZUZpbGUpIHsK
LSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6YzpcXHRt
cFxcZmlsZW5hbWUuYWJjIjsKLSAgRVhQRUNUX1NUUkVRKEZpbGVQYXRoKCJjOlxcdG1wXFxmaWxl
bmFtZS5hYmMiKS5jX3N0cigpLAotICAgICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRB
YnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0cigpKTsKLSNlbHNlCi0gIEdURVNUX0ZMQUco
b3V0cHV0KSA9InhtbDovdG1wL2ZpbGVuYW1lLmFiYyI7Ci0gIEVYUEVDVF9TVFJFUShGaWxlUGF0
aCgiL3RtcC9maWxlbmFtZS5hYmMiKS5jX3N0cigpLAotICAgICAgICAgICAgICAgVW5pdFRlc3RP
cHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0cigpKTsKLSNlbmRpZgot
fQotCi1URVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtp
bmdEaXJXaXRoQWJzb2x1dGVQYXRoKSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICBjb25zdCBz
dGQ6OnN0cmluZyBwYXRoID0gImM6XFx0bXBcXCI7Ci0jZWxzZQotICBjb25zdCBzdGQ6OnN0cmlu
ZyBwYXRoID0gIi90bXAvIjsKLSNlbmRpZgotCi0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6
IiArIHBhdGg7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdGVkX291dHB1dF9maWxlID0KLSAg
ICAgIHBhdGggKyBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5jX3N0cigpICsgIi54bWwiOwot
ICBjb25zdCBTdHJpbmcmIG91dHB1dF9maWxlID0gVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0
ZVBhdGhUb091dHB1dEZpbGUoKTsKLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgRVhQRUNUX1NU
UkNBU0VFUShleHBlY3RlZF9vdXRwdXRfZmlsZS5jX3N0cigpLCBvdXRwdXRfZmlsZS5jX3N0cigp
KTsKLSNlbHNlCi0gIEVYUEVDVF9FUShleHBlY3RlZF9vdXRwdXRfZmlsZSwgb3V0cHV0X2ZpbGUu
Y19zdHIoKSk7Ci0jZW5kaWYKLX0KLQotfSAgLy8gbmFtZXNwYWNlCi19ICAvLyBuYW1lc3BhY2Ug
aW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3QyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3QyX3Rlc3QuY2MKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGNjYjZjZmFjOWU3NmI4MjdmMTdhZTExODI5ZTIzNmQ2Zjk3ZWU2
NDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjCisrKyAvZGV2
L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0v
LyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0v
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikK
LS8vCi0vLyBUZXN0cyBmb3IgR29vZ2xlIFRlc3QgaXRzZWxmLiAgVGhpcyB2ZXJpZmllcyB0aGF0
IHRoZSBiYXNpYyBjb25zdHJ1Y3RzIG9mCi0vLyBHb29nbGUgVGVzdCB3b3JrLgotCi0jaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0
LmgiCi0KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi11c2luZyA6OnRlc3Rpbmc6OlZhbHVl
czsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yOwotCi0vLyBUZXN0
cyB0aGF0IGdlbmVyYXRvcnMgZGVmaW5lZCBpbiBhIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0
Ci0vLyBhcmUgZnVuY3Rpb25hbC4gVGhlIHRlc3QgdXNpbmcgZXh0ZXJuX2dlbiBpcyBkZWZpbmVk
Ci0vLyBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MuCi1QYXJhbUdlbmVyYXRvcjxpbnQ+IGV4
dGVybl9nZW4gPSBWYWx1ZXMoMzMpOwotCi0vLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0
ZXN0IGNhc2UgY2FuIGJlIGRlZmluZWQgaW4gb25lIHRyYW5zbGF0aW9uIHVuaXQKLS8vIGFuZCBp
bnN0YW50aWF0ZWQgaW4gYW5vdGhlci4gVGhlIHRlc3QgaXMgZGVmaW5lZCBpbiBndGVzdC1wYXJh
bS10ZXN0X3Rlc3QuY2MKLS8vIGFuZCBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0IGZpeHR1cmUg
Y2xhc3MgaXMgZGVmaW5lZCBpbgotLy8gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmguCi1JTlNUQU5U
SUFURV9URVNUX0NBU0VfUChNdWx0aXBsZXNPZjMzLAotICAgICAgICAgICAgICAgICAgICAgICAg
RXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVl
cygzMywgNjYpKTsKLQotLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNh
biBiZSBpbnN0YW50aWF0ZWQKLS8vIGluIG11bHRpcGxlIHRyYW5zbGF0aW9uIHVuaXRzLiBBbm90
aGVyIGluc3RhbnRpYXRpb24gaXMgZGVmaW5lZAotLy8gaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0
LmNjIGFuZCBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QKLS8vIGZp
eHR1cmUgaXMgZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaAotSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoU2VxdWVuY2UyLAotICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlh
dGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsdWVzKDQyKjMsIDQyKjQsIDQyKjUpKTsKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFS
QU1fVEVTVApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1w
YXJhbS10ZXN0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBh
cmFtLXRlc3RfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDBhMGU3MzVj
MGI5ODhlZjFhMjJiN2Q3YWU2OTAyNzAxOGJkYjhjYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
LXBhcmFtLXRlc3RfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDgzNSArMCwwIEBACi0vLyBD
b3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwot
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3Ry
aWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2
bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQotLy8KLS8vIFRlc3RzIGZvciBHb29nbGUgVGVz
dCBpdHNlbGYuIFRoaXMgZmlsZSB2ZXJpZmllcyB0aGF0IHRoZSBwYXJhbWV0ZXIKLS8vIGdlbmVy
YXRvcnMgb2JqZWN0cyBwcm9kdWNlIGNvcnJlY3QgcGFyYW1ldGVyIHNlcXVlbmNlcyBhbmQgdGhh
dAotLy8gR29vZ2xlIFRlc3QgcnVudGltZSBpbnN0YW50aWF0ZXMgY29ycmVjdCB0ZXN0cyBmcm9t
IHRob3NlIHNlcXVlbmNlcy4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLSNpZiBHVEVT
VF9IQVNfUEFSQU1fVEVTVAotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGlvc3Ry
ZWFtPgotI2luY2x1ZGUgPGxpc3Q+Ci0jaW5jbHVkZSA8c3N0cmVhbT4KLSNpbmNsdWRlIDxzdHJp
bmc+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0vLyBUbyBpbmNsdWRlIGd0ZXN0LWludGVybmFsLWlu
bC5oLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQotI2luY2x1ZGUgInNyYy9ndGVz
dC1pbnRlcm5hbC1pbmwuaCIgIC8vIGZvciBVbml0VGVzdE9wdGlvbnMKLSN1bmRlZiBHVEVTVF9J
TVBMRU1FTlRBVElPTl8KLQotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0Lmgi
Ci0KLXVzaW5nIDo6c3RkOjp2ZWN0b3I7Ci11c2luZyA6OnN0ZDo6c29ydDsKLQotdXNpbmcgOjp0
ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQ7Ci11c2luZyA6OnRlc3Rpbmc6OkJvb2w7
Ci11c2luZyA6OnRlc3Rpbmc6Ok1lc3NhZ2U7Ci11c2luZyA6OnRlc3Rpbmc6OlJhbmdlOwotdXNp
bmcgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtOwotdXNpbmcgOjp0ZXN0aW5nOjpWYWx1ZXM7Ci11
c2luZyA6OnRlc3Rpbmc6OlZhbHVlc0luOwotCi0jaWYgR1RFU1RfSEFTX0NPTUJJTkUKLXVzaW5n
IDo6dGVzdGluZzo6Q29tYmluZTsKLXVzaW5nIDo6c3RkOjp0cjE6OmdldDsKLXVzaW5nIDo6c3Rk
Ojp0cjE6Om1ha2VfdHVwbGU7Ci11c2luZyA6OnN0ZDo6dHIxOjp0dXBsZTsKLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX0NPTUJJTkUKLQotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1HZW5l
cmF0b3I7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml0VGVzdE9wdGlvbnM7Ci0KLS8v
IFByaW50cyBhIHZhbHVlIHRvIGEgc3RyaW5nLgotLy8KLS8vIFRPRE8od2FuQGdvb2dsZS5jb20p
OiByZW1vdmUgUHJpbnRWYWx1ZSgpIHdoZW4gd2UgbW92ZSBtYXRjaGVycyBhbmQKLS8vIEVYUEVD
VF9USEFUKCkgZnJvbSBHb29nbGUgTW9jayB0byBHb29nbGUgVGVzdC4gIEF0IHRoYXQgdGltZSwg
d2UKLS8vIGNhbiB3cml0ZSBFWFBFQ1RfVEhBVCh4LCBFcSh5KSkgdG8gY29tcGFyZSB0d28gdHVw
bGVzIHggYW5kIHksIGFzCi0vLyBFWFBFQ1RfVEhBVCgpIGFuZCB0aGUgbWF0Y2hlcnMga25vdyBo
b3cgdG8gcHJpbnQgdHVwbGVzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci06OnN0ZDo6c3RyaW5n
IFByaW50VmFsdWUoY29uc3QgVCYgdmFsdWUpIHsKLSAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJl
YW07Ci0gIHN0cmVhbSA8PCB2YWx1ZTsKLSAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKLX0KLQotI2lm
IEdURVNUX0hBU19DT01CSU5FCi0KLS8vIFRoZXNlIG92ZXJsb2FkcyBhbGxvdyBwcmludGluZyB0
dXBsZXMgaW4gb3VyIHRlc3RzLiAgV2UgY2Fubm90Ci0vLyBkZWZpbmUgYW4gb3BlcmF0b3I8PCBm
b3IgdHVwbGVzLCBhcyB0aGF0IGRlZmluaXRpb24gbmVlZHMgdG8gYmUgaW4KLS8vIHRoZSBzdGQg
bmFtZXNwYWNlIGluIG9yZGVyIHRvIGJlIHBpY2tlZCB1cCBieSBHb29nbGUgVGVzdCB2aWEKLS8v
IEFyZ3VtZW50LURlcGVuZGVudCBMb29rdXAsIHlldCBkZWZpbmluZyBhbnl0aGluZyBpbiB0aGUg
c3RkCi0vLyBuYW1lc3BhY2UgaW4gbm9uLVNUTCBjb2RlIGlzIHVuZGVmaW5lZCBiZWhhdmlvci4K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLTo6c3RkOjpzdHJpbmcgUHJp
bnRWYWx1ZShjb25zdCB0dXBsZTxUMSwgVDI+JiB2YWx1ZSkgewotICA6OnN0ZDo6c3RyaW5nc3Ry
ZWFtIHN0cmVhbTsKLSAgc3RyZWFtIDw8ICIoIiA8PCBnZXQ8MD4odmFsdWUpIDw8ICIsICIgPDwg
Z2V0PDE+KHZhbHVlKSA8PCAiKSI7Ci0gIHJldHVybiBzdHJlYW0uc3RyKCk7Ci19Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotOjpzdGQ6OnN0cmlu
ZyBQcmludFZhbHVlKGNvbnN0IHR1cGxlPFQxLCBUMiwgVDM+JiB2YWx1ZSkgewotICA6OnN0ZDo6
c3RyaW5nc3RyZWFtIHN0cmVhbTsKLSAgc3RyZWFtIDw8ICIoIiA8PCBnZXQ8MD4odmFsdWUpIDw8
ICIsICIgPDwgZ2V0PDE+KHZhbHVlKQotICAgICAgICAgPDwgIiwgIjw8IGdldDwyPih2YWx1ZSkg
PDwgIikiOwotICByZXR1cm4gc3RyZWFtLnN0cigpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAot
ICAgICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1l
IFQ5LCB0eXBlbmFtZSBUMTA+Ci06OnN0ZDo6c3RyaW5nIFByaW50VmFsdWUoCi0gICAgY29uc3Qg
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwPiYgdmFsdWUpIHsK
LSAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07Ci0gIHN0cmVhbSA8PCAiKCIgPDwgZ2V0PDA+
KHZhbHVlKSA8PCAiLCAiIDw8IGdldDwxPih2YWx1ZSkKLSAgICAgICAgIDw8ICIsICI8PCBnZXQ8
Mj4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDM+KHZhbHVlKQotICAgICAgICAgPDwgIiwgIjw8IGdl
dDw0Pih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8NT4odmFsdWUpCi0gICAgICAgICA8PCAiLCAiPDwg
Z2V0PDY+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDw3Pih2YWx1ZSkKLSAgICAgICAgIDw8ICIsICI8
PCBnZXQ8OD4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDk+KHZhbHVlKSA8PCAiKSI7Ci0gIHJldHVy
biBzdHJlYW0uc3RyKCk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKLQotLy8g
VmVyaWZpZXMgdGhhdCBhIHNlcXVlbmNlIGdlbmVyYXRlZCBieSB0aGUgZ2VuZXJhdG9yIGFuZCBh
Y2Nlc3NlZAotLy8gdmlhIHRoZSBpdGVyYXRvciBvYmplY3QgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQg
b25lIHVzaW5nIEdvb2dsZSBUZXN0Ci0vLyBhc3NlcnRpb25zLgotdGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHNpemVfdCBOPgotdm9pZCBWZXJpZnlHZW5lcmF0b3IoY29uc3QgUGFyYW1HZW5lcmF0b3I8
VD4mIGdlbmVyYXRvciwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQgKCZleHBlY3RlZF92
YWx1ZXMpW05dKSB7Ci0gIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ+OjppdGVyYXRvciBpdCA9
IGdlbmVyYXRvci5iZWdpbigpOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IE47ICsraSkgewot
ICAgIEFTU0VSVF9GQUxTRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpCi0gICAgICAgIDw8ICJBdCBl
bGVtZW50ICIgPDwgaSA8PCAiIHdoZW4gYWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRvciAiCi0gICAg
ICAgIDw8ICJjcmVhdGVkIHdpdGggdGhlIGNvcHkgY29uc3RydWN0b3IuXG4iOwotICAgIC8vIFdl
IGNhbm5vdCB1c2UgRVhQRUNUX0VRKCkgaGVyZSBhcyB0aGUgdmFsdWVzIG1heSBiZSB0dXBsZXMs
Ci0gICAgLy8gd2hpY2ggZG9uJ3Qgc3VwcG9ydCA8PC4KLSAgICBFWFBFQ1RfVFJVRShleHBlY3Rl
ZF92YWx1ZXNbaV0gPT0gKml0KQotICAgICAgICA8PCAid2hlcmUgaSBpcyAiIDw8IGkKLSAgICAg
ICAgPDwgIiwgZXhwZWN0ZWRfdmFsdWVzW2ldIGlzICIgPDwgUHJpbnRWYWx1ZShleHBlY3RlZF92
YWx1ZXNbaV0pCi0gICAgICAgIDw8ICIsICppdCBpcyAiIDw8IFByaW50VmFsdWUoKml0KQotICAg
ICAgICA8PCAiLCBhbmQgJ2l0JyBpcyBhbiBpdGVyYXRvciBjcmVhdGVkIHdpdGggdGhlIGNvcHkg
Y29uc3RydWN0b3IuXG4iOwotICAgIGl0Kys7Ci0gIH0KLSAgRVhQRUNUX1RSVUUoaXQgPT0gZ2Vu
ZXJhdG9yLmVuZCgpKQotICAgICAgICA8PCAiQXQgdGhlIHByZXN1bWVkIGVuZCBvZiBzZXF1ZW5j
ZSB3aGVuIGFjY2Vzc2luZyB2aWEgYW4gaXRlcmF0b3IgIgotICAgICAgICA8PCAiY3JlYXRlZCB3
aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9yLlxuIjsKLQotICAvLyBUZXN0IHRoZSBpdGVyYXRvciBh
c3NpZ25tZW50LiBUaGUgZm9sbG93aW5nIGxpbmVzIHZlcmlmeSB0aGF0Ci0gIC8vIHRoZSBzZXF1
ZW5jZSBhY2Nlc3NlZCB2aWEgYW4gaXRlcmF0b3IgaW5pdGlhbGl6ZWQgdmlhIHRoZQotICAvLyBh
c3NpZ25tZW50IG9wZXJhdG9yIChhcyBvcHBvc2VkIHRvIGEgY29weSBjb25zdHJ1Y3RvcikgbWF0
Y2hlcwotICAvLyBqdXN0IHRoZSBzYW1lLgotICBpdCA9IGdlbmVyYXRvci5iZWdpbigpOwotICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IE47ICsraSkgewotICAgIEFTU0VSVF9GQUxTRShpdCA9PSBn
ZW5lcmF0b3IuZW5kKCkpCi0gICAgICAgIDw8ICJBdCBlbGVtZW50ICIgPDwgaSA8PCAiIHdoZW4g
YWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRvciAiCi0gICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhl
IGFzc2lnbm1lbnQgb3BlcmF0b3IuXG4iOwotICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkX3ZhbHVl
c1tpXSA9PSAqaXQpCi0gICAgICAgIDw8ICJ3aGVyZSBpIGlzICIgPDwgaQotICAgICAgICA8PCAi
LCBleHBlY3RlZF92YWx1ZXNbaV0gaXMgIiA8PCBQcmludFZhbHVlKGV4cGVjdGVkX3ZhbHVlc1tp
XSkKLSAgICAgICAgPDwgIiwgKml0IGlzICIgPDwgUHJpbnRWYWx1ZSgqaXQpCi0gICAgICAgIDw8
ICIsIGFuZCAnaXQnIGlzIGFuIGl0ZXJhdG9yIGNyZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1
Y3Rvci5cbiI7Ci0gICAgaXQrKzsKLSAgfQotICBFWFBFQ1RfVFJVRShpdCA9PSBnZW5lcmF0b3Iu
ZW5kKCkpCi0gICAgICAgIDw8ICJBdCB0aGUgcHJlc3VtZWQgZW5kIG9mIHNlcXVlbmNlIHdoZW4g
YWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRvciAiCi0gICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhl
IGFzc2lnbm1lbnQgb3BlcmF0b3IuXG4iOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZv
aWQgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShjb25zdCBQYXJhbUdlbmVyYXRvcjxUPiYgZ2VuZXJh
dG9yKSB7Ci0gIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ+OjppdGVyYXRvciBpdCA9IGdlbmVy
YXRvci5iZWdpbigpOwotICBFWFBFQ1RfVFJVRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpOwotCi0g
IGl0ID0gZ2VuZXJhdG9yLmJlZ2luKCk7Ci0gIEVYUEVDVF9UUlVFKGl0ID09IGdlbmVyYXRvci5l
bmQoKSk7Ci19Ci0KLS8vIEdlbmVyYXRvciB0ZXN0cy4gVGhleSB0ZXN0IHRoYXQgZWFjaCBvZiB0
aGUgcHJvdmlkZWQgZ2VuZXJhdG9yIGZ1bmN0aW9ucwotLy8gZ2VuZXJhdGVzIGFuIGV4cGVjdGVk
IHNlcXVlbmNlIG9mIHZhbHVlcy4gVGhlIGdlbmVyYWwgdGVzdCBwYXR0ZXJuCi0vLyBpbnN0YW50
aWF0ZXMgYSBnZW5lcmF0b3IgdXNpbmcgb25lIG9mIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb25zLAot
Ly8gY2hlY2tzIHRoZSBzZXF1ZW5jZSBwcm9kdWNlZCBieSB0aGUgZ2VuZXJhdG9yIHVzaW5nIGl0
cyBpdGVyYXRvciBBUEksCi0vLyBhbmQgdGhlbiByZXNldHMgdGhlIGl0ZXJhdG9yIGJhY2sgdG8g
dGhlIGJlZ2lubmluZyBvZiB0aGUgc2VxdWVuY2UKLS8vIGFuZCBjaGVja3MgdGhlIHNlcXVlbmNl
IGFnYWluLgotCi0vLyBUZXN0cyB0aGF0IGl0ZXJhdG9ycyBwcm9kdWNlZCBieSBnZW5lcmF0b3Ig
ZnVuY3Rpb25zIGNvbmZvcm0gdG8gdGhlCi0vLyBGb3J3YXJkSXRlcmF0b3IgY29uY2VwdC4KLVRF
U1QoSXRlcmF0b3JUZXN0LCBQYXJhbUl0ZXJhdG9yQ29uZm9ybXNUb0ZvcndhcmRJdGVyYXRvckNv
bmNlcHQpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAxMCk7
Ci0gIFBhcmFtR2VuZXJhdG9yPGludD46Oml0ZXJhdG9yIGl0ID0gZ2VuLmJlZ2luKCk7Ci0KLSAg
Ly8gVmVyaWZpZXMgdGhhdCBpdGVyYXRvciBpbml0aWFsaXphdGlvbiB3b3JrcyBhcyBleHBlY3Rl
ZC4KLSAgUGFyYW1HZW5lcmF0b3I8aW50Pjo6aXRlcmF0b3IgaXQyID0gaXQ7Ci0gIEVYUEVDVF9U
UlVFKCppdCA9PSAqaXQyKSA8PCAiSW5pdGlhbGl6ZWQgaXRlcmF0b3JzIG11c3QgcG9pbnQgdG8g
dGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJlbGVtZW50IHNhbWUgYXMgaXRz
IHNvdXJjZSBwb2ludHMgdG8iOwotCi0gIC8vIFZlcmlmaWVzIHRoYXQgaXRlcmF0b3IgYXNzaWdu
bWVudCB3b3JrcyBhcyBleHBlY3RlZC4KLSAgaXQrKzsKLSAgRVhQRUNUX0ZBTFNFKCppdCA9PSAq
aXQyKTsKLSAgaXQyID0gaXQ7Ci0gIEVYUEVDVF9UUlVFKCppdCA9PSAqaXQyKSA8PCAiQXNzaWdu
ZWQgaXRlcmF0b3JzIG11c3QgcG9pbnQgdG8gdGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8ICJlbGVtZW50IHNhbWUgYXMgaXRzIHNvdXJjZSBwb2ludHMgdG8iOwotCi0gIC8vIFZl
cmlmaWVzIHRoYXQgcHJlZml4IG9wZXJhdG9yKysoKSByZXR1cm5zICp0aGlzLgotICBFWFBFQ1Rf
RVEoJml0LCAmKCsraXQpKSA8PCAiUmVzdWx0IG9mIHRoZSBwcmVmaXggb3BlcmF0b3IrKyBtdXN0
IGJlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgInJlZmVyIHRvIHRoZSBvcmlnaW5h
bCBvYmplY3QiOwotCi0gIC8vIFZlcmlmaWVzIHRoYXQgdGhlIHJlc3VsdCBvZiB0aGUgcG9zdGZp
eCBvcGVyYXRvcisrIHBvaW50cyB0byB0aGUgdmFsdWUKLSAgLy8gcG9pbnRlZCB0byBieSB0aGUg
b3JpZ2luYWwgaXRlcmF0b3IuCi0gIGludCBvcmlnaW5hbF92YWx1ZSA9ICppdDsgIC8vIEhhdmUg
dG8gY29tcHV0ZSBpdCBvdXRzaWRlIG9mIG1hY3JvIGNhbGwgdG8gYmUKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gdW5hZmZlY3RlZCBieSB0aGUgcGFyYW1ldGVyIGV2YWx1YXRpb24g
b3JkZXIuCi0gIEVYUEVDVF9FUShvcmlnaW5hbF92YWx1ZSwgKihpdCsrKSk7Ci0KLSAgLy8gVmVy
aWZpZXMgdGhhdCBwcmVmaXggYW5kIHBvc3RmaXggb3BlcmF0b3IrKygpIGFkdmFuY2UgYW4gaXRl
cmF0b3IKLSAgLy8gYWxsIHRoZSBzYW1lLgotICBpdDIgPSBpdDsKLSAgaXQrKzsKLSAgKytpdDI7
Ci0gIEVYUEVDVF9UUlVFKCppdCA9PSAqaXQyKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBSYW5nZSgp
IGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCi1URVNUKFJhbmdlVGVzdCwgSW50UmFu
Z2VXaXRoRGVmYXVsdFN0ZXApIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBS
YW5nZSgwLCAzKTsKLSAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezAsIDEsIDJ9Owot
ICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBFZGdlIGNh
c2UuIFRlc3RzIHRoYXQgUmFuZ2UoKSBnZW5lcmF0ZXMgdGhlIHNpbmdsZSBlbGVtZW50IHNlcXVl
bmNlCi0vLyBhcyBleHBlY3RlZCB3aGVuIHByb3ZpZGVkIHdpdGggcmFuZ2UgbGltaXRzIHRoYXQg
YXJlIGVxdWFsLgotVEVTVChSYW5nZVRlc3QsIEludFJhbmdlU2luZ2xlVmFsdWUpIHsKLSAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAxKTsKLSAgY29uc3QgaW50IGV4
cGVjdGVkX3ZhbHVlc1tdID0gezB9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92
YWx1ZXMpOwotfQotCi0vLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgUmFuZ2UoKSB3aXRoIGdlbmVy
YXRlcyBlbXB0eSBzZXF1ZW5jZSB3aGVuCi0vLyBzdXBwbGllZCB3aXRoIGFuIGVtcHR5IHJhbmdl
LgotVEVTVChSYW5nZVRlc3QsIEludFJhbmdlRW1wdHkpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0
b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAwKTsKLSAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShnZW4p
OwotfQotCi0vLyBUZXN0cyB0aGF0IFJhbmdlKCkgd2l0aCBjdXN0b20gc3RlcCAoZ3JlYXRlciB0
aGVuIG9uZSkgZ2VuZXJhdGVzCi0vLyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCi1URVNUKFJhbmdl
VGVzdCwgSW50UmFuZ2VXaXRoQ3VzdG9tU3RlcCkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxp
bnQ+IGdlbiA9IFJhbmdlKDAsIDksIDMpOwotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10g
PSB7MCwgMywgNn07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgUmFuZ2UoKSB3aXRoIGN1c3RvbSBzdGVwIChncmVhdGVyIHRoZW4g
b25lKSBnZW5lcmF0ZXMKLS8vIHRoZSBleHBlY3RlZCBzZXF1ZW5jZSB3aGVuIHRoZSBsYXN0IGVs
ZW1lbnQgZG9lcyBub3QgZmFsbCBvbiB0aGUKLS8vIHVwcGVyIHJhbmdlIGxpbWl0LiBTZXF1ZW5j
ZXMgZ2VuZXJhdGVkIGJ5IFJhbmdlKCkgbXVzdCBub3QgaGF2ZQotLy8gZWxlbWVudHMgYmV5b25k
IHRoZSByYW5nZSBsaW1pdHMuCi1URVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VXaXRoQ3VzdG9tU3Rl
cE92ZXJVcHBlckJvdW5kKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gUmFu
Z2UoMCwgNCwgMyk7Ci0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHswLCAzfTsKLSAg
VmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVmVyaWZpZXMg
dGhhdCBSYW5nZSB3b3JrcyB3aXRoIHVzZXItZGVmaW5lZCB0eXBlcyB0aGF0IGRlZmluZQotLy8g
Y29weSBjb25zdHJ1Y3Rvciwgb3BlcmF0b3I9KCksIG9wZXJhdG9yKygpLCBhbmQgb3BlcmF0b3I8
KCkuCi1jbGFzcyBEb2dBZGRlciB7Ci0gcHVibGljOgotICBleHBsaWNpdCBEb2dBZGRlcihjb25z
dCBjaGFyKiBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7fQotICBEb2dBZGRlcihjb25zdCBE
b2dBZGRlciYgb3RoZXIpIDogdmFsdWVfKG90aGVyLnZhbHVlXy5jX3N0cigpKSB7fQotCi0gIERv
Z0FkZGVyIG9wZXJhdG9yPShjb25zdCBEb2dBZGRlciYgb3RoZXIpIHsKLSAgICBpZiAodGhpcyAh
PSAmb3RoZXIpCi0gICAgICB2YWx1ZV8gPSBvdGhlci52YWx1ZV87Ci0gICAgcmV0dXJuICp0aGlz
OwotICB9Ci0gIERvZ0FkZGVyIG9wZXJhdG9yKyhjb25zdCBEb2dBZGRlciYgb3RoZXIpIGNvbnN0
IHsKLSAgICBNZXNzYWdlIG1zZzsKLSAgICBtc2cgPDwgdmFsdWVfLmNfc3RyKCkgPDwgb3RoZXIu
dmFsdWVfLmNfc3RyKCk7Ci0gICAgcmV0dXJuIERvZ0FkZGVyKG1zZy5HZXRTdHJpbmcoKS5jX3N0
cigpKTsKLSAgfQotICBib29sIG9wZXJhdG9yPChjb25zdCBEb2dBZGRlciYgb3RoZXIpIGNvbnN0
IHsKLSAgICByZXR1cm4gdmFsdWVfIDwgb3RoZXIudmFsdWVfOwotICB9Ci0gIGNvbnN0IDo6dGVz
dGluZzo6aW50ZXJuYWw6OlN0cmluZyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0K
LQotIHByaXZhdGU6Ci0gIDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZyB2YWx1ZV87Ci19Owot
Ci1URVNUKFJhbmdlVGVzdCwgV29ya3NXaXRoQUN1c3RvbVR5cGUpIHsKLSAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8RG9nQWRkZXI+IGdlbiA9Ci0gICAgICBSYW5nZShEb2dBZGRlcigiY2F0IiksIERv
Z0FkZGVyKCJjYXRkb2dkb2ciKSwgRG9nQWRkZXIoImRvZyIpKTsKLSAgUGFyYW1HZW5lcmF0b3I8
RG9nQWRkZXI+OjppdGVyYXRvciBpdCA9IGdlbi5iZWdpbigpOwotCi0gIEFTU0VSVF9GQUxTRShp
dCA9PSBnZW4uZW5kKCkpOwotICBFWFBFQ1RfU1RSRVEoImNhdCIsIGl0LT52YWx1ZSgpLmNfc3Ry
KCkpOwotCi0gIEFTU0VSVF9GQUxTRSgrK2l0ID09IGdlbi5lbmQoKSk7Ci0gIEVYUEVDVF9TVFJF
USgiY2F0ZG9nIiwgaXQtPnZhbHVlKCkuY19zdHIoKSk7Ci0KLSAgRVhQRUNUX1RSVUUoKytpdCA9
PSBnZW4uZW5kKCkpOwotfQotCi1jbGFzcyBJbnRXcmFwcGVyIHsKLSBwdWJsaWM6Ci0gIGV4cGxp
Y2l0IEludFdyYXBwZXIoaW50IGFfdmFsdWUpIDogdmFsdWVfKGFfdmFsdWUpIHt9Ci0gIEludFdy
YXBwZXIoY29uc3QgSW50V3JhcHBlciYgb3RoZXIpIDogdmFsdWVfKG90aGVyLnZhbHVlXykge30K
LQotICBJbnRXcmFwcGVyIG9wZXJhdG9yPShjb25zdCBJbnRXcmFwcGVyJiBvdGhlcikgewotICAg
IHZhbHVlXyA9IG90aGVyLnZhbHVlXzsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLSAgLy8gb3Bl
cmF0b3IrKCkgYWRkcyBhIGRpZmZlcmVudCB0eXBlLgotICBJbnRXcmFwcGVyIG9wZXJhdG9yKyhp
bnQgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIEludFdyYXBwZXIodmFsdWVfICsgb3RoZXIpOyB9Ci0g
IGJvb2wgb3BlcmF0b3I8KGNvbnN0IEludFdyYXBwZXImIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0
dXJuIHZhbHVlXyA8IG90aGVyLnZhbHVlXzsKLSAgfQotICBpbnQgdmFsdWUoKSBjb25zdCB7IHJl
dHVybiB2YWx1ZV87IH0KLQotIHByaXZhdGU6Ci0gIGludCB2YWx1ZV87Ci19OwotCi1URVNUKFJh
bmdlVGVzdCwgV29ya3NXaXRoQUN1c3RvbVR5cGVXaXRoRGlmZmVyZW50SW5jcmVtZW50VHlwZSkg
ewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxJbnRXcmFwcGVyPiBnZW4gPSBSYW5nZShJbnRXcmFw
cGVyKDApLCBJbnRXcmFwcGVyKDIpKTsKLSAgUGFyYW1HZW5lcmF0b3I8SW50V3JhcHBlcj46Oml0
ZXJhdG9yIGl0ID0gZ2VuLmJlZ2luKCk7Ci0KLSAgQVNTRVJUX0ZBTFNFKGl0ID09IGdlbi5lbmQo
KSk7Ci0gIEVYUEVDVF9FUSgwLCBpdC0+dmFsdWUoKSk7Ci0KLSAgQVNTRVJUX0ZBTFNFKCsraXQg
PT0gZ2VuLmVuZCgpKTsKLSAgRVhQRUNUX0VRKDEsIGl0LT52YWx1ZSgpKTsKLQotICBFWFBFQ1Rf
VFJVRSgrK2l0ID09IGdlbi5lbmQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSB3
aXRoIGFuIGFycmF5IHBhcmFtZXRlciBnZW5lcmF0ZXMKLS8vIHRoZSBleHBlY3RlZCBzZXF1ZW5j
ZS4KLVRFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJbkFycmF5KSB7Ci0gIGludCBhcnJheVtdID0g
ezMsIDUsIDh9OwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKGFy
cmF5KTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgYXJyYXkpOwotfQotCi0vLyBUZXN0cyB0aGF0
IFZhbHVlc0luKCkgd2l0aCBhIGNvbnN0IGFycmF5IHBhcmFtZXRlciBnZW5lcmF0ZXMKLS8vIHRo
ZSBleHBlY3RlZCBzZXF1ZW5jZS4KLVRFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJbkNvbnN0QXJy
YXkpIHsKLSAgY29uc3QgaW50IGFycmF5W10gPSB7MywgNSwgOH07Ci0gIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4oYXJyYXkpOwotICBWZXJpZnlHZW5lcmF0b3IoZ2Vu
LCBhcnJheSk7Ci19Ci0KLS8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIHdpdGgg
YW4gYXJyYXkgcGFyYW1ldGVyIGNvbnRhaW5pbmcgYQotLy8gc2luZ2xlIGVsZW1lbnQgZ2VuZXJh
dGVzIHRoZSBzaW5nbGUgZWxlbWVudCBzZXF1ZW5jZS4KLVRFU1QoVmFsdWVzSW5UZXN0LCBWYWx1
ZXNJblNpbmdsZUVsZW1lbnRBcnJheSkgewotICBpbnQgYXJyYXlbXSA9IHs0Mn07Ci0gIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4oYXJyYXkpOwotICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBhcnJheSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSBnZW5lcmF0
ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlIGZvciBhbiBTVEwKLS8vIGNvbnRhaW5lciAodmVjdG9y
KS4KLVRFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJblZlY3RvcikgewotICB0eXBlZGVmIDo6c3Rk
Ojp2ZWN0b3I8aW50PiBDb250YWluZXJUeXBlOwotICBDb250YWluZXJUeXBlIHZhbHVlczsKLSAg
dmFsdWVzLnB1c2hfYmFjaygzKTsKLSAgdmFsdWVzLnB1c2hfYmFjayg1KTsKLSAgdmFsdWVzLnB1
c2hfYmFjayg4KTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbih2
YWx1ZXMpOwotCi0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHszLCA1LCA4fTsKLSAg
VmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBWYWx1ZXNJbigpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCi1URVNUKFZhbHVl
c0luVGVzdCwgVmFsdWVzSW5JdGVyYXRvclJhbmdlKSB7Ci0gIHR5cGVkZWYgOjpzdGQ6OnZlY3Rv
cjxpbnQ+IENvbnRhaW5lclR5cGU7Ci0gIENvbnRhaW5lclR5cGUgdmFsdWVzOwotICB2YWx1ZXMu
cHVzaF9iYWNrKDMpOwotICB2YWx1ZXMucHVzaF9iYWNrKDUpOwotICB2YWx1ZXMucHVzaF9iYWNr
KDgpOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVlcy5i
ZWdpbigpLCB2YWx1ZXMuZW5kKCkpOwotCi0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9
IHszLCA1LCA4fTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0K
LQotLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFZhbHVlc0luKCkgcHJvdmlkZWQgd2l0aCBhbiBp
dGVyYXRvciByYW5nZSBzcGVjaWZ5aW5nIGEKLS8vIHNpbmdsZSB2YWx1ZSBnZW5lcmF0ZXMgYSBz
aW5nbGUtZWxlbWVudCBzZXF1ZW5jZS4KLVRFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJblNpbmds
ZUVsZW1lbnRJdGVyYXRvclJhbmdlKSB7Ci0gIHR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxpbnQ+IENv
bnRhaW5lclR5cGU7Ci0gIENvbnRhaW5lclR5cGUgdmFsdWVzOwotICB2YWx1ZXMucHVzaF9iYWNr
KDQyKTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbih2YWx1ZXMu
YmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKLQotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10g
PSB7NDJ9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0v
LyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSBwcm92aWRlZCB3aXRoIGFuIGVtcHR5
IGl0ZXJhdG9yIHJhbmdlCi0vLyBnZW5lcmF0ZXMgYW4gZW1wdHkgc2VxdWVuY2UuCi1URVNUKFZh
bHVlc0luVGVzdCwgVmFsdWVzSW5FbXB0eUl0ZXJhdG9yUmFuZ2UpIHsKLSAgdHlwZWRlZiA6OnN0
ZDo6dmVjdG9yPGludD4gQ29udGFpbmVyVHlwZTsKLSAgQ29udGFpbmVyVHlwZSB2YWx1ZXM7Ci0g
IGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4odmFsdWVzLmJlZ2luKCks
IHZhbHVlcy5lbmQoKSk7Ci0KLSAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShnZW4pOwotfQotCi0v
LyBUZXN0cyB0aGF0IHRoZSBWYWx1ZXMoKSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNl
LgotVEVTVChWYWx1ZXNUZXN0LCBWYWx1ZXNXb3JrcykgewotICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxpbnQ+IGdlbiA9IFZhbHVlcygzLCA1LCA4KTsKLQotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFs
dWVzW10gPSB7MywgNSwgOH07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVl
cyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVmFsdWVzKCkgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBz
ZXF1ZW5jZXMgZnJvbSBlbGVtZW50cyBvZgotLy8gZGlmZmVyZW50IHR5cGVzIGNvbnZlcnRpYmxl
IHRvIFBhcmFtR2VuZXJhdG9yJ3MgcGFyYW1ldGVyIHR5cGUuCi1URVNUKFZhbHVlc1Rlc3QsIFZh
bHVlc1dvcmtzRm9yVmFsdWVzT2ZDb21wYXRpYmxlVHlwZXMpIHsKLSAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8ZG91YmxlPiBnZW4gPSBWYWx1ZXMoMywgNS4wZiwgOC4wKTsKLQotICBjb25zdCBkb3Vi
bGUgZXhwZWN0ZWRfdmFsdWVzW10gPSB7My4wLCA1LjAsIDguMH07Ci0gIFZlcmlmeUdlbmVyYXRv
cihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLVRFU1QoVmFsdWVzVGVzdCwgVmFsdWVzV29y
a3NGb3JNYXhMZW5ndGhMaXN0KSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0g
VmFsdWVzKAotICAgICAgMTAsIDIwLCAzMCwgNDAsIDUwLCA2MCwgNzAsIDgwLCA5MCwgMTAwLAot
ICAgICAgMTEwLCAxMjAsIDEzMCwgMTQwLCAxNTAsIDE2MCwgMTcwLCAxODAsIDE5MCwgMjAwLAot
ICAgICAgMjEwLCAyMjAsIDIzMCwgMjQwLCAyNTAsIDI2MCwgMjcwLCAyODAsIDI5MCwgMzAwLAot
ICAgICAgMzEwLCAzMjAsIDMzMCwgMzQwLCAzNTAsIDM2MCwgMzcwLCAzODAsIDM5MCwgNDAwLAot
ICAgICAgNDEwLCA0MjAsIDQzMCwgNDQwLCA0NTAsIDQ2MCwgNDcwLCA0ODAsIDQ5MCwgNTAwKTsK
LQotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7Ci0gICAgICAxMCwgMjAsIDMwLCA0
MCwgNTAsIDYwLCA3MCwgODAsIDkwLCAxMDAsCi0gICAgICAxMTAsIDEyMCwgMTMwLCAxNDAsIDE1
MCwgMTYwLCAxNzAsIDE4MCwgMTkwLCAyMDAsCi0gICAgICAyMTAsIDIyMCwgMjMwLCAyNDAsIDI1
MCwgMjYwLCAyNzAsIDI4MCwgMjkwLCAzMDAsCi0gICAgICAzMTAsIDMyMCwgMzMwLCAzNDAsIDM1
MCwgMzYwLCAzNzAsIDM4MCwgMzkwLCA0MDAsCi0gICAgICA0MTAsIDQyMCwgNDMwLCA0NDAsIDQ1
MCwgNDYwLCA0NzAsIDQ4MCwgNDkwLCA1MDB9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBl
Y3RlZF92YWx1ZXMpOwotfQotCi0vLyBFZGdlIGNhc2UgdGVzdC4gVGVzdHMgdGhhdCBzaW5nbGUt
cGFyYW1ldGVyIFZhbHVlcygpIGdlbmVyYXRlcyB0aGUgc2VxdWVuY2UKLS8vIHdpdGggdGhlIHNp
bmdsZSB2YWx1ZS4KLVRFU1QoVmFsdWVzVGVzdCwgVmFsdWVzV2l0aFNpbmdsZVBhcmFtZXRlcikg
ewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlcyg0Mik7Ci0KLSAgY29u
c3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezQyfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwg
ZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBCb29sKCkgZ2VuZXJhdGVzIHNl
cXVlbmNlIChmYWxzZSwgdHJ1ZSkuCi1URVNUKEJvb2xUZXN0LCBCb29sV29ya3MpIHsKLSAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8Ym9vbD4gZ2VuID0gQm9vbCgpOwotCi0gIGNvbnN0IGJvb2wgZXhw
ZWN0ZWRfdmFsdWVzW10gPSB7ZmFsc2UsIHRydWV9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBl
eHBlY3RlZF92YWx1ZXMpOwotfQotCi0jaWYgR1RFU1RfSEFTX0NPTUJJTkUKLQotLy8gVGVzdHMg
dGhhdCBDb21iaW5lKCkgd2l0aCB0d28gcGFyYW1ldGVycyBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVk
IHNlcXVlbmNlLgotVEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdpdGhUd29QYXJhbWV0ZXJzKSB7
Ci0gIGNvbnN0IGNoYXIqIGZvbyA9ICJmb28iOwotICBjb25zdCBjaGFyKiBiYXIgPSAiYmFyIjsK
LSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8Y29uc3QgY2hhciosIGludD4gPiBnZW4gPQot
ICAgICAgQ29tYmluZShWYWx1ZXMoZm9vLCBiYXIpLCBWYWx1ZXMoMywgNCkpOwotCi0gIHR1cGxl
PGNvbnN0IGNoYXIqLCBpbnQ+IGV4cGVjdGVkX3ZhbHVlc1tdID0gewotICAgIG1ha2VfdHVwbGUo
Zm9vLCAzKSwgbWFrZV90dXBsZShmb28sIDQpLAotICAgIG1ha2VfdHVwbGUoYmFyLCAzKSwgbWFr
ZV90dXBsZShiYXIsIDQpfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVz
KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBDb21iaW5lKCkgd2l0aCB0aHJlZSBwYXJhbWV0ZXJzIGdl
bmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCi1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5l
V2l0aFRocmVlUGFyYW1ldGVycykgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQs
IGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUoVmFsdWVzKDAsIDEpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDMsIDQp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsdWVzKDUsIDYpKTsKLSAgdHVwbGU8aW50LCBpbnQsIGludD4gZXhwZWN0ZWRfdmFs
dWVzW10gPSB7Ci0gICAgbWFrZV90dXBsZSgwLCAzLCA1KSwgbWFrZV90dXBsZSgwLCAzLCA2KSwK
LSAgICBtYWtlX3R1cGxlKDAsIDQsIDUpLCBtYWtlX3R1cGxlKDAsIDQsIDYpLAotICAgIG1ha2Vf
dHVwbGUoMSwgMywgNSksIG1ha2VfdHVwbGUoMSwgMywgNiksCi0gICAgbWFrZV90dXBsZSgxLCA0
LCA1KSwgbWFrZV90dXBsZSgxLCA0LCA2KX07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVj
dGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIENvbWJpbmUoKSB3aXRoIHRoZSBm
aXJzdCBwYXJhbWV0ZXIgZ2VuZXJhdGluZyBhIHNpbmdsZSB2YWx1ZQotLy8gc2VxdWVuY2UgZ2Vu
ZXJhdGVzIGEgc2VxdWVuY2Ugd2l0aCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGVxdWFsIHRvIHRo
ZQotLy8gbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBzZXF1ZW5jZSBnZW5lcmF0ZWQgYnkgdGhl
IHNlY29uZCBwYXJhbWV0ZXIuCi1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aEZpcnN0UGFy
YW1ldGVyU2luZ2xlVmFsdWUpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBp
bnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoNDIpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygwLCAxKSk7Ci0KLSAgdHVwbGU8
aW50LCBpbnQ+IGV4cGVjdGVkX3ZhbHVlc1tdID0ge21ha2VfdHVwbGUoNDIsIDApLCBtYWtlX3R1
cGxlKDQyLCAxKX07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIENvbWJpbmUoKSB3aXRoIHRoZSBzZWNvbmQgcGFyYW1ldGVy
IGdlbmVyYXRpbmcgYSBzaW5nbGUgdmFsdWUKLS8vIHNlcXVlbmNlIGdlbmVyYXRlcyBhIHNlcXVl
bmNlIHdpdGggdGhlIG51bWJlciBvZiBlbGVtZW50cyBlcXVhbCB0byB0aGUKLS8vIG51bWJlciBv
ZiBlbGVtZW50cyBpbiB0aGUgc2VxdWVuY2UgZ2VuZXJhdGVkIGJ5IHRoZSBmaXJzdCBwYXJhbWV0
ZXIuCi1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFNlY29uZFBhcmFtZXRlclNpbmdsZVZh
bHVlKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50PiA+IGdlbiA9IENv
bWJpbmUoVmFsdWVzKDAsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbHVlcyg0MikpOwotCi0gIHR1cGxlPGludCwgaW50PiBleHBl
Y3RlZF92YWx1ZXNbXSA9IHttYWtlX3R1cGxlKDAsIDQyKSwgbWFrZV90dXBsZSgxLCA0Mil9Owot
ICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBUZXN0cyB0
aGF0IHdoZW4gdGhlIGZpcnN0IHBhcmFtZXRlciBwcm9kdWNlcyBhbiBlbXB0eSBzZXF1ZW5jZSwK
LS8vIENvbWJpbmUoKSBwcm9kdWNlcyBhbiBlbXB0eSBzZXF1ZW5jZSwgdG9vLgotVEVTVChDb21i
aW5lVGVzdCwgQ29tYmluZVdpdGhGaXJzdFBhcmFtZXRlckVtcHR5UmFuZ2UpIHsKLSAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShSYW5nZSgwLCAw
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWx1ZXMoMCwgMSkpOwotICBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgd2hlbiB0aGUgc2Vjb25kIHBhcmFtZXRlciBwcm9kdWNlcyBhbiBlbXB0eSBz
ZXF1ZW5jZSwKLS8vIENvbWJpbmUoKSBwcm9kdWNlcyBhbiBlbXB0eSBzZXF1ZW5jZSwgdG9vLgot
VEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdpdGhTZWNvbmRQYXJhbWV0ZXJFbXB0eVJhbmdlKSB7
Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUo
VmFsdWVzKDAsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJhbmdlKDEsIDEpKTsKLSAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShnZW4p
OwotfQotCi0vLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgY29tYmluZSB3b3JrcyB3aXRoIHRoZSBt
YXhpbXVtIG51bWJlcgotLy8gb2YgcGFyYW1ldGVycyBzdXBwb3J0ZWQgYnkgR29vZ2xlIFRlc3Qg
KGN1cnJlbnRseSAxMCkuCi1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aE1heE51bWJlck9m
UGFyYW1ldGVycykgewotICBjb25zdCBjaGFyKiBmb28gPSAiZm9vIjsKLSAgY29uc3QgY2hhciog
YmFyID0gImJhciI7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGNvbnN0IGNoYXIqLCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUoVmFsdWVzKGZvbywgYmFyKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMo
MSksIFZhbHVlcygyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWx1ZXMoMyksIFZhbHVlcyg0KSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNSksIFZhbHVlcyg2KSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWx1ZXMoNyksIFZhbHVlcyg4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoOSkpOwotCi0gIHR1cGxlPGNvbnN0IGNoYXIqLCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50PgotICAgICAgZXhwZWN0
ZWRfdmFsdWVzW10gPSB7bWFrZV90dXBsZShmb28sIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZV90dXBsZShiYXIsIDEsIDIsIDMsIDQs
IDUsIDYsIDcsIDgsIDkpfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVz
KTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQotCi0vLyBUZXN0cyB0aGF0IGFu
IGdlbmVyYXRvciBwcm9kdWNlcyBjb3JyZWN0IHNlcXVlbmNlIGFmdGVyIGJlaW5nCi0vLyBhc3Np
Z25lZCBmcm9tIGFub3RoZXIgZ2VuZXJhdG9yLgotVEVTVChQYXJhbUdlbmVyYXRvclRlc3QsIEFz
c2lnbm1lbnRXb3JrcykgewotICBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlcygxLCAy
KTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4yID0gVmFsdWVzKDMsIDQpOwotICBn
ZW4gPSBnZW4yOwotCi0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHszLCA0fTsKLSAg
VmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGhpcyB0ZXN0
IHZlcmlmaWVzIHRoYXQgdGhlIHRlc3RzIGFyZSBleHBhbmRlZCBhbmQgcnVuIGFzIHNwZWNpZmll
ZDoKLS8vIG9uZSB0ZXN0IHBlciBlbGVtZW50IGZyb20gdGhlIHNlcXVlbmNlIHByb2R1Y2VkIGJ5
IHRoZSBnZW5lcmF0b3IKLS8vIHNwZWNpZmllZCBpbiBJTlNUQU5USUFURV9URVNUX0NBU0VfUC4g
SXQgYWxzbyB2ZXJpZmllcyB0aGF0IHRoZSB0ZXN0J3MKLS8vIGZpeHR1cmUgY29uc3RydWN0b3Is
IFNldFVwKCksIGFuZCBUZWFyRG93bigpIGhhdmUgcnVuIGFuZCBoYXZlIGJlZW4KLS8vIHN1cHBs
aWVkIHdpdGggdGhlIGNvcnJlY3QgcGFyYW1ldGVycy4KLQotLy8gVGhlIHVzZSBvZiBlbnZpcm9u
bWVudCBvYmplY3QgYWxsb3dzIGRldGVjdGlvbiBvZiB0aGUgY2FzZSB3aGVyZSBubyB0ZXN0Ci0v
LyBjYXNlIGZ1bmN0aW9uYWxpdHkgaXMgcnVuIGF0IGFsbC4gSW4gdGhpcyBjYXNlIFRlc3RDYXNl
VGVhckRvd24gd2lsbCBub3QKLS8vIGJlIGFibGUgdG8gZGV0ZWN0IG1pc3NpbmcgdGVzdHMsIG5h
dHVyYWxseS4KLXRlbXBsYXRlIDxpbnQga0V4cGVjdGVkQ2FsbHM+Ci1jbGFzcyBUZXN0R2VuZXJh
dGlvbkVudmlyb25tZW50IDogcHVibGljIDo6dGVzdGluZzo6RW52aXJvbm1lbnQgewotIHB1Ymxp
YzoKLSAgc3RhdGljIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQqIEluc3RhbmNlKCkgewotICAg
IHN0YXRpYyBUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50KiBpbnN0YW5jZSA9IG5ldyBUZXN0R2Vu
ZXJhdGlvbkVudmlyb25tZW50OwotICAgIHJldHVybiBpbnN0YW5jZTsKLSAgfQotCi0gIHZvaWQg
Rml4dHVyZUNvbnN0cnVjdG9yRXhlY3V0ZWQoKSB7IGZpeHR1cmVfY29uc3RydWN0b3JfY291bnRf
Kys7IH0KLSAgdm9pZCBTZXRVcEV4ZWN1dGVkKCkgeyBzZXRfdXBfY291bnRfKys7IH0KLSAgdm9p
ZCBUZWFyRG93bkV4ZWN1dGVkKCkgeyB0ZWFyX2Rvd25fY291bnRfKys7IH0KLSAgdm9pZCBUZXN0
Qm9keUV4ZWN1dGVkKCkgeyB0ZXN0X2JvZHlfY291bnRfKys7IH0KLQotICB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKSB7Ci0gICAgLy8gSWYgYWxsIE11bHRpcGxlVGVzdEdlbmVyYXRpb25UZXN0IHRl
c3RzIGhhdmUgYmVlbiBkZS1zZWxlY3RlZAotICAgIC8vIGJ5IHRoZSBmaWx0ZXIgZmxhZywgdGhl
IGZvbGxvd2luZyBjaGVja3MgbWFrZSBubyBzZW5zZS4KLSAgICBib29sIHBlcmZvcm1fY2hlY2sg
PSBmYWxzZTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwga0V4cGVjdGVkQ2FsbHM7ICsraSkg
ewotICAgICAgTWVzc2FnZSBtc2c7Ci0gICAgICBtc2cgPDwgIlRlc3RzRXhwYW5kZWRBbmRSdW4v
IiA8PCBpOwotICAgICAgaWYgKFVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0Y2hlc1Rlc3QoCi0g
ICAgICAgICAgICAgIlRlc3RFeHBhbnNpb25Nb2R1bGUvTXVsdGlwbGVUZXN0R2VuZXJhdGlvblRl
c3QiLAotICAgICAgICAgICAgICBtc2cuR2V0U3RyaW5nKCkuY19zdHIoKSkpIHsKLSAgICAgICAg
cGVyZm9ybV9jaGVjayA9IHRydWU7Ci0gICAgICB9Ci0gICAgfQotICAgIGlmIChwZXJmb3JtX2No
ZWNrKSB7Ci0gICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2FsbHMsIGZpeHR1cmVfY29uc3RydWN0
b3JfY291bnRfKQotICAgICAgICAgIDw8ICJGaXh0dXJlIGNvbnN0cnVjdG9yIG9mIFBhcmFtVGVz
dEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZSAiCi0gICAgICAgICAgPDwgImhhcyBub3QgYmVlbiBy
dW4gYXMgZXhwZWN0ZWQuIjsKLSAgICAgIEVYUEVDVF9FUShrRXhwZWN0ZWRDYWxscywgc2V0X3Vw
X2NvdW50XykKLSAgICAgICAgICA8PCAiRml4dHVyZSBTZXRVcCBtZXRob2Qgb2YgUGFyYW1UZXN0
R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlICIKLSAgICAgICAgICA8PCAiaGFzIG5vdCBiZWVuIHJ1
biBhcyBleHBlY3RlZC4iOwotICAgICAgRVhQRUNUX0VRKGtFeHBlY3RlZENhbGxzLCB0ZWFyX2Rv
d25fY291bnRfKQotICAgICAgICAgIDw8ICJGaXh0dXJlIFRlYXJEb3duIG1ldGhvZCBvZiBQYXJh
bVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgotICAgICAgICAgIDw8ICJoYXMgbm90IGJl
ZW4gcnVuIGFzIGV4cGVjdGVkLiI7Ci0gICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2FsbHMsIHRl
c3RfYm9keV9jb3VudF8pCi0gICAgICAgICAgPDwgIlRlc3QgaW4gUGFyYW1UZXN0R2VuZXJhdGlv
blRlc3QgdGVzdCBjYXNlICIKLSAgICAgICAgICA8PCAiaGFzIG5vdCBiZWVuIHJ1biBhcyBleHBl
Y3RlZC4iOwotICAgIH0KLSAgfQotIHByaXZhdGU6Ci0gIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1l
bnQoKSA6IGZpeHR1cmVfY29uc3RydWN0b3JfY291bnRfKDApLCBzZXRfdXBfY291bnRfKDApLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWFyX2Rvd25fY291bnRfKDApLCB0ZXN0
X2JvZHlfY291bnRfKDApIHt9Ci0KLSAgaW50IGZpeHR1cmVfY29uc3RydWN0b3JfY291bnRfOwot
ICBpbnQgc2V0X3VwX2NvdW50XzsKLSAgaW50IHRlYXJfZG93bl9jb3VudF87Ci0gIGludCB0ZXN0
X2JvZHlfY291bnRfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdEdl
bmVyYXRpb25FbnZpcm9ubWVudCk7Ci19OwotCi1jb25zdCBpbnQgdGVzdF9nZW5lcmF0aW9uX3Bh
cmFtc1tdID0gezM2LCA0MiwgNzJ9OwotCi1jbGFzcyBUZXN0R2VuZXJhdGlvblRlc3QgOiBwdWJs
aWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsKLSBwdWJsaWM6Ci0gIGVudW0gewotICAgIFBBUkFNRVRF
Ul9DT1VOVCA9Ci0gICAgICAgIHNpemVvZih0ZXN0X2dlbmVyYXRpb25fcGFyYW1zKS9zaXplb2Yo
dGVzdF9nZW5lcmF0aW9uX3BhcmFtc1swXSkKLSAgfTsKLQotICB0eXBlZGVmIFRlc3RHZW5lcmF0
aW9uRW52aXJvbm1lbnQ8UEFSQU1FVEVSX0NPVU5UPiBFbnZpcm9ubWVudDsKLQotICBUZXN0R2Vu
ZXJhdGlvblRlc3QoKSB7Ci0gICAgRW52aXJvbm1lbnQ6Okluc3RhbmNlKCktPkZpeHR1cmVDb25z
dHJ1Y3RvckV4ZWN1dGVkKCk7Ci0gICAgY3VycmVudF9wYXJhbWV0ZXJfID0gR2V0UGFyYW0oKTsK
LSAgfQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgRW52aXJvbm1lbnQ6Okluc3RhbmNl
KCktPlNldFVwRXhlY3V0ZWQoKTsKLSAgICBFWFBFQ1RfRVEoY3VycmVudF9wYXJhbWV0ZXJfLCBH
ZXRQYXJhbSgpKTsKLSAgfQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgRW52aXJv
bm1lbnQ6Okluc3RhbmNlKCktPlRlYXJEb3duRXhlY3V0ZWQoKTsKLSAgICBFWFBFQ1RfRVEoY3Vy
cmVudF9wYXJhbWV0ZXJfLCBHZXRQYXJhbSgpKTsKLSAgfQotCi0gIHN0YXRpYyB2b2lkIFNldFVw
VGVzdENhc2UoKSB7Ci0gICAgYm9vbCBhbGxfdGVzdHNfaW5fdGVzdF9jYXNlX3NlbGVjdGVkID0g
dHJ1ZTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgUEFSQU1FVEVSX0NPVU5UOyArK2kpIHsK
LSAgICAgIE1lc3NhZ2UgdGVzdF9uYW1lOwotICAgICAgdGVzdF9uYW1lIDw8ICJUZXN0c0V4cGFu
ZGVkQW5kUnVuLyIgPDwgaTsKLSAgICAgIGlmICggIVVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0
Y2hlc1Rlc3QoCi0gICAgICAgICAgICAgICAgIlRlc3RFeHBhbnNpb25Nb2R1bGUvTXVsdGlwbGVU
ZXN0R2VuZXJhdGlvblRlc3QiLAotICAgICAgICAgICAgICAgIHRlc3RfbmFtZS5HZXRTdHJpbmco
KSkpIHsKLSAgICAgICAgYWxsX3Rlc3RzX2luX3Rlc3RfY2FzZV9zZWxlY3RlZCA9IGZhbHNlOwot
ICAgICAgfQotICAgIH0KLSAgICBFWFBFQ1RfVFJVRShhbGxfdGVzdHNfaW5fdGVzdF9jYXNlX3Nl
bGVjdGVkKQotICAgICAgICA8PCAiV2hlbiBydW5uaW5nIHRoZSBUZXN0R2VuZXJhdGlvblRlc3Qg
dGVzdCBjYXNlIGFsbCBvZiBpdHMgdGVzdHNcbiIKLSAgICAgICAgPDwgIm11c3QgYmUgc2VsZWN0
ZWQgYnkgdGhlIGZpbHRlciBmbGFnIGZvciB0aGUgdGVzdCBjYXNlIHRvIHBhc3MuXG4iCi0gICAg
ICAgIDw8ICJJZiBub3QgYWxsIG9mIHRoZW0gYXJlIGVuYWJsZWQsIHdlIGNhbid0IHJlbGlhYmx5
IGNvbmNsdWRlXG4iCi0gICAgICAgIDw8ICJ0aGF0IHRoZSBjb3JyZWN0IG51bWJlciBvZiB0ZXN0
cyBoYXZlIGJlZW4gZ2VuZXJhdGVkLiI7Ci0KLSAgICBjb2xsZWN0ZWRfcGFyYW1ldGVyc18uY2xl
YXIoKTsKLSAgfQotCi0gIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7Ci0gICAgdmVj
dG9yPGludD4gZXhwZWN0ZWRfdmFsdWVzKHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMgKyBQQVJBTUVU
RVJfQ09VTlQpOwotICAgIC8vIFRlc3QgZXhlY3V0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVk
IGJ5IEdvb2dsZSBUZXN0LAotICAgIC8vIHNvIHRoZSBvcmRlciBvZiB2YWx1ZXMgaW4gY29sbGVj
dGVkX3BhcmFtZXRlcnNfIGNhbiBiZQotICAgIC8vIGRpZmZlcmVudCBhbmQgd2UgaGF2ZSB0byBz
b3J0IHRvIGNvbXBhcmUuCi0gICAgc29ydChleHBlY3RlZF92YWx1ZXMuYmVnaW4oKSwgZXhwZWN0
ZWRfdmFsdWVzLmVuZCgpKTsKLSAgICBzb3J0KGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5iZWdpbigp
LCBjb2xsZWN0ZWRfcGFyYW1ldGVyc18uZW5kKCkpOwotCi0gICAgRVhQRUNUX1RSVUUoY29sbGVj
dGVkX3BhcmFtZXRlcnNfID09IGV4cGVjdGVkX3ZhbHVlcyk7Ci0gIH0KLSBwcm90ZWN0ZWQ6Ci0g
IGludCBjdXJyZW50X3BhcmFtZXRlcl87Ci0gIHN0YXRpYyB2ZWN0b3I8aW50PiBjb2xsZWN0ZWRf
cGFyYW1ldGVyc187Ci0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJ
R05fKFRlc3RHZW5lcmF0aW9uVGVzdCk7Ci19OwotdmVjdG9yPGludD4gVGVzdEdlbmVyYXRpb25U
ZXN0Ojpjb2xsZWN0ZWRfcGFyYW1ldGVyc187Ci0KLVRFU1RfUChUZXN0R2VuZXJhdGlvblRlc3Qs
IFRlc3RzRXhwYW5kZWRBbmRSdW4pIHsKLSAgRW52aXJvbm1lbnQ6Okluc3RhbmNlKCktPlRlc3RC
b2R5RXhlY3V0ZWQoKTsKLSAgRVhQRUNUX0VRKGN1cnJlbnRfcGFyYW1ldGVyXywgR2V0UGFyYW0o
KSk7Ci0gIGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5wdXNoX2JhY2soR2V0UGFyYW0oKSk7Ci19Ci1J
TlNUQU5USUFURV9URVNUX0NBU0VfUChUZXN0RXhwYW5zaW9uTW9kdWxlLCBUZXN0R2VuZXJhdGlv
blRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXNJbih0ZXN0X2dlbmVyYXRpb25f
cGFyYW1zKSk7Ci0KLS8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSBlbGVtZW50IHNlcXVl
bmNlICh0aGlyZCBwYXJhbWV0ZXIgb2YKLS8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKSBpcyBl
dmFsdWF0ZWQgaW4gSW5pdEdvb2dsZVRlc3QoKSBhbmQgbmVpdGhlciBhdAotLy8gdGhlIGNhbGwg
c2l0ZSBvZiBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBub3IgaW4gUlVOX0FMTF9URVNUUygpLiAg
Rm9yCi0vLyB0aGF0LCB3ZSBkZWNsYXJlIHBhcmFtX3ZhbHVlXyB0byBiZSBhIHN0YXRpYyBtZW1i
ZXIgb2YKLS8vIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0IGFuZCBpbml0aWFsaXplIGl0IHRvIDAu
ICBXZSBzZXQgaXQgdG8gMSBpbgotLy8gbWFpbigpLCBqdXN0IGJlZm9yZSBpbnZvY2F0aW9uIG9m
IEluaXRHb29nbGVUZXN0KCkuICBBZnRlciBjYWxsaW5nCi0vLyBJbml0R29vZ2xlVGVzdCgpLCB3
ZSBzZXQgdGhlIHZhbHVlIHRvIDIuICBJZiB0aGUgc2VxdWVuY2UgaXMgZXZhbHVhdGVkCi0vLyBi
ZWZvcmUgb3IgYWZ0ZXIgSW5pdEdvb2dsZVRlc3QsIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIHdp
bGwgY3JlYXRlIGEKLS8vIHRlc3Qgd2l0aCBwYXJhbWV0ZXIgb3RoZXIgdGhhbiAxLCBhbmQgdGhl
IHRlc3QgYm9keSB3aWxsIGZhaWwgdGhlCi0vLyBhc3NlcnRpb24uCi1jbGFzcyBHZW5lcmF0b3JF
dmFsdWF0aW9uVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4gewotIHB1YmxpYzoKLSAg
c3RhdGljIGludCBwYXJhbV92YWx1ZSgpIHsgcmV0dXJuIHBhcmFtX3ZhbHVlXzsgfQotICBzdGF0
aWMgdm9pZCBzZXRfcGFyYW1fdmFsdWUoaW50IHBhcmFtX3ZhbHVlKSB7IHBhcmFtX3ZhbHVlXyA9
IHBhcmFtX3ZhbHVlOyB9Ci0KLSBwcml2YXRlOgotICBzdGF0aWMgaW50IHBhcmFtX3ZhbHVlXzsK
LX07Ci1pbnQgR2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnBhcmFtX3ZhbHVlXyA9IDA7Ci0KLVRF
U1RfUChHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCwgR2VuZXJhdG9yc0V2YWx1YXRlZEluTWFpbikg
ewotICBFWFBFQ1RfRVEoMSwgR2V0UGFyYW0oKSk7Ci19Ci1JTlNUQU5USUFURV9URVNUX0NBU0Vf
UChHZW5FdmFsTW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdG9yRXZhbHVh
dGlvblRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoR2VuZXJhdG9yRXZhbHVh
dGlvblRlc3Q6OnBhcmFtX3ZhbHVlKCkpKTsKLQotLy8gVGVzdHMgdGhhdCBnZW5lcmF0b3JzIGRl
ZmluZWQgaW4gYSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdCBhcmUKLS8vIGZ1bmN0aW9uYWwu
IEdlbmVyYXRvciBleHRlcm5fZ2VuIGlzIGRlZmluZWQgaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0
Mi5jYy4KLWV4dGVybiBQYXJhbUdlbmVyYXRvcjxpbnQ+IGV4dGVybl9nZW47Ci1jbGFzcyBFeHRl
cm5hbEdlbmVyYXRvclRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHt9OwotVEVTVF9Q
KEV4dGVybmFsR2VuZXJhdG9yVGVzdCwgRXh0ZXJuYWxHZW5lcmF0b3IpIHsKLSAgLy8gU2VxdWVu
Y2UgcHJvZHVjZWQgYnkgZXh0ZXJuX2dlbiBjb250YWlucyBvbmx5IGEgc2luZ2xlIHZhbHVlCi0g
IC8vIHdoaWNoIHdlIHZlcmlmeSBoZXJlLgotICBFWFBFQ1RfRVEoR2V0UGFyYW0oKSwgMzMpOwot
fQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoRXh0ZXJuYWxHZW5lcmF0b3JNb2R1bGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBFeHRlcm5hbEdlbmVyYXRvclRlc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBleHRlcm5fZ2VuKTsKLQotLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQg
dGVzdCBjYXNlIGNhbiBiZSBkZWZpbmVkIGluIG9uZSB0cmFuc2xhdGlvbgotLy8gdW5pdCBhbmQg
aW5zdGFudGlhdGVkIGluIGFub3RoZXIuIFRoaXMgdGVzdCB3aWxsIGJlIGluc3RhbnRpYXRlZCBp
bgotLy8gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0Mi5jYy4gRXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVz
dCBmaXh0dXJlIGNsYXNzIGlzCi0vLyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5o
LgotVEVTVF9QKEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3QsIElzTXVsdGlwbGVPZjMzKSB7Ci0g
IEVYUEVDVF9FUSgwLCBHZXRQYXJhbSgpICUgMzMpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgcGFy
YW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGluc3RhbnRpYXRlZCB3aXRoIG11bHRpcGxlCi0v
LyBnZW5lcmF0b3JzLgotY2xhc3MgTXVsdGlwbGVJbnN0YW50aWF0aW9uVGVzdCA6IHB1YmxpYyBU
ZXN0V2l0aFBhcmFtPGludD4ge307Ci1URVNUX1AoTXVsdGlwbGVJbnN0YW50aWF0aW9uVGVzdCwg
QWxsb3dzTXVsdGlwbGVJbnN0YW5jZXMpIHsKLX0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNl
cXVlbmNlMSwgTXVsdGlwbGVJbnN0YW50aWF0aW9uVGVzdCwgVmFsdWVzKDEsIDIpKTsKLUlOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMiwgTXVsdGlwbGVJbnN0YW50aWF0aW9uVGVzdCwg
UmFuZ2UoMywgNSkpOwotCi0vLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2Ug
Y2FuIGJlIGluc3RhbnRpYXRlZAotLy8gaW4gbXVsdGlwbGUgdHJhbnNsYXRpb24gdW5pdHMuIFRo
aXMgdGVzdCB3aWxsIGJlIGluc3RhbnRpYXRlZAotLy8gaGVyZSBhbmQgaW4gZ3Rlc3QtcGFyYW0t
dGVzdF90ZXN0Mi5jYy4KLS8vIEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYXRpb25Vbml0
c1Rlc3QgZml4dHVyZSBjbGFzcwotLy8gaXMgZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rl
c3QuaC4KLVRFU1RfUChJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3Qs
IElzTXVsdGlwbGVPZjQyKSB7Ci0gIEVYUEVDVF9FUSgwLCBHZXRQYXJhbSgpICUgNDIpOwotfQot
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2UxLAotICAgICAgICAgICAgICAgICAgICAg
ICAgSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsdWVzKDQyLCA0MioyKSk7Ci0KLS8vIFRlc3RzIHRoYXQgZWFjaCBp
dGVyYXRpb24gb2YgcGFyYW1ldGVyaXplZCB0ZXN0IHJ1bnMgaW4gYSBzZXBhcmF0ZSB0ZXN0Ci0v
LyBvYmplY3QuCi1jbGFzcyBTZXBhcmF0ZUluc3RhbmNlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBh
cmFtPGludD4gewotIHB1YmxpYzoKLSAgU2VwYXJhdGVJbnN0YW5jZVRlc3QoKSA6IGNvdW50Xygw
KSB7fQotCi0gIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7Ci0gICAgRVhQRUNUX0dF
KGdsb2JhbF9jb3VudF8sIDIpCi0gICAgICAgIDw8ICJJZiBzb21lIChidXQgbm90IGFsbCkgU2Vw
YXJhdGVJbnN0YW5jZVRlc3QgdGVzdHMgaGF2ZSBiZWVuICIKLSAgICAgICAgPDwgImZpbHRlcmVk
IG91dCB0aGlzIHRlc3Qgd2lsbCBmYWlsLiBNYWtlIHN1cmUgdGhhdCBhbGwgIgotICAgICAgICA8
PCAiR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QgYXJlIHNlbGVjdGVkIG9yIGRlLXNlbGVjdGVkIHRv
Z2V0aGVyICIKLSAgICAgICAgPDwgImJ5IHRoZSB0ZXN0IGZpbHRlci4iOwotICB9Ci0KLSBwcm90
ZWN0ZWQ6Ci0gIGludCBjb3VudF87Ci0gIHN0YXRpYyBpbnQgZ2xvYmFsX2NvdW50XzsKLX07Ci1p
bnQgU2VwYXJhdGVJbnN0YW5jZVRlc3Q6Omdsb2JhbF9jb3VudF8gPSAwOwotCi1URVNUX1AoU2Vw
YXJhdGVJbnN0YW5jZVRlc3QsIFRlc3RzUnVuSW5TZXBhcmF0ZUluc3RhbmNlcykgewotICBFWFBF
Q1RfRVEoMCwgY291bnRfKyspOwotICBnbG9iYWxfY291bnRfKys7Ci19Ci1JTlNUQU5USUFURV9U
RVNUX0NBU0VfUChGb3VyRWxlbVNlcXVlbmNlLCBTZXBhcmF0ZUluc3RhbmNlVGVzdCwgUmFuZ2Uo
MSwgNCkpOwotCi0vLyBUZXN0cyB0aGF0IGFsbCBpbnN0YW50aWF0aW9ucyBvZiBhIHRlc3QgaGF2
ZSBuYW1lZCBhcHByb3ByaWF0ZWx5LiBUZXN0Ci0vLyBkZWZpbmVkIHdpdGggVEVTVF9QKFRlc3RD
YXNlTmFtZSwgVGVzdE5hbWUpIGFuZCBpbnN0YW50aWF0ZWQgd2l0aAotLy8gSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoU2VxdWVuY2VOYW1lLCBUZXN0Q2FzZU5hbWUsIGdlbmVyYXRvcikgbXVzdCBi
ZSBuYW1lZAotLy8gU2VxdWVuY2VOYW1lL1Rlc3RDYXNlTmFtZS5UZXN0TmFtZS9pLCB3aGVyZSBp
IGlzIHRoZSAwLWJhc2VkIGluZGV4IG9mIHRoZQotLy8gc2VxdWVuY2UgZWxlbWVudCB1c2VkIHRv
IGluc3RhbnRpYXRlIHRoZSB0ZXN0LgotY2xhc3MgTmFtaW5nVGVzdCA6IHB1YmxpYyBUZXN0V2l0
aFBhcmFtPGludD4ge307Ci0KLVRFU1RfUChOYW1pbmdUZXN0LCBUZXN0c0FyZU5hbWVkQXBwcm9w
cmlhdGVseSkgewotICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8g
PQotICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3Rf
aW5mbygpOwotCi0gIEVYUEVDVF9TVFJFUSgiWmVyb1RvRml2ZVNlcXVlbmNlL05hbWluZ1Rlc3Qi
LCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOwotCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cg
PDwgIlRlc3RzQXJlTmFtZWRBcHByb3ByaWF0ZWx5LyIgPDwgR2V0UGFyYW0oKTsKLSAgRVhQRUNU
X1NUUkVRKG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpLCB0ZXN0X2luZm8tPm5hbWUoKSk7Ci19Ci0K
LUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFplcm9Ub0ZpdmVTZXF1ZW5jZSwgTmFtaW5nVGVzdCwg
UmFuZ2UoMCwgNSkpOwotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLVRFU1Qo
Q29tcGlsZVRlc3QsIENvbWJpbmVJc0RlZmluZWRPbmx5V2hlbkd0ZXN0SGFzUGFyYW1UZXN0SXNE
ZWZpbmVkKSB7Ci0jaWYgR1RFU1RfSEFTX0NPTUJJTkUgJiYgIUdURVNUX0hBU19QQVJBTV9URVNU
Ci0gIEZBSUwoKSA8PCAiR1RFU1RfSEFTX0NPTUJJTkUgaXMgZGVmaW5lZCB3aGlsZSBHVEVTVF9I
QVNfUEFSQU1fVEVTVCBpcyBub3RcbiIKLSNlbmRpZgotfQotCi1pbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqKmFyZ3YpIHsKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotICAvLyBVc2VkIGluIFRl
c3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UuCi0gIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChU
ZXN0R2VuZXJhdGlvblRlc3Q6OkVudmlyb25tZW50OjpJbnN0YW5jZSgpKTsKLSAgLy8gVXNlZCBp
biBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCB0ZXN0IGNhc2UuIFRlc3RzIHRoYXQgdGhlIHVwZGF0
ZWQgdmFsdWUKLSAgLy8gd2lsbCBiZSBwaWNrZWQgdXAgZm9yIGluc3RhbnRpYXRpbmcgdGVzdHMg
aW4gR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QuCi0gIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0Ojpz
ZXRfcGFyYW1fdmFsdWUoMSk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLSAg
Ojp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSNpZiBHVEVTVF9IQVNf
UEFSQU1fVEVTVAotICAvLyBVc2VkIGluIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0IHRlc3QgY2Fz
ZS4gVGVzdHMgdGhhdCB2YWx1ZSB1cGRhdGVkCi0gIC8vIGhlcmUgd2lsbCBOT1QgYmUgdXNlZCBm
b3IgaW5zdGFudGlhdGluZyB0ZXN0cyBpbgotICAvLyBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdC4K
LSAgR2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnNldF9wYXJhbV92YWx1ZSgyKTsKLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0
X3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90
ZXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3Zjk0OTM2MTM3ZGZjNWYzZjJk
NTdmYTQwZGNhZjdhMTVjYjZiNWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0
X3Rlc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4
LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8v
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3JzOiB2bGFkbEBnb29nbGUu
Y29tIChWbGFkIExvc2V2KQotLy8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3Jr
IChHb29nbGUgVGVzdCkKLS8vCi0vLyBUaGlzIGhlYWRlciBmaWxlIHByb3ZpZGVzIGNsYXNzZXMg
YW5kIGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkKLS8vIGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0
IGl0c2VsZi4KLQotI2lmbmRlZiBHVEVTVF9URVNUX0dURVNUX1BBUkFNX1RFU1RfVEVTVF9IXwot
I2RlZmluZSBHVEVTVF9URVNUX0dURVNUX1BBUkFNX1RFU1RfVEVTVF9IXwotCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLS8vIFRlc3QgZml4
dHVyZSBmb3IgdGVzdGluZyBkZWZpbml0aW9uIGFuZCBpbnN0YW50aWF0aW9uIG9mIGEgdGVzdAot
Ly8gaW4gc2VwYXJhdGUgdHJhbnNsYXRpb24gdW5pdHMuCi1jbGFzcyBFeHRlcm5hbEluc3RhbnRp
YXRpb25UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHt9OwotCi0v
LyBUZXN0IGZpeHR1cmUgZm9yIHRlc3RpbmcgaW5zdGFudGlhdGlvbiBvZiBhIHRlc3QgaW4gbXVs
dGlwbGUKLS8vIHRyYW5zbGF0aW9uIHVuaXRzLgotY2xhc3MgSW5zdGFudGlhdGlvbkluTXVsdGlw
bGVUcmFuc2xhaW9uVW5pdHNUZXN0Ci0gICAgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBh
cmFtPGludD4ge307Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotI2VuZGlm
ICAvLyBHVEVTVF9URVNUX0dURVNUX1BBUkFNX1RFU1RfVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wb3J0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzcyNTg2MDJmYTVjZjVhNzc5OTQ3Y2Q0MjdlMjBlOTA5ZmM5MjU4ZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDEw
MTggKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0Ogot
Ly8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0v
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0v
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ly8KLS8vIEF1dGhvcnM6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpLCB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRoaXMgZmlsZSB0ZXN0cyB0aGUgaW50ZXJuYWwg
Y3Jvc3MtcGxhdGZvcm0gc3VwcG9ydCB1dGlsaXRpZXMuCi0KLSNpbmNsdWRlIDxndGVzdC9pbnRl
cm5hbC9ndGVzdC1wb3J0Lmg+Ci0KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jaWYgR1RFU1RfT1Nf
TUFDCi0jaW5jbHVkZSA8dGltZS5oPgotI2VuZGlmICAvLyBHVEVTVF9PU19NQUMKLQotI2luY2x1
ZGUgPHV0aWxpdHk+ICAvLyBGb3Igc3RkOjpwYWlyIGFuZCBzdGQ6Om1ha2VfcGFpci4KLQotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+Ci0KLS8v
IEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBU
ZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRl
cm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBl
cnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRh
bGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8gaGlzIGNvZGUuCi0jZGVm
aW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFs
LWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi11c2luZyBzdGQ6Om1ha2Vf
cGFpcjsKLXVzaW5nIHN0ZDo6cGFpcjsKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNl
IGludGVybmFsIHsKLQotLy8gVGVzdHMgdGhhdCB0aGUgZWxlbWVudF90eXBlIHR5cGVkZWYgaXMg
YXZhaWxhYmxlIGluIHNjb3BlZF9wdHIgYW5kIHJlZmVycwotLy8gdG8gdGhlIHBhcmFtZXRlciB0
eXBlLgotVEVTVChTY29wZWRQdHJUZXN0LCBEZWZpbmVzRWxlbWVudFR5cGUpIHsKLSAgU3RhdGlj
QXNzZXJ0VHlwZUVxPGludCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVkX3B0cjxpbnQ+Ojpl
bGVtZW50X3R5cGU+KCk7Ci19Ci0KLS8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEltcGxlbWVu
dCBUSEUgUkVTVCBvZiBzY29wZWRfcHRyIHRlc3RzLgotCi1URVNUKEd0ZXN0Q2hlY2tTeW50YXhU
ZXN0LCBCZWhhdmVzTGlrZUFTaW5nbGVTdGF0ZW1lbnQpIHsKLSAgaWYgKEFsd2F5c0ZhbHNlKCkp
Ci0gICAgR1RFU1RfQ0hFQ0tfKGZhbHNlKSA8PCAiVGhpcyBzaG91bGQgbmV2ZXIgYmUgZXhlY3V0
ZWQ7ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJJdCdzIGEgY29tcGlsYXRpb24gdGVz
dCBvbmx5LiI7Ci0KLSAgaWYgKEFsd2F5c1RydWUoKSkKLSAgICBHVEVTVF9DSEVDS18odHJ1ZSk7
Ci0gIGVsc2UKLSAgICA7ICAvLyBOT0xJTlQKLQotICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAgICA7
ICAvLyBOT0xJTlQKLSAgZWxzZQotICAgIEdURVNUX0NIRUNLXyh0cnVlKSA8PCAiIjsKLX0KLQot
VEVTVChHdGVzdENoZWNrU3ludGF4VGVzdCwgV29ya3NXaXRoU3dpdGNoKSB7Ci0gIHN3aXRjaCAo
MCkgewotICAgIGNhc2UgMToKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBHVEVT
VF9DSEVDS18odHJ1ZSk7Ci0gIH0KLQotICBzd2l0Y2goMCkKLSAgICBjYXNlIDA6Ci0gICAgICBH
VEVTVF9DSEVDS18odHJ1ZSkgPDwgIkNoZWNrIGZhaWxlZCBpbiBzd2l0Y2ggY2FzZSI7Ci19Ci0K
LSNpZiBHVEVTVF9PU19NQUMKLXZvaWQqIFRocmVhZEZ1bmModm9pZCogZGF0YSkgewotICBwdGhy
ZWFkX211dGV4X3QqIG11dGV4ID0gc3RhdGljX2Nhc3Q8cHRocmVhZF9tdXRleF90Kj4oZGF0YSk7
Ci0gIHB0aHJlYWRfbXV0ZXhfbG9jayhtdXRleCk7Ci0gIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKG11
dGV4KTsKLSAgcmV0dXJuIE5VTEw7Ci19Ci0KLVRFU1QoR2V0VGhyZWFkQ291bnRUZXN0LCBSZXR1
cm5zQ29ycmVjdFZhbHVlKSB7Ci0gIEVYUEVDVF9FUSgxVSwgR2V0VGhyZWFkQ291bnQoKSk7Ci0g
IHB0aHJlYWRfbXV0ZXhfdCBtdXRleDsKLSAgcHRocmVhZF9hdHRyX3QgIGF0dHI7Ci0gIHB0aHJl
YWRfdCAgICAgICB0aHJlYWRfaWQ7Ci0KLSAgLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogdHVy
biBtdXRleCBpbnRvIGludGVybmFsOjpNdXRleCBmb3IgYXV0b21hdGljCi0gIC8vIGRlc3RydWN0
aW9uLgotICBwdGhyZWFkX211dGV4X2luaXQoJm11dGV4LCBOVUxMKTsKLSAgcHRocmVhZF9tdXRl
eF9sb2NrKCZtdXRleCk7Ci0gIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0dHJfaW5pdCgmYXR0cikp
OwotICBBU1NFUlRfRVEoMCwgcHRocmVhZF9hdHRyX3NldGRldGFjaHN0YXRlKCZhdHRyLCBQVEhS
RUFEX0NSRUFURV9KT0lOQUJMRSkpOwotCi0gIGNvbnN0IGludCBzdGF0dXMgPSBwdGhyZWFkX2Ny
ZWF0ZSgmdGhyZWFkX2lkLCAmYXR0ciwgJlRocmVhZEZ1bmMsICZtdXRleCk7Ci0gIEFTU0VSVF9F
USgwLCBwdGhyZWFkX2F0dHJfZGVzdHJveSgmYXR0cikpOwotICBBU1NFUlRfRVEoMCwgc3RhdHVz
KTsKLSAgRVhQRUNUX0VRKDJVLCBHZXRUaHJlYWRDb3VudCgpKTsKLSAgcHRocmVhZF9tdXRleF91
bmxvY2soJm11dGV4KTsKLQotICB2b2lkKiBkdW1teTsKLSAgQVNTRVJUX0VRKDAsIHB0aHJlYWRf
am9pbih0aHJlYWRfaWQsICZkdW1teSkpOwotCi0gIC8vIE1hY09TIFggbWF5IG5vdCBpbW1lZGlh
dGVseSByZXBvcnQgdGhlIHVwZGF0ZWQgdGhyZWFkIGNvdW50IGFmdGVyCi0gIC8vIGpvaW5pbmcg
YSB0aHJlYWQsIGNhdXNpbmcgZmxha2luZXNzIGluIHRoaXMgdGVzdC4gVG8gY291bnRlciB0aGF0
LCB3ZQotICAvLyB3YWl0IGZvciB1cCB0byAuNSBzZWNvbmRzIGZvciB0aGUgT1MgdG8gcmVwb3J0
IHRoZSBjb3JyZWN0IHZhbHVlLgotICBmb3IgKGludCBpID0gMDsgaSA8IDU7ICsraSkgewotICAg
IGlmIChHZXRUaHJlYWRDb3VudCgpID09IDEpCi0gICAgICBicmVhazsKLQotICAgIFNsZWVwTWls
bGlzZWNvbmRzKDEwMCk7Ci0gIH0KLSAgRVhQRUNUX0VRKDFVLCBHZXRUaHJlYWRDb3VudCgpKTsK
LSAgcHRocmVhZF9tdXRleF9kZXN0cm95KCZtdXRleCk7Ci19Ci0jZWxzZQotVEVTVChHZXRUaHJl
YWRDb3VudFRlc3QsIFJldHVybnNaZXJvV2hlblVuYWJsZVRvQ291bnRUaHJlYWRzKSB7Ci0gIEVY
UEVDVF9FUSgwVSwgR2V0VGhyZWFkQ291bnQoKSk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX09TX01B
QwotCi1URVNUKEd0ZXN0Q2hlY2tEZWF0aFRlc3QsIERpZXNXaXRoQ29ycmVjdE91dHB1dE9uRmFp
bHVyZSkgewotICBjb25zdCBib29sIGFfZmFsc2VfY29uZGl0aW9uID0gZmFsc2U7Ci0gIGNvbnN0
IGNoYXIgcmVnZXhbXSA9Ci0jaWZkZWYgX01TQ19WRVIKLSAgICAgImd0ZXN0LXBvcnRfdGVzdFxc
LmNjXFwoXFxkK1xcKToiCi0jZWxzZQotICAgICAiZ3Rlc3QtcG9ydF90ZXN0XFwuY2M6WzAtOV0r
IgotI2VuZGlmICAvLyBfTVNDX1ZFUgotICAgICAiLiphX2ZhbHNlX2NvbmRpdGlvbi4qRXh0cmEg
aW5mby4qIjsKLQotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKEdURVNUX0NIRUNLXyhhX2Zh
bHNlX2NvbmRpdGlvbikgPDwgIkV4dHJhIGluZm8iLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlZ2V4KTsKLX0KLQotI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLVRFU1QoR3Rlc3RD
aGVja0RlYXRoVGVzdCwgTGl2ZXNTaWxlbnRseU9uU3VjY2VzcykgewotICBFWFBFQ1RfRVhJVCh7
Ci0gICAgICBHVEVTVF9DSEVDS18odHJ1ZSkgPDwgIkV4dHJhIGluZm8iOwotICAgICAgOjpzdGQ6
OmNlcnIgPDwgIlN1Y2Nlc3NcbiI7Ci0gICAgICBleGl0KDApOyB9LAotICAgICAgOjp0ZXN0aW5n
OjpFeGl0ZWRXaXRoQ29kZSgwKSwgIlN1Y2Nlc3MiKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9I
QVNfREVBVEhfVEVTVAotCi0jaWYgR1RFU1RfVVNFU19QT1NJWF9SRQotCi0jaWYgR1RFU1RfSEFT
X1RZUEVEX1RFU1QKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFN0cj4KLWNsYXNzIFJFVGVzdCA6IHB1
YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307Ci0KLS8vIERlZmluZXMgU3RyaW5nVHlwZXMgYXMgdGhl
IGxpc3Qgb2YgYWxsIHN0cmluZyB0eXBlcyB0aGF0IGNsYXNzIFJFCi0vLyBzdXBwb3J0cy4KLXR5
cGVkZWYgdGVzdGluZzo6VHlwZXM8Ci0gICAgOjpzdGQ6OnN0cmluZywKLSNpZiBHVEVTVF9IQVNf
R0xPQkFMX1NUUklORwotICAgIDo6c3RyaW5nLAotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFM
X1NUUklORwotICAgIGNvbnN0IGNoYXIqPiBTdHJpbmdUeXBlczsKLQotVFlQRURfVEVTVF9DQVNF
KFJFVGVzdCwgU3RyaW5nVHlwZXMpOwotCi0vLyBUZXN0cyBSRSdzIGltcGxpY2l0IGNvbnN0cnVj
dG9ycy4KLVRZUEVEX1RFU1QoUkVUZXN0LCBJbXBsaWNpdENvbnN0cnVjdG9yV29ya3MpIHsKLSAg
Y29uc3QgUkUgZW1wdHkoVHlwZVBhcmFtKCIiKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgZW1wdHku
cGF0dGVybigpKTsKLQotICBjb25zdCBSRSBzaW1wbGUoVHlwZVBhcmFtKCJoZWxsbyIpKTsKLSAg
RVhQRUNUX1NUUkVRKCJoZWxsbyIsIHNpbXBsZS5wYXR0ZXJuKCkpOwotCi0gIGNvbnN0IFJFIG5v
cm1hbChUeXBlUGFyYW0oIi4qKFxcdyspIikpOwotICBFWFBFQ1RfU1RSRVEoIi4qKFxcdyspIiwg
bm9ybWFsLnBhdHRlcm4oKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUkUncyBjb25zdHJ1Y3RvcnMg
cmVqZWN0IGludmFsaWQgcmVndWxhciBleHByZXNzaW9ucy4KLVRZUEVEX1RFU1QoUkVUZXN0LCBS
ZWplY3RzSW52YWxpZFJlZ2V4KSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBj
b25zdCBSRSBpbnZhbGlkKFR5cGVQYXJhbSgiPyIpKTsKLSAgfSwgIlwiP1wiIGlzIG5vdCBhIHZh
bGlkIFBPU0lYIEV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbi4iKTsKLX0KLQotLy8gVGVzdHMg
UkU6OkZ1bGxNYXRjaCgpLgotVFlQRURfVEVTVChSRVRlc3QsIEZ1bGxNYXRjaFdvcmtzKSB7Ci0g
IGNvbnN0IFJFIGVtcHR5KFR5cGVQYXJhbSgiIikpOwotICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1h
dGNoKFR5cGVQYXJhbSgiIiksIGVtcHR5KSk7Ci0gIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNo
KFR5cGVQYXJhbSgiYSIpLCBlbXB0eSkpOwotCi0gIGNvbnN0IFJFIHJlKFR5cGVQYXJhbSgiYS4q
eiIpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oImF6IiksIHJlKSk7
Ci0gIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJheHl6IiksIHJlKSk7Ci0g
IEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYmF6IiksIHJlKSk7Ci0gIEVY
UEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYXp5IiksIHJlKSk7Ci19Ci0KLS8v
IFRlc3RzIFJFOjpQYXJ0aWFsTWF0Y2goKS4KLVRZUEVEX1RFU1QoUkVUZXN0LCBQYXJ0aWFsTWF0
Y2hXb3JrcykgewotICBjb25zdCBSRSBlbXB0eShUeXBlUGFyYW0oIiIpKTsKLSAgRVhQRUNUX1RS
VUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oIiIpLCBlbXB0eSkpOwotICBFWFBFQ1RfVFJV
RShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiYSIpLCBlbXB0eSkpOwotCi0gIGNvbnN0IFJF
IHJlKFR5cGVQYXJhbSgiYS4qeiIpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChU
eXBlUGFyYW0oImF6IiksIHJlKSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goVHlw
ZVBhcmFtKCJheHl6IiksIHJlKSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goVHlw
ZVBhcmFtKCJiYXoiKSwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBl
UGFyYW0oImF6eSIpLCByZSkpOwotICBFWFBFQ1RfRkFMU0UoUkU6OlBhcnRpYWxNYXRjaChUeXBl
UGFyYW0oInp6YSIpLCByZSkpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNU
Ci0KLSNlbGlmIEdURVNUX1VTRVNfU0lNUExFX1JFCi0KLVRFU1QoSXNJblNldFRlc3QsIE51bENo
YXJJc05vdEluQW55U2V0KSB7Ci0gIEVYUEVDVF9GQUxTRShJc0luU2V0KCdcMCcsICIiKSk7Ci0g
IEVYUEVDVF9GQUxTRShJc0luU2V0KCdcMCcsICJcMCIpKTsKLSAgRVhQRUNUX0ZBTFNFKElzSW5T
ZXQoJ1wwJywgImEiKSk7Ci19Ci0KLVRFU1QoSXNJblNldFRlc3QsIFdvcmtzRm9yTm9uTnVsQ2hh
cnMpIHsKLSAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ2EnLCAiQWIiKSk7Ci0gIEVYUEVDVF9GQUxT
RShJc0luU2V0KCdjJywgIiIpKTsKLQotICBFWFBFQ1RfVFJVRShJc0luU2V0KCdiJywgImJjZCIp
KTsKLSAgRVhQRUNUX1RSVUUoSXNJblNldCgnYicsICJhYiIpKTsKLX0KLQotVEVTVChJc0RpZ2l0
VGVzdCwgSXNGYWxzZUZvck5vbkRpZ2l0KSB7Ci0gIEVYUEVDVF9GQUxTRShJc0RpZ2l0KCdcMCcp
KTsKLSAgRVhQRUNUX0ZBTFNFKElzRGlnaXQoJyAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0RpZ2l0
KCcrJykpOwotICBFWFBFQ1RfRkFMU0UoSXNEaWdpdCgnLScpKTsKLSAgRVhQRUNUX0ZBTFNFKElz
RGlnaXQoJy4nKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0RpZ2l0KCdhJykpOwotfQotCi1URVNUKElz
RGlnaXRUZXN0LCBJc1RydWVGb3JEaWdpdCkgewotICBFWFBFQ1RfVFJVRShJc0RpZ2l0KCcwJykp
OwotICBFWFBFQ1RfVFJVRShJc0RpZ2l0KCcxJykpOwotICBFWFBFQ1RfVFJVRShJc0RpZ2l0KCc1
JykpOwotICBFWFBFQ1RfVFJVRShJc0RpZ2l0KCc5JykpOwotfQotCi1URVNUKElzUHVuY3RUZXN0
LCBJc0ZhbHNlRm9yTm9uUHVuY3QpIHsKLSAgRVhQRUNUX0ZBTFNFKElzUHVuY3QoJ1wwJykpOwot
ICBFWFBFQ1RfRkFMU0UoSXNQdW5jdCgnICcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzUHVuY3QoJ1xu
JykpOwotICBFWFBFQ1RfRkFMU0UoSXNQdW5jdCgnYScpKTsKLSAgRVhQRUNUX0ZBTFNFKElzUHVu
Y3QoJzAnKSk7Ci19Ci0KLVRFU1QoSXNQdW5jdFRlc3QsIElzVHJ1ZUZvclB1bmN0KSB7Ci0gIGZv
ciAoY29uc3QgY2hhciogcCA9ICJeLSFcIiMkJSYnKCkqKywuLzo7PD0+P0BbXFxdX2B7fH1+Ijsg
KnA7IHArKykgewotICAgIEVYUEVDVF9QUkVEMShJc1B1bmN0LCAqcCk7Ci0gIH0KLX0KLQotVEVT
VChJc1JlcGVhdFRlc3QsIElzRmFsc2VGb3JOb25SZXBlYXRDaGFyKSB7Ci0gIEVYUEVDVF9GQUxT
RShJc1JlcGVhdCgnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1JlcGVhdCgnICcpKTsKLSAgRVhQ
RUNUX0ZBTFNFKElzUmVwZWF0KCdhJykpOwotICBFWFBFQ1RfRkFMU0UoSXNSZXBlYXQoJzEnKSk7
Ci0gIEVYUEVDVF9GQUxTRShJc1JlcGVhdCgnLScpKTsKLX0KLQotVEVTVChJc1JlcGVhdFRlc3Qs
IElzVHJ1ZUZvclJlcGVhdENoYXIpIHsKLSAgRVhQRUNUX1RSVUUoSXNSZXBlYXQoJz8nKSk7Ci0g
IEVYUEVDVF9UUlVFKElzUmVwZWF0KCcqJykpOwotICBFWFBFQ1RfVFJVRShJc1JlcGVhdCgnKycp
KTsKLX0KLQotVEVTVChJc1doaXRlU3BhY2VUZXN0LCBJc0ZhbHNlRm9yTm9uV2hpdGVTcGFjZSkg
ewotICBFWFBFQ1RfRkFMU0UoSXNXaGl0ZVNwYWNlKCdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElz
V2hpdGVTcGFjZSgnYScpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV2hpdGVTcGFjZSgnMScpKTsKLSAg
RVhQRUNUX0ZBTFNFKElzV2hpdGVTcGFjZSgnKycpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV2hpdGVT
cGFjZSgnXycpKTsKLX0KLQotVEVTVChJc1doaXRlU3BhY2VUZXN0LCBJc1RydWVGb3JXaGl0ZVNw
YWNlKSB7Ci0gIEVYUEVDVF9UUlVFKElzV2hpdGVTcGFjZSgnICcpKTsKLSAgRVhQRUNUX1RSVUUo
SXNXaGl0ZVNwYWNlKCdcbicpKTsKLSAgRVhQRUNUX1RSVUUoSXNXaGl0ZVNwYWNlKCdccicpKTsK
LSAgRVhQRUNUX1RSVUUoSXNXaGl0ZVNwYWNlKCdcdCcpKTsKLSAgRVhQRUNUX1RSVUUoSXNXaGl0
ZVNwYWNlKCdcdicpKTsKLSAgRVhQRUNUX1RSVUUoSXNXaGl0ZVNwYWNlKCdcZicpKTsKLX0KLQot
VEVTVChJc1dvcmRDaGFyVGVzdCwgSXNGYWxzZUZvck5vbldvcmRDaGFyKSB7Ci0gIEVYUEVDVF9G
QUxTRShJc1dvcmRDaGFyKCdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV29yZENoYXIoJysnKSk7
Ci0gIEVYUEVDVF9GQUxTRShJc1dvcmRDaGFyKCcuJykpOwotICBFWFBFQ1RfRkFMU0UoSXNXb3Jk
Q2hhcignICcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV29yZENoYXIoJ1xuJykpOwotfQotCi1URVNU
KElzV29yZENoYXJUZXN0LCBJc1RydWVGb3JMZXR0ZXIpIHsKLSAgRVhQRUNUX1RSVUUoSXNXb3Jk
Q2hhcignYScpKTsKLSAgRVhQRUNUX1RSVUUoSXNXb3JkQ2hhcignYicpKTsKLSAgRVhQRUNUX1RS
VUUoSXNXb3JkQ2hhcignQScpKTsKLSAgRVhQRUNUX1RSVUUoSXNXb3JkQ2hhcignWicpKTsKLX0K
LQotVEVTVChJc1dvcmRDaGFyVGVzdCwgSXNUcnVlRm9yRGlnaXQpIHsKLSAgRVhQRUNUX1RSVUUo
SXNXb3JkQ2hhcignMCcpKTsKLSAgRVhQRUNUX1RSVUUoSXNXb3JkQ2hhcignMScpKTsKLSAgRVhQ
RUNUX1RSVUUoSXNXb3JkQ2hhcignNycpKTsKLSAgRVhQRUNUX1RSVUUoSXNXb3JkQ2hhcignOScp
KTsKLX0KLQotVEVTVChJc1dvcmRDaGFyVGVzdCwgSXNUcnVlRm9yVW5kZXJzY29yZSkgewotICBF
WFBFQ1RfVFJVRShJc1dvcmRDaGFyKCdfJykpOwotfQotCi1URVNUKElzVmFsaWRFc2NhcGVUZXN0
LCBJc0ZhbHNlRm9yTm9uUHJpbnRhYmxlKSB7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBl
KCdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJ1wwMDcnKSk7Ci19Ci0KLVRF
U1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzRmFsc2VGb3JEaWdpdCkgewotICBFWFBFQ1RfRkFMU0Uo
SXNWYWxpZEVzY2FwZSgnMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJzknKSk7
Ci19Ci0KLVRFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzRmFsc2VGb3JXaGl0ZVNwYWNlKSB7Ci0g
IEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCcgJykpOwotICBFWFBFQ1RfRkFMU0UoSXNWYWxp
ZEVzY2FwZSgnXG4nKSk7Ci19Ci0KLVRFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzRmFsc2VGb3JT
b21lTGV0dGVyKSB7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdhJykpOwotICBFWFBF
Q1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnWicpKTsKLX0KLQotVEVTVChJc1ZhbGlkRXNjYXBlVGVz
dCwgSXNUcnVlRm9yUHVuY3QpIHsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnLicpKTsK
LSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnLScpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxp
ZEVzY2FwZSgnXicpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnJCcpKTsKLSAgRVhQ
RUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnKCcpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2Fw
ZSgnXScpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgneycpKTsKLSAgRVhQRUNUX1RS
VUUoSXNWYWxpZEVzY2FwZSgnfCcpKTsKLX0KLQotVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNU
cnVlRm9yU29tZUxldHRlcikgewotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdkJykpOwot
ICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdEJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlk
RXNjYXBlKCdzJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdTJykpOwotICBFWFBF
Q1RfVFJVRShJc1ZhbGlkRXNjYXBlKCd3JykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBl
KCdXJykpOwotfQotCi1URVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRQdW5jdCkgewot
ICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdcXCcsICdcMCcpKTsKLSAgRVhQ
RUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXFwnLCAnICcpKTsKLSAgRVhQRUNUX0ZB
TFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXycsICcuJykpOwotICBFWFBFQ1RfRkFMU0UoQXRv
bU1hdGNoZXNDaGFyKHRydWUsICcuJywgJ2EnKSk7Ci0KLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNo
ZXNDaGFyKHRydWUsICdcXCcsICdcXCcpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFy
KHRydWUsICdfJywgJ18nKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
KycsICcrJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJy4nLCAnLicp
KTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX2QpIHsKLSAgRVhQRUNU
X0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICdhJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICdkJywgJy4nKSk7Ci0KLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXND
aGFyKHRydWUsICdkJywgJzAnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVl
LCAnZCcsICc5JykpOwotfQotCi1URVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfRCkg
ewotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJzAnKSk7Ci0gIEVY
UEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0QnLCAnOScpKTsKLQotICBFWFBFQ1Rf
VFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0QnLCAnXDAnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0
b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcsICdhJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ0QnLCAnLScpKTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBF
c2NhcGVkX3MpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICdc
MCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICdhJykpOwot
ICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJy4nKSk7Ci0gIEVYUEVD
VF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnOScpKTsKLQotICBFWFBFQ1RfVFJV
RShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnICcpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICdzJywgJ1xuJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ3MnLCAnXHQnKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNj
YXBlZF9TKSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnICcp
KTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICdccicpKTsKLQot
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnXDAnKSk7Ci0gIEVYUEVD
VF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICdhJykpOwotICBFWFBFQ1RfVFJVRShB
dG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnOScpKTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0No
YXJUZXN0LCBFc2NhcGVkX3cpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVl
LCAndycsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycs
ICcrJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJyAnKSk7
Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnXG4nKSk7Ci0KLSAg
RVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJzAnKSk7Ci0gIEVYUEVDVF9U
UlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdiJykpOwotICBFWFBFQ1RfVFJVRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnQycpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXND
aGFyKHRydWUsICd3JywgJ18nKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNj
YXBlZF9XKSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnQScp
KTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICdiJykpOwotICBF
WFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJzknKSk7Ci0gIEVYUEVDVF9G
QUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnXycpKTsKLQotICBFWFBFQ1RfVFJVRShB
dG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnXDAnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAnVycsICcqJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ1cnLCAnXG4nKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBl
ZFdoaXRlU3BhY2UpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZics
ICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZicsICdcbicp
KTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnbicsICdcMCcpKTsKLSAg
RVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnbicsICdccicpKTsKLSAgRVhQRUNU
X0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncicsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncicsICdhJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICd0JywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICd0JywgJ3QnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ3YnLCAnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3Yn
LCAnXGYnKSk7Ci0KLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdmJywgJ1xm
JykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ24nLCAnXG4nKSk7Ci0g
IEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncicsICdccicpKTsKLSAgRVhQRUNU
X1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd0JywgJ1x0JykpOwotICBFWFBFQ1RfVFJVRShB
dG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3YnLCAnXHYnKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXND
aGFyVGVzdCwgVW5lc2NhcGVkRG90KSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIo
ZmFsc2UsICcuJywgJ1xuJykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxz
ZSwgJy4nLCAnXDAnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4n
LCAnLicpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnLicsICdhJykp
OwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICcuJywgJyAnKSk7Ci19Ci0K
LVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgVW5lc2NhcGVkQ2hhcikgewotICBFWFBFQ1RfRkFM
U0UoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnYScsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0
b21NYXRjaGVzQ2hhcihmYWxzZSwgJ2EnLCAnYicpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRj
aGVzQ2hhcihmYWxzZSwgJyQnLCAnYScpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0No
YXIoZmFsc2UsICckJywgJyQnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxz
ZSwgJzUnLCAnNScpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnWics
ICdaJykpOwotfQotCi1URVNUKFZhbGlkYXRlUmVnZXhUZXN0LCBHZW5lcmF0ZXNGYWlsdXJlQW5k
UmV0dXJuc0ZhbHNlRm9ySW52YWxpZCkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NF
UlRfRkFMU0UoVmFsaWRhdGVSZWdleChOVUxMKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICJOVUxMIGlzIG5vdCBhIHZhbGlkIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24iKTsKLSAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoCi0gICAgICBBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgi
YVxcIikpLAotICAgICAgIlN5bnRheCBlcnJvciBhdCBpbmRleCAxIGluIHNpbXBsZSByZWd1bGFy
IGV4cHJlc3Npb24gXCJhXFxcIjogIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VS
VF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJhXFwiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICInXFwnIGNhbm5vdCBhcHBlYXIgYXQgdGhlIGVuZCIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiXFxuXFwiKSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICInXFwnIGNhbm5vdCBhcHBlYXIgYXQgdGhlIGVuZCIpOwotICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiXFxzXFxoYiIpKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZXNjYXBlIHNlcXVlbmNlIFwiXFxo
XCIiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVn
ZXgoIl5eIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJ14nIGNhbiBvbmx5IGFwcGVh
ciBhdCB0aGUgYmVnaW5uaW5nIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9G
QUxTRShWYWxpZGF0ZVJlZ2V4KCIuKl5iIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAi
J14nIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgYmVnaW5uaW5nIik7Ci0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCIkJCIpKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIickJyBjYW4gb25seSBhcHBlYXIgYXQgdGhlIGVuZCIpOwotICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiXiRhIikpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAiJyQnIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgZW5k
Iik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4
KCJhKGIiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInKCcgaXMgdW5zdXBwb3J0ZWQi
KTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgo
ImFiKSIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIicpJyBpcyB1bnN1cHBvcnRlZCIp
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgi
W2FiIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJ1snIGlzIHVuc3VwcG9ydGVkIik7
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJh
ezIiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIneycgaXMgdW5zdXBwb3J0ZWQiKTsK
LSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIj8i
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInPycgY2FuIG9ubHkgZm9sbG93IGEgcmVw
ZWF0YWJsZSB0b2tlbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0Uo
VmFsaWRhdGVSZWdleCgiXioiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInKicgY2Fu
IG9ubHkgZm9sbG93IGEgcmVwZWF0YWJsZSB0b2tlbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiNSorIikpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAiJysnIGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVhdGFibGUgdG9rZW4iKTsKLX0K
LQotVEVTVChWYWxpZGF0ZVJlZ2V4VGVzdCwgUmV0dXJuc1RydWVGb3JWYWxpZCkgewotICBFWFBF
Q1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCIiKSk7Ci0gIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgo
ImEiKSk7Ci0gIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIi4qIikpOwotICBFWFBFQ1RfVFJV
RShWYWxpZGF0ZVJlZ2V4KCJeYV8rIikpOwotICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCJe
YVxcdFxcJj8iKSk7Ci0gIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIjA5KiQiKSk7Ci0gIEVY
UEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIl5aJCIpKTsKLSAgRVhQRUNUX1RSVUUoVmFsaWRhdGVS
ZWdleCgiYVxcXlpcXCRcXChcXClcXHxcXFtcXF1cXHtcXH0iKSk7Ci19Ci0KLVRFU1QoTWF0Y2hS
ZXBldGl0aW9uQW5kUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc0Zvclplcm9Pck9uZSkgewotICBFWFBF
Q1RfRkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICdhJywgJz8nLCAi
YSIsICJiYSIpKTsKLSAgLy8gUmVwZWF0aW5nIG1vcmUgdGhhbiBvbmNlLgotICBFWFBFQ1RfRkFM
U0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICdhJywgJz8nLCAiYiIsICJh
YWIiKSk7Ci0KLSAgLy8gUmVwZWF0aW5nIHplcm8gdGltZXMuCi0gIEVYUEVDVF9UUlVFKE1hdGNo
UmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImIiLCAiYmEiKSk7Ci0g
IC8vIFJlcGVhdGluZyBvbmNlLgotICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdl
eEF0SGVhZChmYWxzZSwgJ2EnLCAnPycsICJiIiwgImFiIikpOwotICBFWFBFQ1RfVFJVRShNYXRj
aFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJyMnLCAnPycsICIuIiwgIiMjIikpOwot
fQotCi1URVNUKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NGb3JaZXJv
T3JNYW55KSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChm
YWxzZSwgJy4nLCAnKicsICJhJCIsICJiYWFiIikpOwotCi0gIC8vIFJlcGVhdGluZyB6ZXJvIHRp
bWVzLgotICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwg
Jy4nLCAnKicsICJiIiwgImJjIikpOwotICAvLyBSZXBlYXRpbmcgb25jZS4KLSAgRVhQRUNUX1RS
VUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJyonLCAiYiIsICJh
YmMiKSk7Ci0gIC8vIFJlcGVhdGluZyBtb3JlIHRoYW4gb25jZS4KLSAgRVhQRUNUX1RSVUUoTWF0
Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQodHJ1ZSwgJ3cnLCAnKicsICItIiwgImFiXzEtZyIp
KTsKLX0KLQotVEVTVChNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZFRlc3QsIFdvcmtzRm9y
T25lT3JNYW55KSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVh
ZChmYWxzZSwgJy4nLCAnKycsICJhJCIsICJiYWFiIikpOwotICAvLyBSZXBlYXRpbmcgemVybyB0
aW1lcy4KLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNl
LCAnLicsICcrJywgImIiLCAiYmMiKSk7Ci0KLSAgLy8gUmVwZWF0aW5nIG9uY2UuCi0gIEVYUEVD
VF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcrJywgImIi
LCAiYWJjIikpOwotICAvLyBSZXBlYXRpbmcgbW9yZSB0aGFuIG9uY2UuCi0gIEVYUEVDVF9UUlVF
KE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKHRydWUsICd3JywgJysnLCAiLSIsICJhYl8x
LWciKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIFJldHVybnNUcnVlRm9yRW1w
dHlSZWdleCkgewotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCIiLCAiIikpOwotICBF
WFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCIiLCAiYWIiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hS
ZWdleEF0SGVhZFRlc3QsIFdvcmtzV2hlbkRvbGxhcklzSW5SZWdleCkgewotICBFWFBFQ1RfRkFM
U0UoTWF0Y2hSZWdleEF0SGVhZCgiJCIsICJhIikpOwotCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVn
ZXhBdEhlYWQoIiQiLCAiIikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJhJCIs
ICJhIikpOwotfQotCi1URVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc1doZW5SZWdleFN0
YXJ0c1dpdGhFc2NhcGVTZXF1ZW5jZSkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVh
ZCgiXFx3IiwgIisiKSk7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJcXFciLCAi
YWIiKSk7Ci0KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxzYSIsICJcbmFiIikp
OwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXGQiLCAiMWEiKSk7Ci19Ci0KLVRF
U1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIFdvcmtzV2hlblJlZ2V4U3RhcnRzV2l0aFJlcGV0aXRp
b24pIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIi4rYSIsICJhYmMiKSk7Ci0g
IEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJhP2IiLCAiYWFiIikpOwotCi0gIEVYUEVD
VF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIi4qYSIsICJiYzEyLWFiIikpOwotICBFWFBFQ1RfVFJV
RShNYXRjaFJlZ2V4QXRIZWFkKCJhP2IiLCAiYiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdl
eEF0SGVhZCgiYT9iIiwgImFiIikpOwotfQotCi1URVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0LAot
ICAgICBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhSZXBldGlvbk9mRXNjYXBlU2VxdWVuY2UpIHsK
LSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIlxcLithIiwgImFiYyIpKTsKLSAgRVhQ
RUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIlxccz9iIiwgIiAgYiIpKTsKLQotICBFWFBFQ1Rf
VFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXCgqYSIsICIoKCgoYWIiKSk7Ci0gIEVYUEVDVF9UUlVF
KE1hdGNoUmVnZXhBdEhlYWQoIlxcXj9iIiwgIl5iIikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJl
Z2V4QXRIZWFkKCJcXFxcP2IiLCAiYiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVh
ZCgiXFxcXD9iIiwgIlxcYiIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgTWF0
Y2hlc1NlcXVlbnRpYWxseSkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiYWIu
KmMiLCAiYWNhYmMiKSk7Ci0KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiYWIuKmMi
LCAiYWItZnNjIikpOwotfQotCi1URVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFJldHVybnNG
YWxzZVdoZW5TdHJpbmdJc051bGwpIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVy
ZSgiIiwgTlVMTCkpOwotfQotCi1URVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFdvcmtzV2hl
blJlZ2V4U3RhcnRzV2l0aENhcmV0KSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hl
cmUoIl5hIiwgImJhIikpOwotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJlKCJeJCIs
ICJhIikpOwotCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXmEiLCAiYWIiKSk7
Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXiIsICJhYiIpKTsKLSAgRVhQRUNU
X1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJeJCIsICIiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdl
eEFueXdoZXJlVGVzdCwgUmV0dXJuc0ZhbHNlV2hlbk5vTWF0Y2gpIHsKLSAgRVhQRUNUX0ZBTFNF
KE1hdGNoUmVnZXhBbnl3aGVyZSgiYSIsICJiY2RlMTIzIikpOwotICBFWFBFQ1RfRkFMU0UoTWF0
Y2hSZWdleEFueXdoZXJlKCJhLithIiwgIi0tYWE4ODg4ODg4OCIpKTsKLX0KLQotVEVTVChNYXRj
aFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5zVHJ1ZVdoZW5NYXRjaGluZ1ByZWZpeCkgewotICBF
WFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIlxcdysiLCAiYWIxXyAtIDUiKSk7Ci0gIEVY
UEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiLio9IiwgIj0iKSk7Ci0gIEVYUEVDVF9UUlVF
KE1hdGNoUmVnZXhBbnl3aGVyZSgieC4qYWI/LipiYyIsICJ4YWFhYmMiKSk7Ci19Ci0KLVRFU1Qo
TWF0Y2hSZWdleEFueXdoZXJlVGVzdCwgUmV0dXJuc1RydWVXaGVuTWF0Y2hpbmdOb25QcmVmaXgp
IHsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJcXHcrIiwgIiQkJCBhYjFfIC0g
NSIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJcXC4rPSIsICI9ICAuLi49
IikpOwotfQotCi0vLyBUZXN0cyBSRSdzIGltcGxpY2l0IGNvbnN0cnVjdG9ycy4KLVRFU1QoUkVU
ZXN0LCBJbXBsaWNpdENvbnN0cnVjdG9yV29ya3MpIHsKLSAgY29uc3QgUkUgZW1wdHkoIiIpOwot
ICBFWFBFQ1RfU1RSRVEoIiIsIGVtcHR5LnBhdHRlcm4oKSk7Ci0KLSAgY29uc3QgUkUgc2ltcGxl
KCJoZWxsbyIpOwotICBFWFBFQ1RfU1RSRVEoImhlbGxvIiwgc2ltcGxlLnBhdHRlcm4oKSk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgUkUncyBjb25zdHJ1Y3RvcnMgcmVqZWN0IGludmFsaWQgcmVndWxh
ciBleHByZXNzaW9ucy4KLVRFU1QoUkVUZXN0LCBSZWplY3RzSW52YWxpZFJlZ2V4KSB7Ci0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBjb25zdCBSRSBub3JtYWwoTlVMTCk7Ci0gIH0s
ICJOVUxMIGlzIG5vdCBhIHZhbGlkIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24iKTsKLQotICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAgY29uc3QgUkUgbm9ybWFsKCIuKihcXHcrIik7
Ci0gIH0sICInKCcgaXMgdW5zdXBwb3J0ZWQiKTsKLQotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RSh7Ci0gICAgY29uc3QgUkUgaW52YWxpZCgiXj8iKTsKLSAgfSwgIic/JyBjYW4gb25seSBmb2xs
b3cgYSByZXBlYXRhYmxlIHRva2VuIik7Ci19Ci0KLS8vIFRlc3RzIFJFOjpGdWxsTWF0Y2goKS4K
LVRFU1QoUkVUZXN0LCBGdWxsTWF0Y2hXb3JrcykgewotICBjb25zdCBSRSBlbXB0eSgiIik7Ci0g
IEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goIiIsIGVtcHR5KSk7Ci0gIEVYUEVDVF9GQUxTRShS
RTo6RnVsbE1hdGNoKCJhIiwgZW1wdHkpKTsKLQotICBjb25zdCBSRSByZTEoImEiKTsKLSAgRVhQ
RUNUX1RSVUUoUkU6OkZ1bGxNYXRjaCgiYSIsIHJlMSkpOwotCi0gIGNvbnN0IFJFIHJlKCJhLip6
Iik7Ci0gIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goImF6IiwgcmUpKTsKLSAgRVhQRUNUX1RS
VUUoUkU6OkZ1bGxNYXRjaCgiYXh5eiIsIHJlKSk7Ci0gIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1h
dGNoKCJiYXoiLCByZSkpOwotICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaCgiYXp5IiwgcmUp
KTsKLX0KLQotLy8gVGVzdHMgUkU6OlBhcnRpYWxNYXRjaCgpLgotVEVTVChSRVRlc3QsIFBhcnRp
YWxNYXRjaFdvcmtzKSB7Ci0gIGNvbnN0IFJFIGVtcHR5KCIiKTsKLSAgRVhQRUNUX1RSVUUoUkU6
OlBhcnRpYWxNYXRjaCgiIiwgZW1wdHkpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRj
aCgiYSIsIGVtcHR5KSk7Ci0KLSAgY29uc3QgUkUgcmUoImEuKnoiKTsKLSAgRVhQRUNUX1RSVUUo
UkU6OlBhcnRpYWxNYXRjaCgiYXoiLCByZSkpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1h
dGNoKCJheHl6IiwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiYmF6Iiwg
cmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiYXp5IiwgcmUpKTsKLSAgRVhQ
RUNUX0ZBTFNFKFJFOjpQYXJ0aWFsTWF0Y2goInp6YSIsIHJlKSk7Ci19Ci0KLSNlbmRpZiAgLy8g
R1RFU1RfVVNFU19QT1NJWF9SRQotCi0jaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLVRF
U1QoQ2FwdHVyZVRlc3QsIENhcHR1cmVzU3Rkb3V0KSB7Ci0gIENhcHR1cmVTdGRvdXQoKTsKLSAg
ZnByaW50ZihzdGRvdXQsICJhYmMiKTsKLSAgRVhQRUNUX1NUUkVRKCJhYmMiLCBHZXRDYXB0dXJl
ZFN0ZG91dCgpLmNfc3RyKCkpOwotCi0gIENhcHR1cmVTdGRvdXQoKTsKLSAgZnByaW50ZihzdGRv
dXQsICJkZWYlY2doaSIsICdcMCcpOwotICBFWFBFQ1RfRVEoOjpzdGQ6OnN0cmluZygiZGVmXDBn
aGkiLCA3KSwgOjpzdGQ6OnN0cmluZyhHZXRDYXB0dXJlZFN0ZG91dCgpKSk7Ci19Ci0KLVRFU1Qo
Q2FwdHVyZVRlc3QsIENhcHR1cmVzU3RkZXJyKSB7Ci0gIENhcHR1cmVTdGRlcnIoKTsKLSAgZnBy
aW50ZihzdGRlcnIsICJqa2wiKTsKLSAgRVhQRUNUX1NUUkVRKCJqa2wiLCBHZXRDYXB0dXJlZFN0
ZGVycigpLmNfc3RyKCkpOwotCi0gIENhcHR1cmVTdGRlcnIoKTsKLSAgZnByaW50ZihzdGRlcnIs
ICJqa2wlY21ubyIsICdcMCcpOwotICBFWFBFQ1RfRVEoOjpzdGQ6OnN0cmluZygiamtsXDBtbm8i
LCA3KSwgOjpzdGQ6OnN0cmluZyhHZXRDYXB0dXJlZFN0ZGVycigpKSk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgc3Rkb3V0IGFuZCBzdGRlcnIgY2FwdHVyZSBkb24ndCBpbnRlcmZlcmUgd2l0aCBlYWNo
IG90aGVyLgotVEVTVChDYXB0dXJlVGVzdCwgQ2FwdHVyZXNTdGRvdXRBbmRTdGRlcnIpIHsKLSAg
Q2FwdHVyZVN0ZG91dCgpOwotICBDYXB0dXJlU3RkZXJyKCk7Ci0gIGZwcmludGYoc3Rkb3V0LCAi
cHFyIik7Ci0gIGZwcmludGYoc3RkZXJyLCAic3R1Iik7Ci0gIEVYUEVDVF9TVFJFUSgicHFyIiwg
R2V0Q2FwdHVyZWRTdGRvdXQoKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJzdHUiLCBHZXRD
YXB0dXJlZFN0ZGVycigpLmNfc3RyKCkpOwotfQotCi1URVNUKENhcHR1cmVEZWF0aFRlc3QsIENh
bm5vdFJlZW50ZXJTdGRvdXRDYXB0dXJlKSB7Ci0gIENhcHR1cmVTdGRvdXQoKTsKLSAgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRChDYXB0dXJlU3Rkb3V0KCk7LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJPbmx5IG9uZSBzdGRvdXQgY2FwdHVyZXIgY2FuIGV4aXN0IGF0IGEgdGltZSIp
OwotICBHZXRDYXB0dXJlZFN0ZG91dCgpOwotCi0gIC8vIFdlIGNhbm5vdCB0ZXN0IHN0ZGVyciBj
YXB0dXJpbmcgdXNpbmcgZGVhdGggdGVzdHMgYXMgdGhleSB1c2UgaXQKLSAgLy8gdGhlbXNlbHZl
cy4KLX0KLQotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLQotVEVTVChUaHJl
YWRMb2NhbFRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvckluaXRpYWxpemVzVG9EZWZhdWx0VmFsdWVz
KSB7Ci0gIFRocmVhZExvY2FsPGludD4gdDE7Ci0gIEVYUEVDVF9FUSgwLCB0MS5nZXQoKSk7Ci0K
LSAgVGhyZWFkTG9jYWw8dm9pZCo+IHQyOwotICBFWFBFQ1RfVFJVRSh0Mi5nZXQoKSA9PSBOVUxM
KTsKLX0KLQotVEVTVChUaHJlYWRMb2NhbFRlc3QsIFNpbmdsZVBhcmFtQ29uc3RydWN0b3JJbml0
aWFsaXplc1RvUGFyYW0pIHsKLSAgVGhyZWFkTG9jYWw8aW50PiB0MSgxMjMpOwotICBFWFBFQ1Rf
RVEoMTIzLCB0MS5nZXQoKSk7Ci0KLSAgaW50IGkgPSAwOwotICBUaHJlYWRMb2NhbDxpbnQqPiB0
MigmaSk7Ci0gIEVYUEVDVF9FUSgmaSwgdDIuZ2V0KCkpOwotfQotCi1jbGFzcyBOb0RlZmF1bHRD
b250cnVjdG9yIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IE5vRGVmYXVsdENvbnRydWN0b3IoY29u
c3QgY2hhciopIHt9Ci0gIE5vRGVmYXVsdENvbnRydWN0b3IoY29uc3QgTm9EZWZhdWx0Q29udHJ1
Y3RvciYpIHt9Ci19OwotCi1URVNUKFRocmVhZExvY2FsVGVzdCwgVmFsdWVEZWZhdWx0Q29udHJ1
Y3RvcklzTm90UmVxdWlyZWRGb3JQYXJhbVZlcnNpb24pIHsKLSAgVGhyZWFkTG9jYWw8Tm9EZWZh
dWx0Q29udHJ1Y3Rvcj4gYmFyKE5vRGVmYXVsdENvbnRydWN0b3IoImZvbyIpKTsKLSAgYmFyLnBv
aW50ZXIoKTsKLX0KLQotVEVTVChUaHJlYWRMb2NhbFRlc3QsIEdldEFuZFBvaW50ZXJSZXR1cm5T
YW1lVmFsdWUpIHsKLSAgVGhyZWFkTG9jYWw8U3RyaW5nPiB0aHJlYWRfbG9jYWw7Ci0KLSAgRVhQ
RUNUX0VRKHRocmVhZF9sb2NhbC5wb2ludGVyKCksICYodGhyZWFkX2xvY2FsLmdldCgpKSk7Ci0K
LSAgLy8gVmVyaWZpZXMgdGhlIGNvbmRpdGlvbiBzdGlsbCBob2xkcyBhZnRlciBjYWxsaW5nIHNl
dC4KLSAgdGhyZWFkX2xvY2FsLnNldCgiZm9vIik7Ci0gIEVYUEVDVF9FUSh0aHJlYWRfbG9jYWwu
cG9pbnRlcigpLCAmKHRocmVhZF9sb2NhbC5nZXQoKSkpOwotfQotCi1URVNUKFRocmVhZExvY2Fs
VGVzdCwgUG9pbnRlckFuZENvbnN0UG9pbnRlclJldHVyblNhbWVWYWx1ZSkgewotICBUaHJlYWRM
b2NhbDxTdHJpbmc+IHRocmVhZF9sb2NhbDsKLSAgY29uc3QgVGhyZWFkTG9jYWw8U3RyaW5nPiYg
Y29uc3RfdGhyZWFkX2xvY2FsID0gdGhyZWFkX2xvY2FsOwotCi0gIEVYUEVDVF9FUSh0aHJlYWRf
bG9jYWwucG9pbnRlcigpLCBjb25zdF90aHJlYWRfbG9jYWwucG9pbnRlcigpKTsKLQotICB0aHJl
YWRfbG9jYWwuc2V0KCJmb28iKTsKLSAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbC5wb2ludGVyKCks
IGNvbnN0X3RocmVhZF9sb2NhbC5wb2ludGVyKCkpOwotfQotCi0jaWYgR1RFU1RfSVNfVEhSRUFE
U0FGRQotCi12b2lkIEFkZFR3byhpbnQqIHBhcmFtKSB7ICpwYXJhbSArPSAyOyB9Ci0KLVRFU1Qo
VGhyZWFkV2l0aFBhcmFtVGVzdCwgQ29uc3RydWN0b3JFeGVjdXRlc1RocmVhZEZ1bmMpIHsKLSAg
aW50IGkgPSA0MDsKLSAgVGhyZWFkV2l0aFBhcmFtPGludCo+IHRocmVhZCgmQWRkVHdvLCAmaSwg
TlVMTCk7Ci0gIHRocmVhZC5Kb2luKCk7Ci0gIEVYUEVDVF9FUSg0MiwgaSk7Ci19Ci0KLVRFU1Qo
TXV0ZXhEZWF0aFRlc3QsIEFzc2VydEhlbGRTaG91bGRBc3NlcnRXaGVuTm90TG9ja2VkKSB7Ci0g
IC8vIEFzc2VydEhlbGQoKSBpcyBmbGFreSBvbmx5IGluIHRoZSBwcmVzZW5jZSBvZiBtdWx0aXBs
ZSB0aHJlYWRzIGFjY2Vzc2luZwotICAvLyB0aGUgbG9jay4gSW4gdGhpcyBjYXNlLCB0aGUgdGVz
dCBpcyByb2J1c3QuCi0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoewotICAgIE11dGV4IG07
Ci0gICAgeyBNdXRleExvY2sgbG9jaygmbSk7IH0KLSAgICBtLkFzc2VydEhlbGQoKTsKLSAgfSwK
LSAgInRocmVhZCAuKmhvbGQiKTsKLX0KLQotVEVTVChNdXRleFRlc3QsIEFzc2VydEhlbGRTaG91
bGROb3RBc3NlcnRXaGVuTG9ja2VkKSB7Ci0gIE11dGV4IG07Ci0gIE11dGV4TG9jayBsb2NrKCZt
KTsKLSAgbS5Bc3NlcnRIZWxkKCk7Ci19Ci0KLWNsYXNzIEF0b21pY0NvdW50ZXJXaXRoTXV0ZXgg
ewotIHB1YmxpYzoKLSAgZXhwbGljaXQgQXRvbWljQ291bnRlcldpdGhNdXRleChNdXRleCogbXV0
ZXgpIDoKLSAgICB2YWx1ZV8oMCksIG11dGV4XyhtdXRleCksIHJhbmRvbV8oNDIpIHt9Ci0KLSAg
dm9pZCBJbmNyZW1lbnQoKSB7Ci0gICAgTXV0ZXhMb2NrIGxvY2sobXV0ZXhfKTsKLSAgICBpbnQg
dGVtcCA9IHZhbHVlXzsKLSAgICB7Ci0gICAgICAvLyBMb2NraW5nIGEgbXV0ZXggcHV0cyB1cCBh
IG1lbW9yeSBiYXJyaWVyLCBwcmV2ZW50aW5nIHJlYWRzIGFuZAotICAgICAgLy8gd3JpdGVzIHRv
IHZhbHVlXyByZWFycmFuZ2VkIHdoZW4gb2JzZXJ2ZWQgZnJvbSBvdGhlciB0aHJlYWRzLgotICAg
ICAgLy8KLSAgICAgIC8vIFdlIGNhbm5vdCB1c2UgTXV0ZXggYW5kIE11dGV4TG9jayBoZXJlIG9y
IHJlbHkgb24gdGhlaXIgbWVtb3J5Ci0gICAgICAvLyBiYXJyaWVyIGZ1bmN0aW9uYWxpdHkgYXMg
d2UgYXJlIHRlc3RpbmcgdGhlbSBoZXJlLgotICAgICAgcHRocmVhZF9tdXRleF90IG1lbW9yeV9i
YXJyaWVyX211dGV4OwotICAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18oCi0gICAgICAg
ICAgcHRocmVhZF9tdXRleF9pbml0KCZtZW1vcnlfYmFycmllcl9tdXRleCwgTlVMTCkpOwotICAg
ICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9sb2NrKCZtZW1vcnlf
YmFycmllcl9tdXRleCkpOwotCi0gICAgICBTbGVlcE1pbGxpc2Vjb25kcyhyYW5kb21fLkdlbmVy
YXRlKDMwKSk7Ci0KLSAgICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0
ZXhfdW5sb2NrKCZtZW1vcnlfYmFycmllcl9tdXRleCkpOwotICAgIH0KLSAgICB2YWx1ZV8gPSB0
ZW1wICsgMTsKLSAgfQotICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KLQot
IHByaXZhdGU6Ci0gIHZvbGF0aWxlIGludCB2YWx1ZV87Ci0gIE11dGV4KiBjb25zdCBtdXRleF87
ICAvLyBQcm90ZWN0cyB2YWx1ZV8uCi0gIFJhbmRvbSAgICAgICByYW5kb21fOwotfTsKLQotdm9p
ZCBDb3VudGluZ1RocmVhZEZ1bmMocGFpcjxBdG9taWNDb3VudGVyV2l0aE11dGV4KiwgaW50PiBw
YXJhbSkgewotICBmb3IgKGludCBpID0gMDsgaSA8IHBhcmFtLnNlY29uZDsgKytpKQotICAgICAg
cGFyYW0uZmlyc3QtPkluY3JlbWVudCgpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBtdXRleCBv
bmx5IGxldHMgb25lIHRocmVhZCBhdCBhIHRpbWUgdG8gbG9jayBpdC4KLVRFU1QoTXV0ZXhUZXN0
LCBPbmx5T25lVGhyZWFkQ2FuTG9ja0F0QVRpbWUpIHsKLSAgTXV0ZXggbXV0ZXg7Ci0gIEF0b21p
Y0NvdW50ZXJXaXRoTXV0ZXggbG9ja2VkX2NvdW50ZXIoJm11dGV4KTsKLQotICB0eXBlZGVmIFRo
cmVhZFdpdGhQYXJhbTxwYWlyPEF0b21pY0NvdW50ZXJXaXRoTXV0ZXgqLCBpbnQ+ID4gVGhyZWFk
VHlwZTsKLSAgY29uc3QgaW50IGtDeWNsZUNvdW50ID0gMjA7Ci0gIGNvbnN0IGludCBrVGhyZWFk
Q291bnQgPSA3OwotICBzY29wZWRfcHRyPFRocmVhZFR5cGU+IGNvdW50aW5nX3RocmVhZHNba1Ro
cmVhZENvdW50XTsKLSAgTm90aWZpY2F0aW9uIHRocmVhZHNfY2FuX3N0YXJ0OwotICAvLyBDcmVh
dGVzIGFuZCBydW5zIGtUaHJlYWRDb3VudCB0aHJlYWRzIHRoYXQgaW5jcmVtZW50IGxvY2tlZF9j
b3VudGVyCi0gIC8vIGtDeWNsZUNvdW50IHRpbWVzIGVhY2guCi0gIGZvciAoaW50IGkgPSAwOyBp
IDwga1RocmVhZENvdW50OyArK2kpIHsKLSAgICBjb3VudGluZ190aHJlYWRzW2ldLnJlc2V0KG5l
dyBUaHJlYWRUeXBlKCZDb3VudGluZ1RocmVhZEZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3BhaXIoJmxvY2tlZF9jb3VudGVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDeWNsZUNv
dW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aHJl
YWRzX2Nhbl9zdGFydCkpOwotICB9Ci0gIHRocmVhZHNfY2FuX3N0YXJ0Lk5vdGlmeSgpOwotICBm
b3IgKGludCBpID0gMDsgaSA8IGtUaHJlYWRDb3VudDsgKytpKQotICAgIGNvdW50aW5nX3RocmVh
ZHNbaV0tPkpvaW4oKTsKLQotICAvLyBJZiB0aGUgbXV0ZXggbGV0cyBtb3JlIHRoYW4gb25lIHRo
cmVhZCB0byBpbmNyZW1lbnQgdGhlIGNvdW50ZXIgYXQgYQotICAvLyB0aW1lLCB0aGV5IGFyZSBs
aWtlbHkgdG8gZW5jb3VudGVyIGEgcmFjZSBjb25kaXRpb24gYW5kIGhhdmUgc29tZQotICAvLyBp
bmNyZW1lbnRzIG92ZXJ3cml0dGVuLCByZXN1bHRpbmcgaW4gdGhlIGxvd2VyIHRoZW4gZXhwZWN0
ZWQgY291bnRlcgotICAvLyB2YWx1ZS4KLSAgRVhQRUNUX0VRKGtDeWNsZUNvdW50ICoga1RocmVh
ZENvdW50LCBsb2NrZWRfY291bnRlci52YWx1ZSgpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci12b2lkIFJ1bkZyb21UaHJlYWQodm9pZCAoZnVuYykoVCksIFQgcGFyYW0pIHsKLSAgVGhy
ZWFkV2l0aFBhcmFtPFQ+IHRocmVhZChmdW5jLCBwYXJhbSwgTlVMTCk7Ci0gIHRocmVhZC5Kb2lu
KCk7Ci19Ci0KLXZvaWQgUmV0cmlldmVUaHJlYWRMb2NhbFZhbHVlKHBhaXI8VGhyZWFkTG9jYWw8
U3RyaW5nPiosIFN0cmluZyo+IHBhcmFtKSB7Ci0gICpwYXJhbS5zZWNvbmQgPSBwYXJhbS5maXJz
dC0+Z2V0KCk7Ci19Ci0KLVRFU1QoVGhyZWFkTG9jYWxUZXN0LCBQYXJhbWV0ZXJpemVkQ29uc3Ry
dWN0b3JTZXRzRGVmYXVsdCkgewotICBUaHJlYWRMb2NhbDxTdHJpbmc+IHRocmVhZF9sb2NhbCgi
Zm9vIik7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiwgdGhyZWFkX2xvY2FsLmdldCgpLmNfc3RyKCkp
OwotCi0gIHRocmVhZF9sb2NhbC5zZXQoImJhciIpOwotICBFWFBFQ1RfU1RSRVEoImJhciIsIHRo
cmVhZF9sb2NhbC5nZXQoKS5jX3N0cigpKTsKLQotICBTdHJpbmcgcmVzdWx0OwotICBSdW5Gcm9t
VGhyZWFkKCZSZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUsIG1ha2VfcGFpcigmdGhyZWFkX2xvY2Fs
LCAmcmVzdWx0KSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiwgcmVzdWx0LmNfc3RyKCkpOwotfQot
Ci0vLyBEZXN0cnVjdG9yVHJhY2tlciBrZWVwcyB0cmFjayBvZiB3aGV0aGVyIGl0cyBpbnN0YW5j
ZXMgaGF2ZSBiZWVuCi0vLyBkZXN0cm95ZWQuCi1zdGF0aWMgc3RkOjp2ZWN0b3I8Ym9vbD4gZ19k
ZXN0cm95ZWQ7Ci0KLWNsYXNzIERlc3RydWN0b3JUcmFja2VyIHsKLSBwdWJsaWM6Ci0gIERlc3Ry
dWN0b3JUcmFja2VyKCkgOiBpbmRleF8oR2V0TmV3SW5kZXgoKSkge30KLSAgRGVzdHJ1Y3RvclRy
YWNrZXIoY29uc3QgRGVzdHJ1Y3RvclRyYWNrZXImIC8qIHJocyAqLykKLSAgICAgIDogaW5kZXhf
KEdldE5ld0luZGV4KCkpIHt9Ci0gIH5EZXN0cnVjdG9yVHJhY2tlcigpIHsKLSAgICAvLyBXZSBu
ZXZlciBhY2Nlc3MgZ19kZXN0cm95ZWQgY29uY3VycmVudGx5LCBzbyB3ZSBkb24ndCBuZWVkIHRv
Ci0gICAgLy8gcHJvdGVjdCB0aGUgd3JpdGUgb3BlcmF0aW9uIHVuZGVyIGEgbXV0ZXguCi0gICAg
Z19kZXN0cm95ZWRbaW5kZXhfXSA9IHRydWU7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHN0YXRpYyBp
bnQgR2V0TmV3SW5kZXgoKSB7Ci0gICAgZ19kZXN0cm95ZWQucHVzaF9iYWNrKGZhbHNlKTsKLSAg
ICByZXR1cm4gZ19kZXN0cm95ZWQuc2l6ZSgpIC0gMTsKLSAgfQotICBjb25zdCBpbnQgaW5kZXhf
OwotfTsKLQotdHlwZWRlZiBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4qIFRocmVhZFBh
cmFtOwotCi12b2lkIENhbGxUaHJlYWRMb2NhbEdldChUaHJlYWRQYXJhbSB0aHJlYWRfbG9jYWwp
IHsKLSAgdGhyZWFkX2xvY2FsLT5nZXQoKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB3aGVuIGEgVGhy
ZWFkTG9jYWwgb2JqZWN0IGRpZXMgaW4gYSB0aHJlYWQsIGl0IGRlc3Ryb3lzCi0vLyB0aGUgbWFu
YWdlZCBvYmplY3QgZm9yIHRoYXQgdGhyZWFkLgotVEVTVChUaHJlYWRMb2NhbFRlc3QsIERlc3Ry
b3lzTWFuYWdlZE9iamVjdEZvck93blRocmVhZFdoZW5EeWluZykgewotICBnX2Rlc3Ryb3llZC5j
bGVhcigpOwotCi0gIHsKLSAgICAvLyBUaGUgbmV4dCBsaW5lIGRlZmF1bHQgY29uc3RydWN0cyBh
IERlc3RydWN0b3JUcmFja2VyIG9iamVjdCBhcwotICAgIC8vIHRoZSBkZWZhdWx0IHZhbHVlIG9m
IG9iamVjdHMgbWFuYWdlZCBieSB0aHJlYWRfbG9jYWwuCi0gICAgVGhyZWFkTG9jYWw8RGVzdHJ1
Y3RvclRyYWNrZXI+IHRocmVhZF9sb2NhbDsKLSAgICBBU1NFUlRfRVEoMVUsIGdfZGVzdHJveWVk
LnNpemUoKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdfZGVzdHJveWVkWzBdKTsKLQotICAgIC8vIFRo
aXMgY3JlYXRlcyBhbm90aGVyIERlc3RydWN0b3JUcmFja2VyIG9iamVjdCBmb3IgdGhlIG1haW4g
dGhyZWFkLgotICAgIHRocmVhZF9sb2NhbC5nZXQoKTsKLSAgICBBU1NFUlRfRVEoMlUsIGdfZGVz
dHJveWVkLnNpemUoKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdfZGVzdHJveWVkWzBdKTsKLSAgICBB
U1NFUlRfRkFMU0UoZ19kZXN0cm95ZWRbMV0pOwotICB9Ci0KLSAgLy8gTm93IHRocmVhZF9sb2Nh
bCBoYXMgZGllZC4gIEl0IHNob3VsZCBoYXZlIGRlc3Ryb3llZCBib3RoIHRoZQotICAvLyBkZWZh
dWx0IHZhbHVlIHNoYXJlZCBieSBhbGwgdGhyZWFkcyBhbmQgdGhlIHZhbHVlIGZvciB0aGUgbWFp
bgotICAvLyB0aHJlYWQuCi0gIEFTU0VSVF9FUSgyVSwgZ19kZXN0cm95ZWQuc2l6ZSgpKTsKLSAg
RVhQRUNUX1RSVUUoZ19kZXN0cm95ZWRbMF0pOwotICBFWFBFQ1RfVFJVRShnX2Rlc3Ryb3llZFsx
XSk7Ci0KLSAgZ19kZXN0cm95ZWQuY2xlYXIoKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB3aGVuIGEg
dGhyZWFkIGV4aXRzLCB0aGUgdGhyZWFkLWxvY2FsIG9iamVjdCBmb3IgdGhhdAotLy8gdGhyZWFk
IGlzIGRlc3Ryb3llZC4KLVRFU1QoVGhyZWFkTG9jYWxUZXN0LCBEZXN0cm95c01hbmFnZWRPYmpl
Y3RBdFRocmVhZEV4aXQpIHsKLSAgZ19kZXN0cm95ZWQuY2xlYXIoKTsKLQotICB7Ci0gICAgLy8g
VGhlIG5leHQgbGluZSBkZWZhdWx0IGNvbnN0cnVjdHMgYSBEZXN0cnVjdG9yVHJhY2tlciBvYmpl
Y3QgYXMKLSAgICAvLyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBvYmplY3RzIG1hbmFnZWQgYnkgdGhy
ZWFkX2xvY2FsLgotICAgIFRocmVhZExvY2FsPERlc3RydWN0b3JUcmFja2VyPiB0aHJlYWRfbG9j
YWw7Ci0gICAgQVNTRVJUX0VRKDFVLCBnX2Rlc3Ryb3llZC5zaXplKCkpOwotICAgIEFTU0VSVF9G
QUxTRShnX2Rlc3Ryb3llZFswXSk7Ci0KLSAgICAvLyBUaGlzIGNyZWF0ZXMgYW5vdGhlciBEZXN0
cnVjdG9yVHJhY2tlciBvYmplY3QgaW4gdGhlIG5ldyB0aHJlYWQuCi0gICAgVGhyZWFkV2l0aFBh
cmFtPFRocmVhZFBhcmFtPiB0aHJlYWQoCi0gICAgICAgICZDYWxsVGhyZWFkTG9jYWxHZXQsICZ0
aHJlYWRfbG9jYWwsIE5VTEwpOwotICAgIHRocmVhZC5Kb2luKCk7Ci0KLSAgICAvLyBOb3cgdGhl
IG5ldyB0aHJlYWQgaGFzIGV4aXRlZC4gIFRoZSBwZXItdGhyZWFkIG9iamVjdCBmb3IgaXQKLSAg
ICAvLyBzaG91bGQgaGF2ZSBiZWVuIGRlc3Ryb3llZC4KLSAgICBBU1NFUlRfRVEoMlUsIGdfZGVz
dHJveWVkLnNpemUoKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdfZGVzdHJveWVkWzBdKTsKLSAgICBB
U1NFUlRfVFJVRShnX2Rlc3Ryb3llZFsxXSk7Ci0gIH0KLQotICAvLyBOb3cgdGhyZWFkX2xvY2Fs
IGhhcyBkaWVkLiAgVGhlIGRlZmF1bHQgdmFsdWUgc2hvdWxkIGhhdmUgYmVlbgotICAvLyBkZXN0
cm95ZWQgdG9vLgotICBBU1NFUlRfRVEoMlUsIGdfZGVzdHJveWVkLnNpemUoKSk7Ci0gIEVYUEVD
VF9UUlVFKGdfZGVzdHJveWVkWzBdKTsKLSAgRVhQRUNUX1RSVUUoZ19kZXN0cm95ZWRbMV0pOwot
Ci0gIGdfZGVzdHJveWVkLmNsZWFyKCk7Ci19Ci0KLVRFU1QoVGhyZWFkTG9jYWxUZXN0LCBUaHJl
YWRMb2NhbE11dGF0aW9uc0FmZmVjdE9ubHlDdXJyZW50VGhyZWFkKSB7Ci0gIFRocmVhZExvY2Fs
PFN0cmluZz4gdGhyZWFkX2xvY2FsOwotICB0aHJlYWRfbG9jYWwuc2V0KCJGb28iKTsKLSAgRVhQ
RUNUX1NUUkVRKCJGb28iLCB0aHJlYWRfbG9jYWwuZ2V0KCkuY19zdHIoKSk7Ci0KLSAgU3RyaW5n
IHJlc3VsdDsKLSAgUnVuRnJvbVRocmVhZCgmUmV0cmlldmVUaHJlYWRMb2NhbFZhbHVlLCBtYWtl
X3BhaXIoJnRocmVhZF9sb2NhbCwgJnJlc3VsdCkpOwotICBFWFBFQ1RfVFJVRShyZXN1bHQuY19z
dHIoKSA9PSBOVUxMKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCi0KLX0g
IC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0LmNjCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTNlOTE5NmFiOTZlNDEzZmVmMzMwNzUyNGIx
OGM5MmY1ZWRhZGIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2MK
KysrIC9kZXYvbnVsbApAQCAtMSwyMDggKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDggR29vZ2xl
IEluYy4KLS8vIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiBtaGV1bGVAZ29vZ2xlLmNvbSAoTWFy
a3VzIEhldWxlKQotLy8KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oPgotCi0j
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdXNpbmcgdGVzdGluZzo6TWVzc2FnZTsKLXVzaW5n
IHRlc3Rpbmc6OlRlc3Q7Ci11c2luZyB0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDsKLXVzaW5nIHRl
c3Rpbmc6OlRlc3RQYXJ0UmVzdWx0QXJyYXk7Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIFRlc3RzIHRo
ZSBUZXN0UGFydFJlc3VsdCBjbGFzcy4KLQotLy8gVGhlIHRlc3QgZml4dHVyZSBmb3IgdGVzdGlu
ZyBUZXN0UGFydFJlc3VsdC4KLWNsYXNzIFRlc3RQYXJ0UmVzdWx0VGVzdCA6IHB1YmxpYyBUZXN0
IHsKLSBwcm90ZWN0ZWQ6Ci0gIFRlc3RQYXJ0UmVzdWx0VGVzdCgpCi0gICAgICA6IHIxXyhUZXN0
UGFydFJlc3VsdDo6a1N1Y2Nlc3MsICJmb28vYmFyLmNjIiwgMTAsICJTdWNjZXNzISIpLAotICAg
ICAgICByMl8oVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsICJmb28vYmFyLmNjIiwg
LTEsICJGYWlsdXJlISIpLAotICAgICAgICByM18oVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1
cmUsIE5VTEwsIC0xLCAiRmFpbHVyZSEiKSB7fQotCi0gIFRlc3RQYXJ0UmVzdWx0IHIxXywgcjJf
LCByM187Ci19OwotCi0KLVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIENvbnN0cnVjdG9yV29y
a3MpIHsKLSAgTWVzc2FnZSBtZXNzYWdlOwotICBtZXNzYWdlIDw8ICJzb21ldGhpbmcgaXMgdGVy
cmlibHkgd3JvbmciOwotICBtZXNzYWdlIDw8IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPih0ZXN0
aW5nOjppbnRlcm5hbDo6a1N0YWNrVHJhY2VNYXJrZXIpOwotICBtZXNzYWdlIDw8ICJzb21lIHVu
aW1wb3J0YW50IHN0YWNrIHRyYWNlIjsKLQotICBjb25zdCBUZXN0UGFydFJlc3VsdCByZXN1bHQo
VGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAic29tZV9maWxlLmNjIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0
cigpKTsKLQotICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsIHJl
c3VsdC50eXBlKCkpOwotICBFWFBFQ1RfU1RSRVEoInNvbWVfZmlsZS5jYyIsIHJlc3VsdC5maWxl
X25hbWUoKSk7Ci0gIEVYUEVDVF9FUSg0MiwgcmVzdWx0LmxpbmVfbnVtYmVyKCkpOwotICBFWFBF
Q1RfU1RSRVEobWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0cigpLCByZXN1bHQubWVzc2FnZSgpKTsK
LSAgRVhQRUNUX1NUUkVRKCJzb21ldGhpbmcgaXMgdGVycmlibHkgd3JvbmciLCByZXN1bHQuc3Vt
bWFyeSgpKTsKLX0KLQotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgUmVzdWx0QWNjZXNzb3Jz
V29yaykgewotICBjb25zdCBUZXN0UGFydFJlc3VsdCBzdWNjZXNzKFRlc3RQYXJ0UmVzdWx0Ojpr
U3VjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5jYyIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIm1lc3NhZ2UiKTsKLSAgRVhQRUNUX1RSVUUoc3VjY2Vzcy5wYXNzZWQoKSk7Ci0gIEVY
UEVDVF9GQUxTRShzdWNjZXNzLmZhaWxlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3Mubm9u
ZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShzdWNjZXNzLmZhdGFsbHlfZmFpbGVk
KCkpOwotCi0gIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IG5vbmZhdGFsX2ZhaWx1cmUoVGVzdFBhcnRS
ZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImZpbGUuY2MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdl
Iik7Ci0gIEVYUEVDVF9GQUxTRShub25mYXRhbF9mYWlsdXJlLnBhc3NlZCgpKTsKLSAgRVhQRUNU
X1RSVUUobm9uZmF0YWxfZmFpbHVyZS5mYWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKG5vbmZhdGFs
X2ZhaWx1cmUubm9uZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShub25mYXRhbF9m
YWlsdXJlLmZhdGFsbHlfZmFpbGVkKCkpOwotCi0gIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IGZhdGFs
X2ZhaWx1cmUoVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImZpbGUuY2MiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJt
ZXNzYWdlIik7Ci0gIEVYUEVDVF9GQUxTRShmYXRhbF9mYWlsdXJlLnBhc3NlZCgpKTsKLSAgRVhQ
RUNUX1RSVUUoZmF0YWxfZmFpbHVyZS5mYWlsZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShmYXRhbF9m
YWlsdXJlLm5vbmZhdGFsbHlfZmFpbGVkKCkpOwotICBFWFBFQ1RfVFJVRShmYXRhbF9mYWlsdXJl
LmZhdGFsbHlfZmFpbGVkKCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6dHlwZSgp
LgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgdHlwZSkgewotICBFWFBFQ1RfRVEoVGVzdFBh
cnRSZXN1bHQ6OmtTdWNjZXNzLCByMV8udHlwZSgpKTsKLSAgRVhQRUNUX0VRKFRlc3RQYXJ0UmVz
dWx0OjprTm9uRmF0YWxGYWlsdXJlLCByMl8udHlwZSgpKTsKLSAgRVhQRUNUX0VRKFRlc3RQYXJ0
UmVzdWx0OjprRmF0YWxGYWlsdXJlLCByM18udHlwZSgpKTsKLX0KLQotLy8gVGVzdHMgVGVzdFBh
cnRSZXN1bHQ6OmZpbGVfbmFtZSgpLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgZmlsZV9u
YW1lKSB7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vL2Jhci5jYyIsIHIxXy5maWxlX25hbWUoKSk7Ci0g
IEVYUEVDVF9TVFJFUShOVUxMLCByM18uZmlsZV9uYW1lKCkpOwotfQotCi0vLyBUZXN0cyBUZXN0
UGFydFJlc3VsdDo6bGluZV9udW1iZXIoKS4KLVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIGxp
bmVfbnVtYmVyKSB7Ci0gIEVYUEVDVF9FUSgxMCwgcjFfLmxpbmVfbnVtYmVyKCkpOwotICBFWFBF
Q1RfRVEoLTEsIHIyXy5saW5lX251bWJlcigpKTsKLX0KLQotLy8gVGVzdHMgVGVzdFBhcnRSZXN1
bHQ6Om1lc3NhZ2UoKS4KLVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIG1lc3NhZ2UpIHsKLSAg
RVhQRUNUX1NUUkVRKCJTdWNjZXNzISIsIHIxXy5tZXNzYWdlKCkpOwotfQotCi0vLyBUZXN0cyBU
ZXN0UGFydFJlc3VsdDo6cGFzc2VkKCkuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBQYXNz
ZWQpIHsKLSAgRVhQRUNUX1RSVUUocjFfLnBhc3NlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKHIyXy5w
YXNzZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShyM18ucGFzc2VkKCkpOwotfQotCi0vLyBUZXN0cyBU
ZXN0UGFydFJlc3VsdDo6ZmFpbGVkKCkuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBGYWls
ZWQpIHsKLSAgRVhQRUNUX0ZBTFNFKHIxXy5mYWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHIyXy5m
YWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHIzXy5mYWlsZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIFRl
c3RQYXJ0UmVzdWx0OjpmYXRhbGx5X2ZhaWxlZCgpLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVz
dCwgRmF0YWxseUZhaWxlZCkgewotICBFWFBFQ1RfRkFMU0UocjFfLmZhdGFsbHlfZmFpbGVkKCkp
OwotICBFWFBFQ1RfRkFMU0UocjJfLmZhdGFsbHlfZmFpbGVkKCkpOwotICBFWFBFQ1RfVFJVRShy
M18uZmF0YWxseV9mYWlsZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0Ojpub25m
YXRhbGx5X2ZhaWxlZCgpLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgTm9uZmF0YWxseUZh
aWxlZCkgewotICBFWFBFQ1RfRkFMU0UocjFfLm5vbmZhdGFsbHlfZmFpbGVkKCkpOwotICBFWFBF
Q1RfVFJVRShyMl8ubm9uZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShyM18ubm9u
ZmF0YWxseV9mYWlsZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBUZXN0UGFydFJlc3VsdEFycmF5
IGNsYXNzLgotCi1jbGFzcyBUZXN0UGFydFJlc3VsdEFycmF5VGVzdCA6IHB1YmxpYyBUZXN0IHsK
LSBwcm90ZWN0ZWQ6Ci0gIFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0KCkKLSAgICAgIDogcjFfKFRl
c3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlLCAiZm9vL2Jhci5jYyIsIC0xLCAiRmFpbHVy
ZSAxIiksCi0gICAgICAgIHIyXyhUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwgImZvby9i
YXIuY2MiLCAtMSwgIkZhaWx1cmUgMiIpIHt9Ci0KLSAgY29uc3QgVGVzdFBhcnRSZXN1bHQgcjFf
LCByMl87Ci19OwotCi0vLyBUZXN0cyB0aGF0IFRlc3RQYXJ0UmVzdWx0QXJyYXkgaW5pdGlhbGx5
IGhhcyBzaXplIDAuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRBcnJheVRlc3QsIEluaXRpYWxTaXpl
SXNaZXJvKSB7Ci0gIFRlc3RQYXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsKLSAgRVhQRUNUX0VRKDAs
IHJlc3VsdHMuc2l6ZSgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBUZXN0UGFydFJlc3VsdEFycmF5
IGNvbnRhaW5zIHRoZSBnaXZlbiBUZXN0UGFydFJlc3VsdAotLy8gYWZ0ZXIgb25lIEFwcGVuZCgp
IG9wZXJhdGlvbi4KLVRFU1RfRihUZXN0UGFydFJlc3VsdEFycmF5VGVzdCwgQ29udGFpbnNHaXZl
blJlc3VsdEFmdGVyQXBwZW5kKSB7Ci0gIFRlc3RQYXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsKLSAg
cmVzdWx0cy5BcHBlbmQocjFfKTsKLSAgRVhQRUNUX0VRKDEsIHJlc3VsdHMuc2l6ZSgpKTsKLSAg
RVhQRUNUX1NUUkVRKCJGYWlsdXJlIDEiLCByZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDApLm1l
c3NhZ2UoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVGVzdFBhcnRSZXN1bHRBcnJheSBjb250YWlu
cyB0aGUgZ2l2ZW4gVGVzdFBhcnRSZXN1bHRzCi0vLyBhZnRlciB0d28gQXBwZW5kKCkgb3BlcmF0
aW9ucy4KLVRFU1RfRihUZXN0UGFydFJlc3VsdEFycmF5VGVzdCwgQ29udGFpbnNHaXZlblJlc3Vs
dHNBZnRlclR3b0FwcGVuZHMpIHsKLSAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOwotICBy
ZXN1bHRzLkFwcGVuZChyMV8pOwotICByZXN1bHRzLkFwcGVuZChyMl8pOwotICBFWFBFQ1RfRVEo
MiwgcmVzdWx0cy5zaXplKCkpOwotICBFWFBFQ1RfU1RSRVEoIkZhaWx1cmUgMSIsIHJlc3VsdHMu
R2V0VGVzdFBhcnRSZXN1bHQoMCkubWVzc2FnZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCJGYWlsdXJl
IDIiLCByZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDEpLm1lc3NhZ2UoKSk7Ci19Ci0KLXR5cGVk
ZWYgVGVzdFBhcnRSZXN1bHRBcnJheVRlc3QgVGVzdFBhcnRSZXN1bHRBcnJheURlYXRoVGVzdDsK
LQotLy8gVGVzdHMgdGhhdCB0aGUgcHJvZ3JhbSBkaWVzIHdoZW4gR2V0VGVzdFBhcnRSZXN1bHQo
KSBpcyBjYWxsZWQgd2l0aAotLy8gYW4gaW52YWxpZCBpbmRleC4KLVRFU1RfRihUZXN0UGFydFJl
c3VsdEFycmF5RGVhdGhUZXN0LCBEaWVzV2hlbkluZGV4SXNPdXRPZkJvdW5kKSB7Ci0gIFRlc3RQ
YXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsKLSAgcmVzdWx0cy5BcHBlbmQocjFfKTsKLQotICBFWFBF
Q1RfREVBVEhfSUZfU1VQUE9SVEVEKHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoLTEpLCAiIik7
Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQocmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgx
KSwgIiIpOwotfQotCi0vLyBUT0RPKG1oZXVsZUBnb29nbGUuY29tKTogQWRkIGEgdGVzdCBmb3Ig
dGhlIGNsYXNzIEhhc05ld0ZhdGFsRmFpbHVyZUhlbHBlci4KLQotfSAgLy8gbmFtZXNwYWNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR1cGxlX3Rlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR1cGxlX3Rlc3QuY2MKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMmY3MGIzZDRlOTA3MGY0NTk2ODYyNWIzZmY5
N2MzOTg0NzU3ZDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10dXBsZV90ZXN0LmNjCisrKyAv
ZGV2L251bGwKQEAgLTEsMzIwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5j
LgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBX
YW4pCi0KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oPgotI2luY2x1ZGUg
PHV0aWxpdHk+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotbmFtZXNwYWNlIHsKLQotdXNp
bmcgOjpzdGQ6OnRyMTo6Z2V0OwotdXNpbmcgOjpzdGQ6OnRyMTo6bWFrZV90dXBsZTsKLXVzaW5n
IDo6c3RkOjp0cjE6OnR1cGxlOwotdXNpbmcgOjpzdGQ6OnRyMTo6dHVwbGVfZWxlbWVudDsKLXVz
aW5nIDo6c3RkOjp0cjE6OnR1cGxlX3NpemU7Ci11c2luZyA6OnRlc3Rpbmc6OlN0YXRpY0Fzc2Vy
dFR5cGVFcTsKLQotLy8gVGVzdHMgdGhhdCB0dXBsZV9lbGVtZW50PEssIHR1cGxlPFQwLCBUMSwg
Li4uLCBUTj4gPjo6dHlwZSByZXR1cm5zIFRLLgotVEVTVCh0dXBsZV9lbGVtZW50X1Rlc3QsIFJl
dHVybnNFbGVtZW50VHlwZSkgewotICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50LCB0dXBsZV9lbGVt
ZW50PDAsIHR1cGxlPGludCwgY2hhcj4gPjo6dHlwZT4oKTsKLSAgU3RhdGljQXNzZXJ0VHlwZUVx
PGludCYsIHR1cGxlX2VsZW1lbnQ8MSwgdHVwbGU8ZG91YmxlLCBpbnQmPiA+Ojp0eXBlPigpOwot
ICBTdGF0aWNBc3NlcnRUeXBlRXE8Ym9vbCwgdHVwbGVfZWxlbWVudDwyLCB0dXBsZTxkb3VibGUs
IGludCwgYm9vbD4gPjo6dHlwZT4oKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0dXBsZV9zaXplPFQ+
Ojp2YWx1ZSBnaXZlcyB0aGUgbnVtYmVyIG9mIGZpZWxkcyBpbiB0dXBsZQotLy8gdHlwZSBULgot
VEVTVCh0dXBsZV9zaXplX1Rlc3QsIFJldHVybnNOdW1iZXJPZkZpZWxkcykgewotICBFWFBFQ1Rf
RVEoMCwgK3R1cGxlX3NpemU8dHVwbGU8PiA+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9FUSgxLCArdHVw
bGVfc2l6ZTx0dXBsZTx2b2lkKj4gPjo6dmFsdWUpOwotICBFWFBFQ1RfRVEoMSwgK3R1cGxlX3Np
emU8dHVwbGU8Y2hhcj4gPjo6dmFsdWUpOwotICBFWFBFQ1RfRVEoMSwgKyh0dXBsZV9zaXplPHR1
cGxlPHR1cGxlPGludCwgZG91YmxlPiA+ID46OnZhbHVlKSk7Ci0gIEVYUEVDVF9FUSgyLCArKHR1
cGxlX3NpemU8dHVwbGU8aW50JiwgY29uc3QgY2hhcj4gPjo6dmFsdWUpKTsKLSAgRVhQRUNUX0VR
KDMsICsodHVwbGVfc2l6ZTx0dXBsZTxjaGFyKiwgdm9pZCwgY29uc3QgYm9vbCY+ID46OnZhbHVl
KSk7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyBhIHR1cGxlIHdpdGggaXRzZWxmLgotVEVTVChD
b21wYXJpc29uVGVzdCwgQ29tcGFyZXNXaXRoU2VsZikgewotICBjb25zdCB0dXBsZTxpbnQsIGNo
YXIsIGJvb2w+IGEoNSwgJ2EnLCBmYWxzZSk7Ci0KLSAgRVhQRUNUX1RSVUUoYSA9PSBhKTsKLSAg
RVhQRUNUX0ZBTFNFKGEgIT0gYSk7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyB0d28gdHVwbGVz
IHdpdGggdGhlIHNhbWUgdmFsdWUuCi1URVNUKENvbXBhcmlzb25UZXN0LCBDb21wYXJlc0VxdWFs
VHVwbGVzKSB7Ci0gIGNvbnN0IHR1cGxlPGludCwgYm9vbD4gYSg1LCB0cnVlKSwgYig1LCB0cnVl
KTsKLQotICBFWFBFQ1RfVFJVRShhID09IGIpOwotICBFWFBFQ1RfRkFMU0UoYSAhPSBiKTsKLX0K
LQotLy8gVGVzdHMgY29tcGFyaW5nIHR3byBkaWZmZXJlbnQgdHVwbGVzIHRoYXQgaGF2ZSBubyBy
ZWZlcmVuY2UgZmllbGRzLgotVEVTVChDb21wYXJpc29uVGVzdCwgQ29tcGFyZXNVbmVxdWFsVHVw
bGVzV2l0aG91dFJlZmVyZW5jZUZpZWxkcykgewotICB0eXBlZGVmIHR1cGxlPGNvbnN0IGludCwg
Y2hhcj4gRm9vVHVwbGU7Ci0KLSAgY29uc3QgRm9vVHVwbGUgYSgwLCAneCcpOwotICBjb25zdCBG
b29UdXBsZSBiKDEsICdhJyk7Ci0KLSAgRVhQRUNUX1RSVUUoYSAhPSBiKTsKLSAgRVhQRUNUX0ZB
TFNFKGEgPT0gYik7Ci0KLSAgY29uc3QgRm9vVHVwbGUgYygxLCAnYicpOwotCi0gIEVYUEVDVF9U
UlVFKGIgIT0gYyk7Ci0gIEVYUEVDVF9GQUxTRShiID09IGMpOwotfQotCi0vLyBUZXN0cyBjb21w
YXJpbmcgdHdvIGRpZmZlcmVudCB0dXBsZXMgdGhhdCBoYXZlIHJlZmVyZW5jZSBmaWVsZHMuCi1U
RVNUKENvbXBhcmlzb25UZXN0LCBDb21wYXJlc1VuZXF1YWxUdXBsZXNXaXRoUmVmZXJlbmNlRmll
bGRzKSB7Ci0gIHR5cGVkZWYgdHVwbGU8aW50JiwgY29uc3QgY2hhciY+IEZvb1R1cGxlOwotCi0g
IGludCBpID0gNTsKLSAgY29uc3QgY2hhciBjaCA9ICdhJzsKLSAgY29uc3QgRm9vVHVwbGUgYShp
LCBjaCk7Ci0KLSAgaW50IGogPSA2OwotICBjb25zdCBGb29UdXBsZSBiKGosIGNoKTsKLQotICBF
WFBFQ1RfVFJVRShhICE9IGIpOwotICBFWFBFQ1RfRkFMU0UoYSA9PSBiKTsKLQotICBqID0gNTsK
LSAgY29uc3QgY2hhciBjaDIgPSAnYic7Ci0gIGNvbnN0IEZvb1R1cGxlIGMoaiwgY2gyKTsKLQot
ICBFWFBFQ1RfVFJVRShiICE9IGMpOwotICBFWFBFQ1RfRkFMU0UoYiA9PSBjKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBhIHR1cGxlIGZpZWxkIHdpdGggYSByZWZlcmVuY2UgdHlwZSBpcyBhbiBhbGlh
cyBvZiB0aGUKLS8vIHZhcmlhYmxlIGl0J3Mgc3VwcG9zZWQgdG8gcmVmZXJlbmNlLgotVEVTVChS
ZWZlcmVuY2VGaWVsZFRlc3QsIElzQWxpYXNPZlJlZmVyZW5jZWRWYXJpYWJsZSkgewotICBpbnQg
biA9IDA7Ci0gIHR1cGxlPGJvb2wsIGludCY+IHQodHJ1ZSwgbik7Ci0KLSAgbiA9IDE7Ci0gIEVY
UEVDVF9FUShuLCBnZXQ8MT4odCkpCi0gICAgICA8PCAiQ2hhbmdpbmcgYSB1bmRlcmx5aW5nIHZh
cmlhYmxlIHNob3VsZCB1cGRhdGUgdGhlIHJlZmVyZW5jZSBmaWVsZC4iOwotCi0gIC8vIE1ha2Vz
IHN1cmUgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gZG9lc24ndCBkbyBhbnl0aGluZyBmdW5ueSB3
aXRoCi0gIC8vIHRoZSAmIG9wZXJhdG9yIGZvciB0aGUgcmV0dXJuIHR5cGUgb2YgZ2V0PD4oKS4K
LSAgRVhQRUNUX0VRKCZuLCAmKGdldDwxPih0KSkpCi0gICAgICA8PCAiVGhlIGFkZHJlc3Mgb2Yg
YSByZWZlcmVuY2UgZmllbGQgc2hvdWxkIGVxdWFsIHRoZSBhZGRyZXNzIG9mICIKLSAgICAgIDw8
ICJ0aGUgdW5kZXJseWluZyB2YXJpYWJsZS4iOwotCi0gIGdldDwxPih0KSA9IDI7Ci0gIEVYUEVD
VF9FUSgyLCBuKQotICAgICAgPDwgIkNoYW5naW5nIGEgcmVmZXJlbmNlIGZpZWxkIHNob3VsZCB1
cGRhdGUgdGhlIHVuZGVybHlpbmcgdmFyaWFibGUuIjsKLX0KLQotLy8gVGVzdHMgdGhhdCB0dXBs
ZSdzIGRlZmF1bHQgY29uc3RydWN0b3IgZGVmYXVsdCBpbml0aWFsaXplcyBlYWNoIGZpZWxkLgot
Ly8gVGhpcyB0ZXN0IG5lZWRzIHRvIGNvbXBpbGUgd2l0aG91dCBnZW5lcmF0aW5nIHdhcm5pbmdz
LgotVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yRGVmYXVsdElu
aXRpYWxpemVzRWFjaEZpZWxkKSB7Ci0gIC8vIFRoZSBUUjEgcmVwb3J0IHJlcXVpcmVzIHRoYXQg
dHVwbGUncyBkZWZhdWx0IGNvbnN0cnVjdG9yIGRlZmF1bHQKLSAgLy8gaW5pdGlhbGl6ZXMgZWFj
aCBmaWVsZCwgZXZlbiBpZiBpdCdzIGEgcHJpbWl0aXZlIHR5cGUuICBJZiB0aGUKLSAgLy8gaW1w
bGVtZW50YXRpb24gZm9yZ2V0cyB0byBkbyB0aGlzLCB0aGlzIHRlc3Qgd2lsbCBjYXRjaCBpdCBi
eQotICAvLyBnZW5lcmF0aW5nIHdhcm5pbmdzIGFib3V0IHVzaW5nIHVuaW5pdGlhbGl6ZWQgdmFy
aWFibGVzIChhc3N1bWluZwotICAvLyBhIGRlY2VudCBjb21waWxlcikuCi0KLSAgdHVwbGU8PiBl
bXB0eTsKLQotICB0dXBsZTxpbnQ+IGExLCBiMTsKLSAgYjEgPSBhMTsKLSAgRVhQRUNUX0VRKDAs
IGdldDwwPihiMSkpOwotCi0gIHR1cGxlPGludCwgZG91YmxlPiBhMiwgYjI7Ci0gIGIyID0gYTI7
Ci0gIEVYUEVDVF9FUSgwLCBnZXQ8MD4oYjIpKTsKLSAgRVhQRUNUX0VRKDAuMCwgZ2V0PDE+KGIy
KSk7Ci0KLSAgdHVwbGU8ZG91YmxlLCBjaGFyLCBib29sKj4gYTMsIGIzOwotICBiMyA9IGEzOwot
ICBFWFBFQ1RfRVEoMC4wLCBnZXQ8MD4oYjMpKTsKLSAgRVhQRUNUX0VRKCdcMCcsIGdldDwxPihi
MykpOwotICBFWFBFQ1RfVFJVRShnZXQ8Mj4oYjMpID09IE5VTEwpOwotCi0gIHR1cGxlPGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludD4gYTEwLCBiMTA7Ci0g
IGIxMCA9IGExMDsKLSAgRVhQRUNUX0VRKDAsIGdldDwwPihiMTApKTsKLSAgRVhQRUNUX0VRKDAs
IGdldDwxPihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDwyPihiMTApKTsKLSAgRVhQRUNUX0VR
KDAsIGdldDwzPihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDw0PihiMTApKTsKLSAgRVhQRUNU
X0VRKDAsIGdldDw1PihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDw2PihiMTApKTsKLSAgRVhQ
RUNUX0VRKDAsIGdldDw3PihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDw4PihiMTApKTsKLSAg
RVhQRUNUX0VRKDAsIGdldDw5PihiMTApKTsKLX0KLQotLy8gVGVzdHMgY29uc3RydWN0aW5nIGEg
dHVwbGUgZnJvbSBpdHMgZmllbGRzLgotVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgQ29uc3Ry
dWN0c0Zyb21GaWVsZHMpIHsKLSAgaW50IG4gPSAxOwotICAvLyBSZWZlcmVuY2UgZmllbGQuCi0g
IHR1cGxlPGludCY+IGEobik7Ci0gIEVYUEVDVF9FUSgmbiwgJihnZXQ8MD4oYSkpKTsKLQotICAv
LyBOb24tcmVmZXJlbmNlIGZpZWxkcy4KLSAgdHVwbGU8aW50LCBjaGFyPiBiKDUsICdhJyk7Ci0g
IEVYUEVDVF9FUSg1LCBnZXQ8MD4oYikpOwotICBFWFBFQ1RfRVEoJ2EnLCBnZXQ8MT4oYikpOwot
Ci0gIC8vIENvbnN0IHJlZmVyZW5jZSBmaWVsZC4KLSAgY29uc3QgaW50IG0gPSAyOwotICB0dXBs
ZTxib29sLCBjb25zdCBpbnQmPiBjKHRydWUsIG0pOwotICBFWFBFQ1RfVFJVRShnZXQ8MD4oYykp
OwotICBFWFBFQ1RfRVEoJm0sICYoZ2V0PDE+KGMpKSk7Ci19Ci0KLS8vIFRlc3RzIHR1cGxlJ3Mg
Y29weSBjb25zdHJ1Y3Rvci4KLVRFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3QsIENvcHlDb25zdHJ1
Y3RvcikgewotICB0dXBsZTxkb3VibGUsIGJvb2w+IGEoMC4wLCB0cnVlKTsKLSAgdHVwbGU8ZG91
YmxlLCBib29sPiBiKGEpOwotCi0gIEVYUEVDVF9ET1VCTEVfRVEoMC4wLCBnZXQ8MD4oYikpOwot
ICBFWFBFQ1RfVFJVRShnZXQ8MT4oYikpOwotfQotCi0vLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSB0
dXBsZSBmcm9tIGFub3RoZXIgdHVwbGUgdGhhdCBoYXMgYSBjb21wYXRpYmxlCi0vLyBidXQgZGlm
ZmVyZW50IHR5cGUuCi1URVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBDb25zdHJ1Y3RzRnJvbURp
ZmZlcmVudFR1cGxlVHlwZSkgewotICB0dXBsZTxpbnQsIGludCwgY2hhcj4gYSgwLCAxLCAnYScp
OwotICB0dXBsZTxkb3VibGUsIGxvbmcsIGludD4gYihhKTsKLQotICBFWFBFQ1RfRE9VQkxFX0VR
KDAuMCwgZ2V0PDA+KGIpKTsKLSAgRVhQRUNUX0VRKDEsIGdldDwxPihiKSk7Ci0gIEVYUEVDVF9F
USgnYScsIGdldDwyPihiKSk7Ci19Ci0KLS8vIFRlc3RzIGNvbnN0cnVjdGluZyBhIDItdHVwbGUg
ZnJvbSBhbiBzdGQ6OnBhaXIuCi1URVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBDb25zdHJ1Y3Rz
RnJvbVBhaXIpIHsKLSAgOjpzdGQ6OnBhaXI8aW50LCBjaGFyPiBhKDEsICdhJyk7Ci0gIHR1cGxl
PGludCwgY2hhcj4gYihhKTsKLSAgdHVwbGU8aW50LCBjb25zdCBjaGFyJj4gYyhhKTsKLX0KLQot
Ly8gVGVzdHMgYXNzaWduaW5nIGEgdHVwbGUgdG8gYW5vdGhlciB0dXBsZSB3aXRoIHRoZSBzYW1l
IHR5cGUuCi1URVNUKFR1cGxlQXNzaWdubWVudFRlc3QsIEFzc2lnbnNUb1NhbWVUdXBsZVR5cGUp
IHsKLSAgY29uc3QgdHVwbGU8aW50LCBsb25nPiBhKDUsIDdMKTsKLSAgdHVwbGU8aW50LCBsb25n
PiBiOwotICBiID0gYTsKLSAgRVhQRUNUX0VRKDUsIGdldDwwPihiKSk7Ci0gIEVYUEVDVF9FUSg3
TCwgZ2V0PDE+KGIpKTsKLX0KLQotLy8gVGVzdHMgYXNzaWduaW5nIGEgdHVwbGUgdG8gYW5vdGhl
ciB0dXBsZSB3aXRoIGEgZGlmZmVyZW50IGJ1dAotLy8gY29tcGF0aWJsZSB0eXBlLgotVEVTVChU
dXBsZUFzc2lnbm1lbnRUZXN0LCBBc3NpZ25zVG9EaWZmZXJlbnRUdXBsZVR5cGUpIHsKLSAgY29u
c3QgdHVwbGU8aW50LCBsb25nLCBib29sPiBhKDEsIDdMLCB0cnVlKTsKLSAgdHVwbGU8bG9uZywg
aW50LCBib29sPiBiOwotICBiID0gYTsKLSAgRVhQRUNUX0VRKDFMLCBnZXQ8MD4oYikpOwotICBF
WFBFQ1RfRVEoNywgZ2V0PDE+KGIpKTsKLSAgRVhQRUNUX1RSVUUoZ2V0PDI+KGIpKTsKLX0KLQot
Ly8gVGVzdHMgYXNzaWduaW5nIGFuIHN0ZDo6cGFpciB0byBhIDItdHVwbGUuCi1URVNUKFR1cGxl
QXNzaWdubWVudFRlc3QsIEFzc2lnbnNGcm9tUGFpcikgewotICBjb25zdCA6OnN0ZDo6cGFpcjxp
bnQsIGJvb2w+IGEoNSwgdHJ1ZSk7Ci0gIHR1cGxlPGludCwgYm9vbD4gYjsKLSAgYiA9IGE7Ci0g
IEVYUEVDVF9FUSg1LCBnZXQ8MD4oYikpOwotICBFWFBFQ1RfVFJVRShnZXQ8MT4oYikpOwotCi0g
IHR1cGxlPGxvbmcsIGJvb2w+IGM7Ci0gIGMgPSBhOwotICBFWFBFQ1RfRVEoNUwsIGdldDwwPihj
KSk7Ci0gIEVYUEVDVF9UUlVFKGdldDwxPihjKSk7Ci19Ci0KLS8vIEEgZml4dHVyZSBmb3IgdGVz
dGluZyBiaWcgdHVwbGVzLgotY2xhc3MgQmlnVHVwbGVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewotIHByb3RlY3RlZDoKLSAgdHlwZWRlZiB0dXBsZTxpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQ+IEJpZ1R1cGxlOwotCi0gIEJpZ1R1cGxlVGVzdCgp
IDoKLSAgICAgIGFfKDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIpLAotICAgICAgYl8oMSwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMykge30KLQotICBCaWdUdXBsZSBhXywgYl87Ci19Owot
Ci0vLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYmlnIHR1cGxlcy4KLVRFU1RfRihCaWdUdXBsZVRlc3Qs
IENvbnN0cnVjdGlvbikgewotICBCaWdUdXBsZSBhOwotICBCaWdUdXBsZSBiKGJfKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBnZXQ8Tj4odCkgcmV0dXJucyB0aGUgTi10aCAoMC1iYXNlZCkgZmllbGQg
b2YgdHVwbGUgdC4KLVRFU1RfRihCaWdUdXBsZVRlc3QsIGdldCkgewotICBFWFBFQ1RfRVEoMSwg
Z2V0PDA+KGFfKSk7Ci0gIEVYUEVDVF9FUSgyLCBnZXQ8OT4oYV8pKTsKLQotICAvLyBUZXN0cyB0
aGF0IGdldCgpIHdvcmtzIG9uIGEgY29uc3QgdHVwbGUgdG9vLgotICBjb25zdCBCaWdUdXBsZSBh
KGFfKTsKLSAgRVhQRUNUX0VRKDEsIGdldDwwPihhKSk7Ci0gIEVYUEVDVF9FUSgyLCBnZXQ8OT4o
YSkpOwotfQotCi0vLyBUZXN0cyBjb21wYXJpbmcgYmlnIHR1cGxlcy4KLVRFU1RfRihCaWdUdXBs
ZVRlc3QsIENvbXBhcmlzb25zKSB7Ci0gIEVYUEVDVF9UUlVFKGFfID09IGFfKTsKLSAgRVhQRUNU
X0ZBTFNFKGFfICE9IGFfKTsKLQotICBFWFBFQ1RfVFJVRShhXyAhPSBiXyk7Ci0gIEVYUEVDVF9G
QUxTRShhXyA9PSBiXyk7Ci19Ci0KLVRFU1QoTWFrZVR1cGxlVGVzdCwgV29ya3NGb3JTY2FsYXJU
eXBlcykgewotICB0dXBsZTxib29sLCBpbnQ+IGE7Ci0gIGEgPSBtYWtlX3R1cGxlKHRydWUsIDUp
OwotICBFWFBFQ1RfVFJVRShnZXQ8MD4oYSkpOwotICBFWFBFQ1RfRVEoNSwgZ2V0PDE+KGEpKTsK
LQotICB0dXBsZTxjaGFyLCBpbnQsIGxvbmc+IGI7Ci0gIGIgPSBtYWtlX3R1cGxlKCdhJywgJ2In
LCA1KTsKLSAgRVhQRUNUX0VRKCdhJywgZ2V0PDA+KGIpKTsKLSAgRVhQRUNUX0VRKCdiJywgZ2V0
PDE+KGIpKTsKLSAgRVhQRUNUX0VRKDUsIGdldDwyPihiKSk7Ci19Ci0KLVRFU1QoTWFrZVR1cGxl
VGVzdCwgV29ya3NGb3JQb2ludGVycykgewotICBpbnQgYVtdID0geyAxLCAyLCAzLCA0IH07Ci0g
IGNvbnN0IGNoYXIqIGNvbnN0IHN0ciA9ICJoaSI7Ci0gIGludCogY29uc3QgcCA9IGE7Ci0KLSAg
dHVwbGU8Y29uc3QgY2hhciosIGludCo+IHQ7Ci0gIHQgPSBtYWtlX3R1cGxlKHN0ciwgcCk7Ci0g
IEVYUEVDVF9FUShzdHIsIGdldDwwPih0KSk7Ci0gIEVYUEVDVF9FUShwLCBnZXQ8MT4odCkpOwot
fQotCi19ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYwppbmRleCA3OWE4YTg3ZGNmZGJkZTUzYzFl
MGQ4YzZkMTFhOTg2OTIyYjAyZmY4Li5lZDk2NDIxYzY3Y2E4YTJmYjM4ZjNkODg5NjAyMzFlZjIy
YmVhNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5
cGVkLXRlc3QyX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dC10eXBlZC10ZXN0Ml90ZXN0LmNjCkBAIC0yNiwxMyArMjYsMTIgQEAKIC8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
IC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUg
InRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgiCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
KyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRl
c3RfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVz
dF90ZXN0LmNjCmluZGV4IGYyYzM5NzIzMTAxNzc5ZTc3MTg0N2Q1OTJkOWZhYmI1NmYzYjQ1YzYu
LmMzOGJiOTRhMjkwZDkxNDAzMjI5MTE5ZTMwYjlmZGM1NTg5NmE0ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNjCkBA
IC0yNiwxNCArMjYsMTggQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisK
KworI2luY2x1ZGUgInRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgiCiAKICNpbmNsdWRlIDxz
ZXQ+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAidGVzdC9ndGVzdC10eXBlZC10ZXN0
X3Rlc3QuaCIKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCisKKyNpZiBfTVNDX1ZFUgorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDEy
NyAvKiBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50ICovKQorI2VuZGlmICAvLyAg
X01TQ19WRVIKIAogdXNpbmcgdGVzdGluZzo6VGVzdDsKIApAQCAtMTY1LDYgKzE2OSw0MCBAQCBU
WVBFRF9URVNUKE51bWVyaWNUZXN0LCBEZWZhdWx0SXNaZXJvKSB7CiAKIH0gIC8vIG5hbWVzcGFj
ZSBsaWJyYXJ5MQogCisvLyBUZXN0cyB0aGF0IGN1c3RvbSBuYW1lcyB3b3JrLgordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlZFRlc3RXaXRoTmFtZXMgOiBwdWJsaWMgVGVzdCB7fTsK
KworY2xhc3MgVHlwZWRUZXN0TmFtZXMgeworIHB1YmxpYzoKKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBHZXROYW1lKGludCBpKSB7CisgICAgaWYgKHRlc3Rp
bmc6OmludGVybmFsOjpJc1NhbWU8VCwgY2hhcj46OnZhbHVlKSB7CisgICAgICByZXR1cm4gc3Rk
OjpzdHJpbmcoImNoYXJfIikgKyA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoaSk7CisgICAgfQor
ICAgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFQsIGludD46OnZhbHVlKSB7CisgICAg
ICByZXR1cm4gc3RkOjpzdHJpbmcoImludF8iKSArIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhp
KTsKKyAgICB9CisgIH0KK307CisKK1RZUEVEX1RFU1RfQ0FTRShUeXBlZFRlc3RXaXRoTmFtZXMs
IFR3b1R5cGVzLCBUeXBlZFRlc3ROYW1lcyk7CisKK1RZUEVEX1RFU1QoVHlwZWRUZXN0V2l0aE5h
bWVzLCBUZXN0Q2FzZU5hbWUpIHsKKyAgaWYgKHRlc3Rpbmc6OmludGVybmFsOjpJc1NhbWU8VHlw
ZVBhcmFtLCBjaGFyPjo6dmFsdWUpIHsKKyAgICBFWFBFQ1RfU1RSRVEoOjp0ZXN0aW5nOjpVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKQorICAgICAgICAgICAgICAgICAgICAgLT5jdXJyZW50X3Rlc3Rf
aW5mbygpCisgICAgICAgICAgICAgICAgICAgICAtPnRlc3RfY2FzZV9uYW1lKCksCisgICAgICAg
ICAgICAgICAgICJUeXBlZFRlc3RXaXRoTmFtZXMvY2hhcl8wIik7CisgIH0KKyAgaWYgKHRlc3Rp
bmc6OmludGVybmFsOjpJc1NhbWU8VHlwZVBhcmFtLCBpbnQ+Ojp2YWx1ZSkgeworICAgIEVYUEVD
VF9TVFJFUSg6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpCisgICAgICAgICAgICAg
ICAgICAgICAtPmN1cnJlbnRfdGVzdF9pbmZvKCkKKyAgICAgICAgICAgICAgICAgICAgIC0+dGVz
dF9jYXNlX25hbWUoKSwKKyAgICAgICAgICAgICAgICAgIlR5cGVkVGVzdFdpdGhOYW1lcy9pbnRf
MSIpOworICB9Cit9CisKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QKIAogLy8gVGhp
cyAjaWZkZWYgYmxvY2sgdGVzdHMgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgpAQCAtMjY1LDYg
KzMwMyw0NiBAQCBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChEZXJpdmVkVGVzdCwKIHR5cGVk
ZWYgVHlwZXM8c2hvcnQsIGxvbmc+IE15VHdvVHlwZXM7CiBJTlNUQU5USUFURV9UWVBFRF9URVNU
X0NBU0VfUChNeSwgRGVyaXZlZFRlc3QsIE15VHdvVHlwZXMpOwogCisvLyBUZXN0cyB0aGF0IGN1
c3RvbSBuYW1lcyB3b3JrIHdpdGggdHlwZSBwYXJhbWV0cml6ZWQgdGVzdHMuIFdlIHJldXNlIHRo
ZQorLy8gVHdvVHlwZXMgZnJvbSBhYm92ZSBoZXJlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citj
bGFzcyBUeXBlUGFyYW1ldHJpemVkVGVzdFdpdGhOYW1lcyA6IHB1YmxpYyBUZXN0IHt9OworCitU
WVBFRF9URVNUX0NBU0VfUChUeXBlUGFyYW1ldHJpemVkVGVzdFdpdGhOYW1lcyk7CisKK1RZUEVE
X1RFU1RfUChUeXBlUGFyYW1ldHJpemVkVGVzdFdpdGhOYW1lcywgVGVzdENhc2VOYW1lKSB7Cisg
IGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFR5cGVQYXJhbSwgY2hhcj46OnZhbHVlKSB7
CisgICAgRVhQRUNUX1NUUkVRKDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCkKKyAg
ICAgICAgICAgICAgICAgICAgIC0+Y3VycmVudF90ZXN0X2luZm8oKQorICAgICAgICAgICAgICAg
ICAgICAgLT50ZXN0X2Nhc2VfbmFtZSgpLAorICAgICAgICAgICAgICAgICAiQ3VzdG9tTmFtZS9U
eXBlUGFyYW1ldHJpemVkVGVzdFdpdGhOYW1lcy9wX2NoYXJfMCIpOworICB9CisgIGlmICh0ZXN0
aW5nOjppbnRlcm5hbDo6SXNTYW1lPFR5cGVQYXJhbSwgaW50Pjo6dmFsdWUpIHsKKyAgICBFWFBF
Q1RfU1RSRVEoOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKQorICAgICAgICAgICAg
ICAgICAgICAgLT5jdXJyZW50X3Rlc3RfaW5mbygpCisgICAgICAgICAgICAgICAgICAgICAtPnRl
c3RfY2FzZV9uYW1lKCksCisgICAgICAgICAgICAgICAgICJDdXN0b21OYW1lL1R5cGVQYXJhbWV0
cml6ZWRUZXN0V2l0aE5hbWVzL3BfaW50XzEiKTsKKyAgfQorfQorCitSRUdJU1RFUl9UWVBFRF9U
RVNUX0NBU0VfUChUeXBlUGFyYW1ldHJpemVkVGVzdFdpdGhOYW1lcywgVGVzdENhc2VOYW1lKTsK
KworY2xhc3MgVHlwZVBhcmFtZXRyaXplZFRlc3ROYW1lcyB7CisgcHVibGljOgorICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldE5hbWUoaW50IGkpIHsKKyAg
ICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxULCBjaGFyPjo6dmFsdWUpIHsKKyAgICAg
IHJldHVybiBzdGQ6OnN0cmluZygicF9jaGFyXyIpICsgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5n
KGkpOworICAgIH0KKyAgICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxULCBpbnQ+Ojp2
YWx1ZSkgeworICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCJwX2ludF8iKSArIDo6dGVzdGluZzo6
UHJpbnRUb1N0cmluZyhpKTsKKyAgICB9CisgIH0KK307CisKK0lOU1RBTlRJQVRFX1RZUEVEX1RF
U1RfQ0FTRV9QKEN1c3RvbU5hbWUsIFR5cGVQYXJhbWV0cml6ZWRUZXN0V2l0aE5hbWVzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVHdvVHlwZXMsIFR5cGVQYXJhbWV0cml6ZWRUZXN0
TmFtZXMpOworCiAvLyBUZXN0cyB0aGF0IG11bHRpcGxlIFRZUEVEX1RFU1RfQ0FTRV9QJ3MgY2Fu
IGJlIGRlZmluZWQgaW4gdGhlIHNhbWUKIC8vIHRyYW5zbGF0aW9uIHVuaXQuCiAKQEAgLTM0Myw2
ICs0MjEsMjUgQEAgUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoTnVtZXJpY1Rlc3QsCiB0eXBl
ZGVmIFR5cGVzPGludCwgZG91YmxlPiBOdW1lcmljVHlwZXM7CiBJTlNUQU5USUFURV9UWVBFRF9U
RVNUX0NBU0VfUChNeSwgTnVtZXJpY1Rlc3QsIE51bWVyaWNUeXBlcyk7CiAKK3N0YXRpYyBjb25z
dCBjaGFyKiBHZXRUZXN0TmFtZSgpIHsKKyAgcmV0dXJuIHRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpLT5uYW1lKCk7Cit9CisvLyBUZXN0IHRoZSBz
dHJpcHBpbmcgb2Ygc3BhY2UgZnJvbSB0ZXN0IG5hbWVzCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgVHJpbW1lZFRlc3QgOiBwdWJsaWMgVGVzdCB7IH07CitUWVBFRF9URVNUX0NBU0VfUChU
cmltbWVkVGVzdCk7CitUWVBFRF9URVNUX1AoVHJpbW1lZFRlc3QsIFRlc3QxKSB7IEVYUEVDVF9T
VFJFUSgiVGVzdDEiLCBHZXRUZXN0TmFtZSgpKTsgfQorVFlQRURfVEVTVF9QKFRyaW1tZWRUZXN0
LCBUZXN0MikgeyBFWFBFQ1RfU1RSRVEoIlRlc3QyIiwgR2V0VGVzdE5hbWUoKSk7IH0KK1RZUEVE
X1RFU1RfUChUcmltbWVkVGVzdCwgVGVzdDMpIHsgRVhQRUNUX1NUUkVRKCJUZXN0MyIsIEdldFRl
c3ROYW1lKCkpOyB9CitUWVBFRF9URVNUX1AoVHJpbW1lZFRlc3QsIFRlc3Q0KSB7IEVYUEVDVF9T
VFJFUSgiVGVzdDQiLCBHZXRUZXN0TmFtZSgpKTsgfQorVFlQRURfVEVTVF9QKFRyaW1tZWRUZXN0
LCBUZXN0NSkgeyBFWFBFQ1RfU1RSRVEoIlRlc3Q1IiwgR2V0VGVzdE5hbWUoKSk7IH0KK1JFR0lT
VEVSX1RZUEVEX1RFU1RfQ0FTRV9QKAorICAgIFRyaW1tZWRUZXN0LAorICAgIFRlc3QxLCBUZXN0
MixUZXN0MyAsIFRlc3Q0ICxUZXN0NSApOyAgLy8gTk9MSU5UCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyPiBzdHJ1Y3QgTXlQYWlyIHt9OworLy8gQmUgc3VyZSB0byB0cnkgYSB0
eXBlIHdpdGggYSBjb21tYSBpbiBpdHMgbmFtZSBqdXN0IGluIGNhc2UgaXQgbWF0dGVycy4KK3R5
cGVkZWYgVHlwZXM8aW50LCBkb3VibGUsIE15UGFpcjxpbnQsIGludD4gPiBUcmltVHlwZXM7CitJ
TlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgVHJpbW1lZFRlc3QsIFRyaW1UeXBlcyk7
CisKIH0gIC8vIG5hbWVzcGFjZSBsaWJyYXJ5MgogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBF
RF9URVNUX1AKQEAgLTM1Nyw0ICs0NTQsOCBAQCBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0Vf
UChNeSwgTnVtZXJpY1Rlc3QsIE51bWVyaWNUeXBlcyk7CiAvLyBtdXN0IGJlIGRlZmluZWQpLiBU
aGlzIGR1bW15IHRlc3Qga2VlcHMgZ3Rlc3RfbWFpbiBsaW5rZWQgaW4uCiBURVNUKER1bW15VGVz
dCwgVHlwZWRUZXN0c0FyZU5vdFN1cHBvcnRlZE9uVGhpc1BsYXRmb3JtKSB7fQogCisjaWYgX01T
Q19WRVIKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQxMjcKKyNlbmRp
ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIF9NU0NfVkVSCisKICNlbmRpZiAgLy8g
I2lmICFkZWZpbmVkKEdURVNUX0hBU19UWVBFRF9URVNUKSAmJiAhZGVmaW5lZChHVEVTVF9IQVNf
VFlQRURfVEVTVF9QKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdC10eXBlZC10ZXN0X3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3QtdHlwZWQtdGVzdF90ZXN0LmgKaW5kZXggNDBkZmVhYzZlMDFkOTdlY2Y3ZmViYjg2NWZjZTY2
ODQ4YmE4ZThkYi4uMmNjZTY3YzgyNWE2Y2FiZGI5YTU0YjkxOTI5YzAwYzk5MmEwZDQ3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rl
c3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3Rf
dGVzdC5oCkBAIC0yNiwxMyArMjYsMTIgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9u
ZyBXYW4pCisKIAogI2lmbmRlZiBHVEVTVF9URVNUX0dURVNUX1RZUEVEX1RFU1RfVEVTVF9IXwog
I2RlZmluZSBHVEVTVF9URVNUX0dURVNUX1RZUEVEX1RFU1RfVEVTVF9IXwogCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAjaWYgR1RFU1RfSEFT
X1RZUEVEX1RFU1RfUAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYwppbmRleCA3ZTBmOGY4MDQ1ZDcxYzAxNWQxMjk0
ZmZlZjRjYTU0NWRkYzU1MWY5Li5mM2VhMDNhNTk2ZDBmOTlhMzkxMjUyNjMwZGNhMTA2MjI5MzEx
MmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXVuaXR0
ZXN0LWFwaV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Qt
dW5pdHRlc3QtYXBpX3Rlc3QuY2MKQEAgLTI1LDE1ICsyNSwxNCBAQAogLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAog
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB2bGFkbEBn
b29nbGUuY29tIChWbGFkIExvc2V2KQotLy8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJh
bWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tp
bmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAvLyBUaGlzIGZpbGUgY29udGFpbnMgdGVz
dHMgdmVyaWZ5aW5nIGNvcnJlY3RuZXNzIG9mIGRhdGEgcHJvdmlkZWQgdmlhCiAvLyBVbml0VGVz
dCdzIHB1YmxpYyBtZXRob2RzLgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgogCiAjaW5jbHVkZSA8c3RyaW5nLmg+ICAvLyBGb3Igc3RyY21wLgog
I2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTU0LDcgKzUzLDcgQEAgY2xhc3MgVW5pdFRlc3RIZWxw
ZXIgewogIHB1YmxpYzoKICAgLy8gUmV0dXJucyB0aGUgYXJyYXkgb2YgcG9pbnRlcnMgdG8gYWxs
IHRlc3QgY2FzZXMgc29ydGVkIGJ5IHRoZSB0ZXN0IGNhc2UKICAgLy8gbmFtZS4gIFRoZSBjYWxs
ZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZSBhcnJheS4KLSAgc3RhdGljIFRlc3RD
YXNlIGNvbnN0KiogY29uc3QgR2V0U29ydGVkVGVzdENhc2VzKCkgeworICBzdGF0aWMgVGVzdENh
c2UgY29uc3QqKiBHZXRTb3J0ZWRUZXN0Q2FzZXMoKSB7CiAgICAgVW5pdFRlc3QmIHVuaXRfdGVz
dCA9ICpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKTsKICAgICBUZXN0Q2FzZSBjb25zdCoqIGNvbnN0
IHRlc3RfY2FzZXMgPQogICAgICAgICBuZXcgY29uc3QgVGVzdENhc2UqW3VuaXRfdGVzdC50b3Rh
bF90ZXN0X2Nhc2VfY291bnQoKV07CkBAIC04Myw3ICs4Miw3IEBAIGNsYXNzIFVuaXRUZXN0SGVs
cGVyIHsKICAgLy8gUmV0dXJucyB0aGUgYXJyYXkgb2YgcG9pbnRlcnMgdG8gYWxsIHRlc3RzIGlu
IGEgcGFydGljdWxhciB0ZXN0IGNhc2UKICAgLy8gc29ydGVkIGJ5IHRoZSB0ZXN0IG5hbWUuICBU
aGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUKICAgLy8gYXJyYXkuCi0g
IHN0YXRpYyBUZXN0SW5mbyBjb25zdCoqIGNvbnN0IEdldFNvcnRlZFRlc3RzKGNvbnN0IFRlc3RD
YXNlKiB0ZXN0X2Nhc2UpIHsKKyAgc3RhdGljIFRlc3RJbmZvIGNvbnN0KiogR2V0U29ydGVkVGVz
dHMoY29uc3QgVGVzdENhc2UqIHRlc3RfY2FzZSkgewogICAgIFRlc3RJbmZvIGNvbnN0KiogY29u
c3QgdGVzdHMgPQogICAgICAgICBuZXcgY29uc3QgVGVzdEluZm8qW3Rlc3RfY2FzZS0+dG90YWxf
dGVzdF9jb3VudCgpXTsKIApAQCAtMTAzLDEyICsxMDIsNiBAQCBUWVBFRF9URVNUKFRlc3RDYXNl
V2l0aENvbW1lbnRUZXN0LCBEdW1teSkge30KIAogY29uc3QgaW50IGtUeXBlZFRlc3RDYXNlcyA9
IDE7CiBjb25zdCBpbnQga1R5cGVkVGVzdHMgPSAxOwotCi1TdHJpbmcgR2V0RXhwZWN0ZWRUZXN0
Q2FzZUNvbW1lbnQoKSB7Ci0gIE1lc3NhZ2UgY29tbWVudDsKLSAgY29tbWVudCA8PCAiVHlwZVBh
cmFtID0gIiA8PCBHZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIoKTsKLSAgcmV0dXJuIGNvbW1lbnQu
R2V0U3RyaW5nKCk7Ci19CiAjZWxzZQogY29uc3QgaW50IGtUeXBlZFRlc3RDYXNlcyA9IDA7CiBj
b25zdCBpbnQga1R5cGVkVGVzdHMgPSAwOwpAQCAtMTQzLDEyICsxMzYsMTkgQEAgVEVTVChBcGlU
ZXN0LCBVbml0VGVzdEltbXV0YWJsZUFjY2Vzc29yc1dvcmspIHsKICAgUmVjb3JkUHJvcGVydHko
ImtleSIsICJ2YWx1ZSIpOwogfQogCitBc3NlcnRpb25SZXN1bHQgSXNOdWxsKGNvbnN0IGNoYXIq
IHN0cikgeworICBpZiAoc3RyICE9IE5VTEwpIHsKKyAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0
aW9uRmFpbHVyZSgpIDw8ICJhcmd1bWVudCBpcyAiIDw8IHN0cjsKKyAgfQorICByZXR1cm4gQXNz
ZXJ0aW9uU3VjY2VzcygpOworfQorCiBURVNUKEFwaVRlc3QsIFRlc3RDYXNlSW1tdXRhYmxlQWNj
ZXNzb3JzV29yaykgewogICBjb25zdCBUZXN0Q2FzZSogdGVzdF9jYXNlID0gVW5pdFRlc3RIZWxw
ZXI6OkZpbmRUZXN0Q2FzZSgiQXBpVGVzdCIpOwogICBBU1NFUlRfVFJVRSh0ZXN0X2Nhc2UgIT0g
TlVMTCk7CiAKICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdF9jYXNlLT5uYW1lKCkpOwot
ICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RfY2FzZS0+Y29tbWVudCgpKTsKKyAgRVhQRUNUX1RSVUUo
SXNOdWxsKHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVDVF9UUlVFKHRlc3RfY2Fz
ZS0+c2hvdWxkX3J1bigpKTsKICAgRVhQRUNUX0VRKDEsIHRlc3RfY2FzZS0+ZGlzYWJsZWRfdGVz
dF9jb3VudCgpKTsKICAgRVhQRUNUX0VRKDMsIHRlc3RfY2FzZS0+dGVzdF90b19ydW5fY291bnQo
KSk7CkBAIC0xNTgsMjYgKzE1OCwyNiBAQCBURVNUKEFwaVRlc3QsIFRlc3RDYXNlSW1tdXRhYmxl
QWNjZXNzb3JzV29yaykgewogCiAgIEVYUEVDVF9TVFJFUSgiRElTQUJMRURfRHVtbXkxIiwgdGVz
dHNbMF0tPm5hbWUoKSk7CiAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzBdLT50ZXN0
X2Nhc2VfbmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1swXS0+Y29tbWVudCgpKTsK
LSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1swXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgIEVY
UEVDVF9UUlVFKElzTnVsbCh0ZXN0c1swXS0+dmFsdWVfcGFyYW0oKSkpOworICBFWFBFQ1RfVFJV
RShJc051bGwodGVzdHNbMF0tPnR5cGVfcGFyYW0oKSkpOwogICBFWFBFQ1RfRkFMU0UodGVzdHNb
MF0tPnNob3VsZF9ydW4oKSk7CiAKICAgRVhQRUNUX1NUUkVRKCJUZXN0Q2FzZURpc2FibGVkQWNj
ZXNzb3JzV29yayIsIHRlc3RzWzFdLT5uYW1lKCkpOwogICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3Qi
LCB0ZXN0c1sxXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNb
MV0tPmNvbW1lbnQoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMV0tPnRlc3RfY2FzZV9j
b21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMV0tPnZhbHVlX3BhcmFtKCkp
KTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzFdLT50eXBlX3BhcmFtKCkpKTsKICAgRVhQ
RUNUX1RSVUUodGVzdHNbMV0tPnNob3VsZF9ydW4oKSk7CiAKICAgRVhQRUNUX1NUUkVRKCJUZXN0
Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dvcmsiLCB0ZXN0c1syXS0+bmFtZSgpKTsKICAgRVhQRUNU
X1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbMl0tPnRlc3RfY2FzZV9uYW1lKCkpOwotICBFWFBFQ1Rf
U1RSRVEoIiIsIHRlc3RzWzJdLT5jb21tZW50KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3Rz
WzJdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzJd
LT52YWx1ZV9wYXJhbSgpKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1syXS0+dHlwZV9w
YXJhbSgpKSk7CiAgIEVYUEVDVF9UUlVFKHRlc3RzWzJdLT5zaG91bGRfcnVuKCkpOwogCiAgIEVY
UEVDVF9TVFJFUSgiVW5pdFRlc3RJbW11dGFibGVBY2Nlc3NvcnNXb3JrIiwgdGVzdHNbM10tPm5h
bWUoKSk7CiAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzNdLT50ZXN0X2Nhc2VfbmFt
ZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1szXS0+Y29tbWVudCgpKTsKLSAgRVhQRUNU
X1NUUkVRKCIiLCB0ZXN0c1szXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgIEVYUEVDVF9UUlVF
KElzTnVsbCh0ZXN0c1szXS0+dmFsdWVfcGFyYW0oKSkpOworICBFWFBFQ1RfVFJVRShJc051bGwo
dGVzdHNbM10tPnR5cGVfcGFyYW0oKSkpOwogICBFWFBFQ1RfVFJVRSh0ZXN0c1szXS0+c2hvdWxk
X3J1bigpKTsKIAogICBkZWxldGVbXSB0ZXN0czsKQEAgLTE4OCw3ICsxODgsNyBAQCBURVNUKEFw
aVRlc3QsIFRlc3RDYXNlSW1tdXRhYmxlQWNjZXNzb3JzV29yaykgewogICBBU1NFUlRfVFJVRSh0
ZXN0X2Nhc2UgIT0gTlVMTCk7CiAKICAgRVhQRUNUX1NUUkVRKCJUZXN0Q2FzZVdpdGhDb21tZW50
VGVzdC8wIiwgdGVzdF9jYXNlLT5uYW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoR2V0RXhwZWN0ZWRU
ZXN0Q2FzZUNvbW1lbnQoKS5jX3N0cigpLCB0ZXN0X2Nhc2UtPmNvbW1lbnQoKSk7CisgIEVYUEVD
VF9TVFJFUShHZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIoKSwgdGVzdF9jYXNlLT50eXBlX3BhcmFt
KCkpOwogICBFWFBFQ1RfVFJVRSh0ZXN0X2Nhc2UtPnNob3VsZF9ydW4oKSk7CiAgIEVYUEVDVF9F
USgwLCB0ZXN0X2Nhc2UtPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgIEVYUEVDVF9FUSgxLCB0
ZXN0X2Nhc2UtPnRlc3RfdG9fcnVuX2NvdW50KCkpOwpAQCAtMTk4LDkgKzE5OCw4IEBAIFRFU1Qo
QXBpVGVzdCwgVGVzdENhc2VJbW11dGFibGVBY2Nlc3NvcnNXb3JrKSB7CiAKICAgRVhQRUNUX1NU
UkVRKCJEdW1teSIsIHRlc3RzWzBdLT5uYW1lKCkpOwogICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNl
V2l0aENvbW1lbnRUZXN0LzAiLCB0ZXN0c1swXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVD
VF9TVFJFUSgiIiwgdGVzdHNbMF0tPmNvbW1lbnQoKSk7Ci0gIEVYUEVDVF9TVFJFUShHZXRFeHBl
Y3RlZFRlc3RDYXNlQ29tbWVudCgpLmNfc3RyKCksCi0gICAgICAgICAgICAgICB0ZXN0c1swXS0+
dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1swXS0+dmFs
dWVfcGFyYW0oKSkpOworICBFWFBFQ1RfU1RSRVEoR2V0VHlwZU5hbWU8aW50PigpLmNfc3RyKCks
IHRlc3RzWzBdLT50eXBlX3BhcmFtKCkpOwogICBFWFBFQ1RfVFJVRSh0ZXN0c1swXS0+c2hvdWxk
X3J1bigpKTsKIAogICBkZWxldGVbXSB0ZXN0czsKQEAgLTIxMiw3ICsyMTEsNyBAQCBURVNUKEFw
aVRlc3QsIFRlc3RDYXNlRGlzYWJsZWRBY2Nlc3NvcnNXb3JrKSB7CiAgIEFTU0VSVF9UUlVFKHRl
c3RfY2FzZSAhPSBOVUxMKTsKIAogICBFWFBFQ1RfU1RSRVEoIkRJU0FCTEVEX1Rlc3QiLCB0ZXN0
X2Nhc2UtPm5hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdF9jYXNlLT5jb21tZW50KCkp
OworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdF9jYXNlLT50eXBlX3BhcmFtKCkpKTsKICAgRVhQ
RUNUX0ZBTFNFKHRlc3RfY2FzZS0+c2hvdWxkX3J1bigpKTsKICAgRVhQRUNUX0VRKDEsIHRlc3Rf
Y2FzZS0+ZGlzYWJsZWRfdGVzdF9jb3VudCgpKTsKICAgRVhQRUNUX0VRKDAsIHRlc3RfY2FzZS0+
dGVzdF90b19ydW5fY291bnQoKSk7CkBAIC0yMjEsOCArMjIwLDggQEAgVEVTVChBcGlUZXN0LCBU
ZXN0Q2FzZURpc2FibGVkQWNjZXNzb3JzV29yaykgewogICBjb25zdCBUZXN0SW5mbyogY29uc3Qg
dGVzdF9pbmZvID0gdGVzdF9jYXNlLT5HZXRUZXN0SW5mbygwKTsKICAgRVhQRUNUX1NUUkVRKCJE
dW1teTIiLCB0ZXN0X2luZm8tPm5hbWUoKSk7CiAgIEVYUEVDVF9TVFJFUSgiRElTQUJMRURfVGVz
dCIsIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVz
dF9pbmZvLT5jb21tZW50KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RfaW5mby0+dGVzdF9j
YXNlX2NvbW1lbnQoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0X2luZm8tPnZhbHVlX3Bh
cmFtKCkpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfaW5mby0+dHlwZV9wYXJhbSgpKSk7
CiAgIEVYUEVDVF9GQUxTRSh0ZXN0X2luZm8tPnNob3VsZF9ydW4oKSk7CiB9CiAKQEAgLTI0Nyw3
ICsyNDYsNyBAQCBjbGFzcyBGaW5hbFN1Y2Nlc3NDaGVja2VyIDogcHVibGljIEVudmlyb25tZW50
IHsKICAgICBjb25zdCBUZXN0Q2FzZSoqIGNvbnN0IHRlc3RfY2FzZXMgPSBVbml0VGVzdEhlbHBl
cjo6R2V0U29ydGVkVGVzdENhc2VzKCk7CiAKICAgICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0
ZXN0X2Nhc2VzWzBdLT5uYW1lKCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdF9jYXNlc1sw
XS0+Y29tbWVudCgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdF9jYXNlc1swXS0+dHlw
ZV9wYXJhbSgpKSk7CiAgICAgRVhQRUNUX1RSVUUodGVzdF9jYXNlc1swXS0+c2hvdWxkX3J1bigp
KTsKICAgICBFWFBFQ1RfRVEoMSwgdGVzdF9jYXNlc1swXS0+ZGlzYWJsZWRfdGVzdF9jb3VudCgp
KTsKICAgICBBU1NFUlRfRVEoNCwgdGVzdF9jYXNlc1swXS0+dG90YWxfdGVzdF9jb3VudCgpKTsK
QEAgLTI1Nyw3ICsyNTYsNyBAQCBjbGFzcyBGaW5hbFN1Y2Nlc3NDaGVja2VyIDogcHVibGljIEVu
dmlyb25tZW50IHsKICAgICBFWFBFQ1RfRkFMU0UodGVzdF9jYXNlc1swXS0+RmFpbGVkKCkpOwog
CiAgICAgRVhQRUNUX1NUUkVRKCJESVNBQkxFRF9UZXN0IiwgdGVzdF9jYXNlc1sxXS0+bmFtZSgp
KTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RfY2FzZXNbMV0tPmNvbW1lbnQoKSk7CisgICAg
RVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfY2FzZXNbMV0tPnR5cGVfcGFyYW0oKSkpOwogICAgIEVY
UEVDVF9GQUxTRSh0ZXN0X2Nhc2VzWzFdLT5zaG91bGRfcnVuKCkpOwogICAgIEVYUEVDVF9FUSgx
LCB0ZXN0X2Nhc2VzWzFdLT5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOwogICAgIEFTU0VSVF9FUSgx
LCB0ZXN0X2Nhc2VzWzFdLT50b3RhbF90ZXN0X2NvdW50KCkpOwpAQCAtMjY2LDggKzI2NSw3IEBA
IGNsYXNzIEZpbmFsU3VjY2Vzc0NoZWNrZXIgOiBwdWJsaWMgRW52aXJvbm1lbnQgewogCiAjaWYg
R1RFU1RfSEFTX1RZUEVEX1RFU1QKICAgICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlV2l0aENvbW1l
bnRUZXN0LzAiLCB0ZXN0X2Nhc2VzWzJdLT5uYW1lKCkpOwotICAgIEVYUEVDVF9TVFJFUShHZXRF
eHBlY3RlZFRlc3RDYXNlQ29tbWVudCgpLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgIHRlc3Rf
Y2FzZXNbMl0tPmNvbW1lbnQoKSk7CisgICAgRVhQRUNUX1NUUkVRKEdldFR5cGVOYW1lPGludD4o
KS5jX3N0cigpLCB0ZXN0X2Nhc2VzWzJdLT50eXBlX3BhcmFtKCkpOwogICAgIEVYUEVDVF9UUlVF
KHRlc3RfY2FzZXNbMl0tPnNob3VsZF9ydW4oKSk7CiAgICAgRVhQRUNUX0VRKDAsIHRlc3RfY2Fz
ZXNbMl0tPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgICAgQVNTRVJUX0VRKDEsIHRlc3RfY2Fz
ZXNbMl0tPnRvdGFsX3Rlc3RfY291bnQoKSk7CkBAIC0yODUsMjQgKzI4MywyNCBAQCBjbGFzcyBG
aW5hbFN1Y2Nlc3NDaGVja2VyIDogcHVibGljIEVudmlyb25tZW50IHsKIAogICAgIEVYUEVDVF9T
VFJFUSgiVGVzdENhc2VEaXNhYmxlZEFjY2Vzc29yc1dvcmsiLCB0ZXN0c1sxXS0+bmFtZSgpKTsK
ICAgICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1sxXS0+dGVzdF9jYXNlX25hbWUoKSk7
Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1sxXS0+Y29tbWVudCgpKTsKLSAgICBFWFBFQ1Rf
U1RSRVEoIiIsIHRlc3RzWzFdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgICBFWFBFQ1RfVFJV
RShJc051bGwodGVzdHNbMV0tPnZhbHVlX3BhcmFtKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051
bGwodGVzdHNbMV0tPnR5cGVfcGFyYW0oKSkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzFdLT5z
aG91bGRfcnVuKCkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzFdLT5yZXN1bHQoKS0+UGFzc2Vk
KCkpOwogICAgIEVYUEVDVF9FUSgwLCB0ZXN0c1sxXS0+cmVzdWx0KCktPnRlc3RfcHJvcGVydHlf
Y291bnQoKSk7CiAKICAgICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlSW1tdXRhYmxlQWNjZXNzb3Jz
V29yayIsIHRlc3RzWzJdLT5uYW1lKCkpOwogICAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRl
c3RzWzJdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzJd
LT5jb21tZW50KCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMl0tPnRlc3RfY2FzZV9j
b21tZW50KCkpOworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1syXS0+dmFsdWVfcGFyYW0o
KSkpOworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1syXS0+dHlwZV9wYXJhbSgpKSk7CiAg
ICAgRVhQRUNUX1RSVUUodGVzdHNbMl0tPnNob3VsZF9ydW4oKSk7CiAgICAgRVhQRUNUX1RSVUUo
dGVzdHNbMl0tPnJlc3VsdCgpLT5QYXNzZWQoKSk7CiAgICAgRVhQRUNUX0VRKDAsIHRlc3RzWzJd
LT5yZXN1bHQoKS0+dGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKIAogICAgIEVYUEVDVF9TVFJFUSgi
VW5pdFRlc3RJbW11dGFibGVBY2Nlc3NvcnNXb3JrIiwgdGVzdHNbM10tPm5hbWUoKSk7CiAgICAg
RVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbM10tPnRlc3RfY2FzZV9uYW1lKCkpOwotICAg
IEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbM10tPmNvbW1lbnQoKSk7Ci0gICAgRVhQRUNUX1NUUkVR
KCIiLCB0ZXN0c1szXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgICAgRVhQRUNUX1RSVUUoSXNO
dWxsKHRlc3RzWzNdLT52YWx1ZV9wYXJhbSgpKSk7CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRl
c3RzWzNdLT50eXBlX3BhcmFtKCkpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0c1szXS0+c2hvdWxk
X3J1bigpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0c1szXS0+cmVzdWx0KCktPlBhc3NlZCgpKTsK
ICAgICBFWFBFQ1RfRVEoMSwgdGVzdHNbM10tPnJlc3VsdCgpLT50ZXN0X3Byb3BlcnR5X2NvdW50
KCkpOwpAQCAtMzE4LDkgKzMxNiw4IEBAIGNsYXNzIEZpbmFsU3VjY2Vzc0NoZWNrZXIgOiBwdWJs
aWMgRW52aXJvbm1lbnQgewogCiAgICAgRVhQRUNUX1NUUkVRKCJEdW1teSIsIHRlc3RzWzBdLT5u
YW1lKCkpOwogICAgIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VXaXRoQ29tbWVudFRlc3QvMCIsIHRl
c3RzWzBdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzBd
LT5jb21tZW50KCkpOwotICAgIEVYUEVDVF9TVFJFUShHZXRFeHBlY3RlZFRlc3RDYXNlQ29tbWVu
dCgpLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgIHRlc3RzWzBdLT50ZXN0X2Nhc2VfY29tbWVu
dCgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMF0tPnZhbHVlX3BhcmFtKCkpKTsK
KyAgICBFWFBFQ1RfU1RSRVEoR2V0VHlwZU5hbWU8aW50PigpLmNfc3RyKCksIHRlc3RzWzBdLT50
eXBlX3BhcmFtKCkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzBdLT5zaG91bGRfcnVuKCkpOwog
ICAgIEVYUEVDVF9UUlVFKHRlc3RzWzBdLT5yZXN1bHQoKS0+UGFzc2VkKCkpOwogICAgIEVYUEVD
VF9FUSgwLCB0ZXN0c1swXS0+cmVzdWx0KCktPnRlc3RfcHJvcGVydHlfY291bnQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2FsbF90ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9hbGxfdGVzdC5jYwppbmRleCBlMWVk
YjA4ZTMzYTE4YzIzOTExNWRhZDVlNGEwZDZmYjYzMmRiYjE3Li5lNjFlMzZiMWRmZThkYTAzMDE2
YWY1Nzg1NWIyYzc4MWVlN2Q5MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X2FsbF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfYWxsX3Rlc3QuY2MKQEAgLTI2LDIzICsyNiwyMSBAQAogLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAog
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29v
Z2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRlc3RzIGZvciBHb29nbGUgQysrIFRlc3Rp
bmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIFRlc3RzIGZvciBHb29nbGUgQysrIFRlc3Rp
bmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAvLyBTb21ldGltZXMg
aXQncyBkZXNpcmFibGUgdG8gYnVpbGQgbW9zdCBvZiBHb29nbGUgVGVzdCdzIG93biB0ZXN0cwog
Ly8gYnkgY29tcGlsaW5nIGEgc2luZ2xlIGZpbGUuICBUaGlzIGZpbGUgc2VydmVzIHRoaXMgcHVy
cG9zZS4KLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3QuY2MiCi0jaW5jbHVkZSAi
dGVzdC9ndGVzdC1saW5rZWRfcHRyX3Rlc3QuY2MiCi0jaW5jbHVkZSAidGVzdC9ndGVzdC1tZXNz
YWdlX3Rlc3QuY2MiCi0jaW5jbHVkZSAidGVzdC9ndGVzdC1vcHRpb25zX3Rlc3QuY2MiCi0jaW5j
bHVkZSAidGVzdC9ndGVzdC1wb3J0X3Rlc3QuY2MiCisjaW5jbHVkZSAidGVzdC9nb29nbGV0ZXN0
LWZpbGVwYXRoLXRlc3QuY2MiCisjaW5jbHVkZSAidGVzdC9nb29nbGV0ZXN0LWxpbmtlZC1wdHIt
dGVzdC5jYyIKKyNpbmNsdWRlICJ0ZXN0L2dvb2dsZXRlc3QtbWVzc2FnZS10ZXN0LmNjIgorI2lu
Y2x1ZGUgInRlc3QvZ29vZ2xldGVzdC1vcHRpb25zLXRlc3QuY2MiCisjaW5jbHVkZSAidGVzdC9n
b29nbGV0ZXN0LXBvcnQtdGVzdC5jYyIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0X3ByZWRfaW1wbF91
bml0dGVzdC5jYyIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0X3Byb2RfdGVzdC5jYyIKLSNpbmNsdWRl
ICJ0ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0LmNjIgorI2luY2x1ZGUgInRlc3QvZ29vZ2xldGVz
dC10ZXN0LXBhcnQtdGVzdC5jYyIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVz
dC5jYyIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MiCiAjaW5jbHVk
ZSAidGVzdC9ndGVzdF91bml0dGVzdC5jYyIKICNpbmNsdWRlICJ0ZXN0L3Byb2R1Y3Rpb24uY2Mi
Ci0jaW5jbHVkZSAic3JjL2d0ZXN0X21haW4uY2MiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Fzc2VydF9ieV9leGNlcHRpb25fdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYXNzZXJ0X2J5X2V4Y2VwdGlvbl90ZXN0LmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBlYWU4NTc1ZjNmZWUzMGJhYzY0MmJhMTU4OWZmMjM0ZDA3Zjk0NTQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Fzc2Vy
dF9ieV9leGNlcHRpb25fdGVzdC5jYwpAQCAtMCwwICsxLDExOCBAQAorLy8gQ29weXJpZ2h0IDIw
MDksIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisv
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIFRlc3RzIEdvb2dsZSBUZXN0J3Mg
YXNzZXJ0LWJ5LWV4Y2VwdGlvbiBtb2RlIHdpdGggZXhjZXB0aW9ucyBlbmFibGVkLgorCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0
ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkZXhjZXB0PgorCitjbGFz
cyBUaHJvd0xpc3RlbmVyIDogcHVibGljIHRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXIg
eworICB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHQm
IHJlc3VsdCkgb3ZlcnJpZGUgeworICAgIGlmIChyZXN1bHQudHlwZSgpID09IHRlc3Rpbmc6OlRl
c3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlKSB7CisgICAgICB0aHJvdyB0ZXN0aW5nOjpBc3Nl
cnRpb25FeGNlcHRpb24ocmVzdWx0KTsKKyAgICB9CisgIH0KK307CisKKy8vIFByaW50cyB0aGUg
Z2l2ZW4gZmFpbHVyZSBtZXNzYWdlIGFuZCBleGl0cyB0aGUgcHJvZ3JhbSB3aXRoCisvLyBub24t
emVyby4gIFdlIHVzZSB0aGlzIGluc3RlYWQgb2YgYSBHb29nbGUgVGVzdCBhc3NlcnRpb24gdG8K
Ky8vIGluZGljYXRlIGEgZmFpbHVyZSwgYXMgdGhlIGxhdHRlciBpcyBiZWVuIHRlc3RlZCBhbmQg
Y2Fubm90IGJlCisvLyByZWxpZWQgb24uCit2b2lkIEZhaWwoY29uc3QgY2hhciogbXNnKSB7Cisg
IHByaW50ZigiRkFJTFVSRTogJXNcbiIsIG1zZyk7CisgIGZmbHVzaChzdGRvdXQpOworICBleGl0
KDEpOworfQorCitzdGF0aWMgdm9pZCBBc3NlcnRGYWxzZSgpIHsKKyAgQVNTRVJUX0VRKDIsIDMp
IDw8ICJFeHBlY3RlZCBmYWlsdXJlIjsKK30KKworLy8gVGVzdHMgdGhhdCBhbiBhc3NlcnRpb24g
ZmFpbHVyZSB0aHJvd3MgYSBzdWJjbGFzcyBvZgorLy8gc3RkOjpydW50aW1lX2Vycm9yLgorVEVT
VChUZXN0LCBUZXN0KSB7CisgIC8vIEEgc3VjY2Vzc2Z1bCBhc3NlcnRpb24gc2hvdWxkbid0IHRo
cm93LgorICB0cnkgeworICAgIEVYUEVDVF9FUSgzLCAzKTsKKyAgfSBjYXRjaCguLi4pIHsKKyAg
ICBGYWlsKCJBIHN1Y2Nlc3NmdWwgYXNzZXJ0aW9uIHdyb25nZnVsbHkgdGhyZXcuIik7CisgIH0K
KworICAvLyBBIHN1Y2Nlc3NmdWwgYXNzZXJ0aW9uIHNob3VsZG4ndCB0aHJvdy4KKyAgdHJ5IHsK
KyAgICBFWFBFQ1RfRVEoMywgNCk7CisgIH0gY2F0Y2goLi4uKSB7CisgICAgRmFpbCgiQSBmYWls
ZWQgbm9uLWZhdGFsIGFzc2VydGlvbiB3cm9uZ2Z1bGx5IHRocmV3LiIpOworICB9CisKKyAgLy8g
QSBmYWlsZWQgYXNzZXJ0aW9uIHNob3VsZCB0aHJvdy4KKyAgdHJ5IHsKKyAgICBBc3NlcnRGYWxz
ZSgpOworICB9IGNhdGNoKGNvbnN0IHRlc3Rpbmc6OkFzc2VydGlvbkV4Y2VwdGlvbiYgZSkgewor
ICAgIGlmIChzdHJzdHIoZS53aGF0KCksICJFeHBlY3RlZCBmYWlsdXJlIikgIT0gTlVMTCkKKyAg
ICAgIHRocm93OworCisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJBIGZhaWxlZCBhc3Nl
cnRpb24gZGlkIHRocm93IGFuIGV4Y2VwdGlvbiBvZiB0aGUgcmlnaHQgdHlwZSwgIgorICAgICAg
ICAgICAiYnV0IHRoZSBtZXNzYWdlIGlzIGluY29ycmVjdC4gIEluc3RlYWQgb2YgY29udGFpbmlu
ZyBcIkV4cGVjdGVkICIKKyAgICAgICAgICAgImZhaWx1cmVcIiwgaXQgaXM6XG4iKTsKKyAgICBG
YWlsKGUud2hhdCgpKTsKKyAgfSBjYXRjaCguLi4pIHsKKyAgICBGYWlsKCJBIGZhaWxlZCBhc3Nl
cnRpb24gdGhyZXcgdGhlIHdyb25nIHR5cGUgb2YgZXhjZXB0aW9uLiIpOworICB9CisgIEZhaWwo
IkEgZmFpbGVkIGFzc2VydGlvbiBzaG91bGQndmUgdGhyb3duIGJ1dCBkaWRuJ3QuIik7Cit9CisK
K2ludCBrVGVzdEZvckNvbnRpbnVpbmdUZXN0ID0gMDsKKworVEVTVChUZXN0LCBUZXN0Mikgewor
ICAvLyBGSVhNRTogaG93IHRvIGZvcmNlIFRlc3QyIHRvIGJlIGFmdGVyIFRlc3Q/CisgIGtUZXN0
Rm9yQ29udGludWluZ1Rlc3QgPSAxOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFy
Z3YpIHsKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICB0ZXN0aW5n
OjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCkuQXBwZW5kKG5ldyBUaHJvd0xp
c3RlbmVyKTsKKworICBpbnQgcmVzdWx0ID0gUlVOX0FMTF9URVNUUygpOworICBpZiAocmVzdWx0
ID09IDApIHsKKyAgICBwcmludGYoIlJVTl9BTExfVEVTVFMgcmV0dXJuZWQgJWRcbiIsIHJlc3Vs
dCk7CisgICAgRmFpbCgiRXhwZWN0ZWQgZmFpbHVyZSBpbnN0ZWFkLiIpOworICB9CisKKyAgaWYg
KGtUZXN0Rm9yQ29udGludWluZ1Rlc3QgPT0gMCkgeworICAgIEZhaWwoIlNob3VsZCBoYXZlIGNv
bnRpbnVlZCB3aXRoIG90aGVyIHRlc3RzLCBidXQgZGlkIG5vdC4iKTsKKyAgfQorICByZXR1cm4g
MDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYnJl
YWtfb25fZmFpbHVyZV91bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3
NTUKaW5kZXggYzgxOTE4MzMxMjI3NWRlY2EwNWM3NjMxODYwNDA0NzFiZmY0OWYzMy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkKKysrIC9kZXYv
bnVsbApAQCAtMSwyMTggKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHly
aWdodCAyMDA2LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0j
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIGJyZWFrLW9uLWZhaWx1
cmUgbW9kZS4KLQotQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gc2VnLWZhdWx0IHdoZW4g
YW4gYXNzZXJ0aW9uIGZhaWxzLCB1c2luZwotZWl0aGVyIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlM
VVJFIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQotLS1ndGVzdF9icmVha19vbl9mYWlsdXJl
IGZsYWcuICBUaGlzIHNjcmlwdCB0ZXN0cyBzdWNoIGZ1bmN0aW9uYWxpdHkKLWJ5IGludm9raW5n
IGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfIChhIHByb2dyYW0gd3JpdHRlbiB3aXRo
Ci1Hb29nbGUgVGVzdCkgd2l0aCBkaWZmZXJlbnQgZW52aXJvbm1lbnRzIGFuZCBjb21tYW5kIGxp
bmUgZmxhZ3MuCi0iIiIKLQotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcg
V2FuKScKLQotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLWltcG9ydCBvcwotaW1wb3J0IHN5cwot
Ci0KLSMgQ29uc3RhbnRzLgotCi1JU19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCi0KLSMgVGhl
IGVudmlyb25tZW50IHZhcmlhYmxlIGZvciBlbmFibGluZy9kaXNhYmxpbmcgdGhlIGJyZWFrLW9u
LWZhaWx1cmUgbW9kZS4KLUJSRUFLX09OX0ZBSUxVUkVfRU5WX1ZBUiA9ICdHVEVTVF9CUkVBS19P
Tl9GQUlMVVJFJwotCi0jIFRoZSBjb21tYW5kIGxpbmUgZmxhZyBmb3IgZW5hYmxpbmcvZGlzYWJs
aW5nIHRoZSBicmVhay1vbi1mYWlsdXJlIG1vZGUuCi1CUkVBS19PTl9GQUlMVVJFX0ZMQUcgPSAn
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZScKLQotIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9y
IGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLgotVEhST1dfT05f
RkFJTFVSRV9FTlZfVkFSID0gJ0dURVNUX1RIUk9XX09OX0ZBSUxVUkUnCi0KLSMgVGhlIGVudmly
b25tZW50IHZhcmlhYmxlIGZvciBlbmFibGluZy9kaXNhYmxpbmcgdGhlIGNhdGNoLWV4Y2VwdGlv
bnMgbW9kZS4KLUNBVENIX0VYQ0VQVElPTlNfRU5WX1ZBUiA9ICdHVEVTVF9DQVRDSF9FWENFUFRJ
T05TJwotCi0jIFBhdGggdG8gdGhlIGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfIHBy
b2dyYW0uCi1FWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRo
KAotICAgICdndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0XycpCi0KLQotIyBVdGlsaXRp
ZXMuCi0KLQotZW52aXJvbiA9IG9zLmVudmlyb24uY29weSgpCi0KLQotZGVmIFNldEVudlZhcihl
bnZfdmFyLCB2YWx1ZSk6Ci0gICIiIlNldHMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSBn
aXZlbiB2YWx1ZTsgdW5zZXRzIGl0IHdoZW4gdGhlCi0gIGdpdmVuIHZhbHVlIGlzIE5vbmUuCi0g
ICIiIgotCi0gIGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAgIGVudmlyb25bZW52X3Zhcl0gPSB2
YWx1ZQotICBlbGlmIGVudl92YXIgaW4gZW52aXJvbjoKLSAgICBkZWwgZW52aXJvbltlbnZfdmFy
XQotCi0KLWRlZiBSdW4oY29tbWFuZCk6Ci0gICIiIlJ1bnMgYSBjb21tYW5kOyByZXR1cm5zIDEg
aWYgaXQgd2FzIGtpbGxlZCBieSBhIHNpZ25hbCwgb3IgMCBvdGhlcndpc2UuIiIiCi0KLSAgcCA9
IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kLCBlbnY9ZW52aXJvbikKLSAgaWYg
cC50ZXJtaW5hdGVkX2J5X3NpZ25hbDoKLSAgICByZXR1cm4gMQotICBlbHNlOgotICAgIHJldHVy
biAwCi0KLQotIyBUaGUgdGVzdHMuCi0KLQotY2xhc3MgR1Rlc3RCcmVha09uRmFpbHVyZVVuaXRU
ZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgotICAiIiJUZXN0cyB1c2luZyB0aGUgR1RF
U1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBvcgotICB0aGUgLS1ndGVz
dF9icmVha19vbl9mYWlsdXJlIGZsYWcgdG8gdHVybiBhc3NlcnRpb24gZmFpbHVyZXMgaW50bwot
ICBzZWdtZW50YXRpb24gZmF1bHRzLgotICAiIiIKLQotICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYs
IGVudl92YXJfdmFsdWUsIGZsYWdfdmFsdWUsIGV4cGVjdF9zZWdfZmF1bHQpOgotICAgICIiIlJ1
bnMgZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8gYW5kIHZlcmlmaWVzIHRoYXQgaXQg
ZG9lcwotICAgIChvciBkb2VzIG5vdCkgaGF2ZSBhIHNlZy1mYXVsdC4KLQotICAgIEFyZ3M6Ci0g
ICAgICBlbnZfdmFyX3ZhbHVlOiAgICB2YWx1ZSBvZiB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVS
RSBlbnZpcm9ubWVudAotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGU7IE5vbmUgaWYg
dGhlIHZhcmlhYmxlIHNob3VsZCBiZSB1bnNldC4KLSAgICAgIGZsYWdfdmFsdWU6ICAgICAgIHZh
bHVlIG9mIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZzsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgotICAgICAg
ZXhwZWN0X3NlZ19mYXVsdDogMSBpZiB0aGUgcHJvZ3JhbSBpcyBleHBlY3RlZCB0byBnZW5lcmF0
ZSBhIHNlZy1mYXVsdDsKLSAgICAgICAgICAgICAgICAgICAgICAgIDAgb3RoZXJ3aXNlLgotICAg
ICIiIgotCi0gICAgU2V0RW52VmFyKEJSRUFLX09OX0ZBSUxVUkVfRU5WX1ZBUiwgZW52X3Zhcl92
YWx1ZSkKLQotICAgIGlmIGVudl92YXJfdmFsdWUgaXMgTm9uZToKLSAgICAgIGVudl92YXJfdmFs
dWVfbXNnID0gJyBpcyBub3Qgc2V0JwotICAgIGVsc2U6Ci0gICAgICBlbnZfdmFyX3ZhbHVlX21z
ZyA9ICc9JyArIGVudl92YXJfdmFsdWUKLQotICAgIGlmIGZsYWdfdmFsdWUgaXMgTm9uZToKLSAg
ICAgIGZsYWcgPSAnJwotICAgIGVsaWYgZmxhZ192YWx1ZSA9PSAnMCc6Ci0gICAgICBmbGFnID0g
Jy0tJXM9MCcgJSBCUkVBS19PTl9GQUlMVVJFX0ZMQUcKLSAgICBlbHNlOgotICAgICAgZmxhZyA9
ICctLSVzJyAlIEJSRUFLX09OX0ZBSUxVUkVfRkxBRwotCi0gICAgY29tbWFuZCA9IFtFWEVfUEFU
SF0KLSAgICBpZiBmbGFnOgotICAgICAgY29tbWFuZC5hcHBlbmQoZmxhZykKLQotICAgIGlmIGV4
cGVjdF9zZWdfZmF1bHQ6Ci0gICAgICBzaG91bGRfb3Jfbm90ID0gJ3Nob3VsZCcKLSAgICBlbHNl
OgotICAgICAgc2hvdWxkX29yX25vdCA9ICdzaG91bGQgbm90JwotCi0gICAgaGFzX3NlZ19mYXVs
dCA9IFJ1bihjb21tYW5kKQotCi0gICAgU2V0RW52VmFyKEJSRUFLX09OX0ZBSUxVUkVfRU5WX1ZB
UiwgTm9uZSkKLQotICAgIG1zZyA9ICgnd2hlbiAlcyVzLCBhbiBhc3NlcnRpb24gZmFpbHVyZSBp
biAiJXMiICVzIGNhdXNlIGEgc2VnLWZhdWx0LicgJQotICAgICAgICAgICAoQlJFQUtfT05fRkFJ
TFVSRV9FTlZfVkFSLCBlbnZfdmFyX3ZhbHVlX21zZywgJyAnLmpvaW4oY29tbWFuZCksCi0gICAg
ICAgICAgICBzaG91bGRfb3Jfbm90KSkKLSAgICBzZWxmLmFzc2VydF8oaGFzX3NlZ19mYXVsdCA9
PSBleHBlY3Rfc2VnX2ZhdWx0LCBtc2cpCi0KLSAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3Ioc2Vs
Zik6Ci0gICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0IG1vZGUuIiIiCi0K
LSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAg
ICAgICAgICAgZmxhZ192YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9z
ZWdfZmF1bHQ9MCkKLQotICBkZWYgdGVzdEVudlZhcihzZWxmKToKLSAgICAiIiJUZXN0cyB1c2lu
ZyB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZS4iIiIKLQot
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAg
ICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2Vn
X2ZhdWx0PTApCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0gICAg
ICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdF9zZWdfZmF1bHQ9MSkKLQotICBkZWYgdGVzdEZsYWcoc2VsZik6Ci0gICAgIiIiVGVz
dHMgdXNpbmcgdGhlIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnLiIiIgotCi0gICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAg
IGZsYWdfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9
MCkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCi0gICAgICAgICAg
ICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
X3NlZ19mYXVsdD0xKQotCi0gIGRlZiB0ZXN0RmxhZ092ZXJyaWRlc0VudlZhcihzZWxmKToKLSAg
ICAiIiJUZXN0cyB0aGF0IHRoZSBmbGFnIG92ZXJyaWRlcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFi
bGUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScwJywKLSAgICAg
ICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBl
eHBlY3Rfc2VnX2ZhdWx0PTApCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0n
MCcsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0xKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92
YXJfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAnLAotICAg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MCkKLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVl
PScxJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCi0KLSAgZGVm
IHRlc3RCcmVha09uRmFpbHVyZU92ZXJyaWRlc1Rocm93T25GYWlsdXJlKHNlbGYpOgotICAgICIi
IlRlc3RzIHRoYXQgZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBvdmVycmlkZXMgZ3Rlc3RfdGhyb3df
b25fZmFpbHVyZS4iIiIKLQotICAgIFNldEVudlZhcihUSFJPV19PTl9GQUlMVVJFX0VOVl9WQVIs
ICcxJykKLSAgICB0cnk6Ci0gICAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5v
bmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKLSAgICBmaW5hbGx5OgotICAgICAgU2V0
RW52VmFyKFRIUk9XX09OX0ZBSUxVUkVfRU5WX1ZBUiwgTm9uZSkKLQotICBpZiBJU19XSU5ET1dT
OgotICAgIGRlZiB0ZXN0Q2F0Y2hFeGNlcHRpb25zRG9lc05vdEludGVyZmVyZShzZWxmKToKLSAg
ICAgICIiIlRlc3RzIHRoYXQgZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucyBkb2Vzbid0IGludGVyZmVy
ZS4iIiIKLQotICAgICAgU2V0RW52VmFyKENBVENIX0VYQ0VQVElPTlNfRU5WX1ZBUiwgJzEnKQot
ICAgICAgdHJ5OgotICAgICAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKLSAgICAgIGZpbmFsbHk6Ci0gICAgICAg
IFNldEVudlZhcihDQVRDSF9FWENFUFRJT05TX0VOVl9WQVIsIE5vbmUpCi0KLQotaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0
dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2Zh
aWx1cmVfdW5pdHRlc3RfLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjhkMWQz
ZGFkNDZiOGZkZjNjMzQwOTY3ZGJmY2E4NTJmNTllNGExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSw4NiAr
MCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwot
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0v
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwot
Ly8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBVbml0IHRlc3Qg
Zm9yIEdvb2dsZSBUZXN0J3MgYnJlYWstb24tZmFpbHVyZSBtb2RlLgotLy8KLS8vIEEgdXNlciBj
YW4gYXNrIEdvb2dsZSBUZXN0IHRvIHNlZy1mYXVsdCB3aGVuIGFuIGFzc2VydGlvbiBmYWlscywg
dXNpbmcKLS8vIGVpdGhlciB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2
YXJpYWJsZSBvciB0aGUKLS8vIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnLiAgVGhpcyBm
aWxlIGlzIHVzZWQgZm9yIHRlc3Rpbmcgc3VjaAotLy8gZnVuY3Rpb25hbGl0eS4KLS8vCi0vLyBU
aGlzIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRob24gdW5pdCB0ZXN0LiAgSXQg
aXMKLS8vIGV4cGVjdGVkIHRvIGZhaWwuICBEb24ndCBydW4gaXQgZGlyZWN0bHkuCi0KLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1ZGUgPHdp
bmRvd3MuaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgewotCi0v
LyBBIHRlc3QgdGhhdCdzIGV4cGVjdGVkIHRvIGZhaWwuCi1URVNUKEZvbywgQmFyKSB7Ci0gIEVY
UEVDVF9FUSgyLCAzKTsKLX0KLQotI2lmIEdURVNUX0hBU19TRUggJiYgIUdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCi0vLyBPbiBXaW5kb3dzIE1vYmlsZSBnbG9iYWwgZXhjZXB0aW9uIGhhbmRsZXJz
IGFyZSBub3Qgc3VwcG9ydGVkLgotTE9ORyBXSU5BUEkgRXhpdFdpdGhFeGNlcHRpb25Db2RlKAot
ICAgIHN0cnVjdCBfRVhDRVBUSU9OX1BPSU5URVJTKiBleGNlcHRpb25fcG9pbnRlcnMpIHsKLSAg
ZXhpdChleGNlcHRpb25fcG9pbnRlcnMtPkV4Y2VwdGlvblJlY29yZC0+RXhjZXB0aW9uQ29kZSk7
Ci19Ci0jZW5kaWYKLQotfSAgLy8gbmFtZXNwYWNlCi0KLWludCBtYWluKGludCBhcmdjLCBjaGFy
ICoqYXJndikgewotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgLy8gU3VwcHJlc3NlcyBkaXNwbGF5
IG9mIHRoZSBXaW5kb3dzIGVycm9yIGRpYWxvZyB1cG9uIGVuY291bnRlcmluZwotICAvLyBhIGdl
bmVyYWwgcHJvdGVjdGlvbiBmYXVsdCAoc2VnbWVudCB2aW9sYXRpb24pLgotICBTZXRFcnJvck1v
ZGUoU0VNX05PR1BGQVVMVEVSUk9SQk9YIHwgU0VNX0ZBSUxDUklUSUNBTEVSUk9SUyk7Ci0KLSNp
ZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSAgLy8gVGhlIGRlZmF1bHQgdW5oYW5kbGVkIGV4
Y2VwdGlvbiBmaWx0ZXIgZG9lcyBub3QgYWx3YXlzIGV4aXQKLSAgLy8gd2l0aCB0aGUgZXhjZXB0
aW9uIGNvZGUgYXMgZXhpdCBjb2RlIC0gZm9yIGV4YW1wbGUgaXQgZXhpdHMgd2l0aAotICAvLyAw
IGZvciBFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTiBhbmQgMSBmb3IgRVhDRVBUSU9OX0JSRUFL
UE9JTlQKLSAgLy8gaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGNvbXBpbGVkIGluIGRlYnVnIG1vZGUu
IFRodXMgd2UgdXNlIG91ciBvd24KLSAgLy8gZmlsdGVyIHdoaWNoIGFsd2F5cyBleGl0cyB3aXRo
IHRoZSBleGNlcHRpb24gY29kZSBmb3IgdW5oYW5kbGVkCi0gIC8vIGV4Y2VwdGlvbnMuCi0gIFNl
dFVuaGFuZGxlZEV4Y2VwdGlvbkZpbHRlcihFeGl0V2l0aEV4Y2VwdGlvbkNvZGUpOwotI2VuZGlm
Ci0jZW5kaWYKLQotICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAg
cmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg
ZDAyYTUzZWQ4NTdjNzRjODAwYmNjZDY3YmM0MThhNTFhMDlkNjkzNy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAot
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgot
IyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
IyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVmVyaWZpZXMg
dGhhdCBHb29nbGUgVGVzdCBjb3JyZWN0bHkgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHVzZSBjb2xv
cnMuIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0K
LWltcG9ydCBvcwotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLQotCi1JU19XSU5ET1dTID0gb3Mu
bmFtZSA9ICdudCcKLQotQ09MT1JfRU5WX1ZBUiA9ICdHVEVTVF9DT0xPUicKLUNPTE9SX0ZMQUcg
PSAnZ3Rlc3RfY29sb3InCi1DT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0
YWJsZVBhdGgoJ2d0ZXN0X2NvbG9yX3Rlc3RfJykKLQotCi1kZWYgU2V0RW52VmFyKGVudl92YXIs
IHZhbHVlKToKLSAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxlIHRvICd2YWx1ZSc7IHVuc2V0cyBp
dCB3aGVuICd2YWx1ZScgaXMgTm9uZS4iIiIKLQotICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAg
ICBvcy5lbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKLSAgZWxpZiBlbnZfdmFyIGluIG9zLmVudmly
b246Ci0gICAgZGVsIG9zLmVudmlyb25bZW52X3Zhcl0KLQotCi1kZWYgVXNlc0NvbG9yKHRlcm0s
IGNvbG9yX2Vudl92YXIsIGNvbG9yX2ZsYWcpOgotICAiIiJSdW5zIGd0ZXN0X2NvbG9yX3Rlc3Rf
IGFuZCByZXR1cm5zIGl0cyBleGl0IGNvZGUuIiIiCi0KLSAgU2V0RW52VmFyKCdURVJNJywgdGVy
bSkKLSAgU2V0RW52VmFyKENPTE9SX0VOVl9WQVIsIGNvbG9yX2Vudl92YXIpCi0KLSAgaWYgY29s
b3JfZmxhZyBpcyBOb25lOgotICAgIGFyZ3MgPSBbXQotICBlbHNlOgotICAgIGFyZ3MgPSBbJy0t
JXM9JXMnICUgKENPTE9SX0ZMQUcsIGNvbG9yX2ZsYWcpXQotICBwID0gZ3Rlc3RfdGVzdF91dGls
cy5TdWJwcm9jZXNzKFtDT01NQU5EXSArIGFyZ3MpCi0gIHJldHVybiBub3QgcC5leGl0ZWQgb3Ig
cC5leGl0X2NvZGUKLQotCi1jbGFzcyBHVGVzdENvbG9yVGVzdChndGVzdF90ZXN0X3V0aWxzLlRl
c3RDYXNlKToKLSAgZGVmIHRlc3ROb0VudlZhck5vRmxhZyhzZWxmKToKLSAgICAiIiJUZXN0cyB0
aGUgY2FzZSB3aGVuIHRoZXJlJ3MgbmVpdGhlciBHVEVTVF9DT0xPUiBub3IgLS1ndGVzdF9jb2xv
ci4iIiIKLQotICAgIGlmIG5vdCBJU19XSU5ET1dTOgotICAgICAgc2VsZi5hc3NlcnRfKG5vdCBV
c2VzQ29sb3IoJ2R1bWInLCBOb25lLCBOb25lKSkKLSAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNl
c0NvbG9yKCdlbWFjcycsIE5vbmUsIE5vbmUpKQotICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2Vz
Q29sb3IoJ3h0ZXJtLW1vbm8nLCBOb25lLCBOb25lKSkKLSAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qg
VXNlc0NvbG9yKCd1bmtub3duJywgTm9uZSwgTm9uZSkpCi0gICAgICBzZWxmLmFzc2VydF8obm90
IFVzZXNDb2xvcihOb25lLCBOb25lLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9y
KCdsaW51eCcsIE5vbmUsIE5vbmUpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2N5Z3dp
bicsIE5vbmUsIE5vbmUpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtJywgTm9u
ZSwgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tY29sb3InLCBOb25l
LCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS0yNTZjb2xvcicsIE5v
bmUsIE5vbmUpKQotCi0gIGRlZiB0ZXN0RmxhZ09ubHkoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhl
IGNhc2Ugd2hlbiB0aGVyZSdzIC0tZ3Rlc3RfY29sb3IgYnV0IG5vdCBHVEVTVF9DT0xPUi4iIiIK
LQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ25vJykpCi0g
ICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywgTm9uZSwgJ25vJykp
Ci0gICAgaWYgbm90IElTX1dJTkRPV1M6Ci0gICAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xv
cignZW1hY3MnLCBOb25lLCAnYXV0bycpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0
ZXJtJywgTm9uZSwgJ2F1dG8nKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywg
Tm9uZSwgJ3llcycpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwg
J3llcycpKQotCi0gIGRlZiB0ZXN0RW52VmFyT25seShzZWxmKToKLSAgICAiIiJUZXN0cyB0aGUg
Y2FzZSB3aGVuIHRoZXJlJ3MgR1RFU1RfQ09MT1IgYnV0IG5vdCAtLWd0ZXN0X2NvbG9yLiIiIgot
Ci0gICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ2R1bWInLCAnbm8nLCBOb25lKSkKLSAg
ICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAnbm8nLCBOb25lKSkK
LSAgICBpZiBub3QgSVNfV0lORE9XUzoKLSAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9y
KCdkdW1iJywgJ2F1dG8nLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVy
bS1jb2xvcicsICdhdXRvJywgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVt
YicsICd5ZXMnLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS1jb2xv
cicsICd5ZXMnLCBOb25lKSkKLQotICBkZWYgdGVzdEVudlZhckFuZEZsYWcoc2VsZik6Ci0gICAg
IiIiVGVzdHMgdGhlIGNhc2Ugd2hlbiB0aGVyZSBhcmUgYm90aCBHVEVTVF9DT0xPUiBhbmQgLS1n
dGVzdF9jb2xvci4iIiIKLQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybS1j
b2xvcicsICdubycsICdubycpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCAn
bm8nLCAneWVzJykpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAn
bm8nLCAnYXV0bycpKQotCi0gIGRlZiB0ZXN0QWxpYXNlc09mWWVzQW5kTm8oc2VsZik6Ci0gICAg
IiIiVGVzdHMgdXNpbmcgYWxpYXNlcyBpbiBzcGVjaWZ5aW5nIC0tZ3Rlc3RfY29sb3IuIiIiCi0K
LSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ3RydWUnKSkKLSAgICBz
ZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ1lFUycpKQotICAgIHNlbGYuYXNz
ZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAnVCcpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2Vz
Q29sb3IoJ2R1bWInLCBOb25lLCAnMScpKQotCi0gICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29s
b3IoJ3h0ZXJtJywgTm9uZSwgJ2YnKSkKLSAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcign
eHRlcm0nLCBOb25lLCAnZmFsc2UnKSkKLSAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcign
eHRlcm0nLCBOb25lLCAnMCcpKQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVy
bScsIE5vbmUsICd1bmtub3duJykpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAg
Z3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
OGQzNzdjOWIyYWYwYmZlODE5NWNhMmMwYTkwMjEzOWQ5MTEwNjQyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfY29sb3JfdGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0v
LyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0v
LwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRp
c3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9y
OiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBBIGhlbHBlciBwcm9ncmFtIGZv
ciB0ZXN0aW5nIGhvdyBHb29nbGUgVGVzdCBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlCi0vLyBj
b2xvcnMgaW4gdGhlIG91dHB1dC4gIEl0IHByaW50cyAiWUVTIiBhbmQgcmV0dXJucyAxIGlmIEdv
b2dsZSBUZXN0Ci0vLyBkZWNpZGVzIHRvIHVzZSBjb2xvcnMsIGFuZCBwcmludHMgIk5PIiBhbmQg
cmV0dXJucyAwIG90aGVyd2lzZS4KLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLSNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQg
aXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29t
ZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3
aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEg
dXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4K
LS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQotI2luY2x1ZGUg
InNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8K
LQotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlNob3VsZFVzZUNvbG9yOwotCi0vLyBUaGUgcHVy
cG9zZSBvZiB0aGlzIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSBVbml0VGVzdCBzaW5nbGV0b24gaXMK
LS8vIGNyZWF0ZWQgYmVmb3JlIG1haW4oKSBpcyBlbnRlcmVkLCBhbmQgdGh1cyB0aGF0IFNob3Vs
ZFVzZUNvbG9yKCkKLS8vIHdvcmtzIHRoZSBzYW1lIHdheSBhcyBpbiBhIHJlYWwgR29vZ2xlLVRl
c3QtYmFzZWQgdGVzdC4gIFdlIGRvbid0IGFjdHVhbAotLy8gcnVuIHRoZSBURVNUIGl0c2VsZi4K
LVRFU1QoR1Rlc3RDb2xvclRlc3QsIER1bW15KSB7Ci19Ci0KLWludCBtYWluKGludCBhcmdjLCBj
aGFyKiogYXJndikgewotICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0K
LSAgaWYgKFNob3VsZFVzZUNvbG9yKHRydWUpKSB7Ci0gICAgLy8gR29vZ2xlIFRlc3QgZGVjaWRl
cyB0byB1c2UgY29sb3JzIGluIHRoZSBvdXRwdXQgKGFzc3VtaW5nIGl0Ci0gICAgLy8gZ29lcyB0
byBhIFRUWSkuCi0gICAgcHJpbnRmKCJZRVNcbiIpOwotICAgIHJldHVybiAxOwotICB9IGVsc2Ug
ewotICAgIC8vIEdvb2dsZSBUZXN0IGRlY2lkZXMgbm90IHRvIHVzZSBjb2xvcnMgaW4gdGhlIG91
dHB1dC4KLSAgICBwcmludGYoIk5PXG4iKTsKLSAgICByZXR1cm4gMDsKLSAgfQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3QucHkg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYmNjMGJmZDU1MzI5NzI2ODA3NjE1NzczNmM4M2U0
YTg0Y2FlMDU2Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weQorKysg
L2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMg
Q29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0j
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0iIiJWZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IGNvcnJlY3RseSBw
YXJzZXMgZW52aXJvbm1lbnQgdmFyaWFibGVzLiIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWltcG9ydCBndGVzdF90ZXN0X3V0
aWxzCi0KLQotSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250JwotSVNfTElOVVggPSBvcy5uYW1l
ID09ICdwb3NpeCcgYW5kIG9zLnVuYW1lKClbMF0gPT0gJ0xpbnV4JwotCi1DT01NQU5EID0gZ3Rl
c3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2d0ZXN0X2Vudl92YXJfdGVzdF8n
KQotCi1lbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkKLQotCi1kZWYgQXNzZXJ0RXEoZXhwZWN0
ZWQsIGFjdHVhbCk6Ci0gIGlmIGV4cGVjdGVkICE9IGFjdHVhbDoKLSAgICBwcmludCAnRXhwZWN0
ZWQ6ICVzJyAlIChleHBlY3RlZCwpCi0gICAgcHJpbnQgJyAgQWN0dWFsOiAlcycgJSAoYWN0dWFs
LCkKLSAgICByYWlzZSBBc3NlcnRpb25FcnJvcgotCi0KLWRlZiBTZXRFbnZWYXIoZW52X3Zhciwg
dmFsdWUpOgotICAiIiJTZXRzIHRoZSBlbnYgdmFyaWFibGUgdG8gJ3ZhbHVlJzsgdW5zZXRzIGl0
IHdoZW4gJ3ZhbHVlJyBpcyBOb25lLiIiIgotCi0gIGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAg
IGVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQotICBlbGlmIGVudl92YXIgaW4gZW52aXJvbjoKLSAg
ICBkZWwgZW52aXJvbltlbnZfdmFyXQotCi0KLWRlZiBHZXRGbGFnKGZsYWcpOgotICAiIiJSdW5z
IGd0ZXN0X2Vudl92YXJfdGVzdF8gYW5kIHJldHVybnMgaXRzIG91dHB1dC4iIiIKLQotICBhcmdz
ID0gW0NPTU1BTkRdCi0gIGlmIGZsYWcgaXMgbm90IE5vbmU6Ci0gICAgYXJncyArPSBbZmxhZ10K
LSAgcmV0dXJuIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhhcmdzLCBlbnY9ZW52aXJvbiku
b3V0cHV0Ci0KLQotZGVmIFRlc3RGbGFnKGZsYWcsIHRlc3RfdmFsLCBkZWZhdWx0X3ZhbCk6Ci0g
ICIiIlZlcmlmaWVzIHRoYXQgdGhlIGdpdmVuIGZsYWcgaXMgYWZmZWN0ZWQgYnkgdGhlIGNvcnJl
c3BvbmRpbmcgZW52IHZhci4iIiIKLQotICBlbnZfdmFyID0gJ0dURVNUXycgKyBmbGFnLnVwcGVy
KCkKLSAgU2V0RW52VmFyKGVudl92YXIsIHRlc3RfdmFsKQotICBBc3NlcnRFcSh0ZXN0X3ZhbCwg
R2V0RmxhZyhmbGFnKSkKLSAgU2V0RW52VmFyKGVudl92YXIsIE5vbmUpCi0gIEFzc2VydEVxKGRl
ZmF1bHRfdmFsLCBHZXRGbGFnKGZsYWcpKQotCi0KLWNsYXNzIEdUZXN0RW52VmFyVGVzdChndGVz
dF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAgZGVmIHRlc3RFbnZWYXJBZmZlY3RzRmxhZyhzZWxm
KToKLSAgICAiIiJUZXN0cyB0aGF0IGVudmlyb25tZW50IHZhcmlhYmxlIHNob3VsZCBhZmZlY3Qg
dGhlIGNvcnJlc3BvbmRpbmcgZmxhZy4iIiIKLQotICAgIFRlc3RGbGFnKCdicmVha19vbl9mYWls
dXJlJywgJzEnLCAnMCcpCi0gICAgVGVzdEZsYWcoJ2NvbG9yJywgJ3llcycsICdhdXRvJykKLSAg
ICBUZXN0RmxhZygnZmlsdGVyJywgJ0Zvb1Rlc3QuQmFyJywgJyonKQotICAgIFRlc3RGbGFnKCdv
dXRwdXQnLCAneG1sOnRtcC9mb28ueG1sJywgJycpCi0gICAgVGVzdEZsYWcoJ3ByaW50X3RpbWUn
LCAnMCcsICcxJykKLSAgICBUZXN0RmxhZygncmVwZWF0JywgJzk5OScsICcxJykKLSAgICBUZXN0
RmxhZygndGhyb3dfb25fZmFpbHVyZScsICcxJywgJzAnKQotICAgIFRlc3RGbGFnKCdkZWF0aF90
ZXN0X3N0eWxlJywgJ3RocmVhZHNhZmUnLCAnZmFzdCcpCi0KLSAgICBpZiBJU19XSU5ET1dTOgot
ICAgICAgVGVzdEZsYWcoJ2NhdGNoX2V4Y2VwdGlvbnMnLCAnMScsICcwJykKLQotICAgIGlmIElT
X0xJTlVYOgotICAgICAgVGVzdEZsYWcoJ2RlYXRoX3Rlc3RfdXNlX2ZvcmsnLCAnMScsICcwJykK
LSAgICAgIFRlc3RGbGFnKCdzdGFja190cmFjZV9kZXB0aCcsICcwJywgJzEwMCcpCi0KLQotaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0Xy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0Xy5jYwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdjNzhmY2YzMDUzMTJhNjZjMjY1YjE4MTBh
NjkxMDc3ZGI3NzFmNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdF8uY2MK
KysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2ds
ZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKLQotLy8gQSBoZWxwZXIgcHJvZ3JhbSBmb3IgdGVzdGluZyB0aGF0IEdvb2dsZSBU
ZXN0IHBhcnNlcyB0aGUgZW52aXJvbm1lbnQKLS8vIHZhcmlhYmxlcyBjb3JyZWN0bHkuCi0KLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLSNkZWZpbmUg
R1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5s
LmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLXVzaW5nIDo6c3RkOjpjb3V0Owot
Ci1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLS8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gbWFr
ZSB0aGUgdGVzdCBtb3JlIHJlYWxpc3RpYyBieSBlbnN1cmluZwotLy8gdGhhdCB0aGUgVW5pdFRl
c3Qgc2luZ2xldG9uIGlzIGNyZWF0ZWQgYmVmb3JlIG1haW4oKSBpcyBlbnRlcmVkLgotLy8gV2Ug
ZG9uJ3QgYWN0dWFsIHJ1biB0aGUgVEVTVCBpdHNlbGYuCi1URVNUKEdUZXN0RW52VmFyVGVzdCwg
RHVtbXkpIHsKLX0KLQotdm9pZCBQcmludEZsYWcoY29uc3QgY2hhciogZmxhZykgewotICBpZiAo
c3RyY21wKGZsYWcsICJicmVha19vbl9mYWlsdXJlIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RF
U1RfRkxBRyhicmVha19vbl9mYWlsdXJlKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3Ry
Y21wKGZsYWcsICJjYXRjaF9leGNlcHRpb25zIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1Rf
RkxBRyhjYXRjaF9leGNlcHRpb25zKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21w
KGZsYWcsICJjb2xvciIpID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcoY29sb3IpOwot
ICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywgImRlYXRoX3Rlc3Rfc3R5bGUi
KSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpOwotICAg
IHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywgImRlYXRoX3Rlc3RfdXNlX2Zvcmsi
KSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspOwot
ICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywgImZpbHRlciIpID09IDApIHsK
LSAgICBjb3V0IDw8IEdURVNUX0ZMQUcoZmlsdGVyKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBp
ZiAoc3RyY21wKGZsYWcsICJvdXRwdXQiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFH
KG91dHB1dCk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAicHJpbnRf
dGltZSIpID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcocHJpbnRfdGltZSk7Ci0gICAg
cmV0dXJuOwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAicmVwZWF0IikgPT0gMCkgewotICAg
IGNvdXQgPDwgR1RFU1RfRkxBRyhyZXBlYXQpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChz
dHJjbXAoZmxhZywgInN0YWNrX3RyYWNlX2RlcHRoIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RF
U1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaWYgKHN0
cmNtcChmbGFnLCAidGhyb3dfb25fZmFpbHVyZSIpID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNU
X0ZMQUcodGhyb3dfb25fZmFpbHVyZSk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgY291dCA8PCAi
SW52YWxpZCBmbGFnIG5hbWUgIiA8PCBmbGFnCi0gICAgICAgPDwgIi4gIFZhbGlkIG5hbWVzIGFy
ZSBicmVha19vbl9mYWlsdXJlLCBjb2xvciwgZmlsdGVyLCBldGMuXG4iOwotICBleGl0KDEpOwot
fQotCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpIHsKLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIGlm
IChhcmdjICE9IDIpIHsKLSAgICBjb3V0IDw8ICJVc2FnZTogZ3Rlc3RfZW52X3Zhcl90ZXN0XyBO
QU1FX09GX0ZMQUdcbiI7Ci0gICAgcmV0dXJuIDE7Ci0gIH0KLQotICB0ZXN0aW5nOjpQcmludEZs
YWcoYXJndlsxXSk7Ci0gIHJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjCmluZGV4IGM5MzkyNjE0ZDc0
ZDdmYzIzMmU4NmIyYzNkNmNkYjFiMWUyYjYxMzEuLmJjOTUyNGQ2NjM3M2U3MTk1MWNhY2NkOTA2
YzA2NmVmNGFmOTRiNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfZW52aXJvbm1lbnRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X2Vudmlyb25tZW50X3Rlc3QuY2MKQEAgLTI2LDE0ICsyNiwxNCBAQAogLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogLy8KIC8vIFRlc3RzIHVzaW5nIGdsb2Jh
bCB0ZXN0IGVudmlyb25tZW50cy4KIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0
ZGlvLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKIAogbmFtZXNwYWNlIHRlc3Rp
bmcgewogR1RFU1RfREVDTEFSRV9zdHJpbmdfKGZpbHRlcik7CkBAIC05Miw2ICs5Miw3IEBAIGNs
YXNzIE15RW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6RW52aXJvbm1lbnQgewogCiAgIC8v
IFdhcyBUZWFyRG93bigpIHJ1bj8KICAgYm9vbCB0ZWFyX2Rvd25fd2FzX3J1bigpIGNvbnN0IHsg
cmV0dXJuIHRlYXJfZG93bl93YXNfcnVuXzsgfQorCiAgcHJpdmF0ZToKICAgRmFpbHVyZVR5cGUg
ZmFpbHVyZV9pbl9zZXRfdXBfOwogICBib29sIHNldF91cF93YXNfcnVuXzsKQEAgLTExMSw3ICsx
MTIsNyBAQCBURVNUKEZvb1Rlc3QsIEJhcikgewogdm9pZCBDaGVjayhib29sIGNvbmRpdGlvbiwg
Y29uc3QgY2hhciogbXNnKSB7CiAgIGlmICghY29uZGl0aW9uKSB7CiAgICAgcHJpbnRmKCJGQUlM
RUQ6ICVzXG4iLCBtc2cpOwotICAgIGFib3J0KCk7CisgICAgdGVzdGluZzo6aW50ZXJuYWw6OnBv
c2l4OjpBYm9ydCgpOwogICB9CiB9CiAKQEAgLTEyMyw2ICsxMjQsNyBAQCBpbnQgUnVuQWxsVGVz
dHMoTXlFbnZpcm9ubWVudCogZW52LCBGYWlsdXJlVHlwZSBmYWlsdXJlKSB7CiAgIGVudi0+UmVz
ZXQoKTsKICAgZW52LT5zZXRfZmFpbHVyZV9pbl9zZXRfdXAoZmFpbHVyZSk7CiAgIHRlc3Rfd2Fz
X3J1biA9IGZhbHNlOworICB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCktPkNs
ZWFyQWRIb2NUZXN0UmVzdWx0KCk7CiAgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0
ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRl
c3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDBkMWE3NzAwNThjY2I5MDExNTQ2
ODA5MjRjYmQzYzY0ZDhjOGQxNzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5p
dHRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2MzMgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0IHRl
c3QgZmlsdGVycy4KLQotQSB1c2VyIGNhbiBzcGVjaWZ5IHdoaWNoIHRlc3QocykgaW4gYSBHb29n
bGUgVGVzdCBwcm9ncmFtIHRvIHJ1biB2aWEgZWl0aGVyCi10aGUgR1RFU1RfRklMVEVSIGVudmly
b25tZW50IHZhcmlhYmxlIG9yIHRoZSAtLWd0ZXN0X2ZpbHRlciBmbGFnLgotVGhpcyBzY3JpcHQg
dGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5IGJ5IGludm9raW5nCi1ndGVzdF9maWx0ZXJfdW5pdHRl
c3RfIChhIHByb2dyYW0gd3JpdHRlbiB3aXRoIEdvb2dsZSBUZXN0KSB3aXRoIGRpZmZlcmVudAot
ZW52aXJvbm1lbnRzIGFuZCBjb21tYW5kIGxpbmUgZmxhZ3MuCi0KLU5vdGUgdGhhdCB0ZXN0IHNo
YXJkaW5nIG1heSBhbHNvIGluZmx1ZW5jZSB3aGljaCB0ZXN0cyBhcmUgZmlsdGVyZWQuIFRoZXJl
Zm9yZSwKLXdlIHRlc3QgdGhhdCBoZXJlIGFsc28uCi0iIiIKLQotX19hdXRob3JfXyA9ICd3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9y
dCBzZXRzCi1pbXBvcnQgc3lzCi0KLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi0KLSMgQ29uc3Rh
bnRzLgotCi0jIENoZWNrcyBpZiB0aGlzIHBsYXRmb3JtIGNhbiBwYXNzIGVtcHR5IGVudmlyb25t
ZW50IHZhcmlhYmxlcyB0byBjaGlsZAotIyBwcm9jZXNzZXMuICBXZSBzZXQgYW4gZW52IHZhcmlh
YmxlIHRvIGFuIGVtcHR5IHN0cmluZyBhbmQgaW52b2tlIGEgcHl0aG9uCi0jIHNjcmlwdCBpbiBh
IHN1YnByb2Nlc3MgdG8gcHJpbnQgd2hldGhlciB0aGUgdmFyaWFibGUgaXMgU1RJTEwgaW4KLSMg
b3MuZW52aXJvbi4gIFdlIHRoZW4gdXNlICdldmFsJyB0byBwYXJzZSB0aGUgY2hpbGQncyBvdXRw
dXQgc28gdGhhdCBhbgotIyBleGNlcHRpb24gaXMgdGhyb3duIGlmIHRoZSBpbnB1dCBpcyBhbnl0
aGluZyBvdGhlciB0aGFuICdUcnVlJyBub3IgJ0ZhbHNlJy4KLW9zLmVudmlyb25bJ0VNUFRZX1ZB
UiddID0gJycKLWNoaWxkID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAotICAgIFtzeXMu
ZXhlY3V0YWJsZSwgJy1jJywgJ2ltcG9ydCBvczsgcHJpbnQgXCdFTVBUWV9WQVJcJyBpbiBvcy5l
bnZpcm9uJ10pCi1DQU5fUEFTU19FTVBUWV9FTlYgPSBldmFsKGNoaWxkLm91dHB1dCkKLQotCi0j
IENoZWNrIGlmIHRoaXMgcGxhdGZvcm0gY2FuIHVuc2V0IGVudmlyb25tZW50IHZhcmlhYmxlcyBp
biBjaGlsZCBwcm9jZXNzZXMuCi0jIFdlIHNldCBhbiBlbnYgdmFyaWFibGUgdG8gYSBub24tZW1w
dHkgc3RyaW5nLCB1bnNldCBpdCwgYW5kIGludm9rZQotIyBhIHB5dGhvbiBzY3JpcHQgaW4gYSBz
dWJwcm9jZXNzIHRvIHByaW50IHdoZXRoZXIgdGhlIHZhcmlhYmxlCi0jIGlzIE5PIExPTkdFUiBp
biBvcy5lbnZpcm9uLgotIyBXZSB1c2UgJ2V2YWwnIHRvIHBhcnNlIHRoZSBjaGlsZCdzIG91dHB1
dCBzbyB0aGF0IGFuIGV4Y2VwdGlvbgotIyBpcyB0aHJvd24gaWYgdGhlIGlucHV0IGlzIG5laXRo
ZXIgJ1RydWUnIG5vciAnRmFsc2UnLgotb3MuZW52aXJvblsnVU5TRVRfVkFSJ10gPSAnWCcKLWRl
bCBvcy5lbnZpcm9uWydVTlNFVF9WQVInXQotY2hpbGQgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnBy
b2Nlc3MoCi0gICAgW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAnaW1wb3J0IG9zOyBwcmludCBcJ1VO
U0VUX1ZBUlwnIG5vdCBpbiBvcy5lbnZpcm9uJ10pCi1DQU5fVU5TRVRfRU5WID0gZXZhbChjaGls
ZC5vdXRwdXQpCi0KLQotIyBDaGVja3MgaWYgd2Ugc2hvdWxkIHRlc3Qgd2l0aCBhbiBlbXB0eSBm
aWx0ZXIuIFRoaXMgZG9lc24ndAotIyBtYWtlIHNlbnNlIG9uIHBsYXRmb3JtcyB0aGF0IGNhbm5v
dCBwYXNzIGVtcHR5IGVudiB2YXJpYWJsZXMgKFdpbjMyKQotIyBhbmQgb24gcGxhdGZvcm1zIHRo
YXQgY2Fubm90IHVuc2V0IHZhcmlhYmxlcyAoc2luY2Ugd2UgY2Fubm90IHRlbGwKLSMgdGhlIGRp
ZmZlcmVuY2UgYmV0d2VlbiAiIiBhbmQgTlVMTCAtLSBCb3JsYW5kIGFuZCBTb2xhcmlzIDwgNS4x
MCkKLUNBTl9URVNUX0VNUFRZX0ZJTFRFUiA9IChDQU5fUEFTU19FTVBUWV9FTlYgYW5kIENBTl9V
TlNFVF9FTlYpCi0KLQotIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIHNwZWNpZnlpbmcg
dGhlIHRlc3QgZmlsdGVycy4KLUZJTFRFUl9FTlZfVkFSID0gJ0dURVNUX0ZJTFRFUicKLQotIyBU
aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0ZXN0IHNoYXJkaW5nLgotVE9UQUxfU0hBUkRT
X0VOVl9WQVIgPSAnR1RFU1RfVE9UQUxfU0hBUkRTJwotU0hBUkRfSU5ERVhfRU5WX1ZBUiA9ICdH
VEVTVF9TSEFSRF9JTkRFWCcKLVNIQVJEX1NUQVRVU19GSUxFX0VOVl9WQVIgPSAnR1RFU1RfU0hB
UkRfU1RBVFVTX0ZJTEUnCi0KLSMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciBzcGVjaWZ5aW5n
IHRoZSB0ZXN0IGZpbHRlcnMuCi1GSUxURVJfRkxBRyA9ICdndGVzdF9maWx0ZXInCi0KLSMgVGhl
IGNvbW1hbmQgbGluZSBmbGFnIGZvciBpbmNsdWRpbmcgZGlzYWJsZWQgdGVzdHMuCi1BTFNPX1JV
Tl9ESVNBQkVEX1RFU1RTX0ZMQUcgPSAnZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMnCi0K
LSMgQ29tbWFuZCB0byBydW4gdGhlIGd0ZXN0X2ZpbHRlcl91bml0dGVzdF8gcHJvZ3JhbS4KLUNP
TU1BTkQgPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ3Rlc3RfZmls
dGVyX3VuaXR0ZXN0XycpCi0KLSMgUmVnZXggZm9yIGRldGVybWluaW5nIHdoZXRoZXIgcGFyYW1l
dGVyaXplZCB0ZXN0cyBhcmUgZW5hYmxlZCBpbiB0aGUgYmluYXJ5LgotUEFSQU1fVEVTVF9SRUdF
WCA9IHJlLmNvbXBpbGUocicvUGFyYW1UZXN0JykKLQotIyBSZWdleCBmb3IgcGFyc2luZyB0ZXN0
IGNhc2UgbmFtZXMgZnJvbSBHb29nbGUgVGVzdCdzIG91dHB1dC4KLVRFU1RfQ0FTRV9SRUdFWCA9
IHJlLmNvbXBpbGUocideXFtcLStcXSBcZCsgdGVzdHM/IGZyb20gKFx3KygvXHcrKT8pJykKLQot
IyBSZWdleCBmb3IgcGFyc2luZyB0ZXN0IG5hbWVzIGZyb20gR29vZ2xlIFRlc3QncyBvdXRwdXQu
Ci1URVNUX1JFR0VYID0gcmUuY29tcGlsZShyJ15cW1xzKlJVTlxzKlxdLipcLihcdysoL1x3Kyk/
KScpCi0KLSMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIHRvIHRlbGwgR29vZ2xlIFRlc3QgdG8gb3V0
cHV0IHRoZSBsaXN0IG9mIHRlc3RzIGl0Ci0jIHdpbGwgcnVuLgotTElTVF9URVNUU19GTEFHID0g
Jy0tZ3Rlc3RfbGlzdF90ZXN0cycKLQotIyBJbmRpY2F0ZXMgd2hldGhlciBHb29nbGUgVGVzdCBz
dXBwb3J0cyBkZWF0aCB0ZXN0cy4KLVNVUFBPUlRTX0RFQVRIX1RFU1RTID0gJ0hhc0RlYXRoVGVz
dCcgaW4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAotICAgIFtDT01NQU5ELCBMSVNUX1RF
U1RTX0ZMQUddKS5vdXRwdXQKLQotIyBGdWxsIG5hbWVzIG9mIGFsbCB0ZXN0cyBpbiBndGVzdF9m
aWx0ZXJfdW5pdHRlc3RzXy4KLVBBUkFNX1RFU1RTID0gWwotICAgICdTZXFQL1BhcmFtVGVzdC5U
ZXN0WC8wJywKLSAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMScsCi0gICAgJ1NlcVAvUGFyYW1U
ZXN0LlRlc3RZLzAnLAotICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8xJywKLSAgICAnU2VxUS9Q
YXJhbVRlc3QuVGVzdFgvMCcsCi0gICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RYLzEnLAotICAgICdT
ZXFRL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFkvMScsCi0g
ICAgXQotCi1ESVNBQkxFRF9URVNUUyA9IFsKLSAgICAnQmFyVGVzdC5ESVNBQkxFRF9UZXN0Rm91
cicsCi0gICAgJ0JhclRlc3QuRElTQUJMRURfVGVzdEZpdmUnLAotICAgICdCYXpUZXN0LkRJU0FC
TEVEX1Rlc3RDJywKLSAgICAnRElTQUJMRURfRm9vYmFyVGVzdC5UZXN0MScsCi0gICAgJ0RJU0FC
TEVEX0Zvb2JhclRlc3QuRElTQUJMRURfVGVzdDInLAotICAgICdESVNBQkxFRF9Gb29iYXJiYXpU
ZXN0LlRlc3RBJywKLSAgICBdCi0KLWlmIFNVUFBPUlRTX0RFQVRIX1RFU1RTOgotICBERUFUSF9U
RVNUUyA9IFsKLSAgICAnSGFzRGVhdGhUZXN0LlRlc3QxJywKLSAgICAnSGFzRGVhdGhUZXN0LlRl
c3QyJywKLSAgICBdCi1lbHNlOgotICBERUFUSF9URVNUUyA9IFtdCi0KLSMgQWxsIHRoZSBub24t
ZGlzYWJsZWQgdGVzdHMuCi1BQ1RJVkVfVEVTVFMgPSBbCi0gICAgJ0Zvb1Rlc3QuQWJjJywKLSAg
ICAnRm9vVGVzdC5YeXonLAotCi0gICAgJ0JhclRlc3QuVGVzdE9uZScsCi0gICAgJ0JhclRlc3Qu
VGVzdFR3bycsCi0gICAgJ0JhclRlc3QuVGVzdFRocmVlJywKLQotICAgICdCYXpUZXN0LlRlc3RP
bmUnLAotICAgICdCYXpUZXN0LlRlc3RBJywKLSAgICAnQmF6VGVzdC5UZXN0QicsCi0gICAgXSAr
IERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMKLQotcGFyYW1fdGVzdHNfcHJlc2VudCA9IE5vbmUK
LQotIyBVdGlsaXRpZXMuCi0KLWVudmlyb24gPSBvcy5lbnZpcm9uLmNvcHkoKQotCi0KLWRlZiBT
ZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgotICAiIiJTZXRzIHRoZSBlbnYgdmFyaWFibGUgdG8g
J3ZhbHVlJzsgdW5zZXRzIGl0IHdoZW4gJ3ZhbHVlJyBpcyBOb25lLiIiIgotCi0gIGlmIHZhbHVl
IGlzIG5vdCBOb25lOgotICAgIGVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQotICBlbGlmIGVudl92
YXIgaW4gZW52aXJvbjoKLSAgICBkZWwgZW52aXJvbltlbnZfdmFyXQotCi0KLWRlZiBSdW5BbmRS
ZXR1cm5PdXRwdXQoYXJncyA9IE5vbmUpOgotICAiIiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0gYW5k
IHJldHVybnMgaXRzIG91dHB1dC4iIiIKLQotICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJw
cm9jZXNzKFtDT01NQU5EXSArIChhcmdzIG9yIFtdKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbnY9ZW52aXJvbikub3V0cHV0Ci0KLQotZGVmIFJ1bkFuZEV4dHJhY3RU
ZXN0TGlzdChhcmdzID0gTm9uZSk6Ci0gICIiIlJ1bnMgdGhlIHRlc3QgcHJvZ3JhbSBhbmQgcmV0
dXJucyBpdHMgZXhpdCBjb2RlIGFuZCBhIGxpc3Qgb2YgdGVzdHMgcnVuLiIiIgotCi0gIHAgPSBn
dGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0NPTU1BTkRdICsgKGFyZ3Mgb3IgW10pLCBlbnY9
ZW52aXJvbikKLSAgdGVzdHNfcnVuID0gW10KLSAgdGVzdF9jYXNlID0gJycKLSAgdGVzdCA9ICcn
Ci0gIGZvciBsaW5lIGluIHAub3V0cHV0LnNwbGl0KCdcbicpOgotICAgIG1hdGNoID0gVEVTVF9D
QVNFX1JFR0VYLm1hdGNoKGxpbmUpCi0gICAgaWYgbWF0Y2ggaXMgbm90IE5vbmU6Ci0gICAgICB0
ZXN0X2Nhc2UgPSBtYXRjaC5ncm91cCgxKQotICAgIGVsc2U6Ci0gICAgICBtYXRjaCA9IFRFU1Rf
UkVHRVgubWF0Y2gobGluZSkKLSAgICAgIGlmIG1hdGNoIGlzIG5vdCBOb25lOgotICAgICAgICB0
ZXN0ID0gbWF0Y2guZ3JvdXAoMSkKLSAgICAgICAgdGVzdHNfcnVuLmFwcGVuZCh0ZXN0X2Nhc2Ug
KyAnLicgKyB0ZXN0KQotICByZXR1cm4gKHRlc3RzX3J1biwgcC5leGl0X2NvZGUpCi0KLQotZGVm
IEludm9rZVdpdGhNb2RpZmllZEVudihleHRyYV9lbnYsIGZ1bmN0aW9uLCAqYXJncywgKiprd2Fy
Z3MpOgotICAiIiJSdW5zIHRoZSBnaXZlbiBmdW5jdGlvbiBhbmQgYXJndW1lbnRzIGluIGEgbW9k
aWZpZWQgZW52aXJvbm1lbnQuIiIiCi0gIHRyeToKLSAgICBvcmlnaW5hbF9lbnYgPSBlbnZpcm9u
LmNvcHkoKQotICAgIGVudmlyb24udXBkYXRlKGV4dHJhX2VudikKLSAgICByZXR1cm4gZnVuY3Rp
b24oKmFyZ3MsICoqa3dhcmdzKQotICBmaW5hbGx5OgotICAgIGVudmlyb24uY2xlYXIoKQotICAg
IGVudmlyb24udXBkYXRlKG9yaWdpbmFsX2VudikKLQotCi1kZWYgUnVuV2l0aFNoYXJkaW5nKHRv
dGFsX3NoYXJkcywgc2hhcmRfaW5kZXgsIGNvbW1hbmQpOgotICAiIiJSdW5zIGEgdGVzdCBwcm9n
cmFtIHNoYXJkIGFuZCByZXR1cm5zIGV4aXQgY29kZSBhbmQgYSBsaXN0IG9mIHRlc3RzIHJ1bi4i
IiIKLQotICBleHRyYV9lbnYgPSB7U0hBUkRfSU5ERVhfRU5WX1ZBUjogc3RyKHNoYXJkX2luZGV4
KSwKLSAgICAgICAgICAgICAgIFRPVEFMX1NIQVJEU19FTlZfVkFSOiBzdHIodG90YWxfc2hhcmRz
KX0KLSAgcmV0dXJuIEludm9rZVdpdGhNb2RpZmllZEVudihleHRyYV9lbnYsIFJ1bkFuZEV4dHJh
Y3RUZXN0TGlzdCwgY29tbWFuZCkKLQotIyBUaGUgdW5pdCB0ZXN0LgotCi0KLWNsYXNzIEdUZXN0
RmlsdGVyVW5pdFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gICIiIlRlc3RzIHRo
ZSBlbnYgdmFyaWFibGUgb3IgdGhlIGNvbW1hbmQgbGluZSBmbGFnIHRvIGZpbHRlciB0ZXN0cy4i
IiIKLQotICAjIFV0aWxpdGllcy4KLQotICBkZWYgQXNzZXJ0U2V0RXF1YWwoc2VsZiwgbGhzLCBy
aHMpOgotICAgICIiIkFzc2VydHMgdGhhdCB0d28gc2V0cyBhcmUgZXF1YWwuIiIiCi0KLSAgICBm
b3IgZWxlbSBpbiBsaHM6Ci0gICAgICBzZWxmLmFzc2VydF8oZWxlbSBpbiByaHMsICclcyBpbiAl
cycgJSAoZWxlbSwgcmhzKSkKLQotICAgIGZvciBlbGVtIGluIHJoczoKLSAgICAgIHNlbGYuYXNz
ZXJ0XyhlbGVtIGluIGxocywgJyVzIGluICVzJyAlIChlbGVtLCBsaHMpKQotCi0gIGRlZiBBc3Nl
cnRQYXJ0aXRpb25Jc1ZhbGlkKHNlbGYsIHNldF92YXIsIGxpc3Rfb2Zfc2V0cyk6Ci0gICAgIiIi
QXNzZXJ0cyB0aGF0IGxpc3Rfb2Zfc2V0cyBpcyBhIHZhbGlkIHBhcnRpdGlvbiBvZiBzZXRfdmFy
LiIiIgotCi0gICAgZnVsbF9wYXJ0aXRpb24gPSBbXQotICAgIGZvciBzbGljZV92YXIgaW4gbGlz
dF9vZl9zZXRzOgotICAgICAgZnVsbF9wYXJ0aXRpb24uZXh0ZW5kKHNsaWNlX3ZhcikKLSAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihzZXRfdmFyKSwgbGVuKGZ1bGxfcGFydGl0aW9uKSkKLSAgICBz
ZWxmLmFzc2VydEVxdWFsKHNldHMuU2V0KHNldF92YXIpLCBzZXRzLlNldChmdWxsX3BhcnRpdGlv
bikpCi0KLSAgZGVmIEFkanVzdEZvclBhcmFtZXRlcml6ZWRUZXN0cyhzZWxmLCB0ZXN0c190b19y
dW4pOgotICAgICIiIkFkanVzdCB0ZXN0c190b19ydW4gaW4gY2FzZSB2YWx1ZSBwYXJhbWV0ZXJp
emVkIHRlc3RzIGFyZSBkaXNhYmxlZC4iIiIKLQotICAgIGdsb2JhbCBwYXJhbV90ZXN0c19wcmVz
ZW50Ci0gICAgaWYgbm90IHBhcmFtX3Rlc3RzX3ByZXNlbnQ6Ci0gICAgICByZXR1cm4gbGlzdChz
ZXRzLlNldCh0ZXN0c190b19ydW4pIC0gc2V0cy5TZXQoUEFSQU1fVEVTVFMpKQotICAgIGVsc2U6
Ci0gICAgICByZXR1cm4gdGVzdHNfdG9fcnVuCi0KLSAgZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBn
dGVzdF9maWx0ZXIsIHRlc3RzX3RvX3J1bik6Ci0gICAgIiIiQ2hlY2tzIHRoYXQgdGhlIGJpbmFy
eSBydW5zIGNvcnJlY3Qgc2V0IG9mIHRlc3RzIGZvciBhIGdpdmVuIGZpbHRlci4iIiIKLQotICAg
IHRlc3RzX3RvX3J1biA9IHNlbGYuQWRqdXN0Rm9yUGFyYW1ldGVyaXplZFRlc3RzKHRlc3RzX3Rv
X3J1bikKLQotICAgICMgRmlyc3QsIHRlc3RzIHVzaW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJs
ZS4KLQotICAgICMgV2luZG93cyByZW1vdmVzIGVtcHR5IHZhcmlhYmxlcyBmcm9tIHRoZSBlbnZp
cm9ubWVudCB3aGVuIHBhc3NpbmcgaXQKLSAgICAjIHRvIGEgbmV3IHByb2Nlc3MuICBUaGlzIG1l
YW5zIGl0IGlzIGltcG9zc2libGUgdG8gcGFzcyBhbiBlbXB0eSBmaWx0ZXIKLSAgICAjIGludG8g
YSBwcm9jZXNzIHVzaW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS4gIEhvd2V2ZXIsIHdlIGNh
biBzdGlsbAotICAgICMgdGVzdCB0aGUgY2FzZSB3aGVuIHRoZSB2YXJpYWJsZSBpcyBub3Qgc3Vw
cGxpZWQgKGkuZS4sIGd0ZXN0X2ZpbHRlciBpcwotICAgICMgTm9uZSkuCi0gICAgIyBweWxpbnQ6
IGRpc2FibGUtbXNnPUM2NDAzCi0gICAgaWYgQ0FOX1RFU1RfRU1QVFlfRklMVEVSIG9yIGd0ZXN0
X2ZpbHRlciAhPSAnJzoKLSAgICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgZ3Rlc3RfZmls
dGVyKQotICAgICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KClbMF0KLSAgICAg
IFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgTm9uZSkKLSAgICAgIHNlbGYuQXNzZXJ0U2V0RXF1
YWwodGVzdHNfcnVuLCB0ZXN0c190b19ydW4pCi0gICAgIyBweWxpbnQ6IGVuYWJsZS1tc2c9QzY0
MDMKLQotICAgICMgTmV4dCwgdGVzdHMgdXNpbmcgdGhlIGNvbW1hbmQgbGluZSBmbGFnLgotCi0g
ICAgaWYgZ3Rlc3RfZmlsdGVyIGlzIE5vbmU6Ci0gICAgICBhcmdzID0gW10KLSAgICBlbHNlOgot
ICAgICAgYXJncyA9IFsnLS0lcz0lcycgJSAoRklMVEVSX0ZMQUcsIGd0ZXN0X2ZpbHRlcildCi0K
LSAgICB0ZXN0c19ydW4gPSBSdW5BbmRFeHRyYWN0VGVzdExpc3QoYXJncylbMF0KLSAgICBzZWxm
LkFzc2VydFNldEVxdWFsKHRlc3RzX3J1biwgdGVzdHNfdG9fcnVuKQotCi0gIGRlZiBSdW5BbmRW
ZXJpZnlXaXRoU2hhcmRpbmcoc2VsZiwgZ3Rlc3RfZmlsdGVyLCB0b3RhbF9zaGFyZHMsIHRlc3Rz
X3RvX3J1biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPU5vbmUsIGNoZWNr
X2V4aXRfMD1GYWxzZSk6Ci0gICAgIiIiQ2hlY2tzIHRoYXQgYmluYXJ5IHJ1bnMgY29ycmVjdCB0
ZXN0cyBmb3IgdGhlIGdpdmVuIGZpbHRlciBhbmQgc2hhcmQuCi0KLSAgICBSdW5zIGFsbCBzaGFy
ZHMgb2YgZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0XyB3aXRoIHRoZSBnaXZlbiBmaWx0ZXIsIGFuZAot
ICAgIHZlcmlmaWVzIHRoYXQgdGhlIHJpZ2h0IHNldCBvZiB0ZXN0cyB3ZXJlIHJ1bi4gVGhlIHVu
aW9uIG9mIHRlc3RzIHJ1bgotICAgIG9uIGVhY2ggc2hhcmQgc2hvdWxkIGJlIGlkZW50aWNhbCB0
byB0ZXN0c190b19ydW4sIHdpdGhvdXQgZHVwbGljYXRlcy4KLQotICAgIEFyZ3M6Ci0gICAgICBn
dGVzdF9maWx0ZXI6IEEgZmlsdGVyIHRvIGFwcGx5IHRvIHRoZSB0ZXN0cy4KLSAgICAgIHRvdGFs
X3NoYXJkczogQSB0b3RhbCBudW1iZXIgb2Ygc2hhcmRzIHRvIHNwbGl0IHRlc3QgcnVuIGludG8u
Ci0gICAgICB0ZXN0c190b19ydW46IEEgc2V0IG9mIHRlc3RzIGV4cGVjdGVkIHRvIHJ1bi4KLSAg
ICAgIGFyZ3MgICA6ICAgICAgQXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIHRvIHRoZSB0ZXN0IGJp
bmFyeS4KLSAgICAgIGNoZWNrX2V4aXRfMDogV2hlbiBzZXQgdG8gYSB0cnVlIHZhbHVlLCBtYWtl
IHN1cmUgdGhhdCBhbGwgc2hhcmRzCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwLgotICAg
ICIiIgotCi0gICAgdGVzdHNfdG9fcnVuID0gc2VsZi5BZGp1c3RGb3JQYXJhbWV0ZXJpemVkVGVz
dHModGVzdHNfdG9fcnVuKQotCi0gICAgIyBXaW5kb3dzIHJlbW92ZXMgZW1wdHkgdmFyaWFibGVz
IGZyb20gdGhlIGVudmlyb25tZW50IHdoZW4gcGFzc2luZyBpdAotICAgICMgdG8gYSBuZXcgcHJv
Y2Vzcy4gIFRoaXMgbWVhbnMgaXQgaXMgaW1wb3NzaWJsZSB0byBwYXNzIGFuIGVtcHR5IGZpbHRl
cgotICAgICMgaW50byBhIHByb2Nlc3MgdXNpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLiAg
SG93ZXZlciwgd2UgY2FuIHN0aWxsCi0gICAgIyB0ZXN0IHRoZSBjYXNlIHdoZW4gdGhlIHZhcmlh
YmxlIGlzIG5vdCBzdXBwbGllZCAoaS5lLiwgZ3Rlc3RfZmlsdGVyIGlzCi0gICAgIyBOb25lKS4K
LSAgICAjIHB5bGludDogZGlzYWJsZS1tc2c9QzY0MDMKLSAgICBpZiBDQU5fVEVTVF9FTVBUWV9G
SUxURVIgb3IgZ3Rlc3RfZmlsdGVyICE9ICcnOgotICAgICAgU2V0RW52VmFyKEZJTFRFUl9FTlZf
VkFSLCBndGVzdF9maWx0ZXIpCi0gICAgICBwYXJ0aXRpb24gPSBbXQotICAgICAgZm9yIGkgaW4g
cmFuZ2UoMCwgdG90YWxfc2hhcmRzKToKLSAgICAgICAgKHRlc3RzX3J1biwgZXhpdF9jb2RlKSA9
IFJ1bldpdGhTaGFyZGluZyh0b3RhbF9zaGFyZHMsIGksIGFyZ3MpCi0gICAgICAgIGlmIGNoZWNr
X2V4aXRfMDoKLSAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGV4aXRfY29kZSkKLSAgICAg
ICAgcGFydGl0aW9uLmFwcGVuZCh0ZXN0c19ydW4pCi0KLSAgICAgIHNlbGYuQXNzZXJ0UGFydGl0
aW9uSXNWYWxpZCh0ZXN0c190b19ydW4sIHBhcnRpdGlvbikKLSAgICAgIFNldEVudlZhcihGSUxU
RVJfRU5WX1ZBUiwgTm9uZSkKLSAgICAjIHB5bGludDogZW5hYmxlLW1zZz1DNjQwMwotCi0gIGRl
ZiBSdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKHNlbGYsIGd0ZXN0X2ZpbHRlciwgdGVzdHNf
dG9fcnVuKToKLSAgICAiIiJDaGVja3MgdGhhdCB0aGUgYmluYXJ5IHJ1bnMgY29ycmVjdCBzZXQg
b2YgdGVzdHMgZm9yIHRoZSBnaXZlbiBmaWx0ZXIuCi0KLSAgICBSdW5zIGd0ZXN0X2ZpbHRlcl91
bml0dGVzdF8gd2l0aCB0aGUgZ2l2ZW4gZmlsdGVyLCBhbmQgZW5hYmxlcwotICAgIGRpc2FibGVk
IHRlc3RzLiBWZXJpZmllcyB0aGF0IHRoZSByaWdodCBzZXQgb2YgdGVzdHMgd2VyZSBydW4uCi0K
LSAgICBBcmdzOgotICAgICAgZ3Rlc3RfZmlsdGVyOiBBIGZpbHRlciB0byBhcHBseSB0byB0aGUg
dGVzdHMuCi0gICAgICB0ZXN0c190b19ydW46IEEgc2V0IG9mIHRlc3RzIGV4cGVjdGVkIHRvIHJ1
bi4KLSAgICAiIiIKLQotICAgIHRlc3RzX3RvX3J1biA9IHNlbGYuQWRqdXN0Rm9yUGFyYW1ldGVy
aXplZFRlc3RzKHRlc3RzX3RvX3J1bikKLQotICAgICMgQ29uc3RydWN0IHRoZSBjb21tYW5kIGxp
bmUuCi0gICAgYXJncyA9IFsnLS0lcycgJSBBTFNPX1JVTl9ESVNBQkVEX1RFU1RTX0ZMQUddCi0g
ICAgaWYgZ3Rlc3RfZmlsdGVyIGlzIG5vdCBOb25lOgotICAgICAgYXJncy5hcHBlbmQoJy0tJXM9
JXMnICUgKEZJTFRFUl9GTEFHLCBndGVzdF9maWx0ZXIpKQotCi0gICAgdGVzdHNfcnVuID0gUnVu
QW5kRXh0cmFjdFRlc3RMaXN0KGFyZ3MpWzBdCi0gICAgc2VsZi5Bc3NlcnRTZXRFcXVhbCh0ZXN0
c19ydW4sIHRlc3RzX3RvX3J1bikKLQotICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgIiIiU2V0cyB1
cCB0ZXN0IGNhc2UuCi0KLSAgICBEZXRlcm1pbmVzIHdoZXRoZXIgdmFsdWUtcGFyYW1ldGVyaXpl
ZCB0ZXN0cyBhcmUgZW5hYmxlZCBpbiB0aGUgYmluYXJ5IGFuZAotICAgIHNldHMgdGhlIGZsYWdz
IGFjY29yZGluZ2x5LgotICAgICIiIgotCi0gICAgZ2xvYmFsIHBhcmFtX3Rlc3RzX3ByZXNlbnQK
LSAgICBpZiBwYXJhbV90ZXN0c19wcmVzZW50IGlzIE5vbmU6Ci0gICAgICBwYXJhbV90ZXN0c19w
cmVzZW50ID0gUEFSQU1fVEVTVF9SRUdFWC5zZWFyY2goCi0gICAgICAgICAgUnVuQW5kUmV0dXJu
T3V0cHV0KCkpIGlzIG5vdCBOb25lCi0KLSAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3Ioc2VsZik6
Ci0gICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9yIG9mIG5vdCBzcGVjaWZ5aW5nIHRoZSBmaWx0ZXIu
IiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShOb25lLCBBQ1RJVkVfVEVTVFMpCi0KLSAgZGVm
IHRlc3REZWZhdWx0QmVoYXZpb3JXaXRoU2hhcmRzKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBi
ZWhhdmlvciB3aXRob3V0IHRoZSBmaWx0ZXIsIHdpdGggc2hhcmRpbmcgZW5hYmxlZC4iIiIKLQot
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKE5vbmUsIDEsIEFDVElWRV9URVNUUykK
LSAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhOb25lLCAyLCBBQ1RJVkVfVEVTVFMp
Ci0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgbGVuKEFDVElWRV9URVNU
UykgLSAxLCBBQ1RJVkVfVEVTVFMpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmco
Tm9uZSwgbGVuKEFDVElWRV9URVNUUyksIEFDVElWRV9URVNUUykKLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeVdpdGhTaGFyZGluZyhOb25lLCBsZW4oQUNUSVZFX1RFU1RTKSArIDEsIEFDVElWRV9URVNU
UykKLQotICBkZWYgdGVzdEVtcHR5RmlsdGVyKHNlbGYpOgotICAgICIiIlRlc3RzIGFuIGVtcHR5
IGZpbHRlci4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcnLCBbXSkKLSAgICBzZWxmLlJ1
bkFuZFZlcmlmeVdpdGhTaGFyZGluZygnJywgMSwgW10pCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlX
aXRoU2hhcmRpbmcoJycsIDIsIFtdKQotCi0gIGRlZiB0ZXN0QmFkRmlsdGVyKHNlbGYpOgotICAg
ICIiIlRlc3RzIGEgZmlsdGVyIHRoYXQgbWF0Y2hlcyBub3RoaW5nLiIiIgotCi0gICAgc2VsZi5S
dW5BbmRWZXJpZnkoJ0JhZEZpbHRlcicsIFtdKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dp
bmdEaXNhYmxlZCgnQmFkRmlsdGVyJywgW10pCi0KLSAgZGVmIHRlc3RGdWxsTmFtZShzZWxmKToK
LSAgICAiIiJUZXN0cyBmaWx0ZXJpbmcgYnkgZnVsbCBuYW1lLiIiIgotCi0gICAgc2VsZi5SdW5B
bmRWZXJpZnkoJ0Zvb1Rlc3QuWHl6JywgWydGb29UZXN0Llh5eiddKQotICAgIHNlbGYuUnVuQW5k
VmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnRm9vVGVzdC5YeXonLCBbJ0Zvb1Rlc3QuWHl6J10pCi0g
ICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJ0Zvb1Rlc3QuWHl6JywgNSwgWydGb29U
ZXN0Llh5eiddKQotCi0gIGRlZiB0ZXN0VW5pdmVyc2FsRmlsdGVycyhzZWxmKToKLSAgICAiIiJU
ZXN0cyBmaWx0ZXJzIHRoYXQgbWF0Y2ggZXZlcnl0aGluZy4iIiIKLQotICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KCcqJywgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLionLCBB
Q1RJVkVfVEVTVFMpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJyouKicsIGxl
bihBQ1RJVkVfVEVTVFMpIC0gMywgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5
QWxsb3dpbmdEaXNhYmxlZCgnKicsIEFDVElWRV9URVNUUyArIERJU0FCTEVEX1RFU1RTKQotICAg
IHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnKi4qJywgQUNUSVZFX1RFU1RTICsg
RElTQUJMRURfVEVTVFMpCi0KLSAgZGVmIHRlc3RGaWx0ZXJCeVRlc3RDYXNlKHNlbGYpOgotICAg
ICIiIlRlc3RzIGZpbHRlcmluZyBieSB0ZXN0IGNhc2UgbmFtZS4iIiIKLQotICAgIHNlbGYuUnVu
QW5kVmVyaWZ5KCdGb29UZXN0LionLCBbJ0Zvb1Rlc3QuQWJjJywgJ0Zvb1Rlc3QuWHl6J10pCi0K
LSAgICBCQVpfVEVTVFMgPSBbJ0JhelRlc3QuVGVzdE9uZScsICdCYXpUZXN0LlRlc3RBJywgJ0Jh
elRlc3QuVGVzdEInXQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdCYXpUZXN0LionLCBCQVpfVEVT
VFMpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdCYXpUZXN0LionLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCQVpfVEVTVFMgKyBbJ0JhelRl
c3QuRElTQUJMRURfVGVzdEMnXSkKLQotICBkZWYgdGVzdEZpbHRlckJ5VGVzdChzZWxmKToKLSAg
ICAiIiJUZXN0cyBmaWx0ZXJpbmcgYnkgdGVzdCBuYW1lLiIiIgotCi0gICAgc2VsZi5SdW5BbmRW
ZXJpZnkoJyouVGVzdE9uZScsIFsnQmFyVGVzdC5UZXN0T25lJywgJ0JhelRlc3QuVGVzdE9uZSdd
KQotCi0gIGRlZiB0ZXN0RmlsdGVyRGlzYWJsZWRUZXN0cyhzZWxmKToKLSAgICAiIiJTZWxlY3Qg
b25seSB0aGUgZGlzYWJsZWQgdGVzdHMgdG8gcnVuLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJp
ZnkoJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnLCBbXSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlm
eUFsbG93aW5nRGlzYWJsZWQoJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEn
XSkKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqRElTQUJMRURfKicsIFtdKQotICAgIHNlbGYu
UnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnKkRJU0FCTEVEXyonLCBESVNBQkxFRF9URVNU
UykKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLkRJU0FCTEVEXyonLCBbXSkKLSAgICBzZWxm
LlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJyouRElTQUJMRURfKicsIFsKLSAgICAgICAg
J0JhclRlc3QuRElTQUJMRURfVGVzdEZvdXInLAotICAgICAgICAnQmFyVGVzdC5ESVNBQkxFRF9U
ZXN0Rml2ZScsCi0gICAgICAgICdCYXpUZXN0LkRJU0FCTEVEX1Rlc3RDJywKLSAgICAgICAgJ0RJ
U0FCTEVEX0Zvb2JhclRlc3QuRElTQUJMRURfVGVzdDInLAotICAgICAgICBdKQotCi0gICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoJ0RJU0FCTEVEXyonLCBbXSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFs
bG93aW5nRGlzYWJsZWQoJ0RJU0FCTEVEXyonLCBbCi0gICAgICAgICdESVNBQkxFRF9Gb29iYXJU
ZXN0LlRlc3QxJywKLSAgICAgICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuRElTQUJMRURfVGVzdDIn
LAotICAgICAgICAnRElTQUJMRURfRm9vYmFyYmF6VGVzdC5UZXN0QScsCi0gICAgICAgIF0pCi0K
LSAgZGVmIHRlc3RXaWxkY2FyZEluVGVzdENhc2VOYW1lKHNlbGYpOgotICAgICIiIlRlc3RzIHVz
aW5nIHdpbGRjYXJkIGluIHRoZSB0ZXN0IGNhc2UgbmFtZS4iIiIKLQotICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KCcqYSouKicsIFsKLSAgICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCi0gICAgICAgICdC
YXJUZXN0LlRlc3RUd28nLAotICAgICAgICAnQmFyVGVzdC5UZXN0VGhyZWUnLAotCi0gICAgICAg
ICdCYXpUZXN0LlRlc3RPbmUnLAotICAgICAgICAnQmF6VGVzdC5UZXN0QScsCi0gICAgICAgICdC
YXpUZXN0LlRlc3RCJywgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMpCi0KLSAgZGVmIHRl
c3RXaWxkY2FyZEluVGVzdE5hbWUoc2VsZik6Ci0gICAgIiIiVGVzdHMgdXNpbmcgd2lsZGNhcmQg
aW4gdGhlIHRlc3QgbmFtZS4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLipBKicsIFsn
Rm9vVGVzdC5BYmMnLCAnQmF6VGVzdC5UZXN0QSddKQotCi0gIGRlZiB0ZXN0RmlsdGVyV2l0aG91
dERvdChzZWxmKToKLSAgICAiIiJUZXN0cyBhIGZpbHRlciB0aGF0IGhhcyBubyAnLicgaW4gaXQu
IiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKnoqJywgWwotICAgICAgICAnRm9vVGVzdC5Y
eXonLAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RPbmUnLAotICAgICAgICAnQmF6VGVzdC5UZXN0
QScsCi0gICAgICAgICdCYXpUZXN0LlRlc3RCJywKLSAgICAgICAgXSkKLQotICBkZWYgdGVzdFR3
b1BhdHRlcm5zKHNlbGYpOgotICAgICIiIlRlc3RzIGZpbHRlcnMgdGhhdCBjb25zaXN0IG9mIHR3
byBwYXR0ZXJucy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdGb28qLio6KkEqJywgWwot
ICAgICAgICAnRm9vVGVzdC5BYmMnLAotICAgICAgICAnRm9vVGVzdC5YeXonLAotCi0gICAgICAg
ICdCYXpUZXN0LlRlc3RBJywKLSAgICAgICAgXSkKLQotICAgICMgQW4gZW1wdHkgcGF0dGVybiAr
IGEgbm9uLWVtcHR5IG9uZQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCc6KkEqJywgWydGb29UZXN0
LkFiYycsICdCYXpUZXN0LlRlc3RBJ10pCi0KLSAgZGVmIHRlc3RUaHJlZVBhdHRlcm5zKHNlbGYp
OgotICAgICIiIlRlc3RzIGZpbHRlcnMgdGhhdCBjb25zaXN0IG9mIHRocmVlIHBhdHRlcm5zLiIi
IgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJypvbyo6KkEqOipPbmUnLCBbCi0gICAgICAgICdG
b29UZXN0LkFiYycsCi0gICAgICAgICdGb29UZXN0Llh5eicsCi0KLSAgICAgICAgJ0JhclRlc3Qu
VGVzdE9uZScsCi0KLSAgICAgICAgJ0JhelRlc3QuVGVzdE9uZScsCi0gICAgICAgICdCYXpUZXN0
LlRlc3RBJywKLSAgICAgICAgXSkKLQotICAgICMgVGhlIDJuZCBwYXR0ZXJuIGlzIGVtcHR5Lgot
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqb28qOjoqT25lJywgWwotICAgICAgICAnRm9vVGVzdC5B
YmMnLAotICAgICAgICAnRm9vVGVzdC5YeXonLAotCi0gICAgICAgICdCYXJUZXN0LlRlc3RPbmUn
LAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RPbmUnLAotICAgICAgICBdKQotCi0gICAgIyBUaGUg
bGFzdCAyIHBhdHRlcm5zIGFyZSBlbXB0eS4KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKm9vKjo6
JywgWwotICAgICAgICAnRm9vVGVzdC5BYmMnLAotICAgICAgICAnRm9vVGVzdC5YeXonLAotICAg
ICAgICBdKQotCi0gIGRlZiB0ZXN0TmVnYXRpdmVGaWx0ZXJzKHNlbGYpOgotICAgIHNlbGYuUnVu
QW5kVmVyaWZ5KCcqLUJhelRlc3QuVGVzdE9uZScsIFsKLSAgICAgICAgJ0Zvb1Rlc3QuQWJjJywK
LSAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKLSAg
ICAgICAgJ0JhclRlc3QuVGVzdFR3bycsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCi0K
LSAgICAgICAgJ0JhelRlc3QuVGVzdEEnLAotICAgICAgICAnQmF6VGVzdC5UZXN0QicsCi0gICAg
ICAgIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTKQotCi0gICAgc2VsZi5SdW5BbmRWZXJp
ZnkoJyotRm9vVGVzdC5BYmM6QmF6VGVzdC4qJywgWwotICAgICAgICAnRm9vVGVzdC5YeXonLAot
Ci0gICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAotICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywK
LSAgICAgICAgJ0JhclRlc3QuVGVzdFRocmVlJywKLSAgICAgICAgXSArIERFQVRIX1RFU1RTICsg
UEFSQU1fVEVTVFMpCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnQmFyVGVzdC4qLUJhclRlc3Qu
VGVzdE9uZScsIFsKLSAgICAgICAgJ0JhclRlc3QuVGVzdFR3bycsCi0gICAgICAgICdCYXJUZXN0
LlRlc3RUaHJlZScsCi0gICAgICAgIF0pCi0KLSAgICAjIFRlc3RzIHdpdGhvdXQgbGVhZGluZyAn
KicuCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJy1Gb29UZXN0LkFiYzpGb29UZXN0Llh5ejpCYXpU
ZXN0LionLCBbCi0gICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAotICAgICAgICAnQmFyVGVzdC5U
ZXN0VHdvJywKLSAgICAgICAgJ0JhclRlc3QuVGVzdFRocmVlJywKLSAgICAgICAgXSArIERFQVRI
X1RFU1RTICsgUEFSQU1fVEVTVFMpCi0KLSAgICAjIFZhbHVlIHBhcmFtZXRlcml6ZWQgdGVzdHMu
Ci0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJyovKicsIFBBUkFNX1RFU1RTKQotCi0gICAgIyBWYWx1
ZSBwYXJhbWV0ZXJpemVkIHRlc3RzIGZpbHRlcmluZyBieSB0aGUgc2VxdWVuY2UgbmFtZS4KLSAg
ICBzZWxmLlJ1bkFuZFZlcmlmeSgnU2VxUC8qJywgWwotICAgICAgICAnU2VxUC9QYXJhbVRlc3Qu
VGVzdFgvMCcsCi0gICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8xJywKLSAgICAgICAgJ1Nl
cVAvUGFyYW1UZXN0LlRlc3RZLzAnLAotICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMScs
Ci0gICAgICAgIF0pCi0KLSAgICAjIFZhbHVlIHBhcmFtZXRlcml6ZWQgdGVzdHMgZmlsdGVyaW5n
IGJ5IHRoZSB0ZXN0IG5hbWUuCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJyovMCcsIFsKLSAgICAg
ICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzAnLAotICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVz
dFkvMCcsCi0gICAgICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WC8wJywKLSAgICAgICAgJ1NlcVEv
UGFyYW1UZXN0LlRlc3RZLzAnLAotICAgICAgICBdKQotCi0gIGRlZiB0ZXN0RmxhZ092ZXJyaWRl
c0VudlZhcihzZWxmKToKLSAgICAiIiJUZXN0cyB0aGF0IHRoZSBmaWx0ZXIgZmxhZyBvdmVycmlk
ZXMgdGhlIGZpbHRlcmluZyBlbnYuIHZhcmlhYmxlLiIiIgotCi0gICAgU2V0RW52VmFyKEZJTFRF
Ul9FTlZfVkFSLCAnRm9vKicpCi0gICAgYXJncyA9IFsnLS0lcz0lcycgJSAoRklMVEVSX0ZMQUcs
ICcqT25lJyldCi0gICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KGFyZ3MpWzBd
Ci0gICAgU2V0RW52VmFyKEZJTFRFUl9FTlZfVkFSLCBOb25lKQotCi0gICAgc2VsZi5Bc3NlcnRT
ZXRFcXVhbCh0ZXN0c19ydW4sIFsnQmFyVGVzdC5UZXN0T25lJywgJ0JhelRlc3QuVGVzdE9uZSdd
KQotCi0gIGRlZiB0ZXN0U2hhcmRTdGF0dXNGaWxlSXNDcmVhdGVkKHNlbGYpOgotICAgICIiIlRl
c3RzIHRoYXQgdGhlIHNoYXJkIGZpbGUgaXMgY3JlYXRlZCBpZiBzcGVjaWZpZWQgaW4gdGhlIGVu
dmlyb25tZW50LiIiIgotCi0gICAgc2hhcmRfc3RhdHVzX2ZpbGUgPSBvcy5wYXRoLmpvaW4oZ3Rl
c3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3NoYXJkX3N0YXR1c19maWxlJykKLSAgICBzZWxmLmFzc2VydF8obm90IG9zLnBh
dGguZXhpc3RzKHNoYXJkX3N0YXR1c19maWxlKSkKLQotICAgIGV4dHJhX2VudiA9IHtTSEFSRF9T
VEFUVVNfRklMRV9FTlZfVkFSOiBzaGFyZF9zdGF0dXNfZmlsZX0KLSAgICB0cnk6Ci0gICAgICBJ
bnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LCBSdW5BbmRSZXR1cm5PdXRwdXQpCi0gICAg
ZmluYWxseToKLSAgICAgIHNlbGYuYXNzZXJ0Xyhvcy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNf
ZmlsZSkpCi0gICAgICBvcy5yZW1vdmUoc2hhcmRfc3RhdHVzX2ZpbGUpCi0KLSAgZGVmIHRlc3RT
aGFyZFN0YXR1c0ZpbGVJc0NyZWF0ZWRXaXRoTGlzdFRlc3RzKHNlbGYpOgotICAgICIiIlRlc3Rz
IHRoYXQgdGhlIHNoYXJkIGZpbGUgaXMgY3JlYXRlZCB3aXRoIHRoZSAibGlzdF90ZXN0cyIgZmxh
Zy4iIiIKLQotICAgIHNoYXJkX3N0YXR1c19maWxlID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3Rf
dXRpbHMuR2V0VGVtcERpcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdzaGFyZF9zdGF0dXNfZmlsZTInKQotICAgIHNlbGYuYXNzZXJ0Xyhub3Qgb3MucGF0aC5leGlz
dHMoc2hhcmRfc3RhdHVzX2ZpbGUpKQotCi0gICAgZXh0cmFfZW52ID0ge1NIQVJEX1NUQVRVU19G
SUxFX0VOVl9WQVI6IHNoYXJkX3N0YXR1c19maWxlfQotICAgIHRyeToKLSAgICAgIG91dHB1dCA9
IEludm9rZVdpdGhNb2RpZmllZEVudihleHRyYV9lbnYsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUnVuQW5kUmV0dXJuT3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtMSVNUX1RFU1RTX0ZMQUddKQotICAgIGZpbmFsbHk6Ci0gICAgICAj
IFRoaXMgYXNzZXJ0aW9uIGVuc3VyZXMgdGhhdCBHb29nbGUgVGVzdCBlbnVtZXJhdGVkIHRoZSB0
ZXN0cyBhcwotICAgICAgIyBvcHBvc2VkIHRvIHJ1bm5pbmcgdGhlbS4KLSAgICAgIHNlbGYuYXNz
ZXJ0XygnWz09PT09PT09PT1dJyBub3QgaW4gb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICdV
bmV4cGVjdGVkIG91dHB1dCBkdXJpbmcgdGVzdCBlbnVtZXJhdGlvbi5cbicKLSAgICAgICAgICAg
ICAgICAgICAnUGxlYXNlIGVuc3VyZSB0aGF0IExJU1RfVEVTVFNfRkxBRyBpcyBhc3NpZ25lZCB0
aGVcbicKLSAgICAgICAgICAgICAgICAgICAnY29ycmVjdCBmbGFnIHZhbHVlIGZvciBsaXN0aW5n
IEdvb2dsZSBUZXN0IHRlc3RzLicpCi0KLSAgICAgIHNlbGYuYXNzZXJ0Xyhvcy5wYXRoLmV4aXN0
cyhzaGFyZF9zdGF0dXNfZmlsZSkpCi0gICAgICBvcy5yZW1vdmUoc2hhcmRfc3RhdHVzX2ZpbGUp
Ci0KLSAgaWYgU1VQUE9SVFNfREVBVEhfVEVTVFM6Ci0gICAgZGVmIHRlc3RTaGFyZGluZ1dvcmtz
V2l0aERlYXRoVGVzdHMoc2VsZik6Ci0gICAgICAiIiJUZXN0cyBpbnRlZ3JhdGlvbiB3aXRoIGRl
YXRoIHRlc3RzIGFuZCBzaGFyZGluZy4iIiIKLQotICAgICAgZ3Rlc3RfZmlsdGVyID0gJ0hhc0Rl
YXRoVGVzdC4qOlNlcVAvKicKLSAgICAgIGV4cGVjdGVkX3Rlc3RzID0gWwotICAgICAgICAgICdI
YXNEZWF0aFRlc3QuVGVzdDEnLAotICAgICAgICAgICdIYXNEZWF0aFRlc3QuVGVzdDInLAotCi0g
ICAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzAnLAotICAgICAgICAgICdTZXFQL1BhcmFt
VGVzdC5UZXN0WC8xJywKLSAgICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMCcsCi0gICAg
ICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzEnLAotICAgICAgICAgIF0KLQotICAgICAgZm9y
IGZsYWcgaW4gWyctLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGU9dGhyZWFkc2FmZScsCi0gICAgICAg
ICAgICAgICAgICAgJy0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZT1mYXN0J106Ci0gICAgICAgIHNl
bGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKGd0ZXN0X2ZpbHRlciwgMywgZXhwZWN0ZWRfdGVz
dHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2V4aXRfMD1U
cnVlLCBhcmdzPVtmbGFnXSkKLSAgICAgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmco
Z3Rlc3RfZmlsdGVyLCA1LCBleHBlY3RlZF90ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hlY2tfZXhpdF8wPVRydWUsIGFyZ3M9W2ZsYWddKQotCi1pZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgotICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3RfLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3RfLmNj
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjU1MDRmZTk0YWZjMTc3YzQ2Y2JjMTM1
ZmVjNjc1YzU1NGQyZTBkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0
Xy5jYworKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSwg
R29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0v
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAo
WmhhbnlvbmcgV2FuKQotCi0vLyBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0IHRlc3QgZmlsdGVy
cy4KLS8vCi0vLyBBIHVzZXIgY2FuIHNwZWNpZnkgd2hpY2ggdGVzdChzKSBpbiBhIEdvb2dsZSBU
ZXN0IHByb2dyYW0gdG8gcnVuIHZpYQotLy8gZWl0aGVyIHRoZSBHVEVTVF9GSUxURVIgZW52aXJv
bm1lbnQgdmFyaWFibGUgb3IgdGhlIC0tZ3Rlc3RfZmlsdGVyCi0vLyBmbGFnLiAgVGhpcyBpcyB1
c2VkIGZvciB0ZXN0aW5nIHN1Y2ggZnVuY3Rpb25hbGl0eS4KLS8vCi0vLyBUaGUgcHJvZ3JhbSB3
aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRlc3QuICBEb24ndCBydW4gaXQKLS8v
IGRpcmVjdGx5LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotbmFtZXNwYWNlIHsKLQot
Ly8gVGVzdCBjYXNlIEZvb1Rlc3QuCi0KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Ci19OwotCi1URVNUX0YoRm9vVGVzdCwgQWJjKSB7Ci19Ci0KLVRFU1RfRihGb29UZXN0
LCBYeXopIHsKLSAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Ci19Ci0KLS8vIFRlc3Qg
Y2FzZSBCYXJUZXN0LgotCi1URVNUKEJhclRlc3QsIFRlc3RPbmUpIHsKLX0KLQotVEVTVChCYXJU
ZXN0LCBUZXN0VHdvKSB7Ci19Ci0KLVRFU1QoQmFyVGVzdCwgVGVzdFRocmVlKSB7Ci19Ci0KLVRF
U1QoQmFyVGVzdCwgRElTQUJMRURfVGVzdEZvdXIpIHsKLSAgRkFJTCgpIDw8ICJFeHBlY3RlZCBm
YWlsdXJlLiI7Ci19Ci0KLVRFU1QoQmFyVGVzdCwgRElTQUJMRURfVGVzdEZpdmUpIHsKLSAgRkFJ
TCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Ci19Ci0KLS8vIFRlc3QgY2FzZSBCYXpUZXN0Lgot
Ci1URVNUKEJhelRlc3QsIFRlc3RPbmUpIHsKLSAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJl
LiI7Ci19Ci0KLVRFU1QoQmF6VGVzdCwgVGVzdEEpIHsKLX0KLQotVEVTVChCYXpUZXN0LCBUZXN0
QikgewotfQotCi1URVNUKEJhelRlc3QsIERJU0FCTEVEX1Rlc3RDKSB7Ci0gIEZBSUwoKSA8PCAi
RXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi0vLyBUZXN0IGNhc2UgSGFzRGVhdGhUZXN0Ci0KLVRF
U1QoSGFzRGVhdGhUZXN0LCBUZXN0MSkgewotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKGV4
aXQoMSksICIuKiIpOwotfQotCi0vLyBXZSBuZWVkIGF0IGxlYXN0IHR3byBkZWF0aCB0ZXN0cyB0
byBtYWtlIHN1cmUgdGhhdCB0aGUgYWxsIGRlYXRoIHRlc3RzCi0vLyBhcmVuJ3Qgb24gdGhlIGZp
cnN0IHNoYXJkLgotVEVTVChIYXNEZWF0aFRlc3QsIFRlc3QyKSB7Ci0gIEVYUEVDVF9ERUFUSF9J
Rl9TVVBQT1JURUQoZXhpdCgxKSwgIi4qIik7Ci19Ci0KLS8vIFRlc3QgY2FzZSBGb29iYXJUZXN0
Ci0KLVRFU1QoRElTQUJMRURfRm9vYmFyVGVzdCwgVGVzdDEpIHsKLSAgRkFJTCgpIDw8ICJFeHBl
Y3RlZCBmYWlsdXJlLiI7Ci19Ci0KLVRFU1QoRElTQUJMRURfRm9vYmFyVGVzdCwgRElTQUJMRURf
VGVzdDIpIHsKLSAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Ci19Ci0KLS8vIFRlc3Qg
Y2FzZSBGb29iYXJiYXpUZXN0Ci0KLVRFU1QoRElTQUJMRURfRm9vYmFyYmF6VGVzdCwgVGVzdEEp
IHsKLSAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Ci19Ci0KLSNpZiBHVEVTVF9IQVNf
UEFSQU1fVEVTVAotY2xhc3MgUGFyYW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08aW50PiB7Ci19OwotCi1URVNUX1AoUGFyYW1UZXN0LCBUZXN0WCkgewotfQotCi1URVNUX1Ao
UGFyYW1UZXN0LCBUZXN0WSkgewotfQotCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXFQLCBQ
YXJhbVRlc3QsIHRlc3Rpbmc6OlZhbHVlcygxLCAyKSk7Ci1JTlNUQU5USUFURV9URVNUX0NBU0Vf
UChTZXFRLCBQYXJhbVRlc3QsIHRlc3Rpbmc6OlZhbHVlcyg1LCA2KSk7Ci0jZW5kaWYgIC8vIEdU
RVNUX0hBU19QQVJBTV9URVNUCi0KLX0gIC8vIG5hbWVzcGFjZQotCi1pbnQgbWFpbihpbnQgYXJn
YywgY2hhciAqKmFyZ3YpIHsKLSAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJn
dik7Ci0KLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3QucHkKaW5kZXggM2NiNGM0OGUwYjQ2MjhkOWFh
N2M2ZjMyMDdhYjdlZTEwY2QyMmJhMy4uNTgyZDI0YzJkY2NlODk0NTM4YWE2M2NjYmQ2MTIwYmRk
NGIzNTBhMCAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9o
ZWxwX3Rlc3QucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9oZWxw
X3Rlc3QucHkKQEAgLTI5LDI3ICsyOSwyNiBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAotIiIiVGVzdHMgdGhlIC0taGVscCBmbGFnIG9mIEdvb2dsZSBDKysgVGVzdGluZyBGcmFt
ZXdvcmsuCisiIiJUZXN0cyB0aGUgLS1oZWxwIGZsYWcgb2YgR29vZ2xlIEMrKyBUZXN0aW5nIGFu
ZCBNb2NraW5nIEZyYW1ld29yay4KIAogU1lOT1BTSVMKLSAgICAgICBndGVzdF9oZWxwX3Rlc3Qu
cHkgLS1ndGVzdF9idWlsZF9kaXI9QlVJTEQvRElSCisgICAgICAgZ3Rlc3RfaGVscF90ZXN0LnB5
IC0tYnVpbGRfZGlyPUJVSUxEL0RJUgogICAgICAgICAgIyB3aGVyZSBCVUlMRC9ESVIgY29udGFp
bnMgdGhlIGJ1aWx0IGd0ZXN0X2hlbHBfdGVzdF8gZmlsZS4KICAgICAgICBndGVzdF9oZWxwX3Rl
c3QucHkKICIiIgogCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4p
JwotCiBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKIAogCitJ
U19MSU5VWCA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBhbmQgb3MudW5hbWUoKVswXSA9PSAnTGludXgn
CiBJU19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCiAKIFBST0dSQU1fUEFUSCA9IGd0ZXN0X3Rl
c3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9oZWxwX3Rlc3RfJykKIEZMQUdf
UFJFRklYID0gJy0tZ3Rlc3RfJwotQ0FUQ0hfRVhDRVBUSU9OU19GTEFHID0gRkxBR19QUkVGSVgg
KyAnY2F0Y2hfZXhjZXB0aW9ucycKIERFQVRIX1RFU1RfU1RZTEVfRkxBRyA9IEZMQUdfUFJFRklY
ICsgJ2RlYXRoX3Rlc3Rfc3R5bGUnCitTVFJFQU1fUkVTVUxUX1RPX0ZMQUcgPSBGTEFHX1BSRUZJ
WCArICdzdHJlYW1fcmVzdWx0X3RvJwogVU5LTk9XTl9GTEFHID0gRkxBR19QUkVGSVggKyAndW5r
bm93bl9mbGFnX2Zvcl90ZXN0aW5nJwogTElTVF9URVNUU19GTEFHID0gRkxBR19QUkVGSVggKyAn
bGlzdF90ZXN0cycKIElOQ09SUkVDVF9GTEFHX1ZBUklBTlRTID0gW3JlLnN1YignXi0tJywgJy0n
LCBMSVNUX1RFU1RTX0ZMQUcpLApAQCAtNzIsNyArNzEsOCBAQCBIRUxQX1JFR0VYID0gcmUuY29t
cGlsZSgKICAgICBGTEFHX1BSRUZJWCArIHIncHJpbnRfdGltZS4qJyArCiAgICAgRkxBR19QUkVG
SVggKyByJ291dHB1dD0uKicgKwogICAgIEZMQUdfUFJFRklYICsgcidicmVha19vbl9mYWlsdXJl
LionICsKLSAgICBGTEFHX1BSRUZJWCArIHIndGhyb3dfb25fZmFpbHVyZS4qJywKKyAgICBGTEFH
X1BSRUZJWCArIHIndGhyb3dfb25fZmFpbHVyZS4qJyArCisgICAgRkxBR19QUkVGSVggKyByJ2Nh
dGNoX2V4Y2VwdGlvbnM9MC4qJywKICAgICByZS5ET1RBTEwpCiAKIApAQCAtMTA5LDEwICsxMDks
MTEgQEAgY2xhc3MgR1Rlc3RIZWxwVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKICAg
ICBleGl0X2NvZGUsIG91dHB1dCA9IFJ1bldpdGhGbGFnKGZsYWcpCiAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoMCwgZXhpdF9jb2RlKQogICAgIHNlbGYuYXNzZXJ0XyhIRUxQX1JFR0VYLnNlYXJjaChv
dXRwdXQpLCBvdXRwdXQpCi0gICAgaWYgSVNfV0lORE9XUzoKLSAgICAgIHNlbGYuYXNzZXJ0XyhD
QVRDSF9FWENFUFRJT05TX0ZMQUcgaW4gb3V0cHV0LCBvdXRwdXQpCisKKyAgICBpZiBJU19MSU5V
WDoKKyAgICAgIHNlbGYuYXNzZXJ0XyhTVFJFQU1fUkVTVUxUX1RPX0ZMQUcgaW4gb3V0cHV0LCBv
dXRwdXQpCiAgICAgZWxzZToKLSAgICAgIHNlbGYuYXNzZXJ0XyhDQVRDSF9FWENFUFRJT05TX0ZM
QUcgbm90IGluIG91dHB1dCwgb3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKFNUUkVBTV9SRVNV
TFRfVE9fRkxBRyBub3QgaW4gb3V0cHV0LCBvdXRwdXQpCiAKICAgICBpZiBTVVBQT1JUU19ERUFU
SF9URVNUUyBhbmQgbm90IElTX1dJTkRPV1M6CiAgICAgICBzZWxmLmFzc2VydF8oREVBVEhfVEVT
VF9TVFlMRV9GTEFHIGluIG91dHB1dCwgb3V0cHV0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3RfLmNjCmluZGV4IGFhZDBkNzJkNzY3NTM1ZTFiN2E3
MjIyNDc3NTQzMDEwMzNlNzEwNmYuLjc1MGFlNmNlOTVmY2JjYjMzOGVkNWRiMmI1ODhmMTVjZGQ1
YzJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVs
cF90ZXN0Xy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2hlbHBf
dGVzdF8uY2MKQEAgLTI2LDEzICsyNiwxMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKKwogCiAvLyBUaGlzIHByb2dyYW0gaXMgbWVhbnQgdG8gYmUgcnVuIGJ5IGd0ZXN0
X2hlbHBfdGVzdC5weS4gIERvIG5vdCBydW4KIC8vIGl0IGRpcmVjdGx5LgogCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAvLyBXaGVuIGEgaGVs
cCBmbGFnIGlzIHNwZWNpZmllZCwgdGhpcyBwcm9ncmFtIHNob3VsZCBza2lwIHRoZSB0ZXN0cwog
Ly8gYW5kIGV4aXQgd2l0aCAwOyBvdGhlcndpc2UgdGhlIGZvbGxvd2luZyB0ZXN0IHdpbGwgYmUg
ZXhlY3V0ZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X2pzb25fdGVzdF91dGlscy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
anNvbl90ZXN0X3V0aWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyYmJmYzI4OGY4MmIzODdjZDgzNDQ2YzBh
MDViYTE2N2IxYWE3NTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X2pzb25fdGVzdF91dGlscy5weQpAQCAtMCwwICsxLDYwIEBACisjIENvcHly
aWdodCAyMDE4LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworIiIiVW5pdCB0ZXN0IHV0aWxpdGllcyBmb3IgZ3Rlc3RfanNvbl9vdXRwdXQu
IiIiCisKK2ltcG9ydCByZQorCisKK2RlZiBub3JtYWxpemUob2JqKToKKyAgIiIiTm9ybWFsaXpl
IG91dHB1dCBvYmplY3QuCisKKyAgQXJnczoKKyAgICAgb2JqOiBHb29nbGUgVGVzdCdzIEpTT04g
b3V0cHV0IG9iamVjdCB0byBub3JtYWxpemUuCisKKyAgUmV0dXJuczoKKyAgICAgTm9ybWFsaXpl
ZCBvdXRwdXQgd2l0aG91dCBhbnkgcmVmZXJlbmNlcyB0byB0cmFuc2llbnQgaW5mb3JtYXRpb24g
dGhhdCBtYXkKKyAgICAgY2hhbmdlIGZyb20gcnVuIHRvIHJ1bi4KKyAgIiIiCisgIGRlZiBfbm9y
bWFsaXplKGtleSwgdmFsdWUpOgorICAgIGlmIGtleSA9PSAndGltZSc6CisgICAgICByZXR1cm4g
cmUuc3ViKHInXlxkKyhcLlxkKyk/cyQnLCAnKicsIHZhbHVlKQorICAgIGVsaWYga2V5ID09ICd0
aW1lc3RhbXAnOgorICAgICAgcmV0dXJuIHJlLnN1YihyJ15cZHs0fS1cZFxkLVxkXGRUXGRcZDpc
ZFxkOlxkXGRaJCcsICcqJywgdmFsdWUpCisgICAgZWxpZiBrZXkgPT0gJ2ZhaWx1cmUnOgorICAg
ICAgdmFsdWUgPSByZS5zdWIocideLipbL1xcXSguKjopXGQrXG4nLCAnXFwxKlxuJywgdmFsdWUp
CisgICAgICByZXR1cm4gcmUuc3ViKHInU3RhY2sgdHJhY2U6XG4oLnxcbikqJywgJ1N0YWNrIHRy
YWNlOlxuKicsIHZhbHVlKQorICAgIGVsc2U6CisgICAgICByZXR1cm4gbm9ybWFsaXplKHZhbHVl
KQorICBpZiBpc2luc3RhbmNlKG9iaiwgZGljdCk6CisgICAgcmV0dXJuIHtrOiBfbm9ybWFsaXpl
KGssIHYpIGZvciBrLCB2IGluIG9iai5pdGVtcygpfQorICBpZiBpc2luc3RhbmNlKG9iaiwgbGlz
dCk6CisgICAgcmV0dXJuIFtub3JtYWxpemUoeCkgZm9yIHggaW4gb2JqXQorICBlbHNlOgorICAg
IHJldHVybiBvYmoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfbGlzdF9vdXRwdXRfdW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiYmE3ZWEyY2ZkMzdj
YWQ1NTA5ZjQwZjhlOGIwMDIyNzA2YmU3ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0LnB5CkBAIC0wLDAg
KzEsMTQxIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDYsIEdv
b2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIi
VW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLgorCitB
IHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBsaXN0IGFsbCB0ZXN0cyBieSBzcGVjaWZ5aW5n
IHRoZQorLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuIElmIG91dHB1dCBpcyByZXF1ZXN0ZWQsIHZp
YSAtLWd0ZXN0X291dHB1dD14bWwKK29yIC0tZ3Rlc3Rfb3V0cHV0PWpzb24sIHRoZSB0ZXN0cyBh
cmUgbGlzdGVkLCB3aXRoIGV4dHJhIGluZm9ybWF0aW9uIGluIHRoZQorb3V0cHV0IGZpbGUuCitU
aGlzIHNjcmlwdCB0ZXN0cyBzdWNoIGZ1bmN0aW9uYWxpdHkgYnkgaW52b2tpbmcgZ3Rlc3RfbGlz
dF9vdXRwdXRfdW5pdHRlc3RfCisgKGEgcHJvZ3JhbSB3cml0dGVuIHdpdGggR29vZ2xlIFRlc3Qp
IHRoZSBjb21tYW5kIGxpbmUgZmxhZ3MuCisiIiIKKworaW1wb3J0IG9zCitpbXBvcnQgcmUKK2lt
cG9ydCBndGVzdF90ZXN0X3V0aWxzCisKK0dURVNUX0xJU1RfVEVTVFNfRkxBRyA9ICctLWd0ZXN0
X2xpc3RfdGVzdHMnCitHVEVTVF9PVVRQVVRfRkxBRyA9ICctLWd0ZXN0X291dHB1dCcKKworRVhQ
RUNURURfWE1MID0gIiIiPFw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ilw/Pgor
PHRlc3RzdWl0ZXMgdGVzdHM9IjIiIG5hbWU9IkFsbFRlc3RzIj4KKyAgPHRlc3RzdWl0ZSBuYW1l
PSJGb29UZXN0IiB0ZXN0cz0iMiI+CisgICAgPHRlc3RjYXNlIG5hbWU9IlRlc3QxIiBmaWxlPSIu
Kmd0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0Xy5jYyIgbGluZT0iNDMiIC8+CisgICAgPHRlc3Rj
YXNlIG5hbWU9IlRlc3QyIiBmaWxlPSIuKmd0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0Xy5jYyIg
bGluZT0iNDUiIC8+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPgorIiIiCisKK0VYUEVD
VEVEX0pTT04gPSAiIiJ7CisgICJ0ZXN0cyI6IDIsCisgICJuYW1lIjogIkFsbFRlc3RzIiwKKyAg
InRlc3RzdWl0ZXMiOiBcWworICAgIHsKKyAgICAgICJuYW1lIjogIkZvb1Rlc3QiLAorICAgICAg
InRlc3RzIjogMiwKKyAgICAgICJ0ZXN0c3VpdGUiOiBcWworICAgICAgICB7CisgICAgICAgICAg
Im5hbWUiOiAiVGVzdDEiLAorICAgICAgICAgICJmaWxlIjogIi4qZ3Rlc3RfbGlzdF9vdXRwdXRf
dW5pdHRlc3RfLmNjIiwKKyAgICAgICAgICAibGluZSI6IDQzCisgICAgICAgIH0sCisgICAgICAg
IHsKKyAgICAgICAgICAibmFtZSI6ICJUZXN0MiIsCisgICAgICAgICAgImZpbGUiOiAiLipndGVz
dF9saXN0X291dHB1dF91bml0dGVzdF8uY2MiLAorICAgICAgICAgICJsaW5lIjogNDUKKyAgICAg
ICAgfQorICAgICAgXF0KKyAgICB9CisgIFxdCit9CisiIiIKKworCitjbGFzcyBHVGVzdExpc3RU
ZXN0c091dHB1dFVuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJVbml0
IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgbGlzdCB0ZXN0cyB3aXRoIG91dHB1dCB0byBmaWxlIGZ1
bmN0aW9uYWxpdHkuCisgICIiIgorCisgIGRlZiB0ZXN0WG1sKHNlbGYpOgorICAgICIiIlZlcmlm
aWVzIFhNTCBvdXRwdXQgZm9yIGxpc3RpbmcgdGVzdHMgaW4gYSBHb29nbGUgVGVzdCBiaW5hcnku
CisKKyAgICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRoYXQgZ2VuZXJhdGVzIGFuIGVtcHR5IFhNTCBv
dXRwdXQsIGFuZAorICAgIHRlc3RzIHRoYXQgdGhlIFhNTCBvdXRwdXQgaXMgZXhwZWN0ZWQuCisg
ICAgIiIiCisgICAgc2VsZi5fVGVzdE91dHB1dCgneG1sJywgRVhQRUNURURfWE1MKQorCisgIGRl
ZiB0ZXN0SlNPTihzZWxmKToKKyAgICAiIiJWZXJpZmllcyBYTUwgb3V0cHV0IGZvciBsaXN0aW5n
IHRlc3RzIGluIGEgR29vZ2xlIFRlc3QgYmluYXJ5LgorCisgICAgUnVucyBhIHRlc3QgcHJvZ3Jh
bSB0aGF0IGdlbmVyYXRlcyBhbiBlbXB0eSBYTUwgb3V0cHV0LCBhbmQKKyAgICB0ZXN0cyB0aGF0
IHRoZSBYTUwgb3V0cHV0IGlzIGV4cGVjdGVkLgorICAgICIiIgorICAgIHNlbGYuX1Rlc3RPdXRw
dXQoJ2pzb24nLCBFWFBFQ1RFRF9KU09OKQorCisgIGRlZiBfR2V0T3V0cHV0KHNlbGYsIG91dF9m
b3JtYXQpOgorICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdl
dFRlbXBEaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3Rfb3V0LicgKyBv
dXRfZm9ybWF0KQorICAgIGd0ZXN0X3Byb2dfcGF0aCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVz
dEV4ZWN1dGFibGVQYXRoKAorICAgICAgICAnZ3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3RfJykK
KworICAgIGNvbW1hbmQgPSAoWworICAgICAgICBndGVzdF9wcm9nX3BhdGgsCisgICAgICAgICcl
cz0lczolcycgJSAoR1RFU1RfT1VUUFVUX0ZMQUcsIG91dF9mb3JtYXQsIGZpbGVfcGF0aCksCisg
ICAgICAgICctLWd0ZXN0X2xpc3RfdGVzdHMnCisgICAgXSkKKyAgICBlbnZpcm9uX2NvcHkgPSBv
cy5lbnZpcm9uLmNvcHkoKQorICAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisg
ICAgICAgIGNvbW1hbmQsIGVudj1lbnZpcm9uX2NvcHksIHdvcmtpbmdfZGlyPWd0ZXN0X3Rlc3Rf
dXRpbHMuR2V0VGVtcERpcigpKQorCisgICAgc2VsZi5hc3NlcnRfKHAuZXhpdGVkKQorICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKDAsIHAuZXhpdF9jb2RlKQorICAgIHdpdGggb3BlbihmaWxlX3BhdGgp
IGFzIGY6CisgICAgICByZXN1bHQgPSBmLnJlYWQoKQorICAgIHJldHVybiByZXN1bHQKKworICBk
ZWYgX1Rlc3RPdXRwdXQoc2VsZiwgdGVzdF9mb3JtYXQsIGV4cGVjdGVkX291dHB1dCk6CisgICAg
YWN0dWFsID0gc2VsZi5fR2V0T3V0cHV0KHRlc3RfZm9ybWF0KQorICAgIGFjdHVhbF9saW5lcyA9
IGFjdHVhbC5zcGxpdGxpbmVzKCkKKyAgICBleHBlY3RlZF9saW5lcyA9IGV4cGVjdGVkX291dHB1
dC5zcGxpdGxpbmVzKCkKKyAgICBsaW5lX2NvdW50ID0gMAorICAgIGZvciBhY3R1YWxfbGluZSBp
biBhY3R1YWxfbGluZXM6CisgICAgICBleHBlY3RlZF9saW5lID0gZXhwZWN0ZWRfbGluZXNbbGlu
ZV9jb3VudF0KKyAgICAgIGV4cGVjdGVkX2xpbmVfcmUgPSByZS5jb21waWxlKGV4cGVjdGVkX2xp
bmUuc3RyaXAoKSkKKyAgICAgIHNlbGYuYXNzZXJ0XygKKyAgICAgICAgICBleHBlY3RlZF9saW5l
X3JlLm1hdGNoKGFjdHVhbF9saW5lLnN0cmlwKCkpLAorICAgICAgICAgICgnYWN0dWFsIG91dHB1
dCBvZiAiJXMiLFxuJworICAgICAgICAgICAnd2hpY2ggZG9lcyBub3QgbWF0Y2ggZXhwZWN0ZWQg
cmVnZXggb2YgIiVzIlxuJworICAgICAgICAgICAnb24gbGluZSAlZCcgJSAoYWN0dWFsLCBleHBl
Y3RlZF9vdXRwdXQsIGxpbmVfY291bnQpKSkKKyAgICAgIGxpbmVfY291bnQgPSBsaW5lX2NvdW50
ICsgMQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIG9zLmVudmlyb25bJ0dURVNU
X1NUQUNLX1RSQUNFX0RFUFRIJ10gPSAnMScKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF9vdXRwdXRf
dW5pdHRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X291
dHB1dF91bml0dGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFjN2I0ZGUzNDYxZmMxNjQ1ZjQxMWI3MWY5
ZTM3ZjgyMjRmZDhhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3RfLmNjCkBAIC0wLDAgKzEsNTEgQEAKKy8v
IENvcHlyaWdodCAyMDE4LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
CisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlz
dHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
Ly8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6
IGRhdmlkLnNjaHVsZGVuZnJlaUBnbWFpbC5jb20gKERhdmlkIFNjaHVsZGVuZnJlaSkKKworLy8g
VW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIC0tZ3Rlc3RfbGlzdF90ZXN0cyBhbmQgLS1ndGVz
dF9vdXRwdXQgZmxhZy4KKy8vCisvLyBBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBsaXN0
IGFsbCB0ZXN0cyB0aGF0IHdpbGwgcnVuLAorLy8gYW5kIGhhdmUgdGhlIG91dHB1dCBzYXZlZCBp
biBhIEpzb24vWG1sIGZpbGUuCisvLyBUaGUgdGVzdHMgd2lsbCBub3QgYmUgcnVuIGFmdGVyIGxp
c3RpbmcuCisvLworLy8gVGhpcyBwcm9ncmFtIHdpbGwgYmUgaW52b2tlZCBmcm9tIGEgUHl0aG9u
IHVuaXQgdGVzdC4KKy8vIERvbid0IHJ1biBpdCBkaXJlY3RseS4KKworI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCisKK1RFU1QoRm9vVGVzdCwgVGVzdDEpIHt9CisKK1RFU1QoRm9vVGVzdCwgVGVz
dDIpIHt9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICA6OnRlc3Rpbmc6
OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICByZXR1cm4gUlVOX0FMTF9URVNUUygp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0
X3Rlc3RzX3VuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9s
aXN0X3Rlc3RzX3VuaXR0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjZThj
M2VmMDVmNjYwMGU4NzIxNGE2ZDQwMTYyOGVkOTIzYTE1MmRhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE3NyArMCww
IEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJ
bmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJVbml0
IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuCi0KLUEgdXNl
ciBjYW4gYXNrIEdvb2dsZSBUZXN0IHRvIGxpc3QgYWxsIHRlc3RzIGJ5IHNwZWNpZnlpbmcgdGhl
Ci0tLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4gIFRoaXMgc2NyaXB0IHRlc3RzIHN1Y2ggZnVuY3Rp
b25hbGl0eQotYnkgaW52b2tpbmcgZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8gKGEgcHJvZ3Jh
bSB3cml0dGVuIHdpdGgKLUdvb2dsZSBUZXN0KSB0aGUgY29tbWFuZCBsaW5lIGZsYWdzLgotIiIi
Ci0KLV9fYXV0aG9yX18gPSAncGhhbm5hQGdvb2dsZS5jb20gKFBhdHJpY2sgSGFubmEpJwotCi1p
bXBvcnQgZ3Rlc3RfdGVzdF91dGlscwotCi0KLSMgQ29uc3RhbnRzLgotCi0jIFRoZSBjb21tYW5k
IGxpbmUgZmxhZyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIGxpc3RpbmcgYWxsIHRlc3RzLgotTElT
VF9URVNUU19GTEFHID0gJ2d0ZXN0X2xpc3RfdGVzdHMnCi0KLSMgUGF0aCB0byB0aGUgZ3Rlc3Rf
bGlzdF90ZXN0c191bml0dGVzdF8gcHJvZ3JhbS4KLUVYRV9QQVRIID0gZ3Rlc3RfdGVzdF91dGls
cy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfJykKLQot
IyBUaGUgZXhwZWN0ZWQgb3V0cHV0IHdoZW4gcnVubmluZyBndGVzdF9saXN0X3Rlc3RzX3VuaXR0
ZXN0XyB3aXRoCi0jIC0tZ3Rlc3RfbGlzdF90ZXN0cwotRVhQRUNURURfT1VUUFVUX05PX0ZJTFRF
UiA9ICIiIkZvb0RlYXRoVGVzdC4KLSAgVGVzdDEKLUZvby4KLSAgQmFyMQotICBCYXIyCi0gIERJ
U0FCTEVEX0JhcjMKLUFiYy4KLSAgWHl6Ci0gIERlZgotRm9vQmFyLgotICBCYXoKLUZvb1Rlc3Qu
Ci0gIFRlc3QxCi0gIERJU0FCTEVEX1Rlc3QyCi0gIFRlc3QzCi0iIiIKLQotIyBUaGUgZXhwZWN0
ZWQgb3V0cHV0IHdoZW4gcnVubmluZyBndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0XyB3aXRoCi0j
IC0tZ3Rlc3RfbGlzdF90ZXN0cyBhbmQgLS1ndGVzdF9maWx0ZXI9Rm9vKi4KLUVYUEVDVEVEX09V
VFBVVF9GSUxURVJfRk9PID0gIiIiRm9vRGVhdGhUZXN0LgotICBUZXN0MQotRm9vLgotICBCYXIx
Ci0gIEJhcjIKLSAgRElTQUJMRURfQmFyMwotRm9vQmFyLgotICBCYXoKLUZvb1Rlc3QuCi0gIFRl
c3QxCi0gIERJU0FCTEVEX1Rlc3QyCi0gIFRlc3QzCi0iIiIKLQotIyBVdGlsaXRpZXMuCi0KLQot
ZGVmIFJ1bihhcmdzKToKLSAgIiIiUnVucyBndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0XyBhbmQg
cmV0dXJucyB0aGUgbGlzdCBvZiB0ZXN0cyBwcmludGVkLiIiIgotCi0gIHJldHVybiBndGVzdF90
ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0VYRV9QQVRIXSArIGFyZ3MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZV9zdGRlcnI9RmFsc2UpLm91dHB1dAotCi0KLSMg
VGhlIHVuaXQgdGVzdC4KLQotY2xhc3MgR1Rlc3RMaXN0VGVzdHNVbml0VGVzdChndGVzdF90ZXN0
X3V0aWxzLlRlc3RDYXNlKToKLSAgIiIiVGVzdHMgdXNpbmcgdGhlIC0tZ3Rlc3RfbGlzdF90ZXN0
cyBmbGFnIHRvIGxpc3QgYWxsIHRlc3RzLiIiIgotCi0gIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwg
ZmxhZ192YWx1ZSwgZXhwZWN0ZWRfb3V0cHV0LCBvdGhlcl9mbGFnKToKLSAgICAiIiJSdW5zIGd0
ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfIGFuZCB2ZXJpZmllcyB0aGF0IGl0IHByaW50cwotICAg
IHRoZSBjb3JyZWN0IHRlc3RzLgotCi0gICAgQXJnczoKLSAgICAgIGZsYWdfdmFsdWU6ICAgICAg
IHZhbHVlIG9mIHRoZSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZzsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgotCi0gICAgICBl
eHBlY3RlZF9vdXRwdXQ6ICB0aGUgZXhwZWN0ZWQgb3V0cHV0IGFmdGVyIHJ1bm5pbmcgY29tbWFu
ZDsKLQotICAgICAgb3RoZXJfZmxhZzogICAgICAgYSBkaWZmZXJlbnQgZmxhZyB0byBiZSBwYXNz
ZWQgdG8gY29tbWFuZAotICAgICAgICAgICAgICAgICAgICAgICAgYWxvbmcgd2l0aCBndGVzdF9s
aXN0X3Rlc3RzOwotICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSBpZiB0aGUgZmxhZyBzaG91
bGQgbm90IGJlIHByZXNlbnQuCi0gICAgIiIiCi0KLSAgICBpZiBmbGFnX3ZhbHVlIGlzIE5vbmU6
Ci0gICAgICBmbGFnID0gJycKLSAgICAgIGZsYWdfZXhwcmVzc2lvbiA9ICdub3Qgc2V0JwotICAg
IGVsaWYgZmxhZ192YWx1ZSA9PSAnMCc6Ci0gICAgICBmbGFnID0gJy0tJXM9MCcgJSBMSVNUX1RF
U1RTX0ZMQUcKLSAgICAgIGZsYWdfZXhwcmVzc2lvbiA9ICcwJwotICAgIGVsc2U6Ci0gICAgICBm
bGFnID0gJy0tJXMnICUgTElTVF9URVNUU19GTEFHCi0gICAgICBmbGFnX2V4cHJlc3Npb24gPSAn
MScKLQotICAgIGFyZ3MgPSBbZmxhZ10KLQotICAgIGlmIG90aGVyX2ZsYWcgaXMgbm90IE5vbmU6
Ci0gICAgICBhcmdzICs9IFtvdGhlcl9mbGFnXQotCi0gICAgb3V0cHV0ID0gUnVuKGFyZ3MpCi0K
LSAgICBtc2cgPSAoJ3doZW4gJXMgaXMgJXMsIHRoZSBvdXRwdXQgb2YgIiVzIiBpcyAiJXMiLicg
JQotICAgICAgICAgICAoTElTVF9URVNUU19GTEFHLCBmbGFnX2V4cHJlc3Npb24sICcgJy5qb2lu
KGFyZ3MpLCBvdXRwdXQpKQotCi0gICAgaWYgZXhwZWN0ZWRfb3V0cHV0IGlzIG5vdCBOb25lOgot
ICAgICAgc2VsZi5hc3NlcnRfKG91dHB1dCA9PSBleHBlY3RlZF9vdXRwdXQsIG1zZykKLSAgICBl
bHNlOgotICAgICAgc2VsZi5hc3NlcnRfKG91dHB1dCAhPSBFWFBFQ1RFRF9PVVRQVVRfTk9fRklM
VEVSLCBtc2cpCi0KLSAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3Ioc2VsZik6Ci0gICAgIiIiVGVz
dHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0IG1vZGUuIiIiCi0KLSAgICBzZWxmLlJ1bkFu
ZFZlcmlmeShmbGFnX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRf
b3V0cHV0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz1Ob25lKQotCi0g
IGRlZiB0ZXN0RmxhZyhzZWxmKToKLSAgICAiIiJUZXN0cyB1c2luZyB0aGUgLS1ndGVzdF9saXN0
X3Rlc3RzIGZsYWcuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPScwJywK
LSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXQ9Tm9uZSwKLSAgICAgICAgICAg
ICAgICAgICAgICBvdGhlcl9mbGFnPU5vbmUpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZmxhZ192
YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0PUVYUEVDVEVE
X09VVFBVVF9OT19GSUxURVIsCi0gICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz1Ob25l
KQotCi0gIGRlZiB0ZXN0T3ZlcnJpZGVOb25GaWx0ZXJGbGFncyhzZWxmKToKLSAgICAiIiJUZXN0
cyB0aGF0IC0tZ3Rlc3RfbGlzdF90ZXN0cyBvdmVycmlkZXMgdGhlIG5vbi1maWx0ZXIgZmxhZ3Mu
IiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAg
ICAgICAgICAgICBleHBlY3RlZF9vdXRwdXQ9RVhQRUNURURfT1VUUFVUX05PX0ZJTFRFUiwKLSAg
ICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPSctLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUn
KQotCi0gIGRlZiB0ZXN0V2l0aEZpbHRlckZsYWdzKHNlbGYpOgotICAgICIiIlRlc3RzIHRoYXQg
LS1ndGVzdF9saXN0X3Rlc3RzIHRha2VzIGludG8gYWNjb3VudCB0aGUKLSAgICAtLWd0ZXN0X2Zp
bHRlciBmbGFnLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZmxhZ192YWx1ZT0nMScsCi0g
ICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0PUVYUEVDVEVEX09VVFBVVF9GSUxU
RVJfRk9PLAotICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2ZsYWc9Jy0tZ3Rlc3RfZmlsdGVy
PUZvbyonKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rlc3RfdXRp
bHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X2xpc3RfdGVzdHNfdW5pdHRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTBlZDA4MjViNWQ4ODk2OTIzMDFjNWE0ZDRmMGViNzViYWJjNWJjOC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfLmNjCisrKyAvZGV2L251bGwKQEAgLTEs
ODUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0Ogot
Ly8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0v
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0v
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ly8KLS8vIEF1dGhvcjogcGhhbm5hQGdvb2dsZS5jb20gKFBhdHJpY2sgSGFubmEpCi0KLS8vIFVu
aXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4KLS8vCi0v
LyBBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBsaXN0IGFsbCB0ZXN0cyB0aGF0IHdpbGwg
cnVuCi0vLyBzbyB0aGF0IHdoZW4gdXNpbmcgYSBmaWx0ZXIsIGEgdXNlciB3aWxsIGtub3cgd2hh
dAotLy8gdGVzdHMgdG8gbG9vayBmb3IuIFRoZSB0ZXN0cyB3aWxsIG5vdCBiZSBydW4gYWZ0ZXIg
bGlzdGluZy4KLS8vCi0vLyBUaGlzIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRo
b24gdW5pdCB0ZXN0LgotLy8gRG9uJ3QgcnVuIGl0IGRpcmVjdGx5LgotCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KLQotbmFtZXNwYWNlIHsKLQotLy8gU2V2ZXJhbCBkaWZmZXJlbnQgdGVzdCBj
YXNlcyBhbmQgdGVzdHMgdGhhdCB3aWxsIGJlIGxpc3RlZC4KLVRFU1QoRm9vLCBCYXIxKSB7Ci19
Ci0KLVRFU1QoRm9vLCBCYXIyKSB7Ci19Ci0KLVRFU1QoRm9vLCBESVNBQkxFRF9CYXIzKSB7Ci19
Ci0KLVRFU1QoQWJjLCBYeXopIHsKLX0KLQotVEVTVChBYmMsIERlZikgewotfQotCi1URVNUKEZv
b0JhciwgQmF6KSB7Ci19Ci0KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
Ci19OwotCi1URVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKLX0KLQotVEVTVF9GKEZvb1Rlc3QsIERJ
U0FCTEVEX1Rlc3QyKSB7Ci19Ci0KLVRFU1RfRihGb29UZXN0LCBUZXN0MykgewotfQotCi1URVNU
KEZvb0RlYXRoVGVzdCwgVGVzdDEpIHsKLX0KLQotfSAgLy8gbmFtZXNwYWNlCi0KLWludCBtYWlu
KGludCBhcmdjLCBjaGFyICoqYXJndikgewotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZh
cmdjLCBhcmd2KTsKLQotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9tYWluX3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9tYWluX3VuaXR0ZXN0LmNjCmluZGV4IDdh
M2YwYWRmYWRmNmQ3ZTVjMTk1YjMxOTQ0NzE0ZDVhYzQxYmI4ZTMuLmVkZGVkZWFiZThmM2JiMDgz
ZGFiY2E2MDBlNzJmNDUxYjhkOTRjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfbWFpbl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X21haW5fdW5pdHRlc3QuY2MKQEAgLTI2LDEwICsyNiw5IEBACiAvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9y
OiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIC8vIFRlc3RzIHRoYXQgd2UgZG9uJ3Qg
aGF2ZSB0byBkZWZpbmUgbWFpbigpIHdoZW4gd2UgbGluayB0bwogLy8gZ3Rlc3RfbWFpbiBpbnN0
ZWFkIG9mIGd0ZXN0LgpAQCAtNDEsNSArNDAsNSBAQCBURVNUKEdUZXN0TWFpblRlc3QsIFNob3Vs
ZFN1Y2NlZWQpIHsKIAogfSAgLy8gbmFtZXNwYWNlCiAKLS8vIFdlIGFyZSB1c2luZyB0aGUgbWFp
bigpIGZ1bmN0aW9uIGRlZmluZWQgaW4gc3JjL2d0ZXN0X21haW4uY2MsIHNvCi0vLyB3ZSBkb24n
dCBkZWZpbmUgaXQgaGVyZS4KKy8vIFdlIGFyZSB1c2luZyB0aGUgbWFpbigpIGZ1bmN0aW9uIGRl
ZmluZWQgaW4gZ3Rlc3RfbWFpbi5jYywgc28gd2UKKy8vIGRvbid0IGRlZmluZSBpdCBoZXJlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9uYy5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbmMuY2MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDczYjVkYjZkNDE4MzA5YTQ3YTIzZGZmMTgwMDUzYjc1ZDMyMDEyNGYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9uYy5jYworKysgL2Rldi9udWxsCkBAIC0xLDIzNCArMCww
IEBACi0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBUaGlzIGZpbGUgaXMg
dGhlIGlucHV0IHRvIGEgbmVnYXRpdmUtY29tcGlsYXRpb24gdGVzdCBmb3IgR29vZ2xlCi0vLyBU
ZXN0LiAgQ29kZSBoZXJlIGlzIE5PVCBzdXBwb3NlZCB0byBjb21waWxlLiAgSXRzIHB1cnBvc2Ug
aXMgdG8KLS8vIHZlcmlmeSB0aGF0IGNlcnRhaW4gaW5jb3JyZWN0IHVzYWdlcyBvZiB0aGUgR29v
Z2xlIFRlc3QgQVBJIGFyZQotLy8gaW5kZWVkIHJlamVjdGVkIGJ5IHRoZSBjb21waWxlci4KLS8v
Ci0vLyBXZSBzdGlsbCBuZWVkIHRvIHdyaXRlIHRoZSBuZWdhdGl2ZS1jb21waWxhdGlvbiB0ZXN0
IGl0c2VsZiwgd2hpY2gKLS8vIHdpbGwgYmUgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIGJ1aWxk
IGVudmlyb25tZW50LgotLy8KLS8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBmaW5pc2ggdGhlIG5l
Z2F0aXZlLWNvbXBpbGF0aW9uIHRlc3QuCi0KLSNpZmRlZiBURVNUX0NBTk5PVF9JR05PUkVfUlVO
X0FMTF9URVNUU19SRVNVTFQKLS8vIFRlc3RzIHRoYXQgdGhlIHJlc3VsdCBvZiBSVU5fQUxMX1RF
U1RTKCkgY2Fubm90IGJlIGlnbm9yZWQuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1p
bnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRl
c3QoJmFyZ2MsIGFyZ3YpOwotICBSVU5fQUxMX1RFU1RTKCk7ICAvLyBUaGlzIGxpbmUgc2hvdWxk
bid0IGNvbXBpbGUuCi19Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9VU0VSX0NBTk5PVF9JTkNMVURF
X0dURVNUX0lOVEVSTkFMX0lOTF9IKQotLy8gVGVzdHMgdGhhdCBhIHVzZXIgY2Fubm90IGluY2x1
ZGUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4gaGlzIGNvZGUuCi0KLSNpbmNsdWRlICJzcmMvZ3Rl
c3QtaW50ZXJuYWwtaW5sLmgiCi0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRDSEVTX0RFQ0xBUklO
R19TRVRVUF9JTl9URVNUX0ZJWFRVUkVfV0lUSF9UWVBPKQotLy8gVGVzdHMgdGhhdCB0aGUgY29t
cGlsZXIgY2F0Y2hlcyB0aGUgdHlwbyB3aGVuIGEgdXNlciBkZWNsYXJlcyBhCi0vLyBTZXR1cCgp
IG1ldGhvZCBpbiBhIHRlc3QgZml4dHVyZS4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0K
LWNsYXNzIE15VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZv
aWQgU2V0dXAoKSB7fQotfTsKLQotI2VsaWYgZGVmaW5lZChURVNUX0NBVENIRVNfQ0FMTElOR19T
RVRVUF9JTl9URVNUX1dJVEhfVFlQTykKLS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNo
ZXMgdGhlIHR5cG8gd2hlbiBhIHVzZXIgY2FsbHMgU2V0dXAoKQotLy8gZnJvbSBhIHRlc3QgZml4
dHVyZS4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLWNsYXNzIE15VGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsK
LSAgICB0ZXN0aW5nOjpUZXN0OjpTZXR1cCgpOyAgLy8gVHJpZXMgdG8gY2FsbCBTZXRVcCgpIGlu
IHRoZSBwYXJlbnQgY2xhc3MuCi0gIH0KLX07Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRDSEVT
X0RFQ0xBUklOR19TRVRVUF9JTl9FTlZJUk9OTUVOVF9XSVRIX1RZUE8pCi0vLyBUZXN0cyB0aGF0
IHRoZSBjb21waWxlciBjYXRjaGVzIHRoZSB0eXBvIHdoZW4gYSB1c2VyIGRlY2xhcmVzIGEKLS8v
IFNldHVwKCkgbWV0aG9kIGluIGEgc3ViY2xhc3Mgb2YgRW52aXJvbm1lbnQuCi0KLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgotCi1jbGFzcyBNeUVudmlyb25tZW50IDogcHVibGljIHRlc3Rpbmc6
OkVudmlyb25tZW50IHsKLSBwdWJsaWM6Ci0gIHZvaWQgU2V0dXAoKSB7fQotfTsKLQotI2VsaWYg
ZGVmaW5lZChURVNUX0NBVENIRVNfQ0FMTElOR19TRVRVUF9JTl9FTlZJUk9OTUVOVF9XSVRIX1RZ
UE8pCi0vLyBUZXN0cyB0aGF0IHRoZSBjb21waWxlciBjYXRjaGVzIHRoZSB0eXBvIHdoZW4gYSB1
c2VyIGNhbGxzIFNldHVwKCkKLS8vIGluIGFuIEVudmlyb25tZW50LgotCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KLQotY2xhc3MgTXlFbnZpcm9ubWVudCA6IHB1YmxpYyB0ZXN0aW5nOjpFbnZp
cm9ubWVudCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgLy8g
VHJpZXMgdG8gY2FsbCBTZXRVcCgpIGluIHRoZSBwYXJlbnQgY2xhc3MuCi0gICAgdGVzdGluZzo6
RW52aXJvbm1lbnQ6OlNldHVwKCk7Ci0gIH0KLX07Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRD
SEVTX1dST05HX0NBU0VfSU5fVFlQRURfVEVTVF9QKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGls
ZXIgY2F0Y2hlcyB1c2luZyB0aGUgd3JvbmcgdGVzdCBjYXNlIG5hbWUgaW4KLS8vIFRZUEVEX1RF
U1RfUC4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotY2xhc3MgQmFyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07
Ci0KLVRZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QpOwotVFlQRURfVEVTVF9QKEJhclRlc3QsIEEp
IHt9ICAvLyBXcm9uZyB0ZXN0IGNhc2UgbmFtZS4KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9Q
KEZvb1Rlc3QsIEEpOwotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3Qs
IHRlc3Rpbmc6OlR5cGVzPGludD4pOwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19XUk9O
R19DQVNFX0lOX1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKQotLy8gVGVzdHMgdGhhdCB0aGUg
Y29tcGlsZXIgY2F0Y2hlcyB1c2luZyB0aGUgd3JvbmcgdGVzdCBjYXNlIG5hbWUgaW4KLS8vIFJF
R0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBCYXJUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7Ci1UWVBF
RF9URVNUX1AoRm9vVGVzdCwgQSkge30KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEJhclRl
c3QsIEEpOyAgLy8gV3JvbmcgdGVzdCBjYXNlIG5hbWUuCi1JTlNUQU5USUFURV9UWVBFRF9URVNU
X0NBU0VfUChNeSwgRm9vVGVzdCwgdGVzdGluZzo6VHlwZXM8aW50Pik7Ci0KLSNlbGlmIGRlZmlu
ZWQoVEVTVF9DQVRDSEVTX1dST05HX0NBU0VfSU5fSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNF
X1ApCi0vLyBUZXN0cyB0aGF0IHRoZSBjb21waWxlciBjYXRjaGVzIHVzaW5nIHRoZSB3cm9uZyB0
ZXN0IGNhc2UgbmFtZSBpbgotLy8gSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AuCi0KLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEZv
b1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLWNsYXNzIEJhclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1UWVBFRF9U
RVNUX0NBU0VfUChGb29UZXN0KTsKLVRZUEVEX1RFU1RfUChGb29UZXN0LCBBKSB7fQotUkVHSVNU
RVJfVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCwgQSk7Ci0KLS8vIFdyb25nIHRlc3QgY2FzZSBu
YW1lLgotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEJhclRlc3QsIHRlc3Rpbmc6
OlR5cGVzPGludD4pOwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19JTlNUQU5USUFURV9U
WVBFRF9URVNFVF9DQVNFX1BfV0lUSF9TQU1FX05BTUVfUFJFRklYKQotLy8gVGVzdHMgdGhhdCB0
aGUgY29tcGlsZXIgY2F0Y2hlcyBpbnN0YW50aWF0aW5nIFRZUEVEX1RFU1RfQ0FTRV9QCi0vLyB0
d2ljZSB3aXRoIHRoZSBzYW1lIG5hbWUgcHJlZml4LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgewotfTsKLQotVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7Ci1UWVBFRF9URVNU
X1AoRm9vVGVzdCwgQSkge30KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsIEEp
OwotCi1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgdGVzdGluZzo6
VHlwZXM8aW50Pik7Ci0KLS8vIFdyb25nIG5hbWUgcHJlZml4OiAiTXkiIGhhcyBiZWVuIHVzZWQu
Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgdGVzdGluZzo6VHlw
ZXM8ZG91YmxlPik7Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9TVEFUSUNfQVNTRVJUX1RZUEVfRVFf
SVNfTk9UX0FfVFlQRSkKLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLS8vIFRlc3RzIHRo
YXQgU3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4gY2Fubm90IGJlIHVzZWQgYXMgYSB0eXBlLgot
dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGludCwgaW50PiBkdW1teTsKLQotI2VsaWYgZGVm
aW5lZChURVNUX1NUQVRJQ19BU1NFUlRfVFlQRV9FUV9XT1JLU19JTl9OQU1FU1BBQ0UpCi0KLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0vLyBUZXN0cyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVF
cTxUMSwgVDI+IHdvcmtzIGluIGEgbmFtZXNwYWNlIHNjb3BlLgotc3RhdGljIGJvb2wgZHVtbXkg
PSB0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8aW50LCBjb25zdCBpbnQ+KCk7Ci0KLSNlbGlm
IGRlZmluZWQoVEVTVF9TVEFUSUNfQVNTRVJUX1RZUEVfRVFfV09SS1NfSU5fQ0xBU1MpCi0KLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEhl
bHBlciB7Ci0gcHVibGljOgotICAvLyBUZXN0cyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwg
VDI+IHdvcmtzIGluIGEgY2xhc3MuCi0gIEhlbHBlcigpIHsgdGVzdGluZzo6U3RhdGljQXNzZXJ0
VHlwZUVxPGludCwgVD4oKTsgfQotCi0gIHZvaWQgRG9Tb21ldGhpbmcoKSB7fQotfTsKLQotdm9p
ZCBUZXN0KCkgewotICBIZWxwZXI8Ym9vbD4gaDsKLSAgaC5Eb1NvbWV0aGluZygpOyAgLy8gVG8g
YXZvaWQgdGhlICJ1bnVzZWQgdmFyaWFibGUiIHdhcm5pbmcuCi19Ci0KLSNlbGlmIGRlZmluZWQo
VEVTVF9TVEFUSUNfQVNTRVJUX1RZUEVfRVFfV09SS1NfSU5fRlVOQ1RJT04pCi0KLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgotCi12b2lkIFRlc3QoKSB7Ci0gIC8vIFRlc3RzIHRoYXQgU3RhdGlj
QXNzZXJ0VHlwZUVxPFQxLCBUMj4gd29ya3MgaW5zaWRlIGEgZnVuY3Rpb24uCi0gIHRlc3Rpbmc6
OlN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCBpbnQsIGludD4oKTsKLX0KLQotI2Vsc2UKLS8vIEEg
c2FuaXR5IHRlc3QuICBUaGlzIHNob3VsZCBjb21waWxlLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KLQotaW50IG1haW4oKSB7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19Ci0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9uY190
ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9uY190ZXN0LnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwNmZmYjNmODAzOGYwYTU3OTZlNGI2ZDYyOWQw
MmU4MDU2NWEyNDM4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbmNfdGVzdC5weQorKysgL2Rl
di9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29w
eXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotCi0iIiJOZWdhdGl2ZSBjb21waWxhdGlvbiB0ZXN0IGZvciBHb29nbGUgVGVz
dC4iIiIKLQotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQot
aW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1JU19MSU5VWCA9IG9z
Lm5hbWUgPT0gJ3Bvc2l4JyBhbmQgb3MudW5hbWUoKVswXSA9PSAnTGludXgnCi1pZiBub3QgSVNf
TElOVVg6Ci0gIHN5cy5leGl0KDApICAjIE5lZ2F0aXZlIGNvbXBpbGF0aW9uIHRlc3RzIGFyZSBu
b3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MgJiBNYWMuCi0KLQotY2xhc3MgR1Rlc3ROQ1Rlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgotICAiIiJOZWdhdGl2ZSBjb21waWxhdGlvbiB0ZXN0IGZvciBHb29n
bGUgVGVzdC4iIiIKLQotICBkZWYgdGVzdENvbXBpbGVyRXJyb3Ioc2VsZik6Ci0gICAgIiIiVmVy
aWZpZXMgdGhhdCBlcnJvbmVvdXMgY29kZSBsZWFkcyB0byBleHBlY3RlZCBjb21waWxlcgotICAg
IG1lc3NhZ2VzLiIiIgotCi0gICAgIyBEZWZpbmVzIGEgbGlzdCBvZiB0ZXN0IHNwZWNzLCB3aGVy
ZSBlYWNoIGVsZW1lbnQgaXMgYSB0dXBsZQotICAgICMgKHRlc3QgbmFtZSwgbGlzdCBvZiByZWdl
eGVzIGZvciBtYXRjaGluZyB0aGUgY29tcGlsZXIgZXJyb3JzKS4KLSAgICB0ZXN0X3NwZWNzID0g
WwotICAgICAgKCdDQU5OT1RfSUdOT1JFX1JVTl9BTExfVEVTVFNfUkVTVUxUJywKLSAgICAgICBb
cidpZ25vcmluZyByZXR1cm4gdmFsdWUnXSksCi0KLSAgICAgICgnVVNFUl9DQU5OT1RfSU5DTFVE
RV9HVEVTVF9JTlRFUk5BTF9JTkxfSCcsCi0gICAgICAgW3InbXVzdCBub3QgYmUgaW5jbHVkZWQg
ZXhjZXB0IGJ5IEdvb2dsZSBUZXN0IGl0c2VsZiddKSwKLQotICAgICAgKCdDQVRDSEVTX0RFQ0xB
UklOR19TRVRVUF9JTl9URVNUX0ZJWFRVUkVfV0lUSF9UWVBPJywKLSAgICAgICBbcidTZXR1cF9z
aG91bGRfYmVfc3BlbGxlZF9TZXRVcCddKSwKLQotICAgICAgKCdDQVRDSEVTX0NBTExJTkdfU0VU
VVBfSU5fVEVTVF9XSVRIX1RZUE8nLAotICAgICAgIFtyJ1NldHVwX3Nob3VsZF9iZV9zcGVsbGVk
X1NldFVwJ10pLAotCi0gICAgICAoJ0NBVENIRVNfREVDTEFSSU5HX1NFVFVQX0lOX0VOVklST05N
RU5UX1dJVEhfVFlQTycsCi0gICAgICAgW3InU2V0dXBfc2hvdWxkX2JlX3NwZWxsZWRfU2V0VXAn
XSksCi0KLSAgICAgICgnQ0FUQ0hFU19DQUxMSU5HX1NFVFVQX0lOX0VOVklST05NRU5UX1dJVEhf
VFlQTycsCi0gICAgICAgW3InU2V0dXBfc2hvdWxkX2JlX3NwZWxsZWRfU2V0VXAnXSksCi0KLSAg
ICAgICgnQ0FUQ0hFU19XUk9OR19DQVNFX0lOX1RZUEVEX1RFU1RfUCcsCi0gICAgICAgW3InQmFy
VGVzdC4qd2FzIG5vdCBkZWNsYXJlZCddKSwKLQotICAgICAgKCdDQVRDSEVTX1dST05HX0NBU0Vf
SU5fUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AnLAotICAgICAgIFtyJ0JhclRlc3QuKndhcyBu
b3QgZGVjbGFyZWQnXSksCi0KLSAgICAgICgnQ0FUQ0hFU19XUk9OR19DQVNFX0lOX0lOU1RBTlRJ
QVRFX1RZUEVEX1RFU1RfQ0FTRV9QJywKLSAgICAgICBbcidCYXJUZXN0Lipub3QgZGVjbGFyZWQn
XSksCi0KLSAgICAgICgnQ0FUQ0hFU19JTlNUQU5USUFURV9UWVBFRF9URVNFVF9DQVNFX1BfV0lU
SF9TQU1FX05BTUVfUFJFRklYJywKLSAgICAgICBbcidyZWRlZmluaXRpb24gb2YuKk15LipGb29U
ZXN0J10pLAotCi0gICAgICAoJ1NUQVRJQ19BU1NFUlRfVFlQRV9FUV9JU19OT1RfQV9UWVBFJywK
LSAgICAgICBbcidTdGF0aWNBc3NlcnRUeXBlRXEuKiBkb2VzIG5vdCBuYW1lIGEgdHlwZSddKSwK
LQotICAgICAgKCdTVEFUSUNfQVNTRVJUX1RZUEVfRVFfV09SS1NfSU5fTkFNRVNQQUNFJywKLSAg
ICAgICBbcidTdGF0aWNBc3NlcnRUeXBlRXEuKmludC4qY29uc3QgaW50J10pLAotCi0gICAgICAo
J1NUQVRJQ19BU1NFUlRfVFlQRV9FUV9XT1JLU19JTl9DTEFTUycsCi0gICAgICAgW3InU3RhdGlj
QXNzZXJ0VHlwZUVxLippbnQuKmJvb2wnXSksCi0KLSAgICAgICgnU1RBVElDX0FTU0VSVF9UWVBF
X0VRX1dPUktTX0lOX0ZVTkNUSU9OJywKLSAgICAgICBbcidTdGF0aWNBc3NlcnRUeXBlRXEuKmNv
bnN0IGludC4qaW50J10pLAotCi0gICAgICAoJ1NBTklUWScsCi0gICAgICAgTm9uZSkKLSAgICAg
IF0KLQotICAgICMgVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHZlcmlmeSB0aGF0IHRoZSB0ZXN0IHNw
ZWNzIGFyZSBzYXRpc2ZpZWQuCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgdW5p
dHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X25vX3Rlc3RfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X25vX3Rlc3RfdW5pdHRlc3QuY2MKaW5kZXggYWZlMmRjMGM5MmZlNDNhZTkzNWIyMmNlZjMx
NzdlNTE4NGI3ZmZhMS4uZDRmODhkYmZkZmE2OGU2YTBjNDBiYjk5ZmFjNmU0ZGJjY2ZmOGYzYiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9ub190ZXN0X3Vu
aXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfbm9fdGVz
dF91bml0dGVzdC5jYwpAQCAtMjksMjYgKzI5LDI2IEBACiAKIC8vIFRlc3RzIHRoYXQgYSBHb29n
bGUgVGVzdCBwcm9ncmFtIHRoYXQgaGFzIG5vIHRlc3QgZGVmaW5lZCBjYW4gcnVuCiAvLyBzdWNj
ZXNzZnVsbHkuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQot
Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KIAorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAK
IGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewogICB0ZXN0aW5nOjpJbml0R29vZ2xl
VGVzdCgmYXJnYywgYXJndik7CiAKICAgLy8gQW4gYWQtaG9jIGFzc2VydGlvbiBvdXRzaWRlIG9m
IGFsbCB0ZXN0cy4KICAgLy8KLSAgLy8gVGhpcyBzZXJ2ZXMgdHdvIHB1cnBvc2VzOgorICAvLyBU
aGlzIHNlcnZlcyB0aHJlZSBwdXJwb3NlczoKICAgLy8KICAgLy8gMS4gSXQgdmVyaWZpZXMgdGhh
dCBhbiBhZC1ob2MgYXNzZXJ0aW9uIGNhbiBiZSBleGVjdXRlZCBldmVuIGlmCiAgIC8vICAgIG5v
IHRlc3QgaXMgZGVmaW5lZC4KLSAgLy8gMi4gV2UgaGFkIGEgYnVnIHdoZXJlIHRoZSBYTUwgb3V0
cHV0IHdvbid0IGJlIGdlbmVyYXRlZCBpZiBhbgorICAvLyAyLiBJdCB2ZXJpZmllcyB0aGF0IGEg
ZmFpbGVkIGFkLWhvYyBhc3NlcnRpb24gY2F1c2VzIHRoZSB0ZXN0CisgIC8vICAgIHByb2dyYW0g
dG8gZmFpbC4KKyAgLy8gMy4gV2UgaGFkIGEgYnVnIHdoZXJlIHRoZSBYTUwgb3V0cHV0IHdvbid0
IGJlIGdlbmVyYXRlZCBpZiBhbgogICAvLyAgICBhc3NlcnRpb24gaXMgZXhlY3V0ZWQgYmVmb3Jl
IFJVTl9BTExfVEVTVFMoKSBpcyBjYWxsZWQsIGV2ZW4KICAgLy8gICAgdGhvdWdoIC0tZ3Rlc3Rf
b3V0cHV0PXhtbCBpcyBzcGVjaWZpZWQuICBUaGlzIG1ha2VzIHN1cmUgdGhlCiAgIC8vICAgIGJ1
ZyBpcyBmaXhlZCBhbmQgZG9lc24ndCByZWdyZXNzLgotICBFWFBFQ1RfRVEoMSwgMSk7CisgIEVY
UEVDVF9FUSgxLCAyKTsKIAotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworICAvLyBUaGUgYWJv
dmUgRVhQRUNUX0VRKCkgc2hvdWxkIGNhdXNlIFJVTl9BTExfVEVTVFMoKSB0byByZXR1cm4gbm9u
LXplcm8uCisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCkgPyAwIDogMTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0LnB5CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCAxOTIwMzBhMjAyMGJmZDQxZTk0YzRlNDkxNGNhYmEzOGRiNzRm
MmZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkKKysrIC9kZXYvbnVs
bApAQCAtMSwzMjcgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdo
dCAyMDA4LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotIiIiVGVzdHMgdGhlIHRleHQgb3V0cHV0IG9mIEdvb2dsZSBDKysgVGVzdGluZyBG
cmFtZXdvcmsuCi0KLVNZTk9QU0lTCi0gICAgICAgZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkgLS1ndGVz
dF9idWlsZF9kaXI9QlVJTEQvRElSIC0tZ2VuZ29sZGVuCi0gICAgICAgICAjIHdoZXJlIEJVSUxE
L0RJUiBjb250YWlucyB0aGUgYnVpbHQgZ3Rlc3Rfb3V0cHV0X3Rlc3RfIGZpbGUuCi0gICAgICAg
Z3Rlc3Rfb3V0cHV0X3Rlc3QucHkgLS1nZW5nb2xkZW4KLSAgICAgICBndGVzdF9vdXRwdXRfdGVz
dC5weQotIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikn
Ci0KLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc3lzCi1pbXBvcnQgZ3Rlc3RfdGVzdF91
dGlscwotCi0KLSMgVGhlIGZsYWcgZm9yIGdlbmVyYXRpbmcgdGhlIGdvbGRlbiBmaWxlCi1HRU5H
T0xERU5fRkxBRyA9ICctLWdlbmdvbGRlbicKLUNBVENIX0VYQ0VQVElPTlNfRU5WX1ZBUl9OQU1F
ID0gJ0dURVNUX0NBVENIX0VYQ0VQVElPTlMnCi0KLUlTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdu
dCcKLQotaWYgSVNfV0lORE9XUzoKLSAgR09MREVOX05BTUUgPSAnZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
Z29sZGVuX3dpbi50eHQnCi1lbHNlOgotICBHT0xERU5fTkFNRSA9ICdndGVzdF9vdXRwdXRfdGVz
dF9nb2xkZW5fbGluLnR4dCcKLQotUFJPR1JBTV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRU
ZXN0RXhlY3V0YWJsZVBhdGgoJ2d0ZXN0X291dHB1dF90ZXN0XycpCi0KLSMgQXQgbGVhc3Qgb25l
IGNvbW1hbmQgd2UgZXhlcmNpc2UgbXVzdCBub3QgaGF2ZSB0aGUKLSMgLS1ndGVzdF9pbnRlcm5h
bF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMgZmxhZy4KLUNPTU1BTkRfTElTVF9U
RVNUUyA9ICh7fSwgW1BST0dSQU1fUEFUSCwgJy0tZ3Rlc3RfbGlzdF90ZXN0cyddKQotQ09NTUFO
RF9XSVRIX0NPTE9SID0gKHt9LCBbUFJPR1JBTV9QQVRILCAnLS1ndGVzdF9jb2xvcj15ZXMnXSkK
LUNPTU1BTkRfV0lUSF9USU1FID0gKHt9LCBbUFJPR1JBTV9QQVRILAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAnLS1ndGVzdF9wcmludF90aW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgJy0tZ3Rlc3RfaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZ3Rlc3RfZmlsdGVyPUZhdGFsRmFpbHVyZVRl
c3QuKjpMb2dnaW5nVGVzdC4qJ10pCi1DT01NQU5EX1dJVEhfRElTQUJMRUQgPSAoCi0gICAge30s
IFtQUk9HUkFNX1BBVEgsCi0gICAgICAgICAnLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0
cycsCi0gICAgICAgICAnLS1ndGVzdF9pbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9o
b2NfdGVzdHMnLAotICAgICAgICAgJy0tZ3Rlc3RfZmlsdGVyPSpESVNBQkxFRF8qJ10pCi1DT01N
QU5EX1dJVEhfU0hBUkRJTkcgPSAoCi0gICAgeydHVEVTVF9TSEFSRF9JTkRFWCc6ICcxJywgJ0dU
RVNUX1RPVEFMX1NIQVJEUyc6ICcyJ30sCi0gICAgW1BST0dSQU1fUEFUSCwKLSAgICAgJy0tZ3Rl
c3RfaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzJywKLSAgICAgJy0t
Z3Rlc3RfZmlsdGVyPVBhc3NpbmdUZXN0LionXSkKLQotR09MREVOX1BBVEggPSBvcy5wYXRoLmpv
aW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRTb3VyY2VEaXIoKSwgR09MREVOX05BTUUpCi0KLQotZGVm
IFRvVW5peExpbmVFbmRpbmcocyk6Ci0gICIiIkNoYW5nZXMgYWxsIFdpbmRvd3MvTWFjIGxpbmUg
ZW5kaW5ncyBpbiBzIHRvIFVOSVggbGluZSBlbmRpbmdzLiIiIgotCi0gIHJldHVybiBzLnJlcGxh
Y2UoJ1xyXG4nLCAnXG4nKS5yZXBsYWNlKCdccicsICdcbicpCi0KLQotZGVmIFJlbW92ZUxvY2F0
aW9ucyh0ZXN0X291dHB1dCk6Ci0gICIiIlJlbW92ZXMgYWxsIGZpbGUgbG9jYXRpb24gaW5mbyBm
cm9tIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4KLQotICBBcmdzOgotICAgICAgIHRl
c3Rfb3V0cHV0OiAgdGhlIG91dHB1dCBvZiBhIEdvb2dsZSBUZXN0IHByb2dyYW0uCi0KLSAgUmV0
dXJuczoKLSAgICAgICBvdXRwdXQgd2l0aCBhbGwgZmlsZSBsb2NhdGlvbiBpbmZvIChpbiB0aGUg
Zm9ybSBvZgotICAgICAgICdESVJFQ1RPUlkvRklMRV9OQU1FOkxJTkVfTlVNQkVSOiAnb3IKLSAg
ICAgICAnRElSRUNUT1JZXFxGSUxFX05BTUUoTElORV9OVU1CRVIpOiAnKSByZXBsYWNlZCBieQot
ICAgICAgICdGSUxFX05BTUU6IzogJy4KLSAgIiIiCi0KLSAgcmV0dXJuIHJlLnN1YihyJy4qWy9c
XF0oLispKFw6XGQrfFwoXGQrXCkpXDogJywgcidcMTojOiAnLCB0ZXN0X291dHB1dCkKLQotCi1k
ZWYgUmVtb3ZlU3RhY2tUcmFjZURldGFpbHMob3V0cHV0KToKLSAgIiIiUmVtb3ZlcyBhbGwgc3Rh
Y2sgdHJhY2VzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgotCi0gICMg
Kj8gbWVhbnMgImZpbmQgdGhlIHNob3J0ZXN0IHN0cmluZyB0aGF0IG1hdGNoZXMiLgotICByZXR1
cm4gcmUuc3ViKHInU3RhY2sgdHJhY2U6KC58XG4pKj9cblxuJywKLSAgICAgICAgICAgICAgICAn
U3RhY2sgdHJhY2U6IChvbWl0dGVkKVxuXG4nLCBvdXRwdXQpCi0KLQotZGVmIFJlbW92ZVN0YWNr
VHJhY2VzKG91dHB1dCk6Ci0gICIiIlJlbW92ZXMgYWxsIHRyYWNlcyBvZiBzdGFjayB0cmFjZXMg
ZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCi0KLSAgIyAqPyBtZWFucyAi
ZmluZCB0aGUgc2hvcnRlc3Qgc3RyaW5nIHRoYXQgbWF0Y2hlcyIuCi0gIHJldHVybiByZS5zdWIo
cidTdGFjayB0cmFjZTooLnxcbikqP1xuXG4nLCAnJywgb3V0cHV0KQotCi0KLWRlZiBSZW1vdmVU
aW1lKG91dHB1dCk6Ci0gICIiIlJlbW92ZXMgYWxsIHRpbWUgaW5mb3JtYXRpb24gZnJvbSBhIEdv
b2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCi0KLSAgcmV0dXJuIHJlLnN1YihyJ1woXGQr
IG1zJywgJyg/IG1zJywgb3V0cHV0KQotCi0KLWRlZiBSZW1vdmVUeXBlSW5mb0RldGFpbHModGVz
dF9vdXRwdXQpOgotICAiIiJSZW1vdmVzIGNvbXBpbGVyLXNwZWNpZmljIHR5cGUgaW5mbyBmcm9t
IEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuCi0KLSAgQXJnczoKLSAgICAgICB0ZXN0X291
dHB1dDogIHRoZSBvdXRwdXQgb2YgYSBHb29nbGUgVGVzdCBwcm9ncmFtLgotCi0gIFJldHVybnM6
Ci0gICAgICAgb3V0cHV0IHdpdGggdHlwZSBpbmZvcm1hdGlvbiBub3JtYWxpemVkIHRvIGNhbm9u
aWNhbCBmb3JtLgotICAiIiIKLQotICAjIHNvbWUgY29tcGlsZXJzIG91dHB1dCB0aGUgbmFtZSBv
ZiB0eXBlICd1bnNpZ25lZCBpbnQnIGFzICd1bnNpZ25lZCcKLSAgcmV0dXJuIHJlLnN1YihyJ3Vu
c2lnbmVkIGludCcsICd1bnNpZ25lZCcsIHRlc3Rfb3V0cHV0KQotCi0KLWRlZiBSZW1vdmVUZXN0
Q291bnRzKG91dHB1dCk6Ci0gICIiIlJlbW92ZXMgdGVzdCBjb3VudHMgZnJvbSBhIEdvb2dsZSBU
ZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCi0KLSAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIHRlc3Rz
PywgbGlzdGVkIGJlbG93JywKLSAgICAgICAgICAgICAgICAgICc/IHRlc3RzLCBsaXN0ZWQgYmVs
b3cnLCBvdXRwdXQpCi0gIG91dHB1dCA9IHJlLnN1YihyJ1xkKyBGQUlMRUQgVEVTVFMnLAotICAg
ICAgICAgICAgICAgICAgJz8gRkFJTEVEIFRFU1RTJywgb3V0cHV0KQotICBvdXRwdXQgPSByZS5z
dWIocidcZCsgdGVzdHM/IGZyb20gXGQrIHRlc3QgY2FzZXM/JywKLSAgICAgICAgICAgICAgICAg
ICc/IHRlc3RzIGZyb20gPyB0ZXN0IGNhc2VzJywgb3V0cHV0KQotICBvdXRwdXQgPSByZS5zdWIo
cidcZCsgdGVzdHM/IGZyb20gKFthLXpBLVpfXSknLAotICAgICAgICAgICAgICAgICAgcic/IHRl
c3RzIGZyb20gXDEnLCBvdXRwdXQpCi0gIHJldHVybiByZS5zdWIocidcZCsgdGVzdHM/XC4nLCAn
PyB0ZXN0cy4nLCBvdXRwdXQpCi0KLQotZGVmIFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRw
dXQsIHBhdHRlcm4pOgotICAiIiJSZW1vdmVzIG91dHB1dCBvZiBzcGVjaWZpZWQgdGVzdHMgZnJv
bSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuCi0KLSAgVGhpcyBmdW5jdGlvbiBzdHJp
cHMgbm90IG9ubHkgdGhlIGJlZ2lubmluZyBhbmQgdGhlIGVuZCBvZiBhIHRlc3QgYnV0IGFsc28K
LSAgYWxsIG91dHB1dCBpbiBiZXR3ZWVuLgotCi0gIEFyZ3M6Ci0gICAgdGVzdF9vdXRwdXQ6ICAg
ICAgIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHRlc3Qgb3V0cHV0LgotICAgIHBhdHRlcm46ICAg
ICAgICAgICBBIHJlZ2V4IHN0cmluZyB0aGF0IG1hdGNoZXMgbmFtZXMgb2YgdGVzdCBjYXNlcyBv
cgotICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cyB0byByZW1vdmUuCi0KLSAgUmV0dXJuczoK
LSAgICBDb250ZW50cyBvZiB0ZXN0X291dHB1dCB3aXRoIHRlc3RzIHdob3NlIG5hbWVzIG1hdGNo
IHBhdHRlcm4gcmVtb3ZlZC4KLSAgIiIiCi0KLSAgdGVzdF9vdXRwdXQgPSByZS5zdWIoCi0gICAg
ICByJy4qXFsgUlVOICAgICAgXF0gLiolcygufFxuKSo/XFsoICBGQUlMRUQgIHwgICAgICAgT0sg
KVxdIC4qJXMuKlxuJyAlICgKLSAgICAgICAgICBwYXR0ZXJuLCBwYXR0ZXJuKSwKLSAgICAgICcn
LAotICAgICAgdGVzdF9vdXRwdXQpCi0gIHJldHVybiByZS5zdWIocicuKiVzLipcbicgJSBwYXR0
ZXJuLCAnJywgdGVzdF9vdXRwdXQpCi0KLQotZGVmIE5vcm1hbGl6ZU91dHB1dChvdXRwdXQpOgot
ICAiIiJOb3JtYWxpemVzIG91dHB1dCAodGhlIG91dHB1dCBvZiBndGVzdF9vdXRwdXRfdGVzdF8u
ZXhlKS4iIiIKLQotICBvdXRwdXQgPSBUb1VuaXhMaW5lRW5kaW5nKG91dHB1dCkKLSAgb3V0cHV0
ID0gUmVtb3ZlTG9jYXRpb25zKG91dHB1dCkKLSAgb3V0cHV0ID0gUmVtb3ZlU3RhY2tUcmFjZURl
dGFpbHMob3V0cHV0KQotICBvdXRwdXQgPSBSZW1vdmVUaW1lKG91dHB1dCkKLSAgcmV0dXJuIG91
dHB1dAotCi0KLWRlZiBHZXRTaGVsbENvbW1hbmRPdXRwdXQoZW52X2NtZCk6Ci0gICIiIlJ1bnMg
YSBjb21tYW5kIGluIGEgc3ViLXByb2Nlc3MsIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQgaW4gYSBz
dHJpbmcuCi0KLSAgQXJnczoKLSAgICBlbnZfY21kOiBUaGUgc2hlbGwgY29tbWFuZC4gQSAyLXR1
cGxlIHdoZXJlIGVsZW1lbnQgMCBpcyBhIGRpY3Qgb2YgZXh0cmEKLSAgICAgICAgICAgICBlbnZp
cm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0LCBhbmQgZWxlbWVudCAxIGlzIGEgc3RyaW5nIHdpdGgK
LSAgICAgICAgICAgICB0aGUgY29tbWFuZCBhbmQgYW55IGZsYWdzLgotCi0gIFJldHVybnM6Ci0g
ICAgQSBzdHJpbmcgd2l0aCB0aGUgY29tbWFuZCdzIGNvbWJpbmVkIHN0YW5kYXJkIGFuZCBkaWFn
bm9zdGljIG91dHB1dC4KLSAgIiIiCi0KLSAgIyBTcGF3bnMgY21kIGluIGEgc3ViLXByb2Nlc3Ms
IGFuZCBnZXRzIGl0cyBzdGFuZGFyZCBJL08gZmlsZSBvYmplY3RzLgotICAjIFNldCBhbmQgc2F2
ZSB0aGUgZW52aXJvbm1lbnQgcHJvcGVybHkuCi0gIGVudmlyb24gPSBvcy5lbnZpcm9uLmNvcHko
KQotICBlbnZpcm9uLnVwZGF0ZShlbnZfY21kWzBdKQotICBwID0gZ3Rlc3RfdGVzdF91dGlscy5T
dWJwcm9jZXNzKGVudl9jbWRbMV0sIGVudj1lbnZpcm9uKQotCi0gIHJldHVybiBwLm91dHB1dAot
Ci0KLWRlZiBHZXRDb21tYW5kT3V0cHV0KGVudl9jbWQpOgotICAiIiJSdW5zIGEgY29tbWFuZCBh
bmQgcmV0dXJucyBpdHMgb3V0cHV0IHdpdGggYWxsIGZpbGUgbG9jYXRpb24KLSAgaW5mbyBzdHJp
cHBlZCBvZmYuCi0KLSAgQXJnczoKLSAgICBlbnZfY21kOiAgVGhlIHNoZWxsIGNvbW1hbmQuIEEg
Mi10dXBsZSB3aGVyZSBlbGVtZW50IDAgaXMgYSBkaWN0IG9mIGV4dHJhCi0gICAgICAgICAgICAg
IGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQsIGFuZCBlbGVtZW50IDEgaXMgYSBzdHJpbmcg
d2l0aAotICAgICAgICAgICAgICB0aGUgY29tbWFuZCBhbmQgYW55IGZsYWdzLgotICAiIiIKLQot
ICAjIERpc2FibGVzIGV4Y2VwdGlvbiBwb3AtdXBzIG9uIFdpbmRvd3MuCi0gIGVudmlyb24sIGNt
ZGxpbmUgPSBlbnZfY21kCi0gIGVudmlyb24gPSBkaWN0KGVudmlyb24pICAjIEVuc3VyZXMgd2Ug
YXJlIG1vZGlmeWluZyBhIGNvcHkuCi0gIGVudmlyb25bQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFS
X05BTUVdID0gJzEnCi0gIHJldHVybiBOb3JtYWxpemVPdXRwdXQoR2V0U2hlbGxDb21tYW5kT3V0
cHV0KChlbnZpcm9uLCBjbWRsaW5lKSkpCi0KLQotZGVmIEdldE91dHB1dE9mQWxsQ29tbWFuZHMo
KToKLSAgIiIiUmV0dXJucyBjb25jYXRlbmF0ZWQgb3V0cHV0IGZyb20gc2V2ZXJhbCByZXByZXNl
bnRhdGl2ZSBjb21tYW5kcy4iIiIKLQotICByZXR1cm4gKEdldENvbW1hbmRPdXRwdXQoQ09NTUFO
RF9XSVRIX0NPTE9SKSArCi0gICAgICAgICAgR2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJVEhf
VElNRSkgKwotICAgICAgICAgIEdldENvbW1hbmRPdXRwdXQoQ09NTUFORF9XSVRIX0RJU0FCTEVE
KSArCi0gICAgICAgICAgR2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJVEhfU0hBUkRJTkcpKQot
Ci0KLXRlc3RfbGlzdCA9IEdldFNoZWxsQ29tbWFuZE91dHB1dChDT01NQU5EX0xJU1RfVEVTVFMp
Ci1TVVBQT1JUU19ERUFUSF9URVNUUyA9ICdEZWF0aFRlc3QnIGluIHRlc3RfbGlzdAotU1VQUE9S
VFNfVFlQRURfVEVTVFMgPSAnVHlwZWRUZXN0JyBpbiB0ZXN0X2xpc3QKLVNVUFBPUlRTX1RIUkVB
RFMgPSAnRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCcgaW4gdGVzdF9saXN0Ci1TVVBQT1JU
U19TVEFDS19UUkFDRVMgPSBGYWxzZQotCi1DQU5fR0VORVJBVEVfR09MREVOX0ZJTEUgPSAoU1VQ
UE9SVFNfREVBVEhfVEVTVFMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VQUE9S
VFNfVFlQRURfVEVTVFMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VQUE9SVFNf
VEhSRUFEUykKLQotCi1jbGFzcyBHVGVzdE91dHB1dFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0
Q2FzZSk6Ci0gIGRlZiBSZW1vdmVVbnN1cHBvcnRlZFRlc3RzKHNlbGYsIHRlc3Rfb3V0cHV0KToK
LSAgICBpZiBub3QgU1VQUE9SVFNfREVBVEhfVEVTVFM6Ci0gICAgICB0ZXN0X291dHB1dCA9IFJl
bW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdEZWF0aFRlc3QnKQotICAgIGlmIG5vdCBT
VVBQT1JUU19UWVBFRF9URVNUUzoKLSAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdU
ZXN0cyh0ZXN0X291dHB1dCwgJ1R5cGVkVGVzdCcpCi0gICAgICB0ZXN0X291dHB1dCA9IFJlbW92
ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdUeXBlZERlYXRoVGVzdCcpCi0gICAgICB0ZXN0
X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdUeXBlUGFyYW1EZWF0
aFRlc3QnKQotICAgIGlmIG5vdCBTVVBQT1JUU19USFJFQURTOgotICAgICAgdGVzdF9vdXRwdXQg
PSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0JykKLSAgICAg
IHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0
UmVwb3J0ZXJUZXN0JykKLSAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0
ZXN0X291dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnV29y
a3NDb25jdXJyZW50bHknKQotICAgIGlmIG5vdCBTVVBQT1JUU19TVEFDS19UUkFDRVM6Ci0gICAg
ICB0ZXN0X291dHB1dCA9IFJlbW92ZVN0YWNrVHJhY2VzKHRlc3Rfb3V0cHV0KQotCi0gICAgcmV0
dXJuIHRlc3Rfb3V0cHV0Ci0KLSAgZGVmIHRlc3RPdXRwdXQoc2VsZik6Ci0gICAgb3V0cHV0ID0g
R2V0T3V0cHV0T2ZBbGxDb21tYW5kcygpCi0KLSAgICBnb2xkZW5fZmlsZSA9IG9wZW4oR09MREVO
X1BBVEgsICdyYicpCi0gICAgIyBBIG1pcy1jb25maWd1cmVkIHNvdXJjZSBjb250cm9sIHN5c3Rl
bSBjYW4gY2F1c2UgXHIgYXBwZWFyIGluIEVPTAotICAgICMgc2VxdWVuY2VzIHdoZW4gd2UgcmVh
ZCB0aGUgZ29sZGVuIGZpbGUgaXJyZXNwZWN0aXZlIG9mIGFuIG9wZXJhdGluZwotICAgICMgc3lz
dGVtIHVzZWQuIFRoZXJlZm9yZSwgd2UgbmVlZCB0byBzdHJpcCB0aG9zZSBccidzIGZyb20gbmV3
bGluZXMKLSAgICAjIHVuY29uZGl0aW9uYWxseS4KLSAgICBnb2xkZW4gPSBUb1VuaXhMaW5lRW5k
aW5nKGdvbGRlbl9maWxlLnJlYWQoKSkKLSAgICBnb2xkZW5fZmlsZS5jbG9zZSgpCi0KLSAgICAj
IFdlIHdhbnQgdGhlIHRlc3QgdG8gcGFzcyByZWdhcmRsZXNzIG9mIGNlcnRhaW4gZmVhdHVyZXMg
YmVpbmcKLSAgICAjIHN1cHBvcnRlZCBvciBub3QuCi0KLSAgICAjIFdlIHN0aWxsIGhhdmUgdG8g
cmVtb3ZlIHR5cGUgbmFtZSBzcGVjaWZpY3MgaW4gYWxsIGNhc2VzLgotICAgIG5vcm1hbGl6ZWRf
YWN0dWFsID0gUmVtb3ZlVHlwZUluZm9EZXRhaWxzKG91dHB1dCkKLSAgICBub3JtYWxpemVkX2dv
bGRlbiA9IFJlbW92ZVR5cGVJbmZvRGV0YWlscyhnb2xkZW4pCi0KLSAgICBpZiBDQU5fR0VORVJB
VEVfR09MREVOX0ZJTEU6Ci0gICAgICBzZWxmLmFzc2VydEVxdWFsKG5vcm1hbGl6ZWRfZ29sZGVu
LCBub3JtYWxpemVkX2FjdHVhbCkKLSAgICBlbHNlOgotICAgICAgbm9ybWFsaXplZF9hY3R1YWwg
PSBSZW1vdmVUZXN0Q291bnRzKG5vcm1hbGl6ZWRfYWN0dWFsKQotICAgICAgbm9ybWFsaXplZF9n
b2xkZW4gPSBSZW1vdmVUZXN0Q291bnRzKHNlbGYuUmVtb3ZlVW5zdXBwb3J0ZWRUZXN0cygKLSAg
ICAgICAgICBub3JtYWxpemVkX2dvbGRlbikpCi0KLSAgICAgICMgVGhpcyBjb2RlIGlzIHZlcnkg
aGFuZHkgd2hlbiBkZWJ1Z2dpbmcgZ29sZGVuIGZpbGUgZGlmZmVyZW5jZXM6Ci0gICAgICBpZiBv
cy5nZXRlbnYoJ0RFQlVHX0dURVNUX09VVFBVVF9URVNUJyk6Ci0gICAgICAgIG9wZW4ob3MucGF0
aC5qb2luKAotICAgICAgICAgICAgZ3Rlc3RfdGVzdF91dGlscy5HZXRTb3VyY2VEaXIoKSwKLSAg
ICAgICAgICAgICdfZ3Rlc3Rfb3V0cHV0X3Rlc3Rfbm9ybWFsaXplZF9hY3R1YWwudHh0JyksICd3
YicpLndyaXRlKAotICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRfYWN0dWFsKQotICAgICAgICBv
cGVuKG9zLnBhdGguam9pbigKLSAgICAgICAgICAgIGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNl
RGlyKCksCi0gICAgICAgICAgICAnX2d0ZXN0X291dHB1dF90ZXN0X25vcm1hbGl6ZWRfZ29sZGVu
LnR4dCcpLCAnd2InKS53cml0ZSgKLSAgICAgICAgICAgICAgICBub3JtYWxpemVkX2dvbGRlbikK
LQotICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtYWxpemVkX2dvbGRlbiwgbm9ybWFsaXplZF9h
Y3R1YWwpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgaWYgc3lzLmFyZ3ZbMTpd
ID09IFtHRU5HT0xERU5fRkxBR106Ci0gICAgaWYgQ0FOX0dFTkVSQVRFX0dPTERFTl9GSUxFOgot
ICAgICAgb3V0cHV0ID0gR2V0T3V0cHV0T2ZBbGxDb21tYW5kcygpCi0gICAgICBnb2xkZW5fZmls
ZSA9IG9wZW4oR09MREVOX1BBVEgsICd3YicpCi0gICAgICBnb2xkZW5fZmlsZS53cml0ZShvdXRw
dXQpCi0gICAgICBnb2xkZW5fZmlsZS5jbG9zZSgpCi0gICAgZWxzZToKLSAgICAgIG1lc3NhZ2Ug
PSAoCi0gICAgICAgICAgIiIiVW5hYmxlIHRvIHdyaXRlIGEgZ29sZGVuIGZpbGUgd2hlbiBjb21w
aWxlZCBpbiBhbiBlbnZpcm9ubWVudAotdGhhdCBkb2VzIG5vdCBzdXBwb3J0IGFsbCB0aGUgcmVx
dWlyZWQgZmVhdHVyZXMgKGRlYXRoIHRlc3RzIiIiKQotICAgICAgaWYgSVNfV0lORE9XUzoKLSAg
ICAgICAgbWVzc2FnZSArPSAoCi0gICAgICAgICAgICAiIiJcbmFuZCB0eXBlZCB0ZXN0cykuIFBs
ZWFzZSBjaGVjayB0aGF0IHlvdSBhcmUgdXNpbmcgVkMrKyA4LjAgU1AxCi1vciBoaWdoZXIgYXMg
eW91ciBjb21waWxlci4iIiIpCi0gICAgICBlbHNlOgotICAgICAgICBtZXNzYWdlICs9ICIiIlxu
dHlwZWQgdGVzdHMsIGFuZCB0aHJlYWRzKS4gIFBsZWFzZSBnZW5lcmF0ZSB0aGUKLWdvbGRlbiBm
aWxlIHVzaW5nIGEgYmluYXJ5IGJ1aWx0IHdpdGggdGhvc2UgZmVhdHVyZXMgZW5hYmxlZC4iIiIK
LQotICAgICAgc3lzLnN0ZGVyci53cml0ZShtZXNzYWdlKQotICAgICAgc3lzLmV4aXQoMSkKLSAg
ZWxzZToKLSAgICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjczZThlOTNlYjA1OWY1ZGI2OTM3YzhjN2Q3Nzc2NmY4NzgwNTI3MC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0Xy5jYworKysgL2Rldi9udWxsCkBAIC0x
LDExMzUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0
OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8v
Ci0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLy8KLS8vIEEgdW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCBpdHNlbGYuICBUaGlzIHZlcmlm
aWVzIHRoYXQgdGhlIGJhc2ljCi0vLyBjb25zdHJ1Y3RzIG9mIEdvb2dsZSBUZXN0IHdvcmsuCi0v
LwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3Qtc3BpLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotLy8gSW5kaWNh
dGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3Qncwot
Ly8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlu
bC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAg
VGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5j
bHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RF
U1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgi
Ci0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLQot
I2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKLXVzaW5nIHRlc3Rpbmc6OlNjb3BlZEZha2VUZXN0UGFy
dFJlc3VsdFJlcG9ydGVyOwotdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHRBcnJheTsKLQot
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6Ok5vdGlmaWNhdGlvbjsKLXVzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpUaHJlYWRXaXRoUGFyYW07Ci0jZW5kaWYKLQotbmFtZXNwYWNlIHBvc2l4ID0gOjp0
ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5n
OwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI7Ci0KLS8vIFRlc3RzIGNhdGNo
aW5nIGZhdGFsIGZhaWx1cmVzLgotCi0vLyBBIHN1YnJvdXRpbmUgdXNlZCBieSB0aGUgZm9sbG93
aW5nIHRlc3QuCi12b2lkIFRlc3RFcTEoaW50IHgpIHsKLSAgQVNTRVJUX0VRKDEsIHgpOwotfQot
Ci0vLyBUaGlzIGZ1bmN0aW9uIGNhbGxzIGEgdGVzdCBzdWJyb3V0aW5lLCBjYXRjaGVzIHRoZSBm
YXRhbCBmYWlsdXJlIGl0Ci0vLyBnZW5lcmF0ZXMsIGFuZCB0aGVuIHJldHVybnMgZWFybHkuCi12
b2lkIFRyeVRlc3RTdWJyb3V0aW5lKCkgewotICAvLyBDYWxscyBhIHN1YnJvdW50aW5lIHRoYXQg
eWllbGRzIGEgZmF0YWwgZmFpbHVyZS4KLSAgVGVzdEVxMSgyKTsKLQotICAvLyBDYXRjaGVzIHRo
ZSBmYXRhbCBmYWlsdXJlIGFuZCBhYm9ydHMgdGhlIHRlc3QuCi0gIC8vCi0gIC8vIFRoZSB0ZXN0
aW5nOjpUZXN0OjogcHJlZml4IGlzIG5lY2Vzc2FyeSB3aGVuIGNhbGxpbmcKLSAgLy8gSGFzRmF0
YWxGYWlsdXJlKCkgb3V0c2lkZSBvZiBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdCBmaXh0dXJlLgot
ICBpZiAodGVzdGluZzo6VGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkpIHJldHVybjsKLQotICAvLyBJ
ZiB3ZSBnZXQgaGVyZSwgc29tZXRoaW5nIGlzIHdyb25nLgotICBGQUlMKCkgPDwgIlRoaXMgc2hv
dWxkIG5ldmVyIGJlIHJlYWNoZWQuIjsKLX0KLQotVEVTVChQYXNzaW5nVGVzdCwgUGFzc2luZ1Rl
c3QxKSB7Ci19Ci0KLVRFU1QoUGFzc2luZ1Rlc3QsIFBhc3NpbmdUZXN0MikgewotfQotCi0vLyBU
ZXN0cyBjYXRjaGluZyBhIGZhdGFsIGZhaWx1cmUgaW4gYSBzdWJyb3V0aW5lLgotVEVTVChGYXRh
bEZhaWx1cmVUZXN0LCBGYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUpIHsKLSAgcHJpbnRmKCIoZXhw
ZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpXG4iKTsKLQotICBUcnlUZXN0U3Vi
cm91dGluZSgpOwotfQotCi0vLyBUZXN0cyBjYXRjaGluZyBhIGZhdGFsIGZhaWx1cmUgaW4gYSBu
ZXN0ZWQgc3Vicm91dGluZS4KLVRFU1QoRmF0YWxGYWlsdXJlVGVzdCwgRmF0YWxGYWlsdXJlSW5O
ZXN0ZWRTdWJyb3V0aW5lKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4
IHNob3VsZCBiZSAxKVxuIik7Ci0KLSAgLy8gQ2FsbHMgYSBzdWJyb3VudGluZSB0aGF0IHlpZWxk
cyBhIGZhdGFsIGZhaWx1cmUuCi0gIFRyeVRlc3RTdWJyb3V0aW5lKCk7Ci0KLSAgLy8gQ2F0Y2hl
cyB0aGUgZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSB0ZXN0LgotICAvLwotICAvLyBXaGVu
IGNhbGxpbmcgSGFzRmF0YWxGYWlsdXJlKCkgaW5zaWRlIGEgVEVTVCwgVEVTVF9GLCBvciB0ZXN0
Ci0gIC8vIGZpeHR1cmUsIHRoZSB0ZXN0aW5nOjpUZXN0OjogcHJlZml4IGlzIG5vdCBuZWVkZWQu
Ci0gIGlmIChIYXNGYXRhbEZhaWx1cmUoKSkgcmV0dXJuOwotCi0gIC8vIElmIHdlIGdldCBoZXJl
LCBzb21ldGhpbmcgaXMgd3JvbmcuCi0gIEZBSUwoKSA8PCAiVGhpcyBzaG91bGQgbmV2ZXIgYmUg
cmVhY2hlZC4iOwotfQotCi0vLyBUZXN0cyBIYXNGYXRhbEZhaWx1cmUoKSBhZnRlciBhIGZhaWxl
ZCBFWFBFQ1QgY2hlY2suCi1URVNUKEZhdGFsRmFpbHVyZVRlc3QsIE5vbmZhdGFsRmFpbHVyZUlu
U3Vicm91dGluZSkgewotICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlIG9uIGZhbHNlKVxu
Iik7Ci0gIEVYUEVDVF9UUlVFKGZhbHNlKTsgIC8vIEdlbmVyYXRlcyBhIG5vbmZhdGFsIGZhaWx1
cmUKLSAgQVNTRVJUX0ZBTFNFKEhhc0ZhdGFsRmFpbHVyZSgpKTsgIC8vIFRoaXMgc2hvdWxkIHN1
Y2NlZWQuCi19Ci0KLS8vIFRlc3RzIGludGVybGVhdmluZyB1c2VyIGxvZ2dpbmcgYW5kIEdvb2ds
ZSBUZXN0IGFzc2VydGlvbnMuCi1URVNUKExvZ2dpbmdUZXN0LCBJbnRlcmxlYXZpbmdMb2dnaW5n
QW5kQXNzZXJ0aW9ucykgewotICBzdGF0aWMgY29uc3QgaW50IGFbNF0gPSB7Ci0gICAgMywgOSwg
MiwgNgotICB9OwotCi0gIHByaW50ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzIG9uICgzKSA+PSAo
YVtpXSkpXG4iKTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihhKS9zaXplb2YoKmEpKTsgaSsrKSB7Ci0gICAgcHJpbnRmKCJpID09ICVkXG4iLCBpKTsKLSAg
ICBFWFBFQ1RfR0UoMywgYVtpXSk7Ci0gIH0KLX0KLQotLy8gVGVzdHMgdGhlIFNDT1BFRF9UUkFD
RSBtYWNyby4KLQotLy8gQSBoZWxwZXIgZnVuY3Rpb24gZm9yIHRlc3RpbmcgU0NPUEVEX1RSQUNF
Lgotdm9pZCBTdWJXaXRob3V0VHJhY2UoaW50IG4pIHsKLSAgRVhQRUNUX0VRKDEsIG4pOwotICBB
U1NFUlRfRVEoMiwgbik7Ci19Ci0KLS8vIEFub3RoZXIgaGVscGVyIGZ1bmN0aW9uIGZvciB0ZXN0
aW5nIFNDT1BFRF9UUkFDRS4KLXZvaWQgU3ViV2l0aFRyYWNlKGludCBuKSB7Ci0gIFNDT1BFRF9U
UkFDRSh0ZXN0aW5nOjpNZXNzYWdlKCkgPDwgIm4gPSAiIDw8IG4pOwotCi0gIFN1YldpdGhvdXRU
cmFjZShuKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0UoKSBvYmV5cyBsZXhpY2Fs
IHNjb3Blcy4KLVRFU1QoU0NPUEVEX1RSQUNFVGVzdCwgT2JleXNTY29wZXMpIHsKLSAgcHJpbnRm
KCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIpOwotCi0gIC8vIFRoZXJlIHNob3VsZCBiZSBubyB0cmFj
ZSBiZWZvcmUgU0NPUEVEX1RSQUNFKCkgaXMgaW52b2tlZC4KLSAgQUREX0ZBSUxVUkUoKSA8PCAi
VGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkbid0IGhhdmUgYSB0cmFjZS4iOwot
Ci0gIHsKLSAgICBTQ09QRURfVFJBQ0UoIkV4cGVjdGVkIHRyYWNlIik7Ci0gICAgLy8gQWZ0ZXIg
U0NPUEVEX1RSQUNFKCksIGEgZmFpbHVyZSBpbiB0aGUgY3VycmVudCBzY29wZSBzaG91bGQgY29u
dGFpbgotICAgIC8vIHRoZSB0cmFjZS4KLSAgICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1
cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgaGF2ZSBhIHRyYWNlLiI7Ci0gIH0KLQotICAvLyBP
bmNlIHRoZSBjb250cm9sIGxlYXZlcyB0aGUgc2NvcGUgb2YgdGhlIFNDT1BFRF9UUkFDRSgpLCB0
aGVyZQotICAvLyBzaG91bGQgYmUgbm8gdHJhY2UgYWdhaW4uCi0gIEFERF9GQUlMVVJFKCkgPDwg
IlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuIjsK
LX0KLQotLy8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0Ugd29ya3MgaW5zaWRlIGEgbG9vcC4KLVRF
U1QoU0NPUEVEX1RSQUNFVGVzdCwgV29ya3NJbkxvb3ApIHsKLSAgcHJpbnRmKCIoZXhwZWN0ZWQg
dG8gZmFpbClcbiIpOwotCi0gIGZvciAoaW50IGkgPSAxOyBpIDw9IDI7IGkrKykgewotICAgIFND
T1BFRF9UUkFDRSh0ZXN0aW5nOjpNZXNzYWdlKCkgPDwgImkgPSAiIDw8IGkpOwotCi0gICAgU3Vi
V2l0aG91dFRyYWNlKGkpOwotICB9Ci19Ci0KLS8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFIHdv
cmtzIGluIGEgc3Vicm91dGluZS4KLVRFU1QoU0NPUEVEX1RSQUNFVGVzdCwgV29ya3NJblN1YnJv
dXRpbmUpIHsKLSAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIpOwotCi0gIFN1YldpdGhU
cmFjZSgxKTsKLSAgU3ViV2l0aFRyYWNlKDIpOwotfQotCi0vLyBUZXN0cyB0aGF0IFNDT1BFRF9U
UkFDRSBjYW4gYmUgbmVzdGVkLgotVEVTVChTQ09QRURfVFJBQ0VUZXN0LCBDYW5CZU5lc3RlZCkg
ewotICBwcmludGYoIihleHBlY3RlZCB0byBmYWlsKVxuIik7Ci0KLSAgU0NPUEVEX1RSQUNFKCIi
KTsgIC8vIEEgdHJhY2Ugd2l0aG91dCBhIG1lc3NhZ2UuCi0KLSAgU3ViV2l0aFRyYWNlKDIpOwot
fQotCi0vLyBUZXN0cyB0aGF0IG11bHRpcGxlIFNDT1BFRF9UUkFDRXMgY2FuIGJlIHVzZWQgaW4g
dGhlIHNhbWUgc2NvcGUuCi1URVNUKFNDT1BFRF9UUkFDRVRlc3QsIENhbkJlUmVwZWF0ZWQpIHsK
LSAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIpOwotCi0gIFNDT1BFRF9UUkFDRSgiQSIp
OwotICBBRERfRkFJTFVSRSgpCi0gICAgICA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBh
bmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQS4iOwotCi0gIFNDT1BFRF9UUkFDRSgiQiIp
OwotICBBRERfRkFJTFVSRSgpCi0gICAgICA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBh
bmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSBhbmQgQi4iOwotCi0gIHsKLSAgICBTQ09Q
RURfVFJBQ0UoIkMiKTsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhw
ZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiAiCi0gICAgICAgICAgICAgICAgICA8PCAidHJhY2Ug
cG9pbnQgQSwgQiwgYW5kIEMuIjsKLSAgfQotCi0gIFNDT1BFRF9UUkFDRSgiRCIpOwotICBBRERf
RkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFp
biAiCi0gICAgICAgICAgICAgICAgPDwgInRyYWNlIHBvaW50IEEsIEIsIGFuZCBELiI7Ci19Ci0K
LSNpZiBHVEVTVF9JU19USFJFQURTQUZFCi0vLyBUZXN0cyB0aGF0IFNDT1BFRF9UUkFDRSgpcyBj
YW4gYmUgdXNlZCBjb25jdXJyZW50bHkgZnJvbSBtdWx0aXBsZQotLy8gdGhyZWFkcy4gIE5hbWVs
eSwgYW4gYXNzZXJ0aW9uIHNob3VsZCBiZSBhZmZlY3RlZCBieQotLy8gU0NPUEVEX1RSQUNFKClz
IGluIGl0cyBvd24gdGhyZWFkIG9ubHkuCi0KLS8vIEhlcmUncyB0aGUgc2VxdWVuY2Ugb2YgYWN0
aW9ucyB0aGF0IGhhcHBlbiBpbiB0aGUgdGVzdDoKLS8vCi0vLyAgIFRocmVhZCBBIChtYWluKSAg
ICAgICAgICAgICAgICB8IFRocmVhZCBCIChzcGF3bmVkKQotLy8gICA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09fD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLyAgIHNw
YXducyB0aHJlYWQgQiAgICAgICAgICAgICAgICB8Ci0vLyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vICAgd2FpdHMg
Zm9yIG4xICAgICAgICAgICAgICAgICAgIHwgU0NPUEVEX1RSQUNFKCJUcmFjZSBCIik7Ci0vLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdlbmVyYXRlcyBmYWlsdXJlICMxCi0v
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG5vdGlmaWVzIG4xCi0vLyAgIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLS8vICAgU0NPUEVEX1RSQUNFKCJUcmFjZSBBIik7ICAgICAgIHwgd2FpdHMgZm9yIG4y
Ci0vLyAgIGdlbmVyYXRlcyBmYWlsdXJlICMyICAgICAgICAgICB8Ci0vLyAgIG5vdGlmaWVzIG4y
ICAgICAgICAgICAgICAgICAgICB8Ci0vLyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vICAgd2FpdHMgZm9yIG4zICAg
ICAgICAgICAgICAgICAgIHwgZ2VuZXJhdGVzIGZhaWx1cmUgIzMKLS8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgdHJhY2UgQiBkaWVzCi0vLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IGdlbmVyYXRlcyBmYWlsdXJlICM0Ci0vLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IG5vdGlmaWVzIG4zCi0vLyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vICAgZ2VuZXJh
dGVzIGZhaWx1cmUgIzUgICAgICAgICAgIHwgZmluaXNoZXMKLS8vICAgdHJhY2UgQSBkaWVzICAg
ICAgICAgICAgICAgICAgIHwKLS8vICAgZ2VuZXJhdGVzIGZhaWx1cmUgIzYgICAgICAgICAgIHwK
LS8vICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotLy8gICB3YWl0cyBmb3IgdGhyZWFkIEIgdG8gZmluaXNoICAgfAotCi1z
dHJ1Y3QgQ2hlY2tQb2ludHMgewotICBOb3RpZmljYXRpb24gbjE7Ci0gIE5vdGlmaWNhdGlvbiBu
MjsKLSAgTm90aWZpY2F0aW9uIG4zOwotfTsKLQotc3RhdGljIHZvaWQgVGhyZWFkV2l0aFNjb3Bl
ZFRyYWNlKENoZWNrUG9pbnRzKiBjaGVja19wb2ludHMpIHsKLSAgewotICAgIFNDT1BFRF9UUkFD
RSgiVHJhY2UgQiIpOwotICAgIEFERF9GQUlMVVJFKCkKLSAgICAgICAgPDwgIkV4cGVjdGVkIGZh
aWx1cmUgIzEgKGluIHRocmVhZCBCLCBvbmx5IHRyYWNlIEIgYWxpdmUpLiI7Ci0gICAgY2hlY2tf
cG9pbnRzLT5uMS5Ob3RpZnkoKTsKLSAgICBjaGVja19wb2ludHMtPm4yLldhaXRGb3JOb3RpZmlj
YXRpb24oKTsKLQotICAgIEFERF9GQUlMVVJFKCkKLSAgICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1
cmUgIzMgKGluIHRocmVhZCBCLCB0cmFjZSBBICYgQiBib3RoIGFsaXZlKS4iOwotICB9ICAvLyBU
cmFjZSBCIGRpZXMgaGVyZS4KLSAgQUREX0ZBSUxVUkUoKQotICAgICAgPDwgIkV4cGVjdGVkIGZh
aWx1cmUgIzQgKGluIHRocmVhZCBCLCBvbmx5IHRyYWNlIEEgYWxpdmUpLiI7Ci0gIGNoZWNrX3Bv
aW50cy0+bjMuTm90aWZ5KCk7Ci19Ci0KLVRFU1QoU0NPUEVEX1RSQUNFVGVzdCwgV29ya3NDb25j
dXJyZW50bHkpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDYgZmFpbHVyZXMpXG4iKTsKLQotICBD
aGVja1BvaW50cyBjaGVja19wb2ludHM7Ci0gIFRocmVhZFdpdGhQYXJhbTxDaGVja1BvaW50cyo+
IHRocmVhZCgmVGhyZWFkV2l0aFNjb3BlZFRyYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmNoZWNrX3BvaW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwpOwotICBjaGVja19wb2ludHMubjEuV2FpdEZvck5vdGlmaWNhdGlv
bigpOwotCi0gIHsKLSAgICBTQ09QRURfVFJBQ0UoIlRyYWNlIEEiKTsKLSAgICBBRERfRkFJTFVS
RSgpCi0gICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyIChpbiB0aHJlYWQgQSwgdHJhY2Ug
QSAmIEIgYm90aCBhbGl2ZSkuIjsKLSAgICBjaGVja19wb2ludHMubjIuTm90aWZ5KCk7Ci0gICAg
Y2hlY2tfcG9pbnRzLm4zLldhaXRGb3JOb3RpZmljYXRpb24oKTsKLQotICAgIEFERF9GQUlMVVJF
KCkKLSAgICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzUgKGluIHRocmVhZCBBLCBvbmx5IHRy
YWNlIEEgYWxpdmUpLiI7Ci0gIH0gIC8vIFRyYWNlIEEgZGllcyBoZXJlLgotICBBRERfRkFJTFVS
RSgpCi0gICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNiAoaW4gdGhyZWFkIEEsIG5vIHRyYWNl
IGFsaXZlKS4iOwotICB0aHJlYWQuSm9pbigpOwotfQotI2VuZGlmICAvLyBHVEVTVF9JU19USFJF
QURTQUZFCi0KLVRFU1QoRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0LAotICAgICBESVNBQkxFRF9B
bHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2FybmluZykgewotICAvLyBUaGlzIHRl
c3QgYm9keSBpcyBpbnRlbnRpb25hbGx5IGVtcHR5LiAgSXRzIHNvbGUgcHVycG9zZSBpcyBmb3IK
LSAgLy8gdmVyaWZ5aW5nIHRoYXQgdGhlIC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMg
ZmxhZwotICAvLyBzdXBwcmVzc2VzIHRoZSAiWU9VIEhBVkUgMTIgRElTQUJMRUQgVEVTVFMiIHdh
cm5pbmcgYXQgdGhlIGVuZCBvZgotICAvLyB0aGUgdGVzdCBvdXRwdXQuCi19Ci0KLS8vIFRlc3Rz
IHVzaW5nIGFzc2VydGlvbnMgb3V0c2lkZSBvZiBURVNUIGFuZCBURVNUX0YuCi0vLwotLy8gVGhp
cyBmdW5jdGlvbiBjcmVhdGVzIHR3byBmYWlsdXJlcyBpbnRlbnRpb25hbGx5Lgotdm9pZCBBZEhv
Y1Rlc3QoKSB7Ci0gIHByaW50ZigiVGhlIG5vbi10ZXN0IHBhcnQgb2YgdGhlIGNvZGUgaXMgZXhw
ZWN0ZWQgdG8gaGF2ZSAyIGZhaWx1cmVzLlxuXG4iKTsKLSAgRVhQRUNUX1RSVUUoZmFsc2UpOwot
ICBFWFBFQ1RfRVEoMiwgMyk7Ci19Ci0KLS8vIFJ1bnMgYWxsIFRFU1RzLCBhbGwgVEVTVF9Gcywg
YW5kIHRoZSBhZCBob2MgdGVzdC4KLWludCBSdW5BbGxUZXN0cygpIHsKLSAgQWRIb2NUZXN0KCk7
Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19Ci0KLS8vIFRlc3RzIG5vbi1mYXRhbCBmYWls
dXJlcyBpbiB0aGUgZml4dHVyZSBjb25zdHJ1Y3Rvci4KLWNsYXNzIE5vbkZhdGFsRmFpbHVyZUlu
Rml4dHVyZUNvbnN0cnVjdG9yVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0
ZWQ6Ci0gIE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCgpIHsKLSAgICBw
cmludGYoIihleHBlY3RpbmcgNSBmYWlsdXJlcylcbiIpOwotICAgIEFERF9GQUlMVVJFKCkgPDwg
IkV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IuIjsKLSAgfQot
Ci0gIH5Ob25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QoKSB7Ci0gICAgQURE
X0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNSwgaW4gdGhlIHRlc3QgZml4dHVyZSBk
J3Rvci4iOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIEFERF9GQUlMVVJF
KCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFNldFVwKCkuIjsKLSAgfQotCi0gIHZpcnR1
YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWls
dXJlICM0LCBpbiBUZWFyRG93bi4iOwotICB9Ci19OwotCi1URVNUX0YoTm9uRmF0YWxGYWlsdXJl
SW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LCBGYWlsdXJlSW5Db25zdHJ1Y3RvcikgewotICBBRERf
RkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBib2R5LiI7Ci19
Ci0KLS8vIFRlc3RzIGZhdGFsIGZhaWx1cmVzIGluIHRoZSBmaXh0dXJlIGNvbnN0cnVjdG9yLgot
Y2xhc3MgRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0
b3JUZXN0KCkgewotICAgIHByaW50ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7Ci0gICAg
SW5pdCgpOwotICB9Ci0KLSAgfkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCgp
IHsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVz
dCBmaXh0dXJlIGQndG9yLiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAg
QUREX0ZBSUxVUkUoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIFNldFVwKCkuICAiCi0gICAg
ICAgICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBm
aXh0dXJlIGMndG9yICIKLSAgICAgICAgICAgICAgICAgIDw8ICJoYWQgYSBmYXRhbCBmYWlsdXJl
LiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgQUREX0ZBSUxVUkUo
KSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIFRlYXJEb3duKCkuICAiCi0gICAgICAgICAgICAg
ICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMn
dG9yICIKLSAgICAgICAgICAgICAgICAgIDw8ICJoYWQgYSBmYXRhbCBmYWlsdXJlLiI7Ci0gIH0K
LSBwcml2YXRlOgotICB2b2lkIEluaXQoKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWls
dXJlICMxLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGMndG9yLiI7Ci0gIH0KLX07Ci0KLVRFU1RfRihG
YXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QsIEZhaWx1cmVJbkNvbnN0cnVjdG9y
KSB7Ci0gIEFERF9GQUlMVVJFKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBi
b2R5LiAgIgotICAgICAgICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFz
IHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgIgotICAgICAgICAgICAgICAgIDw8ICJoYWQgYSBmYXRh
bCBmYWlsdXJlLiI7Ci19Ci0KLS8vIFRlc3RzIG5vbi1mYXRhbCBmYWlsdXJlcyBpbiBTZXRVcCgp
LgotY2xhc3MgTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIH5Ob25GYXRhbEZhaWx1cmVJblNldFVwVGVzdCgp
IHsKLSAgICBEZWluaXQoKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBw
cmludGYoIihleHBlY3RpbmcgNCBmYWlsdXJlcylcbiIpOwotICAgIEFERF9GQUlMVVJFKCkgPDwg
IkV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCkuIjsKLSAgfQotCi0gIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIFRl
YXJEb3duKCkuIjsKLSAgfQotIHByaXZhdGU6Ci0gIHZvaWQgRGVpbml0KCkgewotICAgIEZBSUwo
KSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4iOwot
ICB9Ci19OwotCi1URVNUX0YoTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QsIEZhaWx1cmVJblNl
dFVwKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZnVu
Y3Rpb24uIjsKLX0KLQotLy8gVGVzdHMgZmF0YWwgZmFpbHVyZXMgaW4gU2V0VXAoKS4KLWNsYXNz
IEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3Rl
Y3RlZDoKLSAgdmlydHVhbCB+RmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QoKSB7Ci0gICAgRGVpbml0
KCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgcHJpbnRmKCIoZXhwZWN0
aW5nIDMgZmFpbHVyZXMpXG4iKTsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzEs
IGluIFNldFVwKCkuIjsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBG
QUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRlYXJEb3duKCkuIjsKLSAgfQotIHBy
aXZhdGU6Ci0gIHZvaWQgRGVpbml0KCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVy
ZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4iOwotICB9Ci19OwotCi1URVNUX0YoRmF0
YWxGYWlsdXJlSW5TZXRVcFRlc3QsIEZhaWx1cmVJblNldFVwKSB7Ci0gIEZBSUwoKSA8PCAiVU5F
WFBFQ1RFRCBmYWlsdXJlIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLiAgIgotICAgICAgICAgPDwgIldl
IHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgU2V0VXAoKSBmYWlsZWQuIjsKLX0KLQotI2lmIEdU
RVNUX09TX1dJTkRPV1MKLQotLy8gVGhpcyBncm91cCBvZiB0ZXN0cyB2ZXJpZmllcyB0aGF0IEdv
b2dsZSBUZXN0IGhhbmRsZXMgU0VIIGFuZCBDKysKLS8vIGV4Y2VwdGlvbnMgY29ycmVjdGx5Lgot
Ci0vLyBBIGZ1bmN0aW9uIHRoYXQgdGhyb3dzIGFuIFNFSCBleGNlcHRpb24uCi1zdGF0aWMgdm9p
ZCBUaHJvd1NFSCgpIHsKLSAgaW50KiBwID0gTlVMTDsKLSAgKnAgPSAwOyAgLy8gUmFpc2VzIGFu
IGFjY2VzcyB2aW9sYXRpb24uCi19Ci0KLS8vIFRlc3RzIGV4Y2VwdGlvbnMgdGhyb3duIGluIHRo
ZSB0ZXN0IGZpeHR1cmUgY29uc3RydWN0b3IuCi1jbGFzcyBFeGNlcHRpb25JbkZpeHR1cmVDdG9y
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIEV4Y2VwdGlvbklu
Rml4dHVyZUN0b3JUZXN0KCkgewotICAgIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUgb24g
dGhyb3duIGV4Y2VwdGlvbiAiCi0gICAgICAgICAgICJpbiB0aGUgdGVzdCBmaXh0dXJlJ3MgY29u
c3RydWN0b3IpXG4iKTsKLQotICAgIFRocm93U0VIKCk7Ci0gIH0KLQotICB2aXJ0dWFsIH5FeGNl
cHRpb25JbkZpeHR1cmVDdG9yVGVzdCgpIHsKLSAgICBEZWluaXQoKTsKLSAgfQotCi0gIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBGQUlMKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiBT
ZXRVcCgpLiAgIgotICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0
aGUgdGVzdCBmaXh0dXJlIGMndG9yIHRocmV3LiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVh
ckRvd24oKSB7Ci0gICAgRkFJTCgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gVGVhckRvd24o
KS4gICIKLSAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgdGhlIHRl
c3QgZml4dHVyZSBjJ3RvciB0aHJldy4iOwotICB9Ci0gcHJpdmF0ZToKLSAgdm9pZCBEZWluaXQo
KSB7Ci0gICAgRkFJTCgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gdGhlIGQndG9yLiAgIgot
ICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0
dXJlIGMndG9yIHRocmV3LiI7Ci0gIH0KLX07Ci0KLVRFU1RfRihFeGNlcHRpb25JbkZpeHR1cmVD
dG9yVGVzdCwgRXhjZXB0aW9uSW5GaXh0dXJlQ3RvcikgewotICBGQUlMKCkgPDwgIlVORVhQRUNU
RUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBmdW5jdGlvbi4gICIKLSAgICAgICAgIDw8ICJXZSBzaG91
bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgdGhyZXcuIjsKLX0K
LQotLy8gVGVzdHMgZXhjZXB0aW9ucyB0aHJvd24gaW4gU2V0VXAoKS4KLWNsYXNzIEV4Y2VwdGlv
bkluU2V0VXBUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdmly
dHVhbCB+RXhjZXB0aW9uSW5TZXRVcFRlc3QoKSB7Ci0gICAgRGVpbml0KCk7Ci0gIH0KLQotICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgcHJpbnRmKCIoZXhwZWN0aW5nIDMgZmFpbHVyZXMp
XG4iKTsKLQotICAgIFRocm93U0VIKCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24o
KSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLiI7
Ci0gIH0KLSBwcml2YXRlOgotICB2b2lkIERlaW5pdCgpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVj
dGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKLSAgfQotfTsKLQot
VEVTVF9GKEV4Y2VwdGlvbkluU2V0VXBUZXN0LCBFeGNlcHRpb25JblNldFVwKSB7Ci0gIEZBSUwo
KSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLiAgIgotICAgICAg
ICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgU2V0VXAoKSB0aHJldy4iOwotfQot
Ci0vLyBUZXN0cyB0aGF0IFRlYXJEb3duKCkgYW5kIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IgYXJl
IGFsd2F5cyBjYWxsZWQsCi0vLyBldmVuIHdoZW4gdGhlIHRlc3QgZnVuY3Rpb24gdGhyb3dzIGFu
IGV4Y2VwdGlvbi4KLWNsYXNzIEV4Y2VwdGlvbkluVGVzdEZ1bmN0aW9uVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgfkV4Y2VwdGlvbkluVGVzdEZ1
bmN0aW9uVGVzdCgpIHsKLSAgICBEZWluaXQoKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRlYXJEb3du
KCkuIjsKLSAgfQotIHByaXZhdGU6Ci0gIHZvaWQgRGVpbml0KCkgewotICAgIEZBSUwoKSA8PCAi
RXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4iOwotICB9Ci19
OwotCi0vLyBUZXN0cyB0aGF0IHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IgaXMgYWx3YXlzIGNhbGxl
ZCwgZXZlbiB3aGVuIHRoZQotLy8gdGVzdCBmdW5jdGlvbiB0aHJvd3MgYW4gU0VIIGV4Y2VwdGlv
bi4KLVRFU1RfRihFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QsIFNFSCkgewotICBwcmludGYo
IihleHBlY3RpbmcgMyBmYWlsdXJlcylcbiIpOwotCi0gIFRocm93U0VIKCk7Ci19Ci0KLSNpZiBH
VEVTVF9IQVNfRVhDRVBUSU9OUwotCi0vLyBUZXN0cyB0aGF0IHRoZSB0ZXN0IGZpeHR1cmUgZCd0
b3IgaXMgYWx3YXlzIGNhbGxlZCwgZXZlbiB3aGVuIHRoZQotLy8gdGVzdCBmdW5jdGlvbiB0aHJv
d3MgYSBDKysgZXhjZXB0aW9uLiAgV2UgZG8gdGhpcyBvbmx5IHdoZW4KLS8vIEdURVNUX0hBU19F
WENFUFRJT05TIGlzIG5vbi16ZXJvLCBpLmUuIEMrKyBleGNlcHRpb25zIGFyZSBlbmFibGVkLgot
VEVTVF9GKEV4Y2VwdGlvbkluVGVzdEZ1bmN0aW9uVGVzdCwgQ3BwRXhjZXB0aW9uKSB7Ci0gIHRo
cm93IDE7Ci19Ci0KLS8vIFRlc3RzIGV4Y2VwdGlvbnMgdGhyb3duIGluIFRlYXJEb3duKCkuCi1j
bGFzcyBFeGNlcHRpb25JblRlYXJEb3duVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBw
cm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgfkV4Y2VwdGlvbkluVGVhckRvd25UZXN0KCkgewotICAgIERl
aW5pdCgpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIHRocm93IDE7
Ci0gIH0KLSBwcml2YXRlOgotICB2b2lkIERlaW5pdCgpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVj
dGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKLSAgfQotfTsKLQot
VEVTVF9GKEV4Y2VwdGlvbkluVGVhckRvd25UZXN0LCBFeGNlcHRpb25JblRlYXJEb3duKSB7Ci0g
IHByaW50ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7Ci19Ci0KLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX0VYQ0VQVElPTlMKLQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSNpZiBH
VEVTVF9JU19USFJFQURTQUZFCi0KLS8vIEEgdW5hcnkgZnVuY3Rpb24gdGhhdCBtYXkgZGllLgot
dm9pZCBEaWVJZihib29sIHNob3VsZF9kaWUpIHsKLSAgR1RFU1RfQ0hFQ0tfKCFzaG91bGRfZGll
KSA8PCAiIC0gZGVhdGggaW5zaWRlIERpZUlmKCkuIjsKLX0KLQotLy8gVGVzdHMgcnVubmluZyBk
ZWF0aCB0ZXN0cyBpbiBhIG11bHRpLXRocmVhZGVkIGNvbnRleHQuCi0KLS8vIFVzZWQgZm9yIGNv
b3JkaW5hdGlvbiBiZXR3ZWVuIHRoZSBtYWluIGFuZCB0aGUgc3Bhd24gdGhyZWFkLgotc3RydWN0
IFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyB7Ci0gIFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucygp
IHt9Ci0KLSAgTm90aWZpY2F0aW9uIHNwYXduX3RocmVhZF9zdGFydGVkOwotICBOb3RpZmljYXRp
b24gc3Bhd25fdGhyZWFkX29rX3RvX3Rlcm1pbmF0ZTsKLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oU3Bhd25UaHJlYWROb3RpZmljYXRpb25zKTsKLX07Ci0K
LS8vIFRoZSBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCBpbiB0aGUgdGhyZWFkIHNwYXduIGJ5IHRo
ZQotLy8gTXVsdGlwbGVUaHJlYWRzIHRlc3QgKGJlbG93KS4KLXN0YXRpYyB2b2lkIFRocmVhZFJv
dXRpbmUoU3Bhd25UaHJlYWROb3RpZmljYXRpb25zKiBub3RpZmljYXRpb25zKSB7Ci0gIC8vIFNp
Z25hbHMgdGhlIG1haW4gdGhyZWFkIHRoYXQgdGhpcyB0aHJlYWQgaGFzIHN0YXJ0ZWQuCi0gIG5v
dGlmaWNhdGlvbnMtPnNwYXduX3RocmVhZF9zdGFydGVkLk5vdGlmeSgpOwotCi0gIC8vIFdhaXRz
IGZvciBwZXJtaXNzaW9uIHRvIGZpbmlzaCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgbm90aWZp
Y2F0aW9ucy0+c3Bhd25fdGhyZWFkX29rX3RvX3Rlcm1pbmF0ZS5XYWl0Rm9yTm90aWZpY2F0aW9u
KCk7Ci19Ci0KLS8vIFRoaXMgaXMgYSBkZWF0aC10ZXN0IHRlc3QsIGJ1dCBpdCdzIG5vdCBuYW1l
ZCB3aXRoIGEgRGVhdGhUZXN0Ci0vLyBzdWZmaXguICBJdCBzdGFydHMgdGhyZWFkcyB3aGljaCBt
aWdodCBpbnRlcmZlcmUgd2l0aCBsYXRlcgotLy8gZGVhdGggdGVzdHMsIHNvIGl0IG11c3QgcnVu
IGFmdGVyIGFsbCBvdGhlciBkZWF0aCB0ZXN0cy4KLWNsYXNzIERlYXRoVGVzdEFuZE11bHRpVGhy
ZWFkc1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICAvLyBTdGFy
dHMgYSB0aHJlYWQgYW5kIHdhaXRzIGZvciBpdCB0byBiZWdpbi4KLSAgdmlydHVhbCB2b2lkIFNl
dFVwKCkgewotICAgIHRocmVhZF8ucmVzZXQobmV3IFRocmVhZFdpdGhQYXJhbTxTcGF3blRocmVh
ZE5vdGlmaWNhdGlvbnMqPigKLSAgICAgICAgJlRocmVhZFJvdXRpbmUsICZub3RpZmljYXRpb25z
XywgTlVMTCkpOwotICAgIG5vdGlmaWNhdGlvbnNfLnNwYXduX3RocmVhZF9zdGFydGVkLldhaXRG
b3JOb3RpZmljYXRpb24oKTsKLSAgfQotICAvLyBUZWxscyB0aGUgdGhyZWFkIHRvIGZpbmlzaCwg
YW5kIHJlYXBzIGl0LgotICAvLyBEZXBlbmRpbmcgb24gdGhlIHZlcnNpb24gb2YgdGhlIHRocmVh
ZCBsaWJyYXJ5IGluIHVzZSwKLSAgLy8gYSBtYW5hZ2VyIHRocmVhZCBtaWdodCBzdGlsbCBiZSBs
ZWZ0IHJ1bm5pbmcgdGhhdCB3aWxsIGludGVyZmVyZQotICAvLyB3aXRoIGxhdGVyIGRlYXRoIHRl
c3RzLiAgVGhpcyBpcyB1bmZvcnR1bmF0ZSwgYnV0IHRoaXMgY2xhc3MKLSAgLy8gY2xlYW5zIHVw
IGFmdGVyIGl0c2VsZiBhcyBiZXN0IGl0IGNhbi4KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkg
ewotICAgIG5vdGlmaWNhdGlvbnNfLnNwYXduX3RocmVhZF9va190b190ZXJtaW5hdGUuTm90aWZ5
KCk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyBub3RpZmlj
YXRpb25zXzsKLSAgc2NvcGVkX3B0cjxUaHJlYWRXaXRoUGFyYW08U3Bhd25UaHJlYWROb3RpZmlj
YXRpb25zKj4gPiB0aHJlYWRfOwotfTsKLQotI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZF
Ci0KLS8vIFRoZSBNaXhlZFVwVGVzdENhc2VUZXN0IHRlc3QgY2FzZSB2ZXJpZmllcyB0aGF0IEdv
b2dsZSBUZXN0IHdpbGwgZmFpbCBhCi0vLyB0ZXN0IGlmIGl0IHVzZXMgYSBkaWZmZXJlbnQgZml4
dHVyZSBjbGFzcyB0aGFuIHdoYXQgb3RoZXIgdGVzdHMgaW4KLS8vIHRoZSBzYW1lIHRlc3QgY2Fz
ZSB1c2UuICBJdCBkZWxpYmVyYXRlbHkgY29udGFpbnMgdHdvIGZpeHR1cmUKLS8vIGNsYXNzZXMg
d2l0aCB0aGUgc2FtZSBuYW1lIGJ1dCBkZWZpbmVkIGluIGRpZmZlcmVudCBuYW1lc3BhY2VzLgot
Ci0vLyBUaGUgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QgdGVzdCBjYXNlIHZl
cmlmaWVzIHRoYXQKLS8vIHdoZW4gdGhlIHVzZXIgZGVmaW5lcyB0d28gdGVzdHMgd2l0aCB0aGUg
c2FtZSB0ZXN0IGNhc2UgbmFtZSBBTkQKLS8vIHNhbWUgdGVzdCBuYW1lIChidXQgaW4gZGlmZmVy
ZW50IG5hbWVzcGFjZXMpLCB0aGUgc2Vjb25kIHRlc3Qgd2lsbAotLy8gZmFpbC4KLQotbmFtZXNw
YWNlIGZvbyB7Ci0KLWNsYXNzIE1peGVkVXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Ci19OwotCi1URVNUX0YoTWl4ZWRVcFRlc3RDYXNlVGVzdCwgRmlyc3RUZXN0RnJvbU5h
bWVzcGFjZUZvbykge30KLVRFU1RfRihNaXhlZFVwVGVzdENhc2VUZXN0LCBTZWNvbmRUZXN0RnJv
bU5hbWVzcGFjZUZvbykge30KLQotY2xhc3MgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFt
ZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1URVNUX0YoTWl4ZWRVcFRlc3RD
YXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCi0gICAgICAgVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFt
ZVNob3VsZEZhaWwpIHt9Ci0KLX0gIC8vIG5hbWVzcGFjZSBmb28KLQotbmFtZXNwYWNlIGJhciB7
Ci0KLWNsYXNzIE1peGVkVXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19
OwotCi0vLyBUaGUgZm9sbG93aW5nIHR3byB0ZXN0cyBhcmUgZXhwZWN0ZWQgdG8gZmFpbC4gIFdl
IHJlbHkgb24gdGhlCi0vLyBnb2xkZW4gZmlsZSB0byBjaGVjayB0aGF0IEdvb2dsZSBUZXN0IGdl
bmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KLVRFU1RfRihNaXhlZFVwVGVzdENhc2VU
ZXN0LCBUaGlzU2hvdWxkRmFpbCkge30KLVRFU1RfRihNaXhlZFVwVGVzdENhc2VUZXN0LCBUaGlz
U2hvdWxkRmFpbFRvbykge30KLQotY2xhc3MgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFt
ZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi0vLyBFeHBlY3RlZCB0byBmYWls
LiAgV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gY2hlY2sgdGhhdCBHb29nbGUgVGVzdAot
Ly8gZ2VuZXJhdGVzIHRoZSByaWdodCBlcnJvciBtZXNzYWdlLgotVEVTVF9GKE1peGVkVXBUZXN0
Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAotICAgICAgIFRoZVNlY29uZFRlc3RXaXRoVGhpc05h
bWVTaG91bGRGYWlsKSB7fQotCi19ICAvLyBuYW1lc3BhY2UgYmFyCi0KLS8vIFRoZSBmb2xsb3dp
bmcgdHdvIHRlc3QgY2FzZXMgdmVyaWZ5IHRoYXQgR29vZ2xlIFRlc3QgY2F0Y2hlcyB0aGUgdXNl
cgotLy8gZXJyb3Igb2YgbWl4aW5nIFRFU1QgYW5kIFRFU1RfRiBpbiB0aGUgc2FtZSB0ZXN0IGNh
c2UuICBUaGUgZmlyc3QKLS8vIHRlc3QgY2FzZSBjaGVja3MgdGhlIHNjZW5hcmlvIHdoZXJlIFRF
U1RfRiBhcHBlYXJzIGJlZm9yZSBURVNULCBhbmQKLS8vIHRoZSBzZWNvbmQgb25lIGNoZWNrcyB3
aGVyZSBURVNUIGFwcGVhcnMgYmVmb3JlIFRFU1RfRi4KLQotY2xhc3MgVEVTVF9GX2JlZm9yZV9U
RVNUX2luX3NhbWVfdGVzdF9jYXNlIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVEVT
VF9GKFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSwgRGVmaW5lZFVzaW5nVEVT
VF9GKSB7fQotCi0vLyBFeHBlY3RlZCB0byBmYWlsLiAgV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZp
bGUgdG8gY2hlY2sgdGhhdCBHb29nbGUgVGVzdAotLy8gZ2VuZXJhdGVzIHRoZSByaWdodCBlcnJv
ciBtZXNzYWdlLgotVEVTVChURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UsIERl
ZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsKSB7fQotCi1jbGFzcyBURVNUX2JlZm9yZV9URVNU
X0ZfaW5fc2FtZV90ZXN0X2Nhc2UgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1URVNU
KFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZSwgRGVmaW5lZFVzaW5nVEVTVCkg
e30KLQotLy8gRXhwZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRv
IGNoZWNrIHRoYXQgR29vZ2xlIFRlc3QKLS8vIGdlbmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVz
c2FnZS4KLVRFU1RfRihURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UsIERlZmlu
ZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwpIHsKLX0KLQotLy8gVXNlZCBmb3IgdGVzdGluZyBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGFuZCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpLgotaW50
IGdsb2JhbF9pbnRlZ2VyID0gMDsKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSgpIGNhbiByZWZlcmVuY2UgZ2xvYmFsIHZhcmlhYmxlcy4KLVRFU1QoRXhwZWN0Tm9uZmF0
YWxGYWlsdXJlVGVzdCwgQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzKSB7Ci0gIGdsb2JhbF9p
bnRlZ2VyID0gMDsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIEVYUEVDVF9FUSgx
LCBnbG9iYWxfaW50ZWdlcikgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7Ci0gIH0s
ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVuY2UgbG9jYWwgdmFyaWFibGVzCi0vLyAo
c3RhdGljIG9yIG5vdCkuCi1URVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIENhblJlZmVy
ZW5jZUxvY2FsVmFyaWFibGVzKSB7Ci0gIGludCBtID0gMDsKLSAgc3RhdGljIGludCBuOwotICBu
ID0gMTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIEVYUEVDVF9FUShtLCBuKSA8
PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKLSAgfSwgIkV4cGVjdGVkIG5vbi1mYXRh
bCBmYWlsdXJlLiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KCkgc3VjY2VlZHMgd2hlbiB0aGVyZSBpcyBleGFjdGx5Ci0vLyBvbmUgbm9uLWZhdGFsIGZhaWx1
cmUgYW5kIG5vIGZhdGFsIGZhaWx1cmUuCi1URVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qs
IFN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoewotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBm
YWlsdXJlLiI7Ci0gIH0sICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgaXMg
bm8KLS8vIG5vbi1mYXRhbCBmYWlsdXJlLgotVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LCBGYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUpIHsKLSAgcHJpbnRmKCIoZXhwZWN0
aW5nIGEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gIH0sICIi
KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdo
ZW4gdGhlcmUgYXJlIHR3bwotLy8gbm9uLWZhdGFsIGZhaWx1cmVzLgotVEVTVChFeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMpIHsK
LSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRSh7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUgMS4iOwotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
IDIuIjsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBvbmUgZmF0YWwKLS8vIGZhaWx1cmUuCi1URVNUKEV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUp
IHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSh7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7Ci0g
IH0sICIiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZh
aWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWluZwotLy8gdGVzdGVkIHJldHVybnMuCi1URVNUKEV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblN0YXRlbWVudFJldHVybnMpIHsKLSAg
cHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSh7Ci0gICAgcmV0dXJuOwotICB9LCAiIik7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfRVhDRVBU
SU9OUwotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hl
biB0aGUgc3RhdGVtZW50IGJlaW5nCi0vLyB0ZXN0ZWQgdGhyb3dzLgotVEVTVChFeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MpIHsKLSAgcHJpbnRmKCIo
ZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICB0cnkgewotICAgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKHsKLSAgICAgIHRocm93IDA7Ci0gICAgfSwgIiIpOwotICB9IGNhdGNoKGludCkgeyAg
Ly8gTk9MSU5UCi0gIH0KLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUwotCi0v
LyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgY2FuIHJlZmVyZW5jZSBnbG9iYWwg
dmFyaWFibGVzLgotVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBDYW5SZWZlcmVuY2VHbG9i
YWxWYXJpYWJsZXMpIHsKLSAgZ2xvYmFsX2ludGVnZXIgPSAwOwotICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRSh7Ci0gICAgQVNTRVJUX0VRKDEsIGdsb2JhbF9pbnRlZ2VyKSA8PCAiRXhwZWN0ZWQgZmF0
YWwgZmFpbHVyZS4iOwotICB9LCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVuY2UgbG9jYWwgc3Rh
dGljCi0vLyB2YXJpYWJsZXMuCi1URVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIENhblJlZmVy
ZW5jZUxvY2FsU3RhdGljVmFyaWFibGVzKSB7Ci0gIHN0YXRpYyBpbnQgbjsKLSAgbiA9IDE7Ci0g
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKLSAgICBBU1NFUlRfRVEoMCwgbikgPDwgIkV4cGVjdGVk
IGZhdGFsIGZhaWx1cmUuIjsKLSAgfSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBzdWNjZWVkcyB3aGVuIHRoZXJl
IGlzIGV4YWN0bHkKLS8vIG9uZSBmYXRhbCBmYWlsdXJlIGFuZCBubyBub24tZmF0YWwgZmFpbHVy
ZS4KLVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgU3VjY2VlZHNXaGVuVGhlcmVJc09uZUZh
dGFsRmFpbHVyZSkgewotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0gICAgRkFJTCgpIDw8ICJF
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7Ci0gIH0sICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIp
OwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0
aGVyZSBpcyBubyBmYXRhbAotLy8gZmFpbHVyZS4KLVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVz
dCwgRmFpbHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlKSB7Ci0gIHByaW50ZigiKGV4cGVjdGlu
ZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICB9LCAiIik7Ci19
Ci0KLS8vIEEgaGVscGVyIGZvciBnZW5lcmF0aW5nIGEgZmF0YWwgZmFpbHVyZS4KLXZvaWQgRmF0
YWxGYWlsdXJlKCkgewotICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKLX0K
LQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUg
YXJlIHR3bwotLy8gZmF0YWwgZmFpbHVyZXMuCi1URVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qs
IEZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcykgewotICBwcmludGYoIihleHBlY3Rp
bmcgYSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKLSAgICBGYXRhbEZh
aWx1cmUoKTsKLSAgICBGYXRhbEZhaWx1cmUoKTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyB0
aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBvbmUgbm9uLWZh
dGFsCi0vLyBmYWlsdXJlLgotVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5U
aGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1
cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICAgIEFERF9GQUlMVVJFKCkgPDwg
IkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWlu
ZwotLy8gdGVzdGVkIHJldHVybnMuCi1URVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEZhaWxz
V2hlblN0YXRlbWVudFJldHVybnMpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlc
biIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0gICAgcmV0dXJuOwotICB9LCAiIik7Ci19
Ci0KLSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRB
TF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGUgc3RhdGVtZW50IGJlaW5nCi0vLyB0ZXN0ZWQgdGhy
b3dzLgotVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRUaHJv
d3MpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICB0cnkgewotICAg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKLSAgICAgIHRocm93IDA7Ci0gICAgfSwgIiIpOwotICB9
IGNhdGNoKGludCkgeyAgLy8gTk9MSU5UCi0gIH0KLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNf
RVhDRVBUSU9OUwotCi0vLyBUaGlzICNpZmRlZiBibG9jayB0ZXN0cyB0aGUgb3V0cHV0IG9mIHR5
cGVkIHRlc3RzLgotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUCi0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotY2xhc3MgVHlwZWRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVFlQ
RURfVEVTVF9DQVNFKFR5cGVkVGVzdCwgdGVzdGluZzo6VHlwZXM8aW50Pik7Ci0KLVRZUEVEX1RF
U1QoVHlwZWRUZXN0LCBTdWNjZXNzKSB7Ci0gIEVYUEVDVF9FUSgwLCBUeXBlUGFyYW0oKSk7Ci19
Ci0KLVRZUEVEX1RFU1QoVHlwZWRUZXN0LCBGYWlsdXJlKSB7Ci0gIEVYUEVDVF9FUSgxLCBUeXBl
UGFyYW0oKSkgPDwgIkV4cGVjdGVkIGZhaWx1cmUiOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hB
U19UWVBFRF9URVNUCi0KLS8vIFRoaXMgI2lmZGVmIGJsb2NrIHRlc3RzIHRoZSBvdXRwdXQgb2Yg
dHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUX1AKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBUeXBlZFRlc3RQIDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgewotfTsKLQotVFlQRURfVEVTVF9DQVNFX1AoVHlwZWRUZXN0UCk7Ci0KLVRZUEVEX1RF
U1RfUChUeXBlZFRlc3RQLCBTdWNjZXNzKSB7Ci0gIEVYUEVDVF9FUSgwVSwgVHlwZVBhcmFtKCkp
OwotfQotCi1UWVBFRF9URVNUX1AoVHlwZWRUZXN0UCwgRmFpbHVyZSkgewotICBFWFBFQ1RfRVEo
MVUsIFR5cGVQYXJhbSgpKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7Ci19Ci0KLVJFR0lTVEVSX1RZ
UEVEX1RFU1RfQ0FTRV9QKFR5cGVkVGVzdFAsIFN1Y2Nlc3MsIEZhaWx1cmUpOwotCi10eXBlZGVm
IHRlc3Rpbmc6OlR5cGVzPHVuc2lnbmVkIGNoYXIsIHVuc2lnbmVkIGludD4gVW5zaWduZWRUeXBl
czsKLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFVuc2lnbmVkLCBUeXBlZFRlc3RQLCBV
bnNpZ25lZFR5cGVzKTsKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KLSNp
ZiBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi0vLyBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmlsZSB0
byB2ZXJpZnkgdGhhdCB0ZXN0cyB3aG9zZSB0ZXN0IGNhc2UKLS8vIG5hbWUgZW5kcyB3aXRoIERl
YXRoVGVzdCBhcmUgcnVuIGZpcnN0LgotCi1URVNUKEFEZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0
KSB7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAotCi0vLyBXZSByZWx5IG9uIHRoZSBn
b2xkZW4gZmlsZSB0byB2ZXJpZnkgdGhhdCB0eXBlZCB0ZXN0cyB3aG9zZSB0ZXN0Ci0vLyBjYXNl
IG5hbWUgZW5kcyB3aXRoIERlYXRoVGVzdCBhcmUgcnVuIGZpcnN0LgotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KLWNsYXNzIEFUeXBlZERlYXRoVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
LX07Ci0KLXR5cGVkZWYgdGVzdGluZzo6VHlwZXM8aW50LCBkb3VibGU+IE51bWVyaWNUeXBlczsK
LVRZUEVEX1RFU1RfQ0FTRShBVHlwZWREZWF0aFRlc3QsIE51bWVyaWNUeXBlcyk7Ci0KLVRZUEVE
X1RFU1QoQVR5cGVkRGVhdGhUZXN0LCBTaG91bGRSdW5GaXJzdCkgewotfQotCi0jZW5kaWYgIC8v
IEdURVNUX0hBU19UWVBFRF9URVNUCi0KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KLQot
Ly8gV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gdmVyaWZ5IHRoYXQgdHlwZS1wYXJhbWV0
ZXJpemVkIHRlc3RzCi0vLyB3aG9zZSB0ZXN0IGNhc2UgbmFtZSBlbmRzIHdpdGggRGVhdGhUZXN0
IGFyZSBydW4gZmlyc3QuCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgQVR5cGVQYXJh
bURlYXRoVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FT
RV9QKEFUeXBlUGFyYW1EZWF0aFRlc3QpOwotCi1UWVBFRF9URVNUX1AoQVR5cGVQYXJhbURlYXRo
VGVzdCwgU2hvdWxkUnVuRmlyc3QpIHsKLX0KLQotUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1Ao
QVR5cGVQYXJhbURlYXRoVGVzdCwgU2hvdWxkUnVuRmlyc3QpOwotCi1JTlNUQU5USUFURV9UWVBF
RF9URVNUX0NBU0VfUChNeSwgQVR5cGVQYXJhbURlYXRoVGVzdCwgTnVtZXJpY1R5cGVzKTsKLQot
I2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X0RFQVRIX1RFU1QKLQotLy8gVGVzdHMgdmFyaW91cyBmYWlsdXJlIGNvbmRpdGlvbnMgb2YKLS8v
IEVYUEVDVF97LE5PTn1GQVRBTF9GQUlMVVJFeyxfT05fQUxMX1RIUkVBRFN9LgotY2xhc3MgRXhw
ZWN0RmFpbHVyZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHVibGljOiAgLy8gTXVz
dCBiZSBwdWJsaWMgYW5kIG5vdCBwcm90ZWN0ZWQgZHVlIHRvIGEgYnVnIGluIGcrKyAzLjQuMi4K
LSAgZW51bSBGYWlsdXJlTW9kZSB7Ci0gICAgRkFUQUxfRkFJTFVSRSwKLSAgICBOT05GQVRBTF9G
QUlMVVJFCi0gIH07Ci0gIHN0YXRpYyB2b2lkIEFkZEZhaWx1cmUoRmFpbHVyZU1vZGUgZmFpbHVy
ZSkgewotICAgIGlmIChmYWlsdXJlID09IEZBVEFMX0ZBSUxVUkUpIHsKLSAgICAgIEZBSUwoKSA8
PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOwotICAgIH0gZWxzZSB7Ci0gICAgICBBRERfRkFJ
TFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOwotICAgIH0KLSAgfQotfTsK
LQotVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3RGYXRhbEZhaWx1cmUpIHsKLSAgLy8g
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0IHN1Y2NlZWRzLgotICBwcmludGYoIihleHBlY3Rp
bmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKFNVQ0NFRUQoKSwgIkV4
cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Ci0gIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1
dCBnb3QgYSBub24tZmF0YWwgZmFpbHVyZS4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVy
ZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxV
UkUpLCAiRXhwZWN0ZWQgbm9uLWZhdGFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgImZhaWx1
cmUuIik7Ci0gIC8vIFdyb25nIG1lc3NhZ2UuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1
cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJF
KSwgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICJl
eHBlY3RlZC4iKTsKLX0KLQotVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3ROb25GYXRh
bEZhaWx1cmUpIHsKLSAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVk
cy4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShTVUNDRUVEKCksICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKLSAg
Ly8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBmYXRhbCBmYWlsdXJlLgot
ICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJl
LiIpOwotICAvLyBXcm9uZyBtZXNzYWdlLgotICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJl
KVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJ
TFVSRSksICJTb21lIG90aGVyIG5vbi1mYXRhbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICJmYWlsdXJlLiIpOwotfQotCi0jaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQotCi1jbGFzcyBFeHBl
Y3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0IDogcHVibGljIEV4cGVjdEZhaWx1cmVUZXN0IHsKLSBw
cm90ZWN0ZWQ6Ci0gIHN0YXRpYyB2b2lkIEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZhaWx1cmVN
b2RlIGZhaWx1cmUpIHsKLSAgICBUaHJlYWRXaXRoUGFyYW08RmFpbHVyZU1vZGU+IHRocmVhZCgm
QWRkRmFpbHVyZSwgZmFpbHVyZSwgTlVMTCk7Ci0gICAgdGhyZWFkLkpvaW4oKTsKLSAgfQotfTsK
LQotVEVTVF9GKEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QsIEV4cGVjdEZhdGFsRmFpbHVy
ZSkgewotICAvLyBXZSBvbmx5IGludGVyY2VwdCB0aGUgY3VycmVudCB0aHJlYWQuCi0gIHByaW50
ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFk
ZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZBVEFMX0ZBSUxVUkUpLAotICAgICAgICAgICAgICAgICAg
ICAgICAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotVEVTVF9GKEV4cGVjdEZhaWx1
cmVXaXRoVGhyZWFkc1Rlc3QsIEV4cGVjdE5vbkZhdGFsRmFpbHVyZSkgewotICAvLyBXZSBvbmx5
IGludGVyY2VwdCB0aGUgY3VycmVudCB0aHJlYWQuCi0gIHByaW50ZigiKGV4cGVjdGluZyAyIGZh
aWx1cmVzKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmVJbk90aGVy
VGhyZWFkKE5PTkZBVEFMX0ZBSUxVUkUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhw
ZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7Ci19Ci0KLXR5cGVkZWYgRXhwZWN0RmFpbHVyZVdp
dGhUaHJlYWRzVGVzdCBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3Q7Ci0KLS8v
IFRlc3RzIHRoYXQgdGhlIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyIG9ubHkgY2F0
Y2hlcyBmYWlsdXJlcyBmcm9tCi0vLyB0aGUgY3VycmVudCB0aHJlYWQgaWYgaXQgaXMgaW5zdGFu
dGlhdGVkIHdpdGggSU5URVJDRVBUX09OTFlfQ1VSUkVOVF9USFJFQUQuCi1URVNUX0YoU2NvcGVk
RmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LCBJbnRlcmNlcHRPbmx5Q3VycmVudFRocmVh
ZCkgewotICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOwotICBUZXN0UGFydFJl
c3VsdEFycmF5IHJlc3VsdHM7Ci0gIHsKLSAgICBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBv
cnRlciByZXBvcnRlcigKLSAgICAgICAgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6
OklOVEVSQ0VQVF9PTkxZX0NVUlJFTlRfVEhSRUFELAotICAgICAgICAmcmVzdWx0cyk7Ci0gICAg
QWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoRkFUQUxfRkFJTFVSRSk7Ci0gICAgQWRkRmFpbHVyZUlu
T3RoZXJUaHJlYWQoTk9ORkFUQUxfRkFJTFVSRSk7Ci0gIH0KLSAgLy8gVGhlIHR3byBmYWlsdXJl
cyBzaG91bGQgbm90IGhhdmUgYmVlbiBpbnRlcmNlcHRlZC4KLSAgRVhQRUNUX0VRKDAsIHJlc3Vs
dHMuc2l6ZSgpKSA8PCAiVGhpcyBzaG91bGRuJ3QgZmFpbC4iOwotfQotCi0jZW5kaWYgIC8vIEdU
RVNUX0lTX1RIUkVBRFNBRkUKLQotVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3RGYXRh
bEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKLSAgLy8gRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0
IHN1Y2NlZWRzLgotICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVD
VF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKFNVQ0NFRUQoKSwgIkV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuIik7Ci0gIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBub24t
ZmF0YWwgZmFpbHVyZS4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlKE5PTkZBVEFMX0ZB
SUxVUkUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQg
bm9uLWZhdGFsIGZhaWx1cmUuIik7Ci0gIC8vIFdyb25nIG1lc3NhZ2UuCi0gIHByaW50ZigiKGV4
cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RI
UkVBRFMoQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJFKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBlY3RlZC4iKTsKLX0K
LQotVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRo
cmVhZHMpIHsKLSAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4K
LSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRV9PTl9BTExfVEhSRUFEUyhTVUNDRUVEKCksICJFeHBlY3RlZCBub24tZmF0YWwgIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbHVyZS4iKTsKLSAg
Ly8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBmYXRhbCBmYWlsdXJlLgot
ICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJl
LiIpOwotICAvLyBXcm9uZyBtZXNzYWdlLgotICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJl
KVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1
cmUoTk9ORkFUQUxfRkFJTFVSRSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJTb21lIG90aGVyIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwotfQotCi0KLS8vIFR3byB0
ZXN0IGVudmlyb25tZW50cyBmb3IgdGVzdGluZyB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJv
bm1lbnQoKS4KLQotY2xhc3MgRm9vRW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6RW52aXJv
bm1lbnQgewotIHB1YmxpYzoKLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIHByaW50Zigi
JXMiLCAiRm9vRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLlxuIik7Ci0gIH0KLQotICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgcHJpbnRmKCIlcyIsICJGb29FbnZpcm9ubWVudDo6
VGVhckRvd24oKSBjYWxsZWQuXG4iKTsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZh
aWx1cmUuIjsKLSAgfQotfTsKLQotY2xhc3MgQmFyRW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGlu
Zzo6RW52aXJvbm1lbnQgewotIHB1YmxpYzoKLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAg
IHByaW50ZigiJXMiLCAiQmFyRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLlxuIik7Ci0gIH0K
LQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgcHJpbnRmKCIlcyIsICJCYXJFbnZp
cm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuXG4iKTsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJF
eHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOwotICB9Ci19OwotCi1HVEVTVF9ERUZJTkVfYm9v
bF8oaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzLCBmYWxzZSwKLSAg
ICAgICAgICAgICAgICAgICAiVGhpcyBmbGFnIGNhdXNlcyB0aGUgcHJvZ3JhbSB0byBza2lwIHRl
c3QgZW52aXJvbm1lbnQgIgotICAgICAgICAgICAgICAgICAgICJ0ZXN0cyBhbmQgYWQgaG9jIHRl
c3RzLiIpOwotCi0vLyBUaGUgbWFpbiBmdW5jdGlvbi4KLS8vCi0vLyBUaGUgaWRlYSBpcyB0byB1
c2UgR29vZ2xlIFRlc3QgdG8gcnVuIGFsbCB0aGUgdGVzdHMgd2UgaGF2ZSBkZWZpbmVkIChzb21l
Ci0vLyBvZiB0aGVtIGFyZSBpbnRlbmRlZCB0byBmYWlsKSwgYW5kIHRoZW4gY29tcGFyZSB0aGUg
dGVzdCByZXN1bHRzCi0vLyB3aXRoIHRoZSAiZ29sZGVuIiBmaWxlLgotaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIgKiphcmd2KSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUcocHJpbnRfdGltZSkgPSBm
YWxzZTsKLQotICAvLyBXZSBqdXN0IHJ1biB0aGUgdGVzdHMsIGtub3dpbmcgc29tZSBvZiB0aGVt
IGFyZSBpbnRlbmRlZCB0byBmYWlsLgotICAvLyBXZSB3aWxsIHVzZSBhIHNlcGFyYXRlIFB5dGhv
biBzY3JpcHQgdG8gY29tcGFyZSB0aGUgb3V0cHV0IG9mCi0gIC8vIHRoaXMgcHJvZ3JhbSB3aXRo
IHRoZSBnb2xkZW4gZmlsZS4KLQotICAvLyBJdCdzIGhhcmQgdG8gdGVzdCBJbml0R29vZ2xlVGVz
dCgpIGRpcmVjdGx5LCBhcyBpdCBoYXMgbWFueQotICAvLyBnbG9iYWwgc2lkZSBlZmZlY3RzLiAg
VGhlIGZvbGxvd2luZyBsaW5lIHNlcnZlcyBhcyBhIHNhbml0eSB0ZXN0Ci0gIC8vIGZvciBpdC4K
LSAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotICBpZiAoYXJnYyA+PSAy
ICYmCi0gICAgICBTdHJpbmcoYXJndlsxXSkgPT0gIi0tZ3Rlc3RfaW50ZXJuYWxfc2tpcF9lbnZp
cm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzIikKLSAgICBHVEVTVF9GTEFHKGludGVybmFsX3NraXBf
ZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cykgPSB0cnVlOwotCi0jaWYgR1RFU1RfSEFTX0RF
QVRIX1RFU1QKLSAgaWYgKHRlc3Rpbmc6OmludGVybmFsOjpHVEVTVF9GTEFHKGludGVybmFsX3J1
bl9kZWF0aF90ZXN0KSAhPSAiIikgewotICAgIC8vIFNraXAgdGhlIHVzdWFsIG91dHB1dCBjYXB0
dXJpbmcgaWYgd2UncmUgcnVubmluZyBhcyB0aGUgY2hpbGQKLSAgICAvLyBwcm9jZXNzIG9mIGFu
IHRocmVhZHNhZmUtc3R5bGUgZGVhdGggdGVzdC4KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gICAg
cG9zaXg6OkZSZW9wZW4oIm51bDoiLCAidyIsIHN0ZG91dCk7Ci0jZWxzZQotICAgIHBvc2l4OjpG
UmVvcGVuKCIvZGV2L251bGwiLCAidyIsIHN0ZG91dCk7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1MKLSAgICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotICB9Ci0jZW5kaWYgIC8vIEdURVNU
X0hBU19ERUFUSF9URVNUCi0KLSAgaWYgKEdURVNUX0ZMQUcoaW50ZXJuYWxfc2tpcF9lbnZpcm9u
bWVudF9hbmRfYWRfaG9jX3Rlc3RzKSkKLSAgICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotCi0g
IC8vIFJlZ2lzdGVycyB0d28gZ2xvYmFsIHRlc3QgZW52aXJvbm1lbnRzLgotICAvLyBUaGUgZ29s
ZGVuIGZpbGUgdmVyaWZpZXMgdGhhdCB0aGV5IGFyZSBzZXQgdXAgaW4gdGhlIG9yZGVyIHRoZXkK
LSAgLy8gYXJlIHJlZ2lzdGVyZWQsIGFuZCB0b3JuIGRvd24gaW4gdGhlIHJldmVyc2Ugb3JkZXIu
Ci0gIHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgRm9vRW52aXJvbm1lbnQp
OwotICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEJhckVudmlyb25tZW50
KTsKLQotICByZXR1cm4gUnVuQWxsVGVzdHMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzYwNDM3YWNhYTc2NDBkZmJmM2RiMjgz
Y2YxZDE1MDM0YzA2MjJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29s
ZGVuX2xpbi50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2OTYgKzAsMCBAQAotVGhlIG5vbi10ZXN0
IHBhcnQgb2YgdGhlIGNvZGUgaXMgZXhwZWN0ZWQgdG8gaGF2ZSAyIGZhaWx1cmVzLgotCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IGZhbHNlCi0gIEFjdHVhbDog
ZmFsc2UKLUV4cGVjdGVkOiB0cnVlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQot
VmFsdWUgb2Y6IDMKLUV4cGVjdGVkOiAyCi0bWzA7MzJtWz09PT09PT09PT1dIBtbbVJ1bm5pbmcg
NjAgdGVzdHMgZnJvbSAyNSB0ZXN0IGNhc2VzLgotG1swOzMybVstLS0tLS0tLS0tXSAbW21HbG9i
YWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCi1Gb29FbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxs
ZWQuCi1CYXJFbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuCi0bWzA7MzJtWy0tLS0tLS0tLS1d
IBtbbTEgdGVzdCBmcm9tIEFEZWF0aFRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttQURlYXRo
VGVzdC5TaG91bGRSdW5GaXJzdAotG1swOzMybVsgICAgICAgT0sgXSAbW21BRGVhdGhUZXN0LlNo
b3VsZFJ1bkZpcnN0Ci0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEFUeXBlZERl
YXRoVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
QVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAgIE9LIF0gG1tt
QVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1tt
MSB0ZXN0IGZyb20gQVR5cGVkRGVhdGhUZXN0LzEsIHdoZXJlIFR5cGVQYXJhbSA9IGRvdWJsZQot
G1swOzMybVsgUlVOICAgICAgXSAbW21BVHlwZWREZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAot
G1swOzMybVsgICAgICAgT0sgXSAbW21BVHlwZWREZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAot
G1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBNeS9BVHlwZVBhcmFtRGVhdGhUZXN0
LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGludAotG1swOzMybVsgUlVOICAgICAgXSAbW21NeS9BVHlw
ZVBhcmFtRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAgIE9LIF0gG1tt
TXkvQVR5cGVQYXJhbURlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJtWy0tLS0tLS0t
LS1dIBtbbTEgdGVzdCBmcm9tIE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMSwgd2hlcmUgVHlwZVBh
cmFtID0gZG91YmxlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU15L0FUeXBlUGFyYW1EZWF0aFRl
c3QvMS5TaG91bGRSdW5GaXJzdAotG1swOzMybVsgICAgICAgT0sgXSAbW21NeS9BVHlwZVBhcmFt
RGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0
cyBmcm9tIFBhc3NpbmdUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVBhc3NpbmdUZXN0LlBh
c3NpbmdUZXN0MQotG1swOzMybVsgICAgICAgT0sgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5nVGVz
dDEKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi0bWzA7
MzJtWyAgICAgICBPSyBdIBtbbVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgotG1swOzMybVstLS0t
LS0tLS0tXSAbW20zIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdAotG1swOzMybVsgUlVOICAg
ICAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotKGV4cGVj
dGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IEZhaWx1cmUKLVZhbHVlIG9mOiB4Ci0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLRtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRp
bmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJ
bk5lc3RlZFN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUg
MSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogeAotICBBY3R1
YWw6IDIKLUV4cGVjdGVkOiAxCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRl
c3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi0bWzA7MzJtWyBSVU4gICAgICBdIBtb
bUZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5n
IGEgZmFpbHVyZSBvbiBmYWxzZSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1W
YWx1ZSBvZjogZmFsc2UKLSAgQWN0dWFsOiBmYWxzZQotRXhwZWN0ZWQ6IHRydWUKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRp
bmUKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gTG9nZ2luZ1Rlc3QKLRtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2Vy
dGlvbnMKLShleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKQotaSA9PSAwCi1p
ID09IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogKDMpID49
IChhW2ldKSwgYWN0dWFsOiAzIHZzIDkKLWkgPT0gMgotaSA9PSAzCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA2
Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUxvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdB
bmRBc3NlcnRpb25zCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTYgdGVzdHMgZnJvbSBTQ09QRURf
VFJBQ0VUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuT2JleXNT
Y29wZXMKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1
cmUKLUZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkbid0IGhhdmUg
YSB0cmFjZS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLVRoaXMg
ZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBoYXZlIGEgdHJhY2UuCi1Hb29nbGUgVGVz
dCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBFeHBlY3RlZCB0cmFjZQotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVj
dGVkLCBhbmQgc2hvdWxkbid0IGhhdmUgYSB0cmFjZS4KLRtbMDszMW1bICBGQUlMRUQgIF0gG1tt
U0NPUEVEX1RSQUNFVGVzdC5PYmV5c1Njb3BlcwotG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09Q
RURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogbgotICBBY3R1YWw6IDEKLUV4cGVjdGVk
OiAyCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBpID0gMQot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiBuCi0gIEFjdHVhbDog
MgotRXhwZWN0ZWQ6IDEKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IGkgPSAyCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJ
bkxvb3AKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vi
cm91dGluZQotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFp
bHVyZQotVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAxCi1FeHBlY3RlZDogMgotR29vZ2xlIFRlc3Qg
dHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogbiA9IDEKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogbgotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1H
b29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBuID0gMgotG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJyb3V0aW5lCi0bWzA7
MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLShleHBlY3Rl
ZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiBu
Ci0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IG4gPSAyCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogCi0bWzA7MzFt
WyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLRtbMDszMm1bIFJV
TiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZVJlcGVhdGVkCi0oZXhwZWN0ZWQgdG8g
ZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLVRoaXMgZmFp
bHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEuCi1Hb29n
bGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBBCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFu
ZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBIGFuZCBCLgotR29vZ2xlIFRlc3QgdHJhY2U6
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEEK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLVRoaXMgZmFpbHVyZSBp
cyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEsIEIsIGFuZCBDLgot
R29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQwotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IEIKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBBCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQs
IGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQgRC4KLUdvb2dsZSBUZXN0
IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEQKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBCCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQQotG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
U0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0NvbmN1cnJlbnRseQotKGV4cGVjdGluZyA2IGZhaWx1cmVz
KQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFp
bHVyZSAjMSAoaW4gdGhyZWFkIEIsIG9ubHkgdHJhY2UgQiBhbGl2ZSkuCi1Hb29nbGUgVGVzdCB0
cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBUcmFjZSBCCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyIChpbiB0aHJlYWQg
QSwgdHJhY2UgQSAmIEIgYm90aCBhbGl2ZSkuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBUcmFjZSBBCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVy
ZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzIChpbiB0aHJlYWQgQiwgdHJhY2UgQSAmIEIg
Ym90aCBhbGl2ZSkuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBUcmFjZSBCCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBl
Y3RlZCBmYWlsdXJlICM0IChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBBIGFsaXZlKS4KLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzUg
KGluIHRocmVhZCBBLCBvbmx5IHRyYWNlIEEgYWxpdmUpLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogVHJhY2UgQQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjNiAoaW4gdGhyZWFkIEEsIG5vIHRy
YWNlIGFsaXZlKS4KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jr
c0NvbmN1cnJlbnRseQotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBOb25GYXRh
bEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
Tm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVj
dG9yCi0oZXhwZWN0aW5nIDUgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFp
bHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGMn
dG9yLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQg
ZmFpbHVyZSAjMiwgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGJvZHkuCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICM0LCBp
biBUZWFyRG93bi4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4
cGVjdGVkIGZhaWx1cmUgIzUsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi0bWzA7MzFtWyAg
RkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWls
dXJlSW5Db25zdHJ1Y3RvcgotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBGYXRh
bEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
RmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9y
Ci0oZXhwZWN0aW5nIDIgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVy
ZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGMndG9y
LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFp
bHVyZSAjMiwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVj
dG9yCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIE5vbkZhdGFsRmFpbHVyZUlu
U2V0VXBUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluU2V0VXBU
ZXN0LkZhaWx1cmVJblNldFVwCi0oZXhwZWN0aW5nIDQgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRV
cCgpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQg
ZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZnVuY3Rpb24uCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzLCBpbiBUZWFyRG93bigpLgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVy
ZSAjNCwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLRtbMDszMW1bICBGQUlMRUQgIF0gG1tt
Tm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKLRtbMDszMm1bLS0tLS0t
LS0tLV0gG1ttMSB0ZXN0IGZyb20gRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QKLRtbMDszMm1bIFJV
TiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKLShleHBl
Y3RpbmcgMyBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWls
ZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigp
LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFp
bHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKLRtbMDszMm1bLS0tLS0t
LS0tLV0gG1ttNCB0ZXN0cyBmcm9tIE1peGVkVXBUZXN0Q2FzZVRlc3QKLRtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5GaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vCi0b
WzA7MzJtWyAgICAgICBPSyBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuRmlyc3RUZXN0RnJvbU5h
bWVzcGFjZUZvbwotG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlNl
Y29uZFRlc3RGcm9tTmFtZXNwYWNlRm9vCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbU1peGVkVXBU
ZXN0Q2FzZVRlc3QuU2Vjb25kVGVzdEZyb21OYW1lc3BhY2VGb28KLRtbMDszMm1bIFJVTiAgICAg
IF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogRmFp
bHVyZQotRmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRo
ZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRV
cFRlc3RDYXNlVGVzdCwKLXlvdSBkZWZpbmVkIHRlc3QgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZv
byBhbmQgdGVzdCBUaGlzU2hvdWxkRmFpbAotdXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1
cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBlbiBpZgotdGhlIHR3byBjbGFzc2VzIGFyZSBmcm9t
IGRpZmZlcmVudCBuYW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCi11bml0cyBhbmQgaGF2ZSB0aGUg
c2FtZSBuYW1lLiAgWW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25lCi1vZiB0aGUgY2xhc3Nl
cyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMuCi0bWzA7MzFtWyAg
RkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwKLRtbMDszMm1b
IFJVTiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbFRvbwotZ3Rl
c3QuY2M6IzogRmFpbHVyZQotRmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNl
IG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0
IGNhc2UgTWl4ZWRVcFRlc3RDYXNlVGVzdCwKLXlvdSBkZWZpbmVkIHRlc3QgRmlyc3RUZXN0RnJv
bU5hbWVzcGFjZUZvbyBhbmQgdGVzdCBUaGlzU2hvdWxkRmFpbFRvbwotdXNpbmcgdHdvIGRpZmZl
cmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBlbiBpZgotdGhlIHR3byBj
bGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCi11bml0
cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAgWW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25l
Ci1vZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2Fz
ZXMuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3Vs
ZEZhaWxUb28KLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIE1peGVkVXBUZXN0
Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBU
ZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91
bGRGYWlsCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVz
dE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCi0bWzA7MzJtWyBS
VU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29u
ZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1GYWlsZWQK
LUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBm
aXh0dXJlCi1jbGFzcy4gIEhvd2V2ZXIsIGluIHRlc3QgY2FzZSBNaXhlZFVwVGVzdENhc2VXaXRo
U2FtZVRlc3ROYW1lVGVzdCwKLXlvdSBkZWZpbmVkIHRlc3QgVGhlU2Vjb25kVGVzdFdpdGhUaGlz
TmFtZVNob3VsZEZhaWwgYW5kIHRlc3QgVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZh
aWwKLXVzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBo
YXBwZW4gaWYKLXRoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBv
ciB0cmFuc2xhdGlvbgotdW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQg
cHJvYmFibHkgcmVuYW1lIG9uZQotb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRv
IGRpZmZlcmVudCB0ZXN0IGNhc2VzLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVz
dENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxk
RmFpbAotG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVEVTVF9GX2JlZm9yZV9U
RVNUX2luX3NhbWVfdGVzdF9jYXNlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVRFU1RfRl9iZWZv
cmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0YKLRtbMDszMm1bICAg
ICAgIE9LIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRV
c2luZ1RFU1RfRgotG1swOzMybVsgUlVOICAgICAgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5f
c2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwKLWd0ZXN0LmNjOiM6
IEZhaWx1cmUKLUZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVz
ZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLCBzbyBtaXhpbmcgVEVTVF9GIGFuZCBURVNU
IGluIHRoZSBzYW1lIHRlc3QgY2FzZSBpcwotaWxsZWdhbC4gIEluIHRlc3QgY2FzZSBURVNUX0Zf
YmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UsCi10ZXN0IERlZmluZWRVc2luZ1RFU1RfRiBp
cyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKLXRlc3QgRGVmaW5lZFVzaW5nVEVTVEFuZFNob3Vs
ZEZhaWwgaXMgZGVmaW5lZCB1c2luZyBURVNULiAgWW91IHByb2JhYmx5Ci13YW50IHRvIGNoYW5n
ZSB0aGUgVEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0byBhbm90aGVyIHRlc3QKLWNhc2UuCi0b
WzA7MzFtWyAgRkFJTEVEICBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2Fz
ZS5EZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxkRmFpbAotG1swOzMybVstLS0tLS0tLS0tXSAbW20y
IHRlc3RzIGZyb20gVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlCi0bWzA7MzJt
WyBSVU4gICAgICBdIBtbbVRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZp
bmVkVXNpbmdURVNUCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbVRFU1RfYmVmb3JlX1RFU1RfRl9p
bl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUCi0bWzA7MzJtWyBSVU4gICAgICBdIBtb
bVRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZB
bmRTaG91bGRGYWlsCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUFsbCB0ZXN0cyBpbiB0
aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcywg
c28gbWl4aW5nIFRFU1RfRiBhbmQgVEVTVCBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgaXMKLWlsbGVn
YWwuICBJbiB0ZXN0IGNhc2UgVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLAot
dGVzdCBEZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsIGlzIGRlZmluZWQgdXNpbmcgVEVT
VF9GIGJ1dAotdGVzdCBEZWZpbmVkVXNpbmdURVNUIGlzIGRlZmluZWQgdXNpbmcgVEVTVC4gIFlv
dSBwcm9iYWJseQotd2FudCB0byBjaGFuZ2UgdGhlIFRFU1QgdG8gVEVTVF9GIG9yIG1vdmUgaXQg
dG8gYW5vdGhlciB0ZXN0Ci1jYXNlLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21URVNUX2JlZm9y
ZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFp
bAotG1swOzMybVstLS0tLS0tLS0tXSAbW204IHRlc3RzIGZyb20gRXhwZWN0Tm9uZmF0YWxGYWls
dXJlVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotG1swOzMy
bVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxv
Y2FsVmFyaWFibGVzCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVy
ZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxWYXJpYWJsZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
RXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1doZW5UaGVyZUlzT25lTm9uZmF0YWxG
YWlsdXJlCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qu
U3VjY2VlZHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAgICAg
XSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb05vbmZhdGFs
RmFpbHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBl
Y3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlz
Tm9Ob25mYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxG
YWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKLShleHBlY3Rp
bmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFs
IGZhaWx1cmUKLSAgQWN0dWFsOiAyIGZhaWx1cmVzCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
Tm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDEu
Ci0KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAot
RXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMi4KLQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21F
eHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvTm9uZmF0YWxGYWls
dXJlcwotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZh
aWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rl
c3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFs
OgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVj
dGVkIGZhdGFsIGZhaWx1cmUuCi0KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi0bWzA7MzJtWyBS
VU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50
UmV0dXJucwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBl
Y3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1l
bnRSZXR1cm5zCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRl
c3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0
LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDog
MCBmYWlsdXJlcwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVU
ZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotG1swOzMybVstLS0tLS0tLS0tXSAbW204IHRl
c3RzIGZyb20gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21F
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotG1swOzMy
bVsgICAgICAgT0sgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2Jh
bFZhcmlhYmxlcwotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0
LkNhblJlZmVyZW5jZUxvY2FsU3RhdGljVmFyaWFibGVzCi0bWzA7MzJtWyAgICAgICBPSyBdIBtb
bUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxTdGF0aWNWYXJpYWJsZXMK
LRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1do
ZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdEZh
dGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotG1swOzMy
bVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNO
b0ZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJl
Ci1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNO
b0ZhdGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcwotKGV4cGVjdGluZyBhIGZhaWx1
cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFj
dHVhbDogMiBmYWlsdXJlcwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6
Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi0b
WzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhl
cmVBcmVUd29GYXRhbEZhaWx1cmVzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFs
RmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotKGV4cGVjdGlu
ZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBmYXRhbCBmYWls
dXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVy
ZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLRtbMDszMW1bICBGQUlM
RUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0
YWxGYWlsdXJlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qu
RmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5j
YzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWls
dXJlcwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxz
V2hlblN0YXRlbWVudFJldHVybnMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLShleHBlY3RpbmcgYSBmYWlsdXJl
KQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1
YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0
ZXN0cyBmcm9tIFR5cGVkVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLRtbMDszMm1bIFJV
TiAgICAgIF0gG1ttVHlwZWRUZXN0LzAuU3VjY2VzcwotG1swOzMybVsgICAgICAgT0sgXSAbW21U
eXBlZFRlc3QvMC5TdWNjZXNzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVR5cGVkVGVzdC8wLkZh
aWx1cmUKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogVHlwZVBh
cmFtKCkKLSAgQWN0dWFsOiAwCi1FeHBlY3RlZDogMQotRXhwZWN0ZWQgZmFpbHVyZQotG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3QvMC5GYWlsdXJlCi0bWzA7MzJtWy0tLS0tLS0tLS1d
IBtbbTIgdGVzdHMgZnJvbSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAsIHdoZXJlIFR5cGVQYXJhbSA9
IHVuc2lnbmVkIGNoYXIKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0
UC8wLlN1Y2Nlc3MKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8w
LlN1Y2Nlc3MKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZh
aWx1cmUKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogVHlwZVBh
cmFtKCkKLSAgQWN0dWFsOiBcMAotRXhwZWN0ZWQ6IDFVCi1XaGljaCBpczogMQotRXhwZWN0ZWQg
ZmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFp
bHVyZQotG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVW5zaWduZWQvVHlwZWRU
ZXN0UC8xLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKLRtbMDszMm1bIFJVTiAgICAg
IF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1Y2Nlc3MKLRtbMDszMm1bICAgICAgIE9LIF0g
G1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1Y2Nlc3MKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
VW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBG
YWlsdXJlCi1WYWx1ZSBvZjogVHlwZVBhcmFtKCkKLSAgQWN0dWFsOiAwCi1FeHBlY3RlZDogMVUK
LVdoaWNoIGlzOiAxCi1FeHBlY3RlZCBmYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVVu
c2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTQgdGVz
dHMgZnJvbSBFeHBlY3RGYWlsdXJlVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RG
YWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rl
c3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2NlZWRlZAotCi0oZXhwZWN0aW5n
IDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1
cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJl
OgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQotKGV4cGVjdGluZyAxIGZh
aWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlIGNv
bnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBlY3RlZC4iCi0gIEFjdHVhbDoK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3Rl
ZCBmYXRhbCBmYWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVU
ZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWls
dXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rl
c3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFs
OgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1TdWNjZWVkZWQKLQotKGV4cGVj
dGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0
YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFp
bHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotKGV4cGVjdGluZyAxIGZh
aWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVy
ZSBjb250YWluaW5nICJTb21lIG90aGVyIG5vbi1mYXRhbCBmYWlsdXJlLiIKLSAgQWN0dWFsOgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBl
Y3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RG
YWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
RXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0oZXhwZWN0
aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZh
aWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1TdWNj
ZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBl
Y3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUu
Ci0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6
IDEgZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUgZXhw
ZWN0ZWQuIgotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVy
ZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLRtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWls
dXJlT25BbGxUaHJlYWRzCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1
cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBTdWNjZXNzOgotU3VjY2VlZGVkCi0KLShleHBlY3RpbmcgMSBmYWlsdXJl
KQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAg
QWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQK
LUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3Qu
Y2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAi
U29tZSBvdGhlciBub24tZmF0YWwgZmFpbHVyZS4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFs
IGZhaWx1cmUuCi0KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhw
ZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIg
dGVzdHMgZnJvbSBFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0Ci0bWzA7MzJtWyBSVU4gICAg
ICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCi0o
ZXhwZWN0aW5nIDIgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQot
RmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhw
ZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1bICBG
QUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3RGYXRhbEZhaWx1
cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5F
eHBlY3ROb25GYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgMiBmYWlsdXJlcykKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
LgotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAg
QWN0dWFsOiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVX
aXRoVGhyZWFkc1Rlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0bWzA7MzJtWy0tLS0tLS0tLS1d
IBtbbTEgdGVzdCBmcm9tIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdAotG1sw
OzMybVsgUlVOICAgICAgXSAbW21TY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3Qu
SW50ZXJjZXB0T25seUN1cnJlbnRUaHJlYWQKLShleHBlY3RpbmcgMiBmYWlsdXJlcykKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1
cmUuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBu
b24tZmF0YWwgZmFpbHVyZS4KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU2NvcGVkRmFrZVRlc3RQ
YXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCi0bWzA7MzJt
Wy0tLS0tLS0tLS1dIBtbbUdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgotQmFyRW52
aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZh
aWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi1Gb29FbnZpcm9ubWVu
dDo6VGVhckRvd24oKSBjYWxsZWQuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQot
RmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotG1swOzMybVs9PT09PT09PT09XSAbW202
MCB0ZXN0cyBmcm9tIDI1IHRlc3QgY2FzZXMgcmFuLgotG1swOzMybVsgIFBBU1NFRCAgXSAbW20y
MSB0ZXN0cy4KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttMzkgdGVzdHMsIGxpc3RlZCBiZWxvdzoK
LRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1
YnJvdXRpbmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZh
aWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWls
dXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5PYmV5c1Njb3BlcwotG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCi0bWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJblN1YnJvdXRpbmUKLRtbMDszMW1bICBGQUlM
RUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZU5lc3RlZAotG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0NvbmN1cnJlbnRseQotG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21Ob25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29u
c3RydWN0b3IKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29u
c3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtb
bU5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi0bWzA7MzFt
WyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwKLRtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbFRvbwot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVz
dC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVT
VEFuZFNob3VsZEZhaWwKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9G
X2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwKLRtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVy
ZUlzTm9Ob25mYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKLRtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVy
ZUlzT25lRmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFs
RmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRo
ZXJlSXNOb0ZhdGFsRmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcwotG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVOb25m
YXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVz
dC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVj
dEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbVR5cGVkVGVzdC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IGludAotG1sw
OzMxbVsgIEZBSUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZSwgd2hlcmUg
VHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21VbnNpZ25l
ZC9UeXBlZFRlc3RQLzEuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50Ci0b
WzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVy
ZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRh
bEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0
RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZh
aWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdEZhdGFsRmFpbHVy
ZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4
cGVjdE5vbkZhdGFsRmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TY29wZWRGYWtlVGVz
dFBhcnRSZXN1bHRSZXBvcnRlclRlc3QuSW50ZXJjZXB0T25seUN1cnJlbnRUaHJlYWQKLQotMzkg
RkFJTEVEIFRFU1RTCi0bWzA7MzNtICBZT1UgSEFWRSAxIERJU0FCTEVEIFRFU1QKLQotG1ttTm90
ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gRmF0YWxGYWlsdXJlVGVzdC4qOkxvZ2dpbmdUZXN0LioK
LVs9PT09PT09PT09XSBSdW5uaW5nIDQgdGVzdHMgZnJvbSAyIHRlc3QgY2FzZXMuCi1bLS0tLS0t
LS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDMgdGVz
dHMgZnJvbSBGYXRhbEZhaWx1cmVUZXN0Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5G
YXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91
bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogeAot
ICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5G
YXRhbEZhaWx1cmVJblN1YnJvdXRpbmUgKD8gbXMpCi1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJl
VGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJl
IHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1W
YWx1ZSBvZjogeAotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1bICBGQUlMRUQgIF0gRmF0YWxG
YWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUgKD8gbXMpCi1bIFJVTiAg
ICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLShleHBl
Y3RpbmcgYSBmYWlsdXJlIG9uIGZhbHNlKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1
cmUKLVZhbHVlIG9mOiBmYWxzZQotICBBY3R1YWw6IGZhbHNlCi1FeHBlY3RlZDogdHJ1ZQotWyAg
RkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lICg/
IG1zKQotWy0tLS0tLS0tLS1dIDMgdGVzdHMgZnJvbSBGYXRhbEZhaWx1cmVUZXN0ICg/IG1zIHRv
dGFsKQotCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTG9nZ2luZ1Rlc3QKLVsgUlVOICAgICAg
XSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotKGV4cGVjdGlu
ZyAyIGZhaWx1cmVzIG9uICgzKSA+PSAoYVtpXSkpCi1pID09IDAKLWkgPT0gMQotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6
IDMgdnMgOQotaSA9PSAyCi1pID09IDMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1FeHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDYKLVsgIEZBSUxFRCAgXSBM
b2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucyAoPyBtcykKLVstLS0t
LS0tLS0tXSAxIHRlc3QgZnJvbSBMb2dnaW5nVGVzdCAoPyBtcyB0b3RhbCkKLQotWy0tLS0tLS0t
LS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgotWz09PT09PT09PT1dIDQgdGVz
dHMgZnJvbSAyIHRlc3QgY2FzZXMgcmFuLiAoPyBtcyB0b3RhbCkKLVsgIFBBU1NFRCAgXSAwIHRl
c3RzLgotWyAgRkFJTEVEICBdIDQgdGVzdHMsIGxpc3RlZCBiZWxvdzoKLVsgIEZBSUxFRCAgXSBG
YXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotWyAgRkFJTEVEICBdIEZh
dGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi1bICBGQUlMRUQg
IF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLVsgIEZBSUxF
RCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotCi0gNCBG
QUlMRUQgVEVTVFMKLSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNUCi0KLU5vdGU6IEdvb2dsZSBU
ZXN0IGZpbHRlciA9ICpESVNBQkxFRF8qCi1bPT09PT09PT09PV0gUnVubmluZyAxIHRlc3QgZnJv
bSAxIHRlc3QgY2FzZS4KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQt
dXAuCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0Ci1b
IFJVTiAgICAgIF0gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0LkRJU0FCTEVEX0Fsc29SdW5EaXNh
YmxlZFRlc3RzRmxhZ1N1cHByZXNzZXNXYXJuaW5nCi1bICAgICAgIE9LIF0gRGlzYWJsZWRUZXN0
c1dhcm5pbmdUZXN0LkRJU0FCTEVEX0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZ1N1cHByZXNzZXNX
YXJuaW5nCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCi1b
PT09PT09PT09PV0gMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UgcmFuLgotWyAgUEFTU0VEICBdIDEg
dGVzdC4KLU5vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9IFBhc3NpbmdUZXN0LioKLU5vdGU6IFRo
aXMgaXMgdGVzdCBzaGFyZCAxIG9mIDIuCi1bPT09PT09PT09PV0gUnVubmluZyAxIHRlc3QgZnJv
bSAxIHRlc3QgY2FzZS4KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQt
dXAuCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gUGFzc2luZ1Rlc3QKLVsgUlVOICAgICAgXSBQ
YXNzaW5nVGVzdC5QYXNzaW5nVGVzdDIKLVsgICAgICAgT0sgXSBQYXNzaW5nVGVzdC5QYXNzaW5n
VGVzdDIKLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KLVs9
PT09PT09PT09XSAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZSByYW4uCi1bICBQQVNTRUQgIF0gMSB0
ZXN0LgotCi0gIFlPVSBIQVZFIDEgRElTQUJMRUQgVEVTVAotCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl93aW4udHh0IGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fd2lu
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEzYzNhYWZjMzFmNWYxMDA1Yzc3
NDI4M2UwMGJkYjA5ZGU4MWY2OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0
X2dvbGRlbl93aW4udHh0CisrKyAvZGV2L251bGwKQEAgLTEsNjA1ICswLDAgQEAKLVRoZSBub24t
dGVzdCBwYXJ0IG9mIHRoZSBjb2RlIGlzIGV4cGVjdGVkIHRvIGhhdmUgMiBmYWlsdXJlcy4KLQot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogZmFsc2UKLSAgQWN0dWFs
OiBmYWxzZQotRXhwZWN0ZWQ6IHRydWUKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjog
VmFsdWUgb2Y6IDMKLUV4cGVjdGVkOiAyCi1bPT09PT09PT09PV0gUnVubmluZyA2MSB0ZXN0cyBm
cm9tIDI3IHRlc3QgY2FzZXMuCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQg
c2V0LXVwLgotRm9vRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLgotQmFyRW52aXJvbm1lbnQ6
OlNldFVwKCkgY2FsbGVkLgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIEFEZWF0aFRlc3QKLVsg
UlVOICAgICAgXSBBRGVhdGhUZXN0LlNob3VsZFJ1bkZpcnN0Ci1bICAgICAgIE9LIF0gQURlYXRo
VGVzdC5TaG91bGRSdW5GaXJzdAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIEFUeXBlZERlYXRo
VGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLVsgUlVOICAgICAgXSBBVHlwZWREZWF0aFRl
c3QvMC5TaG91bGRSdW5GaXJzdAotWyAgICAgICBPSyBdIEFUeXBlZERlYXRoVGVzdC8wLlNob3Vs
ZFJ1bkZpcnN0Ci1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gQVR5cGVkRGVhdGhUZXN0LzEsIHdo
ZXJlIFR5cGVQYXJhbSA9IGRvdWJsZQotWyBSVU4gICAgICBdIEFUeXBlZERlYXRoVGVzdC8xLlNo
b3VsZFJ1bkZpcnN0Ci1bICAgICAgIE9LIF0gQVR5cGVkRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmly
c3QKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBNeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAsIHdo
ZXJlIFR5cGVQYXJhbSA9IGludAotWyBSVU4gICAgICBdIE15L0FUeXBlUGFyYW1EZWF0aFRlc3Qv
MC5TaG91bGRSdW5GaXJzdAotWyAgICAgICBPSyBdIE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMC5T
aG91bGRSdW5GaXJzdAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIE15L0FUeXBlUGFyYW1EZWF0
aFRlc3QvMSwgd2hlcmUgVHlwZVBhcmFtID0gZG91YmxlCi1bIFJVTiAgICAgIF0gTXkvQVR5cGVQ
YXJhbURlYXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0Ci1bICAgICAgIE9LIF0gTXkvQVR5cGVQYXJh
bURlYXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0Ci1bLS0tLS0tLS0tLV0gMiB0ZXN0cyBmcm9tIFBh
c3NpbmdUZXN0Ci1bIFJVTiAgICAgIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QxCi1bICAgICAg
IE9LIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QxCi1bIFJVTiAgICAgIF0gUGFzc2luZ1Rlc3Qu
UGFzc2luZ1Rlc3QyCi1bICAgICAgIE9LIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi1bLS0t
LS0tLS0tLV0gMyB0ZXN0cyBmcm9tIEZhdGFsRmFpbHVyZVRlc3QKLVsgUlVOICAgICAgXSBGYXRh
bEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1
cmUgdGhhdCB4IHNob3VsZCBiZSAxKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBW
YWx1ZSBvZjogeAotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1bICBGQUlMRUQgIF0gRmF0YWxG
YWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLVsgUlVOICAgICAgXSBGYXRhbEZh
aWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZh
aWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9y
OiBWYWx1ZSBvZjogeAotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1bICBGQUlMRUQgIF0gRmF0
YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKLVsgUlVOICAgICAg
XSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotKGV4cGVjdGlu
ZyBhIGZhaWx1cmUgb24gZmFsc2UpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZh
bHVlIG9mOiBmYWxzZQotICBBY3R1YWw6IGZhbHNlCi1FeHBlY3RlZDogdHJ1ZQotWyAgRkFJTEVE
ICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi1bLS0tLS0t
LS0tLV0gMSB0ZXN0IGZyb20gTG9nZ2luZ1Rlc3QKLVsgUlVOICAgICAgXSBMb2dnaW5nVGVzdC5J
bnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotKGV4cGVjdGluZyAyIGZhaWx1cmVzIG9u
ICgzKSA+PSAoYVtpXSkpCi1pID09IDAKLWkgPT0gMQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IGVycm9yOiBFeHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDkKLWkgPT0gMgot
aSA9PSAzCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAoMykgPj0g
KGFbaV0pLCBhY3R1YWw6IDMgdnMgNgotWyAgRkFJTEVEICBdIExvZ2dpbmdUZXN0LkludGVybGVh
dmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCi1bLS0tLS0tLS0tLV0gNSB0ZXN0cyBmcm9tIFNDT1BF
RF9UUkFDRVRlc3QKLVsgUlVOICAgICAgXSBTQ09QRURfVFJBQ0VUZXN0Lk9iZXlzU2NvcGVzCi0o
ZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVk
Ci1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNlLgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBl
eHBlY3RlZCwgYW5kIHNob3VsZCBoYXZlIGEgdHJhY2UuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBFeHBlY3RlZCB0cmFjZQotZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IGVycm9yOiBGYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3Vs
ZG4ndCBoYXZlIGEgdHJhY2UuCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5PYmV5c1Nj
b3BlcwotWyBSVU4gICAgICBdIFNDT1BFRF9UUkFDRVRlc3QuV29ya3NJbkxvb3AKLShleHBlY3Rl
ZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogbgot
ICBBY3R1YWw6IDEKLUV4cGVjdGVkOiAyCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBpID0gMQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1
ZSBvZjogbgotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBpID0gMgotWyAgRkFJTEVEICBdIFNDT1BFRF9UUkFDRVRl
c3QuV29ya3NJbkxvb3AKLVsgUlVOICAgICAgXSBTQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJy
b3V0aW5lCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJv
cjogVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAxCi1FeHBlY3RlZDogMgotR29vZ2xlIFRlc3QgdHJh
Y2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogbiA9IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBlcnJvcjogVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotR29vZ2xl
IFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogbiA9IDIKLVsgIEZBSUxFRCAg
XSBTQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJyb3V0aW5lCi1bIFJVTiAgICAgIF0gU0NPUEVE
X1RSQUNFVGVzdC5DYW5CZU5lc3RlZAotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEK
LUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4gPSAyCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5DYW5C
ZU5lc3RlZAotWyBSVU4gICAgICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVSZXBlYXRlZAotKGV4
cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAot
VGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQg
QS4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEEKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0
ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBIGFuZCBCLgotR29vZ2xlIFRlc3Qg
dHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IEEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1UaGlzIGZhaWx1
cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQg
Qy4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEMKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBCCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQQotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEsIEIsIGFuZCBELgotR29vZ2xlIFRl
c3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRAotZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IEIKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBBCi1bICBGQUlMRUQgIF0gU0NPUEVE
X1RSQUNFVGVzdC5DYW5CZVJlcGVhdGVkCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTm9uRmF0
YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0Ci1bIFJVTiAgICAgIF0gTm9uRmF0YWxG
YWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi0oZXhw
ZWN0aW5nIDUgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxl
ZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4KLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBp
biBTZXRVcCgpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVj
dGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGJvZHkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gVGVhckRvd24uCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjNSwg
aW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAgXSBOb25GYXRhbEZhaWx1cmVJ
bkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKLVstLS0tLS0tLS0t
XSAxIHRlc3QgZnJvbSBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QKLVsgUlVO
ICAgICAgXSBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29u
c3RydWN0b3IKLShleHBlY3RpbmcgMiBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBmaXh0dXJl
IGMndG9yLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVk
IGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi1bICBGQUlMRUQgIF0gRmF0
YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi1b
LS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QKLVsgUlVO
ICAgICAgXSBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotKGV4cGVj
dGluZyA0IGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQK
LUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZnVuY3Rp
b24uCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFp
bHVyZSAjMywgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjog
RmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICM0LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgot
WyAgRkFJTEVEICBdIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi1b
LS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QKLVsgUlVOICAg
ICAgXSBGYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotKGV4cGVjdGluZyAz
IGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVj
dGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJy
b3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0
aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZUluU2V0VXBU
ZXN0LkZhaWx1cmVJblNldFVwCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRXhjZXB0aW9uSW5G
aXh0dXJlQ3RvclRlc3QKLVsgUlVOICAgICAgXSBFeGNlcHRpb25JbkZpeHR1cmVDdG9yVGVzdC5F
eGNlcHRpb25JbkZpeHR1cmVDdG9yCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiB0aHJvd24gZXhj
ZXB0aW9uIGluIHRoZSB0ZXN0IGZpeHR1cmUncyBjb25zdHJ1Y3RvcikKLXVua25vd24gZmlsZTog
ZXJyb3I6IEV4Y2VwdGlvbiB0aHJvd24gd2l0aCBjb2RlIDB4YzAwMDAwMDUgaW4gdGhlIHRlc3Qg
Zml4dHVyZSdzIGNvbnN0cnVjdG9yLgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIEV4Y2VwdGlv
bkluU2V0VXBUZXN0Ci1bIFJVTiAgICAgIF0gRXhjZXB0aW9uSW5TZXRVcFRlc3QuRXhjZXB0aW9u
SW5TZXRVcAotKGV4cGVjdGluZyAzIGZhaWx1cmVzKQotdW5rbm93biBmaWxlOiBlcnJvcjogRXhj
ZXB0aW9uIHRocm93biB3aXRoIGNvZGUgMHhjMDAwMDAwNSBpbiBTZXRVcCgpLgotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRl
YXJEb3duKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0
ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAgXSBF
eGNlcHRpb25JblNldFVwVGVzdC5FeGNlcHRpb25JblNldFVwCi1bLS0tLS0tLS0tLV0gMiB0ZXN0
cyBmcm9tIEV4Y2VwdGlvbkluVGVzdEZ1bmN0aW9uVGVzdAotWyBSVU4gICAgICBdIEV4Y2VwdGlv
bkluVGVzdEZ1bmN0aW9uVGVzdC5TRUgKLShleHBlY3RpbmcgMyBmYWlsdXJlcykKLXVua25vd24g
ZmlsZTogZXJyb3I6IEV4Y2VwdGlvbiB0aHJvd24gd2l0aCBjb2RlIDB4YzAwMDAwMDUgaW4gdGhl
IHRlc3QgYm9keS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBl
Y3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUg
ZCd0b3IuCi1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0LlNFSAotWyBS
VU4gICAgICBdIEV4Y2VwdGlvbkluVGVzdEZ1bmN0aW9uVGVzdC5DcHBFeGNlcHRpb24KLXVua25v
d24gZmlsZTogZXJyb3I6IEV4Y2VwdGlvbiB0aHJvd24gd2l0aCBjb2RlIDB4ZTA2ZDczNjMgaW4g
dGhlIHRlc3QgYm9keS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1F
eHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1
cmUgZCd0b3IuCi1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0LkNwcEV4
Y2VwdGlvbgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIEV4Y2VwdGlvbkluVGVhckRvd25UZXN0
Ci1bIFJVTiAgICAgIF0gRXhjZXB0aW9uSW5UZWFyRG93blRlc3QuRXhjZXB0aW9uSW5UZWFyRG93
bgotKGV4cGVjdGluZyAyIGZhaWx1cmVzKQotdW5rbm93biBmaWxlOiBlcnJvcjogRXhjZXB0aW9u
IHRocm93biB3aXRoIGNvZGUgMHhlMDZkNzM2MyBpbiBUZWFyRG93bigpLgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0
ZXN0IGZpeHR1cmUgZCd0b3IuCi1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5UZWFyRG93blRlc3Qu
RXhjZXB0aW9uSW5UZWFyRG93bgotWy0tLS0tLS0tLS1dIDQgdGVzdHMgZnJvbSBNaXhlZFVwVGVz
dENhc2VUZXN0Ci1bIFJVTiAgICAgIF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5GaXJzdFRlc3RGcm9t
TmFtZXNwYWNlRm9vCi1bICAgICAgIE9LIF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5GaXJzdFRlc3RG
cm9tTmFtZXNwYWNlRm9vCi1bIFJVTiAgICAgIF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5TZWNvbmRU
ZXN0RnJvbU5hbWVzcGFjZUZvbwotWyAgICAgICBPSyBdIE1peGVkVXBUZXN0Q2FzZVRlc3QuU2Vj
b25kVGVzdEZyb21OYW1lc3BhY2VGb28KLVsgUlVOICAgICAgXSBNaXhlZFVwVGVzdENhc2VUZXN0
LlRoaXNTaG91bGRGYWlsCi1ndGVzdC5jYzojOiBlcnJvcjogRmFpbGVkCi1BbGwgdGVzdHMgaW4g
dGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3Mu
ICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlVGVzdCwKLXlvdSBkZWZpbmVk
IHRlc3QgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbyBhbmQgdGVzdCBUaGlzU2hvdWxkRmFpbAot
dXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBl
biBpZgotdGhlIHR3byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIG9yIHRy
YW5zbGF0aW9uCi11bml0cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAgWW91IHNob3VsZCBwcm9i
YWJseSByZW5hbWUgb25lCi1vZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlm
ZmVyZW50IHRlc3QgY2FzZXMuCi1bICBGQUlMRUQgIF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlz
U2hvdWxkRmFpbAotWyBSVU4gICAgICBdIE1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZh
aWxUb28KLWd0ZXN0LmNjOiM6IGVycm9yOiBGYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0
ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcy4gIEhvd2V2ZXIs
IGluIHRlc3QgY2FzZSBNaXhlZFVwVGVzdENhc2VUZXN0LAoteW91IGRlZmluZWQgdGVzdCBGaXJz
dFRlc3RGcm9tTmFtZXNwYWNlRm9vIGFuZCB0ZXN0IFRoaXNTaG91bGRGYWlsVG9vCi11c2luZyB0
d28gZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAgVGhpcyBjYW4gaGFwcGVuIGlmCi10
aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMgb3IgdHJhbnNsYXRp
b24KLXVuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZb3Ugc2hvdWxkIHByb2JhYmx5IHJl
bmFtZSBvbmUKLW9mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50byBkaWZmZXJlbnQg
dGVzdCBjYXNlcy4KLVsgIEZBSUxFRCAgXSBNaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRG
YWlsVG9vCi1bLS0tLS0tLS0tLV0gMiB0ZXN0cyBmcm9tIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1l
VGVzdE5hbWVUZXN0Ci1bIFJVTiAgICAgIF0gTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFt
ZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLVsgICAgICAgT0sgXSBN
aXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNO
YW1lU2hvdWxkRmFpbAotWyBSVU4gICAgICBdIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5h
bWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCi1ndGVzdC5jYzojOiBl
cnJvcjogRmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRo
ZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRV
cFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0IFRoZVNlY29u
ZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsIGFuZCB0ZXN0IFRoZVNlY29uZFRlc3RXaXRoVGhp
c05hbWVTaG91bGRGYWlsCi11c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2Vz
LiAgVGhpcyBjYW4gaGFwcGVuIGlmCi10aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50
IG5hbWVzcGFjZXMgb3IgdHJhbnNsYXRpb24KLXVuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUu
ICBZb3Ugc2hvdWxkIHByb2JhYmx5IHJlbmFtZSBvbmUKLW9mIHRoZSBjbGFzc2VzIHRvIHB1dCB0
aGUgdGVzdHMgaW50byBkaWZmZXJlbnQgdGVzdCBjYXNlcy4KLVsgIEZBSUxFRCAgXSBNaXhlZFVw
VGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hv
dWxkRmFpbAotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5f
c2FtZV90ZXN0X2Nhc2UKLVsgUlVOICAgICAgXSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90
ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GCi1bICAgICAgIE9LIF0gVEVTVF9GX2JlZm9yZV9U
RVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRgotWyBSVU4gICAgICBdIFRF
U1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUQW5kU2hv
dWxkRmFpbAotZ3Rlc3QuY2M6IzogZXJyb3I6IEZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1l
IHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLCBzbyBtaXhp
bmcgVEVTVF9GIGFuZCBURVNUIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBpcwotaWxsZWdhbC4gIElu
IHRlc3QgY2FzZSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UsCi10ZXN0IERl
ZmluZWRVc2luZ1RFU1RfRiBpcyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKLXRlc3QgRGVmaW5l
ZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwgaXMgZGVmaW5lZCB1c2luZyBURVNULiAgWW91IHByb2Jh
Ymx5Ci13YW50IHRvIGNoYW5nZSB0aGUgVEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0byBhbm90
aGVyIHRlc3QKLWNhc2UuCi1bICBGQUlMRUQgIF0gVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVf
dGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsCi1bLS0tLS0tLS0tLV0gMiB0
ZXN0cyBmcm9tIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZQotWyBSVU4gICAg
ICBdIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNU
Ci1bICAgICAgIE9LIF0gVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmlu
ZWRVc2luZ1RFU1QKLVsgUlVOICAgICAgXSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0
X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogZXJyb3I6
IEZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2Ft
ZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLCBzbyBtaXhpbmcgVEVTVF9GIGFuZCBURVNUIGluIHRoZSBz
YW1lIHRlc3QgY2FzZSBpcwotaWxsZWdhbC4gIEluIHRlc3QgY2FzZSBURVNUX2JlZm9yZV9URVNU
X0ZfaW5fc2FtZV90ZXN0X2Nhc2UsCi10ZXN0IERlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZh
aWwgaXMgZGVmaW5lZCB1c2luZyBURVNUX0YgYnV0Ci10ZXN0IERlZmluZWRVc2luZ1RFU1QgaXMg
ZGVmaW5lZCB1c2luZyBURVNULiAgWW91IHByb2JhYmx5Ci13YW50IHRvIGNoYW5nZSB0aGUgVEVT
VCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0byBhbm90aGVyIHRlc3QKLWNhc2UuCi1bICBGQUlMRUQg
IF0gVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1Rf
RkFuZFNob3VsZEZhaWwKLVstLS0tLS0tLS0tXSA4IHRlc3RzIGZyb20gRXhwZWN0Tm9uZmF0YWxG
YWlsdXJlVGVzdAotWyBSVU4gICAgICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVm
ZXJlbmNlR2xvYmFsVmFyaWFibGVzCi1bICAgICAgIE9LIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJl
VGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLVsgUlVOICAgICAgXSBFeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVzCi1bICAgICAgIE9LIF0g
RXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFZhcmlhYmxlcwotWyBS
VU4gICAgICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09u
ZU5vbmZhdGFsRmFpbHVyZQotWyAgICAgICBPSyBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qu
U3VjY2VlZHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotWyBSVU4gICAgICBdIEV4cGVj
dE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJlCi0o
ZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24t
ZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBFeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb05vbmZhdGFsRmFpbHVyZQotWyBS
VU4gICAgICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29O
b25mYXRhbEZhaWx1cmVzCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9y
OiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDIgZmFpbHVyZXMKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0
ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMS4KLQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1m
YXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSAyLgotCi1b
ICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3
b05vbmZhdGFsRmFpbHVyZXMKLVsgUlVOICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LkZhaWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQot
Z3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVh
bDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBl
Y3RlZCBmYXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJl
VGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi1bIFJVTiAgICAgIF0gRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi0oZXhwZWN0aW5n
IGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFp
bHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBFeHBlY3ROb25mYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLVsgUlVOICAgICAgXSBFeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotKGV4cGVjdGluZyBh
IGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1
cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWls
dXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLVstLS0tLS0tLS0tXSA4IHRlc3RzIGZy
b20gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdAotWyBSVU4gICAgICBdIEV4cGVjdEZhdGFsRmFpbHVy
ZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCi1bICAgICAgIE9LIF0gRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLVsgUlVOICAgICAgXSBF
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsU3RhdGljVmFyaWFibGVzCi1b
ICAgICAgIE9LIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFN0YXRp
Y1ZhcmlhYmxlcwotWyBSVU4gICAgICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNX
aGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotWyAgICAgICBPSyBdIEV4cGVjdEZhdGFsRmFpbHVy
ZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotWyBSVU4gICAgICBdIEV4
cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlCi0oZXhw
ZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBm
YWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotWyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFp
bHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlCi1bIFJVTiAgICAgIF0gRXhw
ZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMKLShl
eHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFs
IGZhaWx1cmUKLSAgQWN0dWFsOiAyIGZhaWx1cmVzCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuCi0KLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hl
blRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcwotWyBSVU4gICAgICBdIEV4cGVjdEZhdGFsRmFpbHVy
ZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZh
aWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBB
Y3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWls
ZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQgIF0gRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi1bIFJVTiAg
ICAgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi0o
ZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRh
bCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotWyAgRkFJTEVEICBdIEV4cGVjdEZhdGFs
RmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotWyBSVU4gICAgICBdIEV4cGVj
dEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi0oZXhwZWN0aW5nIGEg
ZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0g
IEFjdHVhbDogMCBmYWlsdXJlcwotWyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qu
RmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi1bLS0tLS0tLS0tLV0gMiB0ZXN0cyBmcm9tIFR5cGVk
VGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLVsgUlVOICAgICAgXSBUeXBlZFRlc3QvMC5T
dWNjZXNzCi1bICAgICAgIE9LIF0gVHlwZWRUZXN0LzAuU3VjY2VzcwotWyBSVU4gICAgICBdIFR5
cGVkVGVzdC8wLkZhaWx1cmUKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUg
b2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogMAotRXhwZWN0ZWQ6IDEKLUV4cGVjdGVkIGZhaWx1
cmUKLVsgIEZBSUxFRCAgXSBUeXBlZFRlc3QvMC5GYWlsdXJlCi1bLS0tLS0tLS0tLV0gMiB0ZXN0
cyBmcm9tIFVuc2lnbmVkL1R5cGVkVGVzdFAvMCwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQg
Y2hhcgotWyBSVU4gICAgICBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMC5TdWNjZXNzCi1bICAgICAg
IE9LIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8wLlN1Y2Nlc3MKLVsgUlVOICAgICAgXSBVbnNpZ25l
ZC9UeXBlZFRlc3RQLzAuRmFpbHVyZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBW
YWx1ZSBvZjogVHlwZVBhcmFtKCkKLSAgQWN0dWFsOiBcMAotRXhwZWN0ZWQ6IDFVCi1XaGljaCBp
czogMQotRXhwZWN0ZWQgZmFpbHVyZQotWyAgRkFJTEVEICBdIFVuc2lnbmVkL1R5cGVkVGVzdFAv
MC5GYWlsdXJlCi1bLS0tLS0tLS0tLV0gMiB0ZXN0cyBmcm9tIFVuc2lnbmVkL1R5cGVkVGVzdFAv
MSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50Ci1bIFJVTiAgICAgIF0gVW5zaWduZWQv
VHlwZWRUZXN0UC8xLlN1Y2Nlc3MKLVsgICAgICAgT0sgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzEu
U3VjY2VzcwotWyBSVU4gICAgICBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBUeXBlUGFyYW0oKQotICBBY3R1
YWw6IDAKLUV4cGVjdGVkOiAxVQotV2hpY2ggaXM6IDEKLUV4cGVjdGVkIGZhaWx1cmUKLVsgIEZB
SUxFRCAgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZQotWy0tLS0tLS0tLS1dIDQgdGVz
dHMgZnJvbSBFeHBlY3RGYWlsdXJlVGVzdAotWyBSVU4gICAgICBdIEV4cGVjdEZhaWx1cmVUZXN0
LkV4cGVjdEZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBl
cnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2NlZWRlZAotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkK
LWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhw
ZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3Qu
Y2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBv
dGhlciBmYXRhbCBmYWlsdXJlIGV4cGVjdGVkLiIKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUu
Ci0KLVsgIEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLVsg
UlVOICAgICAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLShleHBl
Y3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5vbi1mYXRh
bCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBTdWNjZXNzOgot
U3VjY2VlZGVkCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4
cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgot
Ci0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBu
b24tZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIG5vbi1mYXRhbCBmYWlsdXJl
LiIKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJl
OgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQotWyAgRkFJTEVEICBdIEV4
cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQotWyBSVU4gICAgICBdIEV4cGVj
dEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotKGV4cGVjdGluZyAx
IGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQot
ICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2NlZWRlZAot
Ci0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBm
YXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0
YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLShleHBl
Y3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZh
aWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBmYXRhbCBmYWlsdXJlIGV4cGVjdGVkLiIKLSAg
QWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQK
LUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLVsgIEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVz
dC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLVsgUlVOICAgICAgXSBFeHBlY3RGYWls
dXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLShleHBlY3RpbmcgMSBm
YWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJl
Ci0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBTdWNjZXNzOgotU3VjY2VlZGVk
Ci0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAx
IG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBG
YXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0
aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwg
ZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIG5vbi1mYXRhbCBmYWlsdXJlLiIKLSAgQWN0
dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVk
Ci1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQotWyAgRkFJTEVEICBdIEV4cGVjdEZhaWx1
cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotWy0tLS0tLS0tLS1dIEds
b2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgotQmFyRW52aXJvbm1lbnQ6OlRlYXJEb3du
KCkgY2FsbGVkLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVj
dGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotRm9vRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVk
LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuCi1bPT09PT09PT09PV0gNjEgdGVzdHMgZnJvbSAyNyB0ZXN0IGNhc2VzIHJhbi4K
LVsgIFBBU1NFRCAgXSAyMSB0ZXN0cy4KLVsgIEZBSUxFRCAgXSA0MCB0ZXN0cywgbGlzdGVkIGJl
bG93OgotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0
aW5lCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1
YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUlu
U3Vicm91dGluZQotWyAgRkFJTEVEICBdIExvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdB
bmRBc3NlcnRpb25zCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5PYmV5c1Njb3Blcwot
WyAgRkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuV29ya3NJbkxvb3AKLVsgIEZBSUxFRCAgXSBT
Q09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RS
QUNFVGVzdC5DYW5CZU5lc3RlZAotWyAgRkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVS
ZXBlYXRlZAotWyAgRkFJTEVEICBdIE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9y
VGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZUluRml4
dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotWyAgRkFJTEVEICBdIE5v
bkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi1bICBGQUlMRUQgIF0gRmF0
YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKLVsgIEZBSUxFRCAgXSBFeGNlcHRp
b25JbkZpeHR1cmVDdG9yVGVzdC5FeGNlcHRpb25JbkZpeHR1cmVDdG9yCi1bICBGQUlMRUQgIF0g
RXhjZXB0aW9uSW5TZXRVcFRlc3QuRXhjZXB0aW9uSW5TZXRVcAotWyAgRkFJTEVEICBdIEV4Y2Vw
dGlvbkluVGVzdEZ1bmN0aW9uVGVzdC5TRUgKLVsgIEZBSUxFRCAgXSBFeGNlcHRpb25JblRlc3RG
dW5jdGlvblRlc3QuQ3BwRXhjZXB0aW9uCi1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5UZWFyRG93
blRlc3QuRXhjZXB0aW9uSW5UZWFyRG93bgotWyAgRkFJTEVEICBdIE1peGVkVXBUZXN0Q2FzZVRl
c3QuVGhpc1Nob3VsZEZhaWwKLVsgIEZBSUxFRCAgXSBNaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNT
aG91bGRGYWlsVG9vCi1bICBGQUlMRUQgIF0gTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFt
ZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLVsgIEZBSUxFRCAgXSBU
RVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFuZFNo
b3VsZEZhaWwKLVsgIEZBSUxFRCAgXSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nh
c2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbAotWyAgRkFJTEVEICBdIEV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJlCi1bICBG
QUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b05v
bmZhdGFsRmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZh
aWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLVsgIEZBSUxFRCAgXSBFeHBlY3ROb25mYXRh
bEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLVsgIEZBSUxFRCAgXSBFeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotWyAgRkFJTEVE
ICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJl
Ci1bICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3
b0ZhdGFsRmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxz
V2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLVsgIEZBSUxFRCAgXSBFeHBlY3RG
YXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotWyAgRkFJTEVEICBdIFR5
cGVkVGVzdC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IGludAotWyAgRkFJTEVEICBdIFVu
c2lnbmVkL1R5cGVkVGVzdFAvMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBj
aGFyCi1bICBGQUlMRUQgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUsIHdoZXJlIFR5
cGVQYXJhbSA9IHVuc2lnbmVkIGludAotWyAgRkFJTEVEICBdIEV4cGVjdEZhaWx1cmVUZXN0LkV4
cGVjdEZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5v
bkZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFs
RmFpbHVyZU9uQWxsVGhyZWFkcwotWyAgRkFJTEVEICBdIEV4cGVjdEZhaWx1cmVUZXN0LkV4cGVj
dE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotCi00MCBGQUlMRUQgVEVTVFMKLSAgWU9VIEhB
VkUgMSBESVNBQkxFRCBURVNUCi0KLU5vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9IEZhdGFsRmFp
bHVyZVRlc3QuKjpMb2dnaW5nVGVzdC4qCi1bPT09PT09PT09PV0gUnVubmluZyA0IHRlc3RzIGZy
b20gMiB0ZXN0IGNhc2VzLgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNl
dC11cC4KLVstLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdAotWyBSVU4g
ICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0
aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogZXJyb3I6IFZhbHVlIG9mOiB4Ci0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLVsgIEZBSUxF
RCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZSAoPyBtcykKLVsg
UlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGlu
ZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogeAotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAx
Ci1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJv
dXRpbmUgKD8gbXMpCi1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1
cmVJblN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIG9uIGZhbHNlKQotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogZmFsc2UKLSAgQWN0dWFsOiBmYWxzZQot
RXhwZWN0ZWQ6IHRydWUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFp
bHVyZUluU3Vicm91dGluZSAoPyBtcykKLVstLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0YWxG
YWlsdXJlVGVzdCAoPyBtcyB0b3RhbCkKLQotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExvZ2dp
bmdUZXN0Ci1bIFJVTiAgICAgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFz
c2VydGlvbnMKLShleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKQotaSA9PSAw
Ci1pID09IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6ICgzKSA+
PSAoYVtpXSksIGFjdHVhbDogMyB2cyA5Ci1pID09IDIKLWkgPT0gMwotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IGVycm9yOiBFeHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDYK
LVsgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9u
cyAoPyBtcykKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBMb2dnaW5nVGVzdCAoPyBtcyB0b3Rh
bCkKLQotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgotWz09
PT09PT09PT1dIDQgdGVzdHMgZnJvbSAyIHRlc3QgY2FzZXMgcmFuLiAoPyBtcyB0b3RhbCkKLVsg
IFBBU1NFRCAgXSAwIHRlc3RzLgotWyAgRkFJTEVEICBdIDQgdGVzdHMsIGxpc3RlZCBiZWxvdzoK
LVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQot
WyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0
aW5lCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJv
dXRpbmUKLVsgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNz
ZXJ0aW9ucwotCi0gNCBGQUlMRUQgVEVTVFMKLSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNUCi0K
LU5vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9ICpESVNBQkxFRF8qCi1bPT09PT09PT09PV0gUnVu
bmluZyAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZS4KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBl
bnZpcm9ubWVudCBzZXQtdXAuCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRGlzYWJsZWRUZXN0
c1dhcm5pbmdUZXN0Ci1bIFJVTiAgICAgIF0gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0LkRJU0FC
TEVEX0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZ1N1cHByZXNzZXNXYXJuaW5nCi1bICAgICAgIE9L
IF0gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0LkRJU0FCTEVEX0Fsc29SdW5EaXNhYmxlZFRlc3Rz
RmxhZ1N1cHByZXNzZXNXYXJuaW5nCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1l
bnQgdGVhci1kb3duCi1bPT09PT09PT09PV0gMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UgcmFuLgot
WyAgUEFTU0VEICBdIDEgdGVzdC4KLU5vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9IFBhc3NpbmdU
ZXN0LioKLU5vdGU6IFRoaXMgaXMgdGVzdCBzaGFyZCAxIG9mIDIuCi1bPT09PT09PT09PV0gUnVu
bmluZyAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZS4KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBl
bnZpcm9ubWVudCBzZXQtdXAuCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gUGFzc2luZ1Rlc3QK
LVsgUlVOICAgICAgXSBQYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDIKLVsgICAgICAgT0sgXSBQYXNz
aW5nVGVzdC5QYXNzaW5nVGVzdDIKLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVu
dCB0ZWFyLWRvd24KLVs9PT09PT09PT09XSAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZSByYW4uCi1b
ICBQQVNTRUQgIF0gMSB0ZXN0LgotCi0gIFlPVSBIQVZFIDEgRElTQUJMRUQgVEVTVAotCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZWRfaW1wbF91bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsX3Vu
aXR0ZXN0LmNjCmluZGV4IGU3ZWU1NGI1NmQ4NmI5ZWE1NGI3MTYxMjU4NjlhYTI4N2QxMjZiZTcu
LmI0NjZjMTUwYWVkYzQzZmRiMTAzNzNiN2E4MDJjY2JlNzc1NzkwZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsX3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsX3VuaXR0ZXN0
LmNjCkBAIC0yNyw3ICsyNyw3IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAK
LS8vIFRoaXMgZmlsZSBpcyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRCBvbiAxMC8wMi8yMDA4IGJ5
IGNvbW1hbmQKKy8vIFRoaXMgZmlsZSBpcyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRCBvbiAwMS8w
Mi8yMDE4IGJ5IGNvbW1hbmQKIC8vICdnZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5IDUnLiAgRE8gTk9U
IEVESVQgQlkgSEFORCEKIAogLy8gUmVncmVzc2lvbiB0ZXN0IGZvciBndGVzdF9wcmVkX2ltcGwu
aApAQCAtNDksOCArNDksOCBAQAogCiAjaW5jbHVkZSA8aW9zdHJlYW0+CiAKLSNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgorI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCiAKIC8vIEEgdXNlci1k
ZWZpbmVkIGRhdGEgdHlwZS4KIHN0cnVjdCBCb29sIHsKQEAgLTEwMywxMSArMTAzLDEwIEBAIHRl
c3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rpb24xKGNvbnN0IGNoYXIqIGUx
LAogICBpZiAoUHJlZEZ1bmN0aW9uMSh2MSkpCiAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlv
blN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5nOjpNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGUxCisgIHJl
dHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IGUxCiAgICAgICA8PCAi
IGlzIGV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKICAgICAgIDw8
IHYxIDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNnKTsKIH0K
IAogLy8gQSB1bmFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3IuCkBAIC00OTQsMTEgKzQ5
MywxMCBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1bmN0aW9uMihjb25z
dCBjaGFyKiBlMSwKICAgaWYgKFByZWRGdW5jdGlvbjIodjEsIHYyKSkKICAgICByZXR1cm4gdGVz
dGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIHRlc3Rpbmc6Ok1lc3NhZ2UgbXNnOwotICBt
c2cgPDwgZTEgPDwgIiArICIgPDwgZTIKKyAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1
cmUoKQorICAgICAgPDwgZTEgPDwgIiArICIgPDwgZTIKICAgICAgIDw8ICIgaXMgZXhwZWN0ZWQg
dG8gYmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgogICAgICAgPDwgdjEgKyB2MiA8PCAi
LiI7Ci0gIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIC8vIEEg
YmluYXJ5IHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rvci4KQEAgLTkyNywxMSArOTI1LDEwIEBA
IHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rpb24zKGNvbnN0IGNoYXIq
IGUxLAogICBpZiAoUHJlZEZ1bmN0aW9uMyh2MSwgdjIsIHYzKSkKICAgICByZXR1cm4gdGVzdGlu
Zzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIHRlc3Rpbmc6Ok1lc3NhZ2UgbXNnOwotICBtc2cg
PDwgZTEgPDwgIiArICIgPDwgZTIgPDwgIiArICIgPDwgZTMKKyAgcmV0dXJuIHRlc3Rpbmc6OkFz
c2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwgZTEgPDwgIiArICIgPDwgZTIgPDwgIiArICIgPDwg
ZTMKICAgICAgIDw8ICIgaXMgZXhwZWN0ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMg
dG8gIgogICAgICAgPDwgdjEgKyB2MiArIHYzIDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFz
c2VydGlvbkZhaWx1cmUobXNnKTsKIH0KIAogLy8gQSB0ZXJuYXJ5IHByZWRpY2F0ZS1mb3JtYXR0
ZXIgZnVuY3Rvci4KQEAgLTE0MDIsMTEgKzEzOTksMTAgQEAgdGVzdGluZzo6QXNzZXJ0aW9uUmVz
dWx0IFByZWRGb3JtYXRGdW5jdGlvbjQoY29uc3QgY2hhciogZTEsCiAgIGlmIChQcmVkRnVuY3Rp
b240KHYxLCB2MiwgdjMsIHY0KSkKICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2Vz
cygpOwogCi0gIHRlc3Rpbmc6Ok1lc3NhZ2UgbXNnOwotICBtc2cgPDwgZTEgPDwgIiArICIgPDwg
ZTIgPDwgIiArICIgPDwgZTMgPDwgIiArICIgPDwgZTQKKyAgcmV0dXJuIHRlc3Rpbmc6OkFzc2Vy
dGlvbkZhaWx1cmUoKQorICAgICAgPDwgZTEgPDwgIiArICIgPDwgZTIgPDwgIiArICIgPDwgZTMg
PDwgIiArICIgPDwgZTQKICAgICAgIDw8ICIgaXMgZXhwZWN0ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1
dCBldmFsdWF0ZXMgdG8gIgogICAgICAgPDwgdjEgKyB2MiArIHYzICsgdjQgPDwgIi4iOwotICBy
ZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogCiAvLyBBIDQtYXJ5IHBy
ZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rvci4KQEAgLTE5MTksMTEgKzE5MTUsMTAgQEAgdGVzdGlu
Zzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRGb3JtYXRGdW5jdGlvbjUoY29uc3QgY2hhciogZTEsCiAg
IGlmIChQcmVkRnVuY3Rpb241KHYxLCB2MiwgdjMsIHY0LCB2NSkpCiAgICAgcmV0dXJuIHRlc3Rp
bmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5nOjpNZXNzYWdlIG1zZzsKLSAgbXNn
IDw8IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUzIDw8ICIgKyAiIDw8IGU0IDw8ICIg
KyAiIDw8IGU1CisgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8
IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUzIDw8ICIgKyAiIDw8IGU0IDw8ICIgKyAi
IDw8IGU1CiAgICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlLCBidXQgZXZhbHVh
dGVzIHRvICIKICAgICAgIDw8IHYxICsgdjIgKyB2MyArIHY0ICsgdjUgPDwgIi4iOwotICByZXR1
cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogCiAvLyBBIDUtYXJ5IHByZWRp
Y2F0ZS1mb3JtYXR0ZXIgZnVuY3Rvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfcHJlbWF0dXJlX2V4aXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJlbWF0dXJlX2V4aXRfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWU5
MzA1NmQ4YjU2MmM1OWZlYmE4Mjc4ZTIwYzI5ZGYxM2UxOTE1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcmVtYXR1cmVfZXhpdF90ZXN0LmNj
CkBAIC0wLDAgKzEsMTI2IEBACisvLyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KKy8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisv
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKy8vCisvLyBUZXN0cyB0aGF0IEdvb2dsZSBUZXN0IG1hbmlwdWxhdGVzIHRoZSBw
cmVtYXR1cmUtZXhpdC1kZXRlY3Rpb24KKy8vIGZpbGUgY29ycmVjdGx5LgorCisjaW5jbHVkZSA8
c3RkaW8uaD4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK3VzaW5nIDo6dGVzdGluZzo6
SW5pdEdvb2dsZVRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6
OmludGVybmFsOjpwb3NpeDo6R2V0RW52OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9z
aXg6OlN0YXQ7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6U3RhdFN0cnVjdDsK
KworbmFtZXNwYWNlIHsKKworY2xhc3MgUHJlbWF0dXJlRXhpdFRlc3QgOiBwdWJsaWMgVGVzdCB7
CisgcHVibGljOgorICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBnaXZlbiBmaWxlIGV4aXN0cy4K
KyAgc3RhdGljIGJvb2wgRmlsZUV4aXN0cyhjb25zdCBjaGFyKiBmaWxlcGF0aCkgeworICAgIFN0
YXRTdHJ1Y3Qgc3RhdDsKKyAgICByZXR1cm4gU3RhdChmaWxlcGF0aCwgJnN0YXQpID09IDA7Cisg
IH0KKworIHByb3RlY3RlZDoKKyAgUHJlbWF0dXJlRXhpdFRlc3QoKSB7CisgICAgcHJlbWF0dXJl
X2V4aXRfZmlsZV9wYXRoXyA9IEdldEVudigiVEVTVF9QUkVNQVRVUkVfRVhJVF9GSUxFIik7CisK
KyAgICAvLyBOb3JtYWxpemUgTlVMTCB0byAiIiBmb3IgZWFzZSBvZiBoYW5kbGluZy4KKyAgICBp
ZiAocHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXyA9PSBOVUxMKSB7CisgICAgICBwcmVtYXR1cmVf
ZXhpdF9maWxlX3BhdGhfID0gIiI7CisgICAgfQorICB9CisKKyAgLy8gUmV0dXJucyB0cnVlIGlm
ZiB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZSBleGlzdHMuCisgIGJvb2wgUHJlbWF0dXJlRXhpdEZp
bGVFeGlzdHMoKSBjb25zdCB7CisgICAgcmV0dXJuIEZpbGVFeGlzdHMocHJlbWF0dXJlX2V4aXRf
ZmlsZV9wYXRoXyk7CisgIH0KKworICBjb25zdCBjaGFyKiBwcmVtYXR1cmVfZXhpdF9maWxlX3Bh
dGhfOworfTsKKwordHlwZWRlZiBQcmVtYXR1cmVFeGl0VGVzdCBQcmVtYXR1cmVFeGl0RGVhdGhU
ZXN0OworCisvLyBUZXN0cyB0aGF0OgorLy8gICAtIHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlIGV4
aXN0cyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiBhCisvLyAgICAgZGVhdGggdGVzdCAoRVhQRUNU
X0RFQVRIKiksIGFuZAorLy8gICAtIGEgZGVhdGggdGVzdCBkb2Vzbid0IGludGVyZmVyZSB3aXRo
IHRoZSBtYWluIHRlc3QgcHJvY2VzcydzCisvLyAgICAgaGFuZGxpbmcgb2YgdGhlIHByZW1hdHVy
ZS1leGl0IGZpbGUuCitURVNUX0YoUHJlbWF0dXJlRXhpdERlYXRoVGVzdCwgRmlsZUV4aXN0c0R1
cmluZ0V4ZWN1dGlvbk9mRGVhdGhUZXN0KSB7CisgIGlmICgqcHJlbWF0dXJlX2V4aXRfZmlsZV9w
YXRoXyA9PSAnXDAnKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgRVhQRUNUX0RFQVRIX0lGX1NV
UFBPUlRFRCh7CisgICAgICAvLyBJZiB0aGUgZmlsZSBleGlzdHMsIGNyYXNoIHRoZSBwcm9jZXNz
IHN1Y2ggdGhhdCB0aGUgbWFpbiB0ZXN0CisgICAgICAvLyBwcm9jZXNzIHdpbGwgY2F0Y2ggdGhl
IChleHBlY3RlZCkgY3Jhc2ggYW5kIHJlcG9ydCBhIHN1Y2Nlc3M7CisgICAgICAvLyBvdGhlcndp
c2UgZG9uJ3QgY3Jhc2gsIHdoaWNoIHdpbGwgY2F1c2UgdGhlIG1haW4gdGVzdCBwcm9jZXNzCisg
ICAgICAvLyB0byByZXBvcnQgdGhhdCB0aGUgZGVhdGggdGVzdCBoYXMgZmFpbGVkLgorICAgICAg
aWYgKFByZW1hdHVyZUV4aXRGaWxlRXhpc3RzKCkpIHsKKyAgICAgICAgZXhpdCgxKTsKKyAgICAg
IH0KKyAgICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIHByZW1hdHVyZS1leGl0IGZp
bGUgZXhpc3RzIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIGEKKy8vIG5vcm1hbCAobm9uLWRlYXRo
KSB0ZXN0LgorVEVTVF9GKFByZW1hdHVyZUV4aXRUZXN0LCBQcmVtYXR1cmVFeGl0RmlsZUV4aXN0
c0R1cmluZ1Rlc3RFeGVjdXRpb24pIHsKKyAgaWYgKCpwcmVtYXR1cmVfZXhpdF9maWxlX3BhdGhf
ID09ICdcMCcpIHsKKyAgICByZXR1cm47CisgIH0KKworICBFWFBFQ1RfVFJVRShQcmVtYXR1cmVF
eGl0RmlsZUV4aXN0cygpKQorICAgICAgPDwgIiBmaWxlICIgPDwgcHJlbWF0dXJlX2V4aXRfZmls
ZV9wYXRoXworICAgICAgPDwgIiBzaG91bGQgZXhpc3QgZHVyaW5nIHRlc3QgZXhlY3V0aW9uLCBi
dXQgZG9lc24ndC4iOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIgKiphcmd2KSB7CisgIEluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgY29uc3Qg
aW50IGV4aXRfY29kZSA9IFJVTl9BTExfVEVTVFMoKTsKKworICAvLyBUZXN0IHRoYXQgdGhlIHBy
ZW1hdHVyZS1leGl0IGZpbGUgaXMgZGVsZXRlZCB1cG9uIHJldHVybiBmcm9tCisgIC8vIFJVTl9B
TExfVEVTVFMoKS4KKyAgY29uc3QgY2hhciogY29uc3QgZmlsZXBhdGggPSBHZXRFbnYoIlRFU1Rf
UFJFTUFUVVJFX0VYSVRfRklMRSIpOworICBpZiAoZmlsZXBhdGggIT0gTlVMTCAmJiAqZmlsZXBh
dGggIT0gJ1wwJykgeworICAgIGlmIChQcmVtYXR1cmVFeGl0VGVzdDo6RmlsZUV4aXN0cyhmaWxl
cGF0aCkpIHsKKyAgICAgIHByaW50ZigKKyAgICAgICAgICAiRmlsZSAlcyBzaG91bGRuJ3QgZXhp
c3QgYWZ0ZXIgdGhlIHRlc3QgcHJvZ3JhbSBmaW5pc2hlcywgYnV0IGRvZXMuIiwKKyAgICAgICAg
ICBmaWxlcGF0aCk7CisgICAgICByZXR1cm4gMTsKKyAgICB9CisgIH0KKworICByZXR1cm4gZXhp
dF9jb2RlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9wcm9kX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Byb2Rf
dGVzdC5jYwppbmRleCBiYzMyMDFkMGYyNGFlOThlZDA2MmM3YjhjOWY0NGQ3ZGZlNmQ3Yzk2Li5l
ZGU4MWEwZDE3YTAyYzg1M2VkMjIzNGVjODhmZTgyNzcxODBhMzdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Byb2RfdGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Byb2RfdGVzdC5jYwpAQCAtMjYsMTMgKzI2LDEy
IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKIC8v
Ci0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVW5pdCB0
ZXN0IGZvciBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaC4KKy8vIFVuaXQgdGVzdCBmb3IgZ3Rl
c3RfcHJvZC5oLgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlICJ0ZXN0L3By
b2R1Y3Rpb24uaCIKKyNpbmNsdWRlICJwcm9kdWN0aW9uLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKIAogLy8gVGVzdHMgdGhhdCBwcml2YXRlIG1lbWJlcnMgY2FuIGJlIGFjY2Vzc2VkIGZy
b20gYSBURVNUIGRlY2xhcmVkIGFzCiAvLyBhIGZyaWVuZCBvZiB0aGUgY2xhc3MuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3JlcGVhdF90ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9yZXBlYXRfdGVzdC5jYwppbmRleCBk
ZjY4NjhiODMwMjk2MTI1YTI3YzdmMzdmOTMxNmNlZDRlZDgyZDU0Li4xZThmNDk5YmI5ZGUzZDE0
YmNiM2JiMWE2NDFjMDZkN2ExMjUwYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3JlcGVhdF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfcmVwZWF0X3Rlc3QuY2MKQEAgLTI2LDIzICsyNiwxNCBAQAogLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUZXN0cyB0aGUgLS1ndGVzdF9y
ZXBlYXQ9bnVtYmVyIGZsYWcuCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxpb3N0
cmVhbT4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlz
IHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRh
dGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGlu
Y2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlz
IHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3Qt
aW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRB
VElPTl8gMQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAic3JjL2d0ZXN0LWlu
dGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwogCiBuYW1lc3BhY2Ug
dGVzdGluZyB7CiAKQEAgLTY5LDEzICs2MCwxMyBAQCBuYW1lc3BhY2UgewogICAgICAgICAgICAg
ICAgICAgPDwgIiAgQWN0dWFsOiAiIDw8IGFjdHVhbF92YWwgPDwgIlxuIlwKICAgICAgICAgICAg
ICAgICAgIDw8ICJFeHBlY3RlZDogIiAjZXhwZWN0ZWQgIlxuIlwKICAgICAgICAgICAgICAgICAg
IDw8ICJXaGljaCBpczogIiA8PCBleHBlY3RlZF92YWwgPDwgIlxuIjtcCi0gICAgICBhYm9ydCgp
O1wKKyAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpBYm9ydCgpO1wKICAgICB9XAot
ICB9IHdoaWxlKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCisgIH0gd2hpbGUg
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCiAKIAogLy8gVXNlZCBmb3IgdmVy
aWZ5aW5nIHRoYXQgZ2xvYmFsIGVudmlyb25tZW50IHNldC11cCBhbmQgdGVhci1kb3duIGFyZQot
Ly8gaW5zaWRlIHRoZSBndGVzdF9yZXBlYXQgbG9vcC4KKy8vIGluc2lkZSB0aGUgLS1ndGVzdF9y
ZXBlYXQgbG9vcC4KIAogaW50IGdfZW52aXJvbm1lbnRfc2V0X3VwX2NvdW50ID0gMDsKIGludCBn
X2Vudmlyb25tZW50X3RlYXJfZG93bl9jb3VudCA9IDA7CkBAIC0xMTMsMTMgKzEwNCwxMiBAQCBU
RVNUKEJhckRlYXRoVGVzdCwgVGhyZWFkU2FmZUFuZEZhc3QpIHsKICAgZ19kZWF0aF90ZXN0X2Nv
dW50Kys7CiAKICAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsK
LSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChhYm9ydCgpLCAiIik7CisgIEVYUEVDVF9ERUFU
SF9JRl9TVVBQT1JURUQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OkFib3J0KCksICIiKTsK
IAogICBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOwotICBFWFBFQ1RfREVB
VEhfSUZfU1VQUE9SVEVEKGFib3J0KCksICIiKTsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRF
RCg6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6QWJvcnQoKSwgIiIpOwogfQogCi0jaWYgR1RF
U1RfSEFTX1BBUkFNX1RFU1QKIGludCBnX3BhcmFtX3Rlc3RfY291bnQgPSAwOwogCiBjb25zdCBp
bnQga051bWJlck9mUGFyYW1UZXN0cyA9IDEwOwpAQCAtMTI3LDE1ICsxMTcsMTMgQEAgY29uc3Qg
aW50IGtOdW1iZXJPZlBhcmFtVGVzdHMgPSAxMDsKIGNsYXNzIE15UGFyYW1UZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7fTsKIAogVEVTVF9QKE15UGFyYW1UZXN0LCBT
aG91bGRQYXNzKSB7Ci0gIC8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IE1ha2UgcGFyYW1ldGVy
IHZhbHVlIGNoZWNraW5nIHJvYnVzdAotICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBXUlQg
b3JkZXIgb2YgdGVzdHMuCisgIC8vIEZJWE1FOiBNYWtlIHBhcmFtZXRlciB2YWx1ZSBjaGVja2lu
ZyByb2J1c3QgV1JUIG9yZGVyIG9mIHRlc3RzLgogICBHVEVTVF9DSEVDS19JTlRfRVFfKGdfcGFy
YW1fdGVzdF9jb3VudCAlIGtOdW1iZXJPZlBhcmFtVGVzdHMsIEdldFBhcmFtKCkpOwogICBnX3Bh
cmFtX3Rlc3RfY291bnQrKzsKIH0KIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKE15UGFyYW1TZXF1
ZW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgIE15UGFyYW1UZXN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdGluZzo6UmFuZ2UoMCwga051bWJlck9mUGFyYW1UZXN0cykpOwotI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogCiAvLyBSZXNldHMgdGhlIGNvdW50IGZvciBl
YWNoIHRlc3QuCiB2b2lkIFJlc2V0Q291bnRzKCkgewpAQCAtMTQ0LDkgKzEzMiw3IEBAIHZvaWQg
UmVzZXRDb3VudHMoKSB7CiAgIGdfc2hvdWxkX2ZhaWxfY291bnQgPSAwOwogICBnX3Nob3VsZF9w
YXNzX2NvdW50ID0gMDsKICAgZ19kZWF0aF90ZXN0X2NvdW50ID0gMDsKLSNpZiBHVEVTVF9IQVNf
UEFSQU1fVEVTVAogICBnX3BhcmFtX3Rlc3RfY291bnQgPSAwOwotI2VuZGlmICAvLyBHVEVTVF9I
QVNfUEFSQU1fVEVTVAogfQogCiAvLyBDaGVja3MgdGhhdCB0aGUgY291bnQgZm9yIGVhY2ggdGVz
dCBpcyBleHBlY3RlZC4KQEAgLTE1Niw5ICsxNDIsNyBAQCB2b2lkIENoZWNrQ291bnRzKGludCBl
eHBlY3RlZCkgewogICBHVEVTVF9DSEVDS19JTlRfRVFfKGV4cGVjdGVkLCBnX3Nob3VsZF9mYWls
X2NvdW50KTsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhleHBlY3RlZCwgZ19zaG91bGRfcGFzc19j
b3VudCk7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8oZXhwZWN0ZWQsIGdfZGVhdGhfdGVzdF9jb3Vu
dCk7Ci0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhleHBl
Y3RlZCAqIGtOdW1iZXJPZlBhcmFtVGVzdHMsIGdfcGFyYW1fdGVzdF9jb3VudCk7Ci0jZW5kaWYg
IC8vIEdURVNUX0hBU19QQVJBTV9URVNUCiB9CiAKIC8vIFRlc3RzIHRoZSBiZWhhdmlvciBvZiBH
b29nbGUgVGVzdCB3aGVuIC0tZ3Rlc3RfcmVwZWF0IGlzIG5vdCBzcGVjaWZpZWQuCkBAIC0yMDEs
OSArMTg1LDcgQEAgdm9pZCBUZXN0UmVwZWF0V2l0aEZpbHRlckZvclN1Y2Nlc3NmdWxUZXN0cyhp
bnQgcmVwZWF0KSB7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8oMCwgZ19zaG91bGRfZmFpbF9jb3Vu
dCk7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0LCBnX3Nob3VsZF9wYXNzX2NvdW50KTsK
ICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhyZXBlYXQsIGdfZGVhdGhfdGVzdF9jb3VudCk7Ci0jaWYg
R1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhyZXBlYXQgKiBrTnVt
YmVyT2ZQYXJhbVRlc3RzLCBnX3BhcmFtX3Rlc3RfY291bnQpOwotI2VuZGlmICAvLyBHVEVTVF9I
QVNfUEFSQU1fVEVTVAogfQogCiAvLyBUZXN0cyB1c2luZyAtLWd0ZXN0X3JlcGVhdCB3aGVuIC0t
Z3Rlc3RfZmlsdGVyIHNwZWNpZmllcyBhIHNldCBvZgpAQCAtMjE5LDE1ICsyMDEsMTQgQEAgdm9p
ZCBUZXN0UmVwZWF0V2l0aEZpbHRlckZvckZhaWxlZFRlc3RzKGludCByZXBlYXQpIHsKICAgR1RF
U1RfQ0hFQ0tfSU5UX0VRXyhyZXBlYXQsIGdfc2hvdWxkX2ZhaWxfY291bnQpOwogICBHVEVTVF9D
SEVDS19JTlRfRVFfKDAsIGdfc2hvdWxkX3Bhc3NfY291bnQpOwogICBHVEVTVF9DSEVDS19JTlRf
RVFfKDAsIGdfZGVhdGhfdGVzdF9jb3VudCk7Ci0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAg
R1RFU1RfQ0hFQ0tfSU5UX0VRXygwLCBnX3BhcmFtX3Rlc3RfY291bnQpOwotI2VuZGlmICAvLyBH
VEVTVF9IQVNfUEFSQU1fVEVTVAogfQogCiB9ICAvLyBuYW1lc3BhY2UKIAogaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIgKiphcmd2KSB7CiAgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBh
cmd2KTsKKwogICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IE15RW52aXJv
bm1lbnQpOwogCiAgIFRlc3RSZXBlYXRVbnNwZWNpZmllZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3QucHkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMzBkMDMwM2QxOTM1NTRhNWZkMGI5YjFmNmE1MWVmN2QwOWYzMDYxMi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdC5weQorKysgL2Rldi9udWxsCkBA
IC0xLDMyNSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIw
MDkgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LSIiIlZlcmlmaWVzIHRoYXQgdGVzdCBzaHVmZmxpbmcgd29ya3MuIiIiCi0KLV9fYXV0aG9yX18g
PSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBvcwotaW1wb3J0IGd0
ZXN0X3Rlc3RfdXRpbHMKLQotIyBDb21tYW5kIHRvIHJ1biB0aGUgZ3Rlc3Rfc2h1ZmZsZV90ZXN0
XyBwcm9ncmFtLgotQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQ
YXRoKCdndGVzdF9zaHVmZmxlX3Rlc3RfJykKLQotIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVz
IGZvciB0ZXN0IHNoYXJkaW5nLgotVE9UQUxfU0hBUkRTX0VOVl9WQVIgPSAnR1RFU1RfVE9UQUxf
U0hBUkRTJwotU0hBUkRfSU5ERVhfRU5WX1ZBUiA9ICdHVEVTVF9TSEFSRF9JTkRFWCcKLQotVEVT
VF9GSUxURVIgPSAnQSouQTpBKi5COkMqJwotCi1BTExfVEVTVFMgPSBbXQotQUNUSVZFX1RFU1RT
ID0gW10KLUZJTFRFUkVEX1RFU1RTID0gW10KLVNIQVJERURfVEVTVFMgPSBbXQotCi1TSFVGRkxF
RF9BTExfVEVTVFMgPSBbXQotU0hVRkZMRURfQUNUSVZFX1RFU1RTID0gW10KLVNIVUZGTEVEX0ZJ
TFRFUkVEX1RFU1RTID0gW10KLVNIVUZGTEVEX1NIQVJERURfVEVTVFMgPSBbXQotCi0KLWRlZiBB
bHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcoKToKLSAgcmV0dXJuICctLWd0ZXN0X2Fsc29fcnVuX2Rp
c2FibGVkX3Rlc3RzJwotCi0KLWRlZiBGaWx0ZXJGbGFnKHRlc3RfZmlsdGVyKToKLSAgcmV0dXJu
ICctLWd0ZXN0X2ZpbHRlcj0lcycgJSAodGVzdF9maWx0ZXIsKQotCi0KLWRlZiBSZXBlYXRGbGFn
KG4pOgotICByZXR1cm4gJy0tZ3Rlc3RfcmVwZWF0PSVzJyAlIChuLCkKLQotCi1kZWYgU2h1ZmZs
ZUZsYWcoKToKLSAgcmV0dXJuICctLWd0ZXN0X3NodWZmbGUnCi0KLQotZGVmIFJhbmRvbVNlZWRG
bGFnKG4pOgotICByZXR1cm4gJy0tZ3Rlc3RfcmFuZG9tX3NlZWQ9JXMnICUgKG4sKQotCi0KLWRl
ZiBSdW5BbmRSZXR1cm5PdXRwdXQoZXh0cmFfZW52LCBhcmdzKToKLSAgIiIiUnVucyB0aGUgdGVz
dCBwcm9ncmFtIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQuIiIiCi0KLSAgZW52aXJvbl9jb3B5ID0g
b3MuZW52aXJvbi5jb3B5KCkKLSAgZW52aXJvbl9jb3B5LnVwZGF0ZShleHRyYV9lbnYpCi0KLSAg
cmV0dXJuIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhbQ09NTUFORF0gKyBhcmdzLCBlbnY9
ZW52aXJvbl9jb3B5KS5vdXRwdXQKLQotCi1kZWYgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKGV4
dHJhX2VudiwgYXJncyk6Ci0gICIiIlJ1bnMgdGhlIHRlc3QgcHJvZ3JhbSBhbmQgcmV0dXJucyBh
IGxpc3Qgb2YgdGVzdCBsaXN0cy4KLQotICBBcmdzOgotICAgIGV4dHJhX2VudjogYSBtYXAgZnJv
bSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gdGhlaXIgdmFsdWVzCi0gICAgYXJnczogY29tbWFu
ZCBsaW5lIGZsYWdzIHRvIHBhc3MgdG8gZ3Rlc3Rfc2h1ZmZsZV90ZXN0XwotCi0gIFJldHVybnM6
Ci0gICAgQSBsaXN0IHdoZXJlIHRoZSBpLXRoIGVsZW1lbnQgaXMgdGhlIGxpc3Qgb2YgdGVzdHMg
cnVuIGluIHRoZSBpLXRoCi0gICAgdGVzdCBpdGVyYXRpb24uCi0gICIiIgotCi0gIHRlc3RfaXRl
cmF0aW9ucyA9IFtdCi0gIGZvciBsaW5lIGluIFJ1bkFuZFJldHVybk91dHB1dChleHRyYV9lbnYs
IGFyZ3MpLnNwbGl0KCdcbicpOgotICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnLS0tLScpOgotICAg
ICAgdGVzdHMgPSBbXQotICAgICAgdGVzdF9pdGVyYXRpb25zLmFwcGVuZCh0ZXN0cykKLSAgICBl
bGlmIGxpbmUuc3RyaXAoKToKLSAgICAgIHRlc3RzLmFwcGVuZChsaW5lLnN0cmlwKCkpICAjICdU
ZXN0Q2FzZU5hbWUuVGVzdE5hbWUnCi0KLSAgcmV0dXJuIHRlc3RfaXRlcmF0aW9ucwotCi0KLWRl
ZiBHZXRUZXN0Q2FzZXModGVzdHMpOgotICAiIiJSZXR1cm5zIGEgbGlzdCBvZiB0ZXN0IGNhc2Vz
IGluIHRoZSBnaXZlbiBmdWxsIHRlc3QgbmFtZXMuCi0KLSAgQXJnczoKLSAgICB0ZXN0czogYSBs
aXN0IG9mIGZ1bGwgdGVzdCBuYW1lcwotCi0gIFJldHVybnM6Ci0gICAgQSBsaXN0IG9mIHRlc3Qg
Y2FzZXMgZnJvbSAndGVzdHMnLCBpbiB0aGVpciBvcmlnaW5hbCBvcmRlci4KLSAgICBDb25zZWN1
dGl2ZSBkdXBsaWNhdGVzIGFyZSByZW1vdmVkLgotICAiIiIKLQotICB0ZXN0X2Nhc2VzID0gW10K
LSAgZm9yIHRlc3QgaW4gdGVzdHM6Ci0gICAgdGVzdF9jYXNlID0gdGVzdC5zcGxpdCgnLicpWzBd
Ci0gICAgaWYgbm90IHRlc3RfY2FzZSBpbiB0ZXN0X2Nhc2VzOgotICAgICAgdGVzdF9jYXNlcy5h
cHBlbmQodGVzdF9jYXNlKQotCi0gIHJldHVybiB0ZXN0X2Nhc2VzCi0KLQotZGVmIENhbGN1bGF0
ZVRlc3RMaXN0cygpOgotICAiIiJDYWxjdWxhdGVzIHRoZSBsaXN0IG9mIHRlc3RzIHJ1biB1bmRl
ciBkaWZmZXJlbnQgZmxhZ3MuIiIiCi0KLSAgaWYgbm90IEFMTF9URVNUUzoKLSAgICBBTExfVEVT
VFMuZXh0ZW5kKAotICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe30sIFtBbHNvUnVu
RGlzYWJsZWRUZXN0c0ZsYWcoKV0pWzBdKQotCi0gIGlmIG5vdCBBQ1RJVkVfVEVTVFM6Ci0gICAg
QUNUSVZFX1RFU1RTLmV4dGVuZChHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe30sIFtdKVswXSkK
LQotICBpZiBub3QgRklMVEVSRURfVEVTVFM6Ci0gICAgRklMVEVSRURfVEVTVFMuZXh0ZW5kKAot
ICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe30sIFtGaWx0ZXJGbGFnKFRFU1RfRklM
VEVSKV0pWzBdKQotCi0gIGlmIG5vdCBTSEFSREVEX1RFU1RTOgotICAgIFNIQVJERURfVEVTVFMu
ZXh0ZW5kKAotICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe1RPVEFMX1NIQVJEU19F
TlZfVkFSOiAnMycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBUkRfSU5E
RVhfRU5WX1ZBUjogJzEnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKVsw
XSkKLQotICBpZiBub3QgU0hVRkZMRURfQUxMX1RFU1RTOgotICAgIFNIVUZGTEVEX0FMTF9URVNU
Uy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAotICAgICAgICB7fSwgW0Fsc29SdW5E
aXNhYmxlZFRlc3RzRmxhZygpLCBTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0pWzBd
KQotCi0gIGlmIG5vdCBTSFVGRkxFRF9BQ1RJVkVfVEVTVFM6Ci0gICAgU0hVRkZMRURfQUNUSVZF
X1RFU1RTLmV4dGVuZChHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBbU2h1
ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSldKVswXSkKLQotICBpZiBub3QgU0hVRkZMRURf
RklMVEVSRURfVEVTVFM6Ci0gICAgU0hVRkZMRURfRklMVEVSRURfVEVTVFMuZXh0ZW5kKEdldFRl
c3RzRm9yQWxsSXRlcmF0aW9ucygKLSAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21T
ZWVkRmxhZygxKSwgRmlsdGVyRmxhZyhURVNUX0ZJTFRFUildKVswXSkKLQotICBpZiBub3QgU0hV
RkZMRURfU0hBUkRFRF9URVNUUzoKLSAgICBTSFVGRkxFRF9TSEFSREVEX1RFU1RTLmV4dGVuZCgK
LSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjog
JzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VOVl9W
QVI6ICcxJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU2h1ZmZsZUZsYWco
KSwgUmFuZG9tU2VlZEZsYWcoMSldKVswXSkKLQotCi1jbGFzcyBHVGVzdFNodWZmbGVVbml0VGVz
dChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAgIiIiVGVzdHMgdGVzdCBzaHVmZmxpbmcu
IiIiCi0KLSAgZGVmIHNldFVwKHNlbGYpOgotICAgIENhbGN1bGF0ZVRlc3RMaXN0cygpCi0KLSAg
ZGVmIHRlc3RTaHVmZmxlUHJlc2VydmVzTnVtYmVyT2ZUZXN0cyhzZWxmKToKLSAgICBzZWxmLmFz
c2VydEVxdWFsKGxlbihBTExfVEVTVFMpLCBsZW4oU0hVRkZMRURfQUxMX1RFU1RTKSkKLSAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihBQ1RJVkVfVEVTVFMpLCBsZW4oU0hVRkZMRURfQUNUSVZFX1RF
U1RTKSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihGSUxURVJFRF9URVNUUyksIGxlbihTSFVG
RkxFRF9GSUxURVJFRF9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oU0hBUkRFRF9U
RVNUUyksIGxlbihTSFVGRkxFRF9TSEFSREVEX1RFU1RTKSkKLQotICBkZWYgdGVzdFNodWZmbGVD
aGFuZ2VzVGVzdE9yZGVyKHNlbGYpOgotICAgIHNlbGYuYXNzZXJ0XyhTSFVGRkxFRF9BTExfVEVT
VFMgIT0gQUxMX1RFU1RTLCBTSFVGRkxFRF9BTExfVEVTVFMpCi0gICAgc2VsZi5hc3NlcnRfKFNI
VUZGTEVEX0FDVElWRV9URVNUUyAhPSBBQ1RJVkVfVEVTVFMsIFNIVUZGTEVEX0FDVElWRV9URVNU
UykKLSAgICBzZWxmLmFzc2VydF8oU0hVRkZMRURfRklMVEVSRURfVEVTVFMgIT0gRklMVEVSRURf
VEVTVFMsCi0gICAgICAgICAgICAgICAgIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTKQotICAgIHNl
bGYuYXNzZXJ0XyhTSFVGRkxFRF9TSEFSREVEX1RFU1RTICE9IFNIQVJERURfVEVTVFMsCi0gICAg
ICAgICAgICAgICAgIFNIVUZGTEVEX1NIQVJERURfVEVTVFMpCi0KLSAgZGVmIHRlc3RTaHVmZmxl
Q2hhbmdlc1Rlc3RDYXNlT3JkZXIoc2VsZik6Ci0gICAgc2VsZi5hc3NlcnRfKEdldFRlc3RDYXNl
cyhTSFVGRkxFRF9BTExfVEVTVFMpICE9IEdldFRlc3RDYXNlcyhBTExfVEVTVFMpLAotICAgICAg
ICAgICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfQUxMX1RFU1RTKSkKLSAgICBzZWxmLmFz
c2VydF8oCi0gICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9BQ1RJVkVfVEVTVFMpICE9IEdl
dFRlc3RDYXNlcyhBQ1RJVkVfVEVTVFMpLAotICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURf
QUNUSVZFX1RFU1RTKSkKLSAgICBzZWxmLmFzc2VydF8oCi0gICAgICAgIEdldFRlc3RDYXNlcyhT
SFVGRkxFRF9GSUxURVJFRF9URVNUUykgIT0gR2V0VGVzdENhc2VzKEZJTFRFUkVEX1RFU1RTKSwK
LSAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTKSkKLSAgICBzZWxm
LmFzc2VydF8oCi0gICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9TSEFSREVEX1RFU1RTKSAh
PSBHZXRUZXN0Q2FzZXMoU0hBUkRFRF9URVNUUyksCi0gICAgICAgIEdldFRlc3RDYXNlcyhTSFVG
RkxFRF9TSEFSREVEX1RFU1RTKSkKLQotICBkZWYgdGVzdFNodWZmbGVEb2VzTm90UmVwZWF0VGVz
dChzZWxmKToKLSAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9BTExfVEVTVFM6Ci0gICAgICBzZWxm
LmFzc2VydEVxdWFsKDEsIFNIVUZGTEVEX0FMTF9URVNUUy5jb3VudCh0ZXN0KSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UnICUgKHRlc3QsKSkKLSAg
ICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9BQ1RJVkVfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydEVx
dWFsKDEsIFNIVUZGTEVEX0FDVElWRV9URVNUUy5jb3VudCh0ZXN0KSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgJyVzIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UnICUgKHRlc3QsKSkKLSAgICBmb3Ig
dGVzdCBpbiBTSFVGRkxFRF9GSUxURVJFRF9URVNUUzoKLSAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MSwgU0hVRkZMRURfRklMVEVSRURfVEVTVFMuY291bnQodGVzdCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRl
c3QgaW4gU0hVRkZMRURfU0hBUkRFRF9URVNUUzoKLSAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwg
U0hVRkZMRURfU0hBUkRFRF9URVNUUy5jb3VudCh0ZXN0KSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgJyVzIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UnICUgKHRlc3QsKSkKLQotICBkZWYgdGVzdFNo
dWZmbGVEb2VzTm90Q3JlYXRlTmV3VGVzdChzZWxmKToKLSAgICBmb3IgdGVzdCBpbiBTSFVGRkxF
RF9BTExfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBBTExfVEVTVFMsICclcyBp
cyBhbiBpbnZhbGlkIHRlc3QnICUgKHRlc3QsKSkKLSAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9B
Q1RJVkVfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBBQ1RJVkVfVEVTVFMsICcl
cyBpcyBhbiBpbnZhbGlkIHRlc3QnICUgKHRlc3QsKSkKLSAgICBmb3IgdGVzdCBpbiBTSFVGRkxF
RF9GSUxURVJFRF9URVNUUzoKLSAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIEZJTFRFUkVEX1RF
U1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4g
U0hVRkZMRURfU0hBUkRFRF9URVNUUzoKLSAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIQVJE
RURfVEVTVFMsICclcyBpcyBhbiBpbnZhbGlkIHRlc3QnICUgKHRlc3QsKSkKLQotICBkZWYgdGVz
dFNodWZmbGVJbmNsdWRlc0FsbFRlc3RzKHNlbGYpOgotICAgIGZvciB0ZXN0IGluIEFMTF9URVNU
UzoKLSAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIVUZGTEVEX0FMTF9URVNUUywgJyVzIGlz
IG1pc3NpbmcnICUgKHRlc3QsKSkKLSAgICBmb3IgdGVzdCBpbiBBQ1RJVkVfVEVTVFM6Ci0gICAg
ICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMsICclcyBpcyBtaXNz
aW5nJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gRklMVEVSRURfVEVTVFM6Ci0gICAgICBz
ZWxmLmFzc2VydF8odGVzdCBpbiBTSFVGRkxFRF9GSUxURVJFRF9URVNUUywgJyVzIGlzIG1pc3Np
bmcnICUgKHRlc3QsKSkKLSAgICBmb3IgdGVzdCBpbiBTSEFSREVEX1RFU1RTOgotICAgICAgc2Vs
Zi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfU0hBUkRFRF9URVNUUywgJyVzIGlzIG1pc3Npbmcn
ICUgKHRlc3QsKSkKLQotICBkZWYgdGVzdFNodWZmbGVMZWF2ZXNEZWF0aFRlc3RzQXRGcm9udChz
ZWxmKToKLSAgICBub25fZGVhdGhfdGVzdF9mb3VuZCA9IEZhbHNlCi0gICAgZm9yIHRlc3QgaW4g
U0hVRkZMRURfQUNUSVZFX1RFU1RTOgotICAgICAgaWYgJ0RlYXRoVGVzdC4nIGluIHRlc3Q6Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qgbm9uX2RlYXRoX3Rlc3RfZm91bmQsCi0gICAgICAgICAg
ICAgICAgICAgICAnJXMgYXBwZWFycyBhZnRlciBhIG5vbi1kZWF0aCB0ZXN0JyAlICh0ZXN0LCkp
Ci0gICAgICBlbHNlOgotICAgICAgICBub25fZGVhdGhfdGVzdF9mb3VuZCA9IFRydWUKLQotICBk
ZWYgX1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50ZXJsZWF2ZShzZWxmLCB0ZXN0cyk6Ci0gICAgdGVz
dF9jYXNlcyA9IFtdCi0gICAgZm9yIHRlc3QgaW4gdGVzdHM6Ci0gICAgICBbdGVzdF9jYXNlLCBf
XSA9IHRlc3Quc3BsaXQoJy4nKQotICAgICAgaWYgdGVzdF9jYXNlcyBhbmQgdGVzdF9jYXNlc1st
MV0gIT0gdGVzdF9jYXNlOgotICAgICAgICB0ZXN0X2Nhc2VzLmFwcGVuZCh0ZXN0X2Nhc2UpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgdGVzdF9jYXNlcy5jb3VudCh0ZXN0X2Nhc2UpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICdUZXN0IGNhc2UgJXMgaXMgbm90IGdyb3VwZWQgdG9n
ZXRoZXIgaW4gJXMnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAodGVzdF9jYXNlLCB0ZXN0
cykpCi0KLSAgZGVmIHRlc3RTaHVmZmxlRG9lc05vdEludGVybGVhdmVUZXN0Q2FzZXMoc2VsZik6
Ci0gICAgc2VsZi5fVmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRlcmxlYXZlKFNIVUZGTEVEX0FMTF9U
RVNUUykKLSAgICBzZWxmLl9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUoU0hVRkZMRURf
QUNUSVZFX1RFU1RTKQotICAgIHNlbGYuX1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50ZXJsZWF2ZShT
SFVGRkxFRF9GSUxURVJFRF9URVNUUykKLSAgICBzZWxmLl9WZXJpZnlUZXN0Q2FzZXNEb05vdElu
dGVybGVhdmUoU0hVRkZMRURfU0hBUkRFRF9URVNUUykKLQotICBkZWYgdGVzdFNodWZmbGVSZXN0
b3Jlc09yZGVyQWZ0ZXJFYWNoSXRlcmF0aW9uKHNlbGYpOgotICAgICMgR2V0IHRoZSB0ZXN0IGxp
c3RzIGluIGFsbCAzIGl0ZXJhdGlvbnMsIHVzaW5nIHJhbmRvbSBzZWVkIDEsIDIsCi0gICAgIyBh
bmQgMyByZXNwZWN0aXZlbHkuICBHb29nbGUgVGVzdCBwaWNrcyBhIGRpZmZlcmVudCBzZWVkIGlu
IGVhY2gKLSAgICAjIGl0ZXJhdGlvbiwgYW5kIHRoaXMgdGVzdCBkZXBlbmRzIG9uIHRoZSBjdXJy
ZW50IGltcGxlbWVudGF0aW9uCi0gICAgIyBwaWNraW5nIHN1Y2Nlc3NpdmUgbnVtYmVycy4gIFRo
aXMgZGVwZW5kZW5jeSBpcyBub3QgaWRlYWwsIGJ1dAotICAgICMgbWFrZXMgdGhlIHRlc3QgbXVj
aCBlYXNpZXIgdG8gd3JpdGUuCi0gICAgW3Rlc3RzX2luX2l0ZXJhdGlvbjEsIHRlc3RzX2luX2l0
ZXJhdGlvbjIsIHRlc3RzX2luX2l0ZXJhdGlvbjNdID0gKAotICAgICAgICBHZXRUZXN0c0ZvckFs
bEl0ZXJhdGlvbnMoCi0gICAgICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRG
bGFnKDEpLCBSZXBlYXRGbGFnKDMpXSkpCi0KLSAgICAjIE1ha2Ugc3VyZSBydW5uaW5nIHRoZSB0
ZXN0cyB3aXRoIHJhbmRvbSBzZWVkIDEgZ2V0cyB0aGUgc2FtZQotICAgICMgb3JkZXIgYXMgaW4g
aXRlcmF0aW9uIDEgYWJvdmUuCi0gICAgW3Rlc3RzX3dpdGhfc2VlZDFdID0gR2V0VGVzdHNGb3JB
bGxJdGVyYXRpb25zKAotICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFn
KDEpXSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzX2luX2l0ZXJhdGlvbjEsIHRlc3RzX3dp
dGhfc2VlZDEpCi0KLSAgICAjIE1ha2Ugc3VyZSBydW5uaW5nIHRoZSB0ZXN0cyB3aXRoIHJhbmRv
bSBzZWVkIDIgZ2V0cyB0aGUgc2FtZQotICAgICMgb3JkZXIgYXMgaW4gaXRlcmF0aW9uIDIgYWJv
dmUuICBTdWNjZXNzIG1lYW5zIHRoYXQgR29vZ2xlIFRlc3QKLSAgICAjIGNvcnJlY3RseSByZXN0
b3JlcyB0aGUgdGVzdCBvcmRlciBiZWZvcmUgcmUtc2h1ZmZsaW5nIGF0IHRoZQotICAgICMgYmVn
aW5uaW5nIG9mIGl0ZXJhdGlvbiAyLgotICAgIFt0ZXN0c193aXRoX3NlZWQyXSA9IEdldFRlc3Rz
Rm9yQWxsSXRlcmF0aW9ucygKLSAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVk
RmxhZygyKV0pCi0gICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0c19pbl9pdGVyYXRpb24yLCB0ZXN0
c193aXRoX3NlZWQyKQotCi0gICAgIyBNYWtlIHN1cmUgcnVubmluZyB0aGUgdGVzdHMgd2l0aCBy
YW5kb20gc2VlZCAzIGdldHMgdGhlIHNhbWUKLSAgICAjIG9yZGVyIGFzIGluIGl0ZXJhdGlvbiAz
IGFib3ZlLiAgU3VjY2VzcyBtZWFucyB0aGF0IEdvb2dsZSBUZXN0Ci0gICAgIyBjb3JyZWN0bHkg
cmVzdG9yZXMgdGhlIHRlc3Qgb3JkZXIgYmVmb3JlIHJlLXNodWZmbGluZyBhdCB0aGUKLSAgICAj
IGJlZ2lubmluZyBvZiBpdGVyYXRpb24gMy4KLSAgICBbdGVzdHNfd2l0aF9zZWVkM10gPSBHZXRU
ZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9t
U2VlZEZsYWcoMyldKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHNfaW5faXRlcmF0aW9uMywg
dGVzdHNfd2l0aF9zZWVkMykKLQotICBkZWYgdGVzdFNodWZmbGVHZW5lcmF0ZXNOZXdPcmRlcklu
RWFjaEl0ZXJhdGlvbihzZWxmKToKLSAgICBbdGVzdHNfaW5faXRlcmF0aW9uMSwgdGVzdHNfaW5f
aXRlcmF0aW9uMiwgdGVzdHNfaW5faXRlcmF0aW9uM10gPSAoCi0gICAgICAgIEdldFRlc3RzRm9y
QWxsSXRlcmF0aW9ucygKLSAgICAgICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2Vl
ZEZsYWcoMSksIFJlcGVhdEZsYWcoMyldKSkKLQotICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0c19pbl9p
dGVyYXRpb24xICE9IHRlc3RzX2luX2l0ZXJhdGlvbjIsCi0gICAgICAgICAgICAgICAgIHRlc3Rz
X2luX2l0ZXJhdGlvbjEpCi0gICAgc2VsZi5hc3NlcnRfKHRlc3RzX2luX2l0ZXJhdGlvbjEgIT0g
dGVzdHNfaW5faXRlcmF0aW9uMywKLSAgICAgICAgICAgICAgICAgdGVzdHNfaW5faXRlcmF0aW9u
MSkKLSAgICBzZWxmLmFzc2VydF8odGVzdHNfaW5faXRlcmF0aW9uMiAhPSB0ZXN0c19pbl9pdGVy
YXRpb24zLAotICAgICAgICAgICAgICAgICB0ZXN0c19pbl9pdGVyYXRpb24yKQotCi0gIGRlZiB0
ZXN0U2h1ZmZsZVNoYXJkZWRUZXN0c1ByZXNlcnZlc1BhcnRpdGlvbihzZWxmKToKLSAgICAjIElm
IHdlIHJ1biBNIHRlc3RzIG9uIE4gc2hhcmRzLCB0aGUgc2FtZSBNIHRlc3RzIHNob3VsZCBiZSBy
dW4gaW4KLSAgICAjIHRvdGFsLCByZWdhcmRsZXNzIG9mIHRoZSByYW5kb20gc2VlZHMgdXNlZCBi
eSB0aGUgc2hhcmRzLgotICAgIFt0ZXN0czFdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtU
T1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMCd9LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0p
Ci0gICAgW3Rlc3RzMl0gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe1RPVEFMX1NIQVJEU19F
TlZfVkFSOiAnMycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNI
QVJEX0lOREVYX0VOVl9WQVI6ICcxJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDIwKV0pCi0gICAgW3Rlc3Rz
M10gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe1RPVEFMX1NIQVJEU19FTlZfVkFSOiAnMycs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VO
Vl9WQVI6ICcyJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1No
dWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDI1KV0pCi0gICAgc29ydGVkX3NoYXJkZWRfdGVz
dHMgPSB0ZXN0czEgKyB0ZXN0czIgKyB0ZXN0czMKLSAgICBzb3J0ZWRfc2hhcmRlZF90ZXN0cy5z
b3J0KCkKLSAgICBzb3J0ZWRfYWN0aXZlX3Rlc3RzID0gW10KLSAgICBzb3J0ZWRfYWN0aXZlX3Rl
c3RzLmV4dGVuZChBQ1RJVkVfVEVTVFMpCi0gICAgc29ydGVkX2FjdGl2ZV90ZXN0cy5zb3J0KCkK
LSAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZF9hY3RpdmVfdGVzdHMsIHNvcnRlZF9zaGFyZGVk
X3Rlc3RzKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBndGVzdF90ZXN0X3V0aWxz
Lk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9z
aHVmZmxlX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVm
ZmxlX3Rlc3RfLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2VjZjc3NzBhMTQx
MTc2NjhiNGFkZWE2ZmI2ZjUwMjY2NzE3ZGU3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1
ZmZsZV90ZXN0Xy5jYworKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vLyBDb3B5cmln
aHQgMjAwOSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8v
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlv
bi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29v
Z2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBWZXJpZmllcyB0aGF0IHRlc3Qgc2h1ZmZsaW5n
IHdvcmtzLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotbmFtZXNwYWNlIHsKLQotdXNp
bmcgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyOwotdXNpbmcgOjp0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6TWVzc2FnZTsKLXVzaW5nIDo6dGVzdGlu
Zzo6VGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzOwotdXNpbmcgOjp0
ZXN0aW5nOjpUZXN0SW5mbzsKLXVzaW5nIDo6dGVzdGluZzo6VW5pdFRlc3Q7Ci11c2luZyA6OnRl
c3Rpbmc6OmludGVybmFsOjpTdHJpbmc7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpzY29w
ZWRfcHRyOwotCi0vLyBUaGUgdGVzdCBtZXRob2RzIGFyZSBlbXB0eSwgYXMgdGhlIHNvbGUgcHVy
cG9zZSBvZiB0aGlzIHByb2dyYW0gaXMKLS8vIHRvIHByaW50IHRoZSB0ZXN0IG5hbWVzIGJlZm9y
ZS9hZnRlciBzaHVmZmxpbmcuCi0KLWNsYXNzIEEgOiBwdWJsaWMgVGVzdCB7fTsKLVRFU1RfRihB
LCBBKSB7fQotVEVTVF9GKEEsIEIpIHt9Ci0KLVRFU1QoQURlYXRoVGVzdCwgQSkge30KLVRFU1Qo
QURlYXRoVGVzdCwgQikge30KLVRFU1QoQURlYXRoVGVzdCwgQykge30KLQotVEVTVChCLCBBKSB7
fQotVEVTVChCLCBCKSB7fQotVEVTVChCLCBDKSB7fQotVEVTVChCLCBESVNBQkxFRF9EKSB7fQot
VEVTVChCLCBESVNBQkxFRF9FKSB7fQotCi1URVNUKEJEZWF0aFRlc3QsIEEpIHt9Ci1URVNUKEJE
ZWF0aFRlc3QsIEIpIHt9Ci0KLVRFU1QoQywgQSkge30KLVRFU1QoQywgQikge30KLVRFU1QoQywg
Qykge30KLVRFU1QoQywgRElTQUJMRURfRCkge30KLQotVEVTVChDRGVhdGhUZXN0LCBBKSB7fQot
Ci1URVNUKERJU0FCTEVEX0QsIEEpIHt9Ci1URVNUKERJU0FCTEVEX0QsIERJU0FCTEVEX0IpIHt9
Ci0KLS8vIFRoaXMgcHJpbnRlciBwcmludHMgdGhlIGZ1bGwgdGVzdCBuYW1lcyBvbmx5LCBzdGFy
dGluZyBlYWNoIHRlc3QKLS8vIGl0ZXJhdGlvbiB3aXRoIGEgIi0tLS0iIG1hcmtlci4KLWNsYXNz
IFRlc3ROYW1lUHJpbnRlciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKLSBwdWJs
aWM6Ci0gIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25TdGFydChjb25zdCBVbml0VGVzdCYg
LyogdW5pdF90ZXN0ICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IC8qIGl0ZXJhdGlvbiAqLykgewotICAgIHByaW50ZigiLS0tLVxuIik7Ci0gIH0KLQotICB2aXJ0
dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbykgewotICAgIHBy
aW50ZigiJXMuJXNcbiIsIHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFt
ZSgpKTsKLSAgfQotfTsKLQotfSAgLy8gbmFtZXNwYWNlCi0KLWludCBtYWluKGludCBhcmdjLCBj
aGFyICoqYXJndikgewotICBJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgLy8gUmVw
bGFjZXMgdGhlIGRlZmF1bHQgcHJpbnRlciB3aXRoIFRlc3ROYW1lUHJpbnRlciwgd2hpY2ggcHJp
bnRzCi0gIC8vIHRoZSB0ZXN0IG5hbWUgb25seS4KLSAgVGVzdEV2ZW50TGlzdGVuZXJzJiBsaXN0
ZW5lcnMgPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCk7Ci0gIGRlbGV0ZSBs
aXN0ZW5lcnMuUmVsZWFzZShsaXN0ZW5lcnMuZGVmYXVsdF9yZXN1bHRfcHJpbnRlcigpKTsKLSAg
bGlzdGVuZXJzLkFwcGVuZChuZXcgVGVzdE5hbWVQcmludGVyKTsKLQotICByZXR1cm4gUlVOX0FM
TF9URVNUUygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9zb2xlX2hlYWRlcl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9zb2xlX2hlYWRlcl90ZXN0LmNjCmluZGV4IGRlOTFlODAwZjVhMTM4Mjk5OWZjMjAxZjVj
ZjNjZTA0NjRjYWExY2UuLjFkOTRhYzZiM2FkOWY5ZjdkYmFkYmZiMmJmNzQ5YjgyNzE1NjBkYWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFk
ZXJfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3NvbGVf
aGVhZGVyX3Rlc3QuY2MKQEAgLTI2LDEzICsyNiwxMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogbWhldWxlQGdvb2dsZS5j
b20gKE1hcmt1cyBIZXVsZSkKKwogLy8KIC8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGl0J3Mg
cG9zc2libGUgdG8gdXNlIEdvb2dsZSBUZXN0IGJ5IGluY2x1ZGluZwogLy8gdGhlIGd0ZXN0Lmgg
aGVhZGVyIGZpbGUgYWxvbmUuCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCiAKIG5hbWVzcGFjZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc3RyZXNzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X3N0cmVzc190ZXN0LmNjCmluZGV4IGY1YWY3OGNjNmQzZjM5NWEw
MGQ0ZDFjZTg1OTlmYTVmMWRmYTc2MjYuLjk1YWRhMzljMzM3ZDBkNGVjZTZmZjViMzIzMmRlOTZj
M2Q1OTg2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
c3RyZXNzX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9z
dHJlc3NfdGVzdC5jYwpAQCAtMjYsMjMgKzI2LDE2IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAo
WmhhbnlvbmcgV2FuKQorCiAKIC8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFKCkgYW5kIHZhcmlv
dXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBjYW4gYmUKIC8vIHVzZWQgaW4gYSBsYXJnZSBudW1i
ZXIgb2YgdGhyZWFkcyBjb25jdXJyZW50bHkuCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKLSNpbmNsdWRlIDxpb3N0cmVhbT4KICNpbmNsdWRl
IDx2ZWN0b3I+CiAKLS8vIFdlIG11c3QgZGVmaW5lIHRoaXMgbWFjcm8gaW4gb3JkZXIgdG8gI2lu
Y2x1ZGUKLS8vIGd0ZXN0LWludGVybmFsLWlubC5oLiAgVGhpcyBpcyBob3cgR29vZ2xlIFRlc3Qg
cHJldmVudHMgYSB1c2VyIGZyb20KLS8vIGFjY2lkZW50YWxseSBkZXBlbmRpbmcgb24gaXRzIGlu
dGVybmFsIGltcGxlbWVudGF0aW9uLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQog
I2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1F
TlRBVElPTl8KIAogI2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKIApAQCAtNTAsNyArNDMsNiBAQCBu
YW1lc3BhY2UgdGVzdGluZyB7CiBuYW1lc3BhY2UgewogCiB1c2luZyBpbnRlcm5hbDo6Tm90aWZp
Y2F0aW9uOwotdXNpbmcgaW50ZXJuYWw6OlN0cmluZzsKIHVzaW5nIGludGVybmFsOjpUZXN0UHJv
cGVydHlLZXlJczsKIHVzaW5nIGludGVybmFsOjpUaHJlYWRXaXRoUGFyYW07CiB1c2luZyBpbnRl
cm5hbDo6c2NvcGVkX3B0cjsKQEAgLTYyLDEzICs1NCwxMyBAQCB1c2luZyBpbnRlcm5hbDo6c2Nv
cGVkX3B0cjsKIC8vIEhvdyBtYW55IHRocmVhZHMgdG8gY3JlYXRlPwogY29uc3QgaW50IGtUaHJl
YWRDb3VudCA9IDUwOwogCi1TdHJpbmcgSWRUb0tleShpbnQgaWQsIGNvbnN0IGNoYXIqIHN1ZmZp
eCkgeworc3RkOjpzdHJpbmcgSWRUb0tleShpbnQgaWQsIGNvbnN0IGNoYXIqIHN1ZmZpeCkgewog
ICBNZXNzYWdlIGtleTsKICAga2V5IDw8ICJrZXlfIiA8PCBpZCA8PCAiXyIgPDwgc3VmZml4Owog
ICByZXR1cm4ga2V5LkdldFN0cmluZygpOwogfQogCi1TdHJpbmcgSWRUb1N0cmluZyhpbnQgaWQp
IHsKK3N0ZDo6c3RyaW5nIElkVG9TdHJpbmcoaW50IGlkKSB7CiAgIE1lc3NhZ2UgaWRfbWVzc2Fn
ZTsKICAgaWRfbWVzc2FnZSA8PCBpZDsKICAgcmV0dXJuIGlkX21lc3NhZ2UuR2V0U3RyaW5nKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RfbWFj
cm9fc3RhY2tfZm9vdHByaW50X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X3Rlc3RfbWFjcm9fc3RhY2tfZm9vdHByaW50X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ4
ZGIwNTAxMmNjMzBlMGVkZjRhMTM1NGZmMzkyYzkyZDAwMGJmMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGVzdF9tYWNyb19zdGFja19mb290
cHJpbnRfdGVzdC5jYwpAQCAtMCwwICsxLDg5IEBACisvLyBDb3B5cmlnaHQgMjAxMywgR29vZ2xl
IEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
Ky8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vCisvLyBFYWNoIFRFU1QoKSBleHBhbmRzIHRvIHNvbWUg
c3RhdGljIHJlZ2lzdHJhdGlvbiBsb2dpYy4gIEdDQyBwdXRzIGFsbAorLy8gc3VjaCBzdGF0aWMg
aW5pdGlhbGl6YXRpb24gbG9naWMgZm9yIGEgdHJhbnNsYXRpb24gdW5pdCBpbiBhIGNvbW1vbiwK
Ky8vIGludGVybmFsIGZ1bmN0aW9uLiAgU2luY2UgR29vZ2xlJ3MgYnVpbGQgc3lzdGVtIHJlc3Ry
aWN0cyBob3cgbXVjaAorLy8gc3RhY2sgc3BhY2UgYSBmdW5jdGlvbiBjYW4gdXNlLCB0aGVyZSdz
IGEgbGltaXQgb24gaG93IG1hbnkgVEVTVCgpcworLy8gb25lIGNhbiBwdXQgaW4gYSBzaW5nbGUg
QysrIHRlc3QgZmlsZS4gIFRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgYSBsYXJnZQorLy8gbnVtYmVy
IG9mIFRFU1QoKXMgY2FuIGJlIGRlZmluZWQgaW4gdGhlIHNhbWUgdHJhbnNsYXRpb24gdW5pdC4K
KworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKy8vIFRoaXMgbWFjcm8gZGVmaW5lcyAxMCBk
dW1teSB0ZXN0cy4KKyNkZWZpbmUgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZSkgXAorICBURVNU
KHRlc3RfY2FzZV9uYW1lLCBUMCkge30gXAorICBURVNUKHRlc3RfY2FzZV9uYW1lLCBUMSkge30g
XAorICBURVNUKHRlc3RfY2FzZV9uYW1lLCBUMikge30gXAorICBURVNUKHRlc3RfY2FzZV9uYW1l
LCBUMykge30gXAorICBURVNUKHRlc3RfY2FzZV9uYW1lLCBUNCkge30gXAorICBURVNUKHRlc3Rf
Y2FzZV9uYW1lLCBUNSkge30gXAorICBURVNUKHRlc3RfY2FzZV9uYW1lLCBUNikge30gXAorICBU
RVNUKHRlc3RfY2FzZV9uYW1lLCBUNykge30gXAorICBURVNUKHRlc3RfY2FzZV9uYW1lLCBUOCkg
e30gXAorICBURVNUKHRlc3RfY2FzZV9uYW1lLCBUOSkge30KKworLy8gVGhpcyBtYWNybyBkZWZp
bmVzIDEwMCBkdW1teSB0ZXN0cy4KKyNkZWZpbmUgSFVORFJFRF9URVNUU18odGVzdF9jYXNlX25h
bWVfcHJlZml4KSBcCisgIFRFTl9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDApIFwK
KyAgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgMSkgXAorICBURU5fVEVTVFNf
KHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyAyKSBcCisgIFRFTl9URVNUU18odGVzdF9jYXNlX25h
bWVfcHJlZml4ICMjIDMpIFwKKyAgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMg
NCkgXAorICBURU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyA1KSBcCisgIFRFTl9U
RVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDYpIFwKKyAgVEVOX1RFU1RTXyh0ZXN0X2Nh
c2VfbmFtZV9wcmVmaXggIyMgNykgXAorICBURU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZp
eCAjIyA4KSBcCisgIFRFTl9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDkpCisKKy8v
IFRoaXMgbWFjcm8gZGVmaW5lcyAxMDAwIGR1bW15IHRlc3RzLgorI2RlZmluZSBUSE9VU0FORF9U
RVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4KSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3RfY2Fz
ZV9uYW1lX3ByZWZpeCAjIyAwKSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3By
ZWZpeCAjIyAxKSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyAy
KSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyAzKSBcCisgIEhV
TkRSRURfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyA0KSBcCisgIEhVTkRSRURfVEVT
VFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyA1KSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3Rf
Y2FzZV9uYW1lX3ByZWZpeCAjIyA2KSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3RfY2FzZV9uYW1l
X3ByZWZpeCAjIyA3KSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAj
IyA4KSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyA5KQorCisv
LyBFbnN1cmVzIHRoYXQgd2UgY2FuIGRlZmluZSAxMDAwIFRFU1QoKXMgaW4gdGhlIHNhbWUgdHJh
bnNsYXRpb24KKy8vIHVuaXQuCitUSE9VU0FORF9URVNUU18oVCkKKworaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIgKiphcmd2KSB7CisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2
KTsKKworICAvLyBXZSBkb24ndCBhY3R1YWxseSBuZWVkIHRvIHJ1biB0aGUgZHVtbXkgdGVzdHMg
LSB0aGUgcHVycG9zZSBpcyB0bworICAvLyBlbnN1cmUgdGhhdCB0aGV5IGNvbXBpbGUuCisgIHJl
dHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF90ZXN0X3V0aWxzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0
X3V0aWxzLnB5CmluZGV4IGUwZjU5NzNlN2VhNmY4MWU2NjZjMzEyMWMzYzhmYTg0M2Y0MzRmNjEu
LjQzY2JhOGY0Y2Q2MWRmZmYzYTFhNTIxMDFiZWQzZTczNGE1ZTFiNTQgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGVzdF91dGlscy5weQorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RfdXRpbHMucHkKQEAgLTEsNSArMSwz
IEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKICMgQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJ
bmMuCiAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCkBAIC0yOSwyMCArMjcsMjEgQEAKICMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSIiIlVuaXQgdGVzdCB1dGlsaXRpZXMgZm9yIEdv
b2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsuIiIiCisiIiJVbml0IHRlc3QgdXRpbGl0aWVzIGZv
ciBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrLiIiIgorIyBTdXBwcmVz
c2VzIHRoZSAnSW1wb3J0IG5vdCBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlJyBsaW50IGNvbXBsYWlu
dC4KKyMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjIwNAorCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMK
IAotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKK0lTX1dJTkRP
V1MgPSBvcy5uYW1lID09ICdudCcKK0lTX0NZR1dJTiA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBhbmQg
J0NZR1dJTicgaW4gb3MudW5hbWUoKVswXQogCiBpbXBvcnQgYXRleGl0Ci1pbXBvcnQgb3MKIGlt
cG9ydCBzaHV0aWwKLWltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHVuaXR0ZXN0
Ci1fdGVzdF9tb2R1bGUgPSB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0IGFzIF90ZXN0X21vZHVs
ZQogCi0jIFN1cHByZXNzZXMgdGhlICdJbXBvcnQgbm90IGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUn
IGxpbnQgY29tcGxhaW50LgotIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2MjA0CiB0cnk6CiAgIGlt
cG9ydCBzdWJwcm9jZXNzCiAgIF9TVUJQUk9DRVNTX01PRFVMRV9BVkFJTEFCTEUgPSBUcnVlCkBA
IC01MywxOCArNTIsMzAgQEAgZXhjZXB0OgogCiBHVEVTVF9PVVRQVVRfVkFSX05BTUUgPSAnR1RF
U1RfT1VUUFVUJwogCi1JU19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCi1JU19DWUdXSU4gPSBv
cy5uYW1lID09ICdwb3NpeCcgYW5kICdDWUdXSU4nIGluIG9zLnVuYW1lKClbMF0KKyMgVGhlIGVu
dmlyb25tZW50IHZhcmlhYmxlIGZvciBzcGVjaWZ5aW5nIHRoZSBwYXRoIHRvIHRoZSBwcmVtYXR1
cmUtZXhpdCBmaWxlLgorUFJFTUFUVVJFX0VYSVRfRklMRV9FTlZfVkFSID0gJ1RFU1RfUFJFTUFU
VVJFX0VYSVRfRklMRScKKworZW52aXJvbiA9IG9zLmVudmlyb24uY29weSgpCisKKworZGVmIFNl
dEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6CisgICIiIlNldHMvdW5zZXRzIGFuIGVudmlyb25tZW50
IHZhcmlhYmxlIHRvIGEgZ2l2ZW4gdmFsdWUuIiIiCisKKyAgaWYgdmFsdWUgaXMgbm90IE5vbmU6
CisgICAgZW52aXJvbltlbnZfdmFyXSA9IHZhbHVlCisgIGVsaWYgZW52X3ZhciBpbiBlbnZpcm9u
OgorICAgIGRlbCBlbnZpcm9uW2Vudl92YXJdCisKIAogIyBIZXJlIHdlIGV4cG9zZSBhIGNsYXNz
IGZyb20gYSBwYXJ0aWN1bGFyIG1vZHVsZSwgZGVwZW5kaW5nIG9uIHRoZQogIyBlbnZpcm9ubWVu
dC4gVGhlIGNvbW1lbnQgc3VwcHJlc3NlcyB0aGUgJ0ludmFsaWQgdmFyaWFibGUgbmFtZScgbGlu
dAogIyBjb21wbGFpbnQuCi1UZXN0Q2FzZSA9IF90ZXN0X21vZHVsZS5UZXN0Q2FzZSAgIyBweWxp
bnQ6IGRpc2FibGUtbXNnPUM2NDA5CitUZXN0Q2FzZSA9IF90ZXN0X21vZHVsZS5UZXN0Q2FzZSAg
IyBweWxpbnQ6IGRpc2FibGU9QzY0MDkKIAogIyBJbml0aWFsbHkgbWFwcyBhIGZsYWcgdG8gaXRz
IGRlZmF1bHQgdmFsdWUuIEFmdGVyCiAjIF9QYXJzZUFuZFN0cmlwR1Rlc3RGbGFncygpIGlzIGNh
bGxlZCwgbWFwcyBhIGZsYWcgdG8gaXRzIGFjdHVhbCB2YWx1ZS4KLV9mbGFnX21hcCA9IHsnZ3Rl
c3Rfc291cmNlX2Rpcic6IG9zLnBhdGguZGlybmFtZShzeXMuYXJndlswXSksCi0gICAgICAgICAg
ICAgJ2d0ZXN0X2J1aWxkX2Rpcic6IG9zLnBhdGguZGlybmFtZShzeXMuYXJndlswXSl9CitfZmxh
Z19tYXAgPSB7J3NvdXJjZV9kaXInOiBvcy5wYXRoLmRpcm5hbWUoc3lzLmFyZ3ZbMF0pLAorICAg
ICAgICAgICAgICdidWlsZF9kaXInOiBvcy5wYXRoLmRpcm5hbWUoc3lzLmFyZ3ZbMF0pfQogX2d0
ZXN0X2ZsYWdzX2FyZV9wYXJzZWQgPSBGYWxzZQogCiAKQEAgLTczLDcgKzg0LDcgQEAgZGVmIF9Q
YXJzZUFuZFN0cmlwR1Rlc3RGbGFncyhhcmd2KToKIAogICAjIFN1cHByZXNzZXMgdGhlIGxpbnQg
Y29tcGxhaW50IGFib3V0IGEgZ2xvYmFsIHZhcmlhYmxlIHNpbmNlIHdlIG5lZWQgaXQKICAgIyBo
ZXJlIHRvIG1haW50YWluIG1vZHVsZS13aWRlIHN0YXRlLgotICBnbG9iYWwgX2d0ZXN0X2ZsYWdz
X2FyZV9wYXJzZWQgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1XMDYwMworICBnbG9iYWwgX2d0ZXN0
X2ZsYWdzX2FyZV9wYXJzZWQgICMgcHlsaW50OiBkaXNhYmxlPVcwNjAzCiAgIGlmIF9ndGVzdF9m
bGFnc19hcmVfcGFyc2VkOgogICAgIHJldHVybgogCkBAIC0xMTEsMTMgKzEyMiwxMyBAQCBkZWYg
R2V0RmxhZyhmbGFnKToKIGRlZiBHZXRTb3VyY2VEaXIoKToKICAgIiIiUmV0dXJucyB0aGUgYWJz
b2x1dGUgcGF0aCBvZiB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSAucHkgZmlsZXMgYXJlLiIiIgog
Ci0gIHJldHVybiBvcy5wYXRoLmFic3BhdGgoR2V0RmxhZygnZ3Rlc3Rfc291cmNlX2RpcicpKQor
ICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKEdldEZsYWcoJ3NvdXJjZV9kaXInKSkKIAogCiBkZWYg
R2V0QnVpbGREaXIoKToKICAgIiIiUmV0dXJucyB0aGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgZGly
ZWN0b3J5IHdoZXJlIHRoZSB0ZXN0IGJpbmFyaWVzIGFyZS4iIiIKIAotICByZXR1cm4gb3MucGF0
aC5hYnNwYXRoKEdldEZsYWcoJ2d0ZXN0X2J1aWxkX2RpcicpKQorICByZXR1cm4gb3MucGF0aC5h
YnNwYXRoKEdldEZsYWcoJ2J1aWxkX2RpcicpKQogCiAKIF90ZW1wX2RpciA9IE5vbmUKQEAgLTEz
MCw4ICsxNDEsNiBAQCBhdGV4aXQucmVnaXN0ZXIoX1JlbW92ZVRlbXBEaXIpCiAKIAogZGVmIEdl
dFRlbXBEaXIoKToKLSAgIiIiUmV0dXJucyBhIGRpcmVjdG9yeSBmb3IgdGVtcG9yYXJ5IGZpbGVz
LiIiIgotCiAgIGdsb2JhbCBfdGVtcF9kaXIKICAgaWYgbm90IF90ZW1wX2RpcjoKICAgICBfdGVt
cF9kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKQEAgLTE2MCwxMyArMTY5LDkgQEAgZGVmIEdldFRl
c3RFeGVjdXRhYmxlUGF0aChleGVjdXRhYmxlX25hbWUsIGJ1aWxkX2Rpcj1Ob25lKToKIAogICBp
ZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aCk6CiAgICAgbWVzc2FnZSA9ICgKLSAgICAgICAgJ1Vu
YWJsZSB0byBmaW5kIHRoZSB0ZXN0IGJpbmFyeS4gUGxlYXNlIG1ha2Ugc3VyZSB0byBwcm92aWRl
IHBhdGhcbicKLSAgICAgICAgJ3RvIHRoZSBiaW5hcnkgdmlhIHRoZSAtLWd0ZXN0X2J1aWxkX2Rp
ciBmbGFnIG9yIHRoZSBHVEVTVF9CVUlMRF9ESVJcbicKLSAgICAgICAgJ2Vudmlyb25tZW50IHZh
cmlhYmxlLiBGb3IgY29udmVuaWVudCB1c2UsIGludm9rZSB0aGlzIHNjcmlwdCB2aWFcbicKLSAg
ICAgICAgJ21rX3Rlc3QucHkuXG4nCi0gICAgICAgICMgVE9ETyh2bGFkbEBnb29nbGUuY29tKTog
Y2hhbmdlIG1rX3Rlc3QucHkgdG8gdGVzdC5weSBhZnRlciByZW5hbWluZwotICAgICAgICAjIHRo
ZSBmaWxlLgotICAgICAgICAnUGxlYXNlIHJ1biBta190ZXN0LnB5IC1oIGZvciBoZWxwLicpCisg
ICAgICAgICdVbmFibGUgdG8gZmluZCB0aGUgdGVzdCBiaW5hcnkgIiVzIi4gUGxlYXNlIG1ha2Ug
c3VyZSB0byBwcm92aWRlXG4nCisgICAgICAgICdhIHBhdGggdG8gdGhlIGJpbmFyeSB2aWEgdGhl
IC0tYnVpbGRfZGlyIGZsYWcgb3IgdGhlIEJVSUxEX0RJUlxuJworICAgICAgICAnZW52aXJvbm1l
bnQgdmFyaWFibGUuJyAlIHBhdGgpCiAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgbWVzc2FnZQog
ICAgIHN5cy5leGl0KDEpCiAKQEAgLTIzNCw3ICsyMzksNyBAQCBjbGFzcyBTdWJwcm9jZXNzOgog
ICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdGRlcnIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjd2Q9d29ya2luZ19kaXIsIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVl
LCBlbnY9ZW52KQotICAgICAgIyBjb21tdW5pY2F0ZSByZXR1cm5zIGEgdHVwbGUgd2l0aCB0aGUg
ZmlsZSBvYmVjdCBmb3IgdGhlIGNoaWxkJ3MKKyAgICAgICMgY29tbXVuaWNhdGUgcmV0dXJucyBh
IHR1cGxlIHdpdGggdGhlIGZpbGUgb2JqZWN0IGZvciB0aGUgY2hpbGQncwogICAgICAgIyBvdXRw
dXQuCiAgICAgICBzZWxmLm91dHB1dCA9IHAuY29tbXVuaWNhdGUoKVswXQogICAgICAgc2VsZi5f
cmV0dXJuX2NvZGUgPSBwLnJldHVybmNvZGUKQEAgLTI0NSw3ICsyNTAsNyBAQCBjbGFzcyBTdWJw
cm9jZXNzOgogICAgICAgICAjIENoYW5nZXMgbWFkZSBieSBvcy5lbnZpcm9uLmNsZWFyIGFyZSBu
b3QgaW5oZXJpdGFibGUgYnkgY2hpbGQKICAgICAgICAgIyBwcm9jZXNzZXMgdW50aWwgUHl0aG9u
IDIuNi4gVG8gcHJvZHVjZSBpbmhlcml0YWJsZSBjaGFuZ2VzIHdlIGhhdmUKICAgICAgICAgIyB0
byBkZWxldGUgZW52aXJvbm1lbnQgaXRlbXMgd2l0aCB0aGUgZGVsIHN0YXRlbWVudC4KLSAgICAg
ICAgZm9yIGtleSBpbiBkZXN0OgorICAgICAgICBmb3Iga2V5IGluIGRlc3Qua2V5cygpOgogICAg
ICAgICAgIGRlbCBkZXN0W2tleV0KICAgICAgICAgZGVzdC51cGRhdGUoc3JjKQogCkBAIC0zMDEs
NyArMzA2LDcgQEAgZGVmIE1haW4oKToKICAgX1BhcnNlQW5kU3RyaXBHVGVzdEZsYWdzKHN5cy5h
cmd2KQogICAjIFRoZSB0ZXN0ZWQgYmluYXJpZXMgc2hvdWxkIG5vdCBiZSB3cml0aW5nIFhNTCBv
dXRwdXQgZmlsZXMgdW5sZXNzIHRoZQogICAjIHNjcmlwdCBleHBsaWNpdGx5IGluc3RydWN0cyB0
aGVtIHRvLgotICAjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IE1vdmUgdGhpcyBpbnRvIFN1YnBy
b2Nlc3Mgd2hlbiB3ZSBpbXBsZW1lbnQKKyAgIyBGSVhNRTogTW92ZSB0aGlzIGludG8gU3VicHJv
Y2VzcyB3aGVuIHdlIGltcGxlbWVudAogICAjIHBhc3NpbmcgZW52aXJvbm1lbnQgaW50byBpdCBh
cyBhIHBhcmFtZXRlci4KICAgaWYgR1RFU1RfT1VUUFVUX1ZBUl9OQU1FIGluIG9zLmVudmlyb246
CiAgICAgZGVsIG9zLmVudmlyb25bR1RFU1RfT1VUUFVUX1ZBUl9OQU1FXQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0YnJpZGdlX3Rlc3QucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RicmlkZ2VfdGVzdC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44N2ZmYWQ3M2Q0MDA2NTI5OGYzMDUwMGRlODI0ZDgwOGI2NTcxZDhkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0YnJpZGdl
X3Rlc3QucHkKQEAgLTAsMCArMSw2MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENv
cHlyaWdodCAyMDE4IEdvb2dsZSBMTEMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorIiIiVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCB1c2VzIGZpbHRlciBwcm92aWRl
ZCB2aWEgdGVzdGJyaWRnZS4iIiIKKworaW1wb3J0IG9zCisKK2ltcG9ydCBndGVzdF90ZXN0X3V0
aWxzCisKK2JpbmFyeV9uYW1lID0gJ2d0ZXN0X3Rlc3RicmlkZ2VfdGVzdF8nCitDT01NQU5EID0g
Z3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoYmluYXJ5X25hbWUpCitURVNU
QlJJREdFX05BTUUgPSAnVEVTVEJSSURHRV9URVNUX09OTFknCisKKworZGVmIEFzc2VydChjb25k
aXRpb24pOgorICBpZiBub3QgY29uZGl0aW9uOgorICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisK
KworY2xhc3MgR1Rlc3RUZXN0RmlsdGVyVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToK
KworICBkZWYgdGVzdFRlc3RFeGVjdXRpb25Jc0ZpbHRlcmVkKHNlbGYpOgorICAgICIiIlRlc3Rz
IHRoYXQgdGhlIHRlc3QgZmlsdGVyIGlzIHBpY2tlZCB1cCBmcm9tIHRoZSB0ZXN0YnJpZGdlIGVu
diB2YXIuIiIiCisgICAgc3VicHJvY2Vzc19lbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQorCisgICAg
c3VicHJvY2Vzc19lbnZbVEVTVEJSSURHRV9OQU1FXSA9ICcqLlRlc3RUaGF0U3VjY2VlZHMnCisg
ICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhDT01NQU5ELCBlbnY9c3VicHJvY2Vz
c19lbnYpCisKKyAgICBzZWxmLmFzc2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkKKworICAgIEFz
c2VydCgnZmlsdGVyID0gKi5UZXN0VGhhdFN1Y2NlZWRzJyBpbiBwLm91dHB1dCkKKyAgICBBc3Nl
cnQoJ1sgICAgICAgT0sgXSBUZXN0RmlsdGVyVGVzdC5UZXN0VGhhdFN1Y2NlZWRzJyBpbiBwLm91
dHB1dCkKKyAgICBBc3NlcnQoJ1sgIFBBU1NFRCAgXSAxIHRlc3QuJyBpbiBwLm91dHB1dCkKKwor
CitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0YnJpZGdl
X3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0YnJpZGdl
X3Rlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0NjE3YjIwOWUxMGE5ZDE3OTgzNjhlMjY0NjVhYWE2Mjcx
NWYwZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X3Rlc3RicmlkZ2VfdGVzdF8uY2MKQEAgLTAsMCArMSw0MyBAQAorLy8gQ29weXJpZ2h0IDIw
MTgsIEdvb2dsZSBMTEMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisv
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIFRoaXMgcHJvZ3JhbSBpcyBtZWFu
dCB0byBiZSBydW4gYnkgZ3Rlc3RfdGVzdF9maWx0ZXJfdGVzdC5weS4gIERvIG5vdCBydW4KKy8v
IGl0IGRpcmVjdGx5LgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworLy8gVGhlc2UgdGVz
dHMgYXJlIHVzZWQgdG8gZGV0ZWN0IGlmIGZpbHRlcmluZyBpcyB3b3JraW5nLiBPbmx5CisvLyAn
VGVzdFRoYXRTdWNjZWVkcycgc2hvdWxkIGV2ZXIgcnVuLgorCitURVNUKFRlc3RGaWx0ZXJUZXN0
LCBUZXN0VGhhdFN1Y2NlZWRzKSB7fQorCitURVNUKFRlc3RGaWx0ZXJUZXN0LCBUZXN0VGhhdEZh
aWxzKSB7CisgIEFTU0VSVF9UUlVFKGZhbHNlKSA8PCAiVGhpcyB0ZXN0IHNob3VsZCBuZXZlciBi
ZSBydW4uIjsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfdGhyb3dfb25fZmFpbHVyZV9leF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MKaW5kZXggOGJmOWRjOTA1YjVm
ZjgzYWMwMjEwNDEzNDM1ODBmOTA5NzU0ODNjZS4uOTNmNTlkNDljZmRiOTQ3NGRjYTYyMmMxN2Ey
Yzk2NGFiMGJkNThmNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF90aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MKQEAgLTI2LDEyICsy
NiwxMSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ly8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUZXN0
cyBHb29nbGUgVGVzdCdzIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRoIGV4Y2VwdGlvbnMgZW5h
YmxlZC4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVz
dC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVy
ZV90ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1Njc4ZmZlYWY2ZmE2MWVm
N2RjYjQ1YjhmMzRhMDM0MTE5MWFiZjZlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3df
b25fZmFpbHVyZV90ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTcxICswLDAgQEAKLSMhL3Vz
ci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0
OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlRlc3RzIEdvb2dsZSBU
ZXN0J3MgdGhyb3ctb24tZmFpbHVyZSBtb2RlIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4KLQot
VGhpcyBzY3JpcHQgaW52b2tlcyBndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3RfIChhIHByb2dy
YW0gd3JpdHRlbiB3aXRoCi1Hb29nbGUgVGVzdCkgd2l0aCBkaWZmZXJlbnQgZW52aXJvbm1lbnRz
IGFuZCBjb21tYW5kIGxpbmUgZmxhZ3MuCi0iIiIKLQotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IG9zCi1pbXBvcnQgZ3Rlc3RfdGVzdF91dGls
cwotCi0KLSMgQ29uc3RhbnRzLgotCi0jIFRoZSBjb21tYW5kIGxpbmUgZmxhZyBmb3IgZW5hYmxp
bmcvZGlzYWJsaW5nIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUuCi1USFJPV19PTl9GQUlMVVJF
ID0gJ2d0ZXN0X3Rocm93X29uX2ZhaWx1cmUnCi0KLSMgUGF0aCB0byB0aGUgZ3Rlc3RfdGhyb3df
b25fZmFpbHVyZV90ZXN0XyBwcm9ncmFtLCBjb21waWxlZCB3aXRoCi0jIGV4Y2VwdGlvbnMgZGlz
YWJsZWQuCi1FWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRo
KAotICAgICdndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3RfJykKLQotCi0jIFV0aWxpdGllcy4K
LQotCi1kZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToKLSAgIiIiU2V0cyBhbiBlbnZpcm9u
bWVudCB2YXJpYWJsZSB0byBhIGdpdmVuIHZhbHVlOyB1bnNldHMgaXQgd2hlbiB0aGUKLSAgZ2l2
ZW4gdmFsdWUgaXMgTm9uZS4KLSAgIiIiCi0KLSAgZW52X3ZhciA9IGVudl92YXIudXBwZXIoKQot
ICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICBvcy5lbnZpcm9uW2Vudl92YXJdID0gdmFsdWUK
LSAgZWxpZiBlbnZfdmFyIGluIG9zLmVudmlyb246Ci0gICAgZGVsIG9zLmVudmlyb25bZW52X3Zh
cl0KLQotCi1kZWYgUnVuKGNvbW1hbmQpOgotICAiIiJSdW5zIGEgY29tbWFuZDsgcmV0dXJucyBU
cnVlL0ZhbHNlIGlmIGl0cyBleGl0IGNvZGUgaXMvaXNuJ3QgMC4iIiIKLQotICBwcmludCAnUnVu
bmluZyAiJXMiLiAuIC4nICUgJyAnLmpvaW4oY29tbWFuZCkKLSAgcCA9IGd0ZXN0X3Rlc3RfdXRp
bHMuU3VicHJvY2Vzcyhjb21tYW5kKQotICByZXR1cm4gcC5leGl0ZWQgYW5kIHAuZXhpdF9jb2Rl
ID09IDAKLQotCi0jIFRoZSB0ZXN0cy4gIFRPRE8od2FuQGdvb2dsZS5jb20pOiByZWZhY3RvciB0
aGUgY2xhc3MgdG8gc2hhcmUgY29tbW9uCi0jIGxvZ2ljIHdpdGggY29kZSBpbiBndGVzdF9icmVh
a19vbl9mYWlsdXJlX3VuaXR0ZXN0LnB5LgotY2xhc3MgVGhyb3dPbkZhaWx1cmVUZXN0KGd0ZXN0
X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgotICAiIiJUZXN0cyB0aGUgdGhyb3ctb24tZmFpbHVyZSBt
b2RlLiIiIgotCi0gIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwgZW52X3Zhcl92YWx1ZSwgZmxhZ192
YWx1ZSwgc2hvdWxkX2ZhaWwpOgotICAgICIiIlJ1bnMgZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90
ZXN0XyBhbmQgdmVyaWZpZXMgdGhhdCBpdCBkb2VzCi0gICAgKG9yIGRvZXMgbm90KSBleGl0IHdp
dGggYSBub24temVybyBjb2RlLgotCi0gICAgQXJnczoKLSAgICAgIGVudl92YXJfdmFsdWU6ICAg
IHZhbHVlIG9mIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB2YXJpYWJsZTsgTm9uZSBpZiB0aGUgdmFyaWFibGUgc2hvdWxkIGJl
IHVuc2V0LgotICAgICAgZmxhZ192YWx1ZTogICAgICAgdmFsdWUgb2YgdGhlIC0tZ3Rlc3RfYnJl
YWtfb25fZmFpbHVyZSBmbGFnOwotICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSBpZiB0aGUg
ZmxhZyBzaG91bGQgbm90IGJlIHByZXNlbnQuCi0gICAgICBzaG91bGRfZmFpbDogICAgICBUcnVl
IGlmZiB0aGUgcHJvZ3JhbSBpcyBleHBlY3RlZCB0byBmYWlsLgotICAgICIiIgotCi0gICAgU2V0
RW52VmFyKFRIUk9XX09OX0ZBSUxVUkUsIGVudl92YXJfdmFsdWUpCi0KLSAgICBpZiBlbnZfdmFy
X3ZhbHVlIGlzIE5vbmU6Ci0gICAgICBlbnZfdmFyX3ZhbHVlX21zZyA9ICcgaXMgbm90IHNldCcK
LSAgICBlbHNlOgotICAgICAgZW52X3Zhcl92YWx1ZV9tc2cgPSAnPScgKyBlbnZfdmFyX3ZhbHVl
Ci0KLSAgICBpZiBmbGFnX3ZhbHVlIGlzIE5vbmU6Ci0gICAgICBmbGFnID0gJycKLSAgICBlbGlm
IGZsYWdfdmFsdWUgPT0gJzAnOgotICAgICAgZmxhZyA9ICctLSVzPTAnICUgVEhST1dfT05fRkFJ
TFVSRQotICAgIGVsc2U6Ci0gICAgICBmbGFnID0gJy0tJXMnICUgVEhST1dfT05fRkFJTFVSRQot
Ci0gICAgY29tbWFuZCA9IFtFWEVfUEFUSF0KLSAgICBpZiBmbGFnOgotICAgICAgY29tbWFuZC5h
cHBlbmQoZmxhZykKLQotICAgIGlmIHNob3VsZF9mYWlsOgotICAgICAgc2hvdWxkX29yX25vdCA9
ICdzaG91bGQnCi0gICAgZWxzZToKLSAgICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxkIG5vdCcK
LQotICAgIGZhaWxlZCA9IG5vdCBSdW4oY29tbWFuZCkKLQotICAgIFNldEVudlZhcihUSFJPV19P
Tl9GQUlMVVJFLCBOb25lKQotCi0gICAgbXNnID0gKCd3aGVuICVzJXMsIGFuIGFzc2VydGlvbiBm
YWlsdXJlIGluICIlcyIgJXMgY2F1c2UgYSBub24temVybyAnCi0gICAgICAgICAgICdleGl0IGNv
ZGUuJyAlCi0gICAgICAgICAgIChUSFJPV19PTl9GQUlMVVJFLCBlbnZfdmFyX3ZhbHVlX21zZywg
JyAnLmpvaW4oY29tbWFuZCksCi0gICAgICAgICAgICBzaG91bGRfb3Jfbm90KSkKLSAgICBzZWxm
LmFzc2VydF8oZmFpbGVkID09IHNob3VsZF9mYWlsLCBtc2cpCi0KLSAgZGVmIHRlc3REZWZhdWx0
QmVoYXZpb3Ioc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0
IG1vZGUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsIGZs
YWdfdmFsdWU9Tm9uZSwgc2hvdWxkX2ZhaWw9RmFsc2UpCi0KLSAgZGVmIHRlc3RUaHJvd09uRmFp
bHVyZUVudlZhcihzZWxmKToKLSAgICAiIiJUZXN0cyB1c2luZyB0aGUgR1RFU1RfVEhST1dfT05f
RkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZS4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5
KGVudl92YXJfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9u
ZSwKLSAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1GYWxzZSkKLSAgICBzZWxmLlJ1
bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFn
X3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9VHJ1ZSkKLQot
ICBkZWYgdGVzdFRocm93T25GYWlsdXJlRmxhZyhzZWxmKToKLSAgICAiIiJUZXN0cyB1c2luZyB0
aGUgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlIGZsYWcuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1
ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9RmFsc2UpCi0gICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAg
IGZsYWdfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPVRydWUp
Ci0KLSAgZGVmIHRlc3RUaHJvd09uRmFpbHVyZUZsYWdPdmVycmlkZXNFbnZWYXIoc2VsZik6Ci0g
ICAgIiIiVGVzdHMgdGhhdCAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmUgb3ZlcnJpZGVzIEdURVNU
X1RIUk9XX09OX0ZBSUxVUkUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3Zh
bHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKLSAgICAgICAg
ICAgICAgICAgICAgICBzaG91bGRfZmFpbD1GYWxzZSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShl
bnZfdmFyX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywK
LSAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1UcnVlKQotICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFs
dWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPUZhbHNlKQotICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAg
IGZsYWdfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPVRydWUp
Ci0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWlu
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3df
b25fZmFpbHVyZV90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
dGhyb3dfb25fZmFpbHVyZV90ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODhmYmQ1YTc2ZGM5MjA2ZjRhMDI5NTE0Yjg3NmRjMDE0MWUzNmJmYS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSw1
NiArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0v
LwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0v
LwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBUZXN0cyBH
b29nbGUgVGVzdCdzIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJs
ZWQuCi0vLwotLy8gVGhpcyBwcm9ncmFtIG11c3QgYmUgY29tcGlsZWQgd2l0aCBleGNlcHRpb25z
IGRpc2FibGVkLiAgSXQgd2lsbCBiZQotLy8gaW52b2tlZCBieSBndGVzdF90aHJvd19vbl9mYWls
dXJlX3Rlc3QucHksIGFuZCBpcyBleHBlY3RlZCB0byBleGl0Ci0vLyB3aXRoIG5vbi16ZXJvIGlu
IHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUgb3IgMCBvdGhlcndpc2UuCi0KLSNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgdGVz
dGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIC8vIFdlIHdhbnQgdG8gZW5z
dXJlIHRoYXQgcGVvcGxlIGNhbiB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBpbgotICAvLyBv
dGhlciB0ZXN0aW5nIGZyYW1ld29ya3MsIGFzIGxvbmcgYXMgdGhleSBpbml0aWFsaXplIEdvb2ds
ZSBUZXN0Ci0gIC8vIHByb3Blcmx5IGFuZCBzZXQgdGhlIHRocm93bi1vbi1mYWlsdXJlIG1vZGUu
ICBUaGVyZWZvcmUsIHdlIGRvbid0Ci0gIC8vIHVzZSBHb29nbGUgVGVzdCdzIGNvbnN0cnVjdHMg
Zm9yIGRlZmluaW5nIGFuZCBydW5uaW5nIHRlc3RzCi0gIC8vIChlLmcuIFRFU1QgYW5kIFJVTl9B
TExfVEVTVFMpIGhlcmUuCi0KLSAgLy8gSW4gdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRo
IGV4Y2VwdGlvbnMgZGlzYWJsZWQsIHRoaXMKLSAgLy8gYXNzZXJ0aW9uIHdpbGwgY2F1c2UgdGhl
IHByb2dyYW0gdG8gZXhpdCB3aXRoIGEgbm9uLXplcm8gY29kZS4KLSAgRVhQRUNUX0VRKDIsIDMp
OwotCi0gIC8vIFdoZW4gbm90IGluIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUsIHRoZSBjb250
cm9sIHdpbGwgcmVhY2gKLSAgLy8gaGVyZS4KLSAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5weSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0LnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2YWU1N2VlZWRhZmNmMDc1MDRkZDhkNWQ3
YThiNWE3ZjgzODEzZjI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90
ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCi0jCi0jIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJp
YnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCB3
YXJucyB0aGUgdXNlciB3aGVuIG5vdCBpbml0aWFsaXplZCBwcm9wZXJseS4iIiIKLQotX19hdXRo
b3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IGd0ZXN0X3Rl
c3RfdXRpbHMKLQotCi1DT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJs
ZVBhdGgoJ2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdF8nKQotCi0KLWRlZiBBc3NlcnQoY29uZGl0
aW9uKToKLSAgaWYgbm90IGNvbmRpdGlvbjoKLSAgICByYWlzZSBBc3NlcnRpb25FcnJvcgotCi0K
LWRlZiBBc3NlcnRFcShleHBlY3RlZCwgYWN0dWFsKToKLSAgaWYgZXhwZWN0ZWQgIT0gYWN0dWFs
OgotICAgIHByaW50ICdFeHBlY3RlZDogJXMnICUgKGV4cGVjdGVkLCkKLSAgICBwcmludCAnICBB
Y3R1YWw6ICVzJyAlIChhY3R1YWwsKQotICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCi0KLQotZGVm
IFRlc3RFeGl0Q29kZUFuZE91dHB1dChjb21tYW5kKToKLSAgIiIiUnVucyB0aGUgZ2l2ZW4gY29t
bWFuZCBhbmQgdmVyaWZpZXMgaXRzIGV4aXQgY29kZSBhbmQgb3V0cHV0LiIiIgotCi0gICMgVmVy
aWZpZXMgdGhhdCAnY29tbWFuZCcgZXhpdHMgd2l0aCBjb2RlIDEuCi0gIHAgPSBndGVzdF90ZXN0
X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKLSAgQXNzZXJ0KHAuZXhpdGVkKQotICBBc3NlcnRF
cSgxLCBwLmV4aXRfY29kZSkKLSAgQXNzZXJ0KCdJbml0R29vZ2xlVGVzdCcgaW4gcC5vdXRwdXQp
Ci0KLQotY2xhc3MgR1Rlc3RVbmluaXRpYWxpemVkVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RD
YXNlKToKLSAgZGVmIHRlc3RFeGl0Q29kZUFuZE91dHB1dChzZWxmKToKLSAgICBUZXN0RXhpdENv
ZGVBbmRPdXRwdXQoQ09NTUFORCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBn
dGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3RfLmNjCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlOGIyYWE4MWRkNTRkOWM2NDNhNThkZTVlNDRkNmNjYjUyMGE3NzY1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0Xy5jYworKysgL2Rldi9u
dWxsCkBAIC0xLDQzICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0K
LSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1URVNUKER1bW15VGVzdCwgRHVtbXkpIHsKLSAg
Ly8gVGhpcyB0ZXN0IGRvZXNuJ3QgdmVyaWZ5IGFueXRoaW5nLiAgV2UganVzdCBuZWVkIGl0IHRv
IGNyZWF0ZSBhCi0gIC8vIHJlYWxpc3RpYyBzdGFnZSBmb3IgdGVzdGluZyB0aGUgYmVoYXZpb3Ig
b2YgR29vZ2xlIFRlc3Qgd2hlbgotICAvLyBSVU5fQUxMX1RFU1RTKCkgaXMgY2FsbGVkIHdpdGhv
dXQgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKSBiZWluZwotICAvLyBjYWxsZWQgZmlyc3QuCi19
Ci0KLWludCBtYWluKCkgewotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MKaW5kZXggYTE0ZjA2NWEy
Y2NkODYzNzlhMDE0OWEzM2ZjNTY0NWMwZWM4YjE4MS4uZjcyMTNmYmYzZTVlODcyMDg5YmZiOTg1
NTFhYzNiYTNlM2E2N2JmNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X3VuaXR0ZXN0LmNjCkBAIC0yNiwxOCArMjYsMTYgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29t
IChaaGFueW9uZyBXYW4pCisKIC8vCiAvLyBUZXN0cyBmb3IgR29vZ2xlIFRlc3QgaXRzZWxmLiAg
VGhpcyB2ZXJpZmllcyB0aGF0IHRoZSBiYXNpYyBjb25zdHJ1Y3RzIG9mCiAvLyBHb29nbGUgVGVz
dCB3b3JrLgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDx2ZWN0b3I+Cisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAotLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29tbWFuZCBs
aW5lIGZsYWcgdmFyaWFibGVzIGNhbiBiZSBhY2Nlc3NlZAotLy8gaW4gY29kZSBvbmNlIDxndGVz
dC9ndGVzdC5oPiBoYXMgYmVlbiAjaW5jbHVkZWQuCi0vLyBEbyBub3QgbW92ZSBpdCBhZnRlciBv
dGhlciAjaW5jbHVkZXMuCisvLyBWZXJpZmllcyB0aGF0IHRoZSBjb21tYW5kIGxpbmUgZmxhZyB2
YXJpYWJsZXMgY2FuIGJlIGFjY2Vzc2VkIGluCisvLyBjb2RlIG9uY2UgImd0ZXN0LmgiIGhhcyBi
ZWVuICNpbmNsdWRlZC4KKy8vIERvIG5vdCBtb3ZlIGl0IGFmdGVyIG90aGVyIGd0ZXN0ICNpbmNs
dWRlcy4KIFRFU1QoQ29tbWFuZExpbmVGbGFnc1Rlc3QsIENhbkJlQWNjZXNzZWRJbkNvZGVPbmNl
R1Rlc3RISXNJbmNsdWRlZCkgewogICBib29sIGR1bW15ID0gdGVzdGluZzo6R1RFU1RfRkxBRyhh
bHNvX3J1bl9kaXNhYmxlZF90ZXN0cykKICAgICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcoYnJl
YWtfb25fZmFpbHVyZSkKQEAgLTUyLDMwICs1MCwxMDUgQEAgVEVTVChDb21tYW5kTGluZUZsYWdz
VGVzdCwgQ2FuQmVBY2Nlc3NlZEluQ29kZU9uY2VHVGVzdEhJc0luY2x1ZGVkKSB7CiAgICAgICB8
fCB0ZXN0aW5nOjpHVEVTVF9GTEFHKHNob3dfaW50ZXJuYWxfc3RhY2tfZnJhbWVzKQogICAgICAg
fHwgdGVzdGluZzo6R1RFU1RfRkxBRyhzaHVmZmxlKQogICAgICAgfHwgdGVzdGluZzo6R1RFU1Rf
RkxBRyhzdGFja190cmFjZV9kZXB0aCkgPiAwCisgICAgICB8fCB0ZXN0aW5nOjpHVEVTVF9GTEFH
KHN0cmVhbV9yZXN1bHRfdG8pICE9ICJ1bmtub3duIgogICAgICAgfHwgdGVzdGluZzo6R1RFU1Rf
RkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKICAgRVhQRUNUX1RSVUUoZHVtbXkgfHwgIWR1bW15KTsg
IC8vIFN1cHByZXNzZXMgd2FybmluZyB0aGF0IGR1bW15IGlzIHVudXNlZC4KIH0KIAotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0
aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0
IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBv
ciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBw
cmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwt
aW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQot
I2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1F
TlRBVElPTl8KLQogI2luY2x1ZGUgPGxpbWl0cy5oPiAgLy8gRm9yIElOVF9NQVguCiAjaW5jbHVk
ZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8dGltZS5oPgogCiAj
aW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDxvc3RyZWFtPgorI2lm
IEdURVNUX0xBTkdfQ1hYMTEKKyNpbmNsdWRlIDx1bm9yZGVyZWRfc2V0PgorI2VuZGlmICAvLyBH
VEVTVF9MQU5HX0NYWDExCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKyNpbmNsdWRl
ICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVz
cGFjZSBpbnRlcm5hbCB7CiAKKyNpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKK2NsYXNz
IFN0cmVhbWluZ0xpc3RlbmVyVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIGNsYXNz
IEZha2VTb2NrZXRXcml0ZXIgOiBwdWJsaWMgU3RyZWFtaW5nTGlzdGVuZXI6OkFic3RyYWN0U29j
a2V0V3JpdGVyIHsKKyAgIHB1YmxpYzoKKyAgICAvLyBTZW5kcyBhIHN0cmluZyB0byB0aGUgc29j
a2V0LgorICAgIHZpcnR1YWwgdm9pZCBTZW5kKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7
IG91dHB1dF8gKz0gbWVzc2FnZTsgfQorCisgICAgc3RkOjpzdHJpbmcgb3V0cHV0XzsKKyAgfTsK
KworICBTdHJlYW1pbmdMaXN0ZW5lclRlc3QoKQorICAgICAgOiBmYWtlX3NvY2tfd3JpdGVyXyhu
ZXcgRmFrZVNvY2tldFdyaXRlciksCisgICAgICAgIHN0cmVhbWVyXyhmYWtlX3NvY2tfd3JpdGVy
XyksCisgICAgICAgIHRlc3RfaW5mb19vYmpfKCJGb29UZXN0IiwgIkJhciIsIE5VTEwsIE5VTEws
CisgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbihfX0ZJTEVfXywgX19MSU5FX18p
LCAwLCBOVUxMKSB7fQorCisgcHJvdGVjdGVkOgorICBzdGQ6OnN0cmluZyogb3V0cHV0KCkgeyBy
ZXR1cm4gJihmYWtlX3NvY2tfd3JpdGVyXy0+b3V0cHV0Xyk7IH0KKworICBGYWtlU29ja2V0V3Jp
dGVyKiBjb25zdCBmYWtlX3NvY2tfd3JpdGVyXzsKKyAgU3RyZWFtaW5nTGlzdGVuZXIgc3RyZWFt
ZXJfOworICBVbml0VGVzdCB1bml0X3Rlc3RfOworICBUZXN0SW5mbyB0ZXN0X2luZm9fb2JqXzsg
IC8vIFRoZSBuYW1lIHRlc3RfaW5mb18gd2FzIHRha2VuIGJ5IHRlc3Rpbmc6OlRlc3QuCit9Owor
CitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RQcm9ncmFtRW5kKSB7CisgICpv
dXRwdXQoKSA9ICIiOworICBzdHJlYW1lcl8uT25UZXN0UHJvZ3JhbUVuZCh1bml0X3Rlc3RfKTsK
KyAgRVhQRUNUX0VRKCJldmVudD1UZXN0UHJvZ3JhbUVuZCZwYXNzZWQ9MVxuIiwgKm91dHB1dCgp
KTsKK30KKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25UZXN0SXRlcmF0aW9uRW5k
KSB7CisgICpvdXRwdXQoKSA9ICIiOworICBzdHJlYW1lcl8uT25UZXN0SXRlcmF0aW9uRW5kKHVu
aXRfdGVzdF8sIDQyKTsKKyAgRVhQRUNUX0VRKCJldmVudD1UZXN0SXRlcmF0aW9uRW5kJnBhc3Nl
ZD0xJmVsYXBzZWRfdGltZT0wbXNcbiIsICpvdXRwdXQoKSk7Cit9CisKK1RFU1RfRihTdHJlYW1p
bmdMaXN0ZW5lclRlc3QsIE9uVGVzdENhc2VTdGFydCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAg
c3RyZWFtZXJfLk9uVGVzdENhc2VTdGFydChUZXN0Q2FzZSgiRm9vVGVzdCIsICJCYXIiLCBOVUxM
LCBOVUxMKSk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdENhc2VTdGFydCZuYW1lPUZvb1Rlc3Rc
biIsICpvdXRwdXQoKSk7Cit9CisKK1RFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRlc3QsIE9uVGVz
dENhc2VFbmQpIHsKKyAgKm91dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RDYXNlRW5k
KFRlc3RDYXNlKCJGb29UZXN0IiwgIkJhciIsIE5VTEwsIE5VTEwpKTsKKyAgRVhQRUNUX0VRKCJl
dmVudD1UZXN0Q2FzZUVuZCZwYXNzZWQ9MSZlbGFwc2VkX3RpbWU9MG1zXG4iLCAqb3V0cHV0KCkp
OworfQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RTdGFydCkgeworICAq
b3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdFN0YXJ0KHRlc3RfaW5mb19vYmpfKTsK
KyAgRVhQRUNUX0VRKCJldmVudD1UZXN0U3RhcnQmbmFtZT1CYXJcbiIsICpvdXRwdXQoKSk7Cit9
CisKK1RFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRlc3QsIE9uVGVzdEVuZCkgeworICAqb3V0cHV0
KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdEVuZCh0ZXN0X2luZm9fb2JqXyk7CisgIEVYUEVD
VF9FUSgiZXZlbnQ9VGVzdEVuZCZwYXNzZWQ9MSZlbGFwc2VkX3RpbWU9MG1zXG4iLCAqb3V0cHV0
KCkpOworfQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RQYXJ0UmVzdWx0
KSB7CisgICpvdXRwdXQoKSA9ICIiOworICBzdHJlYW1lcl8uT25UZXN0UGFydFJlc3VsdChUZXN0
UGFydFJlc3VsdCgKKyAgICAgIFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLCAiZm9vLmNj
IiwgNDIsICJmYWlsZWQ9XG4mJSIpKTsKKworICAvLyBNZXRhIGNoYXJhY3RlcnMgaW4gdGhlIGZh
aWx1cmUgbWVzc2FnZSBzaG91bGQgYmUgcHJvcGVybHkgZXNjYXBlZC4KKyAgRVhQRUNUX0VRKAor
ICAgICAgImV2ZW50PVRlc3RQYXJ0UmVzdWx0JmZpbGU9Zm9vLmNjJmxpbmU9NDImbWVzc2FnZT1m
YWlsZWQlM0QlMEElMjYlMjVcbiIsCisgICAgICAqb3V0cHV0KCkpOworfQorCisjZW5kaWYgIC8v
IEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKwogLy8gUHJvdmlkZXMgYWNjZXNzIHRvIG90aGVy
d2lzZSBwcml2YXRlIHBhcnRzIG9mIHRoZSBUZXN0RXZlbnRMaXN0ZW5lcnMgY2xhc3MKIC8vIHRo
YXQgYXJlIG5lZWRlZCB0byB0ZXN0IGl0LgogY2xhc3MgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNz
b3IgewpAQCAtMTAyLDYgKzE3NSwxOCBAQCBjbGFzcyBUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3Nv
ciB7CiAgIH0KIH07CiAKK2NsYXNzIFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0SGVscGVyIDog
cHVibGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3RI
ZWxwZXIoKSB7fQorCisgIC8vIEZvcndhcmRzIHRvIFVuaXRUZXN0OjpSZWNvcmRQcm9wZXJ0eSgp
IHRvIGJ5cGFzcyBhY2Nlc3MgY29udHJvbHMuCisgIHZvaWQgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0
eShjb25zdCBjaGFyKiBrZXksIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkgeworICAgIHVuaXRf
dGVzdF8uUmVjb3JkUHJvcGVydHkoa2V5LCB2YWx1ZSk7CisgIH0KKworICBVbml0VGVzdCB1bml0
X3Rlc3RfOworfTsKKwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2Ug
dGVzdGluZwogCkBAIC0xMTAsNiArMTk1LDcgQEAgdXNpbmcgdGVzdGluZzo6QXNzZXJ0aW9uUmVz
dWx0OwogdXNpbmcgdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzczsKIHVzaW5nIHRlc3Rpbmc6OkRv
dWJsZUxFOwogdXNpbmcgdGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lcjsKK3VzaW5nIHRl
c3Rpbmc6OkVudmlyb25tZW50OwogdXNpbmcgdGVzdGluZzo6RmxvYXRMRTsKIHVzaW5nIHRlc3Rp
bmc6OkdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpOwogdXNpbmcgdGVzdGluZzo6
R1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJlKTsKQEAgLTEyNSw2ICsyMTEsNyBAQCB1c2luZyB0
ZXN0aW5nOjpHVEVTVF9GTEFHKHJlcGVhdCk7CiB1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHNo
b3dfaW50ZXJuYWxfc3RhY2tfZnJhbWVzKTsKIHVzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcoc2h1
ZmZsZSk7CiB1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKTsKK3Vz
aW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90byk7CiB1c2luZyB0ZXN0aW5n
OjpHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpOwogdXNpbmcgdGVzdGluZzo6SXNOb3RTdWJz
dHJpbmc7CiB1c2luZyB0ZXN0aW5nOjpJc1N1YnN0cmluZzsKQEAgLTEzMiw1MyArMjE5LDc4IEBA
IHVzaW5nIHRlc3Rpbmc6Ok1lc3NhZ2U7CiB1c2luZyB0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBh
cnRSZXN1bHRSZXBvcnRlcjsKIHVzaW5nIHRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTsKIHVz
aW5nIHRlc3Rpbmc6OlRlc3Q7Ci11c2luZyB0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7CiB1
c2luZyB0ZXN0aW5nOjpUZXN0Q2FzZTsKK3VzaW5nIHRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVy
czsKK3VzaW5nIHRlc3Rpbmc6OlRlc3RJbmZvOwogdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1
bHQ7CiB1c2luZyB0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdEFycmF5OwogdXNpbmcgdGVzdGluZzo6
VGVzdFByb3BlcnR5OwogdXNpbmcgdGVzdGluZzo6VGVzdFJlc3VsdDsKK3VzaW5nIHRlc3Rpbmc6
OlRpbWVJbk1pbGxpczsKIHVzaW5nIHRlc3Rpbmc6OlVuaXRUZXN0OwotdXNpbmcgdGVzdGluZzo6
a01heFN0YWNrVHJhY2VEZXB0aDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBZGRSZWZlcmVu
Y2U7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2U7CiB1c2luZyB0ZXN0aW5n
OjppbnRlcm5hbDo6QWx3YXlzVHJ1ZTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBcHBlbmRV
c2VyTWVzc2FnZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBcnJheUF3YXJlRmluZDsKK3Vz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpBcnJheUVxOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OkNvZGVQb2ludFRvVXRmODsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpDb21waWxlQXNzZXJ0
VHlwZXNFcXVhbDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpDb3B5QXJyYXk7CiB1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6Q291bnRJZjsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpFcUZh
aWx1cmU7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RmxvYXRpbmdQb2ludDsKLXVzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHM7CiB1c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6Rm9yRWFjaDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRF
cG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpGb3Jt
YXRUaW1lSW5NaWxsaXNBc1NlY29uZHM7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R1Rlc3RG
bGFnU2F2ZXI7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0Q3VycmVudE9zU3RhY2tUcmFj
ZUV4Y2VwdFRvcDsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRFbGVtZW50T3I7CiB1c2lu
ZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0TmV4dFJhbmRvbVNlZWQ7CiB1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6R2V0UmFuZG9tU2VlZEZyb21GbGFnOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OkdldFRlc3RUeXBlSWQ7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VGltZUluTWlsbGlz
OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldFR5cGVJZDsKIHVzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpHZXRVbml0VGVzdEltcGw7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGlj
aXRseUNvbnZlcnRpYmxlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkludDMyOwogdXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OkludDMyRnJvbUVudk9yRGllOwordXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OklzQVByb3RvY29sTWVzc2FnZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJc0Nv
bnRhaW5lcjsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJc0NvbnRhaW5lclRlc3Q7Cit1c2lu
ZyB0ZXN0aW5nOjppbnRlcm5hbDo6SXNOb3RDb250YWluZXI7Cit1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6TmF0aXZlQXJyYXk7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6T3NTdGFja1RyYWNl
R2V0dGVyOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6Ok9zU3RhY2tUcmFjZUdldHRlckludGVy
ZmFjZTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpQYXJzZUludDMyRmxhZzsKK3VzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpSZWxhdGlvblRvU291cmNlQ29weTsKK3VzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlOwordXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OlJlbW92ZUNvbnN0OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlJlbW92ZVJlZmVyZW5j
ZTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaG91bGRSdW5UZXN0T25TaGFyZDsKIHVzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjpTaG91bGRTaGFyZDsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjpTaG91bGRVc2VDb2xvcjsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaHVmZmxlOwogdXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OlNodWZmbGVSYW5nZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpTa2lwUHJlZml4OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlN0cmVhbWFibGVUb1N0
cmluZzsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmc7CiB1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6VGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I7CiB1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6VGVzdFJlc3VsdEFjY2Vzc29yOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlVJbnQz
MjsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpVbml0VGVzdEltcGw7CiB1c2luZyB0ZXN0aW5n
OjppbnRlcm5hbDo6V2lkZVN0cmluZ1RvVXRmODsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpl
ZGl0X2Rpc3RhbmNlOjpDYWxjdWxhdGVPcHRpbWFsRWRpdHM7Cit1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6ZWRpdF9kaXN0YW5jZTo6Q3JlYXRlVW5pZmllZERpZmY7Cit1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6ZWRpdF9kaXN0YW5jZTo6RWRpdFR5cGU7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6a01heFJhbmRvbVNlZWQ7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6a1Rlc3RUeXBlSWRJ
bkdvb2dsZVRlc3Q7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVkX3B0cjsKK3VzaW5n
IHRlc3Rpbmc6OmtNYXhTdGFja1RyYWNlRGVwdGg7CiAKLSNpZiBHVEVTVF9IQVNfU1RSRUFNX1JF
RElSRUNUSU9OXworI2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KIHVzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpDYXB0dXJlU3Rkb3V0OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6Okdl
dENhcHR1cmVkU3Rkb3V0OwotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9O
XworI2VuZGlmCiAKICNpZiBHVEVTVF9JU19USFJFQURTQUZFCiB1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6VGhyZWFkV2l0aFBhcmFtOwpAQCAtMjY3LDYgKzM3OSwzMSBAQCBURVNUKEdldFRlc3RU
eXBlSWRUZXN0LCBSZXR1cm5zVGhlU2FtZVZhbHVlSW5zaWRlT3JPdXRzaWRlT2ZHb29nbGVUZXN0
KSB7CiAgIEVYUEVDVF9FUShrVGVzdFR5cGVJZEluR29vZ2xlVGVzdCwgR2V0VGVzdFR5cGVJZCgp
KTsKIH0KIAorLy8gVGVzdHMgQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZy4KKwordXNp
bmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZzsK
KworVEVTVChDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nLCBMZWF2ZXNVbnZlcnNpb25l
ZE5hbWVzVW5jaGFuZ2VkKSB7CisgIEVYUEVDVF9FUSgic3RkOjpiaW5kIiwgQ2Fub25pY2FsaXpl
Rm9yU3RkTGliVmVyc2lvbmluZygic3RkOjpiaW5kIikpOworICBFWFBFQ1RfRVEoInN0ZDo6XyIs
IENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoInN0ZDo6XyIpKTsKKyAgRVhQRUNUX0VR
KCJzdGQ6Ol9fZm9vIiwgQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZygic3RkOjpfX2Zv
byIpKTsKKyAgRVhQRUNUX0VRKCJndGw6Ol9fMTo6eCIsIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZl
cnNpb25pbmcoImd0bDo6X18xOjp4IikpOworICBFWFBFQ1RfRVEoIl9fMTo6eCIsIENhbm9uaWNh
bGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoIl9fMTo6eCIpKTsKKyAgRVhQRUNUX0VRKCI6Ol9fMTo6
eCIsIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoIjo6X18xOjp4IikpOworfQorCitU
RVNUKENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcsIEVsaWRlc0RvdWJsZVVuZGVyTmFt
ZXMpIHsKKyAgRVhQRUNUX0VRKCJzdGQ6OmJpbmQiLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJz
aW9uaW5nKCJzdGQ6Ol9fMTo6YmluZCIpKTsKKyAgRVhQRUNUX0VRKCJzdGQ6Ol8iLCBDYW5vbmlj
YWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJzdGQ6Ol9fMTo6XyIpKTsKKworICBFWFBFQ1RfRVEo
InN0ZDo6YmluZCIsIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoInN0ZDo6X19nOjpi
aW5kIikpOworICBFWFBFQ1RfRVEoInN0ZDo6XyIsIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNp
b25pbmcoInN0ZDo6X19nOjpfIikpOworCisgIEVYUEVDVF9FUSgic3RkOjpiaW5kIiwKKyAgICAg
ICAgICAgIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoInN0ZDo6X19nb29nbGU6OmJp
bmQiKSk7CisgIEVYUEVDVF9FUSgic3RkOjpfIiwgQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lv
bmluZygic3RkOjpfX2dvb2dsZTo6XyIpKTsKK30KKwogLy8gVGVzdHMgRm9ybWF0VGltZUluTWls
bGlzQXNTZWNvbmRzKCkuCiAKIFRFU1QoRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzVGVzdCwg
Rm9ybWF0c1plcm8pIHsKQEAgLTI4OSwxMiArNDI2LDk5IEBAIFRFU1QoRm9ybWF0VGltZUluTWls
bGlzQXNTZWNvbmRzVGVzdCwgRm9ybWF0c05lZ2F0aXZlTnVtYmVyKSB7CiAgIEVYUEVDVF9FUSgi
LTMiLCBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHMoLTMwMDApKTsKIH0KIAorLy8gVGVzdHMg
Rm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoKS4gIFRoZSBjb3JyZWN0bmVzcyBvZiBj
b252ZXJzaW9uCisvLyBmb3IgcGFydGljdWxhciBkYXRlcyBiZWxvdyB3YXMgdmVyaWZpZWQgaW4g
UHl0aG9uIHVzaW5nCisvLyBkYXRldGltZS5kYXRldGltZS5mcm9tdXRjdGltZXN0YW1wKDx0aW1l
dGFtcD4vMTAwMCkuCisKKy8vIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxIGRlcGVu
ZHMgb24gdGhlIGN1cnJlbnQgdGltZXpvbmUsIHNvIHdlCisvLyBoYXZlIHRvIHNldCB1cCBhIHBh
cnRpY3VsYXIgdGltZXpvbmUgdG8gb2J0YWluIHByZWRpY3RhYmxlIHJlc3VsdHMuCitjbGFzcyBG
b3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVi
bGljOgorICAvLyBPbiBDeWd3aW4sIEdDQyBkb2Vzbid0IGFsbG93IHVucXVhbGlmaWVkIGludGVn
ZXIgbGl0ZXJhbHMgdG8gZXhjZWVkCisgIC8vIDMyIGJpdHMsIGV2ZW4gd2hlbiA2NC1iaXQgaW50
ZWdlciB0eXBlcyBhcmUgYXZhaWxhYmxlLiAgV2UgaGF2ZSB0bworICAvLyBmb3JjZSB0aGUgY29u
c3RhbnRzIHRvIGhhdmUgYSA2NC1iaXQgdHlwZSBoZXJlLgorICBzdGF0aWMgY29uc3QgVGltZUlu
TWlsbGlzIGtNaWxsaXNQZXJTZWMgPSAxMDAwOworCisgcHJpdmF0ZToKKyAgdmlydHVhbCB2b2lk
IFNldFVwKCkgeworICAgIHNhdmVkX3R6XyA9IE5VTEw7CisKKyAgICBHVEVTVF9ESVNBQkxFX01T
Q19ERVBSRUNBVEVEX1BVU0hfKC8qIGdldGVudiwgc3RyZHVwOiBkZXByZWNhdGVkICovKQorICAg
IGlmIChnZXRlbnYoIlRaIikpCisgICAgICBzYXZlZF90el8gPSBzdHJkdXAoZ2V0ZW52KCJUWiIp
KTsKKyAgICBHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BPUF8oKQorCisgICAgLy8gU2V0
IHVwIHRoZSB0aW1lIHpvbmUgZm9yIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxIHRv
IHVzZS4gIFdlCisgICAgLy8gY2Fubm90IHVzZSB0aGUgbG9jYWwgdGltZSB6b25lIGJlY2F1c2Ug
dGhlIGZ1bmN0aW9uJ3Mgb3V0cHV0IGRlcGVuZHMKKyAgICAvLyBvbiB0aGUgdGltZSB6b25lLgor
ICAgIFNldFRpbWVab25lKCJVVEMrMDAiKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93
bigpIHsKKyAgICBTZXRUaW1lWm9uZShzYXZlZF90el8pOworICAgIGZyZWUoY29uc3RfY2FzdDxj
aGFyKj4oc2F2ZWRfdHpfKSk7CisgICAgc2F2ZWRfdHpfID0gTlVMTDsKKyAgfQorCisgIHN0YXRp
YyB2b2lkIFNldFRpbWVab25lKGNvbnN0IGNoYXIqIHRpbWVfem9uZSkgeworICAgIC8vIHR6c2V0
KCkgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIHRoZSBUWiB2YXJpYWJsZSBiZWluZyBwcmVzZW50IGFu
ZCBlbXB0eQorICAgIC8vIGFuZCBub3QgYmVpbmcgcHJlc2VudCwgc28gd2UgaGF2ZSB0byBjb25z
aWRlciB0aGUgY2FzZSBvZiB0aW1lX3pvbmUKKyAgICAvLyBiZWluZyBOVUxMLgorI2lmIF9NU0Nf
VkVSIHx8IEdURVNUX09TX1dJTkRPV1NfTUlOR1cKKyAgICAvLyAuLi5Vbmxlc3MgaXQncyBNU1ZD
LCB3aG9zZSBzdGFuZGFyZCBsaWJyYXJ5J3MgX3B1dGVudiBkb2Vzbid0CisgICAgLy8gZGlzdGlu
Z3Vpc2ggYmV0d2VlbiBhbiBlbXB0eSBhbmQgYSBtaXNzaW5nIHZhcmlhYmxlLgorICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIGVudl92YXIgPQorICAgICAgICBzdGQ6OnN0cmluZygiVFo9IikgKyAodGlt
ZV96b25lID8gdGltZV96b25lIDogIiIpOworICAgIF9wdXRlbnYoZW52X3Zhci5jX3N0cigpKTsK
KyAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0OTk2IC8qIGRlcHJlY2F0ZWQg
ZnVuY3Rpb24gKi8pCisgICAgdHpzZXQoKTsKKyAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5H
U19QT1BfKCkKKyNlbHNlCisgICAgaWYgKHRpbWVfem9uZSkgeworICAgICAgc2V0ZW52KCgiVFoi
KSwgdGltZV96b25lLCAxKTsKKyAgICB9IGVsc2UgeworICAgICAgdW5zZXRlbnYoIlRaIik7Cisg
ICAgfQorICAgIHR6c2V0KCk7CisjZW5kaWYKKyAgfQorCisgIGNvbnN0IGNoYXIqIHNhdmVkX3R6
XzsKK307CisKK2NvbnN0IFRpbWVJbk1pbGxpcyBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNv
ODYwMVRlc3Q6OmtNaWxsaXNQZXJTZWM7CisKK1RFU1RfRihGb3JtYXRFcG9jaFRpbWVJbk1pbGxp
c0FzSXNvODYwMVRlc3QsIFByaW50c1R3b0RpZ2l0U2VnbWVudHMpIHsKKyAgRVhQRUNUX0VRKCIy
MDExLTEwLTMxVDE4OjUyOjQyIiwKKyAgICAgICAgICAgIEZvcm1hdEVwb2NoVGltZUluTWlsbGlz
QXNJc284NjAxKDEzMjAwODcxNjIgKiBrTWlsbGlzUGVyU2VjKSk7Cit9CisKK1RFU1RfRihGb3Jt
YXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QsIE1pbGxpc2Vjb25kc0RvTm90QWZmZWN0
UmVzdWx0KSB7CisgIEVYUEVDVF9FUSgKKyAgICAgICIyMDExLTEwLTMxVDE4OjUyOjQyIiwKKyAg
ICAgIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKDEzMjAwODcxNjIgKiBrTWlsbGlz
UGVyU2VjICsgMjM0KSk7Cit9CisKK1RFU1RfRihGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNv
ODYwMVRlc3QsIFByaW50c0xlYWRpbmdaZXJvZXMpIHsKKyAgRVhQRUNUX0VRKCIyMDExLTA5LTAz
VDA1OjA3OjAyIiwKKyAgICAgICAgICAgIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAx
KDEzMTUwMjY0MjIgKiBrTWlsbGlzUGVyU2VjKSk7Cit9CisKK1RFU1RfRihGb3JtYXRFcG9jaFRp
bWVJbk1pbGxpc0FzSXNvODYwMVRlc3QsIFByaW50czI0SG91clRpbWUpIHsKKyAgRVhQRUNUX0VR
KCIyMDExLTA5LTI4VDE3OjA4OjIyIiwKKyAgICAgICAgICAgIEZvcm1hdEVwb2NoVGltZUluTWls
bGlzQXNJc284NjAxKDEzMTcyMjk3MDIgKiBrTWlsbGlzUGVyU2VjKSk7Cit9CisKK1RFU1RfRihG
b3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QsIFByaW50c0Vwb2NoU3RhcnQpIHsK
KyAgRVhQRUNUX0VRKCIxOTcwLTAxLTAxVDAwOjAwOjAwIiwgRm9ybWF0RXBvY2hUaW1lSW5NaWxs
aXNBc0lzbzg2MDEoMCkpOworfQorCiAjaWYgR1RFU1RfQ0FOX0NPTVBBUkVfTlVMTAogCi0jaWZk
ZWYgX19CT1JMQU5EQ19fCisjIGlmZGVmIF9fQk9STEFORENfXwogLy8gU2lsZW5jZXMgd2Fybmlu
Z3M6ICJDb25kaXRpb24gaXMgYWx3YXlzIHRydWUiLCAiVW5yZWFjaGFibGUgY29kZSIKLSNwcmFn
bWEgb3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAotI2VuZGlmCisjICBwcmFnbWEgb3B0aW9uIHB1
c2ggLXctY2NjIC13LXJjaAorIyBlbmRpZgogCiAvLyBUZXN0cyB0aGF0IEdURVNUX0lTX05VTExf
TElURVJBTF8oeCkgaXMgdHJ1ZSB3aGVuIHggaXMgYSBudWxsCiAvLyBwb2ludGVyIGxpdGVyYWwu
CkBAIC0zMDMsMTQgKzUyNyw2IEBAIFRFU1QoTnVsbExpdGVyYWxUZXN0LCBJc1RydWVGb3JOdWxs
TGl0ZXJhbHMpIHsKICAgRVhQRUNUX1RSVUUoR1RFU1RfSVNfTlVMTF9MSVRFUkFMXygwKSk7CiAg
IEVYUEVDVF9UUlVFKEdURVNUX0lTX05VTExfTElURVJBTF8oMFUpKTsKICAgRVhQRUNUX1RSVUUo
R1RFU1RfSVNfTlVMTF9MSVRFUkFMXygwTCkpOwotICBFWFBFQ1RfVFJVRShHVEVTVF9JU19OVUxM
X0xJVEVSQUxfKGZhbHNlKSk7Ci0jaWZuZGVmIF9fQk9STEFORENfXwotICAvLyBTb21lIGNvbXBp
bGVycyBtYXkgZmFpbCB0byBkZXRlY3Qgc29tZSBudWxsIHBvaW50ZXIgbGl0ZXJhbHM7Ci0gIC8v
IGFzIGxvbmcgYXMgdXNlcnMgb2YgdGhlIGZyYW1ld29yayBkb24ndCB1c2Ugc3VjaCBsaXRlcmFs
cywgdGhpcwotICAvLyBpcyBoYXJtbGVzcy4KLSAgRVhQRUNUX1RSVUUoR1RFU1RfSVNfTlVMTF9M
SVRFUkFMXygxIC0gMSkpOwotICBFWFBFQ1RfVFJVRShHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHRy
dWUgJiYgZmFsc2UpKTsKLSNlbmRpZgogfQogCiAvLyBUZXN0cyB0aGF0IEdURVNUX0lTX05VTExf
TElURVJBTF8oeCkgaXMgZmFsc2Ugd2hlbiB4IGlzIG5vdCBhIG51bGwKQEAgLTMyMiwxMCArNTM4
LDEwIEBAIFRFU1QoTnVsbExpdGVyYWxUZXN0LCBJc0ZhbHNlRm9yTm9uTnVsbExpdGVyYWxzKSB7
CiAgIEVYUEVDVF9GQUxTRShHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHN0YXRpY19jYXN0PHZvaWQq
PihOVUxMKSkpOwogfQogCi0jaWZkZWYgX19CT1JMQU5EQ19fCisjIGlmZGVmIF9fQk9STEFORENf
XwogLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0ZXIgcHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1
c2giIHN1cHByZXNzZWQgdGhlbS4KLSNwcmFnbWEgb3B0aW9uIHBvcAotI2VuZGlmCisjICBwcmFn
bWEgb3B0aW9uIHBvcAorIyBlbmRpZgogCiAjZW5kaWYgIC8vIEdURVNUX0NBTl9DT01QQVJFX05V
TEwKIC8vCkBAIC0zMzMsMzkgKzU0OSw0MSBAQCBURVNUKE51bGxMaXRlcmFsVGVzdCwgSXNGYWxz
ZUZvck5vbk51bGxMaXRlcmFscykgewogCiAvLyBUZXN0cyB0aGF0IHRoZSBOVUwgY2hhcmFjdGVy
IEwnXDAnIGlzIGVuY29kZWQgY29ycmVjdGx5LgogVEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBD
YW5FbmNvZGVOdWwpIHsKLSAgY2hhciBidWZmZXJbMzJdOwotICBFWFBFQ1RfU1RSRVEoIiIsIENv
ZGVQb2ludFRvVXRmOChMJ1wwJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiIiwgQ29kZVBvaW50
VG9VdGY4KEwnXDAnKSk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgQVNDSUkgY2hhcmFjdGVycyBhcmUg
ZW5jb2RlZCBjb3JyZWN0bHkuCiBURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29kZUFz
Y2lpKSB7Ci0gIGNoYXIgYnVmZmVyWzMyXTsKLSAgRVhQRUNUX1NUUkVRKCJhIiwgQ29kZVBvaW50
VG9VdGY4KEwnYScsIGJ1ZmZlcikpOwotICBFWFBFQ1RfU1RSRVEoIloiLCBDb2RlUG9pbnRUb1V0
ZjgoTCdaJywgYnVmZmVyKSk7Ci0gIEVYUEVDVF9TVFJFUSgiJiIsIENvZGVQb2ludFRvVXRmOChM
JyYnLCBidWZmZXIpKTsKLSAgRVhQRUNUX1NUUkVRKCJceDdGIiwgQ29kZVBvaW50VG9VdGY4KEwn
XHg3RicsIGJ1ZmZlcikpOworICBFWFBFQ1RfRVEoImEiLCBDb2RlUG9pbnRUb1V0ZjgoTCdhJykp
OworICBFWFBFQ1RfRVEoIloiLCBDb2RlUG9pbnRUb1V0ZjgoTCdaJykpOworICBFWFBFQ1RfRVEo
IiYiLCBDb2RlUG9pbnRUb1V0ZjgoTCcmJykpOworICBFWFBFQ1RfRVEoIlx4N0YiLCBDb2RlUG9p
bnRUb1V0ZjgoTCdceDdGJykpOwogfQogCiAvLyBUZXN0cyB0aGF0IFVuaWNvZGUgY29kZS1wb2lu
dHMgdGhhdCBoYXZlIDggdG8gMTEgYml0cyBhcmUgZW5jb2RlZAogLy8gYXMgMTEweHh4eHggMTB4
eHh4eHguCiBURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29kZThUbzExQml0cykgewot
ICBjaGFyIGJ1ZmZlclszMl07CiAgIC8vIDAwMCAxMTAxIDAwMTEgPT4gMTEwLTAwMDExIDEwLTAx
MDAxMQotICBFWFBFQ1RfU1RSRVEoIlx4QzNceDkzIiwgQ29kZVBvaW50VG9VdGY4KEwnXHhEMycs
IGJ1ZmZlcikpOworICBFWFBFQ1RfRVEoIlx4QzNceDkzIiwgQ29kZVBvaW50VG9VdGY4KEwnXHhE
MycpKTsKIAogICAvLyAxMDEgMDExMSAwMTEwID0+IDExMC0xMDEwMSAxMC0xMTAxMTAKLSAgRVhQ
RUNUX1NUUkVRKCJceEQ1XHhCNiIsIENvZGVQb2ludFRvVXRmOChMJ1x4NTc2JywgYnVmZmVyKSk7
CisgIC8vIFNvbWUgY29tcGlsZXJzIChlLmcuLCBHQ0Mgb24gTWluR1cpIGNhbm5vdCBoYW5kbGUg
bm9uLUFTQ0lJIGNvZGVwb2ludHMKKyAgLy8gaW4gd2lkZSBzdHJpbmdzIGFuZCB3aWRlIGNoYXJz
LiBJbiBvcmRlciB0byBhY2NvbW1vZGF0ZSB0aGVtLCB3ZSBoYXZlIHRvCisgIC8vIGludHJvZHVj
ZSBzdWNoIGNoYXJhY3RlciBjb25zdGFudHMgYXMgaW50ZWdlcnMuCisgIEVYUEVDVF9FUSgiXHhE
NVx4QjYiLAorICAgICAgICAgICAgQ29kZVBvaW50VG9VdGY4KHN0YXRpY19jYXN0PHdjaGFyX3Q+
KDB4NTc2KSkpOwogfQogCiAvLyBUZXN0cyB0aGF0IFVuaWNvZGUgY29kZS1wb2ludHMgdGhhdCBo
YXZlIDEyIHRvIDE2IGJpdHMgYXJlIGVuY29kZWQKIC8vIGFzIDExMTB4eHh4IDEweHh4eHh4IDEw
eHh4eHh4LgogVEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBDYW5FbmNvZGUxMlRvMTZCaXRzKSB7
Ci0gIGNoYXIgYnVmZmVyWzMyXTsKICAgLy8gMDAwMCAxMDAwIDExMDEgMDAxMSA9PiAxMTEwLTAw
MDAgMTAtMTAwMDExIDEwLTAxMDAxMQotICBFWFBFQ1RfU1RSRVEoIlx4RTBceEEzXHg5MyIsIENv
ZGVQb2ludFRvVXRmOChMJ1x4OEQzJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiXHhFMFx4QTNc
eDkzIiwKKyAgICAgICAgICAgIENvZGVQb2ludFRvVXRmOChzdGF0aWNfY2FzdDx3Y2hhcl90Pigw
eDhEMykpKTsKIAogICAvLyAxMTAwIDAxMTEgMDEwMCAxMTAxID0+IDExMTAtMTEwMCAxMC0wMTEx
MDEgMTAtMDAxMTAxCi0gIEVYUEVDVF9TVFJFUSgiXHhFQ1x4OURceDhEIiwgQ29kZVBvaW50VG9V
dGY4KEwnXHhDNzREJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiXHhFQ1x4OURceDhEIiwKKyAg
ICAgICAgICAgIENvZGVQb2ludFRvVXRmOChzdGF0aWNfY2FzdDx3Y2hhcl90PigweEM3NEQpKSk7
CiB9CiAKICNpZiAhR1RFU1RfV0lERV9TVFJJTkdfVVNFU19VVEYxNl8KQEAgLTM3NiwyMiArNTk0
LDE5IEBAIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2RlMTJUbzE2Qml0cykgewog
Ly8gVGVzdHMgdGhhdCBVbmljb2RlIGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSAxNyB0byAyMSBiaXRz
IGFyZSBlbmNvZGVkCiAvLyBhcyAxMTExMHh4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eC4K
IFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2RlMTdUbzIxQml0cykgewotICBjaGFy
IGJ1ZmZlclszMl07CiAgIC8vIDAgMDAwMSAwMDAwIDEwMDAgMTEwMSAwMDExID0+IDExMTEwLTAw
MCAxMC0wMTAwMDAgMTAtMTAwMDExIDEwLTAxMDAxMQotICBFWFBFQ1RfU1RSRVEoIlx4RjBceDkw
XHhBM1x4OTMiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDEwOEQzJywgYnVmZmVyKSk7CisgIEVYUEVD
VF9FUSgiXHhGMFx4OTBceEEzXHg5MyIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA4RDMnKSk7CiAK
ICAgLy8gMCAwMDAxIDAwMDAgMDEwMCAwMDAwIDAwMDAgPT4gMTExMTAtMDAwIDEwLTAxMDAwMCAx
MC0wMTAwMDAgMTAtMDAwMDAwCi0gIEVYUEVDVF9TVFJFUSgiXHhGMFx4OTBceDkwXHg4MCIsIENv
ZGVQb2ludFRvVXRmOChMJ1x4MTA0MDAnLCBidWZmZXIpKTsKKyAgRVhQRUNUX0VRKCJceEYwXHg5
MFx4OTBceDgwIiwgQ29kZVBvaW50VG9VdGY4KEwnXHgxMDQwMCcpKTsKIAogICAvLyAxIDAwMDAg
MTAwMCAwMTEwIDAwMTEgMDEwMCA9PiAxMTExMC0xMDAgMTAtMDAxMDAwIDEwLTAxMTAwMCAxMC0x
MTAxMDAKLSAgRVhQRUNUX1NUUkVRKCJceEY0XHg4OFx4OThceEI0IiwgQ29kZVBvaW50VG9VdGY4
KEwnXHgxMDg2MzQnLCBidWZmZXIpKTsKKyAgRVhQRUNUX0VRKCJceEY0XHg4OFx4OThceEI0Iiwg
Q29kZVBvaW50VG9VdGY4KEwnXHgxMDg2MzQnKSk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgZW5jb2Rp
bmcgYW4gaW52YWxpZCBjb2RlLXBvaW50IGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgcmVzdWx0Lgog
VEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBDYW5FbmNvZGVJbnZhbGlkQ29kZVBvaW50KSB7Ci0g
IGNoYXIgYnVmZmVyWzMyXTsKLSAgRVhQRUNUX1NUUkVRKCIoSW52YWxpZCBVbmljb2RlIDB4MTIz
NEFCQ0QpIiwKLSAgICAgICAgICAgICAgIENvZGVQb2ludFRvVXRmOChMJ1x4MTIzNEFCQ0QnLCBi
dWZmZXIpKTsKKyAgRVhQRUNUX0VRKCIoSW52YWxpZCBVbmljb2RlIDB4MTIzNEFCQ0QpIiwgQ29k
ZVBvaW50VG9VdGY4KEwnXHgxMjM0QUJDRCcpKTsKIH0KIAogI2VuZGlmICAvLyAhR1RFU1RfV0lE
RV9TVFJJTkdfVVNFU19VVEYxNl8KQEAgLTQyMCwyMCArNjM1LDIzIEBAIFRFU1QoV2lkZVN0cmlu
Z1RvVXRmOFRlc3QsIENhbkVuY29kZThUbzExQml0cykgewogICBFWFBFQ1RfU1RSRVEoIlx4QzNc
eDkzIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4RDMiLCAtMSkuY19zdHIoKSk7CiAKICAgLy8gMTAx
IDAxMTEgMDExMCA9PiAxMTAtMTAxMDEgMTAtMTEwMTEwCi0gIEVYUEVDVF9TVFJFUSgiXHhENVx4
QjYiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHg1NzYiLCAxKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NU
UkVRKCJceEQ1XHhCNiIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceDU3NiIsIC0xKS5jX3N0cigpKTsK
KyAgY29uc3Qgd2NoYXJfdCBzW10gPSB7IDB4NTc2LCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgi
XHhENVx4QjYiLCBXaWRlU3RyaW5nVG9VdGY4KHMsIDEpLmNfc3RyKCkpOworICBFWFBFQ1RfU1RS
RVEoIlx4RDVceEI2IiwgV2lkZVN0cmluZ1RvVXRmOChzLCAtMSkuY19zdHIoKSk7CiB9CiAKIC8v
IFRlc3RzIHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0aGF0IGhhdmUgMTIgdG8gMTYgYml0cyBh
cmUgZW5jb2RlZAogLy8gYXMgMTExMHh4eHggMTB4eHh4eHggMTB4eHh4eHguCiBURVNUKFdpZGVT
dHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGUxMlRvMTZCaXRzKSB7CiAgIC8vIDAwMDAgMTAwMCAx
MTAxIDAwMTEgPT4gMTExMC0wMDAwIDEwLTEwMDAxMSAxMC0wMTAwMTEKLSAgRVhQRUNUX1NUUkVR
KCJceEUwXHhBM1x4OTMiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHg4RDMiLCAxKS5jX3N0cigpKTsK
LSAgRVhQRUNUX1NUUkVRKCJceEUwXHhBM1x4OTMiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHg4RDMi
LCAtMSkuY19zdHIoKSk7CisgIGNvbnN0IHdjaGFyX3QgczFbXSA9IHsgMHg4RDMsICdcMCcgfTsK
KyAgRVhQRUNUX1NUUkVRKCJceEUwXHhBM1x4OTMiLCBXaWRlU3RyaW5nVG9VdGY4KHMxLCAxKS5j
X3N0cigpKTsKKyAgRVhQRUNUX1NUUkVRKCJceEUwXHhBM1x4OTMiLCBXaWRlU3RyaW5nVG9VdGY4
KHMxLCAtMSkuY19zdHIoKSk7CiAKICAgLy8gMTEwMCAwMTExIDAxMDAgMTEwMSA9PiAxMTEwLTEx
MDAgMTAtMDExMTAxIDEwLTAwMTEwMQotICBFWFBFQ1RfU1RSRVEoIlx4RUNceDlEXHg4RCIsIFdp
ZGVTdHJpbmdUb1V0ZjgoTCJceEM3NEQiLCAxKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJc
eEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhDNzREIiwgLTEpLmNfc3RyKCkpOwor
ICBjb25zdCB3Y2hhcl90IHMyW10gPSB7IDB4Qzc0RCwgJ1wwJyB9OworICBFWFBFQ1RfU1RSRVEo
Ilx4RUNceDlEXHg4RCIsIFdpZGVTdHJpbmdUb1V0ZjgoczIsIDEpLmNfc3RyKCkpOworICBFWFBF
Q1RfU1RSRVEoIlx4RUNceDlEXHg4RCIsIFdpZGVTdHJpbmdUb1V0ZjgoczIsIC0xKS5jX3N0cigp
KTsKIH0KIAogLy8gVGVzdHMgdGhhdCB0aGUgY29udmVyc2lvbiBzdG9wcyB3aGVuIHRoZSBmdW5j
dGlvbiBlbmNvdW50ZXJzIFwwIGNoYXJhY3Rlci4KQEAgLTQ0Nyw3ICs2NjUsNiBAQCBURVNUKFdp
ZGVTdHJpbmdUb1V0ZjhUZXN0LCBTdG9wc1doZW5MZW5ndGhMaW1pdFJlYWNoZWQpIHsKICAgRVhQ
RUNUX1NUUkVRKCJBQkMiLCBXaWRlU3RyaW5nVG9VdGY4KEwiQUJDREVGIiwgMykuY19zdHIoKSk7
CiB9CiAKLQogI2lmICFHVEVTVF9XSURFX1NUUklOR19VU0VTX1VURjE2XwogLy8gVGVzdHMgdGhh
dCBVbmljb2RlIGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSAxNyB0byAyMSBiaXRzIGFyZSBlbmNvZGVk
CiAvLyBhcyAxMTExMHh4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eC4gVGhpcyBjb2RlIG1h
eSBub3QgY29tcGlsZQpAQCAtNDcxLDI1ICs2ODgsMjkgQEAgVEVTVChXaWRlU3RyaW5nVG9VdGY4
VGVzdCwgQ2FuRW5jb2RlSW52YWxpZENvZGVQb2ludCkgewogLy8gVGVzdHMgdGhhdCBzdXJyb2dh
dGUgcGFpcnMgYXJlIGVuY29kZWQgY29ycmVjdGx5IG9uIHRoZSBzeXN0ZW1zIHVzaW5nCiAvLyBV
VEYtMTYgZW5jb2RpbmcgaW4gdGhlIHdpZGUgc3RyaW5ncy4KIFRFU1QoV2lkZVN0cmluZ1RvVXRm
OFRlc3QsIENhbkVuY29kZVZhbGlkVXRmMTZTVXJyb2dhdGVQYWlycykgewotICBFWFBFQ1RfU1RS
RVEoIlx4RjBceDkwXHg5MFx4ODAiLAotICAgICAgICAgICAgICAgV2lkZVN0cmluZ1RvVXRmOChM
Ilx4RDgwMVx4REMwMCIsIC0xKS5jX3N0cigpKTsKKyAgY29uc3Qgd2NoYXJfdCBzW10gPSB7IDB4
RDgwMSwgMHhEQzAwLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhGMFx4OTBceDkwXHg4MCIs
IFdpZGVTdHJpbmdUb1V0ZjgocywgLTEpLmNfc3RyKCkpOwogfQogCiAvLyBUZXN0cyB0aGF0IGVu
Y29kaW5nIGFuIGludmFsaWQgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyCiAvLyBnZW5lcmF0ZXMgdGhl
IGV4cGVjdGVkIHJlc3VsdC4KIFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENhbkVuY29kZUlu
dmFsaWRVdGYxNlN1cnJvZ2F0ZVBhaXIpIHsKICAgLy8gTGVhZGluZyBzdXJyb2dhdGUgaXMgYXQg
dGhlIGVuZCBvZiB0aGUgc3RyaW5nLgotICBFWFBFQ1RfU1RSRVEoIlx4RURceEEwXHg4MCIsIFdp
ZGVTdHJpbmdUb1V0ZjgoTCJceEQ4MDAiLCAtMSkuY19zdHIoKSk7CisgIGNvbnN0IHdjaGFyX3Qg
czFbXSA9IHsgMHhEODAwLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhFRFx4QTBceDgwIiwg
V2lkZVN0cmluZ1RvVXRmOChzMSwgLTEpLmNfc3RyKCkpOwogICAvLyBMZWFkaW5nIHN1cnJvZ2F0
ZSBpcyBub3QgZm9sbG93ZWQgYnkgdGhlIHRyYWlsaW5nIHN1cnJvZ2F0ZS4KLSAgRVhQRUNUX1NU
UkVRKCJceEVEXHhBMFx4ODAkIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4RDgwMCQiLCAtMSkuY19z
dHIoKSk7CisgIGNvbnN0IHdjaGFyX3QgczJbXSA9IHsgMHhEODAwLCAnTScsICdcMCcgfTsKKyAg
RVhQRUNUX1NUUkVRKCJceEVEXHhBMFx4ODBNIiwgV2lkZVN0cmluZ1RvVXRmOChzMiwgLTEpLmNf
c3RyKCkpOwogICAvLyBUcmFpbGluZyBzdXJyb2dhdGUgYXBwZWFyYXMgd2l0aG91dCBhIGxlYWRp
bmcgc3Vycm9nYXRlLgotICBFWFBFQ1RfU1RSRVEoIlx4RURceEIwXHg4MFBRUiIsIFdpZGVTdHJp
bmdUb1V0ZjgoTCJceERDMDBQUVIiLCAtMSkuY19zdHIoKSk7CisgIGNvbnN0IHdjaGFyX3QgczNb
XSA9IHsgMHhEQzAwLCAnUCcsICdRJywgJ1InLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhF
RFx4QjBceDgwUFFSIiwgV2lkZVN0cmluZ1RvVXRmOChzMywgLTEpLmNfc3RyKCkpOwogfQogI2Vu
ZGlmICAvLyAhR1RFU1RfV0lERV9TVFJJTkdfVVNFU19VVEYxNl8KIAogLy8gVGVzdHMgdGhhdCBj
b2RlcG9pbnQgY29uY2F0ZW5hdGlvbiB3b3JrcyBjb3JyZWN0bHkuCiAjaWYgIUdURVNUX1dJREVf
U1RSSU5HX1VTRVNfVVRGMTZfCiBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDb25jYXRlbmF0
ZXNDb2RlcG9pbnRzQ29ycmVjdGx5KSB7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0geyAweDEwODYz
NCwgMHhDNzRELCAnXG4nLCAweDU3NiwgMHg4RDMsIDB4MTA4NjM0LCAnXDAnfTsKICAgRVhQRUNU
X1NUUkVRKAogICAgICAgIlx4RjRceDg4XHg5OFx4QjQiCiAgICAgICAgICAgIlx4RUNceDlEXHg4
RCIKQEAgLTQ5NywxMyArNzE4LDE0IEBAIFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENvbmNh
dGVuYXRlc0NvZGVwb2ludHNDb3JyZWN0bHkpIHsKICAgICAgICAgICAiXHhENVx4QjYiCiAgICAg
ICAgICAgIlx4RTBceEEzXHg5MyIKICAgICAgICAgICAiXHhGNFx4ODhceDk4XHhCNCIsCi0gICAg
ICBXaWRlU3RyaW5nVG9VdGY4KEwiXHgxMDg2MzRceEM3NERcblx4NTc2XHg4RDNceDEwODYzNCIs
IC0xKS5jX3N0cigpKTsKKyAgICAgIFdpZGVTdHJpbmdUb1V0ZjgocywgLTEpLmNfc3RyKCkpOwog
fQogI2Vsc2UKIFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENvbmNhdGVuYXRlc0NvZGVwb2lu
dHNDb3JyZWN0bHkpIHsKKyAgY29uc3Qgd2NoYXJfdCBzW10gPSB7IDB4Qzc0RCwgJ1xuJywgMHg1
NzYsIDB4OEQzLCAnXDAnfTsKICAgRVhQRUNUX1NUUkVRKAogICAgICAgIlx4RUNceDlEXHg4RCIg
IlxuIiAiXHhENVx4QjYiICJceEUwXHhBM1x4OTMiLAotICAgICAgV2lkZVN0cmluZ1RvVXRmOChM
Ilx4Qzc0RFxuXHg1NzZceDhEMyIsIC0xKS5jX3N0cigpKTsKKyAgICAgIFdpZGVTdHJpbmdUb1V0
ZjgocywgLTEpLmNfc3RyKCkpOwogfQogI2VuZGlmICAvLyAhR1RFU1RfV0lERV9TVFJJTkdfVVNF
U19VVEYxNl8KIApAQCAtNzk3LDI2OSArMTAxOSwxNiBAQCBURVNUKEFzc2VydEhlbHBlclRlc3Qs
IEFzc2VydEhlbHBlcklzU21hbGwpIHsKICAgRVhQRUNUX0xFKHNpemVvZih0ZXN0aW5nOjppbnRl
cm5hbDo6QXNzZXJ0SGVscGVyKSwgc2l6ZW9mKHZvaWQqKSk7CiB9CiAKLS8vIFRlc3RzIHRoZSBT
dHJpbmcgY2xhc3MuCi0KLS8vIFRlc3RzIFN0cmluZydzIGNvbnN0cnVjdG9ycy4KLVRFU1QoU3Ry
aW5nVGVzdCwgQ29uc3RydWN0b3JzKSB7Ci0gIC8vIERlZmF1bHQgY3Rvci4KLSAgU3RyaW5nIHMx
OwotICAvLyBXZSBhcmVuJ3QgdXNpbmcgRVhQRUNUX0VRKE5VTEwsIHMxLmNfc3RyKCkpIGJlY2F1
c2UgY29tcGFyaW5nCi0gIC8vIHBvaW50ZXJzIHdpdGggTlVMTCBpc24ndCBzdXBwb3J0ZWQgb24g
YWxsIHBsYXRmb3Jtcy4KLSAgRVhQRUNUX0VRKDBVLCBzMS5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9U
UlVFKE5VTEwgPT0gczEuY19zdHIoKSk7Ci0KLSAgLy8gSW1wbGljaXRseSBjb25zdHJ1Y3RzIGZy
b20gYSBDLXN0cmluZy4KLSAgU3RyaW5nIHMyID0gIkhpIjsKLSAgRVhQRUNUX0VRKDJVLCBzMi5s
ZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiSGkiLCBzMi5jX3N0cigpKTsKLQotICAvLyBDb25z
dHJ1Y3RzIGZyb20gYSBDLXN0cmluZyBhbmQgYSBsZW5ndGguCi0gIFN0cmluZyBzMygiaGVsbG8i
LCAzKTsKLSAgRVhQRUNUX0VRKDNVLCBzMy5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiaGVs
IiwgczMuY19zdHIoKSk7Ci0KLSAgLy8gVGhlIGVtcHR5IFN0cmluZyBzaG91bGQgYmUgY3JlYXRl
ZCB3aGVuIFN0cmluZyBpcyBjb25zdHJ1Y3RlZCB3aXRoCi0gIC8vIGEgTlVMTCBwb2ludGVyIGFu
ZCBsZW5ndGggMC4KLSAgRVhQRUNUX0VRKDBVLCBTdHJpbmcoTlVMTCwgMCkubGVuZ3RoKCkpOwot
ICBFWFBFQ1RfRkFMU0UoU3RyaW5nKE5VTEwsIDApLmNfc3RyKCkgPT0gTlVMTCk7Ci0KLSAgLy8g
Q29uc3RydWN0cyBhIFN0cmluZyB0aGF0IGNvbnRhaW5zICdcMCcuCi0gIFN0cmluZyBzNCgiYVww
YmNkIiwgNCk7Ci0gIEVYUEVDVF9FUSg0VSwgczQubGVuZ3RoKCkpOwotICBFWFBFQ1RfRVEoJ2En
LCBzNC5jX3N0cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdcMCcsIHM0LmNfc3RyKClbMV0pOwotICBF
WFBFQ1RfRVEoJ2InLCBzNC5jX3N0cigpWzJdKTsKLSAgRVhQRUNUX0VRKCdjJywgczQuY19zdHIo
KVszXSk7Ci0KLSAgLy8gQ29weSBjdG9yIHdoZXJlIHRoZSBzb3VyY2UgaXMgTlVMTC4KLSAgY29u
c3QgU3RyaW5nIG51bGxfc3RyOwotICBTdHJpbmcgczUgPSBudWxsX3N0cjsKLSAgRVhQRUNUX1RS
VUUoczUuY19zdHIoKSA9PSBOVUxMKTsKLQotICAvLyBDb3B5IGN0b3Igd2hlcmUgdGhlIHNvdXJj
ZSBpc24ndCBOVUxMLgotICBTdHJpbmcgczYgPSBzMzsKLSAgRVhQRUNUX0VRKDNVLCBzNi5sZW5n
dGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiaGVsIiwgczYuY19zdHIoKSk7Ci0KLSAgLy8gQ29weSBj
dG9yIHdoZXJlIHRoZSBzb3VyY2UgY29udGFpbnMgJ1wwJy4KLSAgU3RyaW5nIHM3ID0gczQ7Ci0g
IEVYUEVDVF9FUSg0VSwgczcubGVuZ3RoKCkpOwotICBFWFBFQ1RfRVEoJ2EnLCBzNy5jX3N0cigp
WzBdKTsKLSAgRVhQRUNUX0VRKCdcMCcsIHM3LmNfc3RyKClbMV0pOwotICBFWFBFQ1RfRVEoJ2In
LCBzNy5jX3N0cigpWzJdKTsKLSAgRVhQRUNUX0VRKCdjJywgczcuY19zdHIoKVszXSk7Ci19Ci0K
LVRFU1QoU3RyaW5nVGVzdCwgQ29udmVydHNGcm9tU3RkU3RyaW5nKSB7Ci0gIC8vIEFuIGVtcHR5
IHN0ZDo6c3RyaW5nLgotICBjb25zdCBzdGQ6OnN0cmluZyBzcmMxKCIiKTsKLSAgY29uc3QgU3Ry
aW5nIGRlc3QxID0gc3JjMTsKLSAgRVhQRUNUX0VRKDBVLCBkZXN0MS5sZW5ndGgoKSk7Ci0gIEVY
UEVDVF9TVFJFUSgiIiwgZGVzdDEuY19zdHIoKSk7Ci0KLSAgLy8gQSBub3JtYWwgc3RkOjpzdHJp
bmcuCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIHNyYzIoIkhpIik7Ci0gIGNvbnN0IFN0cmluZyBkZXN0
MiA9IHNyYzI7Ci0gIEVYUEVDVF9FUSgyVSwgZGVzdDIubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RS
RVEoIkhpIiwgZGVzdDIuY19zdHIoKSk7Ci0KLSAgLy8gQW4gc3RkOjpzdHJpbmcgd2l0aCBhbiBl
bWJlZGRlZCBOVUwgY2hhcmFjdGVyLgotICBjb25zdCBjaGFyIHNyYzNbXSA9ICJhXDBiIjsKLSAg
Y29uc3QgU3RyaW5nIGRlc3QzID0gc3RkOjpzdHJpbmcoc3JjMywgc2l6ZW9mKHNyYzMpKTsKLSAg
RVhQRUNUX0VRKHNpemVvZihzcmMzKSwgZGVzdDMubGVuZ3RoKCkpOwotICBFWFBFQ1RfRVEoJ2En
LCBkZXN0My5jX3N0cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdcMCcsIGRlc3QzLmNfc3RyKClbMV0p
OwotICBFWFBFQ1RfRVEoJ2InLCBkZXN0My5jX3N0cigpWzJdKTsKLX0KLQotVEVTVChTdHJpbmdU
ZXN0LCBDb252ZXJ0c1RvU3RkU3RyaW5nKSB7Ci0gIC8vIEFuIGVtcHR5IFN0cmluZy4KLSAgY29u
c3QgU3RyaW5nIHNyYzEoIiIpOwotICBjb25zdCBzdGQ6OnN0cmluZyBkZXN0MSA9IHNyYzE7Ci0g
IEVYUEVDVF9FUSgiIiwgZGVzdDEpOwotCi0gIC8vIEEgbm9ybWFsIFN0cmluZy4KLSAgY29uc3Qg
U3RyaW5nIHNyYzIoIkhpIik7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGRlc3QyID0gc3JjMjsKLSAg
RVhQRUNUX0VRKCJIaSIsIGRlc3QyKTsKLQotICAvLyBBIFN0cmluZyBjb250YWluaW5nIGEgJ1ww
Jy4KLSAgY29uc3QgU3RyaW5nIHNyYzMoInhcMHkiLCAzKTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcg
ZGVzdDMgPSBzcmMzOwotICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoInhcMHkiLCAzKSwgZGVzdDMp
OwotfQotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLQotVEVTVChTdHJpbmdUZXN0LCBD
b252ZXJ0c0Zyb21HbG9iYWxTdHJpbmcpIHsKLSAgLy8gQW4gZW1wdHkgOjpzdHJpbmcuCi0gIGNv
bnN0IDo6c3RyaW5nIHNyYzEoIiIpOwotICBjb25zdCBTdHJpbmcgZGVzdDEgPSBzcmMxOwotICBF
WFBFQ1RfRVEoMFUsIGRlc3QxLmxlbmd0aCgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCBkZXN0MS5j
X3N0cigpKTsKLQotICAvLyBBIG5vcm1hbCA6OnN0cmluZy4KLSAgY29uc3QgOjpzdHJpbmcgc3Jj
MigiSGkiKTsKLSAgY29uc3QgU3RyaW5nIGRlc3QyID0gc3JjMjsKLSAgRVhQRUNUX0VRKDJVLCBk
ZXN0Mi5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiSGkiLCBkZXN0Mi5jX3N0cigpKTsKLQot
ICAvLyBBbiA6OnN0cmluZyB3aXRoIGFuIGVtYmVkZGVkIE5VTCBjaGFyYWN0ZXIuCi0gIGNvbnN0
IGNoYXIgc3JjM1tdID0gInhcMHkiOwotICBjb25zdCBTdHJpbmcgZGVzdDMgPSA6OnN0cmluZyhz
cmMzLCBzaXplb2Yoc3JjMykpOwotICBFWFBFQ1RfRVEoc2l6ZW9mKHNyYzMpLCBkZXN0My5sZW5n
dGgoKSk7Ci0gIEVYUEVDVF9FUSgneCcsIGRlc3QzLmNfc3RyKClbMF0pOwotICBFWFBFQ1RfRVEo
J1wwJywgZGVzdDMuY19zdHIoKVsxXSk7Ci0gIEVYUEVDVF9FUSgneScsIGRlc3QzLmNfc3RyKClb
Ml0pOwotfQotCi1URVNUKFN0cmluZ1Rlc3QsIENvbnZlcnRzVG9HbG9iYWxTdHJpbmcpIHsKLSAg
Ly8gQW4gZW1wdHkgU3RyaW5nLgotICBjb25zdCBTdHJpbmcgc3JjMSgiIik7Ci0gIGNvbnN0IDo6
c3RyaW5nIGRlc3QxID0gc3JjMTsKLSAgRVhQRUNUX0VRKCIiLCBkZXN0MSk7Ci0KLSAgLy8gQSBu
b3JtYWwgU3RyaW5nLgotICBjb25zdCBTdHJpbmcgc3JjMigiSGkiKTsKLSAgY29uc3QgOjpzdHJp
bmcgZGVzdDIgPSBzcmMyOwotICBFWFBFQ1RfRVEoIkhpIiwgZGVzdDIpOwotCi0gIGNvbnN0IFN0
cmluZyBzcmMzKCJ4XDB5IiwgMyk7Ci0gIGNvbnN0IDo6c3RyaW5nIGRlc3QzID0gc3JjMzsKLSAg
RVhQRUNUX0VRKDo6c3RyaW5nKCJ4XDB5IiwgMyksIGRlc3QzKTsKLX0KLQotI2VuZGlmICAvLyBH
VEVTVF9IQVNfR0xPQkFMX1NUUklORwotCi0vLyBUZXN0cyBTdHJpbmc6OlNob3dDU3RyaW5nUXVv
dGVkKCkuCi1URVNUKFN0cmluZ1Rlc3QsIFNob3dDU3RyaW5nUXVvdGVkKSB7Ci0gIEVYUEVDVF9T
VFJFUSgiKG51bGwpIiwKLSAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQo
TlVMTCkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXCJcIiIsCi0gICAgICAgICAgICAgICBT
dHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKCIiKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJc
ImZvb1wiIiwKLSAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQoImZvbyIp
LmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6OmVtcHR5KCkuCi1URVNUKFN0cmluZ1Rl
c3QsIEVtcHR5KSB7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiIikuZW1wdHkoKSk7Ci0gIEVYUEVD
VF9GQUxTRShTdHJpbmcoKS5lbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZyhOVUxMKS5l
bXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiYSIpLmVtcHR5KCkpOwotICBFWFBFQ1Rf
RkFMU0UoU3RyaW5nKCJcMCIsIDEpLmVtcHR5KCkpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6OkNv
bXBhcmUoKS4KLVRFU1QoU3RyaW5nVGVzdCwgQ29tcGFyZSkgewotICAvLyBOVUxMIHZzIE5VTEwu
Ci0gIEVYUEVDVF9FUSgwLCBTdHJpbmcoKS5Db21wYXJlKFN0cmluZygpKSk7Ci0KLSAgLy8gTlVM
TCB2cyBub24tTlVMTC4KLSAgRVhQRUNUX0VRKC0xLCBTdHJpbmcoKS5Db21wYXJlKFN0cmluZygi
IikpKTsKLQotICAvLyBOb24tTlVMTCB2cyBOVUxMLgotICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCIi
KS5Db21wYXJlKFN0cmluZygpKSk7Ci0KLSAgLy8gVGhlIGZvbGxvd2luZyBjb3ZlcnMgbm9uLU5V
TEwgdnMgbm9uLU5VTEwuCi0KLSAgLy8gIiIgdnMgIiIuCi0gIEVYUEVDVF9FUSgwLCBTdHJpbmco
IiIpLkNvbXBhcmUoU3RyaW5nKCIiKSkpOwotCi0gIC8vICIiIHZzIG5vbi0iIi4KLSAgRVhQRUNU
X0VRKC0xLCBTdHJpbmcoIiIpLkNvbXBhcmUoU3RyaW5nKCJcMCIsIDEpKSk7Ci0gIEVYUEVDVF9F
USgtMSwgU3RyaW5nKCIiKS5Db21wYXJlKCIgIikpOwotCi0gIC8vIE5vbi0iIiB2cyAiIi4KLSAg
RVhQRUNUX0VRKDEsIFN0cmluZygiYSIpLkNvbXBhcmUoU3RyaW5nKCIiKSkpOwotCi0gIC8vIFRo
ZSBmb2xsb3dpbmcgY292ZXJzIG5vbi0iIiB2cyBub24tIiIuCi0KLSAgLy8gU2FtZSBsZW5ndGgg
YW5kIGVxdWFsLgotICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCJhIikuQ29tcGFyZShTdHJpbmcoImEi
KSkpOwotCi0gIC8vIFNhbWUgbGVuZ3RoIGFuZCBkaWZmZXJlbnQuCi0gIEVYUEVDVF9FUSgtMSwg
U3RyaW5nKCJhXDBiIiwgMykuQ29tcGFyZShTdHJpbmcoImFcMGMiLCAzKSkpOwotICBFWFBFQ1Rf
RVEoMSwgU3RyaW5nKCJiIikuQ29tcGFyZShTdHJpbmcoImEiKSkpOwotCi0gIC8vIERpZmZlcmVu
dCBsZW5ndGhzLgotICBFWFBFQ1RfRVEoLTEsIFN0cmluZygiYSIpLkNvbXBhcmUoU3RyaW5nKCJh
YiIpKSk7Ci0gIEVYUEVDVF9FUSgtMSwgU3RyaW5nKCJhIikuQ29tcGFyZShTdHJpbmcoImFcMCIs
IDIpKSk7Ci0gIEVYUEVDVF9FUSgxLCBTdHJpbmcoImFiYyIpLkNvbXBhcmUoU3RyaW5nKCJhYWNk
IikpKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpvcGVyYXRvcj09KCkuCi1URVNUKFN0cmluZ1Rl
c3QsIEVxdWFscykgewotICBjb25zdCBTdHJpbmcgbnVsbChOVUxMKTsKLSAgRVhQRUNUX1RSVUUo
bnVsbCA9PSBOVUxMKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRkFMU0UobnVsbCA9PSAiIik7ICAv
LyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKG51bGwgPT0gImJhciIpOyAgLy8gTk9MSU5UCi0KLSAg
Y29uc3QgU3RyaW5nIGVtcHR5KCIiKTsKLSAgRVhQRUNUX0ZBTFNFKGVtcHR5ID09IE5VTEwpOyAg
Ly8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKGVtcHR5ID09ICIiKTsgIC8vIE5PTElOVAotICBFWFBF
Q1RfRkFMU0UoZW1wdHkgPT0gImJhciIpOyAgLy8gTk9MSU5UCi0KLSAgY29uc3QgU3RyaW5nIGZv
bygiZm9vIik7Ci0gIEVYUEVDVF9GQUxTRShmb28gPT0gTlVMTCk7ICAvLyBOT0xJTlQKLSAgRVhQ
RUNUX0ZBTFNFKGZvbyA9PSAiIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKGZvbyA9PSAi
YmFyIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUoZm9vID09ICJmb28iKTsgIC8vIE5PTElO
VAotCi0gIGNvbnN0IFN0cmluZyBiYXIoInhcMHkiLCAzKTsKLSAgRVhQRUNUX0ZBTFNFKGJhciA9
PSAieCIpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6Om9wZXJhdG9yIT0oKS4KLVRFU1QoU3RyaW5n
VGVzdCwgTm90RXF1YWxzKSB7Ci0gIGNvbnN0IFN0cmluZyBudWxsKE5VTEwpOwotICBFWFBFQ1Rf
RkFMU0UobnVsbCAhPSBOVUxMKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShudWxsICE9ICIi
KTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShudWxsICE9ICJiYXIiKTsgIC8vIE5PTElOVAot
Ci0gIGNvbnN0IFN0cmluZyBlbXB0eSgiIik7Ci0gIEVYUEVDVF9UUlVFKGVtcHR5ICE9IE5VTEwp
OyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShlbXB0eSAhPSAiIik7ICAvLyBOT0xJTlQKLSAg
RVhQRUNUX1RSVUUoZW1wdHkgIT0gImJhciIpOyAgLy8gTk9MSU5UCi0KLSAgY29uc3QgU3RyaW5n
IGZvbygiZm9vIik7Ci0gIEVYUEVDVF9UUlVFKGZvbyAhPSBOVUxMKTsgIC8vIE5PTElOVAotICBF
WFBFQ1RfVFJVRShmb28gIT0gIiIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKGZvbyAhPSAi
YmFyIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKGZvbyAhPSAiZm9vIik7ICAvLyBOT0xJ
TlQKLQotICBjb25zdCBTdHJpbmcgYmFyKCJ4XDB5IiwgMyk7Ci0gIEVYUEVDVF9UUlVFKGJhciAh
PSAieCIpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6Omxlbmd0aCgpLgotVEVTVChTdHJpbmdUZXN0
LCBMZW5ndGgpIHsKLSAgRVhQRUNUX0VRKDBVLCBTdHJpbmcoKS5sZW5ndGgoKSk7Ci0gIEVYUEVD
VF9FUSgwVSwgU3RyaW5nKCIiKS5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgyVSwgU3RyaW5nKCJh
YiIpLmxlbmd0aCgpKTsKLSAgRVhQRUNUX0VRKDNVLCBTdHJpbmcoImFcMGIiLCAzKS5sZW5ndGgo
KSk7Ci19Ci0KLS8vIFRlc3RzIFN0cmluZzo6RW5kc1dpdGgoKS4KLVRFU1QoU3RyaW5nVGVzdCwg
RW5kc1dpdGgpIHsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCJmb29iYXIiKS5FbmRzV2l0aCgiYmFy
IikpOwotICBFWFBFQ1RfVFJVRShTdHJpbmcoImZvb2JhciIpLkVuZHNXaXRoKCIiKSk7Ci0gIEVY
UEVDVF9UUlVFKFN0cmluZygiIikuRW5kc1dpdGgoIiIpKTsKLQotICBFWFBFQ1RfRkFMU0UoU3Ry
aW5nKCJmb29iYXIiKS5FbmRzV2l0aCgiZm9vIikpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCIi
KS5FbmRzV2l0aCgiZm9vIikpOwotfQotCiAvLyBUZXN0cyBTdHJpbmc6OkVuZHNXaXRoQ2FzZUlu
c2Vuc2l0aXZlKCkuCiBURVNUKFN0cmluZ1Rlc3QsIEVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKSB7
Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiZm9vYmFyIikuRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUo
IkJBUiIpKTsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCJmb29iYVIiKS5FbmRzV2l0aENhc2VJbnNl
bnNpdGl2ZSgiYmFyIikpOwotICBFWFBFQ1RfVFJVRShTdHJpbmcoImZvb2JhciIpLkVuZHNXaXRo
Q2FzZUluc2Vuc2l0aXZlKCIiKSk7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiIikuRW5kc1dpdGhD
YXNlSW5zZW5zaXRpdmUoIiIpKTsKKyAgRVhQRUNUX1RSVUUoU3RyaW5nOjpFbmRzV2l0aENhc2VJ
bnNlbnNpdGl2ZSgiZm9vYmFyIiwgIkJBUiIpKTsKKyAgRVhQRUNUX1RSVUUoU3RyaW5nOjpFbmRz
V2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vYmFSIiwgImJhciIpKTsKKyAgRVhQRUNUX1RSVUUoU3Ry
aW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vYmFyIiwgIiIpKTsKKyAgRVhQRUNUX1RS
VUUoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiIiwgIiIpKTsKIAotICBFWFBFQ1Rf
RkFMU0UoU3RyaW5nKCJGb29iYXIiKS5FbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vIikpOwot
ICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCJmb29iYXIiKS5FbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgi
Rm9vIikpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCIiKS5FbmRzV2l0aENhc2VJbnNlbnNpdGl2
ZSgiZm9vIikpOworICBFWFBFQ1RfRkFMU0UoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2
ZSgiRm9vYmFyIiwgImZvbyIpKTsKKyAgRVhQRUNUX0ZBTFNFKFN0cmluZzo6RW5kc1dpdGhDYXNl
SW5zZW5zaXRpdmUoImZvb2JhciIsICJGb28iKSk7CisgIEVYUEVDVF9GQUxTRShTdHJpbmc6OkVu
ZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCIiLCAiZm9vIikpOwogfQogCiAvLyBDKytCdWlsZGVyJ3Mg
cHJlcHJvY2Vzc29yIGlzIGJ1Z2d5OyBpdCBmYWlscyB0byBleHBhbmQgbWFjcm9zIHRoYXQKQEAg
LTEwNzksODcgKzEwNDgsNiBAQCBURVNUKFN0cmluZ1Rlc3QsIENhc2VJbnNlbnNpdGl2ZVdpZGVD
U3RyaW5nRXF1YWxzKSB7CiAgIEVYUEVDVF9UUlVFKFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlV2lk
ZUNTdHJpbmdFcXVhbHMoTCJGT09CQVIiLCBMImZvb2JhciIpKTsKIH0KIAotLy8gVGVzdHMgdGhh
dCBOVUxMIGNhbiBiZSBhc3NpZ25lZCB0byBhIFN0cmluZy4KLVRFU1QoU3RyaW5nVGVzdCwgQ2Fu
QmVBc3NpZ25lZE5VTEwpIHsKLSAgY29uc3QgU3RyaW5nIHNyYyhOVUxMKTsKLSAgU3RyaW5nIGRl
c3Q7Ci0KLSAgZGVzdCA9IHNyYzsKLSAgRVhQRUNUX1NUUkVRKE5VTEwsIGRlc3QuY19zdHIoKSk7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIGVtcHR5IHN0cmluZyAiIiBjYW4gYmUgYXNzaWduZWQg
dG8gYSBTdHJpbmcuCi1URVNUKFN0cmluZ1Rlc3QsIENhbkJlQXNzaWduZWRFbXB0eSkgewotICBj
b25zdCBTdHJpbmcgc3JjKCIiKTsKLSAgU3RyaW5nIGRlc3Q7Ci0KLSAgZGVzdCA9IHNyYzsKLSAg
RVhQRUNUX1NUUkVRKCIiLCBkZXN0LmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgbm9u
LWVtcHR5IHN0cmluZyBjYW4gYmUgYXNzaWduZWQgdG8gYSBTdHJpbmcuCi1URVNUKFN0cmluZ1Rl
c3QsIENhbkJlQXNzaWduZWROb25FbXB0eSkgewotICBjb25zdCBTdHJpbmcgc3JjKCJoZWxsbyIp
OwotICBTdHJpbmcgZGVzdDsKLSAgZGVzdCA9IHNyYzsKLSAgRVhQRUNUX0VRKDVVLCBkZXN0Lmxl
bmd0aCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJoZWxsbyIsIGRlc3QuY19zdHIoKSk7Ci0KLSAgY29u
c3QgU3RyaW5nIHNyYzIoInhcMHkiLCAzKTsKLSAgU3RyaW5nIGRlc3QyOwotICBkZXN0MiA9IHNy
YzI7Ci0gIEVYUEVDVF9FUSgzVSwgZGVzdDIubGVuZ3RoKCkpOwotICBFWFBFQ1RfRVEoJ3gnLCBk
ZXN0Mi5jX3N0cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdcMCcsIGRlc3QyLmNfc3RyKClbMV0pOwot
ICBFWFBFQ1RfRVEoJ3knLCBkZXN0Mi5jX3N0cigpWzJdKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBh
IFN0cmluZyBjYW4gYmUgYXNzaWduZWQgdG8gaXRzZWxmLgotVEVTVChTdHJpbmdUZXN0LCBDYW5C
ZUFzc2lnbmVkU2VsZikgewotICBTdHJpbmcgZGVzdCgiaGVsbG8iKTsKLQotICBkZXN0ID0gZGVz
dDsKLSAgRVhQRUNUX1NUUkVRKCJoZWxsbyIsIGRlc3QuY19zdHIoKSk7Ci19Ci0KLS8vIFN1biBT
dHVkaW8gPCAxMiBpbmNvcnJlY3RseSByZWplY3RzIHRoaXMgY29kZSBkdWUgdG8gYW4gb3Zlcmxv
YWRpbmcKLS8vIGFtYmlndWl0eS4KLSNpZiAhKGRlZmluZWQoX19TVU5QUk9fQ0MpICYmIF9fU1VO
UFJPX0NDIDwgMHg1OTApCi0vLyBUZXN0cyBzdHJlYW1pbmcgYSBTdHJpbmcuCi1URVNUKFN0cmlu
Z1Rlc3QsIFN0cmVhbXMpIHsKLSAgRVhQRUNUX0VRKFN0cmVhbWFibGVUb1N0cmluZyhTdHJpbmco
KSksICIobnVsbCkiKTsKLSAgRVhQRUNUX0VRKFN0cmVhbWFibGVUb1N0cmluZyhTdHJpbmcoIiIp
KSwgIiIpOwotICBFWFBFQ1RfRVEoU3RyZWFtYWJsZVRvU3RyaW5nKFN0cmluZygiYVwwYiIsIDMp
KSwgImFcXDBiIik7Ci19Ci0jZW5kaWYKLQotLy8gVGVzdHMgdGhhdCBTdHJpbmc6OkZvcm1hdCgp
IHdvcmtzLgotVEVTVChTdHJpbmdUZXN0LCBGb3JtYXRXb3JrcykgewotICAvLyBOb3JtYWwgY2Fz
ZTogdGhlIGZvcm1hdCBzcGVjIGlzIHZhbGlkLCB0aGUgYXJndW1lbnRzIG1hdGNoIHRoZQotICAv
LyBzcGVjLCBhbmQgdGhlIHJlc3VsdCBpcyA8IDQwOTUgY2hhcmFjdGVycy4KLSAgRVhQRUNUX1NU
UkVRKCJIZWxsbywgNDIiLCBTdHJpbmc6OkZvcm1hdCgiJXMsICVkIiwgIkhlbGxvIiwgNDIpLmNf
c3RyKCkpOwotCi0gIC8vIEVkZ2UgY2FzZTogdGhlIHJlc3VsdCBpcyA0MDk1IGNoYXJhY3RlcnMu
Ci0gIGNoYXIgYnVmZmVyWzQwOTZdOwotICBjb25zdCBzaXplX3Qga1NpemUgPSBzaXplb2YoYnVm
ZmVyKTsKLSAgbWVtc2V0KGJ1ZmZlciwgJ2EnLCBrU2l6ZSAtIDEpOwotICBidWZmZXJba1NpemUg
LSAxXSA9ICdcMCc7Ci0gIEVYUEVDVF9TVFJFUShidWZmZXIsIFN0cmluZzo6Rm9ybWF0KCIlcyIs
IGJ1ZmZlcikuY19zdHIoKSk7Ci0KLSAgLy8gVGhlIHJlc3VsdCBuZWVkcyB0byBiZSA0MDk2IGNo
YXJhY3RlcnMsIGV4Y2VlZGluZyBGb3JtYXQoKSdzIGxpbWl0LgotICBFWFBFQ1RfU1RSRVEoIjxm
b3JtYXR0aW5nIGVycm9yIG9yIGJ1ZmZlciBleGNlZWRlZD4iLAotICAgICAgICAgICAgICAgU3Ry
aW5nOjpGb3JtYXQoInglcyIsIGJ1ZmZlcikuY19zdHIoKSk7Ci0KLSNpZiBHVEVTVF9PU19MSU5V
WAotICAvLyBPbiBMaW51eCwgaW52YWxpZCBmb3JtYXQgc3BlYyBzaG91bGQgbGVhZCB0byBhbiBl
cnJvciBtZXNzYWdlLgotICAvLyBJbiBvdGhlciBlbnZpcm9ubWVudCAoZS5nLiBNU1ZDIG9uIFdp
bmRvd3MpLCBTdHJpbmc6OkZvcm1hdCgpIG1heQotICAvLyBzaW1wbHkgaWdub3JlIGEgYmFkIGZv
cm1hdCBzcGVjLCBzbyB0aGlzIGFzc2VydGlvbiBpcyBydW4gb24KLSAgLy8gTGludXggb25seS4K
LSAgRVhQRUNUX1NUUkVRKCI8Zm9ybWF0dGluZyBlcnJvciBvciBidWZmZXIgZXhjZWVkZWQ+IiwK
LSAgICAgICAgICAgICAgIFN0cmluZzo6Rm9ybWF0KCIlIikuY19zdHIoKSk7Ci0jZW5kaWYKLX0K
LQogI2lmIEdURVNUX09TX1dJTkRPV1MKIAogLy8gVGVzdHMgU3RyaW5nOjpTaG93V2lkZUNTdHJp
bmcoKS4KQEAgLTExNzAsMTcgKzEwNTgsNyBAQCBURVNUKFN0cmluZ1Rlc3QsIFNob3dXaWRlQ1N0
cmluZykgewogICBFWFBFQ1RfU1RSRVEoImZvbyIsIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKEwi
Zm9vIikuY19zdHIoKSk7CiB9CiAKLS8vIFRlc3RzIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVv
dGVkKCkuCi1URVNUKFN0cmluZ1Rlc3QsIFNob3dXaWRlQ1N0cmluZ1F1b3RlZCkgewotICBFWFBF
Q1RfU1RSRVEoIihudWxsKSIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OlNob3dXaWRlQ1N0cmlu
Z1F1b3RlZChOVUxMKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJMXCJcIiIsCi0gICAgICAg
ICAgICAgICBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChMIiIpLmNfc3RyKCkpOwotICBF
WFBFQ1RfU1RSRVEoIkxcImZvb1wiIiwKLSAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd1dpZGVD
U3RyaW5nUXVvdGVkKEwiZm9vIikuY19zdHIoKSk7Ci19Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dT
X01PQklMRQorIyBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogVEVTVChTdHJpbmdUZXN0LCBB
bnNpQW5kVXRmMTZOdWxsKSB7CiAgIEVYUEVDVF9FUShOVUxMLCBTdHJpbmc6OkFuc2lUb1V0ZjE2
KE5VTEwpKTsKICAgRVhQRUNUX0VRKE5VTEwsIFN0cmluZzo6VXRmMTZUb0Fuc2koTlVMTCkpOwpA
QCAtMTIwMyw3ICsxMDgxLDcgQEAgVEVTVChTdHJpbmdUZXN0LCBBbnNpQW5kVXRmMTZDb252ZXJ0
UGF0aENoYXJzKSB7CiAgIEVYUEVDVF9FUSgwLCB3Y3NuY21wKEwiLjpcXCBcIio/IiwgdXRmMTYs
IDMpKTsKICAgZGVsZXRlIFtdIHV0ZjE2OwogfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dT
X01PQklMRQorIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIAogI2VuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTCiAKQEAgLTEzMTcsNiArMTE5NSwxNyBAQCBURVNUX0YoRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc0ZhdGFsRmFsaXVyZSkgewogICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShBZGRGYXRhbEZhaWx1cmUoKSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7CiB9
CiAKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworVEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVy
ZVRlc3QsIEFjY2VwdHNTdHJpbmdPYmplY3QpIHsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRk
RmF0YWxGYWlsdXJlKCksIDo6c3RyaW5nKCJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpKTsKK30K
KyNlbmRpZgorCitURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgQWNjZXB0c1N0ZFN0cmlu
Z09iamVjdCkgeworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRGYXRhbEZhaWx1cmUoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6OnN0cmluZygiRXhwZWN0ZWQgZmF0YWwgZmFpbHVy
ZS4iKSk7Cit9CisKIFRFU1RfRihFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBDYXRjaGVzRmF0YWxG
YWlsdXJlT25BbGxUaHJlYWRzKSB7CiAgIC8vIFdlIGhhdmUgYW5vdGhlciB0ZXN0IGJlbG93IHRv
IHZlcmlmeSB0aGF0IHRoZSBtYWNybyBjYXRjaGVzIGZhdGFsCiAgIC8vIGZhaWx1cmVzIGdlbmVy
YXRlZCBvbiBhbm90aGVyIHRocmVhZC4KQEAgLTEzMjYsNyArMTIxNSw3IEBAIFRFU1RfRihFeHBl
Y3RGYXRhbEZhaWx1cmVUZXN0LCBDYXRjaGVzRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzKSB7CiAK
ICNpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFNpbGVuY2VzIHdhcm5pbmdzOiAiQ29uZGl0aW9uIGlz
IGFsd2F5cyB0cnVlIgotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MKKyMgcHJhZ21hIG9wdGlv
biBwdXNoIC13LWNjYwogI2VuZGlmCiAKIC8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoKSBjYW4gYmUgdXNlZCBpbiBhIG5vbi12b2lkCkBAIC0xMzU0LDcgKzEyNDMsNyBAQCB2b2lk
IERvZXNOb3RBYm9ydEhlbHBlcihib29sKiBhYm9ydGVkKSB7CiAKICNpZmRlZiBfX0JPUkxBTkRD
X18KIC8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9wdGlvbiBw
dXNoIiBzdXBwcmVzc2VkIHRoZW0uCi0jcHJhZ21hIG9wdGlvbiBwb3AKKyMgcHJhZ21hIG9wdGlv
biBwb3AKICNlbmRpZgogCiBURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgRG9lc05vdEFi
b3J0KSB7CkBAIC0xMzcxLDggKzEyNjAsOCBAQCBzdGF0aWMgaW50IGdsb2JhbF92YXIgPSAwOwog
I2RlZmluZSBHVEVTVF9VU0VfVU5QUk9URUNURURfQ09NTUFfIGdsb2JhbF92YXIrKywgZ2xvYmFs
X3ZhcisrCiAKIFRFU1RfRihFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBBY2NlcHRzTWFjcm9UaGF0
RXhwYW5kc1RvVW5wcm90ZWN0ZWRDb21tYSkgewotI2lmICFkZWZpbmVkKF9fQk9STEFORENfXykg
fHwgX19CT1JMQU5EQ19fID49IDB4NjAwCi0gIC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAwNy4K
KyNpZm5kZWYgX19CT1JMQU5EQ19fCisgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIuCiAgIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKHsKICAgICBHVEVTVF9VU0VfVU5QUk9URUNURURfQ09NTUFfOwogICAg
IEFkZEZhdGFsRmFpbHVyZSgpOwpAQCAtMTM5NCw2ICsxMjgzLDE4IEBAIFRFU1RfRihFeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LCBDYXRjaGVzTm9uZmF0YWxGYWlsdXJlKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKIH0KIAorI2lm
IEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCitURVNUX0YoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVz
dCwgQWNjZXB0c1N0cmluZ09iamVjdCkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBZGRO
b25mYXRhbEZhaWx1cmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdHJpbmcoIkV4
cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpKTsKK30KKyNlbmRpZgorCitURVNUX0YoRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQWNjZXB0c1N0ZFN0cmluZ09iamVjdCkgeworICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShBZGROb25mYXRhbEZhaWx1cmUoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgOjpzdGQ6OnN0cmluZygiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIikpOwor
fQorCiBURVNUX0YoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc05vbmZhdGFsRmFp
bHVyZU9uQWxsVGhyZWFkcykgewogICAvLyBXZSBoYXZlIGFub3RoZXIgdGVzdCBiZWxvdyB0byB2
ZXJpZnkgdGhhdCB0aGUgbWFjcm8gY2F0Y2hlcwogICAvLyBub24tZmF0YWwgZmFpbHVyZXMgZ2Vu
ZXJhdGVkIG9uIGFub3RoZXIgdGhyZWFkLgpAQCAtMTQ4Myw4ICsxMzg0LDcgQEAgY2xhc3MgVGVz
dFJlc3VsdFRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgLy8gSW4gb3JkZXIgdG8gdGVzdCBUZXN0
UmVzdWx0LCB3ZSBuZWVkIHRvIG1vZGlmeSBpdHMgaW50ZXJuYWwKICAgICAvLyBzdGF0ZSwgaW4g
cGFydGljdWxhciB0aGUgVGVzdFBhcnRSZXN1bHQgdmVjdG9yIGl0IGhvbGRzLgogICAgIC8vIHRl
c3RfcGFydF9yZXN1bHRzKCkgcmV0dXJucyBhIGNvbnN0IHJlZmVyZW5jZSB0byB0aGlzIHZlY3Rv
ci4KLSAgICAvLyBXZSBjYXN0IGl0IHRvIGEgbm9uLWNvbnN0IG9iamVjdCBzLnQuIGl0IGNhbiBi
ZSBtb2RpZmllZCAoeWVzLAotICAgIC8vIHRoaXMgaXMgYSBoYWNrKS4KKyAgICAvLyBXZSBjYXN0
IGl0IHRvIGEgbm9uLWNvbnN0IG9iamVjdCBzLnQuIGl0IGNhbiBiZSBtb2RpZmllZAogICAgIFRQ
UlZlY3RvciogcmVzdWx0czEgPSBjb25zdF9jYXN0PFRQUlZlY3Rvcio+KAogICAgICAgICAmVGVz
dFJlc3VsdEFjY2Vzc29yOjp0ZXN0X3BhcnRfcmVzdWx0cygqcjEpKTsKICAgICBUUFJWZWN0b3Iq
IHJlc3VsdHMyID0gY29uc3RfY2FzdDxUUFJWZWN0b3IqPigKQEAgLTE1MDksNyArMTQwOSw3IEBA
IGNsYXNzIFRlc3RSZXN1bHRUZXN0IDogcHVibGljIFRlc3QgewogICAgIGRlbGV0ZSByMjsKICAg
fQogCi0gIC8vIEhlbHBlciB0aGF0IGNvbXBhcmVzIHR3byB0d28gVGVzdFBhcnRSZXN1bHRzLgor
ICAvLyBIZWxwZXIgdGhhdCBjb21wYXJlcyB0d28gVGVzdFBhcnRSZXN1bHRzLgogICBzdGF0aWMg
dm9pZCBDb21wYXJlVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIGV4cGVjdGVk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFBhcnRSZXN1
bHQmIGFjdHVhbCkgewogICAgIEVYUEVDVF9FUShleHBlY3RlZC50eXBlKCksIGFjdHVhbC50eXBl
KCkpOwpAQCAtMTU2Niw3ICsxNDY2LDcgQEAgVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBO
b1Byb3BlcnRpZXNGb3VuZFdoZW5Ob25lQXJlQWRkZWQpIHsKIFRFU1QoVGVzdFJlc3VsdFByb3Bl
cnR5VGVzdCwgT25lUHJvcGVydHlGb3VuZFdoZW5BZGRlZCkgewogICBUZXN0UmVzdWx0IHRlc3Rf
cmVzdWx0OwogICBUZXN0UHJvcGVydHkgcHJvcGVydHkoImtleV8xIiwgIjEiKTsKLSAgVGVzdFJl
c3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5KTsKKyAg
VGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2Fz
ZSIsIHByb3BlcnR5KTsKICAgQVNTRVJUX0VRKDEsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlf
Y291bnQoKSk7CiAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgYWN0dWFsX3Byb3BlcnR5ID0gdGVzdF9y
ZXN1bHQuR2V0VGVzdFByb3BlcnR5KDApOwogICBFWFBFQ1RfU1RSRVEoImtleV8xIiwgYWN0dWFs
X3Byb3BlcnR5LmtleSgpKTsKQEAgLTE1NzgsOCArMTQ3OCw4IEBAIFRFU1QoVGVzdFJlc3VsdFBy
b3BlcnR5VGVzdCwgTXVsdGlwbGVQcm9wZXJ0aWVzRm91bmRXaGVuQWRkZWQpIHsKICAgVGVzdFJl
c3VsdCB0ZXN0X3Jlc3VsdDsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzEoImtleV8xIiwgIjEi
KTsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzIoImtleV8yIiwgIjIiKTsKLSAgVGVzdFJlc3Vs
dEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzEpOwotICBU
ZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlf
Mik7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAi
dGVzdGNhc2UiLCBwcm9wZXJ0eV8xKTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9w
ZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzIpOwogICBBU1NFUlRfRVEo
MiwgdGVzdF9yZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKICAgY29uc3QgVGVzdFByb3Bl
cnR5JiBhY3R1YWxfcHJvcGVydHlfMSA9IHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgwKTsK
ICAgRVhQRUNUX1NUUkVRKCJrZXlfMSIsIGFjdHVhbF9wcm9wZXJ0eV8xLmtleSgpKTsKQEAgLTE1
OTcsMTAgKzE0OTcsMTAgQEAgVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBPdmVycmlkZXNW
YWx1ZXNGb3JEdXBsaWNhdGVLZXlzKSB7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8yXzEoImtl
eV8yIiwgIjIiKTsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzFfMigia2V5XzEiLCAiMTIiKTsK
ICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzJfMigia2V5XzIiLCAiMjIiKTsKLSAgVGVzdFJlc3Vs
dEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzFfMSk7Ci0g
IFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9wZXJ0
eV8yXzEpOwotICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3Vs
dCwgcHJvcGVydHlfMV8yKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgm
dGVzdF9yZXN1bHQsIHByb3BlcnR5XzJfMik7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3Jk
UHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8xXzEpOworICBUZXN0
UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwg
cHJvcGVydHlfMl8xKTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVz
dF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzFfMik7CisgIFRlc3RSZXN1bHRBY2Nlc3Nv
cjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8yXzIp
OwogCiAgIEFTU0VSVF9FUSgyLCB0ZXN0X3Jlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwog
ICBjb25zdCBUZXN0UHJvcGVydHkmIGFjdHVhbF9wcm9wZXJ0eV8xID0gdGVzdF9yZXN1bHQuR2V0
VGVzdFByb3BlcnR5KDApOwpAQCAtMTYxMywxNCArMTUxMywxNCBAQCBURVNUKFRlc3RSZXN1bHRQ
cm9wZXJ0eVRlc3QsIE92ZXJyaWRlc1ZhbHVlc0ZvckR1cGxpY2F0ZUtleXMpIHsKIH0KIAogLy8g
VGVzdHMgVGVzdFJlc3VsdDo6R2V0VGVzdFByb3BlcnR5KCkuCi1URVNUKFRlc3RSZXN1bHRQcm9w
ZXJ0eURlYXRoVGVzdCwgR2V0VGVzdFByb3BlcnR5KSB7CitURVNUKFRlc3RSZXN1bHRQcm9wZXJ0
eVRlc3QsIEdldFRlc3RQcm9wZXJ0eSkgewogICBUZXN0UmVzdWx0IHRlc3RfcmVzdWx0OwogICBU
ZXN0UHJvcGVydHkgcHJvcGVydHlfMSgia2V5XzEiLCAiMSIpOwogICBUZXN0UHJvcGVydHkgcHJv
cGVydHlfMigia2V5XzIiLCAiMiIpOwogICBUZXN0UHJvcGVydHkgcHJvcGVydHlfMygia2V5XzMi
LCAiMyIpOwotICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3Vs
dCwgcHJvcGVydHlfMSk7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRl
c3RfcmVzdWx0LCBwcm9wZXJ0eV8yKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9w
ZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzMpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJl
Y29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMSk7CisgIFRl
c3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2Ui
LCBwcm9wZXJ0eV8yKTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVz
dF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzMpOwogCiAgIGNvbnN0IFRlc3RQcm9wZXJ0
eSYgZmV0Y2hlZF9wcm9wZXJ0eV8xID0gdGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KDApOwog
ICBjb25zdCBUZXN0UHJvcGVydHkmIGZldGNoZWRfcHJvcGVydHlfMiA9IHRlc3RfcmVzdWx0Lkdl
dFRlc3RQcm9wZXJ0eSgxKTsKQEAgLTE2MzksNDEgKzE1MzksMTUgQEAgVEVTVChUZXN0UmVzdWx0
UHJvcGVydHlEZWF0aFRlc3QsIEdldFRlc3RQcm9wZXJ0eSkgewogICBFWFBFQ1RfREVBVEhfSUZf
U1VQUE9SVEVEKHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgtMSksICIiKTsKIH0KIAotLy8g
V2hlbiBhIHByb3BlcnR5IHVzaW5nIGEgcmVzZXJ2ZWQga2V5IGlzIHN1cHBsaWVkIHRvIHRoaXMg
ZnVuY3Rpb24sIGl0IHRlc3RzCi0vLyB0aGF0IGEgbm9uLWZhdGFsIGZhaWx1cmUgaXMgYWRkZWQs
IGEgZmF0YWwgZmFpbHVyZSBpcyBub3QgYWRkZWQsIGFuZCB0aGF0IHRoZQotLy8gcHJvcGVydHkg
aXMgbm90IHJlY29yZGVkLgotdm9pZCBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9w
ZXJ0eVdpdGhSZXNlcnZlZEtleShjb25zdCBjaGFyKiBrZXkpIHsKLSAgVGVzdFJlc3VsdCB0ZXN0
X3Jlc3VsdDsKLSAgVGVzdFByb3BlcnR5IHByb3BlcnR5KGtleSwgIjEiKTsKLSAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoCi0gICAgICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5
KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHkpLAotICAgICAgIlJlc2VydmVkIGtleSIpOwotICBBU1NF
UlRfRVEoMCwgdGVzdF9yZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpKSA8PCAiTm90IHJlY29y
ZGVkIjsKLX0KLQotLy8gQXR0ZW1wdGluZyB0byByZWNvcmRpbmcgYSBwcm9wZXJ0eSB3aXRoIHRo
ZSBSZXNlcnZlZCBsaXRlcmFsICJuYW1lIgotLy8gc2hvdWxkIGFkZCBhIG5vbi1mYXRhbCBmYWls
dXJlIGFuZCB0aGUgcHJvcGVydHkgc2hvdWxkIG5vdCBiZSByZWNvcmRlZC4KLVRFU1QoVGVzdFJl
c3VsdFByb3BlcnR5VGVzdCwgQWRkRmFpbHVyZVdoZW5Vc2luZ1Jlc2VydmVkS2V5Q2FsbGVkTmFt
ZSkgewotICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZl
ZEtleSgibmFtZSIpOwotfQotCi0vLyBBdHRlbXB0aW5nIHRvIHJlY29yZGluZyBhIHByb3BlcnR5
IHdpdGggdGhlIFJlc2VydmVkIGxpdGVyYWwgInN0YXR1cyIKLS8vIHNob3VsZCBhZGQgYSBub24t
ZmF0YWwgZmFpbHVyZSBhbmQgdGhlIHByb3BlcnR5IHNob3VsZCBub3QgYmUgcmVjb3JkZWQuCi1U
RVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIEFkZEZhaWx1cmVXaGVuVXNpbmdSZXNlcnZlZEtl
eUNhbGxlZFN0YXR1cykgewotICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0
eVdpdGhSZXNlcnZlZEtleSgic3RhdHVzIik7Ci19Ci0KLS8vIEF0dGVtcHRpbmcgdG8gcmVjb3Jk
aW5nIGEgcHJvcGVydHkgd2l0aCB0aGUgUmVzZXJ2ZWQgbGl0ZXJhbCAidGltZSIKLS8vIHNob3Vs
ZCBhZGQgYSBub24tZmF0YWwgZmFpbHVyZSBhbmQgdGhlIHByb3BlcnR5IHNob3VsZCBub3QgYmUg
cmVjb3JkZWQuCi1URVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIEFkZEZhaWx1cmVXaGVuVXNp
bmdSZXNlcnZlZEtleUNhbGxlZFRpbWUpIHsKLSAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3Jk
aW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoInRpbWUiKTsKLX0KLQotLy8gQXR0ZW1wdGluZyB0
byByZWNvcmRpbmcgYSBwcm9wZXJ0eSB3aXRoIHRoZSBSZXNlcnZlZCBsaXRlcmFsICJjbGFzc25h
bWUiCi0vLyBzaG91bGQgYWRkIGEgbm9uLWZhdGFsIGZhaWx1cmUgYW5kIHRoZSBwcm9wZXJ0eSBz
aG91bGQgbm90IGJlIHJlY29yZGVkLgotVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBBZGRG
YWlsdXJlV2hlblVzaW5nUmVzZXJ2ZWRLZXlDYWxsZWRDbGFzc25hbWUpIHsKLSAgRXhwZWN0Tm9u
RmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoImNsYXNzbmFtZSIp
OwotfQorLy8gVGVzdHMgdGhlIFRlc3QgY2xhc3MuCisvLworLy8gSXQncyBkaWZmaWN1bHQgdG8g
dGVzdCBldmVyeSBwdWJsaWMgbWV0aG9kIG9mIHRoaXMgY2xhc3MgKHdlIGFyZQorLy8gYWxyZWFk
eSBzdHJldGNoaW5nIHRoZSBsaW1pdCBvZiBHb29nbGUgVGVzdCBieSB1c2luZyBpdCB0byB0ZXN0
IGl0c2VsZiEpLgorLy8gRm9ydHVuYXRlbHksIHdlIGRvbid0IGhhdmUgdG8gZG8gdGhhdCwgYXMg
d2UgYXJlIGFscmVhZHkgdGVzdGluZworLy8gdGhlIGZ1bmN0aW9uYWxpdGllcyBvZiB0aGUgVGVz
dCBjbGFzcyBleHRlbnNpdmVseSBieSB1c2luZyBHb29nbGUgVGVzdAorLy8gYWxvbmUuCisvLwor
Ly8gVGhlcmVmb3JlLCB0aGlzIHNlY3Rpb24gb25seSBjb250YWlucyBvbmUgdGVzdC4KIAogLy8g
VGVzdHMgdGhhdCBHVGVzdEZsYWdTYXZlciB3b3JrcyBvbiBXaW5kb3dzIGFuZCBNYWMuCiAKQEAg
LTE2OTgsNiArMTU3Miw3IEBAIGNsYXNzIEdUZXN0RmxhZ1NhdmVyVGVzdCA6IHB1YmxpYyBUZXN0
IHsKICAgICBHVEVTVF9GTEFHKHJlcGVhdCkgPSAxOwogICAgIEdURVNUX0ZMQUcoc2h1ZmZsZSkg
PSBmYWxzZTsKICAgICBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSA9IGtNYXhTdGFja1Ry
YWNlRGVwdGg7CisgICAgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSA9ICIiOwogICAgIEdU
RVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSBmYWxzZTsKICAgfQogCkBAIC0xNzI0LDYgKzE1
OTksNyBAQCBjbGFzcyBHVGVzdEZsYWdTYXZlclRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgRVhQ
RUNUX0VRKDEsIEdURVNUX0ZMQUcocmVwZWF0KSk7CiAgICAgRVhQRUNUX0ZBTFNFKEdURVNUX0ZM
QUcoc2h1ZmZsZSkpOwogICAgIEVYUEVDVF9FUShrTWF4U3RhY2tUcmFjZURlcHRoLCBHVEVTVF9G
TEFHKHN0YWNrX3RyYWNlX2RlcHRoKSk7CisgICAgRVhQRUNUX1NUUkVRKCIiLCBHVEVTVF9GTEFH
KHN0cmVhbV9yZXN1bHRfdG8pLmNfc3RyKCkpOwogICAgIEVYUEVDVF9GQUxTRShHVEVTVF9GTEFH
KHRocm93X29uX2ZhaWx1cmUpKTsKIAogICAgIEdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRf
dGVzdHMpID0gdHJ1ZTsKQEAgLTE3MzksOCArMTYxNSwxMCBAQCBjbGFzcyBHVGVzdEZsYWdTYXZl
clRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgR1RFU1RfRkxBRyhyZXBlYXQpID0gMTAwOwogICAg
IEdURVNUX0ZMQUcoc2h1ZmZsZSkgPSB0cnVlOwogICAgIEdURVNUX0ZMQUcoc3RhY2tfdHJhY2Vf
ZGVwdGgpID0gMTsKKyAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pID0gImxvY2FsaG9z
dDoxMjM0IjsKICAgICBHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1ZTsKICAgfQor
CiAgcHJpdmF0ZToKICAgLy8gRm9yIHNhdmluZyBHb29nbGUgVGVzdCBmbGFncyBkdXJpbmcgdGhp
cyB0ZXN0IGNhc2UuCiAgIHN0YXRpYyBHVGVzdEZsYWdTYXZlciogc2F2ZXJfOwpAQCAtMTc3Mywx
NSArMTY1MSwxNiBAQCBzdGF0aWMgdm9pZCBTZXRFbnYoY29uc3QgY2hhciogbmFtZSwgY29uc3Qg
Y2hhciogdmFsdWUpIHsKICAgLy8gQysrQnVpbGRlcidzIHB1dGVudiBvbmx5IHN0b3JlcyBhIHBv
aW50ZXIgdG8gaXRzIHBhcmFtZXRlcjsgd2UgaGF2ZSB0bwogICAvLyBlbnN1cmUgdGhhdCB0aGUg
c3RyaW5nIHJlbWFpbnMgdmFsaWQgYXMgbG9uZyBhcyBpdCBtaWdodCBiZSBuZWVkZWQuCiAgIC8v
IFdlIHVzZSBhbiBzdGQ6Om1hcCB0byBkbyBzby4KLSAgc3RhdGljIHN0ZDo6bWFwPFN0cmluZywg
U3RyaW5nKj4gYWRkZWRfZW52OworICBzdGF0aWMgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6
c3RyaW5nKj4gYWRkZWRfZW52OwogCiAgIC8vIEJlY2F1c2UgcHV0ZW52IHN0b3JlcyBhIHBvaW50
ZXIgdG8gdGhlIHN0cmluZyBidWZmZXIsIHdlIGNhbid0IGRlbGV0ZSB0aGUKICAgLy8gcHJldmlv
dXMgc3RyaW5nIChpZiBwcmVzZW50KSB1bnRpbCBhZnRlciBpdCdzIHJlcGxhY2VkLgotICBTdHJp
bmcgKnByZXZfZW52ID0gTlVMTDsKKyAgc3RkOjpzdHJpbmcgKnByZXZfZW52ID0gTlVMTDsKICAg
aWYgKGFkZGVkX2Vudi5maW5kKG5hbWUpICE9IGFkZGVkX2Vudi5lbmQoKSkgewogICAgIHByZXZf
ZW52ID0gYWRkZWRfZW52W25hbWVdOwogICB9Ci0gIGFkZGVkX2VudltuYW1lXSA9IG5ldyBTdHJp
bmcoKE1lc3NhZ2UoKSA8PCBuYW1lIDw8ICI9IiA8PCB2YWx1ZSkuR2V0U3RyaW5nKCkpOworICBh
ZGRlZF9lbnZbbmFtZV0gPSBuZXcgc3RkOjpzdHJpbmcoCisgICAgICAoTWVzc2FnZSgpIDw8IG5h
bWUgPDwgIj0iIDw8IHZhbHVlKS5HZXRTdHJpbmcoKSk7CiAKICAgLy8gVGhlIHN0YW5kYXJkIHNp
Z25hdHVyZSBvZiBwdXRlbnYgYWNjZXB0cyBhICdjaGFyKicgYXJndW1lbnQuIE90aGVyCiAgIC8v
IGltcGxlbWVudGF0aW9ucywgbGlrZSBDKytCdWlsZGVyJ3MsIGFjY2VwdCBhICdjb25zdCBjaGFy
KicuCkBAIC0xODEzLDYgKzE2OTIsOCBAQCBURVNUKEludDMyRnJvbUdUZXN0RW52VGVzdCwgUmV0
dXJuc0RlZmF1bHRXaGVuVmFyaWFibGVJc05vdFNldCkgewogICBFWFBFQ1RfRVEoMTAsIEludDMy
RnJvbUdUZXN0RW52KCJ0ZW1wIiwgMTApKTsKIH0KIAorIyBpZiAhZGVmaW5lZChHVEVTVF9HRVRf
SU5UMzJfRlJPTV9FTlZfKQorCiAvLyBUZXN0cyB0aGF0IEludDMyRnJvbUdUZXN0RW52KCkgcmV0
dXJucyB0aGUgZGVmYXVsdCB2YWx1ZSB3aGVuIHRoZQogLy8gZW52aXJvbm1lbnQgdmFyaWFibGUg
b3ZlcmZsb3dzIGFzIGFuIEludDMyLgogVEVTVChJbnQzMkZyb21HVGVzdEVudlRlc3QsIFJldHVy
bnNEZWZhdWx0V2hlblZhbHVlT3ZlcmZsb3dzKSB7CkBAIC0xODM3LDYgKzE3MTgsOCBAQCBURVNU
KEludDMyRnJvbUdUZXN0RW52VGVzdCwgUmV0dXJuc0RlZmF1bHRXaGVuVmFsdWVJc0ludmFsaWQp
IHsKICAgRVhQRUNUX0VRKDUwLCBJbnQzMkZyb21HVGVzdEVudigidGVtcCIsIDUwKSk7CiB9CiAK
KyMgZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0dFVF9JTlQzMl9GUk9NX0VOVl8pCisKIC8vIFRl
c3RzIHRoYXQgSW50MzJGcm9tR1Rlc3RFbnYoKSBwYXJzZXMgYW5kIHJldHVybnMgdGhlIHZhbHVl
IG9mIHRoZQogLy8gZW52aXJvbm1lbnQgdmFyaWFibGUgd2hlbiBpdCByZXByZXNlbnRzIGEgdmFs
aWQgZGVjaW1hbCBpbnRlZ2VyIGluCiAvLyB0aGUgcmFuZ2Ugb2YgYW4gSW50MzIuCkBAIC0xOTI1
LDcgKzE4MDgsNyBAQCBURVNUKEludDMyRnJvbUVudk9yRGllRGVhdGhUZXN0LCBBYm9ydHNPbkZh
aWx1cmUpIHsKIH0KIAogLy8gVGVzdHMgdGhhdCBJbnQzMkZyb21FbnZPckRpZSgpIGFib3J0cyB3
aXRoIGFuIGVycm9yIG1lc3NhZ2UKLS8vIGlmIHRoZSB2YXJpYWJsZSBjYW5ub3QgYmUgcmVwcmVz
bnRlZCBieSBhbiBJbnQzMi4KKy8vIGlmIHRoZSB2YXJpYWJsZSBjYW5ub3QgYmUgcmVwcmVzZW50
ZWQgYnkgYW4gSW50MzIuCiBURVNUKEludDMyRnJvbUVudk9yRGllRGVhdGhUZXN0LCBBYm9ydHNP
bkludDMyT3ZlcmZsb3cpIHsKICAgU2V0RW52KEdURVNUX0ZMQUdfUFJFRklYX1VQUEVSXyAiVkFS
IiwgIjEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQiKTsKICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRF
RCgKQEAgLTIwNzAsNiArMTk1MywxNzMgQEAgVEVTVChVbml0VGVzdFRlc3QsIENhbkdldE9yaWdp
bmFsV29ya2luZ0RpcikgewogICBFWFBFQ1RfU1RSTkUoVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkt
Pm9yaWdpbmFsX3dvcmtpbmdfZGlyKCksICIiKTsKIH0KIAorVEVTVChVbml0VGVzdFRlc3QsIFJl
dHVybnNQbGF1c2libGVUaW1lc3RhbXApIHsKKyAgRVhQRUNUX0xUKDAsIFVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5zdGFydF90aW1lc3RhbXAoKSk7CisgIEVYUEVDVF9MRShVbml0VGVzdDo6R2V0
SW5zdGFuY2UoKS0+c3RhcnRfdGltZXN0YW1wKCksIEdldFRpbWVJbk1pbGxpcygpKTsKK30KKwor
Ly8gV2hlbiBhIHByb3BlcnR5IHVzaW5nIGEgcmVzZXJ2ZWQga2V5IGlzIHN1cHBsaWVkIHRvIHRo
aXMgZnVuY3Rpb24sIGl0CisvLyB0ZXN0cyB0aGF0IGEgbm9uLWZhdGFsIGZhaWx1cmUgaXMgYWRk
ZWQsIGEgZmF0YWwgZmFpbHVyZSBpcyBub3QgYWRkZWQsCisvLyBhbmQgdGhhdCB0aGUgcHJvcGVy
dHkgaXMgbm90IHJlY29yZGVkLgordm9pZCBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQ
cm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgKKyAgICBjb25zdCBUZXN0UmVzdWx0JiB0ZXN0X3Jlc3Vs
dCwgY29uc3QgY2hhcioga2V5KSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKFRlc3Q6OlJl
Y29yZFByb3BlcnR5KGtleSwgIjEiKSwgIlJlc2VydmVkIGtleSIpOworICBBU1NFUlRfRVEoMCwg
dGVzdF9yZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpKSA8PCAiUHJvcGVydHkgZm9yIGtleSAn
IiA8PCBrZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIicgcmVjb3JkZWQgdW5leHBlY3RlZGx5LiI7Cit9CisKK3ZvaWQgRXhwZWN0Tm9uRmF0
YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdCgK
KyAgICBjb25zdCBjaGFyKiBrZXkpIHsKKyAgY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbyA9IFVu
aXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOworICBBU1NFUlRfVFJV
RSh0ZXN0X2luZm8gIT0gTlVMTCk7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1By
b3BlcnR5V2l0aFJlc2VydmVkS2V5KCp0ZXN0X2luZm8tPnJlc3VsdCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkpOworfQorCit2
b2lkIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5
Rm9yQ3VycmVudFRlc3RDYXNlKAorICAgIGNvbnN0IGNoYXIqIGtleSkgeworICBjb25zdCBUZXN0
Q2FzZSogdGVzdF9jYXNlID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9j
YXNlKCk7CisgIEFTU0VSVF9UUlVFKHRlc3RfY2FzZSAhPSBOVUxMKTsKKyAgRXhwZWN0Tm9uRmF0
YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoCisgICAgICB0ZXN0X2Nh
c2UtPmFkX2hvY190ZXN0X3Jlc3VsdCgpLCBrZXkpOworfQorCit2b2lkIEV4cGVjdE5vbkZhdGFs
RmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2Uo
CisgICAgY29uc3QgY2hhcioga2V5KSB7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGlu
Z1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5KAorICAgICAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkt
PmFkX2hvY190ZXN0X3Jlc3VsdCgpLCBrZXkpOworfQorCisvLyBUZXN0cyB0aGF0IHByb3BlcnR5
IHJlY29yZGluZyBmdW5jdGlvbnMgaW4gVW5pdFRlc3Qgb3V0c2lkZSBvZiB0ZXN0cworLy8gZnVu
Y3Rpb25zIGNvcnJlY2x5LiAgQ3JlYXRpbmcgYSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBVbml0VGVz
dCBlbnN1cmVzIGl0CisvLyBpcyBpbiBhIHN0YXRlIHNpbWlsYXIgdG8gdGhlIFVuaXRUZXN0J3Mg
c2luZ2xldG9uJ3MgYmV0d2VlbiB0ZXN0cy4KK2NsYXNzIFVuaXRUZXN0UmVjb3JkUHJvcGVydHlU
ZXN0IDoKKyAgICBwdWJsaWMgdGVzdGluZzo6aW50ZXJuYWw6OlVuaXRUZXN0UmVjb3JkUHJvcGVy
dHlUZXN0SGVscGVyIHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7
CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRL
ZXlGb3JDdXJyZW50VGVzdENhc2UoCisgICAgICAgICJkaXNhYmxlZCIpOworICAgIEV4cGVjdE5v
bkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRl
c3RDYXNlKAorICAgICAgICAiZXJyb3JzIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVj
b3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdENhc2UoCisgICAgICAg
ICJmYWlsdXJlcyIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5
V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAorICAgICAgICAibmFtZSIpOworICAg
IEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9y
Q3VycmVudFRlc3RDYXNlKAorICAgICAgICAidGVzdHMiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZh
aWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgK
KyAgICAgICAgInRpbWUiKTsKKworICAgIFRlc3Q6OlJlY29yZFByb3BlcnR5KCJ0ZXN0X2Nhc2Vf
a2V5XzEiLCAiMSIpOworICAgIGNvbnN0IFRlc3RDYXNlKiB0ZXN0X2Nhc2UgPSBVbml0VGVzdDo6
R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2Nhc2UoKTsKKyAgICBBU1NFUlRfVFJVRSh0ZXN0
X2Nhc2UgIT0gTlVMTCk7CisKKyAgICBBU1NFUlRfRVEoMSwgdGVzdF9jYXNlLT5hZF9ob2NfdGVz
dF9yZXN1bHQoKS50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOworICAgIEVYUEVDVF9TVFJFUSgidGVz
dF9jYXNlX2tleV8xIiwKKyAgICAgICAgICAgICAgICAgdGVzdF9jYXNlLT5hZF9ob2NfdGVzdF9y
ZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMCkua2V5KCkpOworICAgIEVYUEVDVF9TVFJFUSgiMSIs
CisgICAgICAgICAgICAgICAgIHRlc3RfY2FzZS0+YWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVz
dFByb3BlcnR5KDApLnZhbHVlKCkpOworICB9Cit9OworCisvLyBUZXN0cyBUZXN0UmVzdWx0IGhh
cyB0aGUgZXhwZWN0ZWQgcHJvcGVydHkgd2hlbiBhZGRlZC4KK1RFU1RfRihVbml0VGVzdFJlY29y
ZFByb3BlcnR5VGVzdCwgT25lUHJvcGVydHlGb3VuZFdoZW5BZGRlZCkgeworICBVbml0VGVzdFJl
Y29yZFByb3BlcnR5KCJrZXlfMSIsICIxIik7CisKKyAgQVNTRVJUX0VRKDEsIHVuaXRfdGVzdF8u
YWRfaG9jX3Rlc3RfcmVzdWx0KCkudGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKKworICBFWFBFQ1Rf
U1RSRVEoImtleV8xIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVz
dWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLmtleSgpKTsKKyAgRVhQRUNUX1NUUkVRKCIxIiwKKyAg
ICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3Bl
cnR5KDApLnZhbHVlKCkpOworfQorCisvLyBUZXN0cyBUZXN0UmVzdWx0IGhhcyBtdWx0aXBsZSBw
cm9wZXJ0aWVzIHdoZW4gYWRkZWQuCitURVNUX0YoVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3Qs
IE11bHRpcGxlUHJvcGVydGllc0ZvdW5kV2hlbkFkZGVkKSB7CisgIFVuaXRUZXN0UmVjb3JkUHJv
cGVydHkoImtleV8xIiwgIjEiKTsKKyAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzIiLCAi
MiIpOworCisgIEFTU0VSVF9FUSgyLCB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLnRl
c3RfcHJvcGVydHlfY291bnQoKSk7CisKKyAgRVhQRUNUX1NUUkVRKCJrZXlfMSIsCisgICAgICAg
ICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgw
KS5rZXkoKSk7CisgIEVYUEVDVF9TVFJFUSgiMSIsIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVz
dWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLnZhbHVlKCkpOworCisgIEVYUEVDVF9TVFJFUSgia2V5
XzIiLAorICAgICAgICAgICAgICAgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRU
ZXN0UHJvcGVydHkoMSkua2V5KCkpOworICBFWFBFQ1RfU1RSRVEoIjIiLCB1bml0X3Rlc3RfLmFk
X2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgxKS52YWx1ZSgpKTsKK30KKworLy8g
VGVzdHMgVGVzdFJlc3VsdDo6UmVjb3JkUHJvcGVydHkoKSBvdmVycmlkZXMgdmFsdWVzIGZvciBk
dXBsaWNhdGUga2V5cy4KK1RFU1RfRihVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdCwgT3ZlcnJp
ZGVzVmFsdWVzRm9yRHVwbGljYXRlS2V5cykgeworICBVbml0VGVzdFJlY29yZFByb3BlcnR5KCJr
ZXlfMSIsICIxIik7CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8yIiwgIjIiKTsKKyAg
VW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzEiLCAiMTIiKTsKKyAgVW5pdFRlc3RSZWNvcmRQ
cm9wZXJ0eSgia2V5XzIiLCAiMjIiKTsKKworICBBU1NFUlRfRVEoMiwgdW5pdF90ZXN0Xy5hZF9o
b2NfdGVzdF9yZXN1bHQoKS50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOworCisgIEVYUEVDVF9TVFJF
USgia2V5XzEiLAorICAgICAgICAgICAgICAgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQo
KS5HZXRUZXN0UHJvcGVydHkoMCkua2V5KCkpOworICBFWFBFQ1RfU1RSRVEoIjEyIiwKKyAgICAg
ICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5
KDApLnZhbHVlKCkpOworCisgIEVYUEVDVF9TVFJFUSgia2V5XzIiLAorICAgICAgICAgICAgICAg
dW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMSkua2V5KCkp
OworICBFWFBFQ1RfU1RSRVEoIjIyIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9j
X3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDEpLnZhbHVlKCkpOworfQorCitURVNUX0Yo
VW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3QsCisgICAgICAgQWRkRmFpbHVyZUluc2lkZVRlc3Rz
V2hlblVzaW5nVGVzdENhc2VSZXNlcnZlZEtleXMpIHsKKyAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJl
UmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdCgKKyAgICAgICJu
YW1lIik7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2Vy
dmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgICAidmFsdWVfcGFyYW0iKTsKKyAgRXhwZWN0Tm9u
RmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVz
dCgKKyAgICAgICJ0eXBlX3BhcmFtIik7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGlu
Z1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgICAic3RhdHVzIik7
CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5
Rm9yQ3VycmVudFRlc3QoCisgICAgICAidGltZSIpOworICBFeHBlY3ROb25GYXRhbEZhaWx1cmVS
ZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0KAorICAgICAgImNs
YXNzbmFtZSIpOworfQorCitURVNUX0YoVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3QsCisgICAg
ICAgQWRkUmVjb3JkV2l0aFJlc2VydmVkS2V5c0dlbmVyYXRlc0NvcnJlY3RQcm9wZXJ0eUxpc3Qp
IHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBUZXN0OjpSZWNvcmRQcm9wZXJ0
eSgibmFtZSIsICIxIiksCisgICAgICAiJ2NsYXNzbmFtZScsICduYW1lJywgJ3N0YXR1cycsICd0
aW1lJywgJ3R5cGVfcGFyYW0nLCAndmFsdWVfcGFyYW0nLCIKKyAgICAgICIgJ2ZpbGUnLCBhbmQg
J2xpbmUnIGFyZSByZXNlcnZlZCIpOworfQorCitjbGFzcyBVbml0VGVzdFJlY29yZFByb3BlcnR5
VGVzdEVudmlyb25tZW50IDogcHVibGljIEVudmlyb25tZW50IHsKKyBwdWJsaWM6CisgIHZpcnR1
YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQ
cm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgICAgICAidGVzdHMi
KTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZl
ZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgICAgICAiZmFpbHVyZXMiKTsKKyAgICBFeHBlY3RO
b25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRl
c3RDYXNlKAorICAgICAgICAiZGlzYWJsZWQiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVS
ZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgICAg
ICAiZXJyb3JzIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlX
aXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgIm5hbWUiKTsKKyAgICBF
eHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNp
ZGVPZlRlc3RDYXNlKAorICAgICAgICAidGltZXN0YW1wIik7CisgICAgRXhwZWN0Tm9uRmF0YWxG
YWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgK
KyAgICAgICAgInRpbWUiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9w
ZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgICAgICAicmFuZG9tX3Nl
ZWQiKTsKKyAgfQorfTsKKworLy8gVGhpcyB3aWxsIHRlc3QgcHJvcGVydHkgcmVjb3JkaW5nIG91
dHNpZGUgb2YgYW55IHRlc3Qgb3IgdGVzdCBjYXNlLgorc3RhdGljIEVudmlyb25tZW50KiByZWNv
cmRfcHJvcGVydHlfZW52ID0KKyAgICBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IFVuaXRU
ZXN0UmVjb3JkUHJvcGVydHlUZXN0RW52aXJvbm1lbnQpOworCiAvLyBUaGlzIGdyb3VwIG9mIHRl
c3RzIGlzIGZvciBwcmVkaWNhdGUgYXNzZXJ0aW9ucyAoQVNTRVJUX1BSRUQqLCBldGMpCiAvLyBv
ZiB2YXJpb3VzIGFyaXRpZXMuICBUaGV5IGRvIG5vdCBhdHRlbXB0IHRvIGJlIGV4aGF1c3RpdmUu
ICBSYXRoZXIsCiAvLyB2aWV3IHRoZW0gYXMgc21va2UgdGVzdHMgdGhhdCBjYW4gYmUgZWFzaWx5
IHJldmlld2VkIGFuZCB2ZXJpZmllZC4KQEAgLTI0MDEsNyArMjQ1MSw3IEBAIFRFU1QoU3RyaW5n
QXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1NUUkVRKSB7CiAgIEFTU0VSVF9TVFJFUShwMSwgcDIpOwog
CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9TVFJFUSgiYmFkIiwgImdvb2QiKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiBcImJhZFwiIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICIgIFwiYmFkXCJcbiAgXCJnb29kXCIiKTsKIH0KIAogLy8gVGVzdHMgQVNTRVJU
X1NUUkVRIHdpdGggTlVMTCBhcmd1bWVudHMuCkBAIC0yNDM3LDcgKzI0ODcsNyBAQCBURVNUKFN0
cmluZ0Fzc2VydGlvblRlc3QsIEFTU0VSVF9TVFJDQVNFRVEpIHsKIAogICBBU1NFUlRfU1RSQ0FT
RUVRKCIiLCAiIik7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9TVFJDQVNFRVEoIkhp
IiwgImhpMiIpLAotICAgICAgICAgICAgICAgICAgICAgICAiKGlnbm9yaW5nIGNhc2UpIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICJJZ25vcmluZyBjYXNlIik7CiB9CiAKIC8vIFRlc3RzIEFT
U0VSVF9TVFJDQVNFTkUuCkBAIC0yNDc1LDYgKzI1MjUsMTEgQEAgVEVTVChTdHJpbmdBc3NlcnRp
b25UZXN0LCBTVFJFUV9XaWRlKSB7CiAgIC8vIFN0cmluZ3MgY29udGFpbmluZyB3aWRlIGNoYXJh
Y3RlcnMuCiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9TVFJFUShMImFiY1x4ODEx
OSIsIEwiYWJjXHg4MTIwIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJhYmMiKTsKKwor
ICAvLyBUaGUgc3RyZWFtaW5nIHZhcmlhdGlvbi4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX1NUUkVRKEwiYWJjXHg4MTE5IiwgTCJhYmNceDgxMjEi
KSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7CisgIH0sICJFeHBlY3RlZCBmYWlsdXJlIik7CiB9CiAK
IC8vIFRlc3RzICpfU1RSTkUgb24gd2lkZSBzdHJpbmdzLgpAQCAtMjUwMSw2ICsyNTU2LDkgQEAg
VEVTVChTdHJpbmdBc3NlcnRpb25UZXN0LCBTVFJORV9XaWRlKSB7CiAgIC8vIFN0cmluZ3MgY29u
dGFpbmluZyB3aWRlIGNoYXJhY3RlcnMuCiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVD
VF9TVFJORShMImFiY1x4ODExOSIsIEwiYWJjXHg4MTE5IiksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJhYmMiKTsKKworICAvLyBUaGUgc3RyZWFtaW5nIHZhcmlhdGlvbi4KKyAgQVNTRVJU
X1NUUk5FKEwiYWJjXHg4MTE5IiwgTCJhYmNceDgxMjAiKSA8PCAiVGhpcyBzaG91bGRuJ3QgaGFw
cGVuIjsKIH0KIAogLy8gVGVzdHMgZm9yIDo6dGVzdGluZzo6SXNTdWJzdHJpbmcoKS4KQEAgLTI2
MzEsNyArMjY4OSw2IEBAIFRFU1QoSXNOb3RTdWJzdHJpbmdUZXN0LCBSZXR1cm5zQ29ycmVjdFJl
c3VsdEZvclN0ZFdzdHJpbmcpIHsKIHRlbXBsYXRlIDx0eXBlbmFtZSBSYXdUeXBlPgogY2xhc3Mg
RmxvYXRpbmdQb2ludFRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgcHJvdGVjdGVkOgotCiAgIC8vIFBy
ZS1jYWxjdWxhdGVkIG51bWJlcnMgdG8gYmUgdXNlZCBieSB0aGUgdGVzdHMuCiAgIHN0cnVjdCBU
ZXN0VmFsdWVzIHsKICAgICBSYXdUeXBlIGNsb3NlX3RvX3Bvc2l0aXZlX3plcm87CkBAIC0zMDc5
LDEzICszMTM2LDEzIEBAIFRFU1QoRElTQUJMRURfVGVzdENhc2UsIERJU0FCTEVEX1Rlc3RTaG91
bGROb3RSdW4pIHsKICAgRkFJTCgpIDw8ICJVbmV4cGVjdGVkIGZhaWx1cmU6IFRlc3QgaW4gZGlz
YWJsZWQgdGVzdCBjYXNlIHNob3VsZCBub3QgYmUgcnVuLiI7CiB9CiAKLS8vIENoZWNrIHRoYXQg
d2hlbiBhbGwgdGVzdHMgaW4gYSB0ZXN0IGNhc2UgYXJlIGRpc2FibGVkLCBTZXR1cFRlc3RDYXNl
KCkgYW5kCisvLyBDaGVjayB0aGF0IHdoZW4gYWxsIHRlc3RzIGluIGEgdGVzdCBjYXNlIGFyZSBk
aXNhYmxlZCwgU2V0VXBUZXN0Q2FzZSgpIGFuZAogLy8gVGVhckRvd25UZXN0Q2FzZSgpIGFyZSBu
b3QgY2FsbGVkLgogY2xhc3MgRGlzYWJsZWRUZXN0c1Rlc3QgOiBwdWJsaWMgVGVzdCB7CiAgcHJv
dGVjdGVkOgogICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgewogICAgIEZBSUwoKSA8PCAi
VW5leHBlY3RlZCBmYWlsdXJlOiBBbGwgdGVzdHMgZGlzYWJsZWQgaW4gdGVzdCBjYXNlLiAiCi0g
ICAgICAgICAgICAgICJTZXR1cFRlc3RDYXNlKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQuIjsKKyAg
ICAgICAgICAgICAgIlNldFVwVGVzdENhc2UoKSBzaG91bGQgbm90IGJlIGNhbGxlZC4iOwogICB9
CiAKICAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKQEAgLTMyMjQsNyArMzI4MSw3
IEBAIFRFU1RfRihTaW5nbGVFdmFsdWF0aW9uVGVzdCwgQVNTRVJUX1NUUikgewogCiAgIC8vIGZh
aWxlZCBFWFBFQ1RfU1RSQ0FTRUVRCiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9T
VFJDQVNFRVEocDFfKyssIHAyXysrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImlnbm9y
aW5nIGNhc2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIklnbm9yaW5nIGNhc2UiKTsK
ICAgRVhQRUNUX0VRKHMxXyArIDIsIHAxXyk7CiAgIEVYUEVDVF9FUShzMl8gKyAyLCBwMl8pOwog
fQpAQCAtMzMzMiw3ICszMzg5LDcgQEAgY2xhc3MgTm9GYXRhbEZhaWx1cmVUZXN0IDogcHVibGlj
IFRlc3QgewogCiAgIHZvaWQgRG9Bc3NlcnROb0ZhdGFsRmFpbHVyZU9uRmFpbHMoKSB7CiAgICAg
QVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoRmFpbHMoKSk7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAi
c2hvbGQgbm90IHJlYWNoIGhlcmUuIjsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJzaG91bGQgbm90
IHJlYWNoIGhlcmUuIjsKICAgfQogCiAgIHZvaWQgRG9FeHBlY3ROb0ZhdGFsRmFpbHVyZU9uRmFp
bHMoKSB7CkBAIC0zNDEyLDU5ICszNDY5LDE1NyBAQCBURVNUX0YoTm9GYXRhbEZhaWx1cmVUZXN0
LCBNZXNzYWdlSXNTdHJlYW1hYmxlKSB7CiAKIC8vIFRlc3RzIG5vbi1zdHJpbmcgYXNzZXJ0aW9u
cy4KIAorc3RkOjpzdHJpbmcgRWRpdHNUb1N0cmluZyhjb25zdCBzdGQ6OnZlY3RvcjxFZGl0VHlw
ZT4mIGVkaXRzKSB7CisgIHN0ZDo6c3RyaW5nIG91dDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBlZGl0cy5zaXplKCk7ICsraSkgeworICAgIHN0YXRpYyBjb25zdCBjaGFyIGtFZGl0c1tdID0g
IiArLS8iOworICAgIG91dC5hcHBlbmQoMSwga0VkaXRzW2VkaXRzW2ldXSk7CisgIH0KKyAgcmV0
dXJuIG91dDsKK30KKworc3RkOjp2ZWN0b3I8c2l6ZV90PiBDaGFyc1RvSW5kaWNlcyhjb25zdCBz
dGQ6OnN0cmluZyYgc3RyKSB7CisgIHN0ZDo6dmVjdG9yPHNpemVfdD4gb3V0OworICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHN0ci5zaXplKCk7ICsraSkgeworICAgIG91dC5wdXNoX2JhY2soc3Ry
W2ldKTsKKyAgfQorICByZXR1cm4gb3V0OworfQorCitzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4g
Q2hhcnNUb0xpbmVzKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKKyAgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+IG91dDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHIuc2l6ZSgpOyArK2kp
IHsKKyAgICBvdXQucHVzaF9iYWNrKHN0ci5zdWJzdHIoaSwgMSkpOworICB9CisgIHJldHVybiBv
dXQ7Cit9CisKK1RFU1QoRWRpdERpc3RhbmNlLCBUZXN0Q2FzZXMpIHsKKyAgc3RydWN0IENhc2Ug
eworICAgIGludCBsaW5lOworICAgIGNvbnN0IGNoYXIqIGxlZnQ7CisgICAgY29uc3QgY2hhciog
cmlnaHQ7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWRfZWRpdHM7CisgICAgY29uc3QgY2hhciog
ZXhwZWN0ZWRfZGlmZjsKKyAgfTsKKyAgc3RhdGljIGNvbnN0IENhc2Uga0Nhc2VzW10gPSB7Cisg
ICAgICAvLyBObyBjaGFuZ2UuCisgICAgICB7X19MSU5FX18sICJBIiwgIkEiLCAiICIsICIifSwK
KyAgICAgIHtfX0xJTkVfXywgIkFCQ0RFIiwgIkFCQ0RFIiwgIiAgICAgIiwgIiJ9LAorICAgICAg
Ly8gU2ltcGxlIGFkZHMuCisgICAgICB7X19MSU5FX18sICJYIiwgIlhBIiwgIiArIiwgIkBAICsx
LDIgQEBcbiBYXG4rQVxuIn0sCisgICAgICB7X19MSU5FX18sICJYIiwgIlhBQkNEIiwgIiArKysr
IiwgIkBAICsxLDUgQEBcbiBYXG4rQVxuK0JcbitDXG4rRFxuIn0sCisgICAgICAvLyBTaW1wbGUg
cmVtb3Zlcy4KKyAgICAgIHtfX0xJTkVfXywgIlhBIiwgIlgiLCAiIC0iLCAiQEAgLTEsMiBAQFxu
IFhcbi1BXG4ifSwKKyAgICAgIHtfX0xJTkVfXywgIlhBQkNEIiwgIlgiLCAiIC0tLS0iLCAiQEAg
LTEsNSBAQFxuIFhcbi1BXG4tQlxuLUNcbi1EXG4ifSwKKyAgICAgIC8vIFNpbXBsZSByZXBsYWNl
cy4KKyAgICAgIHtfX0xJTkVfXywgIkEiLCAiYSIsICIvIiwgIkBAIC0xLDEgKzEsMSBAQFxuLUFc
bithXG4ifSwKKyAgICAgIHtfX0xJTkVfXywgIkFCQ0QiLCAiYWJjZCIsICIvLy8vIiwKKyAgICAg
ICAiQEAgLTEsNCArMSw0IEBAXG4tQVxuLUJcbi1DXG4tRFxuK2FcbitiXG4rY1xuK2RcbiJ9LAor
ICAgICAgLy8gUGF0aCBmaW5kaW5nLgorICAgICAge19fTElORV9fLCAiQUJDREVGR0giLCAiQUJY
RUdIMSIsICIgIC0vIC0gICsiLAorICAgICAgICJAQCAtMSw4ICsxLDcgQEBcbiBBXG4gQlxuLUNc
bi1EXG4rWFxuIEVcbi1GXG4gR1xuIEhcbisxXG4ifSwKKyAgICAgIHtfX0xJTkVfXywgIkFBQUFC
Q0NDQyIsICJBQkFCQ0RDREMiLCAiLSAvICAgKyAvICIsCisgICAgICAgIkBAIC0xLDkgKzEsOSBA
QFxuLUFcbiBBXG4tQVxuK0JcbiBBXG4gQlxuIENcbitEXG4gQ1xuLUNcbitEXG4gQ1xuIn0sCisg
ICAgICB7X19MSU5FX18sICJBQkNERSIsICJCQ0RDRCIsICItICAgKy8iLAorICAgICAgICJAQCAt
MSw1ICsxLDUgQEBcbi1BXG4gQlxuIENcbiBEXG4tRVxuK0NcbitEXG4ifSwKKyAgICAgIHtfX0xJ
TkVfXywgIkFCQ0RFRkdISUpLTCIsICJCQ0RDREVGR0pLTEpLIiwgIi0gKysgICAgIC0tICAgKysi
LAorICAgICAgICJAQCAtMSw0ICsxLDUgQEBcbi1BXG4gQlxuK0NcbitEXG4gQ1xuIERcbiIKKyAg
ICAgICAiQEAgLTYsNyArNyw3IEBAXG4gRlxuIEdcbi1IXG4tSVxuIEpcbiBLXG4gTFxuK0pcbitL
XG4ifSwKKyAgICAgIHt9fTsKKyAgZm9yIChjb25zdCBDYXNlKiBjID0ga0Nhc2VzOyBjLT5sZWZ0
OyArK2MpIHsKKyAgICBFWFBFQ1RfVFJVRShjLT5leHBlY3RlZF9lZGl0cyA9PQorICAgICAgICAg
ICAgICAgIEVkaXRzVG9TdHJpbmcoQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKENoYXJzVG9JbmRpY2Vz
KGMtPmxlZnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENoYXJzVG9JbmRpY2VzKGMtPnJpZ2h0KSkpKQorICAgICAgICA8PCAiTGVmdCA8IiA8
PCBjLT5sZWZ0IDw8ICI+IFJpZ2h0IDwiIDw8IGMtPnJpZ2h0IDw8ICI+IEVkaXRzIDwiCisgICAg
ICAgIDw8IEVkaXRzVG9TdHJpbmcoQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKAorICAgICAgICAgICAg
ICAgQ2hhcnNUb0luZGljZXMoYy0+bGVmdCksIENoYXJzVG9JbmRpY2VzKGMtPnJpZ2h0KSkpIDw8
ICI+IjsKKyAgICBFWFBFQ1RfVFJVRShjLT5leHBlY3RlZF9kaWZmID09IENyZWF0ZVVuaWZpZWRE
aWZmKENoYXJzVG9MaW5lcyhjLT5sZWZ0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJzVG9MaW5lcyhjLT5yaWdodCkpKQorICAgICAg
ICA8PCAiTGVmdCA8IiA8PCBjLT5sZWZ0IDw8ICI+IFJpZ2h0IDwiIDw8IGMtPnJpZ2h0IDw8ICI+
IERpZmYgPCIKKyAgICAgICAgPDwgQ3JlYXRlVW5pZmllZERpZmYoQ2hhcnNUb0xpbmVzKGMtPmxl
ZnQpLCBDaGFyc1RvTGluZXMoYy0+cmlnaHQpKQorICAgICAgICA8PCAiPiI7CisgIH0KK30KKwog
Ly8gVGVzdHMgRXFGYWlsdXJlKCksIHVzZWQgZm9yIGltcGxlbWVudGluZyAqRVEqIGFzc2VydGlv
bnMuCiBURVNUKEFzc2VydGlvblRlc3QsIEVxRmFpbHVyZSkgewotICBjb25zdCBTdHJpbmcgZm9v
X3ZhbCgiNSIpLCBiYXJfdmFsKCI2Iik7Ci0gIGNvbnN0IFN0cmluZyBtc2cxKAorICBjb25zdCBz
dGQ6OnN0cmluZyBmb29fdmFsKCI1IiksIGJhcl92YWwoIjYiKTsKKyAgY29uc3Qgc3RkOjpzdHJp
bmcgbXNnMSgKICAgICAgIEVxRmFpbHVyZSgiZm9vIiwgImJhciIsIGZvb192YWwsIGJhcl92YWws
IGZhbHNlKQogICAgICAgLmZhaWx1cmVfbWVzc2FnZSgpKTsKICAgRVhQRUNUX1NUUkVRKAotICAg
ICAgIlZhbHVlIG9mOiBiYXJcbiIKLSAgICAgICIgIEFjdHVhbDogNlxuIgotICAgICAgIkV4cGVj
dGVkOiBmb29cbiIKLSAgICAgICJXaGljaCBpczogNSIsCisgICAgICAiRXhwZWN0ZWQgZXF1YWxp
dHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgIiAgZm9vXG4iCisgICAgICAiICAgIFdoaWNo
IGlzOiA1XG4iCisgICAgICAiICBiYXJcbiIKKyAgICAgICIgICAgV2hpY2ggaXM6IDYiLAogICAg
ICAgbXNnMS5jX3N0cigpKTsKIAotICBjb25zdCBTdHJpbmcgbXNnMigKKyAgY29uc3Qgc3RkOjpz
dHJpbmcgbXNnMigKICAgICAgIEVxRmFpbHVyZSgiZm9vIiwgIjYiLCBmb29fdmFsLCBiYXJfdmFs
LCBmYWxzZSkKICAgICAgIC5mYWlsdXJlX21lc3NhZ2UoKSk7CiAgIEVYUEVDVF9TVFJFUSgKLSAg
ICAgICJWYWx1ZSBvZjogNlxuIgotICAgICAgIkV4cGVjdGVkOiBmb29cbiIKLSAgICAgICJXaGlj
aCBpczogNSIsCisgICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgor
ICAgICAgIiAgZm9vXG4iCisgICAgICAiICAgIFdoaWNoIGlzOiA1XG4iCisgICAgICAiICA2IiwK
ICAgICAgIG1zZzIuY19zdHIoKSk7CiAKLSAgY29uc3QgU3RyaW5nIG1zZzMoCisgIGNvbnN0IHN0
ZDo6c3RyaW5nIG1zZzMoCiAgICAgICBFcUZhaWx1cmUoIjUiLCAiYmFyIiwgZm9vX3ZhbCwgYmFy
X3ZhbCwgZmFsc2UpCiAgICAgICAuZmFpbHVyZV9tZXNzYWdlKCkpOwogICBFWFBFQ1RfU1RSRVEo
Ci0gICAgICAiVmFsdWUgb2Y6IGJhclxuIgotICAgICAgIiAgQWN0dWFsOiA2XG4iCi0gICAgICAi
RXhwZWN0ZWQ6IDUiLAorICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpc
biIKKyAgICAgICIgIDVcbiIKKyAgICAgICIgIGJhclxuIgorICAgICAgIiAgICBXaGljaCBpczog
NiIsCiAgICAgICBtc2czLmNfc3RyKCkpOwogCi0gIGNvbnN0IFN0cmluZyBtc2c0KAorICBjb25z
dCBzdGQ6OnN0cmluZyBtc2c0KAogICAgICAgRXFGYWlsdXJlKCI1IiwgIjYiLCBmb29fdmFsLCBi
YXJfdmFsLCBmYWxzZSkuZmFpbHVyZV9tZXNzYWdlKCkpOwogICBFWFBFQ1RfU1RSRVEoCi0gICAg
ICAiVmFsdWUgb2Y6IDZcbiIKLSAgICAgICJFeHBlY3RlZDogNSIsCisgICAgICAiRXhwZWN0ZWQg
ZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgIiAgNVxuIgorICAgICAgIiAgNiIs
CiAgICAgICBtc2c0LmNfc3RyKCkpOwogCi0gIGNvbnN0IFN0cmluZyBtc2c1KAorICBjb25zdCBz
dGQ6OnN0cmluZyBtc2c1KAogICAgICAgRXFGYWlsdXJlKCJmb28iLCAiYmFyIiwKLSAgICAgICAg
ICAgICAgICBTdHJpbmcoIlwieFwiIiksIFN0cmluZygiXCJ5XCIiKSwKKyAgICAgICAgICAgICAg
ICBzdGQ6OnN0cmluZygiXCJ4XCIiKSwgc3RkOjpzdHJpbmcoIlwieVwiIiksCiAgICAgICAgICAg
ICAgICAgdHJ1ZSkuZmFpbHVyZV9tZXNzYWdlKCkpOwogICBFWFBFQ1RfU1RSRVEoCi0gICAgICAi
VmFsdWUgb2Y6IGJhclxuIgotICAgICAgIiAgQWN0dWFsOiBcInlcIlxuIgotICAgICAgIkV4cGVj
dGVkOiBmb28gKGlnbm9yaW5nIGNhc2UpXG4iCi0gICAgICAiV2hpY2ggaXM6IFwieFwiIiwKKyAg
ICAgICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4iCisgICAgICAiICBmb29c
biIKKyAgICAgICIgICAgV2hpY2ggaXM6IFwieFwiXG4iCisgICAgICAiICBiYXJcbiIKKyAgICAg
ICIgICAgV2hpY2ggaXM6IFwieVwiXG4iCisgICAgICAiSWdub3JpbmcgY2FzZSIsCiAgICAgICBt
c2c1LmNfc3RyKCkpOwogfQogCitURVNUKEFzc2VydGlvblRlc3QsIEVxRmFpbHVyZVdpdGhEaWZm
KSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGxlZnQoCisgICAgICAiMVxcbjJYWFhcXG4zXFxuNVxc
bjZcXG43XFxuOFxcbjlcXG4xMFxcbjExXFxuMTJYWFhcXG4xM1xcbjE0XFxuMTUiKTsKKyAgY29u
c3Qgc3RkOjpzdHJpbmcgcmlnaHQoCisgICAgICAiMVxcbjJcXG4zXFxuNFxcbjVcXG42XFxuN1xc
bjhcXG45XFxuMTFcXG4xMlxcbjEzXFxuMTQiKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbXNnMSgK
KyAgICAgIEVxRmFpbHVyZSgibGVmdCIsICJyaWdodCIsIGxlZnQsIHJpZ2h0LCBmYWxzZSkuZmFp
bHVyZV9tZXNzYWdlKCkpOworICBFWFBFQ1RfU1RSRVEoCisgICAgICAiRXhwZWN0ZWQgZXF1YWxp
dHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgIiAgbGVmdFxuIgorICAgICAgIiAgICBXaGlj
aCBpczogIgorICAgICAgIjFcXG4yWFhYXFxuM1xcbjVcXG42XFxuN1xcbjhcXG45XFxuMTBcXG4x
MVxcbjEyWFhYXFxuMTNcXG4xNFxcbjE1XG4iCisgICAgICAiICByaWdodFxuIgorICAgICAgIiAg
ICBXaGljaCBpczogMVxcbjJcXG4zXFxuNFxcbjVcXG42XFxuN1xcbjhcXG45XFxuMTFcXG4xMlxc
bjEzXFxuMTRcbiIKKyAgICAgICJXaXRoIGRpZmY6XG5AQCAtMSw1ICsxLDYgQEBcbiAxXG4tMlhY
WFxuKzJcbiAzXG4rNFxuIDVcbiA2XG4iCisgICAgICAiQEAgLTcsOCArOCw2IEBAXG4gOFxuIDlc
bi0xMFxuIDExXG4tMTJYWFhcbisxMlxuIDEzXG4gMTRcbi0xNVxuIiwKKyAgICAgIG1zZzEuY19z
dHIoKSk7Cit9CisKIC8vIFRlc3RzIEFwcGVuZFVzZXJNZXNzYWdlKCksIHVzZWQgZm9yIGltcGxl
bWVudGluZyB0aGUgKkVRKiBtYWNyb3MuCiBURVNUKEFzc2VydGlvblRlc3QsIEFwcGVuZFVzZXJN
ZXNzYWdlKSB7Ci0gIGNvbnN0IFN0cmluZyBmb28oImZvbyIpOworICBjb25zdCBzdGQ6OnN0cmlu
ZyBmb28oImZvbyIpOwogCiAgIE1lc3NhZ2UgbXNnOwogICBFWFBFQ1RfU1RSRVEoImZvbyIsCkBA
IC0zNDc3LDcgKzM2MzIsNyBAQCBURVNUKEFzc2VydGlvblRlc3QsIEFwcGVuZFVzZXJNZXNzYWdl
KSB7CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFNpbGVuY2VzIHdhcm5pbmdzOiAiQ29uZGl0
aW9uIGlzIGFsd2F5cyB0cnVlIiwgIlVucmVhY2hhYmxlIGNvZGUiCi0jcHJhZ21hIG9wdGlvbiBw
dXNoIC13LWNjYyAtdy1yY2gKKyMgcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gKICNl
bmRpZgogCiAvLyBUZXN0cyBBU1NFUlRfVFJVRS4KQEAgLTM0OTAsOCArMzY0NSw4IEBAIFRFU1Qo
QXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1RSVUUpIHsKIC8vIFRlc3RzIEFTU0VSVF9UUlVFKHByZWRp
Y2F0ZSkgZm9yIHByZWRpY2F0ZXMgcmV0dXJuaW5nIEFzc2VydGlvblJlc3VsdC4KIFRFU1QoQXNz
ZXJ0aW9uVGVzdCwgQXNzZXJ0VHJ1ZVdpdGhBc3NlcnRpb25SZXN1bHQpIHsKICAgQVNTRVJUX1RS
VUUoUmVzdWx0SXNFdmVuKDIpKTsKLSNpZiAhZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IF9fQk9S
TEFORENfXyA+PSAweDYwMAotICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcuCisjaWZuZGVm
IF9fQk9STEFORENfXworICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyLgogICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShBU1NFUlRfVFJVRShSZXN1bHRJc0V2ZW4oMykpLAogICAgICAgICAgICAgICAgICAg
ICAgICAiVmFsdWUgb2Y6IFJlc3VsdElzRXZlbigzKVxuIgogICAgICAgICAgICAgICAgICAgICAg
ICAiICBBY3R1YWw6IGZhbHNlICgzIGlzIG9kZClcbiIKQEAgLTM1MTYsOCArMzY3MSw4IEBAIFRF
U1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0ZBTFNFKSB7CiAvLyBUZXN0cyBBU1NFUlRfRkFMU0Uo
cHJlZGljYXRlKSBmb3IgcHJlZGljYXRlcyByZXR1cm5pbmcgQXNzZXJ0aW9uUmVzdWx0LgogVEVT
VChBc3NlcnRpb25UZXN0LCBBc3NlcnRGYWxzZVdpdGhBc3NlcnRpb25SZXN1bHQpIHsKICAgQVNT
RVJUX0ZBTFNFKFJlc3VsdElzRXZlbigzKSk7Ci0jaWYgIWRlZmluZWQoX19CT1JMQU5EQ19fKSB8
fCBfX0JPUkxBTkRDX18gPj0gMHg2MDAKLSAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlciAyMDA3Lgor
I2lmbmRlZiBfX0JPUkxBTkRDX18KKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4KICAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFJlc3VsdElzRXZlbigyKSksCiAgICAgICAgICAg
ICAgICAgICAgICAgICJWYWx1ZSBvZjogUmVzdWx0SXNFdmVuKDIpXG4iCiAgICAgICAgICAgICAg
ICAgICAgICAgICIgIEFjdHVhbDogdHJ1ZSAoMiBpcyBldmVuKVxuIgpAQCAtMzUzMSw4ICszNjg2
LDggQEAgVEVTVChBc3NlcnRpb25UZXN0LCBBc3NlcnRGYWxzZVdpdGhBc3NlcnRpb25SZXN1bHQp
IHsKIH0KIAogI2lmZGVmIF9fQk9STEFORENfXwotLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0ZXIg
cHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHJlc3NlZCB0aGVtCi0jcHJhZ21hIG9w
dGlvbiBwb3AKKy8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9w
dGlvbiBwdXNoIiBzdXBwcmVzc2VkIHRoZW0KKyMgcHJhZ21hIG9wdGlvbiBwb3AKICNlbmRpZgog
CiAvLyBUZXN0cyB1c2luZyBBU1NFUlRfRVEgb24gZG91YmxlIHZhbHVlcy4gIFRoZSBwdXJwb3Nl
IGlzIHRvIG1ha2UKQEAgLTM1NTEsOSArMzcwNiwxMCBAQCBURVNUKEV4cGVjdFRlc3QsIEFTU0VS
VF9FUV9Eb3VibGUpIHsKIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0VRKSB7CiAgIEFTU0VS
VF9FUSg1LCAyICsgMyk7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUSg1LCAyKjMp
LAotICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IDIqM1xuIgotICAgICAgICAgICAg
ICAgICAgICAgICAiICBBY3R1YWw6IDZcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVj
dGVkOiA1Iik7CisgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0
aGVzZSB2YWx1ZXM6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgIDVcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIiAgMiozXG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgV2hp
Y2ggaXM6IDYiKTsKIH0KIAogLy8gVGVzdHMgQVNTRVJUX0VRKE5VTEwsIHBvaW50ZXIpLgpAQCAt
MzU2MSw3ICszNzE3LDcgQEAgVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfRVEpIHsKIFRFU1Qo
QXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0VRX05VTEwpIHsKICAgLy8gQSBzdWNjZXNzLgogICBjb25z
dCBjaGFyKiBwID0gTlVMTDsKLSAgLy8gU29tZSBvbGRlciBHQ0MgdmVyc2lvbnMgbWF5IGlzc3Vl
IGEgc3B1cmlvdXMgd2FyaW5nIGluIHRoaXMgb3IgdGhlIG5leHQKKyAgLy8gU29tZSBvbGRlciBH
Q0MgdmVyc2lvbnMgbWF5IGlzc3VlIGEgc3B1cmlvdXMgd2FybmluZyBpbiB0aGlzIG9yIHRoZSBu
ZXh0CiAgIC8vIGFzc2VydGlvbiBzdGF0ZW1lbnQuIFRoaXMgd2FybmluZyBzaG91bGQgbm90IGJl
IHN1cHByZXNzZWQgd2l0aAogICAvLyBzdGF0aWNfY2FzdCBzaW5jZSB0aGUgdGVzdCB2ZXJpZmll
cyB0aGUgYWJpbGl0eSB0byB1c2UgYmFyZSBOVUxMIGFzIHRoZQogICAvLyBleHBlY3RlZCBwYXJh
bWV0ZXIgdG8gdGhlIG1hY3JvLgpAQCAtMzU3MCw3ICszNzI2LDcgQEAgVEVTVChBc3NlcnRpb25U
ZXN0LCBBU1NFUlRfRVFfTlVMTCkgewogICAvLyBBIGZhaWx1cmUuCiAgIHN0YXRpYyBpbnQgbiA9
IDA7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShOVUxMLCAmbiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogJm5cbiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAiICAmblxuICAgIFdoaWNoIGlzOiIpOwogfQogI2VuZGlmICAvLyBHVEVTVF9DQU5fQ09NUEFS
RV9OVUxMCiAKQEAgLTM1ODYsNyArMzc0Miw3IEBAIFRFU1QoRXhwZWN0VGVzdCwgQVNTRVJUX0VR
XzApIHsKIAogICAvLyBBIGZhaWx1cmUuCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9F
USgwLCA1LjYpLAotICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IDAiKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIiAgMFxuICA1LjYiKTsKIH0KIAogLy8gVGVzdHMgQVNTRVJUX05F
LgpAQCAtMzYzNSwxMyArMzc5MSwxNCBAQCB2b2lkIFRocm93Tm90aGluZygpIHt9CiBURVNUKEFz
c2VydGlvblRlc3QsIEFTU0VSVF9USFJPVykgewogICBBU1NFUlRfVEhST1coVGhyb3dBbkludGVn
ZXIoKSwgaW50KTsKIAotI2lmbmRlZiBfX0JPUkxBTkRDX18KKyMgaWZuZGVmIF9fQk9STEFORENf
XworCiAgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAwNyBhbmQgMjAwOS4KICAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoCiAgICAgICBBU1NFUlRfVEhST1coVGhyb3dBbkludGVnZXIoKSwgYm9vbCks
CiAgICAgICAiRXhwZWN0ZWQ6IFRocm93QW5JbnRlZ2VyKCkgdGhyb3dzIGFuIGV4Y2VwdGlvbiBv
ZiB0eXBlIGJvb2wuXG4iCiAgICAgICAiICBBY3R1YWw6IGl0IHRocm93cyBhIGRpZmZlcmVudCB0
eXBlLiIpOwotI2VuZGlmCisjIGVuZGlmCiAKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoCiAgICAg
ICBBU1NFUlRfVEhST1coVGhyb3dOb3RoaW5nKCksIGJvb2wpLApAQCAtMzY3Miw3ICszODI5LDgg
QEAgVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfQU5ZX1RIUk9XKSB7CiAvLyBjb21waWxlLgog
VEVTVChBc3NlcnRpb25UZXN0LCBBc3NlcnRQcmVjZWRlbmNlKSB7CiAgIEFTU0VSVF9FUSgxIDwg
MiwgdHJ1ZSk7Ci0gIEFTU0VSVF9FUSh0cnVlICYmIGZhbHNlLCBmYWxzZSk7CisgIGJvb2wgZmFs
c2VfdmFsdWUgPSBmYWxzZTsKKyAgQVNTRVJUX0VRKHRydWUgJiYgZmFsc2VfdmFsdWUsIGZhbHNl
KTsKIH0KIAogLy8gQSBzdWJyb3V0aW5lIHVzZWQgYnkgdGhlIGZvbGxvd2luZyB0ZXN0LgpAQCAt
MzY4Myw3ICszODQxLDcgQEAgdm9pZCBUZXN0RXExKGludCB4KSB7CiAvLyBUZXN0cyBjYWxsaW5n
IGEgdGVzdCBzdWJyb3V0aW5lIHRoYXQncyBub3QgcGFydCBvZiBhIGZpeHR1cmUuCiBURVNUKEFz
c2VydGlvblRlc3QsIE5vbkZpeHR1cmVTdWJyb3V0aW5lKSB7CiAgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKFRlc3RFcTEoMiksCi0gICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogeCIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAiICB4XG4gICAgV2hpY2ggaXM6IDIiKTsKIH0KIAogLy8g
QW4gdW5jb3B5YWJsZSBjbGFzcy4KQEAgLTM3MzIsNyArMzg5MCw4IEBAIFRFU1QoQXNzZXJ0aW9u
VGVzdCwgQXNzZXJ0V29ya3NXaXRoVW5jb3B5YWJsZU9iamVjdCkgewogICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShUZXN0QXNzZXJ0Tm9uUG9zaXRpdmUoKSwKICAgICAiSXNQb3NpdGl2ZVVuY29weWFi
bGUoeSkgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZVxueSBldmFsdWF0ZXMgdG8gLTEiKTsKICAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoVGVzdEFzc2VydEVxdWFsc1VuY29weWFibGUoKSwKLSAgICAi
VmFsdWUgb2Y6IHlcbiAgQWN0dWFsOiAtMVxuRXhwZWN0ZWQ6IHhcbldoaWNoIGlzOiA1Iik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgIHhcbiAgICBXaGljaCBpczogNVxuICB5XG4g
ICAgV2hpY2ggaXM6IC0xIik7CiB9CiAKIC8vIFRlc3RzIHRoYXQgdW5jb3B5YWJsZSBvYmplY3Rz
IGNhbiBiZSB1c2VkIGluIGV4cGVjdHMuCkBAIC0zNzQ0LDU3ICszOTAzLDkwIEBAIFRFU1QoQXNz
ZXJ0aW9uVGVzdCwgRXhwZWN0V29ya3NXaXRoVW5jb3B5YWJsZU9iamVjdCkgewogICAgICJJc1Bv
c2l0aXZlVW5jb3B5YWJsZSh5KSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlXG55IGV2YWx1YXRl
cyB0byAtMSIpOwogICBFWFBFQ1RfRVEoeCwgeCk7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEVYUEVDVF9FUSh4LCB5KSwKLSAgICAiVmFsdWUgb2Y6IHlcbiAgQWN0dWFsOiAtMVxuRXhwZWN0
ZWQ6IHhcbldoaWNoIGlzOiA1Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3Rl
ZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICIgIHhcbiAgICBXaGljaCBpczogNVxuICB5XG4gICAgV2hpY2ggaXM6IC0xIik7CiB9CiAKK2Vu
dW0gTmFtZWRFbnVtIHsKKyAga0UxID0gMCwKKyAga0UyID0gMQorfTsKKworVEVTVChBc3NlcnRp
b25UZXN0LCBOYW1lZEVudW0pIHsKKyAgRVhQRUNUX0VRKGtFMSwga0UxKTsKKyAgRVhQRUNUX0xU
KGtFMSwga0UyKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKGtFMSwga0Uy
KSwgIldoaWNoIGlzOiAwIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShr
RTEsIGtFMiksICJXaGljaCBpczogMSIpOworfQogCiAvLyBUaGUgdmVyc2lvbiBvZiBnY2MgdXNl
ZCBpbiBYQ29kZSAyLjIgaGFzIGEgYnVnIGFuZCBkb2Vzbid0IGFsbG93CiAvLyBhbm9ueW1vdXMg
ZW51bXMgaW4gYXNzZXJ0aW9ucy4gIFRoZXJlZm9yZSB0aGUgZm9sbG93aW5nIHRlc3QgaXMgbm90
CiAvLyBkb25lIG9uIE1hYy4KLS8vIFN1biBTdHVkaW8gYWxzbyByZWplY3RzIHRoaXMgY29kZS4K
LSNpZiAhR1RFU1RfT1NfTUFDICYmICFkZWZpbmVkKF9fU1VOUFJPX0NDKQorLy8gU3VuIFN0dWRp
byBhbmQgSFAgYUNDIGFsc28gcmVqZWN0IHRoaXMgY29kZS4KKyNpZiAhR1RFU1RfT1NfTUFDICYm
ICFkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiAhZGVmaW5lZChfX0hQX2FDQykKIAogLy8gVGVzdHMg
dXNpbmcgYXNzZXJ0aW9ucyB3aXRoIGFub255bW91cyBlbnVtcy4KIGVudW0gewotICBDQVNFX0Eg
PSAtMSwKLSNpZiBHVEVTVF9PU19MSU5VWAorICBrQ2FzZUEgPSAtMSwKKworIyBpZiBHVEVTVF9P
U19MSU5VWAorCiAgIC8vIFdlIHdhbnQgdG8gdGVzdCB0aGUgY2FzZSB3aGVyZSB0aGUgc2l6ZSBv
ZiB0aGUgYW5vbnltb3VzIGVudW0gaXMKICAgLy8gbGFyZ2VyIHRoYW4gc2l6ZW9mKGludCksIHRv
IG1ha2Ugc3VyZSBvdXIgaW1wbGVtZW50YXRpb24gb2YgdGhlCiAgIC8vIGFzc2VydGlvbnMgZG9l
c24ndCB0cnVuY2F0ZSB0aGUgZW51bXMuICBIb3dldmVyLCBNU1ZDCiAgIC8vIChpbmNvcnJlY3Rs
eSkgZG9lc24ndCBhbGxvdyBhbiBlbnVtIHZhbHVlIHRvIGV4Y2VlZCB0aGUgcmFuZ2Ugb2YKICAg
Ly8gYW4gaW50LCBzbyB0aGlzIGhhcyB0byBiZSBjb25kaXRpb25hbGx5IGNvbXBpbGVkLgogICAv
LwotICAvLyBPbiBMaW51eCwgQ0FTRV9CIGFuZCBDQVNFX0EgaGF2ZSB0aGUgc2FtZSB2YWx1ZSB3
aGVuIHRydW5jYXRlZCB0bworICAvLyBPbiBMaW51eCwga0Nhc2VCIGFuZCBrQ2FzZUEgaGF2ZSB0
aGUgc2FtZSB2YWx1ZSB3aGVuIHRydW5jYXRlZCB0bwogICAvLyBpbnQgc2l6ZS4gIFdlIHdhbnQg
dG8gdGVzdCB3aGV0aGVyIHRoaXMgd2lsbCBjb25mdXNlIHRoZQogICAvLyBhc3NlcnRpb25zLgot
ICBDQVNFX0IgPSB0ZXN0aW5nOjppbnRlcm5hbDo6a01heEJpZ2dlc3RJbnQsCi0jZWxzZQotICBD
QVNFX0IgPSBJTlRfTUFYLAotI2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorICBrQ2FzZUIgPSB0
ZXN0aW5nOjppbnRlcm5hbDo6a01heEJpZ2dlc3RJbnQsCisKKyMgZWxzZQorCisgIGtDYXNlQiA9
IElOVF9NQVgsCisKKyMgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCisKKyAga0Nhc2VDID0gNDIK
IH07CiAKIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQW5vbnltb3VzRW51bSkgewotI2lmIEdURVNUX09T
X0xJTlVYCi0gIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxpbnQ+KENBU0VfQSksIHN0YXRpY19jYXN0
PGludD4oQ0FTRV9CKSk7Ci0jZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCi0KLSAgRVhQRUNUX0VR
KENBU0VfQSwgQ0FTRV9BKTsKLSAgRVhQRUNUX05FKENBU0VfQSwgQ0FTRV9CKTsKLSAgRVhQRUNU
X0xUKENBU0VfQSwgQ0FTRV9CKTsKLSAgRVhQRUNUX0xFKENBU0VfQSwgQ0FTRV9CKTsKLSAgRVhQ
RUNUX0dUKENBU0VfQiwgQ0FTRV9BKTsKLSAgRVhQRUNUX0dFKENBU0VfQSwgQ0FTRV9BKTsKLSAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dFKENBU0VfQSwgQ0FTRV9CKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIihDQVNFX0EpID49IChDQVNFX0IpIik7Ci0KLSAgQVNTRVJU
X0VRKENBU0VfQSwgQ0FTRV9BKTsKLSAgQVNTRVJUX05FKENBU0VfQSwgQ0FTRV9CKTsKLSAgQVNT
RVJUX0xUKENBU0VfQSwgQ0FTRV9CKTsKLSAgQVNTRVJUX0xFKENBU0VfQSwgQ0FTRV9CKTsKLSAg
QVNTRVJUX0dUKENBU0VfQiwgQ0FTRV9BKTsKLSAgQVNTRVJUX0dFKENBU0VfQSwgQ0FTRV9BKTsK
LSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKENBU0VfQSwgQ0FTRV9CKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBDQVNFX0IiKTsKKyMgaWYgR1RFU1RfT1NfTElO
VVgKKworICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50PihrQ2FzZUEpLCBzdGF0aWNfY2FzdDxp
bnQ+KGtDYXNlQikpOworCisjIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCisgIEVYUEVDVF9F
UShrQ2FzZUEsIGtDYXNlQSk7CisgIEVYUEVDVF9ORShrQ2FzZUEsIGtDYXNlQik7CisgIEVYUEVD
VF9MVChrQ2FzZUEsIGtDYXNlQik7CisgIEVYUEVDVF9MRShrQ2FzZUEsIGtDYXNlQik7CisgIEVY
UEVDVF9HVChrQ2FzZUIsIGtDYXNlQSk7CisgIEVYUEVDVF9HRShrQ2FzZUEsIGtDYXNlQSk7Cisg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HRShrQ2FzZUEsIGtDYXNlQiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICIoa0Nhc2VBKSA+PSAoa0Nhc2VCKSIpOworICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR0Uoa0Nhc2VBLCBrQ2FzZUMpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiLTEgdnMgNDIiKTsKKworICBBU1NFUlRfRVEoa0Nhc2VBLCBrQ2FzZUEp
OworICBBU1NFUlRfTkUoa0Nhc2VBLCBrQ2FzZUIpOworICBBU1NFUlRfTFQoa0Nhc2VBLCBrQ2Fz
ZUIpOworICBBU1NFUlRfTEUoa0Nhc2VBLCBrQ2FzZUIpOworICBBU1NFUlRfR1Qoa0Nhc2VCLCBr
Q2FzZUEpOworICBBU1NFUlRfR0Uoa0Nhc2VBLCBrQ2FzZUEpOworCisjIGlmbmRlZiBfX0JPUkxB
TkRDX18KKworICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyLgorICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RShBU1NFUlRfRVEoa0Nhc2VBLCBrQ2FzZUIpLAorICAgICAgICAgICAgICAgICAgICAgICAiICBr
Q2FzZUJcbiAgICBXaGljaCBpczogIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9F
UShrQ2FzZUEsIGtDYXNlQyksCisgICAgICAgICAgICAgICAgICAgICAgICJcbiAgICBXaGljaCBp
czogNDIiKTsKKyMgZW5kaWYKKworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoa0Nh
c2VBLCBrQ2FzZUMpLAorICAgICAgICAgICAgICAgICAgICAgICAiXG4gICAgV2hpY2ggaXM6IC0x
Iik7CiB9CiAKICNlbmRpZiAgLy8gIUdURVNUX09TX01BQyAmJiAhZGVmaW5lZChfX1NVTlBST19D
QykKQEAgLTM4NDAsMjQgKzQwMzIsMjYgQEAgVEVTVChIUkVTVUxUQXNzZXJ0aW9uVGVzdCwgRVhQ
RUNUX0hSRVNVTFRfRkFJTEVEKSB7CiAKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNU
X0hSRVNVTFRfRkFJTEVEKE9rSFJFU1VMVFN1Y2Nlc3MoKSksCiAgICAgIkV4cGVjdGVkOiAoT2tI
UkVTVUxUU3VjY2VzcygpKSBmYWlscy5cbiIKLSAgICAiICBBY3R1YWw6IDB4MDAwMDAwMDAiKTsK
KyAgICAiICBBY3R1YWw6IDB4MCIpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1Rf
SFJFU1VMVF9GQUlMRUQoRmFsc2VIUkVTVUxUU3VjY2VzcygpKSwKICAgICAiRXhwZWN0ZWQ6IChG
YWxzZUhSRVNVTFRTdWNjZXNzKCkpIGZhaWxzLlxuIgotICAgICIgIEFjdHVhbDogMHgwMDAwMDAw
MSIpOworICAgICIgIEFjdHVhbDogMHgxIik7CiB9CiAKIFRFU1QoSFJFU1VMVEFzc2VydGlvblRl
c3QsIEFTU0VSVF9IUkVTVUxUX0ZBSUxFRCkgewogICBBU1NFUlRfSFJFU1VMVF9GQUlMRUQoRV9V
TkVYUEVDVEVEKTsKIAotI2lmbmRlZiBfX0JPUkxBTkRDX18KKyMgaWZuZGVmIF9fQk9STEFORENf
XworCiAgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAwNyBhbmQgMjAwOS4KICAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoQVNTRVJUX0hSRVNVTFRfRkFJTEVEKE9rSFJFU1VMVFN1Y2Nlc3MoKSksCiAg
ICAgIkV4cGVjdGVkOiAoT2tIUkVTVUxUU3VjY2VzcygpKSBmYWlscy5cbiIKLSAgICAiICBBY3R1
YWw6IDB4MDAwMDAwMDAiKTsKLSNlbmRpZgorICAgICIgIEFjdHVhbDogMHgwIik7CisjIGVuZGlm
CisKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0hSRVNVTFRfRkFJTEVEKEZhbHNlSFJF
U1VMVFN1Y2Nlc3MoKSksCiAgICAgIkV4cGVjdGVkOiAoRmFsc2VIUkVTVUxUU3VjY2VzcygpKSBm
YWlscy5cbiIKLSAgICAiICBBY3R1YWw6IDB4MDAwMDAwMDEiKTsKKyAgICAiICBBY3R1YWw6IDB4
MSIpOwogfQogCiAvLyBUZXN0cyB0aGF0IHN0cmVhbWluZyB0byB0aGUgSFJFU1VMVCBtYWNyb3Mg
d29ya3MuCkBAIC0zODcxLDEyICs0MDY1LDEzIEBAIFRFU1QoSFJFU1VMVEFzc2VydGlvblRlc3Qs
IFN0cmVhbWluZykgewogICAgICAgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKEVfVU5FWFBFQ1RF
RCkgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAogICAgICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKIAot
I2lmbmRlZiBfX0JPUkxBTkRDX18KKyMgaWZuZGVmIF9fQk9STEFORENfXworCiAgIC8vIElDRSdz
IGluIEMrK0J1aWxkZXIgMjAwNyBhbmQgMjAwOS4KICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoCiAg
ICAgICBBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoRV9VTkVYUEVDVEVEKSA8PCAiZXhwZWN0ZWQg
ZmFpbHVyZSIsCiAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIpOwotI2VuZGlmCisjIGVuZGlmCiAK
ICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCiAgICAgICBFWFBFQ1RfSFJFU1VMVF9GQUlMRUQo
U19PSykgPDwgImV4cGVjdGVkIGZhaWx1cmUiLApAQCAtMzg5MSw3ICs0MDg2LDcgQEAgVEVTVChI
UkVTVUxUQXNzZXJ0aW9uVGVzdCwgU3RyZWFtaW5nKSB7CiAKICNpZmRlZiBfX0JPUkxBTkRDX18K
IC8vIFNpbGVuY2VzIHdhcm5pbmdzOiAiQ29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlIiwgIlVucmVh
Y2hhYmxlIGNvZGUiCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gKKyMgcHJhZ21h
IG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gKICNlbmRpZgogCiAvLyBUZXN0cyB0aGF0IHRoZSBh
c3NlcnRpb24gbWFjcm9zIGJlaGF2ZSBsaWtlIHNpbmdsZSBzdGF0ZW1lbnRzLgpAQCAtNDAwOCw3
ICs0MjAzLDcgQEAgVEVTVChBc3NlcnRpb25TeW50YXhUZXN0LCBXb3Jrc1dpdGhTd2l0Y2gpIHsK
ICNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwogCiB2b2lkIFRocm93QVN0cmluZygpIHsKLSAgICB0
aHJvdyAiU3RyaW5nIjsKKyAgICB0aHJvdyAic3RkOjpzdHJpbmciOwogfQogCiAvLyBUZXN0IHRo
YXQgdGhlIGV4Y2VwdGlvbiBhc3NlcnRpb24gbWFjcm9zIGNvbXBpbGUgYW5kIHdvcmsgd2l0aCBj
b25zdApAQCAtNDA2MCw4ICs0MjU1LDEwOSBAQCBURVNUKFN1Y2Nlc3NmdWxBc3NlcnRpb25UZXN0
LCBBU1NFUlRfU1RSKSB7CiAKIG5hbWVzcGFjZSB7CiAKKy8vIFRlc3RzIHRoZSBtZXNzYWdlIHN0
cmVhbWluZyB2YXJpYXRpb24gb2YgYXNzZXJ0aW9ucy4KKworVEVTVChBc3NlcnRpb25XaXRoTWVz
c2FnZVRlc3QsIEVYUEVDVCkgeworICBFWFBFQ1RfRVEoMSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1
Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX05FKDEsIDEpIDw8ICJF
eHBlY3RlZCBmYWlsdXJlICMxLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3Rl
ZCBmYWlsdXJlICMxIik7CisgIEVYUEVDVF9MRSgxLCAyKSA8PCAiVGhpcyBzaG91bGQgc3VjY2Vl
ZC4iOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfTFQoMSwgMCkgPDwgIkV4cGVj
dGVkIGZhaWx1cmUgIzIuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZh
aWx1cmUgIzIuIik7CisgIEVYUEVDVF9HRSgxLCAwKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4i
OworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR1QoMSwgMikgPDwgIkV4cGVjdGVk
IGZhaWx1cmUgIzMuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1
cmUgIzMuIik7CisKKyAgRVhQRUNUX1NUUkVRKCIxIiwgIjEiKSA8PCAiVGhpcyBzaG91bGQgc3Vj
Y2VlZC4iOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSTkUoIjEiLCAiMSIp
IDw8ICJFeHBlY3RlZCBmYWlsdXJlICM0LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJF
eHBlY3RlZCBmYWlsdXJlICM0LiIpOworICBFWFBFQ1RfU1RSQ0FTRUVRKCJhIiwgIkEiKSA8PCAi
VGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1Rf
U1RSQ0FTRU5FKCJhIiwgIkEiKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNS4iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZSAjNS4iKTsKKworICBFWFBFQ1RfRkxP
QVRfRVEoMSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRVhQRUNUX0RPVUJMRV9FUSgxLCAxLjIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM2
LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJlICM2LiIpOwor
ICBFWFBFQ1RfTkVBUigxLCAxLjEsIDAuMikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKK30K
KworVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVCkgeworICBBU1NFUlRfRVEo
MSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJUX05FKDEsIDIpIDw8ICJU
aGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9MRSgxLCAyKSA8PCAiVGhpcyBzaG91bGQg
c3VjY2VlZC4iOworICBBU1NFUlRfTFQoMSwgMikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsK
KyAgQVNTRVJUX0dFKDEsIDApIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9G
QVRBTF9GQUlMVVJFKEFTU0VSVF9HVCgxLCAyKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZS4iKTsKK30KKworVEVTVChBc3Nl
cnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVF9TVFIpIHsKKyAgQVNTRVJUX1NUUkVRKCIxIiwg
IjEiKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfU1RSTkUoIjEiLCAiMiIp
IDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9TVFJDQVNFRVEoImEiLCAiQSIp
IDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VS
VF9TVFJDQVNFTkUoImEiLCAiQSIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJlLiIpOworfQorCitURVNUKEFzc2VydGlvbldp
dGhNZXNzYWdlVGVzdCwgQVNTRVJUX0ZMT0FUSU5HKSB7CisgIEFTU0VSVF9GTE9BVF9FUSgxLCAx
KSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfRE9VQkxFX0VRKDEsIDEpIDw8
ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9O
RUFSKDEsMS4yLCAwLjEpIDw8ICJFeHBlY3QgZmFpbHVyZS4iLCAgLy8gTk9MSU5UCisgICAgICAg
ICAgICAgICAgICAgICAgICJFeHBlY3QgZmFpbHVyZS4iKTsKKyAgLy8gVG8gd29yayBhcm91bmQg
YSBidWcgaW4gZ2NjIDIuOTUuMCwgdGhlcmUgaXMgaW50ZW50aW9uYWxseSBubworICAvLyBzcGFj
ZSBhZnRlciB0aGUgZmlyc3QgY29tbWEgaW4gdGhlIHByZXZpb3VzIHN0YXRlbWVudC4KK30KKwor
Ly8gVGVzdHMgdXNpbmcgQVNTRVJUX0ZBTFNFIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgorVEVT
VChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVF9GQUxTRSkgeworICBBU1NFUlRfRkFM
U0UoZmFsc2UpIDw8ICJUaGlzIHNob3VsZG4ndCBmYWlsLiI7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9GQUxTRSh0cnVlKSA8PCAiRXhwZWN0ZWQgZmFp
bHVyZTogIiA8PCAyIDw8ICIgPiAiIDw8IDEKKyAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBl
dmFsdWF0ZXMgdG8gIiA8PCB0cnVlOworICB9LCAiRXhwZWN0ZWQgZmFpbHVyZSIpOworfQorCisv
LyBUZXN0cyB1c2luZyBGQUlMIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgorVEVTVChBc3NlcnRp
b25XaXRoTWVzc2FnZVRlc3QsIEZBSUwpIHsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoRkFJTCgp
IDw8IDAsCisgICAgICAgICAgICAgICAgICAgICAgICIwIik7Cit9CisKKy8vIFRlc3RzIHVzaW5n
IFNVQ0NFRUQgd2l0aCBhIHN0cmVhbWVkIG1lc3NhZ2UuCitURVNUKEFzc2VydGlvbldpdGhNZXNz
YWdlVGVzdCwgU1VDQ0VFRCkgeworICBTVUNDRUVEKCkgPDwgIlN1Y2Nlc3MgPT0gIiA8PCAxOwor
fQorCisvLyBUZXN0cyB1c2luZyBBU1NFUlRfVFJVRSB3aXRoIGEgc3RyZWFtZWQgbWVzc2FnZS4K
K1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBBU1NFUlRfVFJVRSkgeworICBBU1NFUlRf
VFJVRSh0cnVlKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfVFJVRSh0cnVl
KSA8PCB0cnVlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NF
UlRfVFJVRShmYWxzZSkgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihOVUxMKQorICAgICAg
ICAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxjaGFyICo+KE5VTEwpOworICB9LCAiKG51
bGwpKG51bGwpIik7Cit9CisKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisvLyBUZXN0cyB1c2luZyB3
aWRlIHN0cmluZ3MgaW4gYXNzZXJ0aW9uIG1lc3NhZ2VzLgorVEVTVChBc3NlcnRpb25XaXRoTWVz
c2FnZVRlc3QsIFdpZGVTdHJpbmdNZXNzYWdlKSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9UUlVFKGZhbHNlKSA8PCBMIlRoaXMgZmFpbHVyZSBp
cyBleHBlY3RlZC5ceDgxMTkiOworICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOwor
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfRVEoMSwgMikg
PDwgIlRoaXMgZmFpbHVyZSBpcyAiCisgICAgICAgICAgICAgICAgICAgIDw8IEwiZXhwZWN0ZWQg
dG9vLlx4ODEyMCI7CisgIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQgdG9vLiIpOworfQor
I2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKIC8vIFRlc3RzIEVYUEVDVF9UUlVFLgogVEVT
VChFeHBlY3RUZXN0LCBFWFBFQ1RfVFJVRSkgeworICBFWFBFQ1RfVFJVRSh0cnVlKSA8PCAiSW50
ZW50aW9uYWwgc3VjY2VzcyI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9UUlVF
KGZhbHNlKSA8PCAiSW50ZW50aW9uYWwgZmFpbHVyZSAjMS4iLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAiSW50ZW50aW9uYWwgZmFpbHVyZSAjMS4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoRVhQRUNUX1RSVUUoZmFsc2UpIDw8ICJJbnRlbnRpb25hbCBmYWlsdXJlICMyLiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlbnRpb25hbCBmYWlsdXJlICMyLiIpOwogICBF
WFBFQ1RfVFJVRSgyID4gMSk7ICAvLyBOT0xJTlQKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX1RSVUUoMiA8IDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6
IDIgPCAxXG4iCkBAIC00MDg1LDkgKzQzODEsMTQgQEAgVEVTVChFeHBlY3RUZXN0LCBFeHBlY3RU
cnVlV2l0aEFzc2VydGlvblJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhw
ZWN0ZWQ6IHRydWUiKTsKIH0KIAotLy8gVGVzdHMgRVhQRUNUX0ZBTFNFLgorLy8gVGVzdHMgRVhQ
RUNUX0ZBTFNFIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgogVEVTVChFeHBlY3RUZXN0LCBFWFBF
Q1RfRkFMU0UpIHsKICAgRVhQRUNUX0ZBTFNFKDIgPCAxKTsgIC8vIE5PTElOVAorICBFWFBFQ1Rf
RkFMU0UoZmFsc2UpIDw8ICJJbnRlbnRpb25hbCBzdWNjZXNzIjsKKyAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRVhQRUNUX0ZBTFNFKHRydWUpIDw8ICJJbnRlbnRpb25hbCBmYWlsdXJlICMxLiIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlbnRpb25hbCBmYWlsdXJlICMxLiIpOwor
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRkFMU0UodHJ1ZSkgPDwgIkludGVudGlv
bmFsIGZhaWx1cmUgIzIuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkludGVudGlvbmFs
IGZhaWx1cmUgIzIuIik7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GQUxTRSgy
ID4gMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogMiA+IDFcbiIKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiB0cnVlXG4iCkBAIC00MTExLDE3ICs0
NDEyLDE4IEBAIFRFU1QoRXhwZWN0VGVzdCwgRXhwZWN0RmFsc2VXaXRoQXNzZXJ0aW9uUmVzdWx0
KSB7CiB9CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KLS8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVy
IHByZXZpb3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXByZXNzZWQgdGhlbQotI3ByYWdtYSBv
cHRpb24gcG9wCisvLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2aW91cyAiI3ByYWdtYSBv
cHRpb24gcHVzaCIgc3VwcHJlc3NlZCB0aGVtCisjIHByYWdtYSBvcHRpb24gcG9wCiAjZW5kaWYK
IAogLy8gVGVzdHMgRVhQRUNUX0VRLgogVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVEpIHsKICAg
RVhQRUNUX0VRKDUsIDIgKyAzKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VR
KDUsIDIqMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogMiozXG4iCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogNlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAiRXhwZWN0ZWQ6IDUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4
cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgNVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiICAyKjNcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICBXaGljaCBpczogNiIpOwogICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfRVEoNSwgMiAtIDMpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAiMiAtIDMiKTsKIH0KQEAgLTQxNDMsNyArNDQ0NSw3IEBAIFRFU1QoRXhwZWN0VGVzdCwgRVhQ
RUNUX0VRX0RvdWJsZSkgewogVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVFfTlVMTCkgewogICAv
LyBBIHN1Y2Nlc3MuCiAgIGNvbnN0IGNoYXIqIHAgPSBOVUxMOwotICAvLyBTb21lIG9sZGVyIEdD
QyB2ZXJzaW9ucyBtYXkgaXNzdWUgYSBzcHVyaW91cyB3YXJpbmcgaW4gdGhpcyBvciB0aGUgbmV4
dAorICAvLyBTb21lIG9sZGVyIEdDQyB2ZXJzaW9ucyBtYXkgaXNzdWUgYSBzcHVyaW91cyB3YXJu
aW5nIGluIHRoaXMgb3IgdGhlIG5leHQKICAgLy8gYXNzZXJ0aW9uIHN0YXRlbWVudC4gVGhpcyB3
YXJuaW5nIHNob3VsZCBub3QgYmUgc3VwcHJlc3NlZCB3aXRoCiAgIC8vIHN0YXRpY19jYXN0IHNp
bmNlIHRoZSB0ZXN0IHZlcmlmaWVzIHRoZSBhYmlsaXR5IHRvIHVzZSBiYXJlIE5VTEwgYXMgdGhl
CiAgIC8vIGV4cGVjdGVkIHBhcmFtZXRlciB0byB0aGUgbWFjcm8uCkBAIC00MTUyLDcgKzQ0NTQs
NyBAQCBURVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9FUV9OVUxMKSB7CiAgIC8vIEEgZmFpbHVyZS4K
ICAgaW50IG4gPSAwOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoTlVMTCwg
Jm4pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6ICZuXG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgJm5cbiAgICBXaGljaCBpczoiKTsKIH0KICNlbmRpZiAg
Ly8gR1RFU1RfQ0FOX0NPTVBBUkVfTlVMTAogCkBAIC00MTY4LDcgKzQ0NzAsNyBAQCBURVNUKEV4
cGVjdFRlc3QsIEVYUEVDVF9FUV8wKSB7CiAKICAgLy8gQSBmYWlsdXJlLgogICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoMCwgNS42KSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkV4cGVjdGVkOiAwIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgIDBcbiAgNS42
Iik7CiB9CiAKIC8vIFRlc3RzIEVYUEVDVF9ORS4KQEAgLTQyNjgsNyArNDU3MCw3IEBAIFRFU1Qo
RXhwZWN0VGVzdCwgRVhQRUNUX0FOWV9USFJPVykgewogVEVTVChFeHBlY3RUZXN0LCBFeHBlY3RQ
cmVjZWRlbmNlKSB7CiAgIEVYUEVDVF9FUSgxIDwgMiwgdHJ1ZSk7CiAgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9FUSh0cnVlLCB0cnVlICYmIGZhbHNlKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlZhbHVlIG9mOiB0cnVlICYmIGZhbHNlIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgIHRydWUgJiYgZmFsc2VcbiAgICBXaGljaCBpczogZmFsc2UiKTsKIH0KIAog
CkBAIC00MzYxLDcgKzQ2NjMsNyBAQCBURVNUKFN0cmVhbWFibGVUZXN0LCBCYXNpY0lvTWFuaXAp
IHsKIAogdm9pZCBBZGRGYWlsdXJlSGVscGVyKGJvb2wqIGFib3J0ZWQpIHsKICAgKmFib3J0ZWQg
PSB0cnVlOwotICBBRERfRkFJTFVSRSgpIDw8ICJGYWlsdXJlIjsKKyAgQUREX0ZBSUxVUkUoKSA8
PCAiSW50ZW50aW9uYWwgZmFpbHVyZS4iOwogICAqYWJvcnRlZCA9IGZhbHNlOwogfQogCkBAIC00
MzY5LDEwICs0NjcxLDI1IEBAIHZvaWQgQWRkRmFpbHVyZUhlbHBlcihib29sKiBhYm9ydGVkKSB7
CiBURVNUKE1hY3JvVGVzdCwgQUREX0ZBSUxVUkUpIHsKICAgYm9vbCBhYm9ydGVkID0gdHJ1ZTsK
ICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVyZUhlbHBlcigmYWJvcnRlZCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsdXJlIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJJbnRlbnRpb25hbCBmYWlsdXJlLiIpOwogICBFWFBFQ1RfRkFMU0UoYWJvcnRlZCk7
CiB9CiAKKy8vIFRlc3RzIEFERF9GQUlMVVJFX0FULgorVEVTVChNYWNyb1Rlc3QsIEFERF9GQUlM
VVJFX0FUKSB7CisgIC8vIFZlcmlmaWVzIHRoYXQgQUREX0ZBSUxVUkVfQVQgZG9lcyBnZW5lcmF0
ZSBhIG5vbmZhdGFsIGZhaWx1cmUgYW5kCisgIC8vIHRoZSBmYWlsdXJlIG1lc3NhZ2UgY29udGFp
bnMgdGhlIHVzZXItc3RyZWFtZWQgcGFydC4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQURE
X0ZBSUxVUkVfQVQoImZvby5jYyIsIDQyKSA8PCAiV3JvbmchIiwgIldyb25nISIpOworCisgIC8v
IFZlcmlmaWVzIHRoYXQgdGhlIHVzZXItc3RyZWFtZWQgcGFydCBpcyBvcHRpb25hbC4KKyAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoQUREX0ZBSUxVUkVfQVQoImZvby5jYyIsIDQyKSwgIkZhaWxl
ZCIpOworCisgIC8vIFVuZm9ydHVuYXRlbHksIHdlIGNhbm5vdCB2ZXJpZnkgdGhhdCB0aGUgZmFp
bHVyZSBtZXNzYWdlIGNvbnRhaW5zCisgIC8vIHRoZSByaWdodCBmaWxlIHBhdGggYW5kIGxpbmUg
bnVtYmVyIHRoZSBzYW1lIHdheSwgYXMKKyAgLy8gRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBk
b2Vzbid0IGdldCB0byBzZWUgdGhlIGZpbGUgcGF0aCBhbmQKKyAgLy8gbGluZSBudW1iZXIuICBJ
bnN0ZWFkLCB3ZSBkbyB0aGF0IGluIGdvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjLgorfQorCiAv
LyBUZXN0cyBGQUlMLgogVEVTVChNYWNyb1Rlc3QsIEZBSUwpIHsKICAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoRkFJTCgpLApAQCAtNDM4Nyw3ICs0NzA0LDYgQEAgVEVTVChNYWNyb1Rlc3QsIFNVQ0NF
RUQpIHsKICAgU1VDQ0VFRCgpIDw8ICJFeHBsaWNpdCBzdWNjZXNzLiI7CiB9CiAKLQogLy8gVGVz
dHMgZm9yIEVYUEVDVF9FUSgpIGFuZCBBU1NFUlRfRVEoKS4KIC8vCiAvLyBUaGVzZSB0ZXN0cyBm
YWlsICppbnRlbnRpb25hbGx5Kiwgcy50LiB0aGUgZmFpbHVyZSBtZXNzYWdlcyBjYW4gYmUKQEAg
LTQzOTgsMTUgKzQ3MTQsMTcgQEAgVEVTVChNYWNyb1Rlc3QsIFNVQ0NFRUQpIHsKIC8vIFRlc3Rz
IHVzaW5nIGJvb2wgdmFsdWVzIGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4KIFRFU1QoRXFBc3NlcnRp
b25UZXN0LCBCb29sKSB7CiAgIEVYUEVDVF9FUSh0cnVlLCAgdHJ1ZSk7Ci0gIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFTU0VSVF9FUShmYWxzZSwgdHJ1ZSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICJWYWx1ZSBvZjogdHJ1ZSIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CisgICAgICBib29s
IGZhbHNlX3ZhbHVlID0gZmFsc2U7CisgICAgICBBU1NFUlRfRVEoZmFsc2VfdmFsdWUsIHRydWUp
OworICAgIH0sICIgIGZhbHNlX3ZhbHVlXG4gICAgV2hpY2ggaXM6IGZhbHNlXG4gIHRydWUiKTsK
IH0KIAogLy8gVGVzdHMgdXNpbmcgaW50IHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCiBU
RVNUKEVxQXNzZXJ0aW9uVGVzdCwgSW50KSB7CiAgIEFTU0VSVF9FUSgzMiwgMzIpOwogICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoMzIsIDMzKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIjMzIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgIDMyXG4gIDMzIik7
CiB9CiAKIC8vIFRlc3RzIHVzaW5nIHRpbWVfdCB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VR
LgpAQCAtNDQyMyw5ICs0NzQxLDkgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIENoYXIpIHsKICAg
QVNTRVJUX0VRKCd6JywgJ3onKTsKICAgY29uc3QgY2hhciBjaCA9ICdiJzsKICAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKCdcMCcsIGNoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgImNoIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgIGNoXG4gICAgV2hpY2gg
aXM6ICdiJyIpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoJ2EnLCBjaCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICJjaCIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICBjaFxuICAgIFdoaWNoIGlzOiAnYiciKTsKIH0KIAogLy8gVGVzdHMgdXNpbmcgd2No
YXJfdCB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgpAQCAtNDQzMywxOCArNDc1MSwxOSBA
QCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgV2lkZUNoYXIpIHsKICAgRVhQRUNUX0VRKEwnYicsIEwn
YicpOwogCiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShMJ1wwJywgTCd4Jyks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogTCd4J1xuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IEwneCcgKDEyMCwgMHg3OClcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiBMJ1wwJ1xuIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAiV2hpY2ggaXM6IEwnXDAnICgwLCAweDApIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgIEwnXDAnXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICIg
ICAgV2hpY2ggaXM6IEwnXDAnICgwLCAweDApXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICIgIEwneCdcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBXaGljaCBpczogTCd4
JyAoMTIwLCAweDc4KSIpOwogCiAgIHN0YXRpYyB3Y2hhcl90IHdjaGFyOwogICB3Y2hhciA9IEwn
Yic7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShMJ2EnLCB3Y2hhciksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ3Y2hhciIpOwotICB3Y2hhciA9IEwnXHg4MTE5JzsK
LSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKEwnXHg4MTIwJywgd2NoYXIpLAotICAg
ICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IHdjaGFyIik7CisgIHdjaGFyID0gMHg4MTE5
OworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8d2NoYXJfdD4o
MHg4MTIwKSwgd2NoYXIpLAorICAgICAgICAgICAgICAgICAgICAgICAiICB3Y2hhclxuICAgIFdo
aWNoIGlzOiBMJyIpOwogfQogCiAvLyBUZXN0cyB1c2luZyA6OnN0ZDo6c3RyaW5nIHZhbHVlcyBp
biB7RVhQRUNUfEFTU0VSVH1fRVEuCkBAIC00NDYxLDcgKzQ3ODAsNyBAQCBURVNUKEVxQXNzZXJ0
aW9uVGVzdCwgU3RkU3RyaW5nKSB7CiAgIC8vIENvbXBhcmVzIGEgY29uc3QgY2hhciogdG8gYW4g
c3RkOjpzdHJpbmcgdGhhdCBoYXMgZGlmZmVyZW50CiAgIC8vIGNvbnRlbnQKICAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKCJUZXN0IiwgOjpzdGQ6OnN0cmluZygidGVzdCIpKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIjo6c3RkOjpzdHJpbmcoXCJ0ZXN0XCIpIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICJcInRlc3RcIiIpOwogCiAgIC8vIENvbXBhcmVzIGFu
IHN0ZDo6c3RyaW5nIHRvIGEgY2hhciogdGhhdCBoYXMgZGlmZmVyZW50IGNvbnRlbnQuCiAgIGNo
YXIqIGNvbnN0IHAxID0gY29uc3RfY2FzdDxjaGFyKj4oImZvbyIpOwpAQCAtNDQ3MywyOCArNDc5
MiwyOSBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgU3RkU3RyaW5nKSB7CiAgIHN0YXRpYyA6OnN0
ZDo6c3RyaW5nIHN0cjMoc3RyMSk7CiAgIHN0cjMuYXQoMikgPSAnXDAnOwogICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShBU1NFUlRfRVEoc3RyMSwgc3RyMyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICJWYWx1ZSBvZjogc3RyM1xuIgotICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IFwi
QSBcXDAgaW4gdGhlIG1pZGRsZVwiIik7CisgICAgICAgICAgICAgICAgICAgICAgICIgIHN0cjNc
biAgICBXaGljaCBpczogXCJBIFxcMCBpbiB0aGUgbWlkZGxlXCIiKTsKIH0KIAogI2lmIEdURVNU
X0hBU19TVERfV1NUUklORwogCiAvLyBUZXN0cyB1c2luZyA6OnN0ZDo6d3N0cmluZyB2YWx1ZXMg
aW4ge0VYUEVDVHxBU1NFUlR9X0VRLgogVEVTVChFcUFzc2VydGlvblRlc3QsIFN0ZFdpZGVTdHJp
bmcpIHsKLSAgLy8gQ29tcGFyZXMgYW4gc3RkOjp3c3RyaW5nIHRvIGEgY29uc3Qgd2NoYXJfdCog
dGhhdCBoYXMgaWRlbnRpY2FsCi0gIC8vIGNvbnRlbnQuCi0gIEVYUEVDVF9FUSg6OnN0ZDo6d3N0
cmluZyhMIlRlc3RceDgxMTkiKSwgTCJUZXN0XHg4MTE5Iik7Ci0KICAgLy8gQ29tcGFyZXMgdHdv
IGlkZW50aWNhbCBzdGQ6OndzdHJpbmdzLgogICBjb25zdCA6OnN0ZDo6d3N0cmluZyB3c3RyMShM
IkEgKiBpbiB0aGUgbWlkZGxlIik7CiAgIGNvbnN0IDo6c3RkOjp3c3RyaW5nIHdzdHIyKHdzdHIx
KTsKICAgQVNTRVJUX0VRKHdzdHIxLCB3c3RyMik7CiAKKyAgLy8gQ29tcGFyZXMgYW4gc3RkOjp3
c3RyaW5nIHRvIGEgY29uc3Qgd2NoYXJfdCogdGhhdCBoYXMgaWRlbnRpY2FsCisgIC8vIGNvbnRl
bnQuCisgIGNvbnN0IHdjaGFyX3Qga1Rlc3RYODExOVtdID0geyAnVCcsICdlJywgJ3MnLCAndCcs
IDB4ODExOSwgJ1wwJyB9OworICBFWFBFQ1RfRVEoOjpzdGQ6OndzdHJpbmcoa1Rlc3RYODExOSks
IGtUZXN0WDgxMTkpOworCiAgIC8vIENvbXBhcmVzIGFuIHN0ZDo6d3N0cmluZyB0byBhIGNvbnN0
IHdjaGFyX3QqIHRoYXQgaGFzIGRpZmZlcmVudAogICAvLyBjb250ZW50LgorICBjb25zdCB3Y2hh
cl90IGtUZXN0WDgxMjBbXSA9IHsgJ1QnLCAnZScsICdzJywgJ3QnLCAweDgxMjAsICdcMCcgfTsK
ICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX0VRKDo6
c3RkOjp3c3RyaW5nKEwiVGVzdFx4ODExOSIpLCBMIlRlc3RceDgxMjAiKTsKLSAgfSwgIkxcIlRl
c3RcXHg4MTIwXCIiKTsKKyAgICBFWFBFQ1RfRVEoOjpzdGQ6OndzdHJpbmcoa1Rlc3RYODExOSks
IGtUZXN0WDgxMjApOworICB9LCAia1Rlc3RYODEyMCIpOwogCiAgIC8vIENvbXBhcmVzIHR3byBz
dGQ6OndzdHJpbmdzIHRoYXQgaGF2ZSBkaWZmZXJlbnQgY29udGVudHMsIG9uZSBvZgogICAvLyB3
aGljaCBoYXZpbmcgYSBOVUwgY2hhcmFjdGVyIGluIHRoZSBtaWRkbGUuCkBAIC00NTQ2LDE4ICs0
ODY2LDIwIEBAIFRFU1QoRXFBc3NlcnRpb25UZXN0LCBHbG9iYWxTdHJpbmcpIHsKIAogLy8gVGVz
dHMgdXNpbmcgOjp3c3RyaW5nIHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCiBURVNUKEVx
QXNzZXJ0aW9uVGVzdCwgR2xvYmFsV2lkZVN0cmluZykgewotICAvLyBDb21wYXJlcyBhIGNvbnN0
IHdjaGFyX3QqIHRvIGEgOjp3c3RyaW5nIHRoYXQgaGFzIGlkZW50aWNhbCBjb250ZW50LgotICBB
U1NFUlRfRVEoTCJUZXN0XHg4MTE5IiwgOjp3c3RyaW5nKEwiVGVzdFx4ODExOSIpKTsKLQogICAv
LyBDb21wYXJlcyB0d28gaWRlbnRpY2FsIDo6d3N0cmluZ3MuCiAgIHN0YXRpYyBjb25zdCA6Ondz
dHJpbmcgd3N0cjEoTCJBICogaW4gdGhlIG1pZGRsZSIpOwogICBzdGF0aWMgY29uc3QgOjp3c3Ry
aW5nIHdzdHIyKHdzdHIxKTsKICAgRVhQRUNUX0VRKHdzdHIxLCB3c3RyMik7CiAKKyAgLy8gQ29t
cGFyZXMgYSBjb25zdCB3Y2hhcl90KiB0byBhIDo6d3N0cmluZyB0aGF0IGhhcyBpZGVudGljYWwg
Y29udGVudC4KKyAgY29uc3Qgd2NoYXJfdCBrVGVzdFg4MTE5W10gPSB7ICdUJywgJ2UnLCAncycs
ICd0JywgMHg4MTE5LCAnXDAnIH07CisgIEFTU0VSVF9FUShrVGVzdFg4MTE5LCA6OndzdHJpbmco
a1Rlc3RYODExOSkpOworCiAgIC8vIENvbXBhcmVzIGEgY29uc3Qgd2NoYXJfdCogdG8gYSA6Ondz
dHJpbmcgdGhhdCBoYXMgZGlmZmVyZW50CiAgIC8vIGNvbnRlbnQuCisgIGNvbnN0IHdjaGFyX3Qg
a1Rlc3RYODEyMFtdID0geyAnVCcsICdlJywgJ3MnLCAndCcsIDB4ODEyMCwgJ1wwJyB9OwogICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfRVEoTCJUZXN0
XHg4MTIwIiwgOjp3c3RyaW5nKEwiVGVzdFx4ODExOSIpKTsKKyAgICBFWFBFQ1RfRVEoa1Rlc3RY
ODEyMCwgOjp3c3RyaW5nKGtUZXN0WDgxMTkpKTsKICAgfSwgIlRlc3RcXHg4MTE5Iik7CiAKICAg
Ly8gQ29tcGFyZXMgYSB3Y2hhcl90KiB0byBhIDo6d3N0cmluZyB0aGF0IGhhcyBkaWZmZXJlbnQg
Y29udGVudC4KQEAgLTQ1OTAsOSArNDkxMiw5IEBAIFRFU1QoRXFBc3NlcnRpb25UZXN0LCBDaGFy
UG9pbnRlcikgewogICBBU1NFUlRfRVEocDEsIHAxKTsKIAogICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShFWFBFQ1RfRVEocDAsIHAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVl
IG9mOiBwMiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiICBwMlxuICAgIFdoaWNoIGlz
OiIpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEocDEsIHAyKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgInAyIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICIg
IHAyXG4gICAgV2hpY2ggaXM6Iik7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShy
ZWludGVycHJldF9jYXN0PGNoYXIqPigweDEyMzQpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oMHhBQkMwKSksCiAgICAgICAgICAgICAg
ICAgICAgICAgICJBQkMwIik7CkBAIC00NjEyLDkgKzQ5MzQsOSBAQCBURVNUKEVxQXNzZXJ0aW9u
VGVzdCwgV2lkZUNoYXJQb2ludGVyKSB7CiAgIEVYUEVDVF9FUShwMCwgcDApOwogCiAgIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShwMCwgcDIpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAiVmFsdWUgb2Y6IHAyIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgIHAy
XG4gICAgV2hpY2ggaXM6Iik7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShw
MSwgcDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAicDIiKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiAgcDJcbiAgICBXaGljaCBpczoiKTsKICAgdm9pZCogcHYzID0gKHZvaWQq
KTB4MTIzNDsgIC8vIE5PTElOVAogICB2b2lkKiBwdjQgPSAodm9pZCopMHhBQkMwOyAgLy8gTk9M
SU5UCiAgIGNvbnN0IHdjaGFyX3QqIHAzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB3Y2hhcl90
Kj4ocHYzKTsKQEAgLTQ2MzIsNiArNDk1NCw2OCBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgT3Ro
ZXJQb2ludGVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICIweDEyMzQiKTsKIH0KIAorLy8g
QSBjbGFzcyB0aGF0IHN1cHBvcnRzIGJpbmFyeSBjb21wYXJpc29uIG9wZXJhdG9ycyBidXQgbm90
IHN0cmVhbWluZy4KK2NsYXNzIFVucHJpbnRhYmxlQ2hhciB7CisgcHVibGljOgorICBleHBsaWNp
dCBVbnByaW50YWJsZUNoYXIoY2hhciBjaCkgOiBjaGFyXyhjaCkge30KKworICBib29sIG9wZXJh
dG9yPT0oY29uc3QgVW5wcmludGFibGVDaGFyJiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gY2hh
cl8gPT0gcmhzLmNoYXJfOworICB9CisgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVbnByaW50YWJs
ZUNoYXImIHJocykgY29uc3QgeworICAgIHJldHVybiBjaGFyXyAhPSByaHMuY2hhcl87CisgIH0K
KyAgYm9vbCBvcGVyYXRvcjwoY29uc3QgVW5wcmludGFibGVDaGFyJiByaHMpIGNvbnN0IHsKKyAg
ICByZXR1cm4gY2hhcl8gPCByaHMuY2hhcl87CisgIH0KKyAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0
IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBjb25zdCB7CisgICAgcmV0dXJuIGNoYXJfIDw9IHJocy5j
aGFyXzsKKyAgfQorICBib29sIG9wZXJhdG9yPihjb25zdCBVbnByaW50YWJsZUNoYXImIHJocykg
Y29uc3QgeworICAgIHJldHVybiBjaGFyXyA+IHJocy5jaGFyXzsKKyAgfQorICBib29sIG9wZXJh
dG9yPj0oY29uc3QgVW5wcmludGFibGVDaGFyJiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gY2hh
cl8gPj0gcmhzLmNoYXJfOworICB9CisKKyBwcml2YXRlOgorICBjaGFyIGNoYXJfOworfTsKKwor
Ly8gVGVzdHMgdGhhdCBBU1NFUlRfRVEoKSBhbmQgZnJpZW5kcyBkb24ndCByZXF1aXJlIHRoZSBh
cmd1bWVudHMgdG8KKy8vIGJlIHByaW50YWJsZS4KK1RFU1QoQ29tcGFyaXNvbkFzc2VydGlvblRl
c3QsIEFjY2VwdHNVbnByaW50YWJsZUFyZ3MpIHsKKyAgY29uc3QgVW5wcmludGFibGVDaGFyIHgo
J3gnKSwgeSgneScpOworICBBU1NFUlRfRVEoeCwgeCk7CisgIEVYUEVDVF9ORSh4LCB5KTsKKyAg
QVNTRVJUX0xUKHgsIHkpOworICBFWFBFQ1RfTEUoeCwgeSk7CisgIEFTU0VSVF9HVCh5LCB4KTsK
KyAgRVhQRUNUX0dFKHgsIHgpOworCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9F
USh4LCB5KSwgIjEtYnl0ZSBvYmplY3QgPDc4PiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShFWFBFQ1RfRVEoeCwgeSksICIxLWJ5dGUgb2JqZWN0IDw3OT4iKTsKKyAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoRVhQRUNUX0xUKHksIHkpLCAiMS1ieXRlIG9iamVjdCA8Nzk+Iik7CisgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HVCh4LCB5KSwgIjEtYnl0ZSBvYmplY3QgPDc4
PiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR1QoeCwgeSksICIxLWJ5dGUg
b2JqZWN0IDw3OT4iKTsKKworICAvLyBDb2RlIHRlc3RlZCBieSBFWFBFQ1RfRkFUQUxfRkFJTFVS
RSBjYW5ub3QgcmVmZXJlbmNlIGxvY2FsCisgIC8vIHZhcmlhYmxlcywgc28gd2UgaGF2ZSB0byB3
cml0ZSBVbnByaW50YWJsZUNoYXIoJ3gnKSBpbnN0ZWFkIG9mIHguCisjaWZuZGVmIF9fQk9STEFO
RENfXworICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyLgorICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShB
U1NFUlRfTkUoVW5wcmludGFibGVDaGFyKCd4JyksIFVucHJpbnRhYmxlQ2hhcigneCcpKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3QgPDc4PiIpOworICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShBU1NFUlRfTEUoVW5wcmludGFibGVDaGFyKCd5JyksIFVucHJpbnRhYmxlQ2hh
cigneCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3QgPDc4PiIpOwor
I2VuZGlmCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9MRShVbnByaW50YWJsZUNoYXIo
J3knKSwgVW5wcmludGFibGVDaGFyKCd4JykpLAorICAgICAgICAgICAgICAgICAgICAgICAiMS1i
eXRlIG9iamVjdCA8Nzk+Iik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9HRShVbnBy
aW50YWJsZUNoYXIoJ3gnKSwgVW5wcmludGFibGVDaGFyKCd5JykpLAorICAgICAgICAgICAgICAg
ICAgICAgICAiMS1ieXRlIG9iamVjdCA8Nzg+Iik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFT
U0VSVF9HRShVbnByaW50YWJsZUNoYXIoJ3gnKSwgVW5wcmludGFibGVDaGFyKCd5JykpLAorICAg
ICAgICAgICAgICAgICAgICAgICAiMS1ieXRlIG9iamVjdCA8Nzk+Iik7Cit9CisKIC8vIFRlc3Rz
IHRoZSBGUklFTkRfVEVTVCBtYWNyby4KIAogLy8gVGhpcyBjbGFzcyBoYXMgYSBwcml2YXRlIG1l
bWJlciB3ZSB3YW50IHRvIHRlc3QuICBXZSB3aWxsIHRlc3QgaXQKQEAgLTQ3NDksNyArNTEzMyw3
IEBAIFRFU1QoQXNzZXJ0aW9uUmVzdWx0VGVzdCwgQ29uc3RydWN0aW9uV29ya3MpIHsKICAgRVhQ
RUNUX1NUUkVRKCJnaGkiLCByNS5tZXNzYWdlKCkpOwogfQogCi0vLyBUZXN0cyB0aGF0IHRoZSBu
ZWdhdGlvbiBmaXBzIHRoZSBwcmVkaWNhdGUgcmVzdWx0IGJ1dCBrZWVwcyB0aGUgbWVzc2FnZS4K
Ky8vIFRlc3RzIHRoYXQgdGhlIG5lZ2F0aW9uIGZsaXBzIHRoZSBwcmVkaWNhdGUgcmVzdWx0IGJ1
dCBrZWVwcyB0aGUgbWVzc2FnZS4KIFRFU1QoQXNzZXJ0aW9uUmVzdWx0VGVzdCwgTmVnYXRpb25X
b3JrcykgewogICBBc3NlcnRpb25SZXN1bHQgcjEgPSBBc3NlcnRpb25TdWNjZXNzKCkgPDwgImFi
YyI7CiAgIEVYUEVDVF9GQUxTRSghcjEpOwpAQCAtNDc2Niw2ICs1MTUwLDM3IEBAIFRFU1QoQXNz
ZXJ0aW9uUmVzdWx0VGVzdCwgU3RyZWFtaW5nV29ya3MpIHsKICAgRVhQRUNUX1NUUkVRKCJhYmNk
MHRydWUiLCByLm1lc3NhZ2UoKSk7CiB9CiAKK1RFU1QoQXNzZXJ0aW9uUmVzdWx0VGVzdCwgQ2Fu
U3RyZWFtT3N0cmVhbU1hbmlwdWxhdG9ycykgeworICBBc3NlcnRpb25SZXN1bHQgciA9IEFzc2Vy
dGlvblN1Y2Nlc3MoKTsKKyAgciA8PCAiRGF0YSIgPDwgc3RkOjplbmRsIDw8IHN0ZDo6Zmx1c2gg
PDwgc3RkOjplbmRzIDw8ICJXaWxsIGJlIHZpc2libGUiOworICBFWFBFQ1RfU1RSRVEoIkRhdGFc
blxcMFdpbGwgYmUgdmlzaWJsZSIsIHIubWVzc2FnZSgpKTsKK30KKworLy8gVGhlIG5leHQgdGVz
dCB1c2VzIGV4cGxpY2l0IGNvbnZlcnNpb24gb3BlcmF0b3JzIC0tIGEgQysrMTEgZmVhdHVyZS4K
KyNpZiBHVEVTVF9MQU5HX0NYWDExCisKK1RFU1QoQXNzZXJ0aW9uUmVzdWx0VGVzdCwgQ29uc3Ry
dWN0aWJsZUZyb21Db250ZXh0dWFsbHlDb252ZXJ0aWJsZVRvQm9vbCkgeworICBzdHJ1Y3QgRXhw
bGljaXRseUNvbnZlcnRpYmxlVG9Cb29sIHsKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gdmFsdWU7IH0KKyAgICBib29sIHZhbHVlOworICB9OworICBFeHBsaWNp
dGx5Q29udmVydGlibGVUb0Jvb2wgdjEgPSB7ZmFsc2V9OworICBFeHBsaWNpdGx5Q29udmVydGli
bGVUb0Jvb2wgdjIgPSB7dHJ1ZX07CisgIEVYUEVDVF9GQUxTRSh2MSk7CisgIEVYUEVDVF9UUlVF
KHYyKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisKK3N0cnVjdCBDb252ZXJ0
aWJsZVRvQXNzZXJ0aW9uUmVzdWx0IHsKKyAgb3BlcmF0b3IgQXNzZXJ0aW9uUmVzdWx0KCkgY29u
c3QgeyByZXR1cm4gQXNzZXJ0aW9uUmVzdWx0KHRydWUpOyB9Cit9OworCitURVNUKEFzc2VydGlv
blJlc3VsdFRlc3QsIENvbnN0cnVjdGlibGVGcm9tSW1wbGljaXRseUNvbnZlcnRpYmxlKSB7Cisg
IENvbnZlcnRpYmxlVG9Bc3NlcnRpb25SZXN1bHQgb2JqOworICBFWFBFQ1RfVFJVRShvYmopOwor
fQorCiAvLyBUZXN0cyBzdHJlYW1pbmcgYSB1c2VyIHR5cGUgd2hvc2UgZGVmaW5pdGlvbiBhbmQg
b3BlcmF0b3IgPDwgYXJlCiAvLyBib3RoIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgogY2xhc3Mg
QmFzZSB7CkBAIC00OTUwLDYgKzUzNjUsNTkgQEAgVEVTVF9GKFRlc3RJbmZvVGVzdCwgcmVzdWx0
KSB7CiAgIEFTU0VSVF9FUSgwLCBHZXRUZXN0UmVzdWx0KHRlc3RfaW5mbyktPnRvdGFsX3BhcnRf
Y291bnQoKSk7CiB9CiAKKyNkZWZpbmUgVkVSSUZZX0NPREVfTE9DQVRJT04gXAorICBjb25zdCBp
bnQgZXhwZWN0ZWRfbGluZSA9IF9fTElORV9fIC0gMTsgXAorICBjb25zdCBUZXN0SW5mbyogY29u
c3QgdGVzdF9pbmZvID0gR2V0VW5pdFRlc3RJbXBsKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7IFwK
KyAgQVNTRVJUX1RSVUUodGVzdF9pbmZvKTsgXAorICBFWFBFQ1RfU1RSRVEoX19GSUxFX18sIHRl
c3RfaW5mby0+ZmlsZSgpKTsgXAorICBFWFBFQ1RfRVEoZXhwZWN0ZWRfbGluZSwgdGVzdF9pbmZv
LT5saW5lKCkpCisKK1RFU1QoQ29kZUxvY2F0aW9uRm9yVEVTVCwgVmVyaWZ5KSB7CisgIFZFUklG
WV9DT0RFX0xPQ0FUSU9OOworfQorCitjbGFzcyBDb2RlTG9jYXRpb25Gb3JURVNURiA6IHB1Ymxp
YyBUZXN0IHsKK307CisKK1RFU1RfRihDb2RlTG9jYXRpb25Gb3JURVNURiwgVmVyaWZ5KSB7Cisg
IFZFUklGWV9DT0RFX0xPQ0FUSU9OOworfQorCitjbGFzcyBDb2RlTG9jYXRpb25Gb3JURVNUUCA6
IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4geworfTsKKworVEVTVF9QKENvZGVMb2NhdGlvbkZv
clRFU1RQLCBWZXJpZnkpIHsKKyAgVkVSSUZZX0NPREVfTE9DQVRJT047Cit9CisKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKCwgQ29kZUxvY2F0aW9uRm9yVEVTVFAsIFZhbHVlcygwKSk7CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUIDogcHVi
bGljIFRlc3QgeworfTsKKworVFlQRURfVEVTVF9DQVNFKENvZGVMb2NhdGlvbkZvclRZUEVEVEVT
VCwgaW50KTsKKworVFlQRURfVEVTVChDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1QsIFZlcmlmeSkg
eworICBWRVJJRllfQ09ERV9MT0NBVElPTjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citj
bGFzcyBDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1RQIDogcHVibGljIFRlc3QgeworfTsKKworVFlQ
RURfVEVTVF9DQVNFX1AoQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCk7CisKK1RZUEVEX1RFU1Rf
UChDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1RQLCBWZXJpZnkpIHsKKyAgVkVSSUZZX0NPREVfTE9D
QVRJT047Cit9CisKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKENvZGVMb2NhdGlvbkZvclRZ
UEVEVEVTVFAsIFZlcmlmeSk7CisKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBD
b2RlTG9jYXRpb25Gb3JUWVBFRFRFU1RQLCBpbnQpOworCisjdW5kZWYgVkVSSUZZX0NPREVfTE9D
QVRJT04KKwogLy8gVGVzdHMgc2V0dGluZyB1cCBhbmQgdGVhcmluZyBkb3duIGEgdGVzdCBjYXNl
LgogCiBjbGFzcyBTZXRVcFRlc3RDYXNlVGVzdCA6IHB1YmxpYyBUZXN0IHsKQEAgLTUwMTMsNyAr
NTQ4MSw4IEBAIFRFU1RfRihTZXRVcFRlc3RDYXNlVGVzdCwgVGVzdDIpIHsKICAgRVhQRUNUX1NU
UkVRKCIxMjMiLCBzaGFyZWRfcmVzb3VyY2VfKTsKIH0KIAotLy8gVGhlIEluaXRHb29nbGVUZXN0
VGVzdCB0ZXN0IGNhc2UgdGVzdHMgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKS4KKworLy8gVGhl
IFBhcnNlRmxhZ3NUZXN0IHRlc3QgY2FzZSB0ZXN0cyBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHku
CiAKIC8vIFRoZSBGbGFncyBzdHJ1Y3Qgc3RvcmVzIGEgY29weSBvZiBhbGwgR29vZ2xlIFRlc3Qg
ZmxhZ3MuCiBzdHJ1Y3QgRmxhZ3MgewpAQCAtNTAzMCw2ICs1NDk5LDcgQEAgc3RydWN0IEZsYWdz
IHsKICAgICAgICAgICAgIHJlcGVhdCgxKSwKICAgICAgICAgICAgIHNodWZmbGUoZmFsc2UpLAog
ICAgICAgICAgICAgc3RhY2tfdHJhY2VfZGVwdGgoa01heFN0YWNrVHJhY2VEZXB0aCksCisgICAg
ICAgICAgICBzdHJlYW1fcmVzdWx0X3RvKCIiKSwKICAgICAgICAgICAgIHRocm93X29uX2ZhaWx1
cmUoZmFsc2UpIHt9CiAKICAgLy8gRmFjdG9yeSBtZXRob2RzLgpAQCAtNTA5OCw4ICs1NTY4LDgg
QEAgc3RydWN0IEZsYWdzIHsKICAgICByZXR1cm4gZmxhZ3M7CiAgIH0KIAotICAvLyBDcmVhdGVz
IGEgRmxhZ3Mgc3RydWN0IHdoZXJlIHRoZSBndGVzdF9yYW5kb21fc2VlZCBmbGFnIGhhcwotICAv
LyB0aGUgZ2l2ZW4gdmFsdWUuCisgIC8vIENyZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hlcmUgdGhl
IGd0ZXN0X3JhbmRvbV9zZWVkIGZsYWcgaGFzIHRoZSBnaXZlbgorICAvLyB2YWx1ZS4KICAgc3Rh
dGljIEZsYWdzIFJhbmRvbVNlZWQoSW50MzIgcmFuZG9tX3NlZWQpIHsKICAgICBGbGFncyBmbGFn
czsKICAgICBmbGFncy5yYW5kb21fc2VlZCA9IHJhbmRvbV9zZWVkOwpAQCAtNTExNCw4ICs1NTg0
LDggQEAgc3RydWN0IEZsYWdzIHsKICAgICByZXR1cm4gZmxhZ3M7CiAgIH0KIAotICAvLyBDcmVh
dGVzIGEgRmxhZ3Mgc3RydWN0IHdoZXJlIHRoZSBndGVzdF9zaHVmZmxlIGZsYWcgaGFzCi0gIC8v
IHRoZSBnaXZlbiB2YWx1ZS4KKyAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUg
Z3Rlc3Rfc2h1ZmZsZSBmbGFnIGhhcyB0aGUgZ2l2ZW4KKyAgLy8gdmFsdWUuCiAgIHN0YXRpYyBG
bGFncyBTaHVmZmxlKGJvb2wgc2h1ZmZsZSkgewogICAgIEZsYWdzIGZsYWdzOwogICAgIGZsYWdz
LnNodWZmbGUgPSBzaHVmZmxlOwpAQCAtNTEzMCw2ICs1NjAwLDE0IEBAIHN0cnVjdCBGbGFncyB7
CiAgICAgcmV0dXJuIGZsYWdzOwogICB9CiAKKyAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3
aGVyZSB0aGUgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSBmbGFnIGhhcworICAvLyB0aGUg
Z2l2ZW4gdmFsdWUuCisgIHN0YXRpYyBGbGFncyBTdHJlYW1SZXN1bHRUbyhjb25zdCBjaGFyKiBz
dHJlYW1fcmVzdWx0X3RvKSB7CisgICAgRmxhZ3MgZmxhZ3M7CisgICAgZmxhZ3Muc3RyZWFtX3Jl
c3VsdF90byA9IHN0cmVhbV9yZXN1bHRfdG87CisgICAgcmV0dXJuIGZsYWdzOworICB9CisKICAg
Ly8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3RfdGhyb3dfb25fZmFpbHVy
ZSBmbGFnIGhhcwogICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCiAgIHN0YXRpYyBGbGFncyBUaHJvd09u
RmFpbHVyZShib29sIHRocm93X29uX2ZhaWx1cmUpIHsKQEAgLTUxNTEsMTEgKzU2MjksMTIgQEAg
c3RydWN0IEZsYWdzIHsKICAgSW50MzIgcmVwZWF0OwogICBib29sIHNodWZmbGU7CiAgIEludDMy
IHN0YWNrX3RyYWNlX2RlcHRoOworICBjb25zdCBjaGFyKiBzdHJlYW1fcmVzdWx0X3RvOwogICBi
b29sIHRocm93X29uX2ZhaWx1cmU7CiB9OwogCi0vLyBGaXh0dXJlIGZvciB0ZXN0aW5nIEluaXRH
b29nbGVUZXN0KCkuCi1jbGFzcyBJbml0R29vZ2xlVGVzdFRlc3QgOiBwdWJsaWMgVGVzdCB7Cisv
LyBGaXh0dXJlIGZvciB0ZXN0aW5nIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seSgpLgorY2xhc3Mg
UGFyc2VGbGFnc1Rlc3QgOiBwdWJsaWMgVGVzdCB7CiAgcHJvdGVjdGVkOgogICAvLyBDbGVhcnMg
dGhlIGZsYWdzIGJlZm9yZSBlYWNoIHRlc3QuCiAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKQEAg
LTUxNzEsNiArNTY1MCw3IEBAIGNsYXNzIEluaXRHb29nbGVUZXN0VGVzdCA6IHB1YmxpYyBUZXN0
IHsKICAgICBHVEVTVF9GTEFHKHJlcGVhdCkgPSAxOwogICAgIEdURVNUX0ZMQUcoc2h1ZmZsZSkg
PSBmYWxzZTsKICAgICBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSA9IGtNYXhTdGFja1Ry
YWNlRGVwdGg7CisgICAgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSA9ICIiOwogICAgIEdU
RVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSBmYWxzZTsKICAgfQogCkBAIC01MTk5LDggKzU2
NzksMTAgQEAgY2xhc3MgSW5pdEdvb2dsZVRlc3RUZXN0IDogcHVibGljIFRlc3QgewogICAgIEVY
UEVDVF9FUShleHBlY3RlZC5yYW5kb21fc2VlZCwgR1RFU1RfRkxBRyhyYW5kb21fc2VlZCkpOwog
ICAgIEVYUEVDVF9FUShleHBlY3RlZC5yZXBlYXQsIEdURVNUX0ZMQUcocmVwZWF0KSk7CiAgICAg
RVhQRUNUX0VRKGV4cGVjdGVkLnNodWZmbGUsIEdURVNUX0ZMQUcoc2h1ZmZsZSkpOwotICAgIEVY
UEVDVF9FUShleHBlY3RlZC50aHJvd19vbl9mYWlsdXJlLCBHVEVTVF9GTEFHKHRocm93X29uX2Zh
aWx1cmUpKTsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQuc3RhY2tfdHJhY2VfZGVwdGgsIEdURVNU
X0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoZXhwZWN0ZWQuc3Ry
ZWFtX3Jlc3VsdF90bywKKyAgICAgICAgICAgICAgICAgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0
X3RvKS5jX3N0cigpKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQudGhyb3dfb25fZmFpbHVyZSwg
R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSk7CiAgIH0KIAogICAvLyBQYXJzZXMgYSBjb21t
YW5kIGxpbmUgKHNwZWNpZmllZCBieSBhcmdjMSBhbmQgYXJndjEpLCB0aGVuCkBAIC01MjEzLDE2
ICs1Njk1LDE2IEBAIGNsYXNzIEluaXRHb29nbGVUZXN0VGVzdCA6IHB1YmxpYyBUZXN0IHsKICAg
ICBjb25zdCBib29sIHNhdmVkX2hlbHBfZmxhZyA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OmdfaGVs
cF9mbGFnOwogICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OmdfaGVscF9mbGFnID0gZmFsc2U7CiAK
LSNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXworIyBpZiBHVEVTVF9IQVNfU1RSRUFN
X1JFRElSRUNUSU9OCiAgICAgQ2FwdHVyZVN0ZG91dCgpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNf
U1RSRUFNX1JFRElSRUNUSU9OXworIyBlbmRpZgogCiAgICAgLy8gUGFyc2VzIHRoZSBjb21tYW5k
IGxpbmUuCiAgICAgaW50ZXJuYWw6OlBhcnNlR29vZ2xlVGVzdEZsYWdzT25seSgmYXJnYzEsIGNv
bnN0X2Nhc3Q8Q2hhclR5cGUqKj4oYXJndjEpKTsKIAotI2lmIEdURVNUX0hBU19TVFJFQU1fUkVE
SVJFQ1RJT05fCi0gICAgY29uc3QgU3RyaW5nIGNhcHR1cmVkX3N0ZG91dCA9IEdldENhcHR1cmVk
U3Rkb3V0KCk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCisjIGlm
IEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KKyAgICBjb25zdCBzdGQ6OnN0cmluZyBjYXB0
dXJlZF9zdGRvdXQgPSBHZXRDYXB0dXJlZFN0ZG91dCgpOworIyBlbmRpZgogCiAgICAgLy8gVmVy
aWZpZXMgdGhlIGZsYWcgdmFsdWVzLgogICAgIENoZWNrRmxhZ3MoZXhwZWN0ZWQpOwpAQCAtNTIz
NSw3ICs1NzE3LDcgQEAgY2xhc3MgSW5pdEdvb2dsZVRlc3RUZXN0IDogcHVibGljIFRlc3Qgewog
ICAgIC8vIGhlbHAgbWVzc2FnZSBmb3IgdGhlIGZsYWdzIGl0IHJlY29nbml6ZXMuCiAgICAgRVhQ
RUNUX0VRKHNob3VsZF9wcmludF9oZWxwLCA6OnRlc3Rpbmc6OmludGVybmFsOjpnX2hlbHBfZmxh
Zyk7CiAKLSNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXworIyBpZiBHVEVTVF9IQVNf
U1RSRUFNX1JFRElSRUNUSU9OCiAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRfaGVscF9m
cmFnbWVudCA9CiAgICAgICAgICJUaGlzIHByb2dyYW0gY29udGFpbnMgdGVzdHMgd3JpdHRlbiB1
c2luZyI7CiAgICAgaWYgKHNob3VsZF9wcmludF9oZWxwKSB7CkBAIC01MjQ0LDIxICs1NzI2LDIy
IEBAIGNsYXNzIEluaXRHb29nbGVUZXN0VGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICAgIEVYUEVD
VF9QUkVEX0ZPUk1BVDIoSXNOb3RTdWJzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdGVkX2hlbHBfZnJhZ21lbnQsIGNhcHR1cmVkX3N0ZG91dCk7CiAgICAgfQotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXworIyBlbmRpZiAgLy8gR1RFU1RfSEFT
X1NUUkVBTV9SRURJUkVDVElPTgogCiAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Z19oZWxwX2Zs
YWcgPSBzYXZlZF9oZWxwX2ZsYWc7CiAgIH0KIAogICAvLyBUaGlzIG1hY3JvIHdyYXBzIFRlc3RQ
YXJzaW5nRmxhZ3Mgcy50LiB0aGUgdXNlciBkb2Vzbid0IG5lZWQKICAgLy8gdG8gc3BlY2lmeSB0
aGUgYXJyYXkgc2l6ZXMuCi0jZGVmaW5lIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndjEs
IGFyZ3YyLCBleHBlY3RlZCwgc2hvdWxkX3ByaW50X2hlbHApIFwKKworIyBkZWZpbmUgR1RFU1Rf
VEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2MSwgYXJndjIsIGV4cGVjdGVkLCBzaG91bGRfcHJpbnRf
aGVscCkgXAogICBUZXN0UGFyc2luZ0ZsYWdzKHNpemVvZihhcmd2MSkvc2l6ZW9mKCphcmd2MSkg
LSAxLCBhcmd2MSwgXAogICAgICAgICAgICAgICAgICAgIHNpemVvZihhcmd2Mikvc2l6ZW9mKCph
cmd2MikgLSAxLCBhcmd2MiwgXAogICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLCBzaG91bGRf
cHJpbnRfaGVscCkKIH07CiAKIC8vIFRlc3RzIHBhcnNpbmcgYW4gZW1wdHkgY29tbWFuZCBsaW5l
LgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRW1wdHkpIHsKK1RFU1RfRihQYXJzZUZsYWdz
VGVzdCwgRW1wdHkpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgIE5VTEwKICAgfTsK
QEAgLTUyNzEsNyArNTc1NCw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEVtcHR5KSB7
CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgYSBjb21tYW5kIGxpbmUgdGhhdCBoYXMgbm8gZmxhZy4K
LVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE5vRmxhZykgeworVEVTVF9GKFBhcnNlRmxhZ3NU
ZXN0LCBOb0ZsYWcpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwK
ICAgICBOVUxMCkBAIC01Mjg2LDcgKzU3NjksNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0
LCBOb0ZsYWcpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyBhIGJhZCAtLWd0ZXN0X2ZpbHRlciBm
bGFnLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRmlsdGVyQmFkKSB7CitURVNUX0YoUGFy
c2VGbGFnc1Rlc3QsIEZpbHRlckJhZCkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAg
ImZvby5leGUiLAogICAgICItLWd0ZXN0X2ZpbHRlciIsCkBAIC01MzAzLDcgKzU3ODYsNyBAQCBU
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBGaWx0ZXJCYWQpIHsKIH0KIAogLy8gVGVzdHMgcGFy
c2luZyBhbiBlbXB0eSAtLWd0ZXN0X2ZpbHRlciBmbGFnLgotVEVTVF9GKEluaXRHb29nbGVUZXN0
VGVzdCwgRmlsdGVyRW1wdHkpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgRmlsdGVyRW1wdHkp
IHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVz
dF9maWx0ZXI9IiwKQEAgLTUzMTksNyArNTgwMiw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRl
c3QsIEZpbHRlckVtcHR5KSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgYSBub24tZW1wdHkgLS1n
dGVzdF9maWx0ZXIgZmxhZy4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEZpbHRlck5vbkVt
cHR5KSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEZpbHRlck5vbkVtcHR5KSB7CiAgIGNvbnN0
IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfZmlsdGVyPWFi
YyIsCkBAIC01MzM1LDcgKzU4MTgsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBGaWx0
ZXJOb25FbXB0eSkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfYnJlYWtfb25fZmFp
bHVyZS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlV2l0aG91dFZh
bHVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEJyZWFrT25GYWlsdXJlV2l0aG91dFZhbHVl
KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rl
c3RfYnJlYWtfb25fZmFpbHVyZSIsCkBAIC01MzUxLDcgKzU4MzQsNyBAQCBURVNUX0YoSW5pdEdv
b2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVyZVdpdGhvdXRWYWx1ZSkgewogfQogCiAvLyBUZXN0
cyBwYXJzaW5nIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZT0wLgotVEVTVF9GKEluaXRHb29nbGVU
ZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVGYWxzZV8wKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3Qs
IEJyZWFrT25GYWlsdXJlRmFsc2VfMCkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAg
ImZvby5leGUiLAogICAgICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9MCIsCkBAIC01MzY3LDcg
KzU4NTAsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVyZUZhbHNl
XzApIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9Zi4K
LVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlRmFsc2VfZikgeworVEVT
VF9GKFBhcnNlRmxhZ3NUZXN0LCBCcmVha09uRmFpbHVyZUZhbHNlX2YpIHsKICAgY29uc3QgY2hh
ciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9icmVha19vbl9mYWls
dXJlPWYiLApAQCAtNTM4Myw3ICs1ODY2LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwg
QnJlYWtPbkZhaWx1cmVGYWxzZV9mKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9i
cmVha19vbl9mYWlsdXJlPUYuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFp
bHVyZUZhbHNlX0YpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgQnJlYWtPbkZhaWx1cmVGYWxz
ZV9GKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0t
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZT1GIiwKQEAgLTU0MDAsNyArNTg4Myw3IEBAIFRFU1RfRihJ
bml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlRmFsc2VfRikgewogCiAvLyBUZXN0cyBw
YXJzaW5nIGEgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWcgdGhhdCBoYXMgYSAidHJ1ZSIK
IC8vIGRlZmluaXRpb24uCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVy
ZVRydWUpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgQnJlYWtPbkZhaWx1cmVUcnVlKSB7CiAg
IGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfYnJl
YWtfb25fZmFpbHVyZT0xIiwKQEAgLTU0MTYsNyArNTg5OSw3IEBAIFRFU1RfRihJbml0R29vZ2xl
VGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlVHJ1ZSkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0t
Z3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucy4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIENhdGNo
RXhjZXB0aW9ucykgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBDYXRjaEV4Y2VwdGlvbnMpIHsK
ICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9j
YXRjaF9leGNlcHRpb25zIiwKQEAgLTU0MzIsNyArNTkxNSw3IEBAIFRFU1RfRihJbml0R29vZ2xl
VGVzdFRlc3QsIENhdGNoRXhjZXB0aW9ucykgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rl
c3RfZGVhdGhfdGVzdF91c2VfZm9yay4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIERlYXRo
VGVzdFVzZUZvcmspIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgRGVhdGhUZXN0VXNlRm9yaykg
ewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0
X2RlYXRoX3Rlc3RfdXNlX2ZvcmsiLApAQCAtNTQ0OSw3ICs1OTMyLDcgQEAgVEVTVF9GKEluaXRH
b29nbGVUZXN0VGVzdCwgRGVhdGhUZXN0VXNlRm9yaykgewogCiAvLyBUZXN0cyBoYXZpbmcgdGhl
IHNhbWUgZmxhZyB0d2ljZSB3aXRoIGRpZmZlcmVudCB2YWx1ZXMuICBUaGUKIC8vIGV4cGVjdGVk
IGJlaGF2aW9yIGlzIHRoYXQgdGhlIG9uZSBjb21pbmcgbGFzdCB0YWtlcyBwcmVjZWRlbmNlLgot
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRHVwbGljYXRlZEZsYWdzKSB7CitURVNUX0YoUGFy
c2VGbGFnc1Rlc3QsIER1cGxpY2F0ZWRGbGFncykgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7
CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X2ZpbHRlcj1hIiwKQEAgLTU0NjYsNyArNTk0
OSw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIER1cGxpY2F0ZWRGbGFncykgewogfQog
CiAvLyBUZXN0cyBoYXZpbmcgYW4gdW5yZWNvZ25pemVkIGZsYWcgb24gdGhlIGNvbW1hbmQgbGlu
ZS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFVucmVjb2duaXplZEZsYWcpIHsKK1RFU1Rf
RihQYXJzZUZsYWdzVGVzdCwgVW5yZWNvZ25pemVkRmxhZykgewogICBjb25zdCBjaGFyKiBhcmd2
W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUiLApA
QCAtNTQ4OCw3ICs1OTcxLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgVW5yZWNvZ25p
emVkRmxhZykgewogfQogCiAvLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxh
ZwotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzRmxhZykgeworVEVTVF9GKFBh
cnNlRmxhZ3NUZXN0LCBMaXN0VGVzdHNGbGFnKSB7CiAgICAgY29uc3QgY2hhciogYXJndltdID0g
ewogICAgICAgImZvby5leGUiLAogICAgICAgIi0tZ3Rlc3RfbGlzdF90ZXN0cyIsCkBAIC01NTA0
LDcgKzU5ODcsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0VGVzdHNGbGFnKSB7
CiB9CiAKIC8vIFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnIHdpdGggYSAi
dHJ1ZSIgdmFsdWUKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIExpc3RUZXN0c1RydWUpIHsK
K1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgTGlzdFRlc3RzVHJ1ZSkgewogICAgIGNvbnN0IGNoYXIq
IGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICItLWd0ZXN0X2xpc3RfdGVzdHM9
MSIsCkBAIC01NTIwLDcgKzYwMDMsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0
VGVzdHNUcnVlKSB7CiB9CiAKIC8vIFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3RfbGlzdF90ZXN0cyBm
bGFnIHdpdGggYSAiZmFsc2UiIHZhbHVlCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0
VGVzdHNGYWxzZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBMaXN0VGVzdHNGYWxzZSkgewog
ICAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICItLWd0
ZXN0X2xpc3RfdGVzdHM9MCIsCkBAIC01NTM2LDcgKzYwMTksNyBAQCBURVNUX0YoSW5pdEdvb2ds
ZVRlc3RUZXN0LCBMaXN0VGVzdHNGYWxzZSkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rl
c3RfbGlzdF90ZXN0cz1mLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzRmFs
c2VfZikgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBMaXN0VGVzdHNGYWxzZV9mKSB7CiAgIGNv
bnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfbGlzdF90
ZXN0cz1mIiwKQEAgLTU1NTIsNyArNjAzNSw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3Qs
IExpc3RUZXN0c0ZhbHNlX2YpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2xpc3Rf
dGVzdHM9Ri4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIExpc3RUZXN0c0ZhbHNlX0YpIHsK
K1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgTGlzdFRlc3RzRmFsc2VfRikgewogICBjb25zdCBjaGFy
KiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X2xpc3RfdGVzdHM9RiIs
CkBAIC01NTY4LDcgKzYwNTEsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0VGVz
dHNGYWxzZV9GKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9vdXRwdXQgKGludmFs
aWQpLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgT3V0cHV0RW1wdHkpIHsKK1RFU1RfRihQ
YXJzZUZsYWdzVGVzdCwgT3V0cHV0RW1wdHkpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewog
ICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9vdXRwdXQiLApAQCAtNTU4NSw3ICs2MDY4LDcg
QEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgT3V0cHV0RW1wdHkpIHsKIH0KIAogLy8gVGVz
dHMgcGFyc2luZyAtLWd0ZXN0X291dHB1dD14bWwKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3Qs
IE91dHB1dFhtbCkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBPdXRwdXRYbWwpIHsKICAgY29u
c3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9vdXRwdXQ9
eG1sIiwKQEAgLTU2MDEsNyArNjA4NCw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91
dHB1dFhtbCkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3Rfb3V0cHV0PXhtbDpmaWxl
Ci1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBPdXRwdXRYbWxGaWxlKSB7CitURVNUX0YoUGFy
c2VGbGFnc1Rlc3QsIE91dHB1dFhtbEZpbGUpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewog
ICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9vdXRwdXQ9eG1sOmZpbGUiLApAQCAtNTYxNyw3
ICs2MTAwLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgT3V0cHV0WG1sRmlsZSkgewog
fQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3Rfb3V0cHV0PXhtbDpkaXJlY3RvcnkvcGF0aC8K
LVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91dHB1dFhtbERpcmVjdG9yeSkgeworVEVTVF9G
KFBhcnNlRmxhZ3NUZXN0LCBPdXRwdXRYbWxEaXJlY3RvcnkpIHsKICAgY29uc3QgY2hhciogYXJn
dltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9vdXRwdXQ9eG1sOmRpcmVjdG9y
eS9wYXRoLyIsCkBAIC01NjM0LDcgKzYxMTcsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0
LCBPdXRwdXRYbWxEaXJlY3RvcnkpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9w
cmludF90aW1lIGZsYWcKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZsYWcp
IHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgUHJpbnRUaW1lRmxhZykgewogICAgIGNvbnN0IGNo
YXIqIGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICItLWd0ZXN0X3ByaW50X3Rp
bWUiLApAQCAtNTY1MCw3ICs2MTMzLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUHJp
bnRUaW1lRmxhZykgewogfQogCiAvLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X3ByaW50X3RpbWUg
ZmxhZyB3aXRoIGEgInRydWUiIHZhbHVlCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBQcmlu
dFRpbWVUcnVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFByaW50VGltZVRydWUpIHsKICAg
ICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAiZm9vLmV4ZSIsCiAgICAgICAiLS1ndGVz
dF9wcmludF90aW1lPTEiLApAQCAtNTY2Niw3ICs2MTQ5LDcgQEAgVEVTVF9GKEluaXRHb29nbGVU
ZXN0VGVzdCwgUHJpbnRUaW1lVHJ1ZSkgewogfQogCiAvLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0
X3ByaW50X3RpbWUgZmxhZyB3aXRoIGEgImZhbHNlIiB2YWx1ZQotVEVTVF9GKEluaXRHb29nbGVU
ZXN0VGVzdCwgUHJpbnRUaW1lRmFsc2UpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgUHJpbnRU
aW1lRmFsc2UpIHsKICAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAiZm9vLmV4ZSIs
CiAgICAgICAiLS1ndGVzdF9wcmludF90aW1lPTAiLApAQCAtNTY4Miw3ICs2MTY1LDcgQEAgVEVT
VF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lRmFsc2UpIHsKIH0KIAogLy8gVGVzdHMg
cGFyc2luZyAtLWd0ZXN0X3ByaW50X3RpbWU9Zi4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3Qs
IFByaW50VGltZUZhbHNlX2YpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgUHJpbnRUaW1lRmFs
c2VfZikgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICIt
LWd0ZXN0X3ByaW50X3RpbWU9ZiIsCkBAIC01Njk4LDcgKzYxODEsNyBAQCBURVNUX0YoSW5pdEdv
b2dsZVRlc3RUZXN0LCBQcmludFRpbWVGYWxzZV9mKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcg
LS1ndGVzdF9wcmludF90aW1lPUYuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBQcmludFRp
bWVGYWxzZV9GKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFByaW50VGltZUZhbHNlX0YpIHsK
ICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9w
cmludF90aW1lPUYiLApAQCAtNTcxNCw3ICs2MTk3LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0
VGVzdCwgUHJpbnRUaW1lRmFsc2VfRikgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3Rf
cmFuZG9tX3NlZWQ9bnVtYmVyCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBSYW5kb21TZWVk
KSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFJhbmRvbVNlZWQpIHsKICAgY29uc3QgY2hhciog
YXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9yYW5kb21fc2VlZD0xMDAw
IiwKQEAgLTU3MzAsNyArNjIxMyw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFJhbmRv
bVNlZWQpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X3JlcGVhdD1udW1iZXIKLVRF
U1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFJlcGVhdCkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0
LCBSZXBlYXQpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAg
ICAiLS1ndGVzdF9yZXBlYXQ9MTAwMCIsCkBAIC01NzQ2LDcgKzYyMjksNyBAQCBURVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBSZXBlYXQpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5nIGEgLS1ndGVz
dF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0
LCBBbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgQWxz
b1J1bkRpc2FibGVkVGVzdHNGbGFnKSB7CiAgICAgY29uc3QgY2hhciogYXJndltdID0gewogICAg
ICAgImZvby5leGUiLAogICAgICAgIi0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMiLApA
QCAtNTc2Myw3ICs2MjQ2LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQWxzb1J1bkRp
c2FibGVkVGVzdHNGbGFnKSB7CiB9CiAKIC8vIFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3RfYWxzb19y
dW5fZGlzYWJsZWRfdGVzdHMgZmxhZyB3aXRoIGEgInRydWUiIHZhbHVlCi1URVNUX0YoSW5pdEdv
b2dsZVRlc3RUZXN0LCBBbHNvUnVuRGlzYWJsZWRUZXN0c1RydWUpIHsKK1RFU1RfRihQYXJzZUZs
YWdzVGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNUcnVlKSB7CiAgICAgY29uc3QgY2hhciogYXJn
dltdID0gewogICAgICAgImZvby5leGUiLAogICAgICAgIi0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJs
ZWRfdGVzdHM9MSIsCkBAIC01NzgwLDcgKzYyNjMsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RU
ZXN0LCBBbHNvUnVuRGlzYWJsZWRUZXN0c1RydWUpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5nIGEg
LS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnIHdpdGggYSAiZmFsc2UiIHZhbHVl
Ci1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBBbHNvUnVuRGlzYWJsZWRUZXN0c0ZhbHNlKSB7
CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzRmFsc2UpIHsKICAg
ICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAiZm9vLmV4ZSIsCiAgICAgICAiLS1ndGVz
dF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cz0wIiwKQEAgLTU3OTcsNyArNjI4MCw3IEBAIFRFU1Rf
RihJbml0R29vZ2xlVGVzdFRlc3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzRmFsc2UpIHsKIH0KIAog
Ly8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X3NodWZmbGUuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RU
ZXN0LCBTaHVmZmxlV2l0aG91dFZhbHVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFNodWZm
bGVXaXRob3V0VmFsdWUpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhl
IiwKICAgICAiLS1ndGVzdF9zaHVmZmxlIiwKQEAgLTU4MTMsNyArNjI5Niw3IEBAIFRFU1RfRihJ
bml0R29vZ2xlVGVzdFRlc3QsIFNodWZmbGVXaXRob3V0VmFsdWUpIHsKIH0KIAogLy8gVGVzdHMg
cGFyc2luZyAtLWd0ZXN0X3NodWZmbGU9MC4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFNo
dWZmbGVGYWxzZV8wKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFNodWZmbGVGYWxzZV8wKSB7
CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rf
c2h1ZmZsZT0wIiwKQEAgLTU4MjgsOSArNjMxMSw4IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRl
c3QsIFNodWZmbGVGYWxzZV8wKSB7CiAgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwg
YXJndjIsIEZsYWdzOjpTaHVmZmxlKGZhbHNlKSwgZmFsc2UpOwogfQogCi0vLyBUZXN0cyBwYXJz
aW5nIGEgLS1ndGVzdF9zaHVmZmxlIGZsYWcgdGhhdCBoYXMgYSAidHJ1ZSIKLS8vIGRlZmluaXRp
b24uCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBTaHVmZmxlVHJ1ZSkgeworLy8gVGVzdHMg
cGFyc2luZyBhIC0tZ3Rlc3Rfc2h1ZmZsZSBmbGFnIHRoYXQgaGFzIGEgInRydWUiIGRlZmluaXRp
b24uCitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFNodWZmbGVUcnVlKSB7CiAgIGNvbnN0IGNoYXIq
IGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfc2h1ZmZsZT0xIiwKQEAg
LTU4NDYsNyArNjMyOCw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFNodWZmbGVUcnVl
KSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9zdGFja190cmFjZV9kZXB0aD1udW1i
ZXIuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBTdGFja1RyYWNlRGVwdGgpIHsKK1RFU1Rf
RihQYXJzZUZsYWdzVGVzdCwgU3RhY2tUcmFjZURlcHRoKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3Zb
XSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfc3RhY2tfdHJhY2VfZGVwdGg9NSIs
CkBAIC01ODYxLDggKzYzNDMsMjQgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU3RhY2tU
cmFjZURlcHRoKSB7CiAgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZs
YWdzOjpTdGFja1RyYWNlRGVwdGgoNSksIGZhbHNlKTsKIH0KIAorVEVTVF9GKFBhcnNlRmxhZ3NU
ZXN0LCBTdHJlYW1SZXN1bHRUbykgeworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgImZv
by5leGUiLAorICAgICItLWd0ZXN0X3N0cmVhbV9yZXN1bHRfdG89bG9jYWxob3N0OjEyMzQiLAor
ICAgIE5VTEwKKyAgfTsKKworICBjb25zdCBjaGFyKiBhcmd2MltdID0geworICAgICJmb28uZXhl
IiwKKyAgICBOVUxMCisgIH07CisKKyAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXygKKyAgICAg
IGFyZ3YsIGFyZ3YyLCBGbGFnczo6U3RyZWFtUmVzdWx0VG8oImxvY2FsaG9zdDoxMjM0IiksIGZh
bHNlKTsKK30KKwogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmUuCi1U
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBUaHJvd09uRmFpbHVyZVdpdGhvdXRWYWx1ZSkgewor
VEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBUaHJvd09uRmFpbHVyZVdpdGhvdXRWYWx1ZSkgewogICBj
b25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X3Rocm93
X29uX2ZhaWx1cmUiLApAQCAtNTg3OCw3ICs2Mzc2LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0
VGVzdCwgVGhyb3dPbkZhaWx1cmVXaXRob3V0VmFsdWUpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2lu
ZyAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmU9MC4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3Qs
IFRocm93T25GYWlsdXJlRmFsc2VfMCkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBUaHJvd09u
RmFpbHVyZUZhbHNlXzApIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhl
IiwKICAgICAiLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlPTAiLApAQCAtNTg5NSw3ICs2MzkzLDcg
QEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgVGhyb3dPbkZhaWx1cmVGYWxzZV8wKSB7CiAK
IC8vIFRlc3RzIHBhcnNpbmcgYSAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmUgZmxhZyB0aGF0IGhh
cyBhICJ0cnVlIgogLy8gZGVmaW5pdGlvbi4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFRo
cm93T25GYWlsdXJlVHJ1ZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBUaHJvd09uRmFpbHVy
ZVRydWUpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAi
LS1ndGVzdF90aHJvd19vbl9mYWlsdXJlPTEiLApAQCAtNTkxMCw5ICs2NDA4LDkgQEAgVEVTVF9G
KEluaXRHb29nbGVUZXN0VGVzdCwgVGhyb3dPbkZhaWx1cmVUcnVlKSB7CiAgIEdURVNUX1RFU1Rf
UEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpUaHJvd09uRmFpbHVyZSh0cnVlKSwg
ZmFsc2UpOwogfQogCi0jaWYgR1RFU1RfT1NfV0lORE9XUworIyBpZiBHVEVTVF9PU19XSU5ET1dT
CiAvLyBUZXN0cyBwYXJzaW5nIHdpZGUgc3RyaW5ncy4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRl
c3QsIFdpZGVTdHJpbmdzKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFdpZGVTdHJpbmdzKSB7
CiAgIGNvbnN0IHdjaGFyX3QqIGFyZ3ZbXSA9IHsKICAgICBMImZvby5leGUiLAogICAgIEwiLS1n
dGVzdF9maWx0ZXI9Rm9vKiIsCkBAIC01OTM1LDcgKzY0MzMsMTA4IEBAIFRFU1RfRihJbml0R29v
Z2xlVGVzdFRlc3QsIFdpZGVTdHJpbmdzKSB7CiAKICAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdT
Xyhhcmd2LCBhcmd2MiwgZXhwZWN0ZWRfZmxhZ3MsIGZhbHNlKTsKIH0KLSNlbmRpZiAgLy8gR1RF
U1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjaWYgR1RFU1Rf
VVNFX09XTl9GTEFHRklMRV9GTEFHXworY2xhc3MgRmxhZ2ZpbGVUZXN0IDogcHVibGljIFBhcnNl
RmxhZ3NUZXN0IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBQYXJz
ZUZsYWdzVGVzdDo6U2V0VXAoKTsKKworICAgIHRlc3RkYXRhX3BhdGhfLlNldChpbnRlcm5hbDo6
RmlsZVBhdGgoCisgICAgICAgIHRlc3Rpbmc6OlRlbXBEaXIoKSArIGludGVybmFsOjpHZXRDdXJy
ZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmcoKSArCisgICAgICAgICJfZmxhZ2ZpbGVfdGVzdCIp
KTsKKyAgICB0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhfLmNf
c3RyKCkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RkYXRhX3BhdGhfLkNyZWF0ZUZvbGRlcigpKTsK
KyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICB0ZXN0aW5nOjppbnRlcm5h
bDo6cG9zaXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhfLmNfc3RyKCkpOworICAgIFBhcnNlRmxhZ3NU
ZXN0OjpUZWFyRG93bigpOworICB9CisKKyAgaW50ZXJuYWw6OkZpbGVQYXRoIENyZWF0ZUZsYWdm
aWxlKGNvbnN0IGNoYXIqIGNvbnRlbnRzKSB7CisgICAgaW50ZXJuYWw6OkZpbGVQYXRoIGZpbGVf
cGF0aChpbnRlcm5hbDo6RmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5hbWUoCisgICAgICAg
IHRlc3RkYXRhX3BhdGhfLCBpbnRlcm5hbDo6RmlsZVBhdGgoInVuaXF1ZSIpLCAidHh0IikpOwor
ICAgIEZJTEUqIGYgPSB0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OkZPcGVuKGZpbGVfcGF0aC5j
X3N0cigpLCAidyIpOworICAgIGZwcmludGYoZiwgIiVzIiwgY29udGVudHMpOworICAgIGZjbG9z
ZShmKTsKKyAgICByZXR1cm4gZmlsZV9wYXRoOworICB9CisKKyBwcml2YXRlOgorICBpbnRlcm5h
bDo6RmlsZVBhdGggdGVzdGRhdGFfcGF0aF87Cit9OworCisvLyBUZXN0cyBhbiBlbXB0eSBmbGFn
ZmlsZS4KK1RFU1RfRihGbGFnZmlsZVRlc3QsIEVtcHR5KSB7CisgIGludGVybmFsOjpGaWxlUGF0
aCBmbGFnZmlsZV9wYXRoKENyZWF0ZUZsYWdmaWxlKCIiKSk7CisgIHN0ZDo6c3RyaW5nIGZsYWdm
aWxlX2ZsYWcgPQorICAgICAgc3RkOjpzdHJpbmcoIi0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImZs
YWdmaWxlPSIpICsgZmxhZ2ZpbGVfcGF0aC5jX3N0cigpOworCisgIGNvbnN0IGNoYXIqIGFyZ3Zb
XSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgZmxhZ2ZpbGVfZmxhZy5jX3N0cigpLAorICAgIE5V
TEwKKyAgfTsKKworICBjb25zdCBjaGFyKiBhcmd2MltdID0geworICAgICJmb28uZXhlIiwKKyAg
ICBOVUxMCisgIH07CisKKyAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2Miwg
RmxhZ3MoKSwgZmFsc2UpOworfQorCisvLyBUZXN0cyBwYXNzaW5nIGEgbm9uLWVtcHR5IC0tZ3Rl
c3RfZmlsdGVyIGZsYWcgdmlhIC0tZ3Rlc3RfZmxhZ2ZpbGUuCitURVNUX0YoRmxhZ2ZpbGVUZXN0
LCBGaWx0ZXJOb25FbXB0eSkgeworICBpbnRlcm5hbDo6RmlsZVBhdGggZmxhZ2ZpbGVfcGF0aChD
cmVhdGVGbGFnZmlsZSgKKyAgICAgICItLSIgIEdURVNUX0ZMQUdfUFJFRklYXyAgImZpbHRlcj1h
YmMiKSk7CisgIHN0ZDo6c3RyaW5nIGZsYWdmaWxlX2ZsYWcgPQorICAgICAgc3RkOjpzdHJpbmco
Ii0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImZsYWdmaWxlPSIpICsgZmxhZ2ZpbGVfcGF0aC5jX3N0
cigpOworCisgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgZmxh
Z2ZpbGVfZmxhZy5jX3N0cigpLAorICAgIE5VTEwKKyAgfTsKKworICBjb25zdCBjaGFyKiBhcmd2
MltdID0geworICAgICJmb28uZXhlIiwKKyAgICBOVUxMCisgIH07CisKKyAgR1RFU1RfVEVTVF9Q
QVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OkZpbHRlcigiYWJjIiksIGZhbHNlKTsK
K30KKworLy8gVGVzdHMgcGFzc2luZyBzZXZlcmFsIGZsYWdzIHZpYSAtLWd0ZXN0X2ZsYWdmaWxl
LgorVEVTVF9GKEZsYWdmaWxlVGVzdCwgU2V2ZXJhbEZsYWdzKSB7CisgIGludGVybmFsOjpGaWxl
UGF0aCBmbGFnZmlsZV9wYXRoKENyZWF0ZUZsYWdmaWxlKAorICAgICAgIi0tIiAgR1RFU1RfRkxB
R19QUkVGSVhfICAiZmlsdGVyPWFiY1xuIgorICAgICAgIi0tIiAgR1RFU1RfRkxBR19QUkVGSVhf
ICAiYnJlYWtfb25fZmFpbHVyZVxuIgorICAgICAgIi0tIiAgR1RFU1RfRkxBR19QUkVGSVhfICAi
bGlzdF90ZXN0cyIpKTsKKyAgc3RkOjpzdHJpbmcgZmxhZ2ZpbGVfZmxhZyA9CisgICAgICBzdGQ6
OnN0cmluZygiLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiZmxhZ2ZpbGU9IikgKyBmbGFnZmlsZV9w
YXRoLmNfc3RyKCk7CisKKyAgY29uc3QgY2hhciogYXJndltdID0geworICAgICJmb28uZXhlIiwK
KyAgICBmbGFnZmlsZV9mbGFnLmNfc3RyKCksCisgICAgTlVMTAorICB9OworCisgIGNvbnN0IGNo
YXIqIGFyZ3YyW10gPSB7CisgICAgImZvby5leGUiLAorICAgIE5VTEwKKyAgfTsKKworICBGbGFn
cyBleHBlY3RlZF9mbGFnczsKKyAgZXhwZWN0ZWRfZmxhZ3MuYnJlYWtfb25fZmFpbHVyZSA9IHRy
dWU7CisgIGV4cGVjdGVkX2ZsYWdzLmZpbHRlciA9ICJhYmMiOworICBleHBlY3RlZF9mbGFncy5s
aXN0X3Rlc3RzID0gdHJ1ZTsKKworICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFy
Z3YyLCBleHBlY3RlZF9mbGFncywgZmFsc2UpOworfQorI2VuZGlmICAvLyBHVEVTVF9VU0VfT1dO
X0ZMQUdGSUxFX0ZMQUdfCiAKIC8vIFRlc3RzIGN1cnJlbnRfdGVzdF9pbmZvKCkgaW4gVW5pdFRl
c3QuCiBjbGFzcyBDdXJyZW50VGVzdEluZm9UZXN0IDogcHVibGljIFRlc3QgewpAQCAtNTk5MCw2
ICs2NTg5LDcgQEAgVEVTVF9GKEN1cnJlbnRUZXN0SW5mb1Rlc3QsIFdvcmtzRm9yU2Vjb25kVGVz
dEluQVRlc3RDYXNlKSB7CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAKKwogLy8gVGhlc2Ug
dHdvIGxpbmVzIHRlc3QgdGhhdCB3ZSBjYW4gZGVmaW5lIHRlc3RzIGluIGEgbmFtZXNwYWNlIHRo
YXQKIC8vIGhhcyB0aGUgbmFtZSAidGVzdGluZyIgYW5kIGlzIG5lc3RlZCBpbiBhbm90aGVyIG5h
bWVzcGFjZS4KIG5hbWVzcGFjZSBteV9uYW1lc3BhY2UgewpAQCAtNjA0OCw3ICs2NjQ4LDcgQEAg
VEVTVChTdHJlYW1pbmdBc3NlcnRpb25zVGVzdCwgVW5jb25kaXRpb25hbCkgewogCiAjaWZkZWYg
X19CT1JMQU5EQ19fCiAvLyBTaWxlbmNlcyB3YXJuaW5nczogIkNvbmRpdGlvbiBpcyBhbHdheXMg
dHJ1ZSIsICJVbnJlYWNoYWJsZSBjb2RlIgotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXct
cmNoCisjIHByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCiAjZW5kaWYKIAogVEVTVChT
dHJlYW1pbmdBc3NlcnRpb25zVGVzdCwgVHJ1dGgpIHsKQEAgLTYwNzAsOCArNjY3MCw4IEBAIFRF
U1QoU3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIFRydXRoMikgewogfQogCiAjaWZkZWYgX19CT1JM
QU5EQ19fCi0vLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2aW91cyAiI3ByYWdtYSBvcHRp
b24gcHVzaCIgc3VwcmVzc2VkIHRoZW0KLSNwcmFnbWEgb3B0aW9uIHBvcAorLy8gUmVzdG9yZXMg
d2FybmluZ3MgYWZ0ZXIgcHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHByZXNzZWQg
dGhlbQorIyBwcmFnbWEgb3B0aW9uIHBvcAogI2VuZGlmCiAKIFRFU1QoU3RyZWFtaW5nQXNzZXJ0
aW9uc1Rlc3QsIEludGVnZXJFcXVhbHMpIHsKQEAgLTYyNjQsMTUgKzY4NjQsNDAgQEAgVEVTVChD
b2xvcmVkT3V0cHV0VGVzdCwgVXNlc0NvbG9yc1doZW5UZXJtU3VwcG9ydHNDb2xvcnMpIHsKICAg
U2V0RW52KCJURVJNIiwgInh0ZXJtLWNvbG9yIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4K
ICAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZ
LgogCisgIFNldEVudigiVEVSTSIsICJ4dGVybS0yNTZjb2xvciIpOyAgLy8gVEVSTSBzdXBwb3J0
cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91
dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAic2NyZWVuIik7ICAvLyBURVJNIHN1cHBv
cnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rk
b3V0IGlzIGEgVFRZLgorCisgIFNldEVudigiVEVSTSIsICJzY3JlZW4tMjU2Y29sb3IiKTsgIC8v
IFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVl
KSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInRtdXgiKTsgIC8v
IFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVl
KSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInRtdXgtMjU2Y29s
b3IiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VD
b2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInJ4
dnQtdW5pY29kZSIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNo
b3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRF
Uk0iLCAicnh2dC11bmljb2RlLTI1NmNvbG9yIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4K
KyAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZ
LgorCiAgIFNldEVudigiVEVSTSIsICJsaW51eCIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMu
CiAgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRU
WS4KKworICBTZXRFbnYoIlRFUk0iLCAiY3lnd2luIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9y
cy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEg
VFRZLgogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiB9CiAKIC8vIFZlcmlmaWVzIHRoYXQg
U3RhdGljQXNzZXJ0VHlwZUVxIHdvcmtzIGluIGEgbmFtZXNwYWNlIHNjb3BlLgogCi1zdGF0aWMg
Ym9vbCBkdW1teTEgPSBTdGF0aWNBc3NlcnRUeXBlRXE8Ym9vbCwgYm9vbD4oKTsKLXN0YXRpYyBi
b29sIGR1bW15MiA9IFN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCBpbnQsIGNvbnN0IGludD4oKTsK
K3N0YXRpYyBib29sIGR1bW15MSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9IFN0YXRpY0Fzc2Vy
dFR5cGVFcTxib29sLCBib29sPigpOworc3RhdGljIGJvb2wgZHVtbXkyIEdURVNUX0FUVFJJQlVU
RV9VTlVTRURfID0KKyAgICBTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgaW50LCBjb25zdCBpbnQ+
KCk7CiAKIC8vIFZlcmlmaWVzIHRoYXQgU3RhdGljQXNzZXJ0VHlwZUVxIHdvcmtzIGluIGEgY2xh
c3MuCiAKQEAgLTYyOTUsMTQgKzY5MjAsNiBAQCBURVNUKFN0YXRpY0Fzc2VydFR5cGVFcVRlc3Qs
IENvbXBpbGVzRm9yRXF1YWxUeXBlcykgewogICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50KiwgSW50
QWxpYXMqPigpOwogfQogCi1URVNUKEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3BUZXN0
LCBSZXR1cm5zVGhlU3RhY2tUcmFjZSkgewotICB0ZXN0aW5nOjpVbml0VGVzdCogY29uc3QgdW5p
dF90ZXN0ID0gdGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCk7Ci0KLSAgLy8gV2UgZG9u
J3QgaGF2ZSBhIHN0YWNrIHdhbGtlciBpbiBHb29nbGUgVGVzdCB5ZXQuCi0gIEVYUEVDVF9TVFJF
USgiIiwgR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCh1bml0X3Rlc3QsIDApLmNfc3Ry
KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3Ao
dW5pdF90ZXN0LCAxKS5jX3N0cigpKTsKLX0KLQogVEVTVChIYXNOb25mYXRhbEZhaWx1cmVUZXN0
LCBSZXR1cm5zRmFsc2VXaGVuVGhlcmVJc05vRmFpbHVyZSkgewogICBFWFBFQ1RfRkFMU0UoSGFz
Tm9uZmF0YWxGYWlsdXJlKCkpOwogfQpAQCAtNjQ2Niw3ICs3MDgzLDcgQEAgVEVTVChUZXN0RXZl
bnRMaXN0ZW5lcnNUZXN0LCBBcHBlbmQpIHsKIC8vIG9yZGVyLgogY2xhc3MgU2VxdWVuY2VUZXN0
aW5nTGlzdGVuZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CiAgcHVibGljOgot
ICBTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lcihzdGQ6OnZlY3RvcjxTdHJpbmc+KiB2ZWN0b3IsIGNv
bnN0IGNoYXIqIGlkKQorICBTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lcihzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4qIHZlY3RvciwgY29uc3QgY2hhciogaWQpCiAgICAgICA6IHZlY3Rvcl8odmVjdG9y
KSwgaWRfKGlkKSB7fQogCiAgcHJvdGVjdGVkOgpAQCAtNjQ4OSwyMCArNzEwNiwyMCBAQCBjbGFz
cyBTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVy
IHsKICAgfQogCiAgcHJpdmF0ZToKLSAgU3RyaW5nIEdldEV2ZW50RGVzY3JpcHRpb24oY29uc3Qg
Y2hhciogbWV0aG9kKSB7CisgIHN0ZDo6c3RyaW5nIEdldEV2ZW50RGVzY3JpcHRpb24oY29uc3Qg
Y2hhciogbWV0aG9kKSB7CiAgICAgTWVzc2FnZSBtZXNzYWdlOwogICAgIG1lc3NhZ2UgPDwgaWRf
IDw8ICIuIiA8PCBtZXRob2Q7CiAgICAgcmV0dXJuIG1lc3NhZ2UuR2V0U3RyaW5nKCk7CiAgIH0K
IAotICBzdGQ6OnZlY3RvcjxTdHJpbmc+KiB2ZWN0b3JfOworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4qIHZlY3Rvcl87CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGlkXzsKIAogICBHVEVTVF9ESVNB
TExPV19DT1BZX0FORF9BU1NJR05fKFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyKTsKIH07CiAKIFRF
U1QoRXZlbnRMaXN0ZW5lclRlc3QsIEFwcGVuZEtlZXBzT3JkZXIpIHsKLSAgc3RkOjp2ZWN0b3I8
U3RyaW5nPiB2ZWM7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2ZWM7CiAgIFRlc3RFdmVu
dExpc3RlbmVycyBsaXN0ZW5lcnM7CiAgIGxpc3RlbmVycy5BcHBlbmQobmV3IFNlcXVlbmNlVGVz
dGluZ0xpc3RlbmVyKCZ2ZWMsICIxc3QiKSk7CiAgIGxpc3RlbmVycy5BcHBlbmQobmV3IFNlcXVl
bmNlVGVzdGluZ0xpc3RlbmVyKCZ2ZWMsICIybmQiKSk7CkBAIC02NzE1LDQgKzczMzIsNDY0IEBA
IEdURVNUX1RFU1QoQWx0ZXJuYXRpdmVOYW1lVGVzdCwgV29ya3MpIHsgIC8vIEdURVNUX1RFU1Qg
aXMgdGhlIHNhbWUgYXMgVEVTVC4KICAgLy8gR1RFU1RfRkFJTCBpcyB0aGUgc2FtZSBhcyBGQUlM
LgogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9GQUlMKCkgPDwgIkFuIGV4cGVjdGVkIGZh
aWx1cmUiLAogICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOwor
CisgIC8vIEdURVNUX0FTU0VSVF9YWSBpcyB0aGUgc2FtZSBhcyBBU1NFUlRfWFkuCisKKyAgR1RF
U1RfQVNTRVJUX0VRKDAsIDApOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRf
RVEoMCwgMSkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAg
ICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9B
U1NFUlRfRVEoMSwgMCkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAg
ICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworCisgIEdURVNUX0FTU0VSVF9ORSgwLCAx
KTsKKyAgR1RFU1RfQVNTRVJUX05FKDEsIDApOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVT
VF9BU1NFUlRfTkUoMCwgMCkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAg
ICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworCisgIEdURVNUX0FTU0VSVF9MRSgw
LCAwKTsKKyAgR1RFU1RfQVNTRVJUX0xFKDAsIDEpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShH
VEVTVF9BU1NFUlRfTEUoMSwgMCkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAg
ICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworCisgIEdURVNUX0FTU0VSVF9M
VCgwLCAxKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0xUKDAsIDApIDw8
ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVj
dGVkIGZhaWx1cmUiKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0xUKDEs
IDApIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFu
IGV4cGVjdGVkIGZhaWx1cmUiKTsKKworICBHVEVTVF9BU1NFUlRfR0UoMCwgMCk7CisgIEdURVNU
X0FTU0VSVF9HRSgxLCAwKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0dF
KDAsIDEpIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKworICBHVEVTVF9BU1NFUlRfR1QoMSwgMCk7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKEdURVNUX0FTU0VSVF9HVCgwLCAxKSA8PCAiQW4gZXhwZWN0ZWQg
ZmFpbHVyZSIsCisgICAgICAgICAgICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7
CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdURVNUX0FTU0VSVF9HVCgxLCAxKSA8PCAiQW4gZXhw
ZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAgICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWls
dXJlIik7Cit9CisKKy8vIFRlc3RzIGZvciBpbnRlcm5hbCB1dGlsaXRpZXMgbmVjZXNzYXJ5IGZv
ciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgdW5pdmVyc2FsCisvLyBwcmludGluZy4KKy8vIEZJWE1F
OiBGaW5kIGEgYmV0dGVyIGhvbWUgZm9yIHRoZW0uCisKK2NsYXNzIENvbnZlcnNpb25IZWxwZXJC
YXNlIHt9OworY2xhc3MgQ29udmVyc2lvbkhlbHBlckRlcml2ZWQgOiBwdWJsaWMgQ29udmVyc2lv
bkhlbHBlckJhc2Uge307CisKKy8vIFRlc3RzIHRoYXQgSXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2
YWx1ZSBpcyBhIGNvbXBpbGUtdGltZSBjb25zdGFudC4KK1RFU1QoSXNBUHJvdG9jb2xNZXNzYWdl
VGVzdCwgVmFsdWVJc0NvbXBpbGVUaW1lQ29uc3RhbnQpIHsKKyAgR1RFU1RfQ09NUElMRV9BU1NF
UlRfKElzQVByb3RvY29sTWVzc2FnZTxQcm90b2NvbE1lc3NhZ2U+Ojp2YWx1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0X3RydWUpOworICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oIUlz
QVByb3RvY29sTWVzc2FnZTxpbnQ+Ojp2YWx1ZSwgY29uc3RfZmFsc2UpOworfQorCisvLyBUZXN0
cyB0aGF0IElzQVByb3RvY29sTWVzc2FnZTxUPjo6dmFsdWUgaXMgdHJ1ZSB3aGVuIFQgaXMKKy8v
IHByb3RvMjo6TWVzc2FnZSBvciBhIHN1Yi1jbGFzcyBvZiBpdC4KK1RFU1QoSXNBUHJvdG9jb2xN
ZXNzYWdlVGVzdCwgVmFsdWVJc1RydWVXaGVuVHlwZUlzQVByb3RvY29sTWVzc2FnZSkgeworICBF
WFBFQ1RfVFJVRShJc0FQcm90b2NvbE1lc3NhZ2U8IDo6cHJvdG8yOjpNZXNzYWdlPjo6dmFsdWUp
OworICBFWFBFQ1RfVFJVRShJc0FQcm90b2NvbE1lc3NhZ2U8UHJvdG9jb2xNZXNzYWdlPjo6dmFs
dWUpOworfQorCisvLyBUZXN0cyB0aGF0IElzQVByb3RvY29sTWVzc2FnZTxUPjo6dmFsdWUgaXMg
ZmFsc2Ugd2hlbiBUIGlzIG5laXRoZXIKKy8vIFByb3RvY29sTWVzc2FnZSBub3IgYSBzdWItY2xh
c3Mgb2YgaXQuCitURVNUKElzQVByb3RvY29sTWVzc2FnZVRlc3QsIFZhbHVlSXNGYWxzZVdoZW5U
eXBlSXNOb3RBUHJvdG9jb2xNZXNzYWdlKSB7CisgIEVYUEVDVF9GQUxTRShJc0FQcm90b2NvbE1l
c3NhZ2U8aW50Pjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoSXNBUHJvdG9jb2xNZXNzYWdlPGNv
bnN0IENvbnZlcnNpb25IZWxwZXJCYXNlPjo6dmFsdWUpOworfQorCisvLyBUZXN0cyB0aGF0IENv
bXBpbGVBc3NlcnRUeXBlc0VxdWFsIGNvbXBpbGVzIHdoZW4gdGhlIHR5cGUgYXJndW1lbnRzIGFy
ZQorLy8gZXF1YWwuCitURVNUKENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsLCBDb21waWxlc1doZW5U
eXBlc0FyZUVxdWFsKSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPHZvaWQsIHZvaWQ+KCk7
CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCosIGludCo+KCk7Cit9CisKKy8vIFRlc3Rz
IHRoYXQgUmVtb3ZlUmVmZXJlbmNlIGRvZXMgbm90IGFmZmVjdCBub24tcmVmZXJlbmNlIHR5cGVz
LgorVEVTVChSZW1vdmVSZWZlcmVuY2VUZXN0LCBEb2VzTm90QWZmZWN0Tm9uUmVmZXJlbmNlVHlw
ZSkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQsIFJlbW92ZVJlZmVyZW5jZTxpbnQ+
Ojp0eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjb25zdCBjaGFyLCBSZW1vdmVS
ZWZlcmVuY2U8Y29uc3QgY2hhcj46OnR5cGU+KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUmVtb3Zl
UmVmZXJlbmNlIHJlbW92ZXMgcmVmZXJlbmNlIGZyb20gcmVmZXJlbmNlIHR5cGVzLgorVEVTVChS
ZW1vdmVSZWZlcmVuY2VUZXN0LCBSZW1vdmVzUmVmZXJlbmNlKSB7CisgIENvbXBpbGVBc3NlcnRU
eXBlc0VxdWFsPGludCwgUmVtb3ZlUmVmZXJlbmNlPGludCY+Ojp0eXBlPigpOworICBDb21waWxl
QXNzZXJ0VHlwZXNFcXVhbDxjb25zdCBjaGFyLCBSZW1vdmVSZWZlcmVuY2U8Y29uc3QgY2hhciY+
Ojp0eXBlPigpOworfQorCisvLyBUZXN0cyBHVEVTVF9SRU1PVkVfUkVGRVJFTkNFXy4KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgVGVzdEdUZXN0UmVtb3ZlUmVm
ZXJlbmNlKCkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxUMSwgR1RFU1RfUkVNT1ZFX1JF
RkVSRU5DRV8oVDIpPigpOworfQorCitURVNUKFJlbW92ZVJlZmVyZW5jZVRlc3QsIE1hY3JvVmVy
c2lvbikgeworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2U8aW50LCBpbnQ+KCk7CisgIFRlc3RH
VGVzdFJlbW92ZVJlZmVyZW5jZTxjb25zdCBjaGFyLCBjb25zdCBjaGFyJj4oKTsKK30KKworCisv
LyBUZXN0cyB0aGF0IFJlbW92ZUNvbnN0IGRvZXMgbm90IGFmZmVjdCBub24tY29uc3QgdHlwZXMu
CitURVNUKFJlbW92ZUNvbnN0VGVzdCwgRG9lc05vdEFmZmVjdE5vbkNvbnN0VHlwZSkgeworICBD
b21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQsIFJlbW92ZUNvbnN0PGludD46OnR5cGU+KCk7Cisg
IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNoYXImLCBSZW1vdmVDb25zdDxjaGFyJj46OnR5cGU+
KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUmVtb3ZlQ29uc3QgcmVtb3ZlcyBjb25zdCBmcm9tIGNv
bnN0IHR5cGVzLgorVEVTVChSZW1vdmVDb25zdFRlc3QsIFJlbW92ZXNDb25zdCkgeworICBDb21w
aWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQsIFJlbW92ZUNvbnN0PGNvbnN0IGludD46OnR5cGU+KCk7
CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNoYXJbMl0sIFJlbW92ZUNvbnN0PGNvbnN0IGNo
YXJbMl0+Ojp0eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjaGFyWzJdWzNdLCBS
ZW1vdmVDb25zdDxjb25zdCBjaGFyWzJdWzNdPjo6dHlwZT4oKTsKK30KKworLy8gVGVzdHMgR1RF
U1RfUkVNT1ZFX0NPTlNUXy4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4K
K3ZvaWQgVGVzdEdUZXN0UmVtb3ZlQ29uc3QoKSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFs
PFQxLCBHVEVTVF9SRU1PVkVfQ09OU1RfKFQyKT4oKTsKK30KKworVEVTVChSZW1vdmVDb25zdFRl
c3QsIE1hY3JvVmVyc2lvbikgeworICBUZXN0R1Rlc3RSZW1vdmVDb25zdDxpbnQsIGludD4oKTsK
KyAgVGVzdEdUZXN0UmVtb3ZlQ29uc3Q8ZG91YmxlJiwgZG91YmxlJj4oKTsKKyAgVGVzdEdUZXN0
UmVtb3ZlQ29uc3Q8Y2hhciwgY29uc3QgY2hhcj4oKTsKK30KKworLy8gVGVzdHMgR1RFU1RfUkVN
T1ZFX1JFRkVSRU5DRV9BTkRfQ09OU1RfLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyPgordm9pZCBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdCgpIHsKKyAgQ29t
cGlsZUFzc2VydFR5cGVzRXF1YWw8VDEsIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNU
XyhUMik+KCk7Cit9CisKK1RFU1QoUmVtb3ZlUmVmZXJlbmNlVG9Db25zdFRlc3QsIFdvcmtzKSB7
CisgIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0PGludCwgaW50PigpOworICBUZXN0
R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxkb3VibGUsIGRvdWJsZSY+KCk7CisgIFRlc3RH
VGVzdFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0PGNoYXIsIGNvbnN0IGNoYXI+KCk7CisgIFRlc3RH
VGVzdFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0PGNoYXIsIGNvbnN0IGNoYXImPigpOworICBUZXN0
R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxjb25zdCBjaGFyKiwgY29uc3QgY2hhcio+KCk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgQWRkUmVmZXJlbmNlIGRvZXMgbm90IGFmZmVjdCByZWZlcmVu
Y2UgdHlwZXMuCitURVNUKEFkZFJlZmVyZW5jZVRlc3QsIERvZXNOb3RBZmZlY3RSZWZlcmVuY2VU
eXBlKSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCYsIEFkZFJlZmVyZW5jZTxpbnQm
Pjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y29uc3QgY2hhciYsIEFkZFJl
ZmVyZW5jZTxjb25zdCBjaGFyJj46OnR5cGU+KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQWRkUmVm
ZXJlbmNlIGFkZHMgcmVmZXJlbmNlIHRvIG5vbi1yZWZlcmVuY2UgdHlwZXMuCitURVNUKEFkZFJl
ZmVyZW5jZVRlc3QsIEFkZHNSZWZlcmVuY2UpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8
aW50JiwgQWRkUmVmZXJlbmNlPGludD46OnR5cGU+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0Vx
dWFsPGNvbnN0IGNoYXImLCBBZGRSZWZlcmVuY2U8Y29uc3QgY2hhcj46OnR5cGU+KCk7Cit9CisK
Ky8vIFRlc3RzIEdURVNUX0FERF9SRUZFUkVOQ0VfLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEs
IHR5cGVuYW1lIFQyPgordm9pZCBUZXN0R1Rlc3RBZGRSZWZlcmVuY2UoKSB7CisgIENvbXBpbGVB
c3NlcnRUeXBlc0VxdWFsPFQxLCBHVEVTVF9BRERfUkVGRVJFTkNFXyhUMik+KCk7Cit9CisKK1RF
U1QoQWRkUmVmZXJlbmNlVGVzdCwgTWFjcm9WZXJzaW9uKSB7CisgIFRlc3RHVGVzdEFkZFJlZmVy
ZW5jZTxpbnQmLCBpbnQ+KCk7CisgIFRlc3RHVGVzdEFkZFJlZmVyZW5jZTxjb25zdCBjaGFyJiwg
Y29uc3QgY2hhciY+KCk7Cit9CisKKy8vIFRlc3RzIEdURVNUX1JFRkVSRU5DRV9UT19DT05TVF8u
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lkIFRlc3RHVGVzdFJl
ZmVyZW5jZVRvQ29uc3QoKSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBHVEVTVF9S
RUZFUkVOQ0VfVE9fQ09OU1RfKFQyKT4oKTsKK30KKworVEVTVChHVGVzdFJlZmVyZW5jZVRvQ29u
c3RUZXN0LCBXb3JrcykgeworICBUZXN0R1Rlc3RSZWZlcmVuY2VUb0NvbnN0PGNvbnN0IGNoYXIm
LCBjaGFyPigpOworICBUZXN0R1Rlc3RSZWZlcmVuY2VUb0NvbnN0PGNvbnN0IGludCYsIGNvbnN0
IGludD4oKTsKKyAgVGVzdEdUZXN0UmVmZXJlbmNlVG9Db25zdDxjb25zdCBkb3VibGUmLCBkb3Vi
bGU+KCk7CisgIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29uc3Q8Y29uc3Qgc3RkOjpzdHJpbmcmLCBj
b25zdCBzdGQ6OnN0cmluZyY+KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgSW1wbGljaXRseUNvbnZl
cnRpYmxlPFQxLCBUMj46OnZhbHVlIGlzIGEgY29tcGlsZS10aW1lIGNvbnN0YW50LgorVEVTVChJ
bXBsaWNpdGx5Q29udmVydGlibGVUZXN0LCBWYWx1ZUlzQ29tcGlsZVRpbWVDb25zdGFudCkgewor
ICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxpbnQsIGludD46
OnZhbHVlKSwgY29uc3RfdHJ1ZSk7CisgIEdURVNUX0NPTVBJTEVfQVNTRVJUXygoIUltcGxpY2l0
bHlDb252ZXJ0aWJsZTx2b2lkKiwgaW50Kj46OnZhbHVlKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0X2ZhbHNlKTsKK30KKworLy8gVGVzdHMgdGhhdCBJbXBsaWNpdGx5Q29udmVydGli
bGU8VDEsIFQyPjo6dmFsdWUgaXMgdHJ1ZSB3aGVuIFQxIGNhbgorLy8gYmUgaW1wbGljaXRseSBj
b252ZXJ0ZWQgdG8gVDIuCitURVNUKEltcGxpY2l0bHlDb252ZXJ0aWJsZVRlc3QsIFZhbHVlSXNU
cnVlV2hlbkNvbnZlcnRpYmxlKSB7CisgIEVYUEVDVF9UUlVFKChJbXBsaWNpdGx5Q29udmVydGli
bGU8aW50LCBkb3VibGU+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoSW1wbGljaXRseUNvbnZl
cnRpYmxlPGRvdWJsZSwgaW50Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKEltcGxpY2l0bHlD
b252ZXJ0aWJsZTxpbnQqLCB2b2lkKj46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChJbXBsaWNp
dGx5Q29udmVydGlibGU8aW50KiwgY29uc3QgaW50Kj46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVF
KChJbXBsaWNpdGx5Q29udmVydGlibGU8Q29udmVyc2lvbkhlbHBlckRlcml2ZWQmLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25IZWxwZXJCYXNl
Jj46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChJbXBsaWNpdGx5Q29udmVydGlibGU8Y29uc3Qg
Q29udmVyc2lvbkhlbHBlckJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29udmVyc2lvbkhlbHBlckJhc2U+Ojp2YWx1ZSkpOworfQorCisvLyBUZXN0cyB0aGF0IElt
cGxpY2l0bHlDb252ZXJ0aWJsZTxUMSwgVDI+Ojp2YWx1ZSBpcyBmYWxzZSB3aGVuIFQxCisvLyBj
YW5ub3QgYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gVDIuCitURVNUKEltcGxpY2l0bHlDb252
ZXJ0aWJsZVRlc3QsIFZhbHVlSXNGYWxzZVdoZW5Ob3RDb252ZXJ0aWJsZSkgeworICBFWFBFQ1Rf
RkFMU0UoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxkb3VibGUsIGludCo+Ojp2YWx1ZSkpOworICBF
WFBFQ1RfRkFMU0UoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTx2b2lkKiwgaW50Kj46OnZhbHVlKSk7
CisgIEVYUEVDVF9GQUxTRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPGNvbnN0IGludCosIGludCo+
Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxDb252ZXJz
aW9uSGVscGVyQmFzZSYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
bnZlcnNpb25IZWxwZXJEZXJpdmVkJj46OnZhbHVlKSk7Cit9CisKKy8vIFRlc3RzIElzQ29udGFp
bmVyVGVzdC4KKworY2xhc3MgTm9uQ29udGFpbmVyIHt9OworCitURVNUKElzQ29udGFpbmVyVGVz
dFRlc3QsIFdvcmtzRm9yTm9uQ29udGFpbmVyKSB7CisgIEVYUEVDVF9FUShzaXplb2YoSXNOb3RD
b250YWluZXIpLCBzaXplb2YoSXNDb250YWluZXJUZXN0PGludD4oMCkpKTsKKyAgRVhQRUNUX0VR
KHNpemVvZihJc05vdENvbnRhaW5lciksIHNpemVvZihJc0NvbnRhaW5lclRlc3Q8Y2hhcls1XT4o
MCkpKTsKKyAgRVhQRUNUX0VRKHNpemVvZihJc05vdENvbnRhaW5lciksIHNpemVvZihJc0NvbnRh
aW5lclRlc3Q8Tm9uQ29udGFpbmVyPigwKSkpOworfQorCitURVNUKElzQ29udGFpbmVyVGVzdFRl
c3QsIFdvcmtzRm9yQ29udGFpbmVyKSB7CisgIEVYUEVDVF9FUShzaXplb2YoSXNDb250YWluZXIp
LAorICAgICAgICAgICAgc2l6ZW9mKElzQ29udGFpbmVyVGVzdDxzdGQ6OnZlY3Rvcjxib29sPiA+
KDApKSk7CisgIEVYUEVDVF9FUShzaXplb2YoSXNDb250YWluZXIpLAorICAgICAgICAgICAgc2l6
ZW9mKElzQ29udGFpbmVyVGVzdDxzdGQ6Om1hcDxpbnQsIGRvdWJsZT4gPigwKSkpOworfQorCisj
aWYgR1RFU1RfTEFOR19DWFgxMQorc3RydWN0IENvbnN0T25seUNvbnRhaW5lcldpdGhQb2ludGVy
SXRlcmF0b3IgeworICB1c2luZyBjb25zdF9pdGVyYXRvciA9IGludCo7CisgIGNvbnN0X2l0ZXJh
dG9yIGJlZ2luKCkgY29uc3Q7CisgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0OworfTsKKwor
c3RydWN0IENvbnN0T25seUNvbnRhaW5lcldpdGhDbGFzc0l0ZXJhdG9yIHsKKyAgc3RydWN0IGNv
bnN0X2l0ZXJhdG9yIHsKKyAgICBjb25zdCBpbnQmIG9wZXJhdG9yKigpIGNvbnN0OworICAgIGNv
bnN0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKC8qIHByZS1pbmNyZW1lbnQgKi8pOworICB9OworICBj
b25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0OworICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25z
dDsKK307CisKK1RFU1QoSXNDb250YWluZXJUZXN0VGVzdCwgQ29uc3RPbmx5Q29udGFpbmVyKSB7
CisgIEVYUEVDVF9FUShzaXplb2YoSXNDb250YWluZXIpLAorICAgICAgICAgICAgc2l6ZW9mKElz
Q29udGFpbmVyVGVzdDxDb25zdE9ubHlDb250YWluZXJXaXRoUG9pbnRlckl0ZXJhdG9yPigwKSkp
OworICBFWFBFQ1RfRVEoc2l6ZW9mKElzQ29udGFpbmVyKSwKKyAgICAgICAgICAgIHNpemVvZihJ
c0NvbnRhaW5lclRlc3Q8Q29uc3RPbmx5Q29udGFpbmVyV2l0aENsYXNzSXRlcmF0b3I+KDApKSk7
Cit9CisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKworLy8gVGVzdHMgSXNIYXNoVGFibGUu
CitzdHJ1Y3QgQUhhc2hUYWJsZSB7CisgIHR5cGVkZWYgdm9pZCBoYXNoZXI7Cit9Oworc3RydWN0
IE5vdFJlYWxseUFIYXNoVGFibGUgeworICB0eXBlZGVmIHZvaWQgaGFzaGVyOworICB0eXBlZGVm
IHZvaWQgcmV2ZXJzZV9pdGVyYXRvcjsKK307CitURVNUKElzSGFzaFRhYmxlLCBCYXNpYykgewor
ICBFWFBFQ1RfVFJVRSh0ZXN0aW5nOjppbnRlcm5hbDo6SXNIYXNoVGFibGU8QUhhc2hUYWJsZT46
OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKHRlc3Rpbmc6OmludGVybmFsOjpJc0hhc2hUYWJsZTxO
b3RSZWFsbHlBSGFzaFRhYmxlPjo6dmFsdWUpOworI2lmIEdURVNUX0xBTkdfQ1hYMTEKKyAgRVhQ
RUNUX0ZBTFNFKHRlc3Rpbmc6OmludGVybmFsOjpJc0hhc2hUYWJsZTxzdGQ6OnZlY3RvcjxpbnQ+
Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRSh0ZXN0aW5nOjppbnRlcm5hbDo6SXNIYXNoVGFibGU8
c3RkOjp1bm9yZGVyZWRfc2V0PGludD4+Ojp2YWx1ZSk7CisjZW5kaWYgIC8vIEdURVNUX0xBTkdf
Q1hYMTEKKyNpZiBHVEVTVF9IQVNfSEFTSF9TRVRfCisgIEVYUEVDVF9UUlVFKHRlc3Rpbmc6Omlu
dGVybmFsOjpJc0hhc2hUYWJsZTxfX2dudV9jeHg6Omhhc2hfc2V0PGludD4+Ojp2YWx1ZSk7Cisj
ZW5kaWYgIC8vIEdURVNUX0hBU19IQVNIX1NFVF8KK30KKworLy8gVGVzdHMgQXJyYXlFcSgpLgor
CitURVNUKEFycmF5RXFUZXN0LCBXb3Jrc0ZvckRlZ2VuZXJhdGVkQXJyYXlzKSB7CisgIEVYUEVD
VF9UUlVFKEFycmF5RXEoNSwgNUwpKTsKKyAgRVhQRUNUX0ZBTFNFKEFycmF5RXEoJ2EnLCAwKSk7
Cit9CisKK1RFU1QoQXJyYXlFcVRlc3QsIFdvcmtzRm9yT25lRGltZW5zaW9uYWxBcnJheXMpIHsK
KyAgLy8gTm90ZSB0aGF0IGEgYW5kIGIgYXJlIGRpc3RpbmN0IGJ1dCBjb21wYXRpYmxlIHR5cGVz
LgorICBjb25zdCBpbnQgYVtdID0geyAwLCAxIH07CisgIGxvbmcgYltdID0geyAwLCAxIH07Cisg
IEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYikpOworICBFWFBFQ1RfVFJVRShBcnJheUVxKGEsIDIs
IGIpKTsKKworICBiWzBdID0gMjsKKyAgRVhQRUNUX0ZBTFNFKEFycmF5RXEoYSwgYikpOworICBF
WFBFQ1RfRkFMU0UoQXJyYXlFcShhLCAxLCBiKSk7Cit9CisKK1RFU1QoQXJyYXlFcVRlc3QsIFdv
cmtzRm9yVHdvRGltZW5zaW9uYWxBcnJheXMpIHsKKyAgY29uc3QgY2hhciBhW11bM10gPSB7ICJo
aSIsICJsbyIgfTsKKyAgY29uc3QgY2hhciBiW11bM10gPSB7ICJoaSIsICJsbyIgfTsKKyAgY29u
c3QgY2hhciBjW11bM10gPSB7ICJoaSIsICJsaSIgfTsKKworICBFWFBFQ1RfVFJVRShBcnJheUVx
KGEsIGIpKTsKKyAgRVhQRUNUX1RSVUUoQXJyYXlFcShhLCAyLCBiKSk7CisKKyAgRVhQRUNUX0ZB
TFNFKEFycmF5RXEoYSwgYykpOworICBFWFBFQ1RfRkFMU0UoQXJyYXlFcShhLCAyLCBjKSk7Cit9
CisKKy8vIFRlc3RzIEFycmF5QXdhcmVGaW5kKCkuCisKK1RFU1QoQXJyYXlBd2FyZUZpbmRUZXN0
LCBXb3Jrc0Zvck9uZURpbWVuc2lvbmFsQXJyYXkpIHsKKyAgY29uc3QgY2hhciBhW10gPSAiaGVs
bG8iOworICBFWFBFQ1RfRVEoYSArIDQsIEFycmF5QXdhcmVGaW5kKGEsIGEgKyA1LCAnbycpKTsK
KyAgRVhQRUNUX0VRKGEgKyA1LCBBcnJheUF3YXJlRmluZChhLCBhICsgNSwgJ3gnKSk7Cit9CisK
K1RFU1QoQXJyYXlBd2FyZUZpbmRUZXN0LCBXb3Jrc0ZvclR3b0RpbWVuc2lvbmFsQXJyYXkpIHsK
KyAgaW50IGFbXVsyXSA9IHsgeyAwLCAxIH0sIHsgMiwgMyB9LCB7IDQsIDUgfSB9OworICBjb25z
dCBpbnQgYlsyXSA9IHsgMiwgMyB9OworICBFWFBFQ1RfRVEoYSArIDEsIEFycmF5QXdhcmVGaW5k
KGEsIGEgKyAzLCBiKSk7CisKKyAgY29uc3QgaW50IGNbMl0gPSB7IDYsIDcgfTsKKyAgRVhQRUNU
X0VRKGEgKyAzLCBBcnJheUF3YXJlRmluZChhLCBhICsgMywgYykpOworfQorCisvLyBUZXN0cyBD
b3B5QXJyYXkoKS4KKworVEVTVChDb3B5QXJyYXlUZXN0LCBXb3Jrc0ZvckRlZ2VuZXJhdGVkQXJy
YXlzKSB7CisgIGludCBuID0gMDsKKyAgQ29weUFycmF5KCdhJywgJm4pOworICBFWFBFQ1RfRVEo
J2EnLCBuKTsKK30KKworVEVTVChDb3B5QXJyYXlUZXN0LCBXb3Jrc0Zvck9uZURpbWVuc2lvbmFs
QXJyYXlzKSB7CisgIGNvbnN0IGNoYXIgYVszXSA9ICJoaSI7CisgIGludCBiWzNdOworI2lmbmRl
ZiBfX0JPUkxBTkRDX18gIC8vIEMrK0J1aWxkZXIgY2Fubm90IGNvbXBpbGUgc29tZSBhcnJheSBz
aXplIGRlZHVjdGlvbnMuCisgIENvcHlBcnJheShhLCAmYik7CisgIEVYUEVDVF9UUlVFKEFycmF5
RXEoYSwgYikpOworI2VuZGlmCisKKyAgaW50IGNbM107CisgIENvcHlBcnJheShhLCAzLCBjKTsK
KyAgRVhQRUNUX1RSVUUoQXJyYXlFcShhLCBjKSk7Cit9CisKK1RFU1QoQ29weUFycmF5VGVzdCwg
V29ya3NGb3JUd29EaW1lbnNpb25hbEFycmF5cykgeworICBjb25zdCBpbnQgYVsyXVszXSA9IHsg
eyAwLCAxLCAyIH0sIHsgMywgNCwgNSB9IH07CisgIGludCBiWzJdWzNdOworI2lmbmRlZiBfX0JP
UkxBTkRDX18gIC8vIEMrK0J1aWxkZXIgY2Fubm90IGNvbXBpbGUgc29tZSBhcnJheSBzaXplIGRl
ZHVjdGlvbnMuCisgIENvcHlBcnJheShhLCAmYik7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwg
YikpOworI2VuZGlmCisKKyAgaW50IGNbMl1bM107CisgIENvcHlBcnJheShhLCAyLCBjKTsKKyAg
RVhQRUNUX1RSVUUoQXJyYXlFcShhLCBjKSk7Cit9CisKKy8vIFRlc3RzIE5hdGl2ZUFycmF5Lgor
CitURVNUKE5hdGl2ZUFycmF5VGVzdCwgQ29uc3RydWN0b3JGcm9tQXJyYXlXb3JrcykgeworICBj
b25zdCBpbnQgYVszXSA9IHsgMCwgMSwgMiB9OworICBOYXRpdmVBcnJheTxpbnQ+IG5hKGEsIDMs
IFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSk7CisgIEVYUEVDVF9FUSgzVSwgbmEuc2l6ZSgp
KTsKKyAgRVhQRUNUX0VRKGEsIG5hLmJlZ2luKCkpOworfQorCitURVNUKE5hdGl2ZUFycmF5VGVz
dCwgQ3JlYXRlc0FuZERlbGV0ZXNDb3B5T2ZBcnJheVdoZW5Bc2tlZFRvKSB7CisgIHR5cGVkZWYg
aW50IEFycmF5WzJdOworICBBcnJheSogYSA9IG5ldyBBcnJheVsxXTsKKyAgKCphKVswXSA9IDA7
CisgICgqYSlbMV0gPSAxOworICBOYXRpdmVBcnJheTxpbnQ+IG5hKCphLCAyLCBSZWxhdGlvblRv
U291cmNlQ29weSgpKTsKKyAgRVhQRUNUX05FKCphLCBuYS5iZWdpbigpKTsKKyAgZGVsZXRlW10g
YTsKKyAgRVhQRUNUX0VRKDAsIG5hLmJlZ2luKClbMF0pOworICBFWFBFQ1RfRVEoMSwgbmEuYmVn
aW4oKVsxXSk7CisKKyAgLy8gV2UgcmVseSBvbiB0aGUgaGVhcCBjaGVja2VyIHRvIHZlcmlmeSB0
aGF0IG5hIGRlbGV0ZXMgdGhlIGNvcHkgb2YKKyAgLy8gYXJyYXkuCit9CisKK1RFU1QoTmF0aXZl
QXJyYXlUZXN0LCBUeXBlTWVtYmVyc0FyZUNvcnJlY3QpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVx
PGNoYXIsIE5hdGl2ZUFycmF5PGNoYXI+Ojp2YWx1ZV90eXBlPigpOworICBTdGF0aWNBc3NlcnRU
eXBlRXE8aW50WzJdLCBOYXRpdmVBcnJheTxpbnRbMl0+Ojp2YWx1ZV90eXBlPigpOworCisgIFN0
YXRpY0Fzc2VydFR5cGVFcTxjb25zdCBjaGFyKiwgTmF0aXZlQXJyYXk8Y2hhcj46OmNvbnN0X2l0
ZXJhdG9yPigpOworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgYm9vbCgqKVsyXSwgTmF0aXZl
QXJyYXk8Ym9vbFsyXT46OmNvbnN0X2l0ZXJhdG9yPigpOworfQorCitURVNUKE5hdGl2ZUFycmF5
VGVzdCwgTWV0aG9kc1dvcmspIHsKKyAgY29uc3QgaW50IGFbM10gPSB7IDAsIDEsIDIgfTsKKyAg
TmF0aXZlQXJyYXk8aW50PiBuYShhLCAzLCBSZWxhdGlvblRvU291cmNlQ29weSgpKTsKKyAgQVNT
RVJUX0VRKDNVLCBuYS5zaXplKCkpOworICBFWFBFQ1RfRVEoMywgbmEuZW5kKCkgLSBuYS5iZWdp
bigpKTsKKworICBOYXRpdmVBcnJheTxpbnQ+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG5hLmJlZ2lu
KCk7CisgIEVYUEVDVF9FUSgwLCAqaXQpOworICArK2l0OworICBFWFBFQ1RfRVEoMSwgKml0KTsK
KyAgaXQrKzsKKyAgRVhQRUNUX0VRKDIsICppdCk7CisgICsraXQ7CisgIEVYUEVDVF9FUShuYS5l
bmQoKSwgaXQpOworCisgIEVYUEVDVF9UUlVFKG5hID09IG5hKTsKKworICBOYXRpdmVBcnJheTxp
bnQ+IG5hMihhLCAzLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOworICBFWFBFQ1RfVFJV
RShuYSA9PSBuYTIpOworCisgIGNvbnN0IGludCBiMVszXSA9IHsgMCwgMSwgMSB9OworICBjb25z
dCBpbnQgYjJbNF0gPSB7IDAsIDEsIDIsIDMgfTsKKyAgRVhQRUNUX0ZBTFNFKG5hID09IE5hdGl2
ZUFycmF5PGludD4oYjEsIDMsIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSkpOworICBFWFBF
Q1RfRkFMU0UobmEgPT0gTmF0aXZlQXJyYXk8aW50PihiMiwgNCwgUmVsYXRpb25Ub1NvdXJjZUNv
cHkoKSkpOworfQorCitURVNUKE5hdGl2ZUFycmF5VGVzdCwgV29ya3NGb3JUd29EaW1lbnNpb25h
bEFycmF5KSB7CisgIGNvbnN0IGNoYXIgYVsyXVszXSA9IHsgImhpIiwgImxvIiB9OworICBOYXRp
dmVBcnJheTxjaGFyWzNdPiBuYShhLCAyLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOwor
ICBBU1NFUlRfRVEoMlUsIG5hLnNpemUoKSk7CisgIEVYUEVDVF9FUShhLCBuYS5iZWdpbigpKTsK
K30KKworLy8gVGVzdHMgU2tpcFByZWZpeCgpLgorCitURVNUKFNraXBQcmVmaXhUZXN0LCBTa2lw
c1doZW5QcmVmaXhNYXRjaGVzKSB7CisgIGNvbnN0IGNoYXIqIGNvbnN0IHN0ciA9ICJoZWxsbyI7
CisKKyAgY29uc3QgY2hhciogcCA9IHN0cjsKKyAgRVhQRUNUX1RSVUUoU2tpcFByZWZpeCgiIiwg
JnApKTsKKyAgRVhQRUNUX0VRKHN0ciwgcCk7CisKKyAgcCA9IHN0cjsKKyAgRVhQRUNUX1RSVUUo
U2tpcFByZWZpeCgiaGVsbCIsICZwKSk7CisgIEVYUEVDVF9FUShzdHIgKyA0LCBwKTsKK30KKwor
VEVTVChTa2lwUHJlZml4VGVzdCwgRG9lc05vdFNraXBXaGVuUHJlZml4RG9lc05vdE1hdGNoKSB7
CisgIGNvbnN0IGNoYXIqIGNvbnN0IHN0ciA9ICJ3b3JsZCI7CisKKyAgY29uc3QgY2hhciogcCA9
IHN0cjsKKyAgRVhQRUNUX0ZBTFNFKFNraXBQcmVmaXgoIlciLCAmcCkpOworICBFWFBFQ1RfRVEo
c3RyLCBwKTsKKworICBwID0gc3RyOworICBFWFBFQ1RfRkFMU0UoU2tpcFByZWZpeCgid29ybGQh
IiwgJnApKTsKKyAgRVhQRUNUX0VRKHN0ciwgcCk7Cit9CisKKy8vIFRlc3RzIGFkX2hvY190ZXN0
X3Jlc3VsdCgpLgorCitjbGFzcyBBZEhvY1Rlc3RSZXN1bHRUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgeworIHByb3RlY3RlZDoKKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKKyAg
ICBGQUlMKCkgPDwgIkEgZmFpbHVyZSBoYXBwZW5lZCBpbnNpZGUgU2V0VXBUZXN0Q2FzZSgpLiI7
CisgIH0KK307CisKK1RFU1RfRihBZEhvY1Rlc3RSZXN1bHRUZXN0LCBBZEhvY1Rlc3RSZXN1bHRG
b3JUZXN0Q2FzZVNob3dzRmFpbHVyZSkgeworICBjb25zdCB0ZXN0aW5nOjpUZXN0UmVzdWx0JiB0
ZXN0X3Jlc3VsdCA9IHRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+Y3VycmVudF90ZXN0X2Nhc2Uo
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmFkX2hv
Y190ZXN0X3Jlc3VsdCgpOworICBFWFBFQ1RfVFJVRSh0ZXN0X3Jlc3VsdC5GYWlsZWQoKSk7Cit9
CisKK1RFU1RfRihBZEhvY1Rlc3RSZXN1bHRUZXN0LCBBZEhvY1Rlc3RSZXN1bHRUZXN0Rm9yVW5p
dFRlc3REb2VzTm90U2hvd0ZhaWx1cmUpIHsKKyAgY29uc3QgdGVzdGluZzo6VGVzdFJlc3VsdCYg
dGVzdF9yZXN1bHQgPQorICAgICAgdGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmFk
X2hvY190ZXN0X3Jlc3VsdCgpOworICBFWFBFQ1RfRkFMU0UodGVzdF9yZXN1bHQuRmFpbGVkKCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxf
b3V0ZmlsZTFfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ht
bF9vdXRmaWxlMV90ZXN0Xy5jYwppbmRleCA2NjRiYWFkMmFiODczYmEzODgxOTNhNjVkMmI3OWZk
ODNkYjJlNzc1Li5hMzhlYmFjODM5ZjdiNGZjZjcxMDkzNTFjNGQzZmVjZGUyNzE1YjBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMV90
ZXN0Xy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRm
aWxlMV90ZXN0Xy5jYwpAQCAtMjcsMTIgKzI3LDEwIEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAvLwotLy8gQXV0aG9yOiBrZWl0aC5yYXlAZ21haWwuY29tIChLZWl0aCBSYXkp
Ci0vLwogLy8gZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfIHdyaXRlcyBzb21lIHhtbCB2aWEgVGVz
dFByb3BlcnR5IHVzZWQgYnkKIC8vIGd0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5CiAKLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIGNsYXNzIFBy
b3BlcnR5T25lIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUyX3Rlc3Rf
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTJfdGVz
dF8uY2MKaW5kZXggMzQxMWEzZDM4Yjg2MTA0YzZhNjBjNjBkMTEzMWNiNjZhYTU0YzE5Mi4uYWZh
ZjE1YTVkYzMyMzE1ZDUxYWM3YTBhNTU1ZjgzY2FiNDFlZjc0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8uY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8uY2MK
QEAgLTI3LDEyICsyNywxMCBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogLy8K
LS8vIEF1dGhvcjoga2VpdGgucmF5QGdtYWlsLmNvbSAoS2VpdGggUmF5KQotLy8KIC8vIGd0ZXN0
X3htbF9vdXRmaWxlMl90ZXN0XyB3cml0ZXMgc29tZSB4bWwgdmlhIFRlc3RQcm9wZXJ0eSB1c2Vk
IGJ5CiAvLyBndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiBjbGFzcyBQcm9wZXJ0eVR3byA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5IGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weQppbmRleCAwZmU5
NDdmMDg0YzhmNTZmNGFkZjVkMGM5ZmEwMjZjZTI5OTc1ZDJjLi4yYzAzMWZmOGRiYTUxMmMyZTA0
ZTI3MDUzNGUyOWZjZWJlODg2Y2Y5IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkKQEAgLTMxLDMxICszMSwzOSBA
QAogCiAiIiJVbml0IHRlc3QgZm9yIHRoZSBndGVzdF94bWxfb3V0cHV0IG1vZHVsZS4iIiIKIAot
X19hdXRob3JfXyA9ICJrZWl0aC5yYXlAZ21haWwuY29tIChLZWl0aCBSYXkpIgotCiBpbXBvcnQg
b3MKIGZyb20geG1sLmRvbSBpbXBvcnQgbWluaWRvbSwgTm9kZQotCiBpbXBvcnQgZ3Rlc3RfdGVz
dF91dGlscwogaW1wb3J0IGd0ZXN0X3htbF90ZXN0X3V0aWxzCiAKLQogR1RFU1RfT1VUUFVUX1NV
QkRJUiA9ICJ4bWxfb3V0ZmlsZXMiCiBHVEVTVF9PVVRQVVRfMV9URVNUID0gImd0ZXN0X3htbF9v
dXRmaWxlMV90ZXN0XyIKIEdURVNUX09VVFBVVF8yX1RFU1QgPSAiZ3Rlc3RfeG1sX291dGZpbGUy
X3Rlc3RfIgogCiBFWFBFQ1RFRF9YTUxfMSA9ICIiIjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rp
bmc9IlVURi04Ij8+Ci08dGVzdHN1aXRlcyB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVk
PSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiIG5hbWU9IkFsbFRlc3RzIj4KKzx0ZXN0c3VpdGVzIHRl
c3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIgdGlt
ZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0cyI+CiAgIDx0ZXN0c3VpdGUgbmFtZT0iUHJvcGVydHlP
bmUiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0i
KiI+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IlRlc3RTb21lUHJvcGVydGllcyIgc3RhdHVzPSJydW4i
IHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlPbmUiIFNldFVwUHJvcD0iMSIgVGVzdFNvbWVQ
cm9wZXJ0eT0iMSIgVGVhckRvd25Qcm9wPSIxIiAvPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJUZXN0
U29tZVByb3BlcnRpZXMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlByb3BlcnR5
T25lIj4KKyAgICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0iU2V0VXBQ
cm9wIiB2YWx1ZT0iMSIvPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0iVGVzdFNvbWVQcm9wZXJ0
eSIgdmFsdWU9IjEiLz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9IlRlYXJEb3duUHJvcCIgdmFs
dWU9IjEiLz4KKyAgICAgIDwvcHJvcGVydGllcz4KKyAgICA8L3Rlc3RjYXNlPgogICA8L3Rlc3Rz
dWl0ZT4KIDwvdGVzdHN1aXRlcz4KICIiIgogCiBFWFBFQ1RFRF9YTUxfMiA9ICIiIjw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08dGVzdHN1aXRlcyB0ZXN0cz0iMSIgZmFp
bHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiIG5hbWU9IkFsbFRlc3Rz
Ij4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9y
cz0iMCIgdGltZT0iKiIgdGltZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0cyI+CiAgIDx0ZXN0c3Vp
dGUgbmFtZT0iUHJvcGVydHlUd28iIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAi
IGVycm9ycz0iMCIgdGltZT0iKiI+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IlRlc3RTb21lUHJvcGVy
dGllcyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlUd28iIFNldFVw
UHJvcD0iMiIgVGVzdFNvbWVQcm9wZXJ0eT0iMiIgVGVhckRvd25Qcm9wPSIyIiAvPgorICAgIDx0
ZXN0Y2FzZSBuYW1lPSJUZXN0U29tZVByb3BlcnRpZXMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBj
bGFzc25hbWU9IlByb3BlcnR5VHdvIj4KKyAgICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICA8cHJv
cGVydHkgbmFtZT0iU2V0VXBQcm9wIiB2YWx1ZT0iMiIvPgorICAgICAgICA8cHJvcGVydHkgbmFt
ZT0iVGVzdFNvbWVQcm9wZXJ0eSIgdmFsdWU9IjIiLz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9
IlRlYXJEb3duUHJvcCIgdmFsdWU9IjIiLz4KKyAgICAgIDwvcHJvcGVydGllcz4KKyAgICA8L3Rl
c3RjYXNlPgogICA8L3Rlc3RzdWl0ZT4KIDwvdGVzdHN1aXRlcz4KICIiIgpAQCAtMTAzLDExICsx
MTEsMTEgQEAgY2xhc3MgR1Rlc3RYTUxPdXRGaWxlc1Rlc3QoZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMu
R1Rlc3RYTUxUZXN0Q2FzZSk6CiAgICAgc2VsZi5hc3NlcnRfKHAuZXhpdGVkKQogICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKDAsIHAuZXhpdF9jb2RlKQogCi0gICAgIyBUT0RPKHdhbkBnb29nbGUuY29t
KTogbGlidG9vbCBjYXVzZXMgdGhlIGJ1aWx0IHRlc3QgYmluYXJ5IHRvIGJlCisgICAgIyBGSVhN
RTogbGlidG9vbCBjYXVzZXMgdGhlIGJ1aWx0IHRlc3QgYmluYXJ5IHRvIGJlCiAgICAgIyAgIG5h
bWVkIGx0LWd0ZXN0X3htbF9vdXRmaWxlc190ZXN0XyBpbnN0ZWFkIG9mCi0gICAgIyAgIGd0ZXN0
X3htbF9vdXRmaWxlc190ZXN0Xy4gIFRvIGFjY291bnQgZm9yIHRoaXMgcG9zc2liaWxsaXR5LCB3
ZQorICAgICMgICBndGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8uICBUbyBhY2NvdW50IGZvciB0aGlz
IHBvc3NpYmlsaXR5LCB3ZQogICAgICMgICBhbGxvdyBib3RoIG5hbWVzIGluIHRoZSBmb2xsb3dp
bmcgY29kZS4gIFdlIHNob3VsZCByZW1vdmUgdGhpcwotICAgICMgICBoYWNrIHdoZW4gQ2hhbmRs
ZXIgQ2FycnV0aCdzIGxpYnRvb2wgcmVwbGFjZW1lbnQgdG9vbCBpcyByZWFkeS4KKyAgICAjICAg
d2hlbiBsaWJ0b29sIHJlcGxhY2VtZW50IHRvb2wgaXMgcmVhZHkuCiAgICAgb3V0cHV0X2ZpbGVf
bmFtZTEgPSB0ZXN0X25hbWUgKyAiLnhtbCIKICAgICBvdXRwdXRfZmlsZTEgPSBvcy5wYXRoLmpv
aW4oc2VsZi5vdXRwdXRfZGlyXywgb3V0cHV0X2ZpbGVfbmFtZTEpCiAgICAgb3V0cHV0X2ZpbGVf
bmFtZTIgPSAnbHQtJyArIG91dHB1dF9maWxlX25hbWUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3QucHkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3QucHkKaW5kZXgg
NmQ0NDkyOWNhY2EwM2VjNmZhZTQ0NzFlZDFiYTFkNDE2YTVkZmNlMC4uZmFlZGQ0ZTZjZTcyZGFi
ZWY3ODZhMzEyZWY0YWVjYTVjNWQyOWJmYSAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0LnB5CisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdC5weQpAQCAtMzEsNjIg
KzMxLDc2IEBACiAKICIiIlVuaXQgdGVzdCBmb3IgdGhlIGd0ZXN0X3htbF9vdXRwdXQgbW9kdWxl
IiIiCiAKLV9fYXV0aG9yX18gPSAnZWVmYWNtQGdtYWlsLmNvbSAoU2VhbiBNY2FmZWUpJwotCitp
bXBvcnQgZGF0ZXRpbWUKIGltcG9ydCBlcnJubwogaW1wb3J0IG9zCitpbXBvcnQgcmUKIGltcG9y
dCBzeXMKIGZyb20geG1sLmRvbSBpbXBvcnQgbWluaWRvbSwgTm9kZQogCiBpbXBvcnQgZ3Rlc3Rf
dGVzdF91dGlscwogaW1wb3J0IGd0ZXN0X3htbF90ZXN0X3V0aWxzCiAKK0dURVNUX0ZJTFRFUl9G
TEFHID0gJy0tZ3Rlc3RfZmlsdGVyJworR1RFU1RfTElTVF9URVNUU19GTEFHID0gJy0tZ3Rlc3Rf
bGlzdF90ZXN0cycKK0dURVNUX09VVFBVVF9GTEFHID0gJy0tZ3Rlc3Rfb3V0cHV0JworR1RFU1Rf
REVGQVVMVF9PVVRQVVRfRklMRSA9ICd0ZXN0X2RldGFpbC54bWwnCitHVEVTVF9QUk9HUkFNX05B
TUUgPSAnZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8nCisKKyMgVGhlIGZsYWcgaW5kaWNhdGlu
ZyBzdGFja3RyYWNlcyBhcmUgbm90IHN1cHBvcnRlZAorTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZM
QUcgPSAnLS1ub19zdGFja3RyYWNlX3N1cHBvcnQnCiAKLUdURVNUX09VVFBVVF9GTEFHICAgICAg
ICAgPSAiLS1ndGVzdF9vdXRwdXQiCi1HVEVTVF9ERUZBVUxUX09VVFBVVF9GSUxFID0gInRlc3Rf
ZGV0YWlsLnhtbCIKLUdURVNUX1BST0dSQU1fTkFNRSA9ICJndGVzdF94bWxfb3V0cHV0X3VuaXR0
ZXN0XyIKKyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBzaGFyZGluZy4KK1RP
VEFMX1NIQVJEU19FTlZfVkFSID0gJ0dURVNUX1RPVEFMX1NIQVJEUycKK1NIQVJEX0lOREVYX0VO
Vl9WQVIgPSAnR1RFU1RfU0hBUkRfSU5ERVgnCitTSEFSRF9TVEFUVVNfRklMRV9FTlZfVkFSID0g
J0dURVNUX1NIQVJEX1NUQVRVU19GSUxFJwogCi1TVVBQT1JUU19TVEFDS19UUkFDRVMgPSBGYWxz
ZQorU1VQUE9SVFNfU1RBQ0tfVFJBQ0VTID0gTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZMQUcgbm90
IGluIHN5cy5hcmd2CiAKIGlmIFNVUFBPUlRTX1NUQUNLX1RSQUNFUzoKLSAgU1RBQ0tfVFJBQ0Vf
VEVNUExBVEUgPSAiXG5TdGFjayB0cmFjZTpcbioiCisgIFNUQUNLX1RSQUNFX1RFTVBMQVRFID0g
J1xuU3RhY2sgdHJhY2U6XG4qJwogZWxzZToKLSAgU1RBQ0tfVFJBQ0VfVEVNUExBVEUgPSAiIgor
ICBTVEFDS19UUkFDRV9URU1QTEFURSA9ICcnCisgICMgdW5pdHRlc3QubWFpbigpIGNhbid0IGhh
bmRsZSB1bmtub3duIGZsYWdzCisgIHN5cy5hcmd2LnJlbW92ZShOT19TVEFDS1RSQUNFX1NVUFBP
UlRfRkxBRykKIAogRVhQRUNURURfTk9OX0VNUFRZX1hNTCA9ICIiIjw/eG1sIHZlcnNpb249IjEu
MCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08dGVzdHN1aXRlcyB0ZXN0cz0iMTUiIGZhaWx1cmVzPSI0
IiBkaXNhYmxlZD0iMiIgZXJyb3JzPSIwIiB0aW1lPSIqIiBuYW1lPSJBbGxUZXN0cyI+Cis8dGVz
dHN1aXRlcyB0ZXN0cz0iMjMiIGZhaWx1cmVzPSI0IiBkaXNhYmxlZD0iMiIgZXJyb3JzPSIwIiB0
aW1lPSIqIiB0aW1lc3RhbXA9IioiIG5hbWU9IkFsbFRlc3RzIiBhZF9ob2NfcHJvcGVydHk9IjQy
Ij4KICAgPHRlc3RzdWl0ZSBuYW1lPSJTdWNjZXNzZnVsVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVz
PSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAgICA8dGVzdGNhc2UgbmFt
ZT0iU3VjY2VlZHMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlN1Y2Nlc3NmdWxU
ZXN0Ii8+CiAgIDwvdGVzdHN1aXRlPgogICA8dGVzdHN1aXRlIG5hbWU9IkZhaWxlZFRlc3QiIHRl
c3RzPSIxIiBmYWlsdXJlcz0iMSIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CiAg
ICAgPHRlc3RjYXNlIG5hbWU9IkZhaWxzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1l
PSJGYWlsZWRUZXN0Ij4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IlZhbHVlIG9mOiAyJiN4MEE7
RXhwZWN0ZWQ6IDEiIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8u
Y2M6KgotVmFsdWUgb2Y6IDIKLUV4cGVjdGVkOiAxJShzdGFjaylzXV0+PC9mYWlsdXJlPgorICAg
ICAgPGZhaWx1cmUgbWVzc2FnZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBB
O0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczomI3gwQTsgIDEmI3gwQTsgIDIiIHR5
cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgorRXhwZWN0ZWQg
ZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxCisgIDIlKHN0YWNrKXNdXT48L2ZhaWx1cmU+
CiAgICAgPC90ZXN0Y2FzZT4KICAgPC90ZXN0c3VpdGU+CiAgIDx0ZXN0c3VpdGUgbmFtZT0iTWl4
ZWRSZXN1bHRUZXN0IiB0ZXN0cz0iMyIgZmFpbHVyZXM9IjEiIGRpc2FibGVkPSIxIiBlcnJvcnM9
IjAiIHRpbWU9IioiPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJTdWNjZWVkcyIgc3RhdHVzPSJydW4i
IHRpbWU9IioiIGNsYXNzbmFtZT0iTWl4ZWRSZXN1bHRUZXN0Ii8+CiAgICAgPHRlc3RjYXNlIG5h
bWU9IkZhaWxzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJNaXhlZFJlc3VsdFRl
c3QiPgotICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IDImI3gwQTtFeHBlY3RlZDog
MSIgdHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCi1WYWx1
ZSBvZjogMgotRXhwZWN0ZWQ6IDElKHN0YWNrKXNdXT48L2ZhaWx1cmU+Ci0gICAgICA8ZmFpbHVy
ZSBtZXNzYWdlPSJWYWx1ZSBvZjogMyYjeDBBO0V4cGVjdGVkOiAyIiB0eXBlPSIiPjwhW0NEQVRB
W2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioKLVZhbHVlIG9mOiAzCi1FeHBlY3RlZDog
MiUoc3RhY2spc11dPjwvZmFpbHVyZT4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Imd0ZXN0X3ht
bF9vdXRwdXRfdW5pdHRlc3RfLmNjOiomI3gwQTtFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2
YWx1ZXM6JiN4MEE7ICAxJiN4MEE7ICAyIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3RfLmNjOioKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAg
MQorICAyJShzdGFjaylzXV0+PC9mYWlsdXJlPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iZ3Rl
c3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBBO0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRo
ZXNlIHZhbHVlczomI3gwQTsgIDImI3gwQTsgIDMiIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1s
X291dHB1dF91bml0dGVzdF8uY2M6KgorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVz
OgorICAyCisgIDMlKHN0YWNrKXNdXT48L2ZhaWx1cmU+CiAgICAgPC90ZXN0Y2FzZT4KICAgICA8
dGVzdGNhc2UgbmFtZT0iRElTQUJMRURfdGVzdCIgc3RhdHVzPSJub3RydW4iIHRpbWU9IioiIGNs
YXNzbmFtZT0iTWl4ZWRSZXN1bHRUZXN0Ii8+CiAgIDwvdGVzdHN1aXRlPgogICA8dGVzdHN1aXRl
IG5hbWU9IlhtbFF1b3RpbmdUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjEiIGRpc2FibGVkPSIw
IiBlcnJvcnM9IjAiIHRpbWU9IioiPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJPdXRwdXRzQ0RhdGEi
IHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlhtbFF1b3RpbmdUZXN0Ij4KLSAgICAg
IDxmYWlsdXJlIG1lc3NhZ2U9IkZhaWxlZCYjeDBBO1hNTCBvdXRwdXQ6ICZsdDs/eG1sIGVuY29k
aW5nPSZxdW90O3V0Zi04JnF1b3Q7Jmd0OyZsdDt0b3AmZ3Q7Jmx0OyFbQ0RBVEFbY2RhdGEgdGV4
dF1dJmd0OyZsdDsvdG9wJmd0OyIgdHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3Vu
aXR0ZXN0Xy5jYzoqCisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJndGVzdF94bWxfb3V0cHV0X3Vu
aXR0ZXN0Xy5jYzoqJiN4MEE7RmFpbGVkJiN4MEE7WE1MIG91dHB1dDogJmx0Oz94bWwgZW5jb2Rp
bmc9JnF1b3Q7dXRmLTgmcXVvdDsmZ3Q7Jmx0O3RvcCZndDsmbHQ7IVtDREFUQVtjZGF0YSB0ZXh0
XV0mZ3Q7Jmx0Oy90b3AmZ3Q7IiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5p
dHRlc3RfLmNjOioKIEZhaWxlZAogWE1MIG91dHB1dDogPD94bWwgZW5jb2Rpbmc9InV0Zi04Ij48
dG9wPjwhW0NEQVRBW2NkYXRhIHRleHRdXT5dXSZndDs8IVtDREFUQVs8L3RvcD4lKHN0YWNrKXNd
XT48L2ZhaWx1cmU+CiAgICAgPC90ZXN0Y2FzZT4KICAgPC90ZXN0c3VpdGU+CiAgIDx0ZXN0c3Vp
dGUgbmFtZT0iSW52YWxpZENoYXJhY3RlcnNUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjEiIGRp
c2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJJbnZh
bGlkQ2hhcmFjdGVyc0luTWVzc2FnZSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0i
SW52YWxpZENoYXJhY3RlcnNUZXN0Ij4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IkZhaWxlZCYj
eDBBO0ludmFsaWQgY2hhcmFjdGVycyBpbiBicmFja2V0cyBbXSIgdHlwZT0iIj48IVtDREFUQVtn
dGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJn
dGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqJiN4MEE7RmFpbGVkJiN4MEE7SW52YWxpZCBj
aGFyYWN0ZXJzIGluIGJyYWNrZXRzIFtdIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3RfLmNjOioKIEZhaWxlZAogSW52YWxpZCBjaGFyYWN0ZXJzIGluIGJyYWNrZXRz
IFtdJShzdGFjaylzXV0+PC9mYWlsdXJlPgogICAgIDwvdGVzdGNhc2U+CkBAIC05NCw0NSArMTA4
LDE1MiBAQCBJbnZhbGlkIGNoYXJhY3RlcnMgaW4gYnJhY2tldHMgW10lKHN0YWNrKXNdXT48L2Zh
aWx1cmU+CiAgIDx0ZXN0c3VpdGUgbmFtZT0iRGlzYWJsZWRUZXN0IiB0ZXN0cz0iMSIgZmFpbHVy
ZXM9IjAiIGRpc2FibGVkPSIxIiBlcnJvcnM9IjAiIHRpbWU9IioiPgogICAgIDx0ZXN0Y2FzZSBu
YW1lPSJESVNBQkxFRF90ZXN0X25vdF9ydW4iIHN0YXR1cz0ibm90cnVuIiB0aW1lPSIqIiBjbGFz
c25hbWU9IkRpc2FibGVkVGVzdCIvPgogICA8L3Rlc3RzdWl0ZT4KLSAgPHRlc3RzdWl0ZSBuYW1l
PSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiIHRlc3RzPSI0IiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9
IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+Ci0gICAgPHRlc3RjYXNlIG5hbWU9Ik9uZVByb3BlcnR5
IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3Qi
IGtleV8xPSIxIi8+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IkludFZhbHVlZFByb3BlcnR5IiBzdGF0
dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiIGtleV9p
bnQ9IjEiLz4KLSAgICA8dGVzdGNhc2UgbmFtZT0iVGhyZWVQcm9wZXJ0aWVzIiBzdGF0dXM9InJ1
biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiIGtleV8xPSIxIiBr
ZXlfMj0iMiIga2V5XzM9IjMiLz4KLSAgICA8dGVzdGNhc2UgbmFtZT0iVHdvVmFsdWVzRm9yT25l
S2V5VXNlc0xhc3RWYWx1ZSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVy
dHlSZWNvcmRpbmdUZXN0IiBrZXlfMT0iMiIvPgorICA8dGVzdHN1aXRlIG5hbWU9IlByb3BlcnR5
UmVjb3JkaW5nVGVzdCIgdGVzdHM9IjQiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3Jz
PSIwIiB0aW1lPSIqIiBTZXRVcFRlc3RDYXNlPSJ5ZXMiIFRlYXJEb3duVGVzdENhc2U9ImF5ZSI+
CisgICAgPHRlc3RjYXNlIG5hbWU9Ik9uZVByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIg
Y2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiPgorICAgICAgPHByb3BlcnRpZXM+Cisg
ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJrZXlfMSIgdmFsdWU9IjEiLz4KKyAgICAgIDwvcHJvcGVy
dGllcz4KKyAgICA8L3Rlc3RjYXNlPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJJbnRWYWx1ZWRQcm9w
ZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdU
ZXN0Ij4KKyAgICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ia2V5X2lu
dCIgdmFsdWU9IjEiLz4KKyAgICAgIDwvcHJvcGVydGllcz4KKyAgICA8L3Rlc3RjYXNlPgorICAg
IDx0ZXN0Y2FzZSBuYW1lPSJUaHJlZVByb3BlcnRpZXMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBj
bGFzc25hbWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCI+CisgICAgICA8cHJvcGVydGllcz4KKyAg
ICAgICAgPHByb3BlcnR5IG5hbWU9ImtleV8xIiB2YWx1ZT0iMSIvPgorICAgICAgICA8cHJvcGVy
dHkgbmFtZT0ia2V5XzIiIHZhbHVlPSIyIi8+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJrZXlf
MyIgdmFsdWU9IjMiLz4KKyAgICAgIDwvcHJvcGVydGllcz4KKyAgICA8L3Rlc3RjYXNlPgorICAg
IDx0ZXN0Y2FzZSBuYW1lPSJUd29WYWx1ZXNGb3JPbmVLZXlVc2VzTGFzdFZhbHVlIiBzdGF0dXM9
InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiPgorICAgICAg
PHByb3BlcnRpZXM+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJrZXlfMSIgdmFsdWU9IjIiLz4K
KyAgICAgIDwvcHJvcGVydGllcz4KKyAgICA8L3Rlc3RjYXNlPgogICA8L3Rlc3RzdWl0ZT4KICAg
PHRlc3RzdWl0ZSBuYW1lPSJOb0ZpeHR1cmVUZXN0IiB0ZXN0cz0iMyIgZmFpbHVyZXM9IjAiIGRp
c2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgotICAgICA8dGVzdGNhc2UgbmFtZT0iUmVj
b3JkUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ik5vRml4dHVyZVRl
c3QiIGtleT0iMSIvPgotICAgICA8dGVzdGNhc2UgbmFtZT0iRXh0ZXJuYWxVdGlsaXR5VGhhdENh
bGxzUmVjb3JkSW50VmFsdWVkUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25h
bWU9Ik5vRml4dHVyZVRlc3QiIGtleV9mb3JfdXRpbGl0eV9pbnQ9IjEiLz4KLSAgICAgPHRlc3Rj
YXNlIG5hbWU9IkV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFN0cmluZ1ZhbHVlZFByb3Bl
cnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJOb0ZpeHR1cmVUZXN0IiBrZXlf
Zm9yX3V0aWxpdHlfc3RyaW5nPSIxIi8+CisgICAgIDx0ZXN0Y2FzZSBuYW1lPSJSZWNvcmRQcm9w
ZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTm9GaXh0dXJlVGVzdCI+Cisg
ICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgICA8cHJvcGVydHkgbmFtZT0ia2V5IiB2YWx1ZT0i
MSIvPgorICAgICAgIDwvcHJvcGVydGllcz4KKyAgICAgPC90ZXN0Y2FzZT4KKyAgICAgPHRlc3Rj
YXNlIG5hbWU9IkV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZEludFZhbHVlZFByb3BlcnR5
IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJOb0ZpeHR1cmVUZXN0Ij4KKyAgICAg
ICA8cHJvcGVydGllcz4KKyAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJrZXlfZm9yX3V0aWxpdHlf
aW50IiB2YWx1ZT0iMSIvPgorICAgICAgIDwvcHJvcGVydGllcz4KKyAgICAgPC90ZXN0Y2FzZT4K
KyAgICAgPHRlc3RjYXNlIG5hbWU9IkV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFN0cmlu
Z1ZhbHVlZFByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJOb0ZpeHR1
cmVUZXN0Ij4KKyAgICAgICA8cHJvcGVydGllcz4KKyAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJr
ZXlfZm9yX3V0aWxpdHlfc3RyaW5nIiB2YWx1ZT0iMSIvPgorICAgICAgIDwvcHJvcGVydGllcz4K
KyAgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iU2lu
Z2xlL1ZhbHVlUGFyYW1UZXN0IiB0ZXN0cz0iNCIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBl
cnJvcnM9IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNWYWx1ZVBhcmFtQXR0
cmlidXRlLzAiIHZhbHVlX3BhcmFtPSIzMyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFt
ZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiAvPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNWYWx1
ZVBhcmFtQXR0cmlidXRlLzEiIHZhbHVlX3BhcmFtPSI0MiIgc3RhdHVzPSJydW4iIHRpbWU9Iioi
IGNsYXNzbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiAvPgorICAgIDx0ZXN0Y2FzZSBuYW1l
PSJBbm90aGVyVGVzdFRoYXRIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzAiIHZhbHVlX3BhcmFtPSIz
MyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0
IiAvPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJBbm90aGVyVGVzdFRoYXRIYXNWYWx1ZVBhcmFtQXR0
cmlidXRlLzEiIHZhbHVlX3BhcmFtPSI0MiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFt
ZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiAvPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0
ZSBuYW1lPSJUeXBlZFRlc3QvMCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIg
ZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iSGFzVHlwZVBhcmFtQXR0
cmlidXRlIiB0eXBlX3BhcmFtPSIqIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJU
eXBlZFRlc3QvMCIgLz4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iVHlwZWRU
ZXN0LzEiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGlt
ZT0iKiI+CisgICAgPHRlc3RjYXNlIG5hbWU9Ikhhc1R5cGVQYXJhbUF0dHJpYnV0ZSIgdHlwZV9w
YXJhbT0iKiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iVHlwZWRUZXN0LzEiIC8+
CisgIDwvdGVzdHN1aXRlPgorICA8dGVzdHN1aXRlIG5hbWU9IlNpbmdsZS9UeXBlUGFyYW1ldGVy
aXplZFRlc3RDYXNlLzAiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9y
cz0iMCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNlIG5hbWU9Ikhhc1R5cGVQYXJhbUF0dHJpYnV0
ZSIgdHlwZV9wYXJhbT0iKiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xl
L1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMCIgLz4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0
c3VpdGUgbmFtZT0iU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMSIgdGVzdHM9IjEi
IGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVz
dGNhc2UgbmFtZT0iSGFzVHlwZVBhcmFtQXR0cmlidXRlIiB0eXBlX3BhcmFtPSIqIiBzdGF0dXM9
InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJTaW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2Fz
ZS8xIiAvPgogICA8L3Rlc3RzdWl0ZT4KIDwvdGVzdHN1aXRlcz4iIiIgJSB7J3N0YWNrJzogU1RB
Q0tfVFJBQ0VfVEVNUExBVEV9CiAKK0VYUEVDVEVEX0ZJTFRFUkVEX1RFU1RfWE1MID0gIiIiPD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIx
IiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIKKyAgICAgICAg
ICAgIHRpbWVzdGFtcD0iKiIgbmFtZT0iQWxsVGVzdHMiIGFkX2hvY19wcm9wZXJ0eT0iNDIiPgor
ICA8dGVzdHN1aXRlIG5hbWU9IlN1Y2Nlc3NmdWxUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAi
IGRpc2FibGVkPSIwIgorICAgICAgICAgICAgIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgPHRl
c3RjYXNlIG5hbWU9IlN1Y2NlZWRzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJT
dWNjZXNzZnVsVGVzdCIvPgorICA8L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1aXRlcz4iIiIKKworRVhQ
RUNURURfU0hBUkRFRF9URVNUX1hNTCA9ICIiIjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
IlVURi04Ij8+Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMyIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIw
IiBlcnJvcnM9IjAiIHRpbWU9IioiIHRpbWVzdGFtcD0iKiIgbmFtZT0iQWxsVGVzdHMiIGFkX2hv
Y19wcm9wZXJ0eT0iNDIiPgorICA8dGVzdHN1aXRlIG5hbWU9IlN1Y2Nlc3NmdWxUZXN0IiB0ZXN0
cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgorICAg
IDx0ZXN0Y2FzZSBuYW1lPSJTdWNjZWVkcyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFt
ZT0iU3VjY2Vzc2Z1bFRlc3QiLz4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0i
Tm9GaXh0dXJlVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3Jz
PSIwIiB0aW1lPSIqIj4KKyAgICAgPHRlc3RjYXNlIG5hbWU9IlJlY29yZFByb3BlcnR5IiBzdGF0
dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJOb0ZpeHR1cmVUZXN0Ij4KKyAgICAgICA8cHJv
cGVydGllcz4KKyAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJrZXkiIHZhbHVlPSIxIi8+CisgICAg
ICAgPC9wcm9wZXJ0aWVzPgorICAgICA8L3Rlc3RjYXNlPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRl
c3RzdWl0ZSBuYW1lPSJTaW5nbGUvVmFsdWVQYXJhbVRlc3QiIHRlc3RzPSIxIiBmYWlsdXJlcz0i
MCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNlIG5hbWU9
IkFub3RoZXJUZXN0VGhhdEhhc1ZhbHVlUGFyYW1BdHRyaWJ1dGUvMSIgdmFsdWVfcGFyYW09IjQy
IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJTaW5nbGUvVmFsdWVQYXJhbVRlc3Qi
IC8+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPiIiIgogCiBFWFBFQ1RFRF9FTVBUWV9Y
TUwgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0
ZXMgdGVzdHM9IjAiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIq
IiBuYW1lPSJBbGxUZXN0cyI+Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMCIgZmFpbHVyZXM9IjAiIGRp
c2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiCisgICAgICAgICAgICB0aW1lc3RhbXA9Iioi
IG5hbWU9IkFsbFRlc3RzIj4KIDwvdGVzdHN1aXRlcz4iIiIKIAorR1RFU1RfUFJPR1JBTV9QQVRI
ID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoR1RFU1RfUFJPR1JBTV9O
QU1FKQorCitTVVBQT1JUU19UWVBFRF9URVNUUyA9ICdUeXBlZFRlc3QnIGluIGd0ZXN0X3Rlc3Rf
dXRpbHMuU3VicHJvY2VzcygKKyAgICBbR1RFU1RfUFJPR1JBTV9QQVRILCBHVEVTVF9MSVNUX1RF
U1RTX0ZMQUddLCBjYXB0dXJlX3N0ZGVycj1GYWxzZSkub3V0cHV0CisKIAogY2xhc3MgR1Rlc3RY
TUxPdXRwdXRVbml0VGVzdChndGVzdF94bWxfdGVzdF91dGlscy5HVGVzdFhNTFRlc3RDYXNlKToK
ICAgIiIiCiAgIFVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyBYTUwgb3V0cHV0IGZ1bmN0aW9u
YWxpdHkuCiAgICIiIgogCi0gIGRlZiB0ZXN0Tm9uRW1wdHlYbWxPdXRwdXQoc2VsZik6Ci0gICAg
IiIiCi0gICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBhIG5vbi1lbXB0eSBY
TUwgb3V0cHV0LCBhbmQKLSAgICB0ZXN0cyB0aGF0IHRoZSBYTUwgb3V0cHV0IGlzIGV4cGVjdGVk
LgotICAgICIiIgotICAgIHNlbGYuX1Rlc3RYbWxPdXRwdXQoR1RFU1RfUFJPR1JBTV9OQU1FLCBF
WFBFQ1RFRF9OT05fRU1QVFlfWE1MLCAxKQorICAjIFRoaXMgdGVzdCBjdXJyZW50bHkgYnJlYWtz
IG9uIHBsYXRmb3JtcyB0aGF0IGRvIG5vdCBzdXBwb3J0IHR5cGVkIGFuZAorICAjIHR5cGUtcGFy
YW1ldGVyaXplZCB0ZXN0cywgc28gd2UgZG9uJ3QgcnVuIGl0IHVuZGVyIHRoZW0uCisgIGlmIFNV
UFBPUlRTX1RZUEVEX1RFU1RTOgorICAgIGRlZiB0ZXN0Tm9uRW1wdHlYbWxPdXRwdXQoc2VsZik6
CisgICAgICAiIiIKKyAgICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYSBu
b24tZW1wdHkgWE1MIG91dHB1dCwgYW5kCisgICAgICB0ZXN0cyB0aGF0IHRoZSBYTUwgb3V0cHV0
IGlzIGV4cGVjdGVkLgorICAgICAgIiIiCisgICAgICBzZWxmLl9UZXN0WG1sT3V0cHV0KEdURVNU
X1BST0dSQU1fTkFNRSwgRVhQRUNURURfTk9OX0VNUFRZX1hNTCwgMSkKIAogICBkZWYgdGVzdEVt
cHR5WG1sT3V0cHV0KHNlbGYpOgotICAgICIiIgorICAgICIiIlZlcmlmaWVzIFhNTCBvdXRwdXQg
Zm9yIGEgR29vZ2xlIFRlc3QgYmluYXJ5IHdpdGhvdXQgYWN0dWFsIHRlc3RzLgorCiAgICAgUnVu
cyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBhbiBlbXB0eSBYTUwgb3V0cHV0LCBhbmQK
ICAgICB0ZXN0cyB0aGF0IHRoZSBYTUwgb3V0cHV0IGlzIGV4cGVjdGVkLgogICAgICIiIgogCi0g
ICAgc2VsZi5fVGVzdFhtbE91dHB1dCgiZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBFWFBFQ1RFRF9FTVBUWV9YTUwsIDApCisgICAgc2VsZi5fVGVzdFht
bE91dHB1dCgnZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCcsIEVYUEVDVEVEX0VNUFRZX1hNTCwgMCkK
KworICBkZWYgdGVzdFRpbWVzdGFtcFZhbHVlKHNlbGYpOgorICAgICIiIkNoZWNrcyB3aGV0aGVy
IHRoZSB0aW1lc3RhbXAgYXR0cmlidXRlIGluIHRoZSBYTUwgb3V0cHV0IGlzIHZhbGlkLgorCisg
ICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBhbiBlbXB0eSBYTUwgb3V0cHV0
LCBhbmQgY2hlY2tzIGlmCisgICAgdGhlIHRpbWVzdGFtcCBhdHRyaWJ1dGUgaW4gdGhlIHRlc3Rz
dWl0ZXMgdGFnIGlzIHZhbGlkLgorICAgICIiIgorICAgIGFjdHVhbCA9IHNlbGYuX0dldFhtbE91
dHB1dCgnZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCcsIFtdLCB7fSwgMCkKKyAgICBkYXRlX3RpbWVf
c3RyID0gYWN0dWFsLmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKCd0aW1lc3RhbXAn
KS52YWx1ZQorICAgICMgZGF0ZXRpbWUuc3RycHRpbWUoKSBpcyBvbmx5IGF2YWlsYWJsZSBpbiBQ
eXRob24gMi41KyBzbyB3ZSBoYXZlIHRvCisgICAgIyBwYXJzZSB0aGUgZXhwZWN0ZWQgZGF0ZXRp
bWUgbWFudWFsbHkuCisgICAgbWF0Y2ggPSByZS5tYXRjaChyJyhcZCspLShcZFxkKS0oXGRcZClU
KFxkXGQpOihcZFxkKTooXGRcZCknLCBkYXRlX3RpbWVfc3RyKQorICAgIHNlbGYuYXNzZXJ0VHJ1
ZSgKKyAgICAgICAgcmUubWF0Y2gsCisgICAgICAgICdYTUwgZGF0ZXR0aW1lIHN0cmluZyAlcyBo
YXMgaW5jb3JyZWN0IGZvcm1hdCcgJSBkYXRlX3RpbWVfc3RyKQorICAgIGRhdGVfdGltZV9mcm9t
X3htbCA9IGRhdGV0aW1lLmRhdGV0aW1lKAorICAgICAgICB5ZWFyPWludChtYXRjaC5ncm91cCgx
KSksIG1vbnRoPWludChtYXRjaC5ncm91cCgyKSksCisgICAgICAgIGRheT1pbnQobWF0Y2guZ3Jv
dXAoMykpLCBob3VyPWludChtYXRjaC5ncm91cCg0KSksCisgICAgICAgIG1pbnV0ZT1pbnQobWF0
Y2guZ3JvdXAoNSkpLCBzZWNvbmQ9aW50KG1hdGNoLmdyb3VwKDYpKSkKKworICAgIHRpbWVfZGVs
dGEgPSBhYnMoZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkgLSBkYXRlX3RpbWVfZnJvbV94bWwpCisg
ICAgIyB0aW1lc3RhbXAgdmFsdWUgc2hvdWxkIGJlIG5lYXIgdGhlIGN1cnJlbnQgbG9jYWwgdGlt
ZQorICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0aW1lX2RlbHRhIDwgZGF0ZXRpbWUudGltZWRlbHRhKHNl
Y29uZHM9NjAwKSwKKyAgICAgICAgICAgICAgICAgICAgJ3RpbWVfZGVsdGEgaXMgJXMnICUgdGlt
ZV9kZWx0YSkKKyAgICBhY3R1YWwudW5saW5rKCkKIAogICBkZWYgdGVzdERlZmF1bHRPdXRwdXRG
aWxlKHNlbGYpOgogICAgICIiIgpAQCAtMTQyLDcgKzI2Myw3IEBAIGNsYXNzIEdUZXN0WE1MT3V0
cHV0VW5pdFRlc3QoZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMuR1Rlc3RYTUxUZXN0Q2FzZSk6CiAgICAg
b3V0cHV0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfREVGQVVMVF9PVVRQVVRfRklM
RSkKICAgICBndGVzdF9wcm9nX3BhdGggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRh
YmxlUGF0aCgKLSAgICAgICAgImd0ZXN0X25vX3Rlc3RfdW5pdHRlc3QiKQorICAgICAgICAnZ3Rl
c3Rfbm9fdGVzdF91bml0dGVzdCcpCiAgICAgdHJ5OgogICAgICAgb3MucmVtb3ZlKG91dHB1dF9m
aWxlKQogICAgIGV4Y2VwdCBPU0Vycm9yLCBlOgpAQCAtMTUwLDcgKzI3MSw3IEBAIGNsYXNzIEdU
ZXN0WE1MT3V0cHV0VW5pdFRlc3QoZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMuR1Rlc3RYTUxUZXN0Q2Fz
ZSk6CiAgICAgICAgIHJhaXNlCiAKICAgICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNz
KAotICAgICAgICBbZ3Rlc3RfcHJvZ19wYXRoLCAiJXM9eG1sIiAlIEdURVNUX09VVFBVVF9GTEFH
XSwKKyAgICAgICAgW2d0ZXN0X3Byb2dfcGF0aCwgJyVzPXhtbCcgJSBHVEVTVF9PVVRQVVRfRkxB
R10sCiAgICAgICAgIHdvcmtpbmdfZGlyPWd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpKQog
ICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKICAgICBzZWxmLmFzc2VydEVxdWFscygwLCBwLmV4
aXRfY29kZSkKQEAgLTE2Myw2MCArMjg0LDk4IEBAIGNsYXNzIEdUZXN0WE1MT3V0cHV0VW5pdFRl
c3QoZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMuR1Rlc3RYTUxUZXN0Q2FzZSk6CiAgICAgIiIiCiAKICAg
ICB4bWxfcGF0aCA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QUk9HUkFNX05BTUUgKyAib3V0Lnht
bCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfUFJPR1JBTV9OQU1FICsgJ291
dC54bWwnKQogICAgIGlmIG9zLnBhdGguaXNmaWxlKHhtbF9wYXRoKToKICAgICAgIG9zLnJlbW92
ZSh4bWxfcGF0aCkKIAotICAgIGd0ZXN0X3Byb2dfcGF0aCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0
VGVzdEV4ZWN1dGFibGVQYXRoKEdURVNUX1BST0dSQU1fTkFNRSkKLQotICAgIGNvbW1hbmQgPSBb
Z3Rlc3RfcHJvZ19wYXRoLAotICAgICAgICAgICAgICAgIiVzPXhtbDolcyIgJSAoR1RFU1RfT1VU
UFVUX0ZMQUcsIHhtbF9wYXRoKSwKLSAgICAgICAgICAgICAgICItLXNodXRfZG93bl94bWwiXQor
ICAgIGNvbW1hbmQgPSBbR1RFU1RfUFJPR1JBTV9QQVRILAorICAgICAgICAgICAgICAgJyVzPXht
bDolcycgJSAoR1RFU1RfT1VUUFVUX0ZMQUcsIHhtbF9wYXRoKSwKKyAgICAgICAgICAgICAgICct
LXNodXRfZG93bl94bWwnXQogICAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29t
bWFuZCkKICAgICBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsOgotICAgICAgc2VsZi5hc3NlcnRf
KEZhbHNlLAotICAgICAgICAgICAgICAgICAgICIlcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAlZCIg
JSAoZ3Rlc3RfcHJvZ19uYW1lLCBwLnNpZ25hbCkpCisgICAgICAjIHAuc2lnbmFsIGlzIGF2YWls
YWJsZSBvbmx5IGlmIHAudGVybWluYXRlZF9ieV9zaWduYWwgaXMgVHJ1ZS4KKyAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoCisgICAgICAgICAgcC50ZXJtaW5hdGVkX2J5X3NpZ25hbCwKKyAgICAgICAg
ICAnJXMgd2FzIGtpbGxlZCBieSBzaWduYWwgJWQnICUgKEdURVNUX1BST0dSQU1fTkFNRSwgcC5z
aWduYWwpKQogICAgIGVsc2U6CiAgICAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCiAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygxLCBwLmV4aXRfY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICInJXMnIGV4aXRlZCB3aXRoIGNvZGUgJXMsIHdoaWNoIGRvZXNuJ3QgbWF0Y2ggIgotICAgICAg
ICAgICAgICAgICAgICAgICAgInRoZSBleHBlY3RlZCBleGl0IGNvZGUgJXMuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgJ3RoZSBleHBlY3RlZCBleGl0IGNvZGUgJXMuJwogICAgICAgICAgICAg
ICAgICAgICAgICAgJSAoY29tbWFuZCwgcC5leGl0X2NvZGUsIDEpKQogCiAgICAgc2VsZi5hc3Nl
cnRfKG5vdCBvcy5wYXRoLmlzZmlsZSh4bWxfcGF0aCkpCiAKKyAgZGVmIHRlc3RGaWx0ZXJlZFRl
c3RYbWxPdXRwdXQoc2VsZik6CisgICAgIiIiVmVyaWZpZXMgWE1MIG91dHB1dCB3aGVuIGEgZmls
dGVyIGlzIGFwcGxpZWQuCiAKLSAgZGVmIF9UZXN0WG1sT3V0cHV0KHNlbGYsIGd0ZXN0X3Byb2df
bmFtZSwgZXhwZWN0ZWRfeG1sLCBleHBlY3RlZF9leGl0X2NvZGUpOgorICAgIFJ1bnMgYSB0ZXN0
IHByb2dyYW0gdGhhdCBleGVjdXRlcyBvbmx5IHNvbWUgdGVzdHMgYW5kIHZlcmlmaWVzIHRoYXQK
KyAgICBub24tc2VsZWN0ZWQgdGVzdHMgZG8gbm90IHNob3cgdXAgaW4gdGhlIFhNTCBvdXRwdXQu
CiAgICAgIiIiCi0gICAgQXNzZXJ0cyB0aGF0IHRoZSBYTUwgZG9jdW1lbnQgZ2VuZXJhdGVkIGJ5
IHJ1bm5pbmcgdGhlIHByb2dyYW0KLSAgICBndGVzdF9wcm9nX25hbWUgbWF0Y2hlcyBleHBlY3Rl
ZF94bWwsIGEgc3RyaW5nIGNvbnRhaW5pbmcgYW5vdGhlcgotICAgIFhNTCBkb2N1bWVudC4gIEZ1
cnRoZXJtb3JlLCB0aGUgcHJvZ3JhbSdzIGV4aXQgY29kZSBtdXN0IGJlCi0gICAgZXhwZWN0ZWRf
ZXhpdF9jb2RlLgorCisgICAgc2VsZi5fVGVzdFhtbE91dHB1dChHVEVTVF9QUk9HUkFNX05BTUUs
IEVYUEVDVEVEX0ZJTFRFUkVEX1RFU1RfWE1MLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ZXh0cmFfYXJncz1bJyVzPVN1Y2Nlc3NmdWxUZXN0LionICUgR1RFU1RfRklMVEVSX0ZMQUddKQor
CisgIGRlZiB0ZXN0U2hhcmRlZFRlc3RYbWxPdXRwdXQoc2VsZik6CisgICAgIiIiVmVyaWZpZXMg
WE1MIG91dHB1dCB3aGVuIHJ1biB1c2luZyBtdWx0aXBsZSBzaGFyZHMuCisKKyAgICBSdW5zIGEg
dGVzdCBwcm9ncmFtIHRoYXQgZXhlY3V0ZXMgb25seSBvbmUgc2hhcmQgYW5kIHZlcmlmaWVzIHRo
YXQgdGVzdHMKKyAgICBmcm9tIG90aGVyIHNoYXJkcyBkbyBub3Qgc2hvdyB1cCBpbiB0aGUgWE1M
IG91dHB1dC4KKyAgICAiIiIKKworICAgIHNlbGYuX1Rlc3RYbWxPdXRwdXQoCisgICAgICAgIEdU
RVNUX1BST0dSQU1fTkFNRSwKKyAgICAgICAgRVhQRUNURURfU0hBUkRFRF9URVNUX1hNTCwKKyAg
ICAgICAgMCwKKyAgICAgICAgZXh0cmFfZW52PXtTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMCcsCisg
ICAgICAgICAgICAgICAgICAgVE9UQUxfU0hBUkRTX0VOVl9WQVI6ICcxMCd9KQorCisgIGRlZiBf
R2V0WG1sT3V0cHV0KHNlbGYsIGd0ZXN0X3Byb2dfbmFtZSwgZXh0cmFfYXJncywgZXh0cmFfZW52
LAorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGUpOgorICAgICIiIgorICAg
IFJldHVybnMgdGhlIHhtbCBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgdGhlIHByb2dyYW0g
Z3Rlc3RfcHJvZ19uYW1lLgorICAgIEZ1cnRoZXJtb3JlLCB0aGUgcHJvZ3JhbSdzIGV4aXQgY29k
ZSBtdXN0IGJlIGV4cGVjdGVkX2V4aXRfY29kZS4KICAgICAiIiIKICAgICB4bWxfcGF0aCA9IG9z
LnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBndGVzdF9wcm9nX25hbWUgKyAib3V0LnhtbCIpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3Rlc3RfcHJvZ19uYW1lICsgJ291dC54bWwnKQogICAgIGd0ZXN0X3By
b2dfcGF0aCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKGd0ZXN0X3By
b2dfbmFtZSkKIAotICAgIGNvbW1hbmQgPSBbZ3Rlc3RfcHJvZ19wYXRoLCAiJXM9eG1sOiVzIiAl
IChHVEVTVF9PVVRQVVRfRkxBRywgeG1sX3BhdGgpXQotICAgIHAgPSBndGVzdF90ZXN0X3V0aWxz
LlN1YnByb2Nlc3MoY29tbWFuZCkKKyAgICBjb21tYW5kID0gKFtndGVzdF9wcm9nX3BhdGgsICcl
cz14bWw6JXMnICUgKEdURVNUX09VVFBVVF9GTEFHLCB4bWxfcGF0aCldICsKKyAgICAgICAgICAg
ICAgIGV4dHJhX2FyZ3MpCisgICAgZW52aXJvbl9jb3B5ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAg
ICBpZiBleHRyYV9lbnY6CisgICAgICBlbnZpcm9uX2NvcHkudXBkYXRlKGV4dHJhX2VudikKKyAg
ICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQsIGVudj1lbnZpcm9uX2Nv
cHkpCisKICAgICBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsOgogICAgICAgc2VsZi5hc3NlcnRf
KEZhbHNlLAotICAgICAgICAgICAgICAgICAgICIlcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAlZCIg
JSAoZ3Rlc3RfcHJvZ19uYW1lLCBwLnNpZ25hbCkpCisgICAgICAgICAgICAgICAgICAgJyVzIHdh
cyBraWxsZWQgYnkgc2lnbmFsICVkJyAlIChndGVzdF9wcm9nX25hbWUsIHAuc2lnbmFsKSkKICAg
ICBlbHNlOgogICAgICAgc2VsZi5hc3NlcnRfKHAuZXhpdGVkKQogICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoZXhwZWN0ZWRfZXhpdF9jb2RlLCBwLmV4aXRfY29kZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICInJXMnIGV4aXRlZCB3aXRoIGNvZGUgJXMsIHdoaWNoIGRvZXNuJ3QgbWF0Y2ggIgot
ICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBleHBlY3RlZCBleGl0IGNvZGUgJXMuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgJ3RoZSBleHBlY3RlZCBleGl0IGNvZGUgJXMuJwogICAgICAg
ICAgICAgICAgICAgICAgICAgJSAoY29tbWFuZCwgcC5leGl0X2NvZGUsIGV4cGVjdGVkX2V4aXRf
Y29kZSkpCisgICAgYWN0dWFsID0gbWluaWRvbS5wYXJzZSh4bWxfcGF0aCkKKyAgICByZXR1cm4g
YWN0dWFsCiAKKyAgZGVmIF9UZXN0WG1sT3V0cHV0KHNlbGYsIGd0ZXN0X3Byb2dfbmFtZSwgZXhw
ZWN0ZWRfeG1sLAorICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlLCBleHRy
YV9hcmdzPU5vbmUsIGV4dHJhX2Vudj1Ob25lKToKKyAgICAiIiIKKyAgICBBc3NlcnRzIHRoYXQg
dGhlIFhNTCBkb2N1bWVudCBnZW5lcmF0ZWQgYnkgcnVubmluZyB0aGUgcHJvZ3JhbQorICAgIGd0
ZXN0X3Byb2dfbmFtZSBtYXRjaGVzIGV4cGVjdGVkX3htbCwgYSBzdHJpbmcgY29udGFpbmluZyBh
bm90aGVyCisgICAgWE1MIGRvY3VtZW50LiAgRnVydGhlcm1vcmUsIHRoZSBwcm9ncmFtJ3MgZXhp
dCBjb2RlIG11c3QgYmUKKyAgICBleHBlY3RlZF9leGl0X2NvZGUuCisgICAgIiIiCisKKyAgICBh
Y3R1YWwgPSBzZWxmLl9HZXRYbWxPdXRwdXQoZ3Rlc3RfcHJvZ19uYW1lLCBleHRyYV9hcmdzIG9y
IFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9lbnYgb3Ige30sIGV4
cGVjdGVkX2V4aXRfY29kZSkKICAgICBleHBlY3RlZCA9IG1pbmlkb20ucGFyc2VTdHJpbmcoZXhw
ZWN0ZWRfeG1sKQotICAgIGFjdHVhbCAgID0gbWluaWRvbS5wYXJzZSh4bWxfcGF0aCkKICAgICBz
ZWxmLk5vcm1hbGl6ZVhtbChhY3R1YWwuZG9jdW1lbnRFbGVtZW50KQogICAgIHNlbGYuQXNzZXJ0
RXF1aXZhbGVudE5vZGVzKGV4cGVjdGVkLmRvY3VtZW50RWxlbWVudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhY3R1YWwuZG9jdW1lbnRFbGVtZW50KQogICAgIGV4cGVjdGVkLnVu
bGluaygpCi0gICAgYWN0dWFsICAudW5saW5rKCkKLQorICAgIGFjdHVhbC51bmxpbmsoKQogCiAK
IGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYwppbmRleCBmYzA3
ZWY0NmJkNjY3YWE5MmU1ZGFmN2YyMDJlZmNkNzYzNjZiZjhhLi4yZWU4ODM4MDA1ZWVlYzIzNTcx
YmFlMzg5Yzc5MjY5OGMzMGM0ZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MKQEAgLTI3LDggKzI3
LDYgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotLy8gQXV0aG9yOiBlZWZh
Y21AZ21haWwuY29tIChTZWFuIE1jYWZlZSkKLQogLy8gVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVz
dCBYTUwgb3V0cHV0LgogLy8KIC8vIEEgdXNlciBjYW4gc3BlY2lmeSBYTUwgb3V0cHV0IGluIGEg
R29vZ2xlIFRlc3QgcHJvZ3JhbSB0byBydW4gdmlhCkBAIC0zOCwxMyArMzYsMTYgQEAKIC8vIFRo
aXMgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRlc3QuICBEb24n
dCBydW4gaXQKIC8vIGRpcmVjdGx5LgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgogCiB1c2luZyA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0Owog
dXNpbmcgOjp0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7Cit1c2luZyA6OnRlc3Rpbmc6OlRl
c3RXaXRoUGFyYW07CiB1c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OwordXNpbmcgOjp0ZXN0aW5n
OjpUZXN0OwordXNpbmcgOjp0ZXN0aW5nOjpWYWx1ZXM7CiAKLWNsYXNzIFN1Y2Nlc3NmdWxUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgU3VjY2Vzc2Z1bFRlc3QgOiBwdWJsaWMg
VGVzdCB7CiB9OwogCiBURVNUX0YoU3VjY2Vzc2Z1bFRlc3QsIFN1Y2NlZWRzKSB7CkBAIC01Miwx
NCArNTMsMTQgQEAgVEVTVF9GKFN1Y2Nlc3NmdWxUZXN0LCBTdWNjZWVkcykgewogICBBU1NFUlRf
RVEoMSwgMSk7CiB9CiAKLWNsYXNzIEZhaWxlZFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
CitjbGFzcyBGYWlsZWRUZXN0IDogcHVibGljIFRlc3QgewogfTsKIAogVEVTVF9GKEZhaWxlZFRl
c3QsIEZhaWxzKSB7CiAgIEFTU0VSVF9FUSgxLCAyKTsKIH0KIAotY2xhc3MgRGlzYWJsZWRUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgRGlzYWJsZWRUZXN0IDogcHVibGljIFRl
c3QgewogfTsKIAogVEVTVF9GKERpc2FibGVkVGVzdCwgRElTQUJMRURfdGVzdF9ub3RfcnVuKSB7
CkBAIC05MSw3ICs5MiwxMCBAQCBURVNUKEludmFsaWRDaGFyYWN0ZXJzVGVzdCwgSW52YWxpZENo
YXJhY3RlcnNJbk1lc3NhZ2UpIHsKICAgRkFJTCgpIDw8ICJJbnZhbGlkIGNoYXJhY3RlcnMgaW4g
YnJhY2tldHMgW1x4MVx4Ml0iOwogfQogCi1jbGFzcyBQcm9wZXJ0eVJlY29yZGluZ1Rlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7CitjbGFzcyBQcm9wZXJ0eVJlY29yZGluZ1Rlc3QgOiBwdWJs
aWMgVGVzdCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgeyBSZWNv
cmRQcm9wZXJ0eSgiU2V0VXBUZXN0Q2FzZSIsICJ5ZXMiKTsgfQorICBzdGF0aWMgdm9pZCBUZWFy
RG93blRlc3RDYXNlKCkgeyBSZWNvcmRQcm9wZXJ0eSgiVGVhckRvd25UZXN0Q2FzZSIsICJheWUi
KTsgfQogfTsKIAogVEVTVF9GKFByb3BlcnR5UmVjb3JkaW5nVGVzdCwgT25lUHJvcGVydHkpIHsK
QEAgLTExNywxMiArMTIxLDEyIEBAIFRFU1QoTm9GaXh0dXJlVGVzdCwgUmVjb3JkUHJvcGVydHkp
IHsKICAgUmVjb3JkUHJvcGVydHkoImtleSIsICIxIik7CiB9CiAKLXZvaWQgRXh0ZXJuYWxVdGls
aXR5VGhhdENhbGxzUmVjb3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBpbnQgdmFsdWUpIHsK
K3ZvaWQgRXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpz
dHJpbmcmIGtleSwgaW50IHZhbHVlKSB7CiAgIHRlc3Rpbmc6OlRlc3Q6OlJlY29yZFByb3BlcnR5
KGtleSwgdmFsdWUpOwogfQogCi12b2lkIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFBy
b3BlcnR5KGNvbnN0IGNoYXIqIGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogdmFsdWUpIHsKK3ZvaWQgRXh0ZXJuYWxVdGlsaXR5VGhh
dENhbGxzUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVl
KSB7CiAgIHRlc3Rpbmc6OlRlc3Q6OlJlY29yZFByb3BlcnR5KGtleSwgdmFsdWUpOwogfQogCkBA
IC0xMzQsNiArMTM4LDM1IEBAIFRFU1QoTm9GaXh0dXJlVGVzdCwgRXh0ZXJuYWxVdGlsaXR5VGhh
dENhbGxzUmVjb3JkU3RyaW5nVmFsdWVkUHJvcGVydHkpIHsKICAgRXh0ZXJuYWxVdGlsaXR5VGhh
dENhbGxzUmVjb3JkUHJvcGVydHkoImtleV9mb3JfdXRpbGl0eV9zdHJpbmciLCAiMSIpOwogfQog
CisvLyBWZXJpZmllcyB0aGF0IHRoZSB0ZXN0IHBhcmFtZXRlciB2YWx1ZSBpcyBvdXRwdXQgaW4g
dGhlICd2YWx1ZV9wYXJhbScKKy8vIFhNTCBhdHRyaWJ1dGUgZm9yIHZhbHVlLXBhcmFtZXRlcml6
ZWQgdGVzdHMuCitjbGFzcyBWYWx1ZVBhcmFtVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGlu
dD4ge307CitURVNUX1AoVmFsdWVQYXJhbVRlc3QsIEhhc1ZhbHVlUGFyYW1BdHRyaWJ1dGUpIHt9
CitURVNUX1AoVmFsdWVQYXJhbVRlc3QsIEFub3RoZXJUZXN0VGhhdEhhc1ZhbHVlUGFyYW1BdHRy
aWJ1dGUpIHt9CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChTaW5nbGUsIFZhbHVlUGFyYW1UZXN0
LCBWYWx1ZXMoMzMsIDQyKSk7CisKKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAorLy8gVmVyaWZp
ZXMgdGhhdCB0aGUgdHlwZSBwYXJhbWV0ZXIgbmFtZSBpcyBvdXRwdXQgaW4gdGhlICd0eXBlX3Bh
cmFtJworLy8gWE1MIGF0dHJpYnV0ZSBmb3IgdHlwZWQgdGVzdHMuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgVHlwZWRUZXN0IDogcHVibGljIFRlc3Qge307Cit0eXBlZGVmIHRlc3Rpbmc6
OlR5cGVzPGludCwgbG9uZz4gVHlwZWRUZXN0VHlwZXM7CitUWVBFRF9URVNUX0NBU0UoVHlwZWRU
ZXN0LCBUeXBlZFRlc3RUeXBlcyk7CitUWVBFRF9URVNUKFR5cGVkVGVzdCwgSGFzVHlwZVBhcmFt
QXR0cmlidXRlKSB7fQorI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisvLyBW
ZXJpZmllcyB0aGF0IHRoZSB0eXBlIHBhcmFtZXRlciBuYW1lIGlzIG91dHB1dCBpbiB0aGUgJ3R5
cGVfcGFyYW0nCisvLyBYTUwgYXR0cmlidXRlIGZvciB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSA6
IHB1YmxpYyBUZXN0IHt9OworVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtZXRlcml6ZWRUZXN0
Q2FzZSk7CitUWVBFRF9URVNUX1AoVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSwgSGFzVHlwZVBh
cmFtQXR0cmlidXRlKSB7fQorUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtZXRl
cml6ZWRUZXN0Q2FzZSwgSGFzVHlwZVBhcmFtQXR0cmlidXRlKTsKK3R5cGVkZWYgdGVzdGluZzo6
VHlwZXM8aW50LCBsb25nPiBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlVHlwZXM7CitJTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChTaW5nbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZVR5cGVzKTsKKyNlbmRpZgorCiBpbnQgbWFp
bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKICAgSW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3Yp
OwogCkBAIC0xNDEsNSArMTc0LDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7
CiAgICAgVGVzdEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMgPSBVbml0VGVzdDo6R2V0SW5zdGFu
Y2UoKS0+bGlzdGVuZXJzKCk7CiAgICAgZGVsZXRlIGxpc3RlbmVycy5SZWxlYXNlKGxpc3RlbmVy
cy5kZWZhdWx0X3htbF9nZW5lcmF0b3IoKSk7CiAgIH0KKyAgdGVzdGluZzo6VGVzdDo6UmVjb3Jk
UHJvcGVydHkoImFkX2hvY19wcm9wZXJ0eSIsICI0MiIpOwogICByZXR1cm4gUlVOX0FMTF9URVNU
UygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94
bWxfdGVzdF91dGlscy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1s
X3Rlc3RfdXRpbHMucHkKaW5kZXggYzgzYzNiN2VhNzliMmQ3NjJlZWQ2NjVlMmQ2MWRmOGI5ZWEw
ODQ0My4uMWUwMzU4NTkyZmIwMDg0ZjBhODljMzQzNmZmNzUxNzQ4NjgyN2FjZCAxMDA3NTUKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfdGVzdF91dGlscy5weQor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF90ZXN0X3V0aWxzLnB5
CkBAIC0xLDUgKzEsMyBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCiAjIENvcHlyaWdodCAy
MDA2LCBHb29nbGUgSW5jLgogIyBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwpAQCAtMzEsMTYgKzI5
LDExIEBACiAKICIiIlVuaXQgdGVzdCB1dGlsaXRpZXMgZm9yIGd0ZXN0X3htbF9vdXRwdXQiIiIK
IAotX19hdXRob3JfXyA9ICdlZWZhY21AZ21haWwuY29tIChTZWFuIE1jYWZlZSknCi0KIGltcG9y
dCByZQogZnJvbSB4bWwuZG9tIGltcG9ydCBtaW5pZG9tLCBOb2RlCi0KIGltcG9ydCBndGVzdF90
ZXN0X3V0aWxzCiAKLQotR1RFU1RfT1VUUFVUX0ZMQUcgICAgICAgICA9ICItLWd0ZXN0X291dHB1
dCIKLUdURVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUgPSAidGVzdF9kZXRhaWwueG1sIgorR1RFU1Rf
REVGQVVMVF9PVVRQVVRfRklMRSA9ICd0ZXN0X2RldGFpbC54bWwnCiAKIGNsYXNzIEdUZXN0WE1M
VGVzdENhc2UoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CiAgICIiIgpAQCAtNTgsOCArNTEs
OSBAQCBjbGFzcyBHVGVzdFhNTFRlc3RDYXNlKGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgog
ICAgICogIEl0IGhhcyB0aGUgc2FtZSB0YWcgbmFtZSBhcyBleHBlY3RlZF9ub2RlLgogICAgICog
IEl0IGhhcyB0aGUgc2FtZSBzZXQgb2YgYXR0cmlidXRlcyBhcyBleHBlY3RlZF9ub2RlLCBlYWNo
IHdpdGgKICAgICAgICB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1
dGUgb2YgZXhwZWN0ZWRfbm9kZS4KLSAgICAgICBBbiBleGNlcHRpb24gaXMgYW55IGF0dHJpYnV0
ZSBuYW1lZCAidGltZSIsIHdoaWNoIG5lZWRzIG9ubHkgYmUKLSAgICAgICBjb252ZXJ0aWJsZSB0
byBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4KKyAgICAgICBFeGNlcHRpb25zIGFyZSBhbnkgYXR0
cmlidXRlIG5hbWVkICJ0aW1lIiwgd2hpY2ggbmVlZHMgb25seSBiZQorICAgICAgIGNvbnZlcnRp
YmxlIHRvIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGFuZCBhbnkgYXR0cmlidXRlIG5hbWVkCisg
ICAgICAgInR5cGVfcGFyYW0iIHdoaWNoIG9ubHkgaGFzIHRvIGJlIG5vbi1lbXB0eS4KICAgICAq
ICBJdCBoYXMgYW4gZXF1aXZhbGVudCBzZXQgb2YgY2hpbGQgbm9kZXMgKGluY2x1ZGluZyBlbGVt
ZW50cyBhbmQKICAgICAgICBDREFUQSBzZWN0aW9ucykgYXMgZXhwZWN0ZWRfbm9kZS4gIE5vdGUg
dGhhdCB3ZSBpZ25vcmUgdGhlCiAgICAgICAgb3JkZXIgb2YgdGhlIGNoaWxkcmVuIGFzIHRoZXkg
YXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlIGluIGFueQpAQCAtNzksMjMgKzczLDI3IEBAIGNsYXNz
IEdUZXN0WE1MVGVzdENhc2UoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CiAgICAgYWN0dWFs
X2F0dHJpYnV0ZXMgICA9IGFjdHVhbF9ub2RlICAuYXR0cmlidXRlcwogICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKAogICAgICAgICBleHBlY3RlZF9hdHRyaWJ1dGVzLmxlbmd0aCwgYWN0dWFsX2F0dHJp
YnV0ZXMubGVuZ3RoLAotICAgICAgICAiYXR0cmlidXRlIG51bWJlcnMgZGlmZmVyIGluIGVsZW1l
bnQgIiArIGFjdHVhbF9ub2RlLnRhZ05hbWUpCisgICAgICAgICdhdHRyaWJ1dGUgbnVtYmVycyBk
aWZmZXIgaW4gZWxlbWVudCAlczpcbkV4cGVjdGVkOiAlclxuQWN0dWFsOiAlcicgJSAoCisgICAg
ICAgICAgICBhY3R1YWxfbm9kZS50YWdOYW1lLCBleHBlY3RlZF9hdHRyaWJ1dGVzLmtleXMoKSwK
KyAgICAgICAgICAgIGFjdHVhbF9hdHRyaWJ1dGVzLmtleXMoKSkpCiAgICAgZm9yIGkgaW4gcmFu
Z2UoZXhwZWN0ZWRfYXR0cmlidXRlcy5sZW5ndGgpOgogICAgICAgZXhwZWN0ZWRfYXR0ciA9IGV4
cGVjdGVkX2F0dHJpYnV0ZXMuaXRlbShpKQogICAgICAgYWN0dWFsX2F0dHIgICA9IGFjdHVhbF9h
dHRyaWJ1dGVzLmdldChleHBlY3RlZF9hdHRyLm5hbWUpCiAgICAgICBzZWxmLmFzc2VydF8oCiAg
ICAgICAgICAgYWN0dWFsX2F0dHIgaXMgbm90IE5vbmUsCi0gICAgICAgICAgImV4cGVjdGVkIGF0
dHJpYnV0ZSAlcyBub3QgZm91bmQgaW4gZWxlbWVudCAlcyIgJQorICAgICAgICAgICdleHBlY3Rl
ZCBhdHRyaWJ1dGUgJXMgbm90IGZvdW5kIGluIGVsZW1lbnQgJXMnICUKICAgICAgICAgICAoZXhw
ZWN0ZWRfYXR0ci5uYW1lLCBhY3R1YWxfbm9kZS50YWdOYW1lKSkKLSAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKGV4cGVjdGVkX2F0dHIudmFsdWUsIGFjdHVhbF9hdHRyLnZhbHVlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIiB2YWx1ZXMgb2YgYXR0cmlidXRlICVzIGluIGVsZW1lbnQgJXMgZGlm
ZmVyIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAoZXhwZWN0ZWRfYXR0ci5uYW1lLCBhY3R1
YWxfbm9kZS50YWdOYW1lKSkKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorICAgICAgICAgIGV4
cGVjdGVkX2F0dHIudmFsdWUsIGFjdHVhbF9hdHRyLnZhbHVlLAorICAgICAgICAgICcgdmFsdWVz
IG9mIGF0dHJpYnV0ZSAlcyBpbiBlbGVtZW50ICVzIGRpZmZlcjogJXMgdnMgJXMnICUKKyAgICAg
ICAgICAoZXhwZWN0ZWRfYXR0ci5uYW1lLCBhY3R1YWxfbm9kZS50YWdOYW1lLAorICAgICAgICAg
ICBleHBlY3RlZF9hdHRyLnZhbHVlLCBhY3R1YWxfYXR0ci52YWx1ZSkpCiAKICAgICBleHBlY3Rl
ZF9jaGlsZHJlbiA9IHNlbGYuX0dldENoaWxkcmVuKGV4cGVjdGVkX25vZGUpCiAgICAgYWN0dWFs
X2NoaWxkcmVuID0gc2VsZi5fR2V0Q2hpbGRyZW4oYWN0dWFsX25vZGUpCiAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoCiAgICAgICAgIGxlbihleHBlY3RlZF9jaGlsZHJlbiksIGxlbihhY3R1YWxfY2hp
bGRyZW4pLAotICAgICAgICAibnVtYmVyIG9mIGNoaWxkIGVsZW1lbnRzIGRpZmZlciBpbiBlbGVt
ZW50ICIgKyBhY3R1YWxfbm9kZS50YWdOYW1lKQorICAgICAgICAnbnVtYmVyIG9mIGNoaWxkIGVs
ZW1lbnRzIGRpZmZlciBpbiBlbGVtZW50ICcgKyBhY3R1YWxfbm9kZS50YWdOYW1lKQogICAgIGZv
ciBjaGlsZF9pZCwgY2hpbGQgaW4gZXhwZWN0ZWRfY2hpbGRyZW4uaXRlcml0ZW1zKCk6CiAgICAg
ICBzZWxmLmFzc2VydF8oY2hpbGRfaWQgaW4gYWN0dWFsX2NoaWxkcmVuLAogICAgICAgICAgICAg
ICAgICAgICc8JXM+IGlzIG5vdCBpbiA8JXM+IChpbiBlbGVtZW50ICVzKScgJQpAQCAtMTAzLDE5
ICsxMDEsMjIgQEAgY2xhc3MgR1Rlc3RYTUxUZXN0Q2FzZShndGVzdF90ZXN0X3V0aWxzLlRlc3RD
YXNlKToKICAgICAgIHNlbGYuQXNzZXJ0RXF1aXZhbGVudE5vZGVzKGNoaWxkLCBhY3R1YWxfY2hp
bGRyZW5bY2hpbGRfaWRdKQogCiAgIGlkZW50aWZ5aW5nX2F0dHJpYnV0ZSA9IHsKLSAgICAidGVz
dHN1aXRlcyI6ICJuYW1lIiwKLSAgICAidGVzdHN1aXRlIjogIm5hbWUiLAotICAgICJ0ZXN0Y2Fz
ZSI6ICAibmFtZSIsCi0gICAgImZhaWx1cmUiOiAgICJtZXNzYWdlIiwKLSAgICB9CisgICAgICAn
dGVzdHN1aXRlcyc6ICduYW1lJywKKyAgICAgICd0ZXN0c3VpdGUnOiAnbmFtZScsCisgICAgICAn
dGVzdGNhc2UnOiAnbmFtZScsCisgICAgICAnZmFpbHVyZSc6ICdtZXNzYWdlJywKKyAgICAgICdw
cm9wZXJ0eSc6ICduYW1lJywKKyAgfQogCiAgIGRlZiBfR2V0Q2hpbGRyZW4oc2VsZiwgZWxlbWVu
dCk6CiAgICAgIiIiCiAgICAgRmV0Y2hlcyBhbGwgb2YgdGhlIGNoaWxkIG5vZGVzIG9mIGVsZW1l
bnQsIGEgRE9NIEVsZW1lbnQgb2JqZWN0LgogICAgIFJldHVybnMgdGhlbSBhcyB0aGUgdmFsdWVz
IG9mIGEgZGljdGlvbmFyeSBrZXllZCBieSB0aGUgSURzIG9mIHRoZQotICAgIGNoaWxkcmVuLiAg
Rm9yIDx0ZXN0c3VpdGVzPiwgPHRlc3RzdWl0ZT4gYW5kIDx0ZXN0Y2FzZT4gZWxlbWVudHMsIHRo
ZSBJRAotICAgIGlzIHRoZSB2YWx1ZSBvZiB0aGVpciAibmFtZSIgYXR0cmlidXRlOyBmb3IgPGZh
aWx1cmU+IGVsZW1lbnRzLCBpdCBpcwotICAgIHRoZSB2YWx1ZSBvZiB0aGUgIm1lc3NhZ2UiIGF0
dHJpYnV0ZTsgQ0RBVEEgc2VjdGlvbnMgYW5kIG5vbi13aGl0ZXNwYWNlCisgICAgY2hpbGRyZW4u
ICBGb3IgPHRlc3RzdWl0ZXM+LCA8dGVzdHN1aXRlPiwgPHRlc3RjYXNlPiwgYW5kIDxwcm9wZXJ0
eT4KKyAgICBlbGVtZW50cywgdGhlIElEIGlzIHRoZSB2YWx1ZSBvZiB0aGVpciAibmFtZSIgYXR0
cmlidXRlOyBmb3IgPGZhaWx1cmU+CisgICAgZWxlbWVudHMsIGl0IGlzIHRoZSB2YWx1ZSBvZiB0
aGUgIm1lc3NhZ2UiIGF0dHJpYnV0ZTsgZm9yIDxwcm9wZXJ0aWVzPgorICAgIGVsZW1lbnRzLCBp
dCBpcyB0aGUgdmFsdWUgb2YgdGhlaXIgcGFyZW50J3MgIm5hbWUiIGF0dHJpYnV0ZSBwbHVzIHRo
ZQorICAgIGxpdGVyYWwgc3RyaW5nICJwcm9wZXJ0aWVzIjsgQ0RBVEEgc2VjdGlvbnMgYW5kIG5v
bi13aGl0ZXNwYWNlCiAgICAgdGV4dCBub2RlcyBhcmUgY29uY2F0ZW5hdGVkIGludG8gYSBzaW5n
bGUgQ0RBVEEgc2VjdGlvbiB3aXRoIElECiAgICAgImRldGFpbCIuICBBbiBleGNlcHRpb24gaXMg
cmFpc2VkIGlmIGFueSBlbGVtZW50IG90aGVyIHRoYW4gdGhlIGFib3ZlCiAgICAgZm91ciBpcyBl
bmNvdW50ZXJlZCwgaWYgdHdvIGNoaWxkIGVsZW1lbnRzIHdpdGggdGhlIHNhbWUgaWRlbnRpZnlp
bmcKQEAgLTEyNSwyMSArMTI2LDI3IEBAIGNsYXNzIEdUZXN0WE1MVGVzdENhc2UoZ3Rlc3RfdGVz
dF91dGlscy5UZXN0Q2FzZSk6CiAgICAgY2hpbGRyZW4gPSB7fQogICAgIGZvciBjaGlsZCBpbiBl
bGVtZW50LmNoaWxkTm9kZXM6CiAgICAgICBpZiBjaGlsZC5ub2RlVHlwZSA9PSBOb2RlLkVMRU1F
TlRfTk9ERToKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNoaWxkLnRhZ05hbWUgaW4gc2VsZi5pZGVu
dGlmeWluZ19hdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAiRW5jb3VudGVyZWQgdW5r
bm93biBlbGVtZW50IDwlcz4iICUgY2hpbGQudGFnTmFtZSkKLSAgICAgICAgY2hpbGRJRCA9IGNo
aWxkLmdldEF0dHJpYnV0ZShzZWxmLmlkZW50aWZ5aW5nX2F0dHJpYnV0ZVtjaGlsZC50YWdOYW1l
XSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNoaWxkSUQgbm90IGluIGNoaWxkcmVuKQotICAgICAg
ICBjaGlsZHJlbltjaGlsZElEXSA9IGNoaWxkCisgICAgICAgIGlmIGNoaWxkLnRhZ05hbWUgPT0g
J3Byb3BlcnRpZXMnOgorICAgICAgICAgIHNlbGYuYXNzZXJ0XyhjaGlsZC5wYXJlbnROb2RlIGlz
IG5vdCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAnRW5jb3VudGVyZWQgPHByb3BlcnRp
ZXM+IGVsZW1lbnQgd2l0aG91dCBhIHBhcmVudCcpCisgICAgICAgICAgY2hpbGRfaWQgPSBjaGls
ZC5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZSgnbmFtZScpICsgJy1wcm9wZXJ0aWVzJworICAgICAg
ICBlbHNlOgorICAgICAgICAgIHNlbGYuYXNzZXJ0XyhjaGlsZC50YWdOYW1lIGluIHNlbGYuaWRl
bnRpZnlpbmdfYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAnRW5jb3VudGVyZWQg
dW5rbm93biBlbGVtZW50IDwlcz4nICUgY2hpbGQudGFnTmFtZSkKKyAgICAgICAgICBjaGlsZF9p
ZCA9IGNoaWxkLmdldEF0dHJpYnV0ZSgKKyAgICAgICAgICAgICAgc2VsZi5pZGVudGlmeWluZ19h
dHRyaWJ1dGVbY2hpbGQudGFnTmFtZV0pCisgICAgICAgIHNlbGYuYXNzZXJ0XyhjaGlsZF9pZCBu
b3QgaW4gY2hpbGRyZW4pCisgICAgICAgIGNoaWxkcmVuW2NoaWxkX2lkXSA9IGNoaWxkCiAgICAg
ICBlbGlmIGNoaWxkLm5vZGVUeXBlIGluIFtOb2RlLlRFWFRfTk9ERSwgTm9kZS5DREFUQV9TRUNU
SU9OX05PREVdOgotICAgICAgICBpZiAiZGV0YWlsIiBub3QgaW4gY2hpbGRyZW46CisgICAgICAg
IGlmICdkZXRhaWwnIG5vdCBpbiBjaGlsZHJlbjoKICAgICAgICAgICBpZiAoY2hpbGQubm9kZVR5
cGUgPT0gTm9kZS5DREFUQV9TRUNUSU9OX05PREUgb3IKICAgICAgICAgICAgICAgbm90IGNoaWxk
Lm5vZGVWYWx1ZS5pc3NwYWNlKCkpOgotICAgICAgICAgICAgY2hpbGRyZW5bImRldGFpbCJdID0g
Y2hpbGQub3duZXJEb2N1bWVudC5jcmVhdGVDREFUQVNlY3Rpb24oCisgICAgICAgICAgICBjaGls
ZHJlblsnZGV0YWlsJ10gPSBjaGlsZC5vd25lckRvY3VtZW50LmNyZWF0ZUNEQVRBU2VjdGlvbigK
ICAgICAgICAgICAgICAgICBjaGlsZC5ub2RlVmFsdWUpCiAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgY2hpbGRyZW5bImRldGFpbCJdLm5vZGVWYWx1ZSArPSBjaGlsZC5ub2RlVmFsdWUKKyAgICAg
ICAgICBjaGlsZHJlblsnZGV0YWlsJ10ubm9kZVZhbHVlICs9IGNoaWxkLm5vZGVWYWx1ZQogICAg
ICAgZWxzZToKLSAgICAgICAgc2VsZi5mYWlsKCJFbmNvdW50ZXJlZCB1bmV4cGVjdGVkIG5vZGUg
dHlwZSAlZCIgJSBjaGlsZC5ub2RlVHlwZSkKKyAgICAgICAgc2VsZi5mYWlsKCdFbmNvdW50ZXJl
ZCB1bmV4cGVjdGVkIG5vZGUgdHlwZSAlZCcgJSBjaGlsZC5ub2RlVHlwZSkKICAgICByZXR1cm4g
Y2hpbGRyZW4KIAogICBkZWYgTm9ybWFsaXplWG1sKHNlbGYsIGVsZW1lbnQpOgpAQCAtMTUwLDIz
ICsxNTcsNDAgQEAgY2xhc3MgR1Rlc3RYTUxUZXN0Q2FzZShndGVzdF90ZXN0X3V0aWxzLlRlc3RD
YXNlKToKICAgICAqICBUaGUgInRpbWUiIGF0dHJpYnV0ZSBvZiA8dGVzdHN1aXRlcz4sIDx0ZXN0
c3VpdGU+IGFuZCA8dGVzdGNhc2U+CiAgICAgICAgZWxlbWVudHMgaXMgcmVwbGFjZWQgd2l0aCBh
IHNpbmdsZSBhc3RlcmlzaywgaWYgaXQgY29udGFpbnMKICAgICAgICBvbmx5IGRpZ2l0IGNoYXJh
Y3RlcnMuCi0gICAgKiAgVGhlIGxpbmUgbnVtYmVyIHJlcG9ydGVkIGluIHRoZSBmaXJzdCBsaW5l
IG9mIHRoZSAibWVzc2FnZSIKLSAgICAgICBhdHRyaWJ1dGUgb2YgPGZhaWx1cmU+IGVsZW1lbnRz
IGlzIHJlcGxhY2VkIHdpdGggYSBzaW5nbGUgYXN0ZXJpc2suCisgICAgKiAgVGhlICJ0aW1lc3Rh
bXAiIGF0dHJpYnV0ZSBvZiA8dGVzdHN1aXRlcz4gZWxlbWVudHMgaXMgcmVwbGFjZWQgd2l0aCBh
CisgICAgICAgc2luZ2xlIGFzdGVyaXNrLCBpZiBpdCBjb250YWlucyBhIHZhbGlkIElTTzg2MDEg
ZGF0ZXRpbWUgdmFsdWUuCisgICAgKiAgVGhlICJ0eXBlX3BhcmFtIiBhdHRyaWJ1dGUgb2YgPHRl
c3RjYXNlPiBlbGVtZW50cyBpcyByZXBsYWNlZCB3aXRoIGEKKyAgICAgICBzaW5nbGUgYXN0ZXJp
c2sgKGlmIGl0IHNuIG5vbi1lbXB0eSkgYXMgaXQgaXMgdGhlIHR5cGUgbmFtZSByZXR1cm5lZAor
ICAgICAgIGJ5IHRoZSBjb21waWxlciBhbmQgaXMgcGxhdGZvcm0gZGVwZW5kZW50LgorICAgICog
IFRoZSBsaW5lIGluZm8gcmVwb3J0ZWQgaW4gdGhlIGZpcnN0IGxpbmUgb2YgdGhlICJtZXNzYWdl
IgorICAgICAgIGF0dHJpYnV0ZSBhbmQgQ0RBVEEgc2VjdGlvbiBvZiA8ZmFpbHVyZT4gZWxlbWVu
dHMgaXMgcmVwbGFjZWQgd2l0aCB0aGUKKyAgICAgICBmaWxlJ3MgYmFzZW5hbWUgYW5kIGEgc2lu
Z2xlIGFzdGVyaXNrIGZvciB0aGUgbGluZSBudW1iZXIuCiAgICAgKiAgVGhlIGRpcmVjdG9yeSBu
YW1lcyBpbiBmaWxlIHBhdGhzIGFyZSByZW1vdmVkLgogICAgICogIFRoZSBzdGFjayB0cmFjZXMg
YXJlIHJlbW92ZWQuCiAgICAgIiIiCiAKLSAgICBpZiBlbGVtZW50LnRhZ05hbWUgaW4gKCJ0ZXN0
c3VpdGVzIiwgInRlc3RzdWl0ZSIsICJ0ZXN0Y2FzZSIpOgotICAgICAgdGltZSA9IGVsZW1lbnQu
Z2V0QXR0cmlidXRlTm9kZSgidGltZSIpCi0gICAgICB0aW1lLnZhbHVlID0gcmUuc3ViKHIiXlxk
KyhcLlxkKyk/JCIsICIqIiwgdGltZS52YWx1ZSkKLSAgICBlbGlmIGVsZW1lbnQudGFnTmFtZSA9
PSAiZmFpbHVyZSI6CisgICAgaWYgZWxlbWVudC50YWdOYW1lID09ICd0ZXN0c3VpdGVzJzoKKyAg
ICAgIHRpbWVzdGFtcCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlTm9kZSgndGltZXN0YW1wJykKKyAg
ICAgIHRpbWVzdGFtcC52YWx1ZSA9IHJlLnN1YihyJ15cZHs0fS1cZFxkLVxkXGRUXGRcZDpcZFxk
OlxkXGQkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKicsIHRpbWVzdGFtcC52
YWx1ZSkKKyAgICBpZiBlbGVtZW50LnRhZ05hbWUgaW4gKCd0ZXN0c3VpdGVzJywgJ3Rlc3RzdWl0
ZScsICd0ZXN0Y2FzZScpOgorICAgICAgdGltZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlTm9kZSgn
dGltZScpCisgICAgICB0aW1lLnZhbHVlID0gcmUuc3ViKHInXlxkKyhcLlxkKyk/JCcsICcqJywg
dGltZS52YWx1ZSkKKyAgICAgIHR5cGVfcGFyYW0gPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUo
J3R5cGVfcGFyYW0nKQorICAgICAgaWYgdHlwZV9wYXJhbSBhbmQgdHlwZV9wYXJhbS52YWx1ZToK
KyAgICAgICAgdHlwZV9wYXJhbS52YWx1ZSA9ICcqJworICAgIGVsaWYgZWxlbWVudC50YWdOYW1l
ID09ICdmYWlsdXJlJzoKKyAgICAgIHNvdXJjZV9saW5lX3BhdCA9IHInXi4qWy9cXF0oLio6KVxk
K1xuJworICAgICAgIyBSZXBsYWNlcyB0aGUgc291cmNlIGxpbmUgaW5mb3JtYXRpb24gd2l0aCBh
IG5vcm1hbGl6ZWQgZm9ybS4KKyAgICAgIG1lc3NhZ2UgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5v
ZGUoJ21lc3NhZ2UnKQorICAgICAgbWVzc2FnZS52YWx1ZSA9IHJlLnN1Yihzb3VyY2VfbGluZV9w
YXQsICdcXDEqXG4nLCBtZXNzYWdlLnZhbHVlKQogICAgICAgZm9yIGNoaWxkIGluIGVsZW1lbnQu
Y2hpbGROb2RlczoKICAgICAgICAgaWYgY2hpbGQubm9kZVR5cGUgPT0gTm9kZS5DREFUQV9TRUNU
SU9OX05PREU6Ci0gICAgICAgICAgIyBSZW1vdmVzIHRoZSBzb3VyY2UgbGluZSBudW1iZXIuCi0g
ICAgICAgICAgY2RhdGEgPSByZS5zdWIociJeLipbL1xcXSguKjopXGQrXG4iLCAiXFwxKlxuIiwg
Y2hpbGQubm9kZVZhbHVlKQorICAgICAgICAgICMgUmVwbGFjZXMgdGhlIHNvdXJjZSBsaW5lIGlu
Zm9ybWF0aW9uIHdpdGggYSBub3JtYWxpemVkIGZvcm0uCisgICAgICAgICAgY2RhdGEgPSByZS5z
dWIoc291cmNlX2xpbmVfcGF0LCAnXFwxKlxuJywgY2hpbGQubm9kZVZhbHVlKQogICAgICAgICAg
ICMgUmVtb3ZlcyB0aGUgYWN0dWFsIHN0YWNrIHRyYWNlLgotICAgICAgICAgIGNoaWxkLm5vZGVW
YWx1ZSA9IHJlLnN1YihyIlxuU3RhY2sgdHJhY2U6XG4oLnxcbikqIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiIsIGNkYXRhKQorICAgICAgICAgIGNoaWxkLm5vZGVWYWx1
ZSA9IHJlLnN1YihyJ1N0YWNrIHRyYWNlOlxuKC58XG4pKicsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdTdGFjayB0cmFjZTpcbionLCBjZGF0YSkKICAgICBmb3IgY2hpbGQg
aW4gZWxlbWVudC5jaGlsZE5vZGVzOgogICAgICAgaWYgY2hpbGQubm9kZVR5cGUgPT0gTm9kZS5F
TEVNRU5UX05PREU6CiAgICAgICAgIHNlbGYuTm9ybWFsaXplWG1sKGNoaWxkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9kdWN0aW9uLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9kdWN0aW9uLmNjCmluZGV4IDhiOGE0MGI0NGU5YjQxZjRj
MjlkNzU1MjY5MDg1NjhhZjIzNzkxMmQuLjBmNjlmNmRiZDJlMjZhM2E5YmRmNzU2YjQ4MDczN2E0
ZWY0MjE4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVj
dGlvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3Byb2R1Y3Rpb24uY2MK
QEAgLTI2LDEwICsyNiw5IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKIC8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4p
Ci0vLwotLy8gVGhpcyBpcyBwYXJ0IG9mIHRoZSB1bml0IHRlc3QgZm9yIGluY2x1ZGUvZ3Rlc3Qv
Z3Rlc3RfcHJvZC5oLgorLy8gVGhpcyBpcyBwYXJ0IG9mIHRoZSB1bml0IHRlc3QgZm9yIGd0ZXN0
X3Byb2QuaC4KIAogI2luY2x1ZGUgInByb2R1Y3Rpb24uaCIKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9kdWN0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L3Byb2R1Y3Rpb24uaAppbmRleCA4ZjE2ZmZmYTI0MTZjNTcxNTNmYWIzZTA5N2Qx
MzRhZjFmYjRhOWJjLi41NDI3MjNiNzA4NzM4N2Q0ZmI1MjlmYzA3YTY4OGJjMWM4ZDc4YjFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3Byb2R1Y3Rpb24uaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3Byb2R1Y3Rpb24uaApAQCAtMjYsMTUgKzI2
LDE0IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
IC8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGhp
cyBpcyBwYXJ0IG9mIHRoZSB1bml0IHRlc3QgZm9yIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5o
LgorLy8gVGhpcyBpcyBwYXJ0IG9mIHRoZSB1bml0IHRlc3QgZm9yIGd0ZXN0X3Byb2QuaC4KIAog
I2lmbmRlZiBHVEVTVF9URVNUX1BST0RVQ1RJT05fSF8KICNkZWZpbmUgR1RFU1RfVEVTVF9QUk9E
VUNUSU9OX0hfCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdF9wcm9kLmg+CisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3RfcHJvZC5oIgogCiBjbGFzcyBQcml2YXRlQ29kZSB7CiAgcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ydW5fdGVzdHNfdXRpbC5weSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3RzX3V0aWwucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDllNTc5MzFlYmEyYzYxMWUwYTFmNjBmZmY0ZjA5NTM5ZTEwNzY3
YWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ydW5fdGVzdHNfdXRpbC5weQorKysgL2Rldi9udWxsCkBA
IC0xLDQ2NiArMCwwIEBACi0jIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBk
aXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJQcm92aWRlcyBmYWNpbGl0aWVzIGZv
ciBydW5uaW5nIFNDb25zLWJ1aWx0IEdvb2dsZSBUZXN0L01vY2sgdGVzdHMuIiIiCi0KLQotaW1w
b3J0IG9wdHBhcnNlCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNldHMKLWltcG9ydCBz
eXMKLQotdHJ5OgotICAjIHN1YnJvY2VzcyBtb2R1bGUgaXMgYSBwcmVmZXJhYmxlIHdheSB0byBp
bnZva2Ugc3VicHJvY2Vzc2VzIGJ1dCBpdCBtYXkKLSAgIyBub3QgYmUgYXZhaWxhYmxlIG9uIE1h
Y09TIFggMTAuNC4KLSAgIyBTdXBwcmVzc2VzIHRoZSAnSW1wb3J0IG5vdCBhdCB0aGUgdG9wIG9m
IHRoZSBmaWxlJyBsaW50IGNvbXBsYWludC4KLSAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2MjA0
Ci0gIGltcG9ydCBzdWJwcm9jZXNzCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gIHN1YnByb2Nlc3Mg
PSBOb25lCi0KLUhFTFBfTVNHID0gIiIiUnVucyB0aGUgc3BlY2lmaWVkIHRlc3RzIGZvciAlKHBy
b2opcy4KLQotU1lOT1BTSVMKLSAgICAgICBydW5fdGVzdHMucHkgW09QVElPTl0uLi4gW0JVSUxE
X0RJUl0uLi4gW1RFU1RdLi4uCi0KLURFU0NSSVBUSU9OCi0gICAgICAgUnVucyB0aGUgc3BlY2lm
aWVkIHRlc3RzIChlaXRoZXIgYmluYXJ5IG9yIFB5dGhvbiksIGFuZCBwcmludHMgYQotICAgICAg
IHN1bW1hcnkgb2YgdGhlIHJlc3VsdHMuIEJVSUxEX0RJUlMgd2lsbCBiZSB1c2VkIHRvIHNlYXJj
aCBmb3IgdGhlCi0gICAgICAgYmluYXJpZXMuIElmIG5vIFRFU1RzIGFyZSBzcGVjaWZpZWQsIGFs
bCBiaW5hcnkgdGVzdHMgZm91bmQgaW4KLSAgICAgICBCVUlMRF9ESVJzIGFuZCBhbGwgUHl0aG9u
IHRlc3RzIGZvdW5kIGluIHRoZSBkaXJlY3RvcnkgdGVzdC8gKGluIHRoZQotICAgICAgICUocHJv
ailzIHJvb3QpIGFyZSBydW4uCi0KLSAgICAgICBURVNUIGlzIGEgbmFtZSBvZiBlaXRoZXIgYSBi
aW5hcnkgb3IgYSBQeXRob24gdGVzdC4gQSBiaW5hcnkgdGVzdCBpcwotICAgICAgIGFuIGV4ZWN1
dGFibGUgZmlsZSBuYW1lZCAqX3Rlc3Qgb3IgKl91bml0dGVzdCAod2l0aCB0aGUgLmV4ZQotICAg
ICAgIGV4dGVuc2lvbiBvbiBXaW5kb3dzKSBBIFB5dGhvbiB0ZXN0IGlzIGEgc2NyaXB0IG5hbWVk
ICpfdGVzdC5weSBvcgotICAgICAgICpfdW5pdHRlc3QucHkuCi0KLU9QVElPTlMKLSAgICAgICAt
aCwgLS1oZWxwCi0gICAgICAgICAgICAgIFByaW50IHRoaXMgaGVscCBtZXNzYWdlLgotICAgICAg
IC1jIENPTkZJR1VSQVRJT05TCi0gICAgICAgICAgICAgIFNwZWNpZnkgYnVpbGQgZGlyZWN0b3Jp
ZXMgdmlhIGJ1aWxkIGNvbmZpZ3VyYXRpb25zLgotICAgICAgICAgICAgICBDT05GSUdVUkFUSU9O
UyBpcyBlaXRoZXIgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBidWlsZAotICAgICAgICAgICAg
ICBjb25maWd1cmF0aW9ucyBvciAnYWxsJy4gRWFjaCBjb25maWd1cmF0aW9uIGlzIGVxdWl2YWxl
bnQgdG8KLSAgICAgICAgICAgICAgYWRkaW5nICdzY29ucy9idWlsZC88Y29uZmlndXJhdGlvbj4v
JShwcm9qKXMvc2NvbnMnIHRvIEJVSUxEX0RJUnMuCi0gICAgICAgICAgICAgIFNwZWNpZnlpbmcg
LWM9YWxsIGlzIGVxdWl2YWxlbnQgdG8gcHJvdmlkaW5nIGFsbCBkaXJlY3RvcmllcwotICAgICAg
ICAgICAgICBsaXN0ZWQgaW4gS05PV04gQlVJTEQgRElSRUNUT1JJRVMgc2VjdGlvbiBiZWxvdy4K
LSAgICAgICAtYQotICAgICAgICAgICAgICBFcXVpdmFsZW50IHRvIC1jPWFsbAotICAgICAgIC1i
Ci0gICAgICAgICAgICAgIEVxdWl2YWxlbnQgdG8gLWM9YWxsIHdpdGggdGhlIGV4Y2VwdGlvbiB0
aGF0IHRoZSBzY3JpcHQgd2lsbCBub3QKLSAgICAgICAgICAgICAgZmFpbCBpZiBzb21lIG9mIHRo
ZSBLTk9XTiBCVUlMRCBESVJFQ1RPUklFUyBkbyBub3QgZXhpc3RzOyB0aGUKLSAgICAgICAgICAg
ICAgc2NyaXB0IHdpbGwgc2ltcGx5IG5vdCBydW4gdGhlIHRlc3RzIHRoZXJlLiAnYicgc3RhbmRz
IGZvcgotICAgICAgICAgICAgICAnYnVpbHQgZGlyZWN0b3JpZXMnLgotCi1SRVRVUk4gVkFMVUUK
LSAgICAgICBSZXR1cm5zIDAgaWYgYWxsIHRlc3RzIGFyZSBzdWNjZXNzZnVsOyBvdGhlcndpc2Ug
cmV0dXJucyAxLgotCi1FWEFNUExFUwotICAgICAgIHJ1bl90ZXN0cy5weQotICAgICAgICAgICAg
ICBSdW5zIGFsbCB0ZXN0cyBmb3IgdGhlIGRlZmF1bHQgYnVpbGQgY29uZmlndXJhdGlvbi4KLSAg
ICAgICBydW5fdGVzdHMucHkgLWEKLSAgICAgICAgICAgICAgUnVucyBhbGwgdGVzdHMgd2l0aCBi
aW5hcmllcyBpbiBLTk9XTiBCVUlMRCBESVJFQ1RPUklFUy4KLSAgICAgICBydW5fdGVzdHMucHkg
LWIKLSAgICAgICAgICAgICAgUnVucyBhbGwgdGVzdHMgaW4gS05PV04gQlVJTEQgRElSRUNUT1JJ
RVMgdGhhdCBoYXZlIGJlZW4KLSAgICAgICAgICAgICAgYnVpbHQuCi0gICAgICAgcnVuX3Rlc3Rz
LnB5IGZvby8KLSAgICAgICAgICAgICAgUnVucyBhbGwgdGVzdHMgaW4gdGhlIGZvby8gZGlyZWN0
b3J5IGFuZCBhbGwgUHl0aG9uIHRlc3RzIGluCi0gICAgICAgICAgICAgIHRoZSBkaXJlY3Rvcnkg
dGVzdC4gVGhlIFB5dGhvbiB0ZXN0cyBhcmUgaW5zdHJ1Y3RlZCB0byBsb29rCi0gICAgICAgICAg
ICAgIGZvciBiaW5hcmllcyBpbiBmb28vLgotICAgICAgIHJ1bl90ZXN0cy5weSBiYXJfdGVzdC5l
eGUgdGVzdC9iYXpfdGVzdC5leGUgZm9vLyBiYXIvCi0gICAgICAgICAgICAgIFJ1bnMgZm9vL2Jh
cl90ZXN0LmV4ZSwgYmFyL2Jhcl90ZXN0LmV4ZSwgZm9vL2Jhel90ZXN0LmV4ZSwgYW5kCi0gICAg
ICAgICAgICAgIGJhci9iYXpfdGVzdC5leGUuCi0gICAgICAgcnVuX3Rlc3RzLnB5IGZvbyBiYXIg
dGVzdC9mb29fdGVzdC5weQotICAgICAgICAgICAgICBSdW5zIHRlc3QvZm9vX3Rlc3QucHkgdHdp
Y2UgaW5zdHJ1Y3RpbmcgaXQgdG8gbG9vayBmb3IgaXRzCi0gICAgICAgICAgICAgIHRlc3QgYmlu
YXJpZXMgaW4gdGhlIGRpcmVjdG9yaWVzIGZvbyBhbmQgYmFyLAotICAgICAgICAgICAgICBjb3Jy
ZXNwb25kaW5nbHkuCi0KLUtOT1dOIEJVSUxEIERJUkVDVE9SSUVTCi0gICAgICBydW5fdGVzdHMu
cHkga25vd3MgYWJvdXQgZGlyZWN0b3JpZXMgd2hlcmUgdGhlIFNDb25zIGJ1aWxkIHNjcmlwdAot
ICAgICAgZGVwb3NpdHMgaXRzIHByb2R1Y3RzLiBUaGVzZSBhcmUgdGhlIGRpcmVjdG9yaWVzIHdo
ZXJlIHJ1bl90ZXN0cy5weQotICAgICAgd2lsbCBiZSBsb29raW5nIGZvciBpdHMgYmluYXJpZXMu
IEN1cnJlbnRseSwgJShwcm9qKXMncyBTQ29uc3RydWN0IGZpbGUKLSAgICAgIGRlZmluZXMgdGhl
bSBhcyBmb2xsb3dzICh0aGUgZGVmYXVsdCBidWlsZCBkaXJlY3RvcnkgaXMgdGhlIGZpcnN0IG9u
ZQotICAgICAgbGlzdGVkIGluIGVhY2ggZ3JvdXApOgotICAgICAgT24gV2luZG93czoKLSAgICAg
ICAgICAgICAgPCUocHJvailzIHJvb3Q+L3Njb25zL2J1aWxkL3dpbi1kYmc4LyUocHJvailzL3Nj
b25zLwotICAgICAgICAgICAgICA8JShwcm9qKXMgcm9vdD4vc2NvbnMvYnVpbGQvd2luLW9wdDgv
JShwcm9qKXMvc2NvbnMvCi0gICAgICBPbiBNYWM6Ci0gICAgICAgICAgICAgIDwlKHByb2opcyBy
b290Pi9zY29ucy9idWlsZC9tYWMtZGJnLyUocHJvailzL3Njb25zLwotICAgICAgICAgICAgICA8
JShwcm9qKXMgcm9vdD4vc2NvbnMvYnVpbGQvbWFjLW9wdC8lKHByb2opcy9zY29ucy8KLSAgICAg
IE9uIG90aGVyIHBsYXRmb3JtczoKLSAgICAgICAgICAgICAgPCUocHJvailzIHJvb3Q+L3Njb25z
L2J1aWxkL2RiZy8lKHByb2opcy9zY29ucy8KLSAgICAgICAgICAgICAgPCUocHJvailzIHJvb3Q+
L3Njb25zL2J1aWxkL29wdC8lKHByb2opcy9zY29ucy8iIiIKLQotSVNfV0lORE9XUyA9IG9zLm5h
bWUgPT0gJ250JwotSVNfTUFDID0gb3MubmFtZSA9PSAncG9zaXgnIGFuZCBvcy51bmFtZSgpWzBd
ID09ICdEYXJ3aW4nCi1JU19DWUdXSU4gPSBvcy5uYW1lID09ICdwb3NpeCcgYW5kICdDWUdXSU4n
IGluIG9zLnVuYW1lKClbMF0KLQotIyBEZWZpbml0aW9uIG9mIENPTkZJR1MgbXVzdCBtYXRjaCB0
aGF0IG9mIHRoZSBidWlsZCBkaXJlY3RvcnkgbmFtZXMgaW4gdGhlCi0jIFNDb25zdHJ1Y3Qgc2Ny
aXB0LiBUaGUgZmlyc3QgbGlzdCBpdGVtIGlzIHRoZSBkZWZhdWx0IGJ1aWxkIGNvbmZpZ3VyYXRp
b24uCi1pZiBJU19XSU5ET1dTOgotICBDT05GSUdTID0gKCd3aW4tZGJnOCcsICd3aW4tb3B0OCcp
Ci1lbGlmIElTX01BQzoKLSAgQ09ORklHUyA9ICgnbWFjLWRiZycsICdtYWMtb3B0JykKLWVsc2U6
Ci0gIENPTkZJR1MgPSAoJ2RiZycsICdvcHQnKQotCi1pZiBJU19XSU5ET1dTIG9yIElTX0NZR1dJ
TjoKLSAgUFlUSE9OX1RFU1RfUkVHRVggPSByZS5jb21waWxlKHInXyh1bml0KT90ZXN0XC5weSQn
LCByZS5JR05PUkVDQVNFKQotICBCSU5BUllfVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocidfKHVu
aXQpP3Rlc3QoXC5leGUpPyQnLCByZS5JR05PUkVDQVNFKQotICBCSU5BUllfVEVTVF9TRUFSQ0hf
UkVHRVggPSByZS5jb21waWxlKHInXyh1bml0KT90ZXN0XC5leGUkJywgcmUuSUdOT1JFQ0FTRSkK
LWVsc2U6Ci0gIFBZVEhPTl9URVNUX1JFR0VYID0gcmUuY29tcGlsZShyJ18odW5pdCk/dGVzdFwu
cHkkJykKLSAgQklOQVJZX1RFU1RfUkVHRVggPSByZS5jb21waWxlKHInXyh1bml0KT90ZXN0JCcp
Ci0gIEJJTkFSWV9URVNUX1NFQVJDSF9SRUdFWCA9IEJJTkFSWV9URVNUX1JFR0VYCi0KLQotZGVm
IF9HZXRHdGVzdEJ1aWxkRGlyKGluamVjdGVkX29zLCBzY3JpcHRfZGlyLCBjb25maWcpOgotICAi
IiJDYWxjdWxhdGVzIHBhdGggdG8gdGhlIEdvb2dsZSBUZXN0IFNDb25zIGJ1aWxkIGRpcmVjdG9y
eS4iIiIKLQotICByZXR1cm4gaW5qZWN0ZWRfb3MucGF0aC5ub3JtcGF0aChpbmplY3RlZF9vcy5w
YXRoLmpvaW4oc2NyaXB0X2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdzY29ucy9idWlsZCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3Rlc3Qvc2Nv
bnMnKSkKLQotCi1kZWYgX0dldENvbmZpZ0Zyb21CdWlsZERpcihidWlsZF9kaXIpOgotICAiIiJF
eHRyYWN0cyB0aGUgY29uZmlndXJhdGlvbiBuYW1lIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeS4i
IiIKLQotICAjIFdlIGRvbid0IHdhbnQgdG8gZGVwZW5kIG9uIGJ1aWxkX2RpciBjb250YWluaW5n
IHRoZSBjb3JyZWN0IHBhdGgKLSAgIyBzZXBhcmF0b3JzLgotICBtID0gcmUubWF0Y2gocicuKltc
XC9dKFteXFwvXSspW1xcL11bXlxcL10rW1xcL11zY29uc1tcXC9dPyQnLCBidWlsZF9kaXIpCi0g
IGlmIG06Ci0gICAgcmV0dXJuIG0uZ3JvdXAoMSkKLSAgZWxzZToKLSAgICBwcmludCA+PnN5cy5z
dGRlcnIsICgnJXMgaXMgYW4gaW52YWxpZCBidWlsZCBkaXJlY3RvcnkgdGhhdCBkb2VzIG5vdCAn
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmQgdG8gYW55IGNvbmZpZ3VyYXRp
b24uJyAlIChidWlsZF9kaXIsKSkKLSAgICByZXR1cm4gJycKLQotCi0jIEFsbCBwYXRocyBpbiB0
aGlzIHNjcmlwdCBhcmUgZWl0aGVyIGFic29sdXRlIG9yIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50
Ci0jIHdvcmtpbmcgZGlyZWN0b3J5LCB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZC4KLWNsYXNz
IFRlc3RSdW5uZXIob2JqZWN0KToKLSAgIiIiUHJvdmlkZXMgZmFjaWxpdGllcyBmb3IgcnVubmlu
ZyBQeXRob24gYW5kIGJpbmFyeSB0ZXN0cyBmb3IgR29vZ2xlIFRlc3QuIiIiCi0KLSAgZGVmIF9f
aW5pdF9fKHNlbGYsCi0gICAgICAgICAgICAgICBzY3JpcHRfZGlyLAotICAgICAgICAgICAgICAg
YnVpbGRfZGlyX3Zhcl9uYW1lPSdHVEVTVF9CVUlMRF9ESVInLAotICAgICAgICAgICAgICAgaW5q
ZWN0ZWRfb3M9b3MsCi0gICAgICAgICAgICAgICBpbmplY3RlZF9zdWJwcm9jZXNzPXN1YnByb2Nl
c3MsCi0gICAgICAgICAgICAgICBpbmplY3RlZF9idWlsZF9kaXJfZmluZGVyPV9HZXRHdGVzdEJ1
aWxkRGlyKToKLSAgICAiIiJJbml0aWFsaXplcyBhIFRlc3RSdW5uZXIgaW5zdGFuY2UuCi0KLSAg
ICBBcmdzOgotICAgICAgc2NyaXB0X2RpcjogICAgICAgICAgICAgICAgRmlsZSBwYXRoIHRvIHRo
ZSBjYWxsaW5nIHNjcmlwdC4KLSAgICAgIGJ1aWxkX2Rpcl92YXJfbmFtZTogICAgICAgIE5hbWUg
b2YgdGhlIGVudiB2YXJpYWJsZSB1c2VkIHRvIHBhc3MgdGhlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aGUgYnVpbGQgZGlyZWN0b3J5IHBhdGggdG8gdGhlIGludm9rZWQKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzLgotICAgICAgaW5qZWN0ZWRfb3M6
ICAgICAgICAgICAgICAgc3RhbmRhcmQgb3MgbW9kdWxlIG9yIGEgbW9jay9zdHViIGZvcgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZy4KLSAgICAgIGluamVjdGVkX3N1
YnByb2Nlc3M6ICAgICAgIHN0YW5kYXJkIHN1YnByb2Nlc3MgbW9kdWxlIG9yIGEgbW9jay9zdHVi
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGVzdGluZwotICAgICAgaW5q
ZWN0ZWRfYnVpbGRfZGlyX2ZpbmRlcjogZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHRoZSBwYXRo
IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgZGlyZWN0b3J5
LgotICAgICIiIgotCi0gICAgc2VsZi5vcyA9IGluamVjdGVkX29zCi0gICAgc2VsZi5zdWJwcm9j
ZXNzID0gaW5qZWN0ZWRfc3VicHJvY2VzcwotICAgIHNlbGYuYnVpbGRfZGlyX2ZpbmRlciA9IGlu
amVjdGVkX2J1aWxkX2Rpcl9maW5kZXIKLSAgICBzZWxmLmJ1aWxkX2Rpcl92YXJfbmFtZSA9IGJ1
aWxkX2Rpcl92YXJfbmFtZQotICAgIHNlbGYuc2NyaXB0X2RpciA9IHNjcmlwdF9kaXIKLQotICBk
ZWYgX0dldEJ1aWxkRGlyRm9yQ29uZmlnKHNlbGYsIGNvbmZpZyk6Ci0gICAgIiIiUmV0dXJucyB0
aGUgYnVpbGQgZGlyZWN0b3J5IGZvciBhIGdpdmVuIGNvbmZpZ3VyYXRpb24uIiIiCi0KLSAgICBy
ZXR1cm4gc2VsZi5idWlsZF9kaXJfZmluZGVyKHNlbGYub3MsIHNlbGYuc2NyaXB0X2RpciwgY29u
ZmlnKQotCi0gIGRlZiBfUnVuKHNlbGYsIGFyZ3MpOgotICAgICIiIlJ1bnMgdGhlIGV4ZWN1dGFi
bGUgd2l0aCBnaXZlbiBhcmdzIChhcmdzWzBdIGlzIHRoZSBleGVjdXRhYmxlIG5hbWUpLgotCi0g
ICAgQXJnczoKLSAgICAgIGFyZ3M6IENvbW1hbmQgbGluZSBhcmd1bWVudHMgZm9yIHRoZSBwcm9j
ZXNzLgotCi0gICAgUmV0dXJuczoKLSAgICAgIFByb2Nlc3MncyBleGl0IGNvZGUgaWYgaXQgZXhp
dHMgbm9ybWFsbHksIG9yIC1zaWduYWwgaWYgdGhlIHByb2Nlc3MgaXMKLSAgICAgIGtpbGxlZCBi
eSBhIHNpZ25hbC4KLSAgICAiIiIKLQotICAgIGlmIHNlbGYuc3VicHJvY2VzczoKLSAgICAgIHJl
dHVybiBzZWxmLnN1YnByb2Nlc3MuUG9wZW4oYXJncykud2FpdCgpCi0gICAgZWxzZToKLSAgICAg
IHJldHVybiBzZWxmLm9zLnNwYXdudihzZWxmLm9zLlBfV0FJVCwgYXJnc1swXSwgYXJncykKLQot
ICBkZWYgX1J1bkJpbmFyeVRlc3Qoc2VsZiwgdGVzdCk6Ci0gICAgIiIiUnVucyB0aGUgYmluYXJ5
IHRlc3QgZ2l2ZW4gaXRzIHBhdGguCi0KLSAgICBBcmdzOgotICAgICAgdGVzdDogUGF0aCB0byB0
aGUgdGVzdCBiaW5hcnkuCi0KLSAgICBSZXR1cm5zOgotICAgICAgUHJvY2VzcydzIGV4aXQgY29k
ZSBpZiBpdCBleGl0cyBub3JtYWxseSwgb3IgLXNpZ25hbCBpZiB0aGUgcHJvY2VzcyBpcwotICAg
ICAga2lsbGVkIGJ5IGEgc2lnbmFsLgotICAgICIiIgotCi0gICAgcmV0dXJuIHNlbGYuX1J1bihb
dGVzdF0pCi0KLSAgZGVmIF9SdW5QeXRob25UZXN0KHNlbGYsIHRlc3QsIGJ1aWxkX2Rpcik6Ci0g
ICAgIiIiUnVucyB0aGUgUHl0aG9uIHRlc3Qgc2NyaXB0IHdpdGggdGhlIHNwZWNpZmllZCBidWls
ZCBkaXJlY3RvcnkuCi0KLSAgICBBcmdzOgotICAgICAgdGVzdDogUGF0aCB0byB0aGUgdGVzdCdz
IFB5dGhvbiBzY3JpcHQuCi0gICAgICBidWlsZF9kaXI6IFBhdGggdG8gdGhlIGRpcmVjdG9yeSB3
aGVyZSB0aGUgdGVzdCBiaW5hcnkgaXMgdG8gYmUgZm91bmQuCi0KLSAgICBSZXR1cm5zOgotICAg
ICAgUHJvY2VzcydzIGV4aXQgY29kZSBpZiBpdCBleGl0cyBub3JtYWxseSwgb3IgLXNpZ25hbCBp
ZiB0aGUgcHJvY2VzcyBpcwotICAgICAga2lsbGVkIGJ5IGEgc2lnbmFsLgotICAgICIiIgotCi0g
ICAgb2xkX2J1aWxkX2RpciA9IHNlbGYub3MuZW52aXJvbi5nZXQoc2VsZi5idWlsZF9kaXJfdmFy
X25hbWUpCi0KLSAgICB0cnk6Ci0gICAgICBzZWxmLm9zLmVudmlyb25bc2VsZi5idWlsZF9kaXJf
dmFyX25hbWVdID0gYnVpbGRfZGlyCi0KLSAgICAgICMgSWYgdGhpcyBzY3JpcHQgaXMgcnVuIG9u
IGEgV2luZG93cyBtYWNoaW5lIHRoYXQgaGFzIG5vIGFzc29jaWF0aW9uCi0gICAgICAjIGJldHdl
ZW4gdGhlIC5weSBleHRlbnNpb24gYW5kIGEgcHl0aG9uIGludGVycHJldGVyLCBzaW1wbHkgcGFz
c2luZwotICAgICAgIyB0aGUgc2NyaXB0IG5hbWUgaW50byBzdWJwcm9jZXNzLlBvcGVuL29zLnNw
YXduIHdpbGwgbm90IHdvcmsuCi0gICAgICBwcmludCAnUnVubmluZyAlcyAuIC4gLicgJSAodGVz
dCwpCi0gICAgICByZXR1cm4gc2VsZi5fUnVuKFtzeXMuZXhlY3V0YWJsZSwgdGVzdF0pCi0KLSAg
ICBmaW5hbGx5OgotICAgICAgaWYgb2xkX2J1aWxkX2RpciBpcyBOb25lOgotICAgICAgICBkZWwg
c2VsZi5vcy5lbnZpcm9uW3NlbGYuYnVpbGRfZGlyX3Zhcl9uYW1lXQotICAgICAgZWxzZToKLSAg
ICAgICAgc2VsZi5vcy5lbnZpcm9uW3NlbGYuYnVpbGRfZGlyX3Zhcl9uYW1lXSA9IG9sZF9idWls
ZF9kaXIKLQotICBkZWYgX0ZpbmRGaWxlc0J5UmVnZXgoc2VsZiwgZGlyZWN0b3J5LCByZWdleCk6
Ci0gICAgIiIiUmV0dXJucyBmaWxlcyBpbiBhIGRpcmVjdG9yeSB3aG9zZSBuYW1lcyBtYXRjaCBh
IHJlZ3VsYXIgZXhwcmVzc2lvbi4KLQotICAgIEFyZ3M6Ci0gICAgICBkaXJlY3Rvcnk6IFBhdGgg
dG8gdGhlIGRpcmVjdG9yeSB0byBzZWFyY2ggZm9yIGZpbGVzLgotICAgICAgcmVnZXg6IFJlZ3Vs
YXIgZXhwcmVzc2lvbiB0byBmaWx0ZXIgZmlsZSBuYW1lcy4KLQotICAgIFJldHVybnM6Ci0gICAg
ICBUaGUgbGlzdCBvZiB0aGUgcGF0aHMgdG8gdGhlIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuCi0g
ICAgIiIiCi0KLSAgICByZXR1cm4gW3NlbGYub3MucGF0aC5qb2luKGRpcmVjdG9yeSwgZmlsZV9u
YW1lKQotICAgICAgICAgICAgZm9yIGZpbGVfbmFtZSBpbiBzZWxmLm9zLmxpc3RkaXIoZGlyZWN0
b3J5KQotICAgICAgICAgICAgaWYgcmUuc2VhcmNoKHJlZ2V4LCBmaWxlX25hbWUpXQotCi0gICMg
VE9ETyh2bGFkbEBnb29nbGUuY29tKTogSW1wbGVtZW50IHBhcnNpbmcgb2Ygc2NvbnMvU0NvbnNj
cmlwdCB0byBydW4gYWxsCi0gICMgdGVzdHMgZGVmaW5lZCB0aGVyZSB3aGVuIG5vIHRlc3RzIGFy
ZSBzcGVjaWZpZWQuCi0gICMgVE9ETyh2bGFkbEBnb29nbGUuY29tKTogVXBkYXRlIHRoZSBkb2Nz
dHJpbmcgYWZ0ZXIgdGhlIGNvZGUgaXMgY2hhbmdlZCB0bwotICAjIHRyeSB0byB0ZXN0IGFsbCBi
dWlsZHMgZGVmaW5lZCBpbiBzY29ucy9TQ29uc2NyaXB0LgotICBkZWYgR2V0VGVzdHNUb1J1bihz
ZWxmLAotICAgICAgICAgICAgICAgICAgICBhcmdzLAotICAgICAgICAgICAgICAgICAgICBuYW1l
ZF9jb25maWd1cmF0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgYnVpbHRfY29uZmlndXJhdGlv
bnMsCi0gICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1DT05GSUdT
LAotICAgICAgICAgICAgICAgICAgICBweXRob25fdGVzdHNfdG9fc2tpcD1Ob25lKToKLSAgICAi
IiJEZXRlcm1pbmVzIHdoYXQgdGVzdHMgc2hvdWxkIGJlIHJ1bi4KLQotICAgIEFyZ3M6Ci0gICAg
ICBhcmdzOiBUaGUgbGlzdCBvZiBub24tb3B0aW9uIGFyZ3VtZW50cyBmcm9tIHRoZSBjb21tYW5k
IGxpbmUuCi0gICAgICBuYW1lZF9jb25maWd1cmF0aW9uczogVGhlIGxpc3Qgb2YgY29uZmlndXJh
dGlvbnMgc3BlY2lmaWVkIHZpYSAtYyBvciAtYS4KLSAgICAgIGJ1aWx0X2NvbmZpZ3VyYXRpb25z
OiBUcnVlIGlmIC1iIGhhcyBiZWVuIHNwZWNpZmllZC4KLSAgICAgIGF2YWlsYWJsZV9jb25maWd1
cmF0aW9uczogYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIGF2YWlsYWJsZSBvbiB0aGUKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50IHBsYXRmb3JtLCBpbmplY3RhYmxlIGZvciB0
ZXN0aW5nLgotICAgICAgcHl0aG9uX3Rlc3RzX3RvX3NraXA6IGEgY29sbGVjdGlvbiBvZiAoY29u
ZmlndXJhdGlvbiwgcHl0aG9uIHRlc3QgbmFtZSlzCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhhdCBuZWVkIHRvIGJlIHNraXBwZWQuCi0KLSAgICBSZXR1cm5zOgotICAgICAgQSB0dXBs
ZSB3aXRoIDIgZWxlbWVudHM6IHRoZSBsaXN0IG9mIFB5dGhvbiB0ZXN0cyB0byBydW4gYW5kIHRo
ZSBsaXN0IG9mCi0gICAgICBiaW5hcnkgdGVzdHMgdG8gcnVuLgotICAgICIiIgotCi0gICAgaWYg
bmFtZWRfY29uZmlndXJhdGlvbnMgPT0gJ2FsbCc6Ci0gICAgICBuYW1lZF9jb25maWd1cmF0aW9u
cyA9ICcsJy5qb2luKGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucykKLQotICAgIG5vcm1hbGl6ZWRf
YXJncyA9IFtzZWxmLm9zLnBhdGgubm9ybXBhdGgoYXJnKSBmb3IgYXJnIGluIGFyZ3NdCi0KLSAg
ICAjIEEgZmluYWwgbGlzdCBvZiBidWlsZCBkaXJlY3RvcmllcyB3aGljaCB3aWxsIGJlIHNlYXJj
aGVkIGZvciB0aGUgdGVzdAotICAgICMgYmluYXJpZXMuIEZpcnN0LCBhZGQgZGlyZWN0b3JpZXMg
c3BlY2lmaWVkIGRpcmVjdGx5IG9uIHRoZSBjb21tYW5kCi0gICAgIyBsaW5lLgotICAgIGJ1aWxk
X2RpcnMgPSBmaWx0ZXIoc2VsZi5vcy5wYXRoLmlzZGlyLCBub3JtYWxpemVkX2FyZ3MpCi0KLSAg
ICAjIEFkZHMgYnVpbGQgZGlyZWN0b3JpZXMgc3BlY2lmaWVkIHZpYSB0aGVpciBidWlsZCBjb25m
aWd1cmF0aW9ucyB1c2luZwotICAgICMgdGhlIC1jIG9yIC1hIG9wdGlvbnMuCi0gICAgaWYgbmFt
ZWRfY29uZmlndXJhdGlvbnM6Ci0gICAgICBidWlsZF9kaXJzICs9IFtzZWxmLl9HZXRCdWlsZERp
ckZvckNvbmZpZyhjb25maWcpCi0gICAgICAgICAgICAgICAgICAgICBmb3IgY29uZmlnIGluIG5h
bWVkX2NvbmZpZ3VyYXRpb25zLnNwbGl0KCcsJyldCi0KLSAgICAjIEFkZHMgS05PV04gQlVJTEQg
RElSRUNUT1JJRVMgaWYgLWIgaXMgc3BlY2lmaWVkLgotICAgIGlmIGJ1aWx0X2NvbmZpZ3VyYXRp
b25zOgotICAgICAgYnVpbGRfZGlycyArPSBbc2VsZi5fR2V0QnVpbGREaXJGb3JDb25maWcoY29u
ZmlnKQotICAgICAgICAgICAgICAgICAgICAgZm9yIGNvbmZpZyBpbiBhdmFpbGFibGVfY29uZmln
dXJhdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYub3MucGF0aC5pc2RpcihzZWxm
Ll9HZXRCdWlsZERpckZvckNvbmZpZyhjb25maWcpKV0KLQotICAgICMgSWYgbm8gZGlyZWN0b3Jp
ZXMgd2VyZSBzcGVjaWZpZWQgZWl0aGVyIHZpYSAtYSwgLWIsIC1jLCBvciBkaXJlY3RseSwgdXNl
Ci0gICAgIyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uLgotICAgIGVsaWYgbm90IGJ1aWxkX2Rp
cnM6Ci0gICAgICBidWlsZF9kaXJzID0gW3NlbGYuX0dldEJ1aWxkRGlyRm9yQ29uZmlnKGF2YWls
YWJsZV9jb25maWd1cmF0aW9uc1swXSldCi0KLSAgICAjIE1ha2VzIHN1cmUgdGhlcmUgYXJlIG5v
IGR1cGxpY2F0aW9ucy4KLSAgICBidWlsZF9kaXJzID0gc2V0cy5TZXQoYnVpbGRfZGlycykKLQot
ICAgIGVycm9yc19mb3VuZCA9IEZhbHNlCi0gICAgbGlzdGVkX3B5dGhvbl90ZXN0cyA9IFtdICAj
IEFsbCBQeXRob24gdGVzdHMgbGlzdGVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCi0gICAgbGlzdGVk
X2JpbmFyeV90ZXN0cyA9IFtdICAjIEFsbCBiaW5hcnkgdGVzdHMgbGlzdGVkIG9uIHRoZSBjb21t
YW5kIGxpbmUuCi0KLSAgICB0ZXN0X2RpciA9IHNlbGYub3MucGF0aC5ub3JtcGF0aChzZWxmLm9z
LnBhdGguam9pbihzZWxmLnNjcmlwdF9kaXIsICd0ZXN0JykpCi0KLSAgICAjIFNpZnRzIHRocm91
Z2ggbm9uLWRpcmVjdG9yeSBhcmd1bWVudHMgZmlzaGluZyBmb3IgYW55IFB5dGhvbiBvciBiaW5h
cnkKLSAgICAjIHRlc3RzIGFuZCBkZXRlY3RpbmcgZXJyb3JzLgotICAgIGZvciBhcmd1bWVudCBp
biBzZXRzLlNldChub3JtYWxpemVkX2FyZ3MpIC0gYnVpbGRfZGlyczoKLSAgICAgIGlmIHJlLnNl
YXJjaChQWVRIT05fVEVTVF9SRUdFWCwgYXJndW1lbnQpOgotICAgICAgICBweXRob25fcGF0aCA9
IHNlbGYub3MucGF0aC5qb2luKHRlc3RfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYub3MucGF0aC5iYXNlbmFtZShhcmd1bWVudCkpCi0gICAgICAgIGlm
IHNlbGYub3MucGF0aC5pc2ZpbGUocHl0aG9uX3BhdGgpOgotICAgICAgICAgIGxpc3RlZF9weXRo
b25fdGVzdHMuYXBwZW5kKHB5dGhvbl9wYXRoKQotICAgICAgICBlbHNlOgotICAgICAgICAgIHN5
cy5zdGRlcnIud3JpdGUoJ1VuYWJsZSB0byBmaW5kIFB5dGhvbiB0ZXN0ICVzJyAlIGFyZ3VtZW50
KQotICAgICAgICAgIGVycm9yc19mb3VuZCA9IFRydWUKLSAgICAgIGVsaWYgcmUuc2VhcmNoKEJJ
TkFSWV9URVNUX1JFR0VYLCBhcmd1bWVudCk6Ci0gICAgICAgICMgVGhpcyBzY3JpcHQgYWxzbyBh
Y2NlcHRzIGJpbmFyeSB0ZXN0IG5hbWVzIHByZWZpeGVkIHdpdGggdGVzdC8gZm9yCi0gICAgICAg
ICMgdGhlIGNvbnZlbmllbmNlIG9mIHR5cGluZyB0aGVtIChjYW4gdXNlIHBhdGggY29tcGxldGlv
bnMgaW4gdGhlCi0gICAgICAgICMgc2hlbGwpLiAgU3RyaXBzIHRlc3QvIHByZWZpeCBmcm9tIHRo
ZSBiaW5hcnkgdGVzdCBuYW1lcy4KLSAgICAgICAgbGlzdGVkX2JpbmFyeV90ZXN0cy5hcHBlbmQo
c2VsZi5vcy5wYXRoLmJhc2VuYW1lKGFyZ3VtZW50KSkKLSAgICAgIGVsc2U6Ci0gICAgICAgIHN5
cy5zdGRlcnIud3JpdGUoJyVzIGlzIG5laXRoZXIgdGVzdCBub3IgYnVpbGQgZGlyZWN0b3J5JyAl
IGFyZ3VtZW50KQotICAgICAgICBlcnJvcnNfZm91bmQgPSBUcnVlCi0KLSAgICBpZiBlcnJvcnNf
Zm91bmQ6Ci0gICAgICByZXR1cm4gTm9uZQotCi0gICAgdXNlcl9oYXNfbGlzdGVkX3Rlc3RzID0g
bGlzdGVkX3B5dGhvbl90ZXN0cyBvciBsaXN0ZWRfYmluYXJ5X3Rlc3RzCi0KLSAgICBpZiB1c2Vy
X2hhc19saXN0ZWRfdGVzdHM6Ci0gICAgICBzZWxlY3RlZF9weXRob25fdGVzdHMgPSBsaXN0ZWRf
cHl0aG9uX3Rlc3RzCi0gICAgZWxzZToKLSAgICAgIHNlbGVjdGVkX3B5dGhvbl90ZXN0cyA9IHNl
bGYuX0ZpbmRGaWxlc0J5UmVnZXgodGVzdF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZVEhPTl9URVNUX1JFR0VYKQotCi0gICAgIyBU
T0RPKHZsYWRsQGdvb2dsZS5jb20pOiBza2lwIHVuYnVpbHQgUHl0aG9uIHRlc3RzIHdoZW4gLWIg
aXMgc3BlY2lmaWVkLgotICAgIHB5dGhvbl90ZXN0X3BhaXJzID0gW10KLSAgICBmb3IgZGlyZWN0
b3J5IGluIGJ1aWxkX2RpcnM6Ci0gICAgICBmb3IgdGVzdCBpbiBzZWxlY3RlZF9weXRob25fdGVz
dHM6Ci0gICAgICAgIGNvbmZpZyA9IF9HZXRDb25maWdGcm9tQnVpbGREaXIoZGlyZWN0b3J5KQot
ICAgICAgICBmaWxlX25hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHRlc3QpCi0gICAgICAgIGlmIHB5
dGhvbl90ZXN0c190b19za2lwIGFuZCAoY29uZmlnLCBmaWxlX25hbWUpIGluIHB5dGhvbl90ZXN0
c190b19za2lwOgotICAgICAgICAgIHByaW50ICgnTk9URTogJXMgaXMgc2tpcHBlZCBmb3IgY29u
ZmlndXJhdGlvbiAlcywgYXMgaXQgZG9lcyBub3QgJwotICAgICAgICAgICAgICAgICAnd29yayB0
aGVyZS4nICUgKGZpbGVfbmFtZSwgY29uZmlnKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICBw
eXRob25fdGVzdF9wYWlycy5hcHBlbmQoKGRpcmVjdG9yeSwgdGVzdCkpCi0KLSAgICBiaW5hcnlf
dGVzdF9wYWlycyA9IFtdCi0gICAgZm9yIGRpcmVjdG9yeSBpbiBidWlsZF9kaXJzOgotICAgICAg
aWYgdXNlcl9oYXNfbGlzdGVkX3Rlc3RzOgotICAgICAgICBiaW5hcnlfdGVzdF9wYWlycy5leHRl
bmQoCi0gICAgICAgICAgICBbKGRpcmVjdG9yeSwgc2VsZi5vcy5wYXRoLmpvaW4oZGlyZWN0b3J5
LCB0ZXN0KSkKLSAgICAgICAgICAgICBmb3IgdGVzdCBpbiBsaXN0ZWRfYmluYXJ5X3Rlc3RzXSkK
LSAgICAgIGVsc2U6Ci0gICAgICAgIHRlc3RzID0gc2VsZi5fRmluZEZpbGVzQnlSZWdleChkaXJl
Y3RvcnksIEJJTkFSWV9URVNUX1NFQVJDSF9SRUdFWCkKLSAgICAgICAgYmluYXJ5X3Rlc3RfcGFp
cnMuZXh0ZW5kKFsoZGlyZWN0b3J5LCB0ZXN0KSBmb3IgdGVzdCBpbiB0ZXN0c10pCi0KLSAgICBy
ZXR1cm4gKHB5dGhvbl90ZXN0X3BhaXJzLCBiaW5hcnlfdGVzdF9wYWlycykKLQotICBkZWYgUnVu
VGVzdHMoc2VsZiwgcHl0aG9uX3Rlc3RzLCBiaW5hcnlfdGVzdHMpOgotICAgICIiIlJ1bnMgUHl0
aG9uIGFuZCBiaW5hcnkgdGVzdHMgYW5kIHJlcG9ydHMgcmVzdWx0cyB0byB0aGUgc3RhbmRhcmQg
b3V0cHV0LgotCi0gICAgQXJnczoKLSAgICAgIHB5dGhvbl90ZXN0czogTGlzdCBvZiBQeXRob24g
dGVzdHMgdG8gcnVuIGluIHRoZSBmb3JtIG9mIHR1cGxlcwotICAgICAgICAgICAgICAgICAgICAo
YnVpbGQgZGlyZWN0b3J5LCBQeXRob24gdGVzdCBzY3JpcHQpLgotICAgICAgYmluYXJ5X3Rlc3Rz
OiBMaXN0IG9mIGJpbmFyeSB0ZXN0cyB0byBydW4gaW4gdGhlIGZvcm0gb2YgdHVwbGVzCi0gICAg
ICAgICAgICAgICAgICAgIChidWlsZCBkaXJlY3RvcnksIGJpbmFyeSBmaWxlKS4KLQotICAgIFJl
dHVybnM6Ci0gICAgICBUaGUgZXhpdCBjb2RlIHRoZSBwcm9ncmFtIHNob3VsZCBwYXNzIGludG8g
c3lzLmV4aXQoKS4KLSAgICAiIiIKLQotICAgIGlmIHB5dGhvbl90ZXN0cyBvciBiaW5hcnlfdGVz
dHM6Ci0gICAgICByZXN1bHRzID0gW10KLSAgICAgIGZvciBkaXJlY3RvcnksIHRlc3QgaW4gcHl0
aG9uX3Rlc3RzOgotICAgICAgICByZXN1bHRzLmFwcGVuZCgoZGlyZWN0b3J5LAotICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX1J1blB5
dGhvblRlc3QodGVzdCwgZGlyZWN0b3J5KSA9PSAwKSkKLSAgICAgIGZvciBkaXJlY3RvcnksIHRl
c3QgaW4gYmluYXJ5X3Rlc3RzOgotICAgICAgICByZXN1bHRzLmFwcGVuZCgoZGlyZWN0b3J5LAot
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vcy5wYXRoLmJhc2VuYW1lKHRlc3QpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fUnVuQmluYXJ5VGVzdCh0ZXN0KSA9PSAwKSkKLQot
ICAgICAgZmFpbGVkID0gWyhkaXJlY3RvcnksIHRlc3QpCi0gICAgICAgICAgICAgICAgZm9yIChk
aXJlY3RvcnksIHRlc3QsIHN1Y2Nlc3MpIGluIHJlc3VsdHMKLSAgICAgICAgICAgICAgICBpZiBu
b3Qgc3VjY2Vzc10KLSAgICAgIHByaW50Ci0gICAgICBwcmludCAnJWQgdGVzdHMgcnVuLicgJSBs
ZW4ocmVzdWx0cykKLSAgICAgIGlmIGZhaWxlZDoKLSAgICAgICAgcHJpbnQgJ1RoZSBmb2xsb3dp
bmcgJWQgdGVzdHMgZmFpbGVkOicgJSBsZW4oZmFpbGVkKQotICAgICAgICBmb3IgKGRpcmVjdG9y
eSwgdGVzdCkgaW4gZmFpbGVkOgotICAgICAgICAgIHByaW50ICclcyBpbiAlcycgJSAodGVzdCwg
ZGlyZWN0b3J5KQotICAgICAgICByZXR1cm4gMQotICAgICAgZWxzZToKLSAgICAgICAgcHJpbnQg
J0FsbCB0ZXN0cyBwYXNzZWQhJwotICAgIGVsc2U6ICAjIE5vIHRlc3RzIGRlZmluZWQKLSAgICAg
IHByaW50ICdOb3RoaW5nIHRvIHRlc3QgLSBubyB0ZXN0cyBzcGVjaWZpZWQhJwotCi0gICAgcmV0
dXJuIDAKLQotCi1kZWYgUGFyc2VBcmdzKHByb2plY3RfbmFtZSwgYXJndj1Ob25lLCBoZWxwX2Nh
bGxiYWNrPU5vbmUpOgotICAiIiJQYXJzZXMgdGhlIG9wdGlvbnMgcnVuX3Rlc3RzLnB5IHVzZXMu
IiIiCi0KLSAgIyBTdXBwcmVzc2VzIGxpbnQgd2FybmluZyBvbiB1bnVzZWQgYXJndW1lbnRzLiAg
VGhlc2UgYXJndW1lbnRzIGFyZQotICAjIHJlcXVpcmVkIGJ5IG9wdHBhcnNlLCBldmVuIHRob3Vn
aCB0aGV5IGFyZSB1bnVzZWQuCi0gICMgcHlsaW50OiBkaXNhYmxlLW1zZz1XMDYxMwotICBkZWYg
UHJpbnRIZWxwKG9wdGlvbiwgb3B0LCB2YWx1ZSwgcGFyc2VyKToKLSAgICBwcmludCBIRUxQX01T
RyAlIHsncHJvaic6IHByb2plY3RfbmFtZX0KLSAgICBzeXMuZXhpdCgxKQotCi0gIHBhcnNlciA9
IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctYycsCi0gICAg
ICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmUnLAotICAgICAgICAgICAgICAgICAgICBkZXN0
PSdjb25maWd1cmF0aW9ucycsCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSkKLSAg
cGFyc2VyLmFkZF9vcHRpb24oJy1hJywKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9y
ZV9jb25zdCcsCi0gICAgICAgICAgICAgICAgICAgIGRlc3Q9J2NvbmZpZ3VyYXRpb25zJywKLSAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICAgICBjb25z
dD0nYWxsJykKLSAgcGFyc2VyLmFkZF9vcHRpb24oJy1iJywKLSAgICAgICAgICAgICAgICAgICAg
YWN0aW9uPSdzdG9yZV9jb25zdCcsCi0gICAgICAgICAgICAgICAgICAgIGRlc3Q9J2J1aWx0X2Nv
bmZpZ3VyYXRpb25zJywKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKLSAgICAg
ICAgICAgICAgICAgICAgY29uc3Q9VHJ1ZSkKLSAgIyBSZXBsYWNlcyB0aGUgYnVpbHQtaW4gaGVs
cCB3aXRoIG91cnMuCi0gIHBhcnNlci5yZW1vdmVfb3B0aW9uKCctaCcpCi0gIHBhcnNlci5hZGRf
b3B0aW9uKCctaCcsICctLWhlbHAnLAotICAgICAgICAgICAgICAgICAgICBhY3Rpb249J2NhbGxi
YWNrJywKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s9aGVscF9jYWxsYmFjayBvciBQcmlu
dEhlbHApCi0gIHJldHVybiBwYXJzZXIucGFyc2VfYXJncyhhcmd2KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ydW5fdGVzdHNfdXRpbF90ZXN0LnB5IGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ydW5fdGVzdHNfdXRpbF90ZXN0LnB5CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCA5YzU1NzI2ZmQ1MGIyYTBjMjUwNjgxNDFkN2U2Njk0M2YwYjZk
ZTczLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3RzX3V0aWxfdGVzdC5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDY3NiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJp
Z2h0IDIwMDkgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLSIiIlRlc3RzIGZvciBydW5fdGVzdHNfdXRpbC5weSB0ZXN0IHJ1bm5lciBzY3JpcHQu
IiIiCi0KLV9fYXV0aG9yX18gPSAndmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldiknCi0KLWlt
cG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2V0cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9y
dCBydW5fdGVzdHNfdXRpbAotCi0KLUdURVNUX0RCR19ESVIgPSAnc2NvbnMvYnVpbGQvZGJnL2d0
ZXN0L3Njb25zJwotR1RFU1RfT1BUX0RJUiA9ICdzY29ucy9idWlsZC9vcHQvZ3Rlc3Qvc2NvbnMn
Ci1HVEVTVF9PVEhFUl9ESVIgPSAnc2NvbnMvYnVpbGQvb3RoZXIvZ3Rlc3Qvc2NvbnMnCi0KLQot
ZGVmIEFkZEV4ZUV4dGVuc2lvbihwYXRoKToKLSAgIiIiQXBwZW5kcyAuZXhlIHRvIHRoZSBwYXRo
IG9uIFdpbmRvd3Mgb3IgQ3lnd2luLiIiIgotCi0gIGlmIHJ1bl90ZXN0c191dGlsLklTX1dJTkRP
V1Mgb3IgcnVuX3Rlc3RzX3V0aWwuSVNfQ1lHV0lOOgotICAgIHJldHVybiBwYXRoICsgJy5leGUn
Ci0gIGVsc2U6Ci0gICAgcmV0dXJuIHBhdGgKLQotCi1jbGFzcyBGYWtlUGF0aChvYmplY3QpOgot
ICAiIiJBIGZha2Ugb3MucGF0aCBtb2R1bGUgZm9yIHRlc3RpbmcuIiIiCi0KLSAgZGVmIF9faW5p
dF9fKHNlbGYsIGN1cnJlbnRfZGlyPW9zLmdldGN3ZCgpLCBrbm93bl9wYXRocz1Ob25lKToKLSAg
ICBzZWxmLmN1cnJlbnRfZGlyID0gY3VycmVudF9kaXIKLSAgICBzZWxmLnRyZWUgPSB7fQotICAg
IHNlbGYucGF0aF9zZXBhcmF0b3IgPSBvcy5zZXAKLQotICAgICMga25vd25fcGF0aHMgY29udGFp
bnMgZWl0aGVyIGFic29sdXRlIG9yIHJlbGF0aXZlIHBhdGhzLiBSZWxhdGl2ZSBwYXRocwotICAg
ICMgYXJlIGFic29sdXRpemVkIHdpdGggc2VsZi5jdXJyZW50X2Rpci4KLSAgICBpZiBrbm93bl9w
YXRoczoKLSAgICAgIHNlbGYuX0FkZFBhdGhzKGtub3duX3BhdGhzKQotCi0gIGRlZiBfQWRkUGF0
aChzZWxmLCBwYXRoKToKLSAgICBlbmRzX3dpdGhfc2xhc2ggPSBwYXRoLmVuZHN3aXRoKCcvJykK
LSAgICBwYXRoID0gc2VsZi5hYnNwYXRoKHBhdGgpCi0gICAgaWYgZW5kc193aXRoX3NsYXNoOgot
ICAgICAgcGF0aCArPSBzZWxmLnBhdGhfc2VwYXJhdG9yCi0gICAgbmFtZV9saXN0ID0gcGF0aC5z
cGxpdChzZWxmLnBhdGhfc2VwYXJhdG9yKQotICAgIHRyZWUgPSBzZWxmLnRyZWUKLSAgICBmb3Ig
bmFtZSBpbiBuYW1lX2xpc3RbOi0xXToKLSAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICBjb250
aW51ZQotICAgICAgaWYgbmFtZSBpbiB0cmVlOgotICAgICAgICB0cmVlID0gdHJlZVtuYW1lXQot
ICAgICAgZWxzZToKLSAgICAgICAgdHJlZVtuYW1lXSA9IHt9Ci0gICAgICAgIHRyZWUgPSB0cmVl
W25hbWVdCi0KLSAgICBuYW1lID0gbmFtZV9saXN0Wy0xXQotICAgIGlmIG5hbWU6Ci0gICAgICBp
ZiBuYW1lIGluIHRyZWU6Ci0gICAgICAgIGFzc2VydCB0cmVlW25hbWVdID09IDEKLSAgICAgIGVs
c2U6Ci0gICAgICAgIHRyZWVbbmFtZV0gPSAxCi0KLSAgZGVmIF9BZGRQYXRocyhzZWxmLCBwYXRo
cyk6Ci0gICAgZm9yIHBhdGggaW4gcGF0aHM6Ci0gICAgICBzZWxmLl9BZGRQYXRoKHBhdGgpCi0K
LSAgZGVmIFBhdGhFbGVtZW50KHNlbGYsIHBhdGgpOgotICAgICIiIlJldHVybnMgYW4gaW50ZXJu
YWwgcmVwcmVzZW50YXRpb24gb2YgZGlyZWN0b3J5IHRyZWUgZW50cnkgZm9yIHBhdGguIiIiCi0g
ICAgdHJlZSA9IHNlbGYudHJlZQotICAgIG5hbWVfbGlzdCA9IHNlbGYuYWJzcGF0aChwYXRoKS5z
cGxpdChzZWxmLnBhdGhfc2VwYXJhdG9yKQotICAgIGZvciBuYW1lIGluIG5hbWVfbGlzdDoKLSAg
ICAgIGlmIG5vdCBuYW1lOgotICAgICAgICBjb250aW51ZQotICAgICAgdHJlZSA9IHRyZWUuZ2V0
KG5hbWUsIE5vbmUpCi0gICAgICBpZiB0cmVlIGlzIE5vbmU6Ci0gICAgICAgIGJyZWFrCi0KLSAg
ICByZXR1cm4gdHJlZQotCi0gICMgU2lsZW5jZXMgcHlsaW50IHdhcm5pbmcgYWJvdXQgdXNpbmcg
c3RhbmRhcmQgbmFtZXMuCi0gICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwOQotICBkZWYgbm9y
bXBhdGgoc2VsZiwgcGF0aCk6Ci0gICAgcmV0dXJuIG9zLnBhdGgubm9ybXBhdGgocGF0aCkKLQot
ICBkZWYgYWJzcGF0aChzZWxmLCBwYXRoKToKLSAgICByZXR1cm4gc2VsZi5ub3JtcGF0aChvcy5w
YXRoLmpvaW4oc2VsZi5jdXJyZW50X2RpciwgcGF0aCkpCi0KLSAgZGVmIGlzZmlsZShzZWxmLCBw
YXRoKToKLSAgICByZXR1cm4gc2VsZi5QYXRoRWxlbWVudChzZWxmLmFic3BhdGgocGF0aCkpID09
IDEKLQotICBkZWYgaXNkaXIoc2VsZiwgcGF0aCk6Ci0gICAgcmV0dXJuIHR5cGUoc2VsZi5QYXRo
RWxlbWVudChzZWxmLmFic3BhdGgocGF0aCkpKSA9PSB0eXBlKGRpY3QoKSkKLQotICBkZWYgYmFz
ZW5hbWUoc2VsZiwgcGF0aCk6Ci0gICAgcmV0dXJuIG9zLnBhdGguYmFzZW5hbWUocGF0aCkKLQot
ICBkZWYgZGlybmFtZShzZWxmLCBwYXRoKToKLSAgICByZXR1cm4gb3MucGF0aC5kaXJuYW1lKHBh
dGgpCi0KLSAgZGVmIGpvaW4oc2VsZiwgKmthcmdzKToKLSAgICByZXR1cm4gb3MucGF0aC5qb2lu
KCprYXJncykKLQotCi1jbGFzcyBGYWtlT3Mob2JqZWN0KToKLSAgIiIiQSBmYWtlIG9zIG1vZHVs
ZSBmb3IgdGVzdGluZy4iIiIKLSAgUF9XQUlUID0gb3MuUF9XQUlUCi0KLSAgZGVmIF9faW5pdF9f
KHNlbGYsIGZha2VfcGF0aF9tb2R1bGUpOgotICAgIHNlbGYucGF0aCA9IGZha2VfcGF0aF9tb2R1
bGUKLQotICAgICMgU29tZSBtZXRob2RzL2F0dHJpYnV0ZXMgYXJlIGRlbGVnYXRlZCB0byB0aGUg
cmVhbCBvcyBtb2R1bGUuCi0gICAgc2VsZi5lbnZpcm9uID0gb3MuZW52aXJvbgotCi0gICMgcHls
aW50OiBkaXNhYmxlLW1zZz1DNjQwOQotICBkZWYgbGlzdGRpcihzZWxmLCBwYXRoKToKLSAgICBh
c3NlcnQgc2VsZi5wYXRoLmlzZGlyKHBhdGgpCi0gICAgcmV0dXJuIHNlbGYucGF0aC5QYXRoRWxl
bWVudChwYXRoKS5pdGVya2V5cygpCi0KLSAgZGVmIHNwYXdudihzZWxmLCB3YWl0LCBleGVjdXRh
YmxlLCAqa2FyZ3MpOgotICAgIGFzc2VydCB3YWl0ID09IEZha2VPcy5QX1dBSVQKLSAgICByZXR1
cm4gc2VsZi5zcGF3bl9pbXBsKGV4ZWN1dGFibGUsIGthcmdzKQotCi0KLWNsYXNzIEdldFRlc3Rz
VG9SdW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgIiIiRXhlcmNpc2VzIFRlc3RSdW5uZXIu
R2V0VGVzdHNUb1J1bi4iIiIKLQotICBkZWYgTm9ybWFsaXplR2V0VGVzdHNUb1J1blJlc3VsdHMo
c2VsZiwgcmVzdWx0cyk6Ci0gICAgIiIiTm9ybWFsaXplcyBwYXRoIGRhdGEgcmV0dXJuZWQgZnJv
bSBHZXRUZXN0c1RvUnVuIGZvciBjb21wYXJpc29uLiIiIgotCi0gICAgZGVmIE5vcm1hbGl6ZVB5
dGhvblRlc3RQYWlyKHBhaXIpOgotICAgICAgIiIiTm9ybWFsaXplcyBwYXRoIGRhdGEgaW4gdGhl
IChkaXJlY3RvcnksIHB5dGhvbl9zY3JpcHQpIHBhaXIuIiIiCi0KLSAgICAgIHJldHVybiAob3Mu
cGF0aC5ub3JtcGF0aChwYWlyWzBdKSwgb3MucGF0aC5ub3JtcGF0aChwYWlyWzFdKSkKLQotICAg
IGRlZiBOb3JtYWxpemVCaW5hcnlUZXN0UGFpcihwYWlyKToKLSAgICAgICIiIk5vcm1hbGl6ZXMg
cGF0aCBkYXRhIGluIHRoZSAoZGlyZWN0b3J5LCBiaW5hcnlfZXhlY3V0YWJsZSkgcGFpci4iIiIK
LQotICAgICAgZGlyZWN0b3J5LCBleGVjdXRhYmxlID0gbWFwKG9zLnBhdGgubm9ybXBhdGgsIHBh
aXIpCi0KLSAgICAgICMgT24gV2luZG93cyBhbmQgQ3lnd2luLCB0aGUgdGVzdCBmaWxlIG5hbWVz
IGhhdmUgdGhlIC5leGUgZXh0ZW5zaW9uLCBidXQKLSAgICAgICMgdGhleSBjYW4gYmUgaW52b2tl
ZCBlaXRoZXIgYnkgbmFtZSBvciBieSBuYW1lK2V4dGVuc2lvbi4gT3VyIHRlc3QgbXVzdAotICAg
ICAgIyBhY2NvbW1vZGF0ZSBib3RoIHNpdHVhdGlvbnMuCi0gICAgICBpZiBydW5fdGVzdHNfdXRp
bC5JU19XSU5ET1dTIG9yIHJ1bl90ZXN0c191dGlsLklTX0NZR1dJTjoKLSAgICAgICAgZXhlY3V0
YWJsZSA9IHJlLnN1YihyJ1wuZXhlJCcsICcnLCBleGVjdXRhYmxlKQotICAgICAgcmV0dXJuIChk
aXJlY3RvcnksIGV4ZWN1dGFibGUpCi0KLSAgICBweXRob25fdGVzdHMgPSBzZXRzLlNldChtYXAo
Tm9ybWFsaXplUHl0aG9uVGVzdFBhaXIsIHJlc3VsdHNbMF0pKQotICAgIGJpbmFyeV90ZXN0cyA9
IHNldHMuU2V0KG1hcChOb3JtYWxpemVCaW5hcnlUZXN0UGFpciwgcmVzdWx0c1sxXSkpCi0gICAg
cmV0dXJuIChweXRob25fdGVzdHMsIGJpbmFyeV90ZXN0cykKLQotICBkZWYgQXNzZXJ0UmVzdWx0
c0VxdWFsKHNlbGYsIHJlc3VsdHMsIGV4cGVjdGVkKToKLSAgICAiIiJBc3NlcnRzIHJlc3VsdHMg
cmV0dXJuZWQgYnkgR2V0VGVzdHNUb1J1biBlcXVhbCB0byBleHBlY3RlZCByZXN1bHRzLiIiIgot
Ci0gICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLk5vcm1hbGl6ZUdldFRlc3RzVG9SdW5SZXN1bHRz
KHJlc3VsdHMpLAotICAgICAgICAgICAgICAgICAgICAgc2VsZi5Ob3JtYWxpemVHZXRUZXN0c1Rv
UnVuUmVzdWx0cyhleHBlY3RlZCksCi0gICAgICAgICAgICAgICAgICAgICAnSW5jb3JyZWN0IHNl
dCBvZiB0ZXN0cyByZXR1cm5lZDpcbiVzXG5leHBlY3RlZDpcbiVzJyAlCi0gICAgICAgICAgICAg
ICAgICAgICAocmVzdWx0cywgZXhwZWN0ZWQpKQotCi0gIGRlZiBzZXRVcChzZWxmKToKLSAgICBz
ZWxmLmZha2Vfb3MgPSBGYWtlT3MoRmFrZVBhdGgoCi0gICAgICAgIGN1cnJlbnRfZGlyPW9zLnBh
dGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUocnVuX3Rlc3RzX3V0aWwuX19maWxlX18pKSwKLSAg
ICAgICAga25vd25fcGF0aHM9W0FkZEV4ZUV4dGVuc2lvbihHVEVTVF9EQkdfRElSICsgJy9ndGVz
dF91bml0dGVzdCcpLAotICAgICAgICAgICAgICAgICAgICAgQWRkRXhlRXh0ZW5zaW9uKEdURVNU
X09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgICAgICAgICAgICAndGVz
dC9ndGVzdF9jb2xvcl90ZXN0LnB5J10pKQotICAgIHNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyA9
IFsnZGJnJywgJ29wdCddCi0gICAgc2VsZi50ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRl
c3RSdW5uZXIoc2NyaXB0X2Rpcj0nLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5qZWN0ZWRfb3M9c2VsZi5mYWtlX29zLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluamVjdGVkX3N1YnByb2Nlc3M9
Tm9uZSkKLQotICBkZWYgdGVzdEJpbmFyeVRlc3RzT25seShzZWxmKToKLSAgICAiIiJFeGVyY2lz
ZXMgR2V0VGVzdHNUb1J1biB3aXRoIHBhcmFtZXRlcnMgZGVzaWduYXRpbmcgYmluYXJ5IHRlc3Rz
IG9ubHkuIiIiCi0KLSAgICAjIEEgZGVmYXVsdCBidWlsZC4KLSAgICBzZWxmLkFzc2VydFJlc3Vs
dHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAg
ICAgICAgWydndGVzdF91bml0dGVzdCddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBG
YWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29u
ZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdU
RVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgQW4gZXhwbGljaXRs
eSBzcGVjaWZpZWQgZGlyZWN0b3J5LgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAg
ICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbR1RFU1Rf
REJHX0RJUiwgJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAg
IEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9j
b25maWd1cmF0aW9ucyksCi0gICAgICAgIChbXSwKLSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwg
R1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBBIHBhcnRpY3Vs
YXIgY29uZmlndXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAg
c2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF91bml0
dGVzdCddLAotICAgICAgICAgICAgJ290aGVyJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAg
ICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyks
Ci0gICAgICAgIChbXSwKLSAgICAgICAgIFsoR1RFU1RfT1RIRVJfRElSLCBHVEVTVF9PVEhFUl9E
SVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgQWxsIGF2YWlsYWJsZSBjb25maWd1
cmF0aW9ucwotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3Rf
cnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X3VuaXR0ZXN0J10sCi0g
ICAgICAgICAgICAnYWxsJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxh
YmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChb
XSwKLSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5p
dHRlc3QnKSwKLSAgICAgICAgICAoR1RFU1RfT1BUX0RJUiwgR1RFU1RfT1BUX0RJUiArICcvZ3Rl
c3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBBbGwgYnVpbHQgY29uZmlndXJhdGlvbnMgKHVuYnVp
bHQgZG9uJ3QgY2F1c2UgZmFpbHVyZSkuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0g
ICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rl
c3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgVHJ1ZSwKLSAgICAg
ICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMg
KyBbJ3VuYnVpbHQnXSksCi0gICAgICAgIChbXSwKLSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwg
R1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAoR1RFU1RfT1BU
X0RJUiwgR1RFU1RfT1BUX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBBIGNv
bWJpbmF0aW9uIG9mIGFuIGV4cGxpY2l0IGRpcmVjdG9yeSBhbmQgYSBjb25maWd1cmF0aW9uLgot
ICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdl
dFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbR1RFU1RfREJHX0RJUiwgJ2d0ZXN0X3VuaXR0ZXN0
J10sCi0gICAgICAgICAgICAnb3B0JywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAg
YXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAg
ICAgIChbXSwKLSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rl
c3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAoR1RFU1RfT1BUX0RJUiwgR1RFU1RfT1BUX0RJUiAr
ICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBTYW1lIHRlc3Qgc3BlY2lmaWVkIGluIGFu
IGV4cGxpY2l0IGRpcmVjdG9yeSBhbmQgdmlhIGEgY29uZmlndXJhdGlvbi4KLSAgICBzZWxmLkFz
c2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVu
KAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIsICdndGVzdF91bml0dGVzdCddLAotICAgICAg
ICAgICAgJ2RiZycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9j
b25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0g
ICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0
JyldKSkKLQotICAgICMgQWxsIGJ1aWx0IGNvbmZpZ3VyYXRpb25zICsgZXhwbGljaXQgZGlyZWN0
b3J5ICsgZXhwbGljaXQgY29uZmlndXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVh
bCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAg
W0dURVNUX0RCR19ESVIsICdndGVzdF91bml0dGVzdCddLAotICAgICAgICAgICAgJ29wdCcsCi0g
ICAgICAgICAgICBUcnVlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNl
bGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbXSwKLSAgICAgICAgIFsoR1RFU1Rf
REJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAo
R1RFU1RfT1BUX0RJUiwgR1RFU1RfT1BUX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0g
IGRlZiB0ZXN0UHl0aG9uVGVzdHNPbmx5KHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBHZXRUZXN0
c1RvUnVuIHdpdGggcGFyYW1ldGVycyBkZXNpZ25hdGluZyBQeXRob24gdGVzdHMgb25seS4iIiIK
LQotICAgICMgQSBkZWZhdWx0IGJ1aWxkLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAot
ICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0
ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFsc2Us
Ci0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3Vy
YXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVz
dC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAgICMgQW4gZXhwbGljaXRseSBzcGVjaWZpZWQg
ZGlyZWN0b3J5LgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRl
c3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbR1RFU1RfREJHX0RJUiwgJ3Rl
c3QvZ3Rlc3RfY29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBG
YWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29u
ZmlndXJhdGlvbnMpLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xv
cl90ZXN0LnB5JyldLAotICAgICAgICAgW10pKQotCi0gICAgIyBBIHBhcnRpY3VsYXIgY29uZmln
dXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0
X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF9jb2xvcl90ZXN0LnB5
J10sCi0gICAgICAgICAgICAnb3RoZXInLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAg
ICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAg
ICAgICAgKFsoR1RFU1RfT1RIRVJfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAot
ICAgICAgICAgW10pKQotCi0gICAgIyBBbGwgYXZhaWxhYmxlIGNvbmZpZ3VyYXRpb25zCi0gICAg
c2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVz
dHNUb1J1bigKLSAgICAgICAgICAgIFsndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAg
ICAgICAgICAnYWxsJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxl
X2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbKEdU
RVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKSwKLSAgICAgICAgICAoR1RF
U1RfT1BUX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkK
LQotICAgICMgQWxsIGJ1aWx0IGNvbmZpZ3VyYXRpb25zICh1bmJ1aWx0IGRvbid0IGNhdXNlIGZh
aWx1cmUpLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3Rf
cnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X2NvbG9yX3Rlc3QucHkn
XSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgVHJ1ZSwKLSAgICAgICAgICAgIGF2YWls
YWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMgKyBbJ3VuYnVpbHQn
XSksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkn
KSwKLSAgICAgICAgICAoR1RFU1RfT1BUX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScp
XSwKLSAgICAgICAgIFtdKSkKLQotICAgICMgQSBjb21iaW5hdGlvbiBvZiBhbiBleHBsaWNpdCBk
aXJlY3RvcnkgYW5kIGEgY29uZmlndXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVh
bCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAg
W0dURVNUX0RCR19ESVIsICdndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnb3B0
JywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRp
b25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIs
ICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKSwKLSAgICAgICAgICAoR1RFU1RfT1BUX0RJUiwg
J3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAgICMgU2Ft
ZSB0ZXN0IHNwZWNpZmllZCBpbiBhbiBleHBsaWNpdCBkaXJlY3RvcnkgYW5kIHZpYSBhIGNvbmZp
Z3VyYXRpb24uCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVz
dF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rl
c3RfY29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJ2RiZycsCi0gICAgICAgICAgICBGYWxz
ZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmln
dXJhdGlvbnMpLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90
ZXN0LnB5JyldLAotICAgICAgICAgW10pKQotCi0gICAgIyBBbGwgYnVpbHQgY29uZmlndXJhdGlv
bnMgKyBleHBsaWNpdCBkaXJlY3RvcnkgKyBleHBsaWNpdCBjb25maWd1cmF0aW9uLgotICAgIHNl
bGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3Rz
VG9SdW4oCi0gICAgICAgICAgICBbR1RFU1RfREJHX0RJUiwgJ2d0ZXN0X2NvbG9yX3Rlc3QucHkn
XSwKLSAgICAgICAgICAgICdvcHQnLAotICAgICAgICAgICAgVHJ1ZSwKLSAgICAgICAgICAgIGF2
YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAg
ICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyksCi0gICAgICAg
ICAgKEdURVNUX09QVF9ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAg
ICBbXSkpCi0KLSAgZGVmIHRlc3RDb21iaW5hdGlvbk9mQmluYXJ5QW5kUHl0aG9uVGVzdHMoc2Vs
Zik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3RzVG9SdW4gd2l0aCBtaXhlZCBiaW5hcnkvUHl0
aG9uIHRlc3RzLiIiIgotCi0gICAgIyBVc2Ugb25seSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9y
IHRoaXMgdGVzdC4KLQotICAgICMgTmVpdGhlciBiaW5hcnkgbm9yIFB5dGhvbiB0ZXN0cyBhcmUg
c3BlY2lmaWVkIHNvIGZpbmQgYWxsLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAg
ICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbXSwKLSAg
ICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVf
Y29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RF
U1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFsoR1RF
U1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0gICAg
IyBTcGVjaWZ5aW5nIGJvdGggYmluYXJ5IGFuZCBQeXRob24gdGVzdHMuCi0gICAgc2VsZi5Bc3Nl
cnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigK
LSAgICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnLCAnZ3Rlc3RfY29sb3JfdGVzdC5weSddLAot
ICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJs
ZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoWyhH
VEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgWyhH
VEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAg
ICAjIFNwZWNpZnlpbmcgYmluYXJ5IHRlc3RzIHN1cHByZXNzZXMgUHl0aG9uIHRlc3RzLgotICAg
IHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRl
c3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAn
JywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRp
b25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbXSwKLSAgICAgICAgIFso
R1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0g
ICAjIFNwZWNpZnlpbmcgUHl0aG9uIHRlc3RzIHN1cHByZXNzZXMgYmluYXJ5IHRlc3RzLgotICAg
IHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRl
c3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAg
ICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmln
dXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJH
X0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICBk
ZWYgdGVzdElnbm9yZXNOb25UZXN0RmlsZXMoc2VsZik6Ci0gICAgIiIiVmVyaWZpZXMgdGhhdCBH
ZXRUZXN0c1RvUnVuIGlnbm9yZXMgbm9uLXRlc3QgZmlsZXMgaW4gdGhlIGZpbGVzeXN0ZW0uIiIi
Ci0KLSAgICBzZWxmLmZha2Vfb3MgPSBGYWtlT3MoRmFrZVBhdGgoCi0gICAgICAgIGN1cnJlbnRf
ZGlyPW9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUocnVuX3Rlc3RzX3V0aWwuX19maWxl
X18pKSwKLSAgICAgICAga25vd25fcGF0aHM9W0FkZEV4ZUV4dGVuc2lvbihHVEVTVF9EQkdfRElS
ICsgJy9ndGVzdF9ub250ZXN0JyksCi0gICAgICAgICAgICAgICAgICAgICAndGVzdC8nXSkpCi0g
ICAgc2VsZi50ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5uZXIoc2NyaXB0X2Rp
cj0nLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5qZWN0ZWRfb3M9c2VsZi5mYWtlX29zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluamVjdGVkX3N1YnByb2Nlc3M9Tm9uZSkKLSAgICBzZWxmLkFz
c2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVu
KAotICAgICAgICAgICAgW10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIFRydWUsCi0g
ICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRp
b25zKSwKLSAgICAgICAgKFtdLCBbXSkpCi0KLSAgZGVmIHRlc3RXb3Jrc0Zyb21EaWZmZXJlbnRE
aXIoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3RzVG9SdW4gZnJvbSBhIGRpcmVjdG9y
eSBkaWZmZXJlbnQgZnJvbSBydW5fdGVzdC5weSdzLiIiIgotCi0gICAgIyBIZXJlIHdlIHNpbXVs
YXRlIGFuIHRlc3Qgc2NyaXB0IGluIGRpcmVjdG9yeSAvZC8gY2FsbGVkIGZyb20gdGhlCi0gICAg
IyBkaXJlY3RvcnkgL2EvYi9jLy4KLSAgICBzZWxmLmZha2Vfb3MgPSBGYWtlT3MoRmFrZVBhdGgo
Ci0gICAgICAgIGN1cnJlbnRfZGlyPW9zLnBhdGguYWJzcGF0aCgnL2EvYi9jJyksCi0gICAgICAg
IGtub3duX3BhdGhzPVsKLSAgICAgICAgICAgICcvYS9iL2MvJywKLSAgICAgICAgICAgIEFkZEV4
ZUV4dGVuc2lvbignL2QvJyArIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0g
ICAgICAgICAgICBBZGRFeGVFeHRlbnNpb24oJy9kLycgKyBHVEVTVF9PUFRfRElSICsgJy9ndGVz
dF91bml0dGVzdCcpLAotICAgICAgICAgICAgJy9kL3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weSdd
KSkKLSAgICBzZWxmLmZha2VfY29uZmlndXJhdGlvbnMgPSBbJ2RiZycsICdvcHQnXQotICAgIHNl
bGYudGVzdF9ydW5uZXIgPSBydW5fdGVzdHNfdXRpbC5UZXN0UnVubmVyKHNjcmlwdF9kaXI9Jy9k
LycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5q
ZWN0ZWRfb3M9c2VsZi5mYWtlX29zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluamVjdGVkX3N1YnByb2Nlc3M9Tm9uZSkKLSAgICAjIEEgYmluYXJ5
IHRlc3QuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9y
dW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAg
ICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVf
Y29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFtdLAot
ICAgICAgICAgWygnL2QvJyArIEdURVNUX0RCR19ESVIsICcvZC8nICsgR1RFU1RfREJHX0RJUiAr
ICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBBIFB5dGhvbiB0ZXN0LgotICAgIHNlbGYu
QXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9S
dW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICcn
LAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlv
bnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoJy9kLycgKyBHVEVTVF9E
QkdfRElSLCAnL2QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLCBbXSkpCi0KLSAgZGVmIHRl
c3ROb25UZXN0QmluYXJ5KHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBHZXRUZXN0c1RvUnVuIHdp
dGggYSBub24tdGVzdCBwYXJhbWV0ZXIuIiIiCi0KLSAgICBzZWxmLmFzc2VydF8oCi0gICAgICAg
IG5vdCBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0
X3VuaXR0ZXN0X25vdF9yZWFsbHknXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFs
c2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZp
Z3VyYXRpb25zKSkKLQotICBkZWYgdGVzdE5vbkV4aXN0aW5nUHl0aG9uVGVzdChzZWxmKToKLSAg
ICAiIiJFeGVyY2lzZXMgR2V0VGVzdHNUb1J1biB3aXRoIGEgbm9uLWV4aXN0ZW50IFB5dGhvbiB0
ZXN0IHBhcmFtZXRlci4iIiIKLQotICAgIHNlbGYuYXNzZXJ0XygKLSAgICAgICAgbm90IHNlbGYu
dGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnbm9uZXhpc3RlbnRfdGVz
dC5weSddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAg
IGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpKQotCi0g
IGlmIHJ1bl90ZXN0c191dGlsLklTX1dJTkRPV1Mgb3IgcnVuX3Rlc3RzX3V0aWwuSVNfQ1lHV0lO
OgotCi0gICAgZGVmIHRlc3REb2VzTm90UGlja05vbkV4ZUZpbGVzT25XaW5kb3dzKHNlbGYpOgot
ICAgICAgIiIiVmVyaWZpZXMgdGhhdCBHZXRUZXN0c1RvUnVuIGRvZXMgbm90IGZpbmQgX3Rlc3Qg
ZmlsZXMgb24gV2luZG93cy4iIiIKLQotICAgICAgc2VsZi5mYWtlX29zID0gRmFrZU9zKEZha2VQ
YXRoKAotICAgICAgICAgIGN1cnJlbnRfZGlyPW9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5h
bWUocnVuX3Rlc3RzX3V0aWwuX19maWxlX18pKSwKLSAgICAgICAgICBrbm93bl9wYXRocz1bJy9k
LycgKyBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF90ZXN0JywgJ3Rlc3QvJ10pKQotICAgICAgc2Vs
Zi50ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5uZXIoc2NyaXB0X2Rpcj0nLics
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmpl
Y3RlZF9vcz1zZWxmLmZha2Vfb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmplY3RlZF9zdWJwcm9jZXNzPU5vbmUpCi0gICAgICBzZWxmLkFz
c2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9S
dW4oCi0gICAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgICAnJywKLSAgICAgICAgICAgICAg
VHJ1ZSwKLSAgICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9j
b25maWd1cmF0aW9ucyksCi0gICAgICAgICAgKFtdLCBbXSkpCi0KLQotY2xhc3MgUnVuVGVzdHNU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgIiIiRXhlcmNpc2VzIFRlc3RSdW5uZXIuUnVuVGVz
dHMuIiIiCi0KLSAgZGVmIFNwYXduU3VjY2VzcyhzZWxmLCB1bnVzZWRfZXhlY3V0YWJsZSwgdW51
c2VkX2FyZ3YpOgotICAgICIiIkZha2VzIHRlc3Qgc3VjY2VzcyBieSByZXR1cm5pbmcgMCBhcyBh
biBleGl0IGNvZGUuIiIiCi0KLSAgICBzZWxmLm51bV9zcGF3bl9jYWxscyArPSAxCi0gICAgcmV0
dXJuIDAKLQotICBkZWYgU3Bhd25GYWlsdXJlKHNlbGYsIHVudXNlZF9leGVjdXRhYmxlLCB1bnVz
ZWRfYXJndik6Ci0gICAgIiIiRmFrZXMgdGVzdCBzdWNjZXNzIGJ5IHJldHVybmluZyAxIGFzIGFu
IGV4aXQgY29kZS4iIiIKLQotICAgIHNlbGYubnVtX3NwYXduX2NhbGxzICs9IDEKLSAgICByZXR1
cm4gMQotCi0gIGRlZiBzZXRVcChzZWxmKToKLSAgICBzZWxmLmZha2Vfb3MgPSBGYWtlT3MoRmFr
ZVBhdGgoCi0gICAgICAgIGN1cnJlbnRfZGlyPW9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5h
bWUocnVuX3Rlc3RzX3V0aWwuX19maWxlX18pKSwKLSAgICAgICAga25vd25fcGF0aHM9WwotICAg
ICAgICAgICAgQWRkRXhlRXh0ZW5zaW9uKEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0
JyksCi0gICAgICAgICAgICBBZGRFeGVFeHRlbnNpb24oR1RFU1RfT1BUX0RJUiArICcvZ3Rlc3Rf
dW5pdHRlc3QnKSwKLSAgICAgICAgICAgICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknXSkpCi0g
ICAgc2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zID0gWydkYmcnLCAnb3B0J10KLSAgICBzZWxmLnRl
c3RfcnVubmVyID0gcnVuX3Rlc3RzX3V0aWwuVGVzdFJ1bm5lcigKLSAgICAgICAgc2NyaXB0X2Rp
cj1vcy5wYXRoLmRpcm5hbWUoX19maWxlX18pIG9yICcuJywKLSAgICAgICAgaW5qZWN0ZWRfb3M9
c2VsZi5mYWtlX29zLAotICAgICAgICBpbmplY3RlZF9zdWJwcm9jZXNzPU5vbmUpCi0gICAgc2Vs
Zi5udW1fc3Bhd25fY2FsbHMgPSAwICAjIEEgbnVtYmVyIG9mIGNhbGxzIHRvIHNwYXduLgotCi0g
IGRlZiB0ZXN0UnVuUHl0aG9uVGVzdFN1Y2Nlc3Moc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIFJ1
blRlc3RzIHRvIGhhbmRsZSBhIFB5dGhvbiB0ZXN0IHN1Y2Nlc3MuIiIiCi0KLSAgICBzZWxmLmZh
a2Vfb3Muc3Bhd25faW1wbCA9IHNlbGYuU3Bhd25TdWNjZXNzCi0gICAgc2VsZi5hc3NlcnRFcXVh
bCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5SdW5UZXN0cygKLSAgICAgICAgICAgIFsoR1RF
U1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgICAgIFtd
KSwKLSAgICAgICAgMCkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnVtX3NwYXduX2NhbGxz
LCAxKQotCi0gIGRlZiB0ZXN0UnVuQmluYXJ5VGVzdFN1Y2Nlc3Moc2VsZik6Ci0gICAgIiIiRXhl
cmNpc2VzIFJ1blRlc3RzIHRvIGhhbmRsZSBhIGJpbmFyeSB0ZXN0IHN1Y2Nlc3MuIiIiCi0KLSAg
ICBzZWxmLmZha2Vfb3Muc3Bhd25faW1wbCA9IHNlbGYuU3Bhd25TdWNjZXNzCi0gICAgc2VsZi5h
c3NlcnRFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5SdW5UZXN0cygKLSAgICAgICAg
ICAgIFtdLAotICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9n
dGVzdF91bml0dGVzdCcpXSksCi0gICAgICAgIDApCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzZWxm
Lm51bV9zcGF3bl9jYWxscywgMSkKLQotICBkZWYgdGVzdFJ1blB5dGhvblRlc3RGYXVpbHVyZShz
ZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgUnVuVGVzdHMgdG8gaGFuZGxlIGEgUHl0aG9uIHRlc3Qg
ZmFpbHVyZS4iIiIKLQotICAgIHNlbGYuZmFrZV9vcy5zcGF3bl9pbXBsID0gc2VsZi5TcGF3bkZh
aWx1cmUKLSAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLlJ1
blRlc3RzKAotICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90
ZXN0LnB5JyldLAotICAgICAgICAgICAgW10pLAotICAgICAgICAxKQotICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VsZi5udW1fc3Bhd25fY2FsbHMsIDEpCi0KLSAgZGVmIHRlc3RSdW5CaW5hcnlUZXN0
RmFpbHVyZShzZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgUnVuVGVzdHMgdG8gaGFuZGxlIGEgYmlu
YXJ5IHRlc3QgZmFpbHVyZS4iIiIKLQotICAgIHNlbGYuZmFrZV9vcy5zcGF3bl9pbXBsID0gc2Vs
Zi5TcGF3bkZhaWx1cmUKLSAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICBzZWxmLnRlc3Rf
cnVubmVyLlJ1blRlc3RzKAotICAgICAgICAgICAgW10sCi0gICAgICAgICAgICBbKEdURVNUX0RC
R19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSwKLSAgICAgICAgMSkK
LSAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnVtX3NwYXduX2NhbGxzLCAxKQotCi0gIGRlZiB0
ZXN0Q29tYmluZWRUZXN0U3VjY2VzcyhzZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgUnVuVGVzdHMg
dG8gaGFuZGxlIGEgc3VjY2VzcyBvZiBib3RoIFB5dGhvbiBhbmQgYmluYXJ5IHRlc3QuIiIiCi0K
LSAgICBzZWxmLmZha2Vfb3Muc3Bhd25faW1wbCA9IHNlbGYuU3Bhd25TdWNjZXNzCi0gICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5SdW5UZXN0cygKLSAgICAg
ICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3Qn
KV0sCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0
X3VuaXR0ZXN0JyldKSwKLSAgICAgICAgMCkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnVt
X3NwYXduX2NhbGxzLCAyKQotCi0gIGRlZiB0ZXN0Q29tYmluZWRUZXN0U3VjY2Vzc0FuZEZhaWx1
cmUoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIFJ1blRlc3RzIHRvIGhhbmRsZSBhIHN1Y2Nlc3Mg
b2YgYm90aCBQeXRob24gYW5kIGJpbmFyeSB0ZXN0LiIiIgotCi0gICAgZGVmIFNwYXduSW1wbChl
eGVjdXRhYmxlLCBhcmd2KToKLSAgICAgIHNlbGYubnVtX3NwYXduX2NhbGxzICs9IDEKLSAgICAg
ICMgU2ltdWxhdGVzIGZhaWx1cmUgb2YgYSBQeXRob24gdGVzdCBhbmQgc3VjY2VzcyBvZiBhIGJp
bmFyeSB0ZXN0LgotICAgICAgaWYgJy5weScgaW4gZXhlY3V0YWJsZSBvciAnLnB5JyBpbiBhcmd2
WzBdOgotICAgICAgICByZXR1cm4gMQotICAgICAgZWxzZToKLSAgICAgICAgcmV0dXJuIDAKLQot
ICAgIHNlbGYuZmFrZV9vcy5zcGF3bl9pbXBsID0gU3Bhd25JbXBsCi0gICAgc2VsZi5hc3NlcnRF
cXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5SdW5UZXN0cygKLSAgICAgICAgICAgIFso
R1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0sCi0gICAg
ICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0
JyldKSwKLSAgICAgICAgMCkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnVtX3NwYXduX2Nh
bGxzLCAyKQotCi0KLWNsYXNzIFBhcnNlQXJnc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAi
IiJFeGVyY2lzZXMgUGFyc2VBcmdzLiIiIgotCi0gIGRlZiB0ZXN0Tm9PcHRpb25zKHNlbGYpOgot
ICAgIG9wdGlvbnMsIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoJ2d0ZXN0JywgYXJn
dj1bJ3NjcmlwdC5weSddKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgWydzY3JpcHQucHkn
XSkKLSAgICBzZWxmLmFzc2VydF8ob3B0aW9ucy5jb25maWd1cmF0aW9ucyBpcyBOb25lKQotICAg
IHNlbGYuYXNzZXJ0RmFsc2Uob3B0aW9ucy5idWlsdF9jb25maWd1cmF0aW9ucykKLQotICBkZWYg
dGVzdE9wdGlvbkMoc2VsZik6Ci0gICAgb3B0aW9ucywgYXJncyA9IHJ1bl90ZXN0c191dGlsLlBh
cnNlQXJncygKLSAgICAgICAgJ2d0ZXN0JywgYXJndj1bJ3NjcmlwdC5weScsICctYycsICdkYmcn
XSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5h
c3NlcnRFcXVhbChvcHRpb25zLmNvbmZpZ3VyYXRpb25zLCAnZGJnJykKLSAgICBzZWxmLmFzc2Vy
dEZhbHNlKG9wdGlvbnMuYnVpbHRfY29uZmlndXJhdGlvbnMpCi0KLSAgZGVmIHRlc3RPcHRpb25B
KHNlbGYpOgotICAgIG9wdGlvbnMsIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoJ2d0
ZXN0JywgYXJndj1bJ3NjcmlwdC5weScsICctYSddKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJn
cywgWydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMuY29uZmlndXJh
dGlvbnMsICdhbGwnKQotICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3B0aW9ucy5idWlsdF9jb25maWd1
cmF0aW9ucykKLQotICBkZWYgdGVzdE9wdGlvbkIoc2VsZik6Ci0gICAgb3B0aW9ucywgYXJncyA9
IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygnZ3Rlc3QnLCBhcmd2PVsnc2NyaXB0LnB5JywgJy1i
J10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBbJ3NjcmlwdC5weSddKQotICAgIHNlbGYu
YXNzZXJ0XyhvcHRpb25zLmNvbmZpZ3VyYXRpb25zIGlzIE5vbmUpCi0gICAgc2VsZi5hc3NlcnRU
cnVlKG9wdGlvbnMuYnVpbHRfY29uZmlndXJhdGlvbnMpCi0KLSAgZGVmIHRlc3RPcHRpb25DQW5k
T3B0aW9uQihzZWxmKToKLSAgICBvcHRpb25zLCBhcmdzID0gcnVuX3Rlc3RzX3V0aWwuUGFyc2VB
cmdzKAotICAgICAgICAnZ3Rlc3QnLCBhcmd2PVsnc2NyaXB0LnB5JywgJy1jJywgJ2RiZycsICct
YiddKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgWydzY3JpcHQucHknXSkKLSAgICBzZWxm
LmFzc2VydEVxdWFsKG9wdGlvbnMuY29uZmlndXJhdGlvbnMsICdkYmcnKQotICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRpb25zKQotCi0gIGRlZiB0ZXN0T3B0aW9u
SChzZWxmKToKLSAgICBoZWxwX2NhbGxlZCA9IFtGYWxzZV0KLQotICAgICMgU3VwcHJlc3NlcyBs
aW50IHdhcm5pbmcgb24gdW51c2VkIGFyZ3VtZW50cy4gIFRoZXNlIGFyZ3VtZW50cyBhcmUKLSAg
ICAjIHJlcXVpcmVkIGJ5IG9wdHBhcnNlLCBldmVuIHRob3VnaCB0aGV5IGFyZSB1bnVzZWQuCi0g
ICAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPVcwNjEzCi0gICAgZGVmIFZlcmlmeUhlbHAob3B0aW9u
LCBvcHQsIHZhbHVlLCBwYXJzZXIpOgotICAgICAgaGVscF9jYWxsZWRbMF0gPSBUcnVlCi0KLSAg
ICAjIFZlcmlmaWVzIHRoYXQgLWggY2F1c2VzIHRoZSBoZWxwIGNhbGxiYWNrIHRvIGJlIGNhbGxl
ZC4KLSAgICBoZWxwX2NhbGxlZFswXSA9IEZhbHNlCi0gICAgXywgYXJncyA9IHJ1bl90ZXN0c191
dGlsLlBhcnNlQXJncygKLSAgICAgICAgJ2d0ZXN0JywgYXJndj1bJ3NjcmlwdC5weScsICctaCdd
LCBoZWxwX2NhbGxiYWNrPVZlcmlmeUhlbHApCi0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBb
J3NjcmlwdC5weSddKQotICAgIHNlbGYuYXNzZXJ0VHJ1ZShoZWxwX2NhbGxlZFswXSkKLQotICAg
ICMgVmVyaWZpZXMgdGhhdCAtLWhlbHAgY2F1c2VzIHRoZSBoZWxwIGNhbGxiYWNrIHRvIGJlIGNh
bGxlZC4KLSAgICBoZWxwX2NhbGxlZFswXSA9IEZhbHNlCi0gICAgXywgYXJncyA9IHJ1bl90ZXN0
c191dGlsLlBhcnNlQXJncygKLSAgICAgICAgJ2d0ZXN0JywgYXJndj1bJ3NjcmlwdC5weScsICct
LWhlbHAnXSwgaGVscF9jYWxsYmFjaz1WZXJpZnlIZWxwKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YXJncywgWydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydFRydWUoaGVscF9jYWxsZWRbMF0p
Ci0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgdW5pdHRlc3QubWFpbigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvRGVidWdQcm9qZWN0
LnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0RlYnVnUHJv
amVjdC54Y2NvbmZpZwppbmRleCA1NzZmM2Q5YmYwZTI0ZjZlZTk4OTE4MTNlNGUxOGU0ZjFjMWJl
NDYyLi42NDU3MDFlMjJkNjA1ZWM0MjIzOWYzMGMzMzBjNDU0ZGI3MDlhNWIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvRGVidWdQcm9qZWN0LnhjY29u
ZmlnCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9EZWJ1Z1Byb2pl
Y3QueGNjb25maWcKQEAgLTUsNyArNSw3IEBACiAvLyAgZXhhbXBsZXMuIEl0IGlzIHNldCBpbiB0
aGUgIkJhc2VkIE9uOiIgZHJvcGRvd24gaW4gdGhlICJQcm9qZWN0IiBpbmZvCiAvLyAgZGlhbG9n
LgogLy8gIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxl
cyBpbjoKLS8vICBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1h
Yy8KKy8vICBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZS10b29sYm94LWZvci1tYWMK
IC8vIAogCiAjaW5jbHVkZSAiR2VuZXJhbC54Y2NvbmZpZyIKQEAgLTI4LDEyICsyOCwzIEBAIE9U
SEVSX0NGTEFHUyA9ICQoT1RIRVJfQ0ZMQUdTKSAtRERFQlVHPTEKIC8vIFRoZXNlIGFyZSB0dXJu
ZWQgb2ZmIHRvIGF2b2lkIFNUTCBpbmNvbXBhdGliaWxpdGllcyB3aXRoIGNsaWVudCBjb2RlCiAv
LyAvLyBUdXJucyBvbiBzcGVjaWFsIEMrKyBTVEwgY2hlY2tzIHRvICJlbmNvdXJhZ2UiIGdvb2Qg
U1RMIHVzZQogLy8gR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoR0NDX1BSRVBST0NF
U1NPUl9ERUZJTklUSU9OUykgX0dMSUJDWFhfREVCVUdfUEVEQU5USUMgX0dMSUJDWFhfREVCVUcg
X0dMSUJDUFBfQ09OQ0VQVF9DSEVDS1MKLQotLy8gVXNlZCBieSBIRUFERVJfU0VBUkNIX1BBVEhT
IGluIEdlbmVyYWwueGNjb25maWcKLVdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUiA9ICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9XZWJDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyczsKLQotT05M
WV9BQ1RJVkVfQVJDSCA9IFlFUwotCi1TREtST09UID0gJChTREtST09UXyQoVVNFX0lOVEVSTkFM
X1NESykpOwotU0RLUk9PVF8gPSBtYWNvc3g7Ci1TREtST09UX1lFUyA9IG1hY29zeC5pbnRlcm5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9GcmFt
ZXdvcmtUYXJnZXQueGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25m
aWcvRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnCmluZGV4IGY0ZGE5ZDIzOTkxNjM1YWJkY2RhODJi
NmEwNmVhYzNmYzg1ODkwYWQuLjc3MDgxZmJjYjA1YTA2NTk2YWM3NDE5ZGVlNDhhZjY0MzJlY2Yz
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9GcmFt
ZXdvcmtUYXJnZXQueGNjb25maWcKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUv
Q29uZmlnL0ZyYW1ld29ya1RhcmdldC54Y2NvbmZpZwpAQCAtNCw3ICs0LDcgQEAKIC8vICBUaGVz
ZSBhcmUgRnJhbWV3b3JrIHRhcmdldCBzZXR0aW5ncyBmb3IgdGhlIGd0ZXN0IGZyYW1ld29yayBh
bmQgZXhhbXBsZXMuIEl0CiAvLyAgaXMgc2V0IGluIHRoZSAiQmFzZWQgT246IiBkcm9wZG93biBp
biB0aGUgIlRhcmdldCIgaW5mbyBkaWFsb2cuCiAvLyAgVGhpcyBmaWxlIGlzIGJhc2VkIG9uIHRo
ZSBYY29kZSBDb25maWd1cmF0aW9uIGZpbGVzIGluOgotLy8gIGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9nb29nbGUtdG9vbGJveC1mb3ItbWFjLworLy8gIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29n
bGUvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYwogLy8gCiAKIC8vIER5bmFtaWMgbGlicyBuZWVkIHRv
IGJlIHBvc2l0aW9uIGluZGVwZW5kZW50CkBAIC0xNSw1ICsxNSwzIEBAIFNUUklQX1NUWUxFID0g
bm9uLWdsb2JhbAogCiAvLyBMZXQgdGhlIHVzZXIgaW5zdGFsbCBieSBzcGVjaWZ5aW5nIHRoZSAk
RFNUUk9PVCB3aXRoIHhjb2RlYnVpbGQKIFNLSVBfSU5TVEFMTCA9IE5PCi0KLUlOU1RBTExfUEFU
SCA9ICQoU1lTVEVNX0xJQlJBUllfRElSKS9Qcml2YXRlRnJhbWV3b3JrczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9HZW5lcmFsLnhjY29uZmlnIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0dlbmVyYWwueGNjb25maWcKaW5k
ZXggM2JkMmE1ODZhNTcwNWZjZjY2ZWMyZDk1OTJhZmFjM2Q4ZDZkN2RlMC4uMWFiYTQ4NmYwNTli
NDcyZGJjNzMzMTY2MTRiNDk2ZmU0YTYwMWM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0dlbmVyYWwueGNjb25maWcKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0dlbmVyYWwueGNjb25maWcKQEAgLTQsMjEgKzQsMTEg
QEAKIC8vICBUaGVzZSBhcmUgR2VuZXJhbCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciB0aGUg
Z3Rlc3QgZnJhbWV3b3JrIGFuZAogLy8gIGV4YW1wbGVzLgogLy8gIFRoaXMgZmlsZSBpcyBiYXNl
ZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBpbjoKLS8vICBodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8KLS8vCi0KLSNpbmNsdWRlPyAiLi4v
Li4vLi4vLi4vLi4vLi4vSW50ZXJuYWwvQ29uZmlndXJhdGlvbnMvSGF2ZUludGVybmFsU0RLLnhj
Y29uZmlnIgotCi1VU0VfSU5URVJOQUxfU0RLID0gJChVU0VfSU5URVJOQUxfU0RLXyQoQ09ORklH
VVJBVElPTikpOwotVVNFX0lOVEVSTkFMX1NES19Qcm9kdWN0aW9uID0gWUVTOwotVVNFX0lOVEVS
TkFMX1NES19EZWJ1ZyA9ICQoSEFWRV9JTlRFUk5BTF9TREspOwotVVNFX0lOVEVSTkFMX1NES19S
ZWxlYXNlID0gJChIQVZFX0lOVEVSTkFMX1NESyk7Ci0KLUdDQ19WRVJTSU9OID0gY29tLmFwcGxl
LmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKLQotQVJDSFMgPSAkKEFSQ0hTX1NUQU5EQVJEXzMy
XzY0X0JJVCk7CisvLyAgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGUtdG9vbGJveC1m
b3ItbWFjCisvLyAKIAotSEVBREVSX1NFQVJDSF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElS
KS91c3IvbG9jYWwvaW5jbHVkZSAiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0Zvcndh
cmRpbmdIZWFkZXJzIiAuLi8gLi4vaW5jbHVkZS8KKy8vIEJ1aWxkIGZvciBQUEMgYW5kIEludGVs
LCAzMi0gYW5kIDY0LWJpdAorQVJDSFMgPSBpMzg2IHg4Nl82NCBwcGMgcHBjNjQKIAogLy8gWmVy
b2xpbmsgcHJldmVudHMgbGluayB3YXJuaW5ncyBzbyB0dXJuIGl0IG9mZgogWkVST19MSU5LID0g
Tk8KQEAgLTI3LDIxICsxNyw3IEBAIFpFUk9fTElOSyA9IE5PCiBQUkVCSU5ESU5HID0gTk8KIAog
Ly8gU3RyaWN0ZXN0IHdhcm5pbmcgcG9saWN5Ci1XQVJOSU5HX0NGTEFHUyA9IC1XYWxsIC1XZXJy
b3IgLVdlbmRpZi1sYWJlbHMgLVduZXdsaW5lLWVvZiAtV25vLXNpZ24tY29tcGFyZSAtV3NoYWRv
dzsKLUNMQU5HX1dBUk5fQk9PTF9DT05WRVJTSU9OID0gWUVTOwotQ0xBTkdfV0FSTl9DT05TVEFO
VF9DT05WRVJTSU9OID0gWUVTOwotQ0xBTkdfV0FSTl9FTVBUWV9CT0RZID0gWUVTOwotQ0xBTkdf
V0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZRVM7Ci1DTEFOR19XQVJOX0lOVF9DT05WRVJTSU9OID0g
WUVTOwotQ0xBTkdfV0FSTl9TVFJJQ1RfUFJPVE9UWVBFUyA9IFlFUzsKLUNMQU5HX1dBUk5fX0RV
UExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZRVM7Ci1FTkFCTEVfU1RSSUNUX09CSkNfTVNHU0VORCA9
IFlFUzsKLUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVTOwotR0NDX1dBUk5f
QUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7Ci1HQ0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0g
WUVTOwotR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFUzsKLUdDQ19XQVJOX1VOVVNF
RF9GVU5DVElPTiA9IFlFUzsKLUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKK1dBUk5J
TkdfQ0ZMQUdTID0gLVdhbGwgLVdlcnJvciAtV2VuZGlmLWxhYmVscyAtV25ld2xpbmUtZW9mIC1X
bm8tc2lnbi1jb21wYXJlIC1Xc2hhZG93CiAKIC8vIFdvcmsgYXJvdW5kIFhjb2RlIGJ1Z3MgYnkg
dXNpbmcgZXh0ZXJuYWwgc3RyaXAuIFNlZToKIC8vIGh0dHA6Ly9saXN0cy5hcHBsZS5jb20vYXJj
aGl2ZXMvWGNvZGUtdXNlcnMvMjAwNi9GZWIvbXNnMDAwNTAuaHRtbApAQCAtNTAsMjcgKzI2LDE2
IEBAIFNFUEFSQVRFX1NUUklQID0gWUVTCiAvLyBGb3JjZSBDOTkgZGlhbGVjdAogR0NDX0NfTEFO
R1VBR0VfU1RBTkRBUkQgPSBjOTkKIAotLy8gRm9yY2UgQysrMTQKLUNMQU5HX0NYWF9MQU5HVUFH
RV9TVEFOREFSRCA9IGdudSsrMTQ7Ci0KIC8vIG5vdCBzdXJlIHdoeSBhcHBsZSBkZWZhdWx0cyB0
aGlzIG9uLCBidXQgaXQncyBwcmV0dHkgcmlza3kKIEFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9
IE5PCiAKIC8vIFR1cm4gb24gcG9zaXRpb24gZGVwZW5kZW50IGNvZGUgZm9yIG1vc3QgY2FzZXMg
KG92ZXJyaWRkZW4gd2hlcmUgYXBwcm9wcmlhdGUpCiBHQ0NfRFlOQU1JQ19OT19QSUMgPSBZRVMK
IAotR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoR0NDX1BSRVBST0NFU1NPUl9ERUZJ
TklUSU9OUykgR1RFU1RfSEFTX1RSMV9UVVBMRT0wIEdURVNUX0hBU19SVFRJPTA7Ci0KLUNMQU5H
X0NYWF9MSUJSQVJZID0gbGliYysrOwotCi1UQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUiA9
ICQoTUFDX09TX1hfVkVSU0lPTl9NQUpPUik7Ci0KLUNPTUJJTkVfSElEUElfSU1BR0VTID0gWUVT
OworLy8gRGVmYXVsdCBTREsgYW5kIG1pbmltdW0gT1MgdmVyc2lvbiBpcyAxMC40CitTREtST09U
ID0gJChERVZFTE9QRVJfU0RLX0RJUikvTWFjT1NYMTAuNHUuc2RrCitNQUNPU1hfREVQTE9ZTUVO
VF9UQVJHRVQgPSAxMC40CitHQ0NfVkVSU0lPTiA9IDQuMAogCiAvLyBWRVJTSU9OSU5HIEJVSUxE
IFNFVFRJTkdTICh1c2VkIGluIEluZm8ucGxpc3QpCiBHVEVTVF9WRVJTSU9OSU5GT19BQk9VVCA9
ICDCqSAyMDA4IEdvb2dsZSBJbmMuCi1PVEhFUl9DRkxBR1MgPSAkKEFTQU5fT1RIRVJfQ0ZMQUdT
KTsKLU9USEVSX0NQTFVTUExVU0ZMQUdTID0gJChBU0FOX09USEVSX0NQTFVTUExVU0ZMQUdTKTsK
LU9USEVSX0xERkxBR1MgPSAkKEFTQU5fT1RIRVJfTERGTEFHUyk7Ci0KLVNVUFBPUlRFRF9QTEFU
Rk9STVMgPSBpcGhvbmVvcyBpcGhvbmVzaW11bGF0b3IgbWFjb3N4IHR2b3MgdHZzaW11bGF0b3Ig
d2F0Y2hvcyB3YXRjaHNpbXVsYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3hjb2RlL0NvbmZpZy9Qcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZpZyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9Qcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZpZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE2YzY4NzhlOTc2MTAxODhkYWE4NjI5ZDM1MjFh
Yjk0Nzc2YmFjNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvUHJvZHVjdGlvblByb2plY3Qu
eGNjb25maWcKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vLwotLy8gIFByb2R1Y3Rp
b25Qcm9qZWN0LnhjY29uZmlnCi0vLwotLy8gIFRoZXNlIGFyZSBQcm9kdWN0aW9uIENvbmZpZ3Vy
YXRpb24gcHJvamVjdCBzZXR0aW5ncyBmb3IgdGhlIGd0ZXN0IGZyYW1ld29yawotLy8gIGFuZCBl
eGFtcGxlcy4gSXQgaXMgc2V0IGluIHRoZSAiQmFzZWQgT246IiBkcm9wZG93biBpbiB0aGUgIlBy
b2plY3QiIGluZm8KLS8vICBkaWFsb2cuCi0vLyAgVGhpcyBmaWxlIGlzIGJhc2VkIG9uIHRoZSBY
Y29kZSBDb25maWd1cmF0aW9uIGZpbGVzIGluOgotLy8gIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20v
cC9nb29nbGUtdG9vbGJveC1mb3ItbWFjLwotLy8gCi0KLSNpbmNsdWRlICJSZWxlYXNlUHJvamVj
dC54Y2NvbmZpZyIKLQotLy8gVXNlZCBieSBIRUFERVJfU0VBUkNIX1BBVEhTIGluIEdlbmVyYWwu
eGNjb25maWcKLVdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUiA9ICQoV0VCQ09SRV9QUklWQVRF
X0hFQURFUlNfRElSXyQoV0tfVVNFX09WRVJSSURFX0ZSQU1FV09SS1NfRElSKSk7Ci1XRUJDT1JF
X1BSSVZBVEVfSEVBREVSU19ESVJfTk8gPSAkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jr
cy9XZWJLaXQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9XZWJDb3JlLmZyYW1ld29y
ay9Qcml2YXRlSGVhZGVyczsKLVdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUl9ZRVMgPSAkKFdL
X09WRVJSSURFX0ZSQU1FV09SS1NfRElSKS9XZWJDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVy
czsKLQotRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICQoV0tfUVVPVEVEX09WRVJSSURFX0ZSQU1F
V09SS1NfRElSKSAkKGluaGVyaXRlZCk7Ci0KLU9OTFlfQUNUSVZFX0FSQ0ggPSBOTwotCi1TREtS
T09UID0gbWFjb3N4LmludGVybmFsOwotCi1XS19FTVBUWV8gPSBZRVM7Ci1XS19OT1RfID0gWUVT
OwotV0tfTk9UX1lFUyA9IE5POwotCi1XS19VU0VfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVJbc2Rr
PW1hY29zeCpdID0gJChXS19OT1RfJChXS19FTVBUWV8kKFdLX09WRVJSSURFX0ZSQU1FV09SS1Nf
RElSKSkpOwotCi1XS19PVkVSUklERV9GUkFNRVdPUktTX0RJUiA9ICQoV0tfT1ZFUlJJREVfRlJB
TUVXT1JLU19ESVJfVVNFX1NUQUdJTkdfSU5TVEFMTF9QQVRIXyQoVVNFX1NUQUdJTkdfSU5TVEFM
TF9QQVRIKSk7Ci1XS19PVkVSUklERV9GUkFNRVdPUktTX0RJUl9VU0VfU1RBR0lOR19JTlNUQUxM
X1BBVEhfWUVTID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1N0YWdlZEZyYW1ld29ya3MvU2FmYXJp
OwotCi1XS19RVU9URURfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVIgPSAkKFdLX1FVT1RFRF9PVkVS
UklERV9GUkFNRVdPUktTX0RJUl8kKFdLX1VTRV9PVkVSUklERV9GUkFNRVdPUktTX0RJUikpOwot
V0tfUVVPVEVEX09WRVJSSURFX0ZSQU1FV09SS1NfRElSX1lFUyA9ICIkKFdLX09WRVJSSURFX0ZS
QU1FV09SS1NfRElSKSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29k
ZS9Db25maWcvUmVsZWFzZVByb2plY3QueGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC94Y29kZS9Db25maWcvUmVsZWFzZVByb2plY3QueGNjb25maWcKaW5kZXggMTNlOTE3ZmJmYTJk
ZGYyZDNlZTUzMTU5OGRjMGZiMGYyYjViZjg3Ni4uZGY5YTM4Zjg5Yjk3NzJkNjU3Nzg0ODIxYjJi
MTYzZGVkYWQ0NDQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUv
Q29uZmlnL1JlbGVhc2VQcm9qZWN0LnhjY29uZmlnCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3hjb2RlL0NvbmZpZy9SZWxlYXNlUHJvamVjdC54Y2NvbmZpZwpAQCAtNSw3ICs1LDcgQEAK
IC8vICBhbmQgZXhhbXBsZXMuIEl0IGlzIHNldCBpbiB0aGUgIkJhc2VkIE9uOiIgZHJvcGRvd24g
aW4gdGhlICJQcm9qZWN0IiBpbmZvCiAvLyAgZGlhbG9nLgogLy8gIFRoaXMgZmlsZSBpcyBiYXNl
ZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBpbjoKLS8vICBodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8KKy8vICBodHRwczovL2dpdGh1Yi5j
b20vZ29vZ2xlL2dvb2dsZS10b29sYm94LWZvci1tYWMKIC8vIAogCiAjaW5jbHVkZSAiR2VuZXJh
bC54Y2NvbmZpZyIKQEAgLTMwLDEyICszMCwzIEBAIE9USEVSX0NGTEFHUyA9ICQoT1RIRVJfQ0ZM
QUdTKSAtRE5ERUJVRz0xIC1Xbm8tdW51c2VkLXZhcmlhYmxlCiAKIC8vIFdoZW4gd2Ugc3RyaXAg
d2Ugd2FudCB0byBzdHJpcCBhbGwgc3ltYm9scyBpbiByZWxlYXNlLCBidXQgc2F2ZSBleHRlcm5h
bHMuCiBTVFJJUF9TVFlMRSA9IGFsbAotCi0vLyBVc2VkIGJ5IEhFQURFUl9TRUFSQ0hfUEFUSFMg
aW4gR2VuZXJhbC54Y2NvbmZpZwotV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSID0gJChCVUlM
VF9QUk9EVUNUU19ESVIpL1dlYkNvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwotCi1PTkxZ
X0FDVElWRV9BUkNIID0gWUVTCi0KLVNES1JPT1QgPSAkKFNES1JPT1RfJChVU0VfSU5URVJOQUxf
U0RLKSk7Ci1TREtST09UXyA9IG1hY29zeDsKLVNES1JPT1RfWUVTID0gbWFjb3N4LmludGVybmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1N0YXRp
Y0xpYnJhcnlUYXJnZXQueGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9D
b25maWcvU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZwppbmRleCBkZDMzMjU1YTk0NDc3MDIw
Y2YxMWY3MDU1ZTQ0YWUyNTI4ZWI5Zjk3Li5kMjQyNGZlODBkMWNkYWRiNWEwMjYwM2M4OWQ4MjQ1
NTg1ODVjMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25m
aWcvU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC94Y29kZS9Db25maWcvU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZwpAQCAtNCw3ICs0
LDcgQEAKIC8vICBUaGVzZSBhcmUgc3RhdGljIGxpYnJhcnkgdGFyZ2V0IHNldHRpbmdzIGZvciBs
aWJndGVzdC5hLiBJdAogLy8gIGlzIHNldCBpbiB0aGUgIkJhc2VkIE9uOiIgZHJvcGRvd24gaW4g
dGhlICJUYXJnZXQiIGluZm8gZGlhbG9nLgogLy8gIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiB0aGUg
WGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBpbjoKLS8vICBodHRwOi8vY29kZS5nb29nbGUuY29t
L3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8KKy8vICBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xl
L2dvb2dsZS10b29sYm94LWZvci1tYWMKIC8vIAogCiAvLyBTdGF0aWMgbGlicyBjYW4gYmUgaW5j
bHVkZWQgaW4gYnVuZGxlcyBzbyBtYWtlIHRoZW0gcG9zaXRpb24gaW5kZXBlbmRlbnQKQEAgLTE2
LDUgKzE2LDMgQEAgU1RSSVBfU1RZTEUgPSBkZWJ1Z2dpbmcKIAogLy8gTGV0IHRoZSB1c2VyIGlu
c3RhbGwgYnkgc3BlY2lmeWluZyB0aGUgJERTVFJPT1Qgd2l0aCB4Y29kZWJ1aWxkCiBTS0lQX0lO
U1RBTEwgPSBOTwotCi1PVEhFUl9MREZMQUdTID0gOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QveGNvZGUvTWFrZWZpbGUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29k
ZS9NYWtlZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM4ZTg0OTNkZjI5Njhh
YmU3NzFjNmQ2NzhlOGQyOWQzOWM5YjNhNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9NYWtlZmlsZQor
KysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotU0NSSVBUU19QQVRIID89IC4uLy4uLy4uLy4u
L1Rvb2xzL1NjcmlwdHMKLWluY2x1ZGUgLi4vLi4vLi4vLi4vTWFrZWZpbGUuc2hhcmVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1Nh
bXBsZS93aWRnZXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL1NhbXBs
ZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjCmluZGV4IDYxYzBkMmZmZDc2ZDE4MDZh
YTM1OTc5ZDhhZTM2NDEwNjQ4YWFhMTUuLjg3MjU5OTQyMTg1MTQwOGU3NmFhYjZjNTYwYjgxODky
NDU5YmJkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL1NhbXBs
ZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjCkBAIC0z
Niw3ICszNiw3IEBACiAvLyBUaGlzIGlzIGEgc2ltcGxlIHRlc3QgZmlsZSBmb3IgdGhlIFdpZGdl
dCBjbGFzcyBpbiB0aGUgV2lkZ2V0LmZyYW1ld29yawogCiAjaW5jbHVkZSA8c3RyaW5nPgotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2luY2x1
ZGUgPFdpZGdldC93aWRnZXQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QveGNvZGUvU2NyaXB0cy92ZXJzaW9uZ2VuZXJhdGUucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC94Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weQpvbGQgbW9kZSAxMDA2NDQKbmV3
IG1vZGUgMTAwNzU1CmluZGV4IDgxZGU4Yzk2YWM1ZDg2Y2E2Mzk0NTZjOTBjNDMzMDY3YmRmZDQw
ZTUuLmJkZDc1NDFhZDc5N2ZhNjczZjY1ZGEzODE2OGUxNTgwZmQ3ZGRlM2EKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2NyaXB0cy92ZXJzaW9uZ2VuZXJhdGUucHkKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2NyaXB0cy92ZXJzaW9uZ2VuZXJhdGUucHkK
QEAgLTI5LDcgKzI5LDcgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSIiIkEg
c2NyaXB0IHRvIHByZXBhcmUgdmVyc2lvbiBpbmZvcm10aW9uIGZvciB1c2UgdGhlIGd0ZXN0IElu
Zm8ucGxpc3QgZmlsZS4KKyIiIkEgc2NyaXB0IHRvIHByZXBhcmUgdmVyc2lvbiBpbmZvcm1hdGlv
biBmb3IgdXNlIHRoZSBndGVzdCBJbmZvLnBsaXN0IGZpbGUuCiAKICAgVGhpcyBzY3JpcHQgZXh0
cmFjdHMgdGhlIHZlcnNpb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgY29uZmlndXJlLmFjIGZpbGUg
YW5kCiAgIHVzZXMgaXQgdG8gZ2VuZXJhdGUgYSBoZWFkZXIgZmlsZSBjb250YWluaW5nIHRoZSBz
YW1lIGluZm9ybWF0aW9uLiBUaGUKQEAgLTQyLDcgKzQyLDcgQEAKICAgICAxLiBUaGUgQUNfSU5J
VCBtYWNybyB3aWxsIGJlIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGZpcnN0IDEwMjQgY2hhcmFjdGVy
cwogICAgICAgIG9mIGNvbmZpZ3VyZS5hYwogICAgIDIuIFRoZSB2ZXJzaW9uIHN0cmluZyB3aWxs
IGJlIDMgaW50ZWdlcnMgc2VwYXJhdGVkIGJ5IHBlcmlvZHMgYW5kIHdpbGwgYmUKLSAgICAgICBz
dXJyb3VuZGVkIGJ5IHNxdXJlIGJyYWNrZXRzLCAiWyIgYW5kICJdIiAoZS5nLiBbMS4wLjFdKS4g
VGhlIGZpcnN0CisgICAgICAgc3Vycm91bmRlZCBieSBzcXVhcmUgYnJhY2tldHMsICJbIiBhbmQg
Il0iIChlLmcuIFsxLjAuMV0pLiBUaGUgZmlyc3QKICAgICAgICBzZWdtZW50IHJlcHJlc2VudHMg
dGhlIG1ham9yIHZlcnNpb24sIHRoZSBzZWNvbmQgcmVwcmVzZW50cyB0aGUgbWlub3IKICAgICAg
ICB2ZXJzaW9uIGFuZCB0aGUgdGhpcmQgcmVwcmVzZW50cyB0aGUgZml4IHZlcnNpb24uCiAgICAg
My4gTm8gIikiIGNoYXJhY3RlciBleGlzdHMgYmV0d2VlbiB0aGUgb3BlbmluZyAiKCIgYW5kIGNs
b3NpbmcgIikiIG9mCkBAIC02OCw3ICs2OCw3IEBAIGNvbmZpZ19maWxlLmNsb3NlKCkKIAogIyBF
eHRyYWN0IHRoZSB2ZXJzaW9uIHN0cmluZyBmcm9tIHRoZSBBQ19JTklUIG1hY3JvCiAjICAgVGhl
IGZvbGxvd2luZyBpbml0X2V4cHJlc3Npb24gbWVhbnM6Ci0jICAgICBFeHRyYWN0IHRocmVlIGlu
dGVnZXJzIHNlcGFyYXRlZCBieSBwZXJpb2RzIGFuZCBzdXJyb3VuZGVkIGJ5IHNxdXJlCisjICAg
ICBFeHRyYWN0IHRocmVlIGludGVnZXJzIHNlcGFyYXRlZCBieSBwZXJpb2RzIGFuZCBzdXJyb3Vu
ZGVkIGJ5IHNxdWFyZQogIyAgICAgYnJhY2tldHMoZS5nLiAiWzEuMC4xXSIpIGJldHdlZW4gIkFD
X0lOSVQoIiBhbmQgIikiLiBEbyBub3QgYmUgZ3JlZWR5CiAjICAgICAoKj8gaXMgdGhlIG5vbi1n
cmVlZHkgZmxhZykgc2luY2UgdGhhdCB3b3VsZCBwdWxsIGluIGV2ZXJ5dGhpbmcgYmV0d2Vlbgog
IyAgICAgdGhlIGZpcnN0ICIoIiBhbmQgdGhlIGxhc3QgIikiIGluIHRoZSBmaWxlLgpAQCAtODgs
NyArODgsNyBAQCBmaWxlX2RhdGEgPSAiIiIvLwogLy8gaXMgZXhlY3V0ZWQgaW4gYSAiUnVuIFNj
cmlwdCIgYnVpbGQgcGhhc2Ugd2hlbiBjcmVhdGluZyBndGVzdC5mcmFtZXdvcmsuIFRoaXMKIC8v
IGhlYWRlciBmaWxlIGlzIG5vdCB1c2VkIGR1cmluZyBjb21waWxhdGlvbiBvZiBDLXNvdXJjZS4g
UmF0aGVyLCBpdCBzaW1wbHkKIC8vIGRlZmluZXMgc29tZSB2ZXJzaW9uIHN0cmluZ3MgZm9yIHN1
YnN0aXR1dGlvbiBpbiB0aGUgSW5mby5wbGlzdC4gQmVjYXVzZSBvZgotLy8gdGhpcywgd2UgYXJl
IG5vdCBub3QgcmVzdHJpY3RlZCB0byBDLXN5bnRheCBub3IgYXJlIHdlIHVzaW5nIGluY2x1ZGUg
Z3VhcmRzLgorLy8gdGhpcywgd2UgYXJlIG5vdCByZXN0cmljdGVkIHRvIEMtc3ludGF4IG5vciBh
cmUgd2UgdXNpbmcgaW5jbHVkZSBndWFyZHMuCiAvLwogCiAjZGVmaW5lIEdURVNUX1ZFUlNJT05J
TkZPX1NIT1JUICVzLiVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29k
ZS9ndGVzdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QveGNvZGUvZ3Rlc3QueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZmYzZmJhZmVm
YmFhYzNiODM4MjQ4YjE3ZDU2ODc2YjNkNWY2YmU4Li5mMDVkOTZmZmE4OGU2NjA2OTg4ZjBlZjhh
NGM2ZDdkODYzOWM3YmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29k
ZS9ndGVzdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3hjb2RlL2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3LDcgKzM3
LDYgQEAKIC8qIEVuZCBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQ
QlhCdWlsZEZpbGUgc2VjdGlvbiAqLwotCQkxQTBBNEM0NTE0QjdBM0I1MDA4OTUxMzUgLyogSmF2
YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUEwQTRDNDQxNEI3QTNCNTAwODk1MTM1IC8qIEphdmFTY3JpcHRDb3Jl
LmZyYW1ld29yayAqLzsgfTsKIAkJMjI0QTEyQTMwRTlFQURDQzAwQkQxN0ZEIC8qIGd0ZXN0LXRl
c3QtcGFydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjI0QTEyQTIwRTlFQURDQzAwQkQxN0ZEIC8qIGd0ZXN0LXRlc3QtcGFydC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJM0JGNkYyQTAwRTc5QjVBRDAw
MEYyRUVFIC8qIGd0ZXN0LXR5cGUtdXRpbC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQkY2RjI5RjBFNzlCNUFEMDAwRjJFRUUg
LyogZ3Rlc3QtdHlwZS11dGlsLmggKi87IH07CiAJCTNCRjZGMkE1MEU3OUI2MTYwMDBGMkVFRSAv
KiBndGVzdC10eXBlZC10ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzQkY2RjJBNDBFNzlCNjE2MDAwRjJFRUUgLyogZ3Rlc3QtdHlwZWQtdGVzdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKQEAgLTQ3LDcg
KzQ2LDcgQEAKIAkJNDA0ODg0M0IwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNERTBFMkY3OTlCMDBD
Rjc2NTggLyogZ3Rlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7
IH07IH07CiAJCTQwNDg4NDNDMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcmVkX2ltcGwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0RGMEUy
Rjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcmVkX2ltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTQwNDg4NDNEMEUyRjc5OUIwMENGNzY1OCAvKiBn
dGVzdF9wcm9kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MDQ4ODNFMDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3RfcHJvZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJNDA0ODg0NTAwRTJGNzk5QjAwQ0Y3
NjU4IC8qIFJFQURNRSBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRSAqLzsgfTsKKwkJNDA0ODg0
NTAwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURN
RS5tZCAqLzsgfTsKIAkJNDA0ODg0QTAwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRoLXRl
c3QtaW50ZXJuYWwuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRTIwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRo
LXRlc3QtaW50ZXJuYWwuaCAqLzsgfTsKIAkJNDA0ODg0QTEwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0
ZXN0LWZpbGVwYXRoLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0UzMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1maWxl
cGF0aC5oICovOyB9OwogCQk0MDQ4ODRBMjBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3QtaW50ZXJu
YWwuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDA0ODgzRTQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWludGVybmFsLmggKi87
IH07CkBAIC01NSw3ICs1NCw3IEBACiAJCTQwNDg4NEE0MEUyRjdCRTYwMENGNzY1OCAvKiBndGVz
dC1zdHJpbmcuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDA0ODgzRTYwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXN0cmluZy5o
ICovOyB9OwogCQk0MDQ4ODRBQzBFMkY3Q0Q5MDBDRjc2NTggLyogQ0hBTkdFUyBpbiBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODg0QTkwRTJGN0NEOTAw
Q0Y3NjU4IC8qIENIQU5HRVMgKi87IH07CiAJCTQwNDg4NEFEMEUyRjdDRDkwMENGNzY1OCAvKiBD
T05UUklCVVRPUlMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQwNDg4NEFBMEUyRjdDRDkwMENGNzY1OCAvKiBDT05UUklCVVRPUlMgKi87IH07Ci0JCTQw
NDg4NEFFMEUyRjdDRDkwMENGNzY1OCAvKiBDT1BZSU5HIGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogQ09Q
WUlORyAqLzsgfTsKKwkJNDA0ODg0QUUwRTJGN0NEOTAwQ0Y3NjU4IC8qIExJQ0VOU0UgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4NEFCMEUyRjdD
RDkwMENGNzY1OCAvKiBMSUNFTlNFICovOyB9OwogCQk0MDg5OUYzQTBGRkE3MEQ0MDAwQjI5QUUg
LyogZ3Rlc3QtYWxsLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjI0QTEyQTEwRTlFQURBNzAwQkQxN0ZEIC8qIGd0ZXN0LWFsbC5jYyAqLzsgfTsKIAkJ
NDA4OTlGNTAwRkZBNzI4MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggaW4gQ29weSBIZWFkZXJz
IEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwODk5RjREMEZG
QTcyNzEwMDBCMjlBRSAvKiBndGVzdC10dXBsZS5oICovOyB9OwogCQk0MDg5OUY1MzBGRkE3MkEw
MDAwQjI5QUUgLyogZ3Rlc3RfdW5pdHRlc3QuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzQjIzOEMxMjBFN0ZFMTNDMDA4NDZFMTEgLyogZ3Rlc3RfdW5p
dHRlc3QuY2MgKi87IH07CkBAIC03OSw2ICs3OCwxNCBAQAogCQk0NTM5QzkzODBFQzI4MEUyMDBB
NzBGNEMgLyogZ3Rlc3QtbGlua2VkX3B0ci5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTM5QzkzNTBFQzI4MEUyMDBBNzBGNEMg
LyogZ3Rlc3QtbGlua2VkX3B0ci5oICovOyB9OwogCQk0NTM5QzkzOTBFQzI4MEUyMDBBNzBGNEMg
LyogZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUzOUM5MzYwRUMyODBFMjAwQTcw
RjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmggKi87IH07CiAJCTQ1MzlDOTNBMEVD
MjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLmggaW4gQ29weSBIZWFkZXJzIEludGVy
bmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MzlDOTM3MEVDMjgwRTIw
MEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLmggKi87IH07CisJCTQ1NjdDODE4MTI2NEZGNzEw
MDc3NDBCRSAvKiBndGVzdC1wcmludGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDU2N0M4MTcxMjY0RkY3MTAwNzc0MEJFIC8qIGd0ZXN0LXByaW50
ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlG
NjdENEYzRTFDN0Y1RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdENEYzRDFDN0Y1RDhCMDAxN0M3
MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggKi87IH07CisJCUY2N0Q0RjNGMUM3RjVEQTcwMDE3Qzcy
OSAvKiBndGVzdC1wb3J0LWFyY2guaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGM0QxQzdGNUQ4QjAwMTdDNzI5IC8qIGd0
ZXN0LXBvcnQtYXJjaC5oICovOyB9OworCQlGNjdENEY0NDFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rl
c3QtcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjY3RDRGNDExQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCAqLzsgfTsKKwkJRjY3RDRG
NDUxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdENEY0MjFDN0Y1REQwMDAxN0M3MjkgLyog
Z3Rlc3QtcHJpbnRlcnMuaCAqLzsgfTsKKwkJRjY3RDRGNDYxQzdGNUREMDAwMTdDNzI5IC8qIGd0
ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdE
NEY0MzFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QuaCAqLzsgfTsKKwkJRjY3RDRGNDgxQzdGNUUx
NjAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgQ3VzdG9t
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2N0Q0RjQxMUM3RjVERDAwMDE3
QzcyOSAvKiBndGVzdC1wb3J0LmggKi87IH07CisJCUY2N0Q0RjQ5MUM3RjVFMjYwMDE3QzcyOSAv
KiBndGVzdC1wcmludGVycy5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20gKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGNDIxQzdGNUREMDAwMTdDNzI5IC8q
IGd0ZXN0LXByaW50ZXJzLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTE4OCw2ICsx
OTUsNyBAQAogCQkJCTQ1MzlDOTM4MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1saW5rZWRfcHRy
LmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLAogCQkJCTQ1MzlDOTM5MEVDMjgwRTIwMEE3
MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIGluIENvcHkgSGVhZGVycyBJbnRl
cm5hbCAqLywKIAkJCQk0NTM5QzkzQTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdXRp
bC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKKwkJCQlGNjdENEYzRjFDN0Y1REE3MDAx
N0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLAog
CQkJCTQwNDg4NEEzMEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1wb3J0LmggaW4gQ29weSBIZWFk
ZXJzIEludGVybmFsICovLAogCQkJCTQwNDg4NEE0MEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1z
dHJpbmcuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8sCiAJCQkJNDA4OTlGNTAwRkZBNzI4
MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLApA
QCAtMTk2LDEwICsyMDQsMjEgQEAKIAkJCW5hbWUgPSAiQ29weSBIZWFkZXJzIEludGVybmFsIjsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OworCQlGNjdE
NEY0NzFDN0Y1REY2MDAxN0M3MjkgLyogQ29weSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLyA9
IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IEhlYWRlcnMvaW50ZXJuYWwvY3VzdG9tOworCQkJ
ZHN0U3ViZm9sZGVyU3BlYyA9IDY7CisJCQlmaWxlcyA9ICgKKwkJCQlGNjdENEY0ODFDN0Y1RTE2
MDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20g
Ki8sCisJCQkJRjY3RDRGNDkxQzdGNUUyNjAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggaW4g
Q29weSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLywKKwkJCSk7CisJCQluYW1lID0gIkNvcHkg
SGVhZGVycyBJbnRlcm5hbCBDdXN0b20iOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCX07CiAvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCQkxQTBBNEM0NDE0
QjdBM0I1MDA4OTUxMzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IHBh
dGggPSBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTIyNEExMkExMEU5RUFEQTcwMEJEMTdGRCAvKiBndGVzdC1hbGwuY2MgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gImd0ZXN0LWFsbC5jYyI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIyNEExMkEyMEU5RUFEQ0MwMEJEMTdGRCAvKiBndGVz
dC10ZXN0LXBhcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC10
ZXN0LXBhcnQuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNCMjM4QzEyMEU3RkUx
M0MwMDg0NkUxMSAvKiBndGVzdF91bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IGd0ZXN0X3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjE4LDExICsyMzcsMTEgQEAKIAkJNDA0ODgzRTQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0
ZXN0LWludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1p
bnRlcm5hbC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDA0ODgzRTUwRTJGNzk5
QjAwQ0Y3NjU4IC8qIGd0ZXN0LXBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gImd0ZXN0LXBvcnQuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwNDg4M0U2
MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gImd0ZXN0LXN0cmluZy5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5h
bWUgPSBSRUFETUU7IHBhdGggPSAuLi9SRUFETUU7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsg
fTsKKwkJNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IG5hbWUgPSBSRUFETUUubWQ7IHBhdGggPSAuLi9SRUFETUUubWQ7IHNvdXJjZVRyZWUgPSBT
T1VSQ0VfUk9PVDsgfTsKIAkJNDA0ODg0MEQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X21haW4u
Y2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBndGVzdF9tYWluLmNjOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MDQ4ODRBOTBFMkY3Q0Q5MDBDRjc2NTggLyog
Q0hBTkdFUyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDSEFOR0VTOyBwYXRoID0gLi4vQ0hBTkdF
Uzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk0MDQ4ODRBQTBFMkY3Q0Q5MDBDRjc2
NTggLyogQ09OVFJJQlVUT1JTICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IENPTlRSSUJVVE9SUzsg
cGF0aCA9IC4uL0NPTlRSSUJVVE9SUzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQk0
MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogQ09QWUlORyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUg
PSBDT1BZSU5HOyBwYXRoID0gLi4vQ09QWUlORzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OworCQk0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogTElDRU5TRSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBMSUNFTlNFOyBwYXRoID0gLi4vTElDRU5TRTsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OwogCQk0MDg5OUY0MzBGRkE3MTg0MDAwQjI5QUUgLyogZ3Rlc3RfdW5pdHRlc3QtZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSAi
Z3Rlc3RfdW5pdHRlc3QtZnJhbWV3b3JrIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJNDA4OTlGNEQwRkZBNzI3MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC10dXBsZS5oIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDA4OTlGQjMwRkZBNzU2NzAwMEIyOUFFIC8qIFN0YXRpY0xpYnJh
cnlUYXJnZXQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU3RhdGlj
TGlicmFyeVRhcmdldC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIz
OSwxMiArMjU4LDE2IEBACiAJCTQwRDRDREYzMEUzMEUwNzQwMDI5NDgwMSAvKiBHZW5lcmFsLnhj
Y29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEdlbmVyYWwueGNjb25maWc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwRDRDREY0MEUzMEUwNzQwMDI5NDgwMSAv
KiBSZWxlYXNlUHJvamVjdC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBSZWxlYXNlUHJvamVjdC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDBENENGNTEwRTMwRjVFMjAwMjk0ODAxIC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBs
aXN0LnhtbDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTQ0QzQ4REZGMTRBNDA5OEYwMEEyRDlDNyAvKiBQcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZpZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBQcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZp
Zzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDUzOUM4RkYwRUMyN0Y2NDAwQTcwRjRD
IC8qIGd0ZXN0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNp
dEZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9
IGd0ZXN0LmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJ
NDUzOUM5MzMwRUMyODBBRTAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXRlc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXBhcmFtLXRlc3QuaCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ1MzlDOTM1MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1saW5r
ZWRfcHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1saW5rZWRf
cHRyLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NTM5QzkzNjBFQzI4MEUyMDBB
NzBGNEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gImd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NTM5QzkzNzBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFy
YW0tdXRpbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcGFyYW0t
dXRpbC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDU2N0M4MTcxMjY0RkY3MTAw
Nzc0MEJFIC8qIGd0ZXN0LXByaW50ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9ICJndGVzdC1wcmludGVycy5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjY3
RDRGM0QxQzdGNUQ4QjAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQtYXJjaC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcG9ydC1hcmNoLmgiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGNjdENEY0MTFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcG9ydC5oIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjY3RDRGNDIxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBy
aW50ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1wcmludGVy
cy5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjY3RDRGNDMxQzdGNUREMDAwMTdD
NzI5IC8qIGd0ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGd0ZXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAg
LTI4NCwxNCArMzA3LDYgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKLQkJNDQ0RDExNzIxNEEyNjI4RjAwOUZFQzNGIC8qIEZyYW1ld29y
a3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQkxQTBBNEM0NTE0QjdBM0I1
MDA4OTUxMzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCi0J
CQkpOwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07CiAv
KiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhH
cm91cCBzZWN0aW9uICovCkBAIC0zMTYsNyArMzMxLDYgQEAKIAkJCQkwOEZCNzdBQ0ZFODQxNzA3
QzAyQUFDMDcgLyogU291cmNlICovLAogCQkJCTQwRDRDRjRFMEUzMEY1RTIwMDI5NDgwMSAvKiBS
ZXNvdXJjZXMgKi8sCiAJCQkJNDAzRUUzN0IwRTM3NzgyMjAwNEJEMUUyIC8qIFNjcmlwdHMgKi8s
Ci0JCQkJMUEwQTRDNDYxNEI3QTNCQzAwODk1MTM1IC8qIEZyYW1ld29ya3MgKi8sCiAJCQkJMDM0
NzY4RERGRjM4QTQ1QTExREI5QzhCIC8qIFByb2R1Y3RzICovLAogCQkJKTsKIAkJCW5hbWUgPSBn
dGVzdDsKQEAgLTMyNywyNCArMzQxLDE2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MDQ4ODRB
OTBFMkY3Q0Q5MDBDRjc2NTggLyogQ0hBTkdFUyAqLywKIAkJCQk0MDQ4ODRBQTBFMkY3Q0Q5MDBD
Rjc2NTggLyogQ09OVFJJQlVUT1JTICovLAotCQkJCTQwNDg4NEFCMEUyRjdDRDkwMENGNzY1OCAv
KiBDT1BZSU5HICovLAogCQkJCTQwNDg4M0Q5MEUyRjc5OUIwMENGNzY1OCAvKiBpbmNsdWRlICov
LAotCQkJCTQwNDg4M0Y2MEUyRjc5OUIwMENGNzY1OCAvKiBSRUFETUUgKi8sCisJCQkJNDA0ODg0
QUIwRTJGN0NEOTAwQ0Y3NjU4IC8qIExJQ0VOU0UgKi8sCiAJCQkJNDA4OUEwMkYwRkZBQ0Y4NDAw
MEIyOUFFIC8qIHNhbXBsZXMgKi8sCiAJCQkJNDA0ODg0MDcwRTJGNzk5QjAwQ0Y3NjU4IC8qIHNy
YyAqLywKIAkJCQkzQjIzOEJGMDBFN0ZFMTNCMDA4NDZFMTEgLyogdGVzdCAqLywKKwkJCQk0MDQ4
ODNGNjBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FLm1kICovLAogCQkJKTsKIAkJCW5hbWUgPSBT
b3VyY2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQkxQTBBNEM0NjE0QjdB
M0JDMDA4OTUxMzUgLyogRnJhbWV3b3JrcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJMUEwQTRDNDQxNEI3QTNCNTAwODk1MTM1IC8qIEphdmFTY3JpcHRD
b3JlLmZyYW1ld29yayAqLywKLQkJCSk7Ci0JCQluYW1lID0gRnJhbWV3b3JrczsKLQkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTNCMjM4QkYwMEU3RkUxM0IwMDg0NkUxMSAvKiB0
ZXN0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTM3OSw2
ICszODUsNyBAQAogCQkJCTQwNDg4M0RCMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1kZWF0aC10
ZXN0LmggKi8sCiAJCQkJNDA0ODgzREMwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LW1lc3NhZ2Uu
aCAqLywKIAkJCQk0NTM5QzkzMzBFQzI4MEFFMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdGVzdC5o
ICovLAorCQkJCTQ1NjdDODE3MTI2NEZGNzEwMDc3NDBCRSAvKiBndGVzdC1wcmludGVycy5oICov
LAogCQkJCTQwNDg4M0REMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zcGkuaCAqLywKIAkJCQky
MjRBMTJBMjBFOUVBRENDMDBCRDE3RkQgLyogZ3Rlc3QtdGVzdC1wYXJ0LmggKi8sCiAJCQkJM0JG
NkYyQTQwRTc5QjYxNjAwMEYyRUVFIC8qIGd0ZXN0LXR5cGVkLXRlc3QuaCAqLywKQEAgLTM5Miwx
MiArMzk5LDE0IEBACiAJCTQwNDg4M0UxMEUyRjc5OUIwMENGNzY1OCAvKiBpbnRlcm5hbCAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRjY3RDRGNDAxQzdG
NUREMDAwMTdDNzI5IC8qIGN1c3RvbSAqLywKIAkJCQk0MDQ4ODNFMjBFMkY3OTlCMDBDRjc2NTgg
LyogZ3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5oICovLAogCQkJCTQwNDg4M0UzMEUyRjc5OUIw
MENGNzY1OCAvKiBndGVzdC1maWxlcGF0aC5oICovLAogCQkJCTQwNDg4M0U0MEUyRjc5OUIwMENG
NzY1OCAvKiBndGVzdC1pbnRlcm5hbC5oICovLAogCQkJCTQ1MzlDOTM1MEVDMjgwRTIwMEE3MEY0
QyAvKiBndGVzdC1saW5rZWRfcHRyLmggKi8sCiAJCQkJNDUzOUM5MzYwRUMyODBFMjAwQTcwRjRD
IC8qIGd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmggKi8sCiAJCQkJNDUzOUM5MzcwRUMyODBF
MjAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwuaCAqLywKKwkJCQlGNjdENEYzRDFDN0Y1RDhC
MDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggKi8sCiAJCQkJNDA0ODgzRTUwRTJGNzk5QjAw
Q0Y3NjU4IC8qIGd0ZXN0LXBvcnQuaCAqLywKIAkJCQk0MDQ4ODNFNjBFMkY3OTlCMDBDRjc2NTgg
LyogZ3Rlc3Qtc3RyaW5nLmggKi8sCiAJCQkJNDA4OTlGNEQwRkZBNzI3MTAwMEIyOUFFIC8qIGd0
ZXN0LXR1cGxlLmggKi8sCkBAIC00MzMsNyArNDQyLDYgQEAKIAkJCQk0MEQ0Q0RGMTBFMzBFMDc0
MDAyOTQ4MDEgLyogRGVidWdQcm9qZWN0LnhjY29uZmlnICovLAogCQkJCTQwRDRDREYyMEUzMEUw
NzQwMDI5NDgwMSAvKiBGcmFtZXdvcmtUYXJnZXQueGNjb25maWcgKi8sCiAJCQkJNDBENENERjMw
RTMwRTA3NDAwMjk0ODAxIC8qIEdlbmVyYWwueGNjb25maWcgKi8sCi0JCQkJNDRDNDhERkYxNEE0
MDk4RjAwQTJEOUM3IC8qIFByb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmlnICovLAogCQkJCTQwRDRD
REY0MEUzMEUwNzQwMDI5NDgwMSAvKiBSZWxlYXNlUHJvamVjdC54Y2NvbmZpZyAqLywKIAkJCQk0
MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyAq
LywKIAkJCSk7CkBAIC00NDgsNiArNDU2LDE2IEBACiAJCQlwYXRoID0gUmVzb3VyY2VzOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRjY3RDRGNDAxQzdGNUREMDAwMTdDNzI5
IC8qIGN1c3RvbSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJRjY3RDRGNDExQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCAqLywKKwkJCQlGNjdE
NEY0MjFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLywKKwkJCQlGNjdENEY0
MzFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gY3VzdG9t
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ1
OCw5ICs0NzYsMTQgQEAKIAkJCQk0MDQ4ODQzODBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtZGVh
dGgtdGVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0MzkwRTJGNzk5QjAwQ0Y3NjU4IC8q
IGd0ZXN0LW1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1MzlDOTM0MEVDMjgwQUUwMEE3
MEY0QyAvKiBndGVzdC1wYXJhbS10ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNjdENEYzRTFD
N0Y1RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
NjdENEY0NDFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRjY3RDRGNDUxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0NTY3QzgxODEyNjRGRjcxMDA3NzQwQkUgLyogZ3Rlc3QtcHJpbnRlcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTQwNDg4NDNBMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zcGku
aCBpbiBIZWFkZXJzICovLAogCQkJCTIyNEExMkEzMEU5RUFEQ0MwMEJEMTdGRCAvKiBndGVzdC10
ZXN0LXBhcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTNCRjZGMkE1MEU3OUI2MTYwMDBGMkVFRSAv
KiBndGVzdC10eXBlZC10ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNjdENEY0NjFDN0Y1REQw
MDAxN0M3MjkgLyogZ3Rlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQwNDg4NDNCMEUyRjc5OUIw
MENGNzY1OCAvKiBndGVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0M0MwRTJGNzk5QjAw
Q0Y3NjU4IC8qIGd0ZXN0X3ByZWRfaW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0M0Qw
RTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X3Byb2QuaCBpbiBIZWFkZXJzICovLApAQCAtNTc3LDgg
KzYwMCw4IEBACiAJCQkJOEQwN0YyQzEwNDg2Q0M3QTAwN0NEMUQwIC8qIFNvdXJjZXMgKi8sCiAJ
CQkJOEQwN0YyQkQwNDg2Q0M3QTAwN0NEMUQwIC8qIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0QTUw
RTJGN0MwNDAwQ0Y3NjU4IC8qIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKKwkJCQlGNjdENEY0
NzFDN0Y1REY2MDAxN0M3MjkgLyogQ29weSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLywKIAkJ
CQk4RDA3RjJCRjA0ODZDQzdBMDA3Q0QxRDAgLyogUmVzb3VyY2VzICovLAotCQkJCTQ0NEQxMTcy
MTRBMjYyOEYwMDlGRUMzRiAvKiBGcmFtZXdvcmtzICovLAogCQkJKTsKIAkJCWJ1aWxkUnVsZXMg
PSAoCiAJCQkpOwpAQCAtNTk5LDggKzYyMiw3IEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMw
NyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlhdHRy
aWJ1dGVzID0gewotCQkJCUxhc3RTd2lmdFVwZGF0ZUNoZWNrID0gMDcwMDsKLQkJCQlMYXN0VXBn
cmFkZUNoZWNrID0gMDYwMDsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDQ2MDsKIAkJCX07CiAJ
CQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNEZBREMyNDYwOEI0MTU2RDAwQUJFNTVFIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiZ3Rlc3QiICovOwogCQkJY29t
cGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMy4yIjsKQEAgLTYzOCw5ICs2NjAsOSBAQAogCQkJ
ZmlsZXMgPSAoCiAJCQkJNDA0ODg0QUMwRTJGN0NEOTAwQ0Y3NjU4IC8qIENIQU5HRVMgaW4gUmVz
b3VyY2VzICovLAogCQkJCTQwNDg4NEFEMEUyRjdDRDkwMENGNzY1OCAvKiBDT05UUklCVVRPUlMg
aW4gUmVzb3VyY2VzICovLAotCQkJCTQwNDg4NEFFMEUyRjdDRDkwMENGNzY1OCAvKiBDT1BZSU5H
IGluIFJlc291cmNlcyAqLywKIAkJCQk0MEM4NDk3ODEwMUEzNjU0MDA4MzY0MkEgLyogbGliZ3Rl
c3RfbWFpbi5hIGluIFJlc291cmNlcyAqLywKLQkJCQk0MDQ4ODQ1MDBFMkY3OTlCMDBDRjc2NTgg
LyogUkVBRE1FIGluIFJlc291cmNlcyAqLywKKwkJCQk0MDQ4ODRBRTBFMkY3Q0Q5MDBDRjc2NTgg
LyogTElDRU5TRSBpbiBSZXNvdXJjZXMgKi8sCisJCQkJNDA0ODg0NTAwRTJGNzk5QjAwQ0Y3NjU4
IC8qIFJFQURNRS5tZCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC04MTIsMjAgKzgzNCwyNSBAQAogCQkz
QjIzOEY2MDBFODI4QjU0MDA4NDZFMTEgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9J
TUFHRVMgPSBZRVM7CiAJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POwogCQkJCUdDQ19EWU5BTUlD
X05PX1BJQyA9IE5POwogCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19W
RVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKIAkJCQlQUk9EVUNU
X05BTUUgPSBDaGVjazsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUgPSBE
ZWJ1ZzsKIAkJfTsKIAkJM0IyMzhGNjEwRTgyOEI1NDAwODQ2RTExIC8qIFJlbGVhc2UgKi8gPSB7
CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CiAJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlF
UzsKIAkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKLQkJ
CQlHQ0NfRU5BQkxFX0ZJWF9BTkRfQ09OVElOVUUgPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNv
bS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CiAJCQkJUFJPRFVDVF9OQU1FID0gQ2hl
Y2s7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlaRVJPX0xJTksgPSBOTzsKIAkJCX07CiAJ
CQluYW1lID0gUmVsZWFzZTsKQEAgLTgzMywzNSArODYwLDQ5IEBACiAJCTQwODk5RjQ1MEZGQTcx
ODUwMDBCMjlBRSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21w
aWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9IC4uLzsKIAkJ
CQlQUk9EVUNUX05BTUUgPSAiZ3Rlc3RfdW5pdHRlc3QtZnJhbWV3b3JrIjsKKwkJCQlTREtST09U
ID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKIAkJNDA4OTlGNDYwRkZB
NzE4NTAwMEIyOUFFIC8qIFJlbGVhc2UgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUu
Y29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAuLi87
CiAJCQkJUFJPRFVDVF9OQU1FID0gImd0ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayI7CisJCQkJU0RL
Uk9PVCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKIAkJNDA4OUEw
MTUwRkZBQ0VGRDAwMEIyOUFFIC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFw
cGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKIAkJCQlQUk9EVUNUX05BTUUgPSAic2FtcGxl
MV91bml0dGVzdC1mcmFtZXdvcmsiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQl9OwogCQkJ
bmFtZSA9IERlYnVnOwogCQl9OwogCQk0MDg5QTAxNjBGRkFDRUZEMDAwQjI5QUUgLyogUmVsZWFz
ZSAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4x
XzA7CiAJCQkJUFJPRFVDVF9OQU1FID0gInNhbXBsZTFfdW5pdHRlc3QtZnJhbWV3b3JrIjsKKwkJ
CQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwogCQk0
MEM0NEFERjBFMzc5OEY0MDA4RkNDNTEgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9J
TUFHRVMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0u
Y2xhbmcuMV8wOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CiAJCQkJUFJP
RFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlUQVJHRVRfTkFN
RSA9IGd0ZXN0OwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKQEAgLTg2OSw3ICs5MTAsMTEgQEAK
IAkJNDBDNDRBRTAwRTM3OThGNDAwOEZDQzUxIC8qIFJlbGVhc2UgKi8gPSB7CiAJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9I
SURQSV9JTUFHRVMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJz
Lmxsdm0uY2xhbmcuMV8wOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CiAJ
CQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlUQVJH
RVRfTkFNRSA9IGd0ZXN0OwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwpAQCAtODc4LDkgKzky
MywxNiBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDQwODk5RkIzMEZGQTc1NjcwMDBCMjlBRSAvKiBTdGF0aWNMaWJyYXJ5
VGFyZ2V0LnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDT01CSU5FX0hJ
RFBJX0lNQUdFUyA9IFlFUzsKIAkJCQlHQ0NfSU5MSU5FU19BUkVfUFJJVkFURV9FWFRFUk4gPSBZ
RVM7CiAJCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBZRVM7CisJCQkJR0NDX1ZFUlNJ
T04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUhFQURFUl9TRUFS
Q0hfUEFUSFMgPSAoCisJCQkJCS4uLywKKwkJCQkJLi4vaW5jbHVkZS8sCisJCQkJKTsKIAkJCQlQ
Uk9EVUNUX05BTUUgPSBndGVzdDsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5h
bWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTg4OCw5ICs5NDAsMTYgQEAKIAkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0MDg5OUZCMzBG
RkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLzsKIAkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CiAJCQkJR0ND
X0lOTElORVNfQVJFX1BSSVZBVEVfRVhURVJOID0gWUVTOwogCQkJCUdDQ19TWU1CT0xTX1BSSVZB
VEVfRVhURVJOID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5s
bHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLi8sCisJ
CQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJ
U0RLUk9PVCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKQEAgLTg5
OCw3ICs5NTcsMTQgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNv
bmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGlj
TGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09N
QklORV9ISURQSV9JTUFHRVMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29t
cGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJ
CS4uLywKKwkJCQkJLi4vaW5jbHVkZS8sCisJCQkJKTsKIAkJCQlQUk9EVUNUX05BTUUgPSBndGVz
dF9tYWluOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwog
CQl9OwpAQCAtOTA2LDEzNCArOTcyLDcyIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDA4OTlGQjMwRkZBNzU2NzAwMEIy
OUFFIC8qIFN0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCUNPTUJJTkVfSElEUElfSU1BR0VTID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0g
Y29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BB
VEhTID0gKAorCQkJCQkuLi8sCisJCQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7CiAJCQkJUFJPRFVD
VF9OQU1FID0gZ3Rlc3RfbWFpbjsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5h
bWUgPSBSZWxlYXNlOwogCQl9OwogCQk0MEM4NDk4NTEwMUEzNjg1MDA4MzY0MkEgLyogRGVidWcg
Ki8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8w
OworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAuLi87CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rl
c3RfdW5pdHRlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gRGVi
dWc7CiAJCX07CiAJCTQwQzg0OTg2MTAxQTM2ODUwMDgzNjQyQSAvKiBSZWxlYXNlICovID0gewog
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlI
RUFERVJfU0VBUkNIX1BBVEhTID0gLi4vOwogCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0X3VuaXR0
ZXN0OworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJ
CX07CiAJCTQwQzg0OTk1MTAxQTM2QTYwMDgzNjQyQSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlHQ0NfVkVS
U0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CiAJCQkJUFJPRFVDVF9O
QU1FID0gInNhbXBsZTFfdW5pdHRlc3Qtc3RhdGljIjsKKwkJCQlTREtST09UID0gbWFjb3N4Owog
CQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKIAkJNDBDODQ5OTYxMDFBMzZBNjAwODM2NDJB
IC8qIFJlbGVhc2UgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxs
dm0uY2xhbmcuMV8wOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJzYW1wbGUxX3VuaXR0ZXN0LXN0YXRp
YyI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJ
fTsKLQkJNDRDNDhFMDQxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0JCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gNDRDNDhERkYxNEE0MDk4RjAwQTJEOUM3IC8qIFByb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmln
ICovOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCX07Ci0JCQluYW1lID0gUHJvZHVjdGlvbjsK
LQkJfTsKLQkJNDRDNDhFMDUxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0J
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJl
bmNlID0gNDBENENERjIwRTMwRTA3NDAwMjk0ODAxIC8qIEZyYW1ld29ya1RhcmdldC54Y2NvbmZp
ZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJRFlMSUJfQ09NUEFUSUJJTElUWV9WRVJT
SU9OID0gMTsKLQkJCQlEWUxJQl9DVVJSRU5UX1ZFUlNJT04gPSAxOwotCQkJCUlORk9QTElTVF9G
SUxFID0gUmVzb3VyY2VzL0luZm8ucGxpc3Q7Ci0JCQkJSU5GT1BMSVNUX1BSRUZJWF9IRUFERVIg
PSAiJChQUk9KRUNUX1RFTVBfRElSKS9WZXJzaW9uLmgiOwotCQkJCUlORk9QTElTVF9QUkVQUk9D
RVNTID0gWUVTOwotCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0OwotCQkJCVZFUlNJT05JTkdfU1lT
VEVNID0gImFwcGxlLWdlbmVyaWMiOwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9
OwotCQk0NEM0OEUwNjE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSA0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZp
ZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJR0NDX0lOTElORVNfQVJFX1BSSVZBVEVf
RVhURVJOID0gWUVTOwotCQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gWUVTOwotCQkJ
CVBST0RVQ1RfTkFNRSA9IGd0ZXN0OwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9
OwotCQk0NEM0OEUwNzE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSA0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZp
ZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3RfbWFp
bjsKLQkJCX07Ci0JCQluYW1lID0gUHJvZHVjdGlvbjsKLQkJfTsKLQkJNDRDNDhFMDgxNEE0MDlE
RTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gImd0ZXN0X3Vu
aXR0ZXN0LWZyYW1ld29yayI7Ci0JCQl9OwotCQkJbmFtZSA9IFByb2R1Y3Rpb247Ci0JCX07Ci0J
CTQ0QzQ4RTA5MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICovID0gewotCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCVBST0RVQ1Rf
TkFNRSA9IGd0ZXN0X3VuaXR0ZXN0OwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9
OwotCQk0NEM0OEUwQTE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlQUk9E
VUNUX05BTUUgPSAic2FtcGxlMV91bml0dGVzdC1mcmFtZXdvcmsiOwotCQkJfTsKLQkJCW5hbWUg
PSBQcm9kdWN0aW9uOwotCQl9OwotCQk0NEM0OEUwQjE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVj
dGlvbiAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0
aW5ncyA9IHsKLQkJCQlQUk9EVUNUX05BTUUgPSAic2FtcGxlMV91bml0dGVzdC1zdGF0aWMiOwot
CQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9OwotCQk0NEM0OEUwQzE0QTQwOURFMDBB
MkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOwotCQkJ
CURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOwotCQkJCUdDQ19F
TkFCTEVfRklYX0FORF9DT05USU5VRSA9IE5POwotCQkJCVBST0RVQ1RfTkFNRSA9IENoZWNrOwot
CQkJCVpFUk9fTElOSyA9IE5POwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9Owot
CQk0NEM0OEUwRDE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlQUk9EVUNU
X05BTUUgPSBndGVzdDsKLQkJCQlUQVJHRVRfTkFNRSA9IGd0ZXN0OwotCQkJfTsKLQkJCW5hbWUg
PSBQcm9kdWN0aW9uOwotCQl9OwogCQk0RkFEQzI0MzA4QjQxNTZEMDBBQkU1NUUgLyogRGVidWcg
Ki8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0
aW9uUmVmZXJlbmNlID0gNDBENENERjIwRTMwRTA3NDAwMjk0ODAxIC8qIEZyYW1ld29ya1Rhcmdl
dC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9J
TUFHRVMgPSBZRVM7CiAJCQkJRFlMSUJfQ09NUEFUSUJJTElUWV9WRVJTSU9OID0gMTsKIAkJCQlE
WUxJQl9DVVJSRU5UX1ZFUlNJT04gPSAxOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNv
bXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJ
CQkuLi8sCisJCQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSBS
ZXNvdXJjZXMvSW5mby5wbGlzdDsKIAkJCQlJTkZPUExJU1RfUFJFRklYX0hFQURFUiA9ICIkKFBS
T0pFQ1RfVEVNUF9ESVIpL1ZlcnNpb24uaCI7CiAJCQkJSU5GT1BMSVNUX1BSRVBST0NFU1MgPSBZ
RVM7CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJ
CQlWRVJTSU9OSU5HX1NZU1RFTSA9ICJhcHBsZS1nZW5lcmljIjsKIAkJCX07CiAJCQluYW1lID0g
RGVidWc7CkBAIC0xMDQyLDEyICsxMDQ2LDE5IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDBENENERjIwRTMwRTA3NDAw
Mjk0ODAxIC8qIEZyYW1ld29ya1RhcmdldC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CiAJCQkJRFlMSUJfQ09NUEFUSUJJ
TElUWV9WRVJTSU9OID0gMTsKIAkJCQlEWUxJQl9DVVJSRU5UX1ZFUlNJT04gPSAxOworCQkJCUdD
Q19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFE
RVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLi8sCisJCQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7
CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSBSZXNvdXJjZXMvSW5mby5wbGlzdDsKIAkJCQlJTkZPUExJ
U1RfUFJFRklYX0hFQURFUiA9ICIkKFBST0pFQ1RfVEVNUF9ESVIpL1ZlcnNpb24uaCI7CiAJCQkJ
SU5GT1BMSVNUX1BSRVBST0NFU1MgPSBZRVM7CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJ
CQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlWRVJTSU9OSU5HX1NZU1RFTSA9ICJhcHBsZS1nZW5l
cmljIjsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKQEAgLTEwNTYsNiArMTA2Nyw5IEBACiAJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJl
bmNlID0gNDBENENERjEwRTMwRTA3NDAwMjk0ODAxIC8qIERlYnVnUHJvamVjdC54Y2NvbmZpZyAq
LzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJE
ID0gImdudSsrMHgiOworCQkJCUNMQU5HX0NYWF9MSUJSQVJZID0gImxpYmMrKyI7CisJCQkJTUFD
T1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJ
CX07CkBAIC0xMDYzLDYgKzEwNzcsOSBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDQwRDRDREY0MEUzMEUwNzQwMDI5NDgw
MSAvKiBSZWxlYXNlUHJvamVjdC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMHgiOworCQkJCUNMQU5HX0NY
WF9MSUJSQVJZID0gImxpYmMrKyI7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAu
NzsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKQEAgLTEwNzQsMTAwICsxMDkxLDkw
IEBACiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAogCQkJCTNCMjM4RjYwMEU4MjhCNTQwMDg0
NkUxMSAvKiBEZWJ1ZyAqLywKIAkJCQkzQjIzOEY2MTBFODI4QjU0MDA4NDZFMTEgLyogUmVsZWFz
ZSAqLywKLQkJCQk0NEM0OEUwQzE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLywKIAkJ
CSk7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1l
ID0gUmVsZWFzZTsKIAkJfTsKIAkJNDA4OTlGNEEwRkZBNzFCQzAwMEIyOUFFIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJndGVzdF91bml0dGVzdC1mcmFt
ZXdvcmsiICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29u
ZmlndXJhdGlvbnMgPSAoCiAJCQkJNDA4OTlGNDUwRkZBNzE4NTAwMEIyOUFFIC8qIERlYnVnICov
LAogCQkJCTQwODk5RjQ2MEZGQTcxODUwMDBCMjlBRSAvKiBSZWxlYXNlICovLAotCQkJCTQ0QzQ4
RTA4MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICovLAogCQkJKTsKIAkJCWRlZmF1bHRD
b25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9
IFByb2R1Y3Rpb247CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwogCQl9
OwogCQk0MDg5QTAyNDBGRkFDRjAxMDAwQjI5QUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhOYXRpdmVUYXJnZXQgInNhbXBsZTFfdW5pdHRlc3QtZnJhbWV3b3JrIiAqLyA9IHsK
IAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0g
KAogCQkJCTQwODlBMDE1MEZGQUNFRkQwMDBCMjlBRSAvKiBEZWJ1ZyAqLywKIAkJCQk0MDg5QTAx
NjBGRkFDRUZEMDAwQjI5QUUgLyogUmVsZWFzZSAqLywKLQkJCQk0NEM0OEUwQTE0QTQwOURFMDBB
MkQ5QzcgLyogUHJvZHVjdGlvbiAqLywKIAkJCSk7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklz
VmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwor
CQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKIAkJfTsKIAkJNDBDNDRBRTQw
RTM3OTkwNTAwOEZDQzUxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVn
YXRlVGFyZ2V0ICJWZXJzaW9uIEluZm8iICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9u
TGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCiAJCQkJNDBDNDRBREYwRTM3OThGNDAw
OEZDQzUxIC8qIERlYnVnICovLAogCQkJCTQwQzQ0QUUwMEUzNzk4RjQwMDhGQ0M1MSAvKiBSZWxl
YXNlICovLAotCQkJCTQ0QzQ4RTBEMTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICovLAog
CQkJKTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRD
b25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5h
bWUgPSBSZWxlYXNlOwogCQl9OwogCQk0MEM4NDkwMjEwMUEyMTJFMDA4MzY0MkEgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0LXN0YXRpYyIgKi8g
PSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9u
cyA9ICgKIAkJCQk0MEM4NDhGQjEwMUEyMDlEMDA4MzY0MkEgLyogRGVidWcgKi8sCiAJCQkJNDBD
ODQ4RkMxMDFBMjA5RDAwODM2NDJBIC8qIFJlbGVhc2UgKi8sCi0JCQkJNDRDNDhFMDYxNEE0MDlE
RTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8sCiAJCQkpOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlv
bjsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CiAJCX07CiAJCTQwQzg0
OTEyMTAxQTIxRDIwMDgzNjQyQSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5h
dGl2ZVRhcmdldCAiZ3Rlc3RfbWFpbi1zdGF0aWMiICovID0gewogCQkJaXNhID0gWENDb25maWd1
cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCiAJCQkJNDBDODQ5MEUxMDFB
MjE3RjAwODM2NDJBIC8qIERlYnVnICovLAogCQkJCTQwQzg0OTBGMTAxQTIxN0YwMDgzNjQyQSAv
KiBSZWxlYXNlICovLAotCQkJCTQ0QzQ4RTA3MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9u
ICovLAogCQkJKTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRl
ZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCQlkZWZhdWx0Q29uZmlndXJh
dGlvbk5hbWUgPSBSZWxlYXNlOwogCQl9OwogCQk0MEM4NDk4NDEwMUEzNjg1MDA4MzY0MkEgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0X3VuaXR0
ZXN0LXN0YXRpYyIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVp
bGRDb25maWd1cmF0aW9ucyA9ICgKIAkJCQk0MEM4NDk4NTEwMUEzNjg1MDA4MzY0MkEgLyogRGVi
dWcgKi8sCiAJCQkJNDBDODQ5ODYxMDFBMzY4NTAwODM2NDJBIC8qIFJlbGVhc2UgKi8sCi0JCQkJ
NDRDNDhFMDkxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8sCiAJCQkpOwogCQkJZGVm
YXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25O
YW1lID0gUHJvZHVjdGlvbjsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7
CiAJCX07CiAJCTQwQzg0OTk0MTAxQTM2QTYwMDgzNjQyQSAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAic2FtcGxlMV91bml0dGVzdC1zdGF0aWMiICovID0g
ewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCiAJCQkJNDBDODQ5OTUxMDFBMzZBNjAwODM2NDJBIC8qIERlYnVnICovLAogCQkJCTQwQzg0
OTk2MTAxQTM2QTYwMDgzNjQyQSAvKiBSZWxlYXNlICovLAotCQkJCTQ0QzQ4RTBCMTRBNDA5REUw
MEEyRDlDNyAvKiBQcm9kdWN0aW9uICovLAogCQkJKTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9u
SXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247
CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwogCQl9OwogCQk0RkFEQzI0
MjA4QjQxNTZEMDBBQkU1NUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRp
dmVUYXJnZXQgImd0ZXN0LWZyYW1ld29yayIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRp
b25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKIAkJCQk0RkFEQzI0MzA4QjQxNTZE
MDBBQkU1NUUgLyogRGVidWcgKi8sCiAJCQkJNEZBREMyNDQwOEI0MTU2RDAwQUJFNTVFIC8qIFJl
bGVhc2UgKi8sCi0JCQkJNDRDNDhFMDUxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8s
CiAJCQkpOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9u
TmFtZSA9IFJlbGVhc2U7CiAJCX07CiAJCTRGQURDMjQ2MDhCNDE1NkQwMEFCRTU1RSAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgImd0ZXN0IiAqLyA9IHsKIAkJCWlz
YSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAogCQkJ
CTRGQURDMjQ3MDhCNDE1NkQwMEFCRTU1RSAvKiBEZWJ1ZyAqLywKIAkJCQk0RkFEQzI0ODA4QjQx
NTZEMDBBQkU1NUUgLyogUmVsZWFzZSAqLywKLQkJCQk0NEM0OEUwNDE0QTQwOURFMDBBMkQ5Qzcg
LyogUHJvZHVjdGlvbiAqLywKIAkJCSk7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJs
ZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQkJZGVm
YXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKIAkJfTsKIC8qIEVuZCBYQ0NvbmZpZ3Vy
YXRpb25MaXN0IHNlY3Rpb24gKi8KIAl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50U2l6ZS5oCmluZGV4IDdhYzY0Y2FiNDhjM2QwOWE5MWE5YWU3OGJkMGM3YWFkZmUwOTQ1
YTQuLmRhMTM0ZWE1OWQwNWNmNGYxNjM0OTM5ZDQ2MzM2NzA3ZmExZjFiMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9DaGVja2Vk
QXJpdGhtZXRpYy5oPgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBkZWZpbmVkIF9fT0JKQ19fCiAj
aW1wb3J0IDxGb3VuZGF0aW9uL05TR2VvbWV0cnkuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3Y2VjNjE4N2ZlNTUwMGQ1YmY4MGY1MmQ4MDYx
NjYwYmEzMmI0ZTdkLi41NzAxMjJkMDFhMWVhYjk0NTNmMTQ4N2E4MzA2NTQxYmVmMDMxZDUxIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTgtMDgtMzAgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnku
Y29tPgorCisgICAgICAgIFVwZGF0ZSBnb29nbGV0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3MjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29uZmlnLmg6CisgICAg
ICAgIEluc3RlYWQgb2YgbW9kaWZ5aW5nIGd0ZXN0IGl0c2VsZiwgYWRkIGFueSBuZWNlc3Nhcnkg
V1RGIGluY2x1ZGVzIGhlcmUuCisKIDIwMTgtMDgtMzAgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBh
cHBsZS5jb20+CiAKICAgICAgICAgV0tOYXZpZ2F0aW9uLlByb2Nlc3NDcmFzaER1cmluZ0NhbGxi
YWNrIGlzIGZhaWxpbmcgb24gaU9TCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
bmZpZy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAppbmRleCBlZGY4YTZmMWY1NmIw
YmVkZmZlODRlNjYwZWU4ZWY1MDRjNGM1MmNhLi4wYzJjNGFlN2JmMGU5Y2U1ZTk4Nzk1OGU1NDg0
M2VkNDM3NDYyMjQ2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKQEAgLTU3LDggKzU3LDE0IEBACiAKICNp
ZmRlZiBfX2NwbHVzcGx1cwogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KKyN1bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUKKyNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgogI2VuZGlmCiAKKyNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5oPgor
CiAjaWZkZWYgX19jbGFuZ19fCiAvLyBGaW5pc2ggd29ya2luZyBhcm91bmQgdGhlIGxlc3Mgc3Ry
aWN0IGNvZGluZyBzdGFuZGFyZHMgb2YgdGhlIGd0ZXN0IGZyYW1ld29yay4KICNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwb3AK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348573</attachid>
            <date>2018-08-30 17:26:24 -0700</date>
            <delta_ts>2018-08-30 21:34:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175722-20180830172623.patch</filename>
            <type>text/plain</type>
            <size>2555602</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9DaGFuZ2VMb2cKaW5kZXggZmI1MTE0ZTAz
ZmM3ZTUxZjg2N2YzOWFiZjhkYjIwNDA1YWRhOWJiYS4uMmFlYjQwMzU4ZDEzMDg4YzNkMzMzNGU2
NDZmZGM1YTlmY2NjMWZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4
LTA4LTMwICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAg
ICBVcGRhdGUgZ29vZ2xldGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc1NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBndGVzdC86CisgICAgICAgIFVwZGF0ZSB0byBsYXRlc3QgKHBvc3QtMS44
LjApLgorCisgICAgICAgICogZ3Rlc3QvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgIEtlZXAgb3Vy
IHZlcnNpb24gb2YgdGhpcyBmaWxlLCBidXQgdXBkYXRlIHNvdXJjZSBmaWxlIGxpc3QuCisKIDIw
MTgtMDctMTcgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtXUEVdW0dUS10gVXBkYXRlIHhkZ21pbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmOTUwY2E5NTU5
ZGYzMTE5Yjk5ODgwMTA4MDNmNTQ5ZGJlZGJiNTUxLi5kOGI4NmRmNmMzMDVlYjlmZGEwNjY3Zjhj
NDk4OTllMDcxNjk5NjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDgtMzAg
IFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFVwZGF0
ZSBnb29nbGV0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzU3MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaDoKKyAgICAgICAgQWRkIG1pc3Npbmcg
I2luY2x1ZGUuCisKIDIwMTgtMDgtMzAgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBbTEZDXVtGbG9hdGluZ10gQmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IHJvb3Rz
IGF2b2lkIGZsb2F0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NIQU5H
RVMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DSEFOR0VTCmluZGV4IGU1NzQ0MTVlZTZlZDgx
Y2Y0OTJiZTI5NTM0NmM0NDRlZWIxMGNlODguLjA1NTIxMzI0MjEyYzkxMjg3ZDkyNDRkNDRiYWIz
MDZkYjY2NGJhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NIQU5HRVMK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ0hBTkdFUwpAQCAtMSwzICsxLDYyIEBACitD
aGFuZ2VzIGZvciAxLjcuMDoKKworKiBOZXcgZmVhdHVyZTogZGVhdGggdGVzdHMgYXJlIHN1cHBv
cnRlZCBvbiBPcGVuQlNEIGFuZCBpbiBpT1MKKyAgc2ltdWxhdG9yIG5vdy4KKyogTmV3IGZlYXR1
cmU6IEdvb2dsZSBUZXN0IG5vdyBpbXBsZW1lbnRzIGEgcHJvdG9jb2wgdG8gYWxsb3cKKyAgYSB0
ZXN0IHJ1bm5lciB0byBkZXRlY3QgdGhhdCBhIHRlc3QgcHJvZ3JhbSBoYXMgZXhpdGVkCisgIHBy
ZW1hdHVyZWx5IGFuZCByZXBvcnQgaXQgYXMgYSBmYWlsdXJlIChiZWZvcmUgaXQgd291bGQgYmUK
KyAgZmFsc2VseSByZXBvcnRlZCBhcyBhIHN1Y2Nlc3MgaWYgdGhlIGV4aXQgY29kZSBpcyAwKS4K
KyogTmV3IGZlYXR1cmU6IFRlc3Q6OlJlY29yZFByb3BlcnR5KCkgY2FuIG5vdyBiZSB1c2VkIG91
dHNpZGUgb2YgdGhlCisgIGxpZmVzcGFuIG9mIGEgdGVzdCBtZXRob2QsIGluIHdoaWNoIGNhc2Ug
aXQgd2lsbCBiZSBhdHRyaWJ1dGVkIHRvCisgIHRoZSBjdXJyZW50IHRlc3QgY2FzZSBvciB0aGUg
dGVzdCBwcm9ncmFtIGluIHRoZSBYTUwgcmVwb3J0LgorKiBOZXcgZmVhdHVyZSAocG90ZW50aWFs
bHkgYnJlYWtpbmcpOiAtLWd0ZXN0X2xpc3RfdGVzdHMgbm93IHByaW50cworICB0aGUgdHlwZSBw
YXJhbWV0ZXJzIGFuZCB2YWx1ZSBwYXJhbWV0ZXJzIGZvciBlYWNoIHRlc3QuCisqIEltcHJvdmVt
ZW50OiBjaGFyIHBvaW50ZXJzIGFuZCBjaGFyIGFycmF5cyBhcmUgbm93IGVzY2FwZWQgcHJvcGVy
bHkKKyAgaW4gZmFpbHVyZSBtZXNzYWdlcy4KKyogSW1wcm92ZW1lbnQ6IGZhaWx1cmUgc3VtbWFy
eSBpbiBYTUwgcmVwb3J0cyBub3cgaW5jbHVkZXMgZmlsZSBhbmQKKyAgbGluZSBpbmZvcm1hdGlv
bi4KKyogSW1wcm92ZW1lbnQ6IHRoZSA8dGVzdHN1aXRlcz4gWE1MIGVsZW1lbnQgbm93IGhhcyBh
IHRpbWVzdGFtcCBhdHRyaWJ1dGUuCisqIEltcHJvdmVtZW50OiBXaGVuIC0tZ3Rlc3RfZmlsdGVy
IGlzIHNwZWNpZmllZCwgWE1MIHJlcG9ydCBub3cgZG9lc24ndAorICBjb250YWluIGluZm9ybWF0
aW9uIGFib3V0IHRlc3RzIHRoYXQgYXJlIGZpbHRlcmVkIG91dC4KKyogRml4ZWQgdGhlIGJ1ZyB3
aGVyZSBsb25nIC0tZ3Rlc3RfZmlsdGVyIGZsYWcgdmFsdWVzIGFyZSB0cnVuY2F0ZWQgaW4KKyAg
ZGVhdGggdGVzdHMuCisqIFBvdGVudGlhbGx5IGJyZWFraW5nIGNoYW5nZTogUlVOX0FMTF9URVNU
UygpIGlzIG5vdyBpbXBsZW1lbnRlZCBhcyBhCisgIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBtYWNy
byBpbiBvcmRlciB0byB3b3JrIGJldHRlciB3aXRoIENsYW5nLgorKiBDb21wYXRpYmlsaXR5IGZp
eGVzIHdpdGggQysrIDExIGFuZCB2YXJpb3VzIHBsYXRmb3Jtcy4KKyogQnVnL3dhcm5pbmcgZml4
ZXMuCisKK0NoYW5nZXMgZm9yIDEuNi4wOgorCisqIE5ldyBmZWF0dXJlOiBBRERfRkFJTFVSRV9B
VCgpIGZvciByZXBvcnRpbmcgYSB0ZXN0IGZhaWx1cmUgYXQgdGhlCisgIGdpdmVuIHNvdXJjZSBs
b2NhdGlvbiAtLSB1c2VmdWwgZm9yIHdyaXRpbmcgdGVzdGluZyB1dGlsaXRpZXMuCisqIE5ldyBm
ZWF0dXJlOiB0aGUgdW5pdmVyc2FsIHZhbHVlIHByaW50ZXIgaXMgbW92ZWQgZnJvbSBHb29nbGUg
TW9jaworICB0byBHb29nbGUgVGVzdC4KKyogTmV3IGZlYXR1cmU6IHR5cGUgcGFyYW1ldGVycyBh
bmQgdmFsdWUgcGFyYW1ldGVycyBhcmUgcmVwb3J0ZWQgaW4KKyAgdGhlIFhNTCByZXBvcnQgbm93
LgorKiBBIGd0ZXN0X2Rpc2FibGVfcHRocmVhZHMgQ01ha2Ugb3B0aW9uLgorKiBDb2xvcmVkIG91
dHB1dCB3b3JrcyBpbiBHTlUgU2NyZWVuIHNlc3Npb25zIG5vdy4KKyogUGFyYW1ldGVycyBvZiB2
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBub3cgcHJpbnRlZCBpbiB0aGUKKyAgdGV4dHVh
bCBvdXRwdXQuCisqIEZhaWx1cmVzIGZyb20gYWQgaG9jIHRlc3QgYXNzZXJ0aW9ucyBydW4gYmVm
b3JlIFJVTl9BTExfVEVTVFMoKSBhcmUKKyAgbm93IGNvcnJlY3RseSByZXBvcnRlZC4KKyogQXJn
dW1lbnRzIG9mIEFTU0VSVF9YWSBhbmQgRVhQRUNUX1hZIG5vIGxvbmdlciBuZWVkIHRvIHN1cHBv
cnQgPDwgdG8KKyAgb3N0cmVhbS4KKyogTW9yZSBjb21wbGV0ZSBoYW5kbGluZyBvZiBleGNlcHRp
b25zLgorKiBHVEVTVF9BU1NFUlRfWFkgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBBU1NFUlRfWFkg
aW4gY2FzZSB0aGUgbGF0dGVyCisgIG5hbWUgaXMgYWxyZWFkeSB1c2VkIGJ5IGFub3RoZXIgbGli
cmFyeS4KKyogLS1ndGVzdF9jYXRjaF9leGNlcHRpb25zIGlzIG5vdyB0cnVlIGJ5IGRlZmF1bHQs
IGFsbG93aW5nIGEgdGVzdAorICBwcm9ncmFtIHRvIGNvbnRpbnVlIGFmdGVyIGFuIGV4Y2VwdGlv
biBpcyB0aHJvd24uCisqIFZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdCBmaXh0dXJlcyBjYW4gbm93
IGRlcml2ZSBmcm9tIFRlc3QgYW5kCisgIFdpdGhQYXJhbUludGVyZmFjZTxUPiBzZXBhcmF0ZWx5
LCBlYXNpbmcgY29udmVyc2lvbiBvZiBsZWdhY3kgdGVzdHMuCisqIERlYXRoIHRlc3QgbWVzc2Fn
ZXMgYXJlIGNsZWFybHkgbWFya2VkIHRvIG1ha2UgdGhlbSBtb3JlCisgIGRpc3Rpbmd1aXNoYWJs
ZSBmcm9tIG90aGVyIG1lc3NhZ2VzLgorKiBDb21wYXRpYmlsaXR5IGZpeGVzIGZvciBBbmRyb2lk
LCBHb29nbGUgTmF0aXZlIENsaWVudCwgTWluR1csIEhQIFVYLAorICBQb3dlclBDLCBMdWNpZCBh
dXRvdG9vbHMsIGxpYkNTdGQsIFN1biBDKyssIEJvcmxhbmQgQysrIEJ1aWxkZXIgKENvZGUgR2Vh
ciksCisgIElCTSBYTCBDKysgKFZpc3VhbCBBZ2UgQysrKSwgYW5kIEMrKzB4LgorKiBCdWcgZml4
ZXMgYW5kIGltcGxlbWVudGF0aW9uIGNsZWFuLXVwcy4KKyogUG90ZW50aWFsbHkgaW5jb21wYXRp
YmxlIGNoYW5nZXM6IGRpc2FibGVzIHRoZSBoYXJtZnVsICdtYWtlIGluc3RhbGwnCisgIGNvbW1h
bmQgaW4gYXV0b3Rvb2xzLgorCiBDaGFuZ2VzIGZvciAxLjUuMDoKIAogICogTmV3IGZlYXR1cmU6
IGFzc2VydGlvbnMgY2FuIGJlIHNhZmVseSBjYWxsZWQgaW4gbXVsdGlwbGUgdGhyZWFkcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9DTWFrZUxpc3RzLnR4dAppbmRleCBkZDEwMDVmZTZlNTdjNTIwYmU5
N2Y0ZjgwNTJiNDI2ZjBmZTA1NjhmLi5hYTNhM2VlZjI0NTgxNmMyZGE3ODhjNTMyZGQ3ZDFjYjA5
NDRlZTU4IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DTWFrZUxpc3RzLnR4dApAQCAtMTcsNiAr
MTcsNyBAQCBzZXQoR1RFU1RfU09VUkNFUwogICAgICR7R1RFU1RfRElSfS9zcmMvZ3Rlc3QtZmls
ZXBhdGguY2MKICAgICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0X21haW4uY2MKICAgICAke0dURVNU
X0RJUn0vc3JjL2d0ZXN0LXBvcnQuY2MKKyAgICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LXByaW50
ZXJzLmNjCiAgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC10ZXN0LXBhcnQuY2MKICAgICAke0dU
RVNUX0RJUn0vc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L0NPTlRSSUJVVE9SUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NP
TlRSSUJVVE9SUwppbmRleCAwOTM0YWUxMzA1OWFmY2RjMDVkZjgxMjQ3ZTYxYjlhODRhMjMxMmUy
Li5mZWFlMmZjMDQ0MTBkYzMwOGU0NjRhYTI1NmZlMWYyZDMxZWRjOTg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DT05UUklCVVRPUlMKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvQ09OVFJJQlVUT1JTCkBAIC0yMSw2ICsyMSw3IEBAIE1hbnVlbCBLbGltZWsgPGts
aW1la0Bnb29nbGUuY29tPgogTWFya3VzIEhldWxlIDxtYXJrdXMuaGV1bGVAZ21haWwuY29tPgog
TWlrYSBSYWVudG8gPG1pa2llQGlraS5maT4KIE1pa2zDs3MgRmF6ZWthcyA8bWZhemVrYXNAc3pl
bWFmb3IuY29tPgorUGFzaSBWYWxtaW5lbiA8cGFzaS52YWxtaW5lbkBnbWFpbC5jb20+CiBQYXRy
aWNrIEhhbm5hIDxwaGFubmFAZ29vZ2xlLmNvbT4KIFBhdHJpY2sgUmlsZXkgPHBmckBnb29nbGUu
Y29tPgogUGV0ZXIgS2FtaW5za2kgPHBpb3Rya0Bnb29nbGUuY29tPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09QWUlORyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NP
UFlJTkcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NDFhMTFmOGNlOTQzODkxNjBi
NDU4OTI3YTI5YmEyMTc1NDI4MTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09QWUlORworKysgL2Rldi9udWxs
CkBAIC0xLDI4ICswLDAgQEAKLUNvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6Ci0KLSAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci1ub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi1jb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi1pbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi1kaXN0cmlidXRpb24uCi0gICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi1j
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLU9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi1EQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L0xJQ0VOU0UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9MSUNF
TlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE5NDFhMTFmOGNlOTQzODkxNjBiNDU4OTI3YTI5YmEyMTc1NDI4MTgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9MSUNFTlNFCkBAIC0w
LDAgKzEsMjggQEAKK0NvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCittZXQ6CisKKyAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Citu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCitjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCitpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCitkaXN0cmlidXRpb24uCisgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCitjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQordGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
K09XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCitEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKK1RIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L01ha2VmaWxlLmFtIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvTWFrZWZp
bGUuYW0KaW5kZXggOGQ3NWUzMmNjMjBjZGU4M2MxNzRmNGUwNzhlMjk5M2E5MzJhOWQxOC4uYjQ0
Yzg0MTZiYTA4MGMyZjAxNmYxNjZiMThiNDJjMGY3M2VjZTdiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvTWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvTWFrZWZpbGUuYW0KQEAgLTEsMTMgKzEsMTYgQEAKICMgQXV0b21ha2UgZmlsZQogCitBQ0xP
Q0FMX0FNRkxBR1MgPSAtSSBtNAorCiAjIE5vbnN0YW5kYXJkIHBhY2thZ2UgZmlsZXMgZm9yIGRp
c3RyaWJ1dGlvbgogRVhUUkFfRElTVCA9IFwKICAgQ0hBTkdFUyBcCiAgIENPTlRSSUJVVE9SUyBc
CisgIExJQ0VOU0UgXAogICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC5wdW1wIFwK
KyAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oLnB1
bXAgXAogICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcCBcCiAgIGlu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgucHVtcCBcCi0gIGluY2x1ZGUv
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wIFwKICAgbWFr
ZS9NYWtlZmlsZSBcCiAgIHNjcmlwdHMvZnVzZV9ndGVzdF9maWxlcy5weSBcCiAgIHNjcmlwdHMv
Z2VuX2d0ZXN0X3ByZWRfaW1wbC5weSBcCkBAIC0xNywxOSArMjAsMjEgQEAgRVhUUkFfRElTVCA9
IFwKICMgZ3Rlc3Qgc291cmNlIGZpbGVzIHRoYXQgd2UgZG9uJ3QgY29tcGlsZSBkaXJlY3RseS4g
IFRoZXkgYXJlCiAjICNpbmNsdWRlZCBieSBndGVzdC1hbGwuY2MuCiBHVEVTVF9TUkMgPSBcCi0g
IHNyYy9ndGVzdC5jYyBcCiAgIHNyYy9ndGVzdC1kZWF0aC10ZXN0LmNjIFwKICAgc3JjL2d0ZXN0
LWZpbGVwYXRoLmNjIFwKICAgc3JjL2d0ZXN0LWludGVybmFsLWlubC5oIFwKICAgc3JjL2d0ZXN0
LXBvcnQuY2MgXAorICBzcmMvZ3Rlc3QtcHJpbnRlcnMuY2MgXAogICBzcmMvZ3Rlc3QtdGVzdC1w
YXJ0LmNjIFwKLSAgc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKKyAgc3JjL2d0ZXN0LXR5cGVkLXRl
c3QuY2MgXAorICBzcmMvZ3Rlc3QuY2MKIAogRVhUUkFfRElTVCArPSAkKEdURVNUX1NSQykKIAog
IyBTYW1wbGUgZmlsZXMgdGhhdCB3ZSBkb24ndCBjb21waWxlLgogRVhUUkFfRElTVCArPSBcCiAg
IHNhbXBsZXMvcHJpbWVfdGFibGVzLmggXAorICBzYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QuY2Mg
XAogICBzYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2MgXAogICBzYW1wbGVzL3NhbXBsZTNfdW5p
dHRlc3QuY2MgXAogICBzYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QuY2MgXApAQCAtNDEsODggKzQ2
LDkxIEBAIEVYVFJBX0RJU1QgKz0gXAogCiAjIEMrKyB0ZXN0IGZpbGVzIHRoYXQgd2UgZG9uJ3Qg
Y29tcGlsZSBkaXJlY3RseS4KIEVYVFJBX0RJU1QgKz0gXAorICB0ZXN0L2d0ZXN0LWRlYXRoLXRl
c3RfZXhfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3QtZGVhdGgtdGVzdF90ZXN0LmNjIFwKLSAgdGVz
dC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjIFwKICAgdGVzdC9ndGVzdC1maWxlcGF0aF90ZXN0
LmNjIFwKICAgdGVzdC9ndGVzdC1saW5rZWRfcHRyX3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0LWxp
c3RlbmVyX3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0LW1lc3NhZ2VfdGVzdC5jYyBcCi0gIHRlc3Qv
Z3Rlc3Rfbm9fdGVzdF91bml0dGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3Qtb3B0aW9uc190ZXN0LmNj
IFwKLSAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXBhcmFt
LXRlc3QyX3Rlc3QuY2MgXAorICB0ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdDItdGVzdC5jYyBc
CisgIHRlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0Mi10ZXN0LmNjIFwKKyAgdGVzdC9nb29nbGV0
ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRl
c3QuY2MgXAogICB0ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oIFwKICAgdGVzdC9ndGVzdC1w
b3J0X3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0X3ByZW1hdHVyZV9leGl0X3Rlc3QuY2MgXAorICB0
ZXN0L2d0ZXN0LXByaW50ZXJzX3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0
LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LXR1cGxlLXRlc3QuY2MgXAorICB0ZXN0L2d0ZXN0LXR5
cGVkLXRlc3QyX3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYyBcCisg
IHRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmggXAorICB0ZXN0L2d0ZXN0LXVuaXR0ZXN0LWFw
aV90ZXN0LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3Rf
LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdF8uY2MgXAorICB0
ZXN0L2dvb2dsZXRlc3QtY29sb3ItdGVzdF8uY2MgXAorICB0ZXN0L2dvb2dsZXRlc3QtZW52LXZh
ci10ZXN0Xy5jYyBcCisgIHRlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVzdC5jYyBcCisgIHRlc3Qv
Z29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3RfLmNjIFwKKyAgdGVzdC9ndGVzdF9oZWxwX3Rlc3Rf
LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfLmNjIFwKKyAgdGVz
dC9ndGVzdF9tYWluX3VuaXR0ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdF9ub190ZXN0X3VuaXR0ZXN0
LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYyBcCiAgIHRlc3QvZ3Rlc3Rf
cHJlZF9pbXBsX3VuaXR0ZXN0LmNjIFwKICAgdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2MgXAotICB0
ZXN0L3Byb2R1Y3Rpb24uY2MgXAotICB0ZXN0L3Byb2R1Y3Rpb24uaCBcCiAgIHRlc3QvZ3Rlc3Rf
cmVwZWF0X3Rlc3QuY2MgXAorICB0ZXN0L2dvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0Xy5jYyBcCiAg
IHRlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3Rfc3RyZXNzX3Rl
c3QuY2MgXAotICB0ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0LmNjIFwKICAgdGVzdC9ndGVzdF90
aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVz
dC5jYyBcCi0gIHRlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3Qt
dHlwZWQtdGVzdF90ZXN0LmggXAorICB0ZXN0L2dvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10
ZXN0Xy5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3RfLmNjIFwKICAg
dGVzdC9ndGVzdF91bml0dGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3Qu
Y2MgXAotICB0ZXN0L2d0ZXN0LWxpc3RlbmVyX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0X21haW5f
dW5pdHRlc3QuY2MgXAogICB0ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC10
dXBsZV90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MgXAotICB0ZXN0
L2d0ZXN0LXBhcmFtLXRlc3QyX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1
cmVfdW5pdHRlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9jb2xvcl90ZXN0Xy5jYyBcCi0gIHRlc3Qv
Z3Rlc3RfZW52X3Zhcl90ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0Xy5j
YyBcCi0gIHRlc3QvZ3Rlc3RfaGVscF90ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3RfbGlzdF90ZXN0
c191bml0dGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X291dHB1dF90ZXN0Xy5jYyBcCi0gIHRlc3Qv
Z3Rlc3Rfc2h1ZmZsZV90ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90
ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0Xy5jYyBcCiAgIHRlc3Qv
Z3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfLmNjIFwKICAgdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTJf
dGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjCisgIHRlc3Qv
Z3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MgXAorICB0ZXN0L3Byb2R1Y3Rpb24uY2MgXAor
ICB0ZXN0L3Byb2R1Y3Rpb24uaAogCiAjIFB5dGhvbiB0ZXN0cyB0aGF0IHdlIGRvbid0IHJ1bi4K
IEVYVFJBX0RJU1QgKz0gXAotICB0ZXN0L2d0ZXN0X3Rlc3RfdXRpbHMucHkgXAotICB0ZXN0L2d0
ZXN0X3htbF90ZXN0X3V0aWxzLnB5IFwKLSAgdGVzdC9ndGVzdF9icmVha19vbl9mYWlsdXJlX3Vu
aXR0ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF9l
bnZfdmFyX3Rlc3QucHkgXAotICB0ZXN0L2d0ZXN0X2ZpbHRlcl91bml0dGVzdC5weSBcCisgIHRl
c3QvZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0LnB5IFwKKyAgdGVzdC9nb29n
bGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdC5weSBcCisgIHRlc3QvZ29vZ2xldGVzdC1jb2xv
ci10ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LWVudi12YXItdGVzdC5weSBcCisgIHRlc3Qv
Z29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3QucHkgXAogICB0ZXN0L2d0ZXN0X2hlbHBfdGVzdC5w
eSBcCi0gIHRlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3Rf
b3V0cHV0X3Rlc3QucHkgXAotICB0ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0
IFwKLSAgdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fd2luLnR4dCBcCi0gIHRlc3QvZ3Rl
c3Rfc2h1ZmZsZV90ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3Qu
cHkgXAotICB0ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5weSBcCisgIHRlc3QvZ29vZ2xl
dGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10
ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0X2dvbGRlbl9saW4udHh0IFwK
KyAgdGVzdC9nb29nbGV0ZXN0LXNodWZmbGUtdGVzdC5weSBcCisgIHRlc3QvZ3Rlc3RfdGVzdF91
dGlscy5weSBcCisgIHRlc3QvZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3QucHkgXAor
ICB0ZXN0L2dvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0LnB5IFwKICAgdGVzdC9ndGVzdF94
bWxfb3V0ZmlsZXNfdGVzdC5weSBcCiAgIHRlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdC5w
eSBcCi0gIHRlc3QvcnVuX3Rlc3RzX3V0aWwucHkgXAotICB0ZXN0L3J1bl90ZXN0c191dGlsX3Rl
c3QucHkKKyAgdGVzdC9ndGVzdF94bWxfdGVzdF91dGlscy5weQogCiAjIENNYWtlIHNjcmlwdAog
RVhUUkFfRElTVCArPSBcCi0gIENNYWtlTGlzdHMudHh0CisgIENNYWtlTGlzdHMudHh0IFwKKyAg
Y21ha2UvaW50ZXJuYWxfdXRpbHMuY21ha2UKIAogIyBNU1ZDIHByb2plY3QgZmlsZXMKIEVYVFJB
X0RJU1QgKz0gXAotICBtc3ZjL2d0ZXN0LW1kLnNsbiBcCi0gIG1zdmMvZ3Rlc3Quc2xuIFwKLSAg
bXN2Yy9ndGVzdC1tZC52Y3Byb2ogXAotICBtc3ZjL2d0ZXN0LnZjcHJvaiBcCi0gIG1zdmMvZ3Rl
c3RfbWFpbi1tZC52Y3Byb2ogXAotICBtc3ZjL2d0ZXN0X21haW4udmNwcm9qIFwKLSAgbXN2Yy9n
dGVzdF9wcm9kX3Rlc3QtbWQudmNwcm9qIFwKLSAgbXN2Yy9ndGVzdF9wcm9kX3Rlc3QudmNwcm9q
IFwKLSAgbXN2Yy9ndGVzdF91bml0dGVzdC1tZC52Y3Byb2ogXAotICBtc3ZjL2d0ZXN0X3VuaXR0
ZXN0LnZjcHJvagorICBtc3ZjLzIwMTAvZ3Rlc3QtbWQuc2xuIFwKKyAgbXN2Yy8yMDEwL2d0ZXN0
LW1kLnZjeHByb2ogXAorICBtc3ZjLzIwMTAvZ3Rlc3Quc2xuIFwKKyAgbXN2Yy8yMDEwL2d0ZXN0
LnZjeHByb2ogXAorICBtc3ZjLzIwMTAvZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qIFwKKyAgbXN2Yy8y
MDEwL2d0ZXN0X21haW4udmN4cHJvaiBcCisgIG1zdmMvMjAxMC9ndGVzdF9wcm9kX3Rlc3QtbWQu
dmN4cHJvaiBcCisgIG1zdmMvMjAxMC9ndGVzdF9wcm9kX3Rlc3QudmN4cHJvaiBcCisgIG1zdmMv
MjAxMC9ndGVzdF91bml0dGVzdC1tZC52Y3hwcm9qIFwKKyAgbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0
ZXN0LnZjeHByb2oKIAogIyB4Y29kZSBwcm9qZWN0IGZpbGVzCiBFWFRSQV9ESVNUICs9IFwKQEAg
LTEzMywzMSArMTQxLDI3IEBAIEVYVFJBX0RJU1QgKz0gXAogICB4Y29kZS9Db25maWcvU3RhdGlj
TGlicmFyeVRhcmdldC54Y2NvbmZpZyBcCiAgIHhjb2RlL0NvbmZpZy9UZXN0VGFyZ2V0LnhjY29u
ZmlnIFwKICAgeGNvZGUvUmVzb3VyY2VzL0luZm8ucGxpc3QgXAotICB4Y29kZS9TY3JpcHRzL3Zl
cnNpb25nZW5lcmF0ZS5weSBcCiAgIHhjb2RlL1NjcmlwdHMvcnVudGVzdHMuc2ggXAorICB4Y29k
ZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weSBcCiAgIHhjb2RlL2d0ZXN0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKIAogIyB4Y29kZSBzYW1wbGUgZmlsZXMKIEVYVFJBX0RJU1QgKz0gXAog
ICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9JbmZvLnBsaXN0IFwKKyAgeGNvZGUvU2Ft
cGxlcy9GcmFtZXdvcmtTYW1wbGUvV2lkZ2V0RnJhbWV3b3JrLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogXAogICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9ydW50ZXN0cy5zaCBcCi0g
IHhjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjIFwKICAgeGNvZGUv
U2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0LmNjIFwKICAgeGNvZGUvU2FtcGxlcy9GcmFt
ZXdvcmtTYW1wbGUvd2lkZ2V0LmggXAotICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9X
aWRnZXRGcmFtZXdvcmsueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorICB4Y29kZS9TYW1wbGVz
L0ZyYW1ld29ya1NhbXBsZS93aWRnZXRfdGVzdC5jYwogCiAjIEMrK0J1aWxkZXIgcHJvamVjdCBm
aWxlcwogRVhUUkFfRElTVCArPSBcCisgIGNvZGVnZWFyL2d0ZXN0LmNicHJvaiBcCisgIGNvZGVn
ZWFyL2d0ZXN0Lmdyb3VwcHJvaiBcCiAgIGNvZGVnZWFyL2d0ZXN0X2FsbC5jYyBcCiAgIGNvZGVn
ZWFyL2d0ZXN0X2xpbmsuY2MgXAotICBjb2RlZ2Vhci9ndGVzdC5jYnByb2ogXAogICBjb2RlZ2Vh
ci9ndGVzdF9tYWluLmNicHJvaiBcCi0gIGNvZGVnZWFyL2d0ZXN0X3VuaXR0ZXN0LmNicHJvaiBc
Ci0gIGNvZGVnZWFyL2d0ZXN0Lmdyb3VwcHJvagotCi0jIFNjcmlwdHMgYW5kIHV0aWxpdGllcwot
YmluX1NDUklQVFMgPSBzY3JpcHRzL2d0ZXN0LWNvbmZpZwotQ0xFQU5GSUxFUyA9ICQoYmluX1ND
UklQVFMpCisgIGNvZGVnZWFyL2d0ZXN0X3VuaXR0ZXN0LmNicHJvagogCiAjIERpc3RyaWJ1dGUg
YW5kIGluc3RhbGwgTTQgbWFjcm8KIG00ZGF0YWRpciA9ICQoZGF0YWRpcikvYWNsb2NhbApAQCAt
MTgxLDE1ICsxODUsMTcgQEAgbGliX0xUTElCUkFSSUVTID0gbGliL2xpYmd0ZXN0LmxhIGxpYi9s
aWJndGVzdF9tYWluLmxhCiAKIGxpYl9saWJndGVzdF9sYV9TT1VSQ0VTID0gc3JjL2d0ZXN0LWFs
bC5jYwogCi1wa2dpbmNsdWRlX0hFQURFUlMgPSBpbmNsdWRlL2d0ZXN0L2d0ZXN0LmggXAotICAg
ICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmggXAotICAg
ICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmggXAotICAgICAg
ICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmggXAotICAgICAg
ICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVzdF9wcmVkX2ltcGwuaCBcCi0gICAgICAg
ICAgICAgICAgICAgICBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaCBcCi0gICAgICAgICAgICAg
ICAgICAgICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXNwaS5oIFwKLSAgICAgICAgICAgICAgICAgICAg
IGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmggXAotICAgICAgICAgICAgICAgICAgICAg
aW5jbHVkZS9ndGVzdC9ndGVzdC10eXBlZC10ZXN0LmgKK3BrZ2luY2x1ZGVfSEVBREVSUyA9IFwK
KyAgaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmggXAorICBpbmNsdWRlL2d0ZXN0L2d0
ZXN0LW1lc3NhZ2UuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oIFwKKyAg
aW5jbHVkZS9ndGVzdC9ndGVzdC1wcmludGVycy5oIFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC1z
cGkuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmggXAorICBpbmNsdWRlL2d0
ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCBcCisgIGlu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3By
b2QuaAogCiBwa2dpbmNsdWRlX2ludGVybmFsZGlyID0gJChwa2dpbmNsdWRlZGlyKS9pbnRlcm5h
bAogcGtnaW5jbHVkZV9pbnRlcm5hbF9IRUFERVJTID0gXApAQCAtMjAwLDYxICsyMDYsOTcgQEAg
cGtnaW5jbHVkZV9pbnRlcm5hbF9IRUFERVJTID0gXAogICBpbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmggXAogICBpbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXBhcmFtLXV0aWwuaCBcCiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9y
dC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LWFyY2guaCBcCiAgIGlu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmggXAogICBpbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2d0ZXN0LXR1cGxlLmggXAotICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5
cGUtdXRpbC5oCisgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmggXAor
ICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oIFwKKyAgaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9jdXN0b20vZ3Rlc3QtcHJpbnRlcnMuaAogCiBsaWJfbGliZ3Rlc3RfbWFpbl9sYV9TT1VSQ0VT
ID0gc3JjL2d0ZXN0X21haW4uY2MKIGxpYl9saWJndGVzdF9tYWluX2xhX0xJQkFERCA9IGxpYi9s
aWJndGVzdC5sYQogCi0jIEJ1bGlkIHJ1bGVzIGZvciBzYW1wbGVzIGFuZCB0ZXN0cy4gQXV0b21h
a2UncyBuYW1pbmcgZm9yIHNvbWUgb2YKKyMgQnVpbGQgcnVsZXMgZm9yIHNhbXBsZXMgYW5kIHRl
c3RzLiBBdXRvbWFrZSdzIG5hbWluZyBmb3Igc29tZSBvZgogIyB0aGVzZSB2YXJpYWJsZXMgaXNu
J3QgdGVycmlibHkgb2J2aW91cywgc28gdGhpcyBpcyBhIGJyaWVmCiAjIHJlZmVyZW5jZToKICMK
ICMgVEVTVFMgLS0gUHJvZ3JhbXMgcnVuIGF1dG9tYXRpY2FsbHkgYnkgIm1ha2UgY2hlY2siCiAj
IGNoZWNrX1BST0dSQU1TIC0tIFByb2dyYW1zIGJ1aWx0IGJ5ICJtYWtlIGNoZWNrIiBidXQgbm90
IG5lY2Vzc2FyaWx5IHJ1bgogCi1ub2luc3RfTFRMSUJSQVJJRVMgPSBzYW1wbGVzL2xpYnNhbXBs
ZXMubGEKLQotc2FtcGxlc19saWJzYW1wbGVzX2xhX1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTEu
Y2MgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVzL3NhbXBsZTEuaCBc
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvc2FtcGxlMi5jYyBcCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvc2FtcGxlMi5oIFwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlcy9zYW1wbGUzLWlubC5oIFwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlcy9zYW1wbGU0LmNjIFwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlcy9zYW1wbGU0LmgKLQogVEVTVFM9CiBURVNU
U19FTlZJUk9OTUVOVCA9IEdURVNUX1NPVVJDRV9ESVI9IiQoc3JjZGlyKS90ZXN0IiBcCiAgICAg
ICAgICAgICAgICAgICAgIEdURVNUX0JVSUxEX0RJUj0iJCh0b3BfYnVpbGRkaXIpL3Rlc3QiCiBj
aGVja19QUk9HUkFNUz0KIAogIyBBIHNpbXBsZSBzYW1wbGUgb24gdXNpbmcgZ3Rlc3QuCi1URVNU
UyArPSBzYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QKLWNoZWNrX1BST0dSQU1TICs9IHNhbXBsZXMv
c2FtcGxlMV91bml0dGVzdAotc2FtcGxlc19zYW1wbGUxX3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1w
bGVzL3NhbXBsZTFfdW5pdHRlc3QuY2MKK1RFU1RTICs9IHNhbXBsZXMvc2FtcGxlMV91bml0dGVz
dCBcCisgICAgc2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTNf
dW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlNF91bml0dGVzdCBcCisgICAgc2FtcGxlcy9z
YW1wbGU1X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QgXAorICAgIHNh
bXBsZXMvc2FtcGxlN191bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0IFwK
KyAgICBzYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlMTBfdW5p
dHRlc3QKK2NoZWNrX1BST0dSQU1TICs9IHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdCBcCisgICAg
c2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3Qg
XAorICAgIHNhbXBsZXMvc2FtcGxlNF91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGU1X3Vu
aXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2Ft
cGxlN191bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0IFwKKyAgICBzYW1w
bGVzL3NhbXBsZTlfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QKKwor
c2FtcGxlc19zYW1wbGUxX3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTFfdW5pdHRl
c3QuY2Mgc2FtcGxlcy9zYW1wbGUxLmNjCiBzYW1wbGVzX3NhbXBsZTFfdW5pdHRlc3RfTERBREQg
PSBsaWIvbGliZ3Rlc3RfbWFpbi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzYW1wbGVzL2xpYnNhbXBsZXMubGEKLQotIyBBbm90aGVyIHNhbXBsZS4gIEl0IGFsc28gdmVy
aWZpZXMgdGhhdCBsaWJndGVzdCB3b3Jrcy4KLVRFU1RTICs9IHNhbXBsZXMvc2FtcGxlMTBfdW5p
dHRlc3QKLWNoZWNrX1BST0dSQU1TICs9IHNhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQorc2FtcGxlc19zYW1w
bGUyX3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2Mgc2FtcGxl
cy9zYW1wbGUyLmNjCitzYW1wbGVzX3NhbXBsZTJfdW5pdHRlc3RfTERBREQgPSBsaWIvbGliZ3Rl
c3RfbWFpbi5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWIvbGliZ3Rl
c3QubGEKK3NhbXBsZXNfc2FtcGxlM191bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGUz
X3VuaXR0ZXN0LmNjCitzYW1wbGVzX3NhbXBsZTNfdW5pdHRlc3RfTERBREQgPSBsaWIvbGliZ3Rl
c3RfbWFpbi5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWIvbGliZ3Rl
c3QubGEKK3NhbXBsZXNfc2FtcGxlNF91bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGU0
X3VuaXR0ZXN0LmNjIHNhbXBsZXMvc2FtcGxlNC5jYworc2FtcGxlc19zYW1wbGU0X3VuaXR0ZXN0
X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBsZTVfdW5pdHRlc3RfU09VUkNF
UyA9IHNhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYyBzYW1wbGVzL3NhbXBsZTEuY2MKK3NhbXBs
ZXNfc2FtcGxlNV91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWluLmxhIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQorc2FtcGxlc19zYW1w
bGU2X3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2MKK3NhbXBs
ZXNfc2FtcGxlNl91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWluLmxhIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQorc2FtcGxlc19zYW1w
bGU3X3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MKK3NhbXBs
ZXNfc2FtcGxlN191bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWluLmxhIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQorc2FtcGxlc19zYW1w
bGU4X3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2MKK3NhbXBs
ZXNfc2FtcGxlOF91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWluLmxhIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQorCisjIEFsc28gdmVy
aWZ5IHRoYXQgbGliZ3Rlc3Qgd29ya3MgYnkgaXRzZWxmLgorc2FtcGxlc19zYW1wbGU5X3VuaXR0
ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MKK3NhbXBsZXNfc2FtcGxl
OV91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdC5sYQogc2FtcGxlc19zYW1wbGUxMF91bml0
dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYwogc2FtcGxlc19zYW1w
bGUxMF91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdC5sYQogCiAjIFRoaXMgdGVzdHMgbW9z
dCBjb25zdHJ1Y3RzIG9mIGd0ZXN0IGFuZCB2ZXJpZmllcyB0aGF0IGxpYmd0ZXN0X21haW4KLSMg
d29ya3MuCisjIGFuZCBsaWJndGVzdCB3b3JrLgogVEVTVFMgKz0gdGVzdC9ndGVzdF9hbGxfdGVz
dAogY2hlY2tfUFJPR1JBTVMgKz0gdGVzdC9ndGVzdF9hbGxfdGVzdAogdGVzdF9ndGVzdF9hbGxf
dGVzdF9TT1VSQ0VTID0gdGVzdC9ndGVzdF9hbGxfdGVzdC5jYwotdGVzdF9ndGVzdF9hbGxfdGVz
dF9MREFERCA9IGxpYi9saWJndGVzdF9tYWluLmxhCit0ZXN0X2d0ZXN0X2FsbF90ZXN0X0xEQURE
ID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxp
Yi9saWJndGVzdC5sYQogCiAjIFRlc3RzIHRoYXQgZnVzZWQgZ3Rlc3QgZmlsZXMgY29tcGlsZSBh
bmQgd29yay4KIEZVU0VEX0dURVNUX1NSQyA9IFwKICAgZnVzZWQtc3JjL2d0ZXN0L2d0ZXN0LWFs
bC5jYyBcCi0gIGZ1c2VkLXNyYy9ndGVzdC9ndGVzdF9tYWluLmNjIFwKLSAgZnVzZWQtc3JjL2d0
ZXN0L2d0ZXN0LmgKKyAgZnVzZWQtc3JjL2d0ZXN0L2d0ZXN0LmggXAorICBmdXNlZC1zcmMvZ3Rl
c3QvZ3Rlc3RfbWFpbi5jYwogCitpZiBIQVZFX1BZVEhPTgogVEVTVFMgKz0gdGVzdC9mdXNlZF9n
dGVzdF90ZXN0CiBjaGVja19QUk9HUkFNUyArPSB0ZXN0L2Z1c2VkX2d0ZXN0X3Rlc3QKIHRlc3Rf
ZnVzZWRfZ3Rlc3RfdGVzdF9TT1VSQ0VTID0gJChGVVNFRF9HVEVTVF9TUkMpIFwKQEAgLTI3OCw3
ICszMjAsMjAgQEAgZnVzZWQtZ3Rlc3Q6ICQocGtnaW5jbHVkZV9IRUFERVJTKSAkKHBrZ2luY2x1
ZGVfaW50ZXJuYWxfSEVBREVSUykgXAogCiBtYWludGFpbmVyLWNsZWFuLWxvY2FsOgogCXJtIC1y
ZiAiJChzcmNkaXIpL2Z1c2VkLXNyYyIKK2VuZGlmCiAKICMgRGVhdGggdGVzdHMgbWF5IHByb2R1
Y2UgY29yZSBkdW1wcyBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LiBJbiBjYXNlCiAjIHRoaXMgaGFw
cGVucywgY2xlYW4gdGhlbSB0byBrZWVwIGRpc3RjbGVhbmNoZWNrIGhhcHB5LgotQ0xFQU5GSUxF
UyArPSBjb3JlCitDTEVBTkZJTEVTID0gY29yZQorCisjIERpc2FibGVzICdtYWtlIGluc3RhbGwn
IGFzIGluc3RhbGxpbmcgYSBjb21waWxlZCB2ZXJzaW9uIG9mIEdvb2dsZQorIyBUZXN0IGNhbiBs
ZWFkIHRvIHVuZGVmaW5lZCBiZWhhdmlvciBkdWUgdG8gdmlvbGF0aW9uIG9mIHRoZQorIyBPbmUt
RGVmaW5pdGlvbiBSdWxlLgorCitpbnN0YWxsLWV4ZWMtbG9jYWw6CisJZWNobyAiJ21ha2UgaW5z
dGFsbCcgaXMgZGFuZ2Vyb3VzIGFuZCBub3Qgc3VwcG9ydGVkLiBJbnN0ZWFkLCBzZWUgUkVBRE1F
IGZvciBob3cgdG8gaW50ZWdyYXRlIEdvb2dsZSBUZXN0IGludG8geW91ciBidWlsZCBzeXN0ZW0u
IgorCWZhbHNlCisKK2luc3RhbGwtZGF0YS1sb2NhbDoKKwllY2hvICInbWFrZSBpbnN0YWxsJyBp
cyBkYW5nZXJvdXMgYW5kIG5vdCBzdXBwb3J0ZWQuIEluc3RlYWQsIHNlZSBSRUFETUUgZm9yIGhv
dyB0byBpbnRlZ3JhdGUgR29vZ2xlIFRlc3QgaW50byB5b3VyIGJ1aWxkIHN5c3RlbS4iCisJZmFs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L1JFQURNRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM2
MTE5MDAyMDk5MTUwZDcxNTc0OWExNmUwM2MyZjU3MzY4NmJiNS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9SRUFE
TUUKKysrIC9kZXYvbnVsbApAQCAtMSw0MTcgKzAsMCBAQAotR29vZ2xlIEMrKyBUZXN0aW5nIEZy
YW1ld29yawotPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1odHRwOi8vY29kZS5nb29n
bGUuY29tL3AvZ29vZ2xldGVzdC8KLQotT3ZlcnZpZXcKLS0tLS0tLS0tCi0KLUdvb2dsZSdzIGZy
YW1ld29yayBmb3Igd3JpdGluZyBDKysgdGVzdHMgb24gYSB2YXJpZXR5IG9mIHBsYXRmb3Jtcwot
KExpbnV4LCBNYWMgT1MgWCwgV2luZG93cywgV2luZG93cyBDRSwgU3ltYmlhbiwgZXRjKS4gIEJh
c2VkIG9uIHRoZQoteFVuaXQgYXJjaGl0ZWN0dXJlLiAgU3VwcG9ydHMgYXV0b21hdGljIHRlc3Qg
ZGlzY292ZXJ5LCBhIHJpY2ggc2V0IG9mCi1hc3NlcnRpb25zLCB1c2VyLWRlZmluZWQgYXNzZXJ0
aW9ucywgZGVhdGggdGVzdHMsIGZhdGFsIGFuZCBub24tZmF0YWwKLWZhaWx1cmVzLCB2YXJpb3Vz
IG9wdGlvbnMgZm9yIHJ1bm5pbmcgdGhlIHRlc3RzLCBhbmQgWE1MIHRlc3QgcmVwb3J0Ci1nZW5l
cmF0aW9uLgotCi1QbGVhc2Ugc2VlIHRoZSBwcm9qZWN0IHBhZ2UgYWJvdmUgZm9yIG1vcmUgaW5m
b3JtYXRpb24gYXMgd2VsbCBhcyB0aGUKLW1haWxpbmcgbGlzdCBmb3IgcXVlc3Rpb25zLCBkaXNj
dXNzaW9ucywgYW5kIGRldmVsb3BtZW50LiAgVGhlcmUgaXMKLWFsc28gYW4gSVJDIGNoYW5uZWwg
b24gT0ZUQyAoaXJjLm9mdGMubmV0KSAjZ3Rlc3QgYXZhaWxhYmxlLiAgUGxlYXNlCi1qb2luIHVz
IQotCi1SZXF1aXJlbWVudHMgZm9yIEVuZCBVc2VycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLQotR29vZ2xlIFRlc3QgaXMgZGVzaWduZWQgdG8gaGF2ZSBmYWlybHkgbWluaW1hbCByZXF1
aXJlbWVudHMgdG8gYnVpbGQKLWFuZCB1c2Ugd2l0aCB5b3VyIHByb2plY3RzLCBidXQgdGhlcmUg
YXJlIHNvbWUuICBDdXJyZW50bHksIHdlIHN1cHBvcnQKLUxpbnV4LCBXaW5kb3dzLCBNYWMgT1Mg
WCwgYW5kIEN5Z3dpbi4gIFdlIHdpbGwgYWxzbyBtYWtlIG91ciBiZXN0Ci1lZmZvcnQgdG8gc3Vw
cG9ydCBvdGhlciBwbGF0Zm9ybXMgKGUuZy4gU29sYXJpcywgQUlYLCBhbmQgei9PUykuCi1Ib3dl
dmVyLCBzaW5jZSBjb3JlIG1lbWJlcnMgb2YgdGhlIEdvb2dsZSBUZXN0IHByb2plY3QgaGF2ZSBu
byBhY2Nlc3MKLXRvIHRoZXNlIHBsYXRmb3JtcywgR29vZ2xlIFRlc3QgbWF5IGhhdmUgb3V0c3Rh
bmRpbmcgaXNzdWVzIHRoZXJlLiAgSWYKLXlvdSBub3RpY2UgYW55IHByb2JsZW1zIG9uIHlvdXIg
cGxhdGZvcm0sIHBsZWFzZSBub3RpZnkKLWdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBz
LmNvbS4gIFBhdGNoZXMgZm9yIGZpeGluZyB0aGVtIGFyZQotZXZlbiBtb3JlIHdlbGNvbWUhCi0K
LSMjIyBMaW51eCBSZXF1aXJlbWVudHMgIyMjCi0KLVRoZXNlIGFyZSB0aGUgYmFzZSByZXF1aXJl
bWVudHMgdG8gYnVpbGQgYW5kIHVzZSBHb29nbGUgVGVzdCBmcm9tIGEgc291cmNlCi1wYWNrYWdl
IChhcyBkZXNjcmliZWQgYmVsb3cpOgotICAqIEdOVS1jb21wYXRpYmxlIE1ha2Ugb3IgZ21ha2UK
LSAgKiBQT1NJWC1zdGFuZGFyZCBzaGVsbAotICAqIFBPU0lYKC0yKSBSZWd1bGFyIEV4cHJlc3Np
b25zIChyZWdleC5oKQotICAqIEEgQysrOTgtc3RhbmRhcmQtY29tcGxpYW50IGNvbXBpbGVyCi0K
LSMjIyBXaW5kb3dzIFJlcXVpcmVtZW50cyAjIyMKLQotICAqIE1pY3Jvc29mdCBWaXN1YWwgQysr
IDcuMSBvciBuZXdlcgotCi0jIyMgQ3lnd2luIFJlcXVpcmVtZW50cyAjIyMKLQotICAqIEN5Z3dp
biAxLjUuMjUtMTQgb3IgbmV3ZXIKLQotIyMjIE1hYyBPUyBYIFJlcXVpcmVtZW50cyAjIyMKLQot
ICAqIE1hYyBPUyBYIDEwLjQgVGlnZXIgb3IgbmV3ZXIKLSAgKiBEZXZlbG9wZXIgVG9vbHMgSW5z
dGFsbGVkCi0KLUFsc28sIHlvdSdsbCBuZWVkIENNYWtlIDIuNi40IG9yIGhpZ2hlciBpZiB5b3Ug
d2FudCB0byBidWlsZCB0aGUKLXNhbXBsZXMgdXNpbmcgdGhlIHByb3ZpZGVkIENNYWtlIHNjcmlw
dCwgcmVnYXJkbGVzcyBvZiB0aGUgcGxhdGZvcm0uCi0KLVJlcXVpcmVtZW50cyBmb3IgQ29udHJp
YnV0b3JzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1XZSB3ZWxjb21lIHBhdGNo
ZXMuICBJZiB5b3UgcGxhbiB0byBjb250cmlidXRlIGEgcGF0Y2gsIHlvdSBuZWVkIHRvCi1idWls
ZCBHb29nbGUgVGVzdCBhbmQgaXRzIG93biB0ZXN0cyBmcm9tIGFuIFNWTiBjaGVja291dCAoZGVz
Y3JpYmVkCi1iZWxvdyksIHdoaWNoIGhhcyBmdXJ0aGVyIHJlcXVpcmVtZW50czoKLQotICAqIFB5
dGhvbiB2ZXJzaW9uIDIuMyBvciBuZXdlciAoZm9yIHJ1bm5pbmcgc29tZSBvZiB0aGUgdGVzdHMg
YW5kCi0gICAgcmUtZ2VuZXJhdGluZyBjZXJ0YWluIHNvdXJjZSBmaWxlcyBmcm9tIHRlbXBsYXRl
cykKLSAgKiBDTWFrZSAyLjYuNCBvciBuZXdlcgotCi1HZXR0aW5nIHRoZSBTb3VyY2UKLS0tLS0t
LS0tLS0tLS0tLS0tLQotCi1UaGVyZSBhcmUgdHdvIHByaW1hcnkgd2F5cyBvZiBnZXR0aW5nIEdv
b2dsZSBUZXN0J3Mgc291cmNlIGNvZGU6IHlvdQotY2FuIGRvd25sb2FkIGEgc3RhYmxlIHNvdXJj
ZSByZWxlYXNlIGluIHlvdXIgcHJlZmVycmVkIGFyY2hpdmUgZm9ybWF0LAotb3IgZGlyZWN0bHkg
Y2hlY2sgb3V0IHRoZSBzb3VyY2UgZnJvbSBvdXIgU3VidmVyc2lvbiAoU1ZOKSByZXBvc2l0YXJ5
LgotVGhlIFNWTiBjaGVja291dCByZXF1aXJlcyBhIGZldyBleHRyYSBzdGVwcyBhbmQgc29tZSBl
eHRyYSBzb2Z0d2FyZQotcGFja2FnZXMgb24geW91ciBzeXN0ZW0sIGJ1dCBsZXRzIHlvdSB0cmFj
ayB0aGUgbGF0ZXN0IGRldmVsb3BtZW50IGFuZAotbWFrZSBwYXRjaGVzIG11Y2ggbW9yZSBlYXNp
bHksIHNvIHdlIGhpZ2hseSBlbmNvdXJhZ2UgaXQuCi0KLSMjIyBTb3VyY2UgUGFja2FnZSAjIyMK
LQotR29vZ2xlIFRlc3QgaXMgcmVsZWFzZWQgaW4gdmVyc2lvbmVkIHNvdXJjZSBwYWNrYWdlcyB3
aGljaCBjYW4gYmUKLWRvd25sb2FkZWQgZnJvbSB0aGUgZG93bmxvYWQgcGFnZSBbMV0uICBTZXZl
cmFsIGRpZmZlcmVudCBhcmNoaXZlCi1mb3JtYXRzIGFyZSBwcm92aWRlZCwgYnV0IHRoZSBvbmx5
IGRpZmZlcmVuY2UgaXMgdGhlIHRvb2xzIHVzZWQgdG8KLW1hbmlwdWxhdGUgdGhlbSwgYW5kIHRo
ZSBzaXplIG9mIHRoZSByZXN1bHRpbmcgZmlsZS4gIERvd25sb2FkCi13aGljaGV2ZXIgeW91IGFy
ZSBtb3N0IGNvbWZvcnRhYmxlIHdpdGguCi0KLSAgWzFdIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20v
cC9nb29nbGV0ZXN0L2Rvd25sb2Fkcy9saXN0Ci0KLU9uY2UgdGhlIHBhY2thZ2UgaXMgZG93bmxv
YWRlZCwgZXhwYW5kIGl0IHVzaW5nIHdoaWNoZXZlciB0b29scyB5b3UKLXByZWZlciBmb3IgdGhh
dCB0eXBlLiAgVGhpcyB3aWxsIHJlc3VsdCBpbiBhIG5ldyBkaXJlY3Rvcnkgd2l0aCB0aGUKLW5h
bWUgImd0ZXN0LVguWS5aIiB3aGljaCBjb250YWlucyBhbGwgb2YgdGhlIHNvdXJjZSBjb2RlLiAg
SGVyZSBhcmUKLXNvbWUgZXhhbXBsZXMgb24gTGludXg6Ci0KLSAgdGFyIC14dnpmIGd0ZXN0LVgu
WS5aLnRhci5negotICB0YXIgLXh2amYgZ3Rlc3QtWC5ZLloudGFyLmJ6MgotICB1bnppcCBndGVz
dC1YLlkuWi56aXAKLQotIyMjIFNWTiBDaGVja291dCAjIyMKLQotVG8gY2hlY2sgb3V0IHRoZSBt
YWluIGJyYW5jaCAoYWxzbyBrbm93biBhcyB0aGUgInRydW5rIikgb2YgR29vZ2xlCi1UZXN0LCBy
dW4gdGhlIGZvbGxvd2luZyBTdWJ2ZXJzaW9uIGNvbW1hbmQ6Ci0KLSAgc3ZuIGNoZWNrb3V0IGh0
dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay8gZ3Rlc3Qtc3ZuCi0KLVNl
dHRpbmcgdXAgdGhlIEJ1aWxkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UbyBidWlsZCBHb29n
bGUgVGVzdCBhbmQgeW91ciB0ZXN0cyB0aGF0IHVzZSBpdCwgeW91IG5lZWQgdG8gdGVsbCB5b3Vy
Ci1idWlsZCBzeXN0ZW0gd2hlcmUgdG8gZmluZCBpdHMgaGVhZGVycyBhbmQgc291cmNlIGZpbGVz
LiAgVGhlIGV4YWN0Ci13YXkgdG8gZG8gaXQgZGVwZW5kcyBvbiB3aGljaCBidWlsZCBzeXN0ZW0g
eW91IHVzZSwgYW5kIGlzIHVzdWFsbHkKLXN0cmFpZ2h0Zm9yd2FyZC4KLQotIyMjIEdlbmVyaWMg
QnVpbGQgSW5zdHJ1Y3Rpb25zICMjIwotCi1TdXBwb3NlIHlvdSBwdXQgR29vZ2xlIFRlc3QgaW4g
ZGlyZWN0b3J5ICR7R1RFU1RfRElSfS4gIFRvIGJ1aWxkIGl0LAotY3JlYXRlIGEgbGlicmFyeSBi
dWlsZCB0YXJnZXQgKG9yIGEgcHJvamVjdCBhcyBjYWxsZWQgYnkgVmlzdWFsIFN0dWRpbwotYW5k
IFhjb2RlKSB0byBjb21waWxlCi0KLSAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1hbGwuY2MKLQot
d2l0aAotCi0gICR7R1RFU1RfRElSfS9pbmNsdWRlIGFuZCAke0dURVNUX0RJUn0KLQotaW4gdGhl
IGhlYWRlciBzZWFyY2ggcGF0aC4gIEFzc3VtaW5nIGEgTGludXgtbGlrZSBzeXN0ZW0gYW5kIGdj
YywKLXNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgd2lsbCBkbzoKLQotICBnKysgLUkke0dU
RVNUX0RJUn0vaW5jbHVkZSAtSSR7R1RFU1RfRElSfSAtYyAke0dURVNUX0RJUn0vc3JjL2d0ZXN0
LWFsbC5jYwotICBhciAtcnYgbGliZ3Rlc3QuYSBndGVzdC1hbGwubwotCi1OZXh0LCB5b3Ugc2hv
dWxkIGNvbXBpbGUgeW91ciB0ZXN0IHNvdXJjZSBmaWxlIHdpdGgKLSR7R1RFU1RfRElSfS9pbmNs
dWRlIGluIHRoZSBoZWFkZXIgc2VhcmNoIHBhdGgsIGFuZCBsaW5rIGl0IHdpdGggZ3Rlc3QKLWFu
ZCBhbnkgb3RoZXIgbmVjZXNzYXJ5IGxpYnJhcmllczoKLQotICBnKysgLUkke0dURVNUX0RJUn0v
aW5jbHVkZSBwYXRoL3RvL3lvdXJfdGVzdC5jYyBsaWJndGVzdC5hIC1vIHlvdXJfdGVzdAotCi1B
cyBhbiBleGFtcGxlLCB0aGUgbWFrZS8gZGlyZWN0b3J5IGNvbnRhaW5zIGEgTWFrZWZpbGUgdGhh
dCB5b3UgY2FuCi11c2UgdG8gYnVpbGQgR29vZ2xlIFRlc3Qgb24gc3lzdGVtcyB3aGVyZSBHTlUg
bWFrZSBpcyBhdmFpbGFibGUKLShlLmcuIExpbnV4LCBNYWMgT1MgWCwgYW5kIEN5Z3dpbikuICBJ
dCBkb2Vzbid0IHRyeSB0byBidWlsZCBHb29nbGUKLVRlc3QncyBvd24gdGVzdHMuICBJbnN0ZWFk
LCBpdCBqdXN0IGJ1aWxkcyB0aGUgR29vZ2xlIFRlc3QgbGlicmFyeSBhbmQKLWEgc2FtcGxlIHRl
c3QuICBZb3UgY2FuIHVzZSBpdCBhcyBhIHN0YXJ0aW5nIHBvaW50IGZvciB5b3VyIG93biBidWls
ZAotc2NyaXB0LgotCi1JZiB0aGUgZGVmYXVsdCBzZXR0aW5ncyBhcmUgY29ycmVjdCBmb3IgeW91
ciBlbnZpcm9ubWVudCwgdGhlCi1mb2xsb3dpbmcgY29tbWFuZHMgc2hvdWxkIHN1Y2NlZWQ6Ci0K
LSAgY2QgJHtHVEVTVF9ESVJ9L21ha2UKLSAgbWFrZQotICAuL3NhbXBsZTFfdW5pdHRlc3QKLQot
SWYgeW91IHNlZSBlcnJvcnMsIHRyeSB0byB0d2VhayB0aGUgY29udGVudHMgb2YgbWFrZS9NYWtl
ZmlsZSB0byBtYWtlCi10aGVtIGdvIGF3YXkuICBUaGVyZSBhcmUgaW5zdHJ1Y3Rpb25zIGluIG1h
a2UvTWFrZWZpbGUgb24gaG93IHRvIGRvCi1pdC4KLQotIyMjIFVzaW5nIENNYWtlICMjIwotCi1H
b29nbGUgVGVzdCBjb21lcyB3aXRoIGEgQ01ha2UgYnVpbGQgc2NyaXB0IChDTWFrZUxpc3RzLnR4
dCkgdGhhdCBjYW4KLWJlIHVzZWQgb24gYSB3aWRlIHJhbmdlIG9mIHBsYXRmb3JtcyAoIkMiIHN0
YW5kcyBmb3IgY3Jvc3MtcGxhdG9mcm0uKS4KLUlmIHlvdSBkb24ndCBoYXZlIENNYWtlIGluc3Rh
bGxlZCBhbHJlYWR5LCB5b3UgY2FuIGRvd25sb2FkIGl0IGZvcgotZnJlZSBmcm9tIGh0dHA6Ly93
d3cuY21ha2Uub3JnLy4KLQotQ01ha2Ugd29ya3MgYnkgZ2VuZXJhdGluZyBuYXRpdmUgbWFrZWZp
bGVzIG9yIGJ1aWxkIHByb2plY3RzIHRoYXQgY2FuCi1iZSB1c2VkIGluIHRoZSBjb21waWxlciBl
bnZpcm9ubWVudCBvZiB5b3VyIGNob2ljZS4gIFRoZSB0eXBpY2FsCi13b3JrZmxvdyBzdGFydHMg
d2l0aDoKLQotICBta2RpciBteWJ1aWxkICAgICAgICMgQ3JlYXRlIGEgZGlyZWN0b3J5IHRvIGhv
bGQgdGhlIGJ1aWxkIG91dHB1dC4KLSAgY2QgbXlidWlsZAotICBjbWFrZSAke0dURVNUX0RJUn0g
ICMgR2VuZXJhdGUgbmF0aXZlIGJ1aWxkIHNjcmlwdHMuCi0KLUlmIHlvdSB3YW50IHRvIGJ1aWxk
IEdvb2dsZSBUZXN0J3Mgc2FtcGxlcywgeW91IHNob3VsZCByZXBsYWNlIHRoZQotbGFzdCBjb21t
YW5kIHdpdGgKLQotICBjbWFrZSAtRGJ1aWxkX2d0ZXN0X3NhbXBsZXM9T04gJHtHVEVTVF9ESVJ9
Ci0KLUlmIHlvdSBhcmUgb24gYSAqbml4IHN5c3RlbSwgeW91IHNob3VsZCBub3cgc2VlIGEgTWFr
ZWZpbGUgaW4gdGhlCi1jdXJyZW50IGRpcmVjdG9yeS4gIEp1c3QgdHlwZSAnbWFrZScgdG8gYnVp
bGQgZ3Rlc3QuCi0KLUlmIHlvdSB1c2UgV2luZG93cyBhbmQgaGF2ZSBWaXN0dWFsIFN0dWRpbyBp
bnN0YWxsZWQsIGEgZ3Rlc3Quc2xuIGZpbGUKLWFuZCBzZXZlcmFsIC52Y3Byb2ogZmlsZXMgd2ls
bCBiZSBjcmVhdGVkLiAgWW91IGNhbiB0aGVuIGJ1aWxkIHRoZW0KLXVzaW5nIFZpc3VhbCBTdHVk
aW8uCi0KLU9uIE1hYyBPUyBYIHdpdGggWGNvZGUgaW5zdGFsbGVkLCBhIC54Y29kZXByb2ogZmls
ZSB3aWxsIGJlIGdlbmVyYXRlZC4KLQotIyMjIExlZ2FjeSBCdWlsZCBTY3JpcHRzICMjIwotCi1C
ZWZvcmUgc2V0dGxpbmcgb24gQ01ha2UsIHdlIGhhdmUgYmVlbiBwcm92aWRpbmcgaGFuZC1tYWlu
dGFpbmVkIGJ1aWxkCi1wcm9qZWN0cy9zY3JpcHRzIGZvciBWaXN1YWwgU3R1ZGlvLCBYY29kZSwg
YW5kIEF1dG90b29scy4gIFdoaWxlIHdlCi1jb250aW51ZSB0byBwcm92aWRlIHRoZW0gZm9yIGNv
bnZlbmllbmNlLCB0aGV5IGFyZSBub3QgYWN0aXZlbHkKLW1haW50YWluZWQgYW55IG1vcmUuICBX
ZSBoaWdobHkgcmVjb21tZW5kIHRoYXQgeW91IGZvbGxvdyB0aGUKLWluc3RydWN0aW9ucyBpbiB0
aGUgcHJldmlvdXMgdHdvIHNlY3Rpb25zIHRvIGludGVncmF0ZSBHb29nbGUgVGVzdAotd2l0aCB5
b3VyIGV4aXN0aW5nIGJ1aWxkIHN5c3RlbS4KLQotSWYgeW91IHN0aWxsIG5lZWQgdG8gdXNlIHRo
ZSBsZWdhY3kgYnVpbGQgc2NyaXB0cywgaGVyZSdzIGhvdzoKLQotVGhlIG1zdmNcIGZvbGRlciBj
b250YWlucyB0d28gc29sdXRpb25zIHdpdGggVmlzdWFsIEMrKyBwcm9qZWN0cy4KLU9wZW4gdGhl
IGd0ZXN0LnNsbiBvciBndGVzdC1tZC5zbG4gZmlsZSB1c2luZyBWaXN1YWwgU3R1ZGlvLCBhbmQg
eW91Ci1hcmUgcmVhZHkgdG8gYnVpbGQgR29vZ2xlIFRlc3QgdGhlIHNhbWUgd2F5IHlvdSBidWls
ZCBhbnkgVmlzdWFsCi1TdHVkaW8gcHJvamVjdC4gIEZpbGVzIHRoYXQgaGF2ZSBuYW1lcyBlbmRp
bmcgd2l0aCAtbWQgdXNlIERMTAotdmVyc2lvbnMgb2YgTWljcm9zb2Z0IHJ1bnRpbWUgbGlicmFy
aWVzICh0aGUgL01EIG9yIHRoZSAvTURkIGNvbXBpbGVyCi1vcHRpb24pLiAgRmlsZXMgd2l0aG91
dCB0aGF0IHN1ZmZpeCB1c2Ugc3RhdGljIHZlcnNpb25zIG9mIHRoZSBydW50aW1lCi1saWJyYXJp
ZXMgKHRoZSAvTVQgb3IgdGhlIC9NVGQgb3B0aW9uKS4gIFBsZWFzZSBub3RlIHRoYXQgb25lIG11
c3QgdXNlCi10aGUgc2FtZSBvcHRpb24gdG8gY29tcGlsZSBib3RoIGd0ZXN0IGFuZCB0aGUgdGVz
dCBjb2RlLiAgSWYgeW91IHVzZQotVmlzdWFsIFN0dWRpbyAyMDA1IG9yIGFib3ZlLCB3ZSByZWNv
bW1lbmQgdGhlIC1tZCB2ZXJzaW9uIGFzIC9NRCBpcwotdGhlIGRlZmF1bHQgZm9yIG5ldyBwcm9q
ZWN0cyBpbiB0aGVzZSB2ZXJzaW9ucyBvZiBWaXN1YWwgU3R1ZGlvLgotCi1PbiBNYWMgT1MgWCwg
b3BlbiB0aGUgZ3Rlc3QueGNvZGVwcm9qIGluIHRoZSB4Y29kZS8gZm9sZGVyIHVzaW5nCi1YY29k
ZS4gIEJ1aWxkIHRoZSAiZ3Rlc3QiIHRhcmdldC4gIFRoZSB1bml2ZXJzYWwgYmluYXJ5IGZyYW1l
d29yayB3aWxsCi1lbmQgdXAgaW4geW91ciBzZWxlY3RlZCBidWlsZCBkaXJlY3RvcnkgKHNlbGVj
dGVkIGluIHRoZSBYY29kZQotIlByZWZlcmVuY2VzLi4uIiAtPiAiQnVpbGRpbmciIHBhbmUgYW5k
IGRlZmF1bHRzIHRvIHhjb2RlL2J1aWxkKS4KLUFsdGVybmF0aXZlbHksIGF0IHRoZSBjb21tYW5k
IGxpbmUsIGVudGVyOgotCi0gIHhjb2RlYnVpbGQKLQotVGhpcyB3aWxsIGJ1aWxkIHRoZSAiUmVs
ZWFzZSIgY29uZmlndXJhdGlvbiBvZiBndGVzdC5mcmFtZXdvcmsgaW4geW91cgotZGVmYXVsdCBi
dWlsZCBsb2NhdGlvbi4gIFNlZSB0aGUgInhjb2RlYnVpbGQiIG1hbiBwYWdlIGZvciBtb3JlCi1p
bmZvcm1hdGlvbiBhYm91dCBidWlsZGluZyBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgYW5kIGJ1
aWxkaW5nIGluCi1kaWZmZXJlbnQgbG9jYXRpb25zLgotCi1Ud2Vha2luZyBHb29nbGUgVGVzdAot
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotR29vZ2xlIFRlc3QgY2FuIGJlIHVzZWQgaW4gZGl2ZXJz
ZSBlbnZpcm9ubWVudHMuICBUaGUgZGVmYXVsdAotY29uZmlndXJhdGlvbiBtYXkgbm90IHdvcmsg
KG9yIG1heSBub3Qgd29yayB3ZWxsKSBvdXQgb2YgdGhlIGJveCBpbgotc29tZSBlbnZpcm9ubWVu
dHMuICBIb3dldmVyLCB5b3UgY2FuIGVhc2lseSB0d2VhayBHb29nbGUgVGVzdCBieQotZGVmaW5p
bmcgY29udHJvbCBtYWNyb3Mgb24gdGhlIGNvbXBpbGVyIGNvbW1hbmQgbGluZS4gIEdlbmVyYWxs
eSwKLXRoZXNlIG1hY3JvcyBhcmUgbmFtZWQgbGlrZSBHVEVTVF9YWVogYW5kIHlvdSBkZWZpbmUg
dGhlbSB0byBlaXRoZXIgMQotb3IgMCB0byBlbmFibGUgb3IgZGlzYWJsZSBhIGNlcnRhaW4gZmVh
dHVyZS4KLQotV2UgbGlzdCB0aGUgbW9zdCBmcmVxdWVudGx5IHVzZWQgbWFjcm9zIGJlbG93LiAg
Rm9yIGEgY29tcGxldGUgbGlzdCwKLXNlZSBmaWxlIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oLgotCi0jIyMgQ2hvb3NpbmcgYSBUUjEgVHVwbGUgTGlicmFyeSAjIyMKLQotU29t
ZSBHb29nbGUgVGVzdCBmZWF0dXJlcyByZXF1aXJlIHRoZSBDKysgVGVjaG5pY2FsIFJlcG9ydCAx
IChUUjEpCi10dXBsZSBsaWJyYXJ5LCB3aGljaCBpcyBub3QgeWV0IGF2YWlsYWJsZSB3aXRoIGFs
bCBjb21waWxlcnMuICBUaGUKLWdvb2QgbmV3cyBpcyB0aGF0IEdvb2dsZSBUZXN0IGltcGxlbWVu
dHMgYSBzdWJzZXQgb2YgVFIxIHR1cGxlIHRoYXQncwotZW5vdWdoIGZvciBpdHMgb3duIG5lZWQs
IGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdXNlIHRoaXMgd2hlbiB0aGUKLWNvbXBpbGVyIGRvZXNu
J3QgcHJvdmlkZSBUUjEgdHVwbGUuCi0KLVVzdWFsbHkgeW91IGRvbid0IG5lZWQgdG8gY2FyZSBh
Ym91dCB3aGljaCB0dXBsZSBsaWJyYXJ5IEdvb2dsZSBUZXN0Ci11c2VzLiAgSG93ZXZlciwgaWYg
eW91ciBwcm9qZWN0IGFscmVhZHkgdXNlcyBUUjEgdHVwbGUsIHlvdSBuZWVkIHRvCi10ZWxsIEdv
b2dsZSBUZXN0IHRvIHVzZSB0aGUgc2FtZSBUUjEgdHVwbGUgbGlicmFyeSB0aGUgcmVzdCBvZiB5
b3VyCi1wcm9qZWN0IHVzZXMsIG9yIHRoZSB0d28gdHVwbGUgaW1wbGVtZW50YXRpb25zIHdpbGwg
Y2xhc2guICBUbyBkbwotdGhhdCwgYWRkCi0KLSAgLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0w
Ci0KLXRvIHRoZSBjb21waWxlciBmbGFncyB3aGlsZSBjb21waWxpbmcgR29vZ2xlIFRlc3QgYW5k
IHlvdXIgdGVzdHMuICBJZgoteW91IHdhbnQgdG8gZm9yY2UgR29vZ2xlIFRlc3QgdG8gdXNlIGl0
cyBvd24gdHVwbGUgbGlicmFyeSwganVzdCBhZGQKLQotICAtREdURVNUX1VTRV9PV05fVFIxX1RV
UExFPTEKLQotdG8gdGhlIGNvbXBpbGVyIGZsYWdzIGluc3RlYWQuCi0KLUlmIHlvdSBkb24ndCB3
YW50IEdvb2dsZSBUZXN0IHRvIHVzZSB0dXBsZSBhdCBhbGwsIGFkZAotCi0gIC1ER1RFU1RfSEFT
X1RSMV9UVVBMRT0wCi0KLWFuZCBhbGwgZmVhdHVyZXMgdXNpbmcgdHVwbGUgd2lsbCBiZSBkaXNh
YmxlZC4KLQotIyMjIE11bHRpLXRocmVhZGVkIFRlc3RzICMjIwotCi1Hb29nbGUgVGVzdCBpcyB0
aHJlYWQtc2FmZSB3aGVyZSB0aGUgcHRocmVhZCBsaWJyYXJ5IGlzIGF2YWlsYWJsZS4KLUFmdGVy
ICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPiwgeW91IGNhbiBjaGVjayB0aGUgR1RFU1RfSVNfVEhS
RUFEU0FGRQotbWFjcm8gdG8gc2VlIHdoZXRoZXIgdGhpcyBpcyB0aGUgY2FzZSAoeWVzIGlmIHRo
ZSBtYWNybyBpcyAjZGVmaW5lZCB0bwotMSwgbm8gaWYgaXQncyB1bmRlZmluZWQuKS4KLQotSWYg
R29vZ2xlIFRlc3QgZG9lc24ndCBjb3JyZWN0bHkgZGV0ZWN0IHdoZXRoZXIgcHRocmVhZCBpcyBh
dmFpbGFibGUKLWluIHlvdXIgZW52aXJvbm1lbnQsIHlvdSBjYW4gZm9yY2UgaXQgd2l0aAotCi0g
IC1ER1RFU1RfSEFTX1BUSFJFQUQ9MQotCi1vcgotCi0gIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MAot
Ci1XaGVuIEdvb2dsZSBUZXN0IHVzZXMgcHRocmVhZCwgeW91IG1heSBuZWVkIHRvIGFkZCBmbGFn
cyB0byB5b3VyCi1jb21waWxlciBhbmQvb3IgbGlua2VyIHRvIHNlbGVjdCB0aGUgcHRocmVhZCBs
aWJyYXJ5LCBvciB5b3UnbGwgZ2V0Ci1saW5rIGVycm9ycy4gIElmIHlvdSB1c2UgdGhlIENNYWtl
IHNjcmlwdCBvciB0aGUgZGVwcmVjYXRlZCBBdXRvdG9vbHMKLXNjcmlwdCwgdGhpcyBpcyB0YWtl
biBjYXJlIG9mIGZvciB5b3UuICBJZiB5b3UgdXNlIHlvdXIgb3duIGJ1aWxkCi1zY3JpcHQsIHlv
dSdsbCBuZWVkIHRvIHJlYWQgeW91ciBjb21waWxlciBhbmQgbGlua2VyJ3MgbWFudWFsIHRvCi1m
aWd1cmUgb3V0IHdoYXQgZmxhZ3MgdG8gYWRkLgotCi0jIyMgQXMgYSBTaGFyZWQgTGlicmFyeSAo
RExMKSAjIyMKLQotR29vZ2xlIFRlc3QgaXMgY29tcGFjdCwgc28gbW9zdCB1c2VycyBjYW4gYnVp
bGQgYW5kIGxpbmsgaXQgYXMgYQotc3RhdGljIGxpYnJhcnkgZm9yIHRoZSBzaW1wbGljaXR5LiAg
WW91IGNhbiBjaG9vc2UgdG8gdXNlIEdvb2dsZSBUZXN0Ci1hcyBhIHNoYXJlZCBsaWJyYXJ5IChr
bm93biBhcyBhIERMTCBvbiBXaW5kb3dzKSBpZiB5b3UgcHJlZmVyLgotCi1UbyBjb21waWxlIGd0
ZXN0IGFzIGEgc2hhcmVkIGxpYnJhcnksIGFkZAotCi0gIC1ER1RFU1RfQ1JFQVRFX1NIQVJFRF9M
SUJSQVJZPTEKLQotdG8gdGhlIGNvbXBpbGVyIGZsYWdzLiAgWW91J2xsIGFsc28gbmVlZCB0byB0
ZWxsIHRoZSBsaW5rZXIgdG8gcHJvZHVjZQotYSBzaGFyZWQgbGlicmFyeSBpbnN0ZWFkIC0gY29u
c3VsdCB5b3VyIGxpbmtlcidzIG1hbnVhbCBmb3IgaG93IHRvIGRvCi1pdC4KLQotVG8gY29tcGls
ZSB5b3VyIHRlc3RzIHRoYXQgdXNlIHRoZSBndGVzdCBzaGFyZWQgbGlicmFyeSwgYWRkCi0KLSAg
LURHVEVTVF9MSU5LRURfQVNfU0hBUkVEX0xJQlJBUlk9MQotCi10byB0aGUgY29tcGlsZXIgZmxh
Z3MuCi0KLSMjIyBBdm9pZGluZyBNYWNybyBOYW1lIENsYXNoZXMgIyMjCi0KLUluIEMrKywgbWFj
cm9zIGRvbid0IG9iZXkgbmFtZXNwYWNlcy4gIFRoZXJlZm9yZSB0d28gbGlicmFyaWVzIHRoYXQK
LWJvdGggZGVmaW5lIGEgbWFjcm8gb2YgdGhlIHNhbWUgbmFtZSB3aWxsIGNsYXNoIGlmIHlvdSAj
aW5jbHVkZSBib3RoCi1kZWZpbml0aW9ucy4gIEluIGNhc2UgYSBHb29nbGUgVGVzdCBtYWNybyBj
bGFzaGVzIHdpdGggYW5vdGhlcgotbGlicmFyeSwgeW91IGNhbiBmb3JjZSBHb29nbGUgVGVzdCB0
byByZW5hbWUgaXRzIG1hY3JvIHRvIGF2b2lkIHRoZQotY29uZmxpY3QuCi0KLVNwZWNpZmljYWxs
eSwgaWYgYm90aCBHb29nbGUgVGVzdCBhbmQgc29tZSBvdGhlciBjb2RlIGRlZmluZSBtYWNybwot
Rk9PLCB5b3UgY2FuIGFkZAotCi0gIC1ER1RFU1RfRE9OVF9ERUZJTkVfRk9PPTEKLQotdG8gdGhl
IGNvbXBpbGVyIGZsYWdzIHRvIHRlbGwgR29vZ2xlIFRlc3QgdG8gY2hhbmdlIHRoZSBtYWNybydz
IG5hbWUKLWZyb20gRk9PIHRvIEdURVNUX0ZPTy4gIEN1cnJlbnRseSBGT08gY2FuIGJlIEZBSUws
IFNVQ0NFRUQsIG9yIFRFU1QuCi1Gb3IgZXhhbXBsZSwgd2l0aCAtREdURVNUX0RPTlRfREVGSU5F
X1RFU1Q9MSwgeW91J2xsIG5lZWQgdG8gd3JpdGUKLQotICBHVEVTVF9URVNUKFNvbWVUZXN0LCBE
b2VzVGhpcykgeyAuLi4gfQotCi1pbnN0ZWFkIG9mCi0KLSAgVEVTVChTb21lVGVzdCwgRG9lc1Ro
aXMpIHsgLi4uIH0KLQotaW4gb3JkZXIgdG8gZGVmaW5lIGEgdGVzdC4KLQotVXBncmF0aW5nIGZy
b20gYW4gRWFybGllciBWZXJzaW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LQotV2Ugc3RyaXZlIHRvIGtlZXAgR29vZ2xlIFRlc3QgcmVsZWFzZXMgYmFja3dhcmQgY29tcGF0
aWJsZS4KLVNvbWV0aW1lcywgdGhvdWdoLCB3ZSBoYXZlIHRvIG1ha2Ugc29tZSBicmVha2luZyBj
aGFuZ2VzIGZvciB0aGUKLXVzZXJzJyBsb25nLXRlcm0gYmVuZWZpdHMuICBUaGlzIHNlY3Rpb24g
ZGVzY3JpYmVzIHdoYXQgeW91J2xsIG5lZWQgdG8KLWRvIGlmIHlvdSBhcmUgdXBncmFkaW5nIGZy
b20gYW4gZWFybGllciB2ZXJzaW9uIG9mIEdvb2dsZSBUZXN0LgotCi0jIyMgVXBncmFkaW5nIGZy
b20gMS4zLjAgb3IgRWFybGllciAjIyMKLQotWW91IG1heSBuZWVkIHRvIGV4cGxpY2l0bHkgZW5h
YmxlIG9yIGRpc2FibGUgR29vZ2xlIFRlc3QncyBvd24gVFIxCi10dXBsZSBsaWJyYXJ5LiAgU2Vl
IHRoZSBpbnN0cnVjdGlvbnMgaW4gc2VjdGlvbiAiQ2hvb3NpbmcgYSBUUjEgVHVwbGUKLUxpYnJh
cnkiLgotCi0jIyMgVXBncmFkaW5nIGZyb20gMS40LjAgb3IgRWFybGllciAjIyMKLQotVGhlIEF1
dG90b29scyBidWlsZCBzY3JpcHQgKGNvbmZpZ3VyZSArIG1ha2UpIGlzIG5vIGxvbmdlciBvZmZp
Y2lhbGx5Ci1zdXBwb3J0dGVkLiAgWW91IGFyZSBlbmNvdXJhZ2VkIHRvIG1pZ3JhdGUgdG8geW91
ciBvd24gYnVpbGQgc3lzdGVtIG9yCi11c2UgQ01ha2UuICBJZiB5b3Ugc3RpbGwgbmVlZCB0byB1
c2UgQXV0b3Rvb2xzLCB5b3UgY2FuIGZpbmQKLWluc3RydWN0aW9ucyBpbiB0aGUgUkVBRE1FIGZp
bGUgZnJvbSBHb29nbGUgVGVzdCAxLjQuMC4KLQotT24gcGxhdGZvcm1zIHdoZXJlIHRoZSBwdGhy
ZWFkIGxpYnJhcnkgaXMgYXZhaWxhYmxlLCBHb29nbGUgVGVzdCB1c2VzCi1pdCBpbiBvcmRlciB0
byBiZSB0aHJlYWQtc2FmZS4gIFNlZSB0aGUgIk11bHRpLXRocmVhZGVkIFRlc3RzIiBzZWN0aW9u
Ci1mb3Igd2hhdCB0aGlzIG1lYW5zIHRvIHlvdXIgYnVpbGQgc2NyaXB0LgotCi1JZiB5b3UgdXNl
IE1pY3Jvc29mdCBWaXN1YWwgQysrIDcuMSB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQsIEdvb2ds
ZQotVGVzdCB3aWxsIG5vIGxvbmdlciBjb21waWxlLiAgVGhpcyBzaG91bGQgYWZmZWN0IHZlcnkg
ZmV3IHBlb3BsZSwgYXMgYQotbGFyZ2UgcG9ydGlvbiBvZiBTVEwgKGluY2x1ZGluZyA8c3RyaW5n
PikgZG9lc24ndCBjb21waWxlIGluIHRoaXMgbW9kZQotYW55d2F5LiAgV2UgZGVjaWRlZCB0byBz
dG9wIHN1cHBvcnRpbmcgaXQgaW4gb3JkZXIgdG8gZ3JlYXRseSBzaW1wbGlmeQotR29vZ2xlIFRl
c3QncyBpbXBsZW1lbnRhdGlvbi4KLQotRGV2ZWxvcGluZyBHb29nbGUgVGVzdAotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotCi1UaGlzIHNlY3Rpb24gZGlzY3Vzc2VzIGhvdyB0byBtYWtlIHlvdXIg
b3duIGNoYW5nZXMgdG8gR29vZ2xlIFRlc3QuCi0KLSMjIyBUZXN0aW5nIEdvb2dsZSBUZXN0IEl0
c2VsZiAjIyMKLQotVG8gbWFrZSBzdXJlIHlvdXIgY2hhbmdlcyB3b3JrIGFzIGludGVuZGVkIGFu
ZCBkb24ndCBicmVhayBleGlzdGluZwotZnVuY3Rpb25hbGl0eSwgeW91J2xsIHdhbnQgdG8gY29t
cGlsZSBhbmQgcnVuIEdvb2dsZSBUZXN0J3Mgb3duIHRlc3RzLgotRm9yIHRoYXQgeW91IGNhbiB1
c2UgQ01ha2U6Ci0KLSAgbWtkaXIgbXlidWlsZAotICBjZCBteWJ1aWxkCi0gIGNtYWtlIC1EYnVp
bGRfYWxsX2d0ZXN0X3Rlc3RzPU9OICR7R1RFU1RfRElSfQotCi1NYWtlIHN1cmUgeW91IGhhdmUg
UHl0aG9uIGluc3RhbGxlZCwgYXMgc29tZSBvZiBHb29nbGUgVGVzdCdzIHRlc3RzCi1hcmUgd3Jp
dHRlbiBpbiBQeXRob24uICBJZiB0aGUgY21ha2UgY29tbWFuZCBjb21wbGFpbnMgYWJvdXQgbm90
IGJlaW5nCi1hYmxlIHRvIGZpbmQgUHl0aG9uICgiQ291bGQgTk9UIGZpbmQgUHl0aG9uSW50ZXJw
IChtaXNzaW5nOgotUFlUSE9OX0VYRUNVVEFCTEUpIiksIHRyeSB0ZWxsaW5nIGl0IGV4cGxpY2l0
bHkgd2hlcmUgeW91ciBQeXRob24KLWV4ZWN1dGFibGUgY2FuIGJlIGZvdW5kOgotCi0gIGNtYWtl
IC1EUFlUSE9OX0VYRUNVVEFCTEU9cGF0aC90by9weXRob24gLURidWlsZF9hbGxfZ3Rlc3RfdGVz
dHM9T04gXAotICAgICAgJHtHVEVTVF9ESVJ9Ci0KLU5leHQsIHlvdSBjYW4gYnVpbGQgR29vZ2xl
IFRlc3QgYW5kIGFsbCBvZiBpdHMgb3duIHRlc3RzLiAgT24gKm5peCwKLXRoaXMgaXMgdXN1YWxs
eSBkb25lIGJ5ICdtYWtlJy4gIFRvIHJ1biB0aGUgdGVzdHMsIGRvCi0KLSAgbWFrZSB0ZXN0Ci0K
LUFsbCB0ZXN0cyBzaG91bGQgcGFzcy4KLQotIyMjIFJlZ2VuZXJhdGluZyBTb3VyY2UgRmlsZXMg
IyMjCi0KLVNvbWUgb2YgR29vZ2xlIFRlc3QncyBzb3VyY2UgZmlsZXMgYXJlIGdlbmVyYXRlZCBm
cm9tIHRlbXBsYXRlcyAobm90Ci1pbiB0aGUgQysrIHNlbnNlKSB1c2luZyBhIHNjcmlwdC4gIEEg
dGVtcGxhdGUgZmlsZSBpcyBuYW1lZCBGT08ucHVtcCwKLXdoZXJlIEZPTyBpcyB0aGUgbmFtZSBv
ZiB0aGUgZmlsZSBpdCB3aWxsIGdlbmVyYXRlLiAgRm9yIGV4YW1wbGUsIHRoZQotZmlsZSBpbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oLnB1bXAgaXMgdXNlZCB0byBnZW5l
cmF0ZQotZ3Rlc3QtdHlwZS11dGlsLmggaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgotCi1Ob3JtYWxs
eSB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCByZWdlbmVyYXRpbmcgdGhlIHNvdXJjZSBm
aWxlcywKLXVubGVzcyB5b3UgbmVlZCB0byBtb2RpZnkgdGhlbS4gIEluIHRoYXQgY2FzZSwgeW91
IHNob3VsZCBtb2RpZnkgdGhlCi1jb3JyZXNwb25kaW5nIC5wdW1wIGZpbGVzIGluc3RlYWQgYW5k
IHJ1biB0aGUgcHVtcC5weSBQeXRob24gc2NyaXB0IHRvCi1yZWdlbmVyYXRlIHRoZW0uICBZb3Ug
Y2FuIGZpbmQgcHVtcC5weSBpbiB0aGUgc2NyaXB0cy8gZGlyZWN0b3J5LgotUmVhZCB0aGUgUHVt
cCBtYW51YWwgWzJdIGZvciBob3cgdG8gdXNlIGl0LgotCi0gIFsyXSBodHRwOi8vY29kZS5nb29n
bGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL1B1bXBNYW51YWwKLQotIyMjIENvbnRyaWJ1dGluZyBh
IFBhdGNoICMjIwotCi1XZSB3ZWxjb21lIHBhdGNoZXMuICBQbGVhc2UgcmVhZCB0aGUgR29vZ2xl
IFRlc3QgZGV2ZWxvcGVyJ3MgZ3VpZGUgWzNdCi1mb3IgaG93IHlvdSBjYW4gY29udHJpYnV0ZS4g
IEluIHBhcnRpY3VsYXIsIG1ha2Ugc3VyZSB5b3UgaGF2ZSBzaWduZWQKLXRoZSBDb250cmlidXRv
ciBMaWNlbnNlIEFncmVlbWVudCwgb3Igd2Ugd29uJ3QgYmUgYWJsZSB0byBhY2NlcHQgdGhlCi1w
YXRjaC4KLQotICBbM10gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvd2lraS9H
b29nbGVUZXN0RGV2R3VpZGUKLQotSGFwcHkgdGVzdGluZyEKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5XZWJLaXQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9S
RUFETUUuV2ViS2l0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTMxOGZmNjJlMzI0
OWM4ZTY1MzIwOTNmNDBlM2NiNDFjMTVmOWFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5XZWJLaXQK
KysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1HVGVzdCB2LjEuNS4wCi0KLWh0dHA6Ly9n
b29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90YWdzL3JlbGVhc2UtMS41LjAvIAotCi0yMDE2
LTAxLTAyIFRpbmctV2VpIExhbiAobGFudHc0NEBnbWFpbC5jb20pCi0gICAgICBSZW1vdmUgdXNh
Z2Ugb2YgZW52aXJvbiBnbG9iYWwgdmFyaWFibGUgdG8gZml4IHRoZSBidWlsZCBvbiBGcmVlQlNE
LgotCi0yMDEyLTAxLTA0IERtaXRyeSBMb21vdiAoZHNsb21vdkBnb29nbGUuY29tKSAgRGF2aWQg
S2lsemVyIChkZGtpbHplckBhcHBsZS5jb20pCi0gICAgICAtIFdlYktpdCBwb3J0IG9mIGd0ZXN0
IHVzZXMgRmFzdE1hbGxvYyAibmV3IiBhbmQgImRlbGV0ZSIgb3BlcmF0b3JzIGZyb20gSmF2YVNj
cmlwdENvcmUuCi0gICAgICAtIFRoZSBndGVzdC5mcmFtZXdvcmsgdGFyZ2V0IG5vdyBsaW5rcyB0
byBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsuCi0KLTIwMTEtMTItMjIgRGF2aWQgS2lsemVyIChk
ZGtpbHplckBhcHBsZS5jb20pCi0gICAgICBBZGRlZCBQcm9kdWN0aW9uIGNvbmZpZ3VyYXRpb24g
dG8gZ3Rlc3QgWGNvZGUgcHJvamVjdC4KLQotMjAxMS0wNS0wNiBEbWl0cnkgTG9tb3YgKGRzbG9t
b3ZAZ29vZ2xlLmNvbSkKLSAgICAgIGd0ZXN0LW1kLnZjcHJvaiB1cGdyYWRlZCB0byBWUyAyMDA1
ICg4LjApIGZvcm1hdCB0byBtYXRjaCB0aGUgcmVzdCBvZiBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzBmZTgwNDcxMjdiZWUxNmQyYzcxZjE0YjUwOWYzNzU3
MWFkZDQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVBRE1F
Lm1kCkBAIC0wLDAgKzEsMzQxIEBACisjIyMgR2VuZXJpYyBCdWlsZCBJbnN0cnVjdGlvbnMKKwor
IyMjIyBTZXR1cAorCitUbyBidWlsZCBHb29nbGUgVGVzdCBhbmQgeW91ciB0ZXN0cyB0aGF0IHVz
ZSBpdCwgeW91IG5lZWQgdG8gdGVsbCB5b3VyIGJ1aWxkCitzeXN0ZW0gd2hlcmUgdG8gZmluZCBp
dHMgaGVhZGVycyBhbmQgc291cmNlIGZpbGVzLiBUaGUgZXhhY3Qgd2F5IHRvIGRvIGl0CitkZXBl
bmRzIG9uIHdoaWNoIGJ1aWxkIHN5c3RlbSB5b3UgdXNlLCBhbmQgaXMgdXN1YWxseSBzdHJhaWdo
dGZvcndhcmQuCisKKyMjIyMgQnVpbGQKKworU3VwcG9zZSB5b3UgcHV0IEdvb2dsZSBUZXN0IGlu
IGRpcmVjdG9yeSBgJHtHVEVTVF9ESVJ9YC4gVG8gYnVpbGQgaXQsIGNyZWF0ZSBhCitsaWJyYXJ5
IGJ1aWxkIHRhcmdldCAob3IgYSBwcm9qZWN0IGFzIGNhbGxlZCBieSBWaXN1YWwgU3R1ZGlvIGFu
ZCBYY29kZSkgdG8KK2NvbXBpbGUKKworICAgICR7R1RFU1RfRElSfS9zcmMvZ3Rlc3QtYWxsLmNj
CisKK3dpdGggYCR7R1RFU1RfRElSfS9pbmNsdWRlYCBpbiB0aGUgc3lzdGVtIGhlYWRlciBzZWFy
Y2ggcGF0aCBhbmQgYCR7R1RFU1RfRElSfWAKK2luIHRoZSBub3JtYWwgaGVhZGVyIHNlYXJjaCBw
YXRoLiBBc3N1bWluZyBhIExpbnV4LWxpa2Ugc3lzdGVtIGFuZCBnY2MsCitzb21ldGhpbmcgbGlr
ZSB0aGUgZm9sbG93aW5nIHdpbGwgZG86CisKKyAgICBnKysgLWlzeXN0ZW0gJHtHVEVTVF9ESVJ9
L2luY2x1ZGUgLUkke0dURVNUX0RJUn0gXAorICAgICAgICAtcHRocmVhZCAtYyAke0dURVNUX0RJ
Un0vc3JjL2d0ZXN0LWFsbC5jYworICAgIGFyIC1ydiBsaWJndGVzdC5hIGd0ZXN0LWFsbC5vCisK
KyhXZSBuZWVkIGAtcHRocmVhZGAgYXMgR29vZ2xlIFRlc3QgdXNlcyB0aHJlYWRzLikKKworTmV4
dCwgeW91IHNob3VsZCBjb21waWxlIHlvdXIgdGVzdCBzb3VyY2UgZmlsZSB3aXRoIGAke0dURVNU
X0RJUn0vaW5jbHVkZWAgaW4KK3RoZSBzeXN0ZW0gaGVhZGVyIHNlYXJjaCBwYXRoLCBhbmQgbGlu
ayBpdCB3aXRoIGd0ZXN0IGFuZCBhbnkgb3RoZXIgbmVjZXNzYXJ5CitsaWJyYXJpZXM6CisKKyAg
ICBnKysgLWlzeXN0ZW0gJHtHVEVTVF9ESVJ9L2luY2x1ZGUgLXB0aHJlYWQgcGF0aC90by95b3Vy
X3Rlc3QuY2MgbGliZ3Rlc3QuYSBcCisgICAgICAgIC1vIHlvdXJfdGVzdAorCitBcyBhbiBleGFt
cGxlLCB0aGUgbWFrZS8gZGlyZWN0b3J5IGNvbnRhaW5zIGEgTWFrZWZpbGUgdGhhdCB5b3UgY2Fu
IHVzZSB0byBidWlsZAorR29vZ2xlIFRlc3Qgb24gc3lzdGVtcyB3aGVyZSBHTlUgbWFrZSBpcyBh
dmFpbGFibGUgKGUuZy4gTGludXgsIE1hYyBPUyBYLCBhbmQKK0N5Z3dpbikuIEl0IGRvZXNuJ3Qg
dHJ5IHRvIGJ1aWxkIEdvb2dsZSBUZXN0J3Mgb3duIHRlc3RzLiBJbnN0ZWFkLCBpdCBqdXN0Citi
dWlsZHMgdGhlIEdvb2dsZSBUZXN0IGxpYnJhcnkgYW5kIGEgc2FtcGxlIHRlc3QuIFlvdSBjYW4g
dXNlIGl0IGFzIGEgc3RhcnRpbmcKK3BvaW50IGZvciB5b3VyIG93biBidWlsZCBzY3JpcHQuCisK
K0lmIHRoZSBkZWZhdWx0IHNldHRpbmdzIGFyZSBjb3JyZWN0IGZvciB5b3VyIGVudmlyb25tZW50
LCB0aGUgZm9sbG93aW5nIGNvbW1hbmRzCitzaG91bGQgc3VjY2VlZDoKKworICAgIGNkICR7R1RF
U1RfRElSfS9tYWtlCisgICAgbWFrZQorICAgIC4vc2FtcGxlMV91bml0dGVzdAorCitJZiB5b3Ug
c2VlIGVycm9ycywgdHJ5IHRvIHR3ZWFrIHRoZSBjb250ZW50cyBvZiBgbWFrZS9NYWtlZmlsZWAg
dG8gbWFrZSB0aGVtIGdvCithd2F5LiBUaGVyZSBhcmUgaW5zdHJ1Y3Rpb25zIGluIGBtYWtlL01h
a2VmaWxlYCBvbiBob3cgdG8gZG8gaXQuCisKKyMjIyBVc2luZyBDTWFrZQorCitHb29nbGUgVGVz
dCBjb21lcyB3aXRoIGEgQ01ha2UgYnVpbGQgc2NyaXB0ICgKK1tDTWFrZUxpc3RzLnR4dF0oaHR0
cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL0NNYWtlTGlzdHMu
dHh0KSkKK3RoYXQgY2FuIGJlIHVzZWQgb24gYSB3aWRlIHJhbmdlIG9mIHBsYXRmb3JtcyAoIkMi
IHN0YW5kcyBmb3IgY3Jvc3MtcGxhdGZvcm0uKS4KK0lmIHlvdSBkb24ndCBoYXZlIENNYWtlIGlu
c3RhbGxlZCBhbHJlYWR5LCB5b3UgY2FuIGRvd25sb2FkIGl0IGZvciBmcmVlIGZyb20KKzxodHRw
Oi8vd3d3LmNtYWtlLm9yZy8+LgorCitDTWFrZSB3b3JrcyBieSBnZW5lcmF0aW5nIG5hdGl2ZSBt
YWtlZmlsZXMgb3IgYnVpbGQgcHJvamVjdHMgdGhhdCBjYW4gYmUgdXNlZCBpbgordGhlIGNvbXBp
bGVyIGVudmlyb25tZW50IG9mIHlvdXIgY2hvaWNlLiBZb3UgY2FuIGVpdGhlciBidWlsZCBHb29n
bGUgVGVzdCBhcyBhCitzdGFuZGFsb25lIHByb2plY3Qgb3IgaXQgY2FuIGJlIGluY29ycG9yYXRl
ZCBpbnRvIGFuIGV4aXN0aW5nIENNYWtlIGJ1aWxkIGZvcgorYW5vdGhlciBwcm9qZWN0LgorCisj
IyMjIFN0YW5kYWxvbmUgQ01ha2UgUHJvamVjdAorCitXaGVuIGJ1aWxkaW5nIEdvb2dsZSBUZXN0
IGFzIGEgc3RhbmRhbG9uZSBwcm9qZWN0LCB0aGUgdHlwaWNhbCB3b3JrZmxvdyBzdGFydHMKK3dp
dGg6CisKKyAgICBta2RpciBteWJ1aWxkICAgICAgICMgQ3JlYXRlIGEgZGlyZWN0b3J5IHRvIGhv
bGQgdGhlIGJ1aWxkIG91dHB1dC4KKyAgICBjZCBteWJ1aWxkCisgICAgY21ha2UgJHtHVEVTVF9E
SVJ9ICAjIEdlbmVyYXRlIG5hdGl2ZSBidWlsZCBzY3JpcHRzLgorCitJZiB5b3Ugd2FudCB0byBi
dWlsZCBHb29nbGUgVGVzdCdzIHNhbXBsZXMsIHlvdSBzaG91bGQgcmVwbGFjZSB0aGUgbGFzdCBj
b21tYW5kCit3aXRoCisKKyAgICBjbWFrZSAtRGd0ZXN0X2J1aWxkX3NhbXBsZXM9T04gJHtHVEVT
VF9ESVJ9CisKK0lmIHlvdSBhcmUgb24gYSBcKm5peCBzeXN0ZW0sIHlvdSBzaG91bGQgbm93IHNl
ZSBhIE1ha2VmaWxlIGluIHRoZSBjdXJyZW50CitkaXJlY3RvcnkuIEp1c3QgdHlwZSAnbWFrZScg
dG8gYnVpbGQgZ3Rlc3QuCisKK0lmIHlvdSB1c2UgV2luZG93cyBhbmQgaGF2ZSBWaXN1YWwgU3R1
ZGlvIGluc3RhbGxlZCwgYSBgZ3Rlc3Quc2xuYCBmaWxlIGFuZAorc2V2ZXJhbCBgLnZjcHJvamAg
ZmlsZXMgd2lsbCBiZSBjcmVhdGVkLiBZb3UgY2FuIHRoZW4gYnVpbGQgdGhlbSB1c2luZyBWaXN1
YWwKK1N0dWRpby4KKworT24gTWFjIE9TIFggd2l0aCBYY29kZSBpbnN0YWxsZWQsIGEgYC54Y29k
ZXByb2pgIGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQuCisKKyMjIyMgSW5jb3Jwb3JhdGluZyBJbnRv
IEFuIEV4aXN0aW5nIENNYWtlIFByb2plY3QKKworSWYgeW91IHdhbnQgdG8gdXNlIGd0ZXN0IGlu
IGEgcHJvamVjdCB3aGljaCBhbHJlYWR5IHVzZXMgQ01ha2UsIHRoZW4gYSBtb3JlCityb2J1c3Qg
YW5kIGZsZXhpYmxlIGFwcHJvYWNoIGlzIHRvIGJ1aWxkIGd0ZXN0IGFzIHBhcnQgb2YgdGhhdCBw
cm9qZWN0IGRpcmVjdGx5LgorVGhpcyBpcyBkb25lIGJ5IG1ha2luZyB0aGUgR29vZ2xlVGVzdCBz
b3VyY2UgY29kZSBhdmFpbGFibGUgdG8gdGhlIG1haW4gYnVpbGQKK2FuZCBhZGRpbmcgaXQgdXNp
bmcgQ01ha2UncyBgYWRkX3N1YmRpcmVjdG9yeSgpYCBjb21tYW5kLiBUaGlzIGhhcyB0aGUKK3Np
Z25pZmljYW50IGFkdmFudGFnZSB0aGF0IHRoZSBzYW1lIGNvbXBpbGVyIGFuZCBsaW5rZXIgc2V0
dGluZ3MgYXJlIHVzZWQKK2JldHdlZW4gZ3Rlc3QgYW5kIHRoZSByZXN0IG9mIHlvdXIgcHJvamVj
dCwgc28gaXNzdWVzIGFzc29jaWF0ZWQgd2l0aCB1c2luZworaW5jb21wYXRpYmxlIGxpYnJhcmll
cyAoZWcgZGVidWcvcmVsZWFzZSksIGV0Yy4gYXJlIGF2b2lkZWQuIFRoaXMgaXMKK3BhcnRpY3Vs
YXJseSB1c2VmdWwgb24gV2luZG93cy4gTWFraW5nIEdvb2dsZVRlc3QncyBzb3VyY2UgY29kZSBh
dmFpbGFibGUgdG8gdGhlCittYWluIGJ1aWxkIGNhbiBiZSBkb25lIGEgZmV3IGRpZmZlcmVudCB3
YXlzOgorCisqICAgRG93bmxvYWQgdGhlIEdvb2dsZVRlc3Qgc291cmNlIGNvZGUgbWFudWFsbHkg
YW5kIHBsYWNlIGl0IGF0IGEga25vd24KKyAgICBsb2NhdGlvbi4gVGhpcyBpcyB0aGUgbGVhc3Qg
ZmxleGlibGUgYXBwcm9hY2ggYW5kIGNhbiBtYWtlIGl0IG1vcmUgZGlmZmljdWx0CisgICAgdG8g
dXNlIHdpdGggY29udGludW91cyBpbnRlZ3JhdGlvbiBzeXN0ZW1zLCBldGMuCisqICAgRW1iZWQg
dGhlIEdvb2dsZVRlc3Qgc291cmNlIGNvZGUgYXMgYSBkaXJlY3QgY29weSBpbiB0aGUgbWFpbiBw
cm9qZWN0J3MKKyAgICBzb3VyY2UgdHJlZS4gVGhpcyBpcyBvZnRlbiB0aGUgc2ltcGxlc3QgYXBw
cm9hY2gsIGJ1dCBpcyBhbHNvIHRoZSBoYXJkZXN0IHRvCisgICAga2VlcCB1cCB0byBkYXRlLiBT
b21lIG9yZ2FuaXphdGlvbnMgbWF5IG5vdCBwZXJtaXQgdGhpcyBtZXRob2QuCisqICAgQWRkIEdv
b2dsZVRlc3QgYXMgYSBnaXQgc3VibW9kdWxlIG9yIGVxdWl2YWxlbnQuIFRoaXMgbWF5IG5vdCBh
bHdheXMgYmUKKyAgICBwb3NzaWJsZSBvciBhcHByb3ByaWF0ZS4gR2l0IHN1Ym1vZHVsZXMsIGZv
ciBleGFtcGxlLCBoYXZlIHRoZWlyIG93biBzZXQgb2YKKyAgICBhZHZhbnRhZ2VzIGFuZCBkcmF3
YmFja3MuCisqICAgVXNlIENNYWtlIHRvIGRvd25sb2FkIEdvb2dsZVRlc3QgYXMgcGFydCBvZiB0
aGUgYnVpbGQncyBjb25maWd1cmUgc3RlcC4gVGhpcworICAgIGlzIGp1c3QgYSBsaXR0bGUgbW9y
ZSBjb21wbGV4LCBidXQgZG9lc24ndCBoYXZlIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgb3RoZXIK
KyAgICBtZXRob2RzLgorCitUaGUgbGFzdCBvZiB0aGUgYWJvdmUgbWV0aG9kcyBpcyBpbXBsZW1l
bnRlZCB3aXRoIGEgc21hbGwgcGllY2Ugb2YgQ01ha2UgY29kZSBpbgorYSBzZXBhcmF0ZSBmaWxl
IChlLmcuIGBDTWFrZUxpc3RzLnR4dC5pbmApIHdoaWNoIGlzIGNvcGllZCB0byB0aGUgYnVpbGQg
YXJlYSBhbmQKK3RoZW4gaW52b2tlZCBhcyBhIHN1Yi1idWlsZCBfZHVyaW5nIHRoZSBDTWFrZSBz
dGFnZV8uIFRoYXQgZGlyZWN0b3J5IGlzIHRoZW4KK3B1bGxlZCBpbnRvIHRoZSBtYWluIGJ1aWxk
IHdpdGggYGFkZF9zdWJkaXJlY3RvcnkoKWAuIEZvciBleGFtcGxlOgorCitOZXcgZmlsZSBgQ01h
a2VMaXN0cy50eHQuaW5gOgorCisgICAgY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDIu
OC4yKQorCisgICAgcHJvamVjdChnb29nbGV0ZXN0LWRvd25sb2FkIE5PTkUpCisKKyAgICBpbmNs
dWRlKEV4dGVybmFsUHJvamVjdCkKKyAgICBFeHRlcm5hbFByb2plY3RfQWRkKGdvb2dsZXRlc3QK
KyAgICAgIEdJVF9SRVBPU0lUT1JZICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xl
dGVzdC5naXQKKyAgICAgIEdJVF9UQUcgICAgICAgICAgIG1hc3RlcgorICAgICAgU09VUkNFX0RJ
UiAgICAgICAgIiR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1zcmMiCisgICAgICBCSU5B
UllfRElSICAgICAgICAiJHtDTUFLRV9CSU5BUllfRElSfS9nb29nbGV0ZXN0LWJ1aWxkIgorICAg
ICAgQ09ORklHVVJFX0NPTU1BTkQgIiIKKyAgICAgIEJVSUxEX0NPTU1BTkQgICAgICIiCisgICAg
ICBJTlNUQUxMX0NPTU1BTkQgICAiIgorICAgICAgVEVTVF9DT01NQU5EICAgICAgIiIKKyAgICAp
CisKK0V4aXN0aW5nIGJ1aWxkJ3MgYENNYWtlTGlzdHMudHh0YDoKKworICAgICMgRG93bmxvYWQg
YW5kIHVucGFjayBnb29nbGV0ZXN0IGF0IGNvbmZpZ3VyZSB0aW1lCisgICAgY29uZmlndXJlX2Zp
bGUoQ01ha2VMaXN0cy50eHQuaW4gZ29vZ2xldGVzdC1kb3dubG9hZC9DTWFrZUxpc3RzLnR4dCkK
KyAgICBleGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1HICIke0NNQUtF
X0dFTkVSQVRPUn0iIC4KKyAgICAgIFJFU1VMVF9WQVJJQUJMRSByZXN1bHQKKyAgICAgIFdPUktJ
TkdfRElSRUNUT1JZICR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1kb3dubG9hZCApCisg
ICAgaWYocmVzdWx0KQorICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiQ01ha2Ugc3RlcCBmb3Ig
Z29vZ2xldGVzdCBmYWlsZWQ6ICR7cmVzdWx0fSIpCisgICAgZW5kaWYoKQorICAgIGV4ZWN1dGVf
cHJvY2VzcyhDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLS1idWlsZCAuCisgICAgICBSRVNVTFRf
VkFSSUFCTEUgcmVzdWx0CisgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke0NNQUtFX0JJTkFSWV9E
SVJ9L2dvb2dsZXRlc3QtZG93bmxvYWQgKQorICAgIGlmKHJlc3VsdCkKKyAgICAgIG1lc3NhZ2Uo
RkFUQUxfRVJST1IgIkJ1aWxkIHN0ZXAgZm9yIGdvb2dsZXRlc3QgZmFpbGVkOiAke3Jlc3VsdH0i
KQorICAgIGVuZGlmKCkKKworICAgICMgUHJldmVudCBvdmVycmlkaW5nIHRoZSBwYXJlbnQgcHJv
amVjdCdzIGNvbXBpbGVyL2xpbmtlcgorICAgICMgc2V0dGluZ3Mgb24gV2luZG93cworICAgIHNl
dChndGVzdF9mb3JjZV9zaGFyZWRfY3J0IE9OIENBQ0hFIEJPT0wgIiIgRk9SQ0UpCisKKyAgICAj
IEFkZCBnb29nbGV0ZXN0IGRpcmVjdGx5IHRvIG91ciBidWlsZC4gVGhpcyBkZWZpbmVzCisgICAg
IyB0aGUgZ3Rlc3QgYW5kIGd0ZXN0X21haW4gdGFyZ2V0cy4KKyAgICBhZGRfc3ViZGlyZWN0b3J5
KCR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1zcmMKKyAgICAgICAgICAgICAgICAgICAg
ICR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1idWlsZAorICAgICAgICAgICAgICAgICAg
ICAgRVhDTFVERV9GUk9NX0FMTCkKKworICAgICMgVGhlIGd0ZXN0L2d0ZXN0X21haW4gdGFyZ2V0
cyBjYXJyeSBoZWFkZXIgc2VhcmNoIHBhdGgKKyAgICAjIGRlcGVuZGVuY2llcyBhdXRvbWF0aWNh
bGx5IHdoZW4gdXNpbmcgQ01ha2UgMi44LjExIG9yCisgICAgIyBsYXRlci4gT3RoZXJ3aXNlIHdl
IGhhdmUgdG8gYWRkIHRoZW0gaGVyZSBvdXJzZWx2ZXMuCisgICAgaWYgKENNQUtFX1ZFUlNJT04g
VkVSU0lPTl9MRVNTIDIuOC4xMSkKKyAgICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoIiR7Z3Rlc3Rf
U09VUkNFX0RJUn0vaW5jbHVkZSIpCisgICAgZW5kaWYoKQorCisgICAgIyBOb3cgc2ltcGx5IGxp
bmsgYWdhaW5zdCBndGVzdCBvciBndGVzdF9tYWluIGFzIG5lZWRlZC4gRWcKKyAgICBhZGRfZXhl
Y3V0YWJsZShleGFtcGxlIGV4YW1wbGUuY3BwKQorICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhl
eGFtcGxlIGd0ZXN0X21haW4pCisgICAgYWRkX3Rlc3QoTkFNRSBleGFtcGxlX3Rlc3QgQ09NTUFO
RCBleGFtcGxlKQorCitOb3RlIHRoYXQgdGhpcyBhcHByb2FjaCByZXF1aXJlcyBDTWFrZSAyLjgu
MiBvciBsYXRlciBkdWUgdG8gaXRzIHVzZSBvZiB0aGUKK2BFeHRlcm5hbFByb2plY3RfQWRkKClg
IGNvbW1hbmQuIFRoZSBhYm92ZSB0ZWNobmlxdWUgaXMgZGlzY3Vzc2VkIGluIG1vcmUgZGV0YWls
CitpbiBbdGhpcyBzZXBhcmF0ZSBhcnRpY2xlXShodHRwOi8vY3Jhc2NpdC5jb20vMjAxNS8wNy8y
NS9jbWFrZS1ndGVzdC8pIHdoaWNoCithbHNvIGNvbnRhaW5zIGEgbGluayB0byBhIGZ1bGx5IGdl
bmVyYWxpemVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSB0ZWNobmlxdWUuCisKKyMjIyMjIFZpc3Vh
bCBTdHVkaW8gRHluYW1pYyB2cyBTdGF0aWMgUnVudGltZXMKKworQnkgZGVmYXVsdCwgbmV3IFZp
c3VhbCBTdHVkaW8gcHJvamVjdHMgbGluayB0aGUgQyBydW50aW1lcyBkeW5hbWljYWxseSBidXQK
K0dvb2dsZSBUZXN0IGxpbmtzIHRoZW0gc3RhdGljYWxseS4gVGhpcyB3aWxsIGdlbmVyYXRlIGFu
IGVycm9yIHRoYXQgbG9va3MKK3NvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmc6IGd0ZXN0Lmxp
YihndGVzdC1hbGwub2JqKSA6IGVycm9yIExOSzIwMzg6IG1pc21hdGNoCitkZXRlY3RlZCBmb3Ig
J1J1bnRpbWVMaWJyYXJ5JzogdmFsdWUgJ01UZF9TdGF0aWNEZWJ1ZycgZG9lc24ndCBtYXRjaCB2
YWx1ZQorJ01EZF9EeW5hbWljRGVidWcnIGluIG1haW4ub2JqCisKK0dvb2dsZSBUZXN0IGFscmVh
ZHkgaGFzIGEgQ01ha2Ugb3B0aW9uIGZvciB0aGlzOiBgZ3Rlc3RfZm9yY2Vfc2hhcmVkX2NydGAK
KworRW5hYmxpbmcgdGhpcyBvcHRpb24gd2lsbCBtYWtlIGd0ZXN0IGxpbmsgdGhlIHJ1bnRpbWVz
IGR5bmFtaWNhbGx5IHRvbywgYW5kCittYXRjaCB0aGUgcHJvamVjdCBpbiB3aGljaCBpdCBpcyBp
bmNsdWRlZC4KKworIyMjIExlZ2FjeSBCdWlsZCBTY3JpcHRzCisKK0JlZm9yZSBzZXR0bGluZyBv
biBDTWFrZSwgd2UgaGF2ZSBiZWVuIHByb3ZpZGluZyBoYW5kLW1haW50YWluZWQgYnVpbGQKK3By
b2plY3RzL3NjcmlwdHMgZm9yIFZpc3VhbCBTdHVkaW8sIFhjb2RlLCBhbmQgQXV0b3Rvb2xzLiBX
aGlsZSB3ZSBjb250aW51ZSB0bworcHJvdmlkZSB0aGVtIGZvciBjb252ZW5pZW5jZSwgdGhleSBh
cmUgbm90IGFjdGl2ZWx5IG1haW50YWluZWQgYW55IG1vcmUuIFdlCitoaWdobHkgcmVjb21tZW5k
IHRoYXQgeW91IGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRoZSBhYm92ZSBzZWN0aW9ucyB0
bworaW50ZWdyYXRlIEdvb2dsZSBUZXN0IHdpdGggeW91ciBleGlzdGluZyBidWlsZCBzeXN0ZW0u
CisKK0lmIHlvdSBzdGlsbCBuZWVkIHRvIHVzZSB0aGUgbGVnYWN5IGJ1aWxkIHNjcmlwdHMsIGhl
cmUncyBob3c6CisKK1RoZSBtc3ZjXCBmb2xkZXIgY29udGFpbnMgdHdvIHNvbHV0aW9ucyB3aXRo
IFZpc3VhbCBDKysgcHJvamVjdHMuIE9wZW4gdGhlCitgZ3Rlc3Quc2xuYCBvciBgZ3Rlc3QtbWQu
c2xuYCBmaWxlIHVzaW5nIFZpc3VhbCBTdHVkaW8sIGFuZCB5b3UgYXJlIHJlYWR5IHRvCitidWls
ZCBHb29nbGUgVGVzdCB0aGUgc2FtZSB3YXkgeW91IGJ1aWxkIGFueSBWaXN1YWwgU3R1ZGlvIHBy
b2plY3QuIEZpbGVzIHRoYXQKK2hhdmUgbmFtZXMgZW5kaW5nIHdpdGggLW1kIHVzZSBETEwgdmVy
c2lvbnMgb2YgTWljcm9zb2Z0IHJ1bnRpbWUgbGlicmFyaWVzICh0aGUKKy9NRCBvciB0aGUgL01E
ZCBjb21waWxlciBvcHRpb24pLiBGaWxlcyB3aXRob3V0IHRoYXQgc3VmZml4IHVzZSBzdGF0aWMg
dmVyc2lvbnMKK29mIHRoZSBydW50aW1lIGxpYnJhcmllcyAodGhlIC9NVCBvciB0aGUgL01UZCBv
cHRpb24pLiBQbGVhc2Ugbm90ZSB0aGF0IG9uZSBtdXN0Cit1c2UgdGhlIHNhbWUgb3B0aW9uIHRv
IGNvbXBpbGUgYm90aCBndGVzdCBhbmQgdGhlIHRlc3QgY29kZS4gSWYgeW91IHVzZSBWaXN1YWwK
K1N0dWRpbyAyMDA1IG9yIGFib3ZlLCB3ZSByZWNvbW1lbmQgdGhlIC1tZCB2ZXJzaW9uIGFzIC9N
RCBpcyB0aGUgZGVmYXVsdCBmb3IgbmV3Citwcm9qZWN0cyBpbiB0aGVzZSB2ZXJzaW9ucyBvZiBW
aXN1YWwgU3R1ZGlvLgorCitPbiBNYWMgT1MgWCwgb3BlbiB0aGUgYGd0ZXN0Lnhjb2RlcHJvamAg
aW4gdGhlIGB4Y29kZS9gIGZvbGRlciB1c2luZyBYY29kZS4KK0J1aWxkIHRoZSAiZ3Rlc3QiIHRh
cmdldC4gVGhlIHVuaXZlcnNhbCBiaW5hcnkgZnJhbWV3b3JrIHdpbGwgZW5kIHVwIGluIHlvdXIK
K3NlbGVjdGVkIGJ1aWxkIGRpcmVjdG9yeSAoc2VsZWN0ZWQgaW4gdGhlIFhjb2RlICJQcmVmZXJl
bmNlcy4uLiIgLT4gIkJ1aWxkaW5nIgorcGFuZSBhbmQgZGVmYXVsdHMgdG8geGNvZGUvYnVpbGQp
LiBBbHRlcm5hdGl2ZWx5LCBhdCB0aGUgY29tbWFuZCBsaW5lLCBlbnRlcjoKKworICAgIHhjb2Rl
YnVpbGQKKworVGhpcyB3aWxsIGJ1aWxkIHRoZSAiUmVsZWFzZSIgY29uZmlndXJhdGlvbiBvZiBn
dGVzdC5mcmFtZXdvcmsgaW4geW91ciBkZWZhdWx0CitidWlsZCBsb2NhdGlvbi4gU2VlIHRoZSAi
eGNvZGVidWlsZCIgbWFuIHBhZ2UgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQKK2J1aWxkaW5n
IGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBhbmQgYnVpbGRpbmcgaW4gZGlmZmVyZW50IGxvY2F0
aW9ucy4KKworSWYgeW91IHdpc2ggdG8gdXNlIHRoZSBHb29nbGUgVGVzdCBYY29kZSBwcm9qZWN0
IHdpdGggWGNvZGUgNC54IGFuZCBhYm92ZSwgeW91CituZWVkIHRvIGVpdGhlcjoKKworKiAgIHVw
ZGF0ZSB0aGUgU0RLIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiB4Y29kZS9Db25maWcvR2VuZXJh
bC54Y29uZmlnLgorICAgIENvbW1lbnQgb3B0aW9ucyBgU0RLUk9PVGAsIGBNQUNPU19ERVBMT1lN
RU5UX1RBUkdFVGAsIGFuZCBgR0NDX1ZFUlNJT05gLiBJZgorICAgIHlvdSBjaG9vc2UgdGhpcyBy
b3V0ZSB5b3UgbG9zZSB0aGUgYWJpbGl0eSB0byB0YXJnZXQgZWFybGllciB2ZXJzaW9ucyBvZgor
ICAgIE1hY09TIFguCisqICAgSW5zdGFsbCBhbiBTREsgZm9yIGFuIGVhcmxpZXIgdmVyc2lvbi4g
VGhpcyBkb2Vzbid0IGFwcGVhciB0byBiZSBzdXBwb3J0ZWQKKyAgICBieSBBcHBsZSwgYnV0IGhh
cyBiZWVuIHJlcG9ydGVkIHRvIHdvcmsKKyAgICAoaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1
ZXN0aW9ucy81Mzc4NTE4KS4KKworIyMjIFR3ZWFraW5nIEdvb2dsZSBUZXN0CisKK0dvb2dsZSBU
ZXN0IGNhbiBiZSB1c2VkIGluIGRpdmVyc2UgZW52aXJvbm1lbnRzLiBUaGUgZGVmYXVsdCBjb25m
aWd1cmF0aW9uIG1heQorbm90IHdvcmsgKG9yIG1heSBub3Qgd29yayB3ZWxsKSBvdXQgb2YgdGhl
IGJveCBpbiBzb21lIGVudmlyb25tZW50cy4gSG93ZXZlciwKK3lvdSBjYW4gZWFzaWx5IHR3ZWFr
IEdvb2dsZSBUZXN0IGJ5IGRlZmluaW5nIGNvbnRyb2wgbWFjcm9zIG9uIHRoZSBjb21waWxlcgor
Y29tbWFuZCBsaW5lLiBHZW5lcmFsbHksIHRoZXNlIG1hY3JvcyBhcmUgbmFtZWQgbGlrZSBgR1RF
U1RfWFlaYCBhbmQgeW91IGRlZmluZQordGhlbSB0byBlaXRoZXIgMSBvciAwIHRvIGVuYWJsZSBv
ciBkaXNhYmxlIGEgY2VydGFpbiBmZWF0dXJlLgorCitXZSBsaXN0IHRoZSBtb3N0IGZyZXF1ZW50
bHkgdXNlZCBtYWNyb3MgYmVsb3cuIEZvciBhIGNvbXBsZXRlIGxpc3QsIHNlZSBmaWxlCitbaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmhdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29n
bGUvZ29vZ2xldGVzdC9ibG9iL21hc3Rlci9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaCkuCisKKyMjIyBDaG9vc2luZyBhIFRSMSBUdXBsZSBMaWJyYXJ5CisKK1NvbWUgR29vZ2xl
IFRlc3QgZmVhdHVyZXMgcmVxdWlyZSB0aGUgQysrIFRlY2huaWNhbCBSZXBvcnQgMSAoVFIxKSB0
dXBsZQorbGlicmFyeSwgd2hpY2ggaXMgbm90IHlldCBhdmFpbGFibGUgd2l0aCBhbGwgY29tcGls
ZXJzLiBUaGUgZ29vZCBuZXdzIGlzIHRoYXQKK0dvb2dsZSBUZXN0IGltcGxlbWVudHMgYSBzdWJz
ZXQgb2YgVFIxIHR1cGxlIHRoYXQncyBlbm91Z2ggZm9yIGl0cyBvd24gbmVlZCwgYW5kCit3aWxs
IGF1dG9tYXRpY2FsbHkgdXNlIHRoaXMgd2hlbiB0aGUgY29tcGlsZXIgZG9lc24ndCBwcm92aWRl
IFRSMSB0dXBsZS4KKworVXN1YWxseSB5b3UgZG9uJ3QgbmVlZCB0byBjYXJlIGFib3V0IHdoaWNo
IHR1cGxlIGxpYnJhcnkgR29vZ2xlIFRlc3QgdXNlcy4KK0hvd2V2ZXIsIGlmIHlvdXIgcHJvamVj
dCBhbHJlYWR5IHVzZXMgVFIxIHR1cGxlLCB5b3UgbmVlZCB0byB0ZWxsIEdvb2dsZSBUZXN0IHRv
Cit1c2UgdGhlIHNhbWUgVFIxIHR1cGxlIGxpYnJhcnkgdGhlIHJlc3Qgb2YgeW91ciBwcm9qZWN0
IHVzZXMsIG9yIHRoZSB0d28gdHVwbGUKK2ltcGxlbWVudGF0aW9ucyB3aWxsIGNsYXNoLiBUbyBk
byB0aGF0LCBhZGQKKworICAgIC1ER1RFU1RfVVNFX09XTl9UUjFfVFVQTEU9MAorCit0byB0aGUg
Y29tcGlsZXIgZmxhZ3Mgd2hpbGUgY29tcGlsaW5nIEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRlc3Rz
LiBJZiB5b3Ugd2FudCB0bworZm9yY2UgR29vZ2xlIFRlc3QgdG8gdXNlIGl0cyBvd24gdHVwbGUg
bGlicmFyeSwganVzdCBhZGQKKworICAgIC1ER1RFU1RfVVNFX09XTl9UUjFfVFVQTEU9MQorCit0
byB0aGUgY29tcGlsZXIgZmxhZ3MgaW5zdGVhZC4KKworSWYgeW91IGRvbid0IHdhbnQgR29vZ2xl
IFRlc3QgdG8gdXNlIHR1cGxlIGF0IGFsbCwgYWRkCisKKyAgICAtREdURVNUX0hBU19UUjFfVFVQ
TEU9MAorCithbmQgYWxsIGZlYXR1cmVzIHVzaW5nIHR1cGxlIHdpbGwgYmUgZGlzYWJsZWQuCisK
KyMjIyBNdWx0aS10aHJlYWRlZCBUZXN0cworCitHb29nbGUgVGVzdCBpcyB0aHJlYWQtc2FmZSB3
aGVyZSB0aGUgcHRocmVhZCBsaWJyYXJ5IGlzIGF2YWlsYWJsZS4gQWZ0ZXIKK2AjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCJgLCB5b3UgY2FuIGNoZWNrIHRoZSBgR1RFU1RfSVNfVEhSRUFEU0FGRWAg
bWFjcm8gdG8gc2VlCit3aGV0aGVyIHRoaXMgaXMgdGhlIGNhc2UgKHllcyBpZiB0aGUgbWFjcm8g
aXMgYCNkZWZpbmVkYCB0byAxLCBubyBpZiBpdCdzCit1bmRlZmluZWQuKS4KKworSWYgR29vZ2xl
IFRlc3QgZG9lc24ndCBjb3JyZWN0bHkgZGV0ZWN0IHdoZXRoZXIgcHRocmVhZCBpcyBhdmFpbGFi
bGUgaW4geW91cgorZW52aXJvbm1lbnQsIHlvdSBjYW4gZm9yY2UgaXQgd2l0aAorCisgICAgLURH
VEVTVF9IQVNfUFRIUkVBRD0xCisKK29yCisKKyAgICAtREdURVNUX0hBU19QVEhSRUFEPTAKKwor
V2hlbiBHb29nbGUgVGVzdCB1c2VzIHB0aHJlYWQsIHlvdSBtYXkgbmVlZCB0byBhZGQgZmxhZ3Mg
dG8geW91ciBjb21waWxlciBhbmQvb3IKK2xpbmtlciB0byBzZWxlY3QgdGhlIHB0aHJlYWQgbGli
cmFyeSwgb3IgeW91J2xsIGdldCBsaW5rIGVycm9ycy4gSWYgeW91IHVzZSB0aGUKK0NNYWtlIHNj
cmlwdCBvciB0aGUgZGVwcmVjYXRlZCBBdXRvdG9vbHMgc2NyaXB0LCB0aGlzIGlzIHRha2VuIGNh
cmUgb2YgZm9yIHlvdS4KK0lmIHlvdSB1c2UgeW91ciBvd24gYnVpbGQgc2NyaXB0LCB5b3UnbGwg
bmVlZCB0byByZWFkIHlvdXIgY29tcGlsZXIgYW5kIGxpbmtlcidzCittYW51YWwgdG8gZmlndXJl
IG91dCB3aGF0IGZsYWdzIHRvIGFkZC4KKworIyMjIEFzIGEgU2hhcmVkIExpYnJhcnkgKERMTCkK
KworR29vZ2xlIFRlc3QgaXMgY29tcGFjdCwgc28gbW9zdCB1c2VycyBjYW4gYnVpbGQgYW5kIGxp
bmsgaXQgYXMgYSBzdGF0aWMgbGlicmFyeQorZm9yIHRoZSBzaW1wbGljaXR5LiBZb3UgY2FuIGNo
b29zZSB0byB1c2UgR29vZ2xlIFRlc3QgYXMgYSBzaGFyZWQgbGlicmFyeSAoa25vd24KK2FzIGEg
RExMIG9uIFdpbmRvd3MpIGlmIHlvdSBwcmVmZXIuCisKK1RvIGNvbXBpbGUgKmd0ZXN0KiBhcyBh
IHNoYXJlZCBsaWJyYXJ5LCBhZGQKKworICAgIC1ER1RFU1RfQ1JFQVRFX1NIQVJFRF9MSUJSQVJZ
PTEKKwordG8gdGhlIGNvbXBpbGVyIGZsYWdzLiBZb3UnbGwgYWxzbyBuZWVkIHRvIHRlbGwgdGhl
IGxpbmtlciB0byBwcm9kdWNlIGEgc2hhcmVkCitsaWJyYXJ5IGluc3RlYWQgLSBjb25zdWx0IHlv
dXIgbGlua2VyJ3MgbWFudWFsIGZvciBob3cgdG8gZG8gaXQuCisKK1RvIGNvbXBpbGUgeW91ciAq
dGVzdHMqIHRoYXQgdXNlIHRoZSBndGVzdCBzaGFyZWQgbGlicmFyeSwgYWRkCisKKyAgICAtREdU
RVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFSWT0xCisKK3RvIHRoZSBjb21waWxlciBmbGFncy4K
KworTm90ZTogd2hpbGUgdGhlIGFib3ZlIHN0ZXBzIGFyZW4ndCB0ZWNobmljYWxseSBuZWNlc3Nh
cnkgdG9kYXkgd2hlbiB1c2luZyBzb21lCitjb21waWxlcnMgKGUuZy4gR0NDKSwgdGhleSBtYXkg
YmVjb21lIG5lY2Vzc2FyeSBpbiB0aGUgZnV0dXJlLCBpZiB3ZSBkZWNpZGUgdG8KK2ltcHJvdmUg
dGhlIHNwZWVkIG9mIGxvYWRpbmcgdGhlIGxpYnJhcnkgKHNlZQorPGh0dHA6Ly9nY2MuZ251Lm9y
Zy93aWtpL1Zpc2liaWxpdHk+IGZvciBkZXRhaWxzKS4gVGhlcmVmb3JlIHlvdSBhcmUgcmVjb21t
ZW5kZWQKK3RvIGFsd2F5cyBhZGQgdGhlIGFib3ZlIGZsYWdzIHdoZW4gdXNpbmcgR29vZ2xlIFRl
c3QgYXMgYSBzaGFyZWQgbGlicmFyeS4KK090aGVyd2lzZSBhIGZ1dHVyZSByZWxlYXNlIG9mIEdv
b2dsZSBUZXN0IG1heSBicmVhayB5b3VyIGJ1aWxkIHNjcmlwdC4KKworIyMjIEF2b2lkaW5nIE1h
Y3JvIE5hbWUgQ2xhc2hlcworCitJbiBDKyssIG1hY3JvcyBkb24ndCBvYmV5IG5hbWVzcGFjZXMu
IFRoZXJlZm9yZSB0d28gbGlicmFyaWVzIHRoYXQgYm90aCBkZWZpbmUgYQorbWFjcm8gb2YgdGhl
IHNhbWUgbmFtZSB3aWxsIGNsYXNoIGlmIHlvdSBgI2luY2x1ZGVgIGJvdGggZGVmaW5pdGlvbnMu
IEluIGNhc2UgYQorR29vZ2xlIFRlc3QgbWFjcm8gY2xhc2hlcyB3aXRoIGFub3RoZXIgbGlicmFy
eSwgeW91IGNhbiBmb3JjZSBHb29nbGUgVGVzdCB0bworcmVuYW1lIGl0cyBtYWNybyB0byBhdm9p
ZCB0aGUgY29uZmxpY3QuCisKK1NwZWNpZmljYWxseSwgaWYgYm90aCBHb29nbGUgVGVzdCBhbmQg
c29tZSBvdGhlciBjb2RlIGRlZmluZSBtYWNybyBGT08sIHlvdSBjYW4KK2FkZAorCisgICAgLURH
VEVTVF9ET05UX0RFRklORV9GT089MQorCit0byB0aGUgY29tcGlsZXIgZmxhZ3MgdG8gdGVsbCBH
b29nbGUgVGVzdCB0byBjaGFuZ2UgdGhlIG1hY3JvJ3MgbmFtZSBmcm9tIGBGT09gCit0byBgR1RF
U1RfRk9PYC4gQ3VycmVudGx5IGBGT09gIGNhbiBiZSBgRkFJTGAsIGBTVUNDRUVEYCwgb3IgYFRF
U1RgLiBGb3IKK2V4YW1wbGUsIHdpdGggYC1ER1RFU1RfRE9OVF9ERUZJTkVfVEVTVD0xYCwgeW91
J2xsIG5lZWQgdG8gd3JpdGUKKworICAgIEdURVNUX1RFU1QoU29tZVRlc3QsIERvZXNUaGlzKSB7
IC4uLiB9CisKK2luc3RlYWQgb2YKKworICAgIFRFU1QoU29tZVRlc3QsIERvZXNUaGlzKSB7IC4u
LiB9CisKK2luIG9yZGVyIHRvIGRlZmluZSBhIHRlc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9jbWFrZS9Db25maWcuY21ha2UuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9jbWFrZS9Db25maWcuY21ha2UuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJiZTQ0OThiMWEwNzk2ODFh
MTI5ZTMxYjE3YzU3ZTE4MTI2YTYzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2NtYWtlL0NvbmZpZy5jbWFrZS5pbgpAQCAtMCwwICsxLDkgQEAKK0BQQUNLQUdF
X0lOSVRACitpbmNsdWRlKENNYWtlRmluZERlcGVuZGVuY3lNYWNybykKK2lmIChAR1RFU1RfSEFT
X1BUSFJFQURAKQorICBzZXQoVEhSRUFEU19QUkVGRVJfUFRIUkVBRF9GTEFHIEBUSFJFQURTX1BS
RUZFUl9QVEhSRUFEX0ZMQUdAKQorICBmaW5kX2RlcGVuZGVuY3koVGhyZWFkcykKK2VuZGlmKCkK
KworaW5jbHVkZSgiJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9AdGFyZ2V0c19leHBvcnRfbmFt
ZUAuY21ha2UiKQorY2hlY2tfcmVxdWlyZWRfY29tcG9uZW50cygiQHByb2plY3RfbmFtZUAiKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvZ3Rlc3QucGMuaW4gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9ndGVzdC5wYy5pbgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzk2
N2FkNTZmZjJjMzJlZDRiYTA2NzAzYWVhNTI1ZGNhZDJjZTdiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvZ3Rlc3QucGMuaW4KQEAgLTAsMCArMSw5IEBA
CitsaWJkaXI9QENNQUtFX0lOU1RBTExfRlVMTF9MSUJESVJACitpbmNsdWRlZGlyPUBDTUFLRV9J
TlNUQUxMX0ZVTExfSU5DTFVERURJUkAKKworTmFtZTogZ3Rlc3QKK0Rlc2NyaXB0aW9uOiBHb29n
bGVUZXN0ICh3aXRob3V0IG1haW4oKSBmdW5jdGlvbikKK1ZlcnNpb246IEBQUk9KRUNUX1ZFUlNJ
T05ACitVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdAorTGliczogLUwk
e2xpYmRpcn0gLWxndGVzdCBAQ01BS0VfVEhSRUFEX0xJQlNfSU5JVEAKK0NmbGFnczogLUkke2lu
Y2x1ZGVkaXJ9IEBHVEVTVF9IQVNfUFRIUkVBRF9NQUNST0AgQENNQUtFX1RIUkVBRF9MSUJTX0lO
SVRACmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9ndGVzdF9tYWlu
LnBjLmluIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvZ3Rlc3RfbWFpbi5wYy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mZTI1ZDljNzNjNjgzYjY0MTdiOTliYjcwM2MxM2FlMTZiYThhOTUyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvZ3Rlc3RfbWFpbi5w
Yy5pbgpAQCAtMCwwICsxLDEwIEBACitsaWJkaXI9QENNQUtFX0lOU1RBTExfRlVMTF9MSUJESVJA
CitpbmNsdWRlZGlyPUBDTUFLRV9JTlNUQUxMX0ZVTExfSU5DTFVERURJUkAKKworTmFtZTogZ3Rl
c3RfbWFpbgorRGVzY3JpcHRpb246IEdvb2dsZVRlc3QgKHdpdGggbWFpbigpIGZ1bmN0aW9uKQor
VmVyc2lvbjogQFBST0pFQ1RfVkVSU0lPTkAKK1VSTDogaHR0cHM6Ly9naXRodWIuY29tL2dvb2ds
ZS9nb29nbGV0ZXN0CitSZXF1aXJlczogZ3Rlc3QKK0xpYnM6IC1MJHtsaWJkaXJ9IC1sZ3Rlc3Rf
bWFpbiBAQ01BS0VfVEhSRUFEX0xJQlNfSU5JVEAKK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9IEBH
VEVTVF9IQVNfUFRIUkVBRF9NQUNST0AgQENNQUtFX1RIUkVBRF9MSUJTX0lOSVRACmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9pbnRlcm5hbF91dGlscy5jbWFrZSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2ludGVybmFsX3V0aWxzLmNtYWtlCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhjMWY5YmE5OWNmNTA1NzRmNjY5ZGQ3ZGViYTMyNGRjZTQwNTk1ZjMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9pbnRlcm5hbF91dGlscy5j
bWFrZQpAQCAtMCwwICsxLDMxOCBAQAorIyBEZWZpbmVzIGZ1bmN0aW9ucyBhbmQgbWFjcm9zIHVz
ZWZ1bCBmb3IgYnVpbGRpbmcgR29vZ2xlIFRlc3QgYW5kCisjIEdvb2dsZSBNb2NrLgorIworIyBO
b3RlOgorIworIyAtIFRoaXMgZmlsZSB3aWxsIGJlIHJ1biB0d2ljZSB3aGVuIGJ1aWxkaW5nIEdv
b2dsZSBNb2NrIChvbmNlIHZpYQorIyAgIEdvb2dsZSBUZXN0J3MgQ01ha2VMaXN0cy50eHQsIGFu
ZCBvbmNlIHZpYSBHb29nbGUgTW9jaydzKS4KKyMgICBUaGVyZWZvcmUgaXQgc2hvdWxkbid0IGhh
dmUgYW55IHNpZGUgZWZmZWN0cyBvdGhlciB0aGFuIGRlZmluaW5nCisjICAgdGhlIGZ1bmN0aW9u
cyBhbmQgbWFjcm9zLgorIworIyAtIFRoZSBmdW5jdGlvbnMvbWFjcm9zIGRlZmluZWQgaW4gdGhp
cyBmaWxlIG1heSBkZXBlbmQgb24gR29vZ2xlCisjICAgVGVzdCBhbmQgR29vZ2xlIE1vY2sncyBv
cHRpb24oKSBkZWZpbml0aW9ucywgYW5kIHRodXMgbXVzdCBiZQorIyAgIGNhbGxlZCAqYWZ0ZXIq
IHRoZSBvcHRpb25zIGhhdmUgYmVlbiBkZWZpbmVkLgorCisjIFR3ZWFrcyBDTWFrZSdzIGRlZmF1
bHQgY29tcGlsZXIvbGlua2VyIHNldHRpbmdzIHRvIHN1aXQgR29vZ2xlIFRlc3QncyBuZWVkcy4K
KyMKKyMgVGhpcyBtdXN0IGJlIGEgbWFjcm8oKSwgYXMgaW5zaWRlIGEgZnVuY3Rpb24gc3RyaW5n
KCkgY2FuIG9ubHkKKyMgdXBkYXRlIHZhcmlhYmxlcyBpbiB0aGUgZnVuY3Rpb24gc2NvcGUuCitt
YWNybyhmaXhfZGVmYXVsdF9jb21waWxlcl9zZXR0aW5nc18pCisgIGlmIChNU1ZDKQorICAgICMg
Rm9yIE1TVkMsIENNYWtlIHNldHMgY2VydGFpbiBmbGFncyB0byBkZWZhdWx0cyB3ZSB3YW50IHRv
IG92ZXJyaWRlLgorICAgICMgVGhpcyByZXBsYWNlbWVudCBjb2RlIGlzIHRha2VuIGZyb20gc2Ft
cGxlIGluIHRoZSBDTWFrZSBXaWtpIGF0CisgICAgIyBodHRwczovL2dpdGxhYi5raXR3YXJlLmNv
bS9jbWFrZS9jb21tdW5pdHkvd2lraXMvRkFRI2R5bmFtaWMtcmVwbGFjZS4KKyAgICBmb3JlYWNo
IChmbGFnX3ZhcgorICAgICAgICAgICAgIENNQUtFX0NYWF9GTEFHUyBDTUFLRV9DWFhfRkxBR1Nf
REVCVUcgQ01BS0VfQ1hYX0ZMQUdTX1JFTEVBU0UKKyAgICAgICAgICAgICBDTUFLRV9DWFhfRkxB
R1NfTUlOU0laRVJFTCBDTUFLRV9DWFhfRkxBR1NfUkVMV0lUSERFQklORk8pCisgICAgICBpZiAo
Tk9UIEJVSUxEX1NIQVJFRF9MSUJTIEFORCBOT1QgZ3Rlc3RfZm9yY2Vfc2hhcmVkX2NydCkKKyAg
ICAgICAgIyBXaGVuIEdvb2dsZSBUZXN0IGlzIGJ1aWx0IGFzIGEgc2hhcmVkIGxpYnJhcnksIGl0
IHNob3VsZCBhbHNvIHVzZQorICAgICAgICAjIHNoYXJlZCBydW50aW1lIGxpYnJhcmllcy4gIE90
aGVyd2lzZSwgaXQgbWF5IGVuZCB1cCB3aXRoIG11bHRpcGxlCisgICAgICAgICMgY29waWVzIG9m
IHJ1bnRpbWUgbGlicmFyeSBkYXRhIGluIGRpZmZlcmVudCBtb2R1bGVzLCByZXN1bHRpbmcgaW4K
KyAgICAgICAgIyBoYXJkLXRvLWZpbmQgY3Jhc2hlcy4gV2hlbiBpdCBpcyBidWlsdCBhcyBhIHN0
YXRpYyBsaWJyYXJ5LCBpdCBpcworICAgICAgICAjIHByZWZlcmFibGUgdG8gdXNlIENSVCBhcyBz
dGF0aWMgbGlicmFyaWVzLCBhcyB3ZSBkb24ndCBoYXZlIHRvIHJlbHkKKyAgICAgICAgIyBvbiBD
UlQgRExMcyBiZWluZyBhdmFpbGFibGUuIENNYWtlIGFsd2F5cyBkZWZhdWx0cyB0byB1c2luZyBz
aGFyZWQKKyAgICAgICAgIyBDUlQgbGlicmFyaWVzLCBzbyB3ZSBvdmVycmlkZSB0aGF0IGRlZmF1
bHQgaGVyZS4KKyAgICAgICAgc3RyaW5nKFJFUExBQ0UgIi9NRCIgIi1NVCIgJHtmbGFnX3Zhcn0g
IiR7JHtmbGFnX3Zhcn19IikKKyAgICAgIGVuZGlmKCkKKworICAgICAgIyBXZSBwcmVmZXIgbW9y
ZSBzdHJpY3Qgd2FybmluZyBjaGVja2luZyBmb3IgYnVpbGRpbmcgR29vZ2xlIFRlc3QuCisgICAg
ICAjIFJlcGxhY2VzIC9XMyB3aXRoIC9XNCBpbiBkZWZhdWx0cy4KKyAgICAgIHN0cmluZyhSRVBM
QUNFICIvVzMiICIvVzQiICR7ZmxhZ192YXJ9ICIkeyR7ZmxhZ192YXJ9fSIpCisKKyAgICAgICMg
UHJldmVudCBEOTAyNSB3YXJuaW5nIGZvciB0YXJnZXRzIHRoYXQgaGF2ZSBleGNlcHRpb24gaGFu
ZGxpbmcKKyAgICAgICMgdHVybmVkIG9mZiAoL0VIcy1jLSBmbGFnKS4gV2hlcmUgcmVxdWlyZWQs
IGV4Y2VwdGlvbnMgYXJlIGV4cGxpY2l0bHkKKyAgICAgICMgcmUtZW5hYmxlZCB1c2luZyB0aGUg
Y3h4X2V4Y2VwdGlvbl9mbGFncyB2YXJpYWJsZS4KKyAgICAgIHN0cmluZyhSRVBMQUNFICIvRUhz
YyIgIiIgJHtmbGFnX3Zhcn0gIiR7JHtmbGFnX3Zhcn19IikKKyAgICBlbmRmb3JlYWNoKCkKKyAg
ZW5kaWYoKQorZW5kbWFjcm8oKQorCisjIERlZmluZXMgdGhlIGNvbXBpbGVyL2xpbmtlciBmbGFn
cyB1c2VkIHRvIGJ1aWxkIEdvb2dsZSBUZXN0IGFuZAorIyBHb29nbGUgTW9jay4gIFlvdSBjYW4g
dHdlYWsgdGhlc2UgZGVmaW5pdGlvbnMgdG8gc3VpdCB5b3VyIG5lZWQuICBBCisjIHZhcmlhYmxl
J3MgdmFsdWUgaXMgZW1wdHkgYmVmb3JlIGl0J3MgZXhwbGljaXRseSBhc3NpZ25lZCB0by4KK21h
Y3JvKGNvbmZpZ19jb21waWxlcl9hbmRfbGlua2VyKQorICAjIE5vdGU6IHB0aHJlYWRzIG9uIE1p
bkdXIGlzIG5vdCBzdXBwb3J0ZWQsIGV2ZW4gaWYgYXZhaWxhYmxlCisgICMgaW5zdGVhZCwgd2Ug
dXNlIHdpbmRvd3MgdGhyZWFkaW5nIHByaW1pdGl2ZXMKKyAgdW5zZXQoR1RFU1RfSEFTX1BUSFJF
QUQpCisgIGlmIChOT1QgZ3Rlc3RfZGlzYWJsZV9wdGhyZWFkcyBBTkQgTk9UIE1JTkdXKQorICAg
ICMgRGVmaW5lcyBDTUFLRV9VU0VfUFRIUkVBRFNfSU5JVCBhbmQgQ01BS0VfVEhSRUFEX0xJQlNf
SU5JVC4KKyAgICBzZXQoVEhSRUFEU19QUkVGRVJfUFRIUkVBRF9GTEFHIE9OKQorICAgIGZpbmRf
cGFja2FnZShUaHJlYWRzKQorICAgIGlmIChDTUFLRV9VU0VfUFRIUkVBRFNfSU5JVCkKKyAgICAg
IHNldChHVEVTVF9IQVNfUFRIUkVBRCBPTikKKyAgICBlbmRpZigpCisgIGVuZGlmKCkKKworICBm
aXhfZGVmYXVsdF9jb21waWxlcl9zZXR0aW5nc18oKQorICBpZiAoTVNWQykKKyAgICAjIE5ld2xp
bmVzIGluc2lkZSBmbGFncyB2YXJpYWJsZXMgYnJlYWsgQ01ha2UncyBOTWFrZSBnZW5lcmF0b3Iu
CisgICAgIyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBBZGQgLVJUQ3MgYW5kIC1SVEN1IHRvIGRl
YnVnIGJ1aWxkcy4KKyAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIi1HUyAtVzQgLVdYIC13ZDQyNTEg
LXdkNDI3NSAtbm9sb2dvIC1KIC1aaSIpCisgICAgaWYgKE1TVkNfVkVSU0lPTiBMRVNTIDE0MDAp
ICAjIDE0MDAgaXMgVmlzdWFsIFN0dWRpbyAyMDA1CisgICAgICAjIFN1cHByZXNzIHNwdXJpb3Vz
IHdhcm5pbmdzIE1TVkMgNy4xIHNvbWV0aW1lcyBpc3N1ZXMuCisgICAgICAjIEZvcmNpbmcgdmFs
dWUgdG8gYm9vbC4KKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30g
LXdkNDgwMCIpCisgICAgICAjIENvcHkgY29uc3RydWN0b3IgYW5kIGFzc2lnbm1lbnQgb3BlcmF0
b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZC4KKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtj
eHhfYmFzZV9mbGFnc30gLXdkNDUxMSAtd2Q0NTEyIikKKyAgICAgICMgQ29tcGF0aWJpbGl0eSB3
YXJuaW5ncyBub3QgYXBwbGljYWJsZSB0byBHb29nbGUgVGVzdC4KKyAgICAgICMgUmVzb2x2ZWQg
b3ZlcmxvYWQgd2FzIGZvdW5kIGJ5IGFyZ3VtZW50LWRlcGVuZGVudCBsb29rdXAuCisgICAgICBz
ZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC13ZDQ2NzUiKQorICAgIGVuZGlm
KCkKKyAgICBpZiAoTVNWQ19WRVJTSU9OIExFU1MgMTUwMCkgICMgMTUwMCBpcyBWaXN1YWwgU3R1
ZGlvIDIwMDgKKyAgICAgICMgQ29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudC4KKyAg
ICAgICMgV2hlbiBjb21waWxpbmcgd2l0aCAvVzQsIHdlIGdldCBzZXZlcmFsIGluc3RhbmNlcyBv
ZiBDNDEyNworICAgICAgIyAoQ29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudCkuIElu
IG91ciBjb2RlLCB3ZSBkaXNhYmxlIHRoYXQKKyAgICAgICMgd2FybmluZyBvbiBhIGNhc2UtYnkt
Y2FzZSBiYXNpcy4gSG93ZXZlciwgb24gVmlzdWFsIFN0dWRpbyAyMDA1LAorICAgICAgIyB0aGUg
d2FybmluZyBmaXJlcyBvbiBzdGQ6Omxpc3QuIFRoZXJlZm9yZSBvbiB0aGF0IGNvbXBpbGVyIGFu
ZCBlYXJsaWVyLAorICAgICAgIyB3ZSBkaXNhYmxlIHRoZSB3YXJuaW5nIHByb2plY3Qtd2lkZS4K
KyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLXdkNDEyNyIpCisg
ICAgZW5kaWYoKQorICAgIGlmIChOT1QgKE1TVkNfVkVSU0lPTiBMRVNTIDE3MDApKSAgIyAxNzAw
IGlzIFZpc3VhbCBTdHVkaW8gMjAxMi4KKyAgICAgICMgU3VwcHJlc3MgInVucmVhY2hhYmxlIGNv
ZGUiIHdhcm5pbmcgb24gVlMgMjAxMiBhbmQgbGF0ZXIuCisgICAgICAjIGh0dHA6Ly9zdGFja292
ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzIzMjY2OSBleHBsYWlucyB0aGUgaXNzdWUuCisgICAgICBz
ZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC13ZDQ3MDIiKQorICAgIGVuZGlm
KCkKKworICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLURfVU5JQ09E
RSAtRFVOSUNPREUgLURXSU4zMiAtRF9XSU4zMiIpCisgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIk
e2N4eF9iYXNlX2ZsYWdzfSAtRFNUUklDVCAtRFdJTjMyX0xFQU5fQU5EX01FQU4iKQorICAgIHNl
dChjeHhfZXhjZXB0aW9uX2ZsYWdzICItRUhzYyAtRF9IQVNfRVhDRVBUSU9OUz0xIikKKyAgICBz
ZXQoY3h4X25vX2V4Y2VwdGlvbl9mbGFncyAiLUVIcy1jLSAtRF9IQVNfRVhDRVBUSU9OUz0wIikK
KyAgICBzZXQoY3h4X25vX3J0dGlfZmxhZ3MgIi1HUi0iKQorICBlbHNlaWYgKENNQUtFX0NPTVBJ
TEVSX0lTX0dOVUNYWCkKKyAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIi1XYWxsIC1Xc2hhZG93IC1X
ZXJyb3IiKQorICAgIGlmKE5PVCBDTUFLRV9DWFhfQ09NUElMRVJfVkVSU0lPTiBWRVJTSU9OX0xF
U1MgNy4wLjApCisgICAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC1X
bm8tZXJyb3I9ZGFuZ2xpbmctZWxzZSIpCisgICAgZW5kaWYoKQorICAgIHNldChjeHhfZXhjZXB0
aW9uX2ZsYWdzICItZmV4Y2VwdGlvbnMiKQorICAgIHNldChjeHhfbm9fZXhjZXB0aW9uX2ZsYWdz
ICItZm5vLWV4Y2VwdGlvbnMiKQorICAgICMgVW50aWwgdmVyc2lvbiA0LjMuMiwgR0NDIGRvZXNu
J3QgZGVmaW5lIGEgbWFjcm8gdG8gaW5kaWNhdGUKKyAgICAjIHdoZXRoZXIgUlRUSSBpcyBlbmFi
bGVkLiAgVGhlcmVmb3JlIHdlIGRlZmluZSBHVEVTVF9IQVNfUlRUSQorICAgICMgZXhwbGljaXRs
eS4KKyAgICBzZXQoY3h4X25vX3J0dGlfZmxhZ3MgIi1mbm8tcnR0aSAtREdURVNUX0hBU19SVFRJ
PTAiKQorICAgIHNldChjeHhfc3RyaWN0X2ZsYWdzCisgICAgICAiLVdleHRyYSAtV25vLXVudXNl
ZC1wYXJhbWV0ZXIgLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyIpCisgIGVsc2VpZiAo
Q01BS0VfQ1hYX0NPTVBJTEVSX0lEIFNUUkVRVUFMICJTdW5Qcm8iKQorICAgIHNldChjeHhfZXhj
ZXB0aW9uX2ZsYWdzICItZmVhdHVyZXM9ZXhjZXB0IikKKyAgICAjIFN1biBQcm8gZG9lc24ndCBw
cm92aWRlIG1hY3JvcyB0byBpbmRpY2F0ZSB3aGV0aGVyIGV4Y2VwdGlvbnMgYW5kCisgICAgIyBS
VFRJIGFyZSBlbmFibGVkLCBzbyB3ZSBkZWZpbmUgR1RFU1RfSEFTXyogZXhwbGljaXRseS4KKyAg
ICBzZXQoY3h4X25vX2V4Y2VwdGlvbl9mbGFncyAiLWZlYXR1cmVzPW5vJWV4Y2VwdCAtREdURVNU
X0hBU19FWENFUFRJT05TPTAiKQorICAgIHNldChjeHhfbm9fcnR0aV9mbGFncyAiLWZlYXR1cmVz
PW5vJXJ0dGkgLURHVEVTVF9IQVNfUlRUST0wIikKKyAgZWxzZWlmIChDTUFLRV9DWFhfQ09NUElM
RVJfSUQgU1RSRVFVQUwgIlZpc3VhbEFnZSIgT1IKKyAgICAgIENNQUtFX0NYWF9DT01QSUxFUl9J
RCBTVFJFUVVBTCAiWEwiKQorICAgICMgQ01ha2UgMi44IGNoYW5nZXMgVmlzdWFsIEFnZSdzIGNv
bXBpbGVyIElEIHRvICJYTCIuCisgICAgc2V0KGN4eF9leGNlcHRpb25fZmxhZ3MgIi1xZWgiKQor
ICAgIHNldChjeHhfbm9fZXhjZXB0aW9uX2ZsYWdzICItcW5vZWgiKQorICAgICMgVW50aWwgdmVy
c2lvbiA5LjAsIFZpc3VhbCBBZ2UgZG9lc24ndCBkZWZpbmUgYSBtYWNybyB0byBpbmRpY2F0ZQor
ICAgICMgd2hldGhlciBSVFRJIGlzIGVuYWJsZWQuICBUaGVyZWZvcmUgd2UgZGVmaW5lIEdURVNU
X0hBU19SVFRJCisgICAgIyBleHBsaWNpdGx5LgorICAgIHNldChjeHhfbm9fcnR0aV9mbGFncyAi
LXFub3J0dGkgLURHVEVTVF9IQVNfUlRUST0wIikKKyAgZWxzZWlmIChDTUFLRV9DWFhfQ09NUElM
RVJfSUQgU1RSRVFVQUwgIkhQIikKKyAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIi1BQSAtbXQiKQor
ICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICItREdURVNUX0hBU19FWENFUFRJT05TPTEiKQor
ICAgIHNldChjeHhfbm9fZXhjZXB0aW9uX2ZsYWdzICIrbm9laCAtREdURVNUX0hBU19FWENFUFRJ
T05TPTAiKQorICAgICMgUlRUSSBjYW4gbm90IGJlIGRpc2FibGVkIGluIEhQIGFDQyBjb21waWxl
ci4KKyAgICBzZXQoY3h4X25vX3J0dGlfZmxhZ3MgIiIpCisgIGVuZGlmKCkKKworICAjIFRoZSBw
dGhyZWFkcyBsaWJyYXJ5IGlzIGF2YWlsYWJsZSBhbmQgYWxsb3dlZD8KKyAgaWYgKERFRklORUQg
R1RFU1RfSEFTX1BUSFJFQUQpCisgICAgc2V0KEdURVNUX0hBU19QVEhSRUFEX01BQ1JPICItREdU
RVNUX0hBU19QVEhSRUFEPTEiKQorICBlbHNlKCkKKyAgICBzZXQoR1RFU1RfSEFTX1BUSFJFQURf
TUFDUk8gIi1ER1RFU1RfSEFTX1BUSFJFQUQ9MCIpCisgIGVuZGlmKCkKKyAgc2V0KGN4eF9iYXNl
X2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAke0dURVNUX0hBU19QVEhSRUFEX01BQ1JPfSIpCisK
KyAgIyBGb3IgYnVpbGRpbmcgZ3Rlc3QncyBvd24gdGVzdHMgYW5kIHNhbXBsZXMuCisgIHNldChj
eHhfZXhjZXB0aW9uICIke2N4eF9iYXNlX2ZsYWdzfSAke2N4eF9leGNlcHRpb25fZmxhZ3N9IikK
KyAgc2V0KGN4eF9ub19leGNlcHRpb24KKyAgICAiJHtDTUFLRV9DWFhfRkxBR1N9ICR7Y3h4X2Jh
c2VfZmxhZ3N9ICR7Y3h4X25vX2V4Y2VwdGlvbl9mbGFnc30iKQorICBzZXQoY3h4X2RlZmF1bHQg
IiR7Y3h4X2V4Y2VwdGlvbn0iKQorICBzZXQoY3h4X25vX3J0dGkgIiR7Y3h4X2RlZmF1bHR9ICR7
Y3h4X25vX3J0dGlfZmxhZ3N9IikKKyAgc2V0KGN4eF91c2Vfb3duX3R1cGxlICIke2N4eF9kZWZh
dWx0fSAtREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTEiKQorCisgICMgRm9yIGJ1aWxkaW5nIHRo
ZSBndGVzdCBsaWJyYXJpZXMuCisgIHNldChjeHhfc3RyaWN0ICIke2N4eF9kZWZhdWx0fSAke2N4
eF9zdHJpY3RfZmxhZ3N9IikKK2VuZG1hY3JvKCkKKworIyBEZWZpbmVzIHRoZSBndGVzdCAmIGd0
ZXN0X21haW4gbGlicmFyaWVzLiAgVXNlciB0ZXN0cyBzaG91bGQgbGluaworIyB3aXRoIG9uZSBv
ZiB0aGVtLgorZnVuY3Rpb24oY3h4X2xpYnJhcnlfd2l0aF90eXBlIG5hbWUgdHlwZSBjeHhfZmxh
Z3MpCisgICMgdHlwZSBjYW4gYmUgZWl0aGVyIFNUQVRJQyBvciBTSEFSRUQgdG8gZGVub3RlIGEg
c3RhdGljIG9yIHNoYXJlZCBsaWJyYXJ5LgorICAjIEFSR04gcmVmZXJzIHRvIGFkZGl0aW9uYWwg
YXJndW1lbnRzIGFmdGVyICdjeHhfZmxhZ3MnLgorICBhZGRfbGlicmFyeSgke25hbWV9ICR7dHlw
ZX0gJHtBUkdOfSkKKyAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7bmFtZX0KKyAgICBQUk9QRVJU
SUVTCisgICAgQ09NUElMRV9GTEFHUyAiJHtjeHhfZmxhZ3N9IikKKyAgIyBHZW5lcmF0ZSBkZWJ1
ZyBsaWJyYXJ5IG5hbWUgd2l0aCBhIHBvc3RmaXguCisgIHNldF90YXJnZXRfcHJvcGVydGllcygk
e25hbWV9CisgICAgUFJPUEVSVElFUworICAgIERFQlVHX1BPU1RGSVggImQiKQorICBpZiAoQlVJ
TERfU0hBUkVEX0xJQlMgT1IgdHlwZSBTVFJFUVVBTCAiU0hBUkVEIikKKyAgICBzZXRfdGFyZ2V0
X3Byb3BlcnRpZXMoJHtuYW1lfQorICAgICAgUFJPUEVSVElFUworICAgICAgQ09NUElMRV9ERUZJ
TklUSU9OUyAiR1RFU1RfQ1JFQVRFX1NIQVJFRF9MSUJSQVJZPTEiKQorICAgIGlmIChOT1QgIiR7
Q01BS0VfVkVSU0lPTn0iIFZFUlNJT05fTEVTUyAiMi44LjExIikKKyAgICAgIHRhcmdldF9jb21w
aWxlX2RlZmluaXRpb25zKCR7bmFtZX0gSU5URVJGQUNFCisgICAgICAgICQ8SU5TVEFMTF9JTlRF
UkZBQ0U6R1RFU1RfTElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZPTE+KQorICAgIGVuZGlmKCkKKyAg
ZW5kaWYoKQorICBpZiAoREVGSU5FRCBHVEVTVF9IQVNfUFRIUkVBRCkKKyAgICBpZiAoIiR7Q01B
S0VfVkVSU0lPTn0iIFZFUlNJT05fTEVTUyAiMy4xLjAiKQorICAgICAgc2V0KHRocmVhZHNfc3Bl
YyAke0NNQUtFX1RIUkVBRF9MSUJTX0lOSVR9KQorICAgIGVsc2UoKQorICAgICAgc2V0KHRocmVh
ZHNfc3BlYyBUaHJlYWRzOjpUaHJlYWRzKQorICAgIGVuZGlmKCkKKyAgICB0YXJnZXRfbGlua19s
aWJyYXJpZXMoJHtuYW1lfSBQVUJMSUMgJHt0aHJlYWRzX3NwZWN9KQorICBlbmRpZigpCitlbmRm
dW5jdGlvbigpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBIZWxwZXIgZnVuY3Rpb25zIGZvciBj
cmVhdGluZyBidWlsZCB0YXJnZXRzLgorCitmdW5jdGlvbihjeHhfc2hhcmVkX2xpYnJhcnkgbmFt
ZSBjeHhfZmxhZ3MpCisgIGN4eF9saWJyYXJ5X3dpdGhfdHlwZSgke25hbWV9IFNIQVJFRCAiJHtj
eHhfZmxhZ3N9IiAke0FSR059KQorZW5kZnVuY3Rpb24oKQorCitmdW5jdGlvbihjeHhfbGlicmFy
eSBuYW1lIGN4eF9mbGFncykKKyAgY3h4X2xpYnJhcnlfd2l0aF90eXBlKCR7bmFtZX0gIiIgIiR7
Y3h4X2ZsYWdzfSIgJHtBUkdOfSkKK2VuZGZ1bmN0aW9uKCkKKworIyBjeHhfZXhlY3V0YWJsZV93
aXRoX2ZsYWdzKG5hbWUgY3h4X2ZsYWdzIGxpYnMgc3Jjcy4uLikKKyMKKyMgY3JlYXRlcyBhIG5h
bWVkIEMrKyBleGVjdXRhYmxlIHRoYXQgZGVwZW5kcyBvbiB0aGUgZ2l2ZW4gbGlicmFyaWVzIGFu
ZAorIyBpcyBidWlsdCBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmlsZXMgd2l0aCB0aGUgZ2l2ZW4g
Y29tcGlsZXIgZmxhZ3MuCitmdW5jdGlvbihjeHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzIG5hbWUg
Y3h4X2ZsYWdzIGxpYnMpCisgIGFkZF9leGVjdXRhYmxlKCR7bmFtZX0gJHtBUkdOfSkKKyAgaWYg
KE1TVkMgQU5EIChOT1QgKE1TVkNfVkVSU0lPTiBMRVNTIDE3MDApKSkgICMgMTcwMCBpcyBWaXN1
YWwgU3R1ZGlvIDIwMTIuCisgICAgIyBCaWdPYmogcmVxdWlyZWQgZm9yIHRlc3RzLgorICAgIHNl
dChjeHhfZmxhZ3MgIiR7Y3h4X2ZsYWdzfSAtYmlnb2JqIikKKyAgZW5kaWYoKQorICBpZiAoY3h4
X2ZsYWdzKQorICAgIHNldF90YXJnZXRfcHJvcGVydGllcygke25hbWV9CisgICAgICBQUk9QRVJU
SUVTCisgICAgICBDT01QSUxFX0ZMQUdTICIke2N4eF9mbGFnc30iKQorICBlbmRpZigpCisgIGlm
IChCVUlMRF9TSEFSRURfTElCUykKKyAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtuYW1lfQor
ICAgICAgUFJPUEVSVElFUworICAgICAgQ09NUElMRV9ERUZJTklUSU9OUyAiR1RFU1RfTElOS0VE
X0FTX1NIQVJFRF9MSUJSQVJZPTEiKQorICBlbmRpZigpCisgICMgVG8gc3VwcG9ydCBtaXhpbmcg
bGlua2luZyBpbiBzdGF0aWMgYW5kIGR5bmFtaWMgbGlicmFyaWVzLCBsaW5rIGVhY2gKKyAgIyBs
aWJyYXJ5IGluIHdpdGggYW4gZXh0cmEgY2FsbCB0byB0YXJnZXRfbGlua19saWJyYXJpZXMuCisg
IGZvcmVhY2ggKGxpYiAiJHtsaWJzfSIpCisgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7bmFt
ZX0gJHtsaWJ9KQorICBlbmRmb3JlYWNoKCkKK2VuZGZ1bmN0aW9uKCkKKworIyBjeHhfZXhlY3V0
YWJsZShuYW1lIGRpciBsaWIgc3Jjcy4uLikKKyMKKyMgY3JlYXRlcyBhIG5hbWVkIHRhcmdldCB0
aGF0IGRlcGVuZHMgb24gdGhlIGdpdmVuIGxpYnMgYW5kIGlzIGJ1aWx0CisjIGZyb20gdGhlIGdp
dmVuIHNvdXJjZSBmaWxlcy4gIGRpci9uYW1lLmNjIGlzIGltcGxpY2l0bHkgaW5jbHVkZWQgaW4K
KyMgdGhlIHNvdXJjZSBmaWxlIGxpc3QuCitmdW5jdGlvbihjeHhfZXhlY3V0YWJsZSBuYW1lIGRp
ciBsaWJzKQorICBjeHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzKAorICAgICR7bmFtZX0gIiR7Y3h4
X2RlZmF1bHR9IiAiJHtsaWJzfSIgIiR7ZGlyfS8ke25hbWV9LmNjIiAke0FSR059KQorZW5kZnVu
Y3Rpb24oKQorCisjIFNldHMgUFlUSE9OSU5URVJQX0ZPVU5EIGFuZCBQWVRIT05fRVhFQ1VUQUJM
RS4KK2ZpbmRfcGFja2FnZShQeXRob25JbnRlcnApCisKKyMgY3h4X3Rlc3Rfd2l0aF9mbGFncyhu
YW1lIGN4eF9mbGFncyBsaWJzIHNyY3MuLi4pCisjCisjIGNyZWF0ZXMgYSBuYW1lZCBDKysgdGVz
dCB0aGF0IGRlcGVuZHMgb24gdGhlIGdpdmVuIGxpYnMgYW5kIGlzIGJ1aWx0CisjIGZyb20gdGhl
IGdpdmVuIHNvdXJjZSBmaWxlcyB3aXRoIHRoZSBnaXZlbiBjb21waWxlciBmbGFncy4KK2Z1bmN0
aW9uKGN4eF90ZXN0X3dpdGhfZmxhZ3MgbmFtZSBjeHhfZmxhZ3MgbGlicykKKyAgY3h4X2V4ZWN1
dGFibGVfd2l0aF9mbGFncygke25hbWV9ICIke2N4eF9mbGFnc30iICIke2xpYnN9IiAke0FSR059
KQorICBhZGRfdGVzdChOQU1FICR7bmFtZX0gQ09NTUFORCAke25hbWV9KQorZW5kZnVuY3Rpb24o
KQorCisjIGN4eF90ZXN0KG5hbWUgbGlicyBzcmNzLi4uKQorIworIyBjcmVhdGVzIGEgbmFtZWQg
dGVzdCB0YXJnZXQgdGhhdCBkZXBlbmRzIG9uIHRoZSBnaXZlbiBsaWJzIGFuZCBpcworIyBidWls
dCBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmlsZXMuICBVbmxpa2UgY3h4X3Rlc3Rfd2l0aF9mbGFn
cywKKyMgdGVzdC9uYW1lLmNjIGlzIGFscmVhZHkgaW1wbGljaXRseSBpbmNsdWRlZCBpbiB0aGUg
c291cmNlIGZpbGUgbGlzdC4KK2Z1bmN0aW9uKGN4eF90ZXN0IG5hbWUgbGlicykKKyAgY3h4X3Rl
c3Rfd2l0aF9mbGFncygiJHtuYW1lfSIgIiR7Y3h4X2RlZmF1bHR9IiAiJHtsaWJzfSIKKyAgICAi
dGVzdC8ke25hbWV9LmNjIiAke0FSR059KQorZW5kZnVuY3Rpb24oKQorCisjIHB5X3Rlc3QobmFt
ZSkKKyMKKyMgY3JlYXRlcyBhIFB5dGhvbiB0ZXN0IHdpdGggdGhlIGdpdmVuIG5hbWUgd2hvc2Ug
bWFpbiBtb2R1bGUgaXMgaW4KKyMgdGVzdC9uYW1lLnB5LiAgSXQgZG9lcyBub3RoaW5nIGlmIFB5
dGhvbiBpcyBub3QgaW5zdGFsbGVkLgorZnVuY3Rpb24ocHlfdGVzdCBuYW1lKQorICBpZiAoUFlU
SE9OSU5URVJQX0ZPVU5EKQorICAgIGlmICgke0NNQUtFX01BSk9SX1ZFUlNJT059LiR7Q01BS0Vf
TUlOT1JfVkVSU0lPTn0gR1JFQVRFUiAzLjEpCisgICAgICBpZiAoQ01BS0VfQ09ORklHVVJBVElP
Tl9UWVBFUykKKwkjIE11bHRpLWNvbmZpZ3VyYXRpb24gYnVpbGQgZ2VuZXJhdG9ycyBhcyBmb3Ig
VmlzdWFsIFN0dWRpbyBzYXZlCisJIyBvdXRwdXQgaW4gYSBzdWJkaXJlY3Rvcnkgb2YgQ01BS0Vf
Q1VSUkVOVF9CSU5BUllfRElSIChEZWJ1ZywKKwkjIFJlbGVhc2UgZXRjLiksIHNvIHdlIGhhdmUg
dG8gcHJvdmlkZSBpdCBoZXJlLgorICAgICAgICBhZGRfdGVzdCgKKyAgICAgICAgICBOQU1FICR7
bmFtZX0KKyAgICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS90ZXN0LyR7bmFtZX0ucHkKKyAgICAgICAgICAgICAgLS1idWlsZF9k
aXI9JHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9LyQ8Q09ORklHPiAke0FSR059KQorICAgICAg
ZWxzZSAoQ01BS0VfQ09ORklHVVJBVElPTl9UWVBFUykKKwkjIFNpbmdsZS1jb25maWd1cmF0aW9u
IGJ1aWxkIGdlbmVyYXRvcnMgbGlrZSBNYWtlZmlsZSBnZW5lcmF0b3JzCisJIyBkb24ndCBoYXZl
IHN1YmRpcnMgYmVsb3cgQ01BS0VfQ1VSUkVOVF9CSU5BUllfRElSLgorICAgICAgICBhZGRfdGVz
dCgKKyAgICAgICAgICBOQU1FICR7bmFtZX0KKyAgICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VY
RUNVVEFCTEV9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS90ZXN0LyR7bmFtZX0ucHkKKyAg
ICAgICAgICAgICAgLS1idWlsZF9kaXI9JHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9ICR7QVJH
Tn0pCisgICAgICBlbmRpZiAoQ01BS0VfQ09ORklHVVJBVElPTl9UWVBFUykKKyAgICBlbHNlICgk
e0NNQUtFX01BSk9SX1ZFUlNJT059LiR7Q01BS0VfTUlOT1JfVkVSU0lPTn0gR1JFQVRFUiAzLjEp
CisgICAgICAjICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfSBpcyBrbm93biBhdCBjb25maWd1
cmF0aW9uIHRpbWUsIHNvIHdlIGNhbgorICAgICAgIyBkaXJlY3RseSBiaW5kIGl0IGZyb20gY21h
a2UuICR7Q1RFU1RfQ09ORklHVVJBVElPTl9UWVBFfSBpcyBrbm93bgorICAgICAgIyBvbmx5IGF0
IGN0ZXN0IHJ1bnRpbWUgKGJ5IGNhbGxpbmcgY3Rlc3QgLWMgPENvbmZpZ3VyYXRpb24+KSwgc28K
KyAgICAgICMgd2UgaGF2ZSB0byBlc2NhcGUgJCB0byBkZWxheSB2YXJpYWJsZSBzdWJzdGl0dXRp
b24gaGVyZS4KKyAgICAgIGFkZF90ZXN0KAorICAgICAgICAke25hbWV9CisgICAgICAgICR7UFlU
SE9OX0VYRUNVVEFCTEV9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS90ZXN0LyR7bmFtZX0u
cHkKKyAgICAgICAgICAtLWJ1aWxkX2Rpcj0ke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vXCR7
Q1RFU1RfQ09ORklHVVJBVElPTl9UWVBFfSAke0FSR059KQorICAgIGVuZGlmICgke0NNQUtFX01B
Sk9SX1ZFUlNJT059LiR7Q01BS0VfTUlOT1JfVkVSU0lPTn0gR1JFQVRFUiAzLjEpCisgIGVuZGlm
KFBZVEhPTklOVEVSUF9GT1VORCkKK2VuZGZ1bmN0aW9uKCkKKworIyBpbnN0YWxsX3Byb2plY3Qo
dGFyZ2V0cy4uLikKKyMKKyMgSW5zdGFsbHMgdGhlIHNwZWNpZmllZCB0YXJnZXRzIGFuZCBjb25m
aWd1cmVzIHRoZSBhc3NvY2lhdGVkIHBrZ2NvbmZpZyBmaWxlcy4KK2Z1bmN0aW9uKGluc3RhbGxf
cHJvamVjdCkKKyAgaWYoSU5TVEFMTF9HVEVTVCkKKyAgICBpbnN0YWxsKERJUkVDVE9SWSAiJHtQ
Uk9KRUNUX1NPVVJDRV9ESVJ9L2luY2x1ZGUvIgorICAgICAgREVTVElOQVRJT04gIiR7Q01BS0Vf
SU5TVEFMTF9JTkNMVURFRElSfSIpCisgICAgIyBJbnN0YWxsIHRoZSBwcm9qZWN0IHRhcmdldHMu
CisgICAgaW5zdGFsbChUQVJHRVRTICR7QVJHTn0KKyAgICAgIEVYUE9SVCAke3RhcmdldHNfZXhw
b3J0X25hbWV9CisgICAgICBSVU5USU1FIERFU1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfQklO
RElSfSIKKyAgICAgIEFSQ0hJVkUgREVTVElOQVRJT04gIiR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9
IgorICAgICAgTElCUkFSWSBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0iKQor
ICAgICMgQ29uZmlndXJlIGFuZCBpbnN0YWxsIHBrZ2NvbmZpZyBmaWxlcy4KKyAgICBmb3JlYWNo
KHQgJHtBUkdOfSkKKyAgICAgIHNldChjb25maWd1cmVkX3BjICIke2dlbmVyYXRlZF9kaXJ9LyR7
dH0ucGMiKQorICAgICAgY29uZmlndXJlX2ZpbGUoIiR7UFJPSkVDVF9TT1VSQ0VfRElSfS9jbWFr
ZS8ke3R9LnBjLmluIgorICAgICAgICAiJHtjb25maWd1cmVkX3BjfSIgQE9OTFkpCisgICAgICBp
bnN0YWxsKEZJTEVTICIke2NvbmZpZ3VyZWRfcGN9IgorICAgICAgICBERVNUSU5BVElPTiAiJHtD
TUFLRV9JTlNUQUxMX0xJQkRJUn0vcGtnY29uZmlnIikKKyAgICBlbmRmb3JlYWNoKCkKKyAgZW5k
aWYoKQorZW5kZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
Y29kZWdlYXIvZ3Rlc3RfYWxsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29kZWdlYXIv
Z3Rlc3RfYWxsLmNjCmluZGV4IGJhN2FkNjhhZDFjYWE1ZmIyMDgzOGM3MDA4OTZhNDE4MmJhNTlk
OWYuLjEyMWIyZDgwZTgzZWM3Y2QwZmRmN2RjNjcxMjcyZGM1NGY2ZTlmMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NvZGVnZWFyL2d0ZXN0X2FsbC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9hbGwuY2MKQEAgLTEsMzggKzEsMzgg
QEAKLS8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
Ly8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBB
dXRob3I6IEpvc2ggS2VsbGV5IChqb3Noa2VsQGdtYWlsLmNvbSkKLS8vCi0vLyBHb29nbGUgQysr
IFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKLS8vCi0vLyBDKytCdWlsZGVyJ3MgSURF
IGNhbm5vdCBidWlsZCBhIHN0YXRpYyBsaWJyYXJ5IGZyb20gZmlsZXMgd2l0aCBoeXBoZW5zCi0v
LyBpbiB0aGVpciBuYW1lLiAgU2VlIGh0dHA6Ly9xYy5jb2RlZ2Vhci5jb20vd2MvcWNtYWluLmFz
cHg/ZD03MDk3NyAuCi0vLyBUaGlzIGZpbGUgc2VydmVzIGFzIGEgd29ya2Fyb3VuZC4KLQotI2lu
Y2x1ZGUgInNyYy9ndGVzdC1hbGwuY2MiCisvLyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4N
CisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vDQorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQ0KKy8vIG1ldDoNCisvLw0KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUNCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyDQorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KKy8vIGRpc3RyaWJ1dGlvbi4NCisvLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
DQorLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20NCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKy8vDQorLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0KKy8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
DQorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SDQorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCisvLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCisv
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UDQorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQorLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVA0KKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorLy8NCisvLyBBdXRob3I6
IEpvc2ggS2VsbGV5IChqb3Noa2VsQGdtYWlsLmNvbSkNCisvLw0KKy8vIEdvb2dsZSBDKysgVGVz
dGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQ0KKy8vDQorLy8gQysrQnVpbGRlcidzIElERSBj
YW5ub3QgYnVpbGQgYSBzdGF0aWMgbGlicmFyeSBmcm9tIGZpbGVzIHdpdGggaHlwaGVucw0KKy8v
IGluIHRoZWlyIG5hbWUuICBTZWUgaHR0cDovL3FjLmNvZGVnZWFyLmNvbS93Yy9xY21haW4uYXNw
eD9kPTcwOTc3IC4NCisvLyBUaGlzIGZpbGUgc2VydmVzIGFzIGEgd29ya2Fyb3VuZC4NCisNCisj
aW5jbHVkZSAic3JjL2d0ZXN0LWFsbC5jYyINCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9saW5rLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
Y29kZWdlYXIvZ3Rlc3RfbGluay5jYwppbmRleCBiOTU1ZWJmMmY5MTEwZTYzNTNjNjg3Y2MzOTQy
MzQ4ZGE3OTdjYjUwLi45MThlY2NkMTliN2RhZmEzMmI1MjkzODBiNzA5MjM4YzllM2EzNjJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9saW5rLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NvZGVnZWFyL2d0ZXN0X2xpbmsuY2MKQEAg
LTEsNDAgKzEsNDAgQEAKLS8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1l
dDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0v
LwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLS8vCi0vLyBBdXRob3I6IEpvc2ggS2VsbGV5IChqb3Noa2VsQGdtYWlsLmNvbSkKLS8vCi0v
LyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKLS8vCi0vLyBMaW5r
cyBndGVzdC5saWIgYW5kIGd0ZXN0X21haW4ubGliIGludG8gdGhlIGN1cnJlbnQgcHJvamVjdCBp
biBDKytCdWlsZGVyLgotLy8gVGhpcyBtZWFucyB0aGF0IHRoZXNlIGxpYnJhcmllcyBjYW4ndCBi
ZSByZW5hbWVkLCBidXQgaXQncyB0aGUgb25seSB3YXkgdG8KLS8vIGVuc3VyZSB0aGF0IERlYnVn
IHZlcnN1cyBSZWxlYXNlIHRlc3QgYnVpbGRzIGFyZSBsaW5rZWQgYWdhaW5zdCB0aGUKLS8vIGFw
cHJvcHJpYXRlIERlYnVnIG9yIFJlbGVhc2UgYnVpbGQgb2YgdGhlIGxpYnJhcmllcy4KLQotI3By
YWdtYSBsaW5rICJndGVzdC5saWIiCi0jcHJhZ21hIGxpbmsgImd0ZXN0X21haW4ubGliIgorLy8g
Q29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuDQorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisv
Lw0KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dA0KKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUNCisvLyBtZXQ6DQorLy8NCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodA0KKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4NCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcg0KKy8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUNCisvLyBkaXN0cmlidXRpb24uDQorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cw0KKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tDQorLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCisvLw0K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMNCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0KKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUDQorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVA0KKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0K
Ky8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQ0KKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCisvLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLg0KKy8vDQorLy8gQXV0aG9yOiBKb3NoIEtlbGxleSAoam9zaGtlbEBnbWFpbC5j
b20pDQorLy8NCisvLyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkN
CisvLw0KKy8vIExpbmtzIGd0ZXN0LmxpYiBhbmQgZ3Rlc3RfbWFpbi5saWIgaW50byB0aGUgY3Vy
cmVudCBwcm9qZWN0IGluIEMrK0J1aWxkZXIuDQorLy8gVGhpcyBtZWFucyB0aGF0IHRoZXNlIGxp
YnJhcmllcyBjYW4ndCBiZSByZW5hbWVkLCBidXQgaXQncyB0aGUgb25seSB3YXkgdG8NCisvLyBl
bnN1cmUgdGhhdCBEZWJ1ZyB2ZXJzdXMgUmVsZWFzZSB0ZXN0IGJ1aWxkcyBhcmUgbGlua2VkIGFn
YWluc3QgdGhlDQorLy8gYXBwcm9wcmlhdGUgRGVidWcgb3IgUmVsZWFzZSBidWlsZCBvZiB0aGUg
bGlicmFyaWVzLg0KKw0KKyNwcmFnbWEgbGluayAiZ3Rlc3QubGliIg0KKyNwcmFnbWEgbGluayAi
Z3Rlc3RfbWFpbi5saWIiDQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29u
ZmlndXJlLmFjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29uZmlndXJlLmFjCmluZGV4IDFi
OTEyMzc0NjFlMzlmZjYxYjYzMGYzZTAxOWFkZmVlZWI3ODNhZTYuLjI1NGM4YzRiMzE4ODVkMjU3
MWZhMjMwMGI2MzFlOGJmOWQ5NWFlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2NvbmZpZ3VyZS5hYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb25maWd1cmUu
YWMKQEAgLTUsMTMgKzUsMTQgQEAgbTRfaW5jbHVkZShtNC9hY3hfcHRocmVhZC5tNCkKICMgIlsx
LjAuMV0iKS4gSXQgYWxzbyBhc3VtZXMgdGhhdCB0aGVyZSB3b24ndCBiZSBhbnkgY2xvc2luZyBw
YXJlbnRoZXNpcwogIyBiZXR3ZWVuICJBQ19JTklUKCIgYW5kIHRoZSBjbG9zaW5nICIpIiBpbmNs
dWRpbmcgY29tbWVudHMgYW5kIHN0cmluZ3MuCiBBQ19JTklUKFtHb29nbGUgQysrIFRlc3Rpbmcg
RnJhbWV3b3JrXSwKLSAgICAgICAgWzEuNS4wXSwKKyAgICAgICAgWzEuOC4wXSwKICAgICAgICAg
W2dvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbV0sCiAgICAgICAgIFtndGVzdF0p
CiAKICMgUHJvdmlkZSB2YXJpb3VzIG9wdGlvbnMgdG8gaW5pdGlhbGl6ZSB0aGUgQXV0b2NvbmYg
YW5kIGNvbmZpZ3VyZSBwcm9jZXNzZXMuCiBBQ19QUkVSRVEoWzIuNTldKQotQUNfQ09ORklHX1NS
Q0RJUihbLi9DT1BZSU5HXSkKK0FDX0NPTkZJR19TUkNESVIoWy4vTElDRU5TRV0pCitBQ19DT05G
SUdfTUFDUk9fRElSKFttNF0pCiBBQ19DT05GSUdfQVVYX0RJUihbYnVpbGQtYXV4XSkKIEFDX0NP
TkZJR19IRUFERVJTKFtidWlsZC1hdXgvY29uZmlnLmhdKQogQUNfQ09ORklHX0ZJTEVTKFtNYWtl
ZmlsZV0pCkBAIC01NCw3ICs1NSw3IEBAIEFTX0lGKFt0ZXN0ICJ4JHdpdGhfcHRocmVhZHMiICE9
ICJ4bm8iXSwKICAgICAgICAgICAgICAgIFtBQ19NU0dfRkFJTFVSRSgKICAgICAgICAgICAgICAg
ICAgWy0td2l0aC1wdGhyZWFkcyB3YXMgc3BlY2lmaWVkLCBidXQgdW5hYmxlIHRvIGJlIHVzZWRd
KV0pXSkKICAgICAgICBoYXZlX3B0aHJlYWRzPSIkYWN4X3B0aHJlYWRfb2siXSkKLUFNX0NPTkRJ
VElPTkFMKFtIQVZFX1BUSFJFQURTXSxbdGVzdCAieCRoYXZlX3B0aHJlYWRzIiA9PSAieHllcyJd
KQorQU1fQ09ORElUSU9OQUwoW0hBVkVfUFRIUkVBRFNdLFt0ZXN0ICJ4JGhhdmVfcHRocmVhZHMi
ID0gInh5ZXMiXSkKIEFDX1NVQlNUKFBUSFJFQURfQ0ZMQUdTKQogQUNfU1VCU1QoUFRIUkVBRF9M
SUJTKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1BrZ2NvbmZp
Zy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvUGtnY29uZmlnLm1kCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk3NjEyODk0ZDJhM2M4ZWFkYjQ0MmM1NTg3ODA0ZmI3Nzg1ZWFhNzEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1BrZ2NvbmZpZy5tZApAQCAtMCww
ICsxLDE0NiBAQAorIyMgVXNpbmcgR29vZ2xlVGVzdCBmcm9tIHZhcmlvdXMgYnVpbGQgc3lzdGVt
cyAjIworCitHb29nbGVUZXN0IGNvbWVzIHdpdGggcGtnLWNvbmZpZyBmaWxlcyB0aGF0IGNhbiBi
ZSB1c2VkIHRvIGRldGVybWluZSBhbGwKK25lY2Vzc2FyeSBmbGFncyBmb3IgY29tcGlsaW5nIGFu
ZCBsaW5raW5nIHRvIEdvb2dsZVRlc3QgKGFuZCBHb29nbGVNb2NrKS4KK1BrZy1jb25maWcgaXMg
YSBzdGFuZGFyZGlzZWQgcGxhaW4tdGV4dCBmb3JtYXQgY29udGFpbmluZworCisgICogdGhlIGlu
Y2x1ZGVkaXIgKC1JKSBwYXRoCisgICogbmVjZXNzYXJ5IG1hY3JvICgtRCkgZGVmaW5pdGlvbnMK
KyAgKiBmdXJ0aGVyIHJlcXVpcmVkIGZsYWdzICgtcHRocmVhZCkKKyAgKiB0aGUgbGlicmFyeSAo
LUwpIHBhdGgKKyAgKiB0aGUgbGlicmFyeSAoLWwpIHRvIGxpbmsgdG8KKworQWxsIGN1cnJlbnQg
YnVpbGQgc3lzdGVtcyBzdXBwb3J0IHBrZy1jb25maWcgaW4gb25lIHdheSBvciBhbm90aGVyLiBG
b3IKK2FsbCBleGFtcGxlcyBoZXJlIHdlIGFzc3VtZSB5b3Ugd2FudCB0byBjb21waWxlIHRoZSBz
YW1wbGUKK2BzYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2NgLgorCisKKyMjIyBDTWFrZSAjIyMK
KworVXNpbmcgYHBrZy1jb25maWdgIGluIENNYWtlIGlzIGZhaXJseSBlYXN5OgorCitgYGAKK2Nt
YWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjApCisKK2NtYWtlX3BvbGljeShTRVQgQ01Q
MDA0OCBORVcpCitwcm9qZWN0KG15X2d0ZXN0X3BrZ2NvbmZpZyBWRVJTSU9OIDAuMC4xIExBTkdV
QUdFUyBDWFgpCisKK2ZpbmRfcGFja2FnZShQa2dDb25maWcpCitwa2dfc2VhcmNoX21vZHVsZShH
VEVTVCBSRVFVSVJFRCBndGVzdF9tYWluKQorCithZGRfZXhlY3V0YWJsZSh0ZXN0YXBwIHNhbXBs
ZXMvc2FtcGxlM191bml0dGVzdC5jYykKK3RhcmdldF9saW5rX2xpYnJhcmllcyh0ZXN0YXBwICR7
R1RFU1RfTERGTEFHU30pCit0YXJnZXRfY29tcGlsZV9vcHRpb25zKHRlc3RhcHAgUFVCTElDICR7
R1RFU1RfQ0ZMQUdTfSkKKworaW5jbHVkZShDVGVzdCkKK2FkZF90ZXN0KGZpcnN0X2FuZF9vbmx5
X3Rlc3QgdGVzdGFwcCkKK2BgYAorCitJdCBpcyBnZW5lcmFsbHkgcmVjb21tZW5kZWQgdGhhdCB5
b3UgdXNlIGB0YXJnZXRfY29tcGlsZV9vcHRpb25zYCArIGBfQ0ZMQUdTYAorb3ZlciBgdGFyZ2V0
X2luY2x1ZGVfZGlyZWN0b3JpZXNgICsgYF9JTkNMVURFX0RJUlNgIGFzIHRoZSBmb3JtZXIgaW5j
bHVkZXMgbm90CitqdXN0IC1JIGZsYWdzIChHb29nbGVUZXN0IG1pZ2h0IHJlcXVpcmUgYSBtYWNy
byBpbmRpY2F0aW5nIHRvIGludGVybmFsIGhlYWRlcnMKK3RoYXQgYWxsIGxpYnJhcmllcyBoYXZl
IGJlZW4gY29tcGlsZWQgd2l0aCB0aHJlYWRpbmcgZW5hYmxlZC4gSW4gYWRkaXRpb24sCitHb29n
bGVUZXN0IG1pZ2h0IGFsc28gcmVxdWlyZSBgLXB0aHJlYWRgIGluIHRoZSBjb21waWxpbmcgc3Rl
cCwgYW5kIGFzIHN1Y2gKK3NwbGl0dGluZyB0aGUgcGtnLWNvbmZpZyBgQ2ZsYWdzYCB2YXJpYWJs
ZSBpbnRvIGluY2x1ZGUgZGlycyBhbmQgbWFjcm9zIGZvcgorYHRhcmdldF9jb21waWxlX2RlZmlu
aXRpb25zKClgIG1pZ2h0IHN0aWxsIG1pc3MgdGhpcykuIFRoZSBzYW1lIHJlY29tbWVuZGF0aW9u
Citnb2VzIGZvciB1c2luZyBgX0xERkxBR1NgIG92ZXIgdGhlIG1vcmUgY29tbW9ucGxhY2UgYF9M
SUJSQVJJRVNgLCB3aGljaAoraGFwcGVucyB0byBkaXNjYXJkIGAtTGAgZmxhZ3MgYW5kIGAtcHRo
cmVhZGAuCisKKworIyMjIEF1dG90b29scyAjIyMKKworRmluZGluZyBHb29nbGVUZXN0IGluIEF1
dG9jb25mIGFuZCB1c2luZyBpdCBmcm9tIEF1dG9tYWtlIGlzIGFsc28gZmFpcmx5IGVhc3k6CisK
K0luIHlvdXIgYGNvbmZpZ3VyZS5hY2A6CisKK2BgYAorQUNfUFJFUkVRKFsyLjY5XSkKK0FDX0lO
SVQoW215X2d0ZXN0X3BrZ2NvbmZpZ10sIFswLjAuMV0pCitBQ19DT05GSUdfU1JDRElSKFtzYW1w
bGVzL3NhbXBsZTNfdW5pdHRlc3QuY2NdKQorQUNfUFJPR19DWFgKKworUEtHX0NIRUNLX01PRFVM
RVMoW0dURVNUXSwgW2d0ZXN0X21haW5dKQorCitBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduIHN1
YmRpci1vYmplY3RzXSkKK0FDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGVdKQorQUNfT1VUUFVUCitg
YGAKKworYW5kIGluIHlvdXIgYE1ha2VmaWxlLmFtYDoKKworYGBgCitjaGVja19QUk9HUkFNUyA9
IHRlc3RhcHAKK1RFU1RTID0gJChjaGVja19QUk9HUkFNUykKKwordGVzdGFwcF9TT1VSQ0VTID0g
c2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjCit0ZXN0YXBwX0NYWEZMQUdTID0gJChHVEVTVF9D
RkxBR1MpCit0ZXN0YXBwX0xEQUREID0gJChHVEVTVF9MSUJTKQorYGBgCisKKworIyMjIE1lc29u
ICMjIworCitNZXNvbiBuYXRpdmVseSB1c2VzIHBrZ2NvbmZpZyB0byBxdWVyeSBkZXBlbmRlbmNp
ZXM6CisKK2BgYAorcHJvamVjdCgnbXlfZ3Rlc3RfcGtnY29uZmlnJywgJ2NwcCcsIHZlcnNpb24g
OiAnMC4wLjEnKQorCitndGVzdF9kZXAgPSBkZXBlbmRlbmN5KCdndGVzdF9tYWluJykKKwordGVz
dGFwcCA9IGV4ZWN1dGFibGUoCisgICd0ZXN0YXBwJywKKyAgZmlsZXMoWydzYW1wbGVzL3NhbXBs
ZTNfdW5pdHRlc3QuY2MnXSksCisgIGRlcGVuZGVuY2llcyA6IGd0ZXN0X2RlcCwKKyAgaW5zdGFs
bCA6IGZhbHNlKQorCit0ZXN0KCdmaXJzdF9hbmRfb25seV90ZXN0JywgdGVzdGFwcCkKK2BgYAor
CisKKyMjIyBQbGFpbiBNYWtlZmlsZXMgIyMjCisKK1NpbmNlIGBwa2ctY29uZmlnYCBpcyBhIHNt
YWxsIFVuaXggY29tbWFuZC1saW5lIHV0aWxpdHksIGl0IGNhbiBiZSB1c2VkCitpbiBoYW5kd3Jp
dHRlbiBgTWFrZWZpbGVgcyB0b286CisKK2BgYAorR1RFU1RfQ0ZMQUdTID0gYHBrZy1jb25maWcg
LS1jZmxhZ3MgZ3Rlc3RfbWFpbmAKK0dURVNUX0xJQlMgPSBgcGtnLWNvbmZpZyAtLWxpYnMgZ3Rl
c3RfbWFpbmAKKworLlBIT05ZOiB0ZXN0cyBhbGwKKwordGVzdHM6IGFsbAorCS4vdGVzdGFwcAor
CithbGw6IHRlc3RhcHAKKwordGVzdGFwcDogdGVzdGFwcC5vCisJJChDWFgpICQoQ1hYRkxBR1Mp
ICQoTERGTEFHUykgJDwgLW8gJEAgJChHVEVTVF9MSUJTKQorCit0ZXN0YXBwLm86IHNhbXBsZXMv
c2FtcGxlM191bml0dGVzdC5jYworCSQoQ1hYKSAkKENQUEZMQUdTKSAkKENYWEZMQUdTKSAkPCAt
YyAtbyAkQCAkKEdURVNUX0NGTEFHUykKK2BgYAorCisKKyMjIyBIZWxwISBwa2ctY29uZmlnIGNh
bid0IGZpbmQgR29vZ2xlVGVzdCEgIyMjCisKK0xldCdzIHNheSB5b3UgaGF2ZSBhIGBDTWFrZUxp
c3RzLnR4dGAgYWxvbmcgdGhlIGxpbmVzIG9mIHRoZSBvbmUgaW4gdGhpcwordHV0b3JpYWwgYW5k
IHlvdSB0cnkgdG8gcnVuIGBjbWFrZWAuIEl0IGlzIHZlcnkgcG9zc2libGUgdGhhdCB5b3UgZ2V0
IGEKK2ZhaWx1cmUgYWxvbmcgdGhlIGxpbmVzIG9mOgorCitgYGAKKy0tIENoZWNraW5nIGZvciBv
bmUgb2YgdGhlIG1vZHVsZXMgJ2d0ZXN0X21haW4nCitDTWFrZSBFcnJvciBhdCAvdXNyL3NoYXJl
L2NtYWtlL01vZHVsZXMvRmluZFBrZ0NvbmZpZy5jbWFrZTo2NDAgKG1lc3NhZ2UpOgorICBOb25l
IG9mIHRoZSByZXF1aXJlZCAnZ3Rlc3RfbWFpbicgZm91bmQKK2BgYAorCitUaGVzZSBmYWlsdXJl
cyBhcmUgY29tbW9uIGlmIHlvdSBpbnN0YWxsZWQgR29vZ2xlVGVzdCB5b3Vyc2VsZiBhbmQgaGF2
ZSBub3QKK3NvdXJjZWQgaXQgZnJvbSBhIGRpc3RybyBvciBvdGhlciBwYWNrYWdlIG1hbmFnZXIu
IElmIHNvLCB5b3UgbmVlZCB0byB0ZWxsCitwa2ctY29uZmlnIHdoZXJlIGl0IGNhbiBmaW5kIHRo
ZSBgLnBjYCBmaWxlcyBjb250YWluaW5nIHRoZSBpbmZvcm1hdGlvbi4KK1NheSB5b3UgaW5zdGFs
bGVkIEdvb2dsZVRlc3QgdG8gYC91c3IvbG9jYWxgLCB0aGVuIGl0IG1pZ2h0IGJlIHRoYXQgdGhl
CitgLnBjYCBmaWxlcyBhcmUgaW5zdGFsbGVkIHVuZGVyIGAvdXNyL2xvY2FsL2xpYjY0L3BrZ2Nv
bmZpZ2AuIElmIHlvdSBzZXQKKworYGBgCitleHBvcnQgUEtHX0NPTkZJR19QQVRIPS91c3IvbG9j
YWwvbGliNjQvcGtnY29uZmlnCitgYGAKKworcGtnLWNvbmZpZyB3aWxsIGFsc28gdHJ5IHRvIGxv
b2sgaW4gYFBLR19DT05GSUdfUEFUSGAgdG8gZmluZCBgZ3Rlc3RfbWFpbi5wY2AuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1B1bXBNYW51YWwubWQgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1B1bXBNYW51YWwubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODI3YmIyNGIw
NDJkYzU0M2FmNGM0MDlhZDAzZTE0N2VhNTk0OWI3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvUHVtcE1hbnVhbC5tZApAQCAtMCwwICsxLDE3NyBAQAor
CisKKzxiPlA8L2I+dW1wIGlzIDxiPlU8L2I+c2VmdWwgZm9yIDxiPk08L2I+ZXRhIDxiPlA8L2I+
cm9ncmFtbWluZy4KKworIyBUaGUgUHJvYmxlbSAjCisKK1RlbXBsYXRlIGFuZCBtYWNybyBsaWJy
YXJpZXMgb2Z0ZW4gbmVlZCB0byBkZWZpbmUgbWFueSBjbGFzc2VzLAorZnVuY3Rpb25zLCBvciBt
YWNyb3MgdGhhdCB2YXJ5IG9ubHkgKG9yIGFsbW9zdCBvbmx5KSBpbiB0aGUgbnVtYmVyIG9mCith
cmd1bWVudHMgdGhleSB0YWtlLiBJdCdzIGEgbG90IG9mIHJlcGV0aXRpdmUsIG1lY2hhbmljYWws
IGFuZAorZXJyb3ItcHJvbmUgd29yay4KKworVmFyaWFkaWMgdGVtcGxhdGVzIGFuZCB2YXJpYWRp
YyBtYWNyb3MgY2FuIGFsbGV2aWF0ZSB0aGUgcHJvYmxlbS4KK0hvd2V2ZXIsIHdoaWxlIGJvdGgg
YXJlIGJlaW5nIGNvbnNpZGVyZWQgYnkgdGhlIEMrKyBjb21taXR0ZWUsIG5laXRoZXIKK2lzIGlu
IHRoZSBzdGFuZGFyZCB5ZXQgb3Igd2lkZWx5IHN1cHBvcnRlZCBieSBjb21waWxlcnMuICBUaHVz
IHRoZXkKK2FyZSBvZnRlbiBub3QgYSBnb29kIGNob2ljZSwgZXNwZWNpYWxseSB3aGVuIHlvdXIg
Y29kZSBuZWVkcyB0byBiZQorcG9ydGFibGUuIEFuZCB0aGVpciBjYXBhYmlsaXRpZXMgYXJlIHN0
aWxsIGxpbWl0ZWQuCisKK0FzIGEgcmVzdWx0LCBhdXRob3JzIG9mIHN1Y2ggbGlicmFyaWVzIG9m
dGVuIGhhdmUgdG8gd3JpdGUgc2NyaXB0cyB0bworZ2VuZXJhdGUgdGhlaXIgaW1wbGVtZW50YXRp
b24uIEhvd2V2ZXIsIG91ciBleHBlcmllbmNlIGlzIHRoYXQgaXQncwordGVkaW91cyB0byB3cml0
ZSBzdWNoIHNjcmlwdHMsIHdoaWNoIHRlbmQgdG8gcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mCit0
aGUgZ2VuZXJhdGVkIGNvZGUgcG9vcmx5IGFuZCBhcmUgb2Z0ZW4gaGFyZCB0byByZWFkIGFuZCBl
ZGl0LiBGb3IKK2V4YW1wbGUsIGEgc21hbGwgY2hhbmdlIG5lZWRlZCBpbiB0aGUgZ2VuZXJhdGVk
IGNvZGUgbWF5IHJlcXVpcmUgc29tZQorbm9uLWludHVpdGl2ZSwgbm9uLXRyaXZpYWwgY2hhbmdl
cyBpbiB0aGUgc2NyaXB0LiBUaGlzIGlzIGVzcGVjaWFsbHkKK3BhaW5mdWwgd2hlbiBleHBlcmlt
ZW50aW5nIHdpdGggdGhlIGNvZGUuCisKKyMgT3VyIFNvbHV0aW9uICMKKworUHVtcCAoZm9yIFB1
bXAgaXMgVXNlZnVsIGZvciBNZXRhIFByb2dyYW1taW5nLCBQcmV0dHkgVXNlZnVsIGZvciBNZXRh
CitQcm9ncmFtbWluZywgb3IgUHJhY3RpY2FsIFV0aWxpdHkgZm9yIE1ldGEgUHJvZ3JhbW1pbmcs
IHdoaWNoZXZlciB5b3UKK3ByZWZlcikgaXMgYSBzaW1wbGUgbWV0YS1wcm9ncmFtbWluZyB0b29s
IGZvciBDKysuIFRoZSBpZGVhIGlzIHRoYXQgYQorcHJvZ3JhbW1lciB3cml0ZXMgYSBgZm9vLnB1
bXBgIGZpbGUgd2hpY2ggY29udGFpbnMgQysrIGNvZGUgcGx1cyBtZXRhCitjb2RlIHRoYXQgbWFu
aXB1bGF0ZXMgdGhlIEMrKyBjb2RlLiBUaGUgbWV0YSBjb2RlIGNhbiBoYW5kbGUKK2l0ZXJhdGlv
bnMgb3ZlciBhIHJhbmdlLCBuZXN0ZWQgaXRlcmF0aW9ucywgbG9jYWwgbWV0YSB2YXJpYWJsZQor
ZGVmaW5pdGlvbnMsIHNpbXBsZSBhcml0aG1ldGljLCBhbmQgY29uZGl0aW9uYWwgZXhwcmVzc2lv
bnMuIFlvdSBjYW4KK3ZpZXcgaXQgYXMgYSBzbWFsbCBEb21haW4tU3BlY2lmaWMgTGFuZ3VhZ2Uu
IFRoZSBtZXRhIGxhbmd1YWdlIGlzCitkZXNpZ25lZCB0byBiZSBub24taW50cnVzaXZlIChzLnQu
IGl0IHdvbid0IGNvbmZ1c2UgRW1hY3MnIEMrKyBtb2RlLAorZm9yIGV4YW1wbGUpIGFuZCBjb25j
aXNlLCBtYWtpbmcgUHVtcCBjb2RlIGludHVpdGl2ZSBhbmQgZWFzeSB0bworbWFpbnRhaW4uCisK
KyMjIEhpZ2hsaWdodHMgIyMKKworICAqIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBpbiBhIHNpbmds
ZSBQeXRob24gc2NyaXB0IGFuZCB0aHVzIHVsdHJhIHBvcnRhYmxlOiBubyBidWlsZCBvciBpbnN0
YWxsYXRpb24gaXMgbmVlZGVkIGFuZCBpdCB3b3JrcyBjcm9zcyBwbGF0Zm9ybXMuCisgICogUHVt
cCB0cmllcyB0byBiZSBzbWFydCB3aXRoIHJlc3BlY3QgdG8gW0dvb2dsZSdzIHN0eWxlIGd1aWRl
XShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL3N0eWxlZ3VpZGUpOiBpdCBicmVha3MgbG9uZyBs
aW5lcyAoZWFzeSB0byBoYXZlIHdoZW4gdGhleSBhcmUgZ2VuZXJhdGVkKSBhdCBhY2NlcHRhYmxl
IHBsYWNlcyB0byBmaXQgd2l0aGluIDgwIGNvbHVtbnMgYW5kIGluZGVudCB0aGUgY29udGludWF0
aW9uIGxpbmVzIGNvcnJlY3RseS4KKyAgKiBUaGUgZm9ybWF0IGlzIGh1bWFuLXJlYWRhYmxlIGFu
ZCBtb3JlIGNvbmNpc2UgdGhhbiBYTUwuCisgICogVGhlIGZvcm1hdCB3b3JrcyByZWxhdGl2ZWx5
IHdlbGwgd2l0aCBFbWFjcycgQysrIG1vZGUuCisKKyMjIEV4YW1wbGVzICMjCisKK1RoZSBmb2xs
b3dpbmcgUHVtcCBjb2RlICh3aGVyZSBtZXRhIGtleXdvcmRzIHN0YXJ0IHdpdGggYCRgLCBgW1tg
IGFuZCBgXV1gIGFyZSBtZXRhIGJyYWNrZXRzLCBhbmQgYCQkYCBzdGFydHMgYSBtZXRhIGNvbW1l
bnQgdGhhdCBlbmRzIHdpdGggdGhlIGxpbmUpOgorCitgYGAKKyR2YXIgbiA9IDMgICAgICQkIERl
ZmluZXMgYSBtZXRhIHZhcmlhYmxlIG4uCiskcmFuZ2UgaSAwLi5uICAkJCBEZWNsYXJlcyB0aGUg
cmFuZ2Ugb2YgbWV0YSBpdGVyYXRvciBpIChpbmNsdXNpdmUpLgorJGZvciBpIFtbCisgICAgICAg
ICAgICAgICAkJCBNZXRhIGxvb3AuCisvLyBGb28kaSBkb2VzIGJsYWggZm9yICRpLWFyeSBwcmVk
aWNhdGVzLgorJHJhbmdlIGogMS4uaQordGVtcGxhdGUgPHNpemVfdCBOICRmb3IgaiBbWywgdHlw
ZW5hbWUgQSRqXV0+CitjbGFzcyBGb28kaSB7CiskaWYgaSA9PSAwIFtbCisgIGJsYWggYTsKK11d
ICRlbGlmIGkgPD0gMiBbWworICBibGFoIGI7CitdXSAkZWxzZSBbWworICBibGFoIGM7CitdXQor
fTsKKworXV0KK2BgYAorCit3aWxsIGJlIHRyYW5zbGF0ZWQgYnkgdGhlIFB1bXAgY29tcGlsZXIg
dG86CisKK2BgYAorLy8gRm9vMCBkb2VzIGJsYWggZm9yIDAtYXJ5IHByZWRpY2F0ZXMuCit0ZW1w
bGF0ZSA8c2l6ZV90IE4+CitjbGFzcyBGb28wIHsKKyAgYmxhaCBhOworfTsKKworLy8gRm9vMSBk
b2VzIGJsYWggZm9yIDEtYXJ5IHByZWRpY2F0ZXMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVu
YW1lIEExPgorY2xhc3MgRm9vMSB7CisgIGJsYWggYjsKK307CisKKy8vIEZvbzIgZG9lcyBibGFo
IGZvciAyLWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBBMSwg
dHlwZW5hbWUgQTI+CitjbGFzcyBGb28yIHsKKyAgYmxhaCBiOworfTsKKworLy8gRm9vMyBkb2Vz
IGJsYWggZm9yIDMtYXJ5IHByZWRpY2F0ZXMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1l
IEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTM+CitjbGFzcyBGb28zIHsKKyAgYmxhaCBjOwor
fTsKK2BgYAorCitJbiBhbm90aGVyIGV4YW1wbGUsCisKK2BgYAorJHJhbmdlIGkgMS4ubgorRnVu
YygkZm9yIGkgKyBbW2EkaV1dKTsKKyQkIFRoZSB0ZXh0IGJldHdlZW4gaSBhbmQgW1sgaXMgdGhl
IHNlcGFyYXRvciBiZXR3ZWVuIGl0ZXJhdGlvbnMuCitgYGAKKword2lsbCBnZW5lcmF0ZSBvbmUg
b2YgdGhlIGZvbGxvd2luZyBsaW5lcyAod2l0aG91dCB0aGUgY29tbWVudHMpLCBkZXBlbmRpbmcg
b24gdGhlIHZhbHVlIG9mIGBuYDoKKworYGBgCitGdW5jKCk7ICAgICAgICAgICAgICAvLyBJZiBu
IGlzIDAuCitGdW5jKGExKTsgICAgICAgICAgICAvLyBJZiBuIGlzIDEuCitGdW5jKGExICsgYTIp
OyAgICAgICAvLyBJZiBuIGlzIDIuCitGdW5jKGExICsgYTIgKyBhMyk7ICAvLyBJZiBuIGlzIDMu
CisvLyBBbmQgc28gb24uLi4KK2BgYAorCisjIyBDb25zdHJ1Y3RzICMjCisKK1dlIHN1cHBvcnQg
dGhlIGZvbGxvd2luZyBtZXRhIHByb2dyYW1taW5nIGNvbnN0cnVjdHM6CisKK3wgYCR2YXIgaWQg
PSBleHBgIHwgRGVmaW5lcyBhIG5hbWVkIGNvbnN0YW50IHZhbHVlLiBgJGlkYCBpcyB2YWxpZCB1
dGlsIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgbWV0YSBsZXhpY2FsIGJsb2NrLiB8Cit8Oi0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBg
JHJhbmdlIGlkIGV4cC4uZXhwYCB8IFNldHMgdGhlIHJhbmdlIG9mIGFuIGl0ZXJhdGlvbiB2YXJp
YWJsZSwgd2hpY2ggY2FuIGJlIHJldXNlZCBpbiBtdWx0aXBsZSBsb29wcyBsYXRlci4gICAgICAg
ICAgfAorfCBgJGZvciBpZCBzZXAgW1sgY29kZSBdXWAgfCBJdGVyYXRpb24uIFRoZSByYW5nZSBv
ZiBgaWRgIG11c3QgaGF2ZSBiZWVuIGRlZmluZWQgZWFybGllci4gYCRpZGAgaXMgdmFsaWQgaW4g
YGNvZGVgLiAgICAgICAgIHwKK3wgYCQoJClgICAgICAgICAgIHwgR2VuZXJhdGVzIGEgc2luZ2xl
IGAkYCBjaGFyYWN0ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8Cit8IGAkaWRgICAgICAgICAgICB8IFZhbHVlIG9mIHRoZSBu
YW1lZCBjb25zdGFudCBvciBpdGVyYXRpb24gdmFyaWFibGUuICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgJChleHApYCAgICAgICAgfCBWYWx1ZSBvZiB0
aGUgZXhwcmVzc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYCRpZiBleHAgW1sgY29kZSBdXSBlbHNl
X2JyYW5jaGAgfCBDb25kaXRpb25hbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYFtb
IGNvZGUgXV1gICAgIHwgTWV0YSBsZXhpY2FsIGJsb2NrLiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8
IGBjcHBfY29kZWAgICAgICB8IFJhdyBDKysgY29kZS4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorfCBgJCQgY29tbWVudGAgICAgfCBNZXRhIGNvbW1lbnQuICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKworKipOb3RlOioqIFRvIGdpdmUgdGhlIHVzZXIgc29tZSBmcmVlZG9tIGluIGZvcm1h
dHRpbmcgdGhlIFB1bXAgc291cmNlCitjb2RlLCBQdW1wIGlnbm9yZXMgYSBuZXctbGluZSBjaGFy
YWN0ZXIgaWYgaXQncyByaWdodCBhZnRlciBgJGZvciBmb29gCitvciBuZXh0IHRvIGBbW2Agb3Ig
YF1dYC4gV2l0aG91dCB0aGlzIHJ1bGUgeW91J2xsIG9mdGVuIGJlIGZvcmNlZCB0byB3cml0ZQor
dmVyeSBsb25nIGxpbmVzIHRvIGdldCB0aGUgZGVzaXJlZCBvdXRwdXQuIFRoZXJlZm9yZSBzb21l
dGltZXMgeW91IG1heQorbmVlZCB0byBpbnNlcnQgYW4gZXh0cmEgbmV3LWxpbmUgaW4gc3VjaCBw
bGFjZXMgZm9yIGEgbmV3LWxpbmUgdG8gc2hvdwordXAgaW4geW91ciBvdXRwdXQuCisKKyMjIEdy
YW1tYXIgIyMKKworYGBgCitjb2RlIDo6PSBhdG9taWNfY29kZSoKK2F0b21pY19jb2RlIDo6PSAk
dmFyIGlkID0gZXhwCisgICAgfCAkdmFyIGlkID0gW1sgY29kZSBdXQorICAgIHwgJHJhbmdlIGlk
IGV4cC4uZXhwCisgICAgfCAkZm9yIGlkIHNlcCBbWyBjb2RlIF1dCisgICAgfCAkKCQpCisgICAg
fCAkaWQKKyAgICB8ICQoZXhwKQorICAgIHwgJGlmIGV4cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNo
CisgICAgfCBbWyBjb2RlIF1dCisgICAgfCBjcHBfY29kZQorc2VwIDo6PSBjcHBfY29kZSB8IGVt
cHR5X3N0cmluZworZWxzZV9icmFuY2ggOjo9ICRlbHNlIFtbIGNvZGUgXV0KKyAgICB8ICRlbGlm
IGV4cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNoCisgICAgfCBlbXB0eV9zdHJpbmcKK2V4cCA6Oj0g
c2ltcGxlX2V4cHJlc3Npb25faW5fUHl0aG9uX3N5bnRheAorYGBgCisKKyMjIENvZGUgIyMKKwor
WW91IGNhbiBmaW5kIHRoZSBzb3VyY2UgY29kZSBvZiBQdW1wIGluIFtzY3JpcHRzL3B1bXAucHld
KC4uL3NjcmlwdHMvcHVtcC5weSkuIEl0IGlzIHN0aWxsCit2ZXJ5IHVucG9saXNoZWQgYW5kIGxh
Y2tzIGF1dG9tYXRlZCB0ZXN0cywgYWx0aG91Z2ggaXQgaGFzIGJlZW4KK3N1Y2Nlc3NmdWxseSB1
c2VkIG1hbnkgdGltZXMuIElmIHlvdSBmaW5kIGEgY2hhbmNlIHRvIHVzZSBpdCBpbiB5b3VyCitw
cm9qZWN0LCBwbGVhc2UgbGV0IHVzIGtub3cgd2hhdCB5b3UgdGhpbmshICBXZSBhbHNvIHdlbGNv
bWUgaGVscCBvbgoraW1wcm92aW5nIFB1bXAuCisKKyMjIFJlYWwgRXhhbXBsZXMgIyMKKworWW91
IGNhbiBmaW5kIHJlYWwtd29ybGQgYXBwbGljYXRpb25zIG9mIFB1bXAgaW4gW0dvb2dsZSBUZXN0
XShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvdHJlZS9tYXN0ZXIvZ29vZ2xl
dGVzdCkgYW5kIFtHb29nbGUgTW9ja10oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0
ZXN0L3RyZWUvbWFzdGVyL2dvb2dsZW1vY2spLiBUaGUgc291cmNlIGZpbGUgYGZvby5oLnB1bXBg
IGdlbmVyYXRlcyBgZm9vLmhgLgorCisjIyBUaXBzICMjCisKKyAgKiBJZiBhIG1ldGEgdmFyaWFi
bGUgaXMgZm9sbG93ZWQgYnkgYSBsZXR0ZXIgb3IgZGlnaXQsIHlvdSBjYW4gc2VwYXJhdGUgdGhl
bSB1c2luZyBgW1tdXWAsIHdoaWNoIGluc2VydHMgYW4gZW1wdHkgc3RyaW5nLiBGb3IgZXhhbXBs
ZSBgRm9vJGpbW11dSGVscGVyYCBnZW5lcmF0ZSBgRm9vMUhlbHBlcmAgd2hlbiBgamAgaXMgMS4K
KyAgKiBUbyBhdm9pZCBleHRyYS1sb25nIFB1bXAgc291cmNlIGxpbmVzLCB5b3UgY2FuIGJyZWFr
IGEgbGluZSBhbnl3aGVyZSB5b3Ugd2FudCBieSBpbnNlcnRpbmcgYFtbXV1gIGZvbGxvd2VkIGJ5
IGEgbmV3IGxpbmUuIFNpbmNlIGFueSBuZXctbGluZSBjaGFyYWN0ZXIgbmV4dCB0byBgW1tgIG9y
IGBdXWAgaXMgaWdub3JlZCwgdGhlIGdlbmVyYXRlZCBjb2RlIHdvbid0IGNvbnRhaW4gdGhpcyBu
ZXcgbGluZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvWGNvZGVH
dWlkZS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvWGNvZGVHdWlkZS5tZApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xYzYwYTMzZGFkNDNiYWY5ODM4MWY3YzlmMjBmNjliNTU4YjJhYWQwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9YY29kZUd1aWRlLm1kCkBA
IC0wLDAgKzEsOTMgQEAKKworCitUaGlzIGd1aWRlIHdpbGwgZXhwbGFpbiBob3cgdG8gdXNlIHRo
ZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaW4geW91ciBYY29kZSBwcm9qZWN0cyBvbiBNYWMg
T1MgWC4gVGhpcyB0dXRvcmlhbCBiZWdpbnMgYnkgcXVpY2tseSBleHBsYWluaW5nIHdoYXQgdG8g
ZG8gZm9yIGV4cGVyaWVuY2VkIHVzZXJzLiBBZnRlciB0aGUgcXVpY2sgc3RhcnQsIHRoZSBndWlk
ZSBnb2VzIHByb3ZpZGVzIGFkZGl0aW9uYWwgZXhwbGFuYXRpb24gYWJvdXQgZWFjaCBzdGVwLgor
CisjIFF1aWNrIFN0YXJ0ICMKKworSGVyZSBpcyB0aGUgcXVpY2sgZ3VpZGUgZm9yIHVzaW5nIEdv
b2dsZSBUZXN0IGluIHlvdXIgWGNvZGUgcHJvamVjdC4KKworICAxLiBEb3dubG9hZCB0aGUgc291
cmNlIGZyb20gdGhlIFt3ZWJzaXRlXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRl
c3QpIHVzaW5nIHRoaXMgY29tbWFuZDogYHN2biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVzdC5n
b29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvIGdvb2dsZXRlc3QtcmVhZC1vbmx5YC4KKyAgMS4gT3Bl
biB1cCB0aGUgYGd0ZXN0Lnhjb2RlcHJvamAgaW4gdGhlIGBnb29nbGV0ZXN0LXJlYWQtb25seS94
Y29kZS9gIGRpcmVjdG9yeSBhbmQgYnVpbGQgdGhlIGd0ZXN0LmZyYW1ld29yay4KKyAgMS4gQ3Jl
YXRlIGEgbmV3ICJTaGVsbCBUb29sIiB0YXJnZXQgaW4geW91ciBYY29kZSBwcm9qZWN0IGNhbGxl
ZCBzb21ldGhpbmcgbGlrZSAiVW5pdFRlc3RzIi4KKyAgMS4gQWRkIHRoZSBndGVzdC5mcmFtZXdv
cmsgdG8geW91ciBwcm9qZWN0IGFuZCBhZGQgaXQgdG8gdGhlICJMaW5rIEJpbmFyeSB3aXRoIExp
YnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgIlVuaXRUZXN0cyIuCisgIDEuIEFkZCB5b3VyIHVuaXQg
dGVzdCBzb3VyY2UgY29kZSB0byB0aGUgIkNvbXBpbGUgU291cmNlcyIgYnVpbGQgcGhhc2Ugb2Yg
IlVuaXRUZXN0cyIuCisgIDEuIEVkaXQgdGhlICJVbml0VGVzdHMiIGV4ZWN1dGFibGUgYW5kIGFk
ZCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lZCAiRFlMRFxfRlJBTUVXT1JLXF9QQVRIIiB3
aXRoIGEgdmFsdWUgZXF1YWwgdG8gdGhlIHBhdGggdG8gdGhlIGZyYW1ld29yayBjb250YWluaW5n
IHRoZSBndGVzdC5mcmFtZXdvcmsgcmVsYXRpdmUgdG8gdGhlIGNvbXBpbGVkIGV4ZWN1dGFibGUu
CisgIDEuIEJ1aWxkIGFuZCBHby4KKworVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBmdXJ0aGVyIGV4
cGxhaW4gZWFjaCBvZiB0aGUgc3RlcHMgbGlzdGVkIGFib3ZlIGluIGRlcHRoLCBkZXNjcmliaW5n
IGluIG1vcmUgZGV0YWlsIGhvdyB0byBjb21wbGV0ZSBpdCBpbmNsdWRpbmcgc29tZSB2YXJpYXRp
b25zLgorCisjIEdldCB0aGUgU291cmNlICMKKworQ3VycmVudGx5LCB0aGUgZ3Rlc3QuZnJhbWV3
b3JrIGRpc2N1c3NlZCBoZXJlIGlzbid0IGF2YWlsYWJsZSBpbiBhIHRhZ2dlZCByZWxlYXNlIG9m
IEdvb2dsZSBUZXN0LCBpdCBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgdHJ1bmsuIEFzIGV4cGxh
aW5lZCBhdCB0aGUgR29vZ2xlIFRlc3QgW3NpdGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUv
Z29vZ2xldGVzdCksIHlvdSBjYW4gZ2V0IHRoZSBjb2RlIGZyb20gYW5vbnltb3VzIFNWTiB3aXRo
IHRoaXMgY29tbWFuZDoKKworYGBgCitzdm4gY2hlY2tvdXQgaHR0cDovL2dvb2dsZXRlc3QuZ29v
Z2xlY29kZS5jb20vc3ZuL3RydW5rLyBnb29nbGV0ZXN0LXJlYWQtb25seQorYGBgCisKK0FsdGVy
bmF0aXZlbHksIGlmIHlvdSBhcmUgd29ya2luZyB3aXRoIFN1YnZlcnNpb24gaW4geW91ciBvd24g
Y29kZSBiYXNlLCB5b3UgY2FuIGFkZCBHb29nbGUgVGVzdCBhcyBhbiBleHRlcm5hbCBkZXBlbmRl
bmN5IHRvIHlvdXIgb3duIFN1YnZlcnNpb24gcmVwb3NpdG9yeS4gQnkgZm9sbG93aW5nIHRoaXMg
YXBwcm9hY2gsIGV2ZXJ5b25lIHRoYXQgY2hlY2tzIG91dCB5b3VyIHN2biByZXBvc2l0b3J5IHdp
bGwgYWxzbyByZWNlaXZlIGEgY29weSBvZiBHb29nbGUgVGVzdCAoYSBzcGVjaWZpYyB2ZXJzaW9u
LCBpZiB5b3Ugd2lzaCkgd2l0aG91dCBoYXZpbmcgdG8gY2hlY2sgaXQgb3V0IGV4cGxpY2l0bHku
IFRoaXMgbWFrZXMgdGhlIHNldCB1cCBvZiB5b3VyIHByb2plY3Qgc2ltcGxlciBhbmQgcmVkdWNl
cyB0aGUgY29waWVkIGNvZGUgaW4gdGhlIHJlcG9zaXRvcnkuCisKK1RvIHVzZSBgc3ZuOmV4dGVy
bmFsc2AsIGRlY2lkZSB3aGVyZSB5b3Ugd291bGQgbGlrZSB0byBoYXZlIHRoZSBleHRlcm5hbCBz
b3VyY2UgcmVzaWRlLiBZb3UgbWlnaHQgY2hvb3NlIHRvIHB1dCB0aGUgZXh0ZXJuYWwgc291cmNl
IGluc2lkZSB0aGUgdHJ1bmssIGJlY2F1c2UgeW91IHdhbnQgaXQgdG8gYmUgcGFydCBvZiB0aGUg
YnJhbmNoIHdoZW4geW91IG1ha2UgYSByZWxlYXNlLiBIb3dldmVyLCBrZWVwaW5nIGl0IG91dHNp
ZGUgdGhlIHRydW5rIGluIGEgdmVyc2lvbi10YWdnZWQgZGlyZWN0b3J5IGNhbGxlZCBzb21ldGhp
bmcgbGlrZSBgdGhpcmQtcGFydHkvZ29vZ2xldGVzdC8xLjAuMWAsIGlzIGFub3RoZXIgb3B0aW9u
LiBPbmNlIHRoZSBsb2NhdGlvbiBpcyBlc3RhYmxpc2hlZCwgdXNlIGBzdm4gcHJvcGVkaXQgc3Zu
OmV4dGVybmFscyBfZGlyZWN0b3J5X2AgdG8gc2V0IHRoZSBzdm46ZXh0ZXJuYWxzIHByb3BlcnR5
IG9uIGEgZGlyZWN0b3J5IGluIHlvdXIgcmVwb3NpdG9yeS4gVGhpcyBkaXJlY3Rvcnkgd29uJ3Qg
Y29udGFpbiB0aGUgY29kZSwgYnV0IGJlIGl0cyB2ZXJzaW9uZWQgcGFyZW50IGRpcmVjdG9yeS4K
KworVGhlIGNvbW1hbmQgYHN2biBwcm9wZWRpdGAgd2lsbCBicmluZyB1cCB5b3VyIFN1YnZlcnNp
b24gZWRpdG9yLCBtYWtpbmcgZWRpdGluZyB0aGUgbG9uZywgKHBvdGVudGlhbGx5IG11bHRpLWxp
bmUpIHByb3BlcnR5IHNpbXBsZXIuIFRoaXMgc2FtZSBtZXRob2QgY2FuIGJlIHVzZWQgdG8gY2hl
Y2sgb3V0IGEgdGFnZ2VkIGJyYW5jaCwgYnkgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIFVSTCAoZS5n
LiBgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L3JlbGVhc2VzL3RhZy9yZWxl
YXNlLTEuMC4xYCkuIEFkZGl0aW9uYWxseSwgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgYWxs
b3dzIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgcGFydGljdWxhciByZXZpc2lvbiBvZiB0aGUgdHJ1
bmsgd2l0aCB0aGUgYC1yXyMjX2Agb3B0aW9uIChlLmcuIGBleHRlcm5hbHMvc3JjL2dvb2dsZXRl
c3QgLXI2MCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmtgKS4KKwor
SGVyZSBpcyBhbiBleGFtcGxlIG9mIHVzaW5nIHRoZSBzdm46ZXh0ZXJuYWxzIHByb3BlcnRpZXMg
b24gYSB0cnVuayAocmVhZCB2aWEgYHN2biBwcm9wZ2V0YCkgb2YgYSBwcm9qZWN0LiBUaGlzIHZh
bHVlIGNoZWNrcyBvdXQgYSBjb3B5IG9mIEdvb2dsZSBUZXN0IGludG8gdGhlIGB0cnVuay9leHRl
cm5hbHMvc3JjL2dvb2dsZXRlc3QvYCBkaXJlY3RvcnkuCisKK2BgYAorW0NvbXB1dGVyOnN2bl0g
dXNlciQgc3ZuIHByb3BnZXQgc3ZuOmV4dGVybmFscyB0cnVuaworZXh0ZXJuYWxzL3NyYy9nb29n
bGV0ZXN0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuaworYGBgCisK
KyMgQWRkIHRoZSBGcmFtZXdvcmsgdG8gWW91ciBQcm9qZWN0ICMKKworVGhlIG5leHQgc3RlcCBp
cyB0byBidWlsZCBhbmQgYWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8geW91ciBvd24gcHJvamVj
dC4gVGhpcyBndWlkZSBkZXNjcmliZXMgdHdvIGNvbW1vbiB3YXlzIGJlbG93LgorCisgICogKipP
cHRpb24gMSoqIC0tLSBUaGUgc2ltcGxlc3Qgd2F5IHRvIGFkZCBHb29nbGUgVGVzdCB0byB5b3Vy
IG93biBwcm9qZWN0LCBpcyB0byBvcGVuIGd0ZXN0Lnhjb2RlcHJvaiAoZm91bmQgaW4gdGhlIHhj
b2RlLyBkaXJlY3Rvcnkgb2YgdGhlIEdvb2dsZSBUZXN0IHRydW5rKSBhbmQgYnVpbGQgdGhlIGZy
YW1ld29yayBtYW51YWxseS4gVGhlbiwgYWRkIHRoZSBidWlsdCBmcmFtZXdvcmsgaW50byB5b3Vy
IHByb2plY3QgdXNpbmcgdGhlICJBZGQtPkV4aXN0aW5nIEZyYW1ld29yay4uLiIgZnJvbSB0aGUg
Y29udGV4dCBtZW51IG9yICJQcm9qZWN0LT5BZGQuLi4iIGZyb20gdGhlIG1haW4gbWVudS4gVGhl
IGd0ZXN0LmZyYW1ld29yayBpcyByZWxvY2F0YWJsZSBhbmQgY29udGFpbnMgdGhlIGhlYWRlcnMg
YW5kIG9iamVjdCBjb2RlIHRoYXQgeW91J2xsIG5lZWQgdG8gbWFrZSB0ZXN0cy4gVGhpcyBtZXRo
b2QgcmVxdWlyZXMgcmVidWlsZGluZyBldmVyeSB0aW1lIHlvdSB1cGdyYWRlIEdvb2dsZSBUZXN0
IGluIHlvdXIgcHJvamVjdC4KKyAgKiAqKk9wdGlvbiAyKiogLS0tIElmIHlvdSBhcmUgZ29pbmcg
dG8gYmUgbGl2aW5nIG9mZiB0aGUgdHJ1bmsgb2YgR29vZ2xlIFRlc3QsIGluY29ycG9yYXRpbmcg
aXRzIGxhdGVzdCBmZWF0dXJlcyBpbnRvIHlvdXIgdW5pdCB0ZXN0cyAob3IgYXJlIGEgR29vZ2xl
IFRlc3QgZGV2ZWxvcGVyIHlvdXJzZWxmKS4gWW91J2xsIHdhbnQgdG8gcmVidWlsZCB0aGUgZnJh
bWV3b3JrIGV2ZXJ5IHRpbWUgdGhlIHNvdXJjZSB1cGRhdGVzLiB0byBkbyB0aGlzLCB5b3UnbGwg
bmVlZCB0byBhZGQgdGhlIGd0ZXN0Lnhjb2RlcHJvaiBmaWxlLCBub3QgdGhlIGZyYW1ld29yayBp
dHNlbGYsIHRvIHlvdXIgb3duIFhjb2RlIHByb2plY3QuIFRoZW4sIGZyb20gdGhlIGJ1aWxkIHBy
b2R1Y3RzIHRoYXQgYXJlIHJldmVhbGVkIGJ5IHRoZSBwcm9qZWN0J3MgZGlzY2xvc3VyZSB0cmlh
bmdsZSwgeW91IGNhbiBmaW5kIHRoZSBndGVzdC5mcmFtZXdvcmssIHdoaWNoIGNhbiBiZSBhZGRl
ZCB0byB5b3VyIHRhcmdldHMgKGRpc2N1c3NlZCBiZWxvdykuCisKKyMgTWFrZSBhIFRlc3QgVGFy
Z2V0ICMKKworVG8gc3RhcnQgd3JpdGluZyB0ZXN0cywgbWFrZSBhIG5ldyAiU2hlbGwgVG9vbCIg
dGFyZ2V0LiBUaGlzIHRhcmdldCB0ZW1wbGF0ZSBpcyBhdmFpbGFibGUgdW5kZXIgQlNELCBDb2Nv
YSwgb3IgQ2FyYm9uLiBBZGQgeW91ciB1bml0IHRlc3Qgc291cmNlIGNvZGUgdG8gdGhlICJDb21w
aWxlIFNvdXJjZXMiIGJ1aWxkIHBoYXNlIG9mIHRoZSB0YXJnZXQuCisKK05leHQsIHlvdSdsbCB3
YW50IHRvIGFkZCBndGVzdC5mcmFtZXdvcmsgaW4gdHdvIGRpZmZlcmVudCB3YXlzLCBkZXBlbmRp
bmcgdXBvbiB3aGljaCBvcHRpb24geW91IGNob3NlIGFib3ZlLgorCisgICogKipPcHRpb24gMSoq
IC0tLSBEdXJpbmcgY29tcGlsYXRpb24sIFhjb2RlIHdpbGwgbmVlZCB0byBrbm93IHRoYXQgeW91
IGFyZSBsaW5raW5nIGFnYWluc3QgdGhlIGd0ZXN0LmZyYW1ld29yay4gQWRkIHRoZSBndGVzdC5m
cmFtZXdvcmsgdG8gdGhlICJMaW5rIEJpbmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ug
b2YgeW91ciB0ZXN0IHRhcmdldC4gVGhpcyB3aWxsIGluY2x1ZGUgdGhlIEdvb2dsZSBUZXN0IGhl
YWRlcnMgaW4geW91ciBoZWFkZXIgc2VhcmNoIHBhdGgsIGFuZCB3aWxsIHRlbGwgdGhlIGxpbmtl
ciB3aGVyZSB0byBmaW5kIHRoZSBsaWJyYXJ5LgorICAqICoqT3B0aW9uIDIqKiAtLS0gSWYgeW91
ciB3b3JraW5nIG91dCBvZiB0aGUgdHJ1bmssIHlvdSdsbCBhbHNvIHdhbnQgdG8gYWRkIGd0ZXN0
LmZyYW1ld29yayB0byB5b3VyICJMaW5rIEJpbmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhh
c2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gSW4gYWRkaXRpb24sIHlvdSdsbCAgd2FudCB0byBhZGQg
dGhlIGd0ZXN0LmZyYW1ld29yayBhcyBhIGRlcGVuZGVuY3kgdG8geW91ciB1bml0IHRlc3QgdGFy
Z2V0LiBUaGlzIHdheSwgWGNvZGUgd2lsbCBtYWtlIHN1cmUgdGhhdCBndGVzdC5mcmFtZXdvcmsg
aXMgdXAgdG8gZGF0ZSwgZXZlcnkgdGltZSB5b3VyIGJ1aWxkIHlvdXIgdGFyZ2V0LiBGaW5hbGx5
LCBpZiB5b3UgZG9uJ3Qgc2hhcmUgYnVpbGQgZGlyZWN0b3JpZXMgd2l0aCBHb29nbGUgVGVzdCwg
eW91J2xsIGhhdmUgdG8gY29weSB0aGUgZ3Rlc3QuZnJhbWV3b3JrIGludG8geW91ciBvd24gYnVp
bGQgcHJvZHVjdHMgZGlyZWN0b3J5IHVzaW5nIGEgIlJ1biBTY3JpcHQiIGJ1aWxkIHBoYXNlLgor
CisjIFNldCBVcCB0aGUgRXhlY3V0YWJsZSBSdW4gRW52aXJvbm1lbnQgIworCitTaW5jZSB0aGUg
dW5pdCB0ZXN0IGV4ZWN1dGFibGUgaXMgYSBzaGVsbCB0b29sLCBpdCBkb2Vzbid0IGhhdmUgYSBi
dW5kbGUgd2l0aCBhIGBDb250ZW50cy9GcmFtZXdvcmtzYCBkaXJlY3RvcnksIGluIHdoaWNoIHRv
IHBsYWNlIGd0ZXN0LmZyYW1ld29yay4gSW5zdGVhZCwgdGhlIGR5bmFtaWMgbGlua2VyIG11c3Qg
YmUgdG9sZCBhdCBydW50aW1lIHRvIHNlYXJjaCBmb3IgdGhlIGZyYW1ld29yayBpbiBhbm90aGVy
IGxvY2F0aW9uLiBUaGlzIGNhbiBiZSBhY2NvbXBsaXNoZWQgYnkgc2V0dGluZyB0aGUgIkRZTERc
X0ZSQU1FV09SS1xfUEFUSCIgZW52aXJvbm1lbnQgdmFyaWFibGUgaW4gdGhlICJFZGl0IEFjdGl2
ZSBFeGVjdXRhYmxlIC4uLiIgQXJndW1lbnRzIHRhYiwgdW5kZXIgIlZhcmlhYmxlcyB0byBiZSBz
ZXQgaW4gdGhlIGVudmlyb25tZW50OiIuIFRoZSBwYXRoIGZvciB0aGlzIHZhbHVlIGlzIHRoZSBw
YXRoIChyZWxhdGl2ZSBvciBhYnNvbHV0ZSkgb2YgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRo
ZSBndGVzdC5mcmFtZXdvcmsuCisKK0lmIHlvdSBoYXZlbid0IHNldCB1cCB0aGUgRFlMRFxfRlJB
TUVXT1JLXF9QQVRILCBjb3JyZWN0bHksIHlvdSBtaWdodCBnZXQgYSBtZXNzYWdlIGxpa2UgdGhp
czoKKworYGBgCitbU2Vzc2lvbiBzdGFydGVkIGF0IDIwMDgtMDgtMTUgMDY6MjM6NTcgLTA2MDAu
XQorICBkeWxkOiBMaWJyYXJ5IG5vdCBsb2FkZWQ6IEBsb2FkZXJfcGF0aC8uLi9GcmFtZXdvcmtz
L2d0ZXN0LmZyYW1ld29yay9WZXJzaW9ucy9BL2d0ZXN0CisgICAgUmVmZXJlbmNlZCBmcm9tOiAv
VXNlcnMvdXNlcm5hbWUvRG9jdW1lbnRzL1NhbmRib3gvZ3Rlc3RTYW1wbGUvYnVpbGQvRGVidWcv
V2lkZ2V0RnJhbWV3b3JrVGVzdAorICAgIFJlYXNvbjogaW1hZ2Ugbm90IGZvdW5kCitgYGAKKwor
VG8gY29ycmVjdCB0aGlzIHByb2JsZW0sIGdvIHRvIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmlu
ZyB0aGUgZXhlY3V0YWJsZSBuYW1lZCBpbiAiUmVmZXJlbmNlZCBmcm9tOiIgdmFsdWUgaW4gdGhl
IGVycm9yIG1lc3NhZ2UgYWJvdmUuIFRoZW4sIHdpdGggdGhlIHRlcm1pbmFsIGluIHRoaXMgbG9j
YXRpb24sIGZpbmQgdGhlIHJlbGF0aXZlIHBhdGggdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5n
IHRoZSBndGVzdC5mcmFtZXdvcmsuIFRoYXQgaXMgdGhlIHZhbHVlIHlvdSdsbCBuZWVkIHRvIHNl
dCBhcyB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRILgorCisjIEJ1aWxkIGFuZCBHbyAjCisKK05v
dywgd2hlbiB5b3UgY2xpY2sgIkJ1aWxkIGFuZCBHbyIsIHRoZSB0ZXN0IHdpbGwgYmUgZXhlY3V0
ZWQuIER1bXBpbmcgb3V0IHNvbWV0aGluZyBsaWtlIHRoaXM6CisKK2BgYAorW1Nlc3Npb24gc3Rh
cnRlZCBhdCAyMDA4LTA4LTA2IDA2OjM2OjEzIC0wNjAwLl0KK1s9PT09PT09PT09XSBSdW5uaW5n
IDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZS4KK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZp
cm9ubWVudCBzZXQtdXAuCitbLS0tLS0tLS0tLV0gMiB0ZXN0cyBmcm9tIFdpZGdldEluaXRpYWxp
emVyVGVzdAorWyBSVU4gICAgICBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29uc3RydWN0
b3IKK1sgICAgICAgT0sgXSBXaWRnZXRJbml0aWFsaXplclRlc3QuVGVzdENvbnN0cnVjdG9yCitb
IFJVTiAgICAgIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb252ZXJzaW9uCitbICAgICAg
IE9LIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb252ZXJzaW9uCitbLS0tLS0tLS0tLV0g
R2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCitbPT09PT09PT09PV0gMiB0ZXN0cyBm
cm9tIDEgdGVzdCBjYXNlIHJhbi4KK1sgIFBBU1NFRCAgXSAyIHRlc3RzLgorCitUaGUgRGVidWdn
ZXIgaGFzIGV4aXRlZCB3aXRoIHN0YXR1cyAwLiAgCitgYGAKKworIyBTdW1tYXJ5ICMKKworVW5p
dCB0ZXN0aW5nIGlzIGEgdmFsdWFibGUgd2F5IHRvIGVuc3VyZSB5b3VyIGRhdGEgbW9kZWwgc3Rh
eXMgdmFsaWQgZXZlbiBkdXJpbmcgcmFwaWQgZGV2ZWxvcG1lbnQgb3IgcmVmYWN0b3JpbmcuIFRo
ZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaXMgYSBncmVhdCB1bml0IHRlc3RpbmcgZnJhbWV3
b3JrIGZvciBDIGFuZCBDKysgd2hpY2ggaW50ZWdyYXRlcyB3ZWxsIHdpdGggYW4gWGNvZGUgZGV2
ZWxvcG1lbnQgZW52aXJvbm1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9kb2NzL2FkdmFuY2VkLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9hZHZhbmNl
ZC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44MDY1ZDE5NjIxYThiMzdmYjc4Y2I1ZTBlZDFiODYxOGZlNzYyNWQy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9hZHZhbmNl
ZC5tZApAQCAtMCwwICsxLDI1MjAgQEAKKyMgQWR2YW5jZWQgZ29vZ2xldGVzdCBUb3BpY3MKKwor
CisjIyBJbnRyb2R1Y3Rpb24KKworTm93IHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgW2dvb2dsZXRl
c3QgUHJpbWVyXShwcmltZXIubWQpIGFuZCBsZWFybmVkIGhvdyB0byB3cml0ZQordGVzdHMgdXNp
bmcgZ29vZ2xldGVzdCwgaXQncyB0aW1lIHRvIGxlYXJuIHNvbWUgbmV3IHRyaWNrcy4gVGhpcyBk
b2N1bWVudCB3aWxsCitzaG93IHlvdSBtb3JlIGFzc2VydGlvbnMgYXMgd2VsbCBhcyBob3cgdG8g
Y29uc3RydWN0IGNvbXBsZXggZmFpbHVyZSBtZXNzYWdlcywKK3Byb3BhZ2F0ZSBmYXRhbCBmYWls
dXJlcywgcmV1c2UgYW5kIHNwZWVkIHVwIHlvdXIgdGVzdCBmaXh0dXJlcywgYW5kIHVzZSB2YXJp
b3VzCitmbGFncyB3aXRoIHlvdXIgdGVzdHMuCisKKyMjIE1vcmUgQXNzZXJ0aW9ucworCitUaGlz
IHNlY3Rpb24gY292ZXJzIHNvbWUgbGVzcyBmcmVxdWVudGx5IHVzZWQsIGJ1dCBzdGlsbCBzaWdu
aWZpY2FudCwKK2Fzc2VydGlvbnMuCisKKyMjIyBFeHBsaWNpdCBTdWNjZXNzIGFuZCBGYWlsdXJl
CisKK1RoZXNlIHRocmVlIGFzc2VydGlvbnMgZG8gbm90IGFjdHVhbGx5IHRlc3QgYSB2YWx1ZSBv
ciBleHByZXNzaW9uLiBJbnN0ZWFkLCB0aGV5CitnZW5lcmF0ZSBhIHN1Y2Nlc3Mgb3IgZmFpbHVy
ZSBkaXJlY3RseS4gTGlrZSB0aGUgbWFjcm9zIHRoYXQgYWN0dWFsbHkgcGVyZm9ybSBhCit0ZXN0
LCB5b3UgbWF5IHN0cmVhbSBhIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2UgaW50byB0aGVtLgorCitg
YGBjKysKK1NVQ0NFRUQoKTsKK2BgYAorCitHZW5lcmF0ZXMgYSBzdWNjZXNzLiBUaGlzIGRvZXMg
KipOT1QqKiBtYWtlIHRoZSBvdmVyYWxsIHRlc3Qgc3VjY2VlZC4gQSB0ZXN0IGlzCitjb25zaWRl
cmVkIHN1Y2Nlc3NmdWwgb25seSBpZiBub25lIG9mIGl0cyBhc3NlcnRpb25zIGZhaWwgZHVyaW5n
IGl0cyBleGVjdXRpb24uCisKK05PVEU6IGBTVUNDRUVEKClgIGlzIHB1cmVseSBkb2N1bWVudGFy
eSBhbmQgY3VycmVudGx5IGRvZXNuJ3QgZ2VuZXJhdGUgYW55Cit1c2VyLXZpc2libGUgb3V0cHV0
LiBIb3dldmVyLCB3ZSBtYXkgYWRkIGBTVUNDRUVEKClgIG1lc3NhZ2VzIHRvIGdvb2dsZXRlc3Qn
cworb3V0cHV0IGluIHRoZSBmdXR1cmUuCisKK2BgYGMrKworRkFJTCgpOworQUREX0ZBSUxVUkUo
KTsKK0FERF9GQUlMVVJFX0FUKCJmaWxlX3BhdGgiLCBsaW5lX251bWJlcik7CitgYGAKKworYEZB
SUwoKWAgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSwgd2hpbGUgYEFERF9GQUlMVVJFKClgIGFu
ZCBgQUREX0ZBSUxVUkVfQVQoKWAKK2dlbmVyYXRlIGEgbm9uZmF0YWwgZmFpbHVyZS4gVGhlc2Ug
YXJlIHVzZWZ1bCB3aGVuIGNvbnRyb2wgZmxvdywgcmF0aGVyIHRoYW4gYQorQm9vbGVhbiBleHBy
ZXNzaW9uLCBkZXRlcm1pbmVzIHRoZSB0ZXN0J3Mgc3VjY2VzcyBvciBmYWlsdXJlLiBGb3IgZXhh
bXBsZSwgeW91CittaWdodCB3YW50IHRvIHdyaXRlIHNvbWV0aGluZyBsaWtlOgorCitgYGBjKysK
K3N3aXRjaChleHByZXNzaW9uKSB7CisgIGNhc2UgMToKKyAgICAgLi4uIHNvbWUgY2hlY2tzIC4u
LgorICBjYXNlIDI6CisgICAgIC4uLiBzb21lIG90aGVyIGNoZWNrcyAuLi4KKyAgZGVmYXVsdDoK
KyAgICAgRkFJTCgpIDw8ICJXZSBzaG91bGRuJ3QgZ2V0IGhlcmUuIjsKK30KK2BgYAorCitOT1RF
OiB5b3UgY2FuIG9ubHkgdXNlIGBGQUlMKClgIGluIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBgdm9p
ZGAuIFNlZSB0aGUKK1tBc3NlcnRpb24gUGxhY2VtZW50IHNlY3Rpb25dKCNhc3NlcnRpb24tcGxh
Y2VtZW50KSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgs
IFdpbmRvd3MsIE1hYy4KKworIyMjIEV4Y2VwdGlvbiBBc3NlcnRpb25zCisKK1RoZXNlIGFyZSBm
b3IgdmVyaWZ5aW5nIHRoYXQgYSBwaWVjZSBvZiBjb2RlIHRocm93cyAob3IgZG9lcyBub3QgdGhy
b3cpIGFuCitleGNlcHRpb24gb2YgdGhlIGdpdmVuIHR5cGU6CisKK0ZhdGFsIGFzc2VydGlvbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAgICAgICAg
ICAgICAgICAgICAgICB8IFZlcmlmaWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
fCAtLS0tLS0tLQorYEFTU0VSVF9USFJPVyhzdGF0ZW1lbnQsIGV4Y2VwdGlvbl90eXBlKTtgIHwg
YEVYUEVDVF9USFJPVyhzdGF0ZW1lbnQsIGV4Y2VwdGlvbl90eXBlKTtgIHwgYHN0YXRlbWVudGAg
dGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiB0aGUgZ2l2ZW4gdHlwZQorYEFTU0VSVF9BTllfVEhST1co
c3RhdGVtZW50KTtgICAgICAgICAgICAgIHwgYEVYUEVDVF9BTllfVEhST1coc3RhdGVtZW50KTtg
ICAgICAgICAgICAgIHwgYHN0YXRlbWVudGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiBhbnkgdHlw
ZQorYEFTU0VSVF9OT19USFJPVyhzdGF0ZW1lbnQpO2AgICAgICAgICAgICAgIHwgYEVYUEVDVF9O
T19USFJPVyhzdGF0ZW1lbnQpO2AgICAgICAgICAgICAgIHwgYHN0YXRlbWVudGAgZG9lc24ndCB0
aHJvdyBhbnkgZXhjZXB0aW9uCisKK0V4YW1wbGVzOgorCitgYGBjKysKK0FTU0VSVF9USFJPVyhG
b28oNSksIGJhcl9leGNlcHRpb24pOworCitFWFBFQ1RfTk9fVEhST1coeworICBpbnQgbiA9IDU7
CisgIEJhcigmbik7Cit9KTsKK2BgYAorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93
cywgTWFjOyByZXF1aXJlcyBleGNlcHRpb25zIHRvIGJlIGVuYWJsZWQgaW4gdGhlCitidWlsZCBl
bnZpcm9ubWVudCAobm90ZSB0aGF0IGBnb29nbGUzYCAqKmRpc2FibGVzKiogZXhjZXB0aW9ucyku
CisKKyMjIyBQcmVkaWNhdGUgQXNzZXJ0aW9ucyBmb3IgQmV0dGVyIEVycm9yIE1lc3NhZ2VzCisK
K0V2ZW4gdGhvdWdoIGdvb2dsZXRlc3QgaGFzIGEgcmljaCBzZXQgb2YgYXNzZXJ0aW9ucywgdGhl
eSBjYW4gbmV2ZXIgYmUgY29tcGxldGUsCithcyBpdCdzIGltcG9zc2libGUgKG5vciBhIGdvb2Qg
aWRlYSkgdG8gYW50aWNpcGF0ZSBhbGwgc2NlbmFyaW9zIGEgdXNlciBtaWdodAorcnVuIGludG8u
IFRoZXJlZm9yZSwgc29tZXRpbWVzIGEgdXNlciBoYXMgdG8gdXNlIGBFWFBFQ1RfVFJVRSgpYCB0
byBjaGVjayBhCitjb21wbGV4IGV4cHJlc3Npb24sIGZvciBsYWNrIG9mIGEgYmV0dGVyIG1hY3Jv
LiBUaGlzIGhhcyB0aGUgcHJvYmxlbSBvZiBub3QKK3Nob3dpbmcgeW91IHRoZSB2YWx1ZXMgb2Yg
dGhlIHBhcnRzIG9mIHRoZSBleHByZXNzaW9uLCBtYWtpbmcgaXQgaGFyZCB0bwordW5kZXJzdGFu
ZCB3aGF0IHdlbnQgd3JvbmcuIEFzIGEgd29ya2Fyb3VuZCwgc29tZSB1c2VycyBjaG9vc2UgdG8g
Y29uc3RydWN0IHRoZQorZmFpbHVyZSBtZXNzYWdlIGJ5IHRoZW1zZWx2ZXMsIHN0cmVhbWluZyBp
dCBpbnRvIGBFWFBFQ1RfVFJVRSgpYC4gSG93ZXZlciwgdGhpcworaXMgYXdrd2FyZCBlc3BlY2lh
bGx5IHdoZW4gdGhlIGV4cHJlc3Npb24gaGFzIHNpZGUtZWZmZWN0cyBvciBpcyBleHBlbnNpdmUg
dG8KK2V2YWx1YXRlLgorCitnb29nbGV0ZXN0IGdpdmVzIHlvdSB0aHJlZSBkaWZmZXJlbnQgb3B0
aW9ucyB0byBzb2x2ZSB0aGlzIHByb2JsZW06CisKKyMjIyMgVXNpbmcgYW4gRXhpc3RpbmcgQm9v
bGVhbiBGdW5jdGlvbgorCitJZiB5b3UgYWxyZWFkeSBoYXZlIGEgZnVuY3Rpb24gb3IgZnVuY3Rv
ciB0aGF0IHJldHVybnMgYGJvb2xgIChvciBhIHR5cGUgdGhhdAorY2FuIGJlIGltcGxpY2l0bHkg
Y29udmVydGVkIHRvIGBib29sYCksIHlvdSBjYW4gdXNlIGl0IGluIGEgKnByZWRpY2F0ZQorYXNz
ZXJ0aW9uKiB0byBnZXQgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cyBwcmludGVkIGZvciBmcmVlOgor
Cit8IEZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRp
b24gICAgICAgICAgICAgICAgIHwgVmVyaWZpZXMgICAgICAgICAgICAgICAgICAgIHwKK3wgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAorfCBgQVNTRVJUX1BS
RUQxKHByZWQxLCB2YWwxKTtgICAgICAgIHwgYEVYUEVDVF9QUkVEMShwcmVkMSwgdmFsMSk7YCAg
ICAgICB8IGBwcmVkMSh2YWwxKWAgaXMgdHJ1ZSAgICAgICB8Cit8IGBBU1NFUlRfUFJFRDIocHJl
ZDIsIHZhbDEsIHZhbDIpO2AgfCBgRVhQRUNUX1BSRUQyKHByZWQyLCB2YWwxLCB2YWwyKTtgIHwg
YHByZWQyKHZhbDEsIHZhbDIpYCBpcyB0cnVlIHwKK3wgYC4uLmAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IGAuLi5gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAuLi4gICAg
ICAgICAgICAgICAgICAgICAgICAgfAorCitJbiB0aGUgYWJvdmUsIGBwcmVkbmAgaXMgYW4gYG5g
LWFyeSBwcmVkaWNhdGUgZnVuY3Rpb24gb3IgZnVuY3Rvciwgd2hlcmUgYHZhbDFgLAorYHZhbDJg
LCAuLi4sIGFuZCBgdmFsbmAgYXJlIGl0cyBhcmd1bWVudHMuIFRoZSBhc3NlcnRpb24gc3VjY2Vl
ZHMgaWYgdGhlCitwcmVkaWNhdGUgcmV0dXJucyBgdHJ1ZWAgd2hlbiBhcHBsaWVkIHRvIHRoZSBn
aXZlbiBhcmd1bWVudHMsIGFuZCBmYWlscworb3RoZXJ3aXNlLiBXaGVuIHRoZSBhc3NlcnRpb24g
ZmFpbHMsIGl0IHByaW50cyB0aGUgdmFsdWUgb2YgZWFjaCBhcmd1bWVudC4gSW4KK2VpdGhlciBj
YXNlLCB0aGUgYXJndW1lbnRzIGFyZSBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLgorCitIZXJlJ3Mg
YW4gZXhhbXBsZS4gR2l2ZW4KKworYGBgYysrCisvLyBSZXR1cm5zIHRydWUgaWYgbSBhbmQgbiBo
YXZlIG5vIGNvbW1vbiBkaXZpc29ycyBleGNlcHQgMS4KK2Jvb2wgTXV0dWFsbHlQcmltZShpbnQg
bSwgaW50IG4pIHsgLi4uIH0KKworY29uc3QgaW50IGEgPSAzOworY29uc3QgaW50IGIgPSA0Owor
Y29uc3QgaW50IGMgPSAxMDsKK2BgYAorCit0aGUgYXNzZXJ0aW9uCisKK2BgYGMrKworICBFWFBF
Q1RfUFJFRDIoTXV0dWFsbHlQcmltZSwgYSwgYik7CitgYGAKKword2lsbCBzdWNjZWVkLCB3aGls
ZSB0aGUgYXNzZXJ0aW9uCisKK2BgYGMrKworICBFWFBFQ1RfUFJFRDIoTXV0dWFsbHlQcmltZSwg
YiwgYyk7CitgYGAKKword2lsbCBmYWlsIHdpdGggdGhlIG1lc3NhZ2UKKworYGBgbm9uZQorTXV0
dWFsbHlQcmltZShiLCBjKSBpcyBmYWxzZSwgd2hlcmUKK2IgaXMgNAorYyBpcyAxMAorYGBgCisK
Kz4gTk9URToKKz4KKz4gMS4gIElmIHlvdSBzZWUgYSBjb21waWxlciBlcnJvciAibm8gbWF0Y2hp
bmcgZnVuY3Rpb24gdG8gY2FsbCIgd2hlbiB1c2luZworPiAgICAgYEFTU0VSVF9QUkVEKmAgb3Ig
YEVYUEVDVF9QUkVEKmAsIHBsZWFzZSBzZWUKKz4gICAgIFt0aGlzXShmYXEubWQjT3ZlcmxvYWRl
ZFByZWRpY2F0ZSkgZm9yIGhvdyB0byByZXNvbHZlIGl0LgorPiAxLiAgQ3VycmVudGx5IHdlIG9u
bHkgcHJvdmlkZSBwcmVkaWNhdGUgYXNzZXJ0aW9ucyBvZiBhcml0eSA8PSA1LiBJZiB5b3UgbmVl
ZAorPiAgICAgYSBoaWdoZXItYXJpdHkgYXNzZXJ0aW9uLCBsZXQgW3VzXShodHRwczovL2dpdGh1
Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvaXNzdWVzKSBrbm93LgorCisqKkF2YWlsYWJpbGl0eSoq
OiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMjIFVzaW5nIGEgRnVuY3Rpb24gVGhhdCBSZXR1
cm5zIGFuIEFzc2VydGlvblJlc3VsdAorCitXaGlsZSBgRVhQRUNUX1BSRUQqKClgIGFuZCBmcmll
bmRzIGFyZSBoYW5keSBmb3IgYSBxdWljayBqb2IsIHRoZSBzeW50YXggaXMgbm90CitzYXRpc2Zh
Y3Rvcnk6IHlvdSBoYXZlIHRvIHVzZSBkaWZmZXJlbnQgbWFjcm9zIGZvciBkaWZmZXJlbnQgYXJp
dGllcywgYW5kIGl0CitmZWVscyBtb3JlIGxpa2UgTGlzcCB0aGFuIEMrKy4gVGhlIGA6OnRlc3Rp
bmc6OkFzc2VydGlvblJlc3VsdGAgY2xhc3Mgc29sdmVzCit0aGlzIHByb2JsZW0uCisKK0FuIGBB
c3NlcnRpb25SZXN1bHRgIG9iamVjdCByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYW4gYXNzZXJ0
aW9uICh3aGV0aGVyIGl0J3MKK2Egc3VjY2VzcyBvciBhIGZhaWx1cmUsIGFuZCBhbiBhc3NvY2lh
dGVkIG1lc3NhZ2UpLiBZb3UgY2FuIGNyZWF0ZSBhbgorYEFzc2VydGlvblJlc3VsdGAgdXNpbmcg
b25lIG9mIHRoZXNlIGZhY3RvcnkgZnVuY3Rpb25zOgorCitgYGBjKysKK25hbWVzcGFjZSB0ZXN0
aW5nIHsKKworLy8gUmV0dXJucyBhbiBBc3NlcnRpb25SZXN1bHQgb2JqZWN0IHRvIGluZGljYXRl
IHRoYXQgYW4gYXNzZXJ0aW9uIGhhcworLy8gc3VjY2VlZGVkLgorQXNzZXJ0aW9uUmVzdWx0IEFz
c2VydGlvblN1Y2Nlc3MoKTsKKworLy8gUmV0dXJucyBhbiBBc3NlcnRpb25SZXN1bHQgb2JqZWN0
IHRvIGluZGljYXRlIHRoYXQgYW4gYXNzZXJ0aW9uIGhhcworLy8gZmFpbGVkLgorQXNzZXJ0aW9u
UmVzdWx0IEFzc2VydGlvbkZhaWx1cmUoKTsKKworfQorYGBgCisKK1lvdSBjYW4gdGhlbiB1c2Ug
dGhlIGA8PGAgb3BlcmF0b3IgdG8gc3RyZWFtIG1lc3NhZ2VzIHRvIHRoZSBgQXNzZXJ0aW9uUmVz
dWx0YAorb2JqZWN0LgorCitUbyBwcm92aWRlIG1vcmUgcmVhZGFibGUgbWVzc2FnZXMgaW4gQm9v
bGVhbiBhc3NlcnRpb25zIChlLmcuIGBFWFBFQ1RfVFJVRSgpYCksCit3cml0ZSBhIHByZWRpY2F0
ZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYEFzc2VydGlvblJlc3VsdGAgaW5zdGVhZCBvZiBgYm9v
bGAuIEZvcgorZXhhbXBsZSwgaWYgeW91IGRlZmluZSBgSXNFdmVuKClgIGFzOgorCitgYGBjKysK
Kzo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IElzRXZlbihpbnQgbikgeworICBpZiAoKG4gJSAy
KSA9PSAwKQorICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CisgIGVs
c2UKKyAgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG4gPDwgIiBp
cyBvZGQiOworfQorYGBgCisKK2luc3RlYWQgb2Y6CisKK2BgYGMrKworYm9vbCBJc0V2ZW4oaW50
IG4pIHsKKyAgcmV0dXJuIChuICUgMikgPT0gMDsKK30KK2BgYAorCit0aGUgZmFpbGVkIGFzc2Vy
dGlvbiBgRVhQRUNUX1RSVUUoSXNFdmVuKEZpYig0KSkpYCB3aWxsIHByaW50OgorCitgYGBub25l
CitWYWx1ZSBvZjogSXNFdmVuKEZpYig0KSkKKyAgQWN0dWFsOiBmYWxzZSAoMyBpcyBvZGQpCitF
eHBlY3RlZDogdHJ1ZQorYGBgCisKK2luc3RlYWQgb2YgYSBtb3JlIG9wYXF1ZQorCitgYGBub25l
CitWYWx1ZSBvZjogSXNFdmVuKEZpYig0KSkKKyAgQWN0dWFsOiBmYWxzZQorRXhwZWN0ZWQ6IHRy
dWUKK2BgYAorCitJZiB5b3Ugd2FudCBpbmZvcm1hdGl2ZSBtZXNzYWdlcyBpbiBgRVhQRUNUX0ZB
TFNFYCBhbmQgYEFTU0VSVF9GQUxTRWAgYXMgd2VsbAorKG9uZSB0aGlyZCBvZiBCb29sZWFuIGFz
c2VydGlvbnMgaW4gdGhlIEdvb2dsZSBjb2RlIGJhc2UgYXJlIG5lZ2F0aXZlIG9uZXMpLCBhbmQK
K2FyZSBmaW5lIHdpdGggbWFraW5nIHRoZSBwcmVkaWNhdGUgc2xvd2VyIGluIHRoZSBzdWNjZXNz
IGNhc2UsIHlvdSBjYW4gc3VwcGx5IGEKK3N1Y2Nlc3MgbWVzc2FnZToKKworYGBgYysrCis6OnRl
c3Rpbmc6OkFzc2VydGlvblJlc3VsdCBJc0V2ZW4oaW50IG4pIHsKKyAgaWYgKChuICUgMikgPT0g
MCkKKyAgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpIDw8IG4gPDwgIiBp
cyBldmVuIjsKKyAgZWxzZQorICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJl
KCkgPDwgbiA8PCAiIGlzIG9kZCI7Cit9CitgYGAKKworVGhlbiB0aGUgc3RhdGVtZW50IGBFWFBF
Q1RfRkFMU0UoSXNFdmVuKEZpYig2KSkpYCB3aWxsIHByaW50CisKK2BgYG5vbmUKKyAgVmFsdWUg
b2Y6IElzRXZlbihGaWIoNikpCisgICAgIEFjdHVhbDogdHJ1ZSAoOCBpcyBldmVuKQorICBFeHBl
Y3RlZDogZmFsc2UKK2BgYAorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFj
LgorCisjIyMjIFVzaW5nIGEgUHJlZGljYXRlLUZvcm1hdHRlcgorCitJZiB5b3UgZmluZCB0aGUg
ZGVmYXVsdCBtZXNzYWdlIGdlbmVyYXRlZCBieSBgKEFTU0VSVHxFWFBFQ1QpX1BSRUQqYCBhbmQK
K2AoQVNTRVJUfEVYUEVDVClfKFRSVUV8RkFMU0UpYCB1bnNhdGlzZmFjdG9yeSwgb3Igc29tZSBh
cmd1bWVudHMgdG8geW91cgorcHJlZGljYXRlIGRvIG5vdCBzdXBwb3J0IHN0cmVhbWluZyB0byBg
b3N0cmVhbWAsIHlvdSBjYW4gaW5zdGVhZCB1c2UgdGhlCitmb2xsb3dpbmcgKnByZWRpY2F0ZS1m
b3JtYXR0ZXIgYXNzZXJ0aW9ucyogdG8gKmZ1bGx5KiBjdXN0b21pemUgaG93IHRoZSBtZXNzYWdl
CitpcyBmb3JtYXR0ZWQ6CisKK0ZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IFZlcmlmaWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gfCAtLS0tLS0tLQorYEFTU0VSVF9QUkVEX0ZPUk1BVDEocHJlZF9mb3JtYXQxLCB2YWwxKTtg
ICAgICAgIHwgYEVYUEVDVF9QUkVEX0ZPUk1BVDEocHJlZF9mb3JtYXQxLCB2YWwxKTtgICAgICAg
IHwgYHByZWRfZm9ybWF0MSh2YWwxKWAgaXMgc3VjY2Vzc2Z1bAorYEFTU0VSVF9QUkVEX0ZPUk1B
VDIocHJlZF9mb3JtYXQyLCB2YWwxLCB2YWwyKTtgIHwgYEVYUEVDVF9QUkVEX0ZPUk1BVDIocHJl
ZF9mb3JtYXQyLCB2YWwxLCB2YWwyKTtgIHwgYHByZWRfZm9ybWF0Mih2YWwxLCB2YWwyKWAgaXMg
c3VjY2Vzc2Z1bAorYC4uLmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgYC4uLmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
Li4uCisKK1RoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBhbmQgdGhlIHByZXZpb3VzIGdyb3Vw
IG9mIG1hY3JvcyBpcyB0aGF0IGluc3RlYWQgb2YKK2EgcHJlZGljYXRlLCBgKEFTU0VSVHxFWFBF
Q1QpX1BSRURfRk9STUFUKmAgdGFrZSBhICpwcmVkaWNhdGUtZm9ybWF0dGVyKgorKGBwcmVkX2Zv
cm1hdG5gKSwgd2hpY2ggaXMgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHdpdGggdGhlIHNpZ25hdHVy
ZToKKworYGBgYysrCis6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkaWNhdGVGb3JtYXR0
ZXJuKGNvbnN0IGNoYXIqIGV4cHIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHByMiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cHJuLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUMSB2YWwxLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUMiB2YWwyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVG4gdmFsbik7CitgYGAKKword2hlcmUgYHZhbDFgLCBg
dmFsMmAsIC4uLiwgYW5kIGB2YWxuYCBhcmUgdGhlIHZhbHVlcyBvZiB0aGUgcHJlZGljYXRlIGFy
Z3VtZW50cywKK2FuZCBgZXhwcjFgLCBgZXhwcjJgLCAuLi4sIGFuZCBgZXhwcm5gIGFyZSB0aGUg
Y29ycmVzcG9uZGluZyBleHByZXNzaW9ucyBhcyB0aGV5CithcHBlYXIgaW4gdGhlIHNvdXJjZSBj
b2RlLiBUaGUgdHlwZXMgYFQxYCwgYFQyYCwgLi4uLCBhbmQgYFRuYCBjYW4gYmUgZWl0aGVyCit2
YWx1ZSB0eXBlcyBvciByZWZlcmVuY2UgdHlwZXMuIEZvciBleGFtcGxlLCBpZiBhbiBhcmd1bWVu
dCBoYXMgdHlwZSBgRm9vYCwgeW91CitjYW4gZGVjbGFyZSBpdCBhcyBlaXRoZXIgYEZvb2Agb3Ig
YGNvbnN0IEZvbyZgLCB3aGljaGV2ZXIgaXMgYXBwcm9wcmlhdGUuCisKK0FzIGFuIGV4YW1wbGUs
IGxldCdzIGltcHJvdmUgdGhlIGZhaWx1cmUgbWVzc2FnZSBpbiBgTXV0dWFsbHlQcmltZSgpYCwg
d2hpY2ggd2FzCit1c2VkIHdpdGggYEVYUEVDVF9QUkVEMigpYDoKKworYGBgYysrCisvLyBSZXR1
cm5zIHRoZSBzbWFsbGVzdCBwcmltZSBjb21tb24gZGl2aXNvciBvZiBtIGFuZCBuLAorLy8gb3Ig
MSB3aGVuIG0gYW5kIG4gYXJlIG11dHVhbGx5IHByaW1lLgoraW50IFNtYWxsZXN0UHJpbWVDb21t
b25EaXZpc29yKGludCBtLCBpbnQgbikgeyAuLi4gfQorCisvLyBBIHByZWRpY2F0ZS1mb3JtYXR0
ZXIgZm9yIGFzc2VydGluZyB0aGF0IHR3byBpbnRlZ2VycyBhcmUgbXV0dWFsbHkgcHJpbWUuCis6
OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBBc3NlcnRNdXR1YWxseVByaW1lKGNvbnN0IGNoYXIq
IG1fZXhwciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogbl9leHByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IG4pIHsKKyAgaWYgKE11dHVhbGx5UHJpbWUobSwgbikpIHJldHVybiA6OnRl
c3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKKworICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRp
b25GYWlsdXJlKCkgPDwgbV9leHByIDw8ICIgYW5kICIgPDwgbl9leHByCisgICAgICA8PCAiICgi
IDw8IG0gPDwgIiBhbmQgIiA8PCBuIDw8ICIpIGFyZSBub3QgbXV0dWFsbHkgcHJpbWUsICIKKyAg
ICAgIDw8ICJhcyB0aGV5IGhhdmUgYSBjb21tb24gZGl2aXNvciAiIDw8IFNtYWxsZXN0UHJpbWVD
b21tb25EaXZpc29yKG0sIG4pOworfQorYGBgCisKK1dpdGggdGhpcyBwcmVkaWNhdGUtZm9ybWF0
dGVyLCB3ZSBjYW4gdXNlCisKK2BgYGMrKworICBFWFBFQ1RfUFJFRF9GT1JNQVQyKEFzc2VydE11
dHVhbGx5UHJpbWUsIGIsIGMpOworYGBgCisKK3RvIGdlbmVyYXRlIHRoZSBtZXNzYWdlCisKK2Bg
YG5vbmUKK2IgYW5kIGMgKDQgYW5kIDEwKSBhcmUgbm90IG11dHVhbGx5IHByaW1lLCBhcyB0aGV5
IGhhdmUgYSBjb21tb24gZGl2aXNvciAyLgorYGBgCisKK0FzIHlvdSBtYXkgaGF2ZSByZWFsaXpl
ZCwgbWFueSBvZiB0aGUgYnVpbHQtaW4gYXNzZXJ0aW9ucyB3ZSBpbnRyb2R1Y2VkIGVhcmxpZXIK
K2FyZSBzcGVjaWFsIGNhc2VzIG9mIGAoRVhQRUNUfEFTU0VSVClfUFJFRF9GT1JNQVQqYC4gSW4g
ZmFjdCwgbW9zdCBvZiB0aGVtIGFyZQoraW5kZWVkIGRlZmluZWQgdXNpbmcgYChFWFBFQ1R8QVNT
RVJUKV9QUkVEX0ZPUk1BVCpgLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywg
TWFjLgorCisjIyMgRmxvYXRpbmctUG9pbnQgQ29tcGFyaXNvbgorCitDb21wYXJpbmcgZmxvYXRp
bmctcG9pbnQgbnVtYmVycyBpcyB0cmlja3kuIER1ZSB0byByb3VuZC1vZmYgZXJyb3JzLCBpdCBp
cyB2ZXJ5Cit1bmxpa2VseSB0aGF0IHR3byBmbG9hdGluZy1wb2ludHMgd2lsbCBtYXRjaCBleGFj
dGx5LiBUaGVyZWZvcmUsIGBBU1NFUlRfRVFgICdzCituYWl2ZSBjb21wYXJpc29uIHVzdWFsbHkg
ZG9lc24ndCB3b3JrLiBBbmQgc2luY2UgZmxvYXRpbmctcG9pbnRzIGNhbiBoYXZlIGEgd2lkZQor
dmFsdWUgcmFuZ2UsIG5vIHNpbmdsZSBmaXhlZCBlcnJvciBib3VuZCB3b3Jrcy4gSXQncyBiZXR0
ZXIgdG8gY29tcGFyZSBieSBhCitmaXhlZCByZWxhdGl2ZSBlcnJvciBib3VuZCwgZXhjZXB0IGZv
ciB2YWx1ZXMgY2xvc2UgdG8gMCBkdWUgdG8gdGhlIGxvc3Mgb2YKK3ByZWNpc2lvbiB0aGVyZS4K
KworSW4gZ2VuZXJhbCwgZm9yIGZsb2F0aW5nLXBvaW50IGNvbXBhcmlzb24gdG8gbWFrZSBzZW5z
ZSwgdGhlIHVzZXIgbmVlZHMgdG8KK2NhcmVmdWxseSBjaG9vc2UgdGhlIGVycm9yIGJvdW5kLiBJ
ZiB0aGV5IGRvbid0IHdhbnQgb3IgY2FyZSB0bywgY29tcGFyaW5nIGluCit0ZXJtcyBvZiBVbml0
cyBpbiB0aGUgTGFzdCBQbGFjZSAoVUxQcykgaXMgYSBnb29kIGRlZmF1bHQsIGFuZCBnb29nbGV0
ZXN0Citwcm92aWRlcyBhc3NlcnRpb25zIHRvIGRvIHRoaXMuIEZ1bGwgZGV0YWlscyBhYm91dCBV
TFBzIGFyZSBxdWl0ZSBsb25nOyBpZiB5b3UKK3dhbnQgdG8gbGVhcm4gbW9yZSwgc2VlCitbaGVy
ZV0oaHR0cHM6Ly9yYW5kb21hc2NpaS53b3JkcHJlc3MuY29tLzIwMTIvMDIvMjUvY29tcGFyaW5n
LWZsb2F0aW5nLXBvaW50LW51bWJlcnMtMjAxMi1lZGl0aW9uLykuCisKKyMjIyMgRmxvYXRpbmct
UG9pbnQgTWFjcm9zCisKK3wgRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICB8IE5vbmZh
dGFsIGFzc2VydGlvbiAgICAgICAgICAgICB8IFZlcmlmaWVzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSB8Cit8IGBBU1NFUlRfRkxPQVRfRVEodmFsMSwgdmFsMik7YCAgfCBgRVhQRUNU
X0ZMT0FUX0VRKHZhbDEsdmFsMik7YCAgfCB0aGUgdHdvIGBmbG9hdGAgdmFsdWVzIGFyZSBhbG1v
c3QgZXF1YWwgIHwKK3wgYEFTU0VSVF9ET1VCTEVfRVEodmFsMSwgdmFsMik7YCB8IGBFWFBFQ1Rf
RE9VQkxFX0VRKHZhbDEsIHZhbDIpO2B8IHRoZSB0d28gYGRvdWJsZWAgdmFsdWVzIGFyZSBhbG1v
c3QgZXF1YWwgfAorCitCeSAiYWxtb3N0IGVxdWFsIiB3ZSBtZWFuIHRoZSB2YWx1ZXMgYXJlIHdp
dGhpbiA0IFVMUCdzIGZyb20gZWFjaCBvdGhlci4KKworTk9URTogYENIRUNLX0RPVUJMRV9FUSgp
YCBpbiBgYmFzZS9sb2dnaW5nLmhgIHVzZXMgYSBmaXhlZCBhYnNvbHV0ZSBlcnJvciBib3VuZCwK
K3NvIGl0cyByZXN1bHQgbWF5IGRpZmZlciBmcm9tIHRoYXQgb2YgdGhlIGdvb2dsZXRlc3QgbWFj
cm9zLiBUaGF0IG1hY3JvIGlzCit1bnNhZmUgYW5kIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFBsZWFz
ZSBkb24ndCB1c2UgaXQgYW55IG1vcmUuCisKK1RoZSBmb2xsb3dpbmcgYXNzZXJ0aW9ucyBhbGxv
dyB5b3UgdG8gY2hvb3NlIHRoZSBhY2NlcHRhYmxlIGVycm9yIGJvdW5kOgorCit8IEZhdGFsIGFz
c2VydGlvbiAgICAgICAgICAgICAgICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAg
ICAgICAgICAgICAgIHwgVmVyaWZpZXMgICAgICAgICAgICAgICAgICB8Cit8IC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8Cit8IGBBU1NFUlRfTkVBUih2
YWwxLCB2YWwyLCBhYnNfZXJyb3IpO2AgfCBgRVhQRUNUX05FQVIodmFsMSwgdmFsMiwgYWJzX2Vy
cm9yKTtgIHwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBgdmFsMWAgYW5kIGB2YWwyYCBkb2Vzbid0
IGV4Y2VlZCB0aGUgZ2l2ZW4gYWJzb2x1dGUgZXJyb3IgfAorCisqKkF2YWlsYWJpbGl0eSoqOiBM
aW51eCwgV2luZG93cywgTWFjLgorCisjIyMjIEZsb2F0aW5nLVBvaW50IFByZWRpY2F0ZS1Gb3Jt
YXQgRnVuY3Rpb25zCisKK1NvbWUgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyBhcmUgdXNlZnVs
LCBidXQgbm90IHRoYXQgb2Z0ZW4gdXNlZC4gSW4gb3JkZXIgdG8KK2F2b2lkIGFuIGV4cGxvc2lv
biBvZiBuZXcgbWFjcm9zLCB3ZSBwcm92aWRlIHRoZW0gYXMgcHJlZGljYXRlLWZvcm1hdCBmdW5j
dGlvbnMKK3RoYXQgY2FuIGJlIHVzZWQgaW4gcHJlZGljYXRlIGFzc2VydGlvbiBtYWNyb3MgKGUu
Zy4gYEVYUEVDVF9QUkVEX0ZPUk1BVDJgLAorZXRjKS4KKworYGBgYysrCitFWFBFQ1RfUFJFRF9G
T1JNQVQyKDo6dGVzdGluZzo6RmxvYXRMRSwgdmFsMSwgdmFsMik7CitFWFBFQ1RfUFJFRF9GT1JN
QVQyKDo6dGVzdGluZzo6RG91YmxlTEUsIHZhbDEsIHZhbDIpOworYGBgCisKK1ZlcmlmaWVzIHRo
YXQgYHZhbDFgIGlzIGxlc3MgdGhhbiwgb3IgYWxtb3N0IGVxdWFsIHRvLCBgdmFsMmAuIFlvdSBj
YW4gcmVwbGFjZQorYEVYUEVDVF9QUkVEX0ZPUk1BVDJgIGluIHRoZSBhYm92ZSB0YWJsZSB3aXRo
IGBBU1NFUlRfUFJFRF9GT1JNQVQyYC4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRv
d3MsIE1hYy4KKworIyMjIEFzc2VydGluZyBVc2luZyBnTW9jayBNYXRjaGVycworCitHb29nbGUt
ZGV2ZWxvcGVkIEMrKyBtb2NraW5nIGZyYW1ld29yayBbZ01vY2tdKC4uLy4uL2dvb2dsZW1vY2sp
IGNvbWVzIHdpdGggYQorbGlicmFyeSBvZiBtYXRjaGVycyBmb3IgdmFsaWRhdGluZyBhcmd1bWVu
dHMgcGFzc2VkIHRvIG1vY2sgb2JqZWN0cy4gQSBnTW9jaworKm1hdGNoZXIqIGlzIGJhc2ljYWxs
eSBhIHByZWRpY2F0ZSB0aGF0IGtub3dzIGhvdyB0byBkZXNjcmliZSBpdHNlbGYuIEl0IGNhbiBi
ZQordXNlZCBpbiB0aGVzZSBhc3NlcnRpb24gbWFjcm9zOgorCit8IEZhdGFsIGFzc2VydGlvbiAg
ICAgICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICB8IFZlcmlmaWVz
ICAgICAgICAgICAgICB8Cit8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8Cit8IGBB
U1NFUlRfVEhBVCh2YWx1ZSwgbWF0Y2hlcik7YCB8IGBFWFBFQ1RfVEhBVCh2YWx1ZSwgbWF0Y2hl
cik7YCB8IHZhbHVlIG1hdGNoZXMgbWF0Y2hlciB8CisKK0ZvciBleGFtcGxlLCBgU3RhcnRzV2l0
aChwcmVmaXgpYCBpcyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgc3RyaW5nIHN0YXJ0aW5nCit3
aXRoIGBwcmVmaXhgLCBhbmQgeW91IGNhbiB3cml0ZToKKworYGBgYysrCit1c2luZyA6OnRlc3Rp
bmc6OlN0YXJ0c1dpdGg7CisuLi4KKyAgICAvLyBWZXJpZmllcyB0aGF0IEZvbygpIHJldHVybnMg
YSBzdHJpbmcgc3RhcnRpbmcgd2l0aCAiSGVsbG8iLgorICAgIEVYUEVDVF9USEFUKEZvbygpLCBT
dGFydHNXaXRoKCJIZWxsbyIpKTsKK2BgYAorCitSZWFkIHRoaXMgW3JlY2lwZV0oLi4vLi4vZ29v
Z2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3VzaW5nLW1hdGNoZXJzLWluLWdvb2dsZS10ZXN0LWFz
c2VydGlvbnMpIGluCit0aGUgZ01vY2sgQ29va2Jvb2sgZm9yIG1vcmUgZGV0YWlscy4KKworZ01v
Y2sgaGFzIGEgcmljaCBzZXQgb2YgbWF0Y2hlcnMuIFlvdSBjYW4gZG8gbWFueSB0aGluZ3MgZ29v
Z2xldGVzdCBjYW5ub3QgZG8KK2Fsb25lIHdpdGggdGhlbS4gRm9yIGEgbGlzdCBvZiBtYXRjaGVy
cyBnTW9jayBwcm92aWRlcywgcmVhZAorW3RoaXNdKC4uLy4uL2dvb2dsZW1vY2svZG9jcy9Db29r
Qm9vay5tZCN1c2luZy1tYXRjaGVycykuIEVzcGVjaWFsbHkgdXNlZnVsIGFtb25nIHRoZW0gYXJl
Citzb21lIFtwcm90b2NvbCBidWZmZXIgbWF0Y2hlcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29n
bGUvbnVjbGV1cy9ibG9iL21hc3Rlci9udWNsZXVzL3Rlc3RpbmcvcHJvdG9jb2wtYnVmZmVyLW1h
dGNoZXJzLmgpLiBJdCdzIGVhc3kgdG8gd3JpdGUKK3lvdXIgW293biBtYXRjaGVyc10oLi4vLi4v
Z29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3dyaXRpbmctbmV3LW1hdGNoZXJzLXF1aWNrbHkp
IHRvby4KKworRm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIGdNb2NrJ3MKK1tFcXVhbHNQcm90b10o
aHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9udWNsZXVzL2Jsb2IvbWFzdGVyL251Y2xldXMvdGVz
dGluZy9wcm90b2NvbC1idWZmZXItbWF0Y2hlcnMuaCkKK3RvIGNvbXBhcmUgcHJvdG9zIGluIHlv
dXIgdGVzdHM6CisKK2BgYGMrKworI2luY2x1ZGUgInRlc3RpbmcvYmFzZS9wdWJsaWMvZ21vY2su
aCIKK3VzaW5nIDo6dGVzdGluZzo6RXF1YWxzUHJvdG87CisuLi4KKyAgICBFWFBFQ1RfVEhBVChh
Y3R1YWxfcHJvdG8sIEVxdWFsc1Byb3RvKCJmb286IDEyMyBiYXI6ICd4eXonIikpOworICAgIEVY
UEVDVF9USEFUKCphY3R1YWxfcHJvdG9fcHRyLCBFcXVhbHNQcm90byhleHBlY3RlZF9wcm90bykp
OworYGBgCisKK2dNb2NrIGlzIGJ1bmRsZWQgd2l0aCBnb29nbGV0ZXN0LCBzbyB5b3UgZG9uJ3Qg
bmVlZCB0byBhZGQgYW55IGJ1aWxkIGRlcGVuZGVuY3kKK2luIG9yZGVyIHRvIHRha2UgYWR2YW50
YWdlIG9mIHRoaXMuIEp1c3QgaW5jbHVkZSBgInRlc3RpbmcvYmFzZS9wdWJsaWMvZ21vY2suaCJg
CithbmQgeW91J3JlIHJlYWR5IHRvIGdvLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2lu
ZG93cywgYW5kIE1hYy4KKworIyMjIE1vcmUgU3RyaW5nIEFzc2VydGlvbnMKKworKFBsZWFzZSBy
ZWFkIHRoZSBbcHJldmlvdXNdKCNBc3NlcnRUaGF0KSBzZWN0aW9uIGZpcnN0IGlmIHlvdSBoYXZl
bid0LikKKworWW91IGNhbiB1c2UgdGhlIGdNb2NrIFtzdHJpbmcgbWF0Y2hlcnNdKC4uLy4uL2dv
b2dsZW1vY2svZG9jcy9DaGVhdFNoZWV0Lm1kI3N0cmluZy1tYXRjaGVycykKK3dpdGggYEVYUEVD
VF9USEFUKClgIG9yIGBBU1NFUlRfVEhBVCgpYCB0byBkbyBtb3JlIHN0cmluZyBjb21wYXJpc29u
IHRyaWNrcworKHN1Yi1zdHJpbmcsIHByZWZpeCwgc3VmZml4LCByZWd1bGFyIGV4cHJlc3Npb24s
IGFuZCBldGMpLiBGb3IgZXhhbXBsZSwKKworYGBgYysrCit1c2luZyA6OnRlc3Rpbmc6Okhhc1N1
YnN0cjsKK3VzaW5nIDo6dGVzdGluZzo6TWF0Y2hlc1JlZ2V4OworLi4uCisgIEFTU0VSVF9USEFU
KGZvb19zdHJpbmcsIEhhc1N1YnN0cigibmVlZGxlIikpOworICBFWFBFQ1RfVEhBVChiYXJfc3Ry
aW5nLCBNYXRjaGVzUmVnZXgoIlxcdypcXGQrIikpOworYGBgCisKKyoqQXZhaWxhYmlsaXR5Kio6
IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKK0lmIHRoZSBzdHJpbmcgY29udGFpbnMgYSB3ZWxsLWZv
cm1lZCBIVE1MIG9yIFhNTCBkb2N1bWVudCwgeW91IGNhbiBjaGVjayB3aGV0aGVyCitpdHMgRE9N
IHRyZWUgbWF0Y2hlcyBhbiBbWFBhdGgKK2V4cHJlc3Npb25dKGh0dHA6Ly93d3cudzMub3JnL1RS
L3hwYXRoLyNjb250ZW50cyk6CisKK2BgYGMrKworLy8gQ3VycmVudGx5IHN0aWxsIGluIC8vdGVt
cGxhdGUvcHJvdG90ZW1wbGF0ZS90ZXN0aW5nOnhwYXRoX21hdGNoZXIKKyNpbmNsdWRlICJ0ZW1w
bGF0ZS9wcm90b3RlbXBsYXRlL3Rlc3RpbmcveHBhdGhfbWF0Y2hlci5oIgordXNpbmcgcHJvdG90
ZW1wbGF0ZTo6dGVzdGluZzo6TWF0Y2hlc1hQYXRoOworRVhQRUNUX1RIQVQoaHRtbF9zdHJpbmcs
IE1hdGNoZXNYUGF0aCgiLy9hW3RleHQoKT0nY2xpY2sgaGVyZSddIikpOworYGBgCisKKyoqQXZh
aWxhYmlsaXR5Kio6IExpbnV4LgorCisjIyMgV2luZG93cyBIUkVTVUxUIGFzc2VydGlvbnMKKwor
VGhlc2UgYXNzZXJ0aW9ucyB0ZXN0IGZvciBgSFJFU1VMVGAgc3VjY2VzcyBvciBmYWlsdXJlLgor
CitGYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2Vy
dGlvbiAgICAgICAgICAgICAgICAgICAgIHwgVmVyaWZpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gfCAtLS0tLS0tLQorYEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChleHByZXNzaW9uKWAgfCBg
RVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKGV4cHJlc3Npb24pYCB8IGBleHByZXNzaW9uYCBpcyBh
IHN1Y2Nlc3MgYEhSRVNVTFRgCitgQVNTRVJUX0hSRVNVTFRfRkFJTEVEKGV4cHJlc3Npb24pYCAg
ICB8IGBFWFBFQ1RfSFJFU1VMVF9GQUlMRUQoZXhwcmVzc2lvbilgICAgIHwgYGV4cHJlc3Npb25g
IGlzIGEgZmFpbHVyZSBgSFJFU1VMVGAKKworVGhlIGdlbmVyYXRlZCBvdXRwdXQgY29udGFpbnMg
dGhlIGh1bWFuLXJlYWRhYmxlIGVycm9yIG1lc3NhZ2UgYXNzb2NpYXRlZCB3aXRoCit0aGUgYEhS
RVNVTFRgIGNvZGUgcmV0dXJuZWQgYnkgYGV4cHJlc3Npb25gLgorCitZb3UgbWlnaHQgdXNlIHRo
ZW0gbGlrZSB0aGlzOgorCitgYGBjKysKK0NDb21QdHI8SVNoZWxsRGlzcGF0Y2gyPiBzaGVsbDsK
K0FTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChzaGVsbC5Db0NyZWF0ZUluc3RhbmNlKEwiU2hlbGwu
QXBwbGljYXRpb24iKSk7CitDQ29tVmFyaWFudCBlbXB0eTsKK0FTU0VSVF9IUkVTVUxUX1NVQ0NF
RURFRChzaGVsbC0+U2hlbGxFeGVjdXRlKENDb21CU1RSKHVybCksIGVtcHR5LCBlbXB0eSwgZW1w
dHksIGVtcHR5KSk7CitgYGAKKworKipBdmFpbGFiaWxpdHkqKjogV2luZG93cy4KKworIyMjIFR5
cGUgQXNzZXJ0aW9ucworCitZb3UgY2FuIGNhbGwgdGhlIGZ1bmN0aW9uCisKK2BgYGMrKworOjp0
ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8VDEsIFQyPigpOworYGBgCisKK3RvIGFzc2VydCB0
aGF0IHR5cGVzIGBUMWAgYW5kIGBUMmAgYXJlIHRoZSBzYW1lLiBUaGUgZnVuY3Rpb24gZG9lcyBu
b3RoaW5nIGlmCit0aGUgYXNzZXJ0aW9uIGlzIHNhdGlzZmllZC4gSWYgdGhlIHR5cGVzIGFyZSBk
aWZmZXJlbnQsIHRoZSBmdW5jdGlvbiBjYWxsIHdpbGwKK2ZhaWwgdG8gY29tcGlsZSwgYW5kIHRo
ZSBjb21waWxlciBlcnJvciBtZXNzYWdlIHdpbGwgbGlrZWx5IChkZXBlbmRpbmcgb24gdGhlCitj
b21waWxlcikgc2hvdyB5b3UgdGhlIGFjdHVhbCB2YWx1ZXMgb2YgYFQxYCBhbmQgYFQyYC4gVGhp
cyBpcyBtYWlubHkgdXNlZnVsCitpbnNpZGUgdGVtcGxhdGUgY29kZS4KKworKipDYXZlYXQqKjog
V2hlbiB1c2VkIGluc2lkZSBhIG1lbWJlciBmdW5jdGlvbiBvZiBhIGNsYXNzIHRlbXBsYXRlIG9y
IGEgZnVuY3Rpb24KK3RlbXBsYXRlLCBgU3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4oKWAgaXMg
ZWZmZWN0aXZlIG9ubHkgaWYgdGhlIGZ1bmN0aW9uIGlzCitpbnN0YW50aWF0ZWQuIEZvciBleGFt
cGxlLCBnaXZlbjoKKworYGBgYysrCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9vIHsK
KyBwdWJsaWM6CisgIHZvaWQgQmFyKCkgeyA6OnRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxp
bnQsIFQ+KCk7IH0KK307CitgYGAKKwordGhlIGNvZGU6CisKK2BgYGMrKwordm9pZCBUZXN0MSgp
IHsgRm9vPGJvb2w+IGZvbzsgfQorYGBgCisKK3dpbGwgbm90IGdlbmVyYXRlIGEgY29tcGlsZXIg
ZXJyb3IsIGFzIGBGb288Ym9vbD46OkJhcigpYCBpcyBuZXZlciBhY3R1YWxseQoraW5zdGFudGlh
dGVkLiBJbnN0ZWFkLCB5b3UgbmVlZDoKKworYGBgYysrCit2b2lkIFRlc3QyKCkgeyBGb288Ym9v
bD4gZm9vOyBmb28uQmFyKCk7IH0KK2BgYAorCit0byBjYXVzZSBhIGNvbXBpbGVyIGVycm9yLgor
CisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgQXNzZXJ0aW9u
IFBsYWNlbWVudAorCitZb3UgY2FuIHVzZSBhc3NlcnRpb25zIGluIGFueSBDKysgZnVuY3Rpb24u
IEluIHBhcnRpY3VsYXIsIGl0IGRvZXNuJ3QgaGF2ZSB0byBiZQorYSBtZXRob2Qgb2YgdGhlIHRl
c3QgZml4dHVyZSBjbGFzcy4gVGhlIG9uZSBjb25zdHJhaW50IGlzIHRoYXQgYXNzZXJ0aW9ucyB0
aGF0CitnZW5lcmF0ZSBhIGZhdGFsIGZhaWx1cmUgKGBGQUlMKmAgYW5kIGBBU1NFUlRfKmApIGNh
biBvbmx5IGJlIHVzZWQgaW4KK3ZvaWQtcmV0dXJuaW5nIGZ1bmN0aW9ucy4gVGhpcyBpcyBhIGNv
bnNlcXVlbmNlIG9mIEdvb2dsZSdzIG5vdCB1c2luZworZXhjZXB0aW9ucy4gQnkgcGxhY2luZyBp
dCBpbiBhIG5vbi12b2lkIGZ1bmN0aW9uIHlvdSdsbCBnZXQgYSBjb25mdXNpbmcgY29tcGlsZQor
ZXJyb3IgbGlrZSBgImVycm9yOiB2b2lkIHZhbHVlIG5vdCBpZ25vcmVkIGFzIGl0IG91Z2h0IHRv
IGJlImAgb3IgYCJjYW5ub3QKK2luaXRpYWxpemUgcmV0dXJuIG9iamVjdCBvZiB0eXBlICdib29s
JyB3aXRoIGFuIHJ2YWx1ZSBvZiB0eXBlICd2b2lkJyJgIG9yCitgImVycm9yOiBubyB2aWFibGUg
Y29udmVyc2lvbiBmcm9tICd2b2lkJyB0byAnc3RyaW5nJyJgLgorCitJZiB5b3UgbmVlZCB0byB1
c2UgZmF0YWwgYXNzZXJ0aW9ucyBpbiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBub24tdm9pZCwg
b25lCitvcHRpb24gaXMgdG8gbWFrZSB0aGUgZnVuY3Rpb24gcmV0dXJuIHRoZSB2YWx1ZSBpbiBh
biBvdXQgcGFyYW1ldGVyIGluc3RlYWQuIEZvcgorZXhhbXBsZSwgeW91IGNhbiByZXdyaXRlIGBU
MiBGb28oVDEgeClgIHRvIGB2b2lkIEZvbyhUMSB4LCBUMiogcmVzdWx0KWAuIFlvdQorbmVlZCB0
byBtYWtlIHN1cmUgdGhhdCBgKnJlc3VsdGAgY29udGFpbnMgc29tZSBzZW5zaWJsZSB2YWx1ZSBl
dmVuIHdoZW4gdGhlCitmdW5jdGlvbiByZXR1cm5zIHByZW1hdHVyZWx5LiBBcyB0aGUgZnVuY3Rp
b24gbm93IHJldHVybnMgYHZvaWRgLCB5b3UgY2FuIHVzZQorYW55IGFzc2VydGlvbiBpbnNpZGUg
b2YgaXQuCisKK0lmIGNoYW5naW5nIHRoZSBmdW5jdGlvbidzIHR5cGUgaXMgbm90IGFuIG9wdGlv
biwgeW91IHNob3VsZCBqdXN0IHVzZSBhc3NlcnRpb25zCit0aGF0IGdlbmVyYXRlIG5vbi1mYXRh
bCBmYWlsdXJlcywgc3VjaCBhcyBgQUREX0ZBSUxVUkUqYCBhbmQgYEVYUEVDVF8qYC4KKworTk9U
RTogQ29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycyBhcmUgbm90IGNvbnNpZGVyZWQgdm9pZC1y
ZXR1cm5pbmcgZnVuY3Rpb25zLAorYWNjb3JkaW5nIHRvIHRoZSBDKysgbGFuZ3VhZ2Ugc3BlY2lm
aWNhdGlvbiwgYW5kIHNvIHlvdSBtYXkgbm90IHVzZSBmYXRhbAorYXNzZXJ0aW9ucyBpbiB0aGVt
LiBZb3UnbGwgZ2V0IGEgY29tcGlsYXRpb24gZXJyb3IgaWYgeW91IHRyeS4gQSBzaW1wbGUKK3dv
cmthcm91bmQgaXMgdG8gdHJhbnNmZXIgdGhlIGVudGlyZSBib2R5IG9mIHRoZSBjb25zdHJ1Y3Rv
ciBvciBkZXN0cnVjdG9yIHRvIGEKK3ByaXZhdGUgdm9pZC1yZXR1cm5pbmcgbWV0aG9kLiBIb3dl
dmVyLCB5b3Ugc2hvdWxkIGJlIGF3YXJlIHRoYXQgYSBmYXRhbAorYXNzZXJ0aW9uIGZhaWx1cmUg
aW4gYSBjb25zdHJ1Y3RvciBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlIGN1cnJlbnQgdGVzdCwgYXMg
eW91cgoraW50dWl0aW9uIG1pZ2h0IHN1Z2dlc3Q7IGl0IG1lcmVseSByZXR1cm5zIGZyb20gdGhl
IGNvbnN0cnVjdG9yIGVhcmx5LCBwb3NzaWJseQorbGVhdmluZyB5b3VyIG9iamVjdCBpbiBhIHBh
cnRpYWxseS1jb25zdHJ1Y3RlZCBzdGF0ZS4gTGlrZXdpc2UsIGEgZmF0YWwKK2Fzc2VydGlvbiBm
YWlsdXJlIGluIGEgZGVzdHJ1Y3RvciBtYXkgbGVhdmUgeW91ciBvYmplY3QgaW4gYQorcGFydGlh
bGx5LWRlc3RydWN0ZWQgc3RhdGUuIFVzZSBhc3NlcnRpb25zIGNhcmVmdWxseSBpbiB0aGVzZSBz
aXR1YXRpb25zIQorCisjIyBUZWFjaGluZyBnb29nbGV0ZXN0IEhvdyB0byBQcmludCBZb3VyIFZh
bHVlcworCitXaGVuIGEgdGVzdCBhc3NlcnRpb24gc3VjaCBhcyBgRVhQRUNUX0VRYCBmYWlscywg
Z29vZ2xldGVzdCBwcmludHMgdGhlIGFyZ3VtZW50Cit2YWx1ZXMgdG8gaGVscCB5b3UgZGVidWcu
IEl0IGRvZXMgdGhpcyB1c2luZyBhIHVzZXItZXh0ZW5zaWJsZSB2YWx1ZSBwcmludGVyLgorCitU
aGlzIHByaW50ZXIga25vd3MgaG93IHRvIHByaW50IGJ1aWx0LWluIEMrKyB0eXBlcywgbmF0aXZl
IGFycmF5cywgU1RMCitjb250YWluZXJzLCBhbmQgYW55IHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUg
YDw8YCBvcGVyYXRvci4gRm9yIG90aGVyIHR5cGVzLCBpdAorcHJpbnRzIHRoZSByYXcgYnl0ZXMg
aW4gdGhlIHZhbHVlIGFuZCBob3BlcyB0aGF0IHlvdSB0aGUgdXNlciBjYW4gZmlndXJlIGl0IG91
dC4KKworQXMgbWVudGlvbmVkIGVhcmxpZXIsIHRoZSBwcmludGVyIGlzICpleHRlbnNpYmxlKi4g
VGhhdCBtZWFucyB5b3UgY2FuIHRlYWNoIGl0Cit0byBkbyBhIGJldHRlciBqb2IgYXQgcHJpbnRp
bmcgeW91ciBwYXJ0aWN1bGFyIHR5cGUgdGhhbiB0byBkdW1wIHRoZSBieXRlcy4gVG8KK2RvIHRo
YXQsIGRlZmluZSBgPDxgIGZvciB5b3VyIHR5cGU6CisKK2BgYGMrKworLy8gU3RyZWFtcyBhcmUg
YWxsb3dlZCBvbmx5IGZvciBsb2dnaW5nLiAgRG9uJ3QgaW5jbHVkZSB0aGlzIGZvcgorLy8gYW55
IG90aGVyIHB1cnBvc2UuCisjaW5jbHVkZSA8b3N0cmVhbT4KKworbmFtZXNwYWNlIGZvbyB7CisK
K2NsYXNzIEJhciB7ICAvLyBXZSB3YW50IGdvb2dsZXRlc3QgdG8gYmUgYWJsZSB0byBwcmludCBp
bnN0YW5jZXMgb2YgdGhpcy4KKy4uLgorICAvLyBDcmVhdGUgYSBmcmVlIGlubGluZSBmcmllbmQg
ZnVuY3Rpb24uCisgIGZyaWVuZCBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFt
JiBvcywgY29uc3QgQmFyJiBiYXIpIHsKKyAgICByZXR1cm4gb3MgPDwgYmFyLkRlYnVnU3RyaW5n
KCk7ICAvLyB3aGF0ZXZlciBuZWVkZWQgdG8gcHJpbnQgYmFyIHRvIG9zCisgIH0KK307CisKKy8v
IElmIHlvdSBjYW4ndCBkZWNsYXJlIHRoZSBmdW5jdGlvbiBpbiB0aGUgY2xhc3MgaXQncyBpbXBv
cnRhbnQgdGhhdCB0aGUKKy8vIDw8IG9wZXJhdG9yIGlzIGRlZmluZWQgaW4gdGhlIFNBTUUgbmFt
ZXNwYWNlIHRoYXQgZGVmaW5lcyBCYXIuICBDKysncyBsb29rLXVwCisvLyBydWxlcyByZWx5IG9u
IHRoYXQuCitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3Qg
QmFyJiBiYXIpIHsKKyAgcmV0dXJuIG9zIDw8IGJhci5EZWJ1Z1N0cmluZygpOyAgLy8gd2hhdGV2
ZXIgbmVlZGVkIHRvIHByaW50IGJhciB0byBvcworfQorCit9ICAvLyBuYW1lc3BhY2UgZm9vCitg
YGAKKworU29tZXRpbWVzLCB0aGlzIG1pZ2h0IG5vdCBiZSBhbiBvcHRpb246IHlvdXIgdGVhbSBt
YXkgY29uc2lkZXIgaXQgYmFkIHN0eWxlIHRvCitoYXZlIGEgYDw8YCBvcGVyYXRvciBmb3IgYEJh
cmAsIG9yIGBCYXJgIG1heSBhbHJlYWR5IGhhdmUgYSBgPDxgIG9wZXJhdG9yIHRoYXQKK2RvZXNu
J3QgZG8gd2hhdCB5b3Ugd2FudCAoYW5kIHlvdSBjYW5ub3QgY2hhbmdlIGl0KS4gSWYgc28sIHlv
dSBjYW4gaW5zdGVhZAorZGVmaW5lIGEgYFByaW50VG8oKWAgZnVuY3Rpb24gbGlrZSB0aGlzOgor
CitgYGBjKysKKy8vIFN0cmVhbXMgYXJlIGFsbG93ZWQgb25seSBmb3IgbG9nZ2luZy4gIERvbid0
IGluY2x1ZGUgdGhpcyBmb3IKKy8vIGFueSBvdGhlciBwdXJwb3NlLgorI2luY2x1ZGUgPG9zdHJl
YW0+CisKK25hbWVzcGFjZSBmb28geworCitjbGFzcyBCYXIgeworICAuLi4KKyAgZnJpZW5kIHZv
aWQgUHJpbnRUbyhjb25zdCBCYXImIGJhciwgc3RkOjpvc3RyZWFtKiBvcykgeworICAgICpvcyA8
PCBiYXIuRGVidWdTdHJpbmcoKTsgIC8vIHdoYXRldmVyIG5lZWRlZCB0byBwcmludCBiYXIgdG8g
b3MKKyAgfQorfTsKKworLy8gSWYgeW91IGNhbid0IGRlY2xhcmUgdGhlIGZ1bmN0aW9uIGluIHRo
ZSBjbGFzcyBpdCdzIGltcG9ydGFudCB0aGF0IFByaW50VG8oKQorLy8gaXMgZGVmaW5lZCBpbiB0
aGUgU0FNRSBuYW1lc3BhY2UgdGhhdCBkZWZpbmVzIEJhci4gIEMrKydzIGxvb2stdXAgcnVsZXMg
cmVseQorLy8gb24gdGhhdC4KK3ZvaWQgUHJpbnRUbyhjb25zdCBCYXImIGJhciwgc3RkOjpvc3Ry
ZWFtKiBvcykgeworICAqb3MgPDwgYmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3aGF0ZXZlciBuZWVk
ZWQgdG8gcHJpbnQgYmFyIHRvIG9zCit9CisKK30gIC8vIG5hbWVzcGFjZSBmb28KK2BgYAorCitJ
ZiB5b3UgaGF2ZSBkZWZpbmVkIGJvdGggYDw8YCBhbmQgYFByaW50VG8oKWAsIHRoZSBsYXR0ZXIg
d2lsbCBiZSB1c2VkIHdoZW4KK2dvb2dsZXRlc3QgaXMgY29uY2VybmVkLiBUaGlzIGFsbG93cyB5
b3UgdG8gY3VzdG9taXplIGhvdyB0aGUgdmFsdWUgYXBwZWFycyBpbgorZ29vZ2xldGVzdCdzIG91
dHB1dCB3aXRob3V0IGFmZmVjdGluZyBjb2RlIHRoYXQgcmVsaWVzIG9uIHRoZSBiZWhhdmlvciBv
ZiBpdHMKK2A8PGAgb3BlcmF0b3IuCisKK0lmIHlvdSB3YW50IHRvIHByaW50IGEgdmFsdWUgYHhg
IHVzaW5nIGdvb2dsZXRlc3QncyB2YWx1ZSBwcmludGVyIHlvdXJzZWxmLCBqdXN0CitjYWxsIGA6
OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoeClgLCB3aGljaCByZXR1cm5zIGFuIGBzdGQ6OnN0cmlu
Z2A6CisKK2BgYGMrKwordmVjdG9yPHBhaXI8QmFyLCBpbnQ+ID4gYmFyX2ludHMgPSBHZXRCYXJJ
bnRWZWN0b3IoKTsKKworRVhQRUNUX1RSVUUoSXNDb3JyZWN0QmFySW50VmVjdG9yKGJhcl9pbnRz
KSkKKyAgICA8PCAiYmFyX2ludHMgPSAiIDw8IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhiYXJf
aW50cyk7CitgYGAKKworIyMgRGVhdGggVGVzdHMKKworSW4gbWFueSBhcHBsaWNhdGlvbnMsIHRo
ZXJlIGFyZSBhc3NlcnRpb25zIHRoYXQgY2FuIGNhdXNlIGFwcGxpY2F0aW9uIGZhaWx1cmUgaWYK
K2EgY29uZGl0aW9uIGlzIG5vdCBtZXQuIFRoZXNlIHNhbml0eSBjaGVja3MsIHdoaWNoIGVuc3Vy
ZSB0aGF0IHRoZSBwcm9ncmFtIGlzIGluCithIGtub3duIGdvb2Qgc3RhdGUsIGFyZSB0aGVyZSB0
byBmYWlsIGF0IHRoZSBlYXJsaWVzdCBwb3NzaWJsZSB0aW1lIGFmdGVyIHNvbWUKK3Byb2dyYW0g
c3RhdGUgaXMgY29ycnVwdGVkLiBJZiB0aGUgYXNzZXJ0aW9uIGNoZWNrcyB0aGUgd3JvbmcgY29u
ZGl0aW9uLCB0aGVuCit0aGUgcHJvZ3JhbSBtYXkgcHJvY2VlZCBpbiBhbiBlcnJvbmVvdXMgc3Rh
dGUsIHdoaWNoIGNvdWxkIGxlYWQgdG8gbWVtb3J5Citjb3JydXB0aW9uLCBzZWN1cml0eSBob2xl
cywgb3Igd29yc2UuIEhlbmNlIGl0IGlzIHZpdGFsbHkgaW1wb3J0YW50IHRvIHRlc3QgdGhhdAor
c3VjaCBhc3NlcnRpb24gc3RhdGVtZW50cyB3b3JrIGFzIGV4cGVjdGVkLgorCitTaW5jZSB0aGVz
ZSBwcmVjb25kaXRpb24gY2hlY2tzIGNhdXNlIHRoZSBwcm9jZXNzZXMgdG8gZGllLCB3ZSBjYWxs
IHN1Y2ggdGVzdHMKK19kZWF0aCB0ZXN0c18uIE1vcmUgZ2VuZXJhbGx5LCBhbnkgdGVzdCB0aGF0
IGNoZWNrcyB0aGF0IGEgcHJvZ3JhbSB0ZXJtaW5hdGVzCisoZXhjZXB0IGJ5IHRocm93aW5nIGFu
IGV4Y2VwdGlvbikgaW4gYW4gZXhwZWN0ZWQgZmFzaGlvbiBpcyBhbHNvIGEgZGVhdGggdGVzdC4K
KworCitOb3RlIHRoYXQgaWYgYSBwaWVjZSBvZiBjb2RlIHRocm93cyBhbiBleGNlcHRpb24sIHdl
IGRvbid0IGNvbnNpZGVyIGl0ICJkZWF0aCIKK2ZvciB0aGUgcHVycG9zZSBvZiBkZWF0aCB0ZXN0
cywgYXMgdGhlIGNhbGxlciBvZiB0aGUgY29kZSBjb3VsZCBjYXRjaCB0aGUKK2V4Y2VwdGlvbiBh
bmQgYXZvaWQgdGhlIGNyYXNoLiBJZiB5b3Ugd2FudCB0byB2ZXJpZnkgZXhjZXB0aW9ucyB0aHJv
d24gYnkgeW91cgorY29kZSwgc2VlIFtFeGNlcHRpb24gQXNzZXJ0aW9uc10oI2V4Y2VwdGlvbi1h
c3NlcnRpb25zKS4KKworSWYgeW91IHdhbnQgdG8gdGVzdCBgRVhQRUNUXyooKS9BU1NFUlRfKigp
YCBmYWlsdXJlcyBpbiB5b3VyIHRlc3QgY29kZSwgc2VlCitDYXRjaGluZyBGYWlsdXJlcworCisj
IyMgSG93IHRvIFdyaXRlIGEgRGVhdGggVGVzdAorCitnb29nbGV0ZXN0IGhhcyB0aGUgZm9sbG93
aW5nIG1hY3JvcyB0byBzdXBwb3J0IGRlYXRoIHRlc3RzOgorCitGYXRhbCBhc3NlcnRpb24gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IFZlcmlmaWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tCitgQVNTRVJUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgp
O2AgICAgICAgICAgICAgIHwgYEVYUEVDVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KTtgICAgICAg
ICAgICAgICB8IGBzdGF0ZW1lbnRgIGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3IKK2BBU1NF
UlRfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpO2AgfCBgRVhQRUNUX0RFQVRI
X0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KTtgIHwgaWYgZGVhdGggdGVzdHMgYXJlIHN1
cHBvcnRlZCwgdmVyaWZpZXMgdGhhdCBgc3RhdGVtZW50YCBjcmFzaGVzIHdpdGggdGhlIGdpdmVu
IGVycm9yOyBvdGhlcndpc2UgdmVyaWZpZXMgbm90aGluZworYEFTU0VSVF9FWElUKHN0YXRlbWVu
dCwgcHJlZGljYXRlLCByZWdleCk7YCAgICB8IGBFWFBFQ1RfRVhJVChzdGF0ZW1lbnQsIHByZWRp
Y2F0ZSwgcmVnZXgpO2AgICAgfCBgc3RhdGVtZW50YCBleGl0cyB3aXRoIHRoZSBnaXZlbiBlcnJv
ciwgYW5kIGl0cyBleGl0IGNvZGUgbWF0Y2hlcyBgcHJlZGljYXRlYAorCit3aGVyZSBgc3RhdGVt
ZW50YCBpcyBhIHN0YXRlbWVudCB0aGF0IGlzIGV4cGVjdGVkIHRvIGNhdXNlIHRoZSBwcm9jZXNz
IHRvIGRpZSwKK2BwcmVkaWNhdGVgIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3Rpb24gb2JqZWN0IHRo
YXQgZXZhbHVhdGVzIGFuIGludGVnZXIgZXhpdAorc3RhdHVzLCBhbmQgYHJlZ2V4YCBpcyBhIChQ
ZXJsKSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCB0aGUgc3RkZXJyIG91dHB1dCBvZgorYHN0YXRl
bWVudGAgaXMgZXhwZWN0ZWQgdG8gbWF0Y2guIE5vdGUgdGhhdCBgc3RhdGVtZW50YCBjYW4gYmUg
KmFueSB2YWxpZAorc3RhdGVtZW50KiAoaW5jbHVkaW5nICpjb21wb3VuZCBzdGF0ZW1lbnQqKSBh
bmQgZG9lc24ndCBoYXZlIHRvIGJlIGFuCitleHByZXNzaW9uLgorCisKK0FzIHVzdWFsLCB0aGUg
YEFTU0VSVGAgdmFyaWFudHMgYWJvcnQgdGhlIGN1cnJlbnQgdGVzdCBmdW5jdGlvbiwgd2hpbGUg
dGhlCitgRVhQRUNUYCB2YXJpYW50cyBkbyBub3QuCisKKz4gTk9URTogV2UgdXNlIHRoZSB3b3Jk
ICJjcmFzaCIgaGVyZSB0byBtZWFuIHRoYXQgdGhlIHByb2Nlc3MgdGVybWluYXRlcyB3aXRoIGEK
Kz4gKm5vbi16ZXJvKiBleGl0IHN0YXR1cyBjb2RlLiBUaGVyZSBhcmUgdHdvIHBvc3NpYmlsaXRp
ZXM6IGVpdGhlciB0aGUgcHJvY2VzcworPiBoYXMgY2FsbGVkIGBleGl0KClgIG9yIGBfZXhpdCgp
YCB3aXRoIGEgbm9uLXplcm8gdmFsdWUsIG9yIGl0IG1heSBiZSBraWxsZWQgYnkKKz4gYSBzaWdu
YWwuCis+Cis+IFRoaXMgbWVhbnMgdGhhdCBpZiBgKnN0YXRlbWVudCpgIHRlcm1pbmF0ZXMgdGhl
IHByb2Nlc3Mgd2l0aCBhIDAgZXhpdCBjb2RlLCBpdAorPiBpcyAqbm90KiBjb25zaWRlcmVkIGEg
Y3Jhc2ggYnkgYEVYUEVDVF9ERUFUSGAuIFVzZSBgRVhQRUNUX0VYSVRgIGluc3RlYWQgaWYKKz4g
dGhpcyBpcyB0aGUgY2FzZSwgb3IgaWYgeW91IHdhbnQgdG8gcmVzdHJpY3QgdGhlIGV4aXQgY29k
ZSBtb3JlIHByZWNpc2VseS4KKworQSBwcmVkaWNhdGUgaGVyZSBtdXN0IGFjY2VwdCBhbiBgaW50
YCBhbmQgcmV0dXJuIGEgYGJvb2xgLiBUaGUgZGVhdGggdGVzdAorc3VjY2VlZHMgb25seSBpZiB0
aGUgcHJlZGljYXRlIHJldHVybnMgYHRydWVgLiBnb29nbGV0ZXN0IGRlZmluZXMgYSBmZXcKK3By
ZWRpY2F0ZXMgdGhhdCBoYW5kbGUgdGhlIG1vc3QgY29tbW9uIGNhc2VzOgorCitgYGBjKysKKzo6
dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoZXhpdF9jb2RlKQorYGBgCisKK1RoaXMgZXhwcmVzc2lv
biBpcyBgdHJ1ZWAgaWYgdGhlIHByb2dyYW0gZXhpdGVkIG5vcm1hbGx5IHdpdGggdGhlIGdpdmVu
IGV4aXQKK2NvZGUuCisKK2BgYGMrKworOjp0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChzaWduYWxf
bnVtYmVyKSAgLy8gTm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgorYGBgCisKK1RoaXMgZXhwcmVz
c2lvbiBpcyBgdHJ1ZWAgaWYgdGhlIHByb2dyYW0gd2FzIGtpbGxlZCBieSB0aGUgZ2l2ZW4gc2ln
bmFsLgorCitUaGUgYCpfREVBVEhgIG1hY3JvcyBhcmUgY29udmVuaWVudCB3cmFwcGVycyBmb3Ig
YCpfRVhJVGAgdGhhdCB1c2UgYSBwcmVkaWNhdGUKK3RoYXQgdmVyaWZpZXMgdGhlIHByb2Nlc3Mn
IGV4aXQgY29kZSBpcyBub24temVyby4KKworTm90ZSB0aGF0IGEgZGVhdGggdGVzdCBvbmx5IGNh
cmVzIGFib3V0IHRocmVlIHRoaW5nczoKKworMS4gIGRvZXMgYHN0YXRlbWVudGAgYWJvcnQgb3Ig
ZXhpdCB0aGUgcHJvY2Vzcz8KKzIuICAoaW4gdGhlIGNhc2Ugb2YgYEFTU0VSVF9FWElUYCBhbmQg
YEVYUEVDVF9FWElUYCkgZG9lcyB0aGUgZXhpdCBzdGF0dXMKKyAgICBzYXRpc2Z5IGBwcmVkaWNh
dGVgPyBPciAoaW4gdGhlIGNhc2Ugb2YgYEFTU0VSVF9ERUFUSGAgYW5kIGBFWFBFQ1RfREVBVEhg
KQorICAgIGlzIHRoZSBleGl0IHN0YXR1cyBub24temVybz8gQW5kCiszLiAgZG9lcyB0aGUgc3Rk
ZXJyIG91dHB1dCBtYXRjaCBgcmVnZXhgPworCitJbiBwYXJ0aWN1bGFyLCBpZiBgc3RhdGVtZW50
YCBnZW5lcmF0ZXMgYW4gYEFTU0VSVF8qYCBvciBgRVhQRUNUXypgIGZhaWx1cmUsIGl0Cit3aWxs
ICoqbm90KiogY2F1c2UgdGhlIGRlYXRoIHRlc3QgdG8gZmFpbCwgYXMgZ29vZ2xldGVzdCBhc3Nl
cnRpb25zIGRvbid0IGFib3J0Cit0aGUgcHJvY2Vzcy4KKworVG8gd3JpdGUgYSBkZWF0aCB0ZXN0
LCBzaW1wbHkgdXNlIG9uZSBvZiB0aGUgYWJvdmUgbWFjcm9zIGluc2lkZSB5b3VyIHRlc3QKK2Z1
bmN0aW9uLiBGb3IgZXhhbXBsZSwKKworYGBgYysrCitURVNUKE15RGVhdGhUZXN0LCBGb28pIHsK
KyAgLy8gVGhpcyBkZWF0aCB0ZXN0IHVzZXMgYSBjb21wb3VuZCBzdGF0ZW1lbnQuCisgIEFTU0VS
VF9ERUFUSCh7CisgICAgaW50IG4gPSA1OworICAgIEZvbygmbik7CisgIH0sICJFcnJvciBvbiBs
aW5lIC4qIG9mIEZvbygpIik7Cit9CisKK1RFU1QoTXlEZWF0aFRlc3QsIE5vcm1hbEV4aXQpIHsK
KyAgRVhQRUNUX0VYSVQoTm9ybWFsRXhpdCgpLCA6OnRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDAp
LCAiU3VjY2VzcyIpOworfQorCitURVNUKE15RGVhdGhUZXN0LCBLaWxsTXlzZWxmKSB7CisgIEVY
UEVDVF9FWElUKEtpbGxNeXNlbGYoKSwgOjp0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChTSUdLSUxM
KSwKKyAgICAgICAgICAgICAgIlNlbmRpbmcgbXlzZWxmIHVuYmxvY2thYmxlIHNpZ25hbCIpOwor
fQorYGBgCisKK3ZlcmlmaWVzIHRoYXQ6CisKKyogICBjYWxsaW5nIGBGb28oNSlgIGNhdXNlcyB0
aGUgcHJvY2VzcyB0byBkaWUgd2l0aCB0aGUgZ2l2ZW4gZXJyb3IgbWVzc2FnZSwKKyogICBjYWxs
aW5nIGBOb3JtYWxFeGl0KClgIGNhdXNlcyB0aGUgcHJvY2VzcyB0byBwcmludCBgIlN1Y2Nlc3Mi
YCB0byBzdGRlcnIgYW5kCisgICAgZXhpdCB3aXRoIGV4aXQgY29kZSAwLCBhbmQKKyogICBjYWxs
aW5nIGBLaWxsTXlzZWxmKClgIGtpbGxzIHRoZSBwcm9jZXNzIHdpdGggc2lnbmFsIGBTSUdLSUxM
YC4KKworVGhlIHRlc3QgZnVuY3Rpb24gYm9keSBtYXkgY29udGFpbiBvdGhlciBhc3NlcnRpb25z
IGFuZCBzdGF0ZW1lbnRzIGFzIHdlbGwsIGlmCituZWNlc3NhcnkuCisKKyMjIyBEZWF0aCBUZXN0
IE5hbWluZworCitJTVBPUlRBTlQ6IFdlIHN0cm9uZ2x5IHJlY29tbWVuZCB5b3UgdG8gZm9sbG93
IHRoZSBjb252ZW50aW9uIG9mIG5hbWluZyB5b3VyCisqKnRlc3QgY2FzZSoqIChub3QgdGVzdCkg
YCpEZWF0aFRlc3RgIHdoZW4gaXQgY29udGFpbnMgYSBkZWF0aCB0ZXN0LCBhcworZGVtb25zdHJh
dGVkIGluIHRoZSBhYm92ZSBleGFtcGxlLiBUaGUgW0RlYXRoIFRlc3RzIEFuZAorVGhyZWFkc10o
I2RlYXRoLXRlc3RzLWFuZC10aHJlYWRzKSBzZWN0aW9uIGJlbG93IGV4cGxhaW5zIHdoeS4KKwor
SWYgYSB0ZXN0IGZpeHR1cmUgY2xhc3MgaXMgc2hhcmVkIGJ5IG5vcm1hbCB0ZXN0cyBhbmQgZGVh
dGggdGVzdHMsIHlvdSBjYW4gdXNlCitgdXNpbmdgIG9yIGB0eXBlZGVmYCB0byBpbnRyb2R1Y2Ug
YW4gYWxpYXMgZm9yIHRoZSBmaXh0dXJlIGNsYXNzIGFuZCBhdm9pZAorZHVwbGljYXRpbmcgaXRz
IGNvZGU6CisKK2BgYGMrKworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qg
eyAuLi4gfTsKKwordXNpbmcgRm9vRGVhdGhUZXN0ID0gRm9vVGVzdDsKKworVEVTVF9GKEZvb1Rl
c3QsIERvZXNUaGlzKSB7CisgIC8vIG5vcm1hbCB0ZXN0Cit9CisKK1RFU1RfRihGb29EZWF0aFRl
c3QsIERvZXNUaGF0KSB7CisgIC8vIGRlYXRoIHRlc3QKK30KK2BgYAorCisqKkF2YWlsYWJpbGl0
eSoqOiBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBDeWd3aW4s
IGFuZCBNYWMKKworIyMjIFJlZ3VsYXIgRXhwcmVzc2lvbiBTeW50YXgKKworCitPbiBQT1NJWCBz
eXN0ZW1zIChlLmcuIExpbnV4LCBDeWd3aW4sIGFuZCBNYWMpLCBnb29nbGV0ZXN0IHVzZXMgdGhl
CitbUE9TSVggZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9uXShodHRwOi8vd3d3Lm9wZW5ncm91
cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvYmFzZWRlZnMveGJkX2NoYXAwOS5odG1sI3RhZ18w
OV8wNCkKK3N5bnRheC4gVG8gbGVhcm4gYWJvdXQgdGhpcyBzeW50YXgsIHlvdSBtYXkgd2FudCB0
byByZWFkIHRoaXMKK1tXaWtpcGVkaWEgZW50cnldKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dp
a2kvUmVndWxhcl9leHByZXNzaW9uI1BPU0lYX0V4dGVuZGVkX1JlZ3VsYXJfRXhwcmVzc2lvbnMp
LgorCitPbiBXaW5kb3dzLCBnb29nbGV0ZXN0IHVzZXMgaXRzIG93biBzaW1wbGUgcmVndWxhciBl
eHByZXNzaW9uIGltcGxlbWVudGF0aW9uLiBJdAorbGFja3MgbWFueSBmZWF0dXJlcy4gRm9yIGV4
YW1wbGUsIHdlIGRvbid0IHN1cHBvcnQgdW5pb24gKGAieHx5ImApLCBncm91cGluZworKGAiKHh5
KSJgKSwgYnJhY2tldHMgKGAiW3h5XSJgKSwgYW5kIHJlcGV0aXRpb24gY291bnQgKGAieHs1LDd9
ImApLCBhbW9uZworb3RoZXJzLiBCZWxvdyBpcyB3aGF0IHdlIGRvIHN1cHBvcnQgKGBBYCBkZW5v
dGVzIGEgbGl0ZXJhbCBjaGFyYWN0ZXIsIHBlcmlvZAorKGAuYCksIG9yIGEgc2luZ2xlIGBcXCBg
IGVzY2FwZSBzZXF1ZW5jZTsgYHhgIGFuZCBgeWAgZGVub3RlIHJlZ3VsYXIKK2V4cHJlc3Npb25z
Lik6CisKK0V4cHJlc3Npb24gfCBNZWFuaW5nCistLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2BjYCAgICAg
ICAgfCBtYXRjaGVzIGFueSBsaXRlcmFsIGNoYXJhY3RlciBgY2AKK2BcXGRgICAgICAgfCBtYXRj
aGVzIGFueSBkZWNpbWFsIGRpZ2l0CitgXFxEYCAgICAgIHwgbWF0Y2hlcyBhbnkgY2hhcmFjdGVy
IHRoYXQncyBub3QgYSBkZWNpbWFsIGRpZ2l0CitgXFxmYCAgICAgIHwgbWF0Y2hlcyBgXGZgCitg
XFxuYCAgICAgIHwgbWF0Y2hlcyBgXG5gCitgXFxyYCAgICAgIHwgbWF0Y2hlcyBgXHJgCitgXFxz
YCAgICAgIHwgbWF0Y2hlcyBhbnkgQVNDSUkgd2hpdGVzcGFjZSwgaW5jbHVkaW5nIGBcbmAKK2Bc
XFNgICAgICAgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBhIHdoaXRlc3BhY2UK
K2BcXHRgICAgICAgfCBtYXRjaGVzIGBcdGAKK2BcXHZgICAgICAgfCBtYXRjaGVzIGBcdmAKK2Bc
XHdgICAgICAgfCBtYXRjaGVzIGFueSBsZXR0ZXIsIGBfYCwgb3IgZGVjaW1hbCBkaWdpdAorYFxc
V2AgICAgICB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0IGBcXHdgIGRvZXNuJ3QgbWF0Y2gK
K2BcXGNgICAgICAgfCBtYXRjaGVzIGFueSBsaXRlcmFsIGNoYXJhY3RlciBgY2AsIHdoaWNoIG11
c3QgYmUgYSBwdW5jdHVhdGlvbgorYC5gICAgICAgICB8IG1hdGNoZXMgYW55IHNpbmdsZSBjaGFy
YWN0ZXIgZXhjZXB0IGBcbmAKK2BBP2AgICAgICAgfCBtYXRjaGVzIDAgb3IgMSBvY2N1cnJlbmNl
cyBvZiBgQWAKK2BBKmAgICAgICAgfCBtYXRjaGVzIDAgb3IgbWFueSBvY2N1cnJlbmNlcyBvZiBg
QWAKK2BBK2AgICAgICAgfCBtYXRjaGVzIDEgb3IgbWFueSBvY2N1cnJlbmNlcyBvZiBgQWAKK2Be
YCAgICAgICAgfCBtYXRjaGVzIHRoZSBiZWdpbm5pbmcgb2YgYSBzdHJpbmcgKG5vdCB0aGF0IG9m
IGVhY2ggbGluZSkKK2AkYCAgICAgICAgfCBtYXRjaGVzIHRoZSBlbmQgb2YgYSBzdHJpbmcgKG5v
dCB0aGF0IG9mIGVhY2ggbGluZSkKK2B4eWAgICAgICAgfCBtYXRjaGVzIGB4YCBmb2xsb3dlZCBi
eSBgeWAKKworVG8gaGVscCB5b3UgZGV0ZXJtaW5lIHdoaWNoIGNhcGFiaWxpdHkgaXMgYXZhaWxh
YmxlIG9uIHlvdXIgc3lzdGVtLCBnb29nbGV0ZXN0CitkZWZpbmVzIG1hY3JvcyB0byBnb3Zlcm4g
d2hpY2ggcmVndWxhciBleHByZXNzaW9uIGl0IGlzIHVzaW5nLiBUaGUgbWFjcm9zIGFyZToKKzwh
LS1hYnNsOmdvb2dsZTMtYmVnaW4oZ29vZ2xlMy1vbmx5KS0tPmBHVEVTVF9VU0VTX1BDUkU9MWAs
IG9yCis8IS0tYWJzbDpnb29nbGUzLWVuZC0tPiBgR1RFU1RfVVNFU19TSU1QTEVfUkU9MWAgb3Ig
YEdURVNUX1VTRVNfUE9TSVhfUkU9MWAuIElmCit5b3Ugd2FudCB5b3VyIGRlYXRoIHRlc3RzIHRv
IHdvcmsgaW4gYWxsIGNhc2VzLCB5b3UgY2FuIGVpdGhlciBgI2lmYCBvbiB0aGVzZQorbWFjcm9z
IG9yIHVzZSB0aGUgbW9yZSBsaW1pdGVkIHN5bnRheCBvbmx5LgorCisjIyMgSG93IEl0IFdvcmtz
CisKK1VuZGVyIHRoZSBob29kLCBgQVNTRVJUX0VYSVQoKWAgc3Bhd25zIGEgbmV3IHByb2Nlc3Mg
YW5kIGV4ZWN1dGVzIHRoZSBkZWF0aCB0ZXN0CitzdGF0ZW1lbnQgaW4gdGhhdCBwcm9jZXNzLiBU
aGUgZGV0YWlscyBvZiBob3cgcHJlY2lzZWx5IHRoYXQgaGFwcGVucyBkZXBlbmQgb24KK3RoZSBw
bGF0Zm9ybSBhbmQgdGhlIHZhcmlhYmxlIDo6dGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0
X3N0eWxlKSAod2hpY2ggaXMKK2luaXRpYWxpemVkIGZyb20gdGhlIGNvbW1hbmQtbGluZSBmbGFn
IGAtLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGVgKS4KKworKiAgIE9uIFBPU0lYIHN5c3RlbXMsIGBm
b3JrKClgIChvciBgY2xvbmUoKWAgb24gTGludXgpIGlzIHVzZWQgdG8gc3Bhd24gdGhlCisgICAg
Y2hpbGQsIGFmdGVyIHdoaWNoOgorICAgICogICBJZiB0aGUgdmFyaWFibGUncyB2YWx1ZSBpcyBg
ImZhc3QiYCwgdGhlIGRlYXRoIHRlc3Qgc3RhdGVtZW50IGlzCisgICAgICAgIGltbWVkaWF0ZWx5
IGV4ZWN1dGVkLgorICAgICogICBJZiB0aGUgdmFyaWFibGUncyB2YWx1ZSBpcyBgInRocmVhZHNh
ZmUiYCwgdGhlIGNoaWxkIHByb2Nlc3MgcmUtZXhlY3V0ZXMKKyAgICAgICAgdGhlIHVuaXQgdGVz
dCBiaW5hcnkganVzdCBhcyBpdCB3YXMgb3JpZ2luYWxseSBpbnZva2VkLCBidXQgd2l0aCBzb21l
CisgICAgICAgIGV4dHJhIGZsYWdzIHRvIGNhdXNlIGp1c3QgdGhlIHNpbmdsZSBkZWF0aCB0ZXN0
IHVuZGVyIGNvbnNpZGVyYXRpb24gdG8KKyAgICAgICAgYmUgcnVuLgorKiAgIE9uIFdpbmRvd3Ms
IHRoZSBjaGlsZCBpcyBzcGF3bmVkIHVzaW5nIHRoZSBgQ3JlYXRlUHJvY2VzcygpYCBBUEksIGFu
ZAorICAgIHJlLWV4ZWN1dGVzIHRoZSBiaW5hcnkgdG8gY2F1c2UganVzdCB0aGUgc2luZ2xlIGRl
YXRoIHRlc3QgdW5kZXIKKyAgICBjb25zaWRlcmF0aW9uIHRvIGJlIHJ1biAtIG11Y2ggbGlrZSB0
aGUgYHRocmVhZHNhZmVgIG1vZGUgb24gUE9TSVguCisKK090aGVyIHZhbHVlcyBmb3IgdGhlIHZh
cmlhYmxlIGFyZSBpbGxlZ2FsIGFuZCB3aWxsIGNhdXNlIHRoZSBkZWF0aCB0ZXN0IHRvIGZhaWwu
CitDdXJyZW50bHksIHRoZSBmbGFnJ3MgZGVmYXVsdCB2YWx1ZSBpcworImZhc3QiLiBIb3dldmVy
LCB3ZSByZXNlcnZlCit0aGUgcmlnaHQgdG8gY2hhbmdlIGl0IGluIHRoZSBmdXR1cmUuIFRoZXJl
Zm9yZSwgeW91ciB0ZXN0cyBzaG91bGQgbm90IGRlcGVuZCBvbgordGhpcy4gSW4gZWl0aGVyIGNh
c2UsIHRoZSBwYXJlbnQgcHJvY2VzcyB3YWl0cyBmb3IgdGhlIGNoaWxkIHByb2Nlc3MgdG8KK2Nv
bXBsZXRlLCBhbmQgY2hlY2tzIHRoYXQKKworMS4gIHRoZSBjaGlsZCdzIGV4aXQgc3RhdHVzIHNh
dGlzZmllcyB0aGUgcHJlZGljYXRlLCBhbmQKKzIuICB0aGUgY2hpbGQncyBzdGRlcnIgbWF0Y2hl
cyB0aGUgcmVndWxhciBleHByZXNzaW9uLgorCitJZiB0aGUgZGVhdGggdGVzdCBzdGF0ZW1lbnQg
cnVucyB0byBjb21wbGV0aW9uIHdpdGhvdXQgZHlpbmcsIHRoZSBjaGlsZCBwcm9jZXNzCit3aWxs
IG5vbmV0aGVsZXNzIHRlcm1pbmF0ZSwgYW5kIHRoZSBhc3NlcnRpb24gZmFpbHMuCisKKyMjIyBE
ZWF0aCBUZXN0cyBBbmQgVGhyZWFkcworCitUaGUgcmVhc29uIGZvciB0aGUgdHdvIGRlYXRoIHRl
c3Qgc3R5bGVzIGhhcyB0byBkbyB3aXRoIHRocmVhZCBzYWZldHkuIER1ZSB0bword2VsbC1rbm93
biBwcm9ibGVtcyB3aXRoIGZvcmtpbmcgaW4gdGhlIHByZXNlbmNlIG9mIHRocmVhZHMsIGRlYXRo
IHRlc3RzIHNob3VsZAorYmUgcnVuIGluIGEgc2luZ2xlLXRocmVhZGVkIGNvbnRleHQuIFNvbWV0
aW1lcywgaG93ZXZlciwgaXQgaXNuJ3QgZmVhc2libGUgdG8KK2FycmFuZ2UgdGhhdCBraW5kIG9m
IGVudmlyb25tZW50LiBGb3IgZXhhbXBsZSwgc3RhdGljYWxseS1pbml0aWFsaXplZCBtb2R1bGVz
CittYXkgc3RhcnQgdGhyZWFkcyBiZWZvcmUgbWFpbiBpcyBldmVyIHJlYWNoZWQuIE9uY2UgdGhy
ZWFkcyBoYXZlIGJlZW4gY3JlYXRlZCwKK2l0IG1heSBiZSBkaWZmaWN1bHQgb3IgaW1wb3NzaWJs
ZSB0byBjbGVhbiB0aGVtIHVwLgorCitnb29nbGV0ZXN0IGhhcyB0aHJlZSBmZWF0dXJlcyBpbnRl
bmRlZCB0byByYWlzZSBhd2FyZW5lc3Mgb2YgdGhyZWFkaW5nIGlzc3Vlcy4KKworMS4gIEEgd2Fy
bmluZyBpcyBlbWl0dGVkIGlmIG11bHRpcGxlIHRocmVhZHMgYXJlIHJ1bm5pbmcgd2hlbiBhIGRl
YXRoIHRlc3QgaXMKKyAgICBlbmNvdW50ZXJlZC4KKzIuICBUZXN0IGNhc2VzIHdpdGggYSBuYW1l
IGVuZGluZyBpbiAiRGVhdGhUZXN0IiBhcmUgcnVuIGJlZm9yZSBhbGwgb3RoZXIgdGVzdHMuCisz
LiAgSXQgdXNlcyBgY2xvbmUoKWAgaW5zdGVhZCBvZiBgZm9yaygpYCB0byBzcGF3biB0aGUgY2hp
bGQgcHJvY2VzcyBvbiBMaW51eAorICAgIChgY2xvbmUoKWAgaXMgbm90IGF2YWlsYWJsZSBvbiBD
eWd3aW4gYW5kIE1hYyksIGFzIGBmb3JrKClgIGlzIG1vcmUgbGlrZWx5CisgICAgdG8gY2F1c2Ug
dGhlIGNoaWxkIHRvIGhhbmcgd2hlbiB0aGUgcGFyZW50IHByb2Nlc3MgaGFzIG11bHRpcGxlIHRo
cmVhZHMuCisKK0l0J3MgcGVyZmVjdGx5IGZpbmUgdG8gY3JlYXRlIHRocmVhZHMgaW5zaWRlIGEg
ZGVhdGggdGVzdCBzdGF0ZW1lbnQ7IHRoZXkgYXJlCitleGVjdXRlZCBpbiBhIHNlcGFyYXRlIHBy
b2Nlc3MgYW5kIGNhbm5vdCBhZmZlY3QgdGhlIHBhcmVudC4KKworIyMjIERlYXRoIFRlc3QgU3R5
bGVzCisKKworVGhlICJ0aHJlYWRzYWZlIiBkZWF0aCB0ZXN0IHN0eWxlIHdhcyBpbnRyb2R1Y2Vk
IGluIG9yZGVyIHRvIGhlbHAgbWl0aWdhdGUgdGhlCityaXNrcyBvZiB0ZXN0aW5nIGluIGEgcG9z
c2libHkgbXVsdGl0aHJlYWRlZCBlbnZpcm9ubWVudC4gSXQgdHJhZGVzIGluY3JlYXNlZAordGVz
dCBleGVjdXRpb24gdGltZSAocG90ZW50aWFsbHkgZHJhbWF0aWNhbGx5IHNvKSBmb3IgaW1wcm92
ZWQgdGhyZWFkIHNhZmV0eS4KKworVGhlIGF1dG9tYXRlZCB0ZXN0aW5nIGZyYW1ld29yayBkb2Vz
IG5vdCBzZXQgdGhlIHN0eWxlIGZsYWcuIFlvdSBjYW4gY2hvb3NlIGEKK3BhcnRpY3VsYXIgc3R5
bGUgb2YgZGVhdGggdGVzdHMgYnkgc2V0dGluZyB0aGUgZmxhZyBwcm9ncmFtbWF0aWNhbGx5Ogor
CitgYGBjKysKK3Rlc3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGU9InRocmVhZHNh
ZmUiCitgYGAKKworWW91IGNhbiBkbyB0aGlzIGluIGBtYWluKClgIHRvIHNldCB0aGUgc3R5bGUg
Zm9yIGFsbCBkZWF0aCB0ZXN0cyBpbiB0aGUgYmluYXJ5LAorb3IgaW4gaW5kaXZpZHVhbCB0ZXN0
cy4gUmVjYWxsIHRoYXQgZmxhZ3MgYXJlIHNhdmVkIGJlZm9yZSBydW5uaW5nIGVhY2ggdGVzdCBh
bmQKK3Jlc3RvcmVkIGFmdGVyd2FyZHMsIHNvIHlvdSBuZWVkIG5vdCBkbyB0aGF0IHlvdXJzZWxm
LiBGb3IgZXhhbXBsZToKKworYGBgYysrCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3Yp
IHsKKyAgSW5pdEdvb2dsZShhcmd2WzBdLCAmYXJnYywgJmFyZ3YsIHRydWUpOworICA6OnRlc3Rp
bmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAiZmFzdCI7CisgIHJldHVybiBSVU5f
QUxMX1RFU1RTKCk7Cit9CisKK1RFU1QoTXlEZWF0aFRlc3QsIFRlc3RPbmUpIHsKKyAgOjp0ZXN0
aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0gInRocmVhZHNhZmUiOworICAvLyBU
aGlzIHRlc3QgaXMgcnVuIGluIHRoZSAidGhyZWFkc2FmZSIgc3R5bGU6CisgIEFTU0VSVF9ERUFU
SChUaGlzU2hvdWxkRGllKCksICIiKTsKK30KKworVEVTVChNeURlYXRoVGVzdCwgVGVzdFR3bykg
eworICAvLyBUaGlzIHRlc3QgaXMgcnVuIGluIHRoZSAiZmFzdCIgc3R5bGU6CisgIEFTU0VSVF9E
RUFUSChUaGlzU2hvdWxkRGllKCksICIiKTsKK30KK2BgYAorCisKKyMjIyBDYXZlYXRzCisKK1Ro
ZSBgc3RhdGVtZW50YCBhcmd1bWVudCBvZiBgQVNTRVJUX0VYSVQoKWAgY2FuIGJlIGFueSB2YWxp
ZCBDKysgc3RhdGVtZW50LiBJZgoraXQgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9uIHZpYSBh
IGByZXR1cm5gIHN0YXRlbWVudCBvciBieSB0aHJvd2luZyBhbgorZXhjZXB0aW9uLCB0aGUgZGVh
dGggdGVzdCBpcyBjb25zaWRlcmVkIHRvIGhhdmUgZmFpbGVkLiBTb21lIGdvb2dsZXRlc3QgbWFj
cm9zCittYXkgcmV0dXJuIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gKGUuZy4gYEFTU0VSVF9U
UlVFKClgKSwgc28gYmUgc3VyZSB0byBhdm9pZAordGhlbSBpbiBgc3RhdGVtZW50YC4KKworU2lu
Y2UgYHN0YXRlbWVudGAgcnVucyBpbiB0aGUgY2hpbGQgcHJvY2VzcywgYW55IGluLW1lbW9yeSBz
aWRlIGVmZmVjdCAoZS5nLgorbW9kaWZ5aW5nIGEgdmFyaWFibGUsIHJlbGVhc2luZyBtZW1vcnks
IGV0YykgaXQgY2F1c2VzIHdpbGwgKm5vdCogYmUgb2JzZXJ2YWJsZQoraW4gdGhlIHBhcmVudCBw
cm9jZXNzLiBJbiBwYXJ0aWN1bGFyLCBpZiB5b3UgcmVsZWFzZSBtZW1vcnkgaW4gYSBkZWF0aCB0
ZXN0LAoreW91ciBwcm9ncmFtIHdpbGwgZmFpbCB0aGUgaGVhcCBjaGVjayBhcyB0aGUgcGFyZW50
IHByb2Nlc3Mgd2lsbCBuZXZlciBzZWUgdGhlCittZW1vcnkgcmVjbGFpbWVkLiBUbyBzb2x2ZSB0
aGlzIHByb2JsZW0sIHlvdSBjYW4KKworMS4gIHRyeSBub3QgdG8gZnJlZSBtZW1vcnkgaW4gYSBk
ZWF0aCB0ZXN0OworMi4gIGZyZWUgdGhlIG1lbW9yeSBhZ2FpbiBpbiB0aGUgcGFyZW50IHByb2Nl
c3M7IG9yCiszLiAgZG8gbm90IHVzZSB0aGUgaGVhcCBjaGVja2VyIGluIHlvdXIgcHJvZ3JhbS4K
KworRHVlIHRvIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCwgeW91IGNhbm5vdCBwbGFjZSBtdWx0
aXBsZSBkZWF0aCB0ZXN0IGFzc2VydGlvbnMKK29uIHRoZSBzYW1lIGxpbmU7IG90aGVyd2lzZSwg
Y29tcGlsYXRpb24gd2lsbCBmYWlsIHdpdGggYW4gdW5vYnZpb3VzIGVycm9yCittZXNzYWdlLgor
CitEZXNwaXRlIHRoZSBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5IGFmZm9yZGVkIGJ5IHRoZSAidGhy
ZWFkc2FmZSIgc3R5bGUgb2YgZGVhdGgKK3Rlc3QsIHRocmVhZCBwcm9ibGVtcyBzdWNoIGFzIGRl
YWRsb2NrIGFyZSBzdGlsbCBwb3NzaWJsZSBpbiB0aGUgcHJlc2VuY2Ugb2YKK2hhbmRsZXJzIHJl
Z2lzdGVyZWQgd2l0aCBgcHRocmVhZF9hdGZvcmsoMylgLgorCisKKyMjIFVzaW5nIEFzc2VydGlv
bnMgaW4gU3ViLXJvdXRpbmVzCisKKyMjIyBBZGRpbmcgVHJhY2VzIHRvIEFzc2VydGlvbnMKKwor
SWYgYSB0ZXN0IHN1Yi1yb3V0aW5lIGlzIGNhbGxlZCBmcm9tIHNldmVyYWwgcGxhY2VzLCB3aGVu
IGFuIGFzc2VydGlvbiBpbnNpZGUgaXQKK2ZhaWxzLCBpdCBjYW4gYmUgaGFyZCB0byB0ZWxsIHdo
aWNoIGludm9jYXRpb24gb2YgdGhlIHN1Yi1yb3V0aW5lIHRoZSBmYWlsdXJlIGlzCitmcm9tLiAK
K1lvdSBjYW4gYWxsZXZpYXRlIHRoaXMgcHJvYmxlbSB1c2luZyBleHRyYSBsb2dnaW5nIG9yIGN1
c3RvbSBmYWlsdXJlIG1lc3NhZ2VzLAorYnV0IHRoYXQgdXN1YWxseSBjbHV0dGVycyB1cCB5b3Vy
IHRlc3RzLiBBIGJldHRlciBzb2x1dGlvbiBpcyB0byB1c2UgdGhlCitgU0NPUEVEX1RSQUNFYCBt
YWNybyBvciB0aGUgYFNjb3BlZFRyYWNlYCB1dGlsaXR5OgorCitgYGBjKysKK1NDT1BFRF9UUkFD
RShtZXNzYWdlKTsKK1Njb3BlZFRyYWNlIHRyYWNlKCJmaWxlX3BhdGgiLCBsaW5lX251bWJlciwg
bWVzc2FnZSk7CitgYGAKKword2hlcmUgYG1lc3NhZ2VgIGNhbiBiZSBhbnl0aGluZyBzdHJlYW1h
YmxlIHRvIGBzdGQ6Om9zdHJlYW1gLiBgU0NPUEVEX1RSQUNFYAorbWFjcm8gd2lsbCBjYXVzZSB0
aGUgY3VycmVudCBmaWxlIG5hbWUsIGxpbmUgbnVtYmVyLCBhbmQgdGhlIGdpdmVuIG1lc3NhZ2Ug
dG8gYmUKK2FkZGVkIGluIGV2ZXJ5IGZhaWx1cmUgbWVzc2FnZS4gYFNjb3BlZFRyYWNlYCBhY2Nl
cHRzIGV4cGxpY2l0IGZpbGUgbmFtZSBhbmQKK2xpbmUgbnVtYmVyIGluIGFyZ3VtZW50cywgd2hp
Y2ggaXMgdXNlZnVsIGZvciB3cml0aW5nIHRlc3QgaGVscGVycy4gVGhlIGVmZmVjdAord2lsbCBi
ZSB1bmRvbmUgd2hlbiB0aGUgY29udHJvbCBsZWF2ZXMgdGhlIGN1cnJlbnQgbGV4aWNhbCBzY29w
ZS4KKworRm9yIGV4YW1wbGUsCisKK2BgYGMrKworMTA6IHZvaWQgU3ViMShpbnQgbikgeworMTE6
ICAgRVhQRUNUX0VRKDEsIEJhcihuKSk7CisxMjogICBFWFBFQ1RfRVEoMiwgQmFyKG4gKyAxKSk7
CisxMzogfQorMTQ6CisxNTogVEVTVChGb29UZXN0LCBCYXIpIHsKKzE2OiAgIHsKKzE3OiAgICAg
U0NPUEVEX1RSQUNFKCJBIik7ICAvLyBUaGlzIHRyYWNlIHBvaW50IHdpbGwgYmUgaW5jbHVkZWQg
aW4KKzE4OiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVyeSBmYWlsdXJlIGluIHRoaXMg
c2NvcGUuCisxOTogICAgIFN1YjEoMSk7CisyMDogICB9CisyMTogICAvLyBOb3cgaXQgd29uJ3Qu
CisyMjogICBTdWIxKDkpOworMjM6IH0KK2BgYAorCitjb3VsZCByZXN1bHQgaW4gbWVzc2FnZXMg
bGlrZSB0aGVzZToKKworYGBgbm9uZQorcGF0aC90by9mb29fdGVzdC5jYzoxMTogRmFpbHVyZQor
VmFsdWUgb2Y6IEJhcihuKQorRXhwZWN0ZWQ6IDEKKyAgQWN0dWFsOiAyCisgICBUcmFjZToKK3Bh
dGgvdG8vZm9vX3Rlc3QuY2M6MTc6IEEKKworcGF0aC90by9mb29fdGVzdC5jYzoxMjogRmFpbHVy
ZQorVmFsdWUgb2Y6IEJhcihuICsgMSkKK0V4cGVjdGVkOiAyCisgIEFjdHVhbDogMworYGBgCisK
K1dpdGhvdXQgdGhlIHRyYWNlLCBpdCB3b3VsZCd2ZSBiZWVuIGRpZmZpY3VsdCB0byBrbm93IHdo
aWNoIGludm9jYXRpb24gb2YKK2BTdWIxKClgIHRoZSB0d28gZmFpbHVyZXMgY29tZSBmcm9tIHJl
c3BlY3RpdmVseS4gKFlvdSBjb3VsZCBhZGQKKworYW4gZXh0cmEgbWVzc2FnZSB0byBlYWNoIGFz
c2VydGlvbiBpbiBgU3ViMSgpYCB0byBpbmRpY2F0ZSB0aGUgdmFsdWUgb2YgYG5gLCBidXQKK3Ro
YXQncyB0ZWRpb3VzLikKKworU29tZSB0aXBzIG9uIHVzaW5nIGBTQ09QRURfVFJBQ0VgOgorCisx
LiAgV2l0aCBhIHN1aXRhYmxlIG1lc3NhZ2UsIGl0J3Mgb2Z0ZW4gZW5vdWdoIHRvIHVzZSBgU0NP
UEVEX1RSQUNFYCBhdCB0aGUKKyAgICBiZWdpbm5pbmcgb2YgYSBzdWItcm91dGluZSwgaW5zdGVh
ZCBvZiBhdCBlYWNoIGNhbGwgc2l0ZS4KKzIuICBXaGVuIGNhbGxpbmcgc3ViLXJvdXRpbmVzIGlu
c2lkZSBhIGxvb3AsIG1ha2UgdGhlIGxvb3AgaXRlcmF0b3IgcGFydCBvZiB0aGUKKyAgICBtZXNz
YWdlIGluIGBTQ09QRURfVFJBQ0VgIHN1Y2ggdGhhdCB5b3UgY2FuIGtub3cgd2hpY2ggaXRlcmF0
aW9uIHRoZSBmYWlsdXJlCisgICAgaXMgZnJvbS4KKzMuICBTb21ldGltZXMgdGhlIGxpbmUgbnVt
YmVyIG9mIHRoZSB0cmFjZSBwb2ludCBpcyBlbm91Z2ggZm9yIGlkZW50aWZ5aW5nIHRoZQorICAg
IHBhcnRpY3VsYXIgaW52b2NhdGlvbiBvZiBhIHN1Yi1yb3V0aW5lLiBJbiB0aGlzIGNhc2UsIHlv
dSBkb24ndCBoYXZlIHRvCisgICAgY2hvb3NlIGEgdW5pcXVlIG1lc3NhZ2UgZm9yIGBTQ09QRURf
VFJBQ0VgLiBZb3UgY2FuIHNpbXBseSB1c2UgYCIiYC4KKzQuICBZb3UgY2FuIHVzZSBgU0NPUEVE
X1RSQUNFYCBpbiBhbiBpbm5lciBzY29wZSB3aGVuIHRoZXJlIGlzIG9uZSBpbiB0aGUgb3V0ZXIK
KyAgICBzY29wZS4gSW4gdGhpcyBjYXNlLCBhbGwgYWN0aXZlIHRyYWNlIHBvaW50cyB3aWxsIGJl
IGluY2x1ZGVkIGluIHRoZSBmYWlsdXJlCisgICAgbWVzc2FnZXMsIGluIHJldmVyc2Ugb3JkZXIg
dGhleSBhcmUgZW5jb3VudGVyZWQuCis1LiAgVGhlIHRyYWNlIGR1bXAgaXMgY2xpY2thYmxlIGlu
IEVtYWNzIC0gaGl0IGByZXR1cm5gIG9uIGEgbGluZSBudW1iZXIgYW5kCisgICAgeW91J2xsIGJl
IHRha2VuIHRvIHRoYXQgbGluZSBpbiB0aGUgc291cmNlIGZpbGUhCisKKyoqQXZhaWxhYmlsaXR5
Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBQcm9wYWdhdGluZyBGYXRhbCBGYWlsdXJl
cworCitBIGNvbW1vbiBwaXRmYWxsIHdoZW4gdXNpbmcgYEFTU0VSVF8qYCBhbmQgYEZBSUwqYCBp
cyBub3QgdW5kZXJzdGFuZGluZyB0aGF0Cit3aGVuIHRoZXkgZmFpbCB0aGV5IG9ubHkgYWJvcnQg
dGhlIF9jdXJyZW50IGZ1bmN0aW9uXywgbm90IHRoZSBlbnRpcmUgdGVzdC4gRm9yCitleGFtcGxl
LCB0aGUgZm9sbG93aW5nIHRlc3Qgd2lsbCBzZWdmYXVsdDoKKworYGBgYysrCit2b2lkIFN1YnJv
dXRpbmUoKSB7CisgIC8vIEdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUgYW5kIGFib3J0cyB0aGUg
Y3VycmVudCBmdW5jdGlvbi4KKyAgQVNTRVJUX0VRKDEsIDIpOworCisgIC8vIFRoZSBmb2xsb3dp
bmcgd29uJ3QgYmUgZXhlY3V0ZWQuCisgIC4uLgorfQorCitURVNUKEZvb1Rlc3QsIEJhcikgewor
ICBTdWJyb3V0aW5lKCk7ICAvLyBUaGUgaW50ZW5kZWQgYmVoYXZpb3IgaXMgZm9yIHRoZSBmYXRh
bCBmYWlsdXJlCisgICAgICAgICAgICAgICAgIC8vIGluIFN1YnJvdXRpbmUoKSB0byBhYm9ydCB0
aGUgZW50aXJlIHRlc3QuCisKKyAgLy8gVGhlIGFjdHVhbCBiZWhhdmlvcjogdGhlIGZ1bmN0aW9u
IGdvZXMgb24gYWZ0ZXIgU3Vicm91dGluZSgpIHJldHVybnMuCisgIGludCogcCA9IE5VTEw7Cisg
ICpwID0gMzsgIC8vIFNlZ2ZhdWx0IQorfQorYGBgCisKK1RvIGFsbGV2aWF0ZSB0aGlzLCBnb29n
bGV0ZXN0IHByb3ZpZGVzIHRocmVlIGRpZmZlcmVudCBzb2x1dGlvbnMuIFlvdSBjb3VsZCB1c2UK
K2VpdGhlciBleGNlcHRpb25zLCB0aGUgYChBU1NFUlR8RVhQRUNUKV9OT19GQVRBTF9GQUlMVVJF
YCBhc3NlcnRpb25zIG9yIHRoZQorYEhhc0ZhdGFsRmFpbHVyZSgpYCBmdW5jdGlvbi4gVGhleSBh
cmUgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgdHdvCitzdWJzZWN0aW9ucy4KKworIyMjIyBB
c3NlcnRpbmcgb24gU3Vicm91dGluZXMgd2l0aCBhbiBleGNlcHRpb24KKworVGhlIGZvbGxvd2lu
ZyBjb2RlIGNhbiB0dXJuIEFTU0VSVC1mYWlsdXJlIGludG8gYW4gZXhjZXB0aW9uOgorCitgYGBj
KysKK2NsYXNzIFRocm93TGlzdGVuZXIgOiBwdWJsaWMgdGVzdGluZzo6RW1wdHlUZXN0RXZlbnRM
aXN0ZW5lciB7CisgIHZvaWQgT25UZXN0UGFydFJlc3VsdChjb25zdCB0ZXN0aW5nOjpUZXN0UGFy
dFJlc3VsdCYgcmVzdWx0KSBvdmVycmlkZSB7CisgICAgaWYgKHJlc3VsdC50eXBlKCkgPT0gdGVz
dGluZzo6VGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUpIHsKKyAgICAgIHRocm93IHRlc3Rp
bmc6OkFzc2VydGlvbkV4Y2VwdGlvbihyZXN1bHQpOworICAgIH0KKyAgfQorfTsKK2ludCBtYWlu
KGludCBhcmdjLCBjaGFyKiogYXJndikgeworICAuLi4KKyAgdGVzdGluZzo6VW5pdFRlc3Q6Okdl
dEluc3RhbmNlKCktPmxpc3RlbmVycygpLkFwcGVuZChuZXcgVGhyb3dMaXN0ZW5lcik7CisgIHJl
dHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CitgYGAKKworVGhpcyBsaXN0ZW5lciBzaG91bGQgYmUg
YWRkZWQgYWZ0ZXIgb3RoZXIgbGlzdGVuZXJzIGlmIHlvdSBoYXZlIGFueSwgb3RoZXJ3aXNlCit0
aGV5IHdvbid0IHNlZSBmYWlsZWQgYE9uVGVzdFBhcnRSZXN1bHRgLgorCisjIyMjIEFzc2VydGlu
ZyBvbiBTdWJyb3V0aW5lcworCitBcyBzaG93biBhYm92ZSwgaWYgeW91ciB0ZXN0IGNhbGxzIGEg
c3Vicm91dGluZSB0aGF0IGhhcyBhbiBgQVNTRVJUXypgIGZhaWx1cmUKK2luIGl0LCB0aGUgdGVz
dCB3aWxsIGNvbnRpbnVlIGFmdGVyIHRoZSBzdWJyb3V0aW5lIHJldHVybnMuIFRoaXMgbWF5IG5v
dCBiZSB3aGF0Cit5b3Ugd2FudC4KKworT2Z0ZW4gcGVvcGxlIHdhbnQgZmF0YWwgZmFpbHVyZXMg
dG8gcHJvcGFnYXRlIGxpa2UgZXhjZXB0aW9ucy4gRm9yIHRoYXQKK2dvb2dsZXRlc3Qgb2ZmZXJz
IHRoZSBmb2xsb3dpbmcgbWFjcm9zOgorCitGYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAg
ICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICB8IFZlcmlmaWVz
CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tCitgQVNTRVJUX05PX0ZBVEFMX0ZBSUxV
UkUoc3RhdGVtZW50KTtgIHwgYEVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKHN0YXRlbWVudCk7YCB8
IGBzdGF0ZW1lbnRgIGRvZXNuJ3QgZ2VuZXJhdGUgYW55IG5ldyBmYXRhbCBmYWlsdXJlcyBpbiB0
aGUgY3VycmVudCB0aHJlYWQuCisKK09ubHkgZmFpbHVyZXMgaW4gdGhlIHRocmVhZCB0aGF0IGV4
ZWN1dGVzIHRoZSBhc3NlcnRpb24gYXJlIGNoZWNrZWQgdG8gZGV0ZXJtaW5lCit0aGUgcmVzdWx0
IG9mIHRoaXMgdHlwZSBvZiBhc3NlcnRpb25zLiBJZiBgc3RhdGVtZW50YCBjcmVhdGVzIG5ldyB0
aHJlYWRzLAorZmFpbHVyZXMgaW4gdGhlc2UgdGhyZWFkcyBhcmUgaWdub3JlZC4KKworRXhhbXBs
ZXM6CisKK2BgYGMrKworQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoRm9vKCkpOworCitpbnQgaTsK
K0VYUEVDVF9OT19GQVRBTF9GQUlMVVJFKHsKKyAgaSA9IEJhcigpOworfSk7CitgYGAKKworKipB
dmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4gQXNzZXJ0aW9ucyBmcm9tIG11bHRp
cGxlIHRocmVhZHMgYXJlCitjdXJyZW50bHkgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzLgorCisj
IyMjIENoZWNraW5nIGZvciBGYWlsdXJlcyBpbiB0aGUgQ3VycmVudCBUZXN0CisKK2BIYXNGYXRh
bEZhaWx1cmUoKWAgaW4gdGhlIGA6OnRlc3Rpbmc6OlRlc3RgIGNsYXNzIHJldHVybnMgYHRydWVg
IGlmIGFuCithc3NlcnRpb24gaW4gdGhlIGN1cnJlbnQgdGVzdCBoYXMgc3VmZmVyZWQgYSBmYXRh
bCBmYWlsdXJlLiBUaGlzIGFsbG93cworZnVuY3Rpb25zIHRvIGNhdGNoIGZhdGFsIGZhaWx1cmVz
IGluIGEgc3ViLXJvdXRpbmUgYW5kIHJldHVybiBlYXJseS4KKworYGBgYysrCitjbGFzcyBUZXN0
IHsKKyBwdWJsaWM6CisgIC4uLgorICBzdGF0aWMgYm9vbCBIYXNGYXRhbEZhaWx1cmUoKTsKK307
CitgYGAKKworVGhlIHR5cGljYWwgdXNhZ2UsIHdoaWNoIGJhc2ljYWxseSBzaW11bGF0ZXMgdGhl
IGJlaGF2aW9yIG9mIGEgdGhyb3duIGV4Y2VwdGlvbiwKK2lzOgorCitgYGBjKysKK1RFU1QoRm9v
VGVzdCwgQmFyKSB7CisgIFN1YnJvdXRpbmUoKTsKKyAgLy8gQWJvcnRzIGlmIFN1YnJvdXRpbmUo
KSBoYWQgYSBmYXRhbCBmYWlsdXJlLgorICBpZiAoSGFzRmF0YWxGYWlsdXJlKCkpIHJldHVybjsK
KworICAvLyBUaGUgZm9sbG93aW5nIHdvbid0IGJlIGV4ZWN1dGVkLgorICAuLi4KK30KK2BgYAor
CitJZiBgSGFzRmF0YWxGYWlsdXJlKClgIGlzIHVzZWQgb3V0c2lkZSBvZiBgVEVTVCgpYCAsIGBU
RVNUX0YoKWAgLCBvciBhIHRlc3QKK2ZpeHR1cmUsIHlvdSBtdXN0IGFkZCB0aGUgYDo6dGVzdGlu
Zzo6VGVzdDo6YCBwcmVmaXgsIGFzIGluOgorCitgYGBjKysKK2lmICg6OnRlc3Rpbmc6OlRlc3Q6
Okhhc0ZhdGFsRmFpbHVyZSgpKSByZXR1cm47CitgYGAKKworU2ltaWxhcmx5LCBgSGFzTm9uZmF0
YWxGYWlsdXJlKClgIHJldHVybnMgYHRydWVgIGlmIHRoZSBjdXJyZW50IHRlc3QgaGFzIGF0Cits
ZWFzdCBvbmUgbm9uLWZhdGFsIGZhaWx1cmUsIGFuZCBgSGFzRmFpbHVyZSgpYCByZXR1cm5zIGB0
cnVlYCBpZiB0aGUgY3VycmVudAordGVzdCBoYXMgYXQgbGVhc3Qgb25lIGZhaWx1cmUgb2YgZWl0
aGVyIGtpbmQuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMj
IExvZ2dpbmcgQWRkaXRpb25hbCBJbmZvcm1hdGlvbgorCitJbiB5b3VyIHRlc3QgY29kZSwgeW91
IGNhbiBjYWxsIGBSZWNvcmRQcm9wZXJ0eSgia2V5IiwgdmFsdWUpYCB0byBsb2cgYWRkaXRpb25h
bAoraW5mb3JtYXRpb24sIHdoZXJlIGB2YWx1ZWAgY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBh
biBgaW50YC4gVGhlICpsYXN0KiB2YWx1ZQorcmVjb3JkZWQgZm9yIGEga2V5IHdpbGwgYmUgZW1p
dHRlZCB0byB0aGUgW1hNTCBvdXRwdXRdKCNnZW5lcmF0aW5nLWFuLXhtbC1yZXBvcnQpIGlmIHlv
dQorc3BlY2lmeSBvbmUuIEZvciBleGFtcGxlLCB0aGUgdGVzdAorCitgYGBjKysKK1RFU1RfRihX
aWRnZXRVc2FnZVRlc3QsIE1pbkFuZE1heFdpZGdldHMpIHsKKyAgUmVjb3JkUHJvcGVydHkoIk1h
eGltdW1XaWRnZXRzIiwgQ29tcHV0ZU1heFVzYWdlKCkpOworICBSZWNvcmRQcm9wZXJ0eSgiTWlu
aW11bVdpZGdldHMiLCBDb21wdXRlTWluVXNhZ2UoKSk7Cit9CitgYGAKKword2lsbCBvdXRwdXQg
WE1MIGxpa2UgdGhpczoKKworYGBgeG1sCisgIC4uLgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJNaW5B
bmRNYXhXaWRnZXRzIiBzdGF0dXM9InJ1biIgdGltZT0iMC4wMDYiIGNsYXNzbmFtZT0iV2lkZ2V0
VXNhZ2VUZXN0IiBNYXhpbXVtV2lkZ2V0cz0iMTIiIE1pbmltdW1XaWRnZXRzPSI5IiAvPgorICAu
Li4KK2BgYAorCis+IE5PVEU6Cis+Cis+ICogICBgUmVjb3JkUHJvcGVydHkoKWAgaXMgYSBzdGF0
aWMgbWVtYmVyIG9mIHRoZSBgVGVzdGAgY2xhc3MuIFRoZXJlZm9yZSBpdAorPiAgICAgbmVlZHMg
dG8gYmUgcHJlZml4ZWQgd2l0aCBgOjp0ZXN0aW5nOjpUZXN0OjpgIGlmIHVzZWQgb3V0c2lkZSBv
ZiB0aGUKKz4gICAgIGBURVNUYCBib2R5IGFuZCB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLgorPiAq
ICAgYCprZXkqYCBtdXN0IGJlIGEgdmFsaWQgWE1MIGF0dHJpYnV0ZSBuYW1lLCBhbmQgY2Fubm90
IGNvbmZsaWN0IHdpdGggdGhlCis+ICAgICBvbmVzIGFscmVhZHkgdXNlZCBieSBnb29nbGV0ZXN0
IChgbmFtZWAsIGBzdGF0dXNgLCBgdGltZWAsIGBjbGFzc25hbWVgLAorPiAgICAgYHR5cGVfcGFy
YW1gLCBhbmQgYHZhbHVlX3BhcmFtYCkuCis+ICogICBDYWxsaW5nIGBSZWNvcmRQcm9wZXJ0eSgp
YCBvdXRzaWRlIG9mIHRoZSBsaWZlc3BhbiBvZiBhIHRlc3QgaXMgYWxsb3dlZC4KKz4gICAgIElm
IGl0J3MgY2FsbGVkIG91dHNpZGUgb2YgYSB0ZXN0IGJ1dCBiZXR3ZWVuIGEgdGVzdCBjYXNlJ3MK
Kz4gICAgIGBTZXRVcFRlc3RDYXNlKClgIGFuZCBgVGVhckRvd25UZXN0Q2FzZSgpYCBtZXRob2Rz
LCBpdCB3aWxsIGJlIGF0dHJpYnV0ZWQKKz4gICAgIHRvIHRoZSBYTUwgZWxlbWVudCBmb3IgdGhl
IHRlc3QgY2FzZS4gSWYgaXQncyBjYWxsZWQgb3V0c2lkZSBvZiBhbGwgdGVzdAorPiAgICAgY2Fz
ZXMgKGUuZy4gaW4gYSB0ZXN0IGVudmlyb25tZW50KSwgaXQgd2lsbCBiZSBhdHRyaWJ1dGVkIHRv
IHRoZSB0b3AtbGV2ZWwKKz4gICAgIFhNTCBlbGVtZW50LgorCisqKkF2YWlsYWJpbGl0eSoqOiBM
aW51eCwgV2luZG93cywgTWFjLgorCisjIyBTaGFyaW5nIFJlc291cmNlcyBCZXR3ZWVuIFRlc3Rz
IGluIHRoZSBTYW1lIFRlc3QgQ2FzZQorCitnb29nbGV0ZXN0IGNyZWF0ZXMgYSBuZXcgdGVzdCBm
aXh0dXJlIG9iamVjdCBmb3IgZWFjaCB0ZXN0IGluIG9yZGVyIHRvIG1ha2UKK3Rlc3RzIGluZGVw
ZW5kZW50IGFuZCBlYXNpZXIgdG8gZGVidWcuIEhvd2V2ZXIsIHNvbWV0aW1lcyB0ZXN0cyB1c2Ug
cmVzb3VyY2VzCit0aGF0IGFyZSBleHBlbnNpdmUgdG8gc2V0IHVwLCBtYWtpbmcgdGhlIG9uZS1j
b3B5LXBlci10ZXN0IG1vZGVsIHByb2hpYml0aXZlbHkKK2V4cGVuc2l2ZS4KKworSWYgdGhlIHRl
c3RzIGRvbid0IGNoYW5nZSB0aGUgcmVzb3VyY2UsIHRoZXJlJ3Mgbm8gaGFybSBpbiB0aGVpciBz
aGFyaW5nIGEKK3NpbmdsZSByZXNvdXJjZSBjb3B5LiBTbywgaW4gYWRkaXRpb24gdG8gcGVyLXRl
c3Qgc2V0LXVwL3RlYXItZG93biwgZ29vZ2xldGVzdAorYWxzbyBzdXBwb3J0cyBwZXItdGVzdC1j
YXNlIHNldC11cC90ZWFyLWRvd24uIFRvIHVzZSBpdDoKKworMS4gIEluIHlvdXIgdGVzdCBmaXh0
dXJlIGNsYXNzIChzYXkgYEZvb1Rlc3RgICksIGRlY2xhcmUgYXMgYHN0YXRpY2Agc29tZSBtZW1i
ZXIKKyAgICB2YXJpYWJsZXMgdG8gaG9sZCB0aGUgc2hhcmVkIHJlc291cmNlcy4KKzEuICBPdXRz
aWRlIHlvdXIgdGVzdCBmaXh0dXJlIGNsYXNzICh0eXBpY2FsbHkganVzdCBiZWxvdyBpdCksIGRl
ZmluZSB0aG9zZQorICAgIG1lbWJlciB2YXJpYWJsZXMsIG9wdGlvbmFsbHkgZ2l2aW5nIHRoZW0g
aW5pdGlhbCB2YWx1ZXMuCisxLiAgSW4gdGhlIHNhbWUgdGVzdCBmaXh0dXJlIGNsYXNzLCBkZWZp
bmUgYSBgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpYAorICAgIGZ1bmN0aW9uIChyZW1lbWJl
ciBub3QgdG8gc3BlbGwgaXQgYXMgKipgU2V0dXBUZXN0Q2FzZWAqKiB3aXRoIGEgc21hbGwgYHVg
ISkKKyAgICB0byBzZXQgdXAgdGhlIHNoYXJlZCByZXNvdXJjZXMgYW5kIGEgYHN0YXRpYyB2b2lk
IFRlYXJEb3duVGVzdENhc2UoKWAKKyAgICBmdW5jdGlvbiB0byB0ZWFyIHRoZW0gZG93bi4KKwor
VGhhdCdzIGl0ISBnb29nbGV0ZXN0IGF1dG9tYXRpY2FsbHkgY2FsbHMgYFNldFVwVGVzdENhc2Uo
KWAgYmVmb3JlIHJ1bm5pbmcgdGhlCisqZmlyc3QgdGVzdCogaW4gdGhlIGBGb29UZXN0YCB0ZXN0
IGNhc2UgKGkuZS4gYmVmb3JlIGNyZWF0aW5nIHRoZSBmaXJzdAorYEZvb1Rlc3RgIG9iamVjdCks
IGFuZCBjYWxscyBgVGVhckRvd25UZXN0Q2FzZSgpYCBhZnRlciBydW5uaW5nIHRoZSAqbGFzdCB0
ZXN0KgoraW4gaXQgKGkuZS4gYWZ0ZXIgZGVsZXRpbmcgdGhlIGxhc3QgYEZvb1Rlc3RgIG9iamVj
dCkuIEluIGJldHdlZW4sIHRoZSB0ZXN0cyBjYW4KK3VzZSB0aGUgc2hhcmVkIHJlc291cmNlcy4K
KworUmVtZW1iZXIgdGhhdCB0aGUgdGVzdCBvcmRlciBpcyB1bmRlZmluZWQsIHNvIHlvdXIgY29k
ZSBjYW4ndCBkZXBlbmQgb24gYSB0ZXN0CitwcmVjZWRpbmcgb3IgZm9sbG93aW5nIGFub3RoZXIu
IEFsc28sIHRoZSB0ZXN0cyBtdXN0IGVpdGhlciBub3QgbW9kaWZ5IHRoZSBzdGF0ZQorb2YgYW55
IHNoYXJlZCByZXNvdXJjZSwgb3IsIGlmIHRoZXkgZG8gbW9kaWZ5IHRoZSBzdGF0ZSwgdGhleSBt
dXN0IHJlc3RvcmUgdGhlCitzdGF0ZSB0byBpdHMgb3JpZ2luYWwgdmFsdWUgYmVmb3JlIHBhc3Np
bmcgY29udHJvbCB0byB0aGUgbmV4dCB0ZXN0LgorCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBwZXIt
dGVzdC1jYXNlIHNldC11cCBhbmQgdGVhci1kb3duOgorCitgYGBjKysKK2NsYXNzIEZvb1Rlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIC8vIFBlci10ZXN0LWNh
c2Ugc2V0LXVwLgorICAvLyBDYWxsZWQgYmVmb3JlIHRoZSBmaXJzdCB0ZXN0IGluIHRoaXMgdGVz
dCBjYXNlLgorICAvLyBDYW4gYmUgb21pdHRlZCBpZiBub3QgbmVlZGVkLgorICBzdGF0aWMgdm9p
ZCBTZXRVcFRlc3RDYXNlKCkgeworICAgIHNoYXJlZF9yZXNvdXJjZV8gPSBuZXcgLi4uOworICB9
CisKKyAgLy8gUGVyLXRlc3QtY2FzZSB0ZWFyLWRvd24uCisgIC8vIENhbGxlZCBhZnRlciB0aGUg
bGFzdCB0ZXN0IGluIHRoaXMgdGVzdCBjYXNlLgorICAvLyBDYW4gYmUgb21pdHRlZCBpZiBub3Qg
bmVlZGVkLgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIGRlbGV0ZSBz
aGFyZWRfcmVzb3VyY2VfOworICAgIHNoYXJlZF9yZXNvdXJjZV8gPSBOVUxMOworICB9CisKKyAg
Ly8gWW91IGNhbiBkZWZpbmUgcGVyLXRlc3Qgc2V0LXVwIGxvZ2ljIGFzIHVzdWFsLgorICB2aXJ0
dWFsIHZvaWQgU2V0VXAoKSB7IC4uLiB9CisKKyAgLy8gWW91IGNhbiBkZWZpbmUgcGVyLXRlc3Qg
dGVhci1kb3duIGxvZ2ljIGFzIHVzdWFsLgorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7IC4u
LiB9CisKKyAgLy8gU29tZSBleHBlbnNpdmUgcmVzb3VyY2Ugc2hhcmVkIGJ5IGFsbCB0ZXN0cy4K
KyAgc3RhdGljIFQqIHNoYXJlZF9yZXNvdXJjZV87Cit9OworCitUKiBGb29UZXN0OjpzaGFyZWRf
cmVzb3VyY2VfID0gTlVMTDsKKworVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7CisgIC4uLiB5b3Ug
Y2FuIHJlZmVyIHRvIHNoYXJlZF9yZXNvdXJjZV8gaGVyZSAuLi4KK30KKworVEVTVF9GKEZvb1Rl
c3QsIFRlc3QyKSB7CisgIC4uLiB5b3UgY2FuIHJlZmVyIHRvIHNoYXJlZF9yZXNvdXJjZV8gaGVy
ZSAuLi4KK30KK2BgYAorCitOT1RFOiBUaG91Z2ggdGhlIGFib3ZlIGNvZGUgZGVjbGFyZXMgYFNl
dFVwVGVzdENhc2UoKWAgcHJvdGVjdGVkLCBpdCBtYXkKK3NvbWV0aW1lcyBiZSBuZWNlc3Nhcnkg
dG8gZGVjbGFyZSBpdCBwdWJsaWMsIHN1Y2ggYXMgd2hlbiB1c2luZyBpdCB3aXRoCitgVEVTVF9Q
YC4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgR2xvYmFs
IFNldC1VcCBhbmQgVGVhci1Eb3duCisKK0p1c3QgYXMgeW91IGNhbiBkbyBzZXQtdXAgYW5kIHRl
YXItZG93biBhdCB0aGUgdGVzdCBsZXZlbCBhbmQgdGhlIHRlc3QgY2FzZQorbGV2ZWwsIHlvdSBj
YW4gYWxzbyBkbyBpdCBhdCB0aGUgdGVzdCBwcm9ncmFtIGxldmVsLiBIZXJlJ3MgaG93LgorCitG
aXJzdCwgeW91IHN1YmNsYXNzIHRoZSBgOjp0ZXN0aW5nOjpFbnZpcm9ubWVudGAgY2xhc3MgdG8g
ZGVmaW5lIGEgdGVzdAorZW52aXJvbm1lbnQsIHdoaWNoIGtub3dzIGhvdyB0byBzZXQtdXAgYW5k
IHRlYXItZG93bjoKKworYGBgYysrCitjbGFzcyBFbnZpcm9ubWVudCB7CisgcHVibGljOgorICB2
aXJ0dWFsIH5FbnZpcm9ubWVudCgpIHt9CisKKyAgLy8gT3ZlcnJpZGUgdGhpcyB0byBkZWZpbmUg
aG93IHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQuCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHt9
CisKKyAgLy8gT3ZlcnJpZGUgdGhpcyB0byBkZWZpbmUgaG93IHRvIHRlYXIgZG93biB0aGUgZW52
aXJvbm1lbnQuCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHt9Cit9OworYGBgCisKK1RoZW4s
IHlvdSByZWdpc3RlciBhbiBpbnN0YW5jZSBvZiB5b3VyIGVudmlyb25tZW50IGNsYXNzIHdpdGgg
Z29vZ2xldGVzdCBieQorY2FsbGluZyB0aGUgYDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmly
b25tZW50KClgIGZ1bmN0aW9uOgorCitgYGBjKysKK0Vudmlyb25tZW50KiBBZGRHbG9iYWxUZXN0
RW52aXJvbm1lbnQoRW52aXJvbm1lbnQqIGVudik7CitgYGAKKworTm93LCB3aGVuIGBSVU5fQUxM
X1RFU1RTKClgIGlzIGNhbGxlZCwgaXQgZmlyc3QgY2FsbHMgdGhlIGBTZXRVcCgpYCBtZXRob2Qg
b2YKK3RoZSBlbnZpcm9ubWVudCBvYmplY3QsIHRoZW4gcnVucyB0aGUgdGVzdHMgaWYgdGhlcmUg
d2FzIG5vIGZhdGFsIGZhaWx1cmVzLCBhbmQKK2ZpbmFsbHkgY2FsbHMgYFRlYXJEb3duKClgIG9m
IHRoZSBlbnZpcm9ubWVudCBvYmplY3QuCisKK0l0J3MgT0sgdG8gcmVnaXN0ZXIgbXVsdGlwbGUg
ZW52aXJvbm1lbnQgb2JqZWN0cy4gSW4gdGhpcyBjYXNlLCB0aGVpciBgU2V0VXAoKWAKK3dpbGwg
YmUgY2FsbGVkIGluIHRoZSBvcmRlciB0aGV5IGFyZSByZWdpc3RlcmVkLCBhbmQgdGhlaXIgYFRl
YXJEb3duKClgIHdpbGwgYmUKK2NhbGxlZCBpbiB0aGUgcmV2ZXJzZSBvcmRlci4KKworTm90ZSB0
aGF0IGdvb2dsZXRlc3QgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSByZWdpc3RlcmVkIGVudmlyb25t
ZW50IG9iamVjdHMuCitUaGVyZWZvcmUgKipkbyBub3QgZGVsZXRlIHRoZW0qKiBieSB5b3Vyc2Vs
Zi4KKworWW91IHNob3VsZCBjYWxsIGBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgYmVmb3Jl
IGBSVU5fQUxMX1RFU1RTKClgIGlzIGNhbGxlZCwKK3Byb2JhYmx5IGluIGBtYWluKClgLiBJZiB5
b3UgdXNlIGBndGVzdF9tYWluYCwgeW91IG5lZWQgdG8gY2FsbCB0aGlzIGJlZm9yZQorYG1haW4o
KWAgc3RhcnRzIGZvciBpdCB0byB0YWtlIGVmZmVjdC4gT25lIHdheSB0byBkbyB0aGlzIGlzIHRv
IGRlZmluZSBhIGdsb2JhbAordmFyaWFibGUgbGlrZSB0aGlzOgorCitgYGBjKysKKzo6dGVzdGlu
Zzo6RW52aXJvbm1lbnQqIGNvbnN0IGZvb19lbnYgPQorICAgIDo6dGVzdGluZzo6QWRkR2xvYmFs
VGVzdEVudmlyb25tZW50KG5ldyBGb29FbnZpcm9ubWVudCk7CitgYGAKKworSG93ZXZlciwgd2Ug
c3Ryb25nbHkgcmVjb21tZW5kIHlvdSB0byB3cml0ZSB5b3VyIG93biBgbWFpbigpYCBhbmQgY2Fs
bAorYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCB0aGVyZSwgYXMgcmVseWluZyBvbiBpbml0
aWFsaXphdGlvbiBvZiBnbG9iYWwKK3ZhcmlhYmxlcyBtYWtlcyB0aGUgY29kZSBoYXJkZXIgdG8g
cmVhZCBhbmQgbWF5IGNhdXNlIHByb2JsZW1zIHdoZW4geW91IHJlZ2lzdGVyCittdWx0aXBsZSBl
bnZpcm9ubWVudHMgZnJvbSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMgYW5kIHRoZSBlbnZp
cm9ubWVudHMgaGF2ZQorZGVwZW5kZW5jaWVzIGFtb25nIHRoZW0gKHJlbWVtYmVyIHRoYXQgdGhl
IGNvbXBpbGVyIGRvZXNuJ3QgZ3VhcmFudGVlIHRoZSBvcmRlcgoraW4gd2hpY2ggZ2xvYmFsIHZh
cmlhYmxlcyBmcm9tIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cyBhcmUgaW5pdGlhbGl6ZWQp
LgorCisjIyBWYWx1ZS1QYXJhbWV0ZXJpemVkIFRlc3RzCisKKypWYWx1ZS1wYXJhbWV0ZXJpemVk
IHRlc3RzKiBhbGxvdyB5b3UgdG8gdGVzdCB5b3VyIGNvZGUgd2l0aCBkaWZmZXJlbnQKK3BhcmFt
ZXRlcnMgd2l0aG91dCB3cml0aW5nIG11bHRpcGxlIGNvcGllcyBvZiB0aGUgc2FtZSB0ZXN0LiBU
aGlzIGlzIHVzZWZ1bCBpbiBhCitudW1iZXIgb2Ygc2l0dWF0aW9ucywgZm9yIGV4YW1wbGU6CisK
KyogICBZb3UgaGF2ZSBhIHBpZWNlIG9mIGNvZGUgd2hvc2UgYmVoYXZpb3IgaXMgYWZmZWN0ZWQg
Ynkgb25lIG9yIG1vcmUKKyAgICBjb21tYW5kLWxpbmUgZmxhZ3MuIFlvdSB3YW50IHRvIG1ha2Ug
c3VyZSB5b3VyIGNvZGUgcGVyZm9ybXMgY29ycmVjdGx5IGZvcgorICAgIHZhcmlvdXMgdmFsdWVz
IG9mIHRob3NlIGZsYWdzLgorKiAgIFlvdSB3YW50IHRvIHRlc3QgZGlmZmVyZW50IGltcGxlbWVu
dGF0aW9ucyBvZiBhbiBPTyBpbnRlcmZhY2UuCisqICAgWW91IHdhbnQgdG8gdGVzdCB5b3VyIGNv
ZGUgb3ZlciB2YXJpb3VzIGlucHV0cyAoYS5rLmEuIGRhdGEtZHJpdmVuIHRlc3RpbmcpLgorICAg
IFRoaXMgZmVhdHVyZSBpcyBlYXN5IHRvIGFidXNlLCBzbyBwbGVhc2UgZXhlcmNpc2UgeW91ciBn
b29kIHNlbnNlIHdoZW4gZG9pbmcKKyAgICBpdCEKKworIyMjIEhvdyB0byBXcml0ZSBWYWx1ZS1Q
YXJhbWV0ZXJpemVkIFRlc3RzCisKK1RvIHdyaXRlIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMs
IGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4dHVyZSBjbGFzcy4gSXQKK211c3QgYmUgZGVy
aXZlZCBmcm9tIGJvdGggYDo6dGVzdGluZzo6VGVzdGAgYW5kCitgOjp0ZXN0aW5nOjpXaXRoUGFy
YW1JbnRlcmZhY2U8VD5gICh0aGUgbGF0dGVyIGlzIGEgcHVyZSBpbnRlcmZhY2UpLCB3aGVyZSBg
VGAKK2lzIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVlcy4gRm9yIGNvbnZlbmllbmNl
LCB5b3UgY2FuIGp1c3QgZGVyaXZlIHRoZQorZml4dHVyZSBjbGFzcyBmcm9tIGA6OnRlc3Rpbmc6
OlRlc3RXaXRoUGFyYW08VD5gLCB3aGljaCBpdHNlbGYgaXMgZGVyaXZlZCBmcm9tCitib3RoIGA6
OnRlc3Rpbmc6OlRlc3RgIGFuZCBgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD5gLiBg
VGAgY2FuIGJlIGFueQorY29weWFibGUgdHlwZS4gSWYgaXQncyBhIHJhdyBwb2ludGVyLCB5b3Ug
YXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUKK2xpZmVzcGFuIG9mIHRoZSBwb2ludGVk
IHZhbHVlcy4KKworTk9URTogSWYgeW91ciB0ZXN0IGZpeHR1cmUgZGVmaW5lcyBgU2V0VXBUZXN0
Q2FzZSgpYCBvciBgVGVhckRvd25UZXN0Q2FzZSgpYAordGhleSBtdXN0IGJlIGRlY2xhcmVkICoq
cHVibGljKiogcmF0aGVyIHRoYW4gKipwcm90ZWN0ZWQqKiBpbiBvcmRlciB0byB1c2UKK2BURVNU
X1BgLgorCitgYGBjKysKK2NsYXNzIEZvb1Rlc3QgOgorICAgIHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3RXaXRoUGFyYW08Y29uc3QgY2hhcio+IHsKKyAgLy8gWW91IGNhbiBpbXBsZW1lbnQgYWxsIHRo
ZSB1c3VhbCBmaXh0dXJlIGNsYXNzIG1lbWJlcnMgaGVyZS4KKyAgLy8gVG8gYWNjZXNzIHRoZSB0
ZXN0IHBhcmFtZXRlciwgY2FsbCBHZXRQYXJhbSgpIGZyb20gY2xhc3MKKyAgLy8gVGVzdFdpdGhQ
YXJhbTxUPi4KK307CisKKy8vIE9yLCB3aGVuIHlvdSB3YW50IHRvIGFkZCBwYXJhbWV0ZXJzIHRv
IGEgcHJlLWV4aXN0aW5nIGZpeHR1cmUgY2xhc3M6CitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6
OnRlc3Rpbmc6OlRlc3QgeworICAuLi4KK307CitjbGFzcyBCYXJUZXN0IDogcHVibGljIEJhc2VU
ZXN0LAorICAgICAgICAgICAgICAgIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFj
ZTxjb25zdCBjaGFyKj4geworICAuLi4KK307CitgYGAKKworVGhlbiwgdXNlIHRoZSBgVEVTVF9Q
YCBtYWNybyB0byBkZWZpbmUgYXMgbWFueSB0ZXN0IHBhdHRlcm5zIHVzaW5nIHRoaXMgZml4dHVy
ZQorYXMgeW91IHdhbnQuIFRoZSBgX1BgIHN1ZmZpeCBpcyBmb3IgInBhcmFtZXRlcml6ZWQiIG9y
ICJwYXR0ZXJuIiwgd2hpY2hldmVyIHlvdQorcHJlZmVyIHRvIHRoaW5rLgorCitgYGBjKysKK1RF
U1RfUChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJbnNpZGUgYSB0ZXN0LCBhY2Nlc3MgdGhl
IHRlc3QgcGFyYW1ldGVyIHdpdGggdGhlIEdldFBhcmFtKCkgbWV0aG9kCisgIC8vIG9mIHRoZSBU
ZXN0V2l0aFBhcmFtPFQ+IGNsYXNzOgorICBFWFBFQ1RfVFJVRShmb28uQmxhaChHZXRQYXJhbSgp
KSk7CisgIC4uLgorfQorCitURVNUX1AoRm9vVGVzdCwgSGFzQmxhaEJsYWgpIHsKKyAgLi4uCit9
CitgYGAKKworRmluYWxseSwgeW91IGNhbiB1c2UgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCB0
byBpbnN0YW50aWF0ZSB0aGUgdGVzdCBjYXNlIHdpdGgKK2FueSBzZXQgb2YgcGFyYW1ldGVycyB5
b3Ugd2FudC4gZ29vZ2xldGVzdCBkZWZpbmVzIGEgbnVtYmVyIG9mIGZ1bmN0aW9ucyBmb3IKK2dl
bmVyYXRpbmcgdGVzdCBwYXJhbWV0ZXJzLiBUaGV5IHJldHVybiB3aGF0IHdlIGNhbGwgKHN1cnBy
aXNlISkgKnBhcmFtZXRlcgorZ2VuZXJhdG9ycyouIEhlcmUgaXMgYSBzdW1tYXJ5IG9mIHRoZW0s
IHdoaWNoIGFyZSBhbGwgaW4gdGhlIGB0ZXN0aW5nYAorbmFtZXNwYWNlOgorCit8IFBhcmFtZXRl
ciBHZW5lcmF0b3IgICAgICAgICAgfCBCZWhhdmlvciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKK3wgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAorfCBgUmFuZ2UoYmVnaW4sIGVuZCBb
LCBzdGVwXSlgIHwgWWllbGRzIHZhbHVlcyBge2JlZ2luLCBiZWdpbitzdGVwLCBiZWdpbitzdGVw
K3N0ZXAsIC4uLn1gLiBUaGUgdmFsdWVzIGRvIG5vdCBpbmNsdWRlIGBlbmRgLiBgc3RlcGAgZGVm
YXVsdHMgdG8gMS4gICAgICB8Cit8IGBWYWx1ZXModjEsIHYyLCAuLi4sIHZOKWAgICAgfCBZaWVs
ZHMgdmFsdWVzIGB7djEsIHYyLCAuLi4sIHZOfWAuICAgICAgICAgIHwKK3wgYFZhbHVlc0luKGNv
bnRhaW5lcilgIGFuZCBgVmFsdWVzSW4oYmVnaW4sZW5kKWAgICB8IFlpZWxkcyB2YWx1ZXMgZnJv
bSBhIEMtc3R5bGUgYXJyYXksIGFuIFNUTC1zdHlsZSBjb250YWluZXIsIG9yIGFuIGl0ZXJhdG9y
IHJhbmdlICBgW2JlZ2luLCBlbmQpYC4gfAorfCBgQm9vbCgpYCAgICAgICAgICAgICAgICAgICAg
IHwgWWllbGRzIHNlcXVlbmNlIGB7ZmFsc2UsIHRydWV9YC4gICAgICAgICAgICB8Cit8IGBDb21i
aW5lKGcxLCBnMiwgLi4uLCBnTilgICAgfCBZaWVsZHMgYWxsIGNvbWJpbmF0aW9ucyAoQ2FydGVz
aWFuIHByb2R1Y3QpIGFzIHN0ZFw6XDp0dXBsZXMgb2YgdGhlIHZhbHVlcyBnZW5lcmF0ZWQgYnkg
dGhlIGBOYCBnZW5lcmF0b3JzLiAgICAgICAgICAgIHwKKworRm9yIG1vcmUgZGV0YWlscywgc2Vl
IHRoZSBjb21tZW50cyBhdCB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlc2UgZnVuY3Rpb25zLgorCitU
aGUgZm9sbG93aW5nIHN0YXRlbWVudCB3aWxsIGluc3RhbnRpYXRlIHRlc3RzIGZyb20gdGhlIGBG
b29UZXN0YCB0ZXN0IGNhc2UgZWFjaAord2l0aCBwYXJhbWV0ZXIgdmFsdWVzIGAibWVlbnkiYCwg
YCJtaW55ImAsIGFuZCBgIm1vZSJgLgorCitgYGBjKysKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KEluc3RhbnRpYXRpb25OYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgRm9vVGVzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKCJtZWVueSIsICJtaW55Iiwg
Im1vZSIpKTsKK2BgYAorCitOT1RFOiBUaGUgY29kZSBhYm92ZSBtdXN0IGJlIHBsYWNlZCBhdCBn
bG9iYWwgb3IgbmFtZXNwYWNlIHNjb3BlLCBub3QgYXQKK2Z1bmN0aW9uIHNjb3BlLgorCitOT1RF
OiBEb24ndCBmb3JnZXQgdGhpcyBzdGVwISBJZiB5b3UgZG8geW91ciB0ZXN0IHdpbGwgc2lsZW50
bHkgcGFzcywgYnV0IG5vbmUKK29mIGl0cyBjYXNlcyB3aWxsIGV2ZXIgcnVuIQorCitUbyBkaXN0
aW5ndWlzaCBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIHRoZSBwYXR0ZXJuICh5ZXMsIHlvdSBjYW4g
aW5zdGFudGlhdGUgaXQKK21vcmUgdGhhbiBvbmNlKSwgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIGBJ
TlNUQU5USUFURV9URVNUX0NBU0VfUGAgaXMgYSBwcmVmaXgKK3RoYXQgd2lsbCBiZSBhZGRlZCB0
byB0aGUgYWN0dWFsIHRlc3QgY2FzZSBuYW1lLiBSZW1lbWJlciB0byBwaWNrIHVuaXF1ZQorcHJl
Zml4ZXMgZm9yIGRpZmZlcmVudCBpbnN0YW50aWF0aW9ucy4gVGhlIHRlc3RzIGZyb20gdGhlIGlu
c3RhbnRpYXRpb24gYWJvdmUKK3dpbGwgaGF2ZSB0aGVzZSBuYW1lczoKKworKiAgIGBJbnN0YW50
aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzBgIGZvciBgIm1lZW55ImAKKyogICBgSW5zdGFu
dGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8xYCBmb3IgYCJtaW55ImAKKyogICBgSW5zdGFu
dGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8yYCBmb3IgYCJtb2UiYAorKiAgIGBJbnN0YW50
aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzBgIGZvciBgIm1lZW55ImAKKyogICBgSW5z
dGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8xYCBmb3IgYCJtaW55ImAKKyogICBg
SW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8yYCBmb3IgYCJtb2UiYAorCitZ
b3UgY2FuIHVzZSB0aGVzZSBuYW1lcyBpbiBbYC0tZ3Rlc3RfZmlsdGVyYF0oI3J1bm5pbmctYS1z
dWJzZXQtb2YtdGhlLXRlc3RzKS4KKworVGhpcyBzdGF0ZW1lbnQgd2lsbCBpbnN0YW50aWF0ZSBh
bGwgdGVzdHMgZnJvbSBgRm9vVGVzdGAgYWdhaW4sIGVhY2ggd2l0aAorcGFyYW1ldGVyIHZhbHVl
cyBgImNhdCJgIGFuZCBgImRvZyJgOgorCitgYGBjKysKK2NvbnN0IGNoYXIqIHBldHNbXSA9IHsi
Y2F0IiwgImRvZyJ9OworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQW5vdGhlckluc3RhbnRpYXRp
b25OYW1lLCBGb29UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1
ZXNJbihwZXRzKSk7CitgYGAKKworVGhlIHRlc3RzIGZyb20gdGhlIGluc3RhbnRpYXRpb24gYWJv
dmUgd2lsbCBoYXZlIHRoZXNlIG5hbWVzOgorCisqICAgYEFub3RoZXJJbnN0YW50aWF0aW9uTmFt
ZS9Gb29UZXN0LkRvZXNCbGFoLzBgIGZvciBgImNhdCJgCisqICAgYEFub3RoZXJJbnN0YW50aWF0
aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzFgIGZvciBgImRvZyJgCisqICAgYEFub3RoZXJJbnN0
YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzBgIGZvciBgImNhdCJgCisqICAgYEFu
b3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzFgIGZvciBgImRvZyJg
CisKK1BsZWFzZSBub3RlIHRoYXQgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCB3aWxsIGluc3Rh
bnRpYXRlICphbGwqIHRlc3RzIGluIHRoZQorZ2l2ZW4gdGVzdCBjYXNlLCB3aGV0aGVyIHRoZWly
IGRlZmluaXRpb25zIGNvbWUgYmVmb3JlIG9yICphZnRlciogdGhlCitgSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1BgIHN0YXRlbWVudC4KKworWW91IGNhbiBzZWUgc2FtcGxlN191bml0dGVzdC5jYyBh
bmQgc2FtcGxlOF91bml0dGVzdC5jYyBmb3IgbW9yZSBleGFtcGxlcy4KKworKipBdmFpbGFiaWxp
dHkqKjogTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFjCisK
KyMjIyBDcmVhdGluZyBWYWx1ZS1QYXJhbWV0ZXJpemVkIEFic3RyYWN0IFRlc3RzCisKK0luIHRo
ZSBhYm92ZSwgd2UgZGVmaW5lIGFuZCBpbnN0YW50aWF0ZSBgRm9vVGVzdGAgaW4gdGhlICpzYW1l
KiBzb3VyY2UgZmlsZS4KK1NvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gZGVmaW5lIHZhbHVlLXBh
cmFtZXRlcml6ZWQgdGVzdHMgaW4gYSBsaWJyYXJ5IGFuZCBsZXQKK290aGVyIHBlb3BsZSBpbnN0
YW50aWF0ZSB0aGVtIGxhdGVyLiBUaGlzIHBhdHRlcm4gaXMga25vd24gYXMgKmFic3RyYWN0IHRl
c3RzKi4KK0FzIGFuIGV4YW1wbGUgb2YgaXRzIGFwcGxpY2F0aW9uLCB3aGVuIHlvdSBhcmUgZGVz
aWduaW5nIGFuIGludGVyZmFjZSB5b3UgY2FuCit3cml0ZSBhIHN0YW5kYXJkIHN1aXRlIG9mIGFi
c3RyYWN0IHRlc3RzIChwZXJoYXBzIHVzaW5nIGEgZmFjdG9yeSBmdW5jdGlvbiBhcwordGhlIHRl
c3QgcGFyYW1ldGVyKSB0aGF0IGFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGludGVyZmFjZSBh
cmUgZXhwZWN0ZWQgdG8KK3Bhc3MuIFdoZW4gc29tZW9uZSBpbXBsZW1lbnRzIHRoZSBpbnRlcmZh
Y2UsIHRoZXkgY2FuIGluc3RhbnRpYXRlIHlvdXIgc3VpdGUgdG8KK2dldCBhbGwgdGhlIGludGVy
ZmFjZS1jb25mb3JtYW5jZSB0ZXN0cyBmb3IgZnJlZS4KKworVG8gZGVmaW5lIGFic3RyYWN0IHRl
c3RzLCB5b3Ugc2hvdWxkIG9yZ2FuaXplIHlvdXIgY29kZSBsaWtlIHRoaXM6CisKKzEuICBQdXQg
dGhlIGRlZmluaXRpb24gb2YgdGhlIHBhcmFtZXRlcml6ZWQgdGVzdCBmaXh0dXJlIGNsYXNzIChl
LmcuIGBGb29UZXN0YCkKKyAgICBpbiBhIGhlYWRlciBmaWxlLCBzYXkgYGZvb19wYXJhbV90ZXN0
LmhgLiBUaGluayBvZiB0aGlzIGFzICpkZWNsYXJpbmcqIHlvdXIKKyAgICBhYnN0cmFjdCB0ZXN0
cy4KKzEuICBQdXQgdGhlIGBURVNUX1BgIGRlZmluaXRpb25zIGluIGBmb29fcGFyYW1fdGVzdC5j
Y2AsIHdoaWNoIGluY2x1ZGVzCisgICAgYGZvb19wYXJhbV90ZXN0LmhgLiBUaGluayBvZiB0aGlz
IGFzICppbXBsZW1lbnRpbmcqIHlvdXIgYWJzdHJhY3QgdGVzdHMuCisKK09uY2UgdGhleSBhcmUg
ZGVmaW5lZCwgeW91IGNhbiBpbnN0YW50aWF0ZSB0aGVtIGJ5IGluY2x1ZGluZyBgZm9vX3BhcmFt
X3Rlc3QuaGAsCitpbnZva2luZyBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoKWAsIGFuZCBkZXBl
bmRpbmcgb24gdGhlIGxpYnJhcnkgdGFyZ2V0IHRoYXQKK2NvbnRhaW5zIGBmb29fcGFyYW1fdGVz
dC5jY2AuIFlvdSBjYW4gaW5zdGFudGlhdGUgdGhlIHNhbWUgYWJzdHJhY3QgdGVzdCBjYXNlCitt
dWx0aXBsZSB0aW1lcywgcG9zc2libHkgaW4gZGlmZmVyZW50IHNvdXJjZSBmaWxlcy4KKworIyMj
IFNwZWNpZnlpbmcgTmFtZXMgZm9yIFZhbHVlLVBhcmFtZXRlcml6ZWQgVGVzdCBQYXJhbWV0ZXJz
CisKK1RoZSBvcHRpb25hbCBsYXN0IGFyZ3VtZW50IHRvIGBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UCgpYCBhbGxvd3MgdGhlIHVzZXIgdG8KK3NwZWNpZnkgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHRo
YXQgZ2VuZXJhdGVzIGN1c3RvbSB0ZXN0IG5hbWUgc3VmZml4ZXMgYmFzZWQgb24KK3RoZSB0ZXN0
IHBhcmFtZXRlcnMuIFRoZSBmdW5jdGlvbiBzaG91bGQgYWNjZXB0IG9uZSBhcmd1bWVudCBvZiB0
eXBlCitgdGVzdGluZzo6VGVzdFBhcmFtSW5mbzxjbGFzcyBQYXJhbVR5cGU+YCwgYW5kIHJldHVy
biBgc3RkOjpzdHJpbmdgLgorCitgdGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZWAgaXMg
YSBidWlsdGluIHRlc3Qgc3VmZml4IGdlbmVyYXRvciB0aGF0CityZXR1cm5zIHRoZSB2YWx1ZSBv
ZiBgdGVzdGluZzo6UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgpKWAuIEl0IGRvZXMgbm90IHdvcmsg
Zm9yCitgc3RkOjpzdHJpbmdgIG9yIEMgc3RyaW5ncy4KKworTk9URTogdGVzdCBuYW1lcyBtdXN0
IGJlIG5vbi1lbXB0eSwgdW5pcXVlLCBhbmQgbWF5IG9ubHkgY29udGFpbiBBU0NJSQorYWxwaGFu
dW1lcmljIGNoYXJhY3RlcnMuIEluIHBhcnRpY3VsYXIsIHRoZXkgW3Nob3VsZCBub3QgY29udGFp
bgordW5kZXJzY29yZXNdKGh0dHBzOi8vZzNkb2MuY29ycC5nb29nbGUuY29tL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9nM2RvYy9mYXEubWQjbm8tdW5kZXJzY29yZXMpLgorCitg
YGBjKysKK2NsYXNzIE15VGVzdENhc2UgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxp
bnQ+IHt9OworCitURVNUX1AoTXlUZXN0Q2FzZSwgTXlUZXN0KQoreworICBzdGQ6OmNvdXQgPDwg
IkV4YW1wbGUgVGVzdCBQYXJhbTogIiA8PCBHZXRQYXJhbSgpIDw8IHN0ZDo6ZW5kbDsKK30KKwor
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoTXlHcm91cCwgTXlUZXN0Q2FzZSwgdGVzdGluZzo6UmFu
Z2UoMCwgMTApLAorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6UHJpbnRUb1N0cmlu
Z1BhcmFtTmFtZSgpKTsKK2BgYAorCisjIyBUeXBlZCBUZXN0czwvaWQ+CisKK1N1cHBvc2UgeW91
IGhhdmUgbXVsdGlwbGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBzYW1lIGludGVyZmFjZSBhbmQg
d2FudCB0byBtYWtlCitzdXJlIHRoYXQgYWxsIG9mIHRoZW0gc2F0aXNmeSBzb21lIGNvbW1vbiBy
ZXF1aXJlbWVudHMuIE9yLCB5b3UgbWF5IGhhdmUgZGVmaW5lZAorc2V2ZXJhbCB0eXBlcyB0aGF0
IGFyZSBzdXBwb3NlZCB0byBjb25mb3JtIHRvIHRoZSBzYW1lICJjb25jZXB0IiBhbmQgeW91IHdh
bnQgdG8KK3ZlcmlmeSBpdC4gSW4gYm90aCBjYXNlcywgeW91IHdhbnQgdGhlIHNhbWUgdGVzdCBs
b2dpYyByZXBlYXRlZCBmb3IgZGlmZmVyZW50Cit0eXBlcy4KKworV2hpbGUgeW91IGNhbiB3cml0
ZSBvbmUgYFRFU1RgIG9yIGBURVNUX0ZgIGZvciBlYWNoIHR5cGUgeW91IHdhbnQgdG8gdGVzdCAo
YW5kCit5b3UgbWF5IGV2ZW4gZmFjdG9yIHRoZSB0ZXN0IGxvZ2ljIGludG8gYSBmdW5jdGlvbiB0
ZW1wbGF0ZSB0aGF0IHlvdSBpbnZva2UgZnJvbQordGhlIGBURVNUYCksIGl0J3MgdGVkaW91cyBh
bmQgZG9lc24ndCBzY2FsZTogaWYgeW91IHdhbnQgYG1gIHRlc3RzIG92ZXIgYG5gCit0eXBlcywg
eW91J2xsIGVuZCB1cCB3cml0aW5nIGBtKm5gIGBURVNUYHMuCisKKypUeXBlZCB0ZXN0cyogYWxs
b3cgeW91IHRvIHJlcGVhdCB0aGUgc2FtZSB0ZXN0IGxvZ2ljIG92ZXIgYSBsaXN0IG9mIHR5cGVz
LiBZb3UKK29ubHkgbmVlZCB0byB3cml0ZSB0aGUgdGVzdCBsb2dpYyBvbmNlLCBhbHRob3VnaCB5
b3UgbXVzdCBrbm93IHRoZSB0eXBlIGxpc3QKK3doZW4gd3JpdGluZyB0eXBlZCB0ZXN0cy4gSGVy
ZSdzIGhvdyB5b3UgZG8gaXQ6CisKK0ZpcnN0LCBkZWZpbmUgYSBmaXh0dXJlIGNsYXNzIHRlbXBs
YXRlLiBJdCBzaG91bGQgYmUgcGFyYW1ldGVyaXplZCBieSBhIHR5cGUuCitSZW1lbWJlciB0byBk
ZXJpdmUgaXQgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0YDoKKworYGBgYysrCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwdWJs
aWM6CisgIC4uLgorICB0eXBlZGVmIHN0ZDo6bGlzdDxUPiBMaXN0OworICBzdGF0aWMgVCBzaGFy
ZWRfOworICBUIHZhbHVlXzsKK307CitgYGAKKworTmV4dCwgYXNzb2NpYXRlIGEgbGlzdCBvZiB0
eXBlcyB3aXRoIHRoZSB0ZXN0IGNhc2UsIHdoaWNoIHdpbGwgYmUgcmVwZWF0ZWQgZm9yCitlYWNo
IHR5cGUgaW4gdGhlIGxpc3Q6CisKK2BgYGMrKwordXNpbmcgTXlUeXBlcyA9IDo6dGVzdGluZzo6
VHlwZXM8Y2hhciwgaW50LCB1bnNpZ25lZCBpbnQ+OworVFlQRURfVEVTVF9DQVNFKEZvb1Rlc3Qs
IE15VHlwZXMpOworYGBgCisKK1RoZSB0eXBlIGFsaWFzIChgdXNpbmdgIG9yIGB0eXBlZGVmYCkg
aXMgbmVjZXNzYXJ5IGZvciB0aGUgYFRZUEVEX1RFU1RfQ0FTRWAKK21hY3JvIHRvIHBhcnNlIGNv
cnJlY3RseS4gT3RoZXJ3aXNlIHRoZSBjb21waWxlciB3aWxsIHRoaW5rIHRoYXQgZWFjaCBjb21t
YSBpbgordGhlIHR5cGUgbGlzdCBpbnRyb2R1Y2VzIGEgbmV3IG1hY3JvIGFyZ3VtZW50LgorCitU
aGVuLCB1c2UgYFRZUEVEX1RFU1QoKWAgaW5zdGVhZCBvZiBgVEVTVF9GKClgIHRvIGRlZmluZSBh
IHR5cGVkIHRlc3QgZm9yIHRoaXMKK3Rlc3QgY2FzZS4gWW91IGNhbiByZXBlYXQgdGhpcyBhcyBt
YW55IHRpbWVzIGFzIHlvdSB3YW50OgorCitgYGBjKysKK1RZUEVEX1RFU1QoRm9vVGVzdCwgRG9l
c0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIgdG8gdGhlIHNwZWNpYWwgbmFtZSBU
eXBlUGFyYW0gdG8gZ2V0IHRoZSB0eXBlCisgIC8vIHBhcmFtZXRlci4gIFNpbmNlIHdlIGFyZSBp
bnNpZGUgYSBkZXJpdmVkIGNsYXNzIHRlbXBsYXRlLCBDKysgcmVxdWlyZXMKKyAgLy8gdXMgdG8g
dmlzaXQgdGhlIG1lbWJlcnMgb2YgRm9vVGVzdCB2aWEgJ3RoaXMnLgorICBUeXBlUGFyYW0gbiA9
IHRoaXMtPnZhbHVlXzsKKworICAvLyBUbyB2aXNpdCBzdGF0aWMgbWVtYmVycyBvZiB0aGUgZml4
dHVyZSwgYWRkIHRoZSAnVGVzdEZpeHR1cmU6OicKKyAgLy8gcHJlZml4LgorICBuICs9IFRlc3RG
aXh0dXJlOjpzaGFyZWRfOworCisgIC8vIFRvIHJlZmVyIHRvIHR5cGVkZWZzIGluIHRoZSBmaXh0
dXJlLCBhZGQgdGhlICd0eXBlbmFtZSBUZXN0Rml4dHVyZTo6JworICAvLyBwcmVmaXguICBUaGUg
J3R5cGVuYW1lJyBpcyByZXF1aXJlZCB0byBzYXRpc2Z5IHRoZSBjb21waWxlci4KKyAgdHlwZW5h
bWUgVGVzdEZpeHR1cmU6Okxpc3QgdmFsdWVzOworCisgIHZhbHVlcy5wdXNoX2JhY2sobik7Cisg
IC4uLgorfQorCitUWVBFRF9URVNUKEZvb1Rlc3QsIEhhc1Byb3BlcnR5QSkgeyAuLi4gfQorYGBg
CisKK1lvdSBjYW4gc2VlIHNhbXBsZTZfdW5pdHRlc3QuY2MKKworKipBdmFpbGFiaWxpdHkqKjog
TGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFjCisKKyMjIFR5
cGUtUGFyYW1ldGVyaXplZCBUZXN0cworCisqVHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzKiBhcmUg
bGlrZSB0eXBlZCB0ZXN0cywgZXhjZXB0IHRoYXQgdGhleSBkb24ndCByZXF1aXJlCit5b3UgdG8g
a25vdyB0aGUgbGlzdCBvZiB0eXBlcyBhaGVhZCBvZiB0aW1lLiBJbnN0ZWFkLCB5b3UgY2FuIGRl
ZmluZSB0aGUgdGVzdAorbG9naWMgZmlyc3QgYW5kIGluc3RhbnRpYXRlIGl0IHdpdGggZGlmZmVy
ZW50IHR5cGUgbGlzdHMgbGF0ZXIuIFlvdSBjYW4gZXZlbgoraW5zdGFudGlhdGUgaXQgbW9yZSB0
aGFuIG9uY2UgaW4gdGhlIHNhbWUgcHJvZ3JhbS4KKworSWYgeW91IGFyZSBkZXNpZ25pbmcgYW4g
aW50ZXJmYWNlIG9yIGNvbmNlcHQsIHlvdSBjYW4gZGVmaW5lIGEgc3VpdGUgb2YKK3R5cGUtcGFy
YW1ldGVyaXplZCB0ZXN0cyB0byB2ZXJpZnkgcHJvcGVydGllcyB0aGF0IGFueSB2YWxpZCBpbXBs
ZW1lbnRhdGlvbiBvZgordGhlIGludGVyZmFjZS9jb25jZXB0IHNob3VsZCBoYXZlLiBUaGVuLCB0
aGUgYXV0aG9yIG9mIGVhY2ggaW1wbGVtZW50YXRpb24gY2FuCitqdXN0IGluc3RhbnRpYXRlIHRo
ZSB0ZXN0IHN1aXRlIHdpdGggdGhlaXIgdHlwZSB0byB2ZXJpZnkgdGhhdCBpdCBjb25mb3JtcyB0
bwordGhlIHJlcXVpcmVtZW50cywgd2l0aG91dCBoYXZpbmcgdG8gd3JpdGUgc2ltaWxhciB0ZXN0
cyByZXBlYXRlZGx5LiBIZXJlJ3MgYW4KK2V4YW1wbGU6CisKK0ZpcnN0LCBkZWZpbmUgYSBmaXh0
dXJlIGNsYXNzIHRlbXBsYXRlLCBhcyB3ZSBkaWQgd2l0aCB0eXBlZCB0ZXN0czoKKworYGBgYysr
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0IHsKKyAgLi4uCit9OworYGBgCisKK05leHQsIGRlY2xhcmUgdGhhdCB5b3Ugd2lsbCBk
ZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlOgorCitgYGBjKysKK1RZUEVEX1RF
U1RfQ0FTRV9QKEZvb1Rlc3QpOworYGBgCisKK1RoZW4sIHVzZSBgVFlQRURfVEVTVF9QKClgIHRv
IGRlZmluZSBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LiBZb3UgY2FuIHJlcGVhdAordGhpcyBh
cyBtYW55IHRpbWVzIGFzIHlvdSB3YW50OgorCitgYGBjKysKK1RZUEVEX1RFU1RfUChGb29UZXN0
LCBEb2VzQmxhaCkgeworICAvLyBJbnNpZGUgYSB0ZXN0LCByZWZlciB0byBUeXBlUGFyYW0gdG8g
Z2V0IHRoZSB0eXBlIHBhcmFtZXRlci4KKyAgVHlwZVBhcmFtIG4gPSAwOworICAuLi4KK30KKwor
VFlQRURfVEVTVF9QKEZvb1Rlc3QsIEhhc1Byb3BlcnR5QSkgeyAuLi4gfQorYGBgCisKK05vdyB0
aGUgdHJpY2t5IHBhcnQ6IHlvdSBuZWVkIHRvIHJlZ2lzdGVyIGFsbCB0ZXN0IHBhdHRlcm5zIHVz
aW5nIHRoZQorYFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QYCBtYWNybyBiZWZvcmUgeW91IGNh
biBpbnN0YW50aWF0ZSB0aGVtLiBUaGUgZmlyc3QKK2FyZ3VtZW50IG9mIHRoZSBtYWNybyBpcyB0
aGUgdGVzdCBjYXNlIG5hbWU7IHRoZSByZXN0IGFyZSB0aGUgbmFtZXMgb2YgdGhlIHRlc3RzCitp
biB0aGlzIHRlc3QgY2FzZToKKworYGBgYysrCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChG
b29UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9lc0JsYWgsIEhhc1Byb3BlcnR5
QSk7CitgYGAKKworRmluYWxseSwgeW91IGFyZSBmcmVlIHRvIGluc3RhbnRpYXRlIHRoZSBwYXR0
ZXJuIHdpdGggdGhlIHR5cGVzIHlvdSB3YW50LiBJZiB5b3UKK3B1dCB0aGUgYWJvdmUgY29kZSBp
biBhIGhlYWRlciBmaWxlLCB5b3UgY2FuIGAjaW5jbHVkZWAgaXQgaW4gbXVsdGlwbGUgQysrCitz
b3VyY2UgZmlsZXMgYW5kIGluc3RhbnRpYXRlIGl0IG11bHRpcGxlIHRpbWVzLgorCitgYGBjKysK
K3R5cGVkZWYgOjp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQsIHVuc2lnbmVkIGludD4gTXlUeXBl
czsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsK
K2BgYAorCitUbyBkaXN0aW5ndWlzaCBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIHRoZSBwYXR0ZXJu
LCB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlCitgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNF
X1BgIG1hY3JvIGlzIGEgcHJlZml4IHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUKK2FjdHVhbCB0
ZXN0IGNhc2UgbmFtZS4gUmVtZW1iZXIgdG8gcGljayB1bmlxdWUgcHJlZml4ZXMgZm9yIGRpZmZl
cmVudCBpbnN0YW5jZXMuCisKK0luIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhlIHR5cGUgbGlz
dCBjb250YWlucyBvbmx5IG9uZSB0eXBlLCB5b3UgY2FuIHdyaXRlCit0aGF0IHR5cGUgZGlyZWN0
bHkgd2l0aG91dCBgOjp0ZXN0aW5nOjpUeXBlczwuLi4+YCwgbGlrZSB0aGlzOgorCitgYGBjKysK
K0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBpbnQpOworYGBgCisK
K1lvdSBjYW4gc2VlIGBzYW1wbGU2X3VuaXR0ZXN0LmNjYCBmb3IgYSBjb21wbGV0ZSBleGFtcGxl
LgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAg
b3IgYWJvdmUpLCBNYWMKKworIyMgVGVzdGluZyBQcml2YXRlIENvZGUKKworSWYgeW91IGNoYW5n
ZSB5b3VyIHNvZnR3YXJlJ3MgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24sIHlvdXIgdGVzdHMgc2hv
dWxkIG5vdAorYnJlYWsgYXMgbG9uZyBhcyB0aGUgY2hhbmdlIGlzIG5vdCBvYnNlcnZhYmxlIGJ5
IHVzZXJzLiBUaGVyZWZvcmUsICoqcGVyIHRoZQorYmxhY2stYm94IHRlc3RpbmcgcHJpbmNpcGxl
LCBtb3N0IG9mIHRoZSB0aW1lIHlvdSBzaG91bGQgdGVzdCB5b3VyIGNvZGUgdGhyb3VnaAoraXRz
IHB1YmxpYyBpbnRlcmZhY2VzLioqCisKKyoqSWYgeW91IHN0aWxsIGZpbmQgeW91cnNlbGYgbmVl
ZGluZyB0byB0ZXN0IGludGVybmFsIGltcGxlbWVudGF0aW9uIGNvZGUsCitjb25zaWRlciBpZiB0
aGVyZSdzIGEgYmV0dGVyIGRlc2lnbi4qKiBUaGUgZGVzaXJlIHRvIHRlc3QgaW50ZXJuYWwKK2lt
cGxlbWVudGF0aW9uIGlzIG9mdGVuIGEgc2lnbiB0aGF0IHRoZSBjbGFzcyBpcyBkb2luZyB0b28g
bXVjaC4gQ29uc2lkZXIKK2V4dHJhY3RpbmcgYW4gaW1wbGVtZW50YXRpb24gY2xhc3MsIGFuZCB0
ZXN0aW5nIGl0LiBUaGVuIHVzZSB0aGF0IGltcGxlbWVudGF0aW9uCitjbGFzcyBpbiB0aGUgb3Jp
Z2luYWwgY2xhc3MuCisKK0lmIHlvdSBhYnNvbHV0ZWx5IGhhdmUgdG8gdGVzdCBub24tcHVibGlj
IGludGVyZmFjZSBjb2RlIHRob3VnaCwgeW91IGNhbi4gVGhlcmUKK2FyZSB0d28gY2FzZXMgdG8g
Y29uc2lkZXI6CisKKyogICBTdGF0aWMgZnVuY3Rpb25zICggKm5vdCogdGhlIHNhbWUgYXMgc3Rh
dGljIG1lbWJlciBmdW5jdGlvbnMhKSBvciB1bm5hbWVkCisgICAgbmFtZXNwYWNlcywgYW5kCisq
ICAgUHJpdmF0ZSBvciBwcm90ZWN0ZWQgY2xhc3MgbWVtYmVycworCitUbyB0ZXN0IHRoZW0sIHdl
IHVzZSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgdGVjaG5pcXVlczoKKworKiAgIEJvdGggc3RhdGlj
IGZ1bmN0aW9ucyBhbmQgZGVmaW5pdGlvbnMvZGVjbGFyYXRpb25zIGluIGFuIHVubmFtZWQgbmFt
ZXNwYWNlCisgICAgYXJlIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIHNhbWUgdHJhbnNsYXRpb24g
dW5pdC4gVG8gdGVzdCB0aGVtLCB5b3UgY2FuCisgICAgYCNpbmNsdWRlYCB0aGUgZW50aXJlIGAu
Y2NgIGZpbGUgYmVpbmcgdGVzdGVkIGluIHlvdXIgYCpfdGVzdC5jY2AgZmlsZS4KKyAgICAoaW5j
bHVkaW5nIGAuY2NgIGZpbGVzIGlzIG5vdCBhIGdvb2Qgd2F5IHRvIHJldXNlIGNvZGUgLSB5b3Ug
c2hvdWxkIG5vdCBkbworICAgIHRoaXMgaW4gcHJvZHVjdGlvbiBjb2RlISkKKworICAgIEhvd2V2
ZXIsIGEgYmV0dGVyIGFwcHJvYWNoIGlzIHRvIG1vdmUgdGhlIHByaXZhdGUgY29kZSBpbnRvIHRo
ZQorICAgIGBmb286OmludGVybmFsYCBuYW1lc3BhY2UsIHdoZXJlIGBmb29gIGlzIHRoZSBuYW1l
c3BhY2UgeW91ciBwcm9qZWN0CisgICAgbm9ybWFsbHkgdXNlcywgYW5kIHB1dCB0aGUgcHJpdmF0
ZSBkZWNsYXJhdGlvbnMgaW4gYSBgKi1pbnRlcm5hbC5oYCBmaWxlLgorICAgIFlvdXIgcHJvZHVj
dGlvbiBgLmNjYCBmaWxlcyBhbmQgeW91ciB0ZXN0cyBhcmUgYWxsb3dlZCB0byBpbmNsdWRlIHRo
aXMKKyAgICBpbnRlcm5hbCBoZWFkZXIsIGJ1dCB5b3VyIGNsaWVudHMgYXJlIG5vdC4gVGhpcyB3
YXksIHlvdSBjYW4gZnVsbHkgdGVzdCB5b3VyCisgICAgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24g
d2l0aG91dCBsZWFraW5nIGl0IHRvIHlvdXIgY2xpZW50cy4KKworKiAgIFByaXZhdGUgY2xhc3Mg
bWVtYmVycyBhcmUgb25seSBhY2Nlc3NpYmxlIGZyb20gd2l0aGluIHRoZSBjbGFzcyBvciBieQor
ICAgIGZyaWVuZHMuIFRvIGFjY2VzcyBhIGNsYXNzJyBwcml2YXRlIG1lbWJlcnMsIHlvdSBjYW4g
ZGVjbGFyZSB5b3VyIHRlc3QKKyAgICBmaXh0dXJlIGFzIGEgZnJpZW5kIHRvIHRoZSBjbGFzcyBh
bmQgZGVmaW5lIGFjY2Vzc29ycyBpbiB5b3VyIGZpeHR1cmUuIFRlc3RzCisgICAgdXNpbmcgdGhl
IGZpeHR1cmUgY2FuIHRoZW4gYWNjZXNzIHRoZSBwcml2YXRlIG1lbWJlcnMgb2YgeW91ciBwcm9k
dWN0aW9uCisgICAgY2xhc3MgdmlhIHRoZSBhY2Nlc3NvcnMgaW4gdGhlIGZpeHR1cmUuIE5vdGUg
dGhhdCBldmVuIHRob3VnaCB5b3VyIGZpeHR1cmUKKyAgICBpcyBhIGZyaWVuZCB0byB5b3VyIHBy
b2R1Y3Rpb24gY2xhc3MsIHlvdXIgdGVzdHMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5CisgICAgZnJp
ZW5kcyB0byBpdCwgYXMgdGhleSBhcmUgdGVjaG5pY2FsbHkgZGVmaW5lZCBpbiBzdWItY2xhc3Nl
cyBvZiB0aGUKKyAgICBmaXh0dXJlLgorCisgICAgQW5vdGhlciB3YXkgdG8gdGVzdCBwcml2YXRl
IG1lbWJlcnMgaXMgdG8gcmVmYWN0b3IgdGhlbSBpbnRvIGFuCisgICAgaW1wbGVtZW50YXRpb24g
Y2xhc3MsIHdoaWNoIGlzIHRoZW4gZGVjbGFyZWQgaW4gYSBgKi1pbnRlcm5hbC5oYCBmaWxlLiBZ
b3VyCisgICAgY2xpZW50cyBhcmVuJ3QgYWxsb3dlZCB0byBpbmNsdWRlIHRoaXMgaGVhZGVyIGJ1
dCB5b3VyIHRlc3RzIGNhbi4gU3VjaCBpcworICAgIGNhbGxlZCB0aGUKKyAgICBbUGltcGxdKGh0
dHBzOi8vd3d3LmdhbWVkZXYubmV0L2FydGljbGVzL3Byb2dyYW1taW5nL2dlbmVyYWwtYW5kLWdh
bWVwbGF5LXByb2dyYW1taW5nL3RoZS1jLXBpbXBsLXIxNzk0LykKKyAgICAoUHJpdmF0ZSBJbXBs
ZW1lbnRhdGlvbikgaWRpb20uCisKKyAgICBPciwgeW91IGNhbiBkZWNsYXJlIGFuIGluZGl2aWR1
YWwgdGVzdCBhcyBhIGZyaWVuZCBvZiB5b3VyIGNsYXNzIGJ5IGFkZGluZworICAgIHRoaXMgbGlu
ZSBpbiB0aGUgY2xhc3MgYm9keToKKworICAgIGBgYGMrKworICAgICAgICBGUklFTkRfVEVTVChU
ZXN0Q2FzZU5hbWUsIFRlc3ROYW1lKTsKKyAgICBgYGAKKworICAgIEZvciBleGFtcGxlLAorCisg
ICAgYGBgYysrCisgICAgLy8gZm9vLmgKKworICAgICNpbmNsdWRlICJndGVzdC9ndGVzdF9wcm9k
LmgiCisKKyAgICBjbGFzcyBGb28geworICAgICAgLi4uCisgICAgcHJpdmF0ZToKKyAgICAgIEZS
SUVORF9URVNUKEZvb1Rlc3QsIEJhclJldHVybnNaZXJvT25OdWxsKTsKKworICAgICAgaW50IEJh
cih2b2lkKiB4KTsKKyAgICB9OworCisgICAgLy8gZm9vX3Rlc3QuY2MKKyAgICAuLi4KKyAgICBU
RVNUKEZvb1Rlc3QsIEJhclJldHVybnNaZXJvT25OdWxsKSB7CisgICAgICBGb28gZm9vOworICAg
ICAgRVhQRUNUX0VRKDAsIGZvby5CYXIoTlVMTCkpOyAgLy8gVXNlcyBGb28ncyBwcml2YXRlIG1l
bWJlciBCYXIoKS4KKyAgICB9CisgICAgYGBgCisKKyAgICBQYXkgc3BlY2lhbCBhdHRlbnRpb24g
d2hlbiB5b3VyIGNsYXNzIGlzIGRlZmluZWQgaW4gYSBuYW1lc3BhY2UsIGFzIHlvdQorICAgIHNo
b3VsZCBkZWZpbmUgeW91ciB0ZXN0IGZpeHR1cmVzIGFuZCB0ZXN0cyBpbiB0aGUgc2FtZSBuYW1l
c3BhY2UgaWYgeW91IHdhbnQKKyAgICB0aGVtIHRvIGJlIGZyaWVuZHMgb2YgeW91ciBjbGFzcy4g
Rm9yIGV4YW1wbGUsIGlmIHRoZSBjb2RlIHRvIGJlIHRlc3RlZAorICAgIGxvb2tzIGxpa2U6CisK
KyAgICBgYGBjKysKKyAgICBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlIHsKKworICAgIGNsYXNzIEZv
byB7CisgICAgICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKKyAgICAgIEZSSUVORF9URVNUKEZvb1Rl
c3QsIEJhcik7CisgICAgICBGUklFTkRfVEVTVChGb29UZXN0LCBCYXopOworICAgICAgLi4uIGRl
ZmluaXRpb24gb2YgdGhlIGNsYXNzIEZvbyAuLi4KKyAgICB9OworCisgICAgfSAgLy8gbmFtZXNw
YWNlIG15X25hbWVzcGFjZQorICAgIGBgYAorCisgICAgWW91ciB0ZXN0IGNvZGUgc2hvdWxkIGJl
IHNvbWV0aGluZyBsaWtlOgorCisgICAgYGBgYysrCisgICAgbmFtZXNwYWNlIG15X25hbWVzcGFj
ZSB7CisKKyAgICBjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgICAg
IHByb3RlY3RlZDoKKyAgICAgIC4uLgorICAgIH07CisKKyAgICBURVNUX0YoRm9vVGVzdCwgQmFy
KSB7IC4uLiB9CisgICAgVEVTVF9GKEZvb1Rlc3QsIEJheikgeyAuLi4gfQorCisgICAgfSAgLy8g
bmFtZXNwYWNlIG15X25hbWVzcGFjZQorICAgIGBgYAorCisKKyMjICJDYXRjaGluZyIgRmFpbHVy
ZXMKKworSWYgeW91IGFyZSBidWlsZGluZyBhIHRlc3RpbmcgdXRpbGl0eSBvbiB0b3Agb2YgZ29v
Z2xldGVzdCwgeW91J2xsIHdhbnQgdG8gdGVzdAoreW91ciB1dGlsaXR5LiBXaGF0IGZyYW1ld29y
ayB3b3VsZCB5b3UgdXNlIHRvIHRlc3QgaXQ/IGdvb2dsZXRlc3QsIG9mIGNvdXJzZS4KKworVGhl
IGNoYWxsZW5nZSBpcyB0byB2ZXJpZnkgdGhhdCB5b3VyIHRlc3RpbmcgdXRpbGl0eSByZXBvcnRz
IGZhaWx1cmVzIGNvcnJlY3RseS4KK0luIGZyYW1ld29ya3MgdGhhdCByZXBvcnQgYSBmYWlsdXJl
IGJ5IHRocm93aW5nIGFuIGV4Y2VwdGlvbiwgeW91IGNvdWxkIGNhdGNoCit0aGUgZXhjZXB0aW9u
IGFuZCBhc3NlcnQgb24gaXQuIEJ1dCBnb29nbGV0ZXN0IGRvZXNuJ3QgdXNlIGV4Y2VwdGlvbnMs
IHNvIGhvdyBkbword2UgdGVzdCB0aGF0IGEgcGllY2Ugb2YgY29kZSBnZW5lcmF0ZXMgYW4gZXhw
ZWN0ZWQgZmFpbHVyZT8KKworZ3VuaXQtc3BpLmggY29udGFpbnMgc29tZSBjb25zdHJ1Y3RzIHRv
IGRvIHRoaXMuIEFmdGVyICNpbmNsdWRpbmcgdGhpcyBoZWFkZXIsCit5b3UgY2FuIHVzZQorCitg
YGBjKysKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoc3RhdGVtZW50LCBzdWJzdHJpbmcpOworYGBg
CisKK3RvIGFzc2VydCB0aGF0IGBzdGF0ZW1lbnRgIGdlbmVyYXRlcyBhIGZhdGFsIChlLmcuIGBB
U1NFUlRfKmApIGZhaWx1cmUgaW4gdGhlCitjdXJyZW50IHRocmVhZCB3aG9zZSBtZXNzYWdlIGNv
bnRhaW5zIHRoZSBnaXZlbiBgc3Vic3RyaW5nYCwgb3IgdXNlCisKK2BgYGMrKworICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShzdGF0ZW1lbnQsIHN1YnN0cmluZyk7CitgYGAKKworaWYgeW91IGFy
ZSBleHBlY3RpbmcgYSBub24tZmF0YWwgKGUuZy4gYEVYUEVDVF8qYCkgZmFpbHVyZS4KKworT25s
eSBmYWlsdXJlcyBpbiB0aGUgY3VycmVudCB0aHJlYWQgYXJlIGNoZWNrZWQgdG8gZGV0ZXJtaW5l
IHRoZSByZXN1bHQgb2YgdGhpcwordHlwZSBvZiBleHBlY3RhdGlvbnMuIElmIGBzdGF0ZW1lbnRg
IGNyZWF0ZXMgbmV3IHRocmVhZHMsIGZhaWx1cmVzIGluIHRoZXNlCit0aHJlYWRzIGFyZSBhbHNv
IGlnbm9yZWQuIElmIHlvdSB3YW50IHRvIGNhdGNoIGZhaWx1cmVzIGluIG90aGVyIHRocmVhZHMg
YXMKK3dlbGwsIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBtYWNyb3MgaW5zdGVhZDoKKworYGBg
YysrCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKHN0YXRlbWVudCwgc3Vi
c3RyaW5nKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoc3RhdGVt
ZW50LCBzdWJzdHJpbmcpOworYGBgCisKK05PVEU6IEFzc2VydGlvbnMgZnJvbSBtdWx0aXBsZSB0
aHJlYWRzIGFyZSBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzLgorCitGb3IgdGVj
aG5pY2FsIHJlYXNvbnMsIHRoZXJlIGFyZSBzb21lIGNhdmVhdHM6CisKKzEuICBZb3UgY2Fubm90
IHN0cmVhbSBhIGZhaWx1cmUgbWVzc2FnZSB0byBlaXRoZXIgbWFjcm8uCisKKzEuICBgc3RhdGVt
ZW50YCBpbiBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkV7X09OX0FMTF9USFJFQURTfSgpYCBjYW5ub3Qg
cmVmZXJlbmNlCisgICAgbG9jYWwgbm9uLXN0YXRpYyB2YXJpYWJsZXMgb3Igbm9uLXN0YXRpYyBt
ZW1iZXJzIG9mIGB0aGlzYCBvYmplY3QuCisKKzEuICBgc3RhdGVtZW50YCBpbiBgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkV7X09OX0FMTF9USFJFQURTfSgpKClgIGNhbm5vdCByZXR1cm4gYQorICAgIHZh
bHVlLgorCisKKyMjIEdldHRpbmcgdGhlIEN1cnJlbnQgVGVzdCdzIE5hbWUKKworU29tZXRpbWVz
IGEgZnVuY3Rpb24gbWF5IG5lZWQgdG8ga25vdyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IHJ1
bm5pbmcgdGVzdC4KK0ZvciBleGFtcGxlLCB5b3UgbWF5IGJlIHVzaW5nIHRoZSBgU2V0VXAoKWAg
bWV0aG9kIG9mIHlvdXIgdGVzdCBmaXh0dXJlIHRvIHNldAordGhlIGdvbGRlbiBmaWxlIG5hbWUg
YmFzZWQgb24gd2hpY2ggdGVzdCBpcyBydW5uaW5nLiBUaGUgYDo6dGVzdGluZzo6VGVzdEluZm9g
CitjbGFzcyBoYXMgdGhpcyBpbmZvcm1hdGlvbjoKKworYGBgYysrCituYW1lc3BhY2UgdGVzdGlu
ZyB7CisKK2NsYXNzIFRlc3RJbmZvIHsKKyBwdWJsaWM6CisgIC8vIFJldHVybnMgdGhlIHRlc3Qg
Y2FzZSBuYW1lIGFuZCB0aGUgdGVzdCBuYW1lLCByZXNwZWN0aXZlbHkuCisgIC8vCisgIC8vIERv
IE5PVCBkZWxldGUgb3IgZnJlZSB0aGUgcmV0dXJuIHZhbHVlIC0gaXQncyBtYW5hZ2VkIGJ5IHRo
ZQorICAvLyBUZXN0SW5mbyBjbGFzcy4KKyAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUoKSBj
b25zdDsKKyAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0OworfTsKKworfQorYGBgCisKK1RvIG9i
dGFpbiBhIGBUZXN0SW5mb2Agb2JqZWN0IGZvciB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdCwg
Y2FsbAorYGN1cnJlbnRfdGVzdF9pbmZvKClgIG9uIHRoZSBgVW5pdFRlc3RgIHNpbmdsZXRvbiBv
YmplY3Q6CisKK2BgYGMrKworICAvLyBHZXRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50
bHkgcnVubmluZyB0ZXN0LgorICAvLyBEbyBOT1QgZGVsZXRlIHRoZSByZXR1cm5lZCBvYmplY3Qg
LSBpdCdzIG1hbmFnZWQgYnkgdGhlIFVuaXRUZXN0IGNsYXNzLgorICBjb25zdCA6OnRlc3Rpbmc6
OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQorICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6Okdl
dEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisKKworCisgIHByaW50ZigiV2UgYXJl
IGluIHRlc3QgJXMgb2YgdGVzdCBjYXNlICVzLlxuIiwKKyAgICAgICAgIHRlc3RfaW5mby0+bmFt
ZSgpLAorICAgICAgICAgdGVzdF9pbmZvLT50ZXN0X2Nhc2VfbmFtZSgpKTsKK2BgYAorCitgY3Vy
cmVudF90ZXN0X2luZm8oKWAgcmV0dXJucyBhIG51bGwgcG9pbnRlciBpZiBubyB0ZXN0IGlzIHJ1
bm5pbmcuIEluCitwYXJ0aWN1bGFyLCB5b3UgY2Fubm90IGZpbmQgdGhlIHRlc3QgY2FzZSBuYW1l
IGluIGBUZXN0Q2FzZVNldFVwKClgLAorYFRlc3RDYXNlVGVhckRvd24oKWAgKHdoZXJlIHlvdSBr
bm93IHRoZSB0ZXN0IGNhc2UgbmFtZSBpbXBsaWNpdGx5KSwgb3IKK2Z1bmN0aW9ucyBjYWxsZWQg
ZnJvbSB0aGVtLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisj
IyBFeHRlbmRpbmcgZ29vZ2xldGVzdCBieSBIYW5kbGluZyBUZXN0IEV2ZW50cworCitnb29nbGV0
ZXN0IHByb3ZpZGVzIGFuICoqZXZlbnQgbGlzdGVuZXIgQVBJKiogdG8gbGV0IHlvdSByZWNlaXZl
IG5vdGlmaWNhdGlvbnMKK2Fib3V0IHRoZSBwcm9ncmVzcyBvZiBhIHRlc3QgcHJvZ3JhbSBhbmQg
dGVzdCBmYWlsdXJlcy4gVGhlIGV2ZW50cyB5b3UgY2FuCitsaXN0ZW4gdG8gaW5jbHVkZSB0aGUg
c3RhcnQgYW5kIGVuZCBvZiB0aGUgdGVzdCBwcm9ncmFtLCBhIHRlc3QgY2FzZSwgb3IgYSB0ZXN0
CittZXRob2QsIGFtb25nIG90aGVycy4gWW91IG1heSB1c2UgdGhpcyBBUEkgdG8gYXVnbWVudCBv
ciByZXBsYWNlIHRoZSBzdGFuZGFyZAorY29uc29sZSBvdXRwdXQsIHJlcGxhY2UgdGhlIFhNTCBv
dXRwdXQsIG9yIHByb3ZpZGUgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBmb3JtCitvZiBvdXRwdXQs
IHN1Y2ggYXMgYSBHVUkgb3IgYSBkYXRhYmFzZS4gWW91IGNhbiBhbHNvIHVzZSB0ZXN0IGV2ZW50
cyBhcworY2hlY2twb2ludHMgdG8gaW1wbGVtZW50IGEgcmVzb3VyY2UgbGVhayBjaGVja2VyLCBm
b3IgZXhhbXBsZS4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKwor
IyMjIERlZmluaW5nIEV2ZW50IExpc3RlbmVycworCitUbyBkZWZpbmUgYSBldmVudCBsaXN0ZW5l
ciwgeW91IHN1YmNsYXNzIGVpdGhlciB0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lciBvcgordGVz
dGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lciBUaGUgZm9ybWVyIGlzIGFuIChhYnN0cmFjdCkg
aW50ZXJmYWNlLCB3aGVyZQorKmVhY2ggcHVyZSB2aXJ0dWFsIG1ldGhvZCBjYW4gYmUgb3ZlcnJp
ZGRlbiB0byBoYW5kbGUgYSB0ZXN0IGV2ZW50KiAoRm9yCitleGFtcGxlLCB3aGVuIGEgdGVzdCBz
dGFydHMsIHRoZSBgT25UZXN0U3RhcnQoKWAgbWV0aG9kIHdpbGwgYmUgY2FsbGVkLikuIFRoZQor
bGF0dGVyIHByb3ZpZGVzIGFuIGVtcHR5IGltcGxlbWVudGF0aW9uIG9mIGFsbCBtZXRob2RzIGlu
IHRoZSBpbnRlcmZhY2UsIHN1Y2gKK3RoYXQgYSBzdWJjbGFzcyBvbmx5IG5lZWRzIHRvIG92ZXJy
aWRlIHRoZSBtZXRob2RzIGl0IGNhcmVzIGFib3V0LgorCitXaGVuIGFuIGV2ZW50IGlzIGZpcmVk
LCBpdHMgY29udGV4dCBpcyBwYXNzZWQgdG8gdGhlIGhhbmRsZXIgZnVuY3Rpb24gYXMgYW4KK2Fy
Z3VtZW50LiBUaGUgZm9sbG93aW5nIGFyZ3VtZW50IHR5cGVzIGFyZSB1c2VkOgorCisqICAgVW5p
dFRlc3QgcmVmbGVjdHMgdGhlIHN0YXRlIG9mIHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFtLAorKiAg
IFRlc3RDYXNlIGhhcyBpbmZvcm1hdGlvbiBhYm91dCBhIHRlc3QgY2FzZSwgd2hpY2ggY2FuIGNv
bnRhaW4gb25lIG9yIG1vcmUKKyAgICB0ZXN0cywKKyogICBUZXN0SW5mbyBjb250YWlucyB0aGUg
c3RhdGUgb2YgYSB0ZXN0LCBhbmQKKyogICBUZXN0UGFydFJlc3VsdCByZXByZXNlbnRzIHRoZSBy
ZXN1bHQgb2YgYSB0ZXN0IGFzc2VydGlvbi4KKworQW4gZXZlbnQgaGFuZGxlciBmdW5jdGlvbiBj
YW4gZXhhbWluZSB0aGUgYXJndW1lbnQgaXQgcmVjZWl2ZXMgdG8gZmluZCBvdXQKK2ludGVyZXN0
aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBldmVudCBhbmQgdGhlIHRlc3QgcHJvZ3JhbSdzIHN0
YXRlLgorCitIZXJlJ3MgYW4gZXhhbXBsZToKKworYGBgYysrCisgIGNsYXNzIE1pbmltYWxpc3RQ
cmludGVyIDogcHVibGljIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CisgICAg
Ly8gQ2FsbGVkIGJlZm9yZSBhIHRlc3Qgc3RhcnRzLgorICAgIHZpcnR1YWwgdm9pZCBPblRlc3RT
dGFydChjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKKyAgICAgIHByaW50
ZigiKioqIFRlc3QgJXMuJXMgc3RhcnRpbmcuXG4iLAorICAgICAgICAgICAgIHRlc3RfaW5mby50
ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgICB9CisKKyAgICAvLyBDYWxs
ZWQgYWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VTUygpLgorICAgIHZpcnR1YWwg
dm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQmIHRl
c3RfcGFydF9yZXN1bHQpIHsKKyAgICAgIHByaW50ZigiJXMgaW4gJXM6JWRcbiVzXG4iLAorICAg
ICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQuZmFpbGVkKCkgPyAiKioqIEZhaWx1cmUiIDogIlN1
Y2Nlc3MiLAorICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQuZmlsZV9uYW1lKCksCisgICAg
ICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5saW5lX251bWJlcigpLAorICAgICAgICAgICAgIHRl
c3RfcGFydF9yZXN1bHQuc3VtbWFyeSgpKTsKKyAgICB9CisKKyAgICAvLyBDYWxsZWQgYWZ0ZXIg
YSB0ZXN0IGVuZHMuCisgICAgdmlydHVhbCB2b2lkIE9uVGVzdEVuZChjb25zdCA6OnRlc3Rpbmc6
OlRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKKyAgICAgIHByaW50ZigiKioqIFRlc3QgJXMuJXMgZW5k
aW5nLlxuIiwKKyAgICAgICAgICAgICB0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9p
bmZvLm5hbWUoKSk7CisgICAgfQorICB9OworYGBgCisKKyMjIyBVc2luZyBFdmVudCBMaXN0ZW5l
cnMKKworVG8gdXNlIHRoZSBldmVudCBsaXN0ZW5lciB5b3UgaGF2ZSBkZWZpbmVkLCBhZGQgYW4g
aW5zdGFuY2Ugb2YgaXQgdG8gdGhlCitnb29nbGV0ZXN0IGV2ZW50IGxpc3RlbmVyIGxpc3QgKHJl
cHJlc2VudGVkIGJ5IGNsYXNzIFRlc3RFdmVudExpc3RlbmVycyAtIG5vdGUKK3RoZSAicyIgYXQg
dGhlIGVuZCBvZiB0aGUgbmFtZSkgaW4geW91ciBgbWFpbigpYCBmdW5jdGlvbiwgYmVmb3JlIGNh
bGxpbmcKK2BSVU5fQUxMX1RFU1RTKClgOgorCitgYGBjKysKK2ludCBtYWluKGludCBhcmdjLCBj
aGFyKiogYXJndikgeworICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsK
KyAgLy8gR2V0cyBob2xkIG9mIHRoZSBldmVudCBsaXN0ZW5lciBsaXN0LgorICA6OnRlc3Rpbmc6
OlRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0KKyAgICAgICAgOjp0ZXN0aW5nOjpVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCk7CisgIC8vIEFkZHMgYSBsaXN0ZW5lciB0
byB0aGUgZW5kLiAgZ29vZ2xldGVzdCB0YWtlcyB0aGUgb3duZXJzaGlwLgorICBsaXN0ZW5lcnMu
QXBwZW5kKG5ldyBNaW5pbWFsaXN0UHJpbnRlcik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7
Cit9CitgYGAKKworVGhlcmUncyBvbmx5IG9uZSBwcm9ibGVtOiB0aGUgZGVmYXVsdCB0ZXN0IHJl
c3VsdCBwcmludGVyIGlzIHN0aWxsIGluIGVmZmVjdCwgc28KK2l0cyBvdXRwdXQgd2lsbCBtaW5n
bGUgd2l0aCB0aGUgb3V0cHV0IGZyb20geW91ciBtaW5pbWFsaXN0IHByaW50ZXIuIFRvIHN1cHBy
ZXNzCit0aGUgZGVmYXVsdCBwcmludGVyLCBqdXN0IHJlbGVhc2UgaXQgZnJvbSB0aGUgZXZlbnQg
bGlzdGVuZXIgbGlzdCBhbmQgZGVsZXRlIGl0LgorWW91IGNhbiBkbyBzbyBieSBhZGRpbmcgb25l
IGxpbmU6CisKK2BgYGMrKworICAuLi4KKyAgZGVsZXRlIGxpc3RlbmVycy5SZWxlYXNlKGxpc3Rl
bmVycy5kZWZhdWx0X3Jlc3VsdF9wcmludGVyKCkpOworICBsaXN0ZW5lcnMuQXBwZW5kKG5ldyBN
aW5pbWFsaXN0UHJpbnRlcik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CitgYGAKKworTm93
LCBzaXQgYmFjayBhbmQgZW5qb3kgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBvdXRwdXQgZnJvbSB5
b3VyIHRlc3RzLiBGb3IgbW9yZQorZGV0YWlscywgeW91IGNhbiByZWFkIHRoaXMgc2FtcGxlOV91
bml0dGVzdC5jYworCitZb3UgbWF5IGFwcGVuZCBtb3JlIHRoYW4gb25lIGxpc3RlbmVyIHRvIHRo
ZSBsaXN0LiBXaGVuIGFuIGBPbipTdGFydCgpYCBvcgorYE9uVGVzdFBhcnRSZXN1bHQoKWAgZXZl
bnQgaXMgZmlyZWQsIHRoZSBsaXN0ZW5lcnMgd2lsbCByZWNlaXZlIGl0IGluIHRoZSBvcmRlcgor
dGhleSBhcHBlYXIgaW4gdGhlIGxpc3QgKHNpbmNlIG5ldyBsaXN0ZW5lcnMgYXJlIGFkZGVkIHRv
IHRoZSBlbmQgb2YgdGhlIGxpc3QsCit0aGUgZGVmYXVsdCB0ZXh0IHByaW50ZXIgYW5kIHRoZSBk
ZWZhdWx0IFhNTCBnZW5lcmF0b3Igd2lsbCByZWNlaXZlIHRoZSBldmVudAorZmlyc3QpLiBBbiBg
T24qRW5kKClgIGV2ZW50IHdpbGwgYmUgcmVjZWl2ZWQgYnkgdGhlIGxpc3RlbmVycyBpbiB0aGUg
KnJldmVyc2UqCitvcmRlci4gVGhpcyBhbGxvd3Mgb3V0cHV0IGJ5IGxpc3RlbmVycyBhZGRlZCBs
YXRlciB0byBiZSBmcmFtZWQgYnkgb3V0cHV0IGZyb20KK2xpc3RlbmVycyBhZGRlZCBlYXJsaWVy
LgorCisjIyMgR2VuZXJhdGluZyBGYWlsdXJlcyBpbiBMaXN0ZW5lcnMKKworWW91IG1heSB1c2Ug
ZmFpbHVyZS1yYWlzaW5nIG1hY3JvcyAoYEVYUEVDVF8qKClgLCBgQVNTRVJUXyooKWAsIGBGQUlM
KClgLCBldGMpCit3aGVuIHByb2Nlc3NpbmcgYW4gZXZlbnQuIFRoZXJlIGFyZSBzb21lIHJlc3Ry
aWN0aW9uczoKKworMS4gIFlvdSBjYW5ub3QgZ2VuZXJhdGUgYW55IGZhaWx1cmUgaW4gYE9uVGVz
dFBhcnRSZXN1bHQoKWAgKG90aGVyd2lzZSBpdCB3aWxsCisgICAgY2F1c2UgYE9uVGVzdFBhcnRS
ZXN1bHQoKWAgdG8gYmUgY2FsbGVkIHJlY3Vyc2l2ZWx5KS4KKzEuICBBIGxpc3RlbmVyIHRoYXQg
aGFuZGxlcyBgT25UZXN0UGFydFJlc3VsdCgpYCBpcyBub3QgYWxsb3dlZCB0byBnZW5lcmF0ZSBh
bnkKKyAgICBmYWlsdXJlLgorCitXaGVuIHlvdSBhZGQgbGlzdGVuZXJzIHRvIHRoZSBsaXN0ZW5l
ciBsaXN0LCB5b3Ugc2hvdWxkIHB1dCBsaXN0ZW5lcnMgdGhhdAoraGFuZGxlIGBPblRlc3RQYXJ0
UmVzdWx0KClgICpiZWZvcmUqIGxpc3RlbmVycyB0aGF0IGNhbiBnZW5lcmF0ZSBmYWlsdXJlcy4g
VGhpcworZW5zdXJlcyB0aGF0IGZhaWx1cmVzIGdlbmVyYXRlZCBieSB0aGUgbGF0dGVyIGFyZSBh
dHRyaWJ1dGVkIHRvIHRoZSByaWdodCB0ZXN0CitieSB0aGUgZm9ybWVyLgorCitXZSBoYXZlIGEg
c2FtcGxlIG9mIGZhaWx1cmUtcmFpc2luZyBsaXN0ZW5lciBzYW1wbGUxMF91bml0dGVzdC5jYwor
CisjIyBSdW5uaW5nIFRlc3QgUHJvZ3JhbXM6IEFkdmFuY2VkIE9wdGlvbnMKKworZ29vZ2xldGVz
dCB0ZXN0IHByb2dyYW1zIGFyZSBvcmRpbmFyeSBleGVjdXRhYmxlcy4gT25jZSBidWlsdCwgeW91
IGNhbiBydW4gdGhlbQorZGlyZWN0bHkgYW5kIGFmZmVjdCB0aGVpciBiZWhhdmlvciB2aWEgdGhl
IGZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMKK2FuZC9vciBjb21tYW5kIGxpbmUgZmxh
Z3MuIEZvciB0aGUgZmxhZ3MgdG8gd29yaywgeW91ciBwcm9ncmFtcyBtdXN0IGNhbGwKK2A6OnRl
c3Rpbmc6OkluaXRHb29nbGVUZXN0KClgIGJlZm9yZSBjYWxsaW5nIGBSVU5fQUxMX1RFU1RTKClg
LgorCitUbyBzZWUgYSBsaXN0IG9mIHN1cHBvcnRlZCBmbGFncyBhbmQgdGhlaXIgdXNhZ2UsIHBs
ZWFzZSBydW4geW91ciB0ZXN0IHByb2dyYW0KK3dpdGggdGhlIGAtLWhlbHBgIGZsYWcuIFlvdSBj
YW4gYWxzbyB1c2UgYC1oYCwgYC0/YCwgb3IgYC8/YCBmb3Igc2hvcnQuCisKK0lmIGFuIG9wdGlv
biBpcyBzcGVjaWZpZWQgYm90aCBieSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbmQgYnkgYSBm
bGFnLCB0aGUKK2xhdHRlciB0YWtlcyBwcmVjZWRlbmNlLgorCisjIyMgU2VsZWN0aW5nIFRlc3Rz
CisKKyMjIyMgTGlzdGluZyBUZXN0IE5hbWVzCisKK1NvbWV0aW1lcyBpdCBpcyBuZWNlc3Nhcnkg
dG8gbGlzdCB0aGUgYXZhaWxhYmxlIHRlc3RzIGluIGEgcHJvZ3JhbSBiZWZvcmUKK3J1bm5pbmcg
dGhlbSBzbyB0aGF0IGEgZmlsdGVyIG1heSBiZSBhcHBsaWVkIGlmIG5lZWRlZC4gSW5jbHVkaW5n
IHRoZSBmbGFnCitgLS1ndGVzdF9saXN0X3Rlc3RzYCBvdmVycmlkZXMgYWxsIG90aGVyIGZsYWdz
IGFuZCBsaXN0cyB0ZXN0cyBpbiB0aGUgZm9sbG93aW5nCitmb3JtYXQ6CisKK2BgYG5vbmUKK1Rl
c3RDYXNlMS4KKyAgVGVzdE5hbWUxCisgIFRlc3ROYW1lMgorVGVzdENhc2UyLgorICBUZXN0TmFt
ZQorYGBgCisKK05vbmUgb2YgdGhlIHRlc3RzIGxpc3RlZCBhcmUgYWN0dWFsbHkgcnVuIGlmIHRo
ZSBmbGFnIGlzIHByb3ZpZGVkLiBUaGVyZSBpcyBubworY29ycmVzcG9uZGluZyBlbnZpcm9ubWVu
dCB2YXJpYWJsZSBmb3IgdGhpcyBmbGFnLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2lu
ZG93cywgTWFjLgorCisjIyMjIFJ1bm5pbmcgYSBTdWJzZXQgb2YgdGhlIFRlc3RzCisKK0J5IGRl
ZmF1bHQsIGEgZ29vZ2xldGVzdCBwcm9ncmFtIHJ1bnMgYWxsIHRlc3RzIHRoZSB1c2VyIGhhcyBk
ZWZpbmVkLiBTb21ldGltZXMsCit5b3Ugd2FudCB0byBydW4gb25seSBhIHN1YnNldCBvZiB0aGUg
dGVzdHMgKGUuZy4gZm9yIGRlYnVnZ2luZyBvciBxdWlja2x5Cit2ZXJpZnlpbmcgYSBjaGFuZ2Up
LiBJZiB5b3Ugc2V0IHRoZSBgR1RFU1RfRklMVEVSYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0
aGUKK2AtLWd0ZXN0X2ZpbHRlcmAgZmxhZyB0byBhIGZpbHRlciBzdHJpbmcsIGdvb2dsZXRlc3Qg
d2lsbCBvbmx5IHJ1biB0aGUgdGVzdHMKK3dob3NlIGZ1bGwgbmFtZXMgKGluIHRoZSBmb3JtIG9m
IGBUZXN0Q2FzZU5hbWUuVGVzdE5hbWVgKSBtYXRjaCB0aGUgZmlsdGVyLgorCitUaGUgZm9ybWF0
IG9mIGEgZmlsdGVyIGlzIGEgJ2A6YCctc2VwYXJhdGVkIGxpc3Qgb2Ygd2lsZGNhcmQgcGF0dGVy
bnMgKGNhbGxlZAordGhlICpwb3NpdGl2ZSBwYXR0ZXJucyopIG9wdGlvbmFsbHkgZm9sbG93ZWQg
YnkgYSAnYC1gJyBhbmQgYW5vdGhlcgorJ2A6YCctc2VwYXJhdGVkIHBhdHRlcm4gbGlzdCAoY2Fs
bGVkIHRoZSAqbmVnYXRpdmUgcGF0dGVybnMqKS4gQSB0ZXN0IG1hdGNoZXMKK3RoZSBmaWx0ZXIg
aWYgYW5kIG9ubHkgaWYgaXQgbWF0Y2hlcyBhbnkgb2YgdGhlIHBvc2l0aXZlIHBhdHRlcm5zIGJ1
dCBkb2VzIG5vdAorbWF0Y2ggYW55IG9mIHRoZSBuZWdhdGl2ZSBwYXR0ZXJucy4KKworQSBwYXR0
ZXJuIG1heSBjb250YWluIGAnKidgIChtYXRjaGVzIGFueSBzdHJpbmcpIG9yIGAnPydgIChtYXRj
aGVzIGFueSBzaW5nbGUKK2NoYXJhY3RlcikuIEZvciBjb252ZW5pZW5jZSwgdGhlIGZpbHRlcgor
CitgJyotTmVnYXRpdmVQYXR0ZXJucydgIGNhbiBiZSBhbHNvIHdyaXR0ZW4gYXMgYCctTmVnYXRp
dmVQYXR0ZXJucydgLgorCitGb3IgZXhhbXBsZToKKworKiAgIGAuL2Zvb190ZXN0YCBIYXMgbm8g
ZmxhZywgYW5kIHRodXMgcnVucyBhbGwgaXRzIHRlc3RzLgorKiAgIGAuL2Zvb190ZXN0IC0tZ3Rl
c3RfZmlsdGVyPSpgIEFsc28gcnVucyBldmVyeXRoaW5nLCBkdWUgdG8gdGhlIHNpbmdsZQorICAg
IG1hdGNoLWV2ZXJ5dGhpbmcgYCpgIHZhbHVlLgorKiAgIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmls
dGVyPUZvb1Rlc3QuKmAgUnVucyBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBgRm9vVGVzdGAKKyAg
ICAuCisqICAgYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Kk51bGwqOipDb25zdHJ1Y3Rvcipg
IFJ1bnMgYW55IHRlc3Qgd2hvc2UgZnVsbAorICAgIG5hbWUgY29udGFpbnMgZWl0aGVyIGAiTnVs
bCJgIG9yIGAiQ29uc3RydWN0b3IiYCAuCisqICAgYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9
LSpEZWF0aFRlc3QuKmAgUnVucyBhbGwgbm9uLWRlYXRoIHRlc3RzLgorKiAgIGAuL2Zvb190ZXN0
IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rlc3QuKi1Gb29UZXN0LkJhcmAgUnVucyBldmVyeXRoaW5nIGlu
IHRlc3QKKyAgICBjYXNlIGBGb29UZXN0YCBleGNlcHQgYEZvb1Rlc3QuQmFyYC4KKyogICBgLi9m
b29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj1Gb29UZXN0Lio6QmFyVGVzdC4qLUZvb1Rlc3QuQmFyOkJh
clRlc3QuRm9vYCBSdW5zCisgICAgZXZlcnl0aGluZyBpbiB0ZXN0IGNhc2UgYEZvb1Rlc3RgIGV4
Y2VwdCBgRm9vVGVzdC5CYXJgIGFuZCBldmVyeXRoaW5nIGluCisgICAgdGVzdCBjYXNlIGBCYXJU
ZXN0YCBleGNlcHQgYEJhclRlc3QuRm9vYC4KKyAgICAKKyMjIyMgVGVtcG9yYXJpbHkgRGlzYWJs
aW5nIFRlc3RzCisKK0lmIHlvdSBoYXZlIGEgYnJva2VuIHRlc3QgdGhhdCB5b3UgY2Fubm90IGZp
eCByaWdodCBhd2F5LCB5b3UgY2FuIGFkZCB0aGUKK2BESVNBQkxFRF9gIHByZWZpeCB0byBpdHMg
bmFtZS4gVGhpcyB3aWxsIGV4Y2x1ZGUgaXQgZnJvbSBleGVjdXRpb24uIFRoaXMgaXMKK2JldHRl
ciB0aGFuIGNvbW1lbnRpbmcgb3V0IHRoZSBjb2RlIG9yIHVzaW5nIGAjaWYgMGAsIGFzIGRpc2Fi
bGVkIHRlc3RzIGFyZQorc3RpbGwgY29tcGlsZWQgKGFuZCB0aHVzIHdvbid0IHJvdCkuCisKK0lm
IHlvdSBuZWVkIHRvIGRpc2FibGUgYWxsIHRlc3RzIGluIGEgdGVzdCBjYXNlLCB5b3UgY2FuIGVp
dGhlciBhZGQgYERJU0FCTEVEX2AKK3RvIHRoZSBmcm9udCBvZiB0aGUgbmFtZSBvZiBlYWNoIHRl
c3QsIG9yIGFsdGVybmF0aXZlbHkgYWRkIGl0IHRvIHRoZSBmcm9udCBvZgordGhlIHRlc3QgY2Fz
ZSBuYW1lLgorCitGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyB0ZXN0cyB3b24ndCBiZSBydW4g
YnkgZ29vZ2xldGVzdCwgZXZlbiB0aG91Z2ggdGhleQord2lsbCBzdGlsbCBiZSBjb21waWxlZDoK
KworYGBgYysrCisvLyBUZXN0cyB0aGF0IEZvbyBkb2VzIEFiYy4KK1RFU1QoRm9vVGVzdCwgRElT
QUJMRURfRG9lc0FiYykgeyAuLi4gfQorCitjbGFzcyBESVNBQkxFRF9CYXJUZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OworCisvLyBUZXN0cyB0aGF0IEJhciBkb2VzIFh5ei4K
K1RFU1RfRihESVNBQkxFRF9CYXJUZXN0LCBEb2VzWHl6KSB7IC4uLiB9CitgYGAKKworTk9URTog
VGhpcyBmZWF0dXJlIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHRlbXBvcmFyeSBwYWluLXJlbGll
Zi4gWW91IHN0aWxsIGhhdmUKK3RvIGZpeCB0aGUgZGlzYWJsZWQgdGVzdHMgYXQgYSBsYXRlciBk
YXRlLiBBcyBhIHJlbWluZGVyLCBnb29nbGV0ZXN0IHdpbGwgcHJpbnQKK2EgYmFubmVyIHdhcm5p
bmcgeW91IGlmIGEgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIGFueSBkaXNhYmxlZCB0ZXN0cy4KKwor
VElQOiBZb3UgY2FuIGVhc2lseSBjb3VudCB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHlv
dSBoYXZlIHVzaW5nIGBnc2VhcmNoYAorYW5kL29yIGBncmVwYC4gVGhpcyBudW1iZXIgY2FuIGJl
IHVzZWQgYXMgYSBtZXRyaWMgZm9yIGltcHJvdmluZyB5b3VyIHRlc3QKK3F1YWxpdHkuCisKKyoq
QXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyMgVGVtcG9yYXJpbHkg
RW5hYmxpbmcgRGlzYWJsZWQgVGVzdHMKKworVG8gaW5jbHVkZSBkaXNhYmxlZCB0ZXN0cyBpbiB0
ZXN0IGV4ZWN1dGlvbiwganVzdCBpbnZva2UgdGhlIHRlc3QgcHJvZ3JhbSB3aXRoCit0aGUgYC0t
Z3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHNgIGZsYWcgb3Igc2V0IHRoZQorYEdURVNUX0FM
U09fUlVOX0RJU0FCTEVEX1RFU1RTYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIHZhbHVlIG90
aGVyIHRoYW4gYDBgLgorWW91IGNhbiBjb21iaW5lIHRoaXMgd2l0aCB0aGUgYC0tZ3Rlc3RfZmls
dGVyYCBmbGFnIHRvIGZ1cnRoZXIgc2VsZWN0IHdoaWNoCitkaXNhYmxlZCB0ZXN0cyB0byBydW4u
CisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBSZXBlYXRp
bmcgdGhlIFRlc3RzCisKK09uY2UgaW4gYSB3aGlsZSB5b3UnbGwgcnVuIGludG8gYSB0ZXN0IHdo
b3NlIHJlc3VsdCBpcyBoaXQtb3ItbWlzcy4gUGVyaGFwcyBpdAord2lsbCBmYWlsIG9ubHkgMSUg
b2YgdGhlIHRpbWUsIG1ha2luZyBpdCByYXRoZXIgaGFyZCB0byByZXByb2R1Y2UgdGhlIGJ1ZyB1
bmRlcgorYSBkZWJ1Z2dlci4gVGhpcyBjYW4gYmUgYSBtYWpvciBzb3VyY2Ugb2YgZnJ1c3RyYXRp
b24uCisKK1RoZSBgLS1ndGVzdF9yZXBlYXRgIGZsYWcgYWxsb3dzIHlvdSB0byByZXBlYXQgYWxs
IChvciBzZWxlY3RlZCkgdGVzdCBtZXRob2RzIGluCithIHByb2dyYW0gbWFueSB0aW1lcy4gSG9w
ZWZ1bGx5LCBhIGZsYWt5IHRlc3Qgd2lsbCBldmVudHVhbGx5IGZhaWwgYW5kIGdpdmUgeW91Cith
IGNoYW5jZSB0byBkZWJ1Zy4gSGVyZSdzIGhvdyB0byB1c2UgaXQ6CisKK2BgYG5vbmUKKyQgZm9v
X3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMAorUmVwZWF0IGZvb190ZXN0IDEwMDAgdGltZXMgYW5k
IGRvbid0IHN0b3AgYXQgZmFpbHVyZXMuCisKKyQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9LTEK
K0EgbmVnYXRpdmUgY291bnQgbWVhbnMgcmVwZWF0aW5nIGZvcmV2ZXIuCisKKyQgZm9vX3Rlc3Qg
LS1ndGVzdF9yZXBlYXQ9MTAwMCAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUKK1JlcGVhdCBmb29f
dGVzdCAxMDAwIHRpbWVzLCBzdG9wcGluZyBhdCB0aGUgZmlyc3QgZmFpbHVyZS4gIFRoaXMKK2lz
IGVzcGVjaWFsbHkgdXNlZnVsIHdoZW4gcnVubmluZyB1bmRlciBhIGRlYnVnZ2VyOiB3aGVuIHRo
ZSB0ZXN0CitmYWlscywgaXQgd2lsbCBkcm9wIGludG8gdGhlIGRlYnVnZ2VyIGFuZCB5b3UgY2Fu
IHRoZW4gaW5zcGVjdAordmFyaWFibGVzIGFuZCBzdGFja3MuCisKKyQgZm9vX3Rlc3QgLS1ndGVz
dF9yZXBlYXQ9MTAwMCAtLWd0ZXN0X2ZpbHRlcj1Gb29CYXIuKgorUmVwZWF0IHRoZSB0ZXN0cyB3
aG9zZSBuYW1lIG1hdGNoZXMgdGhlIGZpbHRlciAxMDAwIHRpbWVzLgorYGBgCisKK0lmIHlvdXIg
dGVzdCBwcm9ncmFtIGNvbnRhaW5zIFtnbG9iYWwgc2V0LXVwL3RlYXItZG93bl0oI2dsb2JhbC1z
ZXQtdXAtYW5kLXRlYXItZG93bikgY29kZSwgaXQKK3dpbGwgYmUgcmVwZWF0ZWQgaW4gZWFjaCBp
dGVyYXRpb24gYXMgd2VsbCwgYXMgdGhlIGZsYWtpbmVzcyBtYXkgYmUgaW4gaXQuIFlvdQorY2Fu
IGFsc28gc3BlY2lmeSB0aGUgcmVwZWF0IGNvdW50IGJ5IHNldHRpbmcgdGhlIGBHVEVTVF9SRVBF
QVRgIGVudmlyb25tZW50Cit2YXJpYWJsZS4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdp
bmRvd3MsIE1hYy4KKworIyMjIFNodWZmbGluZyB0aGUgVGVzdHMKKworWW91IGNhbiBzcGVjaWZ5
IHRoZSBgLS1ndGVzdF9zaHVmZmxlYCBmbGFnIChvciBzZXQgdGhlIGBHVEVTVF9TSFVGRkxFYAor
ZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYDFgKSB0byBydW4gdGhlIHRlc3RzIGluIGEgcHJvZ3Jh
bSBpbiBhIHJhbmRvbSBvcmRlci4KK1RoaXMgaGVscHMgdG8gcmV2ZWFsIGJhZCBkZXBlbmRlbmNp
ZXMgYmV0d2VlbiB0ZXN0cy4KKworQnkgZGVmYXVsdCwgZ29vZ2xldGVzdCB1c2VzIGEgcmFuZG9t
IHNlZWQgY2FsY3VsYXRlZCBmcm9tIHRoZSBjdXJyZW50IHRpbWUuCitUaGVyZWZvcmUgeW91J2xs
IGdldCBhIGRpZmZlcmVudCBvcmRlciBldmVyeSB0aW1lLiBUaGUgY29uc29sZSBvdXRwdXQgaW5j
bHVkZXMKK3RoZSByYW5kb20gc2VlZCB2YWx1ZSwgc3VjaCB0aGF0IHlvdSBjYW4gcmVwcm9kdWNl
IGFuIG9yZGVyLXJlbGF0ZWQgdGVzdCBmYWlsdXJlCitsYXRlci4gVG8gc3BlY2lmeSB0aGUgcmFu
ZG9tIHNlZWQgZXhwbGljaXRseSwgdXNlIHRoZSBgLS1ndGVzdF9yYW5kb21fc2VlZD1TRUVEYAor
ZmxhZyAob3Igc2V0IHRoZSBgR1RFU1RfUkFORE9NX1NFRURgIGVudmlyb25tZW50IHZhcmlhYmxl
KSwgd2hlcmUgYFNFRURgIGlzIGFuCitpbnRlZ2VyIGluIHRoZSByYW5nZSBbMCwgOTk5OTldLiBU
aGUgc2VlZCB2YWx1ZSAwIGlzIHNwZWNpYWw6IGl0IHRlbGxzCitnb29nbGV0ZXN0IHRvIGRvIHRo
ZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGNhbGN1bGF0aW5nIHRoZSBzZWVkIGZyb20gdGhlIGN1cnJl
bnQKK3RpbWUuCisKK0lmIHlvdSBjb21iaW5lIHRoaXMgd2l0aCBgLS1ndGVzdF9yZXBlYXQ9TmAs
IGdvb2dsZXRlc3Qgd2lsbCBwaWNrIGEgZGlmZmVyZW50CityYW5kb20gc2VlZCBhbmQgcmUtc2h1
ZmZsZSB0aGUgdGVzdHMgaW4gZWFjaCBpdGVyYXRpb24uCisKKyoqQXZhaWxhYmlsaXR5Kio6IExp
bnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBDb250cm9sbGluZyBUZXN0IE91dHB1dAorCisjIyMj
IENvbG9yZWQgVGVybWluYWwgT3V0cHV0CisKK2dvb2dsZXRlc3QgY2FuIHVzZSBjb2xvcnMgaW4g
aXRzIHRlcm1pbmFsIG91dHB1dCB0byBtYWtlIGl0IGVhc2llciB0byBzcG90IHRoZQoraW1wb3J0
YW50IGluZm9ybWF0aW9uOgorCisuLi48YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuIj5b
LS0tLS0tLS0tLV08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiAxIHRlc3QgZnJvbSBGb29UZXN0
PGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbiI+WyBSVU4gICAgICBdPHNwYW4gc3R5bGU9
ImNvbG9yOmJsYWNrIj4gRm9vVGVzdC5Eb2VzQWJjPGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpn
cmVlbiI+WyAgICAgICBPSyBdPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4gRm9vVGVzdC5Eb2Vz
QWJjPGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbiI+Wy0tLS0tLS0tLS1dPHNwYW4gc3R5
bGU9ImNvbG9yOmJsYWNrIj4gMiB0ZXN0cyBmcm9tIEJhclRlc3Q8YnIvPgorPHNwYW4gc3R5bGU9
ImNvbG9yOmdyZWVuIj5bIFJVTiAgICAgIF08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiBCYXJU
ZXN0Lkhhc1h5elByb3BlcnR5PGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbiI+WyAgICAg
ICBPSyBdPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4gQmFyVGVzdC5IYXNYeXpQcm9wZXJ0eTxi
ci8+Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPlsgUlVOICAgICAgXTxzcGFuIHN0eWxlPSJj
b2xvcjpibGFjayI+IEJhclRlc3QuUmV0dXJuc1RydWVPblN1Y2Nlc3M8YnIvPgorLi4uIHNvbWUg
ZXJyb3IgbWVzc2FnZXMgLi4uPGJyLz4KKzxzcGFuICAgc3R5bGU9ImNvbG9yOnJlZCI+WyAgRkFJ
TEVEICBdIDxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+QmFyVGVzdC5SZXR1cm5zVHJ1ZU9uU3Vj
Y2Vzczxici8+CisuLi48YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuIj5bPT09PT09PT09
PV08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiAzMCB0ZXN0cyBmcm9tIDE0IHRlc3QgY2FzZXMg
cmFuLjxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPlsgIFBBU1NFRCAgXTxzcGFuIHN0
eWxlPSJjb2xvcjpibGFjayI+IDI4IHRlc3RzLjxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6cmVk
Ij5bICBGQUlMRUQgIF08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiAyIHRlc3RzLCBsaXN0ZWQg
YmVsb3c6PGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPlsgIEZBSUxFRCAgXTxzcGFuIHN0
eWxlPSJjb2xvcjpibGFjayI+IEJhclRlc3QuUmV0dXJuc1RydWVPblN1Y2Nlc3M8YnIvPgorPHNw
YW4gc3R5bGU9ImNvbG9yOnJlZCI+WyAgRkFJTEVEICBdPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNr
Ij4gQW5vdGhlclRlc3QuRG9lc1h5ejxici8+CisgIDIgRkFJTEVEIFRFU1RTCisKK1lvdSBjYW4g
c2V0IHRoZSBgR1RFU1RfQ09MT1JgIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZSBgLS1ndGVz
dF9jb2xvcmAKK2NvbW1hbmQgbGluZSBmbGFnIHRvIGB5ZXNgLCBgbm9gLCBvciBgYXV0b2AgKHRo
ZSBkZWZhdWx0KSB0byBlbmFibGUgY29sb3JzLAorZGlzYWJsZSBjb2xvcnMsIG9yIGxldCBnb29n
bGV0ZXN0IGRlY2lkZS4gV2hlbiB0aGUgdmFsdWUgaXMgYGF1dG9gLCBnb29nbGV0ZXN0Cit3aWxs
IHVzZSBjb2xvcnMgaWYgYW5kIG9ubHkgaWYgdGhlIG91dHB1dCBnb2VzIHRvIGEgdGVybWluYWwg
YW5kIChvbiBub24tV2luZG93cworcGxhdGZvcm1zKSB0aGUgYFRFUk1gIGVudmlyb25tZW50IHZh
cmlhYmxlIGlzIHNldCB0byBgeHRlcm1gIG9yIGB4dGVybS1jb2xvcmAuCisKKyAqKkF2YWlsYWJp
bGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMjIFN1cHByZXNzaW5nIHRoZSBFbGFw
c2VkIFRpbWUKKworQnkgZGVmYXVsdCwgZ29vZ2xldGVzdCBwcmludHMgdGhlIHRpbWUgaXQgdGFr
ZXMgdG8gcnVuIGVhY2ggdGVzdC4gVG8gZGlzYWJsZQordGhhdCwgcnVuIHRoZSB0ZXN0IHByb2dy
YW0gd2l0aCB0aGUgYC0tZ3Rlc3RfcHJpbnRfdGltZT0wYCBjb21tYW5kIGxpbmUgZmxhZywgb3IK
K3NldCB0aGUgR1RFU1RfUFJJTlRfVElNRSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBgMGAuCisK
KyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyMgU3VwcHJlc3Np
bmcgVVRGLTggVGV4dCBPdXRwdXQKKworSW4gY2FzZSBvZiBhc3NlcnRpb24gZmFpbHVyZXMsIGdv
b2dsZXRlc3QgcHJpbnRzIGV4cGVjdGVkIGFuZCBhY3R1YWwgdmFsdWVzIG9mCit0eXBlIGBzdHJp
bmdgIGJvdGggYXMgaGV4LWVuY29kZWQgc3RyaW5ncyBhcyB3ZWxsIGFzIGluIHJlYWRhYmxlIFVU
Ri04IHRleHQgaWYKK3RoZXkgY29udGFpbiB2YWxpZCBub24tQVNDSUkgVVRGLTggY2hhcmFjdGVy
cy4gSWYgeW91IHdhbnQgdG8gc3VwcHJlc3MgdGhlIFVURi04Cit0ZXh0IGJlY2F1c2UsIGZvciBl
eGFtcGxlLCB5b3UgZG9uJ3QgaGF2ZSBhbiBVVEYtOCBjb21wYXRpYmxlIG91dHB1dCBtZWRpdW0s
IHJ1bgordGhlIHRlc3QgcHJvZ3JhbSB3aXRoIGAtLWd0ZXN0X3ByaW50X3V0Zjg9MGAgb3Igc2V0
IHRoZSBgR1RFU1RfUFJJTlRfVVRGOGAKK2Vudmlyb25tZW50IHZhcmlhYmxlIHRvIGAwYC4KKwor
KipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworCisjIyMjIEdlbmVyYXRp
bmcgYW4gWE1MIFJlcG9ydAorCitnb29nbGV0ZXN0IGNhbiBlbWl0IGEgZGV0YWlsZWQgWE1MIHJl
cG9ydCB0byBhIGZpbGUgaW4gYWRkaXRpb24gdG8gaXRzIG5vcm1hbAordGV4dHVhbCBvdXRwdXQu
IFRoZSByZXBvcnQgY29udGFpbnMgdGhlIGR1cmF0aW9uIG9mIGVhY2ggdGVzdCwgYW5kIHRodXMg
Y2FuIGhlbHAKK3lvdSBpZGVudGlmeSBzbG93IHRlc3RzLiBUaGUgcmVwb3J0IGlzIGFsc28gdXNl
ZCBieSB0aGUgaHR0cDovL3VuaXR0ZXN0CitkYXNoYm9hcmQgdG8gc2hvdyBwZXItdGVzdC1tZXRo
b2QgZXJyb3IgbWVzc2FnZXMuCisKK1RvIGdlbmVyYXRlIHRoZSBYTUwgcmVwb3J0LCBzZXQgdGhl
IGBHVEVTVF9PVVRQVVRgIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQorYC0tZ3Rlc3Rfb3V0
cHV0YCBmbGFnIHRvIHRoZSBzdHJpbmcgYCJ4bWw6cGF0aF90b19vdXRwdXRfZmlsZSJgLCB3aGlj
aCB3aWxsCitjcmVhdGUgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIGxvY2F0aW9uLiBZb3UgY2FuIGFs
c28ganVzdCB1c2UgdGhlIHN0cmluZyBgInhtbCJgLAoraW4gd2hpY2ggY2FzZSB0aGUgb3V0cHV0
IGNhbiBiZSBmb3VuZCBpbiB0aGUgYHRlc3RfZGV0YWlsLnhtbGAgZmlsZSBpbiB0aGUKK2N1cnJl
bnQgZGlyZWN0b3J5LgorCitJZiB5b3Ugc3BlY2lmeSBhIGRpcmVjdG9yeSAoZm9yIGV4YW1wbGUs
IGAieG1sOm91dHB1dC9kaXJlY3RvcnkvImAgb24gTGludXggb3IKK2AieG1sOm91dHB1dFxkaXJl
Y3RvcnlcImAgb24gV2luZG93cyksIGdvb2dsZXRlc3Qgd2lsbCBjcmVhdGUgdGhlIFhNTCBmaWxl
IGluCit0aGF0IGRpcmVjdG9yeSwgbmFtZWQgYWZ0ZXIgdGhlIHRlc3QgZXhlY3V0YWJsZSAoZS5n
LiBgZm9vX3Rlc3QueG1sYCBmb3IgdGVzdAorcHJvZ3JhbSBgZm9vX3Rlc3RgIG9yIGBmb29fdGVz
dC5leGVgKS4gSWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMgKHBlcmhhcHMgbGVmdAorb3ZlciBm
cm9tIGEgcHJldmlvdXMgcnVuKSwgZ29vZ2xldGVzdCB3aWxsIHBpY2sgYSBkaWZmZXJlbnQgbmFt
ZSAoZS5nLgorYGZvb190ZXN0XzEueG1sYCkgdG8gYXZvaWQgb3ZlcndyaXRpbmcgaXQuCisKKwor
VGhlIHJlcG9ydCBpcyBiYXNlZCBvbiB0aGUgYGp1bml0cmVwb3J0YCBBbnQgdGFzay4gU2luY2Ug
dGhhdCBmb3JtYXQgd2FzCitvcmlnaW5hbGx5IGludGVuZGVkIGZvciBKYXZhLCBhIGxpdHRsZSBp
bnRlcnByZXRhdGlvbiBpcyByZXF1aXJlZCB0byBtYWtlIGl0CithcHBseSB0byBnb29nbGV0ZXN0
IHRlc3RzLCBhcyBzaG93biBoZXJlOgorCitgYGB4bWwKKzx0ZXN0c3VpdGVzIG5hbWU9IkFsbFRl
c3RzIiAuLi4+CisgIDx0ZXN0c3VpdGUgbmFtZT0idGVzdF9jYXNlX25hbWUiIC4uLj4KKyAgICA8
dGVzdGNhc2UgICAgbmFtZT0idGVzdF9uYW1lIiAuLi4+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdl
PSIuLi4iLz4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiIvPgorICAgICAgPGZhaWx1cmUg
bWVzc2FnZT0iLi4uIi8+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rlc3Rz
dWl0ZXM+CitgYGAKKworKiAgIFRoZSByb290IGA8dGVzdHN1aXRlcz5gIGVsZW1lbnQgY29ycmVz
cG9uZHMgdG8gdGhlIGVudGlyZSB0ZXN0IHByb2dyYW0uCisqICAgYDx0ZXN0c3VpdGU+YCBlbGVt
ZW50cyBjb3JyZXNwb25kIHRvIGdvb2dsZXRlc3QgdGVzdCBjYXNlcy4KKyogICBgPHRlc3RjYXNl
PmAgZWxlbWVudHMgY29ycmVzcG9uZCB0byBnb29nbGV0ZXN0IHRlc3QgZnVuY3Rpb25zLgorCitG
b3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgcHJvZ3JhbQorCitgYGBjKysKK1RFU1QoTWF0aFRl
c3QsIEFkZGl0aW9uKSB7IC4uLiB9CitURVNUKE1hdGhUZXN0LCBTdWJ0cmFjdGlvbikgeyAuLi4g
fQorVEVTVChMb2dpY1Rlc3QsIE5vbkNvbnRyYWRpY3Rpb24pIHsgLi4uIH0KK2BgYAorCitjb3Vs
ZCBnZW5lcmF0ZSB0aGlzIHJlcG9ydDoKKworYGBgeG1sCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJVVEYtOCI/PgorPHRlc3RzdWl0ZXMgdGVzdHM9IjMiIGZhaWx1cmVzPSIxIiBlcnJv
cnM9IjAiIHRpbWU9IjAuMDM1IiB0aW1lc3RhbXA9IjIwMTEtMTAtMzFUMTg6NTI6NDIiIG5hbWU9
IkFsbFRlc3RzIj4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJNYXRoVGVzdCIgdGVzdHM9IjIiIGZhaWx1
cmVzPSIxIiBlcnJvcnM9IjAiIHRpbWU9IjAuMDE1Ij4KKyAgICA8dGVzdGNhc2UgbmFtZT0iQWRk
aXRpb24iIHN0YXR1cz0icnVuIiB0aW1lPSIwLjAwNyIgY2xhc3NuYW1lPSIiPgorICAgICAgPGZh
aWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IGFkZCgxLCAxKSYjeDBBOyAgQWN0dWFsOiAzJiN4MEE7
RXhwZWN0ZWQ6IDIiIHR5cGU9IiI+Li4uPC9mYWlsdXJlPgorICAgICAgPGZhaWx1cmUgbWVzc2Fn
ZT0iVmFsdWUgb2Y6IGFkZCgxLCAtMSkmI3gwQTsgIEFjdHVhbDogMSYjeDBBO0V4cGVjdGVkOiAw
IiB0eXBlPSIiPi4uLjwvZmFpbHVyZT4KKyAgICA8L3Rlc3RjYXNlPgorICAgIDx0ZXN0Y2FzZSBu
YW1lPSJTdWJ0cmFjdGlvbiIgc3RhdHVzPSJydW4iIHRpbWU9IjAuMDA1IiBjbGFzc25hbWU9IiI+
CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iTG9n
aWNUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGVycm9ycz0iMCIgdGltZT0iMC4wMDUiPgor
ICAgIDx0ZXN0Y2FzZSBuYW1lPSJOb25Db250cmFkaWN0aW9uIiBzdGF0dXM9InJ1biIgdGltZT0i
MC4wMDUiIGNsYXNzbmFtZT0iIj4KKyAgICA8L3Rlc3RjYXNlPgorICA8L3Rlc3RzdWl0ZT4KKzwv
dGVzdHN1aXRlcz4KK2BgYAorCitUaGluZ3MgdG8gbm90ZToKKworKiAgIFRoZSBgdGVzdHNgIGF0
dHJpYnV0ZSBvZiBhIGA8dGVzdHN1aXRlcz5gIG9yIGA8dGVzdHN1aXRlPmAgZWxlbWVudCB0ZWxs
cyBob3cKKyAgICBtYW55IHRlc3QgZnVuY3Rpb25zIHRoZSBnb29nbGV0ZXN0IHByb2dyYW0gb3Ig
dGVzdCBjYXNlIGNvbnRhaW5zLCB3aGlsZSB0aGUKKyAgICBgZmFpbHVyZXNgIGF0dHJpYnV0ZSB0
ZWxscyBob3cgbWFueSBvZiB0aGVtIGZhaWxlZC4KKworKiAgIFRoZSBgdGltZWAgYXR0cmlidXRl
IGV4cHJlc3NlcyB0aGUgZHVyYXRpb24gb2YgdGhlIHRlc3QsIHRlc3QgY2FzZSwgb3IKKyAgICBl
bnRpcmUgdGVzdCBwcm9ncmFtIGluIHNlY29uZHMuCisKKyogICBUaGUgYHRpbWVzdGFtcGAgYXR0
cmlidXRlIHJlY29yZHMgdGhlIGxvY2FsIGRhdGUgYW5kIHRpbWUgb2YgdGhlIHRlc3QKKyAgICBl
eGVjdXRpb24uCisKKyogICBFYWNoIGA8ZmFpbHVyZT5gIGVsZW1lbnQgY29ycmVzcG9uZHMgdG8g
YSBzaW5nbGUgZmFpbGVkIGdvb2dsZXRlc3QKKyAgICBhc3NlcnRpb24uCisKKyoqQXZhaWxhYmls
aXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyMgR2VuZXJhdGluZyBhbiBKU09OIFJl
cG9ydAorCitnb29nbGV0ZXN0IGNhbiBhbHNvIGVtaXQgYSBKU09OIHJlcG9ydCBhcyBhbiBhbHRl
cm5hdGl2ZSBmb3JtYXQgdG8gWE1MLiBUbworZ2VuZXJhdGUgdGhlIEpTT04gcmVwb3J0LCBzZXQg
dGhlIGBHVEVTVF9PVVRQVVRgIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQorYC0tZ3Rlc3Rf
b3V0cHV0YCBmbGFnIHRvIHRoZSBzdHJpbmcgYCJqc29uOnBhdGhfdG9fb3V0cHV0X2ZpbGUiYCwg
d2hpY2ggd2lsbAorY3JlYXRlIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBsb2NhdGlvbi4gWW91IGNh
biBhbHNvIGp1c3QgdXNlIHRoZSBzdHJpbmcKK2AianNvbiJgLCBpbiB3aGljaCBjYXNlIHRoZSBv
dXRwdXQgY2FuIGJlIGZvdW5kIGluIHRoZSBgdGVzdF9kZXRhaWwuanNvbmAgZmlsZQoraW4gdGhl
IGN1cnJlbnQgZGlyZWN0b3J5LgorCitUaGUgcmVwb3J0IGZvcm1hdCBjb25mb3JtcyB0byB0aGUg
Zm9sbG93aW5nIEpTT04gU2NoZW1hOgorCitgYGBqc29uCit7CisgICIkc2NoZW1hIjogImh0dHA6
Ly9qc29uLXNjaGVtYS5vcmcvc2NoZW1hIyIsCisgICJ0eXBlIjogIm9iamVjdCIsCisgICJkZWZp
bml0aW9ucyI6IHsKKyAgICAiVGVzdENhc2UiOiB7CisgICAgICAidHlwZSI6ICJvYmplY3QiLAor
ICAgICAgInByb3BlcnRpZXMiOiB7CisgICAgICAgICJuYW1lIjogeyAidHlwZSI6ICJzdHJpbmci
IH0sCisgICAgICAgICJ0ZXN0cyI6IHsgInR5cGUiOiAiaW50ZWdlciIgfSwKKyAgICAgICAgImZh
aWx1cmVzIjogeyAidHlwZSI6ICJpbnRlZ2VyIiB9LAorICAgICAgICAiZGlzYWJsZWQiOiB7ICJ0
eXBlIjogImludGVnZXIiIH0sCisgICAgICAgICJ0aW1lIjogeyAidHlwZSI6ICJzdHJpbmciIH0s
CisgICAgICAgICJ0ZXN0c3VpdGUiOiB7CisgICAgICAgICAgInR5cGUiOiAiYXJyYXkiLAorICAg
ICAgICAgICJpdGVtcyI6IHsKKyAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvVGVz
dEluZm8iCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAiVGVz
dEluZm8iOiB7CisgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgInByb3BlcnRpZXMiOiB7
CisgICAgICAgICJuYW1lIjogeyAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICJzdGF0dXMi
OiB7CisgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAiZW51bSI6IFsiUlVO
IiwgIk5PVFJVTiJdCisgICAgICAgIH0sCisgICAgICAgICJ0aW1lIjogeyAidHlwZSI6ICJzdHJp
bmciIH0sCisgICAgICAgICJjbGFzc25hbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAg
ICAgImZhaWx1cmVzIjogeworICAgICAgICAgICJ0eXBlIjogImFycmF5IiwKKyAgICAgICAgICAi
aXRlbXMiOiB7CisgICAgICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL0ZhaWx1cmUiCisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAiRmFpbHVyZSI6IHsK
KyAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAicHJvcGVydGllcyI6IHsKKyAgICAgICAg
ImZhaWx1cmVzIjogeyAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICJ0eXBlIjogeyAidHlw
ZSI6ICJzdHJpbmciIH0KKyAgICAgIH0KKyAgICB9CisgIH0sCisgICJwcm9wZXJ0aWVzIjogewor
ICAgICJ0ZXN0cyI6IHsgInR5cGUiOiAiaW50ZWdlciIgfSwKKyAgICAiZmFpbHVyZXMiOiB7ICJ0
eXBlIjogImludGVnZXIiIH0sCisgICAgImRpc2FibGVkIjogeyAidHlwZSI6ICJpbnRlZ2VyIiB9
LAorICAgICJlcnJvcnMiOiB7ICJ0eXBlIjogImludGVnZXIiIH0sCisgICAgInRpbWVzdGFtcCI6
IHsKKyAgICAgICJ0eXBlIjogInN0cmluZyIsCisgICAgICAiZm9ybWF0IjogImRhdGUtdGltZSIK
KyAgICB9LAorICAgICJ0aW1lIjogeyAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgIm5hbWUiOiB7
ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAidGVzdHN1aXRlcyI6IHsKKyAgICAgICJ0eXBlIjog
ImFycmF5IiwKKyAgICAgICJpdGVtcyI6IHsKKyAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9u
cy9UZXN0Q2FzZSIKKyAgICAgIH0KKyAgICB9CisgIH0KK30KK2BgYAorCitUaGUgcmVwb3J0IHVz
ZXMgdGhlIGZvcm1hdCB0aGF0IGNvbmZvcm1zIHRvIHRoZSBmb2xsb3dpbmcgUHJvdG8zIHVzaW5n
IHRoZSBbSlNPTgorZW5jb2RpbmddKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3Byb3Rv
Y29sLWJ1ZmZlcnMvZG9jcy9wcm90bzMjanNvbik6CisKK2BgYHByb3RvCitzeW50YXggPSAicHJv
dG8zIjsKKworcGFja2FnZSBnb29nbGV0ZXN0OworCitpbXBvcnQgImdvb2dsZS9wcm90b2J1Zi90
aW1lc3RhbXAucHJvdG8iOworaW1wb3J0ICJnb29nbGUvcHJvdG9idWYvZHVyYXRpb24ucHJvdG8i
OworCittZXNzYWdlIFVuaXRUZXN0IHsKKyAgaW50MzIgdGVzdHMgPSAxOworICBpbnQzMiBmYWls
dXJlcyA9IDI7CisgIGludDMyIGRpc2FibGVkID0gMzsKKyAgaW50MzIgZXJyb3JzID0gNDsKKyAg
Z29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCB0aW1lc3RhbXAgPSA1OworICBnb29nbGUucHJvdG9i
dWYuRHVyYXRpb24gdGltZSA9IDY7CisgIHN0cmluZyBuYW1lID0gNzsKKyAgcmVwZWF0ZWQgVGVz
dENhc2UgdGVzdHN1aXRlcyA9IDg7Cit9CisKK21lc3NhZ2UgVGVzdENhc2UgeworICBzdHJpbmcg
bmFtZSA9IDE7CisgIGludDMyIHRlc3RzID0gMjsKKyAgaW50MzIgZmFpbHVyZXMgPSAzOworICBp
bnQzMiBkaXNhYmxlZCA9IDQ7CisgIGludDMyIGVycm9ycyA9IDU7CisgIGdvb2dsZS5wcm90b2J1
Zi5EdXJhdGlvbiB0aW1lID0gNjsKKyAgcmVwZWF0ZWQgVGVzdEluZm8gdGVzdHN1aXRlID0gNzsK
K30KKworbWVzc2FnZSBUZXN0SW5mbyB7CisgIHN0cmluZyBuYW1lID0gMTsKKyAgZW51bSBTdGF0
dXMgeworICAgIFJVTiA9IDA7CisgICAgTk9UUlVOID0gMTsKKyAgfQorICBTdGF0dXMgc3RhdHVz
ID0gMjsKKyAgZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uIHRpbWUgPSAzOworICBzdHJpbmcgY2xh
c3NuYW1lID0gNDsKKyAgbWVzc2FnZSBGYWlsdXJlIHsKKyAgICBzdHJpbmcgZmFpbHVyZXMgPSAx
OworICAgIHN0cmluZyB0eXBlID0gMjsKKyAgfQorICByZXBlYXRlZCBGYWlsdXJlIGZhaWx1cmVz
ID0gNTsKK30KK2BgYAorCitGb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgcHJvZ3JhbQorCitg
YGBjKysKK1RFU1QoTWF0aFRlc3QsIEFkZGl0aW9uKSB7IC4uLiB9CitURVNUKE1hdGhUZXN0LCBT
dWJ0cmFjdGlvbikgeyAuLi4gfQorVEVTVChMb2dpY1Rlc3QsIE5vbkNvbnRyYWRpY3Rpb24pIHsg
Li4uIH0KK2BgYAorCitjb3VsZCBnZW5lcmF0ZSB0aGlzIHJlcG9ydDoKKworYGBganNvbgorewor
ICAidGVzdHMiOiAzLAorICAiZmFpbHVyZXMiOiAxLAorICAiZXJyb3JzIjogMCwKKyAgInRpbWUi
OiAiMC4wMzVzIiwKKyAgInRpbWVzdGFtcCI6ICIyMDExLTEwLTMxVDE4OjUyOjQyWiIKKyAgIm5h
bWUiOiAiQWxsVGVzdHMiLAorICAidGVzdHN1aXRlcyI6IFsKKyAgICB7CisgICAgICAibmFtZSI6
ICJNYXRoVGVzdCIsCisgICAgICAidGVzdHMiOiAyLAorICAgICAgImZhaWx1cmVzIjogMSwKKyAg
ICAgICJlcnJvcnMiOiAwLAorICAgICAgInRpbWUiOiAiMC4wMTVzIiwKKyAgICAgICJ0ZXN0c3Vp
dGUiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAibmFtZSI6ICJBZGRpdGlvbiIsCisgICAgICAg
ICAgInN0YXR1cyI6ICJSVU4iLAorICAgICAgICAgICJ0aW1lIjogIjAuMDA3cyIsCisgICAgICAg
ICAgImNsYXNzbmFtZSI6ICIiLAorICAgICAgICAgICJmYWlsdXJlcyI6IFsKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgIm1lc3NhZ2UiOiAiVmFsdWUgb2Y6IGFkZCgxLCAxKVx4MEEgIEFj
dHVhbDogM1x4MEFFeHBlY3RlZDogMiIsCisgICAgICAgICAgICAgICJ0eXBlIjogIiIKKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICJtZXNzYWdlIjogIlZhbHVl
IG9mOiBhZGQoMSwgLTEpXHgwQSAgQWN0dWFsOiAxXHgwQUV4cGVjdGVkOiAwIiwKKyAgICAgICAg
ICAgICAgInR5cGUiOiAiIgorICAgICAgICAgICAgfQorICAgICAgICAgIF0KKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICJuYW1lIjogIlN1YnRyYWN0aW9uIiwKKyAgICAgICAgICAi
c3RhdHVzIjogIlJVTiIsCisgICAgICAgICAgInRpbWUiOiAiMC4wMDVzIiwKKyAgICAgICAgICAi
Y2xhc3NuYW1lIjogIiIKKyAgICAgICAgfQorICAgICAgXQorICAgIH0KKyAgICB7CisgICAgICAi
bmFtZSI6ICJMb2dpY1Rlc3QiLAorICAgICAgInRlc3RzIjogMSwKKyAgICAgICJmYWlsdXJlcyI6
IDAsCisgICAgICAiZXJyb3JzIjogMCwKKyAgICAgICJ0aW1lIjogIjAuMDA1cyIsCisgICAgICAi
dGVzdHN1aXRlIjogWworICAgICAgICB7CisgICAgICAgICAgIm5hbWUiOiAiTm9uQ29udHJhZGlj
dGlvbiIsCisgICAgICAgICAgInN0YXR1cyI6ICJSVU4iLAorICAgICAgICAgICJ0aW1lIjogIjAu
MDA1cyIsCisgICAgICAgICAgImNsYXNzbmFtZSI6ICIiCisgICAgICAgIH0KKyAgICAgIF0KKyAg
ICB9CisgIF0KK30KK2BgYAorCitJTVBPUlRBTlQ6IFRoZSBleGFjdCBmb3JtYXQgb2YgdGhlIEpT
T04gZG9jdW1lbnQgaXMgc3ViamVjdCB0byBjaGFuZ2UuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExp
bnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBDb250cm9sbGluZyBIb3cgRmFpbHVyZXMgQXJlIFJl
cG9ydGVkCisKKyMjIyMgVHVybmluZyBBc3NlcnRpb24gRmFpbHVyZXMgaW50byBCcmVhay1Qb2lu
dHMKKworV2hlbiBydW5uaW5nIHRlc3QgcHJvZ3JhbXMgdW5kZXIgYSBkZWJ1Z2dlciwgaXQncyB2
ZXJ5IGNvbnZlbmllbnQgaWYgdGhlCitkZWJ1Z2dlciBjYW4gY2F0Y2ggYW4gYXNzZXJ0aW9uIGZh
aWx1cmUgYW5kIGF1dG9tYXRpY2FsbHkgZHJvcCBpbnRvIGludGVyYWN0aXZlCittb2RlLiBnb29n
bGV0ZXN0J3MgKmJyZWFrLW9uLWZhaWx1cmUqIG1vZGUgc3VwcG9ydHMgdGhpcyBiZWhhdmlvci4K
KworVG8gZW5hYmxlIGl0LCBzZXQgdGhlIGBHVEVTVF9CUkVBS19PTl9GQUlMVVJFYCBlbnZpcm9u
bWVudCB2YXJpYWJsZSB0byBhIHZhbHVlCitvdGhlciB0aGFuIGAwYCAuIEFsdGVybmF0aXZlbHks
IHlvdSBjYW4gdXNlIHRoZSBgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlYAorY29tbWFuZCBsaW5l
IGZsYWcuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyMg
RGlzYWJsaW5nIENhdGNoaW5nIFRlc3QtVGhyb3duIEV4Y2VwdGlvbnMKKworZ29vZ2xldGVzdCBj
YW4gYmUgdXNlZCBlaXRoZXIgd2l0aCBvciB3aXRob3V0IGV4Y2VwdGlvbnMgZW5hYmxlZC4gSWYg
YSB0ZXN0Cit0aHJvd3MgYSBDKysgZXhjZXB0aW9uIG9yIChvbiBXaW5kb3dzKSBhIHN0cnVjdHVy
ZWQgZXhjZXB0aW9uIChTRUgpLCBieSBkZWZhdWx0Citnb29nbGV0ZXN0IGNhdGNoZXMgaXQsIHJl
cG9ydHMgaXQgYXMgYSB0ZXN0IGZhaWx1cmUsIGFuZCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dAor
dGVzdCBtZXRob2QuIFRoaXMgbWF4aW1pemVzIHRoZSBjb3ZlcmFnZSBvZiBhIHRlc3QgcnVuLiBB
bHNvLCBvbiBXaW5kb3dzIGFuCit1bmNhdWdodCBleGNlcHRpb24gd2lsbCBjYXVzZSBhIHBvcC11
cCB3aW5kb3csIHNvIGNhdGNoaW5nIHRoZSBleGNlcHRpb25zIGFsbG93cworeW91IHRvIHJ1biB0
aGUgdGVzdHMgYXV0b21hdGljYWxseS4KKworV2hlbiBkZWJ1Z2dpbmcgdGhlIHRlc3QgZmFpbHVy
ZXMsIGhvd2V2ZXIsIHlvdSBtYXkgaW5zdGVhZCB3YW50IHRoZSBleGNlcHRpb25zCit0byBiZSBo
YW5kbGVkIGJ5IHRoZSBkZWJ1Z2dlciwgc3VjaCB0aGF0IHlvdSBjYW4gZXhhbWluZSB0aGUgY2Fs
bCBzdGFjayB3aGVuIGFuCitleGNlcHRpb24gaXMgdGhyb3duLiBUbyBhY2hpZXZlIHRoYXQsIHNl
dCB0aGUgYEdURVNUX0NBVENIX0VYQ0VQVElPTlNgCitlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBg
MGAsIG9yIHVzZSB0aGUgYC0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucz0wYCBmbGFnIHdoZW4KK3J1
bm5pbmcgdGhlIHRlc3RzLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFj
LgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL2ZhcS5tZCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvZmFxLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkNDJmZjdkYmFh
OGZhYmQwY2M2NTJmZDcwNTI3OTgxODRlOTVjNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9kb2NzL2ZhcS5tZApAQCAtMCwwICsxLDc3MCBAQAorIyBHb29nbGV0
ZXN0IEZBUQorCisKKyMjIFdoeSBzaG91bGQgdGVzdCBjYXNlIG5hbWVzIGFuZCB0ZXN0IG5hbWVz
IG5vdCBjb250YWluIHVuZGVyc2NvcmU/CisKK1VuZGVyc2NvcmUgKGBfYCkgaXMgc3BlY2lhbCwg
YXMgQysrIHJlc2VydmVzIHRoZSBmb2xsb3dpbmcgdG8gYmUgdXNlZCBieSB0aGUKK2NvbXBpbGVy
IGFuZCB0aGUgc3RhbmRhcmQgbGlicmFyeToKKworMS4gIGFueSBpZGVudGlmaWVyIHRoYXQgc3Rh
cnRzIHdpdGggYW4gYF9gIGZvbGxvd2VkIGJ5IGFuIHVwcGVyLWNhc2UgbGV0dGVyLCBhbmQKKzEu
ICBhbnkgaWRlbnRpZmllciB0aGF0IGNvbnRhaW5zIHR3byBjb25zZWN1dGl2ZSB1bmRlcnNjb3Jl
cyAoaS5lLiBgX19gKQorICAgICphbnl3aGVyZSogaW4gaXRzIG5hbWUuCisKK1VzZXIgY29kZSBp
cyAqcHJvaGliaXRlZCogZnJvbSB1c2luZyBzdWNoIGlkZW50aWZpZXJzLgorCitOb3cgbGV0J3Mg
bG9vayBhdCB3aGF0IHRoaXMgbWVhbnMgZm9yIGBURVNUYCBhbmQgYFRFU1RfRmAuCisKK0N1cnJl
bnRseSBgVEVTVChUZXN0Q2FzZU5hbWUsIFRlc3ROYW1lKWAgZ2VuZXJhdGVzIGEgY2xhc3MgbmFt
ZWQKK2BUZXN0Q2FzZU5hbWVfVGVzdE5hbWVfVGVzdGAuIFdoYXQgaGFwcGVucyBpZiBgVGVzdENh
c2VOYW1lYCBvciBgVGVzdE5hbWVgCitjb250YWlucyBgX2A/CisKKzEuICBJZiBgVGVzdENhc2VO
YW1lYCBzdGFydHMgd2l0aCBhbiBgX2AgZm9sbG93ZWQgYnkgYW4gdXBwZXItY2FzZSBsZXR0ZXIg
KHNheSwKKyAgICBgX0Zvb2ApLCB3ZSBlbmQgdXAgd2l0aCBgX0Zvb19UZXN0TmFtZV9UZXN0YCwg
d2hpY2ggaXMgcmVzZXJ2ZWQgYW5kIHRodXMKKyAgICBpbnZhbGlkLgorMS4gIElmIGBUZXN0Q2Fz
ZU5hbWVgIGVuZHMgd2l0aCBhbiBgX2AgKHNheSwgYEZvb19gKSwgd2UgZ2V0CisgICAgYEZvb19f
VGVzdE5hbWVfVGVzdGAsIHdoaWNoIGlzIGludmFsaWQuCisxLiAgSWYgYFRlc3ROYW1lYCBzdGFy
dHMgd2l0aCBhbiBgX2AgKHNheSwgYF9CYXJgKSwgd2UgZ2V0CisgICAgYFRlc3RDYXNlTmFtZV9f
QmFyX1Rlc3RgLCB3aGljaCBpcyBpbnZhbGlkLgorMS4gIElmIGBUZXN0TmFtZWAgZW5kcyB3aXRo
IGFuIGBfYCAoc2F5LCBgQmFyX2ApLCB3ZSBnZXQKKyAgICBgVGVzdENhc2VOYW1lX0Jhcl9fVGVz
dGAsIHdoaWNoIGlzIGludmFsaWQuCisKK1NvIGNsZWFybHkgYFRlc3RDYXNlTmFtZWAgYW5kIGBU
ZXN0TmFtZWAgY2Fubm90IHN0YXJ0IG9yIGVuZCB3aXRoIGBfYCAoQWN0dWFsbHksCitgVGVzdENh
c2VOYW1lYCBjYW4gc3RhcnQgd2l0aCBgX2AgLS0gYXMgbG9uZyBhcyB0aGUgYF9gIGlzbid0IGZv
bGxvd2VkIGJ5IGFuCit1cHBlci1jYXNlIGxldHRlci4gQnV0IHRoYXQncyBnZXR0aW5nIGNvbXBs
aWNhdGVkLiBTbyBmb3Igc2ltcGxpY2l0eSB3ZSBqdXN0IHNheQordGhhdCBpdCBjYW5ub3Qgc3Rh
cnQgd2l0aCBgX2AuKS4KKworSXQgbWF5IHNlZW0gZmluZSBmb3IgYFRlc3RDYXNlTmFtZWAgYW5k
IGBUZXN0TmFtZWAgdG8gY29udGFpbiBgX2AgaW4gdGhlIG1pZGRsZS4KK0hvd2V2ZXIsIGNvbnNp
ZGVyIHRoaXM6CisKK2BgYGMrKworVEVTVChUaW1lLCBGbGllc19MaWtlX0FuX0Fycm93KSB7IC4u
LiB9CitURVNUKFRpbWVfRmxpZXMsIExpa2VfQW5fQXJyb3cpIHsgLi4uIH0KK2BgYAorCitOb3cs
IHRoZSB0d28gYFRFU1RgcyB3aWxsIGJvdGggZ2VuZXJhdGUgdGhlIHNhbWUgY2xhc3MKKyhgVGlt
ZV9GbGllc19MaWtlX0FuX0Fycm93X1Rlc3RgKS4gVGhhdCdzIG5vdCBnb29kLgorCitTbyBmb3Ig
c2ltcGxpY2l0eSwgd2UganVzdCBhc2sgdGhlIHVzZXJzIHRvIGF2b2lkIGBfYCBpbiBgVGVzdENh
c2VOYW1lYCBhbmQKK2BUZXN0TmFtZWAuIFRoZSBydWxlIGlzIG1vcmUgY29uc3RyYWluaW5nIHRo
YW4gbmVjZXNzYXJ5LCBidXQgaXQncyBzaW1wbGUgYW5kCitlYXN5IHRvIHJlbWVtYmVyLiBJdCBh
bHNvIGdpdmVzIGdvb2dsZXRlc3Qgc29tZSB3aWdnbGUgcm9vbSBpbiBjYXNlIGl0cworaW1wbGVt
ZW50YXRpb24gbmVlZHMgdG8gY2hhbmdlIGluIHRoZSBmdXR1cmUuCisKK0lmIHlvdSB2aW9sYXRl
IHRoZSBydWxlLCB0aGVyZSBtYXkgbm90IGJlIGltbWVkaWF0ZSBjb25zZXF1ZW5jZXMsIGJ1dCB5
b3VyIHRlc3QKK21heSAoanVzdCBtYXkpIGJyZWFrIHdpdGggYSBuZXcgY29tcGlsZXIgKG9yIGEg
bmV3IHZlcnNpb24gb2YgdGhlIGNvbXBpbGVyIHlvdQorYXJlIHVzaW5nKSBvciB3aXRoIGEgbmV3
IHZlcnNpb24gb2YgZ29vZ2xldGVzdC4gVGhlcmVmb3JlIGl0J3MgYmVzdCB0byBmb2xsb3cKK3Ro
ZSBydWxlLgorCisjIyBXaHkgZG9lcyBnb29nbGV0ZXN0IHN1cHBvcnQgYEVYUEVDVF9FUShOVUxM
LCBwdHIpYCBhbmQgYEFTU0VSVF9FUShOVUxMLCBwdHIpYCBidXQgbm90IGBFWFBFQ1RfTkUoTlVM
TCwgcHRyKWAgYW5kIGBBU1NFUlRfTkUoTlVMTCwgcHRyKWA/CisKK0ZpcnN0IG9mIGFsbCB5b3Ug
Y2FuIHVzZSBgRVhQRUNUX05FKG51bGxwdHIsIHB0cilgIGFuZCBgQVNTRVJUX05FKG51bGxwdHIs
CitwdHIpYC4gVGhpcyBpcyB0aGUgcHJlZmVycmVkIHN5bnRheCBpbiB0aGUgc3R5bGUgZ3VpZGUg
YmVjYXVzZSBudWxscHRyIGRvZXMgbm90CitoYXZlIHRoZSB0eXBlIHByb2JsZW1zIHRoYXQgTlVM
TCBkb2VzLiBXaGljaCBpcyB3aHkgTlVMTCBkb2VzIG5vdCB3b3JrLgorCitEdWUgdG8gc29tZSBw
ZWN1bGlhcml0eSBvZiBDKyssIGl0IHJlcXVpcmVzIHNvbWUgbm9uLXRyaXZpYWwgdGVtcGxhdGUg
bWV0YQorcHJvZ3JhbW1pbmcgdHJpY2tzIHRvIHN1cHBvcnQgdXNpbmcgYE5VTExgIGFzIGFuIGFy
Z3VtZW50IG9mIHRoZSBgRVhQRUNUX1hYKClgCithbmQgYEFTU0VSVF9YWCgpYCBtYWNyb3MuIFRo
ZXJlZm9yZSB3ZSBvbmx5IGRvIGl0IHdoZXJlIGl0J3MgbW9zdCBuZWVkZWQKKyhvdGhlcndpc2Ug
d2UgbWFrZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgZ29vZ2xldGVzdCBoYXJkZXIgdG8gbWFpbnRh
aW4gYW5kIG1vcmUKK2Vycm9yLXByb25lIHRoYW4gbmVjZXNzYXJ5KS4KKworVGhlIGBFWFBFQ1Rf
RVEoKWAgbWFjcm8gdGFrZXMgdGhlICpleHBlY3RlZCogdmFsdWUgYXMgaXRzIGZpcnN0IGFyZ3Vt
ZW50IGFuZCB0aGUKKyphY3R1YWwqIHZhbHVlIGFzIHRoZSBzZWNvbmQuIEl0J3MgcmVhc29uYWJs
ZSB0aGF0IHNvbWVvbmUgd2FudHMgdG8gd3JpdGUKK2BFWFBFQ1RfRVEoTlVMTCwgc29tZV9leHBy
ZXNzaW9uKWAsIGFuZCB0aGlzIGluZGVlZCB3YXMgcmVxdWVzdGVkIHNldmVyYWwgdGltZXMuCitU
aGVyZWZvcmUgd2UgaW1wbGVtZW50ZWQgaXQuCisKK1RoZSBuZWVkIGZvciBgRVhQRUNUX05FKE5V
TEwsIHB0cilgIGlzbid0IG5lYXJseSBhcyBzdHJvbmcuIFdoZW4gdGhlIGFzc2VydGlvbgorZmFp
bHMsIHlvdSBhbHJlYWR5IGtub3cgdGhhdCBgcHRyYCBtdXN0IGJlIGBOVUxMYCwgc28gaXQgZG9l
c24ndCBhZGQgYW55CitpbmZvcm1hdGlvbiB0byBwcmludCBgcHRyYCBpbiB0aGlzIGNhc2UuIFRo
YXQgbWVhbnMgYEVYUEVDVF9UUlVFKHB0ciAhPSBOVUxMKWAKK3dvcmtzIGp1c3QgYXMgd2VsbC4K
KworSWYgd2Ugd2VyZSB0byBzdXBwb3J0IGBFWFBFQ1RfTkUoTlVMTCwgcHRyKWAsIGZvciBjb25z
aXN0ZW5jeSB3ZSdsbCBoYXZlIHRvCitzdXBwb3J0IGBFWFBFQ1RfTkUocHRyLCBOVUxMKWAgYXMg
d2VsbCwgYXMgdW5saWtlIGBFWFBFQ1RfRVFgLCB3ZSBkb24ndCBoYXZlIGEKK2NvbnZlbnRpb24g
b24gdGhlIG9yZGVyIG9mIHRoZSB0d28gYXJndW1lbnRzIGZvciBgRVhQRUNUX05FYC4gVGhpcyBt
ZWFucyB1c2luZwordGhlIHRlbXBsYXRlIG1ldGEgcHJvZ3JhbW1pbmcgdHJpY2tzIHR3aWNlIGlu
IHRoZSBpbXBsZW1lbnRhdGlvbiwgbWFraW5nIGl0IGV2ZW4KK2hhcmRlciB0byB1bmRlcnN0YW5k
IGFuZCBtYWludGFpbi4gV2UgYmVsaWV2ZSB0aGUgYmVuZWZpdCBkb2Vzbid0IGp1c3RpZnkgdGhl
Citjb3N0LgorCitGaW5hbGx5LCB3aXRoIHRoZSBncm93dGggb2YgdGhlIGdNb2NrIG1hdGNoZXIg
bGlicmFyeSwgd2UgYXJlIGVuY291cmFnaW5nIHBlb3BsZQordG8gdXNlIHRoZSB1bmlmaWVkIGBF
WFBFQ1RfVEhBVCh2YWx1ZSwgbWF0Y2hlcilgIHN5bnRheCBtb3JlIG9mdGVuIGluIHRlc3RzLiBP
bmUKK3NpZ25pZmljYW50IGFkdmFudGFnZSBvZiB0aGUgbWF0Y2hlciBhcHByb2FjaCBpcyB0aGF0
IG1hdGNoZXJzIGNhbiBiZSBlYXNpbHkKK2NvbWJpbmVkIHRvIGZvcm0gbmV3IG1hdGNoZXJzLCB3
aGlsZSB0aGUgYEVYUEVDVF9ORWAsIGV0YywgbWFjcm9zIGNhbm5vdCBiZQorZWFzaWx5IGNvbWJp
bmVkLiBUaGVyZWZvcmUgd2Ugd2FudCB0byBpbnZlc3QgbW9yZSBpbiB0aGUgbWF0Y2hlcnMgdGhh
biBpbiB0aGUKK2BFWFBFQ1RfWFgoKWAgbWFjcm9zLgorCisjIyBJIG5lZWQgdG8gdGVzdCB0aGF0
IGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgb2YgYW4gaW50ZXJmYWNlIHNhdGlzZnkgc29tZSBj
b21tb24gcmVxdWlyZW1lbnRzLiBTaG91bGQgSSB1c2UgdHlwZWQgdGVzdHMgb3IgdmFsdWUtcGFy
YW1ldGVyaXplZCB0ZXN0cz8KKworRm9yIHRlc3RpbmcgdmFyaW91cyBpbXBsZW1lbnRhdGlvbnMg
b2YgdGhlIHNhbWUgaW50ZXJmYWNlLCBlaXRoZXIgdHlwZWQgdGVzdHMgb3IKK3ZhbHVlLXBhcmFt
ZXRlcml6ZWQgdGVzdHMgY2FuIGdldCBpdCBkb25lLiBJdCdzIHJlYWxseSB1cCB0byB5b3UgdGhl
IHVzZXIgdG8KK2RlY2lkZSB3aGljaCBpcyBtb3JlIGNvbnZlbmllbnQgZm9yIHlvdSwgZGVwZW5k
aW5nIG9uIHlvdXIgcGFydGljdWxhciBjYXNlLiBTb21lCityb3VnaCBndWlkZWxpbmVzOgorCisq
ICAgVHlwZWQgdGVzdHMgY2FuIGJlIGVhc2llciB0byB3cml0ZSBpZiBpbnN0YW5jZXMgb2YgdGhl
IGRpZmZlcmVudAorICAgIGltcGxlbWVudGF0aW9ucyBjYW4gYmUgY3JlYXRlZCB0aGUgc2FtZSB3
YXksIG1vZHVsbyB0aGUgdHlwZS4gRm9yIGV4YW1wbGUsCisgICAgaWYgYWxsIHRoZXNlIGltcGxl
bWVudGF0aW9ucyBoYXZlIGEgcHVibGljIGRlZmF1bHQgY29uc3RydWN0b3IgKHN1Y2ggdGhhdAor
ICAgIHlvdSBjYW4gd3JpdGUgYG5ldyBUeXBlUGFyYW1gKSwgb3IgaWYgdGhlaXIgZmFjdG9yeSBm
dW5jdGlvbnMgaGF2ZSB0aGUgc2FtZQorICAgIGZvcm0gKGUuZy4gYENyZWF0ZUluc3RhbmNlPFR5
cGVQYXJhbT4oKWApLgorKiAgIFZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgY2FuIGJlIGVhc2ll
ciB0byB3cml0ZSBpZiB5b3UgbmVlZCBkaWZmZXJlbnQgY29kZQorICAgIHBhdHRlcm5zIHRvIGNy
ZWF0ZSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zJyBpbnN0YW5jZXMsIGUuZy4gYG5ldyBGb29g
IHZzCisgICAgYG5ldyBCYXIoNSlgLiBUbyBhY2NvbW1vZGF0ZSBmb3IgdGhlIGRpZmZlcmVuY2Vz
LCB5b3UgY2FuIHdyaXRlIGZhY3RvcnkKKyAgICBmdW5jdGlvbiB3cmFwcGVycyBhbmQgcGFzcyB0
aGVzZSBmdW5jdGlvbiBwb2ludGVycyB0byB0aGUgdGVzdHMgYXMgdGhlaXIKKyAgICBwYXJhbWV0
ZXJzLgorKiAgIFdoZW4gYSB0eXBlZCB0ZXN0IGZhaWxzLCB0aGUgb3V0cHV0IGluY2x1ZGVzIHRo
ZSBuYW1lIG9mIHRoZSB0eXBlLCB3aGljaCBjYW4KKyAgICBoZWxwIHlvdSBxdWlja2x5IGlkZW50
aWZ5IHdoaWNoIGltcGxlbWVudGF0aW9uIGlzIHdyb25nLiBWYWx1ZS1wYXJhbWV0ZXJpemVkCisg
ICAgdGVzdHMgY2Fubm90IGRvIHRoaXMsIHNvIHRoZXJlIHlvdSdsbCBoYXZlIHRvIGxvb2sgYXQg
dGhlIGl0ZXJhdGlvbiBudW1iZXIKKyAgICB0byBrbm93IHdoaWNoIGltcGxlbWVudGF0aW9uIHRo
ZSBmYWlsdXJlIGlzIGZyb20sIHdoaWNoIGlzIGxlc3MgZGlyZWN0LgorKiAgIElmIHlvdSBtYWtl
IGEgbWlzdGFrZSB3cml0aW5nIGEgdHlwZWQgdGVzdCwgdGhlIGNvbXBpbGVyIGVycm9ycyBjYW4g
YmUKKyAgICBoYXJkZXIgdG8gZGlnZXN0LCBhcyB0aGUgY29kZSBpcyB0ZW1wbGF0aXplZC4KKyog
ICBXaGVuIHVzaW5nIHR5cGVkIHRlc3RzLCB5b3UgbmVlZCB0byBtYWtlIHN1cmUgeW91IGFyZSB0
ZXN0aW5nIGFnYWluc3QgdGhlCisgICAgaW50ZXJmYWNlIHR5cGUsIG5vdCB0aGUgY29uY3JldGUg
dHlwZXMgKGluIG90aGVyIHdvcmRzLCB5b3Ugd2FudCB0byBtYWtlCisgICAgc3VyZSBgaW1wbGlj
aXRfY2FzdDxNeUludGVyZmFjZSo+KG15X2NvbmNyZXRlX2ltcGwpYCB3b3Jrcywgbm90IGp1c3Qg
dGhhdAorICAgIGBteV9jb25jcmV0ZV9pbXBsYCB3b3JrcykuIEl0J3MgbGVzcyBsaWtlbHkgdG8g
bWFrZSBtaXN0YWtlcyBpbiB0aGlzIGFyZWEKKyAgICB3aGVuIHVzaW5nIHZhbHVlLXBhcmFtZXRl
cml6ZWQgdGVzdHMuCisKK0kgaG9wZSBJIGRpZG4ndCBjb25mdXNlIHlvdSBtb3JlLiA6LSkgSWYg
eW91IGRvbid0IG1pbmQsIEknZCBzdWdnZXN0IHlvdSB0byBnaXZlCitib3RoIGFwcHJvYWNoZXMg
YSB0cnkuIFByYWN0aWNlIGlzIGEgbXVjaCBiZXR0ZXIgd2F5IHRvIGdyYXNwIHRoZSBzdWJ0bGUK
K2RpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHR3byB0b29scy4gT25jZSB5b3UgaGF2ZSBzb21lIGNv
bmNyZXRlIGV4cGVyaWVuY2UsIHlvdQorY2FuIG11Y2ggbW9yZSBlYXNpbHkgZGVjaWRlIHdoaWNo
IG9uZSB0byB1c2UgdGhlIG5leHQgdGltZS4KKworIyMgTXkgZGVhdGggdGVzdHMgYmVjYW1lIHZl
cnkgc2xvdyAtIHdoYXQgaGFwcGVuZWQ/CisKK0luIEF1Z3VzdCAyMDA4IHdlIGhhZCB0byBzd2l0
Y2ggdGhlIGRlZmF1bHQgZGVhdGggdGVzdCBzdHlsZSBmcm9tIGBmYXN0YCB0bworYHRocmVhZHNh
ZmVgLCBhcyB0aGUgZm9ybWVyIGlzIG5vIGxvbmdlciBzYWZlIG5vdyB0aGF0IHRocmVhZGVkIGxv
Z2dpbmcgaXMgdGhlCitkZWZhdWx0LiBUaGlzIGNhdXNlZCBtYW55IGRlYXRoIHRlc3RzIHRvIHNs
b3cgZG93bi4gVW5mb3J0dW5hdGVseSB0aGlzIGNoYW5nZQord2FzIG5lY2Vzc2FyeS4KKworUGxl
YXNlIHJlYWQgW0ZpeGluZyBGYWlsaW5nIERlYXRoIFRlc3RzXShkZWF0aF90ZXN0X3N0eWxlcy5t
ZCkgZm9yIHdoYXQgeW91IGNhbgorZG8uCisKKyMjIEkgZ290IHNvbWUgcnVuLXRpbWUgZXJyb3Jz
IGFib3V0IGludmFsaWQgcHJvdG8gZGVzY3JpcHRvcnMgd2hlbiB1c2luZyBgUHJvdG9jb2xNZXNz
YWdlRXF1YWxzYC4gSGVscCEKKworKipOb3RlOioqIGBQcm90b2NvbE1lc3NhZ2VFcXVhbHNgIGFu
ZCBgUHJvdG9jb2xNZXNzYWdlRXF1aXZgIGFyZSAqZGVwcmVjYXRlZCoKK25vdy4gUGxlYXNlIHVz
ZSBgRXF1YWxzUHJvdG9gLCBldGMgaW5zdGVhZC4KKworYFByb3RvY29sTWVzc2FnZUVxdWFsc2Ag
YW5kIGBQcm90b2NvbE1lc3NhZ2VFcXVpdmAgd2VyZSByZWRlZmluZWQgcmVjZW50bHkgYW5kCith
cmUgbm93IGxlc3MgdG9sZXJhbnQgb24gaW52YWxpZCBwcm90b2NvbCBidWZmZXIgZGVmaW5pdGlv
bnMuIEluIHBhcnRpY3VsYXIsIGlmCit5b3UgaGF2ZSBhIGBmb28ucHJvdG9gIHRoYXQgZG9lc24n
dCBmdWxseSBxdWFsaWZ5IHRoZSB0eXBlIG9mIGEgcHJvdG9jb2wgbWVzc2FnZQoraXQgcmVmZXJl
bmNlcyAoZS5nLiBgbWVzc2FnZTxCYXI+YCB3aGVyZSBpdCBzaG91bGQgYmUgYG1lc3NhZ2U8Ymxh
aC5CYXI+YCksIHlvdQord2lsbCBub3cgZ2V0IHJ1bi10aW1lIGVycm9ycyBsaWtlOgorCitgYGAK
Ky4uLiBkZXNjcmlwdG9yLmNjOi4uLl0gSW52YWxpZCBwcm90byBkZXNjcmlwdG9yIGZvciBmaWxl
ICJwYXRoL3RvL2Zvby5wcm90byI6CisuLi4gZGVzY3JpcHRvci5jYzouLi5dICBibGFoLk15TWVz
c2FnZS5teV9maWVsZDogIi5CYXIiIGlzIG5vdCBkZWZpbmVkLgorYGBgCisKK0lmIHlvdSBzZWUg
dGhpcywgeW91ciBgLnByb3RvYCBmaWxlIGlzIGJyb2tlbiBhbmQgbmVlZHMgdG8gYmUgZml4ZWQg
YnkgbWFraW5nCit0aGUgdHlwZXMgZnVsbHkgcXVhbGlmaWVkLiBUaGUgbmV3IGRlZmluaXRpb24g
b2YgYFByb3RvY29sTWVzc2FnZUVxdWFsc2AgYW5kCitgUHJvdG9jb2xNZXNzYWdlRXF1aXZgIGp1
c3QgaGFwcGVuIHRvIHJldmVhbCB5b3VyIGJ1Zy4KKworIyMgTXkgZGVhdGggdGVzdCBtb2RpZmll
cyBzb21lIHN0YXRlLCBidXQgdGhlIGNoYW5nZSBzZWVtcyBsb3N0IGFmdGVyIHRoZSBkZWF0aCB0
ZXN0IGZpbmlzaGVzLiBXaHk/CisKK0RlYXRoIHRlc3RzIChgRVhQRUNUX0RFQVRIYCwgZXRjKSBh
cmUgZXhlY3V0ZWQgaW4gYSBzdWItcHJvY2VzcyBzLnQuIHRoZQorZXhwZWN0ZWQgY3Jhc2ggd29u
J3Qga2lsbCB0aGUgdGVzdCBwcm9ncmFtIChpLmUuIHRoZSBwYXJlbnQgcHJvY2VzcykuIEFzIGEK
K3Jlc3VsdCwgYW55IGluLW1lbW9yeSBzaWRlIGVmZmVjdHMgdGhleSBpbmN1ciBhcmUgb2JzZXJ2
YWJsZSBpbiB0aGVpciByZXNwZWN0aXZlCitzdWItcHJvY2Vzc2VzLCBidXQgbm90IGluIHRoZSBw
YXJlbnQgcHJvY2Vzcy4gWW91IGNhbiB0aGluayBvZiB0aGVtIGFzIHJ1bm5pbmcKK2luIGEgcGFy
YWxsZWwgdW5pdmVyc2UsIG1vcmUgb3IgbGVzcy4KKworSW4gcGFydGljdWxhciwgaWYgeW91IHVz
ZSBbZ01vY2tdKC4uLy4uL2dvb2dsZW1vY2spIGFuZCB0aGUgZGVhdGggdGVzdCBzdGF0ZW1lbnQK
K2ludm9rZXMgc29tZSBtb2NrIG1ldGhvZHMsIHRoZSBwYXJlbnQgcHJvY2VzcyB3aWxsIHRoaW5r
IHRoZSBjYWxscyBoYXZlIG5ldmVyCitvY2N1cnJlZC4gVGhlcmVmb3JlLCB5b3UgbWF5IHdhbnQg
dG8gbW92ZSB5b3VyIGBFWFBFQ1RfQ0FMTGAgc3RhdGVtZW50cyBpbnNpZGUKK3RoZSBgRVhQRUNU
X0RFQVRIYCBtYWNyby4KKworIyMgRVhQRUNUX0VRKGh0b25sKGJsYWgpLCBibGFoX2JsYWgpIGdl
bmVyYXRlcyB3ZWlyZCBjb21waWxlciBlcnJvcnMgaW4gb3B0IG1vZGUuIElzIHRoaXMgYSBnb29n
bGV0ZXN0IGJ1Zz8KKworQWN0dWFsbHksIHRoZSBidWcgaXMgaW4gYGh0b25sKClgLgorCitBY2Nv
cmRpbmcgdG8gYCdtYW4gaHRvbmwnYCwgYGh0b25sKClgIGlzIGEgKmZ1bmN0aW9uKiwgd2hpY2gg
bWVhbnMgaXQncyB2YWxpZCB0bwordXNlIGBodG9ubGAgYXMgYSBmdW5jdGlvbiBwb2ludGVyLiBI
b3dldmVyLCBpbiBvcHQgbW9kZSBgaHRvbmwoKWAgaXMgZGVmaW5lZCBhcworYSAqbWFjcm8qLCB3
aGljaCBicmVha3MgdGhpcyB1c2FnZS4KKworV29yc2UsIHRoZSBtYWNybyBkZWZpbml0aW9uIG9m
IGBodG9ubCgpYCB1c2VzIGEgYGdjY2AgZXh0ZW5zaW9uIGFuZCBpcyAqbm90Kgorc3RhbmRhcmQg
QysrLiBUaGF0IGhhY2t5IGltcGxlbWVudGF0aW9uIGhhcyBzb21lIGFkIGhvYyBsaW1pdGF0aW9u
cy4gSW4KK3BhcnRpY3VsYXIsIGl0IHByZXZlbnRzIHlvdSBmcm9tIHdyaXRpbmcgYEZvbzxzaXpl
b2YoaHRvbmwoeCkpPigpYCwgd2hlcmUgYEZvb2AKK2lzIGEgdGVtcGxhdGUgdGhhdCBoYXMgYW4g
aW50ZWdyYWwgYXJndW1lbnQuCisKK1RoZSBpbXBsZW1lbnRhdGlvbiBvZiBgRVhQRUNUX0VRKGEs
IGIpYCB1c2VzIGBzaXplb2YoLi4uIGEgLi4uKWAgaW5zaWRlIGEKK3RlbXBsYXRlIGFyZ3VtZW50
LCBhbmQgdGh1cyBkb2Vzbid0IGNvbXBpbGUgaW4gb3B0IG1vZGUgd2hlbiBgYWAgY29udGFpbnMg
YSBjYWxsCit0byBgaHRvbmwoKWAuIEl0IGlzIGRpZmZpY3VsdCB0byBtYWtlIGBFWFBFQ1RfRVFg
IGJ5cGFzcyB0aGUgYGh0b25sKClgIGJ1ZywgYXMKK3RoZSBzb2x1dGlvbiBtdXN0IHdvcmsgd2l0
aCBkaWZmZXJlbnQgY29tcGlsZXJzIG9uIHZhcmlvdXMgcGxhdGZvcm1zLgorCitgaHRvbmwoKWAg
aGFzIHNvbWUgb3RoZXIgcHJvYmxlbXMgYXMgZGVzY3JpYmVkIGluIGAvL3V0aWwvZW5kaWFuL2Vu
ZGlhbi5oYCwKK3doaWNoIGRlZmluZXMgYGdodG9ubCgpYCB0byByZXBsYWNlIGl0LiBgZ2h0b25s
KClgIGRvZXMgdGhlIHNhbWUgdGhpbmcgYGh0b25sKClgCitkb2VzLCBvbmx5IHdpdGhvdXQgaXRz
IHByb2JsZW1zLiBXZSBzdWdnZXN0IHlvdSB0byB1c2UgYGdodG9ubCgpYCBpbnN0ZWFkIG9mCitg
aHRvbmwoKWAsIGJvdGggaW4geW91ciB0ZXN0cyBhbmQgcHJvZHVjdGlvbiBjb2RlLgorCitgLy91
dGlsL2VuZGlhbi9lbmRpYW4uaGAgYWxzbyBkZWZpbmVzIGBnaHRvbnMoKWAsIHdoaWNoIHNvbHZl
cyBzaW1pbGFyIHByb2JsZW1zCitpbiBgaHRvbnMoKWAuCisKK0Rvbid0IGZvcmdldCB0byBhZGQg
YC8vdXRpbC9lbmRpYW5gIHRvIHRoZSBsaXN0IG9mIGRlcGVuZGVuY2llcyBpbiB0aGUgYEJVSUxE
YAorZmlsZSB3aGVyZXZlciBgZ2h0b25sKClgIGFuZCBgZ2h0b25zKClgIGFyZSB1c2VkLiBUaGUg
bGlicmFyeSBjb25zaXN0cyBvZiBhCitzaW5nbGUgaGVhZGVyIGZpbGUgYW5kIHdpbGwgbm90IGJs
b2F0IHlvdXIgYmluYXJ5LgorCisjIyBUaGUgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJ1bmRl
ZmluZWQgcmVmZXJlbmNlcyIgdG8gc29tZSBzdGF0aWMgY29uc3QgbWVtYmVyIHZhcmlhYmxlcywg
YnV0IEkgZGlkIGRlZmluZSB0aGVtIGluIHRoZSBjbGFzcyBib2R5LiBXaGF0J3Mgd3Jvbmc/CisK
K0lmIHlvdXIgY2xhc3MgaGFzIGEgc3RhdGljIGRhdGEgbWVtYmVyOgorCitgYGBjKysKKy8vIGZv
by5oCitjbGFzcyBGb28geworICAuLi4KKyAgc3RhdGljIGNvbnN0IGludCBrQmFyID0gMTAwOwor
fTsKK2BgYAorCitZb3UgYWxzbyBuZWVkIHRvIGRlZmluZSBpdCAqb3V0c2lkZSogb2YgdGhlIGNs
YXNzIGJvZHkgaW4gYGZvby5jY2A6CisKK2BgYGMrKworY29uc3QgaW50IEZvbzo6a0JhcjsgIC8v
IE5vIGluaXRpYWxpemVyIGhlcmUuCitgYGAKKworT3RoZXJ3aXNlIHlvdXIgY29kZSBpcyAqKmlu
dmFsaWQgQysrKiosIGFuZCBtYXkgYnJlYWsgaW4gdW5leHBlY3RlZCB3YXlzLiBJbgorcGFydGlj
dWxhciwgdXNpbmcgaXQgaW4gZ29vZ2xldGVzdCBjb21wYXJpc29uIGFzc2VydGlvbnMgKGBFWFBF
Q1RfRVFgLCBldGMpIHdpbGwKK2dlbmVyYXRlIGFuICJ1bmRlZmluZWQgcmVmZXJlbmNlIiBsaW5r
ZXIgZXJyb3IuIFRoZSBmYWN0IHRoYXQgIml0IHVzZWQgdG8gd29yayIKK2RvZXNuJ3QgbWVhbiBp
dCdzIHZhbGlkLiBJdCBqdXN0IG1lYW5zIHRoYXQgeW91IHdlcmUgbHVja3kuIDotKQorCisjIyBD
YW4gSSBkZXJpdmUgYSB0ZXN0IGZpeHR1cmUgZnJvbSBhbm90aGVyPworCitZZXMuCisKK0VhY2gg
dGVzdCBmaXh0dXJlIGhhcyBhIGNvcnJlc3BvbmRpbmcgYW5kIHNhbWUgbmFtZWQgdGVzdCBjYXNl
LiBUaGlzIG1lYW5zIG9ubHkKK29uZSB0ZXN0IGNhc2UgY2FuIHVzZSBhIHBhcnRpY3VsYXIgZml4
dHVyZS4gU29tZXRpbWVzLCBob3dldmVyLCBtdWx0aXBsZSB0ZXN0CitjYXNlcyBtYXkgd2FudCB0
byB1c2UgdGhlIHNhbWUgb3Igc2xpZ2h0bHkgZGlmZmVyZW50IGZpeHR1cmVzLiBGb3IgZXhhbXBs
ZSwgeW91CittYXkgd2FudCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb2YgYSBHVUkgbGlicmFyeSdz
IHRlc3QgY2FzZXMgZG9uJ3QgbGVhaworaW1wb3J0YW50IHN5c3RlbSByZXNvdXJjZXMgbGlrZSBm
b250cyBhbmQgYnJ1c2hlcy4KKworSW4gZ29vZ2xldGVzdCwgeW91IHNoYXJlIGEgZml4dHVyZSBh
bW9uZyB0ZXN0IGNhc2VzIGJ5IHB1dHRpbmcgdGhlIHNoYXJlZCBsb2dpYworaW4gYSBiYXNlIHRl
c3QgZml4dHVyZSwgdGhlbiBkZXJpdmluZyBmcm9tIHRoYXQgYmFzZSBhIHNlcGFyYXRlIGZpeHR1
cmUgZm9yIGVhY2gKK3Rlc3QgY2FzZSB0aGF0IHdhbnRzIHRvIHVzZSB0aGlzIGNvbW1vbiBsb2dp
Yy4gWW91IHRoZW4gdXNlIGBURVNUX0YoKWAgdG8gd3JpdGUKK3Rlc3RzIHVzaW5nIGVhY2ggZGVy
aXZlZCBmaXh0dXJlLgorCitUeXBpY2FsbHksIHlvdXIgY29kZSBsb29rcyBsaWtlIHRoaXM6CisK
K2BgYGMrKworLy8gRGVmaW5lcyBhIGJhc2UgdGVzdCBmaXh0dXJlLgorY2xhc3MgQmFzZVRlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIC4uLgorfTsKKworLy8g
RGVyaXZlcyBhIGZpeHR1cmUgRm9vVGVzdCBmcm9tIEJhc2VUZXN0LgorY2xhc3MgRm9vVGVzdCA6
IHB1YmxpYyBCYXNlVGVzdCB7CisgcHJvdGVjdGVkOgorICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUg
eworICAgIEJhc2VUZXN0OjpTZXRVcCgpOyAgLy8gU2V0cyB1cCB0aGUgYmFzZSBmaXh0dXJlIGZp
cnN0LgorICAgIC4uLiBhZGRpdGlvbmFsIHNldC11cCB3b3JrIC4uLgorICB9CisKKyAgdm9pZCBU
ZWFyRG93bigpIG92ZXJyaWRlIHsKKyAgICAuLi4gY2xlYW4tdXAgd29yayBmb3IgRm9vVGVzdCAu
Li4KKyAgICBCYXNlVGVzdDo6VGVhckRvd24oKTsgIC8vIFJlbWVtYmVyIHRvIHRlYXIgZG93biB0
aGUgYmFzZSBmaXh0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciBjbGVh
bmluZyB1cCBGb29UZXN0IQorICB9CisKKyAgLi4uIGZ1bmN0aW9ucyBhbmQgdmFyaWFibGVzIGZv
ciBGb29UZXN0IC4uLgorfTsKKworLy8gVGVzdHMgdGhhdCB1c2UgdGhlIGZpeHR1cmUgRm9vVGVz
dC4KK1RFU1RfRihGb29UZXN0LCBCYXIpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBCYXopIHsg
Li4uIH0KKworLi4uIGFkZGl0aW9uYWwgZml4dHVyZXMgZGVyaXZlZCBmcm9tIEJhc2VUZXN0IC4u
LgorYGBgCisKK0lmIG5lY2Vzc2FyeSwgeW91IGNhbiBjb250aW51ZSB0byBkZXJpdmUgdGVzdCBm
aXh0dXJlcyBmcm9tIGEgZGVyaXZlZCBmaXh0dXJlLgorZ29vZ2xldGVzdCBoYXMgbm8gbGltaXQg
b24gaG93IGRlZXAgdGhlIGhpZXJhcmNoeSBjYW4gYmUuCisKK0ZvciBhIGNvbXBsZXRlIGV4YW1w
bGUgdXNpbmcgZGVyaXZlZCB0ZXN0IGZpeHR1cmVzLCBzZWUgW2dvb2dsZXRlc3QKK3NhbXBsZV0o
aHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2dsZXRl
c3Qvc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjKQorCisjIyBNeSBjb21waWxlciBjb21wbGFp
bnMgInZvaWQgdmFsdWUgbm90IGlnbm9yZWQgYXMgaXQgb3VnaHQgdG8gYmUuIiBXaGF0IGRvZXMg
dGhpcyBtZWFuPworCitZb3UncmUgcHJvYmFibHkgdXNpbmcgYW4gYEFTU0VSVF8qKClgIGluIGEg
ZnVuY3Rpb24gdGhhdCBkb2Vzbid0IHJldHVybiBgdm9pZGAuCitgQVNTRVJUXyooKWAgY2FuIG9u
bHkgYmUgdXNlZCBpbiBgdm9pZGAgZnVuY3Rpb25zLCBkdWUgdG8gZXhjZXB0aW9ucyBiZWluZwor
ZGlzYWJsZWQgYnkgb3VyIGJ1aWxkIHN5c3RlbS4gUGxlYXNlIHNlZSBtb3JlIGRldGFpbHMKK1to
ZXJlXShhZHZhbmNlZC5tZCNhc3NlcnRpb24tcGxhY2VtZW50KS4KKworIyMgTXkgZGVhdGggdGVz
dCBoYW5ncyAob3Igc2VnLWZhdWx0cykuIEhvdyBkbyBJIGZpeCBpdD8KKworSW4gZ29vZ2xldGVz
dCwgZGVhdGggdGVzdHMgYXJlIHJ1biBpbiBhIGNoaWxkIHByb2Nlc3MgYW5kIHRoZSB3YXkgdGhl
eSB3b3JrIGlzCitkZWxpY2F0ZS4gVG8gd3JpdGUgZGVhdGggdGVzdHMgeW91IHJlYWxseSBuZWVk
IHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgd29yay4KK1BsZWFzZSBtYWtlIHN1cmUgeW91IGhhdmUg
cmVhZCBbdGhpc10oYWR2YW5jZWQubWQjaG93LWl0LXdvcmtzKS4KKworSW4gcGFydGljdWxhciwg
ZGVhdGggdGVzdHMgZG9uJ3QgbGlrZSBoYXZpbmcgbXVsdGlwbGUgdGhyZWFkcyBpbiB0aGUgcGFy
ZW50Citwcm9jZXNzLiBTbyB0aGUgZmlyc3QgdGhpbmcgeW91IGNhbiB0cnkgaXMgdG8gZWxpbWlu
YXRlIGNyZWF0aW5nIHRocmVhZHMgb3V0c2lkZQorb2YgYEVYUEVDVF9ERUFUSCgpYC4gRm9yIGV4
YW1wbGUsIHlvdSBtYXkgd2FudCB0byB1c2UgW21vY2tzXSguLi8uLi9nb29nbGVtb2NrKQorb3Ig
ZmFrZSBvYmplY3RzIGluc3RlYWQgb2YgcmVhbCBvbmVzIGluIHlvdXIgdGVzdHMuCisKK1NvbWV0
aW1lcyB0aGlzIGlzIGltcG9zc2libGUgYXMgc29tZSBsaWJyYXJ5IHlvdSBtdXN0IHVzZSBtYXkg
YmUgY3JlYXRpbmcKK3RocmVhZHMgYmVmb3JlIGBtYWluKClgIGlzIGV2ZW4gcmVhY2hlZC4gSW4g
dGhpcyBjYXNlLCB5b3UgY2FuIHRyeSB0byBtaW5pbWl6ZQordGhlIGNoYW5jZSBvZiBjb25mbGlj
dHMgYnkgZWl0aGVyIG1vdmluZyBhcyBtYW55IGFjdGl2aXRpZXMgYXMgcG9zc2libGUgaW5zaWRl
CitgRVhQRUNUX0RFQVRIKClgIChpbiB0aGUgZXh0cmVtZSBjYXNlLCB5b3Ugd2FudCB0byBtb3Zl
IGV2ZXJ5dGhpbmcgaW5zaWRlKSwgb3IKK2xlYXZpbmcgYXMgZmV3IHRoaW5ncyBhcyBwb3NzaWJs
ZSBpbiBpdC4gQWxzbywgeW91IGNhbiB0cnkgdG8gc2V0IHRoZSBkZWF0aCB0ZXN0CitzdHlsZSB0
byBgInRocmVhZHNhZmUiYCwgd2hpY2ggaXMgc2FmZXIgYnV0IHNsb3dlciwgYW5kIHNlZSBpZiBp
dCBoZWxwcy4KKworSWYgeW91IGdvIHdpdGggdGhyZWFkLXNhZmUgZGVhdGggdGVzdHMsIHJlbWVt
YmVyIHRoYXQgdGhleSByZXJ1biB0aGUgdGVzdAorcHJvZ3JhbSBmcm9tIHRoZSBiZWdpbm5pbmcg
aW4gdGhlIGNoaWxkIHByb2Nlc3MuIFRoZXJlZm9yZSBtYWtlIHN1cmUgeW91cgorcHJvZ3JhbSBj
YW4gcnVuIHNpZGUtYnktc2lkZSB3aXRoIGl0c2VsZiBhbmQgaXMgZGV0ZXJtaW5pc3RpYy4KKwor
SW4gdGhlIGVuZCwgdGhpcyBib2lscyBkb3duIHRvIGdvb2QgY29uY3VycmVudCBwcm9ncmFtbWlu
Zy4gWW91IGhhdmUgdG8gbWFrZQorc3VyZSB0aGF0IHRoZXJlIGlzIG5vIHJhY2UgY29uZGl0aW9u
cyBvciBkZWFkIGxvY2tzIGluIHlvdXIgcHJvZ3JhbS4gTm8gc2lsdmVyCitidWxsZXQgLSBzb3Jy
eSEKKworIyMgU2hvdWxkIEkgdXNlIHRoZSBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIG9mIHRoZSB0
ZXN0IGZpeHR1cmUgb3IgU2V0VXAoKS9UZWFyRG93bigpPworCitUaGUgZmlyc3QgdGhpbmcgdG8g
cmVtZW1iZXIgaXMgdGhhdCBnb29nbGV0ZXN0IGRvZXMgKipub3QqKiByZXVzZSB0aGUgc2FtZSB0
ZXN0CitmaXh0dXJlIG9iamVjdCBhY3Jvc3MgbXVsdGlwbGUgdGVzdHMuIEZvciBlYWNoIGBURVNU
X0ZgLCBnb29nbGV0ZXN0IHdpbGwgY3JlYXRlCithICoqZnJlc2gqKiB0ZXN0IGZpeHR1cmUgb2Jq
ZWN0LCBpbW1lZGlhdGVseSBjYWxsIGBTZXRVcCgpYCwgcnVuIHRoZSB0ZXN0IGJvZHksCitjYWxs
IGBUZWFyRG93bigpYCwgYW5kIHRoZW4gZGVsZXRlIHRoZSB0ZXN0IGZpeHR1cmUgb2JqZWN0Lgor
CitXaGVuIHlvdSBuZWVkIHRvIHdyaXRlIHBlci10ZXN0IHNldC11cCBhbmQgdGVhci1kb3duIGxv
Z2ljLCB5b3UgaGF2ZSB0aGUgY2hvaWNlCitiZXR3ZWVuIHVzaW5nIHRoZSB0ZXN0IGZpeHR1cmUg
Y29uc3RydWN0b3IvZGVzdHJ1Y3RvciBvciBgU2V0VXAoKS9UZWFyRG93bigpYC4KK1RoZSBmb3Jt
ZXIgaXMgdXN1YWxseSBwcmVmZXJyZWQsIGFzIGl0IGhhcyB0aGUgZm9sbG93aW5nIGJlbmVmaXRz
OgorCisqICAgQnkgaW5pdGlhbGl6aW5nIGEgbWVtYmVyIHZhcmlhYmxlIGluIHRoZSBjb25zdHJ1
Y3Rvciwgd2UgaGF2ZSB0aGUgb3B0aW9uIHRvCisgICAgbWFrZSBpdCBgY29uc3RgLCB3aGljaCBo
ZWxwcyBwcmV2ZW50IGFjY2lkZW50YWwgY2hhbmdlcyB0byBpdHMgdmFsdWUgYW5kCisgICAgbWFr
ZXMgdGhlIHRlc3RzIG1vcmUgb2J2aW91c2x5IGNvcnJlY3QuCisqICAgSW4gY2FzZSB3ZSBuZWVk
IHRvIHN1YmNsYXNzIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MsIHRoZSBzdWJjbGFzcycKKyAgICBj
b25zdHJ1Y3RvciBpcyBndWFyYW50ZWVkIHRvIGNhbGwgdGhlIGJhc2UgY2xhc3MnIGNvbnN0cnVj
dG9yICpmaXJzdCosIGFuZAorICAgIHRoZSBzdWJjbGFzcycgZGVzdHJ1Y3RvciBpcyBndWFyYW50
ZWVkIHRvIGNhbGwgdGhlIGJhc2UgY2xhc3MnIGRlc3RydWN0b3IKKyAgICAqYWZ0ZXJ3YXJkKi4g
V2l0aCBgU2V0VXAoKS9UZWFyRG93bigpYCwgYSBzdWJjbGFzcyBtYXkgbWFrZSB0aGUgbWlzdGFr
ZSBvZgorICAgIGZvcmdldHRpbmcgdG8gY2FsbCB0aGUgYmFzZSBjbGFzcycgYFNldFVwKCkvVGVh
ckRvd24oKWAgb3IgY2FsbCB0aGVtIGF0IHRoZQorICAgIHdyb25nIHRpbWUuCisKK1lvdSBtYXkg
c3RpbGwgd2FudCB0byB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAgaW4gdGhlIGZvbGxvd2luZyBy
YXJlIGNhc2VzOgorCisqICAgSW4gdGhlIGJvZHkgb2YgYSBjb25zdHJ1Y3RvciAob3IgZGVzdHJ1
Y3RvciksIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHVzZSB0aGUKKyAgICBgQVNTRVJUX3h4YCBtYWNy
b3MuIFRoZXJlZm9yZSwgaWYgdGhlIHNldC11cCBvcGVyYXRpb24gY291bGQgY2F1c2UgYSBmYXRh
bAorICAgIHRlc3QgZmFpbHVyZSB0aGF0IHNob3VsZCBwcmV2ZW50IHRoZSB0ZXN0IGZyb20gcnVu
bmluZywgaXQncyBuZWNlc3NhcnkgdG8KKyAgICB1c2UgYSBgQ0hFQ0tgIG1hY3JvIG9yIHRvIHVz
ZSBgU2V0VXAoKWAgaW5zdGVhZCBvZiBhIGNvbnN0cnVjdG9yLgorKiAgIElmIHRoZSB0ZWFyLWRv
d24gb3BlcmF0aW9uIGNvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiwgeW91IG11c3QgdXNlCisgICAg
YFRlYXJEb3duKClgIGFzIG9wcG9zZWQgdG8gdGhlIGRlc3RydWN0b3IsIGFzIHRocm93aW5nIGlu
IGEgZGVzdHJ1Y3RvciBsZWFkcworICAgIHRvIHVuZGVmaW5lZCBiZWhhdmlvciBhbmQgdXN1YWxs
eSB3aWxsIGtpbGwgeW91ciBwcm9ncmFtIHJpZ2h0IGF3YXkuIE5vdGUKKyAgICB0aGF0IG1hbnkg
c3RhbmRhcmQgbGlicmFyaWVzIChsaWtlIFNUTCkgbWF5IHRocm93IHdoZW4gZXhjZXB0aW9ucyBh
cmUKKyAgICBlbmFibGVkIGluIHRoZSBjb21waWxlci4gVGhlcmVmb3JlIHlvdSBzaG91bGQgcHJl
ZmVyIGBUZWFyRG93bigpYCBpZiB5b3UKKyAgICB3YW50IHRvIHdyaXRlIHBvcnRhYmxlIHRlc3Rz
IHRoYXQgd29yayB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucy4KKyogICBUaGUgZ29vZ2xldGVz
dCB0ZWFtIGlzIGNvbnNpZGVyaW5nIG1ha2luZyB0aGUgYXNzZXJ0aW9uIG1hY3JvcyB0aHJvdyBv
bgorICAgIHBsYXRmb3JtcyB3aGVyZSBleGNlcHRpb25zIGFyZSBlbmFibGVkIChlLmcuIFdpbmRv
d3MsIE1hYyBPUywgYW5kIExpbnV4CisgICAgY2xpZW50LXNpZGUpLCB3aGljaCB3aWxsIGVsaW1p
bmF0ZSB0aGUgbmVlZCBmb3IgdGhlIHVzZXIgdG8gcHJvcGFnYXRlCisgICAgZmFpbHVyZXMgZnJv
bSBhIHN1YnJvdXRpbmUgdG8gaXRzIGNhbGxlci4gVGhlcmVmb3JlLCB5b3Ugc2hvdWxkbid0IHVz
ZQorICAgIGdvb2dsZXRlc3QgYXNzZXJ0aW9ucyBpbiBhIGRlc3RydWN0b3IgaWYgeW91ciBjb2Rl
IGNvdWxkIHJ1biBvbiBzdWNoIGEKKyAgICBwbGF0Zm9ybS4KKyogICBJbiBhIGNvbnN0cnVjdG9y
IG9yIGRlc3RydWN0b3IsIHlvdSBjYW5ub3QgbWFrZSBhIHZpcnR1YWwgZnVuY3Rpb24gY2FsbCBv
bgorICAgIHRoaXMgb2JqZWN0LiAoWW91IGNhbiBjYWxsIGEgbWV0aG9kIGRlY2xhcmVkIGFzIHZp
cnR1YWwsIGJ1dCBpdCB3aWxsIGJlCisgICAgc3RhdGljYWxseSBib3VuZC4pIFRoZXJlZm9yZSwg
aWYgeW91IG5lZWQgdG8gY2FsbCBhIG1ldGhvZCB0aGF0IHdpbGwgYmUKKyAgICBvdmVycmlkZGVu
IGluIGEgZGVyaXZlZCBjbGFzcywgeW91IGhhdmUgdG8gdXNlIGBTZXRVcCgpL1RlYXJEb3duKClg
LgorCisKKyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgIm5vIG1hdGNoaW5nIGZ1bmN0aW9uIHRv
IGNhbGwiIHdoZW4gSSB1c2UgQVNTRVJUX1BSRUQqLiBIb3cgZG8gSSBmaXggaXQ/CisKK0lmIHRo
ZSBwcmVkaWNhdGUgZnVuY3Rpb24geW91IHVzZSBpbiBgQVNTRVJUX1BSRUQqYCBvciBgRVhQRUNU
X1BSRUQqYCBpcworb3ZlcmxvYWRlZCBvciBhIHRlbXBsYXRlLCB0aGUgY29tcGlsZXIgd2lsbCBo
YXZlIHRyb3VibGUgZmlndXJpbmcgb3V0IHdoaWNoCitvdmVybG9hZGVkIHZlcnNpb24gaXQgc2hv
dWxkIHVzZS4gYEFTU0VSVF9QUkVEX0ZPUk1BVCpgIGFuZAorYEVYUEVDVF9QUkVEX0ZPUk1BVCpg
IGRvbid0IGhhdmUgdGhpcyBwcm9ibGVtLgorCitJZiB5b3Ugc2VlIHRoaXMgZXJyb3IsIHlvdSBt
aWdodCB3YW50IHRvIHN3aXRjaCB0bworYChBU1NFUlR8RVhQRUNUKV9QUkVEX0ZPUk1BVCpgLCB3
aGljaCB3aWxsIGFsc28gZ2l2ZSB5b3UgYSBiZXR0ZXIgZmFpbHVyZQorbWVzc2FnZS4gSWYsIGhv
d2V2ZXIsIHRoYXQgaXMgbm90IGFuIG9wdGlvbiwgeW91IGNhbiByZXNvbHZlIHRoZSBwcm9ibGVt
IGJ5CitleHBsaWNpdGx5IHRlbGxpbmcgdGhlIGNvbXBpbGVyIHdoaWNoIHZlcnNpb24gdG8gcGlj
ay4KKworRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhdmUKKworYGBgYysrCitib29sIElzUG9z
aXRpdmUoaW50IG4pIHsKKyAgcmV0dXJuIG4gPiAwOworfQorCitib29sIElzUG9zaXRpdmUoZG91
YmxlIHgpIHsKKyAgcmV0dXJuIHggPiAwOworfQorYGBgCisKK3lvdSB3aWxsIGdldCBhIGNvbXBp
bGVyIGVycm9yIGlmIHlvdSB3cml0ZQorCitgYGBjKysKK0VYUEVDVF9QUkVEMShJc1Bvc2l0aXZl
LCA1KTsKK2BgYAorCitIb3dldmVyLCB0aGlzIHdpbGwgd29yazoKKworYGBgYysrCitFWFBFQ1Rf
UFJFRDEoc3RhdGljX2Nhc3Q8Ym9vbCAoKikoaW50KT4oSXNQb3NpdGl2ZSksIDUpOworYGBgCisK
KyhUaGUgc3R1ZmYgaW5zaWRlIHRoZSBhbmdsZWQgYnJhY2tldHMgZm9yIHRoZSBgc3RhdGljX2Nh
c3RgIG9wZXJhdG9yIGlzIHRoZSB0eXBlCitvZiB0aGUgZnVuY3Rpb24gcG9pbnRlciBmb3IgdGhl
IGBpbnRgLXZlcnNpb24gb2YgYElzUG9zaXRpdmUoKWAuKQorCitBcyBhbm90aGVyIGV4YW1wbGUs
IHdoZW4geW91IGhhdmUgYSB0ZW1wbGF0ZSBmdW5jdGlvbgorCitgYGBjKysKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorYm9vbCBJc05lZ2F0aXZlKFQgeCkgeworICByZXR1cm4geCA8IDA7Cit9Citg
YGAKKworeW91IGNhbiB1c2UgaXQgaW4gYSBwcmVkaWNhdGUgYXNzZXJ0aW9uIGxpa2UgdGhpczoK
KworYGBgYysrCitBU1NFUlRfUFJFRDEoSXNOZWdhdGl2ZTxpbnQ+LCAtNSk7CitgYGAKKworVGhp
bmdzIGFyZSBtb3JlIGludGVyZXN0aW5nIGlmIHlvdXIgdGVtcGxhdGUgaGFzIG1vcmUgdGhhbiBv
bmUgcGFyYW1ldGVycy4gVGhlCitmb2xsb3dpbmcgd29uJ3QgY29tcGlsZToKKworYGBgYysrCitB
U1NFUlRfUFJFRDIoR3JlYXRlclRoYW48aW50LCBpbnQ+LCA1LCAwKTsKK2BgYAorCithcyB0aGUg
QysrIHByZS1wcm9jZXNzb3IgdGhpbmtzIHlvdSBhcmUgZ2l2aW5nIGBBU1NFUlRfUFJFRDJgIDQg
YXJndW1lbnRzLCB3aGljaAoraXMgb25lIG1vcmUgdGhhbiBleHBlY3RlZC4gVGhlIHdvcmthcm91
bmQgaXMgdG8gd3JhcCB0aGUgcHJlZGljYXRlIGZ1bmN0aW9uIGluCitwYXJlbnRoZXNlczoKKwor
YGBgYysrCitBU1NFUlRfUFJFRDIoKEdyZWF0ZXJUaGFuPGludCwgaW50PiksIDUsIDApOworYGBg
CisKKworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJpZ25vcmluZyByZXR1cm4gdmFs
dWUiIHdoZW4gSSBjYWxsIFJVTl9BTExfVEVTVFMoKS4gV2h5PworCitTb21lIHBlb3BsZSBoYWQg
YmVlbiBpZ25vcmluZyB0aGUgcmV0dXJuIHZhbHVlIG9mIGBSVU5fQUxMX1RFU1RTKClgLiBUaGF0
IGlzLAoraW5zdGVhZCBvZgorCitgYGBjKysKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK2Bg
YAorCit0aGV5IHdyaXRlCisKK2BgYGMrKworICBSVU5fQUxMX1RFU1RTKCk7CitgYGAKKworVGhp
cyBpcyAqKndyb25nIGFuZCBkYW5nZXJvdXMqKi4gVGhlIHRlc3Rpbmcgc2VydmljZXMgbmVlZHMg
dG8gc2VlIHRoZSByZXR1cm4KK3ZhbHVlIG9mIGBSVU5fQUxMX1RFU1RTKClgIGluIG9yZGVyIHRv
IGRldGVybWluZSBpZiBhIHRlc3QgaGFzIHBhc3NlZC4gSWYgeW91cgorYG1haW4oKWAgZnVuY3Rp
b24gaWdub3JlcyBpdCwgeW91ciB0ZXN0IHdpbGwgYmUgY29uc2lkZXJlZCBzdWNjZXNzZnVsIGV2
ZW4gaWYgaXQKK2hhcyBhIGdvb2dsZXRlc3QgYXNzZXJ0aW9uIGZhaWx1cmUuIFZlcnkgYmFkLgor
CitXZSBoYXZlIGRlY2lkZWQgdG8gZml4IHRoaXMgKHRoYW5rcyB0byBNaWNoYWVsIENoYXN0YWlu
IGZvciB0aGUgaWRlYSkuIE5vdywgeW91cgorY29kZSB3aWxsIG5vIGxvbmdlciBiZSBhYmxlIHRv
IGlnbm9yZSBgUlVOX0FMTF9URVNUUygpYCB3aGVuIGNvbXBpbGVkIHdpdGgKK2BnY2NgLiBJZiB5
b3UgZG8gc28sIHlvdSdsbCBnZXQgYSBjb21waWxlciBlcnJvci4KKworSWYgeW91IHNlZSB0aGUg
Y29tcGlsZXIgY29tcGxhaW5pbmcgYWJvdXQgeW91IGlnbm9yaW5nIHRoZSByZXR1cm4gdmFsdWUg
b2YKK2BSVU5fQUxMX1RFU1RTKClgLCB0aGUgZml4IGlzIHNpbXBsZToganVzdCBtYWtlIHN1cmUg
aXRzIHZhbHVlIGlzIHVzZWQgYXMgdGhlCityZXR1cm4gdmFsdWUgb2YgYG1haW4oKWAuCisKK0J1
dCBob3cgY291bGQgd2UgaW50cm9kdWNlIGEgY2hhbmdlIHRoYXQgYnJlYWtzIGV4aXN0aW5nIHRl
c3RzPyBXZWxsLCBpbiB0aGlzCitjYXNlLCB0aGUgY29kZSB3YXMgYWxyZWFkeSBicm9rZW4gaW4g
dGhlIGZpcnN0IHBsYWNlLCBzbyB3ZSBkaWRuJ3QgYnJlYWsgaXQuIDotKQorCisjIyBNeSBjb21w
aWxlciBjb21wbGFpbnMgdGhhdCBhIGNvbnN0cnVjdG9yIChvciBkZXN0cnVjdG9yKSBjYW5ub3Qg
cmV0dXJuIGEgdmFsdWUuIFdoYXQncyBnb2luZyBvbj8KKworRHVlIHRvIGEgcGVjdWxpYXJpdHkg
b2YgQysrLCBpbiBvcmRlciB0byBzdXBwb3J0IHRoZSBzeW50YXggZm9yIHN0cmVhbWluZworbWVz
c2FnZXMgdG8gYW4gYEFTU0VSVF8qYCwgZS5nLgorCitgYGBjKysKKyAgQVNTRVJUX0VRKDEsIEZv
bygpKSA8PCAiYmxhaCBibGFoIiA8PCBmb287CitgYGAKKword2UgaGFkIHRvIGdpdmUgdXAgdXNp
bmcgYEFTU0VSVCpgIGFuZCBgRkFJTCpgIChidXQgbm90IGBFWFBFQ1QqYCBhbmQKK2BBRERfRkFJ
TFVSRSpgKSBpbiBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzLiBUaGUgd29ya2Fyb3VuZCBp
cyB0byBtb3ZlIHRoZQorY29udGVudCBvZiB5b3VyIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgdG8g
YSBwcml2YXRlIHZvaWQgbWVtYmVyIGZ1bmN0aW9uLCBvcgorc3dpdGNoIHRvIGBFWFBFQ1RfKigp
YCBpZiB0aGF0IHdvcmtzLiBUaGlzCitbc2VjdGlvbl0oYWR2YW5jZWQubWQjYXNzZXJ0aW9uLXBs
YWNlbWVudCkgaW4gdGhlIHVzZXIncyBndWlkZSBleHBsYWlucyBpdC4KKworIyMgTXkgU2V0VXAo
KSBmdW5jdGlvbiBpcyBub3QgY2FsbGVkLiBXaHk/CisKK0MrKyBpcyBjYXNlLXNlbnNpdGl2ZS4g
RGlkIHlvdSBzcGVsbCBpdCBhcyBgU2V0dXAoKWA/CisKK1NpbWlsYXJseSwgc29tZXRpbWVzIHBl
b3BsZSBzcGVsbCBgU2V0VXBUZXN0Q2FzZSgpYCBhcyBgU2V0dXBUZXN0Q2FzZSgpYCBhbmQKK3dv
bmRlciB3aHkgaXQncyBuZXZlciBjYWxsZWQuCisKKyMjIEhvdyBkbyBJIGp1bXAgdG8gdGhlIGxp
bmUgb2YgYSBmYWlsdXJlIGluIEVtYWNzIGRpcmVjdGx5PworCitnb29nbGV0ZXN0J3MgZmFpbHVy
ZSBtZXNzYWdlIGZvcm1hdCBpcyB1bmRlcnN0b29kIGJ5IEVtYWNzIGFuZCBtYW55IG90aGVyIElE
RXMsCitsaWtlIGFjbWUgYW5kIFhDb2RlLiBJZiBhIGdvb2dsZXRlc3QgbWVzc2FnZSBpcyBpbiBh
IGNvbXBpbGF0aW9uIGJ1ZmZlciBpbgorRW1hY3MsIHRoZW4gaXQncyBjbGlja2FibGUuCisKKwor
IyMgSSBoYXZlIHNldmVyYWwgdGVzdCBjYXNlcyB3aGljaCBzaGFyZSB0aGUgc2FtZSB0ZXN0IGZp
eHR1cmUgbG9naWMsIGRvIEkgaGF2ZSB0byBkZWZpbmUgYSBuZXcgdGVzdCBmaXh0dXJlIGNsYXNz
IGZvciBlYWNoIG9mIHRoZW0/IFRoaXMgc2VlbXMgcHJldHR5IHRlZGlvdXMuCisKK1lvdSBkb24n
dCBoYXZlIHRvLiBJbnN0ZWFkIG9mCisKK2BgYGMrKworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyBC
YXNlVGVzdCB7fTsKKworVEVTVF9GKEZvb1Rlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEZvb1Rl
c3QsIERlZikgeyAuLi4gfQorCitjbGFzcyBCYXJUZXN0IDogcHVibGljIEJhc2VUZXN0IHt9Owor
CitURVNUX0YoQmFyVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0YoQmFyVGVzdCwgRGVmKSB7IC4u
LiB9CitgYGAKKworeW91IGNhbiBzaW1wbHkgYHR5cGVkZWZgIHRoZSB0ZXN0IGZpeHR1cmVzOgor
CitgYGBjKysKK3R5cGVkZWYgQmFzZVRlc3QgRm9vVGVzdDsKKworVEVTVF9GKEZvb1Rlc3QsIEFi
YykgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQorCit0eXBlZGVmIEJhc2VU
ZXN0IEJhclRlc3Q7CisKK1RFU1RfRihCYXJUZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihCYXJU
ZXN0LCBEZWYpIHsgLi4uIH0KK2BgYAorCisjIyBnb29nbGV0ZXN0IG91dHB1dCBpcyBidXJpZWQg
aW4gYSB3aG9sZSBidW5jaCBvZiBMT0cgbWVzc2FnZXMuIFdoYXQgZG8gSSBkbz8KKworVGhlIGdv
b2dsZXRlc3Qgb3V0cHV0IGlzIG1lYW50IHRvIGJlIGEgY29uY2lzZSBhbmQgaHVtYW4tZnJpZW5k
bHkgcmVwb3J0LiBJZgoreW91ciB0ZXN0IGdlbmVyYXRlcyB0ZXh0dWFsIG91dHB1dCBpdHNlbGYs
IGl0IHdpbGwgbWl4IHdpdGggdGhlIGdvb2dsZXRlc3QKK291dHB1dCwgbWFraW5nIGl0IGhhcmQg
dG8gcmVhZC4gSG93ZXZlciwgdGhlcmUgaXMgYW4gZWFzeSBzb2x1dGlvbiB0byB0aGlzCitwcm9i
bGVtLgorCitTaW5jZSBgTE9HYCBtZXNzYWdlcyBnbyB0byBzdGRlcnIsIHdlIGRlY2lkZWQgdG8g
bGV0IGdvb2dsZXRlc3Qgb3V0cHV0IGdvIHRvCitzdGRvdXQuIFRoaXMgd2F5LCB5b3UgY2FuIGVh
c2lseSBzZXBhcmF0ZSB0aGUgdHdvIHVzaW5nIHJlZGlyZWN0aW9uLiBGb3IKK2V4YW1wbGU6CisK
K2BgYHNoZWxsCiskIC4vbXlfdGVzdCA+IGd0ZXN0X291dHB1dC50eHQKK2BgYAorCisKKyMjIFdo
eSBzaG91bGQgSSBwcmVmZXIgdGVzdCBmaXh0dXJlcyBvdmVyIGdsb2JhbCB2YXJpYWJsZXM/CisK
K1RoZXJlIGFyZSBzZXZlcmFsIGdvb2QgcmVhc29uczoKKworMS4gIEl0J3MgbGlrZWx5IHlvdXIg
dGVzdCBuZWVkcyB0byBjaGFuZ2UgdGhlIHN0YXRlcyBvZiBpdHMgZ2xvYmFsIHZhcmlhYmxlcy4K
KyAgICBUaGlzIG1ha2VzIGl0IGRpZmZpY3VsdCB0byBrZWVwIHNpZGUgZWZmZWN0cyBmcm9tIGVz
Y2FwaW5nIG9uZSB0ZXN0IGFuZAorICAgIGNvbnRhbWluYXRpbmcgb3RoZXJzLCBtYWtpbmcgZGVi
dWdnaW5nIGRpZmZpY3VsdC4gQnkgdXNpbmcgZml4dHVyZXMsIGVhY2gKKyAgICB0ZXN0IGhhcyBh
IGZyZXNoIHNldCBvZiB2YXJpYWJsZXMgdGhhdCdzIGRpZmZlcmVudCAoYnV0IHdpdGggdGhlIHNh
bWUKKyAgICBuYW1lcykuIFRodXMsIHRlc3RzIGFyZSBrZXB0IGluZGVwZW5kZW50IG9mIGVhY2gg
b3RoZXIuCisxLiAgR2xvYmFsIHZhcmlhYmxlcyBwb2xsdXRlIHRoZSBnbG9iYWwgbmFtZXNwYWNl
LgorMS4gIFRlc3QgZml4dHVyZXMgY2FuIGJlIHJldXNlZCB2aWEgc3ViY2xhc3NpbmcsIHdoaWNo
IGNhbm5vdCBiZSBkb25lIGVhc2lseQorICAgIHdpdGggZ2xvYmFsIHZhcmlhYmxlcy4gVGhpcyBp
cyB1c2VmdWwgaWYgbWFueSB0ZXN0IGNhc2VzIGhhdmUgc29tZXRoaW5nIGluCisgICAgY29tbW9u
LgorCisKKyAgICAjIyBXaGF0IGNhbiB0aGUgc3RhdGVtZW50IGFyZ3VtZW50IGluIEFTU0VSVF9E
RUFUSCgpIGJlPworCitgQVNTRVJUX0RFQVRIKCpzdGF0ZW1lbnQqLCAqcmVnZXgqKWAgKG9yIGFu
eSBkZWF0aCBhc3NlcnRpb24gbWFjcm8pIGNhbiBiZSB1c2VkCit3aGVyZXZlciBgKnN0YXRlbWVu
dCpgIGlzIHZhbGlkLiBTbyBiYXNpY2FsbHkgYCpzdGF0ZW1lbnQqYCBjYW4gYmUgYW55IEMrKwor
c3RhdGVtZW50IHRoYXQgbWFrZXMgc2Vuc2UgaW4gdGhlIGN1cnJlbnQgY29udGV4dC4gSW4gcGFy
dGljdWxhciwgaXQgY2FuCityZWZlcmVuY2UgZ2xvYmFsIGFuZC9vciBsb2NhbCB2YXJpYWJsZXMs
IGFuZCBjYW4gYmU6CisKKyogICBhIHNpbXBsZSBmdW5jdGlvbiBjYWxsIChvZnRlbiB0aGUgY2Fz
ZSksCisqICAgYSBjb21wbGV4IGV4cHJlc3Npb24sIG9yCisqICAgYSBjb21wb3VuZCBzdGF0ZW1l
bnQuCisKK1NvbWUgZXhhbXBsZXMgYXJlIHNob3duIGhlcmU6CisKK2BgYGMrKworLy8gQSBkZWF0
aCB0ZXN0IGNhbiBiZSBhIHNpbXBsZSBmdW5jdGlvbiBjYWxsLgorVEVTVChNeURlYXRoVGVzdCwg
RnVuY3Rpb25DYWxsKSB7CisgIEFTU0VSVF9ERUFUSChYeXooNSksICJYeXogZmFpbGVkIik7Cit9
CisKKy8vIE9yIGEgY29tcGxleCBleHByZXNzaW9uIHRoYXQgcmVmZXJlbmNlcyB2YXJpYWJsZXMg
YW5kIGZ1bmN0aW9ucy4KK1RFU1QoTXlEZWF0aFRlc3QsIENvbXBsZXhFeHByZXNzaW9uKSB7Cisg
IGNvbnN0IGJvb2wgYyA9IENvbmRpdGlvbigpOworICBBU1NFUlRfREVBVEgoKGMgPyBGdW5jMSgw
KSA6IG9iamVjdDIuTWV0aG9kKCJ0ZXN0IikpLAorICAgICAgICAgICAgICAgIihGdW5jMXxNZXRo
b2QpIGZhaWxlZCIpOworfQorCisvLyBEZWF0aCBhc3NlcnRpb25zIGNhbiBiZSB1c2VkIGFueSB3
aGVyZSBpbiBhIGZ1bmN0aW9uLiAgSW4KKy8vIHBhcnRpY3VsYXIsIHRoZXkgY2FuIGJlIGluc2lk
ZSBhIGxvb3AuCitURVNUKE15RGVhdGhUZXN0LCBJbnNpZGVMb29wKSB7CisgIC8vIFZlcmlmaWVz
IHRoYXQgRm9vKDApLCBGb28oMSksIC4uLiwgYW5kIEZvbyg0KSBhbGwgZGllLgorICBmb3IgKGlu
dCBpID0gMDsgaSA8IDU7IGkrKykgeworICAgIEVYUEVDVF9ERUFUSF9NKEZvbyhpKSwgIkZvbyBo
YXMgXFxkKyBlcnJvcnMiLAorICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6TWVzc2FnZSgp
IDw8ICJ3aGVyZSBpIGlzICIgPDwgaSk7CisgIH0KK30KKworLy8gQSBkZWF0aCBhc3NlcnRpb24g
Y2FuIGNvbnRhaW4gYSBjb21wb3VuZCBzdGF0ZW1lbnQuCitURVNUKE15RGVhdGhUZXN0LCBDb21w
b3VuZFN0YXRlbWVudCkgeworICAvLyBWZXJpZmllcyB0aGF0IGF0IGxlYXNlIG9uZSBvZiBCYXIo
MCksIEJhcigxKSwgLi4uLCBhbmQKKyAgLy8gQmFyKDQpIGRpZXMuCisgIEFTU0VSVF9ERUFUSCh7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICAgIEJhcihpKTsKKyAgICB9
CisgIH0sCisgICJCYXIgaGFzIFxcZCsgZXJyb3JzIik7Cit9CitgYGAKKworZ3Rlc3QtZGVhdGgt
dGVzdF90ZXN0LmNjIGNvbnRhaW5zIG1vcmUgZXhhbXBsZXMgaWYgeW91IGFyZSBpbnRlcmVzdGVk
LgorCisjIyBJIGhhdmUgYSBmaXh0dXJlIGNsYXNzIGBGb29UZXN0YCwgYnV0IGBURVNUX0YoRm9v
VGVzdCwgQmFyKWAgZ2l2ZXMgbWUgZXJyb3IgYGAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gZm9yIGNh
bGwgdG8gYEZvb1Rlc3Q6OkZvb1Rlc3QoKSciYGAuIFdoeT8KKworR29vZ2xldGVzdCBuZWVkcyB0
byBiZSBhYmxlIHRvIGNyZWF0ZSBvYmplY3RzIG9mIHlvdXIgdGVzdCBmaXh0dXJlIGNsYXNzLCBz
byBpdAorbXVzdCBoYXZlIGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4gTm9ybWFsbHkgdGhlIGNvbXBp
bGVyIHdpbGwgZGVmaW5lIG9uZSBmb3IgeW91LgorSG93ZXZlciwgdGhlcmUgYXJlIGNhc2VzIHdo
ZXJlIHlvdSBoYXZlIHRvIGRlZmluZSB5b3VyIG93bjoKKworKiAgIElmIHlvdSBleHBsaWNpdGx5
IGRlY2xhcmUgYSBub24tZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgY2xhc3MgYEZvb1Rlc3RgCisg
ICAgKGBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUygpYCBkb2VzIHRoaXMpLCB0aGVuIHlvdSBu
ZWVkIHRvIGRlZmluZSBhCisgICAgZGVmYXVsdCBjb25zdHJ1Y3RvciwgZXZlbiBpZiBpdCB3b3Vs
ZCBiZSBlbXB0eS4KKyogICBJZiBgRm9vVGVzdGAgaGFzIGEgY29uc3Qgbm9uLXN0YXRpYyBkYXRh
IG1lbWJlciwgdGhlbiB5b3UgaGF2ZSB0byBkZWZpbmUgdGhlCisgICAgZGVmYXVsdCBjb25zdHJ1
Y3RvciAqYW5kKiBpbml0aWFsaXplIHRoZSBjb25zdCBtZW1iZXIgaW4gdGhlIGluaXRpYWxpemVy
CisgICAgbGlzdCBvZiB0aGUgY29uc3RydWN0b3IuIChFYXJseSB2ZXJzaW9ucyBvZiBgZ2NjYCBk
b2Vzbid0IGZvcmNlIHlvdSB0bworICAgIGluaXRpYWxpemUgdGhlIGNvbnN0IG1lbWJlci4gSXQn
cyBhIGJ1ZyB0aGF0IGhhcyBiZWVuIGZpeGVkIGluIGBnY2MgNGAuKQorCisjIyBXaHkgZG9lcyBB
U1NFUlRfREVBVEggY29tcGxhaW4gYWJvdXQgcHJldmlvdXMgdGhyZWFkcyB0aGF0IHdlcmUgYWxy
ZWFkeSBqb2luZWQ/CisKK1dpdGggdGhlIExpbnV4IHB0aHJlYWQgbGlicmFyeSwgdGhlcmUgaXMg
bm8gdHVybmluZyBiYWNrIG9uY2UgeW91IGNyb3NzIHRoZSBsaW5lCitmcm9tIHNpbmdsZSB0aHJl
YWQgdG8gbXVsdGlwbGUgdGhyZWFkcy4gVGhlIGZpcnN0IHRpbWUgeW91IGNyZWF0ZSBhIHRocmVh
ZCwgYQorbWFuYWdlciB0aHJlYWQgaXMgY3JlYXRlZCBpbiBhZGRpdGlvbiwgc28geW91IGdldCAz
LCBub3QgMiwgdGhyZWFkcy4gTGF0ZXIgd2hlbgordGhlIHRocmVhZCB5b3UgY3JlYXRlIGpvaW5z
IHRoZSBtYWluIHRocmVhZCwgdGhlIHRocmVhZCBjb3VudCBkZWNyZW1lbnRzIGJ5IDEsCitidXQg
dGhlIG1hbmFnZXIgdGhyZWFkIHdpbGwgbmV2ZXIgYmUga2lsbGVkLCBzbyB5b3Ugc3RpbGwgaGF2
ZSAyIHRocmVhZHMsIHdoaWNoCittZWFucyB5b3UgY2Fubm90IHNhZmVseSBydW4gYSBkZWF0aCB0
ZXN0LgorCitUaGUgbmV3IE5QVEwgdGhyZWFkIGxpYnJhcnkgZG9lc24ndCBzdWZmZXIgZnJvbSB0
aGlzIHByb2JsZW0sIGFzIGl0IGRvZXNuJ3QKK2NyZWF0ZSBhIG1hbmFnZXIgdGhyZWFkLiBIb3dl
dmVyLCBpZiB5b3UgZG9uJ3QgY29udHJvbCB3aGljaCBtYWNoaW5lIHlvdXIgdGVzdAorcnVucyBv
biwgeW91IHNob3VsZG4ndCBkZXBlbmQgb24gdGhpcy4KKworIyMgV2h5IGRvZXMgZ29vZ2xldGVz
dCByZXF1aXJlIHRoZSBlbnRpcmUgdGVzdCBjYXNlLCBpbnN0ZWFkIG9mIGluZGl2aWR1YWwgdGVz
dHMsIHRvIGJlIG5hbWVkICpEZWF0aFRlc3Qgd2hlbiBpdCB1c2VzIEFTU0VSVF9ERUFUSD8KKwor
Z29vZ2xldGVzdCBkb2VzIG5vdCBpbnRlcmxlYXZlIHRlc3RzIGZyb20gZGlmZmVyZW50IHRlc3Qg
Y2FzZXMuIFRoYXQgaXMsIGl0IHJ1bnMKK2FsbCB0ZXN0cyBpbiBvbmUgdGVzdCBjYXNlIGZpcnN0
LCBhbmQgdGhlbiBydW5zIGFsbCB0ZXN0cyBpbiB0aGUgbmV4dCB0ZXN0IGNhc2UsCithbmQgc28g
b24uIGdvb2dsZXRlc3QgZG9lcyB0aGlzIGJlY2F1c2UgaXQgbmVlZHMgdG8gc2V0IHVwIGEgdGVz
dCBjYXNlIGJlZm9yZQordGhlIGZpcnN0IHRlc3QgaW4gaXQgaXMgcnVuLCBhbmQgdGVhciBpdCBk
b3duIGFmdGVyd29yZHMuIFNwbGl0dGluZyB1cCB0aGUgdGVzdAorY2FzZSB3b3VsZCByZXF1aXJl
IG11bHRpcGxlIHNldC11cCBhbmQgdGVhci1kb3duIHByb2Nlc3Nlcywgd2hpY2ggaXMgaW5lZmZp
Y2llbnQKK2FuZCBtYWtlcyB0aGUgc2VtYW50aWNzIHVuY2xlYW4uCisKK0lmIHdlIHdlcmUgdG8g
ZGV0ZXJtaW5lIHRoZSBvcmRlciBvZiB0ZXN0cyBiYXNlZCBvbiB0ZXN0IG5hbWUgaW5zdGVhZCBv
ZiB0ZXN0CitjYXNlIG5hbWUsIHRoZW4gd2Ugd291bGQgaGF2ZSBhIHByb2JsZW0gd2l0aCB0aGUg
Zm9sbG93aW5nIHNpdHVhdGlvbjoKKworYGBgYysrCitURVNUX0YoRm9vVGVzdCwgQWJjRGVhdGhU
ZXN0KSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgVXZ3KSB7IC4uLiB9CisKK1RFU1RfRihCYXJU
ZXN0LCBEZWZEZWF0aFRlc3QpIHsgLi4uIH0KK1RFU1RfRihCYXJUZXN0LCBYeXopIHsgLi4uIH0K
K2BgYAorCitTaW5jZSBgRm9vVGVzdC5BYmNEZWF0aFRlc3RgIG5lZWRzIHRvIHJ1biBiZWZvcmUg
YEJhclRlc3QuWHl6YCwgYW5kIHdlIGRvbid0CitpbnRlcmxlYXZlIHRlc3RzIGZyb20gZGlmZmVy
ZW50IHRlc3QgY2FzZXMsIHdlIG5lZWQgdG8gcnVuIGFsbCB0ZXN0cyBpbiB0aGUKK2BGb29UZXN0
YCBjYXNlIGJlZm9yZSBydW5uaW5nIGFueSB0ZXN0IGluIHRoZSBgQmFyVGVzdGAgY2FzZS4gVGhp
cyBjb250cmFkaWN0cword2l0aCB0aGUgcmVxdWlyZW1lbnQgdG8gcnVuIGBCYXJUZXN0LkRlZkRl
YXRoVGVzdGAgYmVmb3JlIGBGb29UZXN0LlV2d2AuCisKKyMjIEJ1dCBJIGRvbid0IGxpa2UgY2Fs
bGluZyBteSBlbnRpcmUgdGVzdCBjYXNlIFwqRGVhdGhUZXN0IHdoZW4gaXQgY29udGFpbnMgYm90
aCBkZWF0aCB0ZXN0cyBhbmQgbm9uLWRlYXRoIHRlc3RzLiBXaGF0IGRvIEkgZG8/CisKK1lvdSBk
b24ndCBoYXZlIHRvLCBidXQgaWYgeW91IGxpa2UsIHlvdSBtYXkgc3BsaXQgdXAgdGhlIHRlc3Qg
Y2FzZSBpbnRvCitgRm9vVGVzdGAgYW5kIGBGb29EZWF0aFRlc3RgLCB3aGVyZSB0aGUgbmFtZXMg
bWFrZSBpdCBjbGVhciB0aGF0IHRoZXkgYXJlCityZWxhdGVkOgorCitgYGBjKysKK2NsYXNzIEZv
b1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07CisKK1RFU1RfRihGb29UZXN0
LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0KKwordXNpbmcgRm9v
RGVhdGhUZXN0ID0gRm9vVGVzdDsKKworVEVTVF9GKEZvb0RlYXRoVGVzdCwgVXZ3KSB7IC4uLiBF
WFBFQ1RfREVBVEgoLi4uKSAuLi4gfQorVEVTVF9GKEZvb0RlYXRoVGVzdCwgWHl6KSB7IC4uLiBB
U1NFUlRfREVBVEgoLi4uKSAuLi4gfQorYGBgCisKKyMjIGdvb2dsZXRlc3QgcHJpbnRzIHRoZSBM
T0cgbWVzc2FnZXMgaW4gYSBkZWF0aCB0ZXN0J3MgY2hpbGQgcHJvY2VzcyBvbmx5IHdoZW4gdGhl
IHRlc3QgZmFpbHMuIEhvdyBjYW4gSSBzZWUgdGhlIExPRyBtZXNzYWdlcyB3aGVuIHRoZSBkZWF0
aCB0ZXN0IHN1Y2NlZWRzPworCitQcmludGluZyB0aGUgTE9HIG1lc3NhZ2VzIGdlbmVyYXRlZCBi
eSB0aGUgc3RhdGVtZW50IGluc2lkZSBgRVhQRUNUX0RFQVRIKClgCittYWtlcyBpdCBoYXJkZXIg
dG8gc2VhcmNoIGZvciByZWFsIHByb2JsZW1zIGluIHRoZSBwYXJlbnQncyBsb2cuIFRoZXJlZm9y
ZSwKK2dvb2dsZXRlc3Qgb25seSBwcmludHMgdGhlbSB3aGVuIHRoZSBkZWF0aCB0ZXN0IGhhcyBm
YWlsZWQuCisKK0lmIHlvdSByZWFsbHkgbmVlZCB0byBzZWUgc3VjaCBMT0cgbWVzc2FnZXMsIGEg
d29ya2Fyb3VuZCBpcyB0byB0ZW1wb3JhcmlseQorYnJlYWsgdGhlIGRlYXRoIHRlc3QgKGUuZy4g
YnkgY2hhbmdpbmcgdGhlIHJlZ2V4IHBhdHRlcm4gaXQgaXMgZXhwZWN0ZWQgdG8KK21hdGNoKS4g
QWRtaXR0ZWRseSwgdGhpcyBpcyBhIGhhY2suIFdlJ2xsIGNvbnNpZGVyIGEgbW9yZSBwZXJtYW5l
bnQgc29sdXRpb24KK2FmdGVyIHRoZSBmb3JrLWFuZC1leGVjLXN0eWxlIGRlYXRoIHRlc3RzIGFy
ZSBpbXBsZW1lbnRlZC4KKworIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCAibm8gbWF0
Y2ggZm9yICdvcGVyYXRvcjw8JyIgd2hlbiBJIHVzZSBhbiBhc3NlcnRpb24uIFdoYXQgZ2l2ZXM/
CisKK0lmIHlvdSB1c2UgYSB1c2VyLWRlZmluZWQgdHlwZSBgRm9vVHlwZWAgaW4gYW4gYXNzZXJ0
aW9uLCB5b3UgbXVzdCBtYWtlIHN1cmUKK3RoZXJlIGlzIGFuIGBzdGQ6Om9zdHJlYW0mIG9wZXJh
dG9yPDwoc3RkOjpvc3RyZWFtJiwgY29uc3QgRm9vVHlwZSYpYCBmdW5jdGlvbgorZGVmaW5lZCBz
dWNoIHRoYXQgd2UgY2FuIHByaW50IGEgdmFsdWUgb2YgYEZvb1R5cGVgLgorCitJbiBhZGRpdGlv
biwgaWYgYEZvb1R5cGVgIGlzIGRlY2xhcmVkIGluIGEgbmFtZSBzcGFjZSwgdGhlIGA8PGAgb3Bl
cmF0b3IgYWxzbworbmVlZHMgdG8gYmUgZGVmaW5lZCBpbiB0aGUgKnNhbWUqIG5hbWUgc3BhY2Uu
IFNlZSBnby90b3R3LzQ5IGZvciBkZXRhaWxzLgorCisjIyBIb3cgZG8gSSBzdXBwcmVzcyB0aGUg
bWVtb3J5IGxlYWsgbWVzc2FnZXMgb24gV2luZG93cz8KKworU2luY2UgdGhlIHN0YXRpY2FsbHkg
aW5pdGlhbGl6ZWQgZ29vZ2xldGVzdCBzaW5nbGV0b24gcmVxdWlyZXMgYWxsb2NhdGlvbnMgb24K
K3RoZSBoZWFwLCB0aGUgVmlzdWFsIEMrKyBtZW1vcnkgbGVhayBkZXRlY3RvciB3aWxsIHJlcG9y
dCBtZW1vcnkgbGVha3MgYXQgdGhlCitlbmQgb2YgdGhlIHByb2dyYW0gcnVuLiBUaGUgZWFzaWVz
dCB3YXkgdG8gYXZvaWQgdGhpcyBpcyB0byB1c2UgdGhlCitgX0NydE1lbUNoZWNrcG9pbnRgIGFu
ZCBgX0NydE1lbUR1bXBBbGxPYmplY3RzU2luY2VgIGNhbGxzIHRvIG5vdCByZXBvcnQgYW55Citz
dGF0aWNhbGx5IGluaXRpYWxpemVkIGhlYXAgb2JqZWN0cy4gU2VlIE1TRE4gZm9yIG1vcmUgZGV0
YWlscyBhbmQgYWRkaXRpb25hbAoraGVhcCBjaGVjay9kZWJ1ZyByb3V0aW5lcy4KKworCisjIyBI
b3cgY2FuIG15IGNvZGUgZGV0ZWN0IGlmIGl0IGlzIHJ1bm5pbmcgaW4gYSB0ZXN0PworCitJZiB5
b3Ugd3JpdGUgY29kZSB0aGF0IHNuaWZmcyB3aGV0aGVyIGl0J3MgcnVubmluZyBpbiBhIHRlc3Qg
YW5kIGRvZXMgZGlmZmVyZW50Cit0aGluZ3MgYWNjb3JkaW5nbHksIHlvdSBhcmUgbGVha2luZyB0
ZXN0LW9ubHkgbG9naWMgaW50byBwcm9kdWN0aW9uIGNvZGUgYW5kCit0aGVyZSBpcyBubyBlYXN5
IHdheSB0byBlbnN1cmUgdGhhdCB0aGUgdGVzdC1vbmx5IGNvZGUgcGF0aHMgYXJlbid0IHJ1biBi
eQorbWlzdGFrZSBpbiBwcm9kdWN0aW9uLiBTdWNoIGNsZXZlcm5lc3MgYWxzbyBsZWFkcyB0bwor
W0hlaXNlbmJ1Z3NdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hlaXNlbmJ1ZykuIFRo
ZXJlZm9yZSB3ZSBzdHJvbmdseQorYWR2aXNlIGFnYWluc3QgdGhlIHByYWN0aWNlLCBhbmQgZ29v
Z2xldGVzdCBkb2Vzbid0IHByb3ZpZGUgYSB3YXkgdG8gZG8gaXQuCisKK0luIGdlbmVyYWwsIHRo
ZSByZWNvbW1lbmRlZCB3YXkgdG8gY2F1c2UgdGhlIGNvZGUgdG8gYmVoYXZlIGRpZmZlcmVudGx5
IHVuZGVyCit0ZXN0IGlzIFtEZXBlbmRlbmN5IEluamVjdGlvbl0oaHR0cHM6Ly9lbi53aWtpcGVk
aWEub3JnL3dpa2kvRGVwZW5kZW5jeV9pbmplY3Rpb24pLiBZb3UgY2FuIGluamVjdAorZGlmZmVy
ZW50IGZ1bmN0aW9uYWxpdHkgZnJvbSB0aGUgdGVzdCBhbmQgZnJvbSB0aGUgcHJvZHVjdGlvbiBj
b2RlLiBTaW5jZSB5b3VyCitwcm9kdWN0aW9uIGNvZGUgZG9lc24ndCBsaW5rIGluIHRoZSBmb3It
dGVzdCBsb2dpYyBhdCBhbGwgKHRoZQorW2B0ZXN0b25seWBdKGh0dHBzOi8vZG9jcy5iYXplbC5i
dWlsZC92ZXJzaW9ucy9tYXN0ZXIvYmUvY29tbW9uLWRlZmluaXRpb25zLmh0bWwjY29tbW9uLnRl
c3Rvbmx5KQorYXR0cmlidXRlIGZvciBCVUlMRCB0YXJnZXRzIGhlbHBzIHRvIGVuc3VyZSB0aGF0
KSwgdGhlcmUgaXMgbm8gZGFuZ2VyIGluCithY2NpZGVudGFsbHkgcnVubmluZyBpdC4KKworSG93
ZXZlciwgaWYgeW91ICpyZWFsbHkqLCAqcmVhbGx5KiwgKnJlYWxseSogaGF2ZSBubyBjaG9pY2Us
IGFuZCBpZiB5b3UgZm9sbG93Cit0aGUgcnVsZSBvZiBlbmRpbmcgeW91ciB0ZXN0IHByb2dyYW0g
bmFtZXMgd2l0aCBgX3Rlc3RgLCB5b3UgY2FuIHVzZSB0aGUKKypob3JyaWJsZSogaGFjayBvZiBz
bmlmZmluZyB5b3VyIGV4ZWN1dGFibGUgbmFtZSAoYGFyZ3ZbMF1gIGluIGBtYWluKClgKSB0byBr
bm93Cit3aGV0aGVyIHRoZSBjb2RlIGlzIHVuZGVyIHRlc3QuCisKKworIyMgSG93IGRvIEkgdGVt
cG9yYXJpbHkgZGlzYWJsZSBhIHRlc3Q/CisKK0lmIHlvdSBoYXZlIGEgYnJva2VuIHRlc3QgdGhh
dCB5b3UgY2Fubm90IGZpeCByaWdodCBhd2F5LCB5b3UgY2FuIGFkZCB0aGUKK0RJU0FCTEVEXyBw
cmVmaXggdG8gaXRzIG5hbWUuIFRoaXMgd2lsbCBleGNsdWRlIGl0IGZyb20gZXhlY3V0aW9uLiBU
aGlzIGlzCitiZXR0ZXIgdGhhbiBjb21tZW50aW5nIG91dCB0aGUgY29kZSBvciB1c2luZyAjaWYg
MCwgYXMgZGlzYWJsZWQgdGVzdHMgYXJlIHN0aWxsCitjb21waWxlZCAoYW5kIHRodXMgd29uJ3Qg
cm90KS4KKworVG8gaW5jbHVkZSBkaXNhYmxlZCB0ZXN0cyBpbiB0ZXN0IGV4ZWN1dGlvbiwganVz
dCBpbnZva2UgdGhlIHRlc3QgcHJvZ3JhbSB3aXRoCit0aGUgLS1ndGVzdF9hbHNvX3J1bl9kaXNh
YmxlZF90ZXN0cyBmbGFnLgorCisjIyBJcyBpdCBPSyBpZiBJIGhhdmUgdHdvIHNlcGFyYXRlIGBU
RVNUKEZvbywgQmFyKWAgdGVzdCBtZXRob2RzIGRlZmluZWQgaW4gZGlmZmVyZW50IG5hbWVzcGFj
ZXM/CisKK1llcy4KKworVGhlIHJ1bGUgaXMgKiphbGwgdGVzdCBtZXRob2RzIGluIHRoZSBzYW1l
IHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSBmaXh0dXJlCitjbGFzcy4qKiBUaGlzIG1lYW5z
IHRoYXQgdGhlIGZvbGxvd2luZyBpcyAqKmFsbG93ZWQqKiBiZWNhdXNlIGJvdGggdGVzdHMgdXNl
IHRoZQorc2FtZSBmaXh0dXJlIGNsYXNzIChgOjp0ZXN0aW5nOjpUZXN0YCkuCisKK2BgYGMrKwor
bmFtZXNwYWNlIGZvbyB7CitURVNUKENvb2xUZXN0LCBEb1NvbWV0aGluZykgeworICBTVUNDRUVE
KCk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgZm9vCisKK25hbWVzcGFjZSBiYXIgeworVEVTVChDb29s
VGVzdCwgRG9Tb21ldGhpbmcpIHsKKyAgU1VDQ0VFRCgpOworfQorfSAgLy8gbmFtZXNwYWNlIGJh
cgorYGBgCisKK0hvd2V2ZXIsIHRoZSBmb2xsb3dpbmcgY29kZSBpcyAqKm5vdCBhbGxvd2VkKiog
YW5kIHdpbGwgcHJvZHVjZSBhIHJ1bnRpbWUgZXJyb3IKK2Zyb20gZ29vZ2xldGVzdCBiZWNhdXNl
IHRoZSB0ZXN0IG1ldGhvZHMgYXJlIHVzaW5nIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUKK2NsYXNz
ZXMgd2l0aCB0aGUgc2FtZSB0ZXN0IGNhc2UgbmFtZS4KKworYGBgYysrCituYW1lc3BhY2UgZm9v
IHsKK2NsYXNzIENvb2xUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsgIC8vIEZpeHR1
cmUgZm9vOjpDb29sVGVzdAorVEVTVF9GKENvb2xUZXN0LCBEb1NvbWV0aGluZykgeworICBTVUND
RUVEKCk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgZm9vCisKK25hbWVzcGFjZSBiYXIgeworY2xhc3Mg
Q29vbFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OyAgLy8gRml4dHVyZTogYmFyOjpD
b29sVGVzdAorVEVTVF9GKENvb2xUZXN0LCBEb1NvbWV0aGluZykgeworICBTVUNDRUVEKCk7Cit9
Cit9ICAvLyBuYW1lc3BhY2UgYmFyCitgYGAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2RvY3MvcHJpbWVyLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9wcmlt
ZXIubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2E4ZWE4ZDcxN2I4MzViY2JkMjNmODRjOWVhMDVmMTZhODc4YTVk
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvcHJpbWVy
Lm1kCkBAIC0wLDAgKzEsNTY5IEBACisjIEdvb2dsZXRlc3QgUHJpbWVyCisKKworIyMgSW50cm9k
dWN0aW9uOiBXaHkgZ29vZ2xldGVzdD8KKworKmdvb2dsZXRlc3QqIGhlbHBzIHlvdSB3cml0ZSBi
ZXR0ZXIgQysrIHRlc3RzLgorCitnb29nbGV0ZXN0IGlzIGEgdGVzdGluZyBmcmFtZXdvcmsgZGV2
ZWxvcGVkIGJ5IHRoZSBUZXN0aW5nCitUZWNobm9sb2d5IHRlYW0gd2l0aCBHb29nbGUncyBzcGVj
aWZpYworcmVxdWlyZW1lbnRzIGFuZCBjb25zdHJhaW50cyBpbiBtaW5kLiBObyBtYXR0ZXIgd2hl
dGhlciB5b3Ugd29yayBvbiBMaW51eCwKK1dpbmRvd3MsIG9yIGEgTWFjLCBpZiB5b3Ugd3JpdGUg
QysrIGNvZGUsIGdvb2dsZXRlc3QgY2FuIGhlbHAgeW91LiBBbmQgaXQKK3N1cHBvcnRzICphbnkq
IGtpbmQgb2YgdGVzdHMsIG5vdCBqdXN0IHVuaXQgdGVzdHMuCisKK1NvIHdoYXQgbWFrZXMgYSBn
b29kIHRlc3QsIGFuZCBob3cgZG9lcyBnb29nbGV0ZXN0IGZpdCBpbj8gV2UgYmVsaWV2ZToKKwor
MS4gIFRlc3RzIHNob3VsZCBiZSAqaW5kZXBlbmRlbnQqIGFuZCAqcmVwZWF0YWJsZSouIEl0J3Mg
YSBwYWluIHRvIGRlYnVnIGEgdGVzdAorICAgIHRoYXQgc3VjY2VlZHMgb3IgZmFpbHMgYXMgYSBy
ZXN1bHQgb2Ygb3RoZXIgdGVzdHMuIGdvb2dsZXRlc3QgaXNvbGF0ZXMgdGhlCisgICAgdGVzdHMg
YnkgcnVubmluZyBlYWNoIG9mIHRoZW0gb24gYSBkaWZmZXJlbnQgb2JqZWN0LiBXaGVuIGEgdGVz
dCBmYWlscywKKyAgICBnb29nbGV0ZXN0IGFsbG93cyB5b3UgdG8gcnVuIGl0IGluIGlzb2xhdGlv
biBmb3IgcXVpY2sgZGVidWdnaW5nLgorMS4gIFRlc3RzIHNob3VsZCBiZSB3ZWxsICpvcmdhbml6
ZWQqIGFuZCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3RlZAorICAgIGNvZGUuIGdv
b2dsZXRlc3QgZ3JvdXBzIHJlbGF0ZWQgdGVzdHMgaW50byB0ZXN0IGNhc2VzIHRoYXQgY2FuIHNo
YXJlIGRhdGEKKyAgICBhbmQgc3Vicm91dGluZXMuIFRoaXMgY29tbW9uIHBhdHRlcm4gaXMgZWFz
eSB0byByZWNvZ25pemUgYW5kIG1ha2VzIHRlc3RzCisgICAgZWFzeSB0byBtYWludGFpbi4gU3Vj
aCBjb25zaXN0ZW5jeSBpcyBlc3BlY2lhbGx5IGhlbHBmdWwgd2hlbiBwZW9wbGUgc3dpdGNoCisg
ICAgcHJvamVjdHMgYW5kIHN0YXJ0IHRvIHdvcmsgb24gYSBuZXcgY29kZSBiYXNlLgorMS4gIFRl
c3RzIHNob3VsZCBiZSAqcG9ydGFibGUqIGFuZCAqcmV1c2FibGUqLiBHb29nbGUgaGFzIGEgbG90
IG9mIGNvZGUgdGhhdCBpcworICAgIHBsYXRmb3JtLW5ldXRyYWwsIGl0cyB0ZXN0cyBzaG91bGQg
YWxzbyBiZSBwbGF0Zm9ybS1uZXV0cmFsLiBnb29nbGV0ZXN0CisgICAgd29ya3Mgb24gZGlmZmVy
ZW50IE9TZXMsIHdpdGggZGlmZmVyZW50IGNvbXBpbGVycyAoZ2NjLCBpY2MsIGFuZCBNU1ZDKSwg
d2l0aAorICAgIG9yIHdpdGhvdXQgZXhjZXB0aW9ucywgc28gZ29vZ2xldGVzdCB0ZXN0cyBjYW4g
ZWFzaWx5IHdvcmsgd2l0aCBhIHZhcmlldHkgb2YKKyAgICBjb25maWd1cmF0aW9ucy4KKzEuICBX
aGVuIHRlc3RzIGZhaWwsIHRoZXkgc2hvdWxkIHByb3ZpZGUgYXMgbXVjaCAqaW5mb3JtYXRpb24q
IGFib3V0IHRoZSBwcm9ibGVtCisgICAgYXMgcG9zc2libGUuIGdvb2dsZXRlc3QgZG9lc24ndCBz
dG9wIGF0IHRoZSBmaXJzdCB0ZXN0IGZhaWx1cmUuIEluc3RlYWQsIGl0CisgICAgb25seSBzdG9w
cyB0aGUgY3VycmVudCB0ZXN0IGFuZCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dC4gWW91IGNhbiBh
bHNvIHNldCB1cAorICAgIHRlc3RzIHRoYXQgcmVwb3J0IG5vbi1mYXRhbCBmYWlsdXJlcyBhZnRl
ciB3aGljaCB0aGUgY3VycmVudCB0ZXN0IGNvbnRpbnVlcy4KKyAgICBUaHVzLCB5b3UgY2FuIGRl
dGVjdCBhbmQgZml4IG11bHRpcGxlIGJ1Z3MgaW4gYSBzaW5nbGUgcnVuLWVkaXQtY29tcGlsZQor
ICAgIGN5Y2xlLgorMS4gIFRoZSB0ZXN0aW5nIGZyYW1ld29yayBzaG91bGQgbGliZXJhdGUgdGVz
dCB3cml0ZXJzIGZyb20gaG91c2VrZWVwaW5nIGNob3JlcworICAgIGFuZCBsZXQgdGhlbSBmb2N1
cyBvbiB0aGUgdGVzdCAqY29udGVudCouIGdvb2dsZXRlc3QgYXV0b21hdGljYWxseSBrZWVwcwor
ICAgIHRyYWNrIG9mIGFsbCB0ZXN0cyBkZWZpbmVkLCBhbmQgZG9lc24ndCByZXF1aXJlIHRoZSB1
c2VyIHRvIGVudW1lcmF0ZSB0aGVtCisgICAgaW4gb3JkZXIgdG8gcnVuIHRoZW0uCisxLiAgVGVz
dHMgc2hvdWxkIGJlICpmYXN0Ki4gV2l0aCBnb29nbGV0ZXN0LCB5b3UgY2FuIHJldXNlIHNoYXJl
ZCByZXNvdXJjZXMKKyAgICBhY3Jvc3MgdGVzdHMgYW5kIHBheSBmb3IgdGhlIHNldC11cC90ZWFy
LWRvd24gb25seSBvbmNlLCB3aXRob3V0IG1ha2luZworICAgIHRlc3RzIGRlcGVuZCBvbiBlYWNo
IG90aGVyLgorCitTaW5jZSBnb29nbGV0ZXN0IGlzIGJhc2VkIG9uIHRoZSBwb3B1bGFyIHhVbml0
IGFyY2hpdGVjdHVyZSwgeW91J2xsIGZlZWwgcmlnaHQKK2F0IGhvbWUgaWYgeW91J3ZlIHVzZWQg
SlVuaXQgb3IgUHlVbml0IGJlZm9yZS4gSWYgbm90LCBpdCB3aWxsIHRha2UgeW91IGFib3V0IDEw
CittaW51dGVzIHRvIGxlYXJuIHRoZSBiYXNpY3MgYW5kIGdldCBzdGFydGVkLiBTbyBsZXQncyBn
byEKKworIyMgQmV3YXJlIG9mIHRoZSBub21lbmNsYXR1cmUKKworX05vdGU6XyBUaGVyZSBtaWdo
dCBiZSBzb21lIGNvbmZ1c2lvbiBvZiBpZGVhIGR1ZSB0byBkaWZmZXJlbnQKK2RlZmluaXRpb25z
IG9mIHRoZSB0ZXJtcyBfVGVzdF8sIF9UZXN0IENhc2VfIGFuZCBfVGVzdCBTdWl0ZV8sIHNvIGJl
d2FyZQorb2YgbWlzdW5kZXJzdGFuZGluZyB0aGVzZS4KKworSGlzdG9yaWNhbGx5LCBnb29nbGV0
ZXN0IHN0YXJ0ZWQgdG8gdXNlIHRoZSB0ZXJtIF9UZXN0IENhc2VfIGZvciBncm91cGluZworcmVs
YXRlZCB0ZXN0cywgd2hlcmVhcyBjdXJyZW50IHB1YmxpY2F0aW9ucyBpbmNsdWRpbmcgdGhlIElu
dGVybmF0aW9uYWwgU29mdHdhcmUKK1Rlc3RpbmcgUXVhbGlmaWNhdGlvbnMgQm9hcmQgKFtJU1RR
Ql0oaHR0cDovL3d3dy5pc3RxYi5vcmcvKSkgYW5kIHZhcmlvdXMKK3RleHRib29rcyBvbiBTb2Z0
d2FyZSBRdWFsaXR5IHVzZSB0aGUgdGVybSBfW1Rlc3QKK1N1aXRlXShodHRwOi8vZ2xvc3Nhcnku
aXN0cWIub3JnL3NlYXJjaC90ZXN0JTIwc3VpdGUpXyBmb3IgdGhpcy4KKworVGhlIHJlbGF0ZWQg
dGVybSBfVGVzdF8sIGFzIGl0IGlzIHVzZWQgaW4gdGhlIGdvb2dsZXRlc3QsIGlzIGNvcnJlc3Bv
bmRpbmcgdG8KK3RoZSB0ZXJtIF9bVGVzdCBDYXNlXShodHRwOi8vZ2xvc3NhcnkuaXN0cWIub3Jn
L3NlYXJjaC90ZXN0JTIwY2FzZSlfIG9mIElTVFFCCithbmQgb3RoZXJzLgorCitUaGUgdGVybSBf
VGVzdF8gaXMgY29tbW9ubHkgb2YgYnJvYWQgZW5vdWdoIHNlbnNlLCBpbmNsdWRpbmcgSVNUUUIn
cworZGVmaW5pdGlvbiBvZiBfVGVzdCBDYXNlXywgc28gaXQncyBub3QgbXVjaCBvZiBhIHByb2Js
ZW0gaGVyZS4gQnV0IHRoZQordGVybSBfVGVzdCBDYXNlXyBhcyB1c2VkIGluIEdvb2dsZSBUZXN0
IGlzIG9mIGNvbnRyYWRpY3Rvcnkgc2Vuc2UgYW5kIHRodXMgY29uZnVzaW5nLgorCitVbmZvcnR1
bmF0ZWx5IHJlcGxhY2luZyB0aGUgdGVybSBfVGVzdCBDYXNlXyBieSBfVGVzdCBTdWl0ZV8gdGhy
b3VnaG91dCB0aGUKK2dvb2dsZXRlc3QgaXMgbm90IGVhc3kgd2l0aG91dCBicmVha2luZyBkZXBl
bmRlbnQgcHJvamVjdHMsIGFzIGBUZXN0Q2FzZWAgaXMKK3BhcnQgb2YgdGhlIHB1YmxpYyBBUEkg
YXQgdmFyaW91cyBwbGFjZXMuCisKK1NvIGZvciB0aGUgdGltZSBiZWluZywgcGxlYXNlIGJlIGF3
YXJlIG9mIHRoZSBkaWZmZXJlbnQgZGVmaW5pdGlvbnMgb2YKK3RoZSB0ZXJtczoKKworTWVhbmlu
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgZ29vZ2xldGVzdCBUZXJtICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IFtJU1RRQl0oaHR0cDovL3d3dy5pc3RxYi5vcmcvKSBUZXJtCis6
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KK0V4ZXJjaXNlIGEgcGFydGljdWxhciBwcm9ncmFtIHBhdGggd2l0aCBzcGVjaWZpYyBpbnB1
dCB2YWx1ZXMgYW5kIHZlcmlmeSB0aGUgcmVzdWx0cyB8IFtURVNUKCldKCNzaW1wbGUtdGVzdHMp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbVGVzdCBDYXNlXShodHRwOi8vZ2xvc3Nhcnku
aXN0cWIub3JnL3NlYXJjaC90ZXN0JTIwY2FzZSkKK0Egc2V0IG9mIHNldmVyYWwgdGVzdHMgcmVs
YXRlZCB0byBvbmUgY29tcG9uZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IFtUZXN0Q2FzZV0oI2Jhc2ljLWNvbmNlcHRzKSB8IFtUZXN0U3VpdGVdKGh0dHA6Ly9nbG9z
c2FyeS5pc3RxYi5vcmcvc2VhcmNoL3Rlc3QlMjBzdWl0ZSkKKworIyMgQmFzaWMgQ29uY2VwdHMK
KworV2hlbiB1c2luZyBnb29nbGV0ZXN0LCB5b3Ugc3RhcnQgYnkgd3JpdGluZyAqYXNzZXJ0aW9u
cyosIHdoaWNoIGFyZSBzdGF0ZW1lbnRzCit0aGF0IGNoZWNrIHdoZXRoZXIgYSBjb25kaXRpb24g
aXMgdHJ1ZS4gQW4gYXNzZXJ0aW9uJ3MgcmVzdWx0IGNhbiBiZSAqc3VjY2VzcyosCisqbm9uZmF0
YWwgZmFpbHVyZSosIG9yICpmYXRhbCBmYWlsdXJlKi4gSWYgYSBmYXRhbCBmYWlsdXJlIG9jY3Vy
cywgaXQgYWJvcnRzIHRoZQorY3VycmVudCBmdW5jdGlvbjsgb3RoZXJ3aXNlIHRoZSBwcm9ncmFt
IGNvbnRpbnVlcyBub3JtYWxseS4KKworKlRlc3RzKiB1c2UgYXNzZXJ0aW9ucyB0byB2ZXJpZnkg
dGhlIHRlc3RlZCBjb2RlJ3MgYmVoYXZpb3IuIElmIGEgdGVzdCBjcmFzaGVzCitvciBoYXMgYSBm
YWlsZWQgYXNzZXJ0aW9uLCB0aGVuIGl0ICpmYWlscyo7IG90aGVyd2lzZSBpdCAqc3VjY2VlZHMq
LgorCitBICp0ZXN0IGNhc2UqIGNvbnRhaW5zIG9uZSBvciBtYW55IHRlc3RzLiBZb3Ugc2hvdWxk
IGdyb3VwIHlvdXIgdGVzdHMgaW50byB0ZXN0CitjYXNlcyB0aGF0IHJlZmxlY3QgdGhlIHN0cnVj
dHVyZSBvZiB0aGUgdGVzdGVkIGNvZGUuIFdoZW4gbXVsdGlwbGUgdGVzdHMgaW4gYQordGVzdCBj
YXNlIG5lZWQgdG8gc2hhcmUgY29tbW9uIG9iamVjdHMgYW5kIHN1YnJvdXRpbmVzLCB5b3UgY2Fu
IHB1dCB0aGVtIGludG8gYQorKnRlc3QgZml4dHVyZSogY2xhc3MuCisKK0EgKnRlc3QgcHJvZ3Jh
bSogY2FuIGNvbnRhaW4gbXVsdGlwbGUgdGVzdCBjYXNlcy4KKworV2UnbGwgbm93IGV4cGxhaW4g
aG93IHRvIHdyaXRlIGEgdGVzdCBwcm9ncmFtLCBzdGFydGluZyBhdCB0aGUgaW5kaXZpZHVhbAor
YXNzZXJ0aW9uIGxldmVsIGFuZCBidWlsZGluZyB1cCB0byB0ZXN0cyBhbmQgdGVzdCBjYXNlcy4K
KworIyMgQXNzZXJ0aW9ucworCitnb29nbGV0ZXN0IGFzc2VydGlvbnMgYXJlIG1hY3JvcyB0aGF0
IHJlc2VtYmxlIGZ1bmN0aW9uIGNhbGxzLiBZb3UgdGVzdCBhIGNsYXNzCitvciBmdW5jdGlvbiBi
eSBtYWtpbmcgYXNzZXJ0aW9ucyBhYm91dCBpdHMgYmVoYXZpb3IuIFdoZW4gYW4gYXNzZXJ0aW9u
IGZhaWxzLAorZ29vZ2xldGVzdCBwcmludHMgdGhlIGFzc2VydGlvbidzIHNvdXJjZSBmaWxlIGFu
ZCBsaW5lIG51bWJlciBsb2NhdGlvbiwgYWxvbmcKK3dpdGggYSBmYWlsdXJlIG1lc3NhZ2UuIFlv
dSBtYXkgYWxzbyBzdXBwbHkgYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlIHdoaWNoIHdpbGwKK2Jl
IGFwcGVuZGVkIHRvIGdvb2dsZXRlc3QncyBtZXNzYWdlLgorCitUaGUgYXNzZXJ0aW9ucyBjb21l
IGluIHBhaXJzIHRoYXQgdGVzdCB0aGUgc2FtZSB0aGluZyBidXQgaGF2ZSBkaWZmZXJlbnQgZWZm
ZWN0cworb24gdGhlIGN1cnJlbnQgZnVuY3Rpb24uIGBBU1NFUlRfKmAgdmVyc2lvbnMgZ2VuZXJh
dGUgZmF0YWwgZmFpbHVyZXMgd2hlbiB0aGV5CitmYWlsLCBhbmQgKiphYm9ydCB0aGUgY3VycmVu
dCBmdW5jdGlvbioqLiBgRVhQRUNUXypgIHZlcnNpb25zIGdlbmVyYXRlIG5vbmZhdGFsCitmYWls
dXJlcywgd2hpY2ggZG9uJ3QgYWJvcnQgdGhlIGN1cnJlbnQgZnVuY3Rpb24uIFVzdWFsbHkgYEVY
UEVDVF8qYCBhcmUKK3ByZWZlcnJlZCwgYXMgdGhleSBhbGxvdyBtb3JlIHRoYW4gb25lIGZhaWx1
cmUgdG8gYmUgcmVwb3J0ZWQgaW4gYSB0ZXN0LgorSG93ZXZlciwgeW91IHNob3VsZCB1c2UgYEFT
U0VSVF8qYCBpZiBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gY29udGludWUgd2hlbiB0aGUKK2Fz
c2VydGlvbiBpbiBxdWVzdGlvbiBmYWlscy4KKworU2luY2UgYSBmYWlsZWQgYEFTU0VSVF8qYCBy
ZXR1cm5zIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gaW1tZWRpYXRlbHksCitwb3NzaWJseSBz
a2lwcGluZyBjbGVhbi11cCBjb2RlIHRoYXQgY29tZXMgYWZ0ZXIgaXQsIGl0IG1heSBjYXVzZSBh
IHNwYWNlIGxlYWsuCitEZXBlbmRpbmcgb24gdGhlIG5hdHVyZSBvZiB0aGUgbGVhaywgaXQgbWF5
IG9yIG1heSBub3QgYmUgd29ydGggZml4aW5nIC0gc28ga2VlcAordGhpcyBpbiBtaW5kIGlmIHlv
dSBnZXQgYSBoZWFwIGNoZWNrZXIgZXJyb3IgaW4gYWRkaXRpb24gdG8gYXNzZXJ0aW9uIGVycm9y
cy4KKworVG8gcHJvdmlkZSBhIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2UsIHNpbXBseSBzdHJlYW0g
aXQgaW50byB0aGUgbWFjcm8gdXNpbmcgdGhlCitgPDxgIG9wZXJhdG9yLCBvciBhIHNlcXVlbmNl
IG9mIHN1Y2ggb3BlcmF0b3JzLiBBbiBleGFtcGxlOgorCitgYGBjKysKK0FTU0VSVF9FUSh4LnNp
emUoKSwgeS5zaXplKCkpIDw8ICJWZWN0b3JzIHggYW5kIHkgYXJlIG9mIHVuZXF1YWwgbGVuZ3Ro
IjsKKworZm9yIChpbnQgaSA9IDA7IGkgPCB4LnNpemUoKTsgKytpKSB7CisgIEVYUEVDVF9FUSh4
W2ldLCB5W2ldKSA8PCAiVmVjdG9ycyB4IGFuZCB5IGRpZmZlciBhdCBpbmRleCAiIDw8IGk7Cit9
CitgYGAKKworQW55dGhpbmcgdGhhdCBjYW4gYmUgc3RyZWFtZWQgdG8gYW4gYG9zdHJlYW1gIGNh
biBiZSBzdHJlYW1lZCB0byBhbiBhc3NlcnRpb24KK21hY3JvLS1pbiBwYXJ0aWN1bGFyLCBDIHN0
cmluZ3MgYW5kIGBzdHJpbmdgIG9iamVjdHMuIElmIGEgd2lkZSBzdHJpbmcKKyhgd2NoYXJfdCpg
LCBgVENIQVIqYCBpbiBgVU5JQ09ERWAgbW9kZSBvbiBXaW5kb3dzLCBvciBgc3RkOjp3c3RyaW5n
YCkgaXMKK3N0cmVhbWVkIHRvIGFuIGFzc2VydGlvbiwgaXQgd2lsbCBiZSB0cmFuc2xhdGVkIHRv
IFVURi04IHdoZW4gcHJpbnRlZC4KKworIyMjIEJhc2ljIEFzc2VydGlvbnMKKworVGhlc2UgYXNz
ZXJ0aW9ucyBkbyBiYXNpYyB0cnVlL2ZhbHNlIGNvbmRpdGlvbiB0ZXN0aW5nLgorCitGYXRhbCBh
c3NlcnRpb24gICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAgICAgIHwgVmVyaWZp
ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLQorYEFTU0VSVF9UUlVFKGNvbmRpdGlvbik7YCAgfCBg
RVhQRUNUX1RSVUUoY29uZGl0aW9uKTtgICB8IGBjb25kaXRpb25gIGlzIHRydWUKK2BBU1NFUlRf
RkFMU0UoY29uZGl0aW9uKTtgIHwgYEVYUEVDVF9GQUxTRShjb25kaXRpb24pO2AgfCBgY29uZGl0
aW9uYCBpcyBmYWxzZQorCitSZW1lbWJlciwgd2hlbiB0aGV5IGZhaWwsIGBBU1NFUlRfKmAgeWll
bGRzIGEgZmF0YWwgZmFpbHVyZSBhbmQgcmV0dXJucyBmcm9tIHRoZQorY3VycmVudCBmdW5jdGlv
biwgd2hpbGUgYEVYUEVDVF8qYCB5aWVsZHMgYSBub25mYXRhbCBmYWlsdXJlLCBhbGxvd2luZyB0
aGUKK2Z1bmN0aW9uIHRvIGNvbnRpbnVlIHJ1bm5pbmcuIEluIGVpdGhlciBjYXNlLCBhbiBhc3Nl
cnRpb24gZmFpbHVyZSBtZWFucyBpdHMKK2NvbnRhaW5pbmcgdGVzdCBmYWlscy4KKworKipBdmFp
bGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIEJpbmFyeSBDb21wYXJpc29u
CisKK1RoaXMgc2VjdGlvbiBkZXNjcmliZXMgYXNzZXJ0aW9ucyB0aGF0IGNvbXBhcmUgdHdvIHZh
bHVlcy4KKworRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAg
ICAgIHwgVmVyaWZpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tCitgQVNTRVJUX0VRKHZhbDEsIHZhbDIpO2AgfCBg
RVhQRUNUX0VRKHZhbDEsIHZhbDIpO2AgfCBgdmFsMSA9PSB2YWwyYAorYEFTU0VSVF9ORSh2YWwx
LCB2YWwyKTtgIHwgYEVYUEVDVF9ORSh2YWwxLCB2YWwyKTtgIHwgYHZhbDEgIT0gdmFsMmAKK2BB
U1NFUlRfTFQodmFsMSwgdmFsMik7YCB8IGBFWFBFQ1RfTFQodmFsMSwgdmFsMik7YCB8IGB2YWwx
IDwgdmFsMmAKK2BBU1NFUlRfTEUodmFsMSwgdmFsMik7YCB8IGBFWFBFQ1RfTEUodmFsMSwgdmFs
Mik7YCB8IGB2YWwxIDw9IHZhbDJgCitgQVNTRVJUX0dUKHZhbDEsIHZhbDIpO2AgfCBgRVhQRUNU
X0dUKHZhbDEsIHZhbDIpO2AgfCBgdmFsMSA+IHZhbDJgCitgQVNTRVJUX0dFKHZhbDEsIHZhbDIp
O2AgfCBgRVhQRUNUX0dFKHZhbDEsIHZhbDIpO2AgfCBgdmFsMSA+PSB2YWwyYAorCitWYWx1ZSBh
cmd1bWVudHMgbXVzdCBiZSBjb21wYXJhYmxlIGJ5IHRoZSBhc3NlcnRpb24ncyBjb21wYXJpc29u
IG9wZXJhdG9yIG9yCit5b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IuIFdlIHVzZWQgdG8gcmVx
dWlyZSB0aGUgYXJndW1lbnRzIHRvIHN1cHBvcnQgdGhlCitgPDxgIG9wZXJhdG9yIGZvciBzdHJl
YW1pbmcgdG8gYW4gYG9zdHJlYW1gLCBidXQgaXQncyBubyBsb25nZXIgbmVjZXNzYXJ5LiBJZgor
YDw8YCBpcyBzdXBwb3J0ZWQsIGl0IHdpbGwgYmUgY2FsbGVkIHRvIHByaW50IHRoZSBhcmd1bWVu
dHMgd2hlbiB0aGUgYXNzZXJ0aW9uCitmYWlsczsgb3RoZXJ3aXNlIGdvb2dsZXRlc3Qgd2lsbCBh
dHRlbXB0IHRvIHByaW50IHRoZW0gaW4gdGhlIGJlc3Qgd2F5IGl0IGNhbi4KK0ZvciBtb3JlIGRl
dGFpbHMgYW5kIGhvdyB0byBjdXN0b21pemUgdGhlIHByaW50aW5nIG9mIHRoZSBhcmd1bWVudHMs
IHNlZQorZ01vY2sgW3JlY2lwZV0oLi4vLi4vZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3Rl
YWNoaW5nLWdvb2dsZS1tb2NrLWhvdy10by1wcmludC15b3VyLXZhbHVlcykuKS4KKworVGhlc2Ug
YXNzZXJ0aW9ucyBjYW4gd29yayB3aXRoIGEgdXNlci1kZWZpbmVkIHR5cGUsIGJ1dCBvbmx5IGlm
IHlvdSBkZWZpbmUgdGhlCitjb3JyZXNwb25kaW5nIGNvbXBhcmlzb24gb3BlcmF0b3IgKGUuZy4g
YD09YCwgYDxgLCBldGMpLiBTaW5jZSB0aGlzIGlzCitkaXNjb3VyYWdlZCBieSB0aGUgR29vZ2xl
IFtDKysgU3R5bGUKK0d1aWRlXShodHRwczovL2dvb2dsZS5naXRodWIuaW8vc3R5bGVndWlkZS9j
cHBndWlkZS5odG1sI09wZXJhdG9yX092ZXJsb2FkaW5nKSwKK3lvdSBtYXkgbmVlZCB0byB1c2Ug
YEFTU0VSVF9UUlVFKClgIG9yIGBFWFBFQ1RfVFJVRSgpYCB0byBhc3NlcnQgdGhlIGVxdWFsaXR5
IG9mCit0d28gb2JqZWN0cyBvZiBhIHVzZXItZGVmaW5lZCB0eXBlLgorCitIb3dldmVyLCB3aGVu
IHBvc3NpYmxlLCBgQVNTRVJUX0VRKGFjdHVhbCwgZXhwZWN0ZWQpYCBpcyBwcmVmZXJyZWQgdG8K
K2BBU1NFUlRfVFJVRShhY3R1YWwgPT0gZXhwZWN0ZWQpYCwgc2luY2UgaXQgdGVsbHMgeW91IGBh
Y3R1YWxgIGFuZCBgZXhwZWN0ZWRgJ3MKK3ZhbHVlcyBvbiBmYWlsdXJlLgorCitBcmd1bWVudHMg
YXJlIGFsd2F5cyBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLiBUaGVyZWZvcmUsIGl0J3MgT0sgZm9y
IHRoZQorYXJndW1lbnRzIHRvIGhhdmUgc2lkZSBlZmZlY3RzLiBIb3dldmVyLCBhcyB3aXRoIGFu
eSBvcmRpbmFyeSBDL0MrKyBmdW5jdGlvbiwKK3RoZSBhcmd1bWVudHMnIGV2YWx1YXRpb24gb3Jk
ZXIgaXMgdW5kZWZpbmVkIChpLmUuIHRoZSBjb21waWxlciBpcyBmcmVlIHRvCitjaG9vc2UgYW55
IG9yZGVyKSBhbmQgeW91ciBjb2RlIHNob3VsZCBub3QgZGVwZW5kIG9uIGFueSBwYXJ0aWN1bGFy
IGFyZ3VtZW50CitldmFsdWF0aW9uIG9yZGVyLgorCitgQVNTRVJUX0VRKClgIGRvZXMgcG9pbnRl
ciBlcXVhbGl0eSBvbiBwb2ludGVycy4gSWYgdXNlZCBvbiB0d28gQyBzdHJpbmdzLCBpdAordGVz
dHMgaWYgdGhleSBhcmUgaW4gdGhlIHNhbWUgbWVtb3J5IGxvY2F0aW9uLCBub3QgaWYgdGhleSBo
YXZlIHRoZSBzYW1lIHZhbHVlLgorVGhlcmVmb3JlLCBpZiB5b3Ugd2FudCB0byBjb21wYXJlIEMg
c3RyaW5ncyAoZS5nLiBgY29uc3QgY2hhcipgKSBieSB2YWx1ZSwgdXNlCitgQVNTRVJUX1NUUkVR
KClgLCB3aGljaCB3aWxsIGJlIGRlc2NyaWJlZCBsYXRlciBvbi4gSW4gcGFydGljdWxhciwgdG8g
YXNzZXJ0Cit0aGF0IGEgQyBzdHJpbmcgaXMgYE5VTExgLCB1c2UgYEFTU0VSVF9TVFJFUShjX3N0
cmluZywgTlVMTClgLiBDb25zaWRlciB1c2UKK2BBU1NFUlRfRVEoY19zdHJpbmcsIG51bGxwdHIp
YCBpZiBjKysxMSBpcyBzdXBwb3J0ZWQuIFRvIGNvbXBhcmUgdHdvIGBzdHJpbmdgCitvYmplY3Rz
LCB5b3Ugc2hvdWxkIHVzZSBgQVNTRVJUX0VRYC4KKworV2hlbiBkb2luZyBwb2ludGVyIGNvbXBh
cmlzb25zIHVzZSBgKl9FUShwdHIsIG51bGxwdHIpYCBhbmQgYCpfTkUocHRyLCBudWxscHRyKWAK
K2luc3RlYWQgb2YgYCpfRVEocHRyLCBOVUxMKWAgYW5kIGAqX05FKHB0ciwgTlVMTClgLiBUaGlz
IGlzIGJlY2F1c2UgYG51bGxwdHJgIGlzCit0eXBlZCB3aGlsZSBgTlVMTGAgaXMgbm90LiBTZWUg
W0ZBUV0oZmFxLm1kI3doeS1kb2VzLWdvb2dsZS10ZXN0LXN1cHBvcnQtZXhwZWN0X2VxbnVsbC1w
dHItYW5kLWFzc2VydF9lcW51bGwtcHRyLWJ1dC1ub3QtZXhwZWN0X25lbnVsbC1wdHItYW5kLWFz
c2VydF9uZW51bGwtcHRyKQorZm9yIG1vcmUgZGV0YWlscy4KKworSWYgeW91J3JlIHdvcmtpbmcg
d2l0aCBmbG9hdGluZyBwb2ludCBudW1iZXJzLCB5b3UgbWF5IHdhbnQgdG8gdXNlIHRoZSBmbG9h
dGluZworcG9pbnQgdmFyaWF0aW9ucyBvZiBzb21lIG9mIHRoZXNlIG1hY3JvcyBpbiBvcmRlciB0
byBhdm9pZCBwcm9ibGVtcyBjYXVzZWQgYnkKK3JvdW5kaW5nLiBTZWUgW0FkdmFuY2VkIGdvb2ds
ZXRlc3QgVG9waWNzXShhZHZhbmNlZC5tZCkgZm9yIGRldGFpbHMuCisKK01hY3JvcyBpbiB0aGlz
IHNlY3Rpb24gd29yayB3aXRoIGJvdGggbmFycm93IGFuZCB3aWRlIHN0cmluZyBvYmplY3RzIChg
c3RyaW5nYAorYW5kIGB3c3RyaW5nYCkuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5k
b3dzLCBNYWMuCisKKyoqSGlzdG9yaWNhbCBub3RlKio6IEJlZm9yZSBGZWJydWFyeSAyMDE2IGAq
X0VRYCBoYWQgYSBjb252ZW50aW9uIG9mIGNhbGxpbmcgaXQKK2FzIGBBU1NFUlRfRVEoZXhwZWN0
ZWQsIGFjdHVhbClgLCBzbyBsb3RzIG9mIGV4aXN0aW5nIGNvZGUgdXNlcyB0aGlzIG9yZGVyLiBO
b3cKK2AqX0VRYCB0cmVhdHMgYm90aCBwYXJhbWV0ZXJzIGluIHRoZSBzYW1lIHdheS4KKworIyMj
IFN0cmluZyBDb21wYXJpc29uCisKK1RoZSBhc3NlcnRpb25zIGluIHRoaXMgZ3JvdXAgY29tcGFy
ZSB0d28gKipDIHN0cmluZ3MqKi4gSWYgeW91IHdhbnQgdG8gY29tcGFyZQordHdvIGBzdHJpbmdg
IG9iamVjdHMsIHVzZSBgRVhQRUNUX0VRYCwgYEVYUEVDVF9ORWAsIGFuZCBldGMgaW5zdGVhZC4K
KworfCBGYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9u
ICAgICAgICAgICAgICB8IFZlcmlmaWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKK3wgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8Cit8IGBBU1NFUlRfU1RSRVEoc3RyMSwg
c3RyMik7YCAgICAgfCBgRVhQRUNUX1NUUkVRKHN0cjEsIHN0cjIpO2AgICAgIHwgdGhlIHR3byBD
IHN0cmluZ3MgaGF2ZSB0aGUgc2FtZSBjb250ZW50ICAgICAgICAgICAgICAgICAgfAorfCBgQVNT
RVJUX1NUUk5FKHN0cjEsIHN0cjIpO2AgICAgIHwgYEVYUEVDVF9TVFJORShzdHIxLCBzdHIyKTtg
ICAgICB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUgZGlmZmVyZW50IGNvbnRlbnRzICAgICAgICAg
ICAgICAgIHwKK3wgYEFTU0VSVF9TVFJDQVNFRVEoc3RyMSwgc3RyMik7YCB8IGBFWFBFQ1RfU1RS
Q0FTRUVRKHN0cjEsIHN0cjIpO2AgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIHRoZSBzYW1lIGNv
bnRlbnQsIGlnbm9yaW5nIGNhc2UgICB8Cit8IGBBU1NFUlRfU1RSQ0FTRU5FKHN0cjEsIHN0cjIp
O2AgfCBgRVhQRUNUX1NUUkNBU0VORShzdHIxLCBzdHIyKTtgIHwgdGhlIHR3byBDIHN0cmluZ3Mg
aGF2ZSBkaWZmZXJlbnQgY29udGVudHMsIGlnbm9yaW5nIGNhc2UgfAorCitOb3RlIHRoYXQgIkNB
U0UiIGluIGFuIGFzc2VydGlvbiBuYW1lIG1lYW5zIHRoYXQgY2FzZSBpcyBpZ25vcmVkLiBBIGBO
VUxMYAorcG9pbnRlciBhbmQgYW4gZW1wdHkgc3RyaW5nIGFyZSBjb25zaWRlcmVkICpkaWZmZXJl
bnQqLgorCitgKlNUUkVRKmAgYW5kIGAqU1RSTkUqYCBhbHNvIGFjY2VwdCB3aWRlIEMgc3RyaW5n
cyAoYHdjaGFyX3QqYCkuIElmIGEgY29tcGFyaXNvbgorb2YgdHdvIHdpZGUgc3RyaW5ncyBmYWls
cywgdGhlaXIgdmFsdWVzIHdpbGwgYmUgcHJpbnRlZCBhcyBVVEYtOCBuYXJyb3cgc3RyaW5ncy4K
KworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworKipTZWUgYWxzbyoq
OiBGb3IgbW9yZSBzdHJpbmcgY29tcGFyaXNvbiB0cmlja3MgKHN1YnN0cmluZywgcHJlZml4LCBz
dWZmaXgsIGFuZAorcmVndWxhciBleHByZXNzaW9uIG1hdGNoaW5nLCBmb3IgZXhhbXBsZSksIHNl
ZQorW3RoaXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9ibG9iL21hc3Rl
ci9nb29nbGV0ZXN0L2RvY3MvYWR2YW5jZWQubWQpCitpbiB0aGUgQWR2YW5jZWQgZ29vZ2xldGVz
dCBHdWlkZS4KKworIyMgU2ltcGxlIFRlc3RzCisKK1RvIGNyZWF0ZSBhIHRlc3Q6CisKKzEuICBV
c2UgdGhlIGBURVNUKClgIG1hY3JvIHRvIGRlZmluZSBhbmQgbmFtZSBhIHRlc3QgZnVuY3Rpb24s
IFRoZXNlIGFyZQorICAgIG9yZGluYXJ5IEMrKyBmdW5jdGlvbnMgdGhhdCBkb24ndCByZXR1cm4g
YSB2YWx1ZS4KKzEuICBJbiB0aGlzIGZ1bmN0aW9uLCBhbG9uZyB3aXRoIGFueSB2YWxpZCBDKysg
c3RhdGVtZW50cyB5b3Ugd2FudCB0byBpbmNsdWRlLAorICAgIHVzZSB0aGUgdmFyaW91cyBnb29n
bGV0ZXN0IGFzc2VydGlvbnMgdG8gY2hlY2sgdmFsdWVzLgorMS4gIFRoZSB0ZXN0J3MgcmVzdWx0
IGlzIGRldGVybWluZWQgYnkgdGhlIGFzc2VydGlvbnM7IGlmIGFueSBhc3NlcnRpb24gaW4gdGhl
CisgICAgdGVzdCBmYWlscyAoZWl0aGVyIGZhdGFsbHkgb3Igbm9uLWZhdGFsbHkpLCBvciBpZiB0
aGUgdGVzdCBjcmFzaGVzLCB0aGUKKyAgICBlbnRpcmUgdGVzdCBmYWlscy4gT3RoZXJ3aXNlLCBp
dCBzdWNjZWVkcy4KKworYGBgYysrCitURVNUKFRlc3RDYXNlTmFtZSwgVGVzdE5hbWUpIHsKKyAg
Li4uIHRlc3QgYm9keSAuLi4KK30KK2BgYAorCitgVEVTVCgpYCBhcmd1bWVudHMgZ28gZnJvbSBn
ZW5lcmFsIHRvIHNwZWNpZmljLiBUaGUgKmZpcnN0KiBhcmd1bWVudCBpcyB0aGUgbmFtZQorb2Yg
dGhlIHRlc3QgY2FzZSwgYW5kIHRoZSAqc2Vjb25kKiBhcmd1bWVudCBpcyB0aGUgdGVzdCdzIG5h
bWUgd2l0aGluIHRoZSB0ZXN0CitjYXNlLiBCb3RoIG5hbWVzIG11c3QgYmUgdmFsaWQgQysrIGlk
ZW50aWZpZXJzLCBhbmQgdGhleSBzaG91bGQgbm90IGNvbnRhaW4KK3VuZGVyc2NvcmUgKGBfYCku
IEEgdGVzdCdzICpmdWxsIG5hbWUqIGNvbnNpc3RzIG9mIGl0cyBjb250YWluaW5nIHRlc3QgY2Fz
ZSBhbmQKK2l0cyBpbmRpdmlkdWFsIG5hbWUuIFRlc3RzIGZyb20gZGlmZmVyZW50IHRlc3QgY2Fz
ZXMgY2FuIGhhdmUgdGhlIHNhbWUKK2luZGl2aWR1YWwgbmFtZS4KKworRm9yIGV4YW1wbGUsIGxl
dCdzIHRha2UgYSBzaW1wbGUgaW50ZWdlciBmdW5jdGlvbjoKKworYGBgYysrCitpbnQgRmFjdG9y
aWFsKGludCBuKTsgIC8vIFJldHVybnMgdGhlIGZhY3RvcmlhbCBvZiBuCitgYGAKKworQSB0ZXN0
IGNhc2UgZm9yIHRoaXMgZnVuY3Rpb24gbWlnaHQgbG9vayBsaWtlOgorCitgYGBjKysKKy8vIFRl
c3RzIGZhY3RvcmlhbCBvZiAwLgorVEVTVChGYWN0b3JpYWxUZXN0LCBIYW5kbGVzWmVyb0lucHV0
KSB7CisgIEVYUEVDVF9FUShGYWN0b3JpYWwoMCksIDEpOworfQorCisvLyBUZXN0cyBmYWN0b3Jp
YWwgb2YgcG9zaXRpdmUgbnVtYmVycy4KK1RFU1QoRmFjdG9yaWFsVGVzdCwgSGFuZGxlc1Bvc2l0
aXZlSW5wdXQpIHsKKyAgRVhQRUNUX0VRKEZhY3RvcmlhbCgxKSwgMSk7CisgIEVYUEVDVF9FUShG
YWN0b3JpYWwoMiksIDIpOworICBFWFBFQ1RfRVEoRmFjdG9yaWFsKDMpLCA2KTsKKyAgRVhQRUNU
X0VRKEZhY3RvcmlhbCg4KSwgNDAzMjApOworfQorYGBgCisKK2dvb2dsZXRlc3QgZ3JvdXBzIHRo
ZSB0ZXN0IHJlc3VsdHMgYnkgdGVzdCBjYXNlcywgc28gbG9naWNhbGx5LXJlbGF0ZWQgdGVzdHMK
K3Nob3VsZCBiZSBpbiB0aGUgc2FtZSB0ZXN0IGNhc2U7IGluIG90aGVyIHdvcmRzLCB0aGUgZmly
c3QgYXJndW1lbnQgdG8gdGhlaXIKK2BURVNUKClgIHNob3VsZCBiZSB0aGUgc2FtZS4gSW4gdGhl
IGFib3ZlIGV4YW1wbGUsIHdlIGhhdmUgdHdvIHRlc3RzLAorYEhhbmRsZXNaZXJvSW5wdXRgIGFu
ZCBgSGFuZGxlc1Bvc2l0aXZlSW5wdXRgLCB0aGF0IGJlbG9uZyB0byB0aGUgc2FtZSB0ZXN0IGNh
c2UKK2BGYWN0b3JpYWxUZXN0YC4KKworV2hlbiBuYW1pbmcgeW91ciB0ZXN0IGNhc2VzIGFuZCB0
ZXN0cywgeW91IHNob3VsZCBmb2xsb3cgdGhlIHNhbWUgY29udmVudGlvbiBhcworZm9yIFtuYW1p
bmcgZnVuY3Rpb25zIGFuZAorY2xhc3Nlc10oaHR0cHM6Ly9nb29nbGUuZ2l0aHViLmlvL3N0eWxl
Z3VpZGUvY3BwZ3VpZGUuaHRtbCNGdW5jdGlvbl9OYW1lcykuCisKKyoqQXZhaWxhYmlsaXR5Kio6
IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIFRlc3QgRml4dHVyZXM6IFVzaW5nIHRoZSBTYW1l
IERhdGEgQ29uZmlndXJhdGlvbiBmb3IgTXVsdGlwbGUgVGVzdHMKKworSWYgeW91IGZpbmQgeW91
cnNlbGYgd3JpdGluZyB0d28gb3IgbW9yZSB0ZXN0cyB0aGF0IG9wZXJhdGUgb24gc2ltaWxhciBk
YXRhLCB5b3UKK2NhbiB1c2UgYSAqdGVzdCBmaXh0dXJlKi4gSXQgYWxsb3dzIHlvdSB0byByZXVz
ZSB0aGUgc2FtZSBjb25maWd1cmF0aW9uIG9mCitvYmplY3RzIGZvciBzZXZlcmFsIGRpZmZlcmVu
dCB0ZXN0cy4KKworVG8gY3JlYXRlIGEgZml4dHVyZToKKworMS4gIERlcml2ZSBhIGNsYXNzIGZy
b20gYDo6dGVzdGluZzo6VGVzdGAgLiBTdGFydCBpdHMgYm9keSB3aXRoIGBwcm90ZWN0ZWQ6YCBh
cworICAgIHdlJ2xsIHdhbnQgdG8gYWNjZXNzIGZpeHR1cmUgbWVtYmVycyBmcm9tIHN1Yi1jbGFz
c2VzLgorMS4gIEluc2lkZSB0aGUgY2xhc3MsIGRlY2xhcmUgYW55IG9iamVjdHMgeW91IHBsYW4g
dG8gdXNlLgorMS4gIElmIG5lY2Vzc2FyeSwgd3JpdGUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yIG9y
IGBTZXRVcCgpYCBmdW5jdGlvbiB0byBwcmVwYXJlCisgICAgdGhlIG9iamVjdHMgZm9yIGVhY2gg
dGVzdC4gQSBjb21tb24gbWlzdGFrZSBpcyB0byBzcGVsbCBgU2V0VXAoKWAgYXMKKyAgICAqKmBT
ZXR1cCgpYCoqIHdpdGggYSBzbWFsbCBgdWAgLSBVc2UgYG92ZXJyaWRlYCBpbiBDKysxMSB0byBt
YWtlIHN1cmUgeW91CisgICAgc3BlbGxlZCBpdCBjb3JyZWN0bHkKKzEuICBJZiBuZWNlc3Nhcnks
IHdyaXRlIGEgZGVzdHJ1Y3RvciBvciBgVGVhckRvd24oKWAgZnVuY3Rpb24gdG8gcmVsZWFzZSBh
bnkKKyAgICByZXNvdXJjZXMgeW91IGFsbG9jYXRlZCBpbiBgU2V0VXAoKWAgLiBUbyBsZWFybiB3
aGVuIHlvdSBzaG91bGQgdXNlIHRoZQorICAgIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgYW5kIHdo
ZW4geW91IHNob3VsZCB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAsIHJlYWQKKyAgICB0aGlzIFtG
QVFdKGZhcS5tZCNzaG91bGQtaS11c2UtdGhlLWNvbnN0cnVjdG9yZGVzdHJ1Y3Rvci1vZi10aGUt
dGVzdC1maXh0dXJlLW9yLXNldHVwdGVhcmRvd24pIGVudHJ5LgorMS4gIElmIG5lZWRlZCwgZGVm
aW5lIHN1YnJvdXRpbmVzIGZvciB5b3VyIHRlc3RzIHRvIHNoYXJlLgorCitXaGVuIHVzaW5nIGEg
Zml4dHVyZSwgdXNlIGBURVNUX0YoKWAgaW5zdGVhZCBvZiBgVEVTVCgpYCBhcyBpdCBhbGxvd3Mg
eW91IHRvCithY2Nlc3Mgb2JqZWN0cyBhbmQgc3Vicm91dGluZXMgaW4gdGhlIHRlc3QgZml4dHVy
ZToKKworYGBgYysrCitURVNUX0YoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSkgeworICAuLi4gdGVz
dCBib2R5IC4uLgorfQorYGBgCisKK0xpa2UgYFRFU1QoKWAsIHRoZSBmaXJzdCBhcmd1bWVudCBp
cyB0aGUgdGVzdCBjYXNlIG5hbWUsIGJ1dCBmb3IgYFRFU1RfRigpYCB0aGlzCittdXN0IGJlIHRo
ZSBuYW1lIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuIFlvdSd2ZSBwcm9iYWJseSBndWVzc2Vk
OiBgX0ZgIGlzIGZvcgorZml4dHVyZS4KKworVW5mb3J0dW5hdGVseSwgdGhlIEMrKyBtYWNybyBz
eXN0ZW0gZG9lcyBub3QgYWxsb3cgdXMgdG8gY3JlYXRlIGEgc2luZ2xlIG1hY3JvCit0aGF0IGNh
biBoYW5kbGUgYm90aCB0eXBlcyBvZiB0ZXN0cy4gVXNpbmcgdGhlIHdyb25nIG1hY3JvIGNhdXNl
cyBhIGNvbXBpbGVyCitlcnJvci4KKworQWxzbywgeW91IG11c3QgZmlyc3QgZGVmaW5lIGEgdGVz
dCBmaXh0dXJlIGNsYXNzIGJlZm9yZSB1c2luZyBpdCBpbiBhCitgVEVTVF9GKClgLCBvciB5b3Un
bGwgZ2V0IHRoZSBjb21waWxlciBlcnJvciAiYHZpcnR1YWwgb3V0c2lkZSBjbGFzcworZGVjbGFy
YXRpb25gIi4KKworRm9yIGVhY2ggdGVzdCBkZWZpbmVkIHdpdGggYFRFU1RfRigpYCAsIGdvb2ds
ZXRlc3Qgd2lsbCBjcmVhdGUgYSAqZnJlc2gqIHRlc3QKK2ZpeHR1cmUgYXQgcnVudGltZSwgaW1t
ZWRpYXRlbHkgaW5pdGlhbGl6ZSBpdCB2aWEgYFNldFVwKClgICwgcnVuIHRoZSB0ZXN0LAorY2xl
YW4gdXAgYnkgY2FsbGluZyBgVGVhckRvd24oKWAgLCBhbmQgdGhlbiBkZWxldGUgdGhlIHRlc3Qg
Zml4dHVyZS4gTm90ZSB0aGF0CitkaWZmZXJlbnQgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNl
IGhhdmUgZGlmZmVyZW50IHRlc3QgZml4dHVyZSBvYmplY3RzLCBhbmQKK2dvb2dsZXRlc3QgYWx3
YXlzIGRlbGV0ZXMgYSB0ZXN0IGZpeHR1cmUgYmVmb3JlIGl0IGNyZWF0ZXMgdGhlIG5leHQgb25l
LgorZ29vZ2xldGVzdCBkb2VzICoqbm90KiogcmV1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlIGZv
ciBtdWx0aXBsZSB0ZXN0cy4gQW55CitjaGFuZ2VzIG9uZSB0ZXN0IG1ha2VzIHRvIHRoZSBmaXh0
dXJlIGRvIG5vdCBhZmZlY3Qgb3RoZXIgdGVzdHMuCisKK0FzIGFuIGV4YW1wbGUsIGxldCdzIHdy
aXRlIHRlc3RzIGZvciBhIEZJRk8gcXVldWUgY2xhc3MgbmFtZWQgYFF1ZXVlYCwgd2hpY2ggaGFz
Cit0aGUgZm9sbG93aW5nIGludGVyZmFjZToKKworYGBgYysrCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RT4gIC8vIEUgaXMgdGhlIGVsZW1lbnQgdHlwZS4KK2NsYXNzIFF1ZXVlIHsKKyBwdWJsaWM6Cisg
IFF1ZXVlKCk7CisgIHZvaWQgRW5xdWV1ZShjb25zdCBFJiBlbGVtZW50KTsKKyAgRSogRGVxdWV1
ZSgpOyAgLy8gUmV0dXJucyBOVUxMIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eS4KKyAgc2l6ZV90IHNp
emUoKSBjb25zdDsKKyAgLi4uCit9OworYGBgCisKK0ZpcnN0LCBkZWZpbmUgYSBmaXh0dXJlIGNs
YXNzLiBCeSBjb252ZW50aW9uLCB5b3Ugc2hvdWxkIGdpdmUgaXQgdGhlIG5hbWUKK2BGb29UZXN0
YCB3aGVyZSBgRm9vYCBpcyB0aGUgY2xhc3MgYmVpbmcgdGVzdGVkLgorCitgYGBjKysKK2NsYXNz
IFF1ZXVlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdm9p
ZCBTZXRVcCgpIG92ZXJyaWRlIHsKKyAgICAgcTFfLkVucXVldWUoMSk7CisgICAgIHEyXy5FbnF1
ZXVlKDIpOworICAgICBxMl8uRW5xdWV1ZSgzKTsKKyAgfQorCisgIC8vIHZvaWQgVGVhckRvd24o
KSBvdmVycmlkZSB7fQorCisgIFF1ZXVlPGludD4gcTBfOworICBRdWV1ZTxpbnQ+IHExXzsKKyAg
UXVldWU8aW50PiBxMl87Cit9OworYGBgCisKK0luIHRoaXMgY2FzZSwgYFRlYXJEb3duKClgIGlz
IG5vdCBuZWVkZWQgc2luY2Ugd2UgZG9uJ3QgaGF2ZSB0byBjbGVhbiB1cCBhZnRlcgorZWFjaCB0
ZXN0LCBvdGhlciB0aGFuIHdoYXQncyBhbHJlYWR5IGRvbmUgYnkgdGhlIGRlc3RydWN0b3IuCisK
K05vdyB3ZSdsbCB3cml0ZSB0ZXN0cyB1c2luZyBgVEVTVF9GKClgIGFuZCB0aGlzIGZpeHR1cmUu
CisKK2BgYGMrKworVEVTVF9GKFF1ZXVlVGVzdCwgSXNFbXB0eUluaXRpYWxseSkgeworICBFWFBF
Q1RfRVEocTBfLnNpemUoKSwgMCk7Cit9CisKK1RFU1RfRihRdWV1ZVRlc3QsIERlcXVldWVXb3Jr
cykgeworICBpbnQqIG4gPSBxMF8uRGVxdWV1ZSgpOworICBFWFBFQ1RfRVEobiwgbnVsbHB0cik7
CisKKyAgbiA9IHExXy5EZXF1ZXVlKCk7CisgIEFTU0VSVF9ORShuLCBudWxscHRyKTsKKyAgRVhQ
RUNUX0VRKCpuLCAxKTsKKyAgRVhQRUNUX0VRKHExXy5zaXplKCksIDApOworICBkZWxldGUgbjsK
KworICBuID0gcTJfLkRlcXVldWUoKTsKKyAgQVNTRVJUX05FKG4sIG51bGxwdHIpOworICBFWFBF
Q1RfRVEoKm4sIDIpOworICBFWFBFQ1RfRVEocTJfLnNpemUoKSwgMSk7CisgIGRlbGV0ZSBuOwor
fQorYGBgCisKK1RoZSBhYm92ZSB1c2VzIGJvdGggYEFTU0VSVF8qYCBhbmQgYEVYUEVDVF8qYCBh
c3NlcnRpb25zLiBUaGUgcnVsZSBvZiB0aHVtYiBpcwordG8gdXNlIGBFWFBFQ1RfKmAgd2hlbiB5
b3Ugd2FudCB0aGUgdGVzdCB0byBjb250aW51ZSB0byByZXZlYWwgbW9yZSBlcnJvcnMgYWZ0ZXIK
K3RoZSBhc3NlcnRpb24gZmFpbHVyZSwgYW5kIHVzZSBgQVNTRVJUXypgIHdoZW4gY29udGludWlu
ZyBhZnRlciBmYWlsdXJlIGRvZXNuJ3QKK21ha2Ugc2Vuc2UuIEZvciBleGFtcGxlLCB0aGUgc2Vj
b25kIGFzc2VydGlvbiBpbiB0aGUgYERlcXVldWVgIHRlc3QgaXMKKz1BU1NFUlRfTkUobnVsbHB0
ciwgbik9LCBhcyB3ZSBuZWVkIHRvIGRlcmVmZXJlbmNlIHRoZSBwb2ludGVyIGBuYCBsYXRlciwg
d2hpY2gKK3dvdWxkIGxlYWQgdG8gYSBzZWdmYXVsdCB3aGVuIGBuYCBpcyBgTlVMTGAuCisKK1do
ZW4gdGhlc2UgdGVzdHMgcnVuLCB0aGUgZm9sbG93aW5nIGhhcHBlbnM6CisKKzEuICBnb29nbGV0
ZXN0IGNvbnN0cnVjdHMgYSBgUXVldWVUZXN0YCBvYmplY3QgKGxldCdzIGNhbGwgaXQgYHQxYCAp
LgorMS4gIGB0MS5TZXRVcCgpYCBpbml0aWFsaXplcyBgdDFgIC4KKzEuICBUaGUgZmlyc3QgdGVz
dCAoIGBJc0VtcHR5SW5pdGlhbGx5YCApIHJ1bnMgb24gYHQxYCAuCisxLiAgYHQxLlRlYXJEb3du
KClgIGNsZWFucyB1cCBhZnRlciB0aGUgdGVzdCBmaW5pc2hlcy4KKzEuICBgdDFgIGlzIGRlc3Ry
dWN0ZWQuCisxLiAgVGhlIGFib3ZlIHN0ZXBzIGFyZSByZXBlYXRlZCBvbiBhbm90aGVyIGBRdWV1
ZVRlc3RgIG9iamVjdCwgdGhpcyB0aW1lCisgICAgcnVubmluZyB0aGUgYERlcXVldWVXb3Jrc2Ag
dGVzdC4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworCisjIyBJ
bnZva2luZyB0aGUgVGVzdHMKKworYFRFU1QoKWAgYW5kIGBURVNUX0YoKWAgaW1wbGljaXRseSBy
ZWdpc3RlciB0aGVpciB0ZXN0cyB3aXRoIGdvb2dsZXRlc3QuIFNvLAordW5saWtlIHdpdGggbWFu
eSBvdGhlciBDKysgdGVzdGluZyBmcmFtZXdvcmtzLCB5b3UgZG9uJ3QgaGF2ZSB0byByZS1saXN0
IGFsbAoreW91ciBkZWZpbmVkIHRlc3RzIGluIG9yZGVyIHRvIHJ1biB0aGVtLgorCitBZnRlciBk
ZWZpbmluZyB5b3VyIHRlc3RzLCB5b3UgY2FuIHJ1biB0aGVtIHdpdGggYFJVTl9BTExfVEVTVFMo
KWAgLCB3aGljaAorcmV0dXJucyBgMGAgaWYgYWxsIHRoZSB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwg
b3IgYDFgIG90aGVyd2lzZS4gTm90ZSB0aGF0CitgUlVOX0FMTF9URVNUUygpYCBydW5zICphbGwg
dGVzdHMqIGluIHlvdXIgbGluayB1bml0IC0tIHRoZXkgY2FuIGJlIGZyb20KK2RpZmZlcmVudCB0
ZXN0IGNhc2VzLCBvciBldmVuIGRpZmZlcmVudCBzb3VyY2UgZmlsZXMuCisKK1doZW4gaW52b2tl
ZCwgdGhlIGBSVU5fQUxMX1RFU1RTKClgIG1hY3JvOgorCisxLiBTYXZlcyB0aGUgc3RhdGUgb2Yg
YWxsIGdvb2dsZXRlc3QgZmxhZ3MKKworKiAgIENyZWF0ZXMgYSB0ZXN0IGZpeHR1cmUgb2JqZWN0
IGZvciB0aGUgZmlyc3QgdGVzdC4KKworKiAgIEluaXRpYWxpemVzIGl0IHZpYSBgU2V0VXAoKWAu
CisKKyogICBSdW5zIHRoZSB0ZXN0IG9uIHRoZSBmaXh0dXJlIG9iamVjdC4KKworKiAgIENsZWFu
cyB1cCB0aGUgZml4dHVyZSB2aWEgYFRlYXJEb3duKClgLgorCisqICAgRGVsZXRlcyB0aGUgZml4
dHVyZS4KKworKiBSZXN0b3JlcyB0aGUgc3RhdGUgb2YgYWxsIGdvb2dsZXRlc3QgZmxhZ3MKKwor
KiAgIFJlcGVhdHMgdGhlIGFib3ZlIHN0ZXBzIGZvciB0aGUgbmV4dCB0ZXN0LCB1bnRpbCBhbGwg
dGVzdHMgaGF2ZSBydW4uCisKK0lmIGEgZmF0YWwgZmFpbHVyZSBoYXBwZW5zIHRoZSBzdWJzZXF1
ZW50IHN0ZXBzIHdpbGwgYmUgc2tpcHBlZC4KKworPiBJTVBPUlRBTlQ6IFlvdSBtdXN0ICoqbm90
KiogaWdub3JlIHRoZSByZXR1cm4gdmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAsIG9yCis+IHlv
dSB3aWxsIGdldCBhIGNvbXBpbGVyIGVycm9yLiBUaGUgcmF0aW9uYWxlIGZvciB0aGlzIGRlc2ln
biBpcyB0aGF0IHRoZQorPiBhdXRvbWF0ZWQgdGVzdGluZyBzZXJ2aWNlIGRldGVybWluZXMgd2hl
dGhlciBhIHRlc3QgaGFzIHBhc3NlZCBiYXNlZCBvbiBpdHMKKz4gZXhpdCBjb2RlLCBub3Qgb24g
aXRzIHN0ZG91dC9zdGRlcnIgb3V0cHV0OyB0aHVzIHlvdXIgYG1haW4oKWAgZnVuY3Rpb24gbXVz
dAorPiByZXR1cm4gdGhlIHZhbHVlIG9mIGBSVU5fQUxMX1RFU1RTKClgLgorPgorPiBBbHNvLCB5
b3Ugc2hvdWxkIGNhbGwgYFJVTl9BTExfVEVTVFMoKWAgb25seSAqKm9uY2UqKi4gQ2FsbGluZyBp
dCBtb3JlIHRoYW4KKz4gb25jZSBjb25mbGljdHMgd2l0aCBzb21lIGFkdmFuY2VkIGdvb2dsZXRl
c3QgZmVhdHVyZXMgKGUuZy4gdGhyZWFkLXNhZmUgW2RlYXRoCis+IHRlc3RzXShhZHZhbmNlZCNk
ZWF0aC10ZXN0cykpIGFuZCB0aHVzIGlzIG5vdCBzdXBwb3J0ZWQuCisKKyoqQXZhaWxhYmlsaXR5
Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIFdyaXRpbmcgdGhlIG1haW4oKSBGdW5jdGlv
bgorCitJbiBgZ29vZ2xlM2AsIHRoZSBzaW1wbGVzdCBhcHByb2FjaCBpcyB0byB1c2UgdGhlIGRl
ZmF1bHQgbWFpbigpIGZ1bmN0aW9uCitwcm92aWRlZCBieSBsaW5raW5nIGluIGAiLy90ZXN0aW5n
L2Jhc2UvcHVibGljOmd0ZXN0X21haW4iYC4gSWYgdGhhdCBkb2Vzbid0Citjb3ZlciB3aGF0IHlv
dSBuZWVkLCB5b3Ugc2hvdWxkIHdyaXRlIHlvdXIgb3duIG1haW4oKSBmdW5jdGlvbiwgd2hpY2gg
c2hvdWxkCityZXR1cm4gdGhlIHZhbHVlIG9mIGBSVU5fQUxMX1RFU1RTKClgLiBMaW5rIHRvIGAi
Ly90ZXN0aW5nL2Jhc2UvcHVibGljOmd1bml0ImAuCitZb3UgY2FuIHN0YXJ0IGZyb20gdGhpcyBi
b2lsZXJwbGF0ZToKKworYGBgYysrCisjaW5jbHVkZSAidGhpcy9wYWNrYWdlL2Zvby5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CisKKy8vIFRoZSBmaXh0dXJlIGZv
ciB0ZXN0aW5nIGNsYXNzIEZvby4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIC8vIFlvdSBjYW4gcmVtb3ZlIGFueSBvciBhbGwgb2YgdGhl
IGZvbGxvd2luZyBmdW5jdGlvbnMgaWYgaXRzIGJvZHkKKyAgLy8gaXMgZW1wdHkuCisKKyAgRm9v
VGVzdCgpIHsKKyAgICAgLy8gWW91IGNhbiBkbyBzZXQtdXAgd29yayBmb3IgZWFjaCB0ZXN0IGhl
cmUuCisgIH0KKworICB+Rm9vVGVzdCgpIG92ZXJyaWRlIHsKKyAgICAgLy8gWW91IGNhbiBkbyBj
bGVhbi11cCB3b3JrIHRoYXQgZG9lc24ndCB0aHJvdyBleGNlcHRpb25zIGhlcmUuCisgIH0KKwor
ICAvLyBJZiB0aGUgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IgYXJlIG5vdCBlbm91Z2ggZm9y
IHNldHRpbmcgdXAKKyAgLy8gYW5kIGNsZWFuaW5nIHVwIGVhY2ggdGVzdCwgeW91IGNhbiBkZWZp
bmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorCisgIHZvaWQgU2V0VXAoKSBvdmVycmlkZSB7Cisg
ICAgIC8vIENvZGUgaGVyZSB3aWxsIGJlIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgY29u
c3RydWN0b3IgKHJpZ2h0CisgICAgIC8vIGJlZm9yZSBlYWNoIHRlc3QpLgorICB9CisKKyAgdm9p
ZCBUZWFyRG93bigpIG92ZXJyaWRlIHsKKyAgICAgLy8gQ29kZSBoZXJlIHdpbGwgYmUgY2FsbGVk
IGltbWVkaWF0ZWx5IGFmdGVyIGVhY2ggdGVzdCAocmlnaHQKKyAgICAgLy8gYmVmb3JlIHRoZSBk
ZXN0cnVjdG9yKS4KKyAgfQorCisgIC8vIE9iamVjdHMgZGVjbGFyZWQgaGVyZSBjYW4gYmUgdXNl
ZCBieSBhbGwgdGVzdHMgaW4gdGhlIHRlc3QgY2FzZSBmb3IgRm9vLgorfTsKKworLy8gVGVzdHMg
dGhhdCB0aGUgRm9vOjpCYXIoKSBtZXRob2QgZG9lcyBBYmMuCitURVNUX0YoRm9vVGVzdCwgTWV0
aG9kQmFyRG9lc0FiYykgeworICBjb25zdCBzdGQ6OnN0cmluZyBpbnB1dF9maWxlcGF0aCA9ICJ0
aGlzL3BhY2thZ2UvdGVzdGRhdGEvbXlpbnB1dGZpbGUuZGF0IjsKKyAgY29uc3Qgc3RkOjpzdHJp
bmcgb3V0cHV0X2ZpbGVwYXRoID0gInRoaXMvcGFja2FnZS90ZXN0ZGF0YS9teW91dHB1dGZpbGUu
ZGF0IjsKKyAgRm9vIGY7CisgIEVYUEVDVF9FUShmLkJhcihpbnB1dF9maWxlcGF0aCwgb3V0cHV0
X2ZpbGVwYXRoKSwgMCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgRm9vIGRvZXMgWHl6LgorVEVTVF9G
KEZvb1Rlc3QsIERvZXNYeXopIHsKKyAgLy8gRXhlcmNpc2VzIHRoZSBYeXogZmVhdHVyZSBvZiBG
b28uCit9CisKK30gIC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy
Z3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIHJldHVy
biBSVU5fQUxMX1RFU1RTKCk7Cit9CitgYGAKKworCitUaGUgYDo6dGVzdGluZzo6SW5pdEdvb2ds
ZVRlc3QoKWAgZnVuY3Rpb24gcGFyc2VzIHRoZSBjb21tYW5kIGxpbmUgZm9yCitnb29nbGV0ZXN0
IGZsYWdzLCBhbmQgcmVtb3ZlcyBhbGwgcmVjb2duaXplZCBmbGFncy4gVGhpcyBhbGxvd3MgdGhl
IHVzZXIgdG8KK2NvbnRyb2wgYSB0ZXN0IHByb2dyYW0ncyBiZWhhdmlvciB2aWEgdmFyaW91cyBm
bGFncywgd2hpY2ggd2UnbGwgY292ZXIgaW4KK1tBZHZhbmNlZEd1aWRlXShhZHZhbmNlZC5tZCku
IFlvdSAqKm11c3QqKiBjYWxsIHRoaXMgZnVuY3Rpb24gYmVmb3JlIGNhbGxpbmcKK2BSVU5fQUxM
X1RFU1RTKClgLCBvciB0aGUgZmxhZ3Mgd29uJ3QgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuCisK
K09uIFdpbmRvd3MsIGBJbml0R29vZ2xlVGVzdCgpYCBhbHNvIHdvcmtzIHdpdGggd2lkZSBzdHJp
bmdzLCBzbyBpdCBjYW4gYmUgdXNlZAoraW4gcHJvZ3JhbXMgY29tcGlsZWQgaW4gYFVOSUNPREVg
IG1vZGUgYXMgd2VsbC4KKworQnV0IG1heWJlIHlvdSB0aGluayB0aGF0IHdyaXRpbmcgYWxsIHRo
b3NlIG1haW4oKSBmdW5jdGlvbnMgaXMgdG9vIG11Y2ggd29yaz8gV2UKK2FncmVlIHdpdGggeW91
IGNvbXBsZXRlbHkgYW5kIHRoYXQncyB3aHkgR29vZ2xlIFRlc3QgcHJvdmlkZXMgYSBiYXNpYwor
aW1wbGVtZW50YXRpb24gb2YgbWFpbigpLiBJZiBpdCBmaXRzIHlvdXIgbmVlZHMsIHRoZW4ganVz
dCBsaW5rIHlvdXIgdGVzdCB3aXRoCitndGVzdFxfbWFpbiBsaWJyYXJ5IGFuZCB5b3UgYXJlIGdv
b2QgdG8gZ28uCisKK05PVEU6IGBQYXJzZUdVbml0RmxhZ3MoKWAgaXMgZGVwcmVjYXRlZCBpbiBm
YXZvciBvZiBgSW5pdEdvb2dsZVRlc3QoKWAuCisKKworIyMgS25vd24gTGltaXRhdGlvbnMKKwor
KiAgIEdvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHRvIGJlIHRocmVhZC1zYWZlLiBUaGUgaW1wbGVt
ZW50YXRpb24gaXMgdGhyZWFkLXNhZmUKKyAgICBvbiBzeXN0ZW1zIHdoZXJlIHRoZSBgcHRocmVh
ZHNgIGxpYnJhcnkgaXMgYXZhaWxhYmxlLiBJdCBpcyBjdXJyZW50bHkKKyAgICBfdW5zYWZlXyB0
byB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBmcm9tIHR3byB0aHJlYWRzIGNvbmN1cnJlbnRs
eSBvbgorICAgIG90aGVyIHN5c3RlbXMgKGUuZy4gV2luZG93cykuIEluIG1vc3QgdGVzdHMgdGhp
cyBpcyBub3QgYW4gaXNzdWUgYXMgdXN1YWxseQorICAgIHRoZSBhc3NlcnRpb25zIGFyZSBkb25l
IGluIHRoZSBtYWluIHRocmVhZC4gSWYgeW91IHdhbnQgdG8gaGVscCwgeW91IGNhbgorICAgIHZv
bHVudGVlciB0byBpbXBsZW1lbnQgdGhlIG5lY2Vzc2FyeSBzeW5jaHJvbml6YXRpb24gcHJpbWl0
aXZlcyBpbgorICAgIGBndGVzdC1wb3J0LmhgIGZvciB5b3VyIHBsYXRmb3JtLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9zYW1wbGVzLm1kIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvZG9jcy9zYW1wbGVzLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4ZGNjYTM4MTQ5MWUxOTgy
MzMyYzZkNDQ3MmNhODJkMGQwMjE3MDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9kb2NzL3NhbXBsZXMubWQKQEAgLTAsMCArMSwyMiBAQAorIyBHb29nbGV0ZXN0
IFNhbXBsZXMgeyNzYW1wbGVzfQorCitJZiB5b3UncmUgbGlrZSB1cywgeW91J2QgbGlrZSB0byBs
b29rIGF0IFtnb29nbGV0ZXN0CitzYW1wbGVzLl0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9n
b29nbGV0ZXN0L3RyZWUvbWFzdGVyL2dvb2dsZXRlc3Qvc2FtcGxlcykKK1RoZSBzYW1wbGUgZGly
ZWN0b3J5IGhhcyBhIG51bWJlciBvZiB3ZWxsLWNvbW1lbnRlZCBzYW1wbGVzIHNob3dpbmcgaG93
IHRvIHVzZSBhCit2YXJpZXR5IG9mIGdvb2dsZXRlc3QgZmVhdHVyZXMuCisKKyogICBTYW1wbGUg
IzEgc2hvd3MgdGhlIGJhc2ljIHN0ZXBzIG9mIHVzaW5nIGdvb2dsZXRlc3QgdG8gdGVzdCBDKysg
ZnVuY3Rpb25zLgorKiAgIFNhbXBsZSAjMiBzaG93cyBhIG1vcmUgY29tcGxleCB1bml0IHRlc3Qg
Zm9yIGEgY2xhc3Mgd2l0aCBtdWx0aXBsZSBtZW1iZXIKKyAgICBmdW5jdGlvbnMuCisqICAgU2Ft
cGxlICMzIHVzZXMgYSB0ZXN0IGZpeHR1cmUuCisqICAgU2FtcGxlICM0IHRlYWNoZXMgeW91IGhv
dyB0byB1c2UgZ29vZ2xldGVzdCBhbmQgYGdvb2dsZXRlc3QuaGAgdG9nZXRoZXIgdG8KKyAgICBn
ZXQgdGhlIGJlc3Qgb2YgYm90aCBsaWJyYXJpZXMuCisqICAgU2FtcGxlICM1IHB1dHMgc2hhcmVk
IHRlc3RpbmcgbG9naWMgaW4gYSBiYXNlIHRlc3QgZml4dHVyZSwgYW5kIHJldXNlcyBpdCBpbgor
ICAgIGRlcml2ZWQgZml4dHVyZXMuCisqICAgU2FtcGxlICM2IGRlbW9uc3RyYXRlcyB0eXBlLXBh
cmFtZXRlcml6ZWQgdGVzdHMuCisqICAgU2FtcGxlICM3IHRlYWNoZXMgdGhlIGJhc2ljcyBvZiB2
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorKiAgIFNhbXBsZSAjOCBzaG93cyB1c2luZyBgQ29t
YmluZSgpYCBpbiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorKiAgIFNhbXBsZSAjOSBzaG93
cyB1c2Ugb2YgdGhlIGxpc3RlbmVyIEFQSSB0byBtb2RpZnkgR29vZ2xlIFRlc3QncyBjb25zb2xl
CisgICAgb3V0cHV0IGFuZCB0aGUgdXNlIG9mIGl0cyByZWZsZWN0aW9uIEFQSSB0byBpbnNwZWN0
IHRlc3QgcmVzdWx0cy4KKyogICBTYW1wbGUgIzEwIHNob3dzIHVzZSBvZiB0aGUgbGlzdGVuZXIg
QVBJIHRvIGltcGxlbWVudCBhIHByaW1pdGl2ZSBtZW1vcnkKKyAgICBsZWFrIGNoZWNrZXIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LWRl
YXRoLXRlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qt
ZGVhdGgtdGVzdC5oCmluZGV4IDEyMWRjMWZiNWFjNWQ1OWEzM2Q1MzAzNDA1OGVlZTkxYzIxMmEy
MDguLjIwYzU0ZDg2OTUxOWY2OTMwZTdlYmZkMmMwODA1YmFjYTQyMjE2YmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtZGVhdGgt
dGVzdC5oCkBAIC0yNiwxOSArMjYsMTkgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKwogLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xl
IFRlc3QpCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAo
R29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVzIHRoZSBwdWJsaWMg
QVBJIGZvciBkZWF0aCB0ZXN0cy4gIEl0IGlzCiAvLyAjaW5jbHVkZWQgYnkgZ3Rlc3QuaCBzbyBh
IHVzZXIgZG9lc24ndCBuZWVkIHRvIGluY2x1ZGUgdGhpcwogLy8gZGlyZWN0bHkuCisvLyBHT09H
TEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCiAKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVT
VF9HVEVTVF9ERUFUSF9URVNUX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1Rf
REVBVEhfVEVTVF9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZGVhdGgtdGVz
dC1pbnRlcm5hbC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3Qt
aW50ZXJuYWwuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC01MSw2ICs1MSwxNyBAQCBH
VEVTVF9ERUNMQVJFX3N0cmluZ18oZGVhdGhfdGVzdF9zdHlsZSk7CiAKICNpZiBHVEVTVF9IQVNf
REVBVEhfVEVTVAogCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBSZXR1cm5zIGEgQm9vbGVh
biB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNhbGxlciBpcyBjdXJyZW50bHkKKy8vIGV4
ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiB0aGUgZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzLiAg
VG9vbHMgc3VjaCBhcworLy8gVmFsZ3JpbmQgaGVhcCBjaGVja2VycyBtYXkgbmVlZCB0aGlzIHRv
IG1vZGlmeSB0aGVpciBiZWhhdmlvciBpbiBkZWF0aAorLy8gdGVzdHMuICBJTVBPUlRBTlQ6IFRo
aXMgaXMgYW4gaW50ZXJuYWwgdXRpbGl0eS4gIFVzaW5nIGl0IG1heSBicmVhayB0aGUKKy8vIGlt
cGxlbWVudGF0aW9uIG9mIGRlYXRoIHRlc3RzLiAgVXNlciBjb2RlIE1VU1QgTk9UIHVzZSBpdC4K
K0dURVNUX0FQSV8gYm9vbCBJbkRlYXRoVGVzdENoaWxkKCk7CisKK30gIC8vIG5hbWVzcGFjZSBp
bnRlcm5hbAorCiAvLyBUaGUgZm9sbG93aW5nIG1hY3JvcyBhcmUgdXNlZnVsIGZvciB3cml0aW5n
IGRlYXRoIHRlc3RzLgogCiAvLyBIZXJlJ3Mgd2hhdCBoYXBwZW5zIHdoZW4gYW4gQVNTRVJUX0RF
QVRIKiBvciBFWFBFQ1RfREVBVEgqIGlzCkBAIC03NSw3ICs4Niw3IEBAIEdURVNUX0RFQ0xBUkVf
c3RyaW5nXyhkZWF0aF90ZXN0X3N0eWxlKTsKIC8vICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBp
KyspIHsKIC8vICAgICBFWFBFQ1RfREVBVEgoc2VydmVyLlByb2Nlc3NSZXF1ZXN0KGkpLAogLy8g
ICAgICAgICAgICAgICAgICAiSW52YWxpZCByZXF1ZXN0IC4qIGluIFByb2Nlc3NSZXF1ZXN0KCki
KQotLy8gICAgICAgICA8PCAiRmFpbGVkIHRvIGRpZSBvbiByZXF1ZXN0ICIgPDwgaSk7CisvLyAg
ICAgICAgICAgICAgICAgIDw8ICJGYWlsZWQgdG8gZGllIG9uIHJlcXVlc3QgIiA8PCBpOwogLy8g
ICB9CiAvLwogLy8gICBBU1NFUlRfRVhJVChzZXJ2ZXIuRXhpdE5vdygpLCA6OnRlc3Rpbmc6OkV4
aXRlZFdpdGhDb2RlKDApLCAiRXhpdGluZyIpOwpAQCAtODgsMTAgKzk5LDExIEBAIEdURVNUX0RF
Q0xBUkVfc3RyaW5nXyhkZWF0aF90ZXN0X3N0eWxlKTsKIC8vCiAvLyBPbiB0aGUgcmVndWxhciBl
eHByZXNzaW9ucyB1c2VkIGluIGRlYXRoIHRlc3RzOgogLy8KKy8vICAgR09PR0xFVEVTVF9DTTAw
MDUgRE8gTk9UIERFTEVURQogLy8gICBPbiBQT1NJWC1jb21wbGlhbnQgc3lzdGVtcyAoKm5peCks
IHdlIHVzZSB0aGUgPHJlZ2V4Lmg+IGxpYnJhcnksCiAvLyAgIHdoaWNoIHVzZXMgdGhlIFBPU0lY
IGV4dGVuZGVkIHJlZ2V4IHN5bnRheC4KIC8vCi0vLyAgIE9uIG90aGVyIHBsYXRmb3JtcyAoZS5n
LiBXaW5kb3dzKSwgd2Ugb25seSBzdXBwb3J0IGEgc2ltcGxlIHJlZ2V4CisvLyAgIE9uIG90aGVy
IHBsYXRmb3JtcyAoZS5nLiBXaW5kb3dzIG9yIE1hYyksIHdlIG9ubHkgc3VwcG9ydCBhIHNpbXBs
ZSByZWdleAogLy8gICBzeW50YXggaW1wbGVtZW50ZWQgYXMgcGFydCBvZiBHb29nbGUgVGVzdC4g
IFRoaXMgbGltaXRlZAogLy8gICBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYmUgZW5vdWdoIG1vc3Qg
b2YgdGhlIHRpbWUgd2hlbiB3cml0aW5nCiAvLyAgIGRlYXRoIHRlc3RzOyB0aG91Z2ggaXQgbGFj
a3MgbWFueSBmZWF0dXJlcyB5b3UgY2FuIGZpbmQgaW4gUENSRQpAQCAtMTQ5LDI5ICsxNjEsMjkg
QEAgR1RFU1RfREVDTEFSRV9zdHJpbmdfKGRlYXRoX3Rlc3Rfc3R5bGUpOwogLy8gICBpcyByYXJl
bHkgYSBwcm9ibGVtIGFzIHBlb3BsZSB1c3VhbGx5IGRvbid0IHB1dCB0aGUgdGVzdCBiaW5hcnkK
IC8vICAgZGlyZWN0b3J5IGluIFBBVEguCiAvLwotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IG1h
a2UgdGhyZWFkLXNhZmUgZGVhdGggdGVzdHMgc2VhcmNoIHRoZSBQQVRILgorLy8gRklYTUU6IG1h
a2UgdGhyZWFkLXNhZmUgZGVhdGggdGVzdHMgc2VhcmNoIHRoZSBQQVRILgogCiAvLyBBc3NlcnRz
IHRoYXQgYSBnaXZlbiBzdGF0ZW1lbnQgY2F1c2VzIHRoZSBwcm9ncmFtIHRvIGV4aXQsIHdpdGgg
YW4KIC8vIGludGVnZXIgZXhpdCBzdGF0dXMgdGhhdCBzYXRpc2ZpZXMgcHJlZGljYXRlLCBhbmQg
ZW1pdHRpbmcgZXJyb3Igb3V0cHV0CiAvLyB0aGF0IG1hdGNoZXMgcmVnZXguCi0jZGVmaW5lIEFT
U0VSVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCkgXAotICBHVEVTVF9ERUFUSF9U
RVNUXyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIEdURVNUX0ZBVEFMX0ZBSUxVUkVfKQor
IyBkZWZpbmUgQVNTRVJUX0VYSVQoc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4KSBcCisgICAg
R1RFU1RfREVBVEhfVEVTVF8oc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4LCBHVEVTVF9GQVRB
TF9GQUlMVVJFXykKIAogLy8gTGlrZSBBU1NFUlRfRVhJVCwgYnV0IGNvbnRpbnVlcyBvbiB0byBz
dWNjZXNzaXZlIHRlc3RzIGluIHRoZQogLy8gdGVzdCBjYXNlLCBpZiBhbnk6Ci0jZGVmaW5lIEVY
UEVDVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCkgXAotICBHVEVTVF9ERUFUSF9U
RVNUXyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVf
KQorIyBkZWZpbmUgRVhQRUNUX0VYSVQoc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4KSBcCisg
ICAgR1RFU1RfREVBVEhfVEVTVF8oc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4LCBHVEVTVF9O
T05GQVRBTF9GQUlMVVJFXykKIAogLy8gQXNzZXJ0cyB0aGF0IGEgZ2l2ZW4gc3RhdGVtZW50IGNh
dXNlcyB0aGUgcHJvZ3JhbSB0byBleGl0LCBlaXRoZXIgYnkKIC8vIGV4cGxpY2l0bHkgZXhpdGlu
ZyB3aXRoIGEgbm9uemVybyBleGl0IGNvZGUgb3IgYmVpbmcga2lsbGVkIGJ5IGEKIC8vIHNpZ25h
bCwgYW5kIGVtaXR0aW5nIGVycm9yIG91dHB1dCB0aGF0IG1hdGNoZXMgcmVnZXguCi0jZGVmaW5l
IEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCi0gIEFTU0VSVF9FWElUKHN0YXRlbWVu
dCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RXhpdGVkVW5zdWNjZXNzZnVsbHksIHJlZ2V4KQorIyBk
ZWZpbmUgQVNTRVJUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKKyAgICBBU1NFUlRfRVhJVChz
dGF0ZW1lbnQsIDo6dGVzdGluZzo6aW50ZXJuYWw6OkV4aXRlZFVuc3VjY2Vzc2Z1bGx5LCByZWdl
eCkKIAogLy8gTGlrZSBBU1NFUlRfREVBVEgsIGJ1dCBjb250aW51ZXMgb24gdG8gc3VjY2Vzc2l2
ZSB0ZXN0cyBpbiB0aGUKIC8vIHRlc3QgY2FzZSwgaWYgYW55OgotI2RlZmluZSBFWFBFQ1RfREVB
VEgoc3RhdGVtZW50LCByZWdleCkgXAotICBFWFBFQ1RfRVhJVChzdGF0ZW1lbnQsIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkV4aXRlZFVuc3VjY2Vzc2Z1bGx5LCByZWdleCkKKyMgZGVmaW5lIEVYUEVD
VF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgICAgRVhQRUNUX0VYSVQoc3RhdGVtZW50LCA6
OnRlc3Rpbmc6OmludGVybmFsOjpFeGl0ZWRVbnN1Y2Nlc3NmdWxseSwgcmVnZXgpCiAKIC8vIFR3
byBwcmVkaWNhdGUgY2xhc3NlcyB0aGF0IGNhbiBiZSB1c2VkIGluIHtBU1NFUlQsRVhQRUNUfV9F
WElUKjoKIApAQCAtMTg3LDkgKzE5OSwxMCBAQCBjbGFzcyBHVEVTVF9BUElfIEV4aXRlZFdpdGhD
b2RlIHsKICAgY29uc3QgaW50IGV4aXRfY29kZV87CiB9OwogCi0jaWYgIUdURVNUX09TX1dJTkRP
V1MKKyMgaWYgIUdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX0ZVQ0hTSUEKIC8vIFRlc3Rz
IHRoYXQgYW4gZXhpdCBjb2RlIGRlc2NyaWJlcyBhbiBleGl0IGR1ZSB0byB0ZXJtaW5hdGlvbiBi
eSBhCiAvLyBnaXZlbiBzaWduYWwuCisvLyBHT09HTEVURVNUX0NNMDAwNiBETyBOT1QgREVMRVRF
CiBjbGFzcyBHVEVTVF9BUElfIEtpbGxlZEJ5U2lnbmFsIHsKICBwdWJsaWM6CiAgIGV4cGxpY2l0
IEtpbGxlZEJ5U2lnbmFsKGludCBzaWdudW0pOwpAQCAtMTk3LDcgKzIxMCw3IEBAIGNsYXNzIEdU
RVNUX0FQSV8gS2lsbGVkQnlTaWduYWwgewogIHByaXZhdGU6CiAgIGNvbnN0IGludCBzaWdudW1f
OwogfTsKLSNlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vICFHVEVTVF9P
U19XSU5ET1dTCiAKIC8vIEVYUEVDVF9ERUJVR19ERUFUSCBhc3NlcnRzIHRoYXQgdGhlIGdpdmVu
IHN0YXRlbWVudHMgZGllIGluIGRlYnVnIG1vZGUuCiAvLyBUaGUgZGVhdGggdGVzdGluZyBmcmFt
ZXdvcmsgY2F1c2VzIHRoaXMgdG8gaGF2ZSBpbnRlcmVzdGluZyBzZW1hbnRpY3MsCkBAIC0yNDIs
NDAgKzI1NSw4OCBAQCBjbGFzcyBHVEVTVF9BUElfIEtpbGxlZEJ5U2lnbmFsIHsKIC8vICAgRVhQ
RUNUX0VRKDEyLCBEaWVJbkRlYnVnT3IxMigmc2lkZWVmZmVjdCkpOwogLy8gfSwgImRlYXRoIik7
CiAvLwotI2lmZGVmIE5ERUJVRworIyBpZmRlZiBOREVCVUcKIAotI2RlZmluZSBFWFBFQ1RfREVC
VUdfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAotICBkbyB7IHN0YXRlbWVudDsgfSB3aGlsZSAo
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2UoKSkKKyMgIGRlZmluZSBFWFBFQ1RfREVC
VUdfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAorICBHVEVTVF9FWEVDVVRFX1NUQVRFTUVOVF8o
c3RhdGVtZW50LCByZWdleCkKIAotI2RlZmluZSBBU1NFUlRfREVCVUdfREVBVEgoc3RhdGVtZW50
LCByZWdleCkgXAotICBkbyB7IHN0YXRlbWVudDsgfSB3aGlsZSAoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6QWx3YXlzRmFsc2UoKSkKKyMgIGRlZmluZSBBU1NFUlRfREVCVUdfREVBVEgoc3RhdGVtZW50
LCByZWdleCkgXAorICBHVEVTVF9FWEVDVVRFX1NUQVRFTUVOVF8oc3RhdGVtZW50LCByZWdleCkK
IAotI2Vsc2UKKyMgZWxzZQogCi0jZGVmaW5lIEVYUEVDVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQs
IHJlZ2V4KSBcCisjICBkZWZpbmUgRVhQRUNUX0RFQlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgp
IFwKICAgRVhQRUNUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpCiAKLSNkZWZpbmUgQVNTRVJUX0RF
QlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKKyMgIGRlZmluZSBBU1NFUlRfREVCVUdfREVB
VEgoc3RhdGVtZW50LCByZWdleCkgXAogICBBU1NFUlRfREVBVEgoc3RhdGVtZW50LCByZWdleCkK
IAotI2VuZGlmICAvLyBOREVCVUcgZm9yIEVYUEVDVF9ERUJVR19ERUFUSAorIyBlbmRpZiAgLy8g
TkRFQlVHIGZvciBFWFBFQ1RfREVCVUdfREVBVEgKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRI
X1RFU1QKIAorLy8gVGhpcyBtYWNybyBpcyB1c2VkIGZvciBpbXBsZW1lbnRpbmcgbWFjcm9zIHN1
Y2ggYXMKKy8vIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQgYW5kIEFTU0VSVF9ERUFUSF9JRl9T
VVBQT1JURUQgb24gc3lzdGVtcyB3aGVyZQorLy8gZGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0
ZWQuIFRob3NlIG1hY3JvcyBtdXN0IGNvbXBpbGUgb24gc3VjaCBzeXN0ZW1zCisvLyBpZmYgRVhQ
RUNUX0RFQVRIIGFuZCBBU1NFUlRfREVBVEggY29tcGlsZSB3aXRoIHRoZSBzYW1lIHBhcmFtZXRl
cnMgb24KKy8vIHN5c3RlbXMgdGhhdCBzdXBwb3J0IGRlYXRoIHRlc3RzLiBUaGlzIGFsbG93cyBv
bmUgdG8gd3JpdGUgc3VjaCBhIG1hY3JvCisvLyBvbiBhIHN5c3RlbSB0aGF0IGRvZXMgbm90IHN1
cHBvcnQgZGVhdGggdGVzdHMgYW5kIGJlIHN1cmUgdGhhdCBpdCB3aWxsCisvLyBjb21waWxlIG9u
IGEgZGVhdGgtdGVzdCBzdXBwb3J0aW5nIHN5c3RlbS4gSXQgaXMgZXhwb3NlZCBwdWJsaWNseSBz
byB0aGF0CisvLyBzeXN0ZW1zIHRoYXQgaGF2ZSBkZWF0aC10ZXN0cyB3aXRoIHN0cmljdGVyIHJl
cXVpcmVtZW50cyB0aGFuCisvLyBHVEVTVF9IQVNfREVBVEhfVEVTVCBjYW4gd3JpdGUgdGhlaXIg
b3duIGVxdWl2YWxlbnQgb2YKKy8vIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQgYW5kIEFTU0VS
VF9ERUFUSF9JRl9TVVBQT1JURUQuCisvLworLy8gUGFyYW1ldGVyczoKKy8vICAgc3RhdGVtZW50
IC0gIEEgc3RhdGVtZW50IHRoYXQgYSBtYWNybyBzdWNoIGFzIEVYUEVDVF9ERUFUSCB3b3VsZCB0
ZXN0CisvLyAgICAgICAgICAgICAgICBmb3IgcHJvZ3JhbSB0ZXJtaW5hdGlvbi4gVGhpcyBtYWNy
byBoYXMgdG8gbWFrZSBzdXJlIHRoaXMKKy8vICAgICAgICAgICAgICAgIHN0YXRlbWVudCBpcyBj
b21waWxlZCBidXQgbm90IGV4ZWN1dGVkLCB0byBlbnN1cmUgdGhhdAorLy8gICAgICAgICAgICAg
ICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCBjb21waWxlcyB3aXRoIGEgY2VydGFpbgorLy8g
ICAgICAgICAgICAgICAgcGFyYW1ldGVyIGlmZiBFWFBFQ1RfREVBVEggY29tcGlsZXMgd2l0aCBp
dC4KKy8vICAgcmVnZXggICAgIC0gIEEgcmVnZXggdGhhdCBhIG1hY3JvIHN1Y2ggYXMgRVhQRUNU
X0RFQVRIIHdvdWxkIHVzZSB0byB0ZXN0CisvLyAgICAgICAgICAgICAgICB0aGUgb3V0cHV0IG9m
IHN0YXRlbWVudC4gIFRoaXMgcGFyYW1ldGVyIGhhcyB0byBiZQorLy8gICAgICAgICAgICAgICAg
Y29tcGlsZWQgYnV0IG5vdCBldmFsdWF0ZWQgYnkgdGhpcyBtYWNybywgdG8gZW5zdXJlIHRoYXQK
Ky8vICAgICAgICAgICAgICAgIHRoaXMgbWFjcm8gb25seSBhY2NlcHRzIGV4cHJlc3Npb25zIHRo
YXQgYSBtYWNybyBzdWNoIGFzCisvLyAgICAgICAgICAgICAgICBFWFBFQ1RfREVBVEggd291bGQg
YWNjZXB0LgorLy8gICB0ZXJtaW5hdG9yIC0gTXVzdCBiZSBhbiBlbXB0eSBzdGF0ZW1lbnQgZm9y
IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQKKy8vICAgICAgICAgICAgICAgIGFuZCBhIHJldHVy
biBzdGF0ZW1lbnQgZm9yIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQuCisvLyAgICAgICAgICAg
ICAgICBUaGlzIGVuc3VyZXMgdGhhdCBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEIHdpbGwgbm90
CisvLyAgICAgICAgICAgICAgICBjb21waWxlIGluc2lkZSBmdW5jdGlvbnMgd2hlcmUgQVNTRVJU
X0RFQVRIIGRvZXNuJ3QKKy8vICAgICAgICAgICAgICAgIGNvbXBpbGUuCisvLworLy8gIFRoZSBi
cmFuY2ggdGhhdCBoYXMgYW4gYWx3YXlzIGZhbHNlIGNvbmRpdGlvbiBpcyB1c2VkIHRvIGVuc3Vy
ZSB0aGF0CisvLyAgc3RhdGVtZW50IGFuZCByZWdleCBhcmUgY29tcGlsZWQgKGFuZCB0aHVzIHN5
bnRhY3RpY2FsbHkgY29ycmVjdCkgYnV0CisvLyAgbmV2ZXIgZXhlY3V0ZWQuIFRoZSB1bnJlYWNo
YWJsZSBjb2RlIG1hY3JvIHByb3RlY3RzIHRoZSB0ZXJtaW5hdG9yCisvLyAgc3RhdGVtZW50IGZy
b20gZ2VuZXJhdGluZyBhbiAndW5yZWFjaGFibGUgY29kZScgd2FybmluZyBpbiBjYXNlCisvLyAg
c3RhdGVtZW50IHVuY29uZGl0aW9uYWxseSByZXR1cm5zIG9yIHRocm93cy4gVGhlIE1lc3NhZ2Ug
Y29uc3RydWN0b3IgYXQKKy8vICB0aGUgZW5kIGFsbG93cyB0aGUgc3ludGF4IG9mIHN0cmVhbWlu
ZyBhZGRpdGlvbmFsIG1lc3NhZ2VzIGludG8gdGhlCisvLyAgbWFjcm8sIGZvciBjb21waWxhdGlv
bmFsIGNvbXBhdGliaWxpdHkgd2l0aCBFWFBFQ1RfREVBVEgvQVNTRVJUX0RFQVRILgorIyBkZWZp
bmUgR1RFU1RfVU5TVVBQT1JURURfREVBVEhfVEVTVChzdGF0ZW1lbnQsIHJlZ2V4LCB0ZXJtaW5h
dG9yKSBcCisgICAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAorICAgIGlmICg6OnRl
c3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAorICAgICAgR1RFU1RfTE9HXyhXQVJO
SU5HKSBcCisgICAgICAgICAgPDwgIkRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRo
aXMgcGxhdGZvcm0uXG4iIFwKKyAgICAgICAgICA8PCAiU3RhdGVtZW50ICciICNzdGF0ZW1lbnQg
IicgY2Fubm90IGJlIHZlcmlmaWVkLiI7IFwKKyAgICB9IGVsc2UgaWYgKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpIHsgXAorICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UkU6
OlBhcnRpYWxNYXRjaCgiLioiLCAocmVnZXgpKTsgXAorICAgICAgR1RFU1RfU1VQUFJFU1NfVU5S
RUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCisgICAgICB0ZXJtaW5h
dG9yOyBcCisgICAgfSBlbHNlIFwKKyAgICAgIDo6dGVzdGluZzo6TWVzc2FnZSgpCisKIC8vIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgYW5kCiAvLyBBU1NFUlRf
REVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIGV4cGFuZCB0byByZWFsIGRlYXRo
IHRlc3RzIGlmCiAvLyBkZWF0aCB0ZXN0cyBhcmUgc3VwcG9ydGVkOyBvdGhlcndpc2UgdGhleSBq
dXN0IGlzc3VlIGEgd2FybmluZy4gIFRoaXMgaXMKIC8vIHVzZWZ1bCB3aGVuIHlvdSBhcmUgY29t
YmluaW5nIGRlYXRoIHRlc3QgYXNzZXJ0aW9ucyB3aXRoIG5vcm1hbCB0ZXN0CiAvLyBhc3NlcnRp
b25zIGluIG9uZSB0ZXN0LgogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCi0jZGVmaW5lIEVYUEVD
VF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAorIyBkZWZpbmUgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCiAgICAgRVhQRUNUX0RFQVRI
KHN0YXRlbWVudCwgcmVnZXgpCi0jZGVmaW5lIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoc3Rh
dGVtZW50LCByZWdleCkgXAorIyBkZWZpbmUgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0
ZW1lbnQsIHJlZ2V4KSBcCiAgICAgQVNTRVJUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpCiAjZWxz
ZQotI2RlZmluZSBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwK
LSAgICBHVEVTVF9VTlNVUFBPUlRFRF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHJlZ2V4LCApCi0j
ZGVmaW5lIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAotICAg
IEdURVNUX1VOU1VQUE9SVEVEX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcmVnZXgsIHJldHVybikK
KyMgZGVmaW5lIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAor
ICAgIEdURVNUX1VOU1VQUE9SVEVEX0RFQVRIX1RFU1Qoc3RhdGVtZW50LCByZWdleCwgKQorIyBk
ZWZpbmUgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgICAg
R1RFU1RfVU5TVVBQT1JURURfREVBVEhfVEVTVChzdGF0ZW1lbnQsIHJlZ2V4LCByZXR1cm4pCiAj
ZW5kaWYKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmgKaW5kZXggZjEzNWI2OTQy
N2ZlOWViZTIzN2M0Y2RhN2E5YzJmMGQ3OGRkNzY4ZS4uNWNhMDQxNjE0Y2IzNTU5MjJmMzU1Yjg5
M2Y5Yzg0YTNiN2Y1MmM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmgKQEAgLTI2LDEwICsyNiw5IEBACiAvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKIC8vCi0vLyBBdXRob3I6
IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGhlIEdvb2dsZSBDKysgVGVz
dGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBh
bmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogLy8KIC8vIFRoaXMgaGVhZGVyIGZp
bGUgZGVmaW5lcyB0aGUgTWVzc2FnZSBjbGFzcy4KIC8vCkBAIC00MywxMyArNDIsMjEgQEAKIC8v
IHRvIENIQU5HRSBXSVRIT1VUIE5PVElDRS4gIFRoZXJlZm9yZSBETyBOT1QgREVQRU5EIE9OIElU
IGluIGEgdXNlcgogLy8gcHJvZ3JhbSEKIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERF
TEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfTUVTU0FHRV9IXwogI2Rl
ZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX01FU1NBR0VfSF8KIAogI2luY2x1ZGUgPGxp
bWl0cz4KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oPgotI2luY2x1
ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0
MjUxIFwKKy8qIGNsYXNzIEEgbmVlZHMgdG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvIGJlIHVzZWQg
YnkgY2xpZW50cyBvZiBjbGFzcyBCICovKQorCisvLyBFbnN1cmVzIHRoYXQgdGhlcmUgaXMgYXQg
bGVhc3Qgb25lIG9wZXJhdG9yPDwgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisvLyBTZWUgTWVz
c2FnZSYgb3BlcmF0b3I8PCguLi4pIGJlbG93IGZvciB3aHkuCit2b2lkIG9wZXJhdG9yPDwoY29u
c3QgdGVzdGluZzo6aW50ZXJuYWw6OlNlY3JldCYsIGludCk7CiAKIG5hbWVzcGFjZSB0ZXN0aW5n
IHsKIApAQCAtNTgsNyArNjUsNyBAQCBuYW1lc3BhY2UgdGVzdGluZyB7CiAvLyBUeXBpY2FsIHVz
YWdlOgogLy8KIC8vICAgMS4gWW91IHN0cmVhbSBhIGJ1bmNoIG9mIHZhbHVlcyB0byBhIE1lc3Nh
Z2Ugb2JqZWN0LgotLy8gICAgICBJdCB3aWxsIHJlbWVtYmVyIHRoZSB0ZXh0IGluIGEgU3RyU3Ry
ZWFtLgorLy8gICAgICBJdCB3aWxsIHJlbWVtYmVyIHRoZSB0ZXh0IGluIGEgc3RyaW5nc3RyZWFt
LgogLy8gICAyLiBUaGVuIHlvdSBzdHJlYW0gdGhlIE1lc3NhZ2Ugb2JqZWN0IHRvIGFuIG9zdHJl
YW0uCiAvLyAgICAgIFRoaXMgY2F1c2VzIHRoZSB0ZXh0IGluIHRoZSBNZXNzYWdlIHRvIGJlIHN0
cmVhbWVkCiAvLyAgICAgIHRvIHRoZSBvc3RyZWFtLgpAQCAtNzQsNyArODEsNyBAQCBuYW1lc3Bh
Y2UgdGVzdGluZyB7CiAvLyBNZXNzYWdlIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBpbmhlcml0ZWQg
ZnJvbS4gIEluIHBhcnRpY3VsYXIsIGl0cwogLy8gZGVzdHJ1Y3RvciBpcyBub3QgdmlydHVhbC4K
IC8vCi0vLyBOb3RlIHRoYXQgU3RyU3RyZWFtIGJlaGF2ZXMgZGlmZmVyZW50bHkgaW4gZ2NjIGFu
ZCBpbiBNU1ZDLiAgWW91CisvLyBOb3RlIHRoYXQgc3RyaW5nc3RyZWFtIGJlaGF2ZXMgZGlmZmVy
ZW50bHkgaW4gZ2NjIGFuZCBpbiBNU1ZDLiAgWW91CiAvLyBjYW4gc3RyZWFtIGEgTlVMTCBjaGFy
IHBvaW50ZXIgdG8gaXQgaW4gdGhlIGZvcm1lciwgYnV0IG5vdCBpbiB0aGUKIC8vIGxhdHRlciAo
aXQgY2F1c2VzIGFuIGFjY2VzcyB2aW9sYXRpb24gaWYgeW91IGRvKS4gIFRoZSBNZXNzYWdlCiAv
LyBjbGFzcyBoaWRlcyB0aGlzIGRpZmZlcmVuY2UgYnkgdHJlYXRpbmcgYSBOVUxMIGNoYXIgcG9p
bnRlciBhcwpAQCAtODcsMjcgKzk0LDE4IEBAIGNsYXNzIEdURVNUX0FQSV8gTWVzc2FnZSB7CiAK
ICBwdWJsaWM6CiAgIC8vIENvbnN0cnVjdHMgYW4gZW1wdHkgTWVzc2FnZS4KLSAgLy8gV2UgYWxs
b2NhdGUgdGhlIFN0clN0cmVhbSBzZXBhcmF0ZWx5IGJlY2F1c2UgaXQgb3RoZXJ3aXNlIGVhY2gg
dXNlIG9mCi0gIC8vIEFTU0VSVC9FWFBFQ1QgaW4gYSBwcm9jZWR1cmUgYWRkcyBvdmVyIDIwMCBi
eXRlcyB0byB0aGUgcHJvY2VkdXJlJ3MKLSAgLy8gc3RhY2sgZnJhbWUgbGVhZGluZyB0byBodWdl
IHN0YWNrIGZyYW1lcyBpbiBzb21lIGNhc2VzOyBnY2MgZG9lcyBub3QgcmV1c2UKLSAgLy8gdGhl
IHN0YWNrIHNwYWNlLgotICBNZXNzYWdlKCkgOiBzc18obmV3IGludGVybmFsOjpTdHJTdHJlYW0p
IHsKLSAgICAvLyBCeSBkZWZhdWx0LCB3ZSB3YW50IHRoZXJlIHRvIGJlIGVub3VnaCBwcmVjaXNp
b24gd2hlbiBwcmludGluZwotICAgIC8vIGEgZG91YmxlIHRvIGEgTWVzc2FnZS4KLSAgICAqc3Nf
IDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZGlnaXRz
MTAgKyAyKTsKLSAgfQorICBNZXNzYWdlKCk7CiAKICAgLy8gQ29weSBjb25zdHJ1Y3Rvci4KLSAg
TWVzc2FnZShjb25zdCBNZXNzYWdlJiBtc2cpIDogc3NfKG5ldyBpbnRlcm5hbDo6U3RyU3RyZWFt
KSB7ICAvLyBOT0xJTlQKKyAgTWVzc2FnZShjb25zdCBNZXNzYWdlJiBtc2cpIDogc3NfKG5ldyA6
OnN0ZDo6c3RyaW5nc3RyZWFtKSB7ICAvLyBOT0xJTlQKICAgICAqc3NfIDw8IG1zZy5HZXRTdHJp
bmcoKTsKICAgfQogCiAgIC8vIENvbnN0cnVjdHMgYSBNZXNzYWdlIGZyb20gYSBDLXN0cmluZy4K
LSAgZXhwbGljaXQgTWVzc2FnZShjb25zdCBjaGFyKiBzdHIpIDogc3NfKG5ldyBpbnRlcm5hbDo6
U3RyU3RyZWFtKSB7CisgIGV4cGxpY2l0IE1lc3NhZ2UoY29uc3QgY2hhciogc3RyKSA6IHNzXyhu
ZXcgOjpzdGQ6OnN0cmluZ3N0cmVhbSkgewogICAgICpzc18gPDwgc3RyOwogICB9CiAKLSAgfk1l
c3NhZ2UoKSB7IGRlbGV0ZSBzc187IH0KICNpZiBHVEVTVF9PU19TWU1CSUFOCiAgIC8vIFN0cmVh
bXMgYSB2YWx1ZSAoZWl0aGVyIGEgcG9pbnRlciBvciBub3QpIHRvIHRoaXMgb2JqZWN0LgogICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTExOSw3ICsxMTcsMjIgQEAgY2xhc3MgR1RFU1RfQVBJ
XyBNZXNzYWdlIHsKICAgLy8gU3RyZWFtcyBhIG5vbi1wb2ludGVyIHZhbHVlIHRvIHRoaXMgb2Jq
ZWN0LgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgaW5saW5lIE1lc3NhZ2UmIG9wZXJhdG9y
IDw8KGNvbnN0IFQmIHZhbCkgewotICAgIDo6R1Rlc3RTdHJlYW1Ub0hlbHBlcihzc18sIHZhbCk7
CisgICAgLy8gU29tZSBsaWJyYXJpZXMgb3ZlcmxvYWQgPDwgZm9yIFNUTCBjb250YWluZXJzLiAg
VGhlc2UKKyAgICAvLyBvdmVybG9hZHMgYXJlIGRlZmluZWQgaW4gdGhlIGdsb2JhbCBuYW1lc3Bh
Y2UgaW5zdGVhZCBvZiA6OnN0ZC4KKyAgICAvLworICAgIC8vIEMrKydzIHN5bWJvbCBsb29rdXAg
cnVsZSAoaS5lLiBLb2VuaWcgbG9va3VwKSBzYXlzIHRoYXQgdGhlc2UKKyAgICAvLyBvdmVybG9h
ZHMgYXJlIHZpc2libGUgaW4gZWl0aGVyIHRoZSBzdGQgbmFtZXNwYWNlIG9yIHRoZSBnbG9iYWwK
KyAgICAvLyBuYW1lc3BhY2UsIGJ1dCBub3Qgb3RoZXIgbmFtZXNwYWNlcywgaW5jbHVkaW5nIHRo
ZSB0ZXN0aW5nCisgICAgLy8gbmFtZXNwYWNlIHdoaWNoIEdvb2dsZSBUZXN0J3MgTWVzc2FnZSBj
bGFzcyBpcyBpbi4KKyAgICAvLworICAgIC8vIFRvIGFsbG93IFNUTCBjb250YWluZXJzIChhbmQg
b3RoZXIgdHlwZXMgdGhhdCBoYXMgYSA8PCBvcGVyYXRvcgorICAgIC8vIGRlZmluZWQgaW4gdGhl
IGdsb2JhbCBuYW1lc3BhY2UpIHRvIGJlIHVzZWQgaW4gR29vZ2xlIFRlc3QKKyAgICAvLyBhc3Nl
cnRpb25zLCB0ZXN0aW5nOjpNZXNzYWdlIG11c3QgYWNjZXNzIHRoZSBjdXN0b20gPDwgb3BlcmF0
b3IKKyAgICAvLyBmcm9tIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAgV2l0aCB0aGlzIHVzaW5nIGRl
Y2xhcmF0aW9uLAorICAgIC8vIG92ZXJsb2FkcyBvZiA8PCBkZWZpbmVkIGluIHRoZSBnbG9iYWwg
bmFtZXNwYWNlIGFuZCB0aG9zZQorICAgIC8vIHZpc2libGUgdmlhIEtvZW5pZyBsb29rdXAgYXJl
IGJvdGggZXhwb3NlZCBpbiB0aGlzIGZ1bmN0aW9uLgorICAgIHVzaW5nIDo6b3BlcmF0b3IgPDw7
CisgICAgKnNzXyA8PCB2YWw7CiAgICAgcmV0dXJuICp0aGlzOwogICB9CiAKQEAgLTE0MSw3ICsx
NTQsNyBAQCBjbGFzcyBHVEVTVF9BUElfIE1lc3NhZ2UgewogICAgIGlmIChwb2ludGVyID09IE5V
TEwpIHsKICAgICAgICpzc18gPDwgIihudWxsKSI7CiAgICAgfSBlbHNlIHsKLSAgICAgIDo6R1Rl
c3RTdHJlYW1Ub0hlbHBlcihzc18sIHBvaW50ZXIpOworICAgICAgKnNzXyA8PCBwb2ludGVyOwog
ICAgIH0KICAgICByZXR1cm4gKnRoaXM7CiAgIH0KQEAgLTE2NSwxMiArMTc4LDggQEAgY2xhc3Mg
R1RFU1RfQVBJXyBNZXNzYWdlIHsKIAogICAvLyBUaGVzZSB0d28gb3ZlcmxvYWRzIGFsbG93IHN0
cmVhbWluZyBhIHdpZGUgQyBzdHJpbmcgdG8gYSBNZXNzYWdlCiAgIC8vIHVzaW5nIHRoZSBVVEYt
OCBlbmNvZGluZy4KLSAgTWVzc2FnZSYgb3BlcmF0b3IgPDwoY29uc3Qgd2NoYXJfdCogd2lkZV9j
X3N0cikgewotICAgIHJldHVybiAqdGhpcyA8PCBpbnRlcm5hbDo6U3RyaW5nOjpTaG93V2lkZUNT
dHJpbmcod2lkZV9jX3N0cik7Ci0gIH0KLSAgTWVzc2FnZSYgb3BlcmF0b3IgPDwod2NoYXJfdCog
d2lkZV9jX3N0cikgewotICAgIHJldHVybiAqdGhpcyA8PCBpbnRlcm5hbDo6U3RyaW5nOjpTaG93
V2lkZUNTdHJpbmcod2lkZV9jX3N0cik7Ci0gIH0KKyAgTWVzc2FnZSYgb3BlcmF0b3IgPDwoY29u
c3Qgd2NoYXJfdCogd2lkZV9jX3N0cik7CisgIE1lc3NhZ2UmIG9wZXJhdG9yIDw8KHdjaGFyX3Qq
IHdpZGVfY19zdHIpOwogCiAjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCiAgIC8vIENvbnZlcnRz
IHRoZSBnaXZlbiB3aWRlIHN0cmluZyB0byBhIG5hcnJvdyBzdHJpbmcgdXNpbmcgdGhlIFVURi04
CkBAIC0xODQsMTMgKzE5MywxMSBAQCBjbGFzcyBHVEVTVF9BUElfIE1lc3NhZ2UgewogICBNZXNz
YWdlJiBvcGVyYXRvciA8PChjb25zdCA6OndzdHJpbmcmIHdzdHIpOwogI2VuZGlmICAvLyBHVEVT
VF9IQVNfR0xPQkFMX1dTVFJJTkcKIAotICAvLyBHZXRzIHRoZSB0ZXh0IHN0cmVhbWVkIHRvIHRo
aXMgb2JqZWN0IHNvIGZhciBhcyBhIFN0cmluZy4KKyAgLy8gR2V0cyB0aGUgdGV4dCBzdHJlYW1l
ZCB0byB0aGlzIG9iamVjdCBzbyBmYXIgYXMgYW4gc3RkOjpzdHJpbmcuCiAgIC8vIEVhY2ggJ1ww
JyBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlciBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgogICAvLwog
ICAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VSIFBST0dS
QU0uCi0gIGludGVybmFsOjpTdHJpbmcgR2V0U3RyaW5nKCkgY29uc3QgewotICAgIHJldHVybiBp
bnRlcm5hbDo6U3RyU3RyZWFtVG9TdHJpbmcoc3NfKTsKLSAgfQorICBzdGQ6OnN0cmluZyBHZXRT
dHJpbmcoKSBjb25zdDsKIAogIHByaXZhdGU6CiAjaWYgR1RFU1RfT1NfU1lNQklBTgpAQCAtMTk5
LDIxICsyMDYsMjUgQEAgY2xhc3MgR1RFU1RfQVBJXyBNZXNzYWdlIHsKICAgLy8gZGVjaWRlIGJl
dHdlZW4gY2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIGZvciBUIGFuZCBUKiwgc28gYQog
ICAvLyB0cjE6OnR5cGVfdHJhaXRzLWxpa2UgaXNfcG9pbnRlciB3b3JrcywgYW5kIHdlIGNhbiBv
dmVybG9hZCBvbiB0aGF0LgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgaW5saW5lIHZvaWQg
U3RyZWFtSGVscGVyKGludGVybmFsOjp0cnVlX3R5cGUgLypkdW1teSovLCBUKiBwb2ludGVyKSB7
CisgIGlubGluZSB2b2lkIFN0cmVhbUhlbHBlcihpbnRlcm5hbDo6dHJ1ZV90eXBlIC8qaXNfcG9p
bnRlciovLCBUKiBwb2ludGVyKSB7CiAgICAgaWYgKHBvaW50ZXIgPT0gTlVMTCkgewogICAgICAg
KnNzXyA8PCAiKG51bGwpIjsKICAgICB9IGVsc2UgewotICAgICAgOjpHVGVzdFN0cmVhbVRvSGVs
cGVyKHNzXywgcG9pbnRlcik7CisgICAgICAqc3NfIDw8IHBvaW50ZXI7CiAgICAgfQogICB9CiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBpbmxpbmUgdm9pZCBTdHJlYW1IZWxwZXIoaW50ZXJu
YWw6OmZhbHNlX3R5cGUgLypkdW1teSovLCBjb25zdCBUJiB2YWx1ZSkgewotICAgIDo6R1Rlc3RT
dHJlYW1Ub0hlbHBlcihzc18sIHZhbHVlKTsKKyAgaW5saW5lIHZvaWQgU3RyZWFtSGVscGVyKGlu
dGVybmFsOjpmYWxzZV90eXBlIC8qaXNfcG9pbnRlciovLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVCYgdmFsdWUpIHsKKyAgICAvLyBTZWUgdGhlIGNvbW1lbnRzIGluIE1lc3Nh
Z2UmIG9wZXJhdG9yIDw8KGNvbnN0IFQmKSBhYm92ZSBmb3Igd2h5CisgICAgLy8gd2UgbmVlZCB0
aGlzIHVzaW5nIHN0YXRlbWVudC4KKyAgICB1c2luZyA6Om9wZXJhdG9yIDw8OworICAgICpzc18g
PDwgdmFsdWU7CiAgIH0KICNlbmRpZiAgLy8gR1RFU1RfT1NfU1lNQklBTgogCiAgIC8vIFdlJ2xs
IGhvbGQgdGhlIHRleHQgc3RyZWFtZWQgdG8gdGhpcyBvYmplY3QgaGVyZS4KLSAgaW50ZXJuYWw6
OlN0clN0cmVhbSogY29uc3Qgc3NfOworICBjb25zdCBpbnRlcm5hbDo6c2NvcGVkX3B0cjwgOjpz
dGQ6OnN0cmluZ3N0cmVhbT4gc3NfOwogCiAgIC8vIFdlIGRlY2xhcmUgKGJ1dCBkb24ndCBpbXBs
ZW1lbnQpIHRoaXMgdG8gcHJldmVudCB0aGUgY29tcGlsZXIKICAgLy8gZnJvbSBpbXBsZW1lbnRp
bmcgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCkBAIC0yMjUsNiArMjM2LDIwIEBAIGlubGluZSBz
dGQ6Om9zdHJlYW0mIG9wZXJhdG9yIDw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IE1lc3NhZ2Um
IHNiKSB7CiAgIHJldHVybiBvcyA8PCBzYi5HZXRTdHJpbmcoKTsKIH0KIAorbmFtZXNwYWNlIGlu
dGVybmFsIHsKKworLy8gQ29udmVydHMgYSBzdHJlYW1hYmxlIHZhbHVlIHRvIGFuIHN0ZDo6c3Ry
aW5nLiAgQSBOVUxMIHBvaW50ZXIgaXMKKy8vIGNvbnZlcnRlZCB0byAiKG51bGwpIi4gIFdoZW4g
dGhlIGlucHV0IHZhbHVlIGlzIGEgOjpzdHJpbmcsCisvLyA6OnN0ZDo6c3RyaW5nLCA6OndzdHJp
bmcsIG9yIDo6c3RkOjp3c3RyaW5nIG9iamVjdCwgZWFjaCBOVUwKKy8vIGNoYXJhY3RlciBpbiBp
dCBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGQ6OnN0
cmluZyBTdHJlYW1hYmxlVG9TdHJpbmcoY29uc3QgVCYgc3RyZWFtYWJsZSkgeworICByZXR1cm4g
KE1lc3NhZ2UoKSA8PCBzdHJlYW1hYmxlKS5HZXRTdHJpbmcoKTsKK30KKworfSAgLy8gbmFtZXNw
YWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCitHVEVTVF9ESVNBQkxFX01T
Q19XQVJOSU5HU19QT1BfKCkgIC8vICA0MjUxCisKICNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9H
VEVTVF9HVEVTVF9NRVNTQUdFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oCmluZGV4IDgxMDA2OTY0NGQyM2Fk
MzU1OTczY2I1M2ZjZWIwYTg1NmIwYTAwNmMuLjFlMjJmNjg1MDI0MGYxM2ViZDk5ZWU5YTlhZjgz
NmJiYWI3M2JjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oCkBAIC0xLDQgKzEsNiBAQAotLy8gVGhpcyBm
aWxlIHdhcyBHRU5FUkFURUQgYnkgYSBzY3JpcHQuICBETyBOT1QgRURJVCBCWSBIQU5EISEhCisv
LyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBjb21tYW5kOgorLy8gICAgIHB1bXAucHkgZ3Rl
c3QtcGFyYW0tdGVzdC5oLnB1bXAKKy8vIERPIE5PVCBFRElUIEJZIEhBTkQhISEKIAogLy8gQ29w
eXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCiAvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjks
MTMgKzMxLDEzIEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQXV0
aG9yczogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCiAvLyBNYWNyb3MgYW5kIGZ1
bmN0aW9ucyBmb3IgaW1wbGVtZW50aW5nIHBhcmFtZXRlcml6ZWQgdGVzdHMKLS8vIGluIEdvb2ds
ZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gaW4gR29vZ2xlIEMrKyBU
ZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBm
aWxlIGlzIGdlbmVyYXRlZCBieSBhIFNDUklQVC4gIERPIE5PVCBFRElUIEJZIEhBTkQhCiAvLwor
Ly8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xV
REVfR1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNU
X0dURVNUX1BBUkFNX1RFU1RfSF8KIApAQCAtNDgsMTAgKzUwLDEyIEBACiAjaWYgMAogCiAvLyBU
byB3cml0ZSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLCBmaXJzdCB5b3Ugc2hvdWxkIGRlZmlu
ZSBhIGZpeHR1cmUKLS8vIGNsYXNzLiBJdCBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpU
ZXN0V2l0aFBhcmFtPFQ+LCB3aGVyZSBUIGlzCi0vLyB0aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRl
ciB2YWx1ZXMuIFRlc3RXaXRoUGFyYW08VD4gaXMgaXRzZWxmIGRlcml2ZWQKLS8vIGZyb20gdGVz
dGluZzo6VGVzdC4gVCBjYW4gYmUgYW55IGNvcHlhYmxlIHR5cGUuIElmIGl0J3MgYSByYXcgcG9p
bnRlciwKLS8vIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBsaWZlc3BhbiBv
ZiB0aGUgcG9pbnRlZCB2YWx1ZXMuCisvLyBjbGFzcy4gSXQgaXMgdXN1YWxseSBkZXJpdmVkIGZy
b20gdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxUPiAoc2VlIGJlbG93IGZvcgorLy8gYW5vdGhlciBp
bmhlcml0YW5jZSBzY2hlbWUgdGhhdCdzIHNvbWV0aW1lcyB1c2VmdWwgaW4gbW9yZSBjb21wbGlj
YXRlZAorLy8gY2xhc3MgaGllcmFyY2hpZXMpLCB3aGVyZSB0aGUgdHlwZSBvZiB5b3VyIHBhcmFt
ZXRlciB2YWx1ZXMuCisvLyBUZXN0V2l0aFBhcmFtPFQ+IGlzIGl0c2VsZiBkZXJpdmVkIGZyb20g
dGVzdGluZzo6VGVzdC4gVCBjYW4gYmUgYW55CisvLyBjb3B5YWJsZSB0eXBlLiBJZiBpdCdzIGEg
cmF3IHBvaW50ZXIsIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZQorLy8gbGlm
ZXNwYW4gb2YgdGhlIHBvaW50ZWQgdmFsdWVzLgogCiBjbGFzcyBGb29UZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBjaGFyKj4gewogICAvLyBZb3UgY2FuIGltcGxl
bWVudCBhbGwgdGhlIHVzdWFsIGNsYXNzIGZpeHR1cmUgbWVtYmVycyBoZXJlLgpAQCAtNzUsNyAr
NzksNyBAQCBURVNUX1AoRm9vVGVzdCwgSGFzQmxhaEJsYWgpIHsKIC8vIEZpbmFsbHksIHlvdSBj
YW4gdXNlIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIHRvIGluc3RhbnRpYXRlIHRoZSB0ZXN0CiAv
LyBjYXNlIHdpdGggYW55IHNldCBvZiBwYXJhbWV0ZXJzIHlvdSB3YW50LiBHb29nbGUgVGVzdCBk
ZWZpbmVzIGEgbnVtYmVyCiAvLyBvZiBmdW5jdGlvbnMgZm9yIGdlbmVyYXRpbmcgdGVzdCBwYXJh
bWV0ZXJzLiBUaGV5IHJldHVybiB3aGF0IHdlIGNhbGwKLS8vIChzdXJwcmlzZSEpIHBhcmFtZXRl
ciBnZW5lcmF0b3JzLiBIZXJlIGlzIGEgIHN1bW1hcnkgb2YgdGhlbSwgd2hpY2gKKy8vIChzdXJw
cmlzZSEpIHBhcmFtZXRlciBnZW5lcmF0b3JzLiBIZXJlIGlzIGEgc3VtbWFyeSBvZiB0aGVtLCB3
aGljaAogLy8gYXJlIGFsbCBpbiB0aGUgdGVzdGluZyBuYW1lc3BhY2U6CiAvLwogLy8KQEAgLTE0
NiwyMyArMTUwLDQ0IEBAIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFub3RoZXJJbnN0YW50aWF0
aW9uTmFtZSwgRm9vVGVzdCwgVmFsdWVzSW4ocGV0cykpOwogLy8gSW4gdGhlIGZ1dHVyZSwgd2Ug
cGxhbiB0byBwdWJsaXNoIHRoZSBBUEkgZm9yIGRlZmluaW5nIG5ldyBwYXJhbWV0ZXIKIC8vIGdl
bmVyYXRvcnMuIEJ1dCBmb3Igbm93IHRoaXMgaW50ZXJmYWNlIHJlbWFpbnMgcGFydCBvZiB0aGUg
aW50ZXJuYWwKIC8vIGltcGxlbWVudGF0aW9uIGFuZCBpcyBzdWJqZWN0IHRvIGNoYW5nZS4KKy8v
CisvLworLy8gQSBwYXJhbWV0ZXJpemVkIHRlc3QgZml4dHVyZSBtdXN0IGJlIGRlcml2ZWQgZnJv
bSB0ZXN0aW5nOjpUZXN0IGFuZCBmcm9tCisvLyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8
VD4sIHdoZXJlIFQgaXMgdGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRlcgorLy8gdmFsdWVzLiBJbmhl
cml0aW5nIGZyb20gVGVzdFdpdGhQYXJhbTxUPiBzYXRpc2ZpZXMgdGhhdCByZXF1aXJlbWVudCBi
ZWNhdXNlCisvLyBUZXN0V2l0aFBhcmFtPFQ+IGluaGVyaXRzIGZyb20gYm90aCBUZXN0IGFuZCBX
aXRoUGFyYW1JbnRlcmZhY2UuIEluIG1vcmUKKy8vIGNvbXBsaWNhdGVkIGhpZXJhcmNoaWVzLCBo
b3dldmVyLCBpdCBpcyBvY2Nhc2lvbmFsbHkgdXNlZnVsIHRvIGluaGVyaXQKKy8vIHNlcGFyYXRl
bHkgZnJvbSBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UuIEZvciBleGFtcGxlOgorCitjbGFz
cyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICAvLyBZb3UgY2FuIGluaGVy
aXQgYWxsIHRoZSB1c3VhbCBtZW1iZXJzIGZvciBhIG5vbi1wYXJhbWV0ZXJpemVkIHRlc3QKKyAg
Ly8gZml4dHVyZSBoZXJlLgorfTsKKworY2xhc3MgRGVyaXZlZFRlc3QgOiBwdWJsaWMgQmFzZVRl
c3QsIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxpbnQ+IHsKKyAgLy8gVGhl
IHVzdWFsIHRlc3QgZml4dHVyZSBtZW1iZXJzIGdvIGhlcmUgdG9vLgorfTsKKworVEVTVF9GKEJh
c2VUZXN0LCBIYXNGb28pIHsKKyAgLy8gVGhpcyBpcyBhbiBvcmRpbmFyeSBub24tcGFyYW1ldGVy
aXplZCB0ZXN0LgorfQorCitURVNUX1AoRGVyaXZlZFRlc3QsIERvZXNCbGFoKSB7CisgIC8vIEdl
dFBhcmFtIHdvcmtzIGp1c3QgdGhlIHNhbWUgaGVyZSBhcyBpZiB5b3UgaW5oZXJpdCBmcm9tIFRl
c3RXaXRoUGFyYW0uCisgIEVYUEVDVF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsKK30KIAog
I2VuZGlmICAvLyAwCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+Cisj
aW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAjaWYgIUdURVNUX09TX1NZ
TUJJQU4KLSNpbmNsdWRlIDx1dGlsaXR5PgorIyBpbmNsdWRlIDx1dGlsaXR5PgogI2VuZGlmCiAK
LS8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBkZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBi
ZWluZyAjaW5jbHVkZWQKLS8vICp1bmNvbmRpdGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNp
bmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKLS8vIGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RF
U1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNsdWRl
IDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaD4KLQotI2lmIEdURVNUX0hBU19QQVJB
TV9URVNUCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNs
dWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgiCisjaW5jbHVkZSAiZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCIKIAogbmFtZXNwYWNlIHRlc3Rp
bmcgewogCkBAIC0yNDMsNyArMjY4LDcgQEAgaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFJh
bmdlKFQgc3RhcnQsIFQgZW5kKSB7CiAvLyBlYWNoIHdpdGggQy1zdHJpbmcgdmFsdWVzIG9mICJm
b28iLCAiYmFyIiwgYW5kICJiYXoiOgogLy8KIC8vIGNvbnN0IGNoYXIqIHN0cmluZ3NbXSA9IHsi
Zm9vIiwgImJhciIsICJiYXoifTsKLS8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFN0cmluZ1Nl
cXVlbmNlLCBTcnRpbmdUZXN0LCBWYWx1ZXNJbihzdHJpbmdzKSk7CisvLyBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUChTdHJpbmdTZXF1ZW5jZSwgU3RyaW5nVGVzdCwgVmFsdWVzSW4oc3RyaW5ncykp
OwogLy8KIC8vIFRoaXMgaW5zdGFudGlhdGVzIHRlc3RzIGZyb20gdGVzdCBjYXNlIFN0bFN0cmlu
Z1Rlc3QKIC8vIGVhY2ggd2l0aCBTVEwgc3RyaW5ncyB3aXRoIHZhbHVlcyAiYSIgYW5kICJiIjoK
QEAgLTI3NiwxMSArMzAxLDEwIEBAIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxUPiBSYW5nZShU
IHN0YXJ0LCBUIGVuZCkgewogLy8KIHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+
CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ci0gICAgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9y
X3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKLSAgRm9yd2Fy
ZEl0ZXJhdG9yIGJlZ2luLAotICBGb3J3YXJkSXRlcmF0b3IgZW5kKSB7Ci0gIHR5cGVkZWYgdHlw
ZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBl
Ci0gICAgICBQYXJhbVR5cGU7CisgIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJh
dG9yVHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+CitWYWx1ZXNJbihGb3J3YXJk
SXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJdGVyYXRvciBlbmQpIHsKKyAgdHlwZWRlZiB0eXBlbmFt
ZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVyYXRvclRyYWl0czxGb3J3YXJkSXRlcmF0b3I+Cisg
ICAgICA6OnZhbHVlX3R5cGUgUGFyYW1UeXBlOwogICByZXR1cm4gaW50ZXJuYWw6OlBhcmFtR2Vu
ZXJhdG9yPFBhcmFtVHlwZT4oCiAgICAgICBuZXcgaW50ZXJuYWw6OlZhbHVlc0luSXRlcmF0b3JS
YW5nZUdlbmVyYXRvcjxQYXJhbVR5cGU+KGJlZ2luLCBlbmQpKTsKIH0KQEAgLTExOTIsNyArMTIx
Niw3IEBAIGlubGluZSBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ym9vbD4gQm9vbCgpIHsKICAg
cmV0dXJuIFZhbHVlcyhmYWxzZSwgdHJ1ZSk7CiB9CiAKLSNpZiBHVEVTVF9IQVNfQ09NQklORQor
IyBpZiBHVEVTVF9IQVNfQ09NQklORQogLy8gQ29tYmluZSgpIGFsbG93cyB0aGUgdXNlciB0byBj
b21iaW5lIHR3byBvciBtb3JlIHNlcXVlbmNlcyB0byBwcm9kdWNlCiAvLyB2YWx1ZXMgb2YgYSBD
YXJ0ZXNpYW4gcHJvZHVjdCBvZiB0aG9zZSBzZXF1ZW5jZXMnIGVsZW1lbnRzLgogLy8KQEAgLTEy
MjgsNyArMTI1Miw3IEBAIGlubGluZSBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ym9vbD4gQm9v
bCgpIHsKIC8vIEJvb2xlYW4gZmxhZ3M6CiAvLwogLy8gY2xhc3MgRmxhZ0RlcGVuZGVudFRlc3QK
LS8vICAgICA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHR1cGxlKGJvb2wsIGJvb2wp
PiA+IHsKKy8vICAgICA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHR1cGxlPGJvb2ws
IGJvb2w+ID4gewogLy8gICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CiAvLyAgICAgLy8gQXNzaWdu
cyBleHRlcm5hbF9mbGFnXzEgYW5kIGV4dGVybmFsX2ZsYWdfMiB2YWx1ZXMgZnJvbSB0aGUgdHVw
bGUuCiAvLyAgICAgdGllKGV4dGVybmFsX2ZsYWdfMSwgZXh0ZXJuYWxfZmxhZ18yKSA9IEdldFBh
cmFtKCk7CkBAIC0xMzQ0LDExICsxMzY4LDkgQEAgaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RI
b2xkZXIxMDxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAogICAgICAgR2VuZXJh
dG9yMTA+KAogICAgICAgZzEsIGcyLCBnMywgZzQsIGc1LCBnNiwgZzcsIGc4LCBnOSwgZzEwKTsK
IH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKLQotCisjIGVuZGlmICAvLyBHVEVTVF9I
QVNfQ09NQklORQogCi0jZGVmaW5lIFRFU1RfUCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBc
CisjIGRlZmluZSBURVNUX1AodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXAogICBjbGFzcyBH
VEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIFwKICAgICAg
IDogcHVibGljIHRlc3RfY2FzZV9uYW1lIHsgXAogICAgcHVibGljOiBcCkBAIC0xMzU4LDE0ICsx
MzgwLDE3IEBAIGludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMTA8R2VuZXJhdG9yMSwg
R2VuZXJhdG9yMiwgR2VuZXJhdG9yMywKICAgICBzdGF0aWMgaW50IEFkZFRvUmVnaXN0cnkoKSB7
IFwKICAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRlcml6
ZWRfdGVzdF9yZWdpc3RyeSgpLiBcCiAgICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVy
PHRlc3RfY2FzZV9uYW1lPihcCi0gICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgX19GSUxF
X18sIF9fTElORV9fKS0+QWRkVGVzdFBhdHRlcm4oXAotICAgICAgICAgICAgICAgICAgI3Rlc3Rf
Y2FzZV9uYW1lLCBcCi0gICAgICAgICAgICAgICAgICAjdGVzdF9uYW1lLCBcCi0gICAgICAgICAg
ICAgICAgICBuZXcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdE1ldGFGYWN0b3J5PCBcCi0gICAg
ICAgICAgICAgICAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwg
dGVzdF9uYW1lKT4oKSk7IFwKKyAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCisgICAg
ICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihcCisgICAgICAgICAg
ICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pKS0+QWRkVGVzdFBhdHRlcm4oXAorICAgICAgICAg
ICAgICAgICAgICAgIEdURVNUX1NUUklOR0lGWV8odGVzdF9jYXNlX25hbWUpLCBcCisgICAgICAg
ICAgICAgICAgICAgICAgR1RFU1RfU1RSSU5HSUZZXyh0ZXN0X25hbWUpLCBcCisgICAgICAgICAg
ICAgICAgICAgICAgbmV3IDo6dGVzdGluZzo6aW50ZXJuYWw6OlRlc3RNZXRhRmFjdG9yeTwgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpPigpKTsg
XAogICAgICAgcmV0dXJuIDA7IFwKICAgICB9IFwKLSAgICBzdGF0aWMgaW50IGd0ZXN0X3JlZ2lz
dGVyaW5nX2R1bW15XzsgXAorICAgIHN0YXRpYyBpbnQgZ3Rlc3RfcmVnaXN0ZXJpbmdfZHVtbXlf
IEdURVNUX0FUVFJJQlVURV9VTlVTRURfOyBcCiAgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOXyhcCiAgICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUs
IHRlc3RfbmFtZSkpOyBcCiAgIH07IFwKQEAgLTEzNzQsMTkgKzEzOTksMzkgQEAgaW50ZXJuYWw6
OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIxMDxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0
b3IzLAogICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9u
YW1lKTo6QWRkVG9SZWdpc3RyeSgpOyBcCiAgIHZvaWQgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0
ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKTo6VGVzdEJvZHkoKQogCi0jZGVmaW5lIElOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKHByZWZpeCwgdGVzdF9jYXNlX25hbWUsIGdlbmVyYXRvcikgXAotICA6
OnRlc3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVyYXRvcjx0ZXN0X2Nhc2VfbmFtZTo6UGFyYW1U
eXBlPiBcCi0gICAgICBndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJh
dG9yXygpIHsgcmV0dXJuIGdlbmVyYXRvcjsgfSBcCi0gIGludCBndGVzdF8jI3ByZWZpeCMjdGVz
dF9jYXNlX25hbWUjI19kdW1teV8gPSBcCi0gICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5wYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKS4gXAotICAgICAgICAgIEdl
dFRlc3RDYXNlUGF0dGVybkhvbGRlcjx0ZXN0X2Nhc2VfbmFtZT4oXAotICAgICAgICAgICAgICAj
dGVzdF9jYXNlX25hbWUsIF9fRklMRV9fLCBfX0xJTkVfXyktPkFkZFRlc3RDYXNlSW5zdGFudGlh
dGlvbihcCi0gICAgICAgICAgICAgICAgICAjcHJlZml4LCBcCi0gICAgICAgICAgICAgICAgICAm
Z3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRvcl8sIFwKLSAgICAg
ICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykKKy8vIFRoZSBvcHRpb25hbCBsYXN0IGFy
Z3VtZW50IHRvIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIGFsbG93cyB0aGUgdXNlcgorLy8gdG8g
c3BlY2lmeSBhIGZ1bmN0aW9uIG9yIGZ1bmN0b3IgdGhhdCBnZW5lcmF0ZXMgY3VzdG9tIHRlc3Qg
bmFtZSBzdWZmaXhlcworLy8gYmFzZWQgb24gdGhlIHRlc3QgcGFyYW1ldGVycy4gVGhlIGZ1bmN0
aW9uIHNob3VsZCBhY2NlcHQgb25lIGFyZ3VtZW50IG9mCisvLyB0eXBlIHRlc3Rpbmc6OlRlc3RQ
YXJhbUluZm88Y2xhc3MgUGFyYW1UeXBlPiwgYW5kIHJldHVybiBzdGQ6OnN0cmluZy4KKy8vCisv
LyB0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1OYW1lIGlzIGEgYnVpbHRpbiB0ZXN0IHN1ZmZp
eCBnZW5lcmF0b3IgdGhhdAorLy8gcmV0dXJucyB0aGUgdmFsdWUgb2YgdGVzdGluZzo6UHJpbnRU
b1N0cmluZyhHZXRQYXJhbSgpKS4KKy8vCisvLyBOb3RlOiB0ZXN0IG5hbWVzIG11c3QgYmUgbm9u
LWVtcHR5LCB1bmlxdWUsIGFuZCBtYXkgb25seSBjb250YWluIEFTQ0lJCisvLyBhbHBoYW51bWVy
aWMgY2hhcmFjdGVycyBvciB1bmRlcnNjb3JlLiBCZWNhdXNlIFByaW50VG9TdHJpbmcgYWRkcyBx
dW90ZXMKKy8vIHRvIHN0ZDo6c3RyaW5nIGFuZCBDIHN0cmluZ3MsIGl0IHdvbid0IHdvcmsgZm9y
IHRoZXNlIHR5cGVzLgorCisjZGVmaW5lIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKHByZWZpeCwg
dGVzdF9jYXNlX25hbWUsIGdlbmVyYXRvciwgLi4uKSAgICAgICAgXAorICBzdGF0aWMgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlwZT4g
ICAgICAgIFwKKyAgICAgIGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5l
cmF0b3JfKCkgeyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIGdlbmVyYXRvcjsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgc3RhdGljIDo6c3RkOjpzdHJpbmcgZ3Rlc3Rf
IyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRlTmFtZV8oICAgICBcCisgICAg
ICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlw
ZT4mIGluZm8pIHsgICAgICAgXAorICAgIHJldHVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpHZXRQ
YXJhbU5hbWVHZW48dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlwZT4oICAgIFwKKyAgICAgICAgX19W
QV9BUkdTX18pKGluZm8pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBzdGF0aWMgaW50IGd0ZXN0
XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX2R1bW15XyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VE
XyA9IFwKKyAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgLT5wYXJhbWV0ZXJpemVk
X3Rlc3RfcmVnaXN0cnkoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgIC5HZXRUZXN0Q2FzZVBhdHRlcm5Ib2xkZXI8dGVzdF9jYXNlX25hbWU+KCAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihfX0ZJTEVfXywgX19MSU5F
X18pKSAgICAgICAgICAgXAorICAgICAgICAgIC0+QWRkVGVzdENhc2VJbnN0YW50aWF0aW9uKCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAg
I3ByZWZpeCwgJmd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0b3Jf
LCAgICAgICBcCisgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUj
I19FdmFsR2VuZXJhdGVOYW1lXywgX19GSUxFX18sICAgXAorICAgICAgICAgICAgICBfX0xJTkVf
XykKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFS
QU1fVEVTVAotCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUEFSQU1fVEVT
VF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9n
dGVzdC1wYXJhbS10ZXN0LmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1bXAKaW5kZXggYTIzMTE4ODI3ZjFkNDgwZmJiYjgy
NTJmMzQwZjBlYmVkYTM0NmUyNS4uMjc0ZjJiM2I1NjkzMzAwMTJlODVlZTNjZjRmZDU3ZWIwYjU0
MjFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9n
dGVzdC1wYXJhbS10ZXN0LmgucHVtcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC5wdW1wCkBAIC0zMCwxMyArMzAsMTIgQEAgJHZh
ciBtYXh0dXBsZSA9IDEwICAkJCBNYXhpbXVtIG51bWJlciBvZiBDb21iaW5lIGFyZ3VtZW50cyB3
ZSB3YW50IHRvIHN1cHBvcnQuCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwot
Ly8gQXV0aG9yczogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCiAvLyBNYWNyb3Mg
YW5kIGZ1bmN0aW9ucyBmb3IgaW1wbGVtZW50aW5nIHBhcmFtZXRlcml6ZWQgdGVzdHMKLS8vIGlu
IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gaW4gR29vZ2xl
IEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8g
VGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBhIFNDUklQVC4gIERPIE5PVCBFRElUIEJZIEhBTkQh
CiAvLworLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQogI2lmbmRlZiBHVEVTVF9J
TkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9H
VEVTVF9HVEVTVF9QQVJBTV9URVNUX0hfCiAKQEAgLTQ5LDEwICs0OCwxMiBAQCAkdmFyIG1heHR1
cGxlID0gMTAgICQkIE1heGltdW0gbnVtYmVyIG9mIENvbWJpbmUgYXJndW1lbnRzIHdlIHdhbnQg
dG8gc3VwcG9ydC4KICNpZiAwCiAKIC8vIFRvIHdyaXRlIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dHMsIGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4dHVyZQotLy8gY2xhc3MuIEl0IG11c3Qg
YmUgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08VD4sIHdoZXJlIFQgaXMKLS8v
IHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVlcy4gVGVzdFdpdGhQYXJhbTxUPiBpcyBp
dHNlbGYgZGVyaXZlZAotLy8gZnJvbSB0ZXN0aW5nOjpUZXN0LiBUIGNhbiBiZSBhbnkgY29weWFi
bGUgdHlwZS4gSWYgaXQncyBhIHJhdyBwb2ludGVyLAotLy8geW91IGFyZSByZXNwb25zaWJsZSBm
b3IgbWFuYWdpbmcgdGhlIGxpZmVzcGFuIG9mIHRoZSBwb2ludGVkIHZhbHVlcy4KKy8vIGNsYXNz
LiBJdCBpcyB1c3VhbGx5IGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPFQ+IChz
ZWUgYmVsb3cgZm9yCisvLyBhbm90aGVyIGluaGVyaXRhbmNlIHNjaGVtZSB0aGF0J3Mgc29tZXRp
bWVzIHVzZWZ1bCBpbiBtb3JlIGNvbXBsaWNhdGVkCisvLyBjbGFzcyBoaWVyYXJjaGllcyksIHdo
ZXJlIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVlcy4KKy8vIFRlc3RXaXRoUGFyYW08
VD4gaXMgaXRzZWxmIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0LiBUIGNhbiBiZSBhbnkKKy8v
IGNvcHlhYmxlIHR5cGUuIElmIGl0J3MgYSByYXcgcG9pbnRlciwgeW91IGFyZSByZXNwb25zaWJs
ZSBmb3IgbWFuYWdpbmcgdGhlCisvLyBsaWZlc3BhbiBvZiB0aGUgcG9pbnRlZCB2YWx1ZXMuCiAK
IGNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGNvbnN0IGNo
YXIqPiB7CiAgIC8vIFlvdSBjYW4gaW1wbGVtZW50IGFsbCB0aGUgdXN1YWwgY2xhc3MgZml4dHVy
ZSBtZW1iZXJzIGhlcmUuCkBAIC03Niw3ICs3Nyw3IEBAIFRFU1RfUChGb29UZXN0LCBIYXNCbGFo
QmxhaCkgewogLy8gRmluYWxseSwgeW91IGNhbiB1c2UgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ag
dG8gaW5zdGFudGlhdGUgdGhlIHRlc3QKIC8vIGNhc2Ugd2l0aCBhbnkgc2V0IG9mIHBhcmFtZXRl
cnMgeW91IHdhbnQuIEdvb2dsZSBUZXN0IGRlZmluZXMgYSBudW1iZXIKIC8vIG9mIGZ1bmN0aW9u
cyBmb3IgZ2VuZXJhdGluZyB0ZXN0IHBhcmFtZXRlcnMuIFRoZXkgcmV0dXJuIHdoYXQgd2UgY2Fs
bAotLy8gKHN1cnByaXNlISkgcGFyYW1ldGVyIGdlbmVyYXRvcnMuIEhlcmUgaXMgYSAgc3VtbWFy
eSBvZiB0aGVtLCB3aGljaAorLy8gKHN1cnByaXNlISkgcGFyYW1ldGVyIGdlbmVyYXRvcnMuIEhl
cmUgaXMgYSBzdW1tYXJ5IG9mIHRoZW0sIHdoaWNoCiAvLyBhcmUgYWxsIGluIHRoZSB0ZXN0aW5n
IG5hbWVzcGFjZToKIC8vCiAvLwpAQCAtMTM0LDkgKzEzNSwxMiBAQCBJTlNUQU5USUFURV9URVNU
X0NBU0VfUChBbm90aGVySW5zdGFudGlhdGlvbk5hbWUsIEZvb1Rlc3QsIFZhbHVlc0luKHBldHMp
KTsKIC8vIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UsIHdoZXRoZXIgdGhlaXIgZGVmaW5pdGlvbnMg
Y29tZSBiZWZvcmUgb3IKIC8vIEFGVEVSIHRoZSBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBzdGF0
ZW1lbnQuCiAvLwotLy8gUGxlYXNlIGFsc28gbm90ZSB0aGF0IGdlbmVyYXRvciBleHByZXNzaW9u
cyBhcmUgZXZhbHVhdGVkIGluCi0vLyBSVU5fQUxMX1RFU1RTKCksIGFmdGVyIG1haW4oKSBoYXMg
c3RhcnRlZC4gVGhpcyBhbGxvd3MgZXZhbHVhdGlvbiBvZgotLy8gcGFyYW1ldGVyIGxpc3QgYmFz
ZWQgb24gY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMuCisvLyBQbGVhc2UgYWxzbyBub3RlIHRoYXQg
Z2VuZXJhdG9yIGV4cHJlc3Npb25zIChpbmNsdWRpbmcgcGFyYW1ldGVycyB0byB0aGUKKy8vIGdl
bmVyYXRvcnMpIGFyZSBldmFsdWF0ZWQgaW4gSW5pdEdvb2dsZVRlc3QoKSwgYWZ0ZXIgbWFpbigp
IGhhcyBzdGFydGVkLgorLy8gVGhpcyBhbGxvd3MgdGhlIHVzZXIgb24gb25lIGhhbmQsIHRvIGFk
anVzdCBnZW5lcmF0b3IgcGFyYW1ldGVycyBpbiBvcmRlcgorLy8gdG8gZHluYW1pY2FsbHkgZGV0
ZXJtaW5lIGEgc2V0IG9mIHRlc3RzIHRvIHJ1biBhbmQgb24gdGhlIG90aGVyIGhhbmQsCisvLyBn
aXZlIHRoZSB1c2VyIGEgY2hhbmNlIHRvIGluc3BlY3QgdGhlIGdlbmVyYXRlZCB0ZXN0cyB3aXRo
IEdvb2dsZSBUZXN0CisvLyByZWZsZWN0aW9uIEFQSSBiZWZvcmUgUlVOX0FMTF9URVNUUygpIGlz
IGV4ZWN1dGVkLgogLy8KIC8vIFlvdSBjYW4gc2VlIHNhbXBsZXMvc2FtcGxlN191bml0dGVzdC5j
YyBhbmQgc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjCiAvLyBmb3IgbW9yZSBleGFtcGxlcy4K
QEAgLTE0NCwyMyArMTQ4LDQ0IEBAIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFub3RoZXJJbnN0
YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwgVmFsdWVzSW4ocGV0cykpOwogLy8gSW4gdGhlIGZ1dHVy
ZSwgd2UgcGxhbiB0byBwdWJsaXNoIHRoZSBBUEkgZm9yIGRlZmluaW5nIG5ldyBwYXJhbWV0ZXIK
IC8vIGdlbmVyYXRvcnMuIEJ1dCBmb3Igbm93IHRoaXMgaW50ZXJmYWNlIHJlbWFpbnMgcGFydCBv
ZiB0aGUgaW50ZXJuYWwKIC8vIGltcGxlbWVudGF0aW9uIGFuZCBpcyBzdWJqZWN0IHRvIGNoYW5n
ZS4KKy8vCisvLworLy8gQSBwYXJhbWV0ZXJpemVkIHRlc3QgZml4dHVyZSBtdXN0IGJlIGRlcml2
ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0IGFuZCBmcm9tCisvLyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRl
cmZhY2U8VD4sIHdoZXJlIFQgaXMgdGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRlcgorLy8gdmFsdWVz
LiBJbmhlcml0aW5nIGZyb20gVGVzdFdpdGhQYXJhbTxUPiBzYXRpc2ZpZXMgdGhhdCByZXF1aXJl
bWVudCBiZWNhdXNlCisvLyBUZXN0V2l0aFBhcmFtPFQ+IGluaGVyaXRzIGZyb20gYm90aCBUZXN0
IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UuIEluIG1vcmUKKy8vIGNvbXBsaWNhdGVkIGhpZXJhcmNo
aWVzLCBob3dldmVyLCBpdCBpcyBvY2Nhc2lvbmFsbHkgdXNlZnVsIHRvIGluaGVyaXQKKy8vIHNl
cGFyYXRlbHkgZnJvbSBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UuIEZvciBleGFtcGxlOgor
CitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICAvLyBZb3UgY2Fu
IGluaGVyaXQgYWxsIHRoZSB1c3VhbCBtZW1iZXJzIGZvciBhIG5vbi1wYXJhbWV0ZXJpemVkIHRl
c3QKKyAgLy8gZml4dHVyZSBoZXJlLgorfTsKKworY2xhc3MgRGVyaXZlZFRlc3QgOiBwdWJsaWMg
QmFzZVRlc3QsIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxpbnQ+IHsKKyAg
Ly8gVGhlIHVzdWFsIHRlc3QgZml4dHVyZSBtZW1iZXJzIGdvIGhlcmUgdG9vLgorfTsKKworVEVT
VF9GKEJhc2VUZXN0LCBIYXNGb28pIHsKKyAgLy8gVGhpcyBpcyBhbiBvcmRpbmFyeSBub24tcGFy
YW1ldGVyaXplZCB0ZXN0LgorfQorCitURVNUX1AoRGVyaXZlZFRlc3QsIERvZXNCbGFoKSB7Cisg
IC8vIEdldFBhcmFtIHdvcmtzIGp1c3QgdGhlIHNhbWUgaGVyZSBhcyBpZiB5b3UgaW5oZXJpdCBm
cm9tIFRlc3RXaXRoUGFyYW0uCisgIEVYUEVDVF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsK
K30KIAogI2VuZGlmICAvLyAwCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0
Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAjaWYgIUdURVNU
X09TX1NZTUJJQU4KLSNpbmNsdWRlIDx1dGlsaXR5PgorIyBpbmNsdWRlIDx1dGlsaXR5PgogI2Vu
ZGlmCiAKLS8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBkZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhl
YWRlciBiZWluZyAjaW5jbHVkZWQKLS8vICp1bmNvbmRpdGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRo
ZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKLS8vIGluc2lkZSAjaWYgR1RFU1RfSEFTX1BB
UkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNp
bmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaD4KLQotI2lmIEdURVNUX0hB
U19QQVJBTV9URVNUCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIK
KyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgiCisjaW5jbHVkZSAi
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCIKIAogbmFtZXNwYWNl
IHRlc3RpbmcgewogCkBAIC0yNDEsNyArMjY2LDcgQEAgaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9y
PFQ+IFJhbmdlKFQgc3RhcnQsIFQgZW5kKSB7CiAvLyBlYWNoIHdpdGggQy1zdHJpbmcgdmFsdWVz
IG9mICJmb28iLCAiYmFyIiwgYW5kICJiYXoiOgogLy8KIC8vIGNvbnN0IGNoYXIqIHN0cmluZ3Nb
XSA9IHsiZm9vIiwgImJhciIsICJiYXoifTsKLS8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFN0
cmluZ1NlcXVlbmNlLCBTcnRpbmdUZXN0LCBWYWx1ZXNJbihzdHJpbmdzKSk7CisvLyBJTlNUQU5U
SUFURV9URVNUX0NBU0VfUChTdHJpbmdTZXF1ZW5jZSwgU3RyaW5nVGVzdCwgVmFsdWVzSW4oc3Ry
aW5ncykpOwogLy8KIC8vIFRoaXMgaW5zdGFudGlhdGVzIHRlc3RzIGZyb20gdGVzdCBjYXNlIFN0
bFN0cmluZ1Rlc3QKIC8vIGVhY2ggd2l0aCBTVEwgc3RyaW5ncyB3aXRoIHZhbHVlcyAiYSIgYW5k
ICJiIjoKQEAgLTI3NCwxMSArMjk5LDEwIEBAIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxUPiBS
YW5nZShUIHN0YXJ0LCBUIGVuZCkgewogLy8KIHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRl
cmF0b3I+CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ci0gICAgdHlwZW5hbWUgOjpzdGQ6Oml0
ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKLSAg
Rm9yd2FyZEl0ZXJhdG9yIGJlZ2luLAotICBGb3J3YXJkSXRlcmF0b3IgZW5kKSB7Ci0gIHR5cGVk
ZWYgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1
ZV90eXBlCi0gICAgICBQYXJhbVR5cGU7CisgIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6
Okl0ZXJhdG9yVHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+CitWYWx1ZXNJbihG
b3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJdGVyYXRvciBlbmQpIHsKKyAgdHlwZWRlZiB0
eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVyYXRvclRyYWl0czxGb3J3YXJkSXRlcmF0
b3I+CisgICAgICA6OnZhbHVlX3R5cGUgUGFyYW1UeXBlOwogICByZXR1cm4gaW50ZXJuYWw6OlBh
cmFtR2VuZXJhdG9yPFBhcmFtVHlwZT4oCiAgICAgICBuZXcgaW50ZXJuYWw6OlZhbHVlc0luSXRl
cmF0b3JSYW5nZUdlbmVyYXRvcjxQYXJhbVR5cGU+KGJlZ2luLCBlbmQpKTsKIH0KQEAgLTM0OCw3
ICszNzIsNyBAQCBpbmxpbmUgaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPGJvb2w+IEJvb2woKSB7
CiAgIHJldHVybiBWYWx1ZXMoZmFsc2UsIHRydWUpOwogfQogCi0jaWYgR1RFU1RfSEFTX0NPTUJJ
TkUKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKIC8vIENvbWJpbmUoKSBhbGxvd3MgdGhlIHVzZXIg
dG8gY29tYmluZSB0d28gb3IgbW9yZSBzZXF1ZW5jZXMgdG8gcHJvZHVjZQogLy8gdmFsdWVzIG9m
IGEgQ2FydGVzaWFuIHByb2R1Y3Qgb2YgdGhvc2Ugc2VxdWVuY2VzJyBlbGVtZW50cy4KIC8vCkBA
IC0zODQsNyArNDA4LDcgQEAgaW5saW5lIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxib29sPiBC
b29sKCkgewogLy8gQm9vbGVhbiBmbGFnczoKIC8vCiAvLyBjbGFzcyBGbGFnRGVwZW5kZW50VGVz
dAotLy8gICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08dHVwbGUoYm9vbCwgYm9v
bCk+ID4geworLy8gICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08dHVwbGU8Ym9v
bCwgYm9vbD4gPiB7CiAvLyAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKIC8vICAgICAvLyBBc3Np
Z25zIGV4dGVybmFsX2ZsYWdfMSBhbmQgZXh0ZXJuYWxfZmxhZ18yIHZhbHVlcyBmcm9tIHRoZSB0
dXBsZS4KIC8vICAgICB0aWUoZXh0ZXJuYWxfZmxhZ18xLCBleHRlcm5hbF9mbGFnXzIpID0gR2V0
UGFyYW0oKTsKQEAgLTQwOSwxMSArNDMzLDkgQEAgaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RI
b2xkZXIkaTwkZm9yIGosIFtbR2VuZXJhdG9yJGpdXT4gQ29tYmluZSgKIH0KIAogXV0KLSNlbmRp
ZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKLQotCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklO
RQogCi0jZGVmaW5lIFRFU1RfUCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBcCisjIGRlZmlu
ZSBURVNUX1AodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXAogICBjbGFzcyBHVEVTVF9URVNU
X0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIFwKICAgICAgIDogcHVibGlj
IHRlc3RfY2FzZV9uYW1lIHsgXAogICAgcHVibGljOiBcCkBAIC00MjMsMTQgKzQ0NSwxNyBAQCBp
bnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlciRpPCRmb3IgaiwgW1tHZW5lcmF0b3Ikal1d
PiBDb21iaW5lKAogICAgIHN0YXRpYyBpbnQgQWRkVG9SZWdpc3RyeSgpIHsgXAogICAgICAgOjp0
ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lz
dHJ5KCkuIFwKICAgICAgICAgICBHZXRUZXN0Q2FzZVBhdHRlcm5Ib2xkZXI8dGVzdF9jYXNlX25h
bWU+KFwKLSAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBfX0ZJTEVfXywgX19MSU5FX18p
LT5BZGRUZXN0UGF0dGVybihcCi0gICAgICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIFwK
LSAgICAgICAgICAgICAgICAgICN0ZXN0X25hbWUsIFwKLSAgICAgICAgICAgICAgICAgIG5ldyA6
OnRlc3Rpbmc6OmludGVybmFsOjpUZXN0TWV0YUZhY3Rvcnk8IFwKLSAgICAgICAgICAgICAgICAg
ICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpPigp
KTsgXAorICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIFwKKyAgICAgICAgICAgICAgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKFwKKyAgICAgICAgICAgICAgICAgIF9fRklM
RV9fLCBfX0xJTkVfXykpLT5BZGRUZXN0UGF0dGVybihcCisgICAgICAgICAgICAgICAgICAgICAg
R1RFU1RfU1RSSU5HSUZZXyh0ZXN0X2Nhc2VfbmFtZSksIFwKKyAgICAgICAgICAgICAgICAgICAg
ICBHVEVTVF9TVFJJTkdJRllfKHRlc3RfbmFtZSksIFwKKyAgICAgICAgICAgICAgICAgICAgICBu
ZXcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdE1ldGFGYWN0b3J5PCBcCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8oXAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSk+KCkpOyBcCiAgICAgICByZXR1
cm4gMDsgXAogICAgIH0gXAotICAgIHN0YXRpYyBpbnQgZ3Rlc3RfcmVnaXN0ZXJpbmdfZHVtbXlf
OyBcCisgICAgc3RhdGljIGludCBndGVzdF9yZWdpc3RlcmluZ19kdW1teV8gR1RFU1RfQVRUUklC
VVRFX1VOVVNFRF87IFwKICAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFwKICAg
ICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSk7
IFwKICAgfTsgXApAQCAtNDM5LDE5ICs0NjQsMzcgQEAgaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1
Y3RIb2xkZXIkaTwkZm9yIGosIFtbR2VuZXJhdG9yJGpdXT4gQ29tYmluZSgKICAgICAgIEdURVNU
X1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSk6OkFkZFRvUmVnaXN0
cnkoKTsgXAogICB2b2lkIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSk6OlRlc3RCb2R5KCkKIAotI2RlZmluZSBJTlNUQU5USUFURV9URVNUX0NBU0VfUChw
cmVmaXgsIHRlc3RfY2FzZV9uYW1lLCBnZW5lcmF0b3IpIFwKLSAgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6UGFyYW1HZW5lcmF0b3I8dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlwZT4gXAorLy8gVGhlIG9w
dGlvbmFsIGxhc3QgYXJndW1lbnQgdG8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgYWxsb3dzIHRo
ZSB1c2VyCisvLyB0byBzcGVjaWZ5IGEgZnVuY3Rpb24gb3IgZnVuY3RvciB0aGF0IGdlbmVyYXRl
cyBjdXN0b20gdGVzdCBuYW1lIHN1ZmZpeGVzCisvLyBiYXNlZCBvbiB0aGUgdGVzdCBwYXJhbWV0
ZXJzLiBUaGUgZnVuY3Rpb24gc2hvdWxkIGFjY2VwdCBvbmUgYXJndW1lbnQgb2YKKy8vIHR5cGUg
dGVzdGluZzo6VGVzdFBhcmFtSW5mbzxjbGFzcyBQYXJhbVR5cGU+LCBhbmQgcmV0dXJuIHN0ZDo6
c3RyaW5nLgorLy8KKy8vIHRlc3Rpbmc6OlByaW50VG9TdHJpbmdQYXJhbU5hbWUgaXMgYSBidWls
dGluIHRlc3Qgc3VmZml4IGdlbmVyYXRvciB0aGF0CisvLyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0
ZXN0aW5nOjpQcmludFRvU3RyaW5nKEdldFBhcmFtKCkpLgorLy8KKy8vIE5vdGU6IHRlc3QgbmFt
ZXMgbXVzdCBiZSBub24tZW1wdHksIHVuaXF1ZSwgYW5kIG1heSBvbmx5IGNvbnRhaW4gQVNDSUkK
Ky8vIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9yIHVuZGVyc2NvcmUuIEJlY2F1c2UgUHJpbnRU
b1N0cmluZyBhZGRzIHF1b3RlcworLy8gdG8gc3RkOjpzdHJpbmcgYW5kIEMgc3RyaW5ncywgaXQg
d29uJ3Qgd29yayBmb3IgdGhlc2UgdHlwZXMuCisKKyMgZGVmaW5lIElOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QKHByZWZpeCwgdGVzdF9jYXNlX25hbWUsIGdlbmVyYXRvciwgLi4uKSBcCisgIHN0YXRp
YyA6OnRlc3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVyYXRvcjx0ZXN0X2Nhc2VfbmFtZTo6UGFy
YW1UeXBlPiBcCiAgICAgICBndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2Vu
ZXJhdG9yXygpIHsgcmV0dXJuIGdlbmVyYXRvcjsgfSBcCi0gIGludCBndGVzdF8jI3ByZWZpeCMj
dGVzdF9jYXNlX25hbWUjI19kdW1teV8gPSBcCisgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIGd0ZXN0
XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0ZU5hbWVfKCBcCisgICAgICBj
b25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlwZT4m
IGluZm8pIHsgXAorICAgIHJldHVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpHZXRQYXJhbU5hbWVH
ZW48dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlwZT4gXAorICAgICAgICAoX19WQV9BUkdTX18pKGlu
Zm8pOyBcCisgIH0gXAorICBzdGF0aWMgaW50IGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFt
ZSMjX2R1bW15XyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9IFwKICAgICAgIDo6dGVzdGluZzo6
VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpLiBc
CiAgICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVyPHRlc3RfY2FzZV9uYW1lPihcCi0g
ICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgX19GSUxFX18sIF9fTElORV9fKS0+QWRkVGVz
dENhc2VJbnN0YW50aWF0aW9uKFwKLSAgICAgICAgICAgICAgICAgICNwcmVmaXgsIFwKLSAgICAg
ICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJh
dG9yXywgXAotICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKQorICAgICAgICAg
ICAgICAjdGVzdF9jYXNlX25hbWUsIFwKKyAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q29kZUxvY2F0aW9uKFwKKyAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykp
LT5BZGRUZXN0Q2FzZUluc3RhbnRpYXRpb24oXAorICAgICAgICAgICAgICAgICAgICAgICNwcmVm
aXgsIFwKKyAgICAgICAgICAgICAgICAgICAgICAmZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9u
YW1lIyNfRXZhbEdlbmVyYXRvcl8sIFwKKyAgICAgICAgICAgICAgICAgICAgICAmZ3Rlc3RfIyNw
cmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRlTmFtZV8sIFwKKyAgICAgICAgICAg
ICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pCiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5n
CiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQogI2VuZGlmICAvLyBHVEVTVF9J
TkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
MTg2NWY4NGU2ZjZmYTNlMGZjZTE5ODcwMGI1YTVkZmU1ZjY1NTBlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wcmludGVycy5o
CkBAIC0wLDAgKzEsMTEwNyBAQAorLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCisvLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
Ly8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
Ky8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisKKy8vIEdvb2dsZSBUZXN0IC0gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQg
TW9ja2luZyBGcmFtZXdvcmsKKy8vCisvLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBhIHVuaXZlcnNh
bCB2YWx1ZSBwcmludGVyIHRoYXQgY2FuIHByaW50IGEKKy8vIHZhbHVlIG9mIGFueSB0eXBlIFQ6
CisvLworLy8gICB2b2lkIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFByaW50ZXI8VD46
OlByaW50KHZhbHVlLCBvc3RyZWFtX3B0cik7CisvLworLy8gQSB1c2VyIGNhbiB0ZWFjaCB0aGlz
IGZ1bmN0aW9uIGhvdyB0byBwcmludCBhIGNsYXNzIHR5cGUgVCBieQorLy8gZGVmaW5pbmcgZWl0
aGVyIG9wZXJhdG9yPDwoKSBvciBQcmludFRvKCkgaW4gdGhlIG5hbWVzcGFjZSB0aGF0CisvLyBk
ZWZpbmVzIFQuICBNb3JlIHNwZWNpZmljYWxseSwgdGhlIEZJUlNUIGRlZmluZWQgZnVuY3Rpb24g
aW4gdGhlCisvLyBmb2xsb3dpbmcgbGlzdCB3aWxsIGJlIHVzZWQgKGFzc3VtaW5nIFQgaXMgZGVm
aW5lZCBpbiBuYW1lc3BhY2UKKy8vIGZvbyk6CisvLworLy8gICAxLiBmb286OlByaW50VG8oY29u
c3QgVCYsIG9zdHJlYW0qKQorLy8gICAyLiBvcGVyYXRvcjw8KG9zdHJlYW0mLCBjb25zdCBUJikg
ZGVmaW5lZCBpbiBlaXRoZXIgZm9vIG9yIHRoZQorLy8gICAgICBnbG9iYWwgbmFtZXNwYWNlLgor
Ly8KKy8vIEhvd2V2ZXIgaWYgVCBpcyBhbiBTVEwtc3R5bGUgY29udGFpbmVyIHRoZW4gaXQgaXMg
cHJpbnRlZCBlbGVtZW50LXdpc2UKKy8vIHVubGVzcyBmb286OlByaW50VG8oY29uc3QgVCYsIG9z
dHJlYW0qKSBpcyBkZWZpbmVkLiBOb3RlIHRoYXQKKy8vIG9wZXJhdG9yPDwoKSBpcyBpZ25vcmVk
IGZvciBjb250YWluZXIgdHlwZXMuCisvLworLy8gSWYgbm9uZSBvZiB0aGUgYWJvdmUgaXMgZGVm
aW5lZCwgaXQgd2lsbCBwcmludCB0aGUgZGVidWcgc3RyaW5nIG9mCisvLyB0aGUgdmFsdWUgaWYg
aXQgaXMgYSBwcm90b2NvbCBidWZmZXIsIG9yIHByaW50IHRoZSByYXcgYnl0ZXMgaW4gdGhlCisv
LyB2YWx1ZSBvdGhlcndpc2UuCisvLworLy8gVG8gYWlkIGRlYnVnZ2luZzogd2hlbiBUIGlzIGEg
cmVmZXJlbmNlIHR5cGUsIHRoZSBhZGRyZXNzIG9mIHRoZQorLy8gdmFsdWUgaXMgYWxzbyBwcmlu
dGVkOyB3aGVuIFQgaXMgYSAoY29uc3QpIGNoYXIgcG9pbnRlciwgYm90aCB0aGUKKy8vIHBvaW50
ZXIgdmFsdWUgYW5kIHRoZSBOVUwtdGVybWluYXRlZCBzdHJpbmcgaXQgcG9pbnRzIHRvIGFyZQor
Ly8gcHJpbnRlZC4KKy8vCisvLyBXZSBhbHNvIHByb3ZpZGUgc29tZSBjb252ZW5pZW50IHdyYXBw
ZXJzOgorLy8KKy8vICAgLy8gUHJpbnRzIGEgdmFsdWUgdG8gYSBzdHJpbmcuICBGb3IgYSAoY29u
c3Qgb3Igbm90KSBjaGFyCisvLyAgIC8vIHBvaW50ZXIsIHRoZSBOVUwtdGVybWluYXRlZCBzdHJp
bmcgKGJ1dCBub3QgdGhlIHBvaW50ZXIpIGlzCisvLyAgIC8vIHByaW50ZWQuCisvLyAgIHN0ZDo6
c3RyaW5nIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhjb25zdCBUJiB2YWx1ZSk7CisvLworLy8g
ICAvLyBQcmludHMgYSB2YWx1ZSB0ZXJzZWx5OiBmb3IgYSByZWZlcmVuY2UgdHlwZSwgdGhlIHJl
ZmVyZW5jZWQKKy8vICAgLy8gdmFsdWUgKGJ1dCBub3QgdGhlIGFkZHJlc3MpIGlzIHByaW50ZWQ7
IGZvciBhIChjb25zdCBvciBub3QpIGNoYXIKKy8vICAgLy8gcG9pbnRlciwgdGhlIE5VTC10ZXJt
aW5hdGVkIHN0cmluZyAoYnV0IG5vdCB0aGUgcG9pbnRlcikgaXMKKy8vICAgLy8gcHJpbnRlZC4K
Ky8vICAgdm9pZCA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50KGNvbnN0
IFQmIHZhbHVlLCBvc3RyZWFtKik7CisvLworLy8gICAvLyBQcmludHMgdmFsdWUgdXNpbmcgdGhl
IHR5cGUgaW5mZXJyZWQgYnkgdGhlIGNvbXBpbGVyLiAgVGhlIGRpZmZlcmVuY2UKKy8vICAgLy8g
ZnJvbSBVbml2ZXJzYWxUZXJzZVByaW50KCkgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uIHByaW50cyBi
b3RoIHRoZQorLy8gICAvLyBwb2ludGVyIGFuZCB0aGUgTlVMLXRlcm1pbmF0ZWQgc3RyaW5nIGZv
ciBhIChjb25zdCBvciBub3QpIGNoYXIgcG9pbnRlci4KKy8vICAgdm9pZCA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpVbml2ZXJzYWxQcmludChjb25zdCBUJiB2YWx1ZSwgb3N0cmVhbSopOworLy8KKy8v
ICAgLy8gUHJpbnRzIHRoZSBmaWVsZHMgb2YgYSB0dXBsZSB0ZXJzZWx5IHRvIGEgc3RyaW5nIHZl
Y3Rvciwgb25lCisvLyAgIC8vIGVsZW1lbnQgZm9yIGVhY2ggZmllbGQuIFR1cGxlIHN1cHBvcnQg
bXVzdCBiZSBlbmFibGVkIGluCisvLyAgIC8vIGd0ZXN0LXBvcnQuaC4KKy8vICAgc3RkOjp2ZWN0
b3I8c3RyaW5nPiBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoCisvLyAg
ICAgICBjb25zdCBUdXBsZSYgdmFsdWUpOworLy8KKy8vIEtub3duIGxpbWl0YXRpb246CisvLwor
Ly8gVGhlIHByaW50IHByaW1pdGl2ZXMgcHJpbnQgdGhlIGVsZW1lbnRzIG9mIGFuIFNUTC1zdHls
ZSBjb250YWluZXIKKy8vIHVzaW5nIHRoZSBjb21waWxlci1pbmZlcnJlZCB0eXBlIG9mICppdGVy
IHdoZXJlIGl0ZXIgaXMgYQorLy8gY29uc3RfaXRlcmF0b3Igb2YgdGhlIGNvbnRhaW5lci4gIFdo
ZW4gY29uc3RfaXRlcmF0b3IgaXMgYW4gaW5wdXQKKy8vIGl0ZXJhdG9yIGJ1dCBub3QgYSBmb3J3
YXJkIGl0ZXJhdG9yLCB0aGlzIGluZmVycmVkIHR5cGUgbWF5IG5vdAorLy8gbWF0Y2ggdmFsdWVf
dHlwZSwgYW5kIHRoZSBwcmludCBvdXRwdXQgbWF5IGJlIGluY29ycmVjdC4gIEluCisvLyBwcmFj
dGljZSwgdGhpcyBpcyByYXJlbHkgYSBwcm9ibGVtIGFzIGZvciBtb3N0IGNvbnRhaW5lcnMKKy8v
IGNvbnN0X2l0ZXJhdG9yIGlzIGEgZm9yd2FyZCBpdGVyYXRvci4gIFdlJ2xsIGZpeCB0aGlzIGlm
IHRoZXJlJ3MgYW4KKy8vIGFjdHVhbCBuZWVkIGZvciBpdC4gIE5vdGUgdGhhdCB0aGlzIGZpeCBj
YW5ub3QgcmVseSBvbiB2YWx1ZV90eXBlCisvLyBiZWluZyBkZWZpbmVkIGFzIG1hbnkgdXNlci1k
ZWZpbmVkIGNvbnRhaW5lciB0eXBlcyBkb24ndCBoYXZlCisvLyB2YWx1ZV90eXBlLgorCisvLyBH
T09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKKyNpZm5kZWYgR1RFU1RfSU5DTFVERV9H
VEVTVF9HVEVTVF9QUklOVEVSU19IXworI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNU
X1BSSU5URVJTX0hfCisKKyNpbmNsdWRlIDxvc3RyZWFtPiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8
c3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRl
IDx2ZWN0b3I+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorI2luY2x1
ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgiCisKKyNpZiBHVEVTVF9IQVNfU1RE
X1RVUExFXworIyBpbmNsdWRlIDx0dXBsZT4KKyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX0FCU0wK
KyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaCIKKyNpbmNsdWRlICJhYnNsL3R5
cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYWJzbC90eXBlcy92YXJpYW50LmgiCisjZW5kaWYg
IC8vIEdURVNUX0hBU19BQlNMCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworLy8gRGVmaW5pdGlv
bnMgaW4gdGhlICdpbnRlcm5hbCcgYW5kICdpbnRlcm5hbDInIG5hbWUgc3BhY2VzIGFyZQorLy8g
c3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuICBETyBOT1QgVVNFIFRIRU0gSU4gVVNF
UiBDT0RFIQorbmFtZXNwYWNlIGludGVybmFsMiB7CisKKy8vIFByaW50cyB0aGUgZ2l2ZW4gbnVt
YmVyIG9mIGJ5dGVzIGluIHRoZSBnaXZlbiBvYmplY3QgdG8gdGhlIGdpdmVuCisvLyBvc3RyZWFt
LgorR1RFU1RfQVBJXyB2b2lkIFByaW50Qnl0ZXNJbk9iamVjdFRvKGNvbnN0IHVuc2lnbmVkIGNo
YXIqIG9ial9ieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6Om9z
dHJlYW0qIG9zKTsKKworLy8gRm9yIHNlbGVjdGluZyB3aGljaCBwcmludGVyIHRvIHVzZSB3aGVu
IGEgZ2l2ZW4gdHlwZSBoYXMgbmVpdGhlciA8PAorLy8gbm9yIFByaW50VG8oKS4KK2VudW0gVHlw
ZUtpbmQgeworICBrUHJvdG9idWYsICAgICAgICAgICAgICAvLyBhIHByb3RvYnVmIHR5cGUKKyAg
a0NvbnZlcnRpYmxlVG9JbnRlZ2VyLCAgLy8gYSB0eXBlIGltcGxpY2l0bHkgY29udmVydGlibGUg
dG8gQmlnZ2VzdEludAorICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoZS5nLiBhIG5hbWVk
IG9yIHVubmFtZWQgZW51bSB0eXBlKQorI2lmIEdURVNUX0hBU19BQlNMCisgIGtDb252ZXJ0aWJs
ZVRvU3RyaW5nVmlldywgIC8vIGEgdHlwZSBpbXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRvCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFic2w6OnN0cmluZ192aWV3CisjZW5kaWYKKyAg
a090aGVyVHlwZSAgLy8gYW55dGhpbmcgZWxzZQorfTsKKworLy8gVHlwZVdpdGhvdXRGb3JtYXR0
ZXI8VCwga1R5cGVLaW5kPjo6UHJpbnRWYWx1ZSh2YWx1ZSwgb3MpIGlzIGNhbGxlZAorLy8gYnkg
dGhlIHVuaXZlcnNhbCBwcmludGVyIHRvIHByaW50IGEgdmFsdWUgb2YgdHlwZSBUIHdoZW4gbmVp
dGhlcgorLy8gb3BlcmF0b3I8PCBub3IgUHJpbnRUbygpIGlzIGRlZmluZWQgZm9yIFQsIHdoZXJl
IGtUeXBlS2luZCBpcyB0aGUKKy8vICJraW5kIiBvZiBUIGFzIGRlZmluZWQgYnkgZW51bSBUeXBl
S2luZC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBUeXBlS2luZCBrVHlwZUtpbmQ+CitjbGFzcyBU
eXBlV2l0aG91dEZvcm1hdHRlciB7CisgcHVibGljOgorICAvLyBUaGlzIGRlZmF1bHQgdmVyc2lv
biBpcyBjYWxsZWQgd2hlbiBrVHlwZUtpbmQgaXMga090aGVyVHlwZS4KKyAgc3RhdGljIHZvaWQg
UHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgUHJp
bnRCeXRlc0luT2JqZWN0VG8oc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigm
dmFsdWUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodmFsdWUpLCBvcyk7Cisg
IH0KK307CisKKy8vIFdlIHByaW50IGEgcHJvdG9idWYgdXNpbmcgaXRzIFNob3J0RGVidWdTdHJp
bmcoKSB3aGVuIHRoZSBzdHJpbmcKKy8vIGRvZXNuJ3QgZXhjZWVkIHRoaXMgbWFueSBjaGFyYWN0
ZXJzOyBvdGhlcndpc2Ugd2UgcHJpbnQgaXQgdXNpbmcKKy8vIERlYnVnU3RyaW5nKCkgZm9yIGJl
dHRlciByZWFkYWJpbGl0eS4KK2NvbnN0IHNpemVfdCBrUHJvdG9idWZPbmVMaW5lck1heExlbmd0
aCA9IDUwOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVXaXRob3V0Rm9ybWF0
dGVyPFQsIGtQcm90b2J1Zj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnRWYWx1ZShj
b25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgc3RkOjpzdHJpbmcgcHJl
dHR5X3N0ciA9IHZhbHVlLlNob3J0RGVidWdTdHJpbmcoKTsKKyAgICBpZiAocHJldHR5X3N0ci5s
ZW5ndGgoKSA+IGtQcm90b2J1Zk9uZUxpbmVyTWF4TGVuZ3RoKSB7CisgICAgICBwcmV0dHlfc3Ry
ID0gIlxuIiArIHZhbHVlLkRlYnVnU3RyaW5nKCk7CisgICAgfQorICAgICpvcyA8PCAoIjwiICsg
cHJldHR5X3N0ciArICI+Iik7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xh
c3MgVHlwZVdpdGhvdXRGb3JtYXR0ZXI8VCwga0NvbnZlcnRpYmxlVG9JbnRlZ2VyPiB7CisgcHVi
bGljOgorICAvLyBTaW5jZSBUIGhhcyBubyA8PCBvcGVyYXRvciBvciBQcmludFRvKCkgYnV0IGNh
biBiZSBpbXBsaWNpdGx5CisgIC8vIGNvbnZlcnRlZCB0byBCaWdnZXN0SW50LCB3ZSBwcmludCBp
dCBhcyBhIEJpZ2dlc3RJbnQuCisgIC8vCisgIC8vIE1vc3QgbGlrZWx5IFQgaXMgYW4gZW51bSB0
eXBlIChlaXRoZXIgbmFtZWQgb3IgdW5uYW1lZCksIGluIHdoaWNoCisgIC8vIGNhc2UgcHJpbnRp
bmcgaXQgYXMgYW4gaW50ZWdlciBpcyB0aGUgZGVzaXJlZCBiZWhhdmlvci4gIEluIGNhc2UKKyAg
Ly8gVCBpcyBub3QgYW4gZW51bSwgcHJpbnRpbmcgaXQgYXMgYW4gaW50ZWdlciBpcyB0aGUgYmVz
dCB3ZSBjYW4gZG8KKyAgLy8gZ2l2ZW4gdGhhdCBpdCBoYXMgbm8gdXNlci1kZWZpbmVkIHByaW50
ZXIuCisgIHN0YXRpYyB2b2lkIFByaW50VmFsdWUoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3Ry
ZWFtKiBvcykgeworICAgIGNvbnN0IGludGVybmFsOjpCaWdnZXN0SW50IGtCaWdJbnQgPSB2YWx1
ZTsKKyAgICAqb3MgPDwga0JpZ0ludDsKKyAgfQorfTsKKworI2lmIEdURVNUX0hBU19BQlNMCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVXaXRob3V0Rm9ybWF0dGVyPFQsIGtDb252
ZXJ0aWJsZVRvU3RyaW5nVmlldz4geworIHB1YmxpYzoKKyAgLy8gU2luY2UgVCBoYXMgbmVpdGhl
ciBvcGVyYXRvcjw8IG5vciBQcmludFRvKCkgYnV0IGNhbiBiZSBpbXBsaWNpdGx5CisgIC8vIGNv
bnZlcnRlZCB0byBhYnNsOjpzdHJpbmdfdmlldywgd2UgcHJpbnQgaXQgYXMgYSBhYnNsOjpzdHJp
bmdfdmlldy4KKyAgLy8KKyAgLy8gTm90ZTogdGhlIGltcGxlbWVudGF0aW9uIGlzIGZ1cnRoZXIg
YmVsb3csIGFzIGl0IGRlcGVuZHMgb24KKyAgLy8gaW50ZXJuYWw6OlByaW50VG8gc3ltYm9sIHdo
aWNoIGlzIGRlZmluZWQgbGF0ZXIgaW4gdGhlIGZpbGUuCisgIHN0YXRpYyB2b2lkIFByaW50VmFs
dWUoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcyk7Cit9OworI2VuZGlmCisKKy8v
IFByaW50cyB0aGUgZ2l2ZW4gdmFsdWUgdG8gdGhlIGdpdmVuIG9zdHJlYW0uICBJZiB0aGUgdmFs
dWUgaXMgYQorLy8gcHJvdG9jb2wgbWVzc2FnZSwgaXRzIGRlYnVnIHN0cmluZyBpcyBwcmludGVk
OyBpZiBpdCdzIGFuIGVudW0gb3IKKy8vIG9mIGEgdHlwZSBpbXBsaWNpdGx5IGNvbnZlcnRpYmxl
IHRvIEJpZ2dlc3RJbnQsIGl0J3MgcHJpbnRlZCBhcyBhbgorLy8gaW50ZWdlcjsgb3RoZXJ3aXNl
IHRoZSBieXRlcyBpbiB0aGUgdmFsdWUgYXJlIHByaW50ZWQuICBUaGlzIGlzCisvLyB3aGF0IFVu
aXZlcnNhbFByaW50ZXI8VD46OlByaW50KCkgZG9lcyB3aGVuIGl0IGtub3dzIG5vdGhpbmcgYWJv
dXQKKy8vIHR5cGUgVCBhbmQgVCBoYXMgbmVpdGhlciA8PCBvcGVyYXRvciBub3IgUHJpbnRUbygp
LgorLy8KKy8vIEEgdXNlciBjYW4gb3ZlcnJpZGUgdGhpcyBiZWhhdmlvciBmb3IgYSBjbGFzcyB0
eXBlIEZvbyBieSBkZWZpbmluZworLy8gYSA8PCBvcGVyYXRvciBpbiB0aGUgbmFtZXNwYWNlIHdo
ZXJlIEZvbyBpcyBkZWZpbmVkLgorLy8KKy8vIFdlIHB1dCB0aGlzIG9wZXJhdG9yIGluIG5hbWVz
cGFjZSAnaW50ZXJuYWwyJyBpbnN0ZWFkIG9mICdpbnRlcm5hbCcKKy8vIHRvIHNpbXBsaWZ5IHRo
ZSBpbXBsZW1lbnRhdGlvbiwgYXMgbXVjaCBjb2RlIGluICdpbnRlcm5hbCcgbmVlZHMgdG8KKy8v
IHVzZSA8PCBpbiBTVEwsIHdoaWNoIHdvdWxkIGNvbmZsaWN0IHdpdGggb3VyIG93biA8PCB3ZXJl
IGl0IGRlZmluZWQKKy8vIGluICdpbnRlcm5hbCcuCisvLworLy8gTm90ZSB0aGF0IHRoaXMgb3Bl
cmF0b3I8PCB0YWtlcyBhIGdlbmVyaWMgc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsCisvLyBDaGFy
VHJhaXRzPiB0eXBlIGluc3RlYWQgb2YgdGhlIG1vcmUgcmVzdHJpY3RlZCBzdGQ6Om9zdHJlYW0u
ICBJZgorLy8gd2UgZGVmaW5lIGl0IHRvIHRha2UgYW4gc3RkOjpvc3RyZWFtIGluc3RlYWQsIHdl
J2xsIGdldCBhbgorLy8gImFtYmlndW91cyBvdmVybG9hZHMiIGNvbXBpbGVyIGVycm9yIHdoZW4g
dHJ5aW5nIHRvIHByaW50IGEgdHlwZQorLy8gRm9vIHRoYXQgc3VwcG9ydHMgc3RyZWFtaW5nIHRv
IHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLAorLy8gQ2hhclRyYWl0cz4sIGFzIHRoZSBjb21waWxl
ciBjYW5ub3QgdGVsbCB3aGV0aGVyCisvLyBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYsIGNvbnN0
IFQmKSBvcgorLy8gb3BlcmF0b3I8PChzdGQ6OmJhc2ljX3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRz
PiwgY29uc3QgRm9vJikgaXMgbW9yZQorLy8gc3BlY2lmaWMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhciwgdHlwZW5hbWUgQ2hhclRyYWl0cywgdHlwZW5hbWUgVD4KKzo6c3RkOjpiYXNpY19vc3Ry
ZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcGVyYXRvcjw8KAorICAgIDo6c3RkOjpiYXNpY19vc3Ry
ZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcywgY29uc3QgVCYgeCkgeworICBUeXBlV2l0aG91dEZv
cm1hdHRlcjxULCAoaW50ZXJuYWw6OklzQVByb3RvY29sTWVzc2FnZTxUPjo6dmFsdWUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA/IGtQcm90b2J1ZgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogaW50ZXJuYWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiwgaW50ZXJuYWw6OkJpZ2dlc3RJ
bnQ+Ojp2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ga0NvbnZl
cnRpYmxlVG9JbnRlZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOgor
I2lmIEdURVNUX0hBU19BQlNMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50ZXJuYWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVCYsIGFic2w6OnN0cmluZ192aWV3Pjo6dmFsdWUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBrQ29udmVydGlibGVUb1N0
cmluZ1ZpZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOgorI2Vu
ZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtPdGhlclR5cGUp
Pjo6UHJpbnRWYWx1ZSh4LCAmb3MpOworICByZXR1cm4gb3M7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSBpbnRlcm5hbDIKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKy8vIFRoaXMgbmFtZXNwYWNl
IE1VU1QgTk9UIEJFIE5FU1RFRCBJTiA6OnRlc3RpbmcsIG9yIHRoZSBuYW1lIGxvb2stdXAKKy8v
IG1hZ2ljIG5lZWRlZCBmb3IgaW1wbGVtZW50aW5nIFVuaXZlcnNhbFByaW50ZXIgd29uJ3Qgd29y
ay4KK25hbWVzcGFjZSB0ZXN0aW5nX2ludGVybmFsIHsKKworLy8gVXNlZCB0byBwcmludCBhIHZh
bHVlIHRoYXQgaXMgbm90IGFuIFNUTC1zdHlsZSBjb250YWluZXIgd2hlbiB0aGUKKy8vIHVzZXIg
ZG9lc24ndCBkZWZpbmUgUHJpbnRUbygpIGZvciBpdC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
dm9pZCBEZWZhdWx0UHJpbnROb25Db250YWluZXJUbyhjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgIC8vIFdpdGggdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQsIGR1cmluZyB1
bnF1YWxpZmllZCBuYW1lIGxvb2t1cCwKKyAgLy8gdGVzdGluZzo6aW50ZXJuYWwyOjpvcGVyYXRv
cjw8IGFwcGVhcnMgYXMgaWYgaXQgd2FzIGRlY2xhcmVkIGluCisgIC8vIHRoZSBuZWFyZXN0IGVu
Y2xvc2luZyBuYW1lc3BhY2UgdGhhdCBjb250YWlucyBib3RoCisgIC8vIDo6dGVzdGluZ19pbnRl
cm5hbCBhbmQgOjp0ZXN0aW5nOjppbnRlcm5hbDIsIGkuZS4gdGhlIGdsb2JhbAorICAvLyBuYW1l
c3BhY2UuICBGb3IgbW9yZSBkZXRhaWxzLCByZWZlciB0byB0aGUgQysrIFN0YW5kYXJkIHNlY3Rp
b24KKyAgLy8gNy4zLjQtMSBbbmFtZXNwYWNlLnVkaXJdLiAgVGhpcyBhbGxvd3MgdXMgdG8gZmFs
bCBiYWNrIG9udG8KKyAgLy8gdGVzdGluZzo6aW50ZXJuYWwyOjpvcGVyYXRvcjw8IGluIGNhc2Ug
VCBkb2Vzbid0IGNvbWUgd2l0aCBhIDw8CisgIC8vIG9wZXJhdG9yLgorICAvLworICAvLyBXZSBj
YW5ub3Qgd3JpdGUgJ3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWwyOjpvcGVyYXRvcjw8OycsIHdo
aWNoCisgIC8vIGdjYyAzLjMgZmFpbHMgdG8gY29tcGlsZSBkdWUgdG8gYSBjb21waWxlciBidWcu
CisgIHVzaW5nIG5hbWVzcGFjZSA6OnRlc3Rpbmc6OmludGVybmFsMjsgIC8vIE5PTElOVAorCisg
IC8vIEFzc3VtaW5nIFQgaXMgZGVmaW5lZCBpbiBuYW1lc3BhY2UgZm9vLCBpbiB0aGUgbmV4dCBz
dGF0ZW1lbnQsCisgIC8vIHRoZSBjb21waWxlciB3aWxsIGNvbnNpZGVyIGFsbCBvZjoKKyAgLy8K
KyAgLy8gICAxLiBmb286Om9wZXJhdG9yPDwgKHRoYW5rcyB0byBLb2VuaWcgbG9vay11cCksCisg
IC8vICAgMi4gOjpvcGVyYXRvcjw8IChhcyB0aGUgY3VycmVudCBuYW1lc3BhY2UgaXMgZW5jbG9z
ZWQgaW4gOjopLAorICAvLyAgIDMuIHRlc3Rpbmc6OmludGVybmFsMjo6b3BlcmF0b3I8PCAodGhh
bmtzIHRvIHRoZSB1c2luZyBzdGF0ZW1lbnQgYWJvdmUpLgorICAvLworICAvLyBUaGUgb3BlcmF0
b3I8PCB3aG9zZSB0eXBlIG1hdGNoZXMgVCBiZXN0IHdpbGwgYmUgcGlja2VkLgorICAvLworICAv
LyBXZSBkZWxpYmVyYXRlbHkgYWxsb3cgIzIgdG8gYmUgYSBjYW5kaWRhdGUsIGFzIHNvbWV0aW1l
cyBpdCdzCisgIC8vIGltcG9zc2libGUgdG8gZGVmaW5lICMxIChlLmcuIHdoZW4gZm9vIGlzIDo6
c3RkLCBkZWZpbmluZworICAvLyBhbnl0aGluZyBpbiBpdCBpcyB1bmRlZmluZWQgYmVoYXZpb3Ig
dW5sZXNzIHlvdSBhcmUgYSBjb21waWxlcgorICAvLyB2ZW5kb3IuKS4KKyAgKm9zIDw8IHZhbHVl
OworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZ19pbnRlcm5hbAorCituYW1lc3BhY2UgdGVz
dGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBGb3JtYXRGb3JDb21wYXJpc29uPFRv
UHJpbnQsIE90aGVyT3BlcmFuZD46OkZvcm1hdCh2YWx1ZSkgZm9ybWF0cyBhCisvLyB2YWx1ZSBv
ZiB0eXBlIFRvUHJpbnQgdGhhdCBpcyBhbiBvcGVyYW5kIG9mIGEgY29tcGFyaXNvbiBhc3NlcnRp
b24KKy8vIChlLmcuIEFTU0VSVF9FUSkuICBPdGhlck9wZXJhbmQgaXMgdGhlIHR5cGUgb2YgdGhl
IG90aGVyIG9wZXJhbmQgaW4KKy8vIHRoZSBjb21wYXJpc29uLCBhbmQgaXMgdXNlZCB0byBoZWxw
IGRldGVybWluZSB0aGUgYmVzdCB3YXkgdG8KKy8vIGZvcm1hdCB0aGUgdmFsdWUuICBJbiBwYXJ0
aWN1bGFyLCB3aGVuIHRoZSB2YWx1ZSBpcyBhIEMgc3RyaW5nCisvLyAoY2hhciBwb2ludGVyKSBh
bmQgdGhlIG90aGVyIG9wZXJhbmQgaXMgYW4gU1RMIHN0cmluZyBvYmplY3QsIHdlCisvLyB3YW50
IHRvIGZvcm1hdCB0aGUgQyBzdHJpbmcgYXMgYSBzdHJpbmcsIHNpbmNlIHdlIGtub3cgaXQgaXMK
Ky8vIGNvbXBhcmVkIGJ5IHZhbHVlIHdpdGggdGhlIHN0cmluZyBvYmplY3QuICBJZiB0aGUgdmFs
dWUgaXMgYSBjaGFyCisvLyBwb2ludGVyIGJ1dCB0aGUgb3RoZXIgb3BlcmFuZCBpcyBub3QgYW4g
U1RMIHN0cmluZyBvYmplY3QsIHdlIGRvbid0CisvLyBrbm93IHdoZXRoZXIgdGhlIHBvaW50ZXIg
aXMgc3VwcG9zZWQgdG8gcG9pbnQgdG8gYSBOVUwtdGVybWluYXRlZAorLy8gc3RyaW5nLCBhbmQg
dGh1cyB3YW50IHRvIHByaW50IGl0IGFzIGEgcG9pbnRlciB0byBiZSBzYWZlLgorLy8KKy8vIElO
VEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KKwor
Ly8gVGhlIGRlZmF1bHQgY2FzZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUb1ByaW50LCB0eXBlbmFt
ZSBPdGhlck9wZXJhbmQ+CitjbGFzcyBGb3JtYXRGb3JDb21wYXJpc29uIHsKKyBwdWJsaWM6Cisg
IHN0YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1hdChjb25zdCBUb1ByaW50JiB2YWx1ZSkgeworICAg
IHJldHVybiA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcodmFsdWUpOworICB9Cit9OworCisvLyBB
cnJheS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUb1ByaW50LCBzaXplX3QgTiwgdHlwZW5hbWUgT3Ro
ZXJPcGVyYW5kPgorY2xhc3MgRm9ybWF0Rm9yQ29tcGFyaXNvbjxUb1ByaW50W05dLCBPdGhlck9w
ZXJhbmQ+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1hdChjb25zdCBU
b1ByaW50KiB2YWx1ZSkgeworICAgIHJldHVybiBGb3JtYXRGb3JDb21wYXJpc29uPGNvbnN0IFRv
UHJpbnQqLCBPdGhlck9wZXJhbmQ+OjpGb3JtYXQodmFsdWUpOworICB9Cit9OworCisvLyBCeSBk
ZWZhdWx0LCBwcmludCBDIHN0cmluZyBhcyBwb2ludGVycyB0byBiZSBzYWZlLCBhcyB3ZSBkb24n
dCBrbm93CisvLyB3aGV0aGVyIHRoZXkgYWN0dWFsbHkgcG9pbnQgdG8gYSBOVUwtdGVybWluYXRl
ZCBzdHJpbmcuCisKKyNkZWZpbmUgR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfUE9JTlRF
Ul8oQ2hhclR5cGUpICAgICAgICAgICAgICAgIFwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIE90aGVy
T3BlcmFuZD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgY2xhc3Mg
Rm9ybWF0Rm9yQ29tcGFyaXNvbjxDaGFyVHlwZSosIE90aGVyT3BlcmFuZD4geyAgICAgICAgICAg
ICAgICAgIFwKKyAgIHB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgOjpzdGQ6OnN0cmluZyBGb3Jt
YXQoQ2hhclR5cGUqIHZhbHVlKSB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHJldHVy
biA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHZhbHVl
KSk7IFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklO
R19BU19QT0lOVEVSXyhjaGFyKTsKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1BPSU5U
RVJfKGNvbnN0IGNoYXIpOworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfUE9JTlRFUl8o
d2NoYXJfdCk7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19QT0lOVEVSXyhjb25zdCB3
Y2hhcl90KTsKKworI3VuZGVmIEdURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1BPSU5URVJf
CisKKy8vIElmIGEgQyBzdHJpbmcgaXMgY29tcGFyZWQgd2l0aCBhbiBTVEwgc3RyaW5nIG9iamVj
dCwgd2Uga25vdyBpdCdzIG1lYW50CisvLyB0byBwb2ludCB0byBhIE5VTC10ZXJtaW5hdGVkIHN0
cmluZywgYW5kIHRodXMgY2FuIHByaW50IGl0IGFzIGEgc3RyaW5nLgorCisjZGVmaW5lIEdURVNU
X0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18oQ2hhclR5cGUsIE90aGVyU3RyaW5nVHlw
ZSkgXAorICB0ZW1wbGF0ZSA8PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICBjbGFzcyBGb3JtYXRGb3JDb21wYXJpc29uPENoYXJU
eXBlKiwgT3RoZXJTdHJpbmdUeXBlPiB7ICAgICAgICAgICAgICAgXAorICAgcHVibGljOiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1hdChDaGFyVHlwZSogdmFsdWUpIHsgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgcmV0dXJuIDo6dGVzdGluZzo6UHJpbnRUb1N0cmlu
Zyh2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICB9CisKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18oY2hhciwgOjpzdGQ6
OnN0cmluZyk7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNvbnN0IGNo
YXIsIDo6c3RkOjpzdHJpbmcpOworCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK0dURVNU
X0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18oY2hhciwgOjpzdHJpbmcpOworR1RFU1Rf
SU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjb25zdCBjaGFyLCA6OnN0cmluZyk7Cisj
ZW5kaWYKKworI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORworR1RFU1RfSU1QTF9GT1JNQVRf
Q19TVFJJTkdfQVNfU1RSSU5HXyh3Y2hhcl90LCA6OndzdHJpbmcpOworR1RFU1RfSU1QTF9GT1JN
QVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjb25zdCB3Y2hhcl90LCA6OndzdHJpbmcpOworI2VuZGlm
CisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5H
X0FTX1NUUklOR18od2NoYXJfdCwgOjpzdGQ6OndzdHJpbmcpOworR1RFU1RfSU1QTF9GT1JNQVRf
Q19TVFJJTkdfQVNfU1RSSU5HXyhjb25zdCB3Y2hhcl90LCA6OnN0ZDo6d3N0cmluZyk7CisjZW5k
aWYKKworI3VuZGVmIEdURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18KKworLy8g
Rm9ybWF0cyBhIGNvbXBhcmlzb24gYXNzZXJ0aW9uIChlLmcuIEFTU0VSVF9FUSwgRVhQRUNUX0xU
LCBhbmQgZXRjKQorLy8gb3BlcmFuZCB0byBiZSB1c2VkIGluIGEgZmFpbHVyZSBtZXNzYWdlLiAg
VGhlIHR5cGUgKGJ1dCBub3QgdmFsdWUpCisvLyBvZiB0aGUgb3RoZXIgb3BlcmFuZCBtYXkgYWZm
ZWN0IHRoZSBmb3JtYXQuICBUaGlzIGFsbG93cyB1cyB0bworLy8gcHJpbnQgYSBjaGFyKiBhcyBh
IHJhdyBwb2ludGVyIHdoZW4gaXQgaXMgY29tcGFyZWQgYWdhaW5zdCBhbm90aGVyCisvLyBjaGFy
KiBvciB2b2lkKiwgYW5kIHByaW50IGl0IGFzIGEgQyBzdHJpbmcgd2hlbiBpdCBpcyBjb21wYXJl
ZAorLy8gYWdhaW5zdCBhbiBzdGQ6OnN0cmluZyBvYmplY3QsIGZvciBleGFtcGxlLgorLy8KKy8v
IElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitzdGQ6OnN0cmluZyBGb3JtYXRG
b3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoCisgICAgY29uc3QgVDEmIHZhbHVlLCBjb25zdCBU
MiYgLyogb3RoZXJfb3BlcmFuZCAqLykgeworICByZXR1cm4gRm9ybWF0Rm9yQ29tcGFyaXNvbjxU
MSwgVDI+OjpGb3JtYXQodmFsdWUpOworfQorCisvLyBVbml2ZXJzYWxQcmludGVyPFQ+OjpQcmlu
dCh2YWx1ZSwgb3N0cmVhbV9wdHIpIHByaW50cyB0aGUgZ2l2ZW4KKy8vIHZhbHVlIHRvIHRoZSBn
aXZlbiBvc3RyZWFtLiAgVGhlIGNhbGxlciBtdXN0IGVuc3VyZSB0aGF0CisvLyAnb3N0cmVhbV9w
dHInIGlzIG5vdCBOVUxMLCBvciB0aGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkLgorLy8KKy8vIFdl
IGRlZmluZSBVbml2ZXJzYWxQcmludGVyIGFzIGEgY2xhc3MgdGVtcGxhdGUgKGFzIG9wcG9zZWQg
dG8gYQorLy8gZnVuY3Rpb24gdGVtcGxhdGUpLCBhcyB3ZSBuZWVkIHRvIHBhcnRpYWxseSBzcGVj
aWFsaXplIGl0IGZvcgorLy8gcmVmZXJlbmNlIHR5cGVzLCB3aGljaCBjYW5ub3QgYmUgZG9uZSB3
aXRoIGZ1bmN0aW9uIHRlbXBsYXRlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVW5p
dmVyc2FsUHJpbnRlcjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFBy
aW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworCitlbnVtIERlZmF1bHRQ
cmludGVyVHlwZSB7CisgIGtQcmludENvbnRhaW5lciwKKyAga1ByaW50UG9pbnRlciwKKyAga1By
aW50RnVuY3Rpb25Qb2ludGVyLAorICBrUHJpbnRPdGhlciwKK307Cit0ZW1wbGF0ZSA8RGVmYXVs
dFByaW50ZXJUeXBlIHR5cGU+IHN0cnVjdCBXcmFwUHJpbnRlclR5cGUge307CisKKy8vIFVzZWQg
dG8gcHJpbnQgYW4gU1RMLXN0eWxlIGNvbnRhaW5lciB3aGVuIHRoZSB1c2VyIGRvZXNuJ3QgZGVm
aW5lCisvLyBhIFByaW50VG8oKSBmb3IgaXQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KK3ZvaWQg
RGVmYXVsdFByaW50VG8oV3JhcFByaW50ZXJUeXBlPGtQcmludENvbnRhaW5lcj4gLyogZHVtbXkg
Ki8sCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEMmIGNvbnRhaW5lciwgOjpzdGQ6Om9zdHJl
YW0qIG9zKSB7CisgIGNvbnN0IHNpemVfdCBrTWF4Q291bnQgPSAzMjsgIC8vIFRoZSBtYXhpbXVt
IG51bWJlciBvZiBlbGVtZW50cyB0byBwcmludC4KKyAgKm9zIDw8ICd7JzsKKyAgc2l6ZV90IGNv
dW50ID0gMDsKKyAgZm9yICh0eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvciBpdCA9IGNvbnRhaW5l
ci5iZWdpbigpOworICAgICAgIGl0ICE9IGNvbnRhaW5lci5lbmQoKTsgKytpdCwgKytjb3VudCkg
eworICAgIGlmIChjb3VudCA+IDApIHsKKyAgICAgICpvcyA8PCAnLCc7CisgICAgICBpZiAoY291
bnQgPT0ga01heENvdW50KSB7ICAvLyBFbm91Z2ggaGFzIGJlZW4gcHJpbnRlZC4KKyAgICAgICAg
Km9zIDw8ICIgLi4uIjsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAgICpvcyA8
PCAnICc7CisgICAgLy8gV2UgY2Fubm90IGNhbGwgUHJpbnRUbygqaXQsIG9zKSBoZXJlIGFzIFBy
aW50VG8oKSBkb2Vzbid0CisgICAgLy8gaGFuZGxlICppdCBiZWluZyBhIG5hdGl2ZSBhcnJheS4K
KyAgICBpbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnQoKml0LCBvcyk7CisgIH0KKworICBpZiAoY291
bnQgPiAwKSB7CisgICAgKm9zIDw8ICcgJzsKKyAgfQorICAqb3MgPDwgJ30nOworfQorCisvLyBV
c2VkIHRvIHByaW50IGEgcG9pbnRlciB0aGF0IGlzIG5laXRoZXIgYSBjaGFyIHBvaW50ZXIgbm9y
IGEgbWVtYmVyCisvLyBwb2ludGVyLCB3aGVuIHRoZSB1c2VyIGRvZXNuJ3QgZGVmaW5lIFByaW50
VG8oKSBmb3IgaXQuICAoQSBtZW1iZXIKKy8vIHZhcmlhYmxlIHBvaW50ZXIgb3IgbWVtYmVyIGZ1
bmN0aW9uIHBvaW50ZXIgZG9lc24ndCByZWFsbHkgcG9pbnQgdG8KKy8vIGEgbG9jYXRpb24gaW4g
dGhlIGFkZHJlc3Mgc3BhY2UuICBUaGVpciByZXByZXNlbnRhdGlvbiBpcworLy8gaW1wbGVtZW50
YXRpb24tZGVmaW5lZC4gIFRoZXJlZm9yZSB0aGV5IHdpbGwgYmUgcHJpbnRlZCBhcyByYXcKKy8v
IGJ5dGVzLikKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBEZWZhdWx0UHJpbnRUbyhXcmFw
UHJpbnRlclR5cGU8a1ByaW50UG9pbnRlcj4gLyogZHVtbXkgKi8sCisgICAgICAgICAgICAgICAg
ICAgIFQqIHAsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBpZiAocCA9PSBOVUxMKSB7CisgICAg
Km9zIDw8ICJOVUxMIjsKKyAgfSBlbHNlIHsKKyAgICAvLyBUIGlzIG5vdCBhIGZ1bmN0aW9uIHR5
cGUuICBXZSBqdXN0IGNhbGwgPDwgdG8gcHJpbnQgcCwKKyAgICAvLyByZWx5aW5nIG9uIEFETCB0
byBwaWNrIHVwIHVzZXItZGVmaW5lZCA8PCBmb3IgdGhlaXIgcG9pbnRlcgorICAgIC8vIHR5cGVz
LCBpZiBhbnkuCisgICAgKm9zIDw8IHA7CisgIH0KK30KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
dm9pZCBEZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5cGU8a1ByaW50RnVuY3Rpb25Qb2ludGVy
PiAvKiBkdW1teSAqLywKKyAgICAgICAgICAgICAgICAgICAgVCogcCwgOjpzdGQ6Om9zdHJlYW0q
IG9zKSB7CisgIGlmIChwID09IE5VTEwpIHsKKyAgICAqb3MgPDwgIk5VTEwiOworICB9IGVsc2Ug
eworICAgIC8vIFQgaXMgYSBmdW5jdGlvbiB0eXBlLCBzbyAnKm9zIDw8IHAnIGRvZXNuJ3QgZG8g
d2hhdCB3ZSB3YW50CisgICAgLy8gKGl0IGp1c3QgcHJpbnRzIHAgYXMgYm9vbCkuICBXZSB3YW50
IHRvIHByaW50IHAgYXMgYSBjb25zdAorICAgIC8vIHZvaWQqLgorICAgICpvcyA8PCByZWludGVy
cHJldF9jYXN0PGNvbnN0IHZvaWQqPihwKTsKKyAgfQorfQorCisvLyBVc2VkIHRvIHByaW50IGEg
bm9uLWNvbnRhaW5lciwgbm9uLXBvaW50ZXIgdmFsdWUgd2hlbiB0aGUgdXNlcgorLy8gZG9lc24n
dCBkZWZpbmUgUHJpbnRUbygpIGZvciBpdC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBE
ZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5cGU8a1ByaW50T3RoZXI+IC8qIGR1bW15ICovLAor
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7
CisgIDo6dGVzdGluZ19pbnRlcm5hbDo6RGVmYXVsdFByaW50Tm9uQ29udGFpbmVyVG8odmFsdWUs
IG9zKTsKK30KKworLy8gUHJpbnRzIHRoZSBnaXZlbiB2YWx1ZSB1c2luZyB0aGUgPDwgb3BlcmF0
b3IgaWYgaXQgaGFzIG9uZTsKKy8vIG90aGVyd2lzZSBwcmludHMgdGhlIGJ5dGVzIGluIGl0LiAg
VGhpcyBpcyB3aGF0CisvLyBVbml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCgpIGRvZXMgd2hlbiBQ
cmludFRvKCkgaXMgbm90IHNwZWNpYWxpemVkCisvLyBvciBvdmVybG9hZGVkIGZvciB0eXBlIFQu
CisvLworLy8gQSB1c2VyIGNhbiBvdmVycmlkZSB0aGlzIGJlaGF2aW9yIGZvciBhIGNsYXNzIHR5
cGUgRm9vIGJ5IGRlZmluaW5nCisvLyBhbiBvdmVybG9hZCBvZiBQcmludFRvKCkgaW4gdGhlIG5h
bWVzcGFjZSB3aGVyZSBGb28gaXMgZGVmaW5lZC4gIFdlCisvLyBnaXZlIHRoZSB1c2VyIHRoaXMg
b3B0aW9uIGFzIHNvbWV0aW1lcyBkZWZpbmluZyBhIDw8IG9wZXJhdG9yIGZvcgorLy8gRm9vIGlz
IG5vdCBkZXNpcmFibGUgKGUuZy4gdGhlIGNvZGluZyBzdHlsZSBtYXkgcHJldmVudCBkb2luZyBp
dCwKKy8vIG9yIHRoZXJlIGlzIGFscmVhZHkgYSA8PCBvcGVyYXRvciBidXQgaXQgZG9lc24ndCBk
byB3aGF0IHRoZSB1c2VyCisvLyB3YW50cykuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQg
UHJpbnRUbyhjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIC8vIERlZmF1
bHRQcmludFRvKCkgaXMgb3ZlcmxvYWRlZC4gIFRoZSB0eXBlIG9mIGl0cyBmaXJzdCBhcmd1bWVu
dAorICAvLyBkZXRlcm1pbmVzIHdoaWNoIHZlcnNpb24gd2lsbCBiZSBwaWNrZWQuCisgIC8vCisg
IC8vIE5vdGUgdGhhdCB3ZSBjaGVjayBmb3IgY29udGFpbmVyIHR5cGVzIGhlcmUsIHByaW9yIHRv
IHdlIGNoZWNrCisgIC8vIGZvciBwcm90b2NvbCBtZXNzYWdlIHR5cGVzIGluIG91ciBvcGVyYXRv
cjw8LiAgVGhlIHJhdGlvbmFsZSBpczoKKyAgLy8KKyAgLy8gRm9yIHByb3RvY29sIG1lc3NhZ2Vz
LCB3ZSB3YW50IHRvIGdpdmUgcGVvcGxlIGEgY2hhbmNlIHRvCisgIC8vIG92ZXJyaWRlIEdvb2ds
ZSBNb2NrJ3MgZm9ybWF0IGJ5IGRlZmluaW5nIGEgUHJpbnRUbygpIG9yCisgIC8vIG9wZXJhdG9y
PDwuICBGb3IgU1RMIGNvbnRhaW5lcnMsIG90aGVyIGZvcm1hdHMgY2FuIGJlCisgIC8vIGluY29t
cGF0aWJsZSB3aXRoIEdvb2dsZSBNb2NrJ3MgZm9ybWF0IGZvciB0aGUgY29udGFpbmVyCisgIC8v
IGVsZW1lbnRzOyB0aGVyZWZvcmUgd2UgY2hlY2sgZm9yIGNvbnRhaW5lciB0eXBlcyBoZXJlIHRv
IGVuc3VyZQorICAvLyB0aGF0IG91ciBmb3JtYXQgaXMgdXNlZC4KKyAgLy8KKyAgLy8gTm90ZSB0
aGF0IE1TVkMgYW5kIGNsYW5nLWNsIGRvIGFsbG93IGFuIGltcGxpY2l0IGNvbnZlcnNpb24gZnJv
bQorICAvLyBwb2ludGVyLXRvLWZ1bmN0aW9uIHRvIHBvaW50ZXItdG8tb2JqZWN0LCBidXQgY2xh
bmctY2wgd2FybnMgb24gaXQuCisgIC8vIFNvIGRvbid0IHVzZSBJbXBsaWNpdGx5Q29udmVydGli
bGUgaWYgaXQgY2FuIGJlIGhlbHBlZCBzaW5jZSBpdCB3aWxsCisgIC8vIGNhdXNlIHRoaXMgd2Fy
bmluZywgYW5kIHVzZSBhIHNlcGFyYXRlIG92ZXJsb2FkIG9mIERlZmF1bHRQcmludFRvIGZvcgor
ICAvLyBmdW5jdGlvbiBwb2ludGVycyBzbyB0aGF0IHRoZSBgKm9zIDw8IHBgIGluIHRoZSBvYmpl
Y3QgcG9pbnRlciBvdmVybG9hZAorICAvLyBkb2Vzbid0IGNhdXNlIHRoYXQgd2FybmluZyBlaXRo
ZXIuCisgIERlZmF1bHRQcmludFRvKAorICAgICAgV3JhcFByaW50ZXJUeXBlIDwKKyAgICAgICAg
ICAgICAgICAgIChzaXplb2YoSXNDb250YWluZXJUZXN0PFQ+KDApKSA9PSBzaXplb2YoSXNDb250
YWluZXIpKSAmJgorICAgICAgICAgICAgICAhSXNSZWN1cnNpdmVDb250YWluZXI8VD46OnZhbHVl
CisgICAgICAgICAgPyBrUHJpbnRDb250YWluZXIKKyAgICAgICAgICA6ICFpc19wb2ludGVyPFQ+
Ojp2YWx1ZQorICAgICAgICAgICAgICAgID8ga1ByaW50T3RoZXIKKyNpZiBHVEVTVF9MQU5HX0NY
WDExCisgICAgICAgICAgICAgICAgOiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX3BvaW50ZXI8VD46OnR5cGU+Ojp2YWx1ZQorI2Vsc2UKKyAgICAgICAgICAgICAgICA6ICFp
bnRlcm5hbDo6SW1wbGljaXRseUNvbnZlcnRpYmxlPFQsIGNvbnN0IHZvaWQqPjo6dmFsdWUKKyNl
bmRpZgorICAgICAgICAgICAgICAgICAgICAgID8ga1ByaW50RnVuY3Rpb25Qb2ludGVyCisgICAg
ICAgICAgICAgICAgICAgICAgOiBrUHJpbnRQb2ludGVyID4gKCksCisgICAgICB2YWx1ZSwgb3Mp
OworfQorCisvLyBUaGUgZm9sbG93aW5nIGxpc3Qgb2YgUHJpbnRUbygpIG92ZXJsb2FkcyB0ZWxs
cworLy8gVW5pdmVyc2FsUHJpbnRlcjxUPjo6UHJpbnQoKSBob3cgdG8gcHJpbnQgc3RhbmRhcmQg
dHlwZXMgKGJ1aWx0LWluCisvLyB0eXBlcywgc3RyaW5ncywgcGxhaW4gYXJyYXlzLCBhbmQgcG9p
bnRlcnMpLgorCisvLyBPdmVybG9hZHMgZm9yIHZhcmlvdXMgY2hhciB0eXBlcy4KK0dURVNUX0FQ
SV8gdm9pZCBQcmludFRvKHVuc2lnbmVkIGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKK0dU
RVNUX0FQSV8gdm9pZCBQcmludFRvKHNpZ25lZCBjaGFyIGMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7
CitpbmxpbmUgdm9pZCBQcmludFRvKGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIC8v
IFdoZW4gcHJpbnRpbmcgYSBwbGFpbiBjaGFyLCB3ZSBhbHdheXMgdHJlYXQgaXQgYXMgdW5zaWdu
ZWQuICBUaGlzCisgIC8vIHdheSwgdGhlIG91dHB1dCB3b24ndCBiZSBhZmZlY3RlZCBieSB3aGV0
aGVyIHRoZSBjb21waWxlciB0aGlua3MKKyAgLy8gY2hhciBpcyBzaWduZWQgb3Igbm90LgorICBQ
cmludFRvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpLCBvcyk7Cit9CisKKy8vIE92ZXJs
b2FkcyBmb3Igb3RoZXIgc2ltcGxlIGJ1aWx0LWluIHR5cGVzLgoraW5saW5lIHZvaWQgUHJpbnRU
byhib29sIHgsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAqb3MgPDwgKHggPyAidHJ1ZSIgOiAi
ZmFsc2UiKTsKK30KKworLy8gT3ZlcmxvYWQgZm9yIHdjaGFyX3QgdHlwZS4KKy8vIFByaW50cyBh
IHdjaGFyX3QgYXMgYSBzeW1ib2wgaWYgaXQgaXMgcHJpbnRhYmxlIG9yIGFzIGl0cyBpbnRlcm5h
bAorLy8gY29kZSBvdGhlcndpc2UgYW5kIGFsc28gYXMgaXRzIGRlY2ltYWwgY29kZSAoZXhjZXB0
IGZvciBMJ1wwJykuCisvLyBUaGUgTCdcMCcgY2hhciBpcyBwcmludGVkIGFzICJMJ1xcMCciLiBU
aGUgZGVjaW1hbCBjb2RlIGlzIHByaW50ZWQKKy8vIGFzIHNpZ25lZCBpbnRlZ2VyIHdoZW4gd2No
YXJfdCBpcyBpbXBsZW1lbnRlZCBieSB0aGUgY29tcGlsZXIKKy8vIGFzIGEgc2lnbmVkIHR5cGUg
YW5kIGlzIHByaW50ZWQgYXMgYW4gdW5zaWduZWQgaW50ZWdlciB3aGVuIHdjaGFyX3QKKy8vIGlz
IGltcGxlbWVudGVkIGFzIGFuIHVuc2lnbmVkIHR5cGUuCitHVEVTVF9BUElfIHZvaWQgUHJpbnRU
byh3Y2hhcl90IHdjLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworCisvLyBPdmVybG9hZHMgZm9yIEMg
c3RyaW5ncy4KK0dURVNUX0FQSV8gdm9pZCBQcmludFRvKGNvbnN0IGNoYXIqIHMsIDo6c3RkOjpv
c3RyZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRvKGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFt
KiBvcykgeworICBQcmludFRvKEltcGxpY2l0Q2FzdF88Y29uc3QgY2hhcio+KHMpLCBvcyk7Cit9
CisKKy8vIHNpZ25lZC91bnNpZ25lZCBjaGFyIGlzIG9mdGVuIHVzZWQgZm9yIHJlcHJlc2VudGlu
ZyBiaW5hcnkgZGF0YSwgc28KKy8vIHdlIHByaW50IHBvaW50ZXJzIHRvIGl0IGFzIHZvaWQqIHRv
IGJlIHNhZmUuCitpbmxpbmUgdm9pZCBQcmludFRvKGNvbnN0IHNpZ25lZCBjaGFyKiBzLCA6OnN0
ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUbyhJbXBsaWNpdENhc3RfPGNvbnN0IHZvaWQqPihz
KSwgb3MpOworfQoraW5saW5lIHZvaWQgUHJpbnRUbyhzaWduZWQgY2hhciogcywgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocyksIG9z
KTsKK30KK2lubGluZSB2b2lkIFByaW50VG8oY29uc3QgdW5zaWduZWQgY2hhciogcywgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocyks
IG9zKTsKK30KK2lubGluZSB2b2lkIFByaW50VG8odW5zaWduZWQgY2hhciogcywgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocyksIG9z
KTsKK30KKworLy8gTVNWQyBjYW4gYmUgY29uZmlndXJlZCB0byBkZWZpbmUgd2NoYXJfdCBhcyBh
IHR5cGVkZWYgb2YgdW5zaWduZWQKKy8vIHNob3J0LiAgSXQgZGVmaW5lcyBfTkFUSVZFX1dDSEFS
X1RfREVGSU5FRCB3aGVuIHdjaGFyX3QgaXMgYSBuYXRpdmUKKy8vIHR5cGUuICBXaGVuIHdjaGFy
X3QgaXMgYSB0eXBlZGVmLCBkZWZpbmluZyBhbiBvdmVybG9hZCBmb3IgY29uc3QKKy8vIHdjaGFy
X3QqIHdvdWxkIGNhdXNlIHVuc2lnbmVkIHNob3J0KiBiZSBwcmludGVkIGFzIGEgd2lkZSBzdHJp
bmcsCisvLyBwb3NzaWJseSBjYXVzaW5nIGludmFsaWQgbWVtb3J5IGFjY2Vzc2VzLgorI2lmICFk
ZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEKQorLy8g
T3ZlcmxvYWRzIGZvciB3aWRlIEMgc3RyaW5ncworR1RFU1RfQVBJXyB2b2lkIFByaW50VG8oY29u
c3Qgd2NoYXJfdCogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKK2lubGluZSB2b2lkIFByaW50VG8o
d2NoYXJfdCogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGljaXRDYXN0
Xzxjb25zdCB3Y2hhcl90Kj4ocyksIG9zKTsKK30KKyNlbmRpZgorCisvLyBPdmVybG9hZCBmb3Ig
QyBhcnJheXMuICBNdWx0aS1kaW1lbnNpb25hbCBhcnJheXMgYXJlIHByaW50ZWQKKy8vIHByb3Bl
cmx5LgorCisvLyBQcmludHMgdGhlIGdpdmVuIG51bWJlciBvZiBlbGVtZW50cyBpbiBhbiBhcnJh
eSwgd2l0aG91dCBwcmludGluZworLy8gdGhlIGN1cmx5IGJyYWNlcy4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgordm9pZCBQcmludFJhd0FycmF5VG8oY29uc3QgVCBhW10sIHNpemVfdCBjb3VudCwg
OjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFVuaXZlcnNhbFByaW50KGFbMF0sIG9zKTsKKyAgZm9y
IChzaXplX3QgaSA9IDE7IGkgIT0gY291bnQ7IGkrKykgeworICAgICpvcyA8PCAiLCAiOworICAg
IFVuaXZlcnNhbFByaW50KGFbaV0sIG9zKTsKKyAgfQorfQorCisvLyBPdmVybG9hZHMgZm9yIDo6
c3RyaW5nIGFuZCA6OnN0ZDo6c3RyaW5nLgorI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCitH
VEVTVF9BUElfIHZvaWQgUHJpbnRTdHJpbmdUbyhjb25zdCA6OnN0cmluZyZzLCA6OnN0ZDo6b3N0
cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6OnN0cmluZyYgcywgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgIFByaW50U3RyaW5nVG8ocywgb3MpOworfQorI2VuZGlmICAvLyBH
VEVTVF9IQVNfR0xPQkFMX1NUUklORworCitHVEVTVF9BUElfIHZvaWQgUHJpbnRTdHJpbmdUbyhj
b25zdCA6OnN0ZDo6c3RyaW5nJnMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQ
cmludFRvKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQ
cmludFN0cmluZ1RvKHMsIG9zKTsKK30KKworLy8gT3ZlcmxvYWRzIGZvciA6OndzdHJpbmcgYW5k
IDo6c3RkOjp3c3RyaW5nLgorI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORworR1RFU1RfQVBJ
XyB2b2lkIFByaW50V2lkZVN0cmluZ1RvKGNvbnN0IDo6d3N0cmluZyZzLCA6OnN0ZDo6b3N0cmVh
bSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6OndzdHJpbmcmIHMsIDo6c3RkOjpv
c3RyZWFtKiBvcykgeworICBQcmludFdpZGVTdHJpbmdUbyhzLCBvcyk7Cit9CisjZW5kaWYgIC8v
IEdURVNUX0hBU19HTE9CQUxfV1NUUklORworCisjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCitH
VEVTVF9BUElfIHZvaWQgUHJpbnRXaWRlU3RyaW5nVG8oY29uc3QgOjpzdGQ6OndzdHJpbmcmcywg
OjpzdGQ6Om9zdHJlYW0qIG9zKTsKK2lubGluZSB2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6Ondz
dHJpbmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFdpZGVTdHJpbmdUbyhzLCBv
cyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORworCisjaWYgR1RFU1RfSEFT
X0FCU0wKKy8vIE92ZXJsb2FkIGZvciBhYnNsOjpzdHJpbmdfdmlldy4KK2lubGluZSB2b2lkIFBy
aW50VG8oYWJzbDo6c3RyaW5nX3ZpZXcgc3AsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmlu
dFRvKDo6c3RkOjpzdHJpbmcoc3ApLCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNM
CisKKyNpZiBHVEVTVF9MQU5HX0NYWDExCitpbmxpbmUgdm9pZCBQcmludFRvKHN0ZDo6bnVsbHB0
cl90LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsgKm9zIDw8ICIobnVsbHB0cikiOyB9CisjZW5kaWYg
IC8vIEdURVNUX0xBTkdfQ1hYMTEKKworI2lmIEdURVNUX0hBU19UUjFfVFVQTEUgfHwgR1RFU1Rf
SEFTX1NURF9UVVBMRV8KKy8vIEhlbHBlciBmdW5jdGlvbiBmb3IgcHJpbnRpbmcgYSB0dXBsZS4g
IFQgbXVzdCBiZSBpbnN0YW50aWF0ZWQgd2l0aAorLy8gYSB0dXBsZSB0eXBlLgordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Cit2b2lkIFByaW50VHVwbGVUbyhjb25zdCBUJiB0LCA6OnN0ZDo6b3N0cmVh
bSogb3MpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfVFIxX1RVUExFIHx8IEdURVNUX0hBU19TVERf
VFVQTEVfCisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCisvLyBPdmVybG9hZCBmb3IgOjpzdGQ6
OnRyMTo6dHVwbGUuICBOZWVkZWQgZm9yIHByaW50aW5nIGZ1bmN0aW9uIGFyZ3VtZW50cywKKy8v
IHdoaWNoIGFyZSBwYWNrZWQgYXMgdHVwbGVzLgorCisvLyBPdmVybG9hZGVkIFByaW50VG8oKSBm
b3IgdHVwbGVzIG9mIHZhcmlvdXMgYXJpdGllcy4gIFdlIHN1cHBvcnQKKy8vIHR1cGxlcyBvZiB1
cC10byAxMCBmaWVsZHMuICBUaGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIHdvcmtzCisvLyBy
ZWdhcmRsZXNzIG9mIHdoZXRoZXIgdHIxOjp0dXBsZSBpcyBpbXBsZW1lbnRlZCB1c2luZyB0aGUK
Ky8vIG5vbi1zdGFuZGFyZCB2YXJpYWRpYyB0ZW1wbGF0ZSBmZWF0dXJlIG9yIG5vdC4KKworaW5s
aW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTw+JiB0LCA6OnN0ZDo6b3N0
cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQxPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxPiYgdCwgOjpz
dGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRy
MTo6dHVwbGU8VDEsIFQyPiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVU
byh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVu
YW1lIFQzPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDM+
JiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0Pgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0
PiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDU+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8
VDEsIFQyLCBUMywgVDQsIFQ1PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAg
ICAgICB0eXBlbmFtZSBUNj4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAg
ICAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+Cit2b2lkIFByaW50VG8oY29uc3QgOjpz
dGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+JiB0LAorICAgICAgICAg
ICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFR1cGxlVG8odCwgb3MpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUg
VDQsIHR5cGVuYW1lIFQ1LAorICAgICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlw
ZW5hbWUgVDg+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAg
ICAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBU
OT4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5PiYgdCwKKyAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAg
ICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwg
dHlwZW5hbWUgVDEwPgordm9pZCBQcmludFRvKAorICAgIGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxl
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD4mIHQsCisgICAgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisjZW5kaWYgIC8vIEdU
RVNUX0hBU19UUjFfVFVQTEUKKworI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCit0ZW1wbGF0ZSA8
dHlwZW5hbWUuLi4gVHlwZXM+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnR1cGxlPFR5cGVz
Li4uPiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9
CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfVFVQTEVfCisKKy8vIE92ZXJsb2FkIGZvciBzdGQ6
OnBhaXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgordm9pZCBQcmludFRv
KGNvbnN0IDo6c3RkOjpwYWlyPFQxLCBUMj4mIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsK
KyAgKm9zIDw8ICcoJzsKKyAgLy8gV2UgY2Fubm90IHVzZSBVbml2ZXJzYWxQcmludCh2YWx1ZS5m
aXJzdCwgb3MpIGhlcmUsIGFzIFQxIG1heSBiZQorICAvLyBhIHJlZmVyZW5jZSB0eXBlLiAgVGhl
IHNhbWUgZm9yIHByaW50aW5nIHZhbHVlLnNlY29uZC4KKyAgVW5pdmVyc2FsUHJpbnRlcjxUMT46
OlByaW50KHZhbHVlLmZpcnN0LCBvcyk7CisgICpvcyA8PCAiLCAiOworICBVbml2ZXJzYWxQcmlu
dGVyPFQyPjo6UHJpbnQodmFsdWUuc2Vjb25kLCBvcyk7CisgICpvcyA8PCAnKSc7Cit9CisKKy8v
IEltcGxlbWVudHMgcHJpbnRpbmcgYSBub24tcmVmZXJlbmNlIHR5cGUgVCBieSBsZXR0aW5nIHRo
ZSBjb21waWxlcgorLy8gcGljayB0aGUgcmlnaHQgb3ZlcmxvYWQgb2YgUHJpbnRUbygpIGZvciBU
LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbml2ZXJzYWxQcmludGVyIHsKKyBwdWJs
aWM6CisgIC8vIE1TVkMgd2FybnMgYWJvdXQgYWRkaW5nIGNvbnN0IHRvIGEgZnVuY3Rpb24gdHlw
ZSwgc28gd2Ugd2FudCB0bworICAvLyBkaXNhYmxlIHRoZSB3YXJuaW5nLgorICBHVEVTVF9ESVNB
QkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MTgwKQorCisgIC8vIE5vdGU6IHdlIGRlbGliZXJhdGVs
eSBkb24ndCBjYWxsIHRoaXMgUHJpbnRUbygpLCBhcyB0aGF0IG5hbWUKKyAgLy8gY29uZmxpY3Rz
IHdpdGggOjp0ZXN0aW5nOjppbnRlcm5hbDo6UHJpbnRUbyBpbiB0aGUgYm9keSBvZiB0aGUKKyAg
Ly8gZnVuY3Rpb24uCisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6
b3N0cmVhbSogb3MpIHsKKyAgICAvLyBCeSBkZWZhdWx0LCA6OnRlc3Rpbmc6OmludGVybmFsOjpQ
cmludFRvKCkgaXMgdXNlZCBmb3IgcHJpbnRpbmcKKyAgICAvLyB0aGUgdmFsdWUuCisgICAgLy8K
KyAgICAvLyBUaGFua3MgdG8gS29lbmlnIGxvb2stdXAsIGlmIFQgaXMgYSBjbGFzcyBhbmQgaGFz
IGl0cyBvd24KKyAgICAvLyBQcmludFRvKCkgZnVuY3Rpb24gZGVmaW5lZCBpbiBpdHMgbmFtZXNw
YWNlLCB0aGF0IGZ1bmN0aW9uIHdpbGwKKyAgICAvLyBiZSB2aXNpYmxlIGhlcmUuICBTaW5jZSBp
dCBpcyBtb3JlIHNwZWNpZmljIHRoYW4gdGhlIGdlbmVyaWMgb25lcworICAgIC8vIGluIDo6dGVz
dGluZzo6aW50ZXJuYWwsIGl0IHdpbGwgYmUgcGlja2VkIGJ5IHRoZSBjb21waWxlciBpbiB0aGUK
KyAgICAvLyBmb2xsb3dpbmcgc3RhdGVtZW50IC0gZXhhY3RseSB3aGF0IHdlIHdhbnQuCisgICAg
UHJpbnRUbyh2YWx1ZSwgb3MpOworICB9CisKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1Nf
UE9QXygpCit9OworCisjaWYgR1RFU1RfSEFTX0FCU0wKKworLy8gUHJpbnRlciBmb3IgYWJzbDo6
b3B0aW9uYWwKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbml2ZXJzYWxQcmludGVy
PDo6YWJzbDo6b3B0aW9uYWw8VD4+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFByaW50KGNv
bnN0IDo6YWJzbDo6b3B0aW9uYWw8VD4mIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAg
ICAqb3MgPDwgJygnOworICAgIGlmICghdmFsdWUpIHsKKyAgICAgICpvcyA8PCAibnVsbG9wdCI7
CisgICAgfSBlbHNlIHsKKyAgICAgIFVuaXZlcnNhbFByaW50KCp2YWx1ZSwgb3MpOworICAgIH0K
KyAgICAqb3MgPDwgJyknOworICB9Cit9OworCisvLyBQcmludGVyIGZvciBhYnNsOjp2YXJpYW50
CisKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBUPgorY2xhc3MgVW5pdmVyc2FsUHJpbnRlcjw6OmFi
c2w6OnZhcmlhbnQ8VC4uLj4+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0
IDo6YWJzbDo6dmFyaWFudDxULi4uPiYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAg
ICpvcyA8PCAnKCc7CisgICAgYWJzbDo6dmlzaXQoVmlzaXRvcntvc30sIHZhbHVlKTsKKyAgICAq
b3MgPDwgJyknOworICB9CisKKyBwcml2YXRlOgorICBzdHJ1Y3QgVmlzaXRvciB7CisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFU+CisgICAgdm9pZCBvcGVyYXRvcigpKGNvbnN0IFUmIHUpIGNvbnN0
IHsKKyAgICAgICpvcyA8PCAiJyIgPDwgR2V0VHlwZU5hbWU8VT4oKSA8PCAiJyB3aXRoIHZhbHVl
ICI7CisgICAgICBVbml2ZXJzYWxQcmludCh1LCBvcyk7CisgICAgfQorICAgIDo6c3RkOjpvc3Ry
ZWFtKiBvczsKKyAgfTsKK307CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0FCU0wKKworLy8gVW5p
dmVyc2FsUHJpbnRBcnJheShiZWdpbiwgbGVuLCBvcykgcHJpbnRzIGFuIGFycmF5IG9mICdsZW4n
CisvLyBlbGVtZW50cywgc3RhcnRpbmcgYXQgYWRkcmVzcyAnYmVnaW4nLgordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFByaW50QXJyYXkoY29uc3QgVCogYmVnaW4sIHNpemVf
dCBsZW4sIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBpZiAobGVuID09IDApIHsKKyAgICAqb3Mg
PDwgInt9IjsKKyAgfSBlbHNlIHsKKyAgICAqb3MgPDwgInsgIjsKKyAgICBjb25zdCBzaXplX3Qg
a1RocmVzaG9sZCA9IDE4OworICAgIGNvbnN0IHNpemVfdCBrQ2h1bmtTaXplID0gODsKKyAgICAv
LyBJZiB0aGUgYXJyYXkgaGFzIG1vcmUgdGhhbiBrVGhyZXNob2xkIGVsZW1lbnRzLCB3ZSdsbCBo
YXZlIHRvCisgICAgLy8gb21pdCBzb21lIGRldGFpbHMgYnkgcHJpbnRpbmcgb25seSB0aGUgZmly
c3QgYW5kIHRoZSBsYXN0CisgICAgLy8ga0NodW5rU2l6ZSBlbGVtZW50cy4KKyAgICAvLyBGSVhN
RTogbGV0IHRoZSB1c2VyIGNvbnRyb2wgdGhlIHRocmVzaG9sZCB1c2luZyBhIGZsYWcuCisgICAg
aWYgKGxlbiA8PSBrVGhyZXNob2xkKSB7CisgICAgICBQcmludFJhd0FycmF5VG8oYmVnaW4sIGxl
biwgb3MpOworICAgIH0gZWxzZSB7CisgICAgICBQcmludFJhd0FycmF5VG8oYmVnaW4sIGtDaHVu
a1NpemUsIG9zKTsKKyAgICAgICpvcyA8PCAiLCAuLi4sICI7CisgICAgICBQcmludFJhd0FycmF5
VG8oYmVnaW4gKyBsZW4gLSBrQ2h1bmtTaXplLCBrQ2h1bmtTaXplLCBvcyk7CisgICAgfQorICAg
ICpvcyA8PCAiIH0iOworICB9Cit9CisvLyBUaGlzIG92ZXJsb2FkIHByaW50cyBhIChjb25zdCkg
Y2hhciBhcnJheSBjb21wYWN0bHkuCitHVEVTVF9BUElfIHZvaWQgVW5pdmVyc2FsUHJpbnRBcnJh
eSgKKyAgICBjb25zdCBjaGFyKiBiZWdpbiwgc2l6ZV90IGxlbiwgOjpzdGQ6Om9zdHJlYW0qIG9z
KTsKKworLy8gVGhpcyBvdmVybG9hZCBwcmludHMgYSAoY29uc3QpIHdjaGFyX3QgYXJyYXkgY29t
cGFjdGx5LgorR1RFU1RfQVBJXyB2b2lkIFVuaXZlcnNhbFByaW50QXJyYXkoCisgICAgY29uc3Qg
d2NoYXJfdCogYmVnaW4sIHNpemVfdCBsZW4sIDo6c3RkOjpvc3RyZWFtKiBvcyk7CisKKy8vIElt
cGxlbWVudHMgcHJpbnRpbmcgYW4gYXJyYXkgdHlwZSBUW05dLgordGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHNpemVfdCBOPgorY2xhc3MgVW5pdmVyc2FsUHJpbnRlcjxUW05dPiB7CisgcHVibGljOgor
ICAvLyBQcmludHMgdGhlIGdpdmVuIGFycmF5LCBvbWl0dGluZyBzb21lIGVsZW1lbnRzIHdoZW4g
dGhlcmUgYXJlIHRvbworICAvLyBtYW55LgorICBzdGF0aWMgdm9pZCBQcmludChjb25zdCBUICgm
YSlbTl0sIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIFVuaXZlcnNhbFByaW50QXJyYXkoYSwg
Tiwgb3MpOworICB9Cit9OworCisvLyBJbXBsZW1lbnRzIHByaW50aW5nIGEgcmVmZXJlbmNlIHR5
cGUgVCYuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFVuaXZlcnNhbFByaW50ZXI8VCY+
IHsKKyBwdWJsaWM6CisgIC8vIE1TVkMgd2FybnMgYWJvdXQgYWRkaW5nIGNvbnN0IHRvIGEgZnVu
Y3Rpb24gdHlwZSwgc28gd2Ugd2FudCB0bworICAvLyBkaXNhYmxlIHRoZSB3YXJuaW5nLgorICBH
VEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MTgwKQorCisgIHN0YXRpYyB2b2lkIFBy
aW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICAvLyBQcmludHMg
dGhlIGFkZHJlc3Mgb2YgdGhlIHZhbHVlLiAgV2UgdXNlIHJlaW50ZXJwcmV0X2Nhc3QgaGVyZQor
ICAgIC8vIGFzIHN0YXRpY19jYXN0IGRvZXNuJ3QgY29tcGlsZSB3aGVuIFQgaXMgYSBmdW5jdGlv
biB0eXBlLgorICAgICpvcyA8PCAiQCIgPDwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4o
JnZhbHVlKSA8PCAiICI7CisKKyAgICAvLyBUaGVuIHByaW50cyB0aGUgdmFsdWUgaXRzZWxmLgor
ICAgIFVuaXZlcnNhbFByaW50KHZhbHVlLCBvcyk7CisgIH0KKworICBHVEVTVF9ESVNBQkxFX01T
Q19XQVJOSU5HU19QT1BfKCkKK307CisKKy8vIFByaW50cyBhIHZhbHVlIHRlcnNlbHk6IGZvciBh
IHJlZmVyZW5jZSB0eXBlLCB0aGUgcmVmZXJlbmNlZCB2YWx1ZQorLy8gKGJ1dCBub3QgdGhlIGFk
ZHJlc3MpIGlzIHByaW50ZWQ7IGZvciBhIChjb25zdCkgY2hhciBwb2ludGVyLCB0aGUKKy8vIE5V
TC10ZXJtaW5hdGVkIHN0cmluZyAoYnV0IG5vdCB0aGUgcG9pbnRlcikgaXMgcHJpbnRlZC4KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbml2ZXJzYWxUZXJzZVByaW50ZXIgeworIHB1
YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFt
KiBvcykgeworICAgIFVuaXZlcnNhbFByaW50KHZhbHVlLCBvcyk7CisgIH0KK307Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxUJj4geworIHB1Ymxp
YzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBv
cykgeworICAgIFVuaXZlcnNhbFByaW50KHZhbHVlLCBvcyk7CisgIH0KK307Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitjbGFzcyBVbml2ZXJzYWxUZXJzZVByaW50ZXI8VFtOXT4g
eworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCAoJnZhbHVlKVtOXSwgOjpz
dGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVW5pdmVyc2FsUHJpbnRlcjxUW05dPjo6UHJpbnQodmFs
dWUsIG9zKTsKKyAgfQorfTsKK3RlbXBsYXRlIDw+CitjbGFzcyBVbml2ZXJzYWxUZXJzZVByaW50
ZXI8Y29uc3QgY2hhcio+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IGNo
YXIqIHN0ciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgaWYgKHN0ciA9PSBOVUxMKSB7Cisg
ICAgICAqb3MgPDwgIk5VTEwiOworICAgIH0gZWxzZSB7CisgICAgICBVbml2ZXJzYWxQcmludChz
dGQ6OnN0cmluZyhzdHIpLCBvcyk7CisgICAgfQorICB9Cit9OwordGVtcGxhdGUgPD4KK2NsYXNz
IFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjaGFyKj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQg
UHJpbnQoY2hhciogc3RyLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBVbml2ZXJzYWxUZXJz
ZVByaW50ZXI8Y29uc3QgY2hhcio+OjpQcmludChzdHIsIG9zKTsKKyAgfQorfTsKKworI2lmIEdU
RVNUX0hBU19TVERfV1NUUklORwordGVtcGxhdGUgPD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJp
bnRlcjxjb25zdCB3Y2hhcl90Kj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29u
c3Qgd2NoYXJfdCogc3RyLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBpZiAoc3RyID09IE5V
TEwpIHsKKyAgICAgICpvcyA8PCAiTlVMTCI7CisgICAgfSBlbHNlIHsKKyAgICAgIFVuaXZlcnNh
bFByaW50KDo6c3RkOjp3c3RyaW5nKHN0ciksIG9zKTsKKyAgICB9CisgIH0KK307CisjZW5kaWYK
KwordGVtcGxhdGUgPD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjx3Y2hhcl90Kj4gewor
IHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQod2NoYXJfdCogc3RyLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgICBVbml2ZXJzYWxUZXJzZVByaW50ZXI8Y29uc3Qgd2NoYXJfdCo+OjpQcmlu
dChzdHIsIG9zKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFVuaXZl
cnNhbFRlcnNlUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBV
bml2ZXJzYWxUZXJzZVByaW50ZXI8VD46OlByaW50KHZhbHVlLCBvcyk7Cit9CisKKy8vIFByaW50
cyBhIHZhbHVlIHVzaW5nIHRoZSB0eXBlIGluZmVycmVkIGJ5IHRoZSBjb21waWxlci4gIFRoZQor
Ly8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIFVuaXZlcnNhbFRlcnNlUHJpbnQoKSBpcyB0
aGF0IGZvciBhCisvLyAoY29uc3QpIGNoYXIgcG9pbnRlciwgdGhpcyBwcmludHMgYm90aCB0aGUg
cG9pbnRlciBhbmQgdGhlCisvLyBOVUwtdGVybWluYXRlZCBzdHJpbmcuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3ZvaWQgVW5pdmVyc2FsUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3Ry
ZWFtKiBvcykgeworICAvLyBBIHdvcmthcm9uZCBmb3IgdGhlIGJ1ZyBpbiBWQysrIDcuMSB0aGF0
IHByZXZlbnRzIHVzIGZyb20gaW5zdGFudGlhdGluZworICAvLyBVbml2ZXJzYWxQcmludGVyIHdp
dGggVCBkaXJlY3RseS4KKyAgdHlwZWRlZiBUIFQxOworICBVbml2ZXJzYWxQcmludGVyPFQxPjo6
UHJpbnQodmFsdWUsIG9zKTsKK30KKwordHlwZWRlZiA6OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6c3Ry
aW5nPiBTdHJpbmdzOworCisvLyBUdXBsZVBvbGljeTxUdXBsZVQ+IG11c3QgcHJvdmlkZToKKy8v
IC0gdHVwbGVfc2l6ZQorLy8gICAgIHNpemUgb2YgdHVwbGUgVHVwbGVULgorLy8gLSBnZXQ8c2l6
ZV90IEk+KGNvbnN0IFR1cGxlVCYgdCkKKy8vICAgICBzdGF0aWMgZnVuY3Rpb24gZXh0cmFjdGlu
ZyBlbGVtZW50IEkgb2YgdHVwbGUgVHVwbGVULgorLy8gLSB0dXBsZV9lbGVtZW50PHNpemVfdCBJ
Pjo6dHlwZQorLy8gICAgIHR5cGUgb2YgZWxlbWVudCBJIG9mIHR1cGxlIFR1cGxlVC4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBUdXBsZVQ+CitzdHJ1Y3QgVHVwbGVQb2xpY3k7CisKKyNpZiBHVEVTVF9I
QVNfVFIxX1RVUExFCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGVUPgorc3RydWN0IFR1cGxlUG9s
aWN5IHsKKyAgdHlwZWRlZiBUdXBsZVQgVHVwbGU7CisgIHN0YXRpYyBjb25zdCBzaXplX3QgdHVw
bGVfc2l6ZSA9IDo6c3RkOjp0cjE6OnR1cGxlX3NpemU8VHVwbGU+Ojp2YWx1ZTsKKworICB0ZW1w
bGF0ZSA8c2l6ZV90IEk+CisgIHN0cnVjdCB0dXBsZV9lbGVtZW50IDogOjpzdGQ6OnRyMTo6dHVw
bGVfZWxlbWVudDxzdGF0aWNfY2FzdDxpbnQ+KEkpLCBUdXBsZT4geworICB9OworCisgIHRlbXBs
YXRlIDxzaXplX3QgST4KKyAgc3RhdGljIHR5cGVuYW1lIEFkZFJlZmVyZW5jZTxjb25zdCB0eXBl
bmFtZSA6OnN0ZDo6dHIxOjp0dXBsZV9lbGVtZW50PAorICAgICAgc3RhdGljX2Nhc3Q8aW50PihJ
KSwgVHVwbGU+Ojp0eXBlPjo6dHlwZQorICBnZXQoY29uc3QgVHVwbGUmIHR1cGxlKSB7CisgICAg
cmV0dXJuIDo6c3RkOjp0cjE6OmdldDxJPih0dXBsZSk7CisgIH0KK307Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVHVwbGVUPgorY29uc3Qgc2l6ZV90IFR1cGxlUG9saWN5PFR1cGxlVD46OnR1cGxlX3Np
emU7CisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUKKworI2lmIEdURVNUX0hBU19TVERf
VFVQTEVfCit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHlwZXM+CitzdHJ1Y3QgVHVwbGVQb2xpY3k8
IDo6c3RkOjp0dXBsZTxUeXBlcy4uLj4gPiB7CisgIHR5cGVkZWYgOjpzdGQ6OnR1cGxlPFR5cGVz
Li4uPiBUdXBsZTsKKyAgc3RhdGljIGNvbnN0IHNpemVfdCB0dXBsZV9zaXplID0gOjpzdGQ6OnR1
cGxlX3NpemU8VHVwbGU+Ojp2YWx1ZTsKKworICB0ZW1wbGF0ZSA8c2l6ZV90IEk+CisgIHN0cnVj
dCB0dXBsZV9lbGVtZW50IDogOjpzdGQ6OnR1cGxlX2VsZW1lbnQ8SSwgVHVwbGU+IHt9OworCisg
IHRlbXBsYXRlIDxzaXplX3QgST4KKyAgc3RhdGljIGNvbnN0IHR5cGVuYW1lIDo6c3RkOjp0dXBs
ZV9lbGVtZW50PEksIFR1cGxlPjo6dHlwZSYgZ2V0KAorICAgICAgY29uc3QgVHVwbGUmIHR1cGxl
KSB7CisgICAgcmV0dXJuIDo6c3RkOjpnZXQ8ST4odHVwbGUpOworICB9Cit9OwordGVtcGxhdGUg
PHR5cGVuYW1lLi4uIFR5cGVzPgorY29uc3Qgc2l6ZV90IFR1cGxlUG9saWN5PCA6OnN0ZDo6dHVw
bGU8VHlwZXMuLi4+ID46OnR1cGxlX3NpemU7CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfVFVQ
TEVfCisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFIHx8IEdURVNUX0hBU19TVERfVFVQTEVfCisv
LyBUaGlzIGhlbHBlciB0ZW1wbGF0ZSBhbGxvd3MgUHJpbnRUbygpIGZvciB0dXBsZXMgYW5kCisv
LyBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoKSB0byBiZSBkZWZpbmVk
IGJ5CisvLyBpbmR1Y3Rpb24gb24gdGhlIG51bWJlciBvZiB0dXBsZSBmaWVsZHMuICBUaGUgaWRl
YSBpcyB0aGF0CisvLyBUdXBsZVByZWZpeFByaW50ZXI8Tj46OlByaW50UHJlZml4VG8odCwgb3Mp
IHByaW50cyB0aGUgZmlyc3QgTgorLy8gZmllbGRzIGluIHR1cGxlIHQsIGFuZCBjYW4gYmUgZGVm
aW5lZCBpbiB0ZXJtcyBvZgorLy8gVHVwbGVQcmVmaXhQcmludGVyPE4gLSAxPi4KKy8vCisvLyBU
aGUgaW5kdWN0aXZlIGNhc2UuCit0ZW1wbGF0ZSA8c2l6ZV90IE4+CitzdHJ1Y3QgVHVwbGVQcmVm
aXhQcmludGVyIHsKKyAgLy8gUHJpbnRzIHRoZSBmaXJzdCBOIGZpZWxkcyBvZiBhIHR1cGxlLgor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+CisgIHN0YXRpYyB2b2lkIFByaW50UHJlZml4VG8o
Y29uc3QgVHVwbGUmIHQsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIFR1cGxlUHJlZml4UHJp
bnRlcjxOIC0gMT46OlByaW50UHJlZml4VG8odCwgb3MpOworICAgIEdURVNUX0lOVEVOVElPTkFM
X0NPTlNUX0NPTkRfUFVTSF8oKQorICAgIGlmIChOID4gMSkgeworICAgIEdURVNUX0lOVEVOVElP
TkFMX0NPTlNUX0NPTkRfUE9QXygpCisgICAgICAqb3MgPDwgIiwgIjsKKyAgICB9CisgICAgVW5p
dmVyc2FsUHJpbnRlcjwKKyAgICAgICAgdHlwZW5hbWUgVHVwbGVQb2xpY3k8VHVwbGU+Ojp0ZW1w
bGF0ZSB0dXBsZV9lbGVtZW50PE4gLSAxPjo6dHlwZT4KKyAgICAgICAgOjpQcmludChUdXBsZVBv
bGljeTxUdXBsZT46OnRlbXBsYXRlIGdldDxOIC0gMT4odCksIG9zKTsKKyAgfQorCisgIC8vIFRl
cnNlbHkgcHJpbnRzIHRoZSBmaXJzdCBOIGZpZWxkcyBvZiBhIHR1cGxlIHRvIGEgc3RyaW5nIHZl
Y3RvciwKKyAgLy8gb25lIGVsZW1lbnQgZm9yIGVhY2ggZmllbGQuCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUdXBsZT4KKyAgc3RhdGljIHZvaWQgVGVyc2VQcmludFByZWZpeFRvU3RyaW5ncyhjb25z
dCBUdXBsZSYgdCwgU3RyaW5ncyogc3RyaW5ncykgeworICAgIFR1cGxlUHJlZml4UHJpbnRlcjxO
IC0gMT46OlRlcnNlUHJpbnRQcmVmaXhUb1N0cmluZ3ModCwgc3RyaW5ncyk7CisgICAgOjpzdGQ6
OnN0cmluZ3N0cmVhbSBzczsKKyAgICBVbml2ZXJzYWxUZXJzZVByaW50KFR1cGxlUG9saWN5PFR1
cGxlPjo6dGVtcGxhdGUgZ2V0PE4gLSAxPih0KSwgJnNzKTsKKyAgICBzdHJpbmdzLT5wdXNoX2Jh
Y2soc3Muc3RyKCkpOworICB9Cit9OworCisvLyBCYXNlIGNhc2UuCit0ZW1wbGF0ZSA8Pgorc3Ry
dWN0IFR1cGxlUHJlZml4UHJpbnRlcjwwPiB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4K
KyAgc3RhdGljIHZvaWQgUHJpbnRQcmVmaXhUbyhjb25zdCBUdXBsZSYsIDo6c3RkOjpvc3RyZWFt
Kikge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+CisgIHN0YXRpYyB2b2lkIFRlcnNl
UHJpbnRQcmVmaXhUb1N0cmluZ3MoY29uc3QgVHVwbGUmLCBTdHJpbmdzKikge30KK307CisKKy8v
IEhlbHBlciBmdW5jdGlvbiBmb3IgcHJpbnRpbmcgYSB0dXBsZS4KKy8vIFR1cGxlIG11c3QgYmUg
ZWl0aGVyIHN0ZDo6dHIxOjp0dXBsZSBvciBzdGQ6OnR1cGxlIHR5cGUuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVHVwbGU+Cit2b2lkIFByaW50VHVwbGVUbyhjb25zdCBUdXBsZSYgdCwgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgICpvcyA8PCAiKCI7CisgIFR1cGxlUHJlZml4UHJpbnRlcjxUdXBsZVBv
bGljeTxUdXBsZT46OnR1cGxlX3NpemU+OjpQcmludFByZWZpeFRvKHQsIG9zKTsKKyAgKm9zIDw8
ICIpIjsKK30KKworLy8gUHJpbnRzIHRoZSBmaWVsZHMgb2YgYSB0dXBsZSB0ZXJzZWx5IHRvIGEg
c3RyaW5nIHZlY3Rvciwgb25lCisvLyBlbGVtZW50IGZvciBlYWNoIGZpZWxkLiAgU2VlIHRoZSBj
b21tZW50IGJlZm9yZQorLy8gVW5pdmVyc2FsVGVyc2VQcmludCgpIGZvciBob3cgd2UgZGVmaW5l
ICJ0ZXJzZWx5Ii4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4KK1N0cmluZ3MgVW5pdmVyc2Fs
VGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKGNvbnN0IFR1cGxlJiB2YWx1ZSkgeworICBT
dHJpbmdzIHJlc3VsdDsKKyAgVHVwbGVQcmVmaXhQcmludGVyPFR1cGxlUG9saWN5PFR1cGxlPjo6
dHVwbGVfc2l6ZT46OgorICAgICAgVGVyc2VQcmludFByZWZpeFRvU3RyaW5ncyh2YWx1ZSwgJnJl
c3VsdCk7CisgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQ
TEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8KKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisK
KyNpZiBHVEVTVF9IQVNfQUJTTAorbmFtZXNwYWNlIGludGVybmFsMiB7Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3ZvaWQgVHlwZVdpdGhvdXRGb3JtYXR0ZXI8VCwga0NvbnZlcnRpYmxlVG9TdHJp
bmdWaWV3Pjo6UHJpbnRWYWx1ZSgKKyAgICBjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0q
IG9zKSB7CisgIGludGVybmFsOjpQcmludFRvKGFic2w6OnN0cmluZ192aWV3KHZhbHVlKSwgb3Mp
OworfQorfSAgLy8gbmFtZXNwYWNlIGludGVybmFsMgorI2VuZGlmCisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgorOjpzdGQ6OnN0cmluZyBQcmludFRvU3RyaW5nKGNvbnN0IFQmIHZhbHVlKSB7Cisg
IDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIGludGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50
ZXI8VD46OlByaW50KHZhbHVlLCAmc3MpOworICByZXR1cm4gc3Muc3RyKCk7Cit9CisKK30gIC8v
IG5hbWVzcGFjZSB0ZXN0aW5nCisKKy8vIEluY2x1ZGUgYW55IGN1c3RvbSBwcmludGVyIGFkZGVk
IGJ5IHRoZSBsb2NhbCBpbnN0YWxsYXRpb24uCisvLyBXZSBtdXN0IGluY2x1ZGUgdGhpcyBoZWFk
ZXIgYXQgdGhlIGVuZCB0byBtYWtlIHN1cmUgaXQgY2FuIHVzZSB0aGUKKy8vIGRlY2xhcmF0aW9u
cyBmcm9tIHRoaXMgZmlsZS4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3Qt
cHJpbnRlcnMuaCIKKworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BSSU5U
RVJTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2d0ZXN0LXNwaS5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVz
dC1zcGkuaAppbmRleCBjNDFkYTQ4NDQ3NjAzZTk2NWZiNzcyYWJjYTJmMTQ1ZWU4MmE2MDZmLi4x
ZTg5ODM5MzhlYTI3OTJjNTI2OTBlYWQyOWIwMGFiNThjZGFhZTljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXNwaS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qtc3BpLmgKQEAgLTI2LDE2ICsy
NiwyMCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ly8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogLy8KIC8vIFV0
aWxpdGllcyBmb3IgdGVzdGluZyBHb29nbGUgVGVzdCBpdHNlbGYgYW5kIGNvZGUgdGhhdCB1c2Vz
IEdvb2dsZSBUZXN0CiAvLyAoZS5nLiBmcmFtZXdvcmtzIGJ1aWx0IG9uIHRvcCBvZiBHb29nbGUg
VGVzdCkuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDA0IERPIE5PVCBERUxFVEUKKwogI2lmbmRlZiBH
VEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1NQSV9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dU
RVNUX0dURVNUX1NQSV9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgorCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MjUxIFwK
Ky8qIGNsYXNzIEEgbmVlZHMgdG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xp
ZW50cyBvZiBjbGFzcyBCICovKQogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKQEAgLTk3LDEzICsx
MDEsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBTaW5nbGVGYWlsdXJlQ2hlY2tlciB7CiAgcHVibGlj
OgogICAvLyBUaGUgY29uc3RydWN0b3IgcmVtZW1iZXJzIHRoZSBhcmd1bWVudHMuCiAgIFNpbmds
ZUZhaWx1cmVDaGVja2VyKGNvbnN0IFRlc3RQYXJ0UmVzdWx0QXJyYXkqIHJlc3VsdHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN1YnN0cik7CisgICAgICAgICAgICAgICAgICAgICAg
IFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUsIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdWJzdHIpOwog
ICB+U2luZ2xlRmFpbHVyZUNoZWNrZXIoKTsKICBwcml2YXRlOgogICBjb25zdCBUZXN0UGFydFJl
c3VsdEFycmF5KiBjb25zdCByZXN1bHRzXzsKICAgY29uc3QgVGVzdFBhcnRSZXN1bHQ6OlR5cGUg
dHlwZV87Ci0gIGNvbnN0IFN0cmluZyBzdWJzdHJfOworICBjb25zdCBzdGQ6OnN0cmluZyBzdWJz
dHJfOwogCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oU2luZ2xlRmFpbHVyZUNo
ZWNrZXIpOwogfTsKQEAgLTExMiw2ICsxMTUsOCBAQCBjbGFzcyBHVEVTVF9BUElfIFNpbmdsZUZh
aWx1cmVDaGVja2VyIHsKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAorR1RFU1RfRElTQUJM
RV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQorCiAvLyBBIHNldCBvZiBtYWNyb3MgZm9y
IHRlc3RpbmcgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBvciBjb2RlIHRoYXQncyBleHBlY3RlZAog
Ly8gdG8gZ2VuZXJhdGUgR29vZ2xlIFRlc3QgZmF0YWwgZmFpbHVyZXMuICBJdCB2ZXJpZmllcyB0
aGF0IHRoZSBnaXZlbgogLy8gc3RhdGVtZW50IHdpbGwgY2F1c2UgZXhhY3RseSBvbmUgZmF0YWwg
R29vZ2xlIFRlc3QgZmFpbHVyZSB3aXRoICdzdWJzdHInCkBAIC0yMjMsNyArMjI4LDcgQEAgY2xh
c3MgR1RFU1RfQVBJXyBTaW5nbGVGYWlsdXJlQ2hlY2tlciB7CiAgICAgICAgIChzdWJzdHIpKTtc
CiAgICAge1wKICAgICAgIDo6dGVzdGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0
ZXIgZ3Rlc3RfcmVwb3J0ZXIoXAotICAgICAgICAgIDo6dGVzdGluZzo6U2NvcGVkRmFrZVRlc3RQ
YXJ0UmVzdWx0UmVwb3J0ZXI6OklOVEVSQ0VQVF9BTExfVEhSRUFEUyxcCisgICAgICAgICAgOjp0
ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjo6SU5URVJDRVBUX0FMTF9U
SFJFQURTLCBcCiAgICAgICAgICAgJmd0ZXN0X2ZhaWx1cmVzKTtcCiAgICAgICBpZiAoOjp0ZXN0
aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IHN0YXRlbWVudDsgfVwKICAgICB9XApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10ZXN0
LXBhcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVz
dC1wYXJ0LmgKaW5kZXggZjcxNDc1OTA2NzYzOWYxZWE0ZWMwYTEyNjM0N2RlYzEyMDQ4MjQzOS4u
MWM3Yjg5ZTA4Nzk2ZDk3MzBmOWY4ZWVhZTQwNjIyNzE3N2RiYTUxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBhcnQuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXRlc3QtcGFydC5o
CkBAIC0yNywxNiArMjcsMTggQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIC8v
Ci0vLyBBdXRob3I6IG1oZXVsZUBnb29nbGUuY29tIChNYXJrdXMgSGV1bGUpCi0vLworLy8gR09P
R0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQogCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RF
U1RfR1RFU1RfVEVTVF9QQVJUX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1Rf
VEVTVF9QQVJUX0hfCiAKICNpbmNsdWRlIDxpb3Nmd2Q+CiAjaW5jbHVkZSA8dmVjdG9yPgotI2lu
Y2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
aW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKKwor
R1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDI1MSBcCisvKiBjbGFzcyBBIG5lZWRz
IHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2VkIGJ5IGNsaWVudHMgb2YgY2xhc3MgQiAq
LykKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC02Miw3ICs2NCw3IEBAIGNsYXNzIEdURVNU
X0FQSV8gVGVzdFBhcnRSZXN1bHQgewogICAgICAgICAgICAgICAgICBpbnQgYV9saW5lX251bWJl
ciwKICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV9tZXNzYWdlKQogICAgICAgOiB0eXBl
XyhhX3R5cGUpLAotICAgICAgICBmaWxlX25hbWVfKGFfZmlsZV9uYW1lKSwKKyAgICAgICAgZmls
ZV9uYW1lXyhhX2ZpbGVfbmFtZSA9PSBOVUxMID8gIiIgOiBhX2ZpbGVfbmFtZSksCiAgICAgICAg
IGxpbmVfbnVtYmVyXyhhX2xpbmVfbnVtYmVyKSwKICAgICAgICAgc3VtbWFyeV8oRXh0cmFjdFN1
bW1hcnkoYV9tZXNzYWdlKSksCiAgICAgICAgIG1lc3NhZ2VfKGFfbWVzc2FnZSkgewpAQCAtNzMs
NyArNzUsOSBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RQYXJ0UmVzdWx0IHsKIAogICAvLyBHZXRz
IHRoZSBuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB3aGVyZSB0aGUgdGVzdCBwYXJ0IHRvb2sgcGxh
Y2UsIG9yCiAgIC8vIE5VTEwgaWYgaXQncyB1bmtub3duLgotICBjb25zdCBjaGFyKiBmaWxlX25h
bWUoKSBjb25zdCB7IHJldHVybiBmaWxlX25hbWVfLmNfc3RyKCk7IH0KKyAgY29uc3QgY2hhciog
ZmlsZV9uYW1lKCkgY29uc3QgeworICAgIHJldHVybiBmaWxlX25hbWVfLmVtcHR5KCkgPyBOVUxM
IDogZmlsZV9uYW1lXy5jX3N0cigpOworICB9CiAKICAgLy8gR2V0cyB0aGUgbGluZSBpbiB0aGUg
c291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0b29rIHBsYWNlLAogICAvLyBvciAtMSBp
ZiBpdCdzIHVua25vd24uCkBAIC05NiwyMSArMTAwLDIyIEBAIGNsYXNzIEdURVNUX0FQSV8gVGVz
dFBhcnRSZXN1bHQgewogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgcGFydCBmYXRh
bGx5IGZhaWxlZC4KICAgYm9vbCBmYXRhbGx5X2ZhaWxlZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGVf
ID09IGtGYXRhbEZhaWx1cmU7IH0KKwogIHByaXZhdGU6CiAgIFR5cGUgdHlwZV87CiAKICAgLy8g
R2V0cyB0aGUgc3VtbWFyeSBvZiB0aGUgZmFpbHVyZSBtZXNzYWdlIGJ5IG9taXR0aW5nIHRoZSBz
dGFjawogICAvLyB0cmFjZSBpbiBpdC4KLSAgc3RhdGljIGludGVybmFsOjpTdHJpbmcgRXh0cmFj
dFN1bW1hcnkoY29uc3QgY2hhciogbWVzc2FnZSk7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFeHRy
YWN0U3VtbWFyeShjb25zdCBjaGFyKiBtZXNzYWdlKTsKIAogICAvLyBUaGUgbmFtZSBvZiB0aGUg
c291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0b29rIHBsYWNlLCBvcgotICAvLyBOVUxM
IGlmIHRoZSBzb3VyY2UgZmlsZSBpcyB1bmtub3duLgotICBpbnRlcm5hbDo6U3RyaW5nIGZpbGVf
bmFtZV87CisgIC8vICIiIGlmIHRoZSBzb3VyY2UgZmlsZSBpcyB1bmtub3duLgorICBzdGQ6OnN0
cmluZyBmaWxlX25hbWVfOwogICAvLyBUaGUgbGluZSBpbiB0aGUgc291cmNlIGZpbGUgd2hlcmUg
dGhlIHRlc3QgcGFydCB0b29rIHBsYWNlLCBvciAtMQogICAvLyBpZiB0aGUgbGluZSBudW1iZXIg
aXMgdW5rbm93bi4KICAgaW50IGxpbmVfbnVtYmVyXzsKLSAgaW50ZXJuYWw6OlN0cmluZyBzdW1t
YXJ5XzsgIC8vIFRoZSB0ZXN0IGZhaWx1cmUgc3VtbWFyeS4KLSAgaW50ZXJuYWw6OlN0cmluZyBt
ZXNzYWdlXzsgIC8vIFRoZSB0ZXN0IGZhaWx1cmUgbWVzc2FnZS4KKyAgc3RkOjpzdHJpbmcgc3Vt
bWFyeV87ICAvLyBUaGUgdGVzdCBmYWlsdXJlIHN1bW1hcnkuCisgIHN0ZDo6c3RyaW5nIG1lc3Nh
Z2VfOyAgLy8gVGhlIHRlc3QgZmFpbHVyZSBtZXNzYWdlLgogfTsKIAogLy8gUHJpbnRzIGEgVGVz
dFBhcnRSZXN1bHQgb2JqZWN0LgpAQCAtMTQwLDcgKzE0NSw3IEBAIGNsYXNzIEdURVNUX0FQSV8g
VGVzdFBhcnRSZXN1bHRBcnJheSB7CiB9OwogCiAvLyBUaGlzIGludGVyZmFjZSBrbm93cyBob3cg
dG8gcmVwb3J0IGEgdGVzdCBwYXJ0IHJlc3VsdC4KLWNsYXNzIFRlc3RQYXJ0UmVzdWx0UmVwb3J0
ZXJJbnRlcmZhY2UgeworY2xhc3MgR1RFU1RfQVBJXyBUZXN0UGFydFJlc3VsdFJlcG9ydGVySW50
ZXJmYWNlIHsKICBwdWJsaWM6CiAgIHZpcnR1YWwgflRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRl
cmZhY2UoKSB7fQogCkBAIC0xNzMsNCArMTc4LDYgQEAgY2xhc3MgR1RFU1RfQVBJXyBIYXNOZXdG
YXRhbEZhaWx1cmVIZWxwZXIKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAorR1RFU1RfRElT
QUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQorCiAjZW5kaWYgIC8vIEdURVNUX0lO
Q0xVREVfR1RFU1RfR1RFU1RfVEVTVF9QQVJUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oCmluZGV4IDFlYzhl
YjhkMzA5Mzk4ZDUyYmQ0OTYzODRjZjQ3NDgzYWUxMTUyZWUuLjI5YjA4NTk5MmRlMGVlNGYzN2I2
NzYyZmMzZTIzNjQzY2NlYWQ2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oCkBAIC0yNiw4ICsyNiw5IEBA
CiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisKKy8vIEdPT0dMRVRFU1Rf
Q00wMDAxIERPIE5PVCBERUxFVEUKIAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNU
X1RZUEVEX1RFU1RfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9UWVBFRF9U
RVNUX0hfCkBAIC04Miw2ICs4MywyNCBAQCBUWVBFRF9URVNUKEZvb1Rlc3QsIERvZXNCbGFoKSB7
CiAKIFRZUEVEX1RFU1QoRm9vVGVzdCwgSGFzUHJvcGVydHlBKSB7IC4uLiB9CiAKKy8vIFRZUEVE
X1RFU1RfQ0FTRSB0YWtlcyBhbiBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCB3aGljaCBhbGxvd3Mg
dG8gc3BlY2lmeSBhCisvLyBjbGFzcyB0aGF0IGdlbmVyYXRlcyBjdXN0b20gdGVzdCBuYW1lIHN1
ZmZpeGVzIGJhc2VkIG9uIHRoZSB0eXBlLiBUaGlzIHNob3VsZAorLy8gYmUgYSBjbGFzcyB3aGlj
aCBoYXMgYSBzdGF0aWMgdGVtcGxhdGUgZnVuY3Rpb24gR2V0TmFtZShpbnQgaW5kZXgpIHJldHVy
bmluZworLy8gYSBzdHJpbmcgZm9yIGVhY2ggdHlwZS4gVGhlIHByb3ZpZGVkIGludGVnZXIgaW5k
ZXggZXF1YWxzIHRoZSBpbmRleCBvZiB0aGUKKy8vIHR5cGUgaW4gdGhlIHByb3ZpZGVkIHR5cGUg
bGlzdC4gSW4gbWFueSBjYXNlcyB0aGUgaW5kZXggY2FuIGJlIGlnbm9yZWQuCisvLworLy8gRm9y
IGV4YW1wbGU6CisvLyAgIGNsYXNzIE15VHlwZU5hbWVzIHsKKy8vICAgIHB1YmxpYzoKKy8vICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy8vICAgICBzdGF0aWMgc3RkOjpzdHJpbmcgR2V0TmFt
ZShpbnQpIHsKKy8vICAgICAgIGlmIChzdGQ6OmlzX3NhbWU8VCwgY2hhcj4oKSkgcmV0dXJuICJj
aGFyIjsKKy8vICAgICAgIGlmIChzdGQ6OmlzX3NhbWU8VCwgaW50PigpKSByZXR1cm4gImludCI7
CisvLyAgICAgICBpZiAoc3RkOjppc19zYW1lPFQsIHVuc2lnbmVkIGludD4oKSkgcmV0dXJuICJ1
bnNpZ25lZF9pbnQiOworLy8gICAgIH0KKy8vICAgfTsKKy8vICAgVFlQRURfVEVTVF9DQVNFKEZv
b1Rlc3QsIE15VHlwZXMsIE15VHlwZU5hbWVzKTsKKwogI2VuZGlmICAvLyAwCiAKIC8vIFR5cGUt
cGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgYWJzdHJhY3QgdGVzdCBwYXR0ZXJucyBwYXJhbWV0ZXJp
emVkCkBAIC0xNDMsMTEgKzE2MiwxNiBAQCBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChN
eSwgRm9vVGVzdCwgTXlUeXBlcyk7CiAvLyBJZiB0aGUgdHlwZSBsaXN0IGNvbnRhaW5zIG9ubHkg
b25lIHR5cGUsIHlvdSBjYW4gd3JpdGUgdGhhdCB0eXBlCiAvLyBkaXJlY3RseSB3aXRob3V0IFR5
cGVzPC4uLj46CiAvLyAgIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0
LCBpbnQpOworLy8KKy8vIFNpbWlsYXIgdG8gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IG9mIFRZUEVE
X1RFU1RfQ0FTRSBhYm92ZSwKKy8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIHRha2VzIGFuIG9w
dGlvbmFsIGZvdXJ0aCBhcmd1bWVudCB3aGljaCBhbGxvd3MgdG8KKy8vIGdlbmVyYXRlIGN1c3Rv
bSBuYW1lcy4KKy8vICAgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3Qs
IE15VHlwZXMsIE15VHlwZU5hbWVzKTsKIAogI2VuZGlmICAvLyAwCiAKLSNpbmNsdWRlIDxndGVz
dC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
dHlwZS11dGlsLmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oIgogCiAvLyBJbXBsZW1lbnRz
IHR5cGVkIHRlc3RzLgogCkBAIC0xNTcsMzMgKzE4MSw0NyBAQCBJTlNUQU5USUFURV9UWVBFRF9U
RVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcyk7CiAvLwogLy8gRXhwYW5kcyB0byB0aGUg
bmFtZSBvZiB0aGUgdHlwZWRlZiBmb3IgdGhlIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUKIC8vIGdp
dmVuIHRlc3QgY2FzZS4KLSNkZWZpbmUgR1RFU1RfVFlQRV9QQVJBTVNfKFRlc3RDYXNlTmFtZSkg
Z3Rlc3RfdHlwZV9wYXJhbXNfIyNUZXN0Q2FzZU5hbWUjI18KKyMgZGVmaW5lIEdURVNUX1RZUEVf
UEFSQU1TXyhUZXN0Q2FzZU5hbWUpIGd0ZXN0X3R5cGVfcGFyYW1zXyMjVGVzdENhc2VOYW1lIyNf
CisKKy8vIEV4cGFuZHMgdG8gdGhlIG5hbWUgb2YgdGhlIHR5cGVkZWYgZm9yIHRoZSBOYW1lR2Vu
ZXJhdG9yLCByZXNwb25zaWJsZSBmb3IKKy8vIGNyZWF0aW5nIHRoZSBzdWZmaXhlcyBvZiB0aGUg
bmFtZS4KKyNkZWZpbmUgR1RFU1RfTkFNRV9HRU5FUkFUT1JfKFRlc3RDYXNlTmFtZSkgXAorICBn
dGVzdF90eXBlX3BhcmFtc18jI1Rlc3RDYXNlTmFtZSMjX05hbWVHZW5lcmF0b3IKIAogLy8gVGhl
ICdUeXBlcycgdGVtcGxhdGUgYXJndW1lbnQgYmVsb3cgbXVzdCBoYXZlIHNwYWNlcyBhcm91bmQg
aXQKIC8vIHNpbmNlIHNvbWUgY29tcGlsZXJzIG1heSBjaG9rZSBvbiAnPj4nIHdoZW4gcGFzc2lu
ZyBhIHRlbXBsYXRlCiAvLyBpbnN0YW5jZSAoZS5nLiBUeXBlczxpbnQ+KQotI2RlZmluZSBUWVBF
RF9URVNUX0NBU0UoQ2FzZU5hbWUsIFR5cGVzKSBcCi0gIHR5cGVkZWYgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6VHlwZUxpc3Q8IFR5cGVzID46OnR5cGUgXAotICAgICAgR1RFU1RfVFlQRV9QQVJBTVNf
KENhc2VOYW1lKQotCi0jZGVmaW5lIFRZUEVEX1RFU1QoQ2FzZU5hbWUsIFRlc3ROYW1lKSBcCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiBcCi0gIGNsYXNzIEdURVNUX1RF
U1RfQ0xBU1NfTkFNRV8oQ2FzZU5hbWUsIFRlc3ROYW1lKSBcCi0gICAgICA6IHB1YmxpYyBDYXNl
TmFtZTxndGVzdF9UeXBlUGFyYW1fPiB7IFwKLSAgIHByaXZhdGU6IFwKLSAgICB0eXBlZGVmIENh
c2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IFRlc3RGaXh0dXJlOyBcCi0gICAgdHlwZWRlZiBndGVz
dF9UeXBlUGFyYW1fIFR5cGVQYXJhbTsgXAotICAgIHZpcnR1YWwgdm9pZCBUZXN0Qm9keSgpOyBc
Ci0gIH07IFwKLSAgYm9vbCBndGVzdF8jI0Nhc2VOYW1lIyNfIyNUZXN0TmFtZSMjX3JlZ2lzdGVy
ZWRfID0gXAotICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZVBhcmFtZXRlcml6ZWRUZXN0
PCBcCi0gICAgICAgICAgQ2FzZU5hbWUsIFwKLSAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFs
OjpUZW1wbGF0ZVNlbDwgXAotICAgICAgICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKENh
c2VOYW1lLCBUZXN0TmFtZSk+LCBcCi0gICAgICAgICAgR1RFU1RfVFlQRV9QQVJBTVNfKENhc2VO
YW1lKT46OlJlZ2lzdGVyKFwKLSAgICAgICAgICAgICAgIiIsICNDYXNlTmFtZSwgI1Rlc3ROYW1l
LCAwKTsgXAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgZ3Rlc3RfVHlwZVBhcmFtXz4gXAotICB2b2lk
IEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8oQ2FzZU5hbWUsIFRlc3ROYW1lKTxndGVzdF9UeXBlUGFy
YW1fPjo6VGVzdEJvZHkoKQorIyBkZWZpbmUgVFlQRURfVEVTVF9DQVNFKENhc2VOYW1lLCBUeXBl
cywgLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB0eXBlZGVmIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OlR5cGVMaXN0PCBUeXBlcyA+Ojp0eXBlIEdURVNUX1RZUEVfUEFSQU1TXygg
XAorICAgICAgQ2FzZU5hbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICB0eXBlZGVmIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok5h
bWVHZW5lcmF0b3JTZWxlY3RvcjxfX1ZBX0FSR1NfXz46OnR5cGUgICAgXAorICAgICAgR1RFU1Rf
TkFNRV9HRU5FUkFUT1JfKENhc2VOYW1lKQorCisjIGRlZmluZSBUWVBFRF9URVNUKENhc2VOYW1l
LCBUZXN0TmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgIGNsYXNzIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8oQ2FzZU5h
bWUsIFRlc3ROYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICA6IHB1Ymxp
YyBDYXNlTmFtZTxndGVzdF9UeXBlUGFyYW1fPiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICBwcml2YXRlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdHlwZWRlZiBDYXNlTmFtZTxn
dGVzdF9UeXBlUGFyYW1fPiBUZXN0Rml4dHVyZTsgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgdHlwZWRlZiBndGVzdF9UeXBlUGFyYW1fIFR5cGVQYXJhbTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdmlydHVhbCB2b2lkIFRlc3RCb2R5KCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH07ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgIGJvb2wgZ3Rlc3RfIyNDYXNlTmFtZSMjXyMjVGVzdE5hbWUjI19y
ZWdpc3RlcmVkXyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9ICBcCisgICAgICA6OnRlc3Rpbmc6
OmludGVybmFsOjpUeXBlUGFyYW1ldGVyaXplZFRlc3Q8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgQ2FzZU5hbWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6VGVtcGxhdGVTZWw8R1RFU1RfVEVTVF9DTEFTU19OQU1FXyhDYXNlTmFtZSwgICBcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUZXN0TmFtZSk+LCBcCisgICAgICAgICAgR1RFU1RfVFlQRV9QQVJBTVNfKCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICAgIENhc2VOYW1lKT46OlJlZ2lzdGVyKCIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbiggICAgICAgICBcCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pLCAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNDYXNlTmFtZSwgI1Rlc3RO
YW1lLCAwLCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkdlbmVyYXRlTmFtZXM8ICAgICAgICBcCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9OQU1FX0dFTkVSQVRPUl8o
Q2FzZU5hbWUpLCAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHVEVTVF9UWVBFX1BBUkFNU18oQ2FzZU5hbWUpPigpKTsgICAgICBcCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgIHZvaWQgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyhDYXNlTmFtZSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUZXN0TmFtZSk8Z3Rlc3RfVHlwZVBhcmFtXz46OlRlc3RCb2R5KCkKIAogI2VuZGlm
ICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAogCkBAIC0xOTYsMzEgKzIzNCwzMSBAQCBJTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcyk7CiAvLyBFeHBhbmRz
IHRvIHRoZSBuYW1lc3BhY2UgbmFtZSB0aGF0IHRoZSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMg
Zm9yCiAvLyB0aGUgZ2l2ZW4gdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBhcmUgZGVmaW5l
ZCBpbi4gIFRoZSBleGFjdAogLy8gbmFtZSBvZiB0aGUgbmFtZXNwYWNlIGlzIHN1YmplY3QgdG8g
Y2hhbmdlIHdpdGhvdXQgbm90aWNlLgotI2RlZmluZSBHVEVTVF9DQVNFX05BTUVTUEFDRV8oVGVz
dENhc2VOYW1lKSBcCisjIGRlZmluZSBHVEVTVF9DQVNFX05BTUVTUEFDRV8oVGVzdENhc2VOYW1l
KSBcCiAgIGd0ZXN0X2Nhc2VfIyNUZXN0Q2FzZU5hbWUjI18KIAogLy8gSU5URVJOQUwgSU1QTEVN
RU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KIC8vCiAvLyBFeHBhbmRzIHRvIHRo
ZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSB1c2VkIHRvIHJlbWVtYmVyIHRoZSBuYW1lcyBvZgogLy8g
dGhlIGRlZmluZWQgdGVzdHMgaW4gdGhlIGdpdmVuIHRlc3QgY2FzZS4KLSNkZWZpbmUgR1RFU1Rf
VFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKFRlc3RDYXNlTmFtZSkgXAorIyBkZWZpbmUgR1RFU1Rf
VFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKFRlc3RDYXNlTmFtZSkgXAogICBndGVzdF90eXBlZF90
ZXN0X2Nhc2VfcF9zdGF0ZV8jI1Rlc3RDYXNlTmFtZSMjXwogCiAvLyBJTlRFUk5BTCBJTVBMRU1F
TlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFIERJUkVDVExZLgogLy8KIC8vIEV4cGFu
ZHMgdG8gdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIHVzZWQgdG8gcmVtZW1iZXIgdGhlIG5hbWVz
IG9mCiAvLyB0aGUgcmVnaXN0ZXJlZCB0ZXN0cyBpbiB0aGUgZ2l2ZW4gdGVzdCBjYXNlLgotI2Rl
ZmluZSBHVEVTVF9SRUdJU1RFUkVEX1RFU1RfTkFNRVNfKFRlc3RDYXNlTmFtZSkgXAorIyBkZWZp
bmUgR1RFU1RfUkVHSVNURVJFRF9URVNUX05BTUVTXyhUZXN0Q2FzZU5hbWUpIFwKICAgZ3Rlc3Rf
cmVnaXN0ZXJlZF90ZXN0X25hbWVzXyMjVGVzdENhc2VOYW1lIyNfCiAKIC8vIFRoZSB2YXJpYWJs
ZXMgZGVmaW5lZCBpbiB0aGUgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgbWFjcm9zIGFyZQogLy8g
c3RhdGljIGFzIHR5cGljYWxseSB0aGVzZSBtYWNyb3MgYXJlIHVzZWQgaW4gYSAuaCBmaWxlIHRo
YXQgY2FuIGJlCiAvLyAjaW5jbHVkZWQgaW4gbXVsdGlwbGUgdHJhbnNsYXRpb24gdW5pdHMgbGlu
a2VkIHRvZ2V0aGVyLgotI2RlZmluZSBUWVBFRF9URVNUX0NBU0VfUChDYXNlTmFtZSkgXAorIyBk
ZWZpbmUgVFlQRURfVEVTVF9DQVNFX1AoQ2FzZU5hbWUpIFwKICAgc3RhdGljIDo6dGVzdGluZzo6
aW50ZXJuYWw6OlR5cGVkVGVzdENhc2VQU3RhdGUgXAogICAgICAgR1RFU1RfVFlQRURfVEVTVF9D
QVNFX1BfU1RBVEVfKENhc2VOYW1lKQogCi0jZGVmaW5lIFRZUEVEX1RFU1RfUChDYXNlTmFtZSwg
VGVzdE5hbWUpIFwKKyMgZGVmaW5lIFRZUEVEX1RFU1RfUChDYXNlTmFtZSwgVGVzdE5hbWUpIFwK
ICAgbmFtZXNwYWNlIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhDYXNlTmFtZSkgeyBcCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiBcCiAgIGNsYXNzIFRlc3ROYW1lIDogcHVi
bGljIENhc2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IHsgXApAQCAtMjI5LDMwICsyNjcsMzggQEAg
SU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMpOwogICAg
IHR5cGVkZWYgZ3Rlc3RfVHlwZVBhcmFtXyBUeXBlUGFyYW07IFwKICAgICB2aXJ0dWFsIHZvaWQg
VGVzdEJvZHkoKTsgXAogICB9OyBcCi0gIHN0YXRpYyBib29sIGd0ZXN0XyMjVGVzdE5hbWUjI19k
ZWZpbmVkXyA9IFwKKyAgc3RhdGljIGJvb2wgZ3Rlc3RfIyNUZXN0TmFtZSMjX2RlZmluZWRfIEdU
RVNUX0FUVFJJQlVURV9VTlVTRURfID0gXAogICAgICAgR1RFU1RfVFlQRURfVEVTVF9DQVNFX1Bf
U1RBVEVfKENhc2VOYW1lKS5BZGRUZXN0TmFtZShcCiAgICAgICAgICAgX19GSUxFX18sIF9fTElO
RV9fLCAjQ2FzZU5hbWUsICNUZXN0TmFtZSk7IFwKICAgfSBcCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBndGVzdF9UeXBlUGFyYW1fPiBcCiAgIHZvaWQgR1RFU1RfQ0FTRV9OQU1FU1BBQ0VfKENhc2VO
YW1lKTo6VGVzdE5hbWU8Z3Rlc3RfVHlwZVBhcmFtXz46OlRlc3RCb2R5KCkKIAotI2RlZmluZSBS
RUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChDYXNlTmFtZSwgLi4uKSBcCisjIGRlZmluZSBSRUdJ
U1RFUl9UWVBFRF9URVNUX0NBU0VfUChDYXNlTmFtZSwgLi4uKSBcCiAgIG5hbWVzcGFjZSBHVEVT
VF9DQVNFX05BTUVTUEFDRV8oQ2FzZU5hbWUpIHsgXAogICB0eXBlZGVmIDo6dGVzdGluZzo6aW50
ZXJuYWw6OlRlbXBsYXRlczxfX1ZBX0FSR1NfXz46OnR5cGUgZ3Rlc3RfQWxsVGVzdHNfOyBcCiAg
IH0gXAotICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgR1RFU1RfUkVHSVNURVJFRF9URVNUX05B
TUVTXyhDYXNlTmFtZSkgPSBcCi0gICAgICBHVEVTVF9UWVBFRF9URVNUX0NBU0VfUF9TVEFURV8o
Q2FzZU5hbWUpLlZlcmlmeVJlZ2lzdGVyZWRUZXN0TmFtZXMoXAotICAgICAgICAgIF9fRklMRV9f
LCBfX0xJTkVfXywgI19fVkFfQVJHU19fKQorICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgR1RF
U1RfUkVHSVNURVJFRF9URVNUX05BTUVTXyhDYXNlTmFtZSkgXAorICAgICAgR1RFU1RfQVRUUklC
VVRFX1VOVVNFRF8gPSBcCisgICAgICAgICAgR1RFU1RfVFlQRURfVEVTVF9DQVNFX1BfU1RBVEVf
KENhc2VOYW1lKS5WZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVzKCBcCisgICAgICAgICAgICAgIF9f
RklMRV9fLCBfX0xJTkVfXywgI19fVkFfQVJHU19fKQogCiAvLyBUaGUgJ1R5cGVzJyB0ZW1wbGF0
ZSBhcmd1bWVudCBiZWxvdyBtdXN0IGhhdmUgc3BhY2VzIGFyb3VuZCBpdAogLy8gc2luY2Ugc29t
ZSBjb21waWxlcnMgbWF5IGNob2tlIG9uICc+Picgd2hlbiBwYXNzaW5nIGEgdGVtcGxhdGUKIC8v
IGluc3RhbmNlIChlLmcuIFR5cGVzPGludD4pCi0jZGVmaW5lIElOU1RBTlRJQVRFX1RZUEVEX1RF
U1RfQ0FTRV9QKFByZWZpeCwgQ2FzZU5hbWUsIFR5cGVzKSBcCi0gIGJvb2wgZ3Rlc3RfIyNQcmVm
aXgjI18jI0Nhc2VOYW1lID0gXAotICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZVBhcmFt
ZXRlcml6ZWRUZXN0Q2FzZTxDYXNlTmFtZSwgXAotICAgICAgICAgIEdURVNUX0NBU0VfTkFNRVNQ
QUNFXyhDYXNlTmFtZSk6Omd0ZXN0X0FsbFRlc3RzXywgXAotICAgICAgICAgIDo6dGVzdGluZzo6
aW50ZXJuYWw6OlR5cGVMaXN0PCBUeXBlcyA+Ojp0eXBlPjo6UmVnaXN0ZXIoXAotICAgICAgICAg
ICAgICAjUHJlZml4LCAjQ2FzZU5hbWUsIEdURVNUX1JFR0lTVEVSRURfVEVTVF9OQU1FU18oQ2Fz
ZU5hbWUpKQorIyBkZWZpbmUgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoUHJlZml4LCBD
YXNlTmFtZSwgVHlwZXMsIC4uLikgICAgICBcCisgIGJvb2wgZ3Rlc3RfIyNQcmVmaXgjI18jI0Nh
c2VOYW1lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gICAgICAgICAgICAgIFwKKyAgICAgIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2U8ICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgIENhc2VOYW1lLCBHVEVTVF9DQVNFX05BTUVTUEFDRV8oQ2Fz
ZU5hbWUpOjpndGVzdF9BbGxUZXN0c18sICAgICBcCisgICAgICAgICAgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6VHlwZUxpc3Q8IFR5cGVzID46OnR5cGU+OjogICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICBSZWdpc3RlcigjUHJlZml4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNv
ZGVMb2NhdGlvbihfX0ZJTEVfXywgX19MSU5FX18pLCBcCisgICAgICAgICAgICAgICAgICAgJkdU
RVNUX1RZUEVEX1RFU1RfQ0FTRV9QX1NUQVRFXyhDYXNlTmFtZSksICNDYXNlTmFtZSwgIFwKKyAg
ICAgICAgICAgICAgICAgICBHVEVTVF9SRUdJU1RFUkVEX1RFU1RfTkFNRVNfKENhc2VOYW1lKSwg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6
OkdlbmVyYXRlTmFtZXM8ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAg
ICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok5hbWVHZW5lcmF0b3JTZWxlY3RvcjwgICAgICAgIFwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fVkFfQVJHU19fPjo6dHlwZSwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpUeXBlTGlzdDwgVHlwZXMgPjo6dHlwZT4oKSkKIAogI2VuZGlmICAvLyBHVEVTVF9I
QVNfVFlQRURfVEVTVF9QCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvZ3Rlc3QuaAppbmRleCA5MjFmYWQxMWZjYzhmMjRjMGRkMjIzOTRhNDg2N2FiMjRiNmVhMGMz
Li4yYmU4YjExMmM2MzdiMTBkYWNmZDA2OWZiOTcxZmU2ODY2YThkODc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC5oCkBAIC0yNiwxMCArMjYsOSBA
QAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwot
Ly8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRoZSBHb29n
bGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIFRoZSBHb29nbGUgQysr
IFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAvLyBUaGlz
IGhlYWRlciBmaWxlIGRlZmluZXMgdGhlIHB1YmxpYyBBUEkgZm9yIEdvb2dsZSBUZXN0LiAgSXQg
c2hvdWxkIGJlCiAvLyBpbmNsdWRlZCBieSBhbnkgdGVzdCBwcm9ncmFtIHRoYXQgdXNlcyBHb29n
bGUgVGVzdC4KQEAgLTQ4LDM4ICs0Nyw1NCBAQAogLy8gcmVnaXN0cmF0aW9uIGZyb20gQmFydGhl
bGVteSBEYWdlbmFpcycgKGJhcnRoZWxlbXlAcHJvbG9naXF1ZS5jb20pCiAvLyBlYXN5VW5pdCBm
cmFtZXdvcmsuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKKwogI2lmbmRl
ZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RF
U1RfR1RFU1RfSF8KIAogI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxvc3RyZWFtPgogI2lu
Y2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFs
Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+Ci0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LW1lc3NhZ2Uu
aD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1wYXJhbS10ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3RfcHJvZC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oPgotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9n
dGVzdC1pbnRlcm5hbC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5o
IgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9n
dGVzdC1tZXNzYWdlLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LXByaW50ZXJzLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3RfcHJv
ZC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oIgorI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LXR5cGVkLXRlc3QuaCIKKworR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8o
NDI1MSBcCisvKiBjbGFzcyBBIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2Vk
IGJ5IGNsaWVudHMgb2YgY2xhc3MgQiAqLykKIAogLy8gRGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9y
bSwgZGlmZmVyZW50IHN0cmluZyBjbGFzc2VzIGFyZSBhdmFpbGFibGUuCiAvLyBPbiBMaW51eCwg
aW4gYWRkaXRpb24gdG8gOjpzdGQ6OnN0cmluZywgR29vZ2xlIGFsc28gbWFrZXMgdXNlIG9mCiAv
LyBjbGFzcyA6OnN0cmluZywgd2hpY2ggaGFzIHRoZSBzYW1lIGludGVyZmFjZSBhcyA6OnN0ZDo6
c3RyaW5nLCBidXQKIC8vIGhhcyBhIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbi4KIC8vCi0vLyBU
aGUgdXNlciBjYW4gZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HIHRvIDEgdG8gaW5kaWNh
dGUgdGhhdAorLy8gWW91IGNhbiBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgdG8gMSB0
byBpbmRpY2F0ZSB0aGF0CiAvLyA6OnN0cmluZyBpcyBhdmFpbGFibGUgQU5EIGlzIGEgZGlzdGlu
Y3QgdHlwZSB0byA6OnN0ZDo6c3RyaW5nLCBvcgogLy8gZGVmaW5lIGl0IHRvIDAgdG8gaW5kaWNh
dGUgb3RoZXJ3aXNlLgogLy8KLS8vIElmIHRoZSB1c2VyJ3MgOjpzdGQ6OnN0cmluZyBhbmQgOjpz
dHJpbmcgYXJlIHRoZSBzYW1lIGNsYXNzIGR1ZSB0bwotLy8gYWxpYXNpbmcsIGhlIHNob3VsZCBk
ZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgdG8gMC4KKy8vIElmIDo6c3RkOjpzdHJpbmcg
YW5kIDo6c3RyaW5nIGFyZSB0aGUgc2FtZSBjbGFzcyBvbiB5b3VyIHBsYXRmb3JtCisvLyBkdWUg
dG8gYWxpYXNpbmcsIHlvdSBzaG91bGQgZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HIHRv
IDAuCiAvLwotLy8gSWYgdGhlIHVzZXIgZG9lc24ndCBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9T
VFJJTkcsIGl0IGlzIGRlZmluZWQKKy8vIElmIHlvdSBkbyBub3QgZGVmaW5lIEdURVNUX0hBU19H
TE9CQUxfU1RSSU5HLCBpdCBpcyBkZWZpbmVkCiAvLyBoZXVyaXN0aWNhbGx5LgogCiBuYW1lc3Bh
Y2UgdGVzdGluZyB7CiAKKy8vIFNpbGVuY2UgQzQxMDAgKHVucmVmZXJlbmNlZCBmb3JtYWwgcGFy
YW1ldGVyKSBhbmQgNDgwNQorLy8gdW5zYWZlIG1peCBvZiB0eXBlICdjb25zdCBpbnQnIGFuZCB0
eXBlICdjb25zdCBib29sJworI2lmZGVmIF9NU0NfVkVSCisjIHByYWdtYSB3YXJuaW5nKHB1c2gp
CisjIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDgwNSkKKyMgcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTo0MTAwKQorI2VuZGlmCisKKwogLy8gRGVjbGFyZXMgdGhlIGZsYWdzLgogCiAvLyBUaGlzIGZs
YWcgdGVtcG9yYXJ5IGVuYWJsZXMgdGhlIGRpc2FibGVkIHRlc3RzLgpAQCAtMTEzLDYgKzEyOCw5
IEBAIEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhvdXRwdXQpOwogLy8gdGVzdC4KIEdURVNUX0RFQ0xB
UkVfYm9vbF8ocHJpbnRfdGltZSk7CiAKKy8vIFRoaXMgZmxhZ3MgY29udHJvbCB3aGV0aGVyIEdv
b2dsZSBUZXN0IHByaW50cyBVVEY4IGNoYXJhY3RlcnMgYXMgdGV4dC4KK0dURVNUX0RFQ0xBUkVf
Ym9vbF8ocHJpbnRfdXRmOCk7CisKIC8vIFRoaXMgZmxhZyBzcGVjaWZpZXMgdGhlIHJhbmRvbSBu
dW1iZXIgc2VlZC4KIEdURVNUX0RFQ0xBUkVfaW50MzJfKHJhbmRvbV9zZWVkKTsKIApAQCAtMTMz
LDkgKzE1MSwxNCBAQCBHVEVTVF9ERUNMQVJFX2ludDMyXyhzdGFja190cmFjZV9kZXB0aCk7CiAK
IC8vIFdoZW4gdGhpcyBmbGFnIGlzIHNwZWNpZmllZCwgYSBmYWlsZWQgYXNzZXJ0aW9uIHdpbGwg
dGhyb3cgYW4KIC8vIGV4Y2VwdGlvbiBpZiBleGNlcHRpb25zIGFyZSBlbmFibGVkLCBvciBleGl0
IHRoZSBwcm9ncmFtIHdpdGggYQotLy8gbm9uLXplcm8gY29kZSBvdGhlcndpc2UuCisvLyBub24t
emVybyBjb2RlIG90aGVyd2lzZS4gRm9yIHVzZSB3aXRoIGFuIGV4dGVybmFsIHRlc3QgZnJhbWV3
b3JrLgogR1RFU1RfREVDTEFSRV9ib29sXyh0aHJvd19vbl9mYWlsdXJlKTsKIAorLy8gV2hlbiB0
aGlzIGZsYWcgaXMgc2V0IHdpdGggYSAiaG9zdDpwb3J0IiBzdHJpbmcsIG9uIHN1cHBvcnRlZAor
Ly8gcGxhdGZvcm1zIHRlc3QgcmVzdWx0cyBhcmUgc3RyZWFtZWQgdG8gdGhlIHNwZWNpZmllZCBw
b3J0IG9uCisvLyB0aGUgc3BlY2lmaWVkIGhvc3QgbWFjaGluZS4KK0dURVNUX0RFQ0xBUkVfc3Ry
aW5nXyhzdHJlYW1fcmVzdWx0X3RvKTsKKwogLy8gVGhlIHVwcGVyIGxpbWl0IGZvciB2YWxpZCBz
dGFjayB0cmFjZSBkZXB0aHMuCiBjb25zdCBpbnQga01heFN0YWNrVHJhY2VEZXB0aCA9IDEwMDsK
IApAQCAtMTQ3LDMxICsxNzAsMjcgQEAgY2xhc3MgRXhlY0RlYXRoVGVzdDsKIGNsYXNzIE5vRXhl
Y0RlYXRoVGVzdDsKIGNsYXNzIEZpbmFsU3VjY2Vzc0NoZWNrZXI7CiBjbGFzcyBHVGVzdEZsYWdT
YXZlcjsKLWNsYXNzIFRlc3RJbmZvSW1wbDsKK2NsYXNzIFN0cmVhbWluZ0xpc3RlbmVyVGVzdDsK
IGNsYXNzIFRlc3RSZXN1bHRBY2Nlc3NvcjsKIGNsYXNzIFRlc3RFdmVudExpc3RlbmVyc0FjY2Vz
c29yOwogY2xhc3MgVGVzdEV2ZW50UmVwZWF0ZXI7CitjbGFzcyBVbml0VGVzdFJlY29yZFByb3Bl
cnR5VGVzdEhlbHBlcjsKIGNsYXNzIFdpbmRvd3NEZWF0aFRlc3Q7CitjbGFzcyBGdWNoc2lhRGVh
dGhUZXN0OwogY2xhc3MgVW5pdFRlc3RJbXBsKiBHZXRVbml0VGVzdEltcGwoKTsKIHZvaWQgUmVw
b3J0RmFpbHVyZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKLWNsYXNzIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjsKLWNsYXNzIFhtbFVu
aXRUZXN0UmVzdWx0UHJpbnRlcjsKLQotLy8gQ29udmVydHMgYSBzdHJlYW1hYmxlIHZhbHVlIHRv
IGEgU3RyaW5nLiAgQSBOVUxMIHBvaW50ZXIgaXMKLS8vIGNvbnZlcnRlZCB0byAiKG51bGwpIi4g
IFdoZW4gdGhlIGlucHV0IHZhbHVlIGlzIGEgOjpzdHJpbmcsCi0vLyA6OnN0ZDo6c3RyaW5nLCA6
OndzdHJpbmcsIG9yIDo6c3RkOjp3c3RyaW5nIG9iamVjdCwgZWFjaCBOVUwKLS8vIGNoYXJhY3Rl
ciBpbiBpdCBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgotLy8gRGVjbGFyZWQgaW4gZ3Rlc3QtaW50
ZXJuYWwuaCBidXQgZGVmaW5lZCBoZXJlLCBzbyB0aGF0IGl0IGhhcyBhY2Nlc3MKLS8vIHRvIHRo
ZSBkZWZpbml0aW9uIG9mIHRoZSBNZXNzYWdlIGNsYXNzLCByZXF1aXJlZCBieSB0aGUgQVJNCi0v
LyBjb21waWxlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotU3RyaW5nIFN0cmVhbWFibGVUb1N0
cmluZyhjb25zdCBUJiBzdHJlYW1hYmxlKSB7Ci0gIHJldHVybiAoTWVzc2FnZSgpIDw8IHN0cmVh
bWFibGUpLkdldFN0cmluZygpOwotfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpOwogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJu
YWwKIAorLy8gVGhlIGZyaWVuZCByZWxhdGlvbnNoaXAgb2Ygc29tZSBvZiB0aGVzZSBjbGFzc2Vz
IGlzIGN5Y2xpYy4KKy8vIElmIHdlIGRvbid0IGZvcndhcmQgZGVjbGFyZSB0aGVtIHRoZSBjb21w
aWxlciBtaWdodCBjb25mdXNlIHRoZSBjbGFzc2VzCisvLyBpbiBmcmllbmRzaGlwIGNsYXVzZXMg
d2l0aCBzYW1lIG5hbWVkIGNsYXNzZXMgb24gdGhlIHNjb3BlLgorY2xhc3MgVGVzdDsKK2NsYXNz
IFRlc3RDYXNlOworY2xhc3MgVGVzdEluZm87CitjbGFzcyBVbml0VGVzdDsKKwogLy8gQSBjbGFz
cyBmb3IgaW5kaWNhdGluZyB3aGV0aGVyIGFuIGFzc2VydGlvbiB3YXMgc3VjY2Vzc2Z1bC4gIFdo
ZW4KIC8vIHRoZSBhc3NlcnRpb24gd2Fzbid0IHN1Y2Nlc3NmdWwsIHRoZSBBc3NlcnRpb25SZXN1
bHQgb2JqZWN0CiAvLyByZW1lbWJlcnMgYSBub24tZW1wdHkgbWVzc2FnZSB0aGF0IGRlc2NyaWJl
cyBob3cgaXQgZmFpbGVkLgpAQCAtMjU2LDggKzI3NSwzNSBAQCBjbGFzcyBHVEVTVF9BUElfIEFz
c2VydGlvblJlc3VsdCB7CiAgIC8vIENvcHkgY29uc3RydWN0b3IuCiAgIC8vIFVzZWQgaW4gRVhQ
RUNUX1RSVUUvRkFMU0UoYXNzZXJ0aW9uX3Jlc3VsdCkuCiAgIEFzc2VydGlvblJlc3VsdChjb25z
dCBBc3NlcnRpb25SZXN1bHQmIG90aGVyKTsKKworI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9N
U0NfVkVSIDwgMTkxMAorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0ODAwIC8q
IGZvcmNpbmcgdmFsdWUgdG8gYm9vbCAqLykKKyNlbmRpZgorCiAgIC8vIFVzZWQgaW4gdGhlIEVY
UEVDVF9UUlVFL0ZBTFNFKGJvb2xfZXhwcmVzc2lvbikuCi0gIGV4cGxpY2l0IEFzc2VydGlvblJl
c3VsdChib29sIHN1Y2Nlc3MpIDogc3VjY2Vzc18oc3VjY2Vzcykge30KKyAgLy8KKyAgLy8gVCBt
dXN0IGJlIGNvbnRleHR1YWxseSBjb252ZXJ0aWJsZSB0byBib29sLgorICAvLworICAvLyBUaGUg
c2Vjb25kIHBhcmFtZXRlciBwcmV2ZW50cyB0aGlzIG92ZXJsb2FkIGZyb20gYmVpbmcgY29uc2lk
ZXJlZCBpZgorICAvLyB0aGUgYXJndW1lbnQgaXMgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0byBB
c3NlcnRpb25SZXN1bHQuIEluIHRoYXQgY2FzZQorICAvLyB3ZSB3YW50IEFzc2VydGlvblJlc3Vs
dCdzIGNvcHkgY29uc3RydWN0b3IgdG8gYmUgdXNlZC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CisgIGV4cGxpY2l0IEFzc2VydGlvblJlc3VsdCgKKyAgICAgIGNvbnN0IFQmIHN1Y2Nlc3MsCisg
ICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RW5hYmxlSWY8CisgICAgICAgICAgIWludGVybmFsOjpJ
bXBsaWNpdGx5Q29udmVydGlibGU8VCwgQXNzZXJ0aW9uUmVzdWx0Pjo6dmFsdWU+Ojp0eXBlKgor
ICAgICAgICAgIC8qZW5hYmxlciovID0gTlVMTCkKKyAgICAgIDogc3VjY2Vzc18oc3VjY2Vzcykg
e30KKworI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSIDwgMTkxMAorICBHVEVTVF9E
SVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKyNlbmRpZgorCisgIC8vIEFzc2lnbm1lbnQgb3Bl
cmF0b3IuCisgIEFzc2VydGlvblJlc3VsdCYgb3BlcmF0b3I9KEFzc2VydGlvblJlc3VsdCBvdGhl
cikgeworICAgIHN3YXAob3RoZXIpOworICAgIHJldHVybiAqdGhpczsKKyAgfQogCiAgIC8vIFJl
dHVybnMgdHJ1ZSBpZmYgdGhlIGFzc2VydGlvbiBzdWNjZWVkZWQuCiAgIG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiBzdWNjZXNzXzsgfSAgLy8gTk9MSU5UCkBAIC0yNzAsMjAgKzMxNiwz
NiBAQCBjbGFzcyBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCB7CiAgIC8vIGFzc2VydGlvbidz
IGV4cGVjdGF0aW9uKS4gV2hlbiBub3RoaW5nIGhhcyBiZWVuIHN0cmVhbWVkIGludG8gdGhlCiAg
IC8vIG9iamVjdCwgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcuCiAgIGNvbnN0IGNoYXIqIG1lc3Nh
Z2UoKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1lc3NhZ2VfLmdldCgpICE9IE5VTEwgJiYgbWVzc2Fn
ZV8tPmNfc3RyKCkgIT0gTlVMTCA/Ci0gICAgICAgICAgIG1lc3NhZ2VfLT5jX3N0cigpIDogIiI7
CisgICAgcmV0dXJuIG1lc3NhZ2VfLmdldCgpICE9IE5VTEwgPyAgbWVzc2FnZV8tPmNfc3RyKCkg
OiAiIjsKICAgfQotICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBSZW1vdmUgdGhpcyBhZnRl
ciBtYWtpbmcgc3VyZSBubyBjbGllbnRzIHVzZSBpdC4KKyAgLy8gRklYTUU6IFJlbW92ZSB0aGlz
IGFmdGVyIG1ha2luZyBzdXJlIG5vIGNsaWVudHMgdXNlIGl0LgogICAvLyBEZXByZWNhdGVkOyBw
bGVhc2UgdXNlIG1lc3NhZ2UoKSBpbnN0ZWFkLgogICBjb25zdCBjaGFyKiBmYWlsdXJlX21lc3Nh
Z2UoKSBjb25zdCB7IHJldHVybiBtZXNzYWdlKCk7IH0KIAogICAvLyBTdHJlYW1zIGEgY3VzdG9t
IGZhaWx1cmUgbWVzc2FnZSBpbnRvIHRoaXMgb2JqZWN0LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gQXNzZXJ0aW9uUmVzdWx0JiBvcGVyYXRvcjw8KGNvbnN0IFQmIHZhbHVlKTsKKyAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IEFzc2VydGlvblJlc3VsdCYgb3BlcmF0b3I8PChjb25zdCBUJiB2YWx1
ZSkgeworICAgIEFwcGVuZE1lc3NhZ2UoTWVzc2FnZSgpIDw8IHZhbHVlKTsKKyAgICByZXR1cm4g
KnRoaXM7CisgIH0KKworICAvLyBBbGxvd3Mgc3RyZWFtaW5nIGJhc2ljIG91dHB1dCBtYW5pcHVs
YXRvcnMgc3VjaCBhcyBlbmRsIG9yIGZsdXNoIGludG8KKyAgLy8gdGhpcyBvYmplY3QuCisgIEFz
c2VydGlvblJlc3VsdCYgb3BlcmF0b3I8PCgKKyAgICAgIDo6c3RkOjpvc3RyZWFtJiAoKmJhc2lj
X21hbmlwdWxhdG9yKSg6OnN0ZDo6b3N0cmVhbSYgc3RyZWFtKSkgeworICAgIEFwcGVuZE1lc3Nh
Z2UoTWVzc2FnZSgpIDw8IGJhc2ljX21hbmlwdWxhdG9yKTsKKyAgICByZXR1cm4gKnRoaXM7Cisg
IH0KIAogIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gd2Ugd2FudCBBc3NlcnRp
b25SZXN1bHQgdG8gYmUKLSAgLy8gY29weS1jb25zdHJ1Y3RpYmxlIGJ1dCBub3QgYXNzaWduYWJs
ZS4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQXNzZXJ0aW9uUmVzdWx0JiBvdGhlcik7CisgIC8v
IEFwcGVuZHMgdGhlIGNvbnRlbnRzIG9mIG1lc3NhZ2UgdG8gbWVzc2FnZV8uCisgIHZvaWQgQXBw
ZW5kTWVzc2FnZShjb25zdCBNZXNzYWdlJiBhX21lc3NhZ2UpIHsKKyAgICBpZiAobWVzc2FnZV8u
Z2V0KCkgPT0gTlVMTCkKKyAgICAgIG1lc3NhZ2VfLnJlc2V0KG5ldyA6OnN0ZDo6c3RyaW5nKTsK
KyAgICBtZXNzYWdlXy0+YXBwZW5kKGFfbWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0cigpKTsKKyAg
fQorCisgIC8vIFN3YXAgdGhlIGNvbnRlbnRzIG9mIHRoaXMgQXNzZXJ0aW9uUmVzdWx0IHdpdGgg
b3RoZXIuCisgIHZvaWQgc3dhcChBc3NlcnRpb25SZXN1bHQmIG90aGVyKTsKIAogICAvLyBTdG9y
ZXMgcmVzdWx0IG9mIHRoZSBhc3NlcnRpb24gcHJlZGljYXRlLgogICBib29sIHN1Y2Nlc3NfOwpA
QCAtMjkxLDE5ICszNTMsOCBAQCBjbGFzcyBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCB7CiAg
IC8vIGNvbnN0cnVjdCBpcyBub3Qgc2F0aXNmaWVkIHdpdGggdGhlIHByZWRpY2F0ZSdzIG91dGNv
bWUuCiAgIC8vIFJlZmVyZW5jZWQgdmlhIGEgcG9pbnRlciB0byBhdm9pZCB0YWtpbmcgdG9vIG11
Y2ggc3RhY2sgZnJhbWUgc3BhY2UKICAgLy8gd2l0aCB0ZXN0IGFzc2VydGlvbnMuCi0gIGludGVy
bmFsOjpzY29wZWRfcHRyPGludGVybmFsOjpTdHJpbmc+IG1lc3NhZ2VfOwotfTsgIC8vIGNsYXNz
IEFzc2VydGlvblJlc3VsdAotCi0vLyBTdHJlYW1zIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSBp
bnRvIHRoaXMgb2JqZWN0LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1Bc3NlcnRpb25SZXN1bHQm
IEFzc2VydGlvblJlc3VsdDo6b3BlcmF0b3I8PChjb25zdCBUJiB2YWx1ZSkgewotICBNZXNzYWdl
IG1zZzsKLSAgaWYgKG1lc3NhZ2VfLmdldCgpICE9IE5VTEwpCi0gICAgbXNnIDw8ICptZXNzYWdl
XzsKLSAgbXNnIDw8IHZhbHVlOwotICBtZXNzYWdlXy5yZXNldChuZXcgaW50ZXJuYWw6OlN0cmlu
Zyhtc2cuR2V0U3RyaW5nKCkpKTsKLSAgcmV0dXJuICp0aGlzOwotfQorICBpbnRlcm5hbDo6c2Nv
cGVkX3B0cjwgOjpzdGQ6OnN0cmluZz4gbWVzc2FnZV87Cit9OwogCiAvLyBNYWtlcyBhIHN1Y2Nl
c3NmdWwgYXNzZXJ0aW9uIHJlc3VsdC4KIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IEFzc2Vy
dGlvblN1Y2Nlc3MoKTsKQEAgLTMxNSw2ICszNjYsMTUgQEAgR1RFU1RfQVBJXyBBc3NlcnRpb25S
ZXN1bHQgQXNzZXJ0aW9uRmFpbHVyZSgpOwogLy8gRGVwcmVjYXRlZDsgdXNlIEFzc2VydGlvbkZh
aWx1cmUoKSA8PCBtc2cuCiBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBBc3NlcnRpb25GYWls
dXJlKGNvbnN0IE1lc3NhZ2UmIG1zZyk7CiAKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKy8v
IEluY2x1ZGVzIHRoZSBhdXRvLWdlbmVyYXRlZCBoZWFkZXIgdGhhdCBpbXBsZW1lbnRzIGEgZmFt
aWx5IG9mIGdlbmVyaWMKKy8vIHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9zLiBUaGlzIGluY2x1
ZGUgY29tZXMgbGF0ZSBiZWNhdXNlIGl0IHJlbGllcyBvbgorLy8gQVBJcyBkZWNsYXJlZCBhYm92
ZS4KKyNpbmNsdWRlICJndGVzdC9ndGVzdF9wcmVkX2ltcGwuaCIKKworbmFtZXNwYWNlIHRlc3Rp
bmcgeworCiAvLyBUaGUgYWJzdHJhY3QgY2xhc3MgdGhhdCBhbGwgdGVzdHMgaW5oZXJpdCBmcm9t
LgogLy8KIC8vIEluIEdvb2dsZSBUZXN0LCBhIHVuaXQgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIG9u
ZSBvciBtYW55IFRlc3RDYXNlcywgYW5kCkBAIC0zMjUsMTIgKzM4NSwxMiBAQCBHVEVTVF9BUElf
IEFzc2VydGlvblJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKGNvbnN0IE1lc3NhZ2UmIG1zZyk7CiAv
LyB0aGlzIGZvciB5b3UuCiAvLwogLy8gVGhlIG9ubHkgdGltZSB5b3UgZGVyaXZlIGZyb20gVGVz
dCBpcyB3aGVuIGRlZmluaW5nIGEgdGVzdCBmaXh0dXJlCi0vLyB0byBiZSB1c2VkIGEgVEVTVF9G
LiAgRm9yIGV4YW1wbGU6CisvLyB0byBiZSB1c2VkIGluIGEgVEVTVF9GLiAgRm9yIGV4YW1wbGU6
CiAvLwogLy8gICBjbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogLy8gICAg
cHJvdGVjdGVkOgotLy8gICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsgLi4uIH0KLS8vICAgICB2
aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7IC4uLiB9CisvLyAgICAgdm9pZCBTZXRVcCgpIG92ZXJy
aWRlIHsgLi4uIH0KKy8vICAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUgeyAuLi4gfQogLy8g
ICAgIC4uLgogLy8gICB9OwogLy8KQEAgLTM0MCw3ICs0MDAsNyBAQCBHVEVTVF9BUElfIEFzc2Vy
dGlvblJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKGNvbnN0IE1lc3NhZ2UmIG1zZyk7CiAvLyBUZXN0
IGlzIG5vdCBjb3B5YWJsZS4KIGNsYXNzIEdURVNUX0FQSV8gVGVzdCB7CiAgcHVibGljOgotICBm
cmllbmQgY2xhc3MgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbDsKKyAgZnJpZW5kIGNsYXNzIFRlc3RJ
bmZvOwogCiAgIC8vIERlZmluZXMgdHlwZXMgZm9yIHBvaW50ZXJzIHRvIGZ1bmN0aW9ucyB0aGF0
IHNldCB1cCBhbmQgdGVhciBkb3duCiAgIC8vIGEgdGVzdCBjYXNlLgpAQCAtMzc2LDIwICs0MzYs
MjEgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0IHsKICAgLy8gbm9uLWZhdGFsKSBmYWlsdXJlLgog
ICBzdGF0aWMgYm9vbCBIYXNGYWlsdXJlKCkgeyByZXR1cm4gSGFzRmF0YWxGYWlsdXJlKCkgfHwg
SGFzTm9uZmF0YWxGYWlsdXJlKCk7IH0KIAotICAvLyBMb2dzIGEgcHJvcGVydHkgZm9yIHRoZSBj
dXJyZW50IHRlc3QuICBPbmx5IHRoZSBsYXN0IHZhbHVlIGZvciBhIGdpdmVuCi0gIC8vIGtleSBp
cyByZW1lbWJlcmVkLgotICAvLyBUaGVzZSBhcmUgcHVibGljIHN0YXRpYyBzbyB0aGV5IGNhbiBi
ZSBjYWxsZWQgZnJvbSB1dGlsaXR5IGZ1bmN0aW9ucwotICAvLyB0aGF0IGFyZSBub3QgbWVtYmVy
cyBvZiB0aGUgdGVzdCBmaXh0dXJlLgotICAvLyBUaGUgYXJndW1lbnRzIGFyZSBjb25zdCBjaGFy
KiBpbnN0ZWFkIHN0cmluZ3MsIGFzIEdvb2dsZSBUZXN0IGlzIHVzZWQKLSAgLy8gb24gcGxhdGZv
cm1zIHdoZXJlIHN0cmluZyBkb2Vzbid0IGNvbXBpbGUuCi0gIC8vCi0gIC8vIE5vdGUgdGhhdCBh
IGRyaXZpbmcgY29uc2lkZXJhdGlvbiBmb3IgdGhlc2UgUmVjb3JkUHJvcGVydHkgbWV0aG9kcwot
ICAvLyB3YXMgdG8gcHJvZHVjZSB4bWwgb3V0cHV0IHN1aXRlZCB0byB0aGUgR3JlZW5zcGFuIGNo
YXJ0aW5nIHV0aWxpdHksCi0gIC8vIHdoaWNoIGF0IHByZXNlbnQgd2lsbCBvbmx5IGNoYXJ0IHZh
bHVlcyB0aGF0IGZpdCBpbiBhIDMyLWJpdCBpbnQuIEl0Ci0gIC8vIGlzIHRoZSB1c2VyJ3MgcmVz
cG9uc2liaWxpdHkgdG8gcmVzdHJpY3QgdGhlaXIgdmFsdWVzIHRvIDMyLWJpdCBpbnRzCi0gIC8v
IGlmIHRoZXkgaW50ZW5kIHRoZW0gdG8gYmUgdXNlZCB3aXRoIEdyZWVuc3Bhbi4KLSAgc3RhdGlj
IHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBjb25zdCBjaGFyKiB2YWx1ZSk7
Ci0gIHN0YXRpYyB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0IGNoYXIqIGtleSwgaW50IHZhbHVl
KTsKKyAgLy8gTG9ncyBhIHByb3BlcnR5IGZvciB0aGUgY3VycmVudCB0ZXN0LCB0ZXN0IGNhc2Us
IG9yIGZvciB0aGUgZW50aXJlCisgIC8vIGludm9jYXRpb24gb2YgdGhlIHRlc3QgcHJvZ3JhbSB3
aGVuIHVzZWQgb3V0c2lkZSBvZiB0aGUgY29udGV4dCBvZiBhCisgIC8vIHRlc3QgY2FzZS4gIE9u
bHkgdGhlIGxhc3QgdmFsdWUgZm9yIGEgZ2l2ZW4ga2V5IGlzIHJlbWVtYmVyZWQuICBUaGVzZQor
ICAvLyBhcmUgcHVibGljIHN0YXRpYyBzbyB0aGV5IGNhbiBiZSBjYWxsZWQgZnJvbSB1dGlsaXR5
IGZ1bmN0aW9ucyB0aGF0IGFyZQorICAvLyBub3QgbWVtYmVycyBvZiB0aGUgdGVzdCBmaXh0dXJl
LiAgQ2FsbHMgdG8gUmVjb3JkUHJvcGVydHkgbWFkZSBkdXJpbmcKKyAgLy8gbGlmZXNwYW4gb2Yg
dGhlIHRlc3QgKGZyb20gdGhlIG1vbWVudCBpdHMgY29uc3RydWN0b3Igc3RhcnRzIHRvIHRoZQor
ICAvLyBtb21lbnQgaXRzIGRlc3RydWN0b3IgZmluaXNoZXMpIHdpbGwgYmUgb3V0cHV0IGluIFhN
TCBhcyBhdHRyaWJ1dGVzIG9mCisgIC8vIHRoZSA8dGVzdGNhc2U+IGVsZW1lbnQuICBQcm9wZXJ0
aWVzIHJlY29yZGVkIGZyb20gZml4dHVyZSdzCisgIC8vIFNldFVwVGVzdENhc2Ugb3IgVGVhckRv
d25UZXN0Q2FzZSBhcmUgbG9nZ2VkIGFzIGF0dHJpYnV0ZXMgb2YgdGhlCisgIC8vIGNvcnJlc3Bv
bmRpbmcgPHRlc3RzdWl0ZT4gZWxlbWVudC4gIENhbGxzIHRvIFJlY29yZFByb3BlcnR5IG1hZGUg
aW4gdGhlCisgIC8vIGdsb2JhbCBjb250ZXh0IChiZWZvcmUgb3IgYWZ0ZXIgaW52b2NhdGlvbiBv
ZiBSVU5fQUxMX1RFU1RTIGFuZCBmcm9tCisgIC8vIFNldFVwL1RlYXJEb3duIG1ldGhvZCBvZiBF
bnZpcm9ubWVudCBvYmplY3RzIHJlZ2lzdGVyZWQgd2l0aCBHb29nbGUKKyAgLy8gVGVzdCkgd2ls
bCBiZSBvdXRwdXQgYXMgYXR0cmlidXRlcyBvZiB0aGUgPHRlc3RzdWl0ZXM+IGVsZW1lbnQuCisg
IHN0YXRpYyB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGNvbnN0
IHN0ZDo6c3RyaW5nJiB2YWx1ZSk7CisgIHN0YXRpYyB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0
IHN0ZDo6c3RyaW5nJiBrZXksIGludCB2YWx1ZSk7CiAKICBwcm90ZWN0ZWQ6CiAgIC8vIENyZWF0
ZXMgYSBUZXN0IG9iamVjdC4KQEAgLTQxNywyMCArNDc4LDIzIEBAIGNsYXNzIEdURVNUX0FQSV8g
VGVzdCB7CiAgIC8vIFNldHMgdXAsIGV4ZWN1dGVzLCBhbmQgdGVhcnMgZG93biB0aGUgdGVzdC4K
ICAgdm9pZCBSdW4oKTsKIAotICAvLyBVc2VzIGEgR1Rlc3RGbGFnU2F2ZXIgdG8gc2F2ZSBhbmQg
cmVzdG9yZSBhbGwgR29vZ2xlIFRlc3QgZmxhZ3MuCi0gIGNvbnN0IGludGVybmFsOjpHVGVzdEZs
YWdTYXZlciogY29uc3QgZ3Rlc3RfZmxhZ19zYXZlcl87CisgIC8vIERlbGV0ZXMgc2VsZi4gIFdl
IGRlbGliZXJhdGVseSBwaWNrIGFuIHVudXN1YWwgbmFtZSBmb3IgdGhpcworICAvLyBpbnRlcm5h
bCBtZXRob2QgdG8gYXZvaWQgY2xhc2hpbmcgd2l0aCBuYW1lcyB1c2VkIGluIHVzZXIgVEVTVHMu
CisgIHZvaWQgRGVsZXRlU2VsZl8oKSB7IGRlbGV0ZSB0aGlzOyB9CiAKLSAgLy8gT2Z0ZW4gYSB1
c2VyIG1pcy1zcGVsbHMgU2V0VXAoKSBhcyBTZXR1cCgpIGFuZCBzcGVuZHMgYSBsb25nIHRpbWUK
KyAgY29uc3QgaW50ZXJuYWw6OnNjb3BlZF9wdHI8IEdURVNUX0ZMQUdfU0FWRVJfID4gZ3Rlc3Rf
ZmxhZ19zYXZlcl87CisKKyAgLy8gT2Z0ZW4gYSB1c2VyIG1pc3NwZWxscyBTZXRVcCgpIGFzIFNl
dHVwKCkgYW5kIHNwZW5kcyBhIGxvbmcgdGltZQogICAvLyB3b25kZXJpbmcgd2h5IGl0IGlzIG5l
dmVyIGNhbGxlZCBieSBHb29nbGUgVGVzdC4gIFRoZSBkZWNsYXJhdGlvbiBvZgogICAvLyB0aGUg
Zm9sbG93aW5nIG1ldGhvZCBpcyBzb2xlbHkgZm9yIGNhdGNoaW5nIHN1Y2ggYW4gZXJyb3IgYXQK
ICAgLy8gY29tcGlsZSB0aW1lOgogICAvLwogICAvLyAgIC0gVGhlIHJldHVybiB0eXBlIGlzIGRl
bGliZXJhdGVseSBjaG9zZW4gdG8gYmUgbm90IHZvaWQsIHNvIGl0Ci0gIC8vICAgd2lsbCBiZSBh
IGNvbmZsaWN0IGlmIGEgdXNlciBkZWNsYXJlcyB2b2lkIFNldHVwKCkgaW4gaGlzIHRlc3QKLSAg
Ly8gICBmaXh0dXJlLgorICAvLyAgIHdpbGwgYmUgYSBjb25mbGljdCBpZiB2b2lkIFNldHVwKCkg
aXMgZGVjbGFyZWQgaW4gdGhlIHVzZXIncworICAvLyAgIHRlc3QgZml4dHVyZS4KICAgLy8KICAg
Ly8gICAtIFRoaXMgbWV0aG9kIGlzIHByaXZhdGUsIHNvIGl0IHdpbGwgYmUgYW5vdGhlciBjb21w
aWxlciBlcnJvcgotICAvLyAgIGlmIGEgdXNlciBjYWxscyBpdCBmcm9tIGhpcyB0ZXN0IGZpeHR1
cmUuCisgIC8vICAgaWYgdGhlIG1ldGhvZCBpcyBjYWxsZWQgZnJvbSB0aGUgdXNlcidzIHRlc3Qg
Zml4dHVyZS4KICAgLy8KICAgLy8gRE8gTk9UIE9WRVJSSURFIFRISVMgRlVOQ1RJT04uCiAgIC8v
CkBAIC00NTQsNyArNTE4LDcgQEAgY2xhc3MgVGVzdFByb3BlcnR5IHsKICAgLy8gQyd0b3IuICBU
ZXN0UHJvcGVydHkgZG9lcyBOT1QgaGF2ZSBhIGRlZmF1bHQgY29uc3RydWN0b3IuCiAgIC8vIEFs
d2F5cyB1c2UgdGhpcyBjb25zdHJ1Y3RvciAod2l0aCBwYXJhbWV0ZXJzKSB0byBjcmVhdGUgYQog
ICAvLyBUZXN0UHJvcGVydHkgb2JqZWN0LgotICBUZXN0UHJvcGVydHkoY29uc3QgY2hhciogYV9r
ZXksIGNvbnN0IGNoYXIqIGFfdmFsdWUpIDoKKyAgVGVzdFByb3BlcnR5KGNvbnN0IHN0ZDo6c3Ry
aW5nJiBhX2tleSwgY29uc3Qgc3RkOjpzdHJpbmcmIGFfdmFsdWUpIDoKICAgICBrZXlfKGFfa2V5
KSwgdmFsdWVfKGFfdmFsdWUpIHsKICAgfQogCkBAIC00NjksMTUgKzUzMywxNSBAQCBjbGFzcyBU
ZXN0UHJvcGVydHkgewogICB9CiAKICAgLy8gU2V0cyBhIG5ldyB2YWx1ZSwgb3ZlcnJpZGluZyB0
aGUgb25lIHN1cHBsaWVkIGluIHRoZSBjb25zdHJ1Y3Rvci4KLSAgdm9pZCBTZXRWYWx1ZShjb25z
dCBjaGFyKiBuZXdfdmFsdWUpIHsKKyAgdm9pZCBTZXRWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYg
bmV3X3ZhbHVlKSB7CiAgICAgdmFsdWVfID0gbmV3X3ZhbHVlOwogICB9CiAKICBwcml2YXRlOgog
ICAvLyBUaGUga2V5IHN1cHBsaWVkIGJ5IHRoZSB1c2VyLgotICBpbnRlcm5hbDo6U3RyaW5nIGtl
eV87CisgIHN0ZDo6c3RyaW5nIGtleV87CiAgIC8vIFRoZSB2YWx1ZSBzdXBwbGllZCBieSB0aGUg
dXNlci4KLSAgaW50ZXJuYWw6OlN0cmluZyB2YWx1ZV87CisgIHN0ZDo6c3RyaW5nIHZhbHVlXzsK
IH07CiAKIC8vIFRoZSByZXN1bHQgb2YgYSBzaW5nbGUgVGVzdC4gIFRoaXMgaW5jbHVkZXMgYSBs
aXN0IG9mCkBAIC01MTYsOSArNTgwLDggQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0UmVzdWx0IHsK
ICAgLy8gUmV0dXJucyB0aGUgZWxhcHNlZCB0aW1lLCBpbiBtaWxsaXNlY29uZHMuCiAgIFRpbWVJ
bk1pbGxpcyBlbGFwc2VkX3RpbWUoKSBjb25zdCB7IHJldHVybiBlbGFwc2VkX3RpbWVfOyB9CiAK
LSAgLy8gUmV0dXJucyB0aGUgaS10aCB0ZXN0IHBhcnQgcmVzdWx0IGFtb25nIGFsbCB0aGUgcmVz
dWx0cy4gaSBjYW4gcmFuZ2UKLSAgLy8gZnJvbSAwIHRvIHRlc3RfcHJvcGVydHlfY291bnQoKSAt
IDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIGFib3J0cwotICAvLyB0aGUgcHJvZ3JhbS4K
KyAgLy8gUmV0dXJucyB0aGUgaS10aCB0ZXN0IHBhcnQgcmVzdWx0IGFtb25nIGFsbCB0aGUgcmVz
dWx0cy4gaSBjYW4gcmFuZ2UgZnJvbSAwCisgIC8vIHRvIHRvdGFsX3BhcnRfY291bnQoKSAtIDEu
IElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIGFib3J0cyB0aGUgcHJvZ3JhbS4KICAgY29uc3Qg
VGVzdFBhcnRSZXN1bHQmIEdldFRlc3RQYXJ0UmVzdWx0KGludCBpKSBjb25zdDsKIAogICAvLyBS
ZXR1cm5zIHRoZSBpLXRoIHRlc3QgcHJvcGVydHkuIGkgY2FuIHJhbmdlIGZyb20gMCB0bwpAQCAt
NTI4LDEzICs1OTEsMTQgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0UmVzdWx0IHsKIAogIHByaXZh
dGU6CiAgIGZyaWVuZCBjbGFzcyBUZXN0SW5mbzsKKyAgZnJpZW5kIGNsYXNzIFRlc3RDYXNlOwog
ICBmcmllbmQgY2xhc3MgVW5pdFRlc3Q7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6RGVmYXVs
dEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6
RXhlY0RlYXRoVGVzdDsKLSAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpUZXN0SW5mb0ltcGw7CiAg
IGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VGVzdFJlc3VsdEFjY2Vzc29yOwogICBmcmllbmQgY2xh
c3MgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbDsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpXaW5k
b3dzRGVhdGhUZXN0OworICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkZ1Y2hzaWFEZWF0aFRlc3Q7
CiAKICAgLy8gR2V0cyB0aGUgdmVjdG9yIG9mIFRlc3RQYXJ0UmVzdWx0cy4KICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8VGVzdFBhcnRSZXN1bHQ+JiB0ZXN0X3BhcnRfcmVzdWx0cygpIGNvbnN0IHsKQEAg
LTU1MywxMyArNjE3LDE2IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFJlc3VsdCB7CiAgIC8vIGEg
bm9uLWZhdGFsIGZhaWx1cmUgaWYgaW52YWxpZCAoZS5nLiwgaWYgaXQgY29uZmxpY3RzIHdpdGgg
cmVzZXJ2ZWQKICAgLy8ga2V5IG5hbWVzKS4gSWYgYSBwcm9wZXJ0eSBpcyBhbHJlYWR5IHJlY29y
ZGVkIGZvciB0aGUgc2FtZSBrZXksIHRoZQogICAvLyB2YWx1ZSB3aWxsIGJlIHVwZGF0ZWQsIHJh
dGhlciB0aGFuIHN0b3JpbmcgbXVsdGlwbGUgdmFsdWVzIGZvciB0aGUgc2FtZQotICAvLyBrZXku
Ci0gIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5
KTsKKyAgLy8ga2V5LiAgeG1sX2VsZW1lbnQgc3BlY2lmaWVzIHRoZSBlbGVtZW50IGZvciB3aGlj
aCB0aGUgcHJvcGVydHkgaXMgYmVpbmcKKyAgLy8gcmVjb3JkZWQgYW5kIGlzIHVzZWQgZm9yIHZh
bGlkYXRpb24uCisgIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9l
bGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9w
cm9wZXJ0eSk7CiAKICAgLy8gQWRkcyBhIGZhaWx1cmUgaWYgdGhlIGtleSBpcyBhIHJlc2VydmVk
IGF0dHJpYnV0ZSBvZiBHb29nbGUgVGVzdAogICAvLyB0ZXN0Y2FzZSB0YWdzLiAgUmV0dXJucyB0
cnVlIGlmIHRoZSBwcm9wZXJ0eSBpcyB2YWxpZC4KLSAgLy8gVE9ETyhydXNzcik6IFZhbGlkYXRl
IGF0dHJpYnV0ZSBuYW1lcyBhcmUgbGVnYWwgYW5kIGh1bWFuIHJlYWRhYmxlLgotICBzdGF0aWMg
Ym9vbCBWYWxpZGF0ZVRlc3RQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVy
dHkpOworICAvLyBGSVhNRTogVmFsaWRhdGUgYXR0cmlidXRlIG5hbWVzIGFyZSBsZWdhbCBhbmQg
aHVtYW4gcmVhZGFibGUuCisgIHN0YXRpYyBib29sIFZhbGlkYXRlVGVzdFByb3BlcnR5KGNvbnN0
IHN0ZDo6c3RyaW5nJiB4bWxfZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5KTsKIAogICAvLyBBZGRzIGEg
dGVzdCBwYXJ0IHJlc3VsdCB0byB0aGUgbGlzdC4KICAgdm9pZCBBZGRUZXN0UGFydFJlc3VsdChj
b25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCk7CkBAIC02MTEsMjAgKzY3OCwz
OSBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RJbmZvIHsKICAgflRlc3RJbmZvKCk7CiAKICAgLy8g
UmV0dXJucyB0aGUgdGVzdCBjYXNlIG5hbWUuCi0gIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1l
KCkgY29uc3Q7CisgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lKCkgY29uc3QgeyByZXR1cm4g
dGVzdF9jYXNlX25hbWVfLmNfc3RyKCk7IH0KIAogICAvLyBSZXR1cm5zIHRoZSB0ZXN0IG5hbWUu
Ci0gIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKKyAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG5hbWVfLmNfc3RyKCk7IH0KKworICAvLyBSZXR1cm5zIHRoZSBuYW1lIG9mIHRo
ZSBwYXJhbWV0ZXIgdHlwZSwgb3IgTlVMTCBpZiB0aGlzIGlzIG5vdCBhIHR5cGVkCisgIC8vIG9y
IGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0oKSBj
b25zdCB7CisgICAgaWYgKHR5cGVfcGFyYW1fLmdldCgpICE9IE5VTEwpCisgICAgICByZXR1cm4g
dHlwZV9wYXJhbV8tPmNfc3RyKCk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICAvLyBSZXR1
cm5zIHRoZSB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2YWx1ZSBwYXJhbWV0ZXIsIG9yIE5V
TEwgaWYgdGhpcworICAvLyBpcyBub3QgYSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisgIGNv
bnN0IGNoYXIqIHZhbHVlX3BhcmFtKCkgY29uc3QgeworICAgIGlmICh2YWx1ZV9wYXJhbV8uZ2V0
KCkgIT0gTlVMTCkKKyAgICAgIHJldHVybiB2YWx1ZV9wYXJhbV8tPmNfc3RyKCk7CisgICAgcmV0
dXJuIE5VTEw7CisgIH0KKworICAvLyBSZXR1cm5zIHRoZSBmaWxlIG5hbWUgd2hlcmUgdGhpcyB0
ZXN0IGlzIGRlZmluZWQuCisgIGNvbnN0IGNoYXIqIGZpbGUoKSBjb25zdCB7IHJldHVybiBsb2Nh
dGlvbl8uZmlsZS5jX3N0cigpOyB9CiAKLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIGNvbW1l
bnQuCi0gIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9jb21tZW50KCkgY29uc3Q7CisgIC8vIFJldHVy
bnMgdGhlIGxpbmUgd2hlcmUgdGhpcyB0ZXN0IGlzIGRlZmluZWQuCisgIGludCBsaW5lKCkgY29u
c3QgeyByZXR1cm4gbG9jYXRpb25fLmxpbmU7IH0KIAotICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNv
bW1lbnQuCi0gIGNvbnN0IGNoYXIqIGNvbW1lbnQoKSBjb25zdDsKKyAgLy8gUmV0dXJuIHRydWUg
aWYgdGhpcyB0ZXN0IHNob3VsZCBub3QgYmUgcnVuIGJlY2F1c2UgaXQncyBpbiBhbm90aGVyIHNo
YXJkLgorICBib29sIGlzX2luX2Fub3RoZXJfc2hhcmQoKSBjb25zdCB7IHJldHVybiBpc19pbl9h
bm90aGVyX3NoYXJkXzsgfQogCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRlc3Qgc2hvdWxk
IHJ1biwgdGhhdCBpcyBpZiB0aGUgdGVzdCBpcyBub3QgZGlzYWJsZWQKLSAgLy8gKG9yIGl0IGlz
IGRpc2FibGVkIGJ1dCB0aGUgYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxhZyBoYXMgYmVlbiBz
cGVjaWZpZWQpCi0gIC8vIGFuZCBpdHMgZnVsbCBuYW1lIG1hdGNoZXMgdGhlIHVzZXItc3BlY2lm
aWVkIGZpbHRlci4KKyAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBzaG91bGQgcnVuLCB0
aGF0IGlzIGlmIHRoZSB0ZXN0IGlzIG5vdAorICAvLyBkaXNhYmxlZCAob3IgaXQgaXMgZGlzYWJs
ZWQgYnV0IHRoZSBhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnIGhhcworICAvLyBiZWVuIHNw
ZWNpZmllZCkgYW5kIGl0cyBmdWxsIG5hbWUgbWF0Y2hlcyB0aGUgdXNlci1zcGVjaWZpZWQgZmls
dGVyLgogICAvLwogICAvLyBHb29nbGUgVGVzdCBhbGxvd3MgdGhlIHVzZXIgdG8gZmlsdGVyIHRo
ZSB0ZXN0cyBieSB0aGVpciBmdWxsIG5hbWVzLgogICAvLyBUaGUgZnVsbCBuYW1lIG9mIGEgdGVz
dCBCYXIgaW4gdGVzdCBjYXNlIEZvbyBpcyBkZWZpbmVkIGFzCkBAIC02MzgsMTAgKzcyNCwxNyBA
QCBjbGFzcyBHVEVTVF9BUElfIFRlc3RJbmZvIHsKICAgLy8KICAgLy8gRm9yIGV4YW1wbGUsICpB
KjpGb28uKiBpcyBhIGZpbHRlciB0aGF0IG1hdGNoZXMgYW55IHN0cmluZyB0aGF0CiAgIC8vIGNv
bnRhaW5zIHRoZSBjaGFyYWN0ZXIgJ0EnIG9yIHN0YXJ0cyB3aXRoICJGb28uIi4KLSAgYm9vbCBz
aG91bGRfcnVuKCkgY29uc3Q7CisgIGJvb2wgc2hvdWxkX3J1bigpIGNvbnN0IHsgcmV0dXJuIHNo
b3VsZF9ydW5fOyB9CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIHRlc3Qgd2lsbCBhcHBl
YXIgaW4gdGhlIFhNTCByZXBvcnQuCisgIGJvb2wgaXNfcmVwb3J0YWJsZSgpIGNvbnN0IHsKKyAg
ICAvLyBUaGUgWE1MIHJlcG9ydCBpbmNsdWRlcyB0ZXN0cyBtYXRjaGluZyB0aGUgZmlsdGVyLCBl
eGNsdWRpbmcgdGhvc2UKKyAgICAvLyBydW4gaW4gb3RoZXIgc2hhcmRzLgorICAgIHJldHVybiBt
YXRjaGVzX2ZpbHRlcl8gJiYgIWlzX2luX2Fub3RoZXJfc2hhcmRfOworICB9CiAKICAgLy8gUmV0
dXJucyB0aGUgcmVzdWx0IG9mIHRoZSB0ZXN0LgotICBjb25zdCBUZXN0UmVzdWx0KiByZXN1bHQo
KSBjb25zdDsKKyAgY29uc3QgVGVzdFJlc3VsdCogcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gJnJl
c3VsdF87IH0KIAogIHByaXZhdGU6CiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKQEAgLTY0OSwz
NiArNzQyLDY1IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdEluZm8gewogI2VuZGlmICAvLyBHVEVT
VF9IQVNfREVBVEhfVEVTVAogICBmcmllbmQgY2xhc3MgVGVzdDsKICAgZnJpZW5kIGNsYXNzIFRl
c3RDYXNlOwotICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbDsKICAgZnJpZW5k
IGNsYXNzIGludGVybmFsOjpVbml0VGVzdEltcGw7CisgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6
U3RyZWFtaW5nTGlzdGVuZXJUZXN0OwogICBmcmllbmQgVGVzdEluZm8qIGludGVybmFsOjpNYWtl
QW5kUmVnaXN0ZXJUZXN0SW5mbygKLSAgICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLCBj
b25zdCBjaGFyKiBuYW1lLAotICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX2NvbW1lbnQsIGNv
bnN0IGNoYXIqIGNvbW1lbnQsCisgICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAg
ICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICBjb25zdCBjaGFyKiB0eXBlX3BhcmFtLAorICAg
ICAgY29uc3QgY2hhciogdmFsdWVfcGFyYW0sCisgICAgICBpbnRlcm5hbDo6Q29kZUxvY2F0aW9u
IGNvZGVfbG9jYXRpb24sCiAgICAgICBpbnRlcm5hbDo6VHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQs
CiAgICAgICBUZXN0OjpTZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCiAgICAgICBUZXN0OjpU
ZWFyRG93blRlc3RDYXNlRnVuYyB0ZWFyX2Rvd25fdGMsCiAgICAgICBpbnRlcm5hbDo6VGVzdEZh
Y3RvcnlCYXNlKiBmYWN0b3J5KTsKIAotICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IG1h
dGNoZXMgdGhlIHVzZXItc3BlY2lmaWVkIGZpbHRlci4KLSAgYm9vbCBtYXRjaGVzX2ZpbHRlcigp
IGNvbnN0OworICAvLyBDb25zdHJ1Y3RzIGEgVGVzdEluZm8gb2JqZWN0LiBUaGUgbmV3bHkgY29u
c3RydWN0ZWQgaW5zdGFuY2UgYXNzdW1lcworICAvLyBvd25lcnNoaXAgb2YgdGhlIGZhY3Rvcnkg
b2JqZWN0LgorICBUZXN0SW5mbyhjb25zdCBzdGQ6OnN0cmluZyYgdGVzdF9jYXNlX25hbWUsCisg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAorICAgICAgICAgICBjb25zdCBjaGFy
KiBhX3R5cGVfcGFyYW0sICAgLy8gTlVMTCBpZiBub3QgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVz
dAorICAgICAgICAgICBjb25zdCBjaGFyKiBhX3ZhbHVlX3BhcmFtLCAgLy8gTlVMTCBpZiBub3Qg
YSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QKKyAgICAgICAgICAgaW50ZXJuYWw6OkNvZGVMb2Nh
dGlvbiBhX2NvZGVfbG9jYXRpb24sCisgICAgICAgICAgIGludGVybmFsOjpUeXBlSWQgZml4dHVy
ZV9jbGFzc19pZCwKKyAgICAgICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9y
eSk7CiAKICAgLy8gSW5jcmVtZW50cyB0aGUgbnVtYmVyIG9mIGRlYXRoIHRlc3RzIGVuY291bnRl
cmVkIGluIHRoaXMgdGVzdCBzbwogICAvLyBmYXIuCi0gIGludCBpbmNyZW1lbnRfZGVhdGhfdGVz
dF9jb3VudCgpOworICBpbnQgaW5jcmVtZW50X2RlYXRoX3Rlc3RfY291bnQoKSB7CisgICAgcmV0
dXJuIHJlc3VsdF8uaW5jcmVtZW50X2RlYXRoX3Rlc3RfY291bnQoKTsKKyAgfQogCi0gIC8vIEFj
Y2Vzc29ycyBmb3IgdGhlIGltcGxlbWVudGF0aW9uIG9iamVjdC4KLSAgaW50ZXJuYWw6OlRlc3RJ
bmZvSW1wbCogaW1wbCgpIHsgcmV0dXJuIGltcGxfOyB9Ci0gIGNvbnN0IGludGVybmFsOjpUZXN0
SW5mb0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBpbXBsXzsgfQorICAvLyBDcmVhdGVzIHRo
ZSB0ZXN0IG9iamVjdCwgcnVucyBpdCwgcmVjb3JkcyBpdHMgcmVzdWx0LCBhbmQgdGhlbgorICAv
LyBkZWxldGVzIGl0LgorICB2b2lkIFJ1bigpOwogCi0gIC8vIENvbnN0cnVjdHMgYSBUZXN0SW5m
byBvYmplY3QuIFRoZSBuZXdseSBjb25zdHJ1Y3RlZCBpbnN0YW5jZSBhc3N1bWVzCi0gIC8vIG93
bmVyc2hpcCBvZiB0aGUgZmFjdG9yeSBvYmplY3QuCi0gIFRlc3RJbmZvKGNvbnN0IGNoYXIqIHRl
c3RfY2FzZV9uYW1lLCBjb25zdCBjaGFyKiBuYW1lLAotICAgICAgICAgICBjb25zdCBjaGFyKiB0
ZXN0X2Nhc2VfY29tbWVudCwgY29uc3QgY2hhciogY29tbWVudCwKLSAgICAgICAgICAgaW50ZXJu
YWw6OlR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkLAotICAgICAgICAgICBpbnRlcm5hbDo6VGVzdEZh
Y3RvcnlCYXNlKiBmYWN0b3J5KTsKKyAgc3RhdGljIHZvaWQgQ2xlYXJUZXN0UmVzdWx0KFRlc3RJ
bmZvKiB0ZXN0X2luZm8pIHsKKyAgICB0ZXN0X2luZm8tPnJlc3VsdF8uQ2xlYXIoKTsKKyAgfQog
Ci0gIC8vIEFuIG9wYXF1ZSBpbXBsZW1lbnRhdGlvbiBvYmplY3QuCi0gIGludGVybmFsOjpUZXN0
SW5mb0ltcGwqIGltcGxfOworICAvLyBUaGVzZSBmaWVsZHMgYXJlIGltbXV0YWJsZSBwcm9wZXJ0
aWVzIG9mIHRoZSB0ZXN0LgorICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0X2Nhc2VfbmFtZV87ICAg
ICAvLyBUZXN0IGNhc2UgbmFtZQorICBjb25zdCBzdGQ6OnN0cmluZyBuYW1lXzsgICAgICAgICAg
ICAgICAvLyBUZXN0IG5hbWUKKyAgLy8gTmFtZSBvZiB0aGUgcGFyYW1ldGVyIHR5cGUsIG9yIE5V
TEwgaWYgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhCisgIC8vIHR5cGUtcGFyYW1ldGVyaXplZCB0
ZXN0LgorICBjb25zdCBpbnRlcm5hbDo6c2NvcGVkX3B0cjxjb25zdCA6OnN0ZDo6c3RyaW5nPiB0
eXBlX3BhcmFtXzsKKyAgLy8gVGV4dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFsdWUgcGFyYW1l
dGVyLCBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEKKyAgLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0
ZXN0LgorICBjb25zdCBpbnRlcm5hbDo6c2NvcGVkX3B0cjxjb25zdCA6OnN0ZDo6c3RyaW5nPiB2
YWx1ZV9wYXJhbV87CisgIGludGVybmFsOjpDb2RlTG9jYXRpb24gbG9jYXRpb25fOworICBjb25z
dCBpbnRlcm5hbDo6VHlwZUlkIGZpeHR1cmVfY2xhc3NfaWRfOyAgIC8vIElEIG9mIHRoZSB0ZXN0
IGZpeHR1cmUgY2xhc3MKKyAgYm9vbCBzaG91bGRfcnVuXzsgICAgICAgICAgICAgICAgIC8vIFRy
dWUgaWZmIHRoaXMgdGVzdCBzaG91bGQgcnVuCisgIGJvb2wgaXNfZGlzYWJsZWRfOyAgICAgICAg
ICAgICAgICAvLyBUcnVlIGlmZiB0aGlzIHRlc3QgaXMgZGlzYWJsZWQKKyAgYm9vbCBtYXRjaGVz
X2ZpbHRlcl87ICAgICAgICAgICAgIC8vIFRydWUgaWYgdGhpcyB0ZXN0IG1hdGNoZXMgdGhlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VyLXNwZWNpZmllZCBmaWx0
ZXIuCisgIGJvb2wgaXNfaW5fYW5vdGhlcl9zaGFyZF87ICAgICAgICAvLyBXaWxsIGJlIHJ1biBp
biBhbm90aGVyIHNoYXJkLgorICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBjb25zdCBmYWN0
b3J5XzsgIC8vIFRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB0ZXN0IG9iamVjdAorCisgIC8vIFRoaXMg
ZmllbGQgaXMgbXV0YWJsZSBhbmQgbmVlZHMgdG8gYmUgcmVzZXQgYmVmb3JlIHJ1bm5pbmcgdGhl
CisgIC8vIHRlc3QgZm9yIHRoZSBzZWNvbmQgdGltZS4KKyAgVGVzdFJlc3VsdCByZXN1bHRfOwog
CiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdEluZm8pOwogfTsKQEAgLTY5
Niw5ICs4MTgsMTEgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIEFyZ3VtZW50
czoKICAgLy8KICAgLy8gICBuYW1lOiAgICAgICAgIG5hbWUgb2YgdGhlIHRlc3QgY2FzZQorICAv
LyAgIGFfdHlwZV9wYXJhbTogdGhlIG5hbWUgb2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwg
b3IgTlVMTCBpZgorICAvLyAgICAgICAgICAgICAgICAgdGhpcyBpcyBub3QgYSB0eXBlLXBhcmFt
ZXRlcml6ZWQgdGVzdC4KICAgLy8gICBzZXRfdXBfdGM6ICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0
aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBjYXNlCiAgIC8vICAgdGVhcl9kb3duX3RjOiBwb2lu
dGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQotICBUZXN0
Q2FzZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBjb21tZW50LAorICBUZXN0Q2FzZShj
b25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sCiAgICAgICAgICAgIFRl
c3Q6OlNldFVwVGVzdENhc2VGdW5jIHNldF91cF90YywKICAgICAgICAgICAgVGVzdDo6VGVhckRv
d25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3RjKTsKIApAQCAtNzA4LDggKzgzMiwxMyBAQCBjbGFz
cyBHVEVTVF9BUElfIFRlc3RDYXNlIHsKICAgLy8gR2V0cyB0aGUgbmFtZSBvZiB0aGUgVGVzdENh
c2UuCiAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7IHJldHVybiBuYW1lXy5jX3N0cigpOyB9
CiAKLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIGNvbW1lbnQuCi0gIGNvbnN0IGNoYXIqIGNv
bW1lbnQoKSBjb25zdCB7IHJldHVybiBjb21tZW50Xy5jX3N0cigpOyB9CisgIC8vIFJldHVybnMg
dGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB0eXBlLCBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEK
KyAgLy8gdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZS4KKyAgY29uc3QgY2hhciogdHlwZV9w
YXJhbSgpIGNvbnN0IHsKKyAgICBpZiAodHlwZV9wYXJhbV8uZ2V0KCkgIT0gTlVMTCkKKyAgICAg
IHJldHVybiB0eXBlX3BhcmFtXy0+Y19zdHIoKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQogCiAg
IC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZSBzaG91bGQgcnVu
LgogICBib29sIHNob3VsZF9ydW4oKSBjb25zdCB7IHJldHVybiBzaG91bGRfcnVuXzsgfQpAQCAt
NzIwLDkgKzg0OSwxNSBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RDYXNlIHsKICAgLy8gR2V0cyB0
aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KICAgaW50IGZhaWxl
ZF90ZXN0X2NvdW50KCkgY29uc3Q7CiAKKyAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVk
IHRlc3RzIHRoYXQgd2lsbCBiZSByZXBvcnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJl
cG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8vIEdldHMgdGhlIG51
bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KICAgaW50IGRpc2FibGVk
X3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8g
YmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFibGVfdGVzdF9jb3Vu
dCgpIGNvbnN0OworCiAgIC8vIEdldCB0aGUgbnVtYmVyIG9mIHRlc3RzIGluIHRoaXMgdGVzdCBj
YXNlIHRoYXQgc2hvdWxkIHJ1bi4KICAgaW50IHRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3Q7CiAK
QEAgLTc0Miw2ICs4NzcsMTAgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIHRv
dGFsX3Rlc3RfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMg
TlVMTC4KICAgY29uc3QgVGVzdEluZm8qIEdldFRlc3RJbmZvKGludCBpKSBjb25zdDsKIAorICAv
LyBSZXR1cm5zIHRoZSBUZXN0UmVzdWx0IHRoYXQgaG9sZHMgdGVzdCBwcm9wZXJ0aWVzIHJlY29y
ZGVkIGR1cmluZworICAvLyBleGVjdXRpb24gb2YgU2V0VXBUZXN0Q2FzZSBhbmQgVGVhckRvd25U
ZXN0Q2FzZS4KKyAgY29uc3QgVGVzdFJlc3VsdCYgYWRfaG9jX3Rlc3RfcmVzdWx0KCkgY29uc3Qg
eyByZXR1cm4gYWRfaG9jX3Rlc3RfcmVzdWx0XzsgfQorCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNs
YXNzIFRlc3Q7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsOwpAQCAtNzc2
LDE3ICs5MTUsNDQgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIFJ1bnMgZXZl
cnkgdGVzdCBpbiB0aGlzIFRlc3RDYXNlLgogICB2b2lkIFJ1bigpOwogCisgIC8vIFJ1bnMgU2V0
VXBUZXN0Q2FzZSgpIGZvciB0aGlzIFRlc3RDYXNlLiAgVGhpcyB3cmFwcGVyIGlzIG5lZWRlZAor
ICAvLyBmb3IgY2F0Y2hpbmcgZXhjZXB0aW9ucyB0aHJvd24gZnJvbSBTZXRVcFRlc3RDYXNlKCku
CisgIHZvaWQgUnVuU2V0VXBUZXN0Q2FzZSgpIHsgKCpzZXRfdXBfdGNfKSgpOyB9CisKKyAgLy8g
UnVucyBUZWFyRG93blRlc3RDYXNlKCkgZm9yIHRoaXMgVGVzdENhc2UuICBUaGlzIHdyYXBwZXIg
aXMKKyAgLy8gbmVlZGVkIGZvciBjYXRjaGluZyBleGNlcHRpb25zIHRocm93biBmcm9tIFRlYXJE
b3duVGVzdENhc2UoKS4KKyAgdm9pZCBSdW5UZWFyRG93blRlc3RDYXNlKCkgeyAoKnRlYXJfZG93
bl90Y18pKCk7IH0KKwogICAvLyBSZXR1cm5zIHRydWUgaWZmIHRlc3QgcGFzc2VkLgotICBzdGF0
aWMgYm9vbCBUZXN0UGFzc2VkKGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKTsKKyAgc3RhdGlj
IGJvb2wgVGVzdFBhc3NlZChjb25zdCBUZXN0SW5mbyogdGVzdF9pbmZvKSB7CisgICAgcmV0dXJu
IHRlc3RfaW5mby0+c2hvdWxkX3J1bigpICYmIHRlc3RfaW5mby0+cmVzdWx0KCktPlBhc3NlZCgp
OworICB9CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0IGZhaWxlZC4KLSAgc3RhdGljIGJv
b2wgVGVzdEZhaWxlZChjb25zdCBUZXN0SW5mbyAqIHRlc3RfaW5mbyk7CisgIHN0YXRpYyBib29s
IFRlc3RGYWlsZWQoY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0
X2luZm8tPnNob3VsZF9ydW4oKSAmJiB0ZXN0X2luZm8tPnJlc3VsdCgpLT5GYWlsZWQoKTsKKyAg
fQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgaXMgZGlzYWJsZWQgYW5kIHdpbGwg
YmUgcmVwb3J0ZWQgaW4gdGhlIFhNTAorICAvLyByZXBvcnQuCisgIHN0YXRpYyBib29sIFRlc3RS
ZXBvcnRhYmxlRGlzYWJsZWQoY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVy
biB0ZXN0X2luZm8tPmlzX3JlcG9ydGFibGUoKSAmJiB0ZXN0X2luZm8tPmlzX2Rpc2FibGVkXzsK
KyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGVzdCBpcyBkaXNhYmxlZC4KLSAgc3RhdGlj
IGJvb2wgVGVzdERpc2FibGVkKGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKTsKKyAgc3RhdGlj
IGJvb2wgVGVzdERpc2FibGVkKGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKKyAgICByZXR1
cm4gdGVzdF9pbmZvLT5pc19kaXNhYmxlZF87CisgIH0KKworICAvLyBSZXR1cm5zIHRydWUgaWZm
IHRoaXMgdGVzdCB3aWxsIGFwcGVhciBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgc3RhdGljIGJvb2wg
VGVzdFJlcG9ydGFibGUoY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0
ZXN0X2luZm8tPmlzX3JlcG9ydGFibGUoKTsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0
aGUgZ2l2ZW4gdGVzdCBzaG91bGQgcnVuLgotICBzdGF0aWMgYm9vbCBTaG91bGRSdW5UZXN0KGNv
bnN0IFRlc3RJbmZvICp0ZXN0X2luZm8pOworICBzdGF0aWMgYm9vbCBTaG91bGRSdW5UZXN0KGNv
bnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKKyAgICByZXR1cm4gdGVzdF9pbmZvLT5zaG91bGRf
cnVuKCk7CisgIH0KIAogICAvLyBTaHVmZmxlcyB0aGUgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2Uu
CiAgIHZvaWQgU2h1ZmZsZVRlc3RzKGludGVybmFsOjpSYW5kb20qIHJhbmRvbSk7CkBAIC03OTUs
OSArOTYxLDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdENhc2UgewogICB2b2lkIFVuc2h1ZmZs
ZVRlc3RzKCk7CiAKICAgLy8gTmFtZSBvZiB0aGUgdGVzdCBjYXNlLgotICBpbnRlcm5hbDo6U3Ry
aW5nIG5hbWVfOwotICAvLyBDb21tZW50IG9uIHRoZSB0ZXN0IGNhc2UuCi0gIGludGVybmFsOjpT
dHJpbmcgY29tbWVudF87CisgIHN0ZDo6c3RyaW5nIG5hbWVfOworICAvLyBOYW1lIG9mIHRoZSBw
YXJhbWV0ZXIgdHlwZSwgb3IgTlVMTCBpZiB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEKKyAgLy8g
dHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisgIGNvbnN0IGludGVybmFsOjpzY29wZWRfcHRyPGNv
bnN0IDo6c3RkOjpzdHJpbmc+IHR5cGVfcGFyYW1fOwogICAvLyBUaGUgdmVjdG9yIG9mIFRlc3RJ
bmZvcyBpbiB0aGVpciBvcmlnaW5hbCBvcmRlci4gIEl0IG93bnMgdGhlCiAgIC8vIGVsZW1lbnRz
IGluIHRoZSB2ZWN0b3IuCiAgIHN0ZDo6dmVjdG9yPFRlc3RJbmZvKj4gdGVzdF9pbmZvX2xpc3Rf
OwpAQCAtODEzLDEzICs5ODAsMTYgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIGJv
b2wgc2hvdWxkX3J1bl87CiAgIC8vIEVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBU
aW1lSW5NaWxsaXMgZWxhcHNlZF90aW1lXzsKKyAgLy8gSG9sZHMgdGVzdCBwcm9wZXJ0aWVzIHJl
Y29yZGVkIGR1cmluZyBleGVjdXRpb24gb2YgU2V0VXBUZXN0Q2FzZSBhbmQKKyAgLy8gVGVhckRv
d25UZXN0Q2FzZS4KKyAgVGVzdFJlc3VsdCBhZF9ob2NfdGVzdF9yZXN1bHRfOwogCiAgIC8vIFdl
IGRpc2FsbG93IGNvcHlpbmcgVGVzdENhc2VzLgogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKFRlc3RDYXNlKTsKIH07CiAKIC8vIEFuIEVudmlyb25tZW50IG9iamVjdCBpcyBjYXBh
YmxlIG9mIHNldHRpbmcgdXAgYW5kIHRlYXJpbmcgZG93biBhbgotLy8gZW52aXJvbm1lbnQuICBU
aGUgdXNlciBzaG91bGQgc3ViY2xhc3MgdGhpcyB0byBkZWZpbmUgaGlzIG93bgorLy8gZW52aXJv
bm1lbnQuICBZb3Ugc2hvdWxkIHN1YmNsYXNzIHRoaXMgdG8gZGVmaW5lIHlvdXIgb3duCiAvLyBl
bnZpcm9ubWVudChzKS4KIC8vCiAvLyBBbiBFbnZpcm9ubWVudCBvYmplY3QgZG9lcyB0aGUgc2V0
LXVwIGFuZCB0ZWFyLWRvd24gaW4gdmlydHVhbApAQCAtODQ5LDYgKzEwMTksMTggQEAgY2xhc3Mg
RW52aXJvbm1lbnQgewogICB2aXJ0dWFsIFNldHVwX3Nob3VsZF9iZV9zcGVsbGVkX1NldFVwKiBT
ZXR1cCgpIHsgcmV0dXJuIE5VTEw7IH0KIH07CiAKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwor
CisvLyBFeGNlcHRpb24gd2hpY2ggY2FuIGJlIHRocm93biBmcm9tIFRlc3RFdmVudExpc3RlbmVy
OjpPblRlc3RQYXJ0UmVzdWx0LgorY2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRpb25FeGNlcHRpb24K
KyAgICA6IHB1YmxpYyBpbnRlcm5hbDo6R29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24geworIHB1
YmxpYzoKKyAgZXhwbGljaXQgQXNzZXJ0aW9uRXhjZXB0aW9uKGNvbnN0IFRlc3RQYXJ0UmVzdWx0
JiByZXN1bHQpCisgICAgICA6IEdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uKHJlc3VsdCkge30K
K307CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKKwogLy8gVGhlIGludGVyZmFj
ZSBmb3IgdHJhY2luZyBleGVjdXRpb24gb2YgdGVzdHMuIFRoZSBtZXRob2RzIGFyZSBvcmdhbml6
ZWQgaW4KIC8vIHRoZSBvcmRlciB0aGUgY29ycmVzcG9uZGluZyBldmVudHMgYXJlIGZpcmVkLgog
Y2xhc3MgVGVzdEV2ZW50TGlzdGVuZXIgewpAQCAtODc2LDcgKzEwNTgsOSBAQCBjbGFzcyBUZXN0
RXZlbnRMaXN0ZW5lciB7CiAgIC8vIEZpcmVkIGJlZm9yZSB0aGUgdGVzdCBzdGFydHMuCiAgIHZp
cnR1YWwgdm9pZCBPblRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSA9IDA7CiAK
LSAgLy8gRmlyZWQgYWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VTUygpLgorICAv
LyBGaXJlZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRUVEKCkgaW52b2NhdGlv
bi4KKyAgLy8gSWYgeW91IHdhbnQgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIGZyb20gdGhpcyBmdW5j
dGlvbiB0byBza2lwIHRvIHRoZSBuZXh0CisgIC8vIFRFU1QsIGl0IG11c3QgYmUgQXNzZXJ0aW9u
RXhjZXB0aW9uIGRlZmluZWQgYWJvdmUsIG9yIGluaGVyaXRlZCBmcm9tIGl0LgogICB2aXJ0dWFs
IHZvaWQgT25UZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jl
c3VsdCkgPSAwOwogCiAgIC8vIEZpcmVkIGFmdGVyIHRoZSB0ZXN0IGVuZHMuCkBAIC05NjEsMTAg
KzExNDUsMTAgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0RXZlbnRMaXN0ZW5lcnMgewogCiAgcHJp
dmF0ZToKICAgZnJpZW5kIGNsYXNzIFRlc3RDYXNlOworICBmcmllbmQgY2xhc3MgVGVzdEluZm87
CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6RGVmYXVsdEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVw
b3J0ZXI7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6Tm9FeGVjRGVhdGhUZXN0OwogICBmcmll
bmQgY2xhc3MgaW50ZXJuYWw6OlRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOwotICBmcmllbmQg
Y2xhc3MgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbDsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpV
bml0VGVzdEltcGw7CiAKICAgLy8gUmV0dXJucyByZXBlYXRlciB0aGF0IGJyb2FkY2FzdHMgdGhl
IFRlc3RFdmVudExpc3RlbmVyIGV2ZW50cyB0byBhbGwKQEAgLTEwMzIsMjIgKzEyMTYsMjMgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdCB7CiAKICAgLy8gUmV0dXJucyB0aGUgVGVzdENhc2Ug
b2JqZWN0IGZvciB0aGUgdGVzdCB0aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcsCiAgIC8vIG9yIE5V
TEwgaWYgbm8gdGVzdCBpcyBydW5uaW5nLgotICBjb25zdCBUZXN0Q2FzZSogY3VycmVudF90ZXN0
X2Nhc2UoKSBjb25zdDsKKyAgY29uc3QgVGVzdENhc2UqIGN1cnJlbnRfdGVzdF9jYXNlKCkgY29u
c3QKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4Xyk7CiAKICAgLy8gUmV0dXJucyB0
aGUgVGVzdEluZm8gb2JqZWN0IGZvciB0aGUgdGVzdCB0aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcs
CiAgIC8vIG9yIE5VTEwgaWYgbm8gdGVzdCBpcyBydW5uaW5nLgotICBjb25zdCBUZXN0SW5mbyog
Y3VycmVudF90ZXN0X2luZm8oKSBjb25zdDsKKyAgY29uc3QgVGVzdEluZm8qIGN1cnJlbnRfdGVz
dF9pbmZvKCkgY29uc3QKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4Xyk7CiAKICAg
Ly8gUmV0dXJucyB0aGUgcmFuZG9tIHNlZWQgdXNlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGN1cnJl
bnQgdGVzdCBydW4uCiAgIGludCByYW5kb21fc2VlZCgpIGNvbnN0OwogCi0jaWYgR1RFU1RfSEFT
X1BBUkFNX1RFU1QKICAgLy8gUmV0dXJucyB0aGUgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0
cnkgb2JqZWN0IHVzZWQgdG8ga2VlcCB0cmFjayBvZgogICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVk
IHRlc3RzIGFuZCBpbnN0YW50aWF0ZSBhbmQgcmVnaXN0ZXIgdGhlbS4KICAgLy8KICAgLy8gSU5U
RVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotICBp
bnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkmIHBhcmFtZXRlcml6ZWRfdGVz
dF9yZWdpc3RyeSgpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAorICBpbnRlcm5h
bDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkmIHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdp
c3RyeSgpCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCiAgIC8vIEdldHMg
dGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIHRlc3QgY2FzZXMuCiAgIGludCBzdWNjZXNzZnVsX3Rl
c3RfY2FzZV9jb3VudCgpIGNvbnN0OwpAQCAtMTA2OCwxNSArMTI1MywyNSBAQCBjbGFzcyBHVEVT
VF9BUElfIFVuaXRUZXN0IHsKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cy4K
ICAgaW50IGZhaWxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CiAKKyAgLy8gR2V0cyB0aGUgbnVtYmVy
IG9mIGRpc2FibGVkIHRlc3RzIHRoYXQgd2lsbCBiZSByZXBvcnRlZCBpbiB0aGUgWE1MIHJlcG9y
dC4KKyAgaW50IHJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8v
IEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cy4KICAgaW50IGRpc2FibGVkX3Rlc3Rf
Y291bnQoKSBjb25zdDsKIAorICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJp
bnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNv
bnN0OworCiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdHMuCiAgIGludCB0b3RhbF90
ZXN0X2NvdW50KCkgY29uc3Q7CiAKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRoYXQg
c2hvdWxkIHJ1bi4KICAgaW50IHRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3Q7CiAKKyAgLy8gR2V0
cyB0aGUgdGltZSBvZiB0aGUgdGVzdCBwcm9ncmFtIHN0YXJ0LCBpbiBtcyBmcm9tIHRoZSBzdGFy
dCBvZiB0aGUKKyAgLy8gVU5JWCBlcG9jaC4KKyAgVGltZUluTWlsbGlzIHN0YXJ0X3RpbWVzdGFt
cCgpIGNvbnN0OworCiAgIC8vIEdldHMgdGhlIGVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRz
LgogICBUaW1lSW5NaWxsaXMgZWxhcHNlZF90aW1lKCkgY29uc3Q7CiAKQEAgLTEwOTEsNiArMTI4
NiwxMCBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0IHsKICAgLy8gdG90YWxfdGVzdF9jYXNl
X2NvdW50KCkgLSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCByZXR1cm5zIE5VTEwuCiAg
IGNvbnN0IFRlc3RDYXNlKiBHZXRUZXN0Q2FzZShpbnQgaSkgY29uc3Q7CiAKKyAgLy8gUmV0dXJu
cyB0aGUgVGVzdFJlc3VsdCBjb250YWluaW5nIGluZm9ybWF0aW9uIG9uIHRlc3QgZmFpbHVyZXMg
YW5kCisgIC8vIHByb3BlcnRpZXMgbG9nZ2VkIG91dHNpZGUgb2YgaW5kaXZpZHVhbCB0ZXN0IGNh
c2VzLgorICBjb25zdCBUZXN0UmVzdWx0JiBhZF9ob2NfdGVzdF9yZXN1bHQoKSBjb25zdDsKKwog
ICAvLyBSZXR1cm5zIHRoZSBsaXN0IG9mIGV2ZW50IGxpc3RlbmVycyB0aGF0IGNhbiBiZSB1c2Vk
IHRvIHRyYWNrIGV2ZW50cwogICAvLyBpbnNpZGUgR29vZ2xlIFRlc3QuCiAgIFRlc3RFdmVudExp
c3RlbmVycyYgbGlzdGVuZXJzKCk7CkBAIC0xMTE0LDEyICsxMzEzLDE2IEBAIGNsYXNzIEdURVNU
X0FQSV8gVW5pdFRlc3QgewogICB2b2lkIEFkZFRlc3RQYXJ0UmVzdWx0KFRlc3RQYXJ0UmVzdWx0
OjpUeXBlIHJlc3VsdF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGZpbGVfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZV9udW1iZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyYgbWVzc2FnZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnRlcm5hbDo6U3RyaW5nJiBvc19zdGFj
a190cmFjZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1l
c3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9zX3N0
YWNrX3RyYWNlKQorICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKTsKIAotICAvLyBB
ZGRzIGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0LiBJZiB0
aGUgcmVzdWx0IGFscmVhZHkKLSAgLy8gY29udGFpbnMgYSBwcm9wZXJ0eSB3aXRoIHRoZSBzYW1l
IGtleSwgdGhlIHZhbHVlIHdpbGwgYmUgdXBkYXRlZC4KLSAgdm9pZCBSZWNvcmRQcm9wZXJ0eUZv
ckN1cnJlbnRUZXN0KGNvbnN0IGNoYXIqIGtleSwgY29uc3QgY2hhciogdmFsdWUpOworICAvLyBB
ZGRzIGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0IHdoZW4g
aW52b2tlZCBmcm9tCisgIC8vIGluc2lkZSBhIHRlc3QsIHRvIGN1cnJlbnQgVGVzdENhc2UncyBh
ZF9ob2NfdGVzdF9yZXN1bHRfIHdoZW4gaW52b2tlZAorICAvLyBmcm9tIFNldFVwVGVzdENhc2Ug
b3IgVGVhckRvd25UZXN0Q2FzZSwgb3IgdG8gdGhlIGdsb2JhbCBwcm9wZXJ0eSBzZXQKKyAgLy8g
d2hlbiBpbnZva2VkIGVsc2V3aGVyZS4gIElmIHRoZSByZXN1bHQgYWxyZWFkeSBjb250YWlucyBh
IHByb3BlcnR5IHdpdGgKKyAgLy8gdGhlIHNhbWUga2V5LCB0aGUgdmFsdWUgd2lsbCBiZSB1cGRh
dGVkLgorICB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGNvbnN0
IHN0ZDo6c3RyaW5nJiB2YWx1ZSk7CiAKICAgLy8gR2V0cyB0aGUgaS10aCB0ZXN0IGNhc2UgYW1v
bmcgYWxsIHRoZSB0ZXN0IGNhc2VzLiBpIGNhbiByYW5nZSBmcm9tIDAgdG8KICAgLy8gdG90YWxf
dGVzdF9jYXNlX2NvdW50KCkgLSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCByZXR1cm5z
IE5VTEwuCkBAIC0xMTI5LDE2ICsxMzMyLDE4IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3Qg
ewogICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBpbXBsKCkgeyByZXR1cm4gaW1wbF87IH0KICAg
Y29uc3QgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIGltcGxf
OyB9CiAKLSAgLy8gVGhlc2UgY2xhc3NlcyBhbmQgZnVuY2lvbnMgYXJlIGZyaWVuZHMgYXMgdGhl
eSBuZWVkIHRvIGFjY2VzcyBwcml2YXRlCisgIC8vIFRoZXNlIGNsYXNzZXMgYW5kIGZ1bmN0aW9u
cyBhcmUgZnJpZW5kcyBhcyB0aGV5IG5lZWQgdG8gYWNjZXNzIHByaXZhdGUKICAgLy8gbWVtYmVy
cyBvZiBVbml0VGVzdC4KKyAgZnJpZW5kIGNsYXNzIFNjb3BlZFRyYWNlOwogICBmcmllbmQgY2xh
c3MgVGVzdDsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpBc3NlcnRIZWxwZXI7Ci0gIGZyaWVu
ZCBjbGFzcyBpbnRlcm5hbDo6U2NvcGVkVHJhY2U7CisgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6
U3RyZWFtaW5nTGlzdGVuZXJUZXN0OworICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlVuaXRUZXN0
UmVjb3JkUHJvcGVydHlUZXN0SGVscGVyOwogICBmcmllbmQgRW52aXJvbm1lbnQqIEFkZEdsb2Jh
bFRlc3RFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KTsKICAgZnJpZW5kIGludGVybmFsOjpV
bml0VGVzdEltcGwqIGludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKTsKICAgZnJpZW5kIHZvaWQg
aW50ZXJuYWw6OlJlcG9ydEZhaWx1cmVJblVua25vd25Mb2NhdGlvbigKICAgICAgIFRlc3RQYXJ0
UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAotICAgICAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyYg
bWVzc2FnZSk7CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSk7CiAKICAgLy8gQ3Jl
YXRlcyBhbiBlbXB0eSBVbml0VGVzdC4KICAgVW5pdFRlc3QoKTsKQEAgLTExNDgsMTAgKzEzNTMs
MTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdCB7CiAKICAgLy8gUHVzaGVzIGEgdHJhY2Ug
ZGVmaW5lZCBieSBTQ09QRURfVFJBQ0UoKSBvbiB0byB0aGUgcGVyLXRocmVhZAogICAvLyBHb29n
bGUgVGVzdCB0cmFjZSBzdGFjay4KLSAgdm9pZCBQdXNoR1Rlc3RUcmFjZShjb25zdCBpbnRlcm5h
bDo6VHJhY2VJbmZvJiB0cmFjZSk7CisgIHZvaWQgUHVzaEdUZXN0VHJhY2UoY29uc3QgaW50ZXJu
YWw6OlRyYWNlSW5mbyYgdHJhY2UpCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8p
OwogCiAgIC8vIFBvcHMgYSB0cmFjZSBmcm9tIHRoZSBwZXItdGhyZWFkIEdvb2dsZSBUZXN0IHRy
YWNlIHN0YWNrLgotICB2b2lkIFBvcEdUZXN0VHJhY2UoKTsKKyAgdm9pZCBQb3BHVGVzdFRyYWNl
KCkKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4Xyk7CiAKICAgLy8gUHJvdGVjdHMg
bXV0YWJsZSBzdGF0ZSBpbiAqaW1wbF8uICBUaGlzIGlzIG11dGFibGUgYXMgc29tZSBjb25zdAog
ICAvLyBtZXRob2RzIG5lZWQgdG8gbG9jayBpdCB0b28uCkBAIC0xMjA2LDgyICsxNDEzLDQwIEBA
IEdURVNUX0FQSV8gdm9pZCBJbml0R29vZ2xlVGVzdChpbnQqIGFyZ2MsIHdjaGFyX3QqKiBhcmd2
KTsKIAogbmFtZXNwYWNlIGludGVybmFsIHsKIAotLy8gVGhlc2Ugb3ZlcmxvYWRlZCB2ZXJzaW9u
cyBoYW5kbGUgOjpzdGQ6OnN0cmluZyBhbmQgOjpzdGQ6OndzdHJpbmcuCi1HVEVTVF9BUElfIGlu
bGluZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3QgOjpzdGQ6OnN0cmluZyYg
c3RyKSB7Ci0gIHJldHVybiAoTWVzc2FnZSgpIDw8ICciJyA8PCBzdHIgPDwgJyInKS5HZXRTdHJp
bmcoKTsKLX0KLQotI2lmIEdURVNUX0hBU19TVERfV1NUUklORwotR1RFU1RfQVBJXyBpbmxpbmUg
U3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKGNvbnN0IDo6c3RkOjp3c3RyaW5nJiB3c3Ry
KSB7Ci0gIHJldHVybiAoTWVzc2FnZSgpIDw8ICJMXCIiIDw8IHdzdHIgPDwgJyInKS5HZXRTdHJp
bmcoKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RSSU5HCi0KLS8vIFRoZXNlIG92
ZXJsb2FkZWQgdmVyc2lvbnMgaGFuZGxlIDo6c3RyaW5nIGFuZCA6OndzdHJpbmcuCi0jaWYgR1RF
U1RfSEFTX0dMT0JBTF9TVFJJTkcKLUdURVNUX0FQSV8gaW5saW5lIFN0cmluZyBGb3JtYXRGb3JG
YWlsdXJlTWVzc2FnZShjb25zdCA6OnN0cmluZyYgc3RyKSB7Ci0gIHJldHVybiAoTWVzc2FnZSgp
IDw8ICciJyA8PCBzdHIgPDwgJyInKS5HZXRTdHJpbmcoKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX0dMT0JBTF9TVFJJTkcKLQotI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotR1RFU1Rf
QVBJXyBpbmxpbmUgU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKGNvbnN0IDo6d3N0cmlu
ZyYgd3N0cikgewotICByZXR1cm4gKE1lc3NhZ2UoKSA8PCAiTFwiIiA8PCB3c3RyIDw8ICciJyku
R2V0U3RyaW5nKCk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotCi0v
LyBGb3JtYXRzIGEgY29tcGFyaXNvbiBhc3NlcnRpb24gKGUuZy4gQVNTRVJUX0VRLCBFWFBFQ1Rf
TFQsIGFuZCBldGMpCi0vLyBvcGVyYW5kIHRvIGJlIHVzZWQgaW4gYSBmYWlsdXJlIG1lc3NhZ2Uu
ICBUaGUgdHlwZSAoYnV0IG5vdCB2YWx1ZSkKLS8vIG9mIHRoZSBvdGhlciBvcGVyYW5kIG1heSBh
ZmZlY3QgdGhlIGZvcm1hdC4gIFRoaXMgYWxsb3dzIHVzIHRvCi0vLyBwcmludCBhIGNoYXIqIGFz
IGEgcmF3IHBvaW50ZXIgd2hlbiBpdCBpcyBjb21wYXJlZCBhZ2FpbnN0IGFub3RoZXIKLS8vIGNo
YXIqLCBhbmQgcHJpbnQgaXQgYXMgYSBDIHN0cmluZyB3aGVuIGl0IGlzIGNvbXBhcmVkIGFnYWlu
c3QgYW4KLS8vIHN0ZDo6c3RyaW5nIG9iamVjdCwgZm9yIGV4YW1wbGUuCi0vLwotLy8gVGhlIGRl
ZmF1bHQgaW1wbGVtZW50YXRpb24gaWdub3JlcyB0aGUgdHlwZSBvZiB0aGUgb3RoZXIgb3BlcmFu
ZC4KLS8vIFNvbWUgc3BlY2lhbGl6ZWQgdmVyc2lvbnMgYXJlIHVzZWQgdG8gaGFuZGxlIGZvcm1h
dHRpbmcgd2lkZSBvcgotLy8gbmFycm93IEMgc3RyaW5ncy4KLS8vCi0vLyBJTlRFUk5BTCBJTVBM
RU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCisvLyBTZXBhcmF0ZSB0
aGUgZXJyb3IgZ2VuZXJhdGluZyBjb2RlIGZyb20gdGhlIGNvZGUgcGF0aCB0byByZWR1Y2UgdGhl
IHN0YWNrCisvLyBmcmFtZSBzaXplIG9mIENtcEhlbHBlckVRLiBUaGlzIGhlbHBzIHJlZHVjZSB0
aGUgb3ZlcmhlYWQgb2Ygc29tZSBzYW5pdGl6ZXJzCisvLyB3aGVuIGNhbGxpbmcgRVhQRUNUXyog
aW4gYSB0aWdodCBsb29wLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLVN0
cmluZyBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoY29uc3QgVDEmIHZhbHVlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgLyogb3Ro
ZXJfb3BlcmFuZCAqLykgewotICByZXR1cm4gRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UodmFsdWUp
OworQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRRmFpbHVyZShjb25zdCBjaGFyKiBsaHNfZXhw
cmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
cmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFQxJiBsaHMsIGNvbnN0IFQyJiByaHMpIHsKKyAgcmV0dXJuIEVxRmFpbHVyZShsaHNfZXhwcmVz
c2lvbiwKKyAgICAgICAgICAgICAgICAgICByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAg
ICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UobGhzLCByaHMpLAorICAgICAg
ICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShyaHMsIGxocyks
CisgICAgICAgICAgICAgICAgICAgZmFsc2UpOwogfQogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9u
IGZvciB7QVNTRVJUfEVYUEVDVH1fRVEuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyPgotQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4
cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFs
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGV4cGVj
dGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiBhY3R1YWwpIHsKLSNp
ZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpICAgICAgICAgIC8vIFNhdmVzIHRo
ZSBjdXJyZW50IHdhcm5pbmcgc3RhdGUuCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0Mzg5KSAg
Ly8gVGVtcG9yYXJpbHkgZGlzYWJsZXMgd2FybmluZyBvbgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaC4KLSNlbmRpZgotCi0gIGlmIChl
eHBlY3RlZCA9PSBhY3R1YWwpIHsKK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJFUShjb25zdCBj
aGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
MSYgbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiByaHMpIHsKKyAg
aWYgKGxocyA9PSByaHMpIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9CiAK
LSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHBvcCkgICAgICAgICAgLy8gUmVzdG9y
ZXMgdGhlIHdhcm5pbmcgc3RhdGUuCi0jZW5kaWYKLQotICByZXR1cm4gRXFGYWlsdXJlKGV4cGVj
dGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgYWN0dWFsX2V4cHJlc3Npb24sCi0g
ICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKGV4cGVj
dGVkLCBhY3R1YWwpLAotICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWls
dXJlTWVzc2FnZShhY3R1YWwsIGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAgICAgICBmYWxzZSk7
CisgIHJldHVybiBDbXBIZWxwZXJFUUZhaWx1cmUobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNz
aW9uLCBsaHMsIHJocyk7CiB9CiAKIC8vIFdpdGggdGhpcyBvdmVybG9hZGVkIHZlcnNpb24sIHdl
IGFsbG93IGFub255bW91cyBlbnVtcyB0byBiZSB1c2VkCiAvLyBpbiB7QVNTRVJUfEVYUEVDVH1f
RVEgd2hlbiBjb21waWxlZCB3aXRoIGdjYyA0LCBhcyBhbm9ueW1vdXMgZW51bXMKIC8vIGNhbiBi
ZSBpbXBsaWNpdGx5IGNhc3QgdG8gQmlnZ2VzdEludC4KLUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVz
dWx0IENtcEhlbHBlckVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVz
c2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQg
ZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0
SW50IGFjdHVhbCk7CitHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJFUShjb25z
dCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBsaHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IHJocyk7CiAKIC8vIFRoZSBoZWxwZXIgY2xhc3Mg
Zm9yIHtBU1NFUlR8RVhQRUNUfV9FUS4gIFRoZSB0ZW1wbGF0ZSBhcmd1bWVudAogLy8gbGhzX2lz
X251bGxfbGl0ZXJhbCBpcyB0cnVlIGlmZiB0aGUgZmlyc3QgYXJndW1lbnQgdG8gQVNTRVJUX0VR
KCkKQEAgLTEyOTIsMTIgKzE0NTcsMTEgQEAgY2xhc3MgRXFIZWxwZXIgewogIHB1YmxpYzoKICAg
Ly8gVGhpcyB0ZW1wbGF0aXplZCB2ZXJzaW9uIGlzIGZvciB0aGUgZ2VuZXJhbCBjYXNlLgogICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICBzdGF0aWMgQXNzZXJ0aW9uUmVz
dWx0IENvbXBhcmUoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGV4cGVjdGVkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDImIGFjdHVhbCkgewotICAgIHJldHVy
biBDbXBIZWxwZXJFUShleHBlY3RlZF9leHByZXNzaW9uLCBhY3R1YWxfZXhwcmVzc2lvbiwgZXhw
ZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbCk7CisgIHN0YXRpYyBBc3NlcnRp
b25SZXN1bHQgQ29tcGFyZShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGxocywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiByaHMpIHsKKyAgICByZXR1cm4gQ21wSGVscGVy
RVEobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7CiAgIH0KIAogICAv
LyBXaXRoIHRoaXMgb3ZlcmxvYWRlZCB2ZXJzaW9uLCB3ZSBhbGxvdyBhbm9ueW1vdXMgZW51bXMg
dG8gYmUgdXNlZApAQCAtMTMwNiwxNyArMTQ3MCwxNiBAQCBjbGFzcyBFcUhlbHBlciB7CiAgIC8v
CiAgIC8vIEV2ZW4gdGhvdWdoIGl0cyBib2R5IGxvb2tzIHRoZSBzYW1lIGFzIHRoZSBhYm92ZSB2
ZXJzaW9uLCB3ZQogICAvLyBjYW5ub3QgbWVyZ2UgdGhlIHR3bywgYXMgaXQgd2lsbCBtYWtlIGFu
b255bW91cyBlbnVtcyB1bmhhcHB5LgotICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUo
Y29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgYWN0dWFsKSB7Ci0gICAgcmV0dXJuIENtcEhlbHBl
ckVRKGV4cGVjdGVkX2V4cHJlc3Npb24sIGFjdHVhbF9leHByZXNzaW9uLCBleHBlY3RlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgYWN0dWFsKTsKKyAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBD
b21wYXJlKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGxocywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJpZ2dlc3RJbnQgcmhzKSB7CisgICAgcmV0dXJuIENtcEhlbHBlckVRKGxoc19l
eHByZXNzaW9uLCByaHNfZXhwcmVzc2lvbiwgbGhzLCByaHMpOwogICB9CiB9OwogCiAvLyBUaGlz
IHNwZWNpYWxpemF0aW9uIGlzIHVzZWQgd2hlbiB0aGUgZmlyc3QgYXJndW1lbnQgdG8gQVNTRVJU
X0VRKCkKLS8vIGlzIGEgbnVsbCBwb2ludGVyIGxpdGVyYWwuCisvLyBpcyBhIG51bGwgcG9pbnRl
ciBsaXRlcmFsLCBsaWtlIE5VTEwsIGZhbHNlLCBvciAwLgogdGVtcGxhdGUgPD4KIGNsYXNzIEVx
SGVscGVyPHRydWU+IHsKICBwdWJsaWM6CkBAIC0xMzI1LDI3ICsxNDg4LDUzIEBAIGNsYXNzIEVx
SGVscGVyPHRydWU+IHsKICAgLy8gTk9UIGEgcG9pbnRlciwgZS5nLiBBU1NFUlRfRVEoMCwgQW5J
bnRGdW5jdGlvbigpKSBvcgogICAvLyBFWFBFQ1RfRVEoZmFsc2UsIGFfYm9vbCkuCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gIHN0YXRpYyBBc3NlcnRpb25SZXN1bHQg
Q29tcGFyZShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgZXhwZWN0ZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgYWN0dWFsKSB7Ci0gICAgcmV0dXJuIENt
cEhlbHBlckVRKGV4cGVjdGVkX2V4cHJlc3Npb24sIGFjdHVhbF9leHByZXNzaW9uLCBleHBlY3Rl
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsKTsKKyAgc3RhdGljIEFzc2VydGlvblJl
c3VsdCBDb21wYXJlKAorICAgICAgY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICBj
b25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgIGNvbnN0IFQxJiBsaHMsCisgICAgICBj
b25zdCBUMiYgcmhzLAorICAgICAgLy8gVGhlIGZvbGxvd2luZyBsaW5lIHByZXZlbnRzIHRoaXMg
b3ZlcmxvYWQgZnJvbSBiZWluZyBjb25zaWRlcmVkIGlmIFQyCisgICAgICAvLyBpcyBub3QgYSBw
b2ludGVyIHR5cGUuICBXZSBuZWVkIHRoaXMgYmVjYXVzZSBBU1NFUlRfRVEoTlVMTCwgbXlfcHRy
KQorICAgICAgLy8gZXhwYW5kcyB0byBDb21wYXJlKCIiLCAiIiwgTlVMTCwgbXlfcHRyKSwgd2hp
Y2ggcmVxdWlyZXMgYSBjb252ZXJzaW9uCisgICAgICAvLyB0byBtYXRjaCB0aGUgU2VjcmV0KiBp
biB0aGUgb3RoZXIgb3ZlcmxvYWQsIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBtYWtlCisgICAgICAv
LyB0aGlzIHRlbXBsYXRlIG1hdGNoIGJldHRlci4KKyAgICAgIHR5cGVuYW1lIEVuYWJsZUlmPCFp
c19wb2ludGVyPFQyPjo6dmFsdWU+Ojp0eXBlKiA9IDApIHsKKyAgICByZXR1cm4gQ21wSGVscGVy
RVEobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7CiAgIH0KIAotICAv
LyBUaGlzIHZlcnNpb24gd2lsbCBiZSBwaWNrZWQgd2hlbiB0aGUgc2Vjb25kIGFyZ3VtZW50IHRv
Ci0gIC8vIEFTU0VSVF9FUSgpIGlzIGEgcG9pbnRlciwgZS5nLiBBU1NFUlRfRVEoTlVMTCwgYV9w
b2ludGVyKS4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgc3RhdGlj
IEFzc2VydGlvblJlc3VsdCBDb21wYXJlKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhw
cmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiAvKiBl
eHBlY3RlZCAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQyKiBhY3R1YWwp
IHsKLSAgICAvLyBXZSBhbHJlYWR5IGtub3cgdGhhdCAnZXhwZWN0ZWQnIGlzIGEgbnVsbCBwb2lu
dGVyLgotICAgIHJldHVybiBDbXBIZWxwZXJFUShleHBlY3RlZF9leHByZXNzaW9uLCBhY3R1YWxf
ZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VDIqPihOVUxM
KSwgYWN0dWFsKTsKKyAgLy8gVGhpcyB2ZXJzaW9uIHdpbGwgYmUgcGlja2VkIHdoZW4gdGhlIHNl
Y29uZCBhcmd1bWVudCB0byBBU1NFUlRfRVEoKSBpcyBhCisgIC8vIHBvaW50ZXIsIGUuZy4gQVNT
RVJUX0VRKE5VTEwsIGFfcG9pbnRlcikuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGF0
aWMgQXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUoCisgICAgICBjb25zdCBjaGFyKiBsaHNfZXhwcmVz
c2lvbiwKKyAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgLy8gV2UgdXNl
ZCB0byBoYXZlIGEgc2Vjb25kIHRlbXBsYXRlIHBhcmFtZXRlciBpbnN0ZWFkIG9mIFNlY3JldCou
ICBUaGF0CisgICAgICAvLyB0ZW1wbGF0ZSBwYXJhbWV0ZXIgd291bGQgZGVkdWNlIHRvICdsb25n
JywgbWFraW5nIHRoaXMgYSBiZXR0ZXIgbWF0Y2gKKyAgICAgIC8vIHRoYW4gdGhlIGZpcnN0IG92
ZXJsb2FkIGV2ZW4gd2l0aG91dCB0aGUgZmlyc3Qgb3ZlcmxvYWQncyBFbmFibGVJZi4KKyAgICAg
IC8vIFVuZm9ydHVuYXRlbHksIGdjYyB3aXRoIC1XY29udmVyc2lvbi1udWxsIHdhcm5zIHdoZW4g
InBhc3NpbmcgTlVMTCB0bworICAgICAgLy8gbm9uLXBvaW50ZXIgYXJndW1lbnQiIChldmVuIGEg
ZGVkdWNlZCBpbnRlZ3JhbCBhcmd1bWVudCksIHNvIHRoZSBvbGQKKyAgICAgIC8vIGltcGxlbWVu
dGF0aW9uIGNhdXNlZCB3YXJuaW5ncyBpbiB1c2VyIGNvZGUuCisgICAgICBTZWNyZXQqIC8qIGxo
cyAoTlVMTCkgKi8sCisgICAgICBUKiByaHMpIHsKKyAgICAvLyBXZSBhbHJlYWR5IGtub3cgdGhh
dCAnbGhzJyBpcyBhIG51bGwgcG9pbnRlci4KKyAgICByZXR1cm4gQ21wSGVscGVyRVEobGhzX2V4
cHJlc3Npb24sIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxUKj4oTlVMTCksIHJocyk7CiAgIH0KIH07CiAKKy8vIFNlcGFyYXRlIHRoZSBlcnJvciBn
ZW5lcmF0aW5nIGNvZGUgZnJvbSB0aGUgY29kZSBwYXRoIHRvIHJlZHVjZSB0aGUgc3RhY2sKKy8v
IGZyYW1lIHNpemUgb2YgQ21wSGVscGVyT1AuIFRoaXMgaGVscHMgcmVkdWNlIHRoZSBvdmVyaGVh
ZCBvZiBzb21lIHNhbml0aXplcnMKKy8vIHdoZW4gY2FsbGluZyBFWFBFQ1RfT1AgaW4gYSB0aWdo
dCBsb29wLgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK0Fzc2VydGlvblJl
c3VsdCBDbXBIZWxwZXJPcEZhaWx1cmUoY29uc3QgY2hhciogZXhwcjEsIGNvbnN0IGNoYXIqIGV4
cHIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgdmFsMSwg
Y29uc3QgVDImIHZhbDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIG9wKSB7CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgICAgIDw8ICJF
eHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgIiA8PCBvcCA8PCAiICgiIDw8IGV4cHIyCisgICAg
ICAgICA8PCAiKSwgYWN0dWFsOiAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2Fn
ZSh2YWwxLCB2YWwyKQorICAgICAgICAgPDwgIiB2cyAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZSh2YWwyLCB2YWwxKTsKK30KKwogLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50
aW5nIHRoZSBoZWxwZXIgZnVuY3Rpb25zIG5lZWRlZCB0byBpbXBsZW1lbnQKIC8vIEFTU0VSVF8/
PyBhbmQgRVhQRUNUXz8/LiAgSXQgaXMgaGVyZSBqdXN0IHRvIGF2b2lkIGNvcHktYW5kLXBhc3Rl
CiAvLyBvZiBzaW1pbGFyIGNvZGUuCkBAIC0xMzU2LDYgKzE1NDUsNyBAQCBjbGFzcyBFcUhlbHBl
cjx0cnVlPiB7CiAvLyB3aXRoIGdjYyA0LgogLy8KIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9O
IC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KKwogI2RlZmluZSBHVEVTVF9JTVBMX0NN
UF9IRUxQRVJfKG9wX25hbWUsIG9wKVwKIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDI+XAogQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlciMjb3BfbmFtZShjb25zdCBjaGFyKiBleHBy
MSwgY29uc3QgY2hhciogZXhwcjIsIFwKQEAgLTEzNjMsMTEgKzE1NTMsNyBAQCBBc3NlcnRpb25S
ZXN1bHQgQ21wSGVscGVyIyNvcF9uYW1lKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFyKiBl
eHByMiwgXAogICBpZiAodmFsMSBvcCB2YWwyKSB7XAogICAgIHJldHVybiBBc3NlcnRpb25TdWNj
ZXNzKCk7XAogICB9IGVsc2Uge1wKLSAgICBNZXNzYWdlIG1zZztcCi0gICAgbXNnIDw8ICJFeHBl
Y3RlZDogKCIgPDwgZXhwcjEgPDwgIikgIiAjb3AgIiAoIiA8PCBleHByMlwKLSAgICAgICAgPDwg
IiksIGFjdHVhbDogIiA8PCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UodmFsMSwg
dmFsMilcCi0gICAgICAgIDw8ICIgdnMgIiA8PCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2UodmFsMiwgdmFsMSk7XAotICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7XAor
ICAgIHJldHVybiBDbXBIZWxwZXJPcEZhaWx1cmUoZXhwcjEsIGV4cHIyLCB2YWwxLCB2YWwyLCAj
b3ApO1wKICAgfVwKIH1cCiBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXIjI29w
X25hbWUoXApAQCAtMTM4MCwyOSArMTU2NiwyOSBAQCBHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKE5F
LCAhPSk7CiAvLyBJbXBsZW1lbnRzIHRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQ
RUNUfV9MRQogR1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhMRSwgPD0pOwogLy8gSW1wbGVtZW50cyB0
aGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fTFQKLUdURVNUX0lNUExfQ01Q
X0hFTFBFUl8oTFQsIDwgKTsKK0dURVNUX0lNUExfQ01QX0hFTFBFUl8oTFQsIDwpOwogLy8gSW1w
bGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fR0UKIEdURVNU
X0lNUExfQ01QX0hFTFBFUl8oR0UsID49KTsKIC8vIEltcGxlbWVudHMgdGhlIGhlbHBlciBmdW5j
dGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X0dUCi1HVEVTVF9JTVBMX0NNUF9IRUxQRVJfKEdULCA+
ICk7CitHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKEdULCA+KTsKIAogI3VuZGVmIEdURVNUX0lNUExf
Q01QX0hFTFBFUl8KIAogLy8gVGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9
X1NUUkVRLgogLy8KIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBB
IFVTRVIgUFJPR1JBTS4KLUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVR
KGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
YWN0dWFsKTsKK0dURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0
IGNoYXIqIHMxX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBzMl9leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMik7CiAKIC8vIFRoZSBoZWxwZXIg
ZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9TVFJDQVNFRVEuCiAvLwogLy8gSU5URVJOQUwg
SU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotR1RFU1RfQVBJ
XyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSQ0FTRUVRKGNvbnN0IGNoYXIqIGV4cGVjdGVk
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsKTsK
K0dURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VFUShjb25zdCBjaGFy
KiBzMV9leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHMyX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczIpOwogCiAvLyBUaGUg
aGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fU1RSTkUuCiAvLwpAQCAtMTQyNCwx
MCArMTYxMCwxMCBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJDQVNF
TkUoY29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgKl9T
VFJFUSBvbiB3aWRlIHN0cmluZ3MuCiAvLwogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBE
TyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQg
Q21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHBy
ZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
d2NoYXJfdCogZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB3Y2hhcl90KiBhY3R1YWwpOworR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQg
Q21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMyX2V4cHJlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiBz
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFy
X3QqIHMyKTsKIAogLy8gSGVscGVyIGZ1bmN0aW9uIGZvciAqX1NUUk5FIG9uIHdpZGUgc3RyaW5n
cy4KIC8vCkBAIC0xNDg1LDI4ICsxNjcxLDI4IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLwog
Ly8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFN
LgogdGVtcGxhdGUgPHR5cGVuYW1lIFJhd1R5cGU+Ci1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVy
RmxvYXRpbmdQb2ludEVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHBy
ZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdUeXBl
IGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdU
eXBlIGFjdHVhbCkgewotICBjb25zdCBGbG9hdGluZ1BvaW50PFJhd1R5cGU+IGxocyhleHBlY3Rl
ZCksIHJocyhhY3R1YWwpOworQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckZsb2F0aW5nUG9pbnRF
UShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhd1R5cGUgbGhzX3ZhbHVlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdUeXBlIHJoc192YWx1ZSkgeworICBj
b25zdCBGbG9hdGluZ1BvaW50PFJhd1R5cGU+IGxocyhsaHNfdmFsdWUpLCByaHMocmhzX3ZhbHVl
KTsKIAogICBpZiAobGhzLkFsbW9zdEVxdWFscyhyaHMpKSB7CiAgICAgcmV0dXJuIEFzc2VydGlv
blN1Y2Nlc3MoKTsKICAgfQogCi0gIFN0clN0cmVhbSBleHBlY3RlZF9zczsKLSAgZXhwZWN0ZWRf
c3MgPDwgc3RkOjpzZXRwcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxSYXdUeXBlPjo6ZGln
aXRzMTAgKyAyKQotICAgICAgICAgICAgICA8PCBleHBlY3RlZDsKKyAgOjpzdGQ6OnN0cmluZ3N0
cmVhbSBsaHNfc3M7CisgIGxoc19zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNf
bGltaXRzPFJhd1R5cGU+OjpkaWdpdHMxMCArIDIpCisgICAgICAgICA8PCBsaHNfdmFsdWU7CiAK
LSAgU3RyU3RyZWFtIGFjdHVhbF9zczsKLSAgYWN0dWFsX3NzIDw8IHN0ZDo6c2V0cHJlY2lzaW9u
KHN0ZDo6bnVtZXJpY19saW1pdHM8UmF3VHlwZT46OmRpZ2l0czEwICsgMikKLSAgICAgICAgICAg
IDw8IGFjdHVhbDsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSByaHNfc3M7CisgIHJoc19zcyA8PCBz
dGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+OjpkaWdpdHMxMCAr
IDIpCisgICAgICAgICA8PCByaHNfdmFsdWU7CiAKLSAgcmV0dXJuIEVxRmFpbHVyZShleHBlY3Rl
ZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIGFjdHVhbF9leHByZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgIFN0clN0cmVhbVRvU3RyaW5nKCZleHBlY3RlZF9zcyksCi0gICAgICAg
ICAgICAgICAgICAgU3RyU3RyZWFtVG9TdHJpbmcoJmFjdHVhbF9zcyksCisgIHJldHVybiBFcUZh
aWx1cmUobGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24s
CisgICAgICAgICAgICAgICAgICAgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJmxoc19zcyksCisgICAg
ICAgICAgICAgICAgICAgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnJoc19zcyksCiAgICAgICAgICAg
ICAgICAgICAgZmFsc2UpOwogfQogCkBAIC0xNTQ4LDkgKzE3MzQsOSBAQCBjbGFzcyBHVEVTVF9B
UElfIEFzc2VydEhlbHBlciB7CiAgICAgICAgIDogdHlwZSh0KSwgZmlsZShzcmNmaWxlKSwgbGlu
ZShsaW5lX251bSksIG1lc3NhZ2UobXNnKSB7IH0KIAogICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBl
IGNvbnN0IHR5cGU7Ci0gICAgY29uc3QgY2hhciogICAgICAgIGNvbnN0IGZpbGU7Ci0gICAgaW50
ICAgICAgICAgICAgICAgIGNvbnN0IGxpbmU7Ci0gICAgU3RyaW5nICAgICAgICAgICAgIGNvbnN0
IG1lc3NhZ2U7CisgICAgY29uc3QgY2hhciogY29uc3QgZmlsZTsKKyAgICBpbnQgY29uc3QgbGlu
ZTsKKyAgICBzdGQ6OnN0cmluZyBjb25zdCBtZXNzYWdlOwogCiAgICBwcml2YXRlOgogICAgIEdU
RVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQXNzZXJ0SGVscGVyRGF0YSk7CkBAIC0xNTYz
LDEwICsxNzQ5LDEzIEBAIGNsYXNzIEdURVNUX0FQSV8gQXNzZXJ0SGVscGVyIHsKIAogfSAgLy8g
bmFtZXNwYWNlIGludGVybmFsCiAKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotLy8gVGhlIGFi
c3RyYWN0IGJhc2UgY2xhc3MgdGhhdCBhbGwgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBpbmhl
cml0IGZyb20uCisvLyBUaGUgcHVyZSBpbnRlcmZhY2UgY2xhc3MgdGhhdCBhbGwgdmFsdWUtcGFy
YW1ldGVyaXplZCB0ZXN0cyBpbmhlcml0IGZyb20uCisvLyBBIHZhbHVlLXBhcmFtZXRlcml6ZWQg
Y2xhc3MgbXVzdCBpbmhlcml0IGZyb20gYm90aCA6OnRlc3Rpbmc6OlRlc3QgYW5kCisvLyA6OnRl
c3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZS4gSW4gbW9zdCBjYXNlcyB0aGF0IGp1c3QgbWVhbnMg
aW5oZXJpdGluZworLy8gZnJvbSA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW0sIGJ1dCBtb3JlIGNv
bXBsaWNhdGVkIHRlc3QgaGllcmFyY2hpZXMKKy8vIG1heSBuZWVkIHRvIGluaGVyaXQgZnJvbSBU
ZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UgYXQgZGlmZmVyZW50IGxldmVscy4KIC8vCi0vLyBU
aGlzIGNsYXNzIGFkZHMgc3VwcG9ydCBmb3IgYWNjZXNzaW5nIHRoZSB0ZXN0IHBhcmFtZXRlciB2
YWx1ZSB2aWEKKy8vIFRoaXMgaW50ZXJmYWNlIGhhcyBzdXBwb3J0IGZvciBhY2Nlc3NpbmcgdGhl
IHRlc3QgcGFyYW1ldGVyIHZhbHVlIHZpYQogLy8gdGhlIEdldFBhcmFtKCkgbWV0aG9kLgogLy8K
IC8vIFVzZSBpdCB3aXRoIG9uZSBvZiB0aGUgcGFyYW1ldGVyIGdlbmVyYXRvciBkZWZpbmluZyBm
dW5jdGlvbnMsIGxpa2UgUmFuZ2UoKSwKQEAgLTE1OTUsMTMgKzE3ODQsMjIgQEAgY2xhc3MgR1RF
U1RfQVBJXyBBc3NlcnRIZWxwZXIgewogLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoT25lVG9U
ZW5SYW5nZSwgRm9vVGVzdCwgOjp0ZXN0aW5nOjpSYW5nZSgxLCAxMCkpOwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLWNsYXNzIFRlc3RXaXRoUGFyYW0gOiBwdWJsaWMgVGVzdCB7CitjbGFzcyBX
aXRoUGFyYW1JbnRlcmZhY2UgewogIHB1YmxpYzoKICAgdHlwZWRlZiBUIFBhcmFtVHlwZTsKKyAg
dmlydHVhbCB+V2l0aFBhcmFtSW50ZXJmYWNlKCkge30KIAogICAvLyBUaGUgY3VycmVudCBwYXJh
bWV0ZXIgdmFsdWUuIElzIGFsc28gYXZhaWxhYmxlIGluIHRoZSB0ZXN0IGZpeHR1cmUncwotICAv
LyBjb25zdHJ1Y3Rvci4KLSAgY29uc3QgUGFyYW1UeXBlJiBHZXRQYXJhbSgpIGNvbnN0IHsgcmV0
dXJuICpwYXJhbWV0ZXJfOyB9CisgIC8vIGNvbnN0cnVjdG9yLiBUaGlzIG1lbWJlciBmdW5jdGlv
biBpcyBub24tc3RhdGljLCBldmVuIHRob3VnaCBpdCBvbmx5CisgIC8vIHJlZmVyZW5jZXMgc3Rh
dGljIGRhdGEsIHRvIHJlZHVjZSB0aGUgb3Bwb3J0dW5pdHkgZm9yIGluY29ycmVjdCB1c2VzCisg
IC8vIGxpa2Ugd3JpdGluZyAnV2l0aFBhcmFtSW50ZXJmYWNlPGJvb2w+OjpHZXRQYXJhbSgpJyBm
b3IgYSB0ZXN0IHRoYXQKKyAgLy8gdXNlcyBhIGZpeHR1cmUgd2hvc2UgcGFyYW1ldGVyIHR5cGUg
aXMgaW50LgorICBjb25zdCBQYXJhbVR5cGUmIEdldFBhcmFtKCkgY29uc3QgeworICAgIEdURVNU
X0NIRUNLXyhwYXJhbWV0ZXJfICE9IE5VTEwpCisgICAgICAgIDw8ICJHZXRQYXJhbSgpIGNhbiBv
bmx5IGJlIGNhbGxlZCBpbnNpZGUgYSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QgIgorICAgICAg
ICA8PCAiLS0gZGlkIHlvdSBpbnRlbmQgdG8gd3JpdGUgVEVTVF9QIGluc3RlYWQgb2YgVEVTVF9G
PyI7CisgICAgcmV0dXJuICpwYXJhbWV0ZXJfOworICB9CiAKICBwcml2YXRlOgogICAvLyBTZXRz
IHBhcmFtZXRlciB2YWx1ZS4gVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgbWFraW5nIHN1
cmUgdGhlIHZhbHVlCkBAIC0xNjEzLDE0ICsxODExLDE5IEBAIGNsYXNzIFRlc3RXaXRoUGFyYW0g
OiBwdWJsaWMgVGVzdCB7CiAgIC8vIFN0YXRpYyB2YWx1ZSB1c2VkIGZvciBhY2Nlc3NpbmcgcGFy
YW1ldGVyIGR1cmluZyBhIHRlc3QgbGlmZXRpbWUuCiAgIHN0YXRpYyBjb25zdCBQYXJhbVR5cGUq
IHBhcmFtZXRlcl87CiAKLSAgLy8gVGVzdENsYXNzIG11c3QgYmUgYSBzdWJjbGFzcyBvZiBUZXN0
V2l0aFBhcmFtPFQ+LgorICAvLyBUZXN0Q2xhc3MgbXVzdCBiZSBhIHN1YmNsYXNzIG9mIFdpdGhQ
YXJhbUludGVyZmFjZTxUPiBhbmQgVGVzdC4KICAgdGVtcGxhdGUgPGNsYXNzIFRlc3RDbGFzcz4g
ZnJpZW5kIGNsYXNzIGludGVybmFsOjpQYXJhbWV0ZXJpemVkVGVzdEZhY3Rvcnk7CiB9OwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRl
cl8gPSBOVUxMOworY29uc3QgVCogV2l0aFBhcmFtSW50ZXJmYWNlPFQ+OjpwYXJhbWV0ZXJfID0g
TlVMTDsKKworLy8gTW9zdCB2YWx1ZS1wYXJhbWV0ZXJpemVkIGNsYXNzZXMgY2FuIGlnbm9yZSB0
aGUgZXhpc3RlbmNlIG9mCisvLyBXaXRoUGFyYW1JbnRlcmZhY2UsIGFuZCBjYW4ganVzdCBpbmhl
cml0IGZyb20gOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtLgogCi0jZW5kaWYgIC8vIEdURVNUX0hB
U19QQVJBTV9URVNUCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFRlc3RXaXRoUGFyYW0g
OiBwdWJsaWMgVGVzdCwgcHVibGljIFdpdGhQYXJhbUludGVyZmFjZTxUPiB7Cit9OwogCiAvLyBN
YWNyb3MgZm9yIGluZGljYXRpbmcgc3VjY2Vzcy9mYWlsdXJlIGluIHRlc3QgY29kZS4KIApAQCAt
MTY0MCwyMyArMTg0MywyMyBAQCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJf
ID0gTlVMTDsKIC8vIHVzdWFsbHkgd2FudCB0aGUgZmFpbC1mYXN0IGJlaGF2aW9yIG9mIEZBSUwg
YW5kIEFTU0VSVF8qLCBidXQgdGhvc2UKIC8vIHdyaXRpbmcgZGF0YS1kcml2ZW4gdGVzdHMgb2Z0
ZW4gZmluZCB0aGVtc2VsdmVzIHVzaW5nIEFERF9GQUlMVVJFCiAvLyBhbmQgRVhQRUNUXyogbW9y
ZS4KLS8vCi0vLyBFeGFtcGxlczoKLS8vCi0vLyAgIEVYUEVDVF9UUlVFKHNlcnZlci5TdGF0dXNJ
c09LKCkpOwotLy8gICBBU1NFUlRfRkFMU0Uoc2VydmVyLkhhc1BlbmRpbmdSZXF1ZXN0KHBvcnQp
KQotLy8gICAgICAgPDwgIlRoZXJlIGFyZSBzdGlsbCBwZW5kaW5nIHJlcXVlc3RzICIgPDwgIm9u
IHBvcnQgIiA8PCBwb3J0OwogCiAvLyBHZW5lcmF0ZXMgYSBub25mYXRhbCBmYWlsdXJlIHdpdGgg
YSBnZW5lcmljIG1lc3NhZ2UuCiAjZGVmaW5lIEFERF9GQUlMVVJFKCkgR1RFU1RfTk9ORkFUQUxf
RkFJTFVSRV8oIkZhaWxlZCIpCiAKKy8vIEdlbmVyYXRlcyBhIG5vbmZhdGFsIGZhaWx1cmUgYXQg
dGhlIGdpdmVuIHNvdXJjZSBmaWxlIGxvY2F0aW9uIHdpdGgKKy8vIGEgZ2VuZXJpYyBtZXNzYWdl
LgorI2RlZmluZSBBRERfRkFJTFVSRV9BVChmaWxlLCBsaW5lKSBcCisgIEdURVNUX01FU1NBR0Vf
QVRfKGZpbGUsIGxpbmUsICJGYWlsZWQiLCBcCisgICAgICAgICAgICAgICAgICAgIDo6dGVzdGlu
Zzo6VGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUpCisKIC8vIEdlbmVyYXRlcyBhIGZh
dGFsIGZhaWx1cmUgd2l0aCBhIGdlbmVyaWMgbWVzc2FnZS4KICNkZWZpbmUgR1RFU1RfRkFJTCgp
IEdURVNUX0ZBVEFMX0ZBSUxVUkVfKCJGYWlsZWQiKQogCiAvLyBEZWZpbmUgdGhpcyBtYWNybyB0
byAxIHRvIG9taXQgdGhlIGRlZmluaXRpb24gb2YgRkFJTCgpLCB3aGljaCBpcyBhCiAvLyBnZW5l
cmljIG5hbWUgYW5kIGNsYXNoZXMgd2l0aCBzb21lIG90aGVyIGxpYnJhcmllcy4KICNpZiAhR1RF
U1RfRE9OVF9ERUZJTkVfRkFJTAotI2RlZmluZSBGQUlMKCkgR1RFU1RfRkFJTCgpCisjIGRlZmlu
ZSBGQUlMKCkgR1RFU1RfRkFJTCgpCiAjZW5kaWYKIAogLy8gR2VuZXJhdGVzIGEgc3VjY2VzcyB3
aXRoIGEgZ2VuZXJpYyBtZXNzYWdlLgpAQCAtMTY2NSw3ICsxODY4LDcgQEAgY29uc3QgVCogVGVz
dFdpdGhQYXJhbTxUPjo6cGFyYW1ldGVyXyA9IE5VTEw7CiAvLyBEZWZpbmUgdGhpcyBtYWNybyB0
byAxIHRvIG9taXQgdGhlIGRlZmluaXRpb24gb2YgU1VDQ0VFRCgpLCB3aGljaAogLy8gaXMgYSBn
ZW5lcmljIG5hbWUgYW5kIGNsYXNoZXMgd2l0aCBzb21lIG90aGVyIGxpYnJhcmllcy4KICNpZiAh
R1RFU1RfRE9OVF9ERUZJTkVfU1VDQ0VFRAotI2RlZmluZSBTVUNDRUVEKCkgR1RFU1RfU1VDQ0VF
RCgpCisjIGRlZmluZSBTVUNDRUVEKCkgR1RFU1RfU1VDQ0VFRCgpCiAjZW5kaWYKIAogLy8gTWFj
cm9zIGZvciB0ZXN0aW5nIGV4Y2VwdGlvbnMuCkBAIC0xNzA2LDE4ICsxOTA5LDE0IEBAIGNvbnN0
IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogICBHVEVTVF9URVNUX0JP
T0xFQU5fKCEoY29uZGl0aW9uKSwgI2NvbmRpdGlvbiwgdHJ1ZSwgZmFsc2UsIFwKICAgICAgICAg
ICAgICAgICAgICAgICBHVEVTVF9GQVRBTF9GQUlMVVJFXykKIAotLy8gSW5jbHVkZXMgdGhlIGF1
dG8tZ2VuZXJhdGVkIGhlYWRlciB0aGF0IGltcGxlbWVudHMgYSBmYW1pbHkgb2YKLS8vIGdlbmVy
aWMgcHJlZGljYXRlIGFzc2VydGlvbiBtYWNyb3MuCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3RfcHJl
ZF9pbXBsLmg+Ci0KIC8vIE1hY3JvcyBmb3IgdGVzdGluZyBlcXVhbGl0aWVzIGFuZCBpbmVxdWFs
aXRpZXMuCiAvLwotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fRVEoZXhwZWN0ZWQsIGFjdHVhbCk6
IFRlc3RzIHRoYXQgZXhwZWN0ZWQgPT0gYWN0dWFsCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9O
RSh2MSwgdjIpOiAgICAgICAgICAgVGVzdHMgdGhhdCB2MSAhPSB2MgotLy8gICAgKiB7QVNTRVJU
fEVYUEVDVH1fTFQodjEsIHYyKTogICAgICAgICAgIFRlc3RzIHRoYXQgdjEgPCB2MgotLy8gICAg
KiB7QVNTRVJUfEVYUEVDVH1fTEUodjEsIHYyKTogICAgICAgICAgIFRlc3RzIHRoYXQgdjEgPD0g
djIKLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0dUKHYxLCB2Mik6ICAgICAgICAgICBUZXN0cyB0
aGF0IHYxID4gdjIKLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0dFKHYxLCB2Mik6ICAgICAgICAg
ICBUZXN0cyB0aGF0IHYxID49IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9FUSh2MSwgdjIp
OiBUZXN0cyB0aGF0IHYxID09IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9ORSh2MSwgdjIp
OiBUZXN0cyB0aGF0IHYxICE9IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9MVCh2MSwgdjIp
OiBUZXN0cyB0aGF0IHYxIDwgdjIKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0xFKHYxLCB2Mik6
IFRlc3RzIHRoYXQgdjEgPD0gdjIKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0dUKHYxLCB2Mik6
IFRlc3RzIHRoYXQgdjEgPiB2MgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fR0UodjEsIHYyKTog
VGVzdHMgdGhhdCB2MSA+PSB2MgogLy8KIC8vIFdoZW4gdGhleSBhcmUgbm90LCBHb29nbGUgVGVz
dCBwcmludHMgYm90aCB0aGUgdGVzdGVkIGV4cHJlc3Npb25zIGFuZAogLy8gdGhlaXIgYWN0dWFs
IHZhbHVlcy4gIFRoZSB2YWx1ZXMgbXVzdCBiZSBjb21wYXRpYmxlIGJ1aWx0LWluIHR5cGVzLApA
QCAtMTczOSw4ICsxOTM4LDggQEAgY29uc3QgVCogVGVzdFdpdGhQYXJhbTxUPjo6cGFyYW1ldGVy
XyA9IE5VTEw7CiAvLyAgIGFyZSByZWxhdGVkLCBub3QgaG93IHRoZWlyIGNvbnRlbnQgaXMgcmVs
YXRlZC4gIFRvIGNvbXBhcmUgdHdvIEMKIC8vICAgc3RyaW5ncyBieSBjb250ZW50LCB1c2Uge0FT
U0VSVHxFWFBFQ1R9X1NUUiooKS4KIC8vCi0vLyAgIDMuIHtBU1NFUlR8RVhQRUNUfV9FUShleHBl
Y3RlZCwgYWN0dWFsKSBpcyBwcmVmZXJyZWQgdG8KLS8vICAge0FTU0VSVHxFWFBFQ1R9X1RSVUUo
ZXhwZWN0ZWQgPT0gYWN0dWFsKSwgYXMgdGhlIGZvcm1lciB0ZWxscyB5b3UKKy8vICAgMy4ge0FT
U0VSVHxFWFBFQ1R9X0VRKHYxLCB2MikgaXMgcHJlZmVycmVkIHRvCisvLyAgIHtBU1NFUlR8RVhQ
RUNUfV9UUlVFKHYxID09IHYyKSwgYXMgdGhlIGZvcm1lciB0ZWxscyB5b3UKIC8vICAgd2hhdCB0
aGUgYWN0dWFsIHZhbHVlIGlzIHdoZW4gaXQgZmFpbHMsIGFuZCBzaW1pbGFybHkgZm9yIHRoZQog
Ly8gICBvdGhlciBjb21wYXJpc29ucy4KIC8vCkBAIC0xNzUxLDE3ICsxOTUwLDE3IEBAIGNvbnN0
IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogLy8KIC8vIEV4YW1wbGVz
OgogLy8KLS8vICAgRVhQRUNUX05FKDUsIEZvbygpKTsKLS8vICAgRVhQRUNUX0VRKE5VTEwsIGFf
cG9pbnRlcik7CisvLyAgIEVYUEVDVF9ORShGb28oKSwgNSk7CisvLyAgIEVYUEVDVF9FUShhX3Bv
aW50ZXIsIE5VTEwpOwogLy8gICBBU1NFUlRfTFQoaSwgYXJyYXlfc2l6ZSk7CiAvLyAgIEFTU0VS
VF9HVChyZWNvcmRzLnNpemUoKSwgMCkgPDwgIlRoZXJlIGlzIG5vIHJlY29yZCBsZWZ0LiI7CiAK
LSNkZWZpbmUgRVhQRUNUX0VRKGV4cGVjdGVkLCBhY3R1YWwpIFwKKyNkZWZpbmUgRVhQRUNUX0VR
KHZhbDEsIHZhbDIpIFwKICAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFs
OjogXAotICAgICAgICAgICAgICAgICAgICAgIEVxSGVscGVyPEdURVNUX0lTX05VTExfTElURVJB
TF8oZXhwZWN0ZWQpPjo6Q29tcGFyZSwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
LCBhY3R1YWwpCi0jZGVmaW5lIEVYUEVDVF9ORShleHBlY3RlZCwgYWN0dWFsKSBcCi0gIEVYUEVD
VF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyTkUsIGV4cGVjdGVk
LCBhY3R1YWwpCisgICAgICAgICAgICAgICAgICAgICAgRXFIZWxwZXI8R1RFU1RfSVNfTlVMTF9M
SVRFUkFMXyh2YWwxKT46OkNvbXBhcmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICB2YWwxLCB2
YWwyKQorI2RlZmluZSBFWFBFQ1RfTkUodmFsMSwgdmFsMikgXAorICBFWFBFQ1RfUFJFRF9GT1JN
QVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlck5FLCB2YWwxLCB2YWwyKQogI2RlZmlu
ZSBFWFBFQ1RfTEUodmFsMSwgdmFsMikgXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkNtcEhlbHBlckxFLCB2YWwxLCB2YWwyKQogI2RlZmluZSBFWFBFQ1RfTFQo
dmFsMSwgdmFsMikgXApAQCAtMTc3MSwyMiArMTk3MCw0OSBAQCBjb25zdCBUKiBUZXN0V2l0aFBh
cmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKICNkZWZpbmUgRVhQRUNUX0dUKHZhbDEsIHZhbDIp
IFwKICAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJH
VCwgdmFsMSwgdmFsMikKIAotI2RlZmluZSBBU1NFUlRfRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAor
I2RlZmluZSBHVEVTVF9BU1NFUlRfRVEodmFsMSwgdmFsMikgXAogICBBU1NFUlRfUFJFRF9GT1JN
QVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OiBcCi0gICAgICAgICAgICAgICAgICAgICAgRXFIZWxw
ZXI8R1RFU1RfSVNfTlVMTF9MSVRFUkFMXyhleHBlY3RlZCk+OjpDb21wYXJlLCBcCi0gICAgICAg
ICAgICAgICAgICAgICAgZXhwZWN0ZWQsIGFjdHVhbCkKLSNkZWZpbmUgQVNTRVJUX05FKHZhbDEs
IHZhbDIpIFwKKyAgICAgICAgICAgICAgICAgICAgICBFcUhlbHBlcjxHVEVTVF9JU19OVUxMX0xJ
VEVSQUxfKHZhbDEpPjo6Q29tcGFyZSwgXAorICAgICAgICAgICAgICAgICAgICAgIHZhbDEsIHZh
bDIpCisjZGVmaW5lIEdURVNUX0FTU0VSVF9ORSh2YWwxLCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVE
X0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyTkUsIHZhbDEsIHZhbDIpCi0j
ZGVmaW5lIEFTU0VSVF9MRSh2YWwxLCB2YWwyKSBcCisjZGVmaW5lIEdURVNUX0FTU0VSVF9MRSh2
YWwxLCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
Q21wSGVscGVyTEUsIHZhbDEsIHZhbDIpCi0jZGVmaW5lIEFTU0VSVF9MVCh2YWwxLCB2YWwyKSBc
CisjZGVmaW5lIEdURVNUX0FTU0VSVF9MVCh2YWwxLCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZP
Uk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyTFQsIHZhbDEsIHZhbDIpCi0jZGVm
aW5lIEFTU0VSVF9HRSh2YWwxLCB2YWwyKSBcCisjZGVmaW5lIEdURVNUX0FTU0VSVF9HRSh2YWwx
LCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21w
SGVscGVyR0UsIHZhbDEsIHZhbDIpCi0jZGVmaW5lIEFTU0VSVF9HVCh2YWwxLCB2YWwyKSBcCisj
ZGVmaW5lIEdURVNUX0FTU0VSVF9HVCh2YWwxLCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1B
VDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyR1QsIHZhbDEsIHZhbDIpCiAKLS8vIEMg
U3RyaW5nIENvbXBhcmlzb25zLiAgQWxsIHRlc3RzIHRyZWF0IE5VTEwgYW5kIGFueSBub24tTlVM
TCBzdHJpbmcKKy8vIERlZmluZSBtYWNybyBHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfWFkgdG8g
MSB0byBvbWl0IHRoZSBkZWZpbml0aW9uIG9mCisvLyBBU1NFUlRfWFkoKSwgd2hpY2ggY2xhc2hl
cyB3aXRoIHNvbWUgdXNlcnMnIG93biBjb2RlLgorCisjaWYgIUdURVNUX0RPTlRfREVGSU5FX0FT
U0VSVF9FUQorIyBkZWZpbmUgQVNTRVJUX0VRKHZhbDEsIHZhbDIpIEdURVNUX0FTU0VSVF9FUSh2
YWwxLCB2YWwyKQorI2VuZGlmCisKKyNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX05FCisj
IGRlZmluZSBBU1NFUlRfTkUodmFsMSwgdmFsMikgR1RFU1RfQVNTRVJUX05FKHZhbDEsIHZhbDIp
CisjZW5kaWYKKworI2lmICFHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfTEUKKyMgZGVmaW5lIEFT
U0VSVF9MRSh2YWwxLCB2YWwyKSBHVEVTVF9BU1NFUlRfTEUodmFsMSwgdmFsMikKKyNlbmRpZgor
CisjaWYgIUdURVNUX0RPTlRfREVGSU5FX0FTU0VSVF9MVAorIyBkZWZpbmUgQVNTRVJUX0xUKHZh
bDEsIHZhbDIpIEdURVNUX0FTU0VSVF9MVCh2YWwxLCB2YWwyKQorI2VuZGlmCisKKyNpZiAhR1RF
U1RfRE9OVF9ERUZJTkVfQVNTRVJUX0dFCisjIGRlZmluZSBBU1NFUlRfR0UodmFsMSwgdmFsMikg
R1RFU1RfQVNTRVJUX0dFKHZhbDEsIHZhbDIpCisjZW5kaWYKKworI2lmICFHVEVTVF9ET05UX0RF
RklORV9BU1NFUlRfR1QKKyMgZGVmaW5lIEFTU0VSVF9HVCh2YWwxLCB2YWwyKSBHVEVTVF9BU1NF
UlRfR1QodmFsMSwgdmFsMikKKyNlbmRpZgorCisvLyBDLXN0cmluZyBDb21wYXJpc29ucy4gIEFs
bCB0ZXN0cyB0cmVhdCBOVUxMIGFuZCBhbnkgbm9uLU5VTEwgc3RyaW5nCiAvLyBhcyBkaWZmZXJl
bnQuICBUd28gTlVMTHMgYXJlIGVxdWFsLgogLy8KIC8vICAgICoge0FTU0VSVHxFWFBFQ1R9X1NU
UkVRKHMxLCBzMik6ICAgICBUZXN0cyB0aGF0IHMxID09IHMyCkBAIC0xODAyLDI5ICsyMDI4LDI5
IEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogLy8KIC8v
IFRoZXNlIG1hY3JvcyBldmFsdWF0ZSB0aGVpciBhcmd1bWVudHMgZXhhY3RseSBvbmNlLgogCi0j
ZGVmaW5lIEVYUEVDVF9TVFJFUShleHBlY3RlZCwgYWN0dWFsKSBcCi0gIEVYUEVDVF9QUkVEX0ZP
Uk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSRVEsIGV4cGVjdGVkLCBhY3R1
YWwpCisjZGVmaW5lIEVYUEVDVF9TVFJFUShzMSwgczIpIFwKKyAgRVhQRUNUX1BSRURfRk9STUFU
Mig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJFUSwgczEsIHMyKQogI2RlZmluZSBF
WFBFQ1RfU1RSTkUoczEsIHMyKSBcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6Q21wSGVscGVyU1RSTkUsIHMxLCBzMikKLSNkZWZpbmUgRVhQRUNUX1NUUkNBU0VF
UShleHBlY3RlZCwgYWN0dWFsKSBcCi0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6Q21wSGVscGVyU1RSQ0FTRUVRLCBleHBlY3RlZCwgYWN0dWFsKQorI2RlZmluZSBF
WFBFQ1RfU1RSQ0FTRUVRKHMxLCBzMikgXAorICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkNBU0VFUSwgczEsIHMyKQogI2RlZmluZSBFWFBFQ1Rf
U1RSQ0FTRU5FKHMxLCBzMilcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRl
cm5hbDo6Q21wSGVscGVyU1RSQ0FTRU5FLCBzMSwgczIpCiAKLSNkZWZpbmUgQVNTRVJUX1NUUkVR
KGV4cGVjdGVkLCBhY3R1YWwpIFwKLSAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6Omlu
dGVybmFsOjpDbXBIZWxwZXJTVFJFUSwgZXhwZWN0ZWQsIGFjdHVhbCkKKyNkZWZpbmUgQVNTRVJU
X1NUUkVRKHMxLCBzMikgXAorICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJu
YWw6OkNtcEhlbHBlclNUUkVRLCBzMSwgczIpCiAjZGVmaW5lIEFTU0VSVF9TVFJORShzMSwgczIp
IFwKICAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJT
VFJORSwgczEsIHMyKQotI2RlZmluZSBBU1NFUlRfU1RSQ0FTRUVRKGV4cGVjdGVkLCBhY3R1YWwp
IFwKLSAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJT
VFJDQVNFRVEsIGV4cGVjdGVkLCBhY3R1YWwpCisjZGVmaW5lIEFTU0VSVF9TVFJDQVNFRVEoczEs
IHMyKSBcCisgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVs
cGVyU1RSQ0FTRUVRLCBzMSwgczIpCiAjZGVmaW5lIEFTU0VSVF9TVFJDQVNFTkUoczEsIHMyKVwK
ICAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJD
QVNFTkUsIHMxLCBzMikKIAogLy8gTWFjcm9zIGZvciBjb21wYXJpbmcgZmxvYXRpbmctcG9pbnQg
bnVtYmVycy4KIC8vCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9GTE9BVF9FUShleHBlY3RlZCwg
YWN0dWFsKToKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0ZMT0FUX0VRKHZhbDEsIHZhbDIpOgog
Ly8gICAgICAgICBUZXN0cyB0aGF0IHR3byBmbG9hdCB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbC4K
LS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0RPVUJMRV9FUShleHBlY3RlZCwgYWN0dWFsKToKKy8v
ICAgICoge0FTU0VSVHxFWFBFQ1R9X0RPVUJMRV9FUSh2YWwxLCB2YWwyKToKIC8vICAgICAgICAg
VGVzdHMgdGhhdCB0d28gZG91YmxlIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsLgogLy8gICAgKiB7
QVNTRVJUfEVYUEVDVH1fTkVBUih2MSwgdjIsIGFic19lcnJvcik6CiAvLyAgICAgICAgIFRlc3Rz
IHRoYXQgdjEgYW5kIHYyIGFyZSB3aXRoaW4gdGhlIGdpdmVuIGRpc3RhbmNlIHRvIGVhY2ggb3Ro
ZXIuCkBAIC0xODM0LDIxICsyMDYwLDIxIEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBh
cmFtZXRlcl8gPSBOVUxMOwogLy8gRmxvYXRpbmdQb2ludCB0ZW1wbGF0ZSBjbGFzcyBpbiBndGVz
dC1pbnRlcm5hbC5oIGlmIHlvdSBhcmUKIC8vIGludGVyZXN0ZWQgaW4gdGhlIGltcGxlbWVudGF0
aW9uIGRldGFpbHMuCiAKLSNkZWZpbmUgRVhQRUNUX0ZMT0FUX0VRKGV4cGVjdGVkLCBhY3R1YWwp
XAorI2RlZmluZSBFWFBFQ1RfRkxPQVRfRVEodmFsMSwgdmFsMilcCiAgIEVYUEVDVF9QUkVEX0ZP
Uk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyRmxvYXRpbmdQb2ludEVRPGZsb2F0
PiwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLCBhY3R1YWwpCisgICAgICAgICAg
ICAgICAgICAgICAgdmFsMSwgdmFsMikKIAotI2RlZmluZSBFWFBFQ1RfRE9VQkxFX0VRKGV4cGVj
dGVkLCBhY3R1YWwpXAorI2RlZmluZSBFWFBFQ1RfRE9VQkxFX0VRKHZhbDEsIHZhbDIpXAogICBF
WFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckZsb2F0aW5n
UG9pbnRFUTxkb3VibGU+LCBcCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQsIGFjdHVh
bCkKKyAgICAgICAgICAgICAgICAgICAgICB2YWwxLCB2YWwyKQogCi0jZGVmaW5lIEFTU0VSVF9G
TE9BVF9FUShleHBlY3RlZCwgYWN0dWFsKVwKKyNkZWZpbmUgQVNTRVJUX0ZMT0FUX0VRKHZhbDEs
IHZhbDIpXAogICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhl
bHBlckZsb2F0aW5nUG9pbnRFUTxmbG9hdD4sIFwKLSAgICAgICAgICAgICAgICAgICAgICBleHBl
Y3RlZCwgYWN0dWFsKQorICAgICAgICAgICAgICAgICAgICAgIHZhbDEsIHZhbDIpCiAKLSNkZWZp
bmUgQVNTRVJUX0RPVUJMRV9FUShleHBlY3RlZCwgYWN0dWFsKVwKKyNkZWZpbmUgQVNTRVJUX0RP
VUJMRV9FUSh2YWwxLCB2YWwyKVwKICAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6Omlu
dGVybmFsOjpDbXBIZWxwZXJGbG9hdGluZ1BvaW50RVE8ZG91YmxlPiwgXAotICAgICAgICAgICAg
ICAgICAgICAgIGV4cGVjdGVkLCBhY3R1YWwpCisgICAgICAgICAgICAgICAgICAgICAgdmFsMSwg
dmFsMikKIAogI2RlZmluZSBFWFBFQ1RfTkVBUih2YWwxLCB2YWwyLCBhYnNfZXJyb3IpXAogICBF
WFBFQ1RfUFJFRF9GT1JNQVQzKDo6dGVzdGluZzo6aW50ZXJuYWw6OkRvdWJsZU5lYXJQcmVkRm9y
bWF0LCBcCkBAIC0xODgyLDE2ICsyMTA4LDE2IEBAIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0
IERvdWJsZUxFKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwKIC8vIGV4cGVj
dGVkIHJlc3VsdCBhbmQgdGhlIGFjdHVhbCByZXN1bHQgd2l0aCBib3RoIGEgaHVtYW4tcmVhZGFi
bGUKIC8vIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZXJyb3IsIGlmIGF2YWlsYWJsZSwg
YXMgd2VsbCBhcyB0aGUKIC8vIGhleCByZXN1bHQgY29kZS4KLSNkZWZpbmUgRVhQRUNUX0hSRVNV
TFRfU1VDQ0VFREVEKGV4cHIpIFwKKyMgZGVmaW5lIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChl
eHByKSBcCiAgICAgRVhQRUNUX1BSRURfRk9STUFUMSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hS
RVNVTFRTdWNjZXNzLCAoZXhwcikpCiAKLSNkZWZpbmUgQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVE
KGV4cHIpIFwKKyMgZGVmaW5lIEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChleHByKSBcCiAgICAg
QVNTRVJUX1BSRURfRk9STUFUMSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hSRVNVTFRTdWNjZXNz
LCAoZXhwcikpCiAKLSNkZWZpbmUgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKGV4cHIpIFwKKyMgZGVm
aW5lIEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChleHByKSBcCiAgICAgRVhQRUNUX1BSRURfRk9STUFU
MSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hSRVNVTFRGYWlsdXJlLCAoZXhwcikpCiAKLSNkZWZp
bmUgQVNTRVJUX0hSRVNVTFRfRkFJTEVEKGV4cHIpIFwKKyMgZGVmaW5lIEFTU0VSVF9IUkVTVUxU
X0ZBSUxFRChleHByKSBcCiAgICAgQVNTRVJUX1BSRURfRk9STUFUMSg6OnRlc3Rpbmc6OmludGVy
bmFsOjpJc0hSRVNVTFRGYWlsdXJlLCAoZXhwcikpCiAKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lO
RE9XUwpAQCAtMTkxMSw2ICsyMTM3LDU3IEBAIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IERv
dWJsZUxFKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwKICNkZWZpbmUgRVhQ
RUNUX05PX0ZBVEFMX0ZBSUxVUkUoc3RhdGVtZW50KSBcCiAgICAgR1RFU1RfVEVTVF9OT19GQVRB
TF9GQUlMVVJFXyhzdGF0ZW1lbnQsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVfKQogCisvLyBDYXVz
ZXMgYSB0cmFjZSAoaW5jbHVkaW5nIHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBwYXRoIGFuZCBsaW5l
IG51bWJlciwKKy8vIGFuZCB0aGUgZ2l2ZW4gbWVzc2FnZSkgdG8gYmUgaW5jbHVkZWQgaW4gZXZl
cnkgdGVzdCBmYWlsdXJlIG1lc3NhZ2UgZ2VuZXJhdGVkCisvLyBieSBjb2RlIGluIHRoZSBzY29w
ZSBvZiB0aGUgbGlmZXRpbWUgb2YgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy4gVGhlIGVmZmVj
dAorLy8gaXMgdW5kb25lIHdpdGggdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZS4KKy8v
CisvLyBUaGUgbWVzc2FnZSBhcmd1bWVudCBjYW4gYmUgYW55dGhpbmcgc3RyZWFtYWJsZSB0byBz
dGQ6Om9zdHJlYW0uCisvLworLy8gRXhhbXBsZToKKy8vICAgdGVzdGluZzo6U2NvcGVkVHJhY2Ug
dHJhY2UoImZpbGUuY2MiLCAxMjMsICJtZXNzYWdlIik7CisvLworY2xhc3MgR1RFU1RfQVBJXyBT
Y29wZWRUcmFjZSB7CisgcHVibGljOgorICAvLyBUaGUgYyd0b3IgcHVzaGVzIHRoZSBnaXZlbiBz
b3VyY2UgZmlsZSBsb2NhdGlvbiBhbmQgbWVzc2FnZSBvbnRvCisgIC8vIGEgdHJhY2Ugc3RhY2sg
bWFpbnRhaW5lZCBieSBHb29nbGUgVGVzdC4KKworICAvLyBUZW1wbGF0ZSB2ZXJzaW9uLiBVc2Vz
IE1lc3NhZ2UoKSB0byBjb252ZXJ0IHRoZSB2YWx1ZXMgaW50byBzdHJpbmdzLgorICAvLyBTbG93
LCBidXQgZmxleGlibGUuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBTY29wZWRUcmFjZShj
b25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgVCYgbWVzc2FnZSkgeworICAgIFB1c2hU
cmFjZShmaWxlLCBsaW5lLCAoTWVzc2FnZSgpIDw8IG1lc3NhZ2UpLkdldFN0cmluZygpKTsKKyAg
fQorCisgIC8vIE9wdGltaXplIGZvciBzb21lIGtub3duIHR5cGVzLgorICBTY29wZWRUcmFjZShj
b25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogbWVzc2FnZSkgeworICAgIFB1
c2hUcmFjZShmaWxlLCBsaW5lLCBtZXNzYWdlID8gbWVzc2FnZSA6ICIobnVsbCkiKTsKKyAgfQor
CisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKyAgU2NvcGVkVHJhY2UoY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUsIGNvbnN0IDo6c3RyaW5nJiBtZXNzYWdlKSB7CisgICAgUHVzaFRyYWNl
KGZpbGUsIGxpbmUsIG1lc3NhZ2UpOworICB9CisjZW5kaWYKKworICBTY29wZWRUcmFjZShjb25z
dCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsKKyAg
ICBQdXNoVHJhY2UoZmlsZSwgbGluZSwgbWVzc2FnZSk7CisgIH0KKworICAvLyBUaGUgZCd0b3Ig
cG9wcyB0aGUgaW5mbyBwdXNoZWQgYnkgdGhlIGMndG9yLgorICAvLworICAvLyBOb3RlIHRoYXQg
dGhlIGQndG9yIGlzIG5vdCB2aXJ0dWFsIGluIG9yZGVyIHRvIGJlIGVmZmljaWVudC4KKyAgLy8g
RG9uJ3QgaW5oZXJpdCBmcm9tIFNjb3BlZFRyYWNlIQorICB+U2NvcGVkVHJhY2UoKTsKKworIHBy
aXZhdGU6CisgIHZvaWQgUHVzaFRyYWNlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBzdGQ6
OnN0cmluZyBtZXNzYWdlKTsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNj
b3BlZFRyYWNlKTsKK30gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF87ICAvLyBBIFNjb3BlZFRyYWNl
IG9iamVjdCBkb2VzIGl0cyBqb2IgaW4gaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gYyd0b3IgYW5kIGQndG9yLiAgVGhlcmVmb3JlIGl0IGRvZXNuJ3QKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBuZWVkIHRvIGJlIHVzZWQgb3RoZXJ3aXNlLgorCiAvLyBDYXVzZXMg
YSB0cmFjZSAoaW5jbHVkaW5nIHRoZSBzb3VyY2UgZmlsZSBwYXRoLCB0aGUgY3VycmVudCBsaW5l
CiAvLyBudW1iZXIsIGFuZCB0aGUgZ2l2ZW4gbWVzc2FnZSkgdG8gYmUgaW5jbHVkZWQgaW4gZXZl
cnkgdGVzdCBmYWlsdXJlCiAvLyBtZXNzYWdlIGdlbmVyYXRlZCBieSBjb2RlIGluIHRoZSBjdXJy
ZW50IHNjb3BlLiAgVGhlIGVmZmVjdCBpcwpAQCAtMTkyMiwyMCArMjE5OSwxNCBAQCBHVEVTVF9B
UElfIEFzc2VydGlvblJlc3VsdCBEb3VibGVMRShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hh
ciogZXhwcjIsCiAvLyBvZiB0aGUgZHVtbXkgdmFyaWFibGUgbmFtZSwgdGh1cyBhbGxvd2luZyBt
dWx0aXBsZSBTQ09QRURfVFJBQ0UoKXMKIC8vIHRvIGFwcGVhciBpbiB0aGUgc2FtZSBibG9jayAt
IGFzIGxvbmcgYXMgdGhleSBhcmUgb24gZGlmZmVyZW50CiAvLyBsaW5lcy4KKy8vCisvLyBBc3N1
bWluZyB0aGF0IGVhY2ggdGhyZWFkIG1haW50YWlucyBpdHMgb3duIHN0YWNrIG9mIHRyYWNlcy4K
Ky8vIFRoZXJlZm9yZSwgYSBTQ09QRURfVFJBQ0UoKSB3b3VsZCAoY29ycmVjdGx5KSBvbmx5IGFm
ZmVjdCB0aGUKKy8vIGFzc2VydGlvbnMgaW4gaXRzIG93biB0aHJlYWQuCiAjZGVmaW5lIFNDT1BF
RF9UUkFDRShtZXNzYWdlKSBcCi0gIDo6dGVzdGluZzo6aW50ZXJuYWw6OlNjb3BlZFRyYWNlIEdU
RVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfdHJhY2VfLCBfX0xJTkVfXykoXAotICAgIF9fRklMRV9f
LCBfX0xJTkVfXywgOjp0ZXN0aW5nOjpNZXNzYWdlKCkgPDwgKG1lc3NhZ2UpKQotCi1uYW1lc3Bh
Y2UgaW50ZXJuYWwgewotCi0vLyBUaGlzIHRlbXBsYXRlIGlzIGRlY2xhcmVkLCBidXQgaW50ZW50
aW9uYWxseSB1bmRlZmluZWQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgot
c3RydWN0IFN0YXRpY0Fzc2VydFR5cGVFcUhlbHBlcjsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1zdHJ1Y3QgU3RhdGljQXNzZXJ0VHlwZUVxSGVscGVyPFQsIFQ+IHt9OworICA6OnRlc3Rpbmc6
OlNjb3BlZFRyYWNlIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfdHJhY2VfLCBfX0xJTkVfXyko
XAorICAgIF9fRklMRV9fLCBfX0xJTkVfXywgKG1lc3NhZ2UpKQogCi19ICAvLyBuYW1lc3BhY2Ug
aW50ZXJuYWwKIAogLy8gQ29tcGlsZS10aW1lIGFzc2VydGlvbiBmb3IgdHlwZSBlcXVhbGl0eS4K
IC8vIFN0YXRpY0Fzc2VydFR5cGVFcTx0eXBlMSwgdHlwZTI+KCkgY29tcGlsZXMgaWZmIHR5cGUx
IGFuZCB0eXBlMiBhcmUKQEAgLTE5NjksNyArMjI0MCw3IEBAIHN0cnVjdCBTdGF0aWNBc3NlcnRU
eXBlRXFIZWxwZXI8VCwgVD4ge307CiAvLyB0byBjYXVzZSBhIGNvbXBpbGVyIGVycm9yLgogdGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KIGJvb2wgU3RhdGljQXNzZXJ0VHlwZUVx
KCkgewotICBpbnRlcm5hbDo6U3RhdGljQXNzZXJ0VHlwZUVxSGVscGVyPFQxLCBUMj4oKTsKKyAg
KHZvaWQpaW50ZXJuYWw6OlN0YXRpY0Fzc2VydFR5cGVFcUhlbHBlcjxUMSwgVDI+KCk7CiAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC0xOTgxLDggKzIyNTIsOCBAQCBib29sIFN0YXRpY0Fzc2VydFR5
cGVFcSgpIHsKIC8vIFRoZSBjb252ZW50aW9uIGlzIHRvIGVuZCB0aGUgdGVzdCBjYXNlIG5hbWUg
d2l0aCAiVGVzdCIuICBGb3IKIC8vIGV4YW1wbGUsIGEgdGVzdCBjYXNlIGZvciB0aGUgRm9vIGNs
YXNzIGNhbiBiZSBuYW1lZCBGb29UZXN0LgogLy8KLS8vIFRoZSB1c2VyIHNob3VsZCBwdXQgaGlz
IHRlc3QgY29kZSBiZXR3ZWVuIGJyYWNlcyBhZnRlciB1c2luZyB0aGlzCi0vLyBtYWNyby4gIEV4
YW1wbGU6CisvLyBUZXN0IGNvZGUgc2hvdWxkIGFwcGVhciBiZXR3ZWVuIGJyYWNlcyBhZnRlciBh
biBpbnZvY2F0aW9uIG9mCisvLyB0aGlzIG1hY3JvLiAgRXhhbXBsZToKIC8vCiAvLyAgIFRFU1Qo
Rm9vVGVzdCwgSW5pdGlhbGl6ZXNDb3JyZWN0bHkpIHsKIC8vICAgICBGb28gZm9vOwpAQCAtMjAw
NSw3ICsyMjc2LDcgQEAgYm9vbCBTdGF0aWNBc3NlcnRUeXBlRXEoKSB7CiAvLyBEZWZpbmUgdGhp
cyBtYWNybyB0byAxIHRvIG9taXQgdGhlIGRlZmluaXRpb24gb2YgVEVTVCgpLCB3aGljaAogLy8g
aXMgYSBnZW5lcmljIG5hbWUgYW5kIGNsYXNoZXMgd2l0aCBzb21lIG90aGVyIGxpYnJhcmllcy4K
ICNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfVEVTVAotI2RlZmluZSBURVNUKHRlc3RfY2FzZV9uYW1l
LCB0ZXN0X25hbWUpIEdURVNUX1RFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkKKyMgZGVm
aW5lIFRFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgR1RFU1RfVEVTVCh0ZXN0X2Nhc2Vf
bmFtZSwgdGVzdF9uYW1lKQogI2VuZGlmCiAKIC8vIERlZmluZXMgYSB0ZXN0IHRoYXQgdXNlcyBh
IHRlc3QgZml4dHVyZS4KQEAgLTIwMTUsNyArMjI4Niw3IEBAIGJvb2wgU3RhdGljQXNzZXJ0VHlw
ZUVxKCkgewogLy8gbmFtZSBvZiB0aGUgdGVzdCB3aXRoaW4gdGhlIHRlc3QgY2FzZS4KIC8vCiAv
LyBBIHRlc3QgZml4dHVyZSBjbGFzcyBtdXN0IGJlIGRlY2xhcmVkIGVhcmxpZXIuICBUaGUgdXNl
ciBzaG91bGQgcHV0Ci0vLyBoaXMgdGVzdCBjb2RlIGJldHdlZW4gYnJhY2VzIGFmdGVyIHVzaW5n
IHRoaXMgbWFjcm8uICBFeGFtcGxlOgorLy8gdGhlIHRlc3QgY29kZSBiZXR3ZWVuIGJyYWNlcyBh
ZnRlciB1c2luZyB0aGlzIG1hY3JvLiAgRXhhbXBsZToKIC8vCiAvLyAgIGNsYXNzIEZvb1Rlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAvLyAgICBwcm90ZWN0ZWQ6CkBAIC0yMDMwLDIzICsy
MzAxLDM4IEBAIGJvb2wgU3RhdGljQXNzZXJ0VHlwZUVxKCkgewogLy8gICB9CiAvLwogLy8gICBU
RVNUX0YoRm9vVGVzdCwgUmV0dXJuc0VsZW1lbnRDb3VudENvcnJlY3RseSkgewotLy8gICAgIEVY
UEVDVF9FUSgwLCBhXy5zaXplKCkpOwotLy8gICAgIEVYUEVDVF9FUSgxLCBiXy5zaXplKCkpOwor
Ly8gICAgIEVYUEVDVF9FUShhXy5zaXplKCksIDApOworLy8gICAgIEVYUEVDVF9FUShiXy5zaXpl
KCksIDEpOwogLy8gICB9CiAKICNkZWZpbmUgVEVTVF9GKHRlc3RfZml4dHVyZSwgdGVzdF9uYW1l
KVwKICAgR1RFU1RfVEVTVF8odGVzdF9maXh0dXJlLCB0ZXN0X25hbWUsIHRlc3RfZml4dHVyZSwg
XAogICAgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpHZXRUeXBlSWQ8dGVzdF9maXh0
dXJlPigpKQogCi0vLyBVc2UgdGhpcyBtYWNybyBpbiBtYWluKCkgdG8gcnVuIGFsbCB0ZXN0cy4g
IEl0IHJldHVybnMgMCBpZiBhbGwKKy8vIFJldHVybnMgYSBwYXRoIHRvIHRlbXBvcmFyeSBkaXJl
Y3RvcnkuCisvLyBUcmllcyB0byBkZXRlcm1pbmUgYW4gYXBwcm9wcmlhdGUgZGlyZWN0b3J5IGZv
ciB0aGUgcGxhdGZvcm0uCitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFRlbXBEaXIoKTsKKworI2lm
ZGVmIF9NU0NfVkVSCisjICBwcmFnbWEgd2FybmluZyhwb3ApCisjZW5kaWYKKworfSAgLy8gbmFt
ZXNwYWNlIHRlc3RpbmcKKworLy8gVXNlIHRoaXMgZnVuY3Rpb24gaW4gbWFpbigpIHRvIHJ1biBh
bGwgdGVzdHMuICBJdCByZXR1cm5zIDAgaWYgYWxsCiAvLyB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwg
b3IgMSBvdGhlcndpc2UuCiAvLwogLy8gUlVOX0FMTF9URVNUUygpIHNob3VsZCBiZSBpbnZva2Vk
IGFmdGVyIHRoZSBjb21tYW5kIGxpbmUgaGFzIGJlZW4KIC8vIHBhcnNlZCBieSBJbml0R29vZ2xl
VGVzdCgpLgorLy8KKy8vIFRoaXMgZnVuY3Rpb24gd2FzIGZvcm1lcmx5IGEgbWFjcm87IHRodXMs
IGl0IGlzIGluIHRoZSBnbG9iYWwKKy8vIG5hbWVzcGFjZSBhbmQgaGFzIGFuIGFsbC1jYXBzIG5h
bWUuCitpbnQgUlVOX0FMTF9URVNUUygpIEdURVNUX01VU1RfVVNFX1JFU1VMVF87CiAKLSNkZWZp
bmUgUlVOX0FMTF9URVNUUygpXAotICAoOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2Uo
KS0+UnVuKCkpCitpbmxpbmUgaW50IFJVTl9BTExfVEVTVFMoKSB7CisgIHJldHVybiA6OnRlc3Rp
bmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5SdW4oKTsKK30KIAotfSAgLy8gbmFtZXNwYWNl
IHRlc3RpbmcKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQyNTEKIAog
I2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcmVkX2ltcGwuaAppbmRl
eCBlMWUyZjhjNGM4ODdhOGRlZmNiNzU4Y2EwY2FhYjNiN2NlYjlkNDFhLi4wYzExMDVjYjhlYjJl
ZjdjMjYxNmU2N2ZmNTU1NmFhYjI5ZmYyZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmgKQEAgLTI3LDE4ICsy
NywxOSBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0vLyBUaGlzIGZpbGUg
aXMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQgb24gMTAvMDIvMjAwOCBieSBjb21tYW5kCisvLyBU
aGlzIGZpbGUgaXMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQgb24gMDEvMDIvMjAxOCBieSBjb21t
YW5kCiAvLyAnZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weSA1Jy4gIERPIE5PVCBFRElUIEJZIEhBTkQh
CiAvLwogLy8gSW1wbGVtZW50cyBhIGZhbWlseSBvZiBnZW5lcmljIHByZWRpY2F0ZSBhc3NlcnRp
b24gbWFjcm9zLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5k
ZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KICNkZWZpbmUgR1RFU1Rf
SU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KIAotLy8gTWFrZXMgc3VyZSB0aGlzIGhl
YWRlciBpcyBub3QgaW5jbHVkZWQgYmVmb3JlIGd0ZXN0LmguCi0jaWZuZGVmIEdURVNUX0lOQ0xV
REVfR1RFU1RfR1RFU1RfSF8KLSNlcnJvciBEbyBub3QgaW5jbHVkZSBndGVzdF9wcmVkX2ltcGwu
aCBkaXJlY3RseS4gIEluY2x1ZGUgZ3Rlc3QuaCBpbnN0ZWFkLgotI2VuZGlmICAvLyBHVEVTVF9J
TkNMVURFX0dURVNUX0dURVNUX0hfCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNw
YWNlIHRlc3RpbmcgewogCiAvLyBUaGlzIGhlYWRlciBpbXBsZW1lbnRzIGEgZmFtaWx5IG9mIGdl
bmVyaWMgcHJlZGljYXRlIGFzc2VydGlvbgogLy8gbWFjcm9zOgpAQCAtNjYsOCArNjcsNiBAQAog
Ly8gV2UgYWxzbyBkZWZpbmUgdGhlIEVYUEVDVF8qIHZhcmlhdGlvbnMuCiAvLwogLy8gRm9yIG5v
dyB3ZSBvbmx5IHN1cHBvcnQgcHJlZGljYXRlcyB3aG9zZSBhcml0eSBpcyBhdCBtb3N0IDUuCi0v
LyBQbGVhc2UgZW1haWwgZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tIGlmIHlv
dSBuZWVkCi0vLyBzdXBwb3J0IGZvciBoaWdoZXIgYXJpdGllcy4KIAogLy8gR1RFU1RfQVNTRVJU
XyBpcyB0aGUgYmFzaWMgc3RhdGVtZW50IHRvIHdoaWNoIGFsbCBvZiB0aGUgYXNzZXJ0aW9ucwog
Ly8gaW4gdGhpcyBmaWxlIHJlZHVjZS4gIERvbid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KQEAg
LTkwLDE3ICs4OSwxNSBAQCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDFIZWxwZXIoY29uc3Qg
Y2hhciogcHJlZF90ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFQxJiB2MSkgewogICBpZiAocHJlZCh2MSkpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAK
LSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBwcmVkX3RleHQgPDwgIigiCi0gICAgICA8PCBlMSA8
PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8PCAi
IGV2YWx1YXRlcyB0byAiIDw8IHYxOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwor
ICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCBlMSA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJl
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0
ZXMgdG8gIiA8PCB2MTsKIH0KIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7
RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQxLgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBj
b2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDFfKHByZWRfZm9ybWF0LCB2MSwgb25fZmFp
bHVyZSlcCi0gIEdURVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoI3YxLCB2MSksXAorICBHVEVTVF9B
U1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgdjEpLCBcCiAgICAgICAgICAgICAgICAgb25fZmFpbHVy
ZSkKIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1f
UFJFRDEuICBEb24ndCB1c2UKQEAgLTEzNiwxOSArMTMzLDE3IEBAIEFzc2VydGlvblJlc3VsdCBB
c3NlcnRQcmVkMkhlbHBlcihjb25zdCBjaGFyKiBwcmVkX3RleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVDImIHYyKSB7CiAgIGlmIChwcmVkKHYxLCB2MikpIHJl
dHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBwcmVk
X3RleHQgPDwgIigiCi0gICAgICA8PCBlMSA8PCAiLCAiCi0gICAgICA8PCBlMiA8PCAiKSBldmFs
dWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRl
cyB0byAiIDw8IHYxCi0gICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwg
djI7Ci0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIHJldHVybiBBc3NlcnRpb25G
YWlsdXJlKCkgPDwgcHJlZF90ZXh0IDw8ICIoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDw8IGUxIDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMiA8PCAiKSBl
dmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MjsKIH0KIAog
Ly8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9G
T1JNQVQyLgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9Q
UkVEX0ZPUk1BVDJfKHByZWRfZm9ybWF0LCB2MSwgdjIsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9B
U1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCB2MSwgdjIpLFwKKyAgR1RFU1RfQVNTRVJUXyhw
cmVkX2Zvcm1hdCgjdjEsICN2MiwgdjEsIHYyKSwgXAogICAgICAgICAgICAgICAgIG9uX2ZhaWx1
cmUpCiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9
X1BSRUQyLiAgRG9uJ3QgdXNlCkBAIC0xODksMjEgKzE4NCwxOSBAQCBBc3NlcnRpb25SZXN1bHQg
QXNzZXJ0UHJlZDNIZWxwZXIoY29uc3QgY2hhciogcHJlZF90ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFQzJiB2MykgewogICBpZiAocHJlZCh2MSwgdjIsIHYz
KSkgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8
IHByZWRfdGV4dCA8PCAiKCIKLSAgICAgIDw8IGUxIDw8ICIsICIKLSAgICAgIDw8IGUyIDw8ICIs
ICIKLSAgICAgIDw8IGUzIDw8ICIpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmUiCi0gICAgICA8
PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjEKLSAgICAgIDw8ICJcbiIgPDwg
ZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MgotICAgICAgPDwgIlxuIiA8PCBlMyA8PCAiIGV2
YWx1YXRlcyB0byAiIDw8IHYzOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICBy
ZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCBlMSA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgZTIgPDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUzIDw8ICIp
IGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPDwgIlxuIiA8PCBlMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYyCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIiA8PCBlMyA8PCAiIGV2YWx1YXRlcyB0byAi
IDw8IHYzOwogfQogCiAvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8
QVNTRVJUfV9QUkVEX0ZPUk1BVDMuCiAvLyBEb24ndCB1c2UgdGhpcyBpbiB5b3VyIGNvZGUuCiAj
ZGVmaW5lIEdURVNUX1BSRURfRk9STUFUM18ocHJlZF9mb3JtYXQsIHYxLCB2MiwgdjMsIG9uX2Zh
aWx1cmUpXAotICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAjdjMsIHYxLCB2
MiwgdjMpLFwKKyAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3YzLCB2MSwg
djIsIHYzKSwgXAogICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVybmFsIG1h
Y3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQzLiAgRG9uJ3QgdXNlCkBA
IC0yNDksMjMgKzI0MiwyMSBAQCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDRIZWxwZXIoY29u
c3QgY2hhciogcHJlZF90ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFQ0JiB2NCkgewogICBpZiAocHJlZCh2MSwgdjIsIHYzLCB2NCkpIHJldHVybiBBc3NlcnRp
b25TdWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBwcmVkX3RleHQgPDwgIigi
Ci0gICAgICA8PCBlMSA8PCAiLCAiCi0gICAgICA8PCBlMiA8PCAiLCAiCi0gICAgICA8PCBlMyA8
PCAiLCAiCi0gICAgICA8PCBlNCA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgotICAg
ICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxCi0gICAgICA8PCAiXG4i
IDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjIKLSAgICAgIDw8ICJcbiIgPDwgZTMgPDwg
IiBldmFsdWF0ZXMgdG8gIiA8PCB2MwotICAgICAgPDwgIlxuIiA8PCBlNCA8PCAiIGV2YWx1YXRl
cyB0byAiIDw8IHY0OwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4g
QXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCBlMSA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
ZTIgPDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUzIDw8ICIsICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlNCA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2Us
IHdoZXJlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBl
dmFsdWF0ZXMgdG8gIiA8PCB2MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIg
PDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NDsK
IH0KIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1f
UFJFRF9GT1JNQVQ0LgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBH
VEVTVF9QUkVEX0ZPUk1BVDRfKHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCB2NCwgb25fZmFpbHVy
ZSlcCi0gIEdURVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoI3YxLCAjdjIsICN2MywgI3Y0LCB2MSwg
djIsIHYzLCB2NCksXAorICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAjdjMs
ICN2NCwgdjEsIHYyLCB2MywgdjQpLCBcCiAgICAgICAgICAgICAgICAgb25fZmFpbHVyZSkKIAog
Ly8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRDQu
ICBEb24ndCB1c2UKQEAgLTMxNiwyNSArMzA3LDIzIEBAIEFzc2VydGlvblJlc3VsdCBBc3NlcnRQ
cmVkNUhlbHBlcihjb25zdCBjaGFyKiBwcmVkX3RleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVDUmIHY1KSB7CiAgIGlmIChwcmVkKHYxLCB2MiwgdjMsIHY0LCB2
NSkpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8
PCBwcmVkX3RleHQgPDwgIigiCi0gICAgICA8PCBlMSA8PCAiLCAiCi0gICAgICA8PCBlMiA8PCAi
LCAiCi0gICAgICA8PCBlMyA8PCAiLCAiCi0gICAgICA8PCBlNCA8PCAiLCAiCi0gICAgICA8PCBl
NSA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8
PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxCi0gICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVh
dGVzIHRvICIgPDwgdjIKLSAgICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8
PCB2MwotICAgICAgPDwgIlxuIiA8PCBlNCA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHY0Ci0gICAg
ICA8PCAiXG4iIDw8IGU1IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjU7Ci0gIHJldHVybiBBc3Nl
cnRpb25GYWlsdXJlKG1zZyk7CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgcHJlZF90
ZXh0IDw8ICIoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUxIDw8ICIsICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMiA8PCAiLCAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPDwgZTMgPDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
IGU0IDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlNSA8PCAiKSBldmFs
dWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJc
biIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2
MworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTQgPDwgIiBldmFsdWF0
ZXMgdG8gIiA8PCB2NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTUg
PDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NTsKIH0KIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGlt
cGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQ1LgogLy8gRG9uJ3QgdXNlIHRo
aXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDVfKHByZWRfZm9ybWF0
LCB2MSwgdjIsIHYzLCB2NCwgdjUsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NFUlRfKHByZWRf
Zm9ybWF0KCN2MSwgI3YyLCAjdjMsICN2NCwgI3Y1LCB2MSwgdjIsIHYzLCB2NCwgdjUpLFwKKyAg
R1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3YzLCAjdjQsICN2NSwgdjEsIHYy
LCB2MywgdjQsIHY1KSwgXAogICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVy
bmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQ1LiAgRG9uJ3Qg
dXNlCkBAIC0zNjUsNCArMzU0LDYgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQ1SGVscGVy
KGNvbnN0IGNoYXIqIHByZWRfdGV4dCwKIAogCiAKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisK
ICNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5o
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmgKaW5k
ZXggZGE4MGRkYzZjNzBlZTJkYzc3M2VkNjc2NWE0Zjg5ZGZhOGNiMzhlOC4uZTY1MTY3MWViZGU4
NTlmYzczMWI1NDU5YmRjMDY2MWFmMDc1N2NiNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmgKQEAgLTI2LDEwICsyNiwxMCBAQAog
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIEdvb2dsZSBDKysg
VGVzdGluZyBGcmFtZXdvcmsgZGVmaW5pdGlvbnMgdXNlZnVsIGluIHByb2R1Y3Rpb24gY29kZS4K
Ky8vIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgZGVmaW5pdGlvbnMg
dXNlZnVsIGluIHByb2R1Y3Rpb24gY29kZS4KKy8vIEdPT0dMRVRFU1RfQ00wMDAzIERPIE5PVCBE
RUxFVEUKIAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BST0RfSF8KICNkZWZp
bmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUk9EX0hfCkBAIC00MCwxNyArNDAsMjAgQEAK
IC8vCiAvLyBjbGFzcyBNeUNsYXNzIHsKIC8vICBwcml2YXRlOgotLy8gICB2b2lkIE15TWV0aG9k
KCk7Ci0vLyAgIEZSSUVORF9URVNUKE15Q2xhc3NUZXN0LCBNeU1ldGhvZCk7CisvLyAgIHZvaWQg
UHJpdmF0ZU1ldGhvZCgpOworLy8gICBGUklFTkRfVEVTVChNeUNsYXNzVGVzdCwgUHJpdmF0ZU1l
dGhvZFdvcmtzKTsKIC8vIH07CiAvLwogLy8gY2xhc3MgTXlDbGFzc1Rlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7CiAvLyAgIC8vIC4uLgogLy8gfTsKIC8vCi0vLyBURVNUX0YoTXlDbGFzc1Rl
c3QsIE15TWV0aG9kKSB7Ci0vLyAgIC8vIENhbiBjYWxsIE15Q2xhc3M6Ok15TWV0aG9kKCkgaGVy
ZS4KKy8vIFRFU1RfRihNeUNsYXNzVGVzdCwgUHJpdmF0ZU1ldGhvZFdvcmtzKSB7CisvLyAgIC8v
IENhbiBjYWxsIE15Q2xhc3M6OlByaXZhdGVNZXRob2QoKSBoZXJlLgogLy8gfQorLy8KKy8vIE5v
dGU6IFRoZSB0ZXN0IGNsYXNzIG11c3QgYmUgaW4gdGhlIHNhbWUgbmFtZXNwYWNlIGFzIHRoZSBj
bGFzcyBiZWluZyB0ZXN0ZWQuCisvLyBGb3IgZXhhbXBsZSwgcHV0dGluZyBNeUNsYXNzVGVzdCBp
biBhbiBhbm9ueW1vdXMgbmFtZXNwYWNlIHdpbGwgbm90IHdvcmsuCiAKICNkZWZpbmUgRlJJRU5E
X1RFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSlcCiBmcmllbmQgY2xhc3MgdGVzdF9jYXNl
X25hbWUjI18jI3Rlc3RfbmFtZSMjX1Rlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL1JFQURNRS5tZCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL1JFQURNRS5tZApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mZjM5MWZiNGUyYjU3NjVjYWM4YzY5NDMzNTliMTViYmQ1ZjRmMTQ5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9jdXN0b20vUkVBRE1FLm1kCkBAIC0wLDAgKzEsNTYgQEAKKyMgQ3VzdG9taXphdGlvbiBQ
b2ludHMKKworVGhlIGN1c3RvbSBkaXJlY3RvcnkgaXMgYW4gaW5qZWN0aW9uIHBvaW50IGZvciBj
dXN0b20gdXNlciBjb25maWd1cmF0aW9ucy4KKworIyMgSGVhZGVyIGBndGVzdC5oYAorCisjIyMg
VGhlIGZvbGxvd2luZyBtYWNyb3MgY2FuIGJlIGRlZmluZWQ6CisKKyogICBgR1RFU1RfT1NfU1RB
Q0tfVFJBQ0VfR0VUVEVSX2AgLSBUaGUgbmFtZSBvZiBhbiBpbXBsZW1lbnRhdGlvbiBvZgorICAg
IGBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2VgLgorKiAgIGBHVEVTVF9DVVNUT01fVEVNUERJ
Ul9GVU5DVElPTl9gIC0gQW4gb3ZlcnJpZGUgZm9yIGB0ZXN0aW5nOjpUZW1wRGlyKClgLiBTZWUK
KyAgICBgdGVzdGluZzo6VGVtcERpcmAgZm9yIHNlbWFudGljcyBhbmQgc2lnbmF0dXJlLgorCisj
IyBIZWFkZXIgYGd0ZXN0LXBvcnQuaGAKKworVGhlIGZvbGxvd2luZyBtYWNyb3MgY2FuIGJlIGRl
ZmluZWQ6CisKKyMjIyBGbGFnIHJlbGF0ZWQgbWFjcm9zOgorCisqICAgYEdURVNUX0ZMQUcoZmxh
Z19uYW1lKWAKKyogICBgR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHX2AgLSBEZWZpbmUgdG8g
MCB3aGVuIHRoZSBzeXN0ZW0gcHJvdmlkZXMgaXRzCisgICAgb3duIGZsYWdmaWxlIGZsYWcgcGFy
c2luZy4KKyogICBgR1RFU1RfREVDTEFSRV9ib29sXyhuYW1lKWAKKyogICBgR1RFU1RfREVDTEFS
RV9pbnQzMl8obmFtZSlgCisqICAgYEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhuYW1lKWAKKyogICBg
R1RFU1RfREVGSU5FX2Jvb2xfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpYAorKiAgIGBHVEVTVF9E
RUZJTkVfaW50MzJfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpYAorKiAgIGBHVEVTVF9ERUZJTkVf
c3RyaW5nXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKWAKKworIyMjIExvZ2dpbmc6CisKKyogICBg
R1RFU1RfTE9HXyhzZXZlcml0eSlgCisqICAgYEdURVNUX0NIRUNLXyhjb25kaXRpb24pYAorKiAg
IEZ1bmN0aW9ucyBgTG9nVG9TdGRlcnIoKWAgYW5kIGBGbHVzaEluZm9Mb2coKWAgaGF2ZSB0byBi
ZSBwcm92aWRlZCB0b28uCisKKyMjIyBUaHJlYWRpbmc6CisKKyogICBgR1RFU1RfSEFTX05PVElG
SUNBVElPTl9gIC0gRW5hYmxlZCBpZiBOb3RpZmljYXRpb24gaXMgYWxyZWFkeSBwcm92aWRlZC4K
KyogICBgR1RFU1RfSEFTX01VVEVYX0FORF9USFJFQURfTE9DQUxfYCAtIEVuYWJsZWQgaWYgYE11
dGV4YCBhbmQgYFRocmVhZExvY2FsYAorICAgIGFyZSBhbHJlYWR5IHByb3ZpZGVkLiBNdXN0IGFs
c28gcHJvdmlkZSBgR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVURVhfKG11dGV4KWAKKyAgICBhbmQg
YEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKG11dGV4KWAKKyogICBgR1RFU1RfRVhDTFVTSVZF
X0xPQ0tfUkVRVUlSRURfKGxvY2tzKWAKKyogICBgR1RFU1RfTE9DS19FWENMVURFRF8obG9ja3Mp
YAorCisjIyMgVW5kZXJseWluZyBsaWJyYXJ5IHN1cHBvcnQgZmVhdHVyZXMKKworKiAgIGBHVEVT
VF9IQVNfQ1hYQUJJX0hfYAorCisjIyMgRXhwb3J0aW5nIEFQSSBzeW1ib2xzOgorCisqICAgYEdU
RVNUX0FQSV9gIC0gU3BlY2lmaWVyIGZvciBleHBvcnRlZCBzeW1ib2xzLgorCisjIyBIZWFkZXIg
YGd0ZXN0LXByaW50ZXJzLmhgCisKKyogICBTZWUgZG9jdW1lbnRhdGlvbiBhdCBgZ3Rlc3QvZ3Rl
c3QtcHJpbnRlcnMuaGAgZm9yIGRldGFpbHMgb24gaG93IHRvIGRlZmluZSBhCisgICAgY3VzdG9t
IHByaW50ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2Q4NWQ5NTZkMmRjMTdiZDUzN2YyMTQyMzQwYmRmNThmNDczNzExOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9t
L2d0ZXN0LXBvcnQuaApAQCAtMCwwICsxLDM3IEBACisvLyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xl
IEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
Ky8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gSW5qZWN0aW9uIHBvaW50IGZvciBjdXN0b20gdXNl
ciBjb25maWd1cmF0aW9ucy4gU2VlIFJFQURNRSBmb3IgZGV0YWlscworLy8KKy8vICoqIEN1c3Rv
bSBpbXBsZW1lbnRhdGlvbiBzdGFydHMgaGVyZSAqKgorCisjaWZuZGVmIEdURVNUX0lOQ0xVREVf
R1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX1BPUlRfSF8KKyNkZWZpbmUgR1RFU1RfSU5DTFVE
RV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RFU1RfUE9SVF9IXworCisjZW5kaWYgIC8vIEdURVNU
X0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX1BPUlRfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0
ZXN0LXByaW50ZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2N1c3RvbS9ndGVzdC1wcmludGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViNDQ2N2FiY2FiZWE3
ZmY3NmY5ZDJkNTI3Mzg3YzlkYTgxMDE0OGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wcmludGVy
cy5oCkBAIC0wLDAgKzEsNDIgQEAKKy8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgorLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
Ky8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
Ky8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKy8vCisvLyBUaGlzIGZpbGUgcHJvdmlkZXMgYW4gaW5qZWN0aW9uIHBvaW50IGZv
ciBjdXN0b20gcHJpbnRlcnMgaW4gYSBsb2NhbAorLy8gaW5zdGFsbGF0aW9uIG9mIGdUZXN0Lgor
Ly8gSXQgd2lsbCBiZSBpbmNsdWRlZCBmcm9tIGd0ZXN0LXByaW50ZXJzLmggYW5kIHRoZSBvdmVy
cmlkZXMgaW4gdGhpcyBmaWxlCisvLyB3aWxsIGJlIHZpc2libGUgdG8gZXZlcnlvbmUuCisvLwor
Ly8gSW5qZWN0aW9uIHBvaW50IGZvciBjdXN0b20gdXNlciBjb25maWd1cmF0aW9ucy4gU2VlIFJF
QURNRSBmb3IgZGV0YWlscworLy8KKy8vICoqIEN1c3RvbSBpbXBsZW1lbnRhdGlvbiBzdGFydHMg
aGVyZSAqKgorCisjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dU
RVNUX1BSSU5URVJTX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VT
VE9NX0dURVNUX1BSSU5URVJTX0hfCisKKyNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9J
TlRFUk5BTF9DVVNUT01fR1RFU1RfUFJJTlRFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRjOGUwN2JlMjNmMWZkNjE1OWFmZWYyZWVmZDc0NDQwMzRkZDA2MDQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2N1c3RvbS9ndGVzdC5oCkBAIC0wLDAgKzEsMzcgQEAKKy8vIENvcHlyaWdodCAyMDE1
LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBJbmplY3Rpb24gcG9pbnQgZm9yIGN1
c3RvbSB1c2VyIGNvbmZpZ3VyYXRpb25zLiBTZWUgUkVBRE1FIGZvciBkZXRhaWxzCisvLworLy8g
KiogQ3VzdG9tIGltcGxlbWVudGF0aW9uIHN0YXJ0cyBoZXJlICoqCisKKyNpZm5kZWYgR1RFU1Rf
SU5DTFVERV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RFU1RfSF8KKyNkZWZpbmUgR1RFU1RfSU5D
TFVERV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RFU1RfSF8KKworI2VuZGlmICAvLyBHVEVTVF9J
TkNMVURFX0dURVNUX0lOVEVSTkFMX0NVU1RPTV9HVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0
LWludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVy
bmFsL2d0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaAppbmRleCBlNDMzMDg0OGQ0ZWFlNTcwZjI4
MGRhYzU3Y2YwMGIyOTcyMmM3ZDBjLi4wYTliNDJjOGE1NzJhODcxOTRjNjUxMDkwM2UyMWVhMjI2
MGZhYzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3QtaW50ZXJu
YWwuaApAQCAtMjcsMTcgKzI3LDE4IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAvLwotLy8gQXV0aG9yczogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiksIGVlZmFjbUBn
bWFpbC5jb20gKFNlYW4gTWNhZmVlKQotLy8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJh
bWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tp
bmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAvLyBUaGlzIGhlYWRlciBmaWxlIGRlZmlu
ZXMgaW50ZXJuYWwgdXRpbGl0aWVzIG5lZWRlZCBmb3IgaW1wbGVtZW50aW5nCiAvLyBkZWF0aCB0
ZXN0cy4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgorLy8gR09P
R0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQogCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RF
U1RfSU5URVJOQUxfR1RFU1RfREVBVEhfVEVTVF9JTlRFUk5BTF9IXwogI2RlZmluZSBHVEVTVF9J
TkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0RFQVRIX1RFU1RfSU5URVJOQUxfSF8KIAotI2lu
Y2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg+CisjaW5jbHVkZSAiZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+CiAKIG5hbWVz
cGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CkBAIC01MSw2ICs1Miw5IEBAIGNv
bnN0IGNoYXIga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZ1tdID0gImludGVybmFsX3J1bl9kZWF0
aF90ZXN0IjsKIAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCiAKK0dURVNUX0RJU0FCTEVfTVND
X1dBUk5JTkdTX1BVU0hfKDQyNTEgXAorLyogY2xhc3MgQSBuZWVkcyB0byBoYXZlIGRsbC1pbnRl
cmZhY2UgdG8gYmUgdXNlZCBieSBjbGllbnRzIG9mIGNsYXNzIEIgKi8pCisKIC8vIERlYXRoVGVz
dCBpcyBhIGNsYXNzIHRoYXQgaGlkZXMgbXVjaCBvZiB0aGUgY29tcGxleGl0eSBvZiB0aGUKIC8v
IEdURVNUX0RFQVRIX1RFU1RfIG1hY3JvLiAgSXQgaXMgYWJzdHJhY3Q7IGl0cyBzdGF0aWMgQ3Jl
YXRlIG1ldGhvZAogLy8gcmV0dXJucyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiB0
aGUgcHJldmFpbGluZyBkZWF0aCB0ZXN0CkBAIC05Niw4ICsxMDAsMTIgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBEZWF0aFRlc3QgewogICAvLyB0ZXN0LCB0aGVuIHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRl
LgogICBlbnVtIFRlc3RSb2xlIHsgT1ZFUlNFRV9URVNULCBFWEVDVVRFX1RFU1QgfTsKIAotICAv
LyBBbiBlbnVtZXJhdGlvbiBvZiB0aGUgdHdvIHJlYXNvbnMgdGhhdCBhIHRlc3QgbWlnaHQgYmUg
YWJvcnRlZC4KLSAgZW51bSBBYm9ydFJlYXNvbiB7IFRFU1RfRU5DT1VOVEVSRURfUkVUVVJOX1NU
QVRFTUVOVCwgVEVTVF9ESURfTk9UX0RJRSB9OworICAvLyBBbiBlbnVtZXJhdGlvbiBvZiB0aGUg
dGhyZWUgcmVhc29ucyB0aGF0IGEgdGVzdCBtaWdodCBiZSBhYm9ydGVkLgorICBlbnVtIEFib3J0
UmVhc29uIHsKKyAgICBURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQsCisgICAgVEVT
VF9USFJFV19FWENFUFRJT04sCisgICAgVEVTVF9ESURfTk9UX0RJRQorICB9OwogCiAgIC8vIEFz
c3VtZXMgb25lIG9mIHRoZSBhYm92ZSByb2xlcy4KICAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVS
b2xlKCkgPSAwOwpAQCAtMTIxLDE1ICsxMjksMTcgQEAgY2xhc3MgR1RFU1RfQVBJXyBEZWF0aFRl
c3QgewogICAvLyB0aGUgbGFzdCBkZWF0aCB0ZXN0LgogICBzdGF0aWMgY29uc3QgY2hhciogTGFz
dE1lc3NhZ2UoKTsKIAotICBzdGF0aWMgdm9pZCBzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2Uo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgc3RhdGljIHZvaWQgc2V0X2xhc3RfZGVhdGhfdGVz
dF9tZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKTsKIAogIHByaXZhdGU6CiAgIC8v
IEEgc3RyaW5nIGNvbnRhaW5pbmcgYSBkZXNjcmlwdGlvbiBvZiB0aGUgb3V0Y29tZSBvZiB0aGUg
bGFzdCBkZWF0aCB0ZXN0LgotICBzdGF0aWMgU3RyaW5nIGxhc3RfZGVhdGhfdGVzdF9tZXNzYWdl
XzsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIGxhc3RfZGVhdGhfdGVzdF9tZXNzYWdlXzsKIAogICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKERlYXRoVGVzdCk7CiB9OwogCitHVEVTVF9E
SVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkgIC8vICA0MjUxCisKIC8vIEZhY3RvcnkgaW50ZXJm
YWNlIGZvciBkZWF0aCB0ZXN0cy4gIE1heSBiZSBtb2NrZWQgb3V0IGZvciB0ZXN0aW5nLgogY2xh
c3MgRGVhdGhUZXN0RmFjdG9yeSB7CiAgcHVibGljOgpAQCAtMTQ5LDkgKzE1OSwzNCBAQCBjbGFz
cyBEZWZhdWx0RGVhdGhUZXN0RmFjdG9yeSA6IHB1YmxpYyBEZWF0aFRlc3RGYWN0b3J5IHsKIC8v
IGJ5IGEgc2lnbmFsLCBvciBleGl0ZWQgbm9ybWFsbHkgd2l0aCBhIG5vbnplcm8gZXhpdCBjb2Rl
LgogR1RFU1RfQVBJXyBib29sIEV4aXRlZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1cyk7
CiAKKy8vIFRyYXBzIEMrKyBleGNlcHRpb25zIGVzY2FwaW5nIHN0YXRlbWVudCBhbmQgcmVwb3J0
cyB0aGVtIGFzIHRlc3QKKy8vIGZhaWx1cmVzLiBOb3RlIHRoYXQgdHJhcHBpbmcgU0VIIGV4Y2Vw
dGlvbnMgaXMgbm90IGltcGxlbWVudGVkIGhlcmUuCisjIGlmIEdURVNUX0hBU19FWENFUFRJT05T
CisjICBkZWZpbmUgR1RFU1RfRVhFQ1VURV9ERUFUSF9URVNUX1NUQVRFTUVOVF8oc3RhdGVtZW50
LCBkZWF0aF90ZXN0KSBcCisgIHRyeSB7IFwKKyAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJM
RV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKKyAgfSBjYXRjaCAoY29uc3QgOjpz
dGQ6OmV4Y2VwdGlvbiYgZ3Rlc3RfZXhjZXB0aW9uKSB7IFwKKyAgICBmcHJpbnRmKFwKKyAgICAg
ICAgc3RkZXJyLCBcCisgICAgICAgICJcbiVzOiBDYXVnaHQgc3RkOjpleGNlcHRpb24tZGVyaXZl
ZCBleGNlcHRpb24gZXNjYXBpbmcgdGhlICIgXAorICAgICAgICAiZGVhdGggdGVzdCBzdGF0ZW1l
bnQuIEV4Y2VwdGlvbiBtZXNzYWdlOiAlc1xuIiwgXAorICAgICAgICA6OnRlc3Rpbmc6OmludGVy
bmFsOjpGb3JtYXRGaWxlTG9jYXRpb24oX19GSUxFX18sIF9fTElORV9fKS5jX3N0cigpLCBcCisg
ICAgICAgIGd0ZXN0X2V4Y2VwdGlvbi53aGF0KCkpOyBcCisgICAgZmZsdXNoKHN0ZGVycik7IFwK
KyAgICBkZWF0aF90ZXN0LT5BYm9ydCg6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OlRF
U1RfVEhSRVdfRVhDRVBUSU9OKTsgXAorICB9IGNhdGNoICguLi4pIHsgXAorICAgIGRlYXRoX3Rl
c3QtPkFib3J0KDo6dGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVzdDo6VEVTVF9USFJFV19FWENF
UFRJT04pOyBcCisgIH0KKworIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfRVhFQ1VURV9ERUFUSF9U
RVNUX1NUQVRFTUVOVF8oc3RhdGVtZW50LCBkZWF0aF90ZXN0KSBcCisgIEdURVNUX1NVUFBSRVNT
X1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KQorCisjIGVuZGlmCisK
IC8vIFRoaXMgbWFjcm8gaXMgZm9yIGltcGxlbWVudGluZyBBU1NFUlRfREVBVEgqLCBFWFBFQ1Rf
REVBVEgqLAogLy8gQVNTRVJUX0VYSVQqLCBhbmQgRVhQRUNUX0VYSVQqLgotI2RlZmluZSBHVEVT
VF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIGZhaWwpIFwKKyMgZGVm
aW5lIEdURVNUX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgZmFpbCkg
XAogICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCiAgIGlmICg6OnRlc3Rpbmc6Omlu
dGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAogICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6
OlJFJiBndGVzdF9yZWdleCA9IChyZWdleCk7IFwKQEAgLTE3MiwxMCArMjA3LDEyIEBAIEdURVNU
X0FQSV8gYm9vbCBFeGl0ZWRVbnN1Y2Nlc3NmdWxseShpbnQgZXhpdF9zdGF0dXMpOwogICAgICAg
ICBjYXNlIDo6dGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVzdDo6RVhFQ1VURV9URVNUOiB7IFwK
ICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OlJldHVyblNlbnRpbmVs
IFwKICAgICAgICAgICAgICAgZ3Rlc3Rfc2VudGluZWwoZ3Rlc3RfZHQpOyBcCi0gICAgICAgICAg
R1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQp
OyBcCisgICAgICAgICAgR1RFU1RfRVhFQ1VURV9ERUFUSF9URVNUX1NUQVRFTUVOVF8oc3RhdGVt
ZW50LCBndGVzdF9kdCk7IFwKICAgICAgICAgICBndGVzdF9kdC0+QWJvcnQoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6RGVhdGhUZXN0OjpURVNUX0RJRF9OT1RfRElFKTsgXAogICAgICAgICAgIGJyZWFr
OyBcCiAgICAgICAgIH0gXAorICAgICAgICBkZWZhdWx0OiBcCisgICAgICAgICAgYnJlYWs7IFwK
ICAgICAgIH0gXAogICAgIH0gXAogICB9IGVsc2UgXApAQCAtMTg0LDEyICsyMjEsMjcgQEAgR1RF
U1RfQVBJXyBib29sIEV4aXRlZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1cyk7CiAvLyBU
aGUgc3ltYm9sICJmYWlsIiBoZXJlIGV4cGFuZHMgdG8gc29tZXRoaW5nIGludG8gd2hpY2ggYSBt
ZXNzYWdlCiAvLyBjYW4gYmUgc3RyZWFtZWQuCiAKKy8vIFRoaXMgbWFjcm8gaXMgZm9yIGltcGxl
bWVudGluZyBBU1NFUlQvRVhQRUNUX0RFQlVHX0RFQVRIIHdoZW4gY29tcGlsZWQgaW4KKy8vIE5E
RUJVRyBtb2RlLiBJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0aGUgc3RhdGVtZW50cyB0byBiZSBleGVj
dXRlZCBhbmQgdGhlIG1hY3JvCisvLyBtdXN0IGFjY2VwdCBhIHN0cmVhbWVkIG1lc3NhZ2UgZXZl
biB0aG91Z2ggdGhlIG1lc3NhZ2UgaXMgbmV2ZXIgcHJpbnRlZC4KKy8vIFRoZSByZWdleCBvYmpl
Y3QgaXMgbm90IGV2YWx1YXRlZCwgYnV0IGl0IGlzIHVzZWQgdG8gcHJldmVudCAidW51c2VkIgor
Ly8gd2FybmluZ3MgYW5kIHRvIGF2b2lkIGFuIGV4cHJlc3Npb24gdGhhdCBkb2Vzbid0IGNvbXBp
bGUgaW4gZGVidWcgbW9kZS4KKyNkZWZpbmUgR1RFU1RfRVhFQ1VURV9TVEFURU1FTlRfKHN0YXRl
bWVudCwgcmVnZXgpICAgICAgICAgICAgIFwKKyAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tF
Ul8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgaWYgKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBHVEVTVF9T
VVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKKyAg
fSBlbHNlIGlmICghOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7ICAgICAgICAg
ICAgIFwKKyAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpSRSYgZ3Rlc3RfcmVnZXggPSAo
cmVnZXgpOyAgICAgIFwKKyAgICBzdGF0aWNfY2FzdDx2b2lkPihndGVzdF9yZWdleCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSBlbHNlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICA6OnRlc3Rpbmc6Ok1lc3NhZ2Uo
KQorCiAvLyBBIGNsYXNzIHJlcHJlc2VudGluZyB0aGUgcGFyc2VkIGNvbnRlbnRzIG9mIHRoZQog
Ly8gLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFnLCBhcyBpdCBleGlzdGVkIHdo
ZW4KIC8vIFJVTl9BTExfVEVTVFMgd2FzIGNhbGxlZC4KIGNsYXNzIEludGVybmFsUnVuRGVhdGhU
ZXN0RmxhZyB7CiAgcHVibGljOgotICBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoY29uc3QgU3Ry
aW5nJiBhX2ZpbGUsCisgIEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyhjb25zdCBzdGQ6OnN0cmlu
ZyYgYV9maWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFfbGluZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBhbl9pbmRleCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBhX3dyaXRlX2ZkKQpAQCAtMjAxLDEzICsyNTMsMTMgQEAgY2xhc3MgSW50ZXJu
YWxSdW5EZWF0aFRlc3RGbGFnIHsKICAgICAgIHBvc2l4OjpDbG9zZSh3cml0ZV9mZF8pOwogICB9
CiAKLSAgU3RyaW5nIGZpbGUoKSBjb25zdCB7IHJldHVybiBmaWxlXzsgfQorICBjb25zdCBzdGQ6
OnN0cmluZyYgZmlsZSgpIGNvbnN0IHsgcmV0dXJuIGZpbGVfOyB9CiAgIGludCBsaW5lKCkgY29u
c3QgeyByZXR1cm4gbGluZV87IH0KICAgaW50IGluZGV4KCkgY29uc3QgeyByZXR1cm4gaW5kZXhf
OyB9CiAgIGludCB3cml0ZV9mZCgpIGNvbnN0IHsgcmV0dXJuIHdyaXRlX2ZkXzsgfQogCiAgcHJp
dmF0ZToKLSAgU3RyaW5nIGZpbGVfOworICBzdGQ6OnN0cmluZyBmaWxlXzsKICAgaW50IGxpbmVf
OwogICBpbnQgaW5kZXhfOwogICBpbnQgd3JpdGVfZmRfOwpAQCAtMjIwLDUzICsyNzIsNiBAQCBj
bGFzcyBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcgewogLy8gdGhlIGZsYWcgaXMgc3BlY2lmaWVk
OyBvdGhlcndpc2UgcmV0dXJucyBOVUxMLgogSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBQYXJz
ZUludGVybmFsUnVuRGVhdGhUZXN0RmxhZygpOwogCi0jZWxzZSAgLy8gR1RFU1RfSEFTX0RFQVRI
X1RFU1QKLQotLy8gVGhpcyBtYWNybyBpcyB1c2VkIGZvciBpbXBsZW1lbnRpbmcgbWFjcm9zIHN1
Y2ggYXMKLS8vIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQgYW5kIEFTU0VSVF9ERUFUSF9JRl9T
VVBQT1JURUQgb24gc3lzdGVtcyB3aGVyZQotLy8gZGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0
ZWQuIFRob3NlIG1hY3JvcyBtdXN0IGNvbXBpbGUgb24gc3VjaCBzeXN0ZW1zCi0vLyBpZmYgRVhQ
RUNUX0RFQVRIIGFuZCBBU1NFUlRfREVBVEggY29tcGlsZSB3aXRoIHRoZSBzYW1lIHBhcmFtZXRl
cnMgb24KLS8vIHN5c3RlbXMgdGhhdCBzdXBwb3J0IGRlYXRoIHRlc3RzLiBUaGlzIGFsbG93cyBv
bmUgdG8gd3JpdGUgc3VjaCBhIG1hY3JvCi0vLyBvbiBhIHN5c3RlbSB0aGF0IGRvZXMgbm90IHN1
cHBvcnQgZGVhdGggdGVzdHMgYW5kIGJlIHN1cmUgdGhhdCBpdCB3aWxsCi0vLyBjb21waWxlIG9u
IGEgZGVhdGgtdGVzdCBzdXBwb3J0aW5nIHN5c3RlbS4KLS8vCi0vLyBQYXJhbWV0ZXJzOgotLy8g
ICBzdGF0ZW1lbnQgLSAgQSBzdGF0ZW1lbnQgdGhhdCBhIG1hY3JvIHN1Y2ggYXMgRVhQRUNUX0RF
QVRIIHdvdWxkIHRlc3QKLS8vICAgICAgICAgICAgICAgIGZvciBwcm9ncmFtIHRlcm1pbmF0aW9u
LiBUaGlzIG1hY3JvIGhhcyB0byBtYWtlIHN1cmUgdGhpcwotLy8gICAgICAgICAgICAgICAgc3Rh
dGVtZW50IGlzIGNvbXBpbGVkIGJ1dCBub3QgZXhlY3V0ZWQsIHRvIGVuc3VyZSB0aGF0Ci0vLyAg
ICAgICAgICAgICAgICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEIGNvbXBpbGVzIHdpdGggYSBj
ZXJ0YWluCi0vLyAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgaWZmIEVYUEVDVF9ERUFUSCBjb21w
aWxlcyB3aXRoIGl0LgotLy8gICByZWdleCAgICAgLSAgQSByZWdleCB0aGF0IGEgbWFjcm8gc3Vj
aCBhcyBFWFBFQ1RfREVBVEggd291bGQgdXNlIHRvIHRlc3QKLS8vICAgICAgICAgICAgICAgIHRo
ZSBvdXRwdXQgb2Ygc3RhdGVtZW50LiAgVGhpcyBwYXJhbWV0ZXIgaGFzIHRvIGJlCi0vLyAgICAg
ICAgICAgICAgICBjb21waWxlZCBidXQgbm90IGV2YWx1YXRlZCBieSB0aGlzIG1hY3JvLCB0byBl
bnN1cmUgdGhhdAotLy8gICAgICAgICAgICAgICAgdGhpcyBtYWNybyBvbmx5IGFjY2VwdHMgZXhw
cmVzc2lvbnMgdGhhdCBhIG1hY3JvIHN1Y2ggYXMKLS8vICAgICAgICAgICAgICAgIEVYUEVDVF9E
RUFUSCB3b3VsZCBhY2NlcHQuCi0vLyAgIHRlcm1pbmF0b3IgLSBNdXN0IGJlIGFuIGVtcHR5IHN0
YXRlbWVudCBmb3IgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRAotLy8gICAgICAgICAgICAgICAg
YW5kIGEgcmV0dXJuIHN0YXRlbWVudCBmb3IgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRC4KLS8v
ICAgICAgICAgICAgICAgIFRoaXMgZW5zdXJlcyB0aGF0IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JU
RUQgd2lsbCBub3QKLS8vICAgICAgICAgICAgICAgIGNvbXBpbGUgaW5zaWRlIGZ1bmN0aW9ucyB3
aGVyZSBBU1NFUlRfREVBVEggZG9lc24ndAotLy8gICAgICAgICAgICAgICAgY29tcGlsZS4KLS8v
Ci0vLyAgVGhlIGJyYW5jaCB0aGF0IGhhcyBhbiBhbHdheXMgZmFsc2UgY29uZGl0aW9uIGlzIHVz
ZWQgdG8gZW5zdXJlIHRoYXQKLS8vICBzdGF0ZW1lbnQgYW5kIHJlZ2V4IGFyZSBjb21waWxlZCAo
YW5kIHRodXMgc3ludGFjdGljYWxseSBjb3JyZWN0KSBidXQKLS8vICBuZXZlciBleGVjdXRlZC4g
VGhlIHVucmVhY2hhYmxlIGNvZGUgbWFjcm8gcHJvdGVjdHMgdGhlIHRlcm1pbmF0b3IKLS8vICBz
dGF0ZW1lbnQgZnJvbSBnZW5lcmF0aW5nIGFuICd1bnJlYWNoYWJsZSBjb2RlJyB3YXJuaW5nIGlu
IGNhc2UKLS8vICBzdGF0ZW1lbnQgdW5jb25kaXRpb25hbGx5IHJldHVybnMgb3IgdGhyb3dzLiBU
aGUgTWVzc2FnZSBjb25zdHJ1Y3RvciBhdAotLy8gIHRoZSBlbmQgYWxsb3dzIHRoZSBzeW50YXgg
b2Ygc3RyZWFtaW5nIGFkZGl0aW9uYWwgbWVzc2FnZXMgaW50byB0aGUKLS8vICBtYWNybywgZm9y
IGNvbXBpbGF0aW9uYWwgY29tcGF0aWJpbGl0eSB3aXRoIEVYUEVDVF9ERUFUSC9BU1NFUlRfREVB
VEguCi0jZGVmaW5lIEdURVNUX1VOU1VQUE9SVEVEX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcmVn
ZXgsIHRlcm1pbmF0b3IpIFwKLSAgICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0g
ICAgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBcCi0gICAgICBHVEVT
VF9MT0dfKFdBUk5JTkcpIFwKLSAgICAgICAgICA8PCAiRGVhdGggdGVzdHMgYXJlIG5vdCBzdXBw
b3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS5cbiIgXAotICAgICAgICAgIDw8ICJTdGF0ZW1lbnQgJyIg
I3N0YXRlbWVudCAiJyBjYW5ub3QgYmUgdmVyaWZpZWQuIjsgXAotICAgIH0gZWxzZSBpZiAoOjp0
ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2UoKSkgeyBcCi0gICAgICA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpSRTo6UGFydGlhbE1hdGNoKCIuKiIsIChyZWdleCkpOyBcCi0gICAgICBHVEVTVF9T
VVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKLSAg
ICAgIHRlcm1pbmF0b3I7IFwKLSAgICB9IGVsc2UgXAotICAgICAgOjp0ZXN0aW5nOjpNZXNzYWdl
KCkKLQogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCiB9ICAvLyBuYW1lc3BhY2Ug
aW50ZXJuYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaAppbmRleCA0Yjc2ZDc5NTA2YjAy
NmFiYTM3MTY0NzJmYzQzY2VmYzFhN2UzODhhLi5hZTM4ZDk1YmY4NDRmYTlkYzIxNzM5Y2Y4MjEy
NzZkNWIzNDE3ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oCkBAIC0yNywyMCAr
MjcsMjMgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRob3I6
IGtlaXRoLnJheUBnbWFpbC5jb20gKEtlaXRoIFJheSkKLS8vCiAvLyBHb29nbGUgVGVzdCBmaWxl
cGF0aCB1dGlsaXRpZXMKIC8vCiAvLyBUaGlzIGhlYWRlciBmaWxlIGRlY2xhcmVzIGNsYXNzZXMg
YW5kIGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkgYnkKIC8vIEdvb2dsZSBUZXN0LiAgVGhleSBh
cmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCiAvLwotLy8gVGhpcyBmaWxlIGlz
ICNpbmNsdWRlZCBpbiA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4uCisvLyBUaGlz
IGZpbGUgaXMgI2luY2x1ZGVkIGluIGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmguCiAv
LyBEbyBub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBmaWxlIHNlcGFyYXRlbHkhCiAKKy8vIEdPT0dM
RVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNU
X0lOVEVSTkFMX0dURVNUX0ZJTEVQQVRIX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1Rf
SU5URVJOQUxfR1RFU1RfRklMRVBBVEhfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0
ZXN0LXN0cmluZy5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgor
CitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MjUxIFwKKy8qIGNsYXNzIEEgbmVl
ZHMgdG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50cyBvZiBjbGFzcyBC
ICovKQogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewpAQCAtNjEs
MTEgKzY0LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBGaWxlUGF0aCB7CiAgIEZpbGVQYXRoKCkgOiBw
YXRobmFtZV8oIiIpIHsgfQogICBGaWxlUGF0aChjb25zdCBGaWxlUGF0aCYgcmhzKSA6IHBhdGhu
YW1lXyhyaHMucGF0aG5hbWVfKSB7IH0KIAotICBleHBsaWNpdCBGaWxlUGF0aChjb25zdCBjaGFy
KiBwYXRobmFtZSkgOiBwYXRobmFtZV8ocGF0aG5hbWUpIHsKLSAgICBOb3JtYWxpemUoKTsKLSAg
fQotCi0gIGV4cGxpY2l0IEZpbGVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aG5hbWUpIDogcGF0aG5h
bWVfKHBhdGhuYW1lKSB7CisgIGV4cGxpY2l0IEZpbGVQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBw
YXRobmFtZSkgOiBwYXRobmFtZV8ocGF0aG5hbWUpIHsKICAgICBOb3JtYWxpemUoKTsKICAgfQog
CkBAIC03OCw3ICs3Nyw3IEBAIGNsYXNzIEdURVNUX0FQSV8gRmlsZVBhdGggewogICAgIHBhdGhu
YW1lXyA9IHJocy5wYXRobmFtZV87CiAgIH0KIAotICBTdHJpbmcgVG9TdHJpbmcoKSBjb25zdCB7
IHJldHVybiBwYXRobmFtZV87IH0KKyAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cmluZygpIGNvbnN0
IHsgcmV0dXJuIHBhdGhuYW1lXzsgfQogICBjb25zdCBjaGFyKiBjX3N0cigpIGNvbnN0IHsgcmV0
dXJuIHBhdGhuYW1lXy5jX3N0cigpOyB9CiAKICAgLy8gUmV0dXJucyB0aGUgY3VycmVudCB3b3Jr
aW5nIGRpcmVjdG9yeSwgb3IgIiIgaWYgdW5zdWNjZXNzZnVsLgpAQCAtMTExLDggKzExMCw4IEBA
IGNsYXNzIEdURVNUX0FQSV8gRmlsZVBhdGggewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBGaWxlUGF0aCYgYmFzZV9uYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHRlbnNpb24pOwogCi0gIC8v
IFJldHVybnMgdHJ1ZSBpZmYgdGhlIHBhdGggaXMgTlVMTCBvciAiIi4KLSAgYm9vbCBJc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gY19zdHIoKSA9PSBOVUxMIHx8ICpjX3N0cigpID09ICdcMCc7IH0K
KyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgcGF0aCBpcyAiIi4KKyAgYm9vbCBJc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gcGF0aG5hbWVfLmVtcHR5KCk7IH0KIAogICAvLyBJZiBpbnB1dCBuYW1l
IGhhcyBhIHRyYWlsaW5nIHNlcGFyYXRvciBjaGFyYWN0ZXIsIHJlbW92ZXMgaXQgYW5kIHJldHVy
bnMKICAgLy8gdGhlIG5hbWUsIG90aGVyd2lzZSByZXR1cm4gdGhlIG5hbWUgc3RyaW5nIHVubW9k
aWZpZWQuCkBAIC0yMDEsMTAgKzIwMCwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIEZpbGVQYXRoIHsK
ICAgLy8gc2VwYXJhdG9ycy4gUmV0dXJucyBOVUxMIGlmIG5vIHBhdGggc2VwYXJhdG9yIHdhcyBm
b3VuZC4KICAgY29uc3QgY2hhciogRmluZExhc3RQYXRoU2VwYXJhdG9yKCkgY29uc3Q7CiAKLSAg
U3RyaW5nIHBhdGhuYW1lXzsKKyAgc3RkOjpzdHJpbmcgcGF0aG5hbWVfOwogfTsgIC8vIGNsYXNz
IEZpbGVQYXRoCiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRl
c3RpbmcKIAorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQorCiAj
ZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfRklMRVBBVEhfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtaW50ZXJuYWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaAppbmRleCAzMWE2NmU5OWQzYzQ4MjE1MWU0MGZj
MzVhNDAyNzAwNjkwMzJhMWQ1Li5iNzYyZjYxZmM1M2MzZGI5Y2ZiNzUzOTQwZDkxYjVkNTRhYjM2
MzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2d0ZXN0LWludGVybmFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oCkBAIC0yNywzNCArMjcsNDMgQEAK
IC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRob3JzOiB3YW5AZ29v
Z2xlLmNvbSAoWmhhbnlvbmcgV2FuKSwgZWVmYWNtQGdtYWlsLmNvbSAoU2VhbiBNY2FmZWUpCi0v
LwotLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8g
VGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0
KQogLy8KIC8vIFRoaXMgaGVhZGVyIGZpbGUgZGVjbGFyZXMgZnVuY3Rpb25zIGFuZCBtYWNyb3Mg
dXNlZCBpbnRlcm5hbGx5IGJ5CiAvLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8g
Y2hhbmdlIHdpdGhvdXQgbm90aWNlLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVM
RVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9JTlRFUk5B
TF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0lOVEVSTkFM
X0hfCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAi
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAjaWYgR1RFU1RfT1NfTElOVVgKLSNpbmNs
dWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvd2Fp
dC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgorIyBpbmNsdWRlIDxzdGRsaWIuaD4KKyMgaW5jbHVk
ZSA8c3lzL3R5cGVzLmg+CisjIGluY2x1ZGUgPHN5cy93YWl0Lmg+CisjIGluY2x1ZGUgPHVuaXN0
ZC5oPgogI2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAogCisjaWYgR1RFU1RfSEFTX0VYQ0VQVElP
TlMKKyMgaW5jbHVkZSA8c3RkZXhjZXB0PgorI2VuZGlmCisKICNpbmNsdWRlIDxjdHlwZS5oPgor
I2luY2x1ZGUgPGZsb2F0Lmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8aW9tYW5p
cD4KICNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHNldD4KKyNp
bmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50
ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmls
ZXBhdGguaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaD4KKyNp
bmNsdWRlICJndGVzdC9ndGVzdC1tZXNzYWdlLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtZmlsZXBhdGguaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcu
aCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCIKIAogLy8gRHVl
IHRvIEMrKyBwcmVwcm9jZXNzb3Igd2VpcmRuZXNzLCB3ZSBuZWVkIGRvdWJsZSBpbmRpcmVjdGlv
biB0bwogLy8gY29uY2F0ZW5hdGUgdHdvIHRva2VucyB3aGVuIG9uZSBvZiB0aGVtIGlzIF9fTElO
RV9fLiAgV3JpdGluZwpAQCAtNjcsMzkgKzc2LDE1IEBACiAjZGVmaW5lIEdURVNUX0NPTkNBVF9U
T0tFTl8oZm9vLCBiYXIpIEdURVNUX0NPTkNBVF9UT0tFTl9JTVBMXyhmb28sIGJhcikKICNkZWZp
bmUgR1RFU1RfQ09OQ0FUX1RPS0VOX0lNUExfKGZvbywgYmFyKSBmb28gIyMgYmFyCiAKLS8vIEdv
b2dsZSBUZXN0IGRlZmluZXMgdGhlIHRlc3Rpbmc6Ok1lc3NhZ2UgY2xhc3MgdG8gYWxsb3cgY29u
c3RydWN0aW9uIG9mCi0vLyB0ZXN0IG1lc3NhZ2VzIHZpYSB0aGUgPDwgb3BlcmF0b3IuICBUaGUg
aWRlYSBpcyB0aGF0IGFueXRoaW5nCi0vLyBzdHJlYW1hYmxlIHRvIHN0ZDo6b3N0cmVhbSBjYW4g
YmUgc3RyZWFtZWQgdG8gYSB0ZXN0aW5nOjpNZXNzYWdlLgotLy8gVGhpcyBhbGxvd3MgYSB1c2Vy
IHRvIHVzZSBoaXMgb3duIHR5cGVzIGluIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgYnkKLS8vIG92
ZXJsb2FkaW5nIHRoZSA8PCBvcGVyYXRvci4KLS8vCi0vLyB1dGlsL2d0bC9zdGxfbG9nZ2luZy1p
bmwuaCBvdmVybG9hZHMgPDwgZm9yIFNUTCBjb250YWluZXJzLiAgVGhlc2UKLS8vIG92ZXJsb2Fk
cyBjYW5ub3QgYmUgZGVmaW5lZCBpbiB0aGUgc3RkIG5hbWVzcGFjZSwgYXMgdGhhdCB3aWxsIGJl
Ci0vLyB1bmRlZmluZWQgYmVoYXZpb3IuICBUaGVyZWZvcmUsIHRoZXkgYXJlIGRlZmluZWQgaW4g
dGhlIGdsb2JhbAotLy8gbmFtZXNwYWNlIGluc3RlYWQuCi0vLwotLy8gQysrJ3Mgc3ltYm9sIGxv
b2t1cCBydWxlIChpLmUuIEtvZW5pZyBsb29rdXApIHNheXMgdGhhdCB0aGVzZQotLy8gb3Zlcmxv
YWRzIGFyZSB2aXNpYmxlIGluIGVpdGhlciB0aGUgc3RkIG5hbWVzcGFjZSBvciB0aGUgZ2xvYmFs
Ci0vLyBuYW1lc3BhY2UsIGJ1dCBub3Qgb3RoZXIgbmFtZXNwYWNlcywgaW5jbHVkaW5nIHRoZSB0
ZXN0aW5nCi0vLyBuYW1lc3BhY2Ugd2hpY2ggR29vZ2xlIFRlc3QncyBNZXNzYWdlIGNsYXNzIGlz
IGluLgotLy8KLS8vIFRvIGFsbG93IFNUTCBjb250YWluZXJzIChhbmQgb3RoZXIgdHlwZXMgdGhh
dCBoYXMgYSA8PCBvcGVyYXRvcgotLy8gZGVmaW5lZCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZSkg
dG8gYmUgdXNlZCBpbiBHb29nbGUgVGVzdCBhc3NlcnRpb25zLAotLy8gdGVzdGluZzo6TWVzc2Fn
ZSBtdXN0IGFjY2VzcyB0aGUgY3VzdG9tIDw8IG9wZXJhdG9yIGZyb20gdGhlIGdsb2JhbAotLy8g
bmFtZXNwYWNlLiAgSGVuY2UgdGhpcyBoZWxwZXIgZnVuY3Rpb24uCi0vLwotLy8gTm90ZTogSmVm
ZnJleSBZYXNza2luIHN1Z2dlc3RlZCBhbiBhbHRlcm5hdGl2ZSBmaXggYnkgInVzaW5nCi0vLyA6
Om9wZXJhdG9yPDw7IiBpbiB0aGUgZGVmaW5pdGlvbiBvZiBNZXNzYWdlJ3Mgb3BlcmF0b3I8PC4g
IFRoYXQgZml4Ci0vLyBkb2Vzbid0IHJlcXVpcmUgYSBoZWxwZXIgZnVuY3Rpb24sIGJ1dCB1bmZv
cnR1bmF0ZWx5IGRvZXNuJ3QKLS8vIGNvbXBpbGUgd2l0aCBNU1ZDLgotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1pbmxpbmUgdm9pZCBHVGVzdFN0cmVhbVRvSGVscGVyKHN0ZDo6b3N0cmVhbSogb3Ms
IGNvbnN0IFQmIHZhbCkgewotICAqb3MgPDwgdmFsOwotfQorLy8gU3RyaW5naWZpZXMgaXRzIGFy
Z3VtZW50LgorI2RlZmluZSBHVEVTVF9TVFJJTkdJRllfKG5hbWUpICNuYW1lCisKK2NsYXNzIFBy
b3RvY29sTWVzc2FnZTsKK25hbWVzcGFjZSBwcm90bzIgeyBjbGFzcyBNZXNzYWdlOyB9CiAKIG5h
bWVzcGFjZSB0ZXN0aW5nIHsKIAotLy8gRm9yd2FyZCBkZWNsYXJhdGlvbiBvZiBjbGFzc2VzLgor
Ly8gRm9yd2FyZCBkZWNsYXJhdGlvbnMuCiAKIGNsYXNzIEFzc2VydGlvblJlc3VsdDsgICAgICAg
ICAgICAgICAgIC8vIFJlc3VsdCBvZiBhbiBhc3NlcnRpb24uCiBjbGFzcyBNZXNzYWdlOyAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBSZXByZXNlbnRzIGEgZmFpbHVyZSBtZXNzYWdlLgpAQCAt
MTA4LDI1ICs5MywxOSBAQCBjbGFzcyBUZXN0SW5mbzsgICAgICAgICAgICAgICAgICAgICAgICAv
LyBJbmZvcm1hdGlvbiBhYm91dCBhIHRlc3QuCiBjbGFzcyBUZXN0UGFydFJlc3VsdDsgICAgICAg
ICAgICAgICAgICAvLyBSZXN1bHQgb2YgYSB0ZXN0IHBhcnQuCiBjbGFzcyBVbml0VGVzdDsgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBBIGNvbGxlY3Rpb24gb2YgdGVzdCBjYXNlcy4KIAordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Cis6OnN0ZDo6c3RyaW5nIFByaW50VG9TdHJpbmcoY29uc3QgVCYg
dmFsdWUpOworCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCiBzdHJ1Y3QgVHJhY2VJbmZvOyAgICAg
ICAgICAgICAgICAgICAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCBhIHRyYWNlIHBvaW50LgotY2xh
c3MgU2NvcGVkVHJhY2U7ICAgICAgICAgICAgICAgICAgICAgLy8gSW1wbGVtZW50cyBzY29wZWQg
dHJhY2UuCiBjbGFzcyBUZXN0SW5mb0ltcGw7ICAgICAgICAgICAgICAgICAgICAvLyBPcGFxdWUg
aW1wbGVtZW50YXRpb24gb2YgVGVzdEluZm8KIGNsYXNzIFVuaXRUZXN0SW1wbDsgICAgICAgICAg
ICAgICAgICAgIC8vIE9wYXF1ZSBpbXBsZW1lbnRhdGlvbiBvZiBVbml0VGVzdAogCi0vLyBIb3cg
bWFueSB0aW1lcyBJbml0R29vZ2xlVGVzdCgpIGhhcyBiZWVuIGNhbGxlZC4KLWV4dGVybiBpbnQg
Z19pbml0X2d0ZXN0X2NvdW50OwotCiAvLyBUaGUgdGV4dCB1c2VkIGluIGZhaWx1cmUgbWVzc2Fn
ZXMgdG8gaW5kaWNhdGUgdGhlIHN0YXJ0IG9mIHRoZQogLy8gc3RhY2sgdHJhY2UuCiBHVEVTVF9B
UElfIGV4dGVybiBjb25zdCBjaGFyIGtTdGFja1RyYWNlTWFya2VyW107CiAKLS8vIEEgc2VjcmV0
IHR5cGUgdGhhdCBHb29nbGUgVGVzdCB1c2VycyBkb24ndCBrbm93IGFib3V0LiAgSXQgaGFzIG5v
Ci0vLyBkZWZpbml0aW9uIG9uIHB1cnBvc2UuICBUaGVyZWZvcmUgaXQncyBpbXBvc3NpYmxlIHRv
IGNyZWF0ZSBhCi0vLyBTZWNyZXQgb2JqZWN0LCB3aGljaCBpcyB3aGF0IHdlIHdhbnQuCi1jbGFz
cyBTZWNyZXQ7Ci0KIC8vIFR3byBvdmVybG9hZGVkIGhlbHBlcnMgZm9yIGNoZWNraW5nIGF0IGNv
bXBpbGUgdGltZSB3aGV0aGVyIGFuCiAvLyBleHByZXNzaW9uIGlzIGEgbnVsbCBwb2ludGVyIGxp
dGVyYWwgKGkuZS4gTlVMTCBvciBhbnkgMC12YWx1ZWQKIC8vIGNvbXBpbGUtdGltZSBpbnRlZ3Jh
bCBjb25zdGFudCkuICBUaGVpciByZXR1cm4gdmFsdWVzIGhhdmUKQEAgLTE1MCwxMjcgKzEyOSw2
NSBAQCBjaGFyICgmSXNOdWxsTGl0ZXJhbEhlbHBlciguLi4pKVsyXTsgIC8vIE5PTElOVAogI2lm
ZGVmIEdURVNUX0VMTElQU0lTX05FRURTX1BPRF8KIC8vIFdlIGxvc2Ugc3VwcG9ydCBmb3IgTlVM
TCBkZXRlY3Rpb24gd2hlcmUgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZQogLy8gcGFzc2luZyBu
b24tUE9EIGNsYXNzZXMgdGhyb3VnaCBlbGxpcHNpcyAoLi4uKS4KLSNkZWZpbmUgR1RFU1RfSVNf
TlVMTF9MSVRFUkFMXyh4KSBmYWxzZQorIyBkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4
KSBmYWxzZQogI2Vsc2UKLSNkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBcCisjIGRl
ZmluZSBHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHgpIFwKICAgICAoc2l6ZW9mKDo6dGVzdGluZzo6
aW50ZXJuYWw6OklzTnVsbExpdGVyYWxIZWxwZXIoeCkpID09IDEpCiAjZW5kaWYgIC8vIEdURVNU
X0VMTElQU0lTX05FRURTX1BPRF8KIAogLy8gQXBwZW5kcyB0aGUgdXNlci1zdXBwbGllZCBtZXNz
YWdlIHRvIHRoZSBHb29nbGUtVGVzdC1nZW5lcmF0ZWQgbWVzc2FnZS4KLUdURVNUX0FQSV8gU3Ry
aW5nIEFwcGVuZFVzZXJNZXNzYWdlKGNvbnN0IFN0cmluZyYgZ3Rlc3RfbXNnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVzc2FnZSYgdXNlcl9tc2cpOwotCi0v
LyBBIGhlbHBlciBjbGFzcyBmb3IgY3JlYXRpbmcgc2NvcGVkIHRyYWNlcyBpbiB1c2VyIHByb2dy
YW1zLgotY2xhc3MgR1RFU1RfQVBJXyBTY29wZWRUcmFjZSB7Ci0gcHVibGljOgotICAvLyBUaGUg
Yyd0b3IgcHVzaGVzIHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlvbiBhbmQgbWVzc2FnZSBv
bnRvCi0gIC8vIGEgdHJhY2Ugc3RhY2sgbWFpbnRhaW5lZCBieSBHb29nbGUgVGVzdC4KLSAgU2Nv
cGVkVHJhY2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IE1lc3NhZ2UmIG1lc3Nh
Z2UpOwotCi0gIC8vIFRoZSBkJ3RvciBwb3BzIHRoZSBpbmZvIHB1c2hlZCBieSB0aGUgYyd0b3Iu
Ci0gIC8vCi0gIC8vIE5vdGUgdGhhdCB0aGUgZCd0b3IgaXMgbm90IHZpcnR1YWwgaW4gb3JkZXIg
dG8gYmUgZWZmaWNpZW50LgotICAvLyBEb24ndCBpbmhlcml0IGZyb20gU2NvcGVkVHJhY2UhCi0g
IH5TY29wZWRUcmFjZSgpOwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOXyhTY29wZWRUcmFjZSk7Ci19IEdURVNUX0FUVFJJQlVURV9VTlVTRURfOyAgLy8gQSBT
Y29wZWRUcmFjZSBvYmplY3QgZG9lcyBpdHMgam9iIGluIGl0cwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGMndG9yIGFuZCBkJ3Rvci4gIFRoZXJlZm9yZSBpdCBkb2Vzbid0Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmVlZCB0byBiZSB1c2VkIG90aGVyd2lzZS4KLQot
Ly8gQ29udmVydHMgYSBzdHJlYW1hYmxlIHZhbHVlIHRvIGEgU3RyaW5nLiAgQSBOVUxMIHBvaW50
ZXIgaXMKLS8vIGNvbnZlcnRlZCB0byAiKG51bGwpIi4gIFdoZW4gdGhlIGlucHV0IHZhbHVlIGlz
IGEgOjpzdHJpbmcsCi0vLyA6OnN0ZDo6c3RyaW5nLCA6OndzdHJpbmcsIG9yIDo6c3RkOjp3c3Ry
aW5nIG9iamVjdCwgZWFjaCBOVUwKLS8vIGNoYXJhY3RlciBpbiBpdCBpcyByZXBsYWNlZCB3aXRo
ICJcXDAiLgotLy8gRGVjbGFyZWQgaGVyZSBidXQgZGVmaW5lZCBpbiBndGVzdC5oLCBzbyB0aGF0
IGl0IGhhcyBhY2Nlc3MKLS8vIHRvIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBNZXNzYWdlIGNsYXNz
LCByZXF1aXJlZCBieSB0aGUgQVJNCi0vLyBjb21waWxlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotU3RyaW5nIFN0cmVhbWFibGVUb1N0cmluZyhjb25zdCBUJiBzdHJlYW1hYmxlKTsKLQotLy8g
Rm9ybWF0cyBhIHZhbHVlIHRvIGJlIHVzZWQgaW4gYSBmYWlsdXJlIG1lc3NhZ2UuCi0KLSNpZmRl
ZiBHVEVTVF9ORUVEU19JU19QT0lOVEVSXwotCi0vLyBUaGVzZSBhcmUgbmVlZGVkIGFzIHRoZSBO
b2tpYSBTeW1iaWFuIGFuZCBJQk0gWEwgQy9DKysgY29tcGlsZXJzCi0vLyBjYW5ub3QgZGVjaWRl
IGJldHdlZW4gY29uc3QgVCYgYW5kIGNvbnN0IFQqIGluIGEgZnVuY3Rpb24gdGVtcGxhdGUuCi0v
LyBUaGVzZSBjb21waWxlcnMgX2Nhbl8gZGVjaWRlIGJldHdlZW4gY2xhc3MgdGVtcGxhdGUgc3Bl
Y2lhbGl6YXRpb25zCi0vLyBmb3IgVCBhbmQgVCosIHNvIGEgdHIxOjp0eXBlX3RyYWl0cy1saWtl
IGlzX3BvaW50ZXIgd29ya3MsIGFuZCB3ZQotLy8gY2FuIG92ZXJsb2FkIG9uIHRoYXQuCitHVEVT
VF9BUElfIHN0ZDo6c3RyaW5nIEFwcGVuZFVzZXJNZXNzYWdlKAorICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBndGVzdF9tc2csIGNvbnN0IE1lc3NhZ2UmIHVzZXJfbXNnKTsKIAotLy8gVGhpcyBvdmVy
bG9hZCBtYWtlcyBzdXJlIHRoYXQgYWxsIHBvaW50ZXJzIChpbmNsdWRpbmcKLS8vIHRob3NlIHRv
IGNoYXIgb3Igd2NoYXJfdCkgYXJlIHByaW50ZWQgYXMgcmF3IHBvaW50ZXJzLgotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1pbmxpbmUgU3RyaW5nIEZvcm1hdFZhbHVlRm9yRmFpbHVyZU1lc3NhZ2Uo
aW50ZXJuYWw6OnRydWVfdHlwZSAvKmR1bW15Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVCogcG9pbnRlcikgewotICByZXR1cm4gU3RyZWFtYWJsZVRvU3Ry
aW5nKHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihwb2ludGVyKSk7Ci19Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotaW5saW5lIFN0cmluZyBGb3JtYXRWYWx1ZUZvckZhaWx1cmVNZXNzYWdlKGlu
dGVybmFsOjpmYWxzZV90eXBlIC8qZHVtbXkqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUJiB2YWx1ZSkgewotICByZXR1cm4gU3RyZWFtYWJsZVRv
U3RyaW5nKHZhbHVlKTsKLX0KKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLWlubGluZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3Qg
VCYgdmFsdWUpIHsKLSAgcmV0dXJuIEZvcm1hdFZhbHVlRm9yRmFpbHVyZU1lc3NhZ2UoCi0gICAg
ICB0eXBlbmFtZSBpbnRlcm5hbDo6aXNfcG9pbnRlcjxUPjo6dHlwZSgpLCB2YWx1ZSk7Ci19CitH
VEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0Mjc1IFwKKy8qIGFuIGV4cG9ydGVkIGNs
YXNzIHdhcyBkZXJpdmVkIGZyb20gYSBjbGFzcyB0aGF0IHdhcyBub3QgZXhwb3J0ZWQgKi8pCiAK
LSNlbHNlCisvLyBUaGlzIGV4Y2VwdGlvbiBpcyB0aHJvd24gYnkgKGFuZCBvbmx5IGJ5KSBhIGZh
aWxlZCBHb29nbGUgVGVzdAorLy8gYXNzZXJ0aW9uIHdoZW4gR1RFU1RfRkxBRyh0aHJvd19vbl9m
YWlsdXJlKSBpcyB0cnVlIChpZiBleGNlcHRpb25zCisvLyBhcmUgZW5hYmxlZCkuICBXZSBkZXJp
dmUgaXQgZnJvbSBzdGQ6OnJ1bnRpbWVfZXJyb3IsIHdoaWNoIGlzIGZvcgorLy8gZXJyb3JzIHBy
ZXN1bWFibHkgZGV0ZWN0YWJsZSBvbmx5IGF0IHJ1biB0aW1lLiAgU2luY2UKKy8vIHN0ZDo6cnVu
dGltZV9lcnJvciBpbmhlcml0cyBmcm9tIHN0ZDo6ZXhjZXB0aW9uLCBtYW55IHRlc3RpbmcKKy8v
IGZyYW1ld29ya3Mga25vdyBob3cgdG8gZXh0cmFjdCBhbmQgcHJpbnQgdGhlIG1lc3NhZ2UgaW5z
aWRlIGl0LgorY2xhc3MgR1RFU1RfQVBJXyBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbiA6IHB1
YmxpYyA6OnN0ZDo6cnVudGltZV9lcnJvciB7CisgcHVibGljOgorICBleHBsaWNpdCBHb29nbGVU
ZXN0RmFpbHVyZUV4Y2VwdGlvbihjb25zdCBUZXN0UGFydFJlc3VsdCYgZmFpbHVyZSk7Cit9Owog
Ci0vLyBUaGVzZSBhcmUgbmVlZGVkIGFzIHRoZSBhYm92ZSBzb2x1dGlvbiB1c2luZyBpc19wb2lu
dGVyIGhhcyB0aGUKLS8vIGxpbWl0YXRpb24gdGhhdCBUIGNhbm5vdCBiZSBhIHR5cGUgd2l0aG91
dCBleHRlcm5hbCBsaW5rYWdlLCB3aGVuCi0vLyBjb21waWxlZCB1c2luZyBNU1ZDLgorR1RFU1Rf
RElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI3NQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLWlubGluZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3QgVCYgdmFs
dWUpIHsKLSAgcmV0dXJuIFN0cmVhbWFibGVUb1N0cmluZyh2YWx1ZSk7Ci19CisjZW5kaWYgIC8v
IEdURVNUX0hBU19FWENFUFRJT05TCiAKLS8vIFRoaXMgb3ZlcmxvYWQgbWFrZXMgc3VyZSB0aGF0
IGFsbCBwb2ludGVycyAoaW5jbHVkaW5nCi0vLyB0aG9zZSB0byBjaGFyIG9yIHdjaGFyX3QpIGFy
ZSBwcmludGVkIGFzIHJhdyBwb2ludGVycy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5l
IFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShUKiBwb2ludGVyKSB7Ci0gIHJldHVybiBT
dHJlYW1hYmxlVG9TdHJpbmcoc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHBvaW50ZXIpKTsKLX0K
K25hbWVzcGFjZSBlZGl0X2Rpc3RhbmNlIHsKKy8vIFJldHVybnMgdGhlIG9wdGltYWwgZWRpdHMg
dG8gZ28gZnJvbSAnbGVmdCcgdG8gJ3JpZ2h0Jy4KKy8vIEFsbCBlZGl0cyBjb3N0IHRoZSBzYW1l
LCB3aXRoIHJlcGxhY2UgaGF2aW5nIGxvd2VyIHByaW9yaXR5IHRoYW4KKy8vIGFkZC9yZW1vdmUu
CisvLyBTaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFdhZ25lci1GaXNjaGVyIGFsZ29yaXRo
bS4KKy8vIFNlZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dhZ25lci1GaXNjaGVyX2Fs
Z29yaXRobQorZW51bSBFZGl0VHlwZSB7IGtNYXRjaCwga0FkZCwga1JlbW92ZSwga1JlcGxhY2Ug
fTsKK0dURVNUX0FQSV8gc3RkOjp2ZWN0b3I8RWRpdFR5cGU+IENhbGN1bGF0ZU9wdGltYWxFZGl0
cygKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+JiBsZWZ0LCBjb25zdCBzdGQ6OnZlY3Rv
cjxzaXplX3Q+JiByaWdodCk7CiAKLSNlbmRpZiAgLy8gR1RFU1RfTkVFRFNfSVNfUE9JTlRFUl8K
LQotLy8gVGhlc2Ugb3ZlcmxvYWRlZCB2ZXJzaW9ucyBoYW5kbGUgbmFycm93IGFuZCB3aWRlIGNo
YXJhY3RlcnMuCi1HVEVTVF9BUElfIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjaGFy
IGNoKTsKLUdURVNUX0FQSV8gU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKHdjaGFyX3Qg
d2NoYXIpOwotCi0vLyBXaGVuIHRoaXMgb3BlcmFuZCBpcyBhIGNvbnN0IGNoYXIqIG9yIGNoYXIq
LCBhbmQgdGhlIG90aGVyIG9wZXJhbmQKLS8vIGlzIGEgOjpzdGQ6OnN0cmluZyBvciA6OnN0cmlu
Zywgd2UgcHJpbnQgdGhpcyBvcGVyYW5kIGFzIGEgQyBzdHJpbmcKLS8vIHJhdGhlciB0aGFuIGEg
cG9pbnRlci4gIFdlIGRvIHRoZSBzYW1lIGZvciB3aWRlIHN0cmluZ3MuCi0KLS8vIFRoaXMgaW50
ZXJuYWwgbWFjcm8gaXMgdXNlZCB0byBhdm9pZCBkdXBsaWNhdGVkIGNvZGUuCi0jZGVmaW5lIEdU
RVNUX0ZPUk1BVF9JTVBMXyhvcGVyYW5kMl90eXBlLCBvcGVyYW5kMV9wcmludGVyKVwKLWlubGlu
ZSBTdHJpbmcgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKFwKLSAgICBvcGVyYW5k
Ml90eXBlOjp2YWx1ZV90eXBlKiBzdHIsIGNvbnN0IG9wZXJhbmQyX3R5cGUmIC8qb3BlcmFuZDIq
Lykge1wKLSAgcmV0dXJuIG9wZXJhbmQxX3ByaW50ZXIoc3RyKTtcCi19XAotaW5saW5lIFN0cmlu
ZyBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoXAotICAgIGNvbnN0IG9wZXJhbmQy
X3R5cGU6OnZhbHVlX3R5cGUqIHN0ciwgY29uc3Qgb3BlcmFuZDJfdHlwZSYgLypvcGVyYW5kMiov
KSB7XAotICByZXR1cm4gb3BlcmFuZDFfcHJpbnRlcihzdHIpO1wKLX0KKy8vIFNhbWUgYXMgYWJv
dmUsIGJ1dCB0aGUgaW5wdXQgaXMgcmVwcmVzZW50ZWQgYXMgc3RyaW5ncy4KK0dURVNUX0FQSV8g
c3RkOjp2ZWN0b3I8RWRpdFR5cGU+IENhbGN1bGF0ZU9wdGltYWxFZGl0cygKKyAgICBjb25zdCBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGxlZnQsCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+JiByaWdodCk7CiAKLUdURVNUX0ZPUk1BVF9JTVBMXyg6OnN0ZDo6c3RyaW5nLCBT
dHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKQotI2lmIEdURVNUX0hBU19TVERfV1NUUklORwotR1RF
U1RfRk9STUFUX0lNUExfKDo6c3RkOjp3c3RyaW5nLCBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1
b3RlZCkKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RSSU5HCisvLyBDcmVhdGUgYSBkaWZm
IG9mIHRoZSBpbnB1dCBzdHJpbmdzIGluIFVuaWZpZWQgZGlmZiBmb3JtYXQuCitHVEVTVF9BUElf
IHN0ZDo6c3RyaW5nIENyZWF0ZVVuaWZpZWREaWZmKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiYgbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiByaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvbnRleHQgPSAyKTsKIAotI2lmIEdURVNUX0hB
U19HTE9CQUxfU1RSSU5HCi1HVEVTVF9GT1JNQVRfSU1QTF8oOjpzdHJpbmcsIFN0cmluZzo6U2hv
d0NTdHJpbmdRdW90ZWQpCi0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0jaWYg
R1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCi1HVEVTVF9GT1JNQVRfSU1QTF8oOjp3c3RyaW5nLCBT
dHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZCkKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JB
TF9XU1RSSU5HCit9ICAvLyBuYW1lc3BhY2UgZWRpdF9kaXN0YW5jZQogCi0jdW5kZWYgR1RFU1Rf
Rk9STUFUX0lNUExfCisvLyBDYWxjdWxhdGUgdGhlIGRpZmYgYmV0d2VlbiAnbGVmdCcgYW5kICdy
aWdodCcgYW5kIHJldHVybiBpdCBpbiB1bmlmaWVkIGRpZmYKKy8vIGZvcm1hdC4KKy8vIElmIG5v
dCBudWxsLCBzdG9yZXMgaW4gJ3RvdGFsX2xpbmVfY291bnQnIHRoZSB0b3RhbCBudW1iZXIgb2Yg
bGluZXMgZm91bmQKKy8vIGluIGxlZnQgKyByaWdodC4KK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcg
RGlmZlN0cmluZ3MoY29uc3Qgc3RkOjpzdHJpbmcmIGxlZnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiByaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiB0b3RhbF9saW5lX2NvdW50KTsKIAogLy8gQ29u
c3RydWN0cyBhbmQgcmV0dXJucyB0aGUgbWVzc2FnZSBmb3IgYW4gZXF1YWxpdHkgYXNzZXJ0aW9u
CiAvLyAoZS5nLiBBU1NFUlRfRVEsIEVYUEVDVF9TVFJFUSwgZXRjKSBmYWlsdXJlLgpAQCAtMjg5
LDEyICsyMDYsMTIgQEAgR1RFU1RfRk9STUFUX0lNUExfKDo6d3N0cmluZywgU3RyaW5nOjpTaG93
V2lkZUNTdHJpbmdRdW90ZWQpCiAvLyBiZSBpbnNlcnRlZCBpbnRvIHRoZSBtZXNzYWdlLgogR1RF
U1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgRXFGYWlsdXJlKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4
cHJlc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiBleHBlY3RlZF92YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGFjdHVhbF92YWx1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRfdmFsdWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IGFjdHVhbF92YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGlnbm9yaW5nX2Nhc2UpOwogCiAvLyBDb25zdHJ1Y3RzIGEgZmFpbHVyZSBtZXNzYWdlIGZvciBC
b29sZWFuIGFzc2VydGlvbnMgc3VjaCBhcyBFWFBFQ1RfVFJVRS4KLUdURVNUX0FQSV8gU3RyaW5n
IEdldEJvb2xBc3NlcnRpb25GYWlsdXJlTWVzc2FnZSgKK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcg
R2V0Qm9vbEFzc2VydGlvbkZhaWx1cmVNZXNzYWdlKAogICAgIGNvbnN0IEFzc2VydGlvblJlc3Vs
dCYgYXNzZXJ0aW9uX3Jlc3VsdCwKICAgICBjb25zdCBjaGFyKiBleHByZXNzaW9uX3RleHQsCiAg
ICAgY29uc3QgY2hhciogYWN0dWFsX3ByZWRpY2F0ZV92YWx1ZSwKQEAgLTM2OSw3ICsyODYsNyBA
QCBjbGFzcyBGbG9hdGluZ1BvaW50IHsKICAgLy8gYml0cy4gIFRoZXJlZm9yZSwgNCBzaG91bGQg
YmUgZW5vdWdoIGZvciBvcmRpbmFyeSB1c2UuCiAgIC8vCiAgIC8vIFNlZSB0aGUgZm9sbG93aW5n
IGFydGljbGUgZm9yIG1vcmUgZGV0YWlscyBvbiBVTFA6Ci0gIC8vIGh0dHA6Ly93d3cuY3lnbnVz
LXNvZnR3YXJlLmNvbS9wYXBlcnMvY29tcGFyaW5nZmxvYXRzL2NvbXBhcmluZ2Zsb2F0cy5odG0u
CisgIC8vIGh0dHA6Ly9yYW5kb21hc2NpaS53b3JkcHJlc3MuY29tLzIwMTIvMDIvMjUvY29tcGFy
aW5nLWZsb2F0aW5nLXBvaW50LW51bWJlcnMtMjAxMi1lZGl0aW9uLwogICBzdGF0aWMgY29uc3Qg
c2l6ZV90IGtNYXhVbHBzID0gNDsKIAogICAvLyBDb25zdHJ1Y3RzIGEgRmxvYXRpbmdQb2ludCBm
cm9tIGEgcmF3IGZsb2F0aW5nLXBvaW50IG51bWJlci4KQEAgLTM5Niw2ICszMTMsOSBAQCBjbGFz
cyBGbG9hdGluZ1BvaW50IHsKICAgICByZXR1cm4gUmVpbnRlcnByZXRCaXRzKGtFeHBvbmVudEJp
dE1hc2spOwogICB9CiAKKyAgLy8gUmV0dXJucyB0aGUgbWF4aW11bSByZXByZXNlbnRhYmxlIGZp
bml0ZSBmbG9hdGluZy1wb2ludCBudW1iZXIuCisgIHN0YXRpYyBSYXdUeXBlIE1heCgpOworCiAg
IC8vIE5vbi1zdGF0aWMgbWV0aG9kcwogCiAgIC8vIFJldHVybnMgdGhlIGJpdHMgdGhhdCByZXBy
ZXNlbnRzIHRoaXMgbnVtYmVyLgpAQCAtNDc2LDYgKzM5NiwxMyBAQCBjbGFzcyBGbG9hdGluZ1Bv
aW50IHsKICAgRmxvYXRpbmdQb2ludFVuaW9uIHVfOwogfTsKIAorLy8gV2UgY2Fubm90IHVzZSBz
dGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSBhcyBpdCBjbGFzaGVzIHdpdGggdGhlIG1heCgp
CisvLyBtYWNybyBkZWZpbmVkIGJ5IDx3aW5kb3dzLmg+LgordGVtcGxhdGUgPD4KK2lubGluZSBm
bG9hdCBGbG9hdGluZ1BvaW50PGZsb2F0Pjo6TWF4KCkgeyByZXR1cm4gRkxUX01BWDsgfQordGVt
cGxhdGUgPD4KK2lubGluZSBkb3VibGUgRmxvYXRpbmdQb2ludDxkb3VibGU+OjpNYXgoKSB7IHJl
dHVybiBEQkxfTUFYOyB9CisKIC8vIFR5cGVkZWZzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIEZsb2F0
aW5nUG9pbnQgdGVtcGxhdGUgY2xhc3MgdGhhdCB3ZQogLy8gY2FyZSB0byB1c2UuCiB0eXBlZGVm
IEZsb2F0aW5nUG9pbnQ8ZmxvYXQ+IEZsb2F0OwpAQCAtNTU4LDI0ICs0ODUsMTggQEAgR1RFU1Rf
QVBJXyBBc3NlcnRpb25SZXN1bHQgSXNIUkVTVUxURmFpbHVyZShjb25zdCBjaGFyKiBleHByLAog
CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAotLy8gRm9ybWF0cyBhIHNvdXJjZSBmaWxl
IHBhdGggYW5kIGEgbGluZSBudW1iZXIgYXMgdGhleSB3b3VsZCBhcHBlYXIKLS8vIGluIGEgY29t
cGlsZXIgZXJyb3IgbWVzc2FnZS4KLWlubGluZSBTdHJpbmcgRm9ybWF0RmlsZUxvY2F0aW9uKGNv
bnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKSB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IGZpbGVfbmFt
ZSA9IGZpbGUgPT0gTlVMTCA/ICJ1bmtub3duIGZpbGUiIDogZmlsZTsKLSAgaWYgKGxpbmUgPCAw
KSB7Ci0gICAgcmV0dXJuIFN0cmluZzo6Rm9ybWF0KCIlczoiLCBmaWxlX25hbWUpOwotICB9Ci0j
aWZkZWYgX01TQ19WRVIKLSAgcmV0dXJuIFN0cmluZzo6Rm9ybWF0KCIlcyglZCk6IiwgZmlsZV9u
YW1lLCBsaW5lKTsKLSNlbHNlCi0gIHJldHVybiBTdHJpbmc6OkZvcm1hdCgiJXM6JWQ6IiwgZmls
ZV9uYW1lLCBsaW5lKTsKLSNlbmRpZiAgLy8gX01TQ19WRVIKLX0KLQogLy8gVHlwZXMgb2YgU2V0
VXBUZXN0Q2FzZSgpIGFuZCBUZWFyRG93blRlc3RDYXNlKCkgZnVuY3Rpb25zLgogdHlwZWRlZiB2
b2lkICgqU2V0VXBUZXN0Q2FzZUZ1bmMpKCk7CiB0eXBlZGVmIHZvaWQgKCpUZWFyRG93blRlc3RD
YXNlRnVuYykoKTsKIAorc3RydWN0IENvZGVMb2NhdGlvbiB7CisgIENvZGVMb2NhdGlvbihjb25z
dCBzdGQ6OnN0cmluZyYgYV9maWxlLCBpbnQgYV9saW5lKQorICAgICAgOiBmaWxlKGFfZmlsZSks
IGxpbmUoYV9saW5lKSB7fQorCisgIHN0ZDo6c3RyaW5nIGZpbGU7CisgIGludCBsaW5lOworfTsK
KwogLy8gQ3JlYXRlcyBhIG5ldyBUZXN0SW5mbyBvYmplY3QgYW5kIHJlZ2lzdGVycyBpdCB3aXRo
IEdvb2dsZSBUZXN0OwogLy8gcmV0dXJucyB0aGUgY3JlYXRlZCBvYmplY3QuCiAvLwpAQCAtNTgz
LDEwICs1MDQsMTEgQEAgdHlwZWRlZiB2b2lkICgqVGVhckRvd25UZXN0Q2FzZUZ1bmMpKCk7CiAv
LwogLy8gICB0ZXN0X2Nhc2VfbmFtZTogICBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UKIC8vICAgbmFt
ZTogICAgICAgICAgICAgbmFtZSBvZiB0aGUgdGVzdAotLy8gICB0ZXN0X2Nhc2VfY29tbWVudDog
YSBjb21tZW50IG9uIHRoZSB0ZXN0IGNhc2UgdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluCi0vLyAg
ICAgICAgICAgICAgICAgICAgICB0aGUgdGVzdCBvdXRwdXQKLS8vICAgY29tbWVudDogICAgICAg
ICAgYSBjb21tZW50IG9uIHRoZSB0ZXN0IHRoYXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKLS8v
ICAgICAgICAgICAgICAgICAgICAgdGVzdCBvdXRwdXQKKy8vICAgdHlwZV9wYXJhbSAgICAgICAg
dGhlIG5hbWUgb2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorLy8gICAg
ICAgICAgICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3QuCisvLyAgIHZhbHVlX3BhcmFtICAgICAgIHRleHQgcmVwcmVzZW50YXRpb24gb2Yg
dGhlIHRlc3QncyB2YWx1ZSBwYXJhbWV0ZXIsCisvLyAgICAgICAgICAgICAgICAgICAgIG9yIE5V
TEwgaWYgdGhpcyBpcyBub3QgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKy8vICAgY29kZV9s
b2NhdGlvbjogICAgY29kZSBsb2NhdGlvbiB3aGVyZSB0aGUgdGVzdCBpcyBkZWZpbmVkCiAvLyAg
IGZpeHR1cmVfY2xhc3NfaWQ6IElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKIC8vICAgc2V0
X3VwX3RjOiAgICAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSB0
ZXN0IGNhc2UKIC8vICAgdGVhcl9kb3duX3RjOiAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24g
dGhhdCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UKQEAgLTU5NCw4ICs1MTYsMTEgQEAgdHlwZWRl
ZiB2b2lkICgqVGVhckRvd25UZXN0Q2FzZUZ1bmMpKCk7CiAvLyAgICAgICAgICAgICAgICAgICAg
IFRoZSBuZXdseSBjcmVhdGVkIFRlc3RJbmZvIGluc3RhbmNlIHdpbGwgYXNzdW1lCiAvLyAgICAg
ICAgICAgICAgICAgICAgIG93bmVyc2hpcCBvZiB0aGUgZmFjdG9yeSBvYmplY3QuCiBHVEVTVF9B
UElfIFRlc3RJbmZvKiBNYWtlQW5kUmVnaXN0ZXJUZXN0SW5mbygKLSAgICBjb25zdCBjaGFyKiB0
ZXN0X2Nhc2VfbmFtZSwgY29uc3QgY2hhciogbmFtZSwKLSAgICBjb25zdCBjaGFyKiB0ZXN0X2Nh
c2VfY29tbWVudCwgY29uc3QgY2hhciogY29tbWVudCwKKyAgICBjb25zdCBjaGFyKiB0ZXN0X2Nh
c2VfbmFtZSwKKyAgICBjb25zdCBjaGFyKiBuYW1lLAorICAgIGNvbnN0IGNoYXIqIHR5cGVfcGFy
YW0sCisgICAgY29uc3QgY2hhciogdmFsdWVfcGFyYW0sCisgICAgQ29kZUxvY2F0aW9uIGNvZGVf
bG9jYXRpb24sCiAgICAgVHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCiAgICAgU2V0VXBUZXN0Q2Fz
ZUZ1bmMgc2V0X3VwX3RjLAogICAgIFRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YywK
QEAgLTYwNCwxMCArNTI5LDEzIEBAIEdURVNUX0FQSV8gVGVzdEluZm8qIE1ha2VBbmRSZWdpc3Rl
clRlc3RJbmZvKAogLy8gSWYgKnBzdHIgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeCwgbW9k
aWZpZXMgKnBzdHIgdG8gYmUgcmlnaHQKIC8vIHBhc3QgdGhlIHByZWZpeCBhbmQgcmV0dXJucyB0
cnVlOyBvdGhlcndpc2UgbGVhdmVzICpwc3RyIHVuY2hhbmdlZAogLy8gYW5kIHJldHVybnMgZmFs
c2UuICBOb25lIG9mIHBzdHIsICpwc3RyLCBhbmQgcHJlZml4IGNhbiBiZSBOVUxMLgotYm9vbCBT
a2lwUHJlZml4KGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgY2hhcioqIHBzdHIpOworR1RFU1Rf
QVBJXyBib29sIFNraXBQcmVmaXgoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiogcHN0
cik7CiAKICNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9Q
CiAKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQyNTEgXAorLyogY2xhc3MgQSBu
ZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBieSBjbGllbnRzIG9mIGNsYXNz
IEIgKi8pCisKIC8vIFN0YXRlIG9mIHRoZSBkZWZpbml0aW9uIG9mIGEgdHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3QgY2FzZS4KIGNsYXNzIEdURVNUX0FQSV8gVHlwZWRUZXN0Q2FzZVBTdGF0ZSB7CiAg
cHVibGljOgpAQCAtNjI1LDEwICs1NTMsMjEgQEAgY2xhc3MgR1RFU1RfQVBJXyBUeXBlZFRlc3RD
YXNlUFN0YXRlIHsKICAgICAgIGZmbHVzaChzdGRlcnIpOwogICAgICAgcG9zaXg6OkFib3J0KCk7
CiAgICAgfQotICAgIGRlZmluZWRfdGVzdF9uYW1lc18uaW5zZXJ0KHRlc3RfbmFtZSk7CisgICAg
cmVnaXN0ZXJlZF90ZXN0c18uaW5zZXJ0KAorICAgICAgICA6OnN0ZDo6bWFrZV9wYWlyKHRlc3Rf
bmFtZSwgQ29kZUxvY2F0aW9uKGZpbGUsIGxpbmUpKSk7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0K
IAorICBib29sIFRlc3RFeGlzdHMoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RfbmFtZSkgY29uc3Qg
eworICAgIHJldHVybiByZWdpc3RlcmVkX3Rlc3RzXy5jb3VudCh0ZXN0X25hbWUpID4gMDsKKyAg
fQorCisgIGNvbnN0IENvZGVMb2NhdGlvbiYgR2V0Q29kZUxvY2F0aW9uKGNvbnN0IHN0ZDo6c3Ry
aW5nJiB0ZXN0X25hbWUpIGNvbnN0IHsKKyAgICBSZWdpc3RlcmVkVGVzdHNNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gcmVnaXN0ZXJlZF90ZXN0c18uZmluZCh0ZXN0X25hbWUpOworICAgIEdURVNU
X0NIRUNLXyhpdCAhPSByZWdpc3RlcmVkX3Rlc3RzXy5lbmQoKSk7CisgICAgcmV0dXJuIGl0LT5z
ZWNvbmQ7CisgIH0KKwogICAvLyBWZXJpZmllcyB0aGF0IHJlZ2lzdGVyZWRfdGVzdHMgbWF0Y2gg
dGhlIHRlc3QgbmFtZXMgaW4KICAgLy8gZGVmaW5lZF90ZXN0X25hbWVzXzsgcmV0dXJucyByZWdp
c3RlcmVkX3Rlc3RzIGlmIHN1Y2Nlc3NmdWwsIG9yCiAgIC8vIGFib3J0cyB0aGUgcHJvZ3JhbSBv
dGhlcndpc2UuCkBAIC02MzYsMTAgKzU3NSwxNCBAQCBjbGFzcyBHVEVTVF9BUElfIFR5cGVkVGVz
dENhc2VQU3RhdGUgewogICAgICAgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNo
YXIqIHJlZ2lzdGVyZWRfdGVzdHMpOwogCiAgcHJpdmF0ZToKKyAgdHlwZWRlZiA6OnN0ZDo6bWFw
PHN0ZDo6c3RyaW5nLCBDb2RlTG9jYXRpb24+IFJlZ2lzdGVyZWRUZXN0c01hcDsKKwogICBib29s
IHJlZ2lzdGVyZWRfOwotICA6OnN0ZDo6c2V0PGNvbnN0IGNoYXIqPiBkZWZpbmVkX3Rlc3RfbmFt
ZXNfOworICBSZWdpc3RlcmVkVGVzdHNNYXAgcmVnaXN0ZXJlZF90ZXN0c187CiB9OwogCitHVEVT
VF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkgIC8vICA0MjUxCisKIC8vIFNraXBzIHRvIHRo
ZSBmaXJzdCBub24tc3BhY2UgY2hhciBhZnRlciB0aGUgZmlyc3QgY29tbWEgaW4gJ3N0cic7CiAv
LyByZXR1cm5zIE5VTEwgaWYgbm8gY29tbWEgaXMgZm91bmQgaW4gJ3N0cicuCiBpbmxpbmUgY29u
c3QgY2hhciogU2tpcENvbW1hKGNvbnN0IGNoYXIqIHN0cikgewpAQCAtNjQ3LDE1ICs1OTAsNTEg
QEAgaW5saW5lIGNvbnN0IGNoYXIqIFNraXBDb21tYShjb25zdCBjaGFyKiBzdHIpIHsKICAgaWYg
KGNvbW1hID09IE5VTEwpIHsKICAgICByZXR1cm4gTlVMTDsKICAgfQotICB3aGlsZSAoaXNzcGFj
ZSgqKCsrY29tbWEpKSkge30KKyAgd2hpbGUgKElzU3BhY2UoKigrK2NvbW1hKSkpIHt9CiAgIHJl
dHVybiBjb21tYTsKIH0KIAogLy8gUmV0dXJucyB0aGUgcHJlZml4IG9mICdzdHInIGJlZm9yZSB0
aGUgZmlyc3QgY29tbWEgaW4gaXQ7IHJldHVybnMKIC8vIHRoZSBlbnRpcmUgc3RyaW5nIGlmIGl0
IGNvbnRhaW5zIG5vIGNvbW1hLgotaW5saW5lIFN0cmluZyBHZXRQcmVmaXhVbnRpbENvbW1hKGNv
bnN0IGNoYXIqIHN0cikgeworaW5saW5lIHN0ZDo6c3RyaW5nIEdldFByZWZpeFVudGlsQ29tbWEo
Y29uc3QgY2hhciogc3RyKSB7CiAgIGNvbnN0IGNoYXIqIGNvbW1hID0gc3RyY2hyKHN0ciwgJywn
KTsKLSAgcmV0dXJuIGNvbW1hID09IE5VTEwgPyBTdHJpbmcoc3RyKSA6IFN0cmluZyhzdHIsIGNv
bW1hIC0gc3RyKTsKKyAgcmV0dXJuIGNvbW1hID09IE5VTEwgPyBzdHIgOiBzdGQ6OnN0cmluZyhz
dHIsIGNvbW1hKTsKK30KKworLy8gU3BsaXRzIGEgZ2l2ZW4gc3RyaW5nIG9uIGEgZ2l2ZW4gZGVs
aW1pdGVyLCBwb3B1bGF0aW5nIGEgZ2l2ZW4KKy8vIHZlY3RvciB3aXRoIHRoZSBmaWVsZHMuCit2
b2lkIFNwbGl0U3RyaW5nKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgY2hhciBkZWxpbWl0ZXIs
CisgICAgICAgICAgICAgICAgIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpzdHJpbmc+KiBkZXN0KTsK
KworLy8gVGhlIGRlZmF1bHQgYXJndW1lbnQgdG8gdGhlIHRlbXBsYXRlIGJlbG93IGZvciB0aGUg
Y2FzZSB3aGVuIHRoZSB1c2VyIGRvZXMKKy8vIG5vdCBwcm92aWRlIGEgbmFtZSBnZW5lcmF0b3Iu
CitzdHJ1Y3QgRGVmYXVsdE5hbWVHZW5lcmF0b3IgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
KyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldE5hbWUoaW50IGkpIHsKKyAgICByZXR1cm4gU3RyZWFt
YWJsZVRvU3RyaW5nKGkpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUHJvdmlkZWQg
PSBEZWZhdWx0TmFtZUdlbmVyYXRvcj4KK3N0cnVjdCBOYW1lR2VuZXJhdG9yU2VsZWN0b3Igewor
ICB0eXBlZGVmIFByb3ZpZGVkIHR5cGU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTmFtZUdl
bmVyYXRvcj4KK3ZvaWQgR2VuZXJhdGVOYW1lc1JlY3Vyc2l2ZWx5KFR5cGVzMCwgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+KiwgaW50KSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTmFtZUdlbmVy
YXRvciwgdHlwZW5hbWUgVHlwZXM+Cit2b2lkIEdlbmVyYXRlTmFtZXNSZWN1cnNpdmVseShUeXBl
cywgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiByZXN1bHQsIGludCBpKSB7CisgIHJlc3VsdC0+
cHVzaF9iYWNrKE5hbWVHZW5lcmF0b3I6OnRlbXBsYXRlIEdldE5hbWU8dHlwZW5hbWUgVHlwZXM6
OkhlYWQ+KGkpKTsKKyAgR2VuZXJhdGVOYW1lc1JlY3Vyc2l2ZWx5PE5hbWVHZW5lcmF0b3I+KHR5
cGVuYW1lIFR5cGVzOjpUYWlsKCksIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGkgKyAxKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE5hbWVHZW5l
cmF0b3IsIHR5cGVuYW1lIFR5cGVzPgorc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdlbmVyYXRl
TmFtZXMoKSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiByZXN1bHQ7CisgIEdlbmVyYXRl
TmFtZXNSZWN1cnNpdmVseTxOYW1lR2VuZXJhdG9yPihUeXBlcygpLCAmcmVzdWx0LCAwKTsKKyAg
cmV0dXJuIHJlc3VsdDsKIH0KIAogLy8gVHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIFRl
c3RTZWwsIFR5cGVzPjo6UmVnaXN0ZXIoKQpAQCAtNjcyLDggKzY1MSwxMCBAQCBjbGFzcyBUeXBl
UGFyYW1ldGVyaXplZFRlc3QgewogICAvLyBzcGVjaWZpZWQgaW4gSU5TVEFOVElBVEVfVFlQRURf
VEVTVF9DQVNFX1AoUHJlZml4LCBUZXN0Q2FzZSwKICAgLy8gVHlwZXMpLiAgVmFsaWQgdmFsdWVz
IGZvciAnaW5kZXgnIGFyZSBbMCwgTiAtIDFdIHdoZXJlIE4gaXMgdGhlCiAgIC8vIGxlbmd0aCBv
ZiBUeXBlcy4KLSAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogcHJlZml4LCBjb25z
dCBjaGFyKiBjYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRl
c3RfbmFtZXMsIGludCBpbmRleCkgeworICBzdGF0aWMgYm9vbCBSZWdpc3Rlcihjb25zdCBjaGFy
KiBwcmVmaXgsIGNvbnN0IENvZGVMb2NhdGlvbiYgY29kZV9sb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogY2FzZV9uYW1lLCBjb25zdCBjaGFyKiB0ZXN0X25hbWVz
LCBpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiYgdHlwZV9uYW1lcyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5l
cmF0ZU5hbWVzPERlZmF1bHROYW1lR2VuZXJhdG9yLCBUeXBlcz4oKSkgewogICAgIHR5cGVkZWYg
dHlwZW5hbWUgVHlwZXM6OkhlYWQgVHlwZTsKICAgICB0eXBlZGVmIEZpeHR1cmU8VHlwZT4gRml4
dHVyZUNsYXNzOwogICAgIHR5cGVkZWYgdHlwZW5hbWUgR1RFU1RfQklORF8oVGVzdFNlbCwgVHlw
ZSkgVGVzdENsYXNzOwpAQCAtNjgxLDE5ICs2NjIsMjMgQEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6
ZWRUZXN0IHsKICAgICAvLyBGaXJzdCwgcmVnaXN0ZXJzIHRoZSBmaXJzdCB0eXBlLXBhcmFtZXRl
cml6ZWQgdGVzdCBpbiB0aGUgdHlwZQogICAgIC8vIGxpc3QuCiAgICAgTWFrZUFuZFJlZ2lzdGVy
VGVzdEluZm8oCi0gICAgICAgIFN0cmluZzo6Rm9ybWF0KCIlcyVzJXMvJWQiLCBwcmVmaXgsIHBy
ZWZpeFswXSA9PSAnXDAnID8gIiIgOiAiLyIsCi0gICAgICAgICAgICAgICAgICAgICAgIGNhc2Vf
bmFtZSwgaW5kZXgpLmNfc3RyKCksCi0gICAgICAgIEdldFByZWZpeFVudGlsQ29tbWEodGVzdF9u
YW1lcykuY19zdHIoKSwKLSAgICAgICAgU3RyaW5nOjpGb3JtYXQoIlR5cGVQYXJhbSA9ICVzIiwg
R2V0VHlwZU5hbWU8VHlwZT4oKS5jX3N0cigpKS5jX3N0cigpLAotICAgICAgICAiIiwKLSAgICAg
ICAgR2V0VHlwZUlkPEZpeHR1cmVDbGFzcz4oKSwKLSAgICAgICAgVGVzdENsYXNzOjpTZXRVcFRl
c3RDYXNlLAotICAgICAgICBUZXN0Q2xhc3M6OlRlYXJEb3duVGVzdENhc2UsCi0gICAgICAgIG5l
dyBUZXN0RmFjdG9yeUltcGw8VGVzdENsYXNzPik7CisgICAgICAgIChzdGQ6OnN0cmluZyhwcmVm
aXgpICsgKHByZWZpeFswXSA9PSAnXDAnID8gIiIgOiAiLyIpICsgY2FzZV9uYW1lICsKKyAgICAg
ICAgICIvIiArIHR5cGVfbmFtZXNbaW5kZXhdKQorICAgICAgICAgICAgLmNfc3RyKCksCisgICAg
ICAgIFN0cmlwVHJhaWxpbmdTcGFjZXMoR2V0UHJlZml4VW50aWxDb21tYSh0ZXN0X25hbWVzKSku
Y19zdHIoKSwKKyAgICAgICAgR2V0VHlwZU5hbWU8VHlwZT4oKS5jX3N0cigpLAorICAgICAgICBO
VUxMLCAgLy8gTm8gdmFsdWUgcGFyYW1ldGVyLgorICAgICAgICBjb2RlX2xvY2F0aW9uLCBHZXRU
eXBlSWQ8Rml4dHVyZUNsYXNzPigpLCBUZXN0Q2xhc3M6OlNldFVwVGVzdENhc2UsCisgICAgICAg
IFRlc3RDbGFzczo6VGVhckRvd25UZXN0Q2FzZSwgbmV3IFRlc3RGYWN0b3J5SW1wbDxUZXN0Q2xh
c3M+KTsKIAogICAgIC8vIE5leHQsIHJlY3Vyc2VzIChhdCBjb21waWxlIHRpbWUpIHdpdGggdGhl
IHRhaWwgb2YgdGhlIHR5cGUgbGlzdC4KLSAgICByZXR1cm4gVHlwZVBhcmFtZXRlcml6ZWRUZXN0
PEZpeHR1cmUsIFRlc3RTZWwsIHR5cGVuYW1lIFR5cGVzOjpUYWlsPgotICAgICAgICA6OlJlZ2lz
dGVyKHByZWZpeCwgY2FzZV9uYW1lLCB0ZXN0X25hbWVzLCBpbmRleCArIDEpOworICAgIHJldHVy
biBUeXBlUGFyYW1ldGVyaXplZFRlc3Q8Rml4dHVyZSwgVGVzdFNlbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpUYWlsPjo6UmVnaXN0ZXIocHJlZml4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb2RlX2xvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlX25hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4ICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV9uYW1lcyk7CiAgIH0K
IH07CiAKQEAgLTcwMSw4ICs2ODYsMTEgQEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0IHsK
IHRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gRml4dHVyZSwgY2xhc3MgVGVzdFNlbD4KIGNsYXNz
IFR5cGVQYXJhbWV0ZXJpemVkVGVzdDxGaXh0dXJlLCBUZXN0U2VsLCBUeXBlczA+IHsKICBwdWJs
aWM6Ci0gIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIqIC8qcHJlZml4Ki8sIGNvbnN0
IGNoYXIqIC8qY2FzZV9uYW1lKi8sCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IC8qdGVzdF9uYW1lcyovLCBpbnQgLyppbmRleCovKSB7CisgIHN0YXRpYyBib29sIFJlZ2lzdGVy
KGNvbnN0IGNoYXIqIC8qcHJlZml4Ki8sIGNvbnN0IENvZGVMb2NhdGlvbiYsCisgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qY2FzZV9uYW1lKi8sIGNvbnN0IGNoYXIqIC8qdGVz
dF9uYW1lcyovLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgLyppbmRleCovLAorICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mID0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPigpIC8qdHlwZV9u
YW1lcyovKSB7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIH07CkBAIC03MTQsMTcgKzcwMiwzNSBA
QCBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3Q8Rml4dHVyZSwgVGVzdFNlbCwgVHlwZXMwPiB7
CiB0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIEZpeHR1cmUsIHR5cGVuYW1lIFRlc3RzLCB0eXBl
bmFtZSBUeXBlcz4KIGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UgewogIHB1YmxpYzoK
LSAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiBj
YXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRlc3RfbmFtZXMp
IHsKKyAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogcHJlZml4LCBDb2RlTG9jYXRp
b24gY29kZV9sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHlwZWRUZXN0
Q2FzZVBTdGF0ZSogc3RhdGUsIGNvbnN0IGNoYXIqIGNhc2VfbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogdGVzdF9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiB0eXBlX25hbWVzID0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdlbmVyYXRlTmFtZXM8RGVmYXVsdE5hbWVHZW5lcmF0b3IsIFR5cGVz
PigpKSB7CisgICAgc3RkOjpzdHJpbmcgdGVzdF9uYW1lID0gU3RyaXBUcmFpbGluZ1NwYWNlcygK
KyAgICAgICAgR2V0UHJlZml4VW50aWxDb21tYSh0ZXN0X25hbWVzKSk7CisgICAgaWYgKCFzdGF0
ZS0+VGVzdEV4aXN0cyh0ZXN0X25hbWUpKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxl
ZCB0byBnZXQgY29kZSBsb2NhdGlvbiBmb3IgdGVzdCAlcy4lcyBhdCAlcy4iLAorICAgICAgICAg
ICAgICBjYXNlX25hbWUsIHRlc3RfbmFtZS5jX3N0cigpLAorICAgICAgICAgICAgICBGb3JtYXRG
aWxlTG9jYXRpb24oY29kZV9sb2NhdGlvbi5maWxlLmNfc3RyKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb2RlX2xvY2F0aW9uLmxpbmUpLmNfc3RyKCkpOworICAgICAgZmZs
dXNoKHN0ZGVycik7CisgICAgICBwb3NpeDo6QWJvcnQoKTsKKyAgICB9CisgICAgY29uc3QgQ29k
ZUxvY2F0aW9uJiB0ZXN0X2xvY2F0aW9uID0gc3RhdGUtPkdldENvZGVMb2NhdGlvbih0ZXN0X25h
bWUpOworCiAgICAgdHlwZWRlZiB0eXBlbmFtZSBUZXN0czo6SGVhZCBIZWFkOwogCiAgICAgLy8g
Rmlyc3QsIHJlZ2lzdGVyIHRoZSBmaXJzdCB0ZXN0IGluICdUZXN0JyBmb3IgZWFjaCB0eXBlIGlu
ICdUeXBlcycuCiAgICAgVHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIEhlYWQsIFR5cGVz
Pjo6UmVnaXN0ZXIoCi0gICAgICAgIHByZWZpeCwgY2FzZV9uYW1lLCB0ZXN0X25hbWVzLCAwKTsK
KyAgICAgICAgcHJlZml4LCB0ZXN0X2xvY2F0aW9uLCBjYXNlX25hbWUsIHRlc3RfbmFtZXMsIDAs
IHR5cGVfbmFtZXMpOwogCiAgICAgLy8gTmV4dCwgcmVjdXJzZXMgKGF0IGNvbXBpbGUgdGltZSkg
d2l0aCB0aGUgdGFpbCBvZiB0aGUgdGVzdCBsaXN0LgotICAgIHJldHVybiBUeXBlUGFyYW1ldGVy
aXplZFRlc3RDYXNlPEZpeHR1cmUsIHR5cGVuYW1lIFRlc3RzOjpUYWlsLCBUeXBlcz4KLSAgICAg
ICAgOjpSZWdpc3RlcihwcmVmaXgsIGNhc2VfbmFtZSwgU2tpcENvbW1hKHRlc3RfbmFtZXMpKTsK
KyAgICByZXR1cm4gVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTxGaXh0dXJlLCB0eXBlbmFtZSBU
ZXN0czo6VGFpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlcz46
OlJlZ2lzdGVyKHByZWZpeCwgY29kZV9sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLCBjYXNlX25hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa2lwQ29tbWEo
dGVzdF9uYW1lcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0eXBlX25hbWVzKTsKICAgfQogfTsKIApAQCAtNzMyLDE1ICs3MzgsMTggQEAg
Y2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSB7CiB0ZW1wbGF0ZSA8R1RFU1RfVEVNUExB
VEVfIEZpeHR1cmUsIHR5cGVuYW1lIFR5cGVzPgogY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0
Q2FzZTxGaXh0dXJlLCBUZW1wbGF0ZXMwLCBUeXBlcz4gewogIHB1YmxpYzoKLSAgc3RhdGljIGJv
b2wgUmVnaXN0ZXIoY29uc3QgY2hhciogLypwcmVmaXgqLywgY29uc3QgY2hhciogLypjYXNlX25h
bWUqLywKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLyp0ZXN0X25hbWVzKi8p
IHsKKyAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogLypwcmVmaXgqLywgY29uc3Qg
Q29kZUxvY2F0aW9uJiwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHlwZWRUZXN0Q2Fz
ZVBTdGF0ZSogLypzdGF0ZSovLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAv
KmNhc2VfbmFtZSovLCBjb25zdCBjaGFyKiAvKnRlc3RfbmFtZXMqLywKKyAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiA9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oKSAvKnR5cGVfbmFtZXMqLykg
ewogICAgIHJldHVybiB0cnVlOwogICB9CiB9OwogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBF
RF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AKIAotLy8gUmV0dXJucyB0aGUgY3VycmVu
dCBPUyBzdGFjayB0cmFjZSBhcyBhIFN0cmluZy4KKy8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mg
c3RhY2sgdHJhY2UgYXMgYW4gc3RkOjpzdHJpbmcuCiAvLwogLy8gVGhlIG1heGltdW0gbnVtYmVy
IG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZCBpcyBzcGVjaWZpZWQgYnkKIC8vIHRoZSBn
dGVzdF9zdGFja190cmFjZV9kZXB0aCBmbGFnLiAgVGhlIHNraXBfY291bnQgcGFyYW1ldGVyCkBA
IC03NTAsOCArNzU5LDggQEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTxGaXh0dXJl
LCBUZW1wbGF0ZXMwLCBUeXBlcz4gewogLy8gRm9yIGV4YW1wbGUsIGlmIEZvbygpIGNhbGxzIEJh
cigpLCB3aGljaCBpbiB0dXJuIGNhbGxzCiAvLyBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0
VG9wKC4uLiwgMSksIEZvbygpIHdpbGwgYmUgaW5jbHVkZWQgaW4KIC8vIHRoZSB0cmFjZSBidXQg
QmFyKCkgYW5kIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoKSB3b24ndC4KLUdURVNU
X0FQSV8gU3RyaW5nIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoVW5pdFRlc3QqIHVu
aXRfdGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHNraXBfY291bnQpOworR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBHZXRDdXJyZW50T3NT
dGFja1RyYWNlRXhjZXB0VG9wKAorICAgIFVuaXRUZXN0KiB1bml0X3Rlc3QsIGludCBza2lwX2Nv
dW50KTsKIAogLy8gSGVscGVycyBmb3Igc3VwcHJlc3Npbmcgd2FybmluZ3Mgb24gdW5yZWFjaGFi
bGUgY29kZSBvciBjb25zdGFudAogLy8gY29uZGl0aW9uLgpAQCAtNzYyLDYgKzc3MSwxNSBAQCBH
VEVTVF9BUElfIGJvb2wgQWx3YXlzVHJ1ZSgpOwogLy8gQWx3YXlzIHJldHVybnMgZmFsc2UuCiBp
bmxpbmUgYm9vbCBBbHdheXNGYWxzZSgpIHsgcmV0dXJuICFBbHdheXNUcnVlKCk7IH0KIAorLy8g
SGVscGVyIGZvciBzdXBwcmVzc2luZyBmYWxzZSB3YXJuaW5nIGZyb20gQ2xhbmcgb24gYSBjb25z
dCBjaGFyKgorLy8gdmFyaWFibGUgZGVjbGFyZWQgaW4gYSBjb25kaXRpb25hbCBleHByZXNzaW9u
IGFsd2F5cyBiZWluZyBOVUxMIGluCisvLyB0aGUgZWxzZSBicmFuY2guCitzdHJ1Y3QgR1RFU1Rf
QVBJXyBDb25zdENoYXJQdHIgeworICBDb25zdENoYXJQdHIoY29uc3QgY2hhciogc3RyKSA6IHZh
bHVlKHN0cikge30KKyAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAg
Y29uc3QgY2hhciogdmFsdWU7Cit9OworCiAvLyBBIHNpbXBsZSBMaW5lYXIgQ29uZ3J1ZW50aWFs
IEdlbmVyYXRvciBmb3IgZ2VuZXJhdGluZyByYW5kb20KIC8vIG51bWJlcnMgd2l0aCBhIHVuaWZv
cm0gZGlzdHJpYnV0aW9uLiAgVW5saWtlIHJhbmQoKSBhbmQgc3JhbmQoKSwgaXQKIC8vIGRvZXNu
J3QgdXNlIGdsb2JhbCBzdGF0ZSAoYW5kIHRoZXJlZm9yZSBjYW4ndCBpbnRlcmZlcmUgd2l0aCB1
c2VyCkBAIC03ODQsMTMgKzgwMiw0MDMgQEAgY2xhc3MgR1RFU1RfQVBJXyBSYW5kb20gewogICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFJhbmRvbSk7CiB9OwogCisvLyBEZWZpbmlu
ZyBhIHZhcmlhYmxlIG9mIHR5cGUgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8VDEsIFQyPiB3aWxs
IGNhdXNlIGEKKy8vIGNvbXBpbGVyIGVycm9yIGlmZiBUMSBhbmQgVDIgYXJlIGRpZmZlcmVudCB0
eXBlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitzdHJ1Y3QgQ29tcGls
ZUFzc2VydFR5cGVzRXF1YWw7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IENvbXBp
bGVBc3NlcnRUeXBlc0VxdWFsPFQsIFQ+IHsKK307CisKKy8vIFJlbW92ZXMgdGhlIHJlZmVyZW5j
ZSBmcm9tIGEgdHlwZSBpZiBpdCBpcyBhIHJlZmVyZW5jZSB0eXBlLAorLy8gb3RoZXJ3aXNlIGxl
YXZlcyBpdCB1bmNoYW5nZWQuICBUaGlzIGlzIHRoZSBzYW1lIGFzCisvLyB0cjE6OnJlbW92ZV9y
ZWZlcmVuY2UsIHdoaWNoIGlzIG5vdCB3aWRlbHkgYXZhaWxhYmxlIHlldC4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorc3RydWN0IFJlbW92ZVJlZmVyZW5jZSB7IHR5cGVkZWYgVCB0eXBlOyB9OyAg
Ly8gTk9MSU5UCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBSZW1vdmVSZWZlcmVuY2U8
VCY+IHsgdHlwZWRlZiBUIHR5cGU7IH07ICAvLyBOT0xJTlQKKworLy8gQSBoYW5keSB3cmFwcGVy
IGFyb3VuZCBSZW1vdmVSZWZlcmVuY2UgdGhhdCB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudAorLy8g
VCBkZXBlbmRzIG9uIHRlbXBsYXRlIHBhcmFtZXRlcnMuCisjZGVmaW5lIEdURVNUX1JFTU9WRV9S
RUZFUkVOQ0VfKFQpIFwKKyAgICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpSZW1vdmVS
ZWZlcmVuY2U8VD46OnR5cGUKKworLy8gUmVtb3ZlcyBjb25zdCBmcm9tIGEgdHlwZSBpZiBpdCBp
cyBhIGNvbnN0IHR5cGUsIG90aGVyd2lzZSBsZWF2ZXMKKy8vIGl0IHVuY2hhbmdlZC4gIFRoaXMg
aXMgdGhlIHNhbWUgYXMgdHIxOjpyZW1vdmVfY29uc3QsIHdoaWNoIGlzIG5vdAorLy8gd2lkZWx5
IGF2YWlsYWJsZSB5ZXQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBSZW1vdmVDb25z
dCB7IHR5cGVkZWYgVCB0eXBlOyB9OyAgLy8gTk9MSU5UCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K3N0cnVjdCBSZW1vdmVDb25zdDxjb25zdCBUPiB7IHR5cGVkZWYgVCB0eXBlOyB9OyAgLy8gTk9M
SU5UCisKKy8vIE1TVkMgOC4wLCBTdW4gQysrLCBhbmQgSUJNIFhMIEMrKyBoYXZlIGEgYnVnIHdo
aWNoIGNhdXNlcyB0aGUgYWJvdmUKKy8vIGRlZmluaXRpb24gdG8gZmFpbCB0byByZW1vdmUgdGhl
IGNvbnN0IGluICdjb25zdCBpbnRbM10nIGFuZCAnY29uc3QKKy8vIGNoYXJbM11bNF0nLiAgVGhl
IGZvbGxvd2luZyBzcGVjaWFsaXphdGlvbiB3b3JrcyBhcm91bmQgdGhlIGJ1Zy4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBULCBzaXplX3QgTj4KK3N0cnVjdCBSZW1vdmVDb25zdDxjb25zdCBUW05dPiB7
CisgIHR5cGVkZWYgdHlwZW5hbWUgUmVtb3ZlQ29uc3Q8VD46OnR5cGUgdHlwZVtOXTsKK307CisK
KyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA8IDE0MDAKKy8vIFRoaXMgaXMgdGhl
IG9ubHkgc3BlY2lhbGl6YXRpb24gdGhhdCBhbGxvd3MgVkMrKyA3LjEgdG8gcmVtb3ZlIGNvbnN0
IGluCisvLyAnY29uc3QgaW50WzNdIGFuZCAnY29uc3QgaW50WzNdWzRdJy4gIEhvd2V2ZXIsIGl0
IGNhdXNlcyB0cm91YmxlIHdpdGggR0NDCisvLyBhbmQgdGh1cyBuZWVkcyB0byBiZSBjb25kaXRp
b25hbGx5IGNvbXBpbGVkLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgorc3RydWN0
IFJlbW92ZUNvbnN0PFRbTl0+IHsKKyAgdHlwZWRlZiB0eXBlbmFtZSBSZW1vdmVDb25zdDxUPjo6
dHlwZSB0eXBlW05dOworfTsKKyNlbmRpZgorCisvLyBBIGhhbmR5IHdyYXBwZXIgYXJvdW5kIFJl
bW92ZUNvbnN0IHRoYXQgd29ya3Mgd2hlbiB0aGUgYXJndW1lbnQKKy8vIFQgZGVwZW5kcyBvbiB0
ZW1wbGF0ZSBwYXJhbWV0ZXJzLgorI2RlZmluZSBHVEVTVF9SRU1PVkVfQ09OU1RfKFQpIFwKKyAg
ICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpSZW1vdmVDb25zdDxUPjo6dHlwZQorCisv
LyBUdXJucyBjb25zdCBVJiwgVSYsIGNvbnN0IFUsIGFuZCBVIGFsbCBpbnRvIFUuCisjZGVmaW5l
IEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhUKSBcCisgICAgR1RFU1RfUkVNT1ZF
X0NPTlNUXyhHVEVTVF9SRU1PVkVfUkVGRVJFTkNFXyhUKSkKKworLy8gSW1wbGljaXRseUNvbnZl
cnRpYmxlPEZyb20sIFRvPjo6dmFsdWUgaXMgYSBjb21waWxlLXRpbWUgYm9vbAorLy8gY29uc3Rh
bnQgdGhhdCdzIHRydWUgaWZmIHR5cGUgRnJvbSBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQg
dG8KKy8vIHR5cGUgVG8uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Citj
bGFzcyBJbXBsaWNpdGx5Q29udmVydGlibGUgeworIHByaXZhdGU6CisgIC8vIFdlIG5lZWQgdGhl
IGZvbGxvd2luZyBoZWxwZXIgZnVuY3Rpb25zIG9ubHkgZm9yIHRoZWlyIHR5cGVzLgorICAvLyBU
aGV5IGhhdmUgbm8gaW1wbGVtZW50YXRpb25zLgorCisgIC8vIE1ha2VGcm9tKCkgaXMgYW4gZXhw
cmVzc2lvbiB3aG9zZSB0eXBlIGlzIEZyb20uICBXZSBjYW5ub3Qgc2ltcGx5CisgIC8vIHVzZSBG
cm9tKCksIGFzIHRoZSB0eXBlIEZyb20gbWF5IG5vdCBoYXZlIGEgcHVibGljIGRlZmF1bHQKKyAg
Ly8gY29uc3RydWN0b3IuCisgIHN0YXRpYyB0eXBlbmFtZSBBZGRSZWZlcmVuY2U8RnJvbT46OnR5
cGUgTWFrZUZyb20oKTsKKworICAvLyBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSBvdmVybG9hZGVk
LiAgR2l2ZW4gYW4gZXhwcmVzc2lvbgorICAvLyBIZWxwZXIoeCksIHRoZSBjb21waWxlciB3aWxs
IHBpY2sgdGhlIGZpcnN0IHZlcnNpb24gaWYgeCBjYW4gYmUKKyAgLy8gaW1wbGljaXRseSBjb252
ZXJ0ZWQgdG8gdHlwZSBUbzsgb3RoZXJ3aXNlIGl0IHdpbGwgcGljayB0aGUKKyAgLy8gc2Vjb25k
IHZlcnNpb24uCisgIC8vCisgIC8vIFRoZSBmaXJzdCB2ZXJzaW9uIHJldHVybnMgYSB2YWx1ZSBv
ZiBzaXplIDEsIGFuZCB0aGUgc2Vjb25kCisgIC8vIHZlcnNpb24gcmV0dXJucyBhIHZhbHVlIG9m
IHNpemUgMi4gIFRoZXJlZm9yZSwgYnkgY2hlY2tpbmcgdGhlCisgIC8vIHNpemUgb2YgSGVscGVy
KHgpLCB3aGljaCBjYW4gYmUgZG9uZSBhdCBjb21waWxlIHRpbWUsIHdlIGNhbiB0ZWxsCisgIC8v
IHdoaWNoIHZlcnNpb24gb2YgSGVscGVyKCkgaXMgdXNlZCwgYW5kIGhlbmNlIHdoZXRoZXIgeCBj
YW4gYmUKKyAgLy8gaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gdHlwZSBUby4KKyAgc3RhdGljIGNo
YXIgSGVscGVyKFRvKTsKKyAgc3RhdGljIGNoYXIgKCZIZWxwZXIoLi4uKSlbMl07ICAvLyBOT0xJ
TlQKKworICAvLyBXZSBoYXZlIHRvIHB1dCB0aGUgJ3B1YmxpYycgc2VjdGlvbiBhZnRlciB0aGUg
J3ByaXZhdGUnIHNlY3Rpb24sCisgIC8vIG9yIE1TVkMgcmVmdXNlcyB0byBjb21waWxlIHRoZSBj
b2RlLgorIHB1YmxpYzoKKyNpZiBkZWZpbmVkKF9fQk9STEFORENfXykKKyAgLy8gQysrQnVpbGRl
ciBjYW5ub3QgdXNlIG1lbWJlciBvdmVybG9hZCByZXNvbHV0aW9uIGR1cmluZyB0ZW1wbGF0ZQor
ICAvLyBpbnN0YW50aWF0aW9uLiAgVGhlIHNpbXBsZXN0IHdvcmthcm91bmQgaXMgdG8gdXNlIGl0
cyBDKysweCB0eXBlIHRyYWl0cworICAvLyBmdW5jdGlvbnMgKEMrK0J1aWxkZXIgMjAwOSBhbmQg
YWJvdmUgb25seSkuCisgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gX19pc19jb252ZXJ0aWJs
ZShGcm9tLCBUbyk7CisjZWxzZQorICAvLyBNU1ZDIHdhcm5zIGFib3V0IGltcGxpY2l0bHkgY29u
dmVydGluZyBmcm9tIGRvdWJsZSB0byBpbnQgZm9yCisgIC8vIHBvc3NpYmxlIGxvc3Mgb2YgZGF0
YSwgc28gd2UgbmVlZCB0byB0ZW1wb3JhcmlseSBkaXNhYmxlIHRoZQorICAvLyB3YXJuaW5nLgor
ICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MjQ0KQorICBzdGF0aWMgY29uc3Qg
Ym9vbCB2YWx1ZSA9CisgICAgICBzaXplb2YoSGVscGVyKEltcGxpY2l0bHlDb252ZXJ0aWJsZTo6
TWFrZUZyb20oKSkpID09IDE7CisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQor
I2VuZGlmICAvLyBfX0JPUkxBTkRDX18KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlw
ZW5hbWUgVG8+Citjb25zdCBib29sIEltcGxpY2l0bHlDb252ZXJ0aWJsZTxGcm9tLCBUbz46OnZh
bHVlOworCisvLyBJc0FQcm90b2NvbE1lc3NhZ2U8VD46OnZhbHVlIGlzIGEgY29tcGlsZS10aW1l
IGJvb2wgY29uc3RhbnQgdGhhdCdzCisvLyB0cnVlIGlmZiBUIGlzIHR5cGUgUHJvdG9jb2xNZXNz
YWdlLCBwcm90bzI6Ok1lc3NhZ2UsIG9yIGEgc3ViY2xhc3MKKy8vIG9mIHRob3NlLgordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNBUHJvdG9jb2xNZXNzYWdlCisgICAgOiBwdWJsaWMg
Ym9vbF9jb25zdGFudDwKKyAgSW1wbGljaXRseUNvbnZlcnRpYmxlPGNvbnN0IFQqLCBjb25zdCA6
OlByb3RvY29sTWVzc2FnZSo+Ojp2YWx1ZSB8fAorICBJbXBsaWNpdGx5Q29udmVydGlibGU8Y29u
c3QgVCosIGNvbnN0IDo6cHJvdG8yOjpNZXNzYWdlKj46OnZhbHVlPiB7Cit9OworCisvLyBXaGVu
IHRoZSBjb21waWxlciBzZWVzIGV4cHJlc3Npb24gSXNDb250YWluZXJUZXN0PEM+KDApLCBpZiBD
IGlzIGFuCisvLyBTVEwtc3R5bGUgY29udGFpbmVyIGNsYXNzLCB0aGUgZmlyc3Qgb3ZlcmxvYWQg
b2YgSXNDb250YWluZXJUZXN0CisvLyB3aWxsIGJlIHZpYWJsZSAoc2luY2UgYm90aCBDOjppdGVy
YXRvciogYW5kIEM6OmNvbnN0X2l0ZXJhdG9yKiBhcmUKKy8vIHZhbGlkIHR5cGVzIGFuZCBOVUxM
IGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0aGVtKS4gIEl0IHdpbGwKKy8vIGJlIHBp
Y2tlZCBvdmVyIHRoZSBzZWNvbmQgb3ZlcmxvYWQgYXMgJ2ludCcgaXMgYSBwZXJmZWN0IG1hdGNo
IGZvcgorLy8gdGhlIHR5cGUgb2YgYXJndW1lbnQgMC4gIElmIEM6Oml0ZXJhdG9yIG9yIEM6OmNv
bnN0X2l0ZXJhdG9yIGlzIG5vdAorLy8gYSB2YWxpZCB0eXBlLCB0aGUgZmlyc3Qgb3ZlcmxvYWQg
aXMgbm90IHZpYWJsZSwgYW5kIHRoZSBzZWNvbmQKKy8vIG92ZXJsb2FkIHdpbGwgYmUgcGlja2Vk
LiAgVGhlcmVmb3JlLCB3ZSBjYW4gZGV0ZXJtaW5lIHdoZXRoZXIgQyBpcworLy8gYSBjb250YWlu
ZXIgY2xhc3MgYnkgY2hlY2tpbmcgdGhlIHR5cGUgb2YgSXNDb250YWluZXJUZXN0PEM+KDApLgor
Ly8gVGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlzIGluc2lnbmlmaWNhbnQuCisvLworLy8g
SW4gQysrMTEgbW9kZSB3ZSBjaGVjayB0aGUgZXhpc3RlbmNlIG9mIGEgY29uc3RfaXRlcmF0b3Ig
YW5kIHRoYXQgYW4KKy8vIGl0ZXJhdG9yIGlzIHByb3Blcmx5IGltcGxlbWVudGVkIGZvciB0aGUg
Y29udGFpbmVyLgorLy8KKy8vIEZvciBwcmUtQysrMTEgdGhhdCB3ZSBsb29rIGZvciBib3RoIEM6
Oml0ZXJhdG9yIGFuZCBDOjpjb25zdF9pdGVyYXRvci4KKy8vIFRoZSByZWFzb24gaXMgdGhhdCBD
KysgaW5qZWN0cyB0aGUgbmFtZSBvZiBhIGNsYXNzIGFzIGEgbWVtYmVyIG9mIHRoZQorLy8gY2xh
c3MgaXRzZWxmIChlLmcuIHlvdSBjYW4gcmVmZXIgdG8gY2xhc3MgaXRlcmF0b3IgYXMgZWl0aGVy
CisvLyAnaXRlcmF0b3InIG9yICdpdGVyYXRvcjo6aXRlcmF0b3InKS4gIElmIHdlIGxvb2sgZm9y
IEM6Oml0ZXJhdG9yCisvLyBvbmx5LCBmb3IgZXhhbXBsZSwgd2Ugd291bGQgbWlzdGFrZW5seSB0
aGluayB0aGF0IGEgY2xhc3MgbmFtZWQKKy8vIGl0ZXJhdG9yIGlzIGFuIFNUTCBjb250YWluZXIu
CisvLworLy8gQWxzbyBub3RlIHRoYXQgdGhlIHNpbXBsZXIgYXBwcm9hY2ggb2Ygb3ZlcmxvYWRp
bmcKKy8vIElzQ29udGFpbmVyVGVzdCh0eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvciopIGFuZAor
Ly8gSXNDb250YWluZXJUZXN0KC4uLikgZG9lc24ndCB3b3JrIHdpdGggVmlzdWFsIEFnZSBDKysg
YW5kIFN1biBDKysuCit0eXBlZGVmIGludCBJc0NvbnRhaW5lcjsKKyNpZiBHVEVTVF9MQU5HX0NY
WDExCit0ZW1wbGF0ZSA8Y2xhc3MgQywKKyAgICAgICAgICBjbGFzcyBJdGVyYXRvciA9IGRlY2x0
eXBlKDo6c3RkOjpkZWNsdmFsPGNvbnN0IEMmPigpLmJlZ2luKCkpLAorICAgICAgICAgIGNsYXNz
ID0gZGVjbHR5cGUoOjpzdGQ6OmRlY2x2YWw8Y29uc3QgQyY+KCkuZW5kKCkpLAorICAgICAgICAg
IGNsYXNzID0gZGVjbHR5cGUoKys6OnN0ZDo6ZGVjbHZhbDxJdGVyYXRvciY+KCkpLAorICAgICAg
ICAgIGNsYXNzID0gZGVjbHR5cGUoKjo6c3RkOjpkZWNsdmFsPEl0ZXJhdG9yPigpKSwKKyAgICAg
ICAgICBjbGFzcyA9IHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yPgorSXNDb250YWluZXIgSXND
b250YWluZXJUZXN0KGludCAvKiBkdW1teSAqLykgeworICByZXR1cm4gMDsKK30KKyNlbHNlCit0
ZW1wbGF0ZSA8Y2xhc3MgQz4KK0lzQ29udGFpbmVyIElzQ29udGFpbmVyVGVzdChpbnQgLyogZHVt
bXkgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQzo6aXRlcmF0b3Iq
IC8qIGl0ICovID0gTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBD
Ojpjb25zdF9pdGVyYXRvciogLyogY29uc3RfaXQgKi8gPSBOVUxMKSB7CisgIHJldHVybiAwOwor
fQorI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisKK3R5cGVkZWYgY2hhciBJc05vdENvbnRh
aW5lcjsKK3RlbXBsYXRlIDxjbGFzcyBDPgorSXNOb3RDb250YWluZXIgSXNDb250YWluZXJUZXN0
KGxvbmcgLyogZHVtbXkgKi8pIHsgcmV0dXJuICdcMCc7IH0KKworLy8gVHJhaXQgdG8gZGV0ZWN0
IHdoZXRoZXIgYSB0eXBlIFQgaXMgYSBoYXNoIHRhYmxlLgorLy8gVGhlIGhldXJpc3RpYyB1c2Vk
IGlzIHRoYXQgdGhlIHR5cGUgY29udGFpbnMgYW4gaW5uZXIgdHlwZSBgaGFzaGVyYCBhbmQgZG9l
cworLy8gbm90IGNvbnRhaW4gYW4gaW5uZXIgdHlwZSBgcmV2ZXJzZV9pdGVyYXRvcmAuCisvLyBJ
ZiB0aGUgY29udGFpbmVyIGlzIGl0ZXJhYmxlIGluIHJldmVyc2UsIHRoZW4gb3JkZXIgbWlnaHQg
YWN0dWFsbHkgbWF0dGVyLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNIYXNoVGFi
bGUgeworIHByaXZhdGU6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICBzdGF0aWMgY2hhciB0
ZXN0KHR5cGVuYW1lIFU6Omhhc2hlciosIHR5cGVuYW1lIFU6OnJldmVyc2VfaXRlcmF0b3IqKTsK
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIHN0YXRpYyBpbnQgdGVzdCh0eXBlbmFtZSBVOjpo
YXNoZXIqLCAuLi4pOworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgc3RhdGljIGNoYXIgdGVz
dCguLi4pOworCisgcHVibGljOgorICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZih0
ZXN0PFQ+KDAsIDApKSA9PSBzaXplb2YoaW50KTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PgorY29uc3QgYm9vbCBJc0hhc2hUYWJsZTxUPjo6dmFsdWU7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitzdHJ1Y3QgVm9pZFQgeworICAgIHR5cGVkZWYgdm9pZCB2YWx1ZV90eXBlOworfTsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdm9pZD4KK3N0cnVjdCBIYXNWYWx1ZVR5
cGUgOiBmYWxzZV90eXBlIHt9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSGFzVmFs
dWVUeXBlPFQsIFZvaWRUPHR5cGVuYW1lIFQ6OnZhbHVlX3R5cGU+ID4gOiB0cnVlX3R5cGUgewor
fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEMsCisgICAgICAgICAgYm9vbCA9IHNpemVvZihJc0Nv
bnRhaW5lclRlc3Q8Qz4oMCkpID09IHNpemVvZihJc0NvbnRhaW5lciksCisgICAgICAgICAgYm9v
bCA9IEhhc1ZhbHVlVHlwZTxDPjo6dmFsdWU+CitzdHJ1Y3QgSXNSZWN1cnNpdmVDb250YWluZXJJ
bXBsOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQywgYm9vbCBIVj4KK3N0cnVjdCBJc1JlY3Vyc2l2
ZUNvbnRhaW5lckltcGw8QywgZmFsc2UsIEhWPiA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OworCisv
LyBTaW5jZSB0aGUgSXNSZWN1cnNpdmVDb250YWluZXJJbXBsIGRlcGVuZHMgb24gdGhlIElzQ29u
dGFpbmVyVGVzdCB3ZSBuZWVkIHRvCisvLyBvYmV5IHRoZSBzYW1lIGluY29uc2lzdGVuY2llcyBh
cyB0aGUgSXNDb250YWluZXJUZXN0LCBuYW1lbHkgY2hlY2sgaWYKKy8vIHNvbWV0aGluZyBpcyBh
IGNvbnRhaW5lciBpcyByZWx5aW5nIG9uIG9ubHkgY29uc3RfaXRlcmF0b3IgaW4gQysrMTEgYW5k
CisvLyBpcyByZWx5aW5nIG9uIGJvdGggY29uc3RfaXRlcmF0b3IgYW5kIGl0ZXJhdG9yIG90aGVy
d2lzZQordGVtcGxhdGUgPHR5cGVuYW1lIEM+CitzdHJ1Y3QgSXNSZWN1cnNpdmVDb250YWluZXJJ
bXBsPEMsIHRydWUsIGZhbHNlPiA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgQz4KK3N0cnVjdCBJc1JlY3Vyc2l2ZUNvbnRhaW5lckltcGw8QywgdHJ1ZSwgdHJ1
ZT4geworICAjaWYgR1RFU1RfTEFOR19DWFgxMQorICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9y
VHJhaXRzPHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yPjo6dmFsdWVfdHlwZQorICAgICAgdmFs
dWVfdHlwZTsKKyNlbHNlCisgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3JUcmFpdHM8dHlwZW5h
bWUgQzo6aXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7CisjZW5kaWYKKyAgdHlwZWRl
ZiBpc19zYW1lPHZhbHVlX3R5cGUsIEM+IHR5cGU7Cit9OworCisvLyBJc1JlY3Vyc2l2ZUNvbnRh
aW5lcjxUeXBlPiBpcyBhIHVuYXJ5IGNvbXBpbGUtdGltZSBwcmVkaWNhdGUgdGhhdAorLy8gZXZh
bHVhdGVzIHdoZXRoZXIgQyBpcyBhIHJlY3Vyc2l2ZSBjb250YWluZXIgdHlwZS4gQSByZWN1cnNp
dmUgY29udGFpbmVyCisvLyB0eXBlIGlzIGEgY29udGFpbmVyIHR5cGUgd2hvc2UgdmFsdWVfdHlw
ZSBpcyBlcXVhbCB0byB0aGUgY29udGFpbmVyIHR5cGUKKy8vIGl0c2VsZi4gQW4gZXhhbXBsZSBm
b3IgYSByZWN1cnNpdmUgY29udGFpbmVyIHR5cGUgaXMKKy8vIGJvb3N0OjpmaWxlc3lzdGVtOjpw
YXRoLCB3aG9zZSBpdGVyYXRvciBoYXMgYSB2YWx1ZV90eXBlIHRoYXQgaXMgZXF1YWwgdG8KKy8v
IGJvb3N0OjpmaWxlc3lzdGVtOjpwYXRoLgordGVtcGxhdGUgPHR5cGVuYW1lIEM+CitzdHJ1Y3Qg
SXNSZWN1cnNpdmVDb250YWluZXIgOiBwdWJsaWMgSXNSZWN1cnNpdmVDb250YWluZXJJbXBsPEM+
Ojp0eXBlIHt9OworCisvLyBFbmFibGVJZjxjb25kaXRpb24+Ojp0eXBlIGlzIHZvaWQgd2hlbiAn
Q29uZCcgaXMgdHJ1ZSwgYW5kCisvLyB1bmRlZmluZWQgd2hlbiAnQ29uZCcgaXMgZmFsc2UuICBU
byB1c2UgU0ZJTkFFIHRvIG1ha2UgYSBmdW5jdGlvbgorLy8gb3ZlcmxvYWQgb25seSBhcHBseSB3
aGVuIGEgcGFydGljdWxhciBleHByZXNzaW9uIGlzIHRydWUsIGFkZAorLy8gInR5cGVuYW1lIEVu
YWJsZUlmPGV4cHJlc3Npb24+Ojp0eXBlKiA9IDAiIGFzIHRoZSBsYXN0IHBhcmFtZXRlci4KK3Rl
bXBsYXRlPGJvb2w+IHN0cnVjdCBFbmFibGVJZjsKK3RlbXBsYXRlPD4gc3RydWN0IEVuYWJsZUlm
PHRydWU+IHsgdHlwZWRlZiB2b2lkIHR5cGU7IH07ICAvLyBOT0xJTlQKKworLy8gVXRpbGl0aWVz
IGZvciBuYXRpdmUgYXJyYXlzLgorCisvLyBBcnJheUVxKCkgY29tcGFyZXMgdHdvIGstZGltZW5z
aW9uYWwgbmF0aXZlIGFycmF5cyB1c2luZyB0aGUKKy8vIGVsZW1lbnRzJyBvcGVyYXRvcj09LCB3
aGVyZSBrIGNhbiBiZSBhbnkgaW50ZWdlciA+PSAwLiAgV2hlbiBrIGlzCisvLyAwLCBBcnJheUVx
KCkgZGVnZW5lcmF0ZXMgaW50byBjb21wYXJpbmcgYSBzaW5nbGUgcGFpciBvZiB2YWx1ZXMuCisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorYm9vbCBBcnJheUVxKGNvbnN0IFQq
IGxocywgc2l6ZV90IHNpemUsIGNvbnN0IFUqIHJocyk7CisKKy8vIFRoaXMgZ2VuZXJpYyB2ZXJz
aW9uIGlzIHVzZWQgd2hlbiBrIGlzIDAuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4KK2lubGluZSBib29sIEFycmF5RXEoY29uc3QgVCYgbGhzLCBjb25zdCBVJiByaHMpIHsgcmV0
dXJuIGxocyA9PSByaHM7IH0KKworLy8gVGhpcyBvdmVybG9hZCBpcyB1c2VkIHdoZW4gayA+PSAx
LgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBOPgoraW5saW5lIGJv
b2wgQXJyYXlFcShjb25zdCBUKCZsaHMpW05dLCBjb25zdCBVKCZyaHMpW05dKSB7CisgIHJldHVy
biBpbnRlcm5hbDo6QXJyYXlFcShsaHMsIE4sIHJocyk7Cit9CisKKy8vIFRoaXMgaGVscGVyIHJl
ZHVjZXMgY29kZSBibG9hdC4gIElmIHdlIGluc3RlYWQgcHV0IGl0cyBsb2dpYyBpbnNpZGUKKy8v
IHRoZSBwcmV2aW91cyBBcnJheUVxKCkgZnVuY3Rpb24sIGFycmF5cyB3aXRoIGRpZmZlcmVudCBz
aXplcyB3b3VsZAorLy8gbGVhZCB0byBkaWZmZXJlbnQgY29waWVzIG9mIHRoZSB0ZW1wbGF0ZSBj
b2RlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Citib29sIEFycmF5RXEoY29u
c3QgVCogbGhzLCBzaXplX3Qgc2l6ZSwgY29uc3QgVSogcmhzKSB7CisgIGZvciAoc2l6ZV90IGkg
PSAwOyBpICE9IHNpemU7IGkrKykgeworICAgIGlmICghaW50ZXJuYWw6OkFycmF5RXEobGhzW2ld
LCByaHNbaV0pKQorICAgICAgcmV0dXJuIGZhbHNlOworICB9CisgIHJldHVybiB0cnVlOworfQor
CisvLyBGaW5kcyB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgaXRlcmF0b3IgcmFuZ2UgW2JlZ2lu
LCBlbmQpIHRoYXQKKy8vIGVxdWFscyBlbGVtLiAgRWxlbWVudCBtYXkgYmUgYSBuYXRpdmUgYXJy
YXkgdHlwZSBpdHNlbGYuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlciwgdHlwZW5hbWUgRWxlbWVu
dD4KK0l0ZXIgQXJyYXlBd2FyZUZpbmQoSXRlciBiZWdpbiwgSXRlciBlbmQsIGNvbnN0IEVsZW1l
bnQmIGVsZW0pIHsKKyAgZm9yIChJdGVyIGl0ID0gYmVnaW47IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgIGlmIChpbnRlcm5hbDo6QXJyYXlFcSgqaXQsIGVsZW0pKQorICAgICAgcmV0dXJuIGl0Owor
ICB9CisgIHJldHVybiBlbmQ7Cit9CisKKy8vIENvcHlBcnJheSgpIGNvcGllcyBhIGstZGltZW5z
aW9uYWwgbmF0aXZlIGFycmF5IHVzaW5nIHRoZSBlbGVtZW50cycKKy8vIG9wZXJhdG9yPSwgd2hl
cmUgayBjYW4gYmUgYW55IGludGVnZXIgPj0gMC4gIFdoZW4gayBpcyAwLAorLy8gQ29weUFycmF5
KCkgZGVnZW5lcmF0ZXMgaW50byBjb3B5aW5nIGEgc2luZ2xlIHZhbHVlLgorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3ZvaWQgQ29weUFycmF5KGNvbnN0IFQqIGZyb20sIHNp
emVfdCBzaXplLCBVKiB0byk7CisKKy8vIFRoaXMgZ2VuZXJpYyB2ZXJzaW9uIGlzIHVzZWQgd2hl
biBrIGlzIDAuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2lubGluZSB2b2lk
IENvcHlBcnJheShjb25zdCBUJiBmcm9tLCBVKiB0bykgeyAqdG8gPSBmcm9tOyB9CisKKy8vIFRo
aXMgb3ZlcmxvYWQgaXMgdXNlZCB3aGVuIGsgPj0gMS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVLCBzaXplX3QgTj4KK2lubGluZSB2b2lkIENvcHlBcnJheShjb25zdCBUKCZmcm9t
KVtOXSwgVSgqdG8pW05dKSB7CisgIGludGVybmFsOjpDb3B5QXJyYXkoZnJvbSwgTiwgKnRvKTsK
K30KKworLy8gVGhpcyBoZWxwZXIgcmVkdWNlcyBjb2RlIGJsb2F0LiAgSWYgd2UgaW5zdGVhZCBw
dXQgaXRzIGxvZ2ljIGluc2lkZQorLy8gdGhlIHByZXZpb3VzIENvcHlBcnJheSgpIGZ1bmN0aW9u
LCBhcnJheXMgd2l0aCBkaWZmZXJlbnQgc2l6ZXMKKy8vIHdvdWxkIGxlYWQgdG8gZGlmZmVyZW50
IGNvcGllcyBvZiB0aGUgdGVtcGxhdGUgY29kZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPgordm9pZCBDb3B5QXJyYXkoY29uc3QgVCogZnJvbSwgc2l6ZV90IHNpemUsIFUqIHRv
KSB7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHNpemU7IGkrKykgeworICAgIGludGVybmFs
OjpDb3B5QXJyYXkoZnJvbVtpXSwgdG8gKyBpKTsKKyAgfQorfQorCisvLyBUaGUgcmVsYXRpb24g
YmV0d2VlbiBhbiBOYXRpdmVBcnJheSBvYmplY3QgKHNlZSBiZWxvdykgYW5kIHRoZQorLy8gbmF0
aXZlIGFycmF5IGl0IHJlcHJlc2VudHMuCisvLyBXZSB1c2UgMiBkaWZmZXJlbnQgc3RydWN0cyB0
byBhbGxvdyBub24tY29weWFibGUgdHlwZXMgdG8gYmUgdXNlZCwgYXMgbG9uZworLy8gYXMgUmVs
YXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgpIGlzIHBhc3NlZC4KK3N0cnVjdCBSZWxhdGlvblRvU291
cmNlUmVmZXJlbmNlIHt9Oworc3RydWN0IFJlbGF0aW9uVG9Tb3VyY2VDb3B5IHt9OworCisvLyBB
ZGFwdHMgYSBuYXRpdmUgYXJyYXkgdG8gYSByZWFkLW9ubHkgU1RMLXN0eWxlIGNvbnRhaW5lci4g
IEluc3RlYWQKKy8vIG9mIHRoZSBjb21wbGV0ZSBTVEwgY29udGFpbmVyIGNvbmNlcHQsIHRoaXMg
YWRhcHRvciBvbmx5IGltcGxlbWVudHMKKy8vIG1lbWJlcnMgdXNlZnVsIGZvciBHb29nbGUgTW9j
aydzIGNvbnRhaW5lciBtYXRjaGVycy4gIE5ldyBtZW1iZXJzCisvLyBzaG91bGQgYmUgYWRkZWQg
YXMgbmVlZGVkLiAgVG8gc2ltcGxpZnkgdGhlIGltcGxlbWVudGF0aW9uLCB3ZSBvbmx5CisvLyBz
dXBwb3J0IEVsZW1lbnQgYmVpbmcgYSByYXcgdHlwZSAoaS5lLiBoYXZpbmcgbm8gdG9wLWxldmVs
IGNvbnN0IG9yCisvLyByZWZlcmVuY2UgbW9kaWZpZXIpLiAgSXQncyB0aGUgY2xpZW50J3MgcmVz
cG9uc2liaWxpdHkgdG8gc2F0aXNmeQorLy8gdGhpcyByZXF1aXJlbWVudC4gIEVsZW1lbnQgY2Fu
IGJlIGFuIGFycmF5IHR5cGUgaXRzZWxmIChoZW5jZQorLy8gbXVsdGktZGltZW5zaW9uYWwgYXJy
YXlzIGFyZSBzdXBwb3J0ZWQpLgordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnQ+CitjbGFzcyBO
YXRpdmVBcnJheSB7CisgcHVibGljOgorICAvLyBTVEwtc3R5bGUgY29udGFpbmVyIHR5cGVkZWZz
LgorICB0eXBlZGVmIEVsZW1lbnQgdmFsdWVfdHlwZTsKKyAgdHlwZWRlZiBFbGVtZW50KiBpdGVy
YXRvcjsKKyAgdHlwZWRlZiBjb25zdCBFbGVtZW50KiBjb25zdF9pdGVyYXRvcjsKKworICAvLyBD
b25zdHJ1Y3RzIGZyb20gYSBuYXRpdmUgYXJyYXkuIFJlZmVyZW5jZXMgdGhlIHNvdXJjZS4KKyAg
TmF0aXZlQXJyYXkoY29uc3QgRWxlbWVudCogYXJyYXksIHNpemVfdCBjb3VudCwgUmVsYXRpb25U
b1NvdXJjZVJlZmVyZW5jZSkgeworICAgIEluaXRSZWYoYXJyYXksIGNvdW50KTsKKyAgfQorCisg
IC8vIENvbnN0cnVjdHMgZnJvbSBhIG5hdGl2ZSBhcnJheS4gQ29waWVzIHRoZSBzb3VyY2UuCisg
IE5hdGl2ZUFycmF5KGNvbnN0IEVsZW1lbnQqIGFycmF5LCBzaXplX3QgY291bnQsIFJlbGF0aW9u
VG9Tb3VyY2VDb3B5KSB7CisgICAgSW5pdENvcHkoYXJyYXksIGNvdW50KTsKKyAgfQorCisgIC8v
IENvcHkgY29uc3RydWN0b3IuCisgIE5hdGl2ZUFycmF5KGNvbnN0IE5hdGl2ZUFycmF5JiByaHMp
IHsKKyAgICAodGhpcy0+KnJocy5jbG9uZV8pKHJocy5hcnJheV8sIHJocy5zaXplXyk7CisgIH0K
KworICB+TmF0aXZlQXJyYXkoKSB7CisgICAgaWYgKGNsb25lXyAhPSAmTmF0aXZlQXJyYXk6Oklu
aXRSZWYpCisgICAgICBkZWxldGVbXSBhcnJheV87CisgIH0KKworICAvLyBTVEwtc3R5bGUgY29u
dGFpbmVyIG1ldGhvZHMuCisgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZV87IH0K
KyAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBhcnJheV87IH0KKyAgY29u
c3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gYXJyYXlfICsgc2l6ZV87IH0KKyAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IE5hdGl2ZUFycmF5JiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4g
c2l6ZSgpID09IHJocy5zaXplKCkgJiYKKyAgICAgICAgQXJyYXlFcShiZWdpbigpLCBzaXplKCks
IHJocy5iZWdpbigpKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgZW51bSB7CisgICAga0NoZWNrVHlw
ZUlzTm90Q29uc3RPckFSZWZlcmVuY2UgPSBTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI8CisgICAg
ICAgIEVsZW1lbnQsIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhFbGVtZW50KT46
OnZhbHVlCisgIH07CisKKyAgLy8gSW5pdGlhbGl6ZXMgdGhpcyBvYmplY3Qgd2l0aCBhIGNvcHkg
b2YgdGhlIGlucHV0LgorICB2b2lkIEluaXRDb3B5KGNvbnN0IEVsZW1lbnQqIGFycmF5LCBzaXpl
X3QgYV9zaXplKSB7CisgICAgRWxlbWVudCogY29uc3QgY29weSA9IG5ldyBFbGVtZW50W2Ffc2l6
ZV07CisgICAgQ29weUFycmF5KGFycmF5LCBhX3NpemUsIGNvcHkpOworICAgIGFycmF5XyA9IGNv
cHk7CisgICAgc2l6ZV8gPSBhX3NpemU7CisgICAgY2xvbmVfID0gJk5hdGl2ZUFycmF5OjpJbml0
Q29weTsKKyAgfQorCisgIC8vIEluaXRpYWxpemVzIHRoaXMgb2JqZWN0IHdpdGggYSByZWZlcmVu
Y2Ugb2YgdGhlIGlucHV0LgorICB2b2lkIEluaXRSZWYoY29uc3QgRWxlbWVudCogYXJyYXksIHNp
emVfdCBhX3NpemUpIHsKKyAgICBhcnJheV8gPSBhcnJheTsKKyAgICBzaXplXyA9IGFfc2l6ZTsK
KyAgICBjbG9uZV8gPSAmTmF0aXZlQXJyYXk6OkluaXRSZWY7CisgIH0KKworICBjb25zdCBFbGVt
ZW50KiBhcnJheV87CisgIHNpemVfdCBzaXplXzsKKyAgdm9pZCAoTmF0aXZlQXJyYXk6OipjbG9u
ZV8pKGNvbnN0IEVsZW1lbnQqLCBzaXplX3QpOworCisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8o
TmF0aXZlQXJyYXkpOworfTsKKwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1l
c3BhY2UgdGVzdGluZwogCi0jZGVmaW5lIEdURVNUX01FU1NBR0VfKG1lc3NhZ2UsIHJlc3VsdF90
eXBlKSBcCi0gIDo6dGVzdGluZzo6aW50ZXJuYWw6OkFzc2VydEhlbHBlcihyZXN1bHRfdHlwZSwg
X19GSUxFX18sIF9fTElORV9fLCBtZXNzYWdlKSBcCisjZGVmaW5lIEdURVNUX01FU1NBR0VfQVRf
KGZpbGUsIGxpbmUsIG1lc3NhZ2UsIHJlc3VsdF90eXBlKSBcCisgIDo6dGVzdGluZzo6aW50ZXJu
YWw6OkFzc2VydEhlbHBlcihyZXN1bHRfdHlwZSwgZmlsZSwgbGluZSwgbWVzc2FnZSkgXAogICAg
ID0gOjp0ZXN0aW5nOjpNZXNzYWdlKCkKIAorI2RlZmluZSBHVEVTVF9NRVNTQUdFXyhtZXNzYWdl
LCByZXN1bHRfdHlwZSkgXAorICBHVEVTVF9NRVNTQUdFX0FUXyhfX0ZJTEVfXywgX19MSU5FX18s
IG1lc3NhZ2UsIHJlc3VsdF90eXBlKQorCiAjZGVmaW5lIEdURVNUX0ZBVEFMX0ZBSUxVUkVfKG1l
c3NhZ2UpIFwKICAgcmV0dXJuIEdURVNUX01FU1NBR0VfKG1lc3NhZ2UsIDo6dGVzdGluZzo6VGVz
dFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUpCiAKQEAgLTgwMCw3ICsxMjA4LDcgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBSYW5kb20gewogI2RlZmluZSBHVEVTVF9TVUNDRVNTXyhtZXNzYWdlKSBcCiAg
IEdURVNUX01FU1NBR0VfKG1lc3NhZ2UsIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ6OmtTdWNj
ZXNzKQogCi0vLyBTdXBwcmVzc2VzIE1TVkMgd2FybmluZ3MgNDA3MiAodW5yZWFjaGFibGUgY29k
ZSkgZm9yIHRoZSBjb2RlIGZvbGxvd2luZworLy8gU3VwcHJlc3MgTVNWQyB3YXJuaW5nIDQ3MDIg
KHVucmVhY2hhYmxlIGNvZGUpIGZvciB0aGUgY29kZSBmb2xsb3dpbmcKIC8vIHN0YXRlbWVudCBp
ZiBpdCByZXR1cm5zIG9yIHRocm93cyAob3IgZG9lc24ndCByZXR1cm4gb3IgdGhyb3cgaW4gc29t
ZQogLy8gc2l0dWF0aW9ucykuCiAjZGVmaW5lIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NP
REVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KSBcCkBAIC04MDgsNyArMTIxNiw3IEBAIGNsYXNz
IEdURVNUX0FQSV8gUmFuZG9tIHsKIAogI2RlZmluZSBHVEVTVF9URVNUX1RIUk9XXyhzdGF0ZW1l
bnQsIGV4cGVjdGVkX2V4Y2VwdGlvbiwgZmFpbCkgXAogICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9C
TE9DS0VSXyBcCi0gIGlmIChjb25zdCBjaGFyKiBndGVzdF9tc2cgPSAiIikgeyBcCisgIGlmICg6
OnRlc3Rpbmc6OmludGVybmFsOjpDb25zdENoYXJQdHIgZ3Rlc3RfbXNnID0gIiIpIHsgXAogICAg
IGJvb2wgZ3Rlc3RfY2F1Z2h0X2V4cGVjdGVkID0gZmFsc2U7IFwKICAgICB0cnkgeyBcCiAgICAg
ICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVu
dCk7IFwKQEAgLTgxNywzOCArMTIyNSwzOCBAQCBjbGFzcyBHVEVTVF9BUElfIFJhbmRvbSB7CiAg
ICAgICBndGVzdF9jYXVnaHRfZXhwZWN0ZWQgPSB0cnVlOyBcCiAgICAgfSBcCiAgICAgY2F0Y2gg
KC4uLikgeyBcCi0gICAgICBndGVzdF9tc2cgPSAiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIHRo
cm93cyBhbiBleGNlcHRpb24gb2YgdHlwZSAiIFwKLSAgICAgICAgICAgICAgICAgICNleHBlY3Rl
ZF9leGNlcHRpb24gIi5cbiAgQWN0dWFsOiBpdCB0aHJvd3MgYSBkaWZmZXJlbnQgIiBcCi0gICAg
ICAgICAgICAgICAgICAidHlwZS4iOyBcCisgICAgICBndGVzdF9tc2cudmFsdWUgPSBcCisgICAg
ICAgICAgIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5
cGUgIiBcCisgICAgICAgICAgI2V4cGVjdGVkX2V4Y2VwdGlvbiAiLlxuICBBY3R1YWw6IGl0IHRo
cm93cyBhIGRpZmZlcmVudCB0eXBlLiI7IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VO
XyhndGVzdF9sYWJlbF90ZXN0dGhyb3dfLCBfX0xJTkVfXyk7IFwKICAgICB9IFwKICAgICBpZiAo
IWd0ZXN0X2NhdWdodF9leHBlY3RlZCkgeyBcCi0gICAgICBndGVzdF9tc2cgPSAiRXhwZWN0ZWQ6
ICIgI3N0YXRlbWVudCAiIHRocm93cyBhbiBleGNlcHRpb24gb2YgdHlwZSAiIFwKLSAgICAgICAg
ICAgICAgICAgICNleHBlY3RlZF9leGNlcHRpb24gIi5cbiAgQWN0dWFsOiBpdCB0aHJvd3Mgbm90
aGluZy4iOyBcCisgICAgICBndGVzdF9tc2cudmFsdWUgPSBcCisgICAgICAgICAgIkV4cGVjdGVk
OiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5cGUgIiBcCisgICAgICAg
ICAgI2V4cGVjdGVkX2V4Y2VwdGlvbiAiLlxuICBBY3R1YWw6IGl0IHRocm93cyBub3RoaW5nLiI7
IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0dGhyb3df
LCBfX0xJTkVfXyk7IFwKICAgICB9IFwKICAgfSBlbHNlIFwKICAgICBHVEVTVF9DT05DQVRfVE9L
RU5fKGd0ZXN0X2xhYmVsX3Rlc3R0aHJvd18sIF9fTElORV9fKTogXAotICAgICAgZmFpbChndGVz
dF9tc2cpCisgICAgICBmYWlsKGd0ZXN0X21zZy52YWx1ZSkKIAogI2RlZmluZSBHVEVTVF9URVNU
X05PX1RIUk9XXyhzdGF0ZW1lbnQsIGZhaWwpIFwKICAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxP
Q0tFUl8gXAotICBpZiAoY29uc3QgY2hhciogZ3Rlc3RfbXNnID0gIiIpIHsgXAorICBpZiAoOjp0
ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKICAgICB0cnkgeyBcCiAgICAgICBH
VEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7
IFwKICAgICB9IFwKICAgICBjYXRjaCAoLi4uKSB7IFwKLSAgICAgIGd0ZXN0X21zZyA9ICJFeHBl
Y3RlZDogIiAjc3RhdGVtZW50ICIgZG9lc24ndCB0aHJvdyBhbiBleGNlcHRpb24uXG4iIFwKLSAg
ICAgICAgICAgICAgICAgICIgIEFjdHVhbDogaXQgdGhyb3dzLiI7IFwKICAgICAgIGdvdG8gR1RF
U1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0bm90aHJvd18sIF9fTElORV9fKTsgXAog
ICAgIH0gXAogICB9IGVsc2UgXAogICAgIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxf
dGVzdG5vdGhyb3dfLCBfX0xJTkVfXyk6IFwKLSAgICAgIGZhaWwoZ3Rlc3RfbXNnKQorICAgICAg
ZmFpbCgiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgdGhyb3cgYW4gZXhjZXB0aW9u
LlxuIiBcCisgICAgICAgICAgICIgIEFjdHVhbDogaXQgdGhyb3dzLiIpCiAKICNkZWZpbmUgR1RF
U1RfVEVTVF9BTllfVEhST1dfKHN0YXRlbWVudCwgZmFpbCkgXAogICBHVEVTVF9BTUJJR1VPVVNf
RUxTRV9CTE9DS0VSXyBcCi0gIGlmIChjb25zdCBjaGFyKiBndGVzdF9tc2cgPSAiIikgeyBcCisg
IGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAogICAgIGJvb2wgZ3Rl
c3RfY2F1Z2h0X2FueSA9IGZhbHNlOyBcCiAgICAgdHJ5IHsgXAogICAgICAgR1RFU1RfU1VQUFJF
U1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCkBAIC04NTcs
MTMgKzEyNjUsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBSYW5kb20gewogICAgICAgZ3Rlc3RfY2F1
Z2h0X2FueSA9IHRydWU7IFwKICAgICB9IFwKICAgICBpZiAoIWd0ZXN0X2NhdWdodF9hbnkpIHsg
XAotICAgICAgZ3Rlc3RfbXNnID0gIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4g
ZXhjZXB0aW9uLlxuIiBcCi0gICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IGl0IGRvZXNuJ3Qu
IjsgXAogICAgICAgZ290byBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3Rhbnl0
aHJvd18sIF9fTElORV9fKTsgXAogICAgIH0gXAogICB9IGVsc2UgXAogICAgIEdURVNUX0NPTkNB
VF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdGFueXRocm93XywgX19MSU5FX18pOiBcCi0gICAgICBm
YWlsKGd0ZXN0X21zZykKKyAgICAgIGZhaWwoIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJv
d3MgYW4gZXhjZXB0aW9uLlxuIiBcCisgICAgICAgICAgICIgIEFjdHVhbDogaXQgZG9lc24ndC4i
KQogCiAKIC8vIEltcGxlbWVudHMgQm9vbGVhbiB0ZXN0IGFzc2VydGlvbnMgc3VjaCBhcyBFWFBF
Q1RfVFJVRS4gZXhwcmVzc2lvbiBjYW4gYmUKQEAgLTg4MCwxOCArMTI4NywxNyBAQCBjbGFzcyBH
VEVTVF9BUElfIFJhbmRvbSB7CiAKICNkZWZpbmUgR1RFU1RfVEVTVF9OT19GQVRBTF9GQUlMVVJF
XyhzdGF0ZW1lbnQsIGZhaWwpIFwKICAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAot
ICBpZiAoY29uc3QgY2hhciogZ3Rlc3RfbXNnID0gIiIpIHsgXAorICBpZiAoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpIYXNO
ZXdGYXRhbEZhaWx1cmVIZWxwZXIgZ3Rlc3RfZmF0YWxfZmFpbHVyZV9jaGVja2VyOyBcCiAgICAg
R1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQp
OyBcCiAgICAgaWYgKGd0ZXN0X2ZhdGFsX2ZhaWx1cmVfY2hlY2tlci5oYXNfbmV3X2ZhdGFsX2Zh
aWx1cmUoKSkgeyBcCi0gICAgICBndGVzdF9tc2cgPSAiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAi
IGRvZXNuJ3QgZ2VuZXJhdGUgbmV3IGZhdGFsICIgXAotICAgICAgICAgICAgICAgICAgImZhaWx1
cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZC5cbiIgXAotICAgICAgICAgICAgICAgICAgIiAgQWN0
dWFsOiBpdCBkb2VzLiI7IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9s
YWJlbF90ZXN0bm9mYXRhbF8sIF9fTElORV9fKTsgXAogICAgIH0gXAogICB9IGVsc2UgXAogICAg
IEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdG5vZmF0YWxfLCBfX0xJTkVfXyk6
IFwKLSAgICAgIGZhaWwoZ3Rlc3RfbXNnKQorICAgICAgZmFpbCgiRXhwZWN0ZWQ6ICIgI3N0YXRl
bWVudCAiIGRvZXNuJ3QgZ2VuZXJhdGUgbmV3IGZhdGFsICIgXAorICAgICAgICAgICAiZmFpbHVy
ZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkLlxuIiBcCisgICAgICAgICAgICIgIEFjdHVhbDogaXQg
ZG9lcy4iKQogCiAvLyBFeHBhbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyB0aGF0IGltcGxl
bWVudHMgdGhlIGdpdmVuIHRlc3QuCiAjZGVmaW5lIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVz
dF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXApAQCAtOTA0LDcgKzEzMTAsNyBAQCBjbGFzcyBHVEVT
VF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIDogcHVibGljIHBh
cmVudF9jbGFzcyB7XAogICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0
ZXN0X25hbWUpKCkge31cCiAgcHJpdmF0ZTpcCiAgIHZpcnR1YWwgdm9pZCBUZXN0Qm9keSgpO1wK
LSAgc3RhdGljIDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mb187XAorICBzdGF0
aWMgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvXyBHVEVTVF9BVFRSSUJVVEVf
VU5VU0VEXztcCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oXAogICAgICAgR1RF
U1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSk7XAogfTtcCkBA
IC05MTIsNyArMTMxOCw4IEBAIGNsYXNzIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNl
X25hbWUsIHRlc3RfbmFtZSkgOiBwdWJsaWMgcGFyZW50X2NsYXNzIHtcCiA6OnRlc3Rpbmc6OlRl
c3RJbmZvKiBjb25zdCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0
X25hbWUpXAogICA6OnRlc3RfaW5mb18gPVwKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpNYWtl
QW5kUmVnaXN0ZXJUZXN0SW5mbyhcCi0gICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgI3Rlc3RfbmFt
ZSwgIiIsICIiLCBcCisgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgI3Rlc3RfbmFtZSwgTlVMTCwg
TlVMTCwgXAorICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpDb2RlTG9jYXRpb24oX19GSUxF
X18sIF9fTElORV9fKSwgXAogICAgICAgICAocGFyZW50X2lkKSwgXAogICAgICAgICBwYXJlbnRf
Y2xhc3M6OlNldFVwVGVzdENhc2UsIFwKICAgICAgICAgcGFyZW50X2NsYXNzOjpUZWFyRG93blRl
c3RDYXNlLCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oCmluZGV4IDU0MGVmNGNk
NDRlNzJiNTU4NjU3MDgxYTVmMDdhMGYyOGIzZTQwZTMuLjA4MmI4NzI4OWFlMTdjOGFhN2I5NmQ4
ZThjOTJiOTZlMDE4Yzc2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oCkBA
IC0yNyw4ICsyNyw2IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8g
QXV0aG9yczogRGFuIEVnbm9yIChlZ25vckBnb29nbGUuY29tKQotLy8KIC8vIEEgInNtYXJ0IiBw
b2ludGVyIHR5cGUgd2l0aCByZWZlcmVuY2UgdHJhY2tpbmcuICBFdmVyeSBwb2ludGVyIHRvIGEK
IC8vIHBhcnRpY3VsYXIgb2JqZWN0IGlzIGtlcHQgb24gYSBjaXJjdWxhciBsaW5rZWQgbGlzdC4g
IFdoZW4gdGhlIGxhc3QgcG9pbnRlcgogLy8gdG8gYW4gb2JqZWN0IGlzIGRlc3Ryb3llZCBvciBy
ZWFzc2lnbmVkLCB0aGUgb2JqZWN0IGlzIGRlbGV0ZWQuCkBAIC02MiwxNiArNjAsMTggQEAKIC8v
ICAgICAgIHJhdyBwb2ludGVyIChlLmcuIHZpYSBnZXQoKSkgY29uY3VycmVudGx5LCBhbmQKIC8v
ICAgICAtIGl0J3Mgc2FmZSB0byB3cml0ZSB0byB0d28gbGlua2VkX3B0cnMgdGhhdCBwb2ludCB0
byB0aGUgc2FtZQogLy8gICAgICAgc2hhcmVkIG9iamVjdCBjb25jdXJyZW50bHkuCi0vLyBUT0RP
KHdhbkBnb29nbGUuY29tKTogcmVuYW1lIHRoaXMgdG8gc2FmZV9saW5rZWRfcHRyIHRvIGF2b2lk
CisvLyBGSVhNRTogcmVuYW1lIHRoaXMgdG8gc2FmZV9saW5rZWRfcHRyIHRvIGF2b2lkCiAvLyBj
b25mdXNpb24gd2l0aCBub3JtYWwgbGlua2VkX3B0ci4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEg
RE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RF
U1RfTElOS0VEX1BUUl9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dU
RVNUX0xJTktFRF9QVFJfSF8KIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPGFzc2Vy
dC5oPgogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorI2luY2x1ZGUg
Imd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFt
ZXNwYWNlIGludGVybmFsIHsKQEAgLTEwNSwyNSArMTA1LDM1IEBAIGNsYXNzIGxpbmtlZF9wdHJf
aW50ZXJuYWwgewogICAvLyBmcmFtZXdvcmsuCiAKICAgLy8gSm9pbiBhbiBleGlzdGluZyBjaXJj
bGUuCi0gIC8vIEwgPCBnX2xpbmtlZF9wdHJfbXV0ZXgKLSAgdm9pZCBqb2luKGxpbmtlZF9wdHJf
aW50ZXJuYWwgY29uc3QqIHB0cikgeworICB2b2lkIGpvaW4obGlua2VkX3B0cl9pbnRlcm5hbCBj
b25zdCogcHRyKQorICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8oZ19saW5rZWRfcHRyX211dGV4
KSB7CiAgICAgTXV0ZXhMb2NrIGxvY2soJmdfbGlua2VkX3B0cl9tdXRleCk7CiAKICAgICBsaW5r
ZWRfcHRyX2ludGVybmFsIGNvbnN0KiBwID0gcHRyOwotICAgIHdoaWxlIChwLT5uZXh0XyAhPSBw
dHIpIHAgPSBwLT5uZXh0XzsKKyAgICB3aGlsZSAocC0+bmV4dF8gIT0gcHRyKSB7CisgICAgICBh
c3NlcnQocC0+bmV4dF8gIT0gdGhpcyAmJgorICAgICAgICAgICAgICJUcnlpbmcgdG8gam9pbigp
IGEgbGlua2VkIHJpbmcgd2UgYXJlIGFscmVhZHkgaW4uICIKKyAgICAgICAgICAgICAiSXMgR01v
Y2sgdGhyZWFkIHNhZmV0eSBlbmFibGVkPyIpOworICAgICAgcCA9IHAtPm5leHRfOworICAgIH0K
ICAgICBwLT5uZXh0XyA9IHRoaXM7CiAgICAgbmV4dF8gPSBwdHI7CiAgIH0KIAogICAvLyBMZWF2
ZSB3aGF0ZXZlciBjaXJjbGUgd2UncmUgcGFydCBvZi4gIFJldHVybnMgdHJ1ZSBpZiB3ZSB3ZXJl
IHRoZQogICAvLyBsYXN0IG1lbWJlciBvZiB0aGUgY2lyY2xlLiAgT25jZSB0aGlzIGlzIGRvbmUs
IHlvdSBjYW4gam9pbigpIGFub3RoZXIuCi0gIC8vIEwgPCBnX2xpbmtlZF9wdHJfbXV0ZXgKLSAg
Ym9vbCBkZXBhcnQoKSB7CisgIGJvb2wgZGVwYXJ0KCkKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVE
RURfKGdfbGlua2VkX3B0cl9tdXRleCkgewogICAgIE11dGV4TG9jayBsb2NrKCZnX2xpbmtlZF9w
dHJfbXV0ZXgpOwogCiAgICAgaWYgKG5leHRfID09IHRoaXMpIHJldHVybiB0cnVlOwogICAgIGxp
bmtlZF9wdHJfaW50ZXJuYWwgY29uc3QqIHAgPSBuZXh0XzsKLSAgICB3aGlsZSAocC0+bmV4dF8g
IT0gdGhpcykgcCA9IHAtPm5leHRfOworICAgIHdoaWxlIChwLT5uZXh0XyAhPSB0aGlzKSB7Cisg
ICAgICBhc3NlcnQocC0+bmV4dF8gIT0gbmV4dF8gJiYKKyAgICAgICAgICAgICAiVHJ5aW5nIHRv
IGRlcGFydCgpIGEgbGlua2VkIHJpbmcgd2UgYXJlIG5vdCBpbi4gIgorICAgICAgICAgICAgICJJ
cyBHTW9jayB0aHJlYWQgc2FmZXR5IGVuYWJsZWQ/Iik7CisgICAgICBwID0gcC0+bmV4dF87Cisg
ICAgfQogICAgIHAtPm5leHRfID0gbmV4dF87CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CkBAIC0x
NzIsMTUgKzE4Miw2IEBAIGNsYXNzIGxpbmtlZF9wdHIgewogICBUKiBnZXQoKSBjb25zdCB7IHJl
dHVybiB2YWx1ZV87IH0KICAgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsg
fQogICBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqdmFsdWVfOyB9Ci0gIC8vIFJlbGVh
c2Ugb3duZXJzaGlwIG9mIHRoZSBwb2ludGVkIG9iamVjdCBhbmQgcmV0dXJucyBpdC4KLSAgLy8g
U29sZSBvd25lcnNoaXAgYnkgdGhpcyBsaW5rZWRfcHRyIG9iamVjdCBpcyByZXF1aXJlZC4KLSAg
VCogcmVsZWFzZSgpIHsKLSAgICBib29sIGxhc3QgPSBsaW5rXy5kZXBhcnQoKTsKLSAgICBhc3Nl
cnQobGFzdCk7Ci0gICAgVCogdiA9IHZhbHVlXzsKLSAgICB2YWx1ZV8gPSBOVUxMOwotICAgIHJl
dHVybiB2OwotICB9CiAKICAgYm9vbCBvcGVyYXRvcj09KFQqIHApIGNvbnN0IHsgcmV0dXJuIHZh
bHVlXyA9PSBwOyB9CiAgIGJvb2wgb3BlcmF0b3IhPShUKiBwKSBjb25zdCB7IHJldHVybiB2YWx1
ZV8gIT0gcDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVy
YXRlZC5oCmluZGV4IDYyYjVhZTEzZTI4ZTU2NmIxZTg4NTEyN2RiYjA3Y2QxNzJhMjZmMTkuLmY0
ZGY1OTkxOTA1NzJlN2IwOWU5ZDdiMGNlODk5NDcyZGM3ZWI5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRp
bC1nZW5lcmF0ZWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgKQEAgLTEsNCArMSw2IEBACi0v
LyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBhIHNjcmlwdC4gIERPIE5PVCBFRElUIEJZIEhB
TkQhISEKKy8vIFRoaXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5IGNvbW1hbmQ6CisvLyAgICAgcHVt
cC5weSBndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oLnB1bXAKKy8vIERPIE5PVCBFRElUIEJZ
IEhBTkQhISEKIAogLy8gQ29weXJpZ2h0IDIwMDggR29vZ2xlIEluYy4KIC8vIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCkBAIC0yOCw4ICszMCw3IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFk
IExvc2V2KQorCiAKIC8vIFR5cGUgYW5kIGZ1bmN0aW9uIHV0aWxpdGllcyBmb3IgaW1wbGVtZW50
aW5nIHBhcmFtZXRlcml6ZWQgdGVzdHMuCiAvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEg
U0NSSVBULiAgRE8gTk9UIEVESVQgQlkgSEFORCEKQEAgLTQxLDE2ICs0MiwxMyBAQAogLy8gYnkg
dGhlIG1heGltdW0gYXJpdHkgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mIHR1cGxlIHdoaWNoIGlz
CiAvLyBjdXJyZW50bHkgc2V0IGF0IDEwLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1Qg
REVMRVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJB
TV9VVElMX0dFTkVSQVRFRF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFM
X0dURVNUX1BBUkFNX1VUSUxfR0VORVJBVEVEX0hfCiAKLS8vIHNjcmlwdHMvZnVzZV9ndGVzdC5w
eSBkZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKLS8vICp1bmNv
bmRpdGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQK
LS8vIGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0
LXBvcnQuaD4KLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCisjaW5jbHVkZSAiZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0
LXBvcnQuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC01OCw4ICs1Niw4IEBAIG5hbWVz
cGFjZSB0ZXN0aW5nIHsKIC8vIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLgogdGVt
cGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcj4KIGludGVybmFsOjpQYXJhbUdlbmVyYXRv
cjwKLSAgICB0eXBlbmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcj46
OnZhbHVlX3R5cGU+IFZhbHVlc0luKAotICAgICAgICBGb3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZv
cndhcmRJdGVyYXRvciBlbmQpOworICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVy
YXRvclRyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPgorVmFsdWVzSW4oRm9yd2Fy
ZEl0ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKTsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHNpemVfdCBOPgogaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFZhbHVlc0luKGNv
bnN0IFQgKCZhcnJheSlbTl0pOwpAQCAtNzcsNyArNzUsMTAgQEAgY2xhc3MgVmFsdWVBcnJheTEg
ewogICBleHBsaWNpdCBWYWx1ZUFycmF5MShUMSB2MSkgOiB2MV8odjEpIHt9CiAKICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgeyBy
ZXR1cm4gVmFsdWVzSW4oJnYxXywgJnYxXyArIDEpOyB9CisgIG9wZXJhdG9yIFBhcmFtR2VuZXJh
dG9yPFQ+KCkgY29uc3QgeworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2
MV8pfTsKKyAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOworICB9CiAKICBwcml2YXRlOgogICAv
LyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC05Myw3
ICs5NCw3IEBAIGNsYXNzIFZhbHVlQXJyYXkyIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
ICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJh
eVtdID0ge3YxXywgdjJffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4o
djFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
ICAgfQogCkBAIC0xMTIsNyArMTEzLDggQEAgY2xhc3MgVmFsdWVBcnJheTMgewogCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
LSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzX307CisgICAgY29uc3QgVCBhcnJh
eVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0K
IApAQCAtMTMzLDcgKzEzNSw4IEBAIGNsYXNzIFZhbHVlQXJyYXk0IHsKIAogICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAg
Y29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0X307CisgICAgY29uc3QgVCBhcnJh
eVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyl9OwogICAgIHJldHVybiBW
YWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTU1LDcgKzE1OCw4IEBAIGNsYXNzIFZhbHVlQXJy
YXk1IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0
XywgdjVffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3Rh
dGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nh
c3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCkBAIC0xNzksNyArMTgzLDkgQEAgY2xhc3MgVmFsdWVBcnJheTYgewogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2
X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19j
YXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+
KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2Xyl9
OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjA0LDcgKzIxMCw5IEBA
IGNsYXNzIFZhbHVlQXJyYXk3IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0
b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3Yx
XywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3X307CisgICAgY29uc3QgVCBhcnJheVtdID0g
e3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3Xyl9OwogICAg
IHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjMxLDcgKzIzOSw5IEBAIGNsYXNz
IFZhbHVlQXJyYXk4IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFy
YW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJf
LCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7
c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGlj
X2Nhc3Q8VD4odjhfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0y
NTksNyArMjY5LDEwIEBAIGNsYXNzIFZhbHVlQXJyYXk5IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3Qg
VCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV99
OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2Fz
dDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2
NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBz
dGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2OV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTI4
OCw3ICszMDEsMTAgQEAgY2xhc3MgVmFsdWVBcnJheTEwIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3Qg
VCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8s
IHYxMF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0
aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2Fz
dDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKX07CiAgICAgcmV0dXJuIFZh
bHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0zMTksNyArMzM1LDEwIEBAIGNsYXNzIFZhbHVlQXJy
YXkxMSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJh
dG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2
NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFffTsKKyAgICBjb25zdCBUIGFy
cmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8
VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdf
KSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3Rh
dGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pfTsKICAgICByZXR1cm4gVmFs
dWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTM1MSw4ICszNzAsMTEgQEAgY2xhc3MgVmFsdWVBcnJh
eTEyIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0
XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl99Owor
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxU
Pih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8p
LCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0
aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkp
OwogICB9CiAKQEAgLTM4Niw4ICs0MDgsMTEgQEAgY2xhc3MgVmFsdWVBcnJheTEzIHsKIAogICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25z
dCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8s
IHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM199OworICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0
aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2Fz
dDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKX07CiAgICAgcmV0dXJu
IFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC00MjIsOCArNDQ3LDExIEBAIGNsYXNzIFZhbHVl
QXJyYXkxNCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNf
LCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJf
LCB2MTNfLCB2MTRffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8
VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJy
YXkpOwogICB9CiAKQEAgLTQ1OSw4ICs0ODcsMTIgQEAgY2xhc3MgVmFsdWVBcnJheTE1IHsKIAog
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBj
b25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2
Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8s
IHYxNV99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0
aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2Fz
dDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4o
djExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNf
KSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pfTsK
ICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTQ5OSw4ICs1MzEsMTIgQEAg
Y2xhc3MgVmFsdWVBcnJheTE2IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0
b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3Yx
XywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0g
ICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl99OworICAgIGNvbnN0IFQgYXJyYXlb
XSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2
NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBz
dGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNf
Y2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC01NDAsOCArNTc2LDEyIEBAIGNsYXNz
IFZhbHVlQXJyYXkxNyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYy
XywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAg
ICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdffTsKKyAgICBjb25zdCBUIGFycmF5
W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRp
Y19jYXN0PFQ+KHYxN18pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAg
LTU4Miw4ICs2MjIsMTMgQEAgY2xhc3MgVmFsdWVBcnJheTE4IHsKIAogICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29u
c3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2
OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYx
N18sIHYxOF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBz
dGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNf
Y2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8
VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2
MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8p
LCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYxOF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAK
QEAgLTYyNSw4ICs2NzAsMTMgQEAgY2xhc3MgVmFsdWVBcnJheTE5IHsKIAogICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAg
Y29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3Xywgdjhf
LCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8s
IHYxN18sIHYxOF8sIHYxOV99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxU
Pih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18p
LCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3Rh
dGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC02NzAsOCArNzIwLDEzIEBAIGNsYXNz
IFZhbHVlQXJyYXkyMCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYy
XywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAg
ICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBffTsK
KyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRp
Y19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nh
c3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pfTsKICAg
ICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTcxNyw4ICs3NzIsMTQgQEAgY2xh
c3MgVmFsdWVBcnJheTIxIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3Ig
UGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywg
djJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAg
ICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8s
IHYyMV99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0
aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2Fz
dDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4o
djExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNf
KSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBz
dGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIw
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4o
YXJyYXkpOwogICB9CiAKQEAgLTc2NSw4ICs4MjYsMTQgQEAgY2xhc3MgVmFsdWVBcnJheTIyIHsK
IAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4o
KSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVf
LCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYx
NF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl99OworICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2
Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBz
dGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNf
Y2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nh
c3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
OF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKX07CiAgICAgcmV0dXJu
IFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC04MTUsOSArODgyLDE0IEBAIGNsYXNzIFZhbHVl
QXJyYXkyMyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNf
LCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJf
LCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2
MjJfLAotICAgICAgICB2MjNffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8
VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNf
KSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0
YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRp
Y19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pfTsKICAgICByZXR1cm4gVmFsdWVzSW4o
YXJyYXkpOwogICB9CiAKQEAgLTg2Nyw5ICs5MzksMTUgQEAgY2xhc3MgVmFsdWVBcnJheTI0IHsK
IAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4o
KSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVf
LCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYx
NF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18s
Ci0gICAgICAgIHYyNF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2
MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBz
dGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGlj
X2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2Fz
dDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nh
c3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYy
NF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTkyMCw5ICs5OTgs
MTUgQEAgY2xhc3MgVmFsdWVBcnJheTI1IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAg
b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtd
ID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYx
MV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYx
OV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV99OworICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0
aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2Fz
dDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8
VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2
MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8p
LCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4o
djIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVf
KX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC05NzUsOSArMTA1OSwx
NSBAQCBjbGFzcyBWYWx1ZUFycmF5MjYgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5
XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2X307Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNf
Y2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0
PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2Fz
dDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+
KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5
KTsKICAgfQogCkBAIC0xMDMyLDkgKzExMjIsMTYgQEAgY2xhc3MgVmFsdWVBcnJheTI3IHsKIAog
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBj
b25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2
Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8s
IHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0g
ICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN199OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtz
dGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNf
Y2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
Ml8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8
VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2
MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8p
LCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4o
djI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pfTsKICAgICByZXR1cm4gVmFsdWVz
SW4oYXJyYXkpOwogICB9CiAKQEAgLTEwOTAsOSArMTE4NywxNiBAQCBjbGFzcyBWYWx1ZUFycmF5
MjggewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRf
LCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEz
XywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywg
djIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4X307CisgICAgY29uc3Qg
VCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19j
YXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+
KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5Xyks
IHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2
MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8p
LCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0
YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBz
dGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRp
Y19jYXN0PFQ+KHYyOF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAg
LTExNDksOSArMTI1MywxNiBAQCBjbGFzcyBWYWx1ZUFycmF5MjkgewogCiAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBj
b25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8s
IHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2Xywg
djE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0Xywg
djI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYx
OV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyks
IHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2
MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8p
LCBzdGF0aWNfY2FzdDxUPih2MjlfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAg
fQogCkBAIC0xMjEwLDkgKzEzMjEsMTcgQEAgY2xhc3MgVmFsdWVBcnJheTMwIHsKIAogICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7
Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3
XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8s
IHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAg
IHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF99OworICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2Fz
dDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2
N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBz
dGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwg
c3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0
aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNf
Y2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYzMF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTEyNzMs
OSArMTM5MiwxNyBAQCBjbGFzcyBWYWx1ZUFycmF5MzEgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBU
IGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5Xywg
djEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3Xywg
djE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1Xywg
djI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxX307CisgICAgY29uc3QgVCBhcnJheVtd
ID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0
YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19j
YXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0
PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+
KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMw
XyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwog
ICB9CiAKQEAgLTEzMzcsOSArMTQ2NCwxNyBAQCBjbGFzcyBWYWx1ZUFycmF5MzIgewogCiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0
IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywg
djdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1
XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAg
ICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyX307
CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0
PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0
XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0
YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0
aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19j
YXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0
PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2Fz
dDxUPih2MzJfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0xNDAz
LDkgKzE1MzgsMTggQEAgY2xhc3MgVmFsdWVBcnJheTMzIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3Qg
VCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8s
IHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18s
IHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8s
IHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM199OworICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0
aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2Fz
dDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8
VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2
MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8p
LCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4o
djIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVf
KSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBz
dGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMy
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pfTsKICAgICByZXR1cm4gVmFsdWVzSW4o
YXJyYXkpOwogICB9CiAKQEAgLTE0NzAsOSArMTYxNCwxOCBAQCBjbGFzcyBWYWx1ZUFycmF5MzQg
ewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2
NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywg
djE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIz
XywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMx
XywgdjMyXywgdjMzXywgdjM0X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0
PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
XyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBz
dGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRp
Y19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0
aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19j
YXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNf
Y2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0
PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkp
OwogICB9CiAKQEAgLTE1MzgsMTAgKzE2OTEsMTggQEAgY2xhc3MgVmFsdWVBcnJheTM1IHsKIAog
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBj
b25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2
Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8s
IHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0g
ICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYz
Ml8sIHYzM18sIHYzNF8sCi0gICAgICAgIHYzNV99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtz
dGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNf
Y2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
Ml8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8
VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2
MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8p
LCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4o
djI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2Mjhf
KSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBz
dGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1
Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTYwOSwxMCArMTc3
MCwxOSBAQCBjbGFzcyBWYWx1ZUFycmF5MzYgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
ICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5
W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywg
djExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4Xywg
djE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2Xywg
djI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAg
ICAgICAgdjM2X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyks
IHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRp
Y19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2Fz
dDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+
KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1
XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYy
Ml8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2
MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8p
LCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0
YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjM2Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAt
MTY4MiwxMCArMTg1MiwxOSBAQCBjbGFzcyBWYWx1ZUFycmF5MzcgewogCiAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBj
b25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8s
IHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2Xywg
djE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0Xywg
djI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0
XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYx
OV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyks
IHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2
MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8p
LCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0
YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pfTsK
ICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTE3NTYsMTAgKzE5MzUsMTkg
QEAgY2xhc3MgVmFsdWVBcnJheTM4IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3Bl
cmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0g
e3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8s
Ci0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8s
IHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18s
IHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8sCi0gICAgICAg
IHYzNl8sIHYzN18sIHYzOF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxU
Pih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18p
LCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3Rh
dGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nh
c3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
M18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8
VD4odjM4Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTgzMSwx
MCArMjAxOSwyMCBAQCBjbGFzcyBWYWx1ZUFycmF5MzkgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBU
IGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5Xywg
djEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3Xywg
djE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1Xywg
djI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1
XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5X307CisgICAgY29uc3QgVCBhcnJheVtd
ID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0
YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19j
YXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0
PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+
KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMw
XyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxU
Pih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYz
N18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5Xyl9
OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTkwOCwxMCArMjEwNiwy
MCBAQCBjbGFzcyBWYWx1ZUFycmF5NDAgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5
XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3
XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAg
ICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwX307CisgICAgY29uc3QgVCBhcnJheVtdID0g
e3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRp
Y19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0
PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2Fz
dDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+
KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIx
XyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYy
OF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyks
IHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2
MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18p
LCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0
YXRpY19jYXN0PFQ+KHY0MF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAK
QEAgLTE5ODcsMTAgKzIxOTUsMjAgQEAgY2xhc3MgVmFsdWVBcnJheTQxIHsKIAogICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0g
ICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3Xywg
djhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYx
Nl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYy
NF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18s
IHYzNF8sIHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYzOV8sIHY0MF8sIHY0MV99
OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2Fz
dDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2
NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBz
dGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNf
Y2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGlj
X2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2Fz
dDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nh
c3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxU
Pih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
Nl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8
VD4odjQxXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjA2Nywx
MCArMjI4NSwyMSBAQCBjbGFzcyBWYWx1ZUFycmF5NDIgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBU
IGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5Xywg
djEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3Xywg
djE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1Xywg
djI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1
XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyX307Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNf
Y2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0
PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2Fz
dDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+
KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3
XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxU
Pih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYz
NF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2Xyks
IHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2
NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyl9OwogICAgIHJldHVybiBWYWx1ZXNJ
bihhcnJheSk7CiAgIH0KIApAQCAtMjE0OCwxMCArMjM3NywyMSBAQCBjbGFzcyBWYWx1ZUFycmF5
NDMgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRf
LCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEz
XywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywg
djIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywg
djMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4Xywg
djM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYx
OV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyks
IHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2
MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8p
LCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0
YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBz
dGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRp
Y19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pfTsKICAgICByZXR1cm4gVmFsdWVzSW4o
YXJyYXkpOwogICB9CiAKQEAgLTIyMzEsMTAgKzI0NzEsMjEgQEAgY2xhc3MgVmFsdWVBcnJheTQ0
IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8
VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0Xywg
djVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18s
IHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYy
M18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYz
MV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYz
OV8sIHY0MF8sIHY0MV8sIHY0Ml8sIHY0M18sIHY0NF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9
IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0
aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2Fz
dDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nh
c3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYy
MV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8
VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2
MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8p
LCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4o
djM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2Mzdf
KSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBz
dGF0aWNfY2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY0Ml8pLCBzdGF0aWNfY2FzdDxUPih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4odjQ0
Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjMxNSwxMCArMjU2
NiwyMiBAQCBjbGFzcyBWYWx1ZUFycmF5NDUgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
ICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5
W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywg
djExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4Xywg
djE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2Xywg
djI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAg
ICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0
XywgdjQ1X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYx
M18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyks
IHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2
MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8p
LCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0
YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2Mjlf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBz
dGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRp
Y19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0
aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19j
YXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjQ1Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjQwMSwx
MCArMjY2NCwyMiBAQCBjbGFzcyBWYWx1ZUFycmF5NDYgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBU
IGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5Xywg
djEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3Xywg
djE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1Xywg
djI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1
XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQz
XywgdjQ0XywgdjQ1XywgdjQ2X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0
PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
XyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBz
dGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRp
Y19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0
aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19j
YXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNf
Y2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0
PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2Fz
dDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+
KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQy
XyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pfTsKICAgICByZXR1cm4g
VmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTI0ODksMTEgKzI3NjQsMjIgQEAgY2xhc3MgVmFs
dWVBcnJheTQ3IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1H
ZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2
M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYx
Ml8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8s
IHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8s
IHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18s
IHYzOF8sIHYzOV8sIHY0MF8sIHY0MV8sIHY0Ml8sIHY0M18sIHY0NF8sIHY0NV8sIHY0Nl8sCi0g
ICAgICAgIHY0N199OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8p
LCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0
aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nh
c3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
NV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8
VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2
MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8p
LCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4o
djI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFf
KSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBz
dGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2NDBfKSwg
c3RhdGljX2Nhc3Q8VD4odjQxXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0Ml8pLCBzdGF0
aWNfY2FzdDxUPih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4odjQ0XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY0NV8pLCBzdGF0aWNfY2FzdDxUPih2NDZfKSwgc3RhdGljX2Nhc3Q8VD4odjQ3Xyl9
OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjU3OSwxMSArMjg2NSwy
MyBAQCBjbGFzcyBWYWx1ZUFycmF5NDggewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5
XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3
XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAg
ICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0Xywg
djQ1XywgdjQ2XywgdjQ3XywKLSAgICAgICAgdjQ4X307CisgICAgY29uc3QgVCBhcnJheVtdID0g
e3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRp
Y19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0
PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2Fz
dDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+
KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIx
XyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYy
OF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyks
IHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2
MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18p
LCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0
YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBz
dGF0aWNfY2FzdDxUPih2NDdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ4Xyl9OwogICAg
IHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjY3MCwxMSArMjk2OCwyMyBAQCBj
bGFzcyBWYWx1ZUFycmF5NDkgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFf
LCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAg
ICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIw
XywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4
XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2
XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0XywgdjQ1Xywg
djQ2XywgdjQ3XywKLSAgICAgICAgdjQ4XywgdjQ5X307CisgICAgY29uc3QgVCBhcnJheVtdID0g
e3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRp
Y19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0
PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2Fz
dDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+
KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIx
XyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYy
OF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyks
IHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2
MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18p
LCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0
YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBz
dGF0aWNfY2FzdDxUPih2NDdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ4XyksIHN0YXRp
Y19jYXN0PFQ+KHY0OV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAg
LTI3NjIsMTEgKzMwNzIsMjMgQEAgY2xhc3MgVmFsdWVBcnJheTUwIHsKIAogICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAg
Y29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3Xywgdjhf
LCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8s
IHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8s
IHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYz
NF8sIHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYzOV8sIHY0MF8sIHY0MV8sIHY0
Ml8sIHY0M18sIHY0NF8sIHY0NV8sIHY0Nl8sIHY0N18sCi0gICAgICAgIHY0OF8sIHY0OV8sIHY1
MF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNf
Y2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxU
Pih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8p
LCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjEx
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwg
c3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0
aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3Rh
dGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNf
Y2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2Fz
dDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2NDBfKSwgc3RhdGljX2Nh
c3Q8VD4odjQxXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0Ml8pLCBzdGF0aWNfY2FzdDxU
Pih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4odjQ0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0
NV8pLCBzdGF0aWNfY2FzdDxUPih2NDZfKSwgc3RhdGljX2Nhc3Q8VD4odjQ3XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY0OF8pLCBzdGF0aWNfY2FzdDxUPih2NDlfKSwgc3RhdGljX2Nhc3Q8
VD4odjUwXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjgyNiw3
ICszMTQ4LDcgQEAgY2xhc3MgVmFsdWVBcnJheTUwIHsKICAgY29uc3QgVDUwIHY1MF87CiB9Owog
Ci0jaWYgR1RFU1RfSEFTX0NPTUJJTkUKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKIC8vIElOVEVS
TkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCiAvLwogLy8gR2Vu
ZXJhdGVzIHZhbHVlcyBmcm9tIHRoZSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB2YWx1ZXMgcHJvZHVj
ZWQKQEAgLTI4MzQsOSArMzE1Niw5IEBAIGNsYXNzIFZhbHVlQXJyYXk1MCB7CiAvLwogdGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3IyCi0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6c3RkOjp0dXBs
ZTxUMSwgVDI+ID4geworICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRl
c3Rpbmc6OnR1cGxlPFQxLCBUMj4gPiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0dXBs
ZTxUMSwgVDI+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMj4g
UGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IyKGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyKQpAQCAt
Mjg4Miw3ICszMjA0LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjIKICAgICB2
aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7
CiAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBj
b25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87
IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJu
IGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQ
YXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAv
LyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhl
cgogICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25j
YXN0LgpAQCAtMjkxNCw3ICszMjM2LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjIKIAogICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKICAgICAgIGlmICghQXRFbmQo
KSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJl
bnQyXyk7CisgICAgICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJhbVR5cGUoKmN1cnJl
bnQxXywgKmN1cnJlbnQyXykpOwogICAgIH0KICAgICBib29sIEF0RW5kKCkgY29uc3QgewogICAg
ICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3
aGVuIGVpdGhlciBvZiB0aGUKQEAgLTI5MzYsNyArMzI1OCw3IEBAIGNsYXNzIENhcnRlc2lhblBy
b2R1Y3RHZW5lcmF0b3IyCiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+Ojpp
dGVyYXRvciBiZWdpbjJfOwogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6
aXRlcmF0b3IgZW5kMl87CiAgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVyYXRv
ciBjdXJyZW50Ml87Ci0gICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFsdWVfOworICAgIGxpbmtlZF9w
dHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsKICAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblBy
b2R1Y3RHZW5lcmF0b3IyOjpJdGVyYXRvcgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNz
aWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTI5NDksOSArMzI3MSw5IEBAIGNsYXNzIENhcnRl
c2lhblByb2R1Y3RHZW5lcmF0b3IyCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzPgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjMKLSAgICA6
IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDM+
ID4geworICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1
cGxlPFQxLCBUMiwgVDM+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8VDEs
IFQyLCBUMz4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBU
Mz4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IzKGNvbnN0IFBhcmFt
R2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBj
b25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczKQpAQCAtMzAwNSw3ICszMzI3LDcgQEAgY2xhc3Mg
Q2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjMKICAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRl
cmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7CiAgICAgICByZXR1cm4gbmV3IEl0ZXJh
dG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQo
KSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBh
cmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9
CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBh
cmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAvLyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBn
ZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgogICAgICAgLy8gaXRlcmF0b3IgaXMg
b2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0LgpAQCAtMzA0MSw3ICszMzYzLDcg
QEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjMKIAogICAgIHZvaWQgQ29tcHV0ZUN1
cnJlbnRWYWx1ZSgpIHsKICAgICAgIGlmICghQXRFbmQoKSkKLSAgICAgICAgY3VycmVudF92YWx1
ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXyk7CisgICAg
ICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJl
bnQyXywgKmN1cnJlbnQzXykpOwogICAgIH0KICAgICBib29sIEF0RW5kKCkgY29uc3QgewogICAg
ICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3
aGVuIGVpdGhlciBvZiB0aGUKQEAgLTMwNjcsNyArMzM4OSw3IEBAIGNsYXNzIENhcnRlc2lhblBy
b2R1Y3RHZW5lcmF0b3IzCiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+Ojpp
dGVyYXRvciBiZWdpbjNfOwogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6
aXRlcmF0b3IgZW5kM187CiAgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+OjppdGVyYXRv
ciBjdXJyZW50M187Ci0gICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFsdWVfOworICAgIGxpbmtlZF9w
dHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsKICAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblBy
b2R1Y3RHZW5lcmF0b3IzOjpJdGVyYXRvcgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNz
aWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTMwODEsOSArMzQwMyw5IEBAIGNsYXNzIENhcnRl
c2lhblByb2R1Y3RHZW5lcmF0b3IzCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3I0Ci0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6c3RkOjp0dXBs
ZTxUMSwgVDIsIFQzLCBUND4gPiB7CisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZh
Y2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+ID4gewogIHB1YmxpYzoKLSAgdHlw
ZWRlZiA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6
OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjQoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMs
CkBAIC0zMTQ2LDcgKzM0NjgsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNAog
ICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNv
bnN0IHsKICAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwogICAgIH0KLSAgICB2aXJ0
dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3Zh
bHVlXzsgfQorICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyBy
ZXR1cm4gY3VycmVudF92YWx1ZV8uZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNv
bnN0IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKICAg
ICAgIC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhl
IG90aGVyCiAgICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4g
ZG93bmNhc3QuCkBAIC0zMTg2LDggKzM1MDgsOCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2Vu
ZXJhdG9yNAogCiAgICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYgKCFB
dEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAq
Y3VycmVudDJfLCAqY3VycmVudDNfLAotICAgICAgICAgICAgKmN1cnJlbnQ0Xyk7CisgICAgICAg
IGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQy
XywgKmN1cnJlbnQzXywKKyAgICAgICAgICAgICpjdXJyZW50NF8pKTsKICAgICB9CiAgICAgYm9v
bCBBdEVuZCgpIGNvbnN0IHsKICAgICAgIC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3Qg
dGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2hlbiBlaXRoZXIgb2YgdGhlCkBAIC0zMjE3LDcgKzM1Mzks
NyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNAogICAgIGNvbnN0IHR5cGVuYW1l
IFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgYmVnaW40XzsKICAgICBjb25zdCB0eXBlbmFt
ZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yIGVuZDRfOwogICAgIHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgY3VycmVudDRfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50
X3ZhbHVlXzsKKyAgICBsaW5rZWRfcHRyPFBhcmFtVHlwZT4gY3VycmVudF92YWx1ZV87CiAgIH07
ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNDo6SXRlcmF0b3IKIAogICAvLyBO
byBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC0zMjMyLDkg
KzM1NTQsOSBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNAogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVu
YW1lIFQ1PgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjUKLSAgICA6IHB1YmxpYyBQ
YXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4g
PiB7CisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVw
bGU8VDEsIFQyLCBUMywgVDQsIFQ1PiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjUoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBh
cmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBAIC0z
MzA0LDcgKzM2MjYsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNQogICAgIHZp
cnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsK
ICAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwogICAgIH0KLSAgICB2aXJ0dWFsIGNv
bnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsg
fQorICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4g
Y3VycmVudF92YWx1ZV8uZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBh
cmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKICAgICAgIC8v
IEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVy
CiAgICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNh
c3QuCkBAIC0zMzQ4LDggKzM2NzAsOCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9y
NQogCiAgICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgp
KQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVu
dDJfLCAqY3VycmVudDNfLAotICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1cnJlbnQ1Xyk7Cisg
ICAgICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1
cnJlbnQyXywgKmN1cnJlbnQzXywKKyAgICAgICAgICAgICpjdXJyZW50NF8sICpjdXJyZW50NV8p
KTsKICAgICB9CiAgICAgYm9vbCBBdEVuZCgpIGNvbnN0IHsKICAgICAgIC8vIFdlIG11c3QgcmVw
b3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2hlbiBlaXRoZXIgb2YgdGhl
CkBAIC0zMzgzLDcgKzM3MDUsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNQog
ICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgYmVnaW41XzsK
ICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJhdG9yIGVuZDVfOwog
ICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgY3VycmVudDVfOwotICAg
IFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKKyAgICBsaW5rZWRfcHRyPFBhcmFtVHlwZT4gY3Vy
cmVudF92YWx1ZV87CiAgIH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNTo6
SXRlcmF0b3IKIAogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBw
b3J0ZWQuCkBAIC0zNDAwLDEwICszNzIyLDEwIEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3I1CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgIHR5cGVuYW1lIFQ2PgogY2xhc3MgQ2FydGVz
aWFuUHJvZHVjdEdlbmVyYXRvcjYKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFj
ZTwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwKKyAgICA6IHB1YmxpYyBQYXJhbUdl
bmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsCiAg
ICAgICAgIFQ2PiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnR1cGxlPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDY+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDY+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2Vu
ZXJhdG9yNihjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKQEAgLTM0ODEs
NyArMzgwMyw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2CiAgICAgdmlydHVh
bCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3QgewogICAg
ICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwgY29uc3Qg
UGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9Cisg
ICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiBjdXJy
ZW50X3ZhbHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1J
dGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAgICAgLy8gSGF2
aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKICAg
ICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4K
QEAgLTM1MjksOCArMzg1MSw4IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2CiAK
ICAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkpCi0g
ICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8s
ICpjdXJyZW50M18sCi0gICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVudDVfLCAqY3VycmVu
dDZfKTsKKyAgICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVu
dDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAorICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1
cnJlbnQ1XywgKmN1cnJlbnQ2XykpOwogICAgIH0KICAgICBib29sIEF0RW5kKCkgY29uc3Qgewog
ICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5n
ZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAgLTM1NjgsNyArMzg5MCw3IEBAIGNsYXNzIENhcnRlc2lh
blByb2R1Y3RHZW5lcmF0b3I2CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDY+
OjppdGVyYXRvciBiZWdpbjZfOwogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ2
Pjo6aXRlcmF0b3IgZW5kNl87CiAgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDY+OjppdGVy
YXRvciBjdXJyZW50Nl87Ci0gICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFsdWVfOworICAgIGxpbmtl
ZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsKICAgfTsgIC8vIGNsYXNzIENhcnRlc2lh
blByb2R1Y3RHZW5lcmF0b3I2OjpJdGVyYXRvcgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0g
YXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTM1ODYsMTAgKzM5MDgsMTAgQEAgY2xhc3Mg
Q2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjYKIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgdHlwZW5h
bWUgVDYsIHR5cGVuYW1lIFQ3PgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjcKLSAg
ICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsCisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6
dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKICAgICAgICAgVDc+ID4gewog
IHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDc+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3PiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjco
Y29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9y
PFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBAIC0zNjc1LDcgKzM5OTcs
NyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNwogICAgIHZpcnR1YWwgUGFyYW1J
dGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKICAgICAgIHJldHVy
biBuZXcgSXRlcmF0b3IoKnRoaXMpOwogICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlw
ZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQorICAgIHZpcnR1
YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gY3VycmVudF92YWx1
ZV8uZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0b3JJ
bnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKICAgICAgIC8vIEhhdmluZyB0aGUg
c2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCiAgICAgICAvLyBp
dGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCkBAIC0zNzI3
LDggKzQwNDksOCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNwogCiAgICAgdm9p
ZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBj
dXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVu
dDNfLAotICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1
cnJlbnQ3Xyk7CisgICAgICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJhbVR5cGUoKmN1
cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKKyAgICAgICAgICAgICpjdXJyZW50NF8s
ICpjdXJyZW50NV8sICpjdXJyZW50Nl8sICpjdXJyZW50N18pKTsKICAgICB9CiAgICAgYm9vbCBB
dEVuZCgpIGNvbnN0IHsKICAgICAgIC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3QgdGhl
IGVuZCBvZiB0aGUgcmFuZ2Ugd2hlbiBlaXRoZXIgb2YgdGhlCkBAIC0zNzcwLDcgKzQwOTIsNyBA
QCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNwogICAgIGNvbnN0IHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQ3Pjo6aXRlcmF0b3IgYmVnaW43XzsKICAgICBjb25zdCB0eXBlbmFtZSBQ
YXJhbUdlbmVyYXRvcjxUNz46Oml0ZXJhdG9yIGVuZDdfOwogICAgIHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFQ3Pjo6aXRlcmF0b3IgY3VycmVudDdfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50X3Zh
bHVlXzsKKyAgICBsaW5rZWRfcHRyPFBhcmFtVHlwZT4gY3VycmVudF92YWx1ZV87CiAgIH07ICAv
LyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNzo6SXRlcmF0b3IKIAogICAvLyBObyBp
bXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC0zNzg5LDEwICs0
MTExLDEwIEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3CiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1l
IFQ1LAogICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+CiBjbGFzcyBD
YXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOAotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50
ZXJmYWNlPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKKyAgICA6IHB1Ymxp
YyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBU
NCwgVDUsIFQ2LAogICAgICAgICBUNywgVDg+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0
ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiBQYXJhbVR5cGU7CisgIHR5
cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+IFBh
cmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOChjb25zdCBQYXJhbUdlbmVy
YXRvcjxUMT4mIGcxLAogICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKQEAgLTM4ODgsNyArNDIxMCw3IEBAIGNsYXNzIENhcnRl
c2lhblByb2R1Y3RHZW5lcmF0b3I4CiAgICAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNl
PFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3QgewogICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcigq
dGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29u
c3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9CisgICAgdmlydHVhbCBjb25zdCBQYXJhbVR5
cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiBjdXJyZW50X3ZhbHVlXy5nZXQoKTsgfQogICAg
IHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5
cGU+JiBvdGhlcikgY29uc3QgewogICAgICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJh
dG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKICAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRo
ZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KQEAgLTM5NDQsOCArNDI2Niw4IEBAIGNs
YXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4CiAKICAgICB2b2lkIENvbXB1dGVDdXJyZW50
VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkpCi0gICAgICAgIGN1cnJlbnRfdmFsdWVfID0g
UGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18sCi0gICAgICAgICAg
ICAqY3VycmVudDRfLCAqY3VycmVudDVfLCAqY3VycmVudDZfLCAqY3VycmVudDdfLCAqY3VycmVu
dDhfKTsKKyAgICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVu
dDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAorICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1
cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1cnJlbnQ3XywgKmN1cnJlbnQ4XykpOwogICAgIH0KICAg
ICBib29sIEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3Ig
cGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAgLTM5OTEsNyAr
NDMxMyw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4CiAgICAgY29uc3QgdHlw
ZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDg+OjppdGVyYXRvciBiZWdpbjhfOwogICAgIGNvbnN0IHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ4Pjo6aXRlcmF0b3IgZW5kOF87CiAgICAgdHlwZW5hbWUg
UGFyYW1HZW5lcmF0b3I8VDg+OjppdGVyYXRvciBjdXJyZW50OF87Ci0gICAgUGFyYW1UeXBlIGN1
cnJlbnRfdmFsdWVfOworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsK
ICAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4OjpJdGVyYXRvcgogCiAg
IC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTQw
MTEsMTAgKzQzMzMsMTAgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjgKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwg
dHlwZW5hbWUgVDUsCiAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwg
dHlwZW5hbWUgVDk+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOQotICAgIDogcHVi
bGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5n
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAogICAgICAgICBUNywgVDgsIFQ5PiA+IHsK
ICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDk+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Q
cm9kdWN0R2VuZXJhdG9yOShjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywK
QEAgLTQxMTcsNyArNDQzOSw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5CiAg
ICAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29u
c3QgewogICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1
YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFs
dWVfOyB9CisgICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJl
dHVybiBjdXJyZW50X3ZhbHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29u
c3QgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAg
ICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUg
b3RoZXIKICAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBk
b3duY2FzdC4KQEAgLTQxNzcsOSArNDQ5OSw5IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3I5CiAKICAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0
RW5kKCkpCi0gICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpj
dXJyZW50Ml8sICpjdXJyZW50M18sCisgICAgICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQ
YXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKICAgICAgICAgICAg
ICpjdXJyZW50NF8sICpjdXJyZW50NV8sICpjdXJyZW50Nl8sICpjdXJyZW50N18sICpjdXJyZW50
OF8sCi0gICAgICAgICAgICAqY3VycmVudDlfKTsKKyAgICAgICAgICAgICpjdXJyZW50OV8pKTsK
ICAgICB9CiAgICAgYm9vbCBBdEVuZCgpIGNvbnN0IHsKICAgICAgIC8vIFdlIG11c3QgcmVwb3J0
IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2hlbiBlaXRoZXIgb2YgdGhlCkBA
IC00MjI5LDcgKzQ1NTEsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOQogICAg
IGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ5Pjo6aXRlcmF0b3IgYmVnaW45XzsKICAg
ICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOT46Oml0ZXJhdG9yIGVuZDlfOwogICAg
IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ5Pjo6aXRlcmF0b3IgY3VycmVudDlfOwotICAgIFBh
cmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKKyAgICBsaW5rZWRfcHRyPFBhcmFtVHlwZT4gY3VycmVu
dF92YWx1ZV87CiAgIH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOTo6SXRl
cmF0b3IKIAogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0
ZWQuCkBAIC00MjUwLDEwICs0NTcyLDEwIEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0
b3I5CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlw
ZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlw
ZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTA+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yMTAKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpz
dGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCisgICAgOiBwdWJsaWMgUGFyYW1HZW5l
cmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwK
ICAgICAgICAgVDcsIFQ4LCBUOSwgVDEwPiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6
OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD4gUGFyYW1UeXBl
OworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwPiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjEw
KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLApAQCAtNDM2NCw3ICs0Njg2
LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjEwCiAgICAgdmlydHVhbCBQYXJh
bUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3QgewogICAgICAgcmV0
dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1U
eXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9CisgICAgdmly
dHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiBjdXJyZW50X3Zh
bHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRv
ckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAgICAgLy8gSGF2aW5nIHRo
ZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKICAgICAgIC8v
IGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KQEAgLTQ0
MjgsOSArNDc1MCw5IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IxMAogCiAgICAg
dm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAg
ICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3Vy
cmVudDNfLAorICAgICAgICBjdXJyZW50X3ZhbHVlXy5yZXNldChuZXcgUGFyYW1UeXBlKCpjdXJy
ZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18sCiAgICAgICAgICAgICAqY3VycmVudDRfLCAq
Y3VycmVudDVfLCAqY3VycmVudDZfLCAqY3VycmVudDdfLCAqY3VycmVudDhfLAotICAgICAgICAg
ICAgKmN1cnJlbnQ5XywgKmN1cnJlbnQxMF8pOworICAgICAgICAgICAgKmN1cnJlbnQ5XywgKmN1
cnJlbnQxMF8pKTsKICAgICB9CiAgICAgYm9vbCBBdEVuZCgpIGNvbnN0IHsKICAgICAgIC8vIFdl
IG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2hlbiBlaXRo
ZXIgb2YgdGhlCkBAIC00NDg0LDcgKzQ4MDYsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2Vu
ZXJhdG9yMTAKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMTA+OjppdGVyYXRv
ciBiZWdpbjEwXzsKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMTA+OjppdGVy
YXRvciBlbmQxMF87CiAgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDEwPjo6aXRlcmF0b3Ig
Y3VycmVudDEwXzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0
cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjEwOjpJdGVyYXRvcgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNz
aWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTQ1MTUsOCArNDgzNyw4IEBAIGNsYXNzIENhcnRl
c2lhblByb2R1Y3RIb2xkZXIyIHsKIENhcnRlc2lhblByb2R1Y3RIb2xkZXIyKGNvbnN0IEdlbmVy
YXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMikKICAgICAgIDogZzFfKGcxKSwgZzJfKGcy
KSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICBvcGVyYXRvciBQ
YXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMj4gPigpIGNvbnN0IHsKLSAgICByZXR1
cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDI+ID4oCisgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMj4gPigpIGNvbnN0IHsKKyAgICBy
ZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyPiA+KAogICAgICAg
ICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjI8VDEsIFQyPigKICAgICAgICAgc3RhdGlj
X2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFy
YW1HZW5lcmF0b3I8VDI+ID4oZzJfKSkpOwpAQCAtNDUzNyw4ICs0ODU5LDggQEAgQ2FydGVzaWFu
UHJvZHVjdEhvbGRlcjMoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcy
LAogICAgIGNvbnN0IEdlbmVyYXRvcjMmIGczKQogICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBn
M18oZzMpIHt9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDM+
ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEs
IFQyLCBUMz4gPigKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8
VDEsIFQyLCBUMz4gPigpIGNvbnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVz
dGluZzo6dHVwbGU8VDEsIFQyLCBUMz4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RH
ZW5lcmF0b3IzPFQxLCBUMiwgVDM+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRv
cjxUMT4gPihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4gPihn
Ml8pLApAQCAtNDU2Miw4ICs0ODg0LDggQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjQoY29uc3Qg
R2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICAgIGNvbnN0IEdlbmVyYXRv
cjMmIGczLCBjb25zdCBHZW5lcmF0b3I0JiBnNCkKICAgICAgIDogZzFfKGcxKSwgZzJfKGcyKSwg
ZzNfKGczKSwgZzRfKGc0KSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6
OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFt
R2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+ID4oCisgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiA+KCkgY29uc3Qg
eworICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQz
LCBUND4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0PFQxLCBUMiwg
VDMsIFQ0PigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwK
ICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwKQEAgLTQ1ODks
OCArNDkxMSw4IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXI1KGNvbnN0IEdlbmVyYXRvcjEmIGcx
LCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKICAgICBjb25zdCBHZW5lcmF0b3IzJiBnMywgY29uc3Qg
R2VuZXJhdG9yNCYgZzQsIGNvbnN0IEdlbmVyYXRvcjUmIGc1KQogICAgICAgOiBnMV8oZzEpLCBn
Ml8oZzIpLCBnM18oZzMpLCBnNF8oZzQpLCBnNV8oZzUpIHt9CiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+
Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQs
IFQ1PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxl
PFQxLCBUMiwgVDMsIFQ0LCBUNT4gPigKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVz
dGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiA+KCkgY29uc3QgeworICAgIHJldHVybiBQ
YXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+ID4oCiAg
ICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNTxUMSwgVDIsIFQzLCBUNCwgVDU+
KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLAogICAgICAg
ICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pLApAQCAtNDYyMCw4ICs0OTQy
LDggQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjYoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0
IEdlbmVyYXRvcjImIGcyLAogICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBnM18oZzMpLCBnNF8o
ZzQpLCBnNV8oZzUpLCBnNl8oZzYpIHt9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgICB0eXBl
bmFtZSBUNj4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIs
IFQzLCBUNCwgVDUsIFQ2PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwg
OjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+ID4oCisgIG9wZXJhdG9yIFBhcmFt
R2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+ID4oKSBj
b25zdCB7CisgICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDY+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJh
dG9yNjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1H
ZW5lcmF0b3I8VDE+ID4oZzFfKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8
VDI+ID4oZzJfKSwKQEAgLTQ2NTMsOSArNDk3NSw5IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXI3
KGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKICAgICAgIDogZzFf
KGcxKSwgZzJfKGcyKSwgZzNfKGczKSwgZzRfKGc0KSwgZzVfKGc1KSwgZzZfKGc2KSwgZzdfKGc3
KSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3
PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsCisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsCiAgICAgICBUNz4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4g
UGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4g
PigKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDc+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJh
dG9yNzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBh
cmFtR2VuZXJhdG9yPFQxPiA+KGcxXyksCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJh
dG9yPFQyPiA+KGcyXyksCkBAIC00NjkxLDkgKzUwMTMsOSBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9s
ZGVyOChjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgICAg
ICAgZzhfKGc4KSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgICAgdHlwZW5hbWUgVDYsIHR5
cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3Rk
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywKKyAgb3BlcmF0b3IgUGFyYW1HZW5l
cmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsCiAgICAg
ICBUOD4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBs
ZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+ID4oCisgICAgcmV0dXJuIFBhcmFtR2Vu
ZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4g
PigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4PFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOD4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQx
PiA+KGcxXyksCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyks
CkBAIC00NzMyLDkgKzUwNTQsOSBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyOShjb25zdCBHZW5l
cmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgICAgICAgZzlfKGc5KSB7fQog
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBl
bmFtZSBUOCwgdHlwZW5hbWUgVDk+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LAorICBvcGVyYXRvciBQYXJhbUdl
bmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
CiAgICAgICBUOT4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3Rk
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsCisgICAgcmV0dXJuIFBhcmFt
R2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwKICAgICAgICAgVDk+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9y
OTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PigKICAgICAgICAgc3RhdGljX2Nh
c3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKQEAgLTQ3NzYsMTAgKzUwOTgsMTAgQEAgQ2Fy
dGVzaWFuUHJvZHVjdEhvbGRlcjEwKGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0
b3IyJiBnMiwKICAgICAgICAgICBnOV8oZzkpLCBnMTBfKGcxMCkge30KICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFt
ZSBUNSwKICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVu
YW1lIFQ5LCB0eXBlbmFtZSBUMTA+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LAotICAgICAgVDksIFQxMD4gPigp
IGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIs
IFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsCi0gICAgICAgIFQ5LCBUMTA+ID4oCisgIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksCisgICAgICBUMTA+ID4oKSBjb25zdCB7CisgICAgcmV0dXJuIFBhcmFtR2Vu
ZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksCisgICAgICAgIFQxMD4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0
b3IxMDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LAogICAgICAgICAgICAgVDEw
PigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKQEAgLTQ4
MTAsMTEgKzUxMzIsOSBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMTAoY29uc3QgR2VuZXJhdG9y
MSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICBjb25zdCBHZW5lcmF0b3IxMCBnMTBfOwog
fTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXIxMAogCi0jZW5kaWYgIC8vIEdURVNU
X0hBU19DT01CSU5FCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQogCiB9ICAvLyBuYW1l
c3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAKLSNlbmRpZiAgLy8gIEdU
RVNUX0hBU19QQVJBTV9URVNUCi0KICNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRF
Uk5BTF9HVEVTVF9QQVJBTV9VVElMX0dFTkVSQVRFRF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdl
bmVyYXRlZC5oLnB1bXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcAppbmRleCBiYWVkZmJjMmQ3
ZTgzNDFiNWI1NTlkOWNlMzNiOGQ4NzQ1M2RlZDQyLi5hZThjNTdiNTJiYTFmNzg1OTFjNTNhNTky
OTgzNjk0NzQxNjY4YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBh
cmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcApAQCAtMjksOCArMjksNyBAQCAkdmFyIG1heHR1cGxl
ID0gMTAgICQkIE1heGltdW0gbnVtYmVyIG9mIENvbWJpbmUgYXJndW1lbnRzIHdlIHdhbnQgdG8g
c3VwcG9ydC4KIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCisKIAogLy8gVHlw
ZSBhbmQgZnVuY3Rpb24gdXRpbGl0aWVzIGZvciBpbXBsZW1lbnRpbmcgcGFyYW1ldGVyaXplZCB0
ZXN0cy4KIC8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBETyBOT1QgRURJ
VCBCWSBIQU5EIQpAQCAtMzksMTkgKzM4LDE2IEBAICR2YXIgbWF4dHVwbGUgPSAxMCAgJCQgTWF4
aW11bSBudW1iZXIgb2YgQ29tYmluZSBhcmd1bWVudHMgd2Ugd2FudCB0byBzdXBwb3J0LgogLy8g
YW5kIGF0IG1vc3QgJG1heHR1cGxlIGFyZ3VtZW50cyBpbiBDb21iaW5lLiBQbGVhc2UgY29udGFj
dAogLy8gZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tIGlmIHlvdSBuZWVkIG1v
cmUuCiAvLyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHRvIENvbWJp
bmUgaXMgbGltaXRlZAotLy8gYnkgdGhlIG1heGltdW0gYXJpdHkgb2YgdGhlIGltcGxlbWVudGF0
aW9uIG9mIHRyMTo6dHVwbGUgd2hpY2ggaXMKKy8vIGJ5IHRoZSBtYXhpbXVtIGFyaXR5IG9mIHRo
ZSBpbXBsZW1lbnRhdGlvbiBvZiB0dXBsZSB3aGljaCBpcwogLy8gY3VycmVudGx5IHNldCBhdCAk
bWF4dHVwbGUuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKKwogI2lmbmRl
ZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BBUkFNX1VUSUxfR0VORVJBVEVE
X0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJ
TF9HRU5FUkFURURfSF8KIAotLy8gc2NyaXB0cy9mdXNlX2d0ZXN0LnB5IGRlcGVuZHMgb24gZ3Rl
c3QncyBvd24gaGVhZGVyIGJlaW5nICNpbmNsdWRlZAotLy8gKnVuY29uZGl0aW9uYWxseSouICBU
aGVyZWZvcmUgdGhlc2UgI2luY2x1ZGVzIGNhbm5vdCBiZSBtb3ZlZAotLy8gaW5zaWRlICNpZiBH
VEVTVF9IQVNfUEFSQU1fVEVTVC4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJh
bS11dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgotCi0jaWYg
R1RFU1RfSEFTX1BBUkFNX1RFU1QKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJh
bS11dGlsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiBuYW1l
c3BhY2UgdGVzdGluZyB7CiAKQEAgLTU5LDggKzU1LDggQEAgbmFtZXNwYWNlIHRlc3Rpbmcgewog
Ly8gaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmguCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Rm9yd2FyZEl0ZXJhdG9yPgogaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPAotICAgIHR5cGVuYW1l
IDo6c3RkOjppdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gVmFs
dWVzSW4oCi0gICAgICAgIEZvcndhcmRJdGVyYXRvciBiZWdpbiwgRm9yd2FyZEl0ZXJhdG9yIGVu
ZCk7CisgIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJhaXRzPEZvcndh
cmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+CitWYWx1ZXNJbihGb3J3YXJkSXRlcmF0b3IgYmVnaW4s
IEZvcndhcmRJdGVyYXRvciBlbmQpOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+
CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8VD4gVmFsdWVzSW4oY29uc3QgVCAoJmFycmF5KVtO
XSk7CkBAIC03MiwzMyArNjgsMTggQEAgaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPHR5cGVuYW1l
IENvbnRhaW5lcjo6dmFsdWVfdHlwZT4gVmFsdWVzSW4oCiBuYW1lc3BhY2UgaW50ZXJuYWwgewog
CiAvLyBVc2VkIGluIHRoZSBWYWx1ZXMoKSBmdW5jdGlvbiB0byBwcm92aWRlIHBvbHltb3JwaGlj
IGNhcGFiaWxpdGllcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMT4KLWNsYXNzIFZhbHVlQXJyYXkx
IHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFZhbHVlQXJyYXkxKFQxIHYxKSA6IHYxXyh2MSkge30K
LQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4o
KSBjb25zdCB7IHJldHVybiBWYWx1ZXNJbigmdjFfLCAmdjFfICsgMSk7IH0KLQotIHByaXZhdGU6
Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTEmIG90aGVyKTsKLQotICBjb25zdCBUMSB2
MV87Ci19OwotCi0kcmFuZ2UgaSAyLi5uCiskcmFuZ2UgaSAxLi5uCiAkZm9yIGkgW1sKICRyYW5n
ZSBqIDEuLmkKIAogdGVtcGxhdGUgPCRmb3IgaiwgW1t0eXBlbmFtZSBUJGpdXT4KIGNsYXNzIFZh
bHVlQXJyYXkkaSB7CiAgcHVibGljOgotICBWYWx1ZUFycmF5JGkoJGZvciBqLCBbW1QkaiB2JGpd
XSkgOiAkZm9yIGosIFtbdiQoailfKHYkaildXSB7fQorICAkaWYgaT09MSBbW2V4cGxpY2l0IF1d
VmFsdWVBcnJheSRpKCRmb3IgaiwgW1tUJGogdiRqXV0pIDogJGZvciBqLCBbW3YkKGopXyh2JGop
XV0ge30KIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0geyRmb3IgaiwgW1t2JChqKV9d
XX07CisgICAgY29uc3QgVCBhcnJheVtdID0geyRmb3IgaiwgW1tzdGF0aWNfY2FzdDxUPih2JChq
KV8pXV19OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTE1LDcgKzk2
LDcgQEAgJGZvciBqIFtbCiAKIF1dCiAKLSNpZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVT
VF9IQVNfQ09NQklORQogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElO
IFVTRVIgQ09ERS4KIC8vCiAvLyBHZW5lcmF0ZXMgdmFsdWVzIGZyb20gdGhlIENhcnRlc2lhbiBw
cm9kdWN0IG9mIHZhbHVlcyBwcm9kdWNlZApAQCAtMTI4LDkgKzEwOSw5IEBAICRyYW5nZSBrIDIu
LmkKIAogdGVtcGxhdGUgPCRmb3IgaiwgW1t0eXBlbmFtZSBUJGpdXT4KIGNsYXNzIENhcnRlc2lh
blByb2R1Y3RHZW5lcmF0b3IkaQotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNl
PCA6OnN0ZDo6dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4geworICAgIDogcHVibGljIFBh
cmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4g
PiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0cjE6OnR1cGxlPCRmb3IgaiwgW1tUJGpd
XT4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8JGZvciBqLCBbW1Qkal1d
PiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpKCRmb3IgaiwgW1tj
b25zdCBQYXJhbUdlbmVyYXRvcjxUJGo+JiBnJGpdXSkKICAgICAgIDogJGZvciBqLCBbW2ckKGop
XyhnJGopXV0ge30KQEAgLTE4MCw3ICsxNjEsNyBAQCAkZm9yIGsgW1sKICAgICB2aXJ0dWFsIFBh
cmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7CiAgICAgICBy
ZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJh
bVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KKyAgICB2
aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRf
dmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJh
dG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAvLyBIYXZpbmcg
dGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgogICAgICAg
Ly8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0LgpAQCAt
MjEyLDcgKzE5Myw3IEBAICRmb3IgayBbWwogCiAgICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVl
KCkgewogICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFt
VHlwZSgkZm9yIGosIFtbKmN1cnJlbnQkKGopX11dKTsKKyAgICAgICAgY3VycmVudF92YWx1ZV8u
cmVzZXQobmV3IFBhcmFtVHlwZSgkZm9yIGosIFtbKmN1cnJlbnQkKGopX11dKSk7CiAgICAgfQog
ICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRv
ciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQpAQCAtMjM3LDcg
KzIxOCw3IEBAICRmb3IgaiBbWwogICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQkaj46Oml0
ZXJhdG9yIGN1cnJlbnQkKGopXzsKIF1dCiAKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87
CisgICAgbGlua2VkX3B0cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAgLy8gY2xh
c3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpOjpJdGVyYXRvcgogCiAgIC8vIE5vIGltcGxl
bWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTI2OSw4ICsyNTAsOCBA
QCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyJGkgewogQ2FydGVzaWFuUHJvZHVjdEhvbGRl
ciRpKCRmb3IgaiwgW1tjb25zdCBHZW5lcmF0b3IkaiYgZyRqXV0pCiAgICAgICA6ICRmb3Igaiwg
W1tnJChqKV8oZyRqKV1dIHt9CiAgIHRlbXBsYXRlIDwkZm9yIGosIFtbdHlwZW5hbWUgVCRqXV0+
Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTwkZm9yIGosIFtb
VCRqXV0+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIx
Ojp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4oCisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6
OnRlc3Rpbmc6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4gPigpIGNvbnN0IHsKKyAgICByZXR1cm4g
UGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8JGZvciBqLCBbW1Qkal1dPiA+KAogICAg
ICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpPCRmb3IgaiwgW1tUJGpdXT4oCiAk
Zm9yIGosW1sKIApAQCAtMjkxLDExICsyNzIsOSBAQCAkZm9yIGogW1sKIAogXV0KIAotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfQ09NQklORQorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKIAog
fSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCi0jZW5k
aWYgIC8vICBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVf
R1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFURURfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFy
YW0tdXRpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC1wYXJhbS11dGlsLmgKaW5kZXggMGNiYjU4YzIxYjdiODljZDQ4YThkMWM1Y2I1MjBm
MzExMzc0Y2RlMi4uZDY0ZjYyMGM0YzY3NDM0NjczYzBhNjFlMjM5NjBiNjE1YzM0ZTc4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9n
dGVzdC1wYXJhbS11dGlsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgKQEAgLTI2LDI4ICsyNiw0OSBAQAogLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhv
cjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKwogCiAvLyBUeXBlIGFuZCBmdW5jdGlv
biB1dGlsaXRpZXMgZm9yIGltcGxlbWVudGluZyBwYXJhbWV0ZXJpemVkIHRlc3RzLgogCisvLyBH
T09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9H
VEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVf
R1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9IXwogCisjaW5jbHVkZSA8Y3R5cGUuaD4K
KwogI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDx1dGlsaXR5
PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotLy8gc2NyaXB0cy9mdXNlX2d0ZXN0LnB5IGRlcGVuZHMg
b24gZ3Rlc3QncyBvd24gaGVhZGVyIGJlaW5nICNpbmNsdWRlZAotLy8gKnVuY29uZGl0aW9uYWxs
eSouICBUaGVyZWZvcmUgdGhlc2UgI2luY2x1ZGVzIGNhbm5vdCBiZSBtb3ZlZAotLy8gaW5zaWRl
ICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVC4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVz
dC1pbnRlcm5hbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIu
aD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+Ci0KLSNpZiBHVEVTVF9I
QVNfUEFSQU1fVEVTVAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgi
CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oIgorI2luY2x1ZGUg
Imd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1wcmlu
dGVycy5oIgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CisKKy8vIElucHV0IHRvIGEgcGFyYW1ldGVy
aXplZCB0ZXN0IG5hbWUgZ2VuZXJhdG9yLCBkZXNjcmliaW5nIGEgdGVzdCBwYXJhbWV0ZXIuCisv
LyBDb25zaXN0cyBvZiB0aGUgcGFyYW1ldGVyIHZhbHVlIGFuZCB0aGUgaW50ZWdlciBwYXJhbWV0
ZXIgaW5kZXguCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgorc3RydWN0IFRlc3RQYXJhbUlu
Zm8geworICBUZXN0UGFyYW1JbmZvKGNvbnN0IFBhcmFtVHlwZSYgYV9wYXJhbSwgc2l6ZV90IGFu
X2luZGV4KSA6CisgICAgcGFyYW0oYV9wYXJhbSksCisgICAgaW5kZXgoYW5faW5kZXgpIHt9Cisg
IFBhcmFtVHlwZSBwYXJhbTsKKyAgc2l6ZV90IGluZGV4OworfTsKKworLy8gQSBidWlsdGluIHBh
cmFtZXRlcml6ZWQgdGVzdCBuYW1lIGdlbmVyYXRvciB3aGljaCByZXR1cm5zIHRoZSByZXN1bHQg
b2YKKy8vIHRlc3Rpbmc6OlByaW50VG9TdHJpbmcuCitzdHJ1Y3QgUHJpbnRUb1N0cmluZ1BhcmFt
TmFtZSB7CisgIHRlbXBsYXRlIDxjbGFzcyBQYXJhbVR5cGU+CisgIHN0ZDo6c3RyaW5nIG9wZXJh
dG9yKCkoY29uc3QgVGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+JiBpbmZvKSBjb25zdCB7CisgICAg
cmV0dXJuIFByaW50VG9TdHJpbmcoaW5mby5wYXJhbSk7CisgIH0KK307CisKIG5hbWVzcGFjZSBp
bnRlcm5hbCB7CiAKIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBV
U0VSIENPREUuCkBAIC01Nyw3ICs3OCw3IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLyBURVNU
X1AgbWFjcm8gaXMgdXNlZCB0byBkZWZpbmUgdHdvIHRlc3RzIHdpdGggdGhlIHNhbWUgbmFtZQog
Ly8gYnV0IGluIGRpZmZlcmVudCBuYW1lc3BhY2VzLgogR1RFU1RfQVBJXyB2b2lkIFJlcG9ydElu
dmFsaWRUZXN0Q2FzZVR5cGUoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGlu
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRp
b24gY29kZV9sb2NhdGlvbik7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZT4gY2xhc3MgUGFyYW1HZW5l
cmF0b3JJbnRlcmZhY2U7CiB0ZW1wbGF0ZSA8dHlwZW5hbWU+IGNsYXNzIFBhcmFtR2VuZXJhdG9y
OwpAQCAtMTcxLDcgKzE5Miw3IEBAIGNsYXNzIFBhcmFtR2VuZXJhdG9yIHsKICAgaXRlcmF0b3Ig
ZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoaW1wbF8tPkVuZCgpKTsgfQogCiAgcHJpdmF0
ZToKLSAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjxjb25zdCBQYXJhbUdlbmVyYXRv
ckludGVyZmFjZTxUPiA+IGltcGxfOworICBsaW5rZWRfcHRyPGNvbnN0IFBhcmFtR2VuZXJhdG9y
SW50ZXJmYWNlPFQ+ID4gaW1wbF87CiB9OwogCiAvLyBHZW5lcmF0ZXMgdmFsdWVzIGZyb20gYSBy
YW5nZSBvZiB0d28gY29tcGFyYWJsZSB2YWx1ZXMuIENhbiBiZSB1c2VkIHRvCkBAIC0yMDUsNyAr
MjI2LDcgQEAgY2xhc3MgUmFuZ2VHZW5lcmF0b3IgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRl
cmZhY2U8VD4gewogICAgICAgcmV0dXJuIGJhc2VfOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQg
QWR2YW5jZSgpIHsKLSAgICAgIHZhbHVlXyA9IHZhbHVlXyArIHN0ZXBfOworICAgICAgdmFsdWVf
ID0gc3RhdGljX2Nhc3Q8VD4odmFsdWVfICsgc3RlcF8pOwogICAgICAgaW5kZXhfKys7CiAgICAg
fQogICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxUPiogQ2xvbmUoKSBjb25zdCB7
CkBAIC0yNDIsNyArMjYzLDcgQEAgY2xhc3MgUmFuZ2VHZW5lcmF0b3IgOiBwdWJsaWMgUGFyYW1H
ZW5lcmF0b3JJbnRlcmZhY2U8VD4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFQmIGVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbmNyZW1l
bnRUJiBzdGVwKSB7CiAgICAgaW50IGVuZF9pbmRleCA9IDA7Ci0gICAgZm9yIChUIGkgPSBiZWdp
bjsgaSA8IGVuZDsgaSA9IGkgKyBzdGVwKQorICAgIGZvciAoVCBpID0gYmVnaW47IGkgPCBlbmQ7
IGkgPSBzdGF0aWNfY2FzdDxUPihpICsgc3RlcCkpCiAgICAgICBlbmRfaW5kZXgrKzsKICAgICBy
ZXR1cm4gZW5kX2luZGV4OwogICB9CkBAIC0yODUsNyArMzA2LDcgQEAgY2xhc3MgVmFsdWVzSW5J
dGVyYXRvclJhbmdlR2VuZXJhdG9yIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+
IHsKICAgIHB1YmxpYzoKICAgICBJdGVyYXRvcihjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFj
ZTxUPiogYmFzZSwKICAgICAgICAgICAgICB0eXBlbmFtZSBDb250YWluZXJUeXBlOjpjb25zdF9p
dGVyYXRvciBpdGVyYXRvcikKLSAgICAgICAgOiAgYmFzZV8oYmFzZSksIGl0ZXJhdG9yXyhpdGVy
YXRvcikge30KKyAgICAgICAgOiBiYXNlXyhiYXNlKSwgaXRlcmF0b3JfKGl0ZXJhdG9yKSB7fQog
ICAgIHZpcnR1YWwgfkl0ZXJhdG9yKCkge30KIAogICAgIHZpcnR1YWwgY29uc3QgUGFyYW1HZW5l
cmF0b3JJbnRlcmZhY2U8VD4qIEJhc2VHZW5lcmF0b3IoKSBjb25zdCB7CkBAIC0zNDQsNiArMzY1
LDM3IEBAIGNsYXNzIFZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvciA6IHB1YmxpYyBQYXJh
bUdlbmVyYXRvckludGVyZmFjZTxUPiB7CiAgIGNvbnN0IENvbnRhaW5lclR5cGUgY29udGFpbmVy
XzsKIH07ICAvLyBjbGFzcyBWYWx1ZXNJbkl0ZXJhdG9yUmFuZ2VHZW5lcmF0b3IKIAorLy8gSU5U
RVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KKy8vCisvLyBE
ZWZhdWx0IHBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lIGdlbmVyYXRvciwgcmV0dXJucyBhIHN0cmlu
ZyBjb250YWluaW5nIHRoZQorLy8gaW50ZWdlciB0ZXN0IHBhcmFtZXRlciBpbmRleC4KK3RlbXBs
YXRlIDxjbGFzcyBQYXJhbVR5cGU+CitzdGQ6OnN0cmluZyBEZWZhdWx0UGFyYW1OYW1lKGNvbnN0
IFRlc3RQYXJhbUluZm88UGFyYW1UeXBlPiYgaW5mbykgeworICBNZXNzYWdlIG5hbWVfc3RyZWFt
OworICBuYW1lX3N0cmVhbSA8PCBpbmZvLmluZGV4OworICByZXR1cm4gbmFtZV9zdHJlYW0uR2V0
U3RyaW5nKCk7Cit9CisKKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJ
TiBVU0VSIENPREUuCisvLworLy8gUGFyYW1ldGVyaXplZCB0ZXN0IG5hbWUgb3ZlcmxvYWQgaGVs
cGVycywgd2hpY2ggaGVscCB0aGUKKy8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIG1hY3JvIGNo
b29zZSBiZXR3ZWVuIHRoZSBkZWZhdWx0IHBhcmFtZXRlcml6ZWQKKy8vIHRlc3QgbmFtZSBnZW5l
cmF0b3IgYW5kIHVzZXIgcGFyYW0gbmFtZSBnZW5lcmF0b3IuCit0ZW1wbGF0ZSA8Y2xhc3MgUGFy
YW1UeXBlLCBjbGFzcyBQYXJhbU5hbWVHZW5GdW5jdG9yPgorUGFyYW1OYW1lR2VuRnVuY3RvciBH
ZXRQYXJhbU5hbWVHZW4oUGFyYW1OYW1lR2VuRnVuY3RvciBmdW5jKSB7CisgIHJldHVybiBmdW5j
OworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgorc3RydWN0IFBhcmFtTmFtZUdlbkZ1
bmMgeworICB0eXBlZGVmIHN0ZDo6c3RyaW5nIFR5cGUoY29uc3QgVGVzdFBhcmFtSW5mbzxQYXJh
bVR5cGU+Jik7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgordHlwZW5hbWUgUGFy
YW1OYW1lR2VuRnVuYzxQYXJhbVR5cGU+OjpUeXBlICpHZXRQYXJhbU5hbWVHZW4oKSB7CisgIHJl
dHVybiBEZWZhdWx0UGFyYW1OYW1lOworfQorCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAt
IERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgogLy8KIC8vIFN0b3JlcyBhIHBhcmFtZXRlciB2YWx1
ZSBhbmQgbGF0ZXIgY3JlYXRlcyB0ZXN0cyBwYXJhbWV0ZXJpemVkIHdpdGggdGhhdApAQCAtNDE2
LDcgKzQ2OCw3IEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9CYXNlIHsKICAgdmly
dHVhbCB+UGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UoKSB7fQogCiAgIC8vIEJhc2UgcGFy
dCBvZiB0ZXN0IGNhc2UgbmFtZSBmb3IgZGlzcGxheSBwdXJwb3Nlcy4KLSAgdmlydHVhbCBjb25z
dCBTdHJpbmcmIEdldFRlc3RDYXNlTmFtZSgpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCBjb25zdCBz
dGQ6OnN0cmluZyYgR2V0VGVzdENhc2VOYW1lKCkgY29uc3QgPSAwOwogICAvLyBUZXN0IGNhc2Ug
aWQgdG8gdmVyaWZ5IGlkZW50aXR5LgogICB2aXJ0dWFsIFR5cGVJZCBHZXRUZXN0Q2FzZVR5cGVJ
ZCgpIGNvbnN0ID0gMDsKICAgLy8gVW5pdFRlc3QgY2xhc3MgaW52b2tlcyB0aGlzIG1ldGhvZCB0
byByZWdpc3RlciB0ZXN0cyBpbiB0aGlzCkBAIC00NDgsMTIgKzUwMCwxNCBAQCBjbGFzcyBQYXJh
bWV0ZXJpemVkVGVzdENhc2VJbmZvIDogcHVibGljIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9C
YXNlIHsKICAgdHlwZWRlZiB0eXBlbmFtZSBUZXN0Q2FzZTo6UGFyYW1UeXBlIFBhcmFtVHlwZTsK
ICAgLy8gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgYXBwcm9wcmlhdGUg
Z2VuZXJhdG9yIHR5cGUuCiAgIHR5cGVkZWYgUGFyYW1HZW5lcmF0b3I8UGFyYW1UeXBlPihHZW5l
cmF0b3JDcmVhdGlvbkZ1bmMpKCk7CisgIHR5cGVkZWYgdHlwZW5hbWUgUGFyYW1OYW1lR2VuRnVu
YzxQYXJhbVR5cGU+OjpUeXBlIFBhcmFtTmFtZUdlbmVyYXRvckZ1bmM7CiAKLSAgZXhwbGljaXQg
UGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbyhjb25zdCBjaGFyKiBuYW1lKQotICAgICAgOiB0ZXN0
X2Nhc2VfbmFtZV8obmFtZSkge30KKyAgZXhwbGljaXQgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5m
bygKKyAgICAgIGNvbnN0IGNoYXIqIG5hbWUsIENvZGVMb2NhdGlvbiBjb2RlX2xvY2F0aW9uKQor
ICAgICAgOiB0ZXN0X2Nhc2VfbmFtZV8obmFtZSksIGNvZGVfbG9jYXRpb25fKGNvZGVfbG9jYXRp
b24pIHt9CiAKICAgLy8gVGVzdCBjYXNlIGJhc2UgbmFtZSBmb3IgZGlzcGxheSBwdXJwb3Nlcy4K
LSAgdmlydHVhbCBjb25zdCBTdHJpbmcmIEdldFRlc3RDYXNlTmFtZSgpIGNvbnN0IHsgcmV0dXJu
IHRlc3RfY2FzZV9uYW1lXzsgfQorICB2aXJ0dWFsIGNvbnN0IHN0ZDo6c3RyaW5nJiBHZXRUZXN0
Q2FzZU5hbWUoKSBjb25zdCB7IHJldHVybiB0ZXN0X2Nhc2VfbmFtZV87IH0KICAgLy8gVGVzdCBj
YXNlIGlkIHRvIHZlcmlmeSBpZGVudGl0eS4KICAgdmlydHVhbCBUeXBlSWQgR2V0VGVzdENhc2VU
eXBlSWQoKSBjb25zdCB7IHJldHVybiBHZXRUeXBlSWQ8VGVzdENhc2U+KCk7IH0KICAgLy8gVEVT
VF9QIG1hY3JvIHVzZXMgQWRkVGVzdFBhdHRlcm4oKSB0byByZWNvcmQgaW5mb3JtYXRpb24KQEAg
LTQ3MSwxMSArNTI1LDEyIEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8gOiBwdWJs
aWMgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UgewogICB9CiAgIC8vIElOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QIG1hY3JvIHVzZXMgQWRkR2VuZXJhdG9yKCkgdG8gcmVjb3JkIGluZm9ybWF0
aW9uCiAgIC8vIGFib3V0IGEgZ2VuZXJhdG9yLgotICBpbnQgQWRkVGVzdENhc2VJbnN0YW50aWF0
aW9uKGNvbnN0IGNoYXIqIGluc3RhbnRpYXRpb25fbmFtZSwKKyAgaW50IEFkZFRlc3RDYXNlSW5z
dGFudGlhdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgaW5zdGFudGlhdGlvbl9uYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvckNyZWF0aW9uRnVuYyogZnVuYywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKiBmaWxlICovLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKiBsaW5lICovKSB7Ci0gICAgaW5zdGFu
dGlhdGlvbnNfLnB1c2hfYmFjayg6OnN0ZDo6bWFrZV9wYWlyKGluc3RhbnRpYXRpb25fbmFtZSwg
ZnVuYykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtTmFtZUdlbmVyYXRv
ckZ1bmMqIG5hbWVfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBmaWxlLCBpbnQgbGluZSkgeworICAgIGluc3RhbnRpYXRpb25zXy5wdXNoX2JhY2soCisg
ICAgICAgIEluc3RhbnRpYXRpb25JbmZvKGluc3RhbnRpYXRpb25fbmFtZSwgZnVuYywgbmFtZV9m
dW5jLCBmaWxlLCBsaW5lKSk7CiAgICAgcmV0dXJuIDA7ICAvLyBSZXR1cm4gdmFsdWUgdXNlZCBv
bmx5IHRvIHJ1biB0aGlzIG1ldGhvZCBpbiBuYW1lc3BhY2Ugc2NvcGUuCiAgIH0KICAgLy8gVW5p
dFRlc3QgY2xhc3MgaW52b2tlcyB0aGlzIG1ldGhvZCB0byByZWdpc3RlciB0ZXN0cyBpbiB0aGlz
IHRlc3QgY2FzZQpAQCAtNDkwLDI2ICs1NDUsNDUgQEAgY2xhc3MgUGFyYW1ldGVyaXplZFRlc3RD
YXNlSW5mbyA6IHB1YmxpYyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvQmFzZSB7CiAgICAgICBm
b3IgKHR5cGVuYW1lIEluc3RhbnRpYXRpb25Db250YWluZXI6Oml0ZXJhdG9yIGdlbl9pdCA9CiAg
ICAgICAgICAgICAgICBpbnN0YW50aWF0aW9uc18uYmVnaW4oKTsgZ2VuX2l0ICE9IGluc3RhbnRp
YXRpb25zXy5lbmQoKTsKICAgICAgICAgICAgICAgICsrZ2VuX2l0KSB7Ci0gICAgICAgIGNvbnN0
IFN0cmluZyYgaW5zdGFudGlhdGlvbl9uYW1lID0gZ2VuX2l0LT5maXJzdDsKLSAgICAgICAgUGFy
YW1HZW5lcmF0b3I8UGFyYW1UeXBlPiBnZW5lcmF0b3IoKCpnZW5faXQtPnNlY29uZCkoKSk7Cisg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnN0YW50aWF0aW9uX25hbWUgPSBnZW5faXQtPm5h
bWU7CisgICAgICAgIFBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT4gZ2VuZXJhdG9yKCgqZ2VuX2l0
LT5nZW5lcmF0b3IpKCkpOworICAgICAgICBQYXJhbU5hbWVHZW5lcmF0b3JGdW5jKiBuYW1lX2Z1
bmMgPSBnZW5faXQtPm5hbWVfZnVuYzsKKyAgICAgICAgY29uc3QgY2hhciogZmlsZSA9IGdlbl9p
dC0+ZmlsZTsKKyAgICAgICAgaW50IGxpbmUgPSBnZW5faXQtPmxpbmU7CiAKLSAgICAgICAgTWVz
c2FnZSB0ZXN0X2Nhc2VfbmFtZV9zdHJlYW07CisgICAgICAgIHN0ZDo6c3RyaW5nIHRlc3RfY2Fz
ZV9uYW1lOwogICAgICAgICBpZiAoICFpbnN0YW50aWF0aW9uX25hbWUuZW1wdHkoKSApCi0gICAg
ICAgICAgdGVzdF9jYXNlX25hbWVfc3RyZWFtIDw8IGluc3RhbnRpYXRpb25fbmFtZS5jX3N0cigp
IDw8ICIvIjsKLSAgICAgICAgdGVzdF9jYXNlX25hbWVfc3RyZWFtIDw8IHRlc3RfaW5mby0+dGVz
dF9jYXNlX2Jhc2VfbmFtZS5jX3N0cigpOworICAgICAgICAgIHRlc3RfY2FzZV9uYW1lID0gaW5z
dGFudGlhdGlvbl9uYW1lICsgIi8iOworICAgICAgICB0ZXN0X2Nhc2VfbmFtZSArPSB0ZXN0X2lu
Zm8tPnRlc3RfY2FzZV9iYXNlX25hbWU7CiAKLSAgICAgICAgaW50IGkgPSAwOworICAgICAgICBz
aXplX3QgaSA9IDA7CisgICAgICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiB0ZXN0X3BhcmFtX25h
bWVzOwogICAgICAgICBmb3IgKHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT46Oml0
ZXJhdG9yIHBhcmFtX2l0ID0KICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmJlZ2luKCk7CiAg
ICAgICAgICAgICAgcGFyYW1faXQgIT0gZ2VuZXJhdG9yLmVuZCgpOyArK3BhcmFtX2l0LCArK2kp
IHsKICAgICAgICAgICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07Ci0gICAgICAgICAgdGVzdF9u
YW1lX3N0cmVhbSA8PCB0ZXN0X2luZm8tPnRlc3RfYmFzZV9uYW1lLmNfc3RyKCkgPDwgIi8iIDw8
IGk7Ci0gICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TWFrZUFuZFJlZ2lzdGVyVGVzdElu
Zm8oCi0gICAgICAgICAgICAgIHRlc3RfY2FzZV9uYW1lX3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0
cigpLAorCisgICAgICAgICAgc3RkOjpzdHJpbmcgcGFyYW1fbmFtZSA9IG5hbWVfZnVuYygKKyAg
ICAgICAgICAgICAgVGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+KCpwYXJhbV9pdCwgaSkpOworCisg
ICAgICAgICAgR1RFU1RfQ0hFQ0tfKElzVmFsaWRQYXJhbU5hbWUocGFyYW1fbmFtZSkpCisgICAg
ICAgICAgICAgIDw8ICJQYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSAnIiA8PCBwYXJhbV9uYW1lCisg
ICAgICAgICAgICAgIDw8ICInIGlzIGludmFsaWQsIGluICIgPDwgZmlsZQorICAgICAgICAgICAg
ICA8PCAiIGxpbmUgIiA8PCBsaW5lIDw8IHN0ZDo6ZW5kbDsKKworICAgICAgICAgIEdURVNUX0NI
RUNLXyh0ZXN0X3BhcmFtX25hbWVzLmNvdW50KHBhcmFtX25hbWUpID09IDApCisgICAgICAgICAg
ICAgIDw8ICJEdXBsaWNhdGUgcGFyYW1ldGVyaXplZCB0ZXN0IG5hbWUgJyIgPDwgcGFyYW1fbmFt
ZQorICAgICAgICAgICAgICA8PCAiJywgaW4gIiA8PCBmaWxlIDw8ICIgbGluZSAiIDw8IGxpbmUg
PDwgc3RkOjplbmRsOworCisgICAgICAgICAgdGVzdF9wYXJhbV9uYW1lcy5pbnNlcnQocGFyYW1f
bmFtZSk7CisKKyAgICAgICAgICB0ZXN0X25hbWVfc3RyZWFtIDw8IHRlc3RfaW5mby0+dGVzdF9i
YXNlX25hbWUgPDwgIi8iIDw8IHBhcmFtX25hbWU7CisgICAgICAgICAgTWFrZUFuZFJlZ2lzdGVy
VGVzdEluZm8oCisgICAgICAgICAgICAgIHRlc3RfY2FzZV9uYW1lLmNfc3RyKCksCiAgICAgICAg
ICAgICAgIHRlc3RfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19zdHIoKSwKLSAgICAgICAgICAg
ICAgIiIsICAvLyB0ZXN0X2Nhc2VfY29tbWVudAotICAgICAgICAgICAgICAiIiwgIC8vIGNvbW1l
bnQ7IFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IHByb3ZpZGUgcGFyYW1ldGVyIHZhbHVlCi0gICAg
ICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcmVz
ZW50YXRpb24uCisgICAgICAgICAgICAgIE5VTEwsICAvLyBObyB0eXBlIHBhcmFtZXRlci4KKyAg
ICAgICAgICAgICAgUHJpbnRUb1N0cmluZygqcGFyYW1faXQpLmNfc3RyKCksCisgICAgICAgICAg
ICAgIGNvZGVfbG9jYXRpb25fLAogICAgICAgICAgICAgICBHZXRUZXN0Q2FzZVR5cGVJZCgpLAog
ICAgICAgICAgICAgICBUZXN0Q2FzZTo6U2V0VXBUZXN0Q2FzZSwKICAgICAgICAgICAgICAgVGVz
dENhc2U6OlRlYXJEb3duVGVzdENhc2UsCkBAIC01MzAsMTcgKzYwNCw1MCBAQCBjbGFzcyBQYXJh
bWV0ZXJpemVkVGVzdENhc2VJbmZvIDogcHVibGljIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9C
YXNlIHsKICAgICAgICAgdGVzdF9iYXNlX25hbWUoYV90ZXN0X2Jhc2VfbmFtZSksCiAgICAgICAg
IHRlc3RfbWV0YV9mYWN0b3J5KGFfdGVzdF9tZXRhX2ZhY3RvcnkpIHt9CiAKLSAgICBjb25zdCBT
dHJpbmcgdGVzdF9jYXNlX2Jhc2VfbmFtZTsKLSAgICBjb25zdCBTdHJpbmcgdGVzdF9iYXNlX25h
bWU7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdF9jYXNlX2Jhc2VfbmFtZTsKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyB0ZXN0X2Jhc2VfbmFtZTsKICAgICBjb25zdCBzY29wZWRfcHRyPFRlc3RN
ZXRhRmFjdG9yeUJhc2U8UGFyYW1UeXBlPiA+IHRlc3RfbWV0YV9mYWN0b3J5OwogICB9OwogICB0
eXBlZGVmIDo6c3RkOjp2ZWN0b3I8bGlua2VkX3B0cjxUZXN0SW5mbz4gPiBUZXN0SW5mb0NvbnRh
aW5lcjsKLSAgLy8gS2VlcHMgcGFpcnMgb2YgPEluc3RhbnRpYXRpb24gbmFtZSwgU2VxdWVuY2Ug
Z2VuZXJhdG9yIGNyZWF0aW9uIGZ1bmN0aW9uPgotICAvLyByZWNlaXZlZCBmcm9tIElOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QIG1hY3Jvcy4KLSAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIEdlbmVyYXRvckNyZWF0aW9uRnVuYyo+ID4KLSAgICAgIEluc3RhbnRpYXRpb25D
b250YWluZXI7CisgIC8vIFJlY29yZHMgZGF0YSByZWNlaXZlZCBmcm9tIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QIG1hY3JvczoKKyAgLy8gIDxJbnN0YW50aWF0aW9uIG5hbWUsIFNlcXVlbmNlIGdl
bmVyYXRvciBjcmVhdGlvbiBmdW5jdGlvbiwKKyAgLy8gICAgIE5hbWUgZ2VuZXJhdG9yIGZ1bmN0
aW9uLCBTb3VyY2UgZmlsZSwgU291cmNlIGxpbmU+CisgIHN0cnVjdCBJbnN0YW50aWF0aW9uSW5m
byB7CisgICAgICBJbnN0YW50aWF0aW9uSW5mbyhjb25zdCBzdGQ6OnN0cmluZyAmbmFtZV9pbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvckNyZWF0aW9uRnVuYyogZ2VuZXJhdG9y
X2luLAorICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1OYW1lR2VuZXJhdG9yRnVuYyogbmFt
ZV9mdW5jX2luLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZV9pbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lX2luKQorICAgICAgICAgIDogbmFtZShu
YW1lX2luKSwKKyAgICAgICAgICAgIGdlbmVyYXRvcihnZW5lcmF0b3JfaW4pLAorICAgICAgICAg
ICAgbmFtZV9mdW5jKG5hbWVfZnVuY19pbiksCisgICAgICAgICAgICBmaWxlKGZpbGVfaW4pLAor
ICAgICAgICAgICAgbGluZShsaW5lX2luKSB7fQorCisgICAgICBzdGQ6OnN0cmluZyBuYW1lOwor
ICAgICAgR2VuZXJhdG9yQ3JlYXRpb25GdW5jKiBnZW5lcmF0b3I7CisgICAgICBQYXJhbU5hbWVH
ZW5lcmF0b3JGdW5jKiBuYW1lX2Z1bmM7CisgICAgICBjb25zdCBjaGFyKiBmaWxlOworICAgICAg
aW50IGxpbmU7CisgIH07CisgIHR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxJbnN0YW50aWF0aW9uSW5m
bz4gSW5zdGFudGlhdGlvbkNvbnRhaW5lcjsKIAotICBjb25zdCBTdHJpbmcgdGVzdF9jYXNlX25h
bWVfOworICBzdGF0aWMgYm9vbCBJc1ZhbGlkUGFyYW1OYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBu
YW1lKSB7CisgICAgLy8gQ2hlY2sgZm9yIGVtcHR5IHN0cmluZworICAgIGlmIChuYW1lLmVtcHR5
KCkpCisgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBDaGVjayBmb3IgaW52YWxpZCBjaGFy
YWN0ZXJzCisgICAgZm9yIChzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGluZGV4ID0gMDsgaW5kZXgg
PCBuYW1lLnNpemUoKTsgKytpbmRleCkgeworICAgICAgaWYgKCFpc2FsbnVtKG5hbWVbaW5kZXhd
KSAmJiBuYW1lW2luZGV4XSAhPSAnXycpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RfY2FzZV9u
YW1lXzsKKyAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb25fOwogICBUZXN0SW5mb0NvbnRhaW5l
ciB0ZXN0c187CiAgIEluc3RhbnRpYXRpb25Db250YWluZXIgaW5zdGFudGlhdGlvbnNfOwogCkBA
IC01NjgsOCArNjc1LDcgQEAgY2xhc3MgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgewog
ICB0ZW1wbGF0ZSA8Y2xhc3MgVGVzdENhc2U+CiAgIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm88
VGVzdENhc2U+KiBHZXRUZXN0Q2FzZVBhdHRlcm5Ib2xkZXIoCiAgICAgICBjb25zdCBjaGFyKiB0
ZXN0X2Nhc2VfbmFtZSwKLSAgICAgIGNvbnN0IGNoYXIqIGZpbGUsCi0gICAgICBpbnQgbGluZSkg
eworICAgICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24pIHsKICAgICBQYXJhbWV0ZXJpemVk
VGVzdENhc2VJbmZvPFRlc3RDYXNlPiogdHlwZWRfdGVzdF9pbmZvID0gTlVMTDsKICAgICBmb3Ig
KFRlc3RDYXNlSW5mb0NvbnRhaW5lcjo6aXRlcmF0b3IgaXQgPSB0ZXN0X2Nhc2VfaW5mb3NfLmJl
Z2luKCk7CiAgICAgICAgICBpdCAhPSB0ZXN0X2Nhc2VfaW5mb3NfLmVuZCgpOyArK2l0KSB7CkBA
IC01NzgsOCArNjg0LDggQEAgY2xhc3MgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgewog
ICAgICAgICAgIC8vIENvbXBsYWluIGFib3V0IGluY29ycmVjdCB1c2FnZSBvZiBHb29nbGUgVGVz
dCBmYWNpbGl0aWVzCiAgICAgICAgICAgLy8gYW5kIHRlcm1pbmF0ZSB0aGUgcHJvZ3JhbSBzaW5j
ZSB3ZSBjYW5ub3QgZ3VhcmFudHkgY29ycmVjdAogICAgICAgICAgIC8vIHRlc3QgY2FzZSBzZXR1
cCBhbmQgdGVhci1kb3duIGluIHRoaXMgY2FzZS4KLSAgICAgICAgICBSZXBvcnRJbnZhbGlkVGVz
dENhc2VUeXBlKHRlc3RfY2FzZV9uYW1lLCAgZmlsZSwgbGluZSk7Ci0gICAgICAgICAgYWJvcnQo
KTsKKyAgICAgICAgICBSZXBvcnRJbnZhbGlkVGVzdENhc2VUeXBlKHRlc3RfY2FzZV9uYW1lLCBj
b2RlX2xvY2F0aW9uKTsKKyAgICAgICAgICBwb3NpeDo6QWJvcnQoKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGFyZSBzdXJlIHRoYXQgdGhlIG9iamVj
dCB3ZSBmb3VuZCBpcyBvZiB0aGUgc2FtZQogICAgICAgICAgIC8vIHR5cGUgd2UgYXJlIGxvb2tp
bmcgZm9yLCBzbyB3ZSBkb3duY2FzdCBpdCB0byB0aGF0IHR5cGUKQEAgLTU5MSw3ICs2OTcsOCBA
QCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSB7CiAgICAgICB9CiAgICAgfQog
ICAgIGlmICh0eXBlZF90ZXN0X2luZm8gPT0gTlVMTCkgewotICAgICAgdHlwZWRfdGVzdF9pbmZv
ID0gbmV3IFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm88VGVzdENhc2U+KHRlc3RfY2FzZV9uYW1l
KTsKKyAgICAgIHR5cGVkX3Rlc3RfaW5mbyA9IG5ldyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZv
PFRlc3RDYXNlPigKKyAgICAgICAgICB0ZXN0X2Nhc2VfbmFtZSwgY29kZV9sb2NhdGlvbik7CiAg
ICAgICB0ZXN0X2Nhc2VfaW5mb3NfLnB1c2hfYmFjayh0eXBlZF90ZXN0X2luZm8pOwogICAgIH0K
ICAgICByZXR1cm4gdHlwZWRfdGVzdF9pbmZvOwpAQCAtNjE0LDYgKzcyMSw0IEBAIGNsYXNzIFBh
cmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IHsKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAog
fSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotI2VuZGlmICAvLyAgR1RFU1RfSEFTX1BBUkFNX1RF
U1QKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BBUkFN
X1VUSUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC1hcmNoLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9p
bmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4Mzcw
MGUwNmQ5OGMzNmY2NDg3MjkxYzNmOTMxODA3YWYzNTNmNzQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQt
YXJjaC5oCkBAIC0wLDAgKzEsMTAwIEBACisvLyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4K
Ky8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
Ky8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisvLworLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBG
cmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8KKy8vIFRoaXMgaGVhZGVyIGZpbGUgZGVmaW5lcyB0
aGUgR1RFU1RfT1NfKiBtYWNyby4KKy8vIEl0IGlzIHNlcGFyYXRlIGZyb20gZ3Rlc3QtcG9ydC5o
IHNvIHRoYXQgY3VzdG9tL2d0ZXN0LXBvcnQuaCBjYW4gaW5jbHVkZSBpdC4KKworI2lmbmRlZiBH
VEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRfQVJDSF9IXworI2RlZmluZSBH
VEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRfQVJDSF9IXworCisvLyBEZXRl
cm1pbmVzIHRoZSBwbGF0Zm9ybSBvbiB3aGljaCBHb29nbGUgVGVzdCBpcyBjb21waWxlZC4KKyNp
ZmRlZiBfX0NZR1dJTl9fCisjIGRlZmluZSBHVEVTVF9PU19DWUdXSU4gMQorI2VsaWYgZGVmaW5l
ZCBfX1NZTUJJQU4zMl9fCisjIGRlZmluZSBHVEVTVF9PU19TWU1CSUFOIDEKKyNlbGlmIGRlZmlu
ZWQgX1dJTjMyCisjIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTIDEKKyMgaWZkZWYgX1dJTjMyX1dD
RQorIyAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIDEKKyMgZWxpZiBkZWZpbmVkKF9f
TUlOR1dfXykgfHwgZGVmaW5lZChfX01JTkdXMzJfXykKKyMgIGRlZmluZSBHVEVTVF9PU19XSU5E
T1dTX01JTkdXIDEKKyMgZWxpZiBkZWZpbmVkKFdJTkFQSV9GQU1JTFkpCisjICBpbmNsdWRlIDx3
aW5hcGlmYW1pbHkuaD4KKyMgIGlmIFdJTkFQSV9GQU1JTFlfUEFSVElUSU9OKFdJTkFQSV9QQVJU
SVRJT05fREVTS1RPUCkKKyMgICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19ERVNLVE9QIDEKKyMg
IGVsaWYgV0lOQVBJX0ZBTUlMWV9QQVJUSVRJT04oV0lOQVBJX1BBUlRJVElPTl9QSE9ORV9BUFAp
CisjICAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfUEhPTkUgMQorIyAgZWxpZiBXSU5BUElfRkFN
SUxZX1BBUlRJVElPTihXSU5BUElfUEFSVElUSU9OX0FQUCkKKyMgICBkZWZpbmUgR1RFU1RfT1Nf
V0lORE9XU19SVCAxCisjICBlbGlmIFdJTkFQSV9GQU1JTFlfUEFSVElUSU9OKFdJTkFQSV9QQVJU
SVRJT05fVFZfVElUTEUpCisjICAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfUEhPTkUgMQorIyAg
IGRlZmluZSBHVEVTVF9PU19XSU5ET1dTX1RWX1RJVExFIDEKKyMgIGVsc2UKKyAgICAvLyBXSU5B
UElfRkFNSUxZIGRlZmluZWQgYnV0IG5vIGtub3duIHBhcnRpdGlvbiBtYXRjaGVkLgorICAgIC8v
IERlZmF1bHQgdG8gZGVza3RvcC4KKyMgICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19ERVNLVE9Q
IDEKKyMgIGVuZGlmCisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1Ag
MQorIyBlbmRpZiAgLy8gX1dJTjMyX1dDRQorI2VsaWYgZGVmaW5lZCBfX0FQUExFX18KKyMgZGVm
aW5lIEdURVNUX09TX01BQyAxCisjIGlmIFRBUkdFVF9PU19JUEhPTkUKKyMgIGRlZmluZSBHVEVT
VF9PU19JT1MgMQorIyBlbmRpZgorI2VsaWYgZGVmaW5lZCBfX0ZyZWVCU0RfXworIyBkZWZpbmUg
R1RFU1RfT1NfRlJFRUJTRCAxCisjZWxpZiBkZWZpbmVkIF9fRnVjaHNpYV9fCisjIGRlZmluZSBH
VEVTVF9PU19GVUNIU0lBIDEKKyNlbGlmIGRlZmluZWQgX19saW51eF9fCisjIGRlZmluZSBHVEVT
VF9PU19MSU5VWCAxCisjIGlmIGRlZmluZWQgX19BTkRST0lEX18KKyMgIGRlZmluZSBHVEVTVF9P
U19MSU5VWF9BTkRST0lEIDEKKyMgZW5kaWYKKyNlbGlmIGRlZmluZWQgX19NVlNfXworIyBkZWZp
bmUgR1RFU1RfT1NfWk9TIDEKKyNlbGlmIGRlZmluZWQoX19zdW4pICYmIGRlZmluZWQoX19TVlI0
KQorIyBkZWZpbmUgR1RFU1RfT1NfU09MQVJJUyAxCisjZWxpZiBkZWZpbmVkKF9BSVgpCisjIGRl
ZmluZSBHVEVTVF9PU19BSVggMQorI2VsaWYgZGVmaW5lZChfX2hwdXgpCisjIGRlZmluZSBHVEVT
VF9PU19IUFVYIDEKKyNlbGlmIGRlZmluZWQgX19uYXRpdmVfY2xpZW50X18KKyMgZGVmaW5lIEdU
RVNUX09TX05BQ0wgMQorI2VsaWYgZGVmaW5lZCBfX05ldEJTRF9fCisjIGRlZmluZSBHVEVTVF9P
U19ORVRCU0QgMQorI2VsaWYgZGVmaW5lZCBfX09wZW5CU0RfXworIyBkZWZpbmUgR1RFU1RfT1Nf
T1BFTkJTRCAxCisjZWxpZiBkZWZpbmVkIF9fUU5YX18KKyMgZGVmaW5lIEdURVNUX09TX1FOWCAx
CisjZW5kaWYgIC8vIF9fQ1lHV0lOX18KKworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNU
X0lOVEVSTkFMX0dURVNUX1BPUlRfQVJDSF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaAppbmRleCBm
OGJlODA5MjZmODk4N2QzYzk1ODI4NjE2MDIwMTBiZmY2ZTY0ZDZkLi43ODY0OTdkODU0Yzk3ZjFi
NmFiOTM3MmEyNDFjMWZhMTU1YTMwYTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaApAQCAtMjcs
MjkgKzI3LDU3IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQXV0
aG9yczogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCiAvLyBMb3ctbGV2ZWwgdHlw
ZXMgYW5kIHV0aWxpdGllcyBmb3IgcG9ydGluZyBHb29nbGUgVGVzdCB0byB2YXJpb3VzCi0vLyBw
bGF0Zm9ybXMuICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4gIERP
IE5PVCBVU0UKLS8vIFRIRU0gSU4gVVNFUiBDT0RFLgorLy8gcGxhdGZvcm1zLiAgQWxsIG1hY3Jv
cyBlbmRpbmcgd2l0aCBfIGFuZCBzeW1ib2xzIGRlZmluZWQgaW4gYW4KKy8vIGludGVybmFsIG5h
bWVzcGFjZSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuICBDb2RlCisvLyBv
dXRzaWRlIEdvb2dsZSBUZXN0IE1VU1QgTk9UIFVTRSBUSEVNIERJUkVDVExZLiAgTWFjcm9zIHRo
YXQgZG9uJ3QKKy8vIGVuZCB3aXRoIF8gYXJlIHBhcnQgb2YgR29vZ2xlIFRlc3QncyBwdWJsaWMg
QVBJIGFuZCBjYW4gYmUgdXNlZCBieQorLy8gY29kZSBvdXRzaWRlIEdvb2dsZSBUZXN0LgorLy8K
Ky8vIFRoaXMgZmlsZSBpcyBmdW5kYW1lbnRhbCB0byBHb29nbGUgVGVzdC4gIEFsbCBvdGhlciBH
b29nbGUgVGVzdCBzb3VyY2UKKy8vIGZpbGVzIGFyZSBleHBlY3RlZCB0byAjaW5jbHVkZSB0aGlz
LiAgVGhlcmVmb3JlLCBpdCBjYW5ub3QgI2luY2x1ZGUKKy8vIGFueSBvdGhlciBHb29nbGUgVGVz
dCBoZWFkZXIuCisKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKIAogI2lmbmRl
ZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRfSF8KICNkZWZpbmUgR1RF
U1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QT1JUX0hfCiAKLS8vIFRoZSB1c2VyIGNh
biBkZWZpbmUgdGhlIGZvbGxvd2luZyBtYWNyb3MgaW4gdGhlIGJ1aWxkIHNjcmlwdCB0bwotLy8g
Y29udHJvbCBHb29nbGUgVGVzdCdzIGJlaGF2aW9yLiAgSWYgdGhlIHVzZXIgZG9lc24ndCBkZWZp
bmUgYSBtYWNybwotLy8gaW4gdGhpcyBsaXN0LCBHb29nbGUgVGVzdCB3aWxsIGRlZmluZSBpdC4K
Ky8vIEVudmlyb25tZW50LWRlc2NyaWJpbmcgbWFjcm9zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIEdvb2dsZSBUZXN0IGNhbiBiZSB1c2VkIGluIG1hbnkgZGlmZmVy
ZW50IGVudmlyb25tZW50cy4gIE1hY3JvcyBpbgorLy8gdGhpcyBzZWN0aW9uIHRlbGwgR29vZ2xl
IFRlc3Qgd2hhdCBraW5kIG9mIGVudmlyb25tZW50IGl0IGlzIGJlaW5nCisvLyB1c2VkIGluLCBz
dWNoIHRoYXQgR29vZ2xlIFRlc3QgY2FuIHByb3ZpZGUgZW52aXJvbm1lbnQtc3BlY2lmaWMKKy8v
IGZlYXR1cmVzIGFuZCBpbXBsZW1lbnRhdGlvbnMuCisvLworLy8gR29vZ2xlIFRlc3QgdHJpZXMg
dG8gYXV0b21hdGljYWxseSBkZXRlY3QgdGhlIHByb3BlcnRpZXMgb2YgaXRzCisvLyBlbnZpcm9u
bWVudCwgc28gdXNlcnMgdXN1YWxseSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoZXNlCisv
LyBtYWNyb3MuICBIb3dldmVyLCB0aGUgYXV0b21hdGljIGRldGVjdGlvbiBpcyBub3QgcGVyZmVj
dC4KKy8vIFNvbWV0aW1lcyBpdCdzIG5lY2Vzc2FyeSBmb3IgYSB1c2VyIHRvIGRlZmluZSBzb21l
IG9mIHRoZSBmb2xsb3dpbmcKKy8vIG1hY3JvcyBpbiB0aGUgYnVpbGQgc2NyaXB0IHRvIG92ZXJy
aWRlIEdvb2dsZSBUZXN0J3MgZGVjaXNpb25zLgorLy8KKy8vIElmIHRoZSB1c2VyIGRvZXNuJ3Qg
ZGVmaW5lIGEgbWFjcm8gaW4gdGhlIGxpc3QsIEdvb2dsZSBUZXN0IHdpbGwKKy8vIHByb3ZpZGUg
YSBkZWZhdWx0IGRlZmluaXRpb24uICBBZnRlciB0aGlzIGhlYWRlciBpcyAjaW5jbHVkZWQsIGFs
bAorLy8gbWFjcm9zIGluIHRoaXMgbGlzdCB3aWxsIGJlIGRlZmluZWQgdG8gZWl0aGVyIDEgb3Ig
MC4KKy8vCisvLyBOb3RlcyB0byBtYWludGFpbmVyczoKKy8vICAgLSBFYWNoIG1hY3JvIGhlcmUg
aXMgYSB1c2VyLXR3ZWFrYWJsZSBrbm9iOyBkbyBub3QgZ3JvdyB0aGUgbGlzdAorLy8gICAgIGxp
Z2h0bHkuCisvLyAgIC0gVXNlICNpZiB0byBrZXkgb2ZmIHRoZXNlIG1hY3Jvcy4gIERvbid0IHVz
ZSAjaWZkZWYgb3IgIiNpZgorLy8gICAgIGRlZmluZWQoLi4uKSIsIHdoaWNoIHdpbGwgbm90IHdv
cmsgYXMgdGhlc2UgbWFjcm9zIGFyZSBBTFdBWVMKKy8vICAgICBkZWZpbmVkLgogLy8KIC8vICAg
R1RFU1RfSEFTX0NMT05FICAgICAgICAgIC0gRGVmaW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB0
aGF0IGNsb25lKDIpCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzL2lzbid0IGF2
YWlsYWJsZS4KIC8vICAgR1RFU1RfSEFTX0VYQ0VQVElPTlMgICAgIC0gRGVmaW5lIGl0IHRvIDEv
MCB0byBpbmRpY2F0ZSB0aGF0IGV4Y2VwdGlvbnMKIC8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJlIGVuYWJsZWQuCiAvLyAgIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HICAtIERlZmlu
ZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA6OnN0cmluZwotLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpcy9pc24ndCBhdmFpbGFibGUgKHNvbWUgc3lzdGVtcyBkZWZpbmUKLS8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdHJpbmcsIHdoaWNoIGlzIGRpZmZlcmVu
dCB0byBzdGQ6OnN0cmluZykuCi0vLyAgIEdURVNUX0hBU19HTE9CQUxfV1NUUklORyAtIERlZmlu
ZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA6OnN0cmluZwotLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpcy9pc24ndCBhdmFpbGFibGUgKHNvbWUgc3lzdGVtcyBkZWZpbmUKLS8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjp3c3RyaW5nLCB3aGljaCBpcyBkaWZmZXJl
bnQgdG8gc3RkOjp3c3RyaW5nKS4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMv
aXNuJ3QgYXZhaWxhYmxlCisvLyAgIEdURVNUX0hBU19HTE9CQUxfV1NUUklORyAtIERlZmluZSBp
dCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA6OndzdHJpbmcKKy8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlCisvLyAgIEdURVNUX0hBU19QT1NJWF9SRSAg
ICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCBQT1NJWCByZWd1bGFyCisv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zIGFyZS9hcmVuJ3QgYXZh
aWxhYmxlLgogLy8gICBHVEVTVF9IQVNfUFRIUkVBRCAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8w
IHRvIGluZGljYXRlIHRoYXQgPHB0aHJlYWQuaD4KIC8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlLgogLy8gICBHVEVTVF9IQVNfUlRUSSAgICAgICAgICAg
LSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgUlRUSSBpcy9pc24ndApAQCAtNjIs
MTAgKzkwLDE2IEBACiAvLyAgIEdURVNUX0hBU19TRUggICAgICAgICAgICAtIERlZmluZSBpdCB0
byAxLzAgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUKIC8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29tcGlsZXIgc3VwcG9ydHMgTWljcm9zb2Z0J3MgIlN0cnVjdHVyZWQKIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uIEhhbmRsaW5nIi4KKy8vICAgR1RFU1Rf
SEFTX1NUUkVBTV9SRURJUkVDVElPTgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBE
ZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlCisvLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBsYXRmb3JtIHN1cHBvcnRzIEkvTyBzdHJlYW0gcmVkaXJlY3Rpb24g
dXNpbmcKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVwKCkgYW5kIGR1cDIoKS4K
IC8vICAgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgIC0gRGVmaW5lIGl0IHRvIDEvMCB0byBpbmRp
Y2F0ZSB3aGV0aGVyIEdvb2dsZQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0
J3Mgb3duIHRyMSB0dXBsZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYmUKIC8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdXNlZC4gIFVudXNlZCB3aGVuIHRoZSB1c2VyIHNldHMKIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfSEFTX1RSMV9UVVBMRSB0byAwLgorLy8g
ICBHVEVTVF9MQU5HX0NYWDExICAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRl
IHRoYXQgR29vZ2xlIFRlc3QKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYnVp
bGRpbmcgaW4gQysrMTEvQysrOTggbW9kZS4KIC8vICAgR1RFU1RfTElOS0VEX0FTX1NIQVJFRF9M
SUJSQVJZCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIERlZmluZSB0byAxIHdoZW4g
Y29tcGlsaW5nIHRlc3RzIHRoYXQgdXNlCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdvb2dsZSBUZXN0IGFzIGEgc2hhcmVkIGxpYnJhcnkgKGtub3duIGFzCkBAIC03MywyMyArMTA3
LDQzIEBACiAvLyAgIEdURVNUX0NSRUFURV9TSEFSRURfTElCUkFSWQogLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLSBEZWZpbmUgdG8gMSB3aGVuIGNvbXBpbGluZyBHb29nbGUgVGVzdCBp
dHNlbGYKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgYSBzaGFyZWQgbGlicmFy
eS4KLQotLy8gVGhpcyBoZWFkZXIgZGVmaW5lcyB0aGUgZm9sbG93aW5nIHV0aWxpdGllczoKKy8v
ICAgR1RFU1RfREVGQVVMVF9ERUFUSF9URVNUX1NUWUxFCisvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAtIFRoZSBkZWZhdWx0IHZhbHVlIG9mIC0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZS4K
Ky8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxlZ2FjeSBkZWZhdWx0IGhhcyBi
ZWVuICJmYXN0IiBpbiB0aGUgb3BlbgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
b3VyY2UgdmVyc2lvbiBzaW5jZSAyMDA4LiBUaGUgcmVjb21tZW5kZWQgdmFsdWUKKy8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaXMgInRocmVhZHNhZmUiLCBhbmQgY2FuIGJlIHNldCBp
bgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b20vZ3Rlc3QtcG9ydC5oLgor
CisvLyBQbGF0Zm9ybS1pbmRpY2F0aW5nIG1hY3JvcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vCisvLyBNYWNyb3MgaW5kaWNhdGluZyB0aGUgcGxhdGZvcm0gb24gd2hpY2ggR29v
Z2xlIFRlc3QgaXMgYmVpbmcgdXNlZAorLy8gKGEgbWFjcm8gaXMgZGVmaW5lZCB0byAxIGlmIGNv
bXBpbGVkIG9uIHRoZSBnaXZlbiBwbGF0Zm9ybTsKKy8vIG90aGVyd2lzZSBVTkRFRklORUQgLS0g
aXQncyBuZXZlciBkZWZpbmVkIHRvIDAuKS4gIEdvb2dsZSBUZXN0CisvLyBkZWZpbmVzIHRoZXNl
IG1hY3JvcyBhdXRvbWF0aWNhbGx5LiAgQ29kZSBvdXRzaWRlIEdvb2dsZSBUZXN0IE1VU1QKKy8v
IE5PVCBkZWZpbmUgdGhlbS4KIC8vCi0vLyBNYWNyb3MgaW5kaWNhdGluZyB0aGUgY3VycmVudCBw
bGF0Zm9ybSAoZGVmaW5lZCB0byAxIGlmIGNvbXBpbGVkIG9uCi0vLyB0aGUgZ2l2ZW4gcGxhdGZv
cm07IG90aGVyd2lzZSB1bmRlZmluZWQpOgogLy8gICBHVEVTVF9PU19BSVggICAgICAtIElCTSBB
SVgKIC8vICAgR1RFU1RfT1NfQ1lHV0lOICAgLSBDeWd3aW4KLS8vICAgR1RFU1RfT1NfTElOVVgg
ICAgLSBMaW51eAogLy8gICBHVEVTVF9PU19GUkVFQlNEICAtIEZyZWVCU0QKLS8vICAgR1RFU1Rf
T1NfSFVSRCAgICAgLSBHTlUvSHVyZAorLy8gICBHVEVTVF9PU19GVUNIU0lBICAtIEZ1Y2hzaWEK
Ky8vICAgR1RFU1RfT1NfSFBVWCAgICAgLSBIUC1VWAorLy8gICBHVEVTVF9PU19MSU5VWCAgICAt
IExpbnV4CisvLyAgICAgR1RFU1RfT1NfTElOVVhfQU5EUk9JRCAtIEdvb2dsZSBBbmRyb2lkCiAv
LyAgIEdURVNUX09TX01BQyAgICAgIC0gTWFjIE9TIFgKKy8vICAgICBHVEVTVF9PU19JT1MgICAg
LSBpT1MKKy8vICAgR1RFU1RfT1NfTkFDTCAgICAgLSBHb29nbGUgTmF0aXZlIENsaWVudCAoTmFD
bCkKKy8vICAgR1RFU1RfT1NfTkVUQlNEICAgLSBOZXRCU0QKKy8vICAgR1RFU1RfT1NfT1BFTkJT
RCAgLSBPcGVuQlNECisvLyAgIEdURVNUX09TX1FOWCAgICAgIC0gUU5YCiAvLyAgIEdURVNUX09T
X1NPTEFSSVMgIC0gU3VuIFNvbGFyaXMKIC8vICAgR1RFU1RfT1NfU1lNQklBTiAgLSBTeW1iaWFu
CiAvLyAgIEdURVNUX09TX1dJTkRPV1MgIC0gV2luZG93cyAoRGVza3RvcCwgTWluR1csIG9yIE1v
YmlsZSkKIC8vICAgICBHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1AgIC0gV2luZG93cyBEZXNrdG9w
CiAvLyAgICAgR1RFU1RfT1NfV0lORE9XU19NSU5HVyAgICAtIE1pbkdXCiAvLyAgICAgR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUgICAtIFdpbmRvd3MgTW9iaWxlCisvLyAgICAgR1RFU1RfT1NfV0lO
RE9XU19QSE9ORSAgICAtIFdpbmRvd3MgUGhvbmUKKy8vICAgICBHVEVTVF9PU19XSU5ET1dTX1JU
ICAgICAgIC0gV2luZG93cyBTdG9yZSBBcHAvV2luUlQKIC8vICAgR1RFU1RfT1NfWk9TICAgICAg
LSB6L09TCiAvLwogLy8gQW1vbmcgdGhlIHBsYXRmb3JtcywgQ3lnd2luLCBMaW51eCwgTWF4IE9T
IFgsIGFuZCBXaW5kb3dzIGhhdmUgdGhlCkBAIC05OSwyMCArMTUzLDUwIEBACiAvLyBnb29nbGV0
ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20gKHBhdGNoZXMgZm9yIGZpeGluZyB0aGVtIGFy
ZQogLy8gZXZlbiBtb3JlIHdlbGNvbWUhKS4KIC8vCi0vLyBOb3RlIHRoYXQgaXQgaXMgcG9zc2li
bGUgdGhhdCBub25lIG9mIHRoZSBHVEVTVF9PU18qIG1hY3JvcyBhcmUgZGVmaW5lZC4KKy8vIEl0
IGlzIHBvc3NpYmxlIHRoYXQgbm9uZSBvZiB0aGUgR1RFU1RfT1NfKiBtYWNyb3MgYXJlIGRlZmlu
ZWQuCisKKy8vIEZlYXR1cmUtaW5kaWNhdGluZyBtYWNyb3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKy8vCisvLyBNYWNyb3MgaW5kaWNhdGluZyB3aGljaCBHb29nbGUgVGVzdCBmZWF0
dXJlcyBhcmUgYXZhaWxhYmxlIChhIG1hY3JvCisvLyBpcyBkZWZpbmVkIHRvIDEgaWYgdGhlIGNv
cnJlc3BvbmRpbmcgZmVhdHVyZSBpcyBzdXBwb3J0ZWQ7CisvLyBvdGhlcndpc2UgVU5ERUZJTkVE
IC0tIGl0J3MgbmV2ZXIgZGVmaW5lZCB0byAwLikuICBHb29nbGUgVGVzdAorLy8gZGVmaW5lcyB0
aGVzZSBtYWNyb3MgYXV0b21hdGljYWxseS4gIENvZGUgb3V0c2lkZSBHb29nbGUgVGVzdCBNVVNU
CisvLyBOT1QgZGVmaW5lIHRoZW0uCisvLworLy8gVGhlc2UgbWFjcm9zIGFyZSBwdWJsaWMgc28g
dGhhdCBwb3J0YWJsZSB0ZXN0cyBjYW4gYmUgd3JpdHRlbi4KKy8vIFN1Y2ggdGVzdHMgdHlwaWNh
bGx5IHN1cnJvdW5kIGNvZGUgdXNpbmcgYSBmZWF0dXJlIHdpdGggYW4gI2lmCisvLyB3aGljaCBj
b250cm9scyB0aGF0IGNvZGUuICBGb3IgZXhhbXBsZToKKy8vCisvLyAjaWYgR1RFU1RfSEFTX0RF
QVRIX1RFU1QKKy8vICAgRVhQRUNUX0RFQVRIKERvU29tZXRoaW5nRGVhZGx5KCkpOworLy8gI2Vu
ZGlmCiAvLwotLy8gTWFjcm9zIGluZGljYXRpbmcgYXZhaWxhYmxlIEdvb2dsZSBUZXN0IGZlYXR1
cmVzIChkZWZpbmVkIHRvIDEgaWYKLS8vIHRoZSBjb3JyZXNwb25kaW5nIGZlYXR1cmUgaXMgc3Vw
cG9ydGVkOyBvdGhlcndpc2UgdW5kZWZpbmVkKToKIC8vICAgR1RFU1RfSEFTX0NPTUJJTkUgICAg
ICAtIHRoZSBDb21iaW5lKCkgZnVuY3Rpb24gKGZvciB2YWx1ZS1wYXJhbWV0ZXJpemVkCiAvLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cykKIC8vICAgR1RFU1RfSEFTX0RFQVRIX1RF
U1QgICAtIGRlYXRoIHRlc3RzCi0vLyAgIEdURVNUX0hBU19QQVJBTV9URVNUICAgLSB2YWx1ZS1w
YXJhbWV0ZXJpemVkIHRlc3RzCiAvLyAgIEdURVNUX0hBU19UWVBFRF9URVNUICAgLSB0eXBlZCB0
ZXN0cwogLy8gICBHVEVTVF9IQVNfVFlQRURfVEVTVF9QIC0gdHlwZS1wYXJhbWV0ZXJpemVkIHRl
c3RzCi0vLyAgIEdURVNUX1VTRVNfUE9TSVhfUkUgICAgLSBlbmhhbmNlZCBQT1NJWCByZWdleCBp
cyB1c2VkLgorLy8gICBHVEVTVF9JU19USFJFQURTQUZFICAgIC0gR29vZ2xlIFRlc3QgaXMgdGhy
ZWFkLXNhZmUuCisvLyAgIEdPT0dMRVRFU1RfQ00wMDA3IERPIE5PVCBERUxFVEUKKy8vICAgR1RF
U1RfVVNFU19QT1NJWF9SRSAgICAtIGVuaGFuY2VkIFBPU0lYIHJlZ2V4IGlzIHVzZWQuIERvIG5v
dCBjb25mdXNlIHdpdGgKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX0hBU19Q
T1NJWF9SRSAoc2VlIGFib3ZlKSB3aGljaCB1c2VycyBjYW4KKy8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlZmluZSB0aGVtc2VsdmVzLgogLy8gICBHVEVTVF9VU0VTX1NJTVBMRV9SRSAg
IC0gb3VyIG93biBzaW1wbGUgcmVnZXggaXMgdXNlZDsKLS8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoZSBhYm92ZSB0d28gYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4KKy8vICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoZSBhYm92ZSBSRVxiKHMpIGFyZSBtdXR1YWxseSBleGNsdXNp
dmUuCiAvLyAgIEdURVNUX0NBTl9DT01QQVJFX05VTEwgLSBhY2NlcHRzIHVudHlwZWQgTlVMTCBp
biBFWFBFQ1RfRVEoKS4KKworLy8gTWlzYyBwdWJsaWMgbWFjcm9zCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0KKy8vCisvLyAgIEdURVNUX0ZMQUcoZmxhZ19uYW1lKSAgLSByZWZlcmVuY2VzIHRoZSB2
YXJpYWJsZSBjb3JyZXNwb25kaW5nIHRvCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGUgZ2l2ZW4gR29vZ2xlIFRlc3QgZmxhZy4KKworLy8gSW50ZXJuYWwgdXRpbGl0aWVzCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBUaGUgZm9sbG93aW5nIG1hY3JvcyBhbmQgdXRpbGl0
aWVzIGFyZSBmb3IgR29vZ2xlIFRlc3QncyBJTlRFUk5BTAorLy8gdXNlIG9ubHkuICBDb2RlIG91
dHNpZGUgR29vZ2xlIFRlc3QgTVVTVCBOT1QgVVNFIFRIRU0gRElSRUNUTFkuCiAvLwogLy8gTWFj
cm9zIGZvciBiYXNpYyBDKysgY29kaW5nOgogLy8gICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9D
S0VSXyAtIGZvciBkaXNhYmxpbmcgYSBnY2Mgd2FybmluZy4KQEAgLTEyMSwyNSArMjA1LDM0IEBA
CiAvLyAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8gICAtIGRpc2FibGVzIG9wZXJhdG9yPS4KIC8v
ICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyAtIGRpc2FibGVzIGNvcHkgY3RvciBh
bmQgb3BlcmF0b3I9LgogLy8gICBHVEVTVF9NVVNUX1VTRV9SRVNVTFRfICAgLSBkZWNsYXJlcyB0
aGF0IGEgZnVuY3Rpb24ncyByZXN1bHQgbXVzdCBiZSB1c2VkLgorLy8gICBHVEVTVF9JTlRFTlRJ
T05BTF9DT05TVF9DT05EX1BVU0hfIC0gc3RhcnQgY29kZSBzZWN0aW9uIHdoZXJlIE1TVkMgQzQx
MjcgaXMKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNz
ZWQgKGNvbnN0YW50IGNvbmRpdGlvbmFsKS4KKy8vICAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1Rf
Q09ORF9QT1BfICAtIGZpbmlzaCBjb2RlIHNlY3Rpb24gd2hlcmUgTVNWQyBDNDEyNworLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgc3VwcHJlc3NlZC4KKy8vCisv
LyBDKysxMSBmZWF0dXJlIHdyYXBwZXJzOgorLy8KKy8vICAgdGVzdGluZzo6aW50ZXJuYWw6OmZv
cndhcmQgLSBwb3J0YWJpbGl0eSB3cmFwcGVyIGZvciBzdGQ6OmZvcndhcmQuCisvLyAgIHRlc3Rp
bmc6OmludGVybmFsOjptb3ZlICAtIHBvcnRhYmlsaXR5IHdyYXBwZXIgZm9yIHN0ZDo6bW92ZS4K
IC8vCiAvLyBTeW5jaHJvbml6YXRpb246CiAvLyAgIE11dGV4LCBNdXRleExvY2ssIFRocmVhZExv
Y2FsLCBHZXRUaHJlYWRDb3VudCgpCi0vLyAgICAgICAgICAgICAgICAgIC0gc3luY2hyb25pemF0
aW9uIHByaW1pdGl2ZXMuCi0vLyAgIEdURVNUX0lTX1RIUkVBRFNBRkUgLSBkZWZpbmVkIHRvIDEg
dG8gaW5kaWNhdGUgdGhhdCB0aGUgYWJvdmUKLS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN5
bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGhhdmUgcmVhbCBpbXBsZW1lbnRhdGlvbnMKLS8vICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZCBHb29nbGUgVGVzdCBpcyB0aHJlYWQtc2FmZTsgb3Ig
MCBvdGhlcndpc2UuCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHN5bmNocm9uaXph
dGlvbiBwcmltaXRpdmVzLgogLy8KIC8vIFRlbXBsYXRlIG1ldGEgcHJvZ3JhbW1pbmc6CiAvLyAg
IGlzX3BvaW50ZXIgICAgIC0gYXMgaW4gVFIxOyBuZWVkZWQgb24gU3ltYmlhbiBhbmQgSUJNIFhM
IEMvQysrIG9ubHkuCisvLyAgIEl0ZXJhdG9yVHJhaXRzIC0gcGFydGlhbCBpbXBsZW1lbnRhdGlv
biBvZiBzdGQ6Oml0ZXJhdG9yX3RyYWl0cywgd2hpY2gKKy8vICAgICAgICAgICAgICAgICAgICBp
cyBub3QgYXZhaWxhYmxlIGluIGxpYkNzdGQgd2hlbiBjb21waWxlZCB3aXRoIFN1biBDKysuCiAv
LwogLy8gU21hcnQgcG9pbnRlcnM6CiAvLyAgIHNjb3BlZF9wdHIgICAgIC0gYXMgaW4gVFIyLgog
Ly8KIC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnM6CiAvLyAgIFJFICAgICAgICAgICAgIC0gYSBzaW1w
bGUgcmVndWxhciBleHByZXNzaW9uIGNsYXNzIHVzaW5nIHRoZSBQT1NJWAotLy8gICAgICAgICAg
ICAgICAgICAgIEV4dGVuZGVkIFJlZ3VsYXIgRXhwcmVzc2lvbiBzeW50YXguICBOb3QgYXZhaWxh
YmxlIG9uCi0vLyAgICAgICAgICAgICAgICAgICAgV2luZG93cy4KLS8vCisvLyAgICAgICAgICAg
ICAgICAgICAgRXh0ZW5kZWQgUmVndWxhciBFeHByZXNzaW9uIHN5bnRheCBvbiBVTklYLWxpa2Ug
cGxhdGZvcm1zCisvLyAgICAgICAgICAgICAgICAgICAgR09PR0xFVEVTVF9DTTAwMDggRE8gTk9U
IERFTEVURQorLy8gICAgICAgICAgICAgICAgICAgIG9yIGEgcmVkdWNlZCByZWd1bGFyIGV4Y2Vw
dGlvbiBzeW50YXggb24gb3RoZXIKKy8vICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybXMsIGlu
Y2x1ZGluZyBXaW5kb3dzLgogLy8gTG9nZ2luZzoKIC8vICAgR1RFU1RfTE9HXygpICAgLSBsb2dz
IG1lc3NhZ2VzIGF0IHRoZSBzcGVjaWZpZWQgc2V2ZXJpdHkgbGV2ZWwuCiAvLyAgIExvZ1RvU3Rk
ZXJyKCkgIC0gZGlyZWN0cyBhbGwgbG9nIG1lc3NhZ2VzIHRvIHN0ZGVyci4KQEAgLTE2MCwxMCAr
MjUzLDkgQEAKIC8vICAgQmlnZ2VzdEludCAgICAgLSB0aGUgYmlnZ2VzdCBzaWduZWQgaW50ZWdl
ciB0eXBlLgogLy8KIC8vIENvbW1hbmQtbGluZSB1dGlsaXRpZXM6Ci0vLyAgIEdURVNUX0ZMQUco
KSAgICAgICAtIHJlZmVyZW5jZXMgYSBmbGFnLgogLy8gICBHVEVTVF9ERUNMQVJFXyooKSAgLSBk
ZWNsYXJlcyBhIGZsYWcuCiAvLyAgIEdURVNUX0RFRklORV8qKCkgICAtIGRlZmluZXMgYSBmbGFn
LgotLy8gICBHZXRBcmd2cygpICAgICAgICAgLSByZXR1cm5zIHRoZSBjb21tYW5kIGxpbmUgYXMg
YSB2ZWN0b3Igb2Ygc3RyaW5ncy4KKy8vICAgR2V0SW5qZWN0YWJsZUFyZ3ZzKCkgLSByZXR1cm5z
IHRoZSBjb21tYW5kIGxpbmUgYXMgYSB2ZWN0b3Igb2Ygc3RyaW5ncy4KIC8vCiAvLyBFbnZpcm9u
bWVudCB2YXJpYWJsZSB1dGlsaXRpZXM6CiAvLyAgIEdldEVudigpICAgICAgICAgICAgIC0gZ2V0
cyB0aGUgdmFsdWUgb2YgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCkBAIC0xNzEsMTcxICsyNjMs
MzA1IEBACiAvLyAgIEludDMyRnJvbUdUZXN0RW52KCkgIC0gcGFyc2VzIGFuIEludDMyIGVudmly
b25tZW50IHZhcmlhYmxlLgogLy8gICBTdHJpbmdGcm9tR1Rlc3RFbnYoKSAtIHBhcnNlcyBhIHN0
cmluZyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KIAotI2luY2x1ZGUgPHN0ZGRlZi5oPiAgLy8gRm9y
IHB0cmRpZmZfdAorI2luY2x1ZGUgPGN0eXBlLmg+ICAgLy8gZm9yIGlzc3BhY2UsIGV0YworI2lu
Y2x1ZGUgPHN0ZGRlZi5oPiAgLy8gZm9yIHB0cmRpZmZfdAogI2luY2x1ZGUgPHN0ZGxpYi5oPgog
I2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaWZuZGVmIF9XSU4zMl9X
Q0UKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgorIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyMgaW5j
bHVkZSA8c3lzL3N0YXQuaD4KICNlbmRpZiAgLy8gIV9XSU4zMl9XQ0UKIAotI2luY2x1ZGUgPHd0
Zi9QbGF0Zm9ybS5oPgotI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KLSNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0V4cG9ydE1hY3Jvcy5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpZiBkZWZpbmVkIF9fQVBQTEVfXwor
IyBpbmNsdWRlIDxBdmFpbGFiaWxpdHlNYWNyb3MuaD4KKyMgaW5jbHVkZSA8VGFyZ2V0Q29uZGl0
aW9uYWxzLmg+CisjZW5kaWYKIAorLy8gQnJpbmdzIGluIHRoZSBkZWZpbml0aW9uIG9mIEhBU19H
TE9CQUxfU1RSSU5HLiAgVGhpcyBtdXN0IGJlIGRvbmUKKy8vIEJFRk9SRSB3ZSB0ZXN0IEhBU19H
TE9CQUxfU1RSSU5HLgorI2luY2x1ZGUgPHN0cmluZz4gIC8vIE5PTElOVAorI2luY2x1ZGUgPGFs
Z29yaXRobT4gIC8vIE5PTElOVAogI2luY2x1ZGUgPGlvc3RyZWFtPiAgLy8gTk9MSU5UCiAjaW5j
bHVkZSA8c3N0cmVhbT4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHN0cmluZz4gIC8vIE5PTElOVAor
I2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9yPiAgLy8gTk9MSU5UCisKKyNpbmNs
dWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LWFyY2guaCIKKyNpbmNsdWRlICJndGVzdC9p
bnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oIgorCisjaWYgIWRlZmluZWQoR1RFU1RfREVWX0VN
QUlMXykKKyMgZGVmaW5lIEdURVNUX0RFVl9FTUFJTF8gImdvb2dsZXRlc3RmcmFtZXdvcmtAQGdv
b2dsZWdyb3Vwcy5jb20iCisjIGRlZmluZSBHVEVTVF9GTEFHX1BSRUZJWF8gImd0ZXN0XyIKKyMg
ZGVmaW5lIEdURVNUX0ZMQUdfUFJFRklYX0RBU0hfICJndGVzdC0iCisjIGRlZmluZSBHVEVTVF9G
TEFHX1BSRUZJWF9VUFBFUl8gIkdURVNUXyIKKyMgZGVmaW5lIEdURVNUX05BTUVfICJHb29nbGUg
VGVzdCIKKyMgZGVmaW5lIEdURVNUX1BST0pFQ1RfVVJMXyAiaHR0cHM6Ly9naXRodWIuY29tL2dv
b2dsZS9nb29nbGV0ZXN0LyIKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfREVWX0VNQUlMXykK
IAotI2RlZmluZSBHVEVTVF9ERVZfRU1BSUxfICJnb29nbGV0ZXN0ZnJhbWV3b3JrQEBnb29nbGVn
cm91cHMuY29tIgotI2RlZmluZSBHVEVTVF9GTEFHX1BSRUZJWF8gImd0ZXN0XyIKLSNkZWZpbmUg
R1RFU1RfRkxBR19QUkVGSVhfREFTSF8gImd0ZXN0LSIKLSNkZWZpbmUgR1RFU1RfRkxBR19QUkVG
SVhfVVBQRVJfICJHVEVTVF8iCi0jZGVmaW5lIEdURVNUX05BTUVfICJHb29nbGUgVGVzdCIKLSNk
ZWZpbmUgR1RFU1RfUFJPSkVDVF9VUkxfICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xl
dGVzdC8iCisjaWYgIWRlZmluZWQoR1RFU1RfSU5JVF9HT09HTEVfVEVTVF9OQU1FXykKKyMgZGVm
aW5lIEdURVNUX0lOSVRfR09PR0xFX1RFU1RfTkFNRV8gInRlc3Rpbmc6OkluaXRHb29nbGVUZXN0
IgorI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9JTklUX0dPT0dMRV9URVNUX05BTUVfKQogCiAv
LyBEZXRlcm1pbmVzIHRoZSB2ZXJzaW9uIG9mIGdjYyB0aGF0IGlzIHVzZWQgdG8gY29tcGlsZSB0
aGlzLgogI2lmZGVmIF9fR05VQ19fCiAvLyA0MDMwMiBtZWFucyB2ZXJzaW9uIDQuMy4yLgotI2Rl
ZmluZSBHVEVTVF9HQ0NfVkVSXyBcCisjIGRlZmluZSBHVEVTVF9HQ0NfVkVSXyBcCiAgICAgKF9f
R05VQ19fKjEwMDAwICsgX19HTlVDX01JTk9SX18qMTAwICsgX19HTlVDX1BBVENITEVWRUxfXykK
ICNlbmRpZiAgLy8gX19HTlVDX18KIAotLy8gRGV0ZXJtaW5lcyB0aGUgcGxhdGZvcm0gb24gd2hp
Y2ggR29vZ2xlIFRlc3QgaXMgY29tcGlsZWQuCi0jaWZkZWYgX19DWUdXSU5fXwotI2RlZmluZSBH
VEVTVF9PU19DWUdXSU4gMQotI2VsaWYgZGVmaW5lZCBfX1NZTUJJQU4zMl9fCi0jZGVmaW5lIEdU
RVNUX09TX1NZTUJJQU4gMQotI2VsaWYgZGVmaW5lZCBfV0lOMzIKLSNkZWZpbmUgR1RFU1RfT1Nf
V0lORE9XUyAxCi0jaWZkZWYgX1dJTjMyX1dDRQotI2RlZmluZSBHVEVTVF9PU19XSU5ET1dTX01P
QklMRSAxCi0jZWxpZiBkZWZpbmVkKF9fTUlOR1dfXykgfHwgZGVmaW5lZChfX01JTkdXMzJfXykK
LSNkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19NSU5HVyAxCisvLyBNYWNyb3MgZm9yIGRpc2FibGlu
ZyBNaWNyb3NvZnQgVmlzdWFsIEMrKyB3YXJuaW5ncy4KKy8vCisvLyAgIEdURVNUX0RJU0FCTEVf
TVNDX1dBUk5JTkdTX1BVU0hfKDQ4MDAgNDM4NSkKKy8vICAgLyogY29kZSB0aGF0IHRyaWdnZXJz
IHdhcm5pbmdzIEM0ODAwIGFuZCBDNDM4NSAqLworLy8gICBHVEVTVF9ESVNBQkxFX01TQ19XQVJO
SU5HU19QT1BfKCkKKyNpZiBfTVNDX1ZFUiA+PSAxNDAwCisjIGRlZmluZSBHVEVTVF9ESVNBQkxF
X01TQ19XQVJOSU5HU19QVVNIXyh3YXJuaW5ncykgXAorICAgIF9fcHJhZ21hKHdhcm5pbmcocHVz
aCkpICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9fcHJhZ21hKHdhcm5pbmcoZGlzYWJs
ZTogd2FybmluZ3MpKQorIyBkZWZpbmUgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygp
ICAgICAgICAgIFwKKyAgICBfX3ByYWdtYSh3YXJuaW5nKHBvcCkpCiAjZWxzZQotI2RlZmluZSBH
VEVTVF9PU19XSU5ET1dTX0RFU0tUT1AgMQotI2VuZGlmICAvLyBfV0lOMzJfV0NFCi0jZWxpZiBk
ZWZpbmVkIF9fQVBQTEVfXwotI2RlZmluZSBHVEVTVF9PU19NQUMgMQotI2VsaWYgZGVmaW5lZCBf
X2xpbnV4X18KLSNkZWZpbmUgR1RFU1RfT1NfTElOVVggMQotI2VsaWYgZGVmaW5lZCBfX0dOVV9f
Ci0jZGVmaW5lIEdURVNUX09TX0hVUkQgMQotI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwg
ZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9rZXJuZWxfXykKLSNk
ZWZpbmUgR1RFU1RfT1NfRlJFRUJTRCAxCi0jZWxpZiBkZWZpbmVkIF9fTVZTX18KLSNkZWZpbmUg
R1RFU1RfT1NfWk9TIDEKLSNlbGlmIGRlZmluZWQoX19zdW4pICYmIGRlZmluZWQoX19TVlI0KQot
I2RlZmluZSBHVEVTVF9PU19TT0xBUklTIDEKLSNlbGlmIGRlZmluZWQoX0FJWCkKLSNkZWZpbmUg
R1RFU1RfT1NfQUlYIDEKLSNlbmRpZiAgLy8gX19DWUdXSU5fXwotCi0jaWYgR1RFU1RfT1NfQ1lH
V0lOIHx8IEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19TWU1CSUFO
IHx8IFwKLSAgICBHVEVTVF9PU19TT0xBUklTIHx8IEdURVNUX09TX0FJWCB8fCBHVEVTVF9PU19G
UkVFQlNEIHx8IEdURVNUX09TX0hVUkQKKy8vIE9sZGVyIHZlcnNpb25zIG9mIE1TVkMgZG9uJ3Qg
aGF2ZSBfX3ByYWdtYS4KKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hf
KHdhcm5pbmdzKQorIyBkZWZpbmUgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCisj
ZW5kaWYKKworLy8gQ2xhbmcgb24gV2luZG93cyBkb2VzIG5vdCB1bmRlcnN0YW5kIE1TVkMncyBw
cmFnbWEgd2FybmluZy4KKy8vIFdlIG5lZWQgY2xhbmctc3BlY2lmaWMgd2F5IHRvIGRpc2FibGUg
ZnVuY3Rpb24gZGVwcmVjYXRpb24gd2FybmluZy4KKyNpZmRlZiBfX2NsYW5nX18KKyMgZGVmaW5l
IEdURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVTSF8oKSAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgX1ByYWdtYSgiY2xhbmcgZGlhZ25vc3RpYyBwdXNoIikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9QcmFnbWEoImNsYW5nIGRpYWdub3N0aWMgaWdu
b3JlZCBcIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNcIiIpIFwKKyAgICBfUHJhZ21hKCJjbGFu
ZyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV2RlcHJlY2F0ZWQtaW1wbGVtZW50YXRpb25zXCIiKQor
I2RlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BPUF8oKSBcCisgICAgX1ByYWdt
YSgiY2xhbmcgZGlhZ25vc3RpYyBwb3AiKQorI2Vsc2UKKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVf
TVNDX0RFUFJFQ0FURURfUFVTSF8oKSBcCisgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1Nf
UFVTSF8oNDk5NikKKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUE9QXygp
IFwKKyAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKyNlbmRpZgorCisjaWZu
ZGVmIEdURVNUX0xBTkdfQ1hYMTEKKy8vIGdjYyBhbmQgY2xhbmcgZGVmaW5lIF9fR1hYX0VYUEVS
SU1FTlRBTF9DWFgwWF9fIHdoZW4KKy8vIC1zdGQ9e2MsZ251fSsrezB4LDExfSBpcyBwYXNzZWQu
ICBUaGUgQysrMTEgc3RhbmRhcmQgc3BlY2lmaWVzIGEKKy8vIHZhbHVlIGZvciBfX2NwbHVzcGx1
cywgYW5kIHJlY2VudCB2ZXJzaW9ucyBvZiBjbGFuZywgZ2NjLCBhbmQKKy8vIHByb2JhYmx5IG90
aGVyIGNvbXBpbGVycyBzZXQgdGhhdCB0b28gaW4gQysrMTEgbW9kZS4KKyMgaWYgX19HWFhfRVhQ
RVJJTUVOVEFMX0NYWDBYX18gfHwgX19jcGx1c3BsdXMgPj0gMjAxMTAzTCB8fCBfTVNDX1ZFUiA+
PSAxOTAwCisvLyBDb21waWxpbmcgaW4gYXQgbGVhc3QgQysrMTEgbW9kZS4KKyMgIGRlZmluZSBH
VEVTVF9MQU5HX0NYWDExIDEKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0xBTkdfQ1hYMTEgMAor
IyBlbmRpZgorI2VuZGlmCisKKy8vIERpc3RpbmN0IGZyb20gQysrMTEgbGFuZ3VhZ2Ugc3VwcG9y
dCwgc29tZSBlbnZpcm9ubWVudHMgZG9uJ3QgcHJvdmlkZQorLy8gcHJvcGVyIEMrKzExIGxpYnJh
cnkgc3VwcG9ydC4gTm90YWJseSwgaXQncyBwb3NzaWJsZSB0byBidWlsZCBpbgorLy8gQysrMTEg
bW9kZSB3aGVuIHRhcmdldGluZyBNYWMgT1MgWCAxMC42LCB3aGljaCBoYXMgYW4gb2xkIGxpYnN0
ZGMrKworLy8gd2l0aCBubyBDKysxMSBzdXBwb3J0LgorLy8KKy8vIGxpYnN0ZGMrKyBoYXMgc3Vm
ZmljaWVudCBDKysxMSBzdXBwb3J0IGFzIG9mIEdDQyA0LjYuMCwgX19HTElCQ1hYX18KKy8vIDIw
MTEwMzI1LCBidXQgbWFpbnRlbmFuY2UgcmVsZWFzZXMgaW4gdGhlIDQuNCBhbmQgNC41IHNlcmll
cyBmb2xsb3dlZAorLy8gdGhpcyBkYXRlLCBzbyBjaGVjayBmb3IgdGhvc2UgdmVyc2lvbnMgYnkg
dGhlaXIgZGF0ZSBzdGFtcHMuCisvLyBodHRwczovL2djYy5nbnUub3JnL29ubGluZWRvY3MvbGli
c3RkYysrL21hbnVhbC9hYmkuaHRtbCNhYmkudmVyc2lvbmluZworI2lmIEdURVNUX0xBTkdfQ1hY
MTEgJiYgXAorICAgICghZGVmaW5lZChfX0dMSUJDWFhfXykgfHwgKCBcCisgICAgICAgIF9fR0xJ
QkNYWF9fID49IDIwMTEwMzI1dWwgJiYgIC8qIEdDQyA+PSA0LjYuMCAqLyBcCisgICAgICAgIC8q
IEJsYWNrbGlzdCBvZiBwYXRjaCByZWxlYXNlcyBvZiBvbGRlciBicmFuY2hlczogKi8gXAorICAg
ICAgICBfX0dMSUJDWFhfXyAhPSAyMDExMDQxNnVsICYmICAvKiBHQ0MgNC40LjYgKi8gXAorICAg
ICAgICBfX0dMSUJDWFhfXyAhPSAyMDEyMDMxM3VsICYmICAvKiBHQ0MgNC40LjcgKi8gXAorICAg
ICAgICBfX0dMSUJDWFhfXyAhPSAyMDExMDQyOHVsICYmICAvKiBHQ0MgNC41LjMgKi8gXAorICAg
ICAgICBfX0dMSUJDWFhfXyAhPSAyMDEyMDcwMnVsKSkgICAvKiBHQ0MgNC41LjQgKi8KKyMgZGVm
aW5lIEdURVNUX1NURExJQl9DWFgxMSAxCisjZW5kaWYKKworLy8gT25seSB1c2UgQysrMTEgbGli
cmFyeSBmZWF0dXJlcyBpZiB0aGUgbGlicmFyeSBwcm92aWRlcyB0aGVtLgorI2lmIEdURVNUX1NU
RExJQl9DWFgxMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9CRUdJTl9BTkRfRU5EXyAxCisjIGRl
ZmluZSBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8gMQorIyBpZiAhZGVmaW5lZChfTVNDX1ZF
UikgfHwgKF9NU0NfRlVMTF9WRVIgPj0gMTkwMDIzODI0KQorLy8gd29ya3Mgb25seSB3aXRoIFZT
MjAxNVUyIGFuZCBiZXR0ZXIKKyMgICBkZWZpbmUgR1RFU1RfSEFTX1NURF9GVU5DVElPTl8gMQor
IyBlbmRpZgorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9JTklUSUFMSVpFUl9MSVNUXyAxCisjIGRl
ZmluZSBHVEVTVF9IQVNfU1REX01PVkVfIDEKKyMgZGVmaW5lIEdURVNUX0hBU19TVERfVU5JUVVF
X1BUUl8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9TSEFSRURfUFRSXyAxCisjIGRlZmluZSBH
VEVTVF9IQVNfVU5PUkRFUkVEX01BUF8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX1VOT1JERVJFRF9T
RVRfIDEKKyNlbmRpZgorCisvLyBDKysxMSBzcGVjaWZpZXMgdGhhdCA8dHVwbGU+IHByb3ZpZGVz
IHN0ZDo6dHVwbGUuCisvLyBTb21lIHBsYXRmb3JtcyBzdGlsbCBtaWdodCBub3QgaGF2ZSBpdCwg
aG93ZXZlci4KKyNpZiBHVEVTVF9MQU5HX0NYWDExCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX1RV
UExFXyAxCisjIGlmIGRlZmluZWQoX19jbGFuZ19fKQorLy8gSW5zcGlyZWQgYnkKKy8vIGh0dHBz
Oi8vY2xhbmcubGx2bS5vcmcvZG9jcy9MYW5ndWFnZUV4dGVuc2lvbnMuaHRtbCNpbmNsdWRlLWZp
bGUtY2hlY2tpbmctbWFjcm9zCisjICBpZiBkZWZpbmVkKF9faGFzX2luY2x1ZGUpICYmICFfX2hh
c19pbmNsdWRlKDx0dXBsZT4pCisjICAgdW5kZWYgR1RFU1RfSEFTX1NURF9UVVBMRV8KKyMgIGVu
ZGlmCisjIGVsaWYgZGVmaW5lZChfTVNDX1ZFUikKKy8vIEluc3BpcmVkIGJ5IGJvb3N0L2NvbmZp
Zy9zdGRsaWIvZGlua3Vtd2FyZS5ocHAKKyMgIGlmIGRlZmluZWQoX0NQUExJQl9WRVIpICYmIF9D
UFBMSUJfVkVSIDwgNTIwCisjICAgdW5kZWYgR1RFU1RfSEFTX1NURF9UVVBMRV8KKyMgIGVuZGlm
CisjIGVsaWYgZGVmaW5lZChfX0dMSUJDWFhfXykKKy8vIEluc3BpcmVkIGJ5IGJvb3N0L2NvbmZp
Zy9zdGRsaWIvbGlic3RkY3BwMy5ocHAsCisvLyBodHRwOi8vZ2NjLmdudS5vcmcvZ2NjLTQuMi9j
aGFuZ2VzLmh0bWwgYW5kCisvLyBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNDAyMjcw
NDQ0MjkvZ2NjLmdudS5vcmcvb25saW5lZG9jcy9saWJzdGRjKysvbWFudWFsL2JrMDFwdDAxY2gw
MS5odG1sI21hbnVhbC5pbnRyby5zdGF0dXMuc3RhbmRhcmQuMjAweAorIyAgaWYgX19HTlVDX18g
PCA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgMikKKyMgICB1bmRlZiBH
VEVTVF9IQVNfU1REX1RVUExFXworIyAgZW5kaWYKKyMgZW5kaWYKKyNlbmRpZgorCisvLyBCcmlu
Z3MgaW4gZGVmaW5pdGlvbnMgZm9yIGZ1bmN0aW9ucyB1c2VkIGluIHRoZSB0ZXN0aW5nOjppbnRl
cm5hbDo6cG9zaXgKKy8vIG5hbWVzcGFjZSAocmVhZCwgd3JpdGUsIGNsb3NlLCBjaGRpciwgaXNh
dHR5LCBzdGF0KS4gV2UgZG8gbm90IGN1cnJlbnRseQorLy8gdXNlIHRoZW0gb24gV2luZG93cyBN
b2JpbGUuCisjaWYgR1RFU1RfT1NfV0lORE9XUworIyBpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKKyMgIGluY2x1ZGUgPGRpcmVjdC5oPgorIyAgaW5jbHVkZSA8aW8uaD4KKyMgZW5kaWYKKy8v
IEluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBpbmNsdWRlIDx3aW5kb3dzLmg+LCB1c2UgZm9y
d2FyZCBkZWNsYXJhdGlvbgorI2lmIEdURVNUX09TX1dJTkRPV1NfTUlOR1cgJiYgIWRlZmluZWQo
X19NSU5HVzY0X1ZFUlNJT05fTUFKT1IpCisvLyBNaW5HVyBkZWZpbmVkIF9DUklUSUNBTF9TRUNU
SU9OIGFuZCBfUlRMX0NSSVRJQ0FMX1NFQ1RJT04gYXMgdHdvCisvLyBzZXBhcmF0ZSAoZXF1aXZh
bGVudCkgc3RydWN0cywgaW5zdGVhZCBvZiB1c2luZyB0eXBlZGVmCit0eXBlZGVmIHN0cnVjdCBf
Q1JJVElDQUxfU0VDVElPTiBHVEVTVF9DUklUSUNBTF9TRUNUSU9OOworI2Vsc2UKKy8vIEFzc3Vt
ZSBDUklUSUNBTF9TRUNUSU9OIGlzIGEgdHlwZWRlZiBvZiBfUlRMX0NSSVRJQ0FMX1NFQ1RJT04u
CisvLyBUaGlzIGFzc3VtcHRpb24gaXMgdmVyaWZpZWQgYnkKKy8vIFdpbmRvd3NUeXBlc1Rlc3Qu
Q1JJVElDQUxfU0VDVElPTklzX1JUTF9DUklUSUNBTF9TRUNUSU9OLgordHlwZWRlZiBzdHJ1Y3Qg
X1JUTF9DUklUSUNBTF9TRUNUSU9OIEdURVNUX0NSSVRJQ0FMX1NFQ1RJT047CisjZW5kaWYKKyNl
bHNlCisvLyBUaGlzIGFzc3VtZXMgdGhhdCBub24tV2luZG93cyBPU2VzIHByb3ZpZGUgdW5pc3Rk
LmguIEZvciBPU2VzIHdoZXJlIHRoaXMKKy8vIGlzIG5vdCB0aGUgY2FzZSwgd2UgbmVlZCB0byBp
bmNsdWRlIGhlYWRlcnMgdGhhdCBwcm92aWRlIHRoZSBmdW5jdGlvbnMKKy8vIG1lbnRpb25lZCBh
Ym92ZS4KKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjIGluY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjaWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRAorLy8g
VXNlZCB0byBkZWZpbmUgX19BTkRST0lEX0FQSV9fIG1hdGNoaW5nIHRoZSB0YXJnZXQgTkRLIEFQ
SSBsZXZlbC4KKyMgIGluY2x1ZGUgPGFuZHJvaWQvYXBpLWxldmVsLmg+ICAvLyBOT0xJTlQKKyNl
bmRpZgorCisvLyBEZWZpbmVzIHRoaXMgdG8gdHJ1ZSBpZmYgR29vZ2xlIFRlc3QgY2FuIHVzZSBQ
T1NJWCByZWd1bGFyIGV4cHJlc3Npb25zLgorI2lmbmRlZiBHVEVTVF9IQVNfUE9TSVhfUkUKKyMg
aWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRAorLy8gT24gQW5kcm9pZCwgPHJlZ2V4Lmg+IGlzIG9u
bHkgYXZhaWxhYmxlIHN0YXJ0aW5nIHdpdGggR2luZ2VyYnJlYWQuCisjICBkZWZpbmUgR1RFU1Rf
SEFTX1BPU0lYX1JFIChfX0FORFJPSURfQVBJX18gPj0gOSkKKyMgZWxzZQorIyAgZGVmaW5lIEdU
RVNUX0hBU19QT1NJWF9SRSAoIUdURVNUX09TX1dJTkRPV1MpCisjIGVuZGlmCisjZW5kaWYKKwor
I2lmIEdURVNUX1VTRVNfUENSRQorLy8gVGhlIGFwcHJvcHJpYXRlIGhlYWRlcnMgaGF2ZSBhbHJl
YWR5IGJlZW4gaW5jbHVkZWQuCisKKyNlbGlmIEdURVNUX0hBU19QT1NJWF9SRQogCiAvLyBPbiBz
b21lIHBsYXRmb3JtcywgPHJlZ2V4Lmg+IG5lZWRzIHNvbWVvbmUgdG8gZGVmaW5lIHNpemVfdCwg
YW5kCiAvLyB3b24ndCBjb21waWxlIG90aGVyd2lzZS4gIFdlIGNhbiAjaW5jbHVkZSBpdCBoZXJl
IGFzIHdlIGFscmVhZHkKIC8vIGluY2x1ZGVkIDxzdGRsaWIuaD4sIHdoaWNoIGlzIGd1YXJhbnRl
ZWQgdG8gZGVmaW5lIHNpemVfdCB0aHJvdWdoCiAvLyA8c3RkZGVmLmg+LgotI2lmIEhBVkUoUkVH
RVhfSCkKLSNpbmNsdWRlIDxyZWdleC5oPiAgLy8gTk9MSU5UCi0jZGVmaW5lIEdURVNUX1VTRVNf
UE9TSVhfUkUgMQotI2Vsc2UKLSNkZWZpbmUgR1RFU1RfVVNFU19TSU1QTEVfUkUgMQotI2VuZGlm
Ci0jaW5jbHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+
ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDx0aW1lLmg+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDx1bmlz
dGQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxyZWdleC5oPiAgLy8gTk9MSU5UCiAKKyMgZGVm
aW5lIEdURVNUX1VTRVNfUE9TSVhfUkUgMQogCiAjZWxpZiBHVEVTVF9PU19XSU5ET1dTCiAKLSNp
ZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSNpbmNsdWRlIDxkaXJlY3QuaD4gIC8vIE5PTElO
VAotI2luY2x1ZGUgPGlvLmg+ICAvLyBOT0xJTlQKLSNlbmRpZgotCiAvLyA8cmVnZXguaD4gaXMg
bm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLiAgVXNlIG91ciBvd24gc2ltcGxlIHJlZ2V4CiAvLyBp
bXBsZW1lbnRhdGlvbiBpbnN0ZWFkLgotI2RlZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9SRSAxCisj
IGRlZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9SRSAxCiAKICNlbHNlCiAKIC8vIDxyZWdleC5oPiBt
YXkgbm90IGJlIGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtLiAgVXNlIG91ciBvd24KIC8vIHNp
bXBsZSByZWdleCBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkLgotI2RlZmluZSBHVEVTVF9VU0VTX1NJ
TVBMRV9SRSAxCisjIGRlZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9SRSAxCiAKLSNlbmRpZiAgLy8g
R1RFU1RfT1NfQ1lHV0lOIHx8IEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fAotICAg
ICAgICAvLyBHVEVTVF9PU19TWU1CSUFOIHx8IEdURVNUX09TX1NPTEFSSVMgfHwgR1RFU1RfT1Nf
QUlYIHx8Ci0gICAgICAgIC8vIEdURVNUX09TX0ZSRUVCU0QgfHwgR1RFU1RfT1NfSFVSRAorI2Vu
ZGlmICAvLyBHVEVTVF9VU0VTX1BDUkUKIAogI2lmbmRlZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwog
Ly8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMgd2hldGhlciBleGNlcHRpb25zIGFyZSBlbmFibGVk
LCBzbyB3ZSBuZWVkCiAvLyB0byBmaWd1cmUgaXQgb3V0LgotI2lmIGRlZmluZWQoX01TQ19WRVIp
IHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQotLy8gTVNWQydzIGFuZCBDKytCdWlsZGVyJ3MgaW1w
bGVtZW50YXRpb25zIG9mIHRoZSBTVEwgdXNlIHRoZSBfSEFTX0VYQ0VQVElPTlMKKyMgaWYgZGVm
aW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZChfQ1BQVU5XSU5EKQorLy8gTVNWQyBkZWZpbmVzIF9D
UFBVTldJTkQgdG8gMSBpZmYgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZC4KKyMgIGRlZmluZSBHVEVT
VF9IQVNfRVhDRVBUSU9OUyAxCisjIGVsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCisvLyBDKytC
dWlsZGVyJ3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNUTCB1c2VzIHRoZSBfSEFTX0VYQ0VQVElP
TlMKIC8vIG1hY3JvIHRvIGVuYWJsZSBleGNlcHRpb25zLCBzbyB3ZSdsbCBkbyB0aGUgc2FtZS4K
IC8vIEFzc3VtZXMgdGhhdCBleGNlcHRpb25zIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQuCi0jaWZu
ZGVmIF9IQVNfRVhDRVBUSU9OUwotI2RlZmluZSBfSEFTX0VYQ0VQVElPTlMgMQotI2VuZGlmICAv
LyBfSEFTX0VYQ0VQVElPTlMKLSNkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgX0hBU19FWENF
UFRJT05TCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0VYQ0VQVElPTlMKKyMgIGlmbmRl
ZiBfSEFTX0VYQ0VQVElPTlMKKyMgICBkZWZpbmUgX0hBU19FWENFUFRJT05TIDEKKyMgIGVuZGlm
ICAvLyBfSEFTX0VYQ0VQVElPTlMKKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyBfSEFT
X0VYQ0VQVElPTlMKKyMgZWxpZiBkZWZpbmVkKF9fY2xhbmdfXykKKy8vIGNsYW5nIGRlZmluZXMg
X19FWENFUFRJT05TIGlmZiBleGNlcHRpb25zIGFyZSBlbmFibGVkIGJlZm9yZSBjbGFuZyAyMjA3
MTQsCisvLyBidXQgaWZmIGNsZWFudXBzIGFyZSBlbmFibGVkIGFmdGVyIHRoYXQuIEluIE9iai1D
KysgZmlsZXMsIHRoZXJlIGNhbiBiZQorLy8gY2xlYW51cHMgZm9yIE9iakMgZXhjZXB0aW9ucyB3
aGljaCBhbHNvIG5lZWQgY2xlYW51cHMsIGV2ZW4gaWYgQysrIGV4Y2VwdGlvbnMKKy8vIGFyZSBk
aXNhYmxlZC4gY2xhbmcgaGFzIF9faGFzX2ZlYXR1cmUoY3h4X2V4Y2VwdGlvbnMpIHdoaWNoIGNo
ZWNrcyBmb3IgQysrCisvLyBleGNlcHRpb25zIHN0YXJ0aW5nIGF0IGNsYW5nIHIyMDYzNTIsIGJ1
dCB3aGljaCBjaGVja2VkIGZvciBjbGVhbnVwcyBwcmlvciB0bworLy8gdGhhdC4gVG8gcmVsaWFi
bHkgY2hlY2sgZm9yIEMrKyBleGNlcHRpb24gYXZhaWxhYmlsaXR5IHdpdGggY2xhbmcsIGNoZWNr
IGZvcgorLy8gX19FWENFUFRJT05TICYmIF9faGFzX2ZlYXR1cmUoY3h4X2V4Y2VwdGlvbnMpLgor
IyAgZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIChfX0VYQ0VQVElPTlMgJiYgX19oYXNfZmVh
dHVyZShjeHhfZXhjZXB0aW9ucykpCisjIGVsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19FWENF
UFRJT05TCiAvLyBnY2MgZGVmaW5lcyBfX0VYQ0VQVElPTlMgdG8gMSBpZmYgZXhjZXB0aW9ucyBh
cmUgZW5hYmxlZC4KLSNkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMQotI2VsaWYgZGVmaW5l
ZChfX1NVTlBST19DQykKKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCisjIGVsaWYg
ZGVmaW5lZChfX1NVTlBST19DQykKIC8vIFN1biBQcm8gQ0Mgc3VwcG9ydHMgZXhjZXB0aW9ucy4g
IEhvd2V2ZXIsIHRoZXJlIGlzIG5vIGNvbXBpbGUtdGltZSB3YXkgb2YKIC8vIGRldGVjdGluZyB3
aGV0aGVyIHRoZXkgYXJlIGVuYWJsZWQgb3Igbm90LiAgVGhlcmVmb3JlLCB3ZSBhc3N1bWUgdGhh
dAogLy8gdGhleSBhcmUgZW5hYmxlZCB1bmxlc3MgdGhlIHVzZXIgdGVsbHMgdXMgb3RoZXJ3aXNl
LgotI2RlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCi0jZWxpZiBkZWZpbmVkKF9fSUJNQ1BQ
X18pICYmIF9fRVhDRVBUSU9OUworIyAgZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIDEKKyMg
ZWxpZiBkZWZpbmVkKF9fSUJNQ1BQX18pICYmIF9fRVhDRVBUSU9OUwogLy8geGxDIGRlZmluZXMg
X19FWENFUFRJT05TIHRvIDEgaWZmIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQuCi0jZGVmaW5lIEdU
RVNUX0hBU19FWENFUFRJT05TIDEKLSNlbHNlCisjICBkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElP
TlMgMQorIyBlbGlmIGRlZmluZWQoX19IUF9hQ0MpCisvLyBFeGNlcHRpb24gaGFuZGxpbmcgaXMg
aW4gZWZmZWN0IGJ5IGRlZmF1bHQgaW4gSFAgYUNDIGNvbXBpbGVyLiBJdCBoYXMgdG8KKy8vIGJl
IHR1cm5lZCBvZiBieSArbm9laCBjb21waWxlciBvcHRpb24gaWYgZGVzaXJlZC4KKyMgIGRlZmlu
ZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCisjIGVsc2UKIC8vIEZvciBvdGhlciBjb21waWxlcnMs
IHdlIGFzc3VtZSBleGNlcHRpb25zIGFyZSBkaXNhYmxlZCB0byBiZQogLy8gY29uc2VydmF0aXZl
LgotI2RlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAwCi0jZW5kaWYgIC8vIGRlZmluZWQoX01T
Q19WRVIpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQorIyAgZGVmaW5lIEdURVNUX0hBU19FWENF
UFRJT05TIDAKKyMgZW5kaWYgIC8vIGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19CT1JM
QU5EQ19fKQogI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUwogCiAjaWYgIWRlZmluZWQo
R1RFU1RfSEFTX1NURF9TVFJJTkcpCiAvLyBFdmVuIHRob3VnaCB3ZSBkb24ndCB1c2UgdGhpcyBt
YWNybyBhbnkgbG9uZ2VyLCB3ZSBrZWVwIGl0IGluIGNhc2UKIC8vIHNvbWUgY2xpZW50cyBzdGls
bCBkZXBlbmQgb24gaXQuCi0jZGVmaW5lIEdURVNUX0hBU19TVERfU1RSSU5HIDEKKyMgZGVmaW5l
IEdURVNUX0hBU19TVERfU1RSSU5HIDEKICNlbGlmICFHVEVTVF9IQVNfU1REX1NUUklORwogLy8g
VGhlIHVzZXIgdG9sZCB1cyB0aGF0IDo6c3RkOjpzdHJpbmcgaXNuJ3QgYXZhaWxhYmxlLgotI2Vy
cm9yICJHb29nbGUgVGVzdCBjYW5ub3QgYmUgdXNlZCB3aGVyZSA6OnN0ZDo6c3RyaW5nIGlzbid0
IGF2YWlsYWJsZS4iCisjIGVycm9yICI6OnN0ZDo6c3RyaW5nIGlzbid0IGF2YWlsYWJsZS4iCiAj
ZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0hBU19TVERfU1RSSU5HKQogCiAjaWZuZGVmIEdURVNU
X0hBU19HTE9CQUxfU1RSSU5HCi0vLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cyB3aGV0aGVyIDo6
c3RyaW5nIGlzIGF2YWlsYWJsZSwgc28gd2UgbmVlZAotLy8gdG8gZmlndXJlIGl0IG91dC4KLQot
I2RlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORyAwCi0KKyMgZGVmaW5lIEdURVNUX0hBU19H
TE9CQUxfU1RSSU5HIDAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKIAogI2lm
bmRlZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIHdo
ZXRoZXIgOjpzdGQ6OndzdHJpbmcgaXMgYXZhaWxhYmxlLCBzbyB3ZSBuZWVkCiAvLyB0byBmaWd1
cmUgaXQgb3V0LgotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHVzZXMgYXV0b2NvbmYgdG8gZGV0
ZWN0IHdoZXRoZXIgOjpzdGQ6OndzdHJpbmcKKy8vIEZJWE1FOiB1c2VzIGF1dG9jb25mIHRvIGRl
dGVjdCB3aGV0aGVyIDo6c3RkOjp3c3RyaW5nCiAvLyAgIGlzIGF2YWlsYWJsZS4KIAotLy8gQ3ln
d2luIDEuNSBhbmQgYmVsb3cgZG9lc24ndCBzdXBwb3J0IDo6c3RkOjp3c3RyaW5nLgotLy8gQ3ln
d2luIDEuNyBtaWdodCBhZGQgd3N0cmluZyBzdXBwb3J0OyB0aGlzIHNob3VsZCBiZSB1cGRhdGVk
IHdoZW4gY2xlYXIuCi0vLyBTb2xhcmlzJyBsaWJjKysgZG9lc24ndCBzdXBwb3J0IGl0IGVpdGhl
ci4KLSNkZWZpbmUgR1RFU1RfSEFTX1NURF9XU1RSSU5HICghKEdURVNUX09TX0NZR1dJTiB8fCBH
VEVTVF9PU19TT0xBUklTKSkKKy8vIEN5Z3dpbiAxLjcgYW5kIGJlbG93IGRvZXNuJ3Qgc3VwcG9y
dCA6OnN0ZDo6d3N0cmluZy4KKy8vIFNvbGFyaXMnIGxpYmMrKyBkb2Vzbid0IHN1cHBvcnQgaXQg
ZWl0aGVyLiAgQW5kcm9pZCBoYXMKKy8vIG5vIHN1cHBvcnQgZm9yIGl0IGF0IGxlYXN0IGFzIHJl
Y2VudCBhcyBGcm95byAoMi4yKS4KKyMgZGVmaW5lIEdURVNUX0hBU19TVERfV1NUUklORyBcCisg
ICAgKCEoR1RFU1RfT1NfTElOVVhfQU5EUk9JRCB8fCBHVEVTVF9PU19DWUdXSU4gfHwgR1RFU1Rf
T1NfU09MQVJJUykpCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RSSU5HCiAKICNpZm5k
ZWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCiAvLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cyB3
aGV0aGVyIDo6d3N0cmluZyBpcyBhdmFpbGFibGUsIHNvIHdlIG5lZWQKIC8vIHRvIGZpZ3VyZSBp
dCBvdXQuCi0jZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfV1NUUklORyBcCisjIGRlZmluZSBHVEVT
VF9IQVNfR0xPQkFMX1dTVFJJTkcgXAogICAgIChHVEVTVF9IQVNfU1REX1dTVFJJTkcgJiYgR1RF
U1RfSEFTX0dMT0JBTF9TVFJJTkcpCiAjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklO
RwogCkBAIC0zNDQsMTMzICs1NzAsMjEyIEBACiAvLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cyB3
aGV0aGVyIFJUVEkgaXMgZW5hYmxlZCwgc28gd2UgbmVlZCB0bwogLy8gZmlndXJlIGl0IG91dC4K
IAotI2lmZGVmIF9NU0NfVkVSCisjIGlmZGVmIF9NU0NfVkVSCiAKLSNpZmRlZiBfQ1BQUlRUSSAg
Ly8gTVNWQyBkZWZpbmVzIHRoaXMgbWFjcm8gaWZmIFJUVEkgaXMgZW5hYmxlZC4KLSNkZWZpbmUg
R1RFU1RfSEFTX1JUVEkgMQotI2Vsc2UKLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAotI2VuZGlm
CisjICBpZmRlZiBfQ1BQUlRUSSAgLy8gTVNWQyBkZWZpbmVzIHRoaXMgbWFjcm8gaWZmIFJUVEkg
aXMgZW5hYmxlZC4KKyMgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQorIyAgZWxzZQorIyAgIGRl
ZmluZSBHVEVTVF9IQVNfUlRUSSAwCisjICBlbmRpZgogCiAvLyBTdGFydGluZyB3aXRoIHZlcnNp
b24gNC4zLjIsIGdjYyBkZWZpbmVzIF9fR1hYX1JUVEkgaWZmIFJUVEkgaXMgZW5hYmxlZC4KLSNl
bGlmIGRlZmluZWQoX19HTlVDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSA0MDMwMikKLQotI2lm
ZGVmIF9fR1hYX1JUVEkKLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQotI2Vsc2UKLSNkZWZpbmUg
R1RFU1RfSEFTX1JUVEkgMAotI2VuZGlmICAvLyBfX0dYWF9SVFRJCisjIGVsaWYgZGVmaW5lZChf
X0dOVUNfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMzAyKQorCisjICBpZmRlZiBfX0dYWF9S
VFRJCisvLyBXaGVuIGJ1aWxkaW5nIGFnYWluc3QgU1RMcG9ydCB3aXRoIHRoZSBBbmRyb2lkIE5E
SyBhbmQgd2l0aAorLy8gLWZydHRpIC1mbm8tZXhjZXB0aW9ucywgdGhlIGJ1aWxkIGZhaWxzIGF0
IGxpbmsgdGltZSB3aXRoIHVuZGVmaW5lZAorLy8gcmVmZXJlbmNlcyB0byBfX2N4YV9iYWRfdHlw
ZWlkLiBOb3RlIHN1cmUgaWYgU1RMIG9yIHRvb2xjaGFpbiBidWcsCisvLyBzbyBkaXNhYmxlIFJU
VEkgd2hlbiBkZXRlY3RlZC4KKyMgICBpZiBHVEVTVF9PU19MSU5VWF9BTkRST0lEICYmIGRlZmlu
ZWQoX1NUTFBPUlRfTUFKT1IpICYmIFwKKyAgICAgICAhZGVmaW5lZChfX0VYQ0VQVElPTlMpCisj
ICAgIGRlZmluZSBHVEVTVF9IQVNfUlRUSSAwCisjICAgZWxzZQorIyAgICBkZWZpbmUgR1RFU1Rf
SEFTX1JUVEkgMQorIyAgIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWF9BTkRST0lEICYmIF9fU1RM
UE9SVF9NQUpPUiAmJiAhX19FWENFUFRJT05TCisjICBlbHNlCisjICAgZGVmaW5lIEdURVNUX0hB
U19SVFRJIDAKKyMgIGVuZGlmICAvLyBfX0dYWF9SVFRJCisKKy8vIENsYW5nIGRlZmluZXMgX19H
WFhfUlRUSSBzdGFydGluZyB3aXRoIHZlcnNpb24gMy4wLCBidXQgaXRzIG1hbnVhbCByZWNvbW1l
bmRzCisvLyB1c2luZyBoYXNfZmVhdHVyZSBpbnN0ZWFkLiBoYXNfZmVhdHVyZShjeHhfcnR0aSkg
aXMgc3VwcG9ydGVkIHNpbmNlIDIuNywgdGhlCisvLyBmaXJzdCB2ZXJzaW9uIHdpdGggQysrIHN1
cHBvcnQuCisjIGVsaWYgZGVmaW5lZChfX2NsYW5nX18pCisKKyMgIGRlZmluZSBHVEVTVF9IQVNf
UlRUSSBfX2hhc19mZWF0dXJlKGN4eF9ydHRpKQogCiAvLyBTdGFydGluZyB3aXRoIHZlcnNpb24g
OS4wIElCTSBWaXN1YWwgQWdlIGRlZmluZXMgX19SVFRJX0FMTF9fIHRvIDEgaWYKIC8vIGJvdGgg
dGhlIHR5cGVpZCBhbmQgZHluYW1pY19jYXN0IGZlYXR1cmVzIGFyZSBwcmVzZW50LgotI2VsaWYg
ZGVmaW5lZChfX0lCTUNQUF9fKSAmJiAoX19JQk1DUFBfXyA+PSA5MDApCisjIGVsaWYgZGVmaW5l
ZChfX0lCTUNQUF9fKSAmJiAoX19JQk1DUFBfXyA+PSA5MDApCiAKLSNpZmRlZiBfX1JUVElfQUxM
X18KLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQotI2Vsc2UKLSNkZWZpbmUgR1RFU1RfSEFTX1JU
VEkgMAotI2VuZGlmCisjICBpZmRlZiBfX1JUVElfQUxMX18KKyMgICBkZWZpbmUgR1RFU1RfSEFT
X1JUVEkgMQorIyAgZWxzZQorIyAgIGRlZmluZSBHVEVTVF9IQVNfUlRUSSAwCisjICBlbmRpZgog
Ci0jZWxzZQorIyBlbHNlCiAKIC8vIEZvciBhbGwgb3RoZXIgY29tcGlsZXJzLCB3ZSBhc3N1bWUg
UlRUSSBpcyBlbmFibGVkLgotI2RlZmluZSBHVEVTVF9IQVNfUlRUSSAxCisjICBkZWZpbmUgR1RF
U1RfSEFTX1JUVEkgMQogCi0jZW5kaWYgIC8vIF9NU0NfVkVSCisjIGVuZGlmICAvLyBfTVNDX1ZF
UgogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19SVFRJCiAKIC8vIEl0J3MgdGhpcyBoZWFkZXIncyBy
ZXNwb25zaWJpbGl0eSB0byAjaW5jbHVkZSA8dHlwZWluZm8+IHdoZW4gUlRUSQogLy8gaXMgZW5h
YmxlZC4KICNpZiBHVEVTVF9IQVNfUlRUSQotI2luY2x1ZGUgPHR5cGVpbmZvPgorIyBpbmNsdWRl
IDx0eXBlaW5mbz4KICNlbmRpZgogCiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgR29vZ2xlIFRlc3Qg
Y2FuIHVzZSB0aGUgcHRocmVhZHMgbGlicmFyeS4KICNpZm5kZWYgR1RFU1RfSEFTX1BUSFJFQUQK
LS8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIGV4cGxpY2l0bHksIHNvIHdlIGFzc3VtZSBwdGhy
ZWFkcyBzdXBwb3J0IGlzCi0vLyBhdmFpbGFibGUgb24gTGludXggYW5kIE1hYy4KKy8vIFRoZSB1
c2VyIGRpZG4ndCB0ZWxsIHVzIGV4cGxpY2l0bHksIHNvIHdlIG1ha2UgcmVhc29uYWJsZSBhc3N1
bXB0aW9ucyBhYm91dAorLy8gd2hpY2ggcGxhdGZvcm1zIGhhdmUgcHRocmVhZHMgc3VwcG9ydC4K
IC8vCiAvLyBUbyBkaXNhYmxlIHRocmVhZGluZyBzdXBwb3J0IGluIEdvb2dsZSBUZXN0LCBhZGQg
LURHVEVTVF9IQVNfUFRIUkVBRD0wCiAvLyB0byB5b3VyIGNvbXBpbGVyIGZsYWdzLgotI2RlZmlu
ZSBHVEVTVF9IQVNfUFRIUkVBRCAoR1RFU1RfT1NfTElOVVggfHwgR1RFU1RfT1NfRlJFRUJTRCB8
fCBHVEVTVF9PU19IVVJEIHx8IEdURVNUX09TX01BQykKKyNkZWZpbmUgR1RFU1RfSEFTX1BUSFJF
QUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIChHVEVT
VF9PU19MSU5VWCB8fCBHVEVTVF9PU19NQUMgfHwgR1RFU1RfT1NfSFBVWCB8fCBHVEVTVF9PU19R
TlggfHwgXAorICAgR1RFU1RfT1NfRlJFRUJTRCB8fCBHVEVTVF9PU19OQUNMIHx8IEdURVNUX09T
X05FVEJTRCB8fCBHVEVTVF9PU19GVUNIU0lBKQogI2VuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVB
RAogCisjaWYgR1RFU1RfSEFTX1BUSFJFQUQKKy8vIGd0ZXN0LXBvcnQuaCBndWFyYW50ZWVzIHRv
ICNpbmNsdWRlIDxwdGhyZWFkLmg+IHdoZW4gR1RFU1RfSEFTX1BUSFJFQUQgaXMKKy8vIHRydWUu
CisjIGluY2x1ZGUgPHB0aHJlYWQuaD4gIC8vIE5PTElOVAorCisvLyBGb3IgdGltZXNwZWMgYW5k
IG5hbm9zbGVlcCwgdXNlZCBiZWxvdy4KKyMgaW5jbHVkZSA8dGltZS5oPiAgLy8gTk9MSU5UCisj
ZW5kaWYKKworLy8gRGV0ZXJtaW5lcyBpZiBoYXNoX21hcC9oYXNoX3NldCBhcmUgYXZhaWxhYmxl
LgorLy8gT25seSB1c2VkIGZvciB0ZXN0aW5nIGFnYWluc3QgdGhvc2UgY29udGFpbmVycy4KKyNp
ZiAhZGVmaW5lZChHVEVTVF9IQVNfSEFTSF9NQVBfKQorIyBpZiBkZWZpbmVkKF9NU0NfVkVSKSAm
JiAoX01TQ19WRVIgPCAxOTAwKQorIyAgZGVmaW5lIEdURVNUX0hBU19IQVNIX01BUF8gMSAgLy8g
SW5kaWNhdGVzIHRoYXQgaGFzaF9tYXAgaXMgYXZhaWxhYmxlLgorIyAgZGVmaW5lIEdURVNUX0hB
U19IQVNIX1NFVF8gMSAgLy8gSW5kaWNhdGVzIHRoYXQgaGFzaF9zZXQgaXMgYXZhaWxhYmxlLgor
IyBlbmRpZiAgLy8gX01TQ19WRVIKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfSEFTX0hBU0hf
TUFQXykKKwogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIEdvb2dsZSBUZXN0IGNhbiB1c2UgdHIxL3R1
cGxlLiAgWW91IGNhbiBkZWZpbmUKIC8vIHRoaXMgbWFjcm8gdG8gMCB0byBwcmV2ZW50IEdvb2ds
ZSBUZXN0IGZyb20gdXNpbmcgdHVwbGUgKGFueQogLy8gZmVhdHVyZSBkZXBlbmRpbmcgb24gdHVw
bGUgd2l0aCBiZSBkaXNhYmxlZCBpbiB0aGlzIG1vZGUpLgogI2lmbmRlZiBHVEVTVF9IQVNfVFIx
X1RVUExFCisjIGlmIEdURVNUX09TX0xJTlVYX0FORFJPSUQgJiYgZGVmaW5lZChfU1RMUE9SVF9N
QUpPUikKKy8vIFNUTHBvcnQsIHByb3ZpZGVkIHdpdGggdGhlIEFuZHJvaWQgTkRLLCBoYXMgbmVp
dGhlciA8dHIxL3R1cGxlPiBvciA8dHVwbGU+LgorIyAgZGVmaW5lIEdURVNUX0hBU19UUjFfVFVQ
TEUgMAorIyBlbGlmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxOTEwKQorLy8g
UHJldmVudCBgd2FybmluZyBDNDk5NjogJ3N0ZDo6dHIxJzogd2FybmluZyBTVEw0MDAyOgorLy8g
VGhlIG5vbi1TdGFuZGFyZCBzdGQ6OnRyMSBuYW1lc3BhY2UgYW5kIFRSMS1vbmx5IG1hY2hpbmVy
eQorLy8gYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgUkVNT1ZFRC5gCisjICBkZWZpbmUgR1RF
U1RfSEFTX1RSMV9UVVBMRSAwCisjIGVsaWYgR1RFU1RfTEFOR19DWFgxMSAmJiBkZWZpbmVkKF9M
SUJDUFBfVkVSU0lPTikKKy8vIGxpYmMrKyBkb2Vzbid0IHN1cHBvcnQgVFIxLgorIyAgZGVmaW5l
IEdURVNUX0hBU19UUjFfVFVQTEUgMAorIyBlbHNlCiAvLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1
cyBub3QgdG8gZG8gaXQsIHNvIHdlIGFzc3VtZSBpdCdzIE9LLgotI2RlZmluZSBHVEVTVF9IQVNf
VFIxX1RVUExFIDEKKyMgIGRlZmluZSBHVEVTVF9IQVNfVFIxX1RVUExFIDEKKyMgZW5kaWYKICNl
bmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRQogCiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgR29v
Z2xlIFRlc3QncyBvd24gdHIxIHR1cGxlIGltcGxlbWVudGF0aW9uCiAvLyBzaG91bGQgYmUgdXNl
ZC4KICNpZm5kZWYgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUKKy8vIFdlIHVzZSBvdXIgb3duIHR1
cGxlIGltcGxlbWVudGF0aW9uIG9uIFN5bWJpYW4uCisjIGlmIEdURVNUX09TX1NZTUJJQU4KKyMg
IGRlZmluZSBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSAxCisjIGVsc2UKIC8vIFRoZSB1c2VyIGRp
ZG4ndCB0ZWxsIHVzLCBzbyB3ZSBuZWVkIHRvIGZpZ3VyZSBpdCBvdXQuCiAKIC8vIFdlIHVzZSBv
dXIgb3duIFRSMSB0dXBsZSBpZiB3ZSBhcmVuJ3Qgc3VyZSB0aGUgdXNlciBoYXMgYW4KLS8vIGlt
cGxlbWVudGF0aW9uIG9mIGl0IGFscmVhZHkuICBBdCB0aGlzIHRpbWUsIEdDQyA0LjAuMCsgYW5k
IE1TVkMKLS8vIDIwMTAgYXJlIHRoZSBvbmx5IG1haW5zdHJlYW0gY29tcGlsZXJzIHRoYXQgY29t
ZSB3aXRoIGEgVFIxIHR1cGxlCi0vLyBpbXBsZW1lbnRhdGlvbi4gIE5WSURJQSdzIENVREEgTlZD
QyBjb21waWxlciBwcmV0ZW5kcyB0byBiZSBHQ0MgYnkKLS8vIGRlZmluaW5nIF9fR05VQ19fIGFu
ZCBmcmllbmRzLCBidXQgY2Fubm90IGNvbXBpbGUgR0NDJ3MgdHVwbGUKLS8vIGltcGxlbWVudGF0
aW9uLiAgTVNWQyAyMDA4ICg5LjApIHByb3ZpZGVzIFRSMSB0dXBsZSBpbiBhIDMyMyBNQgotLy8g
RmVhdHVyZSBQYWNrIGRvd25sb2FkLCB3aGljaCB3ZSBjYW5ub3QgYXNzdW1lIHRoZSB1c2VyIGhh
cy4KLSNpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19DVURBQ0NfXykgJiYgKEdU
RVNUX0dDQ19WRVJfID49IDQwMDAwKSkgXAotICAgIHx8IF9NU0NfVkVSID49IDE2MDAKLSNkZWZp
bmUgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgMAotI2Vsc2UKLSNkZWZpbmUgR1RFU1RfVVNFX09X
Tl9UUjFfVFVQTEUgMQotI2VuZGlmCi0KKy8vIGltcGxlbWVudGF0aW9uIG9mIGl0IGFscmVhZHku
ICBBdCB0aGlzIHRpbWUsIGxpYnN0ZGMrKyA0LjAuMCsgYW5kCisvLyBNU1ZDIDIwMTAgYXJlIHRo
ZSBvbmx5IG1haW5zdHJlYW0gc3RhbmRhcmQgbGlicmFyaWVzIHRoYXQgY29tZQorLy8gd2l0aCBh
IFRSMSB0dXBsZSBpbXBsZW1lbnRhdGlvbi4gIE5WSURJQSdzIENVREEgTlZDQyBjb21waWxlcgor
Ly8gcHJldGVuZHMgdG8gYmUgR0NDIGJ5IGRlZmluaW5nIF9fR05VQ19fIGFuZCBmcmllbmRzLCBi
dXQgY2Fubm90CisvLyBjb21waWxlIEdDQydzIHR1cGxlIGltcGxlbWVudGF0aW9uLiAgTVNWQyAy
MDA4ICg5LjApIHByb3ZpZGVzIFRSMQorLy8gdHVwbGUgaW4gYSAzMjMgTUIgRmVhdHVyZSBQYWNr
IGRvd25sb2FkLCB3aGljaCB3ZSBjYW5ub3QgYXNzdW1lIHRoZQorLy8gdXNlciBoYXMuICBRTlgn
cyBRQ0MgY29tcGlsZXIgaXMgYSBtb2RpZmllZCBHQ0MgYnV0IGl0IGRvZXNuJ3QKKy8vIHN1cHBv
cnQgVFIxIHR1cGxlLiAgbGliYysrIG9ubHkgcHJvdmlkZXMgc3RkOjp0dXBsZSwgaW4gQysrMTEg
bW9kZSwKKy8vIGFuZCBpdCBjYW4gYmUgdXNlZCB3aXRoIHNvbWUgY29tcGlsZXJzIHRoYXQgZGVm
aW5lIF9fR05VQ19fLgorIyBpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19DVURB
Q0NfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMDAwKSBcCisgICAgICAmJiAhR1RFU1RfT1Nf
UU5YICYmICFkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikpIFwKKyAgICAgIHx8IChfTVNDX1ZFUiA+
PSAxNjAwICYmIF9NU0NfVkVSIDwgMTkwMCkKKyMgIGRlZmluZSBHVEVTVF9FTlZfSEFTX1RSMV9U
VVBMRV8gMQorIyBlbmRpZgorCisvLyBDKysxMSBzcGVjaWZpZXMgdGhhdCA8dHVwbGU+IHByb3Zp
ZGVzIHN0ZDo6dHVwbGUuIFVzZSB0aGF0IGlmIGd0ZXN0IGlzIHVzZWQKKy8vIGluIEMrKzExIG1v
ZGUgYW5kIGxpYnN0ZGMrKyBpc24ndCB2ZXJ5IG9sZCAoYmluYXJpZXMgdGFyZ2V0aW5nIE9TIFgg
MTAuNgorLy8gY2FuIGJ1aWxkIHdpdGggY2xhbmcgYnV0IG5lZWQgdG8gdXNlIGdjYzQuMidzIGxp
YnN0ZGMrKykuCisjIGlmIEdURVNUX0xBTkdfQ1hYMTEgJiYgKCFkZWZpbmVkKF9fR0xJQkNYWF9f
KSB8fCBfX0dMSUJDWFhfXyA+IDIwMTEwMzI1KQorIyAgZGVmaW5lIEdURVNUX0VOVl9IQVNfU1RE
X1RVUExFXyAxCisjIGVuZGlmCisKKyMgaWYgR1RFU1RfRU5WX0hBU19UUjFfVFVQTEVfIHx8IEdU
RVNUX0VOVl9IQVNfU1REX1RVUExFXworIyAgZGVmaW5lIEdURVNUX1VTRV9PV05fVFIxX1RVUExF
IDAKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX1VTRV9PV05fVFIxX1RVUExFIDEKKyMgZW5kaWYK
KyMgZW5kaWYgIC8vIEdURVNUX09TX1NZTUJJQU4KICNlbmRpZiAgLy8gR1RFU1RfVVNFX09XTl9U
UjFfVFVQTEUKIAotLy8gVG8gYXZvaWQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZXZlcnl3aGVy
ZSwgd2UgbWFrZSBpdAotLy8gZ3Rlc3QtcG9ydC5oJ3MgcmVzcG9uc2liaWxpdHkgdG8gI2luY2x1
ZGUgdGhlIGhlYWRlciBpbXBsZW1lbnRpbmcKLS8vIHRyMS90dXBsZS4KKy8vIFRvIGF2b2lkIGNv
bmRpdGlvbmFsIGNvbXBpbGF0aW9uIHdlIG1ha2UgaXQgZ3Rlc3QtcG9ydC5oJ3MgcmVzcG9uc2li
aWxpdHkKKy8vIHRvICNpbmNsdWRlIHRoZSBoZWFkZXIgaW1wbGVtZW50aW5nIHR1cGxlLgorI2lm
IEdURVNUX0hBU19TVERfVFVQTEVfCisjIGluY2x1ZGUgPHR1cGxlPiAgLy8gSVdZVSBwcmFnbWE6
IGV4cG9ydAorIyBkZWZpbmUgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXyA6OnN0ZAorI2VuZGlmICAv
LyBHVEVTVF9IQVNfU1REX1RVUExFXworCisvLyBXZSBpbmNsdWRlIHRyMTo6dHVwbGUgZXZlbiBp
ZiBzdGQ6OnR1cGxlIGlzIGF2YWlsYWJsZSB0byBkZWZpbmUgcHJpbnRlcnMgZm9yCisvLyB0aGVt
LgogI2lmIEdURVNUX0hBU19UUjFfVFVQTEUKKyMgaWZuZGVmIEdURVNUX1RVUExFX05BTUVTUEFD
RV8KKyMgIGRlZmluZSBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfIDo6c3RkOjp0cjEKKyMgZW5kaWYg
IC8vIEdURVNUX1RVUExFX05BTUVTUEFDRV8KIAotI2lmIEdURVNUX1VTRV9PV05fVFIxX1RVUExF
Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaD4KLSNlbGlmIEdURVNUX09T
X1NZTUJJQU4KKyMgaWYgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUKKyMgIGluY2x1ZGUgImd0ZXN0
L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0ICAvLyBOT0xJ
TlQKKyMgZWxpZiBHVEVTVF9PU19TWU1CSUFOCiAKIC8vIE9uIFN5bWJpYW4sIEJPT1NUX0hBU19U
UjFfVFVQTEUgY2F1c2VzIEJvb3N0J3MgVFIxIHR1cGxlIGxpYnJhcnkgdG8KIC8vIHVzZSBTVExw
b3J0J3MgdHVwbGUgaW1wbGVtZW50YXRpb24sIHdoaWNoIHVuZm9ydHVuYXRlbHkgZG9lc24ndAog
Ly8gd29yayBhcyB0aGUgY29weSBvZiBTVExwb3J0IGRpc3RyaWJ1dGVkIHdpdGggU3ltYmlhbiBp
cyBpbmNvbXBsZXRlLgogLy8gQnkgbWFraW5nIHN1cmUgQk9PU1RfSEFTX1RSMV9UVVBMRSBpcyB1
bmRlZmluZWQsIHdlIGZvcmNlIEJvb3N0IHRvCiAvLyB1c2UgaXRzIG93biB0dXBsZSBpbXBsZW1l
bnRhdGlvbi4KLSNpZmRlZiBCT09TVF9IQVNfVFIxX1RVUExFCi0jdW5kZWYgQk9PU1RfSEFTX1RS
MV9UVVBMRQotI2VuZGlmICAvLyBCT09TVF9IQVNfVFIxX1RVUExFCisjICBpZmRlZiBCT09TVF9I
QVNfVFIxX1RVUExFCisjICAgdW5kZWYgQk9PU1RfSEFTX1RSMV9UVVBMRQorIyAgZW5kaWYgIC8v
IEJPT1NUX0hBU19UUjFfVFVQTEUKIAogLy8gVGhpcyBwcmV2ZW50cyA8Ym9vc3QvdHIxL2RldGFp
bC9jb25maWcuaHBwPiwgd2hpY2ggZGVmaW5lcwogLy8gQk9PU1RfSEFTX1RSMV9UVVBMRSwgZnJv
bSBiZWluZyAjaW5jbHVkZWQgYnkgQm9vc3QncyA8dHVwbGU+LgotI2RlZmluZSBCT09TVF9UUjFf
REVUQUlMX0NPTkZJR19IUFBfSU5DTFVERUQKLSNpbmNsdWRlIDx0dXBsZT4KKyMgIGRlZmluZSBC
T09TVF9UUjFfREVUQUlMX0NPTkZJR19IUFBfSU5DTFVERUQKKyMgIGluY2x1ZGUgPHR1cGxlPiAg
Ly8gSVdZVSBwcmFnbWE6IGV4cG9ydCAgLy8gTk9MSU5UCiAKLSNlbGlmIGRlZmluZWQoX19HTlVD
X18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSA0MDAwMCkKKyMgZWxpZiBkZWZpbmVkKF9fR05VQ19f
KSAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0gNDAwMDApCiAvLyBHQ0MgNC4wKyBpbXBsZW1lbnRzIHRy
MS90dXBsZSBpbiB0aGUgPHRyMS90dXBsZT4gaGVhZGVyLiAgVGhpcyBkb2VzCiAvLyBub3QgY29u
Zm9ybSB0byB0aGUgVFIxIHNwZWMsIHdoaWNoIHJlcXVpcmVzIHRoZSBoZWFkZXIgdG8gYmUgPHR1
cGxlPi4KIAotI2lmICFHVEVTVF9IQVNfUlRUSSAmJiBHVEVTVF9HQ0NfVkVSXyA8IDQwMzAyCisj
ICBpZiAhR1RFU1RfSEFTX1JUVEkgJiYgR1RFU1RfR0NDX1ZFUl8gPCA0MDMwMgogLy8gVW50aWwg
dmVyc2lvbiA0LjMuMiwgZ2NjIGhhcyBhIGJ1ZyB0aGF0IGNhdXNlcyA8dHIxL2Z1bmN0aW9uYWw+
LAogLy8gd2hpY2ggaXMgI2luY2x1ZGVkIGJ5IDx0cjEvdHVwbGU+LCB0byBub3QgY29tcGlsZSB3
aGVuIFJUVEkgaXMKIC8vIGRpc2FibGVkLiAgX1RSMV9GVU5DVElPTkFMIGlzIHRoZSBoZWFkZXIg
Z3VhcmQgZm9yCi0vLyA8dHIxL2Z1bmN0aW9uYWw+LiAgSGVuY2UgdGhlIGZvbGxvd2luZyAjZGVm
aW5lIGlzIGEgaGFjayB0byBwcmV2ZW50CisvLyA8dHIxL2Z1bmN0aW9uYWw+LiAgSGVuY2UgdGhl
IGZvbGxvd2luZyAjZGVmaW5lIGlzIHVzZWQgdG8gcHJldmVudAogLy8gPHRyMS9mdW5jdGlvbmFs
PiBmcm9tIGJlaW5nIGluY2x1ZGVkLgotI2RlZmluZSBfVFIxX0ZVTkNUSU9OQUwgMQotI2luY2x1
ZGUgPHRyMS90dXBsZT4KLSN1bmRlZiBfVFIxX0ZVTkNUSU9OQUwgIC8vIEFsbG93cyB0aGUgdXNl
ciB0byAjaW5jbHVkZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gPHRyMS9mdW5jdGlvbmFs
PiBpZiBoZSBjaG9vc2VzIHRvLgotI2Vsc2UKLSNpbmNsdWRlIDx0cjEvdHVwbGU+ICAvLyBOT0xJ
TlQKLSNlbmRpZiAgLy8gIUdURVNUX0hBU19SVFRJICYmIEdURVNUX0dDQ19WRVJfIDwgNDAzMDIK
LQotI2Vsc2UKLS8vIElmIHRoZSBjb21waWxlciBpcyBub3QgR0NDIDQuMCssIHdlIGFzc3VtZSB0
aGUgdXNlciBpcyB1c2luZyBhCi0vLyBzcGVjLWNvbmZvcm1pbmcgVFIxIGltcGxlbWVudGF0aW9u
LgotI2luY2x1ZGUgPHR1cGxlPiAgLy8gTk9MSU5UCi0jZW5kaWYgIC8vIEdURVNUX1VTRV9PV05f
VFIxX1RVUExFCisjICAgZGVmaW5lIF9UUjFfRlVOQ1RJT05BTCAxCisjICAgaW5jbHVkZSA8dHIx
L3R1cGxlPgorIyAgIHVuZGVmIF9UUjFfRlVOQ1RJT05BTCAgLy8gQWxsb3dzIHRoZSB1c2VyIHRv
ICNpbmNsdWRlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyA8dHIxL2Z1bmN0aW9uYWw+IGlm
IHRoZXkgY2hvb3NlIHRvLgorIyAgZWxzZQorIyAgIGluY2x1ZGUgPHRyMS90dXBsZT4gIC8vIE5P
TElOVAorIyAgZW5kaWYgIC8vICFHVEVTVF9IQVNfUlRUSSAmJiBHVEVTVF9HQ0NfVkVSXyA8IDQw
MzAyCisKKy8vIFZTIDIwMTAgbm93IGhhcyB0cjEgc3VwcG9ydC4KKyMgZWxpZiBfTVNDX1ZFUiA+
PSAxNjAwCisjICBpbmNsdWRlIDx0dXBsZT4gIC8vIElXWVUgcHJhZ21hOiBleHBvcnQgIC8vIE5P
TElOVAorCisjIGVsc2UgIC8vIEdURVNUX1VTRV9PV05fVFIxX1RVUExFCisjICBpbmNsdWRlIDx0
cjEvdHVwbGU+ICAvLyBJV1lVIHByYWdtYTogZXhwb3J0ICAvLyBOT0xJTlQKKyMgZW5kaWYgIC8v
IEdURVNUX1VTRV9PV05fVFIxX1RVUExFCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBM
RQogCkBAIC00ODEsNTkgKzc4Niw4MCBAQAogI2lmbmRlZiBHVEVTVF9IQVNfQ0xPTkUKIC8vIFRo
ZSB1c2VyIGRpZG4ndCB0ZWxsIHVzLCBzbyB3ZSBuZWVkIHRvIGZpZ3VyZSBpdCBvdXQuCiAKLSNp
ZiBHVEVTVF9PU19MSU5VWCAmJiAhZGVmaW5lZChfX2lhNjRfXykKLSNkZWZpbmUgR1RFU1RfSEFT
X0NMT05FIDEKLSNlbHNlCi0jZGVmaW5lIEdURVNUX0hBU19DTE9ORSAwCi0jZW5kaWYgIC8vIEdU
RVNUX09TX0xJTlVYICYmICFkZWZpbmVkKF9faWE2NF9fKQorIyBpZiBHVEVTVF9PU19MSU5VWCAm
JiAhZGVmaW5lZChfX2lhNjRfXykKKyMgIGlmIEdURVNUX09TX0xJTlVYX0FORFJPSUQKKy8vIE9u
IEFuZHJvaWQsIGNsb25lKCkgYmVjYW1lIGF2YWlsYWJsZSBhdCBkaWZmZXJlbnQgQVBJIGxldmVs
cyBmb3IgZWFjaCAzMi1iaXQKKy8vIGFyY2hpdGVjdHVyZS4KKyMgICAgaWYgZGVmaW5lZChfX0xQ
NjRfXykgfHwgXAorICAgICAgICAoZGVmaW5lZChfX2FybV9fKSAmJiBfX0FORFJPSURfQVBJX18g
Pj0gOSkgfHwgXAorICAgICAgICAoZGVmaW5lZChfX21pcHNfXykgJiYgX19BTkRST0lEX0FQSV9f
ID49IDEyKSB8fCBcCisgICAgICAgIChkZWZpbmVkKF9faTM4Nl9fKSAmJiBfX0FORFJPSURfQVBJ
X18gPj0gMTcpCisjICAgICBkZWZpbmUgR1RFU1RfSEFTX0NMT05FIDEKKyMgICAgZWxzZQorIyAg
ICAgZGVmaW5lIEdURVNUX0hBU19DTE9ORSAwCisjICAgIGVuZGlmCisjICBlbHNlCisjICAgZGVm
aW5lIEdURVNUX0hBU19DTE9ORSAxCisjICBlbmRpZgorIyBlbHNlCisjICBkZWZpbmUgR1RFU1Rf
SEFTX0NMT05FIDAKKyMgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYICYmICFkZWZpbmVkKF9faWE2
NF9fKQogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORQogCiAvLyBEZXRlcm1pbmVzIHdoZXRo
ZXIgdG8gc3VwcG9ydCBzdHJlYW0gcmVkaXJlY3Rpb24uIFRoaXMgaXMgdXNlZCB0byB0ZXN0CiAv
LyBvdXRwdXQgY29ycmVjdG5lc3MgYW5kIHRvIGltcGxlbWVudCBkZWF0aCB0ZXN0cy4KLSNpZiAh
R1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZTUJJQU4KLSNkZWZpbmUgR1RF
U1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8gMQotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUgJiYgIUdURVNUX09TX1NZTUJJQU4KKyNpZm5kZWYgR1RFU1RfSEFTX1NUUkVBTV9S
RURJUkVDVElPTgorLy8gQnkgZGVmYXVsdCwgd2UgYXNzdW1lIHRoYXQgc3RyZWFtIHJlZGlyZWN0
aW9uIGlzIHN1cHBvcnRlZCBvbiBhbGwKKy8vIHBsYXRmb3JtcyBleGNlcHQga25vd24gbW9iaWxl
IG9uZXMuCisjIGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNUX09TX1NZTUJJQU4g
fHwgXAorICAgIEdURVNUX09TX1dJTkRPV1NfUEhPTkUgfHwgR1RFU1RfT1NfV0lORE9XU19SVAor
IyAgZGVmaW5lIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04gMAorIyBlbHNlCisjICBkZWZp
bmUgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTiAxCisjIGVuZGlmICAvLyAhR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZTUJJQU4KKyNlbmRpZiAgLy8gR1RFU1RfSEFT
X1NUUkVBTV9SRURJUkVDVElPTgogCiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc3VwcG9ydCBk
ZWF0aCB0ZXN0cy4KIC8vIEdvb2dsZSBUZXN0IGRvZXMgbm90IHN1cHBvcnQgZGVhdGggdGVzdHMg
Zm9yIFZDIDcuMSBhbmQgZWFybGllciBhcwogLy8gYWJvcnQoKSBpbiBhIFZDIDcuMSBhcHBsaWNh
dGlvbiBjb21waWxlZCBhcyBHVUkgaW4gZGVidWcgY29uZmlnCiAvLyBwb3BzIHVwIGEgZGlhbG9n
IHdpbmRvdyB0aGF0IGNhbm5vdCBiZSBzdXBwcmVzc2VkIHByb2dyYW1tYXRpY2FsbHkuCi0jaWYg
KEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX0ZSRUVCU0QgfHwgR1RFU1RfT1NfSFVSRCB8fCBc
Ci0gICAgIEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19DWUdXSU4gfHwgR1RFU1RfT1NfU09MQVJJ
UyB8fCBcCi0gICAgIChHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1AgJiYgX01TQ19WRVIgPj0gMTQw
MCkgfHwgXAotICAgICBHVEVTVF9PU19XSU5ET1dTX01JTkdXIHx8IEdURVNUX09TX0FJWCkKLSNk
ZWZpbmUgR1RFU1RfSEFTX0RFQVRIX1RFU1QgMQotI2luY2x1ZGUgPHZlY3Rvcj4gIC8vIE5PTElO
VAorI2lmIChHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19DWUdXSU4gfHwgR1RFU1RfT1NfU09M
QVJJUyB8fCAgIFwKKyAgICAgKEdURVNUX09TX01BQyAmJiAhR1RFU1RfT1NfSU9TKSB8fCAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgIChHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1AgJiYg
X01TQ19WRVIgPj0gMTQwMCkgfHwgICAgICAgICAgXAorICAgICBHVEVTVF9PU19XSU5ET1dTX01J
TkdXIHx8IEdURVNUX09TX0FJWCB8fCBHVEVTVF9PU19IUFVYIHx8IFwKKyAgICAgR1RFU1RfT1Nf
T1BFTkJTRCB8fCBHVEVTVF9PU19RTlggfHwgR1RFU1RfT1NfRlJFRUJTRCB8fCBcCisgICAgIEdU
RVNUX09TX05FVEJTRCB8fCBHVEVTVF9PU19GVUNIU0lBKQorIyBkZWZpbmUgR1RFU1RfSEFTX0RF
QVRIX1RFU1QgMQogI2VuZGlmCiAKLS8vIFdlIGRvbid0IHN1cHBvcnQgTVNWQyA3LjEgd2l0aCBl
eGNlcHRpb25zIGRpc2FibGVkIG5vdy4gIFRoZXJlZm9yZQotLy8gYWxsIHRoZSBjb21waWxlcnMg
d2UgY2FyZSBhYm91dCBhcmUgYWRlcXVhdGUgZm9yIHN1cHBvcnRpbmcKLS8vIHZhbHVlLXBhcmFt
ZXRlcml6ZWQgdGVzdHMuCi0jZGVmaW5lIEdURVNUX0hBU19QQVJBTV9URVNUIDEKLQogLy8gRGV0
ZXJtaW5lcyB3aGV0aGVyIHRvIHN1cHBvcnQgdHlwZS1kcml2ZW4gdGVzdHMuCiAKIC8vIFR5cGVk
IHRlc3RzIG5lZWQgPHR5cGVpbmZvPiBhbmQgdmFyaWFkaWMgbWFjcm9zLCB3aGljaCBHQ0MsIFZD
KysgOC4wLAotLy8gU3VuIFBybyBDQywgYW5kIElCTSBWaXN1YWwgQWdlIHN1cHBvcnQuCisvLyBT
dW4gUHJvIENDLCBJQk0gVmlzdWFsIEFnZSwgYW5kIEhQIGFDQyBzdXBwb3J0LgogI2lmIGRlZmlu
ZWQoX19HTlVDX18pIHx8IChfTVNDX1ZFUiA+PSAxNDAwKSB8fCBkZWZpbmVkKF9fU1VOUFJPX0ND
KSB8fCBcCi0gICAgZGVmaW5lZChfX0lCTUNQUF9fKQotI2RlZmluZSBHVEVTVF9IQVNfVFlQRURf
VEVTVCAxCi0jZGVmaW5lIEdURVNUX0hBU19UWVBFRF9URVNUX1AgMQorICAgIGRlZmluZWQoX19J
Qk1DUFBfXykgfHwgZGVmaW5lZChfX0hQX2FDQykKKyMgZGVmaW5lIEdURVNUX0hBU19UWVBFRF9U
RVNUIDEKKyMgZGVmaW5lIEdURVNUX0hBU19UWVBFRF9URVNUX1AgMQogI2VuZGlmCiAKIC8vIERl
dGVybWluZXMgd2hldGhlciB0byBzdXBwb3J0IENvbWJpbmUoKS4gVGhpcyBvbmx5IG1ha2VzIHNl
bnNlIHdoZW4KIC8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQuICBUaGUg
aW1wbGVtZW50YXRpb24gZG9lc24ndAogLy8gd29yayBvbiBTdW4gU3R1ZGlvIHNpbmNlIGl0IGRv
ZXNuJ3QgdW5kZXJzdGFuZCB0ZW1wbGF0ZWQgY29udmVyc2lvbgogLy8gb3BlcmF0b3JzLgotI2lm
IEdURVNUX0hBU19QQVJBTV9URVNUICYmIEdURVNUX0hBU19UUjFfVFVQTEUgJiYgIWRlZmluZWQo
X19TVU5QUk9fQ0MpCi0jZGVmaW5lIEdURVNUX0hBU19DT01CSU5FIDEKKyNpZiAoR1RFU1RfSEFT
X1RSMV9UVVBMRSB8fCBHVEVTVF9IQVNfU1REX1RVUExFXykgJiYgIWRlZmluZWQoX19TVU5QUk9f
Q0MpCisjIGRlZmluZSBHVEVTVF9IQVNfQ09NQklORSAxCiAjZW5kaWYKIAogLy8gRGV0ZXJtaW5l
cyB3aGV0aGVyIHRoZSBzeXN0ZW0gY29tcGlsZXIgdXNlcyBVVEYtMTYgZm9yIGVuY29kaW5nIHdp
ZGUgc3RyaW5ncy4KICNkZWZpbmUgR1RFU1RfV0lERV9TVFJJTkdfVVNFU19VVEYxNl8gXAogICAg
IChHVEVTVF9PU19XSU5ET1dTIHx8IEdURVNUX09TX0NZR1dJTiB8fCBHVEVTVF9PU19TWU1CSUFO
IHx8IEdURVNUX09TX0FJWCkKIAorLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRlc3QgcmVzdWx0cyBj
YW4gYmUgc3RyZWFtZWQgdG8gYSBzb2NrZXQuCisjaWYgR1RFU1RfT1NfTElOVVgKKyMgZGVmaW5l
IEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18gMQorI2VuZGlmCisKIC8vIERlZmluZXMgc29tZSB1
dGlsaXR5IG1hY3Jvcy4KIAogLy8gVGhlIEdOVSBjb21waWxlciBlbWl0cyBhIHdhcm5pbmcgaWYg
bmVzdGVkICJpZiIgc3RhdGVtZW50cyBhcmUgZm9sbG93ZWQgYnkKQEAgLTU0NSw5ICs4NzEsOSBA
QAogLy8KIC8vIFRoZSAic3dpdGNoICgwKSBjYXNlIDA6IiBpZGlvbSBpcyB1c2VkIHRvIHN1cHBy
ZXNzIHRoaXMuCiAjaWZkZWYgX19JTlRFTF9DT01QSUxFUgotI2RlZmluZSBHVEVTVF9BTUJJR1VP
VVNfRUxTRV9CTE9DS0VSXworIyBkZWZpbmUgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8K
ICNlbHNlCi0jZGVmaW5lIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIHN3aXRjaCAoMCkg
Y2FzZSAwOiAgLy8gTk9MSU5UCisjIGRlZmluZSBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VS
XyBzd2l0Y2ggKDApIGNhc2UgMDogZGVmYXVsdDogIC8vIE5PTElOVAogI2VuZGlmCiAKIC8vIFVz
ZSB0aGlzIGFubm90YXRpb24gYXQgdGhlIGVuZCBvZiBhIHN0cnVjdC9jbGFzcyBkZWZpbml0aW9u
IHRvCkBAIC01NjIsMjAgKzg4OCw0OSBAQAogLy8gQWxzbyB1c2UgaXQgYWZ0ZXIgYSB2YXJpYWJs
ZSBvciBwYXJhbWV0ZXIgZGVjbGFyYXRpb24gdG8gdGVsbCB0aGUKIC8vIGNvbXBpbGVyIHRoZSB2
YXJpYWJsZS9wYXJhbWV0ZXIgZG9lcyBub3QgaGF2ZSB0byBiZSB1c2VkLgogI2lmIGRlZmluZWQo
X19HTlVDX18pICYmICFkZWZpbmVkKENPTVBJTEVSX0lDQykKLSNkZWZpbmUgR1RFU1RfQVRUUklC
VVRFX1VOVVNFRF8gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCisjIGRlZmluZSBHVEVTVF9BVFRS
SUJVVEVfVU5VU0VEXyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKKyNlbGlmIGRlZmluZWQoX19j
bGFuZ19fKQorIyBpZiBfX2hhc19hdHRyaWJ1dGUodW51c2VkKQorIyAgZGVmaW5lIEdURVNUX0FU
VFJJQlVURV9VTlVTRURfIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQorIyBlbmRpZgorI2VuZGlm
CisjaWZuZGVmIEdURVNUX0FUVFJJQlVURV9VTlVTRURfCisjIGRlZmluZSBHVEVTVF9BVFRSSUJV
VEVfVU5VU0VEXworI2VuZGlmCisKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisjIGRlZmluZSBHVEVT
VF9DWFgxMV9FUVVBTFNfREVMRVRFXyA9IGRlbGV0ZQorI2Vsc2UgIC8vIEdURVNUX0xBTkdfQ1hY
MTEKKyMgZGVmaW5lIEdURVNUX0NYWDExX0VRVUFMU19ERUxFVEVfCisjZW5kaWYgIC8vIEdURVNU
X0xBTkdfQ1hYMTEKKworLy8gVXNlIHRoaXMgYW5ub3RhdGlvbiBiZWZvcmUgYSBmdW5jdGlvbiB0
aGF0IHRha2VzIGEgcHJpbnRmIGZvcm1hdCBzdHJpbmcuCisjaWYgKGRlZmluZWQoX19HTlVDX18p
IHx8IGRlZmluZWQoX19jbGFuZ19fKSkgJiYgIWRlZmluZWQoQ09NUElMRVJfSUNDKQorIyBpZiBk
ZWZpbmVkKF9fTUlOR1dfUFJJTlRGX0ZPUk1BVCkKKy8vIE1pbkdXIGhhcyB0d28gZGlmZmVyZW50
IHByaW50ZiBpbXBsZW1lbnRhdGlvbnMuIEVuc3VyZSB0aGUgZm9ybWF0IG1hY3JvCisvLyBtYXRj
aGVzIHRoZSBzZWxlY3RlZCBpbXBsZW1lbnRhdGlvbi4gU2VlCisvLyBodHRwczovL3NvdXJjZWZv
cmdlLm5ldC9wL21pbmd3LXc2NC93aWtpMi9nbnUlMjBwcmludGYvLgorIyAgZGVmaW5lIEdURVNU
X0FUVFJJQlVURV9QUklOVEZfKHN0cmluZ19pbmRleCwgZmlyc3RfdG9fY2hlY2spIFwKKyAgICAg
ICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fTUlOR1dfUFJJTlRGX0ZPUk1BVCwgc3RyaW5n
X2luZGV4LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF90b19jaGVj
aykpKQorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX1BSSU5URl8oc3RyaW5nX2lu
ZGV4LCBmaXJzdF90b19jaGVjaykgXAorICAgICAgIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18o
X19wcmludGZfXywgc3RyaW5nX2luZGV4LCBmaXJzdF90b19jaGVjaykpKQorIyBlbmRpZgogI2Vs
c2UKLSNkZWZpbmUgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8KKyMgZGVmaW5lIEdURVNUX0FUVFJJ
QlVURV9QUklOVEZfKHN0cmluZ19pbmRleCwgZmlyc3RfdG9fY2hlY2spCiAjZW5kaWYKIAorCiAv
LyBBIG1hY3JvIHRvIGRpc2FsbG93IG9wZXJhdG9yPQogLy8gVGhpcyBzaG91bGQgYmUgdXNlZCBp
biB0aGUgcHJpdmF0ZTogZGVjbGFyYXRpb25zIGZvciBhIGNsYXNzLgotI2RlZmluZSBHVEVTVF9E
SVNBTExPV19BU1NJR05fKHR5cGUpXAotICB2b2lkIG9wZXJhdG9yPSh0eXBlIGNvbnN0ICYpCisj
ZGVmaW5lIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8odHlwZSkgXAorICB2b2lkIG9wZXJhdG9yPSh0
eXBlIGNvbnN0ICYpIEdURVNUX0NYWDExX0VRVUFMU19ERUxFVEVfCiAKIC8vIEEgbWFjcm8gdG8g
ZGlzYWxsb3cgY29weSBjb25zdHJ1Y3RvciBhbmQgb3BlcmF0b3I9CiAvLyBUaGlzIHNob3VsZCBi
ZSB1c2VkIGluIHRoZSBwcml2YXRlOiBkZWNsYXJhdGlvbnMgZm9yIGEgY2xhc3MuCi0jZGVmaW5l
IEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8odHlwZSlcCi0gIHR5cGUodHlwZSBjb25z
dCAmKTtcCisjZGVmaW5lIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8odHlwZSkgXAor
ICB0eXBlKHR5cGUgY29uc3QgJikgR1RFU1RfQ1hYMTFfRVFVQUxTX0RFTEVURV87IFwKICAgR1RF
U1RfRElTQUxMT1dfQVNTSUdOXyh0eXBlKQogCiAvLyBUZWxsIHRoZSBjb21waWxlciB0byB3YXJu
IGFib3V0IHVudXNlZCByZXR1cm4gdmFsdWVzIGZvciBmdW5jdGlvbnMgZGVjbGFyZWQKQEAgLTU4
NCw3MiArOTM5LDI1MCBAQAogLy8KIC8vICAgU3Byb2NrZXQqIEFsbG9jYXRlU3Byb2NrZXQoKSBH
VEVTVF9NVVNUX1VTRV9SRVNVTFRfOwogI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChHVEVTVF9H
Q0NfVkVSXyA+PSAzMDQwMCkgJiYgIWRlZmluZWQoQ09NUElMRVJfSUNDKQotI2RlZmluZSBHVEVT
VF9NVVNUX1VTRV9SRVNVTFRfIF9fYXR0cmlidXRlX18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKQor
IyBkZWZpbmUgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXyBfX2F0dHJpYnV0ZV9fICgod2Fybl91bnVz
ZWRfcmVzdWx0KSkKICNlbHNlCi0jZGVmaW5lIEdURVNUX01VU1RfVVNFX1JFU1VMVF8KKyMgZGVm
aW5lIEdURVNUX01VU1RfVVNFX1JFU1VMVF8KICNlbmRpZiAgLy8gX19HTlVDX18gJiYgKEdURVNU
X0dDQ19WRVJfID49IDMwNDAwKSAmJiAhQ09NUElMRVJfSUNDCiAKKy8vIE1TIEMrKyBjb21waWxl
ciBlbWl0cyB3YXJuaW5nIHdoZW4gYSBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbXBpbGUg
dGltZQorLy8gY29uc3RhbnQuIEluIHNvbWUgY29udGV4dHMgdGhpcyB3YXJuaW5nIGlzIGZhbHNl
IHBvc2l0aXZlIGFuZCBuZWVkcyB0byBiZQorLy8gc3VwcHJlc3NlZC4gVXNlIHRoZSBmb2xsb3dp
bmcgdHdvIG1hY3JvcyBpbiBzdWNoIGNhc2VzOgorLy8KKy8vIEdURVNUX0lOVEVOVElPTkFMX0NP
TlNUX0NPTkRfUFVTSF8oKQorLy8gd2hpbGUgKHRydWUpIHsKKy8vIEdURVNUX0lOVEVOVElPTkFM
X0NPTlNUX0NPTkRfUE9QXygpCisvLyB9CisjIGRlZmluZSBHVEVTVF9JTlRFTlRJT05BTF9DT05T
VF9DT05EX1BVU0hfKCkgXAorICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQx
MjcpCisjIGRlZmluZSBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BPUF8oKSBcCisgICAg
R1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCisKIC8vIERldGVybWluZSB3aGV0aGVy
IHRoZSBjb21waWxlciBzdXBwb3J0cyBNaWNyb3NvZnQncyBTdHJ1Y3R1cmVkIEV4Y2VwdGlvbgog
Ly8gSGFuZGxpbmcuICBUaGlzIGlzIHN1cHBvcnRlZCBieSBzZXZlcmFsIFdpbmRvd3MgY29tcGls
ZXJzIGJ1dCBnZW5lcmFsbHkKIC8vIGRvZXMgbm90IGV4aXN0IG9uIGFueSBvdGhlciBzeXN0ZW0u
CiAjaWZuZGVmIEdURVNUX0hBU19TRUgKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzLCBzbyB3
ZSBuZWVkIHRvIGZpZ3VyZSBpdCBvdXQuCiAKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZp
bmVkKF9fQk9STEFORENfXykKKyMgaWYgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX0JP
UkxBTkRDX18pCiAvLyBUaGVzZSB0d28gY29tcGlsZXJzIGFyZSBrbm93biB0byBzdXBwb3J0IFNF
SC4KLSNkZWZpbmUgR1RFU1RfSEFTX1NFSCAxCi0jZWxzZQorIyAgZGVmaW5lIEdURVNUX0hBU19T
RUggMQorIyBlbHNlCiAvLyBBc3N1bWUgbm8gU0VILgotI2RlZmluZSBHVEVTVF9IQVNfU0VIIDAK
LSNlbmRpZgorIyAgZGVmaW5lIEdURVNUX0hBU19TRUggMAorIyBlbmRpZgogCi0jZW5kaWYgIC8v
IEdURVNUX0hBU19TRUgKKyNkZWZpbmUgR1RFU1RfSVNfVEhSRUFEU0FGRSBcCisgICAgKEdURVNU
X0hBU19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMXyBcCisgICAgIHx8IChHVEVTVF9PU19XSU5ET1dT
ICYmICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUKSBcCisg
ICAgIHx8IEdURVNUX0hBU19QVEhSRUFEKQogCi0jaWZkZWYgX01TQ19WRVIKKyNlbmRpZiAgLy8g
R1RFU1RfSEFTX1NFSAogCi0jaWYgR1RFU1RfTElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZCi0jZGVm
aW5lIEdURVNUX0FQSV8gX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jZWxpZiBHVEVTVF9DUkVBVEVf
U0hBUkVEX0xJQlJBUlkKLSNkZWZpbmUgR1RFU1RfQVBJXyBfX2RlY2xzcGVjKGRsbGV4cG9ydCkK
LSNlbmRpZgorLy8gR1RFU1RfQVBJXyBxdWFsaWZpZXMgYWxsIHN5bWJvbHMgdGhhdCBtdXN0IGJl
IGV4cG9ydGVkLiBUaGUgZGVmaW5pdGlvbnMgYmVsb3cKKy8vIGFyZSBndWFyZGVkIGJ5ICNpZm5k
ZWYgdG8gZ2l2ZSBlbWJlZGRlcnMgYSBjaGFuY2UgdG8gZGVmaW5lIEdURVNUX0FQSV8gaW4KKy8v
IGd0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmgKKyNpZm5kZWYgR1RFU1RfQVBJXwog
CisjaWZkZWYgX01TQ19WRVIKKyMgaWYgR1RFU1RfTElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZCisj
ICBkZWZpbmUgR1RFU1RfQVBJXyBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyMgZWxpZiBHVEVTVF9D
UkVBVEVfU0hBUkVEX0xJQlJBUlkKKyMgIGRlZmluZSBHVEVTVF9BUElfIF9fZGVjbHNwZWMoZGxs
ZXhwb3J0KQorIyBlbmRpZgorI2VsaWYgX19HTlVDX18gPj0gNCB8fCBkZWZpbmVkKF9fY2xhbmdf
XykKKyMgZGVmaW5lIEdURVNUX0FQSV8gX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1
bHQiKSkpCiAjZW5kaWYgIC8vIF9NU0NfVkVSCiAKKyNlbmRpZiAgLy8gR1RFU1RfQVBJXworCiAj
aWZuZGVmIEdURVNUX0FQSV8KLSNkZWZpbmUgR1RFU1RfQVBJXworIyBkZWZpbmUgR1RFU1RfQVBJ
XworI2VuZGlmICAvLyBHVEVTVF9BUElfCisKKyNpZm5kZWYgR1RFU1RfREVGQVVMVF9ERUFUSF9U
RVNUX1NUWUxFCisjIGRlZmluZSBHVEVTVF9ERUZBVUxUX0RFQVRIX1RFU1RfU1RZTEUgICJmYXN0
IgorI2VuZGlmICAvLyBHVEVTVF9ERUZBVUxUX0RFQVRIX1RFU1RfU1RZTEUKKworI2lmZGVmIF9f
R05VQ19fCisvLyBBc2sgdGhlIGNvbXBpbGVyIHRvIG5ldmVyIGlubGluZSBhIGdpdmVuIGZ1bmN0
aW9uLgorIyBkZWZpbmUgR1RFU1RfTk9fSU5MSU5FXyBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkp
CisjZWxzZQorIyBkZWZpbmUgR1RFU1RfTk9fSU5MSU5FXwogI2VuZGlmCiAKKy8vIF9MSUJDUFBf
VkVSU0lPTiBpcyBkZWZpbmVkIGJ5IHRoZSBsaWJjKysgbGlicmFyeSBmcm9tIHRoZSBMTFZNIHBy
b2plY3QuCisjaWYgIWRlZmluZWQoR1RFU1RfSEFTX0NYWEFCSV9IXykKKyMgaWYgZGVmaW5lZChf
X0dMSUJDWFhfXykgfHwgKGRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKSAmJiAhZGVmaW5lZChfTVND
X1ZFUikpCisjICBkZWZpbmUgR1RFU1RfSEFTX0NYWEFCSV9IXyAxCisjIGVsc2UKKyMgIGRlZmlu
ZSBHVEVTVF9IQVNfQ1hYQUJJX0hfIDAKKyMgZW5kaWYKKyNlbmRpZgorCisvLyBBIGZ1bmN0aW9u
IGxldmVsIGF0dHJpYnV0ZSB0byBkaXNhYmxlIGNoZWNraW5nIGZvciB1c2Ugb2YgdW5pbml0aWFs
aXplZAorLy8gbWVtb3J5IHdoZW4gYnVpbHQgd2l0aCBNZW1vcnlTYW5pdGl6ZXIuCisjaWYgZGVm
aW5lZChfX2NsYW5nX18pCisjIGlmIF9faGFzX2ZlYXR1cmUobWVtb3J5X3Nhbml0aXplcikKKyMg
IGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfTUVNT1JZXyBcCisgICAgICAgX19h
dHRyaWJ1dGVfXygobm9fc2FuaXRpemVfbWVtb3J5KSkKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNU
X0FUVFJJQlVURV9OT19TQU5JVElaRV9NRU1PUllfCisjIGVuZGlmICAvLyBfX2hhc19mZWF0dXJl
KG1lbW9yeV9zYW5pdGl6ZXIpCisjZWxzZQorIyBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NB
TklUSVpFX01FTU9SWV8KKyNlbmRpZiAgLy8gX19jbGFuZ19fCisKKy8vIEEgZnVuY3Rpb24gbGV2
ZWwgYXR0cmlidXRlIHRvIGRpc2FibGUgQWRkcmVzc1Nhbml0aXplciBpbnN0cnVtZW50YXRpb24u
CisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisjIGlmIF9faGFzX2ZlYXR1cmUoYWRkcmVzc19zYW5p
dGl6ZXIpCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX0FERFJFU1NfIFwK
KyAgICAgICBfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV9hZGRyZXNzKSkKKyMgZWxzZQorIyAg
ZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTXworIyBlbmRpZiAgLy8g
X19oYXNfZmVhdHVyZShhZGRyZXNzX3Nhbml0aXplcikKKyNlbHNlCisjIGRlZmluZSBHVEVTVF9B
VFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTU18KKyNlbmRpZiAgLy8gX19jbGFuZ19fCisKKy8v
IEEgZnVuY3Rpb24gbGV2ZWwgYXR0cmlidXRlIHRvIGRpc2FibGUgVGhyZWFkU2FuaXRpemVyIGlu
c3RydW1lbnRhdGlvbi4KKyNpZiBkZWZpbmVkKF9fY2xhbmdfXykKKyMgaWYgX19oYXNfZmVhdHVy
ZSh0aHJlYWRfc2FuaXRpemVyKQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVEla
RV9USFJFQURfIFwKKyAgICAgICBfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV90aHJlYWQpKQor
IyBlbHNlCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KKyMg
ZW5kaWYgIC8vIF9faGFzX2ZlYXR1cmUodGhyZWFkX3Nhbml0aXplcikKKyNlbHNlCisjIGRlZmlu
ZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXworI2VuZGlmICAvLyBfX2NsYW5n
X18KKwogbmFtZXNwYWNlIHRlc3RpbmcgewogCiBjbGFzcyBNZXNzYWdlOwogCisjaWYgZGVmaW5l
ZChHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfKQorLy8gSW1wb3J0IHR1cGxlIGFuZCBmcmllbmRzIGlu
dG8gdGhlIDo6dGVzdGluZyBuYW1lc3BhY2UuCisvLyBJdCBpcyBwYXJ0IG9mIG91ciBpbnRlcmZh
Y2UsIGhhdmluZyB0aGVtIGluIDo6dGVzdGluZyBhbGxvd3MgdXMgdG8gY2hhbmdlCisvLyB0aGVp
ciB0eXBlcyBhcyBuZWVkZWQuCit1c2luZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjpnZXQ7Cit1
c2luZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjptYWtlX3R1cGxlOwordXNpbmcgR1RFU1RfVFVQ
TEVfTkFNRVNQQUNFXzo6dHVwbGU7Cit1c2luZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjp0dXBs
ZV9zaXplOwordXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXzo6dHVwbGVfZWxlbWVudDsKKyNl
bmRpZiAgLy8gZGVmaW5lZChHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfKQorCiBuYW1lc3BhY2UgaW50
ZXJuYWwgewogCi1jbGFzcyBTdHJpbmc7CisvLyBBIHNlY3JldCB0eXBlIHRoYXQgR29vZ2xlIFRl
c3QgdXNlcnMgZG9uJ3Qga25vdyBhYm91dC4gIEl0IGhhcyBubworLy8gZGVmaW5pdGlvbiBvbiBw
dXJwb3NlLiAgVGhlcmVmb3JlIGl0J3MgaW1wb3NzaWJsZSB0byBjcmVhdGUgYQorLy8gU2VjcmV0
IG9iamVjdCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LgorY2xhc3MgU2VjcmV0OwogCi1jbGFzcyBT
dHJTdHJlYW0gOiBwdWJsaWMgOjpzdGQ6OnN0cmluZ3N0cmVhbSB7Ci0gcHVibGljOgotICB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9Ci0gIHZvaWQqIG9w
ZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfQorLy8gVGhlIEdURVNU
X0NPTVBJTEVfQVNTRVJUXyBtYWNybyBjYW4gYmUgdXNlZCB0byB2ZXJpZnkgdGhhdCBhIGNvbXBp
bGUgdGltZQorLy8gZXhwcmVzc2lvbiBpcyB0cnVlLiBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIHVz
ZSBpdCB0byB2ZXJpZnkgdGhlCisvLyBzaXplIG9mIGEgc3RhdGljIGFycmF5OgorLy8KKy8vICAg
R1RFU1RfQ09NUElMRV9BU1NFUlRfKEdURVNUX0FSUkFZX1NJWkVfKG5hbWVzKSA9PSBOVU1fTkFN
RVMsCisvLyAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc19pbmNvcnJlY3Rfc2l6ZSk7Cisv
LworLy8gb3IgdG8gbWFrZSBzdXJlIGEgc3RydWN0IGlzIHNtYWxsZXIgdGhhbiBhIGNlcnRhaW4g
c2l6ZToKKy8vCisvLyAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhzaXplb2YoZm9vKSA8IDEyOCwg
Zm9vX3Rvb19sYXJnZSk7CisvLworLy8gVGhlIHNlY29uZCBhcmd1bWVudCB0byB0aGUgbWFjcm8g
aXMgdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlLiBJZgorLy8gdGhlIGV4cHJlc3Npb24gaXMgZmFs
c2UsIG1vc3QgY29tcGlsZXJzIHdpbGwgaXNzdWUgYSB3YXJuaW5nL2Vycm9yCisvLyBjb250YWlu
aW5nIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZS4KKworI2lmIEdURVNUX0xBTkdfQ1hYMTEKKyMg
ZGVmaW5lIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhleHByLCBtc2cpIHN0YXRpY19hc3NlcnQoZXhw
ciwgI21zZykKKyNlbHNlICAvLyAhR1RFU1RfTEFOR19DWFgxMQordGVtcGxhdGUgPGJvb2w+Cisg
IHN0cnVjdCBDb21waWxlQXNzZXJ0IHsKK307CiAKLSAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVf
dCBzaXplKSB7Ci0gICAgcmV0dXJuIG1hbGxvYyhzaXplKTsKLSAgfQorIyBkZWZpbmUgR1RFU1Rf
Q09NUElMRV9BU1NFUlRfKGV4cHIsIG1zZykgXAorICB0eXBlZGVmIDo6dGVzdGluZzo6aW50ZXJu
YWw6OkNvbXBpbGVBc3NlcnQ8KHN0YXRpY19jYXN0PGJvb2w+KGV4cHIpKT4gXAorICAgICAgbXNn
W3N0YXRpY19jYXN0PGJvb2w+KGV4cHIpID8gMSA6IC0xXSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VE
XworI2VuZGlmICAvLyAhR1RFU1RfTEFOR19DWFgxMQogCi0gIHZvaWQgb3BlcmF0b3IgZGVsZXRl
KHZvaWQqIHApIHsKLSAgICBmcmVlKHApOwotICB9CisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWxz
IG9mIEdURVNUX0NPTVBJTEVfQVNTRVJUXzoKKy8vCisvLyAoSW4gQysrMTEsIHdlIHNpbXBseSB1
c2Ugc3RhdGljX2Fzc2VydCBpbnN0ZWFkIG9mIHRoZSBmb2xsb3dpbmcpCisvLworLy8gLSBHVEVT
VF9DT01QSUxFX0FTU0VSVF8gd29ya3MgYnkgZGVmaW5pbmcgYW4gYXJyYXkgdHlwZSB0aGF0IGhh
cyAtMQorLy8gICBlbGVtZW50cyAoYW5kIHRodXMgaXMgaW52YWxpZCkgd2hlbiB0aGUgZXhwcmVz
c2lvbiBpcyBmYWxzZS4KKy8vCisvLyAtIFRoZSBzaW1wbGVyIGRlZmluaXRpb24KKy8vCisvLyAg
ICAjZGVmaW5lIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhleHByLCBtc2cpIHR5cGVkZWYgY2hhciBt
c2dbKGV4cHIpID8gMSA6IC0xXQorLy8KKy8vICAgZG9lcyBub3Qgd29yaywgYXMgZ2NjIHN1cHBv
cnRzIHZhcmlhYmxlLWxlbmd0aCBhcnJheXMgd2hvc2Ugc2l6ZXMKKy8vICAgYXJlIGRldGVybWlu
ZWQgYXQgcnVuLXRpbWUgKHRoaXMgaXMgZ2NjJ3MgZXh0ZW5zaW9uIGFuZCBub3QgcGFydAorLy8g
ICBvZiB0aGUgQysrIHN0YW5kYXJkKS4gIEFzIGEgcmVzdWx0LCBnY2MgZmFpbHMgdG8gcmVqZWN0
IHRoZQorLy8gICBmb2xsb3dpbmcgY29kZSB3aXRoIHRoZSBzaW1wbGUgZGVmaW5pdGlvbjoKKy8v
CisvLyAgICAgaW50IGZvbzsKKy8vICAgICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oZm9vLCBtc2cp
OyAvLyBub3Qgc3VwcG9zZWQgdG8gY29tcGlsZSBhcyBmb28gaXMKKy8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBub3QgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuCisv
LworLy8gLSBCeSB1c2luZyB0aGUgdHlwZSBDb21waWxlQXNzZXJ0PChib29sKGV4cHIpKT4sIHdl
IGVuc3VyZXMgdGhhdAorLy8gICBleHByIGlzIGEgY29tcGlsZS10aW1lIGNvbnN0YW50LiAgKFRl
bXBsYXRlIGFyZ3VtZW50cyBtdXN0IGJlCisvLyAgIGRldGVybWluZWQgYXQgY29tcGlsZS10aW1l
LikKKy8vCisvLyAtIFRoZSBvdXR0ZXIgcGFyZW50aGVzZXMgaW4gQ29tcGlsZUFzc2VydDwoYm9v
bChleHByKSk+IGFyZSBuZWNlc3NhcnkKKy8vICAgdG8gd29yayBhcm91bmQgYSBidWcgaW4gZ2Nj
IDMuNC40IGFuZCA0LjAuMS4gIElmIHdlIGhhZCB3cml0dGVuCisvLworLy8gICAgIENvbXBpbGVB
c3NlcnQ8Ym9vbChleHByKT4KKy8vCisvLyAgIGluc3RlYWQsIHRoZXNlIGNvbXBpbGVycyB3aWxs
IHJlZnVzZSB0byBjb21waWxlCisvLworLy8gICAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyg1ID4g
MCwgc29tZV9tZXNzYWdlKTsKKy8vCisvLyAgIChUaGV5IHNlZW0gdG8gdGhpbmsgdGhlICI+IiBp
biAiNSA+IDAiIG1hcmtzIHRoZSBlbmQgb2YgdGhlCisvLyAgIHRlbXBsYXRlIGFyZ3VtZW50IGxp
c3QuKQorLy8KKy8vIC0gVGhlIGFycmF5IHNpemUgaXMgKGJvb2woZXhwcikgPyAxIDogLTEpLCBp
bnN0ZWFkIG9mIHNpbXBseQorLy8KKy8vICAgICAoKGV4cHIpID8gMSA6IC0xKS4KKy8vCisvLyAg
IFRoaXMgaXMgdG8gYXZvaWQgcnVubmluZyBpbnRvIGEgYnVnIGluIE1TIFZDIDcuMSwgd2hpY2gK
Ky8vICAgY2F1c2VzICgoMC4wKSA/IDEgOiAtMSkgdG8gaW5jb3JyZWN0bHkgZXZhbHVhdGUgdG8g
MS4KIAotICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgewotICAgIHJldHVybiBt
YWxsb2Moc2l6ZSk7Ci0gIH0KKy8vIFN0YXRpY0Fzc2VydFR5cGVFcUhlbHBlciBpcyB1c2VkIGJ5
IFN0YXRpY0Fzc2VydFR5cGVFcSBkZWZpbmVkIGluIGd0ZXN0LmguCisvLworLy8gVGhpcyB0ZW1w
bGF0ZSBpcyBkZWNsYXJlZCwgYnV0IGludGVudGlvbmFsbHkgdW5kZWZpbmVkLgordGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3N0cnVjdCBTdGF0aWNBc3NlcnRUeXBlRXFIZWxw
ZXI7CiAKLSAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7Ci0gICAgZnJlZShwKTsK
LSAgfQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgU3RhdGljQXNzZXJ0VHlwZUVxSGVs
cGVyPFQsIFQ+IHsKKyAgZW51bSB7IHZhbHVlID0gdHJ1ZSB9OwogfTsKIAorLy8gU2FtZSBhcyBz
dGQ6OmlzX3NhbWU8Pi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorc3RydWN0
IElzU2FtZSB7CisgIGVudW0geyB2YWx1ZSA9IGZhbHNlIH07Cit9OwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitzdHJ1Y3QgSXNTYW1lPFQsIFQ+IHsKKyAgZW51bSB7IHZhbHVlID0gdHJ1ZSB9Owor
fTsKIAorLy8gRXZhbHVhdGVzIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gJ2FycmF5Jy4K
KyNkZWZpbmUgR1RFU1RfQVJSQVlfU0laRV8oYXJyYXkpIChzaXplb2YoYXJyYXkpIC8gc2l6ZW9m
KGFycmF5WzBdKSkKKworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCit0eXBlZGVmIDo6c3Ry
aW5nIHN0cmluZzsKKyNlbHNlCit0eXBlZGVmIDo6c3RkOjpzdHJpbmcgc3RyaW5nOworI2VuZGlm
ICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RS
SU5HCit0eXBlZGVmIDo6d3N0cmluZyB3c3RyaW5nOworI2VsaWYgR1RFU1RfSEFTX1NURF9XU1RS
SU5HCit0eXBlZGVmIDo6c3RkOjp3c3RyaW5nIHdzdHJpbmc7CisjZW5kaWYgIC8vIEdURVNUX0hB
U19HTE9CQUxfV1NUUklORwogCiAvLyBBIGhlbHBlciBmb3Igc3VwcHJlc3Npbmcgd2FybmluZ3Mg
b24gY29uc3RhbnQgY29uZGl0aW9uLiAgSXQganVzdAogLy8gcmV0dXJucyAnY29uZGl0aW9uJy4K
QEAgLTY4NSw2ICsxMjE4LDEyIEBAIGNsYXNzIHNjb3BlZF9wdHIgewogICAgICAgcHRyXyA9IHA7
CiAgICAgfQogICB9CisKKyAgZnJpZW5kIHZvaWQgc3dhcChzY29wZWRfcHRyJiBhLCBzY29wZWRf
cHRyJiBiKSB7CisgICAgdXNpbmcgc3RkOjpzd2FwOworICAgIHN3YXAoYS5wdHJfLCBiLnB0cl8p
OworICB9CisKICBwcml2YXRlOgogICBUKiBwdHJfOwogCkBAIC02OTMsNiArMTIzMiwxMCBAQCBj
bGFzcyBzY29wZWRfcHRyIHsKIAogLy8gRGVmaW5lcyBSRS4KIAorI2lmIEdURVNUX1VTRVNfUENS
RQorLy8gaWYgdXNlZCwgUENSRSBpcyBpbmplY3RlZCBieSBjdXN0b20vZ3Rlc3QtcG9ydC5oCisj
ZWxpZiBHVEVTVF9VU0VTX1BPU0lYX1JFIHx8IEdURVNUX1VTRVNfU0lNUExFX1JFCisKIC8vIEEg
c2ltcGxlIEMrKyB3cmFwcGVyIGZvciA8cmVnZXguaD4uICBJdCB1c2VzIHRoZSBQT1NJWCBFeHRl
bmRlZAogLy8gUmVndWxhciBFeHByZXNzaW9uIHN5bnRheC4KIGNsYXNzIEdURVNUX0FQSV8gUkUg
ewpAQCAtNzA0LDkgKzEyNDcsMTEgQEAgY2xhc3MgR1RFU1RfQVBJXyBSRSB7CiAgIC8vIENvbnN0
cnVjdHMgYW4gUkUgZnJvbSBhIHN0cmluZy4KICAgUkUoY29uc3QgOjpzdGQ6OnN0cmluZyYgcmVn
ZXgpIHsgSW5pdChyZWdleC5jX3N0cigpKTsgfSAgLy8gTk9MSU5UCiAKLSNpZiBHVEVTVF9IQVNf
R0xPQkFMX1NUUklORworIyBpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCiAgIFJFKGNvbnN0
IDo6c3RyaW5nJiByZWdleCkgeyBJbml0KHJlZ2V4LmNfc3RyKCkpOyB9ICAvLyBOT0xJTlQKLSNl
bmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKworIyBlbmRpZiAgLy8gR1RFU1RfSEFT
X0dMT0JBTF9TVFJJTkcKIAogICBSRShjb25zdCBjaGFyKiByZWdleCkgeyBJbml0KHJlZ2V4KTsg
fSAgLy8gTk9MSU5UCiAgIH5SRSgpOwpAQCAtNzE5LDcgKzEyNjQsNyBAQCBjbGFzcyBHVEVTVF9B
UElfIFJFIHsKICAgLy8gUGFydGlhbE1hdGNoKHN0ciwgcmUpIHJldHVybnMgdHJ1ZSBpZmYgcmVn
dWxhciBleHByZXNzaW9uIHJlCiAgIC8vIG1hdGNoZXMgYSBzdWJzdHJpbmcgb2Ygc3RyIChpbmNs
dWRpbmcgc3RyIGl0c2VsZikuCiAgIC8vCi0gIC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBtYWtl
IEZ1bGxNYXRjaCgpIGFuZCBQYXJ0aWFsTWF0Y2goKSB3b3JrCisgIC8vIEZJWE1FOiBtYWtlIEZ1
bGxNYXRjaCgpIGFuZCBQYXJ0aWFsTWF0Y2goKSB3b3JrCiAgIC8vIHdoZW4gc3RyIGNvbnRhaW5z
IE5VTCBjaGFyYWN0ZXJzLgogICBzdGF0aWMgYm9vbCBGdWxsTWF0Y2goY29uc3QgOjpzdGQ6OnN0
cmluZyYgc3RyLCBjb25zdCBSRSYgcmUpIHsKICAgICByZXR1cm4gRnVsbE1hdGNoKHN0ci5jX3N0
cigpLCByZSk7CkBAIC03MjgsMTQgKzEyNzMsMTYgQEAgY2xhc3MgR1RFU1RfQVBJXyBSRSB7CiAg
ICAgcmV0dXJuIFBhcnRpYWxNYXRjaChzdHIuY19zdHIoKSwgcmUpOwogICB9CiAKLSNpZiBHVEVT
VF9IQVNfR0xPQkFMX1NUUklORworIyBpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCiAgIHN0
YXRpYyBib29sIEZ1bGxNYXRjaChjb25zdCA6OnN0cmluZyYgc3RyLCBjb25zdCBSRSYgcmUpIHsK
ICAgICByZXR1cm4gRnVsbE1hdGNoKHN0ci5jX3N0cigpLCByZSk7CiAgIH0KICAgc3RhdGljIGJv
b2wgUGFydGlhbE1hdGNoKGNvbnN0IDo6c3RyaW5nJiBzdHIsIGNvbnN0IFJFJiByZSkgewogICAg
IHJldHVybiBQYXJ0aWFsTWF0Y2goc3RyLmNfc3RyKCksIHJlKTsKICAgfQotI2VuZGlmICAvLyBH
VEVTVF9IQVNfR0xPQkFMX1NUUklORworCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NU
UklORwogCiAgIHN0YXRpYyBib29sIEZ1bGxNYXRjaChjb25zdCBjaGFyKiBzdHIsIGNvbnN0IFJF
JiByZSk7CiAgIHN0YXRpYyBib29sIFBhcnRpYWxNYXRjaChjb25zdCBjaGFyKiBzdHIsIGNvbnN0
IFJFJiByZSk7CkBAIC03NDMsMjIgKzEyOTAsMzggQEAgY2xhc3MgR1RFU1RfQVBJXyBSRSB7CiAg
cHJpdmF0ZToKICAgdm9pZCBJbml0KGNvbnN0IGNoYXIqIHJlZ2V4KTsKIAotICAvLyBXZSB1c2Ug
YSBjb25zdCBjaGFyKiBpbnN0ZWFkIG9mIGEgc3RyaW5nLCBhcyBHb29nbGUgVGVzdCBtYXkgYmUg
dXNlZAotICAvLyB3aGVyZSBzdHJpbmcgaXMgbm90IGF2YWlsYWJsZS4gIFdlIGFsc28gZG8gbm90
IHVzZSBHb29nbGUgVGVzdCdzIG93bgotICAvLyBTdHJpbmcgdHlwZSBoZXJlLCBpbiBvcmRlciB0
byBzaW1wbGlmeSBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGUKLSAgLy8gZmlsZXMuCisgIC8vIFdl
IHVzZSBhIGNvbnN0IGNoYXIqIGluc3RlYWQgb2YgYW4gc3RkOjpzdHJpbmcsIGFzIEdvb2dsZSBU
ZXN0IHVzZWQgdG8gYmUKKyAgLy8gdXNlZCB3aGVyZSBzdGQ6OnN0cmluZyBpcyBub3QgYXZhaWxh
YmxlLiAgRklYTUU6IGNoYW5nZSB0bworICAvLyBzdGQ6OnN0cmluZy4KICAgY29uc3QgY2hhciog
cGF0dGVybl87CiAgIGJvb2wgaXNfdmFsaWRfOwotI2lmIEdURVNUX1VTRVNfUE9TSVhfUkUKKwor
IyBpZiBHVEVTVF9VU0VTX1BPU0lYX1JFCisKICAgcmVnZXhfdCBmdWxsX3JlZ2V4XzsgICAgIC8v
IEZvciBGdWxsTWF0Y2goKS4KICAgcmVnZXhfdCBwYXJ0aWFsX3JlZ2V4XzsgIC8vIEZvciBQYXJ0
aWFsTWF0Y2goKS4KLSNlbHNlICAvLyBHVEVTVF9VU0VTX1NJTVBMRV9SRQorCisjIGVsc2UgIC8v
IEdURVNUX1VTRVNfU0lNUExFX1JFCisKICAgY29uc3QgY2hhciogZnVsbF9wYXR0ZXJuXzsgIC8v
IEZvciBGdWxsTWF0Y2goKTsKLSNlbmRpZgorCisjIGVuZGlmCiAKICAgR1RFU1RfRElTQUxMT1df
QVNTSUdOXyhSRSk7CiB9OwogCisjZW5kaWYgIC8vIEdURVNUX1VTRVNfUENSRQorCisvLyBGb3Jt
YXRzIGEgc291cmNlIGZpbGUgcGF0aCBhbmQgYSBsaW5lIG51bWJlciBhcyB0aGV5IHdvdWxkIGFw
cGVhcgorLy8gaW4gYW4gZXJyb3IgbWVzc2FnZSBmcm9tIHRoZSBjb21waWxlciB1c2VkIHRvIGNv
bXBpbGUgdGhpcyBjb2RlLgorR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEZvcm1hdEZpbGVMb2Nh
dGlvbihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7CisKKy8vIEZvcm1hdHMgYSBmaWxlIGxv
Y2F0aW9uIGZvciBjb21waWxlci1pbmRlcGVuZGVudCBYTUwgb3V0cHV0LgorLy8gQWx0aG91Z2gg
dGhpcyBmdW5jdGlvbiBpcyBub3QgcGxhdGZvcm0gZGVwZW5kZW50LCB3ZSBwdXQgaXQgbmV4dCB0
bworLy8gRm9ybWF0RmlsZUxvY2F0aW9uIGluIG9yZGVyIHRvIGNvbnRyYXN0IHRoZSB0d28gZnVu
Y3Rpb25zLgorR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEZvcm1hdENvbXBpbGVySW5kZXBlbmRl
bnRGaWxlTG9jYXRpb24oY29uc3QgY2hhciogZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lKTsKKwogLy8g
RGVmaW5lcyBsb2dnaW5nIHV0aWxpdGllczoKIC8vICAgR1RFU1RfTE9HXyhzZXZlcml0eSkgLSBs
b2dzIG1lc3NhZ2VzIGF0IHRoZSBzcGVjaWZpZWQgc2V2ZXJpdHkgbGV2ZWwuIFRoZQogLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgaXRzZWxmIGlzIHN0cmVhbWVkIGludG8gdGhl
IG1hY3JvLgpAQCAtNzkwLDEzICsxMzUzLDE4IEBAIGNsYXNzIEdURVNUX0FQSV8gR1Rlc3RMb2cg
ewogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEdUZXN0TG9nKTsKIH07CiAKLSNk
ZWZpbmUgR1RFU1RfTE9HXyhzZXZlcml0eSkgXAorI2lmICFkZWZpbmVkKEdURVNUX0xPR18pCisK
KyMgZGVmaW5lIEdURVNUX0xPR18oc2V2ZXJpdHkpIFwKICAgICA6OnRlc3Rpbmc6OmludGVybmFs
OjpHVGVzdExvZyg6OnRlc3Rpbmc6OmludGVybmFsOjpHVEVTVF8jI3NldmVyaXR5LCBcCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKS5HZXRTdHJl
YW0oKQogCiBpbmxpbmUgdm9pZCBMb2dUb1N0ZGVycigpIHt9CiBpbmxpbmUgdm9pZCBGbHVzaElu
Zm9Mb2coKSB7IGZmbHVzaChOVUxMKTsgfQogCisjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0xP
R18pCisKKyNpZiAhZGVmaW5lZChHVEVTVF9DSEVDS18pCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRB
VElPTiAtIERPIE5PVCBVU0UuCiAvLwogLy8gR1RFU1RfQ0hFQ0tfIGlzIGFuIGFsbC1tb2RlIGFz
c2VydC4gSXQgYWJvcnRzIHRoZSBwcm9ncmFtIGlmIHRoZSBjb25kaXRpb24KQEAgLTgxMSwxMiAr
MTM3OSwxMyBAQCBpbmxpbmUgdm9pZCBGbHVzaEluZm9Mb2coKSB7IGZmbHVzaChOVUxMKTsgfQog
Ly8gICAgY29uZGl0aW9uIGl0c2VsZiwgcGx1cyBhZGRpdGlvbmFsIG1lc3NhZ2Ugc3RyZWFtZWQg
aW50byBpdCwgaWYgYW55LAogLy8gICAgYW5kIHRoZW4gaXQgYWJvcnRzIHRoZSBwcm9ncmFtLiBJ
dCBhYm9ydHMgdGhlIHByb2dyYW0gaXJyZXNwZWN0aXZlIG9mCiAvLyAgICB3aGV0aGVyIGl0IGlz
IGJ1aWx0IGluIHRoZSBkZWJ1ZyBtb2RlIG9yIG5vdC4KLSNkZWZpbmUgR1RFU1RfQ0hFQ0tfKGNv
bmRpdGlvbikgXAorIyBkZWZpbmUgR1RFU1RfQ0hFQ0tfKGNvbmRpdGlvbikgXAogICAgIEdURVNU
X0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKICAgICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
SXNUcnVlKGNvbmRpdGlvbikpIFwKICAgICAgIDsgXAogICAgIGVsc2UgXAogICAgICAgR1RFU1Rf
TE9HXyhGQVRBTCkgPDwgIkNvbmRpdGlvbiAiICNjb25kaXRpb24gIiBmYWlsZWQuICIKKyNlbmRp
ZiAgLy8gIWRlZmluZWQoR1RFU1RfQ0hFQ0tfKQogCiAvLyBBbiBhbGwtbW9kZSBhc3NlcnQgdG8g
dmVyaWZ5IHRoYXQgdGhlIGdpdmVuIFBPU0lYLXN0eWxlIGZ1bmN0aW9uCiAvLyBjYWxsIHJldHVy
bnMgMCAoaW5kaWNhdGluZyBzdWNjZXNzKS4gIEtub3duIGxpbWl0YXRpb246IHRoaXMKQEAgLTgy
OCw4ICsxMzk3LDEyNSBAQCBpbmxpbmUgdm9pZCBGbHVzaEluZm9Mb2coKSB7IGZmbHVzaChOVUxM
KTsgfQogICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICNwb3NpeF9jYWxsIDw8ICJmYWlsZWQgd2l0
aCBlcnJvciAiIFwKICAgICAgICAgICAgICAgICAgICAgICA8PCBndGVzdF9lcnJvcgogCisvLyBB
ZGRzIHJlZmVyZW5jZSB0byBhIHR5cGUgaWYgaXQgaXMgbm90IGEgcmVmZXJlbmNlIHR5cGUsCisv
LyBvdGhlcndpc2UgbGVhdmVzIGl0IHVuY2hhbmdlZC4gIFRoaXMgaXMgdGhlIHNhbWUgYXMKKy8v
IHRyMTo6YWRkX3JlZmVyZW5jZSwgd2hpY2ggaXMgbm90IHdpZGVseSBhdmFpbGFibGUgeWV0Lgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQWRkUmVmZXJlbmNlIHsgdHlwZWRlZiBUJiB0
eXBlOyB9OyAgLy8gTk9MSU5UCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBBZGRSZWZl
cmVuY2U8VCY+IHsgdHlwZWRlZiBUJiB0eXBlOyB9OyAgLy8gTk9MSU5UCisKKy8vIEEgaGFuZHkg
d3JhcHBlciBhcm91bmQgQWRkUmVmZXJlbmNlIHRoYXQgd29ya3Mgd2hlbiB0aGUgYXJndW1lbnQg
VAorLy8gZGVwZW5kcyBvbiB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgorI2RlZmluZSBHVEVTVF9BRERf
UkVGRVJFTkNFXyhUKSBcCisgICAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWRkUmVm
ZXJlbmNlPFQ+Ojp0eXBlCisKKy8vIFRyYW5zZm9ybXMgIlQiIGludG8gImNvbnN0IFQmIiBhY2Nv
cmRpbmcgdG8gc3RhbmRhcmQgcmVmZXJlbmNlIGNvbGxhcHNpbmcKKy8vIHJ1bGVzICh0aGlzIGlz
IG9ubHkgbmVlZGVkIGFzIGEgYmFja3BvcnQgZm9yIEMrKzk4IGNvbXBpbGVycyB0aGF0IGRvIG5v
dAorLy8gc3VwcG9ydCByZWZlcmVuY2UgY29sbGFwc2luZykuIFNwZWNpZmljYWxseSwgaXQgdHJh
bnNmb3JtczoKKy8vCisvLyAgIGNoYXIgICAgICAgICA9PT4gY29uc3QgY2hhciYKKy8vICAgY29u
c3QgY2hhciAgID09PiBjb25zdCBjaGFyJgorLy8gICBjaGFyJiAgICAgICAgPT0+IGNoYXImCisv
LyAgIGNvbnN0IGNoYXImICA9PT4gY29uc3QgY2hhciYKKy8vCisvLyBOb3RlIHRoYXQgdGhlIG5v
bi1jb25zdCByZWZlcmVuY2Ugd2lsbCBub3QgaGF2ZSAiY29uc3QiIGFkZGVkLiBUaGlzIGlzCisv
LyBzdGFuZGFyZCwgYW5kIG5lY2Vzc2FyeSBzbyB0aGF0ICJUIiBjYW4gYWx3YXlzIGJpbmQgdG8g
ImNvbnN0IFQmIi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IENvbnN0UmVmIHsgdHlw
ZWRlZiBjb25zdCBUJiB0eXBlOyB9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQ29u
c3RSZWY8VCY+IHsgdHlwZWRlZiBUJiB0eXBlOyB9OworCisvLyBUaGUgYXJndW1lbnQgVCBtdXN0
IGRlcGVuZCBvbiBzb21lIHRlbXBsYXRlIHBhcmFtZXRlcnMuCisjZGVmaW5lIEdURVNUX1JFRkVS
RU5DRV9UT19DT05TVF8oVCkgXAorICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpDb25z
dFJlZjxUPjo6dHlwZQorCisjaWYgR1RFU1RfSEFTX1NURF9NT1ZFXwordXNpbmcgc3RkOjpmb3J3
YXJkOwordXNpbmcgc3RkOjptb3ZlOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBS
dmFsdWVSZWYgeworICB0eXBlZGVmIFQmJiB0eXBlOworfTsKKyNlbHNlICAvLyBHVEVTVF9IQVNf
U1REX01PVkVfCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0IFQmIG1vdmUoY29uc3QgVCYg
dCkgeworICByZXR1cm4gdDsKK30KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorR1RFU1RfQUREX1JF
RkVSRU5DRV8oVCkgZm9yd2FyZChHVEVTVF9BRERfUkVGRVJFTkNFXyhUKSB0KSB7IHJldHVybiB0
OyB9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IFJ2YWx1ZVJlZiB7CisgIHR5cGVk
ZWYgY29uc3QgVCYgdHlwZTsKK307CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfTU9WRV8KKwog
Ly8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KIC8v
CisvLyBVc2UgSW1wbGljaXRDYXN0XyBhcyBhIHNhZmUgdmVyc2lvbiBvZiBzdGF0aWNfY2FzdCBm
b3IgdXBjYXN0aW5nIGluCisvLyB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4gY2FzdGluZyBhIEZv
byogdG8gYSBTdXBlcmNsYXNzT2ZGb28qIG9yIGEKKy8vIGNvbnN0IEZvbyopLiAgV2hlbiB5b3Ug
dXNlIEltcGxpY2l0Q2FzdF8sIHRoZSBjb21waWxlciBjaGVja3MgdGhhdAorLy8gdGhlIGNhc3Qg
aXMgc2FmZS4gIFN1Y2ggZXhwbGljaXQgSW1wbGljaXRDYXN0X3MgYXJlIG5lY2Vzc2FyeSBpbgor
Ly8gc3VycHJpc2luZ2x5IG1hbnkgc2l0dWF0aW9ucyB3aGVyZSBDKysgZGVtYW5kcyBhbiBleGFj
dCB0eXBlIG1hdGNoCisvLyBpbnN0ZWFkIG9mIGFuIGFyZ3VtZW50IHR5cGUgY29udmVydGFibGUg
dG8gYSB0YXJnZXQgdHlwZS4KKy8vCisvLyBUaGUgc3ludGF4IGZvciB1c2luZyBJbXBsaWNpdENh
c3RfIGlzIHRoZSBzYW1lIGFzIGZvciBzdGF0aWNfY2FzdDoKKy8vCisvLyAgIEltcGxpY2l0Q2Fz
dF88VG9UeXBlPihleHByKQorLy8KKy8vIEltcGxpY2l0Q2FzdF8gd291bGQgaGF2ZSBiZWVuIHBh
cnQgb2YgdGhlIEMrKyBzdGFuZGFyZCBsaWJyYXJ5LAorLy8gYnV0IHRoZSBwcm9wb3NhbCB3YXMg
c3VibWl0dGVkIHRvbyBsYXRlLiAgSXQgd2lsbCBwcm9iYWJseSBtYWtlCisvLyBpdHMgd2F5IGlu
dG8gdGhlIGxhbmd1YWdlIGluIHRoZSBmdXR1cmUuCisvLworLy8gVGhpcyByZWxhdGl2ZWx5IHVn
bHkgbmFtZSBpcyBpbnRlbnRpb25hbC4gSXQgcHJldmVudHMgY2xhc2hlcyB3aXRoCisvLyBzaW1p
bGFyIGZ1bmN0aW9ucyB1c2VycyBtYXkgaGF2ZSAoZS5nLiwgaW1wbGljaXRfY2FzdCkuIFRoZSBp
bnRlcm5hbAorLy8gbmFtZXNwYWNlIGFsb25lIGlzIG5vdCBlbm91Z2ggYmVjYXVzZSB0aGUgZnVu
Y3Rpb24gY2FuIGJlIGZvdW5kIGJ5IEFETC4KK3RlbXBsYXRlPHR5cGVuYW1lIFRvPgoraW5saW5l
IFRvIEltcGxpY2l0Q2FzdF8oVG8geCkgeyByZXR1cm4geDsgfQorCisvLyBXaGVuIHlvdSB1cGNh
c3QgKHRoYXQgaXMsIGNhc3QgYSBwb2ludGVyIGZyb20gdHlwZSBGb28gdG8gdHlwZQorLy8gU3Vw
ZXJjbGFzc09mRm9vKSwgaXQncyBmaW5lIHRvIHVzZSBJbXBsaWNpdENhc3RfPD4sIHNpbmNlIHVw
Y2FzdHMKKy8vIGFsd2F5cyBzdWNjZWVkLiAgV2hlbiB5b3UgZG93bmNhc3QgKHRoYXQgaXMsIGNh
c3QgYSBwb2ludGVyIGZyb20KKy8vIHR5cGUgRm9vIHRvIHR5cGUgU3ViY2xhc3NPZkZvbyksIHN0
YXRpY19jYXN0PD4gaXNuJ3Qgc2FmZSwgYmVjYXVzZQorLy8gaG93IGRvIHlvdSBrbm93IHRoZSBw
b2ludGVyIGlzIHJlYWxseSBvZiB0eXBlIFN1YmNsYXNzT2ZGb28/ICBJdAorLy8gY291bGQgYmUg
YSBiYXJlIEZvbywgb3Igb2YgdHlwZSBEaWZmZXJlbnRTdWJjbGFzc09mRm9vLiAgVGh1cywKKy8v
IHdoZW4geW91IGRvd25jYXN0LCB5b3Ugc2hvdWxkIHVzZSB0aGlzIG1hY3JvLiAgSW4gZGVidWcg
bW9kZSwgd2UKKy8vIHVzZSBkeW5hbWljX2Nhc3Q8PiB0byBkb3VibGUtY2hlY2sgdGhlIGRvd25j
YXN0IGlzIGxlZ2FsICh3ZSBkaWUKKy8vIGlmIGl0J3Mgbm90KS4gIEluIG5vcm1hbCBtb2RlLCB3
ZSBkbyB0aGUgZWZmaWNpZW50IHN0YXRpY19jYXN0PD4KKy8vIGluc3RlYWQuICBUaHVzLCBpdCdz
IGltcG9ydGFudCB0byB0ZXN0IGluIGRlYnVnIG1vZGUgdG8gbWFrZSBzdXJlCisvLyB0aGUgY2Fz
dCBpcyBsZWdhbCEKKy8vICAgIFRoaXMgaXMgdGhlIG9ubHkgcGxhY2UgaW4gdGhlIGNvZGUgd2Ug
c2hvdWxkIHVzZSBkeW5hbWljX2Nhc3Q8Pi4KKy8vIEluIHBhcnRpY3VsYXIsIHlvdSBTSE9VTERO
J1QgYmUgdXNpbmcgZHluYW1pY19jYXN0PD4gaW4gb3JkZXIgdG8KKy8vIGRvIFJUVEkgKGVnIGNv
ZGUgbGlrZSB0aGlzOgorLy8gICAgaWYgKGR5bmFtaWNfY2FzdDxTdWJjbGFzczE+KGZvbykpIEhh
bmRsZUFTdWJjbGFzczFPYmplY3QoZm9vKTsKKy8vICAgIGlmIChkeW5hbWljX2Nhc3Q8U3ViY2xh
c3MyPihmb28pKSBIYW5kbGVBU3ViY2xhc3MyT2JqZWN0KGZvbyk7CisvLyBZb3Ugc2hvdWxkIGRl
c2lnbiB0aGUgY29kZSBzb21lIG90aGVyIHdheSBub3QgdG8gbmVlZCB0aGlzLgorLy8KKy8vIFRo
aXMgcmVsYXRpdmVseSB1Z2x5IG5hbWUgaXMgaW50ZW50aW9uYWwuIEl0IHByZXZlbnRzIGNsYXNo
ZXMgd2l0aAorLy8gc2ltaWxhciBmdW5jdGlvbnMgdXNlcnMgbWF5IGhhdmUgKGUuZy4sIGRvd25f
Y2FzdCkuIFRoZSBpbnRlcm5hbAorLy8gbmFtZXNwYWNlIGFsb25lIGlzIG5vdCBlbm91Z2ggYmVj
YXVzZSB0aGUgZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGJ5IEFETC4KK3RlbXBsYXRlPHR5cGVuYW1l
IFRvLCB0eXBlbmFtZSBGcm9tPiAgLy8gdXNlIGxpa2UgdGhpczogRG93bkNhc3RfPFQqPihmb28p
OworaW5saW5lIFRvIERvd25DYXN0XyhGcm9tKiBmKSB7ICAvLyBzbyB3ZSBvbmx5IGFjY2VwdCBw
b2ludGVycworICAvLyBFbnN1cmVzIHRoYXQgVG8gaXMgYSBzdWItdHlwZSBvZiBGcm9tICouICBU
aGlzIHRlc3QgaXMgaGVyZSBvbmx5CisgIC8vIGZvciBjb21waWxlLXRpbWUgdHlwZSBjaGVja2lu
ZywgYW5kIGhhcyBubyBvdmVyaGVhZCBpbiBhbgorICAvLyBvcHRpbWl6ZWQgYnVpbGQgYXQgcnVu
LXRpbWUsIGFzIGl0IHdpbGwgYmUgb3B0aW1pemVkIGF3YXkKKyAgLy8gY29tcGxldGVseS4KKyAg
R1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QVVNIXygpCisgIGlmIChmYWxzZSkgeworICBH
VEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BPUF8oKQorICAgIGNvbnN0IFRvIHRvID0gTlVM
TDsKKyAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEZyb20qPih0byk7Cisg
IH0KKworI2lmIEdURVNUX0hBU19SVFRJCisgIC8vIFJUVEk6IGRlYnVnIG1vZGUgb25seSEKKyAg
R1RFU1RfQ0hFQ0tfKGYgPT0gTlVMTCB8fCBkeW5hbWljX2Nhc3Q8VG8+KGYpICE9IE5VTEwpOwor
I2VuZGlmCisgIHJldHVybiBzdGF0aWNfY2FzdDxUbz4oZik7Cit9CisKIC8vIERvd25jYXN0cyB0
aGUgcG9pbnRlciBvZiB0eXBlIEJhc2UgdG8gRGVyaXZlZC4KIC8vIERlcml2ZWQgbXVzdCBiZSBh
IHN1YmNsYXNzIG9mIEJhc2UuIFRoZSBwYXJhbWV0ZXIgTVVTVAogLy8gcG9pbnQgdG8gYSBjbGFz
cyBvZiB0eXBlIERlcml2ZWQsIG5vdCBhbnkgc3ViY2xhc3Mgb2YgaXQuCkBAIC04MzksMTMgKzE1
MjUsMTggQEAgdGVtcGxhdGUgPGNsYXNzIERlcml2ZWQsIGNsYXNzIEJhc2U+CiBEZXJpdmVkKiBD
aGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGUoQmFzZSogYmFzZSkgewogI2lmIEdURVNUX0hBU19S
VFRJCiAgIEdURVNUX0NIRUNLXyh0eXBlaWQoKmJhc2UpID09IHR5cGVpZChEZXJpdmVkKSk7Cisj
ZW5kaWYKKworI2lmIEdURVNUX0hBU19ET1dOQ0FTVF8KKyAgcmV0dXJuIDo6ZG93bl9jYXN0PERl
cml2ZWQqPihiYXNlKTsKKyNlbGlmIEdURVNUX0hBU19SVFRJCiAgIHJldHVybiBkeW5hbWljX2Nh
c3Q8RGVyaXZlZCo+KGJhc2UpOyAgLy8gTk9MSU5UCiAjZWxzZQogICByZXR1cm4gc3RhdGljX2Nh
c3Q8RGVyaXZlZCo+KGJhc2UpOyAgLy8gUG9vciBtYW4ncyBkb3duY2FzdC4KICNlbmRpZgogfQog
Ci0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNpZiBHVEVTVF9IQVNfU1RSRUFN
X1JFRElSRUNUSU9OCiAKIC8vIERlZmluZXMgdGhlIHN0ZGVyciBjYXB0dXJlcjoKIC8vICAgQ2Fw
dHVyZVN0ZG91dCAgICAgLSBzdGFydHMgY2FwdHVyaW5nIHN0ZG91dC4KQEAgLTg1NCwzMCArMTU0
NSwzOSBAQCBEZXJpdmVkKiBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGUoQmFzZSogYmFzZSkg
ewogLy8gICBHZXRDYXB0dXJlZFN0ZGVyciAtIHN0b3BzIGNhcHR1cmluZyBzdGRlcnIgYW5kIHJl
dHVybnMgdGhlIGNhcHR1cmVkIHN0cmluZy4KIC8vCiBHVEVTVF9BUElfIHZvaWQgQ2FwdHVyZVN0
ZG91dCgpOwotR1RFU1RfQVBJXyBTdHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKTsKK0dURVNUX0FQ
SV8gc3RkOjpzdHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKTsKIEdURVNUX0FQSV8gdm9pZCBDYXB0
dXJlU3RkZXJyKCk7Ci1HVEVTVF9BUElfIFN0cmluZyBHZXRDYXB0dXJlZFN0ZGVycigpOworR1RF
U1RfQVBJXyBzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0ZGVycigpOwogCi0jZW5kaWYgIC8vIEdU
RVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCisjZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1f
UkVESVJFQ1RJT04KKy8vIFJldHVybnMgdGhlIHNpemUgKGluIGJ5dGVzKSBvZiBhIGZpbGUuCitH
VEVTVF9BUElfIHNpemVfdCBHZXRGaWxlU2l6ZShGSUxFKiBmaWxlKTsKIAorLy8gUmVhZHMgdGhl
IGVudGlyZSBjb250ZW50IG9mIGEgZmlsZSBhcyBhIHN0cmluZy4KK0dURVNUX0FQSV8gc3RkOjpz
dHJpbmcgUmVhZEVudGlyZUZpbGUoRklMRSogZmlsZSk7CiAKLSNpZiBHVEVTVF9IQVNfREVBVEhf
VEVTVAorLy8gQWxsIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCitHVEVTVF9BUElfIHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiBHZXRBcmd2cygpOwogCi0vLyBBIGNvcHkgb2YgYWxsIGNvbW1hbmQg
bGluZSBhcmd1bWVudHMuICBTZXQgYnkgSW5pdEdvb2dsZVRlc3QoKS4KLWV4dGVybiA6OnN0ZDo6
dmVjdG9yPFN0cmluZz4gZ19hcmd2czsKKyNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogCi0vLyBH
VEVTVF9IQVNfREVBVEhfVEVTVCBpbXBsaWVzIHdlIGhhdmUgOjpzdGQ6OnN0cmluZy4KLWNvbnN0
IDo6c3RkOjp2ZWN0b3I8U3RyaW5nPiYgR2V0QXJndnMoKTsKK3N0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiBHZXRJbmplY3RhYmxlQXJndnMoKTsKKy8vIERlcHJlY2F0ZWQ6IHBhc3MgdGhlIGFyZ3Mg
dmVjdG9yIGJ5IHZhbHVlIGluc3RlYWQuCit2b2lkIFNldEluamVjdGFibGVBcmd2cyhjb25zdCBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIG5ld19hcmd2cyk7Cit2b2lkIFNldEluamVjdGFibGVB
cmd2cyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIG5ld19hcmd2cyk7CisjaWYgR1RF
U1RfSEFTX0dMT0JBTF9TVFJJTkcKK3ZvaWQgU2V0SW5qZWN0YWJsZUFyZ3ZzKGNvbnN0IHN0ZDo6
dmVjdG9yPCA6OnN0cmluZz4mIG5ld19hcmd2cyk7CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9C
QUxfU1RSSU5HCit2b2lkIENsZWFySW5qZWN0YWJsZUFyZ3ZzKCk7CiAKICNlbmRpZiAgLy8gR1RF
U1RfSEFTX0RFQVRIX1RFU1QKIAogLy8gRGVmaW5lcyBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZl
cy4KLQotI2lmIEdURVNUX0hBU19QVEhSRUFECi0KLS8vIFNsZWVwcyBmb3IgKHJvdWdobHkpIG4g
bWlsbGktc2Vjb25kcy4gIFRoaXMgZnVuY3Rpb24gaXMgb25seSBmb3IKLS8vIHRlc3RpbmcgR29v
Z2xlIFRlc3QncyBvd24gY29uc3RydWN0cy4gIERvbid0IHVzZSBpdCBpbiB1c2VyIHRlc3RzLAot
Ly8gZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FG
RQorIyBpZiBHVEVTVF9IQVNfUFRIUkVBRAorLy8gU2xlZXBzIGZvciAocm91Z2hseSkgbiBtaWxs
aXNlY29uZHMuICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZm9yIHRlc3RpbmcKKy8vIEdvb2dsZSBU
ZXN0J3Mgb3duIGNvbnN0cnVjdHMuICBEb24ndCB1c2UgaXQgaW4gdXNlciB0ZXN0cywgZWl0aGVy
CisvLyBkaXJlY3RseSBvciBpbmRpcmVjdGx5LgogaW5saW5lIHZvaWQgU2xlZXBNaWxsaXNlY29u
ZHMoaW50IG4pIHsKICAgY29uc3QgdGltZXNwZWMgdGltZSA9IHsKICAgICAwLCAgICAgICAgICAg
ICAgICAgIC8vIDAgc2Vjb25kcy4KQEAgLTg4NSw3ICsxNTg1LDEzIEBAIGlubGluZSB2b2lkIFNs
ZWVwTWlsbGlzZWNvbmRzKGludCBuKSB7CiAgIH07CiAgIG5hbm9zbGVlcCgmdGltZSwgTlVMTCk7
CiB9CisjIGVuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVBRAogCisjIGlmIEdURVNUX0hBU19OT1RJ
RklDQVRJT05fCisvLyBOb3RpZmljYXRpb24gaGFzIGFscmVhZHkgYmVlbiBpbXBvcnRlZCBpbnRv
IHRoZSBuYW1lc3BhY2UuCisvLyBOb3RoaW5nIHRvIGRvIGhlcmUuCisKKyMgZWxpZiBHVEVTVF9I
QVNfUFRIUkVBRAogLy8gQWxsb3dzIGEgY29udHJvbGxlciB0aHJlYWQgdG8gcGF1c2UgZXhlY3V0
aW9uIG9mIG5ld2x5IGNyZWF0ZWQKIC8vIHRocmVhZHMgdW50aWwgbm90aWZpZWQuICBJbnN0YW5j
ZXMgb2YgdGhpcyBjbGFzcyBtdXN0IGJlIGNyZWF0ZWQKIC8vIGFuZCBkZXN0cm95ZWQgaW4gdGhl
IGNvbnRyb2xsZXIgdGhyZWFkLgpAQCAtODk0LDI1ICsxNjAwLDk2IEBAIGlubGluZSB2b2lkIFNs
ZWVwTWlsbGlzZWNvbmRzKGludCBuKSB7CiAvLyB1c2UgaXQgaW4gdXNlciB0ZXN0cywgZWl0aGVy
IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCiBjbGFzcyBOb3RpZmljYXRpb24gewogIHB1YmxpYzoK
LSAgTm90aWZpY2F0aW9uKCkgOiBub3RpZmllZF8oZmFsc2UpIHt9CisgIE5vdGlmaWNhdGlvbigp
IDogbm90aWZpZWRfKGZhbHNlKSB7CisgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRo
cmVhZF9tdXRleF9pbml0KCZtdXRleF8sIE5VTEwpKTsKKyAgfQorICB+Tm90aWZpY2F0aW9uKCkg
eworICAgIHB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmbXV0ZXhfKTsKKyAgfQogCiAgIC8vIE5vdGlm
aWVzIGFsbCB0aHJlYWRzIGNyZWF0ZWQgd2l0aCB0aGlzIG5vdGlmaWNhdGlvbiB0byBzdGFydC4g
TXVzdAogICAvLyBiZSBjYWxsZWQgZnJvbSB0aGUgY29udHJvbGxlciB0aHJlYWQuCi0gIHZvaWQg
Tm90aWZ5KCkgeyBub3RpZmllZF8gPSB0cnVlOyB9CisgIHZvaWQgTm90aWZ5KCkgeworICAgIHB0
aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXhfKTsKKyAgICBub3RpZmllZF8gPSB0cnVlOworICAgIHB0
aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleF8pOworICB9CiAKICAgLy8gQmxvY2tzIHVudGlsIHRo
ZSBjb250cm9sbGVyIHRocmVhZCBub3RpZmllcy4gTXVzdCBiZSBjYWxsZWQgZnJvbSBhIHRlc3QK
ICAgLy8gdGhyZWFkLgogICB2b2lkIFdhaXRGb3JOb3RpZmljYXRpb24oKSB7Ci0gICAgd2hpbGUo
IW5vdGlmaWVkXykgeworICAgIGZvciAoOzspIHsKKyAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygm
bXV0ZXhfKTsKKyAgICAgIGNvbnN0IGJvb2wgbm90aWZpZWQgPSBub3RpZmllZF87CisgICAgICBw
dGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXhfKTsKKyAgICAgIGlmIChub3RpZmllZCkKKyAgICAg
ICAgYnJlYWs7CiAgICAgICBTbGVlcE1pbGxpc2Vjb25kcygxMCk7CiAgICAgfQogICB9CiAKICBw
cml2YXRlOgotICB2b2xhdGlsZSBib29sIG5vdGlmaWVkXzsKKyAgcHRocmVhZF9tdXRleF90IG11
dGV4XzsKKyAgYm9vbCBub3RpZmllZF87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOXyhOb3RpZmljYXRpb24pOworfTsKKworIyBlbGlmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdU
RVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQKKworR1RFU1RfQVBJ
XyB2b2lkIFNsZWVwTWlsbGlzZWNvbmRzKGludCBuKTsKKworLy8gUHJvdmlkZXMgbGVhay1zYWZl
IFdpbmRvd3Mga2VybmVsIGhhbmRsZSBvd25lcnNoaXAuCisvLyBVc2VkIGluIGRlYXRoIHRlc3Rz
IGFuZCBpbiB0aHJlYWRpbmcgc3VwcG9ydC4KK2NsYXNzIEdURVNUX0FQSV8gQXV0b0hhbmRsZSB7
CisgcHVibGljOgorICAvLyBBc3N1bWUgdGhhdCBXaW4zMiBIQU5ETEUgdHlwZSBpcyBlcXVpdmFs
ZW50IHRvIHZvaWQqLiBEb2luZyBzbyBhbGxvd3MgdXMgdG8KKyAgLy8gYXZvaWQgaW5jbHVkaW5n
IDx3aW5kb3dzLmg+IGluIHRoaXMgaGVhZGVyIGZpbGUuIEluY2x1ZGluZyA8d2luZG93cy5oPiBp
cworICAvLyB1bmRlc2lyYWJsZSBiZWNhdXNlIGl0IGRlZmluZXMgYSBsb3Qgb2Ygc3ltYm9scyBh
bmQgbWFjcm9zIHRoYXQgdGVuZCB0bworICAvLyBjb25mbGljdCB3aXRoIGNsaWVudCBjb2RlLiBU
aGlzIGFzc3VtcHRpb24gaXMgdmVyaWZpZWQgYnkKKyAgLy8gV2luZG93c1R5cGVzVGVzdC5IQU5E
TEVJc1ZvaWRTdGFyLgorICB0eXBlZGVmIHZvaWQqIEhhbmRsZTsKKyAgQXV0b0hhbmRsZSgpOwor
ICBleHBsaWNpdCBBdXRvSGFuZGxlKEhhbmRsZSBoYW5kbGUpOworCisgIH5BdXRvSGFuZGxlKCk7
CisKKyAgSGFuZGxlIEdldCgpIGNvbnN0OworICB2b2lkIFJlc2V0KCk7CisgIHZvaWQgUmVzZXQo
SGFuZGxlIGhhbmRsZSk7CisKKyBwcml2YXRlOgorICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBo
YW5kbGUgaXMgYSB2YWxpZCBoYW5kbGUgb2JqZWN0IHRoYXQgY2FuIGJlIGNsb3NlZC4KKyAgYm9v
bCBJc0Nsb3NlYWJsZSgpIGNvbnN0OworCisgIEhhbmRsZSBoYW5kbGVfOworCisgIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQXV0b0hhbmRsZSk7Cit9OworCisvLyBBbGxvd3MgYSBj
b250cm9sbGVyIHRocmVhZCB0byBwYXVzZSBleGVjdXRpb24gb2YgbmV3bHkgY3JlYXRlZAorLy8g
dGhyZWFkcyB1bnRpbCBub3RpZmllZC4gIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIG11c3QgYmUg
Y3JlYXRlZAorLy8gYW5kIGRlc3Ryb3llZCBpbiB0aGUgY29udHJvbGxlciB0aHJlYWQuCisvLwor
Ly8gVGhpcyBjbGFzcyBpcyBvbmx5IGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0J3Mgb3duIGNvbnN0
cnVjdHMuIERvIG5vdAorLy8gdXNlIGl0IGluIHVzZXIgdGVzdHMsIGVpdGhlciBkaXJlY3RseSBv
ciBpbmRpcmVjdGx5LgorY2xhc3MgR1RFU1RfQVBJXyBOb3RpZmljYXRpb24geworIHB1YmxpYzoK
KyAgTm90aWZpY2F0aW9uKCk7CisgIHZvaWQgTm90aWZ5KCk7CisgIHZvaWQgV2FpdEZvck5vdGlm
aWNhdGlvbigpOworCisgcHJpdmF0ZToKKyAgQXV0b0hhbmRsZSBldmVudF87CiAKICAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhOb3RpZmljYXRpb24pOwogfTsKKyMgZW5kaWYgIC8v
IEdURVNUX0hBU19OT1RJRklDQVRJT05fCisKKy8vIE9uIE1pbkdXLCB3ZSBjYW4gaGF2ZSBib3Ro
IEdURVNUX09TX1dJTkRPV1MgYW5kIEdURVNUX0hBU19QVEhSRUFECisvLyBkZWZpbmVkLCBidXQg
d2UgZG9uJ3Qgd2FudCB0byB1c2UgTWluR1cncyBwdGhyZWFkcyBpbXBsZW1lbnRhdGlvbiwgd2hp
Y2gKKy8vIGhhcyBjb25mb3JtYW5jZSBwcm9ibGVtcyB3aXRoIHNvbWUgdmVyc2lvbnMgb2YgdGhl
IFBPU0lYIHN0YW5kYXJkLgorIyBpZiBHVEVTVF9IQVNfUFRIUkVBRCAmJiAhR1RFU1RfT1NfV0lO
RE9XU19NSU5HVwogCiAvLyBBcyBhIEMtZnVuY3Rpb24sIFRocmVhZEZ1bmNXaXRoQ0xpbmthZ2Ug
Y2Fubm90IGJlIHRlbXBsYXRlZCBpdHNlbGYuCiAvLyBDb25zZXF1ZW50bHksIGl0IGNhbm5vdCBz
ZWxlY3QgYSBjb3JyZWN0IGluc3RhbnRpYXRpb24gb2YgVGhyZWFkV2l0aFBhcmFtCkBAIC05NTEs
MTAgKzE3MjgsOSBAQCBleHRlcm4gIkMiIGlubGluZSB2b2lkKiBUaHJlYWRGdW5jV2l0aENMaW5r
YWdlKHZvaWQqIHRocmVhZCkgewogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBUaHJlYWRX
aXRoUGFyYW0gOiBwdWJsaWMgVGhyZWFkV2l0aFBhcmFtQmFzZSB7CiAgcHVibGljOgotICB0eXBl
ZGVmIHZvaWQgKCpVc2VyVGhyZWFkRnVuYykoVCk7CisgIHR5cGVkZWYgdm9pZCBVc2VyVGhyZWFk
RnVuYyhUKTsKIAotICBUaHJlYWRXaXRoUGFyYW0oCi0gICAgICBVc2VyVGhyZWFkRnVuYyBmdW5j
LCBUIHBhcmFtLCBOb3RpZmljYXRpb24qIHRocmVhZF9jYW5fc3RhcnQpCisgIFRocmVhZFdpdGhQ
YXJhbShVc2VyVGhyZWFkRnVuYyogZnVuYywgVCBwYXJhbSwgTm90aWZpY2F0aW9uKiB0aHJlYWRf
Y2FuX3N0YXJ0KQogICAgICAgOiBmdW5jXyhmdW5jKSwKICAgICAgICAgcGFyYW1fKHBhcmFtKSwK
ICAgICAgICAgdGhyZWFkX2Nhbl9zdGFydF8odGhyZWFkX2Nhbl9zdGFydCksCkBAIC05ODEsNyAr
MTc1Nyw3IEBAIGNsYXNzIFRocmVhZFdpdGhQYXJhbSA6IHB1YmxpYyBUaHJlYWRXaXRoUGFyYW1C
YXNlIHsKICAgfQogCiAgcHJpdmF0ZToKLSAgY29uc3QgVXNlclRocmVhZEZ1bmMgZnVuY187ICAv
LyBVc2VyLXN1cHBsaWVkIHRocmVhZCBmdW5jdGlvbi4KKyAgVXNlclRocmVhZEZ1bmMqIGNvbnN0
IGZ1bmNfOyAgLy8gVXNlci1zdXBwbGllZCB0aHJlYWQgZnVuY3Rpb24uCiAgIGNvbnN0IFQgcGFy
YW1fOyAgLy8gVXNlci1zdXBwbGllZCBwYXJhbWV0ZXIgdG8gdGhlIHRocmVhZCBmdW5jdGlvbi4K
ICAgLy8gV2hlbiBub24tTlVMTCwgdXNlZCB0byBibG9jayBleGVjdXRpb24gdW50aWwgdGhlIGNv
bnRyb2xsZXIgdGhyZWFkCiAgIC8vIG5vdGlmaWVzLgpAQCAtOTkxLDUxICsxNzY3LDMxNiBAQCBj
bGFzcyBUaHJlYWRXaXRoUGFyYW0gOiBwdWJsaWMgVGhyZWFkV2l0aFBhcmFtQmFzZSB7CiAKICAg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJlYWRXaXRoUGFyYW0pOwogfTsKKyMg
ZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTICYmIEdURVNUX0hBU19QVEhSRUFEIHx8CisgICAg
ICAgICAvLyBHVEVTVF9IQVNfTVVURVhfQU5EX1RIUkVBRF9MT0NBTF8KIAotLy8gZ3Rlc3QtcG9y
dC5oIGd1YXJhbnRlZXMgdG8gI2luY2x1ZGUgPHB0aHJlYWQuaD4gd2hlbiBHVEVTVF9IQVNfUFRI
UkVBRCBpcwotLy8gdHJ1ZS4KLSNpbmNsdWRlIDxwdGhyZWFkLmg+CisjIGlmIEdURVNUX0hBU19N
VVRFWF9BTkRfVEhSRUFEX0xPQ0FMXworLy8gTXV0ZXggYW5kIFRocmVhZExvY2FsIGhhdmUgYWxy
ZWFkeSBiZWVuIGltcG9ydGVkIGludG8gdGhlIG5hbWVzcGFjZS4KKy8vIE5vdGhpbmcgdG8gZG8g
aGVyZS4KIAotLy8gTXV0ZXhCYXNlIGFuZCBNdXRleCBpbXBsZW1lbnQgbXV0ZXggb24gcHRocmVh
ZHMtYmFzZWQgcGxhdGZvcm1zLiBUaGV5Ci0vLyBhcmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRo
IGNsYXNzIE11dGV4TG9jazoKKyMgZWxpZiBHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19X
SU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUCisKKy8vIE11dGV4IGltcGxlbWVu
dHMgbXV0ZXggb24gV2luZG93cyBwbGF0Zm9ybXMuICBJdCBpcyB1c2VkIGluIGNvbmp1bmN0aW9u
CisvLyB3aXRoIGNsYXNzIE11dGV4TG9jazoKIC8vCiAvLyAgIE11dGV4IG11dGV4OwogLy8gICAu
Li4KLS8vICAgTXV0ZXhMb2NrIGxvY2soJm11dGV4KTsgIC8vIEFjcXVpcmVzIHRoZSBtdXRleCBh
bmQgcmVsZWFzZXMgaXQgYXQgdGhlIGVuZAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gb2YgdGhlIGN1cnJlbnQgc2NvcGUuCi0vLwotLy8gTXV0ZXhCYXNlIGltcGxlbWVudHMgYmVo
YXZpb3IgZm9yIGJvdGggc3RhdGljYWxseSBhbmQgZHluYW1pY2FsbHkKLS8vIGFsbG9jYXRlZCBt
dXRleGVzLiAgRG8gbm90IHVzZSBNdXRleEJhc2UgZGlyZWN0bHkuICBJbnN0ZWFkLCB3cml0ZQot
Ly8gdGhlIGZvbGxvd2luZyB0byBkZWZpbmUgYSBzdGF0aWMgbXV0ZXg6CisvLyAgIE11dGV4TG9j
ayBsb2NrKCZtdXRleCk7ICAvLyBBY3F1aXJlcyB0aGUgbXV0ZXggYW5kIHJlbGVhc2VzIGl0IGF0
IHRoZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5kIG9mIHRoZSBjdXJyZW50
IHNjb3BlLgogLy8KKy8vIEEgc3RhdGljIE11dGV4ICptdXN0KiBiZSBkZWZpbmVkIG9yIGRlY2xh
cmVkIHVzaW5nIG9uZSBvZiB0aGUgZm9sbG93aW5nCisvLyBtYWNyb3M6CiAvLyAgIEdURVNUX0RF
RklORV9TVEFUSUNfTVVURVhfKGdfc29tZV9tdXRleCk7CisvLyAgIEdURVNUX0RFQ0xBUkVfU1RB
VElDX01VVEVYXyhnX3NvbWVfbXV0ZXgpOworLy8KKy8vIChBIG5vbi1zdGF0aWMgTXV0ZXggaXMg
ZGVmaW5lZC9kZWNsYXJlZCBpbiB0aGUgdXN1YWwgd2F5KS4KK2NsYXNzIEdURVNUX0FQSV8gTXV0
ZXggeworIHB1YmxpYzoKKyAgZW51bSBNdXRleFR5cGUgeyBrU3RhdGljID0gMCwga0R5bmFtaWMg
PSAxIH07CisgIC8vIFdlIHJlbHkgb24ga1N0YXRpY011dGV4IGJlaW5nIDAgYXMgaXQgaXMgdG8g
d2hhdCB0aGUgbGlua2VyIGluaXRpYWxpemVzCisgIC8vIHR5cGVfIGluIHN0YXRpYyBtdXRleGVz
LiAgY3JpdGljYWxfc2VjdGlvbl8gd2lsbCBiZSBpbml0aWFsaXplZCBsYXppbHkKKyAgLy8gaW4g
VGhyZWFkU2FmZUxhenlJbml0KCkuCisgIGVudW0gU3RhdGljQ29uc3RydWN0b3JTZWxlY3RvciB7
IGtTdGF0aWNNdXRleCA9IDAgfTsKKworICAvLyBUaGlzIGNvbnN0cnVjdG9yIGludGVudGlvbmFs
bHkgZG9lcyBub3RoaW5nLiAgSXQgcmVsaWVzIG9uIHR5cGVfIGJlaW5nCisgIC8vIHN0YXRpY2Fs
bHkgaW5pdGlhbGl6ZWQgdG8gMCAoZWZmZWN0aXZlbHkgc2V0dGluZyBpdCB0byBrU3RhdGljKSBh
bmQgb24KKyAgLy8gVGhyZWFkU2FmZUxhenlJbml0KCkgdG8gbGF6aWx5IGluaXRpYWxpemUgdGhl
IHJlc3Qgb2YgdGhlIG1lbWJlcnMuCisgIGV4cGxpY2l0IE11dGV4KFN0YXRpY0NvbnN0cnVjdG9y
U2VsZWN0b3IgLypkdW1teSovKSB7fQorCisgIE11dGV4KCk7CisgIH5NdXRleCgpOworCisgIHZv
aWQgTG9jaygpOworCisgIHZvaWQgVW5sb2NrKCk7CisKKyAgLy8gRG9lcyBub3RoaW5nIGlmIHRo
ZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUgbXV0ZXguIE90aGVyd2lzZSwgY3Jhc2hlcworICAv
LyB3aXRoIGhpZ2ggcHJvYmFiaWxpdHkuCisgIHZvaWQgQXNzZXJ0SGVsZCgpOworCisgcHJpdmF0
ZToKKyAgLy8gSW5pdGlhbGl6ZXMgb3duZXJfdGhyZWFkX2lkXyBhbmQgY3JpdGljYWxfc2VjdGlv
bl8gaW4gc3RhdGljIG11dGV4ZXMuCisgIHZvaWQgVGhyZWFkU2FmZUxhenlJbml0KCk7CisKKyAg
Ly8gUGVyIGh0dHBzOi8vYmxvZ3MubXNkbi5taWNyb3NvZnQuY29tL29sZG5ld3RoaW5nLzIwMDQw
MjIzLTAwLz9wPTQwNTAzLAorICAvLyB3ZSBhc3N1bWUgdGhhdCAwIGlzIGFuIGludmFsaWQgdmFs
dWUgZm9yIHRocmVhZCBJRHMuCisgIHVuc2lnbmVkIGludCBvd25lcl90aHJlYWRfaWRfOworCisg
IC8vIEZvciBzdGF0aWMgbXV0ZXhlcywgd2UgcmVseSBvbiB0aGVzZSBtZW1iZXJzIGJlaW5nIGlu
aXRpYWxpemVkIHRvIHplcm9zCisgIC8vIGJ5IHRoZSBsaW5rZXIuCisgIE11dGV4VHlwZSB0eXBl
XzsKKyAgbG9uZyBjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhhc2VfOyAgLy8gTk9MSU5UCisgIEdU
RVNUX0NSSVRJQ0FMX1NFQ1RJT04qIGNyaXRpY2FsX3NlY3Rpb25fOworCisgIEdURVNUX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTl8oTXV0ZXgpOworfTsKKworIyBkZWZpbmUgR1RFU1RfREVDTEFS
RV9TVEFUSUNfTVVURVhfKG11dGV4KSBcCisgICAgZXh0ZXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6
Ok11dGV4IG11dGV4CisKKyMgZGVmaW5lIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKG11dGV4
KSBcCisgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXggbXV0ZXgoOjp0ZXN0aW5nOjppbnRl
cm5hbDo6TXV0ZXg6OmtTdGF0aWNNdXRleCkKKworLy8gV2UgY2Fubm90IG5hbWUgdGhpcyBjbGFz
cyBNdXRleExvY2sgYmVjYXVzZSB0aGUgY3RvciBkZWNsYXJhdGlvbiB3b3VsZAorLy8gY29uZmxp
Y3Qgd2l0aCBhIG1hY3JvIG5hbWVkIE11dGV4TG9jaywgd2hpY2ggaXMgZGVmaW5lZCBvbiBzb21l
CisvLyBwbGF0Zm9ybXMuIFRoYXQgbWFjcm8gaXMgdXNlZCBhcyBhIGRlZmVuc2l2ZSBtZWFzdXJl
IHRvIHByZXZlbnQgYWdhaW5zdAorLy8gaW5hZHZlcnRlbnQgbWlzdXNlcyBvZiBNdXRleExvY2sg
bGlrZSAiTXV0ZXhMb2NrKCZtdSkiIHJhdGhlciB0aGFuCisvLyAiTXV0ZXhMb2NrIGwoJm11KSIu
ICBIZW5jZSB0aGUgdHlwZWRlZiB0cmljayBiZWxvdy4KK2NsYXNzIEdUZXN0TXV0ZXhMb2NrIHsK
KyBwdWJsaWM6CisgIGV4cGxpY2l0IEdUZXN0TXV0ZXhMb2NrKE11dGV4KiBtdXRleCkKKyAgICAg
IDogbXV0ZXhfKG11dGV4KSB7IG11dGV4Xy0+TG9jaygpOyB9CisKKyAgfkdUZXN0TXV0ZXhMb2Nr
KCkgeyBtdXRleF8tPlVubG9jaygpOyB9CisKKyBwcml2YXRlOgorICBNdXRleCogY29uc3QgbXV0
ZXhfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oR1Rlc3RNdXRleExvY2sp
OworfTsKKwordHlwZWRlZiBHVGVzdE11dGV4TG9jayBNdXRleExvY2s7CisKKy8vIEJhc2UgY2xh
c3MgZm9yIFZhbHVlSG9sZGVyPFQ+LiAgQWxsb3dzIGEgY2FsbGVyIHRvIGhvbGQgYW5kIGRlbGV0
ZSBhIHZhbHVlCisvLyB3aXRob3V0IGtub3dpbmcgaXRzIHR5cGUuCitjbGFzcyBUaHJlYWRMb2Nh
bFZhbHVlSG9sZGVyQmFzZSB7CisgcHVibGljOgorICB2aXJ0dWFsIH5UaHJlYWRMb2NhbFZhbHVl
SG9sZGVyQmFzZSgpIHt9Cit9OworCisvLyBQcm92aWRlcyBhIHdheSBmb3IgYSB0aHJlYWQgdG8g
c2VuZCBub3RpZmljYXRpb25zIHRvIGEgVGhyZWFkTG9jYWwKKy8vIHJlZ2FyZGxlc3Mgb2YgaXRz
IHBhcmFtZXRlciB0eXBlLgorY2xhc3MgVGhyZWFkTG9jYWxCYXNlIHsKKyBwdWJsaWM6CisgIC8v
IENyZWF0ZXMgYSBuZXcgVmFsdWVIb2xkZXI8VD4gb2JqZWN0IGhvbGRpbmcgYSBkZWZhdWx0IHZh
bHVlIHBhc3NlZCB0bworICAvLyB0aGlzIFRocmVhZExvY2FsPFQ+J3MgY29uc3RydWN0b3IgYW5k
IHJldHVybnMgaXQuICBJdCBpcyB0aGUgY2FsbGVyJ3MKKyAgLy8gcmVzcG9uc2liaWxpdHkgbm90
IHRvIGNhbGwgdGhpcyB3aGVuIHRoZSBUaHJlYWRMb2NhbDxUPiBpbnN0YW5jZSBhbHJlYWR5Cisg
IC8vIGhhcyBhIHZhbHVlIG9uIHRoZSBjdXJyZW50IHRocmVhZC4KKyAgdmlydHVhbCBUaHJlYWRM
b2NhbFZhbHVlSG9sZGVyQmFzZSogTmV3VmFsdWVGb3JDdXJyZW50VGhyZWFkKCkgY29uc3QgPSAw
OworCisgcHJvdGVjdGVkOgorICBUaHJlYWRMb2NhbEJhc2UoKSB7fQorICB2aXJ0dWFsIH5UaHJl
YWRMb2NhbEJhc2UoKSB7fQorCisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOXyhUaHJlYWRMb2NhbEJhc2UpOworfTsKKworLy8gTWFwcyBhIHRocmVhZCB0byBhIHNl
dCBvZiBUaHJlYWRMb2NhbHMgdGhhdCBoYXZlIHZhbHVlcyBpbnN0YW50aWF0ZWQgb24gdGhhdAor
Ly8gdGhyZWFkIGFuZCBub3RpZmllcyB0aGVtIHdoZW4gdGhlIHRocmVhZCBleGl0cy4gIEEgVGhy
ZWFkTG9jYWwgaW5zdGFuY2UgaXMKKy8vIGV4cGVjdGVkIHRvIHBlcnNpc3QgdW50aWwgYWxsIHRo
cmVhZHMgaXQgaGFzIHZhbHVlcyBvbiBoYXZlIHRlcm1pbmF0ZWQuCitjbGFzcyBHVEVTVF9BUElf
IFRocmVhZExvY2FsUmVnaXN0cnkgeworIHB1YmxpYzoKKyAgLy8gUmVnaXN0ZXJzIHRocmVhZF9s
b2NhbF9pbnN0YW5jZSBhcyBoYXZpbmcgdmFsdWUgb24gdGhlIGN1cnJlbnQgdGhyZWFkLgorICAv
LyBSZXR1cm5zIGEgdmFsdWUgdGhhdCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSB0aGUgdGhyZWFk
IGZyb20gb3RoZXIgdGhyZWFkcy4KKyAgc3RhdGljIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNl
KiBHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCgKKyAgICAgIGNvbnN0IFRocmVhZExvY2FsQmFzZSog
dGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKKworICAvLyBJbnZva2VkIHdoZW4gYSBUaHJlYWRMb2Nh
bCBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuCisgIHN0YXRpYyB2b2lkIE9uVGhyZWFkTG9jYWxEZXN0
cm95ZWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9pbnN0YW5j
ZSk7Cit9OworCitjbGFzcyBHVEVTVF9BUElfIFRocmVhZFdpdGhQYXJhbUJhc2UgeworIHB1Ymxp
YzoKKyAgdm9pZCBKb2luKCk7CisKKyBwcm90ZWN0ZWQ6CisgIGNsYXNzIFJ1bm5hYmxlIHsKKyAg
IHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5SdW5uYWJsZSgpIHt9CisgICAgdmlydHVhbCB2b2lkIFJ1
bigpID0gMDsKKyAgfTsKKworICBUaHJlYWRXaXRoUGFyYW1CYXNlKFJ1bm5hYmxlICpydW5uYWJs
ZSwgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KTsKKyAgdmlydHVhbCB+VGhyZWFkV2l0
aFBhcmFtQmFzZSgpOworCisgcHJpdmF0ZToKKyAgQXV0b0hhbmRsZSB0aHJlYWRfOworfTsKKwor
Ly8gSGVscGVyIGNsYXNzIGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0J3MgbXVsdGktdGhyZWFkaW5n
IGNvbnN0cnVjdHMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFRocmVhZFdpdGhQYXJh
bSA6IHB1YmxpYyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKKyBwdWJsaWM6CisgIHR5cGVkZWYgdm9p
ZCBVc2VyVGhyZWFkRnVuYyhUKTsKKworICBUaHJlYWRXaXRoUGFyYW0oVXNlclRocmVhZEZ1bmMq
IGZ1bmMsIFQgcGFyYW0sIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydCkKKyAgICAgIDog
VGhyZWFkV2l0aFBhcmFtQmFzZShuZXcgUnVubmFibGVJbXBsKGZ1bmMsIHBhcmFtKSwgdGhyZWFk
X2Nhbl9zdGFydCkgeworICB9CisgIHZpcnR1YWwgflRocmVhZFdpdGhQYXJhbSgpIHt9CisKKyBw
cml2YXRlOgorICBjbGFzcyBSdW5uYWJsZUltcGwgOiBwdWJsaWMgUnVubmFibGUgeworICAgcHVi
bGljOgorICAgIFJ1bm5hYmxlSW1wbChVc2VyVGhyZWFkRnVuYyogZnVuYywgVCBwYXJhbSkKKyAg
ICAgICAgOiBmdW5jXyhmdW5jKSwKKyAgICAgICAgICBwYXJhbV8ocGFyYW0pIHsKKyAgICB9Cisg
ICAgdmlydHVhbCB+UnVubmFibGVJbXBsKCkge30KKyAgICB2aXJ0dWFsIHZvaWQgUnVuKCkgewor
ICAgICAgZnVuY18ocGFyYW1fKTsKKyAgICB9CisKKyAgIHByaXZhdGU6CisgICAgVXNlclRocmVh
ZEZ1bmMqIGNvbnN0IGZ1bmNfOworICAgIGNvbnN0IFQgcGFyYW1fOworCisgICAgR1RFU1RfRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhSdW5uYWJsZUltcGwpOworICB9OworCisgIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkV2l0aFBhcmFtKTsKK307CisKKy8vIEltcGxl
bWVudHMgdGhyZWFkLWxvY2FsIHN0b3JhZ2Ugb24gV2luZG93cyBzeXN0ZW1zLgogLy8KLS8vIFlv
dSBjYW4gZm9yd2FyZCBkZWNsYXJlIGEgc3RhdGljIG11dGV4IGxpa2UgdGhpczoKKy8vICAgLy8g
VGhyZWFkIDEKKy8vICAgVGhyZWFkTG9jYWw8aW50PiB0bCgxMDApOyAgLy8gMTAwIGlzIHRoZSBk
ZWZhdWx0IHZhbHVlIGZvciBlYWNoIHRocmVhZC4KIC8vCi0vLyAgIEdURVNUX0RFQ0xBUkVfU1RB
VElDX01VVEVYXyhnX3NvbWVfbXV0ZXgpOworLy8gICAvLyBUaHJlYWQgMgorLy8gICB0bC5zZXQo
MTUwKTsgIC8vIENoYW5nZXMgdGhlIHZhbHVlIGZvciB0aHJlYWQgMiBvbmx5LgorLy8gICBFWFBF
Q1RfRVEoMTUwLCB0bC5nZXQoKSk7CiAvLwotLy8gVG8gY3JlYXRlIGEgZHluYW1pYyBtdXRleCwg
anVzdCBkZWZpbmUgYW4gb2JqZWN0IG9mIHR5cGUgTXV0ZXguCisvLyAgIC8vIFRocmVhZCAxCisv
LyAgIEVYUEVDVF9FUSgxMDAsIHRsLmdldCgpKTsgIC8vIEluIHRocmVhZCAxLCB0bCBoYXMgdGhl
IG9yaWdpbmFsIHZhbHVlLgorLy8gICB0bC5zZXQoMjAwKTsKKy8vICAgRVhQRUNUX0VRKDIwMCwg
dGwuZ2V0KCkpOworLy8KKy8vIFRoZSB0ZW1wbGF0ZSB0eXBlIGFyZ3VtZW50IFQgbXVzdCBoYXZl
IGEgcHVibGljIGNvcHkgY29uc3RydWN0b3IuCisvLyBJbiBhZGRpdGlvbiwgdGhlIGRlZmF1bHQg
VGhyZWFkTG9jYWwgY29uc3RydWN0b3IgcmVxdWlyZXMgVCB0byBoYXZlCisvLyBhIHB1YmxpYyBk
ZWZhdWx0IGNvbnN0cnVjdG9yLgorLy8KKy8vIFRoZSB1c2VycyBvZiBhIFRoZWFkTG9jYWwgaW5z
dGFuY2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCBhbGwgYnV0IG9uZQorLy8gdGhyZWFkcyAoaW5j
bHVkaW5nIHRoZSBtYWluIG9uZSkgdXNpbmcgdGhhdCBpbnN0YW5jZSBoYXZlIGV4aXRlZCBiZWZv
cmUKKy8vIGRlc3Ryb3lpbmcgaXQuIE90aGVyd2lzZSwgdGhlIHBlci10aHJlYWQgb2JqZWN0cyBt
YW5hZ2VkIGZvciB0aGVtIGJ5IHRoZQorLy8gVGhyZWFkTG9jYWwgaW5zdGFuY2UgYXJlIG5vdCBn
dWFyYW50ZWVkIHRvIGJlIGRlc3Ryb3llZCBvbiBhbGwgcGxhdGZvcm1zLgorLy8KKy8vIEdvb2ds
ZSBUZXN0IG9ubHkgdXNlcyBnbG9iYWwgVGhyZWFkTG9jYWwgb2JqZWN0cy4gIFRoYXQgbWVhbnMg
dGhleQorLy8gd2lsbCBkaWUgYWZ0ZXIgbWFpbigpIGhhcyByZXR1cm5lZC4gIFRoZXJlZm9yZSwg
bm8gcGVyLXRocmVhZAorLy8gb2JqZWN0IG1hbmFnZWQgYnkgR29vZ2xlIFRlc3Qgd2lsbCBiZSBs
ZWFrZWQgYXMgbG9uZyBhcyBhbGwgdGhyZWFkcworLy8gdXNpbmcgR29vZ2xlIFRlc3QgaGF2ZSBl
eGl0ZWQgd2hlbiBtYWluKCkgcmV0dXJucy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3Mg
VGhyZWFkTG9jYWwgOiBwdWJsaWMgVGhyZWFkTG9jYWxCYXNlIHsKKyBwdWJsaWM6CisgIFRocmVh
ZExvY2FsKCkgOiBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5
KCkpIHt9CisgIGV4cGxpY2l0IFRocmVhZExvY2FsKGNvbnN0IFQmIHZhbHVlKQorICAgICAgOiBk
ZWZhdWx0X2ZhY3RvcnlfKG5ldyBJbnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeSh2YWx1ZSkpIHt9
CisKKyAgflRocmVhZExvY2FsKCkgeyBUaHJlYWRMb2NhbFJlZ2lzdHJ5OjpPblRocmVhZExvY2Fs
RGVzdHJveWVkKHRoaXMpOyB9CisKKyAgVCogcG9pbnRlcigpIHsgcmV0dXJuIEdldE9yQ3JlYXRl
VmFsdWUoKTsgfQorICBjb25zdCBUKiBwb2ludGVyKCkgY29uc3QgeyByZXR1cm4gR2V0T3JDcmVh
dGVWYWx1ZSgpOyB9CisgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgcmV0dXJuICpwb2ludGVyKCk7
IH0KKyAgdm9pZCBzZXQoY29uc3QgVCYgdmFsdWUpIHsgKnBvaW50ZXIoKSA9IHZhbHVlOyB9CisK
KyBwcml2YXRlOgorICAvLyBIb2xkcyBhIHZhbHVlIG9mIFQuICBDYW4gYmUgZGVsZXRlZCB2aWEg
aXRzIGJhc2UgY2xhc3Mgd2l0aG91dCB0aGUgY2FsbGVyCisgIC8vIGtub3dpbmcgdGhlIHR5cGUg
b2YgVC4KKyAgY2xhc3MgVmFsdWVIb2xkZXIgOiBwdWJsaWMgVGhyZWFkTG9jYWxWYWx1ZUhvbGRl
ckJhc2UgeworICAgcHVibGljOgorICAgIFZhbHVlSG9sZGVyKCkgOiB2YWx1ZV8oKSB7fQorICAg
IGV4cGxpY2l0IFZhbHVlSG9sZGVyKGNvbnN0IFQmIHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30K
KworICAgIFQqIHBvaW50ZXIoKSB7IHJldHVybiAmdmFsdWVfOyB9CisKKyAgIHByaXZhdGU6Cisg
ICAgVCB2YWx1ZV87CisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhWYWx1ZUhv
bGRlcik7CisgIH07CisKKworICBUKiBHZXRPckNyZWF0ZVZhbHVlKCkgY29uc3QgeworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxWYWx1ZUhvbGRlcio+KAorICAgICAgICBUaHJlYWRMb2NhbFJlZ2lz
dHJ5OjpHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCh0aGlzKSktPnBvaW50ZXIoKTsKKyAgfQorCisg
IHZpcnR1YWwgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UqIE5ld1ZhbHVlRm9yQ3VycmVudFRo
cmVhZCgpIGNvbnN0IHsKKyAgICByZXR1cm4gZGVmYXVsdF9mYWN0b3J5Xy0+TWFrZU5ld0hvbGRl
cigpOworICB9CisKKyAgY2xhc3MgVmFsdWVIb2xkZXJGYWN0b3J5IHsKKyAgIHB1YmxpYzoKKyAg
ICBWYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1YWwgflZhbHVlSG9sZGVyRmFjdG9y
eSgpIHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRlciogTWFrZU5ld0hvbGRlcigpIGNvbnN0ID0g
MDsKKworICAgcHJpdmF0ZToKKyAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFZh
bHVlSG9sZGVyRmFjdG9yeSk7CisgIH07CisKKyAgY2xhc3MgRGVmYXVsdFZhbHVlSG9sZGVyRmFj
dG9yeSA6IHB1YmxpYyBWYWx1ZUhvbGRlckZhY3RvcnkgeworICAgcHVibGljOgorICAgIERlZmF1
bHRWYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1YWwgVmFsdWVIb2xkZXIqIE1ha2VO
ZXdIb2xkZXIoKSBjb25zdCB7IHJldHVybiBuZXcgVmFsdWVIb2xkZXIoKTsgfQorCisgICBwcml2
YXRlOgorICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oRGVmYXVsdFZhbHVlSG9s
ZGVyRmFjdG9yeSk7CisgIH07CisKKyAgY2xhc3MgSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3Rvcnkg
OiBwdWJsaWMgVmFsdWVIb2xkZXJGYWN0b3J5IHsKKyAgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBJ
bnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeShjb25zdCBUJiB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUp
IHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRlciogTWFrZU5ld0hvbGRlcigpIGNvbnN0IHsKKyAg
ICAgIHJldHVybiBuZXcgVmFsdWVIb2xkZXIodmFsdWVfKTsKKyAgICB9CisKKyAgIHByaXZhdGU6
CisgICAgY29uc3QgVCB2YWx1ZV87ICAvLyBUaGUgdmFsdWUgZm9yIGVhY2ggdGhyZWFkLgorCisg
ICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhJbnN0YW5jZVZhbHVlSG9sZGVyRmFj
dG9yeSk7CisgIH07CisKKyAgc2NvcGVkX3B0cjxWYWx1ZUhvbGRlckZhY3Rvcnk+IGRlZmF1bHRf
ZmFjdG9yeV87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJlYWRMb2Nh
bCk7Cit9OworCisjIGVsaWYgR1RFU1RfSEFTX1BUSFJFQUQKKworLy8gTXV0ZXhCYXNlIGFuZCBN
dXRleCBpbXBsZW1lbnQgbXV0ZXggb24gcHRocmVhZHMtYmFzZWQgcGxhdGZvcm1zLgogY2xhc3Mg
TXV0ZXhCYXNlIHsKICBwdWJsaWM6CiAgIC8vIEFjcXVpcmVzIHRoaXMgbXV0ZXguCiAgIHZvaWQg
TG9jaygpIHsKICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4X2xv
Y2soJm11dGV4XykpOwogICAgIG93bmVyXyA9IHB0aHJlYWRfc2VsZigpOworICAgIGhhc19vd25l
cl8gPSB0cnVlOwogICB9CiAKICAgLy8gUmVsZWFzZXMgdGhpcyBtdXRleC4KICAgdm9pZCBVbmxv
Y2soKSB7Ci0gICAgLy8gV2UgZG9uJ3QgcHJvdGVjdCB3cml0aW5nIHRvIG93bmVyXyBoZXJlLCBh
cyBpdCdzIHRoZSBjYWxsZXIncwotICAgIC8vIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGF0
IHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUKKyAgICAvLyBTaW5jZSB0aGUgbG9jayBpcyBi
ZWluZyByZWxlYXNlZCB0aGUgb3duZXJfIGZpZWxkIHNob3VsZCBubyBsb25nZXIgYmUKKyAgICAv
LyBjb25zaWRlcmVkIHZhbGlkLiBXZSBkb24ndCBwcm90ZWN0IHdyaXRpbmcgdG8gaGFzX293bmVy
XyBoZXJlLCBhcyBpdCdzCisgICAgLy8gdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGVu
c3VyZSB0aGF0IHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUKICAgICAvLyBtdXRleCB3aGVu
IHRoaXMgaXMgY2FsbGVkLgotICAgIG93bmVyXyA9IDA7CisgICAgaGFzX293bmVyXyA9IGZhbHNl
OwogICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZt
dXRleF8pKTsKICAgfQogCiAgIC8vIERvZXMgbm90aGluZyBpZiB0aGUgY3VycmVudCB0aHJlYWQg
aG9sZHMgdGhlIG11dGV4LiBPdGhlcndpc2UsIGNyYXNoZXMKICAgLy8gd2l0aCBoaWdoIHByb2Jh
YmlsaXR5LgogICB2b2lkIEFzc2VydEhlbGQoKSBjb25zdCB7Ci0gICAgR1RFU1RfQ0hFQ0tfKG93
bmVyXyA9PSBwdGhyZWFkX3NlbGYoKSkKKyAgICBHVEVTVF9DSEVDS18oaGFzX293bmVyXyAmJiBw
dGhyZWFkX2VxdWFsKG93bmVyXywgcHRocmVhZF9zZWxmKCkpKQogICAgICAgICA8PCAiVGhlIGN1
cnJlbnQgdGhyZWFkIGlzIG5vdCBob2xkaW5nIHRoZSBtdXRleCBAIiA8PCB0aGlzOwogICB9CiAK
QEAgLTEwNDYsMTYgKzIwODcsMjggQEAgY2xhc3MgTXV0ZXhCYXNlIHsKICAgLy8gaGF2ZSB0byBi
ZSBwdWJsaWMuCiAgcHVibGljOgogICBwdGhyZWFkX211dGV4X3QgbXV0ZXhfOyAgLy8gVGhlIHVu
ZGVybHlpbmcgcHRocmVhZCBtdXRleC4KLSAgcHRocmVhZF90IG93bmVyXzsgIC8vIFRoZSB0aHJl
YWQgaG9sZGluZyB0aGUgbXV0ZXg7IDAgbWVhbnMgbm8gb25lIGhvbGRzIGl0LgorICAvLyBoYXNf
b3duZXJfIGluZGljYXRlcyB3aGV0aGVyIHRoZSBvd25lcl8gZmllbGQgYmVsb3cgY29udGFpbnMg
YSB2YWxpZCB0aHJlYWQKKyAgLy8gSUQgYW5kIGlzIHRoZXJlZm9yZSBzYWZlIHRvIGluc3BlY3Qg
KGUuZy4sIHRvIHVzZSBpbiBwdGhyZWFkX2VxdWFsKCkpLiBBbGwKKyAgLy8gYWNjZXNzZXMgdG8g
dGhlIG93bmVyXyBmaWVsZCBzaG91bGQgYmUgcHJvdGVjdGVkIGJ5IGEgY2hlY2sgb2YgdGhpcyBm
aWVsZC4KKyAgLy8gQW4gYWx0ZXJuYXRpdmUgbWlnaHQgYmUgdG8gbWVtc2V0KCkgb3duZXJfIHRv
IGFsbCB6ZXJvcywgYnV0IHRoZXJlJ3Mgbm8KKyAgLy8gZ3VhcmFudGVlIHRoYXQgYSB6ZXJvJ2Qg
cHRocmVhZF90IGlzIG5lY2Vzc2FyaWx5IGludmFsaWQgb3IgZXZlbiBkaWZmZXJlbnQKKyAgLy8g
ZnJvbSBwdGhyZWFkX3NlbGYoKS4KKyAgYm9vbCBoYXNfb3duZXJfOworICBwdGhyZWFkX3Qgb3du
ZXJfOyAgLy8gVGhlIHRocmVhZCBob2xkaW5nIHRoZSBtdXRleC4KIH07CiAKIC8vIEZvcndhcmQt
ZGVjbGFyZXMgYSBzdGF0aWMgbXV0ZXguCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVfU1RBVElDX01V
VEVYXyhtdXRleCkgXAotICAgIGV4dGVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpNdXRleEJhc2Ug
bXV0ZXgKKyMgIGRlZmluZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRFWF8obXV0ZXgpIFwKKyAg
ICAgZXh0ZXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4QmFzZSBtdXRleAogCiAvLyBEZWZp
bmVzIGFuZCBzdGF0aWNhbGx5IChpLmUuIGF0IGxpbmsgdGltZSkgaW5pdGlhbGl6ZXMgYSBzdGF0
aWMgbXV0ZXguCisvLyBUaGUgaW5pdGlhbGl6YXRpb24gbGlzdCBoZXJlIGRvZXMgbm90IGV4cGxp
Y2l0bHkgaW5pdGlhbGl6ZSBlYWNoIGZpZWxkLAorLy8gaW5zdGVhZCByZWx5aW5nIG9uIGRlZmF1
bHQgaW5pdGlhbGl6YXRpb24gZm9yIHRoZSB1bnNwZWNpZmllZCBmaWVsZHMuIEluCisvLyBwYXJ0
aWN1bGFyLCB0aGUgb3duZXJfIGZpZWxkIChhIHB0aHJlYWRfdCkgaXMgbm90IGV4cGxpY2l0bHkg
aW5pdGlhbGl6ZWQuCisvLyBUaGlzIGFsbG93cyBpbml0aWFsaXphdGlvbiB0byB3b3JrIHdoZXRo
ZXIgcHRocmVhZF90IGlzIGEgc2NhbGFyIG9yIHN0cnVjdC4KKy8vIFRoZSBmbGFnIC1XbWlzc2lu
Zy1maWVsZC1pbml0aWFsaXplcnMgbXVzdCBub3QgYmUgc3BlY2lmaWVkIGZvciB0aGlzIHRvIHdv
cmsuCiAjZGVmaW5lIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKG11dGV4KSBcCi0gICAgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXhCYXNlIG11dGV4ID0geyBQVEhSRUFEX01VVEVYX0lOSVRJ
QUxJWkVSLCAwIH0KKyAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXhCYXNlIG11dGV4ID0ge1BU
SFJFQURfTVVURVhfSU5JVElBTElaRVIsIGZhbHNlLCAwfQogCiAvLyBUaGUgTXV0ZXggY2xhc3Mg
Y2FuIG9ubHkgYmUgdXNlZCBmb3IgbXV0ZXhlcyBjcmVhdGVkIGF0IHJ1bnRpbWUuIEl0CiAvLyBz
aGFyZXMgaXRzIEFQSSB3aXRoIE11dGV4QmFzZSBvdGhlcndpc2UuCkBAIC0xMDYzLDcgKzIxMTYs
NyBAQCBjbGFzcyBNdXRleCA6IHB1YmxpYyBNdXRleEJhc2UgewogIHB1YmxpYzoKICAgTXV0ZXgo
KSB7CiAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9pbml0KCZt
dXRleF8sIE5VTEwpKTsKLSAgICBvd25lcl8gPSAwOworICAgIGhhc19vd25lcl8gPSBmYWxzZTsK
ICAgfQogICB+TXV0ZXgoKSB7CiAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVh
ZF9tdXRleF9kZXN0cm95KCZtdXRleF8pKTsKQEAgLTEwNzMsOSArMjEyNiwxMSBAQCBjbGFzcyBN
dXRleCA6IHB1YmxpYyBNdXRleEJhc2UgewogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJ
R05fKE11dGV4KTsKIH07CiAKLS8vIFdlIGNhbm5vdCBuYW1lIHRoaXMgY2xhc3MgTXV0ZXhMb2Nr
IGFzIHRoZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCisvLyBXZSBjYW5ub3QgbmFtZSB0aGlzIGNs
YXNzIE11dGV4TG9jayBiZWNhdXNlIHRoZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCiAvLyBjb25m
bGljdCB3aXRoIGEgbWFjcm8gbmFtZWQgTXV0ZXhMb2NrLCB3aGljaCBpcyBkZWZpbmVkIG9uIHNv
bWUKLS8vIHBsYXRmb3Jtcy4gIEhlbmNlIHRoZSB0eXBlZGVmIHRyaWNrIGJlbG93LgorLy8gcGxh
dGZvcm1zLiBUaGF0IG1hY3JvIGlzIHVzZWQgYXMgYSBkZWZlbnNpdmUgbWVhc3VyZSB0byBwcmV2
ZW50IGFnYWluc3QKKy8vIGluYWR2ZXJ0ZW50IG1pc3VzZXMgb2YgTXV0ZXhMb2NrIGxpa2UgIk11
dGV4TG9jaygmbXUpIiByYXRoZXIgdGhhbgorLy8gIk11dGV4TG9jayBsKCZtdSkiLiAgSGVuY2Ug
dGhlIHR5cGVkZWYgdHJpY2sgYmVsb3cuCiBjbGFzcyBHVGVzdE11dGV4TG9jayB7CiAgcHVibGlj
OgogICBleHBsaWNpdCBHVGVzdE11dGV4TG9jayhNdXRleEJhc2UqIG11dGV4KQpAQCAtMTEwOSw0
MSArMjE2NCwxNCBAQCBleHRlcm4gIkMiIGlubGluZSB2b2lkIERlbGV0ZVRocmVhZExvY2FsVmFs
dWUodm9pZCogdmFsdWVfaG9sZGVyKSB7CiB9CiAKIC8vIEltcGxlbWVudHMgdGhyZWFkLWxvY2Fs
IHN0b3JhZ2Ugb24gcHRocmVhZHMtYmFzZWQgc3lzdGVtcy4KLS8vCi0vLyAgIC8vIFRocmVhZCAx
Ci0vLyAgIFRocmVhZExvY2FsPGludD4gdGwoMTAwKTsgIC8vIDEwMCBpcyB0aGUgZGVmYXVsdCB2
YWx1ZSBmb3IgZWFjaCB0aHJlYWQuCi0vLwotLy8gICAvLyBUaHJlYWQgMgotLy8gICB0bC5zZXQo
MTUwKTsgIC8vIENoYW5nZXMgdGhlIHZhbHVlIGZvciB0aHJlYWQgMiBvbmx5LgotLy8gICBFWFBF
Q1RfRVEoMTUwLCB0bC5nZXQoKSk7Ci0vLwotLy8gICAvLyBUaHJlYWQgMQotLy8gICBFWFBFQ1Rf
RVEoMTAwLCB0bC5nZXQoKSk7ICAvLyBJbiB0aHJlYWQgMSwgdGwgaGFzIHRoZSBvcmlnaW5hbCB2
YWx1ZS4KLS8vICAgdGwuc2V0KDIwMCk7Ci0vLyAgIEVYUEVDVF9FUSgyMDAsIHRsLmdldCgpKTsK
LS8vCi0vLyBUaGUgdGVtcGxhdGUgdHlwZSBhcmd1bWVudCBUIG11c3QgaGF2ZSBhIHB1YmxpYyBj
b3B5IGNvbnN0cnVjdG9yLgotLy8gSW4gYWRkaXRpb24sIHRoZSBkZWZhdWx0IFRocmVhZExvY2Fs
IGNvbnN0cnVjdG9yIHJlcXVpcmVzIFQgdG8gaGF2ZQotLy8gYSBwdWJsaWMgZGVmYXVsdCBjb25z
dHJ1Y3Rvci4KLS8vCi0vLyBBbiBvYmplY3QgbWFuYWdlZCBmb3IgYSB0aHJlYWQgYnkgYSBUaHJl
YWRMb2NhbCBpbnN0YW5jZSBpcyBkZWxldGVkCi0vLyB3aGVuIHRoZSB0aHJlYWQgZXhpdHMuICBP
ciwgaWYgdGhlIFRocmVhZExvY2FsIGluc3RhbmNlIGRpZXMgaW4KLS8vIHRoYXQgdGhyZWFkLCB3
aGVuIHRoZSBUaHJlYWRMb2NhbCBkaWVzLiAgSXQncyB0aGUgdXNlcidzCi0vLyByZXNwb25zaWJp
bGl0eSB0byBlbnN1cmUgdGhhdCBhbGwgb3RoZXIgdGhyZWFkcyB1c2luZyBhIFRocmVhZExvY2Fs
Ci0vLyBoYXZlIGV4aXRlZCB3aGVuIGl0IGRpZXMsIG9yIHRoZSBwZXItdGhyZWFkIG9iamVjdHMg
Zm9yIHRob3NlCi0vLyB0aHJlYWRzIHdpbGwgbm90IGJlIGRlbGV0ZWQuCi0vLwotLy8gR29vZ2xl
IFRlc3Qgb25seSB1c2VzIGdsb2JhbCBUaHJlYWRMb2NhbCBvYmplY3RzLiAgVGhhdCBtZWFucyB0
aGV5Ci0vLyB3aWxsIGRpZSBhZnRlciBtYWluKCkgaGFzIHJldHVybmVkLiAgVGhlcmVmb3JlLCBu
byBwZXItdGhyZWFkCi0vLyBvYmplY3QgbWFuYWdlZCBieSBHb29nbGUgVGVzdCB3aWxsIGJlIGxl
YWtlZCBhcyBsb25nIGFzIGFsbCB0aHJlYWRzCi0vLyB1c2luZyBHb29nbGUgVGVzdCBoYXZlIGV4
aXRlZCB3aGVuIG1haW4oKSByZXR1cm5zLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBU
aHJlYWRMb2NhbCB7CitjbGFzcyBHVEVTVF9BUElfIFRocmVhZExvY2FsIHsKICBwdWJsaWM6Ci0g
IFRocmVhZExvY2FsKCkgOiBrZXlfKENyZWF0ZUtleSgpKSwKLSAgICAgICAgICAgICAgICAgIGRl
ZmF1bHRfKCkge30KLSAgZXhwbGljaXQgVGhyZWFkTG9jYWwoY29uc3QgVCYgdmFsdWUpIDoga2V5
XyhDcmVhdGVLZXkoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHRfKHZhbHVlKSB7fQorICBUaHJlYWRMb2NhbCgpCisgICAgICA6IGtleV8oQ3JlYXRl
S2V5KCkpLCBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5KCkp
IHt9CisgIGV4cGxpY2l0IFRocmVhZExvY2FsKGNvbnN0IFQmIHZhbHVlKQorICAgICAgOiBrZXlf
KENyZWF0ZUtleSgpKSwKKyAgICAgICAgZGVmYXVsdF9mYWN0b3J5XyhuZXcgSW5zdGFuY2VWYWx1
ZUhvbGRlckZhY3RvcnkodmFsdWUpKSB7fQogCiAgIH5UaHJlYWRMb2NhbCgpIHsKICAgICAvLyBE
ZXN0cm95cyB0aGUgbWFuYWdlZCBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHRocmVhZCwgaWYgYW55
LgpAQCAtMTE2Myw2ICsyMTkxLDcgQEAgY2xhc3MgVGhyZWFkTG9jYWwgewogICAvLyBIb2xkcyBh
IHZhbHVlIG9mIHR5cGUgVC4KICAgY2xhc3MgVmFsdWVIb2xkZXIgOiBwdWJsaWMgVGhyZWFkTG9j
YWxWYWx1ZUhvbGRlckJhc2UgewogICAgcHVibGljOgorICAgIFZhbHVlSG9sZGVyKCkgOiB2YWx1
ZV8oKSB7fQogICAgIGV4cGxpY2l0IFZhbHVlSG9sZGVyKGNvbnN0IFQmIHZhbHVlKSA6IHZhbHVl
Xyh2YWx1ZSkge30KIAogICAgIFQqIHBvaW50ZXIoKSB7IHJldHVybiAmdmFsdWVfOyB9CkBAIC0x
MTg4LDIyICsyMjE3LDU0IEBAIGNsYXNzIFRocmVhZExvY2FsIHsKICAgICAgIHJldHVybiBDaGVj
a2VkRG93bmNhc3RUb0FjdHVhbFR5cGU8VmFsdWVIb2xkZXI+KGhvbGRlciktPnBvaW50ZXIoKTsK
ICAgICB9CiAKLSAgICBWYWx1ZUhvbGRlciogY29uc3QgbmV3X2hvbGRlciA9IG5ldyBWYWx1ZUhv
bGRlcihkZWZhdWx0Xyk7CisgICAgVmFsdWVIb2xkZXIqIGNvbnN0IG5ld19ob2xkZXIgPSBkZWZh
dWx0X2ZhY3RvcnlfLT5NYWtlTmV3SG9sZGVyKCk7CiAgICAgVGhyZWFkTG9jYWxWYWx1ZUhvbGRl
ckJhc2UqIGNvbnN0IGhvbGRlcl9iYXNlID0gbmV3X2hvbGRlcjsKICAgICBHVEVTVF9DSEVDS19Q
T1NJWF9TVUNDRVNTXyhwdGhyZWFkX3NldHNwZWNpZmljKGtleV8sIGhvbGRlcl9iYXNlKSk7CiAg
ICAgcmV0dXJuIG5ld19ob2xkZXItPnBvaW50ZXIoKTsKICAgfQogCisgIGNsYXNzIFZhbHVlSG9s
ZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAgVmFsdWVIb2xkZXJGYWN0b3J5KCkge30KKyAg
ICB2aXJ0dWFsIH5WYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1YWwgVmFsdWVIb2xk
ZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCA9IDA7CisKKyAgIHByaXZhdGU6CisgICAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9OworCisg
IGNsYXNzIERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkgOiBwdWJsaWMgVmFsdWVIb2xkZXJGYWN0
b3J5IHsKKyAgIHB1YmxpYzoKKyAgICBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5KCkge30KKyAg
ICB2aXJ0dWFsIFZhbHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkgY29uc3QgeyByZXR1cm4gbmV3
IFZhbHVlSG9sZGVyKCk7IH0KKworICAgcHJpdmF0ZToKKyAgICBHVEVTVF9ESVNBTExPV19DT1BZ
X0FORF9BU1NJR05fKERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9OworCisgIGNsYXNz
IEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5IDogcHVibGljIFZhbHVlSG9sZGVyRmFjdG9yeSB7
CisgICBwdWJsaWM6CisgICAgZXhwbGljaXQgSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkoY29u
c3QgVCYgdmFsdWUpIDogdmFsdWVfKHZhbHVlKSB7fQorICAgIHZpcnR1YWwgVmFsdWVIb2xkZXIq
IE1ha2VOZXdIb2xkZXIoKSBjb25zdCB7CisgICAgICByZXR1cm4gbmV3IFZhbHVlSG9sZGVyKHZh
bHVlXyk7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGNvbnN0IFQgdmFsdWVfOyAgLy8gVGhl
IHZhbHVlIGZvciBlYWNoIHRocmVhZC4KKworICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9OworCiAgIC8vIEEga2V5IHB0
aHJlYWRzIHVzZXMgZm9yIGxvb2tpbmcgdXAgcGVyLXRocmVhZCB2YWx1ZXMuCiAgIGNvbnN0IHB0
aHJlYWRfa2V5X3Qga2V5XzsKLSAgY29uc3QgVCBkZWZhdWx0XzsgIC8vIFRoZSBkZWZhdWx0IHZh
bHVlIGZvciBlYWNoIHRocmVhZC4KKyAgc2NvcGVkX3B0cjxWYWx1ZUhvbGRlckZhY3Rvcnk+IGRl
ZmF1bHRfZmFjdG9yeV87CiAKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJl
YWRMb2NhbCk7CiB9OwogCi0jZGVmaW5lIEdURVNUX0lTX1RIUkVBRFNBRkUgMQorIyBlbmRpZiAg
Ly8gR1RFU1RfSEFTX01VVEVYX0FORF9USFJFQURfTE9DQUxfCiAKLSNlbHNlICAvLyBHVEVTVF9I
QVNfUFRIUkVBRAorI2Vsc2UgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUKIAogLy8gQSBkdW1teSBp
bXBsZW1lbnRhdGlvbiBvZiBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyAobXV0ZXgsIGxvY2ss
CiAvLyBhbmQgdGhyZWFkLWxvY2FsIHZhcmlhYmxlKS4gIE5lY2Vzc2FyeSBmb3IgY29tcGlsaW5n
IEdvb2dsZSBUZXN0IHdoZXJlCkBAIC0xMjEzLDE0ICsyMjc0LDIxIEBAIGNsYXNzIFRocmVhZExv
Y2FsIHsKIGNsYXNzIE11dGV4IHsKICBwdWJsaWM6CiAgIE11dGV4KCkge30KKyAgdm9pZCBMb2Nr
KCkge30KKyAgdm9pZCBVbmxvY2soKSB7fQogICB2b2lkIEFzc2VydEhlbGQoKSBjb25zdCB7fQog
fTsKIAotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRFWF8obXV0ZXgpIFwKKyMgZGVm
aW5lIEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRleCkgXAogICBleHRlcm4gOjp0ZXN0
aW5nOjppbnRlcm5hbDo6TXV0ZXggbXV0ZXgKIAotI2RlZmluZSBHVEVTVF9ERUZJTkVfU1RBVElD
X01VVEVYXyhtdXRleCkgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXggbXV0ZXgKKyMgZGVmaW5l
IEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKG11dGV4KSA6OnRlc3Rpbmc6OmludGVybmFsOjpN
dXRleCBtdXRleAogCisvLyBXZSBjYW5ub3QgbmFtZSB0aGlzIGNsYXNzIE11dGV4TG9jayBiZWNh
dXNlIHRoZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCisvLyBjb25mbGljdCB3aXRoIGEgbWFjcm8g
bmFtZWQgTXV0ZXhMb2NrLCB3aGljaCBpcyBkZWZpbmVkIG9uIHNvbWUKKy8vIHBsYXRmb3Jtcy4g
VGhhdCBtYWNybyBpcyB1c2VkIGFzIGEgZGVmZW5zaXZlIG1lYXN1cmUgdG8gcHJldmVudCBhZ2Fp
bnN0CisvLyBpbmFkdmVydGVudCBtaXN1c2VzIG9mIE11dGV4TG9jayBsaWtlICJNdXRleExvY2so
Jm11KSIgcmF0aGVyIHRoYW4KKy8vICJNdXRleExvY2sgbCgmbXUpIi4gIEhlbmNlIHRoZSB0eXBl
ZGVmIHRyaWNrIGJlbG93LgogY2xhc3MgR1Rlc3RNdXRleExvY2sgewogIHB1YmxpYzoKICAgZXhw
bGljaXQgR1Rlc3RNdXRleExvY2soTXV0ZXgqKSB7fSAgLy8gTk9MSU5UCkBAIC0xMjI5LDcgKzIy
OTcsNyBAQCBjbGFzcyBHVGVzdE11dGV4TG9jayB7CiB0eXBlZGVmIEdUZXN0TXV0ZXhMb2NrIE11
dGV4TG9jazsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBUaHJlYWRMb2NhbCB7Citj
bGFzcyBHVEVTVF9BUElfIFRocmVhZExvY2FsIHsKICBwdWJsaWM6CiAgIFRocmVhZExvY2FsKCkg
OiB2YWx1ZV8oKSB7fQogICBleHBsaWNpdCBUaHJlYWRMb2NhbChjb25zdCBUJiB2YWx1ZSkgOiB2
YWx1ZV8odmFsdWUpIHt9CkBAIC0xMjQxLDI4ICsyMzA5LDI1IEBAIGNsYXNzIFRocmVhZExvY2Fs
IHsKICAgVCB2YWx1ZV87CiB9OwogCi0vLyBUaGUgYWJvdmUgc3luY2hyb25pemF0aW9uIHByaW1p
dGl2ZXMgaGF2ZSBkdW1teSBpbXBsZW1lbnRhdGlvbnMuCi0vLyBUaGVyZWZvcmUgR29vZ2xlIFRl
c3QgaXMgbm90IHRocmVhZC1zYWZlLgotI2RlZmluZSBHVEVTVF9JU19USFJFQURTQUZFIDAKLQot
I2VuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVBRAorI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURT
QUZFCiAKIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiB0aHJlYWRzIHJ1bm5pbmcgaW4gdGhlIHBy
b2Nlc3MsIG9yIDAgdG8gaW5kaWNhdGUgdGhhdAogLy8gd2UgY2Fubm90IGRldGVjdCBpdC4KIEdU
RVNUX0FQSV8gc2l6ZV90IEdldFRocmVhZENvdW50KCk7CiAKIC8vIFBhc3Npbmcgbm9uLVBPRCBj
bGFzc2VzIHRocm91Z2ggZWxsaXBzaXMgKC4uLikgY3Jhc2hlcyB0aGUgQVJNCi0vLyBjb21waWxl
ciBhbmQgZ2VuZXJhdGVzIGEgd2FybmluZyBpbiBTdW4gU3R1ZGlvLiAgVGhlIE5va2lhIFN5bWJp
YW4KKy8vIGNvbXBpbGVyIGFuZCBnZW5lcmF0ZXMgYSB3YXJuaW5nIGluIFN1biBTdHVkaW8gYmVm
b3JlIDEydTQuIFRoZSBOb2tpYSBTeW1iaWFuCiAvLyBhbmQgdGhlIElCTSBYTCBDL0MrKyBjb21w
aWxlciB0cnkgdG8gaW5zdGFudGlhdGUgYSBjb3B5IGNvbnN0cnVjdG9yCiAvLyBmb3Igb2JqZWN0
cyBwYXNzZWQgdGhyb3VnaCBlbGxpcHNpcyAoLi4uKSwgZmFpbGluZyBmb3IgdW5jb3B5YWJsZQog
Ly8gb2JqZWN0cy4gIFdlIGRlZmluZSB0aGlzIHRvIGVuc3VyZSB0aGF0IG9ubHkgUE9EIGlzIHBh
c3NlZCB0aHJvdWdoCiAvLyBlbGxpcHNpcyBvbiB0aGVzZSBzeXN0ZW1zLgotI2lmIGRlZmluZWQo
X19TWU1CSUFOMzJfXykgfHwgZGVmaW5lZChfX0lCTUNQUF9fKSB8fCBkZWZpbmVkKF9fU1VOUFJP
X0NDKQorI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgfHwgZGVmaW5lZChfX0lCTUNQUF9fKSB8
fCBcCisgICAgIChkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiBfX1NVTlBST19DQyA8IDB4NTEzMCkK
IC8vIFdlIGxvc2Ugc3VwcG9ydCBmb3IgTlVMTCBkZXRlY3Rpb24gd2hlcmUgdGhlIGNvbXBpbGVy
IGRvZXNuJ3QgbGlrZQogLy8gcGFzc2luZyBub24tUE9EIGNsYXNzZXMgdGhyb3VnaCBlbGxpcHNp
cyAoLi4uKS4KLSNkZWZpbmUgR1RFU1RfRUxMSVBTSVNfTkVFRFNfUE9EXyAxCisjIGRlZmluZSBH
VEVTVF9FTExJUFNJU19ORUVEU19QT0RfIDEKICNlbHNlCi0jZGVmaW5lIEdURVNUX0NBTl9DT01Q
QVJFX05VTEwgMQorIyBkZWZpbmUgR1RFU1RfQ0FOX0NPTVBBUkVfTlVMTCAxCiAjZW5kaWYKIAog
Ly8gVGhlIE5va2lhIFN5bWJpYW4gYW5kIElCTSBYTCBDL0MrKyBjb21waWxlcnMgY2Fubm90IGRl
Y2lkZSBiZXR3ZWVuCkBAIC0xMjcwLDcgKzIzMzUsNyBAQCBHVEVTVF9BUElfIHNpemVfdCBHZXRU
aHJlYWRDb3VudCgpOwogLy8gX2Nhbl8gZGVjaWRlIGJldHdlZW4gY2xhc3MgdGVtcGxhdGUgc3Bl
Y2lhbGl6YXRpb25zIGZvciBUIGFuZCBUKiwKIC8vIHNvIGEgdHIxOjp0eXBlX3RyYWl0cy1saWtl
IGlzX3BvaW50ZXIgd29ya3MuCiAjaWYgZGVmaW5lZChfX1NZTUJJQU4zMl9fKSB8fCBkZWZpbmVk
KF9fSUJNQ1BQX18pCi0jZGVmaW5lIEdURVNUX05FRURTX0lTX1BPSU5URVJfIDEKKyMgZGVmaW5l
IEdURVNUX05FRURTX0lTX1BPSU5URVJfIDEKICNlbmRpZgogCiB0ZW1wbGF0ZSA8Ym9vbCBib29s
X3ZhbHVlPgpAQCAtMTI4MywyMyArMjM0OCw5MyBAQCB0ZW1wbGF0ZSA8Ym9vbCBib29sX3ZhbHVl
PiBjb25zdCBib29sIGJvb2xfY29uc3RhbnQ8Ym9vbF92YWx1ZT46OnZhbHVlOwogdHlwZWRlZiBi
b29sX2NvbnN0YW50PGZhbHNlPiBmYWxzZV90eXBlOwogdHlwZWRlZiBib29sX2NvbnN0YW50PHRy
dWU+IHRydWVfdHlwZTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitzdHJ1
Y3QgaXNfc2FtZSA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK3N0cnVjdCBpc19zYW1lPFQsIFQ+IDogcHVibGljIHRydWVfdHlwZSB7fTsKKworCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KIHN0cnVjdCBpc19wb2ludGVyIDogcHVibGljIGZhbHNlX3R5cGUg
e307CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RydWN0IGlzX3BvaW50ZXI8VCo+IDogcHVi
bGljIHRydWVfdHlwZSB7fTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yPgorc3RydWN0
IEl0ZXJhdG9yVHJhaXRzIHsKKyAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvcjo6dmFsdWVfdHlw
ZSB2YWx1ZV90eXBlOworfTsKKworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBJdGVy
YXRvclRyYWl0czxUKj4geworICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKK307CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorc3RydWN0IEl0ZXJhdG9yVHJhaXRzPGNvbnN0IFQqPiB7CisgIHR5cGVk
ZWYgVCB2YWx1ZV90eXBlOworfTsKKwogI2lmIEdURVNUX09TX1dJTkRPV1MKLSNkZWZpbmUgR1RF
U1RfUEFUSF9TRVBfICJcXCIKLSNkZWZpbmUgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8gMQorIyBk
ZWZpbmUgR1RFU1RfUEFUSF9TRVBfICJcXCIKKyMgZGVmaW5lIEdURVNUX0hBU19BTFRfUEFUSF9T
RVBfIDEKIC8vIFRoZSBiaWdnZXN0IHNpZ25lZCBpbnRlZ2VyIHR5cGUgdGhlIGNvbXBpbGVyIHN1
cHBvcnRzLgogdHlwZWRlZiBfX2ludDY0IEJpZ2dlc3RJbnQ7CiAjZWxzZQotI2RlZmluZSBHVEVT
VF9QQVRIX1NFUF8gIi8iCi0jZGVmaW5lIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfIDAKKyMgZGVm
aW5lIEdURVNUX1BBVEhfU0VQXyAiLyIKKyMgZGVmaW5lIEdURVNUX0hBU19BTFRfUEFUSF9TRVBf
IDAKIHR5cGVkZWYgbG9uZyBsb25nIEJpZ2dlc3RJbnQ7ICAvLyBOT0xJTlQKICNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUwogCisvLyBVdGlsaXRpZXMgZm9yIGNoYXIuCisKKy8vIGlzc3BhY2Uo
aW50IGNoKSBhbmQgZnJpZW5kcyBhY2NlcHQgYW4gdW5zaWduZWQgY2hhciBvciBFT0YuICBjaGFy
CisvLyBtYXkgYmUgc2lnbmVkLCBkZXBlbmRpbmcgb24gdGhlIGNvbXBpbGVyIChvciBjb21waWxl
ciBmbGFncykuCisvLyBUaGVyZWZvcmUgd2UgbmVlZCB0byBjYXN0IGEgY2hhciB0byB1bnNpZ25l
ZCBjaGFyIGJlZm9yZSBjYWxsaW5nCisvLyBpc3NwYWNlKCksIGV0Yy4KKworaW5saW5lIGJvb2wg
SXNBbHBoYShjaGFyIGNoKSB7CisgIHJldHVybiBpc2FscGhhKHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KGNoKSkgIT0gMDsKK30KK2lubGluZSBib29sIElzQWxOdW0oY2hhciBjaCkgeworICBy
ZXR1cm4gaXNhbG51bShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpICE9IDA7Cit9Citp
bmxpbmUgYm9vbCBJc0RpZ2l0KGNoYXIgY2gpIHsKKyAgcmV0dXJuIGlzZGlnaXQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNMb3dlcihjaGFy
IGNoKSB7CisgIHJldHVybiBpc2xvd2VyKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkg
IT0gMDsKK30KK2lubGluZSBib29sIElzU3BhY2UoY2hhciBjaCkgeworICByZXR1cm4gaXNzcGFj
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpICE9IDA7Cit9CitpbmxpbmUgYm9vbCBJ
c1VwcGVyKGNoYXIgY2gpIHsKKyAgcmV0dXJuIGlzdXBwZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oY2gpKSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNYRGlnaXQoY2hhciBjaCkgeworICBy
ZXR1cm4gaXN4ZGlnaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOworfQor
aW5saW5lIGJvb2wgSXNYRGlnaXQod2NoYXJfdCBjaCkgeworICBjb25zdCB1bnNpZ25lZCBjaGFy
IGxvd19ieXRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpOworICByZXR1cm4gY2gg
PT0gbG93X2J5dGUgJiYgaXN4ZGlnaXQobG93X2J5dGUpICE9IDA7Cit9CisKK2lubGluZSBjaGFy
IFRvTG93ZXIoY2hhciBjaCkgeworICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcj4odG9sb3dlcihz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpKTsKK30KK2lubGluZSBjaGFyIFRvVXBwZXIo
Y2hhciBjaCkgeworICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcj4odG91cHBlcihzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyPihjaCkpKTsKK30KKworaW5saW5lIHN0ZDo6c3RyaW5nIFN0cmlwVHJh
aWxpbmdTcGFjZXMoc3RkOjpzdHJpbmcgc3RyKSB7CisgIHN0ZDo6c3RyaW5nOjppdGVyYXRvciBp
dCA9IHN0ci5lbmQoKTsKKyAgd2hpbGUgKGl0ICE9IHN0ci5iZWdpbigpICYmIElzU3BhY2UoKi0t
aXQpKQorICAgIGl0ID0gc3RyLmVyYXNlKGl0KTsKKyAgcmV0dXJuIHN0cjsKK30KKwogLy8gVGhl
IHRlc3Rpbmc6OmludGVybmFsOjpwb3NpeCBuYW1lc3BhY2UgaG9sZHMgd3JhcHBlcnMgZm9yIGNv
bW1vbgogLy8gUE9TSVggZnVuY3Rpb25zLiAgVGhlc2Ugd3JhcHBlcnMgaGlkZSB0aGUgZGlmZmVy
ZW5jZXMgYmV0d2VlbgogLy8gV2luZG93cy9NU1ZDIGFuZCBQT1NJWCBzeXN0ZW1zLiAgU2luY2Ug
c29tZSBjb21waWxlcnMgZGVmaW5lIHRoZXNlCkBAIC0xMzE0LDM2ICsyNDQ5LDM2IEBAIG5hbWVz
cGFjZSBwb3NpeCB7CiAKIHR5cGVkZWYgc3RydWN0IF9zdGF0IFN0YXRTdHJ1Y3Q7CiAKLSNpZmRl
ZiBfX0JPUkxBTkRDX18KKyMgaWZkZWYgX19CT1JMQU5EQ19fCiBpbmxpbmUgaW50IElzQVRUWShp
bnQgZmQpIHsgcmV0dXJuIGlzYXR0eShmZCk7IH0KIGlubGluZSBpbnQgU3RyQ2FzZUNtcChjb25z
dCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIpIHsKICAgcmV0dXJuIHN0cmljbXAoczEsIHMyKTsK
IH0KIGlubGluZSBjaGFyKiBTdHJEdXAoY29uc3QgY2hhciogc3JjKSB7IHJldHVybiBzdHJkdXAo
c3JjKTsgfQotI2Vsc2UgIC8vICFfX0JPUkxBTkRDX18KLSNpZiBHVEVTVF9PU19XSU5ET1dTX01P
QklMRQorIyBlbHNlICAvLyAhX19CT1JMQU5EQ19fCisjICBpZiBHVEVTVF9PU19XSU5ET1dTX01P
QklMRQogaW5saW5lIGludCBJc0FUVFkoaW50IC8qIGZkICovKSB7IHJldHVybiAwOyB9Ci0jZWxz
ZQorIyAgZWxzZQogaW5saW5lIGludCBJc0FUVFkoaW50IGZkKSB7IHJldHVybiBfaXNhdHR5KGZk
KTsgfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyAgZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1NfTU9CSUxFCiBpbmxpbmUgaW50IFN0ckNhc2VDbXAoY29uc3QgY2hhciog
czEsIGNvbnN0IGNoYXIqIHMyKSB7CiAgIHJldHVybiBfc3RyaWNtcChzMSwgczIpOwogfQogaW5s
aW5lIGNoYXIqIFN0ckR1cChjb25zdCBjaGFyKiBzcmMpIHsgcmV0dXJuIF9zdHJkdXAoc3JjKTsg
fQotI2VuZGlmICAvLyBfX0JPUkxBTkRDX18KKyMgZW5kaWYgIC8vIF9fQk9STEFORENfXwogCi0j
aWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
IGlubGluZSBpbnQgRmlsZU5vKEZJTEUqIGZpbGUpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
aW50PihfZmlsZW5vKGZpbGUpKTsgfQogLy8gU3RhdCgpLCBSbURpcigpLCBhbmQgSXNEaXIoKSBh
cmUgbm90IG5lZWRlZCBvbiBXaW5kb3dzIENFIGF0IHRoaXMKIC8vIHRpbWUgYW5kIHRodXMgbm90
IGRlZmluZWQgdGhlcmUuCi0jZWxzZQorIyBlbHNlCiBpbmxpbmUgaW50IEZpbGVObyhGSUxFKiBm
aWxlKSB7IHJldHVybiBfZmlsZW5vKGZpbGUpOyB9CiBpbmxpbmUgaW50IFN0YXQoY29uc3QgY2hh
ciogcGF0aCwgU3RhdFN0cnVjdCogYnVmKSB7IHJldHVybiBfc3RhdChwYXRoLCBidWYpOyB9CiBp
bmxpbmUgaW50IFJtRGlyKGNvbnN0IGNoYXIqIGRpcikgeyByZXR1cm4gX3JtZGlyKGRpcik7IH0K
IGlubGluZSBib29sIElzRGlyKGNvbnN0IFN0YXRTdHJ1Y3QmIHN0KSB7CiAgIHJldHVybiAoX1Nf
SUZESVIgJiBzdC5zdF9tb2RlKSAhPSAwOwogfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dT
X01PQklMRQorIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIAogI2Vsc2UKIApA
QCAtMTM2MywxMSArMjQ5OCw3IEBAIGlubGluZSBib29sIElzRGlyKGNvbnN0IFN0YXRTdHJ1Y3Qm
IHN0KSB7IHJldHVybiBTX0lTRElSKHN0LnN0X21vZGUpOyB9CiAKIC8vIEZ1bmN0aW9ucyBkZXBy
ZWNhdGVkIGJ5IE1TVkMgOC4wLgogCi0jaWZkZWYgX01TQ19WRVIKLS8vIFRlbXBvcmFyaWx5IGRp
c2FibGUgd2FybmluZyA0OTk2IChkZXByZWNhdGVkIGZ1bmN0aW9uKS4KLSNwcmFnbWEgd2Fybmlu
ZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDk5NikKLSNlbmRpZgorR1RFU1RfRElT
QUJMRV9NU0NfREVQUkVDQVRFRF9QVVNIXygpCiAKIGlubGluZSBjb25zdCBjaGFyKiBTdHJOQ3B5
KGNoYXIqIGRlc3QsIGNvbnN0IGNoYXIqIHNyYywgc2l6ZV90IG4pIHsKICAgcmV0dXJuIHN0cm5j
cHkoZGVzdCwgc3JjLCBuKTsKQEAgLTEzNzcsNyArMjUwOCw3IEBAIGlubGluZSBjb25zdCBjaGFy
KiBTdHJOQ3B5KGNoYXIqIGRlc3QsIGNvbnN0IGNoYXIqIHNyYywgc2l6ZV90IG4pIHsKIC8vIFN0
ckVycm9yKCkgYXJlbid0IG5lZWRlZCBvbiBXaW5kb3dzIENFIGF0IHRoaXMgdGltZSBhbmQgdGh1
cyBub3QKIC8vIGRlZmluZWQgdGhlcmUuCiAKLSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
KyNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1dJTkRPV1NfUEhPTkUg
JiYgIUdURVNUX09TX1dJTkRPV1NfUlQKIGlubGluZSBpbnQgQ2hEaXIoY29uc3QgY2hhciogZGly
KSB7IHJldHVybiBjaGRpcihkaXIpOyB9CiAjZW5kaWYKIGlubGluZSBGSUxFKiBGT3Blbihjb25z
dCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyKiBtb2RlKSB7CkBAIC0xNDAxLDggKzI1MzIsOSBAQCBp
bmxpbmUgaW50IENsb3NlKGludCBmZCkgeyByZXR1cm4gY2xvc2UoZmQpOyB9CiBpbmxpbmUgY29u
c3QgY2hhciogU3RyRXJyb3IoaW50IGVycm51bSkgeyByZXR1cm4gc3RyZXJyb3IoZXJybnVtKTsg
fQogI2VuZGlmCiBpbmxpbmUgY29uc3QgY2hhciogR2V0RW52KGNvbnN0IGNoYXIqIG5hbWUpIHsK
LSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxF
IHx8IEdURVNUX09TX1dJTkRPV1NfUEhPTkUgfHwgR1RFU1RfT1NfV0lORE9XU19SVAogICAvLyBX
ZSBhcmUgb24gV2luZG93cyBDRSwgd2hpY2ggaGFzIG5vIGVudmlyb25tZW50IHZhcmlhYmxlcy4K
KyAgc3RhdGljX2Nhc3Q8dm9pZD4obmFtZSk7ICAvLyBUbyBwcmV2ZW50ICd1bnVzZWQgYXJndW1l
bnQnIHdhcm5pbmcuCiAgIHJldHVybiBOVUxMOwogI2VsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18p
IHx8IGRlZmluZWQoX19TdW5PU181XzgpIHx8IGRlZmluZWQoX19TdW5PU181XzkpCiAgIC8vIEVu
dmlyb25tZW50IHZhcmlhYmxlcyB3aGljaCB3ZSBwcm9ncmFtbWF0aWNhbGx5IGNsZWFyIHdpbGwg
YmUgc2V0IHRvIHRoZQpAQCAtMTQxNCw5ICsyNTQ2LDcgQEAgaW5saW5lIGNvbnN0IGNoYXIqIEdl
dEVudihjb25zdCBjaGFyKiBuYW1lKSB7CiAjZW5kaWYKIH0KIAotI2lmZGVmIF9NU0NfVkVSCi0j
cHJhZ21hIHdhcm5pbmcocG9wKSAgLy8gUmVzdG9yZXMgdGhlIHdhcm5pbmcgc3RhdGUuCi0jZW5k
aWYKK0dURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUE9QXygpCiAKICNpZiBHVEVTVF9PU19X
SU5ET1dTX01PQklMRQogLy8gV2luZG93cyBDRSBoYXMgbm8gQyBsaWJyYXJ5LiBUaGUgYWJvcnQo
KSBmdW5jdGlvbiBpcyB1c2VkIGluCkBAIC0xNDI5LDYgKzI1NTksMjMgQEAgaW5saW5lIHZvaWQg
QWJvcnQoKSB7IGFib3J0KCk7IH0KIAogfSAgLy8gbmFtZXNwYWNlIHBvc2l4CiAKKy8vIE1TVkMg
ImRlcHJlY2F0ZXMiIHNucHJpbnRmIGFuZCBpc3N1ZXMgd2FybmluZ3Mgd2hlcmV2ZXIgaXQgaXMg
dXNlZC4gIEluCisvLyBvcmRlciB0byBhdm9pZCB0aGVzZSB3YXJuaW5ncywgd2UgbmVlZCB0byB1
c2UgX3NucHJpbnRmIG9yIF9zbnByaW50Zl9zIG9uCisvLyBNU1ZDLWJhc2VkIHBsYXRmb3Jtcy4g
IFdlIG1hcCB0aGUgR1RFU1RfU05QUklOVEZfIG1hY3JvIHRvIHRoZSBhcHByb3ByaWF0ZQorLy8g
ZnVuY3Rpb24gaW4gb3JkZXIgdG8gYWNoaWV2ZSB0aGF0LiAgV2UgdXNlIG1hY3JvIGRlZmluaXRp
b24gaGVyZSBiZWNhdXNlCisvLyBzbnByaW50ZiBpcyBhIHZhcmlhZGljIGZ1bmN0aW9uLgorI2lm
IF9NU0NfVkVSID49IDE0MDAgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisvLyBNU1ZDIDIw
MDUgYW5kIGFib3ZlIHN1cHBvcnQgdmFyaWFkaWMgbWFjcm9zLgorIyBkZWZpbmUgR1RFU1RfU05Q
UklOVEZfKGJ1ZmZlciwgc2l6ZSwgZm9ybWF0LCAuLi4pIFwKKyAgICAgX3NucHJpbnRmX3MoYnVm
ZmVyLCBzaXplLCBzaXplLCBmb3JtYXQsIF9fVkFfQVJHU19fKQorI2VsaWYgZGVmaW5lZChfTVND
X1ZFUikKKy8vIFdpbmRvd3MgQ0UgZG9lcyBub3QgZGVmaW5lIF9zbnByaW50Zl9zIGFuZCBNU1ZD
IHByaW9yIHRvIDIwMDUgZG9lc24ndAorLy8gY29tcGxhaW4gYWJvdXQgX3NucHJpbnRmLgorIyBk
ZWZpbmUgR1RFU1RfU05QUklOVEZfIF9zbnByaW50ZgorI2Vsc2UKKyMgZGVmaW5lIEdURVNUX1NO
UFJJTlRGXyBzbnByaW50ZgorI2VuZGlmCisKIC8vIFRoZSBtYXhpbXVtIG51bWJlciBhIEJpZ2dl
c3RJbnQgY2FuIHJlcHJlc2VudC4gIFRoaXMgZGVmaW5pdGlvbgogLy8gd29ya3Mgbm8gbWF0dGVy
IEJpZ2dlc3RJbnQgaXMgcmVwcmVzZW50ZWQgaW4gb25lJ3MgY29tcGxlbWVudCBvcgogLy8gdHdv
J3MgY29tcGxlbWVudC4KQEAgLTE1MDAsMjcgKzI2NDcsNDQgQEAgdHlwZWRlZiBUeXBlV2l0aFNp
emU8OD46OkludCBUaW1lSW5NaWxsaXM7ICAvLyBSZXByZXNlbnRzIHRpbWUgaW4gbWlsbGlzZWNv
bmRzLgogLy8gVXRpbGl0aWVzIGZvciBjb21tYW5kIGxpbmUgZmxhZ3MgYW5kIGVudmlyb25tZW50
IHZhcmlhYmxlcy4KIAogLy8gTWFjcm8gZm9yIHJlZmVyZW5jaW5nIGZsYWdzLgotI2RlZmluZSBH
VEVTVF9GTEFHKG5hbWUpIEZMQUdTX2d0ZXN0XyMjbmFtZQorI2lmICFkZWZpbmVkKEdURVNUX0ZM
QUcpCisjIGRlZmluZSBHVEVTVF9GTEFHKG5hbWUpIEZMQUdTX2d0ZXN0XyMjbmFtZQorI2VuZGlm
ICAvLyAhZGVmaW5lZChHVEVTVF9GTEFHKQorCisjaWYgIWRlZmluZWQoR1RFU1RfVVNFX09XTl9G
TEFHRklMRV9GTEFHXykKKyMgZGVmaW5lIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18gMQor
I2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfKQorCisjaWYg
IWRlZmluZWQoR1RFU1RfREVDTEFSRV9ib29sXykKKyMgZGVmaW5lIEdURVNUX0ZMQUdfU0FWRVJf
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkdUZXN0RmxhZ1NhdmVyCiAKIC8vIE1hY3JvcyBmb3IgZGVj
bGFyaW5nIGZsYWdzLgotI2RlZmluZSBHVEVTVF9ERUNMQVJFX2Jvb2xfKG5hbWUpIEdURVNUX0FQ
SV8gZXh0ZXJuIGJvb2wgR1RFU1RfRkxBRyhuYW1lKQotI2RlZmluZSBHVEVTVF9ERUNMQVJFX2lu
dDMyXyhuYW1lKSBcCisjIGRlZmluZSBHVEVTVF9ERUNMQVJFX2Jvb2xfKG5hbWUpIEdURVNUX0FQ
SV8gZXh0ZXJuIGJvb2wgR1RFU1RfRkxBRyhuYW1lKQorIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9p
bnQzMl8obmFtZSkgXAogICAgIEdURVNUX0FQSV8gZXh0ZXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6
OkludDMyIEdURVNUX0ZMQUcobmFtZSkKLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9zdHJpbmdfKG5h
bWUpIFwKLSAgICBHVEVTVF9BUElfIGV4dGVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmcg
R1RFU1RfRkxBRyhuYW1lKQorIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9zdHJpbmdfKG5hbWUpIFwK
KyAgICBHVEVTVF9BUElfIGV4dGVybiA6OnN0ZDo6c3RyaW5nIEdURVNUX0ZMQUcobmFtZSkKIAog
Ly8gTWFjcm9zIGZvciBkZWZpbmluZyBmbGFncy4KLSNkZWZpbmUgR1RFU1RfREVGSU5FX2Jvb2xf
KG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpIFwKKyMgZGVmaW5lIEdURVNUX0RFRklORV9ib29sXyhu
YW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCiAgICAgR1RFU1RfQVBJXyBib29sIEdURVNUX0ZMQUco
bmFtZSkgPSAoZGVmYXVsdF92YWwpCi0jZGVmaW5lIEdURVNUX0RFRklORV9pbnQzMl8obmFtZSwg
ZGVmYXVsdF92YWwsIGRvYykgXAorIyBkZWZpbmUgR1RFU1RfREVGSU5FX2ludDMyXyhuYW1lLCBk
ZWZhdWx0X3ZhbCwgZG9jKSBcCiAgICAgR1RFU1RfQVBJXyA6OnRlc3Rpbmc6OmludGVybmFsOjpJ
bnQzMiBHVEVTVF9GTEFHKG5hbWUpID0gKGRlZmF1bHRfdmFsKQotI2RlZmluZSBHVEVTVF9ERUZJ
TkVfc3RyaW5nXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCi0gICAgR1RFU1RfQVBJXyA6OnRl
c3Rpbmc6OmludGVybmFsOjpTdHJpbmcgR1RFU1RfRkxBRyhuYW1lKSA9IChkZWZhdWx0X3ZhbCkK
KyMgZGVmaW5lIEdURVNUX0RFRklORV9zdHJpbmdfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpIFwK
KyAgICBHVEVTVF9BUElfIDo6c3RkOjpzdHJpbmcgR1RFU1RfRkxBRyhuYW1lKSA9IChkZWZhdWx0
X3ZhbCkKKworI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9ERUNMQVJFX2Jvb2xfKQorCisvLyBU
aHJlYWQgYW5ub3RhdGlvbnMKKyNpZiAhZGVmaW5lZChHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFV
SVJFRF8pCisjIGRlZmluZSBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8obG9ja3MpCisj
IGRlZmluZSBHVEVTVF9MT0NLX0VYQ0xVREVEXyhsb2NrcykKKyNlbmRpZiAgLy8gIWRlZmluZWQo
R1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKQogCiAvLyBQYXJzZXMgJ3N0cicgZm9yIGEg
MzItYml0IHNpZ25lZCBpbnRlZ2VyLiAgSWYgc3VjY2Vzc2Z1bCwgd3JpdGVzIHRoZSByZXN1bHQK
IC8vIHRvICp2YWx1ZSBhbmQgcmV0dXJucyB0cnVlOyBvdGhlcndpc2UgbGVhdmVzICp2YWx1ZSB1
bmNoYW5nZWQgYW5kIHJldHVybnMKIC8vIGZhbHNlLgotLy8gVE9ETyhjaGFuZGxlcmMpOiBGaW5k
IGEgYmV0dGVyIHdheSB0byByZWZhY3RvciBmbGFnIGFuZCBlbnZpcm9ubWVudCBwYXJzaW5nCisv
LyBGSVhNRTogRmluZCBhIGJldHRlciB3YXkgdG8gcmVmYWN0b3IgZmxhZyBhbmQgZW52aXJvbm1l
bnQgcGFyc2luZwogLy8gb3V0IG9mIGJvdGggZ3Rlc3QtcG9ydC5jYyBhbmQgZ3Rlc3QuY2MgdG8g
YXZvaWQgZXhwb3J0aW5nIHRoaXMgdXRpbGl0eQogLy8gZnVuY3Rpb24uCiBib29sIFBhcnNlSW50
MzIoY29uc3QgTWVzc2FnZSYgc3JjX3RleHQsIGNvbnN0IGNoYXIqIHN0ciwgSW50MzIqIHZhbHVl
KTsKQEAgLTE1MjksNiArMjY5Myw3IEBAIGJvb2wgUGFyc2VJbnQzMihjb25zdCBNZXNzYWdlJiBz
cmNfdGV4dCwgY29uc3QgY2hhciogc3RyLCBJbnQzMiogdmFsdWUpOwogLy8gY29ycmVzcG9uZGlu
ZyB0byB0aGUgZ2l2ZW4gR29vZ2xlIFRlc3QgZmxhZy4KIGJvb2wgQm9vbEZyb21HVGVzdEVudihj
b25zdCBjaGFyKiBmbGFnLCBib29sIGRlZmF1bHRfdmFsKTsKIEdURVNUX0FQSV8gSW50MzIgSW50
MzJGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywgSW50MzIgZGVmYXVsdF92YWwpOworc3Rk
OjpzdHJpbmcgT3V0cHV0RmxhZ0Fsc29DaGVja0VudlZhcigpOwogY29uc3QgY2hhciogU3RyaW5n
RnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIGNvbnN0IGNoYXIqIGRlZmF1bHRfdmFsKTsK
IAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaAppbmRl
eCBhZmYwOTNkZWM4ZGIzOTkwNzRlYTNiNzFiYjcyMjdkYTdlOTY3MzBhLi40YzliNjI2MmMzYzEw
MzcyNmFhM2NhYjRjMTk5OTViYWVmOTU4Yjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgK
QEAgLTI3LDcwICsyNywzOCBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogLy8K
LS8vIEF1dGhvcnM6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pLCBlZWZhY21AZ21haWwu
Y29tIChTZWFuIE1jYWZlZSkKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29y
ayAoR29vZ2xlIFRlc3QpCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZy
YW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWNsYXJlcyB0
aGUgU3RyaW5nIGNsYXNzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5IGJ5CiAvLyBHb29n
bGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLiBUaGV5
IHNob3VsZCBub3QgdXNlZAogLy8gYnkgY29kZSBleHRlcm5hbCB0byBHb29nbGUgVGVzdC4KIC8v
Ci0vLyBUaGlzIGhlYWRlciBmaWxlIGlzICNpbmNsdWRlZCBieSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtaW50ZXJuYWwuaD4uCisvLyBUaGlzIGhlYWRlciBmaWxlIGlzICNpbmNsdWRlZCBieSBndGVz
dC1pbnRlcm5hbC5oLgogLy8gSXQgc2hvdWxkIG5vdCBiZSAjaW5jbHVkZWQgYnkgb3RoZXIgZmls
ZXMuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKKwogI2lmbmRlZiBHVEVT
VF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1NUUklOR19IXwogI2RlZmluZSBHVEVTVF9J
TkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1NUUklOR19IXwogCiAjaWZkZWYgX19CT1JMQU5E
Q19fCiAvLyBzdHJpbmcuaCBpcyBub3QgZ3VhcmFudGVlZCB0byBwcm92aWRlIHN0cmNweSBvbiBD
KysgQnVpbGRlci4KLSNpbmNsdWRlIDxtZW0uaD4KKyMgaW5jbHVkZSA8bWVtLmg+CiAjZW5kaWYK
IAogI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaD4KLQogI2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaCIKKwogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsK
IAotLy8gU3RyaW5nIC0gYSBVVEYtOCBzdHJpbmcgY2xhc3MuCi0vLwotLy8gRm9yIGhpc3Rvcmlj
IHJlYXNvbnMsIHdlIGRvbid0IHVzZSBzdGQ6OnN0cmluZy4KLS8vCi0vLyBUT0RPKHdhbkBnb29n
bGUuY29tKTogcmVwbGFjZSB0aGlzIGNsYXNzIHdpdGggc3RkOjpzdHJpbmcgb3IKLS8vIGltcGxl
bWVudCBpdCBpbiB0ZXJtcyBvZiB0aGUgbGF0dGVyLgotLy8KLS8vIE5vdGUgdGhhdCBTdHJpbmcg
Y2FuIHJlcHJlc2VudCBib3RoIE5VTEwgYW5kIHRoZSBlbXB0eSBzdHJpbmcsCi0vLyB3aGlsZSBz
dGQ6OnN0cmluZyBjYW5ub3QgcmVwcmVzZW50IE5VTEwuCi0vLwotLy8gTlVMTCBhbmQgdGhlIGVt
cHR5IHN0cmluZyBhcmUgY29uc2lkZXJlZCBkaWZmZXJlbnQuICBOVUxMIGlzIGxlc3MKLS8vIHRo
YW4gYW55dGhpbmcgKGluY2x1ZGluZyB0aGUgZW1wdHkgc3RyaW5nKSBleGNlcHQgaXRzZWxmLgot
Ly8KLS8vIFRoaXMgY2xhc3Mgb25seSBwcm92aWRlcyBtaW5pbXVtIGZ1bmN0aW9uYWxpdHkgbmVj
ZXNzYXJ5IGZvcgotLy8gaW1wbGVtZW50aW5nIEdvb2dsZSBUZXN0LiAgV2UgZG8gbm90IGludGVu
ZCB0byBpbXBsZW1lbnQgYSBmdWxsLWZsZWRnZWQKLS8vIHN0cmluZyBjbGFzcyBoZXJlLgotLy8K
LS8vIFNpbmNlIHRoZSBwdXJwb3NlIG9mIHRoaXMgY2xhc3MgaXMgdG8gcHJvdmlkZSBhIHN1YnN0
aXR1dGUgZm9yCi0vLyBzdGQ6OnN0cmluZyBvbiBwbGF0Zm9ybXMgd2hlcmUgaXQgY2Fubm90IGJl
IHVzZWQsIHdlIGRlZmluZSBhIGNvcHkKLS8vIGNvbnN0cnVjdG9yIGFuZCBhc3NpZ25tZW50IG9w
ZXJhdG9ycyBzdWNoIHRoYXQgd2UgZG9uJ3QgbmVlZAotLy8gY29uZGl0aW9uYWwgY29tcGlsYXRp
b24gaW4gYSBsb3Qgb2YgcGxhY2VzLgotLy8KLS8vIEluIG9yZGVyIHRvIG1ha2UgdGhlIHJlcHJl
c2VudGF0aW9uIGVmZmljaWVudCwgdGhlIGQndG9yIG9mIFN0cmluZwotLy8gaXMgbm90IHZpcnR1
YWwuICBUaGVyZWZvcmUgRE8gTk9UIElOSEVSSVQgRlJPTSBTdHJpbmcuCisvLyBTdHJpbmcgLSBh
biBhYnN0cmFjdCBjbGFzcyBob2xkaW5nIHN0YXRpYyBzdHJpbmcgdXRpbGl0aWVzLgogY2xhc3Mg
R1RFU1RfQVBJXyBTdHJpbmcgewogIHB1YmxpYzoKICAgLy8gU3RhdGljIHV0aWxpdHkgbWV0aG9k
cwogCi0gIC8vIFJldHVybnMgdGhlIGlucHV0IGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZXMgaWYg
aXQncyBub3QgTlVMTDsKLSAgLy8gb3RoZXJ3aXNlIHJldHVybnMgIihudWxsKSIuICBGb3IgZXhh
bXBsZSwgIlwiSGVsbG9cIiIgaXMgcmV0dXJuZWQKLSAgLy8gZm9yIGlucHV0ICJIZWxsbyIuCi0g
IC8vCi0gIC8vIFRoaXMgaXMgdXNlZnVsIGZvciBwcmludGluZyBhIEMgc3RyaW5nIGluIHRoZSBz
eW50YXggb2YgYSBsaXRlcmFsLgotICAvLwotICAvLyBLbm93biBpc3N1ZTogZXNjYXBlIHNlcXVl
bmNlcyBhcmUgbm90IGhhbmRsZWQgeWV0LgotICBzdGF0aWMgU3RyaW5nIFNob3dDU3RyaW5nUXVv
dGVkKGNvbnN0IGNoYXIqIGNfc3RyKTsKLQogICAvLyBDbG9uZXMgYSAwLXRlcm1pbmF0ZWQgQyBz
dHJpbmcsIGFsbG9jYXRpbmcgbWVtb3J5IHVzaW5nIG5ldy4gIFRoZQogICAvLyBjYWxsZXIgaXMg
cmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZSByZXR1cm4gdmFsdWUgdXNpbmcKICAgLy8gZGVs
ZXRlW10uICBSZXR1cm5zIHRoZSBjbG9uZWQgc3RyaW5nLCBvciBOVUxMIGlmIHRoZSBpbnB1dCBp
cwpAQCAtMTM3LDExICsxMDUsNyBAQCBjbGFzcyBHVEVTVF9BUElfIFN0cmluZyB7CiAgIC8vIE5V
TEwgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gIihudWxsKSIuICBJZiBhbiBlcnJvciBvY2N1cnJlZCBk
dXJpbmcKICAgLy8gdGhlIGNvbnZlcnNpb24sICIoZmFpbGVkIHRvIGNvbnZlcnQgZnJvbSB3aWRl
IHN0cmluZykiIGlzCiAgIC8vIHJldHVybmVkLgotICBzdGF0aWMgU3RyaW5nIFNob3dXaWRlQ1N0
cmluZyhjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKTsKLQotICAvLyBTaW1pbGFyIHRvIFNob3dX
aWRlQ1N0cmluZygpLCBleGNlcHQgdGhhdCB0aGlzIGZ1bmN0aW9uIGVuY2xvc2VzCi0gIC8vIHRo
ZSBjb252ZXJ0ZWQgc3RyaW5nIGluIGRvdWJsZSBxdW90ZXMuCi0gIHN0YXRpYyBTdHJpbmcgU2hv
d1dpZGVDU3RyaW5nUXVvdGVkKGNvbnN0IHdjaGFyX3QqIHdpZGVfY19zdHIpOworICBzdGF0aWMg
c3RkOjpzdHJpbmcgU2hvd1dpZGVDU3RyaW5nKGNvbnN0IHdjaGFyX3QqIHdpZGVfY19zdHIpOwog
CiAgIC8vIENvbXBhcmVzIHR3byB3aWRlIEMgc3RyaW5ncy4gIFJldHVybnMgdHJ1ZSBpZmYgdGhl
eSBoYXZlIHRoZSBzYW1lCiAgIC8vIGNvbnRlbnQuCkBAIC0xNzUsMTc0ICsxMzksMjcgQEAgY2xh
c3MgR1RFU1RfQVBJXyBTdHJpbmcgewogICBzdGF0aWMgYm9vbCBDYXNlSW5zZW5zaXRpdmVXaWRl
Q1N0cmluZ0VxdWFscyhjb25zdCB3Y2hhcl90KiBsaHMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIHJocyk7CiAKLSAgLy8gRm9y
bWF0cyBhIGxpc3Qgb2YgYXJndW1lbnRzIHRvIGEgU3RyaW5nLCB1c2luZyB0aGUgc2FtZSBmb3Jt
YXQKLSAgLy8gc3BlYyBzdHJpbmcgYXMgZm9yIHByaW50Zi4KLSAgLy8KLSAgLy8gV2UgZG8gbm90
IHVzZSB0aGUgU3RyaW5nUHJpbnRmIGNsYXNzIGFzIGl0IGlzIG5vdCB1bml2ZXJzYWxseQotICAv
LyBhdmFpbGFibGUuCi0gIC8vCi0gIC8vIFRoZSByZXN1bHQgaXMgbGltaXRlZCB0byA0MDk2IGNo
YXJhY3RlcnMgKGluY2x1ZGluZyB0aGUgdGFpbGluZwotICAvLyAwKS4gIElmIDQwOTYgY2hhcmFj
dGVycyBhcmUgbm90IGVub3VnaCB0byBmb3JtYXQgdGhlIGlucHV0LAotICAvLyAiPGJ1ZmZlciBl
eGNlZWRlZD4iIGlzIHJldHVybmVkLgotICBzdGF0aWMgU3RyaW5nIEZvcm1hdChjb25zdCBjaGFy
KiBmb3JtYXQsIC4uLik7Ci0KLSAgLy8gQyd0b3JzCi0KLSAgLy8gVGhlIGRlZmF1bHQgYyd0b3Ig
Y29uc3RydWN0cyBhIE5VTEwgc3RyaW5nLgotICBTdHJpbmcoKSA6IGNfc3RyXyhOVUxMKSwgbGVu
Z3RoXygwKSB7fQotCi0gIC8vIENvbnN0cnVjdHMgYSBTdHJpbmcgYnkgY2xvbmluZyBhIDAtdGVy
bWluYXRlZCBDIHN0cmluZy4KLSAgU3RyaW5nKGNvbnN0IGNoYXIqIGFfY19zdHIpIHsgIC8vIE5P
TElOVAotICAgIGlmIChhX2Nfc3RyID09IE5VTEwpIHsKLSAgICAgIGNfc3RyXyA9IE5VTEw7Ci0g
ICAgICBsZW5ndGhfID0gMDsKLSAgICB9IGVsc2UgewotICAgICAgQ29uc3RydWN0Tm9uTnVsbChh
X2Nfc3RyLCBzdHJsZW4oYV9jX3N0cikpOwotICAgIH0KLSAgfQorICAvLyBSZXR1cm5zIHRydWUg
aWZmIHRoZSBnaXZlbiBzdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXgsIGlnbm9yaW5n
CisgIC8vIGNhc2UuIEFueSBzdHJpbmcgaXMgY29uc2lkZXJlZCB0byBlbmQgd2l0aCBhbiBlbXB0
eSBzdWZmaXguCisgIHN0YXRpYyBib29sIEVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKAorICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHN0ciwgY29uc3Qgc3RkOjpzdHJpbmcmIHN1ZmZpeCk7CiAKLSAg
Ly8gQ29uc3RydWN0cyBhIFN0cmluZyBieSBjb3B5aW5nIGEgZ2l2ZW4gbnVtYmVyIG9mIGNoYXJz
IGZyb20gYQotICAvLyBidWZmZXIuICBFLmcuIFN0cmluZygiaGVsbG8iLCAzKSBjcmVhdGVzIHRo
ZSBzdHJpbmcgImhlbCIsCi0gIC8vIFN0cmluZygiYVwwYmNkIiwgNCkgY3JlYXRlcyAiYVwwYmMi
LCBTdHJpbmcoTlVMTCwgMCkgY3JlYXRlcyAiIiwKLSAgLy8gYW5kIFN0cmluZyhOVUxMLCAxKSBy
ZXN1bHRzIGluIGFjY2VzcyB2aW9sYXRpb24uCi0gIFN0cmluZyhjb25zdCBjaGFyKiBidWZmZXIs
IHNpemVfdCBhX2xlbmd0aCkgewotICAgIENvbnN0cnVjdE5vbk51bGwoYnVmZmVyLCBhX2xlbmd0
aCk7Ci0gIH0KKyAgLy8gRm9ybWF0cyBhbiBpbnQgdmFsdWUgYXMgIiUwMmQiLgorICBzdGF0aWMg
c3RkOjpzdHJpbmcgRm9ybWF0SW50V2lkdGgyKGludCB2YWx1ZSk7ICAvLyAiJTAyZCIgZm9yIHdp
ZHRoID09IDIKIAotICAvLyBUaGUgY29weSBjJ3RvciBjcmVhdGVzIGEgbmV3IGNvcHkgb2YgdGhl
IHN0cmluZy4gIFRoZSB0d28KLSAgLy8gU3RyaW5nIG9iamVjdHMgZG8gbm90IHNoYXJlIGNvbnRl
bnQuCi0gIFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cikgOiBjX3N0cl8oTlVMTCksIGxlbmd0aF8o
MCkgeyAqdGhpcyA9IHN0cjsgfQorICAvLyBGb3JtYXRzIGFuIGludCB2YWx1ZSBhcyAiJVgiLgor
ICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0SGV4SW50KGludCB2YWx1ZSk7CiAKLSAgLy8gRCd0
b3IuICBTdHJpbmcgaXMgaW50ZW5kZWQgdG8gYmUgYSBmaW5hbCBjbGFzcywgc28gdGhlIGQndG9y
Ci0gIC8vIGRvZXNuJ3QgbmVlZCB0byBiZSB2aXJ0dWFsLgotICB+U3RyaW5nKCkgeyBkZWxldGVb
XSBjX3N0cl87IH0KLQotICAvLyBBbGxvd3MgYSBTdHJpbmcgdG8gYmUgaW1wbGljaXRseSBjb252
ZXJ0ZWQgdG8gYW4gOjpzdGQ6OnN0cmluZyBvcgotICAvLyA6OnN0cmluZywgYW5kIHZpY2UgdmVy
c2EuICBDb252ZXJ0aW5nIGEgU3RyaW5nIGNvbnRhaW5pbmcgYSBOVUxMCi0gIC8vIHBvaW50ZXIg
dG8gOjpzdGQ6OnN0cmluZyBvciA6OnN0cmluZyBpcyB1bmRlZmluZWQgYmVoYXZpb3IuCi0gIC8v
IENvbnZlcnRpbmcgYSA6OnN0ZDo6c3RyaW5nIG9yIDo6c3RyaW5nIGNvbnRhaW5pbmcgYW4gZW1i
ZWRkZWQgTlVMCi0gIC8vIGNoYXJhY3RlciB0byBhIFN0cmluZyB3aWxsIHJlc3VsdCBpbiB0aGUg
cHJlZml4IHVwIHRvIHRoZSBmaXJzdAotICAvLyBOVUwgY2hhcmFjdGVyLgotICBTdHJpbmcoY29u
c3QgOjpzdGQ6OnN0cmluZyYgc3RyKSB7Ci0gICAgQ29uc3RydWN0Tm9uTnVsbChzdHIuY19zdHIo
KSwgc3RyLmxlbmd0aCgpKTsKLSAgfQotCi0gIG9wZXJhdG9yIDo6c3RkOjpzdHJpbmcoKSBjb25z
dCB7IHJldHVybiA6OnN0ZDo6c3RyaW5nKGNfc3RyKCksIGxlbmd0aCgpKTsgfQotCi0jaWYgR1RF
U1RfSEFTX0dMT0JBTF9TVFJJTkcKLSAgU3RyaW5nKGNvbnN0IDo6c3RyaW5nJiBzdHIpIHsKLSAg
ICBDb25zdHJ1Y3ROb25OdWxsKHN0ci5jX3N0cigpLCBzdHIubGVuZ3RoKCkpOwotICB9Ci0KLSAg
b3BlcmF0b3IgOjpzdHJpbmcoKSBjb25zdCB7IHJldHVybiA6OnN0cmluZyhjX3N0cigpLCBsZW5n
dGgoKSk7IH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLQotICAvLyBSZXR1
cm5zIHRydWUgaWZmIHRoaXMgaXMgYW4gZW1wdHkgc3RyaW5nIChpLmUuICIiKS4KLSAgYm9vbCBl
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIChjX3N0cigpICE9IE5VTEwpICYmIChsZW5ndGgoKSA9PSAw
KTsgfQotCi0gIC8vIENvbXBhcmVzIHRoaXMgd2l0aCBhbm90aGVyIFN0cmluZy4KLSAgLy8gUmV0
dXJucyA8IDAgaWYgdGhpcyBpcyBsZXNzIHRoYW4gcmhzLCAwIGlmIHRoaXMgaXMgZXF1YWwgdG8g
cmhzLCBvciA+IDAKLSAgLy8gaWYgdGhpcyBpcyBncmVhdGVyIHRoYW4gcmhzLgotICBpbnQgQ29t
cGFyZShjb25zdCBTdHJpbmcmIHJocykgY29uc3Q7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0
aGlzIFN0cmluZyBlcXVhbHMgdGhlIGdpdmVuIEMgc3RyaW5nLiAgQSBOVUxMCi0gIC8vIHN0cmlu
ZyBhbmQgYSBub24tTlVMTCBzdHJpbmcgYXJlIGNvbnNpZGVyZWQgbm90IGVxdWFsLgotICBib29s
IG9wZXJhdG9yPT0oY29uc3QgY2hhciogYV9jX3N0cikgY29uc3QgeyByZXR1cm4gQ29tcGFyZShh
X2Nfc3RyKSA9PSAwOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIFN0cmluZyBpcyBs
ZXNzIHRoYW4gdGhlIGdpdmVuIFN0cmluZy4gIEEKLSAgLy8gTlVMTCBzdHJpbmcgaXMgY29uc2lk
ZXJlZCBsZXNzIHRoYW4gIiIuCi0gIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFN0cmluZyYgcmhzKSBj
b25zdCB7IHJldHVybiBDb21wYXJlKHJocykgPCAwOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlm
ZiB0aGlzIFN0cmluZyBkb2Vzbid0IGVxdWFsIHRoZSBnaXZlbiBDIHN0cmluZy4gIEEgTlVMTAot
ICAvLyBzdHJpbmcgYW5kIGEgbm9uLU5VTEwgc3RyaW5nIGFyZSBjb25zaWRlcmVkIG5vdCBlcXVh
bC4KLSAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIqIGFfY19zdHIpIGNvbnN0IHsgcmV0dXJu
ICEoKnRoaXMgPT0gYV9jX3N0cik7IH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgU3Ry
aW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LiAgKkFueSoKLSAgLy8gU3RyaW5nIGlzIGNv
bnNpZGVyZWQgdG8gZW5kIHdpdGggYSBOVUxMIG9yIGVtcHR5IHN1ZmZpeC4KLSAgYm9vbCBFbmRz
V2l0aChjb25zdCBjaGFyKiBzdWZmaXgpIGNvbnN0OwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYg
dGhpcyBTdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXgsIG5vdCBjb25zaWRlcmluZwot
ICAvLyBjYXNlLiBBbnkgU3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGggYSBOVUxMIG9y
IGVtcHR5IHN1ZmZpeC4KLSAgYm9vbCBFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZShjb25zdCBjaGFy
KiBzdWZmaXgpIGNvbnN0OwotCi0gIC8vIFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgZW5jYXBz
dWxhdGVkIHN0cmluZywgb3IgMCBpZiB0aGUKLSAgLy8gc3RyaW5nIGlzIE5VTEwuCi0gIHNpemVf
dCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBsZW5ndGhfOyB9Ci0KLSAgLy8gR2V0cyB0aGUgMC10
ZXJtaW5hdGVkIEMgc3RyaW5nIHRoaXMgU3RyaW5nIG9iamVjdCByZXByZXNlbnRzLgotICAvLyBU
aGUgU3RyaW5nIG9iamVjdCBzdGlsbCBvd25zIHRoZSBzdHJpbmcuICBUaGVyZWZvcmUgdGhlIGNh
bGxlcgotICAvLyBzaG91bGQgTk9UIGRlbGV0ZSB0aGUgcmV0dXJuIHZhbHVlLgotICBjb25zdCBj
aGFyKiBjX3N0cigpIGNvbnN0IHsgcmV0dXJuIGNfc3RyXzsgfQotCi0gIC8vIEFzc2lnbnMgYSBD
IHN0cmluZyB0byB0aGlzIG9iamVjdC4gIFNlbGYtYXNzaWdubWVudCB3b3Jrcy4KLSAgY29uc3Qg
U3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgY2hhciogYV9jX3N0cikgewotICAgIHJldHVybiAqdGhp
cyA9IFN0cmluZyhhX2Nfc3RyKTsKLSAgfQotCi0gIC8vIEFzc2lnbnMgYSBTdHJpbmcgb2JqZWN0
IHRvIHRoaXMgb2JqZWN0LiAgU2VsZi1hc3NpZ25tZW50IHdvcmtzLgotICBjb25zdCBTdHJpbmcm
IG9wZXJhdG9yPShjb25zdCBTdHJpbmcmIHJocykgewotICAgIGlmICh0aGlzICE9ICZyaHMpIHsK
LSAgICAgIGRlbGV0ZVtdIGNfc3RyXzsKLSAgICAgIGlmIChyaHMuY19zdHIoKSA9PSBOVUxMKSB7
Ci0gICAgICAgIGNfc3RyXyA9IE5VTEw7Ci0gICAgICAgIGxlbmd0aF8gPSAwOwotICAgICAgfSBl
bHNlIHsKLSAgICAgICAgQ29uc3RydWN0Tm9uTnVsbChyaHMuY19zdHIoKSwgcmhzLmxlbmd0aCgp
KTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KKyAgLy8gRm9ybWF0
cyBhIGJ5dGUgYXMgIiUwMlgiLgorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0Qnl0ZSh1bnNp
Z25lZCBjaGFyIHZhbHVlKTsKIAogIHByaXZhdGU6Ci0gIC8vIENvbnN0cnVjdHMgYSBub24tTlVM
TCBTdHJpbmcgZnJvbSB0aGUgZ2l2ZW4gY29udGVudC4gIFRoaXMKLSAgLy8gZnVuY3Rpb24gY2Fu
IG9ubHkgYmUgY2FsbGVkIHdoZW4gZGF0YV8gaGFzIG5vdCBiZWVuIGFsbG9jYXRlZC4KLSAgLy8g
Q29uc3RydWN0Tm9uTnVsbChOVUxMLCAwKSByZXN1bHRzIGluIGFuIGVtcHR5IHN0cmluZyAoIiIp
LgotICAvLyBDb25zdHJ1Y3ROb25OdWxsKE5VTEwsIG5vbl96ZXJvKSBpcyB1bmRlZmluZWQgYmVo
YXZpb3IuCi0gIHZvaWQgQ29uc3RydWN0Tm9uTnVsbChjb25zdCBjaGFyKiBidWZmZXIsIHNpemVf
dCBhX2xlbmd0aCkgewotICAgIGNoYXIqIGNvbnN0IHN0ciA9IG5ldyBjaGFyW2FfbGVuZ3RoICsg
MV07Ci0gICAgbWVtY3B5KHN0ciwgYnVmZmVyLCBhX2xlbmd0aCk7Ci0gICAgc3RyW2FfbGVuZ3Ro
XSA9ICdcMCc7Ci0gICAgY19zdHJfID0gc3RyOwotICAgIGxlbmd0aF8gPSBhX2xlbmd0aDsKLSAg
fQotCi0gIGNvbnN0IGNoYXIqIGNfc3RyXzsKLSAgc2l6ZV90IGxlbmd0aF87CisgIFN0cmluZygp
OyAgLy8gTm90IG1lYW50IHRvIGJlIGluc3RhbnRpYXRlZC4KIH07ICAvLyBjbGFzcyBTdHJpbmcK
IAotLy8gU3RyZWFtcyBhIFN0cmluZyB0byBhbiBvc3RyZWFtLiAgRWFjaCAnXDAnIGNoYXJhY3Rl
ciBpbiB0aGUgU3RyaW5nCi0vLyBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgotaW5saW5lIDo6c3Rk
Ojpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBvcywgY29uc3QgU3RyaW5nJiBz
dHIpIHsKLSAgaWYgKHN0ci5jX3N0cigpID09IE5VTEwpIHsKLSAgICBvcyA8PCAiKG51bGwpIjsK
LSAgfSBlbHNlIHsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBjX3N0ciA9IHN0ci5jX3N0cigpOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHN0ci5sZW5ndGgoKTsgaSsrKSB7Ci0gICAgICBp
ZiAoY19zdHJbaV0gPT0gJ1wwJykgewotICAgICAgICBvcyA8PCAiXFwwIjsKLSAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgIG9zIDw8IGNfc3RyW2ldOwotICAgICAgfQotICAgIH0KLSAgfQotICByZXR1
cm4gb3M7Ci19Ci0KLS8vIEdldHMgdGhlIGNvbnRlbnQgb2YgdGhlIFN0clN0cmVhbSdzIGJ1ZmZl
ciBhcyBhIFN0cmluZy4gIEVhY2ggJ1wwJworLy8gR2V0cyB0aGUgY29udGVudCBvZiB0aGUgc3Ry
aW5nc3RyZWFtJ3MgYnVmZmVyIGFzIGFuIHN0ZDo6c3RyaW5nLiAgRWFjaCAnXDAnCiAvLyBjaGFy
YWN0ZXIgaW4gdGhlIGJ1ZmZlciBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgotR1RFU1RfQVBJXyBT
dHJpbmcgU3RyU3RyZWFtVG9TdHJpbmcoU3RyU3RyZWFtKiBzdHJlYW0pOwotCi0vLyBDb252ZXJ0
cyBhIHN0cmVhbWFibGUgdmFsdWUgdG8gYSBTdHJpbmcuICBBIE5VTEwgcG9pbnRlciBpcwotLy8g
Y29udmVydGVkIHRvICIobnVsbCkiLiAgV2hlbiB0aGUgaW5wdXQgdmFsdWUgaXMgYSA6OnN0cmlu
ZywKLS8vIDo6c3RkOjpzdHJpbmcsIDo6d3N0cmluZywgb3IgOjpzdGQ6OndzdHJpbmcgb2JqZWN0
LCBlYWNoIE5VTAotLy8gY2hhcmFjdGVyIGluIGl0IGlzIHJlcGxhY2VkIHdpdGggIlxcMCIuCi0K
LS8vIERlY2xhcmVkIGhlcmUgYnV0IGRlZmluZWQgaW4gZ3Rlc3QuaCwgc28gdGhhdCBpdCBoYXMg
YWNjZXNzCi0vLyB0byB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgTWVzc2FnZSBjbGFzcywgcmVxdWly
ZWQgYnkgdGhlIEFSTQotLy8gY29tcGlsZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVN0cmlu
ZyBTdHJlYW1hYmxlVG9TdHJpbmcoY29uc3QgVCYgc3RyZWFtYWJsZSk7CitHVEVTVF9BUElfIHN0
ZDo6c3RyaW5nIFN0cmluZ1N0cmVhbVRvU3RyaW5nKDo6c3RkOjpzdHJpbmdzdHJlYW0qIHN0cmVh
bSk7CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtdHVwbGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaAppbmRleCBjMjdmM2E0MjFkOWM0OTcxZWRlNDljYzMzMjkx
MmQ0YTgzNjBjNWE1Li43OGEzYTZhMDFmYWM3NTUxN2VhYjgzMTMxMjQyN2UxNWQ1ZTRlYmI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXR1cGxlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oCkBAIC0xLDQgKzEsNiBAQAotLy8gVGhpcyBmaWxlIHdh
cyBHRU5FUkFURUQgYnkgYSBzY3JpcHQuICBETyBOT1QgRURJVCBCWSBIQU5EISEhCisvLyBUaGlz
IGZpbGUgd2FzIEdFTkVSQVRFRCBieSBjb21tYW5kOgorLy8gICAgIHB1bXAucHkgZ3Rlc3QtdHVw
bGUuaC5wdW1wCisvLyBETyBOT1QgRURJVCBCWSBIQU5EISEhCiAKIC8vIENvcHlyaWdodCAyMDA5
IEdvb2dsZSBJbmMuCiAvLyBBbGwgUmlnaHRzIFJlc2VydmVkLgpAQCAtMjgsMTEgKzMwLDEyIEBA
CiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCiAKIC8vIEltcGxlbWVudHMg
YSBzdWJzZXQgb2YgVFIxIHR1cGxlIG5lZWRlZCBieSBHb29nbGUgVGVzdCBhbmQgR29vZ2xlIE1v
Y2suCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKKwogI2lmbmRlZiBHVEVT
VF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RVUExFX0hfCiAjZGVmaW5lIEdURVNUX0lO
Q0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFVQTEVfSF8KIApAQCAtNDAsMTcgKzQzLDI1IEBA
CiAKIC8vIFRoZSBjb21waWxlciB1c2VkIGluIFN5bWJpYW4gaGFzIGEgYnVnIHRoYXQgcHJldmVu
dHMgdXMgZnJvbSBkZWNsYXJpbmcgdGhlCiAvLyB0dXBsZSB0ZW1wbGF0ZSBhcyBhIGZyaWVuZCAo
aXQgY29tcGxhaW5zIHRoYXQgdHVwbGUgaXMgcmVkZWZpbmVkKS4gIFRoaXMKLS8vIGhhY2sgYnlw
YXNzZXMgdGhlIGJ1ZyBieSBkZWNsYXJpbmcgdGhlIG1lbWJlcnMgdGhhdCBzaG91bGQgb3RoZXJ3
aXNlIGJlCisvLyBieXBhc3NlcyB0aGUgYnVnIGJ5IGRlY2xhcmluZyB0aGUgbWVtYmVycyB0aGF0
IHNob3VsZCBvdGhlcndpc2UgYmUKIC8vIHByaXZhdGUgYXMgcHVibGljLgogLy8gU3VuIFN0dWRp
byB2ZXJzaW9ucyA8IDEyIGFsc28gaGF2ZSB0aGUgYWJvdmUgYnVnLgogI2lmIGRlZmluZWQoX19T
WU1CSUFOMzJfXykgfHwgKGRlZmluZWQoX19TVU5QUk9fQ0MpICYmIF9fU1VOUFJPX0NDIDwgMHg1
OTApCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBwdWJsaWM6CisjIGRl
ZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8gcHVibGljOgogI2Vsc2UKLSNkZWZp
bmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIFwKKyMgZGVmaW5lIEdURVNUX0RFQ0xB
UkVfVFVQTEVfQVNfRlJJRU5EXyBcCiAgICAgdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18o
VSk+IGZyaWVuZCBjbGFzcyB0dXBsZTsgXAogICAgcHJpdmF0ZToKICNlbmRpZgogCisvLyBWaXN1
YWwgU3R1ZGlvIDIwMTAsIDIwMTIsIGFuZCAyMDEzIGRlZmluZSBzeW1ib2xzIGluIHN0ZDo6dHIx
IHRoYXQgY29uZmxpY3QKKy8vIHdpdGggb3VyIG93biBkZWZpbml0aW9ucy4gVGhlcmVmb3JlIHVz
aW5nIG91ciBvd24gdHVwbGUgZG9lcyBub3Qgd29yayBvbgorLy8gdGhvc2UgY29tcGlsZXJzLgor
I2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE2MDAgIC8qIDE2MDAgaXMgVmlz
dWFsIFN0dWRpbyAyMDEwICovCisjIGVycm9yICJndGVzdCdzIHR1cGxlIGRvZXNuJ3QgY29tcGls
ZSBvbiBWaXN1YWwgU3R1ZGlvIDIwMTAgb3IgbGF0ZXIuIFwKK0dURVNUX1VTRV9PV05fVFIxX1RV
UExFIG11c3QgYmUgc2V0IHRvIDAgb24gdGhvc2UgY29tcGlsZXJzLiIKKyNlbmRpZgorCiAvLyBH
VEVTVF9uX1RVUExFXyhUKSBpcyB0aGUgdHlwZSBvZiBhbiBuLXR1cGxlLgogI2RlZmluZSBHVEVT
VF8wX1RVUExFXyhUKSB0dXBsZTw+CiAjZGVmaW5lIEdURVNUXzFfVFVQTEVfKFQpIHR1cGxlPFQj
IzAsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQsIFwKQEAgLTE0MCwzNCArMTUx
LDU0IEBAIHRlbXBsYXRlIDxib29sIGtJbmRleFZhbGlkLCBpbnQga0luZGV4LCBjbGFzcyBUdXBs
ZT4KIHN0cnVjdCBUdXBsZUVsZW1lbnQ7CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNf
KFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAwLCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsg
dHlwZWRlZiBUMCB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAwLCBHVEVTVF8x
MF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDAgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVT
VF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAxLCBHVEVTVF8x
MF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUMSB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0
cnVlLCAxLCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDEgdHlwZTsKK307CiAK
IHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0
cnVlLCAyLCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUMiB0eXBlOyB9Oworc3RydWN0
IFR1cGxlRWxlbWVudDx0cnVlLCAyLCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYg
VDIgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0
IFR1cGxlRWxlbWVudDx0cnVlLCAzLCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUMyB0
eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAzLCBHVEVTVF8xMF9UVVBMRV8oVCkg
PiB7CisgIHR5cGVkZWYgVDMgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFN
RVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA0LCBHVEVTVF8xMF9UVVBMRV8oVCk+
IHsgdHlwZWRlZiBUNCB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA0LCBHVEVT
VF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDQgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxH
VEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA1LCBHVEVT
VF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUNSB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVu
dDx0cnVlLCA1LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDUgdHlwZTsKK307
CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVu
dDx0cnVlLCA2LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUNiB0eXBlOyB9Oworc3Ry
dWN0IFR1cGxlRWxlbWVudDx0cnVlLCA2LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVk
ZWYgVDYgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3Ry
dWN0IFR1cGxlRWxlbWVudDx0cnVlLCA3LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBU
NyB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA3LCBHVEVTVF8xMF9UVVBMRV8o
VCkgPiB7CisgIHR5cGVkZWYgVDcgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBF
TkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA4LCBHVEVTVF8xMF9UVVBMRV8o
VCk+IHsgdHlwZWRlZiBUOCB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA4LCBH
VEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDggdHlwZTsKK307CiAKIHRlbXBsYXRl
IDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA5LCBH
VEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUOSB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxl
bWVudDx0cnVlLCA5LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDkgdHlwZTsK
K307CiAKIH0gIC8vIG5hbWVzcGFjZSBndGVzdF9pbnRlcm5hbAogCkBAIC03MDgsMzcgKzczOSw1
OSBAQCBpbmxpbmUgR1RFU1RfMTBfVFVQTEVfKFQpIG1ha2VfdHVwbGUoY29uc3QgVDAmIGYwLCBj
b25zdCBUMSYgZjEsIGNvbnN0IFQyJiBmMiwKIHRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4gc3Ry
dWN0IHR1cGxlX3NpemU7CiAKIHRlbXBsYXRlIDxHVEVTVF8wX1RZUEVOQU1FU18oVCk+Ci1zdHJ1
Y3QgdHVwbGVfc2l6ZTxHVEVTVF8wX1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVl
ID0gMDsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzBfVFVQTEVfKFQpID4geworICBzdGF0
aWMgY29uc3QgaW50IHZhbHVlID0gMDsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xX1RZUEVOQU1F
U18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8xX1RVUExFXyhUKT4geyBzdGF0aWMgY29u
c3QgaW50IHZhbHVlID0gMTsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzFfVFVQTEVfKFQp
ID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMTsKK307CiAKIHRlbXBsYXRlIDxHVEVT
VF8yX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8yX1RVUExFXyhUKT4g
eyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMjsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNU
XzJfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMjsKK307CiAKIHRl
bXBsYXRlIDxHVEVTVF8zX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8z
X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMzsgfTsKK3N0cnVjdCB0dXBs
ZV9zaXplPEdURVNUXzNfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0g
MzsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF80X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVf
c2l6ZTxHVEVTVF80X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNDsgfTsK
K3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzRfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3Qg
aW50IHZhbHVlID0gNDsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF81X1RZUEVOQU1FU18oVCk+Ci1z
dHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF81X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZh
bHVlID0gNTsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzVfVFVQTEVfKFQpID4geworICBz
dGF0aWMgY29uc3QgaW50IHZhbHVlID0gNTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF82X1RZUEVO
QU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF82X1RVUExFXyhUKT4geyBzdGF0aWMg
Y29uc3QgaW50IHZhbHVlID0gNjsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzZfVFVQTEVf
KFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNjsKK307CiAKIHRlbXBsYXRlIDxH
VEVTVF83X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF83X1RVUExFXyhU
KT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNzsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdU
RVNUXzdfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNzsKK307CiAK
IHRlbXBsYXRlIDxHVEVTVF84X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVT
VF84X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gODsgfTsKK3N0cnVjdCB0
dXBsZV9zaXplPEdURVNUXzhfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVl
ID0gODsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF85X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVw
bGVfc2l6ZTxHVEVTVF85X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gOTsg
fTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzlfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29u
c3QgaW50IHZhbHVlID0gOTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQp
Pgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFQpPiB7IHN0YXRpYyBjb25zdCBp
bnQgdmFsdWUgPSAxMDsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzEwX1RVUExFXyhUKSA+
IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDEwOworfTsKIAogdGVtcGxhdGUgPGludCBr
LCBjbGFzcyBUdXBsZT4KIHN0cnVjdCB0dXBsZV9lbGVtZW50IHsKQEAgLTkxMiw3ICs5NjUsNyBA
QCBzdHJ1Y3QgU2FtZVNpemVUdXBsZVByZWZpeENvbXBhcmF0b3I8aywgaz4gewogICB0ZW1wbGF0
ZSA8Y2xhc3MgVHVwbGUxLCBjbGFzcyBUdXBsZTI+CiAgIHN0YXRpYyBib29sIEVxKGNvbnN0IFR1
cGxlMSYgdDEsIGNvbnN0IFR1cGxlMiYgdDIpIHsKICAgICByZXR1cm4gU2FtZVNpemVUdXBsZVBy
ZWZpeENvbXBhcmF0b3I8ayAtIDEsIGsgLSAxPjo6RXEodDEsIHQyKSAmJgotICAgICAgICA6OnN0
ZDo6Z2V0PGsgLSAxPih0MSkgPT0gOjpzdGQ6OmdldDxrIC0gMT4odDIpOworICAgICAgICA6OnN0
ZDo6dHIxOjpnZXQ8ayAtIDE+KHQxKSA9PSA6OnN0ZDo6dHIxOjpnZXQ8ayAtIDE+KHQyKTsKICAg
fQogfTsKIApAQCAtOTIyLDggKzk3NSw4IEBAIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNf
KFQpLCBHVEVTVF8xMF9UWVBFTkFNRVNfKFUpPgogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBHVEVTVF8xMF9UVVBMRV8oVCkmIHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdU
RVNUXzEwX1RVUExFXyhVKSYgdSkgewogICByZXR1cm4gZ3Rlc3RfaW50ZXJuYWw6OlNhbWVTaXpl
VHVwbGVQcmVmaXhDb21wYXJhdG9yPAotICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8xMF9UVVBMRV8o
VCk+Ojp2YWx1ZSwKLSAgICAgIHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFUpPjo6dmFsdWU+
OjpFcSh0LCB1KTsKKyAgICAgIHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFQpID46OnZhbHVl
LAorICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8xMF9UVVBMRV8oVSkgPjo6dmFsdWU+OjpFcSh0LCB1
KTsKIH0KIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCksIEdURVNUXzEwX1RZUEVO
QU1FU18oVSk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1wCmluZGV4IDg1ZWJjODA2
MmVlMTA0NDczN2IzNmU4YTQwODVkMjY3ZjE4ZGMyMDUuLmJiNjI2ZTA0OWYwODc4MGZmY2U5NmQ0
ODUyY2I4ZWQ1ZDNlZjVmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1wCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1wCkBA
IC0yOSwxMSArMjksMTIgQEAgJCQgVGhpcyBtZXRhIGNvbW1lbnQgZml4ZXMgYXV0by1pbmRlbnRh
dGlvbiBpbiBFbWFjcy4gfX0KIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisK
IAogLy8gSW1wbGVtZW50cyBhIHN1YnNldCBvZiBUUjEgdHVwbGUgbmVlZGVkIGJ5IEdvb2dsZSBU
ZXN0IGFuZCBHb29nbGUgTW9jay4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVU
RQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFVQTEVfSF8K
ICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UVVBMRV9IXwogCkBA
IC00MSwxNyArNDIsMjUgQEAgJCQgVGhpcyBtZXRhIGNvbW1lbnQgZml4ZXMgYXV0by1pbmRlbnRh
dGlvbiBpbiBFbWFjcy4gfX0KIAogLy8gVGhlIGNvbXBpbGVyIHVzZWQgaW4gU3ltYmlhbiBoYXMg
YSBidWcgdGhhdCBwcmV2ZW50cyB1cyBmcm9tIGRlY2xhcmluZyB0aGUKIC8vIHR1cGxlIHRlbXBs
YXRlIGFzIGEgZnJpZW5kIChpdCBjb21wbGFpbnMgdGhhdCB0dXBsZSBpcyByZWRlZmluZWQpLiAg
VGhpcwotLy8gaGFjayBieXBhc3NlcyB0aGUgYnVnIGJ5IGRlY2xhcmluZyB0aGUgbWVtYmVycyB0
aGF0IHNob3VsZCBvdGhlcndpc2UgYmUKKy8vIGJ5cGFzc2VzIHRoZSBidWcgYnkgZGVjbGFyaW5n
IHRoZSBtZW1iZXJzIHRoYXQgc2hvdWxkIG90aGVyd2lzZSBiZQogLy8gcHJpdmF0ZSBhcyBwdWJs
aWMuCiAvLyBTdW4gU3R1ZGlvIHZlcnNpb25zIDwgMTIgYWxzbyBoYXZlIHRoZSBhYm92ZSBidWcu
CiAjaWYgZGVmaW5lZChfX1NZTUJJQU4zMl9fKSB8fCAoZGVmaW5lZChfX1NVTlBST19DQykgJiYg
X19TVU5QUk9fQ0MgPCAweDU5MCkKLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklF
TkRfIHB1YmxpYzoKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBwdWJs
aWM6CiAjZWxzZQotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8gXAorIyBk
ZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIFwKICAgICB0ZW1wbGF0ZSA8R1RF
U1RfJChuKV9UWVBFTkFNRVNfKFUpPiBmcmllbmQgY2xhc3MgdHVwbGU7IFwKICAgIHByaXZhdGU6
CiAjZW5kaWYKIAorLy8gVmlzdWFsIFN0dWRpbyAyMDEwLCAyMDEyLCBhbmQgMjAxMyBkZWZpbmUg
c3ltYm9scyBpbiBzdGQ6OnRyMSB0aGF0IGNvbmZsaWN0CisvLyB3aXRoIG91ciBvd24gZGVmaW5p
dGlvbnMuIFRoZXJlZm9yZSB1c2luZyBvdXIgb3duIHR1cGxlIGRvZXMgbm90IHdvcmsgb24KKy8v
IHRob3NlIGNvbXBpbGVycy4KKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAx
NjAwICAvKiAxNjAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxMCAqLworIyBlcnJvciAiZ3Rlc3QncyB0
dXBsZSBkb2Vzbid0IGNvbXBpbGUgb24gVmlzdWFsIFN0dWRpbyAyMDEwIG9yIGxhdGVyLiBcCitH
VEVTVF9VU0VfT1dOX1RSMV9UVVBMRSBtdXN0IGJlIHNldCB0byAwIG9uIHRob3NlIGNvbXBpbGVy
cy4iCisjZW5kaWYKKwogCiAkcmFuZ2UgaSAwLi5uLTEKICRyYW5nZSBqIDAuLm4KQEAgLTExOCw4
ICsxMjcsOSBAQCBzdHJ1Y3QgVHVwbGVFbGVtZW50OwogCiAkZm9yIGkgW1sKIHRlbXBsYXRlIDxH
VEVTVF8kKG4pX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsICRpLCBH
VEVTVF8kKG4pX1RVUExFXyhUKT4gW1tdXQoteyB0eXBlZGVmIFQkaSB0eXBlOyB9Oworc3RydWN0
IFR1cGxlRWxlbWVudDx0cnVlLCAkaSwgR1RFU1RfJChuKV9UVVBMRV8oVCkgPiB7CisgIHR5cGVk
ZWYgVCRpIHR5cGU7Cit9OwogCiAKIF1dCkBAIC0yMjAsNyArMjMwLDkgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIFR1cGxlPiBzdHJ1Y3QgdHVwbGVfc2l6ZTsKIAogJGZvciBqIFtbCiB0ZW1wbGF0ZSA8
R1RFU1RfJChqKV9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfJChqKV9U
VVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9ICRqOyB9Oworc3RydWN0IHR1cGxl
X3NpemU8R1RFU1RfJChqKV9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUg
PSAkajsKK307CiAKIAogXV0KQEAgLTMwMiw4ICszMTQsOCBAQCB0ZW1wbGF0ZSA8R1RFU1RfJChu
KV9UWVBFTkFNRVNfKFQpLCBHVEVTVF8kKG4pX1RZUEVOQU1FU18oVSk+CiBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEdURVNUXyQobilfVFVQTEVfKFQpJiB0LAogICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHVEVTVF8kKG4pX1RVUExFXyhVKSYgdSkgewogICByZXR1cm4gZ3Rlc3Rf
aW50ZXJuYWw6OlNhbWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9yPAotICAgICAgdHVwbGVfc2l6
ZTxHVEVTVF8kKG4pX1RVUExFXyhUKT46OnZhbHVlLAotICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8k
KG4pX1RVUExFXyhVKT46OnZhbHVlPjo6RXEodCwgdSk7CisgICAgICB0dXBsZV9zaXplPEdURVNU
XyQobilfVFVQTEVfKFQpID46OnZhbHVlLAorICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8kKG4pX1RV
UExFXyhVKSA+Ojp2YWx1ZT46OkVxKHQsIHUpOwogfQogCiB0ZW1wbGF0ZSA8R1RFU1RfJChuKV9U
WVBFTkFNRVNfKFQpLCBHVEVTVF8kKG4pX1RZUEVOQU1FU18oVSk+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRp
bC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC10eXBlLXV0aWwuaAppbmRleCAwOTNlZWU2ZjAxOTYzNTU2OWY0MDRhZTYzNTdiOGRlNDhiNzE4
ZTgxLi4yOGU0MTEyNDUzNjFjMDhmMjg3MDdlOTI0OGU2ZDAzMzIwZTY4NjE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5
cGUtdXRpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgKQEAgLTMwLDggKzMwLDcgQEAKIC8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
IC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogLy8gVHlwZSB1dGlsaXRpZXMgbmVlZGVkIGZvciBp
bXBsZW1lbnRpbmcgdHlwZWQgYW5kIHR5cGUtcGFyYW1ldGVyaXplZAogLy8gdGVzdHMuICBUaGlz
IGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBULiAgRE8gTk9UIEVESVQgQlkgSEFORCEKQEAg
LTQxLDU4ICs0MCw4NCBAQAogLy8gUGxlYXNlIGNvbnRhY3QgZ29vZ2xldGVzdGZyYW1ld29ya0Bn
b29nbGVncm91cHMuY29tIGlmIHlvdSBuZWVkCiAvLyBtb3JlLgogCisvLyBHT09HTEVURVNUX0NN
MDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5B
TF9HVEVTVF9UWVBFX1VUSUxfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5B
TF9HVEVTVF9UWVBFX1VUSUxfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4KLQotI2lmIEdU
RVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AKKyNpbmNsdWRlICJn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKIC8vICNpZmRlZiBfX0dOVUNfXyBpcyB0b28g
Z2VuZXJhbCBoZXJlLiAgSXQgaXMgcG9zc2libGUgdG8gdXNlIGdjYyB3aXRob3V0IHVzaW5nCiAv
LyBsaWJzdGRjKysgKHdoaWNoIGlzIHdoZXJlIGN4eGFiaS5oIGNvbWVzIGZyb20pLgotI2lmZGVm
IF9fR0xJQkNYWF9fCi0jaW5jbHVkZSA8Y3h4YWJpLmg+Ci0jZW5kaWYgIC8vIF9fR0xJQkNYWF9f
CisjIGlmIEdURVNUX0hBU19DWFhBQklfSF8KKyMgIGluY2x1ZGUgPGN4eGFiaS5oPgorIyBlbGlm
IGRlZmluZWQoX19IUF9hQ0MpCisjICBpbmNsdWRlIDxhY3h4X2RlbWFuZ2xlLmg+CisjIGVuZGlm
ICAvLyBHVEVTVF9IQVNIX0NYWEFCSV9IXwogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiBuYW1lc3Bh
Y2UgaW50ZXJuYWwgewogCi0vLyBBc3NlcnR5VHlwZUVxPFQxLCBUMj46OnR5cGUgaXMgZGVmaW5l
ZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQotLy8gdHlwZS4gIFRoaXMgY2FuIGJlIHVzZWQg
YXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0aGF0Ci0vLyB0d28gdHlwZXMg
YXJlIGVxdWFsLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotc3RydWN0
IEFzc2VydFR5cGVFcTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgQXNzZXJ0VHlw
ZUVxPFQsIFQ+IHsKLSAgdHlwZWRlZiBib29sIHR5cGU7Ci19OworLy8gQ2Fub25pY2FsaXplcyBh
IGdpdmVuIG5hbWUgd2l0aCByZXNwZWN0IHRvIHRoZSBTdGFuZGFyZCBDKysgTGlicmFyeS4KKy8v
IFRoaXMgaGFuZGxlcyByZW1vdmluZyB0aGUgaW5saW5lIG5hbWVzcGFjZSB3aXRoaW4gYHN0ZGAg
dGhhdCBpcworLy8gdXNlZCBieSB2YXJpb3VzIHN0YW5kYXJkIGxpYnJhcmllcyAoZS5nLiwgYHN0
ZDo6X18xYCkuICBOYW1lcyBvdXRzaWRlCisvLyBvZiBuYW1lc3BhY2Ugc3RkIGFyZSByZXR1cm5l
ZCB1bm1vZGlmaWVkLgoraW5saW5lIHN0ZDo6c3RyaW5nIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZl
cnNpb25pbmcoc3RkOjpzdHJpbmcgcykgeworICBzdGF0aWMgY29uc3QgY2hhciBwcmVmaXhbXSA9
ICJzdGQ6Ol9fIjsKKyAgaWYgKHMuY29tcGFyZSgwLCBzdHJsZW4ocHJlZml4KSwgcHJlZml4KSA9
PSAwKSB7CisgICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBlbmQgPSBzLmZpbmQoIjo6Iiwgc3Ry
bGVuKHByZWZpeCkpOworICAgIGlmIChlbmQgIT0gcy5ucG9zKSB7CisgICAgICAvLyBFcmFzZSBl
dmVyeXRoaW5nIGJldHdlZW4gdGhlIGluaXRpYWwgYHN0ZGAgYW5kIHRoZSBzZWNvbmQgYDo6YC4K
KyAgICAgIHMuZXJhc2Uoc3RybGVuKCJzdGQiKSwgZW5kIC0gc3RybGVuKCJzdGQiKSk7CisgICAg
fQorICB9CisgIHJldHVybiBzOworfQogCiAvLyBHZXRUeXBlTmFtZTxUPigpIHJldHVybnMgYSBo
dW1hbi1yZWFkYWJsZSBuYW1lIG9mIHR5cGUgVC4KKy8vIE5COiBUaGlzIGZ1bmN0aW9uIGlzIGFs
c28gdXNlZCBpbiBHb29nbGUgTW9jaywgc28gZG9uJ3QgbW92ZSBpdCBpbnNpZGUgb2YKKy8vIHRo
ZSB0eXBlZC10ZXN0LW9ubHkgc2VjdGlvbiBiZWxvdy4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
U3RyaW5nIEdldFR5cGVOYW1lKCkgewotI2lmIEdURVNUX0hBU19SVFRJCitzdGQ6OnN0cmluZyBH
ZXRUeXBlTmFtZSgpIHsKKyMgaWYgR1RFU1RfSEFTX1JUVEkKIAogICBjb25zdCBjaGFyKiBjb25z
dCBuYW1lID0gdHlwZWlkKFQpLm5hbWUoKTsKLSNpZmRlZiBfX0dMSUJDWFhfXworIyAgaWYgR1RF
U1RfSEFTX0NYWEFCSV9IXyB8fCBkZWZpbmVkKF9fSFBfYUNDKQogICBpbnQgc3RhdHVzID0gMDsK
ICAgLy8gZ2NjJ3MgaW1wbGVtZW50YXRpb24gb2YgdHlwZWlkKFQpLm5hbWUoKSBtYW5nbGVzIHRo
ZSB0eXBlIG5hbWUsCiAgIC8vIHNvIHdlIGhhdmUgdG8gZGVtYW5nbGUgaXQuCi0gIGNoYXIqIGNv
bnN0IHJlYWRhYmxlX25hbWUgPSBhYmk6Ol9fY3hhX2RlbWFuZ2xlKG5hbWUsIDAsIDAsICZzdGF0
dXMpOwotICBjb25zdCBTdHJpbmcgbmFtZV9zdHIoc3RhdHVzID09IDAgPyByZWFkYWJsZV9uYW1l
IDogbmFtZSk7CisjICAgaWYgR1RFU1RfSEFTX0NYWEFCSV9IXworICB1c2luZyBhYmk6Ol9fY3hh
X2RlbWFuZ2xlOworIyAgIGVuZGlmICAvLyBHVEVTVF9IQVNfQ1hYQUJJX0hfCisgIGNoYXIqIGNv
bnN0IHJlYWRhYmxlX25hbWUgPSBfX2N4YV9kZW1hbmdsZShuYW1lLCAwLCAwLCAmc3RhdHVzKTsK
KyAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZV9zdHIoc3RhdHVzID09IDAgPyByZWFkYWJsZV9uYW1l
IDogbmFtZSk7CiAgIGZyZWUocmVhZGFibGVfbmFtZSk7Ci0gIHJldHVybiBuYW1lX3N0cjsKLSNl
bHNlCisgIHJldHVybiBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKG5hbWVfc3RyKTsK
KyMgIGVsc2UKICAgcmV0dXJuIG5hbWU7Ci0jZW5kaWYgIC8vIF9fR0xJQkNYWF9fCisjICBlbmRp
ZiAgLy8gR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBfX0hQX2FDQworCisjIGVsc2UKIAotI2Vsc2UK
ICAgcmV0dXJuICI8dHlwZT4iOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUlRUSQorCisjIGVuZGlm
ICAvLyBHVEVTVF9IQVNfUlRUSQogfQogCisjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RF
U1RfSEFTX1RZUEVEX1RFU1RfUAorCisvLyBBc3NlcnR5VHlwZUVxPFQxLCBUMj46OnR5cGUgaXMg
ZGVmaW5lZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQorLy8gdHlwZS4gIFRoaXMgY2FuIGJl
IHVzZWQgYXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0aGF0CisvLyB0d28g
dHlwZXMgYXJlIGVxdWFsLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgor
c3RydWN0IEFzc2VydFR5cGVFcTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQXNz
ZXJ0VHlwZUVxPFQsIFQ+IHsKKyAgdHlwZWRlZiBib29sIHR5cGU7Cit9OworCiAvLyBBIHVuaXF1
ZSB0eXBlIHVzZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBhcmd1bWVudHMgb2YgY2xh
c3MKIC8vIHRlbXBsYXRlIFR5cGVzLiAgVGhpcyBhbGxvd3MgdXMgdG8gc2ltdWxhdGUgdmFyaWFk
aWMgdGVtcGxhdGVzCiAvLyAoZS5nLiBUeXBlczxpbnQ+LCBUeXBlPGludCwgZG91YmxlPiwgYW5k
IGV0YyksIHdoaWNoIEMrKyBkb2Vzbid0CkBAIC0xNjExLDcgKzE2MzYsNyBAQCBzdHJ1Y3QgVHlw
ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEz
LCBUMTQsIFQxNSwKIAogbmFtZXNwYWNlIGludGVybmFsIHsKIAotI2RlZmluZSBHVEVTVF9URU1Q
TEFURV8gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzCisjIGRlZmluZSBHVEVTVF9URU1QTEFU
RV8gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzCiAKIC8vIFRoZSB0ZW1wbGF0ZSAic2VsZWN0
b3IiIHN0cnVjdCBUZW1wbGF0ZVNlbDxUbXBsPiBpcyB1c2VkIHRvCiAvLyByZXByZXNlbnQgVG1w
bCwgd2hpY2ggbXVzdCBiZSBhIGNsYXNzIHRlbXBsYXRlIHdpdGggb25lIHR5cGUKQEAgLTE2Mjks
NyArMTY1NCw3IEBAIHN0cnVjdCBUZW1wbGF0ZVNlbCB7CiAgIH07CiB9OwogCi0jZGVmaW5lIEdU
RVNUX0JJTkRfKFRtcGxTZWwsIFQpIFwKKyMgZGVmaW5lIEdURVNUX0JJTkRfKFRtcGxTZWwsIFQp
IFwKICAgVG1wbFNlbDo6dGVtcGxhdGUgQmluZDxUPjo6dHlwZQogCiAvLyBBIHVuaXF1ZSBzdHJ1
Y3QgdGVtcGxhdGUgdXNlZCBhcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlCkBAIC0zMjkxLDcg
KzMzMTYsOSBAQCBzdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAogLy8gSU5TVEFOVElBVEVfVFlQRURfVEVT
VF9DQVNFX1AoKS4KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgVHlwZUxpc3QgeyB0
eXBlZGVmIFR5cGVzMTxUPiB0eXBlOyB9Oworc3RydWN0IFR5cGVMaXN0IHsKKyAgdHlwZWRlZiBU
eXBlczE8VD4gdHlwZTsKK307CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIs
IHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgdHlwZW5hbWUgVDYs
IHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKQEAg
LTMzMTMsOSArMzM0MCw5IEBAIHN0cnVjdCBUeXBlTGlzdDxUeXBlczxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCiAgICAgICBUNDEsIFQ0Miwg
VDQzLCBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5LCBUNTA+Ojp0eXBlIHR5cGU7CiB9Owog
CisjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNU
X1AKKwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwog
Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNU
X1AKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RZUEVf
VVRJTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wCmluZGV4IDVh
ZWQxZTU1NDRmYTJkYTE1ODk3MzRjYmMzYjQxNDFiNTg3YTFmMzIuLjAwMDFhNWQzOWRmYTZkMjRj
N2M0MWExNmExNWYyZTJhNWNlOTQ5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgucHVtcAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUt
dXRpbC5oLnB1bXAKQEAgLTI4LDggKzI4LDcgQEAgJHZhciBuID0gNTAgICQkIE1heGltdW0gbGVu
Z3RoIG9mIHR5cGUgbGlzdHMgd2Ugd2FudCB0byBzdXBwb3J0LgogLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUeXBlIHV0aWxpdGllcyBuZWVkZWQgZm9yIGltcGxl
bWVudGluZyB0eXBlZCBhbmQgdHlwZS1wYXJhbWV0ZXJpemVkCiAvLyB0ZXN0cy4gIFRoaXMgZmls
ZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBETyBOT1QgRURJVCBCWSBIQU5EIQpAQCAtMzks
NTggKzM4LDg0IEBAICR2YXIgbiA9IDUwICAkJCBNYXhpbXVtIGxlbmd0aCBvZiB0eXBlIGxpc3Rz
IHdlIHdhbnQgdG8gc3VwcG9ydC4KIC8vIFBsZWFzZSBjb250YWN0IGdvb2dsZXRlc3RmcmFtZXdv
cmtAZ29vZ2xlZ3JvdXBzLmNvbSBpZiB5b3UgbmVlZAogLy8gbW9yZS4KIAorLy8gR09PR0xFVEVT
VF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5U
RVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5U
RVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVz
dC1wb3J0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+Ci0KLSNp
ZiBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisjaW5jbHVk
ZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAvLyAjaWZkZWYgX19HTlVDX18gaXMg
dG9vIGdlbmVyYWwgaGVyZS4gIEl0IGlzIHBvc3NpYmxlIHRvIHVzZSBnY2Mgd2l0aG91dCB1c2lu
ZwogLy8gbGlic3RkYysrICh3aGljaCBpcyB3aGVyZSBjeHhhYmkuaCBjb21lcyBmcm9tKS4KLSNp
ZmRlZiBfX0dMSUJDWFhfXwotI2luY2x1ZGUgPGN4eGFiaS5oPgotI2VuZGlmICAvLyBfX0dMSUJD
WFhfXworIyBpZiBHVEVTVF9IQVNfQ1hYQUJJX0hfCisjICBpbmNsdWRlIDxjeHhhYmkuaD4KKyMg
ZWxpZiBkZWZpbmVkKF9fSFBfYUNDKQorIyAgaW5jbHVkZSA8YWN4eF9kZW1hbmdsZS5oPgorIyBl
bmRpZiAgLy8gR1RFU1RfSEFTSF9DWFhBQklfSF8KIAogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFt
ZXNwYWNlIGludGVybmFsIHsKIAotLy8gQXNzZXJ0eVR5cGVFcTxUMSwgVDI+Ojp0eXBlIGlzIGRl
ZmluZWQgaWZmIFQxIGFuZCBUMiBhcmUgdGhlIHNhbWUKLS8vIHR5cGUuICBUaGlzIGNhbiBiZSB1
c2VkIGFzIGEgY29tcGlsZS10aW1lIGFzc2VydGlvbiB0byBlbnN1cmUgdGhhdAotLy8gdHdvIHR5
cGVzIGFyZSBlcXVhbC4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLXN0
cnVjdCBBc3NlcnRUeXBlRXE7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IEFzc2Vy
dFR5cGVFcTxULCBUPiB7Ci0gIHR5cGVkZWYgYm9vbCB0eXBlOwotfTsKKy8vIENhbm9uaWNhbGl6
ZXMgYSBnaXZlbiBuYW1lIHdpdGggcmVzcGVjdCB0byB0aGUgU3RhbmRhcmQgQysrIExpYnJhcnku
CisvLyBUaGlzIGhhbmRsZXMgcmVtb3ZpbmcgdGhlIGlubGluZSBuYW1lc3BhY2Ugd2l0aGluIGBz
dGRgIHRoYXQgaXMKKy8vIHVzZWQgYnkgdmFyaW91cyBzdGFuZGFyZCBsaWJyYXJpZXMgKGUuZy4s
IGBzdGQ6Ol9fMWApLiAgTmFtZXMgb3V0c2lkZQorLy8gb2YgbmFtZXNwYWNlIHN0ZCBhcmUgcmV0
dXJuZWQgdW5tb2RpZmllZC4KK2lubGluZSBzdGQ6OnN0cmluZyBDYW5vbmljYWxpemVGb3JTdGRM
aWJWZXJzaW9uaW5nKHN0ZDo6c3RyaW5nIHMpIHsKKyAgc3RhdGljIGNvbnN0IGNoYXIgcHJlZml4
W10gPSAic3RkOjpfXyI7CisgIGlmIChzLmNvbXBhcmUoMCwgc3RybGVuKHByZWZpeCksIHByZWZp
eCkgPT0gMCkgeworICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgZW5kID0gcy5maW5kKCI6OiIs
IHN0cmxlbihwcmVmaXgpKTsKKyAgICBpZiAoZW5kICE9IHMubnBvcykgeworICAgICAgLy8gRXJh
c2UgZXZlcnl0aGluZyBiZXR3ZWVuIHRoZSBpbml0aWFsIGBzdGRgIGFuZCB0aGUgc2Vjb25kIGA6
OmAuCisgICAgICBzLmVyYXNlKHN0cmxlbigic3RkIiksIGVuZCAtIHN0cmxlbigic3RkIikpOwor
ICAgIH0KKyAgfQorICByZXR1cm4gczsKK30KIAogLy8gR2V0VHlwZU5hbWU8VD4oKSByZXR1cm5z
IGEgaHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0eXBlIFQuCisvLyBOQjogVGhpcyBmdW5jdGlvbiBp
cyBhbHNvIHVzZWQgaW4gR29vZ2xlIE1vY2ssIHNvIGRvbid0IG1vdmUgaXQgaW5zaWRlIG9mCisv
LyB0aGUgdHlwZWQtdGVzdC1vbmx5IHNlY3Rpb24gYmVsb3cuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLVN0cmluZyBHZXRUeXBlTmFtZSgpIHsKLSNpZiBHVEVTVF9IQVNfUlRUSQorc3RkOjpzdHJp
bmcgR2V0VHlwZU5hbWUoKSB7CisjIGlmIEdURVNUX0hBU19SVFRJCiAKICAgY29uc3QgY2hhciog
Y29uc3QgbmFtZSA9IHR5cGVpZChUKS5uYW1lKCk7Ci0jaWZkZWYgX19HTElCQ1hYX18KKyMgIGlm
IEdURVNUX0hBU19DWFhBQklfSF8gfHwgZGVmaW5lZChfX0hQX2FDQykKICAgaW50IHN0YXR1cyA9
IDA7CiAgIC8vIGdjYydzIGltcGxlbWVudGF0aW9uIG9mIHR5cGVpZChUKS5uYW1lKCkgbWFuZ2xl
cyB0aGUgdHlwZSBuYW1lLAogICAvLyBzbyB3ZSBoYXZlIHRvIGRlbWFuZ2xlIGl0LgotICBjaGFy
KiBjb25zdCByZWFkYWJsZV9uYW1lID0gYWJpOjpfX2N4YV9kZW1hbmdsZShuYW1lLCAwLCAwLCAm
c3RhdHVzKTsKLSAgY29uc3QgU3RyaW5nIG5hbWVfc3RyKHN0YXR1cyA9PSAwID8gcmVhZGFibGVf
bmFtZSA6IG5hbWUpOworIyAgIGlmIEdURVNUX0hBU19DWFhBQklfSF8KKyAgdXNpbmcgYWJpOjpf
X2N4YV9kZW1hbmdsZTsKKyMgICBlbmRpZiAgLy8gR1RFU1RfSEFTX0NYWEFCSV9IXworICBjaGFy
KiBjb25zdCByZWFkYWJsZV9uYW1lID0gX19jeGFfZGVtYW5nbGUobmFtZSwgMCwgMCwgJnN0YXR1
cyk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG5hbWVfc3RyKHN0YXR1cyA9PSAwID8gcmVhZGFibGVf
bmFtZSA6IG5hbWUpOwogICBmcmVlKHJlYWRhYmxlX25hbWUpOwotICByZXR1cm4gbmFtZV9zdHI7
Ci0jZWxzZQorICByZXR1cm4gQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZyhuYW1lX3N0
cik7CisjICBlbHNlCiAgIHJldHVybiBuYW1lOwotI2VuZGlmICAvLyBfX0dMSUJDWFhfXworIyAg
ZW5kaWYgIC8vIEdURVNUX0hBU19DWFhBQklfSF8gfHwgX19IUF9hQ0MKKworIyBlbHNlCiAKLSNl
bHNlCiAgIHJldHVybiAiPHR5cGU+IjsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1JUVEkKKworIyBl
bmRpZiAgLy8gR1RFU1RfSEFTX1JUVEkKIH0KIAorI2lmIEdURVNUX0hBU19UWVBFRF9URVNUIHx8
IEdURVNUX0hBU19UWVBFRF9URVNUX1AKKworLy8gQXNzZXJ0eVR5cGVFcTxUMSwgVDI+Ojp0eXBl
IGlzIGRlZmluZWQgaWZmIFQxIGFuZCBUMiBhcmUgdGhlIHNhbWUKKy8vIHR5cGUuICBUaGlzIGNh
biBiZSB1c2VkIGFzIGEgY29tcGlsZS10aW1lIGFzc2VydGlvbiB0byBlbnN1cmUgdGhhdAorLy8g
dHdvIHR5cGVzIGFyZSBlcXVhbC4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
Mj4KK3N0cnVjdCBBc3NlcnRUeXBlRXE7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0
IEFzc2VydFR5cGVFcTxULCBUPiB7CisgIHR5cGVkZWYgYm9vbCB0eXBlOworfTsKKwogLy8gQSB1
bmlxdWUgdHlwZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgYXJndW1lbnRzIG9m
IGNsYXNzCiAvLyB0ZW1wbGF0ZSBUeXBlcy4gIFRoaXMgYWxsb3dzIHVzIHRvIHNpbXVsYXRlIHZh
cmlhZGljIHRlbXBsYXRlcwogLy8gKGUuZy4gVHlwZXM8aW50PiwgVHlwZTxpbnQsIGRvdWJsZT4s
IGFuZCBldGMpLCB3aGljaCBDKysgZG9lc24ndApAQCAtMTY5LDcgKzE5NCw3IEBAIHN0cnVjdCBU
eXBlczwkZm9yIGosIFtbVCRqXV0kZm9yIGtbWywgaW50ZXJuYWw6Ok5vbmVdXT4gewogCiBuYW1l
c3BhY2UgaW50ZXJuYWwgewogCi0jZGVmaW5lIEdURVNUX1RFTVBMQVRFXyB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY2xhc3MKKyMgZGVmaW5lIEdURVNUX1RFTVBMQVRFXyB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MKIAogLy8gVGhlIHRlbXBsYXRlICJzZWxlY3RvciIgc3RydWN0IFRlbXBsYXRl
U2VsPFRtcGw+IGlzIHVzZWQgdG8KIC8vIHJlcHJlc2VudCBUbXBsLCB3aGljaCBtdXN0IGJlIGEg
Y2xhc3MgdGVtcGxhdGUgd2l0aCBvbmUgdHlwZQpAQCAtMTg3LDcgKzIxMiw3IEBAIHN0cnVjdCBU
ZW1wbGF0ZVNlbCB7CiAgIH07CiB9OwogCi0jZGVmaW5lIEdURVNUX0JJTkRfKFRtcGxTZWwsIFQp
IFwKKyMgZGVmaW5lIEdURVNUX0JJTkRfKFRtcGxTZWwsIFQpIFwKICAgVG1wbFNlbDo6dGVtcGxh
dGUgQmluZDxUPjo6dHlwZQogCiAvLyBBIHVuaXF1ZSBzdHJ1Y3QgdGVtcGxhdGUgdXNlZCBhcyB0
aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlCkBAIC0yNzAsNyArMjk1LDkgQEAgc3RydWN0IFRlbXBs
YXRlczwkZm9yIGosIFtbVCRqXV0kZm9yIGtbWywgTm9uZVRdXT4gewogLy8gSU5TVEFOVElBVEVf
VFlQRURfVEVTVF9DQVNFX1AoKS4KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgVHlw
ZUxpc3QgeyB0eXBlZGVmIFR5cGVzMTxUPiB0eXBlOyB9Oworc3RydWN0IFR5cGVMaXN0IHsKKyAg
dHlwZWRlZiBUeXBlczE8VD4gdHlwZTsKK307CiAKIAogJHJhbmdlIGkgMS4ubgpAQCAtMjc5LDkg
KzMwNiw5IEBAIHN0cnVjdCBUeXBlTGlzdDxUeXBlczwkZm9yIGksIFtbVCRpXV0+ID4gewogICB0
eXBlZGVmIHR5cGVuYW1lIFR5cGVzPCRmb3IgaSwgW1tUJGldXT46OnR5cGUgdHlwZTsKIH07CiAK
KyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1Rf
UAorCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAK
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1Rf
UAotCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQRV9V
VElMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tYWtlL01ha2VmaWxl
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbWFrZS9NYWtlZmlsZQppbmRleCA1YjI3YjZhMmNi
YjEzZTM4MGVlNzVkMTg2ZjU1M2JmYjVmYTE0NGI1Li45YWM3NDQ5M2JhNTUyNDY1OTdlOTBiODk4
ZmFlODQ3YWUzNThlYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tYWtl
L01ha2VmaWxlCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21ha2UvTWFrZWZpbGUKQEAg
LTIwLDEwICsyMCwxMiBAQCBHVEVTVF9ESVIgPSAuLgogVVNFUl9ESVIgPSAuLi9zYW1wbGVzCiAK
ICMgRmxhZ3MgcGFzc2VkIHRvIHRoZSBwcmVwcm9jZXNzb3IuCi1DUFBGTEFHUyArPSAtSSQoR1RF
U1RfRElSKS9pbmNsdWRlCisjIFNldCBHb29nbGUgVGVzdCdzIGhlYWRlciBkaXJlY3RvcnkgYXMg
YSBzeXN0ZW0gZGlyZWN0b3J5LCBzdWNoIHRoYXQKKyMgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgZ2Vu
ZXJhdGUgd2FybmluZ3MgaW4gR29vZ2xlIFRlc3QgaGVhZGVycy4KK0NQUEZMQUdTICs9IC1pc3lz
dGVtICQoR1RFU1RfRElSKS9pbmNsdWRlCiAKICMgRmxhZ3MgcGFzc2VkIHRvIHRoZSBDKysgY29t
cGlsZXIuCi1DWFhGTEFHUyArPSAtZyAtV2FsbCAtV2V4dHJhCitDWFhGTEFHUyArPSAtZyAtV2Fs
bCAtV2V4dHJhIC1wdGhyZWFkCiAKICMgQWxsIHRlc3RzIHByb2R1Y2VkIGJ5IHRoaXMgTWFrZWZp
bGUuICBSZW1lbWJlciB0byBhZGQgbmV3IHRlc3RzIHlvdQogIyBjcmVhdGVkIHRvIHRoZSBsaXN0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1k
LnNsbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC1tZC5zbG4KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTM2YjMzYjYyMTVjMzc0YWZjMTE2YjUyMDg0YjE2ZjQxNDg4MDQ3YQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC1tZC5z
bG4KQEAgLTAsMCArMSw1NSBAQAorTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmls
ZSwgRm9ybWF0IFZlcnNpb24gMTEuMDAKKyMgVmlzdWFsIEMrKyBFeHByZXNzIDIwMTAKK1Byb2pl
Y3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3QtbWQi
LCAiZ3Rlc3QtbWQudmN4cHJvaiIsICJ7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMx
QkU4fSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEw
QzkxQkM5NDJ9IikgPSAiZ3Rlc3RfbWFpbi1tZCIsICJndGVzdF9tYWluLW1kLnZjeHByb2oiLCAi
ezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzM30iCitFbmRQcm9qZWN0CitQcm9q
ZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0X3By
b2RfdGVzdC1tZCIsICJndGVzdF9wcm9kX3Rlc3QtbWQudmN4cHJvaiIsICJ7MjQ4NDg1NTEtRUY0
Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VC
OC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3RfdW5pdHRlc3QtbWQiLCAi
Z3Rlc3RfdW5pdHRlc3QtbWQudmN4cHJvaiIsICJ7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRF
RTBFRDQ4MUEyfSIKK0VuZFByb2plY3QKK0dsb2JhbAorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25D
b25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCisJCURlYnVnfFdpbjMyID0gRGVi
dWd8V2luMzIKKwkJRGVidWd8eDY0ID0gRGVidWd8eDY0CisJCVJlbGVhc2V8V2luMzIgPSBSZWxl
YXNlfFdpbjMyCisJCVJlbGVhc2V8eDY0ID0gUmVsZWFzZXx4NjQKKwlFbmRHbG9iYWxTZWN0aW9u
CisJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29s
dXRpb24KKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uRGVidWd8V2lu
MzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMz
QjQyM0IzMUJFOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXtDOEY2QzE3
Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1
Z3x4NjQKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uRGVidWd8eDY0
LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0Iz
MUJFOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtDOEY2QzE3
Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJl
bGVhc2V8V2luMzIKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uUmVs
ZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1C
NUZBLUMzQjQyM0IzMUJFOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXsz
QUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LkRlYnVnfFdpbjMyLkFjdGl2ZUNm
ZyA9IERlYnVnfFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9
LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7M0FGNTRDOEEtMTBCRi00MzMy
LTkxNDctRjY4RUQ5ODYyMDMzfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXsz
QUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LkRlYnVnfHg2NC5CdWlsZC4wID0g
RGVidWd8eDY0CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LlJlbGVh
c2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7M0FGNTRDOEEtMTBCRi00MzMy
LTkxNDctRjY4RUQ5ODYyMDMzfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMy
CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LlJlbGVhc2V8eDY0LkFj
dGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4
NjIwMzN9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7MjQ4NDg1NTEtRUY0
Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xX
aW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5EZWJ1Z3xXaW4z
Mi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0
OUJDM0VDQn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7MjQ4NDg1NTEtRUY0
Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAor
CQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5SZWxlYXNlfFdpbjMyLkFj
dGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0
OUJDM0VDQn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7MjQ4NDg1
NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBS
ZWxlYXNlfHg2NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5SZWxl
YXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjND
LUY0RUUwRUQ0ODFBMn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezRE
OUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uRGVidWd8V2luMzIuQnVpbGQuMCA9
IERlYnVnfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTJ9LkRl
YnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjND
LUY0RUUwRUQ0ODFBMn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezREOUZERkI1
LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBS
ZWxlYXNlfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTJ9LlJl
bGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEz
OS04MjNDLUY0RUUwRUQ0ODFBMn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQK
KwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uUmVsZWFzZXx4NjQuQnVp
bGQuMCA9IFJlbGVhc2V8eDY0CisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oU29s
dXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uCisJCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxT
RQorCUVuZEdsb2JhbFNlY3Rpb24KK0VuZEdsb2JhbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1kLnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QtbWQudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNmE2ZmYxMmY3
YjU3OTAxNWFiYjE0MTU4MGUyZjJkNGZkYTZmOWMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1kLnZjeHByb2oKQEAgLTAsMCArMSwx
NDkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVj
dCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDov
L3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1H
cm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3Vy
YXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8
L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwv
UHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9
IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4K
KyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRp
b24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgor
ICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0
Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8
UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZp
Z3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1Bs
YXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8
UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntDOEY2QzE3
Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9PC9Qcm9qZWN0R3VpZD4KKyAgICA8S2V5d29y
ZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9q
ZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0
aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVy
U2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwv
UGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBM
YWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJh
cnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFy
YWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+Cisg
IDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9u
Ij4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5
cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxh
dGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlv
blR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNl
dD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1Bs
YXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQo
VkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExh
YmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249
ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnBy
b3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4K
KyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJv
amVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3Bz
IiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9J
bXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAg
IDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3Jt
KS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0
LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9y
bSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hl
ZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBE
YXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVs
PSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVy
c2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPE91dERpciBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChT
b2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8
L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4K
KyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0p
LSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE91dERpcikkKFBy
b2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
PgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSkt
JChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKSQoUHJvamVj
dE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0ZDwvVGFyZ2V0TmFtZT4KKyAg
PC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0
aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0
RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAg
PFRhcmdldE5hbWU+Z3Rlc3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFBy
b3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3xXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0ZDwvVGFyZ2V0TmFtZT4KKyAgPC9Q
cm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVz
dDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGlt
aXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNf
TUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWls
ZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50
aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwv
UnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNv
bXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4K
KyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZv
cm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4u
XGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGliIC8+CisgIDwv
SXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8Q2xDb21w
aWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAg
PFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19M
SUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgor
ICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVD
aGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50
aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGls
ZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAg
ICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0
aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5j
bHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWIgLz4KKyAgPC9JdGVt
RGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21w
aWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9
MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRl
ZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRp
bWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxl
ZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAg
ICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRp
b25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNs
dWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgorICA8L0l0ZW1E
ZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8Q2xDb21waWxl
PgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7
TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmlu
aXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVM
aWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhl
YWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8
RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25G
b3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRl
Oy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgorICA8L0l0ZW1EZWZp
bml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwu
LlxzcmNcZ3Rlc3QtYWxsLmNjIj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
Pi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4
NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3Vw
PgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJn
ZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0lt
cG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC1tZC52Y3hwcm9q
LmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QtbWQudmN4
cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZWRlZmYyMzA2ZTFmYWM5M2U3N2M1NTNmMDU2Yjcw
ZmQyYTY4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3Zj
LzIwMTAvZ3Rlc3QtbWQudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTggQEAKK++7vzw/eG1s
IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249
IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVp
bGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmls
ZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJB
MzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7Yztj
eHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRl
cj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRl
bnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRl
bnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0
ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3QtYWxsLmNjIj4KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdy
b3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC5zbG4gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3Quc2xuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhY2Q1YzBjZTZi
OTMyODZiYTUyNzBmODMxMWY3ZDY0OTIxZTAyZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3Quc2xuCkBAIC0wLDAgKzEsNTUgQEAKK01p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDExLjAw
CisjIFZpc3VhbCBDKysgRXhwcmVzcyAyMDEwCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQw
LThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0IiwgImd0ZXN0LnZjeHByb2oiLCAie0M4RjZD
MTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7
OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0X21haW4iLCAi
Z3Rlc3RfbWFpbi52Y3hwcm9qIiwgInszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIw
MzJ9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBD
OTFCQzk0Mn0iKSA9ICJndGVzdF91bml0dGVzdCIsICJndGVzdF91bml0dGVzdC52Y3hwcm9qIiwg
Ins0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9IgorRW5kUHJvamVjdAorUHJv
amVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdF9w
cm9kX3Rlc3QiLCAiZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2oiLCAiezI0ODQ4NTUxLUVGNEYtNDdF
OC05QTlELUVBNEQ0OUJDM0VDQX0iCitFbmRQcm9qZWN0CitHbG9iYWwKKwlHbG9iYWxTZWN0aW9u
KFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbgorCQlEZWJ1Z3xX
aW4zMiA9IERlYnVnfFdpbjMyCisJCURlYnVnfHg2NCA9IERlYnVnfHg2NAorCQlSZWxlYXNlfFdp
bjMyID0gUmVsZWFzZXxXaW4zMgorCQlSZWxlYXNlfHg2NCA9IFJlbGVhc2V8eDY0CisJRW5kR2xv
YmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMp
ID0gcG9zdFNvbHV0aW9uCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9
LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtDOEY2QzE3Mi01NkYyLTRF
NzYtQjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgor
CQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fS5EZWJ1Z3x4NjQuQWN0aXZl
Q2ZnID0gRGVidWd8eDY0CisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9
LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVG
QS1DM0I0MjNCMzFCRTd9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgor
CQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fS5SZWxlYXNlfFdpbjMyLkJ1
aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNC
MzFCRTd9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtDOEY2QzE3Mi01
NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNl
fHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5EZWJ1Z3xXaW4z
Mi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4
RUQ5ODYyMDMyfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezNBRjU0QzhB
LTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVn
fHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5EZWJ1Z3x4NjQu
QnVpbGQuMCA9IERlYnVnfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYy
MDMyfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezNBRjU0QzhB
LTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVs
ZWFzZXxXaW4zMgorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5SZWxl
YXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkx
NDctRjY4RUQ5ODYyMDMyfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezRE
OUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uRGVidWd8V2luMzIuQWN0aXZlQ2Zn
ID0gRGVidWd8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0u
RGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzkt
ODIzQy1GNEVFMEVENDgxQTF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezRE
OUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBE
ZWJ1Z3x4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uUmVsZWFz
ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzkt
ODIzQy1GNEVFMEVENDgxQTF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIK
KwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uUmVsZWFzZXx4NjQuQWN0
aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0
ODFBMX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXsyNDg0ODU1MS1FRjRG
LTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdp
bjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LkRlYnVnfFdpbjMy
LkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5
QkMzRUNBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXsyNDg0ODU1MS1FRjRG
LTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJ
CXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LlJlbGVhc2V8V2luMzIuQWN0
aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5
QkMzRUNBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXsyNDg0ODU1
MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJl
bGVhc2V8eDY0CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LlJlbGVh
c2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxT
ZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbgorCQlIaWRlU29sdXRpb25O
b2RlID0gRkFMU0UKKwlFbmRHbG9iYWxTZWN0aW9uCitFbmRHbG9iYWwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC52Y3hwcm9qIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ2ZjVj
N2FmMjQ1MzhkMzk4YzM2MjZjOGVjY2U5MTQ4Yzk2ZjAxZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC52Y3hwcm9qCkBAIC0wLDAgKzEs
MTQ5IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2pl
Y3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6
Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVt
R3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1
cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVn
PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8
L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRl
PSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+
CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0
aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4K
KyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxh
dGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAg
PFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25m
aWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9Q
bGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAg
PFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57QzhGNkMx
NzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdv
cmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJv
amVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Cisg
IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJh
dGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3Rl
clNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8
L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIg
TGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJy
YXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hh
cmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0Pgor
ICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlv
biI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25U
eXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBs
YXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4K
KyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRp
b25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJT
ZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9Q
bGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIk
KFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBM
YWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9u
PSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+
CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwv
SW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAg
ICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29m
dC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZv
cm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNo
ZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3Bw
LiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBw
RGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJl
bD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZl
cnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQo
U29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilc
PC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0lu
dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxh
dGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE91dERp
cil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQ
cm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwk
KFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXRE
aXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdGQ8
L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAg
IDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25m
aWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKXRlbXBcJChQcm9qZWN0
TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3Q8L1RhcmdldE5hbWU+CisgIDwv
UHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0
ZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4K
KyAgICA8VGFyZ2V0TmFtZT5ndGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6
YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWls
ZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxl
RmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11
bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZl
bDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRD
b250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4K
KyAgICA8TGliIC8+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9u
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0
aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJ
Q19NQVg9MTA7X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hl
Y2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJl
YWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAg
ICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2Fy
bmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNl
PC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxM
aWIgLz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMy
O19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8
L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhy
ZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAg
PC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5n
TGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0Rl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAv
PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAg
ICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJ
QURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8
L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVj
b21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+
CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5m
b3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwu
LlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgorICA8
L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlwuLlxzcmNcZ3Rlc3QtYWxsLmNjIj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
KTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgIDwv
SXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0
LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMi
PgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC52
Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3Qu
dmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZWRlZmYyMzA2ZTFmYWM5M2U3N2M1NTNmMDU2
YjcwZmQyYTY4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9t
c3ZjLzIwMTAvZ3Rlc3QudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTggQEAKK++7vzw/eG1s
IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249
IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVp
bGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmls
ZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJB
MzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7Yztj
eHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRl
cj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRl
bnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRl
bnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0
ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3QtYWxsLmNjIj4KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdy
b3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9tYWluLW1kLnZjeHByb2og
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi1tZC52Y3hwcm9q
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNkNzczODk1YjcwMjNkZTg0NzQwZDYyYmJhNjNlYzkwMGY3NGM5MjcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3Rf
bWFpbi1tZC52Y3hwcm9qCkBAIC0wLDAgKzEsMTU0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29s
c1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxv
cGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0
aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4K
KyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRm
b3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3Vy
YXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9y
bT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlv
biBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8
L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwv
UHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9
IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRp
b24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1
cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMi
PgorICAgIDxQcm9qZWN0R3VpZD57M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMz
fTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3Nv
ZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25m
aWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmln
dXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4K
KyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0
eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxD
b25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8
Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xz
ZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0
eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0
YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlC
eXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRv
b2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmln
dXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3Vy
YXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Cisg
ICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlH
cm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAu
cHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8
L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4K
KyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxh
dGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3Bl
cnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29m
dC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9j
YWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIg
TGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlz
dHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycp
IiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJ
bXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIk
KFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRp
dGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVz
ZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdy
b3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5
R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZp
bGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQo
UGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXRE
aXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0aW9uRGly
KSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgor
ICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgIDwvUHJv
cGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIp
JChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Cisg
ICAgPEludERpcj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VGFyZ2V0
TmFtZT5ndGVzdF9tYWluZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJv
cGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwk
KFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXRE
aXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfbWFpbjwv
VGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAg
PFRhcmdldE5hbWU+Z3Rlc3RfbWFpbmQ8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4K
KyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfbWFpbjwvVGFyZ2V0
TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAg
PENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4K
KyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19E
RUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAg
IDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tz
PgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxp
YnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVh
ZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxE
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZv
cm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7
Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGliIC8+CisgIDwvSXRlbURlZmlu
aXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAg
ICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nl
c3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19MSUI7JShQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEJh
c2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Cisg
ICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFy
eT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+
CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0
PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwu
LjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWIgLz4KKyAgPC9JdGVtRGVmaW5pdGlv
bkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAg
ICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVH
O19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25z
PgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5
PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4K
KyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4u
OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9u
R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAg
PFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19M
SUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgor
ICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5Pgor
ICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAg
ICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZv
cm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+Cisg
ICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUo
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3Jv
dXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rl
c3RfbWFpbi5jYyI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Li47Li5c
aW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4uLjsuLlxp
bmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLjsu
LlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Li47
Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0
ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJndGVzdC1tZC52Y3hwcm9q
Ij4KKyAgICAgIDxQcm9qZWN0PntjOGY2YzE3Mi01NmYyLTRlNzYtYjVmYS1jM2I0MjNiMzFiZTh9
PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJ
bXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+
CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3Jv
dXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X21haW4tbWQudmN4cHJvai5m
aWx0ZXJzIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X21haW4tbWQu
dmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyNmM3NzNjY2IxNzc2YTU4ZDZmNGZkNjVhMTZj
YjUwZjQyMmQxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9t
c3ZjLzIwMTAvZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxOCBAQAor
77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xz
VmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9w
ZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNv
dXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2
LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25z
PmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAg
IDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxV
bmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9V
bmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7
eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1H
cm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xndGVzdF9tYWluLmNjIj4K
KyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+Cisg
IDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9tYWluLnZj
eHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi52Y3hw
cm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhmYjI1ODk3YzhiMWMyZGJiM2NmNmMxM2U5YjQxOTNmYzlhZTA1MGIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rl
c3RfbWFpbi52Y3hwcm9qCkBAIC0wLDAgKzEsMTYyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29s
c1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxv
cGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0
aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4K
KyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRm
b3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3Vy
YXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9y
bT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlv
biBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8
L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwv
UHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9
IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRp
b24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1
cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMi
PgorICAgIDxQcm9qZWN0R3VpZD57M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMy
fTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3Nv
ZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25m
aWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmln
dXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4K
KyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0
eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxD
b25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8
Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xz
ZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0
eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0
YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlC
eXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRv
b2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmln
dXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3Vy
YXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Cisg
ICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlH
cm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAu
cHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8
L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4K
KyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxh
dGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3Bl
cnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29m
dC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9j
YWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIg
TGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlz
dHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycp
IiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJ
bXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIk
KFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRp
dGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVz
ZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdy
b3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5
R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZp
bGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQo
UGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXRE
aXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRp
b25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXRE
aXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGly
PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE91dERpcj4kKFNv
bHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwv
T3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERp
cj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0
eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQo
U29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAg
IDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VGFy
Z2V0TmFtZT5ndGVzdF9tYWluPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQ
cm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluZDwvVGFyZ2V0TmFtZT4K
KyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFt
ZT5ndGVzdF9tYWluPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVm
aW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNh
YmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMy
O19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8
L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01p
bmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tz
PC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRl
ZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAg
IDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2Fybmlu
Z0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9E
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWI+
CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKWQubGliPC9PdXRwdXRG
aWxlPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5p
dGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8
L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFS
SUFESUNfTUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFz
dENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRp
VGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+
CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8
L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRh
YmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSlkLmxpYjwv
T3V0cHV0RmlsZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRl
bURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRp
bWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2
ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Q
cm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENv
bXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5h
bWUpLmxpYjwvT3V0cHV0RmlsZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3Vw
PgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztfTElCOyUo
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAg
IDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQ
cmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2Fy
bmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25G
b3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAg
IDwvQ2xDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFBy
b2plY3ROYW1lKS5saWI8L091dHB1dEZpbGU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRp
b25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNy
Y1xndGVzdF9tYWluLmNjIj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4u
LjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4u
Oy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
Pi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQn
Ij4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgor
ICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Imd0ZXN0LnZjeHBy
b2oiPgorICAgICAgPFByb2plY3Q+e2M4ZjZjMTcyLTU2ZjItNGU3Ni1iNWZhLWMzYjQyM2IzMWJl
N308L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAg
PEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIg
Lz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRH
cm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi52Y3hwcm9qLmZp
bHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi52Y3hw
cm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI2Yzc3M2NjYjE3NzZhNThkNmY0ZmQ2NWExNmNiNTBm
NDIyZDE1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMv
MjAxMC9ndGVzdF9tYWluLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDE4IEBACivvu788P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9u
PSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1
aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZp
bGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0y
QTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7
Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0
ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlk
ZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlk
ZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4
dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXGd0ZXN0X21haW4uY2MiPgorICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVt
R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52
Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVz
dC1tZC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzMGU1ZGNlNDEwNjIzYzE1YjY4ZmVhNzE4ZWQ5NGM0
NTdmMDcwZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3Zj
LzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjeHByb2oKQEAgLTAsMCArMSwxOTkgQEAKK++7vzw/
eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFy
Z2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWlj
cm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0i
UHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVk
ZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRp
b24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZp
Z3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+
CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0
Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFBy
b2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZp
Z3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwv
UGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZp
Z3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVs
ZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAg
IDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91
cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnsyNDg0ODU1MS1FRjRGLTQ3RTgt
OUE5RC1FQTRENDlCQzNFQ0J9PC9Qcm9qZWN0R3VpZD4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8
L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFy
Z2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBs
aWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8
L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNl
dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3Vy
YXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlv
blR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8
UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3Vw
PgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1
cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3Rl
clNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8
L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExh
YmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248
L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0
ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwv
UHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jv
c29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGlu
Z3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5
U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxB
cHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFi
ZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMo
JyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBM
YWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBv
cnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0
aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3Jv
dXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQ
cm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJv
cHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxh
dGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8
L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAg
PFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9f
UHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlv
bk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERp
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPExpbmtJbmNyZW1lbnRh
bCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9MaW5r
SW5jcmVtZW50YWw+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1l
KVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+
JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmZhbHNlPC9M
aW5rSW5jcmVtZW50YWw+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAg
ICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29u
ZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERpcikkKFByb2plY3ROYW1l
KVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9wcm9kX3Rlc3Q8L1RhcmdldE5hbWU+
CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxPdXREaXI+JChT
b2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8
L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgor
ICAgIDxUYXJnZXROYW1lPmd0ZXN0X3Byb2RfdGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0
eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfcHJvZF90
ZXN0PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
PgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X3Byb2RfdGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAg
ICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfQ09OU09MRTsl
KFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAg
ICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50
aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxS
dW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAg
ICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2Fy
bmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25G
b3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAg
IDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlv
bj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNl
RmlsZT4kKE91dERpcilndGVzdF9wcm9kX3Rlc3QucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgor
ICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGlu
ZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5p
dGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAg
ICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8UHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtfREVCVUc7X0NPTlNPTEU7JShQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAg
PEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+
CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGli
cmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPgor
ICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0lu
Zm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4K
KyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVn
SW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dy
YW1EYXRhYmFzZUZpbGU+JChPdXREaXIpZ3Rlc3RfcHJvZF90ZXN0LnBkYjwvUHJvZ3JhbURhdGFi
YXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGlu
az4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4K
KyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19W
QVJJQURJQ19NQVg9MTA7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMp
PC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRo
cmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8
L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdM
ZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVi
dWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
Pi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4K
KyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9y
bWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8T3B0
aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxFbmFibGVD
T01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8VGFyZ2V0TWFj
aGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVm
aW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPENsQ29tcGlsZT4K
KyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05E
RUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGlt
ZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRl
cj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVi
dWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3Jt
YXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4u
XC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVE
ZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxT
dWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50
cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVl
PC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdy
b3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxn
dGVzdF9wcm9kX3Rlc3QuY2MiPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
Pi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICAgIDwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICAgIDwvUHJl
Y29tcGlsZWRIZWFkZXI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4u
LjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+
Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgICAg
PC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgICA8
L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cLi5cdGVzdFxwcm9kdWN0aW9uLmNjIj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
KTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVy
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
KTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2
NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9J
dGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx0
ZXN0XHByb2R1Y3Rpb24uaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAg
PFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qIj4KKyAgICAg
IDxQcm9qZWN0PnszYWY1NGM4YS0xMGJmLTQzMzItOTE0Ny1mNjhlZDk4NjIwMzN9PC9Qcm9qZWN0
PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJv
amVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBv
cnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1By
b2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qLmZpbHRl
cnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LW1k
LnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzM2NzMxMGFlZTYyNmY0ZWM5YzFkZmZkYTcz
M2E1MGYyYTVjNWVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
bXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwy
NiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0
IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9k
ZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1
ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdB
NS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRl
bnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25z
PgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAg
ICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVC
RkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lu
bDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAg
PEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfcHJv
ZF90ZXN0LmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24u
Y2MiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGls
ZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24uaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwv
RmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2oKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQy
ZTEzNTExZGYyOGE1MzIyMjQyMDU3ZTc1NDFmOTY1NjcwZGRhMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9wcm9kX3Rlc3QudmN4cHJv
agpAQCAtMCwwICsxLDE5MSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRm
LTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAi
IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIw
MDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmln
dXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxh
dGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3Vy
YXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9D
b25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9q
ZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVs
ZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9u
PgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1
cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+
CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBs
YXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9J
dGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVj
dEd1aWQ+ezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQX08L1Byb2plY3RHdWlk
PgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0
LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Cisg
ICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAg
ICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRv
b2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9w
ZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBl
PkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRp
Qnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1U
b29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29u
ZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1
cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pgor
ICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5
R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25m
aWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJh
Y3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYx
MDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdy
b3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBv
cnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0i
JChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25k
aXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51
c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRH
cm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBv
cnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2Vy
LnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4k
KFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4K
KyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMi
PgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBs
YXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWlj
cm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQ
bGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3Bl
cnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29m
dC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9j
YWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3Vw
IExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RG
aWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPE91dERp
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0
aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUp
XDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4K
KyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxPdXREaXIg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMy
JyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0
aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKXRlbXBcJChQcm9qZWN0TmFt
ZSlcPC9JbnREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVu
dGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgIDwv
UHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29sdXRpb25E
aXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+
CisgICAgPEludERpcj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICA8
L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29sdXRp
b25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXRE
aXI+CisgICAgPEludERpcj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgor
ICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21w
aWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAg
PFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19D
T05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxC
YXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgor
ICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+
CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAg
IDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1h
dGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAg
ICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9y
bWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0
YWJhc2VGaWxlPiQoT3V0RGlyKWd0ZXN0X3Byb2RfdGVzdC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZp
bGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRN
YWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1E
ZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPENsQ29tcGlsZT4K
KyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfQ09OU09M
RTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Cisg
ICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNo
ZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVM
aWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+
CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0
PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwu
LjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVi
dWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJv
Z3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF9wcm9kX3Rlc3QucGRiPC9Qcm9ncmFtRGF0
YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9M
aW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
PgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7
X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRp
VGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xl
dmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgor
ICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3Jt
YXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxPcHRp
bWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPEVuYWJsZUNP
TURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICAgIDxUYXJnZXRNYWNo
aW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZp
bml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8Q2xDb21waWxlPgor
ICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRF
QlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGli
cmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPgor
ICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0lu
Zm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4K
KyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVn
SW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5
c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8
L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0Vu
YWJsZUNPTURBVEZvbGRpbmc+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+
CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XGd0ZXN0
X3Byb2RfdGVzdC5jYyI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Li47
Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4uLjsu
LlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgICAgPC9QcmVj
b21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgICAgPC9QcmVjb21w
aWxlZEhlYWRlcj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi4uOy4u
XGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLjsu
LlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgICA8L1By
ZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICAgIDwvUHJl
Y29tcGlsZWRIZWFkZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24uY2MiPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4K
KyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAg
ICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
PgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+
CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1H
cm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHRlc3Rc
cHJvZHVjdGlvbi5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJv
amVjdFJlZmVyZW5jZSBJbmNsdWRlPSJndGVzdF9tYWluLnZjeHByb2oiPgorICAgICAgPFByb2pl
Y3Q+ezNhZjU0YzhhLTEwYmYtNDMzMi05MTQ3LWY2OGVkOTg2MjAzMn08L1Byb2plY3Q+CisgICAg
PC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIk
KFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3Vw
IExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2ouZmlsdGVycyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9wcm9kX3Rlc3QudmN4cHJvai5maWx0
ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFjMzY3MzEwYWVlNjI2ZjRlYzljMWRmZmRhNzMzYTUwZjJhNWM1ZWMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rl
c3RfcHJvZF90ZXN0LnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDI2IEBACivvu788P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0
LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxk
LzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVz
Ij4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMy
RDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y3h4
O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+
CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50
aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50
aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVu
c2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxndGVzdF9wcm9kX3Rlc3QuY2MiPgorICAg
ICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RccHJvZHVjdGlvbi5jYyI+CisgICAgICA8Rmls
dGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91
cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHRlc3RccHJv
ZHVjdGlvbi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9D
bEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9n
dGVzdF91bml0dGVzdC1tZC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8y
MDEwL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTNiMGRjNGUxYTRlMDNh
ZThkNjNlZmYzNmM2N2JmZTgyMzY1ZjE4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC1tZC52Y3hwcm9qCkBAIC0wLDAg
KzEsMTg4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFBy
b2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0
dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJ
dGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25m
aWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRl
YnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAg
ICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNs
dWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRp
b24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1
cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMy
Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8
UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Cisg
ICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxD
b25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0
PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4K
KyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57NEQ5
RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfTwvUHJvamVjdEd1aWQ+CisgICAgPEtl
eXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQg
UHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+
CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmln
dXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0
ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAw
PC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCci
IExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRp
b248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFy
YWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+Cisg
IDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9u
Ij4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBl
PgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRm
b3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25U
eXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11
bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZv
cm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1Rh
cmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9
IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
IExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhp
c3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMn
KSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8
SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0
PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENv
bmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9y
dEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPElt
cG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVz
ZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3Bw
LiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAv
PgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMi
PgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBs
YXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWlj
cm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQ
bGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVz
ZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9u
PjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8T3V0RGlyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKFNvbHV0
aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0
RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAg
IDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3Jl
bWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRp
cikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4K
KyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxM
aW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3Jl
bWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQ
cm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwk
KFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXRE
aXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfdW5pdHRl
c3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgor
ICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChD
b25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKSQoUHJvamVjdE5h
bWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X3VuaXR0ZXN0PC9UYXJnZXROYW1l
PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFt
ZT5ndGVzdF91bml0dGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJv
cGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF91bml0dGVzdDwvVGFyZ2V0TmFt
ZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENs
Q29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAg
ICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJV
RztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAg
ICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNr
cz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVM
aWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+
CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0
PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwu
LjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVi
dWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJv
Z3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF91bml0dGVzdC5wZGI8L1Byb2dyYW1EYXRh
YmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxU
YXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8
L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPENsQ29t
cGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAg
IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztf
Q09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVu
dGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8
L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGls
ZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAg
ICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0
aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5j
bHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdl
bmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Cisg
ICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF91bml0dGVzdC5wZGI8L1By
b2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4K
KyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9u
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRl
ZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJh
cnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwz
PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0
YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+Cisg
ICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRl
RGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgor
ICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAg
ICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAg
PFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+Cisg
IDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxD
bENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElD
X01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRE
TEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29t
cGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgor
ICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9y
bWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5c
aW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAg
PEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+
CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxPcHRpbWl6ZVJl
ZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPEVuYWJsZUNPTURBVEZv
bGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURl
ZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XC4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2MiPgorICAgICAgPE9wdGltaXphdGlvbiBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+TWluU3Bh
Y2U8L09wdGltaXphdGlvbj4KKyAgICAgIDxPcHRpbWl6YXRpb24gQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5NaW5TcGFjZTwvT3B0aW1pemF0
aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uOy4uXGluY2x1ZGU7
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Li47Li5caW5jbHVkZTsl
KEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+RGVmYXVsdDwvQmFzaWNSdW50aW1lQ2hl
Y2tzPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkRlZmF1bHQ8L0Jhc2ljUnVudGltZUNoZWNr
cz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVy
PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgor
ICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZv
cm1hdGlvbkZvcm1hdD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0IENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+UHJvZ3JhbURhdGFi
YXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
KTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2
NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9J
dGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0i
Z3Rlc3RfbWFpbi1tZC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnszYWY1NGM4YS0xMGJmLTQz
MzItOTE0Ny1mNjhlZDk4NjIwMzN9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4K
KyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNy
b3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFy
Z2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0
ZXN0X3VuaXR0ZXN0LW1kLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDQ3ZGFlNTEzZTg2MDE1M2E1Y2VjMmY0NWI0OGNkYmM3NWY5YjZjZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC1tZC52
Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxOCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0
cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0
ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5p
cXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5p
cXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDto
cGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIg
SW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4
MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAg
PEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwv
RmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2MiPgorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1By
b2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0LnZjeHByb2ogYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfdW5pdHRlc3QudmN4cHJvagpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lYzZhYmRlN2RhMTdlMjllZDI0NzZmNzBjNjk0MTVhZTk2OGYyMWYzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0
LnZjeHByb2oKQEAgLTAsMCArMSwxODAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rp
bmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lv
bj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNi
dWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4K
KyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAg
PENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2lu
MzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RD
b25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5E
ZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAg
IDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmln
dXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0
Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFz
ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAg
ICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+
CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAg
PFByb2plY3RHdWlkPns0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9PC9Qcm9q
ZWN0R3VpZD4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlH
cm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAu
RGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRp
b24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5
cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxh
dGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0
aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNl
dD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1Bs
YXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFi
ZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwv
Q29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3Rl
clNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Q
cm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAg
ICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAg
IDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9v
bHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9y
dCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJ
bXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgor
ICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwv
SW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAg
ICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29m
dC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZv
cm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5
U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxB
cHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVs
PSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCck
KFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFi
ZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVy
dHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Q
cm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAg
IDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29u
ZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpdGVtcFwkKFByb2pl
Y3ROYW1lKVw8L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9MaW5rSW5jcmVt
ZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8
T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29u
ZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE91dERpcil0ZW1wXCQoUHJv
amVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJ
bmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFs
PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE91dERpcj4kKFNv
bHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwv
T3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERp
cj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE91dERpcj4k
KFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24p
XDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0lu
dERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAg
PENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4K
KyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19E
RUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+Cisg
ICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNo
ZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVM
aWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+
CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0
PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwu
LjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVi
dWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJv
Z3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF91bml0dGVzdC5wZGI8L1Byb2dyYW1EYXRh
YmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxU
YXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8
L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPENsQ29t
cGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAg
IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztf
Q09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVu
dGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1
bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRI
ZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAg
PERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVk
ZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVy
YXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAg
ICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF91bml0dGVzdC5wZGI8L1Byb2dy
YW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAg
ICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5X
SU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmlu
aXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+
TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+
VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJu
aW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8
L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExp
bms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJ
bmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAg
PE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8RW5h
YmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPFRhcmdl
dE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRl
bURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxDbENvbXBp
bGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0x
MDtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRp
bWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFk
ZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9y
bWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsu
LlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRl
RGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8
U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+
dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1
ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25H
cm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3Rc
Z3Rlc3RfdW5pdHRlc3QuY2MiPgorICAgICAgPE9wdGltaXphdGlvbiBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+TWluU3BhY2U8L09wdGlt
aXphdGlvbj4KKyAgICAgIDxPcHRpbWl6YXRpb24gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5NaW5TcGFjZTwvT3B0aW1pemF0aW9uPgorICAg
ICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAg
ICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAg
ICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+RGVmYXVsdDwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAg
ICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPkRlZmF1bHQ8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAg
IDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8eDY0JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPERl
YnVnSW5mb3JtYXRpb25Gb3JtYXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3xXaW4zMiciPlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZv
cm1hdD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0IENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMy
JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2
NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAg
ICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAg
ICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+
CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iZ3Rlc3RfbWFp
bi52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnszYWY1NGM4YS0xMGJmLTQzMzItOTE0Ny1mNjhl
ZDk4NjIwMzJ9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3Jv
dXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRh
cmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwv
SW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0
LnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVz
dF91bml0dGVzdC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ3ZGFlNTEzZTg2MDE1M2E1
Y2VjMmY0NWI0OGNkYmM3NWY5YjZjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAs
MCArMSwxOCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQ
cm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0
LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVy
IEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3
RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAg
IDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRl
bnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVz
Ij4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVG
QkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4
O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91
cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rl
c3RfdW5pdHRlc3QuY2MiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAg
ICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9n
dGVzdC1tZC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52
Y3hwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDA3OGU0YWFiNjkxNzEyYTEw
M2MyZWI2M2VlN2RhYzFlZjQ5OWJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4cHJv
agorKysgL2Rldi9udWxsCkBAIC0xLDM2MCArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29s
c1ZlcnNpb249IjE0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVs
b3Blci9tc2J1aWxkLzIwMDMiPgotICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJh
dGlvbnMiPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z1N1ZmZpeHxX
aW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Z1N1ZmZpeDwvQ29uZmlndXJhdGlvbj4K
LSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJh
dGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWdTdWZmaXh8eDY0
Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnU3VmZml4PC9Db25maWd1cmF0aW9uPgotICAg
ICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4K
LSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWdfV2luQ2Fpcm98V2luMzIi
PgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWdfV2luQ2Fpcm88L0NvbmZpZ3VyYXRpb24+Ci0g
ICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRp
b24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnX1dpbkNhaXJvfHg2
NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Z19XaW5DYWlybzwvQ29uZmlndXJhdGlvbj4K
LSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRp
b24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KLSAg
ICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3Jt
PldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9q
ZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgotICAgICAgPENvbmZpZ3VyYXRp
b24+RGVidWc8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4K
LSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJ
bmNsdWRlPSJQcm9kdWN0aW9ufFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPlByb2R1Y3Rp
b248L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAg
IDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IlByb2R1Y3Rpb258eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPlByb2R1Y3Rpb248L0Nv
bmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2pl
Y3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxl
YXNlX1dpbkNhaXJvfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2VfV2luQ2Fp
cm88L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAg
IDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IlJlbGVhc2VfV2luQ2Fpcm98eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2Vf
V2luQ2Fpcm88L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4K
LSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJ
bmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0Nv
bmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJv
amVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJl
bGVhc2V8eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+
Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0
aW9uPgotICA8L0l0ZW1Hcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgot
ICAgIDxQcm9qZWN0R3VpZD57QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU4fTwv
UHJvamVjdEd1aWQ+Ci0gICAgPFJvb3ROYW1lc3BhY2U+Z3Rlc3QtbWQ8L1Jvb3ROYW1lc3BhY2U+
Ci0gICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgotICAgIDxXaW5kb3dzVGFyZ2V0UGxh
dGZvcm1WZXJzaW9uPjguMTwvV2luZG93c1RhcmdldFBsYXRmb3JtVmVyc2lvbj4KLSAgPC9Qcm9w
ZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0
LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmln
dXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3Vy
YXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0g
ICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlH
cm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29u
ZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENo
YXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0
PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2Vf
V2luQ2Fpcm98V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRp
b25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJT
ZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9Q
bGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJv
fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3Rh
dGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5
dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9v
bHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIiBMYWJlbD0i
Q29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0Nv
bmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJT
ZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJv
cGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4K
LSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+
Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZv
cm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8
UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9u
VHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0
Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxh
dGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9
IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9D
b25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVy
U2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8L1By
b3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIiBMYWJlbD0iQ29uZmlndXJh
dGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRp
b25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAg
PFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91
cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAg
PENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAg
IDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9v
bHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3Bl
cnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z1N1ZmZpeHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlv
blR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNl
dD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1Bs
YXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCci
IExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGli
cmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0No
YXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4K
LSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClc
TWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25T
ZXR0aW5ncyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJv
cGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9z
b2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJM
b2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xp
YnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+
Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAg
PEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9u
LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyIg
TGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlz
dHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycp
IiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIk
KFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0lt
cG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0
cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQo
UGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0
YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0
b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9y
dEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVj
dGlvbnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0
PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENv
bmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBv
cnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9w
cyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIiBMYWJlbD0iUHJvcGVy
dHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0
LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9v
dERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2Nh
bEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJh
cmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0g
IDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIg
Q29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPElt
cG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnBy
b3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlT
aGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNw
cC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFw
cERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmll
cylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJ
bXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnX1dpbkNhaXJvfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0
IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0g
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29t
bW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIiBM
YWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0
cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJyki
IExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQo
V2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gIDwvSW1w
b3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4K
LSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxh
dGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xz
XHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRf
TGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGRlYnVnc3VmZml4LnByb3BzIiAvPgotICA8L0ltcG9y
dEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAg
IDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3Jt
KS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0
LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9y
bSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNw
cm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJy
YXJpZXMpXHRvb2xzXHZzcHJvcHNcZGVidWdzdWZmaXgucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3Jv
dXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgotICA8UHJvcGVydHlH
cm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0Rmls
ZVZlcnNpb24+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERp
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNh
aXJvfFdpbjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj4kKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERpciBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdp
bjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGli
JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0g
ICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXRE
aXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dp
bkNhaXJvfHg2NCciPiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQn
Ij4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9P
dXREaXI+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFt
ZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8eDY0JyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAg
ICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1l
PgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXRO
YW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5h
bWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5hbWU+
Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAg
PFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3x4NjQnIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXRO
YW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2lu
Q2Fpcm98V2luMzInIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJn
ZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdf
V2luQ2Fpcm98eDY0JyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFy
Z2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
U3VmZml4fFdpbjMyJyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFy
Z2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
U3VmZml4fHg2NCciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVy
dHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAg
ICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1
ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVh
ZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAg
IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMp
PC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAg
ICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJs
ZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8
TGliPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpZ3Rlc3QkKERlYnVnU3VmZml4KS5saWI8
L091dHB1dEZpbGU+Ci0gICAgPC9MaWI+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0
ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5E
aXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5j
bHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVk
SGVhZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNp
Y1J1bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYj4KLSAgICAgIDxPdXRw
dXRGaWxlPiQoT3V0RGlyKWd0ZXN0JChEZWJ1Z1N1ZmZpeCkubGliPC9PdXRwdXRGaWxlPgotICAg
IDwvTGliPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fp
cm98V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxl
ZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQ
cm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVp
bGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxw
cml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJh
cnk+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVy
PgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRp
bWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYj4KLSAgICAgIDxPdXRwdXRGaWxl
PiQoT3V0RGlyKWd0ZXN0LmxpYjwvT3V0cHV0RmlsZT4KLSAgICA8L0xpYj4KLSAgPC9JdGVtRGVm
aW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPgotICAgIDxDbENv
bXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAg
ICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0
RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRl
OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxSdW50aW1lTGli
cmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxQcmVjb21waWxl
ZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8QmFzaWNSdW50aW1l
Q2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICA8L0NsQ29t
cGlsZT4KLSAgICA8TGliPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpZ3Rlc3QubGliPC9P
dXRwdXRGaWxlPgotICAgIDwvTGliPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWdTdWZmaXh8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXph
dGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNv
bXBpbGVkSGVhZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tz
PC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYj4KLSAgICAg
IDxPdXRwdXRGaWxlPiQoT3V0RGlyKWd0ZXN0JChEZWJ1Z1N1ZmZpeCkubGliPC9PdXRwdXRGaWxl
PgotICAgIDwvTGliPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlv
bkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdT
dWZmaXh8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJs
ZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQo
UHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVc
cHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRp
b25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRp
b25zPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRl
cj4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50
aW1lQ2hlY2tzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWI+Ci0gICAgICA8T3V0cHV0Rmls
ZT4kKE91dERpcilndGVzdCQoRGVidWdTdWZmaXgpLmxpYjwvT3V0cHV0RmlsZT4KLSAgICA8L0xp
Yj4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4K
LSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQ
cm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVp
bGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxw
cml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0g
ICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25z
Pl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25z
PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3Vw
PgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5c
SW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgot
ICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAg
ICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGli
IC8+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJv
fFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVkZTskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliIC8+Ci0gIDwvSXRlbURlZmlu
aXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPgotICAgIDxDbENv
bXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIp
Li47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1
ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5j
bHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2
YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJl
Y29tcGlsZWRIZWFkZXI+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9D
bENvbXBpbGU+Ci0gICAgPExpYiAvPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1
ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVh
ZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAg
IDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwv
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYiAvPgot
ICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj4KLSAg
ICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9q
ZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2
YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAg
ICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9M
SUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgot
ICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgot
ICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LWRlYXRo
LXRlc3QuY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QtZmlsZXBh
dGguY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QtcG9ydC5jYyIg
Lz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC10ZXN0LXBhcnQuY2MiIC8+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QtdHlwZWQtdGVzdC5jYyIgLz4K
LSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC5jYyIgLz4KLSAgPC9JdGVtR3Jv
dXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0
ZXN0XGludGVybmFsXGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCIgLz4KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtZGVhdGgtdGVzdC5oIiAvPgotICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1maWxl
cGF0aC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LWludGVybmFs
LWlubC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRl
cm5hbFxndGVzdC1pbnRlcm5hbC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5j
bHVkZVxndGVzdFxndGVzdC1tZXNzYWdlLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LXBvcnQuaCIgLz4KLSAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3Qtc3BpLmgiIC8+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LXN0cmluZy5oIiAvPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC5oIiAvPgotICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdF9wcmVkX2ltcGwuaCIg
Lz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3RfcHJvZC5o
IiAvPgotICA8L0l0ZW1Hcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgp
XE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNp
b25UYXJnZXRzIj4KLSAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4cHJvai5maWx0ZXJzIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzN2QxYzliNGRjYTZhMTRlYzcwNmJjNGE4YzEzMWY2
YjVjODM4MDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMKKysr
IC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJ1dGYtOCI/PgotPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8v
c2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SXRlbUdy
b3VwPgotICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KLSAgICAgIDxVbmlxdWVJ
ZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJ
ZGVudGlmaWVyPgotICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajti
YXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+Ci0gICAgPC9GaWx0ZXI+Ci0gICAgPEZpbHRlciBJbmNs
dWRlPSJIZWFkZXIgRmlsZXMiPgotICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5
QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+Ci0gICAgICA8RXh0
ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+Ci0gICAgPC9GaWx0
ZXI+Ci0gIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cc3JjXGd0ZXN0LWRlYXRoLXRlc3QuY2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmls
ZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHNyY1xndGVzdC1maWxlcGF0aC5jYyI+Ci0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmls
dGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0
ZXN0LXBvcnQuY2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8
L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC10ZXN0LXBh
cnQuY2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29t
cGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC10eXBlZC10ZXN0LmNj
Ij4KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QuY2MiPgotICAgICAgPEZpbHRl
cj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtR3JvdXA+
Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0
XGludGVybmFsXGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCI+Ci0gICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC1kZWF0aC10ZXN0LmgiPgotICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rlc3QtZmlsZXBhdGguaCI+Ci0g
ICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LWludGVybmFsLWlubC5oIj4KLSAgICAg
IDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LWludGVybmFs
LmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVk
ZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtbWVzc2Fn
ZS5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1
ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0
ZXN0LXBvcnQuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwv
Q2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVz
dC1zcGkuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJ
bmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5h
bFxndGVzdC1zdHJpbmcuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgot
ICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVz
dFxndGVzdC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9D
bEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0
X3ByZWRfaW1wbC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAg
PC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0
ZXN0X3Byb2QuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwv
Q2xJbmNsdWRlPgotICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9ydW5fdGVzdHMu
cHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9ydW5fdGVzdHMucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IGUxMDg0MDU2ZTIzYmRkNWNmY2Y0NGYwNjc2YzFkNjI4YWU2M2Q3NjEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvcnVuX3Rlc3RzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBA
QAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
IyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiUnVucyB0aGUg
c3BlY2lmaWVkIHRlc3RzIGZvciBHb29nbGUgVGVzdC4KLQotVGhpcyBzY3JpcHQgcmVxdWlyZXMg
UHl0aG9uIDIuMyBvciBoaWdoZXIuICBUbyBsZWFybiB0aGUgdXNhZ2UsIHJ1biBpdAotd2l0aCAt
aC4KLSIiIgotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotU0NSSVBUX0RJUiA9IG9zLnBhdGgu
ZGlybmFtZShfX2ZpbGVfXykgb3IgJy4nCi0KLXN5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmpvaW4o
U0NSSVBUX0RJUiwgJ3Rlc3QnKSkKLWltcG9ydCBydW5fdGVzdHNfdXRpbAotCi0KLWRlZiBfTWFp
bigpOgotICAiIiJSdW5zIGFsbCB0ZXN0cyBmb3IgR29vZ2xlIFRlc3QuIiIiCi0KLSAgb3B0aW9u
cywgYXJncyA9IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygnZ3Rlc3QnKQotICB0ZXN0X3J1bm5l
ciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5uZXIoc2NyaXB0X2Rpcj1TQ1JJUFRfRElSKQotICB0
ZXN0cyA9IHRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oYXJncywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuY29uZmlndXJhdGlvbnMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRpb25zKQotICBp
ZiBub3QgdGVzdHM6Ci0gICAgc3lzLmV4aXQoMSkgICMgSW5jb3JyZWN0IHBhcmFtZXRlcnMgZ2l2
ZW4sIGFib3J0IGV4ZWN1dGlvbi4KLQotICBzeXMuZXhpdCh0ZXN0X3J1bm5lci5SdW5UZXN0cyh0
ZXN0c1swXSwgdGVzdHNbMV0pKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBfTWFp
bigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3ByaW1lX3Rh
Ymxlcy5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9wcmltZV90YWJsZXMuaApp
bmRleCA5MmNlMTZhMDE0NGQ1MDJmZDBlNDViNzNmMzdkMzJiYmVkZjFjM2YzLi41MjNjNTBiOWFm
YjFhMDkxOTE2ODA5NGQ3MWZkZjM3NmI2NGFmNmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zYW1wbGVzL3ByaW1lX3RhYmxlcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NhbXBsZXMvcHJpbWVfdGFibGVzLmgKQEAgLTI2LDkgKzI2LDggQEAKIC8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdh
bkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20g
KFZsYWQgTG9zZXYpCisKKwogCiAvLyBUaGlzIHByb3ZpZGVzIGludGVyZmFjZSBQcmltZVRhYmxl
IHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgbnVtYmVyIGlzIGEKIC8vIHByaW1lIGFuZCBkZXRl
cm1pbmVzIGEgbmV4dCBwcmltZSBudW1iZXIuIFRoaXMgaW50ZXJmYWNlIGlzIHVzZWQKQEAgLTEw
MywxMSArMTAyLDE1IEBAIGNsYXNzIFByZUNhbGN1bGF0ZWRQcmltZVRhYmxlIDogcHVibGljIFBy
aW1lVGFibGUgewogICAgIDo6c3RkOjpmaWxsKGlzX3ByaW1lXywgaXNfcHJpbWVfICsgaXNfcHJp
bWVfc2l6ZV8sIHRydWUpOwogICAgIGlzX3ByaW1lX1swXSA9IGlzX3ByaW1lX1sxXSA9IGZhbHNl
OwogCi0gICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gbWF4OyBpKyspIHsKKyAgICAvLyBDaGVja3Mg
ZXZlcnkgY2FuZGlkYXRlIGZvciBwcmltZSBudW1iZXIgKHdlIGtub3cgdGhhdCAyIGlzIHRoZSBv
bmx5IGV2ZW4KKyAgICAvLyBwcmltZSkuCisgICAgZm9yIChpbnQgaSA9IDI7IGkqaSA8PSBtYXg7
IGkgKz0gaSUyKzEpIHsKICAgICAgIGlmICghaXNfcHJpbWVfW2ldKSBjb250aW51ZTsKIAogICAg
ICAgLy8gTWFya3MgYWxsIG11bHRpcGxlcyBvZiBpIChleGNlcHQgaSBpdHNlbGYpIGFzIG5vbi1w
cmltZS4KLSAgICAgIGZvciAoaW50IGogPSAyKmk7IGogPD0gbWF4OyBqICs9IGkpIHsKKyAgICAg
IC8vIFdlIGFyZSBzdGFydGluZyBoZXJlIGZyb20gaS10aCBtdWx0aXBsaWVyLCBiZWNhdXNlIGFs
bCBzbWFsbGVyCisgICAgICAvLyBjb21wbGV4IG51bWJlcnMgd2VyZSBhbHJlYWR5IG1hcmtlZC4K
KyAgICAgIGZvciAoaW50IGogPSBpKmk7IGogPD0gbWF4OyBqICs9IGkpIHsKICAgICAgICAgaXNf
cHJpbWVfW2pdID0gZmFsc2U7CiAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2FtcGxlcy9zYW1wbGUxLmNjCmluZGV4IGYxNzFlMjYwOWQyNTEzMjI4NDYyMWZiNjJjZjNi
YTg2ZTFlNjk5MjUuLjEzY2VjMWQwZmJmYWJkYWFmMWM2YzQxYjFhODZiYzFkMDkwODk4M2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMS5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEuY2MKQEAgLTI4LDggKzI4
LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGlu
ZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2Fu
QGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAogI2luY2x1ZGUgInNhbXBsZTEuaCIKIApAQCAt
NTUsNyArNTMsNyBAQCBib29sIElzUHJpbWUoaW50IG4pIHsKIAogICAvLyBUcnkgdG8gZGl2aWRl
IG4gYnkgZXZlcnkgb2RkIG51bWJlciBpLCBzdGFydGluZyBmcm9tIDMKICAgZm9yIChpbnQgaSA9
IDM7IDsgaSArPSAyKSB7Ci0gICAgLy8gV2Ugb25seSBoYXZlIHRvIHRyeSBpIHVwIHRvIHRoZSBz
cXVyZSByb290IG9mIG4KKyAgICAvLyBXZSBvbmx5IGhhdmUgdG8gdHJ5IGkgdXAgdG8gdGhlIHNx
dWFyZSByb290IG9mIG4KICAgICBpZiAoaSA+IG4vaSkgYnJlYWs7CiAKICAgICAvLyBOb3csIHdl
IGhhdmUgaSA8PSBuL2kgPCBuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGUxLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBs
ZTEuaAppbmRleCAzZGZlYjk4YzQ1MDMwMTQ1ZjllYTE4ZDc5NTMxYzkxYzgxZWU4NDlhLi4yYzNl
OWYwNWYxYTEwYTQ0MjVmNzdiMjg3MTZlODA1OTY4MjE5NjFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEuaApAQCAtMjgsOCArMjgsNiBAQAogLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysg
dGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlv
bmcgV2FuKQogCiAjaWZuZGVmIEdURVNUX1NBTVBMRVNfU0FNUExFMV9IXwogI2RlZmluZSBHVEVT
VF9TQU1QTEVTX1NBTVBMRTFfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9z
YW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjCmluZGV4IDNhZDZmZDY1MzgyNjE3ZjdkNmI0MDFm
NGQxYmQ4M2ZjODZlZDg0ZmUuLjdjZTk1NTBmODgzYWEzNDJkMjViMDQ4NTkzZmFhOTZjYWJkOGUx
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMTBf
dW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUx
MF91bml0dGVzdC5jYwpAQCAtMjUsOCArMjUsNyBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAo
VmxhZCBMb3NldikKKwogCiAvLyBUaGlzIHNhbXBsZSBzaG93cyBob3cgdG8gdXNlIEdvb2dsZSBU
ZXN0IGxpc3RlbmVyIEFQSSB0byBpbXBsZW1lbnQKIC8vIGEgcHJpbWl0aXZlIGxlYWsgY2hlY2tl
ci4KQEAgLTM0LDE5ICszMywxNiBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3Rk
bGliLmg+CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKIHVzaW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lcjsKIHVzaW5nIDo6
dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7CiB1c2luZyA6OnRlc3Rpbmc6OlRlc3Q7Ci11c2luZyA6
OnRlc3Rpbmc6OlRlc3RDYXNlOwogdXNpbmcgOjp0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7
CiB1c2luZyA6OnRlc3Rpbmc6OlRlc3RJbmZvOwogdXNpbmcgOjp0ZXN0aW5nOjpUZXN0UGFydFJl
c3VsdDsKIHVzaW5nIDo6dGVzdGluZzo6VW5pdFRlc3Q7CiAKIG5hbWVzcGFjZSB7Ci0KIC8vIFdl
IHdpbGwgdHJhY2sgbWVtb3J5IHVzZWQgYnkgdGhpcyBjbGFzcy4KIGNsYXNzIFdhdGVyIHsKICBw
dWJsaWM6CkBAIC04OSw4ICs4NSw3IEBAIGNsYXNzIExlYWtDaGVja2VyIDogcHVibGljIEVtcHR5
VGVzdEV2ZW50TGlzdGVuZXIgewogICAgIC8vIFlvdSBjYW4gZ2VuZXJhdGUgYSBmYWlsdXJlIGlu
IGFueSBldmVudCBoYW5kbGVyIGV4Y2VwdAogICAgIC8vIE9uVGVzdFBhcnRSZXN1bHQuIEp1c3Qg
dXNlIGFuIGFwcHJvcHJpYXRlIEdvb2dsZSBUZXN0IGFzc2VydGlvbiB0byBkbwogICAgIC8vIGl0
LgotICAgIEVYUEVDVF9UUlVFKGRpZmZlcmVuY2UgPD0gMCkKLSAgICAgICAgPDwgIkxlYWtlZCAi
IDw8IGRpZmZlcmVuY2UgPDwgIiB1bml0KHMpIG9mIFdhdGVyISI7CisgICAgRVhQRUNUX0xFKGRp
ZmZlcmVuY2UsIDApIDw8ICJMZWFrZWQgIiA8PCBkaWZmZXJlbmNlIDw8ICIgdW5pdChzKSBvZiBX
YXRlciEiOwogICB9CiAKICAgaW50IGluaXRpYWxseV9hbGxvY2F0ZWRfOwpAQCAtMTA3LDcgKzEw
Miw2IEBAIFRFU1QoTGlzdGVuZXJzVGVzdCwgTGVha3NXYXRlcikgewogICBXYXRlciogd2F0ZXIg
PSBuZXcgV2F0ZXI7CiAgIEVYUEVDVF9UUlVFKHdhdGVyICE9IE5VTEwpOwogfQotCiB9ICAvLyBu
YW1lc3BhY2UKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QuY2MKaW5kZXgg
MDFlYjU0NjJmODFhZDU0YjM4YWM1ZWU2MzM3OTcyZWFhMDRkN2FkZS4uY2IwOGI2MWE1OWE5ZTE2
YjM2NTc4NjFmMWM5NjA5MDAxZDIwOTZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYwpAQCAtMjgsOSArMjgsNiBAQAogLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdv
b2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNv
bSAoWmhhbnlvbmcgV2FuKQotCiAKIC8vIFRoaXMgc2FtcGxlIHNob3dzIGhvdyB0byB3cml0ZSBh
IHNpbXBsZSB1bml0IHRlc3QgZm9yIGEgZnVuY3Rpb24sCiAvLyB1c2luZyBHb29nbGUgQysrIHRl
c3RpbmcgZnJhbWV3b3JrLgpAQCAtNDUsOCArNDIsOCBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+
CiAjaW5jbHVkZSAic2FtcGxlMS5oIgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgorbmFtZXNwYWNlIHsKIAogLy8gU3RlcCAyLiBVc2UgdGhlIFRF
U1QgbWFjcm8gdG8gZGVmaW5lIHlvdXIgdGVzdHMuCiAvLwpAQCAtODEsNyArNzgsNyBAQCBURVNU
KEZhY3RvcmlhbFRlc3QsIE5lZ2F0aXZlKSB7CiAgIC8vIHRlc3QgY2FzZS4KICAgRVhQRUNUX0VR
KDEsIEZhY3RvcmlhbCgtNSkpOwogICBFWFBFQ1RfRVEoMSwgRmFjdG9yaWFsKC0xKSk7Ci0gIEVY
UEVDVF9UUlVFKEZhY3RvcmlhbCgtMTApID4gMCk7CisgIEVYUEVDVF9HVChGYWN0b3JpYWwoLTEw
KSwgMCk7CiAKICAgLy8gPFRlY2huaWNhbERldGFpbHM+CiAgIC8vCkBAIC0xMzksNiArMTM2LDcg
QEAgVEVTVChJc1ByaW1lVGVzdCwgUG9zaXRpdmUpIHsKICAgRVhQRUNUX0ZBTFNFKElzUHJpbWUo
NikpOwogICBFWFBFQ1RfVFJVRShJc1ByaW1lKDIzKSk7CiB9Cit9ICAvLyBuYW1lc3BhY2UKIAog
Ly8gU3RlcCAzLiBDYWxsIFJVTl9BTExfVEVTVFMoKSBpbiBtYWluKCkuCiAvLwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUyLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUyLmNjCmluZGV4IDVmNzYzYjliZGY4ZDdhYmMx
M2M2MWM1NjgzMzFkMjFiOWZhNDk3NWQuLmYzYjcyMmZjYWNmZWVlN2Q4OTBiMmQxZjE5YmM5NzQx
NWVjYTQ5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2Ft
cGxlMi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTIuY2MK
QEAgLTI4LDggKzI4LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0g
ZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8v
IEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAogI2luY2x1ZGUgInNhbXBs
ZTIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1w
bGUyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTIuaAppbmRleCA1
YjU3ZTYwODJmYTRmNmI3MjRiZmI1ODI2ODdiZmUwYTYzMTlmMmE3Li41OGYzNjBmNDVjNzY1OGMw
MTk3ZTNmZmM2NWVjOGIzNzVmYjMzNmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1w
bGVzL3NhbXBsZTIuaApAQCAtMjgsOCArMjgsNiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBz
YW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFt
ZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCiAj
aWZuZGVmIEdURVNUX1NBTVBMRVNfU0FNUExFMl9IXwogI2RlZmluZSBHVEVTVF9TQU1QTEVTX1NB
TVBMRTJfSF8KQEAgLTQ0LDcgKzQyLDYgQEAgY2xhc3MgTXlTdHJpbmcgewogICBjb25zdCBNeVN0
cmluZyYgb3BlcmF0b3I9KGNvbnN0IE15U3RyaW5nJiByaHMpOwogCiAgcHVibGljOgotCiAgIC8v
IENsb25lcyBhIDAtdGVybWluYXRlZCBDIHN0cmluZywgYWxsb2NhdGluZyBtZW1vcnkgdXNpbmcg
bmV3LgogICBzdGF0aWMgY29uc3QgY2hhciogQ2xvbmVDU3RyaW5nKGNvbnN0IGNoYXIqIGFfY19z
dHJpbmcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3Nh
bXBsZTJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBs
ZTJfdW5pdHRlc3QuY2MKaW5kZXggMzIyMzJkOThjMGJkMjU0ODIxYzhmNjkxYTZiODU1ZjFmMTYx
NmZiOC4uMDg0ODgyNjE5MmNjNjZmY2I3OTA2ZWYyYzBhYWVmNjZhZjg0M2Y5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYwpA
QCAtMjgsOSArMjgsNiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBk
ZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCiAKIC8vIFRoaXMgc2FtcGxl
IHNob3dzIGhvdyB0byB3cml0ZSBhIG1vcmUgY29tcGxleCB1bml0IHRlc3QgZm9yIGEgY2xhc3MK
IC8vIHRoYXQgaGFzIG11bHRpcGxlIG1lbWJlciBmdW5jdGlvbnMuCkBAIC00MSw4ICszOCw4IEBA
CiAvLyBuZWVkZWQuCiAKICNpbmNsdWRlICJzYW1wbGUyLmgiCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KLQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCituYW1lc3BhY2UgewogLy8gSW4gdGhp
cyBleGFtcGxlLCB3ZSB0ZXN0IHRoZSBNeVN0cmluZyBjbGFzcyAoYSBzaW1wbGUgc3RyaW5nKS4K
IAogLy8gVGVzdHMgdGhlIGRlZmF1bHQgYyd0b3IuCkBAIC03OSw3ICs3Niw3IEBAIGNvbnN0IGNo
YXIga0hlbGxvU3RyaW5nW10gPSAiSGVsbG8sIHdvcmxkISI7CiAvLyBUZXN0cyB0aGUgYyd0b3Ig
dGhhdCBhY2NlcHRzIGEgQyBzdHJpbmcuCiBURVNUKE15U3RyaW5nLCBDb25zdHJ1Y3RvckZyb21D
U3RyaW5nKSB7CiAgIGNvbnN0IE15U3RyaW5nIHMoa0hlbGxvU3RyaW5nKTsKLSAgRVhQRUNUX1RS
VUUoc3RyY21wKHMuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSA9PSAwKTsKKyAgRVhQRUNUX0VR
KDAsIHN0cmNtcChzLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykpOwogICBFWFBFQ1RfRVEoc2l6
ZW9mKGtIZWxsb1N0cmluZykvc2l6ZW9mKGtIZWxsb1N0cmluZ1swXSkgLSAxLAogICAgICAgICAg
ICAgcy5MZW5ndGgoKSk7CiB9CkBAIC04OCw3ICs4NSw3IEBAIFRFU1QoTXlTdHJpbmcsIENvbnN0
cnVjdG9yRnJvbUNTdHJpbmcpIHsKIFRFU1QoTXlTdHJpbmcsIENvcHlDb25zdHJ1Y3Rvcikgewog
ICBjb25zdCBNeVN0cmluZyBzMShrSGVsbG9TdHJpbmcpOwogICBjb25zdCBNeVN0cmluZyBzMiA9
IHMxOwotICBFWFBFQ1RfVFJVRShzdHJjbXAoczIuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSA9
PSAwKTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzMi5jX3N0cmluZygpLCBrSGVsbG9TdHJpbmcp
KTsKIH0KIAogLy8gVGVzdHMgdGhlIFNldCBtZXRob2QuCkBAIC05NiwxNCArOTMsMTUgQEAgVEVT
VChNeVN0cmluZywgU2V0KSB7CiAgIE15U3RyaW5nIHM7CiAKICAgcy5TZXQoa0hlbGxvU3RyaW5n
KTsKLSAgRVhQRUNUX1RSVUUoc3RyY21wKHMuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSA9PSAw
KTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykpOwog
CiAgIC8vIFNldCBzaG91bGQgd29yayB3aGVuIHRoZSBpbnB1dCBwb2ludGVyIGlzIHRoZSBzYW1l
IGFzIHRoZSBvbmUKICAgLy8gYWxyZWFkeSBpbiB0aGUgTXlTdHJpbmcgb2JqZWN0LgogICBzLlNl
dChzLmNfc3RyaW5nKCkpOwotICBFWFBFQ1RfVFJVRShzdHJjbXAocy5jX3N0cmluZygpLCBrSGVs
bG9TdHJpbmcpID09IDApOworICBFWFBFQ1RfRVEoMCwgc3RyY21wKHMuY19zdHJpbmcoKSwga0hl
bGxvU3RyaW5nKSk7CiAKICAgLy8gQ2FuIHdlIHNldCB0aGUgTXlTdHJpbmcgdG8gTlVMTD8KICAg
cy5TZXQoTlVMTCk7CiAgIEVYUEVDVF9TVFJFUShOVUxMLCBzLmNfc3RyaW5nKCkpOwogfQorfSAg
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVz
L3NhbXBsZTMtaW5sLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTMt
aW5sLmgKaW5kZXggNDYzNjlhMDc2ZDg1YzQxMTQyM2FjYWE5OGRkNDU1ZTU1OWVkMzAwYS4uMWEy
OWNlOTI5NmE2NGRmZTk3YTlmN2ZkYzZkYTg2Mzg3ZGMwYjc1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzLWlubC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMy1pbmwuaApAQCAtMjgsOCArMjgsNiBAQAogLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdv
b2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNv
bSAoWmhhbnlvbmcgV2FuKQogCiAjaWZuZGVmIEdURVNUX1NBTVBMRVNfU0FNUExFM19JTkxfSF8K
ICNkZWZpbmUgR1RFU1RfU0FNUExFU19TQU1QTEUzX0lOTF9IXwpAQCAtNjAsNyArNTgsNyBAQCBj
bGFzcyBRdWV1ZU5vZGUgewogIHByaXZhdGU6CiAgIC8vIENyZWF0ZXMgYSBub2RlIHdpdGggYSBn
aXZlbiBlbGVtZW50IHZhbHVlLiAgVGhlIG5leHQgcG9pbnRlciBpcwogICAvLyBzZXQgdG8gTlVM
TC4KLSAgUXVldWVOb2RlKGNvbnN0IEUmIGFuX2VsZW1lbnQpIDogZWxlbWVudF8oYW5fZWxlbWVu
dCksIG5leHRfKE5VTEwpIHt9CisgIGV4cGxpY2l0IFF1ZXVlTm9kZShjb25zdCBFJiBhbl9lbGVt
ZW50KSA6IGVsZW1lbnRfKGFuX2VsZW1lbnQpLCBuZXh0XyhOVUxMKSB7fQogCiAgIC8vIFdlIGRp
c2FibGUgdGhlIGRlZmF1bHQgYXNzaWdubWVudCBvcGVyYXRvciBhbmQgY29weSBjJ3Rvci4KICAg
Y29uc3QgUXVldWVOb2RlJiBvcGVyYXRvciA9IChjb25zdCBRdWV1ZU5vZGUmKTsKQEAgLTcyLDgg
KzcwLDcgQEAgY2xhc3MgUXVldWVOb2RlIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEU+ICAvLyBF
IGlzIHRoZSBlbGVtZW50IHR5cGUuCiBjbGFzcyBRdWV1ZSB7Ci1wdWJsaWM6Ci0KKyBwdWJsaWM6
CiAgIC8vIENyZWF0ZXMgYW4gZW1wdHkgcXVldWUuCiAgIFF1ZXVlKCkgOiBoZWFkXyhOVUxMKSwg
bGFzdF8oTlVMTCksIHNpemVfKDApIHt9CiAKQEAgLTE2OCw2ICsxNjUsNiBAQCBwdWJsaWM6CiAg
IC8vIFdlIGRpc2FsbG93IGNvcHlpbmcgYSBxdWV1ZS4KICAgUXVldWUoY29uc3QgUXVldWUmKTsK
ICAgY29uc3QgUXVldWUmIG9wZXJhdG9yID0gKGNvbnN0IFF1ZXVlJik7Ci0gfTsKK307CiAKICNl
bmRpZiAgLy8gR1RFU1RfU0FNUExFU19TQU1QTEUzX0lOTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjCmluZGV4IDM0YzFjYTg2
NTZlYWI1NjQxODE1NjBkYmYxNDlkMGEyYWE5MmNjMWQuLmUwOTNjMjU4ODU3M2Y5NjI3MGE1ZWQ0
MTI0NWFjN2U4OWY0ODUxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nh
bXBsZXMvc2FtcGxlM191bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9z
YW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MKQEAgLTI4LDkgKzI4LDYgQEAKIC8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysr
IHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKLQogCiAvLyBJbiB0aGlzIGV4YW1wbGUsIHdlIHVzZSBhIG1vcmUgYWR2YW5jZWQg
ZmVhdHVyZSBvZiBHb29nbGUgVGVzdCBjYWxsZWQKIC8vIHRlc3QgZml4dHVyZS4KQEAgLTY0LDE1
ICs2MSwxNSBAQAogLy8gPC9UZWNobmljYWxEZXRhaWxzPgogCiAjaW5jbHVkZSAic2FtcGxlMy1p
bmwuaCIKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKK25hbWVzcGFjZSB7CiAvLyBUbyB1c2UgYSB0ZXN0IGZpeHR1cmUsIGRlcml2ZSBhIGNsYXNz
IGZyb20gdGVzdGluZzo6VGVzdC4KLWNsYXNzIFF1ZXVlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKK2NsYXNzIFF1ZXVlVGVzdFNtcGwzIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogIHBy
b3RlY3RlZDogIC8vIFlvdSBzaG91bGQgbWFrZSB0aGUgbWVtYmVycyBwcm90ZWN0ZWQgcy50LiB0
aGV5IGNhbiBiZQogICAgICAgICAgICAgIC8vIGFjY2Vzc2VkIGZyb20gc3ViLWNsYXNzZXMuCiAK
ICAgLy8gdmlydHVhbCB2b2lkIFNldFVwKCkgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIGVhY2ggdGVz
dCBpcyBydW4uICBZb3UKLSAgLy8gc2hvdWxkIGRlZmluZSBpdCBpZiB5b3UgbmVlZCB0byBpbml0
aWFsaXplIHRoZSB2YXJhaWJsZXMuCisgIC8vIHNob3VsZCBkZWZpbmUgaXQgaWYgeW91IG5lZWQg
dG8gaW5pdGlhbGl6ZSB0aGUgdmFyaWFibGVzLgogICAvLyBPdGhlcndpc2UsIHRoaXMgY2FuIGJl
IHNraXBwZWQuCiAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKICAgICBxMV8uRW5xdWV1ZSgxKTsK
QEAgLTEyMCwxMyArMTE3LDEzIEBAIGNsYXNzIFF1ZXVlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKIC8vIGluc3RlYWQgb2YgVEVTVC4KIAogLy8gVGVzdHMgdGhlIGRlZmF1bHQgYyd0b3Iu
Ci1URVNUX0YoUXVldWVUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3IpIHsKK1RFU1RfRihRdWV1ZVRl
c3RTbXBsMywgRGVmYXVsdENvbnN0cnVjdG9yKSB7CiAgIC8vIFlvdSBjYW4gYWNjZXNzIGRhdGEg
aW4gdGhlIHRlc3QgZml4dHVyZSBoZXJlLgogICBFWFBFQ1RfRVEoMHUsIHEwXy5TaXplKCkpOwog
fQogCiAvLyBUZXN0cyBEZXF1ZXVlKCkuCi1URVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVlKSB7CitU
RVNUX0YoUXVldWVUZXN0U21wbDMsIERlcXVldWUpIHsKICAgaW50ICogbiA9IHEwXy5EZXF1ZXVl
KCk7CiAgIEVYUEVDVF9UUlVFKG4gPT0gTlVMTCk7CiAKQEAgLTE0NCw4ICsxNDEsOSBAQCBURVNU
X0YoUXVldWVUZXN0LCBEZXF1ZXVlKSB7CiB9CiAKIC8vIFRlc3RzIHRoZSBRdWV1ZTo6TWFwKCkg
ZnVuY3Rpb24uCi1URVNUX0YoUXVldWVUZXN0LCBNYXApIHsKK1RFU1RfRihRdWV1ZVRlc3RTbXBs
MywgTWFwKSB7CiAgIE1hcFRlc3RlcigmcTBfKTsKICAgTWFwVGVzdGVyKCZxMV8pOwogICBNYXBU
ZXN0ZXIoJnEyXyk7CiB9Cit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NhbXBsZXMvc2FtcGxlNC5jYwppbmRleCBhZTQ0YmRhNmYxYmFkNTNmZjNjNmYxNGUwMzAyYmQz
YmIzMDljYmE3Li5iMGVlNjA5M2I0YTI1MGNmMTE5MzZjY2M4MjA4YTYxMjI5MWI4MTQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTQuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0LmNjCkBAIC0yOCw4ICsyOCw2
IEBACiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogCiAvLyBBIHNhbXBsZSBwcm9ncmFtIGRlbW9uc3RyYXRpbmcg
dXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBBdXRob3I6IHdhbkBn
b29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAKICNpbmNsdWRlIDxzdGRpby5oPgogCkBAIC00MCw2
ICszOCwxNiBAQCBpbnQgQ291bnRlcjo6SW5jcmVtZW50KCkgewogICByZXR1cm4gY291bnRlcl8r
KzsKIH0KIAorLy8gUmV0dXJucyB0aGUgY3VycmVudCBjb3VudGVyIHZhbHVlLCBhbmQgZGVjcmVt
ZW50cyBpdC4KKy8vIGNvdW50ZXIgY2FuIG5vdCBiZSBsZXNzIHRoYW4gMCwgcmV0dXJuIDAgaW4g
dGhpcyBjYXNlCitpbnQgQ291bnRlcjo6RGVjcmVtZW50KCkgeworICBpZiAoY291bnRlcl8gPT0g
MCkgeworICAgIHJldHVybiBjb3VudGVyXzsKKyAgfSBlbHNlICB7CisgICAgcmV0dXJuIGNvdW50
ZXJfLS07CisgIH0KK30KKwogLy8gUHJpbnRzIHRoZSBjdXJyZW50IGNvdW50ZXIgdmFsdWUgdG8g
U1RET1VULgogdm9pZCBDb3VudGVyOjpQcmludCgpIGNvbnN0IHsKICAgcHJpbnRmKCIlZCIsIGNv
dW50ZXJfKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2Ft
cGxlNC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0LmgKaW5kZXgg
Y2Q2MGYwZGQyZDE4NjA3MzdiN2YwZWE0NWM1Njc1YTNhOGVhNzIxZi4uZTI1NmY0MDY0ZmU5MWE3
ZjAxYTk0NTUwZDMyYzNiYjExYjBhNGZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2FtcGxlcy9zYW1wbGU0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ft
cGxlcy9zYW1wbGU0LmgKQEAgLTI4LDkgKzI4LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEg
c2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJh
bWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQog
I2lmbmRlZiBHVEVTVF9TQU1QTEVTX1NBTVBMRTRfSF8KICNkZWZpbmUgR1RFU1RfU0FNUExFU19T
QU1QTEU0X0hfCiAKQEAgLTQ2LDYgKzQzLDkgQEAgY2xhc3MgQ291bnRlciB7CiAgIC8vIFJldHVy
bnMgdGhlIGN1cnJlbnQgY291bnRlciB2YWx1ZSwgYW5kIGluY3JlbWVudHMgaXQuCiAgIGludCBJ
bmNyZW1lbnQoKTsKIAorICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IGNvdW50ZXIgdmFsdWUsIGFu
ZCBkZWNyZW1lbnRzIGl0LgorICBpbnQgRGVjcmVtZW50KCk7CisKICAgLy8gUHJpbnRzIHRoZSBj
dXJyZW50IGNvdW50ZXIgdmFsdWUgdG8gU1RET1VULgogICB2b2lkIFByaW50KCkgY29uc3Q7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0X3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0X3VuaXR0
ZXN0LmNjCmluZGV4IGI0ZmIzNzM2YWJiZmY4M2Y3OWFmNDQ3Y2E0YmM2YjkxMDU4NjkzMmUuLmQ1
MTQ0YzBkMDBmNWM3NjAwNjkzZWEwMjU4MDJjMGQ3ZDUyNTBkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNF91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QuY2MKQEAgLTI2LDIw
ICsyNiwyOCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKICNpbmNsdWRlICJzYW1wbGU0LmgiCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKIAorbmFtZXNwYWNlIHsKIC8vIFRlc3RzIHRoZSBJbmNyZW1lbnQoKSBtZXRo
b2QuCisKIFRFU1QoQ291bnRlciwgSW5jcmVtZW50KSB7CiAgIENvdW50ZXIgYzsKIAorICAvLyBU
ZXN0IHRoYXQgY291bnRlciAwIHJldHVybnMgMAorICBFWFBFQ1RfRVEoMCwgYy5EZWNyZW1lbnQo
KSk7CisKICAgLy8gRVhQRUNUX0VRKCkgZXZhbHVhdGVzIGl0cyBhcmd1bWVudHMgZXhhY3RseSBv
bmNlLCBzbyB0aGV5CiAgIC8vIGNhbiBoYXZlIHNpZGUgZWZmZWN0cy4KIAogICBFWFBFQ1RfRVEo
MCwgYy5JbmNyZW1lbnQoKSk7CiAgIEVYUEVDVF9FUSgxLCBjLkluY3JlbWVudCgpKTsKICAgRVhQ
RUNUX0VRKDIsIGMuSW5jcmVtZW50KCkpOworCisgIEVYUEVDVF9FUSgzLCBjLkRlY3JlbWVudCgp
KTsKIH0KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MKaW5kZXggNDlkYWU3YzY5ZmE3NmU4YTQ4NjA3
NzA2YjRhMTYyYzY0MmYwYTA4NS4uZDhhODc4OGM2ZDBmZGEyMzg2NDZmZWEyOTBlMDk3Y2M3NjI3
Nzg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU1
X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxl
NV91bml0dGVzdC5jYwpAQCAtMjYsOCArMjYsNyBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbikKKwogCiAvLyBUaGlzIHNhbXBsZSB0ZWFjaGVzIGhvdyB0byByZXVzZSBhIHRl
c3QgZml4dHVyZSBpbiBtdWx0aXBsZSB0ZXN0CiAvLyBjYXNlcyBieSBkZXJpdmluZyBzdWItZml4
dHVyZXMgZnJvbSBpdC4KQEAgLTQ2LDEwICs0NSwxMCBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+
CiAjaW5jbHVkZSA8dGltZS5oPgotI2luY2x1ZGUgInNhbXBsZTMtaW5sLmgiCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgInNhbXBs
ZTEuaCIKLQorI2luY2x1ZGUgInNhbXBsZTMtaW5sLmgiCituYW1lc3BhY2UgewogLy8gSW4gdGhp
cyBzYW1wbGUsIHdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgZXZlcnkgdGVzdCBmaW5pc2hlcyB3aXRo
aW4KIC8vIH41IHNlY29uZHMuICBJZiBhIHRlc3QgdGFrZXMgbG9uZ2VyIHRvIHJ1biwgd2UgY29u
c2lkZXIgaXQgYQogLy8gZmFpbHVyZS4KQEAgLTEwMSw3ICsxMDAsNyBAQCBURVNUX0YoSW50ZWdl
ckZ1bmN0aW9uVGVzdCwgRmFjdG9yaWFsKSB7CiAgIC8vIFRlc3RzIGZhY3RvcmlhbCBvZiBuZWdh
dGl2ZSBudW1iZXJzLgogICBFWFBFQ1RfRVEoMSwgRmFjdG9yaWFsKC01KSk7CiAgIEVYUEVDVF9F
USgxLCBGYWN0b3JpYWwoLTEpKTsKLSAgRVhQRUNUX1RSVUUoRmFjdG9yaWFsKC0xMCkgPiAwKTsK
KyAgRVhQRUNUX0dUKEZhY3RvcmlhbCgtMTApLCAwKTsKIAogICAvLyBUZXN0cyBmYWN0b3JpYWwg
b2YgMC4KICAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgwKSk7CkBAIC0xMTcsMjAgKzExNiwyMCBA
QCBURVNUX0YoSW50ZWdlckZ1bmN0aW9uVGVzdCwgRmFjdG9yaWFsKSB7CiAvLyBUZXN0cyBJc1By
aW1lKCkKIFRFU1RfRihJbnRlZ2VyRnVuY3Rpb25UZXN0LCBJc1ByaW1lKSB7CiAgIC8vIFRlc3Rz
IG5lZ2F0aXZlIGlucHV0LgotICBFWFBFQ1RfVFJVRSghSXNQcmltZSgtMSkpOwotICBFWFBFQ1Rf
VFJVRSghSXNQcmltZSgtMikpOwotICBFWFBFQ1RfVFJVRSghSXNQcmltZShJTlRfTUlOKSk7Cisg
IEVYUEVDVF9GQUxTRShJc1ByaW1lKC0xKSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKC0yKSk7
CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKElOVF9NSU4pKTsKIAogICAvLyBUZXN0cyBzb21lIHRy
aXZpYWwgY2FzZXMuCi0gIEVYUEVDVF9UUlVFKCFJc1ByaW1lKDApKTsKLSAgRVhQRUNUX1RSVUUo
IUlzUHJpbWUoMSkpOworICBFWFBFQ1RfRkFMU0UoSXNQcmltZSgwKSk7CisgIEVYUEVDVF9GQUxT
RShJc1ByaW1lKDEpKTsKICAgRVhQRUNUX1RSVUUoSXNQcmltZSgyKSk7CiAgIEVYUEVDVF9UUlVF
KElzUHJpbWUoMykpOwogCiAgIC8vIFRlc3RzIHBvc2l0aXZlIGlucHV0LgotICBFWFBFQ1RfVFJV
RSghSXNQcmltZSg0KSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKDQpKTsKICAgRVhQRUNUX1RS
VUUoSXNQcmltZSg1KSk7Ci0gIEVYUEVDVF9UUlVFKCFJc1ByaW1lKDYpKTsKKyAgRVhQRUNUX0ZB
TFNFKElzUHJpbWUoNikpOwogICBFWFBFQ1RfVFJVRShJc1ByaW1lKDIzKSk7CiB9CiAKQEAgLTE5
MSw3ICsxOTAsNyBAQCBURVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVlKSB7CiAgIEVYUEVDVF9FUSgx
dSwgcTJfLlNpemUoKSk7CiAgIGRlbGV0ZSBuOwogfQotCit9ICAvLyBuYW1lc3BhY2UKIC8vIElm
IG5lY2Vzc2FyeSwgeW91IGNhbiBkZXJpdmUgZnVydGhlciB0ZXN0IGZpeHR1cmVzIGZyb20gYSBk
ZXJpdmVkCiAvLyBmaXh0dXJlIGl0c2VsZi4gIEZvciBleGFtcGxlLCB5b3UgY2FuIGRlcml2ZSBh
bm90aGVyIGZpeHR1cmUgZnJvbQogLy8gUXVldWVUZXN0LiAgR29vZ2xlIFRlc3QgaW1wb3NlcyBu
byBsaW1pdCBvbiBob3cgZGVlcCB0aGUgaGllcmFyY2h5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2MKaW5kZXggZGQwZGYzMWYwYmI3
Y2JmMjYxNjA3MzQyZTg2NDA0ZDc1YTg1MzQzZS4uZGRmMmYxYzEzYmJlMDM0ODEzNDQ5MzZiMGE3
MmRiYjJhMGIyODQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxl
cy9zYW1wbGU2X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBs
ZXMvc2FtcGxlNl91bml0dGVzdC5jYwpAQCAtMjYsOCArMjYsNyBAQAogLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAog
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUaGlzIHNhbXBsZSBzaG93cyBob3cgdG8gdGVz
dCBjb21tb24gcHJvcGVydGllcyBvZiBtdWx0aXBsZQogLy8gaW1wbGVtZW50YXRpb25zIG9mIHRo
ZSBzYW1lIGludGVyZmFjZSAoYWthIGludGVyZmFjZSB0ZXN0cykuCkBAIC0zNSw4ICszNCw4IEBA
CiAvLyBUaGUgaW50ZXJmYWNlIGFuZCBpdHMgaW1wbGVtZW50YXRpb25zIGFyZSBpbiB0aGlzIGhl
YWRlci4KICNpbmNsdWRlICJwcmltZV90YWJsZXMuaCIKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+Ci0KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorbmFtZXNwYWNlIHsKIC8vIEZpcnN0LCB3
ZSBkZWZpbmUgc29tZSBmYWN0b3J5IGZ1bmN0aW9ucyBmb3IgY3JlYXRpbmcgaW5zdGFuY2VzIG9m
CiAvLyB0aGUgaW1wbGVtZW50YXRpb25zLiAgWW91IG1heSBiZSBhYmxlIHRvIHNraXAgdGhpcyBz
dGVwIGlmIGFsbCB5b3VyCiAvLyBpbXBsZW1lbnRhdGlvbnMgY2FuIGJlIGNvbnN0cnVjdGVkIHRo
ZSBzYW1lIHdheS4KQEAgLTIyMiwzICsyMjEsNCBAQCBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NB
U0VfUChPblRoZUZseUFuZFByZUNhbGN1bGF0ZWQsICAgIC8vIEluc3RhbmNlIG5hbWUKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1lVGFibGVJbXBsZW1lbnRhdGlvbnMpOyAgLy8g
VHlwZSBsaXN0CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorfSAgLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBs
ZTdfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTdf
dW5pdHRlc3QuY2MKaW5kZXggZjQ1NTI4MjdlZDliODMwNmNkZDMxOWFhNTdmM2VkMDY3NjJiNGY1
Zi4uYzFhZThiZGVkYzlhZmM5YTExZDBkOTIwMjFlZjc2NzdkMzk4YTljOSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU3X3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYwpAQCAt
MjYsOCArMjYsNyBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKwogCiAv
LyBUaGlzIHNhbXBsZSBzaG93cyBob3cgdG8gdGVzdCBjb21tb24gcHJvcGVydGllcyBvZiBtdWx0
aXBsZQogLy8gaW1wbGVtZW50YXRpb25zIG9mIGFuIGludGVyZmFjZSAoYWthIGludGVyZmFjZSB0
ZXN0cykgdXNpbmcKQEAgLTM4LDE5ICszNywxNyBAQAogLy8gVGhlIGludGVyZmFjZSBhbmQgaXRz
IGltcGxlbWVudGF0aW9ucyBhcmUgaW4gdGhpcyBoZWFkZXIuCiAjaW5jbHVkZSAicHJpbWVfdGFi
bGVzLmgiCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0jaWYgR1RFU1RfSEFTX1BBUkFN
X1RFU1QKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorbmFtZXNwYWNlIHsKIAogdXNpbmcgOjp0
ZXN0aW5nOjpUZXN0V2l0aFBhcmFtOwogdXNpbmcgOjp0ZXN0aW5nOjpWYWx1ZXM7CiAKLS8vIEFz
IGEgZ2VuZXJhbCBydWxlLCB0ZXN0ZWQgb2JqZWN0cyBzaG91bGQgbm90IGJlIHJldXNlZCBiZXR3
ZWVuIHRlc3RzLgotLy8gQWxzbywgdGhlaXIgY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycyBv
ZiB0ZXN0ZWQgb2JqZWN0cyBjYW4gaGF2ZQotLy8gc2lkZSBlZmZlY3RzLiBUaHVzIHlvdSBzaG91
bGQgY3JlYXRlIGFuZCBkZXN0cm95IHRoZW0gZm9yIGVhY2ggdGVzdC4KLS8vIEluIHRoaXMgc2Ft
cGxlIHdlIHdpbGwgZGVmaW5lIGEgc2ltcGxlIGZhY3RvcnkgZnVuY3Rpb24gZm9yIFByaW1lVGFi
bGUKLS8vIG9iamVjdHMuIFdlIHdpbGwgaW5zdGFudGlhdGUgb2JqZWN0cyBpbiB0ZXN0J3MgU2V0
VXAoKSBtZXRob2QgYW5kCi0vLyBkZWxldGUgdGhlbSBpbiBUZWFyRG93bigpIG1ldGhvZC4KKy8v
IEFzIGEgZ2VuZXJhbCBydWxlLCB0byBwcmV2ZW50IGEgdGVzdCBmcm9tIGFmZmVjdGluZyB0aGUg
dGVzdHMgdGhhdCBjb21lCisvLyBhZnRlciBpdCwgeW91IHNob3VsZCBjcmVhdGUgYW5kIGRlc3Ry
b3kgdGhlIHRlc3RlZCBvYmplY3RzIGZvciBlYWNoIHRlc3QKKy8vIGluc3RlYWQgb2YgcmV1c2lu
ZyB0aGVtLiAgSW4gdGhpcyBzYW1wbGUgd2Ugd2lsbCBkZWZpbmUgYSBzaW1wbGUgZmFjdG9yeQor
Ly8gZnVuY3Rpb24gZm9yIFByaW1lVGFibGUgb2JqZWN0cy4gIFdlIHdpbGwgaW5zdGFudGlhdGUg
b2JqZWN0cyBpbiB0ZXN0J3MKKy8vIFNldFVwKCkgbWV0aG9kIGFuZCBkZWxldGUgdGhlbSBpbiBU
ZWFyRG93bigpIG1ldGhvZC4KIHR5cGVkZWYgUHJpbWVUYWJsZSogQ3JlYXRlUHJpbWVUYWJsZUZ1
bmMoKTsKIAogUHJpbWVUYWJsZSogQ3JlYXRlT25UaGVGbHlQcmltZVRhYmxlKCkgewpAQCAtNjIs
MTQgKzU5LDEzIEBAIFByaW1lVGFibGUqIENyZWF0ZVByZUNhbGN1bGF0ZWRQcmltZVRhYmxlKCkg
ewogICByZXR1cm4gbmV3IFByZUNhbGN1bGF0ZWRQcmltZVRhYmxlKG1heF9wcmVjYWxjdWxhdGVk
KTsKIH0KIAotLy8gSW5zaWRlIHRoZSB0ZXN0IGJvZHksIGZpeHR1cmUgY29uc3RydWN0b3IsIFNl
dFVwKCksIGFuZCBUZWFyRG93bigpCi0vLyB5b3UgY2FuIHJlZmVyIHRvIHRoZSB0ZXN0IHBhcmFt
ZXRlciBieSBHZXRQYXJhbSgpLgotLy8gSW4gdGhpcyBjYXNlLCB0aGUgdGVzdCBwYXJhbWV0ZXIg
aXMgYSBQcmltZVRhYmxlRmFjdG9yeSBpbnRlcmZhY2UgcG9pbnRlcgotLy8gd2hpY2ggd2UgdXNl
IGluIGZpeHR1cmUncyBTZXRVcCgpIHRvIGNyZWF0ZSBhbmQgc3RvcmUgYW4gaW5zdGFuY2Ugb2YK
LS8vIFByaW1lVGFibGUuCi1jbGFzcyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBh
cmFtPENyZWF0ZVByaW1lVGFibGVGdW5jKj4geworLy8gSW5zaWRlIHRoZSB0ZXN0IGJvZHksIGZp
eHR1cmUgY29uc3RydWN0b3IsIFNldFVwKCksIGFuZCBUZWFyRG93bigpIHlvdQorLy8gY2FuIHJl
ZmVyIHRvIHRoZSB0ZXN0IHBhcmFtZXRlciBieSBHZXRQYXJhbSgpLiAgSW4gdGhpcyBjYXNlLCB0
aGUgdGVzdAorLy8gcGFyYW1ldGVyIGlzIGEgZmFjdG9yeSBmdW5jdGlvbiB3aGljaCB3ZSBjYWxs
IGluIGZpeHR1cmUncyBTZXRVcCgpIHRvCisvLyBjcmVhdGUgYW5kIHN0b3JlIGFuIGluc3RhbmNl
IG9mIFByaW1lVGFibGUuCitjbGFzcyBQcmltZVRhYmxlVGVzdFNtcGw3IDogcHVibGljIFRlc3RX
aXRoUGFyYW08Q3JlYXRlUHJpbWVUYWJsZUZ1bmMqPiB7CiAgcHVibGljOgotICB2aXJ0dWFsIH5Q
cmltZVRhYmxlVGVzdCgpIHsgZGVsZXRlIHRhYmxlXzsgfQorICB2aXJ0dWFsIH5QcmltZVRhYmxl
VGVzdFNtcGw3KCkgeyBkZWxldGUgdGFibGVfOyB9CiAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsg
dGFibGVfID0gKCpHZXRQYXJhbSgpKSgpOyB9CiAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsK
ICAgICBkZWxldGUgdGFibGVfOwpAQCAtODAsNyArNzYsNyBAQCBjbGFzcyBQcmltZVRhYmxlVGVz
dCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPENyZWF0ZVByaW1lVGFibGVGdW5jKj4gewogICBQcmlt
ZVRhYmxlKiB0YWJsZV87CiB9OwogCi1URVNUX1AoUHJpbWVUYWJsZVRlc3QsIFJldHVybnNGYWxz
ZUZvck5vblByaW1lcykgeworVEVTVF9QKFByaW1lVGFibGVUZXN0U21wbDcsIFJldHVybnNGYWxz
ZUZvck5vblByaW1lcykgewogICBFWFBFQ1RfRkFMU0UodGFibGVfLT5Jc1ByaW1lKC01KSk7CiAg
IEVYUEVDVF9GQUxTRSh0YWJsZV8tPklzUHJpbWUoMCkpOwogICBFWFBFQ1RfRkFMU0UodGFibGVf
LT5Jc1ByaW1lKDEpKTsKQEAgLTg5LDcgKzg1LDcgQEAgVEVTVF9QKFByaW1lVGFibGVUZXN0LCBS
ZXR1cm5zRmFsc2VGb3JOb25QcmltZXMpIHsKICAgRVhQRUNUX0ZBTFNFKHRhYmxlXy0+SXNQcmlt
ZSgxMDApKTsKIH0KIAotVEVTVF9QKFByaW1lVGFibGVUZXN0LCBSZXR1cm5zVHJ1ZUZvclByaW1l
cykgeworVEVTVF9QKFByaW1lVGFibGVUZXN0U21wbDcsIFJldHVybnNUcnVlRm9yUHJpbWVzKSB7
CiAgIEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSgyKSk7CiAgIEVYUEVDVF9UUlVFKHRhYmxl
Xy0+SXNQcmltZSgzKSk7CiAgIEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSg1KSk7CkBAIC05
OCw3ICs5NCw3IEBAIFRFU1RfUChQcmltZVRhYmxlVGVzdCwgUmV0dXJuc1RydWVGb3JQcmltZXMp
IHsKICAgRVhQRUNUX1RSVUUodGFibGVfLT5Jc1ByaW1lKDEzMSkpOwogfQogCi1URVNUX1AoUHJp
bWVUYWJsZVRlc3QsIENhbkdldE5leHRQcmltZSkgeworVEVTVF9QKFByaW1lVGFibGVUZXN0U21w
bDcsIENhbkdldE5leHRQcmltZSkgewogICBFWFBFQ1RfRVEoMiwgdGFibGVfLT5HZXROZXh0UHJp
bWUoMCkpOwogICBFWFBFQ1RfRVEoMywgdGFibGVfLT5HZXROZXh0UHJpbWUoMikpOwogICBFWFBF
Q1RfRVEoNSwgdGFibGVfLT5HZXROZXh0UHJpbWUoMykpOwpAQCAtMTE0LDE5ICsxMTAsOCBAQCBU
RVNUX1AoUHJpbWVUYWJsZVRlc3QsIENhbkdldE5leHRQcmltZSkgewogLy8KIC8vIEhlcmUsIHdl
IGluc3RhbnRpYXRlIG91ciB0ZXN0cyB3aXRoIGEgbGlzdCBvZiB0d28gUHJpbWVUYWJsZSBvYmpl
Y3QKIC8vIGZhY3RvcnkgZnVuY3Rpb25zOgotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoCi0gICAg
T25UaGVGbHlBbmRQcmVDYWxjdWxhdGVkLAotICAgIFByaW1lVGFibGVUZXN0LAotICAgIFZhbHVl
cygmQ3JlYXRlT25UaGVGbHlQcmltZVRhYmxlLCAmQ3JlYXRlUHJlQ2FsY3VsYXRlZFByaW1lVGFi
bGU8MTAwMD4pKTsKLQotI2Vsc2UKLQotLy8gR29vZ2xlIFRlc3QgbWF5IG5vdCBzdXBwb3J0IHZh
bHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgd2l0aCBzb21lCi0vLyBjb21waWxlcnMuIElmIHdlIHVz
ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBjb21waWxlIG91dCBhbGwKLS8vIGNvZGUgcmVm
ZXJyaW5nIHRvIHRoZSBndGVzdF9tYWluIGxpYnJhcnksIE1TVkMgbGlua2VyIHdpbGwgbm90IGxp
bmsKLS8vIHRoYXQgbGlicmFyeSBhdCBhbGwgYW5kIGNvbnNlcXVlbnRseSBjb21wbGFpbiBhYm91
dCBtaXNzaW5nIGVudHJ5Ci0vLyBwb2ludCBkZWZpbmVkIGluIHRoYXQgbGlicmFyeSAoZmF0YWwg
ZXJyb3IgTE5LMTU2MTogZW50cnkgcG9pbnQKLS8vIG11c3QgYmUgZGVmaW5lZCkuIFRoaXMgZHVt
bXkgdGVzdCBrZWVwcyBndGVzdF9tYWluIGxpbmtlZCBpbi4KLVRFU1QoRHVtbXlUZXN0LCBWYWx1
ZVBhcmFtZXRlcml6ZWRUZXN0c0FyZU5vdFN1cHBvcnRlZE9uVGhpc1BsYXRmb3JtKSB7fQorSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoT25UaGVGbHlBbmRQcmVDYWxjdWxhdGVkLCBQcmltZVRhYmxl
VGVzdFNtcGw3LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKCZDcmVhdGVPblRoZUZs
eVByaW1lVGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNyZWF0ZVByZUNh
bGN1bGF0ZWRQcmltZVRhYmxlPDEwMDA+KSk7CiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFN
X1RFU1QKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjCmluZGV4IGNjZjYxZDkyYjg1YzMxMmY3ZjJlYzJm
NmQ4YTY3M2RmZjRiMDJkNjYuLmNlNzVjZjAzMDg3MGMzNzZkZmVjNjAzMWRiMjQ3MTEwODcwMzgz
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlOF91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZThf
dW5pdHRlc3QuY2MKQEAgLTI2LDggKzI2LDcgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZs
YWQgTG9zZXYpCisKIAogLy8gVGhpcyBzYW1wbGUgc2hvd3MgaG93IHRvIHRlc3QgY29kZSByZWx5
aW5nIG9uIHNvbWUgZ2xvYmFsIGZsYWcgdmFyaWFibGVzLgogLy8gQ29tYmluZSgpIGhlbHBzIHdp
dGggZ2VuZXJhdGluZyBhbGwgcG9zc2libGUgY29tYmluYXRpb25zIG9mIHN1Y2ggZmxhZ3MsCkBA
IC0zNiw4ICszNSw4IEBACiAvLyBVc2UgY2xhc3MgZGVmaW5pdGlvbnMgdG8gdGVzdCBmcm9tIHRo
aXMgaGVhZGVyLgogI2luY2x1ZGUgInByaW1lX3RhYmxlcy5oIgogCi0jaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QuaD4KLQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCituYW1lc3BhY2UgewogI2lmIEdU
RVNUX0hBU19DT01CSU5FCiAKIC8vIFN1cHBvc2Ugd2Ugd2FudCB0byBpbnRyb2R1Y2UgYSBuZXcs
IGltcHJvdmVkIGltcGxlbWVudGF0aW9uIG9mIFByaW1lVGFibGUKQEAgLTkwLDcgKzg5LDcgQEAg
dXNpbmcgOjp0ZXN0aW5nOjpDb21iaW5lOwogLy8gUHJlQ2FsY3VsYXRlZFByaW1lVGFibGUgZGlz
YWJsZWQuIFdlIGRvIHRoaXMgYnkgZGVmaW5pbmcgZml4dHVyZSB3aGljaCB3aWxsCiAvLyBhY2Nl
cHQgZGlmZmVyZW50IGNvbWJpbmF0aW9ucyBvZiBwYXJhbWV0ZXJzIGZvciBpbnN0YW50aWF0aW5n
IGEKIC8vIEh5YnJpZFByaW1lVGFibGUgaW5zdGFuY2UuCi1jbGFzcyBQcmltZVRhYmxlVGVzdCA6
IHB1YmxpYyBUZXN0V2l0aFBhcmFtPCA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQ+ID4gewor
Y2xhc3MgUHJpbWVUYWJsZVRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTwgOjp0ZXN0aW5nOjp0
dXBsZTxib29sLCBpbnQ+ID4gewogIHByb3RlY3RlZDoKICAgdmlydHVhbCB2b2lkIFNldFVwKCkg
ewogICAgIC8vIFRoaXMgY2FuIGJlIHdyaXR0ZW4gYXMKQEAgLTEwMSw4ICsxMDAsOCBAQCBjbGFz
cyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPCA6OnN0ZDo6dHIxOjp0dXBs
ZTxib29sLCBpbnQ+ID4gewogICAgIC8vCiAgICAgLy8gb25jZSB0aGUgR29vZ2xlIEMrKyBTdHls
ZSBHdWlkZSBhbGxvd3MgdXNlIG9mIDo6c3RkOjp0cjE6OnRpZS4KICAgICAvLwotICAgIGJvb2wg
Zm9yY2Vfb25fdGhlX2ZseSA9IDo6c3RkOjp0cjE6OmdldDwwPihHZXRQYXJhbSgpKTsKLSAgICBp
bnQgbWF4X3ByZWNhbGN1bGF0ZWQgPSA6OnN0ZDo6dHIxOjpnZXQ8MT4oR2V0UGFyYW0oKSk7Cisg
ICAgYm9vbCBmb3JjZV9vbl90aGVfZmx5ID0gOjp0ZXN0aW5nOjpnZXQ8MD4oR2V0UGFyYW0oKSk7
CisgICAgaW50IG1heF9wcmVjYWxjdWxhdGVkID0gOjp0ZXN0aW5nOjpnZXQ8MT4oR2V0UGFyYW0o
KSk7CiAgICAgdGFibGVfID0gbmV3IEh5YnJpZFByaW1lVGFibGUoZm9yY2Vfb25fdGhlX2ZseSwg
bWF4X3ByZWNhbGN1bGF0ZWQpOwogICB9CiAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKQEAg
LTE3MSwzICsxNzAsNCBAQCBJTlNUQU5USUFURV9URVNUX0NBU0VfUChNZWFuaW5nZnVsVGVzdFBh
cmFtZXRlcnMsCiBURVNUKER1bW15VGVzdCwgQ29tYmluZUlzTm90U3VwcG9ydGVkT25UaGlzUGxh
dGZvcm0pIHt9CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKK30gIC8vIG5hbWVzcGFj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU5X3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU5X3VuaXR0
ZXN0LmNjCmluZGV4IGQ4MjhlZjRkODZiNzQ2YjI1Njk3YmRkNDZkMjEwMGE0NDYxNDJkMzEuLjUz
ZjlhZjViYTFkZmMyNjk1NjYwNzhmMjM2ZjY5NTU5OWRjNTJhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MKQEAgLTI1LDgg
KzI1LDcgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCisKIAogLy8gVGhp
cyBzYW1wbGUgc2hvd3MgaG93IHRvIHVzZSBHb29nbGUgVGVzdCBsaXN0ZW5lciBBUEkgdG8gaW1w
bGVtZW50CiAvLyBhbiBhbHRlcm5hdGl2ZSBjb25zb2xlIG91dHB1dCBhbmQgaG93IHRvIHVzZSB0
aGUgVW5pdFRlc3QgcmVmbGVjdGlvbiBBUEkKQEAgLTM0LDcgKzMzLDcgQEAKIAogI2luY2x1ZGUg
PHN0ZGlvLmg+CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCiAKIHVzaW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lcjsKIHVzaW5n
IDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7CkBAIC00NCw5ICs0Myw3IEBAIHVzaW5nIDo6dGVz
dGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzOwogdXNpbmcgOjp0ZXN0aW5nOjpUZXN0SW5mbzsKIHVz
aW5nIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ7CiB1c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0
OwotCiBuYW1lc3BhY2UgewotCiAvLyBQcm92aWRlcyBhbHRlcm5hdGl2ZSBvdXRwdXQgbW9kZSB3
aGljaCBwcm9kdWNlcyBtaW5pbWFsIGFtb3VudCBvZgogLy8gaW5mb3JtYXRpb24gYWJvdXQgdGVz
dHMuCiBjbGFzcyBUZXJzZVByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7
CkBAIC02OSw3ICs2Niw3IEBAIGNsYXNzIFRlcnNlUHJpbnRlciA6IHB1YmxpYyBFbXB0eVRlc3RF
dmVudExpc3RlbmVyIHsKICAgICBmZmx1c2goc3Rkb3V0KTsKICAgfQogCi0gIC8vIENhbGxlZCBh
ZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRVNTKCkuCisgIC8vIENhbGxlZCBhZnRl
ciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRUVEKCkgaW52b2NhdGlvbi4KICAgdmlydHVh
bCB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9y
ZXN1bHQpIHsKICAgICBmcHJpbnRmKHN0ZG91dCwKICAgICAgICAgICAgICIlcyBpbiAlczolZFxu
JXNcbiIsCkBAIC0xMDIsNyArOTksNiBAQCBURVNUKEN1c3RvbU91dHB1dFRlc3QsIEZhaWxzKSB7
CiAgIEVYUEVDVF9FUSgxLCAyKQogICAgICAgPDwgIlRoaXMgdGVzdCBmYWlscyBpbiBvcmRlciB0
byBkZW1vbnN0cmF0ZSBhbHRlcm5hdGl2ZSBmYWlsdXJlIG1lc3NhZ2VzIjsKIH0KLQogfSAgLy8g
bmFtZXNwYWNlCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9jb21tb24ucHkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2NvbW1vbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzAzNDdhNzViZGZm
MzE4ODA5Nzc0NTAxNWE1ODAzNzY0YWQ3NDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9jb21tb24ucHkKQEAgLTAsMCArMSw4MyBAQAorIyBDb3B5
cmlnaHQgMjAxMyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworIiIiU2hhcmVkIHV0aWxpdGllcyBmb3Igd3JpdGluZyBzY3JpcHRzIGZvciBHb29n
bGUgVGVzdC9Nb2NrLiIiIgorCitfX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9u
ZyBXYW4pJworCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCisKKworIyBNYXRjaGVzIHRoZSBsaW5l
IGZyb20gJ3N2biBpbmZvIC4nIG91dHB1dCB0aGF0IGRlc2NyaWJlcyB3aGF0IFNWTgorIyBwYXRo
IHRoZSBjdXJyZW50IGxvY2FsIGRpcmVjdG9yeSBjb3JyZXNwb25kcyB0by4gIEZvciBleGFtcGxl
LCBpbgorIyBhIGdvb2dsZXRlc3QgU1ZOIHdvcmtzcGFjZSdzIHRydW5rL3Rlc3QgZGlyZWN0b3J5
LCB0aGUgb3V0cHV0IHdpbGwgYmU6CisjCisjIFVSTDogaHR0cHM6Ly9nb29nbGV0ZXN0Lmdvb2ds
ZWNvZGUuY29tL3N2bi90cnVuay90ZXN0CitfU1ZOX0lORk9fVVJMX1JFID0gcmUuY29tcGlsZShy
J15VUkw6IGh0dHBzOi8vKFx3KylcLmdvb2dsZWNvZGVcLmNvbS9zdm4oLiopJykKKworCitkZWYg
R2V0Q29tbWFuZE91dHB1dChjb21tYW5kKToKKyAgIiIiUnVucyB0aGUgc2hlbGwgY29tbWFuZCBh
bmQgcmV0dXJucyBpdHMgc3Rkb3V0IGFzIGEgbGlzdCBvZiBsaW5lcy4iIiIKKworICBmID0gb3Mu
cG9wZW4oY29tbWFuZCwgJ3InKQorICBsaW5lcyA9IFtsaW5lLnN0cmlwKCkgZm9yIGxpbmUgaW4g
Zi5yZWFkbGluZXMoKV0KKyAgZi5jbG9zZSgpCisgIHJldHVybiBsaW5lcworCisKK2RlZiBHZXRT
dm5JbmZvKCk6CisgICIiIlJldHVybnMgdGhlIHByb2plY3QgbmFtZSBhbmQgdGhlIGN1cnJlbnQg
U1ZOIHdvcmtzcGFjZSdzIHJvb3QgcGF0aC4iIiIKKworICBmb3IgbGluZSBpbiBHZXRDb21tYW5k
T3V0cHV0KCdzdm4gaW5mbyAuJyk6CisgICAgbSA9IF9TVk5fSU5GT19VUkxfUkUubWF0Y2gobGlu
ZSkKKyAgICBpZiBtOgorICAgICAgcHJvamVjdCA9IG0uZ3JvdXAoMSkgICMgZ29vZ2xldGVzdCBv
ciBnb29nbGVtb2NrCisgICAgICByZWxfcGF0aCA9IG0uZ3JvdXAoMikKKyAgICAgIHJvb3QgPSBv
cy5wYXRoLnJlYWxwYXRoKHJlbF9wYXRoLmNvdW50KCcvJykgKiAnLi4vJykKKyAgICAgIHJldHVy
biBwcm9qZWN0LCByb290CisKKyAgcmV0dXJuIE5vbmUsIE5vbmUKKworCitkZWYgR2V0U3ZuVHJ1
bmsoKToKKyAgIiIiUmV0dXJucyB0aGUgY3VycmVudCBTVk4gd29ya3NwYWNlJ3MgdHJ1bmsgcm9v
dCBwYXRoLiIiIgorCisgIF8sIHJvb3QgPSBHZXRTdm5JbmZvKCkKKyAgcmV0dXJuIHJvb3QgKyAn
L3RydW5rJyBpZiByb290IGVsc2UgTm9uZQorCisKK2RlZiBJc0luR1Rlc3RTdm4oKToKKyAgcHJv
amVjdCwgXyA9IEdldFN2bkluZm8oKQorICByZXR1cm4gcHJvamVjdCA9PSAnZ29vZ2xldGVzdCcK
KworCitkZWYgSXNJbkdNb2NrU3ZuKCk6CisgIHByb2plY3QsIF8gPSBHZXRTdm5JbmZvKCkKKyAg
cmV0dXJuIHByb2plY3QgPT0gJ2dvb2dsZW1vY2snCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zY3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zY3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMucHkKaW5kZXggMTQ4NDQ0Y2E3MTFiMWVk
YWFhZmVhOGQ3ODI2ZDNjZmQ0YzAxZGUwYi4uZDBkZDQ2NGZlOGI1OWM1NDEwYTNkMWI4NWRiNDc5
NWJiZDAzMWQ4OSAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9m
dXNlX2d0ZXN0X2ZpbGVzLnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMv
ZnVzZV9ndGVzdF9maWxlcy5weQpAQCAtNTIsNyArNTIsNyBAQCBFWEFNUExFUwogVGhpcyB0b29s
IGlzIGV4cGVyaW1lbnRhbC4gIEluIHBhcnRpY3VsYXIsIGl0IGFzc3VtZXMgdGhhdCB0aGVyZSBp
cyBubwogY29uZGl0aW9uYWwgaW5jbHVzaW9uIG9mIEdvb2dsZSBUZXN0IGhlYWRlcnMuICBQbGVh
c2UgcmVwb3J0IGFueQogcHJvYmxlbXMgdG8gZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91
cHMuY29tLiAgWW91IGNhbiByZWFkCi1odHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVz
dC93aWtpL0dvb2dsZVRlc3RBZHZhbmNlZEd1aWRlIGZvcgoraHR0cHM6Ly9naXRodWIuY29tL2dv
b2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2dsZXRlc3QvZG9jcy9hZHZhbmNlZC5tZCBm
b3IKIG1vcmUgaW5mb3JtYXRpb24uCiAiIiIKIApAQCAtNjAsMTUgKzYwLDE4IEBAIF9fYXV0aG9y
X18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCiAKIGltcG9ydCBvcwogaW1wb3J0
IHJlCi1pbXBvcnQgc2V0cwordHJ5OgorICBmcm9tIHNldHMgaW1wb3J0IFNldCBhcyBzZXQgICMg
Rm9yIFB5dGhvbiAyLjMgY29tcGF0aWJpbGl0eQorZXhjZXB0IEltcG9ydEVycm9yOgorICBwYXNz
CiBpbXBvcnQgc3lzCiAKICMgV2UgYXNzdW1lIHRoYXQgdGhpcyBmaWxlIGlzIGluIHRoZSBzY3Jp
cHRzLyBkaXJlY3RvcnkgaW4gdGhlIEdvb2dsZQogIyBUZXN0IHJvb3QgZGlyZWN0b3J5LgogREVG
QVVMVF9HVEVTVF9ST09UX0RJUiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxl
X18pLCAnLi4nKQogCi0jIFJlZ2V4IGZvciBtYXRjaGluZyAnI2luY2x1ZGUgPGd0ZXN0Ly4uLj4n
LgotSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VYID0gcmUuY29tcGlsZShyJ15ccyojXHMqaW5jbHVk
ZVxzKjwoZ3Rlc3QvLispPicpCisjIFJlZ2V4IGZvciBtYXRjaGluZyAnI2luY2x1ZGUgImd0ZXN0
Ly4uLiInLgorSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VYID0gcmUuY29tcGlsZShyJ15ccyojXHMq
aW5jbHVkZVxzKiIoZ3Rlc3QvLispIicpCiAKICMgUmVnZXggZm9yIG1hdGNoaW5nICcjaW5jbHVk
ZSAic3JjLy4uLiInLgogSU5DTFVERV9TUkNfRklMRV9SRUdFWCA9IHJlLmNvbXBpbGUocideXHMq
I1xzKmluY2x1ZGVccyoiKHNyYy8uKykiJykKQEAgLTkwLDEwICs5MywxMCBAQCBkZWYgVmVyaWZ5
RmlsZUV4aXN0cyhkaXJlY3RvcnksIHJlbGF0aXZlX3BhdGgpOgogICAiIiIKIAogICBpZiBub3Qg
b3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGRpcmVjdG9yeSwgcmVsYXRpdmVfcGF0aCkpOgot
ICAgIHByaW50ICdFUlJPUjogQ2Fubm90IGZpbmQgJXMgaW4gZGlyZWN0b3J5ICVzLicgJSAocmVs
YXRpdmVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpcmVjdG9yeSkKLSAgICBwcmludCAoJ1BsZWFzZSBlaXRoZXIgc3BlY2lmeSBh
IHZhbGlkIHByb2plY3Qgcm9vdCBkaXJlY3RvcnkgJwotICAgICAgICAgICAnb3Igb21pdCBpdCBv
biB0aGUgY29tbWFuZCBsaW5lLicpCisgICAgcHJpbnQoJ0VSUk9SOiBDYW5ub3QgZmluZCAlcyBp
biBkaXJlY3RvcnkgJXMuJyAlIChyZWxhdGl2ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5KSkKKyAgICBwcmludCgn
UGxlYXNlIGVpdGhlciBzcGVjaWZ5IGEgdmFsaWQgcHJvamVjdCByb290IGRpcmVjdG9yeSAnCisg
ICAgICAgICAgJ29yIG9taXQgaXQgb24gdGhlIGNvbW1hbmQgbGluZS4nKQogICAgIHN5cy5leGl0
KDEpCiAKIApAQCAtMTE5LDExICsxMjIsMTEgQEAgZGVmIFZlcmlmeU91dHB1dEZpbGUob3V0cHV0
X2RpciwgcmVsYXRpdmVfcGF0aCk6CiAgICAgIyBUT0RPKHdhbkBnb29nbGUuY29tKTogVGhlIGZv
bGxvd2luZyB1c2VyLWludGVyYWN0aW9uIGRvZXNuJ3QKICAgICAjIHdvcmsgd2l0aCBhdXRvbWF0
ZWQgcHJvY2Vzc2VzLiAgV2Ugc2hvdWxkIHByb3ZpZGUgYSB3YXkgZm9yIHRoZQogICAgICMgTWFr
ZWZpbGUgdG8gZm9yY2Ugb3ZlcndyaXRpbmcgdGhlIGZpbGVzLgotICAgIHByaW50ICgnJXMgYWxy
ZWFkeSBleGlzdHMgaW4gZGlyZWN0b3J5ICVzIC0gb3ZlcndyaXRlIGl0PyAoeS9OKSAnICUKLSAg
ICAgICAgICAgKHJlbGF0aXZlX3BhdGgsIG91dHB1dF9kaXIpKQorICAgIHByaW50KCclcyBhbHJl
YWR5IGV4aXN0cyBpbiBkaXJlY3RvcnkgJXMgLSBvdmVyd3JpdGUgaXQ/ICh5L04pICcgJQorICAg
ICAgICAgIChyZWxhdGl2ZV9wYXRoLCBvdXRwdXRfZGlyKSkKICAgICBhbnN3ZXIgPSBzeXMuc3Rk
aW4ucmVhZGxpbmUoKS5zdHJpcCgpCiAgICAgaWYgYW5zd2VyIG5vdCBpbiBbJ3knLCAnWSddOgot
ICAgICAgcHJpbnQgJ0FCT1JURUQuJworICAgICAgcHJpbnQoJ0FCT1JURUQuJykKICAgICAgIHN5
cy5leGl0KDEpCiAKICAgIyBNYWtlcyBzdXJlIHRoZSBkaXJlY3RvcnkgaG9sZGluZyB0aGUgb3V0
cHV0IGZpbGUgZXhpc3RzOyBjcmVhdGVzCkBAIC0xNDYsOCArMTQ5LDggQEAgZGVmIFZhbGlkYXRl
T3V0cHV0RGlyKG91dHB1dF9kaXIpOgogZGVmIEZ1c2VHVGVzdEgoZ3Rlc3Rfcm9vdCwgb3V0cHV0
X2Rpcik6CiAgICIiIlNjYW5zIGZvbGRlciBndGVzdF9yb290IHRvIGdlbmVyYXRlIGd0ZXN0L2d0
ZXN0LmggaW4gb3V0cHV0X2Rpci4iIiIKIAotICBvdXRwdXRfZmlsZSA9IGZpbGUob3MucGF0aC5q
b2luKG91dHB1dF9kaXIsIEdURVNUX0hfT1VUUFVUKSwgJ3cnKQotICBwcm9jZXNzZWRfZmlsZXMg
PSBzZXRzLlNldCgpICAjIEhvbGRzIGFsbCBndGVzdCBoZWFkZXJzIHdlJ3ZlIHByb2Nlc3NlZC4K
KyAgb3V0cHV0X2ZpbGUgPSBvcGVuKG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCBHVEVTVF9IX09V
VFBVVCksICd3JykKKyAgcHJvY2Vzc2VkX2ZpbGVzID0gc2V0KCkgICMgSG9sZHMgYWxsIGd0ZXN0
IGhlYWRlcnMgd2UndmUgcHJvY2Vzc2VkLgogCiAgIGRlZiBQcm9jZXNzRmlsZShndGVzdF9oZWFk
ZXJfcGF0aCk6CiAgICAgIiIiUHJvY2Vzc2VzIHRoZSBnaXZlbiBndGVzdCBoZWFkZXIgZmlsZS4i
IiIKQEAgLTE1OSwxMCArMTYyLDEwIEBAIGRlZiBGdXNlR1Rlc3RIKGd0ZXN0X3Jvb3QsIG91dHB1
dF9kaXIpOgogICAgIHByb2Nlc3NlZF9maWxlcy5hZGQoZ3Rlc3RfaGVhZGVyX3BhdGgpCiAKICAg
ICAjIFJlYWRzIGVhY2ggbGluZSBpbiB0aGUgZ2l2ZW4gZ3Rlc3QgaGVhZGVyLgotICAgIGZvciBs
aW5lIGluIGZpbGUob3MucGF0aC5qb2luKGd0ZXN0X3Jvb3QsIGd0ZXN0X2hlYWRlcl9wYXRoKSwg
J3InKToKKyAgICBmb3IgbGluZSBpbiBvcGVuKG9zLnBhdGguam9pbihndGVzdF9yb290LCBndGVz
dF9oZWFkZXJfcGF0aCksICdyJyk6CiAgICAgICBtID0gSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VY
Lm1hdGNoKGxpbmUpCiAgICAgICBpZiBtOgotICAgICAgICAjIEl0J3MgJyNpbmNsdWRlIDxndGVz
dC8uLi4+JyAtIGxldCdzIHByb2Nlc3MgaXQgcmVjdXJzaXZlbHkuCisgICAgICAgICMgSXQncyAn
I2luY2x1ZGUgImd0ZXN0Ly4uLiInIC0gbGV0J3MgcHJvY2VzcyBpdCByZWN1cnNpdmVseS4KICAg
ICAgICAgUHJvY2Vzc0ZpbGUoJ2luY2x1ZGUvJyArIG0uZ3JvdXAoMSkpCiAgICAgICBlbHNlOgog
ICAgICAgICAjIE90aGVyd2lzZSB3ZSBjb3B5IHRoZSBsaW5lIHVuY2hhbmdlZCB0byB0aGUgb3V0
cHV0IGZpbGUuCkBAIC0xNzUsNyArMTc4LDcgQEAgZGVmIEZ1c2VHVGVzdEgoZ3Rlc3Rfcm9vdCwg
b3V0cHV0X2Rpcik6CiBkZWYgRnVzZUdUZXN0QWxsQ2NUb0ZpbGUoZ3Rlc3Rfcm9vdCwgb3V0cHV0
X2ZpbGUpOgogICAiIiJTY2FucyBmb2xkZXIgZ3Rlc3Rfcm9vdCB0byBnZW5lcmF0ZSBndGVzdC9n
dGVzdC1hbGwuY2MgaW4gb3V0cHV0X2ZpbGUuIiIiCiAKLSAgcHJvY2Vzc2VkX2ZpbGVzID0gc2V0
cy5TZXQoKQorICBwcm9jZXNzZWRfZmlsZXMgPSBzZXQoKQogCiAgIGRlZiBQcm9jZXNzRmlsZShn
dGVzdF9zb3VyY2VfZmlsZSk6CiAgICAgIiIiUHJvY2Vzc2VzIHRoZSBnaXZlbiBndGVzdCBzb3Vy
Y2UgZmlsZS4iIiIKQEAgLTE4NywyMyArMTkwLDIzIEBAIGRlZiBGdXNlR1Rlc3RBbGxDY1RvRmls
ZShndGVzdF9yb290LCBvdXRwdXRfZmlsZSk6CiAgICAgcHJvY2Vzc2VkX2ZpbGVzLmFkZChndGVz
dF9zb3VyY2VfZmlsZSkKIAogICAgICMgUmVhZHMgZWFjaCBsaW5lIGluIHRoZSBnaXZlbiBndGVz
dCBzb3VyY2UgZmlsZS4KLSAgICBmb3IgbGluZSBpbiBmaWxlKG9zLnBhdGguam9pbihndGVzdF9y
b290LCBndGVzdF9zb3VyY2VfZmlsZSksICdyJyk6CisgICAgZm9yIGxpbmUgaW4gb3Blbihvcy5w
YXRoLmpvaW4oZ3Rlc3Rfcm9vdCwgZ3Rlc3Rfc291cmNlX2ZpbGUpLCAncicpOgogICAgICAgbSA9
IElOQ0xVREVfR1RFU1RfRklMRV9SRUdFWC5tYXRjaChsaW5lKQogICAgICAgaWYgbToKICAgICAg
ICAgaWYgJ2luY2x1ZGUvJyArIG0uZ3JvdXAoMSkgPT0gR1RFU1RfU1BJX0hfU0VFRDoKLSAgICAg
ICAgICAjIEl0J3MgJyNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGkuaD4nLiAgVGhpcyBmaWxlIGlz
IG5vdAotICAgICAgICAgICMgI2luY2x1ZGVkIGJ5IDxndGVzdC9ndGVzdC5oPiwgc28gd2UgbmVl
ZCB0byBwcm9jZXNzIGl0LgorICAgICAgICAgICMgSXQncyAnI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LXNwaS5oIicuICBUaGlzIGZpbGUgaXMgbm90CisgICAgICAgICAgIyAjaW5jbHVkZWQgYnkgImd0
ZXN0L2d0ZXN0LmgiLCBzbyB3ZSBuZWVkIHRvIHByb2Nlc3MgaXQuCiAgICAgICAgICAgUHJvY2Vz
c0ZpbGUoR1RFU1RfU1BJX0hfU0VFRCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAjIEl0J3Mg
JyNpbmNsdWRlIDxndGVzdC9mb28uaD4nIHdoZXJlIGZvbyBpcyBub3QgZ3Rlc3Qtc3BpLgotICAg
ICAgICAgICMgV2UgdHJlYXQgaXQgYXMgJyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPicsIGFzIGFs
bCBvdGhlcgorICAgICAgICAgICMgSXQncyAnI2luY2x1ZGUgImd0ZXN0L2Zvby5oIicgd2hlcmUg
Zm9vIGlzIG5vdCBndGVzdC1zcGkuCisgICAgICAgICAgIyBXZSB0cmVhdCBpdCBhcyAnI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiJywgYXMgYWxsIG90aGVyCiAgICAgICAgICAgIyBndGVzdCBoZWFk
ZXJzIGFyZSBiZWluZyBmdXNlZCBpbnRvIGd0ZXN0LmggYW5kIGNhbm5vdCBiZQogICAgICAgICAg
ICMgI2luY2x1ZGVkIGRpcmVjdGx5LgogCi0gICAgICAgICAgIyBUaGVyZSBpcyBubyBuZWVkIHRv
ICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPiBtb3JlIHRoYW4gb25jZS4KKyAgICAgICAgICAjIFRo
ZXJlIGlzIG5vIG5lZWQgdG8gI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiIG1vcmUgdGhhbiBvbmNl
LgogICAgICAgICAgIGlmIG5vdCBHVEVTVF9IX1NFRUQgaW4gcHJvY2Vzc2VkX2ZpbGVzOgogICAg
ICAgICAgICAgcHJvY2Vzc2VkX2ZpbGVzLmFkZChHVEVTVF9IX1NFRUQpCi0gICAgICAgICAgICBv
dXRwdXRfZmlsZS53cml0ZSgnI2luY2x1ZGUgPCVzPlxuJyAlIChHVEVTVF9IX09VVFBVVCwpKQor
ICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoJyNpbmNsdWRlICIlcyJcbicgJSAoR1RFU1Rf
SF9PVVRQVVQsKSkKICAgICAgIGVsc2U6CiAgICAgICAgIG0gPSBJTkNMVURFX1NSQ19GSUxFX1JF
R0VYLm1hdGNoKGxpbmUpCiAgICAgICAgIGlmIG06CkBAIC0yMTgsNyArMjIxLDcgQEAgZGVmIEZ1
c2VHVGVzdEFsbENjVG9GaWxlKGd0ZXN0X3Jvb3QsIG91dHB1dF9maWxlKToKIGRlZiBGdXNlR1Rl
c3RBbGxDYyhndGVzdF9yb290LCBvdXRwdXRfZGlyKToKICAgIiIiU2NhbnMgZm9sZGVyIGd0ZXN0
X3Jvb3QgdG8gZ2VuZXJhdGUgZ3Rlc3QvZ3Rlc3QtYWxsLmNjIGluIG91dHB1dF9kaXIuIiIiCiAK
LSAgb3V0cHV0X2ZpbGUgPSBmaWxlKG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCBHVEVTVF9BTExf
Q0NfT1VUUFVUKSwgJ3cnKQorICBvdXRwdXRfZmlsZSA9IG9wZW4ob3MucGF0aC5qb2luKG91dHB1
dF9kaXIsIEdURVNUX0FMTF9DQ19PVVRQVVQpLCAndycpCiAgIEZ1c2VHVGVzdEFsbENjVG9GaWxl
KGd0ZXN0X3Jvb3QsIG91dHB1dF9maWxlKQogICBvdXRwdXRfZmlsZS5jbG9zZSgpCiAKQEAgLTI0
Miw3ICsyNDUsNyBAQCBkZWYgbWFpbigpOgogICAgICMgZnVzZV9ndGVzdF9maWxlcy5weSBHVEVT
VF9ST09UX0RJUiBPVVRQVVRfRElSCiAgICAgRnVzZUdUZXN0KHN5cy5hcmd2WzFdLCBzeXMuYXJn
dlsyXSkKICAgZWxzZToKLSAgICBwcmludCBfX2RvY19fCisgICAgcHJpbnQoX19kb2NfXykKICAg
ICBzeXMuZXhpdCgxKQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nj
cmlwdHMvZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nj
cmlwdHMvZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weQppbmRleCA4MzA3MTM0YWRhZjRkYTJiZThmYTIz
MzIyOTE1MjBkMzljOTRiYjEyLi5iNDNlZmRmNDFlNWMwMjc0MGY3MmIzNTUzMmJlNWNmMDQ5Nzk0
ODM1IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2dlbl9ndGVz
dF9wcmVkX2ltcGwucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9nZW5f
Z3Rlc3RfcHJlZF9pbXBsLnB5CkBAIC0xMTUsMTAgKzExNSw5IEBAIGRlZiBIZWFkZXJQcmVhbWJs
ZShuKToKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KICNk
ZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KIAotLy8gTWFrZXMg
c3VyZSB0aGlzIGhlYWRlciBpcyBub3QgaW5jbHVkZWQgYmVmb3JlIGd0ZXN0LmguCi0jaWZuZGVm
IEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KLSNlcnJvciBEbyBub3QgaW5jbHVkZSBndGVz
dF9wcmVkX2ltcGwuaCBkaXJlY3RseS4gIEluY2x1ZGUgZ3Rlc3QuaCBpbnN0ZWFkLgotI2VuZGlm
ICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0hfCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKKworbmFtZXNwYWNlIHRlc3RpbmcgewogCiAvLyBUaGlzIGhlYWRlciBpbXBsZW1lbnRzIGEg
ZmFtaWx5IG9mIGdlbmVyaWMgcHJlZGljYXRlIGFzc2VydGlvbgogLy8gbWFjcm9zOgpAQCAtMjM4
LDI3ICsyMzcsMjUgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQlKG4pc0hlbHBlcihjb25z
dCBjaGFyKiBwcmVkX3RleHQiIiIgJSBERUZTCiAgIGltcGwgKz0gIiIiKSB7CiAgIGlmIChwcmVk
KCUodnMpcykpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7CiAi
IiIgJSBERUZTCiAKLSAgaW1wbCArPSAnICBtc2cgPDwgcHJlZF90ZXh0IDw8ICIoIicKKyAgaW1w
bCArPSAnICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCInCiAK
ICAgaW1wbCArPSBJdGVyKG4sICIiIgotICAgICAgPDwgZSVzIiIiLCBzZXA9JyA8PCAiLCAiJykK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlJXMiIiIsIHNlcD0nIDw8ICIsICInKQog
CiAgIGltcGwgKz0gJyA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIicKIAogICBpbXBs
ICs9IEl0ZXIobiwgIiIiCi0gICAgICA8PCAiXFxuIiA8PCBlJXMgPDwgIiBldmFsdWF0ZXMgdG8g
IiA8PCB2JXMiIiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxcbiIgPDwgZSVz
IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdiVzIiIiKQogCiAgIGltcGwgKz0gIiIiOwotICByZXR1
cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogCiAvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1w
bGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEX0ZPUk1BVCUobilzLgogLy8gRG9uJ3QgdXNl
IHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVCUobilzXyhwcmVk
X2Zvcm1hdCwgJSh2cylzLCBvbl9mYWlsdXJlKVxcCi0gIEdURVNUX0FTU0VSVF8ocHJlZF9mb3Jt
YXQoJSh2dHMpcywgJSh2cylzKSxcXAorICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCUodnRz
KXMsICUodnMpcyksIFxcCiAgICAgICAgICAgICAgICAgb25fZmFpbHVyZSkKIAogLy8gSW50ZXJu
YWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRCUobilzLiAgRG9u
J3QgdXNlCkBAIC0yOTcsMTYgKzI5NCwxNyBAQCBkZWYgSGVhZGVyUG9zdGFtYmxlKCk6CiAKICAg
cmV0dXJuICIiIgogCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCiAjZW5kaWYgIC8vIEdURVNU
X0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJFRF9JTVBMX0hfCiAiIiIKIAogCiBkZWYgR2VuZXJhdGVG
aWxlKHBhdGgsIGNvbnRlbnQpOgotICAiIiJHaXZlbiBhIGZpbGUgcGF0aCBhbmQgYSBjb250ZW50
IHN0cmluZywgb3ZlcndyaXRlcyBpdCB3aXRoIHRoZQotICBnaXZlbiBjb250ZW50LiIiIgotCisg
ICIiIkdpdmVuIGEgZmlsZSBwYXRoIGFuZCBhIGNvbnRlbnQgc3RyaW5nCisgICAgIG92ZXJ3cml0
ZXMgaXQgd2l0aCB0aGUgZ2l2ZW4gY29udGVudC4KKyAgIiIiCiAgIHByaW50ICdVcGRhdGluZyBm
aWxlICVzIC4gLiAuJyAlIHBhdGgKLQogICBmID0gZmlsZShwYXRoLCAndysnKQogICBwcmludCA+
PmYsIGNvbnRlbnQsCiAgIGYuY2xvc2UoKQpAQCAtMzE2LDggKzMxNCw4IEBAIGRlZiBHZW5lcmF0
ZUZpbGUocGF0aCwgY29udGVudCk6CiAKIGRlZiBHZW5lcmF0ZUhlYWRlcihuKToKICAgIiIiR2l2
ZW4gdGhlIG1heGltdW0gYXJpdHkgbiwgdXBkYXRlcyB0aGUgaGVhZGVyIGZpbGUgdGhhdCBpbXBs
ZW1lbnRzCi0gIHRoZSBwcmVkaWNhdGUgYXNzZXJ0aW9ucy4iIiIKLQorICB0aGUgcHJlZGljYXRl
IGFzc2VydGlvbnMuCisgICIiIgogICBHZW5lcmF0ZUZpbGUoSEVBREVSLAogICAgICAgICAgICAg
ICAgSGVhZGVyUHJlYW1ibGUobikKICAgICAgICAgICAgICAgICsgJycuam9pbihbSW1wbGVtZW50
YXRpb25Gb3JBcml0eShpKSBmb3IgaSBpbiBPbmVUbyhuKV0pCkBAIC0zODYsOCArMzg0LDggQEAg
ZGVmIFVuaXRUZXN0UHJlYW1ibGUoKToKIAogI2luY2x1ZGUgPGlvc3RyZWFtPgogCi0jaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGkuaD4KKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgogCiAvLyBBIHVz
ZXItZGVmaW5lZCBkYXRhIHR5cGUuCiBzdHJ1Y3QgQm9vbCB7CkBAIC00NzgsMTUgKzQ3NiwxNCBA
QCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1bmN0aW9uJShuKXMoIiIiICUg
REVGUwogICBpZiAoUHJlZEZ1bmN0aW9uJShuKXMoJSh2cylzKSkKICAgICByZXR1cm4gdGVzdGlu
Zzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIHRlc3Rpbmc6Ok1lc3NhZ2UgbXNnOwotICBtc2cg
PDwgIiIiICUgREVGUworICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAg
ICA8PCAiIiIgJSBERUZTCiAKICAgdGVzdHMgKz0gSXRlcihuLCAnZSVzJywgc2VwPScgPDwgIiAr
ICIgPDwgJykKIAogICB0ZXN0cyArPSAiIiIKICAgICAgIDw8ICIgaXMgZXhwZWN0ZWQgdG8gYmUg
cG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgogICAgICAgPDwgJSh2X3N1bSlzIDw8ICIuIjsK
LSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNnKTsKIH0KICIiIiAlIERFRlMK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9ndGVzdC1jb25m
aWcuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2d0ZXN0LWNvbmZpZy5pbgpp
bmRleCA5YzcyNjM4NTRiOWY4NjNiNjE4YzcwOGRlMWVmZTBlOGIxZjcyODBhLi43ODBmODQzMmVm
Y2MxYWVlYWFhZDA3MDYwODZkM2ZmNjQxMjg1YjY4IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zY3JpcHRzL2d0ZXN0LWNvbmZpZy5pbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zY3JpcHRzL2d0ZXN0LWNvbmZpZy5pbgpAQCAtMjA5LDcgKzIwOSw3IEBAIGlmIHRl
c3QgIiR7dGhpc19iaW5kaXJ9IiA9ICIke3RoaXNfYmluZGlyJSR7YmluZGlyfX0iOyB0aGVuCiAg
ICMgVGhlIHBhdGggdG8gdGhlIHNjcmlwdCBkb2Vzbid0IGVuZCBpbiB0aGUgYmluZGlyIHNlcXVl
bmNlIGZyb20gQXV0b2NvbmYsCiAgICMgYXNzdW1lIHRoYXQgd2UgYXJlIGluIGEgYnVpbGQgdHJl
ZS4KICAgYnVpbGRfZGlyPWBkaXJuYW1lICR7dGhpc19iaW5kaXJ9YAotICBzcmNfZGlyPWBjZCAk
e3RoaXNfYmluZGlyfS9AdG9wX3NyY2RpckA7IHB3ZCAtUGAKKyAgc3JjX2Rpcj1gY2QgJHt0aGlz
X2JpbmRpcn07IGNkIEB0b3Bfc3JjZGlyQDsgcHdkIC1QYAogCiAgICMgVE9ETyhjaGFuZGxlcmNA
Z29vZ2xlLmNvbSk6IFRoaXMgaXMgYSBkYW5nZXJvdXMgZGVwZW5kZW5jeSBvbiBsaWJ0b29sLCB3
ZQogICAjIHNob3VsZCB3b3JrIHRvIHJlbW92ZSBpdCwgYW5kL29yIHJlbW92ZSBsaWJ0b29sIGFs
dG9nZXRoZXIsIHJlcGxhY2luZyBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2NyaXB0cy9wdW1wLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9wdW1w
LnB5CmluZGV4IGYxNWMxYjZjZWI0YjhiMWJiMGJmNGU4M2UzZWE5M2IzOGM3ODU4MDAuLjVlZmI2
NTNjMjA3ZDFmMWMyYWVjYzRkNjkwYmY3MzJlM2MxZDcxYWIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcHVtcC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zY3JpcHRzL3B1bXAucHkKQEAgLTI5LDcgKzI5LDcgQEAKICMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKLSIiInB1bXAgdjAuMSAtIFByZXR0eSBVc2VmdWwgZm9yIE1ldGEgUHJv
Z3JhbW1pbmcuCisiIiJwdW1wIHYwLjIuMCAtIFByZXR0eSBVc2VmdWwgZm9yIE1ldGEgUHJvZ3Jh
bW1pbmcuCiAKIEEgdG9vbCBmb3IgcHJlcHJvY2Vzc29yIG1ldGEgcHJvZ3JhbW1pbmcuICBVc2Vm
dWwgZm9yIGdlbmVyYXRpbmcKIHJlcGV0aXRpdmUgYm9pbGVycGxhdGUgY29kZS4gIEVzcGVjaWFs
bHkgdXNlZnVsIGZvciB3cml0aW5nIEMrKwpAQCAtNzgsNyArNzgsNiBAQCBUT0tFTl9UQUJMRSA9
IFsKICAgICAocmUuY29tcGlsZShyJ1wkcmFuZ2VccysnKSwgJyRyYW5nZScpLAogICAgIChyZS5j
b21waWxlKHInXCRbX0EtWmEtel1cdyonKSwgJyRpZCcpLAogICAgIChyZS5jb21waWxlKHInXCRc
KFwkXCknKSwgJyQoJCknKSwKLSAgICAocmUuY29tcGlsZShyJ1wkXCQuKicpLCAnJCQnKSwKICAg
ICAocmUuY29tcGlsZShyJ1wkJyksICckJyksCiAgICAgKHJlLmNvbXBpbGUocidcW1xbXG4/Jyks
ICdbWycpLAogICAgIChyZS5jb21waWxlKHInXF1cXVxuPycpLCAnXV0nKSwKQEAgLTIyNCw2ICsy
MjMsMTcgQEAgZGVmIFN1YlN0cmluZyhsaW5lcywgc3RhcnQsIGVuZCk6CiAgIHJldHVybiAnJy5q
b2luKHJlc3VsdF9saW5lcykKIAogCitkZWYgU3RyaXBNZXRhQ29tbWVudHMoc3RyKToKKyAgIiIi
U3RyaXAgbWV0YSBjb21tZW50cyBmcm9tIGVhY2ggbGluZSBpbiB0aGUgZ2l2ZW4gc3RyaW5nLiIi
IgorCisgICMgRmlyc3QsIGNvbXBsZXRlbHkgcmVtb3ZlIGxpbmVzIGNvbnRhaW5pbmcgbm90aGlu
ZyBidXQgYSBtZXRhCisgICMgY29tbWVudCwgaW5jbHVkaW5nIHRoZSB0cmFpbGluZyBcbi4KKyAg
c3RyID0gcmUuc3ViKHInXlxzKlwkXCQuKlxuJywgJycsIHN0cikKKworICAjIFRoZW4sIHJlbW92
ZSBtZXRhIGNvbW1lbnRzIGZyb20gY29udGVudGZ1bCBsaW5lcy4KKyAgcmV0dXJuIHJlLnN1Yihy
J1xzKlwkXCQuKicsICcnLCBzdHIpCisKKwogZGVmIE1ha2VUb2tlbihsaW5lcywgc3RhcnQsIGVu
ZCwgdG9rZW5fdHlwZSk6CiAgICIiIkNyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgVG9rZW4uIiIi
CiAKQEAgLTMxMSwxMSArMzIxLDcgQEAgZGVmIFRva2VuaXplTGluZXMobGluZXMsIHBvcyk6CiAg
ICAgICBwcmV2X3Rva2VuID0gTWFrZVRva2VuKGxpbmVzLCBwb3MsIGZvdW5kLnN0YXJ0LCAnY29k
ZScpCiAgICAgICBwcmV2X3Rva2VuX3JzdHJpcHBlZCA9IFJTdHJpcE5ld0xpbmVGcm9tVG9rZW4o
cHJldl90b2tlbikKIAotICAgIGlmIGZvdW5kLnRva2VuX3R5cGUgPT0gJyQkJzogICMgQSBtZXRh
IGNvbW1lbnQuCi0gICAgICBpZiBwcmV2X3Rva2VuX3JzdHJpcHBlZDoKLSAgICAgICAgeWllbGQg
cHJldl90b2tlbl9yc3RyaXBwZWQKLSAgICAgIHBvcyA9IEN1cnNvcihmb3VuZC5lbmQubGluZSAr
IDEsIDApCi0gICAgZWxpZiBmb3VuZC50b2tlbl90eXBlID09ICckdmFyJzoKKyAgICBpZiBmb3Vu
ZC50b2tlbl90eXBlID09ICckdmFyJzoKICAgICAgIGlmIHByZXZfdG9rZW5fcnN0cmlwcGVkOgog
ICAgICAgICB5aWVsZCBwcmV2X3Rva2VuX3JzdHJpcHBlZAogICAgICAgeWllbGQgZm91bmQKQEAg
LTM3NCw4ICszODAsMTEgQEAgZGVmIFRva2VuaXplTGluZXMobGluZXMsIHBvcyk6CiAKIAogZGVm
IFRva2VuaXplKHMpOgotICBsaW5lcyA9IHMuc3BsaXRsaW5lcyhUcnVlKQotICByZXR1cm4gVG9r
ZW5pemVMaW5lcyhsaW5lcywgQ3Vyc29yKDAsIDApKQorICAiIiJBIGdlbmVyYXRvciB0aGF0IHlp
ZWxkcyB0aGUgdG9rZW5zIGluIHRoZSBnaXZlbiBzdHJpbmcuIiIiCisgIGlmIHMgIT0gJyc6Cisg
ICAgbGluZXMgPSBzLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICBmb3IgdG9rZW4gaW4gVG9rZW5pemVM
aW5lcyhsaW5lcywgQ3Vyc29yKDAsIDApKToKKyAgICAgIHlpZWxkIHRva2VuCiAKIAogY2xhc3Mg
Q29kZU5vZGU6CkBAIC01NjUsMTEgKzU3NCw5IEBAIGRlZiBQYXJzZUNvZGVOb2RlKHRva2Vucyk6
CiAgIHJldHVybiBDb2RlTm9kZShhdG9taWNfY29kZV9saXN0KQogCiAKLWRlZiBDb252ZXJ0KGZp
bGVfcGF0aCk6Ci0gIHMgPSBmaWxlKGZpbGVfcGF0aCwgJ3InKS5yZWFkKCkKLSAgdG9rZW5zID0g
W10KLSAgZm9yIHRva2VuIGluIFRva2VuaXplKHMpOgotICAgIHRva2Vucy5hcHBlbmQodG9rZW4p
CitkZWYgUGFyc2VUb0FTVChwdW1wX3NyY190ZXh0KToKKyAgIiIiQ29udmVydCB0aGUgZ2l2ZW4g
UHVtcCBzb3VyY2UgdGV4dCBpbnRvIGFuIEFTVC4iIiIKKyAgdG9rZW5zID0gbGlzdChUb2tlbml6
ZShwdW1wX3NyY190ZXh0KSkKICAgY29kZV9ub2RlID0gUGFyc2VDb2RlTm9kZSh0b2tlbnMpCiAg
IHJldHVybiBjb2RlX25vZGUKIApAQCAtNjk3LDE0ICs3MDQsMTQgQEAgZGVmIFJ1bkNvZGUoZW52
LCBjb2RlX25vZGUsIG91dHB1dCk6CiAgICAgUnVuQXRvbWljQ29kZShlbnYsIGF0b21pY19jb2Rl
LCBvdXRwdXQpCiAKIAotZGVmIElzQ29tbWVudChjdXJfbGluZSk6CitkZWYgSXNTaW5nbGVMaW5l
Q29tbWVudChjdXJfbGluZSk6CiAgIHJldHVybiAnLy8nIGluIGN1cl9saW5lCiAKIAotZGVmIElz
SW5QcmVwcm9jZXNzb3JEaXJldmF0aXZlKHByZXZfbGluZXMsIGN1cl9saW5lKToKK2RlZiBJc0lu
UHJlcHJvY2Vzc29yRGlyZWN0aXZlKHByZXZfbGluZXMsIGN1cl9saW5lKToKICAgaWYgY3VyX2xp
bmUubHN0cmlwKCkuc3RhcnRzd2l0aCgnIycpOgogICAgIHJldHVybiBUcnVlCi0gIHJldHVybiBw
cmV2X2xpbmVzICE9IFtdIGFuZCBwcmV2X2xpbmVzWy0xXS5lbmRzd2l0aCgnXFwnKQorICByZXR1
cm4gcHJldl9saW5lcyBhbmQgcHJldl9saW5lc1stMV0uZW5kc3dpdGgoJ1xcJykKIAogCiBkZWYg
V3JhcENvbW1lbnQobGluZSwgb3V0cHV0KToKQEAgLTc2MSw3ICs3NjgsNyBAQCBkZWYgV3JhcENv
ZGUobGluZSwgbGluZV9jb25jYXQsIG91dHB1dCk6CiAgICAgb3V0cHV0LmFwcGVuZChwcmVmaXgg
KyBjdXJfbGluZS5zdHJpcCgpKQogCiAKLWRlZiBXcmFwUHJlcHJvY2Vzc29yRGlyZXZhdGl2ZShs
aW5lLCBvdXRwdXQpOgorZGVmIFdyYXBQcmVwcm9jZXNzb3JEaXJlY3RpdmUobGluZSwgb3V0cHV0
KToKICAgV3JhcENvZGUobGluZSwgJyBcXCcsIG91dHB1dCkKIAogCkBAIC03NjksMjkgKzc3Niwz
NyBAQCBkZWYgV3JhcFBsYWluQ29kZShsaW5lLCBvdXRwdXQpOgogICBXcmFwQ29kZShsaW5lLCAn
Jywgb3V0cHV0KQogCiAKLWRlZiBJc0hlYWRlckd1YXJkT3JJbmNsdWRlKGxpbmUpOgorZGVmIElz
TXVsdGlMaW5lSVdZVVByYWdtYShsaW5lKToKKyAgcmV0dXJuIHJlLnNlYXJjaChyJy9cKiBJV1lV
IHByYWdtYTogJywgbGluZSkKKworCitkZWYgSXNIZWFkZXJHdWFyZEluY2x1ZGVPck9uZUxpbmVJ
V1lVUHJhZ21hKGxpbmUpOgogICByZXR1cm4gKHJlLm1hdGNoKHInXiMoaWZuZGVmfGRlZmluZXxl
bmRpZlxzKi8vKVxzKltcd19dK1xzKiQnLCBsaW5lKSBvcgotICAgICAgICAgIHJlLm1hdGNoKHIn
XiNpbmNsdWRlXHMnLCBsaW5lKSkKKyAgICAgICAgICByZS5tYXRjaChyJ14jaW5jbHVkZVxzJywg
bGluZSkgb3IKKyAgICAgICAgICAjIERvbid0IGJyZWFrIElXWVUgcHJhZ21hcywgZWl0aGVyOyB0
aGF0IGNhdXNlcyBpd3l1LnB5IHByb2JsZW1zLgorICAgICAgICAgIHJlLnNlYXJjaChyJy8vIElX
WVUgcHJhZ21hOiAnLCBsaW5lKSkKIAogCiBkZWYgV3JhcExvbmdMaW5lKGxpbmUsIG91dHB1dCk6
CiAgIGxpbmUgPSBsaW5lLnJzdHJpcCgpCiAgIGlmIGxlbihsaW5lKSA8PSA4MDoKICAgICBvdXRw
dXQuYXBwZW5kKGxpbmUpCi0gIGVsaWYgSXNDb21tZW50KGxpbmUpOgotICAgIGlmIElzSGVhZGVy
R3VhcmRPckluY2x1ZGUobGluZSk6Ci0gICAgICAjIFRoZSBzdHlsZSBndWlkZSBtYWRlIGFuIGV4
Y2VwdGlvbiB0byBhbGxvdyBsb25nIGhlYWRlciBndWFyZCBsaW5lcwotICAgICAgIyBhbmQgaW5j
bHVkZXMuCisgIGVsaWYgSXNTaW5nbGVMaW5lQ29tbWVudChsaW5lKToKKyAgICBpZiBJc0hlYWRl
ckd1YXJkSW5jbHVkZU9yT25lTGluZUlXWVVQcmFnbWEobGluZSk6CisgICAgICAjIFRoZSBzdHls
ZSBndWlkZSBtYWRlIGFuIGV4Y2VwdGlvbiB0byBhbGxvdyBsb25nIGhlYWRlciBndWFyZCBsaW5l
cywKKyAgICAgICMgaW5jbHVkZXMgYW5kIElXWVUgcHJhZ21hcy4KICAgICAgIG91dHB1dC5hcHBl
bmQobGluZSkKICAgICBlbHNlOgogICAgICAgV3JhcENvbW1lbnQobGluZSwgb3V0cHV0KQotICBl
bGlmIElzSW5QcmVwcm9jZXNzb3JEaXJldmF0aXZlKG91dHB1dCwgbGluZSk6Ci0gICAgaWYgSXNI
ZWFkZXJHdWFyZE9ySW5jbHVkZShsaW5lKToKLSAgICAgICMgVGhlIHN0eWxlIGd1aWRlIG1hZGUg
YW4gZXhjZXB0aW9uIHRvIGFsbG93IGxvbmcgaGVhZGVyIGd1YXJkIGxpbmVzCi0gICAgICAjIGFu
ZCBpbmNsdWRlcy4KKyAgZWxpZiBJc0luUHJlcHJvY2Vzc29yRGlyZWN0aXZlKG91dHB1dCwgbGlu
ZSk6CisgICAgaWYgSXNIZWFkZXJHdWFyZEluY2x1ZGVPck9uZUxpbmVJV1lVUHJhZ21hKGxpbmUp
OgorICAgICAgIyBUaGUgc3R5bGUgZ3VpZGUgbWFkZSBhbiBleGNlcHRpb24gdG8gYWxsb3cgbG9u
ZyBoZWFkZXIgZ3VhcmQgbGluZXMsCisgICAgICAjIGluY2x1ZGVzIGFuZCBJV1lVIHByYWdtYXMu
CiAgICAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCiAgICAgZWxzZToKLSAgICAgIFdyYXBQcmVwcm9j
ZXNzb3JEaXJldmF0aXZlKGxpbmUsIG91dHB1dCkKKyAgICAgIFdyYXBQcmVwcm9jZXNzb3JEaXJl
Y3RpdmUobGluZSwgb3V0cHV0KQorICBlbGlmIElzTXVsdGlMaW5lSVdZVVByYWdtYShsaW5lKToK
KyAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCiAgIGVsc2U6CiAgICAgV3JhcFBsYWluQ29kZShsaW5l
LCBvdXRwdXQpCiAKQEAgLTgwNSwxNiArODIwLDIxIEBAIGRlZiBCZWF1dGlmeUNvZGUoc3RyaW5n
KToKICAgcmV0dXJuICdcbicuam9pbihvdXRwdXQyKSArICdcbicKIAogCitkZWYgQ29udmVydEZy
b21QdW1wU291cmNlKHNyY190ZXh0KToKKyAgIiIiUmV0dXJuIHRoZSB0ZXh0IGdlbmVyYXRlZCBm
cm9tIHRoZSBnaXZlbiBQdW1wIHNvdXJjZSB0ZXh0LiIiIgorICBhc3QgPSBQYXJzZVRvQVNUKFN0
cmlwTWV0YUNvbW1lbnRzKHNyY190ZXh0KSkKKyAgb3V0cHV0ID0gT3V0cHV0KCkKKyAgUnVuQ29k
ZShFbnYoKSwgYXN0LCBvdXRwdXQpCisgIHJldHVybiBCZWF1dGlmeUNvZGUob3V0cHV0LnN0cmlu
ZykKKworCiBkZWYgbWFpbihhcmd2KToKICAgaWYgbGVuKGFyZ3YpID09IDE6CiAgICAgcHJpbnQg
X19kb2NfXwogICAgIHN5cy5leGl0KDEpCiAKICAgZmlsZV9wYXRoID0gYXJndlstMV0KLSAgYXN0
ID0gQ29udmVydChmaWxlX3BhdGgpCi0gIG91dHB1dCA9IE91dHB1dCgpCi0gIFJ1bkNvZGUoRW52
KCksIGFzdCwgb3V0cHV0KQotICBvdXRwdXRfc3RyID0gQmVhdXRpZnlDb2RlKG91dHB1dC5zdHJp
bmcpCisgIG91dHB1dF9zdHIgPSBDb252ZXJ0RnJvbVB1bXBTb3VyY2UoZmlsZShmaWxlX3BhdGgs
ICdyJykucmVhZCgpKQogICBpZiBmaWxlX3BhdGguZW5kc3dpdGgoJy5wdW1wJyk6CiAgICAgb3V0
cHV0X2ZpbGVfcGF0aCA9IGZpbGVfcGF0aFs6LTVdCiAgIGVsc2U6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3JlbGVhc2VfZG9jcy5weSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcmVsZWFzZV9kb2NzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyOTEzNDdm
Njc0YWZkN2FmODQ5NjE1YTc1YjEzOGQ1MjkzZjljZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3JlbGVhc2VfZG9jcy5weQpAQCAtMCwwICsxLDE1
OCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJTY3JpcHQg
Zm9yIGJyYW5jaGluZyBHb29nbGUgVGVzdC9Nb2NrIHdpa2kgcGFnZXMgZm9yIGEgbmV3IHZlcnNp
b24uCisKK1NZTk9QU0lTCisgICAgICAgcmVsZWFzZV9kb2NzLnB5IE5FV19SRUxFQVNFX1ZFUlNJ
T04KKworICAgICAgIEdvb2dsZSBUZXN0IGFuZCBHb29nbGUgTW9jaydzIGV4dGVybmFsIHVzZXIg
ZG9jdW1lbnRhdGlvbiBpcyBpbgorICAgICAgIGludGVybGlua2VkIHdpa2kgZmlsZXMuICBXaGVu
IHdlIHJlbGVhc2UgYSBuZXcgdmVyc2lvbiBvZgorICAgICAgIEdvb2dsZSBUZXN0IG9yIEdvb2ds
ZSBNb2NrLCB3ZSBuZWVkIHRvIGJyYW5jaCB0aGUgd2lraSBmaWxlcworICAgICAgIHN1Y2ggdGhh
dCB1c2VycyBvZiBhIHNwZWNpZmljIHZlcnNpb24gb2YgR29vZ2xlIFRlc3QvTW9jayBjYW4KKyAg
ICAgICBsb29rIHVwIGRvY3VtZW5hdGlvbiByZWxldmFudCBmb3IgdGhhdCB2ZXJzaW9uLiAgVGhp
cyBzY3JpcHQKKyAgICAgICBhdXRvbWF0ZXMgdGhhdCBwcm9jZXNzIGJ5OgorCisgICAgICAgICAt
IGJyYW5jaGluZyB0aGUgY3VycmVudCB3aWtpIHBhZ2VzICh3aGljaCBkb2N1bWVudCB0aGUKKyAg
ICAgICAgICAgYmVoYXZpb3Igb2YgdGhlIFNWTiB0cnVuayBoZWFkKSB0byBwYWdlcyBmb3IgdGhl
IHNwZWNpZmllZAorICAgICAgICAgICB2ZXJzaW9uIChlLmcuIGJyYW5jaGluZyBGQVEud2lraSB0
byBWMl82X0ZBUS53aWtpIHdoZW4KKyAgICAgICAgICAgTkVXX1JFTEVBU0VfVkVSU0lPTiBpcyAy
LjYpOworICAgICAgICAgLSB1cGRhdGluZyB0aGUgbGlua3MgaW4gdGhlIGJyYW5jaGVkIGZpbGVz
IHRvIHBvaW50IHRvIHRoZSBicmFuY2hlZAorICAgICAgICAgICB2ZXJzaW9uIChlLmcuIGEgbGlu
ayBpbiBWMl82X0ZBUS53aWtpIHRoYXQgcG9pbnRlZCB0bworICAgICAgICAgICBQcmltZXIud2lr
aSNBbmNob3Igd2lsbCBub3cgcG9pbnQgdG8gVjJfNl9QcmltZXIud2lraSNBbmNob3IpLgorCisg
ICAgICAgTk9URTogTkVXX1JFTEVBU0VfVkVSU0lPTiBtdXN0IGJlIGEgTkVXIHZlcnNpb24gbnVt
YmVyIGZvcgorICAgICAgIHdoaWNoIHRoZSB3aWtpIHBhZ2VzIGRvbid0IHlldCBleGlzdDsgb3Ro
ZXJ3aXNlIHlvdSdsbCBnZXQgU1ZOCisgICAgICAgZXJyb3JzIGxpa2UgInN2bjogUGF0aCAnVjFf
N19QdW1wTWFudWFsLndpa2knIGlzIG5vdCBhCisgICAgICAgZGlyZWN0b3J5IiB3aGVuIHJ1bm5p
bmcgdGhlIHNjcmlwdC4KKworRVhBTVBMRQorICAgICAgICQgY2QgUEFUSC9UTy9HVEVTVF9TVk5f
V09SS1NQQUNFL3RydW5rCisgICAgICAgJCBzY3JpcHRzL3JlbGVhc2VfZG9jcy5weSAyLjYgICMg
Y3JlYXRlIHdpa2kgcGFnZXMgZm9yIHYyLjYKKyAgICAgICAkIHN2biBzdGF0dXMgICAgICAgICAg
ICAgICAgICAgIyB2ZXJpZnkgdGhlIGZpbGUgbGlzdAorICAgICAgICQgc3ZuIGRpZmYgICAgICAg
ICAgICAgICAgICAgICAjIHZlcmlmeSB0aGUgZmlsZSBjb250ZW50cworICAgICAgICQgc3ZuIGNv
bW1pdCAtbSAicmVsZWFzZSB3aWtpIHBhZ2VzIGZvciB2Mi42IgorIiIiCisKK19fYXV0aG9yX18g
PSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCisKK2ltcG9ydCBvcworaW1wb3J0IHJl
CitpbXBvcnQgc3lzCisKK2ltcG9ydCBjb21tb24KKworCisjIFdpa2kgcGFnZXMgdGhhdCBzaG91
bGRuJ3QgYmUgYnJhbmNoZWQgZm9yIGV2ZXJ5IGd0ZXN0L2dtb2NrIHJlbGVhc2UuCitHVEVTVF9V
TlZFUlNJT05FRF9XSUtJUyA9IFsnRGV2R3VpZGUud2lraSddCitHTU9DS19VTlZFUlNJT05FRF9X
SUtJUyA9IFsKKyAgICAnRGVzaWduRG9jLndpa2knLAorICAgICdEZXZHdWlkZS53aWtpJywKKyAg
ICAnS25vd25Jc3N1ZXMud2lraScKKyAgICBdCisKKworZGVmIERyb3BXaWtpU3VmZml4KHdpa2lf
ZmlsZW5hbWUpOgorICAiIiJSZW1vdmVzIHRoZSAud2lraSBzdWZmaXggKGlmIGFueSkgZnJvbSB0
aGUgZ2l2ZW4gZmlsZW5hbWUuIiIiCisKKyAgcmV0dXJuICh3aWtpX2ZpbGVuYW1lWzotbGVuKCcu
d2lraScpXSBpZiB3aWtpX2ZpbGVuYW1lLmVuZHN3aXRoKCcud2lraScpCisgICAgICAgICAgZWxz
ZSB3aWtpX2ZpbGVuYW1lKQorCisKK2NsYXNzIFdpa2lCcmFuY2hlcihvYmplY3QpOgorICAiIiJC
cmFuY2hlcyAuLi4iIiIKKworICBkZWYgX19pbml0X18oc2VsZiwgZG90X3ZlcnNpb24pOgorICAg
IHNlbGYucHJvamVjdCwgc3ZuX3Jvb3RfcGF0aCA9IGNvbW1vbi5HZXRTdm5JbmZvKCkKKyAgICBp
ZiBzZWxmLnByb2plY3Qgbm90IGluICgnZ29vZ2xldGVzdCcsICdnb29nbGVtb2NrJyk6CisgICAg
ICBzeXMuZXhpdCgnVGhpcyBzY3JpcHQgbXVzdCBiZSBydW4gaW4gYSBndGVzdCBvciBnbW9jayBT
Vk4gd29ya3NwYWNlLicpCisgICAgc2VsZi53aWtpX2RpciA9IHN2bl9yb290X3BhdGggKyAnL3dp
a2knCisgICAgIyBUdXJuICcyLjYnIHRvICdWMl82XycuCisgICAgc2VsZi52ZXJzaW9uX3ByZWZp
eCA9ICdWJyArIGRvdF92ZXJzaW9uLnJlcGxhY2UoJy4nLCAnXycpICsgJ18nCisgICAgc2VsZi5m
aWxlc190b19icmFuY2ggPSBzZWxmLkdldEZpbGVzVG9CcmFuY2goKQorICAgIHBhZ2VfbmFtZXMg
PSBbRHJvcFdpa2lTdWZmaXgoZikgZm9yIGYgaW4gc2VsZi5maWxlc190b19icmFuY2hdCisgICAg
IyBBIGxpbmsgdG8gRm9vLndpa2kgaXMgaW4gb25lIG9mIHRoZSBmb2xsb3dpbmcgZm9ybXM6Cisg
ICAgIyAgIFtGb28gd29yZHNdCisgICAgIyAgIFtGb28jQW5jaG9yIHdvcmRzXQorICAgICMgICBb
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS8uLi4vd2lraS9Gb28gd29yZHNdCisgICAgIyAgIFtodHRw
Oi8vY29kZS5nb29nbGUuY29tLy4uLi93aWtpL0ZvbyNBbmNob3Igd29yZHNdCisgICAgIyBXZSB3
YW50IHRvIHJlcGxhY2UgJ0Zvbycgd2l0aCAnVjJfNl9Gb28nIGluIHRoZSBhYm92ZSBjYXNlcy4K
KyAgICBzZWxmLnNlYXJjaF9mb3JfcmUgPSByZS5jb21waWxlKAorICAgICAgICAjIFRoaXMgcmVn
ZXggbWF0Y2hlcyBlaXRoZXIKKyAgICAgICAgIyAgIFtGb28KKyAgICAgICAgIyBvcgorICAgICAg
ICAjICAgL3dpa2kvRm9vCisgICAgICAgICMgZm9sbG93ZWQgYnkgYSBzcGFjZSBvciBhICMsIHdo
ZXJlIEZvbyBpcyB0aGUgbmFtZSBvZiBhbgorICAgICAgICAjIHVudmVyc2lvbmVkIHdpa2kgcGFn
ZS4KKyAgICAgICAgcicoXFt8L3dpa2kvKSglcykoWyAjXSknICUgJ3wnLmpvaW4ocGFnZV9uYW1l
cykpCisgICAgc2VsZi5yZXBsYWNlX3dpdGggPSByJ1wxJXNcMlwzJyAlIChzZWxmLnZlcnNpb25f
cHJlZml4LCkKKworICBkZWYgR2V0RmlsZXNUb0JyYW5jaChzZWxmKToKKyAgICAiIiJSZXR1cm5z
IGEgbGlzdCBvZiAud2lraSBmaWxlIG5hbWVzIHRoYXQgbmVlZCB0byBiZSBicmFuY2hlZC4iIiIK
KworICAgIHVudmVyc2lvbmVkX3dpa2lzID0gKEdURVNUX1VOVkVSU0lPTkVEX1dJS0lTIGlmIHNl
bGYucHJvamVjdCA9PSAnZ29vZ2xldGVzdCcKKyAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
IEdNT0NLX1VOVkVSU0lPTkVEX1dJS0lTKQorICAgIHJldHVybiBbZiBmb3IgZiBpbiBvcy5saXN0
ZGlyKHNlbGYud2lraV9kaXIpCisgICAgICAgICAgICBpZiAoZi5lbmRzd2l0aCgnLndpa2knKSBh
bmQKKyAgICAgICAgICAgICAgICBub3QgcmUubWF0Y2gocideVlxkJywgZikgYW5kICAjIEV4Y2x1
ZGVkIHZlcnNpb25lZCAud2lraSBmaWxlcy4KKyAgICAgICAgICAgICAgICBmIG5vdCBpbiB1bnZl
cnNpb25lZF93aWtpcyldCisKKyAgZGVmIEJyYW5jaEZpbGVzKHNlbGYpOgorICAgICIiIkJyYW5j
aGVzIHRoZSAud2lraSBmaWxlcyBuZWVkZWQgdG8gYmUgYnJhbmNoZWQuIiIiCisKKyAgICBwcmlu
dCAnQnJhbmNoaW5nICVkIC53aWtpIGZpbGVzOicgJSAobGVuKHNlbGYuZmlsZXNfdG9fYnJhbmNo
KSwpCisgICAgb3MuY2hkaXIoc2VsZi53aWtpX2RpcikKKyAgICBmb3IgZiBpbiBzZWxmLmZpbGVz
X3RvX2JyYW5jaDoKKyAgICAgIGNvbW1hbmQgPSAnc3ZuIGNwICVzICVzJXMnICUgKGYsIHNlbGYu
dmVyc2lvbl9wcmVmaXgsIGYpCisgICAgICBwcmludCBjb21tYW5kCisgICAgICBvcy5zeXN0ZW0o
Y29tbWFuZCkKKworICBkZWYgVXBkYXRlTGlua3NJbkJyYW5jaGVkRmlsZXMoc2VsZik6CisKKyAg
ICBmb3IgZiBpbiBzZWxmLmZpbGVzX3RvX2JyYW5jaDoKKyAgICAgIHNvdXJjZV9maWxlID0gb3Mu
cGF0aC5qb2luKHNlbGYud2lraV9kaXIsIGYpCisgICAgICB2ZXJzaW9uZWRfZmlsZSA9IG9zLnBh
dGguam9pbihzZWxmLndpa2lfZGlyLCBzZWxmLnZlcnNpb25fcHJlZml4ICsgZikKKyAgICAgIHBy
aW50ICdVcGRhdGluZyBsaW5rcyBpbiAlcy4nICUgKHZlcnNpb25lZF9maWxlLCkKKyAgICAgIHRl
eHQgPSBmaWxlKHNvdXJjZV9maWxlLCAncicpLnJlYWQoKQorICAgICAgbmV3X3RleHQgPSBzZWxm
LnNlYXJjaF9mb3JfcmUuc3ViKHNlbGYucmVwbGFjZV93aXRoLCB0ZXh0KQorICAgICAgZmlsZSh2
ZXJzaW9uZWRfZmlsZSwgJ3cnKS53cml0ZShuZXdfdGV4dCkKKworCitkZWYgbWFpbigpOgorICBp
ZiBsZW4oc3lzLmFyZ3YpICE9IDI6CisgICAgc3lzLmV4aXQoX19kb2NfXykKKworICBicmFuY2hl
ciA9IFdpa2lCcmFuY2hlcihzeXMuYXJndlsxXSkKKyAgYnJhbmNoZXIuQnJhbmNoRmlsZXMoKQor
ICBicmFuY2hlci5VcGRhdGVMaW5rc0luQnJhbmNoZWRGaWxlcygpCisKKworaWYgX19uYW1lX18g
PT0gJ19fbWFpbl9fJzoKKyAgbWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3Jp
cHRzL3Rlc3QvTWFrZWZpbGUKaW5kZXggZmZjMGM5MGFkOTk1NzJkZjk0YWZiNWI2NDEzNmE5YzI5
NDg4YWUwNi4uY2RmZjU4NDYzN2I3YTZlOWRmMWZhNDNjZThmNTg4YzQzODE1ZTU2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy90ZXN0L01ha2VmaWxlCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvdGVzdC9NYWtlZmlsZQpAQCAtMjEsNyAr
MjEsOSBAQCBTQU1QTEVfRElSID0gLi4vLi4vc2FtcGxlcwogR1RFU1RfTUFJTl9DQyA9IC4uLy4u
L3NyYy9ndGVzdF9tYWluLmNjCiAKICMgRmxhZ3MgcGFzc2VkIHRvIHRoZSBwcmVwcm9jZXNzb3Iu
Ci1DUFBGTEFHUyArPSAtSSQoRlVTRURfR1RFU1RfRElSKQorIyBXZSBoYXZlIG5vIGlkZWEgaGVy
ZSB3aGV0aGVyIHB0aHJlYWRzIGlzIGF2YWlsYWJsZSBpbiB0aGUgc3lzdGVtLCBzbworIyBkaXNh
YmxlIGl0cyB1c2UuCitDUFBGTEFHUyArPSAtSSQoRlVTRURfR1RFU1RfRElSKSAtREdURVNUX0hB
U19QVEhSRUFEPTAKIAogIyBGbGFncyBwYXNzZWQgdG8gdGhlIEMrKyBjb21waWxlci4KIENYWEZM
QUdTICs9IC1nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3Vw
bG9hZC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvdXBsb2FkLnB5CmluZGV4
IDZlNmY5YTE0NzE5ZWY4YzlmZGI2MDNhZDUwYmRkMzVkYzc5OTZlMmQuLmM4NTJlNGM5MWUwNmVm
N2M0OWUwMzg2ODM1MDlmZmQ5NDk1YzgyMGYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NjcmlwdHMvdXBsb2FkLnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nj
cmlwdHMvdXBsb2FkLnB5CkBAIC0yNDIsNyArMjQyLDcgQEAgY2xhc3MgQWJzdHJhY3RScGNTZXJ2
ZXIob2JqZWN0KToKICAgICBUaGUgYXV0aGVudGljYXRpb24gcHJvY2VzcyB3b3JrcyBhcyBmb2xs
b3dzOgogICAgICAxKSBXZSBnZXQgYSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgZnJvbSB0aGUgdXNl
cgogICAgICAyKSBXZSB1c2UgQ2xpZW50TG9naW4gdG8gb2J0YWluIGFuIEFVVEggdG9rZW4gZm9y
IHRoZSB1c2VyCi0gICAgICAgIChzZWUgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9hcGlzL2FjY291
bnRzL0F1dGhGb3JJbnN0YWxsZWRBcHBzLmh0bWwpLgorICAgICAgICAoc2VlIGh0dHBzOi8vZGV2
ZWxvcGVycy5nb29nbGUuY29tL2lkZW50aXR5L3Byb3RvY29scy9BdXRoRm9ySW5zdGFsbGVkQXBw
cykuCiAgICAgIDMpIFdlIHBhc3MgdGhlIGF1dGggdG9rZW4gdG8gL19haC9sb2dpbiBvbiB0aGUg
c2VydmVyIHRvIG9idGFpbiBhbgogICAgICAgICBhdXRoZW50aWNhdGlvbiBjb29raWUuIElmIGxv
Z2luIHdhcyBzdWNjZXNzZnVsLCBpdCB0cmllcyB0byByZWRpcmVjdAogICAgICAgICB1cyB0byB0
aGUgVVJMIHdlIHByb3ZpZGVkLgpAQCAtNTA2LDcgKzUwNiw3IEBAIGRlZiBFbmNvZGVNdWx0aXBh
cnRGb3JtRGF0YShmaWVsZHMsIGZpbGVzKToKICAgICAoY29udGVudF90eXBlLCBib2R5KSByZWFk
eSBmb3IgaHR0cGxpYi5IVFRQIGluc3RhbmNlLgogCiAgIFNvdXJjZToKLSAgICBodHRwOi8vYXNw
bi5hY3RpdmVzdGF0ZS5jb20vQVNQTi9Db29rYm9vay9QeXRob24vUmVjaXBlLzE0NjMwNgorICAg
IGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE2MDExNjA1MjAwMS9jb2RlLmFjdGl2ZXN0
YXRlLmNvbS9yZWNpcGVzLzE0NjMwNgogICAiIiIKICAgQk9VTkRBUlkgPSAnLU0tQS1HLUktQy0t
LUItTy1VLU4tRC1BLVItWS0nCiAgIENSTEYgPSAnXHJcbicKQEAgLTczMiw3ICs3MzIsNyBAQCBj
bGFzcyBTdWJ2ZXJzaW9uVkNTKFZlcnNpb25Db250cm9sU3lzdGVtKToKICAgICBlbHNlOgogICAg
ICAgc2VsZi5yZXZfc3RhcnQgPSBzZWxmLnJldl9lbmQgPSBOb25lCiAgICAgIyBDYWNoZSBvdXRw
dXQgZnJvbSAic3ZuIGxpc3QgLXIgUkVWTk8gZGlybmFtZSIuCi0gICAgIyBLZXlzOiBkaXJuYW1l
LCBWYWx1ZXM6IDItdHVwbGUgKG91cHV0IGZvciBzdGFydCByZXYgYW5kIGVuZCByZXYpLgorICAg
ICMgS2V5czogZGlybmFtZSwgVmFsdWVzOiAyLXR1cGxlIChvdXRwdXQgZm9yIHN0YXJ0IHJldiBh
bmQgZW5kIHJldikuCiAgICAgc2VsZi5zdm5sc19jYWNoZSA9IHt9CiAgICAgIyBTVk4gYmFzZSBV
UkwgaXMgcmVxdWlyZWQgdG8gZmV0Y2ggZmlsZXMgZGVsZXRlZCBpbiBhbiBvbGRlciByZXZpc2lv
bi4KICAgICAjIFJlc3VsdCBpcyBjYWNoZWQgdG8gbm90IGd1ZXNzIGl0IG92ZXIgYW5kIG92ZXIg
YWdhaW4gaW4gR2V0QmFzZUZpbGUoKS4KQEAgLTgwNyw3ICs4MDcsNyBAQCBjbGFzcyBTdWJ2ZXJz
aW9uVkNTKFZlcnNpb25Db250cm9sU3lzdGVtKToKICAgICAjIHN2biBjYXQgdHJhbnNsYXRlcyBr
ZXl3b3JkcyBidXQgc3ZuIGRpZmYgZG9lc24ndC4gQXMgYSByZXN1bHQgb2YgdGhpcwogICAgICMg
YmVoYXZpb3IgcGF0Y2hpbmcuUGF0Y2hDaHVua3MoKSBmYWlscyB3aXRoIGEgY2h1bmsgbWlzbWF0
Y2ggZXJyb3IuCiAgICAgIyBUaGlzIHBhcnQgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSB0aGUg
UmV2aWV3IEJvYXJkIGRldmVsb3BtZW50IHRlYW0KLSAgICAjIHdobyBoYWQgdGhlIHNhbWUgcHJv
YmxlbSAoaHR0cDovL3Jldmlld3MucmV2aWV3LWJvYXJkLm9yZy9yLzI3Ni8pLgorICAgICMgd2hv
IGhhZCB0aGUgc2FtZSBwcm9ibGVtIChodHRwczovL3Jldmlld3MucmV2aWV3Ym9hcmQub3JnL3Iv
Mjc2LykuCiAgICAgIyBNYXBwaW5nIG9mIGtleXdvcmRzIHRvIGtub3duIGFsaWFzZXMKICAgICBz
dm5fa2V5d29yZHMgPSB7CiAgICAgICAjIFN0YW5kYXJkIGtleXdvcmRzCkBAIC04NjAsNyArODYw
LDcgQEAgY2xhc3MgU3VidmVyc2lvblZDUyhWZXJzaW9uQ29udHJvbFN5c3RlbSk6CiAgICAgICBz
dGF0dXNfbGluZXMgPSBzdGF0dXMuc3BsaXRsaW5lcygpCiAgICAgICAjIElmIGZpbGUgaXMgaW4g
YSBjbCwgdGhlIG91dHB1dCB3aWxsIGJlZ2luIHdpdGgKICAgICAgICMgIlxuLS0tIENoYW5nZWxp
c3QgJ2NsX25hbWUnOlxuIi4gIFNlZQotICAgICAgIyBodHRwOi8vc3ZuLmNvbGxhYi5uZXQvcmVw
b3Mvc3ZuL3RydW5rL25vdGVzL2NoYW5nZWxpc3QtZGVzaWduLnR4dAorICAgICAgIyBodHRwczov
L3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAwOTA5MTgyMzQ4MTUvc3ZuLmNvbGxhYi5uZXQvcmVwb3Mv
c3ZuL3RydW5rL25vdGVzL2NoYW5nZWxpc3QtZGVzaWduLnR4dAogICAgICAgaWYgKGxlbihzdGF0
dXNfbGluZXMpID09IDMgYW5kCiAgICAgICAgICAgbm90IHN0YXR1c19saW5lc1swXSBhbmQKICAg
ICAgICAgICBzdGF0dXNfbGluZXNbMV0uc3RhcnRzd2l0aCgiLS0tIENoYW5nZWxpc3QiKSk6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtYWxsLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWFsbC5jYwppbmRleCBmZTM0NzY1ZmI2NzIx
OGE1NmNiNWUyNTJhNzBlNjhhMzZiYzg4ZDA3Li5iMjE3YTE4MDA2YjBjOGJkYWY0YTlmOWI2ZDA2
ZGU0ZmQ4YWQ5ZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rl
c3QtYWxsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1hbGwuY2MK
QEAgLTI2LDIyICsyNiwyMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiBtaGV1bGVAZ29vZ2xlLmNvbSAoTWFya3VzIEhl
dWxlKQotLy8KLS8vIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQor
Ly8gR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3Qp
CiAvLwogLy8gU29tZXRpbWVzIGl0J3MgZGVzaXJhYmxlIHRvIGJ1aWxkIEdvb2dsZSBUZXN0IGJ5
IGNvbXBpbGluZyBhIHNpbmdsZSBmaWxlLgogLy8gVGhpcyBmaWxlIHNlcnZlcyB0aGlzIHB1cnBv
c2UuCiAKIC8vIFRoaXMgbGluZSBlbnN1cmVzIHRoYXQgZ3Rlc3QuaCBjYW4gYmUgY29tcGlsZWQg
b24gaXRzIG93biwgZXZlbgogLy8gd2hlbiBpdCdzIGZ1c2VkLgotI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogLy8gVGhlIGZvbGxvd2luZyBsaW5l
cyBwdWxsIGluIHRoZSByZWFsIGd0ZXN0ICouY2MgZmlsZXMuCiAjaW5jbHVkZSAic3JjL2d0ZXN0
LmNjIgogI2luY2x1ZGUgInNyYy9ndGVzdC1kZWF0aC10ZXN0LmNjIgogI2luY2x1ZGUgInNyYy9n
dGVzdC1maWxlcGF0aC5jYyIKICNpbmNsdWRlICJzcmMvZ3Rlc3QtcG9ydC5jYyIKKyNpbmNsdWRl
ICJzcmMvZ3Rlc3QtcHJpbnRlcnMuY2MiCiAjaW5jbHVkZSAic3JjL2d0ZXN0LXRlc3QtcGFydC5j
YyIKICNpbmNsdWRlICJzcmMvZ3Rlc3QtdHlwZWQtdGVzdC5jYyIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1kZWF0aC10ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MKaW5kZXggMGNmNzgyNWJjYWM3OWZh
MzVkMGExMjQ4ZTIzMDhhMjRhYTYyN2I4YS4uMDkwODM1NTE2MTJlM2MzYjliM2JkN2QxZWU2MDZj
MThmZmI1ZjczYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0
LWRlYXRoLXRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWRl
YXRoLXRlc3QuY2MKQEAgLTI2LDUyICsyNiw2NSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbiksIHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCisKIC8vCiAvLyBUaGlz
IGZpbGUgaW1wbGVtZW50cyBkZWF0aCB0ZXN0cy4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LWRl
YXRoLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFs
L2d0ZXN0LXBvcnQuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QuaCIK
IAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCiAKLSNpZiBHVEVTVF9PU19NQUMKLSNpbmNsdWRl
IDxjcnRfZXh0ZXJucy5oPgotI2VuZGlmICAvLyBHVEVTVF9PU19NQUMKKyMgaWYgR1RFU1RfT1Nf
TUFDCisjICBpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgorIyBlbmRpZiAgLy8gR1RFU1RfT1NfTUFD
CiAKLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8bGlt
aXRzLmg+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+CisjIGluY2x1ZGUgPGVycm5vLmg+CisjIGluY2x1
ZGUgPGZjbnRsLmg+CisjIGluY2x1ZGUgPGxpbWl0cy5oPgogCi0jaWYgR1RFU1RfT1NfV0lORE9X
UwotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbHNlCi0jaW5jbHVkZSA8c3lzL21tYW4uaD4KLSNp
bmNsdWRlIDxzeXMvd2FpdC5oPgotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdU
RVNUX09TX0xJTlVYCisjICBpbmNsdWRlIDxzaWduYWwuaD4KKyMgZW5kaWYgIC8vIEdURVNUX09T
X0xJTlVYCiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKKyMgaW5jbHVkZSA8c3Rk
YXJnLmg+CisKKyMgaWYgR1RFU1RfT1NfV0lORE9XUworIyAgaW5jbHVkZSA8d2luZG93cy5oPgor
IyBlbHNlCisjICBpbmNsdWRlIDxzeXMvbW1hbi5oPgorIyAgaW5jbHVkZSA8c3lzL3dhaXQuaD4K
KyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworIyBpZiBHVEVTVF9PU19RTlgKKyMgIGlu
Y2x1ZGUgPHNwYXduLmg+CisjIGVuZGlmICAvLyBHVEVTVF9PU19RTlgKKworIyBpZiBHVEVTVF9P
U19GVUNIU0lBCisjICBpbmNsdWRlIDxsaWIvZmRpby9pby5oPgorIyAgaW5jbHVkZSA8bGliL2Zk
aW8vc3Bhd24uaD4KKyMgIGluY2x1ZGUgPHppcmNvbi9wcm9jZXNzYXJncy5oPgorIyAgaW5jbHVk
ZSA8emlyY29uL3N5c2NhbGxzLmg+CisjICBpbmNsdWRlIDx6aXJjb24vc3lzY2FsbHMvcG9ydC5o
PgorIyBlbmRpZiAgLy8gR1RFU1RfT1NfRlVDSFNJQQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qt
bWVzc2FnZS5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oPgorI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRy
YW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlv
bi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1
ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRv
Ci0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50
ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElP
Tl8gMQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCIKKyNpbmNsdWRlICJndGVzdC9p
bnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKICNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5s
LmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsK
IAogLy8gQ29uc3RhbnRzLgogCiAvLyBUaGUgZGVmYXVsdCBkZWF0aCB0ZXN0IHN0eWxlLgotc3Rh
dGljIGNvbnN0IGNoYXIga0RlZmF1bHREZWF0aFRlc3RTdHlsZVtdID0gImZhc3QiOworLy8KKy8v
IFRoaXMgaXMgZGVmaW5lZCBpbiBpbnRlcm5hbC9ndGVzdC1wb3J0LmggYXMgImZhc3QiLCBidXQg
Y2FuIGJlIG92ZXJyaWRkZW4gYnkKKy8vIGEgZGVmaW5pdGlvbiBpbiBpbnRlcm5hbC9jdXN0b20v
Z3Rlc3QtcG9ydC5oLiBUaGUgcmVjb21tZW5kZWQgdmFsdWUsIHdoaWNoIGlzCisvLyB1c2VkIGlu
dGVybmFsbHkgYXQgR29vZ2xlLCBpcyAidGhyZWFkc2FmZSIuCitzdGF0aWMgY29uc3QgY2hhciBr
RGVmYXVsdERlYXRoVGVzdFN0eWxlW10gPSBHVEVTVF9ERUZBVUxUX0RFQVRIX1RFU1RfU1RZTEU7
CiAKIEdURVNUX0RFRklORV9zdHJpbmdfKAogICAgIGRlYXRoX3Rlc3Rfc3R5bGUsCkBAIC0xMDAs
MzYgKzExMyw3OSBAQCBHVEVTVF9ERUZJTkVfc3RyaW5nXygKICAgICAiSW5kaWNhdGVzIHRoZSBm
aWxlLCBsaW5lIG51bWJlciwgdGVtcG9yYWwgaW5kZXggb2YgIgogICAgICJ0aGUgc2luZ2xlIGRl
YXRoIHRlc3QgdG8gcnVuLCBhbmQgYSBmaWxlIGRlc2NyaXB0b3IgdG8gIgogICAgICJ3aGljaCBh
IHN1Y2Nlc3MgY29kZSBtYXkgYmUgc2VudCwgYWxsIHNlcGFyYXRlZCBieSAiCi0gICAgImNvbG9u
cy4gIFRoaXMgZmxhZyBpcyBzcGVjaWZpZWQgaWYgYW5kIG9ubHkgaWYgdGhlIGN1cnJlbnQgIgor
ICAgICJ0aGUgJ3wnIGNoYXJhY3RlcnMuICBUaGlzIGZsYWcgaXMgc3BlY2lmaWVkIGlmIGFuZCBv
bmx5IGlmIHRoZSBjdXJyZW50ICIKICAgICAicHJvY2VzcyBpcyBhIHN1Yi1wcm9jZXNzIGxhdW5j
aGVkIGZvciBydW5uaW5nIGEgdGhyZWFkLXNhZmUgIgogICAgICJkZWF0aCB0ZXN0LiAgRk9SIElO
VEVSTkFMIFVTRSBPTkxZLiIpOwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiAKICNpZiBHVEVT
VF9IQVNfREVBVEhfVEVTVAogCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBWYWxpZCBvbmx5
IGZvciBmYXN0IGRlYXRoIHRlc3RzLiBJbmRpY2F0ZXMgdGhlIGNvZGUgaXMgcnVubmluZyBpbiB0
aGUKKy8vIGNoaWxkIHByb2Nlc3Mgb2YgYSBmYXN0IHN0eWxlIGRlYXRoIHRlc3QuCisjIGlmICFH
VEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19GVUNIU0lBCitzdGF0aWMgYm9vbCBnX2luX2Zh
c3RfZGVhdGhfdGVzdF9jaGlsZCA9IGZhbHNlOworIyBlbmRpZgorCisvLyBSZXR1cm5zIGEgQm9v
bGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNhbGxlciBpcyBjdXJyZW50bHkKKy8v
IGV4ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiB0aGUgZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNz
LiAgVG9vbHMgc3VjaCBhcworLy8gVmFsZ3JpbmQgaGVhcCBjaGVja2VycyBtYXkgbmVlZCB0aGlz
IHRvIG1vZGlmeSB0aGVpciBiZWhhdmlvciBpbiBkZWF0aAorLy8gdGVzdHMuICBJTVBPUlRBTlQ6
IFRoaXMgaXMgYW4gaW50ZXJuYWwgdXRpbGl0eS4gIFVzaW5nIGl0IG1heSBicmVhayB0aGUKKy8v
IGltcGxlbWVudGF0aW9uIG9mIGRlYXRoIHRlc3RzLiAgVXNlciBjb2RlIE1VU1QgTk9UIHVzZSBp
dC4KK2Jvb2wgSW5EZWF0aFRlc3RDaGlsZCgpIHsKKyMgaWYgR1RFU1RfT1NfV0lORE9XUyB8fCBH
VEVTVF9PU19GVUNIU0lBCisKKyAgLy8gT24gV2luZG93cyBhbmQgRnVjaHNpYSwgZGVhdGggdGVz
dHMgYXJlIHRocmVhZC1zYWZlIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlCisgIC8vIG9mIHRoZSBk
ZWF0aF90ZXN0X3N0eWxlIGZsYWcuCisgIHJldHVybiAhR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5f
ZGVhdGhfdGVzdCkuZW1wdHkoKTsKKworIyBlbHNlCisKKyAgaWYgKEdURVNUX0ZMQUcoZGVhdGhf
dGVzdF9zdHlsZSkgPT0gInRocmVhZHNhZmUiKQorICAgIHJldHVybiAhR1RFU1RfRkxBRyhpbnRl
cm5hbF9ydW5fZGVhdGhfdGVzdCkuZW1wdHkoKTsKKyAgZWxzZQorICAgIHJldHVybiBnX2luX2Zh
c3RfZGVhdGhfdGVzdF9jaGlsZDsKKyNlbmRpZgorfQorCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJu
YWwKKwogLy8gRXhpdGVkV2l0aENvZGUgY29uc3RydWN0b3IuCiBFeGl0ZWRXaXRoQ29kZTo6RXhp
dGVkV2l0aENvZGUoaW50IGV4aXRfY29kZSkgOiBleGl0X2NvZGVfKGV4aXRfY29kZSkgewogfQog
CiAvLyBFeGl0ZWRXaXRoQ29kZSBmdW5jdGlvbi1jYWxsIG9wZXJhdG9yLgogYm9vbCBFeGl0ZWRX
aXRoQ29kZTo6b3BlcmF0b3IoKShpbnQgZXhpdF9zdGF0dXMpIGNvbnN0IHsKLSNpZiBHVEVTVF9P
U19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfRlVDSFNJQQorCiAg
IHJldHVybiBleGl0X3N0YXR1cyA9PSBleGl0X2NvZGVfOwotI2Vsc2UKKworIyBlbHNlCisKICAg
cmV0dXJuIFdJRkVYSVRFRChleGl0X3N0YXR1cykgJiYgV0VYSVRTVEFUVVMoZXhpdF9zdGF0dXMp
ID09IGV4aXRfY29kZV87Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworIyBlbmRpZiAg
Ly8gR1RFU1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19GVUNIU0lBCiB9CiAKLSNpZiAhR1RFU1Rf
T1NfV0lORE9XUworIyBpZiAhR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfRlVDSFNJQQog
Ly8gS2lsbGVkQnlTaWduYWwgY29uc3RydWN0b3IuCiBLaWxsZWRCeVNpZ25hbDo6S2lsbGVkQnlT
aWduYWwoaW50IHNpZ251bSkgOiBzaWdudW1fKHNpZ251bSkgewogfQogCiAvLyBLaWxsZWRCeVNp
Z25hbCBmdW5jdGlvbi1jYWxsIG9wZXJhdG9yLgogYm9vbCBLaWxsZWRCeVNpZ25hbDo6b3BlcmF0
b3IoKShpbnQgZXhpdF9zdGF0dXMpIGNvbnN0IHsKKyMgIGlmIGRlZmluZWQoR1RFU1RfS0lMTEVE
X0JZX1NJR05BTF9PVkVSUklERV8pCisgIHsKKyAgICBib29sIHJlc3VsdDsKKyAgICBpZiAoR1RF
U1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8oc2lnbnVtXywgZXhpdF9zdGF0dXMsICZyZXN1
bHQpKSB7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgfQorIyAgZW5kaWYgIC8vIGRl
ZmluZWQoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8pCiAgIHJldHVybiBXSUZTSUdO
QUxFRChleGl0X3N0YXR1cykgJiYgV1RFUk1TSUcoZXhpdF9zdGF0dXMpID09IHNpZ251bV87CiB9
Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyAhR1RFU1RfT1NfV0lO
RE9XUyAmJiAhR1RFU1RfT1NfRlVDSFNJQQogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCkBAIC0x
MzcsMjIgKzE5MywyNyBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogCiAvLyBHZW5lcmF0ZXMgYSB0
ZXh0dWFsIGRlc2NyaXB0aW9uIG9mIGEgZ2l2ZW4gZXhpdCBjb2RlLCBpbiB0aGUgZm9ybWF0CiAv
LyBzcGVjaWZpZWQgYnkgd2FpdCgyKS4KLXN0YXRpYyBTdHJpbmcgRXhpdFN1bW1hcnkoaW50IGV4
aXRfY29kZSkgeworc3RhdGljIHN0ZDo6c3RyaW5nIEV4aXRTdW1tYXJ5KGludCBleGl0X2NvZGUp
IHsKICAgTWVzc2FnZSBtOwotI2lmIEdURVNUX09TX1dJTkRPV1MKKworIyBpZiBHVEVTVF9PU19X
SU5ET1dTIHx8IEdURVNUX09TX0ZVQ0hTSUEKKwogICBtIDw8ICJFeGl0ZWQgd2l0aCBleGl0IHN0
YXR1cyAiIDw8IGV4aXRfY29kZTsKLSNlbHNlCisKKyMgZWxzZQorCiAgIGlmIChXSUZFWElURUQo
ZXhpdF9jb2RlKSkgewogICAgIG0gPDwgIkV4aXRlZCB3aXRoIGV4aXQgc3RhdHVzICIgPDwgV0VY
SVRTVEFUVVMoZXhpdF9jb2RlKTsKICAgfSBlbHNlIGlmIChXSUZTSUdOQUxFRChleGl0X2NvZGUp
KSB7CiAgICAgbSA8PCAiVGVybWluYXRlZCBieSBzaWduYWwgIiA8PCBXVEVSTVNJRyhleGl0X2Nv
ZGUpOwogICB9Ci0jaWZkZWYgV0NPUkVEVU1QCisjICBpZmRlZiBXQ09SRURVTVAKICAgaWYgKFdD
T1JFRFVNUChleGl0X2NvZGUpKSB7CiAgICAgbSA8PCAiIChjb3JlIGR1bXBlZCkiOwogICB9Ci0j
ZW5kaWYKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIyAgZW5kaWYKKyMgZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfRlVDSFNJQQorCiAgIHJldHVybiBtLkdldFN0
cmluZygpOwogfQogCkBAIC0xNjIsNDIgKzIyMyw1OSBAQCBib29sIEV4aXRlZFVuc3VjY2Vzc2Z1
bGx5KGludCBleGl0X3N0YXR1cykgewogICByZXR1cm4gIUV4aXRlZFdpdGhDb2RlKDApKGV4aXRf
c3RhdHVzKTsKIH0KIAotI2lmICFHVEVTVF9PU19XSU5ET1dTCisjIGlmICFHVEVTVF9PU19XSU5E
T1dTICYmICFHVEVTVF9PU19GVUNIU0lBCiAvLyBHZW5lcmF0ZXMgYSB0ZXh0dWFsIGZhaWx1cmUg
bWVzc2FnZSB3aGVuIGEgZGVhdGggdGVzdCBmaW5kcyBtb3JlIHRoYW4KIC8vIG9uZSB0aHJlYWQg
cnVubmluZywgb3IgY2Fubm90IGRldGVybWluZSB0aGUgbnVtYmVyIG9mIHRocmVhZHMsIHByaW9y
CiAvLyB0byBleGVjdXRpbmcgdGhlIGdpdmVuIHN0YXRlbWVudC4gIEl0IGlzIHRoZSByZXNwb25z
aWJpbGl0eSBvZiB0aGUKIC8vIGNhbGxlciBub3QgdG8gcGFzcyBhIHRocmVhZF9jb3VudCBvZiAx
Lgotc3RhdGljIFN0cmluZyBEZWF0aFRlc3RUaHJlYWRXYXJuaW5nKHNpemVfdCB0aHJlYWRfY291
bnQpIHsKK3N0YXRpYyBzdGQ6OnN0cmluZyBEZWF0aFRlc3RUaHJlYWRXYXJuaW5nKHNpemVfdCB0
aHJlYWRfY291bnQpIHsKICAgTWVzc2FnZSBtc2c7CiAgIG1zZyA8PCAiRGVhdGggdGVzdHMgdXNl
IGZvcmsoKSwgd2hpY2ggaXMgdW5zYWZlIHBhcnRpY3VsYXJseSIKICAgICAgIDw8ICIgaW4gYSB0
aHJlYWRlZCBjb250ZXh0LiBGb3IgdGhpcyB0ZXN0LCAiIDw8IEdURVNUX05BTUVfIDw8ICIgIjsK
LSAgaWYgKHRocmVhZF9jb3VudCA9PSAwKQorICBpZiAodGhyZWFkX2NvdW50ID09IDApIHsKICAg
ICBtc2cgPDwgImNvdWxkbid0IGRldGVjdCB0aGUgbnVtYmVyIG9mIHRocmVhZHMuIjsKLSAgZWxz
ZQorICB9IGVsc2UgewogICAgIG1zZyA8PCAiZGV0ZWN0ZWQgIiA8PCB0aHJlYWRfY291bnQgPDwg
IiB0aHJlYWRzLiI7CisgIH0KKyAgbXNnIDw8ICIgU2VlICIKKyAgICAgICAgICJodHRwczovL2dp
dGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvYmxvYi9tYXN0ZXIvZ29vZ2xldGVzdC9kb2NzLyIK
KyAgICAgICAgICJhZHZhbmNlZC5tZCNkZWF0aC10ZXN0cy1hbmQtdGhyZWFkcyIKKyAgICAgIDw8
ICIgZm9yIG1vcmUgZXhwbGFuYXRpb24gYW5kIHN1Z2dlc3RlZCBzb2x1dGlvbnMsIGVzcGVjaWFs
bHkgaWYiCisgICAgICA8PCAiIHRoaXMgaXMgdGhlIGxhc3QgbWVzc2FnZSB5b3Ugc2VlIGJlZm9y
ZSB5b3VyIHRlc3QgdGltZXMgb3V0LiI7CiAgIHJldHVybiBtc2cuR2V0U3RyaW5nKCk7CiB9Ci0j
ZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9X
UyAmJiAhR1RFU1RfT1NfRlVDSFNJQQogCiAvLyBGbGFnIGNoYXJhY3RlcnMgZm9yIHJlcG9ydGlu
ZyBhIGRlYXRoIHRlc3QgdGhhdCBkaWQgbm90IGRpZS4KIHN0YXRpYyBjb25zdCBjaGFyIGtEZWF0
aFRlc3RMaXZlZCA9ICdMJzsKIHN0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RSZXR1cm5lZCA9
ICdSJzsKK3N0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RUaHJldyA9ICdUJzsKIHN0YXRpYyBj
b25zdCBjaGFyIGtEZWF0aFRlc3RJbnRlcm5hbEVycm9yID0gJ0knOwogCi0vLyBBbiBlbnVtZXJh
dGlvbiBkZXNjcmliaW5nIGFsbCBvZiB0aGUgcG9zc2libGUgd2F5cyB0aGF0IGEgZGVhdGggdGVz
dAotLy8gY2FuIGNvbmNsdWRlLiAgRElFRCBtZWFucyB0aGF0IHRoZSBwcm9jZXNzIGRpZWQgd2hp
bGUgZXhlY3V0aW5nIHRoZQotLy8gdGVzdCBjb2RlOyBMSVZFRCBtZWFucyB0aGF0IHByb2Nlc3Mg
bGl2ZWQgYmV5b25kIHRoZSBlbmQgb2YgdGhlIHRlc3QKLS8vIGNvZGU7IGFuZCBSRVRVUk5FRCBt
ZWFucyB0aGF0IHRoZSB0ZXN0IHN0YXRlbWVudCBhdHRlbXB0ZWQgYSAicmV0dXJuLCIKLS8vIHdo
aWNoIGlzIG5vdCBhbGxvd2VkLiAgSU5fUFJPR1JFU1MgbWVhbnMgdGhlIHRlc3QgaGFzIG5vdCB5
ZXQKLS8vIGNvbmNsdWRlZC4KLWVudW0gRGVhdGhUZXN0T3V0Y29tZSB7IElOX1BST0dSRVNTLCBE
SUVELCBMSVZFRCwgUkVUVVJORUQgfTsKKyNpZiBHVEVTVF9PU19GVUNIU0lBCisKKy8vIEZpbGUg
ZGVzY3JpcHRvciB1c2VkIGZvciB0aGUgcGlwZSBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4KK3N0YXRp
YyBjb25zdCBpbnQga0Z1Y2hzaWFSZWFkUGlwZUZkID0gMzsKKworI2VuZGlmCisKKy8vIEFuIGVu
dW1lcmF0aW9uIGRlc2NyaWJpbmcgYWxsIG9mIHRoZSBwb3NzaWJsZSB3YXlzIHRoYXQgYSBkZWF0
aCB0ZXN0IGNhbgorLy8gY29uY2x1ZGUuICBESUVEIG1lYW5zIHRoYXQgdGhlIHByb2Nlc3MgZGll
ZCB3aGlsZSBleGVjdXRpbmcgdGhlIHRlc3QKKy8vIGNvZGU7IExJVkVEIG1lYW5zIHRoYXQgcHJv
Y2VzcyBsaXZlZCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgdGVzdCBjb2RlOworLy8gUkVUVVJORUQg
bWVhbnMgdGhhdCB0aGUgdGVzdCBzdGF0ZW1lbnQgYXR0ZW1wdGVkIHRvIGV4ZWN1dGUgYSByZXR1
cm4KKy8vIHN0YXRlbWVudCwgd2hpY2ggaXMgbm90IGFsbG93ZWQ7IFRIUkVXIG1lYW5zIHRoYXQg
dGhlIHRlc3Qgc3RhdGVtZW50CisvLyByZXR1cm5lZCBjb250cm9sIGJ5IHRocm93aW5nIGFuIGV4
Y2VwdGlvbi4gIElOX1BST0dSRVNTIG1lYW5zIHRoZSB0ZXN0CisvLyBoYXMgbm90IHlldCBjb25j
bHVkZWQuCisvLyBGSVhNRTogVW5pZnkgbmFtZXMgYW5kIHBvc3NpYmx5IHZhbHVlcyBmb3IKKy8v
IEFib3J0UmVhc29uLCBEZWF0aFRlc3RPdXRjb21lLCBhbmQgZmxhZyBjaGFyYWN0ZXJzIGFib3Zl
LgorZW51bSBEZWF0aFRlc3RPdXRjb21lIHsgSU5fUFJPR1JFU1MsIERJRUQsIExJVkVELCBSRVRV
Uk5FRCwgVEhSRVcgfTsKIAogLy8gUm91dGluZSBmb3IgYWJvcnRpbmcgdGhlIHByb2dyYW0gd2hp
Y2ggaXMgc2FmZSB0byBjYWxsIGZyb20gYW4KIC8vIGV4ZWMtc3R5bGUgZGVhdGggdGVzdCBjaGls
ZCBwcm9jZXNzLCBpbiB3aGljaCBjYXNlIHRoZSBlcnJvcgogLy8gbWVzc2FnZSBpcyBwcm9wYWdh
dGVkIGJhY2sgdG8gdGhlIHBhcmVudCBwcm9jZXNzLiAgT3RoZXJ3aXNlLCB0aGUKIC8vIG1lc3Nh
Z2UgaXMgc2ltcGx5IHByaW50ZWQgdG8gc3RkZXJyLiAgSW4gZWl0aGVyIGNhc2UsIHRoZSBwcm9n
cmFtCiAvLyB0aGVuIGV4aXRzIHdpdGggc3RhdHVzIDEuCi12b2lkIERlYXRoVGVzdEFib3J0KGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkgeworc3RhdGljIHZvaWQgRGVhdGhUZXN0QWJvcnQoY29uc3Qg
c3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsKICAgLy8gT24gYSBQT1NJWCBzeXN0ZW0sIHRoaXMgZnVu
Y3Rpb24gbWF5IGJlIGNhbGxlZCBmcm9tIGEgdGhyZWFkc2FmZS1zdHlsZQogICAvLyBkZWF0aCB0
ZXN0IGNoaWxkIHByb2Nlc3MsIHdoaWNoIG9wZXJhdGVzIG9uIGEgdmVyeSBzbWFsbCBzdGFjay4g
IFVzZQogICAvLyB0aGUgaGVhcCBmb3IgYW55IGFkZGl0aW9uYWwgbm9uLW1pbnVzY3VsZSBtZW1v
cnkgcmVxdWlyZW1lbnRzLgpAQCAtMjEyLDE4ICsyOTAsMTkgQEAgdm9pZCBEZWF0aFRlc3RBYm9y
dChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsKICAgfSBlbHNlIHsKICAgICBmcHJpbnRmKHN0ZGVy
ciwgIiVzIiwgbWVzc2FnZS5jX3N0cigpKTsKICAgICBmZmx1c2goc3RkZXJyKTsKLSAgICBhYm9y
dCgpOworICAgIHBvc2l4OjpBYm9ydCgpOwogICB9CiB9CiAKIC8vIEEgcmVwbGFjZW1lbnQgZm9y
IENIRUNLIHRoYXQgY2FsbHMgRGVhdGhUZXN0QWJvcnQgaWYgdGhlIGFzc2VydGlvbgogLy8gZmFp
bHMuCi0jZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGV4cHJlc3Npb24pIFwKKyMgZGVm
aW5lIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGV4cHJlc3Npb24pIFwKICAgZG8geyBcCiAgICAg
aWYgKCE6OnRlc3Rpbmc6OmludGVybmFsOjpJc1RydWUoZXhwcmVzc2lvbikpIHsgXAotICAgICAg
RGVhdGhUZXN0QWJvcnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOjpGb3JtYXQoIFwKLSAg
ICAgICAgICAiQ0hFQ0sgZmFpbGVkOiBGaWxlICVzLCBsaW5lICVkOiAlcyIsIFwKLSAgICAgICAg
ICBfX0ZJTEVfXywgX19MSU5FX18sICNleHByZXNzaW9uKSk7IFwKKyAgICAgIERlYXRoVGVzdEFi
b3J0KCBcCisgICAgICAgICAgOjpzdGQ6OnN0cmluZygiQ0hFQ0sgZmFpbGVkOiBGaWxlICIpICsg
X19GSUxFX18gKyAgIiwgbGluZSAiIFwKKyAgICAgICAgICArIDo6dGVzdGluZzo6aW50ZXJuYWw6
OlN0cmVhbWFibGVUb1N0cmluZyhfX0xJTkVfXykgKyAiOiAiIFwKKyAgICAgICAgICArICNleHBy
ZXNzaW9uKTsgXAogICAgIH0gXAogICB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdh
eXNGYWxzZSgpKQogCkBAIC0yMzQsMjIgKzMxMywyMyBAQCB2b2lkIERlYXRoVGVzdEFib3J0KGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkgewogLy8gZXZhbHVhdGVzIHRoZSBleHByZXNzaW9uIGFzIGxv
bmcgYXMgaXQgZXZhbHVhdGVzIHRvIC0xIGFuZCBzZXRzCiAvLyBlcnJubyB0byBFSU5UUi4gIElm
IHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAtMSBidXQgZXJybm8gaXMKIC8vIHNvbWV0aGlu
ZyBvdGhlciB0aGFuIEVJTlRSLCBEZWF0aFRlc3RBYm9ydCBpcyBjYWxsZWQuCi0jZGVmaW5lIEdU
RVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oZXhwcmVzc2lvbikgXAorIyBkZWZpbmUgR1RF
U1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhleHByZXNzaW9uKSBcCiAgIGRvIHsgXAogICAg
IGludCBndGVzdF9yZXR2YWw7IFwKICAgICBkbyB7IFwKICAgICAgIGd0ZXN0X3JldHZhbCA9IChl
eHByZXNzaW9uKTsgXAogICAgIH0gd2hpbGUgKGd0ZXN0X3JldHZhbCA9PSAtMSAmJiBlcnJubyA9
PSBFSU5UUik7IFwKICAgICBpZiAoZ3Rlc3RfcmV0dmFsID09IC0xKSB7IFwKLSAgICAgIERlYXRo
VGVzdEFib3J0KDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZzo6Rm9ybWF0KCBcCi0gICAgICAg
ICAgIkNIRUNLIGZhaWxlZDogRmlsZSAlcywgbGluZSAlZDogJXMgIT0gLTEiLCBcCi0gICAgICAg
ICAgX19GSUxFX18sIF9fTElORV9fLCAjZXhwcmVzc2lvbikpOyBcCisgICAgICBEZWF0aFRlc3RB
Ym9ydCggXAorICAgICAgICAgIDo6c3RkOjpzdHJpbmcoIkNIRUNLIGZhaWxlZDogRmlsZSAiKSAr
IF9fRklMRV9fICsgIiwgbGluZSAiIFwKKyAgICAgICAgICArIDo6dGVzdGluZzo6aW50ZXJuYWw6
OlN0cmVhbWFibGVUb1N0cmluZyhfX0xJTkVfXykgKyAiOiAiIFwKKyAgICAgICAgICArICNleHBy
ZXNzaW9uICsgIiAhPSAtMSIpOyBcCiAgICAgfSBcCiAgIH0gd2hpbGUgKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCiAKIC8vIFJldHVybnMgdGhlIG1lc3NhZ2UgZGVzY3JpYmlu
ZyB0aGUgbGFzdCBzeXN0ZW0gZXJyb3IgaW4gZXJybm8uCi1TdHJpbmcgR2V0TGFzdEVycm5vRGVz
Y3JpcHRpb24oKSB7Ci0gICAgcmV0dXJuIFN0cmluZyhlcnJubyA9PSAwID8gIiIgOiBwb3NpeDo6
U3RyRXJyb3IoZXJybm8pKTsKK3N0ZDo6c3RyaW5nIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkg
eworICAgIHJldHVybiBlcnJubyA9PSAwID8gIiIgOiBwb3NpeDo6U3RyRXJyb3IoZXJybm8pOwog
fQogCiAvLyBUaGlzIGlzIGNhbGxlZCBmcm9tIGEgZGVhdGggdGVzdCBwYXJlbnQgcHJvY2VzcyB0
byByZWFkIGEgZmFpbHVyZQpAQCAtMjk5LDExICszNzksMTEgQEAgY29uc3QgY2hhciogRGVhdGhU
ZXN0OjpMYXN0TWVzc2FnZSgpIHsKICAgcmV0dXJuIGxhc3RfZGVhdGhfdGVzdF9tZXNzYWdlXy5j
X3N0cigpOwogfQogCi12b2lkIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdl
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewordm9pZCBEZWF0aFRlc3Q6OnNldF9sYXN0X2RlYXRo
X3Rlc3RfbWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgewogICBsYXN0X2RlYXRo
X3Rlc3RfbWVzc2FnZV8gPSBtZXNzYWdlOwogfQogCi1TdHJpbmcgRGVhdGhUZXN0OjpsYXN0X2Rl
YXRoX3Rlc3RfbWVzc2FnZV87CitzdGQ6OnN0cmluZyBEZWF0aFRlc3Q6Omxhc3RfZGVhdGhfdGVz
dF9tZXNzYWdlXzsKIAogLy8gUHJvdmlkZXMgY3Jvc3MgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24g
Zm9yIHNvbWUgZGVhdGggZnVuY3Rpb25hbGl0eS4KIGNsYXNzIERlYXRoVGVzdEltcGwgOiBwdWJs
aWMgRGVhdGhUZXN0IHsKQEAgLTM4OCw2ICs0NjgsOSBAQCB2b2lkIERlYXRoVGVzdEltcGw6OlJl
YWRBbmRJbnRlcnByZXRTdGF0dXNCeXRlKCkgewogICAgICAgY2FzZSBrRGVhdGhUZXN0UmV0dXJu
ZWQ6CiAgICAgICAgIHNldF9vdXRjb21lKFJFVFVSTkVEKTsKICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIGtEZWF0aFRlc3RUaHJldzoKKyAgICAgICAgc2V0X291dGNvbWUoVEhSRVcpOworICAg
ICAgICBicmVhazsKICAgICAgIGNhc2Uga0RlYXRoVGVzdExpdmVkOgogICAgICAgICBzZXRfb3V0
Y29tZShMSVZFRCk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDE2LDE5ICs0OTksNDYgQEAgdm9pZCBE
ZWF0aFRlc3RJbXBsOjpBYm9ydChBYm9ydFJlYXNvbiByZWFzb24pIHsKICAgLy8gaXQgZmluZHMg
YW55IGRhdGEgaW4gb3VyIHBpcGUuICBTbywgaGVyZSB3ZSB3cml0ZSBhIHNpbmdsZSBmbGFnIGJ5
dGUKICAgLy8gdG8gdGhlIHBpcGUsIHRoZW4gZXhpdC4KICAgY29uc3QgY2hhciBzdGF0dXNfY2gg
PQotICAgICAgcmVhc29uID09IFRFU1RfRElEX05PVF9ESUUgPyBrRGVhdGhUZXN0TGl2ZWQgOiBr
RGVhdGhUZXN0UmV0dXJuZWQ7CisgICAgICByZWFzb24gPT0gVEVTVF9ESURfTk9UX0RJRSA/IGtE
ZWF0aFRlc3RMaXZlZCA6CisgICAgICByZWFzb24gPT0gVEVTVF9USFJFV19FWENFUFRJT04gPyBr
RGVhdGhUZXN0VGhyZXcgOiBrRGVhdGhUZXN0UmV0dXJuZWQ7CisKICAgR1RFU1RfREVBVEhfVEVT
VF9DSEVDS19TWVNDQUxMXyhwb3NpeDo6V3JpdGUod3JpdGVfZmQoKSwgJnN0YXR1c19jaCwgMSkp
OwotICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKHBvc2l4OjpDbG9zZSh3cml0ZV9m
ZCgpKSk7CisgIC8vIFdlIGFyZSBsZWFraW5nIHRoZSBkZXNjcmlwdG9yIGhlcmUgYmVjYXVzZSBv
biBzb21lIHBsYXRmb3JtcyAoaS5lLiwKKyAgLy8gd2hlbiBidWlsdCBhcyBXaW5kb3dzIERMTCks
IGRlc3RydWN0b3JzIG9mIGdsb2JhbCBvYmplY3RzIHdpbGwgc3RpbGwKKyAgLy8gcnVuIGFmdGVy
IGNhbGxpbmcgX2V4aXQoKS4gT24gc3VjaCBzeXN0ZW1zLCB3cml0ZV9mZF8gd2lsbCBiZQorICAv
LyBpbmRpcmVjdGx5IGNsb3NlZCBmcm9tIHRoZSBkZXN0cnVjdG9yIG9mIFVuaXRUZXN0SW1wbCwg
Y2F1c2luZyBkb3VibGUKKyAgLy8gY2xvc2UgaWYgaXQgaXMgYWxzbyBjbG9zZWQgaGVyZS4gT24g
ZGVidWcgY29uZmlndXJhdGlvbnMsIGRvdWJsZSBjbG9zZQorICAvLyBtYXkgYXNzZXJ0LiBBcyB0
aGVyZSBhcmUgbm8gaW4tcHJvY2VzcyBidWZmZXJzIHRvIGZsdXNoIGhlcmUsIHdlIGFyZQorICAv
LyByZWx5aW5nIG9uIHRoZSBPUyB0byBjbG9zZSB0aGUgZGVzY3JpcHRvciBhZnRlciB0aGUgcHJv
Y2VzcyB0ZXJtaW5hdGVzCisgIC8vIHdoZW4gdGhlIGRlc3RydWN0b3JzIGFyZSBub3QgcnVuLgog
ICBfZXhpdCgxKTsgIC8vIEV4aXRzIHcvbyBhbnkgbm9ybWFsIGV4aXQgaG9va3MgKHdlIHdlcmUg
c3VwcG9zZWQgdG8gY3Jhc2gpCiB9CiAKKy8vIFJldHVybnMgYW4gaW5kZW50ZWQgY29weSBvZiBz
dGRlcnIgb3V0cHV0IGZvciBhIGRlYXRoIHRlc3QuCisvLyBUaGlzIG1ha2VzIGRpc3Rpbmd1aXNo
aW5nIGRlYXRoIHRlc3Qgb3V0cHV0IGxpbmVzIGZyb20gcmVndWxhciBsb2cgbGluZXMKKy8vIG11
Y2ggZWFzaWVyLgorc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGNv
bnN0IDo6c3RkOjpzdHJpbmcmIG91dHB1dCkgeworICA6OnN0ZDo6c3RyaW5nIHJldDsKKyAgZm9y
IChzaXplX3QgYXQgPSAwOyA7ICkgeworICAgIGNvbnN0IHNpemVfdCBsaW5lX2VuZCA9IG91dHB1
dC5maW5kKCdcbicsIGF0KTsKKyAgICByZXQgKz0gIlsgIERFQVRIICAgXSAiOworICAgIGlmIChs
aW5lX2VuZCA9PSA6OnN0ZDo6c3RyaW5nOjpucG9zKSB7CisgICAgICByZXQgKz0gb3V0cHV0LnN1
YnN0cihhdCk7CisgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0ICs9IG91dHB1dC5zdWJzdHIo
YXQsIGxpbmVfZW5kICsgMSAtIGF0KTsKKyAgICBhdCA9IGxpbmVfZW5kICsgMTsKKyAgfQorICBy
ZXR1cm4gcmV0OworfQorCiAvLyBBc3Nlc3NlcyB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIGEg
ZGVhdGggdGVzdCwgdXNpbmcgYm90aCBwcml2YXRlCiAvLyBtZW1iZXJzIHdoaWNoIGhhdmUgcHJl
dmlvdXNseSBiZWVuIHNldCwgYW5kIG9uZSBhcmd1bWVudDoKIC8vCiAvLyBQcml2YXRlIGRhdGEg
bWVtYmVyczoKIC8vICAgb3V0Y29tZTogIEFuIGVudW1lcmF0aW9uIGRlc2NyaWJpbmcgaG93IHRo
ZSBkZWF0aCB0ZXN0Ci0vLyAgICAgICAgICAgICBjb25jbHVkZWQ6IERJRUQsIExJVkVELCBvciBS
RVRVUk5FRC4gIFRoZSBkZWF0aCB0ZXN0IGZhaWxzCi0vLyAgICAgICAgICAgICBpbiB0aGUgbGF0
dGVyIHR3byBjYXNlcy4KKy8vICAgICAgICAgICAgIGNvbmNsdWRlZDogRElFRCwgTElWRUQsIFRI
UkVXLCBvciBSRVRVUk5FRC4gIFRoZSBkZWF0aCB0ZXN0CisvLyAgICAgICAgICAgICBmYWlscyBp
biB0aGUgbGF0dGVyIHRocmVlIGNhc2VzLgogLy8gICBzdGF0dXM6ICAgVGhlIGV4aXQgc3RhdHVz
IG9mIHRoZSBjaGlsZCBwcm9jZXNzLiBPbiAqbml4LCBpdCBpcyBpbiB0aGUKIC8vICAgICAgICAg
ICAgIGluIHRoZSBmb3JtYXQgc3BlY2lmaWVkIGJ5IHdhaXQoMikuIE9uIFdpbmRvd3MsIHRoaXMg
aXMgdGhlCiAvLyAgICAgICAgICAgICB2YWx1ZSBzdXBwbGllZCB0byB0aGUgRXhpdFByb2Nlc3Mo
KSBBUEkgb3IgYSBudW1lcmljIGNvZGUKQEAgLTQ0OCw3ICs1NTgsNyBAQCBib29sIERlYXRoVGVz
dEltcGw6OlBhc3NlZChib29sIHN0YXR1c19vaykgewogICBpZiAoIXNwYXduZWQoKSkKICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgY29uc3QgU3RyaW5nIGVycm9yX21lc3NhZ2UgPSBHZXRDYXB0dXJl
ZFN0ZGVycigpOworICBjb25zdCBzdGQ6OnN0cmluZyBlcnJvcl9tZXNzYWdlID0gR2V0Q2FwdHVy
ZWRTdGRlcnIoKTsKIAogICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgTWVzc2FnZSBidWZmZXI7
CkBAIC00NTcsMjUgKzU2NywzNSBAQCBib29sIERlYXRoVGVzdEltcGw6OlBhc3NlZChib29sIHN0
YXR1c19vaykgewogICBzd2l0Y2ggKG91dGNvbWUoKSkgewogICAgIGNhc2UgTElWRUQ6CiAgICAg
ICBidWZmZXIgPDwgIiAgICBSZXN1bHQ6IGZhaWxlZCB0byBkaWUuXG4iCi0gICAgICAgICAgICAg
PDwgIiBFcnJvciBtc2c6ICIgPDwgZXJyb3JfbWVzc2FnZTsKKyAgICAgICAgICAgICA8PCAiIEVy
cm9yIG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGVycm9yX21lc3NhZ2UpOworICAg
ICAgYnJlYWs7CisgICAgY2FzZSBUSFJFVzoKKyAgICAgIGJ1ZmZlciA8PCAiICAgIFJlc3VsdDog
dGhyZXcgYW4gZXhjZXB0aW9uLlxuIgorICAgICAgICAgICAgIDw8ICIgRXJyb3IgbXNnOlxuIiA8
PCBGb3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2FnZSk7CiAgICAgICBicmVhazsKICAg
ICBjYXNlIFJFVFVSTkVEOgogICAgICAgYnVmZmVyIDw8ICIgICAgUmVzdWx0OiBpbGxlZ2FsIHJl
dHVybiBpbiB0ZXN0IHN0YXRlbWVudC5cbiIKLSAgICAgICAgICAgICA8PCAiIEVycm9yIG1zZzog
IiA8PCBlcnJvcl9tZXNzYWdlOworICAgICAgICAgICAgIDw8ICIgRXJyb3IgbXNnOlxuIiA8PCBG
b3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2FnZSk7CiAgICAgICBicmVhazsKICAgICBj
YXNlIERJRUQ6CiAgICAgICBpZiAoc3RhdHVzX29rKSB7CisjIGlmIEdURVNUX1VTRVNfUENSRQor
ICAgICAgICAvLyBQQ1JFIHJlZ2V4ZXMgc3VwcG9ydCBlbWJlZGRlZCBOVUxzLgorICAgICAgICBj
b25zdCBib29sIG1hdGNoZWQgPSBSRTo6UGFydGlhbE1hdGNoKGVycm9yX21lc3NhZ2UsICpyZWdl
eCgpKTsKKyMgZWxzZQogICAgICAgICBjb25zdCBib29sIG1hdGNoZWQgPSBSRTo6UGFydGlhbE1h
dGNoKGVycm9yX21lc3NhZ2UuY19zdHIoKSwgKnJlZ2V4KCkpOworIyBlbmRpZiAgLy8gR1RFU1Rf
VVNFU19QQ1JFCiAgICAgICAgIGlmIChtYXRjaGVkKSB7CiAgICAgICAgICAgc3VjY2VzcyA9IHRy
dWU7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgYnVmZmVyIDw8ICIgICAgUmVzdWx0OiBk
aWVkIGJ1dCBub3Qgd2l0aCBleHBlY3RlZCBlcnJvci5cbiIKICAgICAgICAgICAgICAgICAgPDwg
IiAgRXhwZWN0ZWQ6ICIgPDwgcmVnZXgoKS0+cGF0dGVybigpIDw8ICJcbiIKLSAgICAgICAgICAg
ICAgICAgPDwgIkFjdHVhbCBtc2c6ICIgPDwgZXJyb3JfbWVzc2FnZTsKKyAgICAgICAgICAgICAg
ICAgPDwgIkFjdHVhbCBtc2c6XG4iIDw8IEZvcm1hdERlYXRoVGVzdE91dHB1dChlcnJvcl9tZXNz
YWdlKTsKICAgICAgICAgfQogICAgICAgfSBlbHNlIHsKICAgICAgICAgYnVmZmVyIDw8ICIgICAg
UmVzdWx0OiBkaWVkIGJ1dCBub3Qgd2l0aCBleHBlY3RlZCBleGl0IGNvZGU6XG4iCi0gICAgICAg
ICAgICAgICA8PCAiICAgICAgICAgICAgIiA8PCBFeGl0U3VtbWFyeShzdGF0dXMoKSkgPDwgIlxu
IjsKKyAgICAgICAgICAgICAgIDw8ICIgICAgICAgICAgICAiIDw8IEV4aXRTdW1tYXJ5KHN0YXR1
cygpKSA8PCAiXG4iCisgICAgICAgICAgICAgICA8PCAiQWN0dWFsIG1zZzpcbiIgPDwgRm9ybWF0
RGVhdGhUZXN0T3V0cHV0KGVycm9yX21lc3NhZ2UpOwogICAgICAgfQogICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBJTl9QUk9HUkVTUzoKQEAgLTQ4OCw3ICs2MDgsNyBAQCBib29sIERlYXRoVGVzdElt
cGw6OlBhc3NlZChib29sIHN0YXR1c19vaykgewogICByZXR1cm4gc3VjY2VzczsKIH0KIAotI2lm
IEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lORE9XUwogLy8gV2luZG93c0RlYXRo
VGVzdCBpbXBsZW1lbnRzIGRlYXRoIHRlc3RzIG9uIFdpbmRvd3MuIER1ZSB0byB0aGUKIC8vIHNw
ZWNpZmljcyBvZiBzdGFydGluZyBuZXcgcHJvY2Vzc2VzIG9uIFdpbmRvd3MsIGRlYXRoIHRlc3Rz
IHRoZXJlIGFyZQogLy8gYWx3YXlzIHRocmVhZHNhZmUsIGFuZCBHb29nbGUgVGVzdCBjb25zaWRl
cnMgdGhlCkBAIC01MTksMTEgKzYzOSwxMSBAQCBib29sIERlYXRoVGVzdEltcGw6OlBhc3NlZChi
b29sIHN0YXR1c19vaykgewogLy8KIGNsYXNzIFdpbmRvd3NEZWF0aFRlc3QgOiBwdWJsaWMgRGVh
dGhUZXN0SW1wbCB7CiAgcHVibGljOgotICBXaW5kb3dzRGVhdGhUZXN0KGNvbnN0IGNoYXIqIHN0
YXRlbWVudCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBSRSogcmVnZXgsCisgIFdpbmRvd3NE
ZWF0aFRlc3QoY29uc3QgY2hhciogYV9zdGF0ZW1lbnQsCisgICAgICAgICAgICAgICAgICAgY29u
c3QgUkUqIGFfcmVnZXgsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwKICAg
ICAgICAgICAgICAgICAgICBpbnQgbGluZSkKLSAgICAgIDogRGVhdGhUZXN0SW1wbChzdGF0ZW1l
bnQsIHJlZ2V4KSwgZmlsZV8oZmlsZSksIGxpbmVfKGxpbmUpIHt9CisgICAgICA6IERlYXRoVGVz
dEltcGwoYV9zdGF0ZW1lbnQsIGFfcmVnZXgpLCBmaWxlXyhmaWxlKSwgbGluZV8obGluZSkge30K
IAogICAvLyBBbGwgb2YgdGhlc2UgdmlydHVhbCBmdW5jdGlvbnMgYXJlIGluaGVyaXRlZCBmcm9t
IERlYXRoVGVzdC4KICAgdmlydHVhbCBpbnQgV2FpdCgpOwpAQCAtNTgwLDEyICs3MDAsMTIgQEAg
aW50IFdpbmRvd3NEZWF0aFRlc3Q6OldhaXQoKSB7CiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tf
KAogICAgICAgV0FJVF9PQkpFQ1RfMCA9PSA6OldhaXRGb3JTaW5nbGVPYmplY3QoY2hpbGRfaGFu
ZGxlXy5HZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IElORklOSVRFKSk7Ci0gIERXT1JEIHN0YXR1czsKLSAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18o
OjpHZXRFeGl0Q29kZVByb2Nlc3MoY2hpbGRfaGFuZGxlXy5HZXQoKSwgJnN0YXR1cykKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIT0gRkFMU0UpOworICBEV09SRCBzdGF0dXNfY29kZTsKKyAg
R1RFU1RfREVBVEhfVEVTVF9DSEVDS18oCisgICAgICA6OkdldEV4aXRDb2RlUHJvY2VzcyhjaGls
ZF9oYW5kbGVfLkdldCgpLCAmc3RhdHVzX2NvZGUpICE9IEZBTFNFKTsKICAgY2hpbGRfaGFuZGxl
Xy5SZXNldCgpOwotICBzZXRfc3RhdHVzKHN0YXRpY19jYXN0PGludD4oc3RhdHVzKSk7Ci0gIHJl
dHVybiB0aGlzLT5zdGF0dXMoKTsKKyAgc2V0X3N0YXR1cyhzdGF0aWNfY2FzdDxpbnQ+KHN0YXR1
c19jb2RlKSk7CisgIHJldHVybiBzdGF0dXMoKTsKIH0KIAogLy8gVGhlIEFzc3VtZVJvbGUgcHJv
Y2VzcyBmb3IgYSBXaW5kb3dzIGRlYXRoIHRlc3QuICBJdCBjcmVhdGVzIGEgY2hpbGQKQEAgLTYy
NSwyMiArNzQ1LDE5IEBAIERlYXRoVGVzdDo6VGVzdFJvbGUgV2luZG93c0RlYXRoVGVzdDo6QXNz
dW1lUm9sZSgpIHsKICAgICAgIEZBTFNFLCAgIC8vIFRoZSBpbml0aWFsIHN0YXRlIGlzIG5vbi1z
aWduYWxsZWQuCiAgICAgICBOVUxMKSk7ICAvLyBUaGUgZXZlbiBpcyB1bm5hbWVkLgogICBHVEVT
VF9ERUFUSF9URVNUX0NIRUNLXyhldmVudF9oYW5kbGVfLkdldCgpICE9IE5VTEwpOwotICBjb25z
dCBTdHJpbmcgZmlsdGVyX2ZsYWcgPSBTdHJpbmc6OkZvcm1hdCgiLS0lcyVzPSVzLiVzIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfRkxBR19QUkVG
SVhfLCBrRmlsdGVyRmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5mby0+dGVzdF9jYXNlX25hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5mby0+bmFtZSgpKTsKLSAgY29uc3QgU3RyaW5nIGludGVybmFs
X2ZsYWcgPSBTdHJpbmc6OkZvcm1hdCgKLSAgICAiLS0lcyVzPSVzfCVkfCVkfCV1fCVJdXwlSXUi
LAotICAgICAgR1RFU1RfRkxBR19QUkVGSVhfLAotICAgICAga0ludGVybmFsUnVuRGVhdGhUZXN0
RmxhZywKLSAgICAgIGZpbGVfLCBsaW5lXywKLSAgICAgIGRlYXRoX3Rlc3RfaW5kZXgsCi0gICAg
ICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KDo6R2V0Q3VycmVudFByb2Nlc3NJZCgpKSwKLSAg
ICAgIC8vIHNpemVfdCBoYXMgdGhlIHNhbWUgd2l0aCBhcyBwb2ludGVycyBvbiBib3RoIDMyLWJp
dCBhbmQgNjQtYml0CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbHRlcl9mbGFnID0KKyAgICAgIHN0
ZDo6c3RyaW5nKCItLSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsga0ZpbHRlckZsYWcgKyAiPSIg
KworICAgICAgaW5mby0+dGVzdF9jYXNlX25hbWUoKSArICIuIiArIGluZm8tPm5hbWUoKTsKKyAg
Y29uc3Qgc3RkOjpzdHJpbmcgaW50ZXJuYWxfZmxhZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0i
KSArIEdURVNUX0ZMQUdfUFJFRklYXyArIGtJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcgKworICAg
ICAgIj0iICsgZmlsZV8gKyAifCIgKyBTdHJlYW1hYmxlVG9TdHJpbmcobGluZV8pICsgInwiICsK
KyAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhkZWF0aF90ZXN0X2luZGV4KSArICJ8IiArCisgICAg
ICBTdHJlYW1hYmxlVG9TdHJpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pig6OkdldEN1cnJl
bnRQcm9jZXNzSWQoKSkpICsKKyAgICAgIC8vIHNpemVfdCBoYXMgdGhlIHNhbWUgd2lkdGggYXMg
cG9pbnRlcnMgb24gYm90aCAzMi1iaXQgYW5kIDY0LWJpdAogICAgICAgLy8gV2luZG93cyBwbGF0
Zm9ybXMuCiAgICAgICAvLyBTZWUgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJy
YXJ5L3RjeGYxZHc2LmFzcHguCi0gICAgICByZWludGVycHJldF9jYXN0PHNpemVfdD4od3JpdGVf
aGFuZGxlKSwKLSAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihldmVudF9oYW5kbGVfLkdl
dCgpKSk7CisgICAgICAifCIgKyBTdHJlYW1hYmxlVG9TdHJpbmcocmVpbnRlcnByZXRfY2FzdDxz
aXplX3Q+KHdyaXRlX2hhbmRsZSkpICsKKyAgICAgICJ8IiArIFN0cmVhbWFibGVUb1N0cmluZyhy
ZWludGVycHJldF9jYXN0PHNpemVfdD4oZXZlbnRfaGFuZGxlXy5HZXQoKSkpOwogCiAgIGNoYXIg
ZXhlY3V0YWJsZV9wYXRoW19NQVhfUEFUSCArIDFdOyAgLy8gTk9MSU5UCiAgIEdURVNUX0RFQVRI
X1RFU1RfQ0hFQ0tfKApAQCAtNjQ4LDEwICs3NjUsOSBAQCBEZWF0aFRlc3Q6OlRlc3RSb2xlIFdp
bmRvd3NEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVfcGF0aCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX01BWF9QQVRIKSk7CiAKLSAgU3RyaW5nIGNvbW1hbmRf
bGluZSA9IFN0cmluZzo6Rm9ybWF0KCIlcyAlcyBcIiVzXCIiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOjpHZXRDb21tYW5kTGluZUEoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl9mbGFnLmNfc3RyKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbF9mbGFnLmNfc3RyKCkpOworICBz
dGQ6OnN0cmluZyBjb21tYW5kX2xpbmUgPQorICAgICAgc3RkOjpzdHJpbmcoOjpHZXRDb21tYW5k
TGluZUEoKSkgKyAiICIgKyBmaWx0ZXJfZmxhZyArICIgXCIiICsKKyAgICAgIGludGVybmFsX2Zs
YWcgKyAiXCIiOwogCiAgIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKCIi
KTsKIApAQCAtNjg0LDcgKzgwMCwyMDAgQEAgRGVhdGhUZXN0OjpUZXN0Um9sZSBXaW5kb3dzRGVh
dGhUZXN0OjpBc3N1bWVSb2xlKCkgewogICBzZXRfc3Bhd25lZCh0cnVlKTsKICAgcmV0dXJuIE9W
RVJTRUVfVEVTVDsKIH0KLSNlbHNlICAvLyBXZSBhcmUgbm90IG9uIFdpbmRvd3MuCisKKyMgZWxp
ZiBHVEVTVF9PU19GVUNIU0lBCisKK2NsYXNzIEZ1Y2hzaWFEZWF0aFRlc3QgOiBwdWJsaWMgRGVh
dGhUZXN0SW1wbCB7CisgcHVibGljOgorICBGdWNoc2lhRGVhdGhUZXN0KGNvbnN0IGNoYXIqIGFf
c3RhdGVtZW50LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFKiBhX3JlZ2V4LAorICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsCisgICAgICAgICAgICAgICAgICAgaW50IGxp
bmUpCisgICAgICA6IERlYXRoVGVzdEltcGwoYV9zdGF0ZW1lbnQsIGFfcmVnZXgpLCBmaWxlXyhm
aWxlKSwgbGluZV8obGluZSkge30KKyAgdmlydHVhbCB+RnVjaHNpYURlYXRoVGVzdCgpIHsKKyAg
ICB6eF9zdGF0dXNfdCBzdGF0dXMgPSB6eF9oYW5kbGVfY2xvc2UoY2hpbGRfcHJvY2Vzc18pOwor
ICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1cyA9PSBaWF9PSyk7CisgICAgc3RhdHVz
ID0genhfaGFuZGxlX2Nsb3NlKHBvcnRfKTsKKyAgICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhz
dGF0dXMgPT0gWlhfT0spOworICB9CisKKyAgLy8gQWxsIG9mIHRoZXNlIHZpcnR1YWwgZnVuY3Rp
b25zIGFyZSBpbmhlcml0ZWQgZnJvbSBEZWF0aFRlc3QuCisgIHZpcnR1YWwgaW50IFdhaXQoKTsK
KyAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCk7CisKKyBwcml2YXRlOgorICAvLyBUaGUg
bmFtZSBvZiB0aGUgZmlsZSBpbiB3aGljaCB0aGUgZGVhdGggdGVzdCBpcyBsb2NhdGVkLgorICBj
b25zdCBjaGFyKiBjb25zdCBmaWxlXzsKKyAgLy8gVGhlIGxpbmUgbnVtYmVyIG9uIHdoaWNoIHRo
ZSBkZWF0aCB0ZXN0IGlzIGxvY2F0ZWQuCisgIGNvbnN0IGludCBsaW5lXzsKKworICB6eF9oYW5k
bGVfdCBjaGlsZF9wcm9jZXNzXyA9IFpYX0hBTkRMRV9JTlZBTElEOworICB6eF9oYW5kbGVfdCBw
b3J0XyA9IFpYX0hBTkRMRV9JTlZBTElEOworfTsKKworLy8gVXRpbGl0eSBjbGFzcyBmb3IgYWNj
dW11bGF0aW5nIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuCitjbGFzcyBBcmd1bWVudHMgeworIHB1
YmxpYzoKKyAgQXJndW1lbnRzKCkgeworICAgIGFyZ3NfLnB1c2hfYmFjayhOVUxMKTsKKyAgfQor
CisgIH5Bcmd1bWVudHMoKSB7CisgICAgZm9yIChzdGQ6OnZlY3RvcjxjaGFyKj46Oml0ZXJhdG9y
IGkgPSBhcmdzXy5iZWdpbigpOyBpICE9IGFyZ3NfLmVuZCgpOworICAgICAgICAgKytpKSB7Cisg
ICAgICBmcmVlKCppKTsKKyAgICB9CisgIH0KKyAgdm9pZCBBZGRBcmd1bWVudChjb25zdCBjaGFy
KiBhcmd1bWVudCkgeworICAgIGFyZ3NfLmluc2VydChhcmdzXy5lbmQoKSAtIDEsIHBvc2l4OjpT
dHJEdXAoYXJndW1lbnQpKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBTdHI+CisgIHZv
aWQgQWRkQXJndW1lbnRzKGNvbnN0IDo6c3RkOjp2ZWN0b3I8U3RyPiYgYXJndW1lbnRzKSB7Cisg
ICAgZm9yICh0eXBlbmFtZSA6OnN0ZDo6dmVjdG9yPFN0cj46OmNvbnN0X2l0ZXJhdG9yIGkgPSBh
cmd1bWVudHMuYmVnaW4oKTsKKyAgICAgICAgIGkgIT0gYXJndW1lbnRzLmVuZCgpOworICAgICAg
ICAgKytpKSB7CisgICAgICBhcmdzXy5pbnNlcnQoYXJnc18uZW5kKCkgLSAxLCBwb3NpeDo6U3Ry
RHVwKGktPmNfc3RyKCkpKTsKKyAgICB9CisgIH0KKyAgY2hhciogY29uc3QqIEFyZ3YoKSB7Cisg
ICAgcmV0dXJuICZhcmdzX1swXTsKKyAgfQorCisgIGludCBzaXplKCkgeworICAgIHJldHVybiBh
cmdzXy5zaXplKCkgLSAxOworICB9CisKKyBwcml2YXRlOgorICBzdGQ6OnZlY3RvcjxjaGFyKj4g
YXJnc187Cit9OworCisvLyBXYWl0cyBmb3IgdGhlIGNoaWxkIGluIGEgZGVhdGggdGVzdCB0byBl
eGl0LCByZXR1cm5pbmcgaXRzIGV4aXQKKy8vIHN0YXR1cywgb3IgMCBpZiBubyBjaGlsZCBwcm9j
ZXNzIGV4aXN0cy4gIEFzIGEgc2lkZSBlZmZlY3QsIHNldHMgdGhlCisvLyBvdXRjb21lIGRhdGEg
bWVtYmVyLgoraW50IEZ1Y2hzaWFEZWF0aFRlc3Q6OldhaXQoKSB7CisgIGlmICghc3Bhd25lZCgp
KQorICAgIHJldHVybiAwOworCisgIC8vIFJlZ2lzdGVyIHRvIHdhaXQgZm9yIHRoZSBjaGlsZCBw
cm9jZXNzIHRvIHRlcm1pbmF0ZS4KKyAgenhfc3RhdHVzX3Qgc3RhdHVzX3p4OworICBzdGF0dXNf
enggPSB6eF9vYmplY3Rfd2FpdF9hc3luYyhjaGlsZF9wcm9jZXNzXywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcG9ydF8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAgLyoga2V5ICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBa
WF9QUk9DRVNTX1RFUk1JTkFURUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFpYX1dBSVRfQVNZTkNfT05DRSk7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1c196
eCA9PSBaWF9PSyk7CisKKyAgLy8gV2FpdCBmb3IgaXQgdG8gdGVybWluYXRlLCBvciBhbiBleGNl
cHRpb24gdG8gYmUgcmVjZWl2ZWQuCisgIHp4X3BvcnRfcGFja2V0X3QgcGFja2V0OworICBzdGF0
dXNfenggPSB6eF9wb3J0X3dhaXQocG9ydF8sIFpYX1RJTUVfSU5GSU5JVEUsICZwYWNrZXQpOwor
ICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhzdGF0dXNfenggPT0gWlhfT0spOworCisgIGlmICha
WF9QS1RfSVNfRVhDRVBUSU9OKHBhY2tldC50eXBlKSkgeworICAgIC8vIFByb2Nlc3MgZW5jb3Vu
dGVyZWQgYW4gZXhjZXB0aW9uLiBLaWxsIGl0IGRpcmVjdGx5IHJhdGhlciB0aGFuIGxldHRpbmcK
KyAgICAvLyBvdGhlciBoYW5kbGVycyBwcm9jZXNzIHRoZSBldmVudC4KKyAgICBzdGF0dXNfengg
PSB6eF90YXNrX2tpbGwoY2hpbGRfcHJvY2Vzc18pOworICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hF
Q0tfKHN0YXR1c196eCA9PSBaWF9PSyk7CisKKyAgICAvLyBOb3cgd2FpdCBmb3IgfGNoaWxkX3By
b2Nlc3NffCB0byB0ZXJtaW5hdGUuCisgICAgenhfc2lnbmFsc190IHNpZ25hbHMgPSAwOworICAg
IHN0YXR1c196eCA9IHp4X29iamVjdF93YWl0X29uZSgKKyAgICAgICAgY2hpbGRfcHJvY2Vzc18s
IFpYX1BST0NFU1NfVEVSTUlOQVRFRCwgWlhfVElNRV9JTkZJTklURSwgJnNpZ25hbHMpOworICAg
IEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1c196eCA9PSBaWF9PSyk7CisgICAgR1RFU1Rf
REVBVEhfVEVTVF9DSEVDS18oc2lnbmFscyAmIFpYX1BST0NFU1NfVEVSTUlOQVRFRCk7CisgIH0g
ZWxzZSB7CisgICAgLy8gUHJvY2VzcyB0ZXJtaW5hdGVkLgorICAgIEdURVNUX0RFQVRIX1RFU1Rf
Q0hFQ0tfKFpYX1BLVF9JU19TSUdOQUxfT05FKHBhY2tldC50eXBlKSk7CisgICAgR1RFU1RfREVB
VEhfVEVTVF9DSEVDS18ocGFja2V0LnNpZ25hbC5vYnNlcnZlZCAmIFpYX1BST0NFU1NfVEVSTUlO
QVRFRCk7CisgIH0KKworICBSZWFkQW5kSW50ZXJwcmV0U3RhdHVzQnl0ZSgpOworCisgIHp4X2lu
Zm9fcHJvY2Vzc190IGJ1ZmZlcjsKKyAgc3RhdHVzX3p4ID0genhfb2JqZWN0X2dldF9pbmZvKAor
ICAgICAgY2hpbGRfcHJvY2Vzc18sCisgICAgICBaWF9JTkZPX1BST0NFU1MsCisgICAgICAmYnVm
ZmVyLAorICAgICAgc2l6ZW9mKGJ1ZmZlciksCisgICAgICBudWxscHRyLAorICAgICAgbnVsbHB0
cik7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1c196eCA9PSBaWF9PSyk7CisKKyAg
R1RFU1RfREVBVEhfVEVTVF9DSEVDS18oYnVmZmVyLmV4aXRlZCk7CisgIHNldF9zdGF0dXMoYnVm
ZmVyLnJldHVybl9jb2RlKTsKKyAgcmV0dXJuIHN0YXR1cygpOworfQorCisvLyBUaGUgQXNzdW1l
Um9sZSBwcm9jZXNzIGZvciBhIEZ1Y2hzaWEgZGVhdGggdGVzdC4gIEl0IGNyZWF0ZXMgYSBjaGls
ZAorLy8gcHJvY2VzcyB3aXRoIHRoZSBzYW1lIGV4ZWN1dGFibGUgYXMgdGhlIGN1cnJlbnQgcHJv
Y2VzcyB0byBydW4gdGhlCisvLyBkZWF0aCB0ZXN0LiAgVGhlIGNoaWxkIHByb2Nlc3MgaXMgZ2l2
ZW4gdGhlIC0tZ3Rlc3RfZmlsdGVyIGFuZAorLy8gLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhf
dGVzdCBmbGFncyBzdWNoIHRoYXQgaXQga25vd3MgdG8gcnVuIHRoZQorLy8gY3VycmVudCBkZWF0
aCB0ZXN0IG9ubHkuCitEZWF0aFRlc3Q6OlRlc3RSb2xlIEZ1Y2hzaWFEZWF0aFRlc3Q6OkFzc3Vt
ZVJvbGUoKSB7CisgIGNvbnN0IFVuaXRUZXN0SW1wbCogY29uc3QgaW1wbCA9IEdldFVuaXRUZXN0
SW1wbCgpOworICBjb25zdCBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcqIGNvbnN0IGZsYWcgPQor
ICAgICAgaW1wbC0+aW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfZmxhZygpOworICBjb25zdCBUZXN0
SW5mbyogY29uc3QgaW5mbyA9IGltcGwtPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisgIGNvbnN0IGlu
dCBkZWF0aF90ZXN0X2luZGV4ID0gaW5mby0+cmVzdWx0KCktPmRlYXRoX3Rlc3RfY291bnQoKTsK
KworICBpZiAoZmxhZyAhPSBOVUxMKSB7CisgICAgLy8gUGFyc2VJbnRlcm5hbFJ1bkRlYXRoVGVz
dEZsYWcoKSBoYXMgcGVyZm9ybWVkIGFsbCB0aGUgbmVjZXNzYXJ5CisgICAgLy8gcHJvY2Vzc2lu
Zy4KKyAgICBzZXRfd3JpdGVfZmQoa0Z1Y2hzaWFSZWFkUGlwZUZkKTsKKyAgICByZXR1cm4gRVhF
Q1VURV9URVNUOworICB9CisKKyAgQ2FwdHVyZVN0ZGVycigpOworICAvLyBGbHVzaCB0aGUgbG9n
IGJ1ZmZlcnMgc2luY2UgdGhlIGxvZyBzdHJlYW1zIGFyZSBzaGFyZWQgd2l0aCB0aGUgY2hpbGQu
CisgIEZsdXNoSW5mb0xvZygpOworCisgIC8vIEJ1aWxkIHRoZSBjaGlsZCBwcm9jZXNzIGNvbW1h
bmQgbGluZS4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsdGVyX2ZsYWcgPQorICAgICAgc3RkOjpz
dHJpbmcoIi0tIikgKyBHVEVTVF9GTEFHX1BSRUZJWF8gKyBrRmlsdGVyRmxhZyArICI9IgorICAg
ICAgKyBpbmZvLT50ZXN0X2Nhc2VfbmFtZSgpICsgIi4iICsgaW5mby0+bmFtZSgpOworICBjb25z
dCBzdGQ6OnN0cmluZyBpbnRlcm5hbF9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIpICsg
R1RFU1RfRkxBR19QUkVGSVhfICsga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZyArICI9IgorICAg
ICAgKyBmaWxlXyArICJ8IgorICAgICAgKyBTdHJlYW1hYmxlVG9TdHJpbmcobGluZV8pICsgInwi
CisgICAgICArIFN0cmVhbWFibGVUb1N0cmluZyhkZWF0aF90ZXN0X2luZGV4KTsKKyAgQXJndW1l
bnRzIGFyZ3M7CisgIGFyZ3MuQWRkQXJndW1lbnRzKEdldEluamVjdGFibGVBcmd2cygpKTsKKyAg
YXJncy5BZGRBcmd1bWVudChmaWx0ZXJfZmxhZy5jX3N0cigpKTsKKyAgYXJncy5BZGRBcmd1bWVu
dChpbnRlcm5hbF9mbGFnLmNfc3RyKCkpOworCisgIC8vIEJ1aWxkIHRoZSBwaXBlIGZvciBjb21t
dW5pY2F0aW9uIHdpdGggdGhlIGNoaWxkLgorICB6eF9zdGF0dXNfdCBzdGF0dXM7CisgIHp4X2hh
bmRsZV90IGNoaWxkX3BpcGVfaGFuZGxlOworICB1aW50MzJfdCB0eXBlOworICBzdGF0dXMgPSBm
ZGlvX3BpcGVfaGFsZigmY2hpbGRfcGlwZV9oYW5kbGUsICZ0eXBlKTsKKyAgR1RFU1RfREVBVEhf
VEVTVF9DSEVDS18oc3RhdHVzID49IDApOworICBzZXRfcmVhZF9mZChzdGF0dXMpOworCisgIC8v
IFNldCB0aGUgcGlwZSBoYW5kbGUgZm9yIHRoZSBjaGlsZC4KKyAgZmRpb19zcGF3bl9hY3Rpb25f
dCBhZGRfaGFuZGxlX2FjdGlvbiA9IHt9OworICBhZGRfaGFuZGxlX2FjdGlvbi5hY3Rpb24gPSBG
RElPX1NQQVdOX0FDVElPTl9BRERfSEFORExFOworICBhZGRfaGFuZGxlX2FjdGlvbi5oLmlkID0g
UEFfSE5EKHR5cGUsIGtGdWNoc2lhUmVhZFBpcGVGZCk7CisgIGFkZF9oYW5kbGVfYWN0aW9uLmgu
aGFuZGxlID0gY2hpbGRfcGlwZV9oYW5kbGU7CisKKyAgLy8gU3Bhd24gdGhlIGNoaWxkIHByb2Nl
c3MuCisgIHN0YXR1cyA9IGZkaW9fc3Bhd25fZXRjKFpYX0hBTkRMRV9JTlZBTElELCBGRElPX1NQ
QVdOX0NMT05FX0FMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5Bcmd2KClbMF0s
IGFyZ3MuQXJndigpLCBudWxscHRyLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRk
X2hhbmRsZV9hY3Rpb24sICZjaGlsZF9wcm9jZXNzXywgbnVsbHB0cik7CisgIEdURVNUX0RFQVRI
X1RFU1RfQ0hFQ0tfKHN0YXR1cyA9PSBaWF9PSyk7CisKKyAgLy8gQ3JlYXRlIGFuIGV4Y2VwdGlv
biBwb3J0IGFuZCBhdHRhY2ggaXQgdG8gdGhlIHxjaGlsZF9wcm9jZXNzX3wsIHRvIGFsbG93Cisg
IC8vIHVzIHRvIHN1cHByZXNzIHRoZSBzeXN0ZW0gZGVmYXVsdCBleGNlcHRpb24gaGFuZGxlciBm
cm9tIGZpcmluZy4KKyAgc3RhdHVzID0genhfcG9ydF9jcmVhdGUoMCwgJnBvcnRfKTsKKyAgR1RF
U1RfREVBVEhfVEVTVF9DSEVDS18oc3RhdHVzID09IFpYX09LKTsKKyAgc3RhdHVzID0genhfdGFz
a19iaW5kX2V4Y2VwdGlvbl9wb3J0KAorICAgICAgY2hpbGRfcHJvY2Vzc18sIHBvcnRfLCAwIC8q
IGtleSAqLywgMCAvKm9wdGlvbnMgKi8pOworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhzdGF0
dXMgPT0gWlhfT0spOworCisgIHNldF9zcGF3bmVkKHRydWUpOworICByZXR1cm4gT1ZFUlNFRV9U
RVNUOworfQorCisjZWxzZSAgLy8gV2UgYXJlIG5laXRoZXIgb24gV2luZG93cywgbm9yIG9uIEZ1
Y2hzaWEuCiAKIC8vIEZvcmtpbmdEZWF0aFRlc3QgcHJvdmlkZXMgaW1wbGVtZW50YXRpb25zIGZv
ciBtb3N0IG9mIHRoZSBhYnN0cmFjdAogLy8gbWV0aG9kcyBvZiB0aGUgRGVhdGhUZXN0IGludGVy
ZmFjZS4gIE9ubHkgdGhlIEFzc3VtZVJvbGUgbWV0aG9kIGlzCkBAIC03NjgsNiArMTA3Nyw3IEBA
IERlYXRoVGVzdDo6VGVzdFJvbGUgTm9FeGVjRGVhdGhUZXN0OjpBc3N1bWVSb2xlKCkgewogICAg
IC8vIEV2ZW50IGZvcndhcmRpbmcgdG8gdGhlIGxpc3RlbmVycyBvZiBldmVudCBsaXN0ZW5lciBB
UEkgbXVzaCBiZSBzaHV0CiAgICAgLy8gZG93biBpbiBkZWF0aCB0ZXN0IHN1YnByb2Nlc3Nlcy4K
ICAgICBHZXRVbml0VGVzdEltcGwoKS0+bGlzdGVuZXJzKCktPlN1cHByZXNzRXZlbnRGb3J3YXJk
aW5nKCk7CisgICAgZ19pbl9mYXN0X2RlYXRoX3Rlc3RfY2hpbGQgPSB0cnVlOwogICAgIHJldHVy
biBFWEVDVVRFX1RFU1Q7CiAgIH0gZWxzZSB7CiAgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19T
WVNDQUxMXyhjbG9zZShwaXBlX2ZkWzFdKSk7CkBAIC03ODcsNiArMTA5NywxNSBAQCBjbGFzcyBF
eGVjRGVhdGhUZXN0IDogcHVibGljIEZvcmtpbmdEZWF0aFRlc3QgewogICAgICAgRm9ya2luZ0Rl
YXRoVGVzdChhX3N0YXRlbWVudCwgYV9yZWdleCksIGZpbGVfKGZpbGUpLCBsaW5lXyhsaW5lKSB7
IH0KICAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCk7CiAgcHJpdmF0ZToKKyAgc3RhdGlj
IDo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdldEFyZ3ZzRm9yRGVhdGhUZXN0Q2hpbGRQcm9j
ZXNzKCkgeworICAgIDo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGFyZ3MgPSBHZXRJbmplY3Rh
YmxlQXJndnMoKTsKKyMgIGlmIGRlZmluZWQoR1RFU1RfRVhUUkFfREVBVEhfVEVTVF9DT01NQU5E
X0xJTkVfQVJHU18pCisgICAgOjpzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gZXh0cmFfYXJncyA9
CisgICAgICAgIEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ09NTUFORF9MSU5FX0FSR1NfKCk7Cisg
ICAgYXJncy5pbnNlcnQoYXJncy5lbmQoKSwgZXh0cmFfYXJncy5iZWdpbigpLCBleHRyYV9hcmdz
LmVuZCgpKTsKKyMgIGVuZGlmICAvLyBkZWZpbmVkKEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ09N
TUFORF9MSU5FX0FSR1NfKQorICAgIHJldHVybiBhcmdzOworICB9CiAgIC8vIFRoZSBuYW1lIG9m
IHRoZSBmaWxlIGluIHdoaWNoIHRoZSBkZWF0aCB0ZXN0IGlzIGxvY2F0ZWQuCiAgIGNvbnN0IGNo
YXIqIGNvbnN0IGZpbGVfOwogICAvLyBUaGUgbGluZSBudW1iZXIgb24gd2hpY2ggdGhlIGRlYXRo
IHRlc3QgaXMgbG9jYXRlZC4KQEAgLTgyMSw2ICsxMTQwLDcgQEAgY2xhc3MgQXJndW1lbnRzIHsK
ICAgY2hhciogY29uc3QqIEFyZ3YoKSB7CiAgICAgcmV0dXJuICZhcmdzX1swXTsKICAgfQorCiAg
cHJpdmF0ZToKICAgc3RkOjp2ZWN0b3I8Y2hhcio+IGFyZ3NfOwogfTsKQEAgLTgzMiw2ICsxMTUy
LDIxIEBAIHN0cnVjdCBFeGVjRGVhdGhUZXN0QXJncyB7CiAgIGludCBjbG9zZV9mZDsgICAgICAg
Ly8gRmlsZSBkZXNjcmlwdG9yIHRvIGNsb3NlOyB0aGUgcmVhZCBlbmQgb2YgYSBwaXBlCiB9Owog
CisjICBpZiBHVEVTVF9PU19NQUMKK2lubGluZSBjaGFyKiogR2V0RW52aXJvbigpIHsKKyAgLy8g
V2hlbiBHb29nbGUgVGVzdCBpcyBidWlsdCBhcyBhIGZyYW1ld29yayBvbiBNYWNPUyBYLCB0aGUg
ZW52aXJvbiB2YXJpYWJsZQorICAvLyBpcyB1bmF2YWlsYWJsZS4gQXBwbGUncyBkb2N1bWVudGF0
aW9uIChtYW4gZW52aXJvbikgcmVjb21tZW5kcyB1c2luZworICAvLyBfTlNHZXRFbnZpcm9uKCkg
aW5zdGVhZC4KKyAgcmV0dXJuICpfTlNHZXRFbnZpcm9uKCk7Cit9CisjICBlbHNlCisvLyBTb21l
IFBPU0lYIHBsYXRmb3JtcyBleHBlY3QgeW91IHRvIGRlY2xhcmUgZW52aXJvbi4gZXh0ZXJuICJD
IiBtYWtlcworLy8gaXQgcmVzaWRlIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgorZXh0ZXJuICJD
IiBjaGFyKiogZW52aXJvbjsKK2lubGluZSBjaGFyKiogR2V0RW52aXJvbigpIHsgcmV0dXJuIGVu
dmlyb247IH0KKyMgIGVuZGlmICAvLyBHVEVTVF9PU19NQUMKKworIyAgaWYgIUdURVNUX09TX1FO
WAogLy8gVGhlIG1haW4gZnVuY3Rpb24gZm9yIGEgdGhyZWFkc2FmZS1zdHlsZSBkZWF0aCB0ZXN0
IGNoaWxkIHByb2Nlc3MuCiAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBhIGNsb25lKCkt
ZWQgcHJvY2VzcyBhbmQgdGh1cyBtdXN0IGF2b2lkCiAvLyBhbnkgcG90ZW50aWFsbHkgdW5zYWZl
IG9wZXJhdGlvbnMgbGlrZSBtYWxsb2Mgb3IgbGliYyBmdW5jdGlvbnMuCkBAIC04NDYsOSArMTE4
MSw4IEBAIHN0YXRpYyBpbnQgRXhlY0RlYXRoVGVzdENoaWxkTWFpbih2b2lkKiBjaGlsZF9hcmcp
IHsKICAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5nX2Rpcigp
OwogICAvLyBXZSBjYW4gc2FmZWx5IGNhbGwgY2hkaXIoKSBhcyBpdCdzIGEgZGlyZWN0IHN5c3Rl
bSBjYWxsLgogICBpZiAoY2hkaXIob3JpZ2luYWxfZGlyKSAhPSAwKSB7Ci0gICAgRGVhdGhUZXN0
QWJvcnQoU3RyaW5nOjpGb3JtYXQoImNoZGlyKFwiJXNcIikgZmFpbGVkOiAlcyIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxfZGlyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkuY19zdHIoKSkpOwor
ICAgIERlYXRoVGVzdEFib3J0KHN0ZDo6c3RyaW5nKCJjaGRpcihcIiIpICsgb3JpZ2luYWxfZGly
ICsgIlwiKSBmYWlsZWQ6ICIgKworICAgICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2Ny
aXB0aW9uKCkpOwogICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgIH0KIApAQCAtODU3LDQwICsx
MTkxLDk3IEBAIHN0YXRpYyBpbnQgRXhlY0RlYXRoVGVzdENoaWxkTWFpbih2b2lkKiBjaGlsZF9h
cmcpIHsKICAgLy8gdW5zYWZlLiAgU2luY2UgZXhlY3ZlKCkgZG9lc24ndCBzZWFyY2ggdGhlIFBB
VEgsIHRoZSB1c2VyIG11c3QKICAgLy8gaW52b2tlIHRoZSB0ZXN0IHByb2dyYW0gdmlhIGEgdmFs
aWQgcGF0aCB0aGF0IGNvbnRhaW5zIGF0IGxlYXN0CiAgIC8vIG9uZSBwYXRoIHNlcGFyYXRvci4K
LSAgLy8gV2UgaGF2ZSByZXBsYWNlZCBleGVjdmUoKSB3aXRoIGV4ZWN2KCkgZm9yIFdlYktpdCB0
byBhdm9pZCB1c2luZwotICAvLyBlbnZpcm9uLiBJdCBzaG91bGQgYmUgc2FmZSBiZWNhdXNlIGV4
ZWN2KCkgaXMganVzdCBhIHNpbXBsZSB3cmFwcGVyCi0gIC8vIG9mIGV4ZWN2ZSgpLgotICBleGVj
dihhcmdzLT5hcmd2WzBdLCBhcmdzLT5hcmd2KTsKLSAgRGVhdGhUZXN0QWJvcnQoU3RyaW5nOjpG
b3JtYXQoImV4ZWN2KCVzLCAuLi4pIGluICVzIGZhaWxlZDogJXMiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhcmdzLT5hcmd2WzBdLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcmlnaW5hbF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdl
dExhc3RFcnJub0Rlc2NyaXB0aW9uKCkuY19zdHIoKSkpOworICBleGVjdmUoYXJncy0+YXJndlsw
XSwgYXJncy0+YXJndiwgR2V0RW52aXJvbigpKTsKKyAgRGVhdGhUZXN0QWJvcnQoc3RkOjpzdHJp
bmcoImV4ZWN2ZSgiKSArIGFyZ3MtPmFyZ3ZbMF0gKyAiLCAuLi4pIGluICIgKworICAgICAgICAg
ICAgICAgICBvcmlnaW5hbF9kaXIgKyAiIGZhaWxlZDogIiArCisgICAgICAgICAgICAgICAgIEdl
dExhc3RFcnJub0Rlc2NyaXB0aW9uKCkpOwogICByZXR1cm4gRVhJVF9GQUlMVVJFOwogfQorIyAg
ZW5kaWYgIC8vICFHVEVTVF9PU19RTlgKIAorIyAgaWYgR1RFU1RfSEFTX0NMT05FCiAvLyBUd28g
dXRpbGl0eSByb3V0aW5lcyB0aGF0IHRvZ2V0aGVyIGRldGVybWluZSB0aGUgZGlyZWN0aW9uIHRo
ZSBzdGFjawogLy8gZ3Jvd3MuCiAvLyBUaGlzIGNvdWxkIGJlIGFjY29tcGxpc2hlZCBtb3JlIGVs
ZWdhbnRseSBieSBhIHNpbmdsZSByZWN1cnNpdmUKIC8vIGZ1bmN0aW9uLCBidXQgd2Ugd2FudCB0
byBndWFyZCBhZ2FpbnN0IHRoZSB1bmxpa2VseSBwb3NzaWJpbGl0eSBvZgogLy8gYSBzbWFydCBj
b21waWxlciBvcHRpbWl6aW5nIHRoZSByZWN1cnNpb24gYXdheS4KLWJvb2wgU3RhY2tMb3dlclRo
YW5BZGRyZXNzKGNvbnN0IHZvaWQqIHB0cikgeworLy8KKy8vIEdURVNUX05PX0lOTElORV8gaXMg
cmVxdWlyZWQgdG8gcHJldmVudCBHQ0MgNC42IGZyb20gaW5saW5pbmcKKy8vIFN0YWNrTG93ZXJU
aGFuQWRkcmVzcyBpbnRvIFN0YWNrR3Jvd3NEb3duLCB3aGljaCB0aGVuIGRvZXNuJ3QgZ2l2ZQor
Ly8gY29ycmVjdCBhbnN3ZXIuCitzdGF0aWMgdm9pZCBTdGFja0xvd2VyVGhhbkFkZHJlc3MoY29u
c3Qgdm9pZCogcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wqIHJl
c3VsdCkgR1RFU1RfTk9fSU5MSU5FXzsKK3N0YXRpYyB2b2lkIFN0YWNrTG93ZXJUaGFuQWRkcmVz
cyhjb25zdCB2b2lkKiBwdHIsIGJvb2wqIHJlc3VsdCkgewogICBpbnQgZHVtbXk7Ci0gIHJldHVy
biAmZHVtbXkgPCBwdHI7CisgICpyZXN1bHQgPSAoJmR1bW15IDwgcHRyKTsKIH0KIAotYm9vbCBT
dGFja0dyb3dzRG93bigpIHsKKy8vIE1ha2Ugc3VyZSBBZGRyZXNzU2FuaXRpemVyIGRvZXMgbm90
IHRhbXBlciB3aXRoIHRoZSBzdGFjayBoZXJlLgorR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpF
X0FERFJFU1NfCitzdGF0aWMgYm9vbCBTdGFja0dyb3dzRG93bigpIHsKICAgaW50IGR1bW15Owot
ICByZXR1cm4gU3RhY2tMb3dlclRoYW5BZGRyZXNzKCZkdW1teSk7CisgIGJvb2wgcmVzdWx0Owor
ICBTdGFja0xvd2VyVGhhbkFkZHJlc3MoJmR1bW15LCAmcmVzdWx0KTsKKyAgcmV0dXJuIHJlc3Vs
dDsKIH0KLQotLy8gQSB0aHJlYWRzYWZlIGltcGxlbWVudGF0aW9uIG9mIGZvcmsoMikgZm9yIHRo
cmVhZHNhZmUtc3R5bGUgZGVhdGggdGVzdHMKLS8vIHRoYXQgdXNlcyBjbG9uZSgyKS4gIEl0IGRp
ZXMgd2l0aCBhbiBlcnJvciBtZXNzYWdlIGlmIGFueXRoaW5nIGdvZXMKLS8vIHdyb25nLgotc3Rh
dGljIHBpZF90IEV4ZWNEZWF0aFRlc3RGb3JrKGNoYXIqIGNvbnN0KiBhcmd2LCBpbnQgY2xvc2Vf
ZmQpIHsKKyMgIGVuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUKKworLy8gU3Bhd25zIGEgY2hpbGQg
cHJvY2VzcyB3aXRoIHRoZSBzYW1lIGV4ZWN1dGFibGUgYXMgdGhlIGN1cnJlbnQgcHJvY2VzcyBp
bgorLy8gYSB0aHJlYWQtc2FmZSBtYW5uZXIgYW5kIGluc3RydWN0cyBpdCB0byBydW4gdGhlIGRl
YXRoIHRlc3QuICBUaGUKKy8vIGltcGxlbWVudGF0aW9uIHVzZXMgZm9yaygyKSArIGV4ZWMuICBP
biBzeXN0ZW1zIHdoZXJlIGNsb25lKDIpIGlzCisvLyBhdmFpbGFibGUsIGl0IGlzIHVzZWQgaW5z
dGVhZCwgYmVpbmcgc2xpZ2h0bHkgbW9yZSB0aHJlYWQtc2FmZS4gIE9uIFFOWCwKKy8vIGZvcmsg
c3VwcG9ydHMgb25seSBzaW5nbGUtdGhyZWFkZWQgZW52aXJvbm1lbnRzLCBzbyB0aGlzIGZ1bmN0
aW9uIHVzZXMKKy8vIHNwYXduKDIpIHRoZXJlIGluc3RlYWQuICBUaGUgZnVuY3Rpb24gZGllcyB3
aXRoIGFuIGVycm9yIG1lc3NhZ2UgaWYKKy8vIGFueXRoaW5nIGdvZXMgd3JvbmcuCitzdGF0aWMg
cGlkX3QgRXhlY0RlYXRoVGVzdFNwYXduQ2hpbGQoY2hhciogY29uc3QqIGFyZ3YsIGludCBjbG9z
ZV9mZCkgewogICBFeGVjRGVhdGhUZXN0QXJncyBhcmdzID0geyBhcmd2LCBjbG9zZV9mZCB9Owog
ICBwaWRfdCBjaGlsZF9waWQgPSAtMTsKIAotI2lmIEdURVNUX0hBU19DTE9ORQorIyAgaWYgR1RF
U1RfT1NfUU5YCisgIC8vIE9idGFpbnMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGFuZCBzZXRzIGl0
IHRvIGJlIGNsb3NlZCBpbiB0aGUgY2hpbGQKKyAgLy8gcHJvY2Vzcy4KKyAgY29uc3QgaW50IGN3
ZF9mZCA9IG9wZW4oIi4iLCBPX1JET05MWSk7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGN3
ZF9mZCAhPSAtMSk7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oZmNudGwoY3dk
X2ZkLCBGX1NFVEZELCBGRF9DTE9FWEVDKSk7CisgIC8vIFdlIG5lZWQgdG8gZXhlY3V0ZSB0aGUg
dGVzdCBwcm9ncmFtIGluIHRoZSBzYW1lIGVudmlyb25tZW50IHdoZXJlCisgIC8vIGl0IHdhcyBv
cmlnaW5hbGx5IGludm9rZWQuICBUaGVyZWZvcmUgd2UgY2hhbmdlIHRvIHRoZSBvcmlnaW5hbAor
ICAvLyB3b3JraW5nIGRpcmVjdG9yeSBmaXJzdC4KKyAgY29uc3QgY2hhciogY29uc3Qgb3JpZ2lu
YWxfZGlyID0KKyAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5n
X2RpcigpOworICAvLyBXZSBjYW4gc2FmZWx5IGNhbGwgY2hkaXIoKSBhcyBpdCdzIGEgZGlyZWN0
IHN5c3RlbSBjYWxsLgorICBpZiAoY2hkaXIob3JpZ2luYWxfZGlyKSAhPSAwKSB7CisgICAgRGVh
dGhUZXN0QWJvcnQoc3RkOjpzdHJpbmcoImNoZGlyKFwiIikgKyBvcmlnaW5hbF9kaXIgKyAiXCIp
IGZhaWxlZDogIiArCisgICAgICAgICAgICAgICAgICAgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24o
KSk7CisgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgfQorCisgIGludCBmZF9mbGFnczsKKyAg
Ly8gU2V0IGNsb3NlX2ZkIHRvIGJlIGNsb3NlZCBhZnRlciBzcGF3bi4KKyAgR1RFU1RfREVBVEhf
VEVTVF9DSEVDS19TWVNDQUxMXyhmZF9mbGFncyA9IGZjbnRsKGNsb3NlX2ZkLCBGX0dFVEZEKSk7
CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oZmNudGwoY2xvc2VfZmQsIEZfU0VU
RkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRfZmxhZ3MgfCBG
RF9DTE9FWEVDKSk7CisgIHN0cnVjdCBpbmhlcml0YW5jZSBpbmhlcml0ID0gezB9OworICAvLyBz
cGF3biBpcyBhIHN5c3RlbSBjYWxsLgorICBjaGlsZF9waWQgPSBzcGF3bihhcmdzLmFyZ3ZbMF0s
IDAsIE5VTEwsICZpbmhlcml0LCBhcmdzLmFyZ3YsIEdldEVudmlyb24oKSk7CisgIC8vIFJlc3Rv
cmVzIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorICBHVEVTVF9ERUFUSF9URVNUX0NI
RUNLXyhmY2hkaXIoY3dkX2ZkKSAhPSAtMSk7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lT
Q0FMTF8oY2xvc2UoY3dkX2ZkKSk7CisKKyMgIGVsc2UgICAvLyBHVEVTVF9PU19RTlgKKyMgICBp
ZiBHVEVTVF9PU19MSU5VWAorICAvLyBXaGVuIGEgU0lHUFJPRiBzaWduYWwgaXMgcmVjZWl2ZWQg
d2hpbGUgZm9yaygpIG9yIGNsb25lKCkgYXJlIGV4ZWN1dGluZywKKyAgLy8gdGhlIHByb2Nlc3Mg
bWF5IGhhbmcuIFRvIGF2b2lkIHRoaXMsIHdlIGlnbm9yZSBTSUdQUk9GIGhlcmUgYW5kIHJlLWVu
YWJsZQorICAvLyBpdCBhZnRlciB0aGUgY2FsbCB0byBmb3JrKCkvY2xvbmUoKSBpcyBjb21wbGV0
ZS4KKyAgc3RydWN0IHNpZ2FjdGlvbiBzYXZlZF9zaWdwcm9mX2FjdGlvbjsKKyAgc3RydWN0IHNp
Z2FjdGlvbiBpZ25vcmVfc2lncHJvZl9hY3Rpb247CisgIG1lbXNldCgmaWdub3JlX3NpZ3Byb2Zf
YWN0aW9uLCAwLCBzaXplb2YoaWdub3JlX3NpZ3Byb2ZfYWN0aW9uKSk7CisgIHNpZ2VtcHR5c2V0
KCZpZ25vcmVfc2lncHJvZl9hY3Rpb24uc2FfbWFzayk7CisgIGlnbm9yZV9zaWdwcm9mX2FjdGlv
bi5zYV9oYW5kbGVyID0gU0lHX0lHTjsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxM
XyhzaWdhY3Rpb24oCisgICAgICBTSUdQUk9GLCAmaWdub3JlX3NpZ3Byb2ZfYWN0aW9uLCAmc2F2
ZWRfc2lncHJvZl9hY3Rpb24pKTsKKyMgICBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKKworIyAg
IGlmIEdURVNUX0hBU19DTE9ORQogICBjb25zdCBib29sIHVzZV9mb3JrID0gR1RFU1RfRkxBRyhk
ZWF0aF90ZXN0X3VzZV9mb3JrKTsKIAogICBpZiAoIXVzZV9mb3JrKSB7CkBAIC05MDAsMjEgKzEy
OTEsMzcgQEAgc3RhdGljIHBpZF90IEV4ZWNEZWF0aFRlc3RGb3JrKGNoYXIqIGNvbnN0KiBhcmd2
LCBpbnQgY2xvc2VfZmQpIHsKICAgICB2b2lkKiBjb25zdCBzdGFjayA9IG1tYXAoTlVMTCwgc3Rh
Y2tfc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTUFQX0FOT04gfCBNQVBfUFJJVkFURSwgLTEsIDApOwogICAgIEdURVNUX0RFQVRIX1RF
U1RfQ0hFQ0tfKHN0YWNrICE9IE1BUF9GQUlMRUQpOworCisgICAgLy8gTWF4aW11bSBzdGFjayBh
bGlnbm1lbnQgaW4gYnl0ZXM6ICBGb3IgYSBkb3dud2FyZC1ncm93aW5nIHN0YWNrLCB0aGlzCisg
ICAgLy8gYW1vdW50IGlzIHN1YnRyYWN0ZWQgZnJvbSBzaXplIG9mIHRoZSBzdGFjayBzcGFjZSB0
byBnZXQgYW4gYWRkcmVzcworICAgIC8vIHRoYXQgaXMgd2l0aGluIHRoZSBzdGFjayBzcGFjZSBh
bmQgaXMgYWxpZ25lZCBvbiBhbGwgc3lzdGVtcyB3ZSBjYXJlCisgICAgLy8gYWJvdXQuICBBcyBm
YXIgYXMgSSBrbm93IHRoZXJlIGlzIG5vIEFCSSB3aXRoIHN0YWNrIGFsaWdubWVudCBncmVhdGVy
CisgICAgLy8gdGhhbiA2NC4gIFdlIGFzc3VtZSBzdGFjayBhbmQgc3RhY2tfc2l6ZSBhbHJlYWR5
IGhhdmUgYWxpZ25tZW50IG9mCisgICAgLy8ga01heFN0YWNrQWxpZ25tZW50LgorICAgIGNvbnN0
IHNpemVfdCBrTWF4U3RhY2tBbGlnbm1lbnQgPSA2NDsKICAgICB2b2lkKiBjb25zdCBzdGFja190
b3AgPQotICAgICAgICBzdGF0aWNfY2FzdDxjaGFyKj4oc3RhY2spICsgKHN0YWNrX2dyb3dzX2Rv
d24gPyBzdGFja19zaXplIDogMCk7CisgICAgICAgIHN0YXRpY19jYXN0PGNoYXIqPihzdGFjaykg
KworICAgICAgICAgICAgKHN0YWNrX2dyb3dzX2Rvd24gPyBzdGFja19zaXplIC0ga01heFN0YWNr
QWxpZ25tZW50IDogMCk7CisgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhY2tfc2l6ZSA+
IGtNYXhTdGFja0FsaWdubWVudCAmJgorICAgICAgICByZWludGVycHJldF9jYXN0PGludHB0cl90
PihzdGFja190b3ApICUga01heFN0YWNrQWxpZ25tZW50ID09IDApOwogCiAgICAgY2hpbGRfcGlk
ID0gY2xvbmUoJkV4ZWNEZWF0aFRlc3RDaGlsZE1haW4sIHN0YWNrX3RvcCwgU0lHQ0hMRCwgJmFy
Z3MpOwogCiAgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18obXVubWFwKHN0YWNrLCBzdGFja19z
aXplKSAhPSAtMSk7CiAgIH0KLSNlbHNlCisjICAgZWxzZQogICBjb25zdCBib29sIHVzZV9mb3Jr
ID0gdHJ1ZTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NMT05FCisjICAgZW5kaWYgIC8vIEdURVNU
X0hBU19DTE9ORQogCiAgIGlmICh1c2VfZm9yayAmJiAoY2hpbGRfcGlkID0gZm9yaygpKSA9PSAw
KSB7CiAgICAgICBFeGVjRGVhdGhUZXN0Q2hpbGRNYWluKCZhcmdzKTsKICAgICAgIF9leGl0KDAp
OwogICB9CisjICBlbmRpZiAgLy8gR1RFU1RfT1NfUU5YCisjICBpZiBHVEVTVF9PU19MSU5VWAor
ICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKAorICAgICAgc2lnYWN0aW9uKFNJR1BS
T0YsICZzYXZlZF9zaWdwcm9mX2FjdGlvbiwgTlVMTCkpOworIyAgZW5kaWYgIC8vIEdURVNUX09T
X0xJTlVYCiAKICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oY2hpbGRfcGlkICE9IC0xKTsKICAg
cmV0dXJuIGNoaWxkX3BpZDsKQEAgLTk0MiwxNiArMTM0OSwxNiBAQCBEZWF0aFRlc3Q6OlRlc3RS
b2xlIEV4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAgIC8vIGl0IGJlIGNsb3NlZCB3aGVu
IHRoZSBjaGlsZCBwcm9jZXNzIGRvZXMgYW4gZXhlYzoKICAgR1RFU1RfREVBVEhfVEVTVF9DSEVD
S18oZmNudGwocGlwZV9mZFsxXSwgRl9TRVRGRCwgMCkgIT0gLTEpOwogCi0gIGNvbnN0IFN0cmlu
ZyBmaWx0ZXJfZmxhZyA9Ci0gICAgICBTdHJpbmc6OkZvcm1hdCgiLS0lcyVzPSVzLiVzIiwKLSAg
ICAgICAgICAgICAgICAgICAgIEdURVNUX0ZMQUdfUFJFRklYXywga0ZpbHRlckZsYWcsCi0gICAg
ICAgICAgICAgICAgICAgICBpbmZvLT50ZXN0X2Nhc2VfbmFtZSgpLCBpbmZvLT5uYW1lKCkpOwot
ICBjb25zdCBTdHJpbmcgaW50ZXJuYWxfZmxhZyA9Ci0gICAgICBTdHJpbmc6OkZvcm1hdCgiLS0l
cyVzPSVzfCVkfCVkfCVkIiwKLSAgICAgICAgICAgICAgICAgICAgIEdURVNUX0ZMQUdfUFJFRklY
Xywga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZywKLSAgICAgICAgICAgICAgICAgICAgIGZpbGVf
LCBsaW5lXywgZGVhdGhfdGVzdF9pbmRleCwgcGlwZV9mZFsxXSk7CisgIGNvbnN0IHN0ZDo6c3Ry
aW5nIGZpbHRlcl9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIpICsgR1RFU1RfRkxBR19Q
UkVGSVhfICsga0ZpbHRlckZsYWcgKyAiPSIKKyAgICAgICsgaW5mby0+dGVzdF9jYXNlX25hbWUo
KSArICIuIiArIGluZm8tPm5hbWUoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgaW50ZXJuYWxfZmxh
ZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0iKSArIEdURVNUX0ZMQUdfUFJFRklYXyArIGtJbnRl
cm5hbFJ1bkRlYXRoVGVzdEZsYWcgKyAiPSIKKyAgICAgICsgZmlsZV8gKyAifCIgKyBTdHJlYW1h
YmxlVG9TdHJpbmcobGluZV8pICsgInwiCisgICAgICArIFN0cmVhbWFibGVUb1N0cmluZyhkZWF0
aF90ZXN0X2luZGV4KSArICJ8IgorICAgICAgKyBTdHJlYW1hYmxlVG9TdHJpbmcocGlwZV9mZFsx
XSk7CiAgIEFyZ3VtZW50cyBhcmdzOwotICBhcmdzLkFkZEFyZ3VtZW50cyhHZXRBcmd2cygpKTsK
KyAgYXJncy5BZGRBcmd1bWVudHMoR2V0QXJndnNGb3JEZWF0aFRlc3RDaGlsZFByb2Nlc3MoKSk7
CiAgIGFyZ3MuQWRkQXJndW1lbnQoZmlsdGVyX2ZsYWcuY19zdHIoKSk7CiAgIGFyZ3MuQWRkQXJn
dW1lbnQoaW50ZXJuYWxfZmxhZy5jX3N0cigpKTsKIApAQCAtOTYyLDcgKzEzNjksNyBAQCBEZWF0
aFRlc3Q6OlRlc3RSb2xlIEV4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAgIC8vIGlzIG5l
Y2Vzc2FyeS4KICAgRmx1c2hJbmZvTG9nKCk7CiAKLSAgY29uc3QgcGlkX3QgY2hpbGRfcGlkID0g
RXhlY0RlYXRoVGVzdEZvcmsoYXJncy5Bcmd2KCksIHBpcGVfZmRbMF0pOworICBjb25zdCBwaWRf
dCBjaGlsZF9waWQgPSBFeGVjRGVhdGhUZXN0U3Bhd25DaGlsZChhcmdzLkFyZ3YoKSwgcGlwZV9m
ZFswXSk7CiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oY2xvc2UocGlwZV9mZFsx
XSkpOwogICBzZXRfY2hpbGRfcGlkKGNoaWxkX3BpZCk7CiAgIHNldF9yZWFkX2ZkKHBpcGVfZmRb
MF0pOwpAQCAtOTcwLDcgKzEzNzcsNyBAQCBEZWF0aFRlc3Q6OlRlc3RSb2xlIEV4ZWNEZWF0aFRl
c3Q6OkFzc3VtZVJvbGUoKSB7CiAgIHJldHVybiBPVkVSU0VFX1RFU1Q7CiB9CiAKLSNlbmRpZiAg
Ly8gIUdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCiAKIC8v
IENyZWF0ZXMgYSBjb25jcmV0ZSBEZWF0aFRlc3QtZGVyaXZlZCBjbGFzcyB0aGF0IGRlcGVuZHMg
b24gdGhlCiAvLyAtLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgZmxhZywgYW5kIHNldHMgdGhlIHBv
aW50ZXIgcG9pbnRlZCB0bwpAQCAtOTg4LDkgKzEzOTUsMTAgQEAgYm9vbCBEZWZhdWx0RGVhdGhU
ZXN0RmFjdG9yeTo6Q3JlYXRlKGNvbnN0IGNoYXIqIHN0YXRlbWVudCwgY29uc3QgUkUqIHJlZ2V4
LAogCiAgIGlmIChmbGFnICE9IE5VTEwpIHsKICAgICBpZiAoZGVhdGhfdGVzdF9pbmRleCA+IGZs
YWctPmluZGV4KCkpIHsKLSAgICAgIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNz
YWdlKFN0cmluZzo6Rm9ybWF0KAotICAgICAgICAgICJEZWF0aCB0ZXN0IGNvdW50ICglZCkgc29t
ZWhvdyBleGNlZWRlZCBleHBlY3RlZCBtYXhpbXVtICglZCkiLAotICAgICAgICAgIGRlYXRoX3Rl
c3RfaW5kZXgsIGZsYWctPmluZGV4KCkpKTsKKyAgICAgIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVh
dGhfdGVzdF9tZXNzYWdlKAorICAgICAgICAgICJEZWF0aCB0ZXN0IGNvdW50ICgiICsgU3RyZWFt
YWJsZVRvU3RyaW5nKGRlYXRoX3Rlc3RfaW5kZXgpCisgICAgICAgICAgKyAiKSBzb21laG93IGV4
Y2VlZGVkIGV4cGVjdGVkIG1heGltdW0gKCIKKyAgICAgICAgICArIFN0cmVhbWFibGVUb1N0cmlu
ZyhmbGFnLT5pbmRleCgpKSArICIpIik7CiAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBA
IC0xMDAxLDY0ICsxNDA5LDU2IEBAIGJvb2wgRGVmYXVsdERlYXRoVGVzdEZhY3Rvcnk6OkNyZWF0
ZShjb25zdCBjaGFyKiBzdGF0ZW1lbnQsIGNvbnN0IFJFKiByZWdleCwKICAgICB9CiAgIH0KIAot
I2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lORE9XUworCiAgIGlmIChHVEVT
VF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZlIiB8fAogICAgICAgR1RFU1Rf
RkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAiZmFzdCIpIHsKICAgICAqdGVzdCA9IG5ldyBXaW5k
b3dzRGVhdGhUZXN0KHN0YXRlbWVudCwgcmVnZXgsIGZpbGUsIGxpbmUpOwogICB9Ci0jZWxzZQor
CisjIGVsaWYgR1RFU1RfT1NfRlVDSFNJQQorCisgIGlmIChHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rf
c3R5bGUpID09ICJ0aHJlYWRzYWZlIiB8fAorICAgICAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0
eWxlKSA9PSAiZmFzdCIpIHsKKyAgICAqdGVzdCA9IG5ldyBGdWNoc2lhRGVhdGhUZXN0KHN0YXRl
bWVudCwgcmVnZXgsIGZpbGUsIGxpbmUpOworICB9CisKKyMgZWxzZQorCiAgIGlmIChHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZlIikgewogICAgICp0ZXN0ID0gbmV3
IEV4ZWNEZWF0aFRlc3Qoc3RhdGVtZW50LCByZWdleCwgZmlsZSwgbGluZSk7CiAgIH0gZWxzZSBp
ZiAoR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAiZmFzdCIpIHsKICAgICAqdGVzdCA9
IG5ldyBOb0V4ZWNEZWF0aFRlc3Qoc3RhdGVtZW50LCByZWdleCk7CiAgIH0KLSNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUworCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKICAgZWxz
ZSB7ICAvLyBOT0xJTlQgLSB0aGlzIGlzIG1vcmUgcmVhZGFibGUgdGhhbiB1bmJhbGFuY2VkIGJy
YWNrZXRzIGluc2lkZSAjaWYuCi0gICAgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90ZXN0X21l
c3NhZ2UoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICJVbmtub3duIGRlYXRoIHRlc3Qgc3R5bGUg
XCIlc1wiIGVuY291bnRlcmVkIiwKLSAgICAgICAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxl
KS5jX3N0cigpKSk7CisgICAgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2Uo
CisgICAgICAgICJVbmtub3duIGRlYXRoIHRlc3Qgc3R5bGUgXCIiICsgR1RFU1RfRkxBRyhkZWF0
aF90ZXN0X3N0eWxlKQorICAgICAgICArICJcIiBlbmNvdW50ZXJlZCIpOwogICAgIHJldHVybiBm
YWxzZTsKICAgfQogCiAgIHJldHVybiB0cnVlOwogfQogCi0vLyBTcGxpdHMgYSBnaXZlbiBzdHJp
bmcgb24gYSBnaXZlbiBkZWxpbWl0ZXIsIHBvcHVsYXRpbmcgYSBnaXZlbgotLy8gdmVjdG9yIHdp
dGggdGhlIGZpZWxkcy4gIEdURVNUX0hBU19ERUFUSF9URVNUIGltcGxpZXMgdGhhdCB3ZSBoYXZl
Ci0vLyA6OnN0ZDo6c3RyaW5nLCBzbyB3ZSBjYW4gdXNlIGl0IGhlcmUuCi1zdGF0aWMgdm9pZCBT
cGxpdFN0cmluZyhjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIsIGNoYXIgZGVsaW1pdGVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4qIGRlc3Qp
IHsKLSAgOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4gcGFyc2VkOwotICA6OnN0ZDo6c3Ry
aW5nOjpzaXplX3R5cGUgcG9zID0gMDsKLSAgd2hpbGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFs
d2F5c1RydWUoKSkgewotICAgIGNvbnN0IDo6c3RkOjpzdHJpbmc6OnNpemVfdHlwZSBjb2xvbiA9
IHN0ci5maW5kKGRlbGltaXRlciwgcG9zKTsKLSAgICBpZiAoY29sb24gPT0gOjpzdGQ6OnN0cmlu
Zzo6bnBvcykgewotICAgICAgcGFyc2VkLnB1c2hfYmFjayhzdHIuc3Vic3RyKHBvcykpOwotICAg
ICAgYnJlYWs7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHBhcnNlZC5wdXNoX2JhY2soc3RyLnN1YnN0
cihwb3MsIGNvbG9uIC0gcG9zKSk7Ci0gICAgICBwb3MgPSBjb2xvbiArIDE7Ci0gICAgfQotICB9
Ci0gIGRlc3QtPnN3YXAocGFyc2VkKTsKLX0KLQotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYg
R1RFU1RfT1NfV0lORE9XUwogLy8gUmVjcmVhdGVzIHRoZSBwaXBlIGFuZCBldmVudCBoYW5kbGVz
IGZyb20gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMsCiAvLyBzaWduYWxzIHRoZSBldmVudCwgYW5k
IHJldHVybnMgYSBmaWxlIGRlc2NyaXB0b3Igd3JhcHBlZCBhcm91bmQgdGhlIHBpcGUKIC8vIGhh
bmRsZS4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gdGhlIGNoaWxkIHByb2Nlc3Mgb25seS4K
LWludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBpbnQgcGFyZW50X3Byb2Nlc3Nf
aWQsCitzdGF0aWMgaW50IEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9yKHVuc2lnbmVkIGludCBwYXJl
bnRfcHJvY2Vzc19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgd3JpdGVf
aGFuZGxlX2FzX3NpemVfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZXZl
bnRfaGFuZGxlX2FzX3NpemVfdCkgewogICBBdXRvSGFuZGxlIHBhcmVudF9wcm9jZXNzX2hhbmRs
ZSg6Ok9wZW5Qcm9jZXNzKFBST0NFU1NfRFVQX0hBTkRMRSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCAgLy8gTm9uLWluaGVyaXRhYmxl
LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
ZW50X3Byb2Nlc3NfaWQpKTsKICAgaWYgKHBhcmVudF9wcm9jZXNzX2hhbmRsZS5HZXQoKSA9PSBJ
TlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgIERlYXRoVGVzdEFib3J0KFN0cmluZzo6Rm9ybWF0
KCJVbmFibGUgdG8gb3BlbiBwYXJlbnQgcHJvY2VzcyAldSIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyZW50X3Byb2Nlc3NfaWQpKTsKKyAgICBEZWF0aFRlc3RBYm9ydCgi
VW5hYmxlIHRvIG9wZW4gcGFyZW50IHByb2Nlc3MgIiArCisgICAgICAgICAgICAgICAgICAgU3Ry
ZWFtYWJsZVRvU3RyaW5nKHBhcmVudF9wcm9jZXNzX2lkKSk7CiAgIH0KIAotICAvLyBUT0RPKHZs
YWRsQGdvb2dsZS5jb20pOiBSZXBsYWNlIHRoZSBmb2xsb3dpbmcgY2hlY2sgd2l0aCBhCisgIC8v
IEZJWE1FOiBSZXBsYWNlIHRoZSBmb2xsb3dpbmcgY2hlY2sgd2l0aCBhCiAgIC8vIGNvbXBpbGUt
dGltZSBhc3NlcnRpb24gd2hlbiBhdmFpbGFibGUuCiAgIEdURVNUX0NIRUNLXyhzaXplb2YoSEFO
RExFKSA8PSBzaXplb2Yoc2l6ZV90KSk7CiAKQEAgLTEwNjYsNyArMTQ2Niw3IEBAIGludCBHZXRT
dGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBpbnQgcGFyZW50X3Byb2Nlc3NfaWQsCiAgICAg
ICByZWludGVycHJldF9jYXN0PEhBTkRMRT4od3JpdGVfaGFuZGxlX2FzX3NpemVfdCk7CiAgIEhB
TkRMRSBkdXBfd3JpdGVfaGFuZGxlOwogCi0gIC8vIFRoZSBuZXdseSBpbml0aWFsaXplZCBoYW5k
bGUgaXMgYWNjZXNzaWJsZSBvbmx5IGluIGluIHRoZSBwYXJlbnQKKyAgLy8gVGhlIG5ld2x5IGlu
aXRpYWxpemVkIGhhbmRsZSBpcyBhY2Nlc3NpYmxlIG9ubHkgaW4gdGhlIHBhcmVudAogICAvLyBw
cm9jZXNzLiBUbyBvYnRhaW4gb25lIGFjY2Vzc2libGUgd2l0aGluIHRoZSBjaGlsZCwgd2UgbmVl
ZCB0byB1c2UKICAgLy8gRHVwbGljYXRlSGFuZGxlLgogICBpZiAoITo6RHVwbGljYXRlSGFuZGxl
KHBhcmVudF9wcm9jZXNzX2hhbmRsZS5HZXQoKSwgd3JpdGVfaGFuZGxlLApAQCAtMTA3NSw5ICsx
NDc1LDEwIEBAIGludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBpbnQgcGFyZW50
X3Byb2Nlc3NfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEVVBMSUNB
VEVfU0FNRV9BQ0NFU1MgaXMgdXNlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwg
IC8vIFJlcXVlc3Qgbm9uLWluaGVyaXRhYmxlIGhhbmRsZXIuCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFVQTElDQVRFX1NBTUVfQUNDRVNTKSkgewotICAgIERlYXRoVGVzdEFib3J0KFN0cmlu
Zzo6Rm9ybWF0KAotICAgICAgICAiVW5hYmxlIHRvIGR1cGxpY2F0ZSB0aGUgcGlwZSBoYW5kbGUg
JUl1IGZyb20gdGhlIHBhcmVudCBwcm9jZXNzICV1IiwKLSAgICAgICAgd3JpdGVfaGFuZGxlX2Fz
X3NpemVfdCwgcGFyZW50X3Byb2Nlc3NfaWQpKTsKKyAgICBEZWF0aFRlc3RBYm9ydCgiVW5hYmxl
IHRvIGR1cGxpY2F0ZSB0aGUgcGlwZSBoYW5kbGUgIiArCisgICAgICAgICAgICAgICAgICAgU3Ry
ZWFtYWJsZVRvU3RyaW5nKHdyaXRlX2hhbmRsZV9hc19zaXplX3QpICsKKyAgICAgICAgICAgICAg
ICAgICAiIGZyb20gdGhlIHBhcmVudCBwcm9jZXNzICIgKworICAgICAgICAgICAgICAgICAgIFN0
cmVhbWFibGVUb1N0cmluZyhwYXJlbnRfcHJvY2Vzc19pZCkpOwogICB9CiAKICAgY29uc3QgSEFO
RExFIGV2ZW50X2hhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPihldmVudF9oYW5kbGVf
YXNfc2l6ZV90KTsKQEAgLTEwODgsMTcgKzE0ODksMTggQEAgaW50IEdldFN0YXR1c0ZpbGVEZXNj
cmlwdG9yKHVuc2lnbmVkIGludCBwYXJlbnRfcHJvY2Vzc19pZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFVQTElDQVRFX1NBTUVfQUNDRVNTKSkgewotICAgIERlYXRoVGVzdEFi
b3J0KFN0cmluZzo6Rm9ybWF0KAotICAgICAgICAiVW5hYmxlIHRvIGR1cGxpY2F0ZSB0aGUgZXZl
bnQgaGFuZGxlICVJdSBmcm9tIHRoZSBwYXJlbnQgcHJvY2VzcyAldSIsCi0gICAgICAgIGV2ZW50
X2hhbmRsZV9hc19zaXplX3QsIHBhcmVudF9wcm9jZXNzX2lkKSk7CisgICAgRGVhdGhUZXN0QWJv
cnQoIlVuYWJsZSB0byBkdXBsaWNhdGUgdGhlIGV2ZW50IGhhbmRsZSAiICsKKyAgICAgICAgICAg
ICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcoZXZlbnRfaGFuZGxlX2FzX3NpemVfdCkgKworICAg
ICAgICAgICAgICAgICAgICIgZnJvbSB0aGUgcGFyZW50IHByb2Nlc3MgIiArCisgICAgICAgICAg
ICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHBhcmVudF9wcm9jZXNzX2lkKSk7CiAgIH0KIAog
ICBjb25zdCBpbnQgd3JpdGVfZmQgPQogICAgICAgOjpfb3Blbl9vc2ZoYW5kbGUocmVpbnRlcnBy
ZXRfY2FzdDxpbnRwdHJfdD4oZHVwX3dyaXRlX2hhbmRsZSksIE9fQVBQRU5EKTsKICAgaWYgKHdy
aXRlX2ZkID09IC0xKSB7Ci0gICAgRGVhdGhUZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQoCi0gICAg
ICAgICJVbmFibGUgdG8gY29udmVydCBwaXBlIGhhbmRsZSAlSXUgdG8gYSBmaWxlIGRlc2NyaXB0
b3IiLAotICAgICAgICB3cml0ZV9oYW5kbGVfYXNfc2l6ZV90KSk7CisgICAgRGVhdGhUZXN0QWJv
cnQoIlVuYWJsZSB0byBjb252ZXJ0IHBpcGUgaGFuZGxlICIgKworICAgICAgICAgICAgICAgICAg
IFN0cmVhbWFibGVUb1N0cmluZyh3cml0ZV9oYW5kbGVfYXNfc2l6ZV90KSArCisgICAgICAgICAg
ICAgICAgICAgIiB0byBhIGZpbGUgZGVzY3JpcHRvciIpOwogICB9CiAKICAgLy8gU2lnbmFscyB0
aGUgcGFyZW50IHRoYXQgdGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlwZSBoYXMgYmVlbiBhY3F1aXJl
ZApAQCAtMTEwNyw3ICsxNTA5LDcgQEAgaW50IEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9yKHVuc2ln
bmVkIGludCBwYXJlbnRfcHJvY2Vzc19pZCwKIAogICByZXR1cm4gd3JpdGVfZmQ7CiB9Ci0jZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAog
Ly8gUmV0dXJucyBhIG5ld2x5IGNyZWF0ZWQgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnIG9iamVj
dCB3aXRoIGZpZWxkcwogLy8gaW5pdGlhbGl6ZWQgZnJvbSB0aGUgR1RFU1RfRkxBRyhpbnRlcm5h
bF9ydW5fZGVhdGhfdGVzdCkgZmxhZyBpZgpAQCAtMTEyMyw3ICsxNTI1LDggQEAgSW50ZXJuYWxS
dW5EZWF0aFRlc3RGbGFnKiBQYXJzZUludGVybmFsUnVuRGVhdGhUZXN0RmxhZygpIHsKICAgU3Bs
aXRTdHJpbmcoR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkuY19zdHIoKSwgJ3wn
LCAmZmllbGRzKTsKICAgaW50IHdyaXRlX2ZkID0gLTE7CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dT
CisjIGlmIEdURVNUX09TX1dJTkRPV1MKKwogICB1bnNpZ25lZCBpbnQgcGFyZW50X3Byb2Nlc3Nf
aWQgPSAwOwogICBzaXplX3Qgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCA9IDA7CiAgIHNpemVfdCBl
dmVudF9oYW5kbGVfYXNfc2l6ZV90ID0gMDsKQEAgLTExMzQsMjMgKzE1MzcsMzQgQEAgSW50ZXJu
YWxSdW5EZWF0aFRlc3RGbGFnKiBQYXJzZUludGVybmFsUnVuRGVhdGhUZXN0RmxhZygpIHsKICAg
ICAgIHx8ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmllbGRzWzNdLCAmcGFyZW50X3Byb2Nlc3NfaWQp
CiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1s0XSwgJndyaXRlX2hhbmRsZV9h
c19zaXplX3QpCiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1s1XSwgJmV2ZW50
X2hhbmRsZV9hc19zaXplX3QpKSB7Ci0gICAgRGVhdGhUZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQo
Ci0gICAgICAgICJCYWQgLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFnOiAlcyIs
Ci0gICAgICAgIEdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpLmNfc3RyKCkpKTsK
KyAgICBEZWF0aFRlc3RBYm9ydCgiQmFkIC0tZ3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3Qg
ZmxhZzogIiArCisgICAgICAgICAgICAgICAgICAgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVh
dGhfdGVzdCkpOwogICB9CiAgIHdyaXRlX2ZkID0gR2V0U3RhdHVzRmlsZURlc2NyaXB0b3IocGFy
ZW50X3Byb2Nlc3NfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3Jp
dGVfaGFuZGxlX2FzX3NpemVfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBldmVudF9oYW5kbGVfYXNfc2l6ZV90KTsKLSNlbHNlCisKKyMgZWxpZiBHVEVTVF9PU19GVUNI
U0lBCisKKyAgaWYgKGZpZWxkcy5zaXplKCkgIT0gMworICAgICAgfHwgIVBhcnNlTmF0dXJhbE51
bWJlcihmaWVsZHNbMV0sICZsaW5lKQorICAgICAgfHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVs
ZHNbMl0sICZpbmRleCkpIHsKKyAgICBEZWF0aFRlc3RBYm9ydCgiQmFkIC0tZ3Rlc3RfaW50ZXJu
YWxfcnVuX2RlYXRoX3Rlc3QgZmxhZzogIgorICAgICAgICArIEdURVNUX0ZMQUcoaW50ZXJuYWxf
cnVuX2RlYXRoX3Rlc3QpKTsKKyAgfQorCisjIGVsc2UKKwogICBpZiAoZmllbGRzLnNpemUoKSAh
PSA0CiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1sxXSwgJmxpbmUpCiAgICAg
ICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1syXSwgJmluZGV4KQogICAgICAgfHwgIVBh
cnNlTmF0dXJhbE51bWJlcihmaWVsZHNbM10sICZ3cml0ZV9mZCkpIHsKLSAgICBEZWF0aFRlc3RB
Ym9ydChTdHJpbmc6OkZvcm1hdCgKLSAgICAgICAgIkJhZCAtLWd0ZXN0X2ludGVybmFsX3J1bl9k
ZWF0aF90ZXN0IGZsYWc6ICVzIiwKLSAgICAgICAgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVh
dGhfdGVzdCkuY19zdHIoKSkpOworICAgIERlYXRoVGVzdEFib3J0KCJCYWQgLS1ndGVzdF9pbnRl
cm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFnOiAiCisgICAgICAgICsgR1RFU1RfRkxBRyhpbnRlcm5h
bF9ydW5fZGVhdGhfdGVzdCkpOwogICB9Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKwor
IyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCiAgIHJldHVybiBuZXcgSW50ZXJuYWxSdW5E
ZWF0aFRlc3RGbGFnKGZpZWxkc1swXSwgbGluZSwgaW5kZXgsIHdyaXRlX2ZkKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWZpbGVwYXRoLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWZpbGVwYXRoLmNjCmluZGV4IGMxZWY5
MTg4YWQ4NWFiOGEwNDdhMzNiZjk5NDVlMWNkMGNjNzNlZmYuLmE3ZTY1YzA4MmE3NWZjNmZiMDM4
YTAyM2Q1YjFkM2UwOWU0NzlmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NyYy9ndGVzdC1maWxlcGF0aC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMv
Z3Rlc3QtZmlsZXBhdGguY2MKQEAgLTI2LDM5ICsyNiwzOCBAQAogLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcnM6IGtlaXRoLnJheUBn
bWFpbC5jb20gKEtlaXRoIFJheSkKIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWZp
bGVwYXRoLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorI2luY2x1
ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgiCiAKICNpbmNsdWRlIDxzdGRsaWIu
aD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QtbWVzc2FnZS5oIgogCiAjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSNpbmNs
dWRlIDx3aW5kb3dzLmg+CisjIGluY2x1ZGUgPHdpbmRvd3MuaD4KICNlbGlmIEdURVNUX09TX1dJ
TkRPV1MKLSNpbmNsdWRlIDxkaXJlY3QuaD4KLSNpbmNsdWRlIDxpby5oPgorIyBpbmNsdWRlIDxk
aXJlY3QuaD4KKyMgaW5jbHVkZSA8aW8uaD4KICNlbGlmIEdURVNUX09TX1NZTUJJQU4KIC8vIFN5
bWJpYW4gT3BlbkMgaGFzIFBBVEhfTUFYIGluIHN5cy9zeXNsaW1pdHMuaAotI2luY2x1ZGUgPHN5
cy9zeXNsaW1pdHMuaD4KKyMgaW5jbHVkZSA8c3lzL3N5c2xpbWl0cy5oPgogI2Vsc2UKLSNpbmNs
dWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxjbGltaXRzPiAgLy8gU29tZSBMaW51eCBkaXN0cmli
dXRpb25zIGRlZmluZSBQQVRIX01BWCBoZXJlLgorIyBpbmNsdWRlIDxsaW1pdHMuaD4KKyMgaW5j
bHVkZSA8Y2xpbWl0cz4gIC8vIFNvbWUgTGludXggZGlzdHJpYnV0aW9ucyBkZWZpbmUgUEFUSF9N
QVggaGVyZS4KICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIAorI2luY2x1ZGUg
Imd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgorCiAjaWYgR1RFU1RfT1NfV0lORE9XUwot
I2RlZmluZSBHVEVTVF9QQVRIX01BWF8gX01BWF9QQVRICisjIGRlZmluZSBHVEVTVF9QQVRIX01B
WF8gX01BWF9QQVRICiAjZWxpZiBkZWZpbmVkKFBBVEhfTUFYKQotI2RlZmluZSBHVEVTVF9QQVRI
X01BWF8gUEFUSF9NQVgKKyMgZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBQQVRIX01BWAogI2VsaWYg
ZGVmaW5lZChfWE9QRU5fUEFUSF9NQVgpCi0jZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBfWE9QRU5f
UEFUSF9NQVgKKyMgZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBfWE9QRU5fUEFUSF9NQVgKICNlbHNl
Ci0jZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBfUE9TSVhfUEFUSF9NQVgKKyMgZGVmaW5lIEdURVNU
X1BBVEhfTUFYXyBfUE9TSVhfUEFUSF9NQVgKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwog
Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+Ci0KIG5hbWVzcGFjZSB0
ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKQEAgLTY5LDIxICs2OCwxOSBAQCBuYW1l
c3BhY2UgaW50ZXJuYWwgewogLy8gb2YgdGhlbS4KIGNvbnN0IGNoYXIga1BhdGhTZXBhcmF0b3Ig
PSAnXFwnOwogY29uc3QgY2hhciBrQWx0ZXJuYXRlUGF0aFNlcGFyYXRvciA9ICcvJzsKLWNvbnN0
IGNoYXIga1BhdGhTZXBhcmF0b3JTdHJpbmdbXSA9ICJcXCI7CiBjb25zdCBjaGFyIGtBbHRlcm5h
dGVQYXRoU2VwYXJhdG9yU3RyaW5nW10gPSAiLyI7Ci0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIC8vIFdpbmRvd3MgQ0UgZG9lc24ndCBo
YXZlIGEgY3VycmVudCBkaXJlY3RvcnkuIFlvdSBzaG91bGQgbm90IHVzZQogLy8gdGhlIGN1cnJl
bnQgZGlyZWN0b3J5IGluIHRlc3RzIG9uIFdpbmRvd3MgQ0UsIGJ1dCB0aGlzIGF0IGxlYXN0CiAv
LyBwcm92aWRlcyBhIHJlYXNvbmFibGUgZmFsbGJhY2suCiBjb25zdCBjaGFyIGtDdXJyZW50RGly
ZWN0b3J5U3RyaW5nW10gPSAiXFwiOwogLy8gV2luZG93cyBDRSBkb2Vzbid0IGRlZmluZSBJTlZB
TElEX0ZJTEVfQVRUUklCVVRFUwogY29uc3QgRFdPUkQga0ludmFsaWRGaWxlQXR0cmlidXRlcyA9
IDB4ZmZmZmZmZmY7Ci0jZWxzZQorIyBlbHNlCiBjb25zdCBjaGFyIGtDdXJyZW50RGlyZWN0b3J5
U3RyaW5nW10gPSAiLlxcIjsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMg
ZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAjZWxzZQogY29uc3QgY2hhciBrUGF0
aFNlcGFyYXRvciA9ICcvJzsKLWNvbnN0IGNoYXIga1BhdGhTZXBhcmF0b3JTdHJpbmdbXSA9ICIv
IjsKIGNvbnN0IGNoYXIga0N1cnJlbnREaXJlY3RvcnlTdHJpbmdbXSA9ICIuLyI7CiAjZW5kaWYg
IC8vIEdURVNUX09TX1dJTkRPV1MKIApAQCAtOTgsNyArOTUsNyBAQCBzdGF0aWMgYm9vbCBJc1Bh
dGhTZXBhcmF0b3IoY2hhciBjKSB7CiAKIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgd29ya2luZyBk
aXJlY3RvcnksIG9yICIiIGlmIHVuc3VjY2Vzc2Z1bC4KIEZpbGVQYXRoIEZpbGVQYXRoOjpHZXRD
dXJyZW50RGlyKCkgewotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjaWYgR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUgfHwgR1RFU1RfT1NfV0lORE9XU19QSE9ORSB8fCBHVEVTVF9PU19XSU5E
T1dTX1JUCiAgIC8vIFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlIGEgY3VycmVudCBkaXJlY3Rvcnks
IHNvIHdlIGp1c3QgcmV0dXJuCiAgIC8vIHNvbWV0aGluZyByZWFzb25hYmxlLgogICByZXR1cm4g
RmlsZVBhdGgoa0N1cnJlbnREaXJlY3RvcnlTdHJpbmcpOwpAQCAtMTA3LDcgKzEwNCwxNCBAQCBG
aWxlUGF0aCBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpIHsKICAgcmV0dXJuIEZpbGVQYXRoKF9n
ZXRjd2QoY3dkLCBzaXplb2YoY3dkKSkgPT0gTlVMTCA/ICIiIDogY3dkKTsKICNlbHNlCiAgIGNo
YXIgY3dkW0dURVNUX1BBVEhfTUFYXyArIDFdID0geyAnXDAnIH07Ci0gIHJldHVybiBGaWxlUGF0
aChnZXRjd2QoY3dkLCBzaXplb2YoY3dkKSkgPT0gTlVMTCA/ICIiIDogY3dkKTsKKyAgY2hhciog
cmVzdWx0ID0gZ2V0Y3dkKGN3ZCwgc2l6ZW9mKGN3ZCkpOworIyBpZiBHVEVTVF9PU19OQUNMCisg
IC8vIGdldGN3ZCB3aWxsIGxpa2VseSBmYWlsIGluIE5hQ2wgZHVlIHRvIHRoZSBzYW5kYm94LCBz
byByZXR1cm4gc29tZXRoaW5nCisgIC8vIHJlYXNvbmFibGUuIFRoZSB1c2VyIG1heSBoYXZlIHBy
b3ZpZGVkIGEgc2hpbSBpbXBsZW1lbnRhdGlvbiBmb3IgZ2V0Y3dkLAorICAvLyBob3dldmVyLCBz
byBmYWxsYmFjayBvbmx5IHdoZW4gZmFpbHVyZSBpcyBkZXRlY3RlZC4KKyAgcmV0dXJuIEZpbGVQ
YXRoKHJlc3VsdCA9PSBOVUxMID8ga0N1cnJlbnREaXJlY3RvcnlTdHJpbmcgOiBjd2QpOworIyBl
bmRpZiAgLy8gR1RFU1RfT1NfTkFDTAorICByZXR1cm4gRmlsZVBhdGgocmVzdWx0ID09IE5VTEwg
PyAiIiA6IGN3ZCk7CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiB9CiAKQEAg
LTExNiwxNCArMTIwLDE1IEBAIEZpbGVQYXRoIEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkgewog
Ly8gRmlsZVBhdGgoImRpci9maWxlIikuIElmIGEgY2FzZS1pbnNlbnNpdGl2ZSBleHRlbnNpb24g
aXMgbm90CiAvLyBmb3VuZCwgcmV0dXJucyBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIEZpbGVQYXRo
LgogRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZUV4dGVuc2lvbihjb25zdCBjaGFyKiBleHRlbnNp
b24pIGNvbnN0IHsKLSAgU3RyaW5nIGRvdF9leHRlbnNpb24oU3RyaW5nOjpGb3JtYXQoIi4lcyIs
IGV4dGVuc2lvbikpOwotICBpZiAocGF0aG5hbWVfLkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKGRv
dF9leHRlbnNpb24uY19zdHIoKSkpIHsKLSAgICByZXR1cm4gRmlsZVBhdGgoU3RyaW5nKHBhdGhu
YW1lXy5jX3N0cigpLCBwYXRobmFtZV8ubGVuZ3RoKCkgLSA0KSk7CisgIGNvbnN0IHN0ZDo6c3Ry
aW5nIGRvdF9leHRlbnNpb24gPSBzdGQ6OnN0cmluZygiLiIpICsgZXh0ZW5zaW9uOworICBpZiAo
U3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZShwYXRobmFtZV8sIGRvdF9leHRlbnNpb24p
KSB7CisgICAgcmV0dXJuIEZpbGVQYXRoKHBhdGhuYW1lXy5zdWJzdHIoCisgICAgICAgIDAsIHBh
dGhuYW1lXy5sZW5ndGgoKSAtIGRvdF9leHRlbnNpb24ubGVuZ3RoKCkpKTsKICAgfQogICByZXR1
cm4gKnRoaXM7CiB9CiAKLS8vIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBsYXN0IG9jY3VyZW5j
ZSBvZiBhIHZhbGlkIHBhdGggc2VwYXJhdG9yIGluCisvLyBSZXR1cm5zIGEgcG9pbnRlciB0byB0
aGUgbGFzdCBvY2N1cnJlbmNlIG9mIGEgdmFsaWQgcGF0aCBzZXBhcmF0b3IgaW4KIC8vIHRoZSBG
aWxlUGF0aC4gT24gV2luZG93cywgZm9yIGV4YW1wbGUsIGJvdGggJy8nIGFuZCAnXCcgYXJlIHZh
bGlkIHBhdGgKIC8vIHNlcGFyYXRvcnMuIFJldHVybnMgTlVMTCBpZiBubyBwYXRoIHNlcGFyYXRv
ciB3YXMgZm91bmQuCiBjb25zdCBjaGFyKiBGaWxlUGF0aDo6RmluZExhc3RQYXRoU2VwYXJhdG9y
KCkgY29uc3QgewpAQCAtMTQ3LDcgKzE1Miw3IEBAIGNvbnN0IGNoYXIqIEZpbGVQYXRoOjpGaW5k
TGFzdFBhdGhTZXBhcmF0b3IoKSBjb25zdCB7CiAvLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCAnXCcg
aXMgdGhlIHBhdGggc2VwYXJhdG9yLCBvdGhlcndpc2UgaXQgaXMgJy8nLgogRmlsZVBhdGggRmls
ZVBhdGg6OlJlbW92ZURpcmVjdG9yeU5hbWUoKSBjb25zdCB7CiAgIGNvbnN0IGNoYXIqIGNvbnN0
IGxhc3Rfc2VwID0gRmluZExhc3RQYXRoU2VwYXJhdG9yKCk7Ci0gIHJldHVybiBsYXN0X3NlcCA/
IEZpbGVQYXRoKFN0cmluZyhsYXN0X3NlcCArIDEpKSA6ICp0aGlzOworICByZXR1cm4gbGFzdF9z
ZXAgPyBGaWxlUGF0aChsYXN0X3NlcCArIDEpIDogKnRoaXM7CiB9CiAKIC8vIFJlbW92ZUZpbGVO
YW1lIHJldHVybnMgdGhlIGRpcmVjdG9yeSBwYXRoIHdpdGggdGhlIGZpbGVuYW1lIHJlbW92ZWQu
CkBAIC0xNTgsOSArMTYzLDkgQEAgRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZURpcmVjdG9yeU5h
bWUoKSBjb25zdCB7CiAvLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCAnXCcgaXMgdGhlIHBhdGggc2Vw
YXJhdG9yLCBvdGhlcndpc2UgaXQgaXMgJy8nLgogRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZUZp
bGVOYW1lKCkgY29uc3QgewogICBjb25zdCBjaGFyKiBjb25zdCBsYXN0X3NlcCA9IEZpbmRMYXN0
UGF0aFNlcGFyYXRvcigpOwotICBTdHJpbmcgZGlyOworICBzdGQ6OnN0cmluZyBkaXI7CiAgIGlm
IChsYXN0X3NlcCkgewotICAgIGRpciA9IFN0cmluZyhjX3N0cigpLCBsYXN0X3NlcCArIDEgLSBj
X3N0cigpKTsKKyAgICBkaXIgPSBzdGQ6OnN0cmluZyhjX3N0cigpLCBsYXN0X3NlcCArIDEgLSBj
X3N0cigpKTsKICAgfSBlbHNlIHsKICAgICBkaXIgPSBrQ3VycmVudERpcmVjdG9yeVN0cmluZzsK
ICAgfQpAQCAtMTc3LDExICsxODIsMTIgQEAgRmlsZVBhdGggRmlsZVBhdGg6Ok1ha2VGaWxlTmFt
ZShjb25zdCBGaWxlUGF0aCYgZGlyZWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBGaWxlUGF0aCYgYmFzZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgbnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBleHRlbnNpb24pIHsKLSAgU3RyaW5nIGZpbGU7CisgIHN0ZDo6c3RyaW5nIGZpbGU7
CiAgIGlmIChudW1iZXIgPT0gMCkgewotICAgIGZpbGUgPSBTdHJpbmc6OkZvcm1hdCgiJXMuJXMi
LCBiYXNlX25hbWUuY19zdHIoKSwgZXh0ZW5zaW9uKTsKKyAgICBmaWxlID0gYmFzZV9uYW1lLnN0
cmluZygpICsgIi4iICsgZXh0ZW5zaW9uOwogICB9IGVsc2UgewotICAgIGZpbGUgPSBTdHJpbmc6
OkZvcm1hdCgiJXNfJWQuJXMiLCBiYXNlX25hbWUuY19zdHIoKSwgbnVtYmVyLCBleHRlbnNpb24p
OworICAgIGZpbGUgPSBiYXNlX25hbWUuc3RyaW5nKCkgKyAiXyIgKyBTdHJlYW1hYmxlVG9TdHJp
bmcobnVtYmVyKQorICAgICAgICArICIuIiArIGV4dGVuc2lvbjsKICAgfQogICByZXR1cm4gQ29u
Y2F0UGF0aHMoZGlyZWN0b3J5LCBGaWxlUGF0aChmaWxlKSk7CiB9CkBAIC0xOTMsOCArMTk5LDcg
QEAgRmlsZVBhdGggRmlsZVBhdGg6OkNvbmNhdFBhdGhzKGNvbnN0IEZpbGVQYXRoJiBkaXJlY3Rv
cnksCiAgIGlmIChkaXJlY3RvcnkuSXNFbXB0eSgpKQogICAgIHJldHVybiByZWxhdGl2ZV9wYXRo
OwogICBjb25zdCBGaWxlUGF0aCBkaXIoZGlyZWN0b3J5LlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFy
YXRvcigpKTsKLSAgcmV0dXJuIEZpbGVQYXRoKFN0cmluZzo6Rm9ybWF0KCIlcyVjJXMiLCBkaXIu
Y19zdHIoKSwga1BhdGhTZXBhcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWxhdGl2ZV9wYXRoLmNfc3RyKCkpKTsKKyAgcmV0dXJuIEZpbGVQYXRoKGRpci5zdHJpbmco
KSArIGtQYXRoU2VwYXJhdG9yICsgcmVsYXRpdmVfcGF0aC5zdHJpbmcoKSk7CiB9CiAKIC8vIFJl
dHVybnMgdHJ1ZSBpZiBwYXRobmFtZSBkZXNjcmliZXMgc29tZXRoaW5nIGZpbmRhYmxlIGluIHRo
ZSBmaWxlLXN5c3RlbSwKQEAgLTI0NSw3ICsyNTAsNyBAQCBib29sIEZpbGVQYXRoOjpEaXJlY3Rv
cnlFeGlzdHMoKSBjb25zdCB7CiAvLyByb290IGRpcmVjdG9yeSBwZXIgZGlzayBkcml2ZS4pCiBi
b29sIEZpbGVQYXRoOjpJc1Jvb3REaXJlY3RvcnkoKSBjb25zdCB7CiAjaWYgR1RFU1RfT1NfV0lO
RE9XUwotICAvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogb24gV2luZG93cyBhIG5ldHdvcmsgc2hh
cmUgbGlrZQorICAvLyBGSVhNRTogb24gV2luZG93cyBhIG5ldHdvcmsgc2hhcmUgbGlrZQogICAv
LyBcXHNlcnZlclxzaGFyZSBjYW4gYmUgYSByb290IGRpcmVjdG9yeSwgYWx0aG91Z2ggaXQgY2Fu
bm90IGJlIHRoZQogICAvLyBjdXJyZW50IGRpcmVjdG9yeS4gIEhhbmRsZSB0aGlzIHByb3Blcmx5
LgogICByZXR1cm4gcGF0aG5hbWVfLmxlbmd0aCgpID09IDMgJiYgSXNBYnNvbHV0ZVBhdGgoKTsK
QEAgLTMzOCwxNCArMzQzLDE0IEBAIGJvb2wgRmlsZVBhdGg6OkNyZWF0ZUZvbGRlcigpIGNvbnN0
IHsKIC8vIE9uIFdpbmRvd3MgcGxhdGZvcm0sIHVzZXMgXCBhcyB0aGUgc2VwYXJhdG9yLCBvdGhl
ciBwbGF0Zm9ybXMgdXNlIC8uCiBGaWxlUGF0aCBGaWxlUGF0aDo6UmVtb3ZlVHJhaWxpbmdQYXRo
U2VwYXJhdG9yKCkgY29uc3QgewogICByZXR1cm4gSXNEaXJlY3RvcnkoKQotICAgICAgPyBGaWxl
UGF0aChTdHJpbmcocGF0aG5hbWVfLmNfc3RyKCksIHBhdGhuYW1lXy5sZW5ndGgoKSAtIDEpKQor
ICAgICAgPyBGaWxlUGF0aChwYXRobmFtZV8uc3Vic3RyKDAsIHBhdGhuYW1lXy5sZW5ndGgoKSAt
IDEpKQogICAgICAgOiAqdGhpczsKIH0KIAogLy8gUmVtb3ZlcyBhbnkgcmVkdW5kYW50IHNlcGFy
YXRvcnMgdGhhdCBtaWdodCBiZSBpbiB0aGUgcGF0aG5hbWUuCiAvLyBGb3IgZXhhbXBsZSwgImJh
ci8vL2ZvbyIgYmVjb21lcyAiYmFyL2ZvbyIuIERvZXMgbm90IGVsaW1pbmF0ZSBvdGhlcgogLy8g
cmVkdW5kYW5jaWVzIHRoYXQgbWlnaHQgYmUgaW4gYSBwYXRobmFtZSBpbnZvbHZpbmcgIi4iIG9y
ICIuLiIuCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogaGFuZGxlIFdpbmRvd3MgbmV0d29yayBz
aGFyZXMgKGUuZy4gXFxzZXJ2ZXJcc2hhcmUpLgorLy8gRklYTUU6IGhhbmRsZSBXaW5kb3dzIG5l
dHdvcmsgc2hhcmVzIChlLmcuIFxcc2VydmVyXHNoYXJlKS4KIHZvaWQgRmlsZVBhdGg6Ok5vcm1h
bGl6ZSgpIHsKICAgaWYgKHBhdGhuYW1lXy5jX3N0cigpID09IE5VTEwpIHsKICAgICBwYXRobmFt
ZV8gPSAiIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1p
bnRlcm5hbC1pbmwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1pbnRlcm5h
bC1pbmwuaAppbmRleCAwMTQxNWY3ZDk1OWRjYTA3MDlmYWMxNzY2MTBkYjczODhmNjA0NTU5Li40
NzkwMDQxNDliNDhjMjg1NjRlMjA1ZTAyMTBjNmM0MzEwNDE4YjViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWludGVybmFsLWlubC5oCkBAIC0yNywyNiArMjcs
MTUgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotLy8gVXRpbGl0eSBmdW5j
dGlvbnMgYW5kIGNsYXNzZXMgdXNlZCBieSB0aGUgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29y
ay4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLworLy8g
VXRpbGl0eSBmdW5jdGlvbnMgYW5kIGNsYXNzZXMgdXNlZCBieSB0aGUgR29vZ2xlIEMrKyB0ZXN0
aW5nIGZyYW1ld29yay4vLwogLy8gVGhpcyBmaWxlIGNvbnRhaW5zIHB1cmVseSBHb29nbGUgVGVz
dCdzIGludGVybmFsIGltcGxlbWVudGF0aW9uLiAgUGxlYXNlCiAvLyBETyBOT1QgI0lOQ0xVREUg
SVQgSU4gQSBVU0VSIFBST0dSQU0uCiAKICNpZm5kZWYgR1RFU1RfU1JDX0dURVNUX0lOVEVSTkFM
X0lOTF9IXwogI2RlZmluZSBHVEVTVF9TUkNfR1RFU1RfSU5URVJOQUxfSU5MX0hfCiAKLS8vIEdU
RVNUX0lNUExFTUVOVEFUSU9OXyBpcyBkZWZpbmVkIHRvIDEgaWZmIHRoZSBjdXJyZW50IHRyYW5z
bGF0aW9uIHVuaXQgaXMKLS8vIHBhcnQgb2YgR29vZ2xlIFRlc3QncyBpbXBsZW1lbnRhdGlvbjsg
b3RoZXJ3aXNlIGl0J3MgdW5kZWZpbmVkLgotI2lmICFHVEVTVF9JTVBMRU1FTlRBVElPTl8KLS8v
IEEgdXNlciBpcyB0cnlpbmcgdG8gaW5jbHVkZSB0aGlzIGZyb20gaGlzIGNvZGUgLSBqdXN0IHNh
eSBuby4KLSNlcnJvciAiZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMgcGFydCBvZiBHb29nbGUgVGVz
dCdzIGludGVybmFsIGltcGxlbWVudGF0aW9uLiIKLSNlcnJvciAiSXQgbXVzdCBub3QgYmUgaW5j
bHVkZWQgZXhjZXB0IGJ5IEdvb2dsZSBUZXN0IGl0c2VsZi4iCi0jZW5kaWYgIC8vIEdURVNUX0lN
UExFTUVOVEFUSU9OXwotCiAjaWZuZGVmIF9XSU4zMl9XQ0UKLSNpbmNsdWRlIDxlcnJuby5oPgor
IyBpbmNsdWRlIDxlcnJuby5oPgogI2VuZGlmICAvLyAhX1dJTjMyX1dDRQogI2luY2x1ZGUgPHN0
ZGRlZi5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPiAgLy8gRm9yIHN0cnRvbGwvX3N0cnRvdWw2NC9t
YWxsb2MvZnJlZS4KQEAgLTU2LDE0ICs0NSwyMiBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNs
dWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+Cisj
aW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorCisjaWYgR1RFU1RfQ0FOX1NU
UkVBTV9SRVNVTFRTXworIyBpbmNsdWRlIDxhcnBhL2luZXQuaD4gIC8vIE5PTElOVAorIyBpbmNs
dWRlIDxuZXRkYi5oPiAgLy8gTk9MSU5UCisjZW5kaWYKIAogI2lmIEdURVNUX09TX1dJTkRPV1MK
LSNpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBGb3IgRFdPUkQuCisjIGluY2x1ZGUgPHdpbmRvd3Mu
aD4gIC8vIE5PTElOVAogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKLSNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+Cisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKwor
R1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDI1MSBcCisvKiBjbGFzcyBBIG5lZWRz
IHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2VkIGJ5IGNsaWVudHMgb2YgY2xhc3MgQiAq
LykKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC04OSwxMSArODYsMTQgQEAgY29uc3QgY2hh
ciBrRmlsdGVyRmxhZ1tdID0gImZpbHRlciI7CiBjb25zdCBjaGFyIGtMaXN0VGVzdHNGbGFnW10g
PSAibGlzdF90ZXN0cyI7CiBjb25zdCBjaGFyIGtPdXRwdXRGbGFnW10gPSAib3V0cHV0IjsKIGNv
bnN0IGNoYXIga1ByaW50VGltZUZsYWdbXSA9ICJwcmludF90aW1lIjsKK2NvbnN0IGNoYXIga1By
aW50VVRGOEZsYWdbXSA9ICJwcmludF91dGY4IjsKIGNvbnN0IGNoYXIga1JhbmRvbVNlZWRGbGFn
W10gPSAicmFuZG9tX3NlZWQiOwogY29uc3QgY2hhciBrUmVwZWF0RmxhZ1tdID0gInJlcGVhdCI7
CiBjb25zdCBjaGFyIGtTaHVmZmxlRmxhZ1tdID0gInNodWZmbGUiOwogY29uc3QgY2hhciBrU3Rh
Y2tUcmFjZURlcHRoRmxhZ1tdID0gInN0YWNrX3RyYWNlX2RlcHRoIjsKK2NvbnN0IGNoYXIga1N0
cmVhbVJlc3VsdFRvRmxhZ1tdID0gInN0cmVhbV9yZXN1bHRfdG8iOwogY29uc3QgY2hhciBrVGhy
b3dPbkZhaWx1cmVGbGFnW10gPSAidGhyb3dfb25fZmFpbHVyZSI7Citjb25zdCBjaGFyIGtGbGFn
ZmlsZUZsYWdbXSA9ICJmbGFnZmlsZSI7CiAKIC8vIEEgdmFsaWQgcmFuZG9tIHNlZWQgbXVzdCBi
ZSBpbiBbMSwga01heFJhbmRvbVNlZWRdLgogY29uc3QgaW50IGtNYXhSYW5kb21TZWVkID0gOTk5
OTk7CkBAIC0xMTEsNiArMTExLDEyIEBAIEdURVNUX0FQSV8gYm9vbCBTaG91bGRVc2VDb2xvcihi
b29sIHN0ZG91dF9pc190dHkpOwogLy8gRm9ybWF0cyB0aGUgZ2l2ZW4gdGltZSBpbiBtaWxsaXNl
Y29uZHMgYXMgc2Vjb25kcy4KIEdURVNUX0FQSV8gc3RkOjpzdHJpbmcgRm9ybWF0VGltZUluTWls
bGlzQXNTZWNvbmRzKFRpbWVJbk1pbGxpcyBtcyk7CiAKKy8vIENvbnZlcnRzIHRoZSBnaXZlbiB0
aW1lIGluIG1pbGxpc2Vjb25kcyB0byBhIGRhdGUgc3RyaW5nIGluIHRoZSBJU08gODYwMQorLy8g
Zm9ybWF0LCB3aXRob3V0IHRoZSB0aW1lem9uZSBpbmZvcm1hdGlvbi4gIE4uQi46IGR1ZSB0byB0
aGUgdXNlIHRoZQorLy8gbm9uLXJlZW50cmFudCBsb2NhbHRpbWUoKSBmdW5jdGlvbiwgdGhpcyBm
dW5jdGlvbiBpcyBub3QgdGhyZWFkIHNhZmUuICBEbworLy8gbm90IHVzZSBpdCBpbiBhbnkgY29k
ZSB0aGF0IGNhbiBiZSBjYWxsZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgorR1RFU1RfQVBJXyBz
dGQ6OnN0cmluZyBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMShUaW1lSW5NaWxsaXMg
bXMpOworCiAvLyBQYXJzZXMgYSBzdHJpbmcgZm9yIGFuIEludDMyIGZsYWcsIGluIHRoZSBmb3Jt
IG9mICItLWZsYWc9dmFsdWUiLgogLy8KIC8vIE9uIHN1Y2Nlc3MsIHN0b3JlcyB0aGUgdmFsdWUg
b2YgdGhlIGZsYWcgaW4gKnZhbHVlLCBhbmQgcmV0dXJucwpAQCAtMTYxLDEwICsxNjcsMTIgQEAg
Y2xhc3MgR1Rlc3RGbGFnU2F2ZXIgewogICAgIGxpc3RfdGVzdHNfID0gR1RFU1RfRkxBRyhsaXN0
X3Rlc3RzKTsKICAgICBvdXRwdXRfID0gR1RFU1RfRkxBRyhvdXRwdXQpOwogICAgIHByaW50X3Rp
bWVfID0gR1RFU1RfRkxBRyhwcmludF90aW1lKTsKKyAgICBwcmludF91dGY4XyA9IEdURVNUX0ZM
QUcocHJpbnRfdXRmOCk7CiAgICAgcmFuZG9tX3NlZWRfID0gR1RFU1RfRkxBRyhyYW5kb21fc2Vl
ZCk7CiAgICAgcmVwZWF0XyA9IEdURVNUX0ZMQUcocmVwZWF0KTsKICAgICBzaHVmZmxlXyA9IEdU
RVNUX0ZMQUcoc2h1ZmZsZSk7CiAgICAgc3RhY2tfdHJhY2VfZGVwdGhfID0gR1RFU1RfRkxBRyhz
dGFja190cmFjZV9kZXB0aCk7CisgICAgc3RyZWFtX3Jlc3VsdF90b18gPSBHVEVTVF9GTEFHKHN0
cmVhbV9yZXN1bHRfdG8pOwogICAgIHRocm93X29uX2ZhaWx1cmVfID0gR1RFU1RfRkxBRyh0aHJv
d19vbl9mYWlsdXJlKTsKICAgfQogCkBAIC0xODEsNDEgKzE4OSw0NCBAQCBjbGFzcyBHVGVzdEZs
YWdTYXZlciB7CiAgICAgR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSA9IGxpc3RfdGVzdHNfOwogICAg
IEdURVNUX0ZMQUcob3V0cHV0KSA9IG91dHB1dF87CiAgICAgR1RFU1RfRkxBRyhwcmludF90aW1l
KSA9IHByaW50X3RpbWVfOworICAgIEdURVNUX0ZMQUcocHJpbnRfdXRmOCkgPSBwcmludF91dGY4
XzsKICAgICBHVEVTVF9GTEFHKHJhbmRvbV9zZWVkKSA9IHJhbmRvbV9zZWVkXzsKICAgICBHVEVT
VF9GTEFHKHJlcGVhdCkgPSByZXBlYXRfOwogICAgIEdURVNUX0ZMQUcoc2h1ZmZsZSkgPSBzaHVm
ZmxlXzsKICAgICBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSA9IHN0YWNrX3RyYWNlX2Rl
cHRoXzsKKyAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pID0gc3RyZWFtX3Jlc3VsdF90
b187CiAgICAgR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9IHRocm93X29uX2ZhaWx1cmVf
OwogICB9CisKICBwcml2YXRlOgogICAvLyBGaWVsZHMgZm9yIHNhdmluZyB0aGUgb3JpZ2luYWwg
dmFsdWVzIG9mIGZsYWdzLgogICBib29sIGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzXzsKICAgYm9v
bCBicmVha19vbl9mYWlsdXJlXzsKICAgYm9vbCBjYXRjaF9leGNlcHRpb25zXzsKLSAgU3RyaW5n
IGNvbG9yXzsKLSAgU3RyaW5nIGRlYXRoX3Rlc3Rfc3R5bGVfOworICBzdGQ6OnN0cmluZyBjb2xv
cl87CisgIHN0ZDo6c3RyaW5nIGRlYXRoX3Rlc3Rfc3R5bGVfOwogICBib29sIGRlYXRoX3Rlc3Rf
dXNlX2ZvcmtfOwotICBTdHJpbmcgZmlsdGVyXzsKLSAgU3RyaW5nIGludGVybmFsX3J1bl9kZWF0
aF90ZXN0XzsKKyAgc3RkOjpzdHJpbmcgZmlsdGVyXzsKKyAgc3RkOjpzdHJpbmcgaW50ZXJuYWxf
cnVuX2RlYXRoX3Rlc3RfOwogICBib29sIGxpc3RfdGVzdHNfOwotICBTdHJpbmcgb3V0cHV0XzsK
KyAgc3RkOjpzdHJpbmcgb3V0cHV0XzsKICAgYm9vbCBwcmludF90aW1lXzsKKyAgYm9vbCBwcmlu
dF91dGY4XzsKICAgaW50ZXJuYWw6OkludDMyIHJhbmRvbV9zZWVkXzsKICAgaW50ZXJuYWw6Oklu
dDMyIHJlcGVhdF87CiAgIGJvb2wgc2h1ZmZsZV87CiAgIGludGVybmFsOjpJbnQzMiBzdGFja190
cmFjZV9kZXB0aF87CisgIHN0ZDo6c3RyaW5nIHN0cmVhbV9yZXN1bHRfdG9fOwogICBib29sIHRo
cm93X29uX2ZhaWx1cmVfOwogfSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXzsKIAogLy8gQ29udmVy
dHMgYSBVbmljb2RlIGNvZGUgcG9pbnQgdG8gYSBuYXJyb3cgc3RyaW5nIGluIFVURi04IGVuY29k
aW5nLgogLy8gY29kZV9wb2ludCBwYXJhbWV0ZXIgaXMgb2YgdHlwZSBVSW50MzIgYmVjYXVzZSB3
Y2hhcl90IG1heSBub3QgYmUKIC8vIHdpZGUgZW5vdWdoIHRvIGNvbnRhaW4gYSBjb2RlIHBvaW50
LgotLy8gVGhlIG91dHB1dCBidWZmZXIgc3RyIG11c3QgY29udGFpbnQgYXQgbGVhc3QgMzIgY2hh
cmFjdGVycy4KLS8vIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBhZGRyZXNzIG9mIHRoZSBvdXRw
dXQgYnVmZmVyLgogLy8gSWYgdGhlIGNvZGVfcG9pbnQgaXMgbm90IGEgdmFsaWQgVW5pY29kZSBj
b2RlIHBvaW50Ci0vLyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNvZGUgcmFuZ2UgVSswIHRvIFUrMTBG
RkZGKSBpdCB3aWxsIGJlIG91dHB1dAotLy8gYXMgJyhJbnZhbGlkIFVuaWNvZGUgMHhYWFhYWFhY
WCknLgotR1RFU1RfQVBJXyBjaGFyKiBDb2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQs
IGNoYXIqIHN0cik7CisvLyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNvZGUgcmFuZ2UgVSswIHRvIFUr
MTBGRkZGKSBpdCB3aWxsIGJlIGNvbnZlcnRlZAorLy8gdG8gIihJbnZhbGlkIFVuaWNvZGUgMHhY
WFhYWFhYWCkiLgorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBDb2RlUG9pbnRUb1V0ZjgoVUludDMy
IGNvZGVfcG9pbnQpOwogCiAvLyBDb252ZXJ0cyBhIHdpZGUgc3RyaW5nIHRvIGEgbmFycm93IHN0
cmluZyBpbiBVVEYtOCBlbmNvZGluZy4KIC8vIFRoZSB3aWRlIHN0cmluZyBpcyBhc3N1bWVkIHRv
IGhhdmUgdGhlIGZvbGxvd2luZyBlbmNvZGluZzoKQEAgLTIzMCw3ICsyNDEsNyBAQCBHVEVTVF9B
UElfIGNoYXIqIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9wb2ludCwgY2hhciogc3RyKTsK
IC8vIGFzICcoSW52YWxpZCBVbmljb2RlIDB4WFhYWFhYWFgpJy4gSWYgdGhlIHN0cmluZyBpcyBp
biBVVEYxNiBlbmNvZGluZwogLy8gYW5kIGNvbnRhaW5zIGludmFsaWQgVVRGLTE2IHN1cnJvZ2F0
ZSBwYWlycywgdmFsdWVzIGluIHRob3NlIHBhaXJzCiAvLyB3aWxsIGJlIGVuY29kZWQgYXMgaW5k
aXZpZHVhbCBVbmljb2RlIGNoYXJhY3RlcnMgZnJvbSBCYXNpYyBOb3JtYWwgUGxhbmUuCi1HVEVT
VF9BUElfIFN0cmluZyBXaWRlU3RyaW5nVG9VdGY4KGNvbnN0IHdjaGFyX3QqIHN0ciwgaW50IG51
bV9jaGFycyk7CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFdpZGVTdHJpbmdUb1V0ZjgoY29uc3Qg
d2NoYXJfdCogc3RyLCBpbnQgbnVtX2NoYXJzKTsKIAogLy8gUmVhZHMgdGhlIEdURVNUX1NIQVJE
X1NUQVRVU19GSUxFIGVudmlyb25tZW50IHZhcmlhYmxlLCBhbmQgY3JlYXRlcyB0aGUgZmlsZQog
Ly8gaWYgdGhlIHZhcmlhYmxlIGlzIHByZXNlbnQuIElmIGEgZmlsZSBhbHJlYWR5IGV4aXN0cyBh
dCB0aGlzIGxvY2F0aW9uLCB0aGlzCkBAIC0yNjYsNyArMjc3LDE0IEBAIEdURVNUX0FQSV8gYm9v
bCBTaG91bGRSdW5UZXN0T25TaGFyZCgKIC8vIHRoZSBnaXZlbiBwcmVkaWNhdGUuCiB0ZW1wbGF0
ZSA8Y2xhc3MgQ29udGFpbmVyLCB0eXBlbmFtZSBQcmVkaWNhdGU+CiBpbmxpbmUgaW50IENvdW50
SWYoY29uc3QgQ29udGFpbmVyJiBjLCBQcmVkaWNhdGUgcHJlZGljYXRlKSB7Ci0gIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KHN0ZDo6Y291bnRfaWYoYy5iZWdpbigpLCBjLmVuZCgpLCBwcmVkaWNh
dGUpKTsKKyAgLy8gSW1wbGVtZW50ZWQgYXMgYW4gZXhwbGljaXQgbG9vcCBzaW5jZSBzdGQ6OmNv
dW50X2lmKCkgaW4gbGliQ3N0ZCBvbgorICAvLyBTb2xhcmlzIGhhcyBhIG5vbi1zdGFuZGFyZCBz
aWduYXR1cmUuCisgIGludCBjb3VudCA9IDA7CisgIGZvciAodHlwZW5hbWUgQ29udGFpbmVyOjpj
b25zdF9pdGVyYXRvciBpdCA9IGMuYmVnaW4oKTsgaXQgIT0gYy5lbmQoKTsgKytpdCkgeworICAg
IGlmIChwcmVkaWNhdGUoKml0KSkKKyAgICAgICsrY291bnQ7CisgIH0KKyAgcmV0dXJuIGNvdW50
OwogfQogCiAvLyBBcHBsaWVzIGEgZnVuY3Rpb24vZnVuY3RvciB0byBlYWNoIGVsZW1lbnQgaW4g
dGhlIGNvbnRhaW5lci4KQEAgLTMyNyw5NSArMzQ1LDE1IEBAIGNsYXNzIFRlc3RQcm9wZXJ0eUtl
eUlzIHsKICAgLy8gQ29uc3RydWN0b3IuCiAgIC8vCiAgIC8vIFRlc3RQcm9wZXJ0eUtleUlzIGhh
cyBOTyBkZWZhdWx0IGNvbnN0cnVjdG9yLgotICBleHBsaWNpdCBUZXN0UHJvcGVydHlLZXlJcyhj
b25zdCBjaGFyKiBrZXkpCi0gICAgICA6IGtleV8oa2V5KSB7fQorICBleHBsaWNpdCBUZXN0UHJv
cGVydHlLZXlJcyhjb25zdCBzdGQ6OnN0cmluZyYga2V5KSA6IGtleV8oa2V5KSB7fQogCiAgIC8v
IFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgbmFtZSBvZiB0ZXN0IHByb3BlcnR5IG1hdGNoZXMg
b24ga2V5Xy4KICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9w
ZXJ0eSkgY29uc3QgewotICAgIHJldHVybiBTdHJpbmcodGVzdF9wcm9wZXJ0eS5rZXkoKSkuQ29t
cGFyZShrZXlfKSA9PSAwOwotICB9Ci0KLSBwcml2YXRlOgotICBTdHJpbmcga2V5XzsKLX07Ci0K
LWNsYXNzIFRlc3RJbmZvSW1wbCB7Ci0gcHVibGljOgotICBUZXN0SW5mb0ltcGwoVGVzdEluZm8q
IHBhcmVudCwgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfY29tbWVudCwKLSAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGNvbW1lbnQsIFR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkLAotICAgICAg
ICAgICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSk7Ci0gIH5UZXN0SW5m
b0ltcGwoKTsKLQotICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IHNob3VsZCBydW4uCi0g
IGJvb2wgc2hvdWxkX3J1bigpIGNvbnN0IHsgcmV0dXJuIHNob3VsZF9ydW5fOyB9Ci0KLSAgLy8g
U2V0cyB0aGUgc2hvdWxkX3J1biBtZW1iZXIuCi0gIHZvaWQgc2V0X3Nob3VsZF9ydW4oYm9vbCBz
aG91bGQpIHsgc2hvdWxkX3J1bl8gPSBzaG91bGQ7IH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhpcyB0ZXN0IGlzIGRpc2FibGVkLiBEaXNhYmxlZCB0ZXN0cyBhcmUgbm90IHJ1bi4KLSAgYm9v
bCBpc19kaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGlzX2Rpc2FibGVkXzsgfQotCi0gIC8vIFNl
dHMgdGhlIGlzX2Rpc2FibGVkIG1lbWJlci4KLSAgdm9pZCBzZXRfaXNfZGlzYWJsZWQoYm9vbCBp
cykgeyBpc19kaXNhYmxlZF8gPSBpczsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRl
c3QgbWF0Y2hlcyB0aGUgZmlsdGVyIHNwZWNpZmllZCBieSB0aGUgdXNlci4KLSAgYm9vbCBtYXRj
aGVzX2ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1hdGNoZXNfZmlsdGVyXzsgfQotCi0gIC8vIFNl
dHMgdGhlIG1hdGNoZXNfZmlsdGVyIG1lbWJlci4KLSAgdm9pZCBzZXRfbWF0Y2hlc19maWx0ZXIo
Ym9vbCBtYXRjaGVzKSB7IG1hdGNoZXNfZmlsdGVyXyA9IG1hdGNoZXM7IH0KLQotICAvLyBSZXR1
cm5zIHRoZSB0ZXN0IGNhc2UgbmFtZS4KLSAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUoKSBj
b25zdCB7IHJldHVybiB0ZXN0X2Nhc2VfbmFtZV8uY19zdHIoKTsgfQotCi0gIC8vIFJldHVybnMg
dGhlIHRlc3QgbmFtZS4KLSAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG5hbWVf
LmNfc3RyKCk7IH0KLQotICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNhc2UgY29tbWVudC4KLSAgY29u
c3QgY2hhciogdGVzdF9jYXNlX2NvbW1lbnQoKSBjb25zdCB7IHJldHVybiB0ZXN0X2Nhc2VfY29t
bWVudF8uY19zdHIoKTsgfQotCi0gIC8vIFJldHVybnMgdGhlIHRlc3QgY29tbWVudC4KLSAgY29u
c3QgY2hhciogY29tbWVudCgpIGNvbnN0IHsgcmV0dXJuIGNvbW1lbnRfLmNfc3RyKCk7IH0KLQot
ICAvLyBSZXR1cm5zIHRoZSBJRCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLgotICBUeXBlSWQg
Zml4dHVyZV9jbGFzc19pZCgpIGNvbnN0IHsgcmV0dXJuIGZpeHR1cmVfY2xhc3NfaWRfOyB9Ci0K
LSAgLy8gUmV0dXJucyB0aGUgdGVzdCByZXN1bHQuCi0gIFRlc3RSZXN1bHQqIHJlc3VsdCgpIHsg
cmV0dXJuICZyZXN1bHRfOyB9Ci0gIGNvbnN0IFRlc3RSZXN1bHQqIHJlc3VsdCgpIGNvbnN0IHsg
cmV0dXJuICZyZXN1bHRfOyB9Ci0KLSAgLy8gQ3JlYXRlcyB0aGUgdGVzdCBvYmplY3QsIHJ1bnMg
aXQsIHJlY29yZHMgaXRzIHJlc3VsdCwgYW5kIHRoZW4KLSAgLy8gZGVsZXRlcyBpdC4KLSAgdm9p
ZCBSdW4oKTsKLQotICAvLyBDbGVhcnMgdGhlIHRlc3QgcmVzdWx0LgotICB2b2lkIENsZWFyUmVz
dWx0KCkgeyByZXN1bHRfLkNsZWFyKCk7IH0KLQotICAvLyBDbGVhcnMgdGhlIHRlc3QgcmVzdWx0
IGluIHRoZSBnaXZlbiBUZXN0SW5mbyBvYmplY3QuCi0gIHN0YXRpYyB2b2lkIENsZWFyVGVzdFJl
c3VsdChUZXN0SW5mbyAqIHRlc3RfaW5mbykgewotICAgIHRlc3RfaW5mby0+aW1wbCgpLT5DbGVh
clJlc3VsdCgpOworICAgIHJldHVybiB0ZXN0X3Byb3BlcnR5LmtleSgpID09IGtleV87CiAgIH0K
IAogIHByaXZhdGU6Ci0gIC8vIFRoZXNlIGZpZWxkcyBhcmUgaW1tdXRhYmxlIHByb3BlcnRpZXMg
b2YgdGhlIHRlc3QuCi0gIFRlc3RJbmZvKiBjb25zdCBwYXJlbnRfOyAgICAgICAgICAvLyBUaGUg
b3duZXIgb2YgdGhpcyBvYmplY3QKLSAgY29uc3QgU3RyaW5nIHRlc3RfY2FzZV9uYW1lXzsgICAg
IC8vIFRlc3QgY2FzZSBuYW1lCi0gIGNvbnN0IFN0cmluZyBuYW1lXzsgICAgICAgICAgICAgICAv
LyBUZXN0IG5hbWUKLSAgY29uc3QgU3RyaW5nIHRlc3RfY2FzZV9jb21tZW50XzsgIC8vIFRlc3Qg
Y2FzZSBjb21tZW50Ci0gIGNvbnN0IFN0cmluZyBjb21tZW50XzsgICAgICAgICAgICAvLyBUZXN0
IGNvbW1lbnQKLSAgY29uc3QgVHlwZUlkIGZpeHR1cmVfY2xhc3NfaWRfOyAgIC8vIElEIG9mIHRo
ZSB0ZXN0IGZpeHR1cmUgY2xhc3MKLSAgYm9vbCBzaG91bGRfcnVuXzsgICAgICAgICAgICAgICAg
IC8vIFRydWUgaWZmIHRoaXMgdGVzdCBzaG91bGQgcnVuCi0gIGJvb2wgaXNfZGlzYWJsZWRfOyAg
ICAgICAgICAgICAgICAvLyBUcnVlIGlmZiB0aGlzIHRlc3QgaXMgZGlzYWJsZWQKLSAgYm9vbCBt
YXRjaGVzX2ZpbHRlcl87ICAgICAgICAgICAgIC8vIFRydWUgaWYgdGhpcyB0ZXN0IG1hdGNoZXMg
dGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VyLXNwZWNpZmll
ZCBmaWx0ZXIuCi0gIGludGVybmFsOjpUZXN0RmFjdG9yeUJhc2UqIGNvbnN0IGZhY3RvcnlfOyAg
Ly8gVGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gdGhlIHRlc3Qgb2JqZWN0Ci0KLSAgLy8gVGhpcyBmaWVsZCBp
cyBtdXRhYmxlIGFuZCBuZWVkcyB0byBiZSByZXNldCBiZWZvcmUgcnVubmluZyB0aGUKLSAgLy8g
dGVzdCBmb3IgdGhlIHNlY29uZCB0aW1lLgotICBUZXN0UmVzdWx0IHJlc3VsdF87Ci0KLSAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0SW5mb0ltcGwpOworICBzdGQ6OnN0cmlu
ZyBrZXlfOwogfTsKIAogLy8gQ2xhc3MgVW5pdFRlc3RPcHRpb25zLgpAQCAtNDMzLDEyICszNzEs
MTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdE9wdGlvbnMgewogICAvLyBGdW5jdGlvbnMg
Zm9yIHByb2Nlc3NpbmcgdGhlIGd0ZXN0X291dHB1dCBmbGFnLgogCiAgIC8vIFJldHVybnMgdGhl
IG91dHB1dCBmb3JtYXQsIG9yICIiIGZvciBub3JtYWwgcHJpbnRlZCBvdXRwdXQuCi0gIHN0YXRp
YyBTdHJpbmcgR2V0T3V0cHV0Rm9ybWF0KCk7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBHZXRPdXRw
dXRGb3JtYXQoKTsKIAogICAvLyBSZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSByZXF1
ZXN0ZWQgb3V0cHV0IGZpbGUsIG9yIHRoZQogICAvLyBkZWZhdWx0ICh0ZXN0X2RldGFpbC54bWwg
aW4gdGhlIG9yaWdpbmFsIHdvcmtpbmcgZGlyZWN0b3J5KSBpZgogICAvLyBub25lIHdhcyBleHBs
aWNpdGx5IHNwZWNpZmllZC4KLSAgc3RhdGljIFN0cmluZyBHZXRBYnNvbHV0ZVBhdGhUb091dHB1
dEZpbGUoKTsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldEFic29sdXRlUGF0aFRvT3V0cHV0Rmls
ZSgpOwogCiAgIC8vIEZ1bmN0aW9ucyBmb3IgcHJvY2Vzc2luZyB0aGUgZ3Rlc3RfZmlsdGVyIGZs
YWcuCiAKQEAgLTQ1MSw4ICszODksOCBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0T3B0aW9u
cyB7CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdXNlci1zcGVjaWZpZWQgZmlsdGVyIG1h
dGNoZXMgdGhlIHRlc3QgY2FzZQogICAvLyBuYW1lIGFuZCB0aGUgdGVzdCBuYW1lLgotICBzdGF0
aWMgYm9vbCBGaWx0ZXJNYXRjaGVzVGVzdChjb25zdCBTdHJpbmcgJnRlc3RfY2FzZV9uYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcgJnRlc3RfbmFtZSk7
CisgIHN0YXRpYyBib29sIEZpbHRlck1hdGNoZXNUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0
X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnRlc3RfbmFtZSk7CiAKICNpZiBHVEVTVF9PU19XSU5ET1dTCiAgIC8vIEZ1bmN0aW9u
IGZvciBzdXBwb3J0aW5nIHRoZSBndGVzdF9jYXRjaF9leGNlcHRpb24gZmxhZy4KQEAgLTQ2NSw3
ICs0MDMsNyBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0T3B0aW9ucyB7CiAKICAgLy8gUmV0
dXJucyB0cnVlIGlmICJuYW1lIiBtYXRjaGVzIHRoZSAnOicgc2VwYXJhdGVkIGxpc3Qgb2YgZ2xv
Yi1zdHlsZQogICAvLyBmaWx0ZXJzIGluICJmaWx0ZXIiLgotICBzdGF0aWMgYm9vbCBNYXRjaGVz
RmlsdGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgY2hhciogZmlsdGVyKTsKKyAgc3RhdGlj
IGJvb2wgTWF0Y2hlc0ZpbHRlcihjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgY29uc3QgY2hhciog
ZmlsdGVyKTsKIH07CiAKIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24ncyBuYW1l
LCByZW1vdmluZyBkaXJlY3RvcnkgcGF0aCBpZiB0aGF0CkBAIC00NzgsMTkgKzQxNiwyMyBAQCBj
bGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UgewogICBPc1N0YWNrVHJhY2VHZXR0ZXJJ
bnRlcmZhY2UoKSB7fQogICB2aXJ0dWFsIH5Pc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UoKSB7
fQogCi0gIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYSBTdHJpbmcu
ICBQYXJhbWV0ZXJzOgorICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFz
IGFuIHN0ZDo6c3RyaW5nLiAgUGFyYW1ldGVyczoKICAgLy8KICAgLy8gICBtYXhfZGVwdGggIC0g
dGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZAogICAvLyAg
ICAgICAgICAgICAgICBpbiB0aGUgdHJhY2UuCiAgIC8vICAgc2tpcF9jb3VudCAtIHRoZSBudW1i
ZXIgb2YgdG9wIGZyYW1lcyB0byBiZSBza2lwcGVkOyBkb2Vzbid0IGNvdW50CiAgIC8vICAgICAg
ICAgICAgICAgIGFnYWluc3QgbWF4X2RlcHRoLgotICB2aXJ0dWFsIFN0cmluZyBDdXJyZW50U3Rh
Y2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCkgPSAwOworICB2aXJ0dWFsIHN0
ZDo6c3RyaW5nIEN1cnJlbnRTdGFja1RyYWNlKGludCBtYXhfZGVwdGgsIGludCBza2lwX2NvdW50
KSA9IDA7CiAKICAgLy8gVXBvbkxlYXZpbmdHVGVzdCgpIHNob3VsZCBiZSBjYWxsZWQgaW1tZWRp
YXRlbHkgYmVmb3JlIEdvb2dsZSBUZXN0IGNhbGxzCiAgIC8vIHVzZXIgY29kZS4gSXQgc2F2ZXMg
c29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBzdGFjayB0aGF0CiAgIC8vIEN1cnJl
bnRTdGFja1RyYWNlKCkgd2lsbCB1c2UgdG8gZmluZCBhbmQgaGlkZSBHb29nbGUgVGVzdCBzdGFj
ayBmcmFtZXMuCiAgIHZpcnR1YWwgdm9pZCBVcG9uTGVhdmluZ0dUZXN0KCkgPSAwOwogCisgIC8v
IFRoaXMgc3RyaW5nIGlzIGluc2VydGVkIGluIHBsYWNlIG9mIHN0YWNrIGZyYW1lcyB0aGF0IGFy
ZSBwYXJ0IG9mCisgIC8vIEdvb2dsZSBUZXN0J3MgaW1wbGVtZW50YXRpb24uCisgIHN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCBrRWxpZGVkRnJhbWVzTWFya2VyOworCiAgcHJpdmF0ZToKICAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2Up
OwogfTsKQEAgLTQ5OCwyMiArNDQwLDIxIEBAIGNsYXNzIE9zU3RhY2tUcmFjZUdldHRlckludGVy
ZmFjZSB7CiAvLyBBIHdvcmtpbmcgaW1wbGVtZW50YXRpb24gb2YgdGhlIE9zU3RhY2tUcmFjZUdl
dHRlckludGVyZmFjZSBpbnRlcmZhY2UuCiBjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXIgOiBwdWJs
aWMgT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlIHsKICBwdWJsaWM6Ci0gIE9zU3RhY2tUcmFj
ZUdldHRlcigpIDogY2FsbGVyX2ZyYW1lXyhOVUxMKSB7fQotICB2aXJ0dWFsIFN0cmluZyBDdXJy
ZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCk7Ci0gIHZpcnR1YWwg
dm9pZCBVcG9uTGVhdmluZ0dUZXN0KCk7CisgIE9zU3RhY2tUcmFjZUdldHRlcigpIHt9CiAKLSAg
Ly8gVGhpcyBzdHJpbmcgaXMgaW5zZXJ0ZWQgaW4gcGxhY2Ugb2Ygc3RhY2sgZnJhbWVzIHRoYXQg
YXJlIHBhcnQgb2YKLSAgLy8gR29vZ2xlIFRlc3QncyBpbXBsZW1lbnRhdGlvbi4KLSAgc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IGtFbGlkZWRGcmFtZXNNYXJrZXI7CisgIHZpcnR1YWwgc3RkOjpz
dHJpbmcgQ3VycmVudFN0YWNrVHJhY2UoaW50IG1heF9kZXB0aCwgaW50IHNraXBfY291bnQpOwor
ICB2aXJ0dWFsIHZvaWQgVXBvbkxlYXZpbmdHVGVzdCgpOwogCiAgcHJpdmF0ZToKLSAgTXV0ZXgg
bXV0ZXhfOyAgLy8gcHJvdGVjdHMgYWxsIGludGVybmFsIHN0YXRlCisjaWYgR1RFU1RfSEFTX0FC
U0wKKyAgTXV0ZXggbXV0ZXhfOyAgLy8gUHJvdGVjdHMgYWxsIGludGVybmFsIHN0YXRlLgogCiAg
IC8vIFdlIHNhdmUgdGhlIHN0YWNrIGZyYW1lIGJlbG93IHRoZSBmcmFtZSB0aGF0IGNhbGxzIHVz
ZXIgY29kZS4KICAgLy8gV2UgZG8gdGhpcyBiZWNhdXNlIHRoZSBhZGRyZXNzIG9mIHRoZSBmcmFt
ZSBpbW1lZGlhdGVseSBiZWxvdwogICAvLyB0aGUgdXNlciBjb2RlIGNoYW5nZXMgYmV0d2VlbiB0
aGUgY2FsbCB0byBVcG9uTGVhdmluZ0dUZXN0KCkKLSAgLy8gYW5kIGFueSBjYWxscyB0byBDdXJy
ZW50U3RhY2tUcmFjZSgpIGZyb20gd2l0aGluIHRoZSB1c2VyIGNvZGUuCi0gIHZvaWQqIGNhbGxl
cl9mcmFtZV87CisgIC8vIGFuZCBhbnkgY2FsbHMgdG8gdGhlIHN0YWNrIHRyYWNlIGNvZGUgZnJv
bSB3aXRoaW4gdGhlIHVzZXIgY29kZS4KKyAgdm9pZCogY2FsbGVyX2ZyYW1lXyA9IG51bGxwdHI7
CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCiAKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOXyhPc1N0YWNrVHJhY2VHZXR0ZXIpOwogfTsKQEAgLTUyMiw3ICs0NjMsNyBAQCBjbGFz
cyBPc1N0YWNrVHJhY2VHZXR0ZXIgOiBwdWJsaWMgT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNl
IHsKIHN0cnVjdCBUcmFjZUluZm8gewogICBjb25zdCBjaGFyKiBmaWxlOwogICBpbnQgbGluZTsK
LSAgU3RyaW5nIG1lc3NhZ2U7CisgIHN0ZDo6c3RyaW5nIG1lc3NhZ2U7CiB9OwogCiAvLyBUaGlz
IGlzIHRoZSBkZWZhdWx0IGdsb2JhbCB0ZXN0IHBhcnQgcmVzdWx0IHJlcG9ydGVyIHVzZWQgaW4g
VW5pdFRlc3RJbXBsLgpAQCAtNjA2LDE1ICs1NDcsMjUgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0
VGVzdEltcGwgewogICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZmFpbGVkIHRlc3RzLgogICBpbnQg
ZmFpbGVkX3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlz
YWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0LgorICBp
bnQgcmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CisKICAgLy8gR2V0cyB0
aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzLgogICBpbnQgZGlzYWJsZWRfdGVzdF9jb3VudCgp
IGNvbnN0OwogCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0cyB0byBiZSBwcmludGVkIGlu
IHRoZSBYTUwgcmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV90ZXN0X2NvdW50KCkgY29uc3Q7CisK
ICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0cy4KICAgaW50IHRvdGFsX3Rlc3RfY291
bnQoKSBjb25zdDsKIAogICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdGhhdCBzaG91bGQg
cnVuLgogICBpbnQgdGVzdF90b19ydW5fY291bnQoKSBjb25zdDsKIAorICAvLyBHZXRzIHRoZSB0
aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0gc3RhcnQsIGluIG1zIGZyb20gdGhlIHN0YXJ0IG9mIHRo
ZQorICAvLyBVTklYIGVwb2NoLgorICBUaW1lSW5NaWxsaXMgc3RhcnRfdGltZXN0YW1wKCkgY29u
c3QgeyByZXR1cm4gc3RhcnRfdGltZXN0YW1wXzsgfQorCiAgIC8vIEdldHMgdGhlIGVsYXBzZWQg
dGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5NaWxsaXMgZWxhcHNlZF90aW1lKCkgY29u
c3QgeyByZXR1cm4gZWxhcHNlZF90aW1lXzsgfQogCkBAIC02NjMsNyArNjE0LDcgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBnZXR0ZXIsIGFuZCByZXR1cm5zIGl0Lgog
ICBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UqIG9zX3N0YWNrX3RyYWNlX2dldHRlcigpOwog
Ci0gIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYSBTdHJpbmcuCisg
IC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYW4gc3RkOjpzdHJpbmcu
CiAgIC8vCiAgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMgdG8gYmUgaW5j
bHVkZWQgaXMgc3BlY2lmaWVkIGJ5CiAgIC8vIHRoZSBndGVzdF9zdGFja190cmFjZV9kZXB0aCBm
bGFnLiAgVGhlIHNraXBfY291bnQgcGFyYW1ldGVyCkBAIC02NzMsNyArNjI0LDcgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBGb3IgZXhhbXBsZSwgaWYgRm9vKCkgY2Fs
bHMgQmFyKCksIHdoaWNoIGluIHR1cm4gY2FsbHMKICAgLy8gQ3VycmVudE9zU3RhY2tUcmFjZUV4
Y2VwdFRvcCgxKSwgRm9vKCkgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKICAgLy8gdHJhY2UgYnV0
IEJhcigpIGFuZCBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKCkgd29uJ3QuCi0gIFN0cmlu
ZyBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKGludCBza2lwX2NvdW50KTsKKyAgc3RkOjpz
dHJpbmcgQ3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcChpbnQgc2tpcF9jb3VudCkgR1RFU1Rf
Tk9fSU5MSU5FXzsKIAogICAvLyBGaW5kcyBhbmQgcmV0dXJucyBhIFRlc3RDYXNlIHdpdGggdGhl
IGdpdmVuIG5hbWUuICBJZiBvbmUgZG9lc24ndAogICAvLyBleGlzdCwgY3JlYXRlcyBvbmUgYW5k
IHJldHVybnMgaXQuCkBAIC02ODEsMTAgKzYzMiwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRU
ZXN0SW1wbCB7CiAgIC8vIEFyZ3VtZW50czoKICAgLy8KICAgLy8gICB0ZXN0X2Nhc2VfbmFtZTog
bmFtZSBvZiB0aGUgdGVzdCBjYXNlCisgIC8vICAgdHlwZV9wYXJhbTogICAgIHRoZSBuYW1lIG9m
IHRoZSB0ZXN0J3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYKKyAgLy8gICAgICAgICAgICAg
ICAgICAgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0Lgog
ICAvLyAgIHNldF91cF90YzogICAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHNldHMg
dXAgdGhlIHRlc3QgY2FzZQogICAvLyAgIHRlYXJfZG93bl90YzogICBwb2ludGVyIHRvIHRoZSBm
dW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQogICBUZXN0Q2FzZSogR2V0VGVz
dENhc2UoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBjb21tZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogdHlwZV9wYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3Q6OlNldFVwVGVzdENh
c2VGdW5jIHNldF91cF90YywKICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3Q6OlRlYXJEb3du
VGVzdENhc2VGdW5jIHRlYXJfZG93bl90Yyk7CiAKQEAgLTY5Nyw3ICs2NTAsNyBAQCBjbGFzcyBH
VEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vICAgdGVzdF9pbmZvOiAgICB0aGUgVGVzdElu
Zm8gb2JqZWN0CiAgIHZvaWQgQWRkVGVzdEluZm8oVGVzdDo6U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0
X3VwX3RjLAogICAgICAgICAgICAgICAgICAgIFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRl
YXJfZG93bl90YywKLSAgICAgICAgICAgICAgICAgICBUZXN0SW5mbyAqIHRlc3RfaW5mbykgewor
ICAgICAgICAgICAgICAgICAgIFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKICAgICAvLyBJbiBvcmRl
ciB0byBzdXBwb3J0IHRocmVhZC1zYWZlIGRlYXRoIHRlc3RzLCB3ZSBuZWVkIHRvCiAgICAgLy8g
cmVtZW1iZXIgdGhlIG9yaWdpbmFsIHdvcmtpbmcgZGlyZWN0b3J5IHdoZW4gdGhlIHRlc3QgcHJv
Z3JhbQogICAgIC8vIHdhcyBmaXJzdCBpbnZva2VkLiAgV2UgY2Fubm90IGRvIHRoaXMgaW4gUlVO
X0FMTF9URVNUUygpLCBhcwpAQCAtNzEyLDE4ICs2NjUsMTYgQEAgY2xhc3MgR1RFU1RfQVBJXyBV
bml0VGVzdEltcGwgewogICAgIH0KIAogICAgIEdldFRlc3RDYXNlKHRlc3RfaW5mby0+dGVzdF9j
YXNlX25hbWUoKSwKLSAgICAgICAgICAgICAgICB0ZXN0X2luZm8tPnRlc3RfY2FzZV9jb21tZW50
KCksCisgICAgICAgICAgICAgICAgdGVzdF9pbmZvLT50eXBlX3BhcmFtKCksCiAgICAgICAgICAg
ICAgICAgc2V0X3VwX3RjLAogICAgICAgICAgICAgICAgIHRlYXJfZG93bl90YyktPkFkZFRlc3RJ
bmZvKHRlc3RfaW5mbyk7CiAgIH0KIAotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiAgIC8vIFJl
dHVybnMgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgb2JqZWN0IHVzZWQgdG8ga2VlcCB0
cmFjayBvZgogICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFuZCBpbnN0YW50aWF0ZSBh
bmQgcmVnaXN0ZXIgdGhlbS4KICAgaW50ZXJuYWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lz
dHJ5JiBwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKSB7CiAgICAgcmV0dXJuIHBhcmFtZXRl
cml6ZWRfdGVzdF9yZWdpc3RyeV87CiAgIH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RF
U1QKIAogICAvLyBTZXRzIHRoZSBUZXN0Q2FzZSBvYmplY3QgZm9yIHRoZSB0ZXN0IHRoYXQncyBj
dXJyZW50bHkgcnVubmluZy4KICAgdm9pZCBzZXRfY3VycmVudF90ZXN0X2Nhc2UoVGVzdENhc2Uq
IGFfY3VycmVudF90ZXN0X2Nhc2UpIHsKQEAgLTczOCwyNyArNjg5LDM1IEBAIGNsYXNzIEdURVNU
X0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgfQogCiAgIC8vIFJlZ2lzdGVycyBhbGwgcGFyYW1ldGVy
aXplZCB0ZXN0cyBkZWZpbmVkIHVzaW5nIFRFU1RfUCBhbmQKLSAgLy8gSU5TVEFOVElBVEVfVEVT
VF9QLCBjcmVhdGluZyByZWd1bGFyIHRlc3RzIGZvciBlYWNoIHRlc3QvcGFyYW1ldGVyCi0gIC8v
IGNvbWJpbmF0aW9uLiBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIG1vcmUgdGhlbiBvbmNlOyBp
dCBoYXMKLSAgLy8gZ3VhcmRzIHByb3RlY3RpbmcgZnJvbSByZWdpc3RlcmluZyB0aGUgdGVzdHMg
bW9yZSB0aGVuIG9uY2UuCi0gIC8vIElmIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGRp
c2FibGVkLCBSZWdpc3RlclBhcmFtZXRlcml6ZWRUZXN0cwotICAvLyBpcyBwcmVzZW50IGJ1dCBk
b2VzIG5vdGhpbmcuCisgIC8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QLCBjcmVhdGluZyByZWd1
bGFyIHRlc3RzIGZvciBlYWNoIHRlc3QvcGFyYW1ldGVyCisgIC8vIGNvbWJpbmF0aW9uLiBUaGlz
IG1ldGhvZCBjYW4gYmUgY2FsbGVkIG1vcmUgdGhlbiBvbmNlOyBpdCBoYXMgZ3VhcmRzCisgIC8v
IHByb3RlY3RpbmcgZnJvbSByZWdpc3RlcmluZyB0aGUgdGVzdHMgbW9yZSB0aGVuIG9uY2UuICBJ
ZgorICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBkaXNhYmxlZCwgUmVnaXN0ZXJQ
YXJhbWV0ZXJpemVkVGVzdHMgaXMKKyAgLy8gcHJlc2VudCBidXQgZG9lcyBub3RoaW5nLgogICB2
b2lkIFJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzKCk7CiAKICAgLy8gUnVucyBhbGwgdGVzdHMg
aW4gdGhpcyBVbml0VGVzdCBvYmplY3QsIHByaW50cyB0aGUgcmVzdWx0LCBhbmQKLSAgLy8gcmV0
dXJucyAwIGlmIGFsbCB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3IgMSBvdGhlcndpc2UuICBJZiBh
bnkKLSAgLy8gZXhjZXB0aW9uIGlzIHRocm93biBkdXJpbmcgYSB0ZXN0IG9uIFdpbmRvd3MsIHRo
aXMgdGVzdCBpcwotICAvLyBjb25zaWRlcmVkIHRvIGJlIGZhaWxlZCwgYnV0IHRoZSByZXN0IG9m
IHRoZSB0ZXN0cyB3aWxsIHN0aWxsIGJlCi0gIC8vIHJ1bi4gIChXZSBkaXNhYmxlIGV4Y2VwdGlv
bnMgb24gTGludXggYW5kIE1hYyBPUyBYLCBzbyB0aGUgaXNzdWUKLSAgLy8gZG9lc24ndCBhcHBs
eSB0aGVyZS4pCi0gIGludCBSdW5BbGxUZXN0cygpOwotCi0gIC8vIENsZWFycyB0aGUgcmVzdWx0
cyBvZiBhbGwgdGVzdHMsIGluY2x1ZGluZyB0aGUgYWQgaG9jIHRlc3QuCi0gIHZvaWQgQ2xlYXJS
ZXN1bHQoKSB7CisgIC8vIHJldHVybnMgdHJ1ZSBpZiBhbGwgdGVzdHMgYXJlIHN1Y2Nlc3NmdWwu
ICBJZiBhbnkgZXhjZXB0aW9uIGlzCisgIC8vIHRocm93biBkdXJpbmcgYSB0ZXN0LCB0aGlzIHRl
c3QgaXMgY29uc2lkZXJlZCB0byBiZSBmYWlsZWQsIGJ1dAorICAvLyB0aGUgcmVzdCBvZiB0aGUg
dGVzdHMgd2lsbCBzdGlsbCBiZSBydW4uCisgIGJvb2wgUnVuQWxsVGVzdHMoKTsKKworICAvLyBD
bGVhcnMgdGhlIHJlc3VsdHMgb2YgYWxsIHRlc3RzLCBleGNlcHQgdGhlIGFkIGhvYyB0ZXN0cy4K
KyAgdm9pZCBDbGVhck5vbkFkSG9jVGVzdFJlc3VsdCgpIHsKICAgICBGb3JFYWNoKHRlc3RfY2Fz
ZXNfLCBUZXN0Q2FzZTo6Q2xlYXJUZXN0Q2FzZVJlc3VsdCk7CisgIH0KKworICAvLyBDbGVhcnMg
dGhlIHJlc3VsdHMgb2YgYWQtaG9jIHRlc3QgYXNzZXJ0aW9ucy4KKyAgdm9pZCBDbGVhckFkSG9j
VGVzdFJlc3VsdCgpIHsKICAgICBhZF9ob2NfdGVzdF9yZXN1bHRfLkNsZWFyKCk7CiAgIH0KIAor
ICAvLyBBZGRzIGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0
IHdoZW4gaW52b2tlZCBpbiBhCisgIC8vIGNvbnRleHQgb2YgYSB0ZXN0IG9yIGEgdGVzdCBjYXNl
LCBvciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNldC4gSWYgdGhlCisgIC8vIHJlc3VsdCBhbHJl
YWR5IGNvbnRhaW5zIGEgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBrZXksIHRoZSB2YWx1ZSB3aWxs
IGJlCisgIC8vIHVwZGF0ZWQuCisgIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3QgVGVzdFByb3Bl
cnR5JiB0ZXN0X3Byb3BlcnR5KTsKKwogICBlbnVtIFJlYWN0aW9uVG9TaGFyZGluZyB7CiAgICAg
SE9OT1JfU0hBUkRJTkdfUFJPVE9DT0wsCiAgICAgSUdOT1JFX1NIQVJESU5HX1BST1RPQ09MCkBA
IC04MTcsNiArNzc2LDEyIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8g
VW5pdFRlc3RPcHRpb25zLiBNdXN0IG5vdCBiZSBjYWxsZWQgYmVmb3JlIEluaXRHb29nbGVUZXN0
LgogICB2b2lkIENvbmZpZ3VyZVhtbE91dHB1dCgpOwogCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9S
RVNVTFRTXworICAvLyBJbml0aWFsaXplcyB0aGUgZXZlbnQgbGlzdGVuZXIgZm9yIHN0cmVhbWlu
ZyB0ZXN0IHJlc3VsdHMgdG8gYSBzb2NrZXQuCisgIC8vIE11c3Qgbm90IGJlIGNhbGxlZCBiZWZv
cmUgSW5pdEdvb2dsZVRlc3QuCisgIHZvaWQgQ29uZmlndXJlU3RyZWFtaW5nT3V0cHV0KCk7Cisj
ZW5kaWYKKwogICAvLyBQZXJmb3JtcyBpbml0aWFsaXphdGlvbiBkZXBlbmRlbnQgdXBvbiBmbGFn
IHZhbHVlcyBvYnRhaW5lZCBpbgogICAvLyBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkuICBJcyBj
YWxsZWQgZnJvbSBJbml0R29vZ2xlVGVzdCBhZnRlciB0aGUgY2FsbCB0bwogICAvLyBQYXJzZUdv
b2dsZVRlc3RGbGFnc09ubHkuICBJbiBjYXNlIGEgdXNlciBuZWdsZWN0cyB0byBjYWxsIEluaXRH
b29nbGVUZXN0CkBAIC04MzcsOSArODAyLDE3IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJ
bXBsIHsKICAgLy8gUmVzdG9yZXMgdGhlIHRlc3QgY2FzZXMgYW5kIHRlc3RzIHRvIHRoZWlyIG9y
ZGVyIGJlZm9yZSB0aGUgZmlyc3Qgc2h1ZmZsZS4KICAgdm9pZCBVbnNodWZmbGVUZXN0cygpOwog
CisgIC8vIFJldHVybnMgdGhlIHZhbHVlIG9mIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykg
YXQgdGhlIG1vbWVudAorICAvLyBVbml0VGVzdDo6UnVuKCkgc3RhcnRzLgorICBib29sIGNhdGNo
X2V4Y2VwdGlvbnMoKSBjb25zdCB7IHJldHVybiBjYXRjaF9leGNlcHRpb25zXzsgfQorCiAgcHJp
dmF0ZToKICAgZnJpZW5kIGNsYXNzIDo6dGVzdGluZzo6VW5pdFRlc3Q7CiAKKyAgLy8gVXNlZCBi
eSBVbml0VGVzdDo6UnVuKCkgdG8gY2FwdHVyZSB0aGUgc3RhdGUgb2YKKyAgLy8gR1RFU1RfRkxB
RyhjYXRjaF9leGNlcHRpb25zKSBhdCB0aGUgbW9tZW50IGl0IHN0YXJ0cy4KKyAgdm9pZCBzZXRf
Y2F0Y2hfZXhjZXB0aW9ucyhib29sIHZhbHVlKSB7IGNhdGNoX2V4Y2VwdGlvbnNfID0gdmFsdWU7
IH0KKwogICAvLyBUaGUgVW5pdFRlc3Qgb2JqZWN0IHRoYXQgb3ducyB0aGlzIGltcGxlbWVudGF0
aW9uIG9iamVjdC4KICAgVW5pdFRlc3QqIGNvbnN0IHBhcmVudF87CiAKQEAgLTg3NiwxNCArODQ5
LDEyIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gc2h1ZmZsZWQgb3Jk
ZXIuCiAgIHN0ZDo6dmVjdG9yPGludD4gdGVzdF9jYXNlX2luZGljZXNfOwogCi0jaWYgR1RFU1Rf
SEFTX1BBUkFNX1RFU1QKICAgLy8gUGFyYW1ldGVyaXplZFRlc3RSZWdpc3RyeSBvYmplY3QgdXNl
ZCB0byByZWdpc3RlciB2YWx1ZS1wYXJhbWV0ZXJpemVkCiAgIC8vIHRlc3RzLgogICBpbnRlcm5h
bDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgcGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lz
dHJ5XzsKIAogICAvLyBJbmRpY2F0ZXMgd2hldGhlciBSZWdpc3RlclBhcmFtZXRlcml6ZWRUZXN0
cygpIGhhcyBiZWVuIGNhbGxlZCBhbHJlYWR5LgogICBib29sIHBhcmFtZXRlcml6ZWRfdGVzdHNf
cmVnaXN0ZXJlZF87Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCiAKICAgLy8gSW5k
ZXggb2YgdGhlIGxhc3QgZGVhdGggdGVzdCBjYXNlIHJlZ2lzdGVyZWQuICBJbml0aWFsbHkgLTEu
CiAgIGludCBsYXN0X2RlYXRoX3Rlc3RfY2FzZV87CkBAIC05MjksNiArOTAwLDEwIEBAIGNsYXNz
IEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gT3VyIHJhbmRvbSBudW1iZXIgZ2VuZXJh
dG9yLgogICBpbnRlcm5hbDo6UmFuZG9tIHJhbmRvbV87CiAKKyAgLy8gVGhlIHRpbWUgb2YgdGhl
IHRlc3QgcHJvZ3JhbSBzdGFydCwgaW4gbXMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlCisgIC8vIFVO
SVggZXBvY2guCisgIFRpbWVJbk1pbGxpcyBzdGFydF90aW1lc3RhbXBfOworCiAgIC8vIEhvdyBs
b25nIHRoZSB0ZXN0IHRvb2sgdG8gcnVuLCBpbiBtaWxsaXNlY29uZHMuCiAgIFRpbWVJbk1pbGxp
cyBlbGFwc2VkX3RpbWVfOwogCkBAIC05NDIsNiArOTE3LDEwIEBAIGNsYXNzIEdURVNUX0FQSV8g
VW5pdFRlc3RJbXBsIHsKICAgLy8gQSBwZXItdGhyZWFkIHN0YWNrIG9mIHRyYWNlcyBjcmVhdGVk
IGJ5IHRoZSBTQ09QRURfVFJBQ0UoKSBtYWNyby4KICAgaW50ZXJuYWw6OlRocmVhZExvY2FsPHN0
ZDo6dmVjdG9yPFRyYWNlSW5mbz4gPiBndGVzdF90cmFjZV9zdGFja187CiAKKyAgLy8gVGhlIHZh
bHVlIG9mIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgYXQgdGhlIG1vbWVudCBSdW5BbGxU
ZXN0cygpCisgIC8vIHN0YXJ0cy4KKyAgYm9vbCBjYXRjaF9leGNlcHRpb25zXzsKKwogICBHVEVT
VF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFVuaXRUZXN0SW1wbCk7CiB9OyAgLy8gY2xhc3Mg
VW5pdFRlc3RJbXBsCiAKQEAgLTk1MSwxNCArOTMwLDE2IEBAIGlubGluZSBVbml0VGVzdEltcGwq
IEdldFVuaXRUZXN0SW1wbCgpIHsKICAgcmV0dXJuIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5p
bXBsKCk7CiB9CiAKKyNpZiBHVEVTVF9VU0VTX1NJTVBMRV9SRQorCiAvLyBJbnRlcm5hbCBoZWxw
ZXIgZnVuY3Rpb25zIGZvciBpbXBsZW1lbnRpbmcgdGhlIHNpbXBsZSByZWd1bGFyCiAvLyBleHBy
ZXNzaW9uIG1hdGNoZXIuCiBHVEVTVF9BUElfIGJvb2wgSXNJblNldChjaGFyIGNoLCBjb25zdCBj
aGFyKiBzdHIpOwotR1RFU1RfQVBJXyBib29sIElzRGlnaXQoY2hhciBjaCk7Ci1HVEVTVF9BUElf
IGJvb2wgSXNQdW5jdChjaGFyIGNoKTsKK0dURVNUX0FQSV8gYm9vbCBJc0FzY2lpRGlnaXQoY2hh
ciBjaCk7CitHVEVTVF9BUElfIGJvb2wgSXNBc2NpaVB1bmN0KGNoYXIgY2gpOwogR1RFU1RfQVBJ
XyBib29sIElzUmVwZWF0KGNoYXIgY2gpOwotR1RFU1RfQVBJXyBib29sIElzV2hpdGVTcGFjZShj
aGFyIGNoKTsKLUdURVNUX0FQSV8gYm9vbCBJc1dvcmRDaGFyKGNoYXIgY2gpOworR1RFU1RfQVBJ
XyBib29sIElzQXNjaWlXaGl0ZVNwYWNlKGNoYXIgY2gpOworR1RFU1RfQVBJXyBib29sIElzQXNj
aWlXb3JkQ2hhcihjaGFyIGNoKTsKIEdURVNUX0FQSV8gYm9vbCBJc1ZhbGlkRXNjYXBlKGNoYXIg
Y2gpOwogR1RFU1RfQVBJXyBib29sIEF0b21NYXRjaGVzQ2hhcihib29sIGVzY2FwZWQsIGNoYXIg
cGF0dGVybiwgY2hhciBjaCk7CiBHVEVTVF9BUElfIGJvb2wgVmFsaWRhdGVSZWdleChjb25zdCBj
aGFyKiByZWdleCk7CkBAIC05NjcsNiArOTQ4LDggQEAgR1RFU1RfQVBJXyBib29sIE1hdGNoUmVw
ZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKAogICAgIGJvb2wgZXNjYXBlZCwgY2hhciBjaCwgY2hhciBy
ZXBlYXQsIGNvbnN0IGNoYXIqIHJlZ2V4LCBjb25zdCBjaGFyKiBzdHIpOwogR1RFU1RfQVBJXyBi
b29sIE1hdGNoUmVnZXhBbnl3aGVyZShjb25zdCBjaGFyKiByZWdleCwgY29uc3QgY2hhciogc3Ry
KTsKIAorI2VuZGlmICAvLyBHVEVTVF9VU0VTX1NJTVBMRV9SRQorCiAvLyBQYXJzZXMgdGhlIGNv
bW1hbmQgbGluZSBmb3IgR29vZ2xlIFRlc3QgZmxhZ3MsIHdpdGhvdXQgaW5pdGlhbGl6aW5nCiAv
LyBvdGhlciBwYXJ0cyBvZiBHb29nbGUgVGVzdC4KIEdURVNUX0FQSV8gdm9pZCBQYXJzZUdvb2ds
ZVRlc3RGbGFnc09ubHkoaW50KiBhcmdjLCBjaGFyKiogYXJndik7CkBAIC05NzYsMzMgKzk1OSw3
IEBAIEdURVNUX0FQSV8gdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoaW50KiBhcmdjLCB3
Y2hhcl90KiogYXJndik7CiAKIC8vIFJldHVybnMgdGhlIG1lc3NhZ2UgZGVzY3JpYmluZyB0aGUg
bGFzdCBzeXN0ZW0gZXJyb3IsIHJlZ2FyZGxlc3Mgb2YgdGhlCiAvLyBwbGF0Zm9ybS4KLVN0cmlu
ZyBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpOwotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotLy8g
UHJvdmlkZXMgbGVhay1zYWZlIFdpbmRvd3Mga2VybmVsIGhhbmRsZSBvd25lcnNoaXAuCi1jbGFz
cyBBdXRvSGFuZGxlIHsKLSBwdWJsaWM6Ci0gIEF1dG9IYW5kbGUoKSA6IGhhbmRsZV8oSU5WQUxJ
RF9IQU5ETEVfVkFMVUUpIHt9Ci0gIGV4cGxpY2l0IEF1dG9IYW5kbGUoSEFORExFIGhhbmRsZSkg
OiBoYW5kbGVfKGhhbmRsZSkge30KLQotICB+QXV0b0hhbmRsZSgpIHsgUmVzZXQoKTsgfQotCi0g
IEhBTkRMRSBHZXQoKSBjb25zdCB7IHJldHVybiBoYW5kbGVfOyB9Ci0gIHZvaWQgUmVzZXQoKSB7
IFJlc2V0KElOVkFMSURfSEFORExFX1ZBTFVFKTsgfQotICB2b2lkIFJlc2V0KEhBTkRMRSBoYW5k
bGUpIHsKLSAgICBpZiAoaGFuZGxlICE9IGhhbmRsZV8pIHsKLSAgICAgIGlmIChoYW5kbGVfICE9
IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICA6OkNsb3NlSGFuZGxlKGhhbmRsZV8pOwot
ICAgICAgaGFuZGxlXyA9IGhhbmRsZTsKLSAgICB9Ci0gIH0KLQotIHByaXZhdGU6Ci0gIEhBTkRM
RSBoYW5kbGVfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQXV0b0hhbmRs
ZSk7Ci19OwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCitHVEVTVF9BUElfIHN0ZDo6c3Ry
aW5nIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCk7CiAKIC8vIEF0dGVtcHRzIHRvIHBhcnNlIGEg
c3RyaW5nIGludG8gYSBwb3NpdGl2ZSBpbnRlZ2VyIHBvaW50ZWQgdG8gYnkgdGhlCiAvLyBudW1i
ZXIgcGFyYW1ldGVyLiAgUmV0dXJucyB0cnVlIGlmIHRoYXQgaXMgcG9zc2libGUuCkBAIC0xMDEz
LDcgKzk3MCw3IEBAIGJvb2wgUGFyc2VOYXR1cmFsTnVtYmVyKGNvbnN0IDo6c3RkOjpzdHJpbmcm
IHN0ciwgSW50ZWdlciogbnVtYmVyKSB7CiAgIC8vIEZhaWwgZmFzdCBpZiB0aGUgZ2l2ZW4gc3Ry
aW5nIGRvZXMgbm90IGJlZ2luIHdpdGggYSBkaWdpdDsKICAgLy8gdGhpcyBieXBhc3NlcyBzdHJ0
b1hYWCdzICJvcHRpb25hbCBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIHBsdXMKICAgLy8gb3IgbWlu
dXMgc2lnbiIgc2VtYW50aWNzLCB3aGljaCBhcmUgdW5kZXNpcmFibGUgaGVyZS4KLSAgaWYgKHN0
ci5lbXB0eSgpIHx8ICFpc2RpZ2l0KHN0clswXSkpIHsKKyAgaWYgKHN0ci5lbXB0eSgpIHx8ICFJ
c0RpZ2l0KHN0clswXSkpIHsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KICAgZXJybm8gPSAwOwpA
QCAtMTAyMSwxNyArOTc4LDIzIEBAIGJvb2wgUGFyc2VOYXR1cmFsTnVtYmVyKGNvbnN0IDo6c3Rk
OjpzdHJpbmcmIHN0ciwgSW50ZWdlciogbnVtYmVyKSB7CiAgIGNoYXIqIGVuZDsKICAgLy8gQmln
Z2VzdENvbnZlcnRpYmxlIGlzIHRoZSBsYXJnZXN0IGludGVnZXIgdHlwZSB0aGF0IHN5c3RlbS1w
cm92aWRlZAogICAvLyBzdHJpbmctdG8tbnVtYmVyIGNvbnZlcnNpb24gcm91dGluZXMgY2FuIHJl
dHVybi4KLSNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVkKF9fR05VQ19fKQorCisjIGlm
IEdURVNUX09TX1dJTkRPV1MgJiYgIWRlZmluZWQoX19HTlVDX18pCisKICAgLy8gTVNWQyBhbmQg
QysrIEJ1aWxkZXIgZGVmaW5lIF9faW50NjQgaW5zdGVhZCBvZiB0aGUgc3RhbmRhcmQgbG9uZyBs
b25nLgogICB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgQmlnZ2VzdENvbnZlcnRpYmxlOwogICBj
b25zdCBCaWdnZXN0Q29udmVydGlibGUgcGFyc2VkID0gX3N0cnRvdWk2NChzdHIuY19zdHIoKSwg
JmVuZCwgMTApOwotI2Vsc2UKKworIyBlbHNlCisKICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxv
bmcgQmlnZ2VzdENvbnZlcnRpYmxlOyAgLy8gTk9MSU5UCiAgIGNvbnN0IEJpZ2dlc3RDb252ZXJ0
aWJsZSBwYXJzZWQgPSBzdHJ0b3VsbChzdHIuY19zdHIoKSwgJmVuZCwgMTApOwotI2VuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVkKF9fR05VQ19fKQorCisjIGVuZGlmICAvLyBH
VEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVkKF9fR05VQ19fKQorCiAgIGNvbnN0IGJvb2wgcGFy
c2Vfc3VjY2VzcyA9ICplbmQgPT0gJ1wwJyAmJiBlcnJubyA9PSAwOwogCi0gIC8vIFRPRE8odmxh
ZGxAZ29vZ2xlLmNvbSk6IENvbnZlcnQgdGhpcyB0byBjb21waWxlIHRpbWUgYXNzZXJ0aW9uIHdo
ZW4gaXQgaXMKKyAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBjb21waWxlIHRpbWUgYXNzZXJ0
aW9uIHdoZW4gaXQgaXMKICAgLy8gYXZhaWxhYmxlLgogICBHVEVTVF9DSEVDS18oc2l6ZW9mKElu
dGVnZXIpIDw9IHNpemVvZihwYXJzZWQpKTsKIApAQCAtMTA1Myw4ICsxMDE2LDkgQEAgYm9vbCBQ
YXJzZU5hdHVyYWxOdW1iZXIoY29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyLCBJbnRlZ2VyKiBudW1i
ZXIpIHsKIGNsYXNzIFRlc3RSZXN1bHRBY2Nlc3NvciB7CiAgcHVibGljOgogICBzdGF0aWMgdm9p
ZCBSZWNvcmRQcm9wZXJ0eShUZXN0UmVzdWx0KiB0ZXN0X3Jlc3VsdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UHJvcGVydHkmIHByb3BlcnR5KSB7Ci0gICAg
dGVzdF9yZXN1bHQtPlJlY29yZFByb3BlcnR5KHByb3BlcnR5KTsKKyAgICB0ZXN0X3Jlc3VsdC0+
UmVjb3JkUHJvcGVydHkoeG1sX2VsZW1lbnQsIHByb3BlcnR5KTsKICAgfQogCiAgIHN0YXRpYyB2
b2lkIENsZWFyVGVzdFBhcnRSZXN1bHRzKFRlc3RSZXN1bHQqIHRlc3RfcmVzdWx0KSB7CkBAIC0x
MDY3LDcgKzEwMzEsMTU3IEBAIGNsYXNzIFRlc3RSZXN1bHRBY2Nlc3NvciB7CiAgIH0KIH07CiAK
KyNpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKKy8vIFN0cmVhbXMgdGVzdCByZXN1bHRz
IHRvIHRoZSBnaXZlbiBwb3J0IG9uIHRoZSBnaXZlbiBob3N0IG1hY2hpbmUuCitjbGFzcyBTdHJl
YW1pbmdMaXN0ZW5lciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKKyBwdWJsaWM6
CisgIC8vIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHdyaXRpbmcgc3RyaW5ncyB0byBhIHNvY2tl
dC4KKyAgY2xhc3MgQWJzdHJhY3RTb2NrZXRXcml0ZXIgeworICAgcHVibGljOgorICAgIHZpcnR1
YWwgfkFic3RyYWN0U29ja2V0V3JpdGVyKCkge30KKworICAgIC8vIFNlbmRzIGEgc3RyaW5nIHRv
IHRoZSBzb2NrZXQuCisgICAgdmlydHVhbCB2b2lkIFNlbmQoY29uc3Qgc3RkOjpzdHJpbmcmIG1l
c3NhZ2UpID0gMDsKKworICAgIC8vIENsb3NlcyB0aGUgc29ja2V0LgorICAgIHZpcnR1YWwgdm9p
ZCBDbG9zZUNvbm5lY3Rpb24oKSB7fQorCisgICAgLy8gU2VuZHMgYSBzdHJpbmcgYW5kIGEgbmV3
bGluZSB0byB0aGUgc29ja2V0LgorICAgIHZvaWQgU2VuZExuKGNvbnN0IHN0ZDo6c3RyaW5nJiBt
ZXNzYWdlKSB7IFNlbmQobWVzc2FnZSArICJcbiIpOyB9CisgIH07CisKKyAgLy8gQ29uY3JldGUg
Y2xhc3MgZm9yIGFjdHVhbGx5IHdyaXRpbmcgc3RyaW5ncyB0byBhIHNvY2tldC4KKyAgY2xhc3Mg
U29ja2V0V3JpdGVyIDogcHVibGljIEFic3RyYWN0U29ja2V0V3JpdGVyIHsKKyAgIHB1YmxpYzoK
KyAgICBTb2NrZXRXcml0ZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGhvc3QsIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBwb3J0KQorICAgICAgICA6IHNvY2tmZF8oLTEpLCBob3N0X25hbWVfKGhvc3QpLCBwb3J0
X251bV8ocG9ydCkgeworICAgICAgTWFrZUNvbm5lY3Rpb24oKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIH5Tb2NrZXRXcml0ZXIoKSB7CisgICAgICBpZiAoc29ja2ZkXyAhPSAtMSkKKyAgICAgICAg
Q2xvc2VDb25uZWN0aW9uKCk7CisgICAgfQorCisgICAgLy8gU2VuZHMgYSBzdHJpbmcgdG8gdGhl
IHNvY2tldC4KKyAgICB2aXJ0dWFsIHZvaWQgU2VuZChjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2Fn
ZSkgeworICAgICAgR1RFU1RfQ0hFQ0tfKHNvY2tmZF8gIT0gLTEpCisgICAgICAgICAgPDwgIlNl
bmQoKSBjYW4gYmUgY2FsbGVkIG9ubHkgd2hlbiB0aGVyZSBpcyBhIGNvbm5lY3Rpb24uIjsKKwor
ICAgICAgY29uc3QgaW50IGxlbiA9IHN0YXRpY19jYXN0PGludD4obWVzc2FnZS5sZW5ndGgoKSk7
CisgICAgICBpZiAod3JpdGUoc29ja2ZkXywgbWVzc2FnZS5jX3N0cigpLCBsZW4pICE9IGxlbikg
eworICAgICAgICBHVEVTVF9MT0dfKFdBUk5JTkcpCisgICAgICAgICAgICA8PCAic3RyZWFtX3Jl
c3VsdF90bzogZmFpbGVkIHRvIHN0cmVhbSB0byAiCisgICAgICAgICAgICA8PCBob3N0X25hbWVf
IDw8ICI6IiA8PCBwb3J0X251bV87CisgICAgICB9CisgICAgfQorCisgICBwcml2YXRlOgorICAg
IC8vIENyZWF0ZXMgYSBjbGllbnQgc29ja2V0IGFuZCBjb25uZWN0cyB0byB0aGUgc2VydmVyLgor
ICAgIHZvaWQgTWFrZUNvbm5lY3Rpb24oKTsKKworICAgIC8vIENsb3NlcyB0aGUgc29ja2V0Lgor
ICAgIHZvaWQgQ2xvc2VDb25uZWN0aW9uKCkgeworICAgICAgR1RFU1RfQ0hFQ0tfKHNvY2tmZF8g
IT0gLTEpCisgICAgICAgICAgPDwgIkNsb3NlQ29ubmVjdGlvbigpIGNhbiBiZSBjYWxsZWQgb25s
eSB3aGVuIHRoZXJlIGlzIGEgY29ubmVjdGlvbi4iOworCisgICAgICBjbG9zZShzb2NrZmRfKTsK
KyAgICAgIHNvY2tmZF8gPSAtMTsKKyAgICB9CisKKyAgICBpbnQgc29ja2ZkXzsgIC8vIHNvY2tl
dCBmaWxlIGRlc2NyaXB0b3IKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBob3N0X25hbWVfOworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIHBvcnRfbnVtXzsKKworICAgIEdURVNUX0RJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTl8oU29ja2V0V3JpdGVyKTsKKyAgfTsgIC8vIGNsYXNzIFNvY2tldFdyaXRlcgor
CisgIC8vIEVzY2FwZXMgJz0nLCAnJicsICclJywgYW5kICdcbicgY2hhcmFjdGVycyBpbiBzdHIg
YXMgIiV4eCIuCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBVcmxFbmNvZGUoY29uc3QgY2hhciogc3Ry
KTsKKworICBTdHJlYW1pbmdMaXN0ZW5lcihjb25zdCBzdGQ6OnN0cmluZyYgaG9zdCwgY29uc3Qg
c3RkOjpzdHJpbmcmIHBvcnQpCisgICAgICA6IHNvY2tldF93cml0ZXJfKG5ldyBTb2NrZXRXcml0
ZXIoaG9zdCwgcG9ydCkpIHsKKyAgICBTdGFydCgpOworICB9CisKKyAgZXhwbGljaXQgU3RyZWFt
aW5nTGlzdGVuZXIoQWJzdHJhY3RTb2NrZXRXcml0ZXIqIHNvY2tldF93cml0ZXIpCisgICAgICA6
IHNvY2tldF93cml0ZXJfKHNvY2tldF93cml0ZXIpIHsgU3RhcnQoKTsgfQorCisgIHZvaWQgT25U
ZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKiB1bml0X3Rlc3QgKi8pIHsKKyAgICBT
ZW5kTG4oImV2ZW50PVRlc3RQcm9ncmFtU3RhcnQiKTsKKyAgfQorCisgIHZvaWQgT25UZXN0UHJv
Z3JhbUVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KSB7CisgICAgLy8gTm90ZSB0aGF0IEdv
b2dsZSBUZXN0IGN1cnJlbnQgb25seSByZXBvcnQgZWxhcHNlZCB0aW1lIGZvciBlYWNoCisgICAg
Ly8gdGVzdCBpdGVyYXRpb24sIG5vdCBmb3IgdGhlIGVudGlyZSB0ZXN0IHByb2dyYW0uCisgICAg
U2VuZExuKCJldmVudD1UZXN0UHJvZ3JhbUVuZCZwYXNzZWQ9IiArIEZvcm1hdEJvb2wodW5pdF90
ZXN0LlBhc3NlZCgpKSk7CisKKyAgICAvLyBOb3RpZnkgdGhlIHN0cmVhbWluZyBzZXJ2ZXIgdG8g
c3RvcC4KKyAgICBzb2NrZXRfd3JpdGVyXy0+Q2xvc2VDb25uZWN0aW9uKCk7CisgIH0KKworICB2
b2lkIE9uVGVzdEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKiB1bml0X3Rlc3QgKi8s
IGludCBpdGVyYXRpb24pIHsKKyAgICBTZW5kTG4oImV2ZW50PVRlc3RJdGVyYXRpb25TdGFydCZp
dGVyYXRpb249IiArCisgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhpdGVyYXRpb24pKTsK
KyAgfQorCisgIHZvaWQgT25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rl
c3QsIGludCAvKiBpdGVyYXRpb24gKi8pIHsKKyAgICBTZW5kTG4oImV2ZW50PVRlc3RJdGVyYXRp
b25FbmQmcGFzc2VkPSIgKworICAgICAgICAgICBGb3JtYXRCb29sKHVuaXRfdGVzdC5QYXNzZWQo
KSkgKyAiJmVsYXBzZWRfdGltZT0iICsKKyAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHVu
aXRfdGVzdC5lbGFwc2VkX3RpbWUoKSkgKyAibXMiKTsKKyAgfQorCisgIHZvaWQgT25UZXN0Q2Fz
ZVN0YXJ0KGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKKyAgICBTZW5kTG4oc3RkOjpzdHJp
bmcoImV2ZW50PVRlc3RDYXNlU3RhcnQmbmFtZT0iKSArIHRlc3RfY2FzZS5uYW1lKCkpOworICB9
CisKKyAgdm9pZCBPblRlc3RDYXNlRW5kKGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKKyAg
ICBTZW5kTG4oImV2ZW50PVRlc3RDYXNlRW5kJnBhc3NlZD0iICsgRm9ybWF0Qm9vbCh0ZXN0X2Nh
c2UuUGFzc2VkKCkpCisgICAgICAgICAgICsgIiZlbGFwc2VkX3RpbWU9IiArIFN0cmVhbWFibGVU
b1N0cmluZyh0ZXN0X2Nhc2UuZWxhcHNlZF90aW1lKCkpCisgICAgICAgICAgICsgIm1zIik7Cisg
IH0KKworICB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKKyAg
ICBTZW5kTG4oc3RkOjpzdHJpbmcoImV2ZW50PVRlc3RTdGFydCZuYW1lPSIpICsgdGVzdF9pbmZv
Lm5hbWUoKSk7CisgIH0KKworICB2b2lkIE9uVGVzdEVuZChjb25zdCBUZXN0SW5mbyYgdGVzdF9p
bmZvKSB7CisgICAgU2VuZExuKCJldmVudD1UZXN0RW5kJnBhc3NlZD0iICsKKyAgICAgICAgICAg
Rm9ybWF0Qm9vbCgodGVzdF9pbmZvLnJlc3VsdCgpKS0+UGFzc2VkKCkpICsKKyAgICAgICAgICAg
IiZlbGFwc2VkX3RpbWU9IiArCisgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZygodGVzdF9p
bmZvLnJlc3VsdCgpKS0+ZWxhcHNlZF90aW1lKCkpICsgIm1zIik7CisgIH0KKworICB2b2lkIE9u
VGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsK
KyAgICBjb25zdCBjaGFyKiBmaWxlX25hbWUgPSB0ZXN0X3BhcnRfcmVzdWx0LmZpbGVfbmFtZSgp
OworICAgIGlmIChmaWxlX25hbWUgPT0gTlVMTCkKKyAgICAgIGZpbGVfbmFtZSA9ICIiOworICAg
IFNlbmRMbigiZXZlbnQ9VGVzdFBhcnRSZXN1bHQmZmlsZT0iICsgVXJsRW5jb2RlKGZpbGVfbmFt
ZSkgKworICAgICAgICAgICAiJmxpbmU9IiArIFN0cmVhbWFibGVUb1N0cmluZyh0ZXN0X3BhcnRf
cmVzdWx0LmxpbmVfbnVtYmVyKCkpICsKKyAgICAgICAgICAgIiZtZXNzYWdlPSIgKyBVcmxFbmNv
ZGUodGVzdF9wYXJ0X3Jlc3VsdC5tZXNzYWdlKCkpKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8g
U2VuZHMgdGhlIGdpdmVuIG1lc3NhZ2UgYW5kIGEgbmV3bGluZSB0byB0aGUgc29ja2V0LgorICB2
b2lkIFNlbmRMbihjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgeyBzb2NrZXRfd3JpdGVyXy0+
U2VuZExuKG1lc3NhZ2UpOyB9CisKKyAgLy8gQ2FsbGVkIGF0IHRoZSBzdGFydCBvZiBzdHJlYW1p
bmcgdG8gbm90aWZ5IHRoZSByZWNlaXZlciB3aGF0CisgIC8vIHByb3RvY29sIHdlIGFyZSB1c2lu
Zy4KKyAgdm9pZCBTdGFydCgpIHsgU2VuZExuKCJndGVzdF9zdHJlYW1pbmdfcHJvdG9jb2xfdmVy
c2lvbj0xLjAiKTsgfQorCisgIHN0ZDo6c3RyaW5nIEZvcm1hdEJvb2woYm9vbCB2YWx1ZSkgeyBy
ZXR1cm4gdmFsdWUgPyAiMSIgOiAiMCI7IH0KKworICBjb25zdCBzY29wZWRfcHRyPEFic3RyYWN0
U29ja2V0V3JpdGVyPiBzb2NrZXRfd3JpdGVyXzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FO
RF9BU1NJR05fKFN0cmVhbWluZ0xpc3RlbmVyKTsKK307ICAvLyBjbGFzcyBTdHJlYW1pbmdMaXN0
ZW5lcgorCisjZW5kaWYgIC8vIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKwogfSAgLy8gbmFt
ZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCitHVEVTVF9ESVNBQkxF
X01TQ19XQVJOSU5HU19QT1BfKCkgIC8vICA0MjUxCisKICNlbmRpZiAgLy8gR1RFU1RfU1JDX0dU
RVNUX0lOVEVSTkFMX0lOTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c3JjL2d0ZXN0LXBvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcG9y
dC5jYwppbmRleCBiOTUwNGY1NmFlNmY5M2UxMjZkMmI1NjhhN2Q5N2RiNTE3ZmI4M2U0Li5mZWNi
NWQxMWMyMTI5NmE5MTgxYTExMjgwMjI2MDY3YjY0M2VkZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYwpAQCAtMjYsNDIgKzI2LDUyIEBACiAvLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oPgorCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAj
aW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RkaW8u
aD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxmc3RyZWFtPgogCi0jaWYgR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKLSNpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBGb3IgVGVybWluYXRl
UHJvY2VzcygpCi0jZWxpZiBHVEVTVF9PU19XSU5ET1dTCi0jaW5jbHVkZSA8aW8uaD4KLSNpbmNs
dWRlIDxzeXMvc3RhdC5oPgorI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaW5jbHVkZSA8d2luZG93
cy5oPgorIyBpbmNsdWRlIDxpby5oPgorIyBpbmNsdWRlIDxzeXMvc3RhdC5oPgorIyBpbmNsdWRl
IDxtYXA+ICAvLyBVc2VkIGluIFRocmVhZExvY2FsLgogI2Vsc2UKLSNpbmNsdWRlIDx1bmlzdGQu
aD4KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaW5jbHVkZSA8dW5pc3Rk
Lmg+CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAogI2lmIEdURVNUX09TX01BQwotI2lu
Y2x1ZGUgPG1hY2gvbWFjaF9pbml0Lmg+Ci0jaW5jbHVkZSA8bWFjaC90YXNrLmg+Ci0jaW5jbHVk
ZSA8bWFjaC92bV9tYXAuaD4KKyMgaW5jbHVkZSA8bWFjaC9tYWNoX2luaXQuaD4KKyMgaW5jbHVk
ZSA8bWFjaC90YXNrLmg+CisjIGluY2x1ZGUgPG1hY2gvdm1fbWFwLmg+CiAjZW5kaWYgIC8vIEdU
RVNUX09TX01BQwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+Ci0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QtbWVzc2FnZS5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmlu
Zy5oPgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBv
ZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUg
Z3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEg
Y29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9t
IGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBj
b2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQorI2lmIEdURVNUX09TX1FOWAor
IyBpbmNsdWRlIDxkZXZjdGwuaD4KKyMgaW5jbHVkZSA8ZmNudGwuaD4KKyMgaW5jbHVkZSA8c3lz
L3Byb2Nmcy5oPgorI2VuZGlmICAvLyBHVEVTVF9PU19RTlgKKworI2lmIEdURVNUX09TX0FJWAor
IyBpbmNsdWRlIDxwcm9jaW5mby5oPgorIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZiAg
Ly8gR1RFU1RfT1NfQUlYCisKKyNpZiBHVEVTVF9PU19GVUNIU0lBCisjIGluY2x1ZGUgPHppcmNv
bi9wcm9jZXNzLmg+CisjIGluY2x1ZGUgPHppcmNvbi9zeXNjYWxscy5oPgorI2VuZGlmICAvLyBH
VEVTVF9PU19GVUNIU0lBCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC1tZXNzYWdlLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
aW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKICNp
bmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5U
QVRJT05fCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CkBAIC03
NSwxMCArODUsMzEgQEAgY29uc3QgaW50IGtTdGRPdXRGaWxlbm8gPSBTVERPVVRfRklMRU5POwog
Y29uc3QgaW50IGtTdGRFcnJGaWxlbm8gPSBTVERFUlJfRklMRU5POwogI2VuZGlmICAvLyBfTVND
X1ZFUgogCi0jaWYgR1RFU1RfT1NfTUFDCisjaWYgR1RFU1RfT1NfTElOVVgKKworbmFtZXNwYWNl
IHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorVCBSZWFkUHJvY0ZpbGVGaWVsZChjb25zdCBzdGQ6
OnN0cmluZyYgZmlsZW5hbWUsIGludCBmaWVsZCkgeworICBzdGQ6OnN0cmluZyBkdW1teTsKKyAg
c3RkOjppZnN0cmVhbSBmaWxlKGZpbGVuYW1lLmNfc3RyKCkpOworICB3aGlsZSAoZmllbGQtLSA+
IDApIHsKKyAgICBmaWxlID4+IGR1bW15OworICB9CisgIFQgb3V0cHV0ID0gMDsKKyAgZmlsZSA+
PiBvdXRwdXQ7CisgIHJldHVybiBvdXRwdXQ7Cit9Cit9ICAvLyBuYW1lc3BhY2UKKworLy8gUmV0
dXJucyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSB0aHJlYWRzLCBvciAwIHdoZW4gdGhlcmUgaXMgYW4g
ZXJyb3IuCitzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZp
bGVuYW1lID0KKyAgICAgIChNZXNzYWdlKCkgPDwgIi9wcm9jLyIgPDwgZ2V0cGlkKCkgPDwgIi9z
dGF0IikuR2V0U3RyaW5nKCk7CisgIHJldHVybiBSZWFkUHJvY0ZpbGVGaWVsZDxpbnQ+KGZpbGVu
YW1lLCAxOSk7Cit9CisKKyNlbGlmIEdURVNUX09TX01BQwogCi0vLyBSZXR1cm5zIHRoZSBudW1i
ZXIgb2YgdGhyZWFkcyBydW5uaW5nIGluIHRoZSBwcm9jZXNzLCBvciAwIHRvIGluZGljYXRlIHRo
YXQKLS8vIHdlIGNhbm5vdCBkZXRlY3QgaXQuCiBzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CiAg
IGNvbnN0IHRhc2tfdCB0YXNrID0gbWFjaF90YXNrX3NlbGYoKTsKICAgbWFjaF9tc2dfdHlwZV9u
dW1iZXJfdCB0aHJlYWRfY291bnQ7CkBAIC05Niw2ICsxMjcsNTggQEAgc2l6ZV90IEdldFRocmVh
ZENvdW50KCkgewogICB9CiB9CiAKKyNlbGlmIEdURVNUX09TX1FOWAorCisvLyBSZXR1cm5zIHRo
ZSBudW1iZXIgb2YgdGhyZWFkcyBydW5uaW5nIGluIHRoZSBwcm9jZXNzLCBvciAwIHRvIGluZGlj
YXRlIHRoYXQKKy8vIHdlIGNhbm5vdCBkZXRlY3QgaXQuCitzaXplX3QgR2V0VGhyZWFkQ291bnQo
KSB7CisgIGNvbnN0IGludCBmZCA9IG9wZW4oIi9wcm9jL3NlbGYvYXMiLCBPX1JET05MWSk7Cisg
IGlmIChmZCA8IDApIHsKKyAgICByZXR1cm4gMDsKKyAgfQorICBwcm9jZnNfaW5mbyBwcm9jZXNz
X2luZm87CisgIGNvbnN0IGludCBzdGF0dXMgPQorICAgICAgZGV2Y3RsKGZkLCBEQ01EX1BST0Nf
SU5GTywgJnByb2Nlc3NfaW5mbywgc2l6ZW9mKHByb2Nlc3NfaW5mbyksIE5VTEwpOworICBjbG9z
ZShmZCk7CisgIGlmIChzdGF0dXMgPT0gRU9LKSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNp
emVfdD4ocHJvY2Vzc19pbmZvLm51bV90aHJlYWRzKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4g
MDsKKyAgfQorfQorCisjZWxpZiBHVEVTVF9PU19BSVgKKworc2l6ZV90IEdldFRocmVhZENvdW50
KCkgeworICBzdHJ1Y3QgcHJvY2VudHJ5NjQgZW50cnk7CisgIHBpZF90IHBpZCA9IGdldHBpZCgp
OworICBpbnQgc3RhdHVzID0gZ2V0cHJvY3M2NCgmZW50cnksIHNpemVvZihlbnRyeSksIE5VTEws
IDAsICZwaWQsIDEpOworICBpZiAoc3RhdHVzID09IDEpIHsKKyAgICByZXR1cm4gZW50cnkucGlf
dGhjb3VudDsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCisjZWxpZiBHVEVT
VF9PU19GVUNIU0lBCisKK3NpemVfdCBHZXRUaHJlYWRDb3VudCgpIHsKKyAgaW50IGR1bW15X2J1
ZmZlcjsKKyAgc2l6ZV90IGF2YWlsOworICB6eF9zdGF0dXNfdCBzdGF0dXMgPSB6eF9vYmplY3Rf
Z2V0X2luZm8oCisgICAgICB6eF9wcm9jZXNzX3NlbGYoKSwKKyAgICAgIFpYX0lORk9fUFJPQ0VT
U19USFJFQURTLAorICAgICAgJmR1bW15X2J1ZmZlciwKKyAgICAgIDAsCisgICAgICBudWxscHRy
LAorICAgICAgJmF2YWlsKTsKKyAgaWYgKHN0YXR1cyA9PSBaWF9PSykgeworICAgIHJldHVybiBh
dmFpbDsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCiAjZWxzZQogCiBzaXpl
X3QgR2V0VGhyZWFkQ291bnQoKSB7CkBAIC0xMDQsNyArMTg3LDQzMiBAQCBzaXplX3QgR2V0VGhy
ZWFkQ291bnQoKSB7CiAgIHJldHVybiAwOwogfQogCi0jZW5kaWYgIC8vIEdURVNUX09TX01BQwor
I2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRSAmJiBH
VEVTVF9PU19XSU5ET1dTCisKK3ZvaWQgU2xlZXBNaWxsaXNlY29uZHMoaW50IG4pIHsKKyAgOjpT
bGVlcChuKTsKK30KKworQXV0b0hhbmRsZTo6QXV0b0hhbmRsZSgpCisgICAgOiBoYW5kbGVfKElO
VkFMSURfSEFORExFX1ZBTFVFKSB7fQorCitBdXRvSGFuZGxlOjpBdXRvSGFuZGxlKEhhbmRsZSBo
YW5kbGUpCisgICAgOiBoYW5kbGVfKGhhbmRsZSkge30KKworQXV0b0hhbmRsZTo6fkF1dG9IYW5k
bGUoKSB7CisgIFJlc2V0KCk7Cit9CisKK0F1dG9IYW5kbGU6OkhhbmRsZSBBdXRvSGFuZGxlOjpH
ZXQoKSBjb25zdCB7CisgIHJldHVybiBoYW5kbGVfOworfQorCit2b2lkIEF1dG9IYW5kbGU6OlJl
c2V0KCkgeworICBSZXNldChJTlZBTElEX0hBTkRMRV9WQUxVRSk7Cit9CisKK3ZvaWQgQXV0b0hh
bmRsZTo6UmVzZXQoSEFORExFIGhhbmRsZSkgeworICAvLyBSZXNldHRpbmcgd2l0aCB0aGUgc2Ft
ZSBoYW5kbGUgd2UgYWxyZWFkeSBvd24gaXMgaW52YWxpZC4KKyAgaWYgKGhhbmRsZV8gIT0gaGFu
ZGxlKSB7CisgICAgaWYgKElzQ2xvc2VhYmxlKCkpIHsKKyAgICAgIDo6Q2xvc2VIYW5kbGUoaGFu
ZGxlXyk7CisgICAgfQorICAgIGhhbmRsZV8gPSBoYW5kbGU7CisgIH0gZWxzZSB7CisgICAgR1RF
U1RfQ0hFQ0tfKCFJc0Nsb3NlYWJsZSgpKQorICAgICAgICA8PCAiUmVzZXR0aW5nIGEgdmFsaWQg
aGFuZGxlIHRvIGl0c2VsZiBpcyBsaWtlbHkgYSBwcm9ncmFtbWVyIGVycm9yICIKKyAgICAgICAg
ICAgICJhbmQgdGh1cyBub3QgYWxsb3dlZC4iOworICB9Cit9CisKK2Jvb2wgQXV0b0hhbmRsZTo6
SXNDbG9zZWFibGUoKSBjb25zdCB7CisgIC8vIERpZmZlcmVudCBXaW5kb3dzIEFQSXMgbWF5IHVz
ZSBlaXRoZXIgb2YgdGhlc2UgdmFsdWVzIHRvIHJlcHJlc2VudCBhbgorICAvLyBpbnZhbGlkIGhh
bmRsZS4KKyAgcmV0dXJuIGhhbmRsZV8gIT0gTlVMTCAmJiBoYW5kbGVfICE9IElOVkFMSURfSEFO
RExFX1ZBTFVFOworfQorCitOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbigpCisgICAgOiBldmVu
dF8oOjpDcmVhdGVFdmVudChOVUxMLCAgIC8vIERlZmF1bHQgc2VjdXJpdHkgYXR0cmlidXRlcy4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsICAgLy8gRG8gbm90IHJlc2V0IGF1dG9t
YXRpY2FsbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwgIC8vIEluaXRpYWxs
eSB1bnNldC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKSB7ICAvLyBBbm9ueW1v
dXMgZXZlbnQuCisgIEdURVNUX0NIRUNLXyhldmVudF8uR2V0KCkgIT0gTlVMTCk7Cit9CisKK3Zv
aWQgTm90aWZpY2F0aW9uOjpOb3RpZnkoKSB7CisgIEdURVNUX0NIRUNLXyg6OlNldEV2ZW50KGV2
ZW50Xy5HZXQoKSkgIT0gRkFMU0UpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6V2FpdEZvck5v
dGlmaWNhdGlvbigpIHsKKyAgR1RFU1RfQ0hFQ0tfKAorICAgICAgOjpXYWl0Rm9yU2luZ2xlT2Jq
ZWN0KGV2ZW50Xy5HZXQoKSwgSU5GSU5JVEUpID09IFdBSVRfT0JKRUNUXzApOworfQorCitNdXRl
eDo6TXV0ZXgoKQorICAgIDogb3duZXJfdGhyZWFkX2lkXygwKSwKKyAgICAgIHR5cGVfKGtEeW5h
bWljKSwKKyAgICAgIGNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFzZV8oMCksCisgICAgICBjcml0
aWNhbF9zZWN0aW9uXyhuZXcgQ1JJVElDQUxfU0VDVElPTikgeworICA6OkluaXRpYWxpemVDcml0
aWNhbFNlY3Rpb24oY3JpdGljYWxfc2VjdGlvbl8pOworfQorCitNdXRleDo6fk11dGV4KCkgewor
ICAvLyBTdGF0aWMgbXV0ZXhlcyBhcmUgbGVha2VkIGludGVudGlvbmFsbHkuIEl0IGlzIG5vdCB0
aHJlYWQtc2FmZSB0byB0cnkKKyAgLy8gdG8gY2xlYW4gdGhlbSB1cC4KKyAgLy8gRklYTUU6IFN3
aXRjaCB0byBTbGltIFJlYWRlci9Xcml0ZXIgKFNSVykgTG9ja3MsIHdoaWNoIHJlcXVpcmVzCisg
IC8vIG5vdGhpbmcgdG8gY2xlYW4gaXQgdXAgYnV0IGlzIGF2YWlsYWJsZSBvbmx5IG9uIFZpc3Rh
IGFuZCBsYXRlci4KKyAgLy8gaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93
cy9kZXNrdG9wL1N5bmMvc2xpbS1yZWFkZXItd3JpdGVyLS1zcnctLWxvY2tzCisgIGlmICh0eXBl
XyA9PSBrRHluYW1pYykgeworICAgIDo6RGVsZXRlQ3JpdGljYWxTZWN0aW9uKGNyaXRpY2FsX3Nl
Y3Rpb25fKTsKKyAgICBkZWxldGUgY3JpdGljYWxfc2VjdGlvbl87CisgICAgY3JpdGljYWxfc2Vj
dGlvbl8gPSBOVUxMOworICB9Cit9CisKK3ZvaWQgTXV0ZXg6OkxvY2soKSB7CisgIFRocmVhZFNh
ZmVMYXp5SW5pdCgpOworICA6OkVudGVyQ3JpdGljYWxTZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb25f
KTsKKyAgb3duZXJfdGhyZWFkX2lkXyA9IDo6R2V0Q3VycmVudFRocmVhZElkKCk7Cit9CisKK3Zv
aWQgTXV0ZXg6OlVubG9jaygpIHsKKyAgVGhyZWFkU2FmZUxhenlJbml0KCk7CisgIC8vIFdlIGRv
bid0IHByb3RlY3Qgd3JpdGluZyB0byBvd25lcl90aHJlYWRfaWRfIGhlcmUsIGFzIGl0J3MgdGhl
CisgIC8vIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGF0IHRoZSBjdXJyZW50
IHRocmVhZCBob2xkcyB0aGUKKyAgLy8gbXV0ZXggd2hlbiB0aGlzIGlzIGNhbGxlZC4KKyAgb3du
ZXJfdGhyZWFkX2lkXyA9IDA7CisgIDo6TGVhdmVDcml0aWNhbFNlY3Rpb24oY3JpdGljYWxfc2Vj
dGlvbl8pOworfQorCisvLyBEb2VzIG5vdGhpbmcgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGhvbGRz
IHRoZSBtdXRleC4gT3RoZXJ3aXNlLCBjcmFzaGVzCisvLyB3aXRoIGhpZ2ggcHJvYmFiaWxpdHku
Cit2b2lkIE11dGV4OjpBc3NlcnRIZWxkKCkgeworICBUaHJlYWRTYWZlTGF6eUluaXQoKTsKKyAg
R1RFU1RfQ0hFQ0tfKG93bmVyX3RocmVhZF9pZF8gPT0gOjpHZXRDdXJyZW50VGhyZWFkSWQoKSkK
KyAgICAgIDw8ICJUaGUgY3VycmVudCB0aHJlYWQgaXMgbm90IGhvbGRpbmcgdGhlIG11dGV4IEAi
IDw8IHRoaXM7Cit9CisKK25hbWVzcGFjZSB7CisKKy8vIFVzZSB0aGUgUkFJSSBpZGlvbSB0byBm
bGFnIG1lbSBhbGxvY3MgdGhhdCBhcmUgaW50ZW50aW9uYWxseSBuZXZlcgorLy8gZGVhbGxvY2F0
ZWQuIFRoZSBtb3RpdmF0aW9uIGlzIHRvIHNpbGVuY2UgdGhlIGZhbHNlIHBvc2l0aXZlIG1lbSBs
ZWFrcworLy8gdGhhdCBhcmUgcmVwb3J0ZWQgYnkgdGhlIGRlYnVnIHZlcnNpb24gb2YgTVMncyBD
UlQgd2hpY2ggY2FuIG9ubHkgZGV0ZWN0CisvLyBpZiBhbiBhbGxvYyBpcyBtaXNzaW5nIGEgbWF0
Y2hpbmcgZGVhbGxvY2F0aW9uLgorLy8gRXhhbXBsZToKKy8vICAgIE1lbW9yeUlzTm90RGVhbGxv
Y2F0ZWQgbWVtb3J5X2lzX25vdF9kZWFsbG9jYXRlZDsKKy8vICAgIGNyaXRpY2FsX3NlY3Rpb25f
ID0gbmV3IENSSVRJQ0FMX1NFQ1RJT047CisvLworY2xhc3MgTWVtb3J5SXNOb3REZWFsbG9jYXRl
ZAoreworIHB1YmxpYzoKKyAgTWVtb3J5SXNOb3REZWFsbG9jYXRlZCgpIDogb2xkX2NydGRiZ19m
bGFnXygwKSB7CisjaWZkZWYgX01TQ19WRVIKKyAgICBvbGRfY3J0ZGJnX2ZsYWdfID0gX0NydFNl
dERiZ0ZsYWcoX0NSVERCR19SRVBPUlRfRkxBRyk7CisgICAgLy8gU2V0IGhlYXAgYWxsb2NhdGlv
biBibG9jayB0eXBlIHRvIF9JR05PUkVfQkxPQ0sgc28gdGhhdCBNUyBkZWJ1ZyBDUlQKKyAgICAv
LyBkb2Vzbid0IHJlcG9ydCBtZW0gbGVhayBpZiB0aGVyZSdzIG5vIG1hdGNoaW5nIGRlYWxsb2Nh
dGlvbi4KKyAgICBfQ3J0U2V0RGJnRmxhZyhvbGRfY3J0ZGJnX2ZsYWdfICYgfl9DUlREQkdfQUxM
T0NfTUVNX0RGKTsKKyNlbmRpZiAgLy8gIF9NU0NfVkVSCisgIH0KKworICB+TWVtb3J5SXNOb3RE
ZWFsbG9jYXRlZCgpIHsKKyNpZmRlZiBfTVNDX1ZFUgorICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdp
bmFsIF9DUlREQkdfQUxMT0NfTUVNX0RGIGZsYWcKKyAgICBfQ3J0U2V0RGJnRmxhZyhvbGRfY3J0
ZGJnX2ZsYWdfKTsKKyNlbmRpZiAgLy8gIF9NU0NfVkVSCisgIH0KKworIHByaXZhdGU6CisgIGlu
dCBvbGRfY3J0ZGJnX2ZsYWdfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8o
TWVtb3J5SXNOb3REZWFsbG9jYXRlZCk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UKKworLy8gSW5p
dGlhbGl6ZXMgb3duZXJfdGhyZWFkX2lkXyBhbmQgY3JpdGljYWxfc2VjdGlvbl8gaW4gc3RhdGlj
IG11dGV4ZXMuCit2b2lkIE11dGV4OjpUaHJlYWRTYWZlTGF6eUluaXQoKSB7CisgIC8vIER5bmFt
aWMgbXV0ZXhlcyBhcmUgaW5pdGlhbGl6ZWQgaW4gdGhlIGNvbnN0cnVjdG9yLgorICBpZiAodHlw
ZV8gPT0ga1N0YXRpYykgeworICAgIHN3aXRjaCAoCisgICAgICAgIDo6SW50ZXJsb2NrZWRDb21w
YXJlRXhjaGFuZ2UoJmNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFzZV8sIDFMLCAwTCkpIHsKKyAg
ICAgIGNhc2UgMDoKKyAgICAgICAgLy8gSWYgY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXyB3
YXMgMCBiZWZvcmUgdGhlIGV4Y2hhbmdlLCB3ZQorICAgICAgICAvLyBhcmUgdGhlIGZpcnN0IHRv
IHRlc3QgaXQgYW5kIG5lZWQgdG8gcGVyZm9ybSB0aGUgaW5pdGlhbGl6YXRpb24uCisgICAgICAg
IG93bmVyX3RocmVhZF9pZF8gPSAwOworICAgICAgICB7CisgICAgICAgICAgLy8gVXNlIFJBSUkg
dG8gZmxhZyB0aGF0IGZvbGxvd2luZyBtZW0gYWxsb2MgaXMgbmV2ZXIgZGVhbGxvY2F0ZWQuCisg
ICAgICAgICAgTWVtb3J5SXNOb3REZWFsbG9jYXRlZCBtZW1vcnlfaXNfbm90X2RlYWxsb2NhdGVk
OworICAgICAgICAgIGNyaXRpY2FsX3NlY3Rpb25fID0gbmV3IENSSVRJQ0FMX1NFQ1RJT047Cisg
ICAgICAgIH0KKyAgICAgICAgOjpJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKGNyaXRpY2FsX3Nl
Y3Rpb25fKTsKKyAgICAgICAgLy8gVXBkYXRlcyB0aGUgY3JpdGljYWxfc2VjdGlvbl9pbml0X3Bo
YXNlXyB0byAyIHRvIHNpZ25hbAorICAgICAgICAvLyBpbml0aWFsaXphdGlvbiBjb21wbGV0ZS4K
KyAgICAgICAgR1RFU1RfQ0hFQ0tfKDo6SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICZjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhhc2VfLCAyTCwg
MUwpID09CisgICAgICAgICAgICAgICAgICAgICAgMUwpOworICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgMToKKyAgICAgICAgLy8gU29tZWJvZHkgZWxzZSBpcyBhbHJlYWR5IGluaXRpYWxpemlu
ZyB0aGUgbXV0ZXg7IHNwaW4gdW50aWwgdGhleQorICAgICAgICAvLyBhcmUgZG9uZS4KKyAgICAg
ICAgd2hpbGUgKDo6SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoJmNyaXRpY2FsX3NlY3Rpb25f
aW5pdF9waGFzZV8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDJMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyTCkgIT0g
MkwpIHsKKyAgICAgICAgICAvLyBQb3NzaWJseSB5aWVsZHMgdGhlIHJlc3Qgb2YgdGhlIHRocmVh
ZCdzIHRpbWUgc2xpY2UgdG8gb3RoZXIKKyAgICAgICAgICAvLyB0aHJlYWRzLgorICAgICAgICAg
IDo6U2xlZXAoMCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgMjoK
KyAgICAgICAgYnJlYWs7ICAvLyBUaGUgbXV0ZXggaXMgYWxyZWFkeSBpbml0aWFsaXplZCBhbmQg
cmVhZHkgZm9yIHVzZS4KKworICAgICAgZGVmYXVsdDoKKyAgICAgICAgR1RFU1RfQ0hFQ0tfKGZh
bHNlKQorICAgICAgICAgICAgPDwgIlVuZXhwZWN0ZWQgdmFsdWUgb2YgY3JpdGljYWxfc2VjdGlv
bl9pbml0X3BoYXNlXyAiCisgICAgICAgICAgICA8PCAid2hpbGUgaW5pdGlhbGl6aW5nIGEgc3Rh
dGljIG11dGV4LiI7CisgICAgfQorICB9Cit9CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIFRocmVh
ZFdpdGhQYXJhbVN1cHBvcnQgOiBwdWJsaWMgVGhyZWFkV2l0aFBhcmFtQmFzZSB7CisgcHVibGlj
OgorICBzdGF0aWMgSEFORExFIENyZWF0ZVRocmVhZChSdW5uYWJsZSogcnVubmFibGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydCkg
eworICAgIFRocmVhZE1haW5QYXJhbSogcGFyYW0gPSBuZXcgVGhyZWFkTWFpblBhcmFtKHJ1bm5h
YmxlLCB0aHJlYWRfY2FuX3N0YXJ0KTsKKyAgICBEV09SRCB0aHJlYWRfaWQ7CisgICAgLy8gRklY
TUU6IENvbnNpZGVyIHRvIHVzZSBfYmVnaW50aHJlYWRleCBpbnN0ZWFkLgorICAgIEhBTkRMRSB0
aHJlYWRfaGFuZGxlID0gOjpDcmVhdGVUaHJlYWQoCisgICAgICAgIE5VTEwsICAgIC8vIERlZmF1
bHQgc2VjdXJpdHkuCisgICAgICAgIDAsICAgICAgIC8vIERlZmF1bHQgc3RhY2sgc2l6ZS4KKyAg
ICAgICAgJlRocmVhZFdpdGhQYXJhbVN1cHBvcnQ6OlRocmVhZE1haW4sCisgICAgICAgIHBhcmFt
LCAgIC8vIFBhcmFtZXRlciB0byBUaHJlYWRNYWluU3RhdGljCisgICAgICAgIDB4MCwgICAgIC8v
IERlZmF1bHQgY3JlYXRpb24gZmxhZ3MuCisgICAgICAgICZ0aHJlYWRfaWQpOyAgLy8gTmVlZCBh
IHZhbGlkIHBvaW50ZXIgZm9yIHRoZSBjYWxsIHRvIHdvcmsgdW5kZXIgV2luOTguCisgICAgR1RF
U1RfQ0hFQ0tfKHRocmVhZF9oYW5kbGUgIT0gTlVMTCkgPDwgIkNyZWF0ZVRocmVhZCBmYWlsZWQg
d2l0aCBlcnJvciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
OjpHZXRMYXN0RXJyb3IoKSA8PCAiLiI7CisgICAgaWYgKHRocmVhZF9oYW5kbGUgPT0gTlVMTCkg
eworICAgICAgZGVsZXRlIHBhcmFtOworICAgIH0KKyAgICByZXR1cm4gdGhyZWFkX2hhbmRsZTsK
KyAgfQorCisgcHJpdmF0ZToKKyAgc3RydWN0IFRocmVhZE1haW5QYXJhbSB7CisgICAgVGhyZWFk
TWFpblBhcmFtKFJ1bm5hYmxlKiBydW5uYWJsZSwgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0
YXJ0KQorICAgICAgICA6IHJ1bm5hYmxlXyhydW5uYWJsZSksCisgICAgICAgICAgdGhyZWFkX2Nh
bl9zdGFydF8odGhyZWFkX2Nhbl9zdGFydCkgeworICAgIH0KKyAgICBzY29wZWRfcHRyPFJ1bm5h
YmxlPiBydW5uYWJsZV87CisgICAgLy8gRG9lcyBub3Qgb3duLgorICAgIE5vdGlmaWNhdGlvbiog
dGhyZWFkX2Nhbl9zdGFydF87CisgIH07CisKKyAgc3RhdGljIERXT1JEIFdJTkFQSSBUaHJlYWRN
YWluKHZvaWQqIHB0cikgeworICAgIC8vIFRyYW5zZmVycyBvd25lcnNoaXAuCisgICAgc2NvcGVk
X3B0cjxUaHJlYWRNYWluUGFyYW0+IHBhcmFtKHN0YXRpY19jYXN0PFRocmVhZE1haW5QYXJhbSo+
KHB0cikpOworICAgIGlmIChwYXJhbS0+dGhyZWFkX2Nhbl9zdGFydF8gIT0gTlVMTCkKKyAgICAg
IHBhcmFtLT50aHJlYWRfY2FuX3N0YXJ0Xy0+V2FpdEZvck5vdGlmaWNhdGlvbigpOworICAgIHBh
cmFtLT5ydW5uYWJsZV8tPlJ1bigpOworICAgIHJldHVybiAwOworICB9CisKKyAgLy8gUHJvaGli
aXQgaW5zdGFudGlhdGlvbi4KKyAgVGhyZWFkV2l0aFBhcmFtU3VwcG9ydCgpOworCisgIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkV2l0aFBhcmFtU3VwcG9ydCk7Cit9Owor
Cit9ICAvLyBuYW1lc3BhY2UKKworVGhyZWFkV2l0aFBhcmFtQmFzZTo6VGhyZWFkV2l0aFBhcmFt
QmFzZShSdW5uYWJsZSAqcnVubmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydCkKKyAgICAgIDogdGhyZWFk
XyhUaHJlYWRXaXRoUGFyYW1TdXBwb3J0OjpDcmVhdGVUaHJlYWQocnVubmFibGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZF9jYW5f
c3RhcnQpKSB7Cit9CisKK1RocmVhZFdpdGhQYXJhbUJhc2U6On5UaHJlYWRXaXRoUGFyYW1CYXNl
KCkgeworICBKb2luKCk7Cit9CisKK3ZvaWQgVGhyZWFkV2l0aFBhcmFtQmFzZTo6Sm9pbigpIHsK
KyAgR1RFU1RfQ0hFQ0tfKDo6V2FpdEZvclNpbmdsZU9iamVjdCh0aHJlYWRfLkdldCgpLCBJTkZJ
TklURSkgPT0gV0FJVF9PQkpFQ1RfMCkKKyAgICAgIDw8ICJGYWlsZWQgdG8gam9pbiB0aGUgdGhy
ZWFkIHdpdGggZXJyb3IgIiA8PCA6OkdldExhc3RFcnJvcigpIDw8ICIuIjsKK30KKworLy8gTWFw
cyBhIHRocmVhZCB0byBhIHNldCBvZiBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzIHRoYXQgaGF2ZSB2
YWx1ZXMKKy8vIGluc3RhbnRpYXRlZCBvbiB0aGF0IHRocmVhZCBhbmQgbm90aWZpZXMgdGhlbSB3
aGVuIHRoZSB0aHJlYWQgZXhpdHMuICBBCisvLyBUaHJlYWRMb2NhbCBpbnN0YW5jZSBpcyBleHBl
Y3RlZCB0byBwZXJzaXN0IHVudGlsIGFsbCB0aHJlYWRzIGl0IGhhcworLy8gdmFsdWVzIG9uIGhh
dmUgdGVybWluYXRlZC4KK2NsYXNzIFRocmVhZExvY2FsUmVnaXN0cnlJbXBsIHsKKyBwdWJsaWM6
CisgIC8vIFJlZ2lzdGVycyB0aHJlYWRfbG9jYWxfaW5zdGFuY2UgYXMgaGF2aW5nIHZhbHVlIG9u
IHRoZSBjdXJyZW50IHRocmVhZC4KKyAgLy8gUmV0dXJucyBhIHZhbHVlIHRoYXQgY2FuIGJlIHVz
ZWQgdG8gaWRlbnRpZnkgdGhlIHRocmVhZCBmcm9tIG90aGVyIHRocmVhZHMuCisgIHN0YXRpYyBU
aHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogR2V0VmFsdWVPbkN1cnJlbnRUaHJlYWQoCisgICAg
ICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9pbnN0YW5jZSkgeworICAgIERX
T1JEIGN1cnJlbnRfdGhyZWFkID0gOjpHZXRDdXJyZW50VGhyZWFkSWQoKTsKKyAgICBNdXRleExv
Y2sgbG9jaygmbXV0ZXhfKTsKKyAgICBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzKiBjb25zdCB0aHJl
YWRfdG9fdGhyZWFkX2xvY2FscyA9CisgICAgICAgIEdldFRocmVhZExvY2Fsc01hcExvY2tlZCgp
OworICAgIFRocmVhZElkVG9UaHJlYWRMb2NhbHM6Oml0ZXJhdG9yIHRocmVhZF9sb2NhbF9wb3Mg
PQorICAgICAgICB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+ZmluZChjdXJyZW50X3RocmVhZCk7
CisgICAgaWYgKHRocmVhZF9sb2NhbF9wb3MgPT0gdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmVu
ZCgpKSB7CisgICAgICB0aHJlYWRfbG9jYWxfcG9zID0gdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMt
Pmluc2VydCgKKyAgICAgICAgICBzdGQ6Om1ha2VfcGFpcihjdXJyZW50X3RocmVhZCwgVGhyZWFk
TG9jYWxWYWx1ZXMoKSkpLmZpcnN0OworICAgICAgU3RhcnRXYXRjaGVyVGhyZWFkRm9yKGN1cnJl
bnRfdGhyZWFkKTsKKyAgICB9CisgICAgVGhyZWFkTG9jYWxWYWx1ZXMmIHRocmVhZF9sb2NhbF92
YWx1ZXMgPSB0aHJlYWRfbG9jYWxfcG9zLT5zZWNvbmQ7CisgICAgVGhyZWFkTG9jYWxWYWx1ZXM6
Oml0ZXJhdG9yIHZhbHVlX3BvcyA9CisgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMuZmluZCh0
aHJlYWRfbG9jYWxfaW5zdGFuY2UpOworICAgIGlmICh2YWx1ZV9wb3MgPT0gdGhyZWFkX2xvY2Fs
X3ZhbHVlcy5lbmQoKSkgeworICAgICAgdmFsdWVfcG9zID0KKyAgICAgICAgICB0aHJlYWRfbG9j
YWxfdmFsdWVzCisgICAgICAgICAgICAgIC5pbnNlcnQoc3RkOjptYWtlX3BhaXIoCisgICAgICAg
ICAgICAgICAgICB0aHJlYWRfbG9jYWxfaW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICBsaW5r
ZWRfcHRyPFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlPigKKyAgICAgICAgICAgICAgICAgICAg
ICB0aHJlYWRfbG9jYWxfaW5zdGFuY2UtPk5ld1ZhbHVlRm9yQ3VycmVudFRocmVhZCgpKSkpCisg
ICAgICAgICAgICAgIC5maXJzdDsKKyAgICB9CisgICAgcmV0dXJuIHZhbHVlX3Bvcy0+c2Vjb25k
LmdldCgpOworICB9CisKKyAgc3RhdGljIHZvaWQgT25UaHJlYWRMb2NhbERlc3Ryb3llZCgKKyAg
ICAgIGNvbnN0IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2FsX2luc3RhbmNlKSB7CisgICAg
c3RkOjp2ZWN0b3I8bGlua2VkX3B0cjxUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZT4gPiB2YWx1
ZV9ob2xkZXJzOworICAgIC8vIENsZWFuIHVwIHRoZSBUaHJlYWRMb2NhbFZhbHVlcyBkYXRhIHN0
cnVjdHVyZSB3aGlsZSBob2xkaW5nIHRoZSBsb2NrLCBidXQKKyAgICAvLyBkZWZlciB0aGUgZGVz
dHJ1Y3Rpb24gb2YgdGhlIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlcy4KKyAgICB7CisgICAg
ICBNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKKyAgICAgIFRocmVhZElkVG9UaHJlYWRMb2NhbHMq
IGNvbnN0IHRocmVhZF90b190aHJlYWRfbG9jYWxzID0KKyAgICAgICAgICBHZXRUaHJlYWRMb2Nh
bHNNYXBMb2NrZWQoKTsKKyAgICAgIGZvciAoVGhyZWFkSWRUb1RocmVhZExvY2Fsczo6aXRlcmF0
b3IgaXQgPQorICAgICAgICAgIHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5iZWdpbigpOworICAg
ICAgICAgIGl0ICE9IHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5lbmQoKTsKKyAgICAgICAgICAr
K2l0KSB7CisgICAgICAgIFRocmVhZExvY2FsVmFsdWVzJiB0aHJlYWRfbG9jYWxfdmFsdWVzID0g
aXQtPnNlY29uZDsKKyAgICAgICAgVGhyZWFkTG9jYWxWYWx1ZXM6Oml0ZXJhdG9yIHZhbHVlX3Bv
cyA9CisgICAgICAgICAgICB0aHJlYWRfbG9jYWxfdmFsdWVzLmZpbmQodGhyZWFkX2xvY2FsX2lu
c3RhbmNlKTsKKyAgICAgICAgaWYgKHZhbHVlX3BvcyAhPSB0aHJlYWRfbG9jYWxfdmFsdWVzLmVu
ZCgpKSB7CisgICAgICAgICAgdmFsdWVfaG9sZGVycy5wdXNoX2JhY2sodmFsdWVfcG9zLT5zZWNv
bmQpOworICAgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMuZXJhc2UodmFsdWVfcG9zKTsKKyAg
ICAgICAgICAvLyBUaGlzICdpZicgY2FuIG9ubHkgYmUgc3VjY2Vzc2Z1bCBhdCBtb3N0IG9uY2Us
IHNvIHRoZW9yZXRpY2FsbHkgd2UKKyAgICAgICAgICAvLyBjb3VsZCBicmVhayBvdXQgb2YgdGhl
IGxvb3AgaGVyZSwgYnV0IHdlIGRvbid0IGJvdGhlciBkb2luZyBzby4KKyAgICAgICAgfQorICAg
ICAgfQorICAgIH0KKyAgICAvLyBPdXRzaWRlIHRoZSBsb2NrLCBsZXQgdGhlIGRlc3RydWN0b3Ig
Zm9yICd2YWx1ZV9ob2xkZXJzJyBkZWFsbG9jYXRlIHRoZQorICAgIC8vIFRocmVhZExvY2FsVmFs
dWVIb2xkZXJCYXNlcy4KKyAgfQorCisgIHN0YXRpYyB2b2lkIE9uVGhyZWFkRXhpdChEV09SRCB0
aHJlYWRfaWQpIHsKKyAgICBHVEVTVF9DSEVDS18odGhyZWFkX2lkICE9IDApIDw8IDo6R2V0TGFz
dEVycm9yKCk7CisgICAgc3RkOjp2ZWN0b3I8bGlua2VkX3B0cjxUaHJlYWRMb2NhbFZhbHVlSG9s
ZGVyQmFzZT4gPiB2YWx1ZV9ob2xkZXJzOworICAgIC8vIENsZWFuIHVwIHRoZSBUaHJlYWRJZFRv
VGhyZWFkTG9jYWxzIGRhdGEgc3RydWN0dXJlIHdoaWxlIGhvbGRpbmcgdGhlCisgICAgLy8gbG9j
aywgYnV0IGRlZmVyIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgVGhyZWFkTG9jYWxWYWx1ZUhvbGRl
ckJhc2VzLgorICAgIHsKKyAgICAgIE11dGV4TG9jayBsb2NrKCZtdXRleF8pOworICAgICAgVGhy
ZWFkSWRUb1RocmVhZExvY2FscyogY29uc3QgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMgPQorICAg
ICAgICAgIEdldFRocmVhZExvY2Fsc01hcExvY2tlZCgpOworICAgICAgVGhyZWFkSWRUb1RocmVh
ZExvY2Fsczo6aXRlcmF0b3IgdGhyZWFkX2xvY2FsX3BvcyA9CisgICAgICAgICAgdGhyZWFkX3Rv
X3RocmVhZF9sb2NhbHMtPmZpbmQodGhyZWFkX2lkKTsKKyAgICAgIGlmICh0aHJlYWRfbG9jYWxf
cG9zICE9IHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5lbmQoKSkgeworICAgICAgICBUaHJlYWRM
b2NhbFZhbHVlcyYgdGhyZWFkX2xvY2FsX3ZhbHVlcyA9IHRocmVhZF9sb2NhbF9wb3MtPnNlY29u
ZDsKKyAgICAgICAgZm9yIChUaHJlYWRMb2NhbFZhbHVlczo6aXRlcmF0b3IgdmFsdWVfcG9zID0K
KyAgICAgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMuYmVnaW4oKTsKKyAgICAgICAgICAgIHZh
bHVlX3BvcyAhPSB0aHJlYWRfbG9jYWxfdmFsdWVzLmVuZCgpOworICAgICAgICAgICAgKyt2YWx1
ZV9wb3MpIHsKKyAgICAgICAgICB2YWx1ZV9ob2xkZXJzLnB1c2hfYmFjayh2YWx1ZV9wb3MtPnNl
Y29uZCk7CisgICAgICAgIH0KKyAgICAgICAgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmVyYXNl
KHRocmVhZF9sb2NhbF9wb3MpOworICAgICAgfQorICAgIH0KKyAgICAvLyBPdXRzaWRlIHRoZSBs
b2NrLCBsZXQgdGhlIGRlc3RydWN0b3IgZm9yICd2YWx1ZV9ob2xkZXJzJyBkZWFsbG9jYXRlIHRo
ZQorICAgIC8vIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlcy4KKyAgfQorCisgcHJpdmF0ZToK
KyAgLy8gSW4gYSBwYXJ0aWN1bGFyIHRocmVhZCwgbWFwcyBhIFRocmVhZExvY2FsIG9iamVjdCB0
byBpdHMgdmFsdWUuCisgIHR5cGVkZWYgc3RkOjptYXA8Y29uc3QgVGhyZWFkTG9jYWxCYXNlKiwK
KyAgICAgICAgICAgICAgICAgICBsaW5rZWRfcHRyPFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNl
PiA+IFRocmVhZExvY2FsVmFsdWVzOworICAvLyBTdG9yZXMgYWxsIFRocmVhZElkVG9UaHJlYWRM
b2NhbHMgaGF2aW5nIHZhbHVlcyBpbiBhIHRocmVhZCwgaW5kZXhlZCBieQorICAvLyB0aHJlYWQn
cyBJRC4KKyAgdHlwZWRlZiBzdGQ6Om1hcDxEV09SRCwgVGhyZWFkTG9jYWxWYWx1ZXM+IFRocmVh
ZElkVG9UaHJlYWRMb2NhbHM7CisKKyAgLy8gSG9sZHMgdGhlIHRocmVhZCBpZCBhbmQgdGhyZWFk
IGhhbmRsZSB0aGF0IHdlIHBhc3MgZnJvbQorICAvLyBTdGFydFdhdGNoZXJUaHJlYWRGb3IgdG8g
V2F0Y2hlclRocmVhZEZ1bmMuCisgIHR5cGVkZWYgc3RkOjpwYWlyPERXT1JELCBIQU5ETEU+IFRo
cmVhZElkQW5kSGFuZGxlOworCisgIHN0YXRpYyB2b2lkIFN0YXJ0V2F0Y2hlclRocmVhZEZvcihE
V09SRCB0aHJlYWRfaWQpIHsKKyAgICAvLyBUaGUgcmV0dXJuZWQgaGFuZGxlIHdpbGwgYmUga2Vw
dCBpbiB0aHJlYWRfbWFwIGFuZCBjbG9zZWQgYnkKKyAgICAvLyB3YXRjaGVyX3RocmVhZCBpbiBX
YXRjaGVyVGhyZWFkRnVuYy4KKyAgICBIQU5ETEUgdGhyZWFkID0gOjpPcGVuVGhyZWFkKFNZTkNI
Uk9OSVpFIHwgVEhSRUFEX1FVRVJZX0lORk9STUFUSU9OLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJl
YWRfaWQpOworICAgIEdURVNUX0NIRUNLXyh0aHJlYWQgIT0gTlVMTCk7CisgICAgLy8gV2UgbmVl
ZCB0byBwYXNzIGEgdmFsaWQgdGhyZWFkIElEIHBvaW50ZXIgaW50byBDcmVhdGVUaHJlYWQgZm9y
IGl0CisgICAgLy8gdG8gd29yayBjb3JyZWN0bHkgdW5kZXIgV2luOTguCisgICAgRFdPUkQgd2F0
Y2hlcl90aHJlYWRfaWQ7CisgICAgSEFORExFIHdhdGNoZXJfdGhyZWFkID0gOjpDcmVhdGVUaHJl
YWQoCisgICAgICAgIE5VTEwsICAgLy8gRGVmYXVsdCBzZWN1cml0eS4KKyAgICAgICAgMCwgICAg
ICAvLyBEZWZhdWx0IHN0YWNrIHNpemUKKyAgICAgICAgJlRocmVhZExvY2FsUmVnaXN0cnlJbXBs
OjpXYXRjaGVyVGhyZWFkRnVuYywKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxMUFZPSUQ+KG5l
dyBUaHJlYWRJZEFuZEhhbmRsZSh0aHJlYWRfaWQsIHRocmVhZCkpLAorICAgICAgICBDUkVBVEVf
U1VTUEVOREVELAorICAgICAgICAmd2F0Y2hlcl90aHJlYWRfaWQpOworICAgIEdURVNUX0NIRUNL
Xyh3YXRjaGVyX3RocmVhZCAhPSBOVUxMKTsKKyAgICAvLyBHaXZlIHRoZSB3YXRjaGVyIHRocmVh
ZCB0aGUgc2FtZSBwcmlvcml0eSBhcyBvdXJzIHRvIGF2b2lkIGJlaW5nCisgICAgLy8gYmxvY2tl
ZCBieSBpdC4KKyAgICA6OlNldFRocmVhZFByaW9yaXR5KHdhdGNoZXJfdGhyZWFkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgOjpHZXRUaHJlYWRQcmlvcml0eSg6OkdldEN1cnJlbnRUaHJlYWQo
KSkpOworICAgIDo6UmVzdW1lVGhyZWFkKHdhdGNoZXJfdGhyZWFkKTsKKyAgICA6OkNsb3NlSGFu
ZGxlKHdhdGNoZXJfdGhyZWFkKTsKKyAgfQorCisgIC8vIE1vbml0b3JzIGV4aXQgZnJvbSBhIGdp
dmVuIHRocmVhZCBhbmQgbm90aWZpZXMgdGhvc2UKKyAgLy8gVGhyZWFkSWRUb1RocmVhZExvY2Fs
cyBhYm91dCB0aHJlYWQgdGVybWluYXRpb24uCisgIHN0YXRpYyBEV09SRCBXSU5BUEkgV2F0Y2hl
clRocmVhZEZ1bmMoTFBWT0lEIHBhcmFtKSB7CisgICAgY29uc3QgVGhyZWFkSWRBbmRIYW5kbGUq
IHRhaCA9CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVGhyZWFkSWRBbmRIYW5kbGUq
PihwYXJhbSk7CisgICAgR1RFU1RfQ0hFQ0tfKAorICAgICAgICA6OldhaXRGb3JTaW5nbGVPYmpl
Y3QodGFoLT5zZWNvbmQsIElORklOSVRFKSA9PSBXQUlUX09CSkVDVF8wKTsKKyAgICBPblRocmVh
ZEV4aXQodGFoLT5maXJzdCk7CisgICAgOjpDbG9zZUhhbmRsZSh0YWgtPnNlY29uZCk7CisgICAg
ZGVsZXRlIHRhaDsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIC8vIFJldHVybnMgbWFwIG9mIHRo
cmVhZCBsb2NhbCBpbnN0YW5jZXMuCisgIHN0YXRpYyBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzKiBH
ZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKSB7CisgICAgbXV0ZXhfLkFzc2VydEhlbGQoKTsKKyAg
ICBNZW1vcnlJc05vdERlYWxsb2NhdGVkIG1lbW9yeV9pc19ub3RfZGVhbGxvY2F0ZWQ7CisgICAg
c3RhdGljIFRocmVhZElkVG9UaHJlYWRMb2NhbHMqIG1hcCA9IG5ldyBUaHJlYWRJZFRvVGhyZWFk
TG9jYWxzKCk7CisgICAgcmV0dXJuIG1hcDsKKyAgfQorCisgIC8vIFByb3RlY3RzIGFjY2VzcyB0
byBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKSBhbmQgaXRzIHJldHVybiB2YWx1ZS4KKyAgc3Rh
dGljIE11dGV4IG11dGV4XzsKKyAgLy8gUHJvdGVjdHMgYWNjZXNzIHRvIEdldFRocmVhZE1hcExv
Y2tlZCgpIGFuZCBpdHMgcmV0dXJuIHZhbHVlLgorICBzdGF0aWMgTXV0ZXggdGhyZWFkX21hcF9t
dXRleF87Cit9OworCitNdXRleCBUaHJlYWRMb2NhbFJlZ2lzdHJ5SW1wbDo6bXV0ZXhfKE11dGV4
OjprU3RhdGljTXV0ZXgpOworTXV0ZXggVGhyZWFkTG9jYWxSZWdpc3RyeUltcGw6OnRocmVhZF9t
YXBfbXV0ZXhfKE11dGV4OjprU3RhdGljTXV0ZXgpOworCitUaHJlYWRMb2NhbFZhbHVlSG9sZGVy
QmFzZSogVGhyZWFkTG9jYWxSZWdpc3RyeTo6R2V0VmFsdWVPbkN1cnJlbnRUaHJlYWQoCisgICAg
ICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9pbnN0YW5jZSkgeworICByZXR1
cm4gVGhyZWFkTG9jYWxSZWdpc3RyeUltcGw6OkdldFZhbHVlT25DdXJyZW50VGhyZWFkKAorICAg
ICAgdGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKK30KKwordm9pZCBUaHJlYWRMb2NhbFJlZ2lzdHJ5
OjpPblRocmVhZExvY2FsRGVzdHJveWVkKAorICAgICAgY29uc3QgVGhyZWFkTG9jYWxCYXNlKiB0
aHJlYWRfbG9jYWxfaW5zdGFuY2UpIHsKKyAgVGhyZWFkTG9jYWxSZWdpc3RyeUltcGw6Ok9uVGhy
ZWFkTG9jYWxEZXN0cm95ZWQodGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKK30KKworI2VuZGlmICAv
LyBHVEVTVF9JU19USFJFQURTQUZFICYmIEdURVNUX09TX1dJTkRPV1MKIAogI2lmIEdURVNUX1VT
RVNfUE9TSVhfUkUKIApAQCAtMTgwLDIwICs2ODgsMjAgQEAgYm9vbCBJc0luU2V0KGNoYXIgY2gs
IGNvbnN0IGNoYXIqIHN0cikgewogLy8gUmV0dXJucyB0cnVlIGlmZiBjaCBiZWxvbmdzIHRvIHRo
ZSBnaXZlbiBjbGFzc2lmaWNhdGlvbi4gIFVubGlrZQogLy8gc2ltaWxhciBmdW5jdGlvbnMgaW4g
PGN0eXBlLmg+LCB0aGVzZSBhcmVuJ3QgYWZmZWN0ZWQgYnkgdGhlCiAvLyBjdXJyZW50IGxvY2Fs
ZS4KLWJvb2wgSXNEaWdpdChjaGFyIGNoKSB7IHJldHVybiAnMCcgPD0gY2ggJiYgY2ggPD0gJzkn
OyB9Ci1ib29sIElzUHVuY3QoY2hhciBjaCkgeworYm9vbCBJc0FzY2lpRGlnaXQoY2hhciBjaCkg
eyByZXR1cm4gJzAnIDw9IGNoICYmIGNoIDw9ICc5JzsgfQorYm9vbCBJc0FzY2lpUHVuY3QoY2hh
ciBjaCkgewogICByZXR1cm4gSXNJblNldChjaCwgIl4tIVwiIyQlJicoKSorLC4vOjs8PT4/QFtc
XF1fYHt8fX4iKTsKIH0KIGJvb2wgSXNSZXBlYXQoY2hhciBjaCkgeyByZXR1cm4gSXNJblNldChj
aCwgIj8qKyIpOyB9Ci1ib29sIElzV2hpdGVTcGFjZShjaGFyIGNoKSB7IHJldHVybiBJc0luU2V0
KGNoLCAiIFxmXG5cclx0XHYiKTsgfQotYm9vbCBJc1dvcmRDaGFyKGNoYXIgY2gpIHsKK2Jvb2wg
SXNBc2NpaVdoaXRlU3BhY2UoY2hhciBjaCkgeyByZXR1cm4gSXNJblNldChjaCwgIiBcZlxuXHJc
dFx2Iik7IH0KK2Jvb2wgSXNBc2NpaVdvcmRDaGFyKGNoYXIgY2gpIHsKICAgcmV0dXJuICgnYScg
PD0gY2ggJiYgY2ggPD0gJ3onKSB8fCAoJ0EnIDw9IGNoICYmIGNoIDw9ICdaJykgfHwKICAgICAg
ICgnMCcgPD0gY2ggJiYgY2ggPD0gJzknKSB8fCBjaCA9PSAnXyc7CiB9CiAKIC8vIFJldHVybnMg
dHJ1ZSBpZmYgIlxcYyIgaXMgYSBzdXBwb3J0ZWQgZXNjYXBlIHNlcXVlbmNlLgogYm9vbCBJc1Zh
bGlkRXNjYXBlKGNoYXIgYykgewotICByZXR1cm4gKElzUHVuY3QoYykgfHwgSXNJblNldChjLCAi
ZERmbnJzU3R2d1ciKSk7CisgIHJldHVybiAoSXNBc2NpaVB1bmN0KGMpIHx8IElzSW5TZXQoYywg
ImREZm5yc1N0dndXIikpOwogfQogCiAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBnaXZlbiBhdG9t
IChzcGVjaWZpZWQgYnkgZXNjYXBlZCBhbmQgcGF0dGVybikKQEAgLTIwMSwyNiArNzA5LDI2IEBA
IGJvb2wgSXNWYWxpZEVzY2FwZShjaGFyIGMpIHsKIGJvb2wgQXRvbU1hdGNoZXNDaGFyKGJvb2wg
ZXNjYXBlZCwgY2hhciBwYXR0ZXJuX2NoYXIsIGNoYXIgY2gpIHsKICAgaWYgKGVzY2FwZWQpIHsg
IC8vICJcXHAiIHdoZXJlIHAgaXMgcGF0dGVybl9jaGFyLgogICAgIHN3aXRjaCAocGF0dGVybl9j
aGFyKSB7Ci0gICAgICBjYXNlICdkJzogcmV0dXJuIElzRGlnaXQoY2gpOwotICAgICAgY2FzZSAn
RCc6IHJldHVybiAhSXNEaWdpdChjaCk7CisgICAgICBjYXNlICdkJzogcmV0dXJuIElzQXNjaWlE
aWdpdChjaCk7CisgICAgICBjYXNlICdEJzogcmV0dXJuICFJc0FzY2lpRGlnaXQoY2gpOwogICAg
ICAgY2FzZSAnZic6IHJldHVybiBjaCA9PSAnXGYnOwogICAgICAgY2FzZSAnbic6IHJldHVybiBj
aCA9PSAnXG4nOwogICAgICAgY2FzZSAncic6IHJldHVybiBjaCA9PSAnXHInOwotICAgICAgY2Fz
ZSAncyc6IHJldHVybiBJc1doaXRlU3BhY2UoY2gpOwotICAgICAgY2FzZSAnUyc6IHJldHVybiAh
SXNXaGl0ZVNwYWNlKGNoKTsKKyAgICAgIGNhc2UgJ3MnOiByZXR1cm4gSXNBc2NpaVdoaXRlU3Bh
Y2UoY2gpOworICAgICAgY2FzZSAnUyc6IHJldHVybiAhSXNBc2NpaVdoaXRlU3BhY2UoY2gpOwog
ICAgICAgY2FzZSAndCc6IHJldHVybiBjaCA9PSAnXHQnOwogICAgICAgY2FzZSAndic6IHJldHVy
biBjaCA9PSAnXHYnOwotICAgICAgY2FzZSAndyc6IHJldHVybiBJc1dvcmRDaGFyKGNoKTsKLSAg
ICAgIGNhc2UgJ1cnOiByZXR1cm4gIUlzV29yZENoYXIoY2gpOworICAgICAgY2FzZSAndyc6IHJl
dHVybiBJc0FzY2lpV29yZENoYXIoY2gpOworICAgICAgY2FzZSAnVyc6IHJldHVybiAhSXNBc2Np
aVdvcmRDaGFyKGNoKTsKICAgICB9Ci0gICAgcmV0dXJuIElzUHVuY3QocGF0dGVybl9jaGFyKSAm
JiBwYXR0ZXJuX2NoYXIgPT0gY2g7CisgICAgcmV0dXJuIElzQXNjaWlQdW5jdChwYXR0ZXJuX2No
YXIpICYmIHBhdHRlcm5fY2hhciA9PSBjaDsKICAgfQogCiAgIHJldHVybiAocGF0dGVybl9jaGFy
ID09ICcuJyAmJiBjaCAhPSAnXG4nKSB8fCBwYXR0ZXJuX2NoYXIgPT0gY2g7CiB9CiAKIC8vIEhl
bHBlciBmdW5jdGlvbiB1c2VkIGJ5IFZhbGlkYXRlUmVnZXgoKSB0byBmb3JtYXQgZXJyb3IgbWVz
c2FnZXMuCi1TdHJpbmcgRm9ybWF0UmVnZXhTeW50YXhFcnJvcihjb25zdCBjaGFyKiByZWdleCwg
aW50IGluZGV4KSB7CitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0UmVnZXhTeW50YXhFcnJvcihj
b25zdCBjaGFyKiByZWdleCwgaW50IGluZGV4KSB7CiAgIHJldHVybiAoTWVzc2FnZSgpIDw8ICJT
eW50YXggZXJyb3IgYXQgaW5kZXggIiA8PCBpbmRleAogICAgICAgICAgIDw8ICIgaW4gc2ltcGxl
IHJlZ3VsYXIgZXhwcmVzc2lvbiBcIiIgPDwgcmVnZXggPDwgIlwiOiAiKS5HZXRTdHJpbmcoKTsK
IH0KQEAgLTIyOSw3ICs3MzcsNyBAQCBTdHJpbmcgRm9ybWF0UmVnZXhTeW50YXhFcnJvcihjb25z
dCBjaGFyKiByZWdleCwgaW50IGluZGV4KSB7CiAvLyBvdGhlcndpc2UgcmV0dXJucyB0cnVlLgog
Ym9vbCBWYWxpZGF0ZVJlZ2V4KGNvbnN0IGNoYXIqIHJlZ2V4KSB7CiAgIGlmIChyZWdleCA9PSBO
VUxMKSB7Ci0gICAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IGZpeCB0aGUgc291cmNlIGZpbGUg
bG9jYXRpb24gaW4gdGhlCisgICAgLy8gRklYTUU6IGZpeCB0aGUgc291cmNlIGZpbGUgbG9jYXRp
b24gaW4gdGhlCiAgICAgLy8gYXNzZXJ0aW9uIGZhaWx1cmVzIHRvIG1hdGNoIHdoZXJlIHRoZSBy
ZWdleCBpcyB1c2VkIGluIHVzZXIKICAgICAvLyBjb2RlLgogICAgIEFERF9GQUlMVVJFKCkgPDwg
Ik5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbi4iOwpAQCAtNDIy
LDYgKzkzMCwzNyBAQCB2b2lkIFJFOjpJbml0KGNvbnN0IGNoYXIqIHJlZ2V4KSB7CiAKICNlbmRp
ZiAgLy8gR1RFU1RfVVNFU19QT1NJWF9SRQogCitjb25zdCBjaGFyIGtVbmtub3duRmlsZVtdID0g
InVua25vd24gZmlsZSI7CisKKy8vIEZvcm1hdHMgYSBzb3VyY2UgZmlsZSBwYXRoIGFuZCBhIGxp
bmUgbnVtYmVyIGFzIHRoZXkgd291bGQgYXBwZWFyCisvLyBpbiBhbiBlcnJvciBtZXNzYWdlIGZy
b20gdGhlIGNvbXBpbGVyIHVzZWQgdG8gY29tcGlsZSB0aGlzIGNvZGUuCitHVEVTVF9BUElfIDo6
c3RkOjpzdHJpbmcgRm9ybWF0RmlsZUxvY2F0aW9uKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5l
KSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbGVfbmFtZShmaWxlID09IE5VTEwgPyBrVW5rbm93
bkZpbGUgOiBmaWxlKTsKKworICBpZiAobGluZSA8IDApIHsKKyAgICByZXR1cm4gZmlsZV9uYW1l
ICsgIjoiOworICB9CisjaWZkZWYgX01TQ19WRVIKKyAgcmV0dXJuIGZpbGVfbmFtZSArICIoIiAr
IFN0cmVhbWFibGVUb1N0cmluZyhsaW5lKSArICIpOiI7CisjZWxzZQorICByZXR1cm4gZmlsZV9u
YW1lICsgIjoiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGxpbmUpICsgIjoiOworI2VuZGlmICAvLyBf
TVNDX1ZFUgorfQorCisvLyBGb3JtYXRzIGEgZmlsZSBsb2NhdGlvbiBmb3IgY29tcGlsZXItaW5k
ZXBlbmRlbnQgWE1MIG91dHB1dC4KKy8vIEFsdGhvdWdoIHRoaXMgZnVuY3Rpb24gaXMgbm90IHBs
YXRmb3JtIGRlcGVuZGVudCwgd2UgcHV0IGl0IG5leHQgdG8KKy8vIEZvcm1hdEZpbGVMb2NhdGlv
biBpbiBvcmRlciB0byBjb250cmFzdCB0aGUgdHdvIGZ1bmN0aW9ucy4KKy8vIE5vdGUgdGhhdCBG
b3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uKCkgZG9lcyBOT1QgYXBwZW5kIGNv
bG9uCisvLyB0byB0aGUgZmlsZSBsb2NhdGlvbiBpdCBwcm9kdWNlcywgdW5saWtlIEZvcm1hdEZp
bGVMb2NhdGlvbigpLgorR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEZvcm1hdENvbXBpbGVySW5k
ZXBlbmRlbnRGaWxlTG9jYXRpb24oCisgICAgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpIHsK
KyAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsZV9uYW1lKGZpbGUgPT0gTlVMTCA/IGtVbmtub3duRmls
ZSA6IGZpbGUpOworCisgIGlmIChsaW5lIDwgMCkKKyAgICByZXR1cm4gZmlsZV9uYW1lOworICBl
bHNlCisgICAgcmV0dXJuIGZpbGVfbmFtZSArICI6IiArIFN0cmVhbWFibGVUb1N0cmluZyhsaW5l
KTsKK30KIAogR1Rlc3RMb2c6OkdUZXN0TG9nKEdUZXN0TG9nU2V2ZXJpdHkgc2V2ZXJpdHksIGNv
bnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKQogICAgIDogc2V2ZXJpdHlfKHNldmVyaXR5KSB7CkBA
IC00NDEsMjEgKzk4MCwxOSBAQCBHVGVzdExvZzo6fkdUZXN0TG9nKCkgewogICAgIHBvc2l4OjpB
Ym9ydCgpOwogICB9CiB9CisKIC8vIERpc2FibGUgTWljcm9zb2Z0IGRlcHJlY2F0aW9uIHdhcm5p
bmdzIGZvciBQT1NJWCBmdW5jdGlvbnMgY2FsbGVkIGZyb20KIC8vIHRoaXMgY2xhc3MgKGNyZWF0
LCBkdXAsIGR1cDIsIGFuZCBjbG9zZSkKLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5n
KHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDk5NikKLSNlbmRpZiAgLy8gX01TQ19W
RVIKK0dURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVTSF8oKQogCi0jaWYgR1RFU1RfSEFT
X1NUUkVBTV9SRURJUkVDVElPTl8KKyNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCiAK
IC8vIE9iamVjdCB0aGF0IGNhcHR1cmVzIGFuIG91dHB1dCBzdHJlYW0gKHN0ZG91dC9zdGRlcnIp
LgogY2xhc3MgQ2FwdHVyZWRTdHJlYW0gewogIHB1YmxpYzoKICAgLy8gVGhlIGN0b3IgcmVkaXJl
Y3RzIHRoZSBzdHJlYW0gdG8gYSB0ZW1wb3JhcnkgZmlsZS4KLSAgQ2FwdHVyZWRTdHJlYW0oaW50
IGZkKSA6IGZkXyhmZCksIHVuY2FwdHVyZWRfZmRfKGR1cChmZCkpIHsKLSNpZiBHVEVTVF9PU19X
SU5ET1dTCisgIGV4cGxpY2l0IENhcHR1cmVkU3RyZWFtKGludCBmZCkgOiBmZF8oZmQpLCB1bmNh
cHR1cmVkX2ZkXyhkdXAoZmQpKSB7CisjIGlmIEdURVNUX09TX1dJTkRPV1MKICAgICBjaGFyIHRl
bXBfZGlyX3BhdGhbTUFYX1BBVEggKyAxXSA9IHsgJ1wwJyB9OyAgLy8gTk9MSU5UCiAgICAgY2hh
ciB0ZW1wX2ZpbGVfcGF0aFtNQVhfUEFUSCArIDFdID0geyAnXDAnIH07ICAvLyBOT0xJTlQKIApA
QCAtNDcwLDE0ICsxMDA3LDMzIEBAIGNsYXNzIENhcHR1cmVkU3RyZWFtIHsKICAgICBHVEVTVF9D
SEVDS18oY2FwdHVyZWRfZmQgIT0gLTEpIDw8ICJVbmFibGUgdG8gb3BlbiB0ZW1wb3JhcnkgZmls
ZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCB0ZW1wX2ZpbGVfcGF0
aDsKICAgICBmaWxlbmFtZV8gPSB0ZW1wX2ZpbGVfcGF0aDsKLSNlbHNlCi0gICAgLy8gVGhlcmUn
cyBubyBndWFyYW50ZWUgdGhhdCBhIHRlc3QgaGFzIHdyaXRlIGFjY2VzcyB0byB0aGUKLSAgICAv
LyBjdXJyZW50IGRpcmVjdG9yeSwgc28gd2UgY3JlYXRlIHRoZSB0ZW1wb3JhcnkgZmlsZSBpbiB0
aGUgL3RtcAotICAgIC8vIGRpcmVjdG9yeSBpbnN0ZWFkLgorIyBlbHNlCisgICAgLy8gVGhlcmUn
cyBubyBndWFyYW50ZWUgdGhhdCBhIHRlc3QgaGFzIHdyaXRlIGFjY2VzcyB0byB0aGUgY3VycmVu
dAorICAgIC8vIGRpcmVjdG9yeSwgc28gd2UgY3JlYXRlIHRoZSB0ZW1wb3JhcnkgZmlsZSBpbiB0
aGUgL3RtcCBkaXJlY3RvcnkKKyAgICAvLyBpbnN0ZWFkLiBXZSB1c2UgL3RtcCBvbiBtb3N0IHN5
c3RlbXMsIGFuZCAvc2RjYXJkIG9uIEFuZHJvaWQuCisgICAgLy8gVGhhdCdzIGJlY2F1c2UgQW5k
cm9pZCBkb2Vzbid0IGhhdmUgL3RtcC4KKyMgIGlmIEdURVNUX09TX0xJTlVYX0FORFJPSUQKKyAg
ICAvLyBOb3RlOiBBbmRyb2lkIGFwcGxpY2F0aW9ucyBhcmUgZXhwZWN0ZWQgdG8gY2FsbCB0aGUg
ZnJhbWV3b3JrJ3MKKyAgICAvLyBDb250ZXh0LmdldEV4dGVybmFsU3RvcmFnZURpcmVjdG9yeSgp
IG1ldGhvZCB0aHJvdWdoIEpOSSB0byBnZXQKKyAgICAvLyB0aGUgbG9jYXRpb24gb2YgdGhlIHdv
cmxkLXdyaXRhYmxlIFNEIENhcmQgZGlyZWN0b3J5LiBIb3dldmVyLAorICAgIC8vIHRoaXMgcmVx
dWlyZXMgYSBDb250ZXh0IGhhbmRsZSwgd2hpY2ggY2Fubm90IGJlIHJldHJpZXZlZAorICAgIC8v
IGdsb2JhbGx5IGZyb20gbmF0aXZlIGNvZGUuIERvaW5nIHNvIGFsc28gcHJlY2x1ZGVzIHJ1bm5p
bmcgdGhlCisgICAgLy8gY29kZSBhcyBwYXJ0IG9mIGEgcmVndWxhciBzdGFuZGFsb25lIGV4ZWN1
dGFibGUsIHdoaWNoIGRvZXNuJ3QKKyAgICAvLyBydW4gaW4gYSBEYWx2aWsgcHJvY2VzcyAoZS5n
LiB3aGVuIHJ1bm5pbmcgaXQgdGhyb3VnaCAnYWRiIHNoZWxsJykuCisgICAgLy8KKyAgICAvLyBU
aGUgbG9jYXRpb24gL3NkY2FyZCBpcyBkaXJlY3RseSBhY2Nlc3NpYmxlIGZyb20gbmF0aXZlIGNv
ZGUKKyAgICAvLyBhbmQgaXMgdGhlIG9ubHkgbG9jYXRpb24gKHVub2ZmaWNpYWxseSkgc3VwcG9y
dGVkIGJ5IHRoZSBBbmRyb2lkCisgICAgLy8gdGVhbS4gSXQncyBnZW5lcmFsbHkgYSBzeW1saW5r
IHRvIHRoZSByZWFsIFNEIENhcmQgbW91bnQgcG9pbnQKKyAgICAvLyB3aGljaCBjYW4gYmUgL21u
dC9zZGNhcmQsIC9tbnQvc2RjYXJkMCwgL3N5c3RlbS9tZWRpYS9zZGNhcmQsIG9yCisgICAgLy8g
b3RoZXIgT0VNLWN1c3RvbWl6ZWQgbG9jYXRpb25zLiBOZXZlciByZWx5IG9uIHRoZXNlLCBhbmQg
YWx3YXlzCisgICAgLy8gdXNlIC9zZGNhcmQuCisgICAgY2hhciBuYW1lX3RlbXBsYXRlW10gPSAi
L3NkY2FyZC9ndGVzdF9jYXB0dXJlZF9zdHJlYW0uWFhYWFhYIjsKKyMgIGVsc2UKICAgICBjaGFy
IG5hbWVfdGVtcGxhdGVbXSA9ICIvdG1wL2NhcHR1cmVkX3N0cmVhbS5YWFhYWFgiOworIyAgZW5k
aWYgIC8vIEdURVNUX09TX0xJTlVYX0FORFJPSUQKICAgICBjb25zdCBpbnQgY2FwdHVyZWRfZmQg
PSBta3N0ZW1wKG5hbWVfdGVtcGxhdGUpOwogICAgIGZpbGVuYW1lXyA9IG5hbWVfdGVtcGxhdGU7
Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRP
V1MKICAgICBmZmx1c2goTlVMTCk7CiAgICAgZHVwMihjYXB0dXJlZF9mZCwgZmRfKTsKICAgICBj
bG9zZShjYXB0dXJlZF9mZCk7CkBAIC00ODcsNyArMTA0Myw3IEBAIGNsYXNzIENhcHR1cmVkU3Ry
ZWFtIHsKICAgICByZW1vdmUoZmlsZW5hbWVfLmNfc3RyKCkpOwogICB9CiAKLSAgU3RyaW5nIEdl
dENhcHR1cmVkU3RyaW5nKCkgeworICBzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0cmluZygpIHsK
ICAgICBpZiAodW5jYXB0dXJlZF9mZF8gIT0gLTEpIHsKICAgICAgIC8vIFJlc3RvcmVzIHRoZSBv
cmlnaW5hbCBzdHJlYW0uCiAgICAgICBmZmx1c2goTlVMTCk7CkBAIC00OTcsMTggKzEwNTMsMTIg
QEAgY2xhc3MgQ2FwdHVyZWRTdHJlYW0gewogICAgIH0KIAogICAgIEZJTEUqIGNvbnN0IGZpbGUg
PSBwb3NpeDo6Rk9wZW4oZmlsZW5hbWVfLmNfc3RyKCksICJyIik7Ci0gICAgY29uc3QgU3RyaW5n
IGNvbnRlbnQgPSBSZWFkRW50aXJlRmlsZShmaWxlKTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBj
b250ZW50ID0gUmVhZEVudGlyZUZpbGUoZmlsZSk7CiAgICAgcG9zaXg6OkZDbG9zZShmaWxlKTsK
ICAgICByZXR1cm4gY29udGVudDsKICAgfQogCiAgcHJpdmF0ZToKLSAgLy8gUmVhZHMgdGhlIGVu
dGlyZSBjb250ZW50IG9mIGEgZmlsZSBhcyBhIFN0cmluZy4KLSAgc3RhdGljIFN0cmluZyBSZWFk
RW50aXJlRmlsZShGSUxFKiBmaWxlKTsKLQotICAvLyBSZXR1cm5zIHRoZSBzaXplIChpbiBieXRl
cykgb2YgYSBmaWxlLgotICBzdGF0aWMgc2l6ZV90IEdldEZpbGVTaXplKEZJTEUqIGZpbGUpOwot
CiAgIGNvbnN0IGludCBmZF87ICAvLyBBIHN0cmVhbSB0byBjYXB0dXJlLgogICBpbnQgdW5jYXB0
dXJlZF9mZF87CiAgIC8vIE5hbWUgb2YgdGhlIHRlbXBvcmFyeSBmaWxlIGhvbGRpbmcgdGhlIHN0
ZGVyciBvdXRwdXQuCkBAIC01MTcsNDQgKzEwNjcsMTQgQEAgY2xhc3MgQ2FwdHVyZWRTdHJlYW0g
ewogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKENhcHR1cmVkU3RyZWFtKTsKIH07
CiAKLS8vIFJldHVybnMgdGhlIHNpemUgKGluIGJ5dGVzKSBvZiBhIGZpbGUuCi1zaXplX3QgQ2Fw
dHVyZWRTdHJlYW06OkdldEZpbGVTaXplKEZJTEUqIGZpbGUpIHsKLSAgZnNlZWsoZmlsZSwgMCwg
U0VFS19FTkQpOwotICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihmdGVsbChmaWxlKSk7Ci19
Ci0KLS8vIFJlYWRzIHRoZSBlbnRpcmUgY29udGVudCBvZiBhIGZpbGUgYXMgYSBzdHJpbmcuCi1T
dHJpbmcgQ2FwdHVyZWRTdHJlYW06OlJlYWRFbnRpcmVGaWxlKEZJTEUqIGZpbGUpIHsKLSAgY29u
c3Qgc2l6ZV90IGZpbGVfc2l6ZSA9IEdldEZpbGVTaXplKGZpbGUpOwotICBjaGFyKiBjb25zdCBi
dWZmZXIgPSBuZXcgY2hhcltmaWxlX3NpemVdOwotCi0gIHNpemVfdCBieXRlc19sYXN0X3JlYWQg
PSAwOyAgLy8gIyBvZiBieXRlcyByZWFkIGluIHRoZSBsYXN0IGZyZWFkKCkKLSAgc2l6ZV90IGJ5
dGVzX3JlYWQgPSAwOyAgICAgICAvLyAjIG9mIGJ5dGVzIHJlYWQgc28gZmFyCi0KLSAgZnNlZWso
ZmlsZSwgMCwgU0VFS19TRVQpOwotCi0gIC8vIEtlZXBzIHJlYWRpbmcgdGhlIGZpbGUgdW50aWwg
d2UgY2Fubm90IHJlYWQgZnVydGhlciBvciB0aGUKLSAgLy8gcHJlLWRldGVybWluZWQgZmlsZSBz
aXplIGlzIHJlYWNoZWQuCi0gIGRvIHsKLSAgICBieXRlc19sYXN0X3JlYWQgPSBmcmVhZChidWZm
ZXIrYnl0ZXNfcmVhZCwgMSwgZmlsZV9zaXplLWJ5dGVzX3JlYWQsIGZpbGUpOwotICAgIGJ5dGVz
X3JlYWQgKz0gYnl0ZXNfbGFzdF9yZWFkOwotICB9IHdoaWxlIChieXRlc19sYXN0X3JlYWQgPiAw
ICYmIGJ5dGVzX3JlYWQgPCBmaWxlX3NpemUpOwotCi0gIGNvbnN0IFN0cmluZyBjb250ZW50KGJ1
ZmZlciwgYnl0ZXNfcmVhZCk7Ci0gIGRlbGV0ZVtdIGJ1ZmZlcjsKLQotICByZXR1cm4gY29udGVu
dDsKLX0KLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmICAv
LyBfTVNDX1ZFUgorR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRFRF9QT1BfKCkKIAogc3RhdGlj
IENhcHR1cmVkU3RyZWFtKiBnX2NhcHR1cmVkX3N0ZGVyciA9IE5VTEw7CiBzdGF0aWMgQ2FwdHVy
ZWRTdHJlYW0qIGdfY2FwdHVyZWRfc3Rkb3V0ID0gTlVMTDsKIAogLy8gU3RhcnRzIGNhcHR1cmlu
ZyBhbiBvdXRwdXQgc3RyZWFtIChzdGRvdXQvc3RkZXJyKS4KLXZvaWQgQ2FwdHVyZVN0cmVhbShp
bnQgZmQsIGNvbnN0IGNoYXIqIHN0cmVhbV9uYW1lLCBDYXB0dXJlZFN0cmVhbSoqIHN0cmVhbSkg
eworc3RhdGljIHZvaWQgQ2FwdHVyZVN0cmVhbShpbnQgZmQsIGNvbnN0IGNoYXIqIHN0cmVhbV9u
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICBDYXB0dXJlZFN0cmVhbSoqIHN0cmVhbSkg
ewogICBpZiAoKnN0cmVhbSAhPSBOVUxMKSB7CiAgICAgR1RFU1RfTE9HXyhGQVRBTCkgPDwgIk9u
bHkgb25lICIgPDwgc3RyZWFtX25hbWUKICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGNhcHR1
cmVyIGNhbiBleGlzdCBhdCBhIHRpbWUuIjsKQEAgLTU2Myw4ICsxMDgzLDggQEAgdm9pZCBDYXB0
dXJlU3RyZWFtKGludCBmZCwgY29uc3QgY2hhciogc3RyZWFtX25hbWUsIENhcHR1cmVkU3RyZWFt
Kiogc3RyZWFtKSB7CiB9CiAKIC8vIFN0b3BzIGNhcHR1cmluZyB0aGUgb3V0cHV0IHN0cmVhbSBh
bmQgcmV0dXJucyB0aGUgY2FwdHVyZWQgc3RyaW5nLgotU3RyaW5nIEdldENhcHR1cmVkU3RyZWFt
KENhcHR1cmVkU3RyZWFtKiogY2FwdHVyZWRfc3RyZWFtKSB7Ci0gIGNvbnN0IFN0cmluZyBjb250
ZW50ID0gKCpjYXB0dXJlZF9zdHJlYW0pLT5HZXRDYXB0dXJlZFN0cmluZygpOworc3RhdGljIHN0
ZDo6c3RyaW5nIEdldENhcHR1cmVkU3RyZWFtKENhcHR1cmVkU3RyZWFtKiogY2FwdHVyZWRfc3Ry
ZWFtKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvbnRlbnQgPSAoKmNhcHR1cmVkX3N0cmVhbSkt
PkdldENhcHR1cmVkU3RyaW5nKCk7CiAKICAgZGVsZXRlICpjYXB0dXJlZF9zdHJlYW07CiAgICpj
YXB0dXJlZF9zdHJlYW0gPSBOVUxMOwpAQCAtNTgzLDIxICsxMTAzLDc5IEBAIHZvaWQgQ2FwdHVy
ZVN0ZGVycigpIHsKIH0KIAogLy8gU3RvcHMgY2FwdHVyaW5nIHN0ZG91dCBhbmQgcmV0dXJucyB0
aGUgY2FwdHVyZWQgc3RyaW5nLgotU3RyaW5nIEdldENhcHR1cmVkU3Rkb3V0KCkgeyByZXR1cm4g
R2V0Q2FwdHVyZWRTdHJlYW0oJmdfY2FwdHVyZWRfc3Rkb3V0KTsgfQorc3RkOjpzdHJpbmcgR2V0
Q2FwdHVyZWRTdGRvdXQoKSB7CisgIHJldHVybiBHZXRDYXB0dXJlZFN0cmVhbSgmZ19jYXB0dXJl
ZF9zdGRvdXQpOworfQogCiAvLyBTdG9wcyBjYXB0dXJpbmcgc3RkZXJyIGFuZCByZXR1cm5zIHRo
ZSBjYXB0dXJlZCBzdHJpbmcuCi1TdHJpbmcgR2V0Q2FwdHVyZWRTdGRlcnIoKSB7IHJldHVybiBH
ZXRDYXB0dXJlZFN0cmVhbSgmZ19jYXB0dXJlZF9zdGRlcnIpOyB9CitzdGQ6OnN0cmluZyBHZXRD
YXB0dXJlZFN0ZGVycigpIHsKKyAgcmV0dXJuIEdldENhcHR1cmVkU3RyZWFtKCZnX2NhcHR1cmVk
X3N0ZGVycik7Cit9CiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8K
KyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgorCisKKworCisKK3NpemVf
dCBHZXRGaWxlU2l6ZShGSUxFKiBmaWxlKSB7CisgIGZzZWVrKGZpbGUsIDAsIFNFRUtfRU5EKTsK
KyAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oZnRlbGwoZmlsZSkpOworfQorCitzdGQ6OnN0
cmluZyBSZWFkRW50aXJlRmlsZShGSUxFKiBmaWxlKSB7CisgIGNvbnN0IHNpemVfdCBmaWxlX3Np
emUgPSBHZXRGaWxlU2l6ZShmaWxlKTsKKyAgY2hhciogY29uc3QgYnVmZmVyID0gbmV3IGNoYXJb
ZmlsZV9zaXplXTsKKworICBzaXplX3QgYnl0ZXNfbGFzdF9yZWFkID0gMDsgIC8vICMgb2YgYnl0
ZXMgcmVhZCBpbiB0aGUgbGFzdCBmcmVhZCgpCisgIHNpemVfdCBieXRlc19yZWFkID0gMDsgICAg
ICAgLy8gIyBvZiBieXRlcyByZWFkIHNvIGZhcgorCisgIGZzZWVrKGZpbGUsIDAsIFNFRUtfU0VU
KTsKKworICAvLyBLZWVwcyByZWFkaW5nIHRoZSBmaWxlIHVudGlsIHdlIGNhbm5vdCByZWFkIGZ1
cnRoZXIgb3IgdGhlCisgIC8vIHByZS1kZXRlcm1pbmVkIGZpbGUgc2l6ZSBpcyByZWFjaGVkLgor
ICBkbyB7CisgICAgYnl0ZXNfbGFzdF9yZWFkID0gZnJlYWQoYnVmZmVyK2J5dGVzX3JlYWQsIDEs
IGZpbGVfc2l6ZS1ieXRlc19yZWFkLCBmaWxlKTsKKyAgICBieXRlc19yZWFkICs9IGJ5dGVzX2xh
c3RfcmVhZDsKKyAgfSB3aGlsZSAoYnl0ZXNfbGFzdF9yZWFkID4gMCAmJiBieXRlc19yZWFkIDwg
ZmlsZV9zaXplKTsKKworICBjb25zdCBzdGQ6OnN0cmluZyBjb250ZW50KGJ1ZmZlciwgYnl0ZXNf
cmVhZCk7CisgIGRlbGV0ZVtdIGJ1ZmZlcjsKKworICByZXR1cm4gY29udGVudDsKK30KIAogI2lm
IEdURVNUX0hBU19ERUFUSF9URVNUCitzdGF0aWMgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+KiBnX2luamVjdGVkX3Rlc3RfYXJndnMgPSBOVUxMOyAgLy8gT3duZWQuCiAKLS8vIEEgY29w
eSBvZiBhbGwgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4gIFNldCBieSBJbml0R29vZ2xlVGVzdCgp
LgotOjpzdGQ6OnZlY3RvcjxTdHJpbmc+IGdfYXJndnM7CitzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4gR2V0SW5qZWN0YWJsZUFyZ3ZzKCkgeworICBpZiAoZ19pbmplY3RlZF90ZXN0X2FyZ3ZzICE9
IE5VTEwpIHsKKyAgICByZXR1cm4gKmdfaW5qZWN0ZWRfdGVzdF9hcmd2czsKKyAgfQorICByZXR1
cm4gR2V0QXJndnMoKTsKK30KKwordm9pZCBTZXRJbmplY3RhYmxlQXJndnMoY29uc3Qgc3RkOjp2
ZWN0b3I8c3RkOjpzdHJpbmc+KiBuZXdfYXJndnMpIHsKKyAgaWYgKGdfaW5qZWN0ZWRfdGVzdF9h
cmd2cyAhPSBuZXdfYXJndnMpIGRlbGV0ZSBnX2luamVjdGVkX3Rlc3RfYXJndnM7CisgIGdfaW5q
ZWN0ZWRfdGVzdF9hcmd2cyA9IG5ld19hcmd2czsKK30KIAotLy8gUmV0dXJucyB0aGUgY29tbWFu
ZCBsaW5lIGFzIGEgdmVjdG9yIG9mIHN0cmluZ3MuCi1jb25zdCA6OnN0ZDo6dmVjdG9yPFN0cmlu
Zz4mIEdldEFyZ3ZzKCkgeyByZXR1cm4gZ19hcmd2czsgfQordm9pZCBTZXRJbmplY3RhYmxlQXJn
dnMoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBuZXdfYXJndnMpIHsKKyAgU2V0SW5q
ZWN0YWJsZUFyZ3ZzKAorICAgICAgbmV3IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPihuZXdfYXJn
dnMuYmVnaW4oKSwgbmV3X2FyZ3ZzLmVuZCgpKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfR0xPQkFM
X1NUUklORwordm9pZCBTZXRJbmplY3RhYmxlQXJndnMoY29uc3Qgc3RkOjp2ZWN0b3I8IDo6c3Ry
aW5nPiYgbmV3X2FyZ3ZzKSB7CisgIFNldEluamVjdGFibGVBcmd2cygKKyAgICAgIG5ldyBzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4obmV3X2FyZ3ZzLmJlZ2luKCksIG5ld19hcmd2cy5lbmQoKSkp
OworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwogCit2b2lkIENsZWFySW5q
ZWN0YWJsZUFyZ3ZzKCkgeworICBkZWxldGUgZ19pbmplY3RlZF90ZXN0X2FyZ3ZzOworICBnX2lu
amVjdGVkX3Rlc3RfYXJndnMgPSBOVUxMOworfQogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhf
VEVTVAogCiAjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKQEAgLTYxMiwxMyArMTE5MCwxMyBA
QCB2b2lkIEFib3J0KCkgewogLy8gUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgZW52aXJvbm1lbnQg
dmFyaWFibGUgY29ycmVzcG9uZGluZyB0byB0aGUKIC8vIGdpdmVuIGZsYWcuICBGb3IgZXhhbXBs
ZSwgRmxhZ1RvRW52VmFyKCJmb28iKSB3aWxsIHJldHVybgogLy8gIkdURVNUX0ZPTyIgaW4gdGhl
IG9wZW4tc291cmNlIHZlcnNpb24uCi1zdGF0aWMgU3RyaW5nIEZsYWdUb0VudlZhcihjb25zdCBj
aGFyKiBmbGFnKSB7Ci0gIGNvbnN0IFN0cmluZyBmdWxsX2ZsYWcgPQorc3RhdGljIHN0ZDo6c3Ry
aW5nIEZsYWdUb0VudlZhcihjb25zdCBjaGFyKiBmbGFnKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5n
IGZ1bGxfZmxhZyA9CiAgICAgICAoTWVzc2FnZSgpIDw8IEdURVNUX0ZMQUdfUFJFRklYXyA8PCBm
bGFnKS5HZXRTdHJpbmcoKTsKIAogICBNZXNzYWdlIGVudl92YXI7CiAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpICE9IGZ1bGxfZmxhZy5sZW5ndGgoKTsgaSsrKSB7Ci0gICAgZW52X3ZhciA8PCBzdGF0
aWNfY2FzdDxjaGFyPih0b3VwcGVyKGZ1bGxfZmxhZy5jX3N0cigpW2ldKSk7CisgICAgZW52X3Zh
ciA8PCBUb1VwcGVyKGZ1bGxfZmxhZy5jX3N0cigpW2ldKTsKICAgfQogCiAgIHJldHVybiBlbnZf
dmFyLkdldFN0cmluZygpOwpAQCAtNjcwLDE3ICsxMjQ4LDI0IEBAIGJvb2wgUGFyc2VJbnQzMihj
b25zdCBNZXNzYWdlJiBzcmNfdGV4dCwgY29uc3QgY2hhciogc3RyLCBJbnQzMiogdmFsdWUpIHsK
IC8vCiAvLyBUaGUgdmFsdWUgaXMgY29uc2lkZXJlZCB0cnVlIGlmZiBpdCdzIG5vdCAiMCIuCiBi
b29sIEJvb2xGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywgYm9vbCBkZWZhdWx0X3ZhbHVl
KSB7Ci0gIGNvbnN0IFN0cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52VmFyKGZsYWcpOworI2lmIGRl
ZmluZWQoR1RFU1RfR0VUX0JPT0xfRlJPTV9FTlZfKQorICByZXR1cm4gR1RFU1RfR0VUX0JPT0xf
RlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOworI2Vsc2UKKyAgY29uc3Qgc3RkOjpzdHJp
bmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFnKTsKICAgY29uc3QgY2hhciogY29uc3Qgc3Ry
aW5nX3ZhbHVlID0gcG9zaXg6OkdldEVudihlbnZfdmFyLmNfc3RyKCkpOwogICByZXR1cm4gc3Ry
aW5nX3ZhbHVlID09IE5VTEwgPwogICAgICAgZGVmYXVsdF92YWx1ZSA6IHN0cmNtcChzdHJpbmdf
dmFsdWUsICIwIikgIT0gMDsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9HRVRfQk9PTF9GUk9N
X0VOVl8pCiB9CiAKIC8vIFJlYWRzIGFuZCByZXR1cm5zIGEgMzItYml0IGludGVnZXIgc3RvcmVk
IGluIHRoZSBlbnZpcm9ubWVudAogLy8gdmFyaWFibGUgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2
ZW4gZmxhZzsgaWYgaXQgaXNuJ3Qgc2V0IG9yCiAvLyBkb2Vzbid0IHJlcHJlc2VudCBhIHZhbGlk
IDMyLWJpdCBpbnRlZ2VyLCByZXR1cm5zIGRlZmF1bHRfdmFsdWUuCiBJbnQzMiBJbnQzMkZyb21H
VGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBJbnQzMiBkZWZhdWx0X3ZhbHVlKSB7Ci0gIGNvbnN0
IFN0cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52VmFyKGZsYWcpOworI2lmIGRlZmluZWQoR1RFU1Rf
R0VUX0lOVDMyX0ZST01fRU5WXykKKyAgcmV0dXJuIEdURVNUX0dFVF9JTlQzMl9GUk9NX0VOVl8o
ZmxhZywgZGVmYXVsdF92YWx1ZSk7CisjZWxzZQorICBjb25zdCBzdGQ6OnN0cmluZyBlbnZfdmFy
ID0gRmxhZ1RvRW52VmFyKGZsYWcpOwogICBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdfdmFsdWUg
PSBwb3NpeDo6R2V0RW52KGVudl92YXIuY19zdHIoKSk7CiAgIGlmIChzdHJpbmdfdmFsdWUgPT0g
TlVMTCkgewogICAgIC8vIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0LgpAQCAt
Njk3LDE0ICsxMjgyLDM2IEBAIEludDMyIEludDMyRnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZs
YWcsIEludDMyIGRlZmF1bHRfdmFsdWUpIHsKICAgfQogCiAgIHJldHVybiByZXN1bHQ7CisjZW5k
aWYgIC8vIGRlZmluZWQoR1RFU1RfR0VUX0lOVDMyX0ZST01fRU5WXykKK30KKworLy8gQXMgYSBz
cGVjaWFsIGNhc2UgZm9yIHRoZSAnb3V0cHV0JyBmbGFnLCBpZiBHVEVTVF9PVVRQVVQgaXMgbm90
CisvLyBzZXQsIHdlIGxvb2sgZm9yIFhNTF9PVVRQVVRfRklMRSwgd2hpY2ggaXMgc2V0IGJ5IHRo
ZSBCYXplbCBidWlsZAorLy8gc3lzdGVtLiAgVGhlIHZhbHVlIG9mIFhNTF9PVVRQVVRfRklMRSBp
cyBhIGZpbGVuYW1lIHdpdGhvdXQgdGhlCisvLyAieG1sOiIgcHJlZml4IG9mIEdURVNUX09VVFBV
VC4KKy8vIE5vdGUgdGhhdCB0aGlzIGlzIG1lYW50IHRvIGJlIGNhbGxlZCBhdCB0aGUgY2FsbCBz
aXRlIHNvIGl0IGRvZXMKKy8vIG5vdCBjaGVjayB0aGF0IHRoZSBmbGFnIGlzICdvdXRwdXQnCisv
LyBJbiBlc3NlbmNlIHRoaXMgY2hlY2tzIGFuIGVudiB2YXJpYWJsZSBjYWxsZWQgWE1MX09VVFBV
VF9GSUxFCisvLyBhbmQgaWYgaXQgaXMgc2V0IHdlIHByZXBlbmQgInhtbDoiIHRvIGl0cyB2YWx1
ZSwgaWYgaXQgbm90IHNldCB3ZSByZXR1cm4gIiIKK3N0ZDo6c3RyaW5nIE91dHB1dEZsYWdBbHNv
Q2hlY2tFbnZWYXIoKXsKKyAgc3RkOjpzdHJpbmcgZGVmYXVsdF92YWx1ZV9mb3Jfb3V0cHV0X2Zs
YWcgPSAiIjsKKyAgY29uc3QgY2hhciogeG1sX291dHB1dF9maWxlX2VudiA9IHBvc2l4OjpHZXRF
bnYoIlhNTF9PVVRQVVRfRklMRSIpOworICBpZiAoTlVMTCAhPSB4bWxfb3V0cHV0X2ZpbGVfZW52
KSB7CisgICAgZGVmYXVsdF92YWx1ZV9mb3Jfb3V0cHV0X2ZsYWcgPSBzdGQ6OnN0cmluZygieG1s
OiIpICsgeG1sX291dHB1dF9maWxlX2VudjsKKyAgfQorICByZXR1cm4gZGVmYXVsdF92YWx1ZV9m
b3Jfb3V0cHV0X2ZsYWc7CiB9CiAKIC8vIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBzdHJpbmcgZW52
aXJvbm1lbnQgdmFyaWFibGUgY29ycmVzcG9uZGluZyB0bwogLy8gdGhlIGdpdmVuIGZsYWc7IGlm
IGl0J3Mgbm90IHNldCwgcmV0dXJucyBkZWZhdWx0X3ZhbHVlLgogY29uc3QgY2hhciogU3RyaW5n
RnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIGNvbnN0IGNoYXIqIGRlZmF1bHRfdmFsdWUp
IHsKLSAgY29uc3QgU3RyaW5nIGVudl92YXIgPSBGbGFnVG9FbnZWYXIoZmxhZyk7CisjaWYgZGVm
aW5lZChHVEVTVF9HRVRfU1RSSU5HX0ZST01fRU5WXykKKyAgcmV0dXJuIEdURVNUX0dFVF9TVFJJ
TkdfRlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOworI2Vsc2UKKyAgY29uc3Qgc3RkOjpz
dHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFnKTsKICAgY29uc3QgY2hhciogY29uc3Qg
dmFsdWUgPSBwb3NpeDo6R2V0RW52KGVudl92YXIuY19zdHIoKSk7CiAgIHJldHVybiB2YWx1ZSA9
PSBOVUxMID8gZGVmYXVsdF92YWx1ZSA6IHZhbHVlOworI2VuZGlmICAvLyBkZWZpbmVkKEdURVNU
X0dFVF9TVFJJTkdfRlJPTV9FTlZfKQogfQogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1wcmludGVycy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1wcmludGVycy5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kZTRkMjQ1ZTlmYzg4OTdhZjIxMzc2NzlkOTEzZDY2NWZkODQzNmUxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXByaW50ZXJzLmNjCkBAIC0w
LDAgKzEsNDU3IEBACisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKworLy8gR29vZ2xlIFRlc3QgLSBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5n
IEZyYW1ld29yaworLy8KKy8vIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGEgdW5pdmVyc2FsIHZhbHVl
IHByaW50ZXIgdGhhdCBjYW4gcHJpbnQgYQorLy8gdmFsdWUgb2YgYW55IHR5cGUgVDoKKy8vCisv
LyAgIHZvaWQgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnRlcjxUPjo6UHJpbnQo
dmFsdWUsIG9zdHJlYW1fcHRyKTsKKy8vCisvLyBJdCB1c2VzIHRoZSA8PCBvcGVyYXRvciB3aGVu
IHBvc3NpYmxlLCBhbmQgcHJpbnRzIHRoZSBieXRlcyBpbiB0aGUKKy8vIG9iamVjdCBvdGhlcndp
c2UuICBBIHVzZXIgY2FuIG92ZXJyaWRlIGl0cyBiZWhhdmlvciBmb3IgYSBjbGFzcworLy8gdHlw
ZSBGb28gYnkgZGVmaW5pbmcgZWl0aGVyIG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0mLCBjb25z
dCBGb28mKQorLy8gb3Igdm9pZCBQcmludFRvKGNvbnN0IEZvbyYsIDo6c3RkOjpvc3RyZWFtKikg
aW4gdGhlIG5hbWVzcGFjZSB0aGF0CisvLyBkZWZpbmVzIEZvby4KKworI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LXByaW50ZXJzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxjY3R5cGU+
CisjaW5jbHVkZSA8Y3djaGFyPgorI2luY2x1ZGUgPG9zdHJlYW0+ICAvLyBOT0xJTlQKKyNpbmNs
dWRlIDxzdHJpbmc+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorI2lu
Y2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKworbmFtZXNwYWNlIHRlc3Rpbmcgewor
CituYW1lc3BhY2UgeworCit1c2luZyA6OnN0ZDo6b3N0cmVhbTsKKworLy8gUHJpbnRzIGEgc2Vn
bWVudCBvZiBieXRlcyBpbiB0aGUgZ2l2ZW4gb2JqZWN0LgorR1RFU1RfQVRUUklCVVRFX05PX1NB
TklUSVpFX01FTU9SWV8KK0dURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTXworR1RF
U1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KK3ZvaWQgUHJpbnRCeXRlU2VnbWVudElu
T2JqZWN0VG8oY29uc3QgdW5zaWduZWQgY2hhciogb2JqX2J5dGVzLCBzaXplX3Qgc3RhcnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCwgb3N0cmVhbSogb3Mp
IHsKKyAgY2hhciB0ZXh0WzVdID0gIiI7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGNvdW50
OyBpKyspIHsKKyAgICBjb25zdCBzaXplX3QgaiA9IHN0YXJ0ICsgaTsKKyAgICBpZiAoaSAhPSAw
KSB7CisgICAgICAvLyBPcmdhbml6ZXMgdGhlIGJ5dGVzIGludG8gZ3JvdXBzIG9mIDIgZm9yIGVh
c3kgcGFyc2luZyBieQorICAgICAgLy8gaHVtYW4uCisgICAgICBpZiAoKGogJSAyKSA9PSAwKQor
ICAgICAgICAqb3MgPDwgJyAnOworICAgICAgZWxzZQorICAgICAgICAqb3MgPDwgJy0nOworICAg
IH0KKyAgICBHVEVTVF9TTlBSSU5URl8odGV4dCwgc2l6ZW9mKHRleHQpLCAiJTAyWCIsIG9ial9i
eXRlc1tqXSk7CisgICAgKm9zIDw8IHRleHQ7CisgIH0KK30KKworLy8gUHJpbnRzIHRoZSBieXRl
cyBpbiB0aGUgZ2l2ZW4gdmFsdWUgdG8gdGhlIGdpdmVuIG9zdHJlYW0uCit2b2lkIFByaW50Qnl0
ZXNJbk9iamVjdFRvSW1wbChjb25zdCB1bnNpZ25lZCBjaGFyKiBvYmpfYnl0ZXMsIHNpemVfdCBj
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zdHJlYW0qIG9zKSB7CisgIC8v
IFRlbGxzIHRoZSB1c2VyIGhvdyBiaWcgdGhlIG9iamVjdCBpcy4KKyAgKm9zIDw8IGNvdW50IDw8
ICItYnl0ZSBvYmplY3QgPCI7CisKKyAgY29uc3Qgc2l6ZV90IGtUaHJlc2hvbGQgPSAxMzI7Cisg
IGNvbnN0IHNpemVfdCBrQ2h1bmtTaXplID0gNjQ7CisgIC8vIElmIHRoZSBvYmplY3Qgc2l6ZSBp
cyBiaWdnZXIgdGhhbiBrVGhyZXNob2xkLCB3ZSdsbCBoYXZlIHRvIG9taXQKKyAgLy8gc29tZSBk
ZXRhaWxzIGJ5IHByaW50aW5nIG9ubHkgdGhlIGZpcnN0IGFuZCB0aGUgbGFzdCBrQ2h1bmtTaXpl
CisgIC8vIGJ5dGVzLgorICAvLyBGSVhNRTogbGV0IHRoZSB1c2VyIGNvbnRyb2wgdGhlIHRocmVz
aG9sZCB1c2luZyBhIGZsYWcuCisgIGlmIChjb3VudCA8IGtUaHJlc2hvbGQpIHsKKyAgICBQcmlu
dEJ5dGVTZWdtZW50SW5PYmplY3RUbyhvYmpfYnl0ZXMsIDAsIGNvdW50LCBvcyk7CisgIH0gZWxz
ZSB7CisgICAgUHJpbnRCeXRlU2VnbWVudEluT2JqZWN0VG8ob2JqX2J5dGVzLCAwLCBrQ2h1bmtT
aXplLCBvcyk7CisgICAgKm9zIDw8ICIgLi4uICI7CisgICAgLy8gUm91bmRzIHVwIHRvIDItYnl0
ZSBib3VuZGFyeS4KKyAgICBjb25zdCBzaXplX3QgcmVzdW1lX3BvcyA9IChjb3VudCAtIGtDaHVu
a1NpemUgKyAxKS8yKjI7CisgICAgUHJpbnRCeXRlU2VnbWVudEluT2JqZWN0VG8ob2JqX2J5dGVz
LCByZXN1bWVfcG9zLCBjb3VudCAtIHJlc3VtZV9wb3MsIG9zKTsKKyAgfQorICAqb3MgPDwgIj4i
OworfQorCit9ICAvLyBuYW1lc3BhY2UKKworbmFtZXNwYWNlIGludGVybmFsMiB7CisKKy8vIERl
bGVnYXRlcyB0byBQcmludEJ5dGVzSW5PYmplY3RUb0ltcGwoKSB0byBwcmludCB0aGUgYnl0ZXMg
aW4gdGhlCisvLyBnaXZlbiBvYmplY3QuICBUaGUgZGVsZWdhdGlvbiBzaW1wbGlmaWVzIHRoZSBp
bXBsZW1lbnRhdGlvbiwgd2hpY2gKKy8vIHVzZXMgdGhlIDw8IG9wZXJhdG9yIGFuZCB0aHVzIGlz
IGVhc2llciBkb25lIG91dHNpZGUgb2YgdGhlCisvLyA6OnRlc3Rpbmc6OmludGVybmFsIG5hbWVz
cGFjZSwgd2hpY2ggY29udGFpbnMgYSA8PCBvcGVyYXRvciB0aGF0CisvLyBzb21ldGltZXMgY29u
ZmxpY3RzIHdpdGggdGhlIG9uZSBpbiBTVEwuCit2b2lkIFByaW50Qnl0ZXNJbk9iamVjdFRvKGNv
bnN0IHVuc2lnbmVkIGNoYXIqIG9ial9ieXRlcywgc2l6ZV90IGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBvc3RyZWFtKiBvcykgeworICBQcmludEJ5dGVzSW5PYmplY3RUb0ltcGwo
b2JqX2J5dGVzLCBjb3VudCwgb3MpOworfQorCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwyCisK
K25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIERlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgYSBj
aGFyIChvciB3Y2hhcl90KSwgd2UgcHJpbnQgaXQgaW4gb25lCisvLyBvZiB0aHJlZSBmb3JtYXRz
OgorLy8gICAtIGFzIGlzIGlmIGl0J3MgYSBwcmludGFibGUgQVNDSUkgKGUuZy4gJ2EnLCAnMics
ICcgJyksCisvLyAgIC0gYXMgYSBoZXhhZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2UgKGUuZy4gJ1x4
N0YnKSwgb3IKKy8vICAgLSBhcyBhIHNwZWNpYWwgZXNjYXBlIHNlcXVlbmNlIChlLmcuICdccics
ICdcbicpLgorZW51bSBDaGFyRm9ybWF0IHsKKyAga0FzSXMsCisgIGtIZXhFc2NhcGUsCisgIGtT
cGVjaWFsRXNjYXBlCit9OworCisvLyBSZXR1cm5zIHRydWUgaWYgYyBpcyBhIHByaW50YWJsZSBB
U0NJSSBjaGFyYWN0ZXIuICBXZSB0ZXN0IHRoZQorLy8gdmFsdWUgb2YgYyBkaXJlY3RseSBpbnN0
ZWFkIG9mIGNhbGxpbmcgaXNwcmludCgpLCB3aGljaCBpcyBidWdneSBvbgorLy8gV2luZG93cyBN
b2JpbGUuCitpbmxpbmUgYm9vbCBJc1ByaW50YWJsZUFzY2lpKHdjaGFyX3QgYykgeworICByZXR1
cm4gMHgyMCA8PSBjICYmIGMgPD0gMHg3RTsKK30KKworLy8gUHJpbnRzIGEgd2lkZSBvciBuYXJy
b3cgY2hhciBjIGFzIGEgY2hhcmFjdGVyIGxpdGVyYWwgd2l0aG91dCB0aGUKKy8vIHF1b3Rlcywg
ZXNjYXBpbmcgaXQgd2hlbiBuZWNlc3Nhcnk7IHJldHVybnMgaG93IGMgd2FzIGZvcm1hdHRlZC4K
Ky8vIFRoZSB0ZW1wbGF0ZSBhcmd1bWVudCBVbnNpZ25lZENoYXIgaXMgdGhlIHVuc2lnbmVkIHZl
cnNpb24gb2YgQ2hhciwKKy8vIHdoaWNoIGlzIHRoZSB0eXBlIG9mIGMuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVW5zaWduZWRDaGFyLCB0eXBlbmFtZSBDaGFyPgorc3RhdGljIENoYXJGb3JtYXQgUHJp
bnRBc0NoYXJMaXRlcmFsVG8oQ2hhciBjLCBvc3RyZWFtKiBvcykgeworICBzd2l0Y2ggKHN0YXRp
Y19jYXN0PHdjaGFyX3Q+KGMpKSB7CisgICAgY2FzZSBMJ1wwJzoKKyAgICAgICpvcyA8PCAiXFww
IjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTCdcJyc6CisgICAgICAqb3MgPDwgIlxcJyI7Cisg
ICAgICBicmVhazsKKyAgICBjYXNlIEwnXFwnOgorICAgICAgKm9zIDw8ICJcXFxcIjsKKyAgICAg
IGJyZWFrOworICAgIGNhc2UgTCdcYSc6CisgICAgICAqb3MgPDwgIlxcYSI7CisgICAgICBicmVh
azsKKyAgICBjYXNlIEwnXGInOgorICAgICAgKm9zIDw8ICJcXGIiOworICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBMJ1xmJzoKKyAgICAgICpvcyA8PCAiXFxmIjsKKyAgICAgIGJyZWFrOworICAgIGNh
c2UgTCdcbic6CisgICAgICAqb3MgPDwgIlxcbiI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwn
XHInOgorICAgICAgKm9zIDw8ICJcXHIiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1x0JzoK
KyAgICAgICpvcyA8PCAiXFx0IjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTCdcdic6CisgICAg
ICAqb3MgPDwgIlxcdiI7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgaWYgKElz
UHJpbnRhYmxlQXNjaWkoYykpIHsKKyAgICAgICAgKm9zIDw8IHN0YXRpY19jYXN0PGNoYXI+KGMp
OworICAgICAgICByZXR1cm4ga0FzSXM7CisgICAgICB9IGVsc2UgeworICAgICAgICBvc3RyZWFt
OjpmbXRmbGFncyBmbGFncyA9IG9zLT5mbGFncygpOworICAgICAgICAqb3MgPDwgIlxceCIgPDwg
c3RkOjpoZXggPDwgc3RkOjp1cHBlcmNhc2UKKyAgICAgICAgICAgIDw8IHN0YXRpY19jYXN0PGlu
dD4oc3RhdGljX2Nhc3Q8VW5zaWduZWRDaGFyPihjKSk7CisgICAgICAgIG9zLT5mbGFncyhmbGFn
cyk7CisgICAgICAgIHJldHVybiBrSGV4RXNjYXBlOworICAgICAgfQorICB9CisgIHJldHVybiBr
U3BlY2lhbEVzY2FwZTsKK30KKworLy8gUHJpbnRzIGEgd2NoYXJfdCBjIGFzIGlmIGl0J3MgcGFy
dCBvZiBhIHN0cmluZyBsaXRlcmFsLCBlc2NhcGluZyBpdCB3aGVuCisvLyBuZWNlc3Nhcnk7IHJl
dHVybnMgaG93IGMgd2FzIGZvcm1hdHRlZC4KK3N0YXRpYyBDaGFyRm9ybWF0IFByaW50QXNTdHJp
bmdMaXRlcmFsVG8od2NoYXJfdCBjLCBvc3RyZWFtKiBvcykgeworICBzd2l0Y2ggKGMpIHsKKyAg
ICBjYXNlIEwnXCcnOgorICAgICAgKm9zIDw8ICInIjsKKyAgICAgIHJldHVybiBrQXNJczsKKyAg
ICBjYXNlIEwnIic6CisgICAgICAqb3MgPDwgIlxcXCIiOworICAgICAgcmV0dXJuIGtTcGVjaWFs
RXNjYXBlOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gUHJpbnRBc0NoYXJMaXRlcmFsVG88
d2NoYXJfdD4oYywgb3MpOworICB9Cit9CisKKy8vIFByaW50cyBhIGNoYXIgYyBhcyBpZiBpdCdz
IHBhcnQgb2YgYSBzdHJpbmcgbGl0ZXJhbCwgZXNjYXBpbmcgaXQgd2hlbgorLy8gbmVjZXNzYXJ5
OyByZXR1cm5zIGhvdyBjIHdhcyBmb3JtYXR0ZWQuCitzdGF0aWMgQ2hhckZvcm1hdCBQcmludEFz
U3RyaW5nTGl0ZXJhbFRvKGNoYXIgYywgb3N0cmVhbSogb3MpIHsKKyAgcmV0dXJuIFByaW50QXNT
dHJpbmdMaXRlcmFsVG8oCisgICAgICBzdGF0aWNfY2FzdDx3Y2hhcl90PihzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPihjKSksIG9zKTsKK30KKworLy8gUHJpbnRzIGEgd2lkZSBvciBuYXJyb3cg
Y2hhcmFjdGVyIGMgYW5kIGl0cyBjb2RlLiAgJ1wwJyBpcyBwcmludGVkCisvLyBhcyAiJ1xcMCci
LCBvdGhlciB1bnByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZSBhbHNvIHByb3Blcmx5IGVzY2FwZWQK
Ky8vIHVzaW5nIHRoZSBzdGFuZGFyZCBDKysgZXNjYXBlIHNlcXVlbmNlLiAgVGhlIHRlbXBsYXRl
IGFyZ3VtZW50CisvLyBVbnNpZ25lZENoYXIgaXMgdGhlIHVuc2lnbmVkIHZlcnNpb24gb2YgQ2hh
ciwgd2hpY2ggaXMgdGhlIHR5cGUgb2YgYy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBVbnNpZ25lZENo
YXIsIHR5cGVuYW1lIENoYXI+Cit2b2lkIFByaW50Q2hhckFuZENvZGVUbyhDaGFyIGMsIG9zdHJl
YW0qIG9zKSB7CisgIC8vIEZpcnN0LCBwcmludCBjIGFzIGEgbGl0ZXJhbCBpbiB0aGUgbW9zdCBy
ZWFkYWJsZSBmb3JtIHdlIGNhbiBmaW5kLgorICAqb3MgPDwgKChzaXplb2YoYykgPiAxKSA/ICJM
JyIgOiAiJyIpOworICBjb25zdCBDaGFyRm9ybWF0IGZvcm1hdCA9IFByaW50QXNDaGFyTGl0ZXJh
bFRvPFVuc2lnbmVkQ2hhcj4oYywgb3MpOworICAqb3MgPDwgIiciOworCisgIC8vIFRvIGFpZCB1
c2VyIGRlYnVnZ2luZywgd2UgYWxzbyBwcmludCBjJ3MgY29kZSBpbiBkZWNpbWFsLCB1bmxlc3MK
KyAgLy8gaXQncyAwIChpbiB3aGljaCBjYXNlIGMgd2FzIHByaW50ZWQgYXMgJ1xcMCcsIG1ha2lu
ZyB0aGUgY29kZQorICAvLyBvYnZpb3VzKS4KKyAgaWYgKGMgPT0gMCkKKyAgICByZXR1cm47Cisg
ICpvcyA8PCAiICgiIDw8IHN0YXRpY19jYXN0PGludD4oYyk7CisKKyAgLy8gRm9yIG1vcmUgY29u
dmVuaWVuY2UsIHdlIHByaW50IGMncyBjb2RlIGFnYWluIGluIGhleGFkZWNpbWFsLAorICAvLyB1
bmxlc3MgYyB3YXMgYWxyZWFkeSBwcmludGVkIGluIHRoZSBmb3JtICdceCMjJyBvciB0aGUgY29k
ZSBpcyBpbgorICAvLyBbMSwgOV0uCisgIGlmIChmb3JtYXQgPT0ga0hleEVzY2FwZSB8fCAoMSA8
PSBjICYmIGMgPD0gOSkpIHsKKyAgICAvLyBEbyBub3RoaW5nLgorICB9IGVsc2UgeworICAgICpv
cyA8PCAiLCAweCIgPDwgU3RyaW5nOjpGb3JtYXRIZXhJbnQoc3RhdGljX2Nhc3Q8VW5zaWduZWRD
aGFyPihjKSk7CisgIH0KKyAgKm9zIDw8ICIpIjsKK30KKwordm9pZCBQcmludFRvKHVuc2lnbmVk
IGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hhckFuZENvZGVUbzx1bnNp
Z25lZCBjaGFyPihjLCBvcyk7Cit9Cit2b2lkIFByaW50VG8oc2lnbmVkIGNoYXIgYywgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hhckFuZENvZGVUbzx1bnNpZ25lZCBjaGFyPihjLCBv
cyk7Cit9CisKKy8vIFByaW50cyBhIHdjaGFyX3QgYXMgYSBzeW1ib2wgaWYgaXQgaXMgcHJpbnRh
YmxlIG9yIGFzIGl0cyBpbnRlcm5hbAorLy8gY29kZSBvdGhlcndpc2UgYW5kIGFsc28gYXMgaXRz
IGNvZGUuICBMJ1wwJyBpcyBwcmludGVkIGFzICJMJ1xcMCciLgordm9pZCBQcmludFRvKHdjaGFy
X3Qgd2MsIG9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hhckFuZENvZGVUbzx3Y2hhcl90Pih3Yywg
b3MpOworfQorCisvLyBQcmludHMgdGhlIGdpdmVuIGFycmF5IG9mIGNoYXJhY3RlcnMgdG8gdGhl
IG9zdHJlYW0uICBDaGFyVHlwZSBtdXN0IGJlIGVpdGhlcgorLy8gY2hhciBvciB3Y2hhcl90Lgor
Ly8gVGhlIGFycmF5IHN0YXJ0cyBhdCBiZWdpbiwgdGhlIGxlbmd0aCBpcyBsZW4sIGl0IG1heSBp
bmNsdWRlICdcMCcgY2hhcmFjdGVycworLy8gYW5kIG1heSBub3QgYmUgTlVMLXRlcm1pbmF0ZWQu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJ
WkVfTUVNT1JZXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX0FERFJFU1NfCitHVEVTVF9B
VFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXworc3RhdGljIENoYXJGb3JtYXQgUHJpbnRDaGFy
c0FzU3RyaW5nVG8oCisgICAgY29uc3QgQ2hhclR5cGUqIGJlZ2luLCBzaXplX3QgbGVuLCBvc3Ry
ZWFtKiBvcykgeworICBjb25zdCBjaGFyKiBjb25zdCBrUXVvdGVCZWdpbiA9IHNpemVvZihDaGFy
VHlwZSkgPT0gMSA/ICJcIiIgOiAiTFwiIjsKKyAgKm9zIDw8IGtRdW90ZUJlZ2luOworICBib29s
IGlzX3ByZXZpb3VzX2hleCA9IGZhbHNlOworICBDaGFyRm9ybWF0IHByaW50X2Zvcm1hdCA9IGtB
c0lzOworICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbGVuOyArK2luZGV4KSB7Cisg
ICAgY29uc3QgQ2hhclR5cGUgY3VyID0gYmVnaW5baW5kZXhdOworICAgIGlmIChpc19wcmV2aW91
c19oZXggJiYgSXNYRGlnaXQoY3VyKSkgeworICAgICAgLy8gUHJldmlvdXMgY2hhcmFjdGVyIGlz
IG9mICdceC4uJyBmb3JtIGFuZCB0aGlzIGNoYXJhY3RlciBjYW4gYmUKKyAgICAgIC8vIGludGVy
cHJldGVkIGFzIGFub3RoZXIgaGV4YWRlY2ltYWwgZGlnaXQgaW4gaXRzIG51bWJlci4gQnJlYWsg
c3RyaW5nIHRvCisgICAgICAvLyBkaXNhbWJpZ3VhdGUuCisgICAgICAqb3MgPDwgIlwiICIgPDwg
a1F1b3RlQmVnaW47CisgICAgfQorICAgIGlzX3ByZXZpb3VzX2hleCA9IFByaW50QXNTdHJpbmdM
aXRlcmFsVG8oY3VyLCBvcykgPT0ga0hleEVzY2FwZTsKKyAgICAvLyBSZW1lbWJlciBpZiBhbnkg
Y2hhcmFjdGVycyByZXF1aXJlZCBoZXggZXNjYXBpbmcuCisgICAgaWYgKGlzX3ByZXZpb3VzX2hl
eCkgeworICAgICAgcHJpbnRfZm9ybWF0ID0ga0hleEVzY2FwZTsKKyAgICB9CisgIH0KKyAgKm9z
IDw8ICJcIiI7CisgIHJldHVybiBwcmludF9mb3JtYXQ7Cit9CisKKy8vIFByaW50cyBhIChjb25z
dCkgY2hhci93Y2hhcl90IGFycmF5IG9mICdsZW4nIGVsZW1lbnRzLCBzdGFydGluZyBhdCBhZGRy
ZXNzCisvLyAnYmVnaW4nLiAgQ2hhclR5cGUgbXVzdCBiZSBlaXRoZXIgY2hhciBvciB3Y2hhcl90
LgordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorR1RFU1RfQVRUUklCVVRFX05PX1NBTklU
SVpFX01FTU9SWV8KK0dURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTXworR1RFU1Rf
QVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KK3N0YXRpYyB2b2lkIFVuaXZlcnNhbFByaW50
Q2hhckFycmF5KAorICAgIGNvbnN0IENoYXJUeXBlKiBiZWdpbiwgc2l6ZV90IGxlbiwgb3N0cmVh
bSogb3MpIHsKKyAgLy8gVGhlIGNvZGUKKyAgLy8gICBjb25zdCBjaGFyIGtGb29bXSA9ICJmb28i
OworICAvLyBnZW5lcmF0ZXMgYW4gYXJyYXkgb2YgNCwgbm90IDMsIGVsZW1lbnRzLCB3aXRoIHRo
ZSBsYXN0IG9uZSBiZWluZyAnXDAnLgorICAvLworICAvLyBUaGVyZWZvcmUgd2hlbiBwcmludGlu
ZyBhIGNoYXIgYXJyYXksIHdlIGRvbid0IHByaW50IHRoZSBsYXN0IGVsZW1lbnQgaWYKKyAgLy8g
aXQncyAnXDAnLCBzdWNoIHRoYXQgdGhlIG91dHB1dCBtYXRjaGVzIHRoZSBzdHJpbmcgbGl0ZXJh
bCBhcyBpdCdzCisgIC8vIHdyaXR0ZW4gaW4gdGhlIHNvdXJjZSBjb2RlLgorICBpZiAobGVuID4g
MCAmJiBiZWdpbltsZW4gLSAxXSA9PSAnXDAnKSB7CisgICAgUHJpbnRDaGFyc0FzU3RyaW5nVG8o
YmVnaW4sIGxlbiAtIDEsIG9zKTsKKyAgICByZXR1cm47CisgIH0KKworICAvLyBJZiwgaG93ZXZl
ciwgdGhlIGxhc3QgZWxlbWVudCBpbiB0aGUgYXJyYXkgaXMgbm90ICdcMCcsIGUuZy4KKyAgLy8g
ICAgY29uc3QgY2hhciBrRm9vW10gPSB7ICdmJywgJ28nLCAnbycgfTsKKyAgLy8gd2UgbXVzdCBw
cmludCB0aGUgZW50aXJlIGFycmF5LiAgV2UgYWxzbyBwcmludCBhIG1lc3NhZ2UgdG8gaW5kaWNh
dGUKKyAgLy8gdGhhdCB0aGUgYXJyYXkgaXMgbm90IE5VTC10ZXJtaW5hdGVkLgorICBQcmludENo
YXJzQXNTdHJpbmdUbyhiZWdpbiwgbGVuLCBvcyk7CisgICpvcyA8PCAiIChubyB0ZXJtaW5hdGlu
ZyBOVUwpIjsKK30KKworLy8gUHJpbnRzIGEgKGNvbnN0KSBjaGFyIGFycmF5IG9mICdsZW4nIGVs
ZW1lbnRzLCBzdGFydGluZyBhdCBhZGRyZXNzICdiZWdpbicuCit2b2lkIFVuaXZlcnNhbFByaW50
QXJyYXkoY29uc3QgY2hhciogYmVnaW4sIHNpemVfdCBsZW4sIG9zdHJlYW0qIG9zKSB7CisgIFVu
aXZlcnNhbFByaW50Q2hhckFycmF5KGJlZ2luLCBsZW4sIG9zKTsKK30KKworLy8gUHJpbnRzIGEg
KGNvbnN0KSB3Y2hhcl90IGFycmF5IG9mICdsZW4nIGVsZW1lbnRzLCBzdGFydGluZyBhdCBhZGRy
ZXNzCisvLyAnYmVnaW4nLgordm9pZCBVbml2ZXJzYWxQcmludEFycmF5KGNvbnN0IHdjaGFyX3Qq
IGJlZ2luLCBzaXplX3QgbGVuLCBvc3RyZWFtKiBvcykgeworICBVbml2ZXJzYWxQcmludENoYXJB
cnJheShiZWdpbiwgbGVuLCBvcyk7Cit9CisKKy8vIFByaW50cyB0aGUgZ2l2ZW4gQyBzdHJpbmcg
dG8gdGhlIG9zdHJlYW0uCit2b2lkIFByaW50VG8oY29uc3QgY2hhciogcywgb3N0cmVhbSogb3Mp
IHsKKyAgaWYgKHMgPT0gTlVMTCkgeworICAgICpvcyA8PCAiTlVMTCI7CisgIH0gZWxzZSB7Cisg
ICAgKm9zIDw8IEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMpIDw8ICIgcG9pbnRpbmcgdG8g
IjsKKyAgICBQcmludENoYXJzQXNTdHJpbmdUbyhzLCBzdHJsZW4ocyksIG9zKTsKKyAgfQorfQor
CisvLyBNU1ZDIGNvbXBpbGVyIGNhbiBiZSBjb25maWd1cmVkIHRvIGRlZmluZSB3aGFyX3QgYXMg
YSB0eXBlZGVmCisvLyBvZiB1bnNpZ25lZCBzaG9ydC4gRGVmaW5pbmcgYW4gb3ZlcmxvYWQgZm9y
IGNvbnN0IHdjaGFyX3QqIGluIHRoYXQgY2FzZQorLy8gd291bGQgY2F1c2UgcG9pbnRlcnMgdG8g
dW5zaWduZWQgc2hvcnRzIGJlIHByaW50ZWQgYXMgd2lkZSBzdHJpbmdzLAorLy8gcG9zc2libHkg
YWNjZXNzaW5nIG1vcmUgbWVtb3J5IHRoYW4gaW50ZW5kZWQgYW5kIGNhdXNpbmcgaW52YWxpZAor
Ly8gbWVtb3J5IGFjY2Vzc2VzLiBNU1ZDIGRlZmluZXMgX05BVElWRV9XQ0hBUl9UX0RFRklORUQg
c3ltYm9sIHdoZW4KKy8vIHdjaGFyX3QgaXMgaW1wbGVtZW50ZWQgYXMgYSBuYXRpdmUgdHlwZS4K
KyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5F
RCkKKy8vIFByaW50cyB0aGUgZ2l2ZW4gd2lkZSBDIHN0cmluZyB0byB0aGUgb3N0cmVhbS4KK3Zv
aWQgUHJpbnRUbyhjb25zdCB3Y2hhcl90KiBzLCBvc3RyZWFtKiBvcykgeworICBpZiAocyA9PSBO
VUxMKSB7CisgICAgKm9zIDw8ICJOVUxMIjsKKyAgfSBlbHNlIHsKKyAgICAqb3MgPDwgSW1wbGlj
aXRDYXN0Xzxjb25zdCB2b2lkKj4ocykgPDwgIiBwb2ludGluZyB0byAiOworICAgIFByaW50Q2hh
cnNBc1N0cmluZ1RvKHMsIHN0ZDo6d2NzbGVuKHMpLCBvcyk7CisgIH0KK30KKyNlbmRpZiAgLy8g
d2NoYXJfdCBpcyBuYXRpdmUKKworbmFtZXNwYWNlIHsKKworYm9vbCBDb250YWluc1VucHJpbnRh
YmxlQ29udHJvbENvZGVzKGNvbnN0IGNoYXIqIHN0ciwgc2l6ZV90IGxlbmd0aCkgeworICBjb25z
dCB1bnNpZ25lZCBjaGFyICpzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
ICo+KHN0cik7CisKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAg
IHVuc2lnbmVkIGNoYXIgY2ggPSAqcysrOworICAgIGlmIChzdGQ6OmlzY250cmwoY2gpKSB7Cisg
ICAgICAgIHN3aXRjaCAoY2gpIHsKKyAgICAgICAgY2FzZSAnXHQnOgorICAgICAgICBjYXNlICdc
bic6CisgICAgICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgfQorICB9CisgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBJc1VURjhUcmFpbEJ5dGUodW5zaWduZWQgY2hhciB0KSB7
IHJldHVybiAweDgwIDw9IHQgJiYgdDw9IDB4YmY7IH0KKworYm9vbCBJc1ZhbGlkVVRGOChjb25z
dCBjaGFyKiBzdHIsIHNpemVfdCBsZW5ndGgpIHsKKyAgY29uc3QgdW5zaWduZWQgY2hhciAqcyA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAqPihzdHIpOworCisgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOykgeworICAgIHVuc2lnbmVkIGNoYXIgbGVhZCA9IHNb
aSsrXTsKKworICAgIGlmIChsZWFkIDw9IDB4N2YpIHsKKyAgICAgIGNvbnRpbnVlOyAgLy8gc2lu
Z2xlLWJ5dGUgY2hhcmFjdGVyIChBU0NJSSkgMC4uN0YKKyAgICB9CisgICAgaWYgKGxlYWQgPCAw
eGMyKSB7CisgICAgICByZXR1cm4gZmFsc2U7ICAvLyB0cmFpbCBieXRlIG9yIG5vbi1zaG9ydGVz
dCBmb3JtCisgICAgfSBlbHNlIGlmIChsZWFkIDw9IDB4ZGYgJiYgKGkgKyAxKSA8PSBsZW5ndGgg
JiYgSXNVVEY4VHJhaWxCeXRlKHNbaV0pKSB7CisgICAgICArK2k7ICAvLyAyLWJ5dGUgY2hhcmFj
dGVyCisgICAgfSBlbHNlIGlmICgweGUwIDw9IGxlYWQgJiYgbGVhZCA8PSAweGVmICYmIChpICsg
MikgPD0gbGVuZ3RoICYmCisgICAgICAgICAgICAgICBJc1VURjhUcmFpbEJ5dGUoc1tpXSkgJiYK
KyAgICAgICAgICAgICAgIElzVVRGOFRyYWlsQnl0ZShzW2kgKyAxXSkgJiYKKyAgICAgICAgICAg
ICAgIC8vIGNoZWNrIGZvciBub24tc2hvcnRlc3QgZm9ybSBhbmQgc3Vycm9nYXRlCisgICAgICAg
ICAgICAgICAobGVhZCAhPSAweGUwIHx8IHNbaV0gPj0gMHhhMCkgJiYKKyAgICAgICAgICAgICAg
IChsZWFkICE9IDB4ZWQgfHwgc1tpXSA8IDB4YTApKSB7CisgICAgICBpICs9IDI7ICAvLyAzLWJ5
dGUgY2hhcmFjdGVyCisgICAgfSBlbHNlIGlmICgweGYwIDw9IGxlYWQgJiYgbGVhZCA8PSAweGY0
ICYmIChpICsgMykgPD0gbGVuZ3RoICYmCisgICAgICAgICAgICAgICBJc1VURjhUcmFpbEJ5dGUo
c1tpXSkgJiYKKyAgICAgICAgICAgICAgIElzVVRGOFRyYWlsQnl0ZShzW2kgKyAxXSkgJiYKKyAg
ICAgICAgICAgICAgIElzVVRGOFRyYWlsQnl0ZShzW2kgKyAyXSkgJiYKKyAgICAgICAgICAgICAg
IC8vIGNoZWNrIGZvciBub24tc2hvcnRlc3QgZm9ybQorICAgICAgICAgICAgICAgKGxlYWQgIT0g
MHhmMCB8fCBzW2ldID49IDB4OTApICYmCisgICAgICAgICAgICAgICAobGVhZCAhPSAweGY0IHx8
IHNbaV0gPCAweDkwKSkgeworICAgICAgaSArPSAzOyAgLy8gNC1ieXRlIGNoYXJhY3RlcgorICAg
IH0gZWxzZSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiB0cnVl
OworfQorCit2b2lkIENvbmRpdGlvbmFsUHJpbnRBc1RleHQoY29uc3QgY2hhciogc3RyLCBzaXpl
X3QgbGVuZ3RoLCBvc3RyZWFtKiBvcykgeworICBpZiAoIUNvbnRhaW5zVW5wcmludGFibGVDb250
cm9sQ29kZXMoc3RyLCBsZW5ndGgpICYmCisgICAgICBJc1ZhbGlkVVRGOChzdHIsIGxlbmd0aCkp
IHsKKyAgICAqb3MgPDwgIlxuICAgIEFzIFRleHQ6IFwiIiA8PCBzdHIgPDwgIlwiIjsKKyAgfQor
fQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKKy8vIFByaW50cyBhIDo6c3RyaW5nIG9i
amVjdC4KKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwordm9pZCBQcmludFN0cmluZ1RvKGNv
bnN0IDo6c3RyaW5nJiBzLCBvc3RyZWFtKiBvcykgeworICBpZiAoUHJpbnRDaGFyc0FzU3RyaW5n
VG8ocy5kYXRhKCksIHMuc2l6ZSgpLCBvcykgPT0ga0hleEVzY2FwZSkgeworICAgIGlmIChHVEVT
VF9GTEFHKHByaW50X3V0ZjgpKSB7CisgICAgICBDb25kaXRpb25hbFByaW50QXNUZXh0KHMuZGF0
YSgpLCBzLnNpemUoKSwgb3MpOworICAgIH0KKyAgfQorfQorI2VuZGlmICAvLyBHVEVTVF9IQVNf
R0xPQkFMX1NUUklORworCit2b2lkIFByaW50U3RyaW5nVG8oY29uc3QgOjpzdGQ6OnN0cmluZyYg
cywgb3N0cmVhbSogb3MpIHsKKyAgaWYgKFByaW50Q2hhcnNBc1N0cmluZ1RvKHMuZGF0YSgpLCBz
LnNpemUoKSwgb3MpID09IGtIZXhFc2NhcGUpIHsKKyAgICBpZiAoR1RFU1RfRkxBRyhwcmludF91
dGY4KSkgeworICAgICAgQ29uZGl0aW9uYWxQcmludEFzVGV4dChzLmRhdGEoKSwgcy5zaXplKCks
IG9zKTsKKyAgICB9CisgIH0KK30KKworLy8gUHJpbnRzIGEgOjp3c3RyaW5nIG9iamVjdC4KKyNp
ZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKK3ZvaWQgUHJpbnRXaWRlU3RyaW5nVG8oY29uc3Qg
Ojp3c3RyaW5nJiBzLCBvc3RyZWFtKiBvcykgeworICBQcmludENoYXJzQXNTdHJpbmdUbyhzLmRh
dGEoKSwgcy5zaXplKCksIG9zKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9XU1RS
SU5HCisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKK3ZvaWQgUHJpbnRXaWRlU3RyaW5nVG8o
Y29uc3QgOjpzdGQ6OndzdHJpbmcmIHMsIG9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hhcnNBc1N0
cmluZ1RvKHMuZGF0YSgpLCBzLnNpemUoKSwgb3MpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNf
U1REX1dTVFJJTkcKKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKK30gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3Qt
dGVzdC1wYXJ0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXRlc3QtcGFy
dC5jYwppbmRleCA1ZDE4M2E0NDZmMjk0Y2U5ZTFhODU4N2M4YjkxMjBhOWJlYzg4N2RkLi5jODg4
NjBkOTIzODU2MTllYTY3NjQ4ODQ1ODM5ZDE0NTgzZjExMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10ZXN0LXBhcnQuY2MKQEAgLTI2LDIxICsyNiwxMiBAQAog
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcjogbWhldWxlQGdvb2dsZS5jb20gKE1hcmt1cyBIZXVsZSkKLS8vCi0vLyBUaGUgR29vZ2xl
IEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAKLSNpbmNsdWRlIDxndGVzdC9n
dGVzdC10ZXN0LXBhcnQuaD4KKy8vCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2Nr
aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAKLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJh
bnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9u
LiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVk
ZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8K
LS8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRl
cm5hbC1pbmwuaCBpbgotLy8gaGlzIGNvZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9O
XyAxCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgiCiAjaW5jbHVkZSAic3JjL2d0
ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwogCiBuYW1l
c3BhY2UgdGVzdGluZyB7CiAKQEAgLTQ4LDEwICszOSwxMCBAQCB1c2luZyBpbnRlcm5hbDo6R2V0
VW5pdFRlc3RJbXBsOwogCiAvLyBHZXRzIHRoZSBzdW1tYXJ5IG9mIHRoZSBmYWlsdXJlIG1lc3Nh
Z2UgYnkgb21pdHRpbmcgdGhlIHN0YWNrIHRyYWNlCiAvLyBpbiBpdC4KLWludGVybmFsOjpTdHJp
bmcgVGVzdFBhcnRSZXN1bHQ6OkV4dHJhY3RTdW1tYXJ5KGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsK
K3N0ZDo6c3RyaW5nIFRlc3RQYXJ0UmVzdWx0OjpFeHRyYWN0U3VtbWFyeShjb25zdCBjaGFyKiBt
ZXNzYWdlKSB7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IHN0YWNrX3RyYWNlID0gc3Ryc3RyKG1lc3Nh
Z2UsIGludGVybmFsOjprU3RhY2tUcmFjZU1hcmtlcik7Ci0gIHJldHVybiBzdGFja190cmFjZSA9
PSBOVUxMID8gaW50ZXJuYWw6OlN0cmluZyhtZXNzYWdlKSA6Ci0gICAgICBpbnRlcm5hbDo6U3Ry
aW5nKG1lc3NhZ2UsIHN0YWNrX3RyYWNlIC0gbWVzc2FnZSk7CisgIHJldHVybiBzdGFja190cmFj
ZSA9PSBOVUxMID8gbWVzc2FnZSA6CisgICAgICBzdGQ6OnN0cmluZyhtZXNzYWdlLCBzdGFja190
cmFjZSk7CiB9CiAKIC8vIFByaW50cyBhIFRlc3RQYXJ0UmVzdWx0IG9iamVjdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10eXBlZC10ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKaW5kZXggM2NjNGI1
ZGUyYWFjYjc1OTg5MTE5YzVmOTZjN2Y0ZjgwZWFkNWNhZS4uMWRjMmFkMzhiYWI5OGJjMTQ2YzE2
MTU4YTQ3ZGExZTM5NGJmMzg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3Jj
L2d0ZXN0LXR5cGVkLXRlc3QuY2MKQEAgLTI2LDExICsyNiwxMSBAQAogLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAog
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbikKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXR5cGVkLXRlc3Qu
aD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtdHlw
ZWQtdGVzdC5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogbmFtZXNwYWNlIHRlc3Rp
bmcgewogbmFtZXNwYWNlIGludGVybmFsIHsKQEAgLTQwLDM4ICs0MCw0NiBAQCBuYW1lc3BhY2Ug
aW50ZXJuYWwgewogLy8gU2tpcHMgdG8gdGhlIGZpcnN0IG5vbi1zcGFjZSBjaGFyIGluIHN0ci4g
UmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgc3RyCiAvLyBjb250YWlucyBvbmx5IHdoaXRlc3Bh
Y2UgY2hhcmFjdGVycy4KIHN0YXRpYyBjb25zdCBjaGFyKiBTa2lwU3BhY2VzKGNvbnN0IGNoYXIq
IHN0cikgewotICB3aGlsZSAoaXNzcGFjZSgqc3RyKSkKKyAgd2hpbGUgKElzU3BhY2UoKnN0cikp
CiAgICAgc3RyKys7CiAgIHJldHVybiBzdHI7CiB9CiAKK3N0YXRpYyBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gU3BsaXRJbnRvVGVzdE5hbWVzKGNvbnN0IGNoYXIqIHNyYykgeworICBzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4gbmFtZV92ZWM7CisgIHNyYyA9IFNraXBTcGFjZXMoc3JjKTsKKyAg
Zm9yICg7IHNyYyAhPSBOVUxMOyBzcmMgPSBTa2lwQ29tbWEoc3JjKSkgeworICAgIG5hbWVfdmVj
LnB1c2hfYmFjayhTdHJpcFRyYWlsaW5nU3BhY2VzKEdldFByZWZpeFVudGlsQ29tbWEoc3JjKSkp
OworICB9CisgIHJldHVybiBuYW1lX3ZlYzsKK30KKwogLy8gVmVyaWZpZXMgdGhhdCByZWdpc3Rl
cmVkX3Rlc3RzIG1hdGNoIHRoZSB0ZXN0IG5hbWVzIGluCi0vLyBkZWZpbmVkX3Rlc3RfbmFtZXNf
OyByZXR1cm5zIHJlZ2lzdGVyZWRfdGVzdHMgaWYgc3VjY2Vzc2Z1bCwgb3IKKy8vIHJlZ2lzdGVy
ZWRfdGVzdHNfOyByZXR1cm5zIHJlZ2lzdGVyZWRfdGVzdHMgaWYgc3VjY2Vzc2Z1bCwgb3IKIC8v
IGFib3J0cyB0aGUgcHJvZ3JhbSBvdGhlcndpc2UuCiBjb25zdCBjaGFyKiBUeXBlZFRlc3RDYXNl
UFN0YXRlOjpWZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVzKAogICAgIGNvbnN0IGNoYXIqIGZpbGUs
IGludCBsaW5lLCBjb25zdCBjaGFyKiByZWdpc3RlcmVkX3Rlc3RzKSB7Ci0gIHR5cGVkZWYgOjpz
dGQ6OnNldDxjb25zdCBjaGFyKj46OmNvbnN0X2l0ZXJhdG9yIERlZmluZWRUZXN0SXRlcjsKKyAg
dHlwZWRlZiBSZWdpc3RlcmVkVGVzdHNNYXA6OmNvbnN0X2l0ZXJhdG9yIFJlZ2lzdGVyZWRUZXN0
SXRlcjsKICAgcmVnaXN0ZXJlZF8gPSB0cnVlOwogCi0gIC8vIFNraXAgaW5pdGlhbCB3aGl0ZXNw
YWNlIGluIHJlZ2lzdGVyZWRfdGVzdHMgc2luY2Ugc29tZQotICAvLyBwcmVwcm9jZXNzb3JzIHBy
ZWZpeCBzdHJpbmdpemllZCBsaXRlcmFscyB3aXRoIHdoaXRlc3BhY2UuCi0gIHJlZ2lzdGVyZWRf
dGVzdHMgPSBTa2lwU3BhY2VzKHJlZ2lzdGVyZWRfdGVzdHMpOworICBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gbmFtZV92ZWMgPSBTcGxpdEludG9UZXN0TmFtZXMocmVnaXN0ZXJlZF90ZXN0cyk7
CiAKICAgTWVzc2FnZSBlcnJvcnM7Ci0gIDo6c3RkOjpzZXQ8U3RyaW5nPiB0ZXN0czsKLSAgZm9y
IChjb25zdCBjaGFyKiBuYW1lcyA9IHJlZ2lzdGVyZWRfdGVzdHM7IG5hbWVzICE9IE5VTEw7Ci0g
ICAgICAgbmFtZXMgPSBTa2lwQ29tbWEobmFtZXMpKSB7Ci0gICAgY29uc3QgU3RyaW5nIG5hbWUg
PSBHZXRQcmVmaXhVbnRpbENvbW1hKG5hbWVzKTsKKworICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4g
dGVzdHM7CisgIGZvciAoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBu
YW1lX2l0ID0gbmFtZV92ZWMuYmVnaW4oKTsKKyAgICAgICBuYW1lX2l0ICE9IG5hbWVfdmVjLmVu
ZCgpOyArK25hbWVfaXQpIHsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSA9ICpuYW1lX2l0
OwogICAgIGlmICh0ZXN0cy5jb3VudChuYW1lKSAhPSAwKSB7CiAgICAgICBlcnJvcnMgPDwgIlRl
c3QgIiA8PCBuYW1lIDw8ICIgaXMgbGlzdGVkIG1vcmUgdGhhbiBvbmNlLlxuIjsKICAgICAgIGNv
bnRpbnVlOwogICAgIH0KIAogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICBmb3IgKERlZmlu
ZWRUZXN0SXRlciBpdCA9IGRlZmluZWRfdGVzdF9uYW1lc18uYmVnaW4oKTsKLSAgICAgICAgIGl0
ICE9IGRlZmluZWRfdGVzdF9uYW1lc18uZW5kKCk7CisgICAgZm9yIChSZWdpc3RlcmVkVGVzdEl0
ZXIgaXQgPSByZWdpc3RlcmVkX3Rlc3RzXy5iZWdpbigpOworICAgICAgICAgaXQgIT0gcmVnaXN0
ZXJlZF90ZXN0c18uZW5kKCk7CiAgICAgICAgICArK2l0KSB7Ci0gICAgICBpZiAobmFtZSA9PSAq
aXQpIHsKKyAgICAgIGlmIChuYW1lID09IGl0LT5maXJzdCkgewogICAgICAgICBmb3VuZCA9IHRy
dWU7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQpAQCAtODUsMTUgKzkzLDE1IEBAIGNvbnN0IGNo
YXIqIFR5cGVkVGVzdENhc2VQU3RhdGU6OlZlcmlmeVJlZ2lzdGVyZWRUZXN0TmFtZXMoCiAgICAg
fQogICB9CiAKLSAgZm9yIChEZWZpbmVkVGVzdEl0ZXIgaXQgPSBkZWZpbmVkX3Rlc3RfbmFtZXNf
LmJlZ2luKCk7Ci0gICAgICAgaXQgIT0gZGVmaW5lZF90ZXN0X25hbWVzXy5lbmQoKTsKKyAgZm9y
IChSZWdpc3RlcmVkVGVzdEl0ZXIgaXQgPSByZWdpc3RlcmVkX3Rlc3RzXy5iZWdpbigpOworICAg
ICAgIGl0ICE9IHJlZ2lzdGVyZWRfdGVzdHNfLmVuZCgpOwogICAgICAgICsraXQpIHsKLSAgICBp
ZiAodGVzdHMuY291bnQoKml0KSA9PSAwKSB7Ci0gICAgICBlcnJvcnMgPDwgIllvdSBmb3Jnb3Qg
dG8gbGlzdCB0ZXN0ICIgPDwgKml0IDw8ICIuXG4iOworICAgIGlmICh0ZXN0cy5jb3VudChpdC0+
Zmlyc3QpID09IDApIHsKKyAgICAgIGVycm9ycyA8PCAiWW91IGZvcmdvdCB0byBsaXN0IHRlc3Qg
IiA8PCBpdC0+Zmlyc3QgPDwgIi5cbiI7CiAgICAgfQogICB9CiAKLSAgY29uc3QgU3RyaW5nJiBl
cnJvcnNfc3RyID0gZXJyb3JzLkdldFN0cmluZygpOworICBjb25zdCBzdGQ6OnN0cmluZyYgZXJy
b3JzX3N0ciA9IGVycm9ycy5HZXRTdHJpbmcoKTsKICAgaWYgKGVycm9yc19zdHIgIT0gIiIpIHsK
ICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzICVzIiwgRm9ybWF0RmlsZUxvY2F0aW9uKGZpbGUsIGxp
bmUpLmNfc3RyKCksCiAgICAgICAgICAgICBlcnJvcnNfc3RyLmNfc3RyKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc3JjL2d0ZXN0LmNjCmluZGV4IDViODcxYzBhZGIwYTFjNGNmYTIzNzU1NDA1N2Q1
MTYwODQ2MTk1MGUuLjk3OTY2Mzc3NDlhN2FkYTk0MDNkNmFkOGQ2NWMyYTY2NzU1ZDQxNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QuY2MKQEAgLTI2LDExMiArMjYsMTMxIEBACiAv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKIC8vCi0vLyBB
dXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGhlIEdvb2dsZSBD
KysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gVGhlIEdvb2dsZSBDKysgVGVz
dGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGkuaD4KKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRl
IDxtYXRoLmg+CiAjaW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNs
dWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CiAjaW5jbHVkZSA8d2NoYXIuaD4KICNp
bmNsdWRlIDx3Y3R5cGUuaD4KIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxvc3Ry
ZWFtPgorI2luY2x1ZGUgPGlvbWFuaXA+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPGxp
c3Q+CisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPG9zdHJlYW0+ICAvLyBOT0xJTlQKICNpbmNs
dWRlIDxzc3RyZWFtPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2lmIEdURVNUX09TX0xJTlVYCiAK
LS8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBVc2UgYXV0b2NvbmYgdG8gZGV0ZWN0IGF2YWls
YWJpbGl0eSBvZgorLy8gRklYTUU6IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZhaWxhYmlsaXR5
IG9mCiAvLyBnZXR0aW1lb2ZkYXkoKS4KLSNkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8g
MQorIyBkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQogCi0jaW5jbHVkZSA8ZmNudGwu
aD4KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxzY2hlZC5oPgorIyBpbmNsdWRlIDxm
Y250bC5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPGxpbWl0cy5oPiAgLy8gTk9MSU5UCisjIGlu
Y2x1ZGUgPHNjaGVkLmg+ICAvLyBOT0xJTlQKIC8vIERlY2xhcmVzIHZzbnByaW50ZigpLiAgVGhp
cyBoZWFkZXIgaXMgbm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgotI2luY2x1ZGUgPHN0cmluZ3Mu
aD4KLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0jaW5jbHVk
ZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KKyMgaW5j
bHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy9tbWFuLmg+ICAvLyBO
T0xJTlQKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDx1bmlz
dGQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxzdHJpbmc+CiAKICNlbGlmIEdURVNUX09TX1NZ
TUJJQU4KLSNkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQotI2luY2x1ZGUgPHN5cy90
aW1lLmg+ICAvLyBOT0xJTlQKKyMgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKKyMg
aW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAogCiAjZWxpZiBHVEVTVF9PU19aT1MKLSNk
ZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQotI2luY2x1ZGUgPHN5cy90aW1lLmg+ICAv
LyBOT0xJTlQKKyMgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKKyMgaW5jbHVkZSA8
c3lzL3RpbWUuaD4gIC8vIE5PTElOVAogCiAvLyBPbiB6L09TIHdlIGFkZGl0aW9uYWxseSBuZWVk
IHN0cmluZ3MuaCBmb3Igc3RyY2FzZWNtcC4KLSNpbmNsdWRlIDxzdHJpbmdzLmg+ICAvLyBOT0xJ
TlQKKyMgaW5jbHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5UCiAKICNlbGlmIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFICAvLyBXZSBhcmUgb24gV2luZG93cyBDRS4KIAotI2luY2x1ZGUgPHdpbmRv
d3MuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBOT0xJTlQKKyMgdW5k
ZWYgbWluCiAKICNlbGlmIEdURVNUX09TX1dJTkRPV1MgIC8vIFdlIGFyZSBvbiBXaW5kb3dzIHBy
b3Blci4KIAotI2luY2x1ZGUgPGlvLmg+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDxzeXMvdGltZWIu
aD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPiAgLy8gTk9MSU5UCi0jaW5jbHVk
ZSA8c3lzL3N0YXQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxpby5oPiAgLy8gTk9MSU5UCisj
IGluY2x1ZGUgPHN5cy90aW1lYi5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy90eXBlcy5o
PiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+ICAvLyBOT0xJTlQKIAotI2lmIEdU
RVNUX09TX1dJTkRPV1NfTUlOR1cKKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NSU5HVwogLy8gTWlu
R1cgaGFzIGdldHRpbWVvZmRheSgpIGJ1dCBub3QgX2Z0aW1lNjQoKS4KLS8vIFRPRE8oa2VudG9u
QGdvb2dsZS5jb20pOiBVc2UgYXV0b2NvbmYgdG8gZGV0ZWN0IGF2YWlsYWJpbGl0eSBvZgorLy8g
RklYTUU6IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZhaWxhYmlsaXR5IG9mCiAvLyAgIGdldHRp
bWVvZmRheSgpLgotLy8gVE9ETyhrZW50b25AZ29vZ2xlLmNvbSk6IFRoZXJlIGFyZSBvdGhlciB3
YXlzIHRvIGdldCB0aGUgdGltZSBvbgorLy8gRklYTUU6IFRoZXJlIGFyZSBvdGhlciB3YXlzIHRv
IGdldCB0aGUgdGltZSBvbgogLy8gICBXaW5kb3dzLCBsaWtlIEdldFRpY2tDb3VudCgpIG9yIEdl
dFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCkuICBNaW5HVwogLy8gICBzdXBwb3J0cyB0aGVzZS4gIGNv
bnNpZGVyIHVzaW5nIHRoZW0gaW5zdGVhZC4KLSNkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRB
WV8gMQotI2luY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gR1RFU1Rf
T1NfV0lORE9XU19NSU5HVworIyAgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKKyMg
IGluY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1NfTUlOR1cKIAogLy8gY3BwbGludCB0aGlua3MgdGhhdCB0aGUgaGVhZGVyIGlzIGFscmVh
ZHkgaW5jbHVkZWQsIHNvIHdlIHdhbnQgdG8KIC8vIHNpbGVuY2UgaXQuCi0jaW5jbHVkZSA8d2lu
ZG93cy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAorIyB1
bmRlZiBtaW4KIAogI2Vsc2UKIAogLy8gQXNzdW1lIG90aGVyIHBsYXRmb3JtcyBoYXZlIGdldHRp
bWVvZmRheSgpLgotLy8gVE9ETyhrZW50b25AZ29vZ2xlLmNvbSk6IFVzZSBhdXRvY29uZiB0byBk
ZXRlY3QgYXZhaWxhYmlsaXR5IG9mCisvLyBGSVhNRTogVXNlIGF1dG9jb25mIHRvIGRldGVjdCBh
dmFpbGFiaWxpdHkgb2YKIC8vICAgZ2V0dGltZW9mZGF5KCkuCi0jZGVmaW5lIEdURVNUX0hBU19H
RVRUSU1FT0ZEQVlfIDEKKyMgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKIAogLy8g
Y3BwbGludCB0aGlua3MgdGhhdCB0aGUgaGVhZGVyIGlzIGFscmVhZHkgaW5jbHVkZWQsIHNvIHdl
IHdhbnQgdG8KIC8vIHNpbGVuY2UgaXQuCi0jaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElO
VAotI2luY2x1ZGUgPHVuaXN0ZC5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy90aW1lLmg+
ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8dW5pc3RkLmg+ICAvLyBOT0xJTlQKIAogI2VuZGlmICAv
LyBHVEVTVF9PU19MSU5VWAogCiAjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLSNpbmNsdWRlIDxz
dGRleGNlcHQ+CisjIGluY2x1ZGUgPHN0ZGV4Y2VwdD4KKyNlbmRpZgorCisjaWYgR1RFU1RfQ0FO
X1NUUkVBTV9SRVNVTFRTXworIyBpbmNsdWRlIDxhcnBhL2luZXQuaD4gIC8vIE5PTElOVAorIyBp
bmNsdWRlIDxuZXRkYi5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy9zb2NrZXQuaD4gIC8v
IE5PTElOVAorIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4gIC8vIE5PTElOVAogI2VuZGlmCiAKLS8v
IEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBU
ZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRl
cm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBl
cnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRh
bGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8gaGlzIGNvZGUuCi0jZGVm
aW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCiAjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFs
LWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwogCiAjaWYgR1RFU1RfT1NfV0lO
RE9XUwotI2RlZmluZSB2c25wcmludGYgX3ZzbnByaW50ZgorIyBkZWZpbmUgdnNucHJpbnRmIF92
c25wcmludGYKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCisjaWYgR1RFU1RfT1NfTUFD
CisjaWZuZGVmIEdURVNUX09TX0lPUworI2luY2x1ZGUgPGNydF9leHRlcm5zLmg+CisjZW5kaWYK
KyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX0FCU0wKKyNpbmNsdWRlICJhYnNsL2RlYnVnZ2luZy9m
YWlsdXJlX3NpZ25hbF9oYW5kbGVyLmgiCisjaW5jbHVkZSAiYWJzbC9kZWJ1Z2dpbmcvc3RhY2t0
cmFjZS5oIgorI2luY2x1ZGUgImFic2wvZGVidWdnaW5nL3N5bWJvbGl6ZS5oIgorI2luY2x1ZGUg
ImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCisKIG5h
bWVzcGFjZSB0ZXN0aW5nIHsKIAogdXNpbmcgaW50ZXJuYWw6OkNvdW50SWY7CkBAIC0xNTMsOCAr
MTcyLDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RDYXNlRmlsdGVyW10gPSAiKkRl
YXRoVGVzdDoqRGVhdGhUZXN0LyoiOwogLy8gQSB0ZXN0IGZpbHRlciB0aGF0IG1hdGNoZXMgZXZl
cnl0aGluZy4KIHN0YXRpYyBjb25zdCBjaGFyIGtVbml2ZXJzYWxGaWx0ZXJbXSA9ICIqIjsKIAot
Ly8gVGhlIGRlZmF1bHQgb3V0cHV0IGZpbGUgZm9yIFhNTCBvdXRwdXQuCi1zdGF0aWMgY29uc3Qg
Y2hhciBrRGVmYXVsdE91dHB1dEZpbGVbXSA9ICJ0ZXN0X2RldGFpbC54bWwiOworLy8gVGhlIGRl
ZmF1bHQgb3V0cHV0IGZvcm1hdC4KK3N0YXRpYyBjb25zdCBjaGFyIGtEZWZhdWx0T3V0cHV0Rm9y
bWF0W10gPSAieG1sIjsKKy8vIFRoZSBkZWZhdWx0IG91dHB1dCBmaWxlLgorc3RhdGljIGNvbnN0
IGNoYXIga0RlZmF1bHRPdXRwdXRGaWxlW10gPSAidGVzdF9kZXRhaWwiOwogCiAvLyBUaGUgZW52
aXJvbm1lbnQgdmFyaWFibGUgbmFtZSBmb3IgdGhlIHRlc3Qgc2hhcmQgaW5kZXguCiBzdGF0aWMg
Y29uc3QgY2hhciBrVGVzdFNoYXJkSW5kZXhbXSA9ICJHVEVTVF9TSEFSRF9JTkRFWCI7CkBAIC0x
NzMsOCArMTk0LDM0IEBAIGNvbnN0IGNoYXIga1N0YWNrVHJhY2VNYXJrZXJbXSA9ICJcblN0YWNr
IHRyYWNlOlxuIjsKIC8vIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLgogYm9vbCBnX2hl
bHBfZmxhZyA9IGZhbHNlOwogCisvLyBVdGlsdHkgZnVuY3Rpb24gdG8gT3BlbiBGaWxlIGZvciBX
cml0aW5nCitzdGF0aWMgRklMRSogT3BlbkZpbGVGb3JXcml0aW5nKGNvbnN0IHN0ZDo6c3RyaW5n
JiBvdXRwdXRfZmlsZSkgeworICBGSUxFKiBmaWxlb3V0ID0gTlVMTDsKKyAgRmlsZVBhdGggb3V0
cHV0X2ZpbGVfcGF0aChvdXRwdXRfZmlsZSk7CisgIEZpbGVQYXRoIG91dHB1dF9kaXIob3V0cHV0
X2ZpbGVfcGF0aC5SZW1vdmVGaWxlTmFtZSgpKTsKKworICBpZiAob3V0cHV0X2Rpci5DcmVhdGVE
aXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpIHsKKyAgICBmaWxlb3V0ID0gcG9zaXg6OkZPcGVuKG91
dHB1dF9maWxlLmNfc3RyKCksICJ3Iik7CisgIH0KKyAgaWYgKGZpbGVvdXQgPT0gTlVMTCkgewor
ICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICJVbmFibGUgdG8gb3BlbiBmaWxlIFwiIiA8PCBvdXRw
dXRfZmlsZSA8PCAiXCIiOworICB9CisgIHJldHVybiBmaWxlb3V0OworfQorCiB9ICAvLyBuYW1l
c3BhY2UgaW50ZXJuYWwKIAorLy8gQmF6ZWwgcGFzc2VzIGluIHRoZSBhcmd1bWVudCB0byAnLS10
ZXN0X2ZpbHRlcicgdmlhIHRoZSBURVNUQlJJREdFX1RFU1RfT05MWQorLy8gZW52aXJvbm1lbnQg
dmFyaWFibGUuCitzdGF0aWMgY29uc3QgY2hhciogR2V0RGVmYXVsdEZpbHRlcigpIHsKKyAgY29u
c3QgY2hhciogY29uc3QgdGVzdGJyaWRnZV90ZXN0X29ubHkgPQorICAgICAgaW50ZXJuYWw6OnBv
c2l4OjpHZXRFbnYoIlRFU1RCUklER0VfVEVTVF9PTkxZIik7CisgIGlmICh0ZXN0YnJpZGdlX3Rl
c3Rfb25seSAhPSBOVUxMKSB7CisgICAgcmV0dXJuIHRlc3RicmlkZ2VfdGVzdF9vbmx5OworICB9
CisgIHJldHVybiBrVW5pdmVyc2FsRmlsdGVyOworfQorCiBHVEVTVF9ERUZJTkVfYm9vbF8oCiAg
ICAgYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMsCiAgICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RF
bnYoImFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIiwgZmFsc2UpLApAQCAtMTg3LDcgKzIzNCw3IEBA
IEdURVNUX0RFRklORV9ib29sXygKIAogR1RFU1RfREVGSU5FX2Jvb2xfKAogICAgIGNhdGNoX2V4
Y2VwdGlvbnMsCi0gICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RFbnYoImNhdGNoX2V4Y2VwdGlv
bnMiLCBmYWxzZSksCisgICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RFbnYoImNhdGNoX2V4Y2Vw
dGlvbnMiLCB0cnVlKSwKICAgICAiVHJ1ZSBpZmYgIiBHVEVTVF9OQU1FXwogICAgICIgc2hvdWxk
IGNhdGNoIGV4Y2VwdGlvbnMgYW5kIHRyZWF0IHRoZW0gYXMgdGVzdCBmYWlsdXJlcy4iKTsKIApA
QCAtMTk3LDI2ICsyNDQsMzkgQEAgR1RFU1RfREVGSU5FX3N0cmluZ18oCiAgICAgIldoZXRoZXIg
dG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0LiAgVmFsaWQgdmFsdWVzOiB5ZXMsIG5vLCAiCiAg
ICAgImFuZCBhdXRvLiAgJ2F1dG8nIG1lYW5zIHRvIHVzZSBjb2xvcnMgaWYgdGhlIG91dHB1dCBp
cyAiCiAgICAgImJlaW5nIHNlbnQgdG8gYSB0ZXJtaW5hbCBhbmQgdGhlIFRFUk0gZW52aXJvbm1l
bnQgdmFyaWFibGUgIgotICAgICJpcyBzZXQgdG8geHRlcm0sIHh0ZXJtLWNvbG9yLCB4dGVybS0y
NTZjb2xvciwgbGludXggb3IgY3lnd2luLiIpOworICAgICJpcyBzZXQgdG8gYSB0ZXJtaW5hbCB0
eXBlIHRoYXQgc3VwcG9ydHMgY29sb3JzLiIpOwogCiBHVEVTVF9ERUZJTkVfc3RyaW5nXygKICAg
ICBmaWx0ZXIsCi0gICAgaW50ZXJuYWw6OlN0cmluZ0Zyb21HVGVzdEVudigiZmlsdGVyIiwga1Vu
aXZlcnNhbEZpbHRlciksCisgICAgaW50ZXJuYWw6OlN0cmluZ0Zyb21HVGVzdEVudigiZmlsdGVy
IiwgR2V0RGVmYXVsdEZpbHRlcigpKSwKICAgICAiQSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBn
bG9iIChub3QgcmVnZXgpIHBhdHRlcm5zICIKICAgICAiZm9yIGZpbHRlcmluZyB0aGUgdGVzdHMg
dG8gcnVuLCBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgIgogICAgICInLScgYW5kIGEgOiBzZXBh
cmF0ZWQgbGlzdCBvZiBuZWdhdGl2ZSBwYXR0ZXJucyAodGVzdHMgdG8gIgogICAgICJleGNsdWRl
KS4gIEEgdGVzdCBpcyBydW4gaWYgaXQgbWF0Y2hlcyBvbmUgb2YgdGhlIHBvc2l0aXZlICIKICAg
ICAicGF0dGVybnMgYW5kIGRvZXMgbm90IG1hdGNoIGFueSBvZiB0aGUgbmVnYXRpdmUgcGF0dGVy
bnMuIik7CiAKK0dURVNUX0RFRklORV9ib29sXygKKyAgICBpbnN0YWxsX2ZhaWx1cmVfc2lnbmFs
X2hhbmRsZXIsCisgICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RFbnYoImluc3RhbGxfZmFpbHVy
ZV9zaWduYWxfaGFuZGxlciIsIGZhbHNlKSwKKyAgICAiSWYgdHJ1ZSBhbmQgc3VwcG9ydGVkIG9u
IHRoZSBjdXJyZW50IHBsYXRmb3JtLCAiIEdURVNUX05BTUVfICIgc2hvdWxkICIKKyAgICAiaW5z
dGFsbCBhIHNpZ25hbCBoYW5kbGVyIHRoYXQgZHVtcHMgZGVidWdnaW5nIGluZm9ybWF0aW9uIHdo
ZW4gZmF0YWwgIgorICAgICJzaWduYWxzIGFyZSByYWlzZWQuIik7CisKIEdURVNUX0RFRklORV9i
b29sXyhsaXN0X3Rlc3RzLCBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAiTGlzdCBhbGwgdGVz
dHMgd2l0aG91dCBydW5uaW5nIHRoZW0uIik7CiAKKy8vIFRoZSBuZXQgcHJpb3JpdHkgb3JkZXIg
YWZ0ZXIgZmxhZyBwcm9jZXNzaW5nIGlzIHRodXM6CisvLyAgIC0tZ3Rlc3Rfb3V0cHV0IGNvbW1h
bmQgbGluZSBmbGFnCisvLyAgIEdURVNUX09VVFBVVCBlbnZpcm9ubWVudCB2YXJpYWJsZQorLy8g
ICBYTUxfT1VUUFVUX0ZJTEUgZW52aXJvbm1lbnQgdmFyaWFibGUKKy8vICAgJycKIEdURVNUX0RF
RklORV9zdHJpbmdfKAogICAgIG91dHB1dCwKLSAgICBpbnRlcm5hbDo6U3RyaW5nRnJvbUdUZXN0
RW52KCJvdXRwdXQiLCAiIiksCi0gICAgIkEgZm9ybWF0IChjdXJyZW50bHkgbXVzdCBiZSBcInht
bFwiKSwgb3B0aW9uYWxseSBmb2xsb3dlZCAiCi0gICAgImJ5IGEgY29sb24gYW5kIGFuIG91dHB1
dCBmaWxlIG5hbWUgb3IgZGlyZWN0b3J5LiBBIGRpcmVjdG9yeSAiCi0gICAgImlzIGluZGljYXRl
ZCBieSBhIHRyYWlsaW5nIHBhdGhuYW1lIHNlcGFyYXRvci4gIgorICAgIGludGVybmFsOjpTdHJp
bmdGcm9tR1Rlc3RFbnYoIm91dHB1dCIsCisgICAgICBpbnRlcm5hbDo6T3V0cHV0RmxhZ0Fsc29D
aGVja0VudlZhcigpLmNfc3RyKCkpLAorICAgICJBIGZvcm1hdCAoZGVmYXVsdHMgdG8gXCJ4bWxc
IiBidXQgY2FuIGJlIHNwZWNpZmllZCB0byBiZSBcImpzb25cIiksICIKKyAgICAib3B0aW9uYWxs
eSBmb2xsb3dlZCBieSBhIGNvbG9uIGFuZCBhbiBvdXRwdXQgZmlsZSBuYW1lIG9yIGRpcmVjdG9y
eS4gIgorICAgICJBIGRpcmVjdG9yeSBpcyBpbmRpY2F0ZWQgYnkgYSB0cmFpbGluZyBwYXRobmFt
ZSBzZXBhcmF0b3IuICIKICAgICAiRXhhbXBsZXM6IFwieG1sOmZpbGVuYW1lLnhtbFwiLCBcInht
bDo6ZGlyZWN0b3J5bmFtZS9cIi4gIgogICAgICJJZiBhIGRpcmVjdG9yeSBpcyBzcGVjaWZpZWQs
IG91dHB1dCBmaWxlcyB3aWxsIGJlIGNyZWF0ZWQgIgogICAgICJ3aXRoaW4gdGhhdCBkaXJlY3Rv
cnksIHdpdGggZmlsZS1uYW1lcyBiYXNlZCBvbiB0aGUgdGVzdCAiCkBAIC0yMjksNiArMjg5LDEy
IEBAIEdURVNUX0RFRklORV9ib29sXygKICAgICAiVHJ1ZSBpZmYgIiBHVEVTVF9OQU1FXwogICAg
ICIgc2hvdWxkIGRpc3BsYXkgZWxhcHNlZCB0aW1lIGluIHRleHQgb3V0cHV0LiIpOwogCitHVEVT
VF9ERUZJTkVfYm9vbF8oCisgICAgcHJpbnRfdXRmOCwKKyAgICBpbnRlcm5hbDo6Qm9vbEZyb21H
VGVzdEVudigicHJpbnRfdXRmOCIsIHRydWUpLAorICAgICJUcnVlIGlmZiAiIEdURVNUX05BTUVf
CisgICAgIiBwcmludHMgVVRGOCBjaGFyYWN0ZXJzIGFzIHRleHQuIik7CisKIEdURVNUX0RFRklO
RV9pbnQzMl8oCiAgICAgcmFuZG9tX3NlZWQsCiAgICAgaW50ZXJuYWw6OkludDMyRnJvbUdUZXN0
RW52KCJyYW5kb21fc2VlZCIsIDApLApAQCAtMjU4LDEyICszMjQsMjYgQEAgR1RFU1RfREVGSU5F
X2ludDMyXygKICAgICAiVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBwcmlu
dCB3aGVuIGFuICIKICAgICAiYXNzZXJ0aW9uIGZhaWxzLiAgVGhlIHZhbGlkIHJhbmdlIGlzIDAg
dGhyb3VnaCAxMDAsIGluY2x1c2l2ZS4iKTsKIAorR1RFU1RfREVGSU5FX3N0cmluZ18oCisgICAg
c3RyZWFtX3Jlc3VsdF90bywKKyAgICBpbnRlcm5hbDo6U3RyaW5nRnJvbUdUZXN0RW52KCJzdHJl
YW1fcmVzdWx0X3RvIiwgIiIpLAorICAgICJUaGlzIGZsYWcgc3BlY2lmaWVzIHRoZSBob3N0IG5h
bWUgYW5kIHRoZSBwb3J0IG51bWJlciBvbiB3aGljaCB0byBzdHJlYW0gIgorICAgICJ0ZXN0IHJl
c3VsdHMuIEV4YW1wbGU6IFwibG9jYWxob3N0OjU1NVwiLiBUaGUgZmxhZyBpcyBlZmZlY3RpdmUg
b25seSBvbiAiCisgICAgIkxpbnV4LiIpOworCiBHVEVTVF9ERUZJTkVfYm9vbF8oCiAgICAgdGhy
b3dfb25fZmFpbHVyZSwKICAgICBpbnRlcm5hbDo6Qm9vbEZyb21HVGVzdEVudigidGhyb3dfb25f
ZmFpbHVyZSIsIGZhbHNlKSwKICAgICAiV2hlbiB0aGlzIGZsYWcgaXMgc3BlY2lmaWVkLCBhIGZh
aWxlZCBhc3NlcnRpb24gd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gIgogICAgICJpZiBleGNlcHRp
b25zIGFyZSBlbmFibGVkIG9yIGV4aXQgdGhlIHByb2dyYW0gd2l0aCBhIG5vbi16ZXJvIGNvZGUg
IgotICAgICJvdGhlcndpc2UuIik7CisgICAgIm90aGVyd2lzZS4gRm9yIHVzZSB3aXRoIGFuIGV4
dGVybmFsIHRlc3QgZnJhbWV3b3JrLiIpOworCisjaWYgR1RFU1RfVVNFX09XTl9GTEFHRklMRV9G
TEFHXworR1RFU1RfREVGSU5FX3N0cmluZ18oCisgICAgZmxhZ2ZpbGUsCisgICAgaW50ZXJuYWw6
OlN0cmluZ0Zyb21HVGVzdEVudigiZmxhZ2ZpbGUiLCAiIiksCisgICAgIlRoaXMgZmxhZyBzcGVj
aWZpZXMgdGhlIGZsYWdmaWxlIHRvIHJlYWQgY29tbWFuZC1saW5lIGZsYWdzIGZyb20uIik7Cisj
ZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KIAogbmFtZXNwYWNlIGludGVy
bmFsIHsKIApAQCAtMjcyLDcgKzM1Miw4IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLyB0aGFu
IGtNYXhSYW5nZS4KIFVJbnQzMiBSYW5kb206OkdlbmVyYXRlKFVJbnQzMiByYW5nZSkgewogICAv
LyBUaGVzZSBjb25zdGFudHMgYXJlIHRoZSBzYW1lIGFzIGFyZSB1c2VkIGluIGdsaWJjJ3MgcmFu
ZCgzKS4KLSAgc3RhdGVfID0gKDExMDM1MTUyNDVVKnN0YXRlXyArIDEyMzQ1VSkgJSBrTWF4UmFu
Z2U7CisgIC8vIFVzZSB3aWRlciB0eXBlcyB0aGFuIG5lY2Vzc2FyeSB0byBwcmV2ZW50IHVuc2ln
bmVkIG92ZXJmbG93IGRpYWdub3N0aWNzLgorICBzdGF0ZV8gPSBzdGF0aWNfY2FzdDxVSW50MzI+
KDExMDM1MTUyNDVVTEwqc3RhdGVfICsgMTIzNDVVKSAlIGtNYXhSYW5nZTsKIAogICBHVEVTVF9D
SEVDS18ocmFuZ2UgPiAwKQogICAgICAgPDwgIkNhbm5vdCBnZW5lcmF0ZSBhIG51bWJlciBpbiB0
aGUgcmFuZ2UgWzAsIDApLiI7CkBAIC0yODksMTMgKzM3MCw3IEBAIFVJbnQzMiBSYW5kb206Okdl
bmVyYXRlKFVJbnQzMiByYW5nZSkgewogLy8gR1Rlc3RJc0luaXRpYWxpemVkKCkgcmV0dXJucyB0
cnVlIGlmZiB0aGUgdXNlciBoYXMgaW5pdGlhbGl6ZWQKIC8vIEdvb2dsZSBUZXN0LiAgVXNlZnVs
IGZvciBjYXRjaGluZyB0aGUgdXNlciBtaXN0YWtlIG9mIG5vdCBpbml0aWFsaXppbmcKIC8vIEdv
b2dsZSBUZXN0IGJlZm9yZSBjYWxsaW5nIFJVTl9BTExfVEVTVFMoKS4KLS8vCi0vLyBBIHVzZXIg
bXVzdCBjYWxsIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCkgdG8gaW5pdGlhbGl6ZSBHb29nbGUK
LS8vIFRlc3QuICBnX2luaXRfZ3Rlc3RfY291bnQgaXMgc2V0IHRvIHRoZSBudW1iZXIgb2YgdGlt
ZXMKLS8vIEluaXRHb29nbGVUZXN0KCkgaGFzIGJlZW4gY2FsbGVkLiAgV2UgZG9uJ3QgcHJvdGVj
dCB0aGlzIHZhcmlhYmxlCi0vLyB1bmRlciBhIG11dGV4IGFzIGl0IGlzIG9ubHkgYWNjZXNzZWQg
aW4gdGhlIG1haW4gdGhyZWFkLgotaW50IGdfaW5pdF9ndGVzdF9jb3VudCA9IDA7Ci1zdGF0aWMg
Ym9vbCBHVGVzdElzSW5pdGlhbGl6ZWQoKSB7IHJldHVybiBnX2luaXRfZ3Rlc3RfY291bnQgIT0g
MDsgfQorc3RhdGljIGJvb2wgR1Rlc3RJc0luaXRpYWxpemVkKCkgeyByZXR1cm4gR2V0QXJndnMo
KS5zaXplKCkgPiAwOyB9CiAKIC8vIEl0ZXJhdGVzIG92ZXIgYSB2ZWN0b3Igb2YgVGVzdENhc2Vz
LCBrZWVwaW5nIGEgcnVubmluZyBzdW0gb2YgdGhlCiAvLyByZXN1bHRzIG9mIGNhbGxpbmcgYSBn
aXZlbiBpbnQtcmV0dXJuaW5nIG1ldGhvZCBvbiBlYWNoLgpAQCAtMzQ5LDEwICs0MjQsMjEgQEAg
dm9pZCBBc3NlcnRIZWxwZXI6Om9wZXJhdG9yPShjb25zdCBNZXNzYWdlJiBtZXNzYWdlKSBjb25z
dCB7CiB9CiAKIC8vIE11dGV4IGZvciBsaW5rZWQgcG9pbnRlcnMuCi1HVEVTVF9ERUZJTkVfU1RB
VElDX01VVEVYXyhnX2xpbmtlZF9wdHJfbXV0ZXgpOworR1RFU1RfQVBJXyBHVEVTVF9ERUZJTkVf
U1RBVElDX01VVEVYXyhnX2xpbmtlZF9wdHJfbXV0ZXgpOwogCi0vLyBBcHBsaWNhdGlvbiBwYXRo
bmFtZSBnb3R0ZW4gaW4gSW5pdEdvb2dsZVRlc3QuCi1TdHJpbmcgZ19leGVjdXRhYmxlX3BhdGg7
CisvLyBBIGNvcHkgb2YgYWxsIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuICBTZXQgYnkgSW5pdEdv
b2dsZVRlc3QoKS4KKzo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGdfYXJndnM7CisKKzo6c3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdldEFyZ3ZzKCkgeworI2lmIGRlZmluZWQoR1RFU1RfQ1VT
VE9NX0dFVF9BUkdWU18pCisgIC8vIEdURVNUX0NVU1RPTV9HRVRfQVJHVlNfKCkgbWF5IHJldHVy
biBhIGNvbnRhaW5lciBvZiBzdGQ6OnN0cmluZyBvcgorICAvLyA6OnN0cmluZy4gVGhpcyBjb2Rl
IGNvbnZlcnRzIGl0IHRvIHRoZSBhcHByb3ByaWF0ZSB0eXBlLgorICBjb25zdCBhdXRvJiBjdXN0
b20gPSBHVEVTVF9DVVNUT01fR0VUX0FSR1ZTXygpOworICByZXR1cm4gOjpzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4oY3VzdG9tLmJlZ2luKCksIGN1c3RvbS5lbmQoKSk7CisjZWxzZSAgIC8vIGRl
ZmluZWQoR1RFU1RfQ1VTVE9NX0dFVF9BUkdWU18pCisgIHJldHVybiBnX2FyZ3ZzOworI2VuZGlm
ICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9HRVRfQVJHVlNfKQorfQogCiAvLyBSZXR1cm5zIHRo
ZSBjdXJyZW50IGFwcGxpY2F0aW9uJ3MgbmFtZSwgcmVtb3ZpbmcgZGlyZWN0b3J5IHBhdGggaWYg
dGhhdAogLy8gaXMgcHJlc2VudC4KQEAgLTM2MCw5ICs0NDYsOSBAQCBGaWxlUGF0aCBHZXRDdXJy
ZW50RXhlY3V0YWJsZU5hbWUoKSB7CiAgIEZpbGVQYXRoIHJlc3VsdDsKIAogI2lmIEdURVNUX09T
X1dJTkRPV1MKLSAgcmVzdWx0LlNldChGaWxlUGF0aChnX2V4ZWN1dGFibGVfcGF0aCkuUmVtb3Zl
RXh0ZW5zaW9uKCJleGUiKSk7CisgIHJlc3VsdC5TZXQoRmlsZVBhdGgoR2V0QXJndnMoKVswXSku
UmVtb3ZlRXh0ZW5zaW9uKCJleGUiKSk7CiAjZWxzZQotICByZXN1bHQuU2V0KEZpbGVQYXRoKGdf
ZXhlY3V0YWJsZV9wYXRoKSk7CisgIHJlc3VsdC5TZXQoRmlsZVBhdGgoR2V0QXJndnMoKVswXSkp
OwogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKICAgcmV0dXJuIHJlc3VsdC5SZW1vdmVE
aXJlY3RvcnlOYW1lKCk7CkBAIC0zNzEsMzMgKzQ1NywzNCBAQCBGaWxlUGF0aCBHZXRDdXJyZW50
RXhlY3V0YWJsZU5hbWUoKSB7CiAvLyBGdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgdGhlIGd0ZXN0
X291dHB1dCBmbGFnLgogCiAvLyBSZXR1cm5zIHRoZSBvdXRwdXQgZm9ybWF0LCBvciAiIiBmb3Ig
bm9ybWFsIHByaW50ZWQgb3V0cHV0LgotU3RyaW5nIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0
Rm9ybWF0KCkgeworc3RkOjpzdHJpbmcgVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQo
KSB7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGd0ZXN0X291dHB1dF9mbGFnID0gR1RFU1RfRkxBRyhv
dXRwdXQpLmNfc3RyKCk7Ci0gIGlmIChndGVzdF9vdXRwdXRfZmxhZyA9PSBOVUxMKSByZXR1cm4g
U3RyaW5nKCIiKTsKLQogICBjb25zdCBjaGFyKiBjb25zdCBjb2xvbiA9IHN0cmNocihndGVzdF9v
dXRwdXRfZmxhZywgJzonKTsKICAgcmV0dXJuIChjb2xvbiA9PSBOVUxMKSA/Ci0gICAgICBTdHJp
bmcoZ3Rlc3Rfb3V0cHV0X2ZsYWcpIDoKLSAgICAgIFN0cmluZyhndGVzdF9vdXRwdXRfZmxhZywg
Y29sb24gLSBndGVzdF9vdXRwdXRfZmxhZyk7CisgICAgICBzdGQ6OnN0cmluZyhndGVzdF9vdXRw
dXRfZmxhZykgOgorICAgICAgc3RkOjpzdHJpbmcoZ3Rlc3Rfb3V0cHV0X2ZsYWcsIGNvbG9uIC0g
Z3Rlc3Rfb3V0cHV0X2ZsYWcpOwogfQogCiAvLyBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSByZXF1
ZXN0ZWQgb3V0cHV0IGZpbGUsIG9yIHRoZSBkZWZhdWx0IGlmIG5vbmUKIC8vIHdhcyBleHBsaWNp
dGx5IHNwZWNpZmllZC4KLVN0cmluZyBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRv
T3V0cHV0RmlsZSgpIHsKK3N0ZDo6c3RyaW5nIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQ
YXRoVG9PdXRwdXRGaWxlKCkgewogICBjb25zdCBjaGFyKiBjb25zdCBndGVzdF9vdXRwdXRfZmxh
ZyA9IEdURVNUX0ZMQUcob3V0cHV0KS5jX3N0cigpOwotICBpZiAoZ3Rlc3Rfb3V0cHV0X2ZsYWcg
PT0gTlVMTCkKLSAgICByZXR1cm4gU3RyaW5nKCIiKTsKKworICBzdGQ6OnN0cmluZyBmb3JtYXQg
PSBHZXRPdXRwdXRGb3JtYXQoKTsKKyAgaWYgKGZvcm1hdC5lbXB0eSgpKQorICAgIGZvcm1hdCA9
IHN0ZDo6c3RyaW5nKGtEZWZhdWx0T3V0cHV0Rm9ybWF0KTsKIAogICBjb25zdCBjaGFyKiBjb25z
dCBjb2xvbiA9IHN0cmNocihndGVzdF9vdXRwdXRfZmxhZywgJzonKTsKICAgaWYgKGNvbG9uID09
IE5VTEwpCi0gICAgcmV0dXJuIFN0cmluZyhpbnRlcm5hbDo6RmlsZVBhdGg6OkNvbmNhdFBhdGhz
KAotICAgICAgICAgICAgICAgaW50ZXJuYWw6OkZpbGVQYXRoKAotICAgICAgICAgICAgICAgICAg
IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5nX2RpcigpKSwKLSAgICAg
ICAgICAgICAgIGludGVybmFsOjpGaWxlUGF0aChrRGVmYXVsdE91dHB1dEZpbGUpKS5Ub1N0cmlu
ZygpICk7CisgICAgcmV0dXJuIGludGVybmFsOjpGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKAorICAg
ICAgICBpbnRlcm5hbDo6RmlsZVBhdGgoCisgICAgICAgICAgICBVbml0VGVzdDo6R2V0SW5zdGFu
Y2UoKS0+b3JpZ2luYWxfd29ya2luZ19kaXIoKSksCisgICAgICAgIGludGVybmFsOjpGaWxlUGF0
aChrRGVmYXVsdE91dHB1dEZpbGUpLCAwLAorICAgICAgICBmb3JtYXQuY19zdHIoKSkuc3RyaW5n
KCk7CiAKICAgaW50ZXJuYWw6OkZpbGVQYXRoIG91dHB1dF9uYW1lKGNvbG9uICsgMSk7CiAgIGlm
ICghb3V0cHV0X25hbWUuSXNBYnNvbHV0ZVBhdGgoKSkKLSAgICAvLyBUT0RPKHdhbkBnb29nbGUu
Y29tKTogb24gV2luZG93cyBcc29tZVxwYXRoIGlzIG5vdCBhbiBhYnNvbHV0ZQorICAgIC8vIEZJ
WE1FOiBvbiBXaW5kb3dzIFxzb21lXHBhdGggaXMgbm90IGFuIGFic29sdXRlCiAgICAgLy8gcGF0
aCAoYXMgaXRzIG1lYW5pbmcgZGVwZW5kcyBvbiB0aGUgY3VycmVudCBkcml2ZSksIHlldCB0aGUK
ICAgICAvLyBmb2xsb3dpbmcgbG9naWMgZm9yIHR1cm5pbmcgaXQgaW50byBhbiBhYnNvbHV0ZSBw
YXRoIGlzIHdyb25nLgogICAgIC8vIEZpeCBpdC4KQEAgLTQwNiwxMiArNDkzLDEyIEBAIFN0cmlu
ZyBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpIHsKICAgICAg
ICAgaW50ZXJuYWw6OkZpbGVQYXRoKGNvbG9uICsgMSkpOwogCiAgIGlmICghb3V0cHV0X25hbWUu
SXNEaXJlY3RvcnkoKSkKLSAgICByZXR1cm4gb3V0cHV0X25hbWUuVG9TdHJpbmcoKTsKKyAgICBy
ZXR1cm4gb3V0cHV0X25hbWUuc3RyaW5nKCk7CiAKICAgaW50ZXJuYWw6OkZpbGVQYXRoIHJlc3Vs
dChpbnRlcm5hbDo6RmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5hbWUoCiAgICAgICBvdXRw
dXRfbmFtZSwgaW50ZXJuYWw6OkdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLAogICAgICAgR2V0
T3V0cHV0Rm9ybWF0KCkuY19zdHIoKSkpOwotICByZXR1cm4gcmVzdWx0LlRvU3RyaW5nKCk7Cisg
IHJldHVybiByZXN1bHQuc3RyaW5nKCk7CiB9CiAKIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHdp
bGRjYXJkIHBhdHRlcm4gbWF0Y2hlcyB0aGUgc3RyaW5nLiAgVGhlCkBAIC00MzYsNyArNTIzLDgg
QEAgYm9vbCBVbml0VGVzdE9wdGlvbnM6OlBhdHRlcm5NYXRjaGVzU3RyaW5nKGNvbnN0IGNoYXIg
KnBhdHRlcm4sCiAgIH0KIH0KIAotYm9vbCBVbml0VGVzdE9wdGlvbnM6Ok1hdGNoZXNGaWx0ZXIo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBjaGFyKiBmaWx0ZXIpIHsKK2Jvb2wgVW5pdFRlc3RP
cHRpb25zOjpNYXRjaGVzRmlsdGVyKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBjb25z
dCBjaGFyKiBmaWx0ZXIpIHsKICAgY29uc3QgY2hhciAqY3VyX3BhdHRlcm4gPSBmaWx0ZXI7CiAg
IGZvciAoOzspIHsKICAgICBpZiAoUGF0dGVybk1hdGNoZXNTdHJpbmcoY3VyX3BhdHRlcm4sIG5h
bWUuY19zdHIoKSkpIHsKQEAgLTQ1NiwyOCArNTQ0LDI0IEBAIGJvb2wgVW5pdFRlc3RPcHRpb25z
OjpNYXRjaGVzRmlsdGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgY2hhciogZmlsdGVyKSB7
CiAgIH0KIH0KIAotLy8gVE9ETyhrZWl0aHJheSk6IG1vdmUgU3RyaW5nIGZ1bmN0aW9uIGltcGxl
bWVudGF0aW9ucyB0byBndGVzdC1zdHJpbmcuY2MuCi0KIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhl
IHVzZXItc3BlY2lmaWVkIGZpbHRlciBtYXRjaGVzIHRoZSB0ZXN0IGNhc2UKIC8vIG5hbWUgYW5k
IHRoZSB0ZXN0IG5hbWUuCi1ib29sIFVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0Y2hlc1Rlc3Qo
Y29uc3QgU3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTdHJpbmcgJnRlc3RfbmFtZSkgewotICBjb25zdCBTdHJpbmcm
IGZ1bGxfbmFtZSA9IFN0cmluZzo6Rm9ybWF0KCIlcy4lcyIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jYXNlX25hbWUuY19zdHIoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X25hbWUuY19zdHIoKSk7Citi
b29sIFVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0Y2hlc1Rlc3QoY29uc3Qgc3RkOjpzdHJpbmcg
JnRlc3RfY2FzZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0X25hbWUpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIGZ1
bGxfbmFtZSA9IHRlc3RfY2FzZV9uYW1lICsgIi4iICsgdGVzdF9uYW1lLmNfc3RyKCk7CiAKICAg
Ly8gU3BsaXQgLS1ndGVzdF9maWx0ZXIgYXQgJy0nLCBpZiB0aGVyZSBpcyBvbmUsIHRvIHNlcGFy
YXRlIGludG8KICAgLy8gcG9zaXRpdmUgZmlsdGVyIGFuZCBuZWdhdGl2ZSBmaWx0ZXIgcG9ydGlv
bnMKICAgY29uc3QgY2hhciogY29uc3QgcCA9IEdURVNUX0ZMQUcoZmlsdGVyKS5jX3N0cigpOwog
ICBjb25zdCBjaGFyKiBjb25zdCBkYXNoID0gc3RyY2hyKHAsICctJyk7Ci0gIFN0cmluZyBwb3Np
dGl2ZTsKLSAgU3RyaW5nIG5lZ2F0aXZlOworICBzdGQ6OnN0cmluZyBwb3NpdGl2ZTsKKyAgc3Rk
OjpzdHJpbmcgbmVnYXRpdmU7CiAgIGlmIChkYXNoID09IE5VTEwpIHsKICAgICBwb3NpdGl2ZSA9
IEdURVNUX0ZMQUcoZmlsdGVyKS5jX3N0cigpOyAgLy8gV2hvbGUgc3RyaW5nIGlzIGEgcG9zaXRp
dmUgZmlsdGVyCi0gICAgbmVnYXRpdmUgPSBTdHJpbmcoIiIpOworICAgIG5lZ2F0aXZlID0gIiI7
CiAgIH0gZWxzZSB7Ci0gICAgcG9zaXRpdmUgPSBTdHJpbmcocCwgZGFzaCAtIHApOyAgLy8gRXZl
cnl0aGluZyB1cCB0byB0aGUgZGFzaAotICAgIG5lZ2F0aXZlID0gU3RyaW5nKGRhc2grMSk7ICAg
ICAgIC8vIEV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGRhc2gKKyAgICBwb3NpdGl2ZSA9IHN0ZDo6c3Ry
aW5nKHAsIGRhc2gpOyAgIC8vIEV2ZXJ5dGhpbmcgdXAgdG8gdGhlIGRhc2gKKyAgICBuZWdhdGl2
ZSA9IHN0ZDo6c3RyaW5nKGRhc2ggKyAxKTsgIC8vIEV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGRhc2gK
ICAgICBpZiAocG9zaXRpdmUuZW1wdHkoKSkgewogICAgICAgLy8gVHJlYXQgJy10ZXN0MScgYXMg
dGhlIHNhbWUgYXMgJyotdGVzdDEnCiAgICAgICBwb3NpdGl2ZSA9IGtVbml2ZXJzYWxGaWx0ZXI7
CkBAIC00OTAsMjAgKzU3NCwzMyBAQCBib29sIFVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0Y2hl
c1Rlc3QoY29uc3QgU3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSwKICAgICAgICAgICAhTWF0Y2hlc0Zp
bHRlcihmdWxsX25hbWUsIG5lZ2F0aXZlLmNfc3RyKCkpKTsKIH0KIAotI2lmIEdURVNUX09TX1dJ
TkRPV1MKKyNpZiBHVEVTVF9IQVNfU0VICiAvLyBSZXR1cm5zIEVYQ0VQVElPTl9FWEVDVVRFX0hB
TkRMRVIgaWYgR29vZ2xlIFRlc3Qgc2hvdWxkIGhhbmRsZSB0aGUKIC8vIGdpdmVuIFNFSCBleGNl
cHRpb24sIG9yIEVYQ0VQVElPTl9DT05USU5VRV9TRUFSQ0ggb3RoZXJ3aXNlLgogLy8gVGhpcyBm
dW5jdGlvbiBpcyB1c2VmdWwgYXMgYW4gX19leGNlcHQgY29uZGl0aW9uLgogaW50IFVuaXRUZXN0
T3B0aW9uczo6R1Rlc3RTaG91bGRQcm9jZXNzU0VIKERXT1JEIGV4Y2VwdGlvbl9jb2RlKSB7Ci0g
IC8vIEdvb2dsZSBUZXN0IHNob3VsZCBoYW5kbGUgYW4gZXhjZXB0aW9uIGlmOgorICAvLyBHb29n
bGUgVGVzdCBzaG91bGQgaGFuZGxlIGEgU0VIIGV4Y2VwdGlvbiBpZjoKICAgLy8gICAxLiB0aGUg
dXNlciB3YW50cyBpdCB0bywgQU5ECi0gIC8vICAgMi4gdGhpcyBpcyBub3QgYSBicmVha3BvaW50
IGV4Y2VwdGlvbi4KLSAgcmV0dXJuIChHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpICYmCi0g
ICAgICAgICAgZXhjZXB0aW9uX2NvZGUgIT0gRVhDRVBUSU9OX0JSRUFLUE9JTlQpID8KLSAgICAg
IEVYQ0VQVElPTl9FWEVDVVRFX0hBTkRMRVIgOgotICAgICAgRVhDRVBUSU9OX0NPTlRJTlVFX1NF
QVJDSDsKKyAgLy8gICAyLiB0aGlzIGlzIG5vdCBhIGJyZWFrcG9pbnQgZXhjZXB0aW9uLCBBTkQK
KyAgLy8gICAzLiB0aGlzIGlzIG5vdCBhIEMrKyBleGNlcHRpb24gKFZDKysgaW1wbGVtZW50cyB0
aGVtIHZpYSBTRUgsCisgIC8vICAgICAgYXBwYXJlbnRseSkuCisgIC8vCisgIC8vIFNFSCBleGNl
cHRpb24gY29kZSBmb3IgQysrIGV4Y2VwdGlvbnMuCisgIC8vIChzZWUgaHR0cDovL3N1cHBvcnQu
bWljcm9zb2Z0LmNvbS9rYi8xODUyOTQgZm9yIG1vcmUgaW5mb3JtYXRpb24pLgorICBjb25zdCBE
V09SRCBrQ3h4RXhjZXB0aW9uQ29kZSA9IDB4ZTA2ZDczNjM7CisKKyAgYm9vbCBzaG91bGRfaGFu
ZGxlID0gdHJ1ZTsKKworICBpZiAoIUdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykpCisgICAg
c2hvdWxkX2hhbmRsZSA9IGZhbHNlOworICBlbHNlIGlmIChleGNlcHRpb25fY29kZSA9PSBFWENF
UFRJT05fQlJFQUtQT0lOVCkKKyAgICBzaG91bGRfaGFuZGxlID0gZmFsc2U7CisgIGVsc2UgaWYg
KGV4Y2VwdGlvbl9jb2RlID09IGtDeHhFeGNlcHRpb25Db2RlKQorICAgIHNob3VsZF9oYW5kbGUg
PSBmYWxzZTsKKworICByZXR1cm4gc2hvdWxkX2hhbmRsZSA/IEVYQ0VQVElPTl9FWEVDVVRFX0hB
TkRMRVIgOiBFWENFUFRJT05fQ09OVElOVUVfU0VBUkNIOwogfQotI2VuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCisjZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKIAogfSAgLy8gbmFtZXNwYWNlIGlu
dGVybmFsCiAKQEAgLTU3OCwxMyArNjc1LDEzIEBAIGV4dGVybiBjb25zdCBUeXBlSWQga1Rlc3RU
eXBlSWRJbkdvb2dsZVRlc3QgPSBHZXRUZXN0VHlwZUlkKCk7CiAvLyBUaGlzIHByZWRpY2F0ZS1m
b3JtYXR0ZXIgY2hlY2tzIHRoYXQgJ3Jlc3VsdHMnIGNvbnRhaW5zIGEgdGVzdCBwYXJ0CiAvLyBm
YWlsdXJlIG9mIHRoZSBnaXZlbiB0eXBlIGFuZCB0aGF0IHRoZSBmYWlsdXJlIG1lc3NhZ2UgY29u
dGFpbnMgdGhlCiAvLyBnaXZlbiBzdWJzdHJpbmcuCi1Bc3NlcnRpb25SZXN1bHQgSGFzT25lRmFp
bHVyZShjb25zdCBjaGFyKiAvKiByZXN1bHRzX2V4cHIgKi8sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiAvKiB0eXBlX2V4cHIgKi8sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKiBzdWJzdHJfZXhwciAqLywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0QXJyYXkmIHJlc3VsdHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogc3Vic3RyKSB7Ci0gIGNv
bnN0IFN0cmluZyBleHBlY3RlZCh0eXBlID09IFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJl
ID8KK3N0YXRpYyBBc3NlcnRpb25SZXN1bHQgSGFzT25lRmFpbHVyZShjb25zdCBjaGFyKiAvKiBy
ZXN1bHRzX2V4cHIgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogLyogdHlwZV9leHByICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIC8qIHN1YnN0cl9leHByICovLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0QXJyYXkmIHJlc3VsdHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdFBhcnRSZXN1bHQ6OlR5cGUg
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgc3Vic3RyKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdGVkKHR5cGUgPT0gVGVz
dFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUgPwogICAgICAgICAgICAgICAgICAgICAgICAgIjEg
ZmF0YWwgZmFpbHVyZSIgOgogICAgICAgICAgICAgICAgICAgICAgICAgIjEgbm9uLWZhdGFsIGZh
aWx1cmUiKTsKICAgTWVzc2FnZSBtc2c7CkBAIC01OTQsMjMgKzY5MSwyMSBAQCBBc3NlcnRpb25S
ZXN1bHQgSGFzT25lRmFpbHVyZShjb25zdCBjaGFyKiAvKiByZXN1bHRzX2V4cHIgKi8sCiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7CiAgICAgICBtc2cgPDwg
IlxuIiA8PCByZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KGkpOwogICAgIH0KLSAgICByZXR1cm4g
QXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwg
bXNnOwogICB9CiAKICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIHIgPSByZXN1bHRzLkdldFRlc3RQ
YXJ0UmVzdWx0KDApOwogICBpZiAoci50eXBlKCkgIT0gdHlwZSkgewotICAgIG1zZyA8PCAiRXhw
ZWN0ZWQ6ICIgPDwgZXhwZWN0ZWQgPDwgIlxuIgotICAgICAgICA8PCAiICBBY3R1YWw6XG4iCi0g
ICAgICAgIDw8IHI7Ci0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgICByZXR1
cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJFeHBlY3RlZDogIiA8PCBleHBlY3RlZCA8PCAiXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiICBBY3R1YWw6XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCByOwogICB9CiAKLSAgaWYgKHN0cnN0cihyLm1lc3Nh
Z2UoKSwgc3Vic3RyKSA9PSBOVUxMKSB7Ci0gICAgbXNnIDw8ICJFeHBlY3RlZDogIiA8PCBleHBl
Y3RlZCA8PCAiIGNvbnRhaW5pbmcgXCIiCi0gICAgICAgIDw8IHN1YnN0ciA8PCAiXCJcbiIKLSAg
ICAgICAgPDwgIiAgQWN0dWFsOlxuIgotICAgICAgICA8PCByOwotICAgIHJldHVybiBBc3NlcnRp
b25GYWlsdXJlKG1zZyk7CisgIGlmIChzdHJzdHIoci5tZXNzYWdlKCksIHN1YnN0ci5jX3N0cigp
KSA9PSBOVUxMKSB7CisgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiRXhwZWN0ZWQ6
ICIgPDwgZXhwZWN0ZWQgPDwgIiBjb250YWluaW5nIFwiIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgc3Vic3RyIDw8ICJcIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIiAgQWN0dWFsOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcjsK
ICAgfQogCiAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CkBAIC02MTksMjAgKzcxNCwxNyBA
QCBBc3NlcnRpb25SZXN1bHQgSGFzT25lRmFpbHVyZShjb25zdCBjaGFyKiAvKiByZXN1bHRzX2V4
cHIgKi8sCiAvLyBUaGUgY29uc3RydWN0b3Igb2YgU2luZ2xlRmFpbHVyZUNoZWNrZXIgcmVtZW1i
ZXJzIHdoZXJlIHRvIGxvb2sgdXAKIC8vIHRlc3QgcGFydCByZXN1bHRzLCB3aGF0IHR5cGUgb2Yg
ZmFpbHVyZSB3ZSBleHBlY3QsIGFuZCB3aGF0CiAvLyBzdWJzdHJpbmcgdGhlIGZhaWx1cmUgbWVz
c2FnZSBzaG91bGQgY29udGFpbi4KLVNpbmdsZUZhaWx1cmVDaGVja2VyOjogU2luZ2xlRmFpbHVy
ZUNoZWNrZXIoCi0gICAgY29uc3QgVGVzdFBhcnRSZXN1bHRBcnJheSogcmVzdWx0cywKLSAgICBU
ZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlLAotICAgIGNvbnN0IGNoYXIqIHN1YnN0cikKLSAgICA6
IHJlc3VsdHNfKHJlc3VsdHMpLAotICAgICAgdHlwZV8odHlwZSksCi0gICAgICBzdWJzdHJfKHN1
YnN0cikge30KK1NpbmdsZUZhaWx1cmVDaGVja2VyOjpTaW5nbGVGYWlsdXJlQ2hlY2tlcihjb25z
dCBUZXN0UGFydFJlc3VsdEFycmF5KiByZXN1bHRzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN1YnN0
cikKKyAgICA6IHJlc3VsdHNfKHJlc3VsdHMpLCB0eXBlXyh0eXBlKSwgc3Vic3RyXyhzdWJzdHIp
IHt9CiAKIC8vIFRoZSBkZXN0cnVjdG9yIG9mIFNpbmdsZUZhaWx1cmVDaGVja2VyIHZlcmlmaWVz
IHRoYXQgdGhlIGdpdmVuCiAvLyBUZXN0UGFydFJlc3VsdEFycmF5IGNvbnRhaW5zIGV4YWN0bHkg
b25lIGZhaWx1cmUgdGhhdCBoYXMgdGhlIGdpdmVuCiAvLyB0eXBlIGFuZCBjb250YWlucyB0aGUg
Z2l2ZW4gc3Vic3RyaW5nLiAgSWYgdGhhdCdzIG5vdCB0aGUgY2FzZSwgYQogLy8gbm9uLWZhdGFs
IGZhaWx1cmUgd2lsbCBiZSBnZW5lcmF0ZWQuCiBTaW5nbGVGYWlsdXJlQ2hlY2tlcjo6flNpbmds
ZUZhaWx1cmVDaGVja2VyKCkgewotICBFWFBFQ1RfUFJFRF9GT1JNQVQzKEhhc09uZUZhaWx1cmUs
ICpyZXN1bHRzXywgdHlwZV8sIHN1YnN0cl8uY19zdHIoKSk7CisgIEVYUEVDVF9QUkVEX0ZPUk1B
VDMoSGFzT25lRmFpbHVyZSwgKnJlc3VsdHNfLCB0eXBlXywgc3Vic3RyXyk7CiB9CiAKIERlZmF1
bHRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpEZWZhdWx0R2xvYmFsVGVzdFBhcnRSZXN1
bHRSZXBvcnRlcigKQEAgLTcwOSwxMSArODAxLDIyIEBAIGludCBVbml0VGVzdEltcGw6OmZhaWxl
ZF90ZXN0X2NvdW50KCkgY29uc3QgewogICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0ZXN0
X2Nhc2VzXywgJlRlc3RDYXNlOjpmYWlsZWRfdGVzdF9jb3VudCk7CiB9CiAKKy8vIEdldHMgdGhl
IG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhN
TCByZXBvcnQuCitpbnQgVW5pdFRlc3RJbXBsOjpyZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291
bnQoKSBjb25zdCB7CisgIHJldHVybiBTdW1PdmVyVGVzdENhc2VMaXN0KHRlc3RfY2FzZXNfLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmVGVzdENhc2U6OnJlcG9ydGFibGVfZGlzYWJs
ZWRfdGVzdF9jb3VudCk7Cit9CisKIC8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0
cy4KIGludCBVbml0VGVzdEltcGw6OmRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7CiAgIHJl
dHVybiBTdW1PdmVyVGVzdENhc2VMaXN0KHRlc3RfY2FzZXNfLCAmVGVzdENhc2U6OmRpc2FibGVk
X3Rlc3RfY291bnQpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJp
bnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KK2ludCBVbml0VGVzdEltcGw6OnJlcG9ydGFibGVfdGVz
dF9jb3VudCgpIGNvbnN0IHsKKyAgcmV0dXJuIFN1bU92ZXJUZXN0Q2FzZUxpc3QodGVzdF9jYXNl
c18sICZUZXN0Q2FzZTo6cmVwb3J0YWJsZV90ZXN0X2NvdW50KTsKK30KKwogLy8gR2V0cyB0aGUg
bnVtYmVyIG9mIGFsbCB0ZXN0cy4KIGludCBVbml0VGVzdEltcGw6OnRvdGFsX3Rlc3RfY291bnQo
KSBjb25zdCB7CiAgIHJldHVybiBTdW1PdmVyVGVzdENhc2VMaXN0KHRlc3RfY2FzZXNfLCAmVGVz
dENhc2U6OnRvdGFsX3Rlc3RfY291bnQpOwpAQCAtNzI0LDcgKzgyNyw3IEBAIGludCBVbml0VGVz
dEltcGw6OnRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3QgewogICByZXR1cm4gU3VtT3ZlclRlc3RD
YXNlTGlzdCh0ZXN0X2Nhc2VzXywgJlRlc3RDYXNlOjp0ZXN0X3RvX3J1bl9jb3VudCk7CiB9CiAK
LS8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYSBTdHJpbmcuCisvLyBS
ZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFzIGFuIHN0ZDo6c3RyaW5nLgogLy8K
IC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMgdG8gYmUgaW5jbHVkZWQgaXMg
c3BlY2lmaWVkIGJ5CiAvLyB0aGUgZ3Rlc3Rfc3RhY2tfdHJhY2VfZGVwdGggZmxhZy4gIFRoZSBz
a2lwX2NvdW50IHBhcmFtZXRlcgpAQCAtNzM0LDkgKzgzNywxMyBAQCBpbnQgVW5pdFRlc3RJbXBs
Ojp0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0IHsKIC8vIEZvciBleGFtcGxlLCBpZiBGb28oKSBj
YWxscyBCYXIoKSwgd2hpY2ggaW4gdHVybiBjYWxscwogLy8gQ3VycmVudE9zU3RhY2tUcmFjZUV4
Y2VwdFRvcCgxKSwgRm9vKCkgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKIC8vIHRyYWNlIGJ1dCBC
YXIoKSBhbmQgQ3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgpIHdvbid0LgotU3RyaW5nIFVu
aXRUZXN0SW1wbDo6Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcChpbnQgc2tpcF9jb3VudCkg
ewotICAodm9pZClza2lwX2NvdW50OwotICByZXR1cm4gU3RyaW5nKCIiKTsKK3N0ZDo6c3RyaW5n
IFVuaXRUZXN0SW1wbDo6Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcChpbnQgc2tpcF9jb3Vu
dCkgeworICByZXR1cm4gb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPkN1cnJlbnRTdGFja1RyYWNl
KAorICAgICAgc3RhdGljX2Nhc3Q8aW50PihHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSks
CisgICAgICBza2lwX2NvdW50ICsgMQorICAgICAgLy8gU2tpcHMgdGhlIHVzZXItc3BlY2lmaWVk
IG51bWJlciBvZiBmcmFtZXMgcGx1cyB0aGlzIGZ1bmN0aW9uCisgICAgICAvLyBpdHNlbGYuCisg
ICAgICApOyAgLy8gTk9MSU5UCiB9CiAKIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgdGltZSBpbiBt
aWxsaXNlY29uZHMuCkBAIC03NTEsNyArODU4LDcgQEAgVGltZUluTWlsbGlzIEdldFRpbWVJbk1p
bGxpcygpIHsKICAgU1lTVEVNVElNRSBub3dfc3lzdGltZTsKICAgRklMRVRJTUUgbm93X2ZpbGV0
aW1lOwogICBVTEFSR0VfSU5URUdFUiBub3dfaW50NjQ7Ci0gIC8vIFRPRE8oa2VudG9uQGdvb2ds
ZS5jb20pOiBTaG91bGRuJ3QgdGhpcyBqdXN0IHVzZQorICAvLyBGSVhNRTogU2hvdWxkbid0IHRo
aXMganVzdCB1c2UKICAgLy8gICBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgpPwogICBHZXRTeXN0
ZW1UaW1lKCZub3dfc3lzdGltZSk7CiAgIGlmIChTeXN0ZW1UaW1lVG9GaWxlVGltZSgmbm93X3N5
c3RpbWUsICZub3dfZmlsZXRpbWUpKSB7CkBAIC03NjQsNjUgKzg3MSwyOCBAQCBUaW1lSW5NaWxs
aXMgR2V0VGltZUluTWlsbGlzKCkgewogICByZXR1cm4gMDsKICNlbGlmIEdURVNUX09TX1dJTkRP
V1MgJiYgIUdURVNUX0hBU19HRVRUSU1FT0ZEQVlfCiAgIF9fdGltZWI2NCBub3c7Ci0jaWZkZWYg
X01TQ19WRVIKKwogICAvLyBNU1ZDIDggZGVwcmVjYXRlcyBfZnRpbWU2NCgpLCBzbyB3ZSB3YW50
IHRvIHN1cHByZXNzIHdhcm5pbmcgNDk5NgogICAvLyAoZGVwcmVjYXRlZCBmdW5jdGlvbikgdGhl
cmUuCi0gIC8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBVc2UgR2V0VGlja0NvdW50KCk/ICBP
ciB1c2UKKyAgLy8gRklYTUU6IFVzZSBHZXRUaWNrQ291bnQoKT8gIE9yIHVzZQogICAvLyAgIFN5
c3RlbVRpbWVUb0ZpbGVUaW1lKCkKLSNwcmFnbWEgd2FybmluZyhwdXNoKSAgICAgICAgICAvLyBT
YXZlcyB0aGUgY3VycmVudCB3YXJuaW5nIHN0YXRlLgotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6
NDk5NikgIC8vIFRlbXBvcmFyaWx5IGRpc2FibGVzIHdhcm5pbmcgNDk5Ni4KKyAgR1RFU1RfRElT
QUJMRV9NU0NfREVQUkVDQVRFRF9QVVNIXygpCiAgIF9mdGltZTY0KCZub3cpOwotI3ByYWdtYSB3
YXJuaW5nKHBvcCkgICAgICAgICAgIC8vIFJlc3RvcmVzIHRoZSB3YXJuaW5nIHN0YXRlLgotI2Vs
c2UKLSAgX2Z0aW1lNjQoJm5vdyk7Ci0jZW5kaWYgIC8vIF9NU0NfVkVSCisgIEdURVNUX0RJU0FC
TEVfTVNDX0RFUFJFQ0FURURfUE9QXygpCisKICAgcmV0dXJuIHN0YXRpY19jYXN0PFRpbWVJbk1p
bGxpcz4obm93LnRpbWUpICogMTAwMCArIG5vdy5taWxsaXRtOwogI2VsaWYgR1RFU1RfSEFTX0dF
VFRJTUVPRkRBWV8KICAgc3RydWN0IHRpbWV2YWwgbm93OwogICBnZXR0aW1lb2ZkYXkoJm5vdywg
TlVMTCk7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxUaW1lSW5NaWxsaXM+KG5vdy50dl9zZWMpICog
MTAwMCArIG5vdy50dl91c2VjIC8gMTAwMDsKICNlbHNlCi0jZXJyb3IgIkRvbid0IGtub3cgaG93
IHRvIGdldCB0aGUgY3VycmVudCB0aW1lIG9uIHlvdXIgc3lzdGVtLiIKKyMgZXJyb3IgIkRvbid0
IGtub3cgaG93IHRvIGdldCB0aGUgY3VycmVudCB0aW1lIG9uIHlvdXIgc3lzdGVtLiIKICNlbmRp
ZgogfQogCiAvLyBVdGlsaXRpZXMKIAotLy8gY2xhc3MgU3RyaW5nCi0KLS8vIFJldHVybnMgdGhl
IGlucHV0IGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZXMgaWYgaXQncyBub3QgTlVMTDsKLS8vIG90
aGVyd2lzZSByZXR1cm5zICIobnVsbCkiLiAgRm9yIGV4YW1wbGUsICJcIkhlbGxvXCIiIGlzIHJl
dHVybmVkCi0vLyBmb3IgaW5wdXQgIkhlbGxvIi4KLS8vCi0vLyBUaGlzIGlzIHVzZWZ1bCBmb3Ig
cHJpbnRpbmcgYSBDIHN0cmluZyBpbiB0aGUgc3ludGF4IG9mIGEgbGl0ZXJhbC4KLS8vCi0vLyBL
bm93biBpc3N1ZTogZXNjYXBlIHNlcXVlbmNlcyBhcmUgbm90IGhhbmRsZWQgeWV0LgotU3RyaW5n
IFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQoY29uc3QgY2hhciogY19zdHIpIHsKLSAgcmV0dXJu
IGNfc3RyID8gU3RyaW5nOjpGb3JtYXQoIlwiJXNcIiIsIGNfc3RyKSA6IFN0cmluZygiKG51bGwp
Iik7Ci19Ci0KLS8vIENvcGllcyBhdCBtb3N0IGxlbmd0aCBjaGFyYWN0ZXJzIGZyb20gc3RyIGlu
dG8gYSBuZXdseS1hbGxvY2F0ZWQKLS8vIHBpZWNlIG9mIG1lbW9yeSBvZiBzaXplIGxlbmd0aCsx
LiAgVGhlIG1lbW9yeSBpcyBhbGxvY2F0ZWQgd2l0aCBuZXdbXS4KLS8vIEEgdGVybWluYXRpbmcg
bnVsbCBieXRlIGlzIHdyaXR0ZW4gdG8gdGhlIG1lbW9yeSwgYW5kIGEgcG9pbnRlciB0byBpdAot
Ly8gaXMgcmV0dXJuZWQuICBJZiBzdHIgaXMgTlVMTCwgTlVMTCBpcyByZXR1cm5lZC4KLXN0YXRp
YyBjaGFyKiBDbG9uZVN0cmluZyhjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW5ndGgpIHsKLSAg
aWYgKHN0ciA9PSBOVUxMKSB7Ci0gICAgcmV0dXJuIE5VTEw7Ci0gIH0gZWxzZSB7Ci0gICAgY2hh
ciogY29uc3QgY2xvbmUgPSBuZXcgY2hhcltsZW5ndGggKyAxXTsKLSAgICBwb3NpeDo6U3RyTkNw
eShjbG9uZSwgc3RyLCBsZW5ndGgpOwotICAgIGNsb25lW2xlbmd0aF0gPSAnXDAnOwotICAgIHJl
dHVybiBjbG9uZTsKLSAgfQotfQotCi0vLyBDbG9uZXMgYSAwLXRlcm1pbmF0ZWQgQyBzdHJpbmcs
IGFsbG9jYXRpbmcgbWVtb3J5IHVzaW5nIG5ldy4gIFRoZQotLy8gY2FsbGVyIGlzIHJlc3BvbnNp
YmxlIGZvciBkZWxldGluZ1tdIHRoZSByZXR1cm4gdmFsdWUuICBSZXR1cm5zIHRoZQotLy8gY2xv
bmVkIHN0cmluZywgb3IgTlVMTCBpZiB0aGUgaW5wdXQgaXMgTlVMTC4KLWNvbnN0IGNoYXIgKiBT
dHJpbmc6OkNsb25lQ1N0cmluZyhjb25zdCBjaGFyKiBjX3N0cikgewotICByZXR1cm4gKGNfc3Ry
ID09IE5VTEwpID8KLSAgICAgICAgICAgICAgICAgICAgTlVMTCA6IENsb25lU3RyaW5nKGNfc3Ry
LCBzdHJsZW4oY19zdHIpKTsKLX0KKy8vIGNsYXNzIFN0cmluZy4KIAogI2lmIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCiAvLyBDcmVhdGVzIGEgVVRGLTE2IHdpZGUgc3RyaW5nIGZyb20gdGhlIGdp
dmVuIEFOU0kgc3RyaW5nLCBhbGxvY2F0aW5nCkBAIC04NzksMTEgKzk0OSw2IEBAIGJvb2wgU3Ry
aW5nOjpDU3RyaW5nRXF1YWxzKGNvbnN0IGNoYXIgKiBsaHMsIGNvbnN0IGNoYXIgKiByaHMpIHsK
IC8vIGVuY29kaW5nLCBhbmQgc3RyZWFtcyB0aGUgcmVzdWx0IHRvIHRoZSBnaXZlbiBNZXNzYWdl
IG9iamVjdC4KIHN0YXRpYyB2b2lkIFN0cmVhbVdpZGVDaGFyc1RvTWVzc2FnZShjb25zdCB3Y2hh
cl90KiB3c3RyLCBzaXplX3QgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE1lc3NhZ2UqIG1zZykgewotICAvLyBUT0RPKHdhbik6IGNvbnNpZGVyIGFsbG93aW5n
IGEgdGVzdGluZzo6U3RyaW5nIG9iamVjdCB0bwotICAvLyBjb250YWluICdcMCcuICBUaGlzIHdp
bGwgbWFrZSBpdCBiZWhhdmUgbW9yZSBsaWtlIHN0ZDo6c3RyaW5nLAotICAvLyBhbmQgd2lsbCBh
bGxvdyBUb1V0ZjhTdHJpbmcoKSB0byByZXR1cm4gdGhlIGNvcnJlY3QgZW5jb2RpbmcKLSAgLy8g
Zm9yICdcMCcgcy50LiB3ZSBjYW4gZ2V0IHJpZCBvZiB0aGUgY29uZGl0aW9uYWwgaGVyZSAoYW5k
IGluCi0gIC8vIHNldmVyYWwgb3RoZXIgcGxhY2VzKS4KICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
IT0gbGVuZ3RoOyApIHsgIC8vIE5PTElOVAogICAgIGlmICh3c3RyW2ldICE9IEwnXDAnKSB7CiAg
ICAgICAqbXNnIDw8IFdpZGVTdHJpbmdUb1V0Zjgod3N0ciArIGksIHN0YXRpY19jYXN0PGludD4o
bGVuZ3RoIC0gaSkpOwpAQCAtODk4LDggKzk2Myw0NSBAQCBzdGF0aWMgdm9pZCBTdHJlYW1XaWRl
Q2hhcnNUb01lc3NhZ2UoY29uc3Qgd2NoYXJfdCogd3N0ciwgc2l6ZV90IGxlbmd0aCwKIAogI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcgfHwgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5H
CiAKK3ZvaWQgU3BsaXRTdHJpbmcoY29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyLCBjaGFyIGRlbGlt
aXRlciwKKyAgICAgICAgICAgICAgICAgOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4qIGRl
c3QpIHsKKyAgOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4gcGFyc2VkOworICA6OnN0ZDo6
c3RyaW5nOjpzaXplX3R5cGUgcG9zID0gMDsKKyAgd2hpbGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6
OkFsd2F5c1RydWUoKSkgeworICAgIGNvbnN0IDo6c3RkOjpzdHJpbmc6OnNpemVfdHlwZSBjb2xv
biA9IHN0ci5maW5kKGRlbGltaXRlciwgcG9zKTsKKyAgICBpZiAoY29sb24gPT0gOjpzdGQ6OnN0
cmluZzo6bnBvcykgeworICAgICAgcGFyc2VkLnB1c2hfYmFjayhzdHIuc3Vic3RyKHBvcykpOwor
ICAgICAgYnJlYWs7CisgICAgfSBlbHNlIHsKKyAgICAgIHBhcnNlZC5wdXNoX2JhY2soc3RyLnN1
YnN0cihwb3MsIGNvbG9uIC0gcG9zKSk7CisgICAgICBwb3MgPSBjb2xvbiArIDE7CisgICAgfQor
ICB9CisgIGRlc3QtPnN3YXAocGFyc2VkKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
CiAKKy8vIENvbnN0cnVjdHMgYW4gZW1wdHkgTWVzc2FnZS4KKy8vIFdlIGFsbG9jYXRlIHRoZSBz
dHJpbmdzdHJlYW0gc2VwYXJhdGVseSBiZWNhdXNlIG90aGVyd2lzZSBlYWNoIHVzZSBvZgorLy8g
QVNTRVJUL0VYUEVDVCBpbiBhIHByb2NlZHVyZSBhZGRzIG92ZXIgMjAwIGJ5dGVzIHRvIHRoZSBw
cm9jZWR1cmUncworLy8gc3RhY2sgZnJhbWUgbGVhZGluZyB0byBodWdlIHN0YWNrIGZyYW1lcyBp
biBzb21lIGNhc2VzOyBnY2MgZG9lcyBub3QgcmV1c2UKKy8vIHRoZSBzdGFjayBzcGFjZS4KK01l
c3NhZ2U6Ok1lc3NhZ2UoKSA6IHNzXyhuZXcgOjpzdGQ6OnN0cmluZ3N0cmVhbSkgeworICAvLyBC
eSBkZWZhdWx0LCB3ZSB3YW50IHRoZXJlIHRvIGJlIGVub3VnaCBwcmVjaXNpb24gd2hlbiBwcmlu
dGluZworICAvLyBhIGRvdWJsZSB0byBhIE1lc3NhZ2UuCisgICpzc18gPDwgc3RkOjpzZXRwcmVj
aXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpkaWdpdHMxMCArIDIpOworfQorCisv
LyBUaGVzZSB0d28gb3ZlcmxvYWRzIGFsbG93IHN0cmVhbWluZyBhIHdpZGUgQyBzdHJpbmcgdG8g
YSBNZXNzYWdlCisvLyB1c2luZyB0aGUgVVRGLTggZW5jb2RpbmcuCitNZXNzYWdlJiBNZXNzYWdl
OjpvcGVyYXRvciA8PChjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKSB7CisgIHJldHVybiAqdGhp
cyA8PCBpbnRlcm5hbDo6U3RyaW5nOjpTaG93V2lkZUNTdHJpbmcod2lkZV9jX3N0cik7Cit9CitN
ZXNzYWdlJiBNZXNzYWdlOjpvcGVyYXRvciA8PCh3Y2hhcl90KiB3aWRlX2Nfc3RyKSB7CisgIHJl
dHVybiAqdGhpcyA8PCBpbnRlcm5hbDo6U3RyaW5nOjpTaG93V2lkZUNTdHJpbmcod2lkZV9jX3N0
cik7Cit9CisKICNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKIC8vIENvbnZlcnRzIHRoZSBnaXZl
biB3aWRlIHN0cmluZyB0byBhIG5hcnJvdyBzdHJpbmcgdXNpbmcgdGhlIFVURi04CiAvLyBlbmNv
ZGluZywgYW5kIHN0cmVhbXMgdGhlIHJlc3VsdCB0byB0aGlzIE1lc3NhZ2Ugb2JqZWN0LgpAQCAt
OTE4LDU1ICsxMDIwLDI2IEBAIE1lc3NhZ2UmIE1lc3NhZ2U6Om9wZXJhdG9yIDw8KGNvbnN0IDo6
d3N0cmluZyYgd3N0cikgewogfQogI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcK
IAotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8gRm9ybWF0cyBhIHZhbHVlIHRvIGJlIHVzZWQg
aW4gYSBmYWlsdXJlIG1lc3NhZ2UuCi0KLS8vIEZvciBhIGNoYXIgdmFsdWUsIHdlIHByaW50IGl0
IGFzIGEgQysrIGNoYXIgbGl0ZXJhbCBhbmQgYXMgYW4KLS8vIHVuc2lnbmVkIGludGVnZXIgKGJv
dGggaW4gZGVjaW1hbCBhbmQgaW4gaGV4YWRlY2ltYWwpLgotU3RyaW5nIEZvcm1hdEZvckZhaWx1
cmVNZXNzYWdlKGNoYXIgY2gpIHsKLSAgY29uc3QgdW5zaWduZWQgaW50IGNoX2FzX3VpbnQgPSBj
aDsKLSAgLy8gQSBTdHJpbmcgb2JqZWN0IGNhbm5vdCBjb250YWluICdcMCcsIHNvIHdlIHByaW50
ICJcXDAiIHdoZW4gY2ggaXMKLSAgLy8gJ1wwJy4KLSAgcmV0dXJuIFN0cmluZzo6Rm9ybWF0KCIn
JXMnICgldSwgMHglWCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgY2ggPyBTdHJpbmc6OkZv
cm1hdCgiJWMiLCBjaCkuY19zdHIoKSA6ICJcXDAiLAotICAgICAgICAgICAgICAgICAgICAgICAg
Y2hfYXNfdWludCwgY2hfYXNfdWludCk7Ci19Ci0KLS8vIEZvciBhIHdjaGFyX3QgdmFsdWUsIHdl
IHByaW50IGl0IGFzIGEgQysrIHdjaGFyX3QgbGl0ZXJhbCBhbmQgYXMgYW4KLS8vIHVuc2lnbmVk
IGludGVnZXIgKGJvdGggaW4gZGVjaW1hbCBhbmQgaW4gaGV4aWRlY2ltYWwpLgotU3RyaW5nIEZv
cm1hdEZvckZhaWx1cmVNZXNzYWdlKHdjaGFyX3Qgd2NoYXIpIHsKLSAgLy8gVGhlIEMrKyBzdGFu
ZGFyZCBkb2Vzbid0IHNwZWNpZnkgdGhlIGV4YWN0IHNpemUgb2YgdGhlIHdjaGFyX3QKLSAgLy8g
dHlwZS4gIEl0IGp1c3Qgc2F5cyB0aGF0IGl0IHNoYWxsIGhhdmUgdGhlIHNhbWUgc2l6ZSBhcyBh
bm90aGVyCi0gIC8vIGludGVncmFsIHR5cGUsIGNhbGxlZCBpdHMgdW5kZXJseWluZyB0eXBlLgot
ICAvLwotICAvLyBUaGVyZWZvcmUsIGluIG9yZGVyIHRvIHByaW50IGEgd2NoYXJfdCB2YWx1ZSBp
biB0aGUgbnVtZXJpYyBmb3JtLAotICAvLyB3ZSBmaXJzdCBjb252ZXJ0IGl0IHRvIHRoZSBsYXJn
ZXN0IGludGVncmFsIHR5cGUgKFVJbnQ2NCkgYW5kCi0gIC8vIHRoZW4gcHJpbnQgdGhlIGNvbnZl
cnRlZCB2YWx1ZS4KLSAgLy8KLSAgLy8gV2UgdXNlIHN0cmVhbWluZyB0byBwcmludCB0aGUgdmFs
dWUgYXMgIiVsbHUiIGRvZXNuJ3Qgd29yawotICAvLyBjb3JyZWN0bHkgd2l0aCBNU1ZDIDcuMS4K
LSAgY29uc3QgVUludDY0IHdjaGFyX2FzX3VpbnQ2NCA9IHdjaGFyOwotICBNZXNzYWdlIG1zZzsK
LSAgLy8gQSBTdHJpbmcgb2JqZWN0IGNhbm5vdCBjb250YWluICdcMCcsIHNvIHdlIHByaW50ICJc
XDAiIHdoZW4gd2NoYXIgaXMKLSAgLy8gTCdcMCcuCi0gIGNoYXIgYnVmZmVyWzMyXTsgIC8vIENv
ZGVQb2ludFRvVXRmOCByZXF1aXJlcyBhIGJ1ZmZlciB0aGF0IGJpZy4KLSAgbXNnIDw8ICJMJyIK
LSAgICAgIDw8ICh3Y2hhciA/IENvZGVQb2ludFRvVXRmOChzdGF0aWNfY2FzdDxVSW50MzI+KHdj
aGFyKSwgYnVmZmVyKSA6ICJcXDAiKQotICAgICAgPDwgIicgKCIgPDwgd2NoYXJfYXNfdWludDY0
IDw8ICIsIDB4IiA8PCA6OnN0ZDo6c2V0YmFzZSgxNikKLSAgICAgIDw8IHdjaGFyX2FzX3VpbnQ2
NCA8PCAiKSI7Ci0gIHJldHVybiBtc2cuR2V0U3RyaW5nKCk7CisvLyBHZXRzIHRoZSB0ZXh0IHN0
cmVhbWVkIHRvIHRoaXMgb2JqZWN0IHNvIGZhciBhcyBhbiBzdGQ6OnN0cmluZy4KKy8vIEVhY2gg
J1wwJyBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlciBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgorc3Rk
OjpzdHJpbmcgTWVzc2FnZTo6R2V0U3RyaW5nKCkgY29uc3QgeworICByZXR1cm4gaW50ZXJuYWw6
OlN0cmluZ1N0cmVhbVRvU3RyaW5nKHNzXy5nZXQoKSk7CiB9CiAKLX0gIC8vIG5hbWVzcGFjZSBp
bnRlcm5hbAotCiAvLyBBc3NlcnRpb25SZXN1bHQgY29uc3RydWN0b3JzLgogLy8gVXNlZCBpbiBF
WFBFQ1RfVFJVRS9GQUxTRShhc3NlcnRpb25fcmVzdWx0KS4KIEFzc2VydGlvblJlc3VsdDo6QXNz
ZXJ0aW9uUmVzdWx0KGNvbnN0IEFzc2VydGlvblJlc3VsdCYgb3RoZXIpCiAgICAgOiBzdWNjZXNz
XyhvdGhlci5zdWNjZXNzXyksCiAgICAgICBtZXNzYWdlXyhvdGhlci5tZXNzYWdlXy5nZXQoKSAh
PSBOVUxMID8KLSAgICAgICAgICAgICAgIG5ldyBpbnRlcm5hbDo6U3RyaW5nKCpvdGhlci5tZXNz
YWdlXykgOgotICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50ZXJuYWw6OlN0cmluZyo+KE5V
TEwpKSB7CisgICAgICAgICAgICAgICBuZXcgOjpzdGQ6OnN0cmluZygqb3RoZXIubWVzc2FnZV8p
IDoKKyAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PCA6OnN0ZDo6c3RyaW5nKj4oTlVMTCkpIHsK
K30KKworLy8gU3dhcHMgdHdvIEFzc2VydGlvblJlc3VsdHMuCit2b2lkIEFzc2VydGlvblJlc3Vs
dDo6c3dhcChBc3NlcnRpb25SZXN1bHQmIG90aGVyKSB7CisgIHVzaW5nIHN0ZDo6c3dhcDsKKyAg
c3dhcChzdWNjZXNzXywgb3RoZXIuc3VjY2Vzc18pOworICBzd2FwKG1lc3NhZ2VfLCBvdGhlci5t
ZXNzYWdlXyk7CiB9CiAKIC8vIFJldHVybnMgdGhlIGFzc2VydGlvbidzIG5lZ2F0aW9uLiBVc2Vk
IHdpdGggRVhQRUNUL0FTU0VSVF9GQUxTRS4KQEAgLTk5NSw2ICsxMDY4LDI3NiBAQCBBc3NlcnRp
b25SZXN1bHQgQXNzZXJ0aW9uRmFpbHVyZShjb25zdCBNZXNzYWdlJiBtZXNzYWdlKSB7CiAKIG5h
bWVzcGFjZSBpbnRlcm5hbCB7CiAKK25hbWVzcGFjZSBlZGl0X2Rpc3RhbmNlIHsKK3N0ZDo6dmVj
dG9yPEVkaXRUeXBlPiBDYWxjdWxhdGVPcHRpbWFsRWRpdHMoY29uc3Qgc3RkOjp2ZWN0b3I8c2l6
ZV90PiYgbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8c2l6ZV90PiYgcmlnaHQpIHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp2
ZWN0b3I8ZG91YmxlPiA+IGNvc3RzKAorICAgICAgbGVmdC5zaXplKCkgKyAxLCBzdGQ6OnZlY3Rv
cjxkb3VibGU+KHJpZ2h0LnNpemUoKSArIDEpKTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8
RWRpdFR5cGU+ID4gYmVzdF9tb3ZlKAorICAgICAgbGVmdC5zaXplKCkgKyAxLCBzdGQ6OnZlY3Rv
cjxFZGl0VHlwZT4ocmlnaHQuc2l6ZSgpICsgMSkpOworCisgIC8vIFBvcHVsYXRlIGZvciBlbXB0
eSByaWdodC4KKyAgZm9yIChzaXplX3QgbF9pID0gMDsgbF9pIDwgY29zdHMuc2l6ZSgpOyArK2xf
aSkgeworICAgIGNvc3RzW2xfaV1bMF0gPSBzdGF0aWNfY2FzdDxkb3VibGU+KGxfaSk7CisgICAg
YmVzdF9tb3ZlW2xfaV1bMF0gPSBrUmVtb3ZlOworICB9CisgIC8vIFBvcHVsYXRlIGZvciBlbXB0
eSBsZWZ0LgorICBmb3IgKHNpemVfdCByX2kgPSAxOyByX2kgPCBjb3N0c1swXS5zaXplKCk7ICsr
cl9pKSB7CisgICAgY29zdHNbMF1bcl9pXSA9IHN0YXRpY19jYXN0PGRvdWJsZT4ocl9pKTsKKyAg
ICBiZXN0X21vdmVbMF1bcl9pXSA9IGtBZGQ7CisgIH0KKworICBmb3IgKHNpemVfdCBsX2kgPSAw
OyBsX2kgPCBsZWZ0LnNpemUoKTsgKytsX2kpIHsKKyAgICBmb3IgKHNpemVfdCByX2kgPSAwOyBy
X2kgPCByaWdodC5zaXplKCk7ICsrcl9pKSB7CisgICAgICBpZiAobGVmdFtsX2ldID09IHJpZ2h0
W3JfaV0pIHsKKyAgICAgICAgLy8gRm91bmQgYSBtYXRjaC4gQ29uc3VtZSBpdC4KKyAgICAgICAg
Y29zdHNbbF9pICsgMV1bcl9pICsgMV0gPSBjb3N0c1tsX2ldW3JfaV07CisgICAgICAgIGJlc3Rf
bW92ZVtsX2kgKyAxXVtyX2kgKyAxXSA9IGtNYXRjaDsKKyAgICAgICAgY29udGludWU7CisgICAg
ICB9CisKKyAgICAgIGNvbnN0IGRvdWJsZSBhZGQgPSBjb3N0c1tsX2kgKyAxXVtyX2ldOworICAg
ICAgY29uc3QgZG91YmxlIHJlbW92ZSA9IGNvc3RzW2xfaV1bcl9pICsgMV07CisgICAgICBjb25z
dCBkb3VibGUgcmVwbGFjZSA9IGNvc3RzW2xfaV1bcl9pXTsKKyAgICAgIGlmIChhZGQgPCByZW1v
dmUgJiYgYWRkIDwgcmVwbGFjZSkgeworICAgICAgICBjb3N0c1tsX2kgKyAxXVtyX2kgKyAxXSA9
IGFkZCArIDE7CisgICAgICAgIGJlc3RfbW92ZVtsX2kgKyAxXVtyX2kgKyAxXSA9IGtBZGQ7Cisg
ICAgICB9IGVsc2UgaWYgKHJlbW92ZSA8IGFkZCAmJiByZW1vdmUgPCByZXBsYWNlKSB7CisgICAg
ICAgIGNvc3RzW2xfaSArIDFdW3JfaSArIDFdID0gcmVtb3ZlICsgMTsKKyAgICAgICAgYmVzdF9t
b3ZlW2xfaSArIDFdW3JfaSArIDFdID0ga1JlbW92ZTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIFdlIG1ha2UgcmVwbGFjZSBhIGxpdHRsZSBtb3JlIGV4cGVuc2l2ZSB0aGFuIGFkZC9yZW1v
dmUgdG8gbG93ZXIKKyAgICAgICAgLy8gdGhlaXIgcHJpb3JpdHkuCisgICAgICAgIGNvc3RzW2xf
aSArIDFdW3JfaSArIDFdID0gcmVwbGFjZSArIDEuMDAwMDE7CisgICAgICAgIGJlc3RfbW92ZVts
X2kgKyAxXVtyX2kgKyAxXSA9IGtSZXBsYWNlOworICAgICAgfQorICAgIH0KKyAgfQorCisgIC8v
IFJlY29uc3RydWN0IHRoZSBiZXN0IHBhdGguIFdlIGRvIGl0IGluIHJldmVyc2Ugb3JkZXIuCisg
IHN0ZDo6dmVjdG9yPEVkaXRUeXBlPiBiZXN0X3BhdGg7CisgIGZvciAoc2l6ZV90IGxfaSA9IGxl
ZnQuc2l6ZSgpLCByX2kgPSByaWdodC5zaXplKCk7IGxfaSA+IDAgfHwgcl9pID4gMDspIHsKKyAg
ICBFZGl0VHlwZSBtb3ZlID0gYmVzdF9tb3ZlW2xfaV1bcl9pXTsKKyAgICBiZXN0X3BhdGgucHVz
aF9iYWNrKG1vdmUpOworICAgIGxfaSAtPSBtb3ZlICE9IGtBZGQ7CisgICAgcl9pIC09IG1vdmUg
IT0ga1JlbW92ZTsKKyAgfQorICBzdGQ6OnJldmVyc2UoYmVzdF9wYXRoLmJlZ2luKCksIGJlc3Rf
cGF0aC5lbmQoKSk7CisgIHJldHVybiBiZXN0X3BhdGg7Cit9CisKK25hbWVzcGFjZSB7CisKKy8v
IEhlbHBlciBjbGFzcyB0byBjb252ZXJ0IHN0cmluZyBpbnRvIGlkcyB3aXRoIGRlZHVwbGljYXRp
b24uCitjbGFzcyBJbnRlcm5hbFN0cmluZ3MgeworIHB1YmxpYzoKKyAgc2l6ZV90IEdldElkKGNv
bnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKKyAgICBJZE1hcDo6aXRlcmF0b3IgaXQgPSBpZHNfLmZp
bmQoc3RyKTsKKyAgICBpZiAoaXQgIT0gaWRzXy5lbmQoKSkgcmV0dXJuIGl0LT5zZWNvbmQ7Cisg
ICAgc2l6ZV90IGlkID0gaWRzXy5zaXplKCk7CisgICAgcmV0dXJuIGlkc19bc3RyXSA9IGlkOwor
ICB9CisKKyBwcml2YXRlOgorICB0eXBlZGVmIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzaXplX3Q+
IElkTWFwOworICBJZE1hcCBpZHNfOworfTsKKworfSAgLy8gbmFtZXNwYWNlCisKK3N0ZDo6dmVj
dG9yPEVkaXRUeXBlPiBDYWxjdWxhdGVPcHRpbWFsRWRpdHMoCisgICAgY29uc3Qgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+JiBsZWZ0LAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
PiYgcmlnaHQpIHsKKyAgc3RkOjp2ZWN0b3I8c2l6ZV90PiBsZWZ0X2lkcywgcmlnaHRfaWRzOwor
ICB7CisgICAgSW50ZXJuYWxTdHJpbmdzIGludGVybl90YWJsZTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGxlZnQuc2l6ZSgpOyArK2kpIHsKKyAgICAgIGxlZnRfaWRzLnB1c2hfYmFjayhp
bnRlcm5fdGFibGUuR2V0SWQobGVmdFtpXSkpOworICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHJpZ2h0LnNpemUoKTsgKytpKSB7CisgICAgICByaWdodF9pZHMucHVzaF9iYWNrKGlu
dGVybl90YWJsZS5HZXRJZChyaWdodFtpXSkpOworICAgIH0KKyAgfQorICByZXR1cm4gQ2FsY3Vs
YXRlT3B0aW1hbEVkaXRzKGxlZnRfaWRzLCByaWdodF9pZHMpOworfQorCituYW1lc3BhY2Ugewor
CisvLyBIZWxwZXIgY2xhc3MgdGhhdCBob2xkcyB0aGUgc3RhdGUgZm9yIG9uZSBodW5rIGFuZCBw
cmludHMgaXQgb3V0IHRvIHRoZQorLy8gc3RyZWFtLgorLy8gSXQgcmVvcmRlcnMgYWRkcy9yZW1v
dmVzIHdoZW4gcG9zc2libGUgdG8gZ3JvdXAgYWxsIHJlbW92ZXMgYmVmb3JlIGFsbAorLy8gYWRk
cy4gSXQgYWxzbyBhZGRzIHRoZSBodW5rIGhlYWRlciBiZWZvcmUgcHJpbnRpbnQgaW50byB0aGUg
c3RyZWFtLgorY2xhc3MgSHVuayB7CisgcHVibGljOgorICBIdW5rKHNpemVfdCBsZWZ0X3N0YXJ0
LCBzaXplX3QgcmlnaHRfc3RhcnQpCisgICAgICA6IGxlZnRfc3RhcnRfKGxlZnRfc3RhcnQpLAor
ICAgICAgICByaWdodF9zdGFydF8ocmlnaHRfc3RhcnQpLAorICAgICAgICBhZGRzXygpLAorICAg
ICAgICByZW1vdmVzXygpLAorICAgICAgICBjb21tb25fKCkge30KKworICB2b2lkIFB1c2hMaW5l
KGNoYXIgZWRpdCwgY29uc3QgY2hhciogbGluZSkgeworICAgIHN3aXRjaCAoZWRpdCkgeworICAg
ICAgY2FzZSAnICc6CisgICAgICAgICsrY29tbW9uXzsKKyAgICAgICAgRmx1c2hFZGl0cygpOwor
ICAgICAgICBodW5rXy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoJyAnLCBsaW5lKSk7CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSAnLSc6CisgICAgICAgICsrcmVtb3Zlc187CisgICAgICAg
IGh1bmtfcmVtb3Zlc18ucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKCctJywgbGluZSkpOworICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgJysnOgorICAgICAgICArK2FkZHNfOworICAgICAgICBo
dW5rX2FkZHNfLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcignKycsIGxpbmUpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICB9CisKKyAgdm9pZCBQcmludFRvKHN0ZDo6b3N0cmVhbSogb3MpIHsK
KyAgICBQcmludEhlYWRlcihvcyk7CisgICAgRmx1c2hFZGl0cygpOworICAgIGZvciAoc3RkOjps
aXN0PHN0ZDo6cGFpcjxjaGFyLCBjb25zdCBjaGFyKj4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPQor
ICAgICAgICAgICAgIGh1bmtfLmJlZ2luKCk7CisgICAgICAgICBpdCAhPSBodW5rXy5lbmQoKTsg
KytpdCkgeworICAgICAgKm9zIDw8IGl0LT5maXJzdCA8PCBpdC0+c2Vjb25kIDw8ICJcbiI7Cisg
ICAgfQorICB9CisKKyAgYm9vbCBoYXNfZWRpdHMoKSBjb25zdCB7IHJldHVybiBhZGRzXyB8fCBy
ZW1vdmVzXzsgfQorCisgcHJpdmF0ZToKKyAgdm9pZCBGbHVzaEVkaXRzKCkgeworICAgIGh1bmtf
LnNwbGljZShodW5rXy5lbmQoKSwgaHVua19yZW1vdmVzXyk7CisgICAgaHVua18uc3BsaWNlKGh1
bmtfLmVuZCgpLCBodW5rX2FkZHNfKTsKKyAgfQorCisgIC8vIFByaW50IGEgdW5pZmllZCBkaWZm
IGhlYWRlciBmb3Igb25lIGh1bmsuCisgIC8vIFRoZSBmb3JtYXQgaXMKKyAgLy8gICAiQEAgLTxs
ZWZ0X3N0YXJ0Piw8bGVmdF9sZW5ndGg+ICs8cmlnaHRfc3RhcnQ+LDxyaWdodF9sZW5ndGg+IEBA
IgorICAvLyB3aGVyZSB0aGUgbGVmdC9yaWdodCBwYXJ0cyBhcmUgb21pdHRlZCBpZiB1bm5lY2Vz
c2FyeS4KKyAgdm9pZCBQcmludEhlYWRlcihzdGQ6Om9zdHJlYW0qIHNzKSBjb25zdCB7CisgICAg
KnNzIDw8ICJAQCAiOworICAgIGlmIChyZW1vdmVzXykgeworICAgICAgKnNzIDw8ICItIiA8PCBs
ZWZ0X3N0YXJ0XyA8PCAiLCIgPDwgKHJlbW92ZXNfICsgY29tbW9uXyk7CisgICAgfQorICAgIGlm
IChyZW1vdmVzXyAmJiBhZGRzXykgeworICAgICAgKnNzIDw8ICIgIjsKKyAgICB9CisgICAgaWYg
KGFkZHNfKSB7CisgICAgICAqc3MgPDwgIisiIDw8IHJpZ2h0X3N0YXJ0XyA8PCAiLCIgPDwgKGFk
ZHNfICsgY29tbW9uXyk7CisgICAgfQorICAgICpzcyA8PCAiIEBAXG4iOworICB9CisKKyAgc2l6
ZV90IGxlZnRfc3RhcnRfLCByaWdodF9zdGFydF87CisgIHNpemVfdCBhZGRzXywgcmVtb3Zlc18s
IGNvbW1vbl87CisgIHN0ZDo6bGlzdDxzdGQ6OnBhaXI8Y2hhciwgY29uc3QgY2hhcio+ID4gaHVu
a18sIGh1bmtfYWRkc18sIGh1bmtfcmVtb3Zlc187Cit9OworCit9ICAvLyBuYW1lc3BhY2UKKwor
Ly8gQ3JlYXRlIGEgbGlzdCBvZiBkaWZmIGh1bmtzIGluIFVuaWZpZWQgZGlmZiBmb3JtYXQuCisv
LyBFYWNoIGh1bmsgaGFzIGEgaGVhZGVyIGdlbmVyYXRlZCBieSBQcmludEhlYWRlciBhYm92ZSBw
bHVzIGEgYm9keSB3aXRoCisvLyBsaW5lcyBwcmVmaXhlZCB3aXRoICcgJyBmb3Igbm8gY2hhbmdl
LCAnLScgZm9yIGRlbGV0aW9uIGFuZCAnKycgZm9yCisvLyBhZGRpdGlvbi4KKy8vICdjb250ZXh0
JyByZXByZXNlbnRzIHRoZSBkZXNpcmVkIHVuY2hhbmdlZCBwcmVmaXgvc3VmZml4IGFyb3VuZCB0
aGUgZGlmZi4KKy8vIElmIHR3byBodW5rcyBhcmUgY2xvc2UgZW5vdWdoIHRoYXQgdGhlaXIgY29u
dGV4dHMgb3ZlcmxhcCwgdGhlbiB0aGV5IGFyZQorLy8gam9pbmVkIGludG8gb25lIGh1bmsuCitz
dGQ6OnN0cmluZyBDcmVhdGVVbmlmaWVkRGlmZihjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4mIGxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4mIHJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGNvbnRleHQpIHsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+IGVkaXRzID0gQ2Fs
Y3VsYXRlT3B0aW1hbEVkaXRzKGxlZnQsIHJpZ2h0KTsKKworICBzaXplX3QgbF9pID0gMCwgcl9p
ID0gMCwgZWRpdF9pID0gMDsKKyAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIHdoaWxlIChlZGl0
X2kgPCBlZGl0cy5zaXplKCkpIHsKKyAgICAvLyBGaW5kIGZpcnN0IGVkaXQuCisgICAgd2hpbGUg
KGVkaXRfaSA8IGVkaXRzLnNpemUoKSAmJiBlZGl0c1tlZGl0X2ldID09IGtNYXRjaCkgeworICAg
ICAgKytsX2k7CisgICAgICArK3JfaTsKKyAgICAgICsrZWRpdF9pOworICAgIH0KKworICAgIC8v
IEZpbmQgdGhlIGZpcnN0IGxpbmUgdG8gaW5jbHVkZSBpbiB0aGUgaHVuay4KKyAgICBjb25zdCBz
aXplX3QgcHJlZml4X2NvbnRleHQgPSBzdGQ6Om1pbihsX2ksIGNvbnRleHQpOworICAgIEh1bmsg
aHVuayhsX2kgLSBwcmVmaXhfY29udGV4dCArIDEsIHJfaSAtIHByZWZpeF9jb250ZXh0ICsgMSk7
CisgICAgZm9yIChzaXplX3QgaSA9IHByZWZpeF9jb250ZXh0OyBpID4gMDsgLS1pKSB7CisgICAg
ICBodW5rLlB1c2hMaW5lKCcgJywgbGVmdFtsX2kgLSBpXS5jX3N0cigpKTsKKyAgICB9CisKKyAg
ICAvLyBJdGVyYXRlIHRoZSBlZGl0cyB1bnRpbCB3ZSBmb3VuZCBlbm91Z2ggc3VmZml4IGZvciB0
aGUgaHVuayBvciB0aGUgaW5wdXQKKyAgICAvLyBpcyBvdmVyLgorICAgIHNpemVfdCBuX3N1ZmZp
eCA9IDA7CisgICAgZm9yICg7IGVkaXRfaSA8IGVkaXRzLnNpemUoKTsgKytlZGl0X2kpIHsKKyAg
ICAgIGlmIChuX3N1ZmZpeCA+PSBjb250ZXh0KSB7CisgICAgICAgIC8vIENvbnRpbnVlIG9ubHkg
aWYgdGhlIG5leHQgaHVuayBpcyB2ZXJ5IGNsb3NlLgorICAgICAgICBzdGQ6OnZlY3RvcjxFZGl0
VHlwZT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZWRpdHMuYmVnaW4oKSArIGVkaXRfaTsKKyAgICAg
ICAgd2hpbGUgKGl0ICE9IGVkaXRzLmVuZCgpICYmICppdCA9PSBrTWF0Y2gpICsraXQ7CisgICAg
ICAgIGlmIChpdCA9PSBlZGl0cy5lbmQoKSB8fCAoaXQgLSBlZGl0cy5iZWdpbigpKSAtIGVkaXRf
aSA+PSBjb250ZXh0KSB7CisgICAgICAgICAgLy8gVGhlcmUgaXMgbm8gbmV4dCBlZGl0IG9yIGl0
IGlzIHRvbyBmYXIgYXdheS4KKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgfQor
CisgICAgICBFZGl0VHlwZSBlZGl0ID0gZWRpdHNbZWRpdF9pXTsKKyAgICAgIC8vIFJlc2V0IGNv
dW50IHdoZW4gYSBub24gbWF0Y2ggaXMgZm91bmQuCisgICAgICBuX3N1ZmZpeCA9IGVkaXQgPT0g
a01hdGNoID8gbl9zdWZmaXggKyAxIDogMDsKKworICAgICAgaWYgKGVkaXQgPT0ga01hdGNoIHx8
IGVkaXQgPT0ga1JlbW92ZSB8fCBlZGl0ID09IGtSZXBsYWNlKSB7CisgICAgICAgIGh1bmsuUHVz
aExpbmUoZWRpdCA9PSBrTWF0Y2ggPyAnICcgOiAnLScsIGxlZnRbbF9pXS5jX3N0cigpKTsKKyAg
ICAgIH0KKyAgICAgIGlmIChlZGl0ID09IGtBZGQgfHwgZWRpdCA9PSBrUmVwbGFjZSkgeworICAg
ICAgICBodW5rLlB1c2hMaW5lKCcrJywgcmlnaHRbcl9pXS5jX3N0cigpKTsKKyAgICAgIH0KKwor
ICAgICAgLy8gQWR2YW5jZSBpbmRpY2VzLCBkZXBlbmRpbmcgb24gZWRpdCB0eXBlLgorICAgICAg
bF9pICs9IGVkaXQgIT0ga0FkZDsKKyAgICAgIHJfaSArPSBlZGl0ICE9IGtSZW1vdmU7CisgICAg
fQorCisgICAgaWYgKCFodW5rLmhhc19lZGl0cygpKSB7CisgICAgICAvLyBXZSBhcmUgZG9uZS4g
V2UgZG9uJ3Qgd2FudCB0aGlzIGh1bmsuCisgICAgICBicmVhazsKKyAgICB9CisKKyAgICBodW5r
LlByaW50VG8oJnNzKTsKKyAgfQorICByZXR1cm4gc3Muc3RyKCk7Cit9CisKK30gIC8vIG5hbWVz
cGFjZSBlZGl0X2Rpc3RhbmNlCisKK25hbWVzcGFjZSB7CisKKy8vIFRoZSBzdHJpbmcgcmVwcmVz
ZW50YXRpb24gb2YgdGhlIHZhbHVlcyByZWNlaXZlZCBpbiBFcUZhaWx1cmUoKSBhcmUgYWxyZWFk
eQorLy8gZXNjYXBlZC4gU3BsaXQgdGhlbSBvbiBlc2NhcGVkICdcbicgYm91bmRhcmllcy4gTGVh
dmUgYWxsIG90aGVyIGVzY2FwZWQKKy8vIGNoYXJhY3RlcnMgdGhlIHNhbWUuCitzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4gU3BsaXRFc2NhcGVkU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIp
IHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGxpbmVzOworICBzaXplX3Qgc3RhcnQgPSAw
LCBlbmQgPSBzdHIuc2l6ZSgpOworICBpZiAoZW5kID4gMiAmJiBzdHJbMF0gPT0gJyInICYmIHN0
cltlbmQgLSAxXSA9PSAnIicpIHsKKyAgICArK3N0YXJ0OworICAgIC0tZW5kOworICB9CisgIGJv
b2wgZXNjYXBlZCA9IGZhbHNlOworICBmb3IgKHNpemVfdCBpID0gc3RhcnQ7IGkgKyAxIDwgZW5k
OyArK2kpIHsKKyAgICBpZiAoZXNjYXBlZCkgeworICAgICAgZXNjYXBlZCA9IGZhbHNlOworICAg
ICAgaWYgKHN0cltpXSA9PSAnbicpIHsKKyAgICAgICAgbGluZXMucHVzaF9iYWNrKHN0ci5zdWJz
dHIoc3RhcnQsIGkgLSBzdGFydCAtIDEpKTsKKyAgICAgICAgc3RhcnQgPSBpICsgMTsKKyAgICAg
IH0KKyAgICB9IGVsc2UgeworICAgICAgZXNjYXBlZCA9IHN0cltpXSA9PSAnXFwnOworICAgIH0K
KyAgfQorICBsaW5lcy5wdXNoX2JhY2soc3RyLnN1YnN0cihzdGFydCwgZW5kIC0gc3RhcnQpKTsK
KyAgcmV0dXJuIGxpbmVzOworfQorCit9ICAvLyBuYW1lc3BhY2UKKwogLy8gQ29uc3RydWN0cyBh
bmQgcmV0dXJucyB0aGUgbWVzc2FnZSBmb3IgYW4gZXF1YWxpdHkgYXNzZXJ0aW9uCiAvLyAoZS5n
LiBBU1NFUlRfRVEsIEVYUEVDVF9TVFJFUSwgZXRjKSBmYWlsdXJlLgogLy8KQEAgLTEwMDIsNDEg
KzEzNDUsNTQgQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIC8vIGFuZCB0aGVpciB2YWx1ZXMsIGFz
IHN0cmluZ3MuICBGb3IgZXhhbXBsZSwgZm9yIEFTU0VSVF9FUShmb28sIGJhcikKIC8vIHdoZXJl
IGZvbyBpcyA1IGFuZCBiYXIgaXMgNiwgd2UgaGF2ZToKIC8vCi0vLyAgIGV4cGVjdGVkX2V4cHJl
c3Npb246ICJmb28iCi0vLyAgIGFjdHVhbF9leHByZXNzaW9uOiAgICJiYXIiCi0vLyAgIGV4cGVj
dGVkX3ZhbHVlOiAgICAgICI1IgotLy8gICBhY3R1YWxfdmFsdWU6ICAgICAgICAiNiIKKy8vICAg
bGhzX2V4cHJlc3Npb246ICJmb28iCisvLyAgIHJoc19leHByZXNzaW9uOiAiYmFyIgorLy8gICBs
aHNfdmFsdWU6ICAgICAgIjUiCisvLyAgIHJoc192YWx1ZTogICAgICAiNiIKIC8vCiAvLyBUaGUg
aWdub3JpbmdfY2FzZSBwYXJhbWV0ZXIgaXMgdHJ1ZSBpZmYgdGhlIGFzc2VydGlvbiBpcyBhCi0v
LyAqX1NUUkNBU0VFUSouICBXaGVuIGl0J3MgdHJ1ZSwgdGhlIHN0cmluZyAiIChpZ25vcmluZyBj
YXNlKSIgd2lsbAorLy8gKl9TVFJDQVNFRVEqLiAgV2hlbiBpdCdzIHRydWUsIHRoZSBzdHJpbmcg
Iklnbm9yaW5nIGNhc2UiIHdpbGwKIC8vIGJlIGluc2VydGVkIGludG8gdGhlIG1lc3NhZ2UuCi1B
c3NlcnRpb25SZXN1bHQgRXFGYWlsdXJlKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4cGVjdGVkX3ZhbHVl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGFjdHVhbF92YWx1ZSwK
K0Fzc2VydGlvblJlc3VsdCBFcUZhaWx1cmUoY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbGhzX3ZhbHVlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcmhzX3ZhbHVlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yaW5nX2Nhc2UpIHsKICAgTWVzc2FnZSBt
c2c7Ci0gIG1zZyA8PCAiVmFsdWUgb2Y6ICIgPDwgYWN0dWFsX2V4cHJlc3Npb247Ci0gIGlmIChh
Y3R1YWxfdmFsdWUgIT0gYWN0dWFsX2V4cHJlc3Npb24pIHsKLSAgICBtc2cgPDwgIlxuICBBY3R1
YWw6ICIgPDwgYWN0dWFsX3ZhbHVlOworICBtc2cgPDwgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRo
ZXNlIHZhbHVlczoiOworICBtc2cgPDwgIlxuICAiIDw8IGxoc19leHByZXNzaW9uOworICBpZiAo
bGhzX3ZhbHVlICE9IGxoc19leHByZXNzaW9uKSB7CisgICAgbXNnIDw8ICJcbiAgICBXaGljaCBp
czogIiA8PCBsaHNfdmFsdWU7CisgIH0KKyAgbXNnIDw8ICJcbiAgIiA8PCByaHNfZXhwcmVzc2lv
bjsKKyAgaWYgKHJoc192YWx1ZSAhPSByaHNfZXhwcmVzc2lvbikgeworICAgIG1zZyA8PCAiXG4g
ICAgV2hpY2ggaXM6ICIgPDwgcmhzX3ZhbHVlOwogICB9CiAKLSAgbXNnIDw8ICJcbkV4cGVjdGVk
OiAiIDw8IGV4cGVjdGVkX2V4cHJlc3Npb247CiAgIGlmIChpZ25vcmluZ19jYXNlKSB7Ci0gICAg
bXNnIDw8ICIgKGlnbm9yaW5nIGNhc2UpIjsKKyAgICBtc2cgPDwgIlxuSWdub3JpbmcgY2FzZSI7
CiAgIH0KLSAgaWYgKGV4cGVjdGVkX3ZhbHVlICE9IGV4cGVjdGVkX2V4cHJlc3Npb24pIHsKLSAg
ICBtc2cgPDwgIlxuV2hpY2ggaXM6ICIgPDwgZXhwZWN0ZWRfdmFsdWU7CisKKyAgaWYgKCFsaHNf
dmFsdWUuZW1wdHkoKSAmJiAhcmhzX3ZhbHVlLmVtcHR5KCkpIHsKKyAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4gbGhzX2xpbmVzID0KKyAgICAgICAgU3BsaXRFc2NhcGVkU3RyaW5n
KGxoc192YWx1ZSk7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHJoc19saW5l
cyA9CisgICAgICAgIFNwbGl0RXNjYXBlZFN0cmluZyhyaHNfdmFsdWUpOworICAgIGlmIChsaHNf
bGluZXMuc2l6ZSgpID4gMSB8fCByaHNfbGluZXMuc2l6ZSgpID4gMSkgeworICAgICAgbXNnIDw8
ICJcbldpdGggZGlmZjpcbiIKKyAgICAgICAgICA8PCBlZGl0X2Rpc3RhbmNlOjpDcmVhdGVVbmlm
aWVkRGlmZihsaHNfbGluZXMsIHJoc19saW5lcyk7CisgICAgfQogICB9CiAKLSAgcmV0dXJuIEFz
c2VydGlvbkZhaWx1cmUobXNnKTsKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBtc2c7
CiB9CiAKIC8vIENvbnN0cnVjdHMgYSBmYWlsdXJlIG1lc3NhZ2UgZm9yIEJvb2xlYW4gYXNzZXJ0
aW9ucyBzdWNoIGFzIEVYUEVDVF9UUlVFLgotU3RyaW5nIEdldEJvb2xBc3NlcnRpb25GYWlsdXJl
TWVzc2FnZShjb25zdCBBc3NlcnRpb25SZXN1bHQmIGFzc2VydGlvbl9yZXN1bHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cHJlc3Npb25fdGV4
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0
dWFsX3ByZWRpY2F0ZV92YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogZXhwZWN0ZWRfcHJlZGljYXRlX3ZhbHVlKSB7CitzdGQ6OnN0cmluZyBH
ZXRCb29sQXNzZXJ0aW9uRmFpbHVyZU1lc3NhZ2UoCisgICAgY29uc3QgQXNzZXJ0aW9uUmVzdWx0
JiBhc3NlcnRpb25fcmVzdWx0LAorICAgIGNvbnN0IGNoYXIqIGV4cHJlc3Npb25fdGV4dCwKKyAg
ICBjb25zdCBjaGFyKiBhY3R1YWxfcHJlZGljYXRlX3ZhbHVlLAorICAgIGNvbnN0IGNoYXIqIGV4
cGVjdGVkX3ByZWRpY2F0ZV92YWx1ZSkgewogICBjb25zdCBjaGFyKiBhY3R1YWxfbWVzc2FnZSA9
IGFzc2VydGlvbl9yZXN1bHQubWVzc2FnZSgpOwogICBNZXNzYWdlIG1zZzsKICAgbXNnIDw8ICJW
YWx1ZSBvZjogIiA8PCBleHByZXNzaW9uX3RleHQKQEAgLTEwNTcsMTUgKzE0MTMsMTQgQEAgQXNz
ZXJ0aW9uUmVzdWx0IERvdWJsZU5lYXJQcmVkRm9ybWF0KGNvbnN0IGNoYXIqIGV4cHIxLAogICBj
b25zdCBkb3VibGUgZGlmZiA9IGZhYnModmFsMSAtIHZhbDIpOwogICBpZiAoZGlmZiA8PSBhYnNf
ZXJyb3IpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgLy8gVE9ETyh3YW4pOiBkbyBu
b3QgcHJpbnQgdGhlIHZhbHVlIG9mIGFuIGV4cHJlc3Npb24gaWYgaXQncworICAvLyBGSVhNRTog
ZG8gbm90IHByaW50IHRoZSB2YWx1ZSBvZiBhbiBleHByZXNzaW9uIGlmIGl0J3MKICAgLy8gYWxy
ZWFkeSBhIGxpdGVyYWwuCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgIlRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gIiA8PCBleHByMSA8PCAiIGFuZCAiIDw8IGV4cHIyCisgIHJldHVybiBBc3NlcnRp
b25GYWlsdXJlKCkKKyAgICAgIDw8ICJUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuICIgPDwgZXhwcjEg
PDwgIiBhbmQgIiA8PCBleHByMgogICAgICAgPDwgIiBpcyAiIDw8IGRpZmYgPDwgIiwgd2hpY2gg
ZXhjZWVkcyAiIDw8IGFic19lcnJvcl9leHByIDw8ICIsIHdoZXJlXG4iCiAgICAgICA8PCBleHBy
MSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHZhbDEgPDwgIixcbiIKICAgICAgIDw8IGV4cHIyIDw8
ICIgZXZhbHVhdGVzIHRvICIgPDwgdmFsMiA8PCAiLCBhbmRcbiIKICAgICAgIDw8IGFic19lcnJv
cl9leHByIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgYWJzX2Vycm9yIDw8ICIuIjsKLSAgcmV0dXJu
IEFzc2VydGlvbkZhaWx1cmUobXNnKTsKIH0KIAogCkBAIC0xMDkwLDIwICsxNDQ1LDE4IEBAIEFz
c2VydGlvblJlc3VsdCBGbG9hdGluZ1BvaW50TEUoY29uc3QgY2hhciogZXhwcjEsCiAgIC8vIHZh
bDIgaXMgTmFOLCBhcyB0aGUgSUVFRSBmbG9hdGluZy1wb2ludCBzdGFuZGFyZCByZXF1aXJlcyB0
aGF0CiAgIC8vIGFueSBwcmVkaWNhdGUgaW52b2x2aW5nIGEgTmFOIG11c3QgcmV0dXJuIGZhbHNl
LgogCi0gIFN0clN0cmVhbSB2YWwxX3NzOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHZhbDFfc3M7
CiAgIHZhbDFfc3MgPDwgc3RkOjpzZXRwcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxSYXdU
eXBlPjo6ZGlnaXRzMTAgKyAyKQogICAgICAgICAgIDw8IHZhbDE7CiAKLSAgU3RyU3RyZWFtIHZh
bDJfc3M7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gdmFsMl9zczsKICAgdmFsMl9zcyA8PCBzdGQ6
OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+OjpkaWdpdHMxMCArIDIp
CiAgICAgICAgICAgPDwgdmFsMjsKIAotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8ICJFeHBlY3Rl
ZDogKCIgPDwgZXhwcjEgPDwgIikgPD0gKCIgPDwgZXhwcjIgPDwgIilcbiIKLSAgICAgIDw8ICIg
IEFjdHVhbDogIiA8PCBTdHJTdHJlYW1Ub1N0cmluZygmdmFsMV9zcykgPDwgIiB2cyAiCi0gICAg
ICA8PCBTdHJTdHJlYW1Ub1N0cmluZygmdmFsMl9zcyk7Ci0KLSAgcmV0dXJuIEFzc2VydGlvbkZh
aWx1cmUobXNnKTsKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwgIkV4cGVj
dGVkOiAoIiA8PCBleHByMSA8PCAiKSA8PSAoIiA8PCBleHByMiA8PCAiKVxuIgorICAgICAgPDwg
IiAgQWN0dWFsOiAiIDw8IFN0cmluZ1N0cmVhbVRvU3RyaW5nKCZ2YWwxX3NzKSA8PCAiIHZzICIK
KyAgICAgIDw8IFN0cmluZ1N0cmVhbVRvU3RyaW5nKCZ2YWwyX3NzKTsKIH0KIAogfSAgLy8gbmFt
ZXNwYWNlIGludGVybmFsCkBAIC0xMTI2LDE4ICsxNDc5LDE4IEBAIG5hbWVzcGFjZSBpbnRlcm5h
bCB7CiAKIC8vIFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9FUSB3aXRo
IGludCBvciBlbnVtCiAvLyBhcmd1bWVudHMuCi1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRVEo
Y29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCaWdnZXN0SW50IGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEJpZ2dlc3RJbnQgYWN0dWFsKSB7Ci0gIGlmIChleHBlY3RlZCA9PSBhY3R1YWwpIHsKK0Fzc2Vy
dGlvblJlc3VsdCBDbXBIZWxwZXJFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGxocywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBCaWdnZXN0SW50IHJocykgeworICBpZiAobGhzID09IHJocykgewogICAgIHJl
dHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAgIH0KIAotICByZXR1cm4gRXFGYWlsdXJlKGV4cGVj
dGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgYWN0dWFsX2V4cHJlc3Npb24sCi0g
ICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKGV4cGVj
dGVkLCBhY3R1YWwpLAotICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWls
dXJlTWVzc2FnZShhY3R1YWwsIGV4cGVjdGVkKSwKKyAgcmV0dXJuIEVxRmFpbHVyZShsaHNfZXhw
cmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UobGhzLCByaHMpLAorICAg
ICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShyaHMsIGxo
cyksCiAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwogfQogCkBAIC0xMTUwLDExICsxNTAzLDEw
IEBAIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXIjI29wX25hbWUoY29uc3QgY2hhciogZXhwcjEs
IGNvbnN0IGNoYXIqIGV4cHIyLCBcCiAgIGlmICh2YWwxIG9wIHZhbDIpIHtcCiAgICAgcmV0dXJu
IEFzc2VydGlvblN1Y2Nlc3MoKTtcCiAgIH0gZWxzZSB7XAotICAgIE1lc3NhZ2UgbXNnO1wKLSAg
ICBtc2cgPDwgIkV4cGVjdGVkOiAoIiA8PCBleHByMSA8PCAiKSAiICNvcCAiICgiIDw8IGV4cHIy
XAorICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgXAorICAgICAgICA8PCAiRXhwZWN0ZWQ6
ICgiIDw8IGV4cHIxIDw8ICIpICIgI29wICIgKCIgPDwgZXhwcjJcCiAgICAgICAgIDw8ICIpLCBh
Y3R1YWw6ICIgPDwgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHZhbDEsIHZhbDIp
XAogICAgICAgICA8PCAiIHZzICIgPDwgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdl
KHZhbDIsIHZhbDEpO1wKLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpO1wKICAgfVwK
IH0KIApAQCAtMTE3NywzNCArMTUyOSwzNCBAQCBHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKEdULCA+
ICkKICN1bmRlZiBHVEVTVF9JTVBMX0NNUF9IRUxQRVJfCiAKIC8vIFRoZSBoZWxwZXIgZnVuY3Rp
b24gZm9yIHtBU1NFUlR8RVhQRUNUfV9TVFJFUS4KLUFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJT
VFJFUShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbCkgewotICBpZiAoU3RyaW5nOjpDU3Ry
aW5nRXF1YWxzKGV4cGVjdGVkLCBhY3R1YWwpKSB7CitBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVy
U1RSRVEoY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHJocykgeworICBpZiAoU3RyaW5nOjpDU3RyaW5nRXF1YWxzKGxocywg
cmhzKSkgewogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAgIH0KIAotICByZXR1cm4g
RXFGYWlsdXJlKGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgYWN0dWFs
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93Q1N0cmluZ1F1b3Rl
ZChleHBlY3RlZCksCi0gICAgICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93Q1N0cmluZ1F1b3Rl
ZChhY3R1YWwpLAorICByZXR1cm4gRXFGYWlsdXJlKGxoc19leHByZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIFByaW50VG9TdHJp
bmcobGhzKSwKKyAgICAgICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKHJocyksCiAgICAgICAg
ICAgICAgICAgICAgZmFsc2UpOwogfQogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNT
RVJUfEVYUEVDVH1fU1RSQ0FTRUVRLgotQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VF
UShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbCkgewotICBpZiAoU3Ry
aW5nOjpDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGV4cGVjdGVkLCBhY3R1YWwpKSB7CitB
c3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSQ0FTRUVRKGNvbnN0IGNoYXIqIGxoc19leHByZXNz
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNf
ZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBy
aHMpIHsKKyAgaWYgKFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFscyhsaHMsIHJo
cykpIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9CiAKLSAgcmV0dXJuIEVx
RmFpbHVyZShleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIGFjdHVhbF9l
eHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQo
ZXhwZWN0ZWQpLAotICAgICAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQo
YWN0dWFsKSwKKyAgcmV0dXJuIEVxRmFpbHVyZShsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICBQcmludFRvU3RyaW5n
KGxocyksCisgICAgICAgICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhyaHMpLAogICAgICAgICAg
ICAgICAgICAgIHRydWUpOwogfQogCkBAIC0xMjE2LDExICsxNTY4LDkgQEAgQXNzZXJ0aW9uUmVz
dWx0IENtcEhlbHBlclNUUk5FKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24sCiAgIGlmICghU3Ry
aW5nOjpDU3RyaW5nRXF1YWxzKHMxLCBzMikpIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2Vz
cygpOwogICB9IGVsc2UgewotICAgIE1lc3NhZ2UgbXNnOwotICAgIG1zZyA8PCAiRXhwZWN0ZWQ6
ICgiIDw8IHMxX2V4cHJlc3Npb24gPDwgIikgIT0gKCIKLSAgICAgICAgPDwgczJfZXhwcmVzc2lv
biA8PCAiKSwgYWN0dWFsOiBcIiIKLSAgICAgICAgPDwgczEgPDwgIlwiIHZzIFwiIiA8PCBzMiA8
PCAiXCIiOwotICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgICAgcmV0dXJuIEFz
c2VydGlvbkZhaWx1cmUoKSA8PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4cHJlc3Npb24gPDwgIikg
IT0gKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHMyX2V4cHJlc3Npb24gPDwg
IiksIGFjdHVhbDogXCIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzMSA8PCAi
XCIgdnMgXCIiIDw8IHMyIDw8ICJcIiI7CiAgIH0KIH0KIApAQCAtMTIzMiwxMSArMTU4MiwxMCBA
QCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSQ0FTRU5FKGNvbnN0IGNoYXIqIHMxX2V4cHJl
c3Npb24sCiAgIGlmICghU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKHMxLCBz
MikpIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9IGVsc2UgewotICAgIE1l
c3NhZ2UgbXNnOwotICAgIG1zZyA8PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4cHJlc3Npb24gPDwg
IikgIT0gKCIKKyAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICAgIDw8ICJFeHBl
Y3RlZDogKCIgPDwgczFfZXhwcmVzc2lvbiA8PCAiKSAhPSAoIgogICAgICAgICA8PCBzMl9leHBy
ZXNzaW9uIDw8ICIpIChpZ25vcmluZyBjYXNlKSwgYWN0dWFsOiBcIiIKICAgICAgICAgPDwgczEg
PDwgIlwiIHZzIFwiIiA8PCBzMiA8PCAiXCIiOwotICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJl
KG1zZyk7CiAgIH0KIH0KIApAQCAtMTI4NSwxMyArMTYzNCwxMiBAQCBBc3NlcnRpb25SZXN1bHQg
SXNTdWJzdHJpbmdJbXBsKAogCiAgIGNvbnN0IGJvb2wgaXNfd2lkZV9zdHJpbmcgPSBzaXplb2Yo
bmVlZGxlWzBdKSA+IDE7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGJlZ2luX3N0cmluZ19xdW90ZSA9
IGlzX3dpZGVfc3RyaW5nID8gIkxcIiIgOiAiXCIiOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVy
ZSgKLSAgICAgIE1lc3NhZ2UoKQorICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpCiAgICAgICA8
PCAiVmFsdWUgb2Y6ICIgPDwgbmVlZGxlX2V4cHIgPDwgIlxuIgogICAgICAgPDwgIiAgQWN0dWFs
OiAiIDw8IGJlZ2luX3N0cmluZ19xdW90ZSA8PCBuZWVkbGUgPDwgIlwiXG4iCiAgICAgICA8PCAi
RXhwZWN0ZWQ6ICIgPDwgKGV4cGVjdGVkX3RvX2JlX3N1YnN0cmluZyA/ICIiIDogIm5vdCAiKQog
ICAgICAgPDwgImEgc3Vic3RyaW5nIG9mICIgPDwgaGF5c3RhY2tfZXhwciA8PCAiXG4iCi0gICAg
ICA8PCAiV2hpY2ggaXM6ICIgPDwgYmVnaW5fc3RyaW5nX3F1b3RlIDw8IGhheXN0YWNrIDw8ICJc
IiIpOworICAgICAgPDwgIldoaWNoIGlzOiAiIDw8IGJlZ2luX3N0cmluZ19xdW90ZSA8PCBoYXlz
dGFjayA8PCAiXCIiOwogfQogCiB9ICAvLyBuYW1lc3BhY2UKQEAgLTEzNjAsMTYgKzE3MDgsMTkg
QEAgbmFtZXNwYWNlIHsKIEFzc2VydGlvblJlc3VsdCBIUkVTVUxURmFpbHVyZUhlbHBlcihjb25z
dCBjaGFyKiBleHByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv
bmcgaHIpIHsgIC8vIE5PTElOVAotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGlmIEdU
RVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNUX09TX1dJTkRPV1NfVFZfVElUTEUKKwogICAv
LyBXaW5kb3dzIENFIGRvZXNuJ3Qgc3VwcG9ydCBGb3JtYXRNZXNzYWdlLgogICBjb25zdCBjaGFy
IGVycm9yX3RleHRbXSA9ICIiOwotI2Vsc2UKKworIyBlbHNlCisKICAgLy8gTG9va3MgdXAgdGhl
IGh1bWFuLXJlYWRhYmxlIHN5c3RlbSBtZXNzYWdlIGZvciB0aGUgSFJFU1VMVCBjb2RlCiAgIC8v
IGFuZCBzaW5jZSB3ZSdyZSBub3QgcGFzc2luZyBhbnkgcGFyYW1zIHRvIEZvcm1hdE1lc3NhZ2Us
IHdlIGRvbid0CiAgIC8vIHdhbnQgaW5zZXJ0cyBleHBhbmRlZC4KICAgY29uc3QgRFdPUkQga0Zs
YWdzID0gRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0gfAogICAgICAgICAgICAgICAgICAgICAg
ICBGT1JNQVRfTUVTU0FHRV9JR05PUkVfSU5TRVJUUzsKLSAgY29uc3QgRFdPUkQga0J1ZlNpemUg
PSA0MDk2OyAgLy8gU3RyaW5nOjpGb3JtYXQgY2FuJ3QgZXhjZWVkIHRoaXMgbGVuZ3RoLgorICBj
b25zdCBEV09SRCBrQnVmU2l6ZSA9IDQwOTY7CiAgIC8vIEdldHMgdGhlIHN5c3RlbSdzIGh1bWFu
IHJlYWRhYmxlIG1lc3NhZ2Ugc3RyaW5nIGZvciB0aGlzIEhSRVNVTFQuCiAgIGNoYXIgZXJyb3Jf
dGV4dFtrQnVmU2l6ZV0gPSB7ICdcMCcgfTsKICAgRFdPUkQgbWVzc2FnZV9sZW5ndGggPSA6OkZv
cm1hdE1lc3NhZ2VBKGtGbGFncywKQEAgLTEzNzksMTkgKzE3MzAsMTggQEAgQXNzZXJ0aW9uUmVz
dWx0IEhSRVNVTFRGYWlsdXJlSGVscGVyKGNvbnN0IGNoYXIqIGV4cHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl90ZXh0LCAgLy8gb3V0cHV0IGJ1ZmZl
cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0J1ZlNpemUsICAv
LyBidWYgc2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM
TCk7ICAvLyBubyBhcmd1bWVudHMgZm9yIGluc2VydHMKLSAgLy8gVHJpbXMgdGFpbGluZyB3aGl0
ZSBzcGFjZSAoRm9ybWF0TWVzc2FnZSBsZWF2ZXMgYSB0cmFpbGluZyBjci1sZikKLSAgZm9yICg7
IG1lc3NhZ2VfbGVuZ3RoICYmIGlzc3BhY2UoZXJyb3JfdGV4dFttZXNzYWdlX2xlbmd0aCAtIDFd
KTsKKyAgLy8gVHJpbXMgdGFpbGluZyB3aGl0ZSBzcGFjZSAoRm9ybWF0TWVzc2FnZSBsZWF2ZXMg
YSB0cmFpbGluZyBDUi1MRikKKyAgZm9yICg7IG1lc3NhZ2VfbGVuZ3RoICYmIElzU3BhY2UoZXJy
b3JfdGV4dFttZXNzYWdlX2xlbmd0aCAtIDFdKTsKICAgICAgICAgICAtLW1lc3NhZ2VfbGVuZ3Ro
KSB7CiAgICAgZXJyb3JfdGV4dFttZXNzYWdlX2xlbmd0aCAtIDFdID0gJ1wwJzsKICAgfQotI2Vu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogCi0gIGNvbnN0IFN0cmluZyBlcnJvcl9o
ZXgoU3RyaW5nOjpGb3JtYXQoIjB4JTA4WCAiLCBocikpOwotICBNZXNzYWdlIG1zZzsKLSAgbXNn
IDw8ICJFeHBlY3RlZDogIiA8PCBleHByIDw8ICIgIiA8PCBleHBlY3RlZCA8PCAiLlxuIgotICAg
ICAgPDwgIiAgQWN0dWFsOiAiIDw8IGVycm9yX2hleCA8PCBlcnJvcl90ZXh0IDw8ICJcbiI7Cisj
IGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogCi0gIHJldHVybiA6OnRlc3Rpbmc6
OkFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZXJyb3JfaGV4KCIw
eCIgKyBTdHJpbmc6OkZvcm1hdEhleEludChocikpOworICByZXR1cm4gOjp0ZXN0aW5nOjpBc3Nl
cnRpb25GYWlsdXJlKCkKKyAgICAgIDw8ICJFeHBlY3RlZDogIiA8PCBleHByIDw8ICIgIiA8PCBl
eHBlY3RlZCA8PCAiLlxuIgorICAgICAgPDwgIiAgQWN0dWFsOiAiIDw8IGVycm9yX2hleCA8PCAi
ICIgPDwgZXJyb3JfdGV4dCA8PCAiXG4iOwogfQogCiB9ICAvLyBuYW1lc3BhY2UKQEAgLTE0MTUs
NyArMTc2NSw3IEBAIEFzc2VydGlvblJlc3VsdCBJc0hSRVNVTFRGYWlsdXJlKGNvbnN0IGNoYXIq
IGV4cHIsIGxvbmcgaHIpIHsgIC8vIE5PTElOVAogLy8gVXRpbGl0eSBmdW5jdGlvbnMgZm9yIGVu
Y29kaW5nIFVuaWNvZGUgdGV4dCAod2lkZSBzdHJpbmdzKSBpbgogLy8gVVRGLTguCiAKLS8vIEEg
VW5pY29kZSBjb2RlLXBvaW50IGNhbiBoYXZlIHVwdG8gMjEgYml0cywgYW5kIGlzIGVuY29kZWQg
aW4gVVRGLTgKKy8vIEEgVW5pY29kZSBjb2RlLXBvaW50IGNhbiBoYXZlIHVwIHRvIDIxIGJpdHMs
IGFuZCBpcyBlbmNvZGVkIGluIFVURi04CiAvLyBsaWtlIHRoaXM6CiAvLwogLy8gQ29kZS1wb2lu
dCBsZW5ndGggICBFbmNvZGluZwpAQCAtMTQ0OCwxMiArMTc5OCwxNSBAQCBpbmxpbmUgVUludDMy
IENob3BMb3dCaXRzKFVJbnQzMiogYml0cywgaW50IG4pIHsKIC8vIENvbnZlcnRzIGEgVW5pY29k
ZSBjb2RlIHBvaW50IHRvIGEgbmFycm93IHN0cmluZyBpbiBVVEYtOCBlbmNvZGluZy4KIC8vIGNv
ZGVfcG9pbnQgcGFyYW1ldGVyIGlzIG9mIHR5cGUgVUludDMyIGJlY2F1c2Ugd2NoYXJfdCBtYXkg
bm90IGJlCiAvLyB3aWRlIGVub3VnaCB0byBjb250YWluIGEgY29kZSBwb2ludC4KLS8vIFRoZSBv
dXRwdXQgYnVmZmVyIHN0ciBtdXN0IGNvbnRhaW50IGF0IGxlYXN0IDMyIGNoYXJhY3RlcnMuCi0v
LyBUaGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgYWRkcmVzcyBvZiB0aGUgb3V0cHV0IGJ1ZmZlci4K
IC8vIElmIHRoZSBjb2RlX3BvaW50IGlzIG5vdCBhIHZhbGlkIFVuaWNvZGUgY29kZSBwb2ludAot
Ly8gKGkuZS4gb3V0c2lkZSBvZiBVbmljb2RlIHJhbmdlIFUrMCB0byBVKzEwRkZGRikgaXQgd2ls
bCBiZSBvdXRwdXQKLS8vIGFzICcoSW52YWxpZCBVbmljb2RlIDB4WFhYWFhYWFgpJy4KLWNoYXIq
IENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9wb2ludCwgY2hhciogc3RyKSB7CisvLyAoaS5l
LiBvdXRzaWRlIG9mIFVuaWNvZGUgcmFuZ2UgVSswIHRvIFUrMTBGRkZGKSBpdCB3aWxsIGJlIGNv
bnZlcnRlZAorLy8gdG8gIihJbnZhbGlkIFVuaWNvZGUgMHhYWFhYWFhYWCkiLgorc3RkOjpzdHJp
bmcgQ29kZVBvaW50VG9VdGY4KFVJbnQzMiBjb2RlX3BvaW50KSB7CisgIGlmIChjb2RlX3BvaW50
ID4ga01heENvZGVQb2ludDQpIHsKKyAgICByZXR1cm4gIihJbnZhbGlkIFVuaWNvZGUgMHgiICsg
U3RyaW5nOjpGb3JtYXRIZXhJbnQoY29kZV9wb2ludCkgKyAiKSI7CisgIH0KKworICBjaGFyIHN0
cls1XTsgIC8vIEJpZyBlbm91Z2ggZm9yIHRoZSBsYXJnZXN0IHZhbGlkIGNvZGUgcG9pbnQuCiAg
IGlmIChjb2RlX3BvaW50IDw9IGtNYXhDb2RlUG9pbnQxKSB7CiAgICAgc3RyWzFdID0gJ1wwJzsK
ICAgICBzdHJbMF0gPSBzdGF0aWNfY2FzdDxjaGFyPihjb2RlX3BvaW50KTsgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIDB4eHh4eHh4CkBAIC0xNDY2LDI3ICsxODE5LDE3IEBAIGNoYXIqIENv
ZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9wb2ludCwgY2hhciogc3RyKSB7CiAgICAgc3RyWzJd
ID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHg4MCB8IENob3BMb3dCaXRzKCZjb2RlX3BvaW50LCA2KSk7
ICAvLyAxMHh4eHh4eAogICAgIHN0clsxXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgfCBDaG9w
TG93Qml0cygmY29kZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKICAgICBzdHJbMF0gPSBzdGF0
aWNfY2FzdDxjaGFyPigweEUwIHwgY29kZV9wb2ludCk7ICAgICAgICAgICAgICAgICAgIC8vIDEx
MTB4eHh4Ci0gIH0gZWxzZSBpZiAoY29kZV9wb2ludCA8PSBrTWF4Q29kZVBvaW50NCkgeworICB9
IGVsc2UgeyAgLy8gY29kZV9wb2ludCA8PSBrTWF4Q29kZVBvaW50NAogICAgIHN0cls0XSA9ICdc
MCc7CiAgICAgc3RyWzNdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHg4MCB8IENob3BMb3dCaXRzKCZj
b2RlX3BvaW50LCA2KSk7ICAvLyAxMHh4eHh4eAogICAgIHN0clsyXSA9IHN0YXRpY19jYXN0PGNo
YXI+KDB4ODAgfCBDaG9wTG93Qml0cygmY29kZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKICAg
ICBzdHJbMV0gPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVfcG9p
bnQsIDYpKTsgIC8vIDEweHh4eHh4CiAgICAgc3RyWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHhG
MCB8IGNvZGVfcG9pbnQpOyAgICAgICAgICAgICAgICAgICAvLyAxMTExMHh4eAotICB9IGVsc2Ug
ewotICAgIC8vIFRoZSBsb25nZXN0IHN0cmluZyBTdHJpbmc6OkZvcm1hdCBjYW4gcHJvZHVjZSB3
aGVuIGludm9rZWQKLSAgICAvLyB3aXRoIHRoZXNlIHBhcmFtZXRlcnMgaXMgMjggY2hhcmFjdGVy
IGxvbmcgKG5vdCBpbmNsdWRpbmcKLSAgICAvLyB0aGUgdGVybWluYXRpbmcgbnVsIGNoYXJhY3Rl
cikuIFdlIGFyZSBhc2tpbmcgZm9yIDMyIGNoYXJhY3RlcgotICAgIC8vIGJ1ZmZlciBqdXN0IGlu
IGNhc2UuIFRoaXMgaXMgYWxzbyBlbm91Z2ggZm9yIHN0cm5jcHkgdG8KLSAgICAvLyBudWxsLXRl
cm1pbmF0ZSB0aGUgZGVzdGluYXRpb24gc3RyaW5nLgotICAgIHBvc2l4OjpTdHJOQ3B5KAotICAg
ICAgICBzdHIsIFN0cmluZzo6Rm9ybWF0KCIoSW52YWxpZCBVbmljb2RlIDB4JVgpIiwgY29kZV9w
b2ludCkuY19zdHIoKSwgMzIpOwotICAgIHN0clszMV0gPSAnXDAnOyAgLy8gTWFrZXMgc3VyZSBu
byBjaGFuZ2UgaW4gdGhlIGZvcm1hdCB0byBzdHJuY3B5IGxlYXZlcwotICAgICAgICAgICAgICAg
ICAgICAgLy8gdGhlIHJlc3VsdCB1bnRlcm1pbmF0ZWQuCiAgIH0KICAgcmV0dXJuIHN0cjsKIH0K
IAotLy8gVGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIG9ubHkgbWFrZSBzZW5zZSBpZiB0aGUg
dGhlIHN5c3RlbQorLy8gVGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIG9ubHkgbWFrZSBzZW5z
ZSBpZiB0aGUgc3lzdGVtCiAvLyB1c2VzIFVURi0xNiBmb3Igd2lkZSBzdHJpbmcgZW5jb2Rpbmcu
IEFsbCBzdXBwb3J0ZWQgc3lzdGVtcwogLy8gd2l0aCAxNiBiaXQgd2NoYXJfdCAoV2luZG93cywg
Q3lnd2luLCBTeW1iaWFuIE9TKSBkbyB1c2UgVVRGLTE2LgogCkBAIC0xNTIyLDExICsxODY1LDEx
IEBAIGlubGluZSBVSW50MzIgQ3JlYXRlQ29kZVBvaW50RnJvbVV0ZjE2U3Vycm9nYXRlUGFpcih3
Y2hhcl90IGZpcnN0LAogLy8gYXMgJyhJbnZhbGlkIFVuaWNvZGUgMHhYWFhYWFhYWCknLiBJZiB0
aGUgc3RyaW5nIGlzIGluIFVURjE2IGVuY29kaW5nCiAvLyBhbmQgY29udGFpbnMgaW52YWxpZCBV
VEYtMTYgc3Vycm9nYXRlIHBhaXJzLCB2YWx1ZXMgaW4gdGhvc2UgcGFpcnMKIC8vIHdpbGwgYmUg
ZW5jb2RlZCBhcyBpbmRpdmlkdWFsIFVuaWNvZGUgY2hhcmFjdGVycyBmcm9tIEJhc2ljIE5vcm1h
bCBQbGFuZS4KLVN0cmluZyBXaWRlU3RyaW5nVG9VdGY4KGNvbnN0IHdjaGFyX3QqIHN0ciwgaW50
IG51bV9jaGFycykgeworc3RkOjpzdHJpbmcgV2lkZVN0cmluZ1RvVXRmOChjb25zdCB3Y2hhcl90
KiBzdHIsIGludCBudW1fY2hhcnMpIHsKICAgaWYgKG51bV9jaGFycyA9PSAtMSkKICAgICBudW1f
Y2hhcnMgPSBzdGF0aWNfY2FzdDxpbnQ+KHdjc2xlbihzdHIpKTsKIAotICBTdHJTdHJlYW0gc3Ry
ZWFtOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBudW1fY2hhcnM7ICsraSkgewogICAgIFVJbnQzMiB1bmljb2RlX2NvZGVfcG9pbnQ7CiAKQEAg
LTE1NDAsMjcgKzE4ODMsMTcgQEAgU3RyaW5nIFdpZGVTdHJpbmdUb1V0ZjgoY29uc3Qgd2NoYXJf
dCogc3RyLCBpbnQgbnVtX2NoYXJzKSB7CiAgICAgICB1bmljb2RlX2NvZGVfcG9pbnQgPSBzdGF0
aWNfY2FzdDxVSW50MzI+KHN0cltpXSk7CiAgICAgfQogCi0gICAgY2hhciBidWZmZXJbMzJdOyAg
Ly8gQ29kZVBvaW50VG9VdGY4IHJlcXVpcmVzIGEgYnVmZmVyIHRoaXMgYmlnLgotICAgIHN0cmVh
bSA8PCBDb2RlUG9pbnRUb1V0ZjgodW5pY29kZV9jb2RlX3BvaW50LCBidWZmZXIpOworICAgIHN0
cmVhbSA8PCBDb2RlUG9pbnRUb1V0ZjgodW5pY29kZV9jb2RlX3BvaW50KTsKICAgfQotICByZXR1
cm4gU3RyU3RyZWFtVG9TdHJpbmcoJnN0cmVhbSk7CisgIHJldHVybiBTdHJpbmdTdHJlYW1Ub1N0
cmluZygmc3RyZWFtKTsKIH0KIAotLy8gQ29udmVydHMgYSB3aWRlIEMgc3RyaW5nIHRvIGEgU3Ry
aW5nIHVzaW5nIHRoZSBVVEYtOCBlbmNvZGluZy4KKy8vIENvbnZlcnRzIGEgd2lkZSBDIHN0cmlu
ZyB0byBhbiBzdGQ6OnN0cmluZyB1c2luZyB0aGUgVVRGLTggZW5jb2RpbmcuCiAvLyBOVUxMIHdp
bGwgYmUgY29udmVydGVkIHRvICIobnVsbCkiLgotU3RyaW5nIFN0cmluZzo6U2hvd1dpZGVDU3Ry
aW5nKGNvbnN0IHdjaGFyX3QgKiB3aWRlX2Nfc3RyKSB7Ci0gIGlmICh3aWRlX2Nfc3RyID09IE5V
TEwpIHJldHVybiBTdHJpbmcoIihudWxsKSIpOwotCi0gIHJldHVybiBTdHJpbmcoaW50ZXJuYWw6
OldpZGVTdHJpbmdUb1V0Zjgod2lkZV9jX3N0ciwgLTEpLmNfc3RyKCkpOwotfQotCi0vLyBTaW1p
bGFyIHRvIFNob3dXaWRlQ1N0cmluZygpLCBleGNlcHQgdGhhdCB0aGlzIGZ1bmN0aW9uIGVuY2xv
c2VzCi0vLyB0aGUgY29udmVydGVkIHN0cmluZyBpbiBkb3VibGUgcXVvdGVzLgotU3RyaW5nIFN0
cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVvdGVkKGNvbnN0IHdjaGFyX3QqIHdpZGVfY19zdHIpIHsK
LSAgaWYgKHdpZGVfY19zdHIgPT0gTlVMTCkgcmV0dXJuIFN0cmluZygiKG51bGwpIik7CitzdGQ6
OnN0cmluZyBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZyhjb25zdCB3Y2hhcl90ICogd2lkZV9jX3N0
cikgeworICBpZiAod2lkZV9jX3N0ciA9PSBOVUxMKSAgcmV0dXJuICIobnVsbCkiOwogCi0gIHJl
dHVybiBTdHJpbmc6OkZvcm1hdCgiTFwiJXNcIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBT
dHJpbmc6OlNob3dXaWRlQ1N0cmluZyh3aWRlX2Nfc3RyKS5jX3N0cigpKTsKKyAgcmV0dXJuIGlu
dGVybmFsOjpXaWRlU3RyaW5nVG9VdGY4KHdpZGVfY19zdHIsIC0xKTsKIH0KIAogLy8gQ29tcGFy
ZXMgdHdvIHdpZGUgQyBzdHJpbmdzLiAgUmV0dXJucyB0cnVlIGlmZiB0aGV5IGhhdmUgdGhlIHNh
bWUKQEAgLTE1NzgsMTggKzE5MTEsMTggQEAgYm9vbCBTdHJpbmc6OldpZGVDU3RyaW5nRXF1YWxz
KGNvbnN0IHdjaGFyX3QgKiBsaHMsIGNvbnN0IHdjaGFyX3QgKiByaHMpIHsKIH0KIAogLy8gSGVs
cGVyIGZ1bmN0aW9uIGZvciAqX1NUUkVRIG9uIHdpZGUgc3RyaW5ncy4KLUFzc2VydGlvblJlc3Vs
dCBDbXBIZWxwZXJTVFJFUShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIGV4cGVjdGVkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIGFjdHVhbCkgewot
ICBpZiAoU3RyaW5nOjpXaWRlQ1N0cmluZ0VxdWFscyhleHBlY3RlZCwgYWN0dWFsKSkgeworQXNz
ZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIGxocywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiByaHMpIHsKKyAgaWYg
KFN0cmluZzo6V2lkZUNTdHJpbmdFcXVhbHMobGhzLCByaHMpKSB7CiAgICAgcmV0dXJuIEFzc2Vy
dGlvblN1Y2Nlc3MoKTsKICAgfQogCi0gIHJldHVybiBFcUZhaWx1cmUoZXhwZWN0ZWRfZXhwcmVz
c2lvbiwKLSAgICAgICAgICAgICAgICAgICBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAg
ICAgICAgICBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChleHBlY3RlZCksCi0gICAgICAg
ICAgICAgICAgICAgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoYWN0dWFsKSwKKyAgcmV0
dXJuIEVxRmFpbHVyZShsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICByaHNfZXhw
cmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKGxocyksCisgICAgICAg
ICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhyaHMpLAogICAgICAgICAgICAgICAgICAgIGZhbHNl
KTsKIH0KIApAQCAtMTYwMiwxMiArMTkzNSwxMCBAQCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVy
U1RSTkUoY29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKICAgICByZXR1cm4gQXNzZXJ0aW9uU3Vj
Y2VzcygpOwogICB9CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCAiRXhwZWN0ZWQ6ICgiIDw8
IHMxX2V4cHJlc3Npb24gPDwgIikgIT0gKCIKLSAgICAgIDw8IHMyX2V4cHJlc3Npb24gPDwgIiks
IGFjdHVhbDogIgotICAgICAgPDwgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoczEpCi0g
ICAgICA8PCAiIHZzICIgPDwgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoczIpOwotICBy
ZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgp
IDw8ICJFeHBlY3RlZDogKCIgPDwgczFfZXhwcmVzc2lvbiA8PCAiKSAhPSAoIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IHMyX2V4cHJlc3Npb24gPDwgIiksIGFjdHVhbDogIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8IFByaW50VG9TdHJpbmcoczEpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgIiB2cyAiIDw8IFByaW50VG9TdHJpbmcoczIpOwogfQogCiAv
LyBDb21wYXJlcyB0d28gQyBzdHJpbmdzLCBpZ25vcmluZyBjYXNlLiAgUmV0dXJucyB0cnVlIGlm
ZiB0aGV5IGhhdmUKQEAgLTE2MzgsMTcgKzE5NjksMTcgQEAgYm9vbCBTdHJpbmc6OkNhc2VJbnNl
bnNpdGl2ZUNTdHJpbmdFcXVhbHMoY29uc3QgY2hhciAqIGxocywgY29uc3QgY2hhciAqIHJocykg
ewogICAvLyBjdXJyZW50IGxvY2FsZS4KIGJvb2wgU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVXaWRl
Q1N0cmluZ0VxdWFscyhjb25zdCB3Y2hhcl90KiBsaHMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogcmhzKSB7Ci0gIGlmICggbGhz
ID09IE5VTEwgKSByZXR1cm4gcmhzID09IE5VTEw7CisgIGlmIChsaHMgPT0gTlVMTCkgcmV0dXJu
IHJocyA9PSBOVUxMOwogCi0gIGlmICggcmhzID09IE5VTEwgKSByZXR1cm4gZmFsc2U7CisgIGlm
IChyaHMgPT0gTlVMTCkgcmV0dXJuIGZhbHNlOwogCiAjaWYgR1RFU1RfT1NfV0lORE9XUwogICBy
ZXR1cm4gX3djc2ljbXAobGhzLCByaHMpID09IDA7Ci0jZWxpZiBHVEVTVF9PU19MSU5VWAorI2Vs
aWYgR1RFU1RfT1NfTElOVVggJiYgIUdURVNUX09TX0xJTlVYX0FORFJPSUQKICAgcmV0dXJuIHdj
c2Nhc2VjbXAobGhzLCByaHMpID09IDA7CiAjZWxzZQotICAvLyBNYWMgT1MgWCBhbmQgQ3lnd2lu
IGRvbid0IGRlZmluZSB3Y3NjYXNlY21wLiAgT3RoZXIgdW5rbm93biBPU2VzCi0gIC8vIG1heSBu
b3QgZGVmaW5lIGl0IGVpdGhlci4KKyAgLy8gQW5kcm9pZCwgTWFjIE9TIFggYW5kIEN5Z3dpbiBk
b24ndCBkZWZpbmUgd2NzY2FzZWNtcC4KKyAgLy8gT3RoZXIgdW5rbm93biBPU2VzIG1heSBub3Qg
ZGVmaW5lIGl0IGVpdGhlci4KICAgd2ludF90IGxlZnQsIHJpZ2h0OwogICBkbyB7CiAgICAgbGVm
dCA9IHRvd2xvd2VyKCpsaHMrKyk7CkBAIC0xNjU4LDEzMyArMTk4OSw2OSBAQCBib29sIFN0cmlu
Zzo6Q2FzZUluc2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMoY29uc3Qgd2NoYXJfdCogbGhzLAog
I2VuZGlmICAvLyBPUyBzZWxlY3RvcgogfQogCi0vLyBDb21wYXJlcyB0aGlzIHdpdGggYW5vdGhl
ciBTdHJpbmcuCi0vLyBSZXR1cm5zIDwgMCBpZiB0aGlzIGlzIGxlc3MgdGhhbiByaHMsIDAgaWYg
dGhpcyBpcyBlcXVhbCB0byByaHMsIG9yID4gMAotLy8gaWYgdGhpcyBpcyBncmVhdGVyIHRoYW4g
cmhzLgotaW50IFN0cmluZzo6Q29tcGFyZShjb25zdCBTdHJpbmcgJiByaHMpIGNvbnN0IHsKLSAg
Y29uc3QgY2hhciogY29uc3QgbGhzX2Nfc3RyID0gY19zdHIoKTsKLSAgY29uc3QgY2hhciogY29u
c3QgcmhzX2Nfc3RyID0gcmhzLmNfc3RyKCk7Ci0KLSAgaWYgKGxoc19jX3N0ciA9PSBOVUxMKSB7
Ci0gICAgcmV0dXJuIHJoc19jX3N0ciA9PSBOVUxMID8gMCA6IC0xOyAgLy8gTlVMTCA8IGFueXRo
aW5nIGV4Y2VwdCBOVUxMCi0gIH0gZWxzZSBpZiAocmhzX2Nfc3RyID09IE5VTEwpIHsKLSAgICBy
ZXR1cm4gMTsKLSAgfQotCi0gIGNvbnN0IHNpemVfdCBzaG9ydGVyX3N0cl9sZW4gPQotICAgICAg
bGVuZ3RoKCkgPD0gcmhzLmxlbmd0aCgpID8gbGVuZ3RoKCkgOiByaHMubGVuZ3RoKCk7Ci0gIGZv
ciAoc2l6ZV90IGkgPSAwOyBpICE9IHNob3J0ZXJfc3RyX2xlbjsgaSsrKSB7Ci0gICAgaWYgKGxo
c19jX3N0cltpXSA8IHJoc19jX3N0cltpXSkgewotICAgICAgcmV0dXJuIC0xOwotICAgIH0gZWxz
ZSBpZiAobGhzX2Nfc3RyW2ldID4gcmhzX2Nfc3RyW2ldKSB7Ci0gICAgICByZXR1cm4gMTsKLSAg
ICB9Ci0gIH0KLSAgcmV0dXJuIChsZW5ndGgoKSA8IHJocy5sZW5ndGgoKSkgPyAtMSA6Ci0gICAg
ICAobGVuZ3RoKCkgPiByaHMubGVuZ3RoKCkpID8gMSA6IDA7CisvLyBSZXR1cm5zIHRydWUgaWZm
IHN0ciBlbmRzIHdpdGggdGhlIGdpdmVuIHN1ZmZpeCwgaWdub3JpbmcgY2FzZS4KKy8vIEFueSBz
dHJpbmcgaXMgY29uc2lkZXJlZCB0byBlbmQgd2l0aCBhbiBlbXB0eSBzdWZmaXguCitib29sIFN0
cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0
ciwgY29uc3Qgc3RkOjpzdHJpbmcmIHN1ZmZpeCkgeworICBjb25zdCBzaXplX3Qgc3RyX2xlbiA9
IHN0ci5sZW5ndGgoKTsKKyAgY29uc3Qgc2l6ZV90IHN1ZmZpeF9sZW4gPSBzdWZmaXgubGVuZ3Ro
KCk7CisgIHJldHVybiAoc3RyX2xlbiA+PSBzdWZmaXhfbGVuKSAmJgorICAgICAgICAgQ2FzZUlu
c2Vuc2l0aXZlQ1N0cmluZ0VxdWFscyhzdHIuY19zdHIoKSArIHN0cl9sZW4gLSBzdWZmaXhfbGVu
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXguY19zdHIoKSk7
CiB9CiAKLS8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBTdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZl
biBzdWZmaXguICAqQW55KgotLy8gU3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGggYSBO
VUxMIG9yIGVtcHR5IHN1ZmZpeC4KLWJvb2wgU3RyaW5nOjpFbmRzV2l0aChjb25zdCBjaGFyKiBz
dWZmaXgpIGNvbnN0IHsKLSAgaWYgKHN1ZmZpeCA9PSBOVUxMIHx8IENTdHJpbmdFcXVhbHMoc3Vm
Zml4LCAiIikpIHJldHVybiB0cnVlOwotCi0gIGlmIChjX3N0cigpID09IE5VTEwpIHJldHVybiBm
YWxzZTsKLQotICBjb25zdCBzaXplX3QgdGhpc19sZW4gPSBzdHJsZW4oY19zdHIoKSk7Ci0gIGNv
bnN0IHNpemVfdCBzdWZmaXhfbGVuID0gc3RybGVuKHN1ZmZpeCk7Ci0gIHJldHVybiAodGhpc19s
ZW4gPj0gc3VmZml4X2xlbikgJiYKLSAgICAgICAgIENTdHJpbmdFcXVhbHMoY19zdHIoKSArIHRo
aXNfbGVuIC0gc3VmZml4X2xlbiwgc3VmZml4KTsKKy8vIEZvcm1hdHMgYW4gaW50IHZhbHVlIGFz
ICIlMDJkIi4KK3N0ZDo6c3RyaW5nIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKGludCB2YWx1ZSkg
eworICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgc3MgPDwgc3RkOjpzZXRmaWxsKCcwJykgPDwg
c3RkOjpzZXR3KDIpIDw8IHZhbHVlOworICByZXR1cm4gc3Muc3RyKCk7CiB9CiAKLS8vIFJldHVy
bnMgdHJ1ZSBpZmYgdGhpcyBTdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXgsIGlnbm9y
aW5nIGNhc2UuCi0vLyBBbnkgU3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGggYSBOVUxM
IG9yIGVtcHR5IHN1ZmZpeC4KLWJvb2wgU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZShj
b25zdCBjaGFyKiBzdWZmaXgpIGNvbnN0IHsKLSAgaWYgKHN1ZmZpeCA9PSBOVUxMIHx8IENTdHJp
bmdFcXVhbHMoc3VmZml4LCAiIikpIHJldHVybiB0cnVlOwotCi0gIGlmIChjX3N0cigpID09IE5V
TEwpIHJldHVybiBmYWxzZTsKLQotICBjb25zdCBzaXplX3QgdGhpc19sZW4gPSBzdHJsZW4oY19z
dHIoKSk7Ci0gIGNvbnN0IHNpemVfdCBzdWZmaXhfbGVuID0gc3RybGVuKHN1ZmZpeCk7Ci0gIHJl
dHVybiAodGhpc19sZW4gPj0gc3VmZml4X2xlbikgJiYKLSAgICAgICAgIENhc2VJbnNlbnNpdGl2
ZUNTdHJpbmdFcXVhbHMoY19zdHIoKSArIHRoaXNfbGVuIC0gc3VmZml4X2xlbiwgc3VmZml4KTsK
Ky8vIEZvcm1hdHMgYW4gaW50IHZhbHVlIGFzICIlWCIuCitzdGQ6OnN0cmluZyBTdHJpbmc6OkZv
cm1hdEhleEludChpbnQgdmFsdWUpIHsKKyAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIHNzIDw8
IHN0ZDo6aGV4IDw8IHN0ZDo6dXBwZXJjYXNlIDw8IHZhbHVlOworICByZXR1cm4gc3Muc3RyKCk7
CiB9CiAKLS8vIEZvcm1hdHMgYSBsaXN0IG9mIGFyZ3VtZW50cyB0byBhIFN0cmluZywgdXNpbmcg
dGhlIHNhbWUgZm9ybWF0Ci0vLyBzcGVjIHN0cmluZyBhcyBmb3IgcHJpbnRmLgotLy8KLS8vIFdl
IGRvIG5vdCB1c2UgdGhlIFN0cmluZ1ByaW50ZiBjbGFzcyBhcyBpdCBpcyBub3QgdW5pdmVyc2Fs
bHkKLS8vIGF2YWlsYWJsZS4KLS8vCi0vLyBUaGUgcmVzdWx0IGlzIGxpbWl0ZWQgdG8gNDA5NiBj
aGFyYWN0ZXJzIChpbmNsdWRpbmcgdGhlIHRhaWxpbmcgMCkuCi0vLyBJZiA0MDk2IGNoYXJhY3Rl
cnMgYXJlIG5vdCBlbm91Z2ggdG8gZm9ybWF0IHRoZSBpbnB1dCwgb3IgaWYKLS8vIHRoZXJlJ3Mg
YW4gZXJyb3IsICI8Zm9ybWF0dGluZyBlcnJvciBvciBidWZmZXIgZXhjZWVkZWQ+IiBpcwotLy8g
cmV0dXJuZWQuCi1TdHJpbmcgU3RyaW5nOjpGb3JtYXQoY29uc3QgY2hhciAqIGZvcm1hdCwgLi4u
KSB7Ci0gIHZhX2xpc3QgYXJnczsKLSAgdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKLQotICBjaGFy
IGJ1ZmZlcls0MDk2XTsKLSAgY29uc3QgaW50IGtCdWZmZXJTaXplID0gc2l6ZW9mKGJ1ZmZlcikv
c2l6ZW9mKGJ1ZmZlclswXSk7Ci0KLSAgLy8gTVNWQyA4IGRlcHJlY2F0ZXMgdnNucHJpbnRmKCks
IHNvIHdlIHdhbnQgdG8gc3VwcHJlc3Mgd2FybmluZwotICAvLyA0OTk2IChkZXByZWNhdGVkIGZ1
bmN0aW9uKSB0aGVyZS4KLSNpZmRlZiBfTVNDX1ZFUiAgLy8gV2UgYXJlIHVzaW5nIE1TVkMuCi0j
cHJhZ21hIHdhcm5pbmcocHVzaCkgICAgICAgICAgLy8gU2F2ZXMgdGhlIGN1cnJlbnQgd2Fybmlu
ZyBzdGF0ZS4KLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5OTYpICAvLyBUZW1wb3JhcmlseSBk
aXNhYmxlcyB3YXJuaW5nIDQ5OTYuCi0gIGNvbnN0IGludCBzaXplID0gdnNucHJpbnRmKGJ1ZmZl
ciwga0J1ZmZlclNpemUsIGZvcm1hdCwgYXJncyk7Ci0jcHJhZ21hIHdhcm5pbmcocG9wKSAgICAg
ICAgICAgLy8gUmVzdG9yZXMgdGhlIHdhcm5pbmcgc3RhdGUuCi0jZWxzZSAgLy8gV2UgYXJlIG5v
dCB1c2luZyBNU1ZDLgotICBjb25zdCBpbnQgc2l6ZSA9IHZzbnByaW50ZihidWZmZXIsIGtCdWZm
ZXJTaXplLCBmb3JtYXQsIGFyZ3MpOwotI2VuZGlmICAvLyBfTVNDX1ZFUgotICB2YV9lbmQoYXJn
cyk7Ci0KLSAgLy8gdnNucHJpbnRmKCkncyBiZWhhdmlvciBpcyBub3QgcG9ydGFibGUuICBXaGVu
IHRoZSBidWZmZXIgaXMgbm90Ci0gIC8vIGJpZyBlbm91Z2gsIGl0IHJldHVybnMgYSBuZWdhdGl2
ZSB2YWx1ZSBpbiBNU1ZDLCBhbmQgcmV0dXJucyB0aGUKLSAgLy8gbmVlZGVkIGJ1ZmZlciBzaXpl
IG9uIExpbnV4LiAgV2hlbiB0aGVyZSBpcyBhbiBvdXRwdXQgZXJyb3IsIGl0Ci0gIC8vIGFsd2F5
cyByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUuICBGb3Igc2ltcGxpY2l0eSwgd2UgbHVtcCB0aGUg
dHdvCi0gIC8vIGVycm9yIGNhc2VzIHRvZ2V0aGVyLgotICBpZiAoc2l6ZSA8IDAgfHwgc2l6ZSA+
PSBrQnVmZmVyU2l6ZSkgewotICAgIHJldHVybiBTdHJpbmcoIjxmb3JtYXR0aW5nIGVycm9yIG9y
IGJ1ZmZlciBleGNlZWRlZD4iKTsKLSAgfSBlbHNlIHsKLSAgICByZXR1cm4gU3RyaW5nKGJ1ZmZl
ciwgc2l6ZSk7Ci0gIH0KKy8vIEZvcm1hdHMgYSBieXRlIGFzICIlMDJYIi4KK3N0ZDo6c3RyaW5n
IFN0cmluZzo6Rm9ybWF0Qnl0ZSh1bnNpZ25lZCBjaGFyIHZhbHVlKSB7CisgIHN0ZDo6c3RyaW5n
c3RyZWFtIHNzOworICBzcyA8PCBzdGQ6OnNldGZpbGwoJzAnKSA8PCBzdGQ6OnNldHcoMikgPDwg
c3RkOjpoZXggPDwgc3RkOjp1cHBlcmNhc2UKKyAgICAgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
aW50Pih2YWx1ZSk7CisgIHJldHVybiBzcy5zdHIoKTsKIH0KIAotLy8gQ29udmVydHMgdGhlIGJ1
ZmZlciBpbiBhIFN0clN0cmVhbSB0byBhIFN0cmluZywgY29udmVydGluZyBOVUwKKy8vIENvbnZl
cnRzIHRoZSBidWZmZXIgaW4gYSBzdHJpbmdzdHJlYW0gdG8gYW4gc3RkOjpzdHJpbmcsIGNvbnZl
cnRpbmcgTlVMCiAvLyBieXRlcyB0byAiXFwwIiBhbG9uZyB0aGUgd2F5LgotU3RyaW5nIFN0clN0
cmVhbVRvU3RyaW5nKFN0clN0cmVhbSogc3MpIHsKK3N0ZDo6c3RyaW5nIFN0cmluZ1N0cmVhbVRv
U3RyaW5nKDo6c3RkOjpzdHJpbmdzdHJlYW0qIHNzKSB7CiAgIGNvbnN0IDo6c3RkOjpzdHJpbmcm
IHN0ciA9IHNzLT5zdHIoKTsKICAgY29uc3QgY2hhciogY29uc3Qgc3RhcnQgPSBzdHIuY19zdHIo
KTsKICAgY29uc3QgY2hhciogY29uc3QgZW5kID0gc3RhcnQgKyBzdHIubGVuZ3RoKCk7CiAKLSAg
Ly8gV2UgbmVlZCB0byB1c2UgYSBoZWxwZXIgU3RyU3RyZWFtIHRvIGRvIHRoaXMgdHJhbnNmb3Jt
YXRpb24KLSAgLy8gYmVjYXVzZSBTdHJpbmcgZG9lc24ndCBzdXBwb3J0IHB1c2hfYmFjaygpLgot
ICBTdHJTdHJlYW0gaGVscGVyOworICBzdGQ6OnN0cmluZyByZXN1bHQ7CisgIHJlc3VsdC5yZXNl
cnZlKDIgKiAoZW5kIC0gc3RhcnQpKTsKICAgZm9yIChjb25zdCBjaGFyKiBjaCA9IHN0YXJ0OyBj
aCAhPSBlbmQ7ICsrY2gpIHsKICAgICBpZiAoKmNoID09ICdcMCcpIHsKLSAgICAgIGhlbHBlciA8
PCAiXFwwIjsgIC8vIFJlcGxhY2VzIE5VTCB3aXRoICJcXDAiOworICAgICAgcmVzdWx0ICs9ICJc
XDAiOyAgLy8gUmVwbGFjZXMgTlVMIHdpdGggIlxcMCI7CiAgICAgfSBlbHNlIHsKLSAgICAgIGhl
bHBlci5wdXQoKmNoKTsKKyAgICAgIHJlc3VsdCArPSAqY2g7CiAgICAgfQogICB9CiAKLSAgcmV0
dXJuIFN0cmluZyhoZWxwZXIuc3RyKCkuY19zdHIoKSk7CisgIHJldHVybiByZXN1bHQ7CiB9CiAK
IC8vIEFwcGVuZHMgdGhlIHVzZXItc3VwcGxpZWQgbWVzc2FnZSB0byB0aGUgR29vZ2xlLVRlc3Qt
Z2VuZXJhdGVkIG1lc3NhZ2UuCi1TdHJpbmcgQXBwZW5kVXNlck1lc3NhZ2UoY29uc3QgU3RyaW5n
JiBndGVzdF9tc2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVzc2FnZSYgdXNl
cl9tc2cpIHsKK3N0ZDo6c3RyaW5nIEFwcGVuZFVzZXJNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5n
JiBndGVzdF9tc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNZXNzYWdl
JiB1c2VyX21zZykgewogICAvLyBBcHBlbmRzIHRoZSB1c2VyIG1lc3NhZ2UgaWYgaXQncyBub24t
ZW1wdHkuCi0gIGNvbnN0IFN0cmluZyB1c2VyX21zZ19zdHJpbmcgPSB1c2VyX21zZy5HZXRTdHJp
bmcoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgdXNlcl9tc2dfc3RyaW5nID0gdXNlcl9tc2cuR2V0
U3RyaW5nKCk7CiAgIGlmICh1c2VyX21zZ19zdHJpbmcuZW1wdHkoKSkgewogICAgIHJldHVybiBn
dGVzdF9tc2c7CiAgIH0KIAotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGd0ZXN0X21zZyA8PCAi
XG4iIDw8IHVzZXJfbXNnX3N0cmluZzsKLQotICByZXR1cm4gbXNnLkdldFN0cmluZygpOworICBy
ZXR1cm4gZ3Rlc3RfbXNnICsgIlxuIiArIHVzZXJfbXNnX3N0cmluZzsKIH0KIAogfSAgLy8gbmFt
ZXNwYWNlIGludGVybmFsCkBAIC0xODMyLDggKzIwOTksOSBAQCB2b2lkIFRlc3RSZXN1bHQ6OkFk
ZFRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7
CiAvLyBBZGRzIGEgdGVzdCBwcm9wZXJ0eSB0byB0aGUgbGlzdC4gSWYgYSBwcm9wZXJ0eSB3aXRo
IHRoZSBzYW1lIGtleSBhcyB0aGUKIC8vIHN1cHBsaWVkIHByb3BlcnR5IGlzIGFscmVhZHkgcmVw
cmVzZW50ZWQsIHRoZSB2YWx1ZSBvZiB0aGlzIHRlc3RfcHJvcGVydHkKIC8vIHJlcGxhY2VzIHRo
ZSBvbGQgdmFsdWUgZm9yIHRoYXQga2V5Lgotdm9pZCBUZXN0UmVzdWx0OjpSZWNvcmRQcm9wZXJ0
eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpIHsKLSAgaWYgKCFWYWxpZGF0ZVRl
c3RQcm9wZXJ0eSh0ZXN0X3Byb3BlcnR5KSkgewordm9pZCBUZXN0UmVzdWx0OjpSZWNvcmRQcm9w
ZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgeG1sX2VsZW1lbnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgeworICBpZiAo
IVZhbGlkYXRlVGVzdFByb3BlcnR5KHhtbF9lbGVtZW50LCB0ZXN0X3Byb3BlcnR5KSkgewogICAg
IHJldHVybjsKICAgfQogICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGxvY2soJnRlc3RfcHJvcGVyaXRl
c19tdXRleF8pOwpAQCAtMTg0NywyMSArMjExNSw5MCBAQCB2b2lkIFRlc3RSZXN1bHQ6OlJlY29y
ZFByb3BlcnR5KGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgewogICBwcm9wZXJ0
eV93aXRoX21hdGNoaW5nX2tleS0+U2V0VmFsdWUodGVzdF9wcm9wZXJ0eS52YWx1ZSgpKTsKIH0K
IAotLy8gQWRkcyBhIGZhaWx1cmUgaWYgdGhlIGtleSBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBv
ZiBHb29nbGUgVGVzdAotLy8gdGVzdGNhc2UgdGFncy4gIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJv
cGVydHkgaXMgdmFsaWQuCi1ib29sIFRlc3RSZXN1bHQ6OlZhbGlkYXRlVGVzdFByb3BlcnR5KGNv
bnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgewotICBpbnRlcm5hbDo6U3RyaW5nIGtl
eSh0ZXN0X3Byb3BlcnR5LmtleSgpKTsKLSAgaWYgKGtleSA9PSAibmFtZSIgfHwga2V5ID09ICJz
dGF0dXMiIHx8IGtleSA9PSAidGltZSIgfHwga2V5ID09ICJjbGFzc25hbWUiKSB7Ci0gICAgQURE
X0ZBSUxVUkUoKQotICAgICAgICA8PCAiUmVzZXJ2ZWQga2V5IHVzZWQgaW4gUmVjb3JkUHJvcGVy
dHkoKTogIgotICAgICAgICA8PCBrZXkKLSAgICAgICAgPDwgIiAoJ25hbWUnLCAnc3RhdHVzJywg
J3RpbWUnLCBhbmQgJ2NsYXNzbmFtZScgYXJlIHJlc2VydmVkIGJ5ICIKLSAgICAgICAgPDwgR1RF
U1RfTkFNRV8gPDwgIikiOworLy8gVGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgYXR0cmlidXRlcyB1c2Vk
IGluIHRoZSA8dGVzdHN1aXRlcz4gZWxlbWVudCBvZiBYTUwKKy8vIG91dHB1dC4KK3N0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCBrUmVzZXJ2ZWRUZXN0U3VpdGVzQXR0cmlidXRlc1tdID0geworICAi
ZGlzYWJsZWQiLAorICAiZXJyb3JzIiwKKyAgImZhaWx1cmVzIiwKKyAgIm5hbWUiLAorICAicmFu
ZG9tX3NlZWQiLAorICAidGVzdHMiLAorICAidGltZSIsCisgICJ0aW1lc3RhbXAiCit9OworCisv
LyBUaGUgbGlzdCBvZiByZXNlcnZlZCBhdHRyaWJ1dGVzIHVzZWQgaW4gdGhlIDx0ZXN0c3VpdGU+
IGVsZW1lbnQgb2YgWE1MCisvLyBvdXRwdXQuCitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qga1Jl
c2VydmVkVGVzdFN1aXRlQXR0cmlidXRlc1tdID0geworICAiZGlzYWJsZWQiLAorICAiZXJyb3Jz
IiwKKyAgImZhaWx1cmVzIiwKKyAgIm5hbWUiLAorICAidGVzdHMiLAorICAidGltZSIKK307CisK
Ky8vIFRoZSBsaXN0IG9mIHJlc2VydmVkIGF0dHJpYnV0ZXMgdXNlZCBpbiB0aGUgPHRlc3RjYXNl
PiBlbGVtZW50IG9mIFhNTCBvdXRwdXQuCitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qga1Jlc2Vy
dmVkVGVzdENhc2VBdHRyaWJ1dGVzW10gPSB7CisgICAgImNsYXNzbmFtZSIsICAibmFtZSIsICAg
ICAgICAic3RhdHVzIiwgInRpbWUiLAorICAgICJ0eXBlX3BhcmFtIiwgInZhbHVlX3BhcmFtIiwg
ImZpbGUiLCAgICJsaW5lIn07CisKK3RlbXBsYXRlIDxpbnQga1NpemU+CitzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gQXJyYXlBc1ZlY3Rvcihjb25zdCBjaGFyKiBjb25zdCAoJmFycmF5KVtrU2l6
ZV0pIHsKKyAgcmV0dXJuIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPihhcnJheSwgYXJyYXkgKyBr
U2l6ZSk7Cit9CisKK3N0YXRpYyBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0UmVzZXJ2ZWRB
dHRyaWJ1dGVzRm9yRWxlbWVudCgKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgeG1sX2VsZW1lbnQp
IHsKKyAgaWYgKHhtbF9lbGVtZW50ID09ICJ0ZXN0c3VpdGVzIikgeworICAgIHJldHVybiBBcnJh
eUFzVmVjdG9yKGtSZXNlcnZlZFRlc3RTdWl0ZXNBdHRyaWJ1dGVzKTsKKyAgfSBlbHNlIGlmICh4
bWxfZWxlbWVudCA9PSAidGVzdHN1aXRlIikgeworICAgIHJldHVybiBBcnJheUFzVmVjdG9yKGtS
ZXNlcnZlZFRlc3RTdWl0ZUF0dHJpYnV0ZXMpOworICB9IGVsc2UgaWYgKHhtbF9lbGVtZW50ID09
ICJ0ZXN0Y2FzZSIpIHsKKyAgICByZXR1cm4gQXJyYXlBc1ZlY3RvcihrUmVzZXJ2ZWRUZXN0Q2Fz
ZUF0dHJpYnV0ZXMpOworICB9IGVsc2UgeworICAgIEdURVNUX0NIRUNLXyhmYWxzZSkgPDwgIlVu
cmVjb2duaXplZCB4bWxfZWxlbWVudCBwcm92aWRlZDogIiA8PCB4bWxfZWxlbWVudDsKKyAgfQor
ICAvLyBUaGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgYnV0IHNvbWUgY29tcGlsZXJzIG1heSBub3Qg
cmVhbGl6ZXMgdGhhdC4KKyAgcmV0dXJuIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPigpOworfQor
CitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0V29yZExpc3QoY29uc3Qgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+JiB3b3JkcykgeworICBNZXNzYWdlIHdvcmRfbGlzdDsKKyAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB3b3Jkcy5zaXplKCk7ICsraSkgeworICAgIGlmIChpID4gMCAmJiB3b3Jkcy5z
aXplKCkgPiAyKSB7CisgICAgICB3b3JkX2xpc3QgPDwgIiwgIjsKKyAgICB9CisgICAgaWYgKGkg
PT0gd29yZHMuc2l6ZSgpIC0gMSkgeworICAgICAgd29yZF9saXN0IDw8ICJhbmQgIjsKKyAgICB9
CisgICAgd29yZF9saXN0IDw8ICInIiA8PCB3b3Jkc1tpXSA8PCAiJyI7CisgIH0KKyAgcmV0dXJu
IHdvcmRfbGlzdC5HZXRTdHJpbmcoKTsKK30KKworc3RhdGljIGJvb2wgVmFsaWRhdGVUZXN0UHJv
cGVydHlOYW1lKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9wZXJ0eV9uYW1lLAorICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgcmVzZXJ2ZWRfbmFtZXMpIHsKKyAgaWYgKHN0
ZDo6ZmluZChyZXNlcnZlZF9uYW1lcy5iZWdpbigpLCByZXNlcnZlZF9uYW1lcy5lbmQoKSwgcHJv
cGVydHlfbmFtZSkgIT0KKyAgICAgICAgICByZXNlcnZlZF9uYW1lcy5lbmQoKSkgeworICAgIEFE
RF9GQUlMVVJFKCkgPDwgIlJlc2VydmVkIGtleSB1c2VkIGluIFJlY29yZFByb3BlcnR5KCk6ICIg
PDwgcHJvcGVydHlfbmFtZQorICAgICAgICAgICAgICAgICAgPDwgIiAoIiA8PCBGb3JtYXRXb3Jk
TGlzdChyZXNlcnZlZF9uYW1lcykKKyAgICAgICAgICAgICAgICAgIDw8ICIgYXJlIHJlc2VydmVk
IGJ5ICIgPDwgR1RFU1RfTkFNRV8gPDwgIikiOwogICAgIHJldHVybiBmYWxzZTsKICAgfQogICBy
ZXR1cm4gdHJ1ZTsKIH0KIAorLy8gQWRkcyBhIGZhaWx1cmUgaWYgdGhlIGtleSBpcyBhIHJlc2Vy
dmVkIGF0dHJpYnV0ZSBvZiB0aGUgZWxlbWVudCBuYW1lZAorLy8geG1sX2VsZW1lbnQuICBSZXR1
cm5zIHRydWUgaWYgdGhlIHByb3BlcnR5IGlzIHZhbGlkLgorYm9vbCBUZXN0UmVzdWx0OjpWYWxp
ZGF0ZVRlc3RQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgeG1sX2VsZW1lbnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9w
cm9wZXJ0eSkgeworICByZXR1cm4gVmFsaWRhdGVUZXN0UHJvcGVydHlOYW1lKHRlc3RfcHJvcGVy
dHkua2V5KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0UmVzZXJ2ZWRB
dHRyaWJ1dGVzRm9yRWxlbWVudCh4bWxfZWxlbWVudCkpOworfQorCiAvLyBDbGVhcnMgdGhlIG9i
amVjdC4KIHZvaWQgVGVzdFJlc3VsdDo6Q2xlYXIoKSB7CiAgIHRlc3RfcGFydF9yZXN1bHRzXy5j
bGVhcigpOwpAQCAtMTkxNCwxNCArMjI1MSwxNSBAQCBpbnQgVGVzdFJlc3VsdDo6dGVzdF9wcm9w
ZXJ0eV9jb3VudCgpIGNvbnN0IHsKIAogLy8gQ3JlYXRlcyBhIFRlc3Qgb2JqZWN0LgogCi0vLyBU
aGUgYyd0b3Igc2F2ZXMgdGhlIHZhbHVlcyBvZiBhbGwgR29vZ2xlIFRlc3QgZmxhZ3MuCisvLyBU
aGUgYyd0b3Igc2F2ZXMgdGhlIHN0YXRlcyBvZiBhbGwgZmxhZ3MuCiBUZXN0OjpUZXN0KCkKLSAg
ICA6IGd0ZXN0X2ZsYWdfc2F2ZXJfKG5ldyBpbnRlcm5hbDo6R1Rlc3RGbGFnU2F2ZXIpIHsKKyAg
ICA6IGd0ZXN0X2ZsYWdfc2F2ZXJfKG5ldyBHVEVTVF9GTEFHX1NBVkVSXykgewogfQogCi0vLyBU
aGUgZCd0b3IgcmVzdG9yZXMgdGhlIHZhbHVlcyBvZiBhbGwgR29vZ2xlIFRlc3QgZmxhZ3MuCisv
LyBUaGUgZCd0b3IgcmVzdG9yZXMgdGhlIHN0YXRlcyBvZiBhbGwgZmxhZ3MuICBUaGUgYWN0dWFs
IHdvcmsgaXMKKy8vIGRvbmUgYnkgdGhlIGQndG9yIG9mIHRoZSBndGVzdF9mbGFnX3NhdmVyXyBm
aWVsZCwgYW5kIHRodXMgbm90CisvLyB2aXNpYmxlIGhlcmUuCiBUZXN0Ojp+VGVzdCgpIHsKLSAg
ZGVsZXRlIGd0ZXN0X2ZsYWdfc2F2ZXJfOwogfQogCiAvLyBTZXRzIHVwIHRoZSB0ZXN0IGZpeHR1
cmUuCkBAIC0xOTM3LDEyICsyMjc1LDEyIEBAIHZvaWQgVGVzdDo6VGVhckRvd24oKSB7CiB9CiAK
IC8vIEFsbG93cyB1c2VyIHN1cHBsaWVkIGtleSB2YWx1ZSBwYWlycyB0byBiZSByZWNvcmRlZCBm
b3IgbGF0ZXIgb3V0cHV0Lgotdm9pZCBUZXN0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBjaGFyKiBr
ZXksIGNvbnN0IGNoYXIqIHZhbHVlKSB7Ci0gIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5SZWNv
cmRQcm9wZXJ0eUZvckN1cnJlbnRUZXN0KGtleSwgdmFsdWUpOwordm9pZCBUZXN0OjpSZWNvcmRQ
cm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYga2V5LCBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUp
IHsKKyAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPlJlY29yZFByb3BlcnR5KGtleSwgdmFsdWUp
OwogfQogCiAvLyBBbGxvd3MgdXNlciBzdXBwbGllZCBrZXkgdmFsdWUgcGFpcnMgdG8gYmUgcmVj
b3JkZWQgZm9yIGxhdGVyIG91dHB1dC4KLXZvaWQgVGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3Qg
Y2hhcioga2V5LCBpbnQgdmFsdWUpIHsKK3ZvaWQgVGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3Qg
c3RkOjpzdHJpbmcmIGtleSwgaW50IHZhbHVlKSB7CiAgIE1lc3NhZ2UgdmFsdWVfbWVzc2FnZTsK
ICAgdmFsdWVfbWVzc2FnZSA8PCB2YWx1ZTsKICAgUmVjb3JkUHJvcGVydHkoa2V5LCB2YWx1ZV9t
ZXNzYWdlLkdldFN0cmluZygpLmNfc3RyKCkpOwpAQCAtMTk1MSw3ICsyMjg5LDcgQEAgdm9pZCBU
ZXN0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBjaGFyKiBrZXksIGludCB2YWx1ZSkgewogbmFtZXNw
YWNlIGludGVybmFsIHsKIAogdm9pZCBSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oVGVz
dFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7CiAgIC8vIFRoaXMg
ZnVuY3Rpb24gaXMgYSBmcmllbmQgb2YgVW5pdFRlc3QgYW5kIGFzIHN1Y2ggaGFzIGFjY2VzcyB0
bwogICAvLyBBZGRUZXN0UGFydFJlc3VsdC4KICAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPkFk
ZFRlc3RQYXJ0UmVzdWx0KApAQCAtMTk1OSwyNyArMjI5NywxMSBAQCB2b2lkIFJlcG9ydEZhaWx1
cmVJblVua25vd25Mb2NhdGlvbihUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKICAg
ICAgIE5VTEwsICAvLyBObyBpbmZvIGFib3V0IHRoZSBzb3VyY2UgZmlsZSB3aGVyZSB0aGUgZXhj
ZXB0aW9uIG9jY3VycmVkLgogICAgICAgLTEsICAgIC8vIFdlIGhhdmUgbm8gaW5mbyBvbiB3aGlj
aCBsaW5lIGNhdXNlZCB0aGUgZXhjZXB0aW9uLgogICAgICAgbWVzc2FnZSwKLSAgICAgIFN0cmlu
ZygpKTsgIC8vIE5vIHN0YWNrIHRyYWNlLCBlaXRoZXIuCisgICAgICAiIik7ICAgLy8gTm8gc3Rh
Y2sgdHJhY2UsIGVpdGhlci4KIH0KIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiAKLSNpZiBH
VEVTVF9PU19XSU5ET1dTCi0vLyBXZSBhcmUgb24gV2luZG93cy4KLQotLy8gQWRkcyBhbiAiZXhj
ZXB0aW9uIHRocm93biIgZmF0YWwgZmFpbHVyZSB0byB0aGUgY3VycmVudCB0ZXN0Lgotc3RhdGlj
IHZvaWQgQWRkRXhjZXB0aW9uVGhyb3duRmFpbHVyZShEV09SRCBleGNlcHRpb25fY29kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbG9jYXRpb24p
IHsKLSAgTWVzc2FnZSBtZXNzYWdlOwotICBtZXNzYWdlIDw8ICJFeGNlcHRpb24gdGhyb3duIHdp
dGggY29kZSAweCIgPDwgc3RkOjpzZXRiYXNlKDE2KSA8PAotICAgIGV4Y2VwdGlvbl9jb2RlIDw8
IHN0ZDo6c2V0YmFzZSgxMCkgPDwgIiBpbiAiIDw8IGxvY2F0aW9uIDw8ICIuIjsKLQotICBpbnRl
cm5hbDo6UmVwb3J0RmFpbHVyZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjprRmF0
YWxGYWlsdXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2UuR2V0U3RyaW5nKCkpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQog
Ly8gR29vZ2xlIFRlc3QgcmVxdWlyZXMgYWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSB0
byB1c2UgdGhlIHNhbWUgdGVzdAogLy8gZml4dHVyZSBjbGFzcy4gIFRoaXMgZnVuY3Rpb24gY2hl
Y2tzIGlmIHRoZSBjdXJyZW50IHRlc3QgaGFzIHRoZQogLy8gc2FtZSBmaXh0dXJlIGNsYXNzIGFz
IHRoZSBmaXJzdCB0ZXN0IGluIHRoZSBjdXJyZW50IHRlc3QgY2FzZS4gIElmCkBAIC0xOTkwLDE1
ICsyMzEyLDEzIEBAIGJvb2wgVGVzdDo6SGFzU2FtZUZpeHR1cmVDbGFzcygpIHsKICAgY29uc3Qg
VGVzdENhc2UqIGNvbnN0IHRlc3RfY2FzZSA9IGltcGwtPmN1cnJlbnRfdGVzdF9jYXNlKCk7CiAK
ICAgLy8gSW5mbyBhYm91dCB0aGUgZmlyc3QgdGVzdCBpbiB0aGUgY3VycmVudCB0ZXN0IGNhc2Uu
Ci0gIGNvbnN0IGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGNvbnN0IGZpcnN0X3Rlc3RfaW5mbyA9
Ci0gICAgICB0ZXN0X2Nhc2UtPnRlc3RfaW5mb19saXN0KClbMF0tPmltcGwoKTsKLSAgY29uc3Qg
aW50ZXJuYWw6OlR5cGVJZCBmaXJzdF9maXh0dXJlX2lkID0gZmlyc3RfdGVzdF9pbmZvLT5maXh0
dXJlX2NsYXNzX2lkKCk7CisgIGNvbnN0IFRlc3RJbmZvKiBjb25zdCBmaXJzdF90ZXN0X2luZm8g
PSB0ZXN0X2Nhc2UtPnRlc3RfaW5mb19saXN0KClbMF07CisgIGNvbnN0IGludGVybmFsOjpUeXBl
SWQgZmlyc3RfZml4dHVyZV9pZCA9IGZpcnN0X3Rlc3RfaW5mby0+Zml4dHVyZV9jbGFzc19pZF87
CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGZpcnN0X3Rlc3RfbmFtZSA9IGZpcnN0X3Rlc3RfaW5mby0+
bmFtZSgpOwogCiAgIC8vIEluZm8gYWJvdXQgdGhlIGN1cnJlbnQgdGVzdC4KLSAgY29uc3QgaW50
ZXJuYWw6OlRlc3RJbmZvSW1wbCogY29uc3QgdGhpc190ZXN0X2luZm8gPQotICAgICAgaW1wbC0+
Y3VycmVudF90ZXN0X2luZm8oKS0+aW1wbCgpOwotICBjb25zdCBpbnRlcm5hbDo6VHlwZUlkIHRo
aXNfZml4dHVyZV9pZCA9IHRoaXNfdGVzdF9pbmZvLT5maXh0dXJlX2NsYXNzX2lkKCk7CisgIGNv
bnN0IFRlc3RJbmZvKiBjb25zdCB0aGlzX3Rlc3RfaW5mbyA9IGltcGwtPmN1cnJlbnRfdGVzdF9p
bmZvKCk7CisgIGNvbnN0IGludGVybmFsOjpUeXBlSWQgdGhpc19maXh0dXJlX2lkID0gdGhpc190
ZXN0X2luZm8tPmZpeHR1cmVfY2xhc3NfaWRfOwogICBjb25zdCBjaGFyKiBjb25zdCB0aGlzX3Rl
c3RfbmFtZSA9IHRoaXNfdGVzdF9pbmZvLT5uYW1lKCk7CiAKICAgaWYgKHRoaXNfZml4dHVyZV9p
ZCAhPSBmaXJzdF9maXh0dXJlX2lkKSB7CkBAIC0yMDA4LDggKzIzMjgsOCBAQCBib29sIFRlc3Q6
Okhhc1NhbWVGaXh0dXJlQ2xhc3MoKSB7CiAgICAgY29uc3QgYm9vbCB0aGlzX2lzX1RFU1QgPSB0
aGlzX2ZpeHR1cmVfaWQgPT0gaW50ZXJuYWw6OkdldFRlc3RUeXBlSWQoKTsKIAogICAgIGlmIChm
aXJzdF9pc19URVNUIHx8IHRoaXNfaXNfVEVTVCkgewotICAgICAgLy8gVGhlIHVzZXIgbWl4ZWQg
VEVTVCBhbmQgVEVTVF9GIGluIHRoaXMgdGVzdCBjYXNlIC0gd2UnbGwgdGVsbAotICAgICAgLy8g
aGltL2hlciBob3cgdG8gZml4IGl0LgorICAgICAgLy8gQm90aCBURVNUIGFuZCBURVNUX0YgYXBw
ZWFyIGluIHNhbWUgdGVzdCBjYXNlLCB3aGljaCBpcyBpbmNvcnJlY3QuCisgICAgICAvLyBUZWxs
IHRoZSB1c2VyIGhvdyB0byBmaXggdGhpcy4KIAogICAgICAgLy8gR2V0cyB0aGUgbmFtZSBvZiB0
aGUgVEVTVCBhbmQgdGhlIG5hbWUgb2YgdGhlIFRFU1RfRi4gIE5vdGUKICAgICAgIC8vIHRoYXQg
Zmlyc3RfaXNfVEVTVCBhbmQgdGhpc19pc19URVNUIGNhbm5vdCBib3RoIGJlIHRydWUsIGFzCkBA
IC0yMDI5LDggKzIzNDksOCBAQCBib29sIFRlc3Q6Okhhc1NhbWVGaXh0dXJlQ2xhc3MoKSB7CiAg
ICAgICAgICAgPDwgIndhbnQgdG8gY2hhbmdlIHRoZSBURVNUIHRvIFRFU1RfRiBvciBtb3ZlIGl0
IHRvIGFub3RoZXIgdGVzdFxuIgogICAgICAgICAgIDw8ICJjYXNlLiI7CiAgICAgfSBlbHNlIHsK
LSAgICAgIC8vIFRoZSB1c2VyIGRlZmluZWQgdHdvIGZpeHR1cmUgY2xhc3NlcyB3aXRoIHRoZSBz
YW1lIG5hbWUgaW4KLSAgICAgIC8vIHR3byBuYW1lc3BhY2VzIC0gd2UnbGwgdGVsbCBoaW0vaGVy
IGhvdyB0byBmaXggaXQuCisgICAgICAvLyBUd28gZml4dHVyZSBjbGFzc2VzIHdpdGggdGhlIHNh
bWUgbmFtZSBhcHBlYXIgaW4gdHdvIGRpZmZlcmVudAorICAgICAgLy8gbmFtZXNwYWNlcywgd2hp
Y2ggaXMgbm90IGFsbG93ZWQuIFRlbGwgdGhlIHVzZXIgaG93IHRvIGZpeCB0aGlzLgogICAgICAg
QUREX0ZBSUxVUkUoKQogICAgICAgICAgIDw8ICJBbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBj
YXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZVxuIgogICAgICAgICAgIDw8ICJjbGFz
cy4gIEhvd2V2ZXIsIGluIHRlc3QgY2FzZSAiCkBAIC0yMDQ4LDYyICsyMzY4LDE2NCBAQCBib29s
IFRlc3Q6Okhhc1NhbWVGaXh0dXJlQ2xhc3MoKSB7CiAgIHJldHVybiB0cnVlOwogfQogCi0vLyBS
dW5zIHRoZSB0ZXN0IGFuZCB1cGRhdGVzIHRoZSB0ZXN0IHJlc3VsdC4KLXZvaWQgVGVzdDo6UnVu
KCkgewotICBpZiAoIUhhc1NhbWVGaXh0dXJlQ2xhc3MoKSkgcmV0dXJuOwotCi0gIGludGVybmFs
OjpVbml0VGVzdEltcGwqIGNvbnN0IGltcGwgPSBpbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCk7
CiAjaWYgR1RFU1RfSEFTX1NFSAotICAvLyBDYXRjaCBTRUgtc3R5bGUgZXhjZXB0aW9ucy4KLSAg
aW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgX190
cnkgewotICAgIFNldFVwKCk7Ci0gIH0gX19leGNlcHQoaW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9u
czo6R1Rlc3RTaG91bGRQcm9jZXNzU0VIKAotICAgICAgR2V0RXhjZXB0aW9uQ29kZSgpKSkgewot
ICAgIEFkZEV4Y2VwdGlvblRocm93bkZhaWx1cmUoR2V0RXhjZXB0aW9uQ29kZSgpLCAiU2V0VXAo
KSIpOwotICB9CiAKLSAgLy8gV2Ugd2lsbCBydW4gdGhlIHRlc3Qgb25seSBpZiBTZXRVcCgpIGhh
ZCBubyBmYXRhbCBmYWlsdXJlLgotICBpZiAoIUhhc0ZhdGFsRmFpbHVyZSgpKSB7Ci0gICAgaW1w
bC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgICBfX3Ry
eSB7Ci0gICAgICBUZXN0Qm9keSgpOwotICAgIH0gX19leGNlcHQoaW50ZXJuYWw6OlVuaXRUZXN0
T3B0aW9uczo6R1Rlc3RTaG91bGRQcm9jZXNzU0VIKAotICAgICAgICBHZXRFeGNlcHRpb25Db2Rl
KCkpKSB7Ci0gICAgICBBZGRFeGNlcHRpb25UaHJvd25GYWlsdXJlKEdldEV4Y2VwdGlvbkNvZGUo
KSwgInRoZSB0ZXN0IGJvZHkiKTsKLSAgICB9Ci0gIH0KKy8vIEFkZHMgYW4gImV4Y2VwdGlvbiB0
aHJvd24iIGZhdGFsIGZhaWx1cmUgdG8gdGhlIGN1cnJlbnQgdGVzdC4gIFRoaXMKKy8vIGZ1bmN0
aW9uIHJldHVybnMgaXRzIHJlc3VsdCB2aWEgYW4gb3V0cHV0IHBhcmFtZXRlciBwb2ludGVyIGJl
Y2F1c2UgVkMrKworLy8gcHJvaGliaXRzIGNyZWF0aW9uIG9mIG9iamVjdHMgd2l0aCBkZXN0cnVj
dG9ycyBvbiBzdGFjayBpbiBmdW5jdGlvbnMKKy8vIHVzaW5nIF9fdHJ5IChzZWUgZXJyb3IgQzI3
MTIpLgorc3RhdGljIHN0ZDo6c3RyaW5nKiBGb3JtYXRTZWhFeGNlcHRpb25NZXNzYWdlKERXT1JE
IGV4Y2VwdGlvbl9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7CisgIE1lc3NhZ2UgbWVzc2FnZTsKKyAgbWVz
c2FnZSA8PCAiU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgiIDw8IHN0ZDo6c2V0YmFzZSgxNikg
PDwKKyAgICBleGNlcHRpb25fY29kZSA8PCBzdGQ6OnNldGJhc2UoMTApIDw8ICIgdGhyb3duIGlu
ICIgPDwgbG9jYXRpb24gPDwgIi4iOwogCi0gIC8vIEhvd2V2ZXIsIHdlIHdhbnQgdG8gY2xlYW4g
dXAgYXMgbXVjaCBhcyBwb3NzaWJsZS4gIEhlbmNlIHdlIHdpbGwKLSAgLy8gYWx3YXlzIGNhbGwg
VGVhckRvd24oKSwgZXZlbiBpZiBTZXRVcCgpIG9yIHRoZSB0ZXN0IGJvZHkgaGFzCi0gIC8vIGZh
aWxlZC4KLSAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3Qo
KTsKKyAgcmV0dXJuIG5ldyBzdGQ6OnN0cmluZyhtZXNzYWdlLkdldFN0cmluZygpKTsKK30KKwor
I2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICisKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKyNpZiBH
VEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBBZGRzIGFuICJleGNlcHRpb24gdGhyb3duIiBmYXRh
bCBmYWlsdXJlIHRvIHRoZSBjdXJyZW50IHRlc3QuCitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0
Q3h4RXhjZXB0aW9uTWVzc2FnZShjb25zdCBjaGFyKiBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7
CisgIE1lc3NhZ2UgbWVzc2FnZTsKKyAgaWYgKGRlc2NyaXB0aW9uICE9IE5VTEwpIHsKKyAgICBt
ZXNzYWdlIDw8ICJDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gXCIiIDw8IGRlc2NyaXB0
aW9uIDw8ICJcIiI7CisgIH0gZWxzZSB7CisgICAgbWVzc2FnZSA8PCAiVW5rbm93biBDKysgZXhj
ZXB0aW9uIjsKKyAgfQorICBtZXNzYWdlIDw8ICIgdGhyb3duIGluICIgPDwgbG9jYXRpb24gPDwg
Ii4iOworCisgIHJldHVybiBtZXNzYWdlLkdldFN0cmluZygpOworfQorCitzdGF0aWMgc3RkOjpz
dHJpbmcgUHJpbnRUZXN0UGFydFJlc3VsdFRvU3RyaW5nKAorICAgIGNvbnN0IFRlc3RQYXJ0UmVz
dWx0JiB0ZXN0X3BhcnRfcmVzdWx0KTsKKworR29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb246Okdv
b2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uKAorICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBmYWls
dXJlKQorICAgIDogOjpzdGQ6OnJ1bnRpbWVfZXJyb3IoUHJpbnRUZXN0UGFydFJlc3VsdFRvU3Ry
aW5nKGZhaWx1cmUpLmNfc3RyKCkpIHt9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElP
TlMKKworLy8gV2UgcHV0IHRoZXNlIGhlbHBlciBmdW5jdGlvbnMgaW4gdGhlIGludGVybmFsIG5h
bWVzcGFjZSBhcyBJQk0ncyB4bEMKKy8vIGNvbXBpbGVyIHJlamVjdHMgdGhlIGNvZGUgaWYgdGhl
eSB3ZXJlIGRlY2xhcmVkIHN0YXRpYy4KKworLy8gUnVucyB0aGUgZ2l2ZW4gbWV0aG9kIGFuZCBo
YW5kbGVzIFNFSCBleGNlcHRpb25zIGl0IHRocm93cywgd2hlbgorLy8gU0VIIGlzIHN1cHBvcnRl
ZDsgcmV0dXJucyB0aGUgMC12YWx1ZSBmb3IgdHlwZSBSZXN1bHQgaW4gY2FzZSBvZiBhbgorLy8g
U0VIIGV4Y2VwdGlvbi4gIChNaWNyb3NvZnQgY29tcGlsZXJzIGNhbm5vdCBoYW5kbGUgU0VIIGFu
ZCBDKysKKy8vIGV4Y2VwdGlvbnMgaW4gdGhlIHNhbWUgZnVuY3Rpb24uICBUaGVyZWZvcmUsIHdl
IHByb3ZpZGUgYSBzZXBhcmF0ZQorLy8gd3JhcHBlciBmdW5jdGlvbiBmb3IgaGFuZGxpbmcgU0VI
IGV4Y2VwdGlvbnMuKQordGVtcGxhdGUgPGNsYXNzIFQsIHR5cGVuYW1lIFJlc3VsdD4KK1Jlc3Vs
dCBIYW5kbGVTZWhFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAgICBUKiBvYmplY3Qs
IFJlc3VsdCAoVDo6Km1ldGhvZCkoKSwgY29uc3QgY2hhciogbG9jYXRpb24pIHsKKyNpZiBHVEVT
VF9IQVNfU0VICiAgIF9fdHJ5IHsKLSAgICBUZWFyRG93bigpOwotICB9IF9fZXhjZXB0KGludGVy
bmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCgKKyAgICByZXR1cm4g
KG9iamVjdC0+Km1ldGhvZCkoKTsKKyAgfSBfX2V4Y2VwdCAoaW50ZXJuYWw6OlVuaXRUZXN0T3B0
aW9uczo6R1Rlc3RTaG91bGRQcm9jZXNzU0VIKCAgLy8gTk9MSU5UCiAgICAgICBHZXRFeGNlcHRp
b25Db2RlKCkpKSB7Ci0gICAgQWRkRXhjZXB0aW9uVGhyb3duRmFpbHVyZShHZXRFeGNlcHRpb25D
b2RlKCksICJUZWFyRG93bigpIik7CisgICAgLy8gV2UgY3JlYXRlIHRoZSBleGNlcHRpb24gbWVz
c2FnZSBvbiB0aGUgaGVhcCBiZWNhdXNlIFZDKysgcHJvaGliaXRzCisgICAgLy8gY3JlYXRpb24g
b2Ygb2JqZWN0cyB3aXRoIGRlc3RydWN0b3JzIG9uIHN0YWNrIGluIGZ1bmN0aW9ucyB1c2luZyBf
X3RyeQorICAgIC8vIChzZWUgZXJyb3IgQzI3MTIpLgorICAgIHN0ZDo6c3RyaW5nKiBleGNlcHRp
b25fbWVzc2FnZSA9IEZvcm1hdFNlaEV4Y2VwdGlvbk1lc3NhZ2UoCisgICAgICAgIEdldEV4Y2Vw
dGlvbkNvZGUoKSwgbG9jYXRpb24pOworICAgIGludGVybmFsOjpSZXBvcnRGYWlsdXJlSW5Vbmtu
b3duTG9jYXRpb24oVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXhjZXB0aW9uX21lc3NhZ2UpOworICAg
IGRlbGV0ZSBleGNlcHRpb25fbWVzc2FnZTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzdWx0
PigwKTsKICAgfQorI2Vsc2UKKyAgKHZvaWQpbG9jYXRpb247CisgIHJldHVybiAob2JqZWN0LT4q
bWV0aG9kKSgpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICit9CiAKLSNlbHNlICAvLyBXZSBh
cmUgb24gYSBjb21waWxlciBvciBwbGF0Zm9ybSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBTRUguCi0g
IGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7Ci0gIFNl
dFVwKCk7CisvLyBSdW5zIHRoZSBnaXZlbiBtZXRob2QgYW5kIGNhdGNoZXMgYW5kIHJlcG9ydHMg
QysrIGFuZC9vciBTRUgtc3R5bGUKKy8vIGV4Y2VwdGlvbnMsIGlmIHRoZXkgYXJlIHN1cHBvcnRl
ZDsgcmV0dXJucyB0aGUgMC12YWx1ZSBmb3IgdHlwZQorLy8gUmVzdWx0IGluIGNhc2Ugb2YgYW4g
U0VIIGV4Y2VwdGlvbi4KK3RlbXBsYXRlIDxjbGFzcyBULCB0eXBlbmFtZSBSZXN1bHQ+CitSZXN1
bHQgSGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgVCogb2JqZWN0LCBS
ZXN1bHQgKFQ6OiptZXRob2QpKCksIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7CisgIC8vIE5PVEU6
IFRoZSB1c2VyIGNvZGUgY2FuIGFmZmVjdCB0aGUgd2F5IGluIHdoaWNoIEdvb2dsZSBUZXN0IGhh
bmRsZXMKKyAgLy8gZXhjZXB0aW9ucyBieSBzZXR0aW5nIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0
aW9ucyksIGJ1dCBvbmx5IGJlZm9yZQorICAvLyBSVU5fQUxMX1RFU1RTKCkgc3RhcnRzLiBJdCBp
cyB0ZWNobmljYWxseSBwb3NzaWJsZSB0byBjaGVjayB0aGUgZmxhZworICAvLyBhZnRlciB0aGUg
ZXhjZXB0aW9uIGlzIGNhdWdodCBhbmQgZWl0aGVyIHJlcG9ydCBvciByZS10aHJvdyB0aGUKKyAg
Ly8gZXhjZXB0aW9uIGJhc2VkIG9uIHRoZSBmbGFnJ3MgdmFsdWU6CisgIC8vCisgIC8vIHRyeSB7
CisgIC8vICAgLy8gUGVyZm9ybSB0aGUgdGVzdCBtZXRob2QuCisgIC8vIH0gY2F0Y2ggKC4uLikg
eworICAvLyAgIGlmIChHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKQorICAvLyAgICAgLy8g
UmVwb3J0IHRoZSBleGNlcHRpb24gYXMgZmFpbHVyZS4KKyAgLy8gICBlbHNlCisgIC8vICAgICB0
aHJvdzsgIC8vIFJlLXRocm93cyB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uLgorICAvLyB9CisgIC8v
CisgIC8vIEhvd2V2ZXIsIHRoZSBwdXJwb3NlIG9mIHRoaXMgZmxhZyBpcyB0byBhbGxvdyB0aGUg
cHJvZ3JhbSB0byBkcm9wIGludG8KKyAgLy8gdGhlIGRlYnVnZ2VyIHdoZW4gdGhlIGV4Y2VwdGlv
biBpcyB0aHJvd24uIE9uIG1vc3QgcGxhdGZvcm1zLCBvbmNlIHRoZQorICAvLyBjb250cm9sIGVu
dGVycyB0aGUgY2F0Y2ggYmxvY2ssIHRoZSBleGNlcHRpb24gb3JpZ2luIGluZm9ybWF0aW9uIGlz
CisgIC8vIGxvc3QgYW5kIHRoZSBkZWJ1Z2dlciB3aWxsIHN0b3AgdGhlIHByb2dyYW0gYXQgdGhl
IHBvaW50IG9mIHRoZQorICAvLyByZS10aHJvdyBpbiB0aGlzIGZ1bmN0aW9uIC0tIGluc3RlYWQg
b2YgYXQgdGhlIHBvaW50IG9mIHRoZSBvcmlnaW5hbAorICAvLyB0aHJvdyBzdGF0ZW1lbnQgaW4g
dGhlIGNvZGUgdW5kZXIgdGVzdC4gIEZvciB0aGlzIHJlYXNvbiwgd2UgcGVyZm9ybQorICAvLyB0
aGUgY2hlY2sgZWFybHksIHNhY3JpZmljaW5nIHRoZSBhYmlsaXR5IHRvIGFmZmVjdCBHb29nbGUg
VGVzdCdzCisgIC8vIGV4Y2VwdGlvbiBoYW5kbGluZyBpbiB0aGUgbWV0aG9kIHdoZXJlIHRoZSBl
eGNlcHRpb24gaXMgdGhyb3duLgorICBpZiAoaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpLT5j
YXRjaF9leGNlcHRpb25zKCkpIHsKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworICAgIHRyeSB7
CisgICAgICByZXR1cm4gSGFuZGxlU2VoRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQob2Jq
ZWN0LCBtZXRob2QsIGxvY2F0aW9uKTsKKyAgICB9IGNhdGNoIChjb25zdCBBc3NlcnRpb25FeGNl
cHRpb24mKSB7ICAvLyBOT0xJTlQKKyAgICAgIC8vIFRoaXMgZmFpbHVyZSB3YXMgcmVwb3J0ZWQg
YWxyZWFkeS4KKyAgICB9IGNhdGNoIChjb25zdCBpbnRlcm5hbDo6R29vZ2xlVGVzdEZhaWx1cmVF
eGNlcHRpb24mKSB7ICAvLyBOT0xJTlQKKyAgICAgIC8vIFRoaXMgZXhjZXB0aW9uIHR5cGUgY2Fu
IG9ubHkgYmUgdGhyb3duIGJ5IGEgZmFpbGVkIEdvb2dsZQorICAgICAgLy8gVGVzdCBhc3NlcnRp
b24gd2l0aCB0aGUgaW50ZW50aW9uIG9mIGxldHRpbmcgYW5vdGhlciB0ZXN0aW5nCisgICAgICAv
LyBmcmFtZXdvcmsgY2F0Y2ggaXQuICBUaGVyZWZvcmUgd2UganVzdCByZS10aHJvdyBpdC4KKyAg
ICAgIHRocm93OworICAgIH0gY2F0Y2ggKGNvbnN0IHN0ZDo6ZXhjZXB0aW9uJiBlKSB7ICAvLyBO
T0xJTlQKKyAgICAgIGludGVybmFsOjpSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oCisg
ICAgICAgICAgVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsCisgICAgICAgICAgRm9ybWF0
Q3h4RXhjZXB0aW9uTWVzc2FnZShlLndoYXQoKSwgbG9jYXRpb24pKTsKKyAgICB9IGNhdGNoICgu
Li4pIHsgIC8vIE5PTElOVAorICAgICAgaW50ZXJuYWw6OlJlcG9ydEZhaWx1cmVJblVua25vd25M
b2NhdGlvbigKKyAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKKyAgICAg
ICAgICBGb3JtYXRDeHhFeGNlcHRpb25NZXNzYWdlKE5VTEwsIGxvY2F0aW9uKSk7CisgICAgfQor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZXN1bHQ+KDApOworI2Vsc2UKKyAgICByZXR1cm4gSGFu
ZGxlU2VoRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQob2JqZWN0LCBtZXRob2QsIGxvY2F0
aW9uKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKKyAgfSBlbHNlIHsKKyAgICBy
ZXR1cm4gKG9iamVjdC0+Km1ldGhvZCkoKTsKKyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UgaW50
ZXJuYWwKIAorLy8gUnVucyB0aGUgdGVzdCBhbmQgdXBkYXRlcyB0aGUgdGVzdCByZXN1bHQuCit2
b2lkIFRlc3Q6OlJ1bigpIHsKKyAgaWYgKCFIYXNTYW1lRml4dHVyZUNsYXNzKCkpIHJldHVybjsK
KworICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0gaW50ZXJuYWw6OkdldFVu
aXRUZXN0SW1wbCgpOworICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZp
bmdHVGVzdCgpOworICBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0
ZWQodGhpcywgJlRlc3Q6OlNldFVwLCAiU2V0VXAoKSIpOwogICAvLyBXZSB3aWxsIHJ1biB0aGUg
dGVzdCBvbmx5IGlmIFNldFVwKCkgd2FzIHN1Y2Nlc3NmdWwuCiAgIGlmICghSGFzRmF0YWxGYWls
dXJlKCkpIHsKICAgICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdH
VGVzdCgpOwotICAgIFRlc3RCb2R5KCk7CisgICAgaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJ
bk1ldGhvZElmU3VwcG9ydGVkKAorICAgICAgICB0aGlzLCAmVGVzdDo6VGVzdEJvZHksICJ0aGUg
dGVzdCBib2R5Iik7CiAgIH0KIAogICAvLyBIb3dldmVyLCB3ZSB3YW50IHRvIGNsZWFuIHVwIGFz
IG11Y2ggYXMgcG9zc2libGUuICBIZW5jZSB3ZSB3aWxsCiAgIC8vIGFsd2F5cyBjYWxsIFRlYXJE
b3duKCksIGV2ZW4gaWYgU2V0VXAoKSBvciB0aGUgdGVzdCBib2R5IGhhcwogICAvLyBmYWlsZWQu
CiAgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7Ci0g
IFRlYXJEb3duKCk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKKyAgaW50ZXJuYWw6OkhhbmRs
ZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAorICAgICAgdGhpcywgJlRlc3Q6OlRlYXJE
b3duLCAiVGVhckRvd24oKSIpOwogfQogCi0KIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGN1cnJl
bnQgdGVzdCBoYXMgYSBmYXRhbCBmYWlsdXJlLgogYm9vbCBUZXN0OjpIYXNGYXRhbEZhaWx1cmUo
KSB7CiAgIHJldHVybiBpbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCktPmN1cnJlbnRfdGVzdF9y
ZXN1bHQoKS0+SGFzRmF0YWxGYWlsdXJlKCk7CkBAIC0yMTE4LDIyICsyNTQwLDI4IEBAIGJvb2wg
VGVzdDo6SGFzTm9uZmF0YWxGYWlsdXJlKCkgewogLy8gY2xhc3MgVGVzdEluZm8KIAogLy8gQ29u
c3RydWN0cyBhIFRlc3RJbmZvIG9iamVjdC4gSXQgYXNzdW1lcyBvd25lcnNoaXAgb2YgdGhlIHRl
c3QgZmFjdG9yeQotLy8gb2JqZWN0IHZpYSBpbXBsXy4KLVRlc3RJbmZvOjpUZXN0SW5mbyhjb25z
dCBjaGFyKiBhX3Rlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGFfbmFtZSwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX3Rlc3RfY2FzZV9jb21t
ZW50LAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfY29tbWVudCwKKy8vIG9iamVj
dC4KK1Rlc3RJbmZvOjpUZXN0SW5mbyhjb25zdCBzdGQ6OnN0cmluZyYgYV90ZXN0X2Nhc2VfbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgYV9uYW1lLAorICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfdHlwZV9wYXJhbSwKKyAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBhX3ZhbHVlX3BhcmFtLAorICAgICAgICAgICAgICAgICAgIGludGVybmFs
OjpDb2RlTG9jYXRpb24gYV9jb2RlX2xvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgIGludGVy
bmFsOjpUeXBlSWQgZml4dHVyZV9jbGFzc19pZCwKLSAgICAgICAgICAgICAgICAgICBpbnRlcm5h
bDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5KSB7Ci0gIGltcGxfID0gbmV3IGludGVybmFsOjpU
ZXN0SW5mb0ltcGwodGhpcywgYV90ZXN0X2Nhc2VfbmFtZSwgYV9uYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFfdGVzdF9jYXNlX2NvbW1lbnQsIGFfY29tbWVudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXh0dXJlX2NsYXNzX2lkLCBm
YWN0b3J5KTsKLX0KKyAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNl
KiBmYWN0b3J5KQorICAgIDogdGVzdF9jYXNlX25hbWVfKGFfdGVzdF9jYXNlX25hbWUpLAorICAg
ICAgbmFtZV8oYV9uYW1lKSwKKyAgICAgIHR5cGVfcGFyYW1fKGFfdHlwZV9wYXJhbSA/IG5ldyBz
dGQ6OnN0cmluZyhhX3R5cGVfcGFyYW0pIDogTlVMTCksCisgICAgICB2YWx1ZV9wYXJhbV8oYV92
YWx1ZV9wYXJhbSA/IG5ldyBzdGQ6OnN0cmluZyhhX3ZhbHVlX3BhcmFtKSA6IE5VTEwpLAorICAg
ICAgbG9jYXRpb25fKGFfY29kZV9sb2NhdGlvbiksCisgICAgICBmaXh0dXJlX2NsYXNzX2lkXyhm
aXh0dXJlX2NsYXNzX2lkKSwKKyAgICAgIHNob3VsZF9ydW5fKGZhbHNlKSwKKyAgICAgIGlzX2Rp
c2FibGVkXyhmYWxzZSksCisgICAgICBtYXRjaGVzX2ZpbHRlcl8oZmFsc2UpLAorICAgICAgZmFj
dG9yeV8oZmFjdG9yeSksCisgICAgICByZXN1bHRfKCkge30KIAogLy8gRGVzdHJ1Y3RzIGEgVGVz
dEluZm8gb2JqZWN0LgotVGVzdEluZm86On5UZXN0SW5mbygpIHsKLSAgZGVsZXRlIGltcGxfOwot
fQorVGVzdEluZm86On5UZXN0SW5mbygpIHsgZGVsZXRlIGZhY3RvcnlfOyB9CiAKIG5hbWVzcGFj
ZSBpbnRlcm5hbCB7CiAKQEAgLTIxNDQsMTAgKzI1NzIsMTEgQEAgbmFtZXNwYWNlIGludGVybmFs
IHsKIC8vCiAvLyAgIHRlc3RfY2FzZV9uYW1lOiAgIG5hbWUgb2YgdGhlIHRlc3QgY2FzZQogLy8g
ICBuYW1lOiAgICAgICAgICAgICBuYW1lIG9mIHRoZSB0ZXN0Ci0vLyAgIHRlc3RfY2FzZV9jb21t
ZW50OiBhIGNvbW1lbnQgb24gdGhlIHRlc3QgY2FzZSB0aGF0IHdpbGwgYmUgaW5jbHVkZWQgaW4K
LS8vICAgICAgICAgICAgICAgICAgICAgIHRoZSB0ZXN0IG91dHB1dAotLy8gICBjb21tZW50OiAg
ICAgICAgICBhIGNvbW1lbnQgb24gdGhlIHRlc3QgdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluIHRo
ZQotLy8gICAgICAgICAgICAgICAgICAgICB0ZXN0IG91dHB1dAorLy8gICB0eXBlX3BhcmFtOiAg
ICAgICB0aGUgbmFtZSBvZiB0aGUgdGVzdCdzIHR5cGUgcGFyYW1ldGVyLCBvciBOVUxMIGlmCisv
LyAgICAgICAgICAgICAgICAgICAgIHRoaXMgaXMgbm90IGEgdHlwZWQgb3IgYSB0eXBlLXBhcmFt
ZXRlcml6ZWQgdGVzdC4KKy8vICAgdmFsdWVfcGFyYW06ICAgICAgdGV4dCByZXByZXNlbnRhdGlv
biBvZiB0aGUgdGVzdCdzIHZhbHVlIHBhcmFtZXRlciwKKy8vICAgICAgICAgICAgICAgICAgICAg
b3IgTlVMTCBpZiB0aGlzIGlzIG5vdCBhIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKy8vICAg
Y29kZV9sb2NhdGlvbjogICAgY29kZSBsb2NhdGlvbiB3aGVyZSB0aGUgdGVzdCBpcyBkZWZpbmVk
CiAvLyAgIGZpeHR1cmVfY2xhc3NfaWQ6IElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKIC8v
ICAgc2V0X3VwX3RjOiAgICAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzIHVw
IHRoZSB0ZXN0IGNhc2UKIC8vICAgdGVhcl9kb3duX3RjOiAgICAgcG9pbnRlciB0byB0aGUgZnVu
Y3Rpb24gdGhhdCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UKQEAgLTIxNTUsMjIgKzI1ODQsMjQg
QEAgbmFtZXNwYWNlIGludGVybmFsIHsKIC8vICAgICAgICAgICAgICAgICAgICAgVGhlIG5ld2x5
IGNyZWF0ZWQgVGVzdEluZm8gaW5zdGFuY2Ugd2lsbCBhc3N1bWUKIC8vICAgICAgICAgICAgICAg
ICAgICAgb3duZXJzaGlwIG9mIHRoZSBmYWN0b3J5IG9iamVjdC4KIFRlc3RJbmZvKiBNYWtlQW5k
UmVnaXN0ZXJUZXN0SW5mbygKLSAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwgY29uc3Qg
Y2hhciogbmFtZSwKLSAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfY29tbWVudCwgY29uc3QgY2hh
ciogY29tbWVudCwKKyAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICBjb25zdCBj
aGFyKiBuYW1lLAorICAgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0sCisgICAgY29uc3QgY2hhciog
dmFsdWVfcGFyYW0sCisgICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24sCiAgICAgVHlwZUlk
IGZpeHR1cmVfY2xhc3NfaWQsCiAgICAgU2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAg
IFRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YywKICAgICBUZXN0RmFjdG9yeUJhc2Uq
IGZhY3RvcnkpIHsKICAgVGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9Ci0gICAgICBuZXcgVGVz
dEluZm8odGVzdF9jYXNlX25hbWUsIG5hbWUsIHRlc3RfY2FzZV9jb21tZW50LCBjb21tZW50LAot
ICAgICAgICAgICAgICAgICAgIGZpeHR1cmVfY2xhc3NfaWQsIGZhY3RvcnkpOworICAgICAgbmV3
IFRlc3RJbmZvKHRlc3RfY2FzZV9uYW1lLCBuYW1lLCB0eXBlX3BhcmFtLCB2YWx1ZV9wYXJhbSwK
KyAgICAgICAgICAgICAgICAgICBjb2RlX2xvY2F0aW9uLCBmaXh0dXJlX2NsYXNzX2lkLCBmYWN0
b3J5KTsKICAgR2V0VW5pdFRlc3RJbXBsKCktPkFkZFRlc3RJbmZvKHNldF91cF90YywgdGVhcl9k
b3duX3RjLCB0ZXN0X2luZm8pOwogICByZXR1cm4gdGVzdF9pbmZvOwogfQogCi0jaWYgR1RFU1Rf
SEFTX1BBUkFNX1RFU1QKIHZvaWQgUmVwb3J0SW52YWxpZFRlc3RDYXNlVHlwZShjb25zdCBjaGFy
KiB0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBmaWxlLCBpbnQgbGluZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
ZGVMb2NhdGlvbiBjb2RlX2xvY2F0aW9uKSB7CiAgIE1lc3NhZ2UgZXJyb3JzOwogICBlcnJvcnMK
ICAgICAgIDw8ICJBdHRlbXB0ZWQgcmVkZWZpbml0aW9uIG9mIHRlc3QgY2FzZSAiIDw8IHRlc3Rf
Y2FzZV9uYW1lIDw8ICIuXG4iCkBAIC0yMTgyLDQ4ICsyNjEzLDEyIEBAIHZvaWQgUmVwb3J0SW52
YWxpZFRlc3RDYXNlVHlwZShjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKICAgICAgIDw8ICJw
cm9iYWJseSByZW5hbWUgb25lIG9mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50byBk
aWZmZXJlbnRcbiIKICAgICAgIDw8ICJ0ZXN0IGNhc2VzLiI7CiAKLSAgZnByaW50ZihzdGRlcnIs
ICIlcyAlcyIsIEZvcm1hdEZpbGVMb2NhdGlvbihmaWxlLCBsaW5lKS5jX3N0cigpLAotICAgICAg
ICAgIGVycm9ycy5HZXRTdHJpbmcoKS5jX3N0cigpKTsKKyAgR1RFU1RfTE9HXyhFUlJPUikgPDwg
Rm9ybWF0RmlsZUxvY2F0aW9uKGNvZGVfbG9jYXRpb24uZmlsZS5jX3N0cigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZV9sb2NhdGlvbi5saW5lKQorICAg
ICAgICAgICAgICAgICAgICA8PCAiICIgPDwgZXJyb3JzLkdldFN0cmluZygpOwogfQotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAot
Ly8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIG5hbWUuCi1jb25zdCBjaGFyKiBUZXN0SW5mbzo6dGVz
dF9jYXNlX25hbWUoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBsXy0+dGVzdF9jYXNlX25hbWUoKTsK
LX0KLQotLy8gUmV0dXJucyB0aGUgdGVzdCBuYW1lLgotY29uc3QgY2hhciogVGVzdEluZm86Om5h
bWUoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBsXy0+bmFtZSgpOwotfQotCi0vLyBSZXR1cm5zIHRo
ZSB0ZXN0IGNhc2UgY29tbWVudC4KLWNvbnN0IGNoYXIqIFRlc3RJbmZvOjp0ZXN0X2Nhc2VfY29t
bWVudCgpIGNvbnN0IHsKLSAgcmV0dXJuIGltcGxfLT50ZXN0X2Nhc2VfY29tbWVudCgpOwotfQot
Ci0vLyBSZXR1cm5zIHRoZSB0ZXN0IGNvbW1lbnQuCi1jb25zdCBjaGFyKiBUZXN0SW5mbzo6Y29t
bWVudCgpIGNvbnN0IHsKLSAgcmV0dXJuIGltcGxfLT5jb21tZW50KCk7Ci19Ci0KLS8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGlzIHRlc3Qgc2hvdWxkIHJ1bi4KLWJvb2wgVGVzdEluZm86OnNob3VsZF9y
dW4oKSBjb25zdCB7IHJldHVybiBpbXBsXy0+c2hvdWxkX3J1bigpOyB9Ci0KLS8vIFJldHVybnMg
dHJ1ZSBpZiB0aGlzIHRlc3QgbWF0Y2hlcyB0aGUgdXNlci1zcGVjaWZpZWQgZmlsdGVyLgotYm9v
bCBUZXN0SW5mbzo6bWF0Y2hlc19maWx0ZXIoKSBjb25zdCB7IHJldHVybiBpbXBsXy0+bWF0Y2hl
c19maWx0ZXIoKTsgfQotCi0vLyBSZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIHRlc3QuCi1jb25z
dCBUZXN0UmVzdWx0KiBUZXN0SW5mbzo6cmVzdWx0KCkgY29uc3QgeyByZXR1cm4gaW1wbF8tPnJl
c3VsdCgpOyB9Ci0KLS8vIEluY3JlbWVudHMgdGhlIG51bWJlciBvZiBkZWF0aCB0ZXN0cyBlbmNv
dW50ZXJlZCBpbiB0aGlzIHRlc3Qgc28KLS8vIGZhci4KLWludCBUZXN0SW5mbzo6aW5jcmVtZW50
X2RlYXRoX3Rlc3RfY291bnQoKSB7Ci0gIHJldHVybiBpbXBsXy0+cmVzdWx0KCktPmluY3JlbWVu
dF9kZWF0aF90ZXN0X2NvdW50KCk7Ci19Ci0KIG5hbWVzcGFjZSB7CiAKIC8vIEEgcHJlZGljYXRl
IHRoYXQgY2hlY2tzIHRoZSB0ZXN0IG5hbWUgb2YgYSBUZXN0SW5mbyBhZ2FpbnN0IGEga25vd24K
QEAgLTIyNDQsMTEgKzI2MzksMTEgQEAgY2xhc3MgVGVzdE5hbWVJcyB7CiAKICAgLy8gUmV0dXJu
cyB0cnVlIGlmZiB0aGUgdGVzdCBuYW1lIG9mIHRlc3RfaW5mbyBtYXRjaGVzIG5hbWVfLgogICBi
b29sIG9wZXJhdG9yKCkoY29uc3QgVGVzdEluZm8gKiB0ZXN0X2luZm8pIGNvbnN0IHsKLSAgICBy
ZXR1cm4gdGVzdF9pbmZvICYmIGludGVybmFsOjpTdHJpbmcodGVzdF9pbmZvLT5uYW1lKCkpLkNv
bXBhcmUobmFtZV8pID09IDA7CisgICAgcmV0dXJuIHRlc3RfaW5mbyAmJiB0ZXN0X2luZm8tPm5h
bWUoKSA9PSBuYW1lXzsKICAgfQogCiAgcHJpdmF0ZToKLSAgaW50ZXJuYWw6OlN0cmluZyBuYW1l
XzsKKyAgc3RkOjpzdHJpbmcgbmFtZV87CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UKQEAgLTIyNTks
NzggKzI2NTQsNjAgQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIC8vIGFuZCBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUCBpbnRvIHJlZ3VsYXIgdGVzdHMgYW5kIHJlZ2lzdGVycyB0aG9zZS4KIC8vIFRo
aXMgd2lsbCBiZSBkb25lIGp1c3Qgb25jZSBkdXJpbmcgdGhlIHByb2dyYW0gcnVudGltZS4KIHZv
aWQgVW5pdFRlc3RJbXBsOjpSZWdpc3RlclBhcmFtZXRlcml6ZWRUZXN0cygpIHsKLSNpZiBHVEVT
VF9IQVNfUEFSQU1fVEVTVAogICBpZiAoIXBhcmFtZXRlcml6ZWRfdGVzdHNfcmVnaXN0ZXJlZF8p
IHsKICAgICBwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnlfLlJlZ2lzdGVyVGVzdHMoKTsKICAg
ICBwYXJhbWV0ZXJpemVkX3Rlc3RzX3JlZ2lzdGVyZWRfID0gdHJ1ZTsKICAgfQotI2VuZGlmCiB9
CiAKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCiAvLyBDcmVhdGVzIHRoZSB0ZXN0IG9iamVj
dCwgcnVucyBpdCwgcmVjb3JkcyBpdHMgcmVzdWx0LCBhbmQgdGhlbgogLy8gZGVsZXRlcyBpdC4K
LXZvaWQgVGVzdEluZm9JbXBsOjpSdW4oKSB7Cit2b2lkIFRlc3RJbmZvOjpSdW4oKSB7CiAgIGlm
ICghc2hvdWxkX3J1bl8pIHJldHVybjsKIAogICAvLyBUZWxscyBVbml0VGVzdCB3aGVyZSB0byBz
dG9yZSB0ZXN0IHJlc3VsdC4KLSAgVW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0gaW50ZXJuYWw6
OkdldFVuaXRUZXN0SW1wbCgpOwotICBpbXBsLT5zZXRfY3VycmVudF90ZXN0X2luZm8ocGFyZW50
Xyk7CisgIGludGVybmFsOjpVbml0VGVzdEltcGwqIGNvbnN0IGltcGwgPSBpbnRlcm5hbDo6R2V0
VW5pdFRlc3RJbXBsKCk7CisgIGltcGwtPnNldF9jdXJyZW50X3Rlc3RfaW5mbyh0aGlzKTsKIAog
ICBUZXN0RXZlbnRMaXN0ZW5lciogcmVwZWF0ZXIgPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+
bGlzdGVuZXJzKCkucmVwZWF0ZXIoKTsKIAogICAvLyBOb3RpZmllcyB0aGUgdW5pdCB0ZXN0IGV2
ZW50IGxpc3RlbmVycyB0aGF0IGEgdGVzdCBpcyBhYm91dCB0byBzdGFydC4KLSAgcmVwZWF0ZXIt
Pk9uVGVzdFN0YXJ0KCpwYXJlbnRfKTsKKyAgcmVwZWF0ZXItPk9uVGVzdFN0YXJ0KCp0aGlzKTsK
IAotICBjb25zdCBUaW1lSW5NaWxsaXMgc3RhcnQgPSBHZXRUaW1lSW5NaWxsaXMoKTsKKyAgY29u
c3QgVGltZUluTWlsbGlzIHN0YXJ0ID0gaW50ZXJuYWw6OkdldFRpbWVJbk1pbGxpcygpOwogCiAg
IGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7Ci0jaWYg
R1RFU1RfSEFTX1NFSAotICAvLyBDYXRjaCBTRUgtc3R5bGUgZXhjZXB0aW9ucy4KLSAgVGVzdCog
dGVzdCA9IE5VTEw7Ci0KLSAgX190cnkgewotICAgIC8vIENyZWF0ZXMgdGhlIHRlc3Qgb2JqZWN0
LgotICAgIHRlc3QgPSBmYWN0b3J5Xy0+Q3JlYXRlVGVzdCgpOwotICB9IF9fZXhjZXB0KGludGVy
bmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCgKLSAgICAgIEdldEV4
Y2VwdGlvbkNvZGUoKSkpIHsKLSAgICBBZGRFeGNlcHRpb25UaHJvd25GYWlsdXJlKEdldEV4Y2Vw
dGlvbkNvZGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgdGVzdCBmaXh0
dXJlJ3MgY29uc3RydWN0b3IiKTsKLSAgICByZXR1cm47Ci0gIH0KLSNlbHNlICAvLyBXZSBhcmUg
b24gYSBjb21waWxlciBvciBwbGF0Zm9ybSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBTRUguCi0KLSAg
Ly8gVE9ETyh3YW4pOiBJZiB0ZXN0LT5SdW4oKSB0aHJvd3MsIHRlc3Qgd29uJ3QgYmUgZGVsZXRl
ZC4gIFRoaXMgaXMKLSAgLy8gbm90IGEgcHJvYmxlbSBub3cgYXMgd2UgZG9uJ3QgdXNlIGV4Y2Vw
dGlvbnMuICBJZiB3ZSB3ZXJlIHRvCi0gIC8vIGVuYWJsZSBleGNlcHRpb25zLCB3ZSBzaG91bGQg
cmV2aXNlIHRoZSBmb2xsb3dpbmcgdG8gYmUKLSAgLy8gZXhjZXB0aW9uLXNhZmUuCiAKICAgLy8g
Q3JlYXRlcyB0aGUgdGVzdCBvYmplY3QuCi0gIFRlc3QqIHRlc3QgPSBmYWN0b3J5Xy0+Q3JlYXRl
VGVzdCgpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICisgIFRlc3QqIGNvbnN0IHRlc3QgPSBp
bnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgICBmYWN0
b3J5XywgJmludGVybmFsOjpUZXN0RmFjdG9yeUJhc2U6OkNyZWF0ZVRlc3QsCisgICAgICAidGhl
IHRlc3QgZml4dHVyZSdzIGNvbnN0cnVjdG9yIik7CiAKLSAgLy8gUnVucyB0aGUgdGVzdCBvbmx5
IGlmIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgdGVzdCBmaXh0dXJlIGRpZG4ndAotICAvLyBnZW5l
cmF0ZSBhIGZhdGFsIGZhaWx1cmUuCisgIC8vIFJ1bnMgdGhlIHRlc3QgaWYgdGhlIGNvbnN0cnVj
dG9yIGRpZG4ndCBnZW5lcmF0ZSBhIGZhdGFsIGZhaWx1cmUuCisgIC8vIE5vdGUgdGhhdCB0aGUg
b2JqZWN0IHdpbGwgbm90IGJlIG51bGwKICAgaWYgKCFUZXN0OjpIYXNGYXRhbEZhaWx1cmUoKSkg
eworICAgIC8vIFRoaXMgZG9lc24ndCB0aHJvdyBhcyBhbGwgdXNlciBjb2RlIHRoYXQgY2FuIHRo
cm93IGFyZSB3cmFwcGVkIGludG8KKyAgICAvLyBleGNlcHRpb24gaGFuZGxpbmcgY29kZS4KICAg
ICB0ZXN0LT5SdW4oKTsKICAgfQogCi0gIC8vIERlbGV0ZXMgdGhlIHRlc3Qgb2JqZWN0LgotICBp
bXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotICBkZWxl
dGUgdGVzdDsKLSAgdGVzdCA9IE5VTEw7CisgICAgLy8gRGVsZXRlcyB0aGUgdGVzdCBvYmplY3Qu
CisgICAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsK
KyAgICBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisgICAg
ICAgIHRlc3QsICZUZXN0OjpEZWxldGVTZWxmXywgInRoZSB0ZXN0IGZpeHR1cmUncyBkZXN0cnVj
dG9yIik7CiAKLSAgcmVzdWx0Xy5zZXRfZWxhcHNlZF90aW1lKEdldFRpbWVJbk1pbGxpcygpIC0g
c3RhcnQpOworICByZXN1bHRfLnNldF9lbGFwc2VkX3RpbWUoaW50ZXJuYWw6OkdldFRpbWVJbk1p
bGxpcygpIC0gc3RhcnQpOwogCiAgIC8vIE5vdGlmaWVzIHRoZSB1bml0IHRlc3QgZXZlbnQgbGlz
dGVuZXIgdGhhdCBhIHRlc3QgaGFzIGp1c3QgZmluaXNoZWQuCi0gIHJlcGVhdGVyLT5PblRlc3RF
bmQoKnBhcmVudF8pOworICByZXBlYXRlci0+T25UZXN0RW5kKCp0aGlzKTsKIAogICAvLyBUZWxs
cyBVbml0VGVzdCB0byBzdG9wIGFzc29jaWF0aW5nIGFzc2VydGlvbiByZXN1bHRzIHRvIHRoaXMK
ICAgLy8gdGVzdC4KICAgaW1wbC0+c2V0X2N1cnJlbnRfdGVzdF9pbmZvKE5VTEwpOwogfQogCi19
ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQogLy8gY2xhc3MgVGVzdENhc2UKIAogLy8gR2V0cyB0
aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCkBAIC0yMzQz
LDEwICsyNzIwLDIxIEBAIGludCBUZXN0Q2FzZTo6ZmFpbGVkX3Rlc3RfY291bnQoKSBjb25zdCB7
CiAgIHJldHVybiBDb3VudElmKHRlc3RfaW5mb19saXN0XywgVGVzdEZhaWxlZCk7CiB9CiAKKy8v
IEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQg
aW4gdGhlIFhNTCByZXBvcnQuCitpbnQgVGVzdENhc2U6OnJlcG9ydGFibGVfZGlzYWJsZWRfdGVz
dF9jb3VudCgpIGNvbnN0IHsKKyAgcmV0dXJuIENvdW50SWYodGVzdF9pbmZvX2xpc3RfLCBUZXN0
UmVwb3J0YWJsZURpc2FibGVkKTsKK30KKworLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVk
IHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlLgogaW50IFRlc3RDYXNlOjpkaXNhYmxlZF90ZXN0X2Nv
dW50KCkgY29uc3QgewogICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlzdF8sIFRlc3REaXNh
YmxlZCk7CiB9CiAKKy8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0cyB0byBiZSBwcmludGVkIGlu
IHRoZSBYTUwgcmVwb3J0LgoraW50IFRlc3RDYXNlOjpyZXBvcnRhYmxlX3Rlc3RfY291bnQoKSBj
b25zdCB7CisgIHJldHVybiBDb3VudElmKHRlc3RfaW5mb19saXN0XywgVGVzdFJlcG9ydGFibGUp
OworfQorCiAvLyBHZXQgdGhlIG51bWJlciBvZiB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZSB0aGF0
IHNob3VsZCBydW4uCiBpbnQgVGVzdENhc2U6OnRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3Qgewog
ICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlzdF8sIFNob3VsZFJ1blRlc3QpOwpAQCAtMjM2
MiwxMyArMjc1MCwxNSBAQCBpbnQgVGVzdENhc2U6OnRvdGFsX3Rlc3RfY291bnQoKSBjb25zdCB7
CiAvLyBBcmd1bWVudHM6CiAvLwogLy8gICBuYW1lOiAgICAgICAgIG5hbWUgb2YgdGhlIHRlc3Qg
Y2FzZQorLy8gICBhX3R5cGVfcGFyYW06IHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UncyB0eXBl
IHBhcmFtZXRlciwgb3IgTlVMTCBpZgorLy8gICAgICAgICAgICAgICAgIHRoaXMgaXMgbm90IGEg
dHlwZWQgb3IgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlLgogLy8gICBzZXRfdXBfdGM6
ICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBjYXNlCiAv
LyAgIHRlYXJfZG93bl90YzogcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCB0ZWFycyBkb3du
IHRoZSB0ZXN0IGNhc2UKLVRlc3RDYXNlOjpUZXN0Q2FzZShjb25zdCBjaGFyKiBhX25hbWUsIGNv
bnN0IGNoYXIqIGFfY29tbWVudCwKK1Rlc3RDYXNlOjpUZXN0Q2FzZShjb25zdCBjaGFyKiBhX25h
bWUsIGNvbnN0IGNoYXIqIGFfdHlwZV9wYXJhbSwKICAgICAgICAgICAgICAgICAgICBUZXN0OjpT
ZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCiAgICAgICAgICAgICAgICAgICAgVGVzdDo6VGVh
ckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3RjKQogICAgIDogbmFtZV8oYV9uYW1lKSwKLSAg
ICAgIGNvbW1lbnRfKGFfY29tbWVudCksCisgICAgICB0eXBlX3BhcmFtXyhhX3R5cGVfcGFyYW0g
PyBuZXcgc3RkOjpzdHJpbmcoYV90eXBlX3BhcmFtKSA6IE5VTEwpLAogICAgICAgc2V0X3VwX3Rj
XyhzZXRfdXBfdGMpLAogICAgICAgdGVhcl9kb3duX3RjXyh0ZWFyX2Rvd25fdGMpLAogICAgICAg
c2hvdWxkX3J1bl8oZmFsc2UpLApAQCAtMjQxMyw0NSArMjgwMywyNyBAQCB2b2lkIFRlc3RDYXNl
OjpSdW4oKSB7CiAKICAgcmVwZWF0ZXItPk9uVGVzdENhc2VTdGFydCgqdGhpcyk7CiAgIGltcGwt
Pm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7Ci0gIHNldF91cF90
Y18oKTsKKyAgaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAor
ICAgICAgdGhpcywgJlRlc3RDYXNlOjpSdW5TZXRVcFRlc3RDYXNlLCAiU2V0VXBUZXN0Q2FzZSgp
Iik7CiAKICAgY29uc3QgaW50ZXJuYWw6OlRpbWVJbk1pbGxpcyBzdGFydCA9IGludGVybmFsOjpH
ZXRUaW1lSW5NaWxsaXMoKTsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbF90ZXN0X2NvdW50
KCk7IGkrKykgewotICAgIEdldE11dGFibGVUZXN0SW5mbyhpKS0+aW1wbCgpLT5SdW4oKTsKKyAg
ICBHZXRNdXRhYmxlVGVzdEluZm8oaSktPlJ1bigpOwogICB9CiAgIGVsYXBzZWRfdGltZV8gPSBp
bnRlcm5hbDo6R2V0VGltZUluTWlsbGlzKCkgLSBzdGFydDsKIAogICBpbXBsLT5vc19zdGFja190
cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotICB0ZWFyX2Rvd25fdGNfKCk7Cisg
IGludGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAgICAgIHRo
aXMsICZUZXN0Q2FzZTo6UnVuVGVhckRvd25UZXN0Q2FzZSwgIlRlYXJEb3duVGVzdENhc2UoKSIp
OworCiAgIHJlcGVhdGVyLT5PblRlc3RDYXNlRW5kKCp0aGlzKTsKICAgaW1wbC0+c2V0X2N1cnJl
bnRfdGVzdF9jYXNlKE5VTEwpOwogfQogCiAvLyBDbGVhcnMgdGhlIHJlc3VsdHMgb2YgYWxsIHRl
c3RzIGluIHRoaXMgdGVzdCBjYXNlLgogdm9pZCBUZXN0Q2FzZTo6Q2xlYXJSZXN1bHQoKSB7Ci0g
IEZvckVhY2godGVzdF9pbmZvX2xpc3RfLCBpbnRlcm5hbDo6VGVzdEluZm9JbXBsOjpDbGVhclRl
c3RSZXN1bHQpOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRlc3QgcGFzc2VkLgotYm9vbCBU
ZXN0Q2FzZTo6VGVzdFBhc3NlZChjb25zdCBUZXN0SW5mbyAqIHRlc3RfaW5mbykgewotICBjb25z
dCBpbnRlcm5hbDo6VGVzdEluZm9JbXBsKiBjb25zdCBpbXBsID0gdGVzdF9pbmZvLT5pbXBsKCk7
Ci0gIHJldHVybiBpbXBsLT5zaG91bGRfcnVuKCkgJiYgaW1wbC0+cmVzdWx0KCktPlBhc3NlZCgp
OwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRlc3QgZmFpbGVkLgotYm9vbCBUZXN0Q2FzZTo6
VGVzdEZhaWxlZChjb25zdCBUZXN0SW5mbyAqIHRlc3RfaW5mbykgewotICBjb25zdCBpbnRlcm5h
bDo6VGVzdEluZm9JbXBsKiBjb25zdCBpbXBsID0gdGVzdF9pbmZvLT5pbXBsKCk7Ci0gIHJldHVy
biBpbXBsLT5zaG91bGRfcnVuKCkgJiYgaW1wbC0+cmVzdWx0KCktPkZhaWxlZCgpOwotfQotCi0v
LyBSZXR1cm5zIHRydWUgaWZmIHRlc3QgaXMgZGlzYWJsZWQuCi1ib29sIFRlc3RDYXNlOjpUZXN0
RGlzYWJsZWQoY29uc3QgVGVzdEluZm8gKiB0ZXN0X2luZm8pIHsKLSAgcmV0dXJuIHRlc3RfaW5m
by0+aW1wbCgpLT5pc19kaXNhYmxlZCgpOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdp
dmVuIHRlc3Qgc2hvdWxkIHJ1bi4KLWJvb2wgVGVzdENhc2U6OlNob3VsZFJ1blRlc3QoY29uc3Qg
VGVzdEluZm8gKnRlc3RfaW5mbykgewotICByZXR1cm4gdGVzdF9pbmZvLT5pbXBsKCktPnNob3Vs
ZF9ydW4oKTsKKyAgYWRfaG9jX3Rlc3RfcmVzdWx0Xy5DbGVhcigpOworICBGb3JFYWNoKHRlc3Rf
aW5mb19saXN0XywgVGVzdEluZm86OkNsZWFyVGVzdFJlc3VsdCk7CiB9CiAKIC8vIFNodWZmbGVz
IHRoZSB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KQEAgLTI0NzEsMjAgKzI4NDMsMjAgQEAgdm9p
ZCBUZXN0Q2FzZTo6VW5zaHVmZmxlVGVzdHMoKSB7CiAvLwogLy8gRm9ybWF0Q291bnRhYmxlTm91
bigxLCAiZm9ybXVsYSIsICJmb3JtdWxpIikgcmV0dXJucyAiMSBmb3JtdWxhIi4KIC8vIEZvcm1h
dENvdW50YWJsZU5vdW4oNSwgImJvb2siLCAiYm9va3MiKSByZXR1cm5zICI1IGJvb2tzIi4KLXN0
YXRpYyBpbnRlcm5hbDo6U3RyaW5nIEZvcm1hdENvdW50YWJsZU5vdW4oaW50IGNvdW50LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogc2lu
Z3VsYXJfZm9ybSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAqIHBsdXJhbF9mb3JtKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6U3RyaW5nOjpG
b3JtYXQoIiVkICVzIiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y291bnQgPT0gMSA/IHNpbmd1bGFyX2Zvcm0gOiBwbHVyYWxfZm9ybSk7CitzdGF0aWMgc3RkOjpz
dHJpbmcgRm9ybWF0Q291bnRhYmxlTm91bihpbnQgY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogc2luZ3VsYXJfZm9ybSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBwbHVyYWxfZm9ybSkg
eworICByZXR1cm4gaW50ZXJuYWw6OlN0cmVhbWFibGVUb1N0cmluZyhjb3VudCkgKyAiICIgKwor
ICAgICAgKGNvdW50ID09IDEgPyBzaW5ndWxhcl9mb3JtIDogcGx1cmFsX2Zvcm0pOwogfQogCiAv
LyBGb3JtYXRzIHRoZSBjb3VudCBvZiB0ZXN0cy4KLXN0YXRpYyBpbnRlcm5hbDo6U3RyaW5nIEZv
cm1hdFRlc3RDb3VudChpbnQgdGVzdF9jb3VudCkgeworc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1h
dFRlc3RDb3VudChpbnQgdGVzdF9jb3VudCkgewogICByZXR1cm4gRm9ybWF0Q291bnRhYmxlTm91
bih0ZXN0X2NvdW50LCAidGVzdCIsICJ0ZXN0cyIpOwogfQogCiAvLyBGb3JtYXRzIHRoZSBjb3Vu
dCBvZiB0ZXN0IGNhc2VzLgotc3RhdGljIGludGVybmFsOjpTdHJpbmcgRm9ybWF0VGVzdENhc2VD
b3VudChpbnQgdGVzdF9jYXNlX2NvdW50KSB7CitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0VGVz
dENhc2VDb3VudChpbnQgdGVzdF9jYXNlX2NvdW50KSB7CiAgIHJldHVybiBGb3JtYXRDb3VudGFi
bGVOb3VuKHRlc3RfY2FzZV9jb3VudCwgInRlc3QgY2FzZSIsICJ0ZXN0IGNhc2VzIik7CiB9CiAK
QEAgLTI1MDQsMTMgKzI4NzYsMTUgQEAgc3RhdGljIGNvbnN0IGNoYXIgKiBUZXN0UGFydFJlc3Vs
dFR5cGVUb1N0cmluZyhUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlKSB7CiAjZWxzZQogICAgICAg
cmV0dXJuICJGYWlsdXJlXG4iOwogI2VuZGlmCisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiAi
VW5rbm93biByZXN1bHQgdHlwZSI7CiAgIH0KLQotICByZXR1cm4gIlVua25vd24gcmVzdWx0IHR5
cGUiOwogfQogCi0vLyBQcmludHMgYSBUZXN0UGFydFJlc3VsdCB0byBhIFN0cmluZy4KLXN0YXRp
YyBpbnRlcm5hbDo6U3RyaW5nIFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmluZygKK25hbWVzcGFj
ZSBpbnRlcm5hbCB7CisKKy8vIFByaW50cyBhIFRlc3RQYXJ0UmVzdWx0IHRvIGFuIHN0ZDo6c3Ry
aW5nLgorc3RhdGljIHN0ZDo6c3RyaW5nIFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmluZygKICAg
ICBjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgewogICByZXR1cm4gKE1l
c3NhZ2UoKQogICAgICAgICAgIDw8IGludGVybmFsOjpGb3JtYXRGaWxlTG9jYXRpb24odGVzdF9w
YXJ0X3Jlc3VsdC5maWxlX25hbWUoKSwKQEAgLTI1MjEsNyArMjg5NSw3IEBAIHN0YXRpYyBpbnRl
cm5hbDo6U3RyaW5nIFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmluZygKIAogLy8gUHJpbnRzIGEg
VGVzdFBhcnRSZXN1bHQuCiBzdGF0aWMgdm9pZCBQcmludFRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRl
c3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7Ci0gIGNvbnN0IGludGVybmFsOjpTdHJp
bmcmIHJlc3VsdCA9CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiByZXN1bHQgPQogICAgICAgUHJpbnRU
ZXN0UGFydFJlc3VsdFRvU3RyaW5nKHRlc3RfcGFydF9yZXN1bHQpOwogICBwcmludGYoIiVzXG4i
LCByZXN1bHQuY19zdHIoKSk7CiAgIGZmbHVzaChzdGRvdXQpOwpAQCAtMjU0MCw4ICsyOTE0LDYg
QEAgc3RhdGljIHZvaWQgUHJpbnRUZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYg
dGVzdF9wYXJ0X3Jlc3VsdCkgewogCiAvLyBjbGFzcyBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50
ZXIKIAotbmFtZXNwYWNlIGludGVybmFsIHsKLQogZW51bSBHVGVzdENvbG9yIHsKICAgQ09MT1Jf
REVGQVVMVCwKICAgQ09MT1JfUkVELApAQCAtMjU0OSwxMCArMjkyMSwxMSBAQCBlbnVtIEdUZXN0
Q29sb3IgewogICBDT0xPUl9ZRUxMT1cKIH07CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFH
VEVTVF9PU19XSU5ET1dTX01PQklMRQorI2lmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09T
X1dJTkRPV1NfTU9CSUxFICYmIFwKKyAgICAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RF
U1RfT1NfV0lORE9XU19SVCAmJiAhR1RFU1RfT1NfV0lORE9XU19NSU5HVwogCiAvLyBSZXR1cm5z
IHRoZSBjaGFyYWN0ZXIgYXR0cmlidXRlIGZvciB0aGUgZ2l2ZW4gY29sb3IuCi1XT1JEIEdldENv
bG9yQXR0cmlidXRlKEdUZXN0Q29sb3IgY29sb3IpIHsKK3N0YXRpYyBXT1JEIEdldENvbG9yQXR0
cmlidXRlKEdUZXN0Q29sb3IgY29sb3IpIHsKICAgc3dpdGNoIChjb2xvcikgewogICAgIGNhc2Ug
Q09MT1JfUkVEOiAgICByZXR1cm4gRk9SRUdST1VORF9SRUQ7CiAgICAgY2FzZSBDT0xPUl9HUkVF
TjogIHJldHVybiBGT1JFR1JPVU5EX0dSRUVOOwpAQCAtMjU2MSwxMSArMjkzNCw0MiBAQCBXT1JE
IEdldENvbG9yQXR0cmlidXRlKEdUZXN0Q29sb3IgY29sb3IpIHsKICAgfQogfQogCitzdGF0aWMg
aW50IEdldEJpdE9mZnNldChXT1JEIGNvbG9yX21hc2spIHsKKyAgaWYgKGNvbG9yX21hc2sgPT0g
MCkgcmV0dXJuIDA7CisKKyAgaW50IGJpdE9mZnNldCA9IDA7CisgIHdoaWxlICgoY29sb3JfbWFz
ayAmIDEpID09IDApIHsKKyAgICBjb2xvcl9tYXNrID4+PSAxOworICAgICsrYml0T2Zmc2V0Owor
ICB9CisgIHJldHVybiBiaXRPZmZzZXQ7Cit9CisKK3N0YXRpYyBXT1JEIEdldE5ld0NvbG9yKEdU
ZXN0Q29sb3IgY29sb3IsIFdPUkQgb2xkX2NvbG9yX2F0dHJzKSB7CisgIC8vIExldCdzIHJldXNl
IHRoZSBCRworICBzdGF0aWMgY29uc3QgV09SRCBiYWNrZ3JvdW5kX21hc2sgPSBCQUNLR1JPVU5E
X0JMVUUgfCBCQUNLR1JPVU5EX0dSRUVOIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQkFDS0dST1VORF9SRUQgfCBCQUNLR1JPVU5EX0lOVEVOU0lUWTsKKyAgc3RhdGlj
IGNvbnN0IFdPUkQgZm9yZWdyb3VuZF9tYXNrID0gRk9SRUdST1VORF9CTFVFIHwgRk9SRUdST1VO
RF9HUkVFTiB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZPUkVHUk9V
TkRfUkVEIHwgRk9SRUdST1VORF9JTlRFTlNJVFk7CisgIGNvbnN0IFdPUkQgZXhpc3RpbmdfYmcg
PSBvbGRfY29sb3JfYXR0cnMgJiBiYWNrZ3JvdW5kX21hc2s7CisKKyAgV09SRCBuZXdfY29sb3Ig
PQorICAgICAgR2V0Q29sb3JBdHRyaWJ1dGUoY29sb3IpIHwgZXhpc3RpbmdfYmcgfCBGT1JFR1JP
VU5EX0lOVEVOU0lUWTsKKyAgc3RhdGljIGNvbnN0IGludCBiZ19iaXRPZmZzZXQgPSBHZXRCaXRP
ZmZzZXQoYmFja2dyb3VuZF9tYXNrKTsKKyAgc3RhdGljIGNvbnN0IGludCBmZ19iaXRPZmZzZXQg
PSBHZXRCaXRPZmZzZXQoZm9yZWdyb3VuZF9tYXNrKTsKKworICBpZiAoKChuZXdfY29sb3IgJiBi
YWNrZ3JvdW5kX21hc2spID4+IGJnX2JpdE9mZnNldCkgPT0KKyAgICAgICgobmV3X2NvbG9yICYg
Zm9yZWdyb3VuZF9tYXNrKSA+PiBmZ19iaXRPZmZzZXQpKSB7CisgICAgbmV3X2NvbG9yIF49IEZP
UkVHUk9VTkRfSU5URU5TSVRZOyAgLy8gaW52ZXJ0IGludGVuc2l0eQorICB9CisgIHJldHVybiBu
ZXdfY29sb3I7Cit9CisKICNlbHNlCiAKIC8vIFJldHVybnMgdGhlIEFOU0kgY29sb3IgY29kZSBm
b3IgdGhlIGdpdmVuIGNvbG9yLiAgQ09MT1JfREVGQVVMVCBpcwogLy8gYW4gaW52YWxpZCBpbnB1
dC4KLWNvbnN0IGNoYXIqIEdldEFuc2lDb2xvckNvZGUoR1Rlc3RDb2xvciBjb2xvcikgeworc3Rh
dGljIGNvbnN0IGNoYXIqIEdldEFuc2lDb2xvckNvZGUoR1Rlc3RDb2xvciBjb2xvcikgewogICBz
d2l0Y2ggKGNvbG9yKSB7CiAgICAgY2FzZSBDT0xPUl9SRUQ6ICAgICByZXR1cm4gIjEiOwogICAg
IGNhc2UgQ09MT1JfR1JFRU46ICAgcmV0dXJuICIyIjsKQEAgLTI1ODEsNyArMjk4NSw3IEBAIGJv
b2wgU2hvdWxkVXNlQ29sb3IoYm9vbCBzdGRvdXRfaXNfdHR5KSB7CiAgIGNvbnN0IGNoYXIqIGNv
bnN0IGd0ZXN0X2NvbG9yID0gR1RFU1RfRkxBRyhjb2xvcikuY19zdHIoKTsKIAogICBpZiAoU3Ry
aW5nOjpDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGd0ZXN0X2NvbG9yLCAiYXV0byIpKSB7
Ci0jaWYgR1RFU1RfT1NfV0lORE9XUworI2lmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09T
X1dJTkRPV1NfTUlOR1cKICAgICAvLyBPbiBXaW5kb3dzIHRoZSBURVJNIHZhcmlhYmxlIGlzIHVz
dWFsbHkgbm90IHNldCwgYnV0IHRoZQogICAgIC8vIGNvbnNvbGUgdGhlcmUgZG9lcyBzdXBwb3J0
IGNvbG9ycy4KICAgICByZXR1cm4gc3Rkb3V0X2lzX3R0eTsKQEAgLTI1OTIsNiArMjk5NiwxMiBA
QCBib29sIFNob3VsZFVzZUNvbG9yKGJvb2wgc3Rkb3V0X2lzX3R0eSkgewogICAgICAgICBTdHJp
bmc6OkNTdHJpbmdFcXVhbHModGVybSwgInh0ZXJtIikgfHwKICAgICAgICAgU3RyaW5nOjpDU3Ry
aW5nRXF1YWxzKHRlcm0sICJ4dGVybS1jb2xvciIpIHx8CiAgICAgICAgIFN0cmluZzo6Q1N0cmlu
Z0VxdWFscyh0ZXJtLCAieHRlcm0tMjU2Y29sb3IiKSB8fAorICAgICAgICBTdHJpbmc6OkNTdHJp
bmdFcXVhbHModGVybSwgInNjcmVlbiIpIHx8CisgICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFs
cyh0ZXJtLCAic2NyZWVuLTI1NmNvbG9yIikgfHwKKyAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1
YWxzKHRlcm0sICJ0bXV4IikgfHwKKyAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0s
ICJ0bXV4LTI1NmNvbG9yIikgfHwKKyAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0s
ICJyeHZ0LXVuaWNvZGUiKSB8fAorICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwg
InJ4dnQtdW5pY29kZS0yNTZjb2xvciIpIHx8CiAgICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFs
cyh0ZXJtLCAibGludXgiKSB8fAogICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwg
ImN5Z3dpbiIpOwogICAgIHJldHVybiBzdGRvdXRfaXNfdHR5ICYmIHRlcm1fc3VwcG9ydHNfY29s
b3I7CkBAIC0yNjExLDEyICszMDIxLDEzIEBAIGJvb2wgU2hvdWxkVXNlQ29sb3IoYm9vbCBzdGRv
dXRfaXNfdHR5KSB7CiAvLyBjYW5ub3Qgc2ltcGx5IGVtaXQgc3BlY2lhbCBjaGFyYWN0ZXJzIGFu
ZCBoYXZlIHRoZSB0ZXJtaW5hbCBjaGFuZ2UgY29sb3JzLgogLy8gVGhpcyByb3V0aW5lIG11c3Qg
YWN0dWFsbHkgZW1pdCB0aGUgY2hhcmFjdGVycyByYXRoZXIgdGhhbiByZXR1cm4gYSBzdHJpbmcK
IC8vIHRoYXQgd291bGQgYmUgY29sb3JlZCB3aGVuIHByaW50ZWQsIGFzIGNhbiBiZSBkb25lIG9u
IExpbnV4Lgotdm9pZCBDb2xvcmVkUHJpbnRmKEdUZXN0Q29sb3IgY29sb3IsIGNvbnN0IGNoYXIq
IGZtdCwgLi4uKSB7CitzdGF0aWMgdm9pZCBDb2xvcmVkUHJpbnRmKEdUZXN0Q29sb3IgY29sb3Is
IGNvbnN0IGNoYXIqIGZtdCwgLi4uKSB7CiAgIHZhX2xpc3QgYXJnczsKICAgdmFfc3RhcnQoYXJn
cywgZm10KTsKIAotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNUX09TX1NZTUJJ
QU4gfHwgR1RFU1RfT1NfWk9TCi0gIGNvbnN0IGJvb2wgdXNlX2NvbG9yID0gZmFsc2U7CisjaWYg
R1RFU1RfT1NfV0lORE9XU19NT0JJTEUgfHwgR1RFU1RfT1NfU1lNQklBTiB8fCBHVEVTVF9PU19a
T1MgfHwgXAorICAgIEdURVNUX09TX0lPUyB8fCBHVEVTVF9PU19XSU5ET1dTX1BIT05FIHx8IEdU
RVNUX09TX1dJTkRPV1NfUlQKKyAgY29uc3QgYm9vbCB1c2VfY29sb3IgPSBBbHdheXNGYWxzZSgp
OwogI2Vsc2UKICAgc3RhdGljIGNvbnN0IGJvb2wgaW5fY29sb3JfbW9kZSA9CiAgICAgICBTaG91
bGRVc2VDb2xvcihwb3NpeDo6SXNBVFRZKHBvc2l4OjpGaWxlTm8oc3Rkb3V0KSkgIT0gMCk7CkBA
IC0yNjMwLDIwICszMDQxLDIyIEBAIHZvaWQgQ29sb3JlZFByaW50ZihHVGVzdENvbG9yIGNvbG9y
LCBjb25zdCBjaGFyKiBmbXQsIC4uLikgewogICAgIHJldHVybjsKICAgfQogCi0jaWYgR1RFU1Rf
T1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyNpZiBHVEVTVF9PU19XSU5E
T1dTICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRSAmJiBcCisgICAgIUdURVNUX09TX1dJTkRP
V1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQgJiYgIUdURVNUX09TX1dJTkRPV1NfTUlO
R1cKICAgY29uc3QgSEFORExFIHN0ZG91dF9oYW5kbGUgPSBHZXRTdGRIYW5kbGUoU1REX09VVFBV
VF9IQU5ETEUpOwogCiAgIC8vIEdldHMgdGhlIGN1cnJlbnQgdGV4dCBjb2xvci4KICAgQ09OU09M
RV9TQ1JFRU5fQlVGRkVSX0lORk8gYnVmZmVyX2luZm87CiAgIEdldENvbnNvbGVTY3JlZW5CdWZm
ZXJJbmZvKHN0ZG91dF9oYW5kbGUsICZidWZmZXJfaW5mbyk7CiAgIGNvbnN0IFdPUkQgb2xkX2Nv
bG9yX2F0dHJzID0gYnVmZmVyX2luZm8ud0F0dHJpYnV0ZXM7CisgIGNvbnN0IFdPUkQgbmV3X2Nv
bG9yID0gR2V0TmV3Q29sb3IoY29sb3IsIG9sZF9jb2xvcl9hdHRycyk7CiAKICAgLy8gV2UgbmVl
ZCB0byBmbHVzaCB0aGUgc3RyZWFtIGJ1ZmZlcnMgaW50byB0aGUgY29uc29sZSBiZWZvcmUgZWFj
aAogICAvLyBTZXRDb25zb2xlVGV4dEF0dHJpYnV0ZSBjYWxsIGxlc3QgaXQgYWZmZWN0IHRoZSB0
ZXh0IHRoYXQgaXMgYWxyZWFkeQogICAvLyBwcmludGVkIGJ1dCBoYXMgbm90IHlldCByZWFjaGVk
IHRoZSBjb25zb2xlLgogICBmZmx1c2goc3Rkb3V0KTsKLSAgU2V0Q29uc29sZVRleHRBdHRyaWJ1
dGUoc3Rkb3V0X2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0Q29sb3JBdHRy
aWJ1dGUoY29sb3IpIHwgRk9SRUdST1VORF9JTlRFTlNJVFkpOworICBTZXRDb25zb2xlVGV4dEF0
dHJpYnV0ZShzdGRvdXRfaGFuZGxlLCBuZXdfY29sb3IpOworCiAgIHZwcmludGYoZm10LCBhcmdz
KTsKIAogICBmZmx1c2goc3Rkb3V0KTsKQEAgLTI2NTcsNiArMzA3MCwyOCBAQCB2b2lkIENvbG9y
ZWRQcmludGYoR1Rlc3RDb2xvciBjb2xvciwgY29uc3QgY2hhciogZm10LCAuLi4pIHsKICAgdmFf
ZW5kKGFyZ3MpOwogfQogCisvLyBUZXh0IHByaW50ZWQgaW4gR29vZ2xlIFRlc3QncyB0ZXh0IG91
dHB1dCBhbmQgLS1ndGVzdF9saXN0X3Rlc3RzCisvLyBvdXRwdXQgdG8gbGFiZWwgdGhlIHR5cGUg
cGFyYW1ldGVyIGFuZCB2YWx1ZSBwYXJhbWV0ZXIgZm9yIGEgdGVzdC4KK3N0YXRpYyBjb25zdCBj
aGFyIGtUeXBlUGFyYW1MYWJlbFtdID0gIlR5cGVQYXJhbSI7CitzdGF0aWMgY29uc3QgY2hhciBr
VmFsdWVQYXJhbUxhYmVsW10gPSAiR2V0UGFyYW0oKSI7CisKK3N0YXRpYyB2b2lkIFByaW50RnVs
bFRlc3RDb21tZW50SWZQcmVzZW50KGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKKyAgY29u
c3QgY2hhciogY29uc3QgdHlwZV9wYXJhbSA9IHRlc3RfaW5mby50eXBlX3BhcmFtKCk7CisgIGNv
bnN0IGNoYXIqIGNvbnN0IHZhbHVlX3BhcmFtID0gdGVzdF9pbmZvLnZhbHVlX3BhcmFtKCk7CisK
KyAgaWYgKHR5cGVfcGFyYW0gIT0gTlVMTCB8fCB2YWx1ZV9wYXJhbSAhPSBOVUxMKSB7CisgICAg
cHJpbnRmKCIsIHdoZXJlICIpOworICAgIGlmICh0eXBlX3BhcmFtICE9IE5VTEwpIHsKKyAgICAg
IHByaW50ZigiJXMgPSAlcyIsIGtUeXBlUGFyYW1MYWJlbCwgdHlwZV9wYXJhbSk7CisgICAgICBp
ZiAodmFsdWVfcGFyYW0gIT0gTlVMTCkKKyAgICAgICAgcHJpbnRmKCIgYW5kICIpOworICAgIH0K
KyAgICBpZiAodmFsdWVfcGFyYW0gIT0gTlVMTCkgeworICAgICAgcHJpbnRmKCIlcyA9ICVzIiwg
a1ZhbHVlUGFyYW1MYWJlbCwgdmFsdWVfcGFyYW0pOworICAgIH0KKyAgfQorfQorCiAvLyBUaGlz
IGNsYXNzIGltcGxlbWVudHMgdGhlIFRlc3RFdmVudExpc3RlbmVyIGludGVyZmFjZS4KIC8vCiAv
LyBDbGFzcyBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXIgaXMgY29weWFibGUuCkBAIC0yNjg0
LDggKzMxMTksNiBAQCBjbGFzcyBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXIgOiBwdWJsaWMg
VGVzdEV2ZW50TGlzdGVuZXIgewogCiAgcHJpdmF0ZToKICAgc3RhdGljIHZvaWQgUHJpbnRGYWls
ZWRUZXN0cyhjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KTsKLQotICBpbnRlcm5hbDo6U3RyaW5n
IHRlc3RfY2FzZV9uYW1lXzsKIH07CiAKICAgLy8gRmlyZWQgYmVmb3JlIGVhY2ggaXRlcmF0aW9u
IG9mIHRlc3RzIHN0YXJ0cy4KQEAgLTI2OTgsMTUgKzMxMzEsMTYgQEAgdm9pZCBQcmV0dHlVbml0
VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdEl0ZXJhdGlvblN0YXJ0KAogCiAgIC8vIFByaW50cyB0
aGUgZmlsdGVyIGlmIGl0J3Mgbm90ICouICBUaGlzIHJlbWluZHMgdGhlIHVzZXIgdGhhdCBzb21l
CiAgIC8vIHRlc3RzIG1heSBiZSBza2lwcGVkLgotICBpZiAoIWludGVybmFsOjpTdHJpbmc6OkNT
dHJpbmdFcXVhbHMoZmlsdGVyLCBrVW5pdmVyc2FsRmlsdGVyKSkgeworICBpZiAoIVN0cmluZzo6
Q1N0cmluZ0VxdWFscyhmaWx0ZXIsIGtVbml2ZXJzYWxGaWx0ZXIpKSB7CiAgICAgQ29sb3JlZFBy
aW50ZihDT0xPUl9ZRUxMT1csCiAgICAgICAgICAgICAgICAgICAiTm90ZTogJXMgZmlsdGVyID0g
JXNcbiIsIEdURVNUX05BTUVfLCBmaWx0ZXIpOwogICB9CiAKICAgaWYgKGludGVybmFsOjpTaG91
bGRTaGFyZChrVGVzdFRvdGFsU2hhcmRzLCBrVGVzdFNoYXJkSW5kZXgsIGZhbHNlKSkgeworICAg
IGNvbnN0IEludDMyIHNoYXJkX2luZGV4ID0gSW50MzJGcm9tRW52T3JEaWUoa1Rlc3RTaGFyZElu
ZGV4LCAtMSk7CiAgICAgQ29sb3JlZFByaW50ZihDT0xPUl9ZRUxMT1csCi0gICAgICAgICAgICAg
ICAgICAiTm90ZTogVGhpcyBpcyB0ZXN0IHNoYXJkICVzIG9mICVzLlxuIiwKLSAgICAgICAgICAg
ICAgICAgIGludGVybmFsOjpwb3NpeDo6R2V0RW52KGtUZXN0U2hhcmRJbmRleCksCisgICAgICAg
ICAgICAgICAgICAiTm90ZTogVGhpcyBpcyB0ZXN0IHNoYXJkICVkIG9mICVzLlxuIiwKKyAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oc2hhcmRfaW5kZXgpICsgMSwKICAgICAgICAg
ICAgICAgICAgIGludGVybmFsOjpwb3NpeDo6R2V0RW52KGtUZXN0VG90YWxTaGFyZHMpKTsKICAg
fQogCkBAIC0yNzMxLDI3ICszMTY1LDIyIEBAIHZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmlu
dGVyOjpPbkVudmlyb25tZW50c1NldFVwU3RhcnQoCiB9CiAKIHZvaWQgUHJldHR5VW5pdFRlc3RS
ZXN1bHRQcmludGVyOjpPblRlc3RDYXNlU3RhcnQoY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSkg
ewotICB0ZXN0X2Nhc2VfbmFtZV8gPSB0ZXN0X2Nhc2UubmFtZSgpOwotICBjb25zdCBpbnRlcm5h
bDo6U3RyaW5nIGNvdW50cyA9CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvdW50cyA9CiAgICAgICBG
b3JtYXRDb3VudGFibGVOb3VuKHRlc3RfY2FzZS50ZXN0X3RvX3J1bl9jb3VudCgpLCAidGVzdCIs
ICJ0ZXN0cyIpOwogICBDb2xvcmVkUHJpbnRmKENPTE9SX0dSRUVOLCAiWy0tLS0tLS0tLS1dICIp
OwotICBwcmludGYoIiVzIGZyb20gJXMiLCBjb3VudHMuY19zdHIoKSwgdGVzdF9jYXNlX25hbWVf
LmNfc3RyKCkpOwotICBpZiAodGVzdF9jYXNlLmNvbW1lbnQoKVswXSA9PSAnXDAnKSB7CisgIHBy
aW50ZigiJXMgZnJvbSAlcyIsIGNvdW50cy5jX3N0cigpLCB0ZXN0X2Nhc2UubmFtZSgpKTsKKyAg
aWYgKHRlc3RfY2FzZS50eXBlX3BhcmFtKCkgPT0gTlVMTCkgewogICAgIHByaW50ZigiXG4iKTsK
ICAgfSBlbHNlIHsKLSAgICBwcmludGYoIiwgd2hlcmUgJXNcbiIsIHRlc3RfY2FzZS5jb21tZW50
KCkpOworICAgIHByaW50ZigiLCB3aGVyZSAlcyA9ICVzXG4iLCBrVHlwZVBhcmFtTGFiZWwsIHRl
c3RfY2FzZS50eXBlX3BhcmFtKCkpOwogICB9CiAgIGZmbHVzaChzdGRvdXQpOwogfQogCiB2b2lk
IFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8m
IHRlc3RfaW5mbykgewogICBDb2xvcmVkUHJpbnRmKENPTE9SX0dSRUVOLCAgIlsgUlVOICAgICAg
XSAiKTsKLSAgUHJpbnRUZXN0TmFtZSh0ZXN0X2Nhc2VfbmFtZV8uY19zdHIoKSwgdGVzdF9pbmZv
Lm5hbWUoKSk7Ci0gIGlmICh0ZXN0X2luZm8uY29tbWVudCgpWzBdID09ICdcMCcpIHsKLSAgICBw
cmludGYoIlxuIik7Ci0gIH0gZWxzZSB7Ci0gICAgcHJpbnRmKCIsIHdoZXJlICVzXG4iLCB0ZXN0
X2luZm8uY29tbWVudCgpKTsKLSAgfQorICBQcmludFRlc3ROYW1lKHRlc3RfaW5mby50ZXN0X2Nh
c2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgcHJpbnRmKCJcbiIpOwogICBmZmx1c2go
c3Rkb3V0KTsKIH0KIApAQCAtMjc3Myw3ICszMjAyLDEwIEBAIHZvaWQgUHJldHR5VW5pdFRlc3RS
ZXN1bHRQcmludGVyOjpPblRlc3RFbmQoY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbykgewogICB9
IGVsc2UgewogICAgIENvbG9yZWRQcmludGYoQ09MT1JfUkVELCAiWyAgRkFJTEVEICBdICIpOwog
ICB9Ci0gIFByaW50VGVzdE5hbWUodGVzdF9jYXNlX25hbWVfLmNfc3RyKCksIHRlc3RfaW5mby5u
YW1lKCkpOworICBQcmludFRlc3ROYW1lKHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0
X2luZm8ubmFtZSgpKTsKKyAgaWYgKHRlc3RfaW5mby5yZXN1bHQoKS0+RmFpbGVkKCkpCisgICAg
UHJpbnRGdWxsVGVzdENvbW1lbnRJZlByZXNlbnQodGVzdF9pbmZvKTsKKwogICBpZiAoR1RFU1Rf
RkxBRyhwcmludF90aW1lKSkgewogICAgIHByaW50ZigiICglcyBtcylcbiIsIGludGVybmFsOjpT
dHJlYW1hYmxlVG9TdHJpbmcoCiAgICAgICAgICAgIHRlc3RfaW5mby5yZXN1bHQoKS0+ZWxhcHNl
ZF90aW1lKCkpLmNfc3RyKCkpOwpAQCAtMjc4NiwxMiArMzIxOCwxMSBAQCB2b2lkIFByZXR0eVVu
aXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0RW5kKGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8p
IHsKIHZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RDYXNlRW5kKGNvbnN0
IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKICAgaWYgKCFHVEVTVF9GTEFHKHByaW50X3RpbWUpKSBy
ZXR1cm47CiAKLSAgdGVzdF9jYXNlX25hbWVfID0gdGVzdF9jYXNlLm5hbWUoKTsKLSAgY29uc3Qg
aW50ZXJuYWw6OlN0cmluZyBjb3VudHMgPQorICBjb25zdCBzdGQ6OnN0cmluZyBjb3VudHMgPQog
ICAgICAgRm9ybWF0Q291bnRhYmxlTm91bih0ZXN0X2Nhc2UudGVzdF90b19ydW5fY291bnQoKSwg
InRlc3QiLCAidGVzdHMiKTsKICAgQ29sb3JlZFByaW50ZihDT0xPUl9HUkVFTiwgIlstLS0tLS0t
LS0tXSAiKTsKICAgcHJpbnRmKCIlcyBmcm9tICVzICglcyBtcyB0b3RhbClcblxuIiwKLSAgICAg
ICAgIGNvdW50cy5jX3N0cigpLCB0ZXN0X2Nhc2VfbmFtZV8uY19zdHIoKSwKKyAgICAgICAgIGNv
dW50cy5jX3N0cigpLCB0ZXN0X2Nhc2UubmFtZSgpLAogICAgICAgICAgaW50ZXJuYWw6OlN0cmVh
bWFibGVUb1N0cmluZyh0ZXN0X2Nhc2UuZWxhcHNlZF90aW1lKCkpLmNfc3RyKCkpOwogICBmZmx1
c2goc3Rkb3V0KTsKIH0KQEAgLTI4MjIsMjEgKzMyNTMsMTQgQEAgdm9pZCBQcmV0dHlVbml0VGVz
dFJlc3VsdFByaW50ZXI6OlByaW50RmFpbGVkVGVzdHMoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVz
dCkgewogICAgICAgfQogICAgICAgQ29sb3JlZFByaW50ZihDT0xPUl9SRUQsICJbICBGQUlMRUQg
IF0gIik7CiAgICAgICBwcmludGYoIiVzLiVzIiwgdGVzdF9jYXNlLm5hbWUoKSwgdGVzdF9pbmZv
Lm5hbWUoKSk7Ci0gICAgICBpZiAodGVzdF9jYXNlLmNvbW1lbnQoKVswXSAhPSAnXDAnIHx8Ci0g
ICAgICAgICAgdGVzdF9pbmZvLmNvbW1lbnQoKVswXSAhPSAnXDAnKSB7Ci0gICAgICAgIHByaW50
ZigiLCB3aGVyZSAlcyIsIHRlc3RfY2FzZS5jb21tZW50KCkpOwotICAgICAgICBpZiAodGVzdF9j
YXNlLmNvbW1lbnQoKVswXSAhPSAnXDAnICYmCi0gICAgICAgICAgICB0ZXN0X2luZm8uY29tbWVu
dCgpWzBdICE9ICdcMCcpIHsKLSAgICAgICAgICBwcmludGYoIiBhbmQgIik7Ci0gICAgICAgIH0K
LSAgICAgIH0KLSAgICAgIHByaW50ZigiJXNcbiIsIHRlc3RfaW5mby5jb21tZW50KCkpOworICAg
ICAgUHJpbnRGdWxsVGVzdENvbW1lbnRJZlByZXNlbnQodGVzdF9pbmZvKTsKKyAgICAgIHByaW50
ZigiXG4iKTsKICAgICB9CiAgIH0KIH0KIAotIHZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmlu
dGVyOjpPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKml0
ZXJhdGlvbiovKSB7Cit2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0SXRl
cmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKml0ZXJhdGlvbiovKSB7CiAg
IENvbG9yZWRQcmludGYoQ09MT1JfR1JFRU4sICAiWz09PT09PT09PT1dICIpOwogICBwcmludGYo
IiVzIGZyb20gJXMgcmFuLiIsCiAgICAgICAgICBGb3JtYXRUZXN0Q291bnQodW5pdF90ZXN0LnRl
c3RfdG9fcnVuX2NvdW50KCkpLmNfc3RyKCksCkBAIC0yODU5LDcgKzMyODMsNyBAQCB2b2lkIFBy
ZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRGYWlsZWRUZXN0cyhjb25zdCBVbml0VGVz
dCYgdW5pdF90ZXN0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBudW1fZmFpbHVyZXMgPT0g
MSA/ICJURVNUIiA6ICJURVNUUyIpOwogICB9CiAKLSAgaW50IG51bV9kaXNhYmxlZCA9IHVuaXRf
dGVzdC5kaXNhYmxlZF90ZXN0X2NvdW50KCk7CisgIGludCBudW1fZGlzYWJsZWQgPSB1bml0X3Rl
c3QucmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCk7CiAgIGlmIChudW1fZGlzYWJsZWQg
JiYgIUdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpKSB7CiAgICAgaWYgKCFudW1f
ZmFpbHVyZXMpIHsKICAgICAgIHByaW50ZigiXG4iKTsgIC8vIEFkZCBhIHNwYWNlciBpZiBubyBG
QUlMVVJFIGJhbm5lciBpcyBkaXNwbGF5ZWQuCkBAIC0yOTIyLDcgKzMzNDYsNyBAQCB2b2lkIFRl
c3RFdmVudFJlcGVhdGVyOjpBcHBlbmQoVGVzdEV2ZW50TGlzdGVuZXIgKmxpc3RlbmVyKSB7CiAg
IGxpc3RlbmVyc18ucHVzaF9iYWNrKGxpc3RlbmVyKTsKIH0KIAotLy8gVE9ETyh2bGFkbEBnb29n
bGUuY29tKTogRmFjdG9yIHRoZSBzZWFyY2ggZnVuY3Rpb25hbGl0eSBpbnRvIFZlY3Rvcjo6Rmlu
ZC4KKy8vIEZJWE1FOiBGYWN0b3IgdGhlIHNlYXJjaCBmdW5jdGlvbmFsaXR5IGludG8gVmVjdG9y
OjpGaW5kLgogVGVzdEV2ZW50TGlzdGVuZXIqIFRlc3RFdmVudFJlcGVhdGVyOjpSZWxlYXNlKFRl
c3RFdmVudExpc3RlbmVyICpsaXN0ZW5lcikgewogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxp
c3RlbmVyc18uc2l6ZSgpOyArK2kpIHsKICAgICBpZiAobGlzdGVuZXJzX1tpXSA9PSBsaXN0ZW5l
cikgewpAQCAtMjk5Niw2ICszNDIwLDExIEBAIGNsYXNzIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRl
ciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKICAgZXhwbGljaXQgWG1sVW5pdFRl
c3RSZXN1bHRQcmludGVyKGNvbnN0IGNoYXIqIG91dHB1dF9maWxlKTsKIAogICB2aXJ0dWFsIHZv
aWQgT25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsIGludCBpdGVy
YXRpb24pOworICB2b2lkIExpc3RUZXN0c01hdGNoaW5nRmlsdGVyKGNvbnN0IHN0ZDo6dmVjdG9y
PFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMpOworCisgIC8vIFByaW50cyBhbiBYTUwgc3VtbWFyeSBv
ZiBhbGwgdW5pdCB0ZXN0cy4KKyAgc3RhdGljIHZvaWQgUHJpbnRYbWxUZXN0c0xpc3Qoc3RkOjpv
c3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMpOwogCiAgcHJpdmF0ZToKICAgLy8gSXMg
YyBhIHdoaXRlc3BhY2UgY2hhcmFjdGVyIHRoYXQgaXMgbm9ybWFsaXplZCB0byBhIHNwYWNlIGNo
YXJhY3RlcgpAQCAtMzAxMywxOCArMzQ0MiwyNyBAQCBjbGFzcyBYbWxVbml0VGVzdFJlc3VsdFBy
aW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CiAgIC8vIGlzX2F0dHJpYnV0
ZSBpcyB0cnVlLCB0aGUgdGV4dCBpcyBtZWFudCB0byBhcHBlYXIgYXMgYW4gYXR0cmlidXRlCiAg
IC8vIHZhbHVlLCBhbmQgbm9ybWFsaXphYmxlIHdoaXRlc3BhY2UgaXMgcHJlc2VydmVkIGJ5IHJl
cGxhY2luZyBpdAogICAvLyB3aXRoIGNoYXJhY3RlciByZWZlcmVuY2VzLgotICBzdGF0aWMgU3Ry
aW5nIEVzY2FwZVhtbChjb25zdCBjaGFyKiBzdHIsIGJvb2wgaXNfYXR0cmlidXRlKTsKKyAgc3Rh
dGljIHN0ZDo6c3RyaW5nIEVzY2FwZVhtbChjb25zdCBzdGQ6OnN0cmluZyYgc3RyLCBib29sIGlz
X2F0dHJpYnV0ZSk7CiAKICAgLy8gUmV0dXJucyB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGggYWxsIGNo
YXJhY3RlcnMgaW52YWxpZCBpbiBYTUwgcmVtb3ZlZC4KLSAgc3RhdGljIFN0cmluZyBSZW1vdmVJ
bnZhbGlkWG1sQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBzdHIpOworICBzdGF0aWMgc3RkOjpzdHJp
bmcgUmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cik7CiAK
ICAgLy8gQ29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgRXNjYXBlWG1sIHdoZW4gc3RyIGlzIGFu
IGF0dHJpYnV0ZSB2YWx1ZS4KLSAgc3RhdGljIFN0cmluZyBFc2NhcGVYbWxBdHRyaWJ1dGUoY29u
c3QgY2hhciogc3RyKSB7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFc2NhcGVYbWxBdHRyaWJ1dGUo
Y29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgewogICAgIHJldHVybiBFc2NhcGVYbWwoc3RyLCB0cnVl
KTsKICAgfQogCiAgIC8vIENvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIEVzY2FwZVhtbCB3aGVu
IHN0ciBpcyBub3QgYW4gYXR0cmlidXRlIHZhbHVlLgotICBzdGF0aWMgU3RyaW5nIEVzY2FwZVht
bFRleHQoY29uc3QgY2hhciogc3RyKSB7IHJldHVybiBFc2NhcGVYbWwoc3RyLCBmYWxzZSk7IH0K
KyAgc3RhdGljIHN0ZDo6c3RyaW5nIEVzY2FwZVhtbFRleHQoY29uc3QgY2hhciogc3RyKSB7Cisg
ICAgcmV0dXJuIEVzY2FwZVhtbChzdHIsIGZhbHNlKTsKKyAgfQorCisgIC8vIFZlcmlmaWVzIHRo
YXQgdGhlIGdpdmVuIGF0dHJpYnV0ZSBiZWxvbmdzIHRvIHRoZSBnaXZlbiBlbGVtZW50IGFuZAor
ICAvLyBzdHJlYW1zIHRoZSBhdHRyaWJ1dGUgYXMgWE1MLgorICBzdGF0aWMgdm9pZCBPdXRwdXRY
bWxBdHRyaWJ1dGUoc3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZWxlbWVudF9uYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpOwogCiAgIC8v
IFN0cmVhbXMgYW4gWE1MIENEQVRBIHNlY3Rpb24sIGVzY2FwaW5nIGludmFsaWQgQ0RBVEEgc2Vx
dWVuY2VzIGFzIG5lZWRlZC4KICAgc3RhdGljIHZvaWQgT3V0cHV0WG1sQ0RhdGFTZWN0aW9uKDo6
c3RkOjpvc3RyZWFtKiBzdHJlYW0sIGNvbnN0IGNoYXIqIGRhdGEpOwpAQCAtMzAzNSwxOSArMzQ3
MywyNiBAQCBjbGFzcyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0
RXZlbnRMaXN0ZW5lciB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRl
c3RJbmZvJiB0ZXN0X2luZm8pOwogCiAgIC8vIFByaW50cyBhbiBYTUwgcmVwcmVzZW50YXRpb24g
b2YgYSBUZXN0Q2FzZSBvYmplY3QKLSAgc3RhdGljIHZvaWQgUHJpbnRYbWxUZXN0Q2FzZShGSUxF
KiBvdXQsIGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpOworICBzdGF0aWMgdm9pZCBQcmludFht
bFRlc3RDYXNlKDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSk7CiAKICAgLy8gUHJpbnRzIGFuIFhN
TCBzdW1tYXJ5IG9mIHVuaXRfdGVzdCB0byBvdXRwdXQgc3RyZWFtIG91dC4KLSAgc3RhdGljIHZv
aWQgUHJpbnRYbWxVbml0VGVzdChGSUxFKiBvdXQsIGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3Qp
OworICBzdGF0aWMgdm9pZCBQcmludFhtbFVuaXRUZXN0KDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVz
dCk7CiAKICAgLy8gUHJvZHVjZXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0ZXN0IHByb3Bl
cnRpZXMgaW4gYSByZXN1bHQgYXMgc3BhY2UKICAgLy8gZGVsaW1pdGVkIFhNTCBhdHRyaWJ1dGVz
IGJhc2VkIG9uIHRoZSBwcm9wZXJ0eSBrZXk9InZhbHVlIiBwYWlycy4KLSAgLy8gV2hlbiB0aGUg
U3RyaW5nIGlzIG5vdCBlbXB0eSwgaXQgaW5jbHVkZXMgYSBzcGFjZSBhdCB0aGUgYmVnaW5uaW5n
LAorICAvLyBXaGVuIHRoZSBzdGQ6OnN0cmluZyBpcyBub3QgZW1wdHksIGl0IGluY2x1ZGVzIGEg
c3BhY2UgYXQgdGhlIGJlZ2lubmluZywKICAgLy8gdG8gZGVsaW1pdCB0aGlzIGF0dHJpYnV0ZSBm
cm9tIHByaW9yIGF0dHJpYnV0ZXMuCi0gIHN0YXRpYyBTdHJpbmcgVGVzdFByb3BlcnRpZXNBc1ht
bEF0dHJpYnV0ZXMoY29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0KTsKKyAgc3RhdGljIHN0ZDo6c3Ry
aW5nIFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKGNvbnN0IFRlc3RSZXN1bHQmIHJlc3Vs
dCk7CisKKyAgLy8gU3RyZWFtcyBhbiBYTUwgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRlc3QgcHJv
cGVydGllcyBvZiBhIFRlc3RSZXN1bHQKKyAgLy8gb2JqZWN0LgorICBzdGF0aWMgdm9pZCBPdXRw
dXRYbWxUZXN0UHJvcGVydGllcyhzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0KTsKIAogICAv
LyBUaGUgb3V0cHV0IGZpbGUuCi0gIGNvbnN0IFN0cmluZyBvdXRwdXRfZmlsZV87CisgIGNvbnN0
IHN0ZDo6c3RyaW5nIG91dHB1dF9maWxlXzsKIAogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcik7CiB9OwpAQCAtMzA1NSw0MSArMzUwMCwy
NyBAQCBjbGFzcyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZl
bnRMaXN0ZW5lciB7CiAvLyBDcmVhdGVzIGEgbmV3IFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlci4K
IFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6WG1sVW5pdFRlc3RSZXN1bHRQcmludGVyKGNvbnN0
IGNoYXIqIG91dHB1dF9maWxlKQogICAgIDogb3V0cHV0X2ZpbGVfKG91dHB1dF9maWxlKSB7Ci0g
IGlmIChvdXRwdXRfZmlsZV8uY19zdHIoKSA9PSBOVUxMIHx8IG91dHB1dF9maWxlXy5lbXB0eSgp
KSB7Ci0gICAgZnByaW50ZihzdGRlcnIsICJYTUwgb3V0cHV0IGZpbGUgbWF5IG5vdCBiZSBudWxs
XG4iKTsKLSAgICBmZmx1c2goc3RkZXJyKTsKLSAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgIGlm
IChvdXRwdXRfZmlsZV8uZW1wdHkoKSkgeworICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICJYTUwg
b3V0cHV0IGZpbGUgbWF5IG5vdCBiZSBudWxsIjsKICAgfQogfQogCiAvLyBDYWxsZWQgYWZ0ZXIg
dGhlIHVuaXQgdGVzdCBlbmRzLgogdm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVz
dEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgLyppdGVyYXRpb24qLykgewot
ICBGSUxFKiB4bWxvdXQgPSBOVUxMOwotICBGaWxlUGF0aCBvdXRwdXRfZmlsZShvdXRwdXRfZmls
ZV8pOwotICBGaWxlUGF0aCBvdXRwdXRfZGlyKG91dHB1dF9maWxlLlJlbW92ZUZpbGVOYW1lKCkp
OworICBGSUxFKiB4bWxvdXQgPSBPcGVuRmlsZUZvcldyaXRpbmcob3V0cHV0X2ZpbGVfKTsKKyAg
c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOworICBQcmludFhtbFVuaXRUZXN0KCZzdHJlYW0sIHVu
aXRfdGVzdCk7CisgIGZwcmludGYoeG1sb3V0LCAiJXMiLCBTdHJpbmdTdHJlYW1Ub1N0cmluZygm
c3RyZWFtKS5jX3N0cigpKTsKKyAgZmNsb3NlKHhtbG91dCk7Cit9CiAKLSAgaWYgKG91dHB1dF9k
aXIuQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKSB7Ci0gICAgeG1sb3V0ID0gcG9zaXg6
OkZPcGVuKG91dHB1dF9maWxlXy5jX3N0cigpLCAidyIpOwotICB9Ci0gIGlmICh4bWxvdXQgPT0g
TlVMTCkgewotICAgIC8vIFRPRE8od2FuKTogcmVwb3J0IHRoZSByZWFzb24gb2YgdGhlIGZhaWx1
cmUuCi0gICAgLy8KLSAgICAvLyBXZSBkb24ndCBkbyBpdCBmb3Igbm93IGFzOgotICAgIC8vCi0g
ICAgLy8gICAxLiBUaGVyZSBpcyBubyB1cmdlbnQgbmVlZCBmb3IgaXQuCi0gICAgLy8gICAyLiBJ
dCdzIGEgYml0IGludm9sdmVkIHRvIG1ha2UgdGhlIGVycm5vIHZhcmlhYmxlIHRocmVhZC1zYWZl
IG9uCi0gICAgLy8gICAgICBhbGwgdGhyZWUgb3BlcmF0aW5nIHN5c3RlbXMgKExpbnV4LCBXaW5k
b3dzLCBhbmQgTWFjIE9TKS4KLSAgICAvLyAgIDMuIFRvIGludGVycHJldCB0aGUgbWVhbmluZyBv
ZiBlcnJubyBpbiBhIHRocmVhZC1zYWZlIHdheSwKLSAgICAvLyAgICAgIHdlIG5lZWQgdGhlIHN0
cmVycm9yX3IoKSBmdW5jdGlvbiwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBvbgotICAgIC8vICAg
ICAgV2luZG93cy4KLSAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICJVbmFibGUgdG8g
b3BlbiBmaWxlIFwiJXNcIlxuIiwKLSAgICAgICAgICAgIG91dHB1dF9maWxlXy5jX3N0cigpKTsK
LSAgICBmZmx1c2goc3RkZXJyKTsKLSAgICBleGl0KEVYSVRfRkFJTFVSRSk7Ci0gIH0KLSAgUHJp
bnRYbWxVbml0VGVzdCh4bWxvdXQsIHVuaXRfdGVzdCk7Cit2b2lkIFhtbFVuaXRUZXN0UmVzdWx0
UHJpbnRlcjo6TGlzdFRlc3RzTWF0Y2hpbmdGaWx0ZXIoCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
VGVzdENhc2UqPiYgdGVzdF9jYXNlcykgeworICBGSUxFKiB4bWxvdXQgPSBPcGVuRmlsZUZvcldy
aXRpbmcob3V0cHV0X2ZpbGVfKTsKKyAgc3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOworICBQcmlu
dFhtbFRlc3RzTGlzdCgmc3RyZWFtLCB0ZXN0X2Nhc2VzKTsKKyAgZnByaW50Zih4bWxvdXQsICIl
cyIsIFN0cmluZ1N0cmVhbVRvU3RyaW5nKCZzdHJlYW0pLmNfc3RyKCkpOwogICBmY2xvc2UoeG1s
b3V0KTsKIH0KIApAQCAtMzEwMyw0NCArMzUzNCw0NSBAQCB2b2lkIFhtbFVuaXRUZXN0UmVzdWx0
UHJpbnRlcjo6T25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsCiAv
LyBtb2R1bGUgd2lsbCBjb25zaXN0IG9mIG9yZGluYXJ5IEVuZ2xpc2ggdGV4dC4KIC8vIElmIHRo
aXMgbW9kdWxlIGlzIGV2ZXIgbW9kaWZpZWQgdG8gcHJvZHVjZSB2ZXJzaW9uIDEuMSBYTUwgb3V0
cHV0LAogLy8gbW9zdCBpbnZhbGlkIGNoYXJhY3RlcnMgY2FuIGJlIHJldGFpbmVkIHVzaW5nIGNo
YXJhY3RlciByZWZlcmVuY2VzLgotLy8gVE9ETyh3YW4pOiBJdCBtaWdodCBiZSBuaWNlIHRvIGhh
dmUgYSBtaW5pbWFsbHkgaW52YXNpdmUsIGh1bWFuLXJlYWRhYmxlCisvLyBGSVhNRTogSXQgbWln
aHQgYmUgbmljZSB0byBoYXZlIGEgbWluaW1hbGx5IGludmFzaXZlLCBodW1hbi1yZWFkYWJsZQog
Ly8gZXNjYXBpbmcgc2NoZW1lIGZvciBpbnZhbGlkIGNoYXJhY3RlcnMsIHJhdGhlciB0aGFuIGRy
b3BwaW5nIHRoZW0uCi1TdHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpFc2NhcGVYbWwo
Y29uc3QgY2hhciogc3RyLCBib29sIGlzX2F0dHJpYnV0ZSkgeworc3RkOjpzdHJpbmcgWG1sVW5p
dFRlc3RSZXN1bHRQcmludGVyOjpFc2NhcGVYbWwoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0
ciwgYm9vbCBpc19hdHRyaWJ1dGUpIHsKICAgTWVzc2FnZSBtOwogCi0gIGlmIChzdHIgIT0gTlVM
TCkgewotICAgIGZvciAoY29uc3QgY2hhciogc3JjID0gc3RyOyAqc3JjOyArK3NyYykgewotICAg
ICAgc3dpdGNoICgqc3JjKSB7Ci0gICAgICAgIGNhc2UgJzwnOgotICAgICAgICAgIG0gPDwgIiZs
dDsiOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICc+JzoKLSAgICAgICAgICBtIDw8
ICImZ3Q7IjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnJic6Ci0gICAgICAgICAg
bSA8PCAiJmFtcDsiOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdcJyc6Ci0gICAg
ICAgICAgaWYgKGlzX2F0dHJpYnV0ZSkKLSAgICAgICAgICAgIG0gPDwgIiZhcG9zOyI7Ci0gICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbSA8PCAnXCcnOwotICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlICciJzoKLSAgICAgICAgICBpZiAoaXNfYXR0cmlidXRlKQotICAgICAgICAgICAg
bSA8PCAiJnF1b3Q7IjsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHIuc2l6ZSgpOyArK2kp
IHsKKyAgICBjb25zdCBjaGFyIGNoID0gc3RyW2ldOworICAgIHN3aXRjaCAoY2gpIHsKKyAgICAg
IGNhc2UgJzwnOgorICAgICAgICBtIDw8ICImbHQ7IjsKKyAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlICc+JzoKKyAgICAgICAgbSA8PCAiJmd0OyI7CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSAnJic6CisgICAgICAgIG0gPDwgIiZhbXA7IjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
ICdcJyc6CisgICAgICAgIGlmIChpc19hdHRyaWJ1dGUpCisgICAgICAgICAgbSA8PCAiJmFwb3M7
IjsKKyAgICAgICAgZWxzZQorICAgICAgICAgIG0gPDwgJ1wnJzsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlICciJzoKKyAgICAgICAgaWYgKGlzX2F0dHJpYnV0ZSkKKyAgICAgICAgICBtIDw8
ICImcXVvdDsiOworICAgICAgICBlbHNlCisgICAgICAgICAgbSA8PCAnIic7CisgICAgICAgIGJy
ZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKElzVmFsaWRYbWxDaGFyYWN0ZXIoY2gp
KSB7CisgICAgICAgICAgaWYgKGlzX2F0dHJpYnV0ZSAmJiBJc05vcm1hbGl6YWJsZVdoaXRlc3Bh
Y2UoY2gpKQorICAgICAgICAgICAgbSA8PCAiJiN4IiA8PCBTdHJpbmc6OkZvcm1hdEJ5dGUoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKQorICAgICAgICAgICAgICA8PCAiOyI7CiAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbSA8PCAnIic7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgaWYgKElzVmFsaWRYbWxDaGFyYWN0ZXIoKnNyYykpIHsK
LSAgICAgICAgICAgIGlmIChpc19hdHRyaWJ1dGUgJiYgSXNOb3JtYWxpemFibGVXaGl0ZXNwYWNl
KCpzcmMpKQotICAgICAgICAgICAgICBtIDw8IFN0cmluZzo6Rm9ybWF0KCImI3glMDJYOyIsIHVu
c2lnbmVkKCpzcmMpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgbSA8PCAqc3Jj
OwotICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLSAgICAgIH0KKyAgICAgICAgICAgIG0g
PDwgY2g7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgfQogICB9CiAKQEAgLTMxNTAs
MjEgKzM1ODIsMjAgQEAgU3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6RXNjYXBlWG1s
KGNvbnN0IGNoYXIqIHN0ciwgYm9vbCBpc19hdHRyaWJ1dGUpIHsKIC8vIFJldHVybnMgdGhlIGdp
dmVuIHN0cmluZyB3aXRoIGFsbCBjaGFyYWN0ZXJzIGludmFsaWQgaW4gWE1MIHJlbW92ZWQuCiAv
LyBDdXJyZW50bHkgaW52YWxpZCBjaGFyYWN0ZXJzIGFyZSBkcm9wcGVkIGZyb20gdGhlIHN0cmlu
Zy4gQW4KIC8vIGFsdGVybmF0aXZlIGlzIHRvIHJlcGxhY2UgdGhlbSB3aXRoIGNlcnRhaW4gY2hh
cmFjdGVycyBzdWNoIGFzIC4gb3IgPy4KLVN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6
OlJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIHN0cikgewotICBjaGFyKiBj
b25zdCBvdXRwdXQgPSBuZXcgY2hhcltzdHJsZW4oc3RyKSArIDFdOwotICBjaGFyKiBhcHBlbmRl
ciA9IG91dHB1dDsKLSAgZm9yIChjaGFyIGNoID0gKnN0cjsgY2ggIT0gJ1wwJzsgY2ggPSAqKytz
dHIpCi0gICAgaWYgKElzVmFsaWRYbWxDaGFyYWN0ZXIoY2gpKQotICAgICAgKmFwcGVuZGVyKysg
PSBjaDsKLSAgKmFwcGVuZGVyID0gJ1wwJzsKK3N0ZDo6c3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0
UHJpbnRlcjo6UmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoCisgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHN0cikgeworICBzdGQ6OnN0cmluZyBvdXRwdXQ7CisgIG91dHB1dC5yZXNlcnZlKHN0ci5z
aXplKCkpOworICBmb3IgKHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvciBpdCA9IHN0ci5iZWdp
bigpOyBpdCAhPSBzdHIuZW5kKCk7ICsraXQpCisgICAgaWYgKElzVmFsaWRYbWxDaGFyYWN0ZXIo
Kml0KSkKKyAgICAgIG91dHB1dC5wdXNoX2JhY2soKml0KTsKIAotICBTdHJpbmcgcmV0X3ZhbHVl
KG91dHB1dCk7Ci0gIGRlbGV0ZVtdIG91dHB1dDsKLSAgcmV0dXJuIHJldF92YWx1ZTsKKyAgcmV0
dXJuIG91dHB1dDsKIH0KIAogLy8gVGhlIGZvbGxvd2luZyByb3V0aW5lcyBnZW5lcmF0ZSBhbiBY
TUwgcmVwcmVzZW50YXRpb24gb2YgYSBVbml0VGVzdAogLy8gb2JqZWN0LgorLy8gR09PR0xFVEVT
VF9DTTAwMDkgRE8gTk9UIERFTEVURQogLy8KIC8vIFRoaXMgaXMgaG93IEdvb2dsZSBUZXN0IGNv
bmNlcHRzIG1hcCB0byB0aGUgRFREOgogLy8KQEAgLTMxODIsMTAgKzM2MTMsNDEgQEAgU3RyaW5n
IFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoY29u
c3QgY2hhciogc3RyKSB7CiAvLyBGb3JtYXRzIHRoZSBnaXZlbiB0aW1lIGluIG1pbGxpc2Vjb25k
cyBhcyBzZWNvbmRzLgogc3RkOjpzdHJpbmcgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKFRp
bWVJbk1pbGxpcyBtcykgewogICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOwotICBzcyA8PCBtcy8x
MDAwLjA7CisgIHNzIDw8IChzdGF0aWNfY2FzdDxkb3VibGU+KG1zKSAqIDFlLTMpOwogICByZXR1
cm4gc3Muc3RyKCk7CiB9CiAKK3N0YXRpYyBib29sIFBvcnRhYmxlTG9jYWx0aW1lKHRpbWVfdCBz
ZWNvbmRzLCBzdHJ1Y3QgdG0qIG91dCkgeworI2lmIGRlZmluZWQoX01TQ19WRVIpCisgIHJldHVy
biBsb2NhbHRpbWVfcyhvdXQsICZzZWNvbmRzKSA9PSAwOworI2VsaWYgZGVmaW5lZChfX01JTkdX
MzJfXykgfHwgZGVmaW5lZChfX01JTkdXNjRfXykKKyAgLy8gTUlOR1cgPHRpbWUuaD4gcHJvdmlk
ZXMgbmVpdGhlciBsb2NhbHRpbWVfciBub3IgbG9jYWx0aW1lX3MsIGJ1dCB1c2VzCisgIC8vIFdp
bmRvd3MnIGxvY2FsdGltZSgpLCB3aGljaCBoYXMgYSB0aHJlYWQtbG9jYWwgdG0gYnVmZmVyLgor
ICBzdHJ1Y3QgdG0qIHRtX3B0ciA9IGxvY2FsdGltZSgmc2Vjb25kcyk7ICAvLyBOT0xJTlQKKyAg
aWYgKHRtX3B0ciA9PSBOVUxMKQorICAgIHJldHVybiBmYWxzZTsKKyAgKm91dCA9ICp0bV9wdHI7
CisgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgcmV0dXJuIGxvY2FsdGltZV9yKCZzZWNvbmRzLCBv
dXQpICE9IE5VTEw7CisjZW5kaWYKK30KKworLy8gQ29udmVydHMgdGhlIGdpdmVuIGVwb2NoIHRp
bWUgaW4gbWlsbGlzZWNvbmRzIHRvIGEgZGF0ZSBzdHJpbmcgaW4gdGhlIElTTworLy8gODYwMSBm
b3JtYXQsIHdpdGhvdXQgdGhlIHRpbWV6b25lIGluZm9ybWF0aW9uLgorc3RkOjpzdHJpbmcgRm9y
bWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoVGltZUluTWlsbGlzIG1zKSB7CisgIHN0cnVj
dCB0bSB0aW1lX3N0cnVjdDsKKyAgaWYgKCFQb3J0YWJsZUxvY2FsdGltZShzdGF0aWNfY2FzdDx0
aW1lX3Q+KG1zIC8gMTAwMCksICZ0aW1lX3N0cnVjdCkpCisgICAgcmV0dXJuICIiOworICAvLyBZ
WVlZLU1NLUREVGhoOm1tOnNzCisgIHJldHVybiBTdHJlYW1hYmxlVG9TdHJpbmcodGltZV9zdHJ1
Y3QudG1feWVhciArIDE5MDApICsgIi0iICsKKyAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgy
KHRpbWVfc3RydWN0LnRtX21vbiArIDEpICsgIi0iICsKKyAgICAgIFN0cmluZzo6Rm9ybWF0SW50
V2lkdGgyKHRpbWVfc3RydWN0LnRtX21kYXkpICsgIlQiICsKKyAgICAgIFN0cmluZzo6Rm9ybWF0
SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX2hvdXIpICsgIjoiICsKKyAgICAgIFN0cmluZzo6Rm9y
bWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX21pbikgKyAiOiIgKworICAgICAgU3RyaW5nOjpG
b3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1fc2VjKTsKK30KKwogLy8gU3RyZWFtcyBhbiBY
TUwgQ0RBVEEgc2VjdGlvbiwgZXNjYXBpbmcgaW52YWxpZCBDREFUQSBzZXF1ZW5jZXMgYXMgbmVl
ZGVkLgogdm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dFhtbENEYXRhU2VjdGlv
big6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhKSB7CkBAIC0zMjA2LDg5ICsz
NjY4LDE3OSBAQCB2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T3V0cHV0WG1sQ0RhdGFT
ZWN0aW9uKDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCiAgICpzdHJlYW0gPDwgIl1dPiI7CiB9CiAK
K3ZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPdXRwdXRYbWxBdHRyaWJ1dGUoCisgICAg
c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGVsZW1lbnRfbmFt
ZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYg
dmFsdWUpIHsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBhbGxvd2VkX25hbWVz
ID0KKyAgICAgIEdldFJlc2VydmVkQXR0cmlidXRlc0ZvckVsZW1lbnQoZWxlbWVudF9uYW1lKTsK
KworICBHVEVTVF9DSEVDS18oc3RkOjpmaW5kKGFsbG93ZWRfbmFtZXMuYmVnaW4oKSwgYWxsb3dl
ZF9uYW1lcy5lbmQoKSwgbmFtZSkgIT0KKyAgICAgICAgICAgICAgICAgICBhbGxvd2VkX25hbWVz
LmVuZCgpKQorICAgICAgPDwgIkF0dHJpYnV0ZSAiIDw8IG5hbWUgPDwgIiBpcyBub3QgYWxsb3dl
ZCBmb3IgZWxlbWVudCA8IiA8PCBlbGVtZW50X25hbWUKKyAgICAgIDw8ICI+LiI7CisKKyAgKnN0
cmVhbSA8PCAiICIgPDwgbmFtZSA8PCAiPVwiIiA8PCBFc2NhcGVYbWxBdHRyaWJ1dGUodmFsdWUp
IDw8ICJcIiI7Cit9CisKIC8vIFByaW50cyBhbiBYTUwgcmVwcmVzZW50YXRpb24gb2YgYSBUZXN0
SW5mbyBvYmplY3QuCi0vLyBUT0RPKHdhbik6IFRoZXJlIGlzIGFsc28gdmFsdWUgaW4gcHJpbnRp
bmcgcHJvcGVydGllcyB3aXRoIHRoZSBwbGFpbiBwcmludGVyLgorLy8gRklYTUU6IFRoZXJlIGlz
IGFsc28gdmFsdWUgaW4gcHJpbnRpbmcgcHJvcGVydGllcyB3aXRoIHRoZSBwbGFpbiBwcmludGVy
Lgogdm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dFhtbFRlc3RJbmZvKDo6c3Rk
Ojpvc3RyZWFtKiBzdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdEluZm8mIHRlc3RfaW5m
bykgewogICBjb25zdCBUZXN0UmVzdWx0JiByZXN1bHQgPSAqdGVzdF9pbmZvLnJlc3VsdCgpOwot
ICAqc3RyZWFtIDw8ICIgICAgPHRlc3RjYXNlIG5hbWU9XCIiCi0gICAgICAgICAgPDwgRXNjYXBl
WG1sQXR0cmlidXRlKHRlc3RfaW5mby5uYW1lKCkpLmNfc3RyKCkKLSAgICAgICAgICA8PCAiXCIg
c3RhdHVzPVwiIgotICAgICAgICAgIDw8ICh0ZXN0X2luZm8uc2hvdWxkX3J1bigpID8gInJ1biIg
OiAibm90cnVuIikKLSAgICAgICAgICA8PCAiXCIgdGltZT1cIiIKLSAgICAgICAgICA8PCBGb3Jt
YXRUaW1lSW5NaWxsaXNBc1NlY29uZHMocmVzdWx0LmVsYXBzZWRfdGltZSgpKQotICAgICAgICAg
IDw8ICJcIiBjbGFzc25hbWU9XCIiIDw8IEVzY2FwZVhtbEF0dHJpYnV0ZSh0ZXN0X2Nhc2VfbmFt
ZSkuY19zdHIoKQotICAgICAgICAgIDw8ICJcIiIgPDwgVGVzdFByb3BlcnRpZXNBc1htbEF0dHJp
YnV0ZXMocmVzdWx0KS5jX3N0cigpOworICBjb25zdCBzdGQ6OnN0cmluZyBrVGVzdGNhc2UgPSAi
dGVzdGNhc2UiOworCisgIGlmICh0ZXN0X2luZm8uaXNfaW5fYW5vdGhlcl9zaGFyZCgpKSB7Cisg
ICAgcmV0dXJuOworICB9CisKKyAgKnN0cmVhbSA8PCAiICAgIDx0ZXN0Y2FzZSI7CisgIE91dHB1
dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgIm5hbWUiLCB0ZXN0X2luZm8ubmFtZSgp
KTsKKworICBpZiAodGVzdF9pbmZvLnZhbHVlX3BhcmFtKCkgIT0gTlVMTCkgeworICAgIE91dHB1
dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgInZhbHVlX3BhcmFtIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdF9pbmZvLnZhbHVlX3BhcmFtKCkpOworICB9CisgIGlmICh0ZXN0
X2luZm8udHlwZV9wYXJhbSgpICE9IE5VTEwpIHsKKyAgICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3Ry
ZWFtLCBrVGVzdGNhc2UsICJ0eXBlX3BhcmFtIiwgdGVzdF9pbmZvLnR5cGVfcGFyYW0oKSk7Cisg
IH0KKyAgaWYgKEdURVNUX0ZMQUcobGlzdF90ZXN0cykpIHsKKyAgICBPdXRwdXRYbWxBdHRyaWJ1
dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJmaWxlIiwgdGVzdF9pbmZvLmZpbGUoKSk7CisgICAgT3V0
cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNlLCAibGluZSIsCisgICAgICAgICAgICAg
ICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh0ZXN0X2luZm8ubGluZSgpKSk7CisgICAgKnN0
cmVhbSA8PCAiIC8+XG4iOworICAgIHJldHVybjsKKyAgfQorCisgIE91dHB1dFhtbEF0dHJpYnV0
ZShzdHJlYW0sIGtUZXN0Y2FzZSwgInN0YXR1cyIsCisgICAgICAgICAgICAgICAgICAgICB0ZXN0
X2luZm8uc2hvdWxkX3J1bigpID8gInJ1biIgOiAibm90cnVuIik7CisgIE91dHB1dFhtbEF0dHJp
YnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgInRpbWUiLAorICAgICAgICAgICAgICAgICAgICAgRm9y
bWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKHJlc3VsdC5lbGFwc2VkX3RpbWUoKSkpOworICBPdXRw
dXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJjbGFzc25hbWUiLCB0ZXN0X2Nhc2Vf
bmFtZSk7CiAKICAgaW50IGZhaWx1cmVzID0gMDsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1
bHQudG90YWxfcGFydF9jb3VudCgpOyArK2kpIHsKICAgICBjb25zdCBUZXN0UGFydFJlc3VsdCYg
cGFydCA9IHJlc3VsdC5HZXRUZXN0UGFydFJlc3VsdChpKTsKICAgICBpZiAocGFydC5mYWlsZWQo
KSkgewotICAgICAgaWYgKCsrZmFpbHVyZXMgPT0gMSkKKyAgICAgIGlmICgrK2ZhaWx1cmVzID09
IDEpIHsKICAgICAgICAgKnN0cmVhbSA8PCAiPlxuIjsKKyAgICAgIH0KKyAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIGxvY2F0aW9uID0KKyAgICAgICAgICBpbnRlcm5hbDo6Rm9ybWF0Q29tcGlsZXJJ
bmRlcGVuZGVudEZpbGVMb2NhdGlvbihwYXJ0LmZpbGVfbmFtZSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnQubGluZV9udW1i
ZXIoKSk7CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyBzdW1tYXJ5ID0gbG9jYXRpb24gKyAiXG4i
ICsgcGFydC5zdW1tYXJ5KCk7CiAgICAgICAqc3RyZWFtIDw8ICIgICAgICA8ZmFpbHVyZSBtZXNz
YWdlPVwiIgotICAgICAgICAgICAgICA8PCBFc2NhcGVYbWxBdHRyaWJ1dGUocGFydC5zdW1tYXJ5
KCkpLmNfc3RyKCkKKyAgICAgICAgICAgICAgPDwgRXNjYXBlWG1sQXR0cmlidXRlKHN1bW1hcnku
Y19zdHIoKSkKICAgICAgICAgICAgICAgPDwgIlwiIHR5cGU9XCJcIj4iOwotICAgICAgY29uc3Qg
U3RyaW5nIG1lc3NhZ2UgPSBSZW1vdmVJbnZhbGlkWG1sQ2hhcmFjdGVycyhTdHJpbmc6OkZvcm1h
dCgKLSAgICAgICAgICAiJXM6JWRcbiVzIiwKLSAgICAgICAgICBwYXJ0LmZpbGVfbmFtZSgpLCBw
YXJ0LmxpbmVfbnVtYmVyKCksCi0gICAgICAgICAgcGFydC5tZXNzYWdlKCkpLmNfc3RyKCkpOwot
ICAgICAgT3V0cHV0WG1sQ0RhdGFTZWN0aW9uKHN0cmVhbSwgbWVzc2FnZS5jX3N0cigpKTsKKyAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGRldGFpbCA9IGxvY2F0aW9uICsgIlxuIiArIHBhcnQubWVz
c2FnZSgpOworICAgICAgT3V0cHV0WG1sQ0RhdGFTZWN0aW9uKHN0cmVhbSwgUmVtb3ZlSW52YWxp
ZFhtbENoYXJhY3RlcnMoZGV0YWlsKS5jX3N0cigpKTsKICAgICAgICpzdHJlYW0gPDwgIjwvZmFp
bHVyZT5cbiI7CiAgICAgfQogICB9CiAKLSAgaWYgKGZhaWx1cmVzID09IDApCisgIGlmIChmYWls
dXJlcyA9PSAwICYmIHJlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCkgPT0gMCkgewogICAgICpz
dHJlYW0gPDwgIiAvPlxuIjsKLSAgZWxzZQorICB9IGVsc2UgeworICAgIGlmIChmYWlsdXJlcyA9
PSAwKSB7CisgICAgICAqc3RyZWFtIDw8ICI+XG4iOworICAgIH0KKyAgICBPdXRwdXRYbWxUZXN0
UHJvcGVydGllcyhzdHJlYW0sIHJlc3VsdCk7CiAgICAgKnN0cmVhbSA8PCAiICAgIDwvdGVzdGNh
c2U+XG4iOworICB9CiB9CiAKIC8vIFByaW50cyBhbiBYTUwgcmVwcmVzZW50YXRpb24gb2YgYSBU
ZXN0Q2FzZSBvYmplY3QKLXZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludFhtbFRl
c3RDYXNlKEZJTEUqIG91dCwKK3ZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludFht
bFRlc3RDYXNlKHN0ZDo6b3N0cmVhbSogc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSkgewotICBm
cHJpbnRmKG91dCwKLSAgICAgICAgICAiICA8dGVzdHN1aXRlIG5hbWU9XCIlc1wiIHRlc3RzPVwi
JWRcIiBmYWlsdXJlcz1cIiVkXCIgIgotICAgICAgICAgICJkaXNhYmxlZD1cIiVkXCIgIiwKLSAg
ICAgICAgICBFc2NhcGVYbWxBdHRyaWJ1dGUodGVzdF9jYXNlLm5hbWUoKSkuY19zdHIoKSwKLSAg
ICAgICAgICB0ZXN0X2Nhc2UudG90YWxfdGVzdF9jb3VudCgpLAotICAgICAgICAgIHRlc3RfY2Fz
ZS5mYWlsZWRfdGVzdF9jb3VudCgpLAotICAgICAgICAgIHRlc3RfY2FzZS5kaXNhYmxlZF90ZXN0
X2NvdW50KCkpOwotICBmcHJpbnRmKG91dCwKLSAgICAgICAgICAiZXJyb3JzPVwiMFwiIHRpbWU9
XCIlc1wiPlxuIiwKLSAgICAgICAgICBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHModGVzdF9j
YXNlLmVsYXBzZWRfdGltZSgpKS5jX3N0cigpKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3Rz
dWl0ZSA9ICJ0ZXN0c3VpdGUiOworICAqc3RyZWFtIDw8ICIgIDwiIDw8IGtUZXN0c3VpdGU7Cisg
IE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUsICJuYW1lIiwgdGVzdF9jYXNl
Lm5hbWUoKSk7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUsICJ0ZXN0
cyIsCisgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodGVzdF9jYXNlLnJl
cG9ydGFibGVfdGVzdF9jb3VudCgpKSk7CisgIGlmICghR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSkg
eworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUsICJmYWlsdXJlcyIs
CisgICAgICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh0ZXN0X2Nhc2UuZmFp
bGVkX3Rlc3RfY291bnQoKSkpOworICAgIE91dHB1dFhtbEF0dHJpYnV0ZSgKKyAgICAgICAgc3Ry
ZWFtLCBrVGVzdHN1aXRlLCAiZGlzYWJsZWQiLAorICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmco
dGVzdF9jYXNlLnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpKSk7CisgICAgT3V0cHV0
WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZSwgImVycm9ycyIsICIwIik7CisgICAgT3V0
cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZSwgInRpbWUiLAorICAgICAgICAgICAg
ICAgICAgICAgICBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHModGVzdF9jYXNlLmVsYXBzZWRf
dGltZSgpKSk7CisgICAgKnN0cmVhbSA8PCBUZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRlcyh0
ZXN0X2Nhc2UuYWRfaG9jX3Rlc3RfcmVzdWx0KCkpOworICB9CisgICpzdHJlYW0gPDwgIj5cbiI7
CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVzdF9jYXNlLnRvdGFsX3Rlc3RfY291bnQoKTsgKytp
KSB7Ci0gICAgU3RyU3RyZWFtIHN0cmVhbTsKLSAgICBPdXRwdXRYbWxUZXN0SW5mbygmc3RyZWFt
LCB0ZXN0X2Nhc2UubmFtZSgpLCAqdGVzdF9jYXNlLkdldFRlc3RJbmZvKGkpKTsKLSAgICBmcHJp
bnRmKG91dCwgIiVzIiwgU3RyU3RyZWFtVG9TdHJpbmcoJnN0cmVhbSkuY19zdHIoKSk7CisgICAg
aWYgKHRlc3RfY2FzZS5HZXRUZXN0SW5mbyhpKS0+aXNfcmVwb3J0YWJsZSgpKQorICAgICAgT3V0
cHV0WG1sVGVzdEluZm8oc3RyZWFtLCB0ZXN0X2Nhc2UubmFtZSgpLCAqdGVzdF9jYXNlLkdldFRl
c3RJbmZvKGkpKTsKICAgfQotICBmcHJpbnRmKG91dCwgIiAgPC90ZXN0c3VpdGU+XG4iKTsKKyAg
KnN0cmVhbSA8PCAiICA8LyIgPDwga1Rlc3RzdWl0ZSA8PCAiPlxuIjsKIH0KIAogLy8gUHJpbnRz
IGFuIFhNTCBzdW1tYXJ5IG9mIHVuaXRfdGVzdCB0byBvdXRwdXQgc3RyZWFtIG91dC4KLXZvaWQg
WG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludFhtbFVuaXRUZXN0KEZJTEUqIG91dCwKK3Zv
aWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludFhtbFVuaXRUZXN0KHN0ZDo6b3N0cmVh
bSogc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCkgewotICBmcHJpbnRmKG91dCwgIjw/eG1sIHZl
cnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCI/PlxuIik7Ci0gIGZwcmludGYob3V0LAot
ICAgICAgICAgICI8dGVzdHN1aXRlcyB0ZXN0cz1cIiVkXCIgZmFpbHVyZXM9XCIlZFwiIGRpc2Fi
bGVkPVwiJWRcIiAiCi0gICAgICAgICAgImVycm9ycz1cIjBcIiB0aW1lPVwiJXNcIiAiLAotICAg
ICAgICAgIHVuaXRfdGVzdC50b3RhbF90ZXN0X2NvdW50KCksCi0gICAgICAgICAgdW5pdF90ZXN0
LmZhaWxlZF90ZXN0X2NvdW50KCksCi0gICAgICAgICAgdW5pdF90ZXN0LmRpc2FibGVkX3Rlc3Rf
Y291bnQoKSwKLSAgICAgICAgICBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHModW5pdF90ZXN0
LmVsYXBzZWRfdGltZSgpKS5jX3N0cigpKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RzdWl0
ZXMgPSAidGVzdHN1aXRlcyI7CisKKyAgKnN0cmVhbSA8PCAiPD94bWwgdmVyc2lvbj1cIjEuMFwi
IGVuY29kaW5nPVwiVVRGLThcIj8+XG4iOworICAqc3RyZWFtIDw8ICI8IiA8PCBrVGVzdHN1aXRl
czsKKworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlcywgInRlc3RzIiwK
KyAgICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh1bml0X3Rlc3QucmVwb3J0
YWJsZV90ZXN0X2NvdW50KCkpKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3Rz
dWl0ZXMsICJmYWlsdXJlcyIsCisgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJp
bmcodW5pdF90ZXN0LmZhaWxlZF90ZXN0X2NvdW50KCkpKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRl
KAorICAgICAgc3RyZWFtLCBrVGVzdHN1aXRlcywgImRpc2FibGVkIiwKKyAgICAgIFN0cmVhbWFi
bGVUb1N0cmluZyh1bml0X3Rlc3QucmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkpKTsK
KyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJlcnJvcnMiLCAiMCIp
OworICBPdXRwdXRYbWxBdHRyaWJ1dGUoCisgICAgICBzdHJlYW0sIGtUZXN0c3VpdGVzLCAidGlt
ZXN0YW1wIiwKKyAgICAgIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKHVuaXRfdGVz
dC5zdGFydF90aW1lc3RhbXAoKSkpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVz
dHN1aXRlcywgInRpbWUiLAorICAgICAgICAgICAgICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlz
QXNTZWNvbmRzKHVuaXRfdGVzdC5lbGFwc2VkX3RpbWUoKSkpOworCiAgIGlmIChHVEVTVF9GTEFH
KHNodWZmbGUpKSB7Ci0gICAgZnByaW50ZihvdXQsICJyYW5kb21fc2VlZD1cIiVkXCIgIiwgdW5p
dF90ZXN0LnJhbmRvbV9zZWVkKCkpOworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtU
ZXN0c3VpdGVzLCAicmFuZG9tX3NlZWQiLAorICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW1h
YmxlVG9TdHJpbmcodW5pdF90ZXN0LnJhbmRvbV9zZWVkKCkpKTsKKyAgfQorICAqc3RyZWFtIDw8
IFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKHVuaXRfdGVzdC5hZF9ob2NfdGVzdF9yZXN1
bHQoKSk7CisKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJuYW1l
IiwgIkFsbFRlc3RzIik7CisgICpzdHJlYW0gPDwgIj5cbiI7CisKKyAgZm9yIChpbnQgaSA9IDA7
IGkgPCB1bml0X3Rlc3QudG90YWxfdGVzdF9jYXNlX2NvdW50KCk7ICsraSkgeworICAgIGlmICh1
bml0X3Rlc3QuR2V0VGVzdENhc2UoaSktPnJlcG9ydGFibGVfdGVzdF9jb3VudCgpID4gMCkKKyAg
ICAgIFByaW50WG1sVGVzdENhc2Uoc3RyZWFtLCAqdW5pdF90ZXN0LkdldFRlc3RDYXNlKGkpKTsK
ICAgfQotICBmcHJpbnRmKG91dCwgIm5hbWU9XCJBbGxUZXN0c1wiPlxuIik7Ci0gIGZvciAoaW50
IGkgPSAwOyBpIDwgdW5pdF90ZXN0LnRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpOyArK2kpCi0gICAg
UHJpbnRYbWxUZXN0Q2FzZShvdXQsICp1bml0X3Rlc3QuR2V0VGVzdENhc2UoaSkpOwotICBmcHJp
bnRmKG91dCwgIjwvdGVzdHN1aXRlcz5cbiIpOworICAqc3RyZWFtIDw8ICI8LyIgPDwga1Rlc3Rz
dWl0ZXMgPDwgIj5cbiI7Cit9CisKK3ZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmlu
dFhtbFRlc3RzTGlzdCgKKyAgICBzdGQ6Om9zdHJlYW0qIHN0cmVhbSwgY29uc3Qgc3RkOjp2ZWN0
b3I8VGVzdENhc2UqPiYgdGVzdF9jYXNlcykgeworICBjb25zdCBzdGQ6OnN0cmluZyBrVGVzdHN1
aXRlcyA9ICJ0ZXN0c3VpdGVzIjsKKworICAqc3RyZWFtIDw8ICI8P3htbCB2ZXJzaW9uPVwiMS4w
XCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz5cbiI7CisgICpzdHJlYW0gPDwgIjwiIDw8IGtUZXN0c3Vp
dGVzOworCisgIGludCB0b3RhbF90ZXN0cyA9IDA7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dGVzdF9jYXNlcy5zaXplKCk7ICsraSkgeworICAgIHRvdGFsX3Rlc3RzICs9IHRlc3RfY2FzZXNb
aV0tPnRvdGFsX3Rlc3RfY291bnQoKTsKKyAgfQorICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFt
LCBrVGVzdHN1aXRlcywgInRlc3RzIiwKKyAgICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVU
b1N0cmluZyh0b3RhbF90ZXN0cykpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVz
dHN1aXRlcywgIm5hbWUiLCAiQWxsVGVzdHMiKTsKKyAgKnN0cmVhbSA8PCAiPlxuIjsKKworICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBQcmlu
dFhtbFRlc3RDYXNlKHN0cmVhbSwgKnRlc3RfY2FzZXNbaV0pOworICB9CisgICpzdHJlYW0gPDwg
IjwvIiA8PCBrVGVzdHN1aXRlcyA8PCAiPlxuIjsKIH0KIAogLy8gUHJvZHVjZXMgYSBzdHJpbmcg
cmVwcmVzZW50aW5nIHRoZSB0ZXN0IHByb3BlcnRpZXMgaW4gYSByZXN1bHQgYXMgc3BhY2UKIC8v
IGRlbGltaXRlZCBYTUwgYXR0cmlidXRlcyBiYXNlZCBvbiB0aGUgcHJvcGVydHkga2V5PSJ2YWx1
ZSIgcGFpcnMuCi1TdHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpUZXN0UHJvcGVydGll
c0FzWG1sQXR0cmlidXRlcygKK3N0ZDo6c3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6
VGVzdFByb3BlcnRpZXNBc1htbEF0dHJpYnV0ZXMoCiAgICAgY29uc3QgVGVzdFJlc3VsdCYgcmVz
dWx0KSB7CiAgIE1lc3NhZ2UgYXR0cmlidXRlczsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1
bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpOyArK2kpIHsKQEAgLTMyOTksNTIgKzM4NTEsNTYyIEBA
IFN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRy
aWJ1dGVzKAogICByZXR1cm4gYXR0cmlidXRlcy5HZXRTdHJpbmcoKTsKIH0KIAordm9pZCBYbWxV
bml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dFhtbFRlc3RQcm9wZXJ0aWVzKAorICAgIHN0ZDo6
b3N0cmVhbSogc3RyZWFtLCBjb25zdCBUZXN0UmVzdWx0JiByZXN1bHQpIHsKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcga1Byb3BlcnRpZXMgPSAicHJvcGVydGllcyI7CisgIGNvbnN0IHN0ZDo6c3RyaW5n
IGtQcm9wZXJ0eSA9ICJwcm9wZXJ0eSI7CisKKyAgaWYgKHJlc3VsdC50ZXN0X3Byb3BlcnR5X2Nv
dW50KCkgPD0gMCkgeworICAgIHJldHVybjsKKyAgfQorCisgICpzdHJlYW0gPDwgIjwiIDw8IGtQ
cm9wZXJ0aWVzIDw8ICI+XG4iOworICBmb3IgKGludCBpID0gMDsgaSA8IHJlc3VsdC50ZXN0X3By
b3BlcnR5X2NvdW50KCk7ICsraSkgeworICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgcHJvcGVydHkg
PSByZXN1bHQuR2V0VGVzdFByb3BlcnR5KGkpOworICAgICpzdHJlYW0gPDwgIjwiIDw8IGtQcm9w
ZXJ0eTsKKyAgICAqc3RyZWFtIDw8ICIgbmFtZT1cIiIgPDwgRXNjYXBlWG1sQXR0cmlidXRlKHBy
b3BlcnR5LmtleSgpKSA8PCAiXCIiOworICAgICpzdHJlYW0gPDwgIiB2YWx1ZT1cIiIgPDwgRXNj
YXBlWG1sQXR0cmlidXRlKHByb3BlcnR5LnZhbHVlKCkpIDw8ICJcIiI7CisgICAgKnN0cmVhbSA8
PCAiLz5cbiI7CisgIH0KKyAgKnN0cmVhbSA8PCAiPC8iIDw8IGtQcm9wZXJ0aWVzIDw8ICI+XG4i
OworfQorCiAvLyBFbmQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyCiAKLS8vIENsYXNzIFNjb3Bl
ZFRyYWNlCisvLyBUaGlzIGNsYXNzIGdlbmVyYXRlcyBhbiBKU09OIG91dHB1dCBmaWxlLgorY2xh
c3MgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3Rl
bmVyIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIoY29u
c3QgY2hhciogb3V0cHV0X2ZpbGUpOwogCi0vLyBQdXNoZXMgdGhlIGdpdmVuIHNvdXJjZSBmaWxl
IGxvY2F0aW9uIGFuZCBtZXNzYWdlIG9udG8gYSBwZXItdGhyZWFkCi0vLyB0cmFjZSBzdGFjayBt
YWludGFpbmVkIGJ5IEdvb2dsZSBUZXN0LgotLy8gTCA8IFVuaXRUZXN0OjptdXRleF8KLVNjb3Bl
ZFRyYWNlOjpTY29wZWRUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgTWVz
c2FnZSYgbWVzc2FnZSkgewotICBUcmFjZUluZm8gdHJhY2U7Ci0gIHRyYWNlLmZpbGUgPSBmaWxl
OwotICB0cmFjZS5saW5lID0gbGluZTsKLSAgdHJhY2UubWVzc2FnZSA9IG1lc3NhZ2UuR2V0U3Ry
aW5nKCk7CisgIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3Qm
IHVuaXRfdGVzdCwgaW50IGl0ZXJhdGlvbik7CiAKLSAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkt
PlB1c2hHVGVzdFRyYWNlKHRyYWNlKTsKKyAgLy8gUHJpbnRzIGFuIEpTT04gc3VtbWFyeSBvZiBh
bGwgdW5pdCB0ZXN0cy4KKyAgc3RhdGljIHZvaWQgUHJpbnRKc29uVGVzdExpc3QoOjpzdGQ6Om9z
dHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8VGVzdENhc2UqPiYgdGVzdF9jYXNlcyk7CisKKyBwcml2YXRlOgorICAvLyBSZXR1
cm5zIGFuIEpTT04tZXNjYXBlZCBjb3B5IG9mIHRoZSBpbnB1dCBzdHJpbmcgc3RyLgorICBzdGF0
aWMgc3RkOjpzdHJpbmcgRXNjYXBlSnNvbihjb25zdCBzdGQ6OnN0cmluZyYgc3RyKTsKKworICAv
Ly8vIFZlcmlmaWVzIHRoYXQgdGhlIGdpdmVuIGF0dHJpYnV0ZSBiZWxvbmdzIHRvIHRoZSBnaXZl
biBlbGVtZW50IGFuZAorICAvLy8vIHN0cmVhbXMgdGhlIGF0dHJpYnV0ZSBhcyBKU09OLgorICBz
dGF0aWMgdm9pZCBPdXRwdXRKc29uS2V5KHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBlbGVtZW50X25hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbmRlbnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBjb21tYSA9IHRydWUpOworICBzdGF0aWMgdm9pZCBPdXRw
dXRKc29uS2V5KHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBlbGVtZW50X25hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBpbmRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjb21tYSA9
IHRydWUpOworCisgIC8vIFN0cmVhbXMgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdElu
Zm8gb2JqZWN0LgorICBzdGF0aWMgdm9pZCBPdXRwdXRKc29uVGVzdEluZm8oOjpzdGQ6Om9zdHJl
YW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHRlc3RfY2FzZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VGVzdEluZm8mIHRlc3RfaW5mbyk7CisKKyAgLy8gUHJpbnRzIGEgSlNPTiByZXByZXNlbnRhdGlv
biBvZiBhIFRlc3RDYXNlIG9iamVjdAorICBzdGF0aWMgdm9pZCBQcmludEpzb25UZXN0Q2FzZSg6
OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKTsKKworICAvLyBQcmludHMgYSBKU09OIHN1bW1hcnkg
b2YgdW5pdF90ZXN0IHRvIG91dHB1dCBzdHJlYW0gb3V0LgorICBzdGF0aWMgdm9pZCBQcmludEpz
b25Vbml0VGVzdCg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KTsKKworICAvLyBQcm9kdWNlcyBh
IHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHRlc3QgcHJvcGVydGllcyBpbiBhIHJlc3VsdCBhcwor
ICAvLyBhIEpTT04gZGljdGlvbmFyeS4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIFRlc3RQcm9wZXJ0
aWVzQXNKc29uKGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbmRlbnQpOworCisgIC8v
IFRoZSBvdXRwdXQgZmlsZS4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgb3V0cHV0X2ZpbGVfOworCisg
IEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRl
cik7Cit9OworCisvLyBDcmVhdGVzIGEgbmV3IEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIuCitK
c29uVW5pdFRlc3RSZXN1bHRQcmludGVyOjpKc29uVW5pdFRlc3RSZXN1bHRQcmludGVyKGNvbnN0
IGNoYXIqIG91dHB1dF9maWxlKQorICAgIDogb3V0cHV0X2ZpbGVfKG91dHB1dF9maWxlKSB7Cisg
IGlmIChvdXRwdXRfZmlsZV8uZW1wdHkoKSkgeworICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICJK
U09OIG91dHB1dCBmaWxlIG1heSBub3QgYmUgbnVsbCI7CisgIH0KIH0KIAotLy8gUG9wcyB0aGUg
aW5mbyBwdXNoZWQgYnkgdGhlIGMndG9yLgotLy8gTCA8IFVuaXRUZXN0OjptdXRleF8KLVNjb3Bl
ZFRyYWNlOjp+U2NvcGVkVHJhY2UoKSB7Ci0gIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5Qb3BH
VGVzdFRyYWNlKCk7Cit2b2lkIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdEl0ZXJh
dGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgLyppdGVyYXRpb24qLykgeworICBGSUxF
KiBqc29ub3V0ID0gT3BlbkZpbGVGb3JXcml0aW5nKG91dHB1dF9maWxlXyk7CisgIHN0ZDo6c3Ry
aW5nc3RyZWFtIHN0cmVhbTsKKyAgUHJpbnRKc29uVW5pdFRlc3QoJnN0cmVhbSwgdW5pdF90ZXN0
KTsKKyAgZnByaW50Zihqc29ub3V0LCAiJXMiLCBTdHJpbmdTdHJlYW1Ub1N0cmluZygmc3RyZWFt
KS5jX3N0cigpKTsKKyAgZmNsb3NlKGpzb25vdXQpOwogfQogCisvLyBSZXR1cm5zIGFuIEpTT04t
ZXNjYXBlZCBjb3B5IG9mIHRoZSBpbnB1dCBzdHJpbmcgc3RyLgorc3RkOjpzdHJpbmcgSnNvblVu
aXRUZXN0UmVzdWx0UHJpbnRlcjo6RXNjYXBlSnNvbihjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7
CisgIE1lc3NhZ2UgbTsKIAotLy8gY2xhc3MgT3NTdGFja1RyYWNlR2V0dGVyCisgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc3RyLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgY2hhciBjaCA9IHN0
cltpXTsKKyAgICBzd2l0Y2ggKGNoKSB7CisgICAgICBjYXNlICdcXCc6CisgICAgICBjYXNlICci
JzoKKyAgICAgIGNhc2UgJy8nOgorICAgICAgICBtIDw8ICdcXCcgPDwgY2g7CisgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSAnXGInOgorICAgICAgICBtIDw8ICJcXGIiOworICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgJ1x0JzoKKyAgICAgICAgbSA8PCAiXFx0IjsKKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlICdcbic6CisgICAgICAgIG0gPDwgIlxcbiI7CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSAnXGYnOgorICAgICAgICBtIDw8ICJcXGYiOworICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgbSA8PCAiXFxyIjsKKyAgICAgICAgYnJlYWs7CisgICAg
ICBkZWZhdWx0OgorICAgICAgICBpZiAoY2ggPCAnICcpIHsKKyAgICAgICAgICBtIDw8ICJcXHUw
MCIgPDwgU3RyaW5nOjpGb3JtYXRCeXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgbSA8PCBjaDsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICB9CisgIH0KIAotLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0
cmFjZSBhcyBhIFN0cmluZy4gIFBhcmFtZXRlcnM6Ci0vLwotLy8gICBtYXhfZGVwdGggIC0gdGhl
IG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZAotLy8gICAgICAg
ICAgICAgICAgaW4gdGhlIHRyYWNlLgotLy8gICBza2lwX2NvdW50IC0gdGhlIG51bWJlciBvZiB0
b3AgZnJhbWVzIHRvIGJlIHNraXBwZWQ7IGRvZXNuJ3QgY291bnQKLS8vICAgICAgICAgICAgICAg
IGFnYWluc3QgbWF4X2RlcHRoLgotLy8KLS8vIEwgPCBtdXRleF8KLS8vIFdlIHVzZSAiTCA8IG11
dGV4XyIgdG8gZGVub3RlIHRoYXQgdGhlIGZ1bmN0aW9uIG1heSBhY3F1aXJlIG11dGV4Xy4KLVN0
cmluZyBPc1N0YWNrVHJhY2VHZXR0ZXI6OkN1cnJlbnRTdGFja1RyYWNlKGludCwgaW50KSB7Ci0g
IHJldHVybiBTdHJpbmcoIiIpOworICByZXR1cm4gbS5HZXRTdHJpbmcoKTsKIH0KIAotLy8gTCA8
IG11dGV4Xwotdm9pZCBPc1N0YWNrVHJhY2VHZXR0ZXI6OlVwb25MZWF2aW5nR1Rlc3QoKSB7Cisv
LyBUaGUgZm9sbG93aW5nIHJvdXRpbmVzIGdlbmVyYXRlIGFuIEpTT04gcmVwcmVzZW50YXRpb24g
b2YgYSBVbml0VGVzdAorLy8gb2JqZWN0LgorCisvLyBGb3JtYXRzIHRoZSBnaXZlbiB0aW1lIGlu
IG1pbGxpc2Vjb25kcyBhcyBzZWNvbmRzLgorc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFRpbWVJ
bk1pbGxpc0FzRHVyYXRpb24oVGltZUluTWlsbGlzIG1zKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJl
YW0gc3M7CisgIHNzIDw8IChzdGF0aWNfY2FzdDxkb3VibGU+KG1zKSAqIDFlLTMpIDw8ICJzIjsK
KyAgcmV0dXJuIHNzLnN0cigpOwogfQogCi1jb25zdCBjaGFyKiBjb25zdAotT3NTdGFja1RyYWNl
R2V0dGVyOjprRWxpZGVkRnJhbWVzTWFya2VyID0KKy8vIENvbnZlcnRzIHRoZSBnaXZlbiBlcG9j
aCB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byBhIGRhdGUgc3RyaW5nIGluIHRoZQorLy8gUkZDMzMz
OSBmb3JtYXQsIHdpdGhvdXQgdGhlIHRpbWV6b25lIGluZm9ybWF0aW9uLgorc3RhdGljIHN0ZDo6
c3RyaW5nIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNSRkMzMzM5KFRpbWVJbk1pbGxpcyBtcykg
eworICBzdHJ1Y3QgdG0gdGltZV9zdHJ1Y3Q7CisgIGlmICghUG9ydGFibGVMb2NhbHRpbWUoc3Rh
dGljX2Nhc3Q8dGltZV90PihtcyAvIDEwMDApLCAmdGltZV9zdHJ1Y3QpKQorICAgIHJldHVybiAi
IjsKKyAgLy8gWVlZWS1NTS1ERFRoaDptbTpzcworICByZXR1cm4gU3RyZWFtYWJsZVRvU3RyaW5n
KHRpbWVfc3RydWN0LnRtX3llYXIgKyAxOTAwKSArICItIiArCisgICAgICBTdHJpbmc6OkZvcm1h
dEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9tb24gKyAxKSArICItIiArCisgICAgICBTdHJpbmc6
OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9tZGF5KSArICJUIiArCisgICAgICBTdHJp
bmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9ob3VyKSArICI6IiArCisgICAgICBT
dHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9taW4pICsgIjoiICsKKyAgICAg
IFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX3NlYykgKyAiWiI7Cit9CisK
K3N0YXRpYyBpbmxpbmUgc3RkOjpzdHJpbmcgSW5kZW50KGludCB3aWR0aCkgeworICByZXR1cm4g
c3RkOjpzdHJpbmcod2lkdGgsICcgJyk7Cit9CisKK3ZvaWQgSnNvblVuaXRUZXN0UmVzdWx0UHJp
bnRlcjo6T3V0cHV0SnNvbktleSgKKyAgICBzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyYgZWxlbWVudF9uYW1lLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1l
LAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYg
aW5kZW50LAorICAgIGJvb2wgY29tbWEpIHsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+JiBhbGxvd2VkX25hbWVzID0KKyAgICAgIEdldFJlc2VydmVkQXR0cmlidXRlc0ZvckVsZW1l
bnQoZWxlbWVudF9uYW1lKTsKKworICBHVEVTVF9DSEVDS18oc3RkOjpmaW5kKGFsbG93ZWRfbmFt
ZXMuYmVnaW4oKSwgYWxsb3dlZF9uYW1lcy5lbmQoKSwgbmFtZSkgIT0KKyAgICAgICAgICAgICAg
ICAgICBhbGxvd2VkX25hbWVzLmVuZCgpKQorICAgICAgPDwgIktleSBcIiIgPDwgbmFtZSA8PCAi
XCIgaXMgbm90IGFsbG93ZWQgZm9yIHZhbHVlIFwiIiA8PCBlbGVtZW50X25hbWUKKyAgICAgIDw8
ICJcIi4iOworCisgICpzdHJlYW0gPDwgaW5kZW50IDw8ICJcIiIgPDwgbmFtZSA8PCAiXCI6IFwi
IiA8PCBFc2NhcGVKc29uKHZhbHVlKSA8PCAiXCIiOworICBpZiAoY29tbWEpCisgICAgKnN0cmVh
bSA8PCAiLFxuIjsKK30KKwordm9pZCBKc29uVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPdXRwdXRK
c29uS2V5KAorICAgIHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBlbGVtZW50X25hbWUsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCisgICAgaW50IHZh
bHVlLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbmRlbnQsCisgICAgYm9vbCBjb21tYSkgewor
ICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGFsbG93ZWRfbmFtZXMgPQorICAgICAg
R2V0UmVzZXJ2ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudChlbGVtZW50X25hbWUpOworCisgIEdURVNU
X0NIRUNLXyhzdGQ6OmZpbmQoYWxsb3dlZF9uYW1lcy5iZWdpbigpLCBhbGxvd2VkX25hbWVzLmVu
ZCgpLCBuYW1lKSAhPQorICAgICAgICAgICAgICAgICAgIGFsbG93ZWRfbmFtZXMuZW5kKCkpCisg
ICAgICA8PCAiS2V5IFwiIiA8PCBuYW1lIDw8ICJcIiBpcyBub3QgYWxsb3dlZCBmb3IgdmFsdWUg
XCIiIDw8IGVsZW1lbnRfbmFtZQorICAgICAgPDwgIlwiLiI7CisKKyAgKnN0cmVhbSA8PCBpbmRl
bnQgPDwgIlwiIiA8PCBuYW1lIDw8ICJcIjogIiA8PCBTdHJlYW1hYmxlVG9TdHJpbmcodmFsdWUp
OworICBpZiAoY29tbWEpCisgICAgKnN0cmVhbSA8PCAiLFxuIjsKK30KKworLy8gUHJpbnRzIGEg
SlNPTiByZXByZXNlbnRhdGlvbiBvZiBhIFRlc3RJbmZvIG9iamVjdC4KK3ZvaWQgSnNvblVuaXRU
ZXN0UmVzdWx0UHJpbnRlcjo6T3V0cHV0SnNvblRlc3RJbmZvKDo6c3RkOjpvc3RyZWFtKiBzdHJl
YW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKKyAgY29u
c3QgVGVzdFJlc3VsdCYgcmVzdWx0ID0gKnRlc3RfaW5mby5yZXN1bHQoKTsKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcga1Rlc3RjYXNlID0gInRlc3RjYXNlIjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga0lu
ZGVudCA9IEluZGVudCgxMCk7CisKKyAgKnN0cmVhbSA8PCBJbmRlbnQoOCkgPDwgIntcbiI7Cisg
IE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdGNhc2UsICJuYW1lIiwgdGVzdF9pbmZvLm5hbWUo
KSwga0luZGVudCk7CisKKyAgaWYgKHRlc3RfaW5mby52YWx1ZV9wYXJhbSgpICE9IE5VTEwpIHsK
KyAgICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RjYXNlLCAidmFsdWVfcGFyYW0iLAorICAg
ICAgICAgICAgICAgICAgdGVzdF9pbmZvLnZhbHVlX3BhcmFtKCksIGtJbmRlbnQpOworICB9Cisg
IGlmICh0ZXN0X2luZm8udHlwZV9wYXJhbSgpICE9IE5VTEwpIHsKKyAgICBPdXRwdXRKc29uS2V5
KHN0cmVhbSwga1Rlc3RjYXNlLCAidHlwZV9wYXJhbSIsIHRlc3RfaW5mby50eXBlX3BhcmFtKCks
CisgICAgICAgICAgICAgICAgICBrSW5kZW50KTsKKyAgfQorICBpZiAoR1RFU1RfRkxBRyhsaXN0
X3Rlc3RzKSkgeworICAgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdGNhc2UsICJmaWxlIiwg
dGVzdF9pbmZvLmZpbGUoKSwga0luZGVudCk7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtU
ZXN0Y2FzZSwgImxpbmUiLCB0ZXN0X2luZm8ubGluZSgpLCBrSW5kZW50LCBmYWxzZSk7CisgICAg
KnN0cmVhbSA8PCAiXG4iIDw8IEluZGVudCg4KSA8PCAifSI7CisgICAgcmV0dXJuOworICB9CisK
KyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0Y2FzZSwgInN0YXR1cyIsCisgICAgICAgICAg
ICAgICAgdGVzdF9pbmZvLnNob3VsZF9ydW4oKSA/ICJSVU4iIDogIk5PVFJVTiIsIGtJbmRlbnQp
OworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RjYXNlLCAidGltZSIsCisgICAgICAgICAg
ICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNEdXJhdGlvbihyZXN1bHQuZWxhcHNlZF90aW1lKCkp
LCBrSW5kZW50KTsKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0Y2FzZSwgImNsYXNzbmFt
ZSIsIHRlc3RfY2FzZV9uYW1lLCBrSW5kZW50LCBmYWxzZSk7CisgICpzdHJlYW0gPDwgVGVzdFBy
b3BlcnRpZXNBc0pzb24ocmVzdWx0LCBrSW5kZW50KTsKKworICBpbnQgZmFpbHVyZXMgPSAwOwor
ICBmb3IgKGludCBpID0gMDsgaSA8IHJlc3VsdC50b3RhbF9wYXJ0X2NvdW50KCk7ICsraSkgewor
ICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBwYXJ0ID0gcmVzdWx0LkdldFRlc3RQYXJ0UmVzdWx0
KGkpOworICAgIGlmIChwYXJ0LmZhaWxlZCgpKSB7CisgICAgICAqc3RyZWFtIDw8ICIsXG4iOwor
ICAgICAgaWYgKCsrZmFpbHVyZXMgPT0gMSkgeworICAgICAgICAqc3RyZWFtIDw8IGtJbmRlbnQg
PDwgIlwiIiA8PCAiZmFpbHVyZXMiIDw8ICJcIjogW1xuIjsKKyAgICAgIH0KKyAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIGxvY2F0aW9uID0KKyAgICAgICAgICBpbnRlcm5hbDo6Rm9ybWF0Q29tcGls
ZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvbihwYXJ0LmZpbGVfbmFtZSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnQubGluZV9u
dW1iZXIoKSk7CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyBtZXNzYWdlID0gRXNjYXBlSnNvbihs
b2NhdGlvbiArICJcbiIgKyBwYXJ0Lm1lc3NhZ2UoKSk7CisgICAgICAqc3RyZWFtIDw8IGtJbmRl
bnQgPDwgIiAge1xuIgorICAgICAgICAgICAgICA8PCBrSW5kZW50IDw8ICIgICAgXCJmYWlsdXJl
XCI6IFwiIiA8PCBtZXNzYWdlIDw8ICJcIixcbiIKKyAgICAgICAgICAgICAgPDwga0luZGVudCA8
PCAiICAgIFwidHlwZVwiOiBcIlwiXG4iCisgICAgICAgICAgICAgIDw8IGtJbmRlbnQgPDwgIiAg
fSI7CisgICAgfQorICB9CisKKyAgaWYgKGZhaWx1cmVzID4gMCkKKyAgICAqc3RyZWFtIDw8ICJc
biIgPDwga0luZGVudCA8PCAiXSI7CisgICpzdHJlYW0gPDwgIlxuIiA8PCBJbmRlbnQoOCkgPDwg
In0iOworfQorCisvLyBQcmludHMgYW4gSlNPTiByZXByZXNlbnRhdGlvbiBvZiBhIFRlc3RDYXNl
IG9iamVjdAordm9pZCBKc29uVW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludEpzb25UZXN0Q2Fz
ZShzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSkgeworICBjb25zdCBz
dGQ6OnN0cmluZyBrVGVzdHN1aXRlID0gInRlc3RzdWl0ZSI7CisgIGNvbnN0IHN0ZDo6c3RyaW5n
IGtJbmRlbnQgPSBJbmRlbnQoNik7CisKKyAgKnN0cmVhbSA8PCBJbmRlbnQoNCkgPDwgIntcbiI7
CisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRlLCAibmFtZSIsIHRlc3RfY2FzZS5u
YW1lKCksIGtJbmRlbnQpOworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZSwgInRl
c3RzIiwgdGVzdF9jYXNlLnJlcG9ydGFibGVfdGVzdF9jb3VudCgpLAorICAgICAgICAgICAgICAg
IGtJbmRlbnQpOworICBpZiAoIUdURVNUX0ZMQUcobGlzdF90ZXN0cykpIHsKKyAgICBPdXRwdXRK
c29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZSwgImZhaWx1cmVzIiwgdGVzdF9jYXNlLmZhaWxlZF90
ZXN0X2NvdW50KCksCisgICAgICAgICAgICAgICAgICBrSW5kZW50KTsKKyAgICBPdXRwdXRKc29u
S2V5KHN0cmVhbSwga1Rlc3RzdWl0ZSwgImRpc2FibGVkIiwKKyAgICAgICAgICAgICAgICAgIHRl
c3RfY2FzZS5yZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSwga0luZGVudCk7CisgICAg
T3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGUsICJlcnJvcnMiLCAwLCBrSW5kZW50KTsK
KyAgICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZSwgInRpbWUiLAorICAgICAgICAg
ICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNEdXJhdGlvbih0ZXN0X2Nhc2UuZWxhcHNlZF90
aW1lKCkpLAorICAgICAgICAgICAgICAgICAga0luZGVudCwgZmFsc2UpOworICAgICpzdHJlYW0g
PDwgVGVzdFByb3BlcnRpZXNBc0pzb24odGVzdF9jYXNlLmFkX2hvY190ZXN0X3Jlc3VsdCgpLCBr
SW5kZW50KQorICAgICAgICAgICAgPDwgIixcbiI7CisgIH0KKworICAqc3RyZWFtIDw8IGtJbmRl
bnQgPDwgIlwiIiA8PCBrVGVzdHN1aXRlIDw8ICJcIjogW1xuIjsKKworICBib29sIGNvbW1hID0g
ZmFsc2U7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVzdF9jYXNlLnRvdGFsX3Rlc3RfY291bnQo
KTsgKytpKSB7CisgICAgaWYgKHRlc3RfY2FzZS5HZXRUZXN0SW5mbyhpKS0+aXNfcmVwb3J0YWJs
ZSgpKSB7CisgICAgICBpZiAoY29tbWEpIHsKKyAgICAgICAgKnN0cmVhbSA8PCAiLFxuIjsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIGNvbW1hID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIE91dHB1
dEpzb25UZXN0SW5mbyhzdHJlYW0sIHRlc3RfY2FzZS5uYW1lKCksICp0ZXN0X2Nhc2UuR2V0VGVz
dEluZm8oaSkpOworICAgIH0KKyAgfQorICAqc3RyZWFtIDw8ICJcbiIgPDwga0luZGVudCA8PCAi
XVxuIiA8PCBJbmRlbnQoNCkgPDwgIn0iOworfQorCisvLyBQcmludHMgYSBKU09OIHN1bW1hcnkg
b2YgdW5pdF90ZXN0IHRvIG91dHB1dCBzdHJlYW0gb3V0Lgordm9pZCBKc29uVW5pdFRlc3RSZXN1
bHRQcmludGVyOjpQcmludEpzb25Vbml0VGVzdChzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pdFRl
c3QmIHVuaXRfdGVzdCkgeworICBjb25zdCBzdGQ6OnN0cmluZyBrVGVzdHN1aXRlcyA9ICJ0ZXN0
c3VpdGVzIjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga0luZGVudCA9IEluZGVudCgyKTsKKyAgKnN0
cmVhbSA8PCAie1xuIjsKKworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0
ZXN0cyIsIHVuaXRfdGVzdC5yZXBvcnRhYmxlX3Rlc3RfY291bnQoKSwKKyAgICAgICAgICAgICAg
ICBrSW5kZW50KTsKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAiZmFpbHVy
ZXMiLCB1bml0X3Rlc3QuZmFpbGVkX3Rlc3RfY291bnQoKSwKKyAgICAgICAgICAgICAgICBrSW5k
ZW50KTsKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAiZGlzYWJsZWQiLAor
ICAgICAgICAgICAgICAgIHVuaXRfdGVzdC5yZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQo
KSwga0luZGVudCk7CisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRlcywgImVycm9y
cyIsIDAsIGtJbmRlbnQpOworICBpZiAoR1RFU1RfRkxBRyhzaHVmZmxlKSkgeworICAgIE91dHB1
dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRlcywgInJhbmRvbV9zZWVkIiwgdW5pdF90ZXN0LnJh
bmRvbV9zZWVkKCksCisgICAgICAgICAgICAgICAgICBrSW5kZW50KTsKKyAgfQorICBPdXRwdXRK
c29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0aW1lc3RhbXAiLAorICAgICAgICAgICAgICAg
IEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNSRkMzMzM5KHVuaXRfdGVzdC5zdGFydF90aW1lc3Rh
bXAoKSksCisgICAgICAgICAgICAgICAga0luZGVudCk7CisgIE91dHB1dEpzb25LZXkoc3RyZWFt
LCBrVGVzdHN1aXRlcywgInRpbWUiLAorICAgICAgICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxp
c0FzRHVyYXRpb24odW5pdF90ZXN0LmVsYXBzZWRfdGltZSgpKSwga0luZGVudCwKKyAgICAgICAg
ICAgICAgICBmYWxzZSk7CisKKyAgKnN0cmVhbSA8PCBUZXN0UHJvcGVydGllc0FzSnNvbih1bml0
X3Rlc3QuYWRfaG9jX3Rlc3RfcmVzdWx0KCksIGtJbmRlbnQpCisgICAgICAgICAgPDwgIixcbiI7
CisKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAibmFtZSIsICJBbGxUZXN0
cyIsIGtJbmRlbnQpOworICAqc3RyZWFtIDw8IGtJbmRlbnQgPDwgIlwiIiA8PCBrVGVzdHN1aXRl
cyA8PCAiXCI6IFtcbiI7CisKKyAgYm9vbCBjb21tYSA9IGZhbHNlOworICBmb3IgKGludCBpID0g
MDsgaSA8IHVuaXRfdGVzdC50b3RhbF90ZXN0X2Nhc2VfY291bnQoKTsgKytpKSB7CisgICAgaWYg
KHVuaXRfdGVzdC5HZXRUZXN0Q2FzZShpKS0+cmVwb3J0YWJsZV90ZXN0X2NvdW50KCkgPiAwKSB7
CisgICAgICBpZiAoY29tbWEpIHsKKyAgICAgICAgKnN0cmVhbSA8PCAiLFxuIjsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIGNvbW1hID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIFByaW50SnNvblRl
c3RDYXNlKHN0cmVhbSwgKnVuaXRfdGVzdC5HZXRUZXN0Q2FzZShpKSk7CisgICAgfQorICB9CisK
KyAgKnN0cmVhbSA8PCAiXG4iIDw8IGtJbmRlbnQgPDwgIl1cbiIgPDwgIn1cbiI7Cit9CisKK3Zv
aWQgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRKc29uVGVzdExpc3QoCisgICAgc3Rk
Ojpvc3RyZWFtKiBzdHJlYW0sIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RDYXNlKj4mIHRlc3RfY2Fz
ZXMpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RzdWl0ZXMgPSAidGVzdHN1aXRlcyI7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGtJbmRlbnQgPSBJbmRlbnQoMik7CisgICpzdHJlYW0gPDwgIntc
biI7CisgIGludCB0b3RhbF90ZXN0cyA9IDA7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGVz
dF9jYXNlcy5zaXplKCk7ICsraSkgeworICAgIHRvdGFsX3Rlc3RzICs9IHRlc3RfY2FzZXNbaV0t
PnRvdGFsX3Rlc3RfY291bnQoKTsKKyAgfQorICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3Rz
dWl0ZXMsICJ0ZXN0cyIsIHRvdGFsX3Rlc3RzLCBrSW5kZW50KTsKKworICBPdXRwdXRKc29uS2V5
KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJuYW1lIiwgIkFsbFRlc3RzIiwga0luZGVudCk7CisgICpz
dHJlYW0gPDwga0luZGVudCA8PCAiXCIiIDw8IGtUZXN0c3VpdGVzIDw8ICJcIjogW1xuIjsKKwor
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBp
ZiAoaSAhPSAwKSB7CisgICAgICAqc3RyZWFtIDw8ICIsXG4iOworICAgIH0KKyAgICBQcmludEpz
b25UZXN0Q2FzZShzdHJlYW0sICp0ZXN0X2Nhc2VzW2ldKTsKKyAgfQorCisgICpzdHJlYW0gPDwg
IlxuIgorICAgICAgICAgIDw8IGtJbmRlbnQgPDwgIl1cbiIKKyAgICAgICAgICA8PCAifVxuIjsK
K30KKy8vIFByb2R1Y2VzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdGVzdCBwcm9wZXJ0aWVz
IGluIGEgcmVzdWx0IGFzCisvLyBhIEpTT04gZGljdGlvbmFyeS4KK3N0ZDo6c3RyaW5nIEpzb25V
bml0VGVzdFJlc3VsdFByaW50ZXI6OlRlc3RQcm9wZXJ0aWVzQXNKc29uKAorICAgIGNvbnN0IFRl
c3RSZXN1bHQmIHJlc3VsdCwgY29uc3Qgc3RkOjpzdHJpbmcmIGluZGVudCkgeworICBNZXNzYWdl
IGF0dHJpYnV0ZXM7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0LnRlc3RfcHJvcGVydHlf
Y291bnQoKTsgKytpKSB7CisgICAgY29uc3QgVGVzdFByb3BlcnR5JiBwcm9wZXJ0eSA9IHJlc3Vs
dC5HZXRUZXN0UHJvcGVydHkoaSk7CisgICAgYXR0cmlidXRlcyA8PCAiLFxuIiA8PCBpbmRlbnQg
PDwgIlwiIiA8PCBwcm9wZXJ0eS5rZXkoKSA8PCAiXCI6ICIKKyAgICAgICAgICAgICAgIDw8ICJc
IiIgPDwgRXNjYXBlSnNvbihwcm9wZXJ0eS52YWx1ZSgpKSA8PCAiXCIiOworICB9CisgIHJldHVy
biBhdHRyaWJ1dGVzLkdldFN0cmluZygpOworfQorCisvLyBFbmQgSnNvblVuaXRUZXN0UmVzdWx0
UHJpbnRlcgorCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworCisvLyBDaGVja3MgaWYg
c3RyIGNvbnRhaW5zICc9JywgJyYnLCAnJScgb3IgJ1xuJyBjaGFyYWN0ZXJzLiBJZiB5ZXMsCisv
LyByZXBsYWNlcyB0aGVtIGJ5ICIleHgiIHdoZXJlIHh4IGlzIHRoZWlyIGhleGFkZWNpbWFsIHZh
bHVlLiBGb3IKKy8vIGV4YW1wbGUsIHJlcGxhY2VzICI9IiB3aXRoICIlM0QiLiAgVGhpcyBhbGdv
cml0aG0gaXMgTyhzdHJsZW4oc3RyKSkKKy8vIGluIGJvdGggdGltZSBhbmQgc3BhY2UgLS0gaW1w
b3J0YW50IGFzIHRoZSBpbnB1dCBzdHIgbWF5IGNvbnRhaW4gYW4KKy8vIGFyYml0cmFyaWx5IGxv
bmcgdGVzdCBmYWlsdXJlIG1lc3NhZ2UgYW5kIHN0YWNrIHRyYWNlLgorc3RkOjpzdHJpbmcgU3Ry
ZWFtaW5nTGlzdGVuZXI6OlVybEVuY29kZShjb25zdCBjaGFyKiBzdHIpIHsKKyAgc3RkOjpzdHJp
bmcgcmVzdWx0OworICByZXN1bHQucmVzZXJ2ZShzdHJsZW4oc3RyKSArIDEpOworICBmb3IgKGNo
YXIgY2ggPSAqc3RyOyBjaCAhPSAnXDAnOyBjaCA9ICorK3N0cikgeworICAgIHN3aXRjaCAoY2gp
IHsKKyAgICAgIGNhc2UgJyUnOgorICAgICAgY2FzZSAnPSc6CisgICAgICBjYXNlICcmJzoKKyAg
ICAgIGNhc2UgJ1xuJzoKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiJSIgKyBTdHJpbmc6OkZvcm1h
dEJ5dGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSk7CisgICAgICAgIGJyZWFrOwor
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmVzdWx0LnB1c2hfYmFjayhjaCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFN0cmVhbWluZ0xp
c3RlbmVyOjpTb2NrZXRXcml0ZXI6Ok1ha2VDb25uZWN0aW9uKCkgeworICBHVEVTVF9DSEVDS18o
c29ja2ZkXyA9PSAtMSkKKyAgICAgIDw8ICJNYWtlQ29ubmVjdGlvbigpIGNhbid0IGJlIGNhbGxl
ZCB3aGVuIHRoZXJlIGlzIGFscmVhZHkgYSBjb25uZWN0aW9uLiI7CisKKyAgYWRkcmluZm8gaGlu
dHM7CisgIG1lbXNldCgmaGludHMsIDAsIHNpemVvZihoaW50cykpOworICBoaW50cy5haV9mYW1p
bHkgPSBBRl9VTlNQRUM7ICAgIC8vIFRvIGFsbG93IGJvdGggSVB2NCBhbmQgSVB2NiBhZGRyZXNz
ZXMuCisgIGhpbnRzLmFpX3NvY2t0eXBlID0gU09DS19TVFJFQU07CisgIGFkZHJpbmZvKiBzZXJ2
aW5mbyA9IE5VTEw7CisKKyAgLy8gVXNlIHRoZSBnZXRhZGRyaW5mbygpIHRvIGdldCBhIGxpbmtl
ZCBsaXN0IG9mIElQIGFkZHJlc3NlcyBmb3IKKyAgLy8gdGhlIGdpdmVuIGhvc3QgbmFtZS4KKyAg
Y29uc3QgaW50IGVycm9yX251bSA9IGdldGFkZHJpbmZvKAorICAgICAgaG9zdF9uYW1lXy5jX3N0
cigpLCBwb3J0X251bV8uY19zdHIoKSwgJmhpbnRzLCAmc2VydmluZm8pOworICBpZiAoZXJyb3Jf
bnVtICE9IDApIHsKKyAgICBHVEVTVF9MT0dfKFdBUk5JTkcpIDw8ICJzdHJlYW1fcmVzdWx0X3Rv
OiBnZXRhZGRyaW5mbygpIGZhaWxlZDogIgorICAgICAgICAgICAgICAgICAgICAgICAgPDwgZ2Fp
X3N0cmVycm9yKGVycm9yX251bSk7CisgIH0KKworICAvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBy
ZXN1bHRzIGFuZCBjb25uZWN0IHRvIHRoZSBmaXJzdCB3ZSBjYW4uCisgIGZvciAoYWRkcmluZm8q
IGN1cl9hZGRyID0gc2VydmluZm87IHNvY2tmZF8gPT0gLTEgJiYgY3VyX2FkZHIgIT0gTlVMTDsK
KyAgICAgICBjdXJfYWRkciA9IGN1cl9hZGRyLT5haV9uZXh0KSB7CisgICAgc29ja2ZkXyA9IHNv
Y2tldCgKKyAgICAgICAgY3VyX2FkZHItPmFpX2ZhbWlseSwgY3VyX2FkZHItPmFpX3NvY2t0eXBl
LCBjdXJfYWRkci0+YWlfcHJvdG9jb2wpOworICAgIGlmIChzb2NrZmRfICE9IC0xKSB7CisgICAg
ICAvLyBDb25uZWN0IHRoZSBjbGllbnQgc29ja2V0IHRvIHRoZSBzZXJ2ZXIgc29ja2V0LgorICAg
ICAgaWYgKGNvbm5lY3Qoc29ja2ZkXywgY3VyX2FkZHItPmFpX2FkZHIsIGN1cl9hZGRyLT5haV9h
ZGRybGVuKSA9PSAtMSkgeworICAgICAgICBjbG9zZShzb2NrZmRfKTsKKyAgICAgICAgc29ja2Zk
XyA9IC0xOworICAgICAgfQorICAgIH0KKyAgfQorCisgIGZyZWVhZGRyaW5mbyhzZXJ2aW5mbyk7
ICAvLyBhbGwgZG9uZSB3aXRoIHRoaXMgc3RydWN0dXJlCisKKyAgaWYgKHNvY2tmZF8gPT0gLTEp
IHsKKyAgICBHVEVTVF9MT0dfKFdBUk5JTkcpIDw8ICJzdHJlYW1fcmVzdWx0X3RvOiBmYWlsZWQg
dG8gY29ubmVjdCB0byAiCisgICAgICAgICAgICAgICAgICAgICAgICA8PCBob3N0X25hbWVfIDw8
ICI6IiA8PCBwb3J0X251bV87CisgIH0KK30KKworLy8gRW5kIG9mIGNsYXNzIFN0cmVhbWluZyBM
aXN0ZW5lcgorI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfXworCisvLyBjbGFz
cyBPc1N0YWNrVHJhY2VHZXR0ZXIKKworY29uc3QgY2hhciogY29uc3QgT3NTdGFja1RyYWNlR2V0
dGVySW50ZXJmYWNlOjprRWxpZGVkRnJhbWVzTWFya2VyID0KICAgICAiLi4uICIgR1RFU1RfTkFN
RV8gIiBpbnRlcm5hbCBmcmFtZXMgLi4uIjsKIAorc3RkOjpzdHJpbmcgT3NTdGFja1RyYWNlR2V0
dGVyOjpDdXJyZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCkKKyAg
ICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pIHsKKyNpZiBHVEVTVF9IQVNfQUJTTAorICBz
dGQ6OnN0cmluZyByZXN1bHQ7CisKKyAgaWYgKG1heF9kZXB0aCA8PSAwKSB7CisgICAgcmV0dXJu
IHJlc3VsdDsKKyAgfQorCisgIG1heF9kZXB0aCA9IHN0ZDo6bWluKG1heF9kZXB0aCwga01heFN0
YWNrVHJhY2VEZXB0aCk7CisKKyAgc3RkOjp2ZWN0b3I8dm9pZCo+IHJhd19zdGFjayhtYXhfZGVw
dGgpOworICAvLyBTa2lwcyB0aGUgZnJhbWVzIHJlcXVlc3RlZCBieSB0aGUgY2FsbGVyLCBwbHVz
IHRoaXMgZnVuY3Rpb24uCisgIGNvbnN0IGludCByYXdfc3RhY2tfc2l6ZSA9CisgICAgICBhYnNs
OjpHZXRTdGFja1RyYWNlKCZyYXdfc3RhY2tbMF0sIG1heF9kZXB0aCwgc2tpcF9jb3VudCArIDEp
OworCisgIHZvaWQqIGNhbGxlcl9mcmFtZSA9IG51bGxwdHI7CisgIHsKKyAgICBNdXRleExvY2sg
bG9jaygmbXV0ZXhfKTsKKyAgICBjYWxsZXJfZnJhbWUgPSBjYWxsZXJfZnJhbWVfOworICB9CisK
KyAgZm9yIChpbnQgaSA9IDA7IGkgPCByYXdfc3RhY2tfc2l6ZTsgKytpKSB7CisgICAgaWYgKHJh
d19zdGFja1tpXSA9PSBjYWxsZXJfZnJhbWUgJiYKKyAgICAgICAgIUdURVNUX0ZMQUcoc2hvd19p
bnRlcm5hbF9zdGFja19mcmFtZXMpKSB7CisgICAgICAvLyBBZGQgYSBtYXJrZXIgdG8gdGhlIHRy
YWNlIGFuZCBzdG9wIGFkZGluZyBmcmFtZXMuCisgICAgICBhYnNsOjpTdHJBcHBlbmQoJnJlc3Vs
dCwga0VsaWRlZEZyYW1lc01hcmtlciwgIlxuIik7CisgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBjaGFyIHRtcFsxMDI0XTsKKyAgICBjb25zdCBjaGFyKiBzeW1ib2wgPSAiKHVua25vd24pIjsK
KyAgICBpZiAoYWJzbDo6U3ltYm9saXplKHJhd19zdGFja1tpXSwgdG1wLCBzaXplb2YodG1wKSkp
IHsKKyAgICAgIHN5bWJvbCA9IHRtcDsKKyAgICB9CisKKyAgICBjaGFyIGxpbmVbMTAyNF07Cisg
ICAgc25wcmludGYobGluZSwgc2l6ZW9mKGxpbmUpLCAiICAlcDogJXNcbiIsIHJhd19zdGFja1tp
XSwgc3ltYm9sKTsKKyAgICByZXN1bHQgKz0gbGluZTsKKyAgfQorCisgIHJldHVybiByZXN1bHQ7
CisKKyNlbHNlICAvLyAhR1RFU1RfSEFTX0FCU0wKKyAgc3RhdGljX2Nhc3Q8dm9pZD4obWF4X2Rl
cHRoKTsKKyAgc3RhdGljX2Nhc3Q8dm9pZD4oc2tpcF9jb3VudCk7CisgIHJldHVybiAiIjsKKyNl
bmRpZiAgLy8gR1RFU1RfSEFTX0FCU0wKK30KKwordm9pZCBPc1N0YWNrVHJhY2VHZXR0ZXI6OlVw
b25MZWF2aW5nR1Rlc3QoKSBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pIHsKKyNpZiBHVEVT
VF9IQVNfQUJTTAorICB2b2lkKiBjYWxsZXJfZnJhbWUgPSBudWxscHRyOworICBpZiAoYWJzbDo6
R2V0U3RhY2tUcmFjZSgmY2FsbGVyX2ZyYW1lLCAxLCAzKSA8PSAwKSB7CisgICAgY2FsbGVyX2Zy
YW1lID0gbnVsbHB0cjsKKyAgfQorCisgIE11dGV4TG9jayBsb2NrKCZtdXRleF8pOworICBjYWxs
ZXJfZnJhbWVfID0gY2FsbGVyX2ZyYW1lOworI2VuZGlmICAvLyBHVEVTVF9IQVNfQUJTTAorfQor
CisvLyBBIGhlbHBlciBjbGFzcyB0aGF0IGNyZWF0ZXMgdGhlIHByZW1hdHVyZS1leGl0IGZpbGUg
aW4gaXRzCisvLyBjb25zdHJ1Y3RvciBhbmQgZGVsZXRlcyB0aGUgZmlsZSBpbiBpdHMgZGVzdHJ1
Y3Rvci4KK2NsYXNzIFNjb3BlZFByZW1hdHVyZUV4aXRGaWxlIHsKKyBwdWJsaWM6CisgIGV4cGxp
Y2l0IFNjb3BlZFByZW1hdHVyZUV4aXRGaWxlKGNvbnN0IGNoYXIqIHByZW1hdHVyZV9leGl0X2Zp
bGVwYXRoKQorICAgICAgOiBwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8ocHJlbWF0dXJlX2V4aXRf
ZmlsZXBhdGggPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlbWF0dXJlX2V4
aXRfZmlsZXBhdGggOiAiIikgeworICAgIC8vIElmIGEgcGF0aCB0byB0aGUgcHJlbWF0dXJlLWV4
aXQgZmlsZSBpcyBzcGVjaWZpZWQuLi4KKyAgICBpZiAoIXByZW1hdHVyZV9leGl0X2ZpbGVwYXRo
Xy5lbXB0eSgpKSB7CisgICAgICAvLyBjcmVhdGUgdGhlIGZpbGUgd2l0aCBhIHNpbmdsZSAiMCIg
Y2hhcmFjdGVyIGluIGl0LiAgSS9PCisgICAgICAvLyBlcnJvcnMgYXJlIGlnbm9yZWQgYXMgdGhl
cmUncyBub3RoaW5nIGJldHRlciB3ZSBjYW4gZG8gYW5kIHdlCisgICAgICAvLyBkb24ndCB3YW50
IHRvIGZhaWwgdGhlIHRlc3QgYmVjYXVzZSBvZiB0aGlzLgorICAgICAgRklMRSogcGZpbGUgPSBw
b3NpeDo6Rk9wZW4ocHJlbWF0dXJlX2V4aXRfZmlsZXBhdGgsICJ3Iik7CisgICAgICBmd3JpdGUo
IjAiLCAxLCAxLCBwZmlsZSk7CisgICAgICBmY2xvc2UocGZpbGUpOworICAgIH0KKyAgfQorCisg
IH5TY29wZWRQcmVtYXR1cmVFeGl0RmlsZSgpIHsKKyAgICBpZiAoIXByZW1hdHVyZV9leGl0X2Zp
bGVwYXRoXy5lbXB0eSgpKSB7CisgICAgICBpbnQgcmV0dmFsID0gcmVtb3ZlKHByZW1hdHVyZV9l
eGl0X2ZpbGVwYXRoXy5jX3N0cigpKTsKKyAgICAgIGlmIChyZXR2YWwpIHsKKyAgICAgICAgR1RF
U1RfTE9HXyhFUlJPUikgPDwgIkZhaWxlZCB0byByZW1vdmUgcHJlbWF0dXJlIGV4aXQgZmlsZXBh
dGggXCIiCisgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHByZW1hdHVyZV9leGl0X2ZpbGVw
YXRoXyA8PCAiXCIgd2l0aCBlcnJvciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHJl
dHZhbDsKKyAgICAgIH0KKyAgICB9CisgIH0KKworIHByaXZhdGU6CisgIGNvbnN0IHN0ZDo6c3Ry
aW5nIHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoXzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FO
RF9BU1NJR05fKFNjb3BlZFByZW1hdHVyZUV4aXRGaWxlKTsKK307CisKIH0gIC8vIG5hbWVzcGFj
ZSBpbnRlcm5hbAogCiAvLyBjbGFzcyBUZXN0RXZlbnRMaXN0ZW5lcnMKQEAgLTM0MzEsNyArNDQ5
Myw3IEBAIHZvaWQgVGVzdEV2ZW50TGlzdGVuZXJzOjpTdXBwcmVzc0V2ZW50Rm9yd2FyZGluZygp
IHsKIC8vIFdlIGRvbid0IHByb3RlY3QgdGhpcyB1bmRlciBtdXRleF8gYXMgYSB1c2VyIGlzIG5v
dCBzdXBwb3NlZCB0bwogLy8gY2FsbCB0aGlzIGJlZm9yZSBtYWluKCkgc3RhcnRzLCBmcm9tIHdo
aWNoIHBvaW50IG9uIHRoZSByZXR1cm4KIC8vIHZhbHVlIHdpbGwgbmV2ZXIgY2hhbmdlLgotVW5p
dFRlc3QgKiBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKSB7CitVbml0VGVzdCogVW5pdFRlc3Q6Okdl
dEluc3RhbmNlKCkgewogICAvLyBXaGVuIGNvbXBpbGVkIHdpdGggTVNWQyA3LjEgaW4gb3B0aW1p
emVkIG1vZGUsIGRlc3Ryb3lpbmcgdGhlCiAgIC8vIFVuaXRUZXN0IG9iamVjdCB1cG9uIGV4aXRp
bmcgdGhlIHByb2dyYW0gbWVzc2VzIHVwIHRoZSBleGl0IGNvZGUsCiAgIC8vIGNhdXNpbmcgc3Vj
Y2Vzc2Z1bCB0ZXN0cyB0byBhcHBlYXIgZmFpbGVkLiAgV2UgaGF2ZSB0byB1c2UgYQpAQCAtMzQ4
MSwxNyArNDU0MywzMyBAQCBpbnQgVW5pdFRlc3Q6OnN1Y2Nlc3NmdWxfdGVzdF9jb3VudCgpIGNv
bnN0IHsKIC8vIEdldHMgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVzdHMuCiBpbnQgVW5pdFRlc3Q6
OmZhaWxlZF90ZXN0X2NvdW50KCkgY29uc3QgeyByZXR1cm4gaW1wbCgpLT5mYWlsZWRfdGVzdF9j
b3VudCgpOyB9CiAKKy8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB0aGF0IHdp
bGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhNTCByZXBvcnQuCitpbnQgVW5pdFRlc3Q6OnJlcG9ydGFi
bGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKKyAgcmV0dXJuIGltcGwoKS0+cmVwb3J0
YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCk7Cit9CisKIC8vIEdldHMgdGhlIG51bWJlciBvZiBk
aXNhYmxlZCB0ZXN0cy4KIGludCBVbml0VGVzdDo6ZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0
IHsKICAgcmV0dXJuIGltcGwoKS0+ZGlzYWJsZWRfdGVzdF9jb3VudCgpOwogfQogCisvLyBHZXRz
IHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KK2lu
dCBVbml0VGVzdDo6cmVwb3J0YWJsZV90ZXN0X2NvdW50KCkgY29uc3QgeworICByZXR1cm4gaW1w
bCgpLT5yZXBvcnRhYmxlX3Rlc3RfY291bnQoKTsKK30KKwogLy8gR2V0cyB0aGUgbnVtYmVyIG9m
IGFsbCB0ZXN0cy4KIGludCBVbml0VGVzdDo6dG90YWxfdGVzdF9jb3VudCgpIGNvbnN0IHsgcmV0
dXJuIGltcGwoKS0+dG90YWxfdGVzdF9jb3VudCgpOyB9CiAKIC8vIEdldHMgdGhlIG51bWJlciBv
ZiB0ZXN0cyB0aGF0IHNob3VsZCBydW4uCiBpbnQgVW5pdFRlc3Q6OnRlc3RfdG9fcnVuX2NvdW50
KCkgY29uc3QgeyByZXR1cm4gaW1wbCgpLT50ZXN0X3RvX3J1bl9jb3VudCgpOyB9CiAKKy8vIEdl
dHMgdGhlIHRpbWUgb2YgdGhlIHRlc3QgcHJvZ3JhbSBzdGFydCwgaW4gbXMgZnJvbSB0aGUgc3Rh
cnQgb2YgdGhlCisvLyBVTklYIGVwb2NoLgoraW50ZXJuYWw6OlRpbWVJbk1pbGxpcyBVbml0VGVz
dDo6c3RhcnRfdGltZXN0YW1wKCkgY29uc3QgeworICAgIHJldHVybiBpbXBsKCktPnN0YXJ0X3Rp
bWVzdGFtcCgpOworfQorCiAvLyBHZXRzIHRoZSBlbGFwc2VkIHRpbWUsIGluIG1pbGxpc2Vjb25k
cy4KIGludGVybmFsOjpUaW1lSW5NaWxsaXMgVW5pdFRlc3Q6OmVsYXBzZWRfdGltZSgpIGNvbnN0
IHsKICAgcmV0dXJuIGltcGwoKS0+ZWxhcHNlZF90aW1lKCk7CkBAIC0zNTEwLDYgKzQ1ODgsMTIg
QEAgY29uc3QgVGVzdENhc2UqIFVuaXRUZXN0OjpHZXRUZXN0Q2FzZShpbnQgaSkgY29uc3Qgewog
ICByZXR1cm4gaW1wbCgpLT5HZXRUZXN0Q2FzZShpKTsKIH0KIAorLy8gUmV0dXJucyB0aGUgVGVz
dFJlc3VsdCBjb250YWluaW5nIGluZm9ybWF0aW9uIG9uIHRlc3QgZmFpbHVyZXMgYW5kCisvLyBw
cm9wZXJ0aWVzIGxvZ2dlZCBvdXRzaWRlIG9mIGluZGl2aWR1YWwgdGVzdCBjYXNlcy4KK2NvbnN0
IFRlc3RSZXN1bHQmIFVuaXRUZXN0OjphZF9ob2NfdGVzdF9yZXN1bHQoKSBjb25zdCB7CisgIHJl
dHVybiAqaW1wbCgpLT5hZF9ob2NfdGVzdF9yZXN1bHQoKTsKK30KKwogLy8gR2V0cyB0aGUgaS10
aCB0ZXN0IGNhc2UgYW1vbmcgYWxsIHRoZSB0ZXN0IGNhc2VzLiBpIGNhbiByYW5nZSBmcm9tIDAg
dG8KIC8vIHRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpIC0gMS4gSWYgaSBpcyBub3QgaW4gdGhhdCBy
YW5nZSwgcmV0dXJucyBOVUxMLgogVGVzdENhc2UqIFVuaXRUZXN0OjpHZXRNdXRhYmxlVGVzdENh
c2UoaW50IGkpIHsKQEAgLTM1NDEsMjkgKzQ2MjUsMTYgQEAgRW52aXJvbm1lbnQqIFVuaXRUZXN0
OjpBZGRFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KSB7CiAgIHJldHVybiBlbnY7CiB9CiAK
LSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwotLy8gQSBmYWlsZWQgR29vZ2xlIFRlc3QgYXNzZXJ0
aW9uIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIG9mIHRoaXMgdHlwZQotLy8gd2hlbiBleGNlcHRp
b25zIGFyZSBlbmFibGVkLiAgV2UgZGVyaXZlIGl0IGZyb20gc3RkOjpydW50aW1lX2Vycm9yLAot
Ly8gd2hpY2ggaXMgZm9yIGVycm9ycyBwcmVzdW1hYmx5IGRldGVjdGFibGUgb25seSBhdCBydW4g
dGltZS4gIFNpbmNlCi0vLyBzdGQ6OnJ1bnRpbWVfZXJyb3IgaW5oZXJpdHMgZnJvbSBzdGQ6OmV4
Y2VwdGlvbiwgbWFueSB0ZXN0aW5nCi0vLyBmcmFtZXdvcmtzIGtub3cgaG93IHRvIGV4dHJhY3Qg
YW5kIHByaW50IHRoZSBtZXNzYWdlIGluc2lkZSBpdC4KLWNsYXNzIEdvb2dsZVRlc3RGYWlsdXJl
RXhjZXB0aW9uIDogcHVibGljIDo6c3RkOjpydW50aW1lX2Vycm9yIHsKLSBwdWJsaWM6Ci0gIGV4
cGxpY2l0IEdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uKGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBm
YWlsdXJlKQotICAgICAgOiA6OnN0ZDo6cnVudGltZV9lcnJvcihQcmludFRlc3RQYXJ0UmVzdWx0
VG9TdHJpbmcoZmFpbHVyZSkuY19zdHIoKSkge30KLX07Ci0jZW5kaWYKLQogLy8gQWRkcyBhIFRl
c3RQYXJ0UmVzdWx0IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0LiAgQWxsIEdvb2ds
ZSBUZXN0CiAvLyBhc3NlcnRpb24gbWFjcm9zIChlLmcuIEFTU0VSVF9UUlVFLCBFWFBFQ1RfRVEs
IGV0YykgZXZlbnR1YWxseSBjYWxsCiAvLyB0aGlzIHRvIHJlcG9ydCB0aGVpciByZXN1bHRzLiAg
VGhlIHVzZXIgY29kZSBzaG91bGQgdXNlIHRoZQogLy8gYXNzZXJ0aW9uIG1hY3JvcyBpbnN0ZWFk
IG9mIGNhbGxpbmcgdGhpcyBkaXJlY3RseS4KLS8vIEwgPCBtdXRleF8KLXZvaWQgVW5pdFRlc3Q6
OkFkZFRlc3RQYXJ0UmVzdWx0KFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZV9uYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVfbnVtYmVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyYgbWVzc2FnZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludGVybmFsOjpTdHJpbmcm
IG9zX3N0YWNrX3RyYWNlKSB7Cit2b2lkIFVuaXRUZXN0OjpBZGRUZXN0UGFydFJlc3VsdCgKKyAg
ICBUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKKyAgICBjb25zdCBjaGFyKiBmaWxl
X25hbWUsCisgICAgaW50IGxpbmVfbnVtYmVyLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNz
YWdlLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvc19zdGFja190cmFjZSkgR1RFU1RfTE9DS19F
WENMVURFRF8obXV0ZXhfKSB7CiAgIE1lc3NhZ2UgbXNnOwogICBtc2cgPDwgbWVzc2FnZTsKIApA
QCAtMzU5NiwxNyArNDY2NywyNiBAQCB2b2lkIFVuaXRUZXN0OjpBZGRUZXN0UGFydFJlc3VsdChU
ZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKICAgICAvLyB3aXRoIGFub3RoZXIgdGVz
dGluZyBmcmFtZXdvcmspIGFuZCBzcGVjaWZ5IHRoZSBmb3JtZXIgb24gdGhlCiAgICAgLy8gY29t
bWFuZCBsaW5lIGZvciBkZWJ1Z2dpbmcuCiAgICAgaWYgKEdURVNUX0ZMQUcoYnJlYWtfb25fZmFp
bHVyZSkpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAh
R1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lORE9XU19SVAogICAgICAgLy8g
VXNpbmcgRGVidWdCcmVhayBvbiBXaW5kb3dzIGFsbG93cyBndGVzdCB0byBzdGlsbCBicmVhayBp
bnRvIGEgZGVidWdnZXIKICAgICAgIC8vIHdoZW4gYSBmYWlsdXJlIGhhcHBlbnMgYW5kIGJvdGgg
dGhlIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBhbmQKICAgICAgIC8vIHRoZSAtLWd0ZXN0X2Nh
dGNoX2V4Y2VwdGlvbnMgZmxhZ3MgYXJlIHNwZWNpZmllZC4KICAgICAgIERlYnVnQnJlYWsoKTsK
KyNlbGlmICghZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykpICYmICAgICAgICAgICAgXAorICAg
ICgoZGVmaW5lZChfX2NsYW5nX18pIHx8IGRlZmluZWQoX19HTlVDX18pKSAmJiBcCisgICAgIChk
ZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19pMzg2X18pKSkKKyAgICAgIC8vIHdpdGgg
Y2xhbmcvZ2NjIHdlIGNhbiBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBvbiB4ODYgYnkgaW52b2tp
bmcgaW50MworICAgICAgYXNtKCJpbnQzIik7CiAjZWxzZQorICAgICAgLy8gRGVyZWZlcmVuY2Ug
TlVMTCB0aHJvdWdoIGEgdm9sYXRpbGUgcG9pbnRlciB0byBwcmV2ZW50IHRoZSBjb21waWxlcgor
ICAgICAgLy8gZnJvbSByZW1vdmluZy4gV2UgdXNlIHRoaXMgcmF0aGVyIHRoYW4gYWJvcnQoKSBv
ciBfX2J1aWx0aW5fdHJhcCgpIGZvcgorICAgICAgLy8gcG9ydGFiaWxpdHk6IFN5bWJpYW4gZG9l
c24ndCBpbXBsZW1lbnQgYWJvcnQoKSB3ZWxsLCBhbmQgc29tZSBkZWJ1Z2dlcnMKKyAgICAgIC8v
IGRvbid0IGNvcnJlY3RseSB0cmFwIGFib3J0KCkuCiAgICAgICAqc3RhdGljX2Nhc3Q8dm9sYXRp
bGUgaW50Kj4oTlVMTCkgPSAxOwogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAgICAgfSBl
bHNlIGlmIChHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpKSB7CiAjaWYgR1RFU1RfSEFTX0VY
Q0VQVElPTlMKLSAgICAgIHRocm93IEdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uKHJlc3VsdCk7
CisgICAgICB0aHJvdyBpbnRlcm5hbDo6R29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24ocmVzdWx0
KTsKICNlbHNlCiAgICAgICAvLyBXZSBjYW5ub3QgY2FsbCBhYm9ydCgpIGFzIGl0IGdlbmVyYXRl
cyBhIHBvcC11cCBpbiBkZWJ1ZyBtb2RlCiAgICAgICAvLyB0aGF0IGNhbm5vdCBiZSBzdXBwcmVz
c2VkIGluIFZDIDcuMSBvciBiZWxvdy4KQEAgLTM2MTYsMTIgKzQ2OTYsMTQgQEAgdm9pZCBVbml0
VGVzdDo6QWRkVGVzdFBhcnRSZXN1bHQoVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUs
CiAgIH0KIH0KIAotLy8gQ3JlYXRlcyBhbmQgYWRkcyBhIHByb3BlcnR5IHRvIHRoZSBjdXJyZW50
IFRlc3RSZXN1bHQuIElmIGEgcHJvcGVydHkgbWF0Y2hpbmcKLS8vIHRoZSBzdXBwbGllZCB2YWx1
ZSBhbHJlYWR5IGV4aXN0cywgdXBkYXRlcyBpdHMgdmFsdWUgaW5zdGVhZC4KLXZvaWQgVW5pdFRl
c3Q6OlJlY29yZFByb3BlcnR5Rm9yQ3VycmVudFRlc3QoY29uc3QgY2hhcioga2V5LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB2YWx1ZSkg
ewotICBjb25zdCBUZXN0UHJvcGVydHkgdGVzdF9wcm9wZXJ0eShrZXksIHZhbHVlKTsKLSAgaW1w
bF8tPmN1cnJlbnRfdGVzdF9yZXN1bHQoKS0+UmVjb3JkUHJvcGVydHkodGVzdF9wcm9wZXJ0eSk7
CisvLyBBZGRzIGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0
IHdoZW4gaW52b2tlZCBmcm9tCisvLyBpbnNpZGUgYSB0ZXN0LCB0byBjdXJyZW50IFRlc3RDYXNl
J3MgYWRfaG9jX3Rlc3RfcmVzdWx0XyB3aGVuIGludm9rZWQKKy8vIGZyb20gU2V0VXBUZXN0Q2Fz
ZSBvciBUZWFyRG93blRlc3RDYXNlLCBvciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNldAorLy8g
d2hlbiBpbnZva2VkIGVsc2V3aGVyZS4gIElmIHRoZSByZXN1bHQgYWxyZWFkeSBjb250YWlucyBh
IHByb3BlcnR5IHdpdGgKKy8vIHRoZSBzYW1lIGtleSwgdGhlIHZhbHVlIHdpbGwgYmUgdXBkYXRl
ZC4KK3ZvaWQgVW5pdFRlc3Q6OlJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUp
IHsKKyAgaW1wbF8tPlJlY29yZFByb3BlcnR5KFRlc3RQcm9wZXJ0eShrZXksIHZhbHVlKSk7CiB9
CiAKIC8vIFJ1bnMgYWxsIHRlc3RzIGluIHRoaXMgVW5pdFRlc3Qgb2JqZWN0IGFuZCBwcmludHMg
dGhlIHJlc3VsdC4KQEAgLTM2MzAsMzEgKzQ3MTIsNTggQEAgdm9pZCBVbml0VGVzdDo6UmVjb3Jk
UHJvcGVydHlGb3JDdXJyZW50VGVzdChjb25zdCBjaGFyKiBrZXksCiAvLyBXZSBkb24ndCBwcm90
ZWN0IHRoaXMgdW5kZXIgbXV0ZXhfLCBhcyB3ZSBvbmx5IHN1cHBvcnQgY2FsbGluZyBpdAogLy8g
ZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiBpbnQgVW5pdFRlc3Q6OlJ1bigpIHsKLSNpZiBHVEVTVF9I
QVNfU0VICi0gIC8vIENhdGNoIFNFSC1zdHlsZSBleGNlcHRpb25zLgotCiAgIGNvbnN0IGJvb2wg
aW5fZGVhdGhfdGVzdF9jaGlsZF9wcm9jZXNzID0KICAgICAgIGludGVybmFsOjpHVEVTVF9GTEFH
KGludGVybmFsX3J1bl9kZWF0aF90ZXN0KS5sZW5ndGgoKSA+IDA7CiAKKyAgLy8gR29vZ2xlIFRl
c3QgaW1wbGVtZW50cyB0aGlzIHByb3RvY29sIGZvciBjYXRjaGluZyB0aGF0IGEgdGVzdAorICAv
LyBwcm9ncmFtIGV4aXRzIGJlZm9yZSByZXR1cm5pbmcgY29udHJvbCB0byBHb29nbGUgVGVzdDoK
KyAgLy8KKyAgLy8gICAxLiBVcG9uIHN0YXJ0LCBHb29nbGUgVGVzdCBjcmVhdGVzIGEgZmlsZSB3
aG9zZSBhYnNvbHV0ZSBwYXRoCisgIC8vICAgICAgaXMgc3BlY2lmaWVkIGJ5IHRoZSBlbnZpcm9u
bWVudCB2YXJpYWJsZQorICAvLyAgICAgIFRFU1RfUFJFTUFUVVJFX0VYSVRfRklMRS4KKyAgLy8g
ICAyLiBXaGVuIEdvb2dsZSBUZXN0IGhhcyBmaW5pc2hlZCBpdHMgd29yaywgaXQgZGVsZXRlcyB0
aGUgZmlsZS4KKyAgLy8KKyAgLy8gVGhpcyBhbGxvd3MgYSB0ZXN0IHJ1bm5lciB0byBzZXQgVEVT
VF9QUkVNQVRVUkVfRVhJVF9GSUxFIGJlZm9yZQorICAvLyBydW5uaW5nIGEgR29vZ2xlLVRlc3Qt
YmFzZWQgdGVzdCBwcm9ncmFtIGFuZCBjaGVjayB0aGUgZXhpc3RlbmNlCisgIC8vIG9mIHRoZSBm
aWxlIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QgZXhlY3V0aW9uIHRvIHNlZSBpZiBpdCBoYXMKKyAg
Ly8gZXhpdGVkIHByZW1hdHVyZWx5LgorCisgIC8vIElmIHdlIGFyZSBpbiB0aGUgY2hpbGQgcHJv
Y2VzcyBvZiBhIGRlYXRoIHRlc3QsIGRvbid0CisgIC8vIGNyZWF0ZS9kZWxldGUgdGhlIHByZW1h
dHVyZSBleGl0IGZpbGUsIGFzIGRvaW5nIHNvIGlzIHVubmVjZXNzYXJ5CisgIC8vIGFuZCB3aWxs
IGNvbmZ1c2UgdGhlIHBhcmVudCBwcm9jZXNzLiAgT3RoZXJ3aXNlLCBjcmVhdGUvZGVsZXRlCisg
IC8vIHRoZSBmaWxlIHVwb24gZW50ZXJpbmcvbGVhdmluZyB0aGlzIGZ1bmN0aW9uLiAgSWYgdGhl
IHByb2dyYW0KKyAgLy8gc29tZWhvdyBleGl0cyBiZWZvcmUgdGhpcyBmdW5jdGlvbiBoYXMgYSBj
aGFuY2UgdG8gcmV0dXJuLCB0aGUKKyAgLy8gcHJlbWF0dXJlLWV4aXQgZmlsZSB3aWxsIGJlIGxl
ZnQgdW5kZWxldGVkLCBjYXVzaW5nIGEgdGVzdCBydW5uZXIKKyAgLy8gdGhhdCB1bmRlcnN0YW5k
cyB0aGUgcHJlbWF0dXJlLWV4aXQtZmlsZSBwcm90b2NvbCB0byByZXBvcnQgdGhlCisgIC8vIHRl
c3QgYXMgaGF2aW5nIGZhaWxlZC4KKyAgY29uc3QgaW50ZXJuYWw6OlNjb3BlZFByZW1hdHVyZUV4
aXRGaWxlIHByZW1hdHVyZV9leGl0X2ZpbGUoCisgICAgICBpbl9kZWF0aF90ZXN0X2NoaWxkX3By
b2Nlc3MgPworICAgICAgTlVMTCA6IGludGVybmFsOjpwb3NpeDo6R2V0RW52KCJURVNUX1BSRU1B
VFVSRV9FWElUX0ZJTEUiKSk7CisKKyAgLy8gQ2FwdHVyZXMgdGhlIHZhbHVlIG9mIEdURVNUX0ZM
QUcoY2F0Y2hfZXhjZXB0aW9ucykuICBUaGlzIHZhbHVlIHdpbGwgYmUKKyAgLy8gdXNlZCBmb3Ig
dGhlIGR1cmF0aW9uIG9mIHRoZSBwcm9ncmFtLgorICBpbXBsKCktPnNldF9jYXRjaF9leGNlcHRp
b25zKEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykpOworCisjaWYgR1RFU1RfT1NfV0lORE9X
UwogICAvLyBFaXRoZXIgdGhlIHVzZXIgd2FudHMgR29vZ2xlIFRlc3QgdG8gY2F0Y2ggZXhjZXB0
aW9ucyB0aHJvd24gYnkgdGhlCiAgIC8vIHRlc3RzIG9yIHRoaXMgaXMgZXhlY3V0aW5nIGluIHRo
ZSBjb250ZXh0IG9mIGRlYXRoIHRlc3QgY2hpbGQKICAgLy8gcHJvY2Vzcy4gSW4gZWl0aGVyIGNh
c2UgdGhlIHVzZXIgZG9lcyBub3Qgd2FudCB0byBzZWUgcG9wLXVwIGRpYWxvZ3MKLSAgLy8gYWJv
dXQgY3Jhc2hlcyAtIHRoZXkgYXJlIGV4cGVjdGVkLi4KLSAgaWYgKEdURVNUX0ZMQUcoY2F0Y2hf
ZXhjZXB0aW9ucykgfHwgaW5fZGVhdGhfdGVzdF9jaGlsZF9wcm9jZXNzKSB7Ci0jaWYgIUdURVNU
X09TX1dJTkRPV1NfTU9CSUxFCisgIC8vIGFib3V0IGNyYXNoZXMgLSB0aGV5IGFyZSBleHBlY3Rl
ZC4KKyAgaWYgKGltcGwoKS0+Y2F0Y2hfZXhjZXB0aW9ucygpIHx8IGluX2RlYXRoX3Rlc3RfY2hp
bGRfcHJvY2VzcykgeworIyBpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09T
X1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQKICAgICAvLyBTZXRFcnJvck1v
ZGUgZG9lc24ndCBleGlzdCBvbiBDRS4KICAgICBTZXRFcnJvck1vZGUoU0VNX0ZBSUxDUklUSUNB
TEVSUk9SUyB8IFNFTV9OT0FMSUdOTUVOVEZBVUxURVhDRVBUIHwKICAgICAgICAgICAgICAgICAg
U0VNX05PR1BGQVVMVEVSUk9SQk9YIHwgU0VNX05PT1BFTkZJTEVFUlJPUkJPWCk7Ci0jZW5kaWYg
IC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCiAKLSNpZiAoZGVmaW5lZChfTVNDX1ZFUikgfHwgR1RFU1RfT1NfV0lORE9XU19N
SU5HVykgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGlmIChkZWZpbmVkKF9NU0NfVkVS
KSB8fCBHVEVTVF9PU19XSU5ET1dTX01JTkdXKSAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
ICAgICAvLyBEZWF0aCB0ZXN0IGNoaWxkcmVuIGNhbiBiZSB0ZXJtaW5hdGVkIHdpdGggX2Fib3J0
KCkuICBPbiBXaW5kb3dzLAogICAgIC8vIF9hYm9ydCgpIGNhbiBzaG93IGEgZGlhbG9nIHdpdGgg
YSB3YXJuaW5nIG1lc3NhZ2UuICBUaGlzIGZvcmNlcyB0aGUKICAgICAvLyBhYm9ydCBtZXNzYWdl
IHRvIGdvIHRvIHN0ZGVyciBpbnN0ZWFkLgogICAgIF9zZXRfZXJyb3JfbW9kZShfT1VUX1RPX1NU
REVSUik7Ci0jZW5kaWYKKyMgZW5kaWYKIAotI2lmIF9NU0NfVkVSID49IDE0MDAgJiYgIUdURVNU
X09TX1dJTkRPV1NfTU9CSUxFCisjIGlmIF9NU0NfVkVSID49IDE0MDAgJiYgIUdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCiAgICAgLy8gSW4gdGhlIGRlYnVnIHZlcnNpb24sIFZpc3VhbCBTdHVkaW8g
cG9wcyB1cCBhIHNlcGFyYXRlIGRpYWxvZwogICAgIC8vIG9mZmVyaW5nIGEgY2hvaWNlIHRvIGRl
YnVnIHRoZSBhYm9ydGVkIHByb2dyYW0uIFdlIG5lZWQgdG8gc3VwcHJlc3MKICAgICAvLyB0aGlz
IGRpYWxvZyBvciBpdCB3aWxsIHBvcCB1cCBmb3IgZXZlcnkgRVhQRUNUL0FTU0VSVF9ERUFUSCBz
dGF0ZW1lbnQKQEAgLTM2NjQsMjggKzQ3NzMsMjAgQEAgaW50IFVuaXRUZXN0OjpSdW4oKSB7CiAg
ICAgLy8gVkMrKyBkb2Vzbid0IGRlZmluZSBfc2V0X2Fib3J0X2JlaGF2aW9yKCkgcHJpb3IgdG8g
dGhlIHZlcnNpb24gOC4wLgogICAgIC8vIFVzZXJzIG9mIHByaW9yIFZDIHZlcnNpb25zIHNoYWxs
IHN1ZmZlciB0aGUgYWdvbnkgYW5kIHBhaW4gb2YKICAgICAvLyBjbGlja2luZyB0aHJvdWdoIHRo
ZSBjb3VudGxlc3MgZGVidWcgZGlhbG9ncy4KLSAgICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20p
OiBmaW5kIGEgd2F5IHRvIHN1cHByZXNzIHRoZSBhYm9ydCBkaWFsb2coKSBpbiB0aGUKKyAgICAv
LyBGSVhNRTogZmluZCBhIHdheSB0byBzdXBwcmVzcyB0aGUgYWJvcnQgZGlhbG9nKCkgaW4gdGhl
CiAgICAgLy8gZGVidWcgbW9kZSB3aGVuIGNvbXBpbGVkIHdpdGggVkMgNy4xIG9yIGxvd2VyLgog
ICAgIGlmICghR1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJlKSkKICAgICAgIF9zZXRfYWJvcnRf
YmVoYXZpb3IoCiAgICAgICAgICAgMHgwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIENsZWFyIHRoZSBmb2xsb3dpbmcgZmxhZ3M6CiAgICAgICAgICAgX1dSSVRFX0FCT1JU
X01TRyB8IF9DQUxMX1JFUE9SVEZBVUxUKTsgIC8vIHBvcC11cCB3aW5kb3csIGNvcmUgZHVtcC4K
LSNlbmRpZgorIyBlbmRpZgogICB9CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAotICBf
X3RyeSB7Ci0gICAgcmV0dXJuIGltcGxfLT5SdW5BbGxUZXN0cygpOwotICB9IF9fZXhjZXB0KGlu
dGVybmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCgKLSAgICAgIEdl
dEV4Y2VwdGlvbkNvZGUoKSkpIHsKLSAgICBwcmludGYoIkV4Y2VwdGlvbiB0aHJvd24gd2l0aCBj
b2RlIDB4JXguXG5GQUlMXG4iLCBHZXRFeGNlcHRpb25Db2RlKCkpOwotICAgIGZmbHVzaChzdGRv
dXQpOwotICAgIHJldHVybiAxOwotICB9Ci0KLSNlbHNlICAvLyBXZSBhcmUgb24gYSBjb21waWxl
ciBvciBwbGF0Zm9ybSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBTRUguCi0KLSAgcmV0dXJuIGltcGxf
LT5SdW5BbGxUZXN0cygpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICisgIHJldHVybiBpbnRl
cm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgICBpbXBsKCks
CisgICAgICAmaW50ZXJuYWw6OlVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMsCisgICAgICAiYXV4
aWxpYXJ5IHRlc3QgY29kZSAoZW52aXJvbm1lbnRzIG9yIGV2ZW50IGxpc3RlbmVycykiKSA/IDAg
OiAxOwogfQogCiAvLyBSZXR1cm5zIHRoZSB3b3JraW5nIGRpcmVjdG9yeSB3aGVuIHRoZSBmaXJz
dCBURVNUKCkgb3IgVEVTVF9GKCkgd2FzCkBAIC0zNjk2LDE2ICs0Nzk3LDE2IEBAIGNvbnN0IGNo
YXIqIFVuaXRUZXN0OjpvcmlnaW5hbF93b3JraW5nX2RpcigpIGNvbnN0IHsKIAogLy8gUmV0dXJu
cyB0aGUgVGVzdENhc2Ugb2JqZWN0IGZvciB0aGUgdGVzdCB0aGF0J3MgY3VycmVudGx5IHJ1bm5p
bmcsCiAvLyBvciBOVUxMIGlmIG5vIHRlc3QgaXMgcnVubmluZy4KLS8vIEwgPCBtdXRleF8KLWNv
bnN0IFRlc3RDYXNlKiBVbml0VGVzdDo6Y3VycmVudF90ZXN0X2Nhc2UoKSBjb25zdCB7Citjb25z
dCBUZXN0Q2FzZSogVW5pdFRlc3Q6OmN1cnJlbnRfdGVzdF9jYXNlKCkgY29uc3QKKyAgICBHVEVT
VF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pIHsKICAgaW50ZXJuYWw6Ok11dGV4TG9jayBsb2NrKCZt
dXRleF8pOwogICByZXR1cm4gaW1wbF8tPmN1cnJlbnRfdGVzdF9jYXNlKCk7CiB9CiAKIC8vIFJl
dHVybnMgdGhlIFRlc3RJbmZvIG9iamVjdCBmb3IgdGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBy
dW5uaW5nLAogLy8gb3IgTlVMTCBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcuCi0vLyBMIDwgbXV0ZXhf
Ci1jb25zdCBUZXN0SW5mbyogVW5pdFRlc3Q6OmN1cnJlbnRfdGVzdF9pbmZvKCkgY29uc3Qgewor
Y29uc3QgVGVzdEluZm8qIFVuaXRUZXN0OjpjdXJyZW50X3Rlc3RfaW5mbygpIGNvbnN0CisgICAg
R1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7CiAgIGludGVybmFsOjpNdXRleExvY2sgbG9j
aygmbXV0ZXhfKTsKICAgcmV0dXJuIGltcGxfLT5jdXJyZW50X3Rlc3RfaW5mbygpOwogfQpAQCAt
MzcxMywxNSArNDgxNCwxMyBAQCBjb25zdCBUZXN0SW5mbyogVW5pdFRlc3Q6OmN1cnJlbnRfdGVz
dF9pbmZvKCkgY29uc3QgewogLy8gUmV0dXJucyB0aGUgcmFuZG9tIHNlZWQgdXNlZCBhdCB0aGUg
c3RhcnQgb2YgdGhlIGN1cnJlbnQgdGVzdCBydW4uCiBpbnQgVW5pdFRlc3Q6OnJhbmRvbV9zZWVk
KCkgY29uc3QgeyByZXR1cm4gaW1wbF8tPnJhbmRvbV9zZWVkKCk7IH0KIAotI2lmIEdURVNUX0hB
U19QQVJBTV9URVNUCiAvLyBSZXR1cm5zIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IG9i
amVjdCB1c2VkIHRvIGtlZXAgdHJhY2sgb2YKIC8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMg
YW5kIGluc3RhbnRpYXRlIGFuZCByZWdpc3RlciB0aGVtLgotLy8gTCA8IG11dGV4XwogaW50ZXJu
YWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5JgotICAgIFVuaXRUZXN0OjpwYXJhbWV0
ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKSB7CisgICAgVW5pdFRlc3Q6OnBhcmFtZXRlcml6ZWRfdGVz
dF9yZWdpc3RyeSgpCisgICAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4XykgewogICBy
ZXR1cm4gaW1wbF8tPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpOwogfQotI2VuZGlmICAv
LyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogCiAvLyBDcmVhdGVzIGFuIGVtcHR5IFVuaXRUZXN0Lgog
VW5pdFRlc3Q6OlVuaXRUZXN0KCkgewpAQCAtMzczNSwxNSArNDgzNCwxNSBAQCBVbml0VGVzdDo6
flVuaXRUZXN0KCkgewogCiAvLyBQdXNoZXMgYSB0cmFjZSBkZWZpbmVkIGJ5IFNDT1BFRF9UUkFD
RSgpIG9uIHRvIHRoZSBwZXItdGhyZWFkCiAvLyBHb29nbGUgVGVzdCB0cmFjZSBzdGFjay4KLS8v
IEwgPCBtdXRleF8KLXZvaWQgVW5pdFRlc3Q6OlB1c2hHVGVzdFRyYWNlKGNvbnN0IGludGVybmFs
OjpUcmFjZUluZm8mIHRyYWNlKSB7Cit2b2lkIFVuaXRUZXN0OjpQdXNoR1Rlc3RUcmFjZShjb25z
dCBpbnRlcm5hbDo6VHJhY2VJbmZvJiB0cmFjZSkKKyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyht
dXRleF8pIHsKICAgaW50ZXJuYWw6Ok11dGV4TG9jayBsb2NrKCZtdXRleF8pOwogICBpbXBsXy0+
Z3Rlc3RfdHJhY2Vfc3RhY2soKS5wdXNoX2JhY2sodHJhY2UpOwogfQogCiAvLyBQb3BzIGEgdHJh
Y2UgZnJvbSB0aGUgcGVyLXRocmVhZCBHb29nbGUgVGVzdCB0cmFjZSBzdGFjay4KLS8vIEwgPCBt
dXRleF8KLXZvaWQgVW5pdFRlc3Q6OlBvcEdUZXN0VHJhY2UoKSB7Cit2b2lkIFVuaXRUZXN0OjpQ
b3BHVGVzdFRyYWNlKCkKKyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pIHsKICAgaW50
ZXJuYWw6Ok11dGV4TG9jayBsb2NrKCZtdXRleF8pOwogICBpbXBsXy0+Z3Rlc3RfdHJhY2Vfc3Rh
Y2soKS5wb3BfYmFjaygpOwogfQpAQCAtMzc1MiwyNSArNDg1MSwxNiBAQCBuYW1lc3BhY2UgaW50
ZXJuYWwgewogCiBVbml0VGVzdEltcGw6OlVuaXRUZXN0SW1wbChVbml0VGVzdCogcGFyZW50KQog
ICAgIDogcGFyZW50XyhwYXJlbnQpLAotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmco
cHVzaCkgICAgICAgICAgICAgICAgICAgIC8vIFNhdmVzIHRoZSBjdXJyZW50IHdhcm5pbmcgc3Rh
dGUuCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MzU1KSAgICAgICAgICAgIC8vIFRlbXBvcmFy
aWx5IGRpc2FibGVzIHdhcm5pbmcgNDM1NQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyAodXNpbmcgdGhpcyBpbiBpbml0aWFsaXplcikuCi0gICAgICBkZWZhdWx0
X2dsb2JhbF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXyh0aGlzKSwKLSAgICAgIGRlZmF1bHRf
cGVyX3RocmVhZF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXyh0aGlzKSwKLSNwcmFnbWEgd2Fy
bmluZyhwb3ApICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdG9yZXMgdGhlIHdhcm5pbmcgc3Rh
dGUgYWdhaW4uCi0jZWxzZQorICAgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8o
NDM1NSAvKiB1c2luZyB0aGlzIGluIGluaXRpYWxpemVyICovKQogICAgICAgZGVmYXVsdF9nbG9i
YWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8odGhpcyksCiAgICAgICBkZWZhdWx0X3Blcl90
aHJlYWRfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8odGhpcyksCi0jZW5kaWYgIC8vIF9NU0Nf
VkVSCisgICAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKICAgICAgIGdsb2Jh
bF90ZXN0X3BhcnRfcmVzdWx0X3JlcG90ZXJfKAogICAgICAgICAgICZkZWZhdWx0X2dsb2JhbF90
ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXyksCiAgICAgICBwZXJfdGhyZWFkX3Rlc3RfcGFydF9y
ZXN1bHRfcmVwb3J0ZXJfKAogICAgICAgICAgICZkZWZhdWx0X3Blcl90aHJlYWRfdGVzdF9wYXJ0
X3Jlc3VsdF9yZXBvcnRlcl8pLAotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiAgICAgICBwYXJh
bWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnlfKCksCiAgICAgICBwYXJhbWV0ZXJpemVkX3Rlc3RzX3Jl
Z2lzdGVyZWRfKGZhbHNlKSwKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgICAg
IGxhc3RfZGVhdGhfdGVzdF9jYXNlXygtMSksCiAgICAgICBjdXJyZW50X3Rlc3RfY2FzZV8oTlVM
TCksCiAgICAgICBjdXJyZW50X3Rlc3RfaW5mb18oTlVMTCksCkBAIC0zNzc5LDEzICs0ODY5LDEz
IEBAIFVuaXRUZXN0SW1wbDo6VW5pdFRlc3RJbXBsKFVuaXRUZXN0KiBwYXJlbnQpCiAgICAgICBw
b3N0X2ZsYWdfcGFyc2VfaW5pdF9wZXJmb3JtZWRfKGZhbHNlKSwKICAgICAgIHJhbmRvbV9zZWVk
XygwKSwgIC8vIFdpbGwgYmUgb3ZlcnJpZGRlbiBieSB0aGUgZmxhZyBiZWZvcmUgZmlyc3QgdXNl
LgogICAgICAgcmFuZG9tXygwKSwgIC8vIFdpbGwgYmUgcmVzZWVkZWQgYmVmb3JlIGZpcnN0IHVz
ZS4KLSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorICAgICAgc3RhcnRfdGltZXN0YW1wXygwKSwK
ICAgICAgIGVsYXBzZWRfdGltZV8oMCksCi0gICAgICBpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdF9m
bGFnXyhOVUxMKSwKLSAgICAgIGRlYXRoX3Rlc3RfZmFjdG9yeV8obmV3IERlZmF1bHREZWF0aFRl
c3RGYWN0b3J5KSB7Ci0jZWxzZQotICAgICAgZWxhcHNlZF90aW1lXygwKSB7Ci0jZW5kaWYgIC8v
IEdURVNUX0hBU19ERUFUSF9URVNUCisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKyAgICAgIGRl
YXRoX3Rlc3RfZmFjdG9yeV8obmV3IERlZmF1bHREZWF0aFRlc3RGYWN0b3J5KSwKKyNlbmRpZgor
ICAgICAgLy8gV2lsbCBiZSBvdmVycmlkZGVuIGJ5IHRoZSBmbGFnIGJlZm9yZSBmaXJzdCB1c2Uu
CisgICAgICBjYXRjaF9leGNlcHRpb25zXyhmYWxzZSkgewogICBsaXN0ZW5lcnMoKS0+U2V0RGVm
YXVsdFJlc3VsdFByaW50ZXIobmV3IFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcik7CiB9CiAK
QEAgLTM3OTksNiArNDg4OSwyOCBAQCBVbml0VGVzdEltcGw6On5Vbml0VGVzdEltcGwoKSB7CiAg
IGRlbGV0ZSBvc19zdGFja190cmFjZV9nZXR0ZXJfOwogfQogCisvLyBBZGRzIGEgVGVzdFByb3Bl
cnR5IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0IHdoZW4gaW52b2tlZCBpbiBhCisv
LyBjb250ZXh0IG9mIGEgdGVzdCwgdG8gY3VycmVudCB0ZXN0IGNhc2UncyBhZF9ob2NfdGVzdF9y
ZXN1bHQgd2hlbiBpbnZva2UKKy8vIGZyb20gU2V0VXBUZXN0Q2FzZS9UZWFyRG93blRlc3RDYXNl
LCBvciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNldAorLy8gb3RoZXJ3aXNlLiAgSWYgdGhlIHJl
c3VsdCBhbHJlYWR5IGNvbnRhaW5zIGEgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBrZXksCisvLyB0
aGUgdmFsdWUgd2lsbCBiZSB1cGRhdGVkLgordm9pZCBVbml0VGVzdEltcGw6OlJlY29yZFByb3Bl
cnR5KGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgeworICBzdGQ6OnN0cmluZyB4
bWxfZWxlbWVudDsKKyAgVGVzdFJlc3VsdCogdGVzdF9yZXN1bHQ7ICAvLyBUZXN0UmVzdWx0IGFw
cHJvcHJpYXRlIGZvciBwcm9wZXJ0eSByZWNvcmRpbmcuCisKKyAgaWYgKGN1cnJlbnRfdGVzdF9p
bmZvXyAhPSBOVUxMKSB7CisgICAgeG1sX2VsZW1lbnQgPSAidGVzdGNhc2UiOworICAgIHRlc3Rf
cmVzdWx0ID0gJihjdXJyZW50X3Rlc3RfaW5mb18tPnJlc3VsdF8pOworICB9IGVsc2UgaWYgKGN1
cnJlbnRfdGVzdF9jYXNlXyAhPSBOVUxMKSB7CisgICAgeG1sX2VsZW1lbnQgPSAidGVzdHN1aXRl
IjsKKyAgICB0ZXN0X3Jlc3VsdCA9ICYoY3VycmVudF90ZXN0X2Nhc2VfLT5hZF9ob2NfdGVzdF9y
ZXN1bHRfKTsKKyAgfSBlbHNlIHsKKyAgICB4bWxfZWxlbWVudCA9ICJ0ZXN0c3VpdGVzIjsKKyAg
ICB0ZXN0X3Jlc3VsdCA9ICZhZF9ob2NfdGVzdF9yZXN1bHRfOworICB9CisgIHRlc3RfcmVzdWx0
LT5SZWNvcmRQcm9wZXJ0eSh4bWxfZWxlbWVudCwgdGVzdF9wcm9wZXJ0eSk7Cit9CisKICNpZiBH
VEVTVF9IQVNfREVBVEhfVEVTVAogLy8gRGlzYWJsZXMgZXZlbnQgZm9yd2FyZGluZyBpZiB0aGUg
Y29udHJvbCBpcyBjdXJyZW50bHkgaW4gYSBkZWF0aCB0ZXN0CiAvLyBzdWJwcm9jZXNzLiBNdXN0
IG5vdCBiZSBjYWxsZWQgYmVmb3JlIEluaXRHb29nbGVUZXN0LgpAQCAtMzgxMSwxNyArNDkyMywz
NyBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6U3VwcHJlc3NUZXN0RXZlbnRzSWZJblN1YnByb2Nlc3Mo
KSB7CiAvLyBJbml0aWFsaXplcyBldmVudCBsaXN0ZW5lcnMgcGVyZm9ybWluZyBYTUwgb3V0cHV0
IGFzIHNwZWNpZmllZCBieQogLy8gVW5pdFRlc3RPcHRpb25zLiBNdXN0IG5vdCBiZSBjYWxsZWQg
YmVmb3JlIEluaXRHb29nbGVUZXN0Lgogdm9pZCBVbml0VGVzdEltcGw6OkNvbmZpZ3VyZVhtbE91
dHB1dCgpIHsKLSAgY29uc3QgU3RyaW5nJiBvdXRwdXRfZm9ybWF0ID0gVW5pdFRlc3RPcHRpb25z
OjpHZXRPdXRwdXRGb3JtYXQoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9mb3JtYXQg
PSBVbml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdCgpOwogICBpZiAob3V0cHV0X2Zvcm1h
dCA9PSAieG1sIikgewogICAgIGxpc3RlbmVycygpLT5TZXREZWZhdWx0WG1sR2VuZXJhdG9yKG5l
dyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIoCiAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0
QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSkpOworICB9IGVsc2UgaWYgKG91dHB1
dF9mb3JtYXQgPT0gImpzb24iKSB7CisgICAgbGlzdGVuZXJzKCktPlNldERlZmF1bHRYbWxHZW5l
cmF0b3IobmV3IEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIoCisgICAgICAgIFVuaXRUZXN0T3B0
aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSkpOwogICB9IGVsc2Ug
aWYgKG91dHB1dF9mb3JtYXQgIT0gIiIpIHsKLSAgICBwcmludGYoIldBUk5JTkc6IHVucmVjb2du
aXplZCBvdXRwdXQgZm9ybWF0IFwiJXNcIiBpZ25vcmVkLlxuIiwKLSAgICAgICAgICAgb3V0cHV0
X2Zvcm1hdC5jX3N0cigpKTsKLSAgICBmZmx1c2goc3Rkb3V0KTsKKyAgICBHVEVTVF9MT0dfKFdB
Uk5JTkcpIDw8ICJXQVJOSU5HOiB1bnJlY29nbml6ZWQgb3V0cHV0IGZvcm1hdCBcIiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IG91dHB1dF9mb3JtYXQgPDwgIlwiIGlnbm9yZWQuIjsKICAg
fQogfQogCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworLy8gSW5pdGlhbGl6ZXMgZXZl
bnQgbGlzdGVuZXJzIGZvciBzdHJlYW1pbmcgdGVzdCByZXN1bHRzIGluIHN0cmluZyBmb3JtLgor
Ly8gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBJbml0R29vZ2xlVGVzdC4KK3ZvaWQgVW5pdFRl
c3RJbXBsOjpDb25maWd1cmVTdHJlYW1pbmdPdXRwdXQoKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5n
JiB0YXJnZXQgPSBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pOworICBpZiAoIXRhcmdldC5l
bXB0eSgpKSB7CisgICAgY29uc3Qgc2l6ZV90IHBvcyA9IHRhcmdldC5maW5kKCc6Jyk7CisgICAg
aWYgKHBvcyAhPSBzdGQ6OnN0cmluZzo6bnBvcykgeworICAgICAgbGlzdGVuZXJzKCktPkFwcGVu
ZChuZXcgU3RyZWFtaW5nTGlzdGVuZXIodGFyZ2V0LnN1YnN0cigwLCBwb3MpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN1YnN0cihwb3Mr
MSkpKTsKKyAgICB9IGVsc2UgeworICAgICAgR1RFU1RfTE9HXyhXQVJOSU5HKSA8PCAidW5yZWNv
Z25pemVkIHN0cmVhbWluZyB0YXJnZXQgXCIiIDw8IHRhcmdldAorICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCAiXCIgaWdub3JlZC4iOworICAgIH0KKyAgfQorfQorI2VuZGlmICAvLyBHVEVT
VF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKIC8vIFBlcmZvcm1zIGluaXRpYWxpemF0aW9uIGRlcGVu
ZGVudCB1cG9uIGZsYWcgdmFsdWVzIG9idGFpbmVkIGluCiAvLyBQYXJzZUdvb2dsZVRlc3RGbGFn
c09ubHkuICBJcyBjYWxsZWQgZnJvbSBJbml0R29vZ2xlVGVzdCBhZnRlciB0aGUgY2FsbCB0bwog
Ly8gUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5LiAgSW4gY2FzZSBhIHVzZXIgbmVnbGVjdHMgdG8g
Y2FsbCBJbml0R29vZ2xlVGVzdApAQCAtMzgzMiw2ICs0OTY0LDExIEBAIHZvaWQgVW5pdFRlc3RJ
bXBsOjpQb3N0RmxhZ1BhcnNpbmdJbml0KCkgewogICBpZiAoIXBvc3RfZmxhZ19wYXJzZV9pbml0
X3BlcmZvcm1lZF8pIHsKICAgICBwb3N0X2ZsYWdfcGFyc2VfaW5pdF9wZXJmb3JtZWRfID0gdHJ1
ZTsKIAorI2lmIGRlZmluZWQoR1RFU1RfQ1VTVE9NX1RFU1RfRVZFTlRfTElTVEVORVJfKQorICAg
IC8vIFJlZ2lzdGVyIHRvIHNlbmQgbm90aWZpY2F0aW9ucyBhYm91dCBrZXkgcHJvY2VzcyBzdGF0
ZSBjaGFuZ2VzLgorICAgIGxpc3RlbmVycygpLT5BcHBlbmQobmV3IEdURVNUX0NVU1RPTV9URVNU
X0VWRU5UX0xJU1RFTkVSXygpKTsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01fVEVT
VF9FVkVOVF9MSVNURU5FUl8pCisKICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogICAgIEluaXRE
ZWF0aFRlc3RTdWJwcm9jZXNzQ29udHJvbEluZm8oKTsKICAgICBTdXBwcmVzc1Rlc3RFdmVudHNJ
ZkluU3VicHJvY2VzcygpOwpAQCAtMzg0NSw2ICs0OTgyLDE4IEBAIHZvaWQgVW5pdFRlc3RJbXBs
OjpQb3N0RmxhZ1BhcnNpbmdJbml0KCkgewogICAgIC8vIENvbmZpZ3VyZXMgbGlzdGVuZXJzIGZv
ciBYTUwgb3V0cHV0LiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIGZvciB1c2VycwogICAgIC8vIHRv
IHNodXQgZG93biB0aGUgZGVmYXVsdCBYTUwgb3V0cHV0IGJlZm9yZSBpbnZva2luZyBSVU5fQUxM
X1RFU1RTLgogICAgIENvbmZpZ3VyZVhtbE91dHB1dCgpOworCisjaWYgR1RFU1RfQ0FOX1NUUkVB
TV9SRVNVTFRTXworICAgIC8vIENvbmZpZ3VyZXMgbGlzdGVuZXJzIGZvciBzdHJlYW1pbmcgdGVz
dCByZXN1bHRzIHRvIHRoZSBzcGVjaWZpZWQgc2VydmVyLgorICAgIENvbmZpZ3VyZVN0cmVhbWlu
Z091dHB1dCgpOworI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKKyNpZiBH
VEVTVF9IQVNfQUJTTAorICAgIGlmIChHVEVTVF9GTEFHKGluc3RhbGxfZmFpbHVyZV9zaWduYWxf
aGFuZGxlcikpIHsKKyAgICAgIGFic2w6OkZhaWx1cmVTaWduYWxIYW5kbGVyT3B0aW9ucyBvcHRp
b25zOworICAgICAgYWJzbDo6SW5zdGFsbEZhaWx1cmVTaWduYWxIYW5kbGVyKG9wdGlvbnMpOwor
ICAgIH0KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0FCU0wKICAgfQogfQogCkBAIC0zODU5LDcgKzUw
MDgsNyBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6UG9zdEZsYWdQYXJzaW5nSW5pdCgpIHsKIGNsYXNz
IFRlc3RDYXNlTmFtZUlzIHsKICBwdWJsaWM6CiAgIC8vIENvbnN0cnVjdG9yLgotICBleHBsaWNp
dCBUZXN0Q2FzZU5hbWVJcyhjb25zdCBTdHJpbmcmIG5hbWUpCisgIGV4cGxpY2l0IFRlc3RDYXNl
TmFtZUlzKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKQogICAgICAgOiBuYW1lXyhuYW1lKSB7fQog
CiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIG5hbWUgb2YgdGVzdF9jYXNlIG1hdGNoZXMgbmFt
ZV8uCkBAIC0zODY4LDcgKzUwMTcsNyBAQCBjbGFzcyBUZXN0Q2FzZU5hbWVJcyB7CiAgIH0KIAog
IHByaXZhdGU6Ci0gIFN0cmluZyBuYW1lXzsKKyAgc3RkOjpzdHJpbmcgbmFtZV87CiB9OwogCiAv
LyBGaW5kcyBhbmQgcmV0dXJucyBhIFRlc3RDYXNlIHdpdGggdGhlIGdpdmVuIG5hbWUuICBJZiBv
bmUgZG9lc24ndApAQCAtMzg3OSwyNiArNTAyOCwyOCBAQCBjbGFzcyBUZXN0Q2FzZU5hbWVJcyB7
CiAvLyBBcmd1bWVudHM6CiAvLwogLy8gICB0ZXN0X2Nhc2VfbmFtZTogbmFtZSBvZiB0aGUgdGVz
dCBjYXNlCisvLyAgIHR5cGVfcGFyYW06ICAgICB0aGUgbmFtZSBvZiB0aGUgdGVzdCBjYXNlJ3Mg
dHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYKKy8vICAgICAgICAgICAgICAgICAgIHRoaXMgaXMg
bm90IGEgdHlwZWQgb3IgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlLgogLy8gICBzZXRf
dXBfdGM6ICAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSB0ZXN0
IGNhc2UKIC8vICAgdGVhcl9kb3duX3RjOiAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQg
dGVhcnMgZG93biB0aGUgdGVzdCBjYXNlCiBUZXN0Q2FzZSogVW5pdFRlc3RJbXBsOjpHZXRUZXN0
Q2FzZShjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0eXBlX3BhcmFtLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGVzdDo6U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdDo6VGVhckRvd25UZXN0Q2FzZUZ1
bmMgdGVhcl9kb3duX3RjKSB7CiAgIC8vIENhbiB3ZSBmaW5kIGEgVGVzdENhc2Ugd2l0aCB0aGUg
Z2l2ZW4gbmFtZT8KLSAgY29uc3Qgc3RkOjp2ZWN0b3I8VGVzdENhc2UqPjo6Y29uc3RfaXRlcmF0
b3IgdGVzdF9jYXNlID0KLSAgICAgIHN0ZDo6ZmluZF9pZih0ZXN0X2Nhc2VzXy5iZWdpbigpLCB0
ZXN0X2Nhc2VzXy5lbmQoKSwKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8VGVzdENhc2UqPjo6Y29uc3Rf
cmV2ZXJzZV9pdGVyYXRvciB0ZXN0X2Nhc2UgPQorICAgICAgc3RkOjpmaW5kX2lmKHRlc3RfY2Fz
ZXNfLnJiZWdpbigpLCB0ZXN0X2Nhc2VzXy5yZW5kKCksCiAgICAgICAgICAgICAgICAgICAgVGVz
dENhc2VOYW1lSXModGVzdF9jYXNlX25hbWUpKTsKIAotICBpZiAodGVzdF9jYXNlICE9IHRlc3Rf
Y2FzZXNfLmVuZCgpKQorICBpZiAodGVzdF9jYXNlICE9IHRlc3RfY2FzZXNfLnJlbmQoKSkKICAg
ICByZXR1cm4gKnRlc3RfY2FzZTsKIAogICAvLyBOby4gIExldCdzIGNyZWF0ZSBvbmUuCiAgIFRl
c3RDYXNlKiBjb25zdCBuZXdfdGVzdF9jYXNlID0KLSAgICAgIG5ldyBUZXN0Q2FzZSh0ZXN0X2Nh
c2VfbmFtZSwgY29tbWVudCwgc2V0X3VwX3RjLCB0ZWFyX2Rvd25fdGMpOworICAgICAgbmV3IFRl
c3RDYXNlKHRlc3RfY2FzZV9uYW1lLCB0eXBlX3BhcmFtLCBzZXRfdXBfdGMsIHRlYXJfZG93bl90
Yyk7CiAKICAgLy8gSXMgdGhpcyBhIGRlYXRoIHRlc3QgY2FzZT8KLSAgaWYgKGludGVybmFsOjpV
bml0VGVzdE9wdGlvbnM6Ok1hdGNoZXNGaWx0ZXIoU3RyaW5nKHRlc3RfY2FzZV9uYW1lKSwKKyAg
aWYgKGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6Ok1hdGNoZXNGaWx0ZXIodGVzdF9jYXNlX25h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtEZWF0
aFRlc3RDYXNlRmlsdGVyKSkgewogICAgIC8vIFllcy4gIEluc2VydHMgdGhlIHRlc3QgY2FzZSBh
ZnRlciB0aGUgbGFzdCBkZWF0aCB0ZXN0IGNhc2UKICAgICAvLyBkZWZpbmVkIHNvIGZhci4gIFRo
aXMgb25seSB3b3JrcyB3aGVuIHRoZSB0ZXN0IGNhc2VzIGhhdmVuJ3QKQEAgLTM5MjIsMjcgKzUw
NzMsMjEgQEAgc3RhdGljIHZvaWQgU2V0VXBFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KSB7
IGVudi0+U2V0VXAoKTsgfQogc3RhdGljIHZvaWQgVGVhckRvd25FbnZpcm9ubWVudChFbnZpcm9u
bWVudCogZW52KSB7IGVudi0+VGVhckRvd24oKTsgfQogCiAvLyBSdW5zIGFsbCB0ZXN0cyBpbiB0
aGlzIFVuaXRUZXN0IG9iamVjdCwgcHJpbnRzIHRoZSByZXN1bHQsIGFuZAotLy8gcmV0dXJucyAw
IGlmIGFsbCB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3IgMSBvdGhlcndpc2UuICBJZiBhbnkKLS8v
IGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIGEgdGVzdCBvbiBXaW5kb3dzLCB0aGlzIHRlc3Qg
aXMKLS8vIGNvbnNpZGVyZWQgdG8gYmUgZmFpbGVkLCBidXQgdGhlIHJlc3Qgb2YgdGhlIHRlc3Rz
IHdpbGwgc3RpbGwgYmUKLS8vIHJ1bi4gIChXZSBkaXNhYmxlIGV4Y2VwdGlvbnMgb24gTGludXgg
YW5kIE1hYyBPUyBYLCBzbyB0aGUgaXNzdWUKLS8vIGRvZXNuJ3QgYXBwbHkgdGhlcmUuKQorLy8g
cmV0dXJucyB0cnVlIGlmIGFsbCB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bC4gIElmIGFueSBleGNlcHRp
b24gaXMKKy8vIHRocm93biBkdXJpbmcgYSB0ZXN0LCB0aGUgdGVzdCBpcyBjb25zaWRlcmVkIHRv
IGJlIGZhaWxlZCwgYnV0IHRoZQorLy8gcmVzdCBvZiB0aGUgdGVzdHMgd2lsbCBzdGlsbCBiZSBy
dW4uCisvLwogLy8gV2hlbiBwYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBlbmFibGVkLCBpdCBleHBh
bmRzIGFuZCByZWdpc3RlcnMKIC8vIHBhcmFtZXRlcml6ZWQgdGVzdHMgZmlyc3QgaW4gUmVnaXN0
ZXJQYXJhbWV0ZXJpemVkVGVzdHMoKS4KIC8vIEFsbCBvdGhlciBmdW5jdGlvbnMgY2FsbGVkIGZy
b20gUnVuQWxsVGVzdHMoKSBtYXkgc2FmZWx5IGFzc3VtZSB0aGF0CiAvLyBwYXJhbWV0ZXJpemVk
IHRlc3RzIGFyZSByZWFkeSB0byBiZSBjb3VudGVkIGFuZCBydW4uCi1pbnQgVW5pdFRlc3RJbXBs
OjpSdW5BbGxUZXN0cygpIHsKLSAgLy8gTWFrZXMgc3VyZSBJbml0R29vZ2xlVGVzdCgpIHdhcyBj
YWxsZWQuCi0gIGlmICghR1Rlc3RJc0luaXRpYWxpemVkKCkpIHsKLSAgICBwcmludGYoIiVzIiwK
LSAgICAgICAgICAgIlxuVGhpcyB0ZXN0IHByb2dyYW0gZGlkIE5PVCBjYWxsIDo6dGVzdGluZzo6
SW5pdEdvb2dsZVRlc3QgIgotICAgICAgICAgICAiYmVmb3JlIGNhbGxpbmcgUlVOX0FMTF9URVNU
UygpLiAgUGxlYXNlIGZpeCBpdC5cbiIpOwotICAgIHJldHVybiAxOwotICB9Citib29sIFVuaXRU
ZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7CisgIC8vIFRydWUgaWZmIEdvb2dsZSBUZXN0IGlzIGlu
aXRpYWxpemVkIGJlZm9yZSBSVU5fQUxMX1RFU1RTKCkgaXMgY2FsbGVkLgorICBjb25zdCBib29s
IGd0ZXN0X2lzX2luaXRpYWxpemVkX2JlZm9yZV9ydW5fYWxsX3Rlc3RzID0gR1Rlc3RJc0luaXRp
YWxpemVkKCk7CiAKICAgLy8gRG8gbm90IHJ1biBhbnkgdGVzdCBpZiB0aGUgLS1oZWxwIGZsYWcg
d2FzIHNwZWNpZmllZC4KICAgaWYgKGdfaGVscF9mbGFnKQotICAgIHJldHVybiAwOworICAgIHJl
dHVybiB0cnVlOwogCiAgIC8vIFJlcGVhdHMgdGhlIGNhbGwgdG8gdGhlIHBvc3QtZmxhZyBwYXJz
aW5nIGluaXRpYWxpemF0aW9uIGluIGNhc2UgdGhlCiAgIC8vIHVzZXIgZGlkbid0IGNhbGwgSW5p
dEdvb2dsZVRlc3QuCkBAIC0zOTU5LDYgKzUxMDQsMTEgQEAgaW50IFVuaXRUZXN0SW1wbDo6UnVu
QWxsVGVzdHMoKSB7CiAKICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogICBpbl9zdWJwcm9jZXNz
X2Zvcl9kZWF0aF90ZXN0ID0gKGludGVybmFsX3J1bl9kZWF0aF90ZXN0X2ZsYWdfLmdldCgpICE9
IE5VTEwpOworIyBpZiBkZWZpbmVkKEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ0hJTERfU0VUVVBf
KQorICBpZiAoaW5fc3VicHJvY2Vzc19mb3JfZGVhdGhfdGVzdCkgeworICAgIEdURVNUX0VYVFJB
X0RFQVRIX1RFU1RfQ0hJTERfU0VUVVBfKCk7CisgIH0KKyMgZW5kaWYgIC8vIGRlZmluZWQoR1RF
U1RfRVhUUkFfREVBVEhfVEVTVF9DSElMRF9TRVRVUF8pCiAjZW5kaWYgIC8vIEdURVNUX0hBU19E
RUFUSF9URVNUCiAKICAgY29uc3QgYm9vbCBzaG91bGRfc2hhcmQgPSBTaG91bGRTaGFyZChrVGVz
dFRvdGFsU2hhcmRzLCBrVGVzdFNoYXJkSW5kZXgsCkBAIC0zOTc0LDcgKzUxMjQsNyBAQCBpbnQg
VW5pdFRlc3RJbXBsOjpSdW5BbGxUZXN0cygpIHsKICAgaWYgKEdURVNUX0ZMQUcobGlzdF90ZXN0
cykpIHsKICAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkICphZnRlciogRmlsdGVyVGVzdHMoKSBo
YXMgYmVlbiBjYWxsZWQuCiAgICAgTGlzdFRlc3RzTWF0Y2hpbmdGaWx0ZXIoKTsKLSAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gdHJ1ZTsKICAgfQogCiAgIHJhbmRvbV9zZWVkXyA9IEdURVNUX0ZM
QUcoc2h1ZmZsZSkgPwpAQCAtMzk4NSw2ICs1MTM1LDcgQEAgaW50IFVuaXRUZXN0SW1wbDo6UnVu
QWxsVGVzdHMoKSB7CiAKICAgVGVzdEV2ZW50TGlzdGVuZXIqIHJlcGVhdGVyID0gbGlzdGVuZXJz
KCktPnJlcGVhdGVyKCk7CiAKKyAgc3RhcnRfdGltZXN0YW1wXyA9IEdldFRpbWVJbk1pbGxpcygp
OwogICByZXBlYXRlci0+T25UZXN0UHJvZ3JhbVN0YXJ0KCpwYXJlbnRfKTsKIAogICAvLyBIb3cg
bWFueSB0aW1lcyB0byByZXBlYXQgdGhlIHRlc3RzPyAgV2UgZG9uJ3Qgd2FudCB0byByZXBlYXQg
dGhlbQpAQCAtMzk5Myw3ICs1MTQ0LDkgQEAgaW50IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMo
KSB7CiAgIC8vIFJlcGVhdHMgZm9yZXZlciBpZiB0aGUgcmVwZWF0IGNvdW50IGlzIG5lZ2F0aXZl
LgogICBjb25zdCBib29sIGZvcmV2ZXIgPSByZXBlYXQgPCAwOwogICBmb3IgKGludCBpID0gMDsg
Zm9yZXZlciB8fCBpICE9IHJlcGVhdDsgaSsrKSB7Ci0gICAgQ2xlYXJSZXN1bHQoKTsKKyAgICAv
LyBXZSB3YW50IHRvIHByZXNlcnZlIGZhaWx1cmVzIGdlbmVyYXRlZCBieSBhZC1ob2MgdGVzdAor
ICAgIC8vIGFzc2VydGlvbnMgZXhlY3V0ZWQgYmVmb3JlIFJVTl9BTExfVEVTVFMoKS4KKyAgICBD
bGVhck5vbkFkSG9jVGVzdFJlc3VsdCgpOwogCiAgICAgY29uc3QgVGltZUluTWlsbGlzIHN0YXJ0
ID0gR2V0VGltZUluTWlsbGlzKCk7CiAKQEAgLTQwNTgsOCArNTIxMSwyMSBAQCBpbnQgVW5pdFRl
c3RJbXBsOjpSdW5BbGxUZXN0cygpIHsKIAogICByZXBlYXRlci0+T25UZXN0UHJvZ3JhbUVuZCgq
cGFyZW50Xyk7CiAKLSAgLy8gUmV0dXJucyAwIGlmIGFsbCB0ZXN0cyBwYXNzZWQsIG9yIDEgb3Ro
ZXIgd2lzZS4KLSAgcmV0dXJuIGZhaWxlZCA/IDEgOiAwOworICBpZiAoIWd0ZXN0X2lzX2luaXRp
YWxpemVkX2JlZm9yZV9ydW5fYWxsX3Rlc3RzKSB7CisgICAgQ29sb3JlZFByaW50ZigKKyAgICAg
ICAgQ09MT1JfUkVELAorICAgICAgICAiXG5JTVBPUlRBTlQgTk9USUNFIC0gRE8gTk9UIElHTk9S
RTpcbiIKKyAgICAgICAgIlRoaXMgdGVzdCBwcm9ncmFtIGRpZCBOT1QgY2FsbCAiIEdURVNUX0lO
SVRfR09PR0xFX1RFU1RfTkFNRV8KKyAgICAgICAgIigpIGJlZm9yZSBjYWxsaW5nIFJVTl9BTExf
VEVTVFMoKS4gVGhpcyBpcyBJTlZBTElELiBTb29uICIgR1RFU1RfTkFNRV8KKyAgICAgICAgIiB3
aWxsIHN0YXJ0IHRvIGVuZm9yY2UgdGhlIHZhbGlkIHVzYWdlLiAiCisgICAgICAgICJQbGVhc2Ug
Zml4IGl0IEFTQVAsIG9yIElUIFdJTEwgU1RBUlQgVE8gRkFJTC5cbiIpOyAgLy8gTk9MSU5UCisj
aWYgR1RFU1RfRk9SX0dPT0dMRV8KKyAgICBDb2xvcmVkUHJpbnRmKENPTE9SX1JFRCwKKyAgICAg
ICAgICAgICAgICAgICJGb3IgbW9yZSBkZXRhaWxzLCBzZWUgaHR0cDovL3dpa2kvTWFpbi9WYWxp
ZEdVbml0TWFpbi5cbiIpOworI2VuZGlmICAvLyBHVEVTVF9GT1JfR09PR0xFXworICB9CisKKyAg
cmV0dXJuICFmYWlsZWQ7CiB9CiAKIC8vIFJlYWRzIHRoZSBHVEVTVF9TSEFSRF9TVEFUVVNfRklM
RSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYW5kIGNyZWF0ZXMgdGhlIGZpbGUKQEAgLTQxMzMsNyAr
NTI5OSw3IEBAIGJvb2wgU2hvdWxkU2hhcmQoY29uc3QgY2hhciogdG90YWxfc2hhcmRzX2VudiwK
IC8vIFBhcnNlcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgdmFyIGFzIGFuIEludDMyLiBJZiBp
dCBpcyB1bnNldCwKIC8vIHJldHVybnMgZGVmYXVsdF92YWwuIElmIGl0IGlzIG5vdCBhbiBJbnQz
MiwgcHJpbnRzIGFuIGVycm9yCiAvLyBhbmQgYWJvcnRzLgotSW50MzIgSW50MzJGcm9tRW52T3JE
aWUoY29uc3QgY2hhciogY29uc3QgdmFyLCBJbnQzMiBkZWZhdWx0X3ZhbCkgeworSW50MzIgSW50
MzJGcm9tRW52T3JEaWUoY29uc3QgY2hhciogdmFyLCBJbnQzMiBkZWZhdWx0X3ZhbCkgewogICBj
b25zdCBjaGFyKiBzdHJfdmFsID0gcG9zaXg6OkdldEVudih2YXIpOwogICBpZiAoc3RyX3ZhbCA9
PSBOVUxMKSB7CiAgICAgcmV0dXJuIGRlZmF1bHRfdmFsOwpAQCAtNDE2MCw4ICs1MzI2LDggQEAg
Ym9vbCBTaG91bGRSdW5UZXN0T25TaGFyZChpbnQgdG90YWxfc2hhcmRzLCBpbnQgc2hhcmRfaW5k
ZXgsIGludCB0ZXN0X2lkKSB7CiAvLyBlYWNoIFRlc3RDYXNlIGFuZCBUZXN0SW5mbyBvYmplY3Qu
CiAvLyBJZiBzaGFyZF90ZXN0cyA9PSB0cnVlLCBmdXJ0aGVyIGZpbHRlcnMgdGVzdHMgYmFzZWQg
b24gc2hhcmRpbmcKIC8vIHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQgLSBzZWUKLS8vIGh0
dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L3dpa2kvR29vZ2xlVGVzdEFkdmFuY2Vk
R3VpZGUuCi0vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGVzdHMgdGhhdCBzaG91bGQgcnVuLgor
Ly8gaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2ds
ZXRlc3QvZG9jcy9hZHZhbmNlZC5tZAorLy8gLiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGVzdHMg
dGhhdCBzaG91bGQgcnVuLgogaW50IFVuaXRUZXN0SW1wbDo6RmlsdGVyVGVzdHMoUmVhY3Rpb25U
b1NoYXJkaW5nIHNoYXJkX3Rlc3RzKSB7CiAgIGNvbnN0IEludDMyIHRvdGFsX3NoYXJkcyA9IHNo
YXJkX3Rlc3RzID09IEhPTk9SX1NIQVJESU5HX1BST1RPQ09MID8KICAgICAgIEludDMyRnJvbUVu
dk9yRGllKGtUZXN0VG90YWxTaGFyZHMsIC0xKSA6IC0xOwpAQCAtNDE3NiwxMiArNTM0MiwxMiBA
QCBpbnQgVW5pdFRlc3RJbXBsOjpGaWx0ZXJUZXN0cyhSZWFjdGlvblRvU2hhcmRpbmcgc2hhcmRf
dGVzdHMpIHsKICAgaW50IG51bV9zZWxlY3RlZF90ZXN0cyA9IDA7CiAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdGVzdF9jYXNlc18uc2l6ZSgpOyBpKyspIHsKICAgICBUZXN0Q2FzZSogY29uc3Qg
dGVzdF9jYXNlID0gdGVzdF9jYXNlc19baV07Ci0gICAgY29uc3QgU3RyaW5nICZ0ZXN0X2Nhc2Vf
bmFtZSA9IHRlc3RfY2FzZS0+bmFtZSgpOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0X2Nh
c2VfbmFtZSA9IHRlc3RfY2FzZS0+bmFtZSgpOwogICAgIHRlc3RfY2FzZS0+c2V0X3Nob3VsZF9y
dW4oZmFsc2UpOwogCiAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCB0ZXN0X2Nhc2UtPnRlc3Rf
aW5mb19saXN0KCkuc2l6ZSgpOyBqKyspIHsKICAgICAgIFRlc3RJbmZvKiBjb25zdCB0ZXN0X2lu
Zm8gPSB0ZXN0X2Nhc2UtPnRlc3RfaW5mb19saXN0KClbal07Ci0gICAgICBjb25zdCBTdHJpbmcg
dGVzdF9uYW1lKHRlc3RfaW5mby0+bmFtZSgpKTsKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRl
c3RfbmFtZSh0ZXN0X2luZm8tPm5hbWUoKSk7CiAgICAgICAvLyBBIHRlc3QgaXMgZGlzYWJsZWQg
aWYgdGVzdCBjYXNlIG5hbWUgb3IgdGVzdCBuYW1lIG1hdGNoZXMKICAgICAgIC8vIGtEaXNhYmxl
VGVzdEZpbHRlci4KICAgICAgIGNvbnN0IGJvb2wgaXNfZGlzYWJsZWQgPQpAQCAtNDE4OSwzNCAr
NTM1NSw2MCBAQCBpbnQgVW5pdFRlc3RJbXBsOjpGaWx0ZXJUZXN0cyhSZWFjdGlvblRvU2hhcmRp
bmcgc2hhcmRfdGVzdHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtEaXNhYmxlVGVzdEZpbHRlcikgfHwKICAgICAgICAgICBpbnRlcm5hbDo6
VW5pdFRlc3RPcHRpb25zOjpNYXRjaGVzRmlsdGVyKHRlc3RfbmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtEaXNhYmxlVGVzdEZpbHRlcik7
Ci0gICAgICB0ZXN0X2luZm8tPmltcGwoKS0+c2V0X2lzX2Rpc2FibGVkKGlzX2Rpc2FibGVkKTsK
KyAgICAgIHRlc3RfaW5mby0+aXNfZGlzYWJsZWRfID0gaXNfZGlzYWJsZWQ7CiAKICAgICAgIGNv
bnN0IGJvb2wgbWF0Y2hlc19maWx0ZXIgPQogICAgICAgICAgIGludGVybmFsOjpVbml0VGVzdE9w
dGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KHRlc3RfY2FzZV9uYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbmFtZSk7Ci0gICAg
ICB0ZXN0X2luZm8tPmltcGwoKS0+c2V0X21hdGNoZXNfZmlsdGVyKG1hdGNoZXNfZmlsdGVyKTsK
KyAgICAgIHRlc3RfaW5mby0+bWF0Y2hlc19maWx0ZXJfID0gbWF0Y2hlc19maWx0ZXI7CiAKICAg
ICAgIGNvbnN0IGJvb2wgaXNfcnVubmFibGUgPQogICAgICAgICAgIChHVEVTVF9GTEFHKGFsc29f
cnVuX2Rpc2FibGVkX3Rlc3RzKSB8fCAhaXNfZGlzYWJsZWQpICYmCiAgICAgICAgICAgbWF0Y2hl
c19maWx0ZXI7CiAKLSAgICAgIGNvbnN0IGJvb2wgaXNfc2VsZWN0ZWQgPSBpc19ydW5uYWJsZSAm
JgotICAgICAgICAgIChzaGFyZF90ZXN0cyA9PSBJR05PUkVfU0hBUkRJTkdfUFJPVE9DT0wgfHwK
LSAgICAgICAgICAgU2hvdWxkUnVuVGVzdE9uU2hhcmQodG90YWxfc2hhcmRzLCBzaGFyZF9pbmRl
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3J1bm5hYmxlX3Rlc3RzKSk7
CisgICAgICBjb25zdCBib29sIGlzX2luX2Fub3RoZXJfc2hhcmQgPQorICAgICAgICAgIHNoYXJk
X3Rlc3RzICE9IElHTk9SRV9TSEFSRElOR19QUk9UT0NPTCAmJgorICAgICAgICAgICFTaG91bGRS
dW5UZXN0T25TaGFyZCh0b3RhbF9zaGFyZHMsIHNoYXJkX2luZGV4LCBudW1fcnVubmFibGVfdGVz
dHMpOworICAgICAgdGVzdF9pbmZvLT5pc19pbl9hbm90aGVyX3NoYXJkXyA9IGlzX2luX2Fub3Ro
ZXJfc2hhcmQ7CisgICAgICBjb25zdCBib29sIGlzX3NlbGVjdGVkID0gaXNfcnVubmFibGUgJiYg
IWlzX2luX2Fub3RoZXJfc2hhcmQ7CiAKICAgICAgIG51bV9ydW5uYWJsZV90ZXN0cyArPSBpc19y
dW5uYWJsZTsKICAgICAgIG51bV9zZWxlY3RlZF90ZXN0cyArPSBpc19zZWxlY3RlZDsKIAotICAg
ICAgdGVzdF9pbmZvLT5pbXBsKCktPnNldF9zaG91bGRfcnVuKGlzX3NlbGVjdGVkKTsKKyAgICAg
IHRlc3RfaW5mby0+c2hvdWxkX3J1bl8gPSBpc19zZWxlY3RlZDsKICAgICAgIHRlc3RfY2FzZS0+
c2V0X3Nob3VsZF9ydW4odGVzdF9jYXNlLT5zaG91bGRfcnVuKCkgfHwgaXNfc2VsZWN0ZWQpOwog
ICAgIH0KICAgfQogICByZXR1cm4gbnVtX3NlbGVjdGVkX3Rlc3RzOwogfQogCisvLyBQcmludHMg
dGhlIGdpdmVuIEMtc3RyaW5nIG9uIGEgc2luZ2xlIGxpbmUgYnkgcmVwbGFjaW5nIGFsbCAnXG4n
CisvLyBjaGFyYWN0ZXJzIHdpdGggc3RyaW5nICJcXG4iLiAgSWYgdGhlIG91dHB1dCB0YWtlcyBt
b3JlIHRoYW4KKy8vIG1heF9sZW5ndGggY2hhcmFjdGVycywgb25seSBwcmludHMgdGhlIGZpcnN0
IG1heF9sZW5ndGggY2hhcmFjdGVycworLy8gYW5kICIuLi4iLgorc3RhdGljIHZvaWQgUHJpbnRP
bk9uZUxpbmUoY29uc3QgY2hhciogc3RyLCBpbnQgbWF4X2xlbmd0aCkgeworICBpZiAoc3RyICE9
IE5VTEwpIHsKKyAgICBmb3IgKGludCBpID0gMDsgKnN0ciAhPSAnXDAnOyArK3N0cikgeworICAg
ICAgaWYgKGkgPj0gbWF4X2xlbmd0aCkgeworICAgICAgICBwcmludGYoIi4uLiIpOworICAgICAg
ICBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmICgqc3RyID09ICdcbicpIHsKKyAgICAgICAgcHJp
bnRmKCJcXG4iKTsKKyAgICAgICAgaSArPSAyOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcHJp
bnRmKCIlYyIsICpzdHIpOworICAgICAgICArK2k7CisgICAgICB9CisgICAgfQorICB9Cit9CisK
IC8vIFByaW50cyB0aGUgbmFtZXMgb2YgdGhlIHRlc3RzIG1hdGNoaW5nIHRoZSB1c2VyLXNwZWNp
ZmllZCBmaWx0ZXIgZmxhZy4KIHZvaWQgVW5pdFRlc3RJbXBsOjpMaXN0VGVzdHNNYXRjaGluZ0Zp
bHRlcigpIHsKKyAgLy8gUHJpbnQgYXQgbW9zdCB0aGlzIG1hbnkgY2hhcmFjdGVycyBmb3IgZWFj
aCB0eXBlL3ZhbHVlIHBhcmFtZXRlci4KKyAgY29uc3QgaW50IGtNYXhQYXJhbUxlbmd0aCA9IDI1
MDsKKwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXNfLnNpemUoKTsgaSsrKSB7
CiAgICAgY29uc3QgVGVzdENhc2UqIGNvbnN0IHRlc3RfY2FzZSA9IHRlc3RfY2FzZXNfW2ldOwog
ICAgIGJvb2wgcHJpbnRlZF90ZXN0X2Nhc2VfbmFtZSA9IGZhbHNlOwpAQCAtNDIyNCwxNiArNTQx
Niw0NyBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6TGlzdFRlc3RzTWF0Y2hpbmdGaWx0ZXIoKSB7CiAg
ICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCB0ZXN0X2Nhc2UtPnRlc3RfaW5mb19saXN0KCkuc2l6
ZSgpOyBqKyspIHsKICAgICAgIGNvbnN0IFRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQogICAg
ICAgICAgIHRlc3RfY2FzZS0+dGVzdF9pbmZvX2xpc3QoKVtqXTsKLSAgICAgIGlmICh0ZXN0X2lu
Zm8tPm1hdGNoZXNfZmlsdGVyKCkpIHsKKyAgICAgIGlmICh0ZXN0X2luZm8tPm1hdGNoZXNfZmls
dGVyXykgewogICAgICAgICBpZiAoIXByaW50ZWRfdGVzdF9jYXNlX25hbWUpIHsKICAgICAgICAg
ICBwcmludGVkX3Rlc3RfY2FzZV9uYW1lID0gdHJ1ZTsKLSAgICAgICAgICBwcmludGYoIiVzLlxu
IiwgdGVzdF9jYXNlLT5uYW1lKCkpOworICAgICAgICAgIHByaW50ZigiJXMuIiwgdGVzdF9jYXNl
LT5uYW1lKCkpOworICAgICAgICAgIGlmICh0ZXN0X2Nhc2UtPnR5cGVfcGFyYW0oKSAhPSBOVUxM
KSB7CisgICAgICAgICAgICBwcmludGYoIiAgIyAlcyA9ICIsIGtUeXBlUGFyYW1MYWJlbCk7Cisg
ICAgICAgICAgICAvLyBXZSBwcmludCB0aGUgdHlwZSBwYXJhbWV0ZXIgb24gYSBzaW5nbGUgbGlu
ZSB0byBtYWtlCisgICAgICAgICAgICAvLyB0aGUgb3V0cHV0IGVhc3kgdG8gcGFyc2UgYnkgYSBw
cm9ncmFtLgorICAgICAgICAgICAgUHJpbnRPbk9uZUxpbmUodGVzdF9jYXNlLT50eXBlX3BhcmFt
KCksIGtNYXhQYXJhbUxlbmd0aCk7CisgICAgICAgICAgfQorICAgICAgICAgIHByaW50ZigiXG4i
KTsKKyAgICAgICAgfQorICAgICAgICBwcmludGYoIiAgJXMiLCB0ZXN0X2luZm8tPm5hbWUoKSk7
CisgICAgICAgIGlmICh0ZXN0X2luZm8tPnZhbHVlX3BhcmFtKCkgIT0gTlVMTCkgeworICAgICAg
ICAgIHByaW50ZigiICAjICVzID0gIiwga1ZhbHVlUGFyYW1MYWJlbCk7CisgICAgICAgICAgLy8g
V2UgcHJpbnQgdGhlIHZhbHVlIHBhcmFtZXRlciBvbiBhIHNpbmdsZSBsaW5lIHRvIG1ha2UgdGhl
CisgICAgICAgICAgLy8gb3V0cHV0IGVhc3kgdG8gcGFyc2UgYnkgYSBwcm9ncmFtLgorICAgICAg
ICAgIFByaW50T25PbmVMaW5lKHRlc3RfaW5mby0+dmFsdWVfcGFyYW0oKSwga01heFBhcmFtTGVu
Z3RoKTsKICAgICAgICAgfQotICAgICAgICBwcmludGYoIiAgJXNcbiIsIHRlc3RfaW5mby0+bmFt
ZSgpKTsKKyAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgICAgfQogICAgIH0KICAgfQogICBmZmx1
c2goc3Rkb3V0KTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9mb3JtYXQgPSBVbml0VGVz
dE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdCgpOworICBpZiAob3V0cHV0X2Zvcm1hdCA9PSAieG1s
IiB8fCBvdXRwdXRfZm9ybWF0ID09ICJqc29uIikgeworICAgIEZJTEUqIGZpbGVvdXQgPSBPcGVu
RmlsZUZvcldyaXRpbmcoCisgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRo
VG9PdXRwdXRGaWxlKCkuY19zdHIoKSk7CisgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOwor
ICAgIGlmIChvdXRwdXRfZm9ybWF0ID09ICJ4bWwiKSB7CisgICAgICBYbWxVbml0VGVzdFJlc3Vs
dFByaW50ZXIoCisgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091
dHB1dEZpbGUoKS5jX3N0cigpKQorICAgICAgICAgIC5QcmludFhtbFRlc3RzTGlzdCgmc3RyZWFt
LCB0ZXN0X2Nhc2VzXyk7CisgICAgfSBlbHNlIGlmIChvdXRwdXRfZm9ybWF0ID09ICJqc29uIikg
eworICAgICAgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcigKKyAgICAgICAgICBVbml0VGVzdE9w
dGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpCisgICAgICAgICAg
LlByaW50SnNvblRlc3RMaXN0KCZzdHJlYW0sIHRlc3RfY2FzZXNfKTsKKyAgICB9CisgICAgZnBy
aW50ZihmaWxlb3V0LCAiJXMiLCBTdHJpbmdTdHJlYW1Ub1N0cmluZygmc3RyZWFtKS5jX3N0cigp
KTsKKyAgICBmY2xvc2UoZmlsZW91dCk7CisgIH0KIH0KIAogLy8gU2V0cyB0aGUgT1Mgc3RhY2sg
dHJhY2UgZ2V0dGVyLgpAQCAtNDI1NCwxNyArNTQ3NywyNSBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6
c2V0X29zX3N0YWNrX3RyYWNlX2dldHRlcigKIC8vIGdldHRlciwgYW5kIHJldHVybnMgaXQuCiBP
c1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UqIFVuaXRUZXN0SW1wbDo6b3Nfc3RhY2tfdHJhY2Vf
Z2V0dGVyKCkgewogICBpZiAob3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXyA9PSBOVUxMKSB7CisjaWZk
ZWYgR1RFU1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVSXworICAgIG9zX3N0YWNrX3RyYWNlX2dldHRl
cl8gPSBuZXcgR1RFU1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVSXzsKKyNlbHNlCiAgICAgb3Nfc3Rh
Y2tfdHJhY2VfZ2V0dGVyXyA9IG5ldyBPc1N0YWNrVHJhY2VHZXR0ZXI7CisjZW5kaWYgIC8vIEdU
RVNUX09TX1NUQUNLX1RSQUNFX0dFVFRFUl8KICAgfQogCiAgIHJldHVybiBvc19zdGFja190cmFj
ZV9nZXR0ZXJfOwogfQogCi0vLyBSZXR1cm5zIHRoZSBUZXN0UmVzdWx0IGZvciB0aGUgdGVzdCB0
aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcsIG9yCi0vLyB0aGUgVGVzdFJlc3VsdCBmb3IgdGhlIGFk
IGhvYyB0ZXN0IGlmIG5vIHRlc3QgaXMgcnVubmluZy4KKy8vIFJldHVybnMgdGhlIG1vc3Qgc3Bl
Y2lmaWMgVGVzdFJlc3VsdCBjdXJyZW50bHkgcnVubmluZy4KIFRlc3RSZXN1bHQqIFVuaXRUZXN0
SW1wbDo6Y3VycmVudF90ZXN0X3Jlc3VsdCgpIHsKLSAgcmV0dXJuIGN1cnJlbnRfdGVzdF9pbmZv
XyA/Ci0gICAgY3VycmVudF90ZXN0X2luZm9fLT5pbXBsKCktPnJlc3VsdCgpIDogJmFkX2hvY190
ZXN0X3Jlc3VsdF87CisgIGlmIChjdXJyZW50X3Rlc3RfaW5mb18gIT0gTlVMTCkgeworICAgIHJl
dHVybiAmY3VycmVudF90ZXN0X2luZm9fLT5yZXN1bHRfOworICB9CisgIGlmIChjdXJyZW50X3Rl
c3RfY2FzZV8gIT0gTlVMTCkgeworICAgIHJldHVybiAmY3VycmVudF90ZXN0X2Nhc2VfLT5hZF9o
b2NfdGVzdF9yZXN1bHRfOworICB9CisgIHJldHVybiAmYWRfaG9jX3Rlc3RfcmVzdWx0XzsKIH0K
IAogLy8gU2h1ZmZsZXMgYWxsIHRlc3QgY2FzZXMsIGFuZCB0aGUgdGVzdHMgd2l0aGluIGVhY2gg
dGVzdCBjYXNlLApAQCAtNDI5MywzMyArNTUyNCw3IEBAIHZvaWQgVW5pdFRlc3RJbXBsOjpVbnNo
dWZmbGVUZXN0cygpIHsKICAgfQogfQogCi0vLyBUZXN0SW5mb0ltcGwgY29uc3RydWN0b3IuIFRo
ZSBuZXcgaW5zdGFuY2UgYXNzdW1lcyBvd25lcnNoaXAgb2YgdGhlIHRlc3QKLS8vIGZhY3Rvcnkg
b2JqZWN0LgotVGVzdEluZm9JbXBsOjpUZXN0SW5mb0ltcGwoVGVzdEluZm8qIHBhcmVudCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfdGVzdF9jYXNlX25hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX25hbWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX3Rlc3RfY2FzZV9jb21tZW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV9jb21tZW50LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVHlwZUlkIGFfZml4dHVyZV9jbGFzc19pZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludGVybmFsOjpUZXN0RmFjdG9yeUJhc2UqIGZhY3RvcnkpIDoKLSAgICBw
YXJlbnRfKHBhcmVudCksCi0gICAgdGVzdF9jYXNlX25hbWVfKFN0cmluZyhhX3Rlc3RfY2FzZV9u
YW1lKSksCi0gICAgbmFtZV8oU3RyaW5nKGFfbmFtZSkpLAotICAgIHRlc3RfY2FzZV9jb21tZW50
XyhTdHJpbmcoYV90ZXN0X2Nhc2VfY29tbWVudCkpLAotICAgIGNvbW1lbnRfKFN0cmluZyhhX2Nv
bW1lbnQpKSwKLSAgICBmaXh0dXJlX2NsYXNzX2lkXyhhX2ZpeHR1cmVfY2xhc3NfaWQpLAotICAg
IHNob3VsZF9ydW5fKGZhbHNlKSwKLSAgICBpc19kaXNhYmxlZF8oZmFsc2UpLAotICAgIG1hdGNo
ZXNfZmlsdGVyXyhmYWxzZSksCi0gICAgZmFjdG9yeV8oZmFjdG9yeSkgewotfQotCi0vLyBUZXN0
SW5mb0ltcGwgZGVzdHJ1Y3Rvci4KLVRlc3RJbmZvSW1wbDo6flRlc3RJbmZvSW1wbCgpIHsKLSAg
ZGVsZXRlIGZhY3RvcnlfOwotfQotCi0vLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRy
YWNlIGFzIGEgU3RyaW5nLgorLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBh
cyBhbiBzdGQ6OnN0cmluZy4KIC8vCiAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhY2sgZnJh
bWVzIHRvIGJlIGluY2x1ZGVkIGlzIHNwZWNpZmllZCBieQogLy8gdGhlIGd0ZXN0X3N0YWNrX3Ry
YWNlX2RlcHRoIGZsYWcuICBUaGUgc2tpcF9jb3VudCBwYXJhbWV0ZXIKQEAgLTQzMjksMTUgKzU1
MzQsMTUgQEAgVGVzdEluZm9JbXBsOjp+VGVzdEluZm9JbXBsKCkgewogLy8gRm9yIGV4YW1wbGUs
IGlmIEZvbygpIGNhbGxzIEJhcigpLCB3aGljaCBpbiB0dXJuIGNhbGxzCiAvLyBHZXRDdXJyZW50
T3NTdGFja1RyYWNlRXhjZXB0VG9wKC4uLiwgMSksIEZvbygpIHdpbGwgYmUgaW5jbHVkZWQgaW4K
IC8vIHRoZSB0cmFjZSBidXQgQmFyKCkgYW5kIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRU
b3AoKSB3b24ndC4KLVN0cmluZyBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKFVuaXRU
ZXN0KiAvKnVuaXRfdGVzdCovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHNraXBfY291bnQpIHsKK3N0ZDo6c3RyaW5nIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VF
eGNlcHRUb3AoVW5pdFRlc3QqIC8qdW5pdF90ZXN0Ki8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBza2lwX2NvdW50KSB7CiAgIC8vIFdlIHBhc3Mgc2tp
cF9jb3VudCArIDEgdG8gc2tpcCB0aGlzIHdyYXBwZXIgZnVuY3Rpb24gaW4gYWRkaXRpb24KICAg
Ly8gdG8gd2hhdCB0aGUgdXNlciByZWFsbHkgd2FudHMgdG8gc2tpcC4KICAgcmV0dXJuIEdldFVu
aXRUZXN0SW1wbCgpLT5DdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKHNraXBfY291bnQgKyAx
KTsKIH0KIAotLy8gVXNlZCBieSB0aGUgR1RFU1RfSElERV9VTlJFQUNIQUJMRV9DT0RFXyBtYWNy
byB0byBzdXBwcmVzcyB1bnJlYWNoYWJsZQotLy8gY29kZSB3YXJuaW5ncy4KKy8vIFVzZWQgYnkg
dGhlIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18gbWFjcm8g
dG8KKy8vIHN1cHByZXNzIHVucmVhY2hhYmxlIGNvZGUgd2FybmluZ3MuCiBuYW1lc3BhY2Ugewog
Y2xhc3MgQ2xhc3NVbmlxdWVUb0Fsd2F5c1RydWUge307CiB9CkBAIC00MzcxLDE0ICs1NTc2LDEz
IEBAIGJvb2wgU2tpcFByZWZpeChjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IGNoYXIqKiBwc3Ry
KSB7CiAvLyBwYXJ0IGNhbiBiZSBvbWl0dGVkLgogLy8KIC8vIFJldHVybnMgdGhlIHZhbHVlIG9m
IHRoZSBmbGFnLCBvciBOVUxMIGlmIHRoZSBwYXJzaW5nIGZhaWxlZC4KLWNvbnN0IGNoYXIqIFBh
cnNlRmxhZ1ZhbHVlKGNvbnN0IGNoYXIqIHN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGZsYWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlZl9v
cHRpb25hbCkgeworc3RhdGljIGNvbnN0IGNoYXIqIFBhcnNlRmxhZ1ZhbHVlKGNvbnN0IGNoYXIq
IHN0ciwgY29uc3QgY2hhciogZmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGRlZl9vcHRpb25hbCkgewogICAvLyBzdHIgYW5kIGZsYWcgbXVzdCBub3QgYmUgTlVM
TC4KICAgaWYgKHN0ciA9PSBOVUxMIHx8IGZsYWcgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CiAKICAg
Ly8gVGhlIGZsYWcgbXVzdCBzdGFydCB3aXRoICItLSIgZm9sbG93ZWQgYnkgR1RFU1RfRkxBR19Q
UkVGSVhfLgotICBjb25zdCBTdHJpbmcgZmxhZ19zdHIgPSBTdHJpbmc6OkZvcm1hdCgiLS0lcyVz
IiwgR1RFU1RfRkxBR19QUkVGSVhfLCBmbGFnKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmxhZ19z
dHIgPSBzdGQ6OnN0cmluZygiLS0iKSArIEdURVNUX0ZMQUdfUFJFRklYXyArIGZsYWc7CiAgIGNv
bnN0IHNpemVfdCBmbGFnX2xlbiA9IGZsYWdfc3RyLmxlbmd0aCgpOwogICBpZiAoc3RybmNtcChz
dHIsIGZsYWdfc3RyLmNfc3RyKCksIGZsYWdfbGVuKSAhPSAwKSByZXR1cm4gTlVMTDsKIApAQCAt
NDQwOSw3ICs1NjEzLDcgQEAgY29uc3QgY2hhciogUGFyc2VGbGFnVmFsdWUoY29uc3QgY2hhciog
c3RyLAogLy8KIC8vIE9uIHN1Y2Nlc3MsIHN0b3JlcyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcgaW4g
KnZhbHVlLCBhbmQgcmV0dXJucwogLy8gdHJ1ZS4gIE9uIGZhaWx1cmUsIHJldHVybnMgZmFsc2Ug
d2l0aG91dCBjaGFuZ2luZyAqdmFsdWUuCi1ib29sIFBhcnNlQm9vbEZsYWcoY29uc3QgY2hhciog
c3RyLCBjb25zdCBjaGFyKiBmbGFnLCBib29sKiB2YWx1ZSkgeworc3RhdGljIGJvb2wgUGFyc2VC
b29sRmxhZyhjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsIGJvb2wqIHZhbHVlKSB7
CiAgIC8vIEdldHMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIGFzIGEgc3RyaW5nLgogICBjb25zdCBj
aGFyKiBjb25zdCB2YWx1ZV9zdHIgPSBQYXJzZUZsYWdWYWx1ZShzdHIsIGZsYWcsIHRydWUpOwog
CkBAIC00NDQzLDcgKzU2NDcsOCBAQCBib29sIFBhcnNlSW50MzJGbGFnKGNvbnN0IGNoYXIqIHN0
ciwgY29uc3QgY2hhciogZmxhZywgSW50MzIqIHZhbHVlKSB7CiAvLwogLy8gT24gc3VjY2Vzcywg
c3RvcmVzIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyBpbiAqdmFsdWUsIGFuZCByZXR1cm5zCiAvLyB0
cnVlLiAgT24gZmFpbHVyZSwgcmV0dXJucyBmYWxzZSB3aXRob3V0IGNoYW5naW5nICp2YWx1ZS4K
LWJvb2wgUGFyc2VTdHJpbmdGbGFnKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgY2hhciogZmxhZywg
U3RyaW5nKiB2YWx1ZSkgewordGVtcGxhdGUgPHR5cGVuYW1lIFN0cmluZz4KK3N0YXRpYyBib29s
IFBhcnNlU3RyaW5nRmxhZyhjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsIFN0cmlu
ZyogdmFsdWUpIHsKICAgLy8gR2V0cyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcgYXMgYSBzdHJpbmcu
CiAgIGNvbnN0IGNoYXIqIGNvbnN0IHZhbHVlX3N0ciA9IFBhcnNlRmxhZ1ZhbHVlKHN0ciwgZmxh
ZywgZmFsc2UpOwogCkBAIC00NDc5LDcgKzU2ODQsNyBAQCBzdGF0aWMgYm9vbCBIYXNHb29nbGVU
ZXN0RmxhZ1ByZWZpeChjb25zdCBjaGFyKiBzdHIpIHsKIC8vICAgQFkgICAgY2hhbmdlcyB0aGUg
Y29sb3IgdG8geWVsbG93LgogLy8gICBARCAgICBjaGFuZ2VzIHRvIHRoZSBkZWZhdWx0IHRlcm1p
bmFsIHRleHQgY29sb3IuCiAvLwotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IFdyaXRlIHRlc3Rz
IGZvciB0aGlzIG9uY2Ugd2UgYWRkIHN0ZG91dAorLy8gRklYTUU6IFdyaXRlIHRlc3RzIGZvciB0
aGlzIG9uY2Ugd2UgYWRkIHN0ZG91dAogLy8gY2FwdHVyaW5nIHRvIEdvb2dsZSBUZXN0Lgogc3Rh
dGljIHZvaWQgUHJpbnRDb2xvckVuY29kZWQoY29uc3QgY2hhciogc3RyKSB7CiAgIEdUZXN0Q29s
b3IgY29sb3IgPSBDT0xPUl9ERUZBVUxUOyAgLy8gVGhlIGN1cnJlbnQgY29sb3IuCkBAIC00NDk1
LDcgKzU3MDAsNyBAQCBzdGF0aWMgdm9pZCBQcmludENvbG9yRW5jb2RlZChjb25zdCBjaGFyKiBz
dHIpIHsKICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDb2xvcmVkUHJpbnRmKGNvbG9yLCAi
JXMiLCBTdHJpbmcoc3RyLCBwIC0gc3RyKS5jX3N0cigpKTsKKyAgICBDb2xvcmVkUHJpbnRmKGNv
bG9yLCAiJXMiLCBzdGQ6OnN0cmluZyhzdHIsIHApLmNfc3RyKCkpOwogCiAgICAgY29uc3QgY2hh
ciBjaCA9IHBbMV07CiAgICAgc3RyID0gcCArIDI7CkBAIC00NTQ1LDI0ICs1NzUwLDI4IEBAIHN0
YXRpYyBjb25zdCBjaGFyIGtDb2xvckVuY29kZWRIZWxwTWVzc2FnZVtdID0KICIgICAgICBFbmFi
bGUvZGlzYWJsZSBjb2xvcmVkIG91dHB1dC4gVGhlIGRlZmF1bHQgaXMgQEdhdXRvQEQuXG4iCiAi
ICAtQEctIiBHVEVTVF9GTEFHX1BSRUZJWF8gInByaW50X3RpbWU9MEBEXG4iCiAiICAgICAgRG9u
J3QgcHJpbnQgdGhlIGVsYXBzZWQgdGltZSBvZiBlYWNoIHRlc3QuXG4iCi0iICBARy0tIiBHVEVT
VF9GTEFHX1BSRUZJWF8gIm91dHB1dD14bWxAWVtARzpAWURJUkVDVE9SWV9QQVRIQEciCisiICBA
Ry0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gIm91dHB1dD1AWShAR2pzb25AWXxAR3htbEBZKVtARzpA
WURJUkVDVE9SWV9QQVRIQEciCiAgICAgR1RFU1RfUEFUSF9TRVBfICJAWXxARzpAWUZJTEVfUEFU
SF1ARFxuIgotIiAgICAgIEdlbmVyYXRlIGFuIFhNTCByZXBvcnQgaW4gdGhlIGdpdmVuIGRpcmVj
dG9yeSBvciB3aXRoIHRoZSBnaXZlbiBmaWxlXG4iCi0iICAgICAgbmFtZS4gQFlGSUxFX1BBVEhA
RCBkZWZhdWx0cyB0byBAR3Rlc3RfZGV0YWlscy54bWxARC5cbiIKKyIgICAgICBHZW5lcmF0ZSBh
IEpTT04gb3IgWE1MIHJlcG9ydCBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5IG9yIHdpdGggdGhlIGdp
dmVuXG4iCisiICAgICAgZmlsZSBuYW1lLiBAWUZJTEVfUEFUSEBEIGRlZmF1bHRzIHRvIEBHdGVz
dF9kZXRhaWxzLnhtbEBELlxuIgorIyBpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisiICBA
Ry0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gInN0cmVhbV9yZXN1bHRfdG89QFlIT1NUQEc6QFlQT1JU
QERcbiIKKyIgICAgICBTdHJlYW0gdGVzdCByZXN1bHRzIHRvIHRoZSBnaXZlbiBzZXJ2ZXIuXG4i
CisjIGVuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCiAiXG4iCiAiQXNzZXJ0aW9u
IEJlaGF2aW9yOlxuIgotI2lmIEdURVNUX0hBU19ERUFUSF9URVNUICYmICFHVEVTVF9PU19XSU5E
T1dTCisjIGlmIEdURVNUX0hBU19ERUFUSF9URVNUICYmICFHVEVTVF9PU19XSU5ET1dTCiAiICBA
Ry0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImRlYXRoX3Rlc3Rfc3R5bGU9QFkoQEdmYXN0QFl8QEd0
aHJlYWRzYWZlQFkpQERcbiIKICIgICAgICBTZXQgdGhlIGRlZmF1bHQgZGVhdGggdGVzdCBzdHls
ZS5cbiIKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QgJiYgIUdURVNUX09TX1dJTkRP
V1MKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUICYmICFHVEVTVF9PU19XSU5ET1dT
CiAiICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImJyZWFrX29uX2ZhaWx1cmVARFxuIgogIiAg
ICAgIFR1cm4gYXNzZXJ0aW9uIGZhaWx1cmVzIGludG8gZGVidWdnZXIgYnJlYWstcG9pbnRzLlxu
IgogIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJ0aHJvd19vbl9mYWlsdXJlQERcbiIKLSIg
ICAgICBUdXJuIGFzc2VydGlvbiBmYWlsdXJlcyBpbnRvIEMrKyBleGNlcHRpb25zLlxuIgotI2lm
IEdURVNUX09TX1dJTkRPV1MKLSIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiY2F0Y2hfZXhj
ZXB0aW9uc0BEXG4iCi0iICAgICAgU3VwcHJlc3MgcG9wLXVwcyBjYXVzZWQgYnkgZXhjZXB0aW9u
cy5cbiIKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIiAgICAgIFR1cm4gYXNzZXJ0aW9u
IGZhaWx1cmVzIGludG8gQysrIGV4Y2VwdGlvbnMgZm9yIHVzZSBieSBhbiBleHRlcm5hbFxuIgor
IiAgICAgIHRlc3QgZnJhbWV3b3JrLlxuIgorIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJj
YXRjaF9leGNlcHRpb25zPTBARFxuIgorIiAgICAgIERvIG5vdCByZXBvcnQgZXhjZXB0aW9ucyBh
cyB0ZXN0IGZhaWx1cmVzLiBJbnN0ZWFkLCBhbGxvdyB0aGVtXG4iCisiICAgICAgdG8gY3Jhc2gg
dGhlIHByb2dyYW0gb3IgdGhyb3cgYSBwb3AtdXAgKG9uIFdpbmRvd3MpLlxuIgogIlxuIgogIkV4
Y2VwdCBmb3IgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJsaXN0X3Rlc3RzQEQsIHlvdSBjYW4g
YWx0ZXJuYXRpdmVseSBzZXQgIgogICAgICJ0aGUgY29ycmVzcG9uZGluZ1xuIgpAQCAtNDU3Niw0
NSArNTc4NSw4NyBAQCBzdGF0aWMgY29uc3QgY2hhciBrQ29sb3JFbmNvZGVkSGVscE1lc3NhZ2Vb
XSA9CiAiKG5vdCBvbmUgaW4geW91ciBvd24gY29kZSBvciB0ZXN0cyksIHBsZWFzZSByZXBvcnQg
aXQgdG9cbiIKICJARzwiIEdURVNUX0RFVl9FTUFJTF8gIj5ARC5cbiI7CiAKK3N0YXRpYyBib29s
IFBhcnNlR29vZ2xlVGVzdEZsYWcoY29uc3QgY2hhciogY29uc3QgYXJnKSB7CisgIHJldHVybiBQ
YXJzZUJvb2xGbGFnKGFyZywga0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgJkdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpKSB8fAorICAg
ICAgUGFyc2VCb29sRmxhZyhhcmcsIGtCcmVha09uRmFpbHVyZUZsYWcsCisgICAgICAgICAgICAg
ICAgICAgICZHVEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpKSB8fAorICAgICAgUGFyc2VCb29s
RmxhZyhhcmcsIGtDYXRjaEV4Y2VwdGlvbnNGbGFnLAorICAgICAgICAgICAgICAgICAgICAmR1RF
U1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSkgfHwKKyAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcs
IGtDb2xvckZsYWcsICZHVEVTVF9GTEFHKGNvbG9yKSkgfHwKKyAgICAgIFBhcnNlU3RyaW5nRmxh
ZyhhcmcsIGtEZWF0aFRlc3RTdHlsZUZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgJkdURVNU
X0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkpIHx8CisgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0Rl
YXRoVGVzdFVzZUZvcmssCisgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGRlYXRoX3Rl
c3RfdXNlX2ZvcmspKSB8fAorICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga0ZpbHRlckZsYWcs
ICZHVEVTVF9GTEFHKGZpbHRlcikpIHx8CisgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrSW50
ZXJuYWxSdW5EZWF0aFRlc3RGbGFnLAorICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFH
KGludGVybmFsX3J1bl9kZWF0aF90ZXN0KSkgfHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBr
TGlzdFRlc3RzRmxhZywgJkdURVNUX0ZMQUcobGlzdF90ZXN0cykpIHx8CisgICAgICBQYXJzZVN0
cmluZ0ZsYWcoYXJnLCBrT3V0cHV0RmxhZywgJkdURVNUX0ZMQUcob3V0cHV0KSkgfHwKKyAgICAg
IFBhcnNlQm9vbEZsYWcoYXJnLCBrUHJpbnRUaW1lRmxhZywgJkdURVNUX0ZMQUcocHJpbnRfdGlt
ZSkpIHx8CisgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga1ByaW50VVRGOEZsYWcsICZHVEVTVF9G
TEFHKHByaW50X3V0ZjgpKSB8fAorICAgICAgUGFyc2VJbnQzMkZsYWcoYXJnLCBrUmFuZG9tU2Vl
ZEZsYWcsICZHVEVTVF9GTEFHKHJhbmRvbV9zZWVkKSkgfHwKKyAgICAgIFBhcnNlSW50MzJGbGFn
KGFyZywga1JlcGVhdEZsYWcsICZHVEVTVF9GTEFHKHJlcGVhdCkpIHx8CisgICAgICBQYXJzZUJv
b2xGbGFnKGFyZywga1NodWZmbGVGbGFnLCAmR1RFU1RfRkxBRyhzaHVmZmxlKSkgfHwKKyAgICAg
IFBhcnNlSW50MzJGbGFnKGFyZywga1N0YWNrVHJhY2VEZXB0aEZsYWcsCisgICAgICAgICAgICAg
ICAgICAgICAmR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkpIHx8CisgICAgICBQYXJzZVN0
cmluZ0ZsYWcoYXJnLCBrU3RyZWFtUmVzdWx0VG9GbGFnLAorICAgICAgICAgICAgICAgICAgICAg
ICZHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pKSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhh
cmcsIGtUaHJvd09uRmFpbHVyZUZsYWcsCisgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFH
KHRocm93X29uX2ZhaWx1cmUpKTsKK30KKworI2lmIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxB
R18KK3N0YXRpYyB2b2lkIExvYWRGbGFnc0Zyb21GaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRo
KSB7CisgIEZJTEUqIGZsYWdmaWxlID0gcG9zaXg6OkZPcGVuKHBhdGguY19zdHIoKSwgInIiKTsK
KyAgaWYgKCFmbGFnZmlsZSkgeworICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICJVbmFibGUgdG8g
b3BlbiBmaWxlIFwiIiA8PCBHVEVTVF9GTEFHKGZsYWdmaWxlKQorICAgICAgICAgICAgICAgICAg
ICAgIDw8ICJcIiI7CisgIH0KKyAgc3RkOjpzdHJpbmcgY29udGVudHMoUmVhZEVudGlyZUZpbGUo
ZmxhZ2ZpbGUpKTsKKyAgcG9zaXg6OkZDbG9zZShmbGFnZmlsZSk7CisgIHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiBsaW5lczsKKyAgU3BsaXRTdHJpbmcoY29udGVudHMsICdcbicsICZsaW5lcyk7
CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGluZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBpZiAo
bGluZXNbaV0uZW1wdHkoKSkKKyAgICAgIGNvbnRpbnVlOworICAgIGlmICghUGFyc2VHb29nbGVU
ZXN0RmxhZyhsaW5lc1tpXS5jX3N0cigpKSkKKyAgICAgIGdfaGVscF9mbGFnID0gdHJ1ZTsKKyAg
fQorfQorI2VuZGlmICAvLyBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCisKIC8vIFBhcnNl
cyB0aGUgY29tbWFuZCBsaW5lIGZvciBHb29nbGUgVGVzdCBmbGFncywgd2l0aG91dCBpbml0aWFs
aXppbmcKIC8vIG90aGVyIHBhcnRzIG9mIEdvb2dsZSBUZXN0LiAgVGhlIHR5cGUgcGFyYW1ldGVy
IENoYXJUeXBlIGNhbiBiZQogLy8gaW5zdGFudGlhdGVkIHRvIGVpdGhlciBjaGFyIG9yIHdjaGFy
X3QuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiB2b2lkIFBhcnNlR29vZ2xlVGVzdEZs
YWdzT25seUltcGwoaW50KiBhcmdjLCBDaGFyVHlwZSoqIGFyZ3YpIHsKICAgZm9yIChpbnQgaSA9
IDE7IGkgPCAqYXJnYzsgaSsrKSB7Ci0gICAgY29uc3QgU3RyaW5nIGFyZ19zdHJpbmcgPSBTdHJl
YW1hYmxlVG9TdHJpbmcoYXJndltpXSk7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgYXJnX3N0cmlu
ZyA9IFN0cmVhbWFibGVUb1N0cmluZyhhcmd2W2ldKTsKICAgICBjb25zdCBjaGFyKiBjb25zdCBh
cmcgPSBhcmdfc3RyaW5nLmNfc3RyKCk7CiAKICAgICB1c2luZyBpbnRlcm5hbDo6UGFyc2VCb29s
RmxhZzsKICAgICB1c2luZyBpbnRlcm5hbDo6UGFyc2VJbnQzMkZsYWc7CiAgICAgdXNpbmcgaW50
ZXJuYWw6OlBhcnNlU3RyaW5nRmxhZzsKIAotICAgIC8vIERvIHdlIHNlZSBhIEdvb2dsZSBUZXN0
IGZsYWc/Ci0gICAgaWYgKFBhcnNlQm9vbEZsYWcoYXJnLCBrQWxzb1J1bkRpc2FibGVkVGVzdHNG
bGFnLAotICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVk
X3Rlc3RzKSkgfHwKLSAgICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtCcmVha09uRmFpbHVyZUZs
YWcsCi0gICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSkp
IHx8Ci0gICAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrQ2F0Y2hFeGNlcHRpb25zRmxhZywKLSAg
ICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSkgfHwKLSAg
ICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga0NvbG9yRmxhZywgJkdURVNUX0ZMQUcoY29sb3Ip
KSB8fAotICAgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrRGVhdGhUZXN0U3R5bGVGbGFnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkpIHx8
Ci0gICAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrRGVhdGhUZXN0VXNlRm9yaywKLSAgICAgICAg
ICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKSkgfHwKLSAgICAg
ICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga0ZpbHRlckZsYWcsICZHVEVTVF9GTEFHKGZpbHRlcikp
IHx8Ci0gICAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtJbnRlcm5hbFJ1bkRlYXRoVGVzdEZs
YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVh
dGhfdGVzdCkpIHx8Ci0gICAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrTGlzdFRlc3RzRmxhZywg
JkdURVNUX0ZMQUcobGlzdF90ZXN0cykpIHx8Ci0gICAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcs
IGtPdXRwdXRGbGFnLCAmR1RFU1RfRkxBRyhvdXRwdXQpKSB8fAotICAgICAgICBQYXJzZUJvb2xG
bGFnKGFyZywga1ByaW50VGltZUZsYWcsICZHVEVTVF9GTEFHKHByaW50X3RpbWUpKSB8fAotICAg
ICAgICBQYXJzZUludDMyRmxhZyhhcmcsIGtSYW5kb21TZWVkRmxhZywgJkdURVNUX0ZMQUcocmFu
ZG9tX3NlZWQpKSB8fAotICAgICAgICBQYXJzZUludDMyRmxhZyhhcmcsIGtSZXBlYXRGbGFnLCAm
R1RFU1RfRkxBRyhyZXBlYXQpKSB8fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga1NodWZm
bGVGbGFnLCAmR1RFU1RfRkxBRyhzaHVmZmxlKSkgfHwKLSAgICAgICAgUGFyc2VJbnQzMkZsYWco
YXJnLCBrU3RhY2tUcmFjZURlcHRoRmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAgJkdURVNU
X0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpKSB8fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywg
a1Rocm93T25GYWlsdXJlRmxhZywgJkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkpCi0gICAg
ICAgICkgewotICAgICAgLy8gWWVzLiAgU2hpZnQgdGhlIHJlbWFpbmRlciBvZiB0aGUgYXJndiBs
aXN0IGxlZnQgYnkgb25lLiAgTm90ZQorICAgIGJvb2wgcmVtb3ZlX2ZsYWcgPSBmYWxzZTsKKyAg
ICBpZiAoUGFyc2VHb29nbGVUZXN0RmxhZyhhcmcpKSB7CisgICAgICByZW1vdmVfZmxhZyA9IHRy
dWU7CisjaWYgR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXworICAgIH0gZWxzZSBpZiAoUGFy
c2VTdHJpbmdGbGFnKGFyZywga0ZsYWdmaWxlRmxhZywgJkdURVNUX0ZMQUcoZmxhZ2ZpbGUpKSkg
eworICAgICAgTG9hZEZsYWdzRnJvbUZpbGUoR1RFU1RfRkxBRyhmbGFnZmlsZSkpOworICAgICAg
cmVtb3ZlX2ZsYWcgPSB0cnVlOworI2VuZGlmICAvLyBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZM
QUdfCisgICAgfSBlbHNlIGlmIChhcmdfc3RyaW5nID09ICItLWhlbHAiIHx8IGFyZ19zdHJpbmcg
PT0gIi1oIiB8fAorICAgICAgICAgICAgICAgYXJnX3N0cmluZyA9PSAiLT8iIHx8IGFyZ19zdHJp
bmcgPT0gIi8/IiB8fAorICAgICAgICAgICAgICAgSGFzR29vZ2xlVGVzdEZsYWdQcmVmaXgoYXJn
KSkgeworICAgICAgLy8gQm90aCBoZWxwIGZsYWcgYW5kIHVucmVjb2duaXplZCBHb29nbGUgVGVz
dCBmbGFncyAoZXhjbHVkaW5nCisgICAgICAvLyBpbnRlcm5hbCBvbmVzKSB0cmlnZ2VyIGhlbHAg
ZGlzcGxheS4KKyAgICAgIGdfaGVscF9mbGFnID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAocmVt
b3ZlX2ZsYWcpIHsKKyAgICAgIC8vIFNoaWZ0IHRoZSByZW1haW5kZXIgb2YgdGhlIGFyZ3YgbGlz
dCBsZWZ0IGJ5IG9uZS4gIE5vdGUKICAgICAgIC8vIHRoYXQgYXJndiBoYXMgKCphcmdjICsgMSkg
ZWxlbWVudHMsIHRoZSBsYXN0IG9uZSBhbHdheXMgYmVpbmcKICAgICAgIC8vIE5VTEwuICBUaGUg
Zm9sbG93aW5nIGxvb3AgbW92ZXMgdGhlIHRyYWlsaW5nIE5VTEwgZWxlbWVudCBhcwogICAgICAg
Ly8gd2VsbC4KQEAgLTQ2MjgsMTIgKzU4NzksNiBAQCB2b2lkIFBhcnNlR29vZ2xlVGVzdEZsYWdz
T25seUltcGwoaW50KiBhcmdjLCBDaGFyVHlwZSoqIGFyZ3YpIHsKICAgICAgIC8vIFdlIGFsc28g
bmVlZCB0byBkZWNyZW1lbnQgdGhlIGl0ZXJhdG9yIGFzIHdlIGp1c3QgcmVtb3ZlZAogICAgICAg
Ly8gYW4gZWxlbWVudC4KICAgICAgIGktLTsKLSAgICB9IGVsc2UgaWYgKGFyZ19zdHJpbmcgPT0g
Ii0taGVscCIgfHwgYXJnX3N0cmluZyA9PSAiLWgiIHx8Ci0gICAgICAgICAgICAgICBhcmdfc3Ry
aW5nID09ICItPyIgfHwgYXJnX3N0cmluZyA9PSAiLz8iIHx8Ci0gICAgICAgICAgICAgICBIYXNH
b29nbGVUZXN0RmxhZ1ByZWZpeChhcmcpKSB7Ci0gICAgICAvLyBCb3RoIGhlbHAgZmxhZyBhbmQg
dW5yZWNvZ25pemVkIEdvb2dsZSBUZXN0IGZsYWdzIChleGNsdWRpbmcKLSAgICAgIC8vIGludGVy
bmFsIG9uZXMpIHRyaWdnZXIgaGVscCBkaXNwbGF5LgotICAgICAgZ19oZWxwX2ZsYWcgPSB0cnVl
OwogICAgIH0KICAgfQogCkBAIC00NjQ5LDYgKzU4OTQsMTcgQEAgdm9pZCBQYXJzZUdvb2dsZVRl
c3RGbGFnc09ubHlJbXBsKGludCogYXJnYywgQ2hhclR5cGUqKiBhcmd2KSB7CiAvLyBvdGhlciBw
YXJ0cyBvZiBHb29nbGUgVGVzdC4KIHZvaWQgUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5KGludCog
YXJnYywgY2hhcioqIGFyZ3YpIHsKICAgUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5SW1wbChhcmdj
LCBhcmd2KTsKKworICAvLyBGaXggdGhlIHZhbHVlIG9mICpfTlNHZXRBcmdjKCkgb24gbWFjT1Ms
IGJ1dCBpZmYKKyAgLy8gKl9OU0dldEFyZ3YoKSA9PSBhcmd2CisgIC8vIE9ubHkgYXBwbGljYWJs
ZSB0byBjaGFyKiogdmVyc2lvbiBvZiBhcmd2CisjaWYgR1RFU1RfT1NfTUFDCisjaWZuZGVmIEdU
RVNUX09TX0lPUworICBpZiAoKl9OU0dldEFyZ3YoKSA9PSBhcmd2KSB7CisgICAgKl9OU0dldEFy
Z2MoKSA9ICphcmdjOworICB9CisjZW5kaWYKKyNlbmRpZgogfQogdm9pZCBQYXJzZUdvb2dsZVRl
c3RGbGFnc09ubHkoaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndikgewogICBQYXJzZUdvb2dsZVRl
c3RGbGFnc09ubHlJbXBsKGFyZ2MsIGFyZ3YpOwpAQCAtNDY2MCwyMSArNTkxNiwxOSBAQCB2b2lk
IFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seShpbnQqIGFyZ2MsIHdjaGFyX3QqKiBhcmd2KSB7CiAv
LyB3Y2hhcl90LgogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogdm9pZCBJbml0R29vZ2xl
VGVzdEltcGwoaW50KiBhcmdjLCBDaGFyVHlwZSoqIGFyZ3YpIHsKLSAgZ19pbml0X2d0ZXN0X2Nv
dW50Kys7Ci0KICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBydW4gdGhlIGluaXRpYWxpemF0aW9uIGNv
ZGUgdHdpY2UuCi0gIGlmIChnX2luaXRfZ3Rlc3RfY291bnQgIT0gMSkgcmV0dXJuOworICBpZiAo
R1Rlc3RJc0luaXRpYWxpemVkKCkpIHJldHVybjsKIAogICBpZiAoKmFyZ2MgPD0gMCkgcmV0dXJu
OwogCi0gIGludGVybmFsOjpnX2V4ZWN1dGFibGVfcGF0aCA9IGludGVybmFsOjpTdHJlYW1hYmxl
VG9TdHJpbmcoYXJndlswXSk7Ci0KLSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogICBnX2FyZ3Zz
LmNsZWFyKCk7CiAgIGZvciAoaW50IGkgPSAwOyBpICE9ICphcmdjOyBpKyspIHsKICAgICBnX2Fy
Z3ZzLnB1c2hfYmFjayhTdHJlYW1hYmxlVG9TdHJpbmcoYXJndltpXSkpOwogICB9Ci0jZW5kaWYg
IC8vIEdURVNUX0hBU19ERUFUSF9URVNUCisKKyNpZiBHVEVTVF9IQVNfQUJTTAorICBhYnNsOjpJ
bml0aWFsaXplU3ltYm9saXplcihnX2FyZ3ZzWzBdLmNfc3RyKCkpOworI2VuZGlmICAvLyBHVEVT
VF9IQVNfQUJTTAogCiAgIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seShhcmdjLCBhcmd2KTsKICAg
R2V0VW5pdFRlc3RJbXBsKCktPlBvc3RGbGFnUGFyc2luZ0luaXQoKTsKQEAgLTQ2OTIsMTMgKzU5
NDYsNjIgQEAgdm9pZCBJbml0R29vZ2xlVGVzdEltcGwoaW50KiBhcmdjLCBDaGFyVHlwZSoqIGFy
Z3YpIHsKIC8vCiAvLyBDYWxsaW5nIHRoZSBmdW5jdGlvbiBmb3IgdGhlIHNlY29uZCB0aW1lIGhh
cyBubyB1c2VyLXZpc2libGUgZWZmZWN0Lgogdm9pZCBJbml0R29vZ2xlVGVzdChpbnQqIGFyZ2Ms
IGNoYXIqKiBhcmd2KSB7CisjaWYgZGVmaW5lZChHVEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVT
VF9GVU5DVElPTl8pCisgIEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9OXyhh
cmdjLCBhcmd2KTsKKyNlbHNlICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9U
RVNUX0ZVTkNUSU9OXykKICAgaW50ZXJuYWw6OkluaXRHb29nbGVUZXN0SW1wbChhcmdjLCBhcmd2
KTsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5D
VElPTl8pCiB9CiAKIC8vIFRoaXMgb3ZlcmxvYWRlZCB2ZXJzaW9uIGNhbiBiZSB1c2VkIGluIFdp
bmRvd3MgcHJvZ3JhbXMgY29tcGlsZWQgaW4KIC8vIFVOSUNPREUgbW9kZS4KIHZvaWQgSW5pdEdv
b2dsZVRlc3QoaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndikgeworI2lmIGRlZmluZWQoR1RFU1Rf
Q1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQorICBHVEVTVF9DVVNUT01fSU5JVF9H
T09HTEVfVEVTVF9GVU5DVElPTl8oYXJnYywgYXJndik7CisjZWxzZSAgLy8gZGVmaW5lZChHVEVT
VF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8pCiAgIGludGVybmFsOjpJbml0R29v
Z2xlVGVzdEltcGwoYXJnYywgYXJndik7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfQ1VTVE9N
X0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQorfQorCitzdGQ6OnN0cmluZyBUZW1wRGlyKCkg
eworI2lmIGRlZmluZWQoR1RFU1RfQ1VTVE9NX1RFTVBESVJfRlVOQ1RJT05fKQorICByZXR1cm4g
R1RFU1RfQ1VTVE9NX1RFTVBESVJfRlVOQ1RJT05fKCk7CisjZW5kaWYKKworI2lmIEdURVNUX09T
X1dJTkRPV1NfTU9CSUxFCisgIHJldHVybiAiXFx0ZW1wXFwiOworI2VsaWYgR1RFU1RfT1NfV0lO
RE9XUworICBjb25zdCBjaGFyKiB0ZW1wX2RpciA9IGludGVybmFsOjpwb3NpeDo6R2V0RW52KCJU
RU1QIik7CisgIGlmICh0ZW1wX2RpciA9PSBOVUxMIHx8IHRlbXBfZGlyWzBdID09ICdcMCcpCisg
ICAgcmV0dXJuICJcXHRlbXBcXCI7CisgIGVsc2UgaWYgKHRlbXBfZGlyW3N0cmxlbih0ZW1wX2Rp
cikgLSAxXSA9PSAnXFwnKQorICAgIHJldHVybiB0ZW1wX2RpcjsKKyAgZWxzZQorICAgIHJldHVy
biBzdGQ6OnN0cmluZyh0ZW1wX2RpcikgKyAiXFwiOworI2VsaWYgR1RFU1RfT1NfTElOVVhfQU5E
Uk9JRAorICByZXR1cm4gIi9zZGNhcmQvIjsKKyNlbHNlCisgIHJldHVybiAiL3RtcC8iOworI2Vu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorfQorCisvLyBDbGFzcyBTY29wZWRUcmFj
ZQorCisvLyBQdXNoZXMgdGhlIGdpdmVuIHNvdXJjZSBmaWxlIGxvY2F0aW9uIGFuZCBtZXNzYWdl
IG9udG8gYSBwZXItdGhyZWFkCisvLyB0cmFjZSBzdGFjayBtYWludGFpbmVkIGJ5IEdvb2dsZSBU
ZXN0Lgordm9pZCBTY29wZWRUcmFjZTo6UHVzaFRyYWNlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBs
aW5lLCBzdGQ6OnN0cmluZyBtZXNzYWdlKSB7CisgIGludGVybmFsOjpUcmFjZUluZm8gdHJhY2U7
CisgIHRyYWNlLmZpbGUgPSBmaWxlOworICB0cmFjZS5saW5lID0gbGluZTsKKyAgdHJhY2UubWVz
c2FnZS5zd2FwKG1lc3NhZ2UpOworCisgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5QdXNoR1Rl
c3RUcmFjZSh0cmFjZSk7Cit9CisKKy8vIFBvcHMgdGhlIGluZm8gcHVzaGVkIGJ5IHRoZSBjJ3Rv
ci4KK1Njb3BlZFRyYWNlOjp+U2NvcGVkVHJhY2UoKQorICAgIEdURVNUX0xPQ0tfRVhDTFVERURf
KCZVbml0VGVzdDo6bXV0ZXhfKSB7CisgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5Qb3BHVGVz
dFRyYWNlKCk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3RfbWFpbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NyYy9ndGVzdF9tYWluLmNjCmluZGV4IGQyMGMwMmZkZmIwYTk0NjFkY2MyYTI3ODlj
NDkyMmI1YjMwNTYzNTIuLjIxMTNmNjIxZTY1NDMwZTU1NzBkZmIyMDE1ODg0YTJkNGY0Y2YwYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdF9tYWluLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdF9tYWluLmNjCkBAIC0yNywxMyAr
MjcsMTEgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2luY2x1ZGUgPGlv
c3RyZWFtPgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIgKiphcmd2KSB7Ci0gIHN0ZDo6Y291dCA8PCAiUnVubmluZyBtYWluKCkgZnJvbSBndGVz
dF9tYWluLmNjXG4iOworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKIAorR1RFU1RfQVBJXyBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgcHJp
bnRmKCJSdW5uaW5nIG1haW4oKSBmcm9tICVzXG4iLCBfX0ZJTEVfXyk7CiAgIHRlc3Rpbmc6Oklu
aXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKICAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvQlVJTEQuYmF6ZWwgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L0JVSUxELmJhemVsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5MzBk
NjVlMDQ0MDE0NDQxNmFlODhhYjI3NThmZDkzNDBhMDkzN2IKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L0JVSUxELmJhemVsCkBAIC0wLDAgKzEsNTI3IEBA
CisjIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuCisjIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisj
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorIworIyBBdXRob3I6IG1pc3RlcmdAZ29vZ2xlLmNvbSAoR2Vu
bmFkaXkgQ2l2aWwpCisjCisjIEJhemVsIEJVSUxEIGZvciBUaGUgR29vZ2xlIEMrKyBUZXN0aW5n
IEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisKK2xpY2Vuc2VzKFsibm90aWNlIl0pCisKK2NvbmZp
Z19zZXR0aW5nKAorICAgIG5hbWUgPSAid2luZG93cyIsCisgICAgdmFsdWVzID0geyJjcHUiOiAi
eDY0X3dpbmRvd3MifSwKKykKKworY29uZmlnX3NldHRpbmcoCisgICAgbmFtZSA9ICJ3aW5kb3dz
X21zdmMiLAorICAgIHZhbHVlcyA9IHsiY3B1IjogIng2NF93aW5kb3dzX21zdmMifSwKKykKKwor
Y29uZmlnX3NldHRpbmcoCisgICAgbmFtZSA9ICJoYXNfYWJzbCIsCisgICAgdmFsdWVzID0geyJk
ZWZpbmUiOiAiYWJzbD0xIn0sCispCisKKyNvbiB3aW5kb3dzIGV4Y2x1ZGUgZ3Rlc3QtdHVwbGUu
aCBhbmQgZ29vZ2xldGVzdC10dXBsZS10ZXN0LmNjCitjY190ZXN0KAorICAgIG5hbWUgPSAiZ3Rl
c3RfYWxsX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBnbG9iKAorICAg
ICAgICBpbmNsdWRlID0gWworICAgICAgICAgICAgImd0ZXN0LSouY2MiLAorICAgICAgICAgICAg
Imdvb2dsZXRlc3QtKi5jYyIsCisgICAgICAgICAgICAiKi5oIiwKKyAgICAgICAgICAgICJnb29n
bGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvKiovKi5oIiwKKyAgICAgICAgXSwKKyAgICAgICAgZXhjbHVk
ZSA9IFsKKyAgICAgICAgICAgICJndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYyIsCisgICAgICAg
ICAgICAiZ29vZ2xldGVzdC10dXBsZS10ZXN0LmNjIiwKKyAgICAgICAgICAgICJnb29nbGV0ZXN0
L3NyYy9ndGVzdC1hbGwuY2MiLAorICAgICAgICAgICAgImd0ZXN0X2FsbF90ZXN0LmNjIiwKKyAg
ICAgICAgICAgICJndGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MiLAorICAgICAgICAgICAgImd0
ZXN0LWxpc3RlbmVyX3Rlc3QuY2MiLAorICAgICAgICAgICAgImd0ZXN0LXVuaXR0ZXN0LWFwaV90
ZXN0LmNjIiwKKyAgICAgICAgICAgICJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYyIsCisg
ICAgICAgICAgICAiZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3RfLmNjIiwKKyAgICAg
ICAgICAgICJnb29nbGV0ZXN0LWNvbG9yLXRlc3RfLmNjIiwKKyAgICAgICAgICAgICJnb29nbGV0
ZXN0LWVudi12YXItdGVzdF8uY2MiLAorICAgICAgICAgICAgImdvb2dsZXRlc3QtZmlsdGVyLXVu
aXR0ZXN0Xy5jYyIsCisgICAgICAgICAgICAiZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVu
aXR0ZXN0Xy5jYyIsCisgICAgICAgICAgICAgImdvb2dsZXRlc3QtbGlzdGVuZXItdGVzdC5jYyIs
CisgICAgICAgICAgICAgImdvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjIiwKKyAgICAgICAgICAg
ICAiZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0Xy5jYyIsCisgICAgICAgICAgICAgImdv
b2dsZXRlc3Qtc2h1ZmZsZS10ZXN0Xy5jYyIsCisgICAgICAgICAgICAgImdvb2dsZXRlc3QtdW5p
bml0aWFsaXplZC10ZXN0Xy5jYyIsCisgICAgICAgICAgICAgImdvb2dsZXRlc3QtZGVhdGgtdGVz
dF9leF90ZXN0LmNjIiwKKyAgICAgICAgICAgICAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3Qi
LAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8uY2MiLAor
ICAgICAgICAgICAgICJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMS10ZXN0Xy5j
YyIsCisgICAgICAgICAgICAgImdvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRl
c3RfLmNjIiwKKworICAgICAgICBdLAorICAgICkgKyBzZWxlY3QoeworICAgICAgICAiLy86d2lu
ZG93cyI6IFtdLAorICAgICAgICAiLy86d2luZG93c19tc3ZjIjogW10sCisgICAgICAgICIvL2Nv
bmRpdGlvbnM6ZGVmYXVsdCI6IFsKKyAgICAgICAgICAgICJnb29nbGV0ZXN0LXR1cGxlLXRlc3Qu
Y2MiLAorICAgICAgICBdLAorICAgIH0pLAorICAgIGNvcHRzID0gc2VsZWN0KHsKKyAgICAgICAg
Ii8vOndpbmRvd3MiOiBbIi1ER1RFU1RfVVNFX09XTl9UUjFfVFVQTEU9MCJdLAorICAgICAgICAi
Ly86d2luZG93c19tc3ZjIjogWyItREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTAiXSwKKyAgICAg
ICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogWyItREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTEi
XSwKKyAgICB9KSwKKyAgICBpbmNsdWRlcyA9IFsKKyAgICAgICAgImdvb2dsZXRlc3QiLAorICAg
ICAgICAiZ29vZ2xldGVzdC9pbmNsdWRlIiwKKyAgICAgICAgImdvb2dsZXRlc3QvaW5jbHVkZS9p
bnRlcm5hbCIsCisgICAgICAgICJnb29nbGV0ZXN0L3Rlc3QiLAorICAgIF0sCisgICAgbGlua29w
dHMgPSBzZWxlY3QoeworICAgICAgICAiLy86d2luZG93cyI6IFtdLAorICAgICAgICAiLy86d2lu
ZG93c19tc3ZjIjogW10sCisgICAgICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsKKyAgICAg
ICAgICAgICItcHRocmVhZCIsCisgICAgICAgIF0sCisgICAgfSksCisgICAgZGVwcyA9IFsiLy86
Z3Rlc3RfbWFpbiJdLAorKQorCisKKyMgVGVzdHMgZGVhdGggdGVzdHMuCitjY190ZXN0KAorICAg
IG5hbWUgPSAiZ29vZ2xldGVzdC1kZWF0aC10ZXN0LXRlc3QiLAorICAgIHNpemUgPSAibWVkaXVt
IiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWRlYXRoLXRlc3QtdGVzdC5jYyJdLAorICAgIGRl
cHMgPSBbIi8vOmd0ZXN0X21haW4iXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0
X3Rlc3RfbWFjcm9fc3RhY2tfZm9vdHByaW50X3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAor
ICAgIHNyY3MgPSBbImd0ZXN0X3Rlc3RfbWFjcm9fc3RhY2tfZm9vdHByaW50X3Rlc3QuY2MiXSwK
KyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCisjVGhlc2UgZ29vZ2xldGVzdCB0ZXN0cyBo
YXZlIHRoZWlyIG93biBtYWluKCkKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWxp
c3RlbmVyLXRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImdvb2dsZXRl
c3QtbGlzdGVuZXItdGVzdC5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0X21haW4iXSwKKykK
KworY2NfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0IiwKKyAgICBz
aXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWworICAgICAgICAiZ3Rlc3QtdW5pdHRlc3QtYXBp
X3Rlc3QuY2MiLAorICAgIF0sCisgICAgZGVwcyA9IFsKKyAgICAgICAgIi8vOmd0ZXN0IiwKKyAg
ICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRl
c3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJnb29nbGV0
ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYyIsCisgICAgICAgICJnb29nbGV0ZXN0LXBhcmFtLXRlc3Qt
dGVzdC5oIiwKKyAgICAgICAgImdvb2dsZXRlc3QtcGFyYW0tdGVzdDItdGVzdC5jYyIsCisgICAg
XSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAi
Z3Rlc3RfdW5pdHRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImd0ZXN0
X3VuaXR0ZXN0LmNjIl0sCisgICAgYXJncyA9IFsiLS1oZWFwX2NoZWNrPXN0cmljdCJdLAorICAg
IHNoYXJkX2NvdW50ID0gMiwKKyAgICBkZXBzID0gWyIvLzpndGVzdF9tYWluIl0sCispCisKKyMg
IFB5IHRlc3RzCisKK3B5X2xpYnJhcnkoCisgICAgbmFtZSA9ICJndGVzdF90ZXN0X3V0aWxzIiwK
KyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ3Rlc3RfdGVzdF91dGlscy5weSJdLAor
KQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJndGVzdF9oZWxwX3Rlc3RfIiwKKyAgICB0ZXN0
b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ3Rlc3RfaGVscF90ZXN0Xy5jYyJdLAorICAgIGRlcHMg
PSBbIi8vOmd0ZXN0X21haW4iXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0X2hl
bHBfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ3Rlc3RfaGVscF90
ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmd0ZXN0X2hlbHBfdGVzdF8iXSwKKyAgICBkZXBzID0g
WyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29n
bGV0ZXN0LW91dHB1dC10ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImdv
b2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykK
KworCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1vdXRwdXQtdGVzdCIsCisgICAg
c2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1vdXRwdXQtdGVzdC5weSJd
LAorICAgIGFyZ3MgPSBzZWxlY3QoeworICAgICAgICAiOmhhc19hYnNsIjogW10sCisgICAgICAg
ICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsiLS1ub19zdGFja3RyYWNlX3N1cHBvcnQiXSwKKyAg
ICB9KSwKKyAgICBkYXRhID0gWworICAgICAgICAiZ29vZ2xldGVzdC1vdXRwdXQtdGVzdC1nb2xk
ZW4tbGluLnR4dCIsCisgICAgICAgICI6Z29vZ2xldGVzdC1vdXRwdXQtdGVzdF8iLAorICAgIF0s
CisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworY2NfYmluYXJ5KAorICAg
IG5hbWUgPSAiZ29vZ2xldGVzdC1jb2xvci10ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAg
IHNyY3MgPSBbImdvb2dsZXRlc3QtY29sb3ItdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpn
dGVzdCJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1jb2xvci10ZXN0
IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWNvbG9yLXRl
c3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z29vZ2xldGVzdC1jb2xvci10ZXN0XyJdLAorICAgIGRl
cHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0g
Imdvb2dsZXRlc3QtZW52LXZhci10ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3Mg
PSBbImdvb2dsZXRlc3QtZW52LXZhci10ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0
Il0sCispCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWVudi12YXItdGVzdCIs
CisgICAgc2l6ZSA9ICJtZWRpdW0iLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtZW52LXZhci10
ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmdvb2dsZXRlc3QtZW52LXZhci10ZXN0XyJdLAorICAg
IGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1l
ID0gImdvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAg
IHNyY3MgPSBbImdvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBb
Ii8vOmd0ZXN0Il0sCispCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWZpbHRl
ci11bml0dGVzdCIsCisgICAgc2l6ZSA9ICJtZWRpdW0iLAorICAgIHNyY3MgPSBbImdvb2dsZXRl
c3QtZmlsdGVyLXVuaXR0ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmdvb2dsZXRlc3QtZmlsdGVy
LXVuaXR0ZXN0XyJdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKKwor
Y2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0
ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtYnJlYWst
b24tZmFpbHVyZS11bml0dGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQor
CisKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11
bml0dGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1i
cmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmdvb2dsZXRlc3Qt
YnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91
dGlscyJdLAorKQorCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJndGVzdF9hc3NlcnRfYnlfZXhj
ZXB0aW9uX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImd0ZXN0X2Fz
c2VydF9ieV9leGNlcHRpb25fdGVzdC5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCisp
CisKKworCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1
cmUtdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LXRo
cm93LW9uLWZhaWx1cmUtdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQor
CitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3Qi
LAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtdGhyb3ctb24t
ZmFpbHVyZS10ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmdvb2dsZXRlc3QtdGhyb3ctb24tZmFp
bHVyZS10ZXN0XyJdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKKwor
Y2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0XyIs
CisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtbGlzdC10ZXN0cy11
bml0dGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAor
ICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0IiwKKyAgICBzaXplID0g
InNtYWxsIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3QucHki
XSwKKyAgICBkYXRhID0gWyI6Z29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0XyJdLAorICAg
IGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1l
ID0gImdvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0XyIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1z
aHVmZmxlLXRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworcHlfdGVz
dCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0IiwKKyAgICBzaXplID0gInNt
YWxsIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LXNodWZmbGUtdGVzdC5weSJdLAorICAgIGRh
dGEgPSBbIjpnb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3Rf
dGVzdF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWNh
dGNoLWV4Y2VwdGlvbnMtbm8tZXgtdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNz
ID0gWyJnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdF8uY2MiXSwKKyAgICBkZXBzID0g
WyIvLzpndGVzdF9tYWluIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRl
c3QtY2F0Y2gtZXhjZXB0aW9ucy1leC10ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNy
Y3MgPSBbImdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0Xy5jYyJdLAorICAgIGNvcHRz
ID0gWyItZmV4Y2VwdGlvbnMiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdF9tYWluIl0sCispCisK
K3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdCIs
CisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1jYXRjaC1leGNl
cHRpb25zLXRlc3QucHkiXSwKKyAgICBkYXRhID0gWworICAgICAgICAiOmdvb2dsZXRlc3QtY2F0
Y2gtZXhjZXB0aW9ucy1leC10ZXN0XyIsCisgICAgICAgICI6Z29vZ2xldGVzdC1jYXRjaC1leGNl
cHRpb25zLW5vLWV4LXRlc3RfIiwKKyAgICBdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0
aWxzIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImd0ZXN0X3htbF9vdXRwdXRfdW5p
dHRlc3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ3Rlc3RfeG1sX291dHB1
dF91bml0dGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitjY190ZXN0
KAorICAgIG5hbWUgPSAiZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCIsCisgICAgc2l6ZSA9ICJzbWFs
bCIsCisgICAgc3JjcyA9IFsiZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdC5jYyJdLAorICAgIGRlcHMg
PSBbIi8vOmd0ZXN0Il0sCispCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJndGVzdF94bWxfb3V0
cHV0X3VuaXR0ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWworICAgICAg
ICAiZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdC5weSIsCisgICAgICAgICJndGVzdF94bWxfdGVz
dF91dGlscy5weSIsCisgICAgXSwKKyAgICBhcmdzID0gc2VsZWN0KHsKKyAgICAgICAgIjpoYXNf
YWJzbCI6IFtdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi0tbm9fc3RhY2t0
cmFjZV9zdXBwb3J0Il0sCisgICAgfSksCisgICAgZGF0YSA9IFsKKyAgICAgICAgIyBXZSBpbnZv
a2UgZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCB0byB2ZXJpZnkgdGhlIFhNTCBvdXRwdXQKKyAgICAg
ICAgIyB3aGVuIHRoZSB0ZXN0IHByb2dyYW0gY29udGFpbnMgbm8gdGVzdCBkZWZpbml0aW9uLgor
ICAgICAgICAiOmd0ZXN0X25vX3Rlc3RfdW5pdHRlc3QiLAorICAgICAgICAiOmd0ZXN0X3htbF9v
dXRwdXRfdW5pdHRlc3RfIiwKKyAgICBdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxz
Il0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImd0ZXN0X3htbF9vdXRmaWxlMV90ZXN0
XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImd0ZXN0X3htbF9vdXRmaWxlMV90
ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0X21haW4iXSwKKykKKworY2NfYmluYXJ5
KAorICAgIG5hbWUgPSAiZ3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfIiwKKyAgICB0ZXN0b25seSA9
IDEsCisgICAgc3JjcyA9IFsiZ3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfLmNjIl0sCisgICAgZGVw
cyA9IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ3Rlc3Rf
eG1sX291dGZpbGVzX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbCisg
ICAgICAgICJndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weSIsCisgICAgICAgICJndGVzdF94bWxf
dGVzdF91dGlscy5weSIsCisgICAgXSwKKyAgICBkYXRhID0gWworICAgICAgICAiOmd0ZXN0X3ht
bF9vdXRmaWxlMV90ZXN0XyIsCisgICAgICAgICI6Z3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfIiwK
KyAgICBdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK2NjX2JpbmFy
eSgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0XyIsCisgICAgdGVz
dG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0Xy5j
YyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9
ICJnb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdCIsCisgICAgc2l6ZSA9ICJtZWRpdW0iLAor
ICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0LnB5Il0sCisgICAgZGF0
YSA9IFsiZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3RfIl0sCisgICAgZGVwcyA9IFsiOmd0
ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ3Rlc3RfdGVz
dGJyaWRnZV90ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImd0ZXN0X3Rl
c3RicmlkZ2VfdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdF9tYWluIl0sCispCisK
KyMgVGVzdHMgdGhhdCBmaWx0ZXJpbmcgdmlhIHRlc3RicmlkZ2Ugd29ya3MKK3B5X3Rlc3QoCisg
ICAgbmFtZSA9ICJndGVzdF90ZXN0YnJpZGdlX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAor
ICAgIHNyY3MgPSBbImd0ZXN0X3Rlc3RicmlkZ2VfdGVzdC5weSJdLAorICAgIGRhdGEgPSBbIjpn
dGVzdF90ZXN0YnJpZGdlX3Rlc3RfIl0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMi
XSwKKykKKworCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1qc29uLW91dGZpbGVz
LXRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJnb29n
bGV0ZXN0LWpzb24tb3V0ZmlsZXMtdGVzdC5weSIsCisgICAgICAgICJndGVzdF9qc29uX3Rlc3Rf
dXRpbHMucHkiLAorICAgIF0sCisgICAgZGF0YSA9IFsKKyAgICAgICAgIjpndGVzdF94bWxfb3V0
ZmlsZTFfdGVzdF8iLAorICAgICAgICAiOmd0ZXN0X3htbF9vdXRmaWxlMl90ZXN0XyIsCisgICAg
XSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitweV90ZXN0KAorICAg
IG5hbWUgPSAiZ29vZ2xldGVzdC1qc29uLW91dHB1dC11bml0dGVzdCIsCisgICAgc2l6ZSA9ICJt
ZWRpdW0iLAorICAgIHNyY3MgPSBbCisgICAgICAgICJnb29nbGV0ZXN0LWpzb24tb3V0cHV0LXVu
aXR0ZXN0LnB5IiwKKyAgICAgICAgImd0ZXN0X2pzb25fdGVzdF91dGlscy5weSIsCisgICAgXSwK
KyAgICBkYXRhID0gWworICAgICAgICAjIFdlIGludm9rZSBndGVzdF9ub190ZXN0X3VuaXR0ZXN0
IHRvIHZlcmlmeSB0aGUgSlNPTiBvdXRwdXQKKyAgICAgICAgIyB3aGVuIHRoZSB0ZXN0IHByb2dy
YW0gY29udGFpbnMgbm8gdGVzdCBkZWZpbml0aW9uLgorICAgICAgICAiOmd0ZXN0X25vX3Rlc3Rf
dW5pdHRlc3QiLAorICAgICAgICAiOmd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfIiwKKyAgICBd
LAorICAgIGFyZ3MgPSBzZWxlY3QoeworICAgICAgICAiOmhhc19hYnNsIjogW10sCisgICAgICAg
ICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsiLS1ub19zdGFja3RyYWNlX3N1cHBvcnQiXSwKKyAg
ICB9KSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorIyBWZXJpZmllcyBp
bnRlcmFjdGlvbiBvZiBkZWF0aCB0ZXN0cyBhbmQgZXhjZXB0aW9ucy4KK2NjX3Rlc3QoCisgICAg
bmFtZSA9ICJnb29nbGV0ZXN0LWRlYXRoLXRlc3RfZXhfY2F0Y2hfdGVzdCIsCisgICAgc2l6ZSA9
ICJtZWRpdW0iLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNj
Il0sCisgICAgY29wdHMgPSBbIi1mZXhjZXB0aW9ucyJdLAorICAgIGRlZmluZXMgPSBbIkdURVNU
X0VOQUJMRV9DQVRDSF9FWENFUFRJT05TXz0xIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwK
KykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFs
aWQtbmFtZTEtdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0
ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMS10ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8v
Omd0ZXN0Il0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtcGFyYW0t
dGVzdC1pbnZhbGlkLW5hbWUyLXRlc3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9
IFsiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTItdGVzdF8uY2MiXSwKKyAgICBk
ZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVz
dC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisg
ICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdC5weSJd
LAorICAgIGRhdGEgPSBbIjpnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMS10ZXN0
XyJdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK3B5X3Rlc3QoCisg
ICAgbmFtZSA9ICJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0IiwKKyAg
ICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52
YWxpZC1uYW1lMi10ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmdvb2dsZXRlc3QtcGFyYW0tdGVz
dC1pbnZhbGlkLW5hbWUyLXRlc3RfIl0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMi
XSwKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVz
dC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9nb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTVkZmJjNjkzYjQzYTFiMTllMzg0N2RjYmNhYjg4NmQyZjRkMjhlNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1icmVhay1vbi1mYWls
dXJlLXVuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMjA4IEBACisjIS91c3IvYmluL2VudiBweXRob24K
KyMKKyMgQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgYnJl
YWstb24tZmFpbHVyZSBtb2RlLgorCitBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBzZWct
ZmF1bHQgd2hlbiBhbiBhc3NlcnRpb24gZmFpbHMsIHVzaW5nCitlaXRoZXIgdGhlIEdURVNUX0JS
RUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCistLWd0ZXN0X2JyZWFr
X29uX2ZhaWx1cmUgZmxhZy4gIFRoaXMgc2NyaXB0IHRlc3RzIHN1Y2ggZnVuY3Rpb25hbGl0eQor
YnkgaW52b2tpbmcgZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0XyAoYSBwcm9n
cmFtIHdyaXR0ZW4gd2l0aAorR29vZ2xlIFRlc3QpIHdpdGggZGlmZmVyZW50IGVudmlyb25tZW50
cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdzLgorIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IGd0ZXN0
X3Rlc3RfdXRpbHMKKworIyBDb25zdGFudHMuCisKK0lTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdu
dCcKKworIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0
aGUgYnJlYWstb24tZmFpbHVyZSBtb2RlLgorQlJFQUtfT05fRkFJTFVSRV9FTlZfVkFSID0gJ0dU
RVNUX0JSRUFLX09OX0ZBSUxVUkUnCisKKyMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciBlbmFi
bGluZy9kaXNhYmxpbmcgdGhlIGJyZWFrLW9uLWZhaWx1cmUgbW9kZS4KK0JSRUFLX09OX0ZBSUxV
UkVfRkxBRyA9ICdndGVzdF9icmVha19vbl9mYWlsdXJlJworCisjIFRoZSBlbnZpcm9ubWVudCB2
YXJpYWJsZSBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUu
CitUSFJPV19PTl9GQUlMVVJFX0VOVl9WQVIgPSAnR1RFU1RfVEhST1dfT05fRkFJTFVSRScKKwor
IyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgY2F0
Y2gtZXhjZXB0aW9ucyBtb2RlLgorQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSID0gJ0dURVNUX0NB
VENIX0VYQ0VQVElPTlMnCisKKyMgUGF0aCB0byB0aGUgZ29vZ2xldGVzdC1icmVhay1vbi1mYWls
dXJlLXVuaXR0ZXN0XyBwcm9ncmFtLgorRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRl
c3RFeGVjdXRhYmxlUGF0aCgKKyAgICAnZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0
ZXN0XycpCisKKworZW52aXJvbiA9IGd0ZXN0X3Rlc3RfdXRpbHMuZW52aXJvbgorU2V0RW52VmFy
ID0gZ3Rlc3RfdGVzdF91dGlscy5TZXRFbnZWYXIKKworIyBUZXN0cyBpbiB0aGlzIGZpbGUgcnVu
IGEgR29vZ2xlLVRlc3QtYmFzZWQgdGVzdCBwcm9ncmFtIGFuZCBleHBlY3QgaXQKKyMgdG8gdGVy
bWluYXRlIHByZW1hdHVyZWx5LiAgVGhlcmVmb3JlIHRoZXkgYXJlIGluY29tcGF0aWJsZSB3aXRo
CisjIHRoZSBwcmVtYXR1cmUtZXhpdC1maWxlIHByb3RvY29sIGJ5IGRlc2lnbi4gIFVuc2V0IHRo
ZQorIyBwcmVtYXR1cmUtZXhpdCBmaWxlcGF0aCB0byBwcmV2ZW50IEdvb2dsZSBUZXN0IGZyb20g
Y3JlYXRpbmcKKyMgdGhlIGZpbGUuCitTZXRFbnZWYXIoZ3Rlc3RfdGVzdF91dGlscy5QUkVNQVRV
UkVfRVhJVF9GSUxFX0VOVl9WQVIsIE5vbmUpCisKKworZGVmIFJ1bihjb21tYW5kKToKKyAgIiIi
UnVucyBhIGNvbW1hbmQ7IHJldHVybnMgMSBpZiBpdCB3YXMga2lsbGVkIGJ5IGEgc2lnbmFsLCBv
ciAwIG90aGVyd2lzZS4iIiIKKworICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNv
bW1hbmQsIGVudj1lbnZpcm9uKQorICBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsOgorICAgIHJl
dHVybiAxCisgIGVsc2U6CisgICAgcmV0dXJuIDAKKworCisjIFRoZSB0ZXN0cy4KKworCitjbGFz
cyBHVGVzdEJyZWFrT25GYWlsdXJlVW5pdFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6
CisgICIiIlRlc3RzIHVzaW5nIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50
IHZhcmlhYmxlIG9yCisgIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZyB0byB0dXJu
IGFzc2VydGlvbiBmYWlsdXJlcyBpbnRvCisgIHNlZ21lbnRhdGlvbiBmYXVsdHMuCisgICIiIgor
CisgIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwgZW52X3Zhcl92YWx1ZSwgZmxhZ192YWx1ZSwgZXhw
ZWN0X3NlZ19mYXVsdCk6CisgICAgIiIiUnVucyBnb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUt
dW5pdHRlc3RfIGFuZCB2ZXJpZmllcyB0aGF0IGl0IGRvZXMKKyAgICAob3IgZG9lcyBub3QpIGhh
dmUgYSBzZWctZmF1bHQuCisKKyAgICBBcmdzOgorICAgICAgZW52X3Zhcl92YWx1ZTogICAgdmFs
dWUgb2YgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZhcmlhYmxlOyBOb25lIGlmIHRoZSB2YXJpYWJsZSBzaG91bGQgYmUgdW5z
ZXQuCisgICAgICBmbGFnX3ZhbHVlOiAgICAgICB2YWx1ZSBvZiB0aGUgLS1ndGVzdF9icmVha19v
bl9mYWlsdXJlIGZsYWc7CisgICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFn
IHNob3VsZCBub3QgYmUgcHJlc2VudC4KKyAgICAgIGV4cGVjdF9zZWdfZmF1bHQ6IDEgaWYgdGhl
IHByb2dyYW0gaXMgZXhwZWN0ZWQgdG8gZ2VuZXJhdGUgYSBzZWctZmF1bHQ7CisgICAgICAgICAg
ICAgICAgICAgICAgICAwIG90aGVyd2lzZS4KKyAgICAiIiIKKworICAgIFNldEVudlZhcihCUkVB
S19PTl9GQUlMVVJFX0VOVl9WQVIsIGVudl92YXJfdmFsdWUpCisKKyAgICBpZiBlbnZfdmFyX3Zh
bHVlIGlzIE5vbmU6CisgICAgICBlbnZfdmFyX3ZhbHVlX21zZyA9ICcgaXMgbm90IHNldCcKKyAg
ICBlbHNlOgorICAgICAgZW52X3Zhcl92YWx1ZV9tc2cgPSAnPScgKyBlbnZfdmFyX3ZhbHVlCisK
KyAgICBpZiBmbGFnX3ZhbHVlIGlzIE5vbmU6CisgICAgICBmbGFnID0gJycKKyAgICBlbGlmIGZs
YWdfdmFsdWUgPT0gJzAnOgorICAgICAgZmxhZyA9ICctLSVzPTAnICUgQlJFQUtfT05fRkFJTFVS
RV9GTEFHCisgICAgZWxzZToKKyAgICAgIGZsYWcgPSAnLS0lcycgJSBCUkVBS19PTl9GQUlMVVJF
X0ZMQUcKKworICAgIGNvbW1hbmQgPSBbRVhFX1BBVEhdCisgICAgaWYgZmxhZzoKKyAgICAgIGNv
bW1hbmQuYXBwZW5kKGZsYWcpCisKKyAgICBpZiBleHBlY3Rfc2VnX2ZhdWx0OgorICAgICAgc2hv
dWxkX29yX25vdCA9ICdzaG91bGQnCisgICAgZWxzZToKKyAgICAgIHNob3VsZF9vcl9ub3QgPSAn
c2hvdWxkIG5vdCcKKworICAgIGhhc19zZWdfZmF1bHQgPSBSdW4oY29tbWFuZCkKKworICAgIFNl
dEVudlZhcihCUkVBS19PTl9GQUlMVVJFX0VOVl9WQVIsIE5vbmUpCisKKyAgICBtc2cgPSAoJ3do
ZW4gJXMlcywgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4gIiVzIiAlcyBjYXVzZSBhIHNlZy1mYXVs
dC4nICUKKyAgICAgICAgICAgKEJSRUFLX09OX0ZBSUxVUkVfRU5WX1ZBUiwgZW52X3Zhcl92YWx1
ZV9tc2csICcgJy5qb2luKGNvbW1hbmQpLAorICAgICAgICAgICAgc2hvdWxkX29yX25vdCkpCisg
ICAgc2VsZi5hc3NlcnRfKGhhc19zZWdfZmF1bHQgPT0gZXhwZWN0X3NlZ19mYXVsdCwgbXNnKQor
CisgIGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9yKHNlbGYpOgorICAgICIiIlRlc3RzIHRoZSBiZWhh
dmlvciBvZiB0aGUgZGVmYXVsdCBtb2RlLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52
X3Zhcl92YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwK
KyAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCisKKyAgZGVmIHRlc3RF
bnZWYXIoc2VsZik6CisgICAgIiIiVGVzdHMgdXNpbmcgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxV
UkUgZW52aXJvbm1lbnQgdmFyaWFibGUuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZf
dmFyX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCisg
ICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0wKQorICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFs
dWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCisKKyAg
ZGVmIHRlc3RGbGFnKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5nIHRoZSAtLWd0ZXN0X2JyZWFr
X29uX2ZhaWx1cmUgZmxhZy4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFs
dWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKKyAgICAgICAg
ICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCisgICAgc2VsZi5SdW5BbmRWZXJpZnko
ZW52X3Zhcl92YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEn
LAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKKworICBkZWYgdGVz
dEZsYWdPdmVycmlkZXNFbnZWYXIoc2VsZik6CisgICAgIiIiVGVzdHMgdGhhdCB0aGUgZmxhZyBv
dmVycmlkZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLiIiIgorCisgICAgc2VsZi5SdW5BbmRW
ZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1
ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0wKQorICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAg
IGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9
MSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKKyAgICAgICAgICAg
ICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rf
c2VnX2ZhdWx0PTApCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCisg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0X3NlZ19mYXVsdD0xKQorCisgIGRlZiB0ZXN0QnJlYWtPbkZhaWx1cmVPdmVycmlk
ZXNUaHJvd09uRmFpbHVyZShzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0IGd0ZXN0X2JyZWFrX29u
X2ZhaWx1cmUgb3ZlcnJpZGVzIGd0ZXN0X3Rocm93X29uX2ZhaWx1cmUuIiIiCisKKyAgICBTZXRF
bnZWYXIoVEhST1dfT05fRkFJTFVSRV9FTlZfVkFSLCAnMScpCisgICAgdHJ5OgorICAgICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2Zh
dWx0PTEpCisgICAgZmluYWxseToKKyAgICAgIFNldEVudlZhcihUSFJPV19PTl9GQUlMVVJFX0VO
Vl9WQVIsIE5vbmUpCisKKyAgaWYgSVNfV0lORE9XUzoKKyAgICBkZWYgdGVzdENhdGNoRXhjZXB0
aW9uc0RvZXNOb3RJbnRlcmZlcmUoc2VsZik6CisgICAgICAiIiJUZXN0cyB0aGF0IGd0ZXN0X2Nh
dGNoX2V4Y2VwdGlvbnMgZG9lc24ndCBpbnRlcmZlcmUuIiIiCisKKyAgICAgIFNldEVudlZhcihD
QVRDSF9FWENFUFRJT05TX0VOVl9WQVIsICcxJykKKyAgICAgIHRyeToKKyAgICAgICAgc2VsZi5S
dW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2Zh
dWx0PTEpCisgICAgICBmaW5hbGx5OgorICAgICAgICBTZXRFbnZWYXIoQ0FUQ0hfRVhDRVBUSU9O
U19FTlZfVkFSLCBOb25lKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0
X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8uY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8u
Y2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjg0OTU3YTJkMDNiNTYyNjBjOGUyYzBhZThmNWEyN2JlYjZmNjM3OAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVz
dC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0Xy5jYwpAQCAtMCwwICsxLDg2IEBACisvLyBDb3B5
cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
Ky8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1
dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
Ky8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gVW5pdCB0ZXN0IGZv
ciBHb29nbGUgVGVzdCdzIGJyZWFrLW9uLWZhaWx1cmUgbW9kZS4KKy8vCisvLyBBIHVzZXIgY2Fu
IGFzayBHb29nbGUgVGVzdCB0byBzZWctZmF1bHQgd2hlbiBhbiBhc3NlcnRpb24gZmFpbHMsIHVz
aW5nCisvLyBlaXRoZXIgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFy
aWFibGUgb3IgdGhlCisvLyAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZy4gIFRoaXMgZmls
ZSBpcyB1c2VkIGZvciB0ZXN0aW5nIHN1Y2gKKy8vIGZ1bmN0aW9uYWxpdHkuCisvLworLy8gVGhp
cyBwcm9ncmFtIHdpbGwgYmUgaW52b2tlZCBmcm9tIGEgUHl0aG9uIHVuaXQgdGVzdC4gIEl0IGlz
CisvLyBleHBlY3RlZCB0byBmYWlsLiAgRG9uJ3QgcnVuIGl0IGRpcmVjdGx5LgorCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaW5jbHVkZSA8d2lu
ZG93cy5oPgorIyBpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgeworCisv
LyBBIHRlc3QgdGhhdCdzIGV4cGVjdGVkIHRvIGZhaWwuCitURVNUKEZvbywgQmFyKSB7CisgIEVY
UEVDVF9FUSgyLCAzKTsKK30KKworI2lmIEdURVNUX0hBU19TRUggJiYgIUdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCisvLyBPbiBXaW5kb3dzIE1vYmlsZSBnbG9iYWwgZXhjZXB0aW9uIGhhbmRsZXJz
IGFyZSBub3Qgc3VwcG9ydGVkLgorTE9ORyBXSU5BUEkgRXhpdFdpdGhFeGNlcHRpb25Db2RlKAor
ICAgIHN0cnVjdCBfRVhDRVBUSU9OX1BPSU5URVJTKiBleGNlcHRpb25fcG9pbnRlcnMpIHsKKyAg
ZXhpdChleGNlcHRpb25fcG9pbnRlcnMtPkV4Y2VwdGlvblJlY29yZC0+RXhjZXB0aW9uQ29kZSk7
Cit9CisjZW5kaWYKKworfSAgLy8gbmFtZXNwYWNlCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFy
ICoqYXJndikgeworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgLy8gU3VwcHJlc3NlcyBkaXNwbGF5
IG9mIHRoZSBXaW5kb3dzIGVycm9yIGRpYWxvZyB1cG9uIGVuY291bnRlcmluZworICAvLyBhIGdl
bmVyYWwgcHJvdGVjdGlvbiBmYXVsdCAoc2VnbWVudCB2aW9sYXRpb24pLgorICBTZXRFcnJvck1v
ZGUoU0VNX05PR1BGQVVMVEVSUk9SQk9YIHwgU0VNX0ZBSUxDUklUSUNBTEVSUk9SUyk7CisKKyMg
aWYgR1RFU1RfSEFTX1NFSCAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKworICAvLyBUaGUg
ZGVmYXVsdCB1bmhhbmRsZWQgZXhjZXB0aW9uIGZpbHRlciBkb2VzIG5vdCBhbHdheXMgZXhpdAor
ICAvLyB3aXRoIHRoZSBleGNlcHRpb24gY29kZSBhcyBleGl0IGNvZGUgLSBmb3IgZXhhbXBsZSBp
dCBleGl0cyB3aXRoCisgIC8vIDAgZm9yIEVYQ0VQVElPTl9BQ0NFU1NfVklPTEFUSU9OIGFuZCAx
IGZvciBFWENFUFRJT05fQlJFQUtQT0lOVAorICAvLyBpZiB0aGUgYXBwbGljYXRpb24gaXMgY29t
cGlsZWQgaW4gZGVidWcgbW9kZS4gVGh1cyB3ZSB1c2Ugb3VyIG93bgorICAvLyBmaWx0ZXIgd2hp
Y2ggYWx3YXlzIGV4aXRzIHdpdGggdGhlIGV4Y2VwdGlvbiBjb2RlIGZvciB1bmhhbmRsZWQKKyAg
Ly8gZXhjZXB0aW9ucy4KKyAgU2V0VW5oYW5kbGVkRXhjZXB0aW9uRmlsdGVyKEV4aXRXaXRoRXhj
ZXB0aW9uQ29kZSk7CisKKyMgZW5kaWYKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworICB0
ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgcmV0dXJuIFJVTl9BTExf
VEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVk
NDljMTAyM2M1MGVmMTY4MzNlNmI4ZTJhOGU2MjAyNDg0MzJhYzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9u
cy10ZXN0LnB5CkBAIC0wLDAgKzEsMjMzIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMg
Q29weXJpZ2h0IDIwMTAgR29vZ2xlIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisiIiJUZXN0cyBHb29nbGUgVGVzdCdzIGV4Y2VwdGlvbiBjYXRjaGluZyBi
ZWhhdmlvci4KKworVGhpcyBzY3JpcHQgaW52b2tlcyBnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlv
bnMtdGVzdF8gYW5kCitnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtZXgtdGVzdF8gKHByb2dy
YW1zIHdyaXR0ZW4gd2l0aAorR29vZ2xlIFRlc3QpIGFuZCB2ZXJpZmllcyB0aGVpciBvdXRwdXQu
CisiIiIKKworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworIyBDb25zdGFudHMuCitGTEFHX1BS
RUZJWCA9ICctLWd0ZXN0XycKK0xJU1RfVEVTVFNfRkxBRyA9IEZMQUdfUFJFRklYICsgJ2xpc3Rf
dGVzdHMnCitOT19DQVRDSF9FWENFUFRJT05TX0ZMQUcgPSBGTEFHX1BSRUZJWCArICdjYXRjaF9l
eGNlcHRpb25zPTAnCitGSUxURVJfRkxBRyA9IEZMQUdfUFJFRklYICsgJ2ZpbHRlcicKKworIyBQ
YXRoIHRvIHRoZSBnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtZXgtdGVzdF8gYmluYXJ5LCBj
b21waWxlZCB3aXRoCisjIGV4Y2VwdGlvbnMgZW5hYmxlZC4KK0VYX0VYRV9QQVRIID0gZ3Rlc3Rf
dGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisgICAgJ2dvb2dsZXRlc3QtY2F0Y2gt
ZXhjZXB0aW9ucy1leC10ZXN0XycpCisKKyMgUGF0aCB0byB0aGUgZ29vZ2xldGVzdC1jYXRjaC1l
eGNlcHRpb25zLXRlc3RfIGJpbmFyeSwgY29tcGlsZWQgd2l0aAorIyBleGNlcHRpb25zIGRpc2Fi
bGVkLgorRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgK
KyAgICAnZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLW5vLWV4LXRlc3RfJykKKworZW52aXJv
biA9IGd0ZXN0X3Rlc3RfdXRpbHMuZW52aXJvbgorU2V0RW52VmFyID0gZ3Rlc3RfdGVzdF91dGls
cy5TZXRFbnZWYXIKKworIyBUZXN0cyBpbiB0aGlzIGZpbGUgcnVuIGEgR29vZ2xlLVRlc3QtYmFz
ZWQgdGVzdCBwcm9ncmFtIGFuZCBleHBlY3QgaXQKKyMgdG8gdGVybWluYXRlIHByZW1hdHVyZWx5
LiAgVGhlcmVmb3JlIHRoZXkgYXJlIGluY29tcGF0aWJsZSB3aXRoCisjIHRoZSBwcmVtYXR1cmUt
ZXhpdC1maWxlIHByb3RvY29sIGJ5IGRlc2lnbi4gIFVuc2V0IHRoZQorIyBwcmVtYXR1cmUtZXhp
dCBmaWxlcGF0aCB0byBwcmV2ZW50IEdvb2dsZSBUZXN0IGZyb20gY3JlYXRpbmcKKyMgdGhlIGZp
bGUuCitTZXRFbnZWYXIoZ3Rlc3RfdGVzdF91dGlscy5QUkVNQVRVUkVfRVhJVF9GSUxFX0VOVl9W
QVIsIE5vbmUpCisKK1RFU1RfTElTVCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKKyAg
ICBbRVhFX1BBVEgsIExJU1RfVEVTVFNfRkxBR10sIGVudj1lbnZpcm9uKS5vdXRwdXQKKworU1VQ
UE9SVFNfU0VIX0VYQ0VQVElPTlMgPSAnVGhyb3dzU2VoRXhjZXB0aW9uJyBpbiBURVNUX0xJU1QK
KworaWYgU1VQUE9SVFNfU0VIX0VYQ0VQVElPTlM6CisgIEJJTkFSWV9PVVRQVVQgPSBndGVzdF90
ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0VYRV9QQVRIXSwgZW52PWVudmlyb24pLm91dHB1dAorCitF
WF9CSU5BUllfT1VUUFVUID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAorICAgIFtFWF9F
WEVfUEFUSF0sIGVudj1lbnZpcm9uKS5vdXRwdXQKKworCisjIFRoZSB0ZXN0cy4KK2lmIFNVUFBP
UlRTX1NFSF9FWENFUFRJT05TOgorICAjIHB5bGludDpkaXNhYmxlLW1zZz1DNjMwMgorICBjbGFz
cyBDYXRjaFNlaEV4Y2VwdGlvbnNUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAg
ICIiIlRlc3RzIGV4Y2VwdGlvbi1jYXRjaGluZyBiZWhhdmlvci4iIiIKKworCisgICAgZGVmIFRl
c3RTZWhFeGNlcHRpb25zKHNlbGYsIHRlc3Rfb3V0cHV0KToKKyAgICAgIHNlbGYuYXNzZXJ0Xygn
U0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24gJworICAgICAgICAgICAgICAgICAg
ICdpbiB0aGUgdGVzdCBmaXh0dXJlXCdzIGNvbnN0cnVjdG9yJworICAgICAgICAgICAgICAgICAg
IGluIHRlc3Rfb3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGgg
Y29kZSAweDJhIHRocm93biAnCisgICAgICAgICAgICAgICAgICAgJ2luIHRoZSB0ZXN0IGZpeHR1
cmVcJ3MgZGVzdHJ1Y3RvcicKKyAgICAgICAgICAgICAgICAgICBpbiB0ZXN0X291dHB1dCkKKyAg
ICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24gaW4g
U2V0VXBUZXN0Q2FzZSgpJworICAgICAgICAgICAgICAgICAgIGluIHRlc3Rfb3V0cHV0KQorICAg
ICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGggY29kZSAweDJhIHRocm93biBpbiBU
ZWFyRG93blRlc3RDYXNlKCknCisgICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCisg
ICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhyb3duIGlu
IFNldFVwKCknCisgICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCisgICAgICBzZWxm
LmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhyb3duIGluIFRlYXJEb3du
KCknCisgICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCisgICAgICBzZWxmLmFzc2Vy
dF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhyb3duIGluIHRoZSB0ZXN0IGJvZHkn
CisgICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCisKKyAgICBkZWYgdGVzdENhdGNo
ZXNTZWhFeGNlcHRpb25zV2l0aEN4eEV4Y2VwdGlvbnNFbmFibGVkKHNlbGYpOgorICAgICAgc2Vs
Zi5UZXN0U2VoRXhjZXB0aW9ucyhFWF9CSU5BUllfT1VUUFVUKQorCisgICAgZGVmIHRlc3RDYXRj
aGVzU2VoRXhjZXB0aW9uc1dpdGhDeHhFeGNlcHRpb25zRGlzYWJsZWQoc2VsZik6CisgICAgICBz
ZWxmLlRlc3RTZWhFeGNlcHRpb25zKEJJTkFSWV9PVVRQVVQpCisKKworY2xhc3MgQ2F0Y2hDeHhF
eGNlcHRpb25zVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgIiIiVGVzdHMgQysr
IGV4Y2VwdGlvbi1jYXRjaGluZyBiZWhhdmlvci4KKworICAgICBUZXN0cyBpbiB0aGlzIHRlc3Qg
Y2FzZSB2ZXJpZnkgdGhhdDoKKyAgICAgKiBDKysgZXhjZXB0aW9ucyBhcmUgY2F1Z2h0IGFuZCBs
b2dnZWQgYXMgQysrIChub3QgU0VIKSBleGNlcHRpb25zCisgICAgICogRXhjZXB0aW9uIHRocm93
biBhZmZlY3QgdGhlIHJlbWFpbmRlciBvZiB0aGUgdGVzdCB3b3JrIGZsb3cgaW4gdGhlCisgICAg
ICAgZXhwZWN0ZWQgbWFubmVyLgorICAiIiIKKworICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRp
b25zSW5GaXh0dXJlQ29uc3RydWN0b3Ioc2VsZik6CisgICAgc2VsZi5hc3NlcnRfKCdDKysgZXhj
ZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gJworICAgICAgICAgICAgICAgICAnIlN0YW5kYXJkIEMr
KyBleGNlcHRpb24iIHRocm93biAnCisgICAgICAgICAgICAgICAgICdpbiB0aGUgdGVzdCBmaXh0
dXJlXCdzIGNvbnN0cnVjdG9yJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVU
KQorICAgIHNlbGYuYXNzZXJ0XygndW5leHBlY3RlZCcgbm90IGluIEVYX0JJTkFSWV9PVVRQVVQs
CisgICAgICAgICAgICAgICAgICdUaGlzIGZhaWx1cmUgYmVsb25ncyBpbiB0aGlzIHRlc3Qgb25s
eSBpZiAnCisgICAgICAgICAgICAgICAgICciQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Qi
IChubyBxdW90ZXMpICcKKyAgICAgICAgICAgICAgICAgJ2FwcGVhcnMgb24gdGhlIHNhbWUgbGlu
ZSBhcyB3b3JkcyAiY2FsbGVkIHVuZXhwZWN0ZWRseSInKQorCisgIGlmICgnQ3h4RXhjZXB0aW9u
SW5EZXN0cnVjdG9yVGVzdC5UaHJvd3NFeGNlcHRpb25JbkRlc3RydWN0b3InIGluCisgICAgICBF
WF9CSU5BUllfT1VUUFVUKToKKworICAgIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJbkZp
eHR1cmVEZXN0cnVjdG9yKHNlbGYpOgorICAgICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0aW9u
IHdpdGggZGVzY3JpcHRpb24gJworICAgICAgICAgICAgICAgICAgICciU3RhbmRhcmQgQysrIGV4
Y2VwdGlvbiIgdGhyb3duICcKKyAgICAgICAgICAgICAgICAgICAnaW4gdGhlIHRlc3QgZml4dHVy
ZVwncyBkZXN0cnVjdG9yJworICAgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQp
CisgICAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3Q6OlRlYXJE
b3duVGVzdENhc2UoKSAnCisgICAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4n
CisgICAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKworICBkZWYgdGVzdENh
dGNoZXNDeHhFeGNlcHRpb25zSW5TZXRVcFRlc3RDYXNlKHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0
XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICJTdGFuZGFyZCBDKysgZXhjZXB0aW9u
IicKKyAgICAgICAgICAgICAgICAgJyB0aHJvd24gaW4gU2V0VXBUZXN0Q2FzZSgpJworICAgICAg
ICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhj
ZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAnCisgICAgICAgICAg
ICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5B
UllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNl
VGVzdCBjb25zdHJ1Y3RvciAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQu
JworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0
XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCBkZXN0cnVjdG9yICcKKyAgICAgICAg
ICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJ
TkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVzdENh
c2VUZXN0OjpTZXRVcCgpICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4n
CisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRf
KCdDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0OjpUZWFyRG93bigpICcKKyAgICAgICAg
ICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJ
TkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVzdENh
c2VUZXN0IHRlc3QgYm9keSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQu
JworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorCisgIGRlZiB0ZXN0Q2F0
Y2hlc0N4eEV4Y2VwdGlvbnNJblRlYXJEb3duVGVzdENhc2Uoc2VsZik6CisgICAgc2VsZi5hc3Nl
cnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gIlN0YW5kYXJkIEMrKyBleGNlcHRp
b24iJworICAgICAgICAgICAgICAgICAnIHRocm93biBpbiBUZWFyRG93blRlc3RDYXNlKCknCisg
ICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisKKyAgZGVmIHRlc3RDYXRjaGVz
Q3h4RXhjZXB0aW9uc0luU2V0VXAoc2VsZik6CisgICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0
aW9uIHdpdGggZGVzY3JpcHRpb24gIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iJworICAgICAgICAg
ICAgICAgICAnIHRocm93biBpbiBTZXRVcCgpJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5B
UllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Q6OlRl
YXJEb3duVGVzdENhc2UoKSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQu
JworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0
XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QgZGVzdHJ1Y3RvciAnCisgICAgICAgICAgICAgICAg
ICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VU
UFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Q6OlRlYXJEb3du
KCkgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAg
ICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ3VuZXhwZWN0ZWQn
IG5vdCBpbiBFWF9CSU5BUllfT1VUUFVULAorICAgICAgICAgICAgICAgICAnVGhpcyBmYWlsdXJl
IGJlbG9uZ3MgaW4gdGhpcyB0ZXN0IG9ubHkgaWYgJworICAgICAgICAgICAgICAgICAnIkN4eEV4
Y2VwdGlvbkluU2V0VXBUZXN0IiAobm8gcXVvdGVzKSAnCisgICAgICAgICAgICAgICAgICdhcHBl
YXJzIG9uIHRoZSBzYW1lIGxpbmUgYXMgd29yZHMgImNhbGxlZCB1bmV4cGVjdGVkbHkiJykKKwor
ICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5UZWFyRG93bihzZWxmKToKKyAgICBzZWxm
LmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlvbiAiU3RhbmRhcmQgQysrIGV4
Y2VwdGlvbiInCisgICAgICAgICAgICAgICAgICcgdGhyb3duIGluIFRlYXJEb3duKCknCisgICAg
ICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhF
eGNlcHRpb25JblRlYXJEb3duVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICcKKyAgICAgICAgICAg
ICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFS
WV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCBk
ZXN0cnVjdG9yICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAg
ICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisKKyAgZGVmIHRlc3RDYXRjaGVzQ3h4
RXhjZXB0aW9uc0luVGVzdEJvZHkoc2VsZik6CisgICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0
aW9uIHdpdGggZGVzY3JpcHRpb24gIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iJworICAgICAgICAg
ICAgICAgICAnIHRocm93biBpbiB0aGUgdGVzdCBib2R5JworICAgICAgICAgICAgICAgICBpbiBF
WF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5UZXN0Qm9k
eVRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMg
ZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNl
bGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QgZGVzdHJ1Y3RvciAnCisgICAg
ICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBF
WF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5UZXN0Qm9k
eVRlc3Q6OlRlYXJEb3duKCkgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVk
LicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKworICBkZWYgdGVzdENh
dGNoZXNOb25TdGRDeHhFeGNlcHRpb25zKHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0XygnVW5rbm93
biBDKysgZXhjZXB0aW9uIHRocm93biBpbiB0aGUgdGVzdCBib2R5JworICAgICAgICAgICAgICAg
ICBpbiBFWF9CSU5BUllfT1VUUFVUKQorCisgIGRlZiB0ZXN0VW5oYW5kbGVkQ3h4RXhjZXB0aW9u
c0Fib3J0VGhlUHJvZ3JhbShzZWxmKToKKyAgICAjIEZpbHRlcnMgb3V0IFNFSCBleGNlcHRpb24g
dGVzdHMgb24gV2luZG93cy4gVW5oYW5kbGVkIFNFSCBleGNlcHRpb25zCisgICAgIyBjYXVzZSB0
ZXN0cyB0byBzaG93IHBvcC11cCB3aW5kb3dzIHRoZXJlLgorICAgIEZJVExFUl9PVVRfU0VIX1RF
U1RTX0ZMQUcgPSBGSUxURVJfRkxBRyArICc9LSpTZWgqJworICAgICMgQnkgZGVmYXVsdCwgR29v
Z2xlIFRlc3QgZG9lc24ndCBjYXRjaCB0aGUgZXhjZXB0aW9ucy4KKyAgICB1bmNhdWdodF9leGNl
cHRpb25zX2V4X2JpbmFyeV9vdXRwdXQgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisg
ICAgICAgIFtFWF9FWEVfUEFUSCwKKyAgICAgICAgIE5PX0NBVENIX0VYQ0VQVElPTlNfRkxBRywK
KyAgICAgICAgIEZJVExFUl9PVVRfU0VIX1RFU1RTX0ZMQUddLAorICAgICAgICBlbnY9ZW52aXJv
bikub3V0cHV0CisKKyAgICBzZWxmLmFzc2VydF8oJ1VuaGFuZGxlZCBDKysgZXhjZXB0aW9uIHRl
cm1pbmF0aW5nIHRoZSBwcm9ncmFtJworICAgICAgICAgICAgICAgICBpbiB1bmNhdWdodF9leGNl
cHRpb25zX2V4X2JpbmFyeV9vdXRwdXQpCisgICAgc2VsZi5hc3NlcnRfKCd1bmV4cGVjdGVkJyBu
b3QgaW4gdW5jYXVnaHRfZXhjZXB0aW9uc19leF9iaW5hcnlfb3V0cHV0KQorCisKK2lmIF9fbmFt
ZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9u
cy10ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1jYXRj
aC1leGNlcHRpb25zLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5ZGFlNzAwMzBhMzNhZWFiYTA2MGFh
ZWY5N2E5NzlhOGY1ODA0YWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0Xy5jYwpAQCAtMCwwICsx
LDMxMSBAQAorLy8gQ29weXJpZ2h0IDIwMTAsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
Ly8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisv
LworLy8gVGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZi4gVGVzdHMgaW4gdGhpcyBmaWxlIHRo
cm93IEMrKyBvciBTRUgKKy8vIGV4Y2VwdGlvbnMsIGFuZCB0aGUgb3V0cHV0IGlzIHZlcmlmaWVk
IGJ5CisvLyBnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdC5weS4KKworI2luY2x1ZGUg
PHN0ZGlvLmg+ICAvLyBOT0xJTlQKKyNpbmNsdWRlIDxzdGRsaWIuaD4gIC8vIEZvciBleGl0KCku
CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisjaWYgR1RFU1RfSEFTX1NFSAorIyBpbmNs
dWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19FWENFUFRJT05TCisjIGlu
Y2x1ZGUgPGV4Y2VwdGlvbj4gIC8vIEZvciBzZXRfdGVybWluYXRlKCkuCisjIGluY2x1ZGUgPHN0
ZGV4Y2VwdD4KKyNlbmRpZgorCit1c2luZyB0ZXN0aW5nOjpUZXN0OworCisjaWYgR1RFU1RfSEFT
X1NFSAorCitjbGFzcyBTZWhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCA6IHB1YmxpYyBUZXN0
IHsKKyBwdWJsaWM6CisgIFNlaEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0KCkgeyBSYWlzZUV4
Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7IH0KK307CisKK1RFU1RfRihTZWhFeGNlcHRpb25JbkNv
bnN0cnVjdG9yVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5Db25zdHJ1Y3Rvcikge30KKworY2xhc3Mg
U2VoRXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6Cisg
IH5TZWhFeGNlcHRpb25JbkRlc3RydWN0b3JUZXN0KCkgeyBSYWlzZUV4Y2VwdGlvbig0MiwgMCwg
MCwgTlVMTCk7IH0KK307CisKK1RFU1RfRihTZWhFeGNlcHRpb25JbkRlc3RydWN0b3JUZXN0LCBU
aHJvd3NFeGNlcHRpb25JbkRlc3RydWN0b3IpIHt9CisKK2NsYXNzIFNlaEV4Y2VwdGlvbkluU2V0
VXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBT
ZXRVcFRlc3RDYXNlKCkgeyBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7IH0KK307CisK
K1RFU1RfRihTZWhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0LCBUaHJvd3NFeGNlcHRpb25J
blNldFVwVGVzdENhc2UpIHt9CisKK2NsYXNzIFNlaEV4Y2VwdGlvbkluVGVhckRvd25UZXN0Q2Fz
ZVRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRl
c3RDYXNlKCkgeyBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7IH0KK307CisKK1RFU1Rf
RihTZWhFeGNlcHRpb25JblRlYXJEb3duVGVzdENhc2VUZXN0LCBUaHJvd3NFeGNlcHRpb25JblRl
YXJEb3duVGVzdENhc2UpIHt9CisKK2NsYXNzIFNlaEV4Y2VwdGlvbkluU2V0VXBUZXN0IDogcHVi
bGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeyBSYWlzZUV4
Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7IH0KK307CisKK1RFU1RfRihTZWhFeGNlcHRpb25JblNl
dFVwVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5TZXRVcCkge30KKworY2xhc3MgU2VoRXhjZXB0aW9u
SW5UZWFyRG93blRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIHZv
aWQgVGVhckRvd24oKSB7IFJhaXNlRXhjZXB0aW9uKDQyLCAwLCAwLCBOVUxMKTsgfQorfTsKKwor
VEVTVF9GKFNlaEV4Y2VwdGlvbkluVGVhckRvd25UZXN0LCBUaHJvd3NFeGNlcHRpb25JblRlYXJE
b3duKSB7fQorCitURVNUKFNlaEV4Y2VwdGlvblRlc3QsIFRocm93c1NlaEV4Y2VwdGlvbikgewor
ICBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1NFSAorCisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworY2xhc3MgQ3h4RXhjZXB0aW9u
SW5Db25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBDeHhFeGNlcHRp
b25JbkNvbnN0cnVjdG9yVGVzdCgpIHsKKyAgICAvLyBXaXRob3V0IHRoaXMgbWFjcm8gVkMrKyBj
b21wbGFpbnMgYWJvdXQgdW5yZWFjaGFibGUgY29kZSBhdCB0aGUgZW5kIG9mCisgICAgLy8gdGhl
IGNvbnN0cnVjdG9yLgorICAgIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklO
R19CRUxPV18oCisgICAgICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcigiU3RhbmRhcmQgQysr
IGV4Y2VwdGlvbiIpKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7
CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9y
VGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3Rl
ZC5cbiIpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIH5DeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9y
VGVzdCgpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9y
VGVzdCBkZXN0cnVjdG9yICIKKyAgICAgICAgICAgICAgICAgIDw8ICJjYWxsZWQgdW5leHBlY3Rl
ZGx5LiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgQUREX0ZBSUxVUkUo
KSA8PCAiQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Q6OlNldFVwKCkgIgorICAgICAgICAg
ICAgICAgICAgPDwgImNhbGxlZCB1bmV4cGVjdGVkbHkuIjsKKyAgfQorCisgIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJDeHhFeGNlcHRpb25JbkNvbnN0
cnVjdG9yVGVzdDo6VGVhckRvd24oKSAiCisgICAgICAgICAgICAgICAgICA8PCAiY2FsbGVkIHVu
ZXhwZWN0ZWRseS4iOworICB9Cit9OworCitURVNUX0YoQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3Rv
clRlc3QsIFRocm93c0V4Y2VwdGlvbkluQ29uc3RydWN0b3IpIHsKKyAgQUREX0ZBSUxVUkUoKSA8
PCAiQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QgdGVzdCBib2R5ICIKKyAgICAgICAgICAg
ICAgICA8PCAiY2FsbGVkIHVuZXhwZWN0ZWRseS4iOworfQorCisvLyBFeGNlcHRpb25zIGluIGRl
c3RydWN0b3JzIGFyZSBub3Qgc3VwcG9ydGVkIGluIEMrKzExLgorI2lmICFHVEVTVF9MQU5HX0NY
WDExCitjbGFzcyBDeHhFeGNlcHRpb25JbkRlc3RydWN0b3JUZXN0IDogcHVibGljIFRlc3Qgewor
IHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBwcmludGYo
IiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3Q6OlRlYXJEb3du
VGVzdENhc2UoKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQor
CisgcHJvdGVjdGVkOgorICB+Q3h4RXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCgpIHsKKyAgICBH
VEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKAorICAgICAgICB0
aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iKSk7CisgIH0K
K307CisKK1RFU1RfRihDeHhFeGNlcHRpb25JbkRlc3RydWN0b3JUZXN0LCBUaHJvd3NFeGNlcHRp
b25JbkRlc3RydWN0b3IpIHt9CisjZW5kaWYgIC8vIEMrKzExIG1vZGUKKworY2xhc3MgQ3h4RXhj
ZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIEN4
eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAg
ICAgICAgICJDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0IGNvbnN0cnVjdG9yICIKKyAg
ICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyAgc3RhdGljIHZvaWQg
U2V0VXBUZXN0Q2FzZSgpIHsKKyAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJk
IEMrKyBleGNlcHRpb24iKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2Uo
KSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblNldFVwVGVz
dENhc2VUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4
cGVjdGVkLlxuIik7CisgIH0KKworIHByb3RlY3RlZDoKKyAgfkN4eEV4Y2VwdGlvbkluU2V0VXBU
ZXN0Q2FzZVRlc3QoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRp
b25JblNldFVwVGVzdENhc2VUZXN0IGRlc3RydWN0b3IgIgorICAgICAgICAgICAiY2FsbGVkIGFz
IGV4cGVjdGVkLlxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgcHJp
bnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0OjpT
ZXRVcCgpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyAg
dmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAi
Q3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6VGVhckRvd24oKSAiCisgICAgICAgICAg
ICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorfTsKKworVEVTVF9GKEN4eEV4Y2VwdGlv
bkluU2V0VXBUZXN0Q2FzZVRlc3QsIFRocm93c0V4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZSkgewor
ICBwcmludGYoIiVzIiwKKyAgICAgICAgICJDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0
IHRlc3QgYm9keSAiCisgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7Cit9CisKK2Ns
YXNzIEN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0Q2FzZVRlc3QgOiBwdWJsaWMgVGVzdCB7Cisg
cHVibGljOgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHRocm93IHN0
ZDo6cnVudGltZV9lcnJvcigiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIpOworICB9Cit9OworCitU
RVNUX0YoQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNlVGVzdCwgVGhyb3dzRXhjZXB0aW9u
SW5UZWFyRG93blRlc3RDYXNlKSB7fQorCitjbGFzcyBDeHhFeGNlcHRpb25JblNldFVwVGVzdCA6
IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2Uo
KSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblNldFVwVGVz
dDo6VGVhckRvd25UZXN0Q2FzZSgpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5c
biIpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIH5DeHhFeGNlcHRpb25JblNldFVwVGVzdCgpIHsK
KyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0IGRl
c3RydWN0b3IgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKwor
ICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IHRocm93IHN0ZDo6cnVudGltZV9lcnJvcigiU3RhbmRh
cmQgQysrIGV4Y2VwdGlvbiIpOyB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAg
IHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Q6OlRlYXJE
b3duKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KK307CisK
K1RFU1RfRihDeHhFeGNlcHRpb25JblNldFVwVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5TZXRVcCkg
eworICBBRERfRkFJTFVSRSgpIDw8ICJDeHhFeGNlcHRpb25JblNldFVwVGVzdCB0ZXN0IGJvZHkg
IgorICAgICAgICAgICAgICAgIDw8ICJjYWxsZWQgdW5leHBlY3RlZGx5LiI7Cit9CisKK2NsYXNz
IEN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAg
c3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAg
ICAgICAgIkN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgIgor
ICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworIHByb3RlY3RlZDoK
KyAgfkN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0KCkgeworICAgIHByaW50ZigiJXMiLAorICAg
ICAgICAgICAiQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3QgZGVzdHJ1Y3RvciAiCisgICAgICAg
ICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpIHsKKyAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBleGNl
cHRpb24iKTsKKyAgfQorfTsKKworVEVTVF9GKEN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0LCBU
aHJvd3NFeGNlcHRpb25JblRlYXJEb3duKSB7fQorCitjbGFzcyBDeHhFeGNlcHRpb25JblRlc3RC
b2R5VGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFRlYXJEb3du
VGVzdENhc2UoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25J
blRlc3RCb2R5VGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIKKyAgICAgICAgICAgImNhbGxlZCBh
cyBleHBlY3RlZC5cbiIpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIH5DeHhFeGNlcHRpb25JblRl
c3RCb2R5VGVzdCgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlv
bkluVGVzdEJvZHlUZXN0IGRlc3RydWN0b3IgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVj
dGVkLlxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgcHJpbnRm
KCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdDo6VGVhckRvd24o
KSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorfTsKKworVEVT
VF9GKEN4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0LCBUaHJvd3NTdGRDeHhFeGNlcHRpb24pIHsK
KyAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIik7Cit9
CisKK1RFU1QoQ3h4RXhjZXB0aW9uVGVzdCwgVGhyb3dzTm9uU3RkQ3h4RXhjZXB0aW9uKSB7Cisg
IHRocm93ICJDLXN0cmluZyI7Cit9CisKKy8vIFRoaXMgdGVybWluYXRlIGhhbmRsZXIgYWJvcnRz
IHRoZSBwcm9ncmFtIHVzaW5nIGV4aXQoKSByYXRoZXIgdGhhbiBhYm9ydCgpLgorLy8gVGhpcyBh
dm9pZHMgc2hvd2luZyBwb3AtdXBzIG9uIFdpbmRvd3Mgc3lzdGVtcyBhbmQgY29yZSBkdW1wcyBv
biBVbml4LWxpa2UKKy8vIG9uZXMuCit2b2lkIFRlcm1pbmF0ZUhhbmRsZXIoKSB7CisgIGZwcmlu
dGYoc3RkZXJyLCAiJXNcbiIsICJVbmhhbmRsZWQgQysrIGV4Y2VwdGlvbiB0ZXJtaW5hdGluZyB0
aGUgcHJvZ3JhbS4iKTsKKyAgZmZsdXNoKE5VTEwpOworICBleGl0KDMpOworfQorCisjZW5kaWYg
IC8vIEdURVNUX0hBU19FWENFUFRJT05TCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJn
dikgeworI2lmIEdURVNUX0hBU19FWENFUFRJT05TCisgIHN0ZDo6c2V0X3Rlcm1pbmF0ZSgmVGVy
bWluYXRlSGFuZGxlcik7CisjZW5kaWYKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2Ms
IGFyZ3YpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNvbG9yLXRlc3QucHkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY29sb3ItdGVzdC5weQpuZXcgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mM2I3Yzk5OTBiY2Y0NGE2NTAzNmMyNTNlN2EwMTg0NWFmOWMzNzE3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNvbG9yLXRlc3Qu
cHkKQEAgLTAsMCArMSwxMjcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmln
aHQgMjAwOCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3QgY29ycmVjdGx5IGRldGVybWlu
ZXMgd2hldGhlciB0byB1c2UgY29sb3JzLiIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBndGVzdF90
ZXN0X3V0aWxzCisKK0lTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdudCcKKworQ09MT1JfRU5WX1ZB
UiA9ICdHVEVTVF9DT0xPUicKK0NPTE9SX0ZMQUcgPSAnZ3Rlc3RfY29sb3InCitDT01NQU5EID0g
Z3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2dvb2dsZXRlc3QtY29sb3It
dGVzdF8nKQorCisKK2RlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgorICAiIiJTZXRzIHRo
ZSBlbnYgdmFyaWFibGUgdG8gJ3ZhbHVlJzsgdW5zZXRzIGl0IHdoZW4gJ3ZhbHVlJyBpcyBOb25l
LiIiIgorCisgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAgIG9zLmVudmlyb25bZW52X3Zhcl0g
PSB2YWx1ZQorICBlbGlmIGVudl92YXIgaW4gb3MuZW52aXJvbjoKKyAgICBkZWwgb3MuZW52aXJv
bltlbnZfdmFyXQorCisKK2RlZiBVc2VzQ29sb3IodGVybSwgY29sb3JfZW52X3ZhciwgY29sb3Jf
ZmxhZyk6CisgICIiIlJ1bnMgZ29vZ2xldGVzdC1jb2xvci10ZXN0XyBhbmQgcmV0dXJucyBpdHMg
ZXhpdCBjb2RlLiIiIgorCisgIFNldEVudlZhcignVEVSTScsIHRlcm0pCisgIFNldEVudlZhcihD
T0xPUl9FTlZfVkFSLCBjb2xvcl9lbnZfdmFyKQorCisgIGlmIGNvbG9yX2ZsYWcgaXMgTm9uZToK
KyAgICBhcmdzID0gW10KKyAgZWxzZToKKyAgICBhcmdzID0gWyctLSVzPSVzJyAlIChDT0xPUl9G
TEFHLCBjb2xvcl9mbGFnKV0KKyAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhbQ09N
TUFORF0gKyBhcmdzKQorICByZXR1cm4gbm90IHAuZXhpdGVkIG9yIHAuZXhpdF9jb2RlCisKKwor
Y2xhc3MgR1Rlc3RDb2xvclRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgIGRlZiB0
ZXN0Tm9FbnZWYXJOb0ZsYWcoc2VsZik6CisgICAgIiIiVGVzdHMgdGhlIGNhc2Ugd2hlbiB0aGVy
ZSdzIG5laXRoZXIgR1RFU1RfQ09MT1Igbm9yIC0tZ3Rlc3RfY29sb3IuIiIiCisKKyAgICBpZiBu
b3QgSVNfV0lORE9XUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdkdW1iJywg
Tm9uZSwgTm9uZSkpCisgICAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcignZW1hY3MnLCBO
b25lLCBOb25lKSkKKyAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybS1tb25v
JywgTm9uZSwgTm9uZSkpCisgICAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigndW5rbm93
bicsIE5vbmUsIE5vbmUpKQorICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoTm9uZSwg
Tm9uZSwgTm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignbGludXgnLCBOb25lLCBO
b25lKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdjeWd3aW4nLCBOb25lLCBOb25lKSkK
KyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybScsIE5vbmUsIE5vbmUpKQorICAgIHNl
bGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywgTm9uZSwgTm9uZSkpCisgICAgc2Vs
Zi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tMjU2Y29sb3InLCBOb25lLCBOb25lKSkKKworICBk
ZWYgdGVzdEZsYWdPbmx5KHNlbGYpOgorICAgICIiIlRlc3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUn
cyAtLWd0ZXN0X2NvbG9yIGJ1dCBub3QgR1RFU1RfQ09MT1IuIiIiCisKKyAgICBzZWxmLmFzc2Vy
dF8obm90IFVzZXNDb2xvcignZHVtYicsIE5vbmUsICdubycpKQorICAgIHNlbGYuYXNzZXJ0Xyhu
b3QgVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsIE5vbmUsICdubycpKQorICAgIGlmIG5vdCBJU19X
SU5ET1dTOgorICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ2VtYWNzJywgTm9uZSwg
J2F1dG8nKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybScsIE5vbmUsICdhdXRv
JykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUsICd5ZXMnKSkKKyAg
ICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybScsIE5vbmUsICd5ZXMnKSkKKworICBkZWYg
dGVzdEVudlZhck9ubHkoc2VsZik6CisgICAgIiIiVGVzdHMgdGhlIGNhc2Ugd2hlbiB0aGVyZSdz
IEdURVNUX0NPTE9SIGJ1dCBub3QgLS1ndGVzdF9jb2xvci4iIiIKKworICAgIHNlbGYuYXNzZXJ0
Xyhub3QgVXNlc0NvbG9yKCdkdW1iJywgJ25vJywgTm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKG5v
dCBVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywgJ25vJywgTm9uZSkpCisgICAgaWYgbm90IElTX1dJ
TkRPV1M6CisgICAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcignZHVtYicsICdhdXRvJywg
Tm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAnYXV0bycs
IE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCAneWVzJywgTm9uZSkp
CisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAneWVzJywgTm9uZSkp
CisKKyAgZGVmIHRlc3RFbnZWYXJBbmRGbGFnKHNlbGYpOgorICAgICIiIlRlc3RzIHRoZSBjYXNl
IHdoZW4gdGhlcmUgYXJlIGJvdGggR1RFU1RfQ09MT1IgYW5kIC0tZ3Rlc3RfY29sb3IuIiIiCisK
KyAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAnbm8nLCAnbm8n
KSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgJ25vJywgJ3llcycpKQorICAg
IHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywgJ25vJywgJ2F1dG8nKSkKKwor
ICBkZWYgdGVzdEFsaWFzZXNPZlllc0FuZE5vKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5nIGFs
aWFzZXMgaW4gc3BlY2lmeWluZyAtLWd0ZXN0X2NvbG9yLiIiIgorCisgICAgc2VsZi5hc3NlcnRf
KFVzZXNDb2xvcignZHVtYicsIE5vbmUsICd0cnVlJykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXND
b2xvcignZHVtYicsIE5vbmUsICdZRVMnKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdk
dW1iJywgTm9uZSwgJ1QnKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9u
ZSwgJzEnKSkKKworICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybScsIE5vbmUs
ICdmJykpCisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwgJ2Zh
bHNlJykpCisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwgJzAn
KSkKKyAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0nLCBOb25lLCAndW5rbm93
bicpKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMu
TWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtY29sb3ItdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtY29sb3ItdGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjIwYTNhMDA1NDhmZGIxZTkzNWEzZGExNmRm
NTYzYTUwZTE3OWE4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1jb2xvci10ZXN0Xy5jYwpAQCAtMCwwICsxLDYyIEBACisvLyBDb3B5
cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
Ky8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1
dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
Ky8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gQSBoZWxwZXIgcHJv
Z3JhbSBmb3IgdGVzdGluZyBob3cgR29vZ2xlIFRlc3QgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHVz
ZQorLy8gY29sb3JzIGluIHRoZSBvdXRwdXQuICBJdCBwcmludHMgIllFUyIgYW5kIHJldHVybnMg
MSBpZiBHb29nbGUgVGVzdAorLy8gZGVjaWRlcyB0byB1c2UgY29sb3JzLCBhbmQgcHJpbnRzICJO
TyIgYW5kIHJldHVybnMgMCBvdGhlcndpc2UuCisKKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgi
CisKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaG91bGRVc2VDb2xvcjsKKworLy8gVGhlIHB1
cnBvc2Ugb2YgdGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUgVW5pdFRlc3Qgc2luZ2xldG9uIGlz
CisvLyBjcmVhdGVkIGJlZm9yZSBtYWluKCkgaXMgZW50ZXJlZCwgYW5kIHRodXMgdGhhdCBTaG91
bGRVc2VDb2xvcigpCisvLyB3b3JrcyB0aGUgc2FtZSB3YXkgYXMgaW4gYSByZWFsIEdvb2dsZS1U
ZXN0LWJhc2VkIHRlc3QuICBXZSBkb24ndCBhY3R1YWwKKy8vIHJ1biB0aGUgVEVTVCBpdHNlbGYu
CitURVNUKEdUZXN0Q29sb3JUZXN0LCBEdW1teSkgeworfQorCitpbnQgbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpIHsKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwor
CisgIGlmIChTaG91bGRVc2VDb2xvcih0cnVlKSkgeworICAgIC8vIEdvb2dsZSBUZXN0IGRlY2lk
ZXMgdG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0IChhc3N1bWluZyBpdAorICAgIC8vIGdvZXMg
dG8gYSBUVFkpLgorICAgIHByaW50ZigiWUVTXG4iKTsKKyAgICByZXR1cm4gMTsKKyAgfSBlbHNl
IHsKKyAgICAvLyBHb29nbGUgVGVzdCBkZWNpZGVzIG5vdCB0byB1c2UgY29sb3JzIGluIHRoZSBv
dXRwdXQuCisgICAgcHJpbnRmKCJOT1xuIik7CisgICAgcmV0dXJuIDA7CisgIH0KK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1kZWF0aC10ZXN0
LXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZGVhdGgt
dGVzdC10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwYzMwMjZmYjU4OTU2NjBhZDJjOWQ2NWZiZDk5YjVm
YWY5YWQ0OGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtZGVhdGgtdGVzdC10ZXN0LmNjCkBAIC0wLDAgKzEsMTQyMyBAQAorLy8gQ29w
eXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmli
dXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gVGVzdHMgZm9y
IGRlYXRoIHRlc3RzLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmls
ZXBhdGguaCIKKwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlOwordXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWU7CisKKyNpZiBHVEVTVF9IQVNfREVBVEhfVEVT
VAorCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKyMgIGluY2x1ZGUgPGRpcmVjdC5oPiAgICAgICAg
ICAvLyBGb3IgY2hkaXIoKS4KKyMgZWxzZQorIyAgaW5jbHVkZSA8dW5pc3RkLmg+CisjICBpbmNs
dWRlIDxzeXMvd2FpdC5oPiAgICAgICAgLy8gRm9yIHdhaXRwaWQuCisjIGVuZGlmICAvLyBHVEVT
VF9PU19XSU5ET1dTCisKKyMgaW5jbHVkZSA8bGltaXRzLmg+CisjIGluY2x1ZGUgPHNpZ25hbC5o
PgorIyBpbmNsdWRlIDxzdGRpby5oPgorCisjIGlmIEdURVNUX09TX0xJTlVYCisjICBpbmNsdWRl
IDxzeXMvdGltZS5oPgorIyBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKKworIyBpbmNsdWRlICJn
dGVzdC9ndGVzdC1zcGkuaCIKKyMgaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgor
CituYW1lc3BhY2UgcG9zaXggPSA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDsKKwordXNpbmcg
dGVzdGluZzo6TWVzc2FnZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q7Cit1
c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0RmFjdG9yeTsKK3VzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpGaWxlUGF0aDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRMYXN0RXJy
bm9EZXNjcmlwdGlvbjsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRVbml0VGVzdEltcGw7
Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SW5EZWF0aFRlc3RDaGlsZDsKK3VzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpQYXJzZU5hdHVyYWxOdW1iZXI7CisKK25hbWVzcGFjZSB0ZXN0aW5nIHsK
K25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIEEgaGVscGVyIGNsYXNzIHdob3NlIG9iamVjdHMg
cmVwbGFjZSB0aGUgZGVhdGggdGVzdCBmYWN0b3J5IGZvciBhCisvLyBzaW5nbGUgVW5pdFRlc3Qg
b2JqZWN0IGR1cmluZyB0aGVpciBsaWZldGltZXMuCitjbGFzcyBSZXBsYWNlRGVhdGhUZXN0RmFj
dG9yeSB7CisgcHVibGljOgorICBleHBsaWNpdCBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeShEZWF0
aFRlc3RGYWN0b3J5KiBuZXdfZmFjdG9yeSkKKyAgICAgIDogdW5pdF90ZXN0X2ltcGxfKEdldFVu
aXRUZXN0SW1wbCgpKSB7CisgICAgb2xkX2ZhY3RvcnlfID0gdW5pdF90ZXN0X2ltcGxfLT5kZWF0
aF90ZXN0X2ZhY3RvcnlfLnJlbGVhc2UoKTsKKyAgICB1bml0X3Rlc3RfaW1wbF8tPmRlYXRoX3Rl
c3RfZmFjdG9yeV8ucmVzZXQobmV3X2ZhY3RvcnkpOworICB9CisKKyAgflJlcGxhY2VEZWF0aFRl
c3RGYWN0b3J5KCkgeworICAgIHVuaXRfdGVzdF9pbXBsXy0+ZGVhdGhfdGVzdF9mYWN0b3J5Xy5y
ZWxlYXNlKCk7CisgICAgdW5pdF90ZXN0X2ltcGxfLT5kZWF0aF90ZXN0X2ZhY3RvcnlfLnJlc2V0
KG9sZF9mYWN0b3J5Xyk7CisgIH0KKyBwcml2YXRlOgorICAvLyBQcmV2ZW50cyBjb3B5aW5nIFJl
cGxhY2VEZWF0aFRlc3RGYWN0b3J5IG9iamVjdHMuCisgIFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5
KGNvbnN0IFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5Jik7CisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0
IFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5Jik7CisKKyAgVW5pdFRlc3RJbXBsKiB1bml0X3Rlc3Rf
aW1wbF87CisgIERlYXRoVGVzdEZhY3RvcnkqIG9sZF9mYWN0b3J5XzsKK307CisKK30gIC8vIG5h
bWVzcGFjZSBpbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKwordm9pZCBEaWVXaXRo
TWVzc2FnZShjb25zdCA6OnN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7CisgIGZwcmludGYoc3RkZXJy
LCAiJXMiLCBtZXNzYWdlLmNfc3RyKCkpOworICBmZmx1c2goc3RkZXJyKTsgIC8vIE1ha2Ugc3Vy
ZSB0aGUgdGV4dCBpcyBwcmludGVkIGJlZm9yZSB0aGUgcHJvY2VzcyBleGl0cy4KKworICAvLyBX
ZSBjYWxsIF9leGl0KCkgaW5zdGVhZCBvZiBleGl0KCksIGFzIHRoZSBmb3JtZXIgaXMgYSBkaXJl
Y3QKKyAgLy8gc3lzdGVtIGNhbGwgYW5kIHRodXMgc2FmZXIgaW4gdGhlIHByZXNlbmNlIG9mIHRo
cmVhZHMuICBleGl0KCkKKyAgLy8gd2lsbCBpbnZva2UgdXNlci1kZWZpbmVkIGV4aXQtaG9va3Ms
IHdoaWNoIG1heSBkbyBkYW5nZXJvdXMKKyAgLy8gdGhpbmdzIHRoYXQgY29uZmxpY3Qgd2l0aCBk
ZWF0aCB0ZXN0cy4KKyAgLy8KKyAgLy8gU29tZSBjb21waWxlcnMgY2FuIHJlY29nbml6ZSB0aGF0
IF9leGl0KCkgbmV2ZXIgcmV0dXJucyBhbmQgaXNzdWUgdGhlCisgIC8vICd1bnJlYWNoYWJsZSBj
b2RlJyB3YXJuaW5nIGZvciBjb2RlIGZvbGxvd2luZyB0aGlzIGZ1bmN0aW9uLCB1bmxlc3MKKyAg
Ly8gZm9vbGVkIGJ5IGEgZmFrZSBjb25kaXRpb24uCisgIGlmIChBbHdheXNUcnVlKCkpCisgICAg
X2V4aXQoMSk7Cit9CisKK3ZvaWQgRGllSW5zaWRlKGNvbnN0IDo6c3RkOjpzdHJpbmcmIGZ1bmN0
aW9uKSB7CisgIERpZVdpdGhNZXNzYWdlKCJkZWF0aCBpbnNpZGUgIiArIGZ1bmN0aW9uICsgIigp
LiIpOworfQorCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHdvcmsuCisKK2NsYXNzIFRlc3RG
b3JEZWF0aFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICBUZXN0
Rm9yRGVhdGhUZXN0KCkgOiBvcmlnaW5hbF9kaXJfKEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkp
IHt9CisKKyAgdmlydHVhbCB+VGVzdEZvckRlYXRoVGVzdCgpIHsKKyAgICBwb3NpeDo6Q2hEaXIo
b3JpZ2luYWxfZGlyXy5jX3N0cigpKTsKKyAgfQorCisgIC8vIEEgc3RhdGljIG1lbWJlciBmdW5j
dGlvbiB0aGF0J3MgZXhwZWN0ZWQgdG8gZGllLgorICBzdGF0aWMgdm9pZCBTdGF0aWNNZW1iZXJG
dW5jdGlvbigpIHsgRGllSW5zaWRlKCJTdGF0aWNNZW1iZXJGdW5jdGlvbiIpOyB9CisKKyAgLy8g
QSBtZXRob2Qgb2YgdGhlIHRlc3QgZml4dHVyZSB0aGF0IG1heSBkaWUuCisgIHZvaWQgTWVtYmVy
RnVuY3Rpb24oKSB7CisgICAgaWYgKHNob3VsZF9kaWVfKQorICAgICAgRGllSW5zaWRlKCJNZW1i
ZXJGdW5jdGlvbiIpOworICB9CisKKyAgLy8gVHJ1ZSBpZmYgTWVtYmVyRnVuY3Rpb24oKSBzaG91
bGQgZGllLgorICBib29sIHNob3VsZF9kaWVfOworICBjb25zdCBGaWxlUGF0aCBvcmlnaW5hbF9k
aXJfOworfTsKKworLy8gQSBjbGFzcyB3aXRoIGEgbWVtYmVyIGZ1bmN0aW9uIHRoYXQgbWF5IGRp
ZS4KK2NsYXNzIE1heURpZSB7CisgcHVibGljOgorICBleHBsaWNpdCBNYXlEaWUoYm9vbCBzaG91
bGRfZGllKSA6IHNob3VsZF9kaWVfKHNob3VsZF9kaWUpIHt9CisKKyAgLy8gQSBtZW1iZXIgZnVu
Y3Rpb24gdGhhdCBtYXkgZGllLgorICB2b2lkIE1lbWJlckZ1bmN0aW9uKCkgY29uc3QgeworICAg
IGlmIChzaG91bGRfZGllXykKKyAgICAgIERpZUluc2lkZSgiTWF5RGllOjpNZW1iZXJGdW5jdGlv
biIpOworICB9CisKKyBwcml2YXRlOgorICAvLyBUcnVlIGlmZiBNZW1iZXJGdW5jdGlvbigpIHNo
b3VsZCBkaWUuCisgIGJvb2wgc2hvdWxkX2RpZV87Cit9OworCisvLyBBIGdsb2JhbCBmdW5jdGlv
biB0aGF0J3MgZXhwZWN0ZWQgdG8gZGllLgordm9pZCBHbG9iYWxGdW5jdGlvbigpIHsgRGllSW5z
aWRlKCJHbG9iYWxGdW5jdGlvbiIpOyB9CisKKy8vIEEgbm9uLXZvaWQgZnVuY3Rpb24gdGhhdCdz
IGV4cGVjdGVkIHRvIGRpZS4KK2ludCBOb25Wb2lkRnVuY3Rpb24oKSB7CisgIERpZUluc2lkZSgi
Tm9uVm9pZEZ1bmN0aW9uIik7CisgIHJldHVybiAxOworfQorCisvLyBBIHVuYXJ5IGZ1bmN0aW9u
IHRoYXQgbWF5IGRpZS4KK3ZvaWQgRGllSWYoYm9vbCBzaG91bGRfZGllKSB7CisgIGlmIChzaG91
bGRfZGllKQorICAgIERpZUluc2lkZSgiRGllSWYiKTsKK30KKworLy8gQSBiaW5hcnkgZnVuY3Rp
b24gdGhhdCBtYXkgZGllLgorYm9vbCBEaWVJZkxlc3NUaGFuKGludCB4LCBpbnQgeSkgeworICBp
ZiAoeCA8IHkpIHsKKyAgICBEaWVJbnNpZGUoIkRpZUlmTGVzc1RoYW4iKTsKKyAgfQorICByZXR1
cm4gdHJ1ZTsKK30KKworLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVBVEggY2FuIGJlIHVzZWQgb3V0
c2lkZSBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdCBmaXh0dXJlLgordm9pZCBEZWF0aFRlc3RTdWJy
b3V0aW5lKCkgeworICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgImRlYXRoLipHbG9i
YWxGdW5jdGlvbiIpOworICBBU1NFUlRfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgImRlYXRoLipH
bG9iYWxGdW5jdGlvbiIpOworfQorCisvLyBEZWF0aCBpbiBkYmcsIG5vdCBvcHQuCitpbnQgRGll
SW5EZWJ1Z0Vsc2UxMihpbnQqIHNpZGVlZmZlY3QpIHsKKyAgaWYgKHNpZGVlZmZlY3QpICpzaWRl
ZWZmZWN0ID0gMTI7CisKKyMgaWZuZGVmIE5ERUJVRworCisgIERpZUluc2lkZSgiRGllSW5EZWJ1
Z0Vsc2UxMiIpOworCisjIGVuZGlmICAvLyBOREVCVUcKKworICByZXR1cm4gMTI7Cit9CisKKyMg
aWYgR1RFU1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19GVUNIU0lBCisKKy8vIFRlc3RzIHRoZSBF
eGl0ZWRXaXRoQ29kZSBwcmVkaWNhdGUuCitURVNUKEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0LCBF
eGl0ZWRXaXRoQ29kZSkgeworICAvLyBPbiBXaW5kb3dzLCB0aGUgcHJvY2VzcydzIGV4aXQgY29k
ZSBpcyB0aGUgc2FtZSBhcyBpdHMgZXhpdCBzdGF0dXMsCisgIC8vIHNvIHRoZSBwcmVkaWNhdGUg
anVzdCBjb21wYXJlcyB0aGUgaXRzIGlucHV0IHdpdGggaXRzIHBhcmFtZXRlci4KKyAgRVhQRUNU
X1RSVUUodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCkoMCkpOworICBFWFBFQ1RfVFJVRSh0ZXN0
aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSgxKSk7CisgIEVYUEVDVF9UUlVFKHRlc3Rpbmc6OkV4aXRl
ZFdpdGhDb2RlKDQyKSg0MikpOworICBFWFBFQ1RfRkFMU0UodGVzdGluZzo6RXhpdGVkV2l0aENv
ZGUoMCkoMSkpOworICBFWFBFQ1RfRkFMU0UodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSkoMCkp
OworfQorCisjIGVsc2UKKworLy8gUmV0dXJucyB0aGUgZXhpdCBzdGF0dXMgb2YgYSBwcm9jZXNz
IHRoYXQgY2FsbHMgX2V4aXQoMikgd2l0aCBhCisvLyBnaXZlbiBleGl0IGNvZGUuICBUaGlzIGlz
IGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGUKKy8vIEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0IHRl
c3Qgc3VpdGUuCitzdGF0aWMgaW50IE5vcm1hbEV4aXRTdGF0dXMoaW50IGV4aXRfY29kZSkgewor
ICBwaWRfdCBjaGlsZF9waWQgPSBmb3JrKCk7CisgIGlmIChjaGlsZF9waWQgPT0gMCkgeworICAg
IF9leGl0KGV4aXRfY29kZSk7CisgIH0KKyAgaW50IHN0YXR1czsKKyAgd2FpdHBpZChjaGlsZF9w
aWQsICZzdGF0dXMsIDApOworICByZXR1cm4gc3RhdHVzOworfQorCisvLyBSZXR1cm5zIHRoZSBl
eGl0IHN0YXR1cyBvZiBhIHByb2Nlc3MgdGhhdCByYWlzZXMgYSBnaXZlbiBzaWduYWwuCisvLyBJ
ZiB0aGUgc2lnbmFsIGRvZXMgbm90IGNhdXNlIHRoZSBwcm9jZXNzIHRvIGRpZSwgdGhlbiBpdCBy
ZXR1cm5zCisvLyBpbnN0ZWFkIHRoZSBleGl0IHN0YXR1cyBvZiBhIHByb2Nlc3MgdGhhdCBleGl0
cyBub3JtYWxseSB3aXRoIGV4aXQKKy8vIGNvZGUgMS4gIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rp
b24gZm9yIHRoZSBFeGl0U3RhdHVzUHJlZGljYXRlVGVzdAorLy8gdGVzdCBzdWl0ZS4KK3N0YXRp
YyBpbnQgS2lsbGVkRXhpdFN0YXR1cyhpbnQgc2lnbnVtKSB7CisgIHBpZF90IGNoaWxkX3BpZCA9
IGZvcmsoKTsKKyAgaWYgKGNoaWxkX3BpZCA9PSAwKSB7CisgICAgcmFpc2Uoc2lnbnVtKTsKKyAg
ICBfZXhpdCgxKTsKKyAgfQorICBpbnQgc3RhdHVzOworICB3YWl0cGlkKGNoaWxkX3BpZCwgJnN0
YXR1cywgMCk7CisgIHJldHVybiBzdGF0dXM7Cit9CisKKy8vIFRlc3RzIHRoZSBFeGl0ZWRXaXRo
Q29kZSBwcmVkaWNhdGUuCitURVNUKEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0LCBFeGl0ZWRXaXRo
Q29kZSkgeworICBjb25zdCBpbnQgc3RhdHVzMCAgPSBOb3JtYWxFeGl0U3RhdHVzKDApOworICBj
b25zdCBpbnQgc3RhdHVzMSAgPSBOb3JtYWxFeGl0U3RhdHVzKDEpOworICBjb25zdCBpbnQgc3Rh
dHVzNDIgPSBOb3JtYWxFeGl0U3RhdHVzKDQyKTsKKyAgY29uc3QgdGVzdGluZzo6RXhpdGVkV2l0
aENvZGUgcHJlZDAoMCk7CisgIGNvbnN0IHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlIHByZWQxKDEp
OworICBjb25zdCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSBwcmVkNDIoNDIpOworICBFWFBFQ1Rf
UFJFRDEocHJlZDAsICBzdGF0dXMwKTsKKyAgRVhQRUNUX1BSRUQxKHByZWQxLCAgc3RhdHVzMSk7
CisgIEVYUEVDVF9QUkVEMShwcmVkNDIsIHN0YXR1czQyKTsKKyAgRVhQRUNUX0ZBTFNFKHByZWQw
KHN0YXR1czEpKTsKKyAgRVhQRUNUX0ZBTFNFKHByZWQ0MihzdGF0dXMwKSk7CisgIEVYUEVDVF9G
QUxTRShwcmVkMShzdGF0dXM0MikpOworfQorCisvLyBUZXN0cyB0aGUgS2lsbGVkQnlTaWduYWwg
cHJlZGljYXRlLgorVEVTVChFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCwgS2lsbGVkQnlTaWduYWwp
IHsKKyAgY29uc3QgaW50IHN0YXR1c19zZWd2ID0gS2lsbGVkRXhpdFN0YXR1cyhTSUdTRUdWKTsK
KyAgY29uc3QgaW50IHN0YXR1c19raWxsID0gS2lsbGVkRXhpdFN0YXR1cyhTSUdLSUxMKTsKKyAg
Y29uc3QgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwgcHJlZF9zZWd2KFNJR1NFR1YpOworICBjb25z
dCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbCBwcmVkX2tpbGwoU0lHS0lMTCk7CisgIEVYUEVDVF9Q
UkVEMShwcmVkX3NlZ3YsIHN0YXR1c19zZWd2KTsKKyAgRVhQRUNUX1BSRUQxKHByZWRfa2lsbCwg
c3RhdHVzX2tpbGwpOworICBFWFBFQ1RfRkFMU0UocHJlZF9zZWd2KHN0YXR1c19raWxsKSk7Cisg
IEVYUEVDVF9GQUxTRShwcmVkX2tpbGwoc3RhdHVzX3NlZ3YpKTsKK30KKworIyBlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19GVUNIU0lBCisKKy8vIFRlc3RzIHRoYXQgdGhl
IGRlYXRoIHRlc3QgbWFjcm9zIGV4cGFuZCB0byBjb2RlIHdoaWNoIG1heSBvciBtYXkgbm90Cisv
LyBiZSBmb2xsb3dlZCBieSBvcGVyYXRvcjw8LCBhbmQgdGhhdCBpbiBlaXRoZXIgY2FzZSB0aGUg
Y29tcGxldGUgdGV4dAorLy8gY29tcHJpc2VzIG9ubHkgYSBzaW5nbGUgQysrIHN0YXRlbWVudC4K
K1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTaW5nbGVTdGF0ZW1lbnQpIHsKKyAgaWYgKEFsd2F5
c0ZhbHNlKCkpCisgICAgLy8gVGhpcyB3b3VsZCBmYWlsIGlmIGV4ZWN1dGVkOyB0aGlzIGlzIGEg
Y29tcGlsYXRpb24gdGVzdCBvbmx5CisgICAgQVNTRVJUX0RFQVRIKHJldHVybiwgIiIpOworCisg
IGlmIChBbHdheXNUcnVlKCkpCisgICAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIik7CisgIGVs
c2UKKyAgICAvLyBUaGlzIGVtcHR5ICJlbHNlIiBicmFuY2ggaXMgbWVhbnQgdG8gZW5zdXJlIHRo
YXQgRVhQRUNUX0RFQVRICisgICAgLy8gZG9lc24ndCBleHBhbmQgaW50byBhbiAiaWYiIHN0YXRl
bWVudCB3aXRob3V0IGFuICJlbHNlIgorICAgIDsKKworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAg
ICBBU1NFUlRfREVBVEgocmV0dXJuLCAiIikgPDwgImRpZCBub3QgZGllIjsKKworICBpZiAoQWx3
YXlzRmFsc2UoKSkKKyAgICA7CisgIGVsc2UKKyAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIi
KSA8PCAxIDw8IDIgPDwgMzsKK30KKwordm9pZCBEaWVXaXRoRW1iZWRkZWROdWwoKSB7CisgIGZw
cmludGYoc3RkZXJyLCAiSGVsbG8lY215IG51bGwgd29ybGQuXG4iLCAnXDAnKTsKKyAgZmZsdXNo
KHN0ZGVycik7CisgIF9leGl0KDEpOworfQorCisjIGlmIEdURVNUX1VTRVNfUENSRQorCisvLyBU
ZXN0cyB0aGF0IEVYUEVDVF9ERUFUSCBhbmQgQVNTRVJUX0RFQVRIIHdvcmsgd2hlbiB0aGUgZXJy
b3IKKy8vIG1lc3NhZ2UgaGFzIGEgTlVMIGNoYXJhY3RlciBpbiBpdC4KK1RFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBFbWJlZGRlZE51bEluTWVzc2FnZSkgeworICBFWFBFQ1RfREVBVEgoRGllV2l0
aEVtYmVkZGVkTnVsKCksICJteSBudWxsIHdvcmxkIik7CisgIEFTU0VSVF9ERUFUSChEaWVXaXRo
RW1iZWRkZWROdWwoKSwgIm15IG51bGwgd29ybGQiKTsKK30KKworIyBlbmRpZiAgLy8gR1RFU1Rf
VVNFU19QQ1JFCisKKy8vIFRlc3RzIHRoYXQgZGVhdGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNv
ZGUgd2hpY2ggaW50ZXJhY3RzIHdlbGwgd2l0aCBzd2l0Y2gKKy8vIHN0YXRlbWVudHMuCitURVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgU3dpdGNoU3RhdGVtZW50KSB7CisgIC8vIE1pY3Jvc29mdCBj
b21waWxlciB1c3VhbGx5IGNvbXBsYWlucyBhYm91dCBzd2l0Y2ggc3RhdGVtZW50cyB3aXRob3V0
CisgIC8vIGNhc2UgbGFiZWxzLiBXZSBzdXBwcmVzcyB0aGF0IHdhcm5pbmcgZm9yIHRoaXMgdGVz
dC4KKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDA2NSkKKworICBzd2l0Y2gg
KDApCisgICAgZGVmYXVsdDoKKyAgICAgIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8ICJl
eGl0IGluIGRlZmF1bHQgc3dpdGNoIGhhbmRsZXIiOworCisgIHN3aXRjaCAoMCkKKyAgICBjYXNl
IDA6CisgICAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKSA8PCAiZXhpdCBpbiBzd2l0Y2gg
Y2FzZSI7CisKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCit9CisKKy8vIFRl
c3RzIHRoYXQgYSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGluIGEgImZhc3Qi
IHN0eWxlCisvLyBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFN0YXRpY01l
bWJlckZ1bmN0aW9uRmFzdFN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVz
dF9zdHlsZSkgPSAiZmFzdCI7CisgIEFTU0VSVF9ERUFUSChTdGF0aWNNZW1iZXJGdW5jdGlvbigp
LCAiZGVhdGguKlN0YXRpY01lbWJlciIpOworfQorCisvLyBUZXN0cyB0aGF0IGEgbWV0aG9kIG9m
IHRoZSB0ZXN0IGZpeHR1cmUgY2FuIGJlIHVzZWQgaW4gYSAiZmFzdCIKKy8vIHN0eWxlIGRlYXRo
IHRlc3QuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgTWVtYmVyRnVuY3Rpb25GYXN0U3R5bGUp
IHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAg
c2hvdWxkX2RpZV8gPSB0cnVlOworICBFWFBFQ1RfREVBVEgoTWVtYmVyRnVuY3Rpb24oKSwgImlu
c2lkZS4qTWVtYmVyRnVuY3Rpb24iKTsKK30KKwordm9pZCBDaGFuZ2VUb1Jvb3REaXIoKSB7IHBv
c2l4OjpDaERpcihHVEVTVF9QQVRIX1NFUF8pOyB9CisKKy8vIFRlc3RzIHRoYXQgZGVhdGggdGVz
dHMgd29yayBldmVuIGlmIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBoYXMgYmVlbgorLy8gY2hhbmdl
ZC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBGYXN0RGVhdGhUZXN0SW5DaGFuZ2VkRGlyKSB7
CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisKKyAg
Q2hhbmdlVG9Sb290RGlyKCk7CisgIEVYUEVDVF9FWElUKF9leGl0KDEpLCB0ZXN0aW5nOjpFeGl0
ZWRXaXRoQ29kZSgxKSwgIiIpOworCisgIENoYW5nZVRvUm9vdERpcigpOworICBBU1NFUlRfREVB
VEgoX2V4aXQoMSksICIiKTsKK30KKworIyBpZiBHVEVTVF9PU19MSU5VWAordm9pZCBTaWdwcm9m
QWN0aW9uKGludCwgc2lnaW5mb190Kiwgdm9pZCopIHsgLyogbm8gb3AgKi8gfQorCisvLyBTZXRz
IFNJR1BST0YgYWN0aW9uIGFuZCBJVElNRVJfUFJPRiB0aW1lciAoaW50ZXJ2YWw6IDFtcykuCit2
b2lkIFNldFNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigpIHsKKyAgc3RydWN0IGl0aW1lcnZhbCB0aW1l
cjsKKyAgdGltZXIuaXRfaW50ZXJ2YWwudHZfc2VjID0gMDsKKyAgdGltZXIuaXRfaW50ZXJ2YWwu
dHZfdXNlYyA9IDE7CisgIHRpbWVyLml0X3ZhbHVlID0gdGltZXIuaXRfaW50ZXJ2YWw7CisgIEFT
U0VSVF9FUSgwLCBzZXRpdGltZXIoSVRJTUVSX1BST0YsICZ0aW1lciwgTlVMTCkpOworICBzdHJ1
Y3Qgc2lnYWN0aW9uIHNpZ25hbF9hY3Rpb247CisgIG1lbXNldCgmc2lnbmFsX2FjdGlvbiwgMCwg
c2l6ZW9mKHNpZ25hbF9hY3Rpb24pKTsKKyAgc2lnZW1wdHlzZXQoJnNpZ25hbF9hY3Rpb24uc2Ff
bWFzayk7CisgIHNpZ25hbF9hY3Rpb24uc2Ffc2lnYWN0aW9uID0gU2lncHJvZkFjdGlvbjsKKyAg
c2lnbmFsX2FjdGlvbi5zYV9mbGFncyA9IFNBX1JFU1RBUlQgfCBTQV9TSUdJTkZPOworICBBU1NF
UlRfRVEoMCwgc2lnYWN0aW9uKFNJR1BST0YsICZzaWduYWxfYWN0aW9uLCBOVUxMKSk7Cit9CisK
Ky8vIERpc2FibGVzIElUSU1FUl9QUk9GIHRpbWVyIGFuZCBpZ25vcmVzIFNJR1BST0Ygc2lnbmFs
Lgordm9pZCBEaXNhYmxlU2lncHJvZkFjdGlvbkFuZFRpbWVyKHN0cnVjdCBzaWdhY3Rpb24qIG9s
ZF9zaWduYWxfYWN0aW9uKSB7CisgIHN0cnVjdCBpdGltZXJ2YWwgdGltZXI7CisgIHRpbWVyLml0
X2ludGVydmFsLnR2X3NlYyA9IDA7CisgIHRpbWVyLml0X2ludGVydmFsLnR2X3VzZWMgPSAwOwor
ICB0aW1lci5pdF92YWx1ZSA9IHRpbWVyLml0X2ludGVydmFsOworICBBU1NFUlRfRVEoMCwgc2V0
aXRpbWVyKElUSU1FUl9QUk9GLCAmdGltZXIsIE5VTEwpKTsKKyAgc3RydWN0IHNpZ2FjdGlvbiBz
aWduYWxfYWN0aW9uOworICBtZW1zZXQoJnNpZ25hbF9hY3Rpb24sIDAsIHNpemVvZihzaWduYWxf
YWN0aW9uKSk7CisgIHNpZ2VtcHR5c2V0KCZzaWduYWxfYWN0aW9uLnNhX21hc2spOworICBzaWdu
YWxfYWN0aW9uLnNhX2hhbmRsZXIgPSBTSUdfSUdOOworICBBU1NFUlRfRVEoMCwgc2lnYWN0aW9u
KFNJR1BST0YsICZzaWduYWxfYWN0aW9uLCBvbGRfc2lnbmFsX2FjdGlvbikpOworfQorCisvLyBU
ZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHdvcmsgd2hlbiBTSUdQUk9GIGhhbmRsZXIgYW5kIHRpbWVy
IGFyZSBzZXQuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRmFzdFNpZ3Byb2ZBY3Rpb25TZXQp
IHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAg
U2V0U2lncHJvZkFjdGlvbkFuZFRpbWVyKCk7CisgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIp
OworICBzdHJ1Y3Qgc2lnYWN0aW9uIG9sZF9zaWduYWxfYWN0aW9uOworICBEaXNhYmxlU2lncHJv
ZkFjdGlvbkFuZFRpbWVyKCZvbGRfc2lnbmFsX2FjdGlvbik7CisgIEVYUEVDVF9UUlVFKG9sZF9z
aWduYWxfYWN0aW9uLnNhX3NpZ2FjdGlvbiA9PSBTaWdwcm9mQWN0aW9uKTsKK30KKworVEVTVF9G
KFRlc3RGb3JEZWF0aFRlc3QsIFRocmVhZFNhZmVTaWdwcm9mQWN0aW9uU2V0KSB7CisgIHRlc3Rp
bmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7CisgIFNldFNp
Z3Byb2ZBY3Rpb25BbmRUaW1lcigpOworICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKTsKKyAg
c3RydWN0IHNpZ2FjdGlvbiBvbGRfc2lnbmFsX2FjdGlvbjsKKyAgRGlzYWJsZVNpZ3Byb2ZBY3Rp
b25BbmRUaW1lcigmb2xkX3NpZ25hbF9hY3Rpb24pOworICBFWFBFQ1RfVFJVRShvbGRfc2lnbmFs
X2FjdGlvbi5zYV9zaWdhY3Rpb24gPT0gU2lncHJvZkFjdGlvbik7Cit9CisjIGVuZGlmICAvLyBH
VEVTVF9PU19MSU5VWAorCisvLyBSZXBlYXRzIGEgcmVwcmVzZW50YXRpdmUgc2FtcGxlIG9mIGRl
YXRoIHRlc3RzIGluIHRoZSAidGhyZWFkc2FmZSIgc3R5bGU6CisKK1RFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBTdGF0aWNNZW1iZXJGdW5jdGlvblRocmVhZHNhZmVTdHlsZSkgeworICB0ZXN0aW5n
OjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOworICBBU1NFUlRf
REVBVEgoU3RhdGljTWVtYmVyRnVuY3Rpb24oKSwgImRlYXRoLipTdGF0aWNNZW1iZXIiKTsKK30K
KworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE1lbWJlckZ1bmN0aW9uVGhyZWFkc2FmZVN0eWxl
KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2Fm
ZSI7CisgIHNob3VsZF9kaWVfID0gdHJ1ZTsKKyAgRVhQRUNUX0RFQVRIKE1lbWJlckZ1bmN0aW9u
KCksICJpbnNpZGUuKk1lbWJlckZ1bmN0aW9uIik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhU
ZXN0LCBUaHJlYWRzYWZlRGVhdGhUZXN0SW5Mb29wKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUco
ZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7CisKKyAgZm9yIChpbnQgaSA9IDA7IGkg
PCAzOyArK2kpCisgICAgRVhQRUNUX0VYSVQoX2V4aXQoaSksIHRlc3Rpbmc6OkV4aXRlZFdpdGhD
b2RlKGkpLCAiIikgPDwgIjogaSA9ICIgPDwgaTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIFRocmVhZHNhZmVEZWF0aFRlc3RJbkNoYW5nZWREaXIpIHsKKyAgdGVzdGluZzo6R1RFU1Rf
RkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKKworICBDaGFuZ2VUb1Jvb3RE
aXIoKTsKKyAgRVhQRUNUX0VYSVQoX2V4aXQoMSksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEp
LCAiIik7CisKKyAgQ2hhbmdlVG9Sb290RGlyKCk7CisgIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwg
IiIpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgTWl4ZWRTdHlsZXMpIHsKKyAgdGVz
dGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKKyAgRVhQ
RUNUX0RFQVRIKF9leGl0KDEpLCAiIik7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVz
dF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOworfQorCisj
IGlmIEdURVNUX0hBU19DTE9ORSAmJiBHVEVTVF9IQVNfUFRIUkVBRAorCituYW1lc3BhY2Ugewor
Citib29sIHB0aHJlYWRfZmxhZzsKKwordm9pZCBTZXRQdGhyZWFkRmxhZygpIHsKKyAgcHRocmVh
ZF9mbGFnID0gdHJ1ZTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK1RFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBEb2VzTm90RXhlY3V0ZUF0Zm9ya0hvb2tzKSB7CisgIGlmICghdGVzdGluZzo6R1RF
U1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKSkgeworICAgIHRlc3Rpbmc6OkdURVNUX0ZMQUco
ZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7CisgICAgcHRocmVhZF9mbGFnID0gZmFs
c2U7CisgICAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXRmb3JrKCZTZXRQdGhyZWFkRmxhZywgTlVM
TCwgTlVMTCkpOworICAgIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwgIiIpOworICAgIEFTU0VSVF9G
QUxTRShwdGhyZWFkX2ZsYWcpOworICB9Cit9CisKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19DTE9O
RSAmJiBHVEVTVF9IQVNfUFRIUkVBRAorCisvLyBUZXN0cyB0aGF0IGEgbWV0aG9kIG9mIGFub3Ro
ZXIgY2xhc3MgY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RGb3JEZWF0
aFRlc3QsIE1ldGhvZE9mQW5vdGhlckNsYXNzKSB7CisgIGNvbnN0IE1heURpZSB4KHRydWUpOwor
ICBBU1NFUlRfREVBVEgoeC5NZW1iZXJGdW5jdGlvbigpLCAiTWF5RGllXFw6XFw6TWVtYmVyRnVu
Y3Rpb24iKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIGdsb2JhbCBmdW5jdGlvbiBjYW4gYmUgdXNl
ZCBpbiBhIGRlYXRoIHRlc3QuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgR2xvYmFsRnVuY3Rp
b24pIHsKKyAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksICJHbG9iYWxGdW5jdGlvbiIp
OworfQorCisvLyBUZXN0cyB0aGF0IGFueSB2YWx1ZSBjb252ZXJ0aWJsZSB0byBhbiBSRSB3b3Jr
cyBhcyBhIHNlY29uZAorLy8gYXJndW1lbnQgdG8gRVhQRUNUX0RFQVRILgorVEVTVF9GKFRlc3RG
b3JEZWF0aFRlc3QsIEFjY2VwdHNBbnl0aGluZ0NvbnZlcnRpYmxlVG9SRSkgeworICBzdGF0aWMg
Y29uc3QgY2hhciByZWdleF9jX3N0cltdID0gIkdsb2JhbEZ1bmN0aW9uIjsKKyAgRVhQRUNUX0RF
QVRIKEdsb2JhbEZ1bmN0aW9uKCksIHJlZ2V4X2Nfc3RyKTsKKworICBjb25zdCB0ZXN0aW5nOjpp
bnRlcm5hbDo6UkUgcmVnZXgocmVnZXhfY19zdHIpOworICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVu
Y3Rpb24oKSwgcmVnZXgpOworCisjIGlmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKKyAgY29u
c3QgOjpzdHJpbmcgcmVnZXhfc3RyKHJlZ2V4X2Nfc3RyKTsKKyAgRVhQRUNUX0RFQVRIKEdsb2Jh
bEZ1bmN0aW9uKCksIHJlZ2V4X3N0cik7CisKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxf
U1RSSU5HCisKKyMgaWYgIUdURVNUX1VTRVNfUENSRQorCisgIGNvbnN0IDo6c3RkOjpzdHJpbmcg
cmVnZXhfc3RkX3N0cihyZWdleF9jX3N0cik7CisgIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlv
bigpLCByZWdleF9zdGRfc3RyKTsKKworIyBlbmRpZiAgLy8gIUdURVNUX1VTRVNfUENSRQorfQor
CisvLyBUZXN0cyB0aGF0IGEgbm9uLXZvaWQgZnVuY3Rpb24gY2FuIGJlIHVzZWQgaW4gYSBkZWF0
aCB0ZXN0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE5vblZvaWRGdW5jdGlvbikgeworICBB
U1NFUlRfREVBVEgoTm9uVm9pZEZ1bmN0aW9uKCksICJOb25Wb2lkRnVuY3Rpb24iKTsKK30KKwor
Ly8gVGVzdHMgdGhhdCBmdW5jdGlvbnMgdGhhdCB0YWtlIHBhcmFtZXRlcihzKSBjYW4gYmUgdXNl
ZCBpbiBhIGRlYXRoIHRlc3QuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRnVuY3Rpb25XaXRo
UGFyYW1ldGVyKSB7CisgIEVYUEVDVF9ERUFUSChEaWVJZih0cnVlKSwgIkRpZUlmXFwoXFwpIik7
CisgIEVYUEVDVF9ERUFUSChEaWVJZkxlc3NUaGFuKDIsIDMpLCAiRGllSWZMZXNzVGhhbiIpOwor
fQorCisvLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUFUSCBjYW4gYmUgdXNlZCBvdXRzaWRlIGEgVEVT
VCwgVEVTVF9GLCBvciB0ZXN0IGZpeHR1cmUuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgT3V0
c2lkZUZpeHR1cmUpIHsKKyAgRGVhdGhUZXN0U3Vicm91dGluZSgpOworfQorCisvLyBUZXN0cyB0
aGF0IGRlYXRoIHRlc3RzIGNhbiBiZSBkb25lIGluc2lkZSBhIGxvb3AuCitURVNUX0YoVGVzdEZv
ckRlYXRoVGVzdCwgSW5zaWRlTG9vcCkgeworICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykg
eworICAgIEVYUEVDVF9ERUFUSChEaWVJZkxlc3NUaGFuKC0xLCBpKSwgIkRpZUlmTGVzc1RoYW4i
KSA8PCAid2hlcmUgaSA9PSAiIDw8IGk7CisgIH0KK30KKworLy8gVGVzdHMgdGhhdCBhIGNvbXBv
dW5kIHN0YXRlbWVudCBjYW4gYmUgdXNlZCBpbiBhIGRlYXRoIHRlc3QuCitURVNUX0YoVGVzdEZv
ckRlYXRoVGVzdCwgQ29tcG91bmRTdGF0ZW1lbnQpIHsKKyAgRVhQRUNUX0RFQVRIKHsgIC8vIE5P
TElOVAorICAgIGNvbnN0IGludCB4ID0gMjsKKyAgICBjb25zdCBpbnQgeSA9IHggKyAxOworICAg
IERpZUlmTGVzc1RoYW4oeCwgeSk7CisgIH0sCisgICJEaWVJZkxlc3NUaGFuIik7Cit9CisKKy8v
IFRlc3RzIHRoYXQgY29kZSB0aGF0IGRvZXNuJ3QgZGllIGNhdXNlcyBhIGRlYXRoIHRlc3QgdG8g
ZmFpbC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEb2VzTm90RGllKSB7CisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ERUFUSChEaWVJZihmYWxzZSksICJEaWVJZiIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGRpZSIpOworfQorCisvLyBUZXN0cyB0
aGF0IGEgZGVhdGggdGVzdCBmYWlscyB3aGVuIHRoZSBlcnJvciBtZXNzYWdlIGlzbid0IGV4cGVj
dGVkLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEVycm9yTWVzc2FnZU1pc21hdGNoKSB7Cisg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9ERUFUSChE
aWVJZih0cnVlKSwgIkRpZUlmTGVzc1RoYW4iKSA8PCAiRW5kIG9mIGRlYXRoIHRlc3QgbWVzc2Fn
ZS4iOworICB9LCAiZGllZCBidXQgbm90IHdpdGggZXhwZWN0ZWQgZXJyb3IiKTsKK30KKworLy8g
T24gZXhpdCwgKmFib3J0ZWQgd2lsbCBiZSB0cnVlIGlmZiB0aGUgRVhQRUNUX0RFQVRIKCkgc3Rh
dGVtZW50CisvLyBhYm9ydGVkIHRoZSBmdW5jdGlvbi4KK3ZvaWQgRXhwZWN0RGVhdGhUZXN0SGVs
cGVyKGJvb2wqIGFib3J0ZWQpIHsKKyAgKmFib3J0ZWQgPSB0cnVlOworICBFWFBFQ1RfREVBVEgo
RGllSWYoZmFsc2UpLCAiRGllSWYiKTsgIC8vIFRoaXMgYXNzZXJ0aW9uIHNob3VsZCBmYWlsLgor
ICAqYWJvcnRlZCA9IGZhbHNlOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSCBkb2Vz
bid0IGFib3J0IHRoZSB0ZXN0IG9uIGZhaWx1cmUuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
RVhQRUNUX0RFQVRIKSB7CisgIGJvb2wgYWJvcnRlZCA9IHRydWU7CisgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEV4cGVjdERlYXRoVGVzdEhlbHBlcigmYWJvcnRlZCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICJmYWlsZWQgdG8gZGllIik7CisgIEVYUEVDVF9GQUxTRShhYm9ydGVkKTsK
K30KKworLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVBVEggZG9lcyBhYm9ydCB0aGUgdGVzdCBvbiBm
YWlsdXJlLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFTU0VSVF9ERUFUSCkgeworICBzdGF0
aWMgYm9vbCBhYm9ydGVkOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAg
ICBhYm9ydGVkID0gdHJ1ZTsKKyAgICBBU1NFUlRfREVBVEgoRGllSWYoZmFsc2UpLCAiRGllSWYi
KTsgIC8vIFRoaXMgYXNzZXJ0aW9uIHNob3VsZCBmYWlsLgorICAgIGFib3J0ZWQgPSBmYWxzZTsK
KyAgfSwgImZhaWxlZCB0byBkaWUiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRIIGV2YWx1YXRlcyB0aGUgYXJndW1lbnRzIGV4YWN0bHkg
b25jZS4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTaW5nbGVFdmFsdWF0aW9uKSB7CisgIGlu
dCB4ID0gMzsKKyAgRVhQRUNUX0RFQVRIKERpZUlmKCgrK3gpID09IDQpLCAiRGllSWYiKTsKKwor
ICBjb25zdCBjaGFyKiByZWdleCA9ICJEaWVJZiI7CisgIGNvbnN0IGNoYXIqIHJlZ2V4X3NhdmUg
PSByZWdleDsKKyAgRVhQRUNUX0RFQVRIKERpZUlmTGVzc1RoYW4oMywgNCksIHJlZ2V4KyspOwor
ICBFWFBFQ1RfRVEocmVnZXhfc2F2ZSArIDEsIHJlZ2V4KTsKK30KKworLy8gVGVzdHMgdGhhdCBy
dW4tYXdheSBkZWF0aCB0ZXN0cyBhcmUgcmVwb3J0ZWQgYXMgZmFpbHVyZXMuCitURVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgUnVuYXdheUlzRmFpbHVyZSkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShFWFBFQ1RfREVBVEgoc3RhdGljX2Nhc3Q8dm9pZD4oMCksICJGb28iKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBkaWUuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQg
ZGVhdGggdGVzdHMgcmVwb3J0IGV4ZWN1dGluZyAncmV0dXJuJyBpbiB0aGUgc3RhdGVtZW50IGFz
CisvLyBmYWlsdXJlLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFJldHVybklzRmFpbHVyZSkg
eworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfREVBVEgocmV0dXJuLCAiQmFyIiksCisg
ICAgICAgICAgICAgICAgICAgICAgICJpbGxlZ2FsIHJldHVybiBpbiB0ZXN0IHN0YXRlbWVudC4i
KTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVCVUdfREVBVEggd29ya3MgYXMgZXhwZWN0
ZWQsIHRoYXQgaXMsIHlvdSBjYW4gc3RyZWFtIGEKKy8vIG1lc3NhZ2UgdG8gaXQsIGFuZCBpbiBk
ZWJ1ZyBtb2RlIGl0OgorLy8gMS4gQXNzZXJ0cyBvbiBkZWF0aC4KKy8vIDIuIEhhcyBubyBzaWRl
IGVmZmVjdC4KKy8vCisvLyBBbmQgaW4gb3B0IG1vZGUsIGl0OgorLy8gMS4gIEhhcyBzaWRlIGVm
ZmVjdHMgYnV0IGRvZXMgbm90IGFzc2VydC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUZXN0
RXhwZWN0RGVidWdEZWF0aCkgeworICBpbnQgc2lkZWVmZmVjdCA9IDA7CisKKyAgLy8gUHV0IHRo
ZSByZWdleCBpbiBhIGxvY2FsIHZhcmlhYmxlIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBnZXQgYW4g
InVudXNlZCIKKyAgLy8gd2FybmluZyBpbiBvcHQgbW9kZS4KKyAgY29uc3QgY2hhciogcmVnZXgg
PSAiZGVhdGguKkRpZUluRGVidWdFbHNlMTIiOworCisgIEVYUEVDVF9ERUJVR19ERUFUSChEaWVJ
bkRlYnVnRWxzZTEyKCZzaWRlZWZmZWN0KSwgcmVnZXgpCisgICAgICA8PCAiTXVzdCBhY2NlcHQg
YSBzdHJlYW1lZCBtZXNzYWdlIjsKKworIyBpZmRlZiBOREVCVUcKKworICAvLyBDaGVja3MgdGhh
dCB0aGUgYXNzaWdubWVudCBvY2N1cnMgaW4gb3B0IG1vZGUgKHNpZGVlZmZlY3QpLgorICBFWFBF
Q1RfRVEoMTIsIHNpZGVlZmZlY3QpOworCisjIGVsc2UKKworICAvLyBDaGVja3MgdGhhdCB0aGUg
YXNzaWdubWVudCBkb2VzIG5vdCBvY2N1ciBpbiBkYmcgbW9kZSAobm8gc2lkZWVmZmVjdCkuCisg
IEVYUEVDVF9FUSgwLCBzaWRlZWZmZWN0KTsKKworIyBlbmRpZgorfQorCisvLyBUZXN0cyB0aGF0
IEFTU0VSVF9ERUJVR19ERUFUSCB3b3JrcyBhcyBleHBlY3RlZCwgdGhhdCBpcywgeW91IGNhbiBz
dHJlYW0gYQorLy8gbWVzc2FnZSB0byBpdCwgYW5kIGluIGRlYnVnIG1vZGUgaXQ6CisvLyAxLiBB
c3NlcnRzIG9uIGRlYXRoLgorLy8gMi4gSGFzIG5vIHNpZGUgZWZmZWN0LgorLy8KKy8vIEFuZCBp
biBvcHQgbW9kZSwgaXQ6CisvLyAxLiAgSGFzIHNpZGUgZWZmZWN0cyBidXQgZG9lcyBub3QgYXNz
ZXJ0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRlc3RBc3NlcnREZWJ1Z0RlYXRoKSB7Cisg
IGludCBzaWRlZWZmZWN0ID0gMDsKKworICBBU1NFUlRfREVCVUdfREVBVEgoRGllSW5EZWJ1Z0Vs
c2UxMigmc2lkZWVmZmVjdCksICJkZWF0aC4qRGllSW5EZWJ1Z0Vsc2UxMiIpCisgICAgICA8PCAi
TXVzdCBhY2NlcHQgYSBzdHJlYW1lZCBtZXNzYWdlIjsKKworIyBpZmRlZiBOREVCVUcKKworICAv
LyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBvY2N1cnMgaW4gb3B0IG1vZGUgKHNpZGVlZmZl
Y3QpLgorICBFWFBFQ1RfRVEoMTIsIHNpZGVlZmZlY3QpOworCisjIGVsc2UKKworICAvLyBDaGVj
a3MgdGhhdCB0aGUgYXNzaWdubWVudCBkb2VzIG5vdCBvY2N1ciBpbiBkYmcgbW9kZSAobm8gc2lk
ZWVmZmVjdCkuCisgIEVYUEVDVF9FUSgwLCBzaWRlZWZmZWN0KTsKKworIyBlbmRpZgorfQorCisj
IGlmbmRlZiBOREVCVUcKKwordm9pZCBFeHBlY3REZWJ1Z0RlYXRoSGVscGVyKGJvb2wqIGFib3J0
ZWQpIHsKKyAgKmFib3J0ZWQgPSB0cnVlOworICBFWFBFQ1RfREVCVUdfREVBVEgocmV0dXJuLCAi
IikgPDwgIlRoaXMgaXMgZXhwZWN0ZWQgdG8gZmFpbC4iOworICAqYWJvcnRlZCA9IGZhbHNlOwor
fQorCisjICBpZiBHVEVTVF9PU19XSU5ET1dTCitURVNUKFBvcFVwRGVhdGhUZXN0LCBEb2VzTm90
U2hvd1BvcFVwT25BYm9ydCkgeworICBwcmludGYoIlRoaXMgdGVzdCBzaG91bGQgYmUgY29uc2lk
ZXJlZCBmYWlsaW5nIGlmIGl0IHNob3dzICIKKyAgICAgICAgICJhbnkgcG9wLXVwIGRpYWxvZ3Mu
XG4iKTsKKyAgZmZsdXNoKHN0ZG91dCk7CisKKyAgRVhQRUNUX0RFQVRIKHsKKyAgICB0ZXN0aW5n
OjpHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpID0gZmFsc2U7CisgICAgYWJvcnQoKTsKKyAg
fSwgIiIpOworfQorIyAgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworLy8gVGVzdHMgdGhh
dCBFWFBFQ1RfREVCVUdfREVBVEggaW4gZGVidWcgbW9kZSBkb2VzIG5vdCBhYm9ydAorLy8gdGhl
IGZ1bmN0aW9uLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEV4cGVjdERlYnVnRGVhdGhEb2Vz
Tm90QWJvcnQpIHsKKyAgYm9vbCBhYm9ydGVkID0gdHJ1ZTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoRXhwZWN0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX0ZB
TFNFKGFib3J0ZWQpOworfQorCit2b2lkIEFzc2VydERlYnVnRGVhdGhIZWxwZXIoYm9vbCogYWJv
cnRlZCkgeworICAqYWJvcnRlZCA9IHRydWU7CisgIEdURVNUX0xPR18oSU5GTykgPDwgIkJlZm9y
ZSBBU1NFUlRfREVCVUdfREVBVEgiOworICBBU1NFUlRfREVCVUdfREVBVEgoR1RFU1RfTE9HXyhJ
TkZPKSA8PCAiSW4gQVNTRVJUX0RFQlVHX0RFQVRIIjsgcmV0dXJuLCAiIikKKyAgICAgIDw8ICJU
aGlzIGlzIGV4cGVjdGVkIHRvIGZhaWwuIjsKKyAgR1RFU1RfTE9HXyhJTkZPKSA8PCAiQWZ0ZXIg
QVNTRVJUX0RFQlVHX0RFQVRIIjsKKyAgKmFib3J0ZWQgPSBmYWxzZTsKK30KKworLy8gVGVzdHMg
dGhhdCBBU1NFUlRfREVCVUdfREVBVEggaW4gZGVidWcgbW9kZSBhYm9ydHMgdGhlIGZ1bmN0aW9u
IG9uCisvLyBmYWlsdXJlLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVh
dGhBYm9ydHMpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZhbHNlOwor
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwg
IiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHMyKSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7Cisg
IGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0
aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKK1RF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzMykgeworICBzdGF0
aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVF
KGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0
aEFib3J0czQpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZhbHNlOwor
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwg
IiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM1KSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7Cisg
IGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0
aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKK1RF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzNikgeworICBzdGF0
aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVF
KGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0
aEFib3J0czcpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZhbHNlOwor
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwg
IiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM4KSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7Cisg
IGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0
aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKK1RF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzOSkgeworICBzdGF0
aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVF
KGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0
aEFib3J0czEwKSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsK
KyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCks
ICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKKyMgZW5kaWYgIC8vIF9OREVCVUcK
KworLy8gVGVzdHMgdGhlICpfRVhJVCBmYW1pbHkgb2YgbWFjcm9zLCB1c2luZyBhIHZhcmlldHkg
b2YgcHJlZGljYXRlcy4KK3N0YXRpYyB2b2lkIFRlc3RFeGl0TWFjcm9zKCkgeworICBFWFBFQ1Rf
RVhJVChfZXhpdCgxKSwgIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEpLCAgIiIpOworICBBU1NF
UlRfRVhJVChfZXhpdCg0MiksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDQyKSwgIiIpOworCisj
IGlmIEdURVNUX09TX1dJTkRPV1MKKworICAvLyBPZiBhbGwgc2lnbmFscyBlZmZlY3RzIG9uIHRo
ZSBwcm9jZXNzIGV4aXQgY29kZSwgb25seSB0aG9zZSBvZiBTSUdBQlJUCisgIC8vIGFyZSBkb2N1
bWVudGVkIG9uIFdpbmRvd3MuCisgIC8vIFNlZSBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9l
bi11cy9xdWVyeS1iaS9tL2R3d3prdDRjLgorICBFWFBFQ1RfRVhJVChyYWlzZShTSUdBQlJUKSwg
dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMyksICIiKSA8PCAiYl9hciI7CisKKyMgZWxpZiAhR1RF
U1RfT1NfRlVDSFNJQQorCisgIC8vIEZ1Y2hzaWEgaGFzIG5vIHVuaXggc2lnbmFscy4KKyAgRVhQ
RUNUX0VYSVQocmFpc2UoU0lHS0lMTCksIHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKFNJR0tJTEwp
LCAiIikgPDwgImZvbyI7CisgIEFTU0VSVF9FWElUKHJhaXNlKFNJR1VTUjIpLCB0ZXN0aW5nOjpL
aWxsZWRCeVNpZ25hbChTSUdVU1IyKSwgIiIpIDw8ICJiYXIiOworCisgIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9FWElUKF9leGl0KDApLCB0ZXN0aW5nOjpL
aWxsZWRCeVNpZ25hbChTSUdTRUdWKSwgIiIpCisgICAgICA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4
cGVjdGVkLCB0b28uIjsKKyAgfSwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgdG9vLiIpOwor
CisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX0VYSVQocmFpc2UoU0lHU0VHViksIHRlc3Rpbmc6
OkV4aXRlZFdpdGhDb2RlKDApLCAiIikKKyAgICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0
ZWQuIjsKKyAgfSwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4iKTsKK30KKworVEVTVF9GKFRl
c3RGb3JEZWF0aFRlc3QsIEV4aXRNYWNyb3MpIHsKKyAgVGVzdEV4aXRNYWNyb3MoKTsKK30KKwor
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEV4aXRNYWNyb3NVc2luZ0ZvcmspIHsKKyAgdGVzdGlu
Zzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKSA9IHRydWU7CisgIFRlc3RFeGl0TWFj
cm9zKCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBJbnZhbGlkU3R5bGUpIHsKKyAg
dGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJyb2NvY28iOworICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfREVBVEgoX2V4aXQo
MCksICIiKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiI7CisgIH0sICJUaGlzIGZhaWx1
cmUgaXMgZXhwZWN0ZWQuIik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEZWF0aFRl
c3RGYWlsZWRPdXRwdXQpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxl
KSA9ICJmYXN0IjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBFWFBFQ1RfREVB
VEgoRGllV2l0aE1lc3NhZ2UoImRlYXRoXG4iKSwKKyAgICAgICAgICAgICAgICAgICAiZXhwZWN0
ZWQgbWVzc2FnZSIpLAorICAgICAgIkFjdHVhbCBtc2c6XG4iCisgICAgICAiWyAgREVBVEggICBd
IGRlYXRoXG4iKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERlYXRoVGVzdFVuZXhw
ZWN0ZWRSZXR1cm5PdXRwdXQpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0
eWxlKSA9ICJmYXN0IjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBFWFBFQ1Rf
REVBVEgoeworICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicmV0dXJuaW5nXG4iKTsKKyAgICAg
ICAgICBmZmx1c2goc3RkZXJyKTsKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0sICIiKSwK
KyAgICAgICIgICAgUmVzdWx0OiBpbGxlZ2FsIHJldHVybiBpbiB0ZXN0IHN0YXRlbWVudC5cbiIK
KyAgICAgICIgRXJyb3IgbXNnOlxuIgorICAgICAgIlsgIERFQVRIICAgXSByZXR1cm5pbmdcbiIp
OworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRGVhdGhUZXN0QmFkRXhpdENvZGVPdXRw
dXQpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsK
KyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBFWFBFQ1RfRVhJVChEaWVXaXRoTWVz
c2FnZSgiZXhpdGluZyB3aXRoIHJjIDFcbiIpLAorICAgICAgICAgICAgICAgICAgdGVzdGluZzo6
RXhpdGVkV2l0aENvZGUoMyksCisgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgbWVzc2FnZSIp
LAorICAgICAgIiAgICBSZXN1bHQ6IGRpZWQgYnV0IG5vdCB3aXRoIGV4cGVjdGVkIGV4aXQgY29k
ZTpcbiIKKyAgICAgICIgICAgICAgICAgICBFeGl0ZWQgd2l0aCBleGl0IHN0YXR1cyAxXG4iCisg
ICAgICAiQWN0dWFsIG1zZzpcbiIKKyAgICAgICJbICBERUFUSCAgIF0gZXhpdGluZyB3aXRoIHJj
IDFcbiIpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRGVhdGhUZXN0TXVsdGlMaW5l
TWF0Y2hGYWlsKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAi
ZmFzdCI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAorICAgICAgRVhQRUNUX0RFQVRIKERp
ZVdpdGhNZXNzYWdlKCJsaW5lIDFcbmxpbmUgMlxubGluZSAzXG4iKSwKKyAgICAgICAgICAgICAg
ICAgICAibGluZSAxXG54eXpcbmxpbmUgM1xuIiksCisgICAgICAiQWN0dWFsIG1zZzpcbiIKKyAg
ICAgICJbICBERUFUSCAgIF0gbGluZSAxXG4iCisgICAgICAiWyAgREVBVEggICBdIGxpbmUgMlxu
IgorICAgICAgIlsgIERFQVRIICAgXSBsaW5lIDNcbiIpOworfQorCitURVNUX0YoVGVzdEZvckRl
YXRoVGVzdCwgRGVhdGhUZXN0TXVsdGlMaW5lTWF0Y2hQYXNzKSB7CisgIHRlc3Rpbmc6OkdURVNU
X0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9ERUFUSChEaWVXaXRo
TWVzc2FnZSgibGluZSAxXG5saW5lIDJcbmxpbmUgM1xuIiksCisgICAgICAgICAgICAgICAibGlu
ZSAxXG5saW5lIDJcbmxpbmUgM1xuIik7Cit9CisKKy8vIEEgRGVhdGhUZXN0RmFjdG9yeSB0aGF0
IHJldHVybnMgTW9ja0RlYXRoVGVzdHMuCitjbGFzcyBNb2NrRGVhdGhUZXN0RmFjdG9yeSA6IHB1
YmxpYyBEZWF0aFRlc3RGYWN0b3J5IHsKKyBwdWJsaWM6CisgIE1vY2tEZWF0aFRlc3RGYWN0b3J5
KCk7CisgIHZpcnR1YWwgYm9vbCBDcmVhdGUoY29uc3QgY2hhciogc3RhdGVtZW50LAorICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6OlJFKiByZWdleCwKKyAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgRGVhdGhUZXN0
KiogdGVzdCk7CisKKyAgLy8gU2V0cyB0aGUgcGFyYW1ldGVycyBmb3Igc3Vic2VxdWVudCBjYWxs
cyB0byBDcmVhdGUuCisgIHZvaWQgU2V0UGFyYW1ldGVycyhib29sIGNyZWF0ZSwgRGVhdGhUZXN0
OjpUZXN0Um9sZSByb2xlLAorICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXR1cywgYm9vbCBw
YXNzZWQpOworCisgIC8vIEFjY2Vzc29ycy4KKyAgaW50IEFzc3VtZVJvbGVDYWxscygpIGNvbnN0
IHsgcmV0dXJuIGFzc3VtZV9yb2xlX2NhbGxzXzsgfQorICBpbnQgV2FpdENhbGxzKCkgY29uc3Qg
eyByZXR1cm4gd2FpdF9jYWxsc187IH0KKyAgc2l6ZV90IFBhc3NlZENhbGxzKCkgY29uc3QgeyBy
ZXR1cm4gcGFzc2VkX2FyZ3NfLnNpemUoKTsgfQorICBib29sIFBhc3NlZEFyZ3VtZW50KGludCBu
KSBjb25zdCB7IHJldHVybiBwYXNzZWRfYXJnc19bbl07IH0KKyAgc2l6ZV90IEFib3J0Q2FsbHMo
KSBjb25zdCB7IHJldHVybiBhYm9ydF9hcmdzXy5zaXplKCk7IH0KKyAgRGVhdGhUZXN0OjpBYm9y
dFJlYXNvbiBBYm9ydEFyZ3VtZW50KGludCBuKSBjb25zdCB7CisgICAgcmV0dXJuIGFib3J0X2Fy
Z3NfW25dOworICB9CisgIGJvb2wgVGVzdERlbGV0ZWQoKSBjb25zdCB7IHJldHVybiB0ZXN0X2Rl
bGV0ZWRfOyB9CisKKyBwcml2YXRlOgorICBmcmllbmQgY2xhc3MgTW9ja0RlYXRoVGVzdDsKKyAg
Ly8gSWYgdHJ1ZSwgQ3JlYXRlIHdpbGwgcmV0dXJuIGEgTW9ja0RlYXRoVGVzdDsgb3RoZXJ3aXNl
IGl0IHJldHVybnMKKyAgLy8gTlVMTC4KKyAgYm9vbCBjcmVhdGVfOworICAvLyBUaGUgdmFsdWUg
YSBNb2NrRGVhdGhUZXN0IHdpbGwgcmV0dXJuIGZyb20gaXRzIEFzc3VtZVJvbGUgbWV0aG9kLgor
ICBEZWF0aFRlc3Q6OlRlc3RSb2xlIHJvbGVfOworICAvLyBUaGUgdmFsdWUgYSBNb2NrRGVhdGhU
ZXN0IHdpbGwgcmV0dXJuIGZyb20gaXRzIFdhaXQgbWV0aG9kLgorICBpbnQgc3RhdHVzXzsKKyAg
Ly8gVGhlIHZhbHVlIGEgTW9ja0RlYXRoVGVzdCB3aWxsIHJldHVybiBmcm9tIGl0cyBQYXNzZWQg
bWV0aG9kLgorICBib29sIHBhc3NlZF87CisKKyAgLy8gTnVtYmVyIG9mIHRpbWVzIEFzc3VtZVJv
bGUgd2FzIGNhbGxlZC4KKyAgaW50IGFzc3VtZV9yb2xlX2NhbGxzXzsKKyAgLy8gTnVtYmVyIG9m
IHRpbWVzIFdhaXQgd2FzIGNhbGxlZC4KKyAgaW50IHdhaXRfY2FsbHNfOworICAvLyBUaGUgYXJn
dW1lbnRzIHRvIHRoZSBjYWxscyB0byBQYXNzZWQgc2luY2UgdGhlIGxhc3QgY2FsbCB0bworICAv
LyBTZXRQYXJhbWV0ZXJzLgorICBzdGQ6OnZlY3Rvcjxib29sPiBwYXNzZWRfYXJnc187CisgIC8v
IFRoZSBhcmd1bWVudHMgdG8gdGhlIGNhbGxzIHRvIEFib3J0IHNpbmNlIHRoZSBsYXN0IGNhbGwg
dG8KKyAgLy8gU2V0UGFyYW1ldGVycy4KKyAgc3RkOjp2ZWN0b3I8RGVhdGhUZXN0OjpBYm9ydFJl
YXNvbj4gYWJvcnRfYXJnc187CisgIC8vIFRydWUgaWYgdGhlIGxhc3QgTW9ja0RlYXRoVGVzdCBy
ZXR1cm5lZCBieSBDcmVhdGUgaGFzIGJlZW4KKyAgLy8gZGVsZXRlZC4KKyAgYm9vbCB0ZXN0X2Rl
bGV0ZWRfOworfTsKKworCisvLyBBIERlYXRoVGVzdCBpbXBsZW1lbnRhdGlvbiB1c2VmdWwgaW4g
dGVzdGluZy4gIEl0IHJldHVybnMgdmFsdWVzIHNldAorLy8gYXQgaXRzIGNyZWF0aW9uIGZyb20g
aXRzIHZhcmlvdXMgaW5oZXJpdGVkIERlYXRoVGVzdCBtZXRob2RzLCBhbmQKKy8vIHJlcG9ydHMg
Y2FsbHMgdG8gdGhvc2UgbWV0aG9kcyB0byBpdHMgcGFyZW50IE1vY2tEZWF0aFRlc3RGYWN0b3J5
CisvLyBvYmplY3QuCitjbGFzcyBNb2NrRGVhdGhUZXN0IDogcHVibGljIERlYXRoVGVzdCB7Cisg
cHVibGljOgorICBNb2NrRGVhdGhUZXN0KE1vY2tEZWF0aFRlc3RGYWN0b3J5ICpwYXJlbnQsCisg
ICAgICAgICAgICAgICAgVGVzdFJvbGUgcm9sZSwgaW50IHN0YXR1cywgYm9vbCBwYXNzZWQpIDoK
KyAgICAgIHBhcmVudF8ocGFyZW50KSwgcm9sZV8ocm9sZSksIHN0YXR1c18oc3RhdHVzKSwgcGFz
c2VkXyhwYXNzZWQpIHsKKyAgfQorICB2aXJ0dWFsIH5Nb2NrRGVhdGhUZXN0KCkgeworICAgIHBh
cmVudF8tPnRlc3RfZGVsZXRlZF8gPSB0cnVlOworICB9CisgIHZpcnR1YWwgVGVzdFJvbGUgQXNz
dW1lUm9sZSgpIHsKKyAgICArK3BhcmVudF8tPmFzc3VtZV9yb2xlX2NhbGxzXzsKKyAgICByZXR1
cm4gcm9sZV87CisgIH0KKyAgdmlydHVhbCBpbnQgV2FpdCgpIHsKKyAgICArK3BhcmVudF8tPndh
aXRfY2FsbHNfOworICAgIHJldHVybiBzdGF0dXNfOworICB9CisgIHZpcnR1YWwgYm9vbCBQYXNz
ZWQoYm9vbCBleGl0X3N0YXR1c19vaykgeworICAgIHBhcmVudF8tPnBhc3NlZF9hcmdzXy5wdXNo
X2JhY2soZXhpdF9zdGF0dXNfb2spOworICAgIHJldHVybiBwYXNzZWRfOworICB9CisgIHZpcnR1
YWwgdm9pZCBBYm9ydChBYm9ydFJlYXNvbiByZWFzb24pIHsKKyAgICBwYXJlbnRfLT5hYm9ydF9h
cmdzXy5wdXNoX2JhY2socmVhc29uKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgTW9ja0RlYXRoVGVz
dEZhY3RvcnkqIGNvbnN0IHBhcmVudF87CisgIGNvbnN0IFRlc3RSb2xlIHJvbGVfOworICBjb25z
dCBpbnQgc3RhdHVzXzsKKyAgY29uc3QgYm9vbCBwYXNzZWRfOworfTsKKworCisvLyBNb2NrRGVh
dGhUZXN0RmFjdG9yeSBjb25zdHJ1Y3Rvci4KK01vY2tEZWF0aFRlc3RGYWN0b3J5OjpNb2NrRGVh
dGhUZXN0RmFjdG9yeSgpCisgICAgOiBjcmVhdGVfKHRydWUpLAorICAgICAgcm9sZV8oRGVhdGhU
ZXN0OjpPVkVSU0VFX1RFU1QpLAorICAgICAgc3RhdHVzXygwKSwKKyAgICAgIHBhc3NlZF8odHJ1
ZSksCisgICAgICBhc3N1bWVfcm9sZV9jYWxsc18oMCksCisgICAgICB3YWl0X2NhbGxzXygwKSwK
KyAgICAgIHBhc3NlZF9hcmdzXygpLAorICAgICAgYWJvcnRfYXJnc18oKSB7Cit9CisKKworLy8g
U2V0cyB0aGUgcGFyYW1ldGVycyBmb3Igc3Vic2VxdWVudCBjYWxscyB0byBDcmVhdGUuCit2b2lk
IE1vY2tEZWF0aFRlc3RGYWN0b3J5OjpTZXRQYXJhbWV0ZXJzKGJvb2wgY3JlYXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWF0aFRlc3Q6OlRlc3RSb2xlIHJv
bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0dXMs
IGJvb2wgcGFzc2VkKSB7CisgIGNyZWF0ZV8gPSBjcmVhdGU7CisgIHJvbGVfID0gcm9sZTsKKyAg
c3RhdHVzXyA9IHN0YXR1czsKKyAgcGFzc2VkXyA9IHBhc3NlZDsKKworICBhc3N1bWVfcm9sZV9j
YWxsc18gPSAwOworICB3YWl0X2NhbGxzXyA9IDA7CisgIHBhc3NlZF9hcmdzXy5jbGVhcigpOwor
ICBhYm9ydF9hcmdzXy5jbGVhcigpOworfQorCisKKy8vIFNldHMgdGVzdCB0byBOVUxMIChpZiBj
cmVhdGVfIGlzIGZhbHNlKSBvciB0byB0aGUgYWRkcmVzcyBvZiBhIG5ldworLy8gTW9ja0RlYXRo
VGVzdCBvYmplY3Qgd2l0aCBwYXJhbWV0ZXJzIHRha2VuIGZyb20gdGhlIGxhc3QgY2FsbAorLy8g
dG8gU2V0UGFyYW1ldGVycyAoaWYgY3JlYXRlXyBpcyB0cnVlKS4gIEFsd2F5cyByZXR1cm5zIHRy
dWUuCitib29sIE1vY2tEZWF0aFRlc3RGYWN0b3J5OjpDcmVhdGUoY29uc3QgY2hhciogLypzdGF0
ZW1lbnQqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rp
bmc6OmludGVybmFsOjpSRSogLypyZWdleCovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIC8qZmlsZSovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCAvKmxpbmUqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
ZWF0aFRlc3QqKiB0ZXN0KSB7CisgIHRlc3RfZGVsZXRlZF8gPSBmYWxzZTsKKyAgaWYgKGNyZWF0
ZV8pIHsKKyAgICAqdGVzdCA9IG5ldyBNb2NrRGVhdGhUZXN0KHRoaXMsIHJvbGVfLCBzdGF0dXNf
LCBwYXNzZWRfKTsKKyAgfSBlbHNlIHsKKyAgICAqdGVzdCA9IE5VTEw7CisgIH0KKyAgcmV0dXJu
IHRydWU7Cit9CisKKy8vIEEgdGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIHRoZSBsb2dpYyBvZiB0
aGUgR1RFU1RfREVBVEhfVEVTVF8gbWFjcm8uCisvLyBJdCBpbnN0YWxscyBhIE1vY2tEZWF0aFRl
c3RGYWN0b3J5IHRoYXQgaXMgdXNlZCBmb3IgdGhlIGR1cmF0aW9uCisvLyBvZiB0aGUgdGVzdCBj
YXNlLgorY2xhc3MgTWFjcm9Mb2dpY0RlYXRoVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
KyBwcm90ZWN0ZWQ6CisgIHN0YXRpYyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVwbGFjZURlYXRoVGVz
dEZhY3RvcnkqIHJlcGxhY2VyXzsKKyAgc3RhdGljIE1vY2tEZWF0aFRlc3RGYWN0b3J5KiBmYWN0
b3J5XzsKKworICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgeworICAgIGZhY3RvcnlfID0g
bmV3IE1vY2tEZWF0aFRlc3RGYWN0b3J5OworICAgIHJlcGxhY2VyXyA9IG5ldyB0ZXN0aW5nOjpp
bnRlcm5hbDo6UmVwbGFjZURlYXRoVGVzdEZhY3RvcnkoZmFjdG9yeV8pOworICB9CisKKyAgc3Rh
dGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBkZWxldGUgcmVwbGFjZXJfOworICAg
IHJlcGxhY2VyXyA9IE5VTEw7CisgICAgZGVsZXRlIGZhY3RvcnlfOworICAgIGZhY3RvcnlfID0g
TlVMTDsKKyAgfQorCisgIC8vIFJ1bnMgYSBkZWF0aCB0ZXN0IHRoYXQgYnJlYWtzIHRoZSBydWxl
cyBieSByZXR1cm5pbmcuICBTdWNoIGEgZGVhdGgKKyAgLy8gdGVzdCBjYW5ub3QgYmUgcnVuIGRp
cmVjdGx5IGZyb20gYSB0ZXN0IHJvdXRpbmUgdGhhdCB1c2VzIGEKKyAgLy8gTW9ja0RlYXRoVGVz
dCwgb3IgdGhlIHJlbWFpbmRlciBvZiB0aGUgcm91dGluZSB3aWxsIG5vdCBiZSBleGVjdXRlZC4K
KyAgc3RhdGljIHZvaWQgUnVuUmV0dXJuaW5nRGVhdGhUZXN0KGJvb2wqIGZsYWcpIHsKKyAgICBB
U1NFUlRfREVBVEgoeyAgLy8gTk9MSU5UCisgICAgICAqZmxhZyA9IHRydWU7CisgICAgICByZXR1
cm47CisgICAgfSwgIiIpOworICB9Cit9OworCit0ZXN0aW5nOjppbnRlcm5hbDo6UmVwbGFjZURl
YXRoVGVzdEZhY3RvcnkqIE1hY3JvTG9naWNEZWF0aFRlc3Q6OnJlcGxhY2VyXworICAgID0gTlVM
TDsKK01vY2tEZWF0aFRlc3RGYWN0b3J5KiBNYWNyb0xvZ2ljRGVhdGhUZXN0OjpmYWN0b3J5XyA9
IE5VTEw7CisKKworLy8gVGVzdCB0aGF0IG5vdGhpbmcgaGFwcGVucyB3aGVuIHRoZSBmYWN0b3J5
IGRvZXNuJ3QgcmV0dXJuIGEgRGVhdGhUZXN0OgorVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3Qs
IE5vdGhpbmdIYXBwZW5zKSB7CisgIGJvb2wgZmxhZyA9IGZhbHNlOworICBmYWN0b3J5Xy0+U2V0
UGFyYW1ldGVycyhmYWxzZSwgRGVhdGhUZXN0OjpPVkVSU0VFX1RFU1QsIDAsIHRydWUpOworICBF
WFBFQ1RfREVBVEgoZmxhZyA9IHRydWUsICIiKTsKKyAgRVhQRUNUX0ZBTFNFKGZsYWcpOworICBF
WFBFQ1RfRVEoMCwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKKyAgRVhQRUNUX0VRKDAs
IGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPlBhc3Nl
ZENhbGxzKCkpOworICBFWFBFQ1RfRVEoMFUsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOworICBF
WFBFQ1RfRkFMU0UoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkpOworfQorCisvLyBUZXN0IHRoYXQg
dGhlIHBhcmVudCBwcm9jZXNzIGRvZXNuJ3QgcnVuIHRoZSBkZWF0aCB0ZXN0IGNvZGUsCisvLyBh
bmQgdGhhdCB0aGUgUGFzc2VkIG1ldGhvZCByZXR1cm5zIGZhbHNlIHdoZW4gdGhlIChzaW11bGF0
ZWQpCisvLyBjaGlsZCBwcm9jZXNzIGV4aXRzIHdpdGggc3RhdHVzIDA6CitURVNUX0YoTWFjcm9M
b2dpY0RlYXRoVGVzdCwgQ2hpbGRFeGl0c1N1Y2Nlc3NmdWxseSkgeworICBib29sIGZsYWcgPSBm
YWxzZTsKKyAgZmFjdG9yeV8tPlNldFBhcmFtZXRlcnModHJ1ZSwgRGVhdGhUZXN0OjpPVkVSU0VF
X1RFU1QsIDAsIHRydWUpOworICBFWFBFQ1RfREVBVEgoZmxhZyA9IHRydWUsICIiKTsKKyAgRVhQ
RUNUX0ZBTFNFKGZsYWcpOworICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxs
cygpKTsKKyAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7CisgIEFTU0VSVF9F
USgxVSwgZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOworICBFWFBFQ1RfRkFMU0UoZmFjdG9yeV8t
PlBhc3NlZEFyZ3VtZW50KDApKTsKKyAgRVhQRUNUX0VRKDBVLCBmYWN0b3J5Xy0+QWJvcnRDYWxs
cygpKTsKKyAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkpOworfQorCisvLyBU
ZXN0cyB0aGF0IHRoZSBQYXNzZWQgbWV0aG9kIHdhcyBnaXZlbiB0aGUgYXJndW1lbnQgInRydWUi
IHdoZW4KKy8vIHRoZSAoc2ltdWxhdGVkKSBjaGlsZCBwcm9jZXNzIGV4aXRzIHdpdGggc3RhdHVz
IDE6CitURVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwgQ2hpbGRFeGl0c1Vuc3VjY2Vzc2Z1bGx5
KSB7CisgIGJvb2wgZmxhZyA9IGZhbHNlOworICBmYWN0b3J5Xy0+U2V0UGFyYW1ldGVycyh0cnVl
LCBEZWF0aFRlc3Q6Ok9WRVJTRUVfVEVTVCwgMSwgdHJ1ZSk7CisgIEVYUEVDVF9ERUFUSChmbGFn
ID0gdHJ1ZSwgIiIpOworICBFWFBFQ1RfRkFMU0UoZmxhZyk7CisgIEVYUEVDVF9FUSgxLCBmYWN0
b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOworICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPldhaXRD
YWxscygpKTsKKyAgQVNTRVJUX0VRKDFVLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7CisgIEVY
UEVDVF9UUlVFKGZhY3RvcnlfLT5QYXNzZWRBcmd1bWVudCgwKSk7CisgIEVYUEVDVF9FUSgwVSwg
ZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7CisgIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5UZXN0RGVs
ZXRlZCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgKHNpbXVsYXRlZCkgY2hpbGQgcHJvY2Vz
cyBleGVjdXRlcyB0aGUgZGVhdGggdGVzdAorLy8gY29kZSwgYW5kIGlzIGFib3J0ZWQgd2l0aCB0
aGUgY29ycmVjdCBBYm9ydFJlYXNvbiBpZiBpdAorLy8gZXhlY3V0ZXMgYSByZXR1cm4gc3RhdGVt
ZW50LgorVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxkUGVyZm9ybXNSZXR1cm4pIHsK
KyAgYm9vbCBmbGFnID0gZmFsc2U7CisgIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJzKHRydWUsIERl
YXRoVGVzdDo6RVhFQ1VURV9URVNULCAwLCB0cnVlKTsKKyAgUnVuUmV0dXJuaW5nRGVhdGhUZXN0
KCZmbGFnKTsKKyAgRVhQRUNUX1RSVUUoZmxhZyk7CisgIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+
QXNzdW1lUm9sZUNhbGxzKCkpOworICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPldhaXRDYWxscygp
KTsKKyAgRVhQRUNUX0VRKDBVLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7CisgIEVYUEVDVF9F
USgxVSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7CisgIEVYUEVDVF9FUShEZWF0aFRlc3Q6OlRF
U1RfRU5DT1VOVEVSRURfUkVUVVJOX1NUQVRFTUVOVCwKKyAgICAgICAgICAgIGZhY3RvcnlfLT5B
Ym9ydEFyZ3VtZW50KDApKTsKKyAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkp
OworfQorCisvLyBUZXN0cyB0aGF0IHRoZSAoc2ltdWxhdGVkKSBjaGlsZCBwcm9jZXNzIGlzIGFi
b3J0ZWQgd2l0aCB0aGUKKy8vIGNvcnJlY3QgQWJvcnRSZWFzb24gaWYgaXQgZG9lcyBub3QgZGll
LgorVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxkRG9lc05vdERpZSkgeworICBib29s
IGZsYWcgPSBmYWxzZTsKKyAgZmFjdG9yeV8tPlNldFBhcmFtZXRlcnModHJ1ZSwgRGVhdGhUZXN0
OjpFWEVDVVRFX1RFU1QsIDAsIHRydWUpOworICBFWFBFQ1RfREVBVEgoZmxhZyA9IHRydWUsICIi
KTsKKyAgRVhQRUNUX1RSVUUoZmxhZyk7CisgIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1l
Um9sZUNhbGxzKCkpOworICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPldhaXRDYWxscygpKTsKKyAg
RVhQRUNUX0VRKDBVLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7CisgIC8vIFRoaXMgdGltZSB0
aGVyZSBhcmUgdHdvIGNhbGxzIHRvIEFib3J0OiBvbmUgc2luY2UgdGhlIHRlc3QgZGlkbid0Cisg
IC8vIGRpZSwgYW5kIGFub3RoZXIgZnJvbSB0aGUgUmV0dXJuU2VudGluZWwgd2hlbiBpdCdzIGRl
c3Ryb3llZC4gIFRoZQorICAvLyBzZW50aW5lbCBub3JtYWxseSBpc24ndCBkZXN0cm95ZWQgaWYg
YSB0ZXN0IGRvZXNuJ3QgZGllLCBzaW5jZQorICAvLyBfZXhpdCgyKSBpcyBjYWxsZWQgaW4gdGhh
dCBjYXNlIGJ5IEZvcmtpbmdEZWF0aFRlc3QsIGJ1dCBub3QgYnkKKyAgLy8gb3VyIE1vY2tEZWF0
aFRlc3QuCisgIEFTU0VSVF9FUSgyVSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7CisgIEVYUEVD
VF9FUShEZWF0aFRlc3Q6OlRFU1RfRElEX05PVF9ESUUsCisgICAgICAgICAgICBmYWN0b3J5Xy0+
QWJvcnRBcmd1bWVudCgwKSk7CisgIEVYUEVDVF9FUShEZWF0aFRlc3Q6OlRFU1RfRU5DT1VOVEVS
RURfUkVUVVJOX1NUQVRFTUVOVCwKKyAgICAgICAgICAgIGZhY3RvcnlfLT5BYm9ydEFyZ3VtZW50
KDEpKTsKKyAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkpOworfQorCisvLyBU
ZXN0cyB0aGF0IGEgc3VjY2Vzc2Z1bCBkZWF0aCB0ZXN0IGRvZXMgbm90IHJlZ2lzdGVyIGEgc3Vj
Y2Vzc2Z1bAorLy8gdGVzdCBwYXJ0LgorVEVTVChTdWNjZXNzUmVnaXN0cmF0aW9uRGVhdGhUZXN0
LCBOb1N1Y2Nlc3NQYXJ0KSB7CisgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOworICBFWFBF
Q1RfRVEoMCwgR2V0VW5pdFRlc3RJbXBsKCktPmN1cnJlbnRfdGVzdF9yZXN1bHQoKS0+dG90YWxf
cGFydF9jb3VudCgpKTsKK30KKworVEVTVChTdHJlYW1pbmdBc3NlcnRpb25zRGVhdGhUZXN0LCBE
ZWF0aFRlc3QpIHsKKyAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgInVuZXhwZWN0ZWQg
ZmFpbHVyZSI7CisgIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8ICJ1bmV4cGVjdGVkIGZh
aWx1cmUiOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBF
Q1RfREVBVEgoX2V4aXQoMCksICIiKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSI7CisgIH0sICJleHBl
Y3RlZCBmYWlsdXJlIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAg
IEFTU0VSVF9ERUFUSChfZXhpdCgwKSwgIiIpIDw8ICJleHBlY3RlZCBmYWlsdXJlIjsKKyAgfSwg
ImV4cGVjdGVkIGZhaWx1cmUiKTsKK30KKworLy8gVGVzdHMgdGhhdCBHZXRMYXN0RXJybm9EZXNj
cmlwdGlvbiByZXR1cm5zIGFuIGVtcHR5IHN0cmluZyB3aGVuIHRoZQorLy8gbGFzdCBlcnJvciBp
cyAwIGFuZCBub24tZW1wdHkgc3RyaW5nIHdoZW4gaXQgaXMgbm9uLXplcm8uCitURVNUKEdldExh
c3RFcnJub0Rlc2NyaXB0aW9uLCBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbldvcmtzKSB7CisgIGVy
cm5vID0gRU5PRU5UOworICBFWFBFQ1RfU1RSTkUoIiIsIEdldExhc3RFcnJub0Rlc2NyaXB0aW9u
KCkuY19zdHIoKSk7CisgIGVycm5vID0gMDsKKyAgRVhQRUNUX1NUUkVRKCIiLCBHZXRMYXN0RXJy
bm9EZXNjcmlwdGlvbigpLmNfc3RyKCkpOworfQorCisjIGlmIEdURVNUX09TX1dJTkRPV1MKK1RF
U1QoQXV0b0hhbmRsZVRlc3QsIEF1dG9IYW5kbGVXb3JrcykgeworICBIQU5ETEUgaGFuZGxlID0g
OjpDcmVhdGVFdmVudChOVUxMLCBGQUxTRSwgRkFMU0UsIE5VTEwpOworICBBU1NFUlRfTkUoSU5W
QUxJRF9IQU5ETEVfVkFMVUUsIGhhbmRsZSk7CisKKyAgLy8gVGVzdHMgdGhhdCB0aGUgQXV0b0hh
bmRsZSBpcyBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgd2l0aCBhIGhhbmRsZS4KKyAgdGVzdGluZzo6
aW50ZXJuYWw6OkF1dG9IYW5kbGUgYXV0b19oYW5kbGUoaGFuZGxlKTsKKyAgRVhQRUNUX0VRKGhh
bmRsZSwgYXV0b19oYW5kbGUuR2V0KCkpOworCisgIC8vIFRlc3RzIHRoYXQgUmVzZXQgYXNzaWdu
cyBJTlZBTElEX0hBTkRMRV9WQUxVRS4KKyAgLy8gTm90ZSB0aGF0IHRoaXMgY2Fubm90IHZlcmlm
eSB3aGV0aGVyIHRoZSBvcmlnaW5hbCBoYW5kbGUgaXMgY2xvc2VkLgorICBhdXRvX2hhbmRsZS5S
ZXNldCgpOworICBFWFBFQ1RfRVEoSU5WQUxJRF9IQU5ETEVfVkFMVUUsIGF1dG9faGFuZGxlLkdl
dCgpKTsKKworICAvLyBUZXN0cyB0aGF0IFJlc2V0IGFzc2lnbnMgdGhlIG5ldyBoYW5kbGUuCisg
IC8vIE5vdGUgdGhhdCB0aGlzIGNhbm5vdCB2ZXJpZnkgd2hldGhlciB0aGUgb3JpZ2luYWwgaGFu
ZGxlIGlzIGNsb3NlZC4KKyAgaGFuZGxlID0gOjpDcmVhdGVFdmVudChOVUxMLCBGQUxTRSwgRkFM
U0UsIE5VTEwpOworICBBU1NFUlRfTkUoSU5WQUxJRF9IQU5ETEVfVkFMVUUsIGhhbmRsZSk7Cisg
IGF1dG9faGFuZGxlLlJlc2V0KGhhbmRsZSk7CisgIEVYUEVDVF9FUShoYW5kbGUsIGF1dG9faGFu
ZGxlLkdldCgpKTsKKworICAvLyBUZXN0cyB0aGF0IEF1dG9IYW5kbGUgY29udGFpbnMgSU5WQUxJ
RF9IQU5ETEVfVkFMVUUgYnkgZGVmYXVsdC4KKyAgdGVzdGluZzo6aW50ZXJuYWw6OkF1dG9IYW5k
bGUgYXV0b19oYW5kbGUyOworICBFWFBFQ1RfRVEoSU5WQUxJRF9IQU5ETEVfVkFMVUUsIGF1dG9f
aGFuZGxlMi5HZXQoKSk7Cit9CisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKyMgaWYg
R1RFU1RfT1NfV0lORE9XUwordHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IEJpZ2dlc3RQYXJzYWJs
ZTsKK3R5cGVkZWYgc2lnbmVkIF9faW50NjQgQmlnZ2VzdFNpZ25lZFBhcnNhYmxlOworIyBlbHNl
Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBCaWdnZXN0UGFyc2FibGU7Cit0eXBlZGVmIHNp
Z25lZCBsb25nIGxvbmcgQmlnZ2VzdFNpZ25lZFBhcnNhYmxlOworIyBlbmRpZiAgLy8gR1RFU1Rf
T1NfV0lORE9XUworCisvLyBXZSBjYW5ub3QgdXNlIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1h
eCgpIGFzIGl0IGNsYXNoZXMgd2l0aCB0aGUKKy8vIG1heCgpIG1hY3JvIGRlZmluZWQgYnkgPHdp
bmRvd3MuaD4uCitjb25zdCBCaWdnZXN0UGFyc2FibGUga0JpZ2dlc3RQYXJzYWJsZU1heCA9IFVM
TE9OR19NQVg7Citjb25zdCBCaWdnZXN0U2lnbmVkUGFyc2FibGUga0JpZ2dlc3RTaWduZWRQYXJz
YWJsZU1heCA9IExMT05HX01BWDsKKworVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBSZWpl
Y3RzSW52YWxpZEZvcm1hdCkgeworICBCaWdnZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsKKworICAv
LyBSZWplY3RzIG5vbi1udW1iZXJzLgorICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVy
KCJub24tbnVtYmVyIHN0cmluZyIsICZyZXN1bHQpKTsKKworICAvLyBSZWplY3RzIG51bWJlcnMg
d2l0aCB3aGl0ZXNwYWNlIHByZWZpeC4KKyAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJl
cigiIDEyMyIsICZyZXN1bHQpKTsKKworICAvLyBSZWplY3RzIG5lZ2F0aXZlIG51bWJlcnMuCisg
IEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoIi0xMjMiLCAmcmVzdWx0KSk7CisKKyAg
Ly8gUmVqZWN0cyBudW1iZXJzIHN0YXJ0aW5nIHdpdGggYSBwbHVzIHNpZ24uCisgIEVYUEVDVF9G
QUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoIisxMjMiLCAmcmVzdWx0KSk7CisgIGVycm5vID0gMDsK
K30KKworVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBSZWplY3RzT3ZlcmZsb3duTnVtYmVy
cykgeworICBCaWdnZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsKKworICBFWFBFQ1RfRkFMU0UoUGFy
c2VOYXR1cmFsTnVtYmVyKCI5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSIsICZyZXN1bHQpKTsKKwor
ICBzaWduZWQgY2hhciBjaGFyX3Jlc3VsdCA9IDA7CisgIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVy
YWxOdW1iZXIoIjIwMCIsICZjaGFyX3Jlc3VsdCkpOworICBlcnJubyA9IDA7Cit9CisKK1RFU1Qo
UGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgQWNjZXB0c1ZhbGlkTnVtYmVycykgeworICBCaWdnZXN0
UGFyc2FibGUgcmVzdWx0ID0gMDsKKworICByZXN1bHQgPSAwOworICBBU1NFUlRfVFJVRShQYXJz
ZU5hdHVyYWxOdW1iZXIoIjEyMyIsICZyZXN1bHQpKTsKKyAgRVhQRUNUX0VRKDEyM1UsIHJlc3Vs
dCk7CisKKyAgLy8gQ2hlY2sgMCBhcyBhbiBlZGdlIGNhc2UuCisgIHJlc3VsdCA9IDE7CisgIEFT
U0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcigiMCIsICZyZXN1bHQpKTsKKyAgRVhQRUNUX0VR
KDBVLCByZXN1bHQpOworCisgIHJlc3VsdCA9IDE7CisgIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJh
bE51bWJlcigiMDAwMDAiLCAmcmVzdWx0KSk7CisgIEVYUEVDVF9FUSgwVSwgcmVzdWx0KTsKK30K
KworVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBBY2NlcHRzVHlwZUxpbWl0cykgeworICBN
ZXNzYWdlIG1zZzsKKyAgbXNnIDw8IGtCaWdnZXN0UGFyc2FibGVNYXg7CisKKyAgQmlnZ2VzdFBh
cnNhYmxlIHJlc3VsdCA9IDA7CisgIEVYUEVDVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihtc2cu
R2V0U3RyaW5nKCksICZyZXN1bHQpKTsKKyAgRVhQRUNUX0VRKGtCaWdnZXN0UGFyc2FibGVNYXgs
IHJlc3VsdCk7CisKKyAgTWVzc2FnZSBtc2cyOworICBtc2cyIDw8IGtCaWdnZXN0U2lnbmVkUGFy
c2FibGVNYXg7CisKKyAgQmlnZ2VzdFNpZ25lZFBhcnNhYmxlIHNpZ25lZF9yZXN1bHQgPSAwOwor
ICBFWFBFQ1RfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIobXNnMi5HZXRTdHJpbmcoKSwgJnNpZ25l
ZF9yZXN1bHQpKTsKKyAgRVhQRUNUX0VRKGtCaWdnZXN0U2lnbmVkUGFyc2FibGVNYXgsIHNpZ25l
ZF9yZXN1bHQpOworCisgIE1lc3NhZ2UgbXNnMzsKKyAgbXNnMyA8PCBJTlRfTUFYOworCisgIGlu
dCBpbnRfcmVzdWx0ID0gMDsKKyAgRVhQRUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKG1zZzMu
R2V0U3RyaW5nKCksICZpbnRfcmVzdWx0KSk7CisgIEVYUEVDVF9FUShJTlRfTUFYLCBpbnRfcmVz
dWx0KTsKKworICBNZXNzYWdlIG1zZzQ7CisgIG1zZzQgPDwgVUlOVF9NQVg7CisKKyAgdW5zaWdu
ZWQgaW50IHVpbnRfcmVzdWx0ID0gMDsKKyAgRVhQRUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVy
KG1zZzQuR2V0U3RyaW5nKCksICZ1aW50X3Jlc3VsdCkpOworICBFWFBFQ1RfRVEoVUlOVF9NQVgs
IHVpbnRfcmVzdWx0KTsKK30KKworVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBXb3Jrc0Zv
clNob3J0ZXJJbnRlZ2VycykgeworICBzaG9ydCBzaG9ydF9yZXN1bHQgPSAwOworICBBU1NFUlRf
VFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjEyMyIsICZzaG9ydF9yZXN1bHQpKTsKKyAgRVhQRUNU
X0VRKDEyMywgc2hvcnRfcmVzdWx0KTsKKworICBzaWduZWQgY2hhciBjaGFyX3Jlc3VsdCA9IDA7
CisgIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcigiMTIzIiwgJmNoYXJfcmVzdWx0KSk7
CisgIEVYUEVDVF9FUSgxMjMsIGNoYXJfcmVzdWx0KTsKK30KKworIyBpZiBHVEVTVF9PU19XSU5E
T1dTCitURVNUKEVudmlyb25tZW50VGVzdCwgSGFuZGxlRml0c0ludG9TaXplVCkgeworICAvLyBG
SVhNRTogUmVtb3ZlIHRoaXMgdGVzdCBhZnRlciB0aGlzIGNvbmRpdGlvbiBpcyB2ZXJpZmllZAor
ICAvLyBpbiBhIHN0YXRpYyBhc3NlcnRpb24gaW4gZ3Rlc3QtZGVhdGgtdGVzdC5jYyBpbiB0aGUg
ZnVuY3Rpb24KKyAgLy8gR2V0U3RhdHVzRmlsZURlc2NyaXB0b3IuCisgIEFTU0VSVF9UUlVFKHNp
emVvZihIQU5ETEUpIDw9IHNpemVvZihzaXplX3QpKTsKK30KKyMgZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEL0FTU0VS
VF9ERUFUSF9JRl9TVVBQT1JURUQgdHJpZ2dlcgorLy8gZmFpbHVyZXMgd2hlbiBkZWF0aCB0ZXN0
cyBhcmUgYXZhaWxhYmxlIG9uIHRoZSBzeXN0ZW0uCitURVNUKENvbmRpdGlvbmFsRGVhdGhNYWNy
b3NEZWF0aFRlc3QsIEV4cGVjdHNEZWF0aFdoZW5EZWF0aFRlc3RzQXZhaWxhYmxlKSB7CisgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoRGllSW5zaWRlKCJDb25kRGVhdGhUZXN0RXhwZWN0TWFj
cm8iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVhdGggaW5zaWRlIENvbmREZWF0
aFRlc3RFeHBlY3RNYWNybyIpOworICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKERpZUluc2lk
ZSgiQ29uZERlYXRoVGVzdEFzc2VydE1hY3JvIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImRlYXRoIGluc2lkZSBDb25kRGVhdGhUZXN0QXNzZXJ0TWFjcm8iKTsKKworICAvLyBFbXB0
eSBzdGF0ZW1lbnQgd2lsbCBub3QgY3Jhc2gsIHdoaWNoIG11c3QgdHJpZ2dlciBhIGZhaWx1cmUu
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoOywg
IiIpLCAiIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JU
RUQoOywgIiIpLCAiIik7Cit9CisKK1RFU1QoSW5EZWF0aFRlc3RDaGlsZERlYXRoVGVzdCwgUmVw
b3J0c0RlYXRoVGVzdENvcnJlY3RseUluRmFzdFN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZM
QUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9GQUxTRShJbkRlYXRoVGVz
dENoaWxkKCkpOworICBFWFBFQ1RfREVBVEgoeworICAgIGZwcmludGYoc3RkZXJyLCBJbkRlYXRo
VGVzdENoaWxkKCkgPyAiSW5zaWRlIiA6ICJPdXRzaWRlIik7CisgICAgZmZsdXNoKHN0ZGVycik7
CisgICAgX2V4aXQoMSk7CisgIH0sICJJbnNpZGUiKTsKK30KKworVEVTVChJbkRlYXRoVGVzdENo
aWxkRGVhdGhUZXN0LCBSZXBvcnRzRGVhdGhUZXN0Q29ycmVjdGx5SW5UaHJlYWRTYWZlU3R5bGUp
IHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZl
IjsKKyAgRVhQRUNUX0ZBTFNFKEluRGVhdGhUZXN0Q2hpbGQoKSk7CisgIEVYUEVDVF9ERUFUSCh7
CisgICAgZnByaW50ZihzdGRlcnIsIEluRGVhdGhUZXN0Q2hpbGQoKSA/ICJJbnNpZGUiIDogIk91
dHNpZGUiKTsKKyAgICBmZmx1c2goc3RkZXJyKTsKKyAgICBfZXhpdCgxKTsKKyAgfSwgIkluc2lk
ZSIpOworfQorCisjZWxzZSAgLy8gIUdURVNUX0hBU19ERUFUSF9URVNUIGZvbGxvd3MKKwordXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OkNhcHR1cmVTdGRlcnI7Cit1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6R2V0Q2FwdHVyZWRTdGRlcnI7CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRIX0lG
X1NVUFBPUlRFRC9BU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEIGFyZSBzdGlsbAorLy8gZGVmaW5l
ZCBidXQgZG8gbm90IHRyaWdnZXIgZmFpbHVyZXMgd2hlbiBkZWF0aCB0ZXN0cyBhcmUgbm90IGF2
YWlsYWJsZSBvbgorLy8gdGhlIHN5c3RlbS4KK1RFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc1Rl
c3QsIFdhcm5zV2hlbkRlYXRoVGVzdHNOb3RBdmFpbGFibGUpIHsKKyAgLy8gRW1wdHkgc3RhdGVt
ZW50IHdpbGwgbm90IGNyYXNoLCBidXQgdGhhdCBzaG91bGQgbm90IHRyaWdnZXIgYSBmYWlsdXJl
CisgIC8vIHdoZW4gZGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQuCisgIENhcHR1cmVTdGRl
cnIoKTsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIik7CisgIHN0ZDo6c3RyaW5n
IG91dHB1dCA9IEdldENhcHR1cmVkU3RkZXJyKCk7CisgIEFTU0VSVF9UUlVFKE5VTEwgIT0gc3Ry
c3RyKG91dHB1dC5jX3N0cigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVhdGgg
dGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSIpKTsKKyAgQVNTRVJUX1RS
VUUoTlVMTCAhPSBzdHJzdHIob3V0cHV0LmNfc3RyKCksICI7IikpOworCisgIC8vIFRoZSBzdHJl
YW1lZCBtZXNzYWdlIHNob3VsZCBub3QgYmUgcHJpbnRlZCBhcyB0aGVyZSBpcyBubyB0ZXN0IGZh
aWx1cmUuCisgIENhcHR1cmVTdGRlcnIoKTsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg7
LCAiIikgPDwgInN0cmVhbWVkIG1lc3NhZ2UiOworICBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVy
cigpOworICBBU1NFUlRfVFJVRShOVUxMID09IHN0cnN0cihvdXRwdXQuY19zdHIoKSwgInN0cmVh
bWVkIG1lc3NhZ2UiKSk7CisKKyAgQ2FwdHVyZVN0ZGVycigpOworICBBU1NFUlRfREVBVEhfSUZf
U1VQUE9SVEVEKDssICIiKTsgIC8vIE5PTElOVAorICBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVy
cigpOworICBBU1NFUlRfVFJVRShOVUxMICE9IHN0cnN0cihvdXRwdXQuY19zdHIoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkIG9u
IHRoaXMgcGxhdGZvcm0iKSk7CisgIEFTU0VSVF9UUlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5j
X3N0cigpLCAiOyIpKTsKKworICBDYXB0dXJlU3RkZXJyKCk7CisgIEFTU0VSVF9ERUFUSF9JRl9T
VVBQT1JURUQoOywgIiIpIDw8ICJzdHJlYW1lZCBtZXNzYWdlIjsgIC8vIE5PTElOVAorICBvdXRw
dXQgPSBHZXRDYXB0dXJlZFN0ZGVycigpOworICBBU1NFUlRfVFJVRShOVUxMID09IHN0cnN0cihv
dXRwdXQuY19zdHIoKSwgInN0cmVhbWVkIG1lc3NhZ2UiKSk7Cit9CisKK3ZvaWQgRnVuY1dpdGhB
c3NlcnQoaW50KiBuKSB7CisgIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQocmV0dXJuOywgIiIp
OworICAoKm4pKys7Cit9CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRF
RCBkb2VzIG5vdCByZXR1cm4gZnJvbSB0aGUgY3VycmVudAorLy8gZnVuY3Rpb24gKGFzIEFTU0VS
VF9ERUFUSCBkb2VzKSBpZiBkZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZC4KK1RFU1QoQ29u
ZGl0aW9uYWxEZWF0aE1hY3Jvc1Rlc3QsIEFzc2VydERlYXREb2VzTm90UmV0dXJuaElmVW5zdXBw
b3J0ZWQpIHsKKyAgaW50IG4gPSAwOworICBGdW5jV2l0aEFzc2VydCgmbik7CisgIEVYUEVDVF9F
USgxLCBuKTsKK30KKworI2VuZGlmICAvLyAhR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworLy8gVGVz
dHMgdGhhdCB0aGUgZGVhdGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUgd2hpY2ggbWF5IG9y
IG1heSBub3QKKy8vIGJlIGZvbGxvd2VkIGJ5IG9wZXJhdG9yPDwsIGFuZCB0aGF0IGluIGVpdGhl
ciBjYXNlIHRoZSBjb21wbGV0ZSB0ZXh0CisvLyBjb21wcmlzZXMgb25seSBhIHNpbmdsZSBDKysg
c3RhdGVtZW50LgorLy8KKy8vIFRoZSBzeW50YXggc2hvdWxkIHdvcmsgd2hldGhlciBkZWF0aCB0
ZXN0cyBhcmUgYXZhaWxhYmxlIG9yIG5vdC4KK1RFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc1N5
bnRheERlYXRoVGVzdCwgU2luZ2xlU3RhdGVtZW50KSB7CisgIGlmIChBbHdheXNGYWxzZSgpKQor
ICAgIC8vIFRoaXMgd291bGQgZmFpbCBpZiBleGVjdXRlZDsgdGhpcyBpcyBhIGNvbXBpbGF0aW9u
IHRlc3Qgb25seQorICAgIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQocmV0dXJuLCAiIik7CisK
KyAgaWYgKEFsd2F5c1RydWUoKSkKKyAgICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKF9leGl0
KDEpLCAiIik7CisgIGVsc2UKKyAgICAvLyBUaGlzIGVtcHR5ICJlbHNlIiBicmFuY2ggaXMgbWVh
bnQgdG8gZW5zdXJlIHRoYXQgRVhQRUNUX0RFQVRICisgICAgLy8gZG9lc24ndCBleHBhbmQgaW50
byBhbiAiaWYiIHN0YXRlbWVudCB3aXRob3V0IGFuICJlbHNlIgorICAgIDsgIC8vIE5PTElOVAor
CisgIGlmIChBbHdheXNGYWxzZSgpKQorICAgIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQocmV0
dXJuLCAiIikgPDwgImRpZCBub3QgZGllIjsKKworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICA7
ICAvLyBOT0xJTlQKKyAgZWxzZQorICAgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQo
MSksICIiKSA8PCAxIDw8IDIgPDwgMzsKK30KKworLy8gVGVzdHMgdGhhdCBjb25kaXRpb25hbCBk
ZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29kZSB3aGljaCBpbnRlcmFjdHMKKy8vIHdlbGwg
d2l0aCBzd2l0Y2ggc3RhdGVtZW50cy4KK1RFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc1N5bnRh
eERlYXRoVGVzdCwgU3dpdGNoU3RhdGVtZW50KSB7CisgIC8vIE1pY3Jvc29mdCBjb21waWxlciB1
c3VhbGx5IGNvbXBsYWlucyBhYm91dCBzd2l0Y2ggc3RhdGVtZW50cyB3aXRob3V0CisgIC8vIGNh
c2UgbGFiZWxzLiBXZSBzdXBwcmVzcyB0aGF0IHdhcm5pbmcgZm9yIHRoaXMgdGVzdC4KKyAgR1RF
U1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDA2NSkKKworICBzd2l0Y2ggKDApCisgICAg
ZGVmYXVsdDoKKyAgICAgIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQoMSksICIiKQor
ICAgICAgICAgIDw8ICJleGl0IGluIGRlZmF1bHQgc3dpdGNoIGhhbmRsZXIiOworCisgIHN3aXRj
aCAoMCkKKyAgICBjYXNlIDA6CisgICAgICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKF9leGl0
KDEpLCAiIikgPDwgImV4aXQgaW4gc3dpdGNoIGNhc2UiOworCisgIEdURVNUX0RJU0FCTEVfTVND
X1dBUk5JTkdTX1BPUF8oKQorfQorCisvLyBUZXN0cyB0aGF0IGEgdGVzdCBjYXNlIHdob3NlIG5h
bWUgZW5kcyB3aXRoICJEZWF0aFRlc3QiIHdvcmtzIGZpbmUKKy8vIG9uIFdpbmRvd3MuCitURVNU
KE5vdEFEZWF0aFRlc3QsIFRlc3QpIHsKKyAgU1VDQ0VFRCgpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1kZWF0aC10ZXN0X2V4
X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhiOTQ3MGZjODhhZDE3YWFlYjY2NGQ0N2MyNzBjZmNhYTcz
MWJlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MKQEAgLTAsMCArMSw5MiBAQAorLy8gQ29weXJp
Z2h0IDIwMTAsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRp
b24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisv
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gVGVzdHMgdGhhdCB2
ZXJpZnkgaW50ZXJhY3Rpb24gb2YgZXhjZXB0aW9ucyBhbmQgZGVhdGggdGVzdHMuCisKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
KworI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCisKKyMgaWYgR1RFU1RfSEFTX1NFSAorIyAgaW5j
bHVkZSA8d2luZG93cy5oPiAgICAgICAgICAvLyBGb3IgUmFpc2VFeGNlcHRpb24oKS4KKyMgZW5k
aWYKKworIyBpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKworIyBpZiBHVEVTVF9IQVNfRVhD
RVBUSU9OUworCisjICBpbmNsdWRlIDxleGNlcHRpb24+ICAvLyBGb3Igc3RkOjpleGNlcHRpb24u
CisKKy8vIFRlc3RzIHRoYXQgZGVhdGggdGVzdHMgcmVwb3J0IHRocm93biBleGNlcHRpb25zIGFz
IGZhaWx1cmVzIGFuZCB0aGF0IHRoZQorLy8gZXhjZXB0aW9ucyBkbyBub3QgZXNjYXBlIGRlYXRo
IHRlc3QgbWFjcm9zLgorVEVTVChDeHhFeGNlcHRpb25EZWF0aFRlc3QsIEV4Y2VwdGlvbklzRmFp
bHVyZSkgeworICB0cnkgeworICAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ERUFU
SCh0aHJvdyAxLCAiIiksICJ0aHJldyBhbiBleGNlcHRpb24iKTsKKyAgfSBjYXRjaCAoLi4uKSB7
ICAvLyBOT0xJTlQKKyAgICBGQUlMKCkgPDwgIkFuIGV4Y2VwdGlvbiBlc2NhcGVkIGEgZGVhdGgg
dGVzdCBtYWNybyBpbnZvY2F0aW9uICIKKyAgICAgICAgICAgPDwgIndpdGggY2F0Y2hfZXhjZXB0
aW9ucyAiCisgICAgICAgICAgIDw8ICh0ZXN0aW5nOjpHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlv
bnMpID8gImVuYWJsZWQiIDogImRpc2FibGVkIik7CisgIH0KK30KKworY2xhc3MgVGVzdEV4Y2Vw
dGlvbiA6IHB1YmxpYyBzdGQ6OmV4Y2VwdGlvbiB7CisgcHVibGljOgorICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHdoYXQoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuICJleGNlcHRpb25hbCBtZXNzYWdl
IjsgfQorfTsKKworVEVTVChDeHhFeGNlcHRpb25EZWF0aFRlc3QsIFByaW50c01lc3NhZ2VGb3JT
dGRFeGNlcHRpb25zKSB7CisgIC8vIFZlcmlmaWVzIHRoYXQgdGhlIGV4Y2VwdGlvbiBtZXNzYWdl
IGlzIHF1b3RlZCBpbiB0aGUgZmFpbHVyZSB0ZXh0LgorICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShFWFBFQ1RfREVBVEgodGhyb3cgVGVzdEV4Y2VwdGlvbigpLCAiIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICJleGNlcHRpb25hbCBtZXNzYWdlIik7CisgIC8vIFZlcmlmaWVzIHRoYXQg
dGhlIGxvY2F0aW9uIGlzIG1lbnRpb25lZCBpbiB0aGUgZmFpbHVyZSB0ZXh0LgorICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgodGhyb3cgVGVzdEV4Y2VwdGlvbigpLCAiIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICJnb29nbGV0ZXN0LWRlYXRoLXRlc3RfZXhfdGVz
dC5jYyIpOworfQorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworIyBpZiBHVEVT
VF9IQVNfU0VICisvLyBUZXN0cyB0aGF0IGVuYWJsaW5nIGludGVyY2VwdGlvbiBvZiBTRUggZXhj
ZXB0aW9ucyB3aXRoIHRoZQorLy8gY2F0Y2hfZXhjZXB0aW9ucyBmbGFnIGRvZXMgbm90IGludGVy
ZmVyZSB3aXRoIFNFSCBleGNlcHRpb25zIGJlaW5nCisvLyB0cmVhdGVkIGFzIGRlYXRoIGJ5IGRl
YXRoIHRlc3RzLgorVEVTVChTZWhFeGNlcHRpb25EZWFzVGVzdCwgQ2F0Y2hFeGNlcHRpb25zRG9l
c05vdEludGVyZmVyZSkgeworICBFWFBFQ1RfREVBVEgoUmFpc2VFeGNlcHRpb24oNDIsIDB4MCwg
MCwgTlVMTCksICIiKQorICAgICAgPDwgIndpdGggY2F0Y2hfZXhjZXB0aW9ucyAiCisgICAgICA8
PCAodGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA/ICJlbmFibGVkIiA6ICJk
aXNhYmxlZCIpOworfQorIyBlbmRpZgorCisjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNU
CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICB0ZXN0aW5nOjpJbml0R29v
Z2xlVGVzdCgmYXJnYywgYXJndik7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0
aW9ucykgPSBHVEVTVF9FTkFCTEVfQ0FUQ0hfRVhDRVBUSU9OU18gIT0gMDsKKyAgcmV0dXJuIFJV
Tl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxZWZlZWUxZWFiOGM2
ZGFjYjVkMjkyNmY0YjVjOTA4MDkzOGRiMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0LnB5CkBAIC0wLDAgKzEs
MTE3IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDgsIEdvb2ds
ZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJW
ZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IGNvcnJlY3RseSBwYXJzZXMgZW52aXJvbm1lbnQgdmFy
aWFibGVzLiIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKKworSVNf
V0lORE9XUyA9IG9zLm5hbWUgPT0gJ250JworSVNfTElOVVggPSBvcy5uYW1lID09ICdwb3NpeCcg
YW5kIG9zLnVuYW1lKClbMF0gPT0gJ0xpbnV4JworCitDT01NQU5EID0gZ3Rlc3RfdGVzdF91dGls
cy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2dvb2dsZXRlc3QtZW52LXZhci10ZXN0XycpCisKK2Vu
dmlyb24gPSBvcy5lbnZpcm9uLmNvcHkoKQorCisKK2RlZiBBc3NlcnRFcShleHBlY3RlZCwgYWN0
dWFsKToKKyAgaWYgZXhwZWN0ZWQgIT0gYWN0dWFsOgorICAgIHByaW50ICdFeHBlY3RlZDogJXMn
ICUgKGV4cGVjdGVkLCkKKyAgICBwcmludCAnICBBY3R1YWw6ICVzJyAlIChhY3R1YWwsKQorICAg
IHJhaXNlIEFzc2VydGlvbkVycm9yCisKKworZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6
CisgICIiIlNldHMgdGhlIGVudiB2YXJpYWJsZSB0byAndmFsdWUnOyB1bnNldHMgaXQgd2hlbiAn
dmFsdWUnIGlzIE5vbmUuIiIiCisKKyAgaWYgdmFsdWUgaXMgbm90IE5vbmU6CisgICAgZW52aXJv
bltlbnZfdmFyXSA9IHZhbHVlCisgIGVsaWYgZW52X3ZhciBpbiBlbnZpcm9uOgorICAgIGRlbCBl
bnZpcm9uW2Vudl92YXJdCisKKworZGVmIEdldEZsYWcoZmxhZyk6CisgICIiIlJ1bnMgZ29vZ2xl
dGVzdC1lbnYtdmFyLXRlc3RfIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQuIiIiCisKKyAgYXJncyA9
IFtDT01NQU5EXQorICBpZiBmbGFnIGlzIG5vdCBOb25lOgorICAgIGFyZ3MgKz0gW2ZsYWddCisg
IHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoYXJncywgZW52PWVudmlyb24pLm91
dHB1dAorCisKK2RlZiBUZXN0RmxhZyhmbGFnLCB0ZXN0X3ZhbCwgZGVmYXVsdF92YWwpOgorICAi
IiJWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBmbGFnIGlzIGFmZmVjdGVkIGJ5IHRoZSBjb3JyZXNw
b25kaW5nIGVudiB2YXIuIiIiCisKKyAgZW52X3ZhciA9ICdHVEVTVF8nICsgZmxhZy51cHBlcigp
CisgIFNldEVudlZhcihlbnZfdmFyLCB0ZXN0X3ZhbCkKKyAgQXNzZXJ0RXEodGVzdF92YWwsIEdl
dEZsYWcoZmxhZykpCisgIFNldEVudlZhcihlbnZfdmFyLCBOb25lKQorICBBc3NlcnRFcShkZWZh
dWx0X3ZhbCwgR2V0RmxhZyhmbGFnKSkKKworCitjbGFzcyBHVGVzdEVudlZhclRlc3QoZ3Rlc3Rf
dGVzdF91dGlscy5UZXN0Q2FzZSk6CisKKyAgZGVmIHRlc3RFbnZWYXJBZmZlY3RzRmxhZyhzZWxm
KToKKyAgICAiIiJUZXN0cyB0aGF0IGVudmlyb25tZW50IHZhcmlhYmxlIHNob3VsZCBhZmZlY3Qg
dGhlIGNvcnJlc3BvbmRpbmcgZmxhZy4iIiIKKworICAgIFRlc3RGbGFnKCdicmVha19vbl9mYWls
dXJlJywgJzEnLCAnMCcpCisgICAgVGVzdEZsYWcoJ2NvbG9yJywgJ3llcycsICdhdXRvJykKKyAg
ICBUZXN0RmxhZygnZmlsdGVyJywgJ0Zvb1Rlc3QuQmFyJywgJyonKQorICAgIFNldEVudlZhcign
WE1MX09VVFBVVF9GSUxFJywgTm9uZSkgICMgRm9yICdvdXRwdXQnIHRlc3QKKyAgICBUZXN0Rmxh
Zygnb3V0cHV0JywgJ3htbDp0bXAvZm9vLnhtbCcsICcnKQorICAgIFRlc3RGbGFnKCdwcmludF90
aW1lJywgJzAnLCAnMScpCisgICAgVGVzdEZsYWcoJ3JlcGVhdCcsICc5OTknLCAnMScpCisgICAg
VGVzdEZsYWcoJ3Rocm93X29uX2ZhaWx1cmUnLCAnMScsICcwJykKKyAgICBUZXN0RmxhZygnZGVh
dGhfdGVzdF9zdHlsZScsICd0aHJlYWRzYWZlJywgJ2Zhc3QnKQorICAgIFRlc3RGbGFnKCdjYXRj
aF9leGNlcHRpb25zJywgJzAnLCAnMScpCisKKyAgICBpZiBJU19MSU5VWDoKKyAgICAgIFRlc3RG
bGFnKCdkZWF0aF90ZXN0X3VzZV9mb3JrJywgJzEnLCAnMCcpCisgICAgICBUZXN0RmxhZygnc3Rh
Y2tfdHJhY2VfZGVwdGgnLCAnMCcsICcxMDAnKQorCisKKyAgZGVmIHRlc3RYbWxPdXRwdXRGaWxl
KHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgJFhNTF9PVVRQVVRfRklMRSBhZmZlY3RzIHRoZSBv
dXRwdXQgZmxhZy4iIiIKKworICAgIFNldEVudlZhcignR1RFU1RfT1VUUFVUJywgTm9uZSkKKyAg
ICBTZXRFbnZWYXIoJ1hNTF9PVVRQVVRfRklMRScsICd0bXAvYmFyLnhtbCcpCisgICAgQXNzZXJ0
RXEoJ3htbDp0bXAvYmFyLnhtbCcsIEdldEZsYWcoJ291dHB1dCcpKQorCisgIGRlZiB0ZXN0WG1s
T3V0cHV0RmlsZU92ZXJyaWRlKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgJFhNTF9PVVRQVVRf
RklMRSBpcyBvdmVycmlkZGVuIGJ5ICRHVEVTVF9PVVRQVVQuIiIiCisKKyAgICBTZXRFbnZWYXIo
J0dURVNUX09VVFBVVCcsICd4bWw6dG1wL2Zvby54bWwnKQorICAgIFNldEVudlZhcignWE1MX09V
VFBVVF9GSUxFJywgJ3RtcC9iYXIueG1sJykKKyAgICBBc3NlcnRFcSgneG1sOnRtcC9mb28ueG1s
JywgR2V0RmxhZygnb3V0cHV0JykpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0
ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkMmFhODJm
NzRmYWEyMTIwMWU3OWFlMGU1YzNiNTY4NTUzZGYzMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0Xy5jYwpAQCAt
MCwwICsxLDEyMiBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0
OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8v
CisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisKKy8vIEEgaGVscGVyIHByb2dyYW0gZm9yIHRlc3RpbmcgdGhhdCBHb29nbGUgVGVzdCBw
YXJzZXMgdGhlIGVudmlyb25tZW50CisvLyB2YXJpYWJsZXMgY29ycmVjdGx5LgorCisjaW5jbHVk
ZSA8aW9zdHJlYW0+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgInNyYy9n
dGVzdC1pbnRlcm5hbC1pbmwuaCIKKwordXNpbmcgOjpzdGQ6OmNvdXQ7CisKK25hbWVzcGFjZSB0
ZXN0aW5nIHsKKworLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBpcyB0byBtYWtlIHRoZSB0ZXN0IG1v
cmUgcmVhbGlzdGljIGJ5IGVuc3VyaW5nCisvLyB0aGF0IHRoZSBVbml0VGVzdCBzaW5nbGV0b24g
aXMgY3JlYXRlZCBiZWZvcmUgbWFpbigpIGlzIGVudGVyZWQuCisvLyBXZSBkb24ndCBhY3R1YWwg
cnVuIHRoZSBURVNUIGl0c2VsZi4KK1RFU1QoR1Rlc3RFbnZWYXJUZXN0LCBEdW1teSkgeworfQor
Cit2b2lkIFByaW50RmxhZyhjb25zdCBjaGFyKiBmbGFnKSB7CisgIGlmIChzdHJjbXAoZmxhZywg
ImJyZWFrX29uX2ZhaWx1cmUiKSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKGJyZWFr
X29uX2ZhaWx1cmUpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgImNh
dGNoX2V4Y2VwdGlvbnMiKSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKGNhdGNoX2V4
Y2VwdGlvbnMpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgImNvbG9y
IikgPT0gMCkgeworICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhjb2xvcik7CisgICAgcmV0dXJuOwor
ICB9CisKKyAgaWYgKHN0cmNtcChmbGFnLCAiZGVhdGhfdGVzdF9zdHlsZSIpID09IDApIHsKKyAg
ICBjb3V0IDw8IEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSk7CisgICAgcmV0dXJuOworICB9
CisKKyAgaWYgKHN0cmNtcChmbGFnLCAiZGVhdGhfdGVzdF91c2VfZm9yayIpID09IDApIHsKKyAg
ICBjb3V0IDw8IEdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yayk7CisgICAgcmV0dXJuOwor
ICB9CisKKyAgaWYgKHN0cmNtcChmbGFnLCAiZmlsdGVyIikgPT0gMCkgeworICAgIGNvdXQgPDwg
R1RFU1RfRkxBRyhmaWx0ZXIpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxh
ZywgIm91dHB1dCIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZMQUcob3V0cHV0KTsKKyAg
ICByZXR1cm47CisgIH0KKworICBpZiAoc3RyY21wKGZsYWcsICJwcmludF90aW1lIikgPT0gMCkg
eworICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhwcmludF90aW1lKTsKKyAgICByZXR1cm47CisgIH0K
KworICBpZiAoc3RyY21wKGZsYWcsICJyZXBlYXQiKSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVT
VF9GTEFHKHJlcGVhdCk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChmbGFnLCAi
c3RhY2tfdHJhY2VfZGVwdGgiKSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKHN0YWNr
X3RyYWNlX2RlcHRoKTsKKyAgICByZXR1cm47CisgIH0KKworICBpZiAoc3RyY21wKGZsYWcsICJ0
aHJvd19vbl9mYWlsdXJlIikgPT0gMCkgeworICAgIGNvdXQgPDwgR1RFU1RfRkxBRyh0aHJvd19v
bl9mYWlsdXJlKTsKKyAgICByZXR1cm47CisgIH0KKworICBjb3V0IDw8ICJJbnZhbGlkIGZsYWcg
bmFtZSAiIDw8IGZsYWcKKyAgICAgICA8PCAiLiAgVmFsaWQgbmFtZXMgYXJlIGJyZWFrX29uX2Zh
aWx1cmUsIGNvbG9yLCBmaWx0ZXIsIGV0Yy5cbiI7CisgIGV4aXQoMSk7Cit9CisKK30gIC8vIG5h
bWVzcGFjZSB0ZXN0aW5nCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICB0
ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgaWYgKGFyZ2MgIT0gMikg
eworICAgIGNvdXQgPDwgIlVzYWdlOiBnb29nbGV0ZXN0LWVudi12YXItdGVzdF8gTkFNRV9PRl9G
TEFHXG4iOworICAgIHJldHVybiAxOworICB9CisKKyAgdGVzdGluZzo6UHJpbnRGbGFnKGFyZ3Zb
MV0pOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1maWxlcGF0aC10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LWZpbGVwYXRoLXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdmMDJmYjRi
ZDc3OTdkMTRkMzgzYTA1ZmExOTdjMzZiMzE4MjVmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1maWxlcGF0aC10ZXN0LmNjCkBAIC0w
LDAgKzEsNjUxIEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisvLworLy8gR29vZ2xlIFRlc3QgZmlsZXBhdGggdXRpbGl0aWVzCisvLworLy8gVGhpcyBmaWxl
IHRlc3RzIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkgYnkKKy8vIEdvb2ds
ZSBUZXN0LiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCisvLwor
Ly8gVGhpcyBmaWxlIGlzICNpbmNsdWRlZCBmcm9tIGd0ZXN0LWludGVybmFsLmguCisvLyBEbyBu
b3QgI2luY2x1ZGUgdGhpcyBmaWxlIGFueXdoZXJlIGVsc2UhCisKKyNpbmNsdWRlICJndGVzdC9p
bnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5j
bHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgorCisjaWYgR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKKyMgaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gTk9MSU5UCisjZWxpZiBHVEVTVF9PU19X
SU5ET1dTCisjIGluY2x1ZGUgPGRpcmVjdC5oPiAgLy8gTk9MSU5UCisjZW5kaWYgIC8vIEdURVNU
X09TX1dJTkRPV1NfTU9CSUxFCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFjZSBpbnRl
cm5hbCB7CituYW1lc3BhY2UgeworCisjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKy8vIEZJ
WE1FOiBNb3ZlIHRoZXNlIHRvIHRoZSBQT1NJWCBhZGFwdGVyIHNlY3Rpb24gaW4KKy8vIGd0ZXN0
LXBvcnQuaC4KKworLy8gV2luZG93cyBDRSBkb2Vzbid0IGhhdmUgdGhlIHJlbW92ZSBDIGZ1bmN0
aW9uLgoraW50IHJlbW92ZShjb25zdCBjaGFyKiBwYXRoKSB7CisgIExQQ1dTVFIgd3BhdGggPSBT
dHJpbmc6OkFuc2lUb1V0ZjE2KHBhdGgpOworICBpbnQgcmV0ID0gRGVsZXRlRmlsZSh3cGF0aCkg
PyAwIDogLTE7CisgIGRlbGV0ZSBbXSB3cGF0aDsKKyAgcmV0dXJuIHJldDsKK30KKy8vIFdpbmRv
d3MgQ0UgZG9lc24ndCBoYXZlIHRoZSBfcm1kaXIgQyBmdW5jdGlvbi4KK2ludCBfcm1kaXIoY29u
c3QgY2hhciogcGF0aCkgeworICBGaWxlUGF0aCBmaWxlcGF0aChwYXRoKTsKKyAgTFBDV1NUUiB3
cGF0aCA9IFN0cmluZzo6QW5zaVRvVXRmMTYoCisgICAgICBmaWxlcGF0aC5SZW1vdmVUcmFpbGlu
Z1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKKyAgaW50IHJldCA9IFJlbW92ZURpcmVjdG9yeSh3
cGF0aCkgPyAwIDogLTE7CisgIGRlbGV0ZSBbXSB3cGF0aDsKKyAgcmV0dXJuIHJldDsKK30KKwor
I2Vsc2UKKworVEVTVChHZXRDdXJyZW50RGlyVGVzdCwgUmV0dXJuc0N1cnJlbnREaXIpIHsKKyAg
Y29uc3QgRmlsZVBhdGggb3JpZ2luYWxfZGlyID0gRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKTsK
KyAgRVhQRUNUX0ZBTFNFKG9yaWdpbmFsX2Rpci5Jc0VtcHR5KCkpOworCisgIHBvc2l4OjpDaERp
cihHVEVTVF9QQVRIX1NFUF8pOworICBjb25zdCBGaWxlUGF0aCBjd2QgPSBGaWxlUGF0aDo6R2V0
Q3VycmVudERpcigpOworICBwb3NpeDo6Q2hEaXIob3JpZ2luYWxfZGlyLmNfc3RyKCkpOworCisj
IGlmIEdURVNUX09TX1dJTkRPV1MKKworICAvLyBTa2lwcyB0aGUgIjoiLgorICBjb25zdCBjaGFy
KiBjb25zdCBjd2Rfd2l0aG91dF9kcml2ZSA9IHN0cmNocihjd2QuY19zdHIoKSwgJzonKTsKKyAg
QVNTRVJUX1RSVUUoY3dkX3dpdGhvdXRfZHJpdmUgIT0gTlVMTCk7CisgIEVYUEVDVF9TVFJFUShH
VEVTVF9QQVRIX1NFUF8sIGN3ZF93aXRob3V0X2RyaXZlICsgMSk7CisKKyMgZWxzZQorCisgIEVY
UEVDVF9FUShHVEVTVF9QQVRIX1NFUF8sIGN3ZC5zdHJpbmcoKSk7CisKKyMgZW5kaWYKK30KKwor
I2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCitURVNUKElzRW1wdHlUZXN0LCBS
ZXR1cm5zVHJ1ZUZvckVtcHR5UGF0aCkgeworICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiIikuSXNF
bXB0eSgpKTsKK30KKworVEVTVChJc0VtcHR5VGVzdCwgUmV0dXJuc0ZhbHNlRm9yTm9uRW1wdHlQ
YXRoKSB7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYSIpLklzRW1wdHkoKSk7CisgIEVYUEVD
VF9GQUxTRShGaWxlUGF0aCgiLiIpLklzRW1wdHkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0
aCgiYS9iIikuSXNFbXB0eSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJhXFxiXFwiKS5J
c0VtcHR5KCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lICIiIC0+ICIiCitURVNUKFJl
bW92ZURpcmVjdG9yeU5hbWVUZXN0LCBXaGVuRW1wdHlOYW1lKSB7CisgIEVYUEVDVF9FUSgiIiwg
RmlsZVBhdGgoIiIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJl
bW92ZURpcmVjdG9yeU5hbWUgImFmaWxlIiAtPiAiYWZpbGUiCitURVNUKFJlbW92ZURpcmVjdG9y
eU5hbWVUZXN0LCBCdXROb0RpcmVjdG9yeSkgeworICBFWFBFQ1RfRVEoImFmaWxlIiwKKyAgICAg
IEZpbGVQYXRoKCJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9CisK
Ky8vIFJlbW92ZURpcmVjdG9yeU5hbWUgIi9hZmlsZSIgLT4gImFmaWxlIgorVEVTVChSZW1vdmVE
aXJlY3RvcnlOYW1lVGVzdCwgUm9vdEZpbGVTaG91bGRHaXZlRmlsZU5hbWUpIHsKKyAgRVhQRUNU
X0VRKCJhZmlsZSIsCisgICAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikuUmVt
b3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlRGlyZWN0b3J5TmFt
ZSAiYWRpci8iIC0+ICIiCitURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBXaGVyZVRoZXJl
SXNOb0ZpbGVOYW1lKSB7CisgIEVYUEVDVF9FUSgiIiwKKyAgICAgIEZpbGVQYXRoKCJhZGlyIiBH
VEVTVF9QQVRIX1NFUF8pLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8v
IFJlbW92ZURpcmVjdG9yeU5hbWUgImFkaXIvYWZpbGUiIC0+ICJhZmlsZSIKK1RFU1QoUmVtb3Zl
RGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEdpdmVGaWxlTmFtZSkgeworICBFWFBFQ1RfRVEoImFm
aWxlIiwKKyAgICAgIEZpbGVQYXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikuUmVt
b3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlRGlyZWN0b3J5TmFt
ZSAiYWRpci9zdWJkaXIvYWZpbGUiIC0+ICJhZmlsZSIKK1RFU1QoUmVtb3ZlRGlyZWN0b3J5TmFt
ZVRlc3QsIFNob3VsZEFsc29HaXZlRmlsZU5hbWUpIHsKKyAgRVhQRUNUX0VRKCJhZmlsZSIsCisg
ICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhf
U0VQXyAiYWZpbGUiKQorICAgICAgLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9
CisKKyNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXworCisvLyBUZXN0cyB0aGF0IFJlbW92ZURp
cmVjdG9yeU5hbWUoKSB3b3JrcyB3aXRoIHRoZSBhbHRlcm5hdGUgc2VwYXJhdG9yCisvLyBvbiBX
aW5kb3dzLgorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCIvYWZpbGUiKSAtPiAiYWZpbGUiCitU
RVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBSb290RmlsZVNob3VsZEdpdmVGaWxlTmFtZUZv
ckFsdGVybmF0ZVNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEoImFmaWxlIiwgRmlsZVBhdGgoIi9h
ZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZURp
cmVjdG9yeU5hbWUoImFkaXIvIikgLT4gIiIKK1RFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3Qs
IFdoZXJlVGhlcmVJc05vRmlsZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNU
X0VRKCIiLCBGaWxlUGF0aCgiYWRpci8iKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkp
OworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCJhZGlyL2FmaWxlIikgLT4gImFmaWxlIgor
VEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgU2hvdWxkR2l2ZUZpbGVOYW1lRm9yQWx0ZXJu
YXRlU2VwYXJhdG9yKSB7CisgIEVYUEVDVF9FUSgiYWZpbGUiLCBGaWxlUGF0aCgiYWRpci9hZmls
ZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZURpcmVj
dG9yeU5hbWUoImFkaXIvc3ViZGlyL2FmaWxlIikgLT4gImFmaWxlIgorVEVTVChSZW1vdmVEaXJl
Y3RvcnlOYW1lVGVzdCwgU2hvdWxkQWxzb0dpdmVGaWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRv
cikgeworICBFWFBFQ1RfRVEoImFmaWxlIiwKKyAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL3N1
YmRpci9hZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKyNlbmRp
ZgorCisvLyBSZW1vdmVGaWxlTmFtZSAiIiAtPiAiLi8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVz
dCwgRW1wdHlOYW1lKSB7CisjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyAgLy8gT24gV2lu
ZG93cyBDRSwgd2UgdXNlIHRoZSByb290IGFzIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKyAgRVhQ
RUNUX0VRKEdURVNUX1BBVEhfU0VQXywgRmlsZVBhdGgoIiIpLlJlbW92ZUZpbGVOYW1lKCkuc3Ry
aW5nKCkpOworI2Vsc2UKKyAgRVhQRUNUX0VRKCIuIiBHVEVTVF9QQVRIX1NFUF8sIEZpbGVQYXRo
KCIiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKKyNlbmRpZgorfQorCisvLyBSZW1vdmVG
aWxlTmFtZSAiYWRpci8iIC0+ICJhZGlyLyIKK1RFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBCdXRO
b0ZpbGUpIHsKKyAgRVhQRUNUX0VRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8sCisgICAgICBGaWxl
UGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsK
K30KKworLy8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvYWZpbGUiIC0+ICJhZGlyLyIKK1RFU1QoUmVt
b3ZlRmlsZU5hbWVUZXN0LCBHaXZlc0Rpck5hbWUpIHsKKyAgRVhQRUNUX0VRKCJhZGlyIiBHVEVT
VF9QQVRIX1NFUF8sCisgICAgICAgICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBf
ICJhZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVGaWxl
TmFtZSAiYWRpci9zdWJkaXIvYWZpbGUiIC0+ICJhZGlyL3N1YmRpci8iCitURVNUKFJlbW92ZUZp
bGVOYW1lVGVzdCwgR2l2ZXNEaXJBbmRTdWJEaXJOYW1lKSB7CisgIEVYUEVDVF9FUSgiYWRpciIg
R1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXywKKyAgICAgIEZpbGVQYXRo
KCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIp
CisgICAgICAuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZUZpbGVO
YW1lICIvYWZpbGUiIC0+ICIvIgorVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzUm9vdERp
cikgeworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfLAorICAgICAgRmlsZVBhdGgoR1RFU1Rf
UEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOworfQorCisjaWYg
R1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KKworLy8gVGVzdHMgdGhhdCBSZW1vdmVGaWxlTmFtZSgp
IHdvcmtzIHdpdGggdGhlIGFsdGVybmF0ZSBzZXBhcmF0b3Igb24KKy8vIFdpbmRvd3MuCisKKy8v
IFJlbW92ZUZpbGVOYW1lKCJhZGlyLyIpIC0+ICJhZGlyLyIKK1RFU1QoUmVtb3ZlRmlsZU5hbWVU
ZXN0LCBCdXROb0ZpbGVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNUX0VRKCJhZGly
IiBHVEVTVF9QQVRIX1NFUF8sCisgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci8iKS5SZW1vdmVG
aWxlTmFtZSgpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlRmlsZU5hbWUoImFkaXIvYWZpbGUi
KSAtPiAiYWRpci8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNEaXJOYW1lRm9yQWx0
ZXJuYXRlU2VwYXJhdG9yKSB7CisgIEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAor
ICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmlu
ZygpKTsKK30KKworLy8gUmVtb3ZlRmlsZU5hbWUoImFkaXIvc3ViZGlyL2FmaWxlIikgLT4gImFk
aXIvc3ViZGlyLyIKK1RFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc0RpckFuZFN1YkRpck5h
bWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNUX0VRKCJhZGlyIiBHVEVTVF9QQVRI
X1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgoImFk
aXIvc3ViZGlyL2FmaWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJl
bW92ZUZpbGVOYW1lKCIvYWZpbGUiKSAtPiAiXCIKK1RFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBH
aXZlc1Jvb3REaXJGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNUX0VRKEdURVNUX1BB
VEhfU0VQXywgRmlsZVBhdGgoIi9hZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOwor
fQorCisjZW5kaWYKKworVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZVdoZW5OdW1iZXJJ
c1plcm8pIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxl
UGF0aCgiZm9vIiksIEZpbGVQYXRoKCJiYXIiKSwKKyAgICAgIDAsICJ4bWwiKTsKKyAgRVhQRUNU
X0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Cit9
CisKK1RFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVGaWxlTmFtZU51bWJlckd0WmVybykg
eworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCJm
b28iKSwgRmlsZVBhdGgoImJhciIpLAorICAgICAgMTIsICJ4bWwiKTsKKyAgRVhQRUNUX0VRKCJm
b28iIEdURVNUX1BBVEhfU0VQXyAiYmFyXzEyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisK
K1RFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVGaWxlTmFtZVdpdGhTbGFzaE51bWJlcklz
WmVybykgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQ
YXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyksCisgICAgICBGaWxlUGF0aCgiYmFyIiksIDAsICJ4
bWwiKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVh
bC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVGaWxlTmFt
ZVdpdGhTbGFzaE51bWJlckd0WmVybykgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6
TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyksCisgICAgICBGaWxl
UGF0aCgiYmFyIiksIDEyLCAieG1sIik7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8gImJhcl8xMi54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKE1ha2VGaWxlTmFt
ZVRlc3QsIEdlbmVyYXRlV2hlbk51bWJlcklzWmVyb0FuZERpcklzRW1wdHkpIHsKKyAgRmlsZVBh
dGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiIiksIEZpbGVQYXRo
KCJiYXIiKSwKKyAgICAgIDAsICJ4bWwiKTsKKyAgRVhQRUNUX0VRKCJiYXIueG1sIiwgYWN0dWFs
LnN0cmluZygpKTsKK30KKworVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZVdoZW5OdW1i
ZXJJc05vdFplcm9BbmREaXJJc0VtcHR5KSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRo
OjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoIiIpLCBGaWxlUGF0aCgiYmFyIiksCisgICAgICAxNCwg
InhtbCIpOworICBFWFBFQ1RfRVEoImJhcl8xNC54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQor
CitURVNUKENvbmNhdFBhdGhzVGVzdCwgV29ya3NXaGVuRGlyRG9lc05vdEVuZFdpdGhQYXRoU2Vw
KSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgi
Zm9vIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0
aCgiYmFyLnhtbCIpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnht
bCIsIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoQ29uY2F0UGF0aHNUZXN0LCBXb3Jrc1do
ZW5QYXRoMUVuZHNXaXRoUGF0aFNlcCkgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6
Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJiYXIueG1sIikpOworICBF
WFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFsLnN0cmluZygp
KTsKK30KKworVEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgxQmVpbmdFbXB0eSkgeworICBGaWxl
UGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoIiIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJhci54bWwiKSk7
CisgIEVYUEVDVF9FUSgiYmFyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoQ29u
Y2F0UGF0aHNUZXN0LCBQYXRoMkJlaW5nRW1wdHkpIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmls
ZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iKSwgRmlsZVBhdGgoIiIpKTsKKyAgRVhQ
RUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywgYWN0dWFsLnN0cmluZygpKTsKK30KKworVEVT
VChDb25jYXRQYXRoc1Rlc3QsIEJvdGhQYXRoQmVpbmdFbXB0eSkgeworICBGaWxlUGF0aCBhY3R1
YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoIiIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoIiIpKTsKKyAgRVhQRUNUX0VRKCIi
LCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDFDb250
YWluc1BhdGhTZXApIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhz
KEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9vYmFyLnhtbCIpKTsKKyAgRVhQ
RUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBHVEVTVF9QQVRIX1NFUF8gImZvb2Jh
ci54bWwiLAorICAgICAgICAgICAgYWN0dWFsLnN0cmluZygpKTsKK30KKworVEVTVChDb25jYXRQ
YXRoc1Rlc3QsIFBhdGgyQ29udGFpbnNQYXRoU2VwKSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZp
bGVQYXRoOjpDb25jYXRQYXRocygKKyAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQ
XyksCisgICAgICBGaWxlUGF0aCgiYmFyIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiKSk7Cisg
IEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBfICJi
YXIueG1sIiwKKyAgICAgICAgICAgIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoQ29uY2F0
UGF0aHNUZXN0LCBQYXRoMkVuZHNXaXRoUGF0aFNlcCkgeworICBGaWxlUGF0aCBhY3R1YWwgPSBG
aWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJhciIgR1RFU1RfUEFUSF9TRVBfKSk7
CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBf
LCBhY3R1YWwuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3Ig
IiIgLT4gIiIKK1RFU1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgRW1wdHlTdHJp
bmcpIHsKKyAgRVhQRUNUX0VRKCIiLCBGaWxlUGF0aCgiIikuUmVtb3ZlVHJhaWxpbmdQYXRoU2Vw
YXJhdG9yKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3Ig
ImZvbyIgLT4gImZvbyIKK1RFU1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgRmls
ZU5vU2xhc2hTdHJpbmcpIHsKKyAgRVhQRUNUX0VRKCJmb28iLCBGaWxlUGF0aCgiZm9vIikuUmVt
b3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVUcmFp
bGluZ1BhdGhTZXBhcmF0b3IgImZvby8iIC0+ICJmb28iCitURVNUKFJlbW92ZVRyYWlsaW5nUGF0
aFNlcGFyYXRvclRlc3QsIFNob3VsZFJlbW92ZVRyYWlsaW5nU2VwYXJhdG9yKSB7CisgIEVYUEVD
VF9FUSgiZm9vIiwKKyAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXykuUmVtb3Zl
VHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuc3RyaW5nKCkpOworI2lmIEdURVNUX0hBU19BTFRfUEFU
SF9TRVBfCisgIEVYUEVDVF9FUSgiZm9vIiwgRmlsZVBhdGgoImZvby8iKS5SZW1vdmVUcmFpbGlu
Z1BhdGhTZXBhcmF0b3IoKS5zdHJpbmcoKSk7CisjZW5kaWYKK30KKworLy8gUmVtb3ZlVHJhaWxp
bmdQYXRoU2VwYXJhdG9yICJmb28vYmFyLyIgLT4gImZvby9iYXIvIgorVEVTVChSZW1vdmVUcmFp
bGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBTaG91bGRSZW1vdmVMYXN0U2VwYXJhdG9yKSB7CisgIEVY
UEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCisgICAgICAgICAgICBGaWxlUGF0
aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBfKQorICAgICAgICAg
ICAgICAgIC5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5zdHJpbmcoKSk7Cit9CisKKy8v
IFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiZm9vL2JhciIgLT4gImZvby9iYXIiCitURVNU
KFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvclRlc3QsIFNob3VsZFJldHVyblVubW9kaWZpZWQp
IHsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKKyAgICAgICAgICAg
IEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIikKKyAgICAgICAgICAgICAgICAu
UmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuc3RyaW5nKCkpOworfQorCitURVNUKERpcmVj
dG9yeVRlc3QsIFJvb3REaXJlY3RvcnlFeGlzdHMpIHsKKyNpZiBHVEVTVF9PU19XSU5ET1dTICAv
LyBXZSBhcmUgb24gV2luZG93cy4KKyAgY2hhciBjdXJyZW50X2RyaXZlW19NQVhfUEFUSF07ICAv
LyBOT0xJTlQKKyAgY3VycmVudF9kcml2ZVswXSA9IHN0YXRpY19jYXN0PGNoYXI+KF9nZXRkcml2
ZSgpICsgJ0EnIC0gMSk7CisgIGN1cnJlbnRfZHJpdmVbMV0gPSAnOic7CisgIGN1cnJlbnRfZHJp
dmVbMl0gPSAnXFwnOworICBjdXJyZW50X2RyaXZlWzNdID0gJ1wwJzsKKyAgRVhQRUNUX1RSVUUo
RmlsZVBhdGgoY3VycmVudF9kcml2ZSkuRGlyZWN0b3J5RXhpc3RzKCkpOworI2Vsc2UKKyAgRVhQ
RUNUX1RSVUUoRmlsZVBhdGgoIi8iKS5EaXJlY3RvcnlFeGlzdHMoKSk7CisjZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MKK30KKworI2lmIEdURVNUX09TX1dJTkRPV1MKK1RFU1QoRGlyZWN0b3J5
VGVzdCwgUm9vdE9mV3JvbmdEcml2ZURvZXNOb3RFeGlzdHMpIHsKKyAgY29uc3QgaW50IHNhdmVk
X2RyaXZlXyA9IF9nZXRkcml2ZSgpOworICAvLyBGaW5kIGEgZHJpdmUgdGhhdCBkb2Vzbid0IGV4
aXN0LiBTdGFydCB3aXRoICdaJyB0byBhdm9pZCBjb21tb24gb25lcy4KKyAgZm9yIChjaGFyIGRy
aXZlID0gJ1onOyBkcml2ZSA+PSAnQSc7IGRyaXZlLS0pCisgICAgaWYgKF9jaGRyaXZlKGRyaXZl
IC0gJ0EnICsgMSkgPT0gLTEpIHsKKyAgICAgIGNoYXIgbm9uX2RyaXZlW19NQVhfUEFUSF07ICAv
LyBOT0xJTlQKKyAgICAgIG5vbl9kcml2ZVswXSA9IGRyaXZlOworICAgICAgbm9uX2RyaXZlWzFd
ID0gJzonOworICAgICAgbm9uX2RyaXZlWzJdID0gJ1xcJzsKKyAgICAgIG5vbl9kcml2ZVszXSA9
ICdcMCc7CisgICAgICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgobm9uX2RyaXZlKS5EaXJlY3RvcnlF
eGlzdHMoKSk7CisgICAgICBicmVhazsKKyAgICB9CisgIF9jaGRyaXZlKHNhdmVkX2RyaXZlXyk7
Cit9CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworI2lmICFHVEVTVF9PU19XSU5ET1dT
X01PQklMRQorLy8gV2luZG93cyBDRSBfZG9lc18gY29uc2lkZXIgYW4gZW1wdHkgZGlyZWN0b3J5
IHRvIGV4aXN0LgorVEVTVChEaXJlY3RvcnlUZXN0LCBFbXB0eVBhdGhEaXJlY3RvcnlEb2VzTm90
RXhpc3QpIHsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIiKS5EaXJlY3RvcnlFeGlzdHMoKSk7
Cit9CisjZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCitURVNUKERpcmVjdG9y
eVRlc3QsIEN1cnJlbnREaXJlY3RvcnlFeGlzdHMpIHsKKyNpZiBHVEVTVF9PU19XSU5ET1dTICAv
LyBXZSBhcmUgb24gV2luZG93cy4KKyMgaWZuZGVmIF9XSU4zMl9DRSAgLy8gV2luZG93cyBDRSBk
b2Vzbid0IGhhdmUgYSBjdXJyZW50IGRpcmVjdG9yeS4KKworICBFWFBFQ1RfVFJVRShGaWxlUGF0
aCgiLiIpLkRpcmVjdG9yeUV4aXN0cygpKTsKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi5cXCIp
LkRpcmVjdG9yeUV4aXN0cygpKTsKKworIyBlbmRpZiAgLy8gX1dJTjMyX0NFCisjZWxzZQorICBF
WFBFQ1RfVFJVRShGaWxlUGF0aCgiLiIpLkRpcmVjdG9yeUV4aXN0cygpKTsKKyAgRVhQRUNUX1RS
VUUoRmlsZVBhdGgoIi4vIikuRGlyZWN0b3J5RXhpc3RzKCkpOworI2VuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCit9CisKKy8vICJmb28vYmFyIiA9PSBmb28vL2JhciIgPT0gImZvby8vL2JhciIK
K1RFU1QoTm9ybWFsaXplVGVzdCwgTXVsdGlwbGVDb25zZWN1dGl2ZVNlcGFwYXJhdG9yc0luTWlk
c3RyaW5nKSB7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCisgICAg
ICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIpLnN0cmluZygpKTsK
KyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKKyAgICAgICAgICAgIEZp
bGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gImJhciIpLnN0cmlu
ZygpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKKyAgICAgICAg
ICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8KKyAgICAg
ICAgICAgICAgICAgICAgIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOworfQorCisv
LyAiL2JhciIgPT0gLy9iYXIiID09ICIvLy9iYXIiCitURVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRp
cGxlQ29uc2VjdXRpdmVTZXBhcGFyYXRvcnNBdFN0cmluZ1N0YXJ0KSB7CisgIEVYUEVDVF9FUShH
VEVTVF9QQVRIX1NFUF8gImJhciIsCisgICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfICJiYXIi
KS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUShHVEVTVF9QQVRIX1NFUF8gImJhciIsCisgICAgRmls
ZVBhdGgoR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOwor
ICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgIEZpbGVQYXRoKEdURVNUX1BB
VEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5zdHJpbmcoKSk7
Cit9CisKKy8vICJmb28vIiA9PSBmb28vLyIgPT0gImZvby8vLyIKK1RFU1QoTm9ybWFsaXplVGVz
dCwgTXVsdGlwbGVDb25zZWN1dGl2ZVNlcGFwYXJhdG9yc0F0U3RyaW5nRW5kKSB7CisgIEVYUEVD
VF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCisgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFU
SF9TRVBfKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCisg
ICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXykuc3RyaW5n
KCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAgIEZpbGVQYXRoKCJm
b28iIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfKS5zdHJp
bmcoKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXworCisvLyBUZXN0cyB0aGF0
IHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGFyZSBub3JtYWxpemVkCisvLyBy
ZWdhcmRsZXNzIG9mIHRoZWlyIGNvbWJpbmF0aW9uIChlLmcuICJmb29cIiA9PSJmb28vXCIgPT0K
Ky8vICJmb29cXC8iKS4KK1RFU1QoTm9ybWFsaXplVGVzdCwgTWl4QWx0ZXJuYXRlU2VwYXJhdG9y
QXRTdHJpbmdFbmQpIHsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKKyAgICAg
ICAgICAgIEZpbGVQYXRoKCJmb28vIikuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RF
U1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBf
ICIvIikuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAg
ICAgICAgICAgRmlsZVBhdGgoImZvby8vIiBHVEVTVF9QQVRIX1NFUF8pLnN0cmluZygpKTsKK30K
KworI2VuZGlmCisKK1RFU1QoQXNzaWdubWVudE9wZXJhdG9yVGVzdCwgRGVmYXVsdEFzc2lnbmVk
VG9Ob25EZWZhdWx0KSB7CisgIEZpbGVQYXRoIGRlZmF1bHRfcGF0aDsKKyAgRmlsZVBhdGggbm9u
X2RlZmF1bHRfcGF0aCgicGF0aCIpOworICBub25fZGVmYXVsdF9wYXRoID0gZGVmYXVsdF9wYXRo
OworICBFWFBFQ1RfRVEoIiIsIG5vbl9kZWZhdWx0X3BhdGguc3RyaW5nKCkpOworICBFWFBFQ1Rf
RVEoIiIsIGRlZmF1bHRfcGF0aC5zdHJpbmcoKSk7ICAvLyBSSFMgdmFyIGlzIHVuY2hhbmdlZC4K
K30KKworVEVTVChBc3NpZ25tZW50T3BlcmF0b3JUZXN0LCBOb25EZWZhdWx0QXNzaWduZWRUb0Rl
ZmF1bHQpIHsKKyAgRmlsZVBhdGggbm9uX2RlZmF1bHRfcGF0aCgicGF0aCIpOworICBGaWxlUGF0
aCBkZWZhdWx0X3BhdGg7CisgIGRlZmF1bHRfcGF0aCA9IG5vbl9kZWZhdWx0X3BhdGg7CisgIEVY
UEVDVF9FUSgicGF0aCIsIGRlZmF1bHRfcGF0aC5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgicGF0
aCIsIG5vbl9kZWZhdWx0X3BhdGguc3RyaW5nKCkpOyAgLy8gUkhTIHZhciBpcyB1bmNoYW5nZWQu
Cit9CisKK1RFU1QoQXNzaWdubWVudE9wZXJhdG9yVGVzdCwgQ29uc3RBc3NpZ25lZFRvTm9uQ29u
c3QpIHsKKyAgY29uc3QgRmlsZVBhdGggY29uc3RfZGVmYXVsdF9wYXRoKCJjb25zdF9wYXRoIik7
CisgIEZpbGVQYXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgiKTsKKyAgbm9uX2RlZmF1bHRfcGF0
aCA9IGNvbnN0X2RlZmF1bHRfcGF0aDsKKyAgRVhQRUNUX0VRKCJjb25zdF9wYXRoIiwgbm9uX2Rl
ZmF1bHRfcGF0aC5zdHJpbmcoKSk7Cit9CisKK2NsYXNzIERpcmVjdG9yeUNyZWF0aW9uVGVzdCA6
IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAg
ICB0ZXN0ZGF0YV9wYXRoXy5TZXQoRmlsZVBhdGgoCisgICAgICAgIFRlbXBEaXIoKSArIEdldEN1
cnJlbnRFeGVjdXRhYmxlTmFtZSgpLnN0cmluZygpICsKKyAgICAgICAgIl9kaXJlY3RvcnlfY3Jl
YXRpb24iIEdURVNUX1BBVEhfU0VQXyAidGVzdCIgR1RFU1RfUEFUSF9TRVBfKSk7CisgICAgdGVz
dGRhdGFfZmlsZV8uU2V0KHRlc3RkYXRhX3BhdGhfLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRv
cigpKTsKKworICAgIHVuaXF1ZV9maWxlMF8uU2V0KEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUodGVz
dGRhdGFfcGF0aF8sIEZpbGVQYXRoKCJ1bmlxdWUiKSwKKyAgICAgICAgMCwgInR4dCIpKTsKKyAg
ICB1bmlxdWVfZmlsZTFfLlNldChGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKHRlc3RkYXRhX3BhdGhf
LCBGaWxlUGF0aCgidW5pcXVlIiksCisgICAgICAgIDEsICJ0eHQiKSk7CisKKyAgICByZW1vdmUo
dGVzdGRhdGFfZmlsZV8uY19zdHIoKSk7CisgICAgcmVtb3ZlKHVuaXF1ZV9maWxlMF8uY19zdHIo
KSk7CisgICAgcmVtb3ZlKHVuaXF1ZV9maWxlMV8uY19zdHIoKSk7CisgICAgcG9zaXg6OlJtRGly
KHRlc3RkYXRhX3BhdGhfLmNfc3RyKCkpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3du
KCkgeworICAgIHJlbW92ZSh0ZXN0ZGF0YV9maWxlXy5jX3N0cigpKTsKKyAgICByZW1vdmUodW5p
cXVlX2ZpbGUwXy5jX3N0cigpKTsKKyAgICByZW1vdmUodW5pcXVlX2ZpbGUxXy5jX3N0cigpKTsK
KyAgICBwb3NpeDo6Um1EaXIodGVzdGRhdGFfcGF0aF8uY19zdHIoKSk7CisgIH0KKworICB2b2lk
IENyZWF0ZVRleHRGaWxlKGNvbnN0IGNoYXIqIGZpbGVuYW1lKSB7CisgICAgRklMRSogZiA9IHBv
c2l4OjpGT3BlbihmaWxlbmFtZSwgInciKTsKKyAgICBmcHJpbnRmKGYsICJ0ZXh0XG4iKTsKKyAg
ICBmY2xvc2UoZik7CisgIH0KKworICAvLyBTdHJpbmdzIHJlcHJlc2VudGluZyBhIGRpcmVjdG9y
eSBhbmQgYSBmaWxlLCB3aXRoIGlkZW50aWNhbCBwYXRocworICAvLyBleGNlcHQgZm9yIHRoZSB0
cmFpbGluZyBzZXBhcmF0b3IgY2hhcmFjdGVyIHRoYXQgZGlzdGlucXVpc2hlcworICAvLyBhIGRp
cmVjdG9yeSBuYW1lZCAndGVzdCcgZnJvbSBhIGZpbGUgbmFtZWQgJ3Rlc3QnLiBFeGFtcGxlIG5h
bWVzOgorICBGaWxlUGF0aCB0ZXN0ZGF0YV9wYXRoXzsgIC8vICIvdG1wL2RpcmVjdG9yeV9jcmVh
dGlvbi90ZXN0LyIKKyAgRmlsZVBhdGggdGVzdGRhdGFfZmlsZV87ICAvLyAiL3RtcC9kaXJlY3Rv
cnlfY3JlYXRpb24vdGVzdCIKKyAgRmlsZVBhdGggdW5pcXVlX2ZpbGUwXzsgIC8vICIvdG1wL2Rp
cmVjdG9yeV9jcmVhdGlvbi90ZXN0L3VuaXF1ZS50eHQiCisgIEZpbGVQYXRoIHVuaXF1ZV9maWxl
MV87ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRpb24vdGVzdC91bmlxdWVfMS50eHQiCit9Owor
CitURVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2
ZWx5KSB7CisgIEVYUEVDVF9GQUxTRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlzdHMoKSkg
PDwgdGVzdGRhdGFfcGF0aF8uc3RyaW5nKCk7CisgIEVYUEVDVF9UUlVFKHRlc3RkYXRhX3BhdGhf
LkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKSk7CisgIEVYUEVDVF9UUlVFKHRlc3RkYXRh
X3BhdGhfLkRpcmVjdG9yeUV4aXN0cygpKTsKK30KKworVEVTVF9GKERpcmVjdG9yeUNyZWF0aW9u
VGVzdCwgQ3JlYXRlRGlyZWN0b3JpZXNGb3JBbHJlYWR5RXhpc3RpbmdQYXRoKSB7CisgIEVYUEVD
VF9GQUxTRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlzdHMoKSkgPDwgdGVzdGRhdGFfcGF0
aF8uc3RyaW5nKCk7CisgIEVYUEVDVF9UUlVFKHRlc3RkYXRhX3BhdGhfLkNyZWF0ZURpcmVjdG9y
aWVzUmVjdXJzaXZlbHkoKSk7CisgIC8vIENhbGwgJ2NyZWF0ZScgYWdhaW4uLi4gc2hvdWxkIHN0
aWxsIHN1Y2NlZWQuCisgIEVYUEVDVF9UUlVFKHRlc3RkYXRhX3BhdGhfLkNyZWF0ZURpcmVjdG9y
aWVzUmVjdXJzaXZlbHkoKSk7Cit9CisKK1RFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENy
ZWF0ZURpcmVjdG9yaWVzQW5kVW5pcXVlRmlsZW5hbWUpIHsKKyAgRmlsZVBhdGggZmlsZV9wYXRo
KEZpbGVQYXRoOjpHZW5lcmF0ZVVuaXF1ZUZpbGVOYW1lKHRlc3RkYXRhX3BhdGhfLAorICAgICAg
RmlsZVBhdGgoInVuaXF1ZSIpLCAidHh0IikpOworICBFWFBFQ1RfRVEodW5pcXVlX2ZpbGUwXy5z
dHJpbmcoKSwgZmlsZV9wYXRoLnN0cmluZygpKTsKKyAgRVhQRUNUX0ZBTFNFKGZpbGVfcGF0aC5G
aWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAvLyBmaWxlIG5vdCB0aGVyZQorCisgIHRlc3RkYXRh
X3BhdGhfLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKTsKKyAgRVhQRUNUX0ZBTFNFKGZp
bGVfcGF0aC5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAvLyBmaWxlIHN0aWxsIG5vdCB0aGVy
ZQorICBDcmVhdGVUZXh0RmlsZShmaWxlX3BhdGguY19zdHIoKSk7CisgIEVYUEVDVF9UUlVFKGZp
bGVfcGF0aC5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7CisKKyAgRmlsZVBhdGggZmlsZV9wYXRo
MihGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFtZSh0ZXN0ZGF0YV9wYXRoXywKKyAgICAg
IEZpbGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIpKTsKKyAgRVhQRUNUX0VRKHVuaXF1ZV9maWxlMV8u
c3RyaW5nKCksIGZpbGVfcGF0aDIuc3RyaW5nKCkpOworICBFWFBFQ1RfRkFMU0UoZmlsZV9wYXRo
Mi5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAvLyBmaWxlIG5vdCB0aGVyZQorICBDcmVhdGVU
ZXh0RmlsZShmaWxlX3BhdGgyLmNfc3RyKCkpOworICBFWFBFQ1RfVFJVRShmaWxlX3BhdGgyLkZp
bGVPckRpcmVjdG9yeUV4aXN0cygpKTsKK30KKworVEVTVF9GKERpcmVjdG9yeUNyZWF0aW9uVGVz
dCwgQ3JlYXRlRGlyZWN0b3JpZXNGYWlsKSB7CisgIC8vIGZvcmNlIGEgZmFpbHVyZSBieSBwdXR0
aW5nIGEgZmlsZSB3aGVyZSB3ZSB3aWxsIHRyeSB0byBjcmVhdGUgYSBkaXJlY3RvcnkuCisgIENy
ZWF0ZVRleHRGaWxlKHRlc3RkYXRhX2ZpbGVfLmNfc3RyKCkpOworICBFWFBFQ1RfVFJVRSh0ZXN0
ZGF0YV9maWxlXy5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7CisgIEVYUEVDVF9GQUxTRSh0ZXN0
ZGF0YV9maWxlXy5EaXJlY3RvcnlFeGlzdHMoKSk7CisgIEVYUEVDVF9GQUxTRSh0ZXN0ZGF0YV9m
aWxlXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOworfQorCitURVNUKE5vRGlyZWN0
b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVOb0RpcmVjdG9yaWVzRm9yRGVmYXVsdFhtbEZpbGUpIHsK
KyAgY29uc3QgRmlsZVBhdGggdGVzdF9kZXRhaWxfeG1sKCJ0ZXN0X2RldGFpbC54bWwiKTsKKyAg
RVhQRUNUX0ZBTFNFKHRlc3RfZGV0YWlsX3htbC5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5
KCkpOworfQorCitURVNUKEZpbGVQYXRoVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yKSB7CisgIEZp
bGVQYXRoIGZwOworICBFWFBFQ1RfRVEoIiIsIGZwLnN0cmluZygpKTsKK30KKworVEVTVChGaWxl
UGF0aFRlc3QsIENoYXJBbmRDb3B5Q29uc3RydWN0b3JzKSB7CisgIGNvbnN0IEZpbGVQYXRoIGZw
KCJzcGljeSIpOworICBFWFBFQ1RfRVEoInNwaWN5IiwgZnAuc3RyaW5nKCkpOworCisgIGNvbnN0
IEZpbGVQYXRoIGZwX2NvcHkoZnApOworICBFWFBFQ1RfRVEoInNwaWN5IiwgZnBfY29weS5zdHJp
bmcoKSk7Cit9CisKK1RFU1QoRmlsZVBhdGhUZXN0LCBTdHJpbmdDb25zdHJ1Y3RvcikgeworICBj
b25zdCBGaWxlUGF0aCBmcChzdGQ6OnN0cmluZygiY2lkZXIiKSk7CisgIEVYUEVDVF9FUSgiY2lk
ZXIiLCBmcC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoRmlsZVBhdGhUZXN0LCBTZXQpIHsKKyAgY29u
c3QgRmlsZVBhdGggYXBwbGUoImFwcGxlIik7CisgIEZpbGVQYXRoIG1hYygibWFjIik7CisgIG1h
Yy5TZXQoYXBwbGUpOyAgLy8gSW1wbGVtZW50IFNldCgpIHNpbmNlIG92ZXJsb2FkaW5nIG9wZXJh
dG9yPSBpcyBmb3JiaWRkZW4uCisgIEVYUEVDVF9FUSgiYXBwbGUiLCBtYWMuc3RyaW5nKCkpOwor
ICBFWFBFQ1RfRVEoImFwcGxlIiwgYXBwbGUuc3RyaW5nKCkpOworfQorCitURVNUKEZpbGVQYXRo
VGVzdCwgVG9TdHJpbmcpIHsKKyAgY29uc3QgRmlsZVBhdGggZmlsZSgiZHJpbmsiKTsKKyAgRVhQ
RUNUX0VRKCJkcmluayIsIGZpbGUuc3RyaW5nKCkpOworfQorCitURVNUKEZpbGVQYXRoVGVzdCwg
UmVtb3ZlRXh0ZW5zaW9uKSB7CisgIEVYUEVDVF9FUSgiYXBwIiwgRmlsZVBhdGgoImFwcC5jYyIp
LlJlbW92ZUV4dGVuc2lvbigiY2MiKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiYXBwIiwgRmls
ZVBhdGgoImFwcC5leGUiKS5SZW1vdmVFeHRlbnNpb24oImV4ZSIpLnN0cmluZygpKTsKKyAgRVhQ
RUNUX0VRKCJBUFAiLCBGaWxlUGF0aCgiQVBQLkVYRSIpLlJlbW92ZUV4dGVuc2lvbigiZXhlIiku
c3RyaW5nKCkpOworfQorCitURVNUKEZpbGVQYXRoVGVzdCwgUmVtb3ZlRXh0ZW5zaW9uV2hlblRo
ZXJlSXNOb0V4dGVuc2lvbikgeworICBFWFBFQ1RfRVEoImFwcCIsIEZpbGVQYXRoKCJhcHAiKS5S
ZW1vdmVFeHRlbnNpb24oImV4ZSIpLnN0cmluZygpKTsKK30KKworVEVTVChGaWxlUGF0aFRlc3Qs
IElzRGlyZWN0b3J5KSB7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiY29sYSIpLklzRGlyZWN0
b3J5KCkpOworICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgia29hbGEiIEdURVNUX1BBVEhfU0VQXyku
SXNEaXJlY3RvcnkoKSk7CisjaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KKyAgRVhQRUNUX1RS
VUUoRmlsZVBhdGgoImtvYWxhLyIpLklzRGlyZWN0b3J5KCkpOworI2VuZGlmCit9CisKK1RFU1Qo
RmlsZVBhdGhUZXN0LCBJc0Fic29sdXRlUGF0aCkgeworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgo
ImlzIiBHVEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIikuSXNBYnNvbHV0ZVBhdGgoKSk7CisgIEVY
UEVDVF9GQUxTRShGaWxlUGF0aCgiIikuSXNBYnNvbHV0ZVBhdGgoKSk7CisjaWYgR1RFU1RfT1Nf
V0lORE9XUworICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiYzpcXCIgR1RFU1RfUEFUSF9TRVBfICJp
c19ub3QiCisgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1BBVEhfU0VQXyAicmVsYXRpdmUi
KS5Jc0Fic29sdXRlUGF0aCgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJjOmZvbyIgR1RF
U1RfUEFUSF9TRVBfICJiYXIiKS5Jc0Fic29sdXRlUGF0aCgpKTsKKyAgRVhQRUNUX1RSVUUoRmls
ZVBhdGgoImM6LyIgR1RFU1RfUEFUSF9TRVBfICJpc19ub3QiCisgICAgICAgICAgICAgICAgICAg
ICAgIEdURVNUX1BBVEhfU0VQXyAicmVsYXRpdmUiKS5Jc0Fic29sdXRlUGF0aCgpKTsKKyNlbHNl
CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiaXNfbm90IiBHVEVTVF9Q
QVRIX1NFUF8gInJlbGF0aXZlIikKKyAgICAgICAgICAgICAgLklzQWJzb2x1dGVQYXRoKCkpOwor
I2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCit9CisKK1RFU1QoRmlsZVBhdGhUZXN0LCBJc1Jv
b3REaXJlY3RvcnkpIHsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIEVYUEVDVF9UUlVFKEZpbGVQ
YXRoKCJhOlxcIikuSXNSb290RGlyZWN0b3J5KCkpOworICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgi
WjovIikuSXNSb290RGlyZWN0b3J5KCkpOworICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiZTovLyIp
LklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIiKS5Jc1Jvb3RE
aXJlY3RvcnkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYjoiKS5Jc1Jvb3REaXJlY3Rv
cnkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYjphIikuSXNSb290RGlyZWN0b3J5KCkp
OworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIjg6LyIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAg
RVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJjfC8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisjZWxzZQor
ICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiLyIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNU
X1RSVUUoRmlsZVBhdGgoIi8vIikuSXNSb290RGlyZWN0b3J5KCkpOworICBFWFBFQ1RfRkFMU0Uo
RmlsZVBhdGgoIiIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRo
KCJcXCIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIveCIp
LklzUm9vdERpcmVjdG9yeSgpKTsKKyNlbmRpZgorfQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8v
IG5hbWVzcGFjZSBpbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3Qu
cHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZmlsdGVyLXVuaXR0
ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRjMGI1YmQ5YTVjZmM1YmZlOGM2OGFmMWI2NDc4OTllMWZlYmRh
NjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3QtZmlsdGVyLXVuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNjM2IEBACisjIS91c3IvYmluL2Vu
diBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3Qg
dGVzdCBmaWx0ZXJzLgorCitBIHVzZXIgY2FuIHNwZWNpZnkgd2hpY2ggdGVzdChzKSBpbiBhIEdv
b2dsZSBUZXN0IHByb2dyYW0gdG8gcnVuIHZpYSBlaXRoZXIKK3RoZSBHVEVTVF9GSUxURVIgZW52
aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlIC0tZ3Rlc3RfZmlsdGVyIGZsYWcuCitUaGlzIHNjcmlw
dCB0ZXN0cyBzdWNoIGZ1bmN0aW9uYWxpdHkgYnkgaW52b2tpbmcKK2dvb2dsZXRlc3QtZmlsdGVy
LXVuaXR0ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aCBHb29nbGUgVGVzdCkgd2l0aCBkaWZm
ZXJlbnQKK2Vudmlyb25tZW50cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdzLgorCitOb3RlIHRoYXQg
dGVzdCBzaGFyZGluZyBtYXkgYWxzbyBpbmZsdWVuY2Ugd2hpY2ggdGVzdHMgYXJlIGZpbHRlcmVk
LiBUaGVyZWZvcmUsCit3ZSB0ZXN0IHRoYXQgaGVyZSBhbHNvLgorIiIiCisKK2ltcG9ydCBvcwor
aW1wb3J0IHJlCitpbXBvcnQgc2V0cworaW1wb3J0IHN5cworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRp
bHMKKworIyBDb25zdGFudHMuCisKKyMgQ2hlY2tzIGlmIHRoaXMgcGxhdGZvcm0gY2FuIHBhc3Mg
ZW1wdHkgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGNoaWxkCisjIHByb2Nlc3Nlcy4gIFdlIHNl
dCBhbiBlbnYgdmFyaWFibGUgdG8gYW4gZW1wdHkgc3RyaW5nIGFuZCBpbnZva2UgYSBweXRob24K
KyMgc2NyaXB0IGluIGEgc3VicHJvY2VzcyB0byBwcmludCB3aGV0aGVyIHRoZSB2YXJpYWJsZSBp
cyBTVElMTCBpbgorIyBvcy5lbnZpcm9uLiAgV2UgdGhlbiB1c2UgJ2V2YWwnIHRvIHBhcnNlIHRo
ZSBjaGlsZCdzIG91dHB1dCBzbyB0aGF0IGFuCisjIGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgdGhl
IGlucHV0IGlzIGFueXRoaW5nIG90aGVyIHRoYW4gJ1RydWUnIG5vciAnRmFsc2UnLgorQ0FOX1BB
U1NfRU1QVFlfRU5WID0gRmFsc2UKK2lmIHN5cy5leGVjdXRhYmxlOgorICBvcy5lbnZpcm9uWydF
TVBUWV9WQVInXSA9ICcnCisgIGNoaWxkID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAor
ICAgICAgW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAnaW1wb3J0IG9zOyBwcmludCBcJ0VNUFRZX1ZB
UlwnIGluIG9zLmVudmlyb24nXSkKKyAgQ0FOX1BBU1NfRU1QVFlfRU5WID0gZXZhbChjaGlsZC5v
dXRwdXQpCisKKworIyBDaGVjayBpZiB0aGlzIHBsYXRmb3JtIGNhbiB1bnNldCBlbnZpcm9ubWVu
dCB2YXJpYWJsZXMgaW4gY2hpbGQgcHJvY2Vzc2VzLgorIyBXZSBzZXQgYW4gZW52IHZhcmlhYmxl
IHRvIGEgbm9uLWVtcHR5IHN0cmluZywgdW5zZXQgaXQsIGFuZCBpbnZva2UKKyMgYSBweXRob24g
c2NyaXB0IGluIGEgc3VicHJvY2VzcyB0byBwcmludCB3aGV0aGVyIHRoZSB2YXJpYWJsZQorIyBp
cyBOTyBMT05HRVIgaW4gb3MuZW52aXJvbi4KKyMgV2UgdXNlICdldmFsJyB0byBwYXJzZSB0aGUg
Y2hpbGQncyBvdXRwdXQgc28gdGhhdCBhbiBleGNlcHRpb24KKyMgaXMgdGhyb3duIGlmIHRoZSBp
bnB1dCBpcyBuZWl0aGVyICdUcnVlJyBub3IgJ0ZhbHNlJy4KK0NBTl9VTlNFVF9FTlYgPSBGYWxz
ZQoraWYgc3lzLmV4ZWN1dGFibGU6CisgIG9zLmVudmlyb25bJ1VOU0VUX1ZBUiddID0gJ1gnCisg
IGRlbCBvcy5lbnZpcm9uWydVTlNFVF9WQVInXQorICBjaGlsZCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
U3VicHJvY2VzcygKKyAgICAgIFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgJ2ltcG9ydCBvczsgcHJp
bnQgXCdVTlNFVF9WQVJcJyBub3QgaW4gb3MuZW52aXJvbicKKyAgICAgIF0pCisgIENBTl9VTlNF
VF9FTlYgPSBldmFsKGNoaWxkLm91dHB1dCkKKworCisjIENoZWNrcyBpZiB3ZSBzaG91bGQgdGVz
dCB3aXRoIGFuIGVtcHR5IGZpbHRlci4gVGhpcyBkb2Vzbid0CisjIG1ha2Ugc2Vuc2Ugb24gcGxh
dGZvcm1zIHRoYXQgY2Fubm90IHBhc3MgZW1wdHkgZW52IHZhcmlhYmxlcyAoV2luMzIpCisjIGFu
ZCBvbiBwbGF0Zm9ybXMgdGhhdCBjYW5ub3QgdW5zZXQgdmFyaWFibGVzIChzaW5jZSB3ZSBjYW5u
b3QgdGVsbAorIyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuICIiIGFuZCBOVUxMIC0tIEJvcmxhbmQg
YW5kIFNvbGFyaXMgPCA1LjEwKQorQ0FOX1RFU1RfRU1QVFlfRklMVEVSID0gKENBTl9QQVNTX0VN
UFRZX0VOViBhbmQgQ0FOX1VOU0VUX0VOVikKKworCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJs
ZSBmb3Igc3BlY2lmeWluZyB0aGUgdGVzdCBmaWx0ZXJzLgorRklMVEVSX0VOVl9WQVIgPSAnR1RF
U1RfRklMVEVSJworCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRlc3Qgc2hhcmRp
bmcuCitUT1RBTF9TSEFSRFNfRU5WX1ZBUiA9ICdHVEVTVF9UT1RBTF9TSEFSRFMnCitTSEFSRF9J
TkRFWF9FTlZfVkFSID0gJ0dURVNUX1NIQVJEX0lOREVYJworU0hBUkRfU1RBVFVTX0ZJTEVfRU5W
X1ZBUiA9ICdHVEVTVF9TSEFSRF9TVEFUVVNfRklMRScKKworIyBUaGUgY29tbWFuZCBsaW5lIGZs
YWcgZm9yIHNwZWNpZnlpbmcgdGhlIHRlc3QgZmlsdGVycy4KK0ZJTFRFUl9GTEFHID0gJ2d0ZXN0
X2ZpbHRlcicKKworIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgZm9yIGluY2x1ZGluZyBkaXNhYmxl
ZCB0ZXN0cy4KK0FMU09fUlVOX0RJU0FCTEVEX1RFU1RTX0ZMQUcgPSAnZ3Rlc3RfYWxzb19ydW5f
ZGlzYWJsZWRfdGVzdHMnCisKKyMgQ29tbWFuZCB0byBydW4gdGhlIGdvb2dsZXRlc3QtZmlsdGVy
LXVuaXR0ZXN0XyBwcm9ncmFtLgorQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4
ZWN1dGFibGVQYXRoKCdnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8nKQorCisjIFJlZ2V4IGZv
ciBkZXRlcm1pbmluZyB3aGV0aGVyIHBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQgaW4g
dGhlIGJpbmFyeS4KK1BBUkFNX1RFU1RfUkVHRVggPSByZS5jb21waWxlKHInL1BhcmFtVGVzdCcp
CisKKyMgUmVnZXggZm9yIHBhcnNpbmcgdGVzdCBjYXNlIG5hbWVzIGZyb20gR29vZ2xlIFRlc3Qn
cyBvdXRwdXQuCitURVNUX0NBU0VfUkVHRVggPSByZS5jb21waWxlKHInXlxbXC0rXF0gXGQrIHRl
c3RzPyBmcm9tIChcdysoL1x3Kyk/KScpCisKKyMgUmVnZXggZm9yIHBhcnNpbmcgdGVzdCBuYW1l
cyBmcm9tIEdvb2dsZSBUZXN0J3Mgb3V0cHV0LgorVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocide
XFtccypSVU5ccypcXS4qXC4oXHcrKC9cdyspPyknKQorCisjIFRoZSBjb21tYW5kIGxpbmUgZmxh
ZyB0byB0ZWxsIEdvb2dsZSBUZXN0IHRvIG91dHB1dCB0aGUgbGlzdCBvZiB0ZXN0cyBpdAorIyB3
aWxsIHJ1bi4KK0xJU1RfVEVTVFNfRkxBRyA9ICctLWd0ZXN0X2xpc3RfdGVzdHMnCisKKyMgSW5k
aWNhdGVzIHdoZXRoZXIgR29vZ2xlIFRlc3Qgc3VwcG9ydHMgZGVhdGggdGVzdHMuCitTVVBQT1JU
U19ERUFUSF9URVNUUyA9ICdIYXNEZWF0aFRlc3QnIGluIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJv
Y2VzcygKKyAgICBbQ09NTUFORCwgTElTVF9URVNUU19GTEFHXSkub3V0cHV0CisKKyMgRnVsbCBu
YW1lcyBvZiBhbGwgdGVzdHMgaW4gZ29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3RzXy4KK1BBUkFN
X1RFU1RTID0gWworICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywKKyAgICAnU2VxUC9QYXJh
bVRlc3QuVGVzdFgvMScsCisgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzAnLAorICAgICdTZXFQ
L1BhcmFtVGVzdC5UZXN0WS8xJywKKyAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFgvMCcsCisgICAg
J1NlcVEvUGFyYW1UZXN0LlRlc3RYLzEnLAorICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WS8wJywK
KyAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFkvMScsCisgICAgXQorCitESVNBQkxFRF9URVNUUyA9
IFsKKyAgICAnQmFyVGVzdC5ESVNBQkxFRF9UZXN0Rm91cicsCisgICAgJ0JhclRlc3QuRElTQUJM
RURfVGVzdEZpdmUnLAorICAgICdCYXpUZXN0LkRJU0FCTEVEX1Rlc3RDJywKKyAgICAnRElTQUJM
RURfRm9vYmFyVGVzdC5UZXN0MScsCisgICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuRElTQUJMRURf
VGVzdDInLAorICAgICdESVNBQkxFRF9Gb29iYXJiYXpUZXN0LlRlc3RBJywKKyAgICBdCisKK2lm
IFNVUFBPUlRTX0RFQVRIX1RFU1RTOgorICBERUFUSF9URVNUUyA9IFsKKyAgICAnSGFzRGVhdGhU
ZXN0LlRlc3QxJywKKyAgICAnSGFzRGVhdGhUZXN0LlRlc3QyJywKKyAgICBdCitlbHNlOgorICBE
RUFUSF9URVNUUyA9IFtdCisKKyMgQWxsIHRoZSBub24tZGlzYWJsZWQgdGVzdHMuCitBQ1RJVkVf
VEVTVFMgPSBbCisgICAgJ0Zvb1Rlc3QuQWJjJywKKyAgICAnRm9vVGVzdC5YeXonLAorCisgICAg
J0JhclRlc3QuVGVzdE9uZScsCisgICAgJ0JhclRlc3QuVGVzdFR3bycsCisgICAgJ0JhclRlc3Qu
VGVzdFRocmVlJywKKworICAgICdCYXpUZXN0LlRlc3RPbmUnLAorICAgICdCYXpUZXN0LlRlc3RB
JywKKyAgICAnQmF6VGVzdC5UZXN0QicsCisgICAgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVT
VFMKKworcGFyYW1fdGVzdHNfcHJlc2VudCA9IE5vbmUKKworIyBVdGlsaXRpZXMuCisKK2Vudmly
b24gPSBvcy5lbnZpcm9uLmNvcHkoKQorCisKK2RlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUp
OgorICAiIiJTZXRzIHRoZSBlbnYgdmFyaWFibGUgdG8gJ3ZhbHVlJzsgdW5zZXRzIGl0IHdoZW4g
J3ZhbHVlJyBpcyBOb25lLiIiIgorCisgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAgIGVudmly
b25bZW52X3Zhcl0gPSB2YWx1ZQorICBlbGlmIGVudl92YXIgaW4gZW52aXJvbjoKKyAgICBkZWwg
ZW52aXJvbltlbnZfdmFyXQorCisKK2RlZiBSdW5BbmRSZXR1cm5PdXRwdXQoYXJncyA9IE5vbmUp
OgorICAiIiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0gYW5kIHJldHVybnMgaXRzIG91dHB1dC4iIiIK
KworICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtDT01NQU5EXSArIChhcmdz
IG9yIFtdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52aXJv
bikub3V0cHV0CisKKworZGVmIFJ1bkFuZEV4dHJhY3RUZXN0TGlzdChhcmdzID0gTm9uZSk6Cisg
ICIiIlJ1bnMgdGhlIHRlc3QgcHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgZXhpdCBjb2RlIGFuZCBh
IGxpc3Qgb2YgdGVzdHMgcnVuLiIiIgorCisgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nl
c3MoW0NPTU1BTkRdICsgKGFyZ3Mgb3IgW10pLCBlbnY9ZW52aXJvbikKKyAgdGVzdHNfcnVuID0g
W10KKyAgdGVzdF9jYXNlID0gJycKKyAgdGVzdCA9ICcnCisgIGZvciBsaW5lIGluIHAub3V0cHV0
LnNwbGl0KCdcbicpOgorICAgIG1hdGNoID0gVEVTVF9DQVNFX1JFR0VYLm1hdGNoKGxpbmUpCisg
ICAgaWYgbWF0Y2ggaXMgbm90IE5vbmU6CisgICAgICB0ZXN0X2Nhc2UgPSBtYXRjaC5ncm91cCgx
KQorICAgIGVsc2U6CisgICAgICBtYXRjaCA9IFRFU1RfUkVHRVgubWF0Y2gobGluZSkKKyAgICAg
IGlmIG1hdGNoIGlzIG5vdCBOb25lOgorICAgICAgICB0ZXN0ID0gbWF0Y2guZ3JvdXAoMSkKKyAg
ICAgICAgdGVzdHNfcnVuLmFwcGVuZCh0ZXN0X2Nhc2UgKyAnLicgKyB0ZXN0KQorICByZXR1cm4g
KHRlc3RzX3J1biwgcC5leGl0X2NvZGUpCisKKworZGVmIEludm9rZVdpdGhNb2RpZmllZEVudihl
eHRyYV9lbnYsIGZ1bmN0aW9uLCAqYXJncywgKiprd2FyZ3MpOgorICAiIiJSdW5zIHRoZSBnaXZl
biBmdW5jdGlvbiBhbmQgYXJndW1lbnRzIGluIGEgbW9kaWZpZWQgZW52aXJvbm1lbnQuIiIiCisg
IHRyeToKKyAgICBvcmlnaW5hbF9lbnYgPSBlbnZpcm9uLmNvcHkoKQorICAgIGVudmlyb24udXBk
YXRlKGV4dHJhX2VudikKKyAgICByZXR1cm4gZnVuY3Rpb24oKmFyZ3MsICoqa3dhcmdzKQorICBm
aW5hbGx5OgorICAgIGVudmlyb24uY2xlYXIoKQorICAgIGVudmlyb24udXBkYXRlKG9yaWdpbmFs
X2VudikKKworCitkZWYgUnVuV2l0aFNoYXJkaW5nKHRvdGFsX3NoYXJkcywgc2hhcmRfaW5kZXgs
IGNvbW1hbmQpOgorICAiIiJSdW5zIGEgdGVzdCBwcm9ncmFtIHNoYXJkIGFuZCByZXR1cm5zIGV4
aXQgY29kZSBhbmQgYSBsaXN0IG9mIHRlc3RzIHJ1bi4iIiIKKworICBleHRyYV9lbnYgPSB7U0hB
UkRfSU5ERVhfRU5WX1ZBUjogc3RyKHNoYXJkX2luZGV4KSwKKyAgICAgICAgICAgICAgIFRPVEFM
X1NIQVJEU19FTlZfVkFSOiBzdHIodG90YWxfc2hhcmRzKX0KKyAgcmV0dXJuIEludm9rZVdpdGhN
b2RpZmllZEVudihleHRyYV9lbnYsIFJ1bkFuZEV4dHJhY3RUZXN0TGlzdCwgY29tbWFuZCkKKwor
IyBUaGUgdW5pdCB0ZXN0LgorCisKK2NsYXNzIEdUZXN0RmlsdGVyVW5pdFRlc3QoZ3Rlc3RfdGVz
dF91dGlscy5UZXN0Q2FzZSk6CisgICIiIlRlc3RzIHRoZSBlbnYgdmFyaWFibGUgb3IgdGhlIGNv
bW1hbmQgbGluZSBmbGFnIHRvIGZpbHRlciB0ZXN0cy4iIiIKKworICAjIFV0aWxpdGllcy4KKwor
ICBkZWYgQXNzZXJ0U2V0RXF1YWwoc2VsZiwgbGhzLCByaHMpOgorICAgICIiIkFzc2VydHMgdGhh
dCB0d28gc2V0cyBhcmUgZXF1YWwuIiIiCisKKyAgICBmb3IgZWxlbSBpbiBsaHM6CisgICAgICBz
ZWxmLmFzc2VydF8oZWxlbSBpbiByaHMsICclcyBpbiAlcycgJSAoZWxlbSwgcmhzKSkKKworICAg
IGZvciBlbGVtIGluIHJoczoKKyAgICAgIHNlbGYuYXNzZXJ0XyhlbGVtIGluIGxocywgJyVzIGlu
ICVzJyAlIChlbGVtLCBsaHMpKQorCisgIGRlZiBBc3NlcnRQYXJ0aXRpb25Jc1ZhbGlkKHNlbGYs
IHNldF92YXIsIGxpc3Rfb2Zfc2V0cyk6CisgICAgIiIiQXNzZXJ0cyB0aGF0IGxpc3Rfb2Zfc2V0
cyBpcyBhIHZhbGlkIHBhcnRpdGlvbiBvZiBzZXRfdmFyLiIiIgorCisgICAgZnVsbF9wYXJ0aXRp
b24gPSBbXQorICAgIGZvciBzbGljZV92YXIgaW4gbGlzdF9vZl9zZXRzOgorICAgICAgZnVsbF9w
YXJ0aXRpb24uZXh0ZW5kKHNsaWNlX3ZhcikKKyAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXRf
dmFyKSwgbGVuKGZ1bGxfcGFydGl0aW9uKSkKKyAgICBzZWxmLmFzc2VydEVxdWFsKHNldHMuU2V0
KHNldF92YXIpLCBzZXRzLlNldChmdWxsX3BhcnRpdGlvbikpCisKKyAgZGVmIEFkanVzdEZvclBh
cmFtZXRlcml6ZWRUZXN0cyhzZWxmLCB0ZXN0c190b19ydW4pOgorICAgICIiIkFkanVzdCB0ZXN0
c190b19ydW4gaW4gY2FzZSB2YWx1ZSBwYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBkaXNhYmxlZC4i
IiIKKworICAgIGdsb2JhbCBwYXJhbV90ZXN0c19wcmVzZW50CisgICAgaWYgbm90IHBhcmFtX3Rl
c3RzX3ByZXNlbnQ6CisgICAgICByZXR1cm4gbGlzdChzZXRzLlNldCh0ZXN0c190b19ydW4pIC0g
c2V0cy5TZXQoUEFSQU1fVEVTVFMpKQorICAgIGVsc2U6CisgICAgICByZXR1cm4gdGVzdHNfdG9f
cnVuCisKKyAgZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBndGVzdF9maWx0ZXIsIHRlc3RzX3RvX3J1
bik6CisgICAgIiIiQ2hlY2tzIHRoYXQgdGhlIGJpbmFyeSBydW5zIGNvcnJlY3Qgc2V0IG9mIHRl
c3RzIGZvciBhIGdpdmVuIGZpbHRlci4iIiIKKworICAgIHRlc3RzX3RvX3J1biA9IHNlbGYuQWRq
dXN0Rm9yUGFyYW1ldGVyaXplZFRlc3RzKHRlc3RzX3RvX3J1bikKKworICAgICMgRmlyc3QsIHRl
c3RzIHVzaW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKworICAgICMgV2luZG93cyByZW1v
dmVzIGVtcHR5IHZhcmlhYmxlcyBmcm9tIHRoZSBlbnZpcm9ubWVudCB3aGVuIHBhc3NpbmcgaXQK
KyAgICAjIHRvIGEgbmV3IHByb2Nlc3MuICBUaGlzIG1lYW5zIGl0IGlzIGltcG9zc2libGUgdG8g
cGFzcyBhbiBlbXB0eSBmaWx0ZXIKKyAgICAjIGludG8gYSBwcm9jZXNzIHVzaW5nIHRoZSBlbnZp
cm9ubWVudCB2YXJpYWJsZS4gIEhvd2V2ZXIsIHdlIGNhbiBzdGlsbAorICAgICMgdGVzdCB0aGUg
Y2FzZSB3aGVuIHRoZSB2YXJpYWJsZSBpcyBub3Qgc3VwcGxpZWQgKGkuZS4sIGd0ZXN0X2ZpbHRl
ciBpcworICAgICMgTm9uZSkuCisgICAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2NDAzCisgICAg
aWYgQ0FOX1RFU1RfRU1QVFlfRklMVEVSIG9yIGd0ZXN0X2ZpbHRlciAhPSAnJzoKKyAgICAgIFNl
dEVudlZhcihGSUxURVJfRU5WX1ZBUiwgZ3Rlc3RfZmlsdGVyKQorICAgICAgdGVzdHNfcnVuID0g
UnVuQW5kRXh0cmFjdFRlc3RMaXN0KClbMF0KKyAgICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZB
UiwgTm9uZSkKKyAgICAgIHNlbGYuQXNzZXJ0U2V0RXF1YWwodGVzdHNfcnVuLCB0ZXN0c190b19y
dW4pCisgICAgIyBweWxpbnQ6IGVuYWJsZS1tc2c9QzY0MDMKKworICAgICMgTmV4dCwgdGVzdHMg
dXNpbmcgdGhlIGNvbW1hbmQgbGluZSBmbGFnLgorCisgICAgaWYgZ3Rlc3RfZmlsdGVyIGlzIE5v
bmU6CisgICAgICBhcmdzID0gW10KKyAgICBlbHNlOgorICAgICAgYXJncyA9IFsnLS0lcz0lcycg
JSAoRklMVEVSX0ZMQUcsIGd0ZXN0X2ZpbHRlcildCisKKyAgICB0ZXN0c19ydW4gPSBSdW5BbmRF
eHRyYWN0VGVzdExpc3QoYXJncylbMF0KKyAgICBzZWxmLkFzc2VydFNldEVxdWFsKHRlc3RzX3J1
biwgdGVzdHNfdG9fcnVuKQorCisgIGRlZiBSdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoc2VsZiwg
Z3Rlc3RfZmlsdGVyLCB0b3RhbF9zaGFyZHMsIHRlc3RzX3RvX3J1biwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhcmdzPU5vbmUsIGNoZWNrX2V4aXRfMD1GYWxzZSk6CisgICAgIiIi
Q2hlY2tzIHRoYXQgYmluYXJ5IHJ1bnMgY29ycmVjdCB0ZXN0cyBmb3IgdGhlIGdpdmVuIGZpbHRl
ciBhbmQgc2hhcmQuCisKKyAgICBSdW5zIGFsbCBzaGFyZHMgb2YgZ29vZ2xldGVzdC1maWx0ZXIt
dW5pdHRlc3RfIHdpdGggdGhlIGdpdmVuIGZpbHRlciwgYW5kCisgICAgdmVyaWZpZXMgdGhhdCB0
aGUgcmlnaHQgc2V0IG9mIHRlc3RzIHdlcmUgcnVuLiBUaGUgdW5pb24gb2YgdGVzdHMgcnVuCisg
ICAgb24gZWFjaCBzaGFyZCBzaG91bGQgYmUgaWRlbnRpY2FsIHRvIHRlc3RzX3RvX3J1biwgd2l0
aG91dCBkdXBsaWNhdGVzLgorICAgIElmIGNoZWNrX2V4aXRfMCwgLgorCisgICAgQXJnczoKKyAg
ICAgIGd0ZXN0X2ZpbHRlcjogQSBmaWx0ZXIgdG8gYXBwbHkgdG8gdGhlIHRlc3RzLgorICAgICAg
dG90YWxfc2hhcmRzOiBBIHRvdGFsIG51bWJlciBvZiBzaGFyZHMgdG8gc3BsaXQgdGVzdCBydW4g
aW50by4KKyAgICAgIHRlc3RzX3RvX3J1bjogQSBzZXQgb2YgdGVzdHMgZXhwZWN0ZWQgdG8gcnVu
LgorICAgICAgYXJncyAgIDogICAgICBBcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgdG8gdGhlIHRl
c3QgYmluYXJ5LgorICAgICAgY2hlY2tfZXhpdF8wOiBXaGVuIHNldCB0byBhIHRydWUgdmFsdWUs
IG1ha2Ugc3VyZSB0aGF0IGFsbCBzaGFyZHMKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAu
CisgICAgIiIiCisKKyAgICB0ZXN0c190b19ydW4gPSBzZWxmLkFkanVzdEZvclBhcmFtZXRlcml6
ZWRUZXN0cyh0ZXN0c190b19ydW4pCisKKyAgICAjIFdpbmRvd3MgcmVtb3ZlcyBlbXB0eSB2YXJp
YWJsZXMgZnJvbSB0aGUgZW52aXJvbm1lbnQgd2hlbiBwYXNzaW5nIGl0CisgICAgIyB0byBhIG5l
dyBwcm9jZXNzLiAgVGhpcyBtZWFucyBpdCBpcyBpbXBvc3NpYmxlIHRvIHBhc3MgYW4gZW1wdHkg
ZmlsdGVyCisgICAgIyBpbnRvIGEgcHJvY2VzcyB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFi
bGUuICBIb3dldmVyLCB3ZSBjYW4gc3RpbGwKKyAgICAjIHRlc3QgdGhlIGNhc2Ugd2hlbiB0aGUg
dmFyaWFibGUgaXMgbm90IHN1cHBsaWVkIChpLmUuLCBndGVzdF9maWx0ZXIgaXMKKyAgICAjIE5v
bmUpLgorICAgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwMworICAgIGlmIENBTl9URVNUX0VN
UFRZX0ZJTFRFUiBvciBndGVzdF9maWx0ZXIgIT0gJyc6CisgICAgICBTZXRFbnZWYXIoRklMVEVS
X0VOVl9WQVIsIGd0ZXN0X2ZpbHRlcikKKyAgICAgIHBhcnRpdGlvbiA9IFtdCisgICAgICBmb3Ig
aSBpbiByYW5nZSgwLCB0b3RhbF9zaGFyZHMpOgorICAgICAgICAodGVzdHNfcnVuLCBleGl0X2Nv
ZGUpID0gUnVuV2l0aFNoYXJkaW5nKHRvdGFsX3NoYXJkcywgaSwgYXJncykKKyAgICAgICAgaWYg
Y2hlY2tfZXhpdF8wOgorICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZXhpdF9jb2RlKQor
ICAgICAgICBwYXJ0aXRpb24uYXBwZW5kKHRlc3RzX3J1bikKKworICAgICAgc2VsZi5Bc3NlcnRQ
YXJ0aXRpb25Jc1ZhbGlkKHRlc3RzX3RvX3J1biwgcGFydGl0aW9uKQorICAgICAgU2V0RW52VmFy
KEZJTFRFUl9FTlZfVkFSLCBOb25lKQorICAgICMgcHlsaW50OiBlbmFibGUtbXNnPUM2NDAzCisK
KyAgZGVmIFJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoc2VsZiwgZ3Rlc3RfZmlsdGVyLCB0
ZXN0c190b19ydW4pOgorICAgICIiIkNoZWNrcyB0aGF0IHRoZSBiaW5hcnkgcnVucyBjb3JyZWN0
IHNldCBvZiB0ZXN0cyBmb3IgdGhlIGdpdmVuIGZpbHRlci4KKworICAgIFJ1bnMgZ29vZ2xldGVz
dC1maWx0ZXItdW5pdHRlc3RfIHdpdGggdGhlIGdpdmVuIGZpbHRlciwgYW5kIGVuYWJsZXMKKyAg
ICBkaXNhYmxlZCB0ZXN0cy4gVmVyaWZpZXMgdGhhdCB0aGUgcmlnaHQgc2V0IG9mIHRlc3RzIHdl
cmUgcnVuLgorCisgICAgQXJnczoKKyAgICAgIGd0ZXN0X2ZpbHRlcjogQSBmaWx0ZXIgdG8gYXBw
bHkgdG8gdGhlIHRlc3RzLgorICAgICAgdGVzdHNfdG9fcnVuOiBBIHNldCBvZiB0ZXN0cyBleHBl
Y3RlZCB0byBydW4uCisgICAgIiIiCisKKyAgICB0ZXN0c190b19ydW4gPSBzZWxmLkFkanVzdEZv
clBhcmFtZXRlcml6ZWRUZXN0cyh0ZXN0c190b19ydW4pCisKKyAgICAjIENvbnN0cnVjdCB0aGUg
Y29tbWFuZCBsaW5lLgorICAgIGFyZ3MgPSBbJy0tJXMnICUgQUxTT19SVU5fRElTQUJMRURfVEVT
VFNfRkxBR10KKyAgICBpZiBndGVzdF9maWx0ZXIgaXMgbm90IE5vbmU6CisgICAgICBhcmdzLmFw
cGVuZCgnLS0lcz0lcycgJSAoRklMVEVSX0ZMQUcsIGd0ZXN0X2ZpbHRlcikpCisKKyAgICB0ZXN0
c19ydW4gPSBSdW5BbmRFeHRyYWN0VGVzdExpc3QoYXJncylbMF0KKyAgICBzZWxmLkFzc2VydFNl
dEVxdWFsKHRlc3RzX3J1biwgdGVzdHNfdG9fcnVuKQorCisgIGRlZiBzZXRVcChzZWxmKToKKyAg
ICAiIiJTZXRzIHVwIHRlc3QgY2FzZS4KKworICAgIERldGVybWluZXMgd2hldGhlciB2YWx1ZS1w
YXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBlbmFibGVkIGluIHRoZSBiaW5hcnkgYW5kCisgICAgc2V0
cyB0aGUgZmxhZ3MgYWNjb3JkaW5nbHkuCisgICAgIiIiCisKKyAgICBnbG9iYWwgcGFyYW1fdGVz
dHNfcHJlc2VudAorICAgIGlmIHBhcmFtX3Rlc3RzX3ByZXNlbnQgaXMgTm9uZToKKyAgICAgIHBh
cmFtX3Rlc3RzX3ByZXNlbnQgPSBQQVJBTV9URVNUX1JFR0VYLnNlYXJjaCgKKyAgICAgICAgICBS
dW5BbmRSZXR1cm5PdXRwdXQoKSkgaXMgbm90IE5vbmUKKworICBkZWYgdGVzdERlZmF1bHRCZWhh
dmlvcihzZWxmKToKKyAgICAiIiJUZXN0cyB0aGUgYmVoYXZpb3Igb2Ygbm90IHNwZWNpZnlpbmcg
dGhlIGZpbHRlci4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KE5vbmUsIEFDVElWRV9URVNU
UykKKworICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcldpdGhTaGFyZHMoc2VsZik6CisgICAgIiIi
VGVzdHMgdGhlIGJlaGF2aW9yIHdpdGhvdXQgdGhlIGZpbHRlciwgd2l0aCBzaGFyZGluZyBlbmFi
bGVkLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgMSwgQUNU
SVZFX1RFU1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKE5vbmUsIDIsIEFD
VElWRV9URVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhOb25lLCBsZW4o
QUNUSVZFX1RFU1RTKSAtIDEsIEFDVElWRV9URVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdp
dGhTaGFyZGluZyhOb25lLCBsZW4oQUNUSVZFX1RFU1RTKSwgQUNUSVZFX1RFU1RTKQorICAgIHNl
bGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKE5vbmUsIGxlbihBQ1RJVkVfVEVTVFMpICsgMSwg
QUNUSVZFX1RFU1RTKQorCisgIGRlZiB0ZXN0RW1wdHlGaWx0ZXIoc2VsZik6CisgICAgIiIiVGVz
dHMgYW4gZW1wdHkgZmlsdGVyLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJycsIFtdKQor
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKCcnLCAxLCBbXSkKKyAgICBzZWxmLlJ1
bkFuZFZlcmlmeVdpdGhTaGFyZGluZygnJywgMiwgW10pCisKKyAgZGVmIHRlc3RCYWRGaWx0ZXIo
c2VsZik6CisgICAgIiIiVGVzdHMgYSBmaWx0ZXIgdGhhdCBtYXRjaGVzIG5vdGhpbmcuIiIiCisK
KyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnQmFkRmlsdGVyJywgW10pCisgICAgc2VsZi5SdW5BbmRW
ZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdCYWRGaWx0ZXInLCBbXSkKKworICBkZWYgdGVzdEZ1bGxO
YW1lKHNlbGYpOgorICAgICIiIlRlc3RzIGZpbHRlcmluZyBieSBmdWxsIG5hbWUuIiIiCisKKyAg
ICBzZWxmLlJ1bkFuZFZlcmlmeSgnRm9vVGVzdC5YeXonLCBbJ0Zvb1Rlc3QuWHl6J10pCisgICAg
c2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdGb29UZXN0Llh5eicsIFsnRm9vVGVz
dC5YeXonXSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZygnRm9vVGVzdC5YeXon
LCA1LCBbJ0Zvb1Rlc3QuWHl6J10pCisKKyAgZGVmIHRlc3RVbml2ZXJzYWxGaWx0ZXJzKHNlbGYp
OgorICAgICIiIlRlc3RzIGZpbHRlcnMgdGhhdCBtYXRjaCBldmVyeXRoaW5nLiIiIgorCisgICAg
c2VsZi5SdW5BbmRWZXJpZnkoJyonLCBBQ1RJVkVfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRWZXJp
ZnkoJyouKicsIEFDVElWRV9URVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGlu
ZygnKi4qJywgbGVuKEFDVElWRV9URVNUUykgLSAzLCBBQ1RJVkVfVEVTVFMpCisgICAgc2VsZi5S
dW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCcqJywgQUNUSVZFX1RFU1RTICsgRElTQUJMRURf
VEVTVFMpCisgICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCcqLionLCBBQ1RJ
VkVfVEVTVFMgKyBESVNBQkxFRF9URVNUUykKKworICBkZWYgdGVzdEZpbHRlckJ5VGVzdENhc2Uo
c2VsZik6CisgICAgIiIiVGVzdHMgZmlsdGVyaW5nIGJ5IHRlc3QgY2FzZSBuYW1lLiIiIgorCisg
ICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0Zvb1Rlc3QuKicsIFsnRm9vVGVzdC5BYmMnLCAnRm9vVGVz
dC5YeXonXSkKKworICAgIEJBWl9URVNUUyA9IFsnQmF6VGVzdC5UZXN0T25lJywgJ0JhelRlc3Qu
VGVzdEEnLCAnQmF6VGVzdC5UZXN0QiddCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0JhelRlc3Qu
KicsIEJBWl9URVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0Jh
elRlc3QuKicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJBWl9URVNU
UyArIFsnQmF6VGVzdC5ESVNBQkxFRF9UZXN0QyddKQorCisgIGRlZiB0ZXN0RmlsdGVyQnlUZXN0
KHNlbGYpOgorICAgICIiIlRlc3RzIGZpbHRlcmluZyBieSB0ZXN0IG5hbWUuIiIiCisKKyAgICBz
ZWxmLlJ1bkFuZFZlcmlmeSgnKi5UZXN0T25lJywgWydCYXJUZXN0LlRlc3RPbmUnLCAnQmF6VGVz
dC5UZXN0T25lJ10pCisKKyAgZGVmIHRlc3RGaWx0ZXJEaXNhYmxlZFRlc3RzKHNlbGYpOgorICAg
ICIiIlNlbGVjdCBvbmx5IHRoZSBkaXNhYmxlZCB0ZXN0cyB0byBydW4uIiIiCisKKyAgICBzZWxm
LlJ1bkFuZFZlcmlmeSgnRElTQUJMRURfRm9vYmFyVGVzdC5UZXN0MScsIFtdKQorICAgIHNlbGYu
UnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnRElTQUJMRURfRm9vYmFyVGVzdC5UZXN0MScs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnRElTQUJMRURfRm9vYmFy
VGVzdC5UZXN0MSddKQorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJypESVNBQkxFRF8qJywgW10p
CisgICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCcqRElTQUJMRURfKicsIERJ
U0FCTEVEX1RFU1RTKQorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyouRElTQUJMRURfKicsIFtd
KQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnKi5ESVNBQkxFRF8qJywg
WworICAgICAgICAnQmFyVGVzdC5ESVNBQkxFRF9UZXN0Rm91cicsCisgICAgICAgICdCYXJUZXN0
LkRJU0FCTEVEX1Rlc3RGaXZlJywKKyAgICAgICAgJ0JhelRlc3QuRElTQUJMRURfVGVzdEMnLAor
ICAgICAgICAnRElTQUJMRURfRm9vYmFyVGVzdC5ESVNBQkxFRF9UZXN0MicsCisgICAgICAgIF0p
CisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnRElTQUJMRURfKicsIFtdKQorICAgIHNlbGYuUnVu
QW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnRElTQUJMRURfKicsIFsKKyAgICAgICAgJ0RJU0FC
TEVEX0Zvb2JhclRlc3QuVGVzdDEnLAorICAgICAgICAnRElTQUJMRURfRm9vYmFyVGVzdC5ESVNB
QkxFRF9UZXN0MicsCisgICAgICAgICdESVNBQkxFRF9Gb29iYXJiYXpUZXN0LlRlc3RBJywKKyAg
ICAgICAgXSkKKworICBkZWYgdGVzdFdpbGRjYXJkSW5UZXN0Q2FzZU5hbWUoc2VsZik6CisgICAg
IiIiVGVzdHMgdXNpbmcgd2lsZGNhcmQgaW4gdGhlIHRlc3QgY2FzZSBuYW1lLiIiIgorCisgICAg
c2VsZi5SdW5BbmRWZXJpZnkoJyphKi4qJywgWworICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywK
KyAgICAgICAgJ0JhclRlc3QuVGVzdFR3bycsCisgICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScs
CisKKyAgICAgICAgJ0JhelRlc3QuVGVzdE9uZScsCisgICAgICAgICdCYXpUZXN0LlRlc3RBJywK
KyAgICAgICAgJ0JhelRlc3QuVGVzdEInLCBdICsgREVBVEhfVEVTVFMgKyBQQVJBTV9URVNUUykK
KworICBkZWYgdGVzdFdpbGRjYXJkSW5UZXN0TmFtZShzZWxmKToKKyAgICAiIiJUZXN0cyB1c2lu
ZyB3aWxkY2FyZCBpbiB0aGUgdGVzdCBuYW1lLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnko
JyouKkEqJywgWydGb29UZXN0LkFiYycsICdCYXpUZXN0LlRlc3RBJ10pCisKKyAgZGVmIHRlc3RG
aWx0ZXJXaXRob3V0RG90KHNlbGYpOgorICAgICIiIlRlc3RzIGEgZmlsdGVyIHRoYXQgaGFzIG5v
ICcuJyBpbiBpdC4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqeionLCBbCisgICAgICAg
ICdGb29UZXN0Llh5eicsCisKKyAgICAgICAgJ0JhelRlc3QuVGVzdE9uZScsCisgICAgICAgICdC
YXpUZXN0LlRlc3RBJywKKyAgICAgICAgJ0JhelRlc3QuVGVzdEInLAorICAgICAgICBdKQorCisg
IGRlZiB0ZXN0VHdvUGF0dGVybnMoc2VsZik6CisgICAgIiIiVGVzdHMgZmlsdGVycyB0aGF0IGNv
bnNpc3Qgb2YgdHdvIHBhdHRlcm5zLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0Zvbyou
KjoqQSonLCBbCisgICAgICAgICdGb29UZXN0LkFiYycsCisgICAgICAgICdGb29UZXN0Llh5eics
CisKKyAgICAgICAgJ0JhelRlc3QuVGVzdEEnLAorICAgICAgICBdKQorCisgICAgIyBBbiBlbXB0
eSBwYXR0ZXJuICsgYSBub24tZW1wdHkgb25lCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJzoqQSon
LCBbJ0Zvb1Rlc3QuQWJjJywgJ0JhelRlc3QuVGVzdEEnXSkKKworICBkZWYgdGVzdFRocmVlUGF0
dGVybnMoc2VsZik6CisgICAgIiIiVGVzdHMgZmlsdGVycyB0aGF0IGNvbnNpc3Qgb2YgdGhyZWUg
cGF0dGVybnMuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKm9vKjoqQSo6Kk9uZScsIFsK
KyAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKKyAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKKworICAgICAg
ICAnQmFyVGVzdC5UZXN0T25lJywKKworICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKKyAgICAg
ICAgJ0JhelRlc3QuVGVzdEEnLAorICAgICAgICBdKQorCisgICAgIyBUaGUgMm5kIHBhdHRlcm4g
aXMgZW1wdHkuCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJypvbyo6OipPbmUnLCBbCisgICAgICAg
ICdGb29UZXN0LkFiYycsCisgICAgICAgICdGb29UZXN0Llh5eicsCisKKyAgICAgICAgJ0JhclRl
c3QuVGVzdE9uZScsCisKKyAgICAgICAgJ0JhelRlc3QuVGVzdE9uZScsCisgICAgICAgIF0pCisK
KyAgICAjIFRoZSBsYXN0IDIgcGF0dGVybnMgYXJlIGVtcHR5LgorICAgIHNlbGYuUnVuQW5kVmVy
aWZ5KCcqb28qOjonLCBbCisgICAgICAgICdGb29UZXN0LkFiYycsCisgICAgICAgICdGb29UZXN0
Llh5eicsCisgICAgICAgIF0pCisKKyAgZGVmIHRlc3ROZWdhdGl2ZUZpbHRlcnMoc2VsZik6Cisg
ICAgc2VsZi5SdW5BbmRWZXJpZnkoJyotQmF6VGVzdC5UZXN0T25lJywgWworICAgICAgICAnRm9v
VGVzdC5BYmMnLAorICAgICAgICAnRm9vVGVzdC5YeXonLAorCisgICAgICAgICdCYXJUZXN0LlRl
c3RPbmUnLAorICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKKyAgICAgICAgJ0JhclRlc3QuVGVz
dFRocmVlJywKKworICAgICAgICAnQmF6VGVzdC5UZXN0QScsCisgICAgICAgICdCYXpUZXN0LlRl
c3RCJywKKyAgICAgICAgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMpCisKKyAgICBzZWxm
LlJ1bkFuZFZlcmlmeSgnKi1Gb29UZXN0LkFiYzpCYXpUZXN0LionLCBbCisgICAgICAgICdGb29U
ZXN0Llh5eicsCisKKyAgICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCisgICAgICAgICdCYXJUZXN0
LlRlc3RUd28nLAorICAgICAgICAnQmFyVGVzdC5UZXN0VGhyZWUnLAorICAgICAgICBdICsgREVB
VEhfVEVTVFMgKyBQQVJBTV9URVNUUykKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdCYXJUZXN0
LiotQmFyVGVzdC5UZXN0T25lJywgWworICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKKyAgICAg
ICAgJ0JhclRlc3QuVGVzdFRocmVlJywKKyAgICAgICAgXSkKKworICAgICMgVGVzdHMgd2l0aG91
dCBsZWFkaW5nICcqJy4KKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnLUZvb1Rlc3QuQWJjOkZvb1Rl
c3QuWHl6OkJhelRlc3QuKicsIFsKKyAgICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCisgICAgICAg
ICdCYXJUZXN0LlRlc3RUd28nLAorICAgICAgICAnQmFyVGVzdC5UZXN0VGhyZWUnLAorICAgICAg
ICBdICsgREVBVEhfVEVTVFMgKyBQQVJBTV9URVNUUykKKworICAgICMgVmFsdWUgcGFyYW1ldGVy
aXplZCB0ZXN0cy4KKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi8qJywgUEFSQU1fVEVTVFMpCisK
KyAgICAjIFZhbHVlIHBhcmFtZXRlcml6ZWQgdGVzdHMgZmlsdGVyaW5nIGJ5IHRoZSBzZXF1ZW5j
ZSBuYW1lLgorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdTZXFQLyonLCBbCisgICAgICAgICdTZXFQ
L1BhcmFtVGVzdC5UZXN0WC8wJywKKyAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzEnLAor
ICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMCcsCisgICAgICAgICdTZXFQL1BhcmFtVGVz
dC5UZXN0WS8xJywKKyAgICAgICAgXSkKKworICAgICMgVmFsdWUgcGFyYW1ldGVyaXplZCB0ZXN0
cyBmaWx0ZXJpbmcgYnkgdGhlIHRlc3QgbmFtZS4KKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi8w
JywgWworICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMCcsCisgICAgICAgICdTZXFQL1Bh
cmFtVGVzdC5UZXN0WS8wJywKKyAgICAgICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RYLzAnLAorICAg
ICAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFkvMCcsCisgICAgICAgIF0pCisKKyAgZGVmIHRlc3RG
bGFnT3ZlcnJpZGVzRW52VmFyKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgdGhlIGZpbHRlciBm
bGFnIG92ZXJyaWRlcyB0aGUgZmlsdGVyaW5nIGVudi4gdmFyaWFibGUuIiIiCisKKyAgICBTZXRF
bnZWYXIoRklMVEVSX0VOVl9WQVIsICdGb28qJykKKyAgICBhcmdzID0gWyctLSVzPSVzJyAlIChG
SUxURVJfRkxBRywgJypPbmUnKV0KKyAgICB0ZXN0c19ydW4gPSBSdW5BbmRFeHRyYWN0VGVzdExp
c3QoYXJncylbMF0KKyAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIE5vbmUpCisKKyAgICBz
ZWxmLkFzc2VydFNldEVxdWFsKHRlc3RzX3J1biwgWydCYXJUZXN0LlRlc3RPbmUnLCAnQmF6VGVz
dC5UZXN0T25lJ10pCisKKyAgZGVmIHRlc3RTaGFyZFN0YXR1c0ZpbGVJc0NyZWF0ZWQoc2VsZik6
CisgICAgIiIiVGVzdHMgdGhhdCB0aGUgc2hhcmQgZmlsZSBpcyBjcmVhdGVkIGlmIHNwZWNpZmll
ZCBpbiB0aGUgZW52aXJvbm1lbnQuIiIiCisKKyAgICBzaGFyZF9zdGF0dXNfZmlsZSA9IG9zLnBh
dGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnc2hhcmRfc3RhdHVzX2ZpbGUnKQorICAgIHNlbGYuYXNzZXJ0
Xyhub3Qgb3MucGF0aC5leGlzdHMoc2hhcmRfc3RhdHVzX2ZpbGUpKQorCisgICAgZXh0cmFfZW52
ID0ge1NIQVJEX1NUQVRVU19GSUxFX0VOVl9WQVI6IHNoYXJkX3N0YXR1c19maWxlfQorICAgIHRy
eToKKyAgICAgIEludm9rZVdpdGhNb2RpZmllZEVudihleHRyYV9lbnYsIFJ1bkFuZFJldHVybk91
dHB1dCkKKyAgICBmaW5hbGx5OgorICAgICAgc2VsZi5hc3NlcnRfKG9zLnBhdGguZXhpc3RzKHNo
YXJkX3N0YXR1c19maWxlKSkKKyAgICAgIG9zLnJlbW92ZShzaGFyZF9zdGF0dXNfZmlsZSkKKwor
ICBkZWYgdGVzdFNoYXJkU3RhdHVzRmlsZUlzQ3JlYXRlZFdpdGhMaXN0VGVzdHMoc2VsZik6Cisg
ICAgIiIiVGVzdHMgdGhhdCB0aGUgc2hhcmQgZmlsZSBpcyBjcmVhdGVkIHdpdGggdGhlICJsaXN0
X3Rlc3RzIiBmbGFnLiIiIgorCisgICAgc2hhcmRfc3RhdHVzX2ZpbGUgPSBvcy5wYXRoLmpvaW4o
Z3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3NoYXJkX3N0YXR1c19maWxlMicpCisgICAgc2VsZi5hc3NlcnRfKG5vdCBv
cy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkpCisKKyAgICBleHRyYV9lbnYgPSB7U0hB
UkRfU1RBVFVTX0ZJTEVfRU5WX1ZBUjogc2hhcmRfc3RhdHVzX2ZpbGV9CisgICAgdHJ5OgorICAg
ICAgb3V0cHV0ID0gSW52b2tlV2l0aE1vZGlmaWVkRW52KGV4dHJhX2VudiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSdW5BbmRSZXR1cm5PdXRwdXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgW0xJU1RfVEVTVFNfRkxBR10pCisgICAgZmluYWxs
eToKKyAgICAgICMgVGhpcyBhc3NlcnRpb24gZW5zdXJlcyB0aGF0IEdvb2dsZSBUZXN0IGVudW1l
cmF0ZWQgdGhlIHRlc3RzIGFzCisgICAgICAjIG9wcG9zZWQgdG8gcnVubmluZyB0aGVtLgorICAg
ICAgc2VsZi5hc3NlcnRfKCdbPT09PT09PT09PV0nIG5vdCBpbiBvdXRwdXQsCisgICAgICAgICAg
ICAgICAgICAgJ1VuZXhwZWN0ZWQgb3V0cHV0IGR1cmluZyB0ZXN0IGVudW1lcmF0aW9uLlxuJwor
ICAgICAgICAgICAgICAgICAgICdQbGVhc2UgZW5zdXJlIHRoYXQgTElTVF9URVNUU19GTEFHIGlz
IGFzc2lnbmVkIHRoZVxuJworICAgICAgICAgICAgICAgICAgICdjb3JyZWN0IGZsYWcgdmFsdWUg
Zm9yIGxpc3RpbmcgR29vZ2xlIFRlc3QgdGVzdHMuJykKKworICAgICAgc2VsZi5hc3NlcnRfKG9z
LnBhdGguZXhpc3RzKHNoYXJkX3N0YXR1c19maWxlKSkKKyAgICAgIG9zLnJlbW92ZShzaGFyZF9z
dGF0dXNfZmlsZSkKKworICBpZiBTVVBQT1JUU19ERUFUSF9URVNUUzoKKyAgICBkZWYgdGVzdFNo
YXJkaW5nV29ya3NXaXRoRGVhdGhUZXN0cyhzZWxmKToKKyAgICAgICIiIlRlc3RzIGludGVncmF0
aW9uIHdpdGggZGVhdGggdGVzdHMgYW5kIHNoYXJkaW5nLiIiIgorCisgICAgICBndGVzdF9maWx0
ZXIgPSAnSGFzRGVhdGhUZXN0Lio6U2VxUC8qJworICAgICAgZXhwZWN0ZWRfdGVzdHMgPSBbCisg
ICAgICAgICAgJ0hhc0RlYXRoVGVzdC5UZXN0MScsCisgICAgICAgICAgJ0hhc0RlYXRoVGVzdC5U
ZXN0MicsCisKKyAgICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMCcsCisgICAgICAgICAg
J1NlcVAvUGFyYW1UZXN0LlRlc3RYLzEnLAorICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0
WS8wJywKKyAgICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMScsCisgICAgICAgICAgXQor
CisgICAgICBmb3IgZmxhZyBpbiBbJy0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZT10aHJlYWRzYWZl
JywKKyAgICAgICAgICAgICAgICAgICAnLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlPWZhc3QnXToK
KyAgICAgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoZ3Rlc3RfZmlsdGVyLCAzLCBl
eHBlY3RlZF90ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hl
Y2tfZXhpdF8wPVRydWUsIGFyZ3M9W2ZsYWddKQorICAgICAgICBzZWxmLlJ1bkFuZFZlcmlmeVdp
dGhTaGFyZGluZyhndGVzdF9maWx0ZXIsIDUsIGV4cGVjdGVkX3Rlc3RzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19leGl0XzA9VHJ1ZSwgYXJncz1bZmxhZ10p
CisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZmls
dGVyLXVuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVz
dC1maWx0ZXItdW5pdHRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzMzViNjAzOTFkMWQ0NjhhNDExNjFi
MzhjMTRlY2NiZjFkMTM4MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0Xy5jYwpAQCAtMCwwICsxLDEzNyBA
QAorLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisv
LyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIFVu
aXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QgdGVzdCBmaWx0ZXJzLgorLy8KKy8vIEEgdXNlciBjYW4g
c3BlY2lmeSB3aGljaCB0ZXN0KHMpIGluIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSB0byBydW4gdmlh
CisvLyBlaXRoZXIgdGhlIEdURVNUX0ZJTFRFUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUg
LS1ndGVzdF9maWx0ZXIKKy8vIGZsYWcuICBUaGlzIGlzIHVzZWQgZm9yIHRlc3Rpbmcgc3VjaCBm
dW5jdGlvbmFsaXR5LgorLy8KKy8vIFRoZSBwcm9ncmFtIHdpbGwgYmUgaW52b2tlZCBmcm9tIGEg
UHl0aG9uIHVuaXQgdGVzdC4gIERvbid0IHJ1biBpdAorLy8gZGlyZWN0bHkuCisKKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCisvLyBUZXN0IGNhc2UgRm9vVGVzdC4K
KworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK1RFU1RfRihG
b29UZXN0LCBBYmMpIHsKK30KKworVEVTVF9GKEZvb1Rlc3QsIFh5eikgeworICBGQUlMKCkgPDwg
IkV4cGVjdGVkIGZhaWx1cmUuIjsKK30KKworLy8gVGVzdCBjYXNlIEJhclRlc3QuCisKK1RFU1Qo
QmFyVGVzdCwgVGVzdE9uZSkgeworfQorCitURVNUKEJhclRlc3QsIFRlc3RUd28pIHsKK30KKwor
VEVTVChCYXJUZXN0LCBUZXN0VGhyZWUpIHsKK30KKworVEVTVChCYXJUZXN0LCBESVNBQkxFRF9U
ZXN0Rm91cikgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKK30KKworVEVTVChC
YXJUZXN0LCBESVNBQkxFRF9UZXN0Rml2ZSkgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1
cmUuIjsKK30KKworLy8gVGVzdCBjYXNlIEJhelRlc3QuCisKK1RFU1QoQmF6VGVzdCwgVGVzdE9u
ZSkgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKK30KKworVEVTVChCYXpUZXN0
LCBUZXN0QSkgeworfQorCitURVNUKEJhelRlc3QsIFRlc3RCKSB7Cit9CisKK1RFU1QoQmF6VGVz
dCwgRElTQUJMRURfVGVzdEMpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9
CisKKy8vIFRlc3QgY2FzZSBIYXNEZWF0aFRlc3QKKworVEVTVChIYXNEZWF0aFRlc3QsIFRlc3Qx
KSB7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoZXhpdCgxKSwgIi4qIik7Cit9CisKKy8v
IFdlIG5lZWQgYXQgbGVhc3QgdHdvIGRlYXRoIHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBh
bGwgZGVhdGggdGVzdHMKKy8vIGFyZW4ndCBvbiB0aGUgZmlyc3Qgc2hhcmQuCitURVNUKEhhc0Rl
YXRoVGVzdCwgVGVzdDIpIHsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChleGl0KDEpLCAi
LioiKTsKK30KKworLy8gVGVzdCBjYXNlIEZvb2JhclRlc3QKKworVEVTVChESVNBQkxFRF9Gb29i
YXJUZXN0LCBUZXN0MSkgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKK30KKwor
VEVTVChESVNBQkxFRF9Gb29iYXJUZXN0LCBESVNBQkxFRF9UZXN0MikgeworICBGQUlMKCkgPDwg
IkV4cGVjdGVkIGZhaWx1cmUuIjsKK30KKworLy8gVGVzdCBjYXNlIEZvb2JhcmJhelRlc3QKKwor
VEVTVChESVNBQkxFRF9Gb29iYXJiYXpUZXN0LCBUZXN0QSkgeworICBGQUlMKCkgPDwgIkV4cGVj
dGVkIGZhaWx1cmUuIjsKK30KKworY2xhc3MgUGFyYW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3RXaXRoUGFyYW08aW50PiB7Cit9OworCitURVNUX1AoUGFyYW1UZXN0LCBUZXN0WCkgeworfQor
CitURVNUX1AoUGFyYW1UZXN0LCBUZXN0WSkgeworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0Vf
UChTZXFQLCBQYXJhbVRlc3QsIHRlc3Rpbmc6OlZhbHVlcygxLCAyKSk7CitJTlNUQU5USUFURV9U
RVNUX0NBU0VfUChTZXFRLCBQYXJhbVRlc3QsIHRlc3Rpbmc6OlZhbHVlcyg1LCA2KSk7CisKK30g
IC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgOjp0
ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgcmV0dXJuIFJVTl9BTExf
VEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC1qc29uLW91dGZpbGVzLXRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3QtanNvbi1vdXRmaWxlcy10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5OWJlNDhl
OGFjMzY1MDllZDMyZWEyZmI4ZTRmYTFlYTdmYzgzNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtanNvbi1vdXRmaWxlcy10ZXN0LnB5
CkBAIC0wLDAgKzEsMTYyIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IDIw
MTgsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisj
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisiIiJVbml0IHRlc3QgZm9yIHRoZSBndGVzdF9qc29uX291dHB1dCBtb2R1bGUuIiIiCisK
K2ltcG9ydCBqc29uCitpbXBvcnQgb3MKK2ltcG9ydCBndGVzdF9qc29uX3Rlc3RfdXRpbHMKK2lt
cG9ydCBndGVzdF90ZXN0X3V0aWxzCisKK0dURVNUX09VVFBVVF9TVUJESVIgPSAnanNvbl9vdXRm
aWxlcycKK0dURVNUX09VVFBVVF8xX1RFU1QgPSAnZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfJwor
R1RFU1RfT1VUUFVUXzJfVEVTVCA9ICdndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8nCisKK0VYUEVD
VEVEXzEgPSB7CisgICAgdSd0ZXN0cyc6IDEsCisgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgdSdk
aXNhYmxlZCc6IDAsCisgICAgdSdlcnJvcnMnOiAwLAorICAgIHUndGltZSc6IHUnKicsCisgICAg
dSd0aW1lc3RhbXAnOiB1JyonLAorICAgIHUnbmFtZSc6IHUnQWxsVGVzdHMnLAorICAgIHUndGVz
dHN1aXRlcyc6IFt7CisgICAgICAgIHUnbmFtZSc6IHUnUHJvcGVydHlPbmUnLAorICAgICAgICB1
J3Rlc3RzJzogMSwKKyAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgIHUnZGlzYWJsZWQn
OiAwLAorICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgIHUndGltZSc6IHUnKicsCisgICAg
ICAgIHUndGVzdHN1aXRlJzogW3sKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnVGVzdFNvbWVQcm9w
ZXJ0aWVzJywKKyAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgdSd0
aW1lJzogdScqJywKKyAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdQcm9wZXJ0eU9uZScsCisg
ICAgICAgICAgICB1J1NldFVwUHJvcCc6IHUnMScsCisgICAgICAgICAgICB1J1Rlc3RTb21lUHJv
cGVydHknOiB1JzEnLAorICAgICAgICAgICAgdSdUZWFyRG93blByb3AnOiB1JzEnLAorICAgICAg
ICB9XSwKKyAgICB9XSwKK30KKworRVhQRUNURURfMiA9IHsKKyAgICB1J3Rlc3RzJzogMSwKKyAg
ICB1J2ZhaWx1cmVzJzogMCwKKyAgICB1J2Rpc2FibGVkJzogMCwKKyAgICB1J2Vycm9ycyc6IDAs
CisgICAgdSd0aW1lJzogdScqJywKKyAgICB1J3RpbWVzdGFtcCc6IHUnKicsCisgICAgdSduYW1l
JzogdSdBbGxUZXN0cycsCisgICAgdSd0ZXN0c3VpdGVzJzogW3sKKyAgICAgICAgdSduYW1lJzog
dSdQcm9wZXJ0eVR3bycsCisgICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICB1J2ZhaWx1cmVz
JzogMCwKKyAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgIHUnZXJyb3JzJzogMCwKKyAg
ICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgdSd0ZXN0c3VpdGUnOiBbeworICAgICAgICAg
ICAgdSduYW1lJzogdSdUZXN0U29tZVByb3BlcnRpZXMnLAorICAgICAgICAgICAgdSdzdGF0dXMn
OiB1J1JVTicsCisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSdjbGFz
c25hbWUnOiB1J1Byb3BlcnR5VHdvJywKKyAgICAgICAgICAgIHUnU2V0VXBQcm9wJzogdScyJywK
KyAgICAgICAgICAgIHUnVGVzdFNvbWVQcm9wZXJ0eSc6IHUnMicsCisgICAgICAgICAgICB1J1Rl
YXJEb3duUHJvcCc6IHUnMicsCisgICAgICAgIH1dLAorICAgIH1dLAorfQorCisKK2NsYXNzIEdU
ZXN0SnNvbk91dEZpbGVzVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgIiIiVW5p
dCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIEpTT04gb3V0cHV0IGZ1bmN0aW9uYWxpdHkuIiIiCisK
KyAgZGVmIHNldFVwKHNlbGYpOgorICAgICMgV2Ugd2FudCB0aGUgdHJhaWxpbmcgJy8nIHRoYXQg
dGhlIGxhc3QgIiIgcHJvdmlkZXMgaW4gb3MucGF0aC5qb2luLCBmb3IKKyAgICAjIHRlbGxpbmcg
R29vZ2xlIFRlc3QgdG8gY3JlYXRlIGFuIG91dHB1dCBkaXJlY3RvcnkgaW5zdGVhZCBvZiBhIHNp
bmdsZSBmaWxlCisgICAgIyBmb3IgeG1sIG91dHB1dC4KKyAgICBzZWxmLm91dHB1dF9kaXJfID0g
b3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfT1VUUFVUX1NVQkRJUiwgJycpCisgICAgc2Vs
Zi5EZWxldGVGaWxlc0FuZERpcigpCisKKyAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgIHNlbGYu
RGVsZXRlRmlsZXNBbmREaXIoKQorCisgIGRlZiBEZWxldGVGaWxlc0FuZERpcihzZWxmKToKKyAg
ICB0cnk6CisgICAgICBvcy5yZW1vdmUob3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2Rpcl8sIEdU
RVNUX09VVFBVVF8xX1RFU1QgKyAnLmpzb24nKSkKKyAgICBleGNlcHQgb3MuZXJyb3I6CisgICAg
ICBwYXNzCisgICAgdHJ5OgorICAgICAgb3MucmVtb3ZlKG9zLnBhdGguam9pbihzZWxmLm91dHB1
dF9kaXJfLCBHVEVTVF9PVVRQVVRfMl9URVNUICsgJy5qc29uJykpCisgICAgZXhjZXB0IG9zLmVy
cm9yOgorICAgICAgcGFzcworICAgIHRyeToKKyAgICAgIG9zLnJtZGlyKHNlbGYub3V0cHV0X2Rp
cl8pCisgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgcGFzcworCisgIGRlZiB0ZXN0T3V0Zmls
ZTEoc2VsZik6CisgICAgc2VsZi5fVGVzdE91dEZpbGUoR1RFU1RfT1VUUFVUXzFfVEVTVCwgRVhQ
RUNURURfMSkKKworICBkZWYgdGVzdE91dGZpbGUyKHNlbGYpOgorICAgIHNlbGYuX1Rlc3RPdXRG
aWxlKEdURVNUX09VVFBVVF8yX1RFU1QsIEVYUEVDVEVEXzIpCisKKyAgZGVmIF9UZXN0T3V0Rmls
ZShzZWxmLCB0ZXN0X25hbWUsIGV4cGVjdGVkKToKKyAgICBndGVzdF9wcm9nX3BhdGggPSBndGVz
dF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCh0ZXN0X25hbWUpCisgICAgY29tbWFu
ZCA9IFtndGVzdF9wcm9nX3BhdGgsICctLWd0ZXN0X291dHB1dD1qc29uOiVzJyAlIHNlbGYub3V0
cHV0X2Rpcl9dCisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2luZ19kaXI9Z3Rlc3RfdGVz
dF91dGlscy5HZXRUZW1wRGlyKCkpCisgICAgc2VsZi5hc3NlcnRfKHAuZXhpdGVkKQorICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKDAsIHAuZXhpdF9jb2RlKQorCisgICAgIyBGSVhNRTogbGlidG9vbCBj
YXVzZXMgdGhlIGJ1aWx0IHRlc3QgYmluYXJ5IHRvIGJlCisgICAgIyAgIG5hbWVkIGx0LWd0ZXN0
X3htbF9vdXRmaWxlc190ZXN0XyBpbnN0ZWFkIG9mCisgICAgIyAgIGd0ZXN0X3htbF9vdXRmaWxl
c190ZXN0Xy4gIFRvIGFjY291bnQgZm9yIHRoaXMgcG9zc2liaWxpdHksIHdlCisgICAgIyAgIGFs
bG93IGJvdGggbmFtZXMgaW4gdGhlIGZvbGxvd2luZyBjb2RlLiAgV2Ugc2hvdWxkIHJlbW92ZSB0
aGlzCisgICAgIyAgIHdoZW4gbGlidG9vbCByZXBsYWNlbWVudCB0b29sIGlzIHJlYWR5LgorICAg
IG91dHB1dF9maWxlX25hbWUxID0gdGVzdF9uYW1lICsgJy5qc29uJworICAgIG91dHB1dF9maWxl
MSA9IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXJfLCBvdXRwdXRfZmlsZV9uYW1lMSkKKyAg
ICBvdXRwdXRfZmlsZV9uYW1lMiA9ICdsdC0nICsgb3V0cHV0X2ZpbGVfbmFtZTEKKyAgICBvdXRw
dXRfZmlsZTIgPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGlyXywgb3V0cHV0X2ZpbGVfbmFt
ZTIpCisgICAgc2VsZi5hc3NlcnRfKG9zLnBhdGguaXNmaWxlKG91dHB1dF9maWxlMSkgb3Igb3Mu
cGF0aC5pc2ZpbGUob3V0cHV0X2ZpbGUyKSwKKyAgICAgICAgICAgICAgICAgb3V0cHV0X2ZpbGUx
KQorCisgICAgaWYgb3MucGF0aC5pc2ZpbGUob3V0cHV0X2ZpbGUxKToKKyAgICAgIHdpdGggb3Bl
bihvdXRwdXRfZmlsZTEpIGFzIGY6CisgICAgICAgIGFjdHVhbCA9IGpzb24ubG9hZChmKQorICAg
IGVsc2U6CisgICAgICB3aXRoIG9wZW4ob3V0cHV0X2ZpbGUyKSBhcyBmOgorICAgICAgICBhY3R1
YWwgPSBqc29uLmxvYWQoZikKKyAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBndGVzdF9q
c29uX3Rlc3RfdXRpbHMubm9ybWFsaXplKGFjdHVhbCkpCisKKworaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKKyAgb3MuZW52aXJvblsnR1RFU1RfU1RBQ0tfVFJBQ0VfREVQVEgnXSA9ICcwJwor
ICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWpzb24tb3V0cHV0LXVuaXR0ZXN0LnB5IGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWpzb24tb3V0cHV0LXVuaXR0ZXN0LnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU3ZGNkNWZhMWM0NjM5ZjE1MmZiNTRlNTBmYjljMDU5OGEwZTQ2YTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtanNv
bi1vdXRwdXQtdW5pdHRlc3QucHkKQEAgLTAsMCArMSw2MTggQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorIyBDb3B5cmlnaHQgMjAxOCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVzdCBmb3IgdGhlIGd0ZXN0X2pzb25f
b3V0cHV0IG1vZHVsZS4iIiIKKworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgZXJybm8KK2ltcG9y
dCBqc29uCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworCitpbXBvcnQgZ3Rlc3Rf
anNvbl90ZXN0X3V0aWxzCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitHVEVTVF9GSUxURVJf
RkxBRyA9ICctLWd0ZXN0X2ZpbHRlcicKK0dURVNUX0xJU1RfVEVTVFNfRkxBRyA9ICctLWd0ZXN0
X2xpc3RfdGVzdHMnCitHVEVTVF9PVVRQVVRfRkxBRyA9ICctLWd0ZXN0X291dHB1dCcKK0dURVNU
X0RFRkFVTFRfT1VUUFVUX0ZJTEUgPSAndGVzdF9kZXRhaWwuanNvbicKK0dURVNUX1BST0dSQU1f
TkFNRSA9ICdndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0XycKKworIyBUaGUgZmxhZyBpbmRpY2F0
aW5nIHN0YWNrdHJhY2VzIGFyZSBub3Qgc3VwcG9ydGVkCitOT19TVEFDS1RSQUNFX1NVUFBPUlRf
RkxBRyA9ICctLW5vX3N0YWNrdHJhY2Vfc3VwcG9ydCcKKworU1VQUE9SVFNfU1RBQ0tfVFJBQ0VT
ID0gTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZMQUcgbm90IGluIHN5cy5hcmd2CisKK2lmIFNVUFBP
UlRTX1NUQUNLX1RSQUNFUzoKKyAgU1RBQ0tfVFJBQ0VfVEVNUExBVEUgPSAnXG5TdGFjayB0cmFj
ZTpcbionCitlbHNlOgorICBTVEFDS19UUkFDRV9URU1QTEFURSA9ICcnCisKK0VYUEVDVEVEX05P
Tl9FTVBUWSA9IHsKKyAgICB1J3Rlc3RzJzogMjMsCisgICAgdSdmYWlsdXJlcyc6IDQsCisgICAg
dSdkaXNhYmxlZCc6IDIsCisgICAgdSdlcnJvcnMnOiAwLAorICAgIHUndGltZXN0YW1wJzogdScq
JywKKyAgICB1J3RpbWUnOiB1JyonLAorICAgIHUnYWRfaG9jX3Byb3BlcnR5JzogdSc0MicsCisg
ICAgdSduYW1lJzogdSdBbGxUZXN0cycsCisgICAgdSd0ZXN0c3VpdGVzJzogWworICAgICAgICB7
CisgICAgICAgICAgICB1J25hbWUnOiB1J1N1Y2Nlc3NmdWxUZXN0JywKKyAgICAgICAgICAgIHUn
dGVzdHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgICAgICB1J2Rp
c2FibGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGlt
ZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnU3VjY2VlZHMnLAorICAgICAgICAgICAg
ICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzog
dScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1N1Y2Nlc3NmdWxUZXN0
JworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICAgdSduYW1lJzogdSdGYWlsZWRUZXN0JywKKyAgICAgICAgICAgIHUndGVz
dHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDEsCisgICAgICAgICAgICB1J2Rpc2Fi
bGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6
IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnRmFpbHMnLAorICAgICAgICAgICAgICAgICAg
ICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywK
KyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J0ZhaWxlZFRlc3QnLAorICAgICAg
ICAgICAgICAgICAgICB1J2ZhaWx1cmVzJzogWworICAgICAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnZmFpbHVyZSc6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHUnZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KlxuJworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNl
IHZhbHVlczpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdScgIDFcbiAgMicg
KyBTVEFDS19UUkFDRV9URU1QTEFURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J3R5
cGUnOiB1JycKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICAgdSduYW1lJzogdSdEaXNhYmxlZFRlc3QnLAorICAgICAgICAgICAgdSd0
ZXN0cyc6IDEsCisgICAgICAgICAgICB1J2ZhaWx1cmVzJzogMCwKKyAgICAgICAgICAgIHUnZGlz
YWJsZWQnOiAxLAorICAgICAgICAgICAgdSdlcnJvcnMnOiAwLAorICAgICAgICAgICAgdSd0aW1l
JzogdScqJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRlJzogWworICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdESVNBQkxFRF90ZXN0X25vdF9ydW4nLAor
ICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnTk9UUlVOJywKKyAgICAgICAgICAgICAg
ICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1
J0Rpc2FibGVkVGVzdCcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnTWl4ZWRSZXN1bHRUZXN0JywK
KyAgICAgICAgICAgIHUndGVzdHMnOiAzLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDEsCisg
ICAgICAgICAgICB1J2Rpc2FibGVkJzogMSwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAg
ICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnU3VjY2VlZHMn
LAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAg
ICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1
J01peGVkUmVzdWx0VGVzdCcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdGYWlscycsCisgICAgICAgICAgICAgICAg
ICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1Jyon
LAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnTWl4ZWRSZXN1bHRUZXN0JywK
KyAgICAgICAgICAgICAgICAgICAgdSdmYWlsdXJlcyc6IFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2ZhaWx1cmUnOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1J2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOipc
bicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdFeHBlY3RlZCBlcXVhbGl0eSBv
ZiB0aGVzZSB2YWx1ZXM6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnICAx
XG4gIDInICsgU1RBQ0tfVFJBQ0VfVEVNUExBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdSd0eXBlJzogdScnCisgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnZmFpbHVyZSc6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnZ3Rlc3RfeG1sX291dHB1dF91bml0dGVz
dF8uY2M6KlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J0V4cGVjdGVkIGVx
dWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdScgIDJcbiAgMycgKyBTVEFDS19UUkFDRV9URU1QTEFURSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1J3R5cGUnOiB1JycKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0RJU0FCTEVEX3Rlc3QnLAorICAgICAgICAg
ICAgICAgICAgICB1J3N0YXR1cyc6IHUnTk9UUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0
aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J01peGVkUmVz
dWx0VGVzdCcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnWG1sUXVvdGluZ1Rlc3QnLAorICAgICAg
ICAgICAgdSd0ZXN0cyc6IDEsCisgICAgICAgICAgICB1J2ZhaWx1cmVzJzogMSwKKyAgICAgICAg
ICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAgICAgICAgdSdlcnJvcnMnOiAwLAorICAgICAgICAg
ICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRlJzogWworICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdPdXRwdXRzQ0RhdGEnLAor
ICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAg
ICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1ht
bFF1b3RpbmdUZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdmYWlsdXJlcyc6IFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2ZhaWx1
cmUnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2d0ZXN0X3htbF9vdXRwdXRf
dW5pdHRlc3RfLmNjOipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdGYWls
ZWRcblhNTCBvdXRwdXQ6IDw/eG1sIGVuY29kaW5nPSJ1dGYtOCI+JworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1Jzx0b3A+PCFbQ0RBVEFbY2RhdGEgdGV4dF1dPjwvdG9wPicgKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFDS19UUkFDRV9URU1QTEFURSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1J3R5cGUnOiB1JycKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdJ
bnZhbGlkQ2hhcmFjdGVyc1Rlc3QnLAorICAgICAgICAgICAgdSd0ZXN0cyc6IDEsCisgICAgICAg
ICAgICB1J2ZhaWx1cmVzJzogMSwKKyAgICAgICAgICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAg
ICAgICAgdSdlcnJvcnMnOiAwLAorICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAg
ICAgIHUndGVzdHN1aXRlJzogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgdSduYW1lJzogdSdJbnZhbGlkQ2hhcmFjdGVyc0luTWVzc2FnZScsCisgICAgICAgICAgICAg
ICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1
JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnSW52YWxpZENoYXJhY3Rl
cnNUZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdmYWlsdXJlcyc6IFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2ZhaWx1cmUnOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRl
c3RfLmNjOipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdGYWlsZWRcbklu
dmFsaWQgY2hhcmFjdGVycyBpbiBicmFja2V0cycKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdScgW1x4MDFceDAyXScgKyBTVEFDS19UUkFDRV9URU1QTEFURSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1J3R5cGUnOiB1JycKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0K
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdQcm9wZXJ0eVJl
Y29yZGluZ1Rlc3QnLAorICAgICAgICAgICAgdSd0ZXN0cyc6IDQsCisgICAgICAgICAgICB1J2Zh
aWx1cmVzJzogMCwKKyAgICAgICAgICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAgICAgICAgdSdl
cnJvcnMnOiAwLAorICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgIHUnU2V0
VXBUZXN0Q2FzZSc6IHUneWVzJywKKyAgICAgICAgICAgIHUnVGVhckRvd25UZXN0Q2FzZSc6IHUn
YXllJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRlJzogWworICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdPbmVQcm9wZXJ0eScsCisgICAgICAgICAgICAg
ICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1
JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnUHJvcGVydHlSZWNvcmRp
bmdUZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdrZXlfMSc6IHUnMScKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzog
dSdJbnRWYWx1ZWRQcm9wZXJ0eScsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdS
VU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAg
ICAgICB1J2NsYXNzbmFtZSc6IHUnUHJvcGVydHlSZWNvcmRpbmdUZXN0JywKKyAgICAgICAgICAg
ICAgICAgICAgdSdrZXlfaW50JzogdScxJworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J1RocmVlUHJvcGVydGllcycs
CisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAg
ICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUn
UHJvcGVydHlSZWNvcmRpbmdUZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdrZXlfMSc6IHUn
MScsCisgICAgICAgICAgICAgICAgICAgIHUna2V5XzInOiB1JzInLAorICAgICAgICAgICAgICAg
ICAgICB1J2tleV8zJzogdSczJworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J1R3b1ZhbHVlc0Zvck9uZUtleVVzZXNM
YXN0VmFsdWUnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAg
ICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFz
c25hbWUnOiB1J1Byb3BlcnR5UmVjb3JkaW5nVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUn
a2V5XzEnOiB1JzInCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1J05vRml4dHVyZVRlc3QnLAorICAg
ICAgICAgICAgdSd0ZXN0cyc6IDMsCisgICAgICAgICAgICB1J2ZhaWx1cmVzJzogMCwKKyAgICAg
ICAgICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAgICAgICAgdSdlcnJvcnMnOiAwLAorICAgICAg
ICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRlJzogWworICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdSZWNvcmRQcm9wZXJ0
eScsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAg
ICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6
IHUnTm9GaXh0dXJlVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUna2V5JzogdScxJworICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1
J25hbWUnOiB1J0V4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZEludFZhbHVlZFByb3BlcnR5
JywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAg
ICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzog
dSdOb0ZpeHR1cmVUZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdrZXlfZm9yX3V0aWxpdHlf
aW50JzogdScxJworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICB1J25hbWUnOgorICAgICAgICAgICAgICAgICAgICAgICAgdSdFeHRlcm5h
bFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRTdHJpbmdWYWx1ZWRQcm9wZXJ0eScsCisgICAgICAgICAg
ICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUn
OiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnTm9GaXh0dXJlVGVz
dCcsCisgICAgICAgICAgICAgICAgICAgIHUna2V5X2Zvcl91dGlsaXR5X3N0cmluZyc6IHUnMScK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIHUnbmFtZSc6IHUnVHlwZWRUZXN0LzAnLAorICAgICAgICAgICAgdSd0ZXN0
cyc6IDEsCisgICAgICAgICAgICB1J2ZhaWx1cmVzJzogMCwKKyAgICAgICAgICAgIHUnZGlzYWJs
ZWQnOiAwLAorICAgICAgICAgICAgdSdlcnJvcnMnOiAwLAorICAgICAgICAgICAgdSd0aW1lJzog
dScqJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRlJzogWworICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdIYXNUeXBlUGFyYW1BdHRyaWJ1dGUnLAorICAg
ICAgICAgICAgICAgICAgICB1J3R5cGVfcGFyYW0nOiB1J2ludCcsCisgICAgICAgICAgICAgICAg
ICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1Jyon
LAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnVHlwZWRUZXN0LzAnCisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICB1J25hbWUnOiB1J1R5cGVkVGVzdC8xJywKKyAgICAgICAgICAgIHUndGVzdHMnOiAx
LAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzog
MCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKics
CisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHUnbmFtZSc6IHUnSGFzVHlwZVBhcmFtQXR0cmlidXRlJywKKyAgICAgICAg
ICAgICAgICAgICAgdSd0eXBlX3BhcmFtJzogdSdsb25nJywKKyAgICAgICAgICAgICAgICAgICAg
dSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisg
ICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdUeXBlZFRlc3QvMScKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHUnbmFtZSc6IHUnU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMCcsCisgICAg
ICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAwLAorICAgICAg
ICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAg
ICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBbCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0hhc1R5cGVQYXJhbUF0
dHJpYnV0ZScsCisgICAgICAgICAgICAgICAgICAgIHUndHlwZV9wYXJhbSc6IHUnaW50JywKKyAg
ICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAg
IHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdTaW5n
bGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8wJworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdT
aW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8xJywKKyAgICAgICAgICAgIHUndGVzdHMn
OiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVk
JzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUn
KicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnSGFzVHlwZVBhcmFtQXR0cmlidXRlJywKKyAgICAg
ICAgICAgICAgICAgICAgdSd0eXBlX3BhcmFtJzogdSdsb25nJywKKyAgICAgICAgICAgICAgICAg
ICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKics
CisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdTaW5nbGUvVHlwZVBhcmFtZXRl
cml6ZWRUZXN0Q2FzZS8xJworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAg
ICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdTaW5nbGUvVmFsdWVQYXJh
bVRlc3QnLAorICAgICAgICAgICAgdSd0ZXN0cyc6IDQsCisgICAgICAgICAgICB1J2ZhaWx1cmVz
JzogMCwKKyAgICAgICAgICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAgICAgICAgdSdlcnJvcnMn
OiAwLAorICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRl
JzogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdI
YXNWYWx1ZVBhcmFtQXR0cmlidXRlLzAnLAorICAgICAgICAgICAgICAgICAgICB1J3ZhbHVlX3Bh
cmFtJzogdSczMycsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAg
ICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2Ns
YXNzbmFtZSc6IHUnU2luZ2xlL1ZhbHVlUGFyYW1UZXN0JworICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0hhc1ZhbHVl
UGFyYW1BdHRyaWJ1dGUvMScsCisgICAgICAgICAgICAgICAgICAgIHUndmFsdWVfcGFyYW0nOiB1
JzQyJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAg
ICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1l
JzogdSdTaW5nbGUvVmFsdWVQYXJhbVRlc3QnCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnQW5vdGhlclRlc3RUaGF0
SGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8wJywKKyAgICAgICAgICAgICAgICAgICAgdSd2YWx1ZV9w
YXJhbSc6IHUnMzMnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAg
ICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdj
bGFzc25hbWUnOiB1J1NpbmdsZS9WYWx1ZVBhcmFtVGVzdCcKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdBbm90aGVy
VGVzdFRoYXRIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzEnLAorICAgICAgICAgICAgICAgICAgICB1
J3ZhbHVlX3BhcmFtJzogdSc0MicsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdS
VU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAg
ICAgICB1J2NsYXNzbmFtZSc6IHUnU2luZ2xlL1ZhbHVlUGFyYW1UZXN0JworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0KK30KKworRVhQRUNURURfRklM
VEVSRUQgPSB7CisgICAgdSd0ZXN0cyc6IDEsCisgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgdSdk
aXNhYmxlZCc6IDAsCisgICAgdSdlcnJvcnMnOiAwLAorICAgIHUndGltZSc6IHUnKicsCisgICAg
dSd0aW1lc3RhbXAnOiB1JyonLAorICAgIHUnbmFtZSc6IHUnQWxsVGVzdHMnLAorICAgIHUnYWRf
aG9jX3Byb3BlcnR5JzogdSc0MicsCisgICAgdSd0ZXN0c3VpdGVzJzogW3sKKyAgICAgICAgdSdu
YW1lJzogdSdTdWNjZXNzZnVsVGVzdCcsCisgICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICB1
J2ZhaWx1cmVzJzogMCwKKyAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgIHUnZXJyb3Jz
JzogMCwKKyAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgdSd0ZXN0c3VpdGUnOiBbewor
ICAgICAgICAgICAgdSduYW1lJzogdSdTdWNjZWVkcycsCisgICAgICAgICAgICB1J3N0YXR1cyc6
IHUnUlVOJywKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J2NsYXNz
bmFtZSc6IHUnU3VjY2Vzc2Z1bFRlc3QnLAorICAgICAgICB9XQorICAgIH1dLAorfQorCitFWFBF
Q1RFRF9FTVBUWSA9IHsKKyAgICB1J3Rlc3RzJzogMCwKKyAgICB1J2ZhaWx1cmVzJzogMCwKKyAg
ICB1J2Rpc2FibGVkJzogMCwKKyAgICB1J2Vycm9ycyc6IDAsCisgICAgdSd0aW1lJzogdScqJywK
KyAgICB1J3RpbWVzdGFtcCc6IHUnKicsCisgICAgdSduYW1lJzogdSdBbGxUZXN0cycsCisgICAg
dSd0ZXN0c3VpdGVzJzogW10sCit9CisKK0dURVNUX1BST0dSQU1fUEFUSCA9IGd0ZXN0X3Rlc3Rf
dXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKEdURVNUX1BST0dSQU1fTkFNRSkKKworU1VQUE9S
VFNfVFlQRURfVEVTVFMgPSAnVHlwZWRUZXN0JyBpbiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nl
c3MoCisgICAgW0dURVNUX1BST0dSQU1fUEFUSCwgR1RFU1RfTElTVF9URVNUU19GTEFHXSwgY2Fw
dHVyZV9zdGRlcnI9RmFsc2UpLm91dHB1dAorCisKK2NsYXNzIEdUZXN0SnNvbk91dHB1dFVuaXRU
ZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJVbml0IHRlc3QgZm9yIEdvb2ds
ZSBUZXN0J3MgSlNPTiBvdXRwdXQgZnVuY3Rpb25hbGl0eS4KKyAgIiIiCisKKyAgIyBUaGlzIHRl
c3QgY3VycmVudGx5IGJyZWFrcyBvbiBwbGF0Zm9ybXMgdGhhdCBkbyBub3Qgc3VwcG9ydCB0eXBl
ZCBhbmQKKyAgIyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIHNvIHdlIGRvbid0IHJ1biBpdCB1
bmRlciB0aGVtLgorICBpZiBTVVBQT1JUU19UWVBFRF9URVNUUzoKKworICAgIGRlZiB0ZXN0Tm9u
RW1wdHlKc29uT3V0cHV0KHNlbGYpOgorICAgICAgIiIiVmVyaWZpZXMgSlNPTiBvdXRwdXQgZm9y
IGEgR29vZ2xlIFRlc3QgYmluYXJ5IHdpdGggbm9uLWVtcHR5IG91dHB1dC4KKworICAgICAgUnVu
cyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBhIG5vbi1lbXB0eSBKU09OIG91dHB1dCwg
YW5kCisgICAgICB0ZXN0cyB0aGF0IHRoZSBKU09OIG91dHB1dCBpcyBleHBlY3RlZC4KKyAgICAg
ICIiIgorICAgICAgc2VsZi5fVGVzdEpzb25PdXRwdXQoR1RFU1RfUFJPR1JBTV9OQU1FLCBFWFBF
Q1RFRF9OT05fRU1QVFksIDEpCisKKyAgZGVmIHRlc3RFbXB0eUpzb25PdXRwdXQoc2VsZik6Cisg
ICAgIiIiVmVyaWZpZXMgSlNPTiBvdXRwdXQgZm9yIGEgR29vZ2xlIFRlc3QgYmluYXJ5IHdpdGhv
dXQgYWN0dWFsIHRlc3RzLgorCisgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRl
cyBhbiBlbXB0eSBKU09OIG91dHB1dCwgYW5kCisgICAgdGVzdHMgdGhhdCB0aGUgSlNPTiBvdXRw
dXQgaXMgZXhwZWN0ZWQuCisgICAgIiIiCisKKyAgICBzZWxmLl9UZXN0SnNvbk91dHB1dCgnZ3Rl
c3Rfbm9fdGVzdF91bml0dGVzdCcsIEVYUEVDVEVEX0VNUFRZLCAwKQorCisgIGRlZiB0ZXN0VGlt
ZXN0YW1wVmFsdWUoc2VsZik6CisgICAgIiIiQ2hlY2tzIHdoZXRoZXIgdGhlIHRpbWVzdGFtcCBh
dHRyaWJ1dGUgaW4gdGhlIEpTT04gb3V0cHV0IGlzIHZhbGlkLgorCisgICAgUnVucyBhIHRlc3Qg
cHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBhbiBlbXB0eSBKU09OIG91dHB1dCwgYW5kIGNoZWNrcyBp
ZgorICAgIHRoZSB0aW1lc3RhbXAgYXR0cmlidXRlIGluIHRoZSB0ZXN0c3VpdGVzIHRhZyBpcyB2
YWxpZC4KKyAgICAiIiIKKyAgICBhY3R1YWwgPSBzZWxmLl9HZXRKc29uT3V0cHV0KCdndGVzdF9u
b190ZXN0X3VuaXR0ZXN0JywgW10sIDApCisgICAgZGF0ZV90aW1lX3N0ciA9IGFjdHVhbFsndGlt
ZXN0YW1wJ10KKyAgICAjIGRhdGV0aW1lLnN0cnB0aW1lKCkgaXMgb25seSBhdmFpbGFibGUgaW4g
UHl0aG9uIDIuNSsgc28gd2UgaGF2ZSB0bworICAgICMgcGFyc2UgdGhlIGV4cGVjdGVkIGRhdGV0
aW1lIG1hbnVhbGx5LgorICAgIG1hdGNoID0gcmUubWF0Y2gocicoXGQrKS0oXGRcZCktKFxkXGQp
VChcZFxkKTooXGRcZCk6KFxkXGQpJywgZGF0ZV90aW1lX3N0cikKKyAgICBzZWxmLmFzc2VydFRy
dWUoCisgICAgICAgIHJlLm1hdGNoLAorICAgICAgICAnSlNPTiBkYXRldHRpbWUgc3RyaW5nICVz
IGhhcyBpbmNvcnJlY3QgZm9ybWF0JyAlIGRhdGVfdGltZV9zdHIpCisgICAgZGF0ZV90aW1lX2Zy
b21fanNvbiA9IGRhdGV0aW1lLmRhdGV0aW1lKAorICAgICAgICB5ZWFyPWludChtYXRjaC5ncm91
cCgxKSksIG1vbnRoPWludChtYXRjaC5ncm91cCgyKSksCisgICAgICAgIGRheT1pbnQobWF0Y2gu
Z3JvdXAoMykpLCBob3VyPWludChtYXRjaC5ncm91cCg0KSksCisgICAgICAgIG1pbnV0ZT1pbnQo
bWF0Y2guZ3JvdXAoNSkpLCBzZWNvbmQ9aW50KG1hdGNoLmdyb3VwKDYpKSkKKworICAgIHRpbWVf
ZGVsdGEgPSBhYnMoZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkgLSBkYXRlX3RpbWVfZnJvbV9qc29u
KQorICAgICMgdGltZXN0YW1wIHZhbHVlIHNob3VsZCBiZSBuZWFyIHRoZSBjdXJyZW50IGxvY2Fs
IHRpbWUKKyAgICBzZWxmLmFzc2VydFRydWUodGltZV9kZWx0YSA8IGRhdGV0aW1lLnRpbWVkZWx0
YShzZWNvbmRzPTYwMCksCisgICAgICAgICAgICAgICAgICAgICd0aW1lX2RlbHRhIGlzICVzJyAl
IHRpbWVfZGVsdGEpCisKKyAgZGVmIHRlc3REZWZhdWx0T3V0cHV0RmlsZShzZWxmKToKKyAgICAi
IiJWZXJpZmllcyB0aGUgZGVmYXVsdCBvdXRwdXQgZmlsZSBuYW1lLgorCisgICAgQ29uZmlybXMg
dGhhdCBHb29nbGUgVGVzdCBwcm9kdWNlcyBhbiBKU09OIG91dHB1dCBmaWxlIHdpdGggdGhlIGV4
cGVjdGVkCisgICAgZGVmYXVsdCBuYW1lIGlmIG5vIG5hbWUgaXMgZXhwbGljaXRseSBzcGVjaWZp
ZWQuCisgICAgIiIiCisgICAgb3V0cHV0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91
dGlscy5HZXRUZW1wRGlyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1Rf
REVGQVVMVF9PVVRQVVRfRklMRSkKKyAgICBndGVzdF9wcm9nX3BhdGggPSBndGVzdF90ZXN0X3V0
aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKKyAgICAgICAgJ2d0ZXN0X25vX3Rlc3RfdW5pdHRl
c3QnKQorICAgIHRyeToKKyAgICAgIG9zLnJlbW92ZShvdXRwdXRfZmlsZSkKKyAgICBleGNlcHQg
T1NFcnJvcjoKKyAgICAgIGUgPSBzeXMuZXhjX2luZm8oKVsxXQorICAgICAgaWYgZS5lcnJubyAh
PSBlcnJuby5FTk9FTlQ6CisgICAgICAgIHJhaXNlCisKKyAgICBwID0gZ3Rlc3RfdGVzdF91dGls
cy5TdWJwcm9jZXNzKAorICAgICAgICBbZ3Rlc3RfcHJvZ19wYXRoLCAnJXM9anNvbicgJSBHVEVT
VF9PVVRQVVRfRkxBR10sCisgICAgICAgIHdvcmtpbmdfZGlyPWd0ZXN0X3Rlc3RfdXRpbHMuR2V0
VGVtcERpcigpKQorICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKKyAgICBzZWxmLmFzc2VydEVx
dWFscygwLCBwLmV4aXRfY29kZSkKKyAgICBzZWxmLmFzc2VydF8ob3MucGF0aC5pc2ZpbGUob3V0
cHV0X2ZpbGUpKQorCisgIGRlZiB0ZXN0U3VwcHJlc3NlZEpzb25PdXRwdXQoc2VsZik6CisgICAg
IiIiVmVyaWZpZXMgdGhhdCBubyBKU09OIG91dHB1dCBpcyBnZW5lcmF0ZWQuCisKKyAgICBUZXN0
cyB0aGF0IG5vIEpTT04gZmlsZSBpcyBnZW5lcmF0ZWQgaWYgdGhlIGRlZmF1bHQgSlNPTiBsaXN0
ZW5lciBpcworICAgIHNodXQgZG93biBiZWZvcmUgUlVOX0FMTF9URVNUUyBpcyBpbnZva2VkLgor
ICAgICIiIgorCisgICAganNvbl9wYXRoID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMu
R2V0VGVtcERpcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QUk9HUkFN
X05BTUUgKyAnb3V0Lmpzb24nKQorICAgIGlmIG9zLnBhdGguaXNmaWxlKGpzb25fcGF0aCk6Cisg
ICAgICBvcy5yZW1vdmUoanNvbl9wYXRoKQorCisgICAgY29tbWFuZCA9IFtHVEVTVF9QUk9HUkFN
X1BBVEgsCisgICAgICAgICAgICAgICAnJXM9anNvbjolcycgJSAoR1RFU1RfT1VUUFVUX0ZMQUcs
IGpzb25fcGF0aCksCisgICAgICAgICAgICAgICAnLS1zaHV0X2Rvd25feG1sJ10KKyAgICBwID0g
Z3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCisgICAgaWYgcC50ZXJtaW5hdGVk
X2J5X3NpZ25hbDoKKyAgICAgICMgcC5zaWduYWwgaXMgYXZhaWxhYmxlIG9ubHkgaWYgcC50ZXJt
aW5hdGVkX2J5X3NpZ25hbCBpcyBUcnVlLgorICAgICAgc2VsZi5hc3NlcnRGYWxzZSgKKyAgICAg
ICAgICBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsLAorICAgICAgICAgICclcyB3YXMga2lsbGVkIGJ5
IHNpZ25hbCAlZCcgJSAoR1RFU1RfUFJPR1JBTV9OQU1FLCBwLnNpZ25hbCkpCisgICAgZWxzZToK
KyAgICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEs
IHAuZXhpdF9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIiclcycgZXhpdGVkIHdpdGgg
Y29kZSAlcywgd2hpY2ggZG9lc24ndCBtYXRjaCAiCisgICAgICAgICAgICAgICAgICAgICAgICAn
dGhlIGV4cGVjdGVkIGV4aXQgY29kZSAlcy4nCisgICAgICAgICAgICAgICAgICAgICAgICAlIChj
b21tYW5kLCBwLmV4aXRfY29kZSwgMSkpCisKKyAgICBzZWxmLmFzc2VydF8obm90IG9zLnBhdGgu
aXNmaWxlKGpzb25fcGF0aCkpCisKKyAgZGVmIHRlc3RGaWx0ZXJlZFRlc3RKc29uT3V0cHV0KHNl
bGYpOgorICAgICIiIlZlcmlmaWVzIEpTT04gb3V0cHV0IHdoZW4gYSBmaWx0ZXIgaXMgYXBwbGll
ZC4KKworICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBleGVjdXRlcyBvbmx5IHNvbWUgdGVz
dHMgYW5kIHZlcmlmaWVzIHRoYXQKKyAgICBub24tc2VsZWN0ZWQgdGVzdHMgZG8gbm90IHNob3cg
dXAgaW4gdGhlIEpTT04gb3V0cHV0LgorICAgICIiIgorCisgICAgc2VsZi5fVGVzdEpzb25PdXRw
dXQoR1RFU1RfUFJPR1JBTV9OQU1FLCBFWFBFQ1RFRF9GSUxURVJFRCwgMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBleHRyYV9hcmdzPVsnJXM9U3VjY2Vzc2Z1bFRlc3QuKicgJSBHVEVTVF9G
SUxURVJfRkxBR10pCisKKyAgZGVmIF9HZXRKc29uT3V0cHV0KHNlbGYsIGd0ZXN0X3Byb2dfbmFt
ZSwgZXh0cmFfYXJncywgZXhwZWN0ZWRfZXhpdF9jb2RlKToKKyAgICAiIiJSZXR1cm5zIHRoZSBK
U09OIG91dHB1dCBnZW5lcmF0ZWQgYnkgcnVubmluZyB0aGUgcHJvZ3JhbSBndGVzdF9wcm9nX25h
bWUuCisKKyAgICBGdXJ0aGVybW9yZSwgdGhlIHByb2dyYW0ncyBleGl0IGNvZGUgbXVzdCBiZSBl
eHBlY3RlZF9leGl0X2NvZGUuCisKKyAgICBBcmdzOgorICAgICAgZ3Rlc3RfcHJvZ19uYW1lOiBH
b29nbGUgVGVzdCBiaW5hcnkgbmFtZS4KKyAgICAgIGV4dHJhX2FyZ3M6IGV4dHJhIGFyZ3VtZW50
cyB0byBiaW5hcnkgaW52b2NhdGlvbi4KKyAgICAgIGV4cGVjdGVkX2V4aXRfY29kZTogcHJvZ3Jh
bSdzIGV4aXQgY29kZS4KKyAgICAiIiIKKyAgICBqc29uX3BhdGggPSBvcy5wYXRoLmpvaW4oZ3Rl
c3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGd0ZXN0X3Byb2dfbmFtZSArICdvdXQuanNvbicpCisgICAgZ3Rlc3RfcHJvZ19wYXRoID0gZ3Rl
c3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoZ3Rlc3RfcHJvZ19uYW1lKQorCisg
ICAgY29tbWFuZCA9ICgKKyAgICAgICAgW2d0ZXN0X3Byb2dfcGF0aCwgJyVzPWpzb246JXMnICUg
KEdURVNUX09VVFBVVF9GTEFHLCBqc29uX3BhdGgpXSArCisgICAgICAgIGV4dHJhX2FyZ3MKKyAg
ICApCisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kKQorICAgIGlm
IHAudGVybWluYXRlZF9ieV9zaWduYWw6CisgICAgICBzZWxmLmFzc2VydF8oRmFsc2UsCisgICAg
ICAgICAgICAgICAgICAgJyVzIHdhcyBraWxsZWQgYnkgc2lnbmFsICVkJyAlIChndGVzdF9wcm9n
X25hbWUsIHAuc2lnbmFsKSkKKyAgICBlbHNlOgorICAgICAgc2VsZi5hc3NlcnRfKHAuZXhpdGVk
KQorICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfZXhpdF9jb2RlLCBwLmV4aXRfY29k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIGV4aXRlZCB3aXRoIGNvZGUgJXMsIHdo
aWNoIGRvZXNuJ3QgbWF0Y2ggIgorICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBleHBlY3Rl
ZCBleGl0IGNvZGUgJXMuJworICAgICAgICAgICAgICAgICAgICAgICAgJSAoY29tbWFuZCwgcC5l
eGl0X2NvZGUsIGV4cGVjdGVkX2V4aXRfY29kZSkpCisgICAgd2l0aCBvcGVuKGpzb25fcGF0aCkg
YXMgZjoKKyAgICAgIGFjdHVhbCA9IGpzb24ubG9hZChmKQorICAgIHJldHVybiBhY3R1YWwKKwor
ICBkZWYgX1Rlc3RKc29uT3V0cHV0KHNlbGYsIGd0ZXN0X3Byb2dfbmFtZSwgZXhwZWN0ZWQsCisg
ICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlLCBleHRyYV9hcmdzPU5vbmUp
OgorICAgICIiIkNoZWNrcyB0aGUgSlNPTiBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHRoZSBHb29nbGUg
VGVzdCBiaW5hcnkuCisKKyAgICBBc3NlcnRzIHRoYXQgdGhlIEpTT04gZG9jdW1lbnQgZ2VuZXJh
dGVkIGJ5IHJ1bm5pbmcgdGhlIHByb2dyYW0KKyAgICBndGVzdF9wcm9nX25hbWUgbWF0Y2hlcyBl
eHBlY3RlZF9qc29uLCBhIHN0cmluZyBjb250YWluaW5nIGFub3RoZXIKKyAgICBKU09OIGRvY3Vt
ZW50LiAgRnVydGhlcm1vcmUsIHRoZSBwcm9ncmFtJ3MgZXhpdCBjb2RlIG11c3QgYmUKKyAgICBl
eHBlY3RlZF9leGl0X2NvZGUuCisKKyAgICBBcmdzOgorICAgICAgZ3Rlc3RfcHJvZ19uYW1lOiBH
b29nbGUgVGVzdCBiaW5hcnkgbmFtZS4KKyAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCBvdXRwdXQu
CisgICAgICBleHBlY3RlZF9leGl0X2NvZGU6IHByb2dyYW0ncyBleGl0IGNvZGUuCisgICAgICBl
eHRyYV9hcmdzOiBleHRyYSBhcmd1bWVudHMgdG8gYmluYXJ5IGludm9jYXRpb24uCisgICAgIiIi
CisKKyAgICBhY3R1YWwgPSBzZWxmLl9HZXRKc29uT3V0cHV0KGd0ZXN0X3Byb2dfbmFtZSwgZXh0
cmFfYXJncyBvciBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
X2V4aXRfY29kZSkKKyAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBndGVzdF9qc29uX3Rl
c3RfdXRpbHMubm9ybWFsaXplKGFjdHVhbCkpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9f
JzoKKyAgaWYgTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZMQUcgaW4gc3lzLmFyZ3Y6CisgICAgIyB1
bml0dGVzdC5tYWluKCkgY2FuJ3QgaGFuZGxlIHVua25vd24gZmxhZ3MKKyAgICBzeXMuYXJndi5y
ZW1vdmUoTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZMQUcpCisKKyAgb3MuZW52aXJvblsnR1RFU1Rf
U1RBQ0tfVFJBQ0VfREVQVEgnXSA9ICcxJworICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWxpbmtlZC1w
dHItdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1saW5r
ZWQtcHRyLXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmEwMGYzNDI5NmJkNTc5NGMxNjQ0NzlmMjJhODhk
ZDRmNzM2MDAxZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ29vZ2xldGVzdC1saW5rZWQtcHRyLXRlc3QuY2MKQEAgLTAsMCArMSwxNTEgQEAKKy8vIENv
cHlyaWdodCAyMDAzLCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisv
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJp
YnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1ZGUgPHN0ZGxp
Yi5oPgorCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CisKK3VzaW5nIHRlc3Rpbmc6Ok1l
c3NhZ2U7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjsKKworaW50IG51bTsK
K01lc3NhZ2UqIGhpc3RvcnkgPSBOVUxMOworCisvLyBDbGFzcyB3aGljaCB0cmFja3MgYWxsb2Nh
dGlvbi9kZWFsbG9jYXRpb24KK2NsYXNzIEEgeworIHB1YmxpYzoKKyAgQSgpOiBteW51bShudW0r
KykgeyAqaGlzdG9yeSA8PCAiQSIgPDwgbXludW0gPDwgIiBjdG9yXG4iOyB9CisgIHZpcnR1YWwg
fkEoKSB7ICpoaXN0b3J5IDw8ICJBIiA8PCBteW51bSA8PCAiIGR0b3JcbiI7IH0KKyAgdmlydHVh
bCB2b2lkIFVzZSgpIHsgKmhpc3RvcnkgPDwgIkEiIDw8IG15bnVtIDw8ICIgdXNlXG4iOyB9Cisg
cHJvdGVjdGVkOgorICBpbnQgbXludW07Cit9OworCisvLyBTdWJjbGFzcworY2xhc3MgQiA6IHB1
YmxpYyBBIHsKKyBwdWJsaWM6CisgIEIoKSB7ICpoaXN0b3J5IDw8ICJCIiA8PCBteW51bSA8PCAi
IGN0b3JcbiI7IH0KKyAgfkIoKSB7ICpoaXN0b3J5IDw8ICJCIiA8PCBteW51bSA8PCAiIGR0b3Jc
biI7IH0KKyAgdmlydHVhbCB2b2lkIFVzZSgpIHsgKmhpc3RvcnkgPDwgIkIiIDw8IG15bnVtIDw8
ICIgdXNlXG4iOyB9Cit9OworCitjbGFzcyBMaW5rZWRQdHJUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgeworIHB1YmxpYzoKKyAgTGlua2VkUHRyVGVzdCgpIHsKKyAgICBudW0gPSAwOworICAg
IGhpc3RvcnkgPSBuZXcgTWVzc2FnZTsKKyAgfQorCisgIHZpcnR1YWwgfkxpbmtlZFB0clRlc3Qo
KSB7CisgICAgZGVsZXRlIGhpc3Rvcnk7CisgICAgaGlzdG9yeSA9IE5VTEw7CisgIH0KK307CisK
K1RFU1RfRihMaW5rZWRQdHJUZXN0LCBHZW5lcmFsVGVzdCkgeworICB7CisgICAgbGlua2VkX3B0
cjxBPiBhMCwgYTEsIGEyOworICAgIC8vIFVzZSBleHBsaWNpdCBmdW5jdGlvbiBjYWxsIG5vdGF0
aW9uIGhlcmUgdG8gc3VwcHJlc3Mgc2VsZi1hc3NpZ24gd2FybmluZy4KKyAgICBhMC5vcGVyYXRv
cj0oYTApOworICAgIGExID0gYTI7CisgICAgQVNTRVJUX0VRKGEwLmdldCgpLCBzdGF0aWNfY2Fz
dDxBKj4oTlVMTCkpOworICAgIEFTU0VSVF9FUShhMS5nZXQoKSwgc3RhdGljX2Nhc3Q8QSo+KE5V
TEwpKTsKKyAgICBBU1NFUlRfRVEoYTIuZ2V0KCksIHN0YXRpY19jYXN0PEEqPihOVUxMKSk7Cisg
ICAgQVNTRVJUX1RSVUUoYTAgPT0gTlVMTCk7CisgICAgQVNTRVJUX1RSVUUoYTEgPT0gTlVMTCk7
CisgICAgQVNTRVJUX1RSVUUoYTIgPT0gTlVMTCk7CisKKyAgICB7CisgICAgICBsaW5rZWRfcHRy
PEE+IGEzKG5ldyBBKTsKKyAgICAgIGEwID0gYTM7CisgICAgICBBU1NFUlRfVFJVRShhMCA9PSBh
Myk7CisgICAgICBBU1NFUlRfVFJVRShhMCAhPSBOVUxMKTsKKyAgICAgIEFTU0VSVF9UUlVFKGEw
LmdldCgpID09IGEzKTsKKyAgICAgIEFTU0VSVF9UUlVFKGEwID09IGEzLmdldCgpKTsKKyAgICAg
IGxpbmtlZF9wdHI8QT4gYTQoYTApOworICAgICAgYTEgPSBhNDsKKyAgICAgIGxpbmtlZF9wdHI8
QT4gYTUobmV3IEEpOworICAgICAgQVNTRVJUX1RSVUUoYTUuZ2V0KCkgIT0gYTMpOworICAgICAg
QVNTRVJUX1RSVUUoYTUgIT0gYTMuZ2V0KCkpOworICAgICAgYTIgPSBhNTsKKyAgICAgIGxpbmtl
ZF9wdHI8Qj4gYjAobmV3IEIpOworICAgICAgbGlua2VkX3B0cjxBPiBhNihiMCk7CisgICAgICBB
U1NFUlRfVFJVRShiMCA9PSBhNik7CisgICAgICBBU1NFUlRfVFJVRShhNiA9PSBiMCk7CisgICAg
ICBBU1NFUlRfVFJVRShiMCAhPSBOVUxMKTsKKyAgICAgIGE1ID0gYjA7CisgICAgICBhNSA9IGIw
OworICAgICAgYTMtPlVzZSgpOworICAgICAgYTQtPlVzZSgpOworICAgICAgYTUtPlVzZSgpOwor
ICAgICAgYTYtPlVzZSgpOworICAgICAgYjAtPlVzZSgpOworICAgICAgKCpiMCkuVXNlKCk7Cisg
ICAgICBiMC5nZXQoKS0+VXNlKCk7CisgICAgfQorCisgICAgYTAtPlVzZSgpOworICAgIGExLT5V
c2UoKTsKKyAgICBhMi0+VXNlKCk7CisKKyAgICBhMSA9IGEyOworICAgIGEyLnJlc2V0KG5ldyBB
KTsKKyAgICBhMC5yZXNldCgpOworCisgICAgbGlua2VkX3B0cjxBPiBhNzsKKyAgfQorCisgIEFT
U0VSVF9TVFJFUSgKKyAgICAiQTAgY3RvclxuIgorICAgICJBMSBjdG9yXG4iCisgICAgIkEyIGN0
b3JcbiIKKyAgICAiQjIgY3RvclxuIgorICAgICJBMCB1c2VcbiIKKyAgICAiQTAgdXNlXG4iCisg
ICAgIkIyIHVzZVxuIgorICAgICJCMiB1c2VcbiIKKyAgICAiQjIgdXNlXG4iCisgICAgIkIyIHVz
ZVxuIgorICAgICJCMiB1c2VcbiIKKyAgICAiQjIgZHRvclxuIgorICAgICJBMiBkdG9yXG4iCisg
ICAgIkEwIHVzZVxuIgorICAgICJBMCB1c2VcbiIKKyAgICAiQTEgdXNlXG4iCisgICAgIkEzIGN0
b3JcbiIKKyAgICAiQTAgZHRvclxuIgorICAgICJBMyBkdG9yXG4iCisgICAgIkExIGR0b3JcbiIs
CisgICAgaGlzdG9yeS0+R2V0U3RyaW5nKCkuY19zdHIoKSk7Cit9CisKK30gIC8vIFVubmFtZWQg
bmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxNDIzYTMz
OWU4ZmQyOGFhMmI0MjUzMDEzYjNjMjNjZTM1MzM3NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdC5w
eQpAQCAtMCwwICsxLDIwNSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdo
dCAyMDA2LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIC0tZ3Rlc3RfbGlzdF90ZXN0
cyBmbGFnLgorCitBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBsaXN0IGFsbCB0ZXN0cyBi
eSBzcGVjaWZ5aW5nIHRoZQorLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuICBUaGlzIHNjcmlwdCB0
ZXN0cyBzdWNoIGZ1bmN0aW9uYWxpdHkKK2J5IGludm9raW5nIGdvb2dsZXRlc3QtbGlzdC10ZXN0
cy11bml0dGVzdF8gKGEgcHJvZ3JhbSB3cml0dGVuIHdpdGgKK0dvb2dsZSBUZXN0KSB0aGUgY29t
bWFuZCBsaW5lIGZsYWdzLgorIiIiCisKK2ltcG9ydCByZQoraW1wb3J0IGd0ZXN0X3Rlc3RfdXRp
bHMKKworIyBDb25zdGFudHMuCisKKyMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciBlbmFibGlu
Zy9kaXNhYmxpbmcgbGlzdGluZyBhbGwgdGVzdHMuCitMSVNUX1RFU1RTX0ZMQUcgPSAnZ3Rlc3Rf
bGlzdF90ZXN0cycKKworIyBQYXRoIHRvIHRoZSBnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRl
c3RfIHByb2dyYW0uCitFWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFi
bGVQYXRoKCdnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfJykKKworIyBUaGUgZXhwZWN0
ZWQgb3V0cHV0IHdoZW4gcnVubmluZyBnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfIHdp
dGgKKyMgLS1ndGVzdF9saXN0X3Rlc3RzCitFWFBFQ1RFRF9PVVRQVVRfTk9fRklMVEVSX1JFID0g
cmUuY29tcGlsZShyIiIiRm9vRGVhdGhUZXN0XC4KKyAgVGVzdDEKK0Zvb1wuCisgIEJhcjEKKyAg
QmFyMgorICBESVNBQkxFRF9CYXIzCitBYmNcLgorICBYeXoKKyAgRGVmCitGb29CYXJcLgorICBC
YXoKK0Zvb1Rlc3RcLgorICBUZXN0MQorICBESVNBQkxFRF9UZXN0MgorICBUZXN0MworVHlwZWRU
ZXN0LzBcLiAgIyBUeXBlUGFyYW0gPSAoVmVyeUxvezI0NX18Y2xhc3MgVmVyeUxvezIzOX0pXC5c
LlwuCisgIFRlc3RBCisgIFRlc3RCCitUeXBlZFRlc3QvMVwuICAjIFR5cGVQYXJhbSA9IGludFxz
KlwqKCBfX3B0cjY0KT8KKyAgVGVzdEEKKyAgVGVzdEIKK1R5cGVkVGVzdC8yXC4gICMgVHlwZVBh
cmFtID0gLipNeUFycmF5PGJvb2wsXHMqNDI+CisgIFRlc3RBCisgIFRlc3RCCitNeS9UeXBlUGFy
YW1UZXN0LzBcLiAgIyBUeXBlUGFyYW0gPSAoVmVyeUxvezI0NX18Y2xhc3MgVmVyeUxvezIzOX0p
XC5cLlwuCisgIFRlc3RBCisgIFRlc3RCCitNeS9UeXBlUGFyYW1UZXN0LzFcLiAgIyBUeXBlUGFy
YW0gPSBpbnRccypcKiggX19wdHI2NCk/CisgIFRlc3RBCisgIFRlc3RCCitNeS9UeXBlUGFyYW1U
ZXN0LzJcLiAgIyBUeXBlUGFyYW0gPSAuKk15QXJyYXk8Ym9vbCxccyo0Mj4KKyAgVGVzdEEKKyAg
VGVzdEIKK015SW5zdGFudGlhdGlvbi9WYWx1ZVBhcmFtVGVzdFwuCisgIFRlc3RBLzAgICMgR2V0
UGFyYW1cKFwpID0gb25lIGxpbmUKKyAgVGVzdEEvMSAgIyBHZXRQYXJhbVwoXCkgPSB0d29cXG5s
aW5lcworICBUZXN0QS8yICAjIEdldFBhcmFtXChcKSA9IGEgdmVyeVxcbmxvezI0MX1cLlwuXC4K
KyAgVGVzdEIvMCAgIyBHZXRQYXJhbVwoXCkgPSBvbmUgbGluZQorICBUZXN0Qi8xICAjIEdldFBh
cmFtXChcKSA9IHR3b1xcbmxpbmVzCisgIFRlc3RCLzIgICMgR2V0UGFyYW1cKFwpID0gYSB2ZXJ5
XFxubG97MjQxfVwuXC5cLgorIiIiKQorCisjIFRoZSBleHBlY3RlZCBvdXRwdXQgd2hlbiBydW5u
aW5nIGdvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdF8gd2l0aAorIyAtLWd0ZXN0X2xpc3Rf
dGVzdHMgYW5kIC0tZ3Rlc3RfZmlsdGVyPUZvbyouCitFWFBFQ1RFRF9PVVRQVVRfRklMVEVSX0ZP
T19SRSA9IHJlLmNvbXBpbGUociIiIkZvb0RlYXRoVGVzdFwuCisgIFRlc3QxCitGb29cLgorICBC
YXIxCisgIEJhcjIKKyAgRElTQUJMRURfQmFyMworRm9vQmFyXC4KKyAgQmF6CitGb29UZXN0XC4K
KyAgVGVzdDEKKyAgRElTQUJMRURfVGVzdDIKKyAgVGVzdDMKKyIiIikKKworIyBVdGlsaXRpZXMu
CisKKworZGVmIFJ1bihhcmdzKToKKyAgIiIiUnVucyBnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5p
dHRlc3RfIGFuZCByZXR1cm5zIHRoZSBsaXN0IG9mIHRlc3RzIHByaW50ZWQuIiIiCisKKyAgcmV0
dXJuIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhbRVhFX1BBVEhdICsgYXJncywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXB0dXJlX3N0ZGVycj1GYWxzZSkub3V0
cHV0CisKKworIyBUaGUgdW5pdCB0ZXN0LgorCisKK2NsYXNzIEdUZXN0TGlzdFRlc3RzVW5pdFRl
c3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICIiIlRlc3RzIHVzaW5nIHRoZSAtLWd0
ZXN0X2xpc3RfdGVzdHMgZmxhZyB0byBsaXN0IGFsbCB0ZXN0cy4iIiIKKworICBkZWYgUnVuQW5k
VmVyaWZ5KHNlbGYsIGZsYWdfdmFsdWUsIGV4cGVjdGVkX291dHB1dF9yZSwgb3RoZXJfZmxhZyk6
CisgICAgIiIiUnVucyBnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfIGFuZCB2ZXJpZmll
cyB0aGF0IGl0IHByaW50cworICAgIHRoZSBjb3JyZWN0IHRlc3RzLgorCisgICAgQXJnczoKKyAg
ICAgIGZsYWdfdmFsdWU6ICAgICAgICAgdmFsdWUgb2YgdGhlIC0tZ3Rlc3RfbGlzdF90ZXN0cyBm
bGFnOworICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBu
b3QgYmUgcHJlc2VudC4KKyAgICAgIGV4cGVjdGVkX291dHB1dF9yZTogcmVndWxhciBleHByZXNz
aW9uIHRoYXQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
b3V0cHV0IGFmdGVyIHJ1bm5pbmcgY29tbWFuZDsKKyAgICAgIG90aGVyX2ZsYWc6ICAgICAgICAg
YSBkaWZmZXJlbnQgZmxhZyB0byBiZSBwYXNzZWQgdG8gY29tbWFuZAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbG9uZyB3aXRoIGd0ZXN0X2xpc3RfdGVzdHM7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgorICAgICIi
IgorCisgICAgaWYgZmxhZ192YWx1ZSBpcyBOb25lOgorICAgICAgZmxhZyA9ICcnCisgICAgICBm
bGFnX2V4cHJlc3Npb24gPSAnbm90IHNldCcKKyAgICBlbGlmIGZsYWdfdmFsdWUgPT0gJzAnOgor
ICAgICAgZmxhZyA9ICctLSVzPTAnICUgTElTVF9URVNUU19GTEFHCisgICAgICBmbGFnX2V4cHJl
c3Npb24gPSAnMCcKKyAgICBlbHNlOgorICAgICAgZmxhZyA9ICctLSVzJyAlIExJU1RfVEVTVFNf
RkxBRworICAgICAgZmxhZ19leHByZXNzaW9uID0gJzEnCisKKyAgICBhcmdzID0gW2ZsYWddCisK
KyAgICBpZiBvdGhlcl9mbGFnIGlzIG5vdCBOb25lOgorICAgICAgYXJncyArPSBbb3RoZXJfZmxh
Z10KKworICAgIG91dHB1dCA9IFJ1bihhcmdzKQorCisgICAgaWYgZXhwZWN0ZWRfb3V0cHV0X3Jl
OgorICAgICAgc2VsZi5hc3NlcnRfKAorICAgICAgICAgIGV4cGVjdGVkX291dHB1dF9yZS5tYXRj
aChvdXRwdXQpLAorICAgICAgICAgICgnd2hlbiAlcyBpcyAlcywgdGhlIG91dHB1dCBvZiAiJXMi
IGlzICIlcyIsXG4nCisgICAgICAgICAgICd3aGljaCBkb2VzIG5vdCBtYXRjaCByZWdleCAiJXMi
JyAlCisgICAgICAgICAgIChMSVNUX1RFU1RTX0ZMQUcsIGZsYWdfZXhwcmVzc2lvbiwgJyAnLmpv
aW4oYXJncyksIG91dHB1dCwKKyAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dF9yZS5wYXR0ZXJu
KSkpCisgICAgZWxzZToKKyAgICAgIHNlbGYuYXNzZXJ0XygKKyAgICAgICAgICBub3QgRVhQRUNU
RURfT1VUUFVUX05PX0ZJTFRFUl9SRS5tYXRjaChvdXRwdXQpLAorICAgICAgICAgICgnd2hlbiAl
cyBpcyAlcywgdGhlIG91dHB1dCBvZiAiJXMiIGlzICIlcyInJQorICAgICAgICAgICAoTElTVF9U
RVNUU19GTEFHLCBmbGFnX2V4cHJlc3Npb24sICcgJy5qb2luKGFyZ3MpLCBvdXRwdXQpKSkKKwor
ICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcihzZWxmKToKKyAgICAiIiJUZXN0cyB0aGUgYmVoYXZp
b3Igb2YgdGhlIGRlZmF1bHQgbW9kZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdf
dmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9Tm9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPU5vbmUpCisKKyAgZGVmIHRlc3RG
bGFnKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5nIHRoZSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxh
Zy4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFsdWU9JzAnLAorICAgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dF9yZT1Ob25lLAorICAgICAgICAgICAgICAgICAg
ICAgIG90aGVyX2ZsYWc9Tm9uZSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPScx
JywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9RVhQRUNURURfT1VU
UFVUX05PX0ZJTFRFUl9SRSwKKyAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPU5vbmUp
CisKKyAgZGVmIHRlc3RPdmVycmlkZU5vbkZpbHRlckZsYWdzKHNlbGYpOgorICAgICIiIlRlc3Rz
IHRoYXQgLS1ndGVzdF9saXN0X3Rlc3RzIG92ZXJyaWRlcyB0aGUgbm9uLWZpbHRlciBmbGFncy4i
IiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAg
ICAgICAgICAgIGV4cGVjdGVkX291dHB1dF9yZT1FWFBFQ1RFRF9PVVRQVVRfTk9fRklMVEVSX1JF
LAorICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2ZsYWc9Jy0tZ3Rlc3RfYnJlYWtfb25fZmFp
bHVyZScpCisKKyAgZGVmIHRlc3RXaXRoRmlsdGVyRmxhZ3Moc2VsZik6CisgICAgIiIiVGVzdHMg
dGhhdCAtLWd0ZXN0X2xpc3RfdGVzdHMgdGFrZXMgaW50byBhY2NvdW50IHRoZQorICAgIC0tZ3Rl
c3RfZmlsdGVyIGZsYWcuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPScx
JywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9RVhQRUNURURfT1VU
UFVUX0ZJTFRFUl9GT09fUkUsCisgICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz0nLS1n
dGVzdF9maWx0ZXI9Rm9vKicpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rl
c3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0Xy5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNDczYzdkMWE0NWYxZjE5NmIxMzc0ODNiMDUzY2E1OTgwMDdkMjg4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWxpc3QtdGVz
dHMtdW5pdHRlc3RfLmNjCkBAIC0wLDAgKzEsMTU2IEBACisvLyBDb3B5cmlnaHQgMjAwNiwgR29v
Z2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdz
IC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLgorLy8KKy8vIEEgdXNlciBjYW4gYXNrIEdvb2dsZSBU
ZXN0IHRvIGxpc3QgYWxsIHRlc3RzIHRoYXQgd2lsbCBydW4KKy8vIHNvIHRoYXQgd2hlbiB1c2lu
ZyBhIGZpbHRlciwgYSB1c2VyIHdpbGwga25vdyB3aGF0CisvLyB0ZXN0cyB0byBsb29rIGZvci4g
VGhlIHRlc3RzIHdpbGwgbm90IGJlIHJ1biBhZnRlciBsaXN0aW5nLgorLy8KKy8vIFRoaXMgcHJv
Z3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRlc3QuCisvLyBEb24ndCBy
dW4gaXQgZGlyZWN0bHkuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisvLyBTZXZlcmFs
IGRpZmZlcmVudCB0ZXN0IGNhc2VzIGFuZCB0ZXN0cyB0aGF0IHdpbGwgYmUgbGlzdGVkLgorVEVT
VChGb28sIEJhcjEpIHsKK30KKworVEVTVChGb28sIEJhcjIpIHsKK30KKworVEVTVChGb28sIERJ
U0FCTEVEX0JhcjMpIHsKK30KKworVEVTVChBYmMsIFh5eikgeworfQorCitURVNUKEFiYywgRGVm
KSB7Cit9CisKK1RFU1QoRm9vQmFyLCBCYXopIHsKK30KKworY2xhc3MgRm9vVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK1RFU1RfRihGb29UZXN0LCBUZXN0MSkgeworfQorCitU
RVNUX0YoRm9vVGVzdCwgRElTQUJMRURfVGVzdDIpIHsKK30KKworVEVTVF9GKEZvb1Rlc3QsIFRl
c3QzKSB7Cit9CisKK1RFU1QoRm9vRGVhdGhUZXN0LCBUZXN0MSkgeworfQorCisvLyBBIGdyb3Vw
IG9mIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCisKK2NsYXNzIE15VHlwZSB7CisgcHVibGlj
OgorICBleHBsaWNpdCBNeVR5cGUoY29uc3Qgc3RkOjpzdHJpbmcmIGFfdmFsdWUpIDogdmFsdWVf
KGFfdmFsdWUpIHt9CisKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKCkgY29uc3QgeyByZXR1
cm4gdmFsdWVfOyB9CisKKyBwcml2YXRlOgorICBzdGQ6OnN0cmluZyB2YWx1ZV87Cit9OworCisv
LyBUZWFjaGVzIEdvb2dsZSBUZXN0IGhvdyB0byBwcmludCBhIE15VHlwZS4KK3ZvaWQgUHJpbnRU
byhjb25zdCBNeVR5cGUmIHgsIHN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8IHgudmFsdWUo
KTsKK30KKworY2xhc3MgVmFsdWVQYXJhbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQ
YXJhbTxNeVR5cGU+IHsKK307CisKK1RFU1RfUChWYWx1ZVBhcmFtVGVzdCwgVGVzdEEpIHsKK30K
KworVEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBUZXN0QikgeworfQorCitJTlNUQU5USUFURV9URVNU
X0NBU0VfUCgKKyAgICBNeUluc3RhbnRpYXRpb24sIFZhbHVlUGFyYW1UZXN0LAorICAgIHRlc3Rp
bmc6OlZhbHVlcyhNeVR5cGUoIm9uZSBsaW5lIiksCisgICAgICAgICAgICAgICAgICAgIE15VHlw
ZSgidHdvXG5saW5lcyIpLAorICAgICAgICAgICAgICAgICAgICBNeVR5cGUoImEgdmVyeVxubG9v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29uZyBsaW5lIikpKTsgIC8vIE5PTElOVAorCisvLyBBIGdyb3Vw
IG9mIHR5cGVkIHRlc3RzLgorCisvLyBBIGRlbGliZXJhdGVseSBsb25nIHR5cGUgbmFtZSBmb3Ig
dGVzdGluZyB0aGUgbGluZS10cnVuY2F0aW5nCisvLyBiZWhhdmlvciB3aGVuIHByaW50aW5nIGEg
dHlwZSBwYXJhbWV0ZXIuCitjbGFzcyBWZXJ5TG9vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29nTmFtZSB7
ICAvLyBOT0xJTlQKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZWRUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIGlu
dCBrU2l6ZT4KK2NsYXNzIE15QXJyYXkgeworfTsKKwordHlwZWRlZiB0ZXN0aW5nOjpUeXBlczxW
ZXJ5TG9vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29nTmFtZSwgIC8vIE5PTElOVAorICAgICAgICAgICAg
ICAgICAgICAgICBpbnQqLCBNeUFycmF5PGJvb2wsIDQyPiA+IE15VHlwZXM7CisKK1RZUEVEX1RF
U1RfQ0FTRShUeXBlZFRlc3QsIE15VHlwZXMpOworCitUWVBFRF9URVNUKFR5cGVkVGVzdCwgVGVz
dEEpIHsKK30KKworVFlQRURfVEVTVChUeXBlZFRlc3QsIFRlc3RCKSB7Cit9CisKKy8vIEEgZ3Jv
dXAgb2YgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2NsYXNzIFR5cGVQYXJhbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitUWVBF
RF9URVNUX0NBU0VfUChUeXBlUGFyYW1UZXN0KTsKKworVFlQRURfVEVTVF9QKFR5cGVQYXJhbVRl
c3QsIFRlc3RBKSB7Cit9CisKK1RZUEVEX1RFU1RfUChUeXBlUGFyYW1UZXN0LCBUZXN0Qikgewor
fQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChUeXBlUGFyYW1UZXN0LCBUZXN0QSwgVGVz
dEIpOworCitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgVHlwZVBhcmFtVGVzdCwg
TXlUeXBlcyk7CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICA6OnRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICByZXR1cm4gUlVOX0FMTF9URVNU
UygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LWxpc3RlbmVyLXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3QtbGlzdGVuZXItdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzU1NTk3MTUxZDA5ZDZjMzE1Njcx
ZjQyZGI2NmNjNGJkNDg1MGZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWxpc3RlbmVyLXRlc3QuY2MKQEAgLTAsMCArMSwzMTEgQEAK
Ky8vIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3Ry
aWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vCisvLyBUaGUgR29v
Z2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLwor
Ly8gVGhpcyBmaWxlIHZlcmlmaWVzIEdvb2dsZSBUZXN0IGV2ZW50IGxpc3RlbmVycyByZWNlaXZl
IGV2ZW50cyBhdCB0aGUKKy8vIHJpZ2h0IHRpbWVzLgorCisjaW5jbHVkZSA8dmVjdG9yPgorCisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKwordXNpbmcgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0
RW52aXJvbm1lbnQ7Cit1c2luZyA6OnRlc3Rpbmc6OkVudmlyb25tZW50OwordXNpbmcgOjp0ZXN0
aW5nOjpJbml0R29vZ2xlVGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdDsKK3VzaW5nIDo6dGVz
dGluZzo6VGVzdENhc2U7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyOwordXNp
bmcgOjp0ZXN0aW5nOjpUZXN0SW5mbzsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ7
Cit1c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OworCisvLyBVc2VkIGJ5IHRlc3RzIHRvIHJlZ2lz
dGVyIHRoZWlyIGV2ZW50cy4KK3N0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiogZ19ldmVudHMgPSBO
VUxMOworCituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCitjbGFz
cyBFdmVudFJlY29yZGluZ0xpc3RlbmVyIDogcHVibGljIFRlc3RFdmVudExpc3RlbmVyIHsKKyBw
dWJsaWM6CisgIGV4cGxpY2l0IEV2ZW50UmVjb3JkaW5nTGlzdGVuZXIoY29uc3QgY2hhciogbmFt
ZSkgOiBuYW1lXyhuYW1lKSB7fQorCisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIHZvaWQgT25UZXN0
UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7CisgICAgZ19ldmVu
dHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0UHJvZ3JhbVN0YXJ0IikpOwor
ICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVuaXRUZXN0
JiAvKnVuaXRfdGVzdCovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGl0ZXJhdGlvbikgeworICAgIE1lc3NhZ2UgbWVzc2FnZTsKKyAgICBtZXNzYWdlIDw8IEdldEZ1
bGxNZXRob2ROYW1lKCJPblRlc3RJdGVyYXRpb25TdGFydCIpCisgICAgICAgICAgICA8PCAiKCIg
PDwgaXRlcmF0aW9uIDw8ICIpIjsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKG1lc3NhZ2UuR2V0
U3RyaW5nKCkpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzU2V0VXBTdGFy
dChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgeworICAgIGdfZXZlbnRzLT5wdXNoX2Jh
Y2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIpKTsKKyAgfQor
CisgIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1NldFVwRW5kKGNvbnN0IFVuaXRUZXN0JiAv
KnVuaXRfdGVzdCovKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFt
ZSgiT25FbnZpcm9ubWVudHNTZXRVcEVuZCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPblRl
c3RDYXNlU3RhcnQoY29uc3QgVGVzdENhc2UmIC8qdGVzdF9jYXNlKi8pIHsKKyAgICBnX2V2ZW50
cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RDYXNlU3RhcnQiKSk7CisgIH0K
KworICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8mIC8qdGVzdF9pbmZv
Ki8pIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RT
dGFydCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRl
c3RQYXJ0UmVzdWx0JiAvKnRlc3RfcGFydF9yZXN1bHQqLykgeworICAgIGdfZXZlbnRzLT5wdXNo
X2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdFBhcnRSZXN1bHQiKSk7CisgIH0KKworICB2
aXJ0dWFsIHZvaWQgT25UZXN0RW5kKGNvbnN0IFRlc3RJbmZvJiAvKnRlc3RfaW5mbyovKSB7Cisg
ICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0RW5kIikpOwor
ICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdENhc2VFbmQoY29uc3QgVGVzdENhc2UmIC8qdGVz
dF9jYXNlKi8pIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJP
blRlc3RDYXNlRW5kIikpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzVGVh
ckRvd25TdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgeworICAgIGdfZXZlbnRz
LT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFy
dCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1RlYXJEb3duRW5kKGNv
bnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhH
ZXRGdWxsTWV0aG9kTmFtZSgiT25FbnZpcm9ubWVudHNUZWFyRG93bkVuZCIpKTsKKyAgfQorCisg
IHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90
ZXN0Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGl0ZXJhdGlvbikg
eworICAgIE1lc3NhZ2UgbWVzc2FnZTsKKyAgICBtZXNzYWdlIDw8IEdldEZ1bGxNZXRob2ROYW1l
KCJPblRlc3RJdGVyYXRpb25FbmQiKQorICAgICAgICAgICAgPDwgIigiICA8PCBpdGVyYXRpb24g
PDwgIikiOworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2sobWVzc2FnZS5HZXRTdHJpbmcoKSk7Cisg
IH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0UHJvZ3JhbUVuZChjb25zdCBVbml0VGVzdCYgLyp1
bml0X3Rlc3QqLykgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUo
Ik9uVGVzdFByb2dyYW1FbmQiKSk7CisgIH0KKworIHByaXZhdGU6CisgIHN0ZDo6c3RyaW5nIEdl
dEZ1bGxNZXRob2ROYW1lKGNvbnN0IGNoYXIqIG5hbWUpIHsKKyAgICByZXR1cm4gbmFtZV8gKyAi
LiIgKyBuYW1lOworICB9CisKKyAgc3RkOjpzdHJpbmcgbmFtZV87Cit9OworCitjbGFzcyBFbnZp
cm9ubWVudEludm9jYXRpb25DYXRjaGVyIDogcHVibGljIEVudmlyb25tZW50IHsKKyBwcm90ZWN0
ZWQ6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKCJF
bnZpcm9ubWVudDo6U2V0VXAiKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsK
KyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKCJFbnZpcm9ubWVudDo6VGVhckRvd24iKTsKKyAgfQor
fTsKKworY2xhc3MgTGlzdGVuZXJUZXN0IDogcHVibGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAg
c3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKCJM
aXN0ZW5lclRlc3Q6OlNldFVwVGVzdENhc2UiKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFRlYXJE
b3duVGVzdENhc2UoKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0OjpU
ZWFyRG93blRlc3RDYXNlIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAg
Z19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0OjpTZXRVcCIpOworICB9CisKKyAgdmly
dHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVy
VGVzdDo6VGVhckRvd24iKTsKKyAgfQorfTsKKworVEVTVF9GKExpc3RlbmVyVGVzdCwgRG9lc0Zv
bykgeworICAvLyBUZXN0IGV4ZWN1dGlvbiBvcmRlciB3aXRoaW4gYSB0ZXN0IGNhc2UgaXMgbm90
IGd1YXJhbnRlZWQgc28gd2UgYXJlIG5vdAorICAvLyByZWNvcmRpbmcgdGhlIHRlc3QgbmFtZS4K
KyAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIpOworICBT
VUNDRUVEKCk7ICAvLyBUcmlnZ2VycyBPblRlc3RQYXJ0UmVzdWx0LgorfQorCitURVNUX0YoTGlz
dGVuZXJUZXN0LCBEb2VzQmFyKSB7CisgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVyVGVz
dDo6KiBUZXN0IEJvZHkiKTsKKyAgU1VDQ0VFRCgpOyAgLy8gVHJpZ2dlcnMgT25UZXN0UGFydFJl
c3VsdC4KK30KKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKK30gIC8vIG5hbWVzcGFjZSB0
ZXN0aW5nCisKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OkVudmlyb25tZW50SW52b2NhdGlv
bkNhdGNoZXI7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpFdmVudFJlY29yZGluZ0xpc3Rl
bmVyOworCit2b2lkIFZlcmlmeVJlc3VsdHMoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
JiBkYXRhLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0KiBleHBlY3RlZF9k
YXRhLAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBleHBlY3RlZF9kYXRhX3NpemUpIHsKKyAg
Y29uc3Qgc2l6ZV90IGFjdHVhbF9zaXplID0gZGF0YS5zaXplKCk7CisgIC8vIElmIHRoZSBmb2xs
b3dpbmcgYXNzZXJ0aW9uIGZhaWxzLCBhIG5ldyBlbnRyeSB3aWxsIGJlIGFwcGVuZGVkIHRvCisg
IC8vIGRhdGEuICBIZW5jZSB3ZSBzYXZlIGRhdGEuc2l6ZSgpIGZpcnN0LgorICBFWFBFQ1RfRVEo
ZXhwZWN0ZWRfZGF0YV9zaXplLCBhY3R1YWxfc2l6ZSk7CisKKyAgLy8gQ29tcGFyZXMgdGhlIGNv
bW1vbiBwcmVmaXguCisgIGNvbnN0IHNpemVfdCBzaG9ydGVyX3NpemUgPSBleHBlY3RlZF9kYXRh
X3NpemUgPD0gYWN0dWFsX3NpemUgPworICAgICAgZXhwZWN0ZWRfZGF0YV9zaXplIDogYWN0dWFs
X3NpemU7CisgIHNpemVfdCBpID0gMDsKKyAgZm9yICg7IGkgPCBzaG9ydGVyX3NpemU7ICsraSkg
eworICAgIEFTU0VSVF9TVFJFUShleHBlY3RlZF9kYXRhW2ldLCBkYXRhW2ldLmNfc3RyKCkpCisg
ICAgICAgIDw8ICJhdCBwb3NpdGlvbiAiIDw8IGk7CisgIH0KKworICAvLyBQcmludHMgZXh0cmEg
ZWxlbWVudHMgaW4gdGhlIGFjdHVhbCBkYXRhLgorICBmb3IgKDsgaSA8IGFjdHVhbF9zaXplOyAr
K2kpIHsKKyAgICBwcmludGYoIiAgQWN0dWFsIGV2ZW50ICMlbHU6ICVzXG4iLAorICAgICAgICBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpKSwgZGF0YVtpXS5jX3N0cigpKTsKKyAgfQorfQor
CitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpz
dHJpbmc+IGV2ZW50czsKKyAgZ19ldmVudHMgPSAmZXZlbnRzOworICBJbml0R29vZ2xlVGVzdCgm
YXJnYywgYXJndik7CisKKyAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpLkFw
cGVuZCgKKyAgICAgIG5ldyBFdmVudFJlY29yZGluZ0xpc3RlbmVyKCIxc3QiKSk7CisgIFVuaXRU
ZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKS5BcHBlbmQoCisgICAgICBuZXcgRXZlbnRS
ZWNvcmRpbmdMaXN0ZW5lcigiMm5kIikpOworCisgIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChu
ZXcgRW52aXJvbm1lbnRJbnZvY2F0aW9uQ2F0Y2hlcik7CisKKyAgR1RFU1RfQ0hFQ0tfKGV2ZW50
cy5zaXplKCkgPT0gMCkKKyAgICAgIDw8ICJBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQgc2hvdWxk
IG5vdCBnZW5lcmF0ZSBhbnkgZXZlbnRzIGl0c2VsZi4iOworCisgIDo6dGVzdGluZzo6R1RFU1Rf
RkxBRyhyZXBlYXQpID0gMjsKKyAgaW50IHJldF92YWwgPSBSVU5fQUxMX1RFU1RTKCk7CisKKyAg
Y29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRfZXZlbnRzW10gPSB7CisgICAgIjFzdC5PblRlc3RQ
cm9ncmFtU3RhcnQiLAorICAgICIybmQuT25UZXN0UHJvZ3JhbVN0YXJ0IiwKKyAgICAiMXN0Lk9u
VGVzdEl0ZXJhdGlvblN0YXJ0KDApIiwKKyAgICAiMm5kLk9uVGVzdEl0ZXJhdGlvblN0YXJ0KDAp
IiwKKyAgICAiMXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIsCisgICAgIjJuZC5PbkVudmly
b25tZW50c1NldFVwU3RhcnQiLAorICAgICJFbnZpcm9ubWVudDo6U2V0VXAiLAorICAgICIybmQu
T25FbnZpcm9ubWVudHNTZXRVcEVuZCIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVwRW5k
IiwKKyAgICAiMXN0Lk9uVGVzdENhc2VTdGFydCIsCisgICAgIjJuZC5PblRlc3RDYXNlU3RhcnQi
LAorICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwVGVzdENhc2UiLAorICAgICIxc3QuT25UZXN0U3Rh
cnQiLAorICAgICIybmQuT25UZXN0U3RhcnQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwK
KyAgICAiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCisgICAgIjFzdC5PblRlc3RQYXJ0UmVz
dWx0IiwKKyAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlRl
YXJEb3duIiwKKyAgICAiMm5kLk9uVGVzdEVuZCIsCisgICAgIjFzdC5PblRlc3RFbmQiLAorICAg
ICIxc3QuT25UZXN0U3RhcnQiLAorICAgICIybmQuT25UZXN0U3RhcnQiLAorICAgICJMaXN0ZW5l
clRlc3Q6OlNldFVwIiwKKyAgICAiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCisgICAgIjFz
dC5PblRlc3RQYXJ0UmVzdWx0IiwKKyAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAorICAgICJM
aXN0ZW5lclRlc3Q6OlRlYXJEb3duIiwKKyAgICAiMm5kLk9uVGVzdEVuZCIsCisgICAgIjFzdC5P
blRlc3RFbmQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duVGVzdENhc2UiLAorICAgICIy
bmQuT25UZXN0Q2FzZUVuZCIsCisgICAgIjFzdC5PblRlc3RDYXNlRW5kIiwKKyAgICAiMXN0Lk9u
RW52aXJvbm1lbnRzVGVhckRvd25TdGFydCIsCisgICAgIjJuZC5PbkVudmlyb25tZW50c1RlYXJE
b3duU3RhcnQiLAorICAgICJFbnZpcm9ubWVudDo6VGVhckRvd24iLAorICAgICIybmQuT25FbnZp
cm9ubWVudHNUZWFyRG93bkVuZCIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5k
IiwKKyAgICAiMm5kLk9uVGVzdEl0ZXJhdGlvbkVuZCgwKSIsCisgICAgIjFzdC5PblRlc3RJdGVy
YXRpb25FbmQoMCkiLAorICAgICIxc3QuT25UZXN0SXRlcmF0aW9uU3RhcnQoMSkiLAorICAgICIy
bmQuT25UZXN0SXRlcmF0aW9uU3RhcnQoMSkiLAorICAgICIxc3QuT25FbnZpcm9ubWVudHNTZXRV
cFN0YXJ0IiwKKyAgICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIsCisgICAgIkVudmly
b25tZW50OjpTZXRVcCIsCisgICAgIjJuZC5PbkVudmlyb25tZW50c1NldFVwRW5kIiwKKyAgICAi
MXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiLAorICAgICIxc3QuT25UZXN0Q2FzZVN0YXJ0IiwK
KyAgICAiMm5kLk9uVGVzdENhc2VTdGFydCIsCisgICAgIkxpc3RlbmVyVGVzdDo6U2V0VXBUZXN0
Q2FzZSIsCisgICAgIjFzdC5PblRlc3RTdGFydCIsCisgICAgIjJuZC5PblRlc3RTdGFydCIsCisg
ICAgIkxpc3RlbmVyVGVzdDo6U2V0VXAiLAorICAgICJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5
IiwKKyAgICAiMXN0Lk9uVGVzdFBhcnRSZXN1bHQiLAorICAgICIybmQuT25UZXN0UGFydFJlc3Vs
dCIsCisgICAgIkxpc3RlbmVyVGVzdDo6VGVhckRvd24iLAorICAgICIybmQuT25UZXN0RW5kIiwK
KyAgICAiMXN0Lk9uVGVzdEVuZCIsCisgICAgIjFzdC5PblRlc3RTdGFydCIsCisgICAgIjJuZC5P
blRlc3RTdGFydCIsCisgICAgIkxpc3RlbmVyVGVzdDo6U2V0VXAiLAorICAgICJMaXN0ZW5lclRl
c3Q6OiogVGVzdCBCb2R5IiwKKyAgICAiMXN0Lk9uVGVzdFBhcnRSZXN1bHQiLAorICAgICIybmQu
T25UZXN0UGFydFJlc3VsdCIsCisgICAgIkxpc3RlbmVyVGVzdDo6VGVhckRvd24iLAorICAgICIy
bmQuT25UZXN0RW5kIiwKKyAgICAiMXN0Lk9uVGVzdEVuZCIsCisgICAgIkxpc3RlbmVyVGVzdDo6
VGVhckRvd25UZXN0Q2FzZSIsCisgICAgIjJuZC5PblRlc3RDYXNlRW5kIiwKKyAgICAiMXN0Lk9u
VGVzdENhc2VFbmQiLAorICAgICIxc3QuT25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0IiwKKyAg
ICAiMm5kLk9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydCIsCisgICAgIkVudmlyb25tZW50OjpU
ZWFyRG93biIsCisgICAgIjJuZC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5kIiwKKyAgICAiMXN0
Lk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiLAorICAgICIybmQuT25UZXN0SXRlcmF0aW9uRW5k
KDEpIiwKKyAgICAiMXN0Lk9uVGVzdEl0ZXJhdGlvbkVuZCgxKSIsCisgICAgIjJuZC5PblRlc3RQ
cm9ncmFtRW5kIiwKKyAgICAiMXN0Lk9uVGVzdFByb2dyYW1FbmQiCisgIH07CisgIFZlcmlmeVJl
c3VsdHMoZXZlbnRzLAorICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V2ZW50cywKKyAgICAgICAg
ICAgICAgICBzaXplb2YoZXhwZWN0ZWRfZXZlbnRzKS9zaXplb2YoZXhwZWN0ZWRfZXZlbnRzWzBd
KSk7CisKKyAgLy8gV2UgbmVlZCB0byBjaGVjayBtYW51YWxseSBmb3IgYWQgaG9jIHRlc3QgZmFp
bHVyZXMgdGhhdCBoYXBwZW4gYWZ0ZXIKKyAgLy8gUlVOX0FMTF9URVNUUyBmaW5pc2hlcy4KKyAg
aWYgKFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5GYWlsZWQoKSkKKyAgICByZXRfdmFsID0gMTsK
KworICByZXR1cm4gcmV0X3ZhbDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ29vZ2xldGVzdC1tZXNzYWdlLXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtbWVzc2FnZS10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2NDQ1ODUz
ZTQzM2QzYzE0MzQ1MjU3MzkxYTZiOTg4YTlkMzgwZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbWVzc2FnZS10ZXN0LmNjCkBAIC0w
LDAgKzEsMTU4IEBACisvLyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKy8vCisvLyBUZXN0cyBmb3IgdGhlIE1lc3NhZ2UgY2xhc3MuCisKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC1tZXNzYWdlLmgiCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3Bh
Y2UgeworCit1c2luZyA6OnRlc3Rpbmc6Ok1lc3NhZ2U7CisKKy8vIFRlc3RzIHRoZSB0ZXN0aW5n
OjpNZXNzYWdlIGNsYXNzCisKKy8vIFRlc3RzIHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yLgorVEVT
VChNZXNzYWdlVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yKSB7CisgIGNvbnN0IE1lc3NhZ2UgbXNn
OworICBFWFBFQ1RfRVEoIiIsIG1zZy5HZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRlc3RzIHRoZSBj
b3B5IGNvbnN0cnVjdG9yLgorVEVTVChNZXNzYWdlVGVzdCwgQ29weUNvbnN0cnVjdG9yKSB7Cisg
IGNvbnN0IE1lc3NhZ2UgbXNnMSgiSGVsbG8iKTsKKyAgY29uc3QgTWVzc2FnZSBtc2cyKG1zZzEp
OworICBFWFBFQ1RfRVEoIkhlbGxvIiwgbXNnMi5HZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRlc3Rz
IGNvbnN0cnVjdGluZyBhIE1lc3NhZ2UgZnJvbSBhIEMtc3RyaW5nLgorVEVTVChNZXNzYWdlVGVz
dCwgQ29uc3RydWN0c0Zyb21DU3RyaW5nKSB7CisgIE1lc3NhZ2UgbXNnKCJIZWxsbyIpOworICBF
WFBFQ1RfRVEoIkhlbGxvIiwgbXNnLkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMgc3RyZWFt
aW5nIGEgZmxvYXQuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zRmxvYXQpIHsKKyAgY29uc3Qg
c3RkOjpzdHJpbmcgcyA9IChNZXNzYWdlKCkgPDwgMS4yMzQ1NkYgPDwgIiAiIDw8IDIuMzQ1NjdG
KS5HZXRTdHJpbmcoKTsKKyAgLy8gQm90aCBudW1iZXJzIHNob3VsZCBiZSBwcmludGVkIHdpdGgg
ZW5vdWdoIHByZWNpc2lvbi4KKyAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0
cmluZywgIjEuMjM0NTYwIiwgcy5jX3N0cigpKTsKKyAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0
aW5nOjpJc1N1YnN0cmluZywgIiAyLjM0NTY2OSIsIHMuY19zdHIoKSk7Cit9CisKKy8vIFRlc3Rz
IHN0cmVhbWluZyBhIGRvdWJsZS4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNEb3VibGUpIHsK
KyAgY29uc3Qgc3RkOjpzdHJpbmcgcyA9IChNZXNzYWdlKCkgPDwgMTI2MDU3MDg4MC40NTU1NDk3
IDw8ICIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDEyNjA1NzIyNjUu
MTk1NDUzNCkuR2V0U3RyaW5nKCk7CisgIC8vIEJvdGggbnVtYmVycyBzaG91bGQgYmUgcHJpbnRl
ZCB3aXRoIGVub3VnaCBwcmVjaXNpb24uCisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6
SXNTdWJzdHJpbmcsICIxMjYwNTcwODgwLjQ1Iiwgcy5jX3N0cigpKTsKKyAgRVhQRUNUX1BSRURf
Rk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIiAxMjYwNTcyMjY1LjE5Iiwgcy5jX3N0cigp
KTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGEgbm9uLWNoYXIgcG9pbnRlci4KK1RFU1QoTWVz
c2FnZVRlc3QsIFN0cmVhbXNQb2ludGVyKSB7CisgIGludCBuID0gMDsKKyAgaW50KiBwID0gJm47
CisgIEVYUEVDVF9ORSgiKG51bGwpIiwgKE1lc3NhZ2UoKSA8PCBwKS5HZXRTdHJpbmcoKSk7Cit9
CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIE5VTEwgbm9uLWNoYXIgcG9pbnRlci4KK1RFU1QoTWVz
c2FnZVRlc3QsIFN0cmVhbXNOdWxsUG9pbnRlcikgeworICBpbnQqIHAgPSBOVUxMOworICBFWFBF
Q1RfRVEoIihudWxsKSIsIChNZXNzYWdlKCkgPDwgcCkuR2V0U3RyaW5nKCkpOworfQorCisvLyBU
ZXN0cyBzdHJlYW1pbmcgYSBDIHN0cmluZy4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNDU3Ry
aW5nKSB7CisgIEVYUEVDVF9FUSgiRm9vIiwgKE1lc3NhZ2UoKSA8PCAiRm9vIikuR2V0U3RyaW5n
KCkpOworfQorCisvLyBUZXN0cyBzdHJlYW1pbmcgYSBOVUxMIEMgc3RyaW5nLgorVEVTVChNZXNz
YWdlVGVzdCwgU3RyZWFtc051bGxDU3RyaW5nKSB7CisgIGNoYXIqIHAgPSBOVUxMOworICBFWFBF
Q1RfRVEoIihudWxsKSIsIChNZXNzYWdlKCkgPDwgcCkuR2V0U3RyaW5nKCkpOworfQorCisvLyBU
ZXN0cyBzdHJlYW1pbmcgc3RkOjpzdHJpbmcuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zU3Ry
aW5nKSB7CisgIGNvbnN0IDo6c3RkOjpzdHJpbmcgc3RyKCJIZWxsbyIpOworICBFWFBFQ1RfRVEo
IkhlbGxvIiwgKE1lc3NhZ2UoKSA8PCBzdHIpLkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMg
dGhhdCB3ZSBjYW4gb3V0cHV0IHN0cmluZ3MgY29udGFpbmluZyBlbWJlZGRlZCBOVUxzLgorVEVT
VChNZXNzYWdlVGVzdCwgU3RyZWFtc1N0cmluZ1dpdGhFbWJlZGRlZE5VTCkgeworICBjb25zdCBj
aGFyIGNoYXJfYXJyYXlfd2l0aF9udWxbXSA9CisgICAgICAiSGVyZSdzIGEgTlVMXDAgYW5kIHNv
bWUgbW9yZSBzdHJpbmciOworICBjb25zdCA6OnN0ZDo6c3RyaW5nIHN0cmluZ193aXRoX251bChj
aGFyX2FycmF5X3dpdGhfbnVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplb2YoY2hhcl9hcnJheV93aXRoX251bCkgLSAxKTsKKyAgRVhQRUNUX0VRKCJIZXJlJ3Mg
YSBOVUxcXDAgYW5kIHNvbWUgbW9yZSBzdHJpbmciLAorICAgICAgICAgICAgKE1lc3NhZ2UoKSA8
PCBzdHJpbmdfd2l0aF9udWwpLkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5n
IGEgTlVMIGNoYXIuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zTlVMQ2hhcikgeworICBFWFBF
Q1RfRVEoIlxcMCIsIChNZXNzYWdlKCkgPDwgJ1wwJykuR2V0U3RyaW5nKCkpOworfQorCisvLyBU
ZXN0cyBzdHJlYW1pbmcgaW50LgorVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc0ludCkgeworICBF
WFBFQ1RfRVEoIjEyMyIsIChNZXNzYWdlKCkgPDwgMTIzKS5HZXRTdHJpbmcoKSk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgYmFzaWMgSU8gbWFuaXB1bGF0b3JzIChlbmRsLCBlbmRzLCBhbmQgZmx1c2gp
IGNhbiBiZQorLy8gc3RyZWFtZWQgdG8gTWVzc2FnZS4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVh
bXNCYXNpY0lvTWFuaXApIHsKKyAgRVhQRUNUX0VRKCJMaW5lIDEuXG5BIE5VTCBjaGFyIFxcMCBp
biBsaW5lIDIuIiwKKyAgICAgICAgICAgICAgIChNZXNzYWdlKCkgPDwgIkxpbmUgMS4iIDw8IHN0
ZDo6ZW5kbAorICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJBIE5VTCBjaGFyICIgPDwgc3Rk
OjplbmRzIDw8IHN0ZDo6Zmx1c2gKKyAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGluIGxp
bmUgMi4iKS5HZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRlc3RzIE1lc3NhZ2U6OkdldFN0cmluZygp
CitURVNUKE1lc3NhZ2VUZXN0LCBHZXRTdHJpbmcpIHsKKyAgTWVzc2FnZSBtc2c7CisgIG1zZyA8
PCAxIDw8ICIgbGFtYiI7CisgIEVYUEVDVF9FUSgiMSBsYW1iIiwgbXNnLkdldFN0cmluZygpKTsK
K30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGEgTWVzc2FnZSBvYmplY3QgdG8gYW4gb3N0cmVhbS4K
K1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNUb09TdHJlYW0pIHsKKyAgTWVzc2FnZSBtc2coIkhl
bGxvIik7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIHNzIDw8IG1zZzsKKyAgRVhQRUNU
X0VRKCJIZWxsbyIsIHRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmdTdHJlYW1Ub1N0cmluZygmc3Mp
KTsKK30KKworLy8gVGVzdHMgdGhhdCBhIE1lc3NhZ2Ugb2JqZWN0IGRvZXNuJ3QgdGFrZSB1cCB0
b28gbXVjaCBzdGFjayBzcGFjZS4KK1RFU1QoTWVzc2FnZVRlc3QsIERvZXNOb3RUYWtlVXBNdWNo
U3RhY2tTcGFjZSkgeworICBFWFBFQ1RfTEUoc2l6ZW9mKE1lc3NhZ2UpLCAxNlUpOworfQorCit9
ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z29vZ2xldGVzdC1vcHRpb25zLXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3Qtb3B0aW9ucy10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkZDRlYmEzYmQzMTA5NTk1
MGE4ZDk4Y2YzZGFmNmYzNGQ2NDk2OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3B0aW9ucy10ZXN0LmNjCkBAIC0wLDAgKzEsMjEx
IEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
Ky8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8g
R29vZ2xlIFRlc3QgVW5pdFRlc3RPcHRpb25zIHRlc3RzCisvLworLy8gVGhpcyBmaWxlIHRlc3Rz
IGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkgYnkKKy8vIEdvb2dsZSBUZXN0
LiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCisvLworLy8gVGhp
cyBmaWxlIGlzICNpbmNsdWRlZCBmcm9tIGd0ZXN0LmNjLCB0byBhdm9pZCBjaGFuZ2luZyBidWls
ZCBvcgorLy8gbWFrZS1maWxlcyBvbiBXaW5kb3dzIGFuZCBvdGhlciBwbGF0Zm9ybXMuIERvIG5v
dCAjaW5jbHVkZSB0aGlzIGZpbGUKKy8vIGFueXdoZXJlIGVsc2UhCisKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgorCisjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaW5jbHVkZSA8d2lu
ZG93cy5oPgorI2VsaWYgR1RFU1RfT1NfV0lORE9XUworIyBpbmNsdWRlIDxkaXJlY3QuaD4KKyNl
bmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKworI2luY2x1ZGUgInNyYy9ndGVzdC1p
bnRlcm5hbC1pbmwuaCIKKworbmFtZXNwYWNlIHRlc3RpbmcgeworbmFtZXNwYWNlIGludGVybmFs
IHsKK25hbWVzcGFjZSB7CisKKy8vIFR1cm5zIHRoZSBnaXZlbiByZWxhdGl2ZSBwYXRoIGludG8g
YW4gYWJzb2x1dGUgcGF0aC4KK0ZpbGVQYXRoIEdldEFic29sdXRlUGF0aE9mKGNvbnN0IEZpbGVQ
YXRoJiByZWxhdGl2ZV9wYXRoKSB7CisgIHJldHVybiBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmls
ZVBhdGg6OkdldEN1cnJlbnREaXIoKSwgcmVsYXRpdmVfcGF0aCk7Cit9CisKKy8vIFRlc3Rpbmcg
VW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQvR2V0T3V0cHV0RmlsZS4KKworVEVTVChY
bWxPdXRwdXRUZXN0LCBHZXRPdXRwdXRGb3JtYXREZWZhdWx0KSB7CisgIEdURVNUX0ZMQUcob3V0
cHV0KSA9ICIiOworICBFWFBFQ1RfU1RSRVEoIiIsIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0
Rm9ybWF0KCkuY19zdHIoKSk7Cit9CisKK1RFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0Rm9y
bWF0KSB7CisgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6ZmlsZW5hbWUiOworICBFWFBFQ1Rf
U1RSRVEoInhtbCIsIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCkuY19zdHIoKSk7
Cit9CisKK1RFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0RmlsZURlZmF1bHQpIHsKKyAgR1RF
U1RfRkxBRyhvdXRwdXQpID0gIiI7CisgIEVYUEVDVF9FUShHZXRBYnNvbHV0ZVBhdGhPZihGaWxl
UGF0aCgidGVzdF9kZXRhaWwueG1sIikpLnN0cmluZygpLAorICAgICAgICAgICAgVW5pdFRlc3RP
cHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSk7Cit9CisKK1RFU1QoWG1sT3V0
cHV0VGVzdCwgR2V0T3V0cHV0RmlsZVNpbmdsZUZpbGUpIHsKKyAgR1RFU1RfRkxBRyhvdXRwdXQp
ID0gInhtbDpmaWxlbmFtZS5hYmMiOworICBFWFBFQ1RfRVEoR2V0QWJzb2x1dGVQYXRoT2YoRmls
ZVBhdGgoImZpbGVuYW1lLmFiYyIpKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0
aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOworfQorCitURVNUKFhtbE91dHB1
dFRlc3QsIEdldE91dHB1dEZpbGVGcm9tRGlyZWN0b3J5UGF0aCkgeworICBHVEVTVF9GTEFHKG91
dHB1dCkgPSAieG1sOnBhdGgiIEdURVNUX1BBVEhfU0VQXzsKKyAgY29uc3Qgc3RkOjpzdHJpbmcg
ZXhwZWN0ZWRfb3V0cHV0X2ZpbGUgPQorICAgICAgR2V0QWJzb2x1dGVQYXRoT2YoCisgICAgICAg
ICAgRmlsZVBhdGgoc3RkOjpzdHJpbmcoInBhdGgiKSArIEdURVNUX1BBVEhfU0VQXyArCisgICAg
ICAgICAgICAgICAgICAgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKyAiLnht
bCIpKS5zdHJpbmcoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9maWxlID0KKyAgICAg
IFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7CisjaWYgR1RF
U1RfT1NfV0lORE9XUworICBFWFBFQ1RfU1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxlLmNf
c3RyKCksIG91dHB1dF9maWxlLmNfc3RyKCkpOworI2Vsc2UKKyAgRVhQRUNUX0VRKGV4cGVjdGVk
X291dHB1dF9maWxlLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKKyNlbmRpZgorfQorCitURVNUKE91
dHB1dEZpbGVIZWxwZXJzVGVzdCwgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKSB7CisgIGNvbnN0
IHN0ZDo6c3RyaW5nIGV4ZV9zdHIgPSBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmco
KTsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIGNvbnN0IGJvb2wgc3VjY2VzcyA9CisgICAgICBf
c3RyY21waSgiZ29vZ2xldGVzdC1vcHRpb25zLXRlc3QiLCBleGVfc3RyLmNfc3RyKCkpID09IDAg
fHwKKyAgICAgIF9zdHJjbXBpKCJndGVzdC1vcHRpb25zLWV4X3Rlc3QiLCBleGVfc3RyLmNfc3Ry
KCkpID09IDAgfHwKKyAgICAgIF9zdHJjbXBpKCJndGVzdF9hbGxfdGVzdCIsIGV4ZV9zdHIuY19z
dHIoKSkgPT0gMCB8fAorICAgICAgX3N0cmNtcGkoImd0ZXN0X2RsbF90ZXN0IiwgZXhlX3N0ci5j
X3N0cigpKSA9PSAwOworI2VsaWYgR1RFU1RfT1NfRlVDSFNJQQorICBjb25zdCBib29sIHN1Y2Nl
c3MgPSBleGVfc3RyID09ICJhcHAiOworI2Vsc2UKKyAgLy8gRklYTUU6IHJlbW92ZSB0aGUgaGFy
ZC1jb2RlZCAibHQtIiBwcmVmaXggd2hlbiBsaWJ0b29sIHJlcGxhY2VtZW50IGlzIHJlYWR5Cisg
IGNvbnN0IGJvb2wgc3VjY2VzcyA9CisgICAgICBleGVfc3RyID09ICJnb29nbGV0ZXN0LW9wdGlv
bnMtdGVzdCIgfHwKKyAgICAgIGV4ZV9zdHIgPT0gImd0ZXN0X2FsbF90ZXN0IiB8fAorICAgICAg
ZXhlX3N0ciA9PSAibHQtZ3Rlc3RfYWxsX3Rlc3QiIHx8CisgICAgICBleGVfc3RyID09ICJndGVz
dF9kbGxfdGVzdCI7CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyAgaWYgKCFzdWNjZXNz
KQorICAgIEZBSUwoKSA8PCAiR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkgcmV0dXJucyAiIDw8
IGV4ZV9zdHI7Cit9CisKKyNpZiAhR1RFU1RfT1NfRlVDSFNJQQorCitjbGFzcyBYbWxPdXRwdXRD
aGFuZ2VEaXJUZXN0IDogcHVibGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB2b2lk
IFNldFVwKCkgeworICAgIG9yaWdpbmFsX3dvcmtpbmdfZGlyXyA9IEZpbGVQYXRoOjpHZXRDdXJy
ZW50RGlyKCk7CisgICAgcG9zaXg6OkNoRGlyKCIuLiIpOworICAgIC8vIFRoaXMgd2lsbCBtYWtl
IHRoZSB0ZXN0IGZhaWwgaWYgcnVuIGZyb20gdGhlIHJvb3QgZGlyZWN0b3J5LgorICAgIEVYUEVD
VF9ORShvcmlnaW5hbF93b3JraW5nX2Rpcl8uc3RyaW5nKCksCisgICAgICAgICAgICAgIEZpbGVQ
YXRoOjpHZXRDdXJyZW50RGlyKCkuc3RyaW5nKCkpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRl
YXJEb3duKCkgeworICAgIHBvc2l4OjpDaERpcihvcmlnaW5hbF93b3JraW5nX2Rpcl8uc3RyaW5n
KCkuY19zdHIoKSk7CisgIH0KKworICBGaWxlUGF0aCBvcmlnaW5hbF93b3JraW5nX2Rpcl87Cit9
OworCitURVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtp
bmdEaXJXaXRoRGVmYXVsdCkgeworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAiIjsKKyAgRVhQRUNU
X0VRKEZpbGVQYXRoOjpDb25jYXRQYXRocyhvcmlnaW5hbF93b3JraW5nX2Rpcl8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoInRlc3RfZGV0YWlsLnhtbCIpKS5z
dHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9P
dXRwdXRGaWxlKCkpOworfQorCitURVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwgUHJlc2Vy
dmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoRGVmYXVsdFhNTCkgeworICBHVEVTVF9GTEFHKG91dHB1
dCkgPSAieG1sIjsKKyAgRVhQRUNUX0VRKEZpbGVQYXRoOjpDb25jYXRQYXRocyhvcmlnaW5hbF93
b3JraW5nX2Rpcl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgo
InRlc3RfZGV0YWlsLnhtbCIpKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9u
czo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOworfQorCitURVNUX0YoWG1sT3V0cHV0
Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoUmVsYXRpdmVGaWxl
KSB7CisgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6ZmlsZW5hbWUuYWJjIjsKKyAgRVhQRUNU
X0VRKEZpbGVQYXRoOjpDb25jYXRQYXRocyhvcmlnaW5hbF93b3JraW5nX2Rpcl8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImZpbGVuYW1lLmFiYyIpKS5zdHJp
bmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRw
dXRGaWxlKCkpOworfQorCitURVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVP
cmlnaW5hbFdvcmtpbmdEaXJXaXRoUmVsYXRpdmVQYXRoKSB7CisgIEdURVNUX0ZMQUcob3V0cHV0
KSA9ICJ4bWw6cGF0aCIgR1RFU1RfUEFUSF9TRVBfOworICBjb25zdCBzdGQ6OnN0cmluZyBleHBl
Y3RlZF9vdXRwdXRfZmlsZSA9CisgICAgICBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoCisgICAgICAg
ICAgb3JpZ2luYWxfd29ya2luZ19kaXJfLAorICAgICAgICAgIEZpbGVQYXRoKHN0ZDo6c3RyaW5n
KCJwYXRoIikgKyBHVEVTVF9QQVRIX1NFUF8gKworICAgICAgICAgICAgICAgICAgIEdldEN1cnJl
bnRFeGVjdXRhYmxlTmFtZSgpLnN0cmluZygpICsgIi54bWwiKSkuc3RyaW5nKCk7CisgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZmlsZSA9CisgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFi
c29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpOworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgRVhQRUNU
X1NUUkNBU0VFUShleHBlY3RlZF9vdXRwdXRfZmlsZS5jX3N0cigpLCBvdXRwdXRfZmlsZS5jX3N0
cigpKTsKKyNlbHNlCisgIEVYUEVDVF9FUShleHBlY3RlZF9vdXRwdXRfZmlsZSwgb3V0cHV0X2Zp
bGUuY19zdHIoKSk7CisjZW5kaWYKK30KKworVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3Qs
IFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aEFic29sdXRlRmlsZSkgeworI2lmIEdURVNU
X09TX1dJTkRPV1MKKyAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbDpjOlxcdG1wXFxmaWxlbmFt
ZS5hYmMiOworICBFWFBFQ1RfRVEoRmlsZVBhdGgoImM6XFx0bXBcXGZpbGVuYW1lLmFiYyIpLnN0
cmluZygpLAorICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091
dHB1dEZpbGUoKSk7CisjZWxzZQorICBHVEVTVF9GTEFHKG91dHB1dCkgPSJ4bWw6L3RtcC9maWxl
bmFtZS5hYmMiOworICBFWFBFQ1RfRVEoRmlsZVBhdGgoIi90bXAvZmlsZW5hbWUuYWJjIikuc3Ry
aW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0
cHV0RmlsZSgpKTsKKyNlbmRpZgorfQorCitURVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwg
UHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoQWJzb2x1dGVQYXRoKSB7CisjaWYgR1RFU1Rf
T1NfV0lORE9XUworICBjb25zdCBzdGQ6OnN0cmluZyBwYXRoID0gImM6XFx0bXBcXCI7CisjZWxz
ZQorICBjb25zdCBzdGQ6OnN0cmluZyBwYXRoID0gIi90bXAvIjsKKyNlbmRpZgorCisgIEdURVNU
X0ZMQUcob3V0cHV0KSA9ICJ4bWw6IiArIHBhdGg7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVj
dGVkX291dHB1dF9maWxlID0KKyAgICAgIHBhdGggKyBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUo
KS5zdHJpbmcoKSArICIueG1sIjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9maWxlID0K
KyAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7CisK
KyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIEVYUEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWRfb3V0cHV0
X2ZpbGUuY19zdHIoKSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7CisjZWxzZQorICBFWFBFQ1RfRVEo
ZXhwZWN0ZWRfb3V0cHV0X2ZpbGUsIG91dHB1dF9maWxlLmNfc3RyKCkpOworI2VuZGlmCit9CisK
KyNlbmRpZiAgLy8gIUdURVNUX09TX0ZVQ0hTSUEKKworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBu
YW1lc3BhY2UgaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3QtZ29sZGVu
LWxpbi50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0
LXRlc3QtZ29sZGVuLWxpbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzcxMWNkYzY4YWU1MzhjY2U5ZTM5ODRi
Y2UxYjdhYjY1YWE2MmE1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ29vZ2xldGVzdC1vdXRwdXQtdGVzdC1nb2xkZW4tbGluLnR4dApAQCAtMCwwICsx
LDEwNDcgQEAKK1RoZSBub24tdGVzdCBwYXJ0IG9mIHRoZSBjb2RlIGlzIGV4cGVjdGVkIHRvIGhh
dmUgMiBmYWlsdXJlcy4KKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQor
VmFsdWUgb2Y6IGZhbHNlCisgIEFjdHVhbDogZmFsc2UKK0V4cGVjdGVkOiB0cnVlCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUK
K0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMgorICAzCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKKxtbMDszMm1bPT09PT09PT09PV0gG1ttUnVubmluZyA3NiB0ZXN0cyBm
cm9tIDM0IHRlc3QgY2FzZXMuCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbUdsb2JhbCB0ZXN0IGVu
dmlyb25tZW50IHNldC11cC4KK0Zvb0Vudmlyb25tZW50OjpTZXRVcCgpIGNhbGxlZC4KK0JhckVu
dmlyb25tZW50OjpTZXRVcCgpIGNhbGxlZC4KKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0
IGZyb20gQURlYXRoVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21BRGVhdGhUZXN0LlNob3Vs
ZFJ1bkZpcnN0CisbWzA7MzJtWyAgICAgICBPSyBdIBtbbUFEZWF0aFRlc3QuU2hvdWxkUnVuRmly
c3QKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gQVR5cGVkRGVhdGhUZXN0LzAs
IHdoZXJlIFR5cGVQYXJhbSA9IGludAorG1swOzMybVsgUlVOICAgICAgXSAbW21BVHlwZWREZWF0
aFRlc3QvMC5TaG91bGRSdW5GaXJzdAorG1swOzMybVsgICAgICAgT0sgXSAbW21BVHlwZWREZWF0
aFRlc3QvMC5TaG91bGRSdW5GaXJzdAorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJv
bSBBVHlwZWREZWF0aFRlc3QvMSwgd2hlcmUgVHlwZVBhcmFtID0gZG91YmxlCisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbUFUeXBlZERlYXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0CisbWzA7MzJtWyAg
ICAgICBPSyBdIBtbbUFUeXBlZERlYXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0CisbWzA7MzJtWy0t
LS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMCwgd2hlcmUg
VHlwZVBhcmFtID0gaW50CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbU15L0FUeXBlUGFyYW1EZWF0
aFRlc3QvMC5TaG91bGRSdW5GaXJzdAorG1swOzMybVsgICAgICAgT0sgXSAbW21NeS9BVHlwZVBh
cmFtRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0
ZXN0IGZyb20gTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8xLCB3aGVyZSBUeXBlUGFyYW0gPSBkb3Vi
bGUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8xLlNob3Vs
ZFJ1bkZpcnN0CisbWzA7MzJtWyAgICAgICBPSyBdIBtbbU15L0FUeXBlUGFyYW1EZWF0aFRlc3Qv
MS5TaG91bGRSdW5GaXJzdAorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gUGFz
c2luZ1Rlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3Qx
CisbWzA7MzJtWyAgICAgICBPSyBdIBtbbVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MQorG1swOzMy
bVsgUlVOICAgICAgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDIKKxtbMDszMm1bICAgICAg
IE9LIF0gG1ttUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtb
bTIgdGVzdHMgZnJvbSBOb25mYXRhbEZhaWx1cmVUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtb
bU5vbmZhdGFsRmFpbHVyZVRlc3QuRXNjYXBlc1N0cmluZ09wZXJhbmRzCitnb29nbGV0ZXN0LW91
dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1
ZXM6CisgIGtHb2xkZW5TdHJpbmcKKyAgICBXaGljaCBpczogIlwiTGluZSIKKyAgYWN0dWFsCisg
ICAgV2hpY2ggaXM6ICJhY3R1YWwgXCJzdHJpbmdcIiIKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkK
KworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxp
dHkgb2YgdGhlc2UgdmFsdWVzOgorICBnb2xkZW4KKyAgICBXaGljaCBpczogIlwiTGluZSIKKyAg
YWN0dWFsCisgICAgV2hpY2ggaXM6ICJhY3R1YWwgXCJzdHJpbmdcIiIKK1N0YWNrIHRyYWNlOiAo
b21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkVz
Y2FwZXNTdHJpbmdPcGVyYW5kcworG1swOzMybVsgUlVOICAgICAgXSAbW21Ob25mYXRhbEZhaWx1
cmVUZXN0LkRpZmZGb3JMb25nU3RyaW5ncworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izog
RmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICBnb2xkZW5fc3Ry
CisgICAgV2hpY2ggaXM6ICJcIkxpbmVcMCAxXCJcbkxpbmUgMiIKKyAgIkxpbmUgMiIKK1dpdGgg
ZGlmZjoKK0BAIC0xLDIgQEAKKy1cIkxpbmVcMCAxXCIKKyBMaW5lIDIKKworU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbmZhdGFsRmFpbHVyZVRlc3Qu
RGlmZkZvckxvbmdTdHJpbmdzCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTMgdGVzdHMgZnJvbSBG
YXRhbEZhaWx1cmVUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZVRlc3Qu
RmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCisoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hv
dWxkIGJlIDEpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3Rl
ZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAgeAorICAgIFdoaWNoIGlzOiAyCitT
dGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWls
dXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1tt
RmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKKyhleHBlY3Rp
bmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQor
ICB4CisgICAgV2hpY2ggaXM6IDIKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91
dGluZQorG1swOzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFp
bHVyZUluU3Vicm91dGluZQorKGV4cGVjdGluZyBhIGZhaWx1cmUgb24gZmFsc2UpCitnb29nbGV0
ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitWYWx1ZSBvZjogZmFsc2UKKyAgQWN0dWFs
OiBmYWxzZQorRXhwZWN0ZWQ6IHRydWUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91
dGluZQorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBMb2dnaW5nVGVzdAorG1sw
OzMybVsgUlVOICAgICAgXSAbW21Mb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNz
ZXJ0aW9ucworKGV4cGVjdGluZyAyIGZhaWx1cmVzIG9uICgzKSA+PSAoYVtpXSkpCitpID09IDAK
K2kgPT0gMQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6
ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA5CitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisK
K2kgPT0gMgoraSA9PSAzCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitF
eHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDYKK1N0YWNrIHRyYWNlOiAob21p
dHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Mb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdM
b2dnaW5nQW5kQXNzZXJ0aW9ucworG1swOzMybVstLS0tLS0tLS0tXSAbW203IHRlc3RzIGZyb20g
U0NPUEVEX1RSQUNFVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0
LkFjY2VwdGVkVmFsdWVzCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitG
YWlsZWQKK0p1c3QgY2hlY2tpbmcgdGhhdCBhbGwgdGhlc2UgdmFsdWVzIHdvcmsgZmluZS4KK0dv
b2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogKG51bGwpCitn
b29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiAxMzM3Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0
Xy5jYzojOiBzdGQ6OnN0cmluZworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogbGl0ZXJh
bCBzdHJpbmcKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21TQ09QRURfVFJBQ0VUZXN0LkFjY2VwdGVkVmFsdWVzCisbWzA7MzJtWyBSVU4gICAgICBdIBtb
bVNDT1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMKKyhleHBlY3RlZCB0byBmYWlsKQorZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitUaGlzIGZhaWx1cmUgaXMg
ZXhwZWN0ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNlLgorU3RhY2sgdHJhY2U6IChvbWl0
dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK1Ro
aXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBoYXZlIGEgdHJhY2UuCitHb29nbGUg
VGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEV4cGVjdGVkIHRyYWNl
CitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6
IEZhaWx1cmUKK0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkbid0
IGhhdmUgYSB0cmFjZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lk9iZXlzU2NvcGVzCisbWzA7MzJtWyBSVU4gICAgICBd
IBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJbkxvb3AKKyhleHBlY3RlZCB0byBmYWlsKQorZ29v
Z2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2Yg
dGhlc2UgdmFsdWVzOgorICAyCisgIG4KKyAgICBXaGljaCBpczogMQorR29vZ2xlIFRlc3QgdHJh
Y2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBpID0gMQorU3RhY2sgdHJhY2U6IChv
bWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3Rl
ZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAgbgorICAgIFdoaWNoIGlzOiAyCitH
b29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IGkgPSAyCitT
dGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RS
QUNFVGVzdC5Xb3Jrc0luTG9vcAorG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VU
ZXN0LldvcmtzSW5TdWJyb3V0aW5lCisoZXhwZWN0ZWQgdG8gZmFpbCkKK2dvb2dsZXRlc3Qtb3V0
cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVl
czoKKyAgMgorICBuCisgICAgV2hpY2ggaXM6IDEKK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogbiA9IDEKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKwor
Z29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkg
b2YgdGhlc2UgdmFsdWVzOgorICAxCisgIG4KKyAgICBXaGljaCBpczogMgorR29vZ2xlIFRlc3Qg
dHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBuID0gMgorU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29y
a3NJblN1YnJvdXRpbmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5D
YW5CZU5lc3RlZAorKGV4cGVjdGVkIHRvIGZhaWwpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5j
YzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAg
bgorICAgIFdoaWNoIGlzOiAyCitHb29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0
LXRlc3RfLmNjOiM6IG4gPSAyCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiAKK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VU
ZXN0LkNhbkJlTmVzdGVkCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3Qu
Q2FuQmVSZXBlYXRlZAorKGV4cGVjdGVkIHRvIGZhaWwpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0
Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK1RoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNo
b3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEuCitHb29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRl
c3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEEKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitUaGlzIGZhaWx1cmUgaXMg
ZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBIGFuZCBCLgorR29vZ2xl
IFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBCCitnb29nbGV0ZXN0
LW91dHB1dC10ZXN0Xy5jYzojOiBBCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRl
c3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlzIGV4
cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEMuCitHb29n
bGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEMKK2dvb2dsZXRl
c3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEIKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEEK
K1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izog
RmFpbHVyZQorRmFpbGVkCitUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29u
dGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQgRC4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRAorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izog
QgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogQQorU3RhY2sgdHJhY2U6IChvbWl0dGVk
KQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVSZXBlYXRl
ZAorG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzQ29uY3VycmVu
dGx5CisoZXhwZWN0aW5nIDYgZmFpbHVyZXMpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzoj
OiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzEgKGluIHRocmVhZCBCLCBvbmx5
IHRyYWNlIEIgYWxpdmUpLgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBUcmFjZSBCCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMiAo
aW4gdGhyZWFkIEEsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLgorR29vZ2xlIFRlc3QgdHJhY2U6
Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBUcmFjZSBBCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAor
RXhwZWN0ZWQgZmFpbHVyZSAjMyAoaW4gdGhyZWFkIEIsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUp
LgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBUcmFj
ZSBCCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNj
OiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjNCAoaW4gdGhyZWFkIEIsIG9u
bHkgdHJhY2UgQSBhbGl2ZSkuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjNSAo
aW4gdGhyZWFkIEEsIG9ubHkgdHJhY2UgQSBhbGl2ZSkuCitHb29nbGUgVGVzdCB0cmFjZToKK2dv
b2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IFRyYWNlIEEKK1N0YWNrIHRyYWNlOiAob21pdHRl
ZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBl
Y3RlZCBmYWlsdXJlICM2IChpbiB0aHJlYWQgQSwgbm8gdHJhY2UgYWxpdmUpLgorU3RhY2sgdHJh
Y2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3Qu
V29ya3NDb25jdXJyZW50bHkKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gU2Nv
cGVkVHJhY2VUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVNjb3BlZFRyYWNlVGVzdC5XaXRo
RXhwbGljaXRGaWxlQW5kTGluZQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVy
ZQorRmFpbGVkCitDaGVjayB0aGF0IHRoZSB0cmFjZSBpcyBhdHRhY2hlZCB0byBhIHBhcnRpY3Vs
YXIgbG9jYXRpb24uCitHb29nbGUgVGVzdCB0cmFjZToKK2V4cGxpY2l0X2ZpbGUuY2M6MTIzOiBl
eHBlY3RlZCB0cmFjZSBtZXNzYWdlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttU2NvcGVkVHJhY2VUZXN0LldpdGhFeHBsaWNpdEZpbGVBbmRMaW5lCisb
WzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIE5vbkZhdGFsRmFpbHVyZUluRml4dHVy
ZUNvbnN0cnVjdG9yVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21Ob25GYXRhbEZhaWx1cmVJ
bkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKKyhleHBlY3Rpbmcg
NSBmYWlsdXJlcykKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxl
ZAorRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4KK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVy
ZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBTZXRVcCgpLgorU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWls
ZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGJvZHkuCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxl
ZAorRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gVGVhckRvd24uCitTdGFjayB0cmFjZTogKG9taXR0
ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhw
ZWN0ZWQgZmFpbHVyZSAjNSwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJbkZp
eHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKKxtbMDszMm1bLS0tLS0t
LS0tLV0gG1ttMSB0ZXN0IGZyb20gRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0
CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9y
VGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgorKGV4cGVjdGluZyAyIGZhaWx1cmVzKQorZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJl
ICMxLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGMndG9yLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQor
Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVk
IGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29u
c3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtb
bTEgdGVzdCBmcm9tIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0CisbWzA7MzJtWyBSVU4gICAg
ICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCisoZXhwZWN0
aW5nIDQgZmFpbHVyZXMpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitG
YWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCkuCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAor
RXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZnVuY3Rpb24uCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxl
ZAorRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gVGVhckRvd24oKS4KK1N0YWNrIHRyYWNlOiAob21p
dHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitF
eHBlY3RlZCBmYWlsdXJlICM0LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgorU3RhY2sgdHJh
Y2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVyZUlu
U2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBm
cm9tIEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFs
RmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCisoZXhwZWN0aW5nIDMgZmFpbHVyZXMp
Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVk
IGZhaWx1cmUgIzEsIGluIFNldFVwKCkuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVy
ZSAjMiwgaW4gVGVhckRvd24oKS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMz
LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisb
WzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNl
dFVwCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEFkZEZhaWx1cmVBdFRlc3QK
KxtbMDszMm1bIFJVTiAgICAgIF0gG1ttQWRkRmFpbHVyZUF0VGVzdC5NZXNzYWdlQ29udGFpbnNT
cGVjaWZpZWRGaWxlQW5kTGluZU51bWJlcgorZm9vLmNjOjQyOiBGYWlsdXJlCitGYWlsZWQKK0V4
cGVjdGVkIGZhaWx1cmUgaW4gZm9vLmNjCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttQWRkRmFpbHVyZUF0VGVzdC5NZXNzYWdlQ29udGFpbnNTcGVjaWZp
ZWRGaWxlQW5kTGluZU51bWJlcgorG1swOzMybVstLS0tLS0tLS0tXSAbW200IHRlc3RzIGZyb20g
TWl4ZWRVcFRlc3RDYXNlVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENh
c2VUZXN0LkZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28KKxtbMDszMm1bICAgICAgIE9LIF0gG1tt
TWl4ZWRVcFRlc3RDYXNlVGVzdC5GaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vCisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuU2Vjb25kVGVzdEZyb21OYW1lc3BhY2VG
b28KKxtbMDszMm1bICAgICAgIE9LIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5TZWNvbmRUZXN0
RnJvbU5hbWVzcGFjZUZvbworG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VU
ZXN0LlRoaXNTaG91bGRGYWlsCitndGVzdC5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0FsbCB0ZXN0
cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCitj
bGFzcy4gIEhvd2V2ZXIsIGluIHRlc3QgY2FzZSBNaXhlZFVwVGVzdENhc2VUZXN0LAoreW91IGRl
ZmluZWQgdGVzdCBGaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vIGFuZCB0ZXN0IFRoaXNTaG91bGRG
YWlsCit1c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAgVGhpcyBjYW4g
aGFwcGVuIGlmCit0aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMg
b3IgdHJhbnNsYXRpb24KK3VuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZb3Ugc2hvdWxk
IHByb2JhYmx5IHJlbmFtZSBvbmUKK29mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50
byBkaWZmZXJlbnQgdGVzdCBjYXNlcy4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsCisbWzA7
MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWxUb28K
K2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3Qg
Y2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKK2NsYXNzLiAgSG93ZXZlciwgaW4g
dGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVRlc3QsCit5b3UgZGVmaW5lZCB0ZXN0IEZpcnN0VGVz
dEZyb21OYW1lc3BhY2VGb28gYW5kIHRlc3QgVGhpc1Nob3VsZEZhaWxUb28KK3VzaW5nIHR3byBk
aWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKK3RoZSB0
d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlvbgor
dW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVuYW1l
IG9uZQorb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0ZXN0
IGNhc2VzLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWxUb28KKxtbMDszMm1bLS0tLS0tLS0t
LV0gG1ttMiB0ZXN0cyBmcm9tIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0Cisb
WzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0
LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCisbWzA7MzJtWyAgICAgICBPSyBd
IBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRo
VGhpc05hbWVTaG91bGRGYWlsCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2Fz
ZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWls
CitndGVzdC5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0FsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0
IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCitjbGFzcy4gIEhvd2V2ZXIsIGlu
IHRlc3QgY2FzZSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdCwKK3lvdSBkZWZp
bmVkIHRlc3QgVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwgYW5kIHRlc3QgVGhl
U2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKK3VzaW5nIHR3byBkaWZmZXJlbnQgdGVz
dCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKK3RoZSB0d28gY2xhc3NlcyBh
cmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlvbgordW5pdHMgYW5kIGhh
dmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVuYW1lIG9uZQorb2YgdGhl
IGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0ZXN0IGNhc2VzLgorU3Rh
Y2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0
Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRG
YWlsCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBURVNUX0ZfYmVmb3JlX1RF
U1RfaW5fc2FtZV90ZXN0X2Nhc2UKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVEVTVF9GX2JlZm9y
ZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRgorG1swOzMybVsgICAg
ICAgT0sgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVz
aW5nVEVTVF9GCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9z
YW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxkRmFpbAorZ3Rlc3QuY2M6Izog
RmFpbHVyZQorRmFpbGVkCitBbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNl
IHRoZSBzYW1lIHRlc3QgZml4dHVyZQorY2xhc3MsIHNvIG1peGluZyBURVNUX0YgYW5kIFRFU1Qg
aW4gdGhlIHNhbWUgdGVzdCBjYXNlIGlzCitpbGxlZ2FsLiAgSW4gdGVzdCBjYXNlIFRFU1RfRl9i
ZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSwKK3Rlc3QgRGVmaW5lZFVzaW5nVEVTVF9GIGlz
IGRlZmluZWQgdXNpbmcgVEVTVF9GIGJ1dAordGVzdCBEZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxk
RmFpbCBpcyBkZWZpbmVkIHVzaW5nIFRFU1QuICBZb3UgcHJvYmFibHkKK3dhbnQgdG8gY2hhbmdl
IHRoZSBURVNUIHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRvIGFub3RoZXIgdGVzdAorY2FzZS4KK1N0
YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21URVNUX0ZfYmVm
b3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwK
KxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFRFU1RfYmVmb3JlX1RFU1RfRl9p
bl9zYW1lX3Rlc3RfY2FzZQorG1swOzMybVsgUlVOICAgICAgXSAbW21URVNUX2JlZm9yZV9URVNU
X0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVAorG1swOzMybVsgICAgICAgT0sg
XSAbW21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVT
VAorG1swOzMybVsgUlVOICAgICAgXSAbW21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0
X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbAorZ3Rlc3QuY2M6IzogRmFpbHVy
ZQorRmFpbGVkCitBbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBz
YW1lIHRlc3QgZml4dHVyZQorY2xhc3MsIHNvIG1peGluZyBURVNUX0YgYW5kIFRFU1QgaW4gdGhl
IHNhbWUgdGVzdCBjYXNlIGlzCitpbGxlZ2FsLiAgSW4gdGVzdCBjYXNlIFRFU1RfYmVmb3JlX1RF
U1RfRl9pbl9zYW1lX3Rlc3RfY2FzZSwKK3Rlc3QgRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxk
RmFpbCBpcyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKK3Rlc3QgRGVmaW5lZFVzaW5nVEVTVCBp
cyBkZWZpbmVkIHVzaW5nIFRFU1QuICBZb3UgcHJvYmFibHkKK3dhbnQgdG8gY2hhbmdlIHRoZSBU
RVNUIHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRvIGFub3RoZXIgdGVzdAorY2FzZS4KK1N0YWNrIHRy
YWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21URVNUX2JlZm9yZV9URVNU
X0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbAorG1sw
OzMybVstLS0tLS0tLS0tXSAbW204IHRlc3RzIGZyb20gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVz
dAorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJl
ZmVyZW5jZUdsb2JhbFZhcmlhYmxlcworG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcworG1swOzMybVsgUlVO
ICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsVmFy
aWFibGVzCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qu
Q2FuUmVmZXJlbmNlTG9jYWxWYXJpYWJsZXMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJl
CisbWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuU3VjY2Vl
ZHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQorG1swOzMybVsgUlVOICAgICAgXSAbW21F
eHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb05vbmZhdGFsRmFpbHVy
ZQorKGV4cGVjdGluZyBhIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDog
MSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDAgZmFpbHVyZXMKK1N0YWNrIHRyYWNlOiAo
b21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVU
ZXN0LkZhaWxzV2hlblRoZXJlSXNOb05vbmZhdGFsRmFpbHVyZQorG1swOzMybVsgUlVOICAgICAg
XSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvTm9uZmF0
YWxGYWlsdXJlcworKGV4cGVjdGluZyBhIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitF
eHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDIgZmFpbHVyZXMKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgorRmFpbGVkCitFeHBl
Y3RlZCBub24tZmF0YWwgZmFpbHVyZSAxLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK2dv
b2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgorRmFpbGVkCitF
eHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSAyLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisK
K1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvTm9uZmF0YWxGYWlsdXJlcwor
G1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hl
blRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6
IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOgorZ29v
Z2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0
ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWls
dXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCisbWzA7MzJtWyBSVU4gICAg
ICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJu
cworKGV4cGVjdGluZyBhIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDog
MSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDAgZmFpbHVyZXMKK1N0YWNrIHRyYWNlOiAo
b21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVU
ZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKKyhleHBlY3Rp
bmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFs
IGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZhaWx1cmVzCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1do
ZW5TdGF0ZW1lbnRUaHJvd3MKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttOCB0ZXN0cyBmcm9tIEV4
cGVjdEZhdGFsRmFpbHVyZVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKKxtbMDszMm1bICAgICAgIE9L
IF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMK
KxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVu
Y2VMb2NhbFN0YXRpY1ZhcmlhYmxlcworG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3RGYXRh
bEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsU3RhdGljVmFyaWFibGVzCisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09u
ZUZhdGFsRmFpbHVyZQorG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKKxtbMDszMm1bIFJVTiAgICAg
IF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1
cmUKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6
IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDAgZmFpbHVyZXMKK1N0YWNrIHRyYWNlOiAob21p
dHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZh
aWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZQorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBl
Y3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcworKGV4
cGVjdGluZyBhIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBmYXRh
bCBmYWlsdXJlCisgIEFjdHVhbDogMiBmYWlsdXJlcworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8u
Y2M6IzogRmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KK1N0
YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBG
YXRhbCBmYWlsdXJlOgorRmFpbGVkCitFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJh
Y2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0
YWxGYWlsdXJlcworG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0
LkZhaWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKKyhleHBlY3RpbmcgYSBmYWlsdXJl
KQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1
YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKK0Zh
aWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQp
CisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4
cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQor
G1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0
YXRlbWVudFJldHVybnMKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVy
ZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDAgZmFpbHVyZXMKK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKKxtbMDszMm1bIFJVTiAgICAgIF0g
G1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKKyhleHBl
Y3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwg
ZmFpbHVyZQorICBBY3R1YWw6IDAgZmFpbHVyZXMKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKwor
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0
YXRlbWVudFRocm93cworG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVHlwZWRU
ZXN0LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGludAorG1swOzMybVsgUlVOICAgICAgXSAbW21UeXBl
ZFRlc3QvMC5TdWNjZXNzCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbVR5cGVkVGVzdC8wLlN1Y2Nl
c3MKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVHlwZWRUZXN0LzAuRmFpbHVyZQorZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2Ug
dmFsdWVzOgorICAxCisgIFR5cGVQYXJhbSgpCisgICAgV2hpY2ggaXM6IDAKK0V4cGVjdGVkIGZh
aWx1cmUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21U
eXBlZFRlc3QvMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDszMm1bLS0tLS0t
LS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFR5cGVkVGVzdFdpdGhOYW1lcy9jaGFyXzAsIHdoZXJlIFR5
cGVQYXJhbSA9IGNoYXIKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVz
L2NoYXJfMC5TdWNjZXNzCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbVR5cGVkVGVzdFdpdGhOYW1l
cy9jaGFyXzAuU3VjY2VzcworG1swOzMybVsgUlVOICAgICAgXSAbW21UeXBlZFRlc3RXaXRoTmFt
ZXMvY2hhcl8wLkZhaWx1cmUKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUK
K0ZhaWxlZAorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bVR5cGVkVGVzdFdpdGhOYW1lcy9jaGFyXzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gY2hh
cgorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVHlwZWRUZXN0V2l0aE5hbWVz
L2ludF8xLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVHlw
ZWRUZXN0V2l0aE5hbWVzL2ludF8xLlN1Y2Nlc3MKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttVHlw
ZWRUZXN0V2l0aE5hbWVzL2ludF8xLlN1Y2Nlc3MKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVHlw
ZWRUZXN0V2l0aE5hbWVzL2ludF8xLkZhaWx1cmUKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNj
OiM6IEZhaWx1cmUKK0ZhaWxlZAorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbVR5cGVkVGVzdFdpdGhOYW1lcy9pbnRfMS5GYWlsdXJlLCB3aGVyZSBUeXBl
UGFyYW0gPSBpbnQKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFVuc2lnbmVk
L1R5cGVkVGVzdFAvMCwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgorG1swOzMybVsg
UlVOICAgICAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuU3VjY2VzcworG1swOzMybVsgICAg
ICAgT0sgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuU3VjY2VzcworG1swOzMybVsgUlVOICAg
ICAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZQorZ29vZ2xldGVzdC1vdXRwdXQt
dGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgor
ICAxVQorICAgIFdoaWNoIGlzOiAxCisgIFR5cGVQYXJhbSgpCisgICAgV2hpY2ggaXM6ICdcMCcK
K0V4cGVjdGVkIGZhaWx1cmUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFt
ID0gdW5zaWduZWQgY2hhcgorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVW5z
aWduZWQvVHlwZWRUZXN0UC8xLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKKxtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1Y2Nlc3MKKxtbMDszMm1b
ICAgICAgIE9LIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1Y2Nlc3MKKxtbMDszMm1bIFJV
TiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUKK2dvb2dsZXRlc3Qtb3V0
cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVl
czoKKyAgMVUKKyAgICBXaGljaCBpczogMQorICBUeXBlUGFyYW0oKQorICAgIFdoaWNoIGlzOiAw
CitFeHBlY3RlZCBmYWlsdXJlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJh
bSA9IHVuc2lnbmVkIGludAorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVW5z
aWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRfY2hhcl8wLCB3aGVyZSBUeXBlUGFy
YW0gPSB1bnNpZ25lZCBjaGFyCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkQ3VzdG9t
TmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkX2NoYXJfMC5TdWNjZXNzCisbWzA7MzJtWyAgICAgICBP
SyBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkX2NoYXJfMC5TdWNj
ZXNzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQ
L3Vuc2lnbmVkX2NoYXJfMC5GYWlsdXJlCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBG
YWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDFVCisgICAgV2hp
Y2ggaXM6IDEKKyAgVHlwZVBhcmFtKCkKKyAgICBXaGljaCBpczogJ1wwJworRXhwZWN0ZWQgZmFp
bHVyZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVVu
c2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkX2NoYXJfMC5GYWlsdXJlLCB3aGVy
ZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBjaGFyCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVz
dHMgZnJvbSBVbnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZF9pbnRfMSwgd2hl
cmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2ln
bmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkX2ludF8xLlN1Y2Nlc3MKKxtbMDszMm1b
ICAgICAgIE9LIF0gG1ttVW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRfaW50
XzEuU3VjY2VzcworG1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25lZEN1c3RvbU5hbWUvVHlw
ZWRUZXN0UC91bnNpZ25lZF9pbnRfMS5GYWlsdXJlCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5j
YzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDFVCisg
ICAgV2hpY2ggaXM6IDEKKyAgVHlwZVBhcmFtKCkKKyAgICBXaGljaCBpczogMAorRXhwZWN0ZWQg
ZmFpbHVyZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkX2ludF8xLkZhaWx1cmUsIHdo
ZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAorG1swOzMybVstLS0tLS0tLS0tXSAbW200IHRl
c3RzIGZyb20gRXhwZWN0RmFpbHVyZVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0
RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCisoZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0
ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOgor
Z29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogU3VjY2VzczoKK1N1Y2NlZWRlZAorU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworKGV4cGVjdGlu
ZyAxIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBmYXRhbCBmYWls
dXJlCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IE5vbi1mYXRhbCBm
YWlsdXJlOgorRmFpbGVkCitFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKyhleHBlY3RpbmcgMSBm
YWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZSBj
b250YWluaW5nICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUgZXhwZWN0ZWQuIgorICBBY3R1YWw6
Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgorRmFpbGVkCitF
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJl
VGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFp
bHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCisoZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0
ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCisgIEFjdHVh
bDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IFN1Y2Nlc3M6CitTdWNjZWVkZWQKK1N0
YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKyhleHBl
Y3RpbmcgMSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZh
dGFsIGZhaWx1cmUKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmF0
YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKyhleHBlY3RpbmcgMSBm
YWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1
cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBub24tZmF0YWwgZmFpbHVyZS4iCisgIEFjdHVhbDoK
K2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgorRmFpbGVk
CitFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKwor
CitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0
RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCisbWzA7MzJtWyBSVU4gICAgICBdIBtb
bUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcworKGV4cGVj
dGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBmYXRhbCBm
YWlsdXJlCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IFN1Y2Nlc3M6
CitTdWNjZWVkZWQKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKyhleHBlY3RpbmcgMSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhw
ZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0
Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZh
aWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVk
KQorCisoZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVk
OiAxIGZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBmYXRhbCBmYWlsdXJlIGV4
cGVjdGVkLiIKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmF0YWwg
ZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAo
b21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQg
IF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCisb
WzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFp
bHVyZU9uQWxsVGhyZWFkcworKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWls
dXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6Citnb29nbGV0ZXN0
LW91dHB1dC10ZXN0Xy5jYzojOiBTdWNjZXNzOgorU3VjY2VlZGVkCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisoZXhwZWN0aW5nIDEgZmFpbHVy
ZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCisg
IEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6CitG
YWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisK
KworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisoZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0ZXN0
LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcg
IlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1cmUuIgorICBBY3R1YWw6Citnb29nbGV0ZXN0LW91
dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9u
LWZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4
cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcworG1swOzMybVstLS0tLS0tLS0tXSAbW20y
IHRlc3RzIGZyb20gRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdAorG1swOzMybVsgUlVOICAg
ICAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQor
KGV4cGVjdGluZyAyIGZhaWx1cmVzKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFp
bHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0
dGVkKQorCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCisg
IEFjdHVhbDogMCBmYWlsdXJlcworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0RmF0YWxGYWls
dXJlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3Qu
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlCisoZXhwZWN0aW5nIDIgZmFpbHVyZXMpCitnb29nbGV0ZXN0
LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRhbCBm
YWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitndGVzdC5jYzojOiBGYWlsdXJlCitF
eHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDAgZmFpbHVyZXMKK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJl
V2l0aFRocmVhZHNUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQorG1swOzMybVstLS0tLS0tLS0t
XSAbW20xIHRlc3QgZnJvbSBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3QKKxtb
MDszMm1bIFJVTiAgICAgIF0gG1ttU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0
LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCisoZXhwZWN0aW5nIDIgZmFpbHVyZXMpCitnb29n
bGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRl
c3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCitT
dGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU2NvcGVkRmFr
ZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCisb
WzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIFByaW50aW5nRmFpbGluZ1BhcmFtcy9G
YWlsaW5nUGFyYW1UZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVByaW50aW5nRmFpbGluZ1Bh
cmFtcy9GYWlsaW5nUGFyYW1UZXN0LkZhaWxzLzAKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNj
OiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICBH
ZXRQYXJhbSgpCisgICAgV2hpY2ggaXM6IDIKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1sw
OzMxbVsgIEZBSUxFRCAgXSAbW21QcmludGluZ0ZhaWxpbmdQYXJhbXMvRmFpbGluZ1BhcmFtVGVz
dC5GYWlscy8wLCB3aGVyZSBHZXRQYXJhbSgpID0gMgorG1swOzMybVstLS0tLS0tLS0tXSAbW20y
IHRlc3RzIGZyb20gUHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdAorG1swOzMybVsgUlVOICAgICAg
XSAbW21QcmludGluZ1N0cmluZ3MvUGFyYW1UZXN0LlN1Y2Nlc3MvYQorG1swOzMybVsgICAgICAg
T0sgXSAbW21QcmludGluZ1N0cmluZ3MvUGFyYW1UZXN0LlN1Y2Nlc3MvYQorG1swOzMybVsgUlVO
ICAgICAgXSAbW21QcmludGluZ1N0cmluZ3MvUGFyYW1UZXN0LkZhaWx1cmUvYQorZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2Ug
dmFsdWVzOgorICAiYiIKKyAgR2V0UGFyYW0oKQorICAgIFdoaWNoIGlzOiAiYSIKK0V4cGVjdGVk
IGZhaWx1cmUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21QcmludGluZ1N0cmluZ3MvUGFyYW1UZXN0LkZhaWx1cmUvYSwgd2hlcmUgR2V0UGFyYW0oKSA9
ICJhIgorG1swOzMybVstLS0tLS0tLS0tXSAbW21HbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFy
LWRvd24KK0JhckVudmlyb25tZW50OjpUZWFyRG93bigpIGNhbGxlZC4KK2dvb2dsZXRlc3Qtb3V0
cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK0Zvb0Vudmlyb25tZW50OjpUZWFyRG93bigp
IGNhbGxlZC4KK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAor
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMy
bVs9PT09PT09PT09XSAbW203NiB0ZXN0cyBmcm9tIDM0IHRlc3QgY2FzZXMgcmFuLgorG1swOzMy
bVsgIFBBU1NFRCAgXSAbW20yNiB0ZXN0cy4KKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttNTAgdGVz
dHMsIGxpc3RlZCBiZWxvdzoKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uZmF0YWxGYWlsdXJl
VGVzdC5Fc2NhcGVzU3RyaW5nT3BlcmFuZHMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uZmF0
YWxGYWlsdXJlVGVzdC5EaWZmRm9yTG9uZ1N0cmluZ3MKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
RmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKKxtbMDszMW1bICBGQUlM
RUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJ
blN1YnJvdXRpbmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2
aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RS
QUNFVGVzdC5BY2NlcHRlZFZhbHVlcworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJB
Q0VUZXN0Lk9iZXlzU2NvcGVzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRl
c3QuV29ya3NJbkxvb3AKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5X
b3Jrc0luU3Vicm91dGluZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0
LkNhbkJlTmVzdGVkCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2Fu
QmVSZXBlYXRlZAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lldvcmtz
Q29uY3VycmVudGx5CisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNjb3BlZFRyYWNlVGVzdC5XaXRo
RXhwbGljaXRGaWxlQW5kTGluZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25GYXRhbEZhaWx1
cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1
cmVJbkNvbnN0cnVjdG9yCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVyZUlu
U2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFp
bHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUFk
ZEZhaWx1cmVBdFRlc3QuTWVzc2FnZUNvbnRhaW5zU3BlY2lmaWVkRmlsZUFuZExpbmVOdW1iZXIK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFp
bAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRG
YWlsVG9vCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVz
dE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVk
VXNpbmdURVNUQW5kU2hvdWxkRmFpbAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21URVNUX2JlZm9y
ZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFp
bAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxz
V2hlblRoZXJlSXNOb05vbmZhdGFsRmFpbHVyZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvTm9uZmF0YWxGYWlsdXJl
cworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxz
V2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50
VGhyb3dzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFp
bHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVj
dEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJ
c09uZU5vbmZhdGFsRmFpbHVyZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKKxtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKKxtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttVHlwZWRUZXN0LzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0g
aW50CisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVR5cGVkVGVzdFdpdGhOYW1lcy9jaGFyXzAuRmFp
bHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gY2hhcgorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBl
ZFRlc3RXaXRoTmFtZXMvaW50XzEuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gaW50CisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5GYWlsdXJlLCB3aGVyZSBU
eXBlUGFyYW0gPSB1bnNpZ25lZCBjaGFyCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVVuc2lnbmVk
L1R5cGVkVGVzdFAvMS5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKKxtb
MDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWdu
ZWRfY2hhcl8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKKxtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRf
aW50XzEuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50CisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQorG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWls
dXJlT25BbGxUaHJlYWRzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0
LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcworG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQorG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdE5vbkZh
dGFsRmFpbHVyZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TY29wZWRGYWtlVGVzdFBhcnRSZXN1
bHRSZXBvcnRlclRlc3QuSW50ZXJjZXB0T25seUN1cnJlbnRUaHJlYWQKKxtbMDszMW1bICBGQUlM
RUQgIF0gG1ttUHJpbnRpbmdGYWlsaW5nUGFyYW1zL0ZhaWxpbmdQYXJhbVRlc3QuRmFpbHMvMCwg
d2hlcmUgR2V0UGFyYW0oKSA9IDIKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttUHJpbnRpbmdTdHJp
bmdzL1BhcmFtVGVzdC5GYWlsdXJlL2EsIHdoZXJlIEdldFBhcmFtKCkgPSAiYSIKKworNTAgRkFJ
TEVEIFRFU1RTCisbWzA7MzNtICBZT1UgSEFWRSAxIERJU0FCTEVEIFRFU1QKKworG1ttTm90ZTog
R29vZ2xlIFRlc3QgZmlsdGVyID0gRmF0YWxGYWlsdXJlVGVzdC4qOkxvZ2dpbmdUZXN0LioKK1s9
PT09PT09PT09XSBSdW5uaW5nIDQgdGVzdHMgZnJvbSAyIHRlc3QgY2FzZXMuCitbLS0tLS0tLS0t
LV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgorWy0tLS0tLS0tLS1dIDMgdGVzdHMg
ZnJvbSBGYXRhbEZhaWx1cmVUZXN0CitbIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRh
bEZhaWx1cmVJblN1YnJvdXRpbmUKKyhleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQg
YmUgMSkKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVx
dWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICB4CisgICAgV2hpY2ggaXM6IDIKK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxG
YWlsdXJlSW5TdWJyb3V0aW5lICg/IG1zKQorWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3Qu
RmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCisoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0
IHggc2hvdWxkIGJlIDEpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitF
eHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAgeAorICAgIFdoaWNoIGlz
OiAyCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVU
ZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZSAoPyBtcykKK1sgUlVOICAgICAgXSBG
YXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZQorKGV4cGVjdGluZyBh
IGZhaWx1cmUgb24gZmFsc2UpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJl
CitWYWx1ZSBvZjogZmFsc2UKKyAgQWN0dWFsOiBmYWxzZQorRXhwZWN0ZWQ6IHRydWUKK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0
YWxGYWlsdXJlSW5TdWJyb3V0aW5lICg/IG1zKQorWy0tLS0tLS0tLS1dIDMgdGVzdHMgZnJvbSBG
YXRhbEZhaWx1cmVUZXN0ICg/IG1zIHRvdGFsKQorCitbLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20g
TG9nZ2luZ1Rlc3QKK1sgUlVOICAgICAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5n
QW5kQXNzZXJ0aW9ucworKGV4cGVjdGluZyAyIGZhaWx1cmVzIG9uICgzKSA+PSAoYVtpXSkpCitp
ID09IDAKK2kgPT0gMQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhw
ZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA5CitTdGFjayB0cmFjZTogKG9taXR0
ZWQpCisKK2kgPT0gMgoraSA9PSAzCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWls
dXJlCitFeHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDYKK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworWyAgRkFJTEVEICBdIExvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dp
bmdBbmRBc3NlcnRpb25zICg/IG1zKQorWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExvZ2dpbmdU
ZXN0ICg/IG1zIHRvdGFsKQorCitbLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQg
dGVhci1kb3duCitbPT09PT09PT09PV0gNCB0ZXN0cyBmcm9tIDIgdGVzdCBjYXNlcyByYW4uICg/
IG1zIHRvdGFsKQorWyAgUEFTU0VEICBdIDAgdGVzdHMuCitbICBGQUlMRUQgIF0gNCB0ZXN0cywg
bGlzdGVkIGJlbG93OgorWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJl
SW5TdWJyb3V0aW5lCitbICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJ
bk5lc3RlZFN1YnJvdXRpbmUKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFs
RmFpbHVyZUluU3Vicm91dGluZQorWyAgRkFJTEVEICBdIExvZ2dpbmdUZXN0LkludGVybGVhdmlu
Z0xvZ2dpbmdBbmRBc3NlcnRpb25zCisKKyA0IEZBSUxFRCBURVNUUworTm90ZTogR29vZ2xlIFRl
c3QgZmlsdGVyID0gKkRJU0FCTEVEXyoKK1s9PT09PT09PT09XSBSdW5uaW5nIDEgdGVzdCBmcm9t
IDEgdGVzdCBjYXNlLgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11
cC4KK1stLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBEaXNhYmxlZFRlc3RzV2FybmluZ1Rlc3QKK1sg
UlVOICAgICAgXSBEaXNhYmxlZFRlc3RzV2FybmluZ1Rlc3QuRElTQUJMRURfQWxzb1J1bkRpc2Fi
bGVkVGVzdHNGbGFnU3VwcHJlc3Nlc1dhcm5pbmcKK1sgICAgICAgT0sgXSBEaXNhYmxlZFRlc3Rz
V2FybmluZ1Rlc3QuRElTQUJMRURfQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnU3VwcHJlc3Nlc1dh
cm5pbmcKK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KK1s9
PT09PT09PT09XSAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZSByYW4uCitbICBQQVNTRUQgIF0gMSB0
ZXN0LgorTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gUGFzc2luZ1Rlc3QuKgorTm90ZTogVGhp
cyBpcyB0ZXN0IHNoYXJkIDIgb2YgMi4KK1s9PT09PT09PT09XSBSdW5uaW5nIDEgdGVzdCBmcm9t
IDEgdGVzdCBjYXNlLgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11
cC4KK1stLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBQYXNzaW5nVGVzdAorWyBSVU4gICAgICBdIFBh
c3NpbmdUZXN0LlBhc3NpbmdUZXN0MgorWyAgICAgICBPSyBdIFBhc3NpbmdUZXN0LlBhc3NpbmdU
ZXN0MgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgorWz09
PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlIHJhbi4KK1sgIFBBU1NFRCAgXSAxIHRl
c3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQ2OWUzNTNhMTllMzY5NDY1MzNiZjVmN2UwYTJj
OTI0NmY3ZGNlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ29vZ2xldGVzdC1vdXRwdXQtdGVzdC5weQpAQCAtMCwwICsxLDM0NyBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorIyBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVGVzdHMgdGhlIHRleHQgb3V0
cHV0IG9mIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsuCisKK1RvIHVw
ZGF0ZSB0aGUgZ29sZGVuIGZpbGU6Citnb29nbGV0ZXN0X291dHB1dF90ZXN0LnB5IC0tYnVpbGRf
ZGlyPUJVSUxEL0RJUiAtLWdlbmdvbGRlbgord2hlcmUgQlVJTEQvRElSIGNvbnRhaW5zIHRoZSBi
dWlsdCBnb29nbGV0ZXN0LW91dHB1dC10ZXN0XyBmaWxlLgorZ29vZ2xldGVzdF9vdXRwdXRfdGVz
dC5weSAtLWdlbmdvbGRlbgorZ29vZ2xldGVzdF9vdXRwdXRfdGVzdC5weQorIiIiCisKK2ltcG9y
dCBkaWZmbGliCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IGd0ZXN0
X3Rlc3RfdXRpbHMKKworCisjIFRoZSBmbGFnIGZvciBnZW5lcmF0aW5nIHRoZSBnb2xkZW4gZmls
ZQorR0VOR09MREVOX0ZMQUcgPSAnLS1nZW5nb2xkZW4nCitDQVRDSF9FWENFUFRJT05TX0VOVl9W
QVJfTkFNRSA9ICdHVEVTVF9DQVRDSF9FWENFUFRJT05TJworCisjIFRoZSBmbGFnIGluZGljYXRp
bmcgc3RhY2t0cmFjZXMgYXJlIG5vdCBzdXBwb3J0ZWQKK05PX1NUQUNLVFJBQ0VfU1VQUE9SVF9G
TEFHID0gJy0tbm9fc3RhY2t0cmFjZV9zdXBwb3J0JworCitJU19MSU5VWCA9IG9zLm5hbWUgPT0g
J3Bvc2l4JyBhbmQgb3MudW5hbWUoKVswXSA9PSAnTGludXgnCitJU19XSU5ET1dTID0gb3MubmFt
ZSA9PSAnbnQnCisKKyMgRklYTUU6IHJlbW92ZSB0aGUgX2xpbiBzdWZmaXguCitHT0xERU5fTkFN
RSA9ICdnb29nbGV0ZXN0LW91dHB1dC10ZXN0LWdvbGRlbi1saW4udHh0JworCitQUk9HUkFNX1BB
VEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ29vZ2xldGVzdC1v
dXRwdXQtdGVzdF8nKQorCisjIEF0IGxlYXN0IG9uZSBjb21tYW5kIHdlIGV4ZXJjaXNlIG11c3Qg
bm90IGhhdmUgdGhlCisjICdpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVz
dHMnIGFyZ3VtZW50LgorQ09NTUFORF9MSVNUX1RFU1RTID0gKHt9LCBbUFJPR1JBTV9QQVRILCAn
LS1ndGVzdF9saXN0X3Rlc3RzJ10pCitDT01NQU5EX1dJVEhfQ09MT1IgPSAoe30sIFtQUk9HUkFN
X1BBVEgsICctLWd0ZXN0X2NvbG9yPXllcyddKQorQ09NTUFORF9XSVRIX1RJTUUgPSAoe30sIFtQ
Uk9HUkFNX1BBVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICctLWd0ZXN0X3ByaW50X3Rp
bWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVu
dF9hbmRfYWRfaG9jX3Rlc3RzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZ3Rlc3Rf
ZmlsdGVyPUZhdGFsRmFpbHVyZVRlc3QuKjpMb2dnaW5nVGVzdC4qJ10pCitDT01NQU5EX1dJVEhf
RElTQUJMRUQgPSAoCisgICAge30sIFtQUk9HUkFNX1BBVEgsCisgICAgICAgICAnLS1ndGVzdF9h
bHNvX3J1bl9kaXNhYmxlZF90ZXN0cycsCisgICAgICAgICAnaW50ZXJuYWxfc2tpcF9lbnZpcm9u
bWVudF9hbmRfYWRfaG9jX3Rlc3RzJywKKyAgICAgICAgICctLWd0ZXN0X2ZpbHRlcj0qRElTQUJM
RURfKiddKQorQ09NTUFORF9XSVRIX1NIQVJESU5HID0gKAorICAgIHsnR1RFU1RfU0hBUkRfSU5E
RVgnOiAnMScsICdHVEVTVF9UT1RBTF9TSEFSRFMnOiAnMid9LAorICAgIFtQUk9HUkFNX1BBVEgs
CisgICAgICdpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMnLAorICAg
ICAnLS1ndGVzdF9maWx0ZXI9UGFzc2luZ1Rlc3QuKiddKQorCitHT0xERU5fUEFUSCA9IG9zLnBh
dGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFNvdXJjZURpcigpLCBHT0xERU5fTkFNRSkKKwor
CitkZWYgVG9Vbml4TGluZUVuZGluZyhzKToKKyAgIiIiQ2hhbmdlcyBhbGwgV2luZG93cy9NYWMg
bGluZSBlbmRpbmdzIGluIHMgdG8gVU5JWCBsaW5lIGVuZGluZ3MuIiIiCisKKyAgcmV0dXJuIHMu
cmVwbGFjZSgnXHJcbicsICdcbicpLnJlcGxhY2UoJ1xyJywgJ1xuJykKKworCitkZWYgUmVtb3Zl
TG9jYXRpb25zKHRlc3Rfb3V0cHV0KToKKyAgIiIiUmVtb3ZlcyBhbGwgZmlsZSBsb2NhdGlvbiBp
bmZvIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LgorCisgIEFyZ3M6CisgICAg
ICAgdGVzdF9vdXRwdXQ6ICB0aGUgb3V0cHV0IG9mIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbS4KKwor
ICBSZXR1cm5zOgorICAgICAgIG91dHB1dCB3aXRoIGFsbCBmaWxlIGxvY2F0aW9uIGluZm8gKGlu
IHRoZSBmb3JtIG9mCisgICAgICAgJ0RJUkVDVE9SWS9GSUxFX05BTUU6TElORV9OVU1CRVI6ICdv
cgorICAgICAgICdESVJFQ1RPUllcXEZJTEVfTkFNRShMSU5FX05VTUJFUik6ICcpIHJlcGxhY2Vk
IGJ5CisgICAgICAgJ0ZJTEVfTkFNRTojOiAnLgorICAiIiIKKworICByZXR1cm4gcmUuc3ViKHIn
LipbL1xcXSgoZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF98Z3Rlc3QpLmNjKShcOlxkK3xcKFxkK1wp
KVw6ICcsCisgICAgICAgICAgICAgICAgcidcMTojOiAnLCB0ZXN0X291dHB1dCkKKworCitkZWYg
UmVtb3ZlU3RhY2tUcmFjZURldGFpbHMob3V0cHV0KToKKyAgIiIiUmVtb3ZlcyBhbGwgc3RhY2sg
dHJhY2VzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgorCisgICMgKj8g
bWVhbnMgImZpbmQgdGhlIHNob3J0ZXN0IHN0cmluZyB0aGF0IG1hdGNoZXMiLgorICByZXR1cm4g
cmUuc3ViKHInU3RhY2sgdHJhY2U6KC58XG4pKj9cblxuJywKKyAgICAgICAgICAgICAgICAnU3Rh
Y2sgdHJhY2U6IChvbWl0dGVkKVxuXG4nLCBvdXRwdXQpCisKKworZGVmIFJlbW92ZVN0YWNrVHJh
Y2VzKG91dHB1dCk6CisgICIiIlJlbW92ZXMgYWxsIHRyYWNlcyBvZiBzdGFjayB0cmFjZXMgZnJv
bSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCisKKyAgIyAqPyBtZWFucyAiZmlu
ZCB0aGUgc2hvcnRlc3Qgc3RyaW5nIHRoYXQgbWF0Y2hlcyIuCisgIHJldHVybiByZS5zdWIocidT
dGFjayB0cmFjZTooLnxcbikqP1xuXG4nLCAnJywgb3V0cHV0KQorCisKK2RlZiBSZW1vdmVUaW1l
KG91dHB1dCk6CisgICIiIlJlbW92ZXMgYWxsIHRpbWUgaW5mb3JtYXRpb24gZnJvbSBhIEdvb2ds
ZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCisKKyAgcmV0dXJuIHJlLnN1YihyJ1woXGQrIG1z
JywgJyg/IG1zJywgb3V0cHV0KQorCisKK2RlZiBSZW1vdmVUeXBlSW5mb0RldGFpbHModGVzdF9v
dXRwdXQpOgorICAiIiJSZW1vdmVzIGNvbXBpbGVyLXNwZWNpZmljIHR5cGUgaW5mbyBmcm9tIEdv
b2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuCisKKyAgQXJnczoKKyAgICAgICB0ZXN0X291dHB1
dDogIHRoZSBvdXRwdXQgb2YgYSBHb29nbGUgVGVzdCBwcm9ncmFtLgorCisgIFJldHVybnM6Cisg
ICAgICAgb3V0cHV0IHdpdGggdHlwZSBpbmZvcm1hdGlvbiBub3JtYWxpemVkIHRvIGNhbm9uaWNh
bCBmb3JtLgorICAiIiIKKworICAjIHNvbWUgY29tcGlsZXJzIG91dHB1dCB0aGUgbmFtZSBvZiB0
eXBlICd1bnNpZ25lZCBpbnQnIGFzICd1bnNpZ25lZCcKKyAgcmV0dXJuIHJlLnN1YihyJ3Vuc2ln
bmVkIGludCcsICd1bnNpZ25lZCcsIHRlc3Rfb3V0cHV0KQorCisKK2RlZiBOb3JtYWxpemVUb0N1
cnJlbnRQbGF0Zm9ybSh0ZXN0X291dHB1dCk6CisgICIiIk5vcm1hbGl6ZXMgcGxhdGZvcm0gc3Bl
Y2lmaWMgb3V0cHV0IGRldGFpbHMgZm9yIGVhc2llciBjb21wYXJpc29uLiIiIgorCisgIGlmIElT
X1dJTkRPV1M6CisgICAgIyBSZW1vdmVzIHRoZSBjb2xvciBpbmZvcm1hdGlvbiB0aGF0IGlzIG5v
dCBwcmVzZW50IG9uIFdpbmRvd3MuCisgICAgdGVzdF9vdXRwdXQgPSByZS5zdWIoJ1x4MWJcXFso
MDszXGQpP20nLCAnJywgdGVzdF9vdXRwdXQpCisgICAgIyBDaGFuZ2VzIGZhaWx1cmUgbWVzc2Fn
ZSBoZWFkZXJzIGludG8gdGhlIFdpbmRvd3MgZm9ybWF0LgorICAgIHRlc3Rfb3V0cHV0ID0gcmUu
c3ViKHInOiBGYWlsdXJlXG4nLCByJzogZXJyb3I6ICcsIHRlc3Rfb3V0cHV0KQorICAgICMgQ2hh
bmdlcyBmaWxlKGxpbmVfbnVtYmVyKSB0byBmaWxlOmxpbmVfbnVtYmVyLgorICAgIHRlc3Rfb3V0
cHV0ID0gcmUuc3ViKHInKChcd3xcLikrKVwoKFxkKylcKTonLCByJ1wxOlwzOicsIHRlc3Rfb3V0
cHV0KQorCisgIHJldHVybiB0ZXN0X291dHB1dAorCisKK2RlZiBSZW1vdmVUZXN0Q291bnRzKG91
dHB1dCk6CisgICIiIlJlbW92ZXMgdGVzdCBjb3VudHMgZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dy
YW0ncyBvdXRwdXQuIiIiCisKKyAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIHRlc3RzPywgbGlzdGVk
IGJlbG93JywKKyAgICAgICAgICAgICAgICAgICc/IHRlc3RzLCBsaXN0ZWQgYmVsb3cnLCBvdXRw
dXQpCisgIG91dHB1dCA9IHJlLnN1YihyJ1xkKyBGQUlMRUQgVEVTVFMnLAorICAgICAgICAgICAg
ICAgICAgJz8gRkFJTEVEIFRFU1RTJywgb3V0cHV0KQorICBvdXRwdXQgPSByZS5zdWIocidcZCsg
dGVzdHM/IGZyb20gXGQrIHRlc3QgY2FzZXM/JywKKyAgICAgICAgICAgICAgICAgICc/IHRlc3Rz
IGZyb20gPyB0ZXN0IGNhc2VzJywgb3V0cHV0KQorICBvdXRwdXQgPSByZS5zdWIocidcZCsgdGVz
dHM/IGZyb20gKFthLXpBLVpfXSknLAorICAgICAgICAgICAgICAgICAgcic/IHRlc3RzIGZyb20g
XDEnLCBvdXRwdXQpCisgIHJldHVybiByZS5zdWIocidcZCsgdGVzdHM/XC4nLCAnPyB0ZXN0cy4n
LCBvdXRwdXQpCisKKworZGVmIFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsIHBhdHRl
cm4pOgorICAiIiJSZW1vdmVzIG91dHB1dCBvZiBzcGVjaWZpZWQgdGVzdHMgZnJvbSBhIEdvb2ds
ZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuCisKKyAgVGhpcyBmdW5jdGlvbiBzdHJpcHMgbm90IG9u
bHkgdGhlIGJlZ2lubmluZyBhbmQgdGhlIGVuZCBvZiBhIHRlc3QgYnV0IGFsc28KKyAgYWxsIG91
dHB1dCBpbiBiZXR3ZWVuLgorCisgIEFyZ3M6CisgICAgdGVzdF9vdXRwdXQ6ICAgICAgIEEgc3Ry
aW5nIGNvbnRhaW5pbmcgdGhlIHRlc3Qgb3V0cHV0LgorICAgIHBhdHRlcm46ICAgICAgICAgICBB
IHJlZ2V4IHN0cmluZyB0aGF0IG1hdGNoZXMgbmFtZXMgb2YgdGVzdCBjYXNlcyBvcgorICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0cyB0byByZW1vdmUuCisKKyAgUmV0dXJuczoKKyAgICBDb250
ZW50cyBvZiB0ZXN0X291dHB1dCB3aXRoIHRlc3RzIHdob3NlIG5hbWVzIG1hdGNoIHBhdHRlcm4g
cmVtb3ZlZC4KKyAgIiIiCisKKyAgdGVzdF9vdXRwdXQgPSByZS5zdWIoCisgICAgICByJy4qXFsg
UlVOICAgICAgXF0gLiolcygufFxuKSo/XFsoICBGQUlMRUQgIHwgICAgICAgT0sgKVxdIC4qJXMu
KlxuJyAlICgKKyAgICAgICAgICBwYXR0ZXJuLCBwYXR0ZXJuKSwKKyAgICAgICcnLAorICAgICAg
dGVzdF9vdXRwdXQpCisgIHJldHVybiByZS5zdWIocicuKiVzLipcbicgJSBwYXR0ZXJuLCAnJywg
dGVzdF9vdXRwdXQpCisKKworZGVmIE5vcm1hbGl6ZU91dHB1dChvdXRwdXQpOgorICAiIiJOb3Jt
YWxpemVzIG91dHB1dCAodGhlIG91dHB1dCBvZiBnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5leGUp
LiIiIgorCisgIG91dHB1dCA9IFRvVW5peExpbmVFbmRpbmcob3V0cHV0KQorICBvdXRwdXQgPSBS
ZW1vdmVMb2NhdGlvbnMob3V0cHV0KQorICBvdXRwdXQgPSBSZW1vdmVTdGFja1RyYWNlRGV0YWls
cyhvdXRwdXQpCisgIG91dHB1dCA9IFJlbW92ZVRpbWUob3V0cHV0KQorICByZXR1cm4gb3V0cHV0
CisKKworZGVmIEdldFNoZWxsQ29tbWFuZE91dHB1dChlbnZfY21kKToKKyAgIiIiUnVucyBhIGNv
bW1hbmQgaW4gYSBzdWItcHJvY2VzcywgYW5kIHJldHVybnMgaXRzIG91dHB1dCBpbiBhIHN0cmlu
Zy4KKworICBBcmdzOgorICAgIGVudl9jbWQ6IFRoZSBzaGVsbCBjb21tYW5kLiBBIDItdHVwbGUg
d2hlcmUgZWxlbWVudCAwIGlzIGEgZGljdCBvZiBleHRyYQorICAgICAgICAgICAgIGVudmlyb25t
ZW50IHZhcmlhYmxlcyB0byBzZXQsIGFuZCBlbGVtZW50IDEgaXMgYSBzdHJpbmcgd2l0aAorICAg
ICAgICAgICAgIHRoZSBjb21tYW5kIGFuZCBhbnkgZmxhZ3MuCisKKyAgUmV0dXJuczoKKyAgICBB
IHN0cmluZyB3aXRoIHRoZSBjb21tYW5kJ3MgY29tYmluZWQgc3RhbmRhcmQgYW5kIGRpYWdub3N0
aWMgb3V0cHV0LgorICAiIiIKKworICAjIFNwYXducyBjbWQgaW4gYSBzdWItcHJvY2VzcywgYW5k
IGdldHMgaXRzIHN0YW5kYXJkIEkvTyBmaWxlIG9iamVjdHMuCisgICMgU2V0IGFuZCBzYXZlIHRo
ZSBlbnZpcm9ubWVudCBwcm9wZXJseS4KKyAgZW52aXJvbiA9IG9zLmVudmlyb24uY29weSgpCisg
IGVudmlyb24udXBkYXRlKGVudl9jbWRbMF0pCisgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnBy
b2Nlc3MoZW52X2NtZFsxXSwgZW52PWVudmlyb24pCisKKyAgcmV0dXJuIHAub3V0cHV0CisKKwor
ZGVmIEdldENvbW1hbmRPdXRwdXQoZW52X2NtZCk6CisgICIiIlJ1bnMgYSBjb21tYW5kIGFuZCBy
ZXR1cm5zIGl0cyBvdXRwdXQgd2l0aCBhbGwgZmlsZSBsb2NhdGlvbgorICBpbmZvIHN0cmlwcGVk
IG9mZi4KKworICBBcmdzOgorICAgIGVudl9jbWQ6ICBUaGUgc2hlbGwgY29tbWFuZC4gQSAyLXR1
cGxlIHdoZXJlIGVsZW1lbnQgMCBpcyBhIGRpY3Qgb2YgZXh0cmEKKyAgICAgICAgICAgICAgZW52
aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCwgYW5kIGVsZW1lbnQgMSBpcyBhIHN0cmluZyB3aXRo
CisgICAgICAgICAgICAgIHRoZSBjb21tYW5kIGFuZCBhbnkgZmxhZ3MuCisgICIiIgorCisgICMg
RGlzYWJsZXMgZXhjZXB0aW9uIHBvcC11cHMgb24gV2luZG93cy4KKyAgZW52aXJvbiwgY21kbGlu
ZSA9IGVudl9jbWQKKyAgZW52aXJvbiA9IGRpY3QoZW52aXJvbikgICMgRW5zdXJlcyB3ZSBhcmUg
bW9kaWZ5aW5nIGEgY29weS4KKyAgZW52aXJvbltDQVRDSF9FWENFUFRJT05TX0VOVl9WQVJfTkFN
RV0gPSAnMScKKyAgcmV0dXJuIE5vcm1hbGl6ZU91dHB1dChHZXRTaGVsbENvbW1hbmRPdXRwdXQo
KGVudmlyb24sIGNtZGxpbmUpKSkKKworCitkZWYgR2V0T3V0cHV0T2ZBbGxDb21tYW5kcygpOgor
ICAiIiJSZXR1cm5zIGNvbmNhdGVuYXRlZCBvdXRwdXQgZnJvbSBzZXZlcmFsIHJlcHJlc2VudGF0
aXZlIGNvbW1hbmRzLiIiIgorCisgIHJldHVybiAoR2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJ
VEhfQ09MT1IpICsKKyAgICAgICAgICBHZXRDb21tYW5kT3V0cHV0KENPTU1BTkRfV0lUSF9USU1F
KSArCisgICAgICAgICAgR2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJVEhfRElTQUJMRUQpICsK
KyAgICAgICAgICBHZXRDb21tYW5kT3V0cHV0KENPTU1BTkRfV0lUSF9TSEFSRElORykpCisKKwor
dGVzdF9saXN0ID0gR2V0U2hlbGxDb21tYW5kT3V0cHV0KENPTU1BTkRfTElTVF9URVNUUykKK1NV
UFBPUlRTX0RFQVRIX1RFU1RTID0gJ0RlYXRoVGVzdCcgaW4gdGVzdF9saXN0CitTVVBQT1JUU19U
WVBFRF9URVNUUyA9ICdUeXBlZFRlc3QnIGluIHRlc3RfbGlzdAorU1VQUE9SVFNfVEhSRUFEUyA9
ICdFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0JyBpbiB0ZXN0X2xpc3QKK1NVUFBPUlRTX1NU
QUNLX1RSQUNFUyA9IE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFHIG5vdCBpbiBzeXMuYXJndgor
CitDQU5fR0VORVJBVEVfR09MREVOX0ZJTEUgPSAoU1VQUE9SVFNfREVBVEhfVEVTVFMgYW5kCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VQUE9SVFNfVFlQRURfVEVTVFMgYW5kCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU1VQUE9SVFNfVEhSRUFEUyBhbmQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTVVBQT1JUU19TVEFDS19UUkFDRVMpCisKK2NsYXNzIEdUZXN0T3V0
cHV0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgZGVmIFJlbW92ZVVuc3VwcG9y
dGVkVGVzdHMoc2VsZiwgdGVzdF9vdXRwdXQpOgorICAgIGlmIG5vdCBTVVBQT1JUU19ERUFUSF9U
RVNUUzoKKyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1
dCwgJ0RlYXRoVGVzdCcpCisgICAgaWYgbm90IFNVUFBPUlRTX1RZUEVEX1RFU1RTOgorICAgICAg
dGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCAnVHlwZWRUZXN0
JykKKyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwg
J1R5cGVkRGVhdGhUZXN0JykKKyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0
cyh0ZXN0X291dHB1dCwgJ1R5cGVQYXJhbURlYXRoVGVzdCcpCisgICAgaWYgbm90IFNVUFBPUlRT
X1RIUkVBRFM6CisgICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9v
dXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4cGVjdEZh
aWx1cmVXaXRoVGhyZWFkc1Rlc3QnKQorICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGlu
Z1Rlc3RzKHRlc3Rfb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3QnKQorICAgICAgdGVzdF9v
dXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdXb3Jrc0NvbmN1cnJlbnRseScpCisgICAgaWYgbm90
IFNVUFBPUlRTX1NUQUNLX1RSQUNFUzoKKyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlU3RhY2tU
cmFjZXModGVzdF9vdXRwdXQpCisKKyAgICByZXR1cm4gdGVzdF9vdXRwdXQKKworICBkZWYgdGVz
dE91dHB1dChzZWxmKToKKyAgICBvdXRwdXQgPSBHZXRPdXRwdXRPZkFsbENvbW1hbmRzKCkKKwor
ICAgIGdvbGRlbl9maWxlID0gb3BlbihHT0xERU5fUEFUSCwgJ3JiJykKKyAgICAjIEEgbWlzLWNv
bmZpZ3VyZWQgc291cmNlIGNvbnRyb2wgc3lzdGVtIGNhbiBjYXVzZSBcciBhcHBlYXIgaW4gRU9M
CisgICAgIyBzZXF1ZW5jZXMgd2hlbiB3ZSByZWFkIHRoZSBnb2xkZW4gZmlsZSBpcnJlc3BlY3Rp
dmUgb2YgYW4gb3BlcmF0aW5nCisgICAgIyBzeXN0ZW0gdXNlZC4gVGhlcmVmb3JlLCB3ZSBuZWVk
IHRvIHN0cmlwIHRob3NlIFxyJ3MgZnJvbSBuZXdsaW5lcworICAgICMgdW5jb25kaXRpb25hbGx5
LgorICAgIGdvbGRlbiA9IFRvVW5peExpbmVFbmRpbmcoZ29sZGVuX2ZpbGUucmVhZCgpKQorICAg
IGdvbGRlbl9maWxlLmNsb3NlKCkKKworICAgICMgV2Ugd2FudCB0aGUgdGVzdCB0byBwYXNzIHJl
Z2FyZGxlc3Mgb2YgY2VydGFpbiBmZWF0dXJlcyBiZWluZworICAgICMgc3VwcG9ydGVkIG9yIG5v
dC4KKworICAgICMgV2Ugc3RpbGwgaGF2ZSB0byByZW1vdmUgdHlwZSBuYW1lIHNwZWNpZmljcyBp
biBhbGwgY2FzZXMuCisgICAgbm9ybWFsaXplZF9hY3R1YWwgPSBSZW1vdmVUeXBlSW5mb0RldGFp
bHMob3V0cHV0KQorICAgIG5vcm1hbGl6ZWRfZ29sZGVuID0gUmVtb3ZlVHlwZUluZm9EZXRhaWxz
KGdvbGRlbikKKworICAgIGlmIENBTl9HRU5FUkFURV9HT0xERU5fRklMRToKKyAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobm9ybWFsaXplZF9nb2xkZW4sIG5vcm1hbGl6ZWRfYWN0dWFsLAorICAgICAg
ICAgICAgICAgICAgICAgICAnXG4nLmpvaW4oZGlmZmxpYi51bmlmaWVkX2RpZmYoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkX2dvbGRlbi5zcGxpdCgnXG4nKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRfYWN0dWFsLnNwbGl0KCdcbicpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2dvbGRlbicsICdhY3R1YWwnKSkpCisgICAgZWxzZToK
KyAgICAgIG5vcm1hbGl6ZWRfYWN0dWFsID0gTm9ybWFsaXplVG9DdXJyZW50UGxhdGZvcm0oCisg
ICAgICAgICAgUmVtb3ZlVGVzdENvdW50cyhub3JtYWxpemVkX2FjdHVhbCkpCisgICAgICBub3Jt
YWxpemVkX2dvbGRlbiA9IE5vcm1hbGl6ZVRvQ3VycmVudFBsYXRmb3JtKAorICAgICAgICAgIFJl
bW92ZVRlc3RDb3VudHMoc2VsZi5SZW1vdmVVbnN1cHBvcnRlZFRlc3RzKG5vcm1hbGl6ZWRfZ29s
ZGVuKSkpCisKKyAgICAgICMgVGhpcyBjb2RlIGlzIHZlcnkgaGFuZHkgd2hlbiBkZWJ1Z2dpbmcg
Z29sZGVuIGZpbGUgZGlmZmVyZW5jZXM6CisgICAgICBpZiBvcy5nZXRlbnYoJ0RFQlVHX0dURVNU
X09VVFBVVF9URVNUJyk6CisgICAgICAgIG9wZW4ob3MucGF0aC5qb2luKAorICAgICAgICAgICAg
Z3Rlc3RfdGVzdF91dGlscy5HZXRTb3VyY2VEaXIoKSwKKyAgICAgICAgICAgICdfZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF9ub3JtYWxpemVkX2FjdHVhbC50eHQnKSwgJ3diJykud3JpdGUoCisgICAg
ICAgICAgICAgICAgbm9ybWFsaXplZF9hY3R1YWwpCisgICAgICAgIG9wZW4ob3MucGF0aC5qb2lu
KAorICAgICAgICAgICAgZ3Rlc3RfdGVzdF91dGlscy5HZXRTb3VyY2VEaXIoKSwKKyAgICAgICAg
ICAgICdfZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF9ub3JtYWxpemVkX2dvbGRlbi50eHQnKSwgJ3di
Jykud3JpdGUoCisgICAgICAgICAgICAgICAgbm9ybWFsaXplZF9nb2xkZW4pCisKKyAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobm9ybWFsaXplZF9nb2xkZW4sIG5vcm1hbGl6ZWRfYWN0dWFsKQorCisK
K2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGlmIE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9G
TEFHIGluIHN5cy5hcmd2OgorICAgICMgdW5pdHRlc3QubWFpbigpIGNhbid0IGhhbmRsZSB1bmtu
b3duIGZsYWdzCisgICAgc3lzLmFyZ3YucmVtb3ZlKE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFH
KQorCisgIGlmIEdFTkdPTERFTl9GTEFHIGluIHN5cy5hcmd2OgorICAgIGlmIENBTl9HRU5FUkFU
RV9HT0xERU5fRklMRToKKyAgICAgIG91dHB1dCA9IEdldE91dHB1dE9mQWxsQ29tbWFuZHMoKQor
ICAgICAgZ29sZGVuX2ZpbGUgPSBvcGVuKEdPTERFTl9QQVRILCAnd2InKQorICAgICAgZ29sZGVu
X2ZpbGUud3JpdGUob3V0cHV0KQorICAgICAgZ29sZGVuX2ZpbGUuY2xvc2UoKQorICAgIGVsc2U6
CisgICAgICBtZXNzYWdlID0gKAorICAgICAgICAgICIiIlVuYWJsZSB0byB3cml0ZSBhIGdvbGRl
biBmaWxlIHdoZW4gY29tcGlsZWQgaW4gYW4gZW52aXJvbm1lbnQKK3RoYXQgZG9lcyBub3Qgc3Vw
cG9ydCBhbGwgdGhlIHJlcXVpcmVkIGZlYXR1cmVzIChkZWF0aCB0ZXN0cywKK3R5cGVkIHRlc3Rz
LCBzdGFjayB0cmFjZXMsIGFuZCBtdWx0aXBsZSB0aHJlYWRzKS4KK1BsZWFzZSBidWlsZCB0aGlz
IHRlc3QgYW5kIGdlbmVyYXRlIHRoZSBnb2xkZW4gZmlsZSB1c2luZyBCbGF6ZSBvbiBMaW51eC4i
IiIpCisKKyAgICAgIHN5cy5zdGRlcnIud3JpdGUobWVzc2FnZSkKKyAgICAgIHN5cy5leGl0KDEp
CisgIGVsc2U6CisgICAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE4MDYzMGUyODJiMDM4YTdlOTljNmYyMzE1MjM2ZjEzODNkYTkxYTcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0
LXRlc3RfLmNjCkBAIC0wLDAgKzEsMTEwOSBAQAorLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJ
bmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgZmlsZSBpcyB0byBn
ZW5lcmF0ZSBHb29nbGUgVGVzdCBvdXRwdXQgdW5kZXIKKy8vIHZhcmlvdXMgY29uZGl0aW9ucy4g
IFRoZSBvdXRwdXQgd2lsbCB0aGVuIGJlIHZlcmlmaWVkIGJ5CisvLyBnb29nbGV0ZXN0LW91dHB1
dC10ZXN0LnB5IHRvIGVuc3VyZSB0aGF0IEdvb2dsZSBUZXN0IGdlbmVyYXRlcyB0aGUKKy8vIGRl
c2lyZWQgbWVzc2FnZXMuICBUaGVyZWZvcmUsIG1vc3QgdGVzdHMgaW4gdGhpcyBmaWxlIGFyZSBN
RUFOVCBUTworLy8gRkFJTC4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgorI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgor
CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpZiBfTVNDX1ZFUgorICBHVEVTVF9ESVNBQkxFX01T
Q19XQVJOSU5HU19QVVNIXyg0MTI3IC8qIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29uc3Rh
bnQgKi8pCisjZW5kaWYgIC8vIC4gX01TQ19WRVIgICAgCisKKyNpZiBHVEVTVF9JU19USFJFQURT
QUZFCit1c2luZyB0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjsKK3Vz
aW5nIHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0QXJyYXk7CisKK3VzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpOb3RpZmljYXRpb247Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkV2l0aFBh
cmFtOworI2VuZGlmCisKK25hbWVzcGFjZSBwb3NpeCA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OnBv
c2l4OworCisvLyBUZXN0cyBjYXRjaGluZyBmYXRhbCBmYWlsdXJlcy4KKworLy8gQSBzdWJyb3V0
aW5lIHVzZWQgYnkgdGhlIGZvbGxvd2luZyB0ZXN0Lgordm9pZCBUZXN0RXExKGludCB4KSB7Cisg
IEFTU0VSVF9FUSgxLCB4KTsKK30KKworLy8gVGhpcyBmdW5jdGlvbiBjYWxscyBhIHRlc3Qgc3Vi
cm91dGluZSwgY2F0Y2hlcyB0aGUgZmF0YWwgZmFpbHVyZSBpdAorLy8gZ2VuZXJhdGVzLCBhbmQg
dGhlbiByZXR1cm5zIGVhcmx5Lgordm9pZCBUcnlUZXN0U3Vicm91dGluZSgpIHsKKyAgLy8gQ2Fs
bHMgYSBzdWJyb3VudGluZSB0aGF0IHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUuCisgIFRlc3RFcTEo
Mik7CisKKyAgLy8gQ2F0Y2hlcyB0aGUgZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSB0ZXN0
LgorICAvLworICAvLyBUaGUgdGVzdGluZzo6VGVzdDo6IHByZWZpeCBpcyBuZWNlc3Nhcnkgd2hl
biBjYWxsaW5nCisgIC8vIEhhc0ZhdGFsRmFpbHVyZSgpIG91dHNpZGUgb2YgYSBURVNULCBURVNU
X0YsIG9yIHRlc3QgZml4dHVyZS4KKyAgaWYgKHRlc3Rpbmc6OlRlc3Q6Okhhc0ZhdGFsRmFpbHVy
ZSgpKSByZXR1cm47CisKKyAgLy8gSWYgd2UgZ2V0IGhlcmUsIHNvbWV0aGluZyBpcyB3cm9uZy4K
KyAgRkFJTCgpIDw8ICJUaGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkLiI7Cit9CisKK1RFU1Qo
UGFzc2luZ1Rlc3QsIFBhc3NpbmdUZXN0MSkgeworfQorCitURVNUKFBhc3NpbmdUZXN0LCBQYXNz
aW5nVGVzdDIpIHsKK30KKworLy8gVGVzdHMgdGhhdCBwYXJhbWV0ZXJzIG9mIGZhaWxpbmcgcGFy
YW1ldGVyaXplZCB0ZXN0cyBhcmUgcHJpbnRlZCBpbiB0aGUKKy8vIGZhaWxpbmcgdGVzdCBzdW1t
YXJ5LgorY2xhc3MgRmFpbGluZ1BhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBh
cmFtPGludD4ge307CisKK1RFU1RfUChGYWlsaW5nUGFyYW1UZXN0LCBGYWlscykgeworICBFWFBF
Q1RfRVEoMSwgR2V0UGFyYW0oKSk7Cit9CisKKy8vIFRoaXMgZ2VuZXJhdGVzIGEgdGVzdCB3aGlj
aCB3aWxsIGZhaWwuIEdvb2dsZSBUZXN0IGlzIGV4cGVjdGVkIHRvIHByaW50CisvLyBpdHMgcGFy
YW1ldGVyIHdoZW4gaXQgb3V0cHV0cyB0aGUgbGlzdCBvZiBhbGwgZmFpbGVkIHRlc3RzLgorSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoUHJpbnRpbmdGYWlsaW5nUGFyYW1zLAorICAgICAgICAgICAg
ICAgICAgICAgICAgRmFpbGluZ1BhcmFtVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3Rpbmc6OlZhbHVlcygyKSk7CisKK3N0YXRpYyBjb25zdCBjaGFyIGtHb2xkZW5TdHJpbmdbXSA9
ICJcIkxpbmVcMCAxXCJcbkxpbmUgMiI7CisKK1RFU1QoTm9uZmF0YWxGYWlsdXJlVGVzdCwgRXNj
YXBlc1N0cmluZ09wZXJhbmRzKSB7CisgIHN0ZDo6c3RyaW5nIGFjdHVhbCA9ICJhY3R1YWwgXCJz
dHJpbmdcIiI7CisgIEVYUEVDVF9FUShrR29sZGVuU3RyaW5nLCBhY3R1YWwpOworCisgIGNvbnN0
IGNoYXIqIGdvbGRlbiA9IGtHb2xkZW5TdHJpbmc7CisgIEVYUEVDVF9FUShnb2xkZW4sIGFjdHVh
bCk7Cit9CisKK1RFU1QoTm9uZmF0YWxGYWlsdXJlVGVzdCwgRGlmZkZvckxvbmdTdHJpbmdzKSB7
CisgIHN0ZDo6c3RyaW5nIGdvbGRlbl9zdHIoa0dvbGRlblN0cmluZywgc2l6ZW9mKGtHb2xkZW5T
dHJpbmcpIC0gMSk7CisgIEVYUEVDVF9FUShnb2xkZW5fc3RyLCAiTGluZSAyIik7Cit9CisKKy8v
IFRlc3RzIGNhdGNoaW5nIGEgZmF0YWwgZmFpbHVyZSBpbiBhIHN1YnJvdXRpbmUuCitURVNUKEZh
dGFsRmFpbHVyZVRlc3QsIEZhdGFsRmFpbHVyZUluU3Vicm91dGluZSkgeworICBwcmludGYoIihl
eHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSlcbiIpOworCisgIFRyeVRlc3RT
dWJyb3V0aW5lKCk7Cit9CisKKy8vIFRlc3RzIGNhdGNoaW5nIGEgZmF0YWwgZmFpbHVyZSBpbiBh
IG5lc3RlZCBzdWJyb3V0aW5lLgorVEVTVChGYXRhbEZhaWx1cmVUZXN0LCBGYXRhbEZhaWx1cmVJ
bk5lc3RlZFN1YnJvdXRpbmUpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0
IHggc2hvdWxkIGJlIDEpXG4iKTsKKworICAvLyBDYWxscyBhIHN1YnJvdW50aW5lIHRoYXQgeWll
bGRzIGEgZmF0YWwgZmFpbHVyZS4KKyAgVHJ5VGVzdFN1YnJvdXRpbmUoKTsKKworICAvLyBDYXRj
aGVzIHRoZSBmYXRhbCBmYWlsdXJlIGFuZCBhYm9ydHMgdGhlIHRlc3QuCisgIC8vCisgIC8vIFdo
ZW4gY2FsbGluZyBIYXNGYXRhbEZhaWx1cmUoKSBpbnNpZGUgYSBURVNULCBURVNUX0YsIG9yIHRl
c3QKKyAgLy8gZml4dHVyZSwgdGhlIHRlc3Rpbmc6OlRlc3Q6OiBwcmVmaXggaXMgbm90IG5lZWRl
ZC4KKyAgaWYgKEhhc0ZhdGFsRmFpbHVyZSgpKSByZXR1cm47CisKKyAgLy8gSWYgd2UgZ2V0IGhl
cmUsIHNvbWV0aGluZyBpcyB3cm9uZy4KKyAgRkFJTCgpIDw8ICJUaGlzIHNob3VsZCBuZXZlciBi
ZSByZWFjaGVkLiI7Cit9CisKKy8vIFRlc3RzIEhhc0ZhdGFsRmFpbHVyZSgpIGFmdGVyIGEgZmFp
bGVkIEVYUEVDVCBjaGVjay4KK1RFU1QoRmF0YWxGYWlsdXJlVGVzdCwgTm9uZmF0YWxGYWlsdXJl
SW5TdWJyb3V0aW5lKSB7CisgIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUgb24gZmFsc2Up
XG4iKTsKKyAgRVhQRUNUX1RSVUUoZmFsc2UpOyAgLy8gR2VuZXJhdGVzIGEgbm9uZmF0YWwgZmFp
bHVyZQorICBBU1NFUlRfRkFMU0UoSGFzRmF0YWxGYWlsdXJlKCkpOyAgLy8gVGhpcyBzaG91bGQg
c3VjY2VlZC4KK30KKworLy8gVGVzdHMgaW50ZXJsZWF2aW5nIHVzZXIgbG9nZ2luZyBhbmQgR29v
Z2xlIFRlc3QgYXNzZXJ0aW9ucy4KK1RFU1QoTG9nZ2luZ1Rlc3QsIEludGVybGVhdmluZ0xvZ2dp
bmdBbmRBc3NlcnRpb25zKSB7CisgIHN0YXRpYyBjb25zdCBpbnQgYVs0XSA9IHsKKyAgICAzLCA5
LCAyLCA2CisgIH07CisKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24gKDMpID49
IChhW2ldKSlcbiIpOworICBmb3IgKGludCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKGEpL3NpemVvZigqYSkpOyBpKyspIHsKKyAgICBwcmludGYoImkgPT0gJWRcbiIsIGkpOwor
ICAgIEVYUEVDVF9HRSgzLCBhW2ldKTsKKyAgfQorfQorCisvLyBUZXN0cyB0aGUgU0NPUEVEX1RS
QUNFIG1hY3JvLgorCisvLyBBIGhlbHBlciBmdW5jdGlvbiBmb3IgdGVzdGluZyBTQ09QRURfVFJB
Q0UuCit2b2lkIFN1YldpdGhvdXRUcmFjZShpbnQgbikgeworICBFWFBFQ1RfRVEoMSwgbik7Cisg
IEFTU0VSVF9FUSgyLCBuKTsKK30KKworLy8gQW5vdGhlciBoZWxwZXIgZnVuY3Rpb24gZm9yIHRl
c3RpbmcgU0NPUEVEX1RSQUNFLgordm9pZCBTdWJXaXRoVHJhY2UoaW50IG4pIHsKKyAgU0NPUEVE
X1RSQUNFKHRlc3Rpbmc6Ok1lc3NhZ2UoKSA8PCAibiA9ICIgPDwgbik7CisKKyAgU3ViV2l0aG91
dFRyYWNlKG4pOworfQorCitURVNUKFNDT1BFRF9UUkFDRVRlc3QsIEFjY2VwdGVkVmFsdWVzKSB7
CisgIFNDT1BFRF9UUkFDRSgibGl0ZXJhbCBzdHJpbmciKTsKKyAgU0NPUEVEX1RSQUNFKHN0ZDo6
c3RyaW5nKCJzdGQ6OnN0cmluZyIpKTsKKyAgU0NPUEVEX1RSQUNFKDEzMzcpOyAgLy8gc3RyZWFt
YWJsZSB0eXBlCisgIGNvbnN0IGNoYXIqIG51bGxfdmFsdWUgPSBOVUxMOworICBTQ09QRURfVFJB
Q0UobnVsbF92YWx1ZSk7CisKKyAgQUREX0ZBSUxVUkUoKSA8PCAiSnVzdCBjaGVja2luZyB0aGF0
IGFsbCB0aGVzZSB2YWx1ZXMgd29yayBmaW5lLiI7Cit9CisKKy8vIFRlc3RzIHRoYXQgU0NPUEVE
X1RSQUNFKCkgb2JleXMgbGV4aWNhbCBzY29wZXMuCitURVNUKFNDT1BFRF9UUkFDRVRlc3QsIE9i
ZXlzU2NvcGVzKSB7CisgIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKKworICAvLyBU
aGVyZSBzaG91bGQgYmUgbm8gdHJhY2UgYmVmb3JlIFNDT1BFRF9UUkFDRSgpIGlzIGludm9rZWQu
CisgIEFERF9GQUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3Vs
ZG4ndCBoYXZlIGEgdHJhY2UuIjsKKworICB7CisgICAgU0NPUEVEX1RSQUNFKCJFeHBlY3RlZCB0
cmFjZSIpOworICAgIC8vIEFmdGVyIFNDT1BFRF9UUkFDRSgpLCBhIGZhaWx1cmUgaW4gdGhlIGN1
cnJlbnQgc2NvcGUgc2hvdWxkIGNvbnRhaW4KKyAgICAvLyB0aGUgdHJhY2UuCisgICAgQUREX0ZB
SUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGhhdmUgYSB0
cmFjZS4iOworICB9CisKKyAgLy8gT25jZSB0aGUgY29udHJvbCBsZWF2ZXMgdGhlIHNjb3BlIG9m
IHRoZSBTQ09QRURfVFJBQ0UoKSwgdGhlcmUKKyAgLy8gc2hvdWxkIGJlIG5vIHRyYWNlIGFnYWlu
LgorICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91
bGRuJ3QgaGF2ZSBhIHRyYWNlLiI7Cit9CisKKy8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFIHdv
cmtzIGluc2lkZSBhIGxvb3AuCitURVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtzSW5Mb29wKSB7
CisgIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKKworICBmb3IgKGludCBpID0gMTsg
aSA8PSAyOyBpKyspIHsKKyAgICBTQ09QRURfVFJBQ0UodGVzdGluZzo6TWVzc2FnZSgpIDw8ICJp
ID0gIiA8PCBpKTsKKworICAgIFN1YldpdGhvdXRUcmFjZShpKTsKKyAgfQorfQorCisvLyBUZXN0
cyB0aGF0IFNDT1BFRF9UUkFDRSB3b3JrcyBpbiBhIHN1YnJvdXRpbmUuCitURVNUKFNDT1BFRF9U
UkFDRVRlc3QsIFdvcmtzSW5TdWJyb3V0aW5lKSB7CisgIHByaW50ZigiKGV4cGVjdGVkIHRvIGZh
aWwpXG4iKTsKKworICBTdWJXaXRoVHJhY2UoMSk7CisgIFN1YldpdGhUcmFjZSgyKTsKK30KKwor
Ly8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0UgY2FuIGJlIG5lc3RlZC4KK1RFU1QoU0NPUEVEX1RS
QUNFVGVzdCwgQ2FuQmVOZXN0ZWQpIHsKKyAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIp
OworCisgIFNDT1BFRF9UUkFDRSgiIik7ICAvLyBBIHRyYWNlIHdpdGhvdXQgYSBtZXNzYWdlLgor
CisgIFN1YldpdGhUcmFjZSgyKTsKK30KKworLy8gVGVzdHMgdGhhdCBtdWx0aXBsZSBTQ09QRURf
VFJBQ0VzIGNhbiBiZSB1c2VkIGluIHRoZSBzYW1lIHNjb3BlLgorVEVTVChTQ09QRURfVFJBQ0VU
ZXN0LCBDYW5CZVJlcGVhdGVkKSB7CisgIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsK
KworICBTQ09QRURfVFJBQ0UoIkEiKTsKKyAgQUREX0ZBSUxVUkUoKQorICAgICAgPDwgIlRoaXMg
ZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEuIjsK
KworICBTQ09QRURfVFJBQ0UoIkIiKTsKKyAgQUREX0ZBSUxVUkUoKQorICAgICAgPDwgIlRoaXMg
ZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEgYW5k
IEIuIjsKKworICB7CisgICAgU0NPUEVEX1RSQUNFKCJDIik7CisgICAgQUREX0ZBSUxVUkUoKSA8
PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkICIKKyAgICAgICAgICAgICAg
ICAgIDw8ICJjb250YWluIHRyYWNlIHBvaW50IEEsIEIsIGFuZCBDLiI7CisgIH0KKworICBTQ09Q
RURfVFJBQ0UoIkQiKTsKKyAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVj
dGVkLCBhbmQgc2hvdWxkICIKKyAgICAgICAgICAgICAgICA8PCAiY29udGFpbiB0cmFjZSBwb2lu
dCBBLCBCLCBhbmQgRC4iOworfQorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorLy8gVGVzdHMg
dGhhdCBTQ09QRURfVFJBQ0UoKXMgY2FuIGJlIHVzZWQgY29uY3VycmVudGx5IGZyb20gbXVsdGlw
bGUKKy8vIHRocmVhZHMuICBOYW1lbHksIGFuIGFzc2VydGlvbiBzaG91bGQgYmUgYWZmZWN0ZWQg
YnkKKy8vIFNDT1BFRF9UUkFDRSgpcyBpbiBpdHMgb3duIHRocmVhZCBvbmx5LgorCisvLyBIZXJl
J3MgdGhlIHNlcXVlbmNlIG9mIGFjdGlvbnMgdGhhdCBoYXBwZW4gaW4gdGhlIHRlc3Q6CisvLwor
Ly8gICBUaHJlYWQgQSAobWFpbikgICAgICAgICAgICAgICAgfCBUaHJlYWQgQiAoc3Bhd25lZCkK
Ky8vICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PXw9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQorLy8gICBzcGF3bnMgdGhyZWFkIEIgICAgICAgICAgICAgICAgfAorLy8g
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLyAgIHdhaXRzIGZvciBuMSAgICAgICAgICAgICAgICAgICB8IFNDT1BFRF9U
UkFDRSgiVHJhY2UgQiIpOworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBn
ZW5lcmF0ZXMgZmFpbHVyZSAjMQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCBub3RpZmllcyBuMQorLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIFNDT1BFRF9UUkFDRSgiVHJhY2UgQSIp
OyAgICAgICB8IHdhaXRzIGZvciBuMgorLy8gICBnZW5lcmF0ZXMgZmFpbHVyZSAjMiAgICAgICAg
ICAgfAorLy8gICBub3RpZmllcyBuMiAgICAgICAgICAgICAgICAgICAgfAorLy8gICAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLyAgIHdhaXRzIGZvciBuMyAgICAgICAgICAgICAgICAgICB8IGdlbmVyYXRlcyBmYWlsdXJl
ICMzCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRyYWNlIEIgZGllcwor
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnZW5lcmF0ZXMgZmFpbHVyZSAj
NAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBub3RpZmllcyBuMworLy8g
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLyAgIGdlbmVyYXRlcyBmYWlsdXJlICM1ICAgICAgICAgICB8IGZpbmlzaGVz
CisvLyAgIHRyYWNlIEEgZGllcyAgICAgICAgICAgICAgICAgICB8CisvLyAgIGdlbmVyYXRlcyBm
YWlsdXJlICM2ICAgICAgICAgICB8CisvLyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgd2FpdHMgZm9yIHRocmVh
ZCBCIHRvIGZpbmlzaCAgIHwKKworc3RydWN0IENoZWNrUG9pbnRzIHsKKyAgTm90aWZpY2F0aW9u
IG4xOworICBOb3RpZmljYXRpb24gbjI7CisgIE5vdGlmaWNhdGlvbiBuMzsKK307CisKK3N0YXRp
YyB2b2lkIFRocmVhZFdpdGhTY29wZWRUcmFjZShDaGVja1BvaW50cyogY2hlY2tfcG9pbnRzKSB7
CisgIHsKKyAgICBTQ09QRURfVFJBQ0UoIlRyYWNlIEIiKTsKKyAgICBBRERfRkFJTFVSRSgpCisg
ICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxIChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBC
IGFsaXZlKS4iOworICAgIGNoZWNrX3BvaW50cy0+bjEuTm90aWZ5KCk7CisgICAgY2hlY2tfcG9p
bnRzLT5uMi5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7CisKKyAgICBBRERfRkFJTFVSRSgpCisgICAg
ICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzIChpbiB0aHJlYWQgQiwgdHJhY2UgQSAmIEIgYm90
aCBhbGl2ZSkuIjsKKyAgfSAgLy8gVHJhY2UgQiBkaWVzIGhlcmUuCisgIEFERF9GQUlMVVJFKCkK
KyAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM0IChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBB
IGFsaXZlKS4iOworICBjaGVja19wb2ludHMtPm4zLk5vdGlmeSgpOworfQorCitURVNUKFNDT1BF
RF9UUkFDRVRlc3QsIFdvcmtzQ29uY3VycmVudGx5KSB7CisgIHByaW50ZigiKGV4cGVjdGluZyA2
IGZhaWx1cmVzKVxuIik7CisKKyAgQ2hlY2tQb2ludHMgY2hlY2tfcG9pbnRzOworICBUaHJlYWRX
aXRoUGFyYW08Q2hlY2tQb2ludHMqPiB0aHJlYWQoJlRocmVhZFdpdGhTY29wZWRUcmFjZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaGVja19wb2ludHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgY2hlY2tfcG9pbnRz
Lm4xLldhaXRGb3JOb3RpZmljYXRpb24oKTsKKworICB7CisgICAgU0NPUEVEX1RSQUNFKCJUcmFj
ZSBBIik7CisgICAgQUREX0ZBSUxVUkUoKQorICAgICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAj
MiAoaW4gdGhyZWFkIEEsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLiI7CisgICAgY2hlY2tfcG9p
bnRzLm4yLk5vdGlmeSgpOworICAgIGNoZWNrX3BvaW50cy5uMy5XYWl0Rm9yTm90aWZpY2F0aW9u
KCk7CisKKyAgICBBRERfRkFJTFVSRSgpCisgICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM1
IChpbiB0aHJlYWQgQSwgb25seSB0cmFjZSBBIGFsaXZlKS4iOworICB9ICAvLyBUcmFjZSBBIGRp
ZXMgaGVyZS4KKyAgQUREX0ZBSUxVUkUoKQorICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzYg
KGluIHRocmVhZCBBLCBubyB0cmFjZSBhbGl2ZSkuIjsKKyAgdGhyZWFkLkpvaW4oKTsKK30KKyNl
bmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFEU0FGRQorCisvLyBUZXN0cyBiYXNpYyBmdW5jdGlvbmFs
aXR5IG9mIHRoZSBTY29wZWRUcmFjZSB1dGlsaXR5IChtb3N0IG9mIGl0cyBmZWF0dXJlcworLy8g
YXJlIGFscmVhZHkgdGVzdGVkIGluIFNDT1BFRF9UUkFDRVRlc3QpLgorVEVTVChTY29wZWRUcmFj
ZVRlc3QsIFdpdGhFeHBsaWNpdEZpbGVBbmRMaW5lKSB7CisgIHRlc3Rpbmc6OlNjb3BlZFRyYWNl
IHRyYWNlKCJleHBsaWNpdF9maWxlLmNjIiwgMTIzLCAiZXhwZWN0ZWQgdHJhY2UgbWVzc2FnZSIp
OworICBBRERfRkFJTFVSRSgpIDw8ICJDaGVjayB0aGF0IHRoZSB0cmFjZSBpcyBhdHRhY2hlZCB0
byBhIHBhcnRpY3VsYXIgbG9jYXRpb24uIjsKK30KKworVEVTVChEaXNhYmxlZFRlc3RzV2Fybmlu
Z1Rlc3QsCisgICAgIERJU0FCTEVEX0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZ1N1cHByZXNzZXNX
YXJuaW5nKSB7CisgIC8vIFRoaXMgdGVzdCBib2R5IGlzIGludGVudGlvbmFsbHkgZW1wdHkuICBJ
dHMgc29sZSBwdXJwb3NlIGlzIGZvcgorICAvLyB2ZXJpZnlpbmcgdGhhdCB0aGUgLS1ndGVzdF9h
bHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnCisgIC8vIHN1cHByZXNzZXMgdGhlICJZT1UgSEFW
RSAxMiBESVNBQkxFRCBURVNUUyIgd2FybmluZyBhdCB0aGUgZW5kIG9mCisgIC8vIHRoZSB0ZXN0
IG91dHB1dC4KK30KKworLy8gVGVzdHMgdXNpbmcgYXNzZXJ0aW9ucyBvdXRzaWRlIG9mIFRFU1Qg
YW5kIFRFU1RfRi4KKy8vCisvLyBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgdHdvIGZhaWx1cmVzIGlu
dGVudGlvbmFsbHkuCit2b2lkIEFkSG9jVGVzdCgpIHsKKyAgcHJpbnRmKCJUaGUgbm9uLXRlc3Qg
cGFydCBvZiB0aGUgY29kZSBpcyBleHBlY3RlZCB0byBoYXZlIDIgZmFpbHVyZXMuXG5cbiIpOwor
ICBFWFBFQ1RfVFJVRShmYWxzZSk7CisgIEVYUEVDVF9FUSgyLCAzKTsKK30KKworLy8gUnVucyBh
bGwgVEVTVHMsIGFsbCBURVNUX0ZzLCBhbmQgdGhlIGFkIGhvYyB0ZXN0LgoraW50IFJ1bkFsbFRl
c3RzKCkgeworICBBZEhvY1Rlc3QoKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KKwor
Ly8gVGVzdHMgbm9uLWZhdGFsIGZhaWx1cmVzIGluIHRoZSBmaXh0dXJlIGNvbnN0cnVjdG9yLgor
Y2xhc3MgTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29u
c3RydWN0b3JUZXN0KCkgeworICAgIHByaW50ZigiKGV4cGVjdGluZyA1IGZhaWx1cmVzKVxuIik7
CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3Qg
Zml4dHVyZSBjJ3Rvci4iOworICB9CisKKyAgfk5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0
cnVjdG9yVGVzdCgpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM1
LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgU2V0
VXAoKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gU2V0
VXAoKS4iOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIEFERF9GQUlM
VVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIFRlYXJEb3duLiI7CisgIH0KK307CisK
K1RFU1RfRihOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QsIEZhaWx1cmVJ
bkNvbnN0cnVjdG9yKSB7CisgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMs
IGluIHRoZSB0ZXN0IGJvZHkuIjsKK30KKworLy8gVGVzdHMgZmF0YWwgZmFpbHVyZXMgaW4gdGhl
IGZpeHR1cmUgY29uc3RydWN0b3IuCitjbGFzcyBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1
Y3RvclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICBGYXRhbEZh
aWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QoKSB7CisgICAgcHJpbnRmKCIoZXhwZWN0aW5n
IDIgZmFpbHVyZXMpXG4iKTsKKyAgICBJbml0KCk7CisgIH0KKworICB+RmF0YWxGYWlsdXJlSW5G
aXh0dXJlQ29uc3RydWN0b3JUZXN0KCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVk
IGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKKyAgfQorCisgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1
cmUgaW4gU2V0VXAoKS4gICIKKyAgICAgICAgICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIg
Z2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgIgorICAgICAgICAgICAgICAgICAg
PDwgImhhZCBhIGZhdGFsIGZhaWx1cmUuIjsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93
bigpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gVGVhckRv
d24oKS4gICIKKyAgICAgICAgICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUs
IGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgIgorICAgICAgICAgICAgICAgICAgPDwgImhhZCBh
IGZhdGFsIGZhaWx1cmUuIjsKKyAgfQorCisgcHJpdmF0ZToKKyAgdm9pZCBJbml0KCkgeworICAg
IEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rv
ci4iOworICB9Cit9OworCitURVNUX0YoRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JU
ZXN0LCBGYWlsdXJlSW5Db25zdHJ1Y3RvcikgeworICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVD
VEVEIGZhaWx1cmUgaW4gdGhlIHRlc3QgYm9keS4gICIKKyAgICAgICAgICAgICAgICA8PCAiV2Ug
c2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yICIKKyAgICAg
ICAgICAgICAgICA8PCAiaGFkIGEgZmF0YWwgZmFpbHVyZS4iOworfQorCisvLyBUZXN0cyBub24t
ZmF0YWwgZmFpbHVyZXMgaW4gU2V0VXAoKS4KK2NsYXNzIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB+Tm9u
RmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QoKSB7CisgICAgRGVpbml0KCk7CisgIH0KKworICB2aXJ0
dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgcHJpbnRmKCIoZXhwZWN0aW5nIDQgZmFpbHVyZXMpXG4i
KTsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgp
LiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgRkFJTCgpIDw8ICJF
eHBlY3RlZCBmYWlsdXJlICMzLCBpbiBUZWFyRG93bigpLiI7CisgIH0KKyBwcml2YXRlOgorICB2
b2lkIERlaW5pdCgpIHsKKyAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRo
ZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKKyAgfQorfTsKKworVEVTVF9GKE5vbkZhdGFsRmFpbHVy
ZUluU2V0VXBUZXN0LCBGYWlsdXJlSW5TZXRVcCkgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZh
aWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLiI7Cit9CisKKy8vIFRlc3RzIGZhdGFsIGZh
aWx1cmVzIGluIFNldFVwKCkuCitjbGFzcyBGYXRhbEZhaWx1cmVJblNldFVwVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgfkZhdGFsRmFpbHVyZUlu
U2V0VXBUZXN0KCkgeworICAgIERlaW5pdCgpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNldFVw
KCkgeworICAgIHByaW50ZigiKGV4cGVjdGluZyAzIGZhaWx1cmVzKVxuIik7CisgICAgRkFJTCgp
IDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLiI7CisgIH0KKworICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBp
biBUZWFyRG93bigpLiI7CisgIH0KKyBwcml2YXRlOgorICB2b2lkIERlaW5pdCgpIHsKKyAgICBG
QUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3Iu
IjsKKyAgfQorfTsKKworVEVTVF9GKEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LCBGYWlsdXJlSW5T
ZXRVcCkgeworICBGQUlMKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBmdW5j
dGlvbi4gICIKKyAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIFNldFVw
KCkgZmFpbGVkLiI7Cit9CisKK1RFU1QoQWRkRmFpbHVyZUF0VGVzdCwgTWVzc2FnZUNvbnRhaW5z
U3BlY2lmaWVkRmlsZUFuZExpbmVOdW1iZXIpIHsKKyAgQUREX0ZBSUxVUkVfQVQoImZvby5jYyIs
IDQyKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSBpbiBmb28uY2MiOworfQorCisjaWYgR1RFU1RfSVNf
VEhSRUFEU0FGRQorCisvLyBBIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KK3ZvaWQgRGll
SWYoYm9vbCBzaG91bGRfZGllKSB7CisgIEdURVNUX0NIRUNLXyghc2hvdWxkX2RpZSkgPDwgIiAt
IGRlYXRoIGluc2lkZSBEaWVJZigpLiI7Cit9CisKKy8vIFRlc3RzIHJ1bm5pbmcgZGVhdGggdGVz
dHMgaW4gYSBtdWx0aS10aHJlYWRlZCBjb250ZXh0LgorCisvLyBVc2VkIGZvciBjb29yZGluYXRp
b24gYmV0d2VlbiB0aGUgbWFpbiBhbmQgdGhlIHNwYXduIHRocmVhZC4KK3N0cnVjdCBTcGF3blRo
cmVhZE5vdGlmaWNhdGlvbnMgeworICBTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMoKSB7fQorCisg
IE5vdGlmaWNhdGlvbiBzcGF3bl90aHJlYWRfc3RhcnRlZDsKKyAgTm90aWZpY2F0aW9uIHNwYXdu
X3RocmVhZF9va190b190ZXJtaW5hdGU7CisKKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExPV19D
T1BZX0FORF9BU1NJR05fKFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyk7Cit9OworCisvLyBUaGUg
ZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgaW4gdGhlIHRocmVhZCBzcGF3biBieSB0aGUKKy8vIE11
bHRpcGxlVGhyZWFkcyB0ZXN0IChiZWxvdykuCitzdGF0aWMgdm9pZCBUaHJlYWRSb3V0aW5lKFNw
YXduVGhyZWFkTm90aWZpY2F0aW9ucyogbm90aWZpY2F0aW9ucykgeworICAvLyBTaWduYWxzIHRo
ZSBtYWluIHRocmVhZCB0aGF0IHRoaXMgdGhyZWFkIGhhcyBzdGFydGVkLgorICBub3RpZmljYXRp
b25zLT5zcGF3bl90aHJlYWRfc3RhcnRlZC5Ob3RpZnkoKTsKKworICAvLyBXYWl0cyBmb3IgcGVy
bWlzc2lvbiB0byBmaW5pc2ggZnJvbSB0aGUgbWFpbiB0aHJlYWQuCisgIG5vdGlmaWNhdGlvbnMt
PnNwYXduX3RocmVhZF9va190b190ZXJtaW5hdGUuV2FpdEZvck5vdGlmaWNhdGlvbigpOworfQor
CisvLyBUaGlzIGlzIGEgZGVhdGgtdGVzdCB0ZXN0LCBidXQgaXQncyBub3QgbmFtZWQgd2l0aCBh
IERlYXRoVGVzdAorLy8gc3VmZml4LiAgSXQgc3RhcnRzIHRocmVhZHMgd2hpY2ggbWlnaHQgaW50
ZXJmZXJlIHdpdGggbGF0ZXIKKy8vIGRlYXRoIHRlc3RzLCBzbyBpdCBtdXN0IHJ1biBhZnRlciBh
bGwgb3RoZXIgZGVhdGggdGVzdHMuCitjbGFzcyBEZWF0aFRlc3RBbmRNdWx0aVRocmVhZHNUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLy8gU3RhcnRzIGEgdGhy
ZWFkIGFuZCB3YWl0cyBmb3IgaXQgdG8gYmVnaW4uCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsK
KyAgICB0aHJlYWRfLnJlc2V0KG5ldyBUaHJlYWRXaXRoUGFyYW08U3Bhd25UaHJlYWROb3RpZmlj
YXRpb25zKj4oCisgICAgICAgICZUaHJlYWRSb3V0aW5lLCAmbm90aWZpY2F0aW9uc18sIE5VTEwp
KTsKKyAgICBub3RpZmljYXRpb25zXy5zcGF3bl90aHJlYWRfc3RhcnRlZC5XYWl0Rm9yTm90aWZp
Y2F0aW9uKCk7CisgIH0KKyAgLy8gVGVsbHMgdGhlIHRocmVhZCB0byBmaW5pc2gsIGFuZCByZWFw
cyBpdC4KKyAgLy8gRGVwZW5kaW5nIG9uIHRoZSB2ZXJzaW9uIG9mIHRoZSB0aHJlYWQgbGlicmFy
eSBpbiB1c2UsCisgIC8vIGEgbWFuYWdlciB0aHJlYWQgbWlnaHQgc3RpbGwgYmUgbGVmdCBydW5u
aW5nIHRoYXQgd2lsbCBpbnRlcmZlcmUKKyAgLy8gd2l0aCBsYXRlciBkZWF0aCB0ZXN0cy4gIFRo
aXMgaXMgdW5mb3J0dW5hdGUsIGJ1dCB0aGlzIGNsYXNzCisgIC8vIGNsZWFucyB1cCBhZnRlciBp
dHNlbGYgYXMgYmVzdCBpdCBjYW4uCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBu
b3RpZmljYXRpb25zXy5zcGF3bl90aHJlYWRfb2tfdG9fdGVybWluYXRlLk5vdGlmeSgpOworICB9
CisKKyBwcml2YXRlOgorICBTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMgbm90aWZpY2F0aW9uc187
CisgIHRlc3Rpbmc6OmludGVybmFsOjpzY29wZWRfcHRyPFRocmVhZFdpdGhQYXJhbTxTcGF3blRo
cmVhZE5vdGlmaWNhdGlvbnMqPiA+CisgICAgICB0aHJlYWRfOworfTsKKworI2VuZGlmICAvLyBH
VEVTVF9JU19USFJFQURTQUZFCisKKy8vIFRoZSBNaXhlZFVwVGVzdENhc2VUZXN0IHRlc3QgY2Fz
ZSB2ZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IHdpbGwgZmFpbCBhCisvLyB0ZXN0IGlmIGl0IHVz
ZXMgYSBkaWZmZXJlbnQgZml4dHVyZSBjbGFzcyB0aGFuIHdoYXQgb3RoZXIgdGVzdHMgaW4KKy8v
IHRoZSBzYW1lIHRlc3QgY2FzZSB1c2UuICBJdCBkZWxpYmVyYXRlbHkgY29udGFpbnMgdHdvIGZp
eHR1cmUKKy8vIGNsYXNzZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGJ1dCBkZWZpbmVkIGluIGRpZmZl
cmVudCBuYW1lc3BhY2VzLgorCisvLyBUaGUgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFt
ZVRlc3QgdGVzdCBjYXNlIHZlcmlmaWVzIHRoYXQKKy8vIHdoZW4gdGhlIHVzZXIgZGVmaW5lcyB0
d28gdGVzdHMgd2l0aCB0aGUgc2FtZSB0ZXN0IGNhc2UgbmFtZSBBTkQKKy8vIHNhbWUgdGVzdCBu
YW1lIChidXQgaW4gZGlmZmVyZW50IG5hbWVzcGFjZXMpLCB0aGUgc2Vjb25kIHRlc3Qgd2lsbAor
Ly8gZmFpbC4KKworbmFtZXNwYWNlIGZvbyB7CisKK2NsYXNzIE1peGVkVXBUZXN0Q2FzZVRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitURVNUX0YoTWl4ZWRVcFRlc3RDYXNlVGVz
dCwgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbykge30KK1RFU1RfRihNaXhlZFVwVGVzdENhc2VU
ZXN0LCBTZWNvbmRUZXN0RnJvbU5hbWVzcGFjZUZvbykge30KKworY2xhc3MgTWl4ZWRVcFRlc3RD
YXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitU
RVNUX0YoTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCisgICAgICAgVGhlU2Vj
b25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwpIHt9CisKK30gIC8vIG5hbWVzcGFjZSBmb28K
KworbmFtZXNwYWNlIGJhciB7CisKK2NsYXNzIE1peGVkVXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7Cit9OworCisvLyBUaGUgZm9sbG93aW5nIHR3byB0ZXN0cyBhcmUgZXhw
ZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24gdGhlCisvLyBnb2xkZW4gZmlsZSB0byBjaGVjayB0
aGF0IEdvb2dsZSBUZXN0IGdlbmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KK1RFU1Rf
RihNaXhlZFVwVGVzdENhc2VUZXN0LCBUaGlzU2hvdWxkRmFpbCkge30KK1RFU1RfRihNaXhlZFVw
VGVzdENhc2VUZXN0LCBUaGlzU2hvdWxkRmFpbFRvbykge30KKworY2xhc3MgTWl4ZWRVcFRlc3RD
YXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCisv
LyBFeHBlY3RlZCB0byBmYWlsLiAgV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gY2hlY2sg
dGhhdCBHb29nbGUgVGVzdAorLy8gZ2VuZXJhdGVzIHRoZSByaWdodCBlcnJvciBtZXNzYWdlLgor
VEVTVF9GKE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAorICAgICAgIFRoZVNl
Y29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsKSB7fQorCit9ICAvLyBuYW1lc3BhY2UgYmFy
CisKKy8vIFRoZSBmb2xsb3dpbmcgdHdvIHRlc3QgY2FzZXMgdmVyaWZ5IHRoYXQgR29vZ2xlIFRl
c3QgY2F0Y2hlcyB0aGUgdXNlcgorLy8gZXJyb3Igb2YgbWl4aW5nIFRFU1QgYW5kIFRFU1RfRiBp
biB0aGUgc2FtZSB0ZXN0IGNhc2UuICBUaGUgZmlyc3QKKy8vIHRlc3QgY2FzZSBjaGVja3MgdGhl
IHNjZW5hcmlvIHdoZXJlIFRFU1RfRiBhcHBlYXJzIGJlZm9yZSBURVNULCBhbmQKKy8vIHRoZSBz
ZWNvbmQgb25lIGNoZWNrcyB3aGVyZSBURVNUIGFwcGVhcnMgYmVmb3JlIFRFU1RfRi4KKworY2xh
c3MgVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlIDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgeworfTsKKworVEVTVF9GKFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2Fz
ZSwgRGVmaW5lZFVzaW5nVEVTVF9GKSB7fQorCisvLyBFeHBlY3RlZCB0byBmYWlsLiAgV2UgcmVs
eSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gY2hlY2sgdGhhdCBHb29nbGUgVGVzdAorLy8gZ2VuZXJh
dGVzIHRoZSByaWdodCBlcnJvciBtZXNzYWdlLgorVEVTVChURVNUX0ZfYmVmb3JlX1RFU1RfaW5f
c2FtZV90ZXN0X2Nhc2UsIERlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsKSB7fQorCitjbGFz
cyBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Cit9OworCitURVNUKFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZSwg
RGVmaW5lZFVzaW5nVEVTVCkge30KKworLy8gRXhwZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24g
dGhlIGdvbGRlbiBmaWxlIHRvIGNoZWNrIHRoYXQgR29vZ2xlIFRlc3QKKy8vIGdlbmVyYXRlcyB0
aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KK1RFU1RfRihURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2Ft
ZV90ZXN0X2Nhc2UsIERlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwpIHsKK30KKworLy8g
VXNlZCBmb3IgdGVzdGluZyBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGFuZCBFWFBFQ1RfRkFU
QUxfRkFJTFVSRSgpLgoraW50IGdsb2JhbF9pbnRlZ2VyID0gMDsKKworLy8gVGVzdHMgdGhhdCBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVuY2UgZ2xvYmFsIHZhcmlhYmxlcy4K
K1RFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFi
bGVzKSB7CisgIGdsb2JhbF9pbnRlZ2VyID0gMDsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
eworICAgIEVYUEVDVF9FUSgxLCBnbG9iYWxfaW50ZWdlcikgPDwgIkV4cGVjdGVkIG5vbi1mYXRh
bCBmYWlsdXJlLiI7CisgIH0sICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKK30KKwor
Ly8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVuY2UgbG9j
YWwgdmFyaWFibGVzCisvLyAoc3RhdGljIG9yIG5vdCkuCitURVNUKEV4cGVjdE5vbmZhdGFsRmFp
bHVyZVRlc3QsIENhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVzKSB7CisgIGludCBtID0gMDsKKyAg
c3RhdGljIGludCBuOworICBuID0gMTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAg
IEVYUEVDVF9FUShtLCBuKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKKyAgfSwg
IkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKCkgc3VjY2VlZHMgd2hlbiB0aGVyZSBpcyBleGFjdGx5CisvLyBv
bmUgbm9uLWZhdGFsIGZhaWx1cmUgYW5kIG5vIGZhdGFsIGZhaWx1cmUuCitURVNUKEV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QsIFN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUp
IHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4
cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7CisgIH0sICJFeHBlY3RlZCBub24tZmF0YWwgZmFp
bHVyZS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZh
aWxzIHdoZW4gdGhlcmUgaXMgbm8KKy8vIG5vbi1mYXRhbCBmYWlsdXJlLgorVEVTVChFeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUpIHsK
KyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRSh7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgYXJlIHR3bworLy8gbm9uLWZhdGFsIGZhaWx1cmVz
LgorVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUFyZVR3b05v
bmZhdGFsRmFpbHVyZXMpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwor
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0
ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMS4iOworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVk
IG5vbi1mYXRhbCBmYWlsdXJlIDIuIjsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBvbmUgZmF0YWwKKy8v
IGZhaWx1cmUuCitURVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJl
SXNPbmVGYXRhbEZhaWx1cmUpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIp
OworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBm
YXRhbCBmYWlsdXJlLiI7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWluZworLy8gdGVzdGVk
IHJldHVybnMuCitURVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblN0YXRl
bWVudFJldHVybnMpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAgcmV0dXJuOworICB9LCAiIik7Cit9CisKKyNp
ZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKCkgZmFpbHMgd2hlbiB0aGUgc3RhdGVtZW50IGJlaW5nCisvLyB0ZXN0ZWQgdGhyb3dz
LgorVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRUaHJv
d3MpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICB0cnkgeworICAg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKKyAgICAgIHRocm93IDA7CisgICAgfSwgIiIpOwor
ICB9IGNhdGNoKGludCkgeyAgLy8gTk9MSU5UCisgIH0KK30KKworI2VuZGlmICAvLyBHVEVTVF9I
QVNfRVhDRVBUSU9OUworCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgY2Fu
IHJlZmVyZW5jZSBnbG9iYWwgdmFyaWFibGVzLgorVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0
LCBDYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMpIHsKKyAgZ2xvYmFsX2ludGVnZXIgPSAwOwor
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CisgICAgQVNTRVJUX0VRKDEsIGdsb2JhbF9pbnRlZ2Vy
KSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOworICB9LCAiRXhwZWN0ZWQgZmF0YWwgZmFp
bHVyZS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGNhbiBy
ZWZlcmVuY2UgbG9jYWwgc3RhdGljCisvLyB2YXJpYWJsZXMuCitURVNUKEV4cGVjdEZhdGFsRmFp
bHVyZVRlc3QsIENhblJlZmVyZW5jZUxvY2FsU3RhdGljVmFyaWFibGVzKSB7CisgIHN0YXRpYyBp
bnQgbjsKKyAgbiA9IDE7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKKyAgICBBU1NFUlRfRVEo
MCwgbikgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKKyAgfSwgIkV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBz
dWNjZWVkcyB3aGVuIHRoZXJlIGlzIGV4YWN0bHkKKy8vIG9uZSBmYXRhbCBmYWlsdXJlIGFuZCBu
byBub24tZmF0YWwgZmFpbHVyZS4KK1RFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgU3VjY2Vl
ZHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZSkgeworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7
CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7CisgIH0sICJFeHBlY3Rl
ZCBmYXRhbCBmYWlsdXJlLiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlM
VVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBubyBmYXRhbAorLy8gZmFpbHVyZS4KK1RFU1QoRXhw
ZWN0RmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlKSB7Cisg
IHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoeworICB9LCAiIik7Cit9CisKKy8vIEEgaGVscGVyIGZvciBnZW5lcmF0aW5nIGEgZmF0YWwg
ZmFpbHVyZS4KK3ZvaWQgRmF0YWxGYWlsdXJlKCkgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZh
dGFsIGZhaWx1cmUuIjsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgp
IGZhaWxzIHdoZW4gdGhlcmUgYXJlIHR3bworLy8gZmF0YWwgZmFpbHVyZXMuCitURVNUKEV4cGVj
dEZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcykgewor
ICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKHsKKyAgICBGYXRhbEZhaWx1cmUoKTsKKyAgICBGYXRhbEZhaWx1cmUoKTsKKyAgfSwgIiIp
OworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0
aGVyZSBpcyBvbmUgbm9uLWZhdGFsCisvLyBmYWlsdXJlLgorVEVTVChFeHBlY3RGYXRhbEZhaWx1
cmVUZXN0LCBGYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlKSB7CisgIHByaW50Zigi
KGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeworICAg
IEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7CisgIH0sICIi
KTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4g
dGhlIHN0YXRlbWVudCBiZWluZworLy8gdGVzdGVkIHJldHVybnMuCitURVNUKEV4cGVjdEZhdGFs
RmFpbHVyZVRlc3QsIEZhaWxzV2hlblN0YXRlbWVudFJldHVybnMpIHsKKyAgcHJpbnRmKCIoZXhw
ZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CisgICAgcmV0
dXJuOworICB9LCAiIik7Cit9CisKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBUZXN0
cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGUgc3RhdGVtZW50IGJl
aW5nCisvLyB0ZXN0ZWQgdGhyb3dzLgorVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWls
c1doZW5TdGF0ZW1lbnRUaHJvd3MpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlc
biIpOworICB0cnkgeworICAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKKyAgICAgIHRocm93IDA7
CisgICAgfSwgIiIpOworICB9IGNhdGNoKGludCkgeyAgLy8gTk9MSU5UCisgIH0KK30KKworI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBUaGlzICNpZmRlZiBibG9jayB0ZXN0
cyB0aGUgb3V0cHV0IG9mIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCisKK3N0ZDo6c3RyaW5n
IFBhcmFtTmFtZUZ1bmMoY29uc3QgdGVzdGluZzo6VGVzdFBhcmFtSW5mbzxzdGQ6OnN0cmluZz4m
IGluZm8pIHsKKyAgcmV0dXJuIGluZm8ucGFyYW07Cit9CisKK2NsYXNzIFBhcmFtVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHN0ZDo6c3RyaW5nPiB7Cit9OworCitURVNUX1Ao
UGFyYW1UZXN0LCBTdWNjZXNzKSB7CisgIEVYUEVDVF9FUSgiYSIsIEdldFBhcmFtKCkpOworfQor
CitURVNUX1AoUGFyYW1UZXN0LCBGYWlsdXJlKSB7CisgIEVYUEVDVF9FUSgiYiIsIEdldFBhcmFt
KCkpIDw8ICJFeHBlY3RlZCBmYWlsdXJlIjsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ao
UHJpbnRpbmdTdHJpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1UZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6VmFsdWVzKHN0ZDo6c3RyaW5nKCJhIikpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1OYW1lRnVuYyk7CisKKy8vIFRoaXMgI2lmZGVm
IGJsb2NrIHRlc3RzIHRoZSBvdXRwdXQgb2YgdHlwZWQgdGVzdHMuCisjaWYgR1RFU1RfSEFTX1RZ
UEVEX1RFU1QKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlZFRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitUWVBFRF9URVNUX0NBU0UoVHlwZWRUZXN0LCB0ZXN0
aW5nOjpUeXBlczxpbnQ+KTsKKworVFlQRURfVEVTVChUeXBlZFRlc3QsIFN1Y2Nlc3MpIHsKKyAg
RVhQRUNUX0VRKDAsIFR5cGVQYXJhbSgpKTsKK30KKworVFlQRURfVEVTVChUeXBlZFRlc3QsIEZh
aWx1cmUpIHsKKyAgRVhQRUNUX0VRKDEsIFR5cGVQYXJhbSgpKSA8PCAiRXhwZWN0ZWQgZmFpbHVy
ZSI7Cit9CisKK3R5cGVkZWYgdGVzdGluZzo6VHlwZXM8Y2hhciwgaW50PiBUeXBlc0ZvclRlc3RX
aXRoTmFtZXM7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZWRUZXN0V2l0aE5h
bWVzIDogcHVibGljIHRlc3Rpbmc6OlRlc3Qge307CisKK2NsYXNzIFR5cGVkVGVzdE5hbWVzIHsK
KyBwdWJsaWM6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGF0aWMgc3RkOjpzdHJpbmcg
R2V0TmFtZShpbnQgaSkgeworICAgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFQsIGNo
YXI+Ojp2YWx1ZSkKKyAgICAgIHJldHVybiBzdGQ6OnN0cmluZygiY2hhcl8iKSArIDo6dGVzdGlu
Zzo6UHJpbnRUb1N0cmluZyhpKTsKKyAgICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxU
LCBpbnQ+Ojp2YWx1ZSkKKyAgICAgIHJldHVybiBzdGQ6OnN0cmluZygiaW50XyIpICsgOjp0ZXN0
aW5nOjpQcmludFRvU3RyaW5nKGkpOworICB9Cit9OworCitUWVBFRF9URVNUX0NBU0UoVHlwZWRU
ZXN0V2l0aE5hbWVzLCBUeXBlc0ZvclRlc3RXaXRoTmFtZXMsIFR5cGVkVGVzdE5hbWVzKTsKKwor
VFlQRURfVEVTVChUeXBlZFRlc3RXaXRoTmFtZXMsIFN1Y2Nlc3MpIHt9CisKK1RZUEVEX1RFU1Qo
VHlwZWRUZXN0V2l0aE5hbWVzLCBGYWlsdXJlKSB7IEZBSUwoKTsgfQorCisjZW5kaWYgIC8vIEdU
RVNUX0hBU19UWVBFRF9URVNUCisKKy8vIFRoaXMgI2lmZGVmIGJsb2NrIHRlc3RzIHRoZSBvdXRw
dXQgb2YgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorI2lmIEdURVNUX0hBU19UWVBFRF9URVNU
X1AKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlZFRlc3RQIDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgeworfTsKKworVFlQRURfVEVTVF9DQVNFX1AoVHlwZWRUZXN0UCk7CisKK1RZ
UEVEX1RFU1RfUChUeXBlZFRlc3RQLCBTdWNjZXNzKSB7CisgIEVYUEVDVF9FUSgwVSwgVHlwZVBh
cmFtKCkpOworfQorCitUWVBFRF9URVNUX1AoVHlwZWRUZXN0UCwgRmFpbHVyZSkgeworICBFWFBF
Q1RfRVEoMVUsIFR5cGVQYXJhbSgpKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7Cit9CisKK1JFR0lT
VEVSX1RZUEVEX1RFU1RfQ0FTRV9QKFR5cGVkVGVzdFAsIFN1Y2Nlc3MsIEZhaWx1cmUpOworCit0
eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPHVuc2lnbmVkIGNoYXIsIHVuc2lnbmVkIGludD4gVW5zaWdu
ZWRUeXBlczsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFVuc2lnbmVkLCBUeXBlZFRl
c3RQLCBVbnNpZ25lZFR5cGVzKTsKKworY2xhc3MgVHlwZWRUZXN0UE5hbWVzIHsKKyBwdWJsaWM6
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGF0aWMgc3RkOjpzdHJpbmcgR2V0TmFtZShp
bnQgaSkgeworICAgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFQsIHVuc2lnbmVkIGNo
YXI+Ojp2YWx1ZSkgeworICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCJ1bnNpZ25lZF9jaGFyXyIp
ICsgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGkpOworICAgIH0KKyAgICBpZiAodGVzdGluZzo6
aW50ZXJuYWw6OklzU2FtZTxULCB1bnNpZ25lZCBpbnQ+Ojp2YWx1ZSkgeworICAgICAgcmV0dXJu
IHN0ZDo6c3RyaW5nKCJ1bnNpZ25lZF9pbnRfIikgKyA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmco
aSk7CisgICAgfQorICB9Cit9OworCitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChVbnNp
Z25lZEN1c3RvbU5hbWUsIFR5cGVkVGVzdFAsIFVuc2lnbmVkVHlwZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUeXBlZFRlc3RQTmFtZXMpOworCisjZW5kaWYgIC8vIEdURVNUX0hB
U19UWVBFRF9URVNUX1AKKworI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCisKKy8vIFdlIHJlbHkg
b24gdGhlIGdvbGRlbiBmaWxlIHRvIHZlcmlmeSB0aGF0IHRlc3RzIHdob3NlIHRlc3QgY2FzZQor
Ly8gbmFtZSBlbmRzIHdpdGggRGVhdGhUZXN0IGFyZSBydW4gZmlyc3QuCisKK1RFU1QoQURlYXRo
VGVzdCwgU2hvdWxkUnVuRmlyc3QpIHsKK30KKworIyBpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAor
CisvLyBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmlsZSB0byB2ZXJpZnkgdGhhdCB0eXBlZCB0ZXN0
cyB3aG9zZSB0ZXN0CisvLyBjYXNlIG5hbWUgZW5kcyB3aXRoIERlYXRoVGVzdCBhcmUgcnVuIGZp
cnN0LgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEFUeXBlZERlYXRoVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK3R5cGVkZWYgdGVzdGluZzo6VHlwZXM8aW50LCBk
b3VibGU+IE51bWVyaWNUeXBlczsKK1RZUEVEX1RFU1RfQ0FTRShBVHlwZWREZWF0aFRlc3QsIE51
bWVyaWNUeXBlcyk7CisKK1RZUEVEX1RFU1QoQVR5cGVkRGVhdGhUZXN0LCBTaG91bGRSdW5GaXJz
dCkgeworfQorCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAorCisjIGlmIEdURVNU
X0hBU19UWVBFRF9URVNUX1AKKworCisvLyBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmlsZSB0byB2
ZXJpZnkgdGhhdCB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMKKy8vIHdob3NlIHRlc3QgY2FzZSBu
YW1lIGVuZHMgd2l0aCBEZWF0aFRlc3QgYXJlIHJ1biBmaXJzdC4KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitjbGFzcyBBVHlwZVBhcmFtRGVhdGhUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qg
eworfTsKKworVFlQRURfVEVTVF9DQVNFX1AoQVR5cGVQYXJhbURlYXRoVGVzdCk7CisKK1RZUEVE
X1RFU1RfUChBVHlwZVBhcmFtRGVhdGhUZXN0LCBTaG91bGRSdW5GaXJzdCkgeworfQorCitSRUdJ
U1RFUl9UWVBFRF9URVNUX0NBU0VfUChBVHlwZVBhcmFtRGVhdGhUZXN0LCBTaG91bGRSdW5GaXJz
dCk7CisKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBBVHlwZVBhcmFtRGVhdGhU
ZXN0LCBOdW1lcmljVHlwZXMpOworCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVF9Q
CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworLy8gVGVzdHMgdmFyaW91cyBm
YWlsdXJlIGNvbmRpdGlvbnMgb2YKKy8vIEVYUEVDVF97LE5PTn1GQVRBTF9GQUlMVVJFeyxfT05f
QUxMX1RIUkVBRFN9LgorY2xhc3MgRXhwZWN0RmFpbHVyZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7CisgcHVibGljOiAgLy8gTXVzdCBiZSBwdWJsaWMgYW5kIG5vdCBwcm90ZWN0ZWQgZHVl
IHRvIGEgYnVnIGluIGcrKyAzLjQuMi4KKyAgZW51bSBGYWlsdXJlTW9kZSB7CisgICAgRkFUQUxf
RkFJTFVSRSwKKyAgICBOT05GQVRBTF9GQUlMVVJFCisgIH07CisgIHN0YXRpYyB2b2lkIEFkZEZh
aWx1cmUoRmFpbHVyZU1vZGUgZmFpbHVyZSkgeworICAgIGlmIChmYWlsdXJlID09IEZBVEFMX0ZB
SUxVUkUpIHsKKyAgICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOworICAg
IH0gZWxzZSB7CisgICAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFp
bHVyZS4iOworICAgIH0KKyAgfQorfTsKKworVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBl
Y3RGYXRhbEZhaWx1cmUpIHsKKyAgLy8gRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0IHN1Y2Nl
ZWRzLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKFNVQ0NFRUQoKSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7CisgIC8vIEV4
cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBub24tZmF0YWwgZmFpbHVyZS4KKyAgcHJp
bnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShB
ZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpLCAiRXhwZWN0ZWQgbm9uLWZhdGFsICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgImZhaWx1cmUuIik7CisgIC8vIFdyb25nIG1lc3NhZ2UuCisgIHBy
aW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
QWRkRmFpbHVyZShGQVRBTF9GQUlMVVJFKSwgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSAiCisg
ICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZC4iKTsKK30KKworVEVTVF9GKEV4cGVjdEZh
aWx1cmVUZXN0LCBFeHBlY3ROb25GYXRhbEZhaWx1cmUpIHsKKyAgLy8gRXhwZWN0ZWQgbm9uLWZh
dGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVy
ZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShTVUNDRUVEKCksICJFeHBlY3RlZCBu
b24tZmF0YWwgZmFpbHVyZS4iKTsKKyAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1
dCBnb3QgYSBmYXRhbCBmYWlsdXJlLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxu
Iik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSks
ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOworICAvLyBXcm9uZyBtZXNzYWdlLgorICBwcmlu
dGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJTFVSRSksICJTb21lIG90aGVyIG5vbi1mYXRhbCAiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsdXJlLiIpOworfQorCisjaWYgR1RFU1RfSVNf
VEhSRUFEU0FGRQorCitjbGFzcyBFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0IDogcHVibGlj
IEV4cGVjdEZhaWx1cmVUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHN0YXRpYyB2b2lkIEFkZEZhaWx1
cmVJbk90aGVyVGhyZWFkKEZhaWx1cmVNb2RlIGZhaWx1cmUpIHsKKyAgICBUaHJlYWRXaXRoUGFy
YW08RmFpbHVyZU1vZGU+IHRocmVhZCgmQWRkRmFpbHVyZSwgZmFpbHVyZSwgTlVMTCk7CisgICAg
dGhyZWFkLkpvaW4oKTsKKyAgfQorfTsKKworVEVTVF9GKEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFk
c1Rlc3QsIEV4cGVjdEZhdGFsRmFpbHVyZSkgeworICAvLyBXZSBvbmx5IGludGVyY2VwdCB0aGUg
Y3VycmVudCB0aHJlYWQuCisgIHByaW50ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7Cisg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZBVEFMX0ZBSUxV
UkUpLAorICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsK
K30KKworVEVTVF9GKEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QsIEV4cGVjdE5vbkZhdGFs
RmFpbHVyZSkgeworICAvLyBXZSBvbmx5IGludGVyY2VwdCB0aGUgY3VycmVudCB0aHJlYWQuCisg
IHByaW50ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKE5PTkZBVEFMX0ZBSUxVUkUpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7Cit9CisK
K3R5cGVkZWYgRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCBTY29wZWRGYWtlVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlclRlc3Q7CisKKy8vIFRlc3RzIHRoYXQgdGhlIFNjb3BlZEZha2VUZXN0UGFy
dFJlc3VsdFJlcG9ydGVyIG9ubHkgY2F0Y2hlcyBmYWlsdXJlcyBmcm9tCisvLyB0aGUgY3VycmVu
dCB0aHJlYWQgaWYgaXQgaXMgaW5zdGFudGlhdGVkIHdpdGggSU5URVJDRVBUX09OTFlfQ1VSUkVO
VF9USFJFQUQuCitURVNUX0YoU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LCBJ
bnRlcmNlcHRPbmx5Q3VycmVudFRocmVhZCkgeworICBwcmludGYoIihleHBlY3RpbmcgMiBmYWls
dXJlcylcbiIpOworICBUZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7CisgIHsKKyAgICBTY29w
ZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlciByZXBvcnRlcigKKyAgICAgICAgU2NvcGVkRmFr
ZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6OklOVEVSQ0VQVF9PTkxZX0NVUlJFTlRfVEhSRUFELAor
ICAgICAgICAmcmVzdWx0cyk7CisgICAgQWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoRkFUQUxfRkFJ
TFVSRSk7CisgICAgQWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoTk9ORkFUQUxfRkFJTFVSRSk7Cisg
IH0KKyAgLy8gVGhlIHR3byBmYWlsdXJlcyBzaG91bGQgbm90IGhhdmUgYmVlbiBpbnRlcmNlcHRl
ZC4KKyAgRVhQRUNUX0VRKDAsIHJlc3VsdHMuc2l6ZSgpKSA8PCAiVGhpcyBzaG91bGRuJ3QgZmFp
bC4iOworfQorCisjZW5kaWYgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUKKworVEVTVF9GKEV4cGVj
dEZhaWx1cmVUZXN0LCBFeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKKyAgLy8gRXhw
ZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0IHN1Y2NlZWRzLgorICBwcmludGYoIihleHBlY3Rpbmcg
MSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKFNV
Q0NFRUQoKSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7CisgIC8vIEV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUsIGJ1dCBnb3QgYSBub24tZmF0YWwgZmFpbHVyZS4KKyAgcHJpbnRmKCIoZXhwZWN0
aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFE
UyhBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7CisgIC8vIFdyb25n
IG1lc3NhZ2UuCisgIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJFKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNvbWUgb3RoZXIgZmF0YWwg
ZmFpbHVyZSBleHBlY3RlZC4iKTsKK30KKworVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBl
Y3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKKyAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFs
IGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlc
biIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhTVUNDRUVEKCks
ICJFeHBlY3RlZCBub24tZmF0YWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZmFpbHVyZS4iKTsKKyAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1
dCBnb3QgYSBmYXRhbCBmYWlsdXJlLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxu
Iik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUo
RkFUQUxfRkFJTFVSRSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOworICAvLyBXcm9uZyBtZXNzYWdlLgorICBwcmlu
dGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
X09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJTFVSRSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb21lIG90aGVyIG5vbi1mYXRhbCBmYWls
dXJlLiIpOworfQorCisKKy8vIFR3byB0ZXN0IGVudmlyb25tZW50cyBmb3IgdGVzdGluZyB0ZXN0
aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKS4KKworY2xhc3MgRm9vRW52aXJvbm1lbnQg
OiBwdWJsaWMgdGVzdGluZzo6RW52aXJvbm1lbnQgeworIHB1YmxpYzoKKyAgdmlydHVhbCB2b2lk
IFNldFVwKCkgeworICAgIHByaW50ZigiJXMiLCAiRm9vRW52aXJvbm1lbnQ6OlNldFVwKCkgY2Fs
bGVkLlxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgcHJpbnRm
KCIlcyIsICJGb29FbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuXG4iKTsKKyAgICBGQUlM
KCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKKyAgfQorfTsKKworY2xhc3MgQmFyRW52
aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6RW52aXJvbm1lbnQgeworIHB1YmxpYzoKKyAgdmly
dHVhbCB2b2lkIFNldFVwKCkgeworICAgIHByaW50ZigiJXMiLCAiQmFyRW52aXJvbm1lbnQ6OlNl
dFVwKCkgY2FsbGVkLlxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Cisg
ICAgcHJpbnRmKCIlcyIsICJCYXJFbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuXG4iKTsK
KyAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOworICB9
Cit9OworCisvLyBUaGUgbWFpbiBmdW5jdGlvbi4KKy8vCisvLyBUaGUgaWRlYSBpcyB0byB1c2Ug
R29vZ2xlIFRlc3QgdG8gcnVuIGFsbCB0aGUgdGVzdHMgd2UgaGF2ZSBkZWZpbmVkIChzb21lCisv
LyBvZiB0aGVtIGFyZSBpbnRlbmRlZCB0byBmYWlsKSwgYW5kIHRoZW4gY29tcGFyZSB0aGUgdGVz
dCByZXN1bHRzCisvLyB3aXRoIHRoZSAiZ29sZGVuIiBmaWxlLgoraW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIgKiphcmd2KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcocHJpbnRfdGltZSkgPSBmYWxz
ZTsKKworICAvLyBXZSBqdXN0IHJ1biB0aGUgdGVzdHMsIGtub3dpbmcgc29tZSBvZiB0aGVtIGFy
ZSBpbnRlbmRlZCB0byBmYWlsLgorICAvLyBXZSB3aWxsIHVzZSBhIHNlcGFyYXRlIFB5dGhvbiBz
Y3JpcHQgdG8gY29tcGFyZSB0aGUgb3V0cHV0IG9mCisgIC8vIHRoaXMgcHJvZ3JhbSB3aXRoIHRo
ZSBnb2xkZW4gZmlsZS4KKworICAvLyBJdCdzIGhhcmQgdG8gdGVzdCBJbml0R29vZ2xlVGVzdCgp
IGRpcmVjdGx5LCBhcyBpdCBoYXMgbWFueQorICAvLyBnbG9iYWwgc2lkZSBlZmZlY3RzLiAgVGhl
IGZvbGxvd2luZyBsaW5lIHNlcnZlcyBhcyBhIHNhbml0eSB0ZXN0CisgIC8vIGZvciBpdC4KKyAg
dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICBib29sIGludGVybmFsX3Nr
aXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cyA9CisgICAgICBzdGQ6OmNvdW50KGFyZ3Ys
IGFyZ3YgKyBhcmdjLAorICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZygiaW50ZXJuYWxfc2tp
cF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzIikpID4gMDsKKworI2lmIEdURVNUX0hBU19E
RUFUSF9URVNUCisgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6R1RFU1RfRkxBRyhpbnRlcm5hbF9y
dW5fZGVhdGhfdGVzdCkgIT0gIiIpIHsKKyAgICAvLyBTa2lwIHRoZSB1c3VhbCBvdXRwdXQgY2Fw
dHVyaW5nIGlmIHdlJ3JlIHJ1bm5pbmcgYXMgdGhlIGNoaWxkCisgICAgLy8gcHJvY2VzcyBvZiBh
biB0aHJlYWRzYWZlLXN0eWxlIGRlYXRoIHRlc3QuCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKyAg
ICBwb3NpeDo6RlJlb3BlbigibnVsOiIsICJ3Iiwgc3Rkb3V0KTsKKyMgZWxzZQorICAgIHBvc2l4
OjpGUmVvcGVuKCIvZGV2L251bGwiLCAidyIsIHN0ZG91dCk7CisjIGVuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCisgICAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKKyAgfQorI2VuZGlmICAvLyBH
VEVTVF9IQVNfREVBVEhfVEVTVAorCisgIGlmIChpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2Fu
ZF9hZF9ob2NfdGVzdHMpCisgICAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKKworICAvLyBSZWdp
c3RlcnMgdHdvIGdsb2JhbCB0ZXN0IGVudmlyb25tZW50cy4KKyAgLy8gVGhlIGdvbGRlbiBmaWxl
IHZlcmlmaWVzIHRoYXQgdGhleSBhcmUgc2V0IHVwIGluIHRoZSBvcmRlciB0aGV5CisgIC8vIGFy
ZSByZWdpc3RlcmVkLCBhbmQgdG9ybiBkb3duIGluIHRoZSByZXZlcnNlIG9yZGVyLgorICB0ZXN0
aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEZvb0Vudmlyb25tZW50KTsKKyAgdGVz
dGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBCYXJFbnZpcm9ubWVudCk7CisjaWYg
X01TQ19WRVIKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDEyNwor
I2VuZGlmICAvLyAuIF9NU0NfVkVSICAgIAorICByZXR1cm4gUnVuQWxsVGVzdHMoKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10
ZXN0LWludmFsaWQtbmFtZTEtdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
YTA4NDc3YTc3ZWJkZjBhYTU1ZjIzNDQ0YWJkNmI4MzlkOTBiYTQzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52
YWxpZC1uYW1lMS10ZXN0LnB5CkBAIC0wLDAgKzEsNjMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorIworIyBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworIiIiVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCB3YXJucyB0
aGUgdXNlciB3aGVuIG5vdCBpbml0aWFsaXplZCBwcm9wZXJseS4iIiIKKworaW1wb3J0IGd0ZXN0
X3Rlc3RfdXRpbHMKKworYmluYXJ5X25hbWUgPSAnZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFs
aWQtbmFtZTEtdGVzdF8nCitDT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0
YWJsZVBhdGgoYmluYXJ5X25hbWUpCisKKworZGVmIEFzc2VydChjb25kaXRpb24pOgorICBpZiBu
b3QgY29uZGl0aW9uOgorICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisKKworZGVmIFRlc3RFeGl0
Q29kZUFuZE91dHB1dChjb21tYW5kKToKKyAgIiIiUnVucyB0aGUgZ2l2ZW4gY29tbWFuZCBhbmQg
dmVyaWZpZXMgaXRzIGV4aXQgY29kZSBhbmQgb3V0cHV0LiIiIgorCisgIGVyciA9ICgnUGFyYW1l
dGVyaXplZCB0ZXN0IG5hbWUgXCciSW52YWxpZFdpdGhRdW90ZXMiXCcgaXMgaW52YWxpZCcpCisK
KyAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kKQorICBBc3NlcnQocC50
ZXJtaW5hdGVkX2J5X3NpZ25hbCkKKworICAjIFZlcmlmeSB0aGUgb3V0cHV0IG1lc3NhZ2UgY29u
dGFpbnMgYXBwcm9wcmlhdGUgb3V0cHV0CisgIEFzc2VydChlcnIgaW4gcC5vdXRwdXQpCisKKwor
Y2xhc3MgR1Rlc3RQYXJhbVRlc3RJbnZhbGlkTmFtZTFUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVz
dENhc2UpOgorCisgIGRlZiB0ZXN0RXhpdENvZGVBbmRPdXRwdXQoc2VsZik6CisgICAgVGVzdEV4
aXRDb2RlQW5kT3V0cHV0KENPTU1BTkQpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
KyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdF8uY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZh
bGlkLW5hbWUxLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhOTUxNTViMjNhNzg3MWRiNWQyNTQ5YTBl
OWY5MDUwNzVhOTM5OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3RfLmNjCkBAIC0w
LDAgKzEsNTAgQEAKKy8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoK
Ky8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
Ly8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLwor
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsKK2NsYXNzIER1bW15
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08Y29uc3QgY2hhciAqPiB7fTsK
KworVEVTVF9QKER1bW15VGVzdCwgRHVtbXkpIHsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoSW52YWxpZFRlc3ROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgRHVtbXlUZXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMoIkludmFsaWRXaXRoUXVv
dGVzIiksCisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmdQ
YXJhbU5hbWUoKSk7CisKK30gIC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hh
ciAqYXJndltdKSB7CisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAg
cmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0LnB5
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52
YWxpZC1uYW1lMi10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiODM4ZjQ2MzIyOTFkMWNiNzhlNGExMWVj
M2FiMGM3NzNiOTRkNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRlc3QucHkKQEAgLTAs
MCArMSw2MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDE1IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJW
ZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IHdhcm5zIHRoZSB1c2VyIHdoZW4gbm90IGluaXRpYWxp
emVkIHByb3Blcmx5LiIiIgorCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitiaW5hcnlfbmFt
ZSA9ICdnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0XycKK0NPTU1BTkQg
PSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aChiaW5hcnlfbmFtZSkKKwor
CitkZWYgQXNzZXJ0KGNvbmRpdGlvbik6CisgIGlmIG5vdCBjb25kaXRpb246CisgICAgcmFpc2Ug
QXNzZXJ0aW9uRXJyb3IKKworCitkZWYgVGVzdEV4aXRDb2RlQW5kT3V0cHV0KGNvbW1hbmQpOgor
ICAiIiJSdW5zIHRoZSBnaXZlbiBjb21tYW5kIGFuZCB2ZXJpZmllcyBpdHMgZXhpdCBjb2RlIGFu
ZCBvdXRwdXQuIiIiCisKKyAgZXJyID0gKCdEdXBsaWNhdGUgcGFyYW1ldGVyaXplZCB0ZXN0IG5h
bWUgXCdhXCcnKQorCisgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkK
KyAgQXNzZXJ0KHAudGVybWluYXRlZF9ieV9zaWduYWwpCisKKyAgIyBDaGVjayBmb3IgYXBwcm9w
cmlhdGUgb3V0cHV0CisgIEFzc2VydChlcnIgaW4gcC5vdXRwdXQpCisKKworY2xhc3MgR1Rlc3RQ
YXJhbVRlc3RJbnZhbGlkTmFtZTJUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorCisg
IGRlZiB0ZXN0RXhpdENvZGVBbmRPdXRwdXQoc2VsZik6CisgICAgVGVzdEV4aXRDb2RlQW5kT3V0
cHV0KENPTU1BTkQpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3Rf
dXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRlc3RfLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0
Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lZjA5MzQ5MGU5ZGEyZjAyZWQyOGEyZDA3MTI0NDVlMjQxN2NiZGEz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0Xy5jYwpAQCAtMCwwICsxLDU1IEBACisv
LyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRp
c3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
Ky8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CitjbGFzcyBEdW1teVRlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGNvbnN0IGNoYXIgKj4ge307CisKK3N0ZDo6c3RyaW5n
IFN0cmluZ1BhcmFtVGVzdFN1ZmZpeCgKKyAgICBjb25zdCB0ZXN0aW5nOjpUZXN0UGFyYW1JbmZv
PGNvbnN0IGNoYXIqPiYgaW5mbykgeworICByZXR1cm4gc3RkOjpzdHJpbmcoaW5mby5wYXJhbSk7
Cit9CisKK1RFU1RfUChEdW1teVRlc3QsIER1bW15KSB7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QKER1cGxpY2F0ZVRlc3ROYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgIER1bW15
VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKCJhIiwgImIi
LCAiYSIsICJjIiksCisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdQYXJhbVRlc3RTdWZm
aXgpOworfSAgLy8gbmFtZXNwYWNlCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p
IHsKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICByZXR1cm4gUlVO
X0FMTF9URVNUUygpOworfQorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3ODlj
YWIyNzA3NDE0YzQ2NDg0OTZkN2I5ZmJhYjRmZTUzMWYwYjcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmNj
CkBAIC0wLDAgKzEsMTEwOSBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
Ly8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
Ky8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisvLworLy8gVGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZi4gVGhpcyBmaWxl
IHZlcmlmaWVzIHRoYXQgdGhlIHBhcmFtZXRlcgorLy8gZ2VuZXJhdG9ycyBvYmplY3RzIHByb2R1
Y2UgY29ycmVjdCBwYXJhbWV0ZXIgc2VxdWVuY2VzIGFuZCB0aGF0CisvLyBHb29nbGUgVGVzdCBy
dW50aW1lIGluc3RhbnRpYXRlcyBjb3JyZWN0IHRlc3RzIGZyb20gdGhvc2Ugc2VxdWVuY2VzLgor
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworIyBpbmNsdWRlIDxhbGdvcml0aG0+CisjIGlu
Y2x1ZGUgPGlvc3RyZWFtPgorIyBpbmNsdWRlIDxsaXN0PgorIyBpbmNsdWRlIDxzc3RyZWFtPgor
IyBpbmNsdWRlIDxzdHJpbmc+CisjIGluY2x1ZGUgPHZlY3Rvcj4KKworIyBpbmNsdWRlICJzcmMv
Z3Rlc3QtaW50ZXJuYWwtaW5sLmgiICAvLyBmb3IgVW5pdFRlc3RPcHRpb25zCisjIGluY2x1ZGUg
InRlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuaCIKKwordXNpbmcgOjpzdGQ6OnZlY3Rv
cjsKK3VzaW5nIDo6c3RkOjpzb3J0OworCit1c2luZyA6OnRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RF
bnZpcm9ubWVudDsKK3VzaW5nIDo6dGVzdGluZzo6Qm9vbDsKK3VzaW5nIDo6dGVzdGluZzo6TWVz
c2FnZTsKK3VzaW5nIDo6dGVzdGluZzo6UmFuZ2U7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3RXaXRo
UGFyYW07Cit1c2luZyA6OnRlc3Rpbmc6OlZhbHVlczsKK3VzaW5nIDo6dGVzdGluZzo6VmFsdWVz
SW47CisKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKK3VzaW5nIDo6dGVzdGluZzo6Q29tYmluZTsK
K3VzaW5nIDo6dGVzdGluZzo6Z2V0OwordXNpbmcgOjp0ZXN0aW5nOjptYWtlX3R1cGxlOwordXNp
bmcgOjp0ZXN0aW5nOjp0dXBsZTsKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCisKK3Vz
aW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yOwordXNpbmcgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOworCisvLyBQcmludHMgYSB2YWx1ZSB0byBhIHN0
cmluZy4KKy8vCisvLyBGSVhNRTogcmVtb3ZlIFByaW50VmFsdWUoKSB3aGVuIHdlIG1vdmUgbWF0
Y2hlcnMgYW5kCisvLyBFWFBFQ1RfVEhBVCgpIGZyb20gR29vZ2xlIE1vY2sgdG8gR29vZ2xlIFRl
c3QuICBBdCB0aGF0IHRpbWUsIHdlCisvLyBjYW4gd3JpdGUgRVhQRUNUX1RIQVQoeCwgRXEoeSkp
IHRvIGNvbXBhcmUgdHdvIHR1cGxlcyB4IGFuZCB5LCBhcworLy8gRVhQRUNUX1RIQVQoKSBhbmQg
dGhlIG1hdGNoZXJzIGtub3cgaG93IHRvIHByaW50IHR1cGxlcy4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKGNvbnN0IFQmIHZhbHVlKSB7CisgIDo6c3Rk
OjpzdHJpbmdzdHJlYW0gc3RyZWFtOworICBzdHJlYW0gPDwgdmFsdWU7CisgIHJldHVybiBzdHJl
YW0uc3RyKCk7Cit9CisKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKKworLy8gVGhlc2Ugb3Zlcmxv
YWRzIGFsbG93IHByaW50aW5nIHR1cGxlcyBpbiBvdXIgdGVzdHMuICBXZSBjYW5ub3QKKy8vIGRl
ZmluZSBhbiBvcGVyYXRvcjw8IGZvciB0dXBsZXMsIGFzIHRoYXQgZGVmaW5pdGlvbiBuZWVkcyB0
byBiZSBpbgorLy8gdGhlIHN0ZCBuYW1lc3BhY2UgaW4gb3JkZXIgdG8gYmUgcGlja2VkIHVwIGJ5
IEdvb2dsZSBUZXN0IHZpYQorLy8gQXJndW1lbnQtRGVwZW5kZW50IExvb2t1cCwgeWV0IGRlZmlu
aW5nIGFueXRoaW5nIGluIHRoZSBzdGQKKy8vIG5hbWVzcGFjZSBpbiBub24tU1RMIGNvZGUgaXMg
dW5kZWZpbmVkIGJlaGF2aW9yLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
PgorOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKGNvbnN0IHR1cGxlPFQxLCBUMj4mIHZhbHVlKSB7
CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOworICBzdHJlYW0gPDwgIigiIDw8IGdldDww
Pih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8MT4odmFsdWUpIDw8ICIpIjsKKyAgcmV0dXJuIHN0cmVh
bS5zdHIoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5h
bWUgVDM+Cis6OnN0ZDo6c3RyaW5nIFByaW50VmFsdWUoY29uc3QgdHVwbGU8VDEsIFQyLCBUMz4m
IHZhbHVlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOworICBzdHJlYW0gPDwgIigi
IDw8IGdldDwwPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8MT4odmFsdWUpCisgICAgICAgICA8PCAi
LCAiPDwgZ2V0PDI+KHZhbHVlKSA8PCAiKSI7CisgIHJldHVybiBzdHJlYW0uc3RyKCk7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0
eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMD4KKzo6c3RkOjpzdHJpbmcgUHJp
bnRWYWx1ZSgKKyAgICBjb25zdCB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTA+JiB2YWx1ZSkgeworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgc3Ry
ZWFtIDw8ICIoIiA8PCBnZXQ8MD4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDE+KHZhbHVlKQorICAg
ICAgICAgPDwgIiwgIjw8IGdldDwyPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8Mz4odmFsdWUpCisg
ICAgICAgICA8PCAiLCAiPDwgZ2V0PDQ+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDw1Pih2YWx1ZSkK
KyAgICAgICAgIDw8ICIsICI8PCBnZXQ8Nj4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDc+KHZhbHVl
KQorICAgICAgICAgPDwgIiwgIjw8IGdldDw4Pih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8OT4odmFs
dWUpIDw8ICIpIjsKKyAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKK30KKworIyBlbmRpZiAgLy8gR1RF
U1RfSEFTX0NPTUJJTkUKKworLy8gVmVyaWZpZXMgdGhhdCBhIHNlcXVlbmNlIGdlbmVyYXRlZCBi
eSB0aGUgZ2VuZXJhdG9yIGFuZCBhY2Nlc3NlZAorLy8gdmlhIHRoZSBpdGVyYXRvciBvYmplY3Qg
bWF0Y2hlcyB0aGUgZXhwZWN0ZWQgb25lIHVzaW5nIEdvb2dsZSBUZXN0CisvLyBhc3NlcnRpb25z
LgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgordm9pZCBWZXJpZnlHZW5lcmF0b3Io
Y29uc3QgUGFyYW1HZW5lcmF0b3I8VD4mIGdlbmVyYXRvciwKKyAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFQgKCZleHBlY3RlZF92YWx1ZXMpW05dKSB7CisgIHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFQ+OjppdGVyYXRvciBpdCA9IGdlbmVyYXRvci5iZWdpbigpOworICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IE47ICsraSkgeworICAgIEFTU0VSVF9GQUxTRShpdCA9PSBnZW5lcmF0b3IuZW5k
KCkpCisgICAgICAgIDw8ICJBdCBlbGVtZW50ICIgPDwgaSA8PCAiIHdoZW4gYWNjZXNzaW5nIHZp
YSBhbiBpdGVyYXRvciAiCisgICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhlIGNvcHkgY29uc3Ry
dWN0b3IuXG4iOworICAgIC8vIFdlIGNhbm5vdCB1c2UgRVhQRUNUX0VRKCkgaGVyZSBhcyB0aGUg
dmFsdWVzIG1heSBiZSB0dXBsZXMsCisgICAgLy8gd2hpY2ggZG9uJ3Qgc3VwcG9ydCA8PC4KKyAg
ICBFWFBFQ1RfVFJVRShleHBlY3RlZF92YWx1ZXNbaV0gPT0gKml0KQorICAgICAgICA8PCAid2hl
cmUgaSBpcyAiIDw8IGkKKyAgICAgICAgPDwgIiwgZXhwZWN0ZWRfdmFsdWVzW2ldIGlzICIgPDwg
UHJpbnRWYWx1ZShleHBlY3RlZF92YWx1ZXNbaV0pCisgICAgICAgIDw8ICIsICppdCBpcyAiIDw8
IFByaW50VmFsdWUoKml0KQorICAgICAgICA8PCAiLCBhbmQgJ2l0JyBpcyBhbiBpdGVyYXRvciBj
cmVhdGVkIHdpdGggdGhlIGNvcHkgY29uc3RydWN0b3IuXG4iOworICAgICsraXQ7CisgIH0KKyAg
RVhQRUNUX1RSVUUoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKQorICAgICAgICA8PCAiQXQgdGhlIHBy
ZXN1bWVkIGVuZCBvZiBzZXF1ZW5jZSB3aGVuIGFjY2Vzc2luZyB2aWEgYW4gaXRlcmF0b3IgIgor
ICAgICAgICA8PCAiY3JlYXRlZCB3aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9yLlxuIjsKKworICAv
LyBUZXN0IHRoZSBpdGVyYXRvciBhc3NpZ25tZW50LiBUaGUgZm9sbG93aW5nIGxpbmVzIHZlcmlm
eSB0aGF0CisgIC8vIHRoZSBzZXF1ZW5jZSBhY2Nlc3NlZCB2aWEgYW4gaXRlcmF0b3IgaW5pdGlh
bGl6ZWQgdmlhIHRoZQorICAvLyBhc3NpZ25tZW50IG9wZXJhdG9yIChhcyBvcHBvc2VkIHRvIGEg
Y29weSBjb25zdHJ1Y3RvcikgbWF0Y2hlcworICAvLyBqdXN0IHRoZSBzYW1lLgorICBpdCA9IGdl
bmVyYXRvci5iZWdpbigpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IE47ICsraSkgeworICAg
IEFTU0VSVF9GQUxTRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpCisgICAgICAgIDw8ICJBdCBlbGVt
ZW50ICIgPDwgaSA8PCAiIHdoZW4gYWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRvciAiCisgICAgICAg
IDw8ICJjcmVhdGVkIHdpdGggdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuXG4iOworICAgIEVYUEVD
VF9UUlVFKGV4cGVjdGVkX3ZhbHVlc1tpXSA9PSAqaXQpCisgICAgICAgIDw8ICJ3aGVyZSBpIGlz
ICIgPDwgaQorICAgICAgICA8PCAiLCBleHBlY3RlZF92YWx1ZXNbaV0gaXMgIiA8PCBQcmludFZh
bHVlKGV4cGVjdGVkX3ZhbHVlc1tpXSkKKyAgICAgICAgPDwgIiwgKml0IGlzICIgPDwgUHJpbnRW
YWx1ZSgqaXQpCisgICAgICAgIDw8ICIsIGFuZCAnaXQnIGlzIGFuIGl0ZXJhdG9yIGNyZWF0ZWQg
d2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rvci5cbiI7CisgICAgKytpdDsKKyAgfQorICBFWFBFQ1Rf
VFJVRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpCisgICAgICAgIDw8ICJBdCB0aGUgcHJlc3VtZWQg
ZW5kIG9mIHNlcXVlbmNlIHdoZW4gYWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRvciAiCisgICAgICAg
IDw8ICJjcmVhdGVkIHdpdGggdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuXG4iOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShjb25zdCBQYXJh
bUdlbmVyYXRvcjxUPiYgZ2VuZXJhdG9yKSB7CisgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ+
OjppdGVyYXRvciBpdCA9IGdlbmVyYXRvci5iZWdpbigpOworICBFWFBFQ1RfVFJVRShpdCA9PSBn
ZW5lcmF0b3IuZW5kKCkpOworCisgIGl0ID0gZ2VuZXJhdG9yLmJlZ2luKCk7CisgIEVYUEVDVF9U
UlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSk7Cit9CisKKy8vIEdlbmVyYXRvciB0ZXN0cy4gVGhl
eSB0ZXN0IHRoYXQgZWFjaCBvZiB0aGUgcHJvdmlkZWQgZ2VuZXJhdG9yIGZ1bmN0aW9ucworLy8g
Z2VuZXJhdGVzIGFuIGV4cGVjdGVkIHNlcXVlbmNlIG9mIHZhbHVlcy4gVGhlIGdlbmVyYWwgdGVz
dCBwYXR0ZXJuCisvLyBpbnN0YW50aWF0ZXMgYSBnZW5lcmF0b3IgdXNpbmcgb25lIG9mIHRoZSBn
ZW5lcmF0b3IgZnVuY3Rpb25zLAorLy8gY2hlY2tzIHRoZSBzZXF1ZW5jZSBwcm9kdWNlZCBieSB0
aGUgZ2VuZXJhdG9yIHVzaW5nIGl0cyBpdGVyYXRvciBBUEksCisvLyBhbmQgdGhlbiByZXNldHMg
dGhlIGl0ZXJhdG9yIGJhY2sgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VxdWVuY2UKKy8vIGFu
ZCBjaGVja3MgdGhlIHNlcXVlbmNlIGFnYWluLgorCisvLyBUZXN0cyB0aGF0IGl0ZXJhdG9ycyBw
cm9kdWNlZCBieSBnZW5lcmF0b3IgZnVuY3Rpb25zIGNvbmZvcm0gdG8gdGhlCisvLyBGb3J3YXJk
SXRlcmF0b3IgY29uY2VwdC4KK1RFU1QoSXRlcmF0b3JUZXN0LCBQYXJhbUl0ZXJhdG9yQ29uZm9y
bXNUb0ZvcndhcmRJdGVyYXRvckNvbmNlcHQpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50
PiBnZW4gPSBSYW5nZSgwLCAxMCk7CisgIFBhcmFtR2VuZXJhdG9yPGludD46Oml0ZXJhdG9yIGl0
ID0gZ2VuLmJlZ2luKCk7CisKKyAgLy8gVmVyaWZpZXMgdGhhdCBpdGVyYXRvciBpbml0aWFsaXph
dGlvbiB3b3JrcyBhcyBleHBlY3RlZC4KKyAgUGFyYW1HZW5lcmF0b3I8aW50Pjo6aXRlcmF0b3Ig
aXQyID0gaXQ7CisgIEVYUEVDVF9UUlVFKCppdCA9PSAqaXQyKSA8PCAiSW5pdGlhbGl6ZWQgaXRl
cmF0b3JzIG11c3QgcG9pbnQgdG8gdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICJlbGVtZW50IHNhbWUgYXMgaXRzIHNvdXJjZSBwb2ludHMgdG8iOworCisgIC8vIFZlcmlmaWVz
IHRoYXQgaXRlcmF0b3IgYXNzaWdubWVudCB3b3JrcyBhcyBleHBlY3RlZC4KKyAgKytpdDsKKyAg
RVhQRUNUX0ZBTFNFKCppdCA9PSAqaXQyKTsKKyAgaXQyID0gaXQ7CisgIEVYUEVDVF9UUlVFKCpp
dCA9PSAqaXQyKSA8PCAiQXNzaWduZWQgaXRlcmF0b3JzIG11c3QgcG9pbnQgdG8gdGhlICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJlbGVtZW50IHNhbWUgYXMgaXRzIHNvdXJjZSBw
b2ludHMgdG8iOworCisgIC8vIFZlcmlmaWVzIHRoYXQgcHJlZml4IG9wZXJhdG9yKysoKSByZXR1
cm5zICp0aGlzLgorICBFWFBFQ1RfRVEoJml0LCAmKCsraXQpKSA8PCAiUmVzdWx0IG9mIHRoZSBw
cmVmaXggb3BlcmF0b3IrKyBtdXN0IGJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
InJlZmVyIHRvIHRoZSBvcmlnaW5hbCBvYmplY3QiOworCisgIC8vIFZlcmlmaWVzIHRoYXQgdGhl
IHJlc3VsdCBvZiB0aGUgcG9zdGZpeCBvcGVyYXRvcisrIHBvaW50cyB0byB0aGUgdmFsdWUKKyAg
Ly8gcG9pbnRlZCB0byBieSB0aGUgb3JpZ2luYWwgaXRlcmF0b3IuCisgIGludCBvcmlnaW5hbF92
YWx1ZSA9ICppdDsgIC8vIEhhdmUgdG8gY29tcHV0ZSBpdCBvdXRzaWRlIG9mIG1hY3JvIGNhbGwg
dG8gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5hZmZlY3RlZCBieSB0aGUg
cGFyYW1ldGVyIGV2YWx1YXRpb24gb3JkZXIuCisgIEVYUEVDVF9FUShvcmlnaW5hbF92YWx1ZSwg
KihpdCsrKSk7CisKKyAgLy8gVmVyaWZpZXMgdGhhdCBwcmVmaXggYW5kIHBvc3RmaXggb3BlcmF0
b3IrKygpIGFkdmFuY2UgYW4gaXRlcmF0b3IKKyAgLy8gYWxsIHRoZSBzYW1lLgorICBpdDIgPSBp
dDsKKyAgKytpdDsKKyAgKytpdDI7CisgIEVYUEVDVF9UUlVFKCppdCA9PSAqaXQyKTsKK30KKwor
Ly8gVGVzdHMgdGhhdCBSYW5nZSgpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCitU
RVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VXaXRoRGVmYXVsdFN0ZXApIHsKKyAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAzKTsKKyAgY29uc3QgaW50IGV4cGVjdGVkX3Zh
bHVlc1tdID0gezAsIDEsIDJ9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1
ZXMpOworfQorCisvLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgUmFuZ2UoKSBnZW5lcmF0ZXMgdGhl
IHNpbmdsZSBlbGVtZW50IHNlcXVlbmNlCisvLyBhcyBleHBlY3RlZCB3aGVuIHByb3ZpZGVkIHdp
dGggcmFuZ2UgbGltaXRzIHRoYXQgYXJlIGVxdWFsLgorVEVTVChSYW5nZVRlc3QsIEludFJhbmdl
U2luZ2xlVmFsdWUpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgw
LCAxKTsKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezB9OworICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBFZGdlIGNhc2UuIFRlc3RzIHRo
YXQgUmFuZ2UoKSB3aXRoIGdlbmVyYXRlcyBlbXB0eSBzZXF1ZW5jZSB3aGVuCisvLyBzdXBwbGll
ZCB3aXRoIGFuIGVtcHR5IHJhbmdlLgorVEVTVChSYW5nZVRlc3QsIEludFJhbmdlRW1wdHkpIHsK
KyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAwKTsKKyAgVmVyaWZ5
R2VuZXJhdG9ySXNFbXB0eShnZW4pOworfQorCisvLyBUZXN0cyB0aGF0IFJhbmdlKCkgd2l0aCBj
dXN0b20gc3RlcCAoZ3JlYXRlciB0aGVuIG9uZSkgZ2VuZXJhdGVzCisvLyB0aGUgZXhwZWN0ZWQg
c2VxdWVuY2UuCitURVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VXaXRoQ3VzdG9tU3RlcCkgeworICBj
b25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDksIDMpOworICBjb25zdCBp
bnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MCwgMywgNn07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4s
IGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUmFuZ2UoKSB3aXRoIGN1c3Rv
bSBzdGVwIChncmVhdGVyIHRoZW4gb25lKSBnZW5lcmF0ZXMKKy8vIHRoZSBleHBlY3RlZCBzZXF1
ZW5jZSB3aGVuIHRoZSBsYXN0IGVsZW1lbnQgZG9lcyBub3QgZmFsbCBvbiB0aGUKKy8vIHVwcGVy
IHJhbmdlIGxpbWl0LiBTZXF1ZW5jZXMgZ2VuZXJhdGVkIGJ5IFJhbmdlKCkgbXVzdCBub3QgaGF2
ZQorLy8gZWxlbWVudHMgYmV5b25kIHRoZSByYW5nZSBsaW1pdHMuCitURVNUKFJhbmdlVGVzdCwg
SW50UmFuZ2VXaXRoQ3VzdG9tU3RlcE92ZXJVcHBlckJvdW5kKSB7CisgIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgNCwgMyk7CisgIGNvbnN0IGludCBleHBlY3RlZF92
YWx1ZXNbXSA9IHswLCAzfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVz
KTsKK30KKworLy8gVmVyaWZpZXMgdGhhdCBSYW5nZSB3b3JrcyB3aXRoIHVzZXItZGVmaW5lZCB0
eXBlcyB0aGF0IGRlZmluZQorLy8gY29weSBjb25zdHJ1Y3Rvciwgb3BlcmF0b3I9KCksIG9wZXJh
dG9yKygpLCBhbmQgb3BlcmF0b3I8KCkuCitjbGFzcyBEb2dBZGRlciB7CisgcHVibGljOgorICBl
eHBsaWNpdCBEb2dBZGRlcihjb25zdCBjaGFyKiBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7
fQorICBEb2dBZGRlcihjb25zdCBEb2dBZGRlciYgb3RoZXIpIDogdmFsdWVfKG90aGVyLnZhbHVl
Xy5jX3N0cigpKSB7fQorCisgIERvZ0FkZGVyIG9wZXJhdG9yPShjb25zdCBEb2dBZGRlciYgb3Ro
ZXIpIHsKKyAgICBpZiAodGhpcyAhPSAmb3RoZXIpCisgICAgICB2YWx1ZV8gPSBvdGhlci52YWx1
ZV87CisgICAgcmV0dXJuICp0aGlzOworICB9CisgIERvZ0FkZGVyIG9wZXJhdG9yKyhjb25zdCBE
b2dBZGRlciYgb3RoZXIpIGNvbnN0IHsKKyAgICBNZXNzYWdlIG1zZzsKKyAgICBtc2cgPDwgdmFs
dWVfLmNfc3RyKCkgPDwgb3RoZXIudmFsdWVfLmNfc3RyKCk7CisgICAgcmV0dXJuIERvZ0FkZGVy
KG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKTsKKyAgfQorICBib29sIG9wZXJhdG9yPChjb25zdCBE
b2dBZGRlciYgb3RoZXIpIGNvbnN0IHsKKyAgICByZXR1cm4gdmFsdWVfIDwgb3RoZXIudmFsdWVf
OworICB9CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVl
XzsgfQorCisgcHJpdmF0ZToKKyAgc3RkOjpzdHJpbmcgdmFsdWVfOworfTsKKworVEVTVChSYW5n
ZVRlc3QsIFdvcmtzV2l0aEFDdXN0b21UeXBlKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPERv
Z0FkZGVyPiBnZW4gPQorICAgICAgUmFuZ2UoRG9nQWRkZXIoImNhdCIpLCBEb2dBZGRlcigiY2F0
ZG9nZG9nIiksIERvZ0FkZGVyKCJkb2ciKSk7CisgIFBhcmFtR2VuZXJhdG9yPERvZ0FkZGVyPjo6
aXRlcmF0b3IgaXQgPSBnZW4uYmVnaW4oKTsKKworICBBU1NFUlRfRkFMU0UoaXQgPT0gZ2VuLmVu
ZCgpKTsKKyAgRVhQRUNUX1NUUkVRKCJjYXQiLCBpdC0+dmFsdWUoKS5jX3N0cigpKTsKKworICBB
U1NFUlRfRkFMU0UoKytpdCA9PSBnZW4uZW5kKCkpOworICBFWFBFQ1RfU1RSRVEoImNhdGRvZyIs
IGl0LT52YWx1ZSgpLmNfc3RyKCkpOworCisgIEVYUEVDVF9UUlVFKCsraXQgPT0gZ2VuLmVuZCgp
KTsKK30KKworY2xhc3MgSW50V3JhcHBlciB7CisgcHVibGljOgorICBleHBsaWNpdCBJbnRXcmFw
cGVyKGludCBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7fQorICBJbnRXcmFwcGVyKGNvbnN0
IEludFdyYXBwZXImIG90aGVyKSA6IHZhbHVlXyhvdGhlci52YWx1ZV8pIHt9CisKKyAgSW50V3Jh
cHBlciBvcGVyYXRvcj0oY29uc3QgSW50V3JhcHBlciYgb3RoZXIpIHsKKyAgICB2YWx1ZV8gPSBv
dGhlci52YWx1ZV87CisgICAgcmV0dXJuICp0aGlzOworICB9CisgIC8vIG9wZXJhdG9yKygpIGFk
ZHMgYSBkaWZmZXJlbnQgdHlwZS4KKyAgSW50V3JhcHBlciBvcGVyYXRvcisoaW50IG90aGVyKSBj
b25zdCB7IHJldHVybiBJbnRXcmFwcGVyKHZhbHVlXyArIG90aGVyKTsgfQorICBib29sIG9wZXJh
dG9yPChjb25zdCBJbnRXcmFwcGVyJiBvdGhlcikgY29uc3QgeworICAgIHJldHVybiB2YWx1ZV8g
PCBvdGhlci52YWx1ZV87CisgIH0KKyAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVf
OyB9CisKKyBwcml2YXRlOgorICBpbnQgdmFsdWVfOworfTsKKworVEVTVChSYW5nZVRlc3QsIFdv
cmtzV2l0aEFDdXN0b21UeXBlV2l0aERpZmZlcmVudEluY3JlbWVudFR5cGUpIHsKKyAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8SW50V3JhcHBlcj4gZ2VuID0gUmFuZ2UoSW50V3JhcHBlcigwKSwgSW50
V3JhcHBlcigyKSk7CisgIFBhcmFtR2VuZXJhdG9yPEludFdyYXBwZXI+OjppdGVyYXRvciBpdCA9
IGdlbi5iZWdpbigpOworCisgIEFTU0VSVF9GQUxTRShpdCA9PSBnZW4uZW5kKCkpOworICBFWFBF
Q1RfRVEoMCwgaXQtPnZhbHVlKCkpOworCisgIEFTU0VSVF9GQUxTRSgrK2l0ID09IGdlbi5lbmQo
KSk7CisgIEVYUEVDVF9FUSgxLCBpdC0+dmFsdWUoKSk7CisKKyAgRVhQRUNUX1RSVUUoKytpdCA9
PSBnZW4uZW5kKCkpOworfQorCisvLyBUZXN0cyB0aGF0IFZhbHVlc0luKCkgd2l0aCBhbiBhcnJh
eSBwYXJhbWV0ZXIgZ2VuZXJhdGVzCisvLyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCitURVNUKFZh
bHVlc0luVGVzdCwgVmFsdWVzSW5BcnJheSkgeworICBpbnQgYXJyYXlbXSA9IHszLCA1LCA4fTsK
KyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbihhcnJheSk7CisgIFZl
cmlmeUdlbmVyYXRvcihnZW4sIGFycmF5KTsKK30KKworLy8gVGVzdHMgdGhhdCBWYWx1ZXNJbigp
IHdpdGggYSBjb25zdCBhcnJheSBwYXJhbWV0ZXIgZ2VuZXJhdGVzCisvLyB0aGUgZXhwZWN0ZWQg
c2VxdWVuY2UuCitURVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5Db25zdEFycmF5KSB7CisgIGNv
bnN0IGludCBhcnJheVtdID0gezMsIDUsIDh9OworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+
IGdlbiA9IFZhbHVlc0luKGFycmF5KTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgYXJyYXkpOwor
fQorCisvLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSB3aXRoIGFuIGFycmF5IHBh
cmFtZXRlciBjb250YWluaW5nIGEKKy8vIHNpbmdsZSBlbGVtZW50IGdlbmVyYXRlcyB0aGUgc2lu
Z2xlIGVsZW1lbnQgc2VxdWVuY2UuCitURVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5TaW5nbGVF
bGVtZW50QXJyYXkpIHsKKyAgaW50IGFycmF5W10gPSB7NDJ9OworICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKGFycmF5KTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwg
YXJyYXkpOworfQorCisvLyBUZXN0cyB0aGF0IFZhbHVlc0luKCkgZ2VuZXJhdGVzIHRoZSBleHBl
Y3RlZCBzZXF1ZW5jZSBmb3IgYW4gU1RMCisvLyBjb250YWluZXIgKHZlY3RvcikuCitURVNUKFZh
bHVlc0luVGVzdCwgVmFsdWVzSW5WZWN0b3IpIHsKKyAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGlu
dD4gQ29udGFpbmVyVHlwZTsKKyAgQ29udGFpbmVyVHlwZSB2YWx1ZXM7CisgIHZhbHVlcy5wdXNo
X2JhY2soMyk7CisgIHZhbHVlcy5wdXNoX2JhY2soNSk7CisgIHZhbHVlcy5wdXNoX2JhY2soOCk7
CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4odmFsdWVzKTsKKwor
ICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MywgNSwgOH07CisgIFZlcmlmeUdlbmVy
YXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgVmFsdWVzSW4o
KSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgorVEVTVChWYWx1ZXNJblRlc3QsIFZh
bHVlc0luSXRlcmF0b3JSYW5nZSkgeworICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8aW50PiBDb250
YWluZXJUeXBlOworICBDb250YWluZXJUeXBlIHZhbHVlczsKKyAgdmFsdWVzLnB1c2hfYmFjaygz
KTsKKyAgdmFsdWVzLnB1c2hfYmFjayg1KTsKKyAgdmFsdWVzLnB1c2hfYmFjayg4KTsKKyAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbih2YWx1ZXMuYmVnaW4oKSwgdmFs
dWVzLmVuZCgpKTsKKworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MywgNSwgOH07
CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIEVkZ2Ug
Y2FzZS4gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIHByb3ZpZGVkIHdpdGggYW4gaXRlcmF0b3IgcmFu
Z2Ugc3BlY2lmeWluZyBhCisvLyBzaW5nbGUgdmFsdWUgZ2VuZXJhdGVzIGEgc2luZ2xlLWVsZW1l
bnQgc2VxdWVuY2UuCitURVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5TaW5nbGVFbGVtZW50SXRl
cmF0b3JSYW5nZSkgeworICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8aW50PiBDb250YWluZXJUeXBl
OworICBDb250YWluZXJUeXBlIHZhbHVlczsKKyAgdmFsdWVzLnB1c2hfYmFjayg0Mik7CisgIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4odmFsdWVzLmJlZ2luKCksIHZh
bHVlcy5lbmQoKSk7CisKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezQyfTsKKyAg
VmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gRWRnZSBjYXNl
LiBUZXN0cyB0aGF0IFZhbHVlc0luKCkgcHJvdmlkZWQgd2l0aCBhbiBlbXB0eSBpdGVyYXRvciBy
YW5nZQorLy8gZ2VuZXJhdGVzIGFuIGVtcHR5IHNlcXVlbmNlLgorVEVTVChWYWx1ZXNJblRlc3Qs
IFZhbHVlc0luRW1wdHlJdGVyYXRvclJhbmdlKSB7CisgIHR5cGVkZWYgOjpzdGQ6OnZlY3Rvcjxp
bnQ+IENvbnRhaW5lclR5cGU7CisgIENvbnRhaW5lclR5cGUgdmFsdWVzOworICBjb25zdCBQYXJh
bUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5k
KCkpOworCisgIFZlcmlmeUdlbmVyYXRvcklzRW1wdHkoZ2VuKTsKK30KKworLy8gVGVzdHMgdGhh
dCB0aGUgVmFsdWVzKCkgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoVmFs
dWVzVGVzdCwgVmFsdWVzV29ya3MpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4g
PSBWYWx1ZXMoMywgNSwgOCk7CisKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezMs
IDUsIDh9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisv
LyBUZXN0cyB0aGF0IFZhbHVlcygpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2VzIGZy
b20gZWxlbWVudHMgb2YKKy8vIGRpZmZlcmVudCB0eXBlcyBjb252ZXJ0aWJsZSB0byBQYXJhbUdl
bmVyYXRvcidzIHBhcmFtZXRlciB0eXBlLgorVEVTVChWYWx1ZXNUZXN0LCBWYWx1ZXNXb3Jrc0Zv
clZhbHVlc09mQ29tcGF0aWJsZVR5cGVzKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGRvdWJs
ZT4gZ2VuID0gVmFsdWVzKDMsIDUuMGYsIDguMCk7CisKKyAgY29uc3QgZG91YmxlIGV4cGVjdGVk
X3ZhbHVlc1tdID0gezMuMCwgNS4wLCA4LjB9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBl
Y3RlZF92YWx1ZXMpOworfQorCitURVNUKFZhbHVlc1Rlc3QsIFZhbHVlc1dvcmtzRm9yTWF4TGVu
Z3RoTGlzdCkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlcygKKyAg
ICAgIDEwLCAyMCwgMzAsIDQwLCA1MCwgNjAsIDcwLCA4MCwgOTAsIDEwMCwKKyAgICAgIDExMCwg
MTIwLCAxMzAsIDE0MCwgMTUwLCAxNjAsIDE3MCwgMTgwLCAxOTAsIDIwMCwKKyAgICAgIDIxMCwg
MjIwLCAyMzAsIDI0MCwgMjUwLCAyNjAsIDI3MCwgMjgwLCAyOTAsIDMwMCwKKyAgICAgIDMxMCwg
MzIwLCAzMzAsIDM0MCwgMzUwLCAzNjAsIDM3MCwgMzgwLCAzOTAsIDQwMCwKKyAgICAgIDQxMCwg
NDIwLCA0MzAsIDQ0MCwgNDUwLCA0NjAsIDQ3MCwgNDgwLCA0OTAsIDUwMCk7CisKKyAgY29uc3Qg
aW50IGV4cGVjdGVkX3ZhbHVlc1tdID0geworICAgICAgMTAsIDIwLCAzMCwgNDAsIDUwLCA2MCwg
NzAsIDgwLCA5MCwgMTAwLAorICAgICAgMTEwLCAxMjAsIDEzMCwgMTQwLCAxNTAsIDE2MCwgMTcw
LCAxODAsIDE5MCwgMjAwLAorICAgICAgMjEwLCAyMjAsIDIzMCwgMjQwLCAyNTAsIDI2MCwgMjcw
LCAyODAsIDI5MCwgMzAwLAorICAgICAgMzEwLCAzMjAsIDMzMCwgMzQwLCAzNTAsIDM2MCwgMzcw
LCAzODAsIDM5MCwgNDAwLAorICAgICAgNDEwLCA0MjAsIDQzMCwgNDQwLCA0NTAsIDQ2MCwgNDcw
LCA0ODAsIDQ5MCwgNTAwfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVz
KTsKK30KKworLy8gRWRnZSBjYXNlIHRlc3QuIFRlc3RzIHRoYXQgc2luZ2xlLXBhcmFtZXRlciBW
YWx1ZXMoKSBnZW5lcmF0ZXMgdGhlIHNlcXVlbmNlCisvLyB3aXRoIHRoZSBzaW5nbGUgdmFsdWUu
CitURVNUKFZhbHVlc1Rlc3QsIFZhbHVlc1dpdGhTaW5nbGVQYXJhbWV0ZXIpIHsKKyAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXMoNDIpOworCisgIGNvbnN0IGludCBleHBl
Y3RlZF92YWx1ZXNbXSA9IHs0Mn07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3Zh
bHVlcyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQm9vbCgpIGdlbmVyYXRlcyBzZXF1ZW5jZSAoZmFs
c2UsIHRydWUpLgorVEVTVChCb29sVGVzdCwgQm9vbFdvcmtzKSB7CisgIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPGJvb2w+IGdlbiA9IEJvb2woKTsKKworICBjb25zdCBib29sIGV4cGVjdGVkX3ZhbHVl
c1tdID0ge2ZhbHNlLCB0cnVlfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFs
dWVzKTsKK30KKworIyBpZiBHVEVTVF9IQVNfQ09NQklORQorCisvLyBUZXN0cyB0aGF0IENvbWJp
bmUoKSB3aXRoIHR3byBwYXJhbWV0ZXJzIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2Uu
CitURVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFR3b1BhcmFtZXRlcnMpIHsKKyAgY29uc3Qg
Y2hhciogZm9vID0gImZvbyI7CisgIGNvbnN0IGNoYXIqIGJhciA9ICJiYXIiOworICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjx0dXBsZTxjb25zdCBjaGFyKiwgaW50PiA+IGdlbiA9CisgICAgICBDb21i
aW5lKFZhbHVlcyhmb28sIGJhciksIFZhbHVlcygzLCA0KSk7CisKKyAgdHVwbGU8Y29uc3QgY2hh
ciosIGludD4gZXhwZWN0ZWRfdmFsdWVzW10gPSB7CisgICAgbWFrZV90dXBsZShmb28sIDMpLCBt
YWtlX3R1cGxlKGZvbywgNCksCisgICAgbWFrZV90dXBsZShiYXIsIDMpLCBtYWtlX3R1cGxlKGJh
ciwgNCl9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisv
LyBUZXN0cyB0aGF0IENvbWJpbmUoKSB3aXRoIHRocmVlIHBhcmFtZXRlcnMgZ2VuZXJhdGVzIHRo
ZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoVGhyZWVQ
YXJhbWV0ZXJzKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50LCBpbnQ+
ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoMCwgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMywgNCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1
ZXMoNSwgNikpOworICB0dXBsZTxpbnQsIGludCwgaW50PiBleHBlY3RlZF92YWx1ZXNbXSA9IHsK
KyAgICBtYWtlX3R1cGxlKDAsIDMsIDUpLCBtYWtlX3R1cGxlKDAsIDMsIDYpLAorICAgIG1ha2Vf
dHVwbGUoMCwgNCwgNSksIG1ha2VfdHVwbGUoMCwgNCwgNiksCisgICAgbWFrZV90dXBsZSgxLCAz
LCA1KSwgbWFrZV90dXBsZSgxLCAzLCA2KSwKKyAgICBtYWtlX3R1cGxlKDEsIDQsIDUpLCBtYWtl
X3R1cGxlKDEsIDQsIDYpfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVz
KTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgQ29tYmluZSgpIHdpdGggdGhlIGZpcnN0IHBhcmFt
ZXRlciBnZW5lcmF0aW5nIGEgc2luZ2xlIHZhbHVlCisvLyBzZXF1ZW5jZSBnZW5lcmF0ZXMgYSBz
ZXF1ZW5jZSB3aXRoIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZXF1YWwgdG8gdGhlCisvLyBudW1i
ZXIgb2YgZWxlbWVudHMgaW4gdGhlIHNlcXVlbmNlIGdlbmVyYXRlZCBieSB0aGUgc2Vjb25kIHBh
cmFtZXRlci4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoRmlyc3RQYXJhbWV0ZXJTaW5n
bGVWYWx1ZSkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludD4gPiBnZW4g
PSBDb21iaW5lKFZhbHVlcyg0MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDAsIDEpKTsKKworICB0dXBsZTxpbnQsIGludD4g
ZXhwZWN0ZWRfdmFsdWVzW10gPSB7bWFrZV90dXBsZSg0MiwgMCksIG1ha2VfdHVwbGUoNDIsIDEp
fTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gVGVz
dHMgdGhhdCB0aGUgQ29tYmluZSgpIHdpdGggdGhlIHNlY29uZCBwYXJhbWV0ZXIgZ2VuZXJhdGlu
ZyBhIHNpbmdsZSB2YWx1ZQorLy8gc2VxdWVuY2UgZ2VuZXJhdGVzIGEgc2VxdWVuY2Ugd2l0aCB0
aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGVxdWFsIHRvIHRoZQorLy8gbnVtYmVyIG9mIGVsZW1lbnRz
IGluIHRoZSBzZXF1ZW5jZSBnZW5lcmF0ZWQgYnkgdGhlIGZpcnN0IHBhcmFtZXRlci4KK1RFU1Qo
Q29tYmluZVRlc3QsIENvbWJpbmVXaXRoU2Vjb25kUGFyYW1ldGVyU2luZ2xlVmFsdWUpIHsKKyAg
Y29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1
ZXMoMCwgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsdWVzKDQyKSk7CisKKyAgdHVwbGU8aW50LCBpbnQ+IGV4cGVjdGVkX3ZhbHVl
c1tdID0ge21ha2VfdHVwbGUoMCwgNDIpLCBtYWtlX3R1cGxlKDEsIDQyKX07CisgIFZlcmlmeUdl
bmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgd2hlbiB0
aGUgZmlyc3QgcGFyYW1ldGVyIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLAorLy8gQ29tYmlu
ZSgpIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLCB0b28uCitURVNUKENvbWJpbmVUZXN0LCBD
b21iaW5lV2l0aEZpcnN0UGFyYW1ldGVyRW1wdHlSYW5nZSkgeworICBjb25zdCBQYXJhbUdlbmVy
YXRvcjx0dXBsZTxpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFJhbmdlKDAsIDApLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygw
LCAxKSk7CisgIFZlcmlmeUdlbmVyYXRvcklzRW1wdHkoZ2VuKTsKK30KKworLy8gVGVzdHMgdGhh
dCB3aGVuIHRoZSBzZWNvbmQgcGFyYW1ldGVyIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLAor
Ly8gQ29tYmluZSgpIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLCB0b28uCitURVNUKENvbWJp
bmVUZXN0LCBDb21iaW5lV2l0aFNlY29uZFBhcmFtZXRlckVtcHR5UmFuZ2UpIHsKKyAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoMCwg
MSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmFuZ2UoMSwgMSkpOworICBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7Cit9CisKKy8v
IEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBjb21iaW5lIHdvcmtzIHdpdGggdGhlIG1heGltdW0gbnVt
YmVyCisvLyBvZiBwYXJhbWV0ZXJzIHN1cHBvcnRlZCBieSBHb29nbGUgVGVzdCAoY3VycmVudGx5
IDEwKS4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoTWF4TnVtYmVyT2ZQYXJhbWV0ZXJz
KSB7CisgIGNvbnN0IGNoYXIqIGZvbyA9ICJmb28iOworICBjb25zdCBjaGFyKiBiYXIgPSAiYmFy
IjsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8Y29uc3QgY2hhciosIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoZm9vLCBiYXIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygxKSwgVmFsdWVz
KDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcygzKSwgVmFsdWVzKDQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg1KSwgVmFsdWVzKDYpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg3KSwg
VmFsdWVzKDgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbHVlcyg5KSk7CisKKyAgdHVwbGU8Y29uc3QgY2hhciosIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQ+CisgICAgICBleHBlY3RlZF92YWx1ZXNb
XSA9IHttYWtlX3R1cGxlKGZvbywgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYWtlX3R1cGxlKGJhciwgMSwgMiwgMywgNCwgNSwgNiwgNywg
OCwgOSl9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisj
aWYgR1RFU1RfTEFOR19DWFgxMQorCitjbGFzcyBOb25EZWZhdWx0Q29uc3RydWN0QXNzaWduU3Ry
aW5nIHsKKyBwdWJsaWM6CisgIE5vbkRlZmF1bHRDb25zdHJ1Y3RBc3NpZ25TdHJpbmcoY29uc3Qg
c3RkOjpzdHJpbmcmIHMpIDogc3RyXyhzKSB7fQorCisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIo
KSBjb25zdCB7IHJldHVybiBzdHJfOyB9CisKKyBwcml2YXRlOgorICBzdGQ6OnN0cmluZyBzdHJf
OworCisgIC8vIE5vdCBkZWZhdWx0IGNvbnN0cnVjdGlibGUKKyAgTm9uRGVmYXVsdENvbnN0cnVj
dEFzc2lnblN0cmluZygpOworICAvLyBOb3QgYXNzaWduYWJsZQorICB2b2lkIG9wZXJhdG9yPShj
b25zdCBOb25EZWZhdWx0Q29uc3RydWN0QXNzaWduU3RyaW5nJik7Cit9OworCitURVNUKENvbWJp
bmVUZXN0LCBOb25EZWZhdWx0Q29uc3RydWN0QXNzaWduKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPHR1cGxlPGludCwgTm9uRGVmYXVsdENvbnN0cnVjdEFzc2lnblN0cmluZz4gPiBnZW4gPQor
ICAgICAgQ29tYmluZShWYWx1ZXMoMCwgMSksIFZhbHVlcyhOb25EZWZhdWx0Q29uc3RydWN0QXNz
aWduU3RyaW5nKCJBIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbkRl
ZmF1bHRDb25zdHJ1Y3RBc3NpZ25TdHJpbmcoIkIiKSkpOworCisgIFBhcmFtR2VuZXJhdG9yPHR1
cGxlPGludCwgTm9uRGVmYXVsdENvbnN0cnVjdEFzc2lnblN0cmluZz4gPjo6aXRlcmF0b3IgaXQg
PQorICAgICAgZ2VuLmJlZ2luKCk7CisKKyAgRVhQRUNUX0VRKDAsIHN0ZDo6Z2V0PDA+KCppdCkp
OworICBFWFBFQ1RfRVEoIkEiLCBzdGQ6OmdldDwxPigqaXQpLnN0cigpKTsKKyAgKytpdDsKKwor
ICBFWFBFQ1RfRVEoMCwgc3RkOjpnZXQ8MD4oKml0KSk7CisgIEVYUEVDVF9FUSgiQiIsIHN0ZDo6
Z2V0PDE+KCppdCkuc3RyKCkpOworICArK2l0OworCisgIEVYUEVDVF9FUSgxLCBzdGQ6OmdldDww
PigqaXQpKTsKKyAgRVhQRUNUX0VRKCJBIiwgc3RkOjpnZXQ8MT4oKml0KS5zdHIoKSk7CisgICsr
aXQ7CisKKyAgRVhQRUNUX0VRKDEsIHN0ZDo6Z2V0PDA+KCppdCkpOworICBFWFBFQ1RfRVEoIkIi
LCBzdGQ6OmdldDwxPigqaXQpLnN0cigpKTsKKyAgKytpdDsKKworICBFWFBFQ1RfVFJVRShpdCA9
PSBnZW4uZW5kKCkpOworfQorCisjZW5kaWYgICAvLyBHVEVTVF9MQU5HX0NYWDExCisjIGVuZGlm
ICAvLyBHVEVTVF9IQVNfQ09NQklORQorCisvLyBUZXN0cyB0aGF0IGFuIGdlbmVyYXRvciBwcm9k
dWNlcyBjb3JyZWN0IHNlcXVlbmNlIGFmdGVyIGJlaW5nCisvLyBhc3NpZ25lZCBmcm9tIGFub3Ro
ZXIgZ2VuZXJhdG9yLgorVEVTVChQYXJhbUdlbmVyYXRvclRlc3QsIEFzc2lnbm1lbnRXb3Jrcykg
eworICBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlcygxLCAyKTsKKyAgY29uc3QgUGFy
YW1HZW5lcmF0b3I8aW50PiBnZW4yID0gVmFsdWVzKDMsIDQpOworICBnZW4gPSBnZW4yOworCisg
IGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHszLCA0fTsKKyAgVmVyaWZ5R2VuZXJhdG9y
KGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQg
dGhlIHRlc3RzIGFyZSBleHBhbmRlZCBhbmQgcnVuIGFzIHNwZWNpZmllZDoKKy8vIG9uZSB0ZXN0
IHBlciBlbGVtZW50IGZyb20gdGhlIHNlcXVlbmNlIHByb2R1Y2VkIGJ5IHRoZSBnZW5lcmF0b3IK
Ky8vIHNwZWNpZmllZCBpbiBJTlNUQU5USUFURV9URVNUX0NBU0VfUC4gSXQgYWxzbyB2ZXJpZmll
cyB0aGF0IHRoZSB0ZXN0J3MKKy8vIGZpeHR1cmUgY29uc3RydWN0b3IsIFNldFVwKCksIGFuZCBU
ZWFyRG93bigpIGhhdmUgcnVuIGFuZCBoYXZlIGJlZW4KKy8vIHN1cHBsaWVkIHdpdGggdGhlIGNv
cnJlY3QgcGFyYW1ldGVycy4KKworLy8gVGhlIHVzZSBvZiBlbnZpcm9ubWVudCBvYmplY3QgYWxs
b3dzIGRldGVjdGlvbiBvZiB0aGUgY2FzZSB3aGVyZSBubyB0ZXN0CisvLyBjYXNlIGZ1bmN0aW9u
YWxpdHkgaXMgcnVuIGF0IGFsbC4gSW4gdGhpcyBjYXNlIFRlc3RDYXNlVGVhckRvd24gd2lsbCBu
b3QKKy8vIGJlIGFibGUgdG8gZGV0ZWN0IG1pc3NpbmcgdGVzdHMsIG5hdHVyYWxseS4KK3RlbXBs
YXRlIDxpbnQga0V4cGVjdGVkQ2FsbHM+CitjbGFzcyBUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50
IDogcHVibGljIDo6dGVzdGluZzo6RW52aXJvbm1lbnQgeworIHB1YmxpYzoKKyAgc3RhdGljIFRl
c3RHZW5lcmF0aW9uRW52aXJvbm1lbnQqIEluc3RhbmNlKCkgeworICAgIHN0YXRpYyBUZXN0R2Vu
ZXJhdGlvbkVudmlyb25tZW50KiBpbnN0YW5jZSA9IG5ldyBUZXN0R2VuZXJhdGlvbkVudmlyb25t
ZW50OworICAgIHJldHVybiBpbnN0YW5jZTsKKyAgfQorCisgIHZvaWQgRml4dHVyZUNvbnN0cnVj
dG9yRXhlY3V0ZWQoKSB7IGZpeHR1cmVfY29uc3RydWN0b3JfY291bnRfKys7IH0KKyAgdm9pZCBT
ZXRVcEV4ZWN1dGVkKCkgeyBzZXRfdXBfY291bnRfKys7IH0KKyAgdm9pZCBUZWFyRG93bkV4ZWN1
dGVkKCkgeyB0ZWFyX2Rvd25fY291bnRfKys7IH0KKyAgdm9pZCBUZXN0Qm9keUV4ZWN1dGVkKCkg
eyB0ZXN0X2JvZHlfY291bnRfKys7IH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Cisg
ICAgLy8gSWYgYWxsIE11bHRpcGxlVGVzdEdlbmVyYXRpb25UZXN0IHRlc3RzIGhhdmUgYmVlbiBk
ZS1zZWxlY3RlZAorICAgIC8vIGJ5IHRoZSBmaWx0ZXIgZmxhZywgdGhlIGZvbGxvd2luZyBjaGVj
a3MgbWFrZSBubyBzZW5zZS4KKyAgICBib29sIHBlcmZvcm1fY2hlY2sgPSBmYWxzZTsKKworICAg
IGZvciAoaW50IGkgPSAwOyBpIDwga0V4cGVjdGVkQ2FsbHM7ICsraSkgeworICAgICAgTWVzc2Fn
ZSBtc2c7CisgICAgICBtc2cgPDwgIlRlc3RzRXhwYW5kZWRBbmRSdW4vIiA8PCBpOworICAgICAg
aWYgKFVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0Y2hlc1Rlc3QoCisgICAgICAgICAgICAgIlRl
c3RFeHBhbnNpb25Nb2R1bGUvTXVsdGlwbGVUZXN0R2VuZXJhdGlvblRlc3QiLAorICAgICAgICAg
ICAgICBtc2cuR2V0U3RyaW5nKCkuY19zdHIoKSkpIHsKKyAgICAgICAgcGVyZm9ybV9jaGVjayA9
IHRydWU7CisgICAgICB9CisgICAgfQorICAgIGlmIChwZXJmb3JtX2NoZWNrKSB7CisgICAgICBF
WFBFQ1RfRVEoa0V4cGVjdGVkQ2FsbHMsIGZpeHR1cmVfY29uc3RydWN0b3JfY291bnRfKQorICAg
ICAgICAgIDw8ICJGaXh0dXJlIGNvbnN0cnVjdG9yIG9mIFBhcmFtVGVzdEdlbmVyYXRpb25UZXN0
IHRlc3QgY2FzZSAiCisgICAgICAgICAgPDwgImhhcyBub3QgYmVlbiBydW4gYXMgZXhwZWN0ZWQu
IjsKKyAgICAgIEVYUEVDVF9FUShrRXhwZWN0ZWRDYWxscywgc2V0X3VwX2NvdW50XykKKyAgICAg
ICAgICA8PCAiRml4dHVyZSBTZXRVcCBtZXRob2Qgb2YgUGFyYW1UZXN0R2VuZXJhdGlvblRlc3Qg
dGVzdCBjYXNlICIKKyAgICAgICAgICA8PCAiaGFzIG5vdCBiZWVuIHJ1biBhcyBleHBlY3RlZC4i
OworICAgICAgRVhQRUNUX0VRKGtFeHBlY3RlZENhbGxzLCB0ZWFyX2Rvd25fY291bnRfKQorICAg
ICAgICAgIDw8ICJGaXh0dXJlIFRlYXJEb3duIG1ldGhvZCBvZiBQYXJhbVRlc3RHZW5lcmF0aW9u
VGVzdCB0ZXN0IGNhc2UgIgorICAgICAgICAgIDw8ICJoYXMgbm90IGJlZW4gcnVuIGFzIGV4cGVj
dGVkLiI7CisgICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2FsbHMsIHRlc3RfYm9keV9jb3VudF8p
CisgICAgICAgICAgPDwgIlRlc3QgaW4gUGFyYW1UZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNl
ICIKKyAgICAgICAgICA8PCAiaGFzIG5vdCBiZWVuIHJ1biBhcyBleHBlY3RlZC4iOworICAgIH0K
KyAgfQorCisgcHJpdmF0ZToKKyAgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudCgpIDogZml4dHVy
ZV9jb25zdHJ1Y3Rvcl9jb3VudF8oMCksIHNldF91cF9jb3VudF8oMCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlYXJfZG93bl9jb3VudF8oMCksIHRlc3RfYm9keV9jb3VudF8o
MCkge30KKworICBpbnQgZml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3VudF87CisgIGludCBzZXRfdXBf
Y291bnRfOworICBpbnQgdGVhcl9kb3duX2NvdW50XzsKKyAgaW50IHRlc3RfYm9keV9jb3VudF87
CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0R2VuZXJhdGlvbkVudmly
b25tZW50KTsKK307CisKK2NvbnN0IGludCB0ZXN0X2dlbmVyYXRpb25fcGFyYW1zW10gPSB7MzYs
IDQyLCA3Mn07CisKK2NsYXNzIFRlc3RHZW5lcmF0aW9uVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBh
cmFtPGludD4geworIHB1YmxpYzoKKyAgZW51bSB7CisgICAgUEFSQU1FVEVSX0NPVU5UID0KKyAg
ICAgICAgc2l6ZW9mKHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMpL3NpemVvZih0ZXN0X2dlbmVyYXRp
b25fcGFyYW1zWzBdKQorICB9OworCisgIHR5cGVkZWYgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVu
dDxQQVJBTUVURVJfQ09VTlQ+IEVudmlyb25tZW50OworCisgIFRlc3RHZW5lcmF0aW9uVGVzdCgp
IHsKKyAgICBFbnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+Rml4dHVyZUNvbnN0cnVjdG9yRXhlY3V0
ZWQoKTsKKyAgICBjdXJyZW50X3BhcmFtZXRlcl8gPSBHZXRQYXJhbSgpOworICB9CisgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBFbnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+U2V0VXBFeGVj
dXRlZCgpOworICAgIEVYUEVDVF9FUShjdXJyZW50X3BhcmFtZXRlcl8sIEdldFBhcmFtKCkpOwor
ICB9CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBFbnZpcm9ubWVudDo6SW5zdGFu
Y2UoKS0+VGVhckRvd25FeGVjdXRlZCgpOworICAgIEVYUEVDVF9FUShjdXJyZW50X3BhcmFtZXRl
cl8sIEdldFBhcmFtKCkpOworICB9CisKKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsK
KyAgICBib29sIGFsbF90ZXN0c19pbl90ZXN0X2Nhc2Vfc2VsZWN0ZWQgPSB0cnVlOworCisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBQQVJBTUVURVJfQ09VTlQ7ICsraSkgeworICAgICAgTWVzc2Fn
ZSB0ZXN0X25hbWU7CisgICAgICB0ZXN0X25hbWUgPDwgIlRlc3RzRXhwYW5kZWRBbmRSdW4vIiA8
PCBpOworICAgICAgaWYgKCAhVW5pdFRlc3RPcHRpb25zOjpGaWx0ZXJNYXRjaGVzVGVzdCgKKyAg
ICAgICAgICAgICAgICAiVGVzdEV4cGFuc2lvbk1vZHVsZS9NdWx0aXBsZVRlc3RHZW5lcmF0aW9u
VGVzdCIsCisgICAgICAgICAgICAgICAgdGVzdF9uYW1lLkdldFN0cmluZygpKSkgeworICAgICAg
ICBhbGxfdGVzdHNfaW5fdGVzdF9jYXNlX3NlbGVjdGVkID0gZmFsc2U7CisgICAgICB9CisgICAg
fQorICAgIEVYUEVDVF9UUlVFKGFsbF90ZXN0c19pbl90ZXN0X2Nhc2Vfc2VsZWN0ZWQpCisgICAg
ICAgIDw8ICJXaGVuIHJ1bm5pbmcgdGhlIFRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgYWxs
IG9mIGl0cyB0ZXN0c1xuIgorICAgICAgICA8PCAibXVzdCBiZSBzZWxlY3RlZCBieSB0aGUgZmls
dGVyIGZsYWcgZm9yIHRoZSB0ZXN0IGNhc2UgdG8gcGFzcy5cbiIKKyAgICAgICAgPDwgIklmIG5v
dCBhbGwgb2YgdGhlbSBhcmUgZW5hYmxlZCwgd2UgY2FuJ3QgcmVsaWFibHkgY29uY2x1ZGVcbiIK
KyAgICAgICAgPDwgInRoYXQgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIHRlc3RzIGhhdmUgYmVlbiBn
ZW5lcmF0ZWQuIjsKKworICAgIGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5jbGVhcigpOworICB9CisK
KyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICB2ZWN0b3I8aW50PiBleHBl
Y3RlZF92YWx1ZXModGVzdF9nZW5lcmF0aW9uX3BhcmFtcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdF9nZW5lcmF0aW9uX3BhcmFtcyArIFBBUkFNRVRFUl9DT1VOVCk7Cisg
ICAgLy8gVGVzdCBleGVjdXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQgYnkgR29vZ2xlIFRl
c3QsCisgICAgLy8gc28gdGhlIG9yZGVyIG9mIHZhbHVlcyBpbiBjb2xsZWN0ZWRfcGFyYW1ldGVy
c18gY2FuIGJlCisgICAgLy8gZGlmZmVyZW50IGFuZCB3ZSBoYXZlIHRvIHNvcnQgdG8gY29tcGFy
ZS4KKyAgICBzb3J0KGV4cGVjdGVkX3ZhbHVlcy5iZWdpbigpLCBleHBlY3RlZF92YWx1ZXMuZW5k
KCkpOworICAgIHNvcnQoY29sbGVjdGVkX3BhcmFtZXRlcnNfLmJlZ2luKCksIGNvbGxlY3RlZF9w
YXJhbWV0ZXJzXy5lbmQoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShjb2xsZWN0ZWRfcGFyYW1ldGVy
c18gPT0gZXhwZWN0ZWRfdmFsdWVzKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICBpbnQgY3VycmVu
dF9wYXJhbWV0ZXJfOworICBzdGF0aWMgdmVjdG9yPGludD4gY29sbGVjdGVkX3BhcmFtZXRlcnNf
OworCisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0R2Vu
ZXJhdGlvblRlc3QpOworfTsKK3ZlY3RvcjxpbnQ+IFRlc3RHZW5lcmF0aW9uVGVzdDo6Y29sbGVj
dGVkX3BhcmFtZXRlcnNfOworCitURVNUX1AoVGVzdEdlbmVyYXRpb25UZXN0LCBUZXN0c0V4cGFu
ZGVkQW5kUnVuKSB7CisgIEVudmlyb25tZW50OjpJbnN0YW5jZSgpLT5UZXN0Qm9keUV4ZWN1dGVk
KCk7CisgIEVYUEVDVF9FUShjdXJyZW50X3BhcmFtZXRlcl8sIEdldFBhcmFtKCkpOworICBjb2xs
ZWN0ZWRfcGFyYW1ldGVyc18ucHVzaF9iYWNrKEdldFBhcmFtKCkpOworfQorSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoVGVzdEV4cGFuc2lvbk1vZHVsZSwgVGVzdEdlbmVyYXRpb25UZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWVzSW4odGVzdF9nZW5lcmF0aW9uX3BhcmFtcykpOwor
CisvLyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgZWxlbWVudCBzZXF1ZW5jZSAodGhpcmQg
cGFyYW1ldGVyIG9mCisvLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUCkgaXMgZXZhbHVhdGVkIGlu
IEluaXRHb29nbGVUZXN0KCkgYW5kIG5laXRoZXIgYXQKKy8vIHRoZSBjYWxsIHNpdGUgb2YgSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1Agbm9yIGluIFJVTl9BTExfVEVTVFMoKS4gIEZvcgorLy8gdGhh
dCwgd2UgZGVjbGFyZSBwYXJhbV92YWx1ZV8gdG8gYmUgYSBzdGF0aWMgbWVtYmVyIG9mCisvLyBH
ZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCBhbmQgaW5pdGlhbGl6ZSBpdCB0byAwLiAgV2Ugc2V0IGl0
IHRvIDEgaW4KKy8vIG1haW4oKSwganVzdCBiZWZvcmUgaW52b2NhdGlvbiBvZiBJbml0R29vZ2xl
VGVzdCgpLiAgQWZ0ZXIgY2FsbGluZworLy8gSW5pdEdvb2dsZVRlc3QoKSwgd2Ugc2V0IHRoZSB2
YWx1ZSB0byAyLiAgSWYgdGhlIHNlcXVlbmNlIGlzIGV2YWx1YXRlZAorLy8gYmVmb3JlIG9yIGFm
dGVyIEluaXRHb29nbGVUZXN0LCBJTlNUQU5USUFURV9URVNUX0NBU0VfUCB3aWxsIGNyZWF0ZSBh
CisvLyB0ZXN0IHdpdGggcGFyYW1ldGVyIG90aGVyIHRoYW4gMSwgYW5kIHRoZSB0ZXN0IGJvZHkg
d2lsbCBmYWlsIHRoZQorLy8gYXNzZXJ0aW9uLgorY2xhc3MgR2VuZXJhdG9yRXZhbHVhdGlvblRl
c3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyBpbnQg
cGFyYW1fdmFsdWUoKSB7IHJldHVybiBwYXJhbV92YWx1ZV87IH0KKyAgc3RhdGljIHZvaWQgc2V0
X3BhcmFtX3ZhbHVlKGludCBwYXJhbV92YWx1ZSkgeyBwYXJhbV92YWx1ZV8gPSBwYXJhbV92YWx1
ZTsgfQorCisgcHJpdmF0ZToKKyAgc3RhdGljIGludCBwYXJhbV92YWx1ZV87Cit9OworaW50IEdl
bmVyYXRvckV2YWx1YXRpb25UZXN0OjpwYXJhbV92YWx1ZV8gPSAwOworCitURVNUX1AoR2VuZXJh
dG9yRXZhbHVhdGlvblRlc3QsIEdlbmVyYXRvcnNFdmFsdWF0ZWRJbk1haW4pIHsKKyAgRVhQRUNU
X0VRKDEsIEdldFBhcmFtKCkpOworfQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoR2VuRXZhbE1v
ZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEdlbmVyYXRvckV2YWx1YXRpb25UZXN0Ojpw
YXJhbV92YWx1ZSgpKSk7CisKKy8vIFRlc3RzIHRoYXQgZ2VuZXJhdG9ycyBkZWZpbmVkIGluIGEg
ZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXQgYXJlCisvLyBmdW5jdGlvbmFsLiBHZW5lcmF0b3Ig
ZXh0ZXJuX2dlbiBpcyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdDIuY2MuCitleHRl
cm4gUGFyYW1HZW5lcmF0b3I8aW50PiBleHRlcm5fZ2VuOworY2xhc3MgRXh0ZXJuYWxHZW5lcmF0
b3JUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7fTsKK1RFU1RfUChFeHRlcm5hbEdl
bmVyYXRvclRlc3QsIEV4dGVybmFsR2VuZXJhdG9yKSB7CisgIC8vIFNlcXVlbmNlIHByb2R1Y2Vk
IGJ5IGV4dGVybl9nZW4gY29udGFpbnMgb25seSBhIHNpbmdsZSB2YWx1ZQorICAvLyB3aGljaCB3
ZSB2ZXJpZnkgaGVyZS4KKyAgRVhQRUNUX0VRKEdldFBhcmFtKCksIDMzKTsKK30KK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKEV4dGVybmFsR2VuZXJhdG9yTW9kdWxlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgRXh0ZXJuYWxHZW5lcmF0b3JUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ZXh0ZXJuX2dlbik7CisKKy8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBj
YW4gYmUgZGVmaW5lZCBpbiBvbmUgdHJhbnNsYXRpb24KKy8vIHVuaXQgYW5kIGluc3RhbnRpYXRl
ZCBpbiBhbm90aGVyLiBUaGlzIHRlc3Qgd2lsbCBiZSBpbnN0YW50aWF0ZWQgaW4KKy8vIGd0ZXN0
LXBhcmFtLXRlc3RfdGVzdDIuY2MuIEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3QgZml4dHVyZSBj
bGFzcyBpcworLy8gZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaC4KK1RFU1RfUChF
eHRlcm5hbEluc3RhbnRpYXRpb25UZXN0LCBJc011bHRpcGxlT2YzMykgeworICBFWFBFQ1RfRVEo
MCwgR2V0UGFyYW0oKSAlIDMzKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQg
dGVzdCBjYXNlIGNhbiBiZSBpbnN0YW50aWF0ZWQgd2l0aCBtdWx0aXBsZQorLy8gZ2VuZXJhdG9y
cy4KK2NsYXNzIE11bHRpcGxlSW5zdGFudGlhdGlvblRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJh
bTxpbnQ+IHt9OworVEVTVF9QKE11bHRpcGxlSW5zdGFudGlhdGlvblRlc3QsIEFsbG93c011bHRp
cGxlSW5zdGFuY2VzKSB7Cit9CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5jZTEsIE11
bHRpcGxlSW5zdGFudGlhdGlvblRlc3QsIFZhbHVlcygxLCAyKSk7CitJTlNUQU5USUFURV9URVNU
X0NBU0VfUChTZXF1ZW5jZTIsIE11bHRpcGxlSW5zdGFudGlhdGlvblRlc3QsIFJhbmdlKDMsIDUp
KTsKKworLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBpbnN0
YW50aWF0ZWQKKy8vIGluIG11bHRpcGxlIHRyYW5zbGF0aW9uIHVuaXRzLiBUaGlzIHRlc3Qgd2ls
bCBiZSBpbnN0YW50aWF0ZWQKKy8vIGhlcmUgYW5kIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdDIu
Y2MuCisvLyBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGF0aW9uVW5pdHNUZXN0IGZpeHR1
cmUgY2xhc3MKKy8vIGlzIGRlZmluZWQgaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmguCitURVNU
X1AoSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0LCBJc011bHRpcGxl
T2Y0MikgeworICBFWFBFQ1RfRVEoMCwgR2V0UGFyYW0oKSAlIDQyKTsKK30KK0lOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKFNlcXVlbmNlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbnRp
YXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcyg0MiwgNDIqMikpOworCisvLyBUZXN0cyB0aGF0IGVhY2ggaXRlcmF0aW9uIG9m
IHBhcmFtZXRlcml6ZWQgdGVzdCBydW5zIGluIGEgc2VwYXJhdGUgdGVzdAorLy8gb2JqZWN0Lgor
Y2xhc3MgU2VwYXJhdGVJbnN0YW5jZVRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsK
KyBwdWJsaWM6CisgIFNlcGFyYXRlSW5zdGFuY2VUZXN0KCkgOiBjb3VudF8oMCkge30KKworICBz
dGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIEVYUEVDVF9HRShnbG9iYWxfY291
bnRfLCAyKQorICAgICAgICA8PCAiSWYgc29tZSAoYnV0IG5vdCBhbGwpIFNlcGFyYXRlSW5zdGFu
Y2VUZXN0IHRlc3RzIGhhdmUgYmVlbiAiCisgICAgICAgIDw8ICJmaWx0ZXJlZCBvdXQgdGhpcyB0
ZXN0IHdpbGwgZmFpbC4gTWFrZSBzdXJlIHRoYXQgYWxsICIKKyAgICAgICAgPDwgIkdlbmVyYXRv
ckV2YWx1YXRpb25UZXN0IGFyZSBzZWxlY3RlZCBvciBkZS1zZWxlY3RlZCB0b2dldGhlciAiCisg
ICAgICAgIDw8ICJieSB0aGUgdGVzdCBmaWx0ZXIuIjsKKyAgfQorCisgcHJvdGVjdGVkOgorICBp
bnQgY291bnRfOworICBzdGF0aWMgaW50IGdsb2JhbF9jb3VudF87Cit9OworaW50IFNlcGFyYXRl
SW5zdGFuY2VUZXN0OjpnbG9iYWxfY291bnRfID0gMDsKKworVEVTVF9QKFNlcGFyYXRlSW5zdGFu
Y2VUZXN0LCBUZXN0c1J1bkluU2VwYXJhdGVJbnN0YW5jZXMpIHsKKyAgRVhQRUNUX0VRKDAsIGNv
dW50XysrKTsKKyAgZ2xvYmFsX2NvdW50XysrOworfQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ao
Rm91ckVsZW1TZXF1ZW5jZSwgU2VwYXJhdGVJbnN0YW5jZVRlc3QsIFJhbmdlKDEsIDQpKTsKKwor
Ly8gVGVzdHMgdGhhdCBhbGwgaW5zdGFudGlhdGlvbnMgb2YgYSB0ZXN0IGhhdmUgbmFtZWQgYXBw
cm9wcmlhdGVseS4gVGVzdAorLy8gZGVmaW5lZCB3aXRoIFRFU1RfUChUZXN0Q2FzZU5hbWUsIFRl
c3ROYW1lKSBhbmQgaW5zdGFudGlhdGVkIHdpdGgKKy8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KFNlcXVlbmNlTmFtZSwgVGVzdENhc2VOYW1lLCBnZW5lcmF0b3IpIG11c3QgYmUgbmFtZWQKKy8v
IFNlcXVlbmNlTmFtZS9UZXN0Q2FzZU5hbWUuVGVzdE5hbWUvaSwgd2hlcmUgaSBpcyB0aGUgMC1i
YXNlZCBpbmRleCBvZiB0aGUKKy8vIHNlcXVlbmNlIGVsZW1lbnQgdXNlZCB0byBpbnN0YW50aWF0
ZSB0aGUgdGVzdC4KK2NsYXNzIE5hbWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+
IHt9OworCitURVNUX1AoTmFtaW5nVGVzdCwgVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXNBbmRQYXJh
bWV0ZXJzKSB7CisgIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9
CisgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9p
bmZvKCk7CisKKyAgRVhQRUNUX1NUUkVRKCJaZXJvVG9GaXZlU2VxdWVuY2UvTmFtaW5nVGVzdCIs
IHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7CisKKyAgTWVzc2FnZSBpbmRleF9zdHJlYW07
CisgIGluZGV4X3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXNBbmRQYXJhbWV0ZXJz
LyIgPDwgR2V0UGFyYW0oKTsKKyAgRVhQRUNUX1NUUkVRKGluZGV4X3N0cmVhbS5HZXRTdHJpbmco
KS5jX3N0cigpLCB0ZXN0X2luZm8tPm5hbWUoKSk7CisKKyAgRVhQRUNUX0VRKDo6dGVzdGluZzo6
UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgpKSwgdGVzdF9pbmZvLT52YWx1ZV9wYXJhbSgpKTsKK30K
KworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoWmVyb1RvRml2ZVNlcXVlbmNlLCBOYW1pbmdUZXN0
LCBSYW5nZSgwLCA1KSk7CisKKy8vIFRlc3RzIHRoYXQgbWFjcm9zIGluIHRlc3QgbmFtZXMgYXJl
IGV4cGFuZGVkIGNvcnJlY3RseS4KK2NsYXNzIE1hY3JvTmFtaW5nVGVzdCA6IHB1YmxpYyBUZXN0
V2l0aFBhcmFtPGludD4ge307CisKKyNkZWZpbmUgUFJFRklYX1dJVEhfRk9PKHRlc3RfbmFtZSkg
Rm9vIyN0ZXN0X25hbWUKKyNkZWZpbmUgUFJFRklYX1dJVEhfTUFDUk8odGVzdF9uYW1lKSBNYWNy
byMjdGVzdF9uYW1lCisKK1RFU1RfUChQUkVGSVhfV0lUSF9NQUNSTyhOYW1pbmdUZXN0KSwgUFJF
RklYX1dJVEhfRk9PKFNvbWVUZXN0TmFtZSkpIHsKKyAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5m
byogY29uc3QgdGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFu
Y2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKworICBFWFBFQ1RfU1RSRVEoIkZvcnR5VHdvL01h
Y3JvTmFtaW5nVGVzdCIsIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7CisgIEVYUEVDVF9T
VFJFUSgiRm9vU29tZVRlc3ROYW1lIiwgdGVzdF9pbmZvLT5uYW1lKCkpOworfQorCitJTlNUQU5U
SUFURV9URVNUX0NBU0VfUChGb3J0eVR3bywgTWFjcm9OYW1pbmdUZXN0LCBWYWx1ZXMoNDIpKTsK
KworLy8gVGVzdHMgdGhlIHNhbWUgdGhpbmcgZm9yIG5vbi1wYXJhbWV0cml6ZWQgdGVzdHMuCitj
bGFzcyBNYWNyb05hbWluZ1Rlc3ROb25QYXJhbWV0cml6ZWQgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHt9OworCitURVNUX0YoUFJFRklYX1dJVEhfTUFDUk8oTmFtaW5nVGVzdE5vblBhcmFtZXRy
aXplZCksCisgICAgICAgUFJFRklYX1dJVEhfRk9PKFNvbWVUZXN0TmFtZSkpIHsKKyAgY29uc3Qg
Ojp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0aW5nOjpV
bml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKworICBFWFBFQ1Rf
U1RSRVEoIk1hY3JvTmFtaW5nVGVzdE5vblBhcmFtZXRyaXplZCIsIHRlc3RfaW5mby0+dGVzdF9j
YXNlX25hbWUoKSk7CisgIEVYUEVDVF9TVFJFUSgiRm9vU29tZVRlc3ROYW1lIiwgdGVzdF9pbmZv
LT5uYW1lKCkpOworfQorCisvLyBUZXN0cyB0aGF0IHVzZXIgc3VwcGxpZWQgY3VzdG9tIHBhcmFt
ZXRlciBuYW1lcyBhcmUgd29ya2luZyBjb3JyZWN0bHkuCisvLyBSdW5zIHRoZSB0ZXN0IHdpdGgg
YSBidWlsdGluIGhlbHBlciBtZXRob2Qgd2hpY2ggdXNlcyBQcmludFRvU3RyaW5nLAorLy8gYXMg
d2VsbCBhcyBhIGN1c3RvbSBmdW5jdGlvbiBhbmQgY3VzdG9tIGZ1bmN0b3IgdG8gZW5zdXJlIGFs
bCBwb3NzaWJsZQorLy8gdXNlcyB3b3JrIGNvcnJlY3RseS4KK2NsYXNzIEN1c3RvbUZ1bmN0b3JO
YW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08c3RkOjpzdHJpbmc+IHt9OworVEVTVF9Q
KEN1c3RvbUZ1bmN0b3JOYW1pbmdUZXN0LCBDdXN0b21UZXN0TmFtZXMpIHt9CisKK3N0cnVjdCBD
dXN0b21QYXJhbU5hbWVGdW5jdG9yIHsKKyAgc3RkOjpzdHJpbmcgb3BlcmF0b3IoKShjb25zdCA6
OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88c3RkOjpzdHJpbmc+JiBpbmYpIHsKKyAgICByZXR1cm4g
aW5mLnBhcmFtOworICB9Cit9OworCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChDdXN0b21QYXJh
bU5hbWVGdW5jdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRnVuY3Rvck5hbWlu
Z1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoc3RkOjpzdHJpbmcoIkZ1bmN0
b3JOYW1lIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tUGFyYW1OYW1lRnVuY3Rv
cigpKTsKKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQWxsQWxsb3dlZENoYXJhY3RlcnMsCisg
ICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GdW5jdG9yTmFtaW5nVGVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbHVlcygiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjAxMjM0NTY3ODkwXyIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgQ3VzdG9tUGFyYW1OYW1lRnVuY3RvcigpKTsKKworaW5saW5lIHN0
ZDo6c3RyaW5nIEN1c3RvbVBhcmFtTmFtZUZ1bmN0aW9uKAorICAgIGNvbnN0IDo6dGVzdGluZzo6
VGVzdFBhcmFtSW5mbzxzdGQ6OnN0cmluZz4mIGluZikgeworICByZXR1cm4gaW5mLnBhcmFtOwor
fQorCitjbGFzcyBDdXN0b21GdW5jdGlvbk5hbWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJh
bTxzdGQ6OnN0cmluZz4ge307CitURVNUX1AoQ3VzdG9tRnVuY3Rpb25OYW1pbmdUZXN0LCBDdXN0
b21UZXN0TmFtZXMpIHt9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEN1c3RvbVBhcmFtTmFt
ZUZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRnVuY3Rpb25OYW1pbmdU
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKHN0ZDo6c3RyaW5nKCJGdW5jdGlv
bk5hbWUiKSksCisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21QYXJhbU5hbWVGdW5jdGlv
bik7CisKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisKKy8vIFRlc3QgY3VzdG9tIG5hbWluZyB3aXRo
IGEgbGFtYmRhCisKK2NsYXNzIEN1c3RvbUxhbWJkYU5hbWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdp
dGhQYXJhbTxzdGQ6OnN0cmluZz4ge307CitURVNUX1AoQ3VzdG9tTGFtYmRhTmFtaW5nVGVzdCwg
Q3VzdG9tVGVzdE5hbWVzKSB7fQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChDdXN0b21QYXJh
bU5hbWVMYW1iZGEsIEN1c3RvbUxhbWJkYU5hbWluZ1Rlc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICBWYWx1ZXMoc3RkOjpzdHJpbmcoIkxhbWJkYU5hbWUiKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICBbXShjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88c3RkOjpzdHJpbmc+JiBp
bmYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZi5wYXJhbTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0pOworCisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKwor
VEVTVChDdXN0b21OYW1pbmdUZXN0LCBDaGVja05hbWVSZWdpc3RyeSkgeworICA6OnRlc3Rpbmc6
OlVuaXRUZXN0KiB1bml0X3Rlc3QgPSA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgp
OworICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gdGVzdF9uYW1lczsKKyAgZm9yIChpbnQgY2FzZV9u
dW0gPSAwOworICAgICAgIGNhc2VfbnVtIDwgdW5pdF90ZXN0LT50b3RhbF90ZXN0X2Nhc2VfY291
bnQoKTsKKyAgICAgICArK2Nhc2VfbnVtKSB7CisgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0Q2Fz
ZSogdGVzdF9jYXNlID0gdW5pdF90ZXN0LT5HZXRUZXN0Q2FzZShjYXNlX251bSk7CisgICAgZm9y
IChpbnQgdGVzdF9udW0gPSAwOworICAgICAgICAgdGVzdF9udW0gPCB0ZXN0X2Nhc2UtPnRvdGFs
X3Rlc3RfY291bnQoKTsKKyAgICAgICAgICsrdGVzdF9udW0pIHsKKyAgICAgIGNvbnN0IDo6dGVz
dGluZzo6VGVzdEluZm8qIHRlc3RfaW5mbyA9IHRlc3RfY2FzZS0+R2V0VGVzdEluZm8odGVzdF9u
dW0pOworICAgICAgdGVzdF9uYW1lcy5pbnNlcnQoc3RkOjpzdHJpbmcodGVzdF9pbmZvLT5uYW1l
KCkpKTsKKyAgICB9CisgIH0KKyAgRVhQRUNUX0VRKDF1LCB0ZXN0X25hbWVzLmNvdW50KCJDdXN0
b21UZXN0TmFtZXMvRnVuY3Rvck5hbWUiKSk7CisgIEVYUEVDVF9FUSgxdSwgdGVzdF9uYW1lcy5j
b3VudCgiQ3VzdG9tVGVzdE5hbWVzL0Z1bmN0aW9uTmFtZSIpKTsKKyNpZiBHVEVTVF9MQU5HX0NY
WDExCisgIEVYUEVDVF9FUSgxdSwgdGVzdF9uYW1lcy5jb3VudCgiQ3VzdG9tVGVzdE5hbWVzL0xh
bWJkYU5hbWUiKSk7CisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKK30KKworLy8gVGVzdCBh
IG51bWVyaWMgbmFtZSB0byBlbnN1cmUgUHJpbnRUb1N0cmluZ1BhcmFtTmFtZSB3b3JrcyBjb3Jy
ZWN0bHkuCisKK2NsYXNzIEN1c3RvbUludGVnZXJOYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRo
UGFyYW08aW50PiB7fTsKKworVEVTVF9QKEN1c3RvbUludGVnZXJOYW1pbmdUZXN0LCBUZXN0c1Jl
cG9ydENvcnJlY3ROYW1lcykgeworICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0
ZXN0X2luZm8gPQorICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJy
ZW50X3Rlc3RfaW5mbygpOworICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07CisgIHRlc3RfbmFt
ZV9zdHJlYW0gPDwgIlRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzLyIgPDwgR2V0UGFyYW0oKTsKKyAg
RVhQRUNUX1NUUkVRKHRlc3RfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19zdHIoKSwgdGVzdF9p
bmZvLT5uYW1lKCkpOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChQcmludFRvU3RyaW5n
LAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tSW50ZWdlck5hbWluZ1Rlc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICBSYW5nZSgwLCA1KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgpKTsKKworLy8gVGVzdCBhIGN1c3Rv
bSBzdHJ1Y3Qgd2l0aCBQcmludFRvU3RyaW5nLgorCitzdHJ1Y3QgQ3VzdG9tU3RydWN0IHsKKyAg
ZXhwbGljaXQgQ3VzdG9tU3RydWN0KGludCB2YWx1ZSkgOiB4KHZhbHVlKSB7fQorICBpbnQgeDsK
K307CisKK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIHN0cmVhbSwgY29u
c3QgQ3VzdG9tU3RydWN0JiB2YWwpIHsKKyAgc3RyZWFtIDw8IHZhbC54OworICByZXR1cm4gc3Ry
ZWFtOworfQorCitjbGFzcyBDdXN0b21TdHJ1Y3ROYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRo
UGFyYW08Q3VzdG9tU3RydWN0PiB7fTsKKworVEVTVF9QKEN1c3RvbVN0cnVjdE5hbWluZ1Rlc3Qs
IFRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzKSB7CisgIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8q
IGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisgIE1lc3NhZ2UgdGVzdF9uYW1lX3N0cmVhbTsKKyAg
dGVzdF9uYW1lX3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMvIiA8PCBHZXRQYXJh
bSgpOworICBFWFBFQ1RfU1RSRVEodGVzdF9uYW1lX3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0cigp
LCB0ZXN0X2luZm8tPm5hbWUoKSk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFByaW50
VG9TdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21TdHJ1Y3ROYW1pbmdUZXN0
LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEN1c3RvbVN0cnVjdCgwKSwgQ3VzdG9t
U3RydWN0KDEpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6UHJpbnRUb1N0
cmluZ1BhcmFtTmFtZSgpKTsKKworLy8gVGVzdCB0aGF0IHVzaW5nIGEgc3RhdGVmdWwgcGFyYW1l
dGVyIG5hbWluZyBmdW5jdGlvbiB3b3JrcyBhcyBleHBlY3RlZC4KKworc3RydWN0IFN0YXRlZnVs
TmFtaW5nRnVuY3RvciB7CisgIFN0YXRlZnVsTmFtaW5nRnVuY3RvcigpIDogc3VtKDApIHt9Cisg
IHN0ZDo6c3RyaW5nIG9wZXJhdG9yKCkoY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPGlu
dD4mIGluZm8pIHsKKyAgICBpbnQgdmFsdWUgPSBpbmZvLnBhcmFtICsgc3VtOworICAgIHN1bSAr
PSBpbmZvLnBhcmFtOworICAgIHJldHVybiA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcodmFsdWUp
OworICB9CisgIGludCBzdW07Cit9OworCitjbGFzcyBTdGF0ZWZ1bE5hbWluZ1Rlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4geworIHByb3RlY3RlZDoKKyAgU3RhdGVm
dWxOYW1pbmdUZXN0KCkgOiBzdW1fKDApIHt9CisgIGludCBzdW1fOworfTsKKworVEVTVF9QKFN0
YXRlZnVsTmFtaW5nVGVzdCwgVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMpIHsKKyAgY29uc3QgOjp0
ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0aW5nOjpVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKyAgc3VtXyArPSBHZXRQ
YXJhbSgpOworICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07CisgIHRlc3RfbmFtZV9zdHJlYW0g
PDwgIlRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzLyIgPDwgc3VtXzsKKyAgRVhQRUNUX1NUUkVRKHRl
c3RfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19zdHIoKSwgdGVzdF9pbmZvLT5uYW1lKCkpOwor
fQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChTdGF0ZWZ1bE5hbWluZ0Z1bmN0b3IsCisgICAg
ICAgICAgICAgICAgICAgICAgICBTdGF0ZWZ1bE5hbWluZ1Rlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICBSYW5nZSgwLCA1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlZnVsTmFt
aW5nRnVuY3RvcigpKTsKKworLy8gQ2xhc3MgdGhhdCBjYW5ub3QgYmUgc3RyZWFtZWQgaW50byBh
biBvc3RyZWFtLiAgSXQgbmVlZHMgdG8gYmUgY29weWFibGUKKy8vIChhbmQsIGluIGNhc2Ugb2Yg
TVNWQywgYWxzbyBhc3NpZ25hYmxlKSBpbiBvcmRlciB0byBiZSBhIHRlc3QgcGFyYW1ldGVyCisv
LyB0eXBlLiAgSXRzIGRlZmF1bHQgY29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVy
YXRvciBkbyBleGFjdGx5CisvLyB3aGF0IHdlIG5lZWQuCitjbGFzcyBVbnN0cmVhbWFibGUgewor
IHB1YmxpYzoKKyAgZXhwbGljaXQgVW5zdHJlYW1hYmxlKGludCB2YWx1ZSkgOiB2YWx1ZV8odmFs
dWUpIHt9CisKKyBwcml2YXRlOgorICBpbnQgdmFsdWVfOworfTsKKworY2xhc3MgQ29tbWVudFRl
c3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxVbnN0cmVhbWFibGU+IHt9OworCitURVNUX1AoQ29t
bWVudFRlc3QsIFRlc3RzQ29ycmVjdGx5UmVwb3J0VW5zdHJlYW1hYmxlUGFyYW1zKSB7CisgIGNv
bnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGlu
Zzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisKKyAgRVhQ
RUNUX0VRKDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgpKSwgdGVzdF9pbmZvLT52
YWx1ZV9wYXJhbSgpKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSW5zdGFudGlhdGlv
bldpdGhDb21tZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbW1lbnRUZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKFVuc3RyZWFtYWJsZSgxKSkpOworCisvLyBWZXJp
ZnkgdGhhdCB3ZSBjYW4gY3JlYXRlIGEgaGllcmFyY2h5IG9mIHRlc3QgZml4dHVyZXMsIHdoZXJl
IHRoZSBiYXNlCisvLyBjbGFzcyBmaXh0dXJlIGlzIG5vdCBwYXJhbWV0ZXJpemVkIGFuZCB0aGUg
ZGVyaXZlZCBjbGFzcyBpcy4gSW4gdGhpcyBjYXNlCisvLyBQYXJhbWV0ZXJpemVkRGVyaXZlZFRl
c3QgaW5oZXJpdHMgZnJvbSBOb25QYXJhbWV0ZXJpemVkQmFzZVRlc3QuICBXZQorLy8gcGVyZm9y
bSBzaW1wbGUgdGVzdHMgb24gYm90aC4KK2NsYXNzIE5vblBhcmFtZXRlcml6ZWRCYXNlVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHB1YmxpYzoKKyAgTm9uUGFyYW1ldGVyaXplZEJh
c2VUZXN0KCkgOiBuXygxNykgeyB9CisgcHJvdGVjdGVkOgorICBpbnQgbl87Cit9OworCitjbGFz
cyBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3QgOiBwdWJsaWMgTm9uUGFyYW1ldGVyaXplZEJhc2VU
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIDo6dGVzdGluZzo6
V2l0aFBhcmFtSW50ZXJmYWNlPGludD4geworIHByb3RlY3RlZDoKKyAgUGFyYW1ldGVyaXplZERl
cml2ZWRUZXN0KCkgOiBjb3VudF8oMCkgeyB9CisgIGludCBjb3VudF87CisgIHN0YXRpYyBpbnQg
Z2xvYmFsX2NvdW50XzsKK307CisKK2ludCBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3Q6Omdsb2Jh
bF9jb3VudF8gPSAwOworCitURVNUX0YoTm9uUGFyYW1ldGVyaXplZEJhc2VUZXN0LCBGaXh0dXJl
SXNJbml0aWFsaXplZCkgeworICBFWFBFQ1RfRVEoMTcsIG5fKTsKK30KKworVEVTVF9QKFBhcmFt
ZXRlcml6ZWREZXJpdmVkVGVzdCwgU2Vlc1NlcXVlbmNlKSB7CisgIEVYUEVDVF9FUSgxNywgbl8p
OworICBFWFBFQ1RfRVEoMCwgY291bnRfKyspOworICBFWFBFQ1RfRVEoR2V0UGFyYW0oKSwgZ2xv
YmFsX2NvdW50XysrKTsKK30KKworY2xhc3MgUGFyYW1ldGVyaXplZERlYXRoVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7IH07CisKK1RFU1RfRihQYXJhbWV0ZXJp
emVkRGVhdGhUZXN0LCBHZXRQYXJhbURpZXNGcm9tVGVzdEYpIHsKKyAgRVhQRUNUX0RFQVRIX0lG
X1NVUFBPUlRFRChHZXRQYXJhbSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuKiB2
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QgLioiKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoUmFuZ2VaZXJvVG9GaXZlLCBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3QsIFJhbmdlKDAsIDUp
KTsKKworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgLy8gVXNlZCBpbiBU
ZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlLgorICBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQo
VGVzdEdlbmVyYXRpb25UZXN0OjpFbnZpcm9ubWVudDo6SW5zdGFuY2UoKSk7CisgIC8vIFVzZWQg
aW4gR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QgdGVzdCBjYXNlLiBUZXN0cyB0aGF0IHRoZSB1cGRh
dGVkIHZhbHVlCisgIC8vIHdpbGwgYmUgcGlja2VkIHVwIGZvciBpbnN0YW50aWF0aW5nIHRlc3Rz
IGluIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0LgorICBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6
c2V0X3BhcmFtX3ZhbHVlKDEpOworCisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2Ms
IGFyZ3YpOworCisgIC8vIFVzZWQgaW4gR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QgdGVzdCBjYXNl
LiBUZXN0cyB0aGF0IHZhbHVlIHVwZGF0ZWQKKyAgLy8gaGVyZSB3aWxsIE5PVCBiZSB1c2VkIGZv
ciBpbnN0YW50aWF0aW5nIHRlc3RzIGluCisgIC8vIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0Lgor
ICBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6c2V0X3BhcmFtX3ZhbHVlKDIpOworCisgIHJldHVy
biBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjMyYTYx
ZjQ5MjZiYTkyMjUxNTlkYjQ2OTgxMGU0MWNhYzBkMjBjNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuaApA
QCAtMCwwICsxLDUxIEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBt
ZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisvLworLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsg
KEdvb2dsZSBUZXN0KQorLy8KKy8vIFRoaXMgaGVhZGVyIGZpbGUgcHJvdmlkZXMgY2xhc3NlcyBh
bmQgZnVuY3Rpb25zIHVzZWQgaW50ZXJuYWxseQorLy8gZm9yIHRlc3RpbmcgR29vZ2xlIFRlc3Qg
aXRzZWxmLgorCisjaWZuZGVmIEdURVNUX1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9URVNUX0hfCisj
ZGVmaW5lIEdURVNUX1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9URVNUX0hfCisKKyNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgorCisvLyBUZXN0IGZpeHR1cmUgZm9yIHRlc3RpbmcgZGVmaW5pdGlvbiBh
bmQgaW5zdGFudGlhdGlvbiBvZiBhIHRlc3QKKy8vIGluIHNlcGFyYXRlIHRyYW5zbGF0aW9uIHVu
aXRzLgorY2xhc3MgRXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3RXaXRoUGFyYW08aW50PiB7Cit9OworCisvLyBUZXN0IGZpeHR1cmUgZm9yIHRlc3Rpbmcg
aW5zdGFudGlhdGlvbiBvZiBhIHRlc3QgaW4gbXVsdGlwbGUKKy8vIHRyYW5zbGF0aW9uIHVuaXRz
LgorY2xhc3MgSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0CisgICAg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4geworfTsKKworI2VuZGlmICAv
LyBHVEVTVF9URVNUX0dURVNUX1BBUkFNX1RFU1RfVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QyLXRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdDItdGVzdC5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNWJiOTQ1YzJmOGVkMjlmZDkwODU2YjIzZTAzYzAxZTJhODQzMDYwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0
LXBhcmFtLXRlc3QyLXRlc3QuY2MKQEAgLTAsMCArMSw2MSBAQAorLy8gQ29weXJpZ2h0IDIwMDgs
IEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gVGVzdHMgZm9yIEdvb2dsZSBUZXN0
IGl0c2VsZi4gIFRoaXMgdmVyaWZpZXMgdGhhdCB0aGUgYmFzaWMgY29uc3RydWN0cyBvZgorLy8g
R29vZ2xlIFRlc3Qgd29yay4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAi
dGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5oIgorCit1c2luZyA6OnRlc3Rpbmc6OlZh
bHVlczsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yOworCisvLyBU
ZXN0cyB0aGF0IGdlbmVyYXRvcnMgZGVmaW5lZCBpbiBhIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1
bml0CisvLyBhcmUgZnVuY3Rpb25hbC4gVGhlIHRlc3QgdXNpbmcgZXh0ZXJuX2dlbiBpcyBkZWZp
bmVkCisvLyBpbiBnb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYy4KK1BhcmFtR2VuZXJhdG9y
PGludD4gZXh0ZXJuX2dlbiA9IFZhbHVlcygzMyk7CisKKy8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0
ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgdHJhbnNsYXRpb24gdW5pdAor
Ly8gYW5kIGluc3RhbnRpYXRlZCBpbiBhbm90aGVyLiBUaGUgdGVzdCBpcyBkZWZpbmVkIGluCisv
LyBnb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYyBhbmQgRXh0ZXJuYWxJbnN0YW50aWF0aW9u
VGVzdCBmaXh0dXJlIGNsYXNzIGlzCisvLyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVz
dC5oLgorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoTXVsdGlwbGVzT2YzMywKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICBWYWx1ZXMoMzMsIDY2KSk7CisKKy8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVk
IHRlc3QgY2FzZSBjYW4gYmUgaW5zdGFudGlhdGVkCisvLyBpbiBtdWx0aXBsZSB0cmFuc2xhdGlv
biB1bml0cy4gQW5vdGhlciBpbnN0YW50aWF0aW9uIGlzIGRlZmluZWQKKy8vIGluIGdvb2dsZXRl
c3QtcGFyYW0tdGVzdC10ZXN0LmNjIGFuZAorLy8gSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFu
c2xhaW9uVW5pdHNUZXN0IGZpeHR1cmUgaXMgZGVmaW5lZCBpbgorLy8gZ3Rlc3QtcGFyYW0tdGVz
dF90ZXN0LmgKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg0MiozLCA0Mio0LCA0Mio1KSk7CisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wb3J0LXRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcG9ydC10ZXN0
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM5OTMxNmY5NWI2MzdhY2E5MmZiNWExNTQ0ZWM3ZmMyN2MyZWZiMjcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtcG9ydC10ZXN0LmNjCkBAIC0wLDAgKzEsMTMwMCBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdv
b2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisv
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIFRoaXMgZmlsZSB0ZXN0cyB0aGUgaW50ZXJu
YWwgY3Jvc3MtcGxhdGZvcm0gc3VwcG9ydCB1dGlsaXRpZXMuCisjaW5jbHVkZSA8c3RkaW8uaD4K
KworI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKworI2lmIEdURVNUX09T
X01BQworIyBpbmNsdWRlIDx0aW1lLmg+CisjZW5kaWYgIC8vIEdURVNUX09TX01BQworCisjaW5j
bHVkZSA8bGlzdD4KKyNpbmNsdWRlIDx1dGlsaXR5PiAgLy8gRm9yIHN0ZDo6cGFpciBhbmQgc3Rk
OjptYWtlX3BhaXIuCisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50
ZXJuYWwtaW5sLmgiCisKK3VzaW5nIHN0ZDo6bWFrZV9wYWlyOwordXNpbmcgc3RkOjpwYWlyOwor
CituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCitURVNUKElzWERp
Z2l0VGVzdCwgV29ya3NGb3JOYXJyb3dBc2NpaSkgeworICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgn
MCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoJzknKSk7CisgIEVYUEVDVF9UUlVFKElzWERp
Z2l0KCdBJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgnRicpKTsKKyAgRVhQRUNUX1RSVUUo
SXNYRGlnaXQoJ2EnKSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KCdmJykpOworCisgIEVYUEVD
VF9GQUxTRShJc1hEaWdpdCgnLScpKTsKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KCdnJykpOwor
ICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoJ0cnKSk7Cit9CisKK1RFU1QoSXNYRGlnaXRUZXN0LCBS
ZXR1cm5zRmFsc2VGb3JOYXJyb3dOb25Bc2NpaSkgeworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQo
c3RhdGljX2Nhc3Q8Y2hhcj4oJ1x4ODAnKSkpOworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoc3Rh
dGljX2Nhc3Q8Y2hhcj4oJzAnIHwgJ1x4ODAnKSkpOworfQorCitURVNUKElzWERpZ2l0VGVzdCwg
V29ya3NGb3JXaWRlQXNjaWkpIHsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoTCcwJykpOworICBF
WFBFQ1RfVFJVRShJc1hEaWdpdChMJzknKSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnQScp
KTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoTCdGJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdp
dChMJ2EnKSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnZicpKTsKKworICBFWFBFQ1RfRkFM
U0UoSXNYRGlnaXQoTCctJykpOworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoTCdnJykpOworICBF
WFBFQ1RfRkFMU0UoSXNYRGlnaXQoTCdHJykpOworfQorCitURVNUKElzWERpZ2l0VGVzdCwgUmV0
dXJuc0ZhbHNlRm9yV2lkZU5vbkFzY2lpKSB7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdChzdGF0
aWNfY2FzdDx3Y2hhcl90PigweDgwKSkpOworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoc3RhdGlj
X2Nhc3Q8d2NoYXJfdD4oTCcwJyB8IDB4ODApKSk7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdChz
dGF0aWNfY2FzdDx3Y2hhcl90PihMJzAnIHwgMHgxMDApKSk7Cit9CisKK2NsYXNzIEJhc2Ugewor
IHB1YmxpYzoKKyAgLy8gQ29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVyYXRvciBk
byBleGFjdGx5IHdoYXQgd2UgbmVlZCwgc28gd2UKKyAgLy8gdXNlIHRoZW0uCisgIEJhc2UoKSA6
IG1lbWJlcl8oMCkge30KKyAgZXhwbGljaXQgQmFzZShpbnQgbikgOiBtZW1iZXJfKG4pIHt9Cisg
IHZpcnR1YWwgfkJhc2UoKSB7fQorICBpbnQgbWVtYmVyKCkgeyByZXR1cm4gbWVtYmVyXzsgfQor
CisgcHJpdmF0ZToKKyAgaW50IG1lbWJlcl87Cit9OworCitjbGFzcyBEZXJpdmVkIDogcHVibGlj
IEJhc2UgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgRGVyaXZlZChpbnQgbikgOiBCYXNlKG4pIHt9
Cit9OworCitURVNUKEltcGxpY2l0Q2FzdFRlc3QsIENvbnZlcnRzUG9pbnRlcnMpIHsKKyAgRGVy
aXZlZCBkZXJpdmVkKDApOworICBFWFBFQ1RfVFJVRSgmZGVyaXZlZCA9PSA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2UqPigmZGVyaXZlZCkpOworfQorCitURVNUKEltcGxp
Y2l0Q2FzdFRlc3QsIENhblVzZUluaGVyaXRhbmNlKSB7CisgIERlcml2ZWQgZGVyaXZlZCgxKTsK
KyAgQmFzZSBiYXNlID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlPihk
ZXJpdmVkKTsKKyAgRVhQRUNUX0VRKGRlcml2ZWQubWVtYmVyKCksIGJhc2UubWVtYmVyKCkpOwor
fQorCitjbGFzcyBDYXN0YWJsZSB7CisgcHVibGljOgorICBleHBsaWNpdCBDYXN0YWJsZShib29s
KiBjb252ZXJ0ZWQpIDogY29udmVydGVkXyhjb252ZXJ0ZWQpIHt9CisgIG9wZXJhdG9yIEJhc2Uo
KSB7CisgICAgKmNvbnZlcnRlZF8gPSB0cnVlOworICAgIHJldHVybiBCYXNlKCk7CisgIH0KKwor
IHByaXZhdGU6CisgIGJvb2wqIGNvbnZlcnRlZF87Cit9OworCitURVNUKEltcGxpY2l0Q2FzdFRl
c3QsIENhblVzZU5vbkNvbnN0Q2FzdE9wZXJhdG9yKSB7CisgIGJvb2wgY29udmVydGVkID0gZmFs
c2U7CisgIENhc3RhYmxlIGNhc3RhYmxlKCZjb252ZXJ0ZWQpOworICBCYXNlIGJhc2UgPSA6OnRl
c3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+KGNhc3RhYmxlKTsKKyAgRVhQRUNU
X1RSVUUoY29udmVydGVkKTsKK30KKworY2xhc3MgQ29uc3RDYXN0YWJsZSB7CisgcHVibGljOgor
ICBleHBsaWNpdCBDb25zdENhc3RhYmxlKGJvb2wqIGNvbnZlcnRlZCkgOiBjb252ZXJ0ZWRfKGNv
bnZlcnRlZCkge30KKyAgb3BlcmF0b3IgQmFzZSgpIGNvbnN0IHsKKyAgICAqY29udmVydGVkXyA9
IHRydWU7CisgICAgcmV0dXJuIEJhc2UoKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgYm9vbCogY29u
dmVydGVkXzsKK307CisKK1RFU1QoSW1wbGljaXRDYXN0VGVzdCwgQ2FuVXNlQ29uc3RDYXN0T3Bl
cmF0b3JPbkNvbnN0VmFsdWVzKSB7CisgIGJvb2wgY29udmVydGVkID0gZmFsc2U7CisgIGNvbnN0
IENvbnN0Q2FzdGFibGUgY29uc3RfY2FzdGFibGUoJmNvbnZlcnRlZCk7CisgIEJhc2UgYmFzZSA9
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88QmFzZT4oY29uc3RfY2FzdGFibGUp
OworICBFWFBFQ1RfVFJVRShjb252ZXJ0ZWQpOworfQorCitjbGFzcyBDb25zdEFuZE5vbkNvbnN0
Q2FzdGFibGUgeworIHB1YmxpYzoKKyAgQ29uc3RBbmROb25Db25zdENhc3RhYmxlKGJvb2wqIGNv
bnZlcnRlZCwgYm9vbCogY29uc3RfY29udmVydGVkKQorICAgICAgOiBjb252ZXJ0ZWRfKGNvbnZl
cnRlZCksIGNvbnN0X2NvbnZlcnRlZF8oY29uc3RfY29udmVydGVkKSB7fQorICBvcGVyYXRvciBC
YXNlKCkgeworICAgICpjb252ZXJ0ZWRfID0gdHJ1ZTsKKyAgICByZXR1cm4gQmFzZSgpOworICB9
CisgIG9wZXJhdG9yIEJhc2UoKSBjb25zdCB7CisgICAgKmNvbnN0X2NvbnZlcnRlZF8gPSB0cnVl
OworICAgIHJldHVybiBCYXNlKCk7CisgIH0KKworIHByaXZhdGU6CisgIGJvb2wqIGNvbnZlcnRl
ZF87CisgIGJvb2wqIGNvbnN0X2NvbnZlcnRlZF87Cit9OworCitURVNUKEltcGxpY2l0Q2FzdFRl
c3QsIENhblNlbGVjdEJldHdlZW5Db25zdEFuZE5vbkNvbnN0Q2FzckFwcHJvcHJpYXRlbHkpIHsK
KyAgYm9vbCBjb252ZXJ0ZWQgPSBmYWxzZTsKKyAgYm9vbCBjb25zdF9jb252ZXJ0ZWQgPSBmYWxz
ZTsKKyAgQ29uc3RBbmROb25Db25zdENhc3RhYmxlIGNhc3RhYmxlKCZjb252ZXJ0ZWQsICZjb25z
dF9jb252ZXJ0ZWQpOworICBCYXNlIGJhc2UgPSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNp
dENhc3RfPEJhc2U+KGNhc3RhYmxlKTsKKyAgRVhQRUNUX1RSVUUoY29udmVydGVkKTsKKyAgRVhQ
RUNUX0ZBTFNFKGNvbnN0X2NvbnZlcnRlZCk7CisKKyAgY29udmVydGVkID0gZmFsc2U7CisgIGNv
bnN0X2NvbnZlcnRlZCA9IGZhbHNlOworICBjb25zdCBDb25zdEFuZE5vbkNvbnN0Q2FzdGFibGUg
Y29uc3RfY2FzdGFibGUoJmNvbnZlcnRlZCwgJmNvbnN0X2NvbnZlcnRlZCk7CisgIGJhc2UgPSA6
OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+KGNvbnN0X2Nhc3RhYmxlKTsK
KyAgRVhQRUNUX0ZBTFNFKGNvbnZlcnRlZCk7CisgIEVYUEVDVF9UUlVFKGNvbnN0X2NvbnZlcnRl
ZCk7Cit9CisKK2NsYXNzIFRvIHsKKyBwdWJsaWM6CisgIFRvKGJvb2wqIGNvbnZlcnRlZCkgeyAq
Y29udmVydGVkID0gdHJ1ZTsgfSAgLy8gTk9MSU5UCit9OworCitURVNUKEltcGxpY2l0Q2FzdFRl
c3QsIENhblVzZUltcGxpY2l0Q29uc3RydWN0b3IpIHsKKyAgYm9vbCBjb252ZXJ0ZWQgPSBmYWxz
ZTsKKyAgVG8gdG8gPSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPFRvPigmY29u
dmVydGVkKTsKKyAgKHZvaWQpdG87CisgIEVYUEVDVF9UUlVFKGNvbnZlcnRlZCk7Cit9CisKK1RF
U1QoSXRlcmF0b3JUcmFpdHNUZXN0LCBXb3Jrc0ZvclNUTENvbnRhaW5lckl0ZXJhdG9ycykgewor
ICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50LAorICAgICAgSXRlcmF0b3JUcmFpdHM8IDo6c3RkOjp2
ZWN0b3I8aW50Pjo6Y29uc3RfaXRlcmF0b3I+Ojp2YWx1ZV90eXBlPigpOworICBTdGF0aWNBc3Nl
cnRUeXBlRXE8Ym9vbCwKKyAgICAgIEl0ZXJhdG9yVHJhaXRzPCA6OnN0ZDo6bGlzdDxib29sPjo6
aXRlcmF0b3I+Ojp2YWx1ZV90eXBlPigpOworfQorCitURVNUKEl0ZXJhdG9yVHJhaXRzVGVzdCwg
V29ya3NGb3JQb2ludGVyVG9Ob25Db25zdCkgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y2hhciwg
SXRlcmF0b3JUcmFpdHM8Y2hhcio+Ojp2YWx1ZV90eXBlPigpOworICBTdGF0aWNBc3NlcnRUeXBl
RXE8Y29uc3Qgdm9pZCosIEl0ZXJhdG9yVHJhaXRzPGNvbnN0IHZvaWQqKj46OnZhbHVlX3R5cGU+
KCk7Cit9CisKK1RFU1QoSXRlcmF0b3JUcmFpdHNUZXN0LCBXb3Jrc0ZvclBvaW50ZXJUb0NvbnN0
KSB7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxjaGFyLCBJdGVyYXRvclRyYWl0czxjb25zdCBjaGFy
Kj46OnZhbHVlX3R5cGU+KCk7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCB2b2lkKiwKKyAg
ICAgIEl0ZXJhdG9yVHJhaXRzPGNvbnN0IHZvaWQqIGNvbnN0Kj46OnZhbHVlX3R5cGU+KCk7Cit9
CisKKy8vIFRlc3RzIHRoYXQgdGhlIGVsZW1lbnRfdHlwZSB0eXBlZGVmIGlzIGF2YWlsYWJsZSBp
biBzY29wZWRfcHRyIGFuZCByZWZlcnMKKy8vIHRvIHRoZSBwYXJhbWV0ZXIgdHlwZS4KK1RFU1Qo
U2NvcGVkUHRyVGVzdCwgRGVmaW5lc0VsZW1lbnRUeXBlKSB7CisgIFN0YXRpY0Fzc2VydFR5cGVF
cTxpbnQsIDo6dGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI8aW50Pjo6ZWxlbWVudF90eXBl
PigpOworfQorCisvLyBGSVhNRTogSW1wbGVtZW50IFRIRSBSRVNUIG9mIHNjb3BlZF9wdHIgdGVz
dHMuCisKK1RFU1QoR3Rlc3RDaGVja1N5bnRheFRlc3QsIEJlaGF2ZXNMaWtlQVNpbmdsZVN0YXRl
bWVudCkgeworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICBHVEVTVF9DSEVDS18oZmFsc2UpIDw8
ICJUaGlzIHNob3VsZCBuZXZlciBiZSBleGVjdXRlZDsgIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkl0J3MgYSBjb21waWxhdGlvbiB0ZXN0IG9ubHkuIjsKKworICBpZiAoQWx3YXlzVHJ1
ZSgpKQorICAgIEdURVNUX0NIRUNLXyh0cnVlKTsKKyAgZWxzZQorICAgIDsgIC8vIE5PTElOVAor
CisgIGlmIChBbHdheXNGYWxzZSgpKQorICAgIDsgIC8vIE5PTElOVAorICBlbHNlCisgICAgR1RF
U1RfQ0hFQ0tfKHRydWUpIDw8ICIiOworfQorCitURVNUKEd0ZXN0Q2hlY2tTeW50YXhUZXN0LCBX
b3Jrc1dpdGhTd2l0Y2gpIHsKKyAgc3dpdGNoICgwKSB7CisgICAgY2FzZSAxOgorICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdURVNUX0NIRUNLXyh0cnVlKTsKKyAgfQorCisgIHN3
aXRjaCAoMCkKKyAgICBjYXNlIDA6CisgICAgICBHVEVTVF9DSEVDS18odHJ1ZSkgPDwgIkNoZWNr
IGZhaWxlZCBpbiBzd2l0Y2ggY2FzZSI7Cit9CisKKy8vIFZlcmlmaWVzIGJlaGF2aW9yIG9mIEZv
cm1hdEZpbGVMb2NhdGlvbi4KK1RFU1QoRm9ybWF0RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c0Zp
bGVMb2NhdGlvbikgeworICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzU3Vic3RyaW5nLCAiZm9vLmNj
IiwgRm9ybWF0RmlsZUxvY2F0aW9uKCJmb28uY2MiLCA0MikpOworICBFWFBFQ1RfUFJFRF9GT1JN
QVQyKElzU3Vic3RyaW5nLCAiNDIiLCBGb3JtYXRGaWxlTG9jYXRpb24oImZvby5jYyIsIDQyKSk7
Cit9CisKK1RFU1QoRm9ybWF0RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c1Vua25vd25GaWxlKSB7
CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoCisgICAgICBJc1N1YnN0cmluZywgInVua25vd24gZmls
ZSIsIEZvcm1hdEZpbGVMb2NhdGlvbihOVUxMLCA0MikpOworICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KElzU3Vic3RyaW5nLCAiNDIiLCBGb3JtYXRGaWxlTG9jYXRpb24oTlVMTCwgNDIpKTsKK30KKwor
VEVTVChGb3JtYXRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzVWtub3duTGluZSkgeworICBFWFBF
Q1RfRVEoImZvby5jYzoiLCBGb3JtYXRGaWxlTG9jYXRpb24oImZvby5jYyIsIC0xKSk7Cit9CisK
K1RFU1QoRm9ybWF0RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c1Vrbm93bkZpbGVBbmRMaW5lKSB7
CisgIEVYUEVDVF9FUSgidW5rbm93biBmaWxlOiIsIEZvcm1hdEZpbGVMb2NhdGlvbihOVUxMLCAt
MSkpOworfQorCisvLyBWZXJpZmllcyBiZWhhdmlvciBvZiBGb3JtYXRDb21waWxlckluZGVwZW5k
ZW50RmlsZUxvY2F0aW9uLgorVEVTVChGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0
aW9uVGVzdCwgRm9ybWF0c0ZpbGVMb2NhdGlvbikgeworICBFWFBFQ1RfRVEoImZvby5jYzo0MiIs
IEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oImZvby5jYyIsIDQyKSk7Cit9
CisKK1RFU1QoRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvblRlc3QsIEZvcm1h
dHNVa25vd25GaWxlKSB7CisgIEVYUEVDVF9FUSgidW5rbm93biBmaWxlOjQyIiwKKyAgICAgICAg
ICAgIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oTlVMTCwgNDIpKTsKK30K
KworVEVTVChGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0
c1Vrbm93bkxpbmUpIHsKKyAgRVhQRUNUX0VRKCJmb28uY2MiLCBGb3JtYXRDb21waWxlckluZGVw
ZW5kZW50RmlsZUxvY2F0aW9uKCJmb28uY2MiLCAtMSkpOworfQorCitURVNUKEZvcm1hdENvbXBp
bGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzVWtub3duRmlsZUFuZExpbmUp
IHsKKyAgRVhQRUNUX0VRKCJ1bmtub3duIGZpbGUiLCBGb3JtYXRDb21waWxlckluZGVwZW5kZW50
RmlsZUxvY2F0aW9uKE5VTEwsIC0xKSk7Cit9CisKKyNpZiBHVEVTVF9PU19MSU5VWCB8fCBHVEVT
VF9PU19NQUMgfHwgR1RFU1RfT1NfUU5YIHx8IEdURVNUX09TX0ZVQ0hTSUEKK3ZvaWQqIFRocmVh
ZEZ1bmModm9pZCogZGF0YSkgeworICBpbnRlcm5hbDo6TXV0ZXgqIG11dGV4ID0gc3RhdGljX2Nh
c3Q8aW50ZXJuYWw6Ok11dGV4Kj4oZGF0YSk7CisgIG11dGV4LT5Mb2NrKCk7CisgIG11dGV4LT5V
bmxvY2soKTsKKyAgcmV0dXJuIE5VTEw7Cit9CisKK1RFU1QoR2V0VGhyZWFkQ291bnRUZXN0LCBS
ZXR1cm5zQ29ycmVjdFZhbHVlKSB7CisgIGNvbnN0IHNpemVfdCBzdGFydGluZ19jb3VudCA9IEdl
dFRocmVhZENvdW50KCk7CisgIHB0aHJlYWRfdCAgICAgICB0aHJlYWRfaWQ7CisKKyAgaW50ZXJu
YWw6Ok11dGV4IG11dGV4OworICB7CisgICAgaW50ZXJuYWw6Ok11dGV4TG9jayBsb2NrKCZtdXRl
eCk7CisgICAgcHRocmVhZF9hdHRyX3QgIGF0dHI7CisgICAgQVNTRVJUX0VRKDAsIHB0aHJlYWRf
YXR0cl9pbml0KCZhdHRyKSk7CisgICAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXR0cl9zZXRkZXRh
Y2hzdGF0ZSgmYXR0ciwgUFRIUkVBRF9DUkVBVEVfSk9JTkFCTEUpKTsKKworICAgIGNvbnN0IGlu
dCBzdGF0dXMgPSBwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkX2lkLCAmYXR0ciwgJlRocmVhZEZ1bmMs
ICZtdXRleCk7CisgICAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXR0cl9kZXN0cm95KCZhdHRyKSk7
CisgICAgQVNTRVJUX0VRKDAsIHN0YXR1cyk7CisgICAgRVhQRUNUX0VRKHN0YXJ0aW5nX2NvdW50
ICsgMSwgR2V0VGhyZWFkQ291bnQoKSk7CisgIH0KKworICB2b2lkKiBkdW1teTsKKyAgQVNTRVJU
X0VRKDAsIHB0aHJlYWRfam9pbih0aHJlYWRfaWQsICZkdW1teSkpOworCisgIC8vIFRoZSBPUyBt
YXkgbm90IGltbWVkaWF0ZWx5IHJlcG9ydCB0aGUgdXBkYXRlZCB0aHJlYWQgY291bnQgYWZ0ZXIK
KyAgLy8gam9pbmluZyBhIHRocmVhZCwgY2F1c2luZyBmbGFraW5lc3MgaW4gdGhpcyB0ZXN0LiBU
byBjb3VudGVyIHRoYXQsIHdlCisgIC8vIHdhaXQgZm9yIHVwIHRvIC41IHNlY29uZHMgZm9yIHRo
ZSBPUyB0byByZXBvcnQgdGhlIGNvcnJlY3QgdmFsdWUuCisgIGZvciAoaW50IGkgPSAwOyBpIDwg
NTsgKytpKSB7CisgICAgaWYgKEdldFRocmVhZENvdW50KCkgPT0gc3RhcnRpbmdfY291bnQpCisg
ICAgICBicmVhazsKKworICAgIFNsZWVwTWlsbGlzZWNvbmRzKDEwMCk7CisgIH0KKworICBFWFBF
Q1RfRVEoc3RhcnRpbmdfY291bnQsIEdldFRocmVhZENvdW50KCkpOworfQorI2Vsc2UKK1RFU1Qo
R2V0VGhyZWFkQ291bnRUZXN0LCBSZXR1cm5zWmVyb1doZW5VbmFibGVUb0NvdW50VGhyZWFkcykg
eworICBFWFBFQ1RfRVEoMFUsIEdldFRocmVhZENvdW50KCkpOworfQorI2VuZGlmICAvLyBHVEVT
VF9PU19MSU5VWCB8fCBHVEVTVF9PU19NQUMgfHwgR1RFU1RfT1NfUU5YIHx8IEdURVNUX09TX0ZV
Q0hTSUEKKworVEVTVChHdGVzdENoZWNrRGVhdGhUZXN0LCBEaWVzV2l0aENvcnJlY3RPdXRwdXRP
bkZhaWx1cmUpIHsKKyAgY29uc3QgYm9vbCBhX2ZhbHNlX2NvbmRpdGlvbiA9IGZhbHNlOworICBj
b25zdCBjaGFyIHJlZ2V4W10gPQorI2lmZGVmIF9NU0NfVkVSCisgICAgICJnb29nbGV0ZXN0LXBv
cnQtdGVzdFxcLmNjXFwoXFxkK1xcKToiCisjZWxpZiBHVEVTVF9VU0VTX1BPU0lYX1JFCisgICAg
ICJnb29nbGV0ZXN0LXBvcnQtdGVzdFxcLmNjOlswLTldKyIKKyNlbHNlCisgICAgICJnb29nbGV0
ZXN0LXBvcnQtdGVzdFxcLmNjOlxcZCsiCisjZW5kaWYgIC8vIF9NU0NfVkVSCisgICAgICIuKmFf
ZmFsc2VfY29uZGl0aW9uLipFeHRyYSBpbmZvLioiOworCisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQ
T1JURUQoR1RFU1RfQ0hFQ0tfKGFfZmFsc2VfY29uZGl0aW9uKSA8PCAiRXh0cmEgaW5mbyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXgpOworfQorCisjaWYgR1RFU1RfSEFTX0RF
QVRIX1RFU1QKKworVEVTVChHdGVzdENoZWNrRGVhdGhUZXN0LCBMaXZlc1NpbGVudGx5T25TdWNj
ZXNzKSB7CisgIEVYUEVDVF9FWElUKHsKKyAgICAgIEdURVNUX0NIRUNLXyh0cnVlKSA8PCAiRXh0
cmEgaW5mbyI7CisgICAgICA6OnN0ZDo6Y2VyciA8PCAiU3VjY2Vzc1xuIjsKKyAgICAgIGV4aXQo
MCk7IH0sCisgICAgICA6OnRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApLCAiU3VjY2VzcyIpOwor
fQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCisKKy8vIFZlcmlmaWVzIHRoYXQg
R29vZ2xlIFRlc3QgY2hvb3NlIHJlZ3VsYXIgZXhwcmVzc2lvbiBlbmdpbmUgYXBwcm9wcmlhdGUg
dG8KKy8vIHRoZSBwbGF0Zm9ybS4gVGhlIHRlc3Qgd2lsbCBwcm9kdWNlIGNvbXBpbGVyIGVycm9y
cyBpbiBjYXNlIG9mIGZhaWx1cmUuCisvLyBGb3Igc2ltcGxpY2l0eSwgd2Ugb25seSBjb3ZlciB0
aGUgbW9zdCBpbXBvcnRhbnQgcGxhdGZvcm1zIGhlcmUuCitURVNUKFJlZ2V4RW5naW5lU2VsZWN0
aW9uVGVzdCwgU2VsZWN0c0NvcnJlY3RSZWdleEVuZ2luZSkgeworI2lmICFHVEVTVF9VU0VTX1BD
UkUKKyMgaWYgR1RFU1RfSEFTX1BPU0lYX1JFCisKKyAgRVhQRUNUX1RSVUUoR1RFU1RfVVNFU19Q
T1NJWF9SRSk7CisKKyMgZWxzZQorCisgIEVYUEVDVF9UUlVFKEdURVNUX1VTRVNfU0lNUExFX1JF
KTsKKworIyBlbmRpZgorI2VuZGlmICAvLyAhR1RFU1RfVVNFU19QQ1JFCit9CisKKyNpZiBHVEVT
VF9VU0VTX1BPU0lYX1JFCisKKyMgaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFN0cj4KK2NsYXNzIFJFVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307
CisKKy8vIERlZmluZXMgU3RyaW5nVHlwZXMgYXMgdGhlIGxpc3Qgb2YgYWxsIHN0cmluZyB0eXBl
cyB0aGF0IGNsYXNzIFJFCisvLyBzdXBwb3J0cy4KK3R5cGVkZWYgdGVzdGluZzo6VHlwZXM8Cisg
ICAgOjpzdGQ6OnN0cmluZywKKyMgIGlmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisgICAgOjpz
dHJpbmcsCisjICBlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKyAgICBjb25zdCBj
aGFyKj4gU3RyaW5nVHlwZXM7CisKK1RZUEVEX1RFU1RfQ0FTRShSRVRlc3QsIFN0cmluZ1R5cGVz
KTsKKworLy8gVGVzdHMgUkUncyBpbXBsaWNpdCBjb25zdHJ1Y3RvcnMuCitUWVBFRF9URVNUKFJF
VGVzdCwgSW1wbGljaXRDb25zdHJ1Y3RvcldvcmtzKSB7CisgIGNvbnN0IFJFIGVtcHR5KFR5cGVQ
YXJhbSgiIikpOworICBFWFBFQ1RfU1RSRVEoIiIsIGVtcHR5LnBhdHRlcm4oKSk7CisKKyAgY29u
c3QgUkUgc2ltcGxlKFR5cGVQYXJhbSgiaGVsbG8iKSk7CisgIEVYUEVDVF9TVFJFUSgiaGVsbG8i
LCBzaW1wbGUucGF0dGVybigpKTsKKworICBjb25zdCBSRSBub3JtYWwoVHlwZVBhcmFtKCIuKihc
XHcrKSIpKTsKKyAgRVhQRUNUX1NUUkVRKCIuKihcXHcrKSIsIG5vcm1hbC5wYXR0ZXJuKCkpOwor
fQorCisvLyBUZXN0cyB0aGF0IFJFJ3MgY29uc3RydWN0b3JzIHJlamVjdCBpbnZhbGlkIHJlZ3Vs
YXIgZXhwcmVzc2lvbnMuCitUWVBFRF9URVNUKFJFVGVzdCwgUmVqZWN0c0ludmFsaWRSZWdleCkg
eworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAgY29uc3QgUkUgaW52YWxpZChUeXBl
UGFyYW0oIj8iKSk7CisgIH0sICJcIj9cIiBpcyBub3QgYSB2YWxpZCBQT1NJWCBFeHRlbmRlZCBy
ZWd1bGFyIGV4cHJlc3Npb24uIik7Cit9CisKKy8vIFRlc3RzIFJFOjpGdWxsTWF0Y2goKS4KK1RZ
UEVEX1RFU1QoUkVUZXN0LCBGdWxsTWF0Y2hXb3JrcykgeworICBjb25zdCBSRSBlbXB0eShUeXBl
UGFyYW0oIiIpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oIiIpLCBl
bXB0eSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oImEiKSwgZW1w
dHkpKTsKKworICBjb25zdCBSRSByZShUeXBlUGFyYW0oImEuKnoiKSk7CisgIEVYUEVDVF9UUlVF
KFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJheiIpLCByZSkpOworICBFWFBFQ1RfVFJVRShSRTo6
RnVsbE1hdGNoKFR5cGVQYXJhbSgiYXh5eiIpLCByZSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OkZ1
bGxNYXRjaChUeXBlUGFyYW0oImJheiIpLCByZSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxN
YXRjaChUeXBlUGFyYW0oImF6eSIpLCByZSkpOworfQorCisvLyBUZXN0cyBSRTo6UGFydGlhbE1h
dGNoKCkuCitUWVBFRF9URVNUKFJFVGVzdCwgUGFydGlhbE1hdGNoV29ya3MpIHsKKyAgY29uc3Qg
UkUgZW1wdHkoVHlwZVBhcmFtKCIiKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2go
VHlwZVBhcmFtKCIiKSwgZW1wdHkpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChU
eXBlUGFyYW0oImEiKSwgZW1wdHkpKTsKKworICBjb25zdCBSRSByZShUeXBlUGFyYW0oImEuKnoi
KSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCJheiIpLCByZSkp
OworICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiYXh5eiIpLCByZSkp
OworICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiYmF6IiksIHJlKSk7
CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCJhenkiKSwgcmUpKTsK
KyAgRVhQRUNUX0ZBTFNFKFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCJ6emEiKSwgcmUpKTsK
K30KKworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QKKworI2VsaWYgR1RFU1RfVVNF
U19TSU1QTEVfUkUKKworVEVTVChJc0luU2V0VGVzdCwgTnVsQ2hhcklzTm90SW5BbnlTZXQpIHsK
KyAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ1wwJywgIiIpKTsKKyAgRVhQRUNUX0ZBTFNFKElzSW5T
ZXQoJ1wwJywgIlwwIikpOworICBFWFBFQ1RfRkFMU0UoSXNJblNldCgnXDAnLCAiYSIpKTsKK30K
KworVEVTVChJc0luU2V0VGVzdCwgV29ya3NGb3JOb25OdWxDaGFycykgeworICBFWFBFQ1RfRkFM
U0UoSXNJblNldCgnYScsICJBYiIpKTsKKyAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ2MnLCAiIikp
OworCisgIEVYUEVDVF9UUlVFKElzSW5TZXQoJ2InLCAiYmNkIikpOworICBFWFBFQ1RfVFJVRShJ
c0luU2V0KCdiJywgImFiIikpOworfQorCitURVNUKElzQXNjaWlEaWdpdFRlc3QsIElzRmFsc2VG
b3JOb25EaWdpdCkgeworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaURpZ2l0KCdcMCcpKTsKKyAgRVhQ
RUNUX0ZBTFNFKElzQXNjaWlEaWdpdCgnICcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlEaWdp
dCgnKycpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlEaWdpdCgnLScpKTsKKyAgRVhQRUNUX0ZB
TFNFKElzQXNjaWlEaWdpdCgnLicpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlEaWdpdCgnYScp
KTsKK30KKworVEVTVChJc0FzY2lpRGlnaXRUZXN0LCBJc1RydWVGb3JEaWdpdCkgeworICBFWFBF
Q1RfVFJVRShJc0FzY2lpRGlnaXQoJzAnKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlEaWdpdCgn
MScpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaURpZ2l0KCc1JykpOworICBFWFBFQ1RfVFJVRShJ
c0FzY2lpRGlnaXQoJzknKSk7Cit9CisKK1RFU1QoSXNBc2NpaVB1bmN0VGVzdCwgSXNGYWxzZUZv
ck5vblB1bmN0KSB7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3QoJ1wwJykpOworICBFWFBF
Q1RfRkFMU0UoSXNBc2NpaVB1bmN0KCcgJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVB1bmN0
KCdcbicpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlQdW5jdCgnYScpKTsKKyAgRVhQRUNUX0ZB
TFNFKElzQXNjaWlQdW5jdCgnMCcpKTsKK30KKworVEVTVChJc0FzY2lpUHVuY3RUZXN0LCBJc1Ry
dWVGb3JQdW5jdCkgeworICBmb3IgKGNvbnN0IGNoYXIqIHAgPSAiXi0hXCIjJCUmJygpKissLi86
Ozw9Pj9AW1xcXV9ge3x9fiI7ICpwOyBwKyspIHsKKyAgICBFWFBFQ1RfUFJFRDEoSXNBc2NpaVB1
bmN0LCAqcCk7CisgIH0KK30KKworVEVTVChJc1JlcGVhdFRlc3QsIElzRmFsc2VGb3JOb25SZXBl
YXRDaGFyKSB7CisgIEVYUEVDVF9GQUxTRShJc1JlcGVhdCgnXDAnKSk7CisgIEVYUEVDVF9GQUxT
RShJc1JlcGVhdCgnICcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCdhJykpOworICBFWFBF
Q1RfRkFMU0UoSXNSZXBlYXQoJzEnKSk7CisgIEVYUEVDVF9GQUxTRShJc1JlcGVhdCgnLScpKTsK
K30KKworVEVTVChJc1JlcGVhdFRlc3QsIElzVHJ1ZUZvclJlcGVhdENoYXIpIHsKKyAgRVhQRUNU
X1RSVUUoSXNSZXBlYXQoJz8nKSk7CisgIEVYUEVDVF9UUlVFKElzUmVwZWF0KCcqJykpOworICBF
WFBFQ1RfVFJVRShJc1JlcGVhdCgnKycpKTsKK30KKworVEVTVChJc0FzY2lpV2hpdGVTcGFjZVRl
c3QsIElzRmFsc2VGb3JOb25XaGl0ZVNwYWNlKSB7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV2hp
dGVTcGFjZSgnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV2hpdGVTcGFjZSgnYScpKTsK
KyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXaGl0ZVNwYWNlKCcxJykpOworICBFWFBFQ1RfRkFMU0Uo
SXNBc2NpaVdoaXRlU3BhY2UoJysnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV2hpdGVTcGFj
ZSgnXycpKTsKK30KKworVEVTVChJc0FzY2lpV2hpdGVTcGFjZVRlc3QsIElzVHJ1ZUZvcldoaXRl
U3BhY2UpIHsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdoaXRlU3BhY2UoJyAnKSk7CisgIEVYUEVD
VF9UUlVFKElzQXNjaWlXaGl0ZVNwYWNlKCdcbicpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdo
aXRlU3BhY2UoJ1xyJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnXHQnKSk7
CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXaGl0ZVNwYWNlKCdcdicpKTsKKyAgRVhQRUNUX1RSVUUo
SXNBc2NpaVdoaXRlU3BhY2UoJ1xmJykpOworfQorCitURVNUKElzQXNjaWlXb3JkQ2hhclRlc3Qs
IElzRmFsc2VGb3JOb25Xb3JkQ2hhcikgeworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdvcmRDaGFy
KCdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXb3JkQ2hhcignKycpKTsKKyAgRVhQRUNU
X0ZBTFNFKElzQXNjaWlXb3JkQ2hhcignLicpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXb3Jk
Q2hhcignICcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXb3JkQ2hhcignXG4nKSk7Cit9CisK
K1RFU1QoSXNBc2NpaVdvcmRDaGFyVGVzdCwgSXNUcnVlRm9yTGV0dGVyKSB7CisgIEVYUEVDVF9U
UlVFKElzQXNjaWlXb3JkQ2hhcignYScpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFy
KCdiJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJ0EnKSk7CisgIEVYUEVDVF9U
UlVFKElzQXNjaWlXb3JkQ2hhcignWicpKTsKK30KKworVEVTVChJc0FzY2lpV29yZENoYXJUZXN0
LCBJc1RydWVGb3JEaWdpdCkgeworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJzAnKSk7
CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignMScpKTsKKyAgRVhQRUNUX1RSVUUoSXNB
c2NpaVdvcmRDaGFyKCc3JykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJzknKSk7
Cit9CisKK1RFU1QoSXNBc2NpaVdvcmRDaGFyVGVzdCwgSXNUcnVlRm9yVW5kZXJzY29yZSkgewor
ICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJ18nKSk7Cit9CisKK1RFU1QoSXNWYWxpZEVz
Y2FwZVRlc3QsIElzRmFsc2VGb3JOb25QcmludGFibGUpIHsKKyAgRVhQRUNUX0ZBTFNFKElzVmFs
aWRFc2NhcGUoJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnXDAwNycpKTsK
K30KKworVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZvckRpZ2l0KSB7CisgIEVYUEVD
VF9GQUxTRShJc1ZhbGlkRXNjYXBlKCcwJykpOworICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2Fw
ZSgnOScpKTsKK30KKworVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZvcldoaXRlU3Bh
Y2UpIHsKKyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJyAnKSk7CisgIEVYUEVDVF9GQUxT
RShJc1ZhbGlkRXNjYXBlKCdcbicpKTsKK30KKworVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNG
YWxzZUZvclNvbWVMZXR0ZXIpIHsKKyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJ2EnKSk7
CisgIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdaJykpOworfQorCitURVNUKElzVmFsaWRF
c2NhcGVUZXN0LCBJc1RydWVGb3JQdW5jdCkgeworICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBl
KCcuJykpOworICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCctJykpOworICBFWFBFQ1RfVFJV
RShJc1ZhbGlkRXNjYXBlKCdeJykpOworICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCckJykp
OworICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCcoJykpOworICBFWFBFQ1RfVFJVRShJc1Zh
bGlkRXNjYXBlKCddJykpOworICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCd7JykpOworICBF
WFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCd8JykpOworfQorCitURVNUKElzVmFsaWRFc2NhcGVU
ZXN0LCBJc1RydWVGb3JTb21lTGV0dGVyKSB7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUo
J2QnKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ0QnKSk7CisgIEVYUEVDVF9UUlVF
KElzVmFsaWRFc2NhcGUoJ3MnKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ1MnKSk7
CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ3cnKSk7CisgIEVYUEVDVF9UUlVFKElzVmFs
aWRFc2NhcGUoJ1cnKSk7Cit9CisKK1RFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZFB1
bmN0KSB7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1xcJywgJ1wwJykp
OworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdcXCcsICcgJykpOworICBF
WFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdfJywgJy4nKSk7CisgIEVYUEVDVF9G
QUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJy4nLCAnYScpKTsKKworICBFWFBFQ1RfVFJVRShB
dG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1xcJywgJ1xcJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0
Y2hlc0NoYXIodHJ1ZSwgJ18nLCAnXycpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFy
KHRydWUsICcrJywgJysnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
LicsICcuJykpOworfQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfZCkgewor
ICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywgJ1wwJykpOworICBFWFBF
Q1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywgJ2EnKSk7CisgIEVYUEVDVF9GQUxT
RShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnLicpKTsKKworICBFWFBFQ1RfVFJVRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnMCcpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXND
aGFyKHRydWUsICdkJywgJzknKSk7Cit9CisKK1RFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNj
YXBlZF9EKSB7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0QnLCAnMCcp
KTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcsICc5JykpOworCisg
IEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcsICdcMCcpKTsKKyAgRVhQRUNU
X1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJ2EnKSk7CisgIEVYUEVDVF9UUlVFKEF0
b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcsICctJykpOworfQorCitURVNUKEF0b21NYXRjaGVzQ2hh
clRlc3QsIEVzY2FwZWRfcykgeworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICdzJywgJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywg
J2EnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnLicpKTsK
KyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICc5JykpOworCisgIEVY
UEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICcgJykpOworICBFWFBFQ1RfVFJV
RShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnXG4nKSk7CisgIEVYUEVDVF9UUlVFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAncycsICdcdCcpKTsKK30KKworVEVTVChBdG9tTWF0Y2hlc0NoYXJU
ZXN0LCBFc2NhcGVkX1MpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
UycsICcgJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdTJywgJ1xy
JykpOworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICdcMCcpKTsK
KyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdTJywgJ2EnKSk7CisgIEVYUEVD
VF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICc5JykpOworfQorCitURVNUKEF0b21N
YXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfdykgeworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICd3JywgJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICd3JywgJysnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cn
LCAnICcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdcbicp
KTsKKworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnMCcpKTsKKyAg
RVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJ2InKSk7CisgIEVYUEVDVF9U
UlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdDJykpOworICBFWFBFQ1RfVFJVRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnXycpKTsKK30KKworVEVTVChBdG9tTWF0Y2hlc0NoYXJU
ZXN0LCBFc2NhcGVkX1cpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
VycsICdBJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJ2In
KSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnOScpKTsKKyAg
RVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICdfJykpOworCisgIEVYUEVD
VF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICdcMCcpKTsKKyAgRVhQRUNUX1RSVUUo
QXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJyonKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAnVycsICdcbicpKTsKK30KKworVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0
LCBFc2NhcGVkV2hpdGVTcGFjZSkgeworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICdmJywgJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdm
JywgJ1xuJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICduJywgJ1ww
JykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICduJywgJ1xyJykpOwor
ICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdyJywgJ1wwJykpOworICBFWFBF
Q1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdyJywgJ2EnKSk7CisgIEVYUEVDVF9GQUxT
RShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3QnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ3QnLCAndCcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAndicsICdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAndicsICdcZicpKTsKKworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwg
J2YnLCAnXGYnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnbicsICdc
bicpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdyJywgJ1xyJykpOwor
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3QnLCAnXHQnKSk7CisgIEVYUEVD
VF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndicsICdcdicpKTsKK30KKworVEVTVChBdG9t
TWF0Y2hlc0NoYXJUZXN0LCBVbmVzY2FwZWREb3QpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRj
aGVzQ2hhcihmYWxzZSwgJy4nLCAnXG4nKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXND
aGFyKGZhbHNlLCAnLicsICdcMCcpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZh
bHNlLCAnLicsICcuJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICcu
JywgJ2EnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4nLCAnICcp
KTsKK30KKworVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBVbmVzY2FwZWRDaGFyKSB7CisgIEVY
UEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICdhJywgJ1wwJykpOworICBFWFBFQ1Rf
RkFMU0UoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnYScsICdiJykpOworICBFWFBFQ1RfRkFMU0Uo
QXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnJCcsICdhJykpOworCisgIEVYUEVDVF9UUlVFKEF0b21N
YXRjaGVzQ2hhcihmYWxzZSwgJyQnLCAnJCcpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXND
aGFyKGZhbHNlLCAnNScsICc1JykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFs
c2UsICdaJywgJ1onKSk7Cit9CisKK1RFU1QoVmFsaWRhdGVSZWdleFRlc3QsIEdlbmVyYXRlc0Zh
aWx1cmVBbmRSZXR1cm5zRmFsc2VGb3JJbnZhbGlkKSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KE5VTEwpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIk5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiIp
OworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKKyAgICAgIEFTU0VSVF9GQUxTRShWYWxpZGF0
ZVJlZ2V4KCJhXFwiKSksCisgICAgICAiU3ludGF4IGVycm9yIGF0IGluZGV4IDEgaW4gc2ltcGxl
IHJlZ3VsYXIgZXhwcmVzc2lvbiBcImFcXFwiOiAiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImFcXCIpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIidcXCcgY2Fubm90IGFwcGVhciBhdCB0aGUgZW5kIik7CisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJcXG5cXCIpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIidcXCcgY2Fubm90IGFwcGVhciBhdCB0aGUgZW5kIik7Cisg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJcXHNc
XGhiIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBlc2NhcGUgc2VxdWVu
Y2UgXCJcXGhcIiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFs
aWRhdGVSZWdleCgiXl4iKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICInXicgY2FuIG9u
bHkgYXBwZWFyIGF0IHRoZSBiZWdpbm5pbmciKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
QVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIi4qXmIiKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICInXicgY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBiZWdpbm5pbmciKTsKKyAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIiQkIikpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAiJyQnIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgZW5kIik7
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJe
JGEiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICInJCcgY2FuIG9ubHkgYXBwZWFyIGF0
IHRoZSBlbmQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlk
YXRlUmVnZXgoImEoYiIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIicoJyBpcyB1bnN1
cHBvcnRlZCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRh
dGVSZWdleCgiYWIpIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJyknIGlzIHVuc3Vw
cG9ydGVkIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0
ZVJlZ2V4KCJbYWIiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICInWycgaXMgdW5zdXBw
b3J0ZWQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRl
UmVnZXgoImF7MiIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIid7JyBpcyB1bnN1cHBv
cnRlZCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVS
ZWdleCgiPyIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIic/JyBjYW4gb25seSBmb2xs
b3cgYSByZXBlYXRhYmxlIHRva2VuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VS
VF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJeKiIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IicqJyBjYW4gb25seSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2VuIik7CisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCI1KisiKSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICInKycgY2FuIG9ubHkgZm9sbG93IGEgcmVwZWF0YWJsZSB0b2tl
biIpOworfQorCitURVNUKFZhbGlkYXRlUmVnZXhUZXN0LCBSZXR1cm5zVHJ1ZUZvclZhbGlkKSB7
CisgIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIiIpKTsKKyAgRVhQRUNUX1RSVUUoVmFsaWRh
dGVSZWdleCgiYSIpKTsKKyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiLioiKSk7CisgIEVY
UEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIl5hXysiKSk7CisgIEVYUEVDVF9UUlVFKFZhbGlkYXRl
UmVnZXgoIl5hXFx0XFwmPyIpKTsKKyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiMDkqJCIp
KTsKKyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiXlokIikpOworICBFWFBFQ1RfVFJVRShW
YWxpZGF0ZVJlZ2V4KCJhXFxeWlxcJFxcKFxcKVxcfFxcW1xcXVxce1xcfSIpKTsKK30KKworVEVT
VChNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZFRlc3QsIFdvcmtzRm9yWmVyb09yT25lKSB7
CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJ2En
LCAnPycsICJhIiwgImJhIikpOworICAvLyBSZXBlYXRpbmcgbW9yZSB0aGFuIG9uY2UuCisgIEVY
UEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJ2EnLCAnPycs
ICJiIiwgImFhYiIpKTsKKworICAvLyBSZXBlYXRpbmcgemVybyB0aW1lcy4KKyAgRVhQRUNUX1RS
VUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICdhJywgJz8nLCAiYiIsICJi
YSIpKTsKKyAgLy8gUmVwZWF0aW5nIG9uY2UuCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlv
bkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImIiLCAiYWIiKSk7CisgIEVYUEVDVF9U
UlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnIycsICc/JywgIi4iLCAi
IyMiKSk7Cit9CisKK1RFU1QoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWRUZXN0LCBXb3Jr
c0Zvclplcm9Pck1hbnkpIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4
QXRIZWFkKGZhbHNlLCAnLicsICcqJywgImEkIiwgImJhYWIiKSk7CisKKyAgLy8gUmVwZWF0aW5n
IHplcm8gdGltZXMuCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFk
KGZhbHNlLCAnLicsICcqJywgImIiLCAiYmMiKSk7CisgIC8vIFJlcGVhdGluZyBvbmNlLgorICBF
WFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKics
ICJiIiwgImFiYyIpKTsKKyAgLy8gUmVwZWF0aW5nIG1vcmUgdGhhbiBvbmNlLgorICBFWFBFQ1Rf
VFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZCh0cnVlLCAndycsICcqJywgIi0iLCAi
YWJfMS1nIikpOworfQorCitURVNUKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkVGVzdCwg
V29ya3NGb3JPbmVPck1hbnkpIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlvbkFuZFJl
Z2V4QXRIZWFkKGZhbHNlLCAnLicsICcrJywgImEkIiwgImJhYWIiKSk7CisgIC8vIFJlcGVhdGlu
ZyB6ZXJvIHRpbWVzLgorICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhl
YWQoZmFsc2UsICcuJywgJysnLCAiYiIsICJiYyIpKTsKKworICAvLyBSZXBlYXRpbmcgb25jZS4K
KyAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywg
JysnLCAiYiIsICJhYmMiKSk7CisgIC8vIFJlcGVhdGluZyBtb3JlIHRoYW4gb25jZS4KKyAgRVhQ
RUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQodHJ1ZSwgJ3cnLCAnKycsICIt
IiwgImFiXzEtZyIpKTsKK30KKworVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgUmV0dXJuc1Ry
dWVGb3JFbXB0eVJlZ2V4KSB7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIiIsICIi
KSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIiIsICJhYiIpKTsKK30KKworVEVT
VChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NXaGVuRG9sbGFySXNJblJlZ2V4KSB7CisgIEVY
UEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCIkIiwgImEiKSk7CisKKyAgRVhQRUNUX1RSVUUo
TWF0Y2hSZWdleEF0SGVhZCgiJCIsICIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhl
YWQoImEkIiwgImEiKSk7Cit9CisKK1RFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIFdvcmtzV2hl
blJlZ2V4U3RhcnRzV2l0aEVzY2FwZVNlcXVlbmNlKSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJl
Z2V4QXRIZWFkKCJcXHciLCAiKyIpKTsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQo
IlxcVyIsICJhYiIpKTsKKworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXHNhIiwg
IlxuYWIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcZCIsICIxYSIpKTsK
K30KKworVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NXaGVuUmVnZXhTdGFydHNXaXRo
UmVwZXRpdGlvbikgeworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiLithIiwgImFi
YyIpKTsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoImE/YiIsICJhYWIiKSk7CisK
KyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiLiphIiwgImJjMTItYWIiKSk7CisgIEVY
UEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoImE/YiIsICJiIikpOworICBFWFBFQ1RfVFJVRShN
YXRjaFJlZ2V4QXRIZWFkKCJhP2IiLCAiYWIiKSk7Cit9CisKK1RFU1QoTWF0Y2hSZWdleEF0SGVh
ZFRlc3QsCisgICAgIFdvcmtzV2hlblJlZ2V4U3RhcnRzV2l0aFJlcGV0aW9uT2ZFc2NhcGVTZXF1
ZW5jZSkgeworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiXFwuK2EiLCAiYWJjIikp
OworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiXFxzP2IiLCAiICBiIikpOworCisg
IEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcKCphIiwgIigoKChhYiIpKTsKKyAgRVhQ
RUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxeP2IiLCAiXmIiKSk7CisgIEVYUEVDVF9UUlVF
KE1hdGNoUmVnZXhBdEhlYWQoIlxcXFw/YiIsICJiIikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJl
Z2V4QXRIZWFkKCJcXFxcP2IiLCAiXFxiIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBdEhlYWRU
ZXN0LCBNYXRjaGVzU2VxdWVudGlhbGx5KSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRI
ZWFkKCJhYi4qYyIsICJhY2FiYyIpKTsKKworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFk
KCJhYi4qYyIsICJhYi1mc2MiKSk7Cit9CisKK1RFU1QoTWF0Y2hSZWdleEFueXdoZXJlVGVzdCwg
UmV0dXJuc0ZhbHNlV2hlblN0cmluZ0lzTnVsbCkgeworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdl
eEFueXdoZXJlKCIiLCBOVUxMKSk7Cit9CisKK1RFU1QoTWF0Y2hSZWdleEFueXdoZXJlVGVzdCwg
V29ya3NXaGVuUmVnZXhTdGFydHNXaXRoQ2FyZXQpIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVn
ZXhBbnl3aGVyZSgiXmEiLCAiYmEiKSk7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hl
cmUoIl4kIiwgImEiKSk7CisKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJeYSIs
ICJhYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJeIiwgImFiIikpOwor
ICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIl4kIiwgIiIpKTsKK30KKworVEVTVChN
YXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5zRmFsc2VXaGVuTm9NYXRjaCkgeworICBFWFBF
Q1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJlKCJhIiwgImJjZGUxMjMiKSk7CisgIEVYUEVDVF9G
QUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoImEuK2EiLCAiLS1hYTg4ODg4ODg4IikpOworfQorCitU
RVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFJldHVybnNUcnVlV2hlbk1hdGNoaW5nUHJlZml4
KSB7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXFx3KyIsICJhYjFfIC0gNSIp
KTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCIuKj0iLCAiPSIpKTsKKyAgRVhQ
RUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJ4LiphYj8uKmJjIiwgInhhYWFiYyIpKTsKK30K
KworVEVTVChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5zVHJ1ZVdoZW5NYXRjaGluZ05v
blByZWZpeCkgeworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIlxcdysiLCAiJCQk
IGFiMV8gLSA1IikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIlxcLis9Iiwg
Ij0gIC4uLj0iKSk7Cit9CisKKy8vIFRlc3RzIFJFJ3MgaW1wbGljaXQgY29uc3RydWN0b3JzLgor
VEVTVChSRVRlc3QsIEltcGxpY2l0Q29uc3RydWN0b3JXb3JrcykgeworICBjb25zdCBSRSBlbXB0
eSgiIik7CisgIEVYUEVDVF9TVFJFUSgiIiwgZW1wdHkucGF0dGVybigpKTsKKworICBjb25zdCBS
RSBzaW1wbGUoImhlbGxvIik7CisgIEVYUEVDVF9TVFJFUSgiaGVsbG8iLCBzaW1wbGUucGF0dGVy
bigpKTsKK30KKworLy8gVGVzdHMgdGhhdCBSRSdzIGNvbnN0cnVjdG9ycyByZWplY3QgaW52YWxp
ZCByZWd1bGFyIGV4cHJlc3Npb25zLgorVEVTVChSRVRlc3QsIFJlamVjdHNJbnZhbGlkUmVnZXgp
IHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIGNvbnN0IFJFIG5vcm1hbChOVUxM
KTsKKyAgfSwgIk5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiIp
OworCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKKyAgICBjb25zdCBSRSBub3JtYWwoIi4q
KFxcdysiKTsKKyAgfSwgIicoJyBpcyB1bnN1cHBvcnRlZCIpOworCisgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKHsKKyAgICBjb25zdCBSRSBpbnZhbGlkKCJePyIpOworICB9LCAiJz8nIGNhbiBv
bmx5IGZvbGxvdyBhIHJlcGVhdGFibGUgdG9rZW4iKTsKK30KKworLy8gVGVzdHMgUkU6OkZ1bGxN
YXRjaCgpLgorVEVTVChSRVRlc3QsIEZ1bGxNYXRjaFdvcmtzKSB7CisgIGNvbnN0IFJFIGVtcHR5
KCIiKTsKKyAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaCgiIiwgZW1wdHkpKTsKKyAgRVhQRUNU
X0ZBTFNFKFJFOjpGdWxsTWF0Y2goImEiLCBlbXB0eSkpOworCisgIGNvbnN0IFJFIHJlMSgiYSIp
OworICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKCJhIiwgcmUxKSk7CisKKyAgY29uc3QgUkUg
cmUoImEuKnoiKTsKKyAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaCgiYXoiLCByZSkpOworICBF
WFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKCJheHl6IiwgcmUpKTsKKyAgRVhQRUNUX0ZBTFNFKFJF
OjpGdWxsTWF0Y2goImJheiIsIHJlKSk7CisgIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKCJh
enkiLCByZSkpOworfQorCisvLyBUZXN0cyBSRTo6UGFydGlhbE1hdGNoKCkuCitURVNUKFJFVGVz
dCwgUGFydGlhbE1hdGNoV29ya3MpIHsKKyAgY29uc3QgUkUgZW1wdHkoIiIpOworICBFWFBFQ1Rf
VFJVRShSRTo6UGFydGlhbE1hdGNoKCIiLCBlbXB0eSkpOworICBFWFBFQ1RfVFJVRShSRTo6UGFy
dGlhbE1hdGNoKCJhIiwgZW1wdHkpKTsKKworICBjb25zdCBSRSByZSgiYS4qeiIpOworICBFWFBF
Q1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCJheiIsIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQ
YXJ0aWFsTWF0Y2goImF4eXoiLCByZSkpOworICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNo
KCJiYXoiLCByZSkpOworICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCJhenkiLCByZSkp
OworICBFWFBFQ1RfRkFMU0UoUkU6OlBhcnRpYWxNYXRjaCgienphIiwgcmUpKTsKK30KKworI2Vu
ZGlmICAvLyBHVEVTVF9VU0VTX1BPU0lYX1JFCisKKyNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKKworVEVTVChDYXB0dXJlVGVzdCwgQ2FwdHVyZXNTdGRvdXQpIHsKKyAgQ2FwdHVyZVN0ZG91
dCgpOworICBmcHJpbnRmKHN0ZG91dCwgImFiYyIpOworICBFWFBFQ1RfU1RSRVEoImFiYyIsIEdl
dENhcHR1cmVkU3Rkb3V0KCkuY19zdHIoKSk7CisKKyAgQ2FwdHVyZVN0ZG91dCgpOworICBmcHJp
bnRmKHN0ZG91dCwgImRlZiVjZ2hpIiwgJ1wwJyk7CisgIEVYUEVDVF9FUSg6OnN0ZDo6c3RyaW5n
KCJkZWZcMGdoaSIsIDcpLCA6OnN0ZDo6c3RyaW5nKEdldENhcHR1cmVkU3Rkb3V0KCkpKTsKK30K
KworVEVTVChDYXB0dXJlVGVzdCwgQ2FwdHVyZXNTdGRlcnIpIHsKKyAgQ2FwdHVyZVN0ZGVycigp
OworICBmcHJpbnRmKHN0ZGVyciwgImprbCIpOworICBFWFBFQ1RfU1RSRVEoImprbCIsIEdldENh
cHR1cmVkU3RkZXJyKCkuY19zdHIoKSk7CisKKyAgQ2FwdHVyZVN0ZGVycigpOworICBmcHJpbnRm
KHN0ZGVyciwgImprbCVjbW5vIiwgJ1wwJyk7CisgIEVYUEVDVF9FUSg6OnN0ZDo6c3RyaW5nKCJq
a2xcMG1ubyIsIDcpLCA6OnN0ZDo6c3RyaW5nKEdldENhcHR1cmVkU3RkZXJyKCkpKTsKK30KKwor
Ly8gVGVzdHMgdGhhdCBzdGRvdXQgYW5kIHN0ZGVyciBjYXB0dXJlIGRvbid0IGludGVyZmVyZSB3
aXRoIGVhY2ggb3RoZXIuCitURVNUKENhcHR1cmVUZXN0LCBDYXB0dXJlc1N0ZG91dEFuZFN0ZGVy
cikgeworICBDYXB0dXJlU3Rkb3V0KCk7CisgIENhcHR1cmVTdGRlcnIoKTsKKyAgZnByaW50Zihz
dGRvdXQsICJwcXIiKTsKKyAgZnByaW50ZihzdGRlcnIsICJzdHUiKTsKKyAgRVhQRUNUX1NUUkVR
KCJwcXIiLCBHZXRDYXB0dXJlZFN0ZG91dCgpLmNfc3RyKCkpOworICBFWFBFQ1RfU1RSRVEoInN0
dSIsIEdldENhcHR1cmVkU3RkZXJyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoQ2FwdHVyZURlYXRo
VGVzdCwgQ2Fubm90UmVlbnRlclN0ZG91dENhcHR1cmUpIHsKKyAgQ2FwdHVyZVN0ZG91dCgpOwor
ICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKENhcHR1cmVTdGRvdXQoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiT25seSBvbmUgc3Rkb3V0IGNhcHR1cmVyIGNhbiBleGlzdCBhdCBh
IHRpbWUiKTsKKyAgR2V0Q2FwdHVyZWRTdGRvdXQoKTsKKworICAvLyBXZSBjYW5ub3QgdGVzdCBz
dGRlcnIgY2FwdHVyaW5nIHVzaW5nIGRlYXRoIHRlc3RzIGFzIHRoZXkgdXNlIGl0CisgIC8vIHRo
ZW1zZWx2ZXMuCit9CisKKyNlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisKK1RF
U1QoVGhyZWFkTG9jYWxUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3JJbml0aWFsaXplc1RvRGVmYXVs
dFZhbHVlcykgeworICBUaHJlYWRMb2NhbDxpbnQ+IHQxOworICBFWFBFQ1RfRVEoMCwgdDEuZ2V0
KCkpOworCisgIFRocmVhZExvY2FsPHZvaWQqPiB0MjsKKyAgRVhQRUNUX1RSVUUodDIuZ2V0KCkg
PT0gTlVMTCk7Cit9CisKK1RFU1QoVGhyZWFkTG9jYWxUZXN0LCBTaW5nbGVQYXJhbUNvbnN0cnVj
dG9ySW5pdGlhbGl6ZXNUb1BhcmFtKSB7CisgIFRocmVhZExvY2FsPGludD4gdDEoMTIzKTsKKyAg
RVhQRUNUX0VRKDEyMywgdDEuZ2V0KCkpOworCisgIGludCBpID0gMDsKKyAgVGhyZWFkTG9jYWw8
aW50Kj4gdDIoJmkpOworICBFWFBFQ1RfRVEoJmksIHQyLmdldCgpKTsKK30KKworY2xhc3MgTm9E
ZWZhdWx0Q29udHJ1Y3RvciB7CisgcHVibGljOgorICBleHBsaWNpdCBOb0RlZmF1bHRDb250cnVj
dG9yKGNvbnN0IGNoYXIqKSB7fQorICBOb0RlZmF1bHRDb250cnVjdG9yKGNvbnN0IE5vRGVmYXVs
dENvbnRydWN0b3ImKSB7fQorfTsKKworVEVTVChUaHJlYWRMb2NhbFRlc3QsIFZhbHVlRGVmYXVs
dENvbnRydWN0b3JJc05vdFJlcXVpcmVkRm9yUGFyYW1WZXJzaW9uKSB7CisgIFRocmVhZExvY2Fs
PE5vRGVmYXVsdENvbnRydWN0b3I+IGJhcihOb0RlZmF1bHRDb250cnVjdG9yKCJmb28iKSk7Cisg
IGJhci5wb2ludGVyKCk7Cit9CisKK1RFU1QoVGhyZWFkTG9jYWxUZXN0LCBHZXRBbmRQb2ludGVy
UmV0dXJuU2FtZVZhbHVlKSB7CisgIFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiB0aHJlYWRfbG9j
YWxfc3RyaW5nOworCisgIEVYUEVDVF9FUSh0aHJlYWRfbG9jYWxfc3RyaW5nLnBvaW50ZXIoKSwg
Jih0aHJlYWRfbG9jYWxfc3RyaW5nLmdldCgpKSk7CisKKyAgLy8gVmVyaWZpZXMgdGhlIGNvbmRp
dGlvbiBzdGlsbCBob2xkcyBhZnRlciBjYWxsaW5nIHNldC4KKyAgdGhyZWFkX2xvY2FsX3N0cmlu
Zy5zZXQoImZvbyIpOworICBFWFBFQ1RfRVEodGhyZWFkX2xvY2FsX3N0cmluZy5wb2ludGVyKCks
ICYodGhyZWFkX2xvY2FsX3N0cmluZy5nZXQoKSkpOworfQorCitURVNUKFRocmVhZExvY2FsVGVz
dCwgUG9pbnRlckFuZENvbnN0UG9pbnRlclJldHVyblNhbWVWYWx1ZSkgeworICBUaHJlYWRMb2Nh
bDxzdGQ6OnN0cmluZz4gdGhyZWFkX2xvY2FsX3N0cmluZzsKKyAgY29uc3QgVGhyZWFkTG9jYWw8
c3RkOjpzdHJpbmc+JiBjb25zdF90aHJlYWRfbG9jYWxfc3RyaW5nID0KKyAgICAgIHRocmVhZF9s
b2NhbF9zdHJpbmc7CisKKyAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbF9zdHJpbmcucG9pbnRlcigp
LCBjb25zdF90aHJlYWRfbG9jYWxfc3RyaW5nLnBvaW50ZXIoKSk7CisKKyAgdGhyZWFkX2xvY2Fs
X3N0cmluZy5zZXQoImZvbyIpOworICBFWFBFQ1RfRVEodGhyZWFkX2xvY2FsX3N0cmluZy5wb2lu
dGVyKCksIGNvbnN0X3RocmVhZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpKTsKK30KKworI2lmIEdU
RVNUX0lTX1RIUkVBRFNBRkUKKwordm9pZCBBZGRUd28oaW50KiBwYXJhbSkgeyAqcGFyYW0gKz0g
MjsgfQorCitURVNUKFRocmVhZFdpdGhQYXJhbVRlc3QsIENvbnN0cnVjdG9yRXhlY3V0ZXNUaHJl
YWRGdW5jKSB7CisgIGludCBpID0gNDA7CisgIFRocmVhZFdpdGhQYXJhbTxpbnQqPiB0aHJlYWQo
JkFkZFR3bywgJmksIE5VTEwpOworICB0aHJlYWQuSm9pbigpOworICBFWFBFQ1RfRVEoNDIsIGkp
OworfQorCitURVNUKE11dGV4RGVhdGhUZXN0LCBBc3NlcnRIZWxkU2hvdWxkQXNzZXJ0V2hlbk5v
dExvY2tlZCkgeworICAvLyBBc3NlcnRIZWxkKCkgaXMgZmxha3kgb25seSBpbiB0aGUgcHJlc2Vu
Y2Ugb2YgbXVsdGlwbGUgdGhyZWFkcyBhY2Nlc3NpbmcKKyAgLy8gdGhlIGxvY2suIEluIHRoaXMg
Y2FzZSwgdGhlIHRlc3QgaXMgcm9idXN0LgorICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHsK
KyAgICBNdXRleCBtOworICAgIHsgTXV0ZXhMb2NrIGxvY2soJm0pOyB9CisgICAgbS5Bc3NlcnRI
ZWxkKCk7CisgIH0sCisgICJ0aHJlYWQgLipob2xkIik7Cit9CisKK1RFU1QoTXV0ZXhUZXN0LCBB
c3NlcnRIZWxkU2hvdWxkTm90QXNzZXJ0V2hlbkxvY2tlZCkgeworICBNdXRleCBtOworICBNdXRl
eExvY2sgbG9jaygmbSk7CisgIG0uQXNzZXJ0SGVsZCgpOworfQorCitjbGFzcyBBdG9taWNDb3Vu
dGVyV2l0aE11dGV4IHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEF0b21pY0NvdW50ZXJXaXRoTXV0
ZXgoTXV0ZXgqIG11dGV4KSA6CisgICAgdmFsdWVfKDApLCBtdXRleF8obXV0ZXgpLCByYW5kb21f
KDQyKSB7fQorCisgIHZvaWQgSW5jcmVtZW50KCkgeworICAgIE11dGV4TG9jayBsb2NrKG11dGV4
Xyk7CisgICAgaW50IHRlbXAgPSB2YWx1ZV87CisgICAgeworICAgICAgLy8gV2UgbmVlZCB0byBw
dXQgdXAgYSBtZW1vcnkgYmFycmllciB0byBwcmV2ZW50IHJlYWRzIGFuZCB3cml0ZXMgdG8KKyAg
ICAgIC8vIHZhbHVlXyByZWFycmFuZ2VkIHdpdGggdGhlIGNhbGwgdG8gU2xlZXBNaWxsaXNlY29u
ZHMgd2hlbiBvYnNlcnZlZAorICAgICAgLy8gZnJvbSBvdGhlciB0aHJlYWRzLgorI2lmIEdURVNU
X0hBU19QVEhSRUFECisgICAgICAvLyBPbiBQT1NJWCwgbG9ja2luZyBhIG11dGV4IHB1dHMgdXAg
YSBtZW1vcnkgYmFycmllci4gIFdlIGNhbm5vdCB1c2UKKyAgICAgIC8vIE11dGV4IGFuZCBNdXRl
eExvY2sgaGVyZSBvciByZWx5IG9uIHRoZWlyIG1lbW9yeSBiYXJyaWVyCisgICAgICAvLyBmdW5j
dGlvbmFsaXR5IGFzIHdlIGFyZSB0ZXN0aW5nIHRoZW0gaGVyZS4KKyAgICAgIHB0aHJlYWRfbXV0
ZXhfdCBtZW1vcnlfYmFycmllcl9tdXRleDsKKyAgICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NF
U1NfKAorICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgmbWVtb3J5X2JhcnJpZXJfbXV0ZXgs
IE5VTEwpKTsKKyAgICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhf
bG9jaygmbWVtb3J5X2JhcnJpZXJfbXV0ZXgpKTsKKworICAgICAgU2xlZXBNaWxsaXNlY29uZHMo
cmFuZG9tXy5HZW5lcmF0ZSgzMCkpOworCisgICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNT
XyhwdGhyZWFkX211dGV4X3VubG9jaygmbWVtb3J5X2JhcnJpZXJfbXV0ZXgpKTsKKyAgICAgIEdU
RVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmbWVtb3J5X2Jh
cnJpZXJfbXV0ZXgpKTsKKyNlbGlmIEdURVNUX09TX1dJTkRPV1MKKyAgICAgIC8vIE9uIFdpbmRv
d3MsIHBlcmZvcm1pbmcgYW4gaW50ZXJsb2NrZWQgYWNjZXNzIHB1dHMgdXAgYSBtZW1vcnkgYmFy
cmllci4KKyAgICAgIHZvbGF0aWxlIExPTkcgZHVtbXkgPSAwOworICAgICAgOjpJbnRlcmxvY2tl
ZEluY3JlbWVudCgmZHVtbXkpOworICAgICAgU2xlZXBNaWxsaXNlY29uZHMocmFuZG9tXy5HZW5l
cmF0ZSgzMCkpOworICAgICAgOjpJbnRlcmxvY2tlZEluY3JlbWVudCgmZHVtbXkpOworI2Vsc2UK
KyMgZXJyb3IgIk1lbW9yeSBiYXJyaWVyIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3Jt
LiIKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1BUSFJFQUQKKyAgICB9CisgICAgdmFsdWVfID0gdGVt
cCArIDE7CisgIH0KKyAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CisKKyBw
cml2YXRlOgorICB2b2xhdGlsZSBpbnQgdmFsdWVfOworICBNdXRleCogY29uc3QgbXV0ZXhfOyAg
Ly8gUHJvdGVjdHMgdmFsdWVfLgorICBSYW5kb20gICAgICAgcmFuZG9tXzsKK307CisKK3ZvaWQg
Q291bnRpbmdUaHJlYWRGdW5jKHBhaXI8QXRvbWljQ291bnRlcldpdGhNdXRleCosIGludD4gcGFy
YW0pIHsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbS5zZWNvbmQ7ICsraSkKKyAgICAgIHBh
cmFtLmZpcnN0LT5JbmNyZW1lbnQoKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgbXV0ZXggb25s
eSBsZXRzIG9uZSB0aHJlYWQgYXQgYSB0aW1lIHRvIGxvY2sgaXQuCitURVNUKE11dGV4VGVzdCwg
T25seU9uZVRocmVhZENhbkxvY2tBdEFUaW1lKSB7CisgIE11dGV4IG11dGV4OworICBBdG9taWND
b3VudGVyV2l0aE11dGV4IGxvY2tlZF9jb3VudGVyKCZtdXRleCk7CisKKyAgdHlwZWRlZiBUaHJl
YWRXaXRoUGFyYW08cGFpcjxBdG9taWNDb3VudGVyV2l0aE11dGV4KiwgaW50PiA+IFRocmVhZFR5
cGU7CisgIGNvbnN0IGludCBrQ3ljbGVDb3VudCA9IDIwOworICBjb25zdCBpbnQga1RocmVhZENv
dW50ID0gNzsKKyAgc2NvcGVkX3B0cjxUaHJlYWRUeXBlPiBjb3VudGluZ190aHJlYWRzW2tUaHJl
YWRDb3VudF07CisgIE5vdGlmaWNhdGlvbiB0aHJlYWRzX2Nhbl9zdGFydDsKKyAgLy8gQ3JlYXRl
cyBhbmQgcnVucyBrVGhyZWFkQ291bnQgdGhyZWFkcyB0aGF0IGluY3JlbWVudCBsb2NrZWRfY291
bnRlcgorICAvLyBrQ3ljbGVDb3VudCB0aW1lcyBlYWNoLgorICBmb3IgKGludCBpID0gMDsgaSA8
IGtUaHJlYWRDb3VudDsgKytpKSB7CisgICAgY291bnRpbmdfdGhyZWFkc1tpXS5yZXNldChuZXcg
VGhyZWFkVHlwZSgmQ291bnRpbmdUaHJlYWRGdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWFrZV9wYWlyKCZsb2NrZWRfY291bnRlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ3ljbGVDb3Vu
dCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGhyZWFk
c19jYW5fc3RhcnQpKTsKKyAgfQorICB0aHJlYWRzX2Nhbl9zdGFydC5Ob3RpZnkoKTsKKyAgZm9y
IChpbnQgaSA9IDA7IGkgPCBrVGhyZWFkQ291bnQ7ICsraSkKKyAgICBjb3VudGluZ190aHJlYWRz
W2ldLT5Kb2luKCk7CisKKyAgLy8gSWYgdGhlIG11dGV4IGxldHMgbW9yZSB0aGFuIG9uZSB0aHJl
YWQgdG8gaW5jcmVtZW50IHRoZSBjb3VudGVyIGF0IGEKKyAgLy8gdGltZSwgdGhleSBhcmUgbGlr
ZWx5IHRvIGVuY291bnRlciBhIHJhY2UgY29uZGl0aW9uIGFuZCBoYXZlIHNvbWUKKyAgLy8gaW5j
cmVtZW50cyBvdmVyd3JpdHRlbiwgcmVzdWx0aW5nIGluIHRoZSBsb3dlciB0aGVuIGV4cGVjdGVk
IGNvdW50ZXIKKyAgLy8gdmFsdWUuCisgIEVYUEVDVF9FUShrQ3ljbGVDb3VudCAqIGtUaHJlYWRD
b3VudCwgbG9ja2VkX2NvdW50ZXIudmFsdWUoKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
Pgordm9pZCBSdW5Gcm9tVGhyZWFkKHZvaWQgKGZ1bmMpKFQpLCBUIHBhcmFtKSB7CisgIFRocmVh
ZFdpdGhQYXJhbTxUPiB0aHJlYWQoZnVuYywgcGFyYW0sIE5VTEwpOworICB0aHJlYWQuSm9pbigp
OworfQorCit2b2lkIFJldHJpZXZlVGhyZWFkTG9jYWxWYWx1ZSgKKyAgICBwYWlyPFRocmVhZExv
Y2FsPHN0ZDo6c3RyaW5nPiosIHN0ZDo6c3RyaW5nKj4gcGFyYW0pIHsKKyAgKnBhcmFtLnNlY29u
ZCA9IHBhcmFtLmZpcnN0LT5nZXQoKTsKK30KKworVEVTVChUaHJlYWRMb2NhbFRlc3QsIFBhcmFt
ZXRlcml6ZWRDb25zdHJ1Y3RvclNldHNEZWZhdWx0KSB7CisgIFRocmVhZExvY2FsPHN0ZDo6c3Ry
aW5nPiB0aHJlYWRfbG9jYWxfc3RyaW5nKCJmb28iKTsKKyAgRVhQRUNUX1NUUkVRKCJmb28iLCB0
aHJlYWRfbG9jYWxfc3RyaW5nLmdldCgpLmNfc3RyKCkpOworCisgIHRocmVhZF9sb2NhbF9zdHJp
bmcuc2V0KCJiYXIiKTsKKyAgRVhQRUNUX1NUUkVRKCJiYXIiLCB0aHJlYWRfbG9jYWxfc3RyaW5n
LmdldCgpLmNfc3RyKCkpOworCisgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKKyAgUnVuRnJvbVRocmVh
ZCgmUmV0cmlldmVUaHJlYWRMb2NhbFZhbHVlLAorICAgICAgICAgICAgICAgIG1ha2VfcGFpcigm
dGhyZWFkX2xvY2FsX3N0cmluZywgJnJlc3VsdCkpOworICBFWFBFQ1RfU1RSRVEoImZvbyIsIHJl
c3VsdC5jX3N0cigpKTsKK30KKworLy8gS2VlcHMgdHJhY2sgb2Ygd2hldGhlciBvZiBkZXN0cnVj
dG9ycyBiZWluZyBjYWxsZWQgb24gaW5zdGFuY2VzIG9mCisvLyBEZXN0cnVjdG9yVHJhY2tlci4g
IE9uIFdpbmRvd3MsIHdhaXRzIGZvciB0aGUgZGVzdHJ1Y3RvciBjYWxsIHJlcG9ydHMuCitjbGFz
cyBEZXN0cnVjdG9yQ2FsbCB7CisgcHVibGljOgorICBEZXN0cnVjdG9yQ2FsbCgpIHsKKyAgICBp
bnZva2VkXyA9IGZhbHNlOworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgICB3YWl0X2V2ZW50Xy5S
ZXNldCg6OkNyZWF0ZUV2ZW50KE5VTEwsIFRSVUUsIEZBTFNFLCBOVUxMKSk7CisgICAgR1RFU1Rf
Q0hFQ0tfKHdhaXRfZXZlbnRfLkdldCgpICE9IE5VTEwpOworI2VuZGlmCisgIH0KKworICBib29s
IENoZWNrRGVzdHJveWVkKCkgY29uc3QgeworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgICBpZiAo
OjpXYWl0Rm9yU2luZ2xlT2JqZWN0KHdhaXRfZXZlbnRfLkdldCgpLCAxMDAwKSAhPSBXQUlUX09C
SkVDVF8wKQorICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgcmV0dXJuIGludm9rZWRf
OworICB9CisKKyAgdm9pZCBSZXBvcnREZXN0cm95ZWQoKSB7CisgICAgaW52b2tlZF8gPSB0cnVl
OworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgICA6OlNldEV2ZW50KHdhaXRfZXZlbnRfLkdldCgp
KTsKKyNlbmRpZgorICB9CisKKyAgc3RhdGljIHN0ZDo6dmVjdG9yPERlc3RydWN0b3JDYWxsKj4m
IExpc3QoKSB7IHJldHVybiAqbGlzdF87IH0KKworICBzdGF0aWMgdm9pZCBSZXNldExpc3QoKSB7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0Xy0+c2l6ZSgpOyArK2kpIHsKKyAgICAg
IGRlbGV0ZSBsaXN0Xy0+YXQoaSk7CisgICAgfQorICAgIGxpc3RfLT5jbGVhcigpOworICB9CisK
KyBwcml2YXRlOgorICBib29sIGludm9rZWRfOworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgQXV0
b0hhbmRsZSB3YWl0X2V2ZW50XzsKKyNlbmRpZgorICBzdGF0aWMgc3RkOjp2ZWN0b3I8RGVzdHJ1
Y3RvckNhbGwqPiogY29uc3QgbGlzdF87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOXyhEZXN0cnVjdG9yQ2FsbCk7Cit9OworCitzdGQ6OnZlY3RvcjxEZXN0cnVjdG9yQ2FsbCo+
KiBjb25zdCBEZXN0cnVjdG9yQ2FsbDo6bGlzdF8gPQorICAgIG5ldyBzdGQ6OnZlY3RvcjxEZXN0
cnVjdG9yQ2FsbCo+OworCisvLyBEZXN0cnVjdG9yVHJhY2tlciBrZWVwcyB0cmFjayBvZiB3aGV0
aGVyIGl0cyBpbnN0YW5jZXMgaGF2ZSBiZWVuCisvLyBkZXN0cm95ZWQuCitjbGFzcyBEZXN0cnVj
dG9yVHJhY2tlciB7CisgcHVibGljOgorICBEZXN0cnVjdG9yVHJhY2tlcigpIDogaW5kZXhfKEdl
dE5ld0luZGV4KCkpIHt9CisgIERlc3RydWN0b3JUcmFja2VyKGNvbnN0IERlc3RydWN0b3JUcmFj
a2VyJiAvKiByaHMgKi8pCisgICAgICA6IGluZGV4XyhHZXROZXdJbmRleCgpKSB7fQorICB+RGVz
dHJ1Y3RvclRyYWNrZXIoKSB7CisgICAgLy8gV2UgbmV2ZXIgYWNjZXNzIERlc3RydWN0b3JDYWxs
OjpMaXN0KCkgY29uY3VycmVudGx5LCBzbyB3ZSBkb24ndCBuZWVkCisgICAgLy8gdG8gcHJvdGVj
dCB0aGlzIGFjY2VzcyB3aXRoIGEgbXV0ZXguCisgICAgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKVtp
bmRleF9dLT5SZXBvcnREZXN0cm95ZWQoKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgc3RhdGljIHNp
emVfdCBHZXROZXdJbmRleCgpIHsKKyAgICBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnB1c2hfYmFj
ayhuZXcgRGVzdHJ1Y3RvckNhbGwpOworICAgIHJldHVybiBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgp
LnNpemUoKSAtIDE7CisgIH0KKyAgY29uc3Qgc2l6ZV90IGluZGV4XzsKKworICBHVEVTVF9ESVNB
TExPV19BU1NJR05fKERlc3RydWN0b3JUcmFja2VyKTsKK307CisKK3R5cGVkZWYgVGhyZWFkTG9j
YWw8RGVzdHJ1Y3RvclRyYWNrZXI+KiBUaHJlYWRQYXJhbTsKKwordm9pZCBDYWxsVGhyZWFkTG9j
YWxHZXQoVGhyZWFkUGFyYW0gdGhyZWFkX2xvY2FsX3BhcmFtKSB7CisgIHRocmVhZF9sb2NhbF9w
YXJhbS0+Z2V0KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgd2hlbiBhIFRocmVhZExvY2FsIG9iamVj
dCBkaWVzIGluIGEgdGhyZWFkLCBpdCBkZXN0cm95cworLy8gdGhlIG1hbmFnZWQgb2JqZWN0IGZv
ciB0aGF0IHRocmVhZC4KK1RFU1QoVGhyZWFkTG9jYWxUZXN0LCBEZXN0cm95c01hbmFnZWRPYmpl
Y3RGb3JPd25UaHJlYWRXaGVuRHlpbmcpIHsKKyAgRGVzdHJ1Y3RvckNhbGw6OlJlc2V0TGlzdCgp
OworCisgIHsKKyAgICBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4gdGhyZWFkX2xvY2Fs
X3RyYWNrZXI7CisgICAgQVNTRVJUX0VRKDBVLCBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnNpemUo
KSk7CisKKyAgICAvLyBUaGlzIGNyZWF0ZXMgYW5vdGhlciBEZXN0cnVjdG9yVHJhY2tlciBvYmpl
Y3QgZm9yIHRoZSBtYWluIHRocmVhZC4KKyAgICB0aHJlYWRfbG9jYWxfdHJhY2tlci5nZXQoKTsK
KyAgICBBU1NFUlRfRVEoMVUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpKTsKKyAgICBB
U1NFUlRfRkFMU0UoRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKVswXS0+Q2hlY2tEZXN0cm95ZWQoKSk7
CisgIH0KKworICAvLyBOb3cgdGhyZWFkX2xvY2FsX3RyYWNrZXIgaGFzIGRpZWQuCisgIEFTU0VS
VF9FUSgxVSwgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKS5zaXplKCkpOworICBFWFBFQ1RfVFJVRShE
ZXN0cnVjdG9yQ2FsbDo6TGlzdCgpWzBdLT5DaGVja0Rlc3Ryb3llZCgpKTsKKworICBEZXN0cnVj
dG9yQ2FsbDo6UmVzZXRMaXN0KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgd2hlbiBhIHRocmVhZCBl
eGl0cywgdGhlIHRocmVhZC1sb2NhbCBvYmplY3QgZm9yIHRoYXQKKy8vIHRocmVhZCBpcyBkZXN0
cm95ZWQuCitURVNUKFRocmVhZExvY2FsVGVzdCwgRGVzdHJveXNNYW5hZ2VkT2JqZWN0QXRUaHJl
YWRFeGl0KSB7CisgIERlc3RydWN0b3JDYWxsOjpSZXNldExpc3QoKTsKKworICB7CisgICAgVGhy
ZWFkTG9jYWw8RGVzdHJ1Y3RvclRyYWNrZXI+IHRocmVhZF9sb2NhbF90cmFja2VyOworICAgIEFT
U0VSVF9FUSgwVSwgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKS5zaXplKCkpOworCisgICAgLy8gVGhp
cyBjcmVhdGVzIGFub3RoZXIgRGVzdHJ1Y3RvclRyYWNrZXIgb2JqZWN0IGluIHRoZSBuZXcgdGhy
ZWFkLgorICAgIFRocmVhZFdpdGhQYXJhbTxUaHJlYWRQYXJhbT4gdGhyZWFkKAorICAgICAgICAm
Q2FsbFRocmVhZExvY2FsR2V0LCAmdGhyZWFkX2xvY2FsX3RyYWNrZXIsIE5VTEwpOworICAgIHRo
cmVhZC5Kb2luKCk7CisKKyAgICAvLyBUaGUgdGhyZWFkIGhhcyBleGl0ZWQsIGFuZCB3ZSBzaG91
bGQgaGF2ZSBhIERlc3Ryb3llZFRyYWNrZXIKKyAgICAvLyBpbnN0YW5jZSBjcmVhdGVkIGZvciBp
dC4gQnV0IGl0IG1heSBub3QgaGF2ZSBiZWVuIGRlc3Ryb3llZCB5ZXQuCisgICAgQVNTRVJUX0VR
KDFVLCBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnNpemUoKSk7CisgIH0KKworICAvLyBUaGUgdGhy
ZWFkIGhhcyBleGl0ZWQgYW5kIHRocmVhZF9sb2NhbF90cmFja2VyIGhhcyBkaWVkLgorICBBU1NF
UlRfRVEoMVUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpKTsKKyAgRVhQRUNUX1RSVUUo
RGVzdHJ1Y3RvckNhbGw6Okxpc3QoKVswXS0+Q2hlY2tEZXN0cm95ZWQoKSk7CisKKyAgRGVzdHJ1
Y3RvckNhbGw6OlJlc2V0TGlzdCgpOworfQorCitURVNUKFRocmVhZExvY2FsVGVzdCwgVGhyZWFk
TG9jYWxNdXRhdGlvbnNBZmZlY3RPbmx5Q3VycmVudFRocmVhZCkgeworICBUaHJlYWRMb2NhbDxz
dGQ6OnN0cmluZz4gdGhyZWFkX2xvY2FsX3N0cmluZzsKKyAgdGhyZWFkX2xvY2FsX3N0cmluZy5z
ZXQoIkZvbyIpOworICBFWFBFQ1RfU1RSRVEoIkZvbyIsIHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0
KCkuY19zdHIoKSk7CisKKyAgc3RkOjpzdHJpbmcgcmVzdWx0OworICBSdW5Gcm9tVGhyZWFkKCZS
ZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUsCisgICAgICAgICAgICAgICAgbWFrZV9wYWlyKCZ0aHJl
YWRfbG9jYWxfc3RyaW5nLCAmcmVzdWx0KSk7CisgIEVYUEVDVF9UUlVFKHJlc3VsdC5lbXB0eSgp
KTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCisKKyNpZiBHVEVTVF9PU19X
SU5ET1dTCitURVNUKFdpbmRvd3NUeXBlc1Rlc3QsIEhBTkRMRUlzVm9pZFN0YXIpIHsKKyAgU3Rh
dGljQXNzZXJ0VHlwZUVxPEhBTkRMRSwgdm9pZCo+KCk7Cit9CisKKyNpZiBHVEVTVF9PU19XSU5E
T1dTX01JTkdXICYmICFkZWZpbmVkKF9fTUlOR1c2NF9WRVJTSU9OX01BSk9SKQorVEVTVChXaW5k
b3dzVHlwZXNUZXN0LCBfQ1JJVElDQUxfU0VDVElPTklzX0NSSVRJQ0FMX1NFQ1RJT04pIHsKKyAg
U3RhdGljQXNzZXJ0VHlwZUVxPENSSVRJQ0FMX1NFQ1RJT04sIF9DUklUSUNBTF9TRUNUSU9OPigp
OworfQorI2Vsc2UKK1RFU1QoV2luZG93c1R5cGVzVGVzdCwgQ1JJVElDQUxfU0VDVElPTklzX1JU
TF9DUklUSUNBTF9TRUNUSU9OKSB7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxDUklUSUNBTF9TRUNU
SU9OLCBfUlRMX0NSSVRJQ0FMX1NFQ1RJT04+KCk7Cit9CisjZW5kaWYKKworI2VuZGlmICAvLyBH
VEVTVF9PU19XSU5ET1dTCisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorfSAgLy8gbmFtZXNw
YWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC1wcmludGVycy10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
b29nbGV0ZXN0LXByaW50ZXJzLXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWE4MzY5ZDI3ZTUwNDcwZjFl
YWJlM2FmMjgwNGQzNDU0OTNhZGVkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wcmludGVycy10ZXN0LmNjCkBAIC0wLDAgKzEsMTc0
OCBAQAorLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8v
IEdvb2dsZSBUZXN0IC0gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdv
cmsKKy8vCisvLyBUaGlzIGZpbGUgdGVzdHMgdGhlIHVuaXZlcnNhbCB2YWx1ZSBwcmludGVyLgor
CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxzdHJp
bmcuaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8ZGVxdWU+CisjaW5jbHVkZSA8
bGlzdD4KKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8c2V0PgorI2luY2x1ZGUgPHNzdHJlYW0+
CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9y
PgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCIKKyNpbmNsdWRlICJndGVzdC9n
dGVzdC5oIgorCisjaWYgR1RFU1RfSEFTX1VOT1JERVJFRF9NQVBfCisjIGluY2x1ZGUgPHVub3Jk
ZXJlZF9tYXA+ICAvLyBOT0xJTlQKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1VOT1JERVJFRF9NQVBf
CisKKyNpZiBHVEVTVF9IQVNfVU5PUkRFUkVEX1NFVF8KKyMgaW5jbHVkZSA8dW5vcmRlcmVkX3Nl
dD4gIC8vIE5PTElOVAorI2VuZGlmICAvLyBHVEVTVF9IQVNfVU5PUkRFUkVEX1NFVF8KKworI2lm
IEdURVNUX0hBU19TVERfRk9SV0FSRF9MSVNUXworIyBpbmNsdWRlIDxmb3J3YXJkX2xpc3Q+IC8v
IE5PTElOVAorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8KKworLy8gU29t
ZSB1c2VyLWRlZmluZWQgdHlwZXMgZm9yIHRlc3RpbmcgdGhlIHVuaXZlcnNhbCB2YWx1ZSBwcmlu
dGVyLgorCisvLyBBbiBhbm9ueW1vdXMgZW51bSB0eXBlLgorZW51bSBBbm9ueW1vdXNFbnVtIHsK
KyAga0FFMSA9IC0xLAorICBrQUUyID0gMQorfTsKKworLy8gQW4gZW51bSB3aXRob3V0IGEgdXNl
ci1kZWZpbmVkIHByaW50ZXIuCitlbnVtIEVudW1XaXRob3V0UHJpbnRlciB7CisgIGtFV1AxID0g
LTIsCisgIGtFV1AyID0gNDIKK307CisKKy8vIEFuIGVudW0gd2l0aCBhIDw8IG9wZXJhdG9yLgor
ZW51bSBFbnVtV2l0aFN0cmVhbWluZyB7CisgIGtFV1MxID0gMTAKK307CisKK3N0ZDo6b3N0cmVh
bSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBFbnVtV2l0aFN0cmVhbWluZyBlKSB7Cisg
IHJldHVybiBvcyA8PCAoZSA9PSBrRVdTMSA/ICJrRVdTMSIgOiAiaW52YWxpZCIpOworfQorCisv
LyBBbiBlbnVtIHdpdGggYSBQcmludFRvKCkgZnVuY3Rpb24uCitlbnVtIEVudW1XaXRoUHJpbnRU
byB7CisgIGtFV1BUMSA9IDEKK307CisKK3ZvaWQgUHJpbnRUbyhFbnVtV2l0aFByaW50VG8gZSwg
c3RkOjpvc3RyZWFtKiBvcykgeworICAqb3MgPDwgKGUgPT0ga0VXUFQxID8gImtFV1BUMSIgOiAi
aW52YWxpZCIpOworfQorCisvLyBBIGNsYXNzIGltcGxpY2l0bHkgY29udmVydGlibGUgdG8gQmln
Z2VzdEludC4KK2NsYXNzIEJpZ2dlc3RJbnRDb252ZXJ0aWJsZSB7CisgcHVibGljOgorICBvcGVy
YXRvciA6OnRlc3Rpbmc6OmludGVybmFsOjpCaWdnZXN0SW50KCkgY29uc3QgeyByZXR1cm4gNDI7
IH0KK307CisKKy8vIEEgdXNlci1kZWZpbmVkIHVucHJpbnRhYmxlIGNsYXNzIHRlbXBsYXRlIGlu
IHRoZSBnbG9iYWwgbmFtZXNwYWNlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbnBy
aW50YWJsZVRlbXBsYXRlSW5HbG9iYWwgeworIHB1YmxpYzoKKyAgVW5wcmludGFibGVUZW1wbGF0
ZUluR2xvYmFsKCkgOiB2YWx1ZV8oKSB7fQorIHByaXZhdGU6CisgIFQgdmFsdWVfOworfTsKKwor
Ly8gQSB1c2VyLWRlZmluZWQgc3RyZWFtYWJsZSB0eXBlIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNl
LgorY2xhc3MgU3RyZWFtYWJsZUluR2xvYmFsIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgflN0cmVh
bWFibGVJbkdsb2JhbCgpIHt9Cit9OworCitpbmxpbmUgdm9pZCBvcGVyYXRvcjw8KDo6c3RkOjpv
c3RyZWFtJiBvcywgY29uc3QgU3RyZWFtYWJsZUluR2xvYmFsJiAvKiB4ICovKSB7CisgIG9zIDw8
ICJTdHJlYW1hYmxlSW5HbG9iYWwiOworfQorCit2b2lkIG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJl
YW0mIG9zLCBjb25zdCBTdHJlYW1hYmxlSW5HbG9iYWwqIC8qIHggKi8pIHsKKyAgb3MgPDwgIlN0
cmVhbWFibGVJbkdsb2JhbCoiOworfQorCituYW1lc3BhY2UgZm9vIHsKKworLy8gQSB1c2VyLWRl
ZmluZWQgdW5wcmludGFibGUgdHlwZSBpbiBhIHVzZXIgbmFtZXNwYWNlLgorY2xhc3MgVW5wcmlu
dGFibGVJbkZvbyB7CisgcHVibGljOgorICBVbnByaW50YWJsZUluRm9vKCkgOiB6XygwKSB7IG1l
bWNweSh4eV8sICJceEVGXHgxMlx4MFx4MFx4MzRceEFCXHgwXHgwIiwgOCk7IH0KKyAgZG91Ymxl
IHooKSBjb25zdCB7IHJldHVybiB6XzsgfQorIHByaXZhdGU6CisgIGNoYXIgeHlfWzhdOworICBk
b3VibGUgel87Cit9OworCisvLyBBIHVzZXItZGVmaW5lZCBwcmludGFibGUgdHlwZSBpbiBhIHVz
ZXItY2hvc2VuIG5hbWVzcGFjZS4KK3N0cnVjdCBQcmludGFibGVWaWFQcmludFRvIHsKKyAgUHJp
bnRhYmxlVmlhUHJpbnRUbygpIDogdmFsdWUoKSB7fQorICBpbnQgdmFsdWU7Cit9OworCit2b2lk
IFByaW50VG8oY29uc3QgUHJpbnRhYmxlVmlhUHJpbnRUbyYgeCwgOjpzdGQ6Om9zdHJlYW0qIG9z
KSB7CisgICpvcyA8PCAiUHJpbnRhYmxlVmlhUHJpbnRUbzogIiA8PCB4LnZhbHVlOworfQorCisv
LyBBIHR5cGUgd2l0aCBhIHVzZXItZGVmaW5lZCA8PCBmb3IgcHJpbnRpbmcgaXRzIHBvaW50ZXIu
CitzdHJ1Y3QgUG9pbnRlclByaW50YWJsZSB7Cit9OworCis6OnN0ZDo6b3N0cmVhbSYgb3BlcmF0
b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBQb2ludGVyUHJpbnRhYmxlKiAvKiB4ICovKSB7CisgIHJldHVybiBvcyA8PCAiUG9pbnRlclBy
aW50YWJsZSoiOworfQorCisvLyBBIHVzZXItZGVmaW5lZCBwcmludGFibGUgY2xhc3MgdGVtcGxh
dGUgaW4gYSB1c2VyLWNob3NlbiBuYW1lc3BhY2UuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIFByaW50YWJsZVZpYVByaW50VG9UZW1wbGF0ZSB7CisgcHVibGljOgorICBleHBsaWNpdCBQ
cmludGFibGVWaWFQcmludFRvVGVtcGxhdGUoY29uc3QgVCYgYV92YWx1ZSkgOiB2YWx1ZV8oYV92
YWx1ZSkge30KKworICBjb25zdCBUJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQor
IHByaXZhdGU6CisgIFQgdmFsdWVfOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lk
IFByaW50VG8oY29uc3QgUHJpbnRhYmxlVmlhUHJpbnRUb1RlbXBsYXRlPFQ+JiB4LCA6OnN0ZDo6
b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8ICJQcmludGFibGVWaWFQcmludFRvVGVtcGxhdGU6ICIg
PDwgeC52YWx1ZSgpOworfQorCisvLyBBIHVzZXItZGVmaW5lZCBzdHJlYW1hYmxlIGNsYXNzIHRl
bXBsYXRlIGluIGEgdXNlciBuYW1lc3BhY2UuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNz
IFN0cmVhbWFibGVUZW1wbGF0ZUluRm9vIHsKKyBwdWJsaWM6CisgIFN0cmVhbWFibGVUZW1wbGF0
ZUluRm9vKCkgOiB2YWx1ZV8oKSB7fQorCisgIGNvbnN0IFQmIHZhbHVlKCkgY29uc3QgeyByZXR1
cm4gdmFsdWVfOyB9CisgcHJpdmF0ZToKKyAgVCB2YWx1ZV87Cit9OworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2lubGluZSA6OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVh
bSYgb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyZWFtYWJs
ZVRlbXBsYXRlSW5Gb288VD4mIHgpIHsKKyAgcmV0dXJuIG9zIDw8ICJTdHJlYW1hYmxlVGVtcGxh
dGVJbkZvbzogIiA8PCB4LnZhbHVlKCk7Cit9CisKKy8vIEEgdXNlci1kZWZpbmVkIHN0cmVhbWFi
bGUgYnV0IHJlY3Vyc2l2bHktZGVmaW5lZCBjb250YWluZXIgdHlwZSBpbgorLy8gYSB1c2VyIG5h
bWVzcGFjZSwgaXQgbWltaWNzIHRoZXJlZm9yZSBzdGQ6OmZpbGVzeXN0ZW06OnBhdGggb3IKKy8v
IGJvb3N0OjpmaWxlc3lzdGVtOjpwYXRoLgorY2xhc3MgUGF0aExpa2UgeworIHB1YmxpYzoKKyAg
c3RydWN0IGl0ZXJhdG9yIHsKKyAgICB0eXBlZGVmIFBhdGhMaWtlIHZhbHVlX3R5cGU7CisgIH07
CisKKyAgUGF0aExpa2UoKSB7fQorCisgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4g
aXRlcmF0b3IoKTsgfQorICBpdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBpdGVyYXRvcigp
OyB9CisKKyAgZnJpZW5kIDo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFt
JiBvcywgY29uc3QgUGF0aExpa2UmKSB7CisgICAgcmV0dXJuIG9zIDw8ICJTdHJlYW1hYmxlLVBh
dGhMaWtlIjsKKyAgfQorfTsKKworfSAgLy8gbmFtZXNwYWNlIGZvbworCituYW1lc3BhY2UgdGVz
dGluZyB7CituYW1lc3BhY2UgZ3Rlc3RfcHJpbnRlcnNfdGVzdCB7CisKK3VzaW5nIDo6c3RkOjpk
ZXF1ZTsKK3VzaW5nIDo6c3RkOjpsaXN0OwordXNpbmcgOjpzdGQ6Om1ha2VfcGFpcjsKK3VzaW5n
IDo6c3RkOjptYXA7Cit1c2luZyA6OnN0ZDo6bXVsdGltYXA7Cit1c2luZyA6OnN0ZDo6bXVsdGlz
ZXQ7Cit1c2luZyA6OnN0ZDo6cGFpcjsKK3VzaW5nIDo6c3RkOjpzZXQ7Cit1c2luZyA6OnN0ZDo6
dmVjdG9yOwordXNpbmcgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nOwordXNpbmcgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlOwordXNpbmcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJu
YWw6Ok5hdGl2ZUFycmF5OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UkU7Cit1c2luZyA6
OnRlc3Rpbmc6OmludGVybmFsOjpSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlOwordXNpbmcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nczsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVu
aXZlcnNhbFByaW50OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnRl
cjsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnQ7CisjaWYg
R1RFU1RfSEFTX1RSMV9UVVBMRSB8fCBHVEVTVF9IQVNfU1REX1RVUExFXwordXNpbmcgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzOwor
I2VuZGlmCisKKy8vIFByaW50cyBhIHZhbHVlIHRvIGEgc3RyaW5nIHVzaW5nIHRoZSB1bml2ZXJz
YWwgdmFsdWUgcHJpbnRlci4gIFRoaXMKKy8vIGlzIGEgaGVscGVyIGZvciB0ZXN0aW5nIFVuaXZl
cnNhbFByaW50ZXI8VD46OlByaW50KCkgZm9yIHZhcmlvdXMgdHlwZXMuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3N0ZDo6c3RyaW5nIFByaW50KGNvbnN0IFQmIHZhbHVlKSB7CisgIDo6c3RkOjpz
dHJpbmdzdHJlYW0gc3M7CisgIFVuaXZlcnNhbFByaW50ZXI8VD46OlByaW50KHZhbHVlLCAmc3Mp
OworICByZXR1cm4gc3Muc3RyKCk7Cit9CisKKy8vIFByaW50cyBhIHZhbHVlIHBhc3NlZCBieSBy
ZWZlcmVuY2UgdG8gYSBzdHJpbmcsIHVzaW5nIHRoZSB1bml2ZXJzYWwKKy8vIHZhbHVlIHByaW50
ZXIuICBUaGlzIGlzIGEgaGVscGVyIGZvciB0ZXN0aW5nCisvLyBVbml2ZXJzYWxQcmludGVyPFQm
Pjo6UHJpbnQoKSBmb3IgdmFyaW91cyB0eXBlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3Rk
OjpzdHJpbmcgUHJpbnRCeVJlZihjb25zdCBUJiB2YWx1ZSkgeworICA6OnN0ZDo6c3RyaW5nc3Ry
ZWFtIHNzOworICBVbml2ZXJzYWxQcmludGVyPFQmPjo6UHJpbnQodmFsdWUsICZzcyk7CisgIHJl
dHVybiBzcy5zdHIoKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgdmFyaW91cyBlbnVtIHR5cGVz
LgorCitURVNUKFByaW50RW51bVRlc3QsIEFub255bW91c0VudW0pIHsKKyAgRVhQRUNUX0VRKCIt
MSIsIFByaW50KGtBRTEpKTsKKyAgRVhQRUNUX0VRKCIxIiwgUHJpbnQoa0FFMikpOworfQorCitU
RVNUKFByaW50RW51bVRlc3QsIEVudW1XaXRob3V0UHJpbnRlcikgeworICBFWFBFQ1RfRVEoIi0y
IiwgUHJpbnQoa0VXUDEpKTsKKyAgRVhQRUNUX0VRKCI0MiIsIFByaW50KGtFV1AyKSk7Cit9CisK
K1RFU1QoUHJpbnRFbnVtVGVzdCwgRW51bVdpdGhTdHJlYW1pbmcpIHsKKyAgRVhQRUNUX0VRKCJr
RVdTMSIsIFByaW50KGtFV1MxKSk7CisgIEVYUEVDVF9FUSgiaW52YWxpZCIsIFByaW50KHN0YXRp
Y19jYXN0PEVudW1XaXRoU3RyZWFtaW5nPigwKSkpOworfQorCitURVNUKFByaW50RW51bVRlc3Qs
IEVudW1XaXRoUHJpbnRUbykgeworICBFWFBFQ1RfRVEoImtFV1BUMSIsIFByaW50KGtFV1BUMSkp
OworICBFWFBFQ1RfRVEoImludmFsaWQiLCBQcmludChzdGF0aWNfY2FzdDxFbnVtV2l0aFByaW50
VG8+KDApKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIGEgY2xhc3MgaW1wbGljaXRseSBjb252
ZXJ0aWJsZSB0byBCaWdnZXN0SW50LgorCitURVNUKFByaW50Q2xhc3NUZXN0LCBCaWdnZXN0SW50
Q29udmVydGlibGUpIHsKKyAgRVhQRUNUX0VRKCI0MiIsIFByaW50KEJpZ2dlc3RJbnRDb252ZXJ0
aWJsZSgpKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIHZhcmlvdXMgY2hhciB0eXBlcy4KKwor
Ly8gY2hhci4KK1RFU1QoUHJpbnRDaGFyVGVzdCwgUGxhaW5DaGFyKSB7CisgIEVYUEVDVF9FUSgi
J1xcMCciLCBQcmludCgnXDAnKSk7CisgIEVYUEVDVF9FUSgiJ1xcJycgKDM5LCAweDI3KSIsIFBy
aW50KCdcJycpKTsKKyAgRVhQRUNUX0VRKCInXCInICgzNCwgMHgyMikiLCBQcmludCgnIicpKTsK
KyAgRVhQRUNUX0VRKCInPycgKDYzLCAweDNGKSIsIFByaW50KCc/JykpOworICBFWFBFQ1RfRVEo
IidcXFxcJyAoOTIsIDB4NUMpIiwgUHJpbnQoJ1xcJykpOworICBFWFBFQ1RfRVEoIidcXGEnICg3
KSIsIFByaW50KCdcYScpKTsKKyAgRVhQRUNUX0VRKCInXFxiJyAoOCkiLCBQcmludCgnXGInKSk7
CisgIEVYUEVDVF9FUSgiJ1xcZicgKDEyLCAweEMpIiwgUHJpbnQoJ1xmJykpOworICBFWFBFQ1Rf
RVEoIidcXG4nICgxMCwgMHhBKSIsIFByaW50KCdcbicpKTsKKyAgRVhQRUNUX0VRKCInXFxyJyAo
MTMsIDB4RCkiLCBQcmludCgnXHInKSk7CisgIEVYUEVDVF9FUSgiJ1xcdCcgKDkpIiwgUHJpbnQo
J1x0JykpOworICBFWFBFQ1RfRVEoIidcXHYnICgxMSwgMHhCKSIsIFByaW50KCdcdicpKTsKKyAg
RVhQRUNUX0VRKCInXFx4N0YnICgxMjcpIiwgUHJpbnQoJ1x4N0YnKSk7CisgIEVYUEVDVF9FUSgi
J1xceEZGJyAoMjU1KSIsIFByaW50KCdceEZGJykpOworICBFWFBFQ1RfRVEoIicgJyAoMzIsIDB4
MjApIiwgUHJpbnQoJyAnKSk7CisgIEVYUEVDVF9FUSgiJ2EnICg5NywgMHg2MSkiLCBQcmludCgn
YScpKTsKK30KKworLy8gc2lnbmVkIGNoYXIuCitURVNUKFByaW50Q2hhclRlc3QsIFNpZ25lZENo
YXIpIHsKKyAgRVhQRUNUX0VRKCInXFwwJyIsIFByaW50KHN0YXRpY19jYXN0PHNpZ25lZCBjaGFy
PignXDAnKSkpOworICBFWFBFQ1RfRVEoIidcXHhDRScgKC01MCkiLAorICAgICAgICAgICAgUHJp
bnQoc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+KC01MCkpKTsKK30KKworLy8gdW5zaWduZWQgY2hh
ci4KK1RFU1QoUHJpbnRDaGFyVGVzdCwgVW5zaWduZWRDaGFyKSB7CisgIEVYUEVDVF9FUSgiJ1xc
MCciLCBQcmludChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPignXDAnKSkpOworICBFWFBFQ1Rf
RVEoIidiJyAoOTgsIDB4NjIpIiwKKyAgICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KCdiJykpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgb3RoZXIgc2ltcGxlLCBi
dWlsdC1pbiB0eXBlcy4KKworLy8gYm9vbC4KK1RFU1QoUHJpbnRCdWlsdEluVHlwZVRlc3QsIEJv
b2wpIHsKKyAgRVhQRUNUX0VRKCJmYWxzZSIsIFByaW50KGZhbHNlKSk7CisgIEVYUEVDVF9FUSgi
dHJ1ZSIsIFByaW50KHRydWUpKTsKK30KKworLy8gd2NoYXJfdC4KK1RFU1QoUHJpbnRCdWlsdElu
VHlwZVRlc3QsIFdjaGFyX3QpIHsKKyAgRVhQRUNUX0VRKCJMJ1xcMCciLCBQcmludChMJ1wwJykp
OworICBFWFBFQ1RfRVEoIkwnXFwnJyAoMzksIDB4MjcpIiwgUHJpbnQoTCdcJycpKTsKKyAgRVhQ
RUNUX0VRKCJMJ1wiJyAoMzQsIDB4MjIpIiwgUHJpbnQoTCciJykpOworICBFWFBFQ1RfRVEoIkwn
PycgKDYzLCAweDNGKSIsIFByaW50KEwnPycpKTsKKyAgRVhQRUNUX0VRKCJMJ1xcXFwnICg5Miwg
MHg1QykiLCBQcmludChMJ1xcJykpOworICBFWFBFQ1RfRVEoIkwnXFxhJyAoNykiLCBQcmludChM
J1xhJykpOworICBFWFBFQ1RfRVEoIkwnXFxiJyAoOCkiLCBQcmludChMJ1xiJykpOworICBFWFBF
Q1RfRVEoIkwnXFxmJyAoMTIsIDB4QykiLCBQcmludChMJ1xmJykpOworICBFWFBFQ1RfRVEoIkwn
XFxuJyAoMTAsIDB4QSkiLCBQcmludChMJ1xuJykpOworICBFWFBFQ1RfRVEoIkwnXFxyJyAoMTMs
IDB4RCkiLCBQcmludChMJ1xyJykpOworICBFWFBFQ1RfRVEoIkwnXFx0JyAoOSkiLCBQcmludChM
J1x0JykpOworICBFWFBFQ1RfRVEoIkwnXFx2JyAoMTEsIDB4QikiLCBQcmludChMJ1x2JykpOwor
ICBFWFBFQ1RfRVEoIkwnXFx4N0YnICgxMjcpIiwgUHJpbnQoTCdceDdGJykpOworICBFWFBFQ1Rf
RVEoIkwnXFx4RkYnICgyNTUpIiwgUHJpbnQoTCdceEZGJykpOworICBFWFBFQ1RfRVEoIkwnICcg
KDMyLCAweDIwKSIsIFByaW50KEwnICcpKTsKKyAgRVhQRUNUX0VRKCJMJ2EnICg5NywgMHg2MSki
LCBQcmludChMJ2EnKSk7CisgIEVYUEVDVF9FUSgiTCdcXHg1NzYnICgxMzk4KSIsIFByaW50KHN0
YXRpY19jYXN0PHdjaGFyX3Q+KDB4NTc2KSkpOworICBFWFBFQ1RfRVEoIkwnXFx4Qzc0RCcgKDUx
MDIxKSIsIFByaW50KHN0YXRpY19jYXN0PHdjaGFyX3Q+KDB4Qzc0RCkpKTsKK30KKworLy8gVGVz
dCB0aGF0IEludDY0IHByb3ZpZGVzIG1vcmUgc3RvcmFnZSB0aGFuIHdjaGFyX3QuCitURVNUKFBy
aW50VHlwZVNpemVUZXN0LCBXY2hhcl90KSB7CisgIEVYUEVDVF9MVChzaXplb2Yod2NoYXJfdCks
IHNpemVvZih0ZXN0aW5nOjppbnRlcm5hbDo6SW50NjQpKTsKK30KKworLy8gVmFyaW91cyBpbnRl
Z2VyIHR5cGVzLgorVEVTVChQcmludEJ1aWx0SW5UeXBlVGVzdCwgSW50ZWdlcikgeworICBFWFBF
Q1RfRVEoIidcXHhGRicgKDI1NSkiLCBQcmludChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigy
NTUpKSk7ICAvLyB1aW50OAorICBFWFBFQ1RfRVEoIidcXHg4MCcgKC0xMjgpIiwgUHJpbnQoc3Rh
dGljX2Nhc3Q8c2lnbmVkIGNoYXI+KC0xMjgpKSk7ICAvLyBpbnQ4CisgIEVYUEVDVF9FUSgiNjU1
MzUiLCBQcmludChVU0hSVF9NQVgpKTsgIC8vIHVpbnQxNgorICBFWFBFQ1RfRVEoIi0zMjc2OCIs
IFByaW50KFNIUlRfTUlOKSk7ICAvLyBpbnQxNgorICBFWFBFQ1RfRVEoIjQyOTQ5NjcyOTUiLCBQ
cmludChVSU5UX01BWCkpOyAgLy8gdWludDMyCisgIEVYUEVDVF9FUSgiLTIxNDc0ODM2NDgiLCBQ
cmludChJTlRfTUlOKSk7ICAvLyBpbnQzMgorICBFWFBFQ1RfRVEoIjE4NDQ2NzQ0MDczNzA5NTUx
NjE1IiwKKyAgICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0PHRlc3Rpbmc6OmludGVybmFsOjpV
SW50NjQ+KC0xKSkpOyAgLy8gdWludDY0CisgIEVYUEVDVF9FUSgiLTkyMjMzNzIwMzY4NTQ3NzU4
MDgiLAorICAgICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8dGVzdGluZzo6aW50ZXJuYWw6Oklu
dDY0PigxKSA8PCA2MykpOyAgLy8gaW50NjQKK30KKworLy8gU2l6ZSB0eXBlcy4KK1RFU1QoUHJp
bnRCdWlsdEluVHlwZVRlc3QsIFNpemVfdCkgeworICBFWFBFQ1RfRVEoIjEiLCBQcmludChzaXpl
b2YoJ2EnKSkpOyAgLy8gc2l6ZV90LgorI2lmICFHVEVTVF9PU19XSU5ET1dTCisgIC8vIFdpbmRv
d3MgaGFzIG5vIHNzaXplX3QgdHlwZS4KKyAgRVhQRUNUX0VRKCItMiIsIFByaW50KHN0YXRpY19j
YXN0PHNzaXplX3Q+KC0yKSkpOyAgLy8gc3NpemVfdC4KKyNlbmRpZiAgLy8gIUdURVNUX09TX1dJ
TkRPV1MKK30KKworLy8gRmxvYXRpbmctcG9pbnRzLgorVEVTVChQcmludEJ1aWx0SW5UeXBlVGVz
dCwgRmxvYXRpbmdQb2ludHMpIHsKKyAgRVhQRUNUX0VRKCIxLjUiLCBQcmludCgxLjVmKSk7ICAg
Ly8gZmxvYXQKKyAgRVhQRUNUX0VRKCItMi41IiwgUHJpbnQoLTIuNSkpOyAgLy8gZG91YmxlCit9
CisKKy8vIFNpbmNlIDo6c3RkOjpzdHJpbmdzdHJlYW06Om9wZXJhdG9yPDwoY29uc3Qgdm9pZCAq
KSBmb3JtYXRzIHRoZSBwb2ludGVyCisvLyBvdXRwdXQgZGlmZmVyZW50bHkgd2l0aCBkaWZmZXJl
bnQgY29tcGlsZXJzLCB3ZSBoYXZlIHRvIGNyZWF0ZSB0aGUgZXhwZWN0ZWQKKy8vIG91dHB1dCBm
aXJzdCBhbmQgdXNlIGl0IGFzIG91ciBleHBlY3RhdGlvbi4KK3N0YXRpYyBzdGQ6OnN0cmluZyBQ
cmludFBvaW50ZXIoY29uc3Qgdm9pZCogcCkgeworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIGV4cGVj
dGVkX3Jlc3VsdF9zdHJlYW07CisgIGV4cGVjdGVkX3Jlc3VsdF9zdHJlYW0gPDwgcDsKKyAgcmV0
dXJuIGV4cGVjdGVkX3Jlc3VsdF9zdHJlYW0uc3RyKCk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5n
IEMgc3RyaW5ncy4KKworLy8gY29uc3QgY2hhciouCitURVNUKFByaW50Q1N0cmluZ1Rlc3QsIENv
bnN0KSB7CisgIGNvbnN0IGNoYXIqIHAgPSAiV29ybGQiOworICBFWFBFQ1RfRVEoUHJpbnRQb2lu
dGVyKHApICsgIiBwb2ludGluZyB0byBcIldvcmxkXCIiLCBQcmludChwKSk7Cit9CisKKy8vIGNo
YXIqLgorVEVTVChQcmludENTdHJpbmdUZXN0LCBOb25Db25zdCkgeworICBjaGFyIHBbXSA9ICJI
aSI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCkgKyAiIHBvaW50aW5nIHRvIFwiSGlcIiIs
CisgICAgICAgICAgICBQcmludChzdGF0aWNfY2FzdDxjaGFyKj4ocCkpKTsKK30KKworLy8gTlVM
TCBDIHN0cmluZy4KK1RFU1QoUHJpbnRDU3RyaW5nVGVzdCwgTnVsbCkgeworICBjb25zdCBjaGFy
KiBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBUZXN0
cyB0aGF0IEMgc3RyaW5ncyBhcmUgZXNjYXBlZCBwcm9wZXJseS4KK1RFU1QoUHJpbnRDU3RyaW5n
VGVzdCwgRXNjYXBlc1Byb3Blcmx5KSB7CisgIGNvbnN0IGNoYXIqIHAgPSAiJ1wiP1xcXGFcYlxm
XG5cclx0XHZceDdGXHhGRiBhIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSArICIgcG9p
bnRpbmcgdG8gXCInXFxcIj9cXFxcXFxhXFxiXFxmIgorICAgICAgICAgICAgIlxcblxcclxcdFxc
dlxceDdGXFx4RkYgYVwiIiwKKyAgICAgICAgICAgIFByaW50KHApKTsKK30KKworLy8gTVNWQyBj
b21waWxlciBjYW4gYmUgY29uZmlndXJlZCB0byBkZWZpbmUgd2hhcl90IGFzIGEgdHlwZWRlZgor
Ly8gb2YgdW5zaWduZWQgc2hvcnQuIERlZmluaW5nIGFuIG92ZXJsb2FkIGZvciBjb25zdCB3Y2hh
cl90KiBpbiB0aGF0IGNhc2UKKy8vIHdvdWxkIGNhdXNlIHBvaW50ZXJzIHRvIHVuc2lnbmVkIHNo
b3J0cyBiZSBwcmludGVkIGFzIHdpZGUgc3RyaW5ncywKKy8vIHBvc3NpYmx5IGFjY2Vzc2luZyBt
b3JlIG1lbW9yeSB0aGFuIGludGVuZGVkIGFuZCBjYXVzaW5nIGludmFsaWQKKy8vIG1lbW9yeSBh
Y2Nlc3Nlcy4gTVNWQyBkZWZpbmVzIF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEIHN5bWJvbCB3aGVu
CisvLyB3Y2hhcl90IGlzIGltcGxlbWVudGVkIGFzIGEgbmF0aXZlIHR5cGUuCisjaWYgIWRlZmlu
ZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX05BVElWRV9XQ0hBUl9UX0RFRklORUQpCisKKy8vIGNv
bnN0IHdjaGFyX3QqLgorVEVTVChQcmludFdpZGVDU3RyaW5nVGVzdCwgQ29uc3QpIHsKKyAgY29u
c3Qgd2NoYXJfdCogcCA9IEwiV29ybGQiOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApICsg
IiBwb2ludGluZyB0byBMXCJXb3JsZFwiIiwgUHJpbnQocCkpOworfQorCisvLyB3Y2hhcl90Ki4K
K1RFU1QoUHJpbnRXaWRlQ1N0cmluZ1Rlc3QsIE5vbkNvbnN0KSB7CisgIHdjaGFyX3QgcFtdID0g
TCJIaSI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCkgKyAiIHBvaW50aW5nIHRvIExcIkhp
XCIiLAorICAgICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KHApKSk7Cit9CisK
Ky8vIE5VTEwgd2lkZSBDIHN0cmluZy4KK1RFU1QoUHJpbnRXaWRlQ1N0cmluZ1Rlc3QsIE51bGwp
IHsKKyAgY29uc3Qgd2NoYXJfdCogcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50
KHApKTsKK30KKworLy8gVGVzdHMgdGhhdCB3aWRlIEMgc3RyaW5ncyBhcmUgZXNjYXBlZCBwcm9w
ZXJseS4KK1RFU1QoUHJpbnRXaWRlQ1N0cmluZ1Rlc3QsIEVzY2FwZXNQcm9wZXJseSkgeworICBj
b25zdCB3Y2hhcl90IHNbXSA9IHsnXCcnLCAnIicsICc/JywgJ1xcJywgJ1xhJywgJ1xiJywgJ1xm
JywgJ1xuJywgJ1xyJywKKyAgICAgICAgICAgICAgICAgICAgICAgJ1x0JywgJ1x2JywgMHhEMywg
MHg1NzYsIDB4OEQzLCAweEM3NEQsICcgJywgJ2EnLCAnXDAnfTsKKyAgRVhQRUNUX0VRKFByaW50
UG9pbnRlcihzKSArICIgcG9pbnRpbmcgdG8gTFwiJ1xcXCI/XFxcXFxcYVxcYlxcZiIKKyAgICAg
ICAgICAgICJcXG5cXHJcXHRcXHZcXHhEM1xceDU3NlxceDhEM1xceEM3NEQgYVwiIiwKKyAgICAg
ICAgICAgIFByaW50KHN0YXRpY19jYXN0PGNvbnN0IHdjaGFyX3QqPihzKSkpOworfQorI2VuZGlm
ICAvLyBuYXRpdmUgd2NoYXJfdAorCisvLyBUZXN0cyBwcmludGluZyBwb2ludGVycyB0byBvdGhl
ciBjaGFyIHR5cGVzLgorCisvLyBzaWduZWQgY2hhciouCitURVNUKFByaW50Q2hhclBvaW50ZXJU
ZXN0LCBTaWduZWRDaGFyKSB7CisgIHNpZ25lZCBjaGFyKiBwID0gcmVpbnRlcnByZXRfY2FzdDxz
aWduZWQgY2hhcio+KDB4MTIzNCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50
KHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKwor
Ly8gY29uc3Qgc2lnbmVkIGNoYXIqLgorVEVTVChQcmludENoYXJQb2ludGVyVGVzdCwgQ29uc3RT
aWduZWRDaGFyKSB7CisgIHNpZ25lZCBjaGFyKiBwID0gcmVpbnRlcnByZXRfY2FzdDxzaWduZWQg
Y2hhcio+KDB4MTIzNCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHApKTsK
KyAgcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gdW5z
aWduZWQgY2hhciouCitURVNUKFByaW50Q2hhclBvaW50ZXJUZXN0LCBVbnNpZ25lZENoYXIpIHsK
KyAgdW5zaWduZWQgY2hhciogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KDB4
MTIzNCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5V
TEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gY29uc3QgdW5zaWdu
ZWQgY2hhciouCitURVNUKFByaW50Q2hhclBvaW50ZXJUZXN0LCBDb25zdFVuc2lnbmVkQ2hhcikg
eworICBjb25zdCB1bnNpZ25lZCBjaGFyKiBwID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyKj4oMHgxMjM0KTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQo
cCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisv
LyBUZXN0cyBwcmludGluZyBwb2ludGVycyB0byBzaW1wbGUsIGJ1aWx0LWluIHR5cGVzLgorCisv
LyBib29sKi4KK1RFU1QoUHJpbnRQb2ludGVyVG9CdWlsdEluVHlwZVRlc3QsIEJvb2wpIHsKKyAg
Ym9vbCogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Ym9vbCo+KDB4QUJDRCk7CisgIEVYUEVDVF9FUShQ
cmludFBvaW50ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVM
TCIsIFByaW50KHApKTsKK30KKworLy8gdm9pZCouCitURVNUKFByaW50UG9pbnRlclRvQnVpbHRJ
blR5cGVUZXN0LCBWb2lkKSB7CisgIHZvaWQqIHAgPSByZWludGVycHJldF9jYXN0PHZvaWQqPigw
eEFCQ0QpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7CisgIHAgPSBO
VUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9CisKKy8vIGNvbnN0IHZvaWQq
LgorVEVTVChQcmludFBvaW50ZXJUb0J1aWx0SW5UeXBlVGVzdCwgQ29uc3RWb2lkKSB7CisgIGNv
bnN0IHZvaWQqIHAgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigweEFCQ0QpOworICBF
WFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7CisgIHAgPSBOVUxMOworICBFWFBF
Q1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIHBvaW50ZXJz
IHRvIHBvaW50ZXJzLgorVEVTVChQcmludFBvaW50ZXJUb1BvaW50ZXJUZXN0LCBJbnRQb2ludGVy
UG9pbnRlcikgeworICBpbnQqKiBwID0gcmVpbnRlcnByZXRfY2FzdDxpbnQqKj4oMHhBQkNEKTsK
KyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0gTlVMTDsKKyAg
RVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBUZXN0cyBwcmludGluZyAobm9u
LW1lbWJlcikgZnVuY3Rpb24gcG9pbnRlcnMuCisKK3ZvaWQgTXlGdW5jdGlvbihpbnQgLyogbiAq
Lykge30KKworVEVTVChQcmludFBvaW50ZXJUZXN0LCBOb25NZW1iZXJGdW5jdGlvblBvaW50ZXIp
IHsKKyAgLy8gV2UgY2Fubm90IGRpcmVjdGx5IGNhc3QgJk15RnVuY3Rpb24gdG8gY29uc3Qgdm9p
ZCogYmVjYXVzZSB0aGUKKyAgLy8gc3RhbmRhcmQgZGlzYWxsb3dzIGNhc3RpbmcgYmV0d2VlbiBw
b2ludGVycyB0byBmdW5jdGlvbnMgYW5kCisgIC8vIHBvaW50ZXJzIHRvIG9iamVjdHMsIGFuZCBz
b21lIGNvbXBpbGVycyAoZS5nLiBHQ0MgMy40KSBlbmZvcmNlCisgIC8vIHRoaXMgbGltaXRhdGlv
bi4KKyAgRVhQRUNUX0VRKAorICAgICAgUHJpbnRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3Qgdm9pZCo+KAorICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8aW50ZXJuYWw6OkJpZ2dlc3RJ
bnQ+KCZNeUZ1bmN0aW9uKSkpLAorICAgICAgUHJpbnQoJk15RnVuY3Rpb24pKTsKKyAgaW50ICgq
cCkoYm9vbCkgPSBOVUxMOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHAp
KTsKK30KKworLy8gQW4gYXNzZXJ0aW9uIHByZWRpY2F0ZSBkZXRlcm1pbmluZyB3aGV0aGVyIGEg
b25lIHN0cmluZyBpcyBhIHByZWZpeCBmb3IKKy8vIGFub3RoZXIuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgU3RyaW5nVHlwZT4KK0Fzc2VydGlvblJlc3VsdCBIYXNQcmVmaXgoY29uc3QgU3RyaW5nVHlw
ZSYgc3RyLCBjb25zdCBTdHJpbmdUeXBlJiBwcmVmaXgpIHsKKyAgaWYgKHN0ci5maW5kKHByZWZp
eCwgMCkgPT0gMCkKKyAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOworCisgIGNvbnN0IGJv
b2wgaXNfd2lkZV9zdHJpbmcgPSBzaXplb2YocHJlZml4WzBdKSA+IDE7CisgIGNvbnN0IGNoYXIq
IGNvbnN0IGJlZ2luX3N0cmluZ19xdW90ZSA9IGlzX3dpZGVfc3RyaW5nID8gIkxcIiIgOiAiXCIi
OworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBiZWdpbl9zdHJpbmdfcXVv
dGUgPDwgcHJlZml4IDw8ICJcIiBpcyBub3QgYSBwcmVmaXggb2YgIgorICAgICAgPDwgYmVnaW5f
c3RyaW5nX3F1b3RlIDw8IHN0ciA8PCAiXCJcbiI7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIG1l
bWJlciB2YXJpYWJsZSBwb2ludGVycy4gIEFsdGhvdWdoIHRoZXkgYXJlIGNhbGxlZAorLy8gcG9p
bnRlcnMsIHRoZXkgZG9uJ3QgcG9pbnQgdG8gYSBsb2NhdGlvbiBpbiB0aGUgYWRkcmVzcyBzcGFj
ZS4KKy8vIFRoZWlyIHJlcHJlc2VudGF0aW9uIGlzIGltcGxlbWVudGF0aW9uLWRlZmluZWQuICBU
aHVzIHRoZXkgd2lsbCBiZQorLy8gcHJpbnRlZCBhcyByYXcgYnl0ZXMuCisKK3N0cnVjdCBGb28g
eworIHB1YmxpYzoKKyAgdmlydHVhbCB+Rm9vKCkge30KKyAgaW50IE15TWV0aG9kKGNoYXIgeCkg
eyByZXR1cm4geCArIDE7IH0KKyAgdmlydHVhbCBjaGFyIE15VmlydHVhbE1ldGhvZChpbnQgLyog
biAqLykgeyByZXR1cm4gJ2EnOyB9CisKKyAgaW50IHZhbHVlOworfTsKKworVEVTVChQcmludFBv
aW50ZXJUZXN0LCBNZW1iZXJWYXJpYWJsZVBvaW50ZXIpIHsKKyAgRVhQRUNUX1RSVUUoSGFzUHJl
Zml4KFByaW50KCZGb286OnZhbHVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFByaW50KHNp
emVvZigmRm9vOjp2YWx1ZSkpICsgIi1ieXRlIG9iamVjdCAiKSk7CisgIGludCBGb286OipwID0g
TlVMTDsgIC8vIE5PTElOVAorICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoUHJpbnQocCksCisgICAg
ICAgICAgICAgICAgICAgICAgICBQcmludChzaXplb2YocCkpICsgIi1ieXRlIG9iamVjdCAiKSk7
Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIG1lbWJlciBmdW5jdGlvbiBwb2ludGVycy4gIEFsdGhv
dWdoIHRoZXkgYXJlIGNhbGxlZAorLy8gcG9pbnRlcnMsIHRoZXkgZG9uJ3QgcG9pbnQgdG8gYSBs
b2NhdGlvbiBpbiB0aGUgYWRkcmVzcyBzcGFjZS4KKy8vIFRoZWlyIHJlcHJlc2VudGF0aW9uIGlz
IGltcGxlbWVudGF0aW9uLWRlZmluZWQuICBUaHVzIHRoZXkgd2lsbCBiZQorLy8gcHJpbnRlZCBh
cyByYXcgYnl0ZXMuCitURVNUKFByaW50UG9pbnRlclRlc3QsIE1lbWJlckZ1bmN0aW9uUG9pbnRl
cikgeworICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoUHJpbnQoJkZvbzo6TXlNZXRob2QpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgUHJpbnQoc2l6ZW9mKCZGb286Ok15TWV0aG9kKSkgKyAiLWJ5
dGUgb2JqZWN0ICIpKTsKKyAgRVhQRUNUX1RSVUUoCisgICAgICBIYXNQcmVmaXgoUHJpbnQoJkZv
bzo6TXlWaXJ0dWFsTWV0aG9kKSwKKyAgICAgICAgICAgICAgICBQcmludChzaXplb2YoKCZGb286
Ok15VmlydHVhbE1ldGhvZCkpKSArICItYnl0ZSBvYmplY3QgIikpOworICBpbnQgKEZvbzo6KnAp
KGNoYXIpID0gTlVMTDsgIC8vIE5PTElOVAorICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoUHJpbnQo
cCksCisgICAgICAgICAgICAgICAgICAgICAgICBQcmludChzaXplb2YocCkpICsgIi1ieXRlIG9i
amVjdCAiKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIEMgYXJyYXlzLgorCisvLyBUaGUgZGlm
ZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIFByaW50KCkgaXMgdGhhdCBpdCBlbnN1cmVzIHRoYXQg
dGhlCisvLyBhcmd1bWVudCBpcyBhIHJlZmVyZW5jZSB0byBhbiBhcnJheS4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBULCBzaXplX3QgTj4KK3N0ZDo6c3RyaW5nIFByaW50QXJyYXlIZWxwZXIoVCAoJmEp
W05dKSB7CisgIHJldHVybiBQcmludChhKTsKK30KKworLy8gT25lLWRpbWVuc2lvbmFsIGFycmF5
LgorVEVTVChQcmludEFycmF5VGVzdCwgT25lRGltZW5zaW9uYWxBcnJheSkgeworICBpbnQgYVs1
XSA9IHsgMSwgMiwgMywgNCwgNSB9OworICBFWFBFQ1RfRVEoInsgMSwgMiwgMywgNCwgNSB9Iiwg
UHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIFR3by1kaW1lbnNpb25hbCBhcnJheS4KK1RF
U1QoUHJpbnRBcnJheVRlc3QsIFR3b0RpbWVuc2lvbmFsQXJyYXkpIHsKKyAgaW50IGFbMl1bNV0g
PSB7CisgICAgeyAxLCAyLCAzLCA0LCA1IH0sCisgICAgeyA2LCA3LCA4LCA5LCAwIH0KKyAgfTsK
KyAgRVhQRUNUX0VRKCJ7IHsgMSwgMiwgMywgNCwgNSB9LCB7IDYsIDcsIDgsIDksIDAgfSB9Iiwg
UHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIEFycmF5IG9mIGNvbnN0IGVsZW1lbnRzLgor
VEVTVChQcmludEFycmF5VGVzdCwgQ29uc3RBcnJheSkgeworICBjb25zdCBib29sIGFbMV0gPSB7
IGZhbHNlIH07CisgIEVYUEVDVF9FUSgieyBmYWxzZSB9IiwgUHJpbnRBcnJheUhlbHBlcihhKSk7
Cit9CisKKy8vIGNoYXIgYXJyYXkgd2l0aG91dCB0ZXJtaW5hdGluZyBOVUwuCitURVNUKFByaW50
QXJyYXlUZXN0LCBDaGFyQXJyYXlXaXRoTm9UZXJtaW5hdGluZ051bCkgeworICAvLyBBcnJheSBh
IGNvbnRhaW5zICdcMCcgaW4gdGhlIG1pZGRsZSBhbmQgZG9lc24ndCBlbmQgd2l0aCAnXDAnLgor
ICBjaGFyIGFbXSA9IHsgJ0gnLCAnXDAnLCAnaScgfTsKKyAgRVhQRUNUX0VRKCJcIkhcXDBpXCIg
KG5vIHRlcm1pbmF0aW5nIE5VTCkiLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8gY29u
c3QgY2hhciBhcnJheSB3aXRoIHRlcm1pbmF0aW5nIE5VTC4KK1RFU1QoUHJpbnRBcnJheVRlc3Qs
IENvbnN0Q2hhckFycmF5V2l0aFRlcm1pbmF0aW5nTnVsKSB7CisgIGNvbnN0IGNoYXIgYVtdID0g
IlwwSGkiOworICBFWFBFQ1RfRVEoIlwiXFwwSGlcIiIsIFByaW50QXJyYXlIZWxwZXIoYSkpOwor
fQorCisvLyBjb25zdCB3Y2hhcl90IGFycmF5IHdpdGhvdXQgdGVybWluYXRpbmcgTlVMLgorVEVT
VChQcmludEFycmF5VGVzdCwgV0NoYXJBcnJheVdpdGhOb1Rlcm1pbmF0aW5nTnVsKSB7CisgIC8v
IEFycmF5IGEgY29udGFpbnMgJ1wwJyBpbiB0aGUgbWlkZGxlIGFuZCBkb2Vzbid0IGVuZCB3aXRo
ICdcMCcuCisgIGNvbnN0IHdjaGFyX3QgYVtdID0geyBMJ0gnLCBMJ1wwJywgTCdpJyB9OworICBF
WFBFQ1RfRVEoIkxcIkhcXDBpXCIgKG5vIHRlcm1pbmF0aW5nIE5VTCkiLCBQcmludEFycmF5SGVs
cGVyKGEpKTsKK30KKworLy8gd2NoYXJfdCBhcnJheSB3aXRoIHRlcm1pbmF0aW5nIE5VTC4KK1RF
U1QoUHJpbnRBcnJheVRlc3QsIFdDb25zdENoYXJBcnJheVdpdGhUZXJtaW5hdGluZ051bCkgewor
ICBjb25zdCB3Y2hhcl90IGFbXSA9IEwiXDBIaSI7CisgIEVYUEVDVF9FUSgiTFwiXFwwSGlcIiIs
IFByaW50QXJyYXlIZWxwZXIoYSkpOworfQorCisvLyBBcnJheSBvZiBvYmplY3RzLgorVEVTVChQ
cmludEFycmF5VGVzdCwgT2JqZWN0QXJyYXkpIHsKKyAgc3RkOjpzdHJpbmcgYVszXSA9IHsiSGki
LCAiSGVsbG8iLCAiTmkgaGFvIn07CisgIEVYUEVDVF9FUSgieyBcIkhpXCIsIFwiSGVsbG9cIiwg
XCJOaSBoYW9cIiB9IiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIEFycmF5IHdpdGgg
bWFueSBlbGVtZW50cy4KK1RFU1QoUHJpbnRBcnJheVRlc3QsIEJpZ0FycmF5KSB7CisgIGludCBh
WzEwMF0gPSB7IDEsIDIsIDMgfTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDIsIDMsIDAsIDAsIDAsIDAs
IDAsIC4uLiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9IiwKKyAgICAgICAgICAgIFByaW50QXJy
YXlIZWxwZXIoYSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyA6OnN0cmluZyBhbmQgOjpzdGQ6
OnN0cmluZy4KKworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisvLyA6OnN0cmluZy4KK1RF
U1QoUHJpbnRTdHJpbmdUZXN0LCBTdHJpbmdJbkdsb2JhbE5hbWVzcGFjZSkgeworICBjb25zdCBj
aGFyIHNbXSA9ICInXCI/XFxcYVxiXGZcblwwXHJcdFx2XHg3Rlx4RkYgYSI7CisgIGNvbnN0IDo6
c3RyaW5nIHN0cihzLCBzaXplb2YocykpOworICBFWFBFQ1RfRVEoIlwiJ1xcXCI/XFxcXFxcYVxc
YlxcZlxcblxcMFxcclxcdFxcdlxceDdGXFx4RkYgYVxcMFwiIiwKKyAgICAgICAgICAgIFByaW50
KHN0cikpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCisvLyA6OnN0
ZDo6c3RyaW5nLgorVEVTVChQcmludFN0cmluZ1Rlc3QsIFN0cmluZ0luU3RkTmFtZXNwYWNlKSB7
CisgIGNvbnN0IGNoYXIgc1tdID0gIidcIj9cXFxhXGJcZlxuXDBcclx0XHZceDdGXHhGRiBhIjsK
KyAgY29uc3QgOjpzdGQ6OnN0cmluZyBzdHIocywgc2l6ZW9mKHMpKTsKKyAgRVhQRUNUX0VRKCJc
IidcXFwiP1xcXFxcXGFcXGJcXGZcXG5cXDBcXHJcXHRcXHZcXHg3RlxceEZGIGFcXDBcIiIsCisg
ICAgICAgICAgICBQcmludChzdHIpKTsKK30KKworVEVTVChQcmludFN0cmluZ1Rlc3QsIFN0cmlu
Z0FtYmlndW91c0hleCkgeworICAvLyAiXHg2QkFOQU5BIiBpcyBhbWJpZ3VvdXMsIGl0IGNhbiBi
ZSBpbnRlcnByZXRlZCBhcyBzdGFydGluZyB3aXRoIGVpdGhlciBvZjoKKyAgLy8gJ1x4NicsICdc
eDZCJywgb3IgJ1x4NkJBJy4KKworICAvLyBhIGhleCBlc2NhcGluZyBzZXF1ZW5jZSBmb2xsb3dp
bmcgYnkgYSBkZWNpbWFsIGRpZ2l0CisgIEVYUEVDVF9FUSgiXCIwXFx4MTJcIiBcIjNcIiIsIFBy
aW50KDo6c3RkOjpzdHJpbmcoIjBceDEyIiAiMyIpKSk7CisgIC8vIGEgaGV4IGVzY2FwaW5nIHNl
cXVlbmNlIGZvbGxvd2luZyBieSBhIGhleCBkaWdpdCAobG93ZXItY2FzZSkKKyAgRVhQRUNUX0VR
KCJcIm1tXFx4NlwiIFwiYmFuYW5hc1wiIiwgUHJpbnQoOjpzdGQ6OnN0cmluZygibW1ceDYiICJi
YW5hbmFzIikpKTsKKyAgLy8gYSBoZXggZXNjYXBpbmcgc2VxdWVuY2UgZm9sbG93aW5nIGJ5IGEg
aGV4IGRpZ2l0ICh1cHBlci1jYXNlKQorICBFWFBFQ1RfRVEoIlwiTk9NXFx4NlwiIFwiQkFOQU5B
XCIiLCBQcmludCg6OnN0ZDo6c3RyaW5nKCJOT01ceDYiICJCQU5BTkEiKSkpOworICAvLyBhIGhl
eCBlc2NhcGluZyBzZXF1ZW5jZSBmb2xsb3dpbmcgYnkgYSBub24teGRpZ2l0CisgIEVYUEVDVF9F
USgiXCIhXFx4NS0hXCIiLCBQcmludCg6OnN0ZDo6c3RyaW5nKCIhXHg1LSEiKSkpOworfQorCisv
LyBUZXN0cyBwcmludGluZyA6OndzdHJpbmcgYW5kIDo6c3RkOjp3c3RyaW5nLgorCisjaWYgR1RF
U1RfSEFTX0dMT0JBTF9XU1RSSU5HCisvLyA6OndzdHJpbmcuCitURVNUKFByaW50V2lkZVN0cmlu
Z1Rlc3QsIFN0cmluZ0luR2xvYmFsTmFtZXNwYWNlKSB7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0g
TCInXCI/XFxcYVxiXGZcblwwXHJcdFx2XHhEM1x4NTc2XHg4RDNceEM3NEQgYSI7CisgIGNvbnN0
IDo6d3N0cmluZyBzdHIocywgc2l6ZW9mKHMpL3NpemVvZih3Y2hhcl90KSk7CisgIEVYUEVDVF9F
USgiTFwiJ1xcXCI/XFxcXFxcYVxcYlxcZlxcblxcMFxcclxcdFxcdiIKKyAgICAgICAgICAgICJc
XHhEM1xceDU3NlxceDhEM1xceEM3NEQgYVxcMFwiIiwKKyAgICAgICAgICAgIFByaW50KHN0cikp
OworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKKworI2lmIEdURVNUX0hB
U19TVERfV1NUUklORworLy8gOjpzdGQ6OndzdHJpbmcuCitURVNUKFByaW50V2lkZVN0cmluZ1Rl
c3QsIFN0cmluZ0luU3RkTmFtZXNwYWNlKSB7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0gTCInXCI/
XFxcYVxiXGZcblwwXHJcdFx2XHhEM1x4NTc2XHg4RDNceEM3NEQgYSI7CisgIGNvbnN0IDo6c3Rk
Ojp3c3RyaW5nIHN0cihzLCBzaXplb2Yocykvc2l6ZW9mKHdjaGFyX3QpKTsKKyAgRVhQRUNUX0VR
KCJMXCInXFxcIj9cXFxcXFxhXFxiXFxmXFxuXFwwXFxyXFx0XFx2IgorICAgICAgICAgICAgIlxc
eEQzXFx4NTc2XFx4OEQzXFx4Qzc0RCBhXFwwXCIiLAorICAgICAgICAgICAgUHJpbnQoc3RyKSk7
Cit9CisKK1RFU1QoUHJpbnRXaWRlU3RyaW5nVGVzdCwgU3RyaW5nQW1iaWd1b3VzSGV4KSB7Cisg
IC8vIHNhbWUgZm9yIHdpZGUgc3RyaW5ncy4KKyAgRVhQRUNUX0VRKCJMXCIwXFx4MTJcIiBMXCIz
XCIiLCBQcmludCg6OnN0ZDo6d3N0cmluZyhMIjBceDEyIiBMIjMiKSkpOworICBFWFBFQ1RfRVEo
IkxcIm1tXFx4NlwiIExcImJhbmFuYXNcIiIsCisgICAgICAgICAgICBQcmludCg6OnN0ZDo6d3N0
cmluZyhMIm1tXHg2IiBMImJhbmFuYXMiKSkpOworICBFWFBFQ1RfRVEoIkxcIk5PTVxceDZcIiBM
XCJCQU5BTkFcIiIsCisgICAgICAgICAgICBQcmludCg6OnN0ZDo6d3N0cmluZyhMIk5PTVx4NiIg
TCJCQU5BTkEiKSkpOworICBFWFBFQ1RfRVEoIkxcIiFcXHg1LSFcIiIsIFByaW50KDo6c3RkOjp3
c3RyaW5nKEwiIVx4NS0hIikpKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RSSU5H
CisKKy8vIFRlc3RzIHByaW50aW5nIHR5cGVzIHRoYXQgc3VwcG9ydCBnZW5lcmljIHN0cmVhbWlu
ZyAoaS5lLiBzdHJlYW1pbmcKKy8vIHRvIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJh
aXRzPiBmb3IgYW55IHZhbGlkIENoYXIgYW5kCisvLyBDaGFyVHJhaXRzIHR5cGVzKS4KKworLy8g
VGVzdHMgcHJpbnRpbmcgYSBub24tdGVtcGxhdGUgdHlwZSB0aGF0IHN1cHBvcnRzIGdlbmVyaWMg
c3RyZWFtaW5nLgorCitjbGFzcyBBbGxvd3NHZW5lcmljU3RyZWFtaW5nIHt9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhciwgdHlwZW5hbWUgQ2hhclRyYWl0cz4KK3N0ZDo6YmFzaWNfb3N0cmVh
bTxDaGFyLCBDaGFyVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICBzdGQ6OmJhc2ljX29zdHJlYW08
Q2hhciwgQ2hhclRyYWl0cz4mIG9zLAorICAgIGNvbnN0IEFsbG93c0dlbmVyaWNTdHJlYW1pbmcm
IC8qIGEgKi8pIHsKKyAgcmV0dXJuIG9zIDw8ICJBbGxvd3NHZW5lcmljU3RyZWFtaW5nIjsKK30K
KworVEVTVChQcmludFR5cGVXaXRoR2VuZXJpY1N0cmVhbWluZ1Rlc3QsIE5vblRlbXBsYXRlVHlw
ZSkgeworICBBbGxvd3NHZW5lcmljU3RyZWFtaW5nIGE7CisgIEVYUEVDVF9FUSgiQWxsb3dzR2Vu
ZXJpY1N0cmVhbWluZyIsIFByaW50KGEpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgYSB0ZW1w
bGF0ZSB0eXBlIHRoYXQgc3VwcG9ydHMgZ2VuZXJpYyBzdHJlYW1pbmcuCisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorY2xhc3MgQWxsb3dzR2VuZXJpY1N0cmVhbWluZ1RlbXBsYXRlIHt9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhciwgdHlwZW5hbWUgQ2hhclRyYWl0cywgdHlwZW5hbWUgVD4K
K3N0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICBz
dGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9zLAorICAgIGNvbnN0IEFsbG93
c0dlbmVyaWNTdHJlYW1pbmdUZW1wbGF0ZTxUPiYgLyogYSAqLykgeworICByZXR1cm4gb3MgPDwg
IkFsbG93c0dlbmVyaWNTdHJlYW1pbmdUZW1wbGF0ZSI7Cit9CisKK1RFU1QoUHJpbnRUeXBlV2l0
aEdlbmVyaWNTdHJlYW1pbmdUZXN0LCBUZW1wbGF0ZVR5cGUpIHsKKyAgQWxsb3dzR2VuZXJpY1N0
cmVhbWluZ1RlbXBsYXRlPGludD4gYTsKKyAgRVhQRUNUX0VRKCJBbGxvd3NHZW5lcmljU3RyZWFt
aW5nVGVtcGxhdGUiLCBQcmludChhKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIGEgdHlwZSB0
aGF0IHN1cHBvcnRzIGdlbmVyaWMgc3RyZWFtaW5nIGFuZCBjYW4gYmUKKy8vIGltcGxpY2l0bHkg
Y29udmVydGVkIHRvIGFub3RoZXIgcHJpbnRhYmxlIHR5cGUuCisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgQWxsb3dzR2VuZXJpY1N0cmVhbWluZ0FuZEltcGxpY2l0Q29udmVyc2lvblRl
bXBsYXRlIHsKKyBwdWJsaWM6CisgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXIsIHR5cGVuYW1lIENoYXJUcmFpdHMs
IHR5cGVuYW1lIFQ+CitzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9wZXJh
dG9yPDwoCisgICAgc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcywKKyAg
ICBjb25zdCBBbGxvd3NHZW5lcmljU3RyZWFtaW5nQW5kSW1wbGljaXRDb252ZXJzaW9uVGVtcGxh
dGU8VD4mIC8qIGEgKi8pIHsKKyAgcmV0dXJuIG9zIDw8ICJBbGxvd3NHZW5lcmljU3RyZWFtaW5n
QW5kSW1wbGljaXRDb252ZXJzaW9uVGVtcGxhdGUiOworfQorCitURVNUKFByaW50VHlwZVdpdGhH
ZW5lcmljU3RyZWFtaW5nVGVzdCwgVHlwZUltcGxpY2l0bHlDb252ZXJ0aWJsZSkgeworICBBbGxv
d3NHZW5lcmljU3RyZWFtaW5nQW5kSW1wbGljaXRDb252ZXJzaW9uVGVtcGxhdGU8aW50PiBhOwor
ICBFWFBFQ1RfRVEoIkFsbG93c0dlbmVyaWNTdHJlYW1pbmdBbmRJbXBsaWNpdENvbnZlcnNpb25U
ZW1wbGF0ZSIsIFByaW50KGEpKTsKK30KKworI2lmIEdURVNUX0hBU19BQlNMCisKKy8vIFRlc3Rz
IHByaW50aW5nIDo6YWJzbDo6c3RyaW5nX3ZpZXcuCisKK1RFU1QoUHJpbnRTdHJpbmdWaWV3VGVz
dCwgU2ltcGxlU3RyaW5nVmlldykgeworICBjb25zdCA6OmFic2w6OnN0cmluZ192aWV3IHNwID0g
IkhlbGxvIjsKKyAgRVhQRUNUX0VRKCJcIkhlbGxvXCIiLCBQcmludChzcCkpOworfQorCitURVNU
KFByaW50U3RyaW5nVmlld1Rlc3QsIFVucHJpbnRhYmxlQ2hhcmFjdGVycykgeworICBjb25zdCBj
aGFyIHN0cltdID0gIk5VTCAoXDApIGFuZCBcclx0IjsKKyAgY29uc3QgOjphYnNsOjpzdHJpbmdf
dmlldyBzcChzdHIsIHNpemVvZihzdHIpIC0gMSk7CisgIEVYUEVDVF9FUSgiXCJOVUwgKFxcMCkg
YW5kIFxcclxcdFwiIiwgUHJpbnQoc3ApKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfQUJT
TAorCisvLyBUZXN0cyBwcmludGluZyBTVEwgY29udGFpbmVycy4KKworVEVTVChQcmludFN0bENv
bnRhaW5lclRlc3QsIEVtcHR5RGVxdWUpIHsKKyAgZGVxdWU8Y2hhcj4gZW1wdHk7CisgIEVYUEVD
VF9FUSgie30iLCBQcmludChlbXB0eSkpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVz
dCwgTm9uRW1wdHlEZXF1ZSkgeworICBkZXF1ZTxpbnQ+IG5vbl9lbXB0eTsKKyAgbm9uX2VtcHR5
LnB1c2hfYmFjaygxKTsKKyAgbm9uX2VtcHR5LnB1c2hfYmFjaygzKTsKKyAgRVhQRUNUX0VRKCJ7
IDEsIDMgfSIsIFByaW50KG5vbl9lbXB0eSkpOworfQorCisjaWYgR1RFU1RfSEFTX1VOT1JERVJF
RF9NQVBfCisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBPbmVFbGVtZW50SGFzaE1hcCkg
eworICA6OnN0ZDo6dW5vcmRlcmVkX21hcDxpbnQsIGNoYXI+IG1hcDE7CisgIG1hcDFbMV0gPSAn
YSc7CisgIEVYUEVDVF9FUSgieyAoMSwgJ2EnICg5NywgMHg2MSkpIH0iLCBQcmludChtYXAxKSk7
Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBIYXNoTXVsdGlNYXApIHsKKyAgOjpz
dGQ6OnVub3JkZXJlZF9tdWx0aW1hcDxpbnQsIGJvb2w+IG1hcDE7CisgIG1hcDEuaW5zZXJ0KG1h
a2VfcGFpcig1LCB0cnVlKSk7CisgIG1hcDEuaW5zZXJ0KG1ha2VfcGFpcig1LCBmYWxzZSkpOwor
CisgIC8vIEVsZW1lbnRzIG9mIGhhc2hfbXVsdGltYXAgY2FuIGJlIHByaW50ZWQgaW4gYW55IG9y
ZGVyLgorICBjb25zdCBzdGQ6OnN0cmluZyByZXN1bHQgPSBQcmludChtYXAxKTsKKyAgRVhQRUNU
X1RSVUUocmVzdWx0ID09ICJ7ICg1LCB0cnVlKSwgKDUsIGZhbHNlKSB9IiB8fAorICAgICAgICAg
ICAgICByZXN1bHQgPT0gInsgKDUsIGZhbHNlKSwgKDUsIHRydWUpIH0iKQorICAgICAgICAgICAg
ICAgICAgPDwgIiB3aGVyZSBQcmludChtYXAxKSByZXR1cm5zIFwiIiA8PCByZXN1bHQgPDwgIlwi
LiI7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1VOT1JERVJFRF9NQVBfCisKKyNpZiBHVEVT
VF9IQVNfVU5PUkRFUkVEX1NFVF8KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIEhhc2hT
ZXQpIHsKKyAgOjpzdGQ6OnVub3JkZXJlZF9zZXQ8aW50PiBzZXQxOworICBzZXQxLmluc2VydCgx
KTsKKyAgRVhQRUNUX0VRKCJ7IDEgfSIsIFByaW50KHNldDEpKTsKK30KKworVEVTVChQcmludFN0
bENvbnRhaW5lclRlc3QsIEhhc2hNdWx0aVNldCkgeworICBjb25zdCBpbnQga1NpemUgPSA1Owor
ICBpbnQgYVtrU2l6ZV0gPSB7IDEsIDEsIDIsIDUsIDEgfTsKKyAgOjpzdGQ6OnVub3JkZXJlZF9t
dWx0aXNldDxpbnQ+IHNldDEoYSwgYSArIGtTaXplKTsKKworICAvLyBFbGVtZW50cyBvZiBoYXNo
X211bHRpc2V0IGNhbiBiZSBwcmludGVkIGluIGFueSBvcmRlci4KKyAgY29uc3Qgc3RkOjpzdHJp
bmcgcmVzdWx0ID0gUHJpbnQoc2V0MSk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdGVkX3Bh
dHRlcm4gPSAieyBkLCBkLCBkLCBkLCBkIH0iOyAgLy8gZCBtZWFucyBhIGRpZ2l0LgorCisgIC8v
IFZlcmlmaWVzIHRoZSByZXN1bHQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgcGF0dGVybjsgYWxzbyBl
eHRyYWN0cworICAvLyB0aGUgbnVtYmVycyBpbiB0aGUgcmVzdWx0LgorICBBU1NFUlRfRVEoZXhw
ZWN0ZWRfcGF0dGVybi5sZW5ndGgoKSwgcmVzdWx0Lmxlbmd0aCgpKTsKKyAgc3RkOjp2ZWN0b3I8
aW50PiBudW1iZXJzOworICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSByZXN1bHQubGVuZ3RoKCk7
IGkrKykgeworICAgIGlmIChleHBlY3RlZF9wYXR0ZXJuW2ldID09ICdkJykgeworICAgICAgQVNT
RVJUX05FKGlzZGlnaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4ocmVzdWx0W2ldKSksIDAp
OworICAgICAgbnVtYmVycy5wdXNoX2JhY2socmVzdWx0W2ldIC0gJzAnKTsKKyAgICB9IGVsc2Ug
eworICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkX3BhdHRlcm5baV0sIHJlc3VsdFtpXSkgPDwgIiB3
aGVyZSByZXN1bHQgaXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgcmVzdWx0OworICAgIH0KKyAgfQorCisgIC8vIE1ha2VzIHN1cmUgdGhlIHJl
c3VsdCBjb250YWlucyB0aGUgcmlnaHQgbnVtYmVycy4KKyAgc3RkOjpzb3J0KG51bWJlcnMuYmVn
aW4oKSwgbnVtYmVycy5lbmQoKSk7CisgIHN0ZDo6c29ydChhLCBhICsga1NpemUpOworICBFWFBF
Q1RfVFJVRShzdGQ6OmVxdWFsKGEsIGEgKyBrU2l6ZSwgbnVtYmVycy5iZWdpbigpKSk7Cit9CisK
KyNlbmRpZiAgLy8gIEdURVNUX0hBU19VTk9SREVSRURfU0VUXworCitURVNUKFByaW50U3RsQ29u
dGFpbmVyVGVzdCwgTGlzdCkgeworICBjb25zdCBzdGQ6OnN0cmluZyBhW10gPSB7ImhlbGxvIiwg
IndvcmxkIn07CisgIGNvbnN0IGxpc3Q8c3RkOjpzdHJpbmc+IHN0cmluZ3MoYSwgYSArIDIpOwor
ICBFWFBFQ1RfRVEoInsgXCJoZWxsb1wiLCBcIndvcmxkXCIgfSIsIFByaW50KHN0cmluZ3MpKTsK
K30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIE1hcCkgeworICBtYXA8aW50LCBib29s
PiBtYXAxOworICBtYXAxWzFdID0gdHJ1ZTsKKyAgbWFwMVs1XSA9IGZhbHNlOworICBtYXAxWzNd
ID0gdHJ1ZTsKKyAgRVhQRUNUX0VRKCJ7ICgxLCB0cnVlKSwgKDMsIHRydWUpLCAoNSwgZmFsc2Up
IH0iLCBQcmludChtYXAxKSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBNdWx0
aU1hcCkgeworICBtdWx0aW1hcDxib29sLCBpbnQ+IG1hcDE7CisgIC8vIFRoZSBtYWtlX3BhaXIg
dGVtcGxhdGUgZnVuY3Rpb24gd291bGQgZGVkdWNlIHRoZSB0eXBlIGFzCisgIC8vIHBhaXI8Ym9v
bCwgaW50PiBoZXJlLCBhbmQgc2luY2UgdGhlIGtleSBwYXJ0IGluIGEgbXVsdGltYXAgaGFzIHRv
CisgIC8vIGJlIGNvbnN0YW50LCB3aXRob3V0IGEgdGVtcGxhdGVkIGN0b3IgaW4gdGhlIHBhaXIg
Y2xhc3MgKGFzIGluCisgIC8vIGxpYkNzdGQgb24gU29sYXJpcyksIG1ha2VfcGFpciBjYWxsIHdv
dWxkIGZhaWwgdG8gY29tcGlsZSBhcyBubworICAvLyBpbXBsaWNpdCBjb252ZXJzaW9uIGlzIGZv
dW5kLiAgVGh1cyBleHBsaWNpdCB0eXBlbmFtZSBpcyB1c2VkCisgIC8vIGhlcmUgaW5zdGVhZC4K
KyAgbWFwMS5pbnNlcnQocGFpcjxjb25zdCBib29sLCBpbnQ+KHRydWUsIDApKTsKKyAgbWFwMS5p
bnNlcnQocGFpcjxjb25zdCBib29sLCBpbnQ+KHRydWUsIDEpKTsKKyAgbWFwMS5pbnNlcnQocGFp
cjxjb25zdCBib29sLCBpbnQ+KGZhbHNlLCAyKSk7CisgIEVYUEVDVF9FUSgieyAoZmFsc2UsIDIp
LCAodHJ1ZSwgMCksICh0cnVlLCAxKSB9IiwgUHJpbnQobWFwMSkpOworfQorCitURVNUKFByaW50
U3RsQ29udGFpbmVyVGVzdCwgU2V0KSB7CisgIGNvbnN0IHVuc2lnbmVkIGludCBhW10gPSB7IDMs
IDAsIDUgfTsKKyAgc2V0PHVuc2lnbmVkIGludD4gc2V0MShhLCBhICsgMyk7CisgIEVYUEVDVF9F
USgieyAwLCAzLCA1IH0iLCBQcmludChzZXQxKSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWlu
ZXJUZXN0LCBNdWx0aVNldCkgeworICBjb25zdCBpbnQgYVtdID0geyAxLCAxLCAyLCA1LCAxIH07
CisgIG11bHRpc2V0PGludD4gc2V0MShhLCBhICsgNSk7CisgIEVYUEVDVF9FUSgieyAxLCAxLCAx
LCAyLCA1IH0iLCBQcmludChzZXQxKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfU1REX0ZPUldBUkRf
TElTVF8KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIFNpbmdseUxpbmtlZExpc3QpIHsK
KyAgaW50IGFbXSA9IHsgOSwgMiwgOCB9OworICBjb25zdCBzdGQ6OmZvcndhcmRfbGlzdDxpbnQ+
IGludHMoYSwgYSArIDMpOworICBFWFBFQ1RfRVEoInsgOSwgMiwgOCB9IiwgUHJpbnQoaW50cykp
OworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8KKworVEVTVChQcmlu
dFN0bENvbnRhaW5lclRlc3QsIFBhaXIpIHsKKyAgcGFpcjxjb25zdCBib29sLCBpbnQ+IHAodHJ1
ZSwgNSk7CisgIEVYUEVDVF9FUSgiKHRydWUsIDUpIiwgUHJpbnQocCkpOworfQorCitURVNUKFBy
aW50U3RsQ29udGFpbmVyVGVzdCwgVmVjdG9yKSB7CisgIHZlY3RvcjxpbnQ+IHY7CisgIHYucHVz
aF9iYWNrKDEpOworICB2LnB1c2hfYmFjaygyKTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDIgfSIsIFBy
aW50KHYpKTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIExvbmdTZXF1ZW5jZSkg
eworICBjb25zdCBpbnQgYVsxMDBdID0geyAxLCAyLCAzIH07CisgIGNvbnN0IHZlY3RvcjxpbnQ+
IHYoYSwgYSArIDEwMCk7CisgIEVYUEVDVF9FUSgieyAxLCAyLCAzLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAiCisgICAgICAgICAgICAiMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgLi4uIH0iLCBQcmludCh2KSk7Cit9CisKK1RF
U1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBOZXN0ZWRDb250YWluZXIpIHsKKyAgY29uc3QgaW50
IGExW10gPSB7IDEsIDIgfTsKKyAgY29uc3QgaW50IGEyW10gPSB7IDMsIDQsIDUgfTsKKyAgY29u
c3QgbGlzdDxpbnQ+IGwxKGExLCBhMSArIDIpOworICBjb25zdCBsaXN0PGludD4gbDIoYTIsIGEy
ICsgMyk7CisKKyAgdmVjdG9yPGxpc3Q8aW50PiA+IHY7CisgIHYucHVzaF9iYWNrKGwxKTsKKyAg
di5wdXNoX2JhY2sobDIpOworICBFWFBFQ1RfRVEoInsgeyAxLCAyIH0sIHsgMywgNCwgNSB9IH0i
LCBQcmludCh2KSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBPbmVEaW1lbnNp
b25hbE5hdGl2ZUFycmF5KSB7CisgIGNvbnN0IGludCBhWzNdID0geyAxLCAyLCAzIH07CisgIE5h
dGl2ZUFycmF5PGludD4gYihhLCAzLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOworICBF
WFBFQ1RfRVEoInsgMSwgMiwgMyB9IiwgUHJpbnQoYikpOworfQorCitURVNUKFByaW50U3RsQ29u
dGFpbmVyVGVzdCwgVHdvRGltZW5zaW9uYWxOYXRpdmVBcnJheSkgeworICBjb25zdCBpbnQgYVsy
XVszXSA9IHsgeyAxLCAyLCAzIH0sIHsgNCwgNSwgNiB9IH07CisgIE5hdGl2ZUFycmF5PGludFsz
XT4gYihhLCAyLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOworICBFWFBFQ1RfRVEoInsg
eyAxLCAyLCAzIH0sIHsgNCwgNSwgNiB9IH0iLCBQcmludChiKSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgYSBjbGFzcyBuYW1lZCBpdGVyYXRvciBpc24ndCB0cmVhdGVkIGFzIGEgY29udGFpbmVyLgor
CitzdHJ1Y3QgaXRlcmF0b3IgeworICBjaGFyIHg7Cit9OworCitURVNUKFByaW50U3RsQ29udGFp
bmVyVGVzdCwgSXRlcmF0b3IpIHsKKyAgaXRlcmF0b3IgaXQgPSB7fTsKKyAgRVhQRUNUX0VRKCIx
LWJ5dGUgb2JqZWN0IDwwMD4iLCBQcmludChpdCkpOworfQorCisvLyBUZXN0cyB0aGF0IGEgY2xh
c3MgbmFtZWQgY29uc3RfaXRlcmF0b3IgaXNuJ3QgdHJlYXRlZCBhcyBhIGNvbnRhaW5lci4KKwor
c3RydWN0IGNvbnN0X2l0ZXJhdG9yIHsKKyAgY2hhciB4OworfTsKKworVEVTVChQcmludFN0bENv
bnRhaW5lclRlc3QsIENvbnN0SXRlcmF0b3IpIHsKKyAgY29uc3RfaXRlcmF0b3IgaXQgPSB7fTsK
KyAgRVhQRUNUX0VRKCIxLWJ5dGUgb2JqZWN0IDwwMD4iLCBQcmludChpdCkpOworfQorCisjaWYg
R1RFU1RfSEFTX1RSMV9UVVBMRQorLy8gVGVzdHMgcHJpbnRpbmcgOjpzdGQ6OnRyMTo6dHVwbGVz
LgorCisvLyBUdXBsZXMgb2YgdmFyaW91cyBhcml0aWVzLgorVEVTVChQcmludFRyMVR1cGxlVGVz
dCwgVmFyaW91c1NpemVzKSB7CisgIDo6c3RkOjp0cjE6OnR1cGxlPD4gdDA7CisgIEVYUEVDVF9F
USgiKCkiLCBQcmludCh0MCkpOworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGludD4gdDEoNSk7Cisg
IEVYUEVDVF9FUSgiKDUpIiwgUHJpbnQodDEpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxjaGFy
LCBib29sPiB0MignYScsIHRydWUpOworICBFWFBFQ1RfRVEoIignYScgKDk3LCAweDYxKSwgdHJ1
ZSkiLCBQcmludCh0MikpOworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludCwgaW50PiB0
MyhmYWxzZSwgMiwgMyk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzKSIsIFByaW50KHQzKSk7
CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludD4gdDQoZmFsc2UsIDIs
IDMsIDQpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCkiLCBQcmludCh0NCkpOworCisg
IDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2w+IHQ1KGZhbHNlLCAy
LCAzLCA0LCB0cnVlKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUpIiwgUHJp
bnQodDUpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29s
LCBpbnQ+IHQ2KGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2Us
IDIsIDMsIDQsIHRydWUsIDYpIiwgUHJpbnQodDYpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxi
b29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGludD4gdDcoCisgICAgICBmYWxzZSwgMiwg
MywgNCwgdHJ1ZSwgNiwgNyk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2
LCA3KSIsIFByaW50KHQ3KSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBpbnQs
IGludCwgYm9vbCwgaW50LCBpbnQsIGJvb2w+IHQ4KAorICAgICAgZmFsc2UsIDIsIDMsIDQsIHRy
dWUsIDYsIDcsIHRydWUpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwg
NywgdHJ1ZSkiLCBQcmludCh0OCkpOworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludCwg
aW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBib29sLCBpbnQ+IHQ5KAorICAgICAgZmFsc2UsIDIs
IDMsIDQsIHRydWUsIDYsIDcsIHRydWUsIDkpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywg
NCwgdHJ1ZSwgNiwgNywgdHJ1ZSwgOSkiLCBQcmludCh0OSkpOworCisgIGNvbnN0IGNoYXIqIGNv
bnN0IHN0ciA9ICI4IjsKKyAgLy8gVkMrKyAyMDEwJ3MgaW1wbGVtZW50YXRpb24gb2YgdHVwbGUg
b2YgQysrMHggaXMgZGVmaWNpZW50LCByZXF1aXJpbmcKKyAgLy8gYW4gZXhwbGljaXQgdHlwZSBj
YXN0IG9mIE5VTEwgdG8gYmUgdXNlZC4KKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgY2hhciwg
c2hvcnQsIHRlc3Rpbmc6OmludGVybmFsOjpJbnQzMiwgIC8vIE5PTElOVAorICAgICAgICAgICAg
ICAgICAgICB0ZXN0aW5nOjppbnRlcm5hbDo6SW50NjQsIGZsb2F0LCBkb3VibGUsIGNvbnN0IGNo
YXIqLCB2b2lkKiwKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmc+CisgICAgICB0MTAo
ZmFsc2UsICdhJywgc3RhdGljX2Nhc3Q8c2hvcnQ+KDMpLCA0LCA1LCAxLjVGLCAtMi41LCBzdHIs
ICAvLyBOT0xJTlQKKyAgICAgICAgICBJbXBsaWNpdENhc3RfPHZvaWQqPihOVUxMKSwgIjEwIik7
CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAnYScgKDk3LCAweDYxKSwgMywgNCwgNSwgMS41LCAtMi41
LCAiICsgUHJpbnRQb2ludGVyKHN0cikgKworICAgICAgICAgICAgIiBwb2ludGluZyB0byBcIjhc
IiwgTlVMTCwgXCIxMFwiKSIsCisgICAgICAgICAgICBQcmludCh0MTApKTsKK30KKworLy8gTmVz
dGVkIHR1cGxlcy4KK1RFU1QoUHJpbnRUcjFUdXBsZVRlc3QsIE5lc3RlZFR1cGxlKSB7CisgIDo6
c3RkOjp0cjE6OnR1cGxlPCA6OnN0ZDo6dHIxOjp0dXBsZTxpbnQsIGJvb2w+LCBjaGFyPiBuZXN0
ZWQoCisgICAgICA6OnN0ZDo6dHIxOjptYWtlX3R1cGxlKDUsIHRydWUpLCAnYScpOworICBFWFBF
Q1RfRVEoIigoNSwgdHJ1ZSksICdhJyAoOTcsIDB4NjEpKSIsIFByaW50KG5lc3RlZCkpOworfQor
CisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUKKworI2lmIEdURVNUX0hBU19TVERfVFVQ
TEVfCisvLyBUZXN0cyBwcmludGluZyA6OnN0ZDo6dHVwbGVzLgorCisvLyBUdXBsZXMgb2YgdmFy
aW91cyBhcml0aWVzLgorVEVTVChQcmludFN0ZFR1cGxlVGVzdCwgVmFyaW91c1NpemVzKSB7Cisg
IDo6c3RkOjp0dXBsZTw+IHQwOworICBFWFBFQ1RfRVEoIigpIiwgUHJpbnQodDApKTsKKworICA6
OnN0ZDo6dHVwbGU8aW50PiB0MSg1KTsKKyAgRVhQRUNUX0VRKCIoNSkiLCBQcmludCh0MSkpOwor
CisgIDo6c3RkOjp0dXBsZTxjaGFyLCBib29sPiB0MignYScsIHRydWUpOworICBFWFBFQ1RfRVEo
IignYScgKDk3LCAweDYxKSwgdHJ1ZSkiLCBQcmludCh0MikpOworCisgIDo6c3RkOjp0dXBsZTxi
b29sLCBpbnQsIGludD4gdDMoZmFsc2UsIDIsIDMpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwg
MykiLCBQcmludCh0MykpOworCisgIDo6c3RkOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50PiB0
NChmYWxzZSwgMiwgMywgNCk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0KSIsIFByaW50
KHQ0KSk7CisKKyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2w+IHQ1KGZh
bHNlLCAyLCAzLCA0LCB0cnVlKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUp
IiwgUHJpbnQodDUpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9v
bCwgaW50PiB0NihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNik7CisgIEVYUEVDVF9FUSgiKGZhbHNl
LCAyLCAzLCA0LCB0cnVlLCA2KSIsIFByaW50KHQ2KSk7CisKKyAgOjpzdGQ6OnR1cGxlPGJvb2ws
IGludCwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50PiB0NygKKyAgICAgIGZhbHNlLCAyLCAzLCA0
LCB0cnVlLCA2LCA3KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcp
IiwgUHJpbnQodDcpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9v
bCwgaW50LCBpbnQsIGJvb2w+IHQ4KAorICAgICAgZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcs
IHRydWUpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSki
LCBQcmludCh0OCkpOworCisgIDo6c3RkOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29s
LCBpbnQsIGludCwgYm9vbCwgaW50PiB0OSgKKyAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2
LCA3LCB0cnVlLCA5KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcs
IHRydWUsIDkpIiwgUHJpbnQodDkpKTsKKworICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAiOCI7
CisgIC8vIFZDKysgMjAxMCdzIGltcGxlbWVudGF0aW9uIG9mIHR1cGxlIG9mIEMrKzB4IGlzIGRl
ZmljaWVudCwgcmVxdWlyaW5nCisgIC8vIGFuIGV4cGxpY2l0IHR5cGUgY2FzdCBvZiBOVUxMIHRv
IGJlIHVzZWQuCisgIDo6c3RkOjp0dXBsZTxib29sLCBjaGFyLCBzaG9ydCwgdGVzdGluZzo6aW50
ZXJuYWw6OkludDMyLCAgLy8gTk9MSU5UCisgICAgICAgICAgICAgICB0ZXN0aW5nOjppbnRlcm5h
bDo6SW50NjQsIGZsb2F0LCBkb3VibGUsIGNvbnN0IGNoYXIqLCB2b2lkKiwKKyAgICAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nPgorICAgICAgdDEwKGZhbHNlLCAnYScsIHN0YXRpY19jYXN0PHNob3J0
PigzKSwgNCwgNSwgMS41RiwgLTIuNSwgc3RyLCAgLy8gTk9MSU5UCisgICAgICAgICAgSW1wbGlj
aXRDYXN0Xzx2b2lkKj4oTlVMTCksICIxMCIpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgJ2EnICg5
NywgMHg2MSksIDMsIDQsIDUsIDEuNSwgLTIuNSwgIiArIFByaW50UG9pbnRlcihzdHIpICsKKyAg
ICAgICAgICAgICIgcG9pbnRpbmcgdG8gXCI4XCIsIE5VTEwsIFwiMTBcIikiLAorICAgICAgICAg
ICAgUHJpbnQodDEwKSk7Cit9CisKKy8vIE5lc3RlZCB0dXBsZXMuCitURVNUKFByaW50U3RkVHVw
bGVUZXN0LCBOZXN0ZWRUdXBsZSkgeworICA6OnN0ZDo6dHVwbGU8IDo6c3RkOjp0dXBsZTxpbnQs
IGJvb2w+LCBjaGFyPiBuZXN0ZWQoCisgICAgICA6OnN0ZDo6bWFrZV90dXBsZSg1LCB0cnVlKSwg
J2EnKTsKKyAgRVhQRUNUX0VRKCIoKDUsIHRydWUpLCAnYScgKDk3LCAweDYxKSkiLCBQcmludChu
ZXN0ZWQpKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisKKyNpZiBHVEVTVF9M
QU5HX0NYWDExCitURVNUKFByaW50TnVsbHB0clQsIEJhc2ljKSB7CisgIEVYUEVDVF9FUSgiKG51
bGxwdHIpIiwgUHJpbnQobnVsbHB0cikpOworfQorI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDEx
CisKKy8vIFRlc3RzIHByaW50aW5nIHVzZXItZGVmaW5lZCB1bnByaW50YWJsZSB0eXBlcy4KKwor
Ly8gVW5wcmludGFibGUgdHlwZXMgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCitURVNUKFByaW50
VW5wcmludGFibGVUeXBlVGVzdCwgSW5HbG9iYWxOYW1lc3BhY2UpIHsKKyAgRVhQRUNUX0VRKCIx
LWJ5dGUgb2JqZWN0IDwwMD4iLAorICAgICAgICAgICAgUHJpbnQoVW5wcmludGFibGVUZW1wbGF0
ZUluR2xvYmFsPGNoYXI+KCkpKTsKK30KKworLy8gVW5wcmludGFibGUgdHlwZXMgaW4gYSB1c2Vy
IG5hbWVzcGFjZS4KK1RFU1QoUHJpbnRVbnByaW50YWJsZVR5cGVUZXN0LCBJblVzZXJOYW1lc3Bh
Y2UpIHsKKyAgRVhQRUNUX0VRKCIxNi1ieXRlIG9iamVjdCA8RUYtMTIgMDAtMDAgMzQtQUIgMDAt
MDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDA+IiwKKyAgICAgICAgICAgIFByaW50KDo6Zm9vOjpV
bnByaW50YWJsZUluRm9vKCkpKTsKK30KKworLy8gVW5wcmludGFibGUgdHlwZXMgYXJlIHRoYXQg
dG9vIGJpZyB0byBiZSBwcmludGVkIGNvbXBsZXRlbHkuCisKK3N0cnVjdCBCaWcgeworICBCaWco
KSB7IG1lbXNldChhcnJheSwgMCwgc2l6ZW9mKGFycmF5KSk7IH0KKyAgY2hhciBhcnJheVsyNTdd
OworfTsKKworVEVTVChQcmludFVucHJpdGFibGVUeXBlVGVzdCwgQmlnT2JqZWN0KSB7CisgIEVY
UEVDVF9FUSgiMjU3LWJ5dGUgb2JqZWN0IDwwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAw
MC0wMCAiCisgICAgICAgICAgICAiMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAg
MDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgIgorICAgICAgICAgICAgIjAwLTAwIDAwLTAwIDAwLTAw
IDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwICIKKyAgICAgICAgICAg
ICIwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAuLi4gMDAtMDAgMDAtMDAgMDAt
MDAgIgorICAgICAgICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAw
LTAwIDAwLTAwIDAwLTAwIDAwLTAwICIKKyAgICAgICAgICAgICIwMC0wMCAwMC0wMCAwMC0wMCAw
MC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAiCisgICAgICAgICAgICAi
MDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDA+IiwKKyAg
ICAgICAgICAgIFByaW50KEJpZygpKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIHVzZXItZGVm
aW5lZCBzdHJlYW1hYmxlIHR5cGVzLgorCisvLyBTdHJlYW1hYmxlIHR5cGVzIGluIHRoZSBnbG9i
YWwgbmFtZXNwYWNlLgorVEVTVChQcmludFN0cmVhbWFibGVUeXBlVGVzdCwgSW5HbG9iYWxOYW1l
c3BhY2UpIHsKKyAgU3RyZWFtYWJsZUluR2xvYmFsIHg7CisgIEVYUEVDVF9FUSgiU3RyZWFtYWJs
ZUluR2xvYmFsIiwgUHJpbnQoeCkpOworICBFWFBFQ1RfRVEoIlN0cmVhbWFibGVJbkdsb2JhbCoi
LCBQcmludCgmeCkpOworfQorCisvLyBQcmludGFibGUgdGVtcGxhdGUgdHlwZXMgaW4gYSB1c2Vy
IG5hbWVzcGFjZS4KK1RFU1QoUHJpbnRTdHJlYW1hYmxlVHlwZVRlc3QsIFRlbXBsYXRlVHlwZUlu
VXNlck5hbWVzcGFjZSkgeworICBFWFBFQ1RfRVEoIlN0cmVhbWFibGVUZW1wbGF0ZUluRm9vOiAw
IiwKKyAgICAgICAgICAgIFByaW50KDo6Zm9vOjpTdHJlYW1hYmxlVGVtcGxhdGVJbkZvbzxpbnQ+
KCkpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgYSB1c2VyLWRlZmluZWQgcmVjdXJzaXZlIGNv
bnRhaW5lciB0eXBlIHRoYXQgaGFzIGEgPDwKKy8vIG9wZXJhdG9yLgorVEVTVChQcmludFN0cmVh
bWFibGVUeXBlVGVzdCwgUGF0aExpa2VJblVzZXJOYW1lc3BhY2UpIHsKKyAgOjpmb286OlBhdGhM
aWtlIHg7CisgIEVYUEVDVF9FUSgiU3RyZWFtYWJsZS1QYXRoTGlrZSIsIFByaW50KHgpKTsKKyAg
Y29uc3QgOjpmb286OlBhdGhMaWtlIGN4OworICBFWFBFQ1RfRVEoIlN0cmVhbWFibGUtUGF0aExp
a2UiLCBQcmludChjeCkpOworfQorCisvLyBUZXN0cyBwcmludGluZyB1c2VyLWRlZmluZWQgdHlw
ZXMgdGhhdCBoYXZlIGEgUHJpbnRUbygpIGZ1bmN0aW9uLgorVEVTVChQcmludFByaW50YWJsZVR5
cGVUZXN0LCBJblVzZXJOYW1lc3BhY2UpIHsKKyAgRVhQRUNUX0VRKCJQcmludGFibGVWaWFQcmlu
dFRvOiAwIiwKKyAgICAgICAgICAgIFByaW50KDo6Zm9vOjpQcmludGFibGVWaWFQcmludFRvKCkp
KTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgYSBwb2ludGVyIHRvIGEgdXNlci1kZWZpbmVkIHR5
cGUgdGhhdCBoYXMgYSA8PAorLy8gb3BlcmF0b3IgZm9yIGl0cyBwb2ludGVyLgorVEVTVChQcmlu
dFByaW50YWJsZVR5cGVUZXN0LCBQb2ludGVySW5Vc2VyTmFtZXNwYWNlKSB7CisgIDo6Zm9vOjpQ
b2ludGVyUHJpbnRhYmxlIHg7CisgIEVYUEVDVF9FUSgiUG9pbnRlclByaW50YWJsZSoiLCBQcmlu
dCgmeCkpOworfQorCisvLyBUZXN0cyBwcmludGluZyB1c2VyLWRlZmluZWQgY2xhc3MgdGVtcGxh
dGUgdGhhdCBoYXZlIGEgUHJpbnRUbygpIGZ1bmN0aW9uLgorVEVTVChQcmludFByaW50YWJsZVR5
cGVUZXN0LCBUZW1wbGF0ZUluVXNlck5hbWVzcGFjZSkgeworICBFWFBFQ1RfRVEoIlByaW50YWJs
ZVZpYVByaW50VG9UZW1wbGF0ZTogNSIsCisgICAgICAgICAgICBQcmludCg6OmZvbzo6UHJpbnRh
YmxlVmlhUHJpbnRUb1RlbXBsYXRlPGludD4oNSkpKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUg
dW5pdmVyc2FsIHByaW50ZXIgcHJpbnRzIGJvdGggdGhlIGFkZHJlc3MgYW5kIHRoZQorLy8gdmFs
dWUgb2YgYSByZWZlcmVuY2UuCitURVNUKFByaW50UmVmZXJlbmNlVGVzdCwgUHJpbnRzQWRkcmVz
c0FuZFZhbHVlKSB7CisgIGludCBuID0gNTsKKyAgRVhQRUNUX0VRKCJAIiArIFByaW50UG9pbnRl
cigmbikgKyAiIDUiLCBQcmludEJ5UmVmKG4pKTsKKworICBpbnQgYVsyXVszXSA9IHsKKyAgICB7
IDAsIDEsIDIgfSwKKyAgICB7IDMsIDQsIDUgfQorICB9OworICBFWFBFQ1RfRVEoIkAiICsgUHJp
bnRQb2ludGVyKGEpICsgIiB7IHsgMCwgMSwgMiB9LCB7IDMsIDQsIDUgfSB9IiwKKyAgICAgICAg
ICAgIFByaW50QnlSZWYoYSkpOworCisgIGNvbnN0IDo6Zm9vOjpVbnByaW50YWJsZUluRm9vIHg7
CisgIEVYUEVDVF9FUSgiQCIgKyBQcmludFBvaW50ZXIoJngpICsgIiAxNi1ieXRlIG9iamVjdCAi
CisgICAgICAgICAgICAiPEVGLTEyIDAwLTAwIDM0LUFCIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAw
IDAwLTAwPiIsCisgICAgICAgICAgICBQcmludEJ5UmVmKHgpKTsKK30KKworLy8gVGVzdHMgdGhh
dCB0aGUgdW5pdmVyc2FsIHByaW50ZXIgcHJpbnRzIGEgZnVuY3Rpb24gcG9pbnRlciBwYXNzZWQg
YnkKKy8vIHJlZmVyZW5jZS4KK1RFU1QoUHJpbnRSZWZlcmVuY2VUZXN0LCBIYW5kbGVzRnVuY3Rp
b25Qb2ludGVyKSB7CisgIHZvaWQgKCpmcCkoaW50IG4pID0gJk15RnVuY3Rpb247CisgIGNvbnN0
IHN0ZDo6c3RyaW5nIGZwX3BvaW50ZXJfc3RyaW5nID0KKyAgICAgIFByaW50UG9pbnRlcihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigmZnApKTsKKyAgLy8gV2UgY2Fubm90IGRpcmVjdGx5
IGNhc3QgJk15RnVuY3Rpb24gdG8gY29uc3Qgdm9pZCogYmVjYXVzZSB0aGUKKyAgLy8gc3RhbmRh
cmQgZGlzYWxsb3dzIGNhc3RpbmcgYmV0d2VlbiBwb2ludGVycyB0byBmdW5jdGlvbnMgYW5kCisg
IC8vIHBvaW50ZXJzIHRvIG9iamVjdHMsIGFuZCBzb21lIGNvbXBpbGVycyAoZS5nLiBHQ0MgMy40
KSBlbmZvcmNlCisgIC8vIHRoaXMgbGltaXRhdGlvbi4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgZnBf
c3RyaW5nID0gUHJpbnRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KAorICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxpbnRlcm5hbDo6QmlnZ2VzdEludD4oZnApKSk7CisgIEVYUEVD
VF9FUSgiQCIgKyBmcF9wb2ludGVyX3N0cmluZyArICIgIiArIGZwX3N0cmluZywKKyAgICAgICAg
ICAgIFByaW50QnlSZWYoZnApKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgdW5pdmVyc2FsIHBy
aW50ZXIgcHJpbnRzIGEgbWVtYmVyIGZ1bmN0aW9uIHBvaW50ZXIKKy8vIHBhc3NlZCBieSByZWZl
cmVuY2UuCitURVNUKFByaW50UmVmZXJlbmNlVGVzdCwgSGFuZGxlc01lbWJlckZ1bmN0aW9uUG9p
bnRlcikgeworICBpbnQgKEZvbzo6KnApKGNoYXIgY2gpID0gJkZvbzo6TXlNZXRob2Q7CisgIEVY
UEVDVF9UUlVFKEhhc1ByZWZpeCgKKyAgICAgIFByaW50QnlSZWYocCksCisgICAgICAiQCIgKyBQ
cmludFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oJnApKSArICIgIiArCisg
ICAgICAgICAgUHJpbnQoc2l6ZW9mKHApKSArICItYnl0ZSBvYmplY3QgIikpOworCisgIGNoYXIg
KEZvbzo6KnAyKShpbnQgbikgPSAmRm9vOjpNeVZpcnR1YWxNZXRob2Q7CisgIEVYUEVDVF9UUlVF
KEhhc1ByZWZpeCgKKyAgICAgIFByaW50QnlSZWYocDIpLAorICAgICAgIkAiICsgUHJpbnRQb2lu
dGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KCZwMikpICsgIiAiICsKKyAgICAgICAg
ICBQcmludChzaXplb2YocDIpKSArICItYnl0ZSBvYmplY3QgIikpOworfQorCisvLyBUZXN0cyB0
aGF0IHRoZSB1bml2ZXJzYWwgcHJpbnRlciBwcmludHMgYSBtZW1iZXIgdmFyaWFibGUgcG9pbnRl
cgorLy8gcGFzc2VkIGJ5IHJlZmVyZW5jZS4KK1RFU1QoUHJpbnRSZWZlcmVuY2VUZXN0LCBIYW5k
bGVzTWVtYmVyVmFyaWFibGVQb2ludGVyKSB7CisgIGludCBGb286OipwID0gJkZvbzo6dmFsdWU7
ICAvLyBOT0xJTlQKKyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KAorICAgICAgUHJpbnRCeVJlZihw
KSwKKyAgICAgICJAIiArIFByaW50UG9pbnRlcigmcCkgKyAiICIgKyBQcmludChzaXplb2YocCkp
ICsgIi1ieXRlIG9iamVjdCAiKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlKCksIHdoaWNoIGlzIHVzZWQgdG8gcHJpbnQKKy8vIGFuIG9wZXJh
bmQgaW4gYSBjb21wYXJpc29uIGFzc2VydGlvbiAoZS5nLiBBU1NFUlRfRVEpIHdoZW4gdGhlIGFz
c2VydGlvbgorLy8gZmFpbHMsIGZvcm1hdHMgdGhlIG9wZXJhbmQgaW4gdGhlIGRlc2lyZWQgd2F5
LgorCisvLyBzY2FsYXIKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVz
dCwgV29ya3NGb3JTY2FsYXIpIHsKKyAgRVhQRUNUX1NUUkVRKCIxMjMiLAorICAgICAgICAgICAg
ICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKDEyMywgMTI0KS5jX3N0cigpKTsK
K30KKworLy8gbm9uLWNoYXIgcG9pbnRlcgorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVy
ZU1lc3NhZ2VUZXN0LCBXb3Jrc0Zvck5vbkNoYXJQb2ludGVyKSB7CisgIGludCBuID0gMDsKKyAg
RVhQRUNUX0VRKFByaW50UG9pbnRlcigmbiksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2UoJm4sICZuKS5jX3N0cigpKTsKK30KKworLy8gbm9uLWNoYXIgYXJy
YXkKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgRm9ybWF0c05v
bkNoYXJBcnJheUFzUG9pbnRlcikgeworICAvLyBJbiBleHByZXNzaW9uICdhcnJheSA9PSB4Jywg
J2FycmF5JyBpcyBjb21wYXJlZCBieSBwb2ludGVyLgorICAvLyBUaGVyZWZvcmUgd2Ugd2FudCB0
byBwcmludCBhbiBhcnJheSBvcGVyYW5kIGFzIGEgcG9pbnRlci4KKyAgaW50IG5bXSA9IHsgMSwg
MiwgMyB9OworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKG4pLAorICAgICAgICAgICAgRm9ybWF0
Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKG4sIG4pLmNfc3RyKCkpOworfQorCisvLyBUZXN0
cyBmb3JtYXR0aW5nIGEgY2hhciBwb2ludGVyIHdoZW4gaXQncyBjb21wYXJlZCB3aXRoIGFub3Ro
ZXIgcG9pbnRlci4KKy8vIEluIHRoaXMgY2FzZSB3ZSB3YW50IHRvIHByaW50IGl0IGFzIGEgcmF3
IHBvaW50ZXIsIGFzIHRoZSBjb21wYXJpc29uIGlzIGJ5CisvLyBwb2ludGVyLgorCisvLyBjaGFy
IHBvaW50ZXIgdnMgcG9pbnRlcgorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2VUZXN0LCBXb3Jrc0ZvckNoYXJQb2ludGVyVnNQb2ludGVyKSB7CisgIC8vIEluIGV4cHJlc3Np
b24gJ3AgPT0geCcsIHdoZXJlICdwJyBhbmQgJ3gnIGFyZSAoY29uc3Qgb3Igbm90KSBjaGFyCisg
IC8vIHBvaW50ZXJzLCB0aGUgb3BlcmFuZHMgYXJlIGNvbXBhcmVkIGJ5IHBvaW50ZXIuICBUaGVy
ZWZvcmUgd2UKKyAgLy8gd2FudCB0byBwcmludCAncCcgYXMgYSBwb2ludGVyIGluc3RlYWQgb2Yg
YSBDIHN0cmluZyAod2UgZG9uJ3QKKyAgLy8gZXZlbiBrbm93IGlmIGl0J3Mgc3VwcG9zZWQgdG8g
cG9pbnQgdG8gYSB2YWxpZCBDIHN0cmluZykuCisKKyAgLy8gY29uc3QgY2hhcioKKyAgY29uc3Qg
Y2hhciogcyA9ICJoZWxsbyI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocyksCisgICAgICAg
ICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgcykuY19zdHIoKSk7CisK
KyAgLy8gY2hhcioKKyAgY2hhciBjaCA9ICdhJzsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcigm
Y2gpLAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKCZjaCwg
JmNoKS5jX3N0cigpKTsKK30KKworLy8gd2NoYXJfdCBwb2ludGVyIHZzIHBvaW50ZXIKK1RFU1Qo
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhclBvaW50
ZXJWc1BvaW50ZXIpIHsKKyAgLy8gSW4gZXhwcmVzc2lvbiAncCA9PSB4Jywgd2hlcmUgJ3AnIGFu
ZCAneCcgYXJlIChjb25zdCBvciBub3QpIGNoYXIKKyAgLy8gcG9pbnRlcnMsIHRoZSBvcGVyYW5k
cyBhcmUgY29tcGFyZWQgYnkgcG9pbnRlci4gIFRoZXJlZm9yZSB3ZQorICAvLyB3YW50IHRvIHBy
aW50ICdwJyBhcyBhIHBvaW50ZXIgaW5zdGVhZCBvZiBhIHdpZGUgQyBzdHJpbmcgKHdlIGRvbid0
CisgIC8vIGV2ZW4ga25vdyBpZiBpdCdzIHN1cHBvc2VkIHRvIHBvaW50IHRvIGEgdmFsaWQgd2lk
ZSBDIHN0cmluZykuCisKKyAgLy8gY29uc3Qgd2NoYXJfdCoKKyAgY29uc3Qgd2NoYXJfdCogcyA9
IEwiaGVsbG8iOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHMpLAorICAgICAgICAgICAgRm9y
bWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHMsIHMpLmNfc3RyKCkpOworCisgIC8vIHdj
aGFyX3QqCisgIHdjaGFyX3QgY2ggPSBMJ2EnOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKCZj
aCksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoJmNoLCAm
Y2gpLmNfc3RyKCkpOworfQorCisvLyBUZXN0cyBmb3JtYXR0aW5nIGEgY2hhciBwb2ludGVyIHdo
ZW4gaXQncyBjb21wYXJlZCB0byBhIHN0cmluZyBvYmplY3QuCisvLyBJbiB0aGlzIGNhc2Ugd2Ug
d2FudCB0byBwcmludCB0aGUgY2hhciBwb2ludGVyIGFzIGEgQyBzdHJpbmcuCisKKyNpZiBHVEVT
VF9IQVNfR0xPQkFMX1NUUklORworLy8gY2hhciBwb2ludGVyIHZzIDo6c3RyaW5nCitURVNUKEZv
cm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhclBvaW50ZXJW
c1N0cmluZykgeworICBjb25zdCBjaGFyKiBzID0gImhlbGxvIFwid29ybGQiOworICBFWFBFQ1Rf
U1RSRVEoIlwiaGVsbG8gXFxcIndvcmxkXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNob3Vs
ZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVN
ZXNzYWdlKHMsIDo6c3RyaW5nKCkpLmNfc3RyKCkpOworCisgIC8vIGNoYXIqCisgIGNoYXIgc3Ry
W10gPSAiaGlcMSI7CisgIGNoYXIqIHAgPSBzdHI7CisgIEVYUEVDVF9TVFJFUSgiXCJoaVxceDFc
IiIsICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAg
ICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocCwgOjpzdHJpbmcoKSkuY19z
dHIoKSk7Cit9CisjZW5kaWYKKworLy8gY2hhciBwb2ludGVyIHZzIHN0ZDo6c3RyaW5nCitURVNU
KEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhclBvaW50
ZXJWc1N0ZFN0cmluZykgeworICBjb25zdCBjaGFyKiBzID0gImhlbGxvIFwid29ybGQiOworICBF
WFBFQ1RfU1RSRVEoIlwiaGVsbG8gXFxcIndvcmxkXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50
IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZh
aWx1cmVNZXNzYWdlKHMsIDo6c3RkOjpzdHJpbmcoKSkuY19zdHIoKSk7CisKKyAgLy8gY2hhcioK
KyAgY2hhciBzdHJbXSA9ICJoaVwxIjsKKyAgY2hhciogcCA9IHN0cjsKKyAgRVhQRUNUX1NUUkVR
KCJcImhpXFx4MVwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4K
KyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShwLCA6OnN0
ZDo6c3RyaW5nKCkpLmNfc3RyKCkpOworfQorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5H
CisvLyB3Y2hhcl90IHBvaW50ZXIgdnMgOjp3c3RyaW5nCitURVNUKEZvcm1hdEZvckNvbXBhcmlz
b25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJQb2ludGVyVnNXU3RyaW5nKSB7Cisg
IGNvbnN0IHdjaGFyX3QqIHMgPSBMImhpIFwid29ybGQiOworICBFWFBFQ1RfU1RSRVEoIkxcImhp
IFxcXCJ3b3JsZFwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4K
KyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzLCA6Ondz
dHJpbmcoKSkuY19zdHIoKSk7CisKKyAgLy8gd2NoYXJfdCoKKyAgd2NoYXJfdCBzdHJbXSA9IEwi
aGlcMSI7CisgIHdjaGFyX3QqIHAgPSBzdHI7CisgIEVYUEVDVF9TVFJFUSgiTFwiaGlcXHgxXCIi
LCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAg
ICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHAsIDo6d3N0cmluZygpKS5jX3N0
cigpKTsKK30KKyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCisvLyB3Y2hhcl90
IHBvaW50ZXIgdnMgc3RkOjp3c3RyaW5nCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJl
TWVzc2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJQb2ludGVyVnNTdGRXU3RyaW5nKSB7CisgIGNvbnN0
IHdjaGFyX3QqIHMgPSBMImhpIFwid29ybGQiOworICBFWFBFQ1RfU1RSRVEoIkxcImhpIFxcXCJ3
b3JsZFwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAgICAg
ICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzLCA6OnN0ZDo6d3N0
cmluZygpKS5jX3N0cigpKTsKKworICAvLyB3Y2hhcl90KgorICB3Y2hhcl90IHN0cltdID0gTCJo
aVwxIjsKKyAgd2NoYXJfdCogcCA9IHN0cjsKKyAgRVhQRUNUX1NUUkVRKCJMXCJoaVxceDFcIiIs
ICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAg
ICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocCwgOjpzdGQ6OndzdHJpbmcoKSku
Y19zdHIoKSk7Cit9CisjZW5kaWYKKworLy8gVGVzdHMgZm9ybWF0dGluZyBhIGNoYXIgYXJyYXkg
d2hlbiBpdCdzIGNvbXBhcmVkIHdpdGggYSBwb2ludGVyIG9yIGFycmF5LgorLy8gSW4gdGhpcyBj
YXNlIHdlIHdhbnQgdG8gcHJpbnQgdGhlIGFycmF5IGFzIGEgcm93IHBvaW50ZXIsIGFzIHRoZSBj
b21wYXJpc29uCisvLyBpcyBieSBwb2ludGVyLgorCisvLyBjaGFyIGFycmF5IHZzIHBvaW50ZXIK
K1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JDaGFy
QXJyYXlWc1BvaW50ZXIpIHsKKyAgY2hhciBzdHJbXSA9ICJoaSBcIndvcmxkXCIiOworICBjaGFy
KiBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihzdHIpLAorICAgICAgICAgICAg
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgcCkuY19zdHIoKSk7Cit9CisK
Ky8vIGNoYXIgYXJyYXkgdnMgY2hhciBhcnJheQorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFp
bHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVZzQ2hhckFycmF5KSB7CisgIGNvbnN0
IGNoYXIgc3RyW10gPSAiaGkgXCJ3b3JsZFwiIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihz
dHIpLAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwg
c3RyKS5jX3N0cigpKTsKK30KKworLy8gd2NoYXJfdCBhcnJheSB2cyBwb2ludGVyCitURVNUKEZv
cm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJBcnJheVZz
UG9pbnRlcikgeworICB3Y2hhcl90IHN0cltdID0gTCJoaSBcIndvcmxkXCIiOworICB3Y2hhcl90
KiBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihzdHIpLAorICAgICAgICAgICAg
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgcCkuY19zdHIoKSk7Cit9CisK
Ky8vIHdjaGFyX3QgYXJyYXkgdnMgd2NoYXJfdCBhcnJheQorVEVTVChGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvcldDaGFyQXJyYXlWc1dDaGFyQXJyYXkpIHsK
KyAgY29uc3Qgd2NoYXJfdCBzdHJbXSA9IEwiaGkgXCJ3b3JsZFwiIjsKKyAgRVhQRUNUX0VRKFBy
aW50UG9pbnRlcihzdHIpLAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVN
ZXNzYWdlKHN0ciwgc3RyKS5jX3N0cigpKTsKK30KKworLy8gVGVzdHMgZm9ybWF0dGluZyBhIGNo
YXIgYXJyYXkgd2hlbiBpdCdzIGNvbXBhcmVkIHdpdGggYSBzdHJpbmcgb2JqZWN0LgorLy8gSW4g
dGhpcyBjYXNlIHdlIHdhbnQgdG8gcHJpbnQgdGhlIGFycmF5IGFzIGEgQyBzdHJpbmcuCisKKyNp
ZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworLy8gY2hhciBhcnJheSB2cyBzdHJpbmcKK1RFU1Qo
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JDaGFyQXJyYXlW
c1N0cmluZykgeworICBjb25zdCBjaGFyIHN0cltdID0gImhpIFwid1wwcmxkXCIiOworICBFWFBF
Q1RfU1RSRVEoIlwiaGkgXFxcIndcIiIsICAvLyBUaGUgY29udGVudCBzaG91bGQgYmUgZXNjYXBl
ZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW1iZWRkZWQgTlVMIHRlcm1p
bmF0ZXMgdGhlIHN0cmluZy4KKyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWls
dXJlTWVzc2FnZShzdHIsIDo6c3RyaW5nKCkpLmNfc3RyKCkpOworfQorI2VuZGlmCisKKy8vIGNo
YXIgYXJyYXkgdnMgc3RkOjpzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVN
ZXNzYWdlVGVzdCwgV29ya3NGb3JDaGFyQXJyYXlWc1N0ZFN0cmluZykgeworICBjb25zdCBjaGFy
IHN0cltdID0gImhpIFwid29ybGRcIiI7CisgIEVYUEVDVF9TVFJFUSgiXCJoaSBcXFwid29ybGRc
XFwiXCIiLCAgLy8gVGhlIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAg
ICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCA6OnN0ZDo6c3RyaW5nKCkp
LmNfc3RyKCkpOworfQorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCisvLyB3Y2hhcl90
IGFycmF5IHZzIHdzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdl
VGVzdCwgV29ya3NGb3JXQ2hhckFycmF5VnNXU3RyaW5nKSB7CisgIGNvbnN0IHdjaGFyX3Qgc3Ry
W10gPSBMImhpIFwid29ybGRcIiI7CisgIEVYUEVDVF9TVFJFUSgiTFwiaGkgXFxcIndvcmxkXFxc
IlwiIiwgIC8vIFRoZSBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAg
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgOjp3c3RyaW5nKCkpLmNfc3Ry
KCkpOworfQorI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKKy8vIHdjaGFyX3Qg
YXJyYXkgdnMgc3RkOjp3c3RyaW5nCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVz
c2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJBcnJheVZzU3RkV1N0cmluZykgeworICBjb25zdCB3Y2hh
cl90IHN0cltdID0gTCJoaSBcIndcMHJsZFwiIjsKKyAgRVhQRUNUX1NUUkVRKAorICAgICAgIkxc
ImhpIFxcXCJ3XCIiLCAgLy8gVGhlIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBFbWJlZGRlZCBOVUwgdGVybWluYXRlcyB0aGUgc3RyaW5nLgor
ICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgOjpzdGQ6OndzdHJp
bmcoKSkuY19zdHIoKSk7Cit9CisjZW5kaWYKKworLy8gVXNlZnVsIGZvciB0ZXN0aW5nIFByaW50
VG9TdHJpbmcoKS4gIFdlIGNhbm5vdCB1c2UgRVhQRUNUX0VRKCkKKy8vIHRoZXJlIGFzIGl0cyBp
bXBsZW1lbnRhdGlvbiB1c2VzIFByaW50VG9TdHJpbmcoKS4gIFRoZSBjYWxsZXIgbXVzdAorLy8g
ZW5zdXJlIHRoYXQgJ3ZhbHVlJyBoYXMgbm8gc2lkZSBlZmZlY3QuCisjZGVmaW5lIEVYUEVDVF9Q
UklOVF9UT19TVFJJTkdfKHZhbHVlLCBleHBlY3RlZF9zdHJpbmcpICAgICAgICAgXAorICBFWFBF
Q1RfVFJVRShQcmludFRvU3RyaW5nKHZhbHVlKSA9PSAoZXhwZWN0ZWRfc3RyaW5nKSkgICAgICAg
IFwKKyAgICAgIDw8ICIgd2hlcmUgIiAjdmFsdWUgIiBwcmludHMgYXMgIiA8PCAoUHJpbnRUb1N0
cmluZyh2YWx1ZSkpCisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIFdvcmtzRm9yU2NhbGFyKSB7
CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKDEyMywgIjEyMyIpOworfQorCitURVNUKFByaW50
VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvclBvaW50ZXJUb0NvbnN0Q2hhcikgeworICBjb25zdCBjaGFy
KiBwID0gImhlbGxvIjsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18ocCwgIlwiaGVsbG9cIiIp
OworfQorCitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvclBvaW50ZXJUb05vbkNvbnN0
Q2hhcikgeworICBjaGFyIHNbXSA9ICJoZWxsbyI7CisgIGNoYXIqIHAgPSBzOworICBFWFBFQ1Rf
UFJJTlRfVE9fU1RSSU5HXyhwLCAiXCJoZWxsb1wiIik7Cit9CisKK1RFU1QoUHJpbnRUb1N0cmlu
Z1Rlc3QsIEVzY2FwZXNGb3JQb2ludGVyVG9Db25zdENoYXIpIHsKKyAgY29uc3QgY2hhciogcCA9
ICJoZWxsb1xuIjsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18ocCwgIlwiaGVsbG9cXG5cIiIp
OworfQorCitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBFc2NhcGVzRm9yUG9pbnRlclRvTm9uQ29u
c3RDaGFyKSB7CisgIGNoYXIgc1tdID0gImhlbGxvXDEiOworICBjaGFyKiBwID0gczsKKyAgRVhQ
RUNUX1BSSU5UX1RPX1NUUklOR18ocCwgIlwiaGVsbG9cXHgxXCIiKTsKK30KKworVEVTVChQcmlu
dFRvU3RyaW5nVGVzdCwgV29ya3NGb3JBcnJheSkgeworICBpbnQgblszXSA9IHsgMSwgMiwgMyB9
OworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhuLCAieyAxLCAyLCAzIH0iKTsKK30KKworVEVT
VChQcmludFRvU3RyaW5nVGVzdCwgV29ya3NGb3JDaGFyQXJyYXkpIHsKKyAgY2hhciBzW10gPSAi
aGVsbG8iOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhzLCAiXCJoZWxsb1wiIik7Cit9CisK
K1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIFdvcmtzRm9yQ2hhckFycmF5V2l0aEVtYmVkZGVkTnVs
KSB7CisgIGNvbnN0IGNoYXIgc3RyX3dpdGhfbnVsW10gPSAiaGVsbG9cMCB3b3JsZCI7CisgIEVY
UEVDVF9QUklOVF9UT19TVFJJTkdfKHN0cl93aXRoX251bCwgIlwiaGVsbG9cXDAgd29ybGRcIiIp
OworCisgIGNoYXIgbXV0YWJsZV9zdHJfd2l0aF9udWxbXSA9ICJoZWxsb1wwIHdvcmxkIjsKKyAg
RVhQRUNUX1BSSU5UX1RPX1NUUklOR18obXV0YWJsZV9zdHJfd2l0aF9udWwsICJcImhlbGxvXFww
IHdvcmxkXCIiKTsKK30KKworICBURVNUKFByaW50VG9TdHJpbmdUZXN0LCBDb250YWluc05vbkxh
dGluKSB7CisgIC8vIFNhbml0eSB0ZXN0IHdpdGggdmFsaWQgVVRGLTguIFByaW50cyBib3RoIGlu
IGhleCBhbmQgYXMgdGV4dC4KKyAgc3RkOjpzdHJpbmcgbm9uX2FzY2lpX3N0ciA9IDo6c3RkOjpz
dHJpbmcoIuyYpOyghCA0OjMwIik7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKG5vbl9hc2Np
aV9zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcIlxceEVDXFx4OThcXHhBNFxceEVD
XFx4QTBcXHg4NCA0OjMwXCJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBBcyBU
ZXh0OiBcIuyYpOyghCA0OjMwXCIiKTsKKyAgbm9uX2FzY2lpX3N0ciA9IDo6c3RkOjpzdHJpbmco
IkZyb20gw6Qg4oCUIOG6kSIpOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhub25fYXNjaWlf
c3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiXCJGcm9tIFxceEMzXFx4QTQgXFx4RTJc
XHg4MFxceDk0IFxceEUxXFx4QkFcXHg5MVwiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4gICAgQXMgVGV4dDogXCJGcm9tIMOkIOKAlCDhupFcIiIpOworfQorCitURVNUKElzVmFsaWRV
VEY4VGVzdCwgSWxsRm9ybWVkVVRGOCkgeworICAvLyBUaGUgZm9sbG93aW5nIHRlc3Qgc3RyaW5n
cyBhcmUgaWxsLWZvcm1lZCBVVEYtOCBhbmQgYXJlIHByaW50ZWQKKyAgLy8gYXMgaGV4IG9ubHkg
KG9yIEFTQ0lJLCBpbiBjYXNlIG9mIEFTQ0lJIGJ5dGVzKSBiZWNhdXNlIElzVmFsaWRVVEY4KCkg
aXMKKyAgLy8gZXhwZWN0ZWQgdG8gZmFpbCwgdGh1cyBvdXRwdXQgZG9lcyBub3QgY29udGFpbiAi
QXMgVGV4dDoiLgorCisgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBrVGVzdGRhdGFbXVsyXSA9
IHsKKyAgICAvLyAyLWJ5dGUgbGVhZCBieXRlIGZvbGxvd2VkIGJ5IGEgc2luZ2xlLWJ5dGUgY2hh
cmFjdGVyLgorICAgIHsiXHhDM1x4NzQiLCAiXCJcXHhDM3RcIiJ9LAorICAgIC8vIFZhbGlkIDIt
Ynl0ZSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkgYW4gb3JwaGFuIHRyYWlsIGJ5dGUuCisgICAgeyJc
eEMzXHg4NFx4QTQiLCAiXCJcXHhDM1xceDg0XFx4QTRcIiJ9LAorICAgIC8vIExlYWQgYnl0ZSB3
aXRob3V0IHRyYWlsIGJ5dGUuCisgICAgeyJhYmNceEMzIiwgIlwiYWJjXFx4QzNcIiJ9LAorICAg
IC8vIDMtYnl0ZSBsZWFkIGJ5dGUsIHNpbmdsZS1ieXRlIGNoYXJhY3Rlciwgb3JwaGFuIHRyYWls
IGJ5dGUuCisgICAgeyJ4XHhFMlx4NzBceDk0IiwgIlwieFxceEUycFxceDk0XCIifSwKKyAgICAv
LyBUcnVuY2F0ZWQgMy1ieXRlIGNoYXJhY3Rlci4KKyAgICB7Ilx4RTJceDgwIiwgIlwiXFx4RTJc
XHg4MFwiIn0sCisgICAgLy8gVHJ1bmNhdGVkIDMtYnl0ZSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkg
dmFsaWQgMi1ieXRlIGNoYXIuCisgICAgeyJceEUyXHg4MFx4QzNceDg0IiwgIlwiXFx4RTJcXHg4
MFxceEMzXFx4ODRcIiJ9LAorICAgIC8vIFRydW5jYXRlZCAzLWJ5dGUgY2hhcmFjdGVyIGZvbGxv
d2VkIGJ5IGEgc2luZ2xlLWJ5dGUgY2hhcmFjdGVyLgorICAgIHsiXHhFMlx4ODBceDdBIiwgIlwi
XFx4RTJcXHg4MHpcIiJ9LAorICAgIC8vIDMtYnl0ZSBsZWFkIGJ5dGUgZm9sbG93ZWQgYnkgdmFs
aWQgMy1ieXRlIGNoYXJhY3Rlci4KKyAgICB7Ilx4RTJceEUyXHg4MFx4OTQiLCAiXCJcXHhFMlxc
eEUyXFx4ODBcXHg5NFwiIn0sCisgICAgLy8gNC1ieXRlIGxlYWQgYnl0ZSBmb2xsb3dlZCBieSB2
YWxpZCAzLWJ5dGUgY2hhcmFjdGVyLgorICAgIHsiXHhGMFx4RTJceDgwXHg5NCIsICJcIlxceEYw
XFx4RTJcXHg4MFxceDk0XCIifSwKKyAgICAvLyBUcnVuY2F0ZWQgNC1ieXRlIGNoYXJhY3Rlci4K
KyAgICB7Ilx4RjBceEUyXHg4MCIsICJcIlxceEYwXFx4RTJcXHg4MFwiIn0sCisgICAgIC8vIElu
dmFsaWQgVVRGLTggYnl0ZSBzZXF1ZW5jZXMgZW1iZWRkZWQgaW4gb3RoZXIgY2hhcnMuCisgICAg
eyJhYmNceEUyXHg4MFx4OTRceEMzXHg3NHh5YyIsICJcImFiY1xceEUyXFx4ODBcXHg5NFxceEMz
dHh5Y1wiIn0sCisgICAgeyJhYmNceEMzXHg4NFx4RTJceDgwXHhDM1x4ODR4eXoiLAorICAgICAi
XCJhYmNcXHhDM1xceDg0XFx4RTJcXHg4MFxceEMzXFx4ODR4eXpcIiJ9LAorICAgIC8vIE5vbi1z
aG9ydGVzdCBVVEYtOCBieXRlIHNlcXVlbmNlcyBhcmUgYWxzbyBpbGwtZm9ybWVkLgorICAgIC8v
IFRoZSBjbGFzc2ljczogeEMwLCB4QzEgbGVhZCBieXRlLgorICAgIHsiXHhDMFx4ODAiLCAiXCJc
XHhDMFxceDgwXCIifSwKKyAgICB7Ilx4QzFceDgxIiwgIlwiXFx4QzFcXHg4MVwiIn0sCisgICAg
Ly8gTm9uLXNob3J0ZXN0IHNlcXVlbmNlcy4KKyAgICB7Ilx4RTBceDgwXHg4MCIsICJcIlxceEUw
XFx4ODBcXHg4MFwiIn0sCisgICAgeyJceGYwXHg4MFx4ODBceDgwIiwgIlwiXFx4RjBcXHg4MFxc
eDgwXFx4ODBcIiJ9LAorICAgIC8vIExhc3QgdmFsaWQgY29kZSBwb2ludCBiZWZvcmUgc3Vycm9n
YXRlIHJhbmdlLCBzaG91bGQgYmUgcHJpbnRlZCBhcyB0ZXh0LAorICAgIC8vIHRvby4KKyAgICB7
Ilx4RURceDlGXHhCRiIsICJcIlxceEVEXFx4OUZcXHhCRlwiXG4gICAgQXMgVGV4dDogXCLtn79c
IiJ9LAorICAgIC8vIFN0YXJ0IG9mIHN1cnJvZ2F0ZSBsZWFkLiBTdXJyb2dhdGVzIGFyZSBub3Qg
cHJpbnRlZCBhcyB0ZXh0LgorICAgIHsiXHhFRFx4QTBceDgwIiwgIlwiXFx4RURcXHhBMFxceDgw
XCIifSwKKyAgICAvLyBMYXN0IG5vbi1wcml2YXRlIHN1cnJvZ2F0ZSBsZWFkLgorICAgIHsiXHhF
RFx4QURceEJGIiwgIlwiXFx4RURcXHhBRFxceEJGXCIifSwKKyAgICAvLyBGaXJzdCBwcml2YXRl
LXVzZSBzdXJyb2dhdGUgbGVhZC4KKyAgICB7Ilx4RURceEFFXHg4MCIsICJcIlxceEVEXFx4QUVc
XHg4MFwiIn0sCisgICAgLy8gTGFzdCBwcml2YXRlLXVzZSBzdXJyb2dhdGUgbGVhZC4KKyAgICB7
Ilx4RURceEFGXHhCRiIsICJcIlxceEVEXFx4QUZcXHhCRlwiIn0sCisgICAgLy8gTWlkLXBvaW50
IG9mIHN1cnJvZ2F0ZSB0cmFpbC4KKyAgICB7Ilx4RURceEIzXHhCRiIsICJcIlxceEVEXFx4QjNc
XHhCRlwiIn0sCisgICAgLy8gRmlyc3QgdmFsaWQgY29kZSBwb2ludCBhZnRlciBzdXJyb2dhdGUg
cmFuZ2UsIHNob3VsZCBiZSBwcmludGVkIGFzIHRleHQsCisgICAgLy8gdG9vLgorICAgIHsiXHhF
RVx4ODBceDgwIiwgIlwiXFx4RUVcXHg4MFxceDgwXCJcbiAgICBBcyBUZXh0OiBcIu6AgFwiIn0K
KyAgfTsKKworICBmb3IgKGludCBpID0gMDsgaSA8IGludChzaXplb2Yoa1Rlc3RkYXRhKS9zaXpl
b2Yoa1Rlc3RkYXRhWzBdKSk7ICsraSkgeworICAgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKGtU
ZXN0ZGF0YVtpXVswXSwga1Rlc3RkYXRhW2ldWzFdKTsKKyAgfQorfQorCisjdW5kZWYgRVhQRUNU
X1BSSU5UX1RPX1NUUklOR18KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VGVzdCwgV29ya3NG
b3JOb25SZWZlcmVuY2UpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2Fs
VGVyc2VQcmludCgxMjMsICZzcyk7CisgIEVYUEVDVF9FUSgiMTIzIiwgc3Muc3RyKCkpOworfQor
CitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUZXN0LCBXb3Jrc0ZvclJlZmVyZW5jZSkgeworICBj
b25zdCBpbnQmIG4gPSAxMjM7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIFVuaXZlcnNh
bFRlcnNlUHJpbnQobiwgJnNzKTsKKyAgRVhQRUNUX0VRKCIxMjMiLCBzcy5zdHIoKSk7Cit9CisK
K1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFRlc3QsIFdvcmtzRm9yQ1N0cmluZykgeworICBjb25z
dCBjaGFyKiBzMSA9ICJhYmMiOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMTsKKyAgVW5pdmVy
c2FsVGVyc2VQcmludChzMSwgJnNzMSk7CisgIEVYUEVDVF9FUSgiXCJhYmNcIiIsIHNzMS5zdHIo
KSk7CisKKyAgY2hhciogczIgPSBjb25zdF9jYXN0PGNoYXIqPihzMSk7CisgIDo6c3RkOjpzdHJp
bmdzdHJlYW0gc3MyOworICBVbml2ZXJzYWxUZXJzZVByaW50KHMyLCAmc3MyKTsKKyAgRVhQRUNU
X0VRKCJcImFiY1wiIiwgc3MyLnN0cigpKTsKKworICBjb25zdCBjaGFyKiBzMyA9IE5VTEw7Cisg
IDo6c3RkOjpzdHJpbmdzdHJlYW0gc3MzOworICBVbml2ZXJzYWxUZXJzZVByaW50KHMzLCAmc3Mz
KTsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgc3MzLnN0cigpKTsKK30KKworVEVTVChVbml2ZXJzYWxQ
cmludFRlc3QsIFdvcmtzRm9yTm9uUmVmZXJlbmNlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0g
c3M7CisgIFVuaXZlcnNhbFByaW50KDEyMywgJnNzKTsKKyAgRVhQRUNUX0VRKCIxMjMiLCBzcy5z
dHIoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsUHJpbnRUZXN0LCBXb3Jrc0ZvclJlZmVyZW5jZSkg
eworICBjb25zdCBpbnQmIG4gPSAxMjM7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIFVu
aXZlcnNhbFByaW50KG4sICZzcyk7CisgIEVYUEVDVF9FUSgiMTIzIiwgc3Muc3RyKCkpOworfQor
CitURVNUKFVuaXZlcnNhbFByaW50VGVzdCwgV29ya3NGb3JDU3RyaW5nKSB7CisgIGNvbnN0IGNo
YXIqIHMxID0gImFiYyI7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3MxOworICBVbml2ZXJzYWxQ
cmludChzMSwgJnNzMSk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIoczEpICsgIiBwb2ludGlu
ZyB0byBcImFiY1wiIiwgc3RkOjpzdHJpbmcoc3MxLnN0cigpKSk7CisKKyAgY2hhciogczIgPSBj
b25zdF9jYXN0PGNoYXIqPihzMSk7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3MyOworICBVbml2
ZXJzYWxQcmludChzMiwgJnNzMik7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIoczIpICsgIiBw
b2ludGluZyB0byBcImFiY1wiIiwgc3RkOjpzdHJpbmcoc3MyLnN0cigpKSk7CisKKyAgY29uc3Qg
Y2hhciogczMgPSBOVUxMOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMzsKKyAgVW5pdmVyc2Fs
UHJpbnQoczMsICZzczMpOworICBFWFBFQ1RfRVEoIk5VTEwiLCBzczMuc3RyKCkpOworfQorCitU
RVNUKFVuaXZlcnNhbFByaW50VGVzdCwgV29ya3NGb3JDaGFyQXJyYXkpIHsKKyAgY29uc3QgY2hh
ciBzdHJbXSA9ICJcIkxpbmVcMCAxXCJcbkxpbmUgMiI7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0g
c3MxOworICBVbml2ZXJzYWxQcmludChzdHIsICZzczEpOworICBFWFBFQ1RfRVEoIlwiXFxcIkxp
bmVcXDAgMVxcXCJcXG5MaW5lIDJcIiIsIHNzMS5zdHIoKSk7CisKKyAgY29uc3QgY2hhciBtdXRh
YmxlX3N0cltdID0gIlwiTGluZVwwIDFcIlxuTGluZSAyIjsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVh
bSBzczI7CisgIFVuaXZlcnNhbFByaW50KG11dGFibGVfc3RyLCAmc3MyKTsKKyAgRVhQRUNUX0VR
KCJcIlxcXCJMaW5lXFwwIDFcXFwiXFxuTGluZSAyXCIiLCBzczIuc3RyKCkpOworfQorCisjaWYg
R1RFU1RfSEFTX1RSMV9UVVBMRQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxk
c1RvU3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmludHNFbXB0eVR1cGxlKSB7CisgIFN0cmluZ3MgcmVz
dWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAorICAgICAgOjpz
dGQ6OnRyMTo6bWFrZV90dXBsZSgpKTsKKyAgRVhQRUNUX0VRKDB1LCByZXN1bHQuc2l6ZSgpKTsK
K30KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0
aFRyMSwgUHJpbnRzT25lVHVwbGUpIHsKKyAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJz
ZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoCisgICAgICA6OnN0ZDo6dHIxOjptYWtlX3R1cGxl
KDEpKTsKKyAgQVNTRVJUX0VRKDF1LCByZXN1bHQuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKCIxIiwg
cmVzdWx0WzBdKTsKK30KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0
cmluZ3NUZXN0V2l0aFRyMSwgUHJpbnRzVHdvVHVwbGUpIHsKKyAgU3RyaW5ncyByZXN1bHQgPSBV
bml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoCisgICAgICA6OnN0ZDo6dHIx
OjptYWtlX3R1cGxlKDEsICdhJykpOworICBBU1NFUlRfRVEoMnUsIHJlc3VsdC5zaXplKCkpOwor
ICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRbMF0pOworICBFWFBFQ1RfRVEoIidhJyAoOTcsIDB4NjEp
IiwgcmVzdWx0WzFdKTsKK30KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNU
b1N0cmluZ3NUZXN0V2l0aFRyMSwgUHJpbnRzVGVyc2VseSkgeworICBjb25zdCBpbnQgbiA9IDE7
CisgIFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJp
bmdzKAorICAgICAgOjpzdGQ6OnRyMTo6dHVwbGU8Y29uc3QgaW50JiwgY29uc3QgY2hhcio+KG4s
ICJhIikpOworICBBU1NFUlRfRVEoMnUsIHJlc3VsdC5zaXplKCkpOworICBFWFBFQ1RfRVEoIjEi
LCByZXN1bHRbMF0pOworICBFWFBFQ1RfRVEoIlwiYVwiIiwgcmVzdWx0WzFdKTsKK30KKworI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfVFIxX1RVUExFCisKKyNpZiBHVEVTVF9IQVNfU1REX1RVUExFXwor
CitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoU3Rk
LCBQcmludHNFbXB0eVR1cGxlKSB7CisgIFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQ
cmludFR1cGxlRmllbGRzVG9TdHJpbmdzKDo6c3RkOjptYWtlX3R1cGxlKCkpOworICBFWFBFQ1Rf
RVEoMHUsIHJlc3VsdC5zaXplKCkpOworfQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBs
ZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoU3RkLCBQcmludHNPbmVUdXBsZSkgeworICBTdHJpbmdz
IHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKKyAgICAg
IDo6c3RkOjptYWtlX3R1cGxlKDEpKTsKKyAgQVNTRVJUX0VRKDF1LCByZXN1bHQuc2l6ZSgpKTsK
KyAgRVhQRUNUX0VRKCIxIiwgcmVzdWx0WzBdKTsKK30KKworVEVTVChVbml2ZXJzYWxUZXJzZVBy
aW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0aFN0ZCwgUHJpbnRzVHdvVHVwbGUpIHsKKyAg
U3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3Mo
CisgICAgICA6OnN0ZDo6bWFrZV90dXBsZSgxLCAnYScpKTsKKyAgQVNTRVJUX0VRKDJ1LCByZXN1
bHQuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKCIxIiwgcmVzdWx0WzBdKTsKKyAgRVhQRUNUX0VRKCIn
YScgKDk3LCAweDYxKSIsIHJlc3VsdFsxXSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmlu
dFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhTdGQsIFByaW50c1RlcnNlbHkpIHsKKyAgY29u
c3QgaW50IG4gPSAxOworICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBs
ZUZpZWxkc1RvU3RyaW5ncygKKyAgICAgIDo6c3RkOjp0dXBsZTxjb25zdCBpbnQmLCBjb25zdCBj
aGFyKj4obiwgImEiKSk7CisgIEFTU0VSVF9FUSgydSwgcmVzdWx0LnNpemUoKSk7CisgIEVYUEVD
VF9FUSgiMSIsIHJlc3VsdFswXSk7CisgIEVYUEVDVF9FUSgiXCJhXCIiLCByZXN1bHRbMV0pOwor
fQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfVFVQTEVfCisKKyNpZiBHVEVTVF9IQVNfQUJT
TAorCitURVNUKFByaW50T3B0aW9uYWxUZXN0LCBCYXNpYykgeworICBhYnNsOjpvcHRpb25hbDxp
bnQ+IHZhbHVlOworICBFWFBFQ1RfRVEoIihudWxsb3B0KSIsIFByaW50VG9TdHJpbmcodmFsdWUp
KTsKKyAgdmFsdWUgPSB7N307CisgIEVYUEVDVF9FUSgiKDcpIiwgUHJpbnRUb1N0cmluZyh2YWx1
ZSkpOworICBFWFBFQ1RfRVEoIigxLjEpIiwgUHJpbnRUb1N0cmluZyhhYnNsOjpvcHRpb25hbDxk
b3VibGU+ezEuMX0pKTsKKyAgRVhQRUNUX0VRKCIoXCJBXCIpIiwgUHJpbnRUb1N0cmluZyhhYnNs
OjpvcHRpb25hbDxzdGQ6OnN0cmluZz57IkEifSkpOworfQorCitzdHJ1Y3QgTm9uUHJpbnRhYmxl
IHsKKyAgdW5zaWduZWQgY2hhciBjb250ZW50cyA9IDE3OworfTsKKworVEVTVChQcmludE9uZW9m
VGVzdCwgQmFzaWMpIHsKKyAgdXNpbmcgVHlwZSA9IGFic2w6OnZhcmlhbnQ8aW50LCBTdHJlYW1h
YmxlSW5HbG9iYWwsIE5vblByaW50YWJsZT47CisgIEVYUEVDVF9FUSgiKCdpbnQnIHdpdGggdmFs
dWUgNykiLCBQcmludFRvU3RyaW5nKFR5cGUoNykpKTsKKyAgRVhQRUNUX0VRKCIoJ1N0cmVhbWFi
bGVJbkdsb2JhbCcgd2l0aCB2YWx1ZSBTdHJlYW1hYmxlSW5HbG9iYWwpIiwKKyAgICAgICAgICAg
IFByaW50VG9TdHJpbmcoVHlwZShTdHJlYW1hYmxlSW5HbG9iYWx7fSkpKTsKKyAgRVhQRUNUX0VR
KAorICAgICAgIigndGVzdGluZzo6Z3Rlc3RfcHJpbnRlcnNfdGVzdDo6Tm9uUHJpbnRhYmxlJyB3
aXRoIHZhbHVlIDEtYnl0ZSBvYmplY3QgIgorICAgICAgIjwxMT4pIiwKKyAgICAgIFByaW50VG9T
dHJpbmcoVHlwZShOb25QcmludGFibGV7fSkpKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0FC
U0wKKworfSAgLy8gbmFtZXNwYWNlIGd0ZXN0X3ByaW50ZXJzX3Rlc3QKK30gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3Qtc2h1ZmZsZS10ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LXNodWZmbGUtdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NzNjYzVlY2EzZmNlNDU4YWEzYWMz
ZTM5ODUwZjQ3YmIzODJlNTViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXNodWZmbGUtdGVzdC5weQpAQCAtMCwwICsxLDMyMyBAQAor
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJWZXJpZmllcyB0aGF0
IHRlc3Qgc2h1ZmZsaW5nIHdvcmtzLiIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBndGVzdF90ZXN0
X3V0aWxzCisKKyMgQ29tbWFuZCB0byBydW4gdGhlIGdvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0XyBw
cm9ncmFtLgorQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRo
KCdnb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8nKQorCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJs
ZXMgZm9yIHRlc3Qgc2hhcmRpbmcuCitUT1RBTF9TSEFSRFNfRU5WX1ZBUiA9ICdHVEVTVF9UT1RB
TF9TSEFSRFMnCitTSEFSRF9JTkRFWF9FTlZfVkFSID0gJ0dURVNUX1NIQVJEX0lOREVYJworCitU
RVNUX0ZJTFRFUiA9ICdBKi5BOkEqLkI6QyonCisKK0FMTF9URVNUUyA9IFtdCitBQ1RJVkVfVEVT
VFMgPSBbXQorRklMVEVSRURfVEVTVFMgPSBbXQorU0hBUkRFRF9URVNUUyA9IFtdCisKK1NIVUZG
TEVEX0FMTF9URVNUUyA9IFtdCitTSFVGRkxFRF9BQ1RJVkVfVEVTVFMgPSBbXQorU0hVRkZMRURf
RklMVEVSRURfVEVTVFMgPSBbXQorU0hVRkZMRURfU0hBUkRFRF9URVNUUyA9IFtdCisKKworZGVm
IEFsc29SdW5EaXNhYmxlZFRlc3RzRmxhZygpOgorICByZXR1cm4gJy0tZ3Rlc3RfYWxzb19ydW5f
ZGlzYWJsZWRfdGVzdHMnCisKKworZGVmIEZpbHRlckZsYWcodGVzdF9maWx0ZXIpOgorICByZXR1
cm4gJy0tZ3Rlc3RfZmlsdGVyPSVzJyAlICh0ZXN0X2ZpbHRlciwpCisKKworZGVmIFJlcGVhdEZs
YWcobik6CisgIHJldHVybiAnLS1ndGVzdF9yZXBlYXQ9JXMnICUgKG4sKQorCisKK2RlZiBTaHVm
ZmxlRmxhZygpOgorICByZXR1cm4gJy0tZ3Rlc3Rfc2h1ZmZsZScKKworCitkZWYgUmFuZG9tU2Vl
ZEZsYWcobik6CisgIHJldHVybiAnLS1ndGVzdF9yYW5kb21fc2VlZD0lcycgJSAobiwpCisKKwor
ZGVmIFJ1bkFuZFJldHVybk91dHB1dChleHRyYV9lbnYsIGFyZ3MpOgorICAiIiJSdW5zIHRoZSB0
ZXN0IHByb2dyYW0gYW5kIHJldHVybnMgaXRzIG91dHB1dC4iIiIKKworICBlbnZpcm9uX2NvcHkg
PSBvcy5lbnZpcm9uLmNvcHkoKQorICBlbnZpcm9uX2NvcHkudXBkYXRlKGV4dHJhX2VudikKKwor
ICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtDT01NQU5EXSArIGFyZ3MsIGVu
dj1lbnZpcm9uX2NvcHkpLm91dHB1dAorCisKK2RlZiBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMo
ZXh0cmFfZW52LCBhcmdzKToKKyAgIiIiUnVucyB0aGUgdGVzdCBwcm9ncmFtIGFuZCByZXR1cm5z
IGEgbGlzdCBvZiB0ZXN0IGxpc3RzLgorCisgIEFyZ3M6CisgICAgZXh0cmFfZW52OiBhIG1hcCBm
cm9tIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byB0aGVpciB2YWx1ZXMKKyAgICBhcmdzOiBjb21t
YW5kIGxpbmUgZmxhZ3MgdG8gcGFzcyB0byBnb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8KKworICBS
ZXR1cm5zOgorICAgIEEgbGlzdCB3aGVyZSB0aGUgaS10aCBlbGVtZW50IGlzIHRoZSBsaXN0IG9m
IHRlc3RzIHJ1biBpbiB0aGUgaS10aAorICAgIHRlc3QgaXRlcmF0aW9uLgorICAiIiIKKworICB0
ZXN0X2l0ZXJhdGlvbnMgPSBbXQorICBmb3IgbGluZSBpbiBSdW5BbmRSZXR1cm5PdXRwdXQoZXh0
cmFfZW52LCBhcmdzKS5zcGxpdCgnXG4nKToKKyAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJy0tLS0n
KToKKyAgICAgIHRlc3RzID0gW10KKyAgICAgIHRlc3RfaXRlcmF0aW9ucy5hcHBlbmQodGVzdHMp
CisgICAgZWxpZiBsaW5lLnN0cmlwKCk6CisgICAgICB0ZXN0cy5hcHBlbmQobGluZS5zdHJpcCgp
KSAgIyAnVGVzdENhc2VOYW1lLlRlc3ROYW1lJworCisgIHJldHVybiB0ZXN0X2l0ZXJhdGlvbnMK
KworCitkZWYgR2V0VGVzdENhc2VzKHRlc3RzKToKKyAgIiIiUmV0dXJucyBhIGxpc3Qgb2YgdGVz
dCBjYXNlcyBpbiB0aGUgZ2l2ZW4gZnVsbCB0ZXN0IG5hbWVzLgorCisgIEFyZ3M6CisgICAgdGVz
dHM6IGEgbGlzdCBvZiBmdWxsIHRlc3QgbmFtZXMKKworICBSZXR1cm5zOgorICAgIEEgbGlzdCBv
ZiB0ZXN0IGNhc2VzIGZyb20gJ3Rlc3RzJywgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIuCisgICAg
Q29uc2VjdXRpdmUgZHVwbGljYXRlcyBhcmUgcmVtb3ZlZC4KKyAgIiIiCisKKyAgdGVzdF9jYXNl
cyA9IFtdCisgIGZvciB0ZXN0IGluIHRlc3RzOgorICAgIHRlc3RfY2FzZSA9IHRlc3Quc3BsaXQo
Jy4nKVswXQorICAgIGlmIG5vdCB0ZXN0X2Nhc2UgaW4gdGVzdF9jYXNlczoKKyAgICAgIHRlc3Rf
Y2FzZXMuYXBwZW5kKHRlc3RfY2FzZSkKKworICByZXR1cm4gdGVzdF9jYXNlcworCisKK2RlZiBD
YWxjdWxhdGVUZXN0TGlzdHMoKToKKyAgIiIiQ2FsY3VsYXRlcyB0aGUgbGlzdCBvZiB0ZXN0cyBy
dW4gdW5kZXIgZGlmZmVyZW50IGZsYWdzLiIiIgorCisgIGlmIG5vdCBBTExfVEVTVFM6CisgICAg
QUxMX1RFU1RTLmV4dGVuZCgKKyAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHt9LCBb
QWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKCldKVswXSkKKworICBpZiBub3QgQUNUSVZFX1RFU1RT
OgorICAgIEFDVElWRV9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHt9LCBb
XSlbMF0pCisKKyAgaWYgbm90IEZJTFRFUkVEX1RFU1RTOgorICAgIEZJTFRFUkVEX1RFU1RTLmV4
dGVuZCgKKyAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHt9LCBbRmlsdGVyRmxhZyhU
RVNUX0ZJTFRFUildKVswXSkKKworICBpZiBub3QgU0hBUkRFRF9URVNUUzoKKyAgICBTSEFSREVE
X1RFU1RTLmV4dGVuZCgKKyAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9T
SEFSRFNfRU5WX1ZBUjogJzMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNI
QVJEX0lOREVYX0VOVl9WQVI6ICcxJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbXSlbMF0pCisKKyAgaWYgbm90IFNIVUZGTEVEX0FMTF9URVNUUzoKKyAgICBTSFVGRkxFRF9B
TExfVEVTVFMuZXh0ZW5kKEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKKyAgICAgICAge30sIFtB
bHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcoKSwgU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWco
MSldKVswXSkKKworICBpZiBub3QgU0hVRkZMRURfQUNUSVZFX1RFU1RTOgorICAgIFNIVUZGTEVE
X0FDVElWRV9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICB7
fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSlbMF0pCisKKyAgaWYgbm90IFNI
VUZGTEVEX0ZJTFRFUkVEX1RFU1RTOgorICAgIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTLmV4dGVu
ZChHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisgICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwg
UmFuZG9tU2VlZEZsYWcoMSksIEZpbHRlckZsYWcoVEVTVF9GSUxURVIpXSlbMF0pCisKKyAgaWYg
bm90IFNIVUZGTEVEX1NIQVJERURfVEVTVFM6CisgICAgU0hVRkZMRURfU0hBUkRFRF9URVNUUy5l
eHRlbmQoCisgICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7VE9UQUxfU0hBUkRTX0VO
Vl9WQVI6ICczJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRF9JTkRF
WF9FTlZfVkFSOiAnMSd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NodWZm
bGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSlbMF0pCisKKworY2xhc3MgR1Rlc3RTaHVmZmxl
VW5pdFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICIiIlRlc3RzIHRlc3Qgc2h1
ZmZsaW5nLiIiIgorCisgIGRlZiBzZXRVcChzZWxmKToKKyAgICBDYWxjdWxhdGVUZXN0TGlzdHMo
KQorCisgIGRlZiB0ZXN0U2h1ZmZsZVByZXNlcnZlc051bWJlck9mVGVzdHMoc2VsZik6CisgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oQUxMX1RFU1RTKSwgbGVuKFNIVUZGTEVEX0FMTF9URVNUUykp
CisgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oQUNUSVZFX1RFU1RTKSwgbGVuKFNIVUZGTEVEX0FD
VElWRV9URVNUUykpCisgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oRklMVEVSRURfVEVTVFMpLCBs
ZW4oU0hVRkZMRURfRklMVEVSRURfVEVTVFMpKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFNI
QVJERURfVEVTVFMpLCBsZW4oU0hVRkZMRURfU0hBUkRFRF9URVNUUykpCisKKyAgZGVmIHRlc3RT
aHVmZmxlQ2hhbmdlc1Rlc3RPcmRlcihzZWxmKToKKyAgICBzZWxmLmFzc2VydF8oU0hVRkZMRURf
QUxMX1RFU1RTICE9IEFMTF9URVNUUywgU0hVRkZMRURfQUxMX1RFU1RTKQorICAgIHNlbGYuYXNz
ZXJ0XyhTSFVGRkxFRF9BQ1RJVkVfVEVTVFMgIT0gQUNUSVZFX1RFU1RTLCBTSFVGRkxFRF9BQ1RJ
VkVfVEVTVFMpCisgICAgc2VsZi5hc3NlcnRfKFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTICE9IEZJ
TFRFUkVEX1RFU1RTLAorICAgICAgICAgICAgICAgICBTSFVGRkxFRF9GSUxURVJFRF9URVNUUykK
KyAgICBzZWxmLmFzc2VydF8oU0hVRkZMRURfU0hBUkRFRF9URVNUUyAhPSBTSEFSREVEX1RFU1RT
LAorICAgICAgICAgICAgICAgICBTSFVGRkxFRF9TSEFSREVEX1RFU1RTKQorCisgIGRlZiB0ZXN0
U2h1ZmZsZUNoYW5nZXNUZXN0Q2FzZU9yZGVyKHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0XyhHZXRU
ZXN0Q2FzZXMoU0hVRkZMRURfQUxMX1RFU1RTKSAhPSBHZXRUZXN0Q2FzZXMoQUxMX1RFU1RTKSwK
KyAgICAgICAgICAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX0FMTF9URVNUUykpCisgICAg
c2VsZi5hc3NlcnRfKAorICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfQUNUSVZFX1RFU1RT
KSAhPSBHZXRUZXN0Q2FzZXMoQUNUSVZFX1RFU1RTKSwKKyAgICAgICAgR2V0VGVzdENhc2VzKFNI
VUZGTEVEX0FDVElWRV9URVNUUykpCisgICAgc2VsZi5hc3NlcnRfKAorICAgICAgICBHZXRUZXN0
Q2FzZXMoU0hVRkZMRURfRklMVEVSRURfVEVTVFMpICE9IEdldFRlc3RDYXNlcyhGSUxURVJFRF9U
RVNUUyksCisgICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9GSUxURVJFRF9URVNUUykpCisg
ICAgc2VsZi5hc3NlcnRfKAorICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfU0hBUkRFRF9U
RVNUUykgIT0gR2V0VGVzdENhc2VzKFNIQVJERURfVEVTVFMpLAorICAgICAgICBHZXRUZXN0Q2Fz
ZXMoU0hVRkZMRURfU0hBUkRFRF9URVNUUykpCisKKyAgZGVmIHRlc3RTaHVmZmxlRG9lc05vdFJl
cGVhdFRlc3Qoc2VsZik6CisgICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUxMX1RFU1RTOgorICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9BTExfVEVTVFMuY291bnQodGVzdCksCisg
ICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0ZXN0
LCkpCisgICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTOgorICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMuY291bnQodGVzdCksCisgICAgICAg
ICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0ZXN0LCkpCisg
ICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFM6CisgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDEsIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTLmNvdW50KHRlc3QpLAorICAgICAgICAg
ICAgICAgICAgICAgICAnJXMgYXBwZWFycyBtb3JlIHRoYW4gb25jZScgJSAodGVzdCwpKQorICAg
IGZvciB0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydEVx
dWFsKDEsIFNIVUZGTEVEX1NIQVJERURfVEVTVFMuY291bnQodGVzdCksCisgICAgICAgICAgICAg
ICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0ZXN0LCkpCisKKyAgZGVm
IHRlc3RTaHVmZmxlRG9lc05vdENyZWF0ZU5ld1Rlc3Qoc2VsZik6CisgICAgZm9yIHRlc3QgaW4g
U0hVRkZMRURfQUxMX1RFU1RTOgorICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gQUxMX1RFU1RT
LCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCisgICAgZm9yIHRlc3QgaW4gU0hV
RkZMRURfQUNUSVZFX1RFU1RTOgorICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gQUNUSVZFX1RF
U1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCisgICAgZm9yIHRlc3QgaW4g
U0hVRkZMRURfRklMVEVSRURfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBGSUxU
RVJFRF9URVNUUywgJyVzIGlzIGFuIGludmFsaWQgdGVzdCcgJSAodGVzdCwpKQorICAgIGZvciB0
ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydF8odGVzdCBp
biBTSEFSREVEX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCisKKyAg
ZGVmIHRlc3RTaHVmZmxlSW5jbHVkZXNBbGxUZXN0cyhzZWxmKToKKyAgICBmb3IgdGVzdCBpbiBB
TExfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVGRkxFRF9BTExfVEVTVFMs
ICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCisgICAgZm9yIHRlc3QgaW4gQUNUSVZFX1RFU1RT
OgorICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTLCAnJXMg
aXMgbWlzc2luZycgJSAodGVzdCwpKQorICAgIGZvciB0ZXN0IGluIEZJTFRFUkVEX1RFU1RTOgor
ICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFMsICclcyBp
cyBtaXNzaW5nJyAlICh0ZXN0LCkpCisgICAgZm9yIHRlc3QgaW4gU0hBUkRFRF9URVNUUzoKKyAg
ICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFMsICclcyBpcyBt
aXNzaW5nJyAlICh0ZXN0LCkpCisKKyAgZGVmIHRlc3RTaHVmZmxlTGVhdmVzRGVhdGhUZXN0c0F0
RnJvbnQoc2VsZik6CisgICAgbm9uX2RlYXRoX3Rlc3RfZm91bmQgPSBGYWxzZQorICAgIGZvciB0
ZXN0IGluIFNIVUZGTEVEX0FDVElWRV9URVNUUzoKKyAgICAgIGlmICdEZWF0aFRlc3QuJyBpbiB0
ZXN0OgorICAgICAgICBzZWxmLmFzc2VydF8obm90IG5vbl9kZWF0aF90ZXN0X2ZvdW5kLAorICAg
ICAgICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgYWZ0ZXIgYSBub24tZGVhdGggdGVzdCcgJSAo
dGVzdCwpKQorICAgICAgZWxzZToKKyAgICAgICAgbm9uX2RlYXRoX3Rlc3RfZm91bmQgPSBUcnVl
CisKKyAgZGVmIF9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUoc2VsZiwgdGVzdHMpOgor
ICAgIHRlc3RfY2FzZXMgPSBbXQorICAgIGZvciB0ZXN0IGluIHRlc3RzOgorICAgICAgW3Rlc3Rf
Y2FzZSwgX10gPSB0ZXN0LnNwbGl0KCcuJykKKyAgICAgIGlmIHRlc3RfY2FzZXMgYW5kIHRlc3Rf
Y2FzZXNbLTFdICE9IHRlc3RfY2FzZToKKyAgICAgICAgdGVzdF9jYXNlcy5hcHBlbmQodGVzdF9j
YXNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHRlc3RfY2FzZXMuY291bnQodGVzdF9j
YXNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnVGVzdCBjYXNlICVzIGlzIG5vdCBncm91
cGVkIHRvZ2V0aGVyIGluICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3RfY2Fz
ZSwgdGVzdHMpKQorCisgIGRlZiB0ZXN0U2h1ZmZsZURvZXNOb3RJbnRlcmxlYXZlVGVzdENhc2Vz
KHNlbGYpOgorICAgIHNlbGYuX1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50ZXJsZWF2ZShTSFVGRkxF
RF9BTExfVEVTVFMpCisgICAgc2VsZi5fVmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRlcmxlYXZlKFNI
VUZGTEVEX0FDVElWRV9URVNUUykKKyAgICBzZWxmLl9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVy
bGVhdmUoU0hVRkZMRURfRklMVEVSRURfVEVTVFMpCisgICAgc2VsZi5fVmVyaWZ5VGVzdENhc2Vz
RG9Ob3RJbnRlcmxlYXZlKFNIVUZGTEVEX1NIQVJERURfVEVTVFMpCisKKyAgZGVmIHRlc3RTaHVm
ZmxlUmVzdG9yZXNPcmRlckFmdGVyRWFjaEl0ZXJhdGlvbihzZWxmKToKKyAgICAjIEdldCB0aGUg
dGVzdCBsaXN0cyBpbiBhbGwgMyBpdGVyYXRpb25zLCB1c2luZyByYW5kb20gc2VlZCAxLCAyLAor
ICAgICMgYW5kIDMgcmVzcGVjdGl2ZWx5LiAgR29vZ2xlIFRlc3QgcGlja3MgYSBkaWZmZXJlbnQg
c2VlZCBpbiBlYWNoCisgICAgIyBpdGVyYXRpb24sIGFuZCB0aGlzIHRlc3QgZGVwZW5kcyBvbiB0
aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbgorICAgICMgcGlja2luZyBzdWNjZXNzaXZlIG51bWJl
cnMuICBUaGlzIGRlcGVuZGVuY3kgaXMgbm90IGlkZWFsLCBidXQKKyAgICAjIG1ha2VzIHRoZSB0
ZXN0IG11Y2ggZWFzaWVyIHRvIHdyaXRlLgorICAgIFt0ZXN0c19pbl9pdGVyYXRpb24xLCB0ZXN0
c19pbl9pdGVyYXRpb24yLCB0ZXN0c19pbl9pdGVyYXRpb24zXSA9ICgKKyAgICAgICAgR2V0VGVz
dHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5k
b21TZWVkRmxhZygxKSwgUmVwZWF0RmxhZygzKV0pKQorCisgICAgIyBNYWtlIHN1cmUgcnVubmlu
ZyB0aGUgdGVzdHMgd2l0aCByYW5kb20gc2VlZCAxIGdldHMgdGhlIHNhbWUKKyAgICAjIG9yZGVy
IGFzIGluIGl0ZXJhdGlvbiAxIGFib3ZlLgorICAgIFt0ZXN0c193aXRoX3NlZWQxXSA9IEdldFRl
c3RzRm9yQWxsSXRlcmF0aW9ucygKKyAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21T
ZWVkRmxhZygxKV0pCisgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0c19pbl9pdGVyYXRpb24xLCB0
ZXN0c193aXRoX3NlZWQxKQorCisgICAgIyBNYWtlIHN1cmUgcnVubmluZyB0aGUgdGVzdHMgd2l0
aCByYW5kb20gc2VlZCAyIGdldHMgdGhlIHNhbWUKKyAgICAjIG9yZGVyIGFzIGluIGl0ZXJhdGlv
biAyIGFib3ZlLiAgU3VjY2VzcyBtZWFucyB0aGF0IEdvb2dsZSBUZXN0CisgICAgIyBjb3JyZWN0
bHkgcmVzdG9yZXMgdGhlIHRlc3Qgb3JkZXIgYmVmb3JlIHJlLXNodWZmbGluZyBhdCB0aGUKKyAg
ICAjIGJlZ2lubmluZyBvZiBpdGVyYXRpb24gMi4KKyAgICBbdGVzdHNfd2l0aF9zZWVkMl0gPSBH
ZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisgICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFu
ZG9tU2VlZEZsYWcoMildKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHNfaW5faXRlcmF0aW9u
MiwgdGVzdHNfd2l0aF9zZWVkMikKKworICAgICMgTWFrZSBzdXJlIHJ1bm5pbmcgdGhlIHRlc3Rz
IHdpdGggcmFuZG9tIHNlZWQgMyBnZXRzIHRoZSBzYW1lCisgICAgIyBvcmRlciBhcyBpbiBpdGVy
YXRpb24gMyBhYm92ZS4gIFN1Y2Nlc3MgbWVhbnMgdGhhdCBHb29nbGUgVGVzdAorICAgICMgY29y
cmVjdGx5IHJlc3RvcmVzIHRoZSB0ZXN0IG9yZGVyIGJlZm9yZSByZS1zaHVmZmxpbmcgYXQgdGhl
CisgICAgIyBiZWdpbm5pbmcgb2YgaXRlcmF0aW9uIDMuCisgICAgW3Rlc3RzX3dpdGhfc2VlZDNd
ID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCks
IFJhbmRvbVNlZWRGbGFnKDMpXSkKKyAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzX2luX2l0ZXJh
dGlvbjMsIHRlc3RzX3dpdGhfc2VlZDMpCisKKyAgZGVmIHRlc3RTaHVmZmxlR2VuZXJhdGVzTmV3
T3JkZXJJbkVhY2hJdGVyYXRpb24oc2VsZik6CisgICAgW3Rlc3RzX2luX2l0ZXJhdGlvbjEsIHRl
c3RzX2luX2l0ZXJhdGlvbjIsIHRlc3RzX2luX2l0ZXJhdGlvbjNdID0gKAorICAgICAgICBHZXRU
ZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisgICAgICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJh
bmRvbVNlZWRGbGFnKDEpLCBSZXBlYXRGbGFnKDMpXSkpCisKKyAgICBzZWxmLmFzc2VydF8odGVz
dHNfaW5faXRlcmF0aW9uMSAhPSB0ZXN0c19pbl9pdGVyYXRpb24yLAorICAgICAgICAgICAgICAg
ICB0ZXN0c19pbl9pdGVyYXRpb24xKQorICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0c19pbl9pdGVyYXRp
b24xICE9IHRlc3RzX2luX2l0ZXJhdGlvbjMsCisgICAgICAgICAgICAgICAgIHRlc3RzX2luX2l0
ZXJhdGlvbjEpCisgICAgc2VsZi5hc3NlcnRfKHRlc3RzX2luX2l0ZXJhdGlvbjIgIT0gdGVzdHNf
aW5faXRlcmF0aW9uMywKKyAgICAgICAgICAgICAgICAgdGVzdHNfaW5faXRlcmF0aW9uMikKKwor
ICBkZWYgdGVzdFNodWZmbGVTaGFyZGVkVGVzdHNQcmVzZXJ2ZXNQYXJ0aXRpb24oc2VsZik6Cisg
ICAgIyBJZiB3ZSBydW4gTSB0ZXN0cyBvbiBOIHNoYXJkcywgdGhlIHNhbWUgTSB0ZXN0cyBzaG91
bGQgYmUgcnVuIGluCisgICAgIyB0b3RhbCwgcmVnYXJkbGVzcyBvZiB0aGUgcmFuZG9tIHNlZWRz
IHVzZWQgYnkgdGhlIHNoYXJkcy4KKyAgICBbdGVzdHMxXSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0
aW9ucyh7VE9UQUxfU0hBUkRTX0VOVl9WQVI6ICczJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU0hBUkRfSU5ERVhfRU5WX1ZBUjogJzAnfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZs
YWcoMSldKQorICAgIFt0ZXN0czJdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9T
SEFSRFNfRU5WX1ZBUjogJzMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMSd9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygyMCldKQorICAg
IFt0ZXN0czNdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZB
UjogJzMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRF9J
TkRFWF9FTlZfVkFSOiAnMid9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygyNSldKQorICAgIHNvcnRlZF9zaGFy
ZGVkX3Rlc3RzID0gdGVzdHMxICsgdGVzdHMyICsgdGVzdHMzCisgICAgc29ydGVkX3NoYXJkZWRf
dGVzdHMuc29ydCgpCisgICAgc29ydGVkX2FjdGl2ZV90ZXN0cyA9IFtdCisgICAgc29ydGVkX2Fj
dGl2ZV90ZXN0cy5leHRlbmQoQUNUSVZFX1RFU1RTKQorICAgIHNvcnRlZF9hY3RpdmVfdGVzdHMu
c29ydCgpCisgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWRfYWN0aXZlX3Rlc3RzLCBzb3J0ZWRf
c2hhcmRlZF90ZXN0cykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rlc3RfdGVz
dF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9nb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZlNWY2YWJhMmE1ZTBm
ZmNhYjkxNWU0NjM4ZDIzZjU4Y2Y0OGZmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfLmNjCkBAIC0wLDAgKzEs
MTAyIEBACisvLyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLwor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKwor
Ly8gVmVyaWZpZXMgdGhhdCB0ZXN0IHNodWZmbGluZyB3b3Jrcy4KKworI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CisKK3VzaW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZl
bnRMaXN0ZW5lcjsKK3VzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7Cit1c2luZyA6OnRl
c3Rpbmc6Ok1lc3NhZ2U7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6
OlRlc3RFdmVudExpc3RlbmVyczsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdEluZm87Cit1c2luZyA6
OnRlc3Rpbmc6OlVuaXRUZXN0OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVkX3B0
cjsKKworLy8gVGhlIHRlc3QgbWV0aG9kcyBhcmUgZW1wdHksIGFzIHRoZSBzb2xlIHB1cnBvc2Ug
b2YgdGhpcyBwcm9ncmFtIGlzCisvLyB0byBwcmludCB0aGUgdGVzdCBuYW1lcyBiZWZvcmUvYWZ0
ZXIgc2h1ZmZsaW5nLgorCitjbGFzcyBBIDogcHVibGljIFRlc3Qge307CitURVNUX0YoQSwgQSkg
e30KK1RFU1RfRihBLCBCKSB7fQorCitURVNUKEFEZWF0aFRlc3QsIEEpIHt9CitURVNUKEFEZWF0
aFRlc3QsIEIpIHt9CitURVNUKEFEZWF0aFRlc3QsIEMpIHt9CisKK1RFU1QoQiwgQSkge30KK1RF
U1QoQiwgQikge30KK1RFU1QoQiwgQykge30KK1RFU1QoQiwgRElTQUJMRURfRCkge30KK1RFU1Qo
QiwgRElTQUJMRURfRSkge30KKworVEVTVChCRGVhdGhUZXN0LCBBKSB7fQorVEVTVChCRGVhdGhU
ZXN0LCBCKSB7fQorCitURVNUKEMsIEEpIHt9CitURVNUKEMsIEIpIHt9CitURVNUKEMsIEMpIHt9
CitURVNUKEMsIERJU0FCTEVEX0QpIHt9CisKK1RFU1QoQ0RlYXRoVGVzdCwgQSkge30KKworVEVT
VChESVNBQkxFRF9ELCBBKSB7fQorVEVTVChESVNBQkxFRF9ELCBESVNBQkxFRF9CKSB7fQorCisv
LyBUaGlzIHByaW50ZXIgcHJpbnRzIHRoZSBmdWxsIHRlc3QgbmFtZXMgb25seSwgc3RhcnRpbmcg
ZWFjaCB0ZXN0CisvLyBpdGVyYXRpb24gd2l0aCBhICItLS0tIiBtYXJrZXIuCitjbGFzcyBUZXN0
TmFtZVByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CisgcHVibGljOgor
ICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qIHVu
aXRfdGVzdCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKiBp
dGVyYXRpb24gKi8pIHsKKyAgICBwcmludGYoIi0tLS1cbiIpOworICB9CisKKyAgdmlydHVhbCB2
b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKKyAgICBwcmludGYo
IiVzLiVzXG4iLCB0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7
CisgIH0KK307CisKK30gIC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
KmFyZ3YpIHsKKyAgSW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIC8vIFJlcGxhY2Vz
IHRoZSBkZWZhdWx0IHByaW50ZXIgd2l0aCBUZXN0TmFtZVByaW50ZXIsIHdoaWNoIHByaW50cwor
ICAvLyB0aGUgdGVzdCBuYW1lIG9ubHkuCisgIFRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJz
ID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpOworICBkZWxldGUgbGlzdGVu
ZXJzLlJlbGVhc2UobGlzdGVuZXJzLmRlZmF1bHRfcmVzdWx0X3ByaW50ZXIoKSk7CisgIGxpc3Rl
bmVycy5BcHBlbmQobmV3IFRlc3ROYW1lUHJpbnRlcik7CisKKyAgcmV0dXJuIFJVTl9BTExfVEVT
VFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xl
dGVzdC10ZXN0LXBhcnQtdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC10ZXN0LXBhcnQtdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDJkNmY5ZTg1OGY1Mjc5YmE1
YTE2YTVkMWE2ZTM3YWZmZTkxMGFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRlc3QtcGFydC10ZXN0LmNjCkBAIC0wLDAgKzEsMjA1
IEBACisvLyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLgorLy8gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
Ly8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
KwordXNpbmcgdGVzdGluZzo6TWVzc2FnZTsKK3VzaW5nIHRlc3Rpbmc6OlRlc3Q7Cit1c2luZyB0
ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDsKK3VzaW5nIHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0QXJy
YXk7CisKK25hbWVzcGFjZSB7CisKKy8vIFRlc3RzIHRoZSBUZXN0UGFydFJlc3VsdCBjbGFzcy4K
KworLy8gVGhlIHRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyBUZXN0UGFydFJlc3VsdC4KK2NsYXNz
IFRlc3RQYXJ0UmVzdWx0VGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIFRlc3RQ
YXJ0UmVzdWx0VGVzdCgpCisgICAgICA6IHIxXyhUZXN0UGFydFJlc3VsdDo6a1N1Y2Nlc3MsICJm
b28vYmFyLmNjIiwgMTAsICJTdWNjZXNzISIpLAorICAgICAgICByMl8oVGVzdFBhcnRSZXN1bHQ6
OmtOb25GYXRhbEZhaWx1cmUsICJmb28vYmFyLmNjIiwgLTEsICJGYWlsdXJlISIpLAorICAgICAg
ICByM18oVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsIE5VTEwsIC0xLCAiRmFpbHVyZSEi
KSB7fQorCisgIFRlc3RQYXJ0UmVzdWx0IHIxXywgcjJfLCByM187Cit9OworCisKK1RFU1RfRihU
ZXN0UGFydFJlc3VsdFRlc3QsIENvbnN0cnVjdG9yV29ya3MpIHsKKyAgTWVzc2FnZSBtZXNzYWdl
OworICBtZXNzYWdlIDw8ICJzb21ldGhpbmcgaXMgdGVycmlibHkgd3JvbmciOworICBtZXNzYWdl
IDw8IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPih0ZXN0aW5nOjppbnRlcm5hbDo6a1N0YWNrVHJh
Y2VNYXJrZXIpOworICBtZXNzYWdlIDw8ICJzb21lIHVuaW1wb3J0YW50IHN0YWNrIHRyYWNlIjsK
KworICBjb25zdCBUZXN0UGFydFJlc3VsdCByZXN1bHQoVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRh
bEZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic29tZV9maWxlLmNjIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0cigpKTsKKworICBFWFBFQ1RfRVEoVGVz
dFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsIHJlc3VsdC50eXBlKCkpOworICBFWFBFQ1Rf
U1RSRVEoInNvbWVfZmlsZS5jYyIsIHJlc3VsdC5maWxlX25hbWUoKSk7CisgIEVYUEVDVF9FUSg0
MiwgcmVzdWx0LmxpbmVfbnVtYmVyKCkpOworICBFWFBFQ1RfU1RSRVEobWVzc2FnZS5HZXRTdHJp
bmcoKS5jX3N0cigpLCByZXN1bHQubWVzc2FnZSgpKTsKKyAgRVhQRUNUX1NUUkVRKCJzb21ldGhp
bmcgaXMgdGVycmlibHkgd3JvbmciLCByZXN1bHQuc3VtbWFyeSgpKTsKK30KKworVEVTVF9GKFRl
c3RQYXJ0UmVzdWx0VGVzdCwgUmVzdWx0QWNjZXNzb3JzV29yaykgeworICBjb25zdCBUZXN0UGFy
dFJlc3VsdCBzdWNjZXNzKFRlc3RQYXJ0UmVzdWx0OjprU3VjY2VzcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZmlsZS5jYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UiKTsKKyAgRVhQ
RUNUX1RSVUUoc3VjY2Vzcy5wYXNzZWQoKSk7CisgIEVYUEVDVF9GQUxTRShzdWNjZXNzLmZhaWxl
ZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3Mubm9uZmF0YWxseV9mYWlsZWQoKSk7CisgIEVY
UEVDVF9GQUxTRShzdWNjZXNzLmZhdGFsbHlfZmFpbGVkKCkpOworCisgIGNvbnN0IFRlc3RQYXJ0
UmVzdWx0IG5vbmZhdGFsX2ZhaWx1cmUoVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUuY2MiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIik7CisgIEVYUEVDVF9GQUxTRShub25m
YXRhbF9mYWlsdXJlLnBhc3NlZCgpKTsKKyAgRVhQRUNUX1RSVUUobm9uZmF0YWxfZmFpbHVyZS5m
YWlsZWQoKSk7CisgIEVYUEVDVF9UUlVFKG5vbmZhdGFsX2ZhaWx1cmUubm9uZmF0YWxseV9mYWls
ZWQoKSk7CisgIEVYUEVDVF9GQUxTRShub25mYXRhbF9mYWlsdXJlLmZhdGFsbHlfZmFpbGVkKCkp
OworCisgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IGZhdGFsX2ZhaWx1cmUoVGVzdFBhcnRSZXN1bHQ6
OmtGYXRhbEZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZp
bGUuY2MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIik7CisgIEVYUEVDVF9GQUxT
RShmYXRhbF9mYWlsdXJlLnBhc3NlZCgpKTsKKyAgRVhQRUNUX1RSVUUoZmF0YWxfZmFpbHVyZS5m
YWlsZWQoKSk7CisgIEVYUEVDVF9GQUxTRShmYXRhbF9mYWlsdXJlLm5vbmZhdGFsbHlfZmFpbGVk
KCkpOworICBFWFBFQ1RfVFJVRShmYXRhbF9mYWlsdXJlLmZhdGFsbHlfZmFpbGVkKCkpOworfQor
CisvLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6dHlwZSgpLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0
VGVzdCwgdHlwZSkgeworICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNzLCByMV8u
dHlwZSgpKTsKKyAgRVhQRUNUX0VRKFRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlLCBy
Ml8udHlwZSgpKTsKKyAgRVhQRUNUX0VRKFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLCBy
M18udHlwZSgpKTsKK30KKworLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6OmZpbGVfbmFtZSgpLgor
VEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgZmlsZV9uYW1lKSB7CisgIEVYUEVDVF9TVFJFUSgi
Zm9vL2Jhci5jYyIsIHIxXy5maWxlX25hbWUoKSk7CisgIEVYUEVDVF9TVFJFUShOVUxMLCByM18u
ZmlsZV9uYW1lKCkpOworfQorCisvLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6bGluZV9udW1iZXIo
KS4KK1RFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIGxpbmVfbnVtYmVyKSB7CisgIEVYUEVDVF9F
USgxMCwgcjFfLmxpbmVfbnVtYmVyKCkpOworICBFWFBFQ1RfRVEoLTEsIHIyXy5saW5lX251bWJl
cigpKTsKK30KKworLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6Om1lc3NhZ2UoKS4KK1RFU1RfRihU
ZXN0UGFydFJlc3VsdFRlc3QsIG1lc3NhZ2UpIHsKKyAgRVhQRUNUX1NUUkVRKCJTdWNjZXNzISIs
IHIxXy5tZXNzYWdlKCkpOworfQorCisvLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6cGFzc2VkKCku
CitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBQYXNzZWQpIHsKKyAgRVhQRUNUX1RSVUUocjFf
LnBhc3NlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHIyXy5wYXNzZWQoKSk7CisgIEVYUEVDVF9GQUxT
RShyM18ucGFzc2VkKCkpOworfQorCisvLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6ZmFpbGVkKCku
CitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBGYWlsZWQpIHsKKyAgRVhQRUNUX0ZBTFNFKHIx
Xy5mYWlsZWQoKSk7CisgIEVYUEVDVF9UUlVFKHIyXy5mYWlsZWQoKSk7CisgIEVYUEVDVF9UUlVF
KHIzXy5mYWlsZWQoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpmYXRhbGx5X2Zh
aWxlZCgpLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgRmF0YWxseUZhaWxlZCkgeworICBF
WFBFQ1RfRkFMU0UocjFfLmZhdGFsbHlfZmFpbGVkKCkpOworICBFWFBFQ1RfRkFMU0UocjJfLmZh
dGFsbHlfZmFpbGVkKCkpOworICBFWFBFQ1RfVFJVRShyM18uZmF0YWxseV9mYWlsZWQoKSk7Cit9
CisKKy8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0Ojpub25mYXRhbGx5X2ZhaWxlZCgpLgorVEVTVF9G
KFRlc3RQYXJ0UmVzdWx0VGVzdCwgTm9uZmF0YWxseUZhaWxlZCkgeworICBFWFBFQ1RfRkFMU0Uo
cjFfLm5vbmZhdGFsbHlfZmFpbGVkKCkpOworICBFWFBFQ1RfVFJVRShyMl8ubm9uZmF0YWxseV9m
YWlsZWQoKSk7CisgIEVYUEVDVF9GQUxTRShyM18ubm9uZmF0YWxseV9mYWlsZWQoKSk7Cit9CisK
Ky8vIFRlc3RzIHRoZSBUZXN0UGFydFJlc3VsdEFycmF5IGNsYXNzLgorCitjbGFzcyBUZXN0UGFy
dFJlc3VsdEFycmF5VGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIFRlc3RQYXJ0
UmVzdWx0QXJyYXlUZXN0KCkKKyAgICAgIDogcjFfKFRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxG
YWlsdXJlLCAiZm9vL2Jhci5jYyIsIC0xLCAiRmFpbHVyZSAxIiksCisgICAgICAgIHIyXyhUZXN0
UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwgImZvby9iYXIuY2MiLCAtMSwgIkZhaWx1cmUgMiIp
IHt9CisKKyAgY29uc3QgVGVzdFBhcnRSZXN1bHQgcjFfLCByMl87Cit9OworCisvLyBUZXN0cyB0
aGF0IFRlc3RQYXJ0UmVzdWx0QXJyYXkgaW5pdGlhbGx5IGhhcyBzaXplIDAuCitURVNUX0YoVGVz
dFBhcnRSZXN1bHRBcnJheVRlc3QsIEluaXRpYWxTaXplSXNaZXJvKSB7CisgIFRlc3RQYXJ0UmVz
dWx0QXJyYXkgcmVzdWx0czsKKyAgRVhQRUNUX0VRKDAsIHJlc3VsdHMuc2l6ZSgpKTsKK30KKwor
Ly8gVGVzdHMgdGhhdCBUZXN0UGFydFJlc3VsdEFycmF5IGNvbnRhaW5zIHRoZSBnaXZlbiBUZXN0
UGFydFJlc3VsdAorLy8gYWZ0ZXIgb25lIEFwcGVuZCgpIG9wZXJhdGlvbi4KK1RFU1RfRihUZXN0
UGFydFJlc3VsdEFycmF5VGVzdCwgQ29udGFpbnNHaXZlblJlc3VsdEFmdGVyQXBwZW5kKSB7Cisg
IFRlc3RQYXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsKKyAgcmVzdWx0cy5BcHBlbmQocjFfKTsKKyAg
RVhQRUNUX0VRKDEsIHJlc3VsdHMuc2l6ZSgpKTsKKyAgRVhQRUNUX1NUUkVRKCJGYWlsdXJlIDEi
LCByZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDApLm1lc3NhZ2UoKSk7Cit9CisKKy8vIFRlc3Rz
IHRoYXQgVGVzdFBhcnRSZXN1bHRBcnJheSBjb250YWlucyB0aGUgZ2l2ZW4gVGVzdFBhcnRSZXN1
bHRzCisvLyBhZnRlciB0d28gQXBwZW5kKCkgb3BlcmF0aW9ucy4KK1RFU1RfRihUZXN0UGFydFJl
c3VsdEFycmF5VGVzdCwgQ29udGFpbnNHaXZlblJlc3VsdHNBZnRlclR3b0FwcGVuZHMpIHsKKyAg
VGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOworICByZXN1bHRzLkFwcGVuZChyMV8pOworICBy
ZXN1bHRzLkFwcGVuZChyMl8pOworICBFWFBFQ1RfRVEoMiwgcmVzdWx0cy5zaXplKCkpOworICBF
WFBFQ1RfU1RSRVEoIkZhaWx1cmUgMSIsIHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMCkubWVz
c2FnZSgpKTsKKyAgRVhQRUNUX1NUUkVRKCJGYWlsdXJlIDIiLCByZXN1bHRzLkdldFRlc3RQYXJ0
UmVzdWx0KDEpLm1lc3NhZ2UoKSk7Cit9CisKK3R5cGVkZWYgVGVzdFBhcnRSZXN1bHRBcnJheVRl
c3QgVGVzdFBhcnRSZXN1bHRBcnJheURlYXRoVGVzdDsKKworLy8gVGVzdHMgdGhhdCB0aGUgcHJv
Z3JhbSBkaWVzIHdoZW4gR2V0VGVzdFBhcnRSZXN1bHQoKSBpcyBjYWxsZWQgd2l0aAorLy8gYW4g
aW52YWxpZCBpbmRleC4KK1RFU1RfRihUZXN0UGFydFJlc3VsdEFycmF5RGVhdGhUZXN0LCBEaWVz
V2hlbkluZGV4SXNPdXRPZkJvdW5kKSB7CisgIFRlc3RQYXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsK
KyAgcmVzdWx0cy5BcHBlbmQocjFfKTsKKworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHJl
c3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoLTEpLCAiIik7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQ
T1JURUQocmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgxKSwgIiIpOworfQorCisvLyBGSVhNRTog
QWRkIGEgdGVzdCBmb3IgdGhlIGNsYXNzIEhhc05ld0ZhdGFsRmFpbHVyZUhlbHBlci4KKworfSAg
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3QtdGVzdDJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC10ZXN0Ml90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyZjk4ZGM3ZDFjM2U5MDk3NThiYTYw
NzcyZTk3NzQ5OGNlODFmZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtdGVzdDJfdGVzdC5jYwpAQCAtMCwwICsxLDYxIEBACisvLyBD
b3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3Ry
aWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vCisvLyBUZXN0cyBm
b3IgR29vZ2xlIFRlc3QgaXRzZWxmLiAgVGhpcyB2ZXJpZmllcyB0aGF0IHRoZSBiYXNpYyBjb25z
dHJ1Y3RzIG9mCisvLyBHb29nbGUgVGVzdCB3b3JrLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKKyNpbmNsdWRlICJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5oIgorCit1c2luZyA6OnRl
c3Rpbmc6OlZhbHVlczsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9y
OworCisvLyBUZXN0cyB0aGF0IGdlbmVyYXRvcnMgZGVmaW5lZCBpbiBhIGRpZmZlcmVudCB0cmFu
c2xhdGlvbiB1bml0CisvLyBhcmUgZnVuY3Rpb25hbC4gVGhlIHRlc3QgdXNpbmcgZXh0ZXJuX2dl
bl8yIGlzIGRlZmluZWQKKy8vIGluIGdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmNjLgorUGFy
YW1HZW5lcmF0b3I8aW50PiBleHRlcm5fZ2VuXzIgPSBWYWx1ZXMoMzMpOworCisvLyBUZXN0cyB0
aGF0IGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGRlZmluZWQgaW4gb25lIHRyYW5z
bGF0aW9uIHVuaXQKKy8vIGFuZCBpbnN0YW50aWF0ZWQgaW4gYW5vdGhlci4gVGhlIHRlc3QgaXMg
ZGVmaW5lZCBpbgorLy8gZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MgYW5kIEV4dGVybmFs
SW5zdGFudGlhdGlvblRlc3QgZml4dHVyZSBjbGFzcyBpcworLy8gZGVmaW5lZCBpbiBndGVzdC1w
YXJhbS10ZXN0X3Rlc3QuaC4KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKE11bHRpcGxlc09mMzMs
CisgICAgICAgICAgICAgICAgICAgICAgICBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDMzLCA2NikpOworCisvLyBUZXN0cyB0aGF0IGEg
cGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGluc3RhbnRpYXRlZAorLy8gaW4gbXVsdGlw
bGUgdHJhbnNsYXRpb24gdW5pdHMuIEFub3RoZXIgaW5zdGFudGlhdGlvbiBpcyBkZWZpbmVkCisv
LyBpbiBnb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYyBhbmQKKy8vIEluc3RhbnRpYXRpb25J
bk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCBmaXh0dXJlIGlzIGRlZmluZWQgaW4KKy8vIGd0
ZXN0LXBhcmFtLXRlc3RfdGVzdC5oCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5jZTIs
CisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFp
b25Vbml0c1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNDIqMywgNDIqNCwg
NDIqNSkpOworCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9nb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NmNi
OWY2ZGEzMWRlYWRmZDdlZWZkMjM1ZTliMzdkZjI5ZmIzYmFmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUt
dGVzdC5weQpAQCAtMCwwICsxLDE2OSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENv
cHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworIiIiVGVzdHMgR29vZ2xlIFRlc3QncyB0aHJvdy1vbi1mYWlsdXJlIG1v
ZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLgorCitUaGlzIHNjcmlwdCBpbnZva2VzIGdvb2ds
ZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aAorR29v
Z2xlIFRlc3QpIHdpdGggZGlmZmVyZW50IGVudmlyb25tZW50cyBhbmQgY29tbWFuZCBsaW5lIGZs
YWdzLgorIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworCisjIENv
bnN0YW50cy4KKworIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgZm9yIGVuYWJsaW5nL2Rpc2FibGlu
ZyB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLgorVEhST1dfT05fRkFJTFVSRSA9ICdndGVzdF90
aHJvd19vbl9mYWlsdXJlJworCisjIFBhdGggdG8gdGhlIGdvb2dsZXRlc3QtdGhyb3ctb24tZmFp
bHVyZS10ZXN0XyBwcm9ncmFtLCBjb21waWxlZCB3aXRoCisjIGV4Y2VwdGlvbnMgZGlzYWJsZWQu
CitFWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKAorICAg
ICdnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8nKQorCisKKyMgVXRpbGl0aWVzLgor
CisKK2RlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgorICAiIiJTZXRzIGFuIGVudmlyb25t
ZW50IHZhcmlhYmxlIHRvIGEgZ2l2ZW4gdmFsdWU7IHVuc2V0cyBpdCB3aGVuIHRoZQorICBnaXZl
biB2YWx1ZSBpcyBOb25lLgorICAiIiIKKworICBlbnZfdmFyID0gZW52X3Zhci51cHBlcigpCisg
IGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAgIG9zLmVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQor
ICBlbGlmIGVudl92YXIgaW4gb3MuZW52aXJvbjoKKyAgICBkZWwgb3MuZW52aXJvbltlbnZfdmFy
XQorCisKK2RlZiBSdW4oY29tbWFuZCk6CisgICIiIlJ1bnMgYSBjb21tYW5kOyByZXR1cm5zIFRy
dWUvRmFsc2UgaWYgaXRzIGV4aXQgY29kZSBpcy9pc24ndCAwLiIiIgorCisgIHByaW50ICdSdW5u
aW5nICIlcyIuIC4gLicgJSAnICcuam9pbihjb21tYW5kKQorICBwID0gZ3Rlc3RfdGVzdF91dGls
cy5TdWJwcm9jZXNzKGNvbW1hbmQpCisgIHJldHVybiBwLmV4aXRlZCBhbmQgcC5leGl0X2NvZGUg
PT0gMAorCisKKyMgVGhlIHRlc3RzLiAgRklYTUU6IHJlZmFjdG9yIHRoZSBjbGFzcyB0byBzaGFy
ZSBjb21tb24KKyMgbG9naWMgd2l0aCBjb2RlIGluIGdvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVy
ZS11bml0dGVzdC5weS4KK2NsYXNzIFRocm93T25GYWlsdXJlVGVzdChndGVzdF90ZXN0X3V0aWxz
LlRlc3RDYXNlKToKKyAgIiIiVGVzdHMgdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZS4iIiIKKwor
ICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGVudl92YXJfdmFsdWUsIGZsYWdfdmFsdWUsIHNob3Vs
ZF9mYWlsKToKKyAgICAiIiJSdW5zIGdvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0XyBh
bmQgdmVyaWZpZXMgdGhhdCBpdCBkb2VzCisgICAgKG9yIGRvZXMgbm90KSBleGl0IHdpdGggYSBu
b24temVybyBjb2RlLgorCisgICAgQXJnczoKKyAgICAgIGVudl92YXJfdmFsdWU6ICAgIHZhbHVl
IG9mIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50CisgICAgICAgICAgICAg
ICAgICAgICAgICB2YXJpYWJsZTsgTm9uZSBpZiB0aGUgdmFyaWFibGUgc2hvdWxkIGJlIHVuc2V0
LgorICAgICAgZmxhZ192YWx1ZTogICAgICAgdmFsdWUgb2YgdGhlIC0tZ3Rlc3RfYnJlYWtfb25f
ZmFpbHVyZSBmbGFnOworICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSBpZiB0aGUgZmxhZyBz
aG91bGQgbm90IGJlIHByZXNlbnQuCisgICAgICBzaG91bGRfZmFpbDogICAgICBUcnVlIGlmZiB0
aGUgcHJvZ3JhbSBpcyBleHBlY3RlZCB0byBmYWlsLgorICAgICIiIgorCisgICAgU2V0RW52VmFy
KFRIUk9XX09OX0ZBSUxVUkUsIGVudl92YXJfdmFsdWUpCisKKyAgICBpZiBlbnZfdmFyX3ZhbHVl
IGlzIE5vbmU6CisgICAgICBlbnZfdmFyX3ZhbHVlX21zZyA9ICcgaXMgbm90IHNldCcKKyAgICBl
bHNlOgorICAgICAgZW52X3Zhcl92YWx1ZV9tc2cgPSAnPScgKyBlbnZfdmFyX3ZhbHVlCisKKyAg
ICBpZiBmbGFnX3ZhbHVlIGlzIE5vbmU6CisgICAgICBmbGFnID0gJycKKyAgICBlbGlmIGZsYWdf
dmFsdWUgPT0gJzAnOgorICAgICAgZmxhZyA9ICctLSVzPTAnICUgVEhST1dfT05fRkFJTFVSRQor
ICAgIGVsc2U6CisgICAgICBmbGFnID0gJy0tJXMnICUgVEhST1dfT05fRkFJTFVSRQorCisgICAg
Y29tbWFuZCA9IFtFWEVfUEFUSF0KKyAgICBpZiBmbGFnOgorICAgICAgY29tbWFuZC5hcHBlbmQo
ZmxhZykKKworICAgIGlmIHNob3VsZF9mYWlsOgorICAgICAgc2hvdWxkX29yX25vdCA9ICdzaG91
bGQnCisgICAgZWxzZToKKyAgICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxkIG5vdCcKKworICAg
IGZhaWxlZCA9IG5vdCBSdW4oY29tbWFuZCkKKworICAgIFNldEVudlZhcihUSFJPV19PTl9GQUlM
VVJFLCBOb25lKQorCisgICAgbXNnID0gKCd3aGVuICVzJXMsIGFuIGFzc2VydGlvbiBmYWlsdXJl
IGluICIlcyIgJXMgY2F1c2UgYSBub24temVybyAnCisgICAgICAgICAgICdleGl0IGNvZGUuJyAl
CisgICAgICAgICAgIChUSFJPV19PTl9GQUlMVVJFLCBlbnZfdmFyX3ZhbHVlX21zZywgJyAnLmpv
aW4oY29tbWFuZCksCisgICAgICAgICAgICBzaG91bGRfb3Jfbm90KSkKKyAgICBzZWxmLmFzc2Vy
dF8oZmFpbGVkID09IHNob3VsZF9mYWlsLCBtc2cpCisKKyAgZGVmIHRlc3REZWZhdWx0QmVoYXZp
b3Ioc2VsZik6CisgICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0IG1vZGUu
IiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsIGZsYWdfdmFs
dWU9Tm9uZSwgc2hvdWxkX2ZhaWw9RmFsc2UpCisKKyAgZGVmIHRlc3RUaHJvd09uRmFpbHVyZUVu
dlZhcihzZWxmKToKKyAgICAiIiJUZXN0cyB1c2luZyB0aGUgR1RFU1RfVEhST1dfT05fRkFJTFVS
RSBlbnZpcm9ubWVudCB2YXJpYWJsZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92
YXJfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1GYWxzZSkKKyAgICBzZWxmLlJ1bkFuZFZl
cmlmeShlbnZfdmFyX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVl
PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9VHJ1ZSkKKworICBkZWYg
dGVzdFRocm93T25GYWlsdXJlRmxhZyhzZWxmKToKKyAgICAiIiJUZXN0cyB1c2luZyB0aGUgLS1n
dGVzdF90aHJvd19vbl9mYWlsdXJlIGZsYWcuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShl
bnZfdmFyX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcs
CisgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9RmFsc2UpCisgICAgc2VsZi5SdW5B
bmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdf
dmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPVRydWUpCisKKyAg
ZGVmIHRlc3RUaHJvd09uRmFpbHVyZUZsYWdPdmVycmlkZXNFbnZWYXIoc2VsZik6CisgICAgIiIi
VGVzdHMgdGhhdCAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmUgb3ZlcnJpZGVzIEdURVNUX1RIUk9X
X09OX0ZBSUxVUkUuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScw
JywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAg
ICAgICAgICBzaG91bGRfZmFpbD1GYWxzZSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFy
X3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKKyAgICAg
ICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1UcnVlKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5
KGVudl92YXJfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAn
LAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPUZhbHNlKQorICAgIHNlbGYuUnVu
QW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdf
dmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPVRydWUpCisKKwor
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10aHJvdy1v
bi1mYWlsdXJlLXRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjlhMmM2NDQ4YTI5Y2Ey
OTY0OWExMjQ4MDU5YTk4NWE1MWFmODYzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfLmNjCkBA
IC0wLDAgKzEsNzEgQEAKKy8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworCisvLyBUZXN0cyBHb29nbGUgVGVzdCdzIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRo
IGV4Y2VwdGlvbnMgZGlzYWJsZWQuCisvLworLy8gVGhpcyBwcm9ncmFtIG11c3QgYmUgY29tcGls
ZWQgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLiAgSXQgd2lsbCBiZQorLy8gaW52b2tlZCBieSBn
b29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdC5weSwgYW5kIGlzIGV4cGVjdGVkIHRvIGV4
aXQKKy8vIHdpdGggbm9uLXplcm8gaW4gdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZSBvciAwIG90
aGVyd2lzZS4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpbmNsdWRlIDxzdGRpby5o
PiAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgZmZsdXNoLCBmcHJpbnRmLCBOVUxMLCBldGMu
CisjaW5jbHVkZSA8c3RkbGliLmg+ICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGV4aXQKKyNp
bmNsdWRlIDxleGNlcHRpb24+ICAgICAgICAgICAgICAgICAgICAvLyBmb3Igc2V0X3Rlcm1pbmF0
ZQorCisvLyBUaGlzIHRlcm1pbmF0ZSBoYW5kbGVyIGFib3J0cyB0aGUgcHJvZ3JhbSB1c2luZyBl
eGl0KCkgcmF0aGVyIHRoYW4gYWJvcnQoKS4KKy8vIFRoaXMgYXZvaWRzIHNob3dpbmcgcG9wLXVw
cyBvbiBXaW5kb3dzIHN5c3RlbXMgYW5kIGNvcmUgZHVtcHMgb24gVW5peC1saWtlCisvLyBvbmVz
Lgordm9pZCBUZXJtaW5hdGVIYW5kbGVyKCkgeworICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCAi
VW5oYW5kbGVkIEMrKyBleGNlcHRpb24gdGVybWluYXRpbmcgdGhlIHByb2dyYW0uIik7CisgIGZm
bHVzaChOVUxMKTsKKyAgZXhpdCgxKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBh
cmd2KSB7CisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKyAgc3RkOjpzZXRfdGVybWluYXRlKCZU
ZXJtaW5hdGVIYW5kbGVyKTsKKyNlbmRpZgorICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJn
YywgYXJndik7CisKKyAgLy8gV2Ugd2FudCB0byBlbnN1cmUgdGhhdCBwZW9wbGUgY2FuIHVzZSBH
b29nbGUgVGVzdCBhc3NlcnRpb25zIGluCisgIC8vIG90aGVyIHRlc3RpbmcgZnJhbWV3b3Jrcywg
YXMgbG9uZyBhcyB0aGV5IGluaXRpYWxpemUgR29vZ2xlIFRlc3QKKyAgLy8gcHJvcGVybHkgYW5k
IHNldCB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLiAgVGhlcmVmb3JlLCB3ZSBkb24ndAorICAv
LyB1c2UgR29vZ2xlIFRlc3QncyBjb25zdHJ1Y3RzIGZvciBkZWZpbmluZyBhbmQgcnVubmluZyB0
ZXN0cworICAvLyAoZS5nLiBURVNUIGFuZCBSVU5fQUxMX1RFU1RTKSBoZXJlLgorCisgIC8vIElu
IHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLCB0aGlz
CisgIC8vIGFzc2VydGlvbiB3aWxsIGNhdXNlIHRoZSBwcm9ncmFtIHRvIGV4aXQgd2l0aCBhIG5v
bi16ZXJvIGNvZGUuCisgIEVYUEVDVF9FUSgyLCAzKTsKKworICAvLyBXaGVuIG5vdCBpbiB0aGUg
dGhyb3ctb24tZmFpbHVyZSBtb2RlLCB0aGUgY29udHJvbCB3aWxsIHJlYWNoCisgIC8vIGhlcmUu
CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9nb29nbGV0ZXN0LXR1cGxlLXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtdHVwbGUtdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDgyYzE2MGYxNzdkNmYzYmFk
ZDc3MDY0YWI4YzdlOThiZDI5NzY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXR1cGxlLXRlc3QuY2MKQEAgLTAsMCArMSwzMTkgQEAK
Ky8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8g
ZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjaW5jbHVk
ZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaCIKKyNpbmNsdWRlIDx1dGlsaXR5PgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CisKK3VzaW5nIDo6c3RkOjp0cjE6
OmdldDsKK3VzaW5nIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGU7Cit1c2luZyA6OnN0ZDo6dHIxOjp0
dXBsZTsKK3VzaW5nIDo6c3RkOjp0cjE6OnR1cGxlX2VsZW1lbnQ7Cit1c2luZyA6OnN0ZDo6dHIx
Ojp0dXBsZV9zaXplOwordXNpbmcgOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE7CisKKy8v
IFRlc3RzIHRoYXQgdHVwbGVfZWxlbWVudDxLLCB0dXBsZTxUMCwgVDEsIC4uLiwgVE4+ID46OnR5
cGUgcmV0dXJucyBUSy4KK1RFU1QodHVwbGVfZWxlbWVudF9UZXN0LCBSZXR1cm5zRWxlbWVudFR5
cGUpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCwgdHVwbGVfZWxlbWVudDwwLCB0dXBsZTxp
bnQsIGNoYXI+ID46OnR5cGU+KCk7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxpbnQmLCB0dXBsZV9l
bGVtZW50PDEsIHR1cGxlPGRvdWJsZSwgaW50Jj4gPjo6dHlwZT4oKTsKKyAgU3RhdGljQXNzZXJ0
VHlwZUVxPGJvb2wsIHR1cGxlX2VsZW1lbnQ8MiwgdHVwbGU8ZG91YmxlLCBpbnQsIGJvb2w+ID46
OnR5cGU+KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdHVwbGVfc2l6ZTxUPjo6dmFsdWUgZ2l2ZXMg
dGhlIG51bWJlciBvZiBmaWVsZHMgaW4gdHVwbGUKKy8vIHR5cGUgVC4KK1RFU1QodHVwbGVfc2l6
ZV9UZXN0LCBSZXR1cm5zTnVtYmVyT2ZGaWVsZHMpIHsKKyAgRVhQRUNUX0VRKDAsICt0dXBsZV9z
aXplPHR1cGxlPD4gPjo6dmFsdWUpOworICBFWFBFQ1RfRVEoMSwgK3R1cGxlX3NpemU8dHVwbGU8
dm9pZCo+ID46OnZhbHVlKTsKKyAgRVhQRUNUX0VRKDEsICt0dXBsZV9zaXplPHR1cGxlPGNoYXI+
ID46OnZhbHVlKTsKKyAgRVhQRUNUX0VRKDEsICsodHVwbGVfc2l6ZTx0dXBsZTx0dXBsZTxpbnQs
IGRvdWJsZT4gPiA+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRVEoMiwgKyh0dXBsZV9zaXplPHR1cGxl
PGludCYsIGNvbnN0IGNoYXI+ID46OnZhbHVlKSk7CisgIEVYUEVDVF9FUSgzLCArKHR1cGxlX3Np
emU8dHVwbGU8Y2hhciosIHZvaWQsIGNvbnN0IGJvb2wmPiA+Ojp2YWx1ZSkpOworfQorCisvLyBU
ZXN0cyBjb21wYXJpbmcgYSB0dXBsZSB3aXRoIGl0c2VsZi4KK1RFU1QoQ29tcGFyaXNvblRlc3Qs
IENvbXBhcmVzV2l0aFNlbGYpIHsKKyAgY29uc3QgdHVwbGU8aW50LCBjaGFyLCBib29sPiBhKDUs
ICdhJywgZmFsc2UpOworCisgIEVYUEVDVF9UUlVFKGEgPT0gYSk7CisgIEVYUEVDVF9GQUxTRShh
ICE9IGEpOworfQorCisvLyBUZXN0cyBjb21wYXJpbmcgdHdvIHR1cGxlcyB3aXRoIHRoZSBzYW1l
IHZhbHVlLgorVEVTVChDb21wYXJpc29uVGVzdCwgQ29tcGFyZXNFcXVhbFR1cGxlcykgeworICBj
b25zdCB0dXBsZTxpbnQsIGJvb2w+IGEoNSwgdHJ1ZSksIGIoNSwgdHJ1ZSk7CisKKyAgRVhQRUNU
X1RSVUUoYSA9PSBiKTsKKyAgRVhQRUNUX0ZBTFNFKGEgIT0gYik7Cit9CisKKy8vIFRlc3RzIGNv
bXBhcmluZyB0d28gZGlmZmVyZW50IHR1cGxlcyB0aGF0IGhhdmUgbm8gcmVmZXJlbmNlIGZpZWxk
cy4KK1RFU1QoQ29tcGFyaXNvblRlc3QsIENvbXBhcmVzVW5lcXVhbFR1cGxlc1dpdGhvdXRSZWZl
cmVuY2VGaWVsZHMpIHsKKyAgdHlwZWRlZiB0dXBsZTxjb25zdCBpbnQsIGNoYXI+IEZvb1R1cGxl
OworCisgIGNvbnN0IEZvb1R1cGxlIGEoMCwgJ3gnKTsKKyAgY29uc3QgRm9vVHVwbGUgYigxLCAn
YScpOworCisgIEVYUEVDVF9UUlVFKGEgIT0gYik7CisgIEVYUEVDVF9GQUxTRShhID09IGIpOwor
CisgIGNvbnN0IEZvb1R1cGxlIGMoMSwgJ2InKTsKKworICBFWFBFQ1RfVFJVRShiICE9IGMpOwor
ICBFWFBFQ1RfRkFMU0UoYiA9PSBjKTsKK30KKworLy8gVGVzdHMgY29tcGFyaW5nIHR3byBkaWZm
ZXJlbnQgdHVwbGVzIHRoYXQgaGF2ZSByZWZlcmVuY2UgZmllbGRzLgorVEVTVChDb21wYXJpc29u
VGVzdCwgQ29tcGFyZXNVbmVxdWFsVHVwbGVzV2l0aFJlZmVyZW5jZUZpZWxkcykgeworICB0eXBl
ZGVmIHR1cGxlPGludCYsIGNvbnN0IGNoYXImPiBGb29UdXBsZTsKKworICBpbnQgaSA9IDU7Cisg
IGNvbnN0IGNoYXIgY2ggPSAnYSc7CisgIGNvbnN0IEZvb1R1cGxlIGEoaSwgY2gpOworCisgIGlu
dCBqID0gNjsKKyAgY29uc3QgRm9vVHVwbGUgYihqLCBjaCk7CisKKyAgRVhQRUNUX1RSVUUoYSAh
PSBiKTsKKyAgRVhQRUNUX0ZBTFNFKGEgPT0gYik7CisKKyAgaiA9IDU7CisgIGNvbnN0IGNoYXIg
Y2gyID0gJ2InOworICBjb25zdCBGb29UdXBsZSBjKGosIGNoMik7CisKKyAgRVhQRUNUX1RSVUUo
YiAhPSBjKTsKKyAgRVhQRUNUX0ZBTFNFKGIgPT0gYyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSB0
dXBsZSBmaWVsZCB3aXRoIGEgcmVmZXJlbmNlIHR5cGUgaXMgYW4gYWxpYXMgb2YgdGhlCisvLyB2
YXJpYWJsZSBpdCdzIHN1cHBvc2VkIHRvIHJlZmVyZW5jZS4KK1RFU1QoUmVmZXJlbmNlRmllbGRU
ZXN0LCBJc0FsaWFzT2ZSZWZlcmVuY2VkVmFyaWFibGUpIHsKKyAgaW50IG4gPSAwOworICB0dXBs
ZTxib29sLCBpbnQmPiB0KHRydWUsIG4pOworCisgIG4gPSAxOworICBFWFBFQ1RfRVEobiwgZ2V0
PDE+KHQpKQorICAgICAgPDwgIkNoYW5naW5nIGEgdW5kZXJseWluZyB2YXJpYWJsZSBzaG91bGQg
dXBkYXRlIHRoZSByZWZlcmVuY2UgZmllbGQuIjsKKworICAvLyBNYWtlcyBzdXJlIHRoYXQgdGhl
IGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgZG8gYW55dGhpbmcgZnVubnkgd2l0aAorICAvLyB0aGUg
JiBvcGVyYXRvciBmb3IgdGhlIHJldHVybiB0eXBlIG9mIGdldDw+KCkuCisgIEVYUEVDVF9FUSgm
biwgJihnZXQ8MT4odCkpKQorICAgICAgPDwgIlRoZSBhZGRyZXNzIG9mIGEgcmVmZXJlbmNlIGZp
ZWxkIHNob3VsZCBlcXVhbCB0aGUgYWRkcmVzcyBvZiAiCisgICAgICA8PCAidGhlIHVuZGVybHlp
bmcgdmFyaWFibGUuIjsKKworICBnZXQ8MT4odCkgPSAyOworICBFWFBFQ1RfRVEoMiwgbikKKyAg
ICAgIDw8ICJDaGFuZ2luZyBhIHJlZmVyZW5jZSBmaWVsZCBzaG91bGQgdXBkYXRlIHRoZSB1bmRl
cmx5aW5nIHZhcmlhYmxlLiI7Cit9CisKKy8vIFRlc3RzIHRoYXQgdHVwbGUncyBkZWZhdWx0IGNv
bnN0cnVjdG9yIGRlZmF1bHQgaW5pdGlhbGl6ZXMgZWFjaCBmaWVsZC4KKy8vIFRoaXMgdGVzdCBu
ZWVkcyB0byBjb21waWxlIHdpdGhvdXQgZ2VuZXJhdGluZyB3YXJuaW5ncy4KK1RFU1QoVHVwbGVD
b25zdHJ1Y3RvclRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvckRlZmF1bHRJbml0aWFsaXplc0VhY2hG
aWVsZCkgeworICAvLyBUaGUgVFIxIHJlcG9ydCByZXF1aXJlcyB0aGF0IHR1cGxlJ3MgZGVmYXVs
dCBjb25zdHJ1Y3RvciBkZWZhdWx0CisgIC8vIGluaXRpYWxpemVzIGVhY2ggZmllbGQsIGV2ZW4g
aWYgaXQncyBhIHByaW1pdGl2ZSB0eXBlLiAgSWYgdGhlCisgIC8vIGltcGxlbWVudGF0aW9uIGZv
cmdldHMgdG8gZG8gdGhpcywgdGhpcyB0ZXN0IHdpbGwgY2F0Y2ggaXQgYnkKKyAgLy8gZ2VuZXJh
dGluZyB3YXJuaW5ncyBhYm91dCB1c2luZyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyAoYXNzdW1p
bmcKKyAgLy8gYSBkZWNlbnQgY29tcGlsZXIpLgorCisgIHR1cGxlPD4gZW1wdHk7CisKKyAgdHVw
bGU8aW50PiBhMSwgYjE7CisgIGIxID0gYTE7CisgIEVYUEVDVF9FUSgwLCBnZXQ8MD4oYjEpKTsK
KworICB0dXBsZTxpbnQsIGRvdWJsZT4gYTIsIGIyOworICBiMiA9IGEyOworICBFWFBFQ1RfRVEo
MCwgZ2V0PDA+KGIyKSk7CisgIEVYUEVDVF9FUSgwLjAsIGdldDwxPihiMikpOworCisgIHR1cGxl
PGRvdWJsZSwgY2hhciwgYm9vbCo+IGEzLCBiMzsKKyAgYjMgPSBhMzsKKyAgRVhQRUNUX0VRKDAu
MCwgZ2V0PDA+KGIzKSk7CisgIEVYUEVDVF9FUSgnXDAnLCBnZXQ8MT4oYjMpKTsKKyAgRVhQRUNU
X1RSVUUoZ2V0PDI+KGIzKSA9PSBOVUxMKTsKKworICB0dXBsZTxpbnQsIGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQ+IGExMCwgYjEwOworICBiMTAgPSBhMTA7Cisg
IEVYUEVDVF9FUSgwLCBnZXQ8MD4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8MT4oYjEwKSk7
CisgIEVYUEVDVF9FUSgwLCBnZXQ8Mj4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8Mz4oYjEw
KSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8ND4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8NT4o
YjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8Nj4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8
Nz4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8OD4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBn
ZXQ8OT4oYjEwKSk7Cit9CisKKy8vIFRlc3RzIGNvbnN0cnVjdGluZyBhIHR1cGxlIGZyb20gaXRz
IGZpZWxkcy4KK1RFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3QsIENvbnN0cnVjdHNGcm9tRmllbGRz
KSB7CisgIGludCBuID0gMTsKKyAgLy8gUmVmZXJlbmNlIGZpZWxkLgorICB0dXBsZTxpbnQmPiBh
KG4pOworICBFWFBFQ1RfRVEoJm4sICYoZ2V0PDA+KGEpKSk7CisKKyAgLy8gTm9uLXJlZmVyZW5j
ZSBmaWVsZHMuCisgIHR1cGxlPGludCwgY2hhcj4gYig1LCAnYScpOworICBFWFBFQ1RfRVEoNSwg
Z2V0PDA+KGIpKTsKKyAgRVhQRUNUX0VRKCdhJywgZ2V0PDE+KGIpKTsKKworICAvLyBDb25zdCBy
ZWZlcmVuY2UgZmllbGQuCisgIGNvbnN0IGludCBtID0gMjsKKyAgdHVwbGU8Ym9vbCwgY29uc3Qg
aW50Jj4gYyh0cnVlLCBtKTsKKyAgRVhQRUNUX1RSVUUoZ2V0PDA+KGMpKTsKKyAgRVhQRUNUX0VR
KCZtLCAmKGdldDwxPihjKSkpOworfQorCisvLyBUZXN0cyB0dXBsZSdzIGNvcHkgY29uc3RydWN0
b3IuCitURVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBDb3B5Q29uc3RydWN0b3IpIHsKKyAgdHVw
bGU8ZG91YmxlLCBib29sPiBhKDAuMCwgdHJ1ZSk7CisgIHR1cGxlPGRvdWJsZSwgYm9vbD4gYihh
KTsKKworICBFWFBFQ1RfRE9VQkxFX0VRKDAuMCwgZ2V0PDA+KGIpKTsKKyAgRVhQRUNUX1RSVUUo
Z2V0PDE+KGIpKTsKK30KKworLy8gVGVzdHMgY29uc3RydWN0aW5nIGEgdHVwbGUgZnJvbSBhbm90
aGVyIHR1cGxlIHRoYXQgaGFzIGEgY29tcGF0aWJsZQorLy8gYnV0IGRpZmZlcmVudCB0eXBlLgor
VEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgQ29uc3RydWN0c0Zyb21EaWZmZXJlbnRUdXBsZVR5
cGUpIHsKKyAgdHVwbGU8aW50LCBpbnQsIGNoYXI+IGEoMCwgMSwgJ2EnKTsKKyAgdHVwbGU8ZG91
YmxlLCBsb25nLCBpbnQ+IGIoYSk7CisKKyAgRVhQRUNUX0RPVUJMRV9FUSgwLjAsIGdldDwwPihi
KSk7CisgIEVYUEVDVF9FUSgxLCBnZXQ8MT4oYikpOworICBFWFBFQ1RfRVEoJ2EnLCBnZXQ8Mj4o
YikpOworfQorCisvLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSAyLXR1cGxlIGZyb20gYW4gc3RkOjpw
YWlyLgorVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgQ29uc3RydWN0c0Zyb21QYWlyKSB7Cisg
IDo6c3RkOjpwYWlyPGludCwgY2hhcj4gYSgxLCAnYScpOworICB0dXBsZTxpbnQsIGNoYXI+IGIo
YSk7CisgIHR1cGxlPGludCwgY29uc3QgY2hhciY+IGMoYSk7Cit9CisKKy8vIFRlc3RzIGFzc2ln
bmluZyBhIHR1cGxlIHRvIGFub3RoZXIgdHVwbGUgd2l0aCB0aGUgc2FtZSB0eXBlLgorVEVTVChU
dXBsZUFzc2lnbm1lbnRUZXN0LCBBc3NpZ25zVG9TYW1lVHVwbGVUeXBlKSB7CisgIGNvbnN0IHR1
cGxlPGludCwgbG9uZz4gYSg1LCA3TCk7CisgIHR1cGxlPGludCwgbG9uZz4gYjsKKyAgYiA9IGE7
CisgIEVYUEVDVF9FUSg1LCBnZXQ8MD4oYikpOworICBFWFBFQ1RfRVEoN0wsIGdldDwxPihiKSk7
Cit9CisKKy8vIFRlc3RzIGFzc2lnbmluZyBhIHR1cGxlIHRvIGFub3RoZXIgdHVwbGUgd2l0aCBh
IGRpZmZlcmVudCBidXQKKy8vIGNvbXBhdGlibGUgdHlwZS4KK1RFU1QoVHVwbGVBc3NpZ25tZW50
VGVzdCwgQXNzaWduc1RvRGlmZmVyZW50VHVwbGVUeXBlKSB7CisgIGNvbnN0IHR1cGxlPGludCwg
bG9uZywgYm9vbD4gYSgxLCA3TCwgdHJ1ZSk7CisgIHR1cGxlPGxvbmcsIGludCwgYm9vbD4gYjsK
KyAgYiA9IGE7CisgIEVYUEVDVF9FUSgxTCwgZ2V0PDA+KGIpKTsKKyAgRVhQRUNUX0VRKDcsIGdl
dDwxPihiKSk7CisgIEVYUEVDVF9UUlVFKGdldDwyPihiKSk7Cit9CisKKy8vIFRlc3RzIGFzc2ln
bmluZyBhbiBzdGQ6OnBhaXIgdG8gYSAyLXR1cGxlLgorVEVTVChUdXBsZUFzc2lnbm1lbnRUZXN0
LCBBc3NpZ25zRnJvbVBhaXIpIHsKKyAgY29uc3QgOjpzdGQ6OnBhaXI8aW50LCBib29sPiBhKDUs
IHRydWUpOworICB0dXBsZTxpbnQsIGJvb2w+IGI7CisgIGIgPSBhOworICBFWFBFQ1RfRVEoNSwg
Z2V0PDA+KGIpKTsKKyAgRVhQRUNUX1RSVUUoZ2V0PDE+KGIpKTsKKworICB0dXBsZTxsb25nLCBi
b29sPiBjOworICBjID0gYTsKKyAgRVhQRUNUX0VRKDVMLCBnZXQ8MD4oYykpOworICBFWFBFQ1Rf
VFJVRShnZXQ8MT4oYykpOworfQorCisvLyBBIGZpeHR1cmUgZm9yIHRlc3RpbmcgYmlnIHR1cGxl
cy4KK2NsYXNzIEJpZ1R1cGxlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0
ZWQ6CisgIHR5cGVkZWYgdHVwbGU8aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50PiBCaWdUdXBsZTsKKworICBCaWdUdXBsZVRlc3QoKSA6CisgICAgICBhXygx
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyKSwKKyAgICAgIGJfKDEsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDMpIHt9CisKKyAgQmlnVHVwbGUgYV8sIGJfOworfTsKKworLy8gVGVzdHMgY29u
c3RydWN0aW5nIGJpZyB0dXBsZXMuCitURVNUX0YoQmlnVHVwbGVUZXN0LCBDb25zdHJ1Y3Rpb24p
IHsKKyAgQmlnVHVwbGUgYTsKKyAgQmlnVHVwbGUgYihiXyk7Cit9CisKKy8vIFRlc3RzIHRoYXQg
Z2V0PE4+KHQpIHJldHVybnMgdGhlIE4tdGggKDAtYmFzZWQpIGZpZWxkIG9mIHR1cGxlIHQuCitU
RVNUX0YoQmlnVHVwbGVUZXN0LCBnZXQpIHsKKyAgRVhQRUNUX0VRKDEsIGdldDwwPihhXykpOwor
ICBFWFBFQ1RfRVEoMiwgZ2V0PDk+KGFfKSk7CisKKyAgLy8gVGVzdHMgdGhhdCBnZXQoKSB3b3Jr
cyBvbiBhIGNvbnN0IHR1cGxlIHRvby4KKyAgY29uc3QgQmlnVHVwbGUgYShhXyk7CisgIEVYUEVD
VF9FUSgxLCBnZXQ8MD4oYSkpOworICBFWFBFQ1RfRVEoMiwgZ2V0PDk+KGEpKTsKK30KKworLy8g
VGVzdHMgY29tcGFyaW5nIGJpZyB0dXBsZXMuCitURVNUX0YoQmlnVHVwbGVUZXN0LCBDb21wYXJp
c29ucykgeworICBFWFBFQ1RfVFJVRShhXyA9PSBhXyk7CisgIEVYUEVDVF9GQUxTRShhXyAhPSBh
Xyk7CisKKyAgRVhQRUNUX1RSVUUoYV8gIT0gYl8pOworICBFWFBFQ1RfRkFMU0UoYV8gPT0gYl8p
OworfQorCitURVNUKE1ha2VUdXBsZVRlc3QsIFdvcmtzRm9yU2NhbGFyVHlwZXMpIHsKKyAgdHVw
bGU8Ym9vbCwgaW50PiBhOworICBhID0gbWFrZV90dXBsZSh0cnVlLCA1KTsKKyAgRVhQRUNUX1RS
VUUoZ2V0PDA+KGEpKTsKKyAgRVhQRUNUX0VRKDUsIGdldDwxPihhKSk7CisKKyAgdHVwbGU8Y2hh
ciwgaW50LCBsb25nPiBiOworICBiID0gbWFrZV90dXBsZSgnYScsICdiJywgNSk7CisgIEVYUEVD
VF9FUSgnYScsIGdldDwwPihiKSk7CisgIEVYUEVDVF9FUSgnYicsIGdldDwxPihiKSk7CisgIEVY
UEVDVF9FUSg1LCBnZXQ8Mj4oYikpOworfQorCitURVNUKE1ha2VUdXBsZVRlc3QsIFdvcmtzRm9y
UG9pbnRlcnMpIHsKKyAgaW50IGFbXSA9IHsgMSwgMiwgMywgNCB9OworICBjb25zdCBjaGFyKiBj
b25zdCBzdHIgPSAiaGkiOworICBpbnQqIGNvbnN0IHAgPSBhOworCisgIHR1cGxlPGNvbnN0IGNo
YXIqLCBpbnQqPiB0OworICB0ID0gbWFrZV90dXBsZShzdHIsIHApOworICBFWFBFQ1RfRVEoc3Ry
LCBnZXQ8MD4odCkpOworICBFWFBFQ1RfRVEocCwgZ2V0PDE+KHQpKTsKK30KKworfSAgLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtdW5pbml0aWFsaXplZC10ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
b29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjdkMWU3NGY2N2Zj
YjAwY2I4NDg1NTc5NjdkZWY0ZjZhNTZjYzhmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdC5weQpAQCAt
MCwwICsxLDY3IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDgs
IEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisiIiJWZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IHdhcm5zIHRoZSB1c2VyIHdoZW4gbm90IGlu
aXRpYWxpemVkIHByb3Blcmx5LiIiIgorCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitDT01N
QU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2dvb2dsZXRlc3Qt
dW5pbml0aWFsaXplZC10ZXN0XycpCisKKworZGVmIEFzc2VydChjb25kaXRpb24pOgorICBpZiBu
b3QgY29uZGl0aW9uOgorICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisKKworZGVmIEFzc2VydEVx
KGV4cGVjdGVkLCBhY3R1YWwpOgorICBpZiBleHBlY3RlZCAhPSBhY3R1YWw6CisgICAgcHJpbnQg
J0V4cGVjdGVkOiAlcycgJSAoZXhwZWN0ZWQsKQorICAgIHByaW50ICcgIEFjdHVhbDogJXMnICUg
KGFjdHVhbCwpCisgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKKworCitkZWYgVGVzdEV4aXRDb2Rl
QW5kT3V0cHV0KGNvbW1hbmQpOgorICAiIiJSdW5zIHRoZSBnaXZlbiBjb21tYW5kIGFuZCB2ZXJp
ZmllcyBpdHMgZXhpdCBjb2RlIGFuZCBvdXRwdXQuIiIiCisKKyAgIyBWZXJpZmllcyB0aGF0ICdj
b21tYW5kJyBleGl0cyB3aXRoIGNvZGUgMS4KKyAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJv
Y2Vzcyhjb21tYW5kKQorICBpZiBwLmV4aXRlZCBhbmQgcC5leGl0X2NvZGUgPT0gMDoKKyAgICBB
c3NlcnQoJ0lNUE9SVEFOVCBOT1RJQ0UnIGluIHAub3V0cHV0KTsKKyAgQXNzZXJ0KCdJbml0R29v
Z2xlVGVzdCcgaW4gcC5vdXRwdXQpCisKKworY2xhc3MgR1Rlc3RVbmluaXRpYWxpemVkVGVzdChn
dGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgZGVmIHRlc3RFeGl0Q29kZUFuZE91dHB1dChz
ZWxmKToKKyAgICBUZXN0RXhpdENvZGVBbmRPdXRwdXQoQ09NTUFORCkKKworCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVz
dF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdW5pbml0aWFs
aXplZC10ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDQzNGQ1MWVlYmZkODcyNmJkM2YwNGMyZDA0MjZi
YmE5NjAyOThjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9nb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdF8uY2MKQEAgLTAsMCArMSw0MiBAQAorLy8g
Q29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0
cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisv
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgorCitURVNUKER1bW15VGVzdCwgRHVtbXkpIHsKKyAgLy8gVGhpcyB0ZXN0
IGRvZXNuJ3QgdmVyaWZ5IGFueXRoaW5nLiAgV2UganVzdCBuZWVkIGl0IHRvIGNyZWF0ZSBhCisg
IC8vIHJlYWxpc3RpYyBzdGFnZSBmb3IgdGVzdGluZyB0aGUgYmVoYXZpb3Igb2YgR29vZ2xlIFRl
c3Qgd2hlbgorICAvLyBSVU5fQUxMX1RFU1RTKCkgaXMgY2FsbGVkIHdpdGhvdXQKKyAgLy8gdGVz
dGluZzo6SW5pdEdvb2dsZVRlc3QoKSBiZWluZyBjYWxsZWQgZmlyc3QuCit9CisKK2ludCBtYWlu
KCkgeworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfdGVzdC5jYwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZWQ1YjUzYjcxYWYyZjc5NTYwZDcxNzJhYTY3Y2M3NDBiYTcwNDAx
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfdGVzdC5jYworKysgL2Rldi9u
dWxsCkBAIC0xLDEyMzAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCi0v
LyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0v
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikK
LS8vCi0vLyBUZXN0cyBmb3IgZGVhdGggdGVzdHMuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1k
ZWF0aC10ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9p
bnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oPgotCi11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QWx3
YXlzRmFsc2U7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZTsKLQotI2lmIEdU
RVNUX0hBU19ERUFUSF9URVNUCi0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0jaW5jbHVkZSA8ZGly
ZWN0Lmg+ICAgICAgICAgIC8vIEZvciBjaGRpcigpLgotI2Vsc2UKLSNpbmNsdWRlIDx1bmlzdGQu
aD4KLSNpbmNsdWRlIDxzeXMvd2FpdC5oPiAgICAgICAgLy8gRm9yIHdhaXRwaWQuCi0jaW5jbHVk
ZSA8bGltaXRzPiAgICAgICAgICAgIC8vIEZvciBzdGQ6Om51bWVyaWNfbGltaXRzLgotI2VuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxz
aWduYWwuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3Bp
Lmg+Ci0KLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9m
IEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBn
dGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBj
b21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2VyIGZyb20g
YWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8gaGlzIGNv
ZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0
LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi1uYW1lc3Bh
Y2UgcG9zaXggPSA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDsKLQotdXNpbmcgdGVzdGluZzo6
TWVzc2FnZTsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q7Ci11c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0RmFjdG9yeTsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjpGaWxlUGF0aDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRMYXN0RXJybm9EZXNjcmlw
dGlvbjsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRVbml0VGVzdEltcGw7Ci11c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6UGFyc2VOYXR1cmFsTnVtYmVyOwotdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OlN0cmluZzsKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVybmFs
IHsKLQotLy8gQSBoZWxwZXIgY2xhc3Mgd2hvc2Ugb2JqZWN0cyByZXBsYWNlIHRoZSBkZWF0aCB0
ZXN0IGZhY3RvcnkgZm9yIGEKLS8vIHNpbmdsZSBVbml0VGVzdCBvYmplY3QgZHVyaW5nIHRoZWly
IGxpZmV0aW1lcy4KLWNsYXNzIFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5IHsKLSBwdWJsaWM6Ci0g
IGV4cGxpY2l0IFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KERlYXRoVGVzdEZhY3RvcnkqIG5ld19m
YWN0b3J5KQotICAgICAgOiB1bml0X3Rlc3RfaW1wbF8oR2V0VW5pdFRlc3RJbXBsKCkpIHsKLSAg
ICBvbGRfZmFjdG9yeV8gPSB1bml0X3Rlc3RfaW1wbF8tPmRlYXRoX3Rlc3RfZmFjdG9yeV8ucmVs
ZWFzZSgpOwotICAgIHVuaXRfdGVzdF9pbXBsXy0+ZGVhdGhfdGVzdF9mYWN0b3J5Xy5yZXNldChu
ZXdfZmFjdG9yeSk7Ci0gIH0KLQotICB+UmVwbGFjZURlYXRoVGVzdEZhY3RvcnkoKSB7Ci0gICAg
dW5pdF90ZXN0X2ltcGxfLT5kZWF0aF90ZXN0X2ZhY3RvcnlfLnJlbGVhc2UoKTsKLSAgICB1bml0
X3Rlc3RfaW1wbF8tPmRlYXRoX3Rlc3RfZmFjdG9yeV8ucmVzZXQob2xkX2ZhY3RvcnlfKTsKLSAg
fQotIHByaXZhdGU6Ci0gIC8vIFByZXZlbnRzIGNvcHlpbmcgUmVwbGFjZURlYXRoVGVzdEZhY3Rv
cnkgb2JqZWN0cy4KLSAgUmVwbGFjZURlYXRoVGVzdEZhY3RvcnkoY29uc3QgUmVwbGFjZURlYXRo
VGVzdEZhY3RvcnkmKTsKLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgUmVwbGFjZURlYXRoVGVzdEZh
Y3RvcnkmKTsKLQotICBVbml0VGVzdEltcGwqIHVuaXRfdGVzdF9pbXBsXzsKLSAgRGVhdGhUZXN0
RmFjdG9yeSogb2xkX2ZhY3RvcnlfOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi19
ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi12b2lkIERpZUluc2lkZShjb25zdCBjaGFyKiBmdW5j
dGlvbikgewotICBmcHJpbnRmKHN0ZGVyciwgImRlYXRoIGluc2lkZSAlcygpLiIsIGZ1bmN0aW9u
KTsKLSAgZmZsdXNoKHN0ZGVycik7Ci0gIC8vIFdlIGNhbGwgX2V4aXQoKSBpbnN0ZWFkIG9mIGV4
aXQoKSwgYXMgdGhlIGZvcm1lciBpcyBhIGRpcmVjdAotICAvLyBzeXN0ZW0gY2FsbCBhbmQgdGh1
cyBzYWZlciBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhyZWFkcy4gIGV4aXQoKQotICAvLyB3aWxsIGlu
dm9rZSB1c2VyLWRlZmluZWQgZXhpdC1ob29rcywgd2hpY2ggbWF5IGRvIGRhbmdlcm91cwotICAv
LyB0aGluZ3MgdGhhdCBjb25mbGljdCB3aXRoIGRlYXRoIHRlc3RzLgotICAvLwotICAvLyBTb21l
IGNvbXBpbGVycyBjYW4gcmVjb2duaXplIHRoYXQgX2V4aXQoKSBuZXZlciByZXR1cm5zIGFuZCBp
c3N1ZSB0aGUKLSAgLy8gJ3VucmVhY2hhYmxlIGNvZGUnIHdhcm5pbmcgZm9yIGNvZGUgZm9sbG93
aW5nIHRoaXMgZnVuY3Rpb24sIHVubGVzcwotICAvLyBmb29sZWQgYnkgYSBmYWtlIGNvbmRpdGlv
bi4KLSAgaWYgKEFsd2F5c1RydWUoKSkKLSAgICBfZXhpdCgxKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBkZWF0aCB0ZXN0cyB3b3JrLgotCi1jbGFzcyBUZXN0Rm9yRGVhdGhUZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgVGVzdEZvckRlYXRoVGVzdCgpIDogb3JpZ2lu
YWxfZGlyXyhGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpKSB7fQotCi0gIHZpcnR1YWwgflRlc3RG
b3JEZWF0aFRlc3QoKSB7Ci0gICAgcG9zaXg6OkNoRGlyKG9yaWdpbmFsX2Rpcl8uY19zdHIoKSk7
Ci0gIH0KLQotICAvLyBBIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24gdGhhdCdzIGV4cGVjdGVkIHRv
IGRpZS4KLSAgc3RhdGljIHZvaWQgU3RhdGljTWVtYmVyRnVuY3Rpb24oKSB7IERpZUluc2lkZSgi
U3RhdGljTWVtYmVyRnVuY3Rpb24iKTsgfQotCi0gIC8vIEEgbWV0aG9kIG9mIHRoZSB0ZXN0IGZp
eHR1cmUgdGhhdCBtYXkgZGllLgotICB2b2lkIE1lbWJlckZ1bmN0aW9uKCkgewotICAgIGlmIChz
aG91bGRfZGllXykKLSAgICAgIERpZUluc2lkZSgiTWVtYmVyRnVuY3Rpb24iKTsKLSAgfQotCi0g
IC8vIFRydWUgaWZmIE1lbWJlckZ1bmN0aW9uKCkgc2hvdWxkIGRpZS4KLSAgYm9vbCBzaG91bGRf
ZGllXzsKLSAgY29uc3QgRmlsZVBhdGggb3JpZ2luYWxfZGlyXzsKLX07Ci0KLS8vIEEgY2xhc3Mg
d2l0aCBhIG1lbWJlciBmdW5jdGlvbiB0aGF0IG1heSBkaWUuCi1jbGFzcyBNYXlEaWUgewotIHB1
YmxpYzoKLSAgZXhwbGljaXQgTWF5RGllKGJvb2wgc2hvdWxkX2RpZSkgOiBzaG91bGRfZGllXyhz
aG91bGRfZGllKSB7fQotCi0gIC8vIEEgbWVtYmVyIGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KLSAg
dm9pZCBNZW1iZXJGdW5jdGlvbigpIGNvbnN0IHsKLSAgICBpZiAoc2hvdWxkX2RpZV8pCi0gICAg
ICBEaWVJbnNpZGUoIk1heURpZTo6TWVtYmVyRnVuY3Rpb24iKTsKLSAgfQotCi0gcHJpdmF0ZToK
LSAgLy8gVHJ1ZSBpZmYgTWVtYmVyRnVuY3Rpb24oKSBzaG91bGQgZGllLgotICBib29sIHNob3Vs
ZF9kaWVfOwotfTsKLQotLy8gQSBnbG9iYWwgZnVuY3Rpb24gdGhhdCdzIGV4cGVjdGVkIHRvIGRp
ZS4KLXZvaWQgR2xvYmFsRnVuY3Rpb24oKSB7IERpZUluc2lkZSgiR2xvYmFsRnVuY3Rpb24iKTsg
fQotCi0vLyBBIG5vbi12b2lkIGZ1bmN0aW9uIHRoYXQncyBleHBlY3RlZCB0byBkaWUuCi1pbnQg
Tm9uVm9pZEZ1bmN0aW9uKCkgewotICBEaWVJbnNpZGUoIk5vblZvaWRGdW5jdGlvbiIpOwotICBy
ZXR1cm4gMTsKLX0KLQotLy8gQSB1bmFyeSBmdW5jdGlvbiB0aGF0IG1heSBkaWUuCi12b2lkIERp
ZUlmKGJvb2wgc2hvdWxkX2RpZSkgewotICBpZiAoc2hvdWxkX2RpZSkKLSAgICBEaWVJbnNpZGUo
IkRpZUlmIik7Ci19Ci0KLS8vIEEgYmluYXJ5IGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KLWJvb2wg
RGllSWZMZXNzVGhhbihpbnQgeCwgaW50IHkpIHsKLSAgaWYgKHggPCB5KSB7Ci0gICAgRGllSW5z
aWRlKCJEaWVJZkxlc3NUaGFuIik7Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgQVNTRVJUX0RFQVRIIGNhbiBiZSB1c2VkIG91dHNpZGUgYSBURVNULCBURVNUX0YsIG9y
IHRlc3QgZml4dHVyZS4KLXZvaWQgRGVhdGhUZXN0U3Vicm91dGluZSgpIHsKLSAgRVhQRUNUX0RF
QVRIKEdsb2JhbEZ1bmN0aW9uKCksICJkZWF0aC4qR2xvYmFsRnVuY3Rpb24iKTsKLSAgQVNTRVJU
X0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksICJkZWF0aC4qR2xvYmFsRnVuY3Rpb24iKTsKLX0KLQot
Ly8gRGVhdGggaW4gZGJnLCBub3Qgb3B0LgotaW50IERpZUluRGVidWdFbHNlMTIoaW50KiBzaWRl
ZWZmZWN0KSB7Ci0gIGlmIChzaWRlZWZmZWN0KSAqc2lkZWVmZmVjdCA9IDEyOwotI2lmbmRlZiBO
REVCVUcKLSAgRGllSW5zaWRlKCJEaWVJbkRlYnVnRWxzZTEyIik7Ci0jZW5kaWYgIC8vIE5ERUJV
RwotICByZXR1cm4gMTI7Ci19Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0KLS8vIFRlc3RzIHRo
ZSBFeGl0ZWRXaXRoQ29kZSBwcmVkaWNhdGUuCi1URVNUKEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0
LCBFeGl0ZWRXaXRoQ29kZSkgewotICAvLyBPbiBXaW5kb3dzLCB0aGUgcHJvY2VzcydzIGV4aXQg
Y29kZSBpcyB0aGUgc2FtZSBhcyBpdHMgZXhpdCBzdGF0dXMsCi0gIC8vIHNvIHRoZSBwcmVkaWNh
dGUganVzdCBjb21wYXJlcyB0aGUgaXRzIGlucHV0IHdpdGggaXRzIHBhcmFtZXRlci4KLSAgRVhQ
RUNUX1RSVUUodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCkoMCkpOwotICBFWFBFQ1RfVFJVRSh0
ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSgxKSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Rpbmc6OkV4
aXRlZFdpdGhDb2RlKDQyKSg0MikpOwotICBFWFBFQ1RfRkFMU0UodGVzdGluZzo6RXhpdGVkV2l0
aENvZGUoMCkoMSkpOwotICBFWFBFQ1RfRkFMU0UodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSko
MCkpOwotfQotCi0jZWxzZQotCi0vLyBSZXR1cm5zIHRoZSBleGl0IHN0YXR1cyBvZiBhIHByb2Nl
c3MgdGhhdCBjYWxscyBfZXhpdCgyKSB3aXRoIGEKLS8vIGdpdmVuIGV4aXQgY29kZS4gIFRoaXMg
aXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIHRoZQotLy8gRXhpdFN0YXR1c1ByZWRpY2F0ZVRlc3Qg
dGVzdCBzdWl0ZS4KLXN0YXRpYyBpbnQgTm9ybWFsRXhpdFN0YXR1cyhpbnQgZXhpdF9jb2RlKSB7
Ci0gIHBpZF90IGNoaWxkX3BpZCA9IGZvcmsoKTsKLSAgaWYgKGNoaWxkX3BpZCA9PSAwKSB7Ci0g
ICAgX2V4aXQoZXhpdF9jb2RlKTsKLSAgfQotICBpbnQgc3RhdHVzOwotICB3YWl0cGlkKGNoaWxk
X3BpZCwgJnN0YXR1cywgMCk7Ci0gIHJldHVybiBzdGF0dXM7Ci19Ci0KLS8vIFJldHVybnMgdGhl
IGV4aXQgc3RhdHVzIG9mIGEgcHJvY2VzcyB0aGF0IHJhaXNlcyBhIGdpdmVuIHNpZ25hbC4KLS8v
IElmIHRoZSBzaWduYWwgZG9lcyBub3QgY2F1c2UgdGhlIHByb2Nlc3MgdG8gZGllLCB0aGVuIGl0
IHJldHVybnMKLS8vIGluc3RlYWQgdGhlIGV4aXQgc3RhdHVzIG9mIGEgcHJvY2VzcyB0aGF0IGV4
aXRzIG5vcm1hbGx5IHdpdGggZXhpdAotLy8gY29kZSAxLiAgVGhpcyBpcyBhIGhlbHBlciBmdW5j
dGlvbiBmb3IgdGhlIEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0Ci0vLyB0ZXN0IHN1aXRlLgotc3Rh
dGljIGludCBLaWxsZWRFeGl0U3RhdHVzKGludCBzaWdudW0pIHsKLSAgcGlkX3QgY2hpbGRfcGlk
ID0gZm9yaygpOwotICBpZiAoY2hpbGRfcGlkID09IDApIHsKLSAgICByYWlzZShzaWdudW0pOwot
ICAgIF9leGl0KDEpOwotICB9Ci0gIGludCBzdGF0dXM7Ci0gIHdhaXRwaWQoY2hpbGRfcGlkLCAm
c3RhdHVzLCAwKTsKLSAgcmV0dXJuIHN0YXR1czsKLX0KLQotLy8gVGVzdHMgdGhlIEV4aXRlZFdp
dGhDb2RlIHByZWRpY2F0ZS4KLVRFU1QoRXhpdFN0YXR1c1ByZWRpY2F0ZVRlc3QsIEV4aXRlZFdp
dGhDb2RlKSB7Ci0gIGNvbnN0IGludCBzdGF0dXMwICA9IE5vcm1hbEV4aXRTdGF0dXMoMCk7Ci0g
IGNvbnN0IGludCBzdGF0dXMxICA9IE5vcm1hbEV4aXRTdGF0dXMoMSk7Ci0gIGNvbnN0IGludCBz
dGF0dXM0MiA9IE5vcm1hbEV4aXRTdGF0dXMoNDIpOwotICBjb25zdCB0ZXN0aW5nOjpFeGl0ZWRX
aXRoQ29kZSBwcmVkMCgwKTsKLSAgY29uc3QgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUgcHJlZDEo
MSk7Ci0gIGNvbnN0IHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlIHByZWQ0Mig0Mik7Ci0gIEVYUEVD
VF9QUkVEMShwcmVkMCwgIHN0YXR1czApOwotICBFWFBFQ1RfUFJFRDEocHJlZDEsICBzdGF0dXMx
KTsKLSAgRVhQRUNUX1BSRUQxKHByZWQ0Miwgc3RhdHVzNDIpOwotICBFWFBFQ1RfRkFMU0UocHJl
ZDAoc3RhdHVzMSkpOwotICBFWFBFQ1RfRkFMU0UocHJlZDQyKHN0YXR1czApKTsKLSAgRVhQRUNU
X0ZBTFNFKHByZWQxKHN0YXR1czQyKSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBLaWxsZWRCeVNpZ25h
bCBwcmVkaWNhdGUuCi1URVNUKEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0LCBLaWxsZWRCeVNpZ25h
bCkgewotICBjb25zdCBpbnQgc3RhdHVzX3NlZ3YgPSBLaWxsZWRFeGl0U3RhdHVzKFNJR1NFR1Yp
OwotICBjb25zdCBpbnQgc3RhdHVzX2tpbGwgPSBLaWxsZWRFeGl0U3RhdHVzKFNJR0tJTEwpOwot
ICBjb25zdCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbCBwcmVkX3NlZ3YoU0lHU0VHVik7Ci0gIGNv
bnN0IHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsIHByZWRfa2lsbChTSUdLSUxMKTsKLSAgRVhQRUNU
X1BSRUQxKHByZWRfc2Vndiwgc3RhdHVzX3NlZ3YpOwotICBFWFBFQ1RfUFJFRDEocHJlZF9raWxs
LCBzdGF0dXNfa2lsbCk7Ci0gIEVYUEVDVF9GQUxTRShwcmVkX3NlZ3Yoc3RhdHVzX2tpbGwpKTsK
LSAgRVhQRUNUX0ZBTFNFKHByZWRfa2lsbChzdGF0dXNfc2VndikpOwotfQotCi0jZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1MKLQotLy8gVGVzdHMgdGhhdCB0aGUgZGVhdGggdGVzdCBtYWNyb3Mg
ZXhwYW5kIHRvIGNvZGUgd2hpY2ggbWF5IG9yIG1heSBub3QKLS8vIGJlIGZvbGxvd2VkIGJ5IG9w
ZXJhdG9yPDwsIGFuZCB0aGF0IGluIGVpdGhlciBjYXNlIHRoZSBjb21wbGV0ZSB0ZXh0Ci0vLyBj
b21wcmlzZXMgb25seSBhIHNpbmdsZSBDKysgc3RhdGVtZW50LgotVEVTVF9GKFRlc3RGb3JEZWF0
aFRlc3QsIFNpbmdsZVN0YXRlbWVudCkgewotICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAgICAvLyBU
aGlzIHdvdWxkIGZhaWwgaWYgZXhlY3V0ZWQ7IHRoaXMgaXMgYSBjb21waWxhdGlvbiB0ZXN0IG9u
bHkKLSAgICBBU1NFUlRfREVBVEgocmV0dXJuLCAiIik7Ci0KLSAgaWYgKEFsd2F5c1RydWUoKSkK
LSAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKTsKLSAgZWxzZQotICAgIC8vIFRoaXMgZW1w
dHkgImVsc2UiIGJyYW5jaCBpcyBtZWFudCB0byBlbnN1cmUgdGhhdCBFWFBFQ1RfREVBVEgKLSAg
ICAvLyBkb2Vzbid0IGV4cGFuZCBpbnRvIGFuICJpZiIgc3RhdGVtZW50IHdpdGhvdXQgYW4gImVs
c2UiCi0gICAgOwotCi0gIGlmIChBbHdheXNGYWxzZSgpKQotICAgIEFTU0VSVF9ERUFUSChyZXR1
cm4sICIiKSA8PCAiZGlkIG5vdCBkaWUiOwotCi0gIGlmIChBbHdheXNGYWxzZSgpKQotICAgIDsK
LSAgZWxzZQotICAgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8IDEgPDwgMiA8PCAzOwot
fQotCi12b2lkIERpZVdpdGhFbWJlZGRlZE51bCgpIHsKLSAgZnByaW50ZihzdGRlcnIsICJIZWxs
byVjbXkgbnVsbCB3b3JsZC5cbiIsICdcMCcpOwotICBmZmx1c2goc3RkZXJyKTsKLSAgX2V4aXQo
MSk7Ci19Ci0KLSNpZiBHVEVTVF9VU0VTX1BDUkUKLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRI
IGFuZCBBU1NFUlRfREVBVEggd29yayB3aGVuIHRoZSBlcnJvcgotLy8gbWVzc2FnZSBoYXMgYSBO
VUwgY2hhcmFjdGVyIGluIGl0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEVtYmVkZGVkTnVs
SW5NZXNzYWdlKSB7Ci0gIC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiA8cmVnZXguaD4gZG9lc24n
dCBzdXBwb3J0IG1hdGNoaW5nIHN0cmluZ3MKLSAgLy8gd2l0aCBlbWJlZGRlZCBOVUwgY2hhcmFj
dGVycyAtIGZpbmQgYSB3YXkgdG8gd29ya2Fyb3VuZCBpdC4KLSAgRVhQRUNUX0RFQVRIKERpZVdp
dGhFbWJlZGRlZE51bCgpLCAibXkgbnVsbCB3b3JsZCIpOwotICBBU1NFUlRfREVBVEgoRGllV2l0
aEVtYmVkZGVkTnVsKCksICJteSBudWxsIHdvcmxkIik7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX1VT
RVNfUENSRQotCi0vLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3QgbWFjcm9zIGV4cGFuZCB0byBjb2Rl
IHdoaWNoIGludGVyYWN0cyB3ZWxsIHdpdGggc3dpdGNoCi0vLyBzdGF0ZW1lbnRzLgotVEVTVF9G
KFRlc3RGb3JEZWF0aFRlc3QsIFN3aXRjaFN0YXRlbWVudCkgewotLy8gTWljcm9zb2Z0IGNvbXBp
bGVyIHVzdWFsbHkgY29tcGxhaW5zIGFib3V0IHN3aXRjaCBzdGF0ZW1lbnRzIHdpdGhvdXQKLS8v
IGNhc2UgbGFiZWxzLiBXZSBzdXBwcmVzcyB0aGF0IHdhcm5pbmcgZm9yIHRoaXMgdGVzdC4KLSNp
ZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlz
YWJsZTogNDA2NSkKLSNlbmRpZiAgLy8gX01TQ19WRVIKLQotICBzd2l0Y2ggKDApCi0gICAgZGVm
YXVsdDoKLSAgICAgIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8ICJleGl0IGluIGRlZmF1
bHQgc3dpdGNoIGhhbmRsZXIiOwotCi0gIHN3aXRjaCAoMCkKLSAgICBjYXNlIDA6Ci0gICAgICBF
WFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKSA8PCAiZXhpdCBpbiBzd2l0Y2ggY2FzZSI7Ci0KLSNp
ZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZiAgLy8gX01TQ19WRVIK
LX0KLQotLy8gVGVzdHMgdGhhdCBhIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24gY2FuIGJlIHVzZWQg
aW4gYSAiZmFzdCIgc3R5bGUKLS8vIGRlYXRoIHRlc3QuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVz
dCwgU3RhdGljTWVtYmVyRnVuY3Rpb25GYXN0U3R5bGUpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxB
RyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKLSAgQVNTRVJUX0RFQVRIKFN0YXRpY01lbWJl
ckZ1bmN0aW9uKCksICJkZWF0aC4qU3RhdGljTWVtYmVyIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
YSBtZXRob2Qgb2YgdGhlIHRlc3QgZml4dHVyZSBjYW4gYmUgdXNlZCBpbiBhICJmYXN0IgotLy8g
c3R5bGUgZGVhdGggdGVzdC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNZW1iZXJGdW5jdGlv
bkZhc3RTdHlsZSkgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0g
ImZhc3QiOwotICBzaG91bGRfZGllXyA9IHRydWU7Ci0gIEVYUEVDVF9ERUFUSChNZW1iZXJGdW5j
dGlvbigpLCAiaW5zaWRlLipNZW1iZXJGdW5jdGlvbiIpOwotfQotCi12b2lkIENoYW5nZVRvUm9v
dERpcigpIHsgcG9zaXg6OkNoRGlyKEdURVNUX1BBVEhfU0VQXyk7IH0KLQotLy8gVGVzdHMgdGhh
dCBkZWF0aCB0ZXN0cyB3b3JrIGV2ZW4gaWYgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGhhcyBiZWVu
Ci0vLyBjaGFuZ2VkLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEZhc3REZWF0aFRlc3RJbkNo
YW5nZWREaXIpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJm
YXN0IjsKLQotICBDaGFuZ2VUb1Jvb3REaXIoKTsKLSAgRVhQRUNUX0VYSVQoX2V4aXQoMSksIHRl
c3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEpLCAiIik7Ci0KLSAgQ2hhbmdlVG9Sb290RGlyKCk7Ci0g
IEFTU0VSVF9ERUFUSChfZXhpdCgxKSwgIiIpOwotfQotCi0vLyBSZXBlYXRzIGEgcmVwcmVzZW50
YXRpdmUgc2FtcGxlIG9mIGRlYXRoIHRlc3RzIGluIHRoZSAidGhyZWFkc2FmZSIgc3R5bGU6Ci0K
LVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTdGF0aWNNZW1iZXJGdW5jdGlvblRocmVhZHNhZmVT
dHlsZSkgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVh
ZHNhZmUiOwotICBBU1NFUlRfREVBVEgoU3RhdGljTWVtYmVyRnVuY3Rpb24oKSwgImRlYXRoLipT
dGF0aWNNZW1iZXIiKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE1lbWJlckZ1bmN0
aW9uVGhyZWFkc2FmZVN0eWxlKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9z
dHlsZSkgPSAidGhyZWFkc2FmZSI7Ci0gIHNob3VsZF9kaWVfID0gdHJ1ZTsKLSAgRVhQRUNUX0RF
QVRIKE1lbWJlckZ1bmN0aW9uKCksICJpbnNpZGUuKk1lbWJlckZ1bmN0aW9uIik7Ci19Ci0KLVRF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUaHJlYWRzYWZlRGVhdGhUZXN0SW5Mb29wKSB7Ci0gIHRl
c3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7Ci0KLSAg
Zm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpCi0gICAgRVhQRUNUX0VYSVQoX2V4aXQoaSksIHRl
c3Rpbmc6OkV4aXRlZFdpdGhDb2RlKGkpLCAiIikgPDwgIjogaSA9ICIgPDwgaTsKLX0KLQotVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRocmVhZHNhZmVEZWF0aFRlc3RJbkNoYW5nZWREaXIpIHsK
LSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsK
LQotICBDaGFuZ2VUb1Jvb3REaXIoKTsKLSAgRVhQRUNUX0VYSVQoX2V4aXQoMSksIHRlc3Rpbmc6
OkV4aXRlZFdpdGhDb2RlKDEpLCAiIik7Ci0KLSAgQ2hhbmdlVG9Sb290RGlyKCk7Ci0gIEFTU0VS
VF9ERUFUSChfZXhpdCgxKSwgIiIpOwotfQotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgTWl4
ZWRTdHlsZXMpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0
aHJlYWRzYWZlIjsKLSAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci0gIHRlc3Rpbmc6OkdU
RVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7Ci0gIEVYUEVDVF9ERUFUSChfZXhp
dCgxKSwgIiIpOwotfQotCi1uYW1lc3BhY2UgewotCi1ib29sIHB0aHJlYWRfZmxhZzsKLQotdm9p
ZCBTZXRQdGhyZWFkRmxhZygpIHsKLSAgcHRocmVhZF9mbGFnID0gdHJ1ZTsKLX0KLQotfSAgLy8g
bmFtZXNwYWNlCi0KLSNpZiBHVEVTVF9IQVNfQ0xPTkUgJiYgR1RFU1RfSEFTX1BUSFJFQUQKLQot
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERvZXNOb3RFeGVjdXRlQXRmb3JrSG9va3MpIHsKLSAg
aWYgKCF0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspKSB7Ci0gICAgdGVz
dGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKLSAgICBw
dGhyZWFkX2ZsYWcgPSBmYWxzZTsKLSAgICBBU1NFUlRfRVEoMCwgcHRocmVhZF9hdGZvcmsoJlNl
dFB0aHJlYWRGbGFnLCBOVUxMLCBOVUxMKSk7Ci0gICAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAi
Iik7Ci0gICAgQVNTRVJUX0ZBTFNFKHB0aHJlYWRfZmxhZyk7Ci0gIH0KLX0KLQotI2VuZGlmICAv
LyBHVEVTVF9IQVNfQ0xPTkUgJiYgR1RFU1RfSEFTX1BUSFJFQUQKLQotLy8gVGVzdHMgdGhhdCBh
IG1ldGhvZCBvZiBhbm90aGVyIGNsYXNzIGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KLVRF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNZXRob2RPZkFub3RoZXJDbGFzcykgewotICBjb25zdCBN
YXlEaWUgeCh0cnVlKTsKLSAgQVNTRVJUX0RFQVRIKHguTWVtYmVyRnVuY3Rpb24oKSwgIk1heURp
ZVxcOlxcOk1lbWJlckZ1bmN0aW9uIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBnbG9iYWwgZnVu
Y3Rpb24gY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIEdsb2JhbEZ1bmN0aW9uKSB7Ci0gIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCAi
R2xvYmFsRnVuY3Rpb24iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhbnkgdmFsdWUgY29udmVydGli
bGUgdG8gYW4gUkUgd29ya3MgYXMgYSBzZWNvbmQKLS8vIGFyZ3VtZW50IHRvIEVYUEVDVF9ERUFU
SC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBY2NlcHRzQW55dGhpbmdDb252ZXJ0aWJsZVRv
UkUpIHsKLSAgc3RhdGljIGNvbnN0IGNoYXIgcmVnZXhfY19zdHJbXSA9ICJHbG9iYWxGdW5jdGlv
biI7Ci0gIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleF9jX3N0cik7Ci0KLSAg
Y29uc3QgdGVzdGluZzo6aW50ZXJuYWw6OlJFIHJlZ2V4KHJlZ2V4X2Nfc3RyKTsKLSAgRVhQRUNU
X0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksIHJlZ2V4KTsKLQotI2lmIEdURVNUX0hBU19HTE9CQUxf
U1RSSU5HCi0gIGNvbnN0IHN0cmluZyByZWdleF9zdHIocmVnZXhfY19zdHIpOwotICBFWFBFQ1Rf
REVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXhfc3RyKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X0dMT0JBTF9TVFJJTkcKLQotICBjb25zdCA6OnN0ZDo6c3RyaW5nIHJlZ2V4X3N0ZF9zdHIocmVn
ZXhfY19zdHIpOwotICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXhfc3RkX3N0
cik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBub24tdm9pZCBmdW5jdGlvbiBjYW4gYmUgdXNlZCBp
biBhIGRlYXRoIHRlc3QuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgTm9uVm9pZEZ1bmN0aW9u
KSB7Ci0gIEFTU0VSVF9ERUFUSChOb25Wb2lkRnVuY3Rpb24oKSwgIk5vblZvaWRGdW5jdGlvbiIp
OwotfQotCi0vLyBUZXN0cyB0aGF0IGZ1bmN0aW9ucyB0aGF0IHRha2UgcGFyYW1ldGVyKHMpIGNh
biBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBGdW5j
dGlvbldpdGhQYXJhbWV0ZXIpIHsKLSAgRVhQRUNUX0RFQVRIKERpZUlmKHRydWUpLCAiRGllSWZc
XChcXCkiKTsKLSAgRVhQRUNUX0RFQVRIKERpZUlmTGVzc1RoYW4oMiwgMyksICJEaWVJZkxlc3NU
aGFuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQVRIIGNhbiBiZSB1c2VkIG91dHNp
ZGUgYSBURVNULCBURVNUX0YsIG9yIHRlc3QgZml4dHVyZS4KLVRFU1RfRihUZXN0Rm9yRGVhdGhU
ZXN0LCBPdXRzaWRlRml4dHVyZSkgewotICBEZWF0aFRlc3RTdWJyb3V0aW5lKCk7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgZGVhdGggdGVzdHMgY2FuIGJlIGRvbmUgaW5zaWRlIGEgbG9vcC4KLVRFU1Rf
RihUZXN0Rm9yRGVhdGhUZXN0LCBJbnNpZGVMb29wKSB7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwg
NTsgaSsrKSB7Ci0gICAgRVhQRUNUX0RFQVRIKERpZUlmTGVzc1RoYW4oLTEsIGkpLCAiRGllSWZM
ZXNzVGhhbiIpIDw8ICJ3aGVyZSBpID09ICIgPDwgaTsKLSAgfQotfQotCi0vLyBUZXN0cyB0aGF0
IGEgY29tcG91bmQgc3RhdGVtZW50IGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KLVRFU1Rf
RihUZXN0Rm9yRGVhdGhUZXN0LCBDb21wb3VuZFN0YXRlbWVudCkgewotICBFWFBFQ1RfREVBVEgo
eyAgLy8gTk9MSU5UCi0gICAgY29uc3QgaW50IHggPSAyOwotICAgIGNvbnN0IGludCB5ID0geCAr
IDE7Ci0gICAgRGllSWZMZXNzVGhhbih4LCB5KTsKLSAgfSwKLSAgIkRpZUlmTGVzc1RoYW4iKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBjb2RlIHRoYXQgZG9lc24ndCBkaWUgY2F1c2VzIGEgZGVhdGgg
dGVzdCB0byBmYWlsLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERvZXNOb3REaWUpIHsKLSAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKERpZUlmKGZhbHNlKSwgIkRpZUlm
IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZGllIik7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgYSBkZWF0aCB0ZXN0IGZhaWxzIHdoZW4gdGhlIGVycm9yIG1lc3NhZ2UgaXNu
J3QgZXhwZWN0ZWQuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRXJyb3JNZXNzYWdlTWlzbWF0
Y2gpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNU
X0RFQVRIKERpZUlmKHRydWUpLCAiRGllSWZMZXNzVGhhbiIpIDw8ICJFbmQgb2YgZGVhdGggdGVz
dCBtZXNzYWdlLiI7Ci0gIH0sICJkaWVkIGJ1dCBub3Qgd2l0aCBleHBlY3RlZCBlcnJvciIpOwot
fQotCi0vLyBPbiBleGl0LCAqYWJvcnRlZCB3aWxsIGJlIHRydWUgaWZmIHRoZSBFWFBFQ1RfREVB
VEgoKSBzdGF0ZW1lbnQKLS8vIGFib3J0ZWQgdGhlIGZ1bmN0aW9uLgotdm9pZCBFeHBlY3REZWF0
aFRlc3RIZWxwZXIoYm9vbCogYWJvcnRlZCkgewotICAqYWJvcnRlZCA9IHRydWU7Ci0gIEVYUEVD
VF9ERUFUSChEaWVJZihmYWxzZSksICJEaWVJZiIpOyAgLy8gVGhpcyBhc3NlcnRpb24gc2hvdWxk
IGZhaWwuCi0gICphYm9ydGVkID0gZmFsc2U7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RF
QVRIIGRvZXNuJ3QgYWJvcnQgdGhlIHRlc3Qgb24gZmFpbHVyZS4KLVRFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBFWFBFQ1RfREVBVEgpIHsKLSAgYm9vbCBhYm9ydGVkID0gdHJ1ZTsKLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoRXhwZWN0RGVhdGhUZXN0SGVscGVyKCZhYm9ydGVkKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBkaWUiKTsKLSAgRVhQRUNUX0ZBTFNFKGFi
b3J0ZWQpOwotfQotCi0vLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUFUSCBkb2VzIGFib3J0IHRoZSB0
ZXN0IG9uIGZhaWx1cmUuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQVNTRVJUX0RFQVRIKSB7
Ci0gIHN0YXRpYyBib29sIGFib3J0ZWQ7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5P
TElOVAotICAgIGFib3J0ZWQgPSB0cnVlOwotICAgIEFTU0VSVF9ERUFUSChEaWVJZihmYWxzZSks
ICJEaWVJZiIpOyAgLy8gVGhpcyBhc3NlcnRpb24gc2hvdWxkIGZhaWwuCi0gICAgYWJvcnRlZCA9
IGZhbHNlOwotICB9LCAiZmFpbGVkIHRvIGRpZSIpOwotICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEggZXZhbHVhdGVzIHRoZSBhcmd1bWVudHMg
ZXhhY3RseSBvbmNlLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFNpbmdsZUV2YWx1YXRpb24p
IHsKLSAgaW50IHggPSAzOwotICBFWFBFQ1RfREVBVEgoRGllSWYoKCsreCkgPT0gNCksICJEaWVJ
ZiIpOwotCi0gIGNvbnN0IGNoYXIqIHJlZ2V4ID0gIkRpZUlmIjsKLSAgY29uc3QgY2hhciogcmVn
ZXhfc2F2ZSA9IHJlZ2V4OwotICBFWFBFQ1RfREVBVEgoRGllSWZMZXNzVGhhbigzLCA0KSwgcmVn
ZXgrKyk7Ci0gIEVYUEVDVF9FUShyZWdleF9zYXZlICsgMSwgcmVnZXgpOwotfQotCi0vLyBUZXN0
cyB0aGF0IHJ1bi1hd2F5IGRlYXRoIHRlc3RzIGFyZSByZXBvcnRlZCBhcyBmYWlsdXJlcy4KLVRF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBSdW5hd2F5KSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEVYUEVDVF9ERUFUSChzdGF0aWNfY2FzdDx2b2lkPigwKSwgIkZvbyIpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGRpZS4iKTsKLQotICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShBU1NFUlRfREVBVEgocmV0dXJuLCAiQmFyIiksCi0gICAgICAgICAgICAgICAgICAgICAg
ICJpbGxlZ2FsIHJldHVybiBpbiB0ZXN0IHN0YXRlbWVudC4iKTsKLX0KLQotCi0vLyBUZXN0cyB0
aGF0IEVYUEVDVF9ERUJVR19ERUFUSCB3b3JrcyBhcyBleHBlY3RlZCwKLS8vIHRoYXQgaXMsIGlu
IGRlYnVnIG1vZGUsIGl0OgotLy8gMS4gQXNzZXJ0cyBvbiBkZWF0aC4KLS8vIDIuIEhhcyBubyBz
aWRlIGVmZmVjdC4KLS8vCi0vLyBBbmQgaW4gb3B0IG1vZGUsIGl0OgotLy8gMS4gIEhhcyBzaWRl
IGVmZmVjdHMgYnV0IGRvZXMgbm90IGFzc2VydC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBU
ZXN0RXhwZWN0RGVidWdEZWF0aCkgewotICBpbnQgc2lkZWVmZmVjdCA9IDA7Ci0KLSAgRVhQRUNU
X0RFQlVHX0RFQVRIKERpZUluRGVidWdFbHNlMTIoJnNpZGVlZmZlY3QpLAotICAgICAgICAgICAg
ICAgICAgICAgImRlYXRoLipEaWVJbkRlYnVnRWxzZTEyIik7Ci0KLSNpZmRlZiBOREVCVUcKLSAg
Ly8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgb2NjdXJzIGluIG9wdCBtb2RlIChzaWRlZWZm
ZWN0KS4KLSAgRVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0KTsKLSNlbHNlCi0gIC8vIENoZWNrcyB0
aGF0IHRoZSBhc3NpZ25tZW50IGRvZXMgbm90IG9jY3VyIGluIGRiZyBtb2RlIChubyBzaWRlZWZm
ZWN0KS4KLSAgRVhQRUNUX0VRKDAsIHNpZGVlZmZlY3QpOwotI2VuZGlmCi19Ci0KLS8vIFRlc3Rz
IHRoYXQgQVNTRVJUX0RFQlVHX0RFQVRIIHdvcmtzIGFzIGV4cGVjdGVkCi0vLyBJbiBkZWJ1ZyBt
b2RlOgotLy8gMS4gQXNzZXJ0cyBvbiBkZWJ1ZyBkZWF0aC4KLS8vIDIuIEhhcyBubyBzaWRlIGVm
ZmVjdC4KLS8vCi0vLyBJbiBvcHQgbW9kZToKLS8vIDEuIEhhcyBzaWRlIGVmZmVjdHMgYW5kIHJl
dHVybnMgdGhlIGV4cGVjdGVkIHZhbHVlICgxMikuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
VGVzdEFzc2VydERlYnVnRGVhdGgpIHsKLSAgaW50IHNpZGVlZmZlY3QgPSAwOwotCi0gIEFTU0VS
VF9ERUJVR19ERUFUSCh7ICAvLyBOT0xJTlQKLSAgICAvLyBUZXN0cyB0aGF0IHRoZSByZXR1cm4g
dmFsdWUgaXMgMTIgaW4gb3B0IG1vZGUuCi0gICAgRVhQRUNUX0VRKDEyLCBEaWVJbkRlYnVnRWxz
ZTEyKCZzaWRlZWZmZWN0KSk7Ci0gICAgLy8gVGVzdHMgdGhhdCB0aGUgc2lkZSBlZmZlY3Qgb2Nj
dXJyZWQgaW4gb3B0IG1vZGUuCi0gICAgRVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0KTsKLSAgfSwg
ImRlYXRoLipEaWVJbkRlYnVnRWxzZTEyIik7Ci0KLSNpZmRlZiBOREVCVUcKLSAgLy8gQ2hlY2tz
IHRoYXQgdGhlIGFzc2lnbm1lbnQgb2NjdXJzIGluIG9wdCBtb2RlIChzaWRlZWZmZWN0KS4KLSAg
RVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0KTsKLSNlbHNlCi0gIC8vIENoZWNrcyB0aGF0IHRoZSBh
c3NpZ25tZW50IGRvZXMgbm90IG9jY3VyIGluIGRiZyBtb2RlIChubyBzaWRlZWZmZWN0KS4KLSAg
RVhQRUNUX0VRKDAsIHNpZGVlZmZlY3QpOwotI2VuZGlmCi19Ci0KLSNpZm5kZWYgTkRFQlVHCi0K
LXZvaWQgRXhwZWN0RGVidWdEZWF0aEhlbHBlcihib29sKiBhYm9ydGVkKSB7Ci0gICphYm9ydGVk
ID0gdHJ1ZTsKLSAgRVhQRUNUX0RFQlVHX0RFQVRIKHJldHVybiwgIiIpIDw8ICJUaGlzIGlzIGV4
cGVjdGVkIHRvIGZhaWwuIjsKLSAgKmFib3J0ZWQgPSBmYWxzZTsKLX0KLQotI2lmIEdURVNUX09T
X1dJTkRPV1MKLVRFU1QoUG9wVXBEZWF0aFRlc3QsIERvZXNOb3RTaG93UG9wVXBPbkFib3J0KSB7
Ci0gIHByaW50ZigiVGhpcyB0ZXN0IHNob3VsZCBiZSBjb25zaWRlcmVkIGZhaWxpbmcgaWYgaXQg
c2hvd3MgIgotICAgICAgICAgImFueSBwb3AtdXAgZGlhbG9ncy5cbiIpOwotICBmZmx1c2goc3Rk
b3V0KTsKLQotICBFWFBFQ1RfREVBVEgoewotICAgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hf
ZXhjZXB0aW9ucykgPSBmYWxzZTsKLSAgICBhYm9ydCgpOwotICB9LCAiIik7Ci19Ci0KLVRFU1Qo
UG9wVXBEZWF0aFRlc3QsIERvZXNOb3RTaG93UG9wVXBPblRocm93KSB7Ci0gIHByaW50ZigiVGhp
cyB0ZXN0IHNob3VsZCBiZSBjb25zaWRlcmVkIGZhaWxpbmcgaWYgaXQgc2hvd3MgIgotICAgICAg
ICAgImFueSBwb3AtdXAgZGlhbG9ncy5cbiIpOwotICBmZmx1c2goc3Rkb3V0KTsKLQotICBFWFBF
Q1RfREVBVEgoewotICAgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgPSBm
YWxzZTsKLSAgICB0aHJvdyAxOwotICB9LCAiIik7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1MKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVCVUdfREVBVEggaW4gZGVidWcgbW9kZSBk
b2VzIG5vdCBhYm9ydAotLy8gdGhlIGZ1bmN0aW9uLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3Qs
IEV4cGVjdERlYnVnRGVhdGhEb2VzTm90QWJvcnQpIHsKLSAgYm9vbCBhYm9ydGVkID0gdHJ1ZTsK
LSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRXhwZWN0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRl
ZCksICIiKTsKLSAgRVhQRUNUX0ZBTFNFKGFib3J0ZWQpOwotfQotCi12b2lkIEFzc2VydERlYnVn
RGVhdGhIZWxwZXIoYm9vbCogYWJvcnRlZCkgewotICAqYWJvcnRlZCA9IHRydWU7Ci0gIEFTU0VS
VF9ERUJVR19ERUFUSChyZXR1cm4sICIiKSA8PCAiVGhpcyBpcyBleHBlY3RlZCB0byBmYWlsLiI7
Ci0gICphYm9ydGVkID0gZmFsc2U7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQlVHX0RF
QVRIIGluIGRlYnVnIG1vZGUgYWJvcnRzIHRoZSBmdW5jdGlvbiBvbgotLy8gZmFpbHVyZS4KLVRF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzKSB7Ci0gIHN0YXRp
YyBib29sIGFib3J0ZWQ7Ci0gIGFib3J0ZWQgPSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKLSAgRVhQRUNUX1RSVUUo
YWJvcnRlZCk7Ci19Ci0KLSNlbmRpZiAgLy8gX05ERUJVRwotCi0vLyBUZXN0cyB0aGUgKl9FWElU
IGZhbWlseSBvZiBtYWNyb3MsIHVzaW5nIGEgdmFyaWV0eSBvZiBwcmVkaWNhdGVzLgotc3RhdGlj
IHZvaWQgVGVzdEV4aXRNYWNyb3MoKSB7Ci0gIEVYUEVDVF9FWElUKF9leGl0KDEpLCAgdGVzdGlu
Zzo6RXhpdGVkV2l0aENvZGUoMSksICAiIik7Ci0gIEFTU0VSVF9FWElUKF9leGl0KDQyKSwgdGVz
dGluZzo6RXhpdGVkV2l0aENvZGUoNDIpLCAiIik7Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0g
IC8vIE9mIGFsbCBzaWduYWxzIGVmZmVjdHMgb24gdGhlIHByb2Nlc3MgZXhpdCBjb2RlLCBvbmx5
IHRob3NlIG9mIFNJR0FCUlQKLSAgLy8gYXJlIGRvY3VtZW50ZWQgb24gV2luZG93cy4KLSAgLy8g
U2VlIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9kd3d6a3Q0YyhWUy43
MSkuYXNweC4KLSAgRVhQRUNUX0VYSVQocmFpc2UoU0lHQUJSVCksIHRlc3Rpbmc6OkV4aXRlZFdp
dGhDb2RlKDMpLCAiIik7Ci0jZWxzZQotICBFWFBFQ1RfRVhJVChyYWlzZShTSUdLSUxMKSwgdGVz
dGluZzo6S2lsbGVkQnlTaWduYWwoU0lHS0lMTCksICIiKSA8PCAiZm9vIjsKLSAgQVNTRVJUX0VY
SVQocmFpc2UoU0lHVVNSMiksIHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKFNJR1VTUjIpLCAiIikg
PDwgImJhciI7Ci0KLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNT
RVJUX0VYSVQoX2V4aXQoMCksIHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKFNJR1NFR1YpLCAiIikK
LSAgICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgdG9vLiI7Ci0gIH0sICJUaGlz
IGZhaWx1cmUgaXMgZXhwZWN0ZWQsIHRvby4iKTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9X
UwotCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9F
WElUKHJhaXNlKFNJR1NFR1YpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgwKSwgIiIpCi0gICAg
ICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIjsKLSAgfSwgIlRoaXMgZmFpbHVyZSBp
cyBleHBlY3RlZC4iKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEV4aXRNYWNyb3Mp
IHsKLSAgVGVzdEV4aXRNYWNyb3MoKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEV4
aXRNYWNyb3NVc2luZ0ZvcmspIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3Vz
ZV9mb3JrKSA9IHRydWU7Ci0gIFRlc3RFeGl0TWFjcm9zKCk7Ci19Ci0KLVRFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBJbnZhbGlkU3R5bGUpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90
ZXN0X3N0eWxlKSA9ICJyb2NvY28iOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBO
T0xJTlQKLSAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMCksICIiKSA8PCAiVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkLiI7Ci0gIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIik7Ci19Ci0KLS8v
IEEgRGVhdGhUZXN0RmFjdG9yeSB0aGF0IHJldHVybnMgTW9ja0RlYXRoVGVzdHMuCi1jbGFzcyBN
b2NrRGVhdGhUZXN0RmFjdG9yeSA6IHB1YmxpYyBEZWF0aFRlc3RGYWN0b3J5IHsKLSBwdWJsaWM6
Ci0gIE1vY2tEZWF0aFRlc3RGYWN0b3J5KCk7Ci0gIHZpcnR1YWwgYm9vbCBDcmVhdGUoY29uc3Qg
Y2hhciogc3RhdGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IDo6dGVzdGluZzo6
aW50ZXJuYWw6OlJFKiByZWdleCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBm
aWxlLCBpbnQgbGluZSwgRGVhdGhUZXN0KiogdGVzdCk7Ci0KLSAgLy8gU2V0cyB0aGUgcGFyYW1l
dGVycyBmb3Igc3Vic2VxdWVudCBjYWxscyB0byBDcmVhdGUuCi0gIHZvaWQgU2V0UGFyYW1ldGVy
cyhib29sIGNyZWF0ZSwgRGVhdGhUZXN0OjpUZXN0Um9sZSByb2xlLAotICAgICAgICAgICAgICAg
ICAgICAgaW50IHN0YXR1cywgYm9vbCBwYXNzZWQpOwotCi0gIC8vIEFjY2Vzc29ycy4KLSAgaW50
IEFzc3VtZVJvbGVDYWxscygpIGNvbnN0IHsgcmV0dXJuIGFzc3VtZV9yb2xlX2NhbGxzXzsgfQot
ICBpbnQgV2FpdENhbGxzKCkgY29uc3QgeyByZXR1cm4gd2FpdF9jYWxsc187IH0KLSAgaW50IFBh
c3NlZENhbGxzKCkgY29uc3QgeyByZXR1cm4gcGFzc2VkX2FyZ3NfLnNpemUoKTsgfQotICBib29s
IFBhc3NlZEFyZ3VtZW50KGludCBuKSBjb25zdCB7IHJldHVybiBwYXNzZWRfYXJnc19bbl07IH0K
LSAgaW50IEFib3J0Q2FsbHMoKSBjb25zdCB7IHJldHVybiBhYm9ydF9hcmdzXy5zaXplKCk7IH0K
LSAgRGVhdGhUZXN0OjpBYm9ydFJlYXNvbiBBYm9ydEFyZ3VtZW50KGludCBuKSBjb25zdCB7Ci0g
ICAgcmV0dXJuIGFib3J0X2FyZ3NfW25dOwotICB9Ci0gIGJvb2wgVGVzdERlbGV0ZWQoKSBjb25z
dCB7IHJldHVybiB0ZXN0X2RlbGV0ZWRfOyB9Ci0KLSBwcml2YXRlOgotICBmcmllbmQgY2xhc3Mg
TW9ja0RlYXRoVGVzdDsKLSAgLy8gSWYgdHJ1ZSwgQ3JlYXRlIHdpbGwgcmV0dXJuIGEgTW9ja0Rl
YXRoVGVzdDsgb3RoZXJ3aXNlIGl0IHJldHVybnMKLSAgLy8gTlVMTC4KLSAgYm9vbCBjcmVhdGVf
OwotICAvLyBUaGUgdmFsdWUgYSBNb2NrRGVhdGhUZXN0IHdpbGwgcmV0dXJuIGZyb20gaXRzIEFz
c3VtZVJvbGUgbWV0aG9kLgotICBEZWF0aFRlc3Q6OlRlc3RSb2xlIHJvbGVfOwotICAvLyBUaGUg
dmFsdWUgYSBNb2NrRGVhdGhUZXN0IHdpbGwgcmV0dXJuIGZyb20gaXRzIFdhaXQgbWV0aG9kLgot
ICBpbnQgc3RhdHVzXzsKLSAgLy8gVGhlIHZhbHVlIGEgTW9ja0RlYXRoVGVzdCB3aWxsIHJldHVy
biBmcm9tIGl0cyBQYXNzZWQgbWV0aG9kLgotICBib29sIHBhc3NlZF87Ci0KLSAgLy8gTnVtYmVy
IG9mIHRpbWVzIEFzc3VtZVJvbGUgd2FzIGNhbGxlZC4KLSAgaW50IGFzc3VtZV9yb2xlX2NhbGxz
XzsKLSAgLy8gTnVtYmVyIG9mIHRpbWVzIFdhaXQgd2FzIGNhbGxlZC4KLSAgaW50IHdhaXRfY2Fs
bHNfOwotICAvLyBUaGUgYXJndW1lbnRzIHRvIHRoZSBjYWxscyB0byBQYXNzZWQgc2luY2UgdGhl
IGxhc3QgY2FsbCB0bwotICAvLyBTZXRQYXJhbWV0ZXJzLgotICBzdGQ6OnZlY3Rvcjxib29sPiBw
YXNzZWRfYXJnc187Ci0gIC8vIFRoZSBhcmd1bWVudHMgdG8gdGhlIGNhbGxzIHRvIEFib3J0IHNp
bmNlIHRoZSBsYXN0IGNhbGwgdG8KLSAgLy8gU2V0UGFyYW1ldGVycy4KLSAgc3RkOjp2ZWN0b3I8
RGVhdGhUZXN0OjpBYm9ydFJlYXNvbj4gYWJvcnRfYXJnc187Ci0gIC8vIFRydWUgaWYgdGhlIGxh
c3QgTW9ja0RlYXRoVGVzdCByZXR1cm5lZCBieSBDcmVhdGUgaGFzIGJlZW4KLSAgLy8gZGVsZXRl
ZC4KLSAgYm9vbCB0ZXN0X2RlbGV0ZWRfOwotfTsKLQotCi0vLyBBIERlYXRoVGVzdCBpbXBsZW1l
bnRhdGlvbiB1c2VmdWwgaW4gdGVzdGluZy4gIEl0IHJldHVybnMgdmFsdWVzIHNldAotLy8gYXQg
aXRzIGNyZWF0aW9uIGZyb20gaXRzIHZhcmlvdXMgaW5oZXJpdGVkIERlYXRoVGVzdCBtZXRob2Rz
LCBhbmQKLS8vIHJlcG9ydHMgY2FsbHMgdG8gdGhvc2UgbWV0aG9kcyB0byBpdHMgcGFyZW50IE1v
Y2tEZWF0aFRlc3RGYWN0b3J5Ci0vLyBvYmplY3QuCi1jbGFzcyBNb2NrRGVhdGhUZXN0IDogcHVi
bGljIERlYXRoVGVzdCB7Ci0gcHVibGljOgotICBNb2NrRGVhdGhUZXN0KE1vY2tEZWF0aFRlc3RG
YWN0b3J5ICpwYXJlbnQsCi0gICAgICAgICAgICAgICAgVGVzdFJvbGUgcm9sZSwgaW50IHN0YXR1
cywgYm9vbCBwYXNzZWQpIDoKLSAgICAgIHBhcmVudF8ocGFyZW50KSwgcm9sZV8ocm9sZSksIHN0
YXR1c18oc3RhdHVzKSwgcGFzc2VkXyhwYXNzZWQpIHsKLSAgfQotICB2aXJ0dWFsIH5Nb2NrRGVh
dGhUZXN0KCkgewotICAgIHBhcmVudF8tPnRlc3RfZGVsZXRlZF8gPSB0cnVlOwotICB9Ci0gIHZp
cnR1YWwgVGVzdFJvbGUgQXNzdW1lUm9sZSgpIHsKLSAgICArK3BhcmVudF8tPmFzc3VtZV9yb2xl
X2NhbGxzXzsKLSAgICByZXR1cm4gcm9sZV87Ci0gIH0KLSAgdmlydHVhbCBpbnQgV2FpdCgpIHsK
LSAgICArK3BhcmVudF8tPndhaXRfY2FsbHNfOwotICAgIHJldHVybiBzdGF0dXNfOwotICB9Ci0g
IHZpcnR1YWwgYm9vbCBQYXNzZWQoYm9vbCBleGl0X3N0YXR1c19vaykgewotICAgIHBhcmVudF8t
PnBhc3NlZF9hcmdzXy5wdXNoX2JhY2soZXhpdF9zdGF0dXNfb2spOwotICAgIHJldHVybiBwYXNz
ZWRfOwotICB9Ci0gIHZpcnR1YWwgdm9pZCBBYm9ydChBYm9ydFJlYXNvbiByZWFzb24pIHsKLSAg
ICBwYXJlbnRfLT5hYm9ydF9hcmdzXy5wdXNoX2JhY2socmVhc29uKTsKLSAgfQotIHByaXZhdGU6
Ci0gIE1vY2tEZWF0aFRlc3RGYWN0b3J5KiBjb25zdCBwYXJlbnRfOwotICBjb25zdCBUZXN0Um9s
ZSByb2xlXzsKLSAgY29uc3QgaW50IHN0YXR1c187Ci0gIGNvbnN0IGJvb2wgcGFzc2VkXzsKLX07
Ci0KLQotLy8gTW9ja0RlYXRoVGVzdEZhY3RvcnkgY29uc3RydWN0b3IuCi1Nb2NrRGVhdGhUZXN0
RmFjdG9yeTo6TW9ja0RlYXRoVGVzdEZhY3RvcnkoKQotICAgIDogY3JlYXRlXyh0cnVlKSwKLSAg
ICAgIHJvbGVfKERlYXRoVGVzdDo6T1ZFUlNFRV9URVNUKSwKLSAgICAgIHN0YXR1c18oMCksCi0g
ICAgICBwYXNzZWRfKHRydWUpLAotICAgICAgYXNzdW1lX3JvbGVfY2FsbHNfKDApLAotICAgICAg
d2FpdF9jYWxsc18oMCksCi0gICAgICBwYXNzZWRfYXJnc18oKSwKLSAgICAgIGFib3J0X2FyZ3Nf
KCkgewotfQotCi0KLS8vIFNldHMgdGhlIHBhcmFtZXRlcnMgZm9yIHN1YnNlcXVlbnQgY2FsbHMg
dG8gQ3JlYXRlLgotdm9pZCBNb2NrRGVhdGhUZXN0RmFjdG9yeTo6U2V0UGFyYW1ldGVycyhib29s
IGNyZWF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVhdGhU
ZXN0OjpUZXN0Um9sZSByb2xlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgc3RhdHVzLCBib29sIHBhc3NlZCkgewotICBjcmVhdGVfID0gY3JlYXRlOwotICBy
b2xlXyA9IHJvbGU7Ci0gIHN0YXR1c18gPSBzdGF0dXM7Ci0gIHBhc3NlZF8gPSBwYXNzZWQ7Ci0K
LSAgYXNzdW1lX3JvbGVfY2FsbHNfID0gMDsKLSAgd2FpdF9jYWxsc18gPSAwOwotICBwYXNzZWRf
YXJnc18uY2xlYXIoKTsKLSAgYWJvcnRfYXJnc18uY2xlYXIoKTsKLX0KLQotCi0vLyBTZXRzIHRl
c3QgdG8gTlVMTCAoaWYgY3JlYXRlXyBpcyBmYWxzZSkgb3IgdG8gdGhlIGFkZHJlc3Mgb2YgYSBu
ZXcKLS8vIE1vY2tEZWF0aFRlc3Qgb2JqZWN0IHdpdGggcGFyYW1ldGVycyB0YWtlbiBmcm9tIHRo
ZSBsYXN0IGNhbGwKLS8vIHRvIFNldFBhcmFtZXRlcnMgKGlmIGNyZWF0ZV8gaXMgdHJ1ZSkuICBB
bHdheXMgcmV0dXJucyB0cnVlLgotYm9vbCBNb2NrRGVhdGhUZXN0RmFjdG9yeTo6Q3JlYXRlKGNv
bnN0IGNoYXIqIC8qc3RhdGVtZW50Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UkUqIC8qcmVnZXgqLywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKmZpbGUqLywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgLypsaW5lKi8sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRGVhdGhUZXN0KiogdGVzdCkgewotICB0ZXN0X2RlbGV0ZWRfID0gZmFs
c2U7Ci0gIGlmIChjcmVhdGVfKSB7Ci0gICAgKnRlc3QgPSBuZXcgTW9ja0RlYXRoVGVzdCh0aGlz
LCByb2xlXywgc3RhdHVzXywgcGFzc2VkXyk7Ci0gIH0gZWxzZSB7Ci0gICAgKnRlc3QgPSBOVUxM
OwotICB9Ci0gIHJldHVybiB0cnVlOwotfQotCi0vLyBBIHRlc3QgZml4dHVyZSBmb3IgdGVzdGlu
ZyB0aGUgbG9naWMgb2YgdGhlIEdURVNUX0RFQVRIX1RFU1RfIG1hY3JvLgotLy8gSXQgaW5zdGFs
bHMgYSBNb2NrRGVhdGhUZXN0RmFjdG9yeSB0aGF0IGlzIHVzZWQgZm9yIHRoZSBkdXJhdGlvbgot
Ly8gb2YgdGhlIHRlc3QgY2FzZS4KLWNsYXNzIE1hY3JvTG9naWNEZWF0aFRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICBzdGF0aWMgdGVzdGluZzo6aW50ZXJuYWw6
OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KiByZXBsYWNlcl87Ci0gIHN0YXRpYyBNb2NrRGVhdGhU
ZXN0RmFjdG9yeSogZmFjdG9yeV87Ci0KLSAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsK
LSAgICBmYWN0b3J5XyA9IG5ldyBNb2NrRGVhdGhUZXN0RmFjdG9yeTsKLSAgICByZXBsYWNlcl8g
PSBuZXcgdGVzdGluZzo6aW50ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KGZhY3Rvcnlf
KTsKLSAgfQotCi0gIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7Ci0gICAgZGVsZXRl
IHJlcGxhY2VyXzsKLSAgICByZXBsYWNlcl8gPSBOVUxMOwotICAgIGRlbGV0ZSBmYWN0b3J5XzsK
LSAgICBmYWN0b3J5XyA9IE5VTEw7Ci0gIH0KLQotICAvLyBSdW5zIGEgZGVhdGggdGVzdCB0aGF0
IGJyZWFrcyB0aGUgcnVsZXMgYnkgcmV0dXJuaW5nLiAgU3VjaCBhIGRlYXRoCi0gIC8vIHRlc3Qg
Y2Fubm90IGJlIHJ1biBkaXJlY3RseSBmcm9tIGEgdGVzdCByb3V0aW5lIHRoYXQgdXNlcyBhCi0g
IC8vIE1vY2tEZWF0aFRlc3QsIG9yIHRoZSByZW1haW5kZXIgb2YgdGhlIHJvdXRpbmUgd2lsbCBu
b3QgYmUgZXhlY3V0ZWQuCi0gIHN0YXRpYyB2b2lkIFJ1blJldHVybmluZ0RlYXRoVGVzdChib29s
KiBmbGFnKSB7Ci0gICAgQVNTRVJUX0RFQVRIKHsgIC8vIE5PTElOVAotICAgICAgKmZsYWcgPSB0
cnVlOwotICAgICAgcmV0dXJuOwotICAgIH0sICIiKTsKLSAgfQotfTsKLQotdGVzdGluZzo6aW50
ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KiBNYWNyb0xvZ2ljRGVhdGhUZXN0OjpyZXBs
YWNlcl8KLSAgICA9IE5VTEw7Ci1Nb2NrRGVhdGhUZXN0RmFjdG9yeSogTWFjcm9Mb2dpY0RlYXRo
VGVzdDo6ZmFjdG9yeV8gPSBOVUxMOwotCi0KLS8vIFRlc3QgdGhhdCBub3RoaW5nIGhhcHBlbnMg
d2hlbiB0aGUgZmFjdG9yeSBkb2Vzbid0IHJldHVybiBhIERlYXRoVGVzdDoKLVRFU1RfRihNYWNy
b0xvZ2ljRGVhdGhUZXN0LCBOb3RoaW5nSGFwcGVucykgewotICBib29sIGZsYWcgPSBmYWxzZTsK
LSAgZmFjdG9yeV8tPlNldFBhcmFtZXRlcnMoZmFsc2UsIERlYXRoVGVzdDo6T1ZFUlNFRV9URVNU
LCAwLCB0cnVlKTsKLSAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7Ci0gIEVYUEVDVF9G
QUxTRShmbGFnKTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5Bc3N1bWVSb2xlQ2FsbHMoKSk7
Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+V2FpdENhbGxzKCkpOwotICBFWFBFQ1RfRVEoMCwg
ZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPkFib3J0
Q2FsbHMoKSk7Ci0gIEVYUEVDVF9GQUxTRShmYWN0b3J5Xy0+VGVzdERlbGV0ZWQoKSk7Ci19Ci0K
LS8vIFRlc3QgdGhhdCB0aGUgcGFyZW50IHByb2Nlc3MgZG9lc24ndCBydW4gdGhlIGRlYXRoIHRl
c3QgY29kZSwKLS8vIGFuZCB0aGF0IHRoZSBQYXNzZWQgbWV0aG9kIHJldHVybnMgZmFsc2Ugd2hl
biB0aGUgKHNpbXVsYXRlZCkKLS8vIGNoaWxkIHByb2Nlc3MgZXhpdHMgd2l0aCBzdGF0dXMgMDoK
LVRFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBDaGlsZEV4aXRzU3VjY2Vzc2Z1bGx5KSB7Ci0g
IGJvb2wgZmxhZyA9IGZhbHNlOwotICBmYWN0b3J5Xy0+U2V0UGFyYW1ldGVycyh0cnVlLCBEZWF0
aFRlc3Q6Ok9WRVJTRUVfVEVTVCwgMCwgdHJ1ZSk7Ci0gIEVYUEVDVF9ERUFUSChmbGFnID0gdHJ1
ZSwgIiIpOwotICBFWFBFQ1RfRkFMU0UoZmxhZyk7Ci0gIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+
QXNzdW1lUm9sZUNhbGxzKCkpOwotICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPldhaXRDYWxscygp
KTsKLSAgQVNTRVJUX0VRKDEsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKLSAgRVhQRUNUX0ZB
TFNFKGZhY3RvcnlfLT5QYXNzZWRBcmd1bWVudCgwKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5
Xy0+QWJvcnRDYWxscygpKTsKLSAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkp
OwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBQYXNzZWQgbWV0aG9kIHdhcyBnaXZlbiB0aGUgYXJn
dW1lbnQgInRydWUiIHdoZW4KLS8vIHRoZSAoc2ltdWxhdGVkKSBjaGlsZCBwcm9jZXNzIGV4aXRz
IHdpdGggc3RhdHVzIDE6Ci1URVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwgQ2hpbGRFeGl0c1Vu
c3VjY2Vzc2Z1bGx5KSB7Ci0gIGJvb2wgZmxhZyA9IGZhbHNlOwotICBmYWN0b3J5Xy0+U2V0UGFy
YW1ldGVycyh0cnVlLCBEZWF0aFRlc3Q6Ok9WRVJTRUVfVEVTVCwgMSwgdHJ1ZSk7Ci0gIEVYUEVD
VF9ERUFUSChmbGFnID0gdHJ1ZSwgIiIpOwotICBFWFBFQ1RfRkFMU0UoZmxhZyk7Ci0gIEVYUEVD
VF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOwotICBFWFBFQ1RfRVEoMSwgZmFj
dG9yeV8tPldhaXRDYWxscygpKTsKLSAgQVNTRVJUX0VRKDEsIGZhY3RvcnlfLT5QYXNzZWRDYWxs
cygpKTsKLSAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlBhc3NlZEFyZ3VtZW50KDApKTsKLSAgRVhQ
RUNUX0VRKDAsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOwotICBFWFBFQ1RfVFJVRShmYWN0b3J5
Xy0+VGVzdERlbGV0ZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIChzaW11bGF0ZWQpIGNo
aWxkIHByb2Nlc3MgZXhlY3V0ZXMgdGhlIGRlYXRoIHRlc3QKLS8vIGNvZGUsIGFuZCBpcyBhYm9y
dGVkIHdpdGggdGhlIGNvcnJlY3QgQWJvcnRSZWFzb24gaWYgaXQKLS8vIGV4ZWN1dGVzIGEgcmV0
dXJuIHN0YXRlbWVudC4KLVRFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBDaGlsZFBlcmZvcm1z
UmV0dXJuKSB7Ci0gIGJvb2wgZmxhZyA9IGZhbHNlOwotICBmYWN0b3J5Xy0+U2V0UGFyYW1ldGVy
cyh0cnVlLCBEZWF0aFRlc3Q6OkVYRUNVVEVfVEVTVCwgMCwgdHJ1ZSk7Ci0gIFJ1blJldHVybmlu
Z0RlYXRoVGVzdCgmZmxhZyk7Ci0gIEVYUEVDVF9UUlVFKGZsYWcpOwotICBFWFBFQ1RfRVEoMSwg
ZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5X
YWl0Q2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7Ci0g
IEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKLSAgRVhQRUNUX0VRKERlYXRo
VGVzdDo6VEVTVF9FTkNPVU5URVJFRF9SRVRVUk5fU1RBVEVNRU5ULAotICAgICAgICAgICAgZmFj
dG9yeV8tPkFib3J0QXJndW1lbnQoMCkpOwotICBFWFBFQ1RfVFJVRShmYWN0b3J5Xy0+VGVzdERl
bGV0ZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIChzaW11bGF0ZWQpIGNoaWxkIHByb2Nl
c3MgaXMgYWJvcnRlZCB3aXRoIHRoZQotLy8gY29ycmVjdCBBYm9ydFJlYXNvbiBpZiBpdCBkb2Vz
IG5vdCBkaWUuCi1URVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwgQ2hpbGREb2VzTm90RGllKSB7
Ci0gIGJvb2wgZmxhZyA9IGZhbHNlOwotICBmYWN0b3J5Xy0+U2V0UGFyYW1ldGVycyh0cnVlLCBE
ZWF0aFRlc3Q6OkVYRUNVVEVfVEVTVCwgMCwgdHJ1ZSk7Ci0gIEVYUEVDVF9ERUFUSChmbGFnID0g
dHJ1ZSwgIiIpOwotICBFWFBFQ1RfVFJVRShmbGFnKTsKLSAgRVhQRUNUX0VRKDEsIGZhY3Rvcnlf
LT5Bc3N1bWVSb2xlQ2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+V2FpdENhbGxz
KCkpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOwotICAvLyBUaGlz
IHRpbWUgdGhlcmUgYXJlIHR3byBjYWxscyB0byBBYm9ydDogb25lIHNpbmNlIHRoZSB0ZXN0IGRp
ZG4ndAotICAvLyBkaWUsIGFuZCBhbm90aGVyIGZyb20gdGhlIFJldHVyblNlbnRpbmVsIHdoZW4g
aXQncyBkZXN0cm95ZWQuICBUaGUKLSAgLy8gc2VudGluZWwgbm9ybWFsbHkgaXNuJ3QgZGVzdHJv
eWVkIGlmIGEgdGVzdCBkb2Vzbid0IGRpZSwgc2luY2UKLSAgLy8gX2V4aXQoMikgaXMgY2FsbGVk
IGluIHRoYXQgY2FzZSBieSBGb3JraW5nRGVhdGhUZXN0LCBidXQgbm90IGJ5Ci0gIC8vIG91ciBN
b2NrRGVhdGhUZXN0LgotICBBU1NFUlRfRVEoMiwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7Ci0g
IEVYUEVDVF9FUShEZWF0aFRlc3Q6OlRFU1RfRElEX05PVF9ESUUsCi0gICAgICAgICAgICBmYWN0
b3J5Xy0+QWJvcnRBcmd1bWVudCgwKSk7Ci0gIEVYUEVDVF9FUShEZWF0aFRlc3Q6OlRFU1RfRU5D
T1VOVEVSRURfUkVUVVJOX1NUQVRFTUVOVCwKLSAgICAgICAgICAgIGZhY3RvcnlfLT5BYm9ydEFy
Z3VtZW50KDEpKTsKLSAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IGEgc3VjY2Vzc2Z1bCBkZWF0aCB0ZXN0IGRvZXMgbm90IHJlZ2lzdGVy
IGEgc3VjY2Vzc2Z1bAotLy8gdGVzdCBwYXJ0LgotVEVTVChTdWNjZXNzUmVnaXN0cmF0aW9uRGVh
dGhUZXN0LCBOb1N1Y2Nlc3NQYXJ0KSB7Ci0gIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOwot
ICBFWFBFQ1RfRVEoMCwgR2V0VW5pdFRlc3RJbXBsKCktPmN1cnJlbnRfdGVzdF9yZXN1bHQoKS0+
dG90YWxfcGFydF9jb3VudCgpKTsKLX0KLQotVEVTVChTdHJlYW1pbmdBc3NlcnRpb25zRGVhdGhU
ZXN0LCBEZWF0aFRlc3QpIHsKLSAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgInVuZXhw
ZWN0ZWQgZmFpbHVyZSI7Ci0gIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8ICJ1bmV4cGVj
dGVkIGZhaWx1cmUiOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAg
ICBFWFBFQ1RfREVBVEgoX2V4aXQoMCksICIiKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIH0s
ICJleHBlY3RlZCBmYWlsdXJlIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElO
VAotICAgIEFTU0VSVF9ERUFUSChfZXhpdCgwKSwgIiIpIDw8ICJleHBlY3RlZCBmYWlsdXJlIjsK
LSAgfSwgImV4cGVjdGVkIGZhaWx1cmUiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBHZXRMYXN0RXJy
bm9EZXNjcmlwdGlvbiByZXR1cm5zIGFuIGVtcHR5IHN0cmluZyB3aGVuIHRoZQotLy8gbGFzdCBl
cnJvciBpcyAwIGFuZCBub24tZW1wdHkgc3RyaW5nIHdoZW4gaXQgaXMgbm9uLXplcm8uCi1URVNU
KEdldExhc3RFcnJub0Rlc2NyaXB0aW9uLCBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbldvcmtzKSB7
Ci0gIGVycm5vID0gRU5PRU5UOwotICBFWFBFQ1RfU1RSTkUoIiIsIEdldExhc3RFcnJub0Rlc2Ny
aXB0aW9uKCkuY19zdHIoKSk7Ci0gIGVycm5vID0gMDsKLSAgRVhQRUNUX1NUUkVRKCIiLCBHZXRM
YXN0RXJybm9EZXNjcmlwdGlvbigpLmNfc3RyKCkpOwotfQotCi0jaWYgR1RFU1RfT1NfV0lORE9X
UwotVEVTVChBdXRvSGFuZGxlVGVzdCwgQXV0b0hhbmRsZVdvcmtzKSB7Ci0gIEhBTkRMRSBoYW5k
bGUgPSA6OkNyZWF0ZUV2ZW50KE5VTEwsIEZBTFNFLCBGQUxTRSwgTlVMTCk7Ci0gIEFTU0VSVF9O
RShJTlZBTElEX0hBTkRMRV9WQUxVRSwgaGFuZGxlKTsKLQotICAvLyBUZXN0cyB0aGF0IHRoZSBB
dXRvSGFuZGxlIGlzIGNvcnJlY3RseSBpbml0aWFsaXplZCB3aXRoIGEgaGFuZGxlLgotICB0ZXN0
aW5nOjppbnRlcm5hbDo6QXV0b0hhbmRsZSBhdXRvX2hhbmRsZShoYW5kbGUpOwotICBFWFBFQ1Rf
RVEoaGFuZGxlLCBhdXRvX2hhbmRsZS5HZXQoKSk7Ci0KLSAgLy8gVGVzdHMgdGhhdCBSZXNldCBh
c3NpZ25zIElOVkFMSURfSEFORExFX1ZBTFVFLgotICAvLyBOb3RlIHRoYXQgdGhpcyBjYW5ub3Qg
dmVyaWZ5IHdoZXRoZXIgdGhlIG9yaWdpbmFsIGhhbmRsZSBpcyBjbG9zZWQuCi0gIGF1dG9faGFu
ZGxlLlJlc2V0KCk7Ci0gIEVYUEVDVF9FUShJTlZBTElEX0hBTkRMRV9WQUxVRSwgYXV0b19oYW5k
bGUuR2V0KCkpOwotCi0gIC8vIFRlc3RzIHRoYXQgUmVzZXQgYXNzaWducyB0aGUgbmV3IGhhbmRs
ZS4KLSAgLy8gTm90ZSB0aGF0IHRoaXMgY2Fubm90IHZlcmlmeSB3aGV0aGVyIHRoZSBvcmlnaW5h
bCBoYW5kbGUgaXMgY2xvc2VkLgotICBoYW5kbGUgPSA6OkNyZWF0ZUV2ZW50KE5VTEwsIEZBTFNF
LCBGQUxTRSwgTlVMTCk7Ci0gIEFTU0VSVF9ORShJTlZBTElEX0hBTkRMRV9WQUxVRSwgaGFuZGxl
KTsKLSAgYXV0b19oYW5kbGUuUmVzZXQoaGFuZGxlKTsKLSAgRVhQRUNUX0VRKGhhbmRsZSwgYXV0
b19oYW5kbGUuR2V0KCkpOwotCi0gIC8vIFRlc3RzIHRoYXQgQXV0b0hhbmRsZSBjb250YWlucyBJ
TlZBTElEX0hBTkRMRV9WQUxVRSBieSBkZWZhdWx0LgotICB0ZXN0aW5nOjppbnRlcm5hbDo6QXV0
b0hhbmRsZSBhdXRvX2hhbmRsZTI7Ci0gIEVYUEVDVF9FUShJTlZBTElEX0hBTkRMRV9WQUxVRSwg
YXV0b19oYW5kbGUyLkdldCgpKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0j
aWYgR1RFU1RfT1NfV0lORE9XUwotdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IEJpZ2dlc3RQYXJz
YWJsZTsKLXR5cGVkZWYgc2lnbmVkIF9faW50NjQgQmlnZ2VzdFNpZ25lZFBhcnNhYmxlOwotY29u
c3QgQmlnZ2VzdFBhcnNhYmxlIGtCaWdnZXN0UGFyc2FibGVNYXggPSBVTExPTkdfTUFYOwotY29u
c3QgQmlnZ2VzdFBhcnNhYmxlIGtCaWdnZXN0U2lnbmVkUGFyc2FibGVNYXggPSBMTE9OR19NQVg7
Ci0jZWxzZQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgQmlnZ2VzdFBhcnNhYmxlOwotdHlw
ZWRlZiBzaWduZWQgbG9uZyBsb25nIEJpZ2dlc3RTaWduZWRQYXJzYWJsZTsKLWNvbnN0IEJpZ2dl
c3RQYXJzYWJsZSBrQmlnZ2VzdFBhcnNhYmxlTWF4ID0KLSAgICA6OnN0ZDo6bnVtZXJpY19saW1p
dHM8QmlnZ2VzdFBhcnNhYmxlPjo6bWF4KCk7Ci1jb25zdCBCaWdnZXN0U2lnbmVkUGFyc2FibGUg
a0JpZ2dlc3RTaWduZWRQYXJzYWJsZU1heCA9Ci0gICAgOjpzdGQ6Om51bWVyaWNfbGltaXRzPEJp
Z2dlc3RTaWduZWRQYXJzYWJsZT46Om1heCgpOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dT
Ci0KLVRFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgUmVqZWN0c0ludmFsaWRGb3JtYXQpIHsK
LSAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7Ci0KLSAgLy8gUmVqZWN0cyBub24tbnVtYmVy
cy4KLSAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIm5vbi1udW1iZXIg
c3RyaW5nIiksICZyZXN1bHQpKTsKLQotICAvLyBSZWplY3RzIG51bWJlcnMgd2l0aCB3aGl0ZXNw
YWNlIHByZWZpeC4KLSAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIiAx
MjMiKSwgJnJlc3VsdCkpOwotCi0gIC8vIFJlamVjdHMgbmVnYXRpdmUgbnVtYmVycy4KLSAgRVhQ
RUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIi0xMjMiKSwgJnJlc3VsdCkpOwot
Ci0gIC8vIFJlamVjdHMgbnVtYmVycyBzdGFydGluZyB3aXRoIGEgcGx1cyBzaWduLgotICBFWFBF
Q1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygiKzEyMyIpLCAmcmVzdWx0KSk7Ci0g
IGVycm5vID0gMDsKLX0KLQotVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBSZWplY3RzT3Zl
cmZsb3duTnVtYmVycykgewotICBCaWdnZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsKLQotICBFWFBF
Q1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygiOTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTkiKSwgJnJlc3VsdCkpOwotCi0gIHNpZ25lZCBjaGFyIGNoYXJfcmVzdWx0ID0gMDsKLSAgRVhQ
RUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIjIwMCIpLCAmY2hhcl9yZXN1bHQp
KTsKLSAgZXJybm8gPSAwOwotfQotCi1URVNUKFBhcnNlTmF0dXJhbE51bWJlclRlc3QsIEFjY2Vw
dHNWYWxpZE51bWJlcnMpIHsKLSAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7Ci0KLSAgcmVz
dWx0ID0gMDsKLSAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygiMTIzIiks
ICZyZXN1bHQpKTsKLSAgRVhQRUNUX0VRKDEyM1UsIHJlc3VsdCk7Ci0KLSAgLy8gQ2hlY2sgMCBh
cyBhbiBlZGdlIGNhc2UuCi0gIHJlc3VsdCA9IDE7Ci0gIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJh
bE51bWJlcihTdHJpbmcoIjAiKSwgJnJlc3VsdCkpOwotICBFWFBFQ1RfRVEoMFUsIHJlc3VsdCk7
Ci0KLSAgcmVzdWx0ID0gMTsKLSAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmlu
ZygiMDAwMDAiKSwgJnJlc3VsdCkpOwotICBFWFBFQ1RfRVEoMFUsIHJlc3VsdCk7Ci19Ci0KLVRF
U1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgQWNjZXB0c1R5cGVMaW1pdHMpIHsKLSAgTWVzc2Fn
ZSBtc2c7Ci0gIG1zZyA8PCBrQmlnZ2VzdFBhcnNhYmxlTWF4OwotCi0gIEJpZ2dlc3RQYXJzYWJs
ZSByZXN1bHQgPSAwOwotICBFWFBFQ1RfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIobXNnLkdldFN0
cmluZygpLCAmcmVzdWx0KSk7Ci0gIEVYUEVDVF9FUShrQmlnZ2VzdFBhcnNhYmxlTWF4LCByZXN1
bHQpOwotCi0gIE1lc3NhZ2UgbXNnMjsKLSAgbXNnMiA8PCBrQmlnZ2VzdFNpZ25lZFBhcnNhYmxl
TWF4OwotCi0gIEJpZ2dlc3RTaWduZWRQYXJzYWJsZSBzaWduZWRfcmVzdWx0ID0gMDsKLSAgRVhQ
RUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKG1zZzIuR2V0U3RyaW5nKCksICZzaWduZWRfcmVz
dWx0KSk7Ci0gIEVYUEVDVF9FUShrQmlnZ2VzdFNpZ25lZFBhcnNhYmxlTWF4LCBzaWduZWRfcmVz
dWx0KTsKLQotICBNZXNzYWdlIG1zZzM7Ci0gIG1zZzMgPDwgSU5UX01BWDsKLQotICBpbnQgaW50
X3Jlc3VsdCA9IDA7Ci0gIEVYUEVDVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihtc2czLkdldFN0
cmluZygpLCAmaW50X3Jlc3VsdCkpOwotICBFWFBFQ1RfRVEoSU5UX01BWCwgaW50X3Jlc3VsdCk7
Ci0KLSAgTWVzc2FnZSBtc2c0OwotICBtc2c0IDw8IFVJTlRfTUFYOwotCi0gIHVuc2lnbmVkIGlu
dCB1aW50X3Jlc3VsdCA9IDA7Ci0gIEVYUEVDVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihtc2c0
LkdldFN0cmluZygpLCAmdWludF9yZXN1bHQpKTsKLSAgRVhQRUNUX0VRKFVJTlRfTUFYLCB1aW50
X3Jlc3VsdCk7Ci19Ci0KLVRFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgV29ya3NGb3JTaG9y
dGVySW50ZWdlcnMpIHsKLSAgc2hvcnQgc2hvcnRfcmVzdWx0ID0gMDsKLSAgQVNTRVJUX1RSVUUo
UGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygiMTIzIiksICZzaG9ydF9yZXN1bHQpKTsKLSAgRVhQ
RUNUX0VRKDEyMywgc2hvcnRfcmVzdWx0KTsKLQotICBzaWduZWQgY2hhciBjaGFyX3Jlc3VsdCA9
IDA7Ci0gIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIjEyMyIpLCAmY2hh
cl9yZXN1bHQpKTsKLSAgRVhQRUNUX0VRKDEyMywgY2hhcl9yZXN1bHQpOwotfQotCi0jaWYgR1RF
U1RfT1NfV0lORE9XUwotVEVTVChFbnZpcm9ubWVudFRlc3QsIEhhbmRsZUZpdHNJbnRvU2l6ZVQp
IHsKLSAgLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogUmVtb3ZlIHRoaXMgdGVzdCBhZnRlciB0
aGlzIGNvbmRpdGlvbiBpcyB2ZXJpZmllZAotICAvLyBpbiBhIHN0YXRpYyBhc3NlcnRpb24gaW4g
Z3Rlc3QtZGVhdGgtdGVzdC5jYyBpbiB0aGUgZnVuY3Rpb24KLSAgLy8gR2V0U3RhdHVzRmlsZURl
c2NyaXB0b3IuCi0gIEFTU0VSVF9UUlVFKHNpemVvZihIQU5ETEUpIDw9IHNpemVvZihzaXplX3Qp
KTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0vLyBUZXN0cyB0aGF0IEVYUEVD
VF9ERUFUSF9JRl9TVVBQT1JURUQvQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCB0cmlnZ2VyCi0v
LyBmYWlsdXJlcyB3aGVuIGRlYXRoIHRlc3RzIGFyZSBhdmFpbGFibGUgb24gdGhlIHN5c3RlbS4K
LVRFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc0RlYXRoVGVzdCwgRXhwZWN0c0RlYXRoV2hlbkRl
YXRoVGVzdHNBdmFpbGFibGUpIHsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChEaWVJbnNp
ZGUoIkNvbmREZWF0aFRlc3RFeHBlY3RNYWNybyIpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJkZWF0aCBpbnNpZGUgQ29uZERlYXRoVGVzdEV4cGVjdE1hY3JvIik7Ci0gIEFTU0VSVF9E
RUFUSF9JRl9TVVBQT1JURUQoRGllSW5zaWRlKCJDb25kRGVhdGhUZXN0QXNzZXJ0TWFjcm8iKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVhdGggaW5zaWRlIENvbmREZWF0aFRlc3RB
c3NlcnRNYWNybyIpOwotCi0gIC8vIEVtcHR5IHN0YXRlbWVudCB3aWxsIG5vdCBjcmFzaCwgd2hp
Y2ggbXVzdCB0cmlnZ2VyIGEgZmFpbHVyZS4KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIiksICIiKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIiksICIiKTsKLX0KLQotI2Vsc2UKLQot
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkNhcHR1cmVTdGRlcnI7Ci11c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6R2V0Q2FwdHVyZWRTdGRlcnI7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U3Ry
aW5nOwotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQvQVNTRVJUX0RF
QVRIX0lGX1NVUFBPUlRFRCBhcmUgc3RpbGwKLS8vIGRlZmluZWQgYnV0IGRvIG5vdCB0cmlnZ2Vy
IGZhaWx1cmVzIHdoZW4gZGVhdGggdGVzdHMgYXJlIG5vdCBhdmFpbGFibGUgb24KLS8vIHRoZSBz
eXN0ZW0uCi1URVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NUZXN0LCBXYXJuc1doZW5EZWF0aFRl
c3RzTm90QXZhaWxhYmxlKSB7Ci0gIC8vIEVtcHR5IHN0YXRlbWVudCB3aWxsIG5vdCBjcmFzaCwg
YnV0IHRoYXQgc2hvdWxkIG5vdCB0cmlnZ2VyIGEgZmFpbHVyZQotICAvLyB3aGVuIGRlYXRoIHRl
c3RzIGFyZSBub3Qgc3VwcG9ydGVkLgotICBDYXB0dXJlU3RkZXJyKCk7Ci0gIEVYUEVDVF9ERUFU
SF9JRl9TVVBQT1JURUQoOywgIiIpOwotICBTdHJpbmcgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRl
cnIoKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCAhPSBzdHJzdHIob3V0cHV0LmNfc3RyKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJEZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCBv
biB0aGlzIHBsYXRmb3JtIikpOwotICBBU1NFUlRfVFJVRShOVUxMICE9IHN0cnN0cihvdXRwdXQu
Y19zdHIoKSwgIjsiKSk7Ci0KLSAgLy8gVGhlIHN0cmVhbWVkIG1lc3NhZ2Ugc2hvdWxkIG5vdCBi
ZSBwcmludGVkIGFzIHRoZXJlIGlzIG5vIHRlc3QgZmFpbHVyZS4KLSAgQ2FwdHVyZVN0ZGVycigp
OwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKSA8PCAic3RyZWFtZWQgbWVzc2Fn
ZSI7Ci0gIG91dHB1dCA9IEdldENhcHR1cmVkU3RkZXJyKCk7Ci0gIEFTU0VSVF9UUlVFKE5VTEwg
PT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLCAic3RyZWFtZWQgbWVzc2FnZSIpKTsKLQotICBDYXB0
dXJlU3RkZXJyKCk7Ci0gIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIpOyAgLy8gTk9M
SU5UCi0gIG91dHB1dCA9IEdldENhcHR1cmVkU3RkZXJyKCk7Ci0gIEFTU0VSVF9UUlVFKE5VTEwg
IT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
RGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSIpKTsKLSAgQVNT
RVJUX1RSVUUoTlVMTCAhPSBzdHJzdHIob3V0cHV0LmNfc3RyKCksICI7IikpOwotCi0gIENhcHR1
cmVTdGRlcnIoKTsKLSAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIikgPDwgInN0cmVh
bWVkIG1lc3NhZ2UiOyAgLy8gTk9MSU5UCi0gIG91dHB1dCA9IEdldENhcHR1cmVkU3RkZXJyKCk7
Ci0gIEFTU0VSVF9UUlVFKE5VTEwgPT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLCAic3RyZWFtZWQg
bWVzc2FnZSIpKTsKLX0KLQotdm9pZCBGdW5jV2l0aEFzc2VydChpbnQqIG4pIHsKLSAgQVNTRVJU
X0RFQVRIX0lGX1NVUFBPUlRFRChyZXR1cm47LCAiIik7Ci0gICgqbikrKzsKLX0KLQotLy8gVGVz
dHMgdGhhdCBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEIGRvZXMgbm90IHJldHVybiBmcm9tIHRo
ZSBjdXJyZW50Ci0vLyBmdW5jdGlvbiAoYXMgQVNTRVJUX0RFQVRIIGRvZXMpIGlmIGRlYXRoIHRl
c3RzIGFyZSBub3Qgc3VwcG9ydGVkLgotVEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zVGVzdCwg
QXNzZXJ0RGVhdERvZXNOb3RSZXR1cm5oSWZVbnN1cHBvcnRlZCkgewotICBpbnQgbiA9IDA7Ci0g
IEZ1bmNXaXRoQXNzZXJ0KCZuKTsKLSAgRVhQRUNUX0VRKDEsIG4pOwotfQotI2VuZGlmICAvLyBH
VEVTVF9IQVNfREVBVEhfVEVTVAotCi0vLyBUZXN0cyB0aGF0IHRoZSBkZWF0aCB0ZXN0IG1hY3Jv
cyBleHBhbmQgdG8gY29kZSB3aGljaCBtYXkgb3IgbWF5IG5vdAotLy8gYmUgZm9sbG93ZWQgYnkg
b3BlcmF0b3I8PCwgYW5kIHRoYXQgaW4gZWl0aGVyIGNhc2UgdGhlIGNvbXBsZXRlIHRleHQKLS8v
IGNvbXByaXNlcyBvbmx5IGEgc2luZ2xlIEMrKyBzdGF0ZW1lbnQuCi0vLwotLy8gVGhlIHN5bnRh
eCBzaG91bGQgd29yayB3aGV0aGVyIGRlYXRoIHRlc3RzIGFyZSBhdmFpbGFibGUgb3Igbm90Lgot
VEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zU3ludGF4RGVhdGhUZXN0LCBTaW5nbGVTdGF0ZW1l
bnQpIHsKLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgLy8gVGhpcyB3b3VsZCBmYWlsIGlmIGV4
ZWN1dGVkOyB0aGlzIGlzIGEgY29tcGlsYXRpb24gdGVzdCBvbmx5Ci0gICAgQVNTRVJUX0RFQVRI
X0lGX1NVUFBPUlRFRChyZXR1cm4sICIiKTsKLQotICBpZiAoQWx3YXlzVHJ1ZSgpKQotICAgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQoMSksICIiKTsKLSAgZWxzZQotICAgIC8vIFRo
aXMgZW1wdHkgImVsc2UiIGJyYW5jaCBpcyBtZWFudCB0byBlbnN1cmUgdGhhdCBFWFBFQ1RfREVB
VEgKLSAgICAvLyBkb2Vzbid0IGV4cGFuZCBpbnRvIGFuICJpZiIgc3RhdGVtZW50IHdpdGhvdXQg
YW4gImVsc2UiCi0gICAgOyAgLy8gTk9MSU5UCi0KLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAg
QVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChyZXR1cm4sICIiKSA8PCAiZGlkIG5vdCBkaWUiOwot
Ci0gIGlmIChBbHdheXNGYWxzZSgpKQotICAgIDsgIC8vIE5PTElOVAotICBlbHNlCi0gICAgRVhQ
RUNUX0RFQVRIX0lGX1NVUFBPUlRFRChfZXhpdCgxKSwgIiIpIDw8IDEgPDwgMiA8PCAzOwotfQot
Ci0vLyBUZXN0cyB0aGF0IGNvbmRpdGlvbmFsIGRlYXRoIHRlc3QgbWFjcm9zIGV4cGFuZCB0byBj
b2RlIHdoaWNoIGludGVyYWN0cwotLy8gd2VsbCB3aXRoIHN3aXRjaCBzdGF0ZW1lbnRzLgotVEVT
VChDb25kaXRpb25hbERlYXRoTWFjcm9zU3ludGF4RGVhdGhUZXN0LCBTd2l0Y2hTdGF0ZW1lbnQp
IHsKLS8vIE1pY3Jvc29mdCBjb21waWxlciB1c3VhbGx5IGNvbXBsYWlucyBhYm91dCBzd2l0Y2gg
c3RhdGVtZW50cyB3aXRob3V0Ci0vLyBjYXNlIGxhYmVscy4gV2Ugc3VwcHJlc3MgdGhhdCB3YXJu
aW5nIGZvciB0aGlzIHRlc3QuCi0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhwdXNo
KQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQwNjUpCi0jZW5kaWYgIC8vIF9NU0NfVkVSCi0K
LSAgc3dpdGNoICgwKQotICAgIGRlZmF1bHQ6Ci0gICAgICBBU1NFUlRfREVBVEhfSUZfU1VQUE9S
VEVEKF9leGl0KDEpLCAiIikKLSAgICAgICAgICA8PCAiZXhpdCBpbiBkZWZhdWx0IHN3aXRjaCBo
YW5kbGVyIjsKLQotICBzd2l0Y2ggKDApCi0gICAgY2FzZSAwOgotICAgICAgRVhQRUNUX0RFQVRI
X0lGX1NVUFBPUlRFRChfZXhpdCgxKSwgIiIpIDw8ICJleGl0IGluIHN3aXRjaCBjYXNlIjsKLQot
I2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmICAvLyBfTVNDX1ZF
UgotfQotCi0vLyBUZXN0cyB0aGF0IGEgdGVzdCBjYXNlIHdob3NlIG5hbWUgZW5kcyB3aXRoICJE
ZWF0aFRlc3QiIHdvcmtzIGZpbmUKLS8vIG9uIFdpbmRvd3MuCi1URVNUKE5vdEFEZWF0aFRlc3Qs
IFRlc3QpIHsKLSAgU1VDQ0VFRCgpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdC1maWxlcGF0aF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdC1maWxlcGF0aF90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2MjUwMjgyNzU4ZGZiM2M5M2Y0N2YwOTFjNTJhMmRiZjkyY2FjZWViLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3QtZmlsZXBhdGhfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDY5MCAr
MCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwot
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0v
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwot
Ly8gQXV0aG9yczoga2VpdGgucmF5QGdtYWlsLmNvbSAoS2VpdGggUmF5KQotLy8KLS8vIEdvb2ds
ZSBUZXN0IGZpbGVwYXRoIHV0aWxpdGllcwotLy8KLS8vIFRoaXMgZmlsZSB0ZXN0cyBjbGFzc2Vz
IGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5IGJ5Ci0vLyBHb29nbGUgVGVzdC4gIFRoZXkg
YXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotLy8KLS8vIFRoaXMgZmlsZSBp
cyAjaW5jbHVkZWQgZnJvbSBndGVzdF91bml0dGVzdC5jYywgdG8gYXZvaWQgY2hhbmdpbmcKLS8v
IGJ1aWxkIG9yIG1ha2UtZmlsZXMgZm9yIHNvbWUgZXhpc3RpbmcgR29vZ2xlIFRlc3QgY2xpZW50
cy4gRG8gbm90Ci0vLyAjaW5jbHVkZSB0aGlzIGZpbGUgYW55d2hlcmUgZWxzZSEKLQotI2luY2x1
ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQg
b2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3Jl
IGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBh
IGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJv
bSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMg
Y29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rl
c3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLSNpZiBH
VEVTVF9PU19XSU5ET1dTX01PQklMRQotI2luY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAot
I2VsaWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1ZGUgPGRpcmVjdC5oPiAgLy8gTk9MSU5UCi0j
ZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsK
LW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci1uYW1lc3BhY2UgewotCi0jaWYgR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKLS8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBNb3ZlIHRoZXNlIHRvIHRoZSBQT1NJ
WCBhZGFwdGVyIHNlY3Rpb24gaW4KLS8vIGd0ZXN0LXBvcnQuaC4KLQotLy8gV2luZG93cyBDRSBk
b2Vzbid0IGhhdmUgdGhlIHJlbW92ZSBDIGZ1bmN0aW9uLgotaW50IHJlbW92ZShjb25zdCBjaGFy
KiBwYXRoKSB7Ci0gIExQQ1dTVFIgd3BhdGggPSBTdHJpbmc6OkFuc2lUb1V0ZjE2KHBhdGgpOwot
ICBpbnQgcmV0ID0gRGVsZXRlRmlsZSh3cGF0aCkgPyAwIDogLTE7Ci0gIGRlbGV0ZSBbXSB3cGF0
aDsKLSAgcmV0dXJuIHJldDsKLX0KLS8vIFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlIHRoZSBfcm1k
aXIgQyBmdW5jdGlvbi4KLWludCBfcm1kaXIoY29uc3QgY2hhciogcGF0aCkgewotICBGaWxlUGF0
aCBmaWxlcGF0aChwYXRoKTsKLSAgTFBDV1NUUiB3cGF0aCA9IFN0cmluZzo6QW5zaVRvVXRmMTYo
Ci0gICAgICBmaWxlcGF0aC5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsK
LSAgaW50IHJldCA9IFJlbW92ZURpcmVjdG9yeSh3cGF0aCkgPyAwIDogLTE7Ci0gIGRlbGV0ZSBb
XSB3cGF0aDsKLSAgcmV0dXJuIHJldDsKLX0KLQotI2Vsc2UKLQotVEVTVChHZXRDdXJyZW50RGly
VGVzdCwgUmV0dXJuc0N1cnJlbnREaXIpIHsKLSAgY29uc3QgRmlsZVBhdGggb3JpZ2luYWxfZGly
ID0gRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKTsKLSAgRVhQRUNUX0ZBTFNFKG9yaWdpbmFsX2Rp
ci5Jc0VtcHR5KCkpOwotCi0gIHBvc2l4OjpDaERpcihHVEVTVF9QQVRIX1NFUF8pOwotICBjb25z
dCBGaWxlUGF0aCBjd2QgPSBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpOwotICBwb3NpeDo6Q2hE
aXIob3JpZ2luYWxfZGlyLmNfc3RyKCkpOwotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotICAvLyBT
a2lwcyB0aGUgIjoiLgotICBjb25zdCBjaGFyKiBjb25zdCBjd2Rfd2l0aG91dF9kcml2ZSA9IHN0
cmNocihjd2QuY19zdHIoKSwgJzonKTsKLSAgQVNTRVJUX1RSVUUoY3dkX3dpdGhvdXRfZHJpdmUg
IT0gTlVMTCk7Ci0gIEVYUEVDVF9TVFJFUShHVEVTVF9QQVRIX1NFUF8sIGN3ZF93aXRob3V0X2Ry
aXZlICsgMSk7Ci0jZWxzZQotICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLCBjd2QuY19z
dHIoKSk7Ci0jZW5kaWYKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQot
Ci1URVNUKElzRW1wdHlUZXN0LCBSZXR1cm5zVHJ1ZUZvckVtcHR5UGF0aCkgewotICBFWFBFQ1Rf
VFJVRShGaWxlUGF0aCgiIikuSXNFbXB0eSgpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoTlVM
TCkuSXNFbXB0eSgpKTsKLX0KLQotVEVTVChJc0VtcHR5VGVzdCwgUmV0dXJuc0ZhbHNlRm9yTm9u
RW1wdHlQYXRoKSB7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYSIpLklzRW1wdHkoKSk7Ci0g
IEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiLiIpLklzRW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShG
aWxlUGF0aCgiYS9iIikuSXNFbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJhXFxi
XFwiKS5Jc0VtcHR5KCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lICIiIC0+ICIiCi1U
RVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBXaGVuRW1wdHlOYW1lKSB7Ci0gIEVYUEVDVF9T
VFJFUSgiIiwgRmlsZVBhdGgoIiIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0cigpKTsKLX0K
LQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiYWZpbGUiIC0+ICJhZmlsZSIKLVRFU1QoUmVtb3Zl
RGlyZWN0b3J5TmFtZVRlc3QsIEJ1dE5vRGlyZWN0b3J5KSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWZp
bGUiLAotICAgICAgRmlsZVBhdGgoImFmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3Ry
KCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lICIvYWZpbGUiIC0+ICJhZmlsZSIKLVRF
U1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFJvb3RGaWxlU2hvdWxkR2l2ZUZpbGVOYW1lKSB7
Ci0gIEVYUEVDVF9TVFJFUSgiYWZpbGUiLAotICAgICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBf
ICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3Zl
RGlyZWN0b3J5TmFtZSAiYWRpci8iIC0+ICIiCi1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0
LCBXaGVyZVRoZXJlSXNOb0ZpbGVOYW1lKSB7Ci0gIEVYUEVDVF9TVFJFUSgiIiwKLSAgICAgIEZp
bGVQYXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8pLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0
cigpKTsKLX0KLQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiYWRpci9hZmlsZSIgLT4gImFmaWxl
IgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgU2hvdWxkR2l2ZUZpbGVOYW1lKSB7Ci0g
IEVYUEVDVF9TVFJFUSgiYWZpbGUiLAotICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhf
U0VQXyAiYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJl
bW92ZURpcmVjdG9yeU5hbWUgImFkaXIvc3ViZGlyL2FmaWxlIiAtPiAiYWZpbGUiCi1URVNUKFJl
bW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRBbHNvR2l2ZUZpbGVOYW1lKSB7Ci0gIEVYUEVD
VF9TVFJFUSgiYWZpbGUiLAotICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAi
c3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikKLSAgICAgIC5SZW1vdmVEaXJlY3RvcnlO
YW1lKCkuY19zdHIoKSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXwotCi0vLyBU
ZXN0cyB0aGF0IFJlbW92ZURpcmVjdG9yeU5hbWUoKSB3b3JrcyB3aXRoIHRoZSBhbHRlcm5hdGUg
c2VwYXJhdG9yCi0vLyBvbiBXaW5kb3dzLgotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCIvYWZp
bGUiKSAtPiAiYWZpbGUiCi1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBSb290RmlsZVNo
b3VsZEdpdmVGaWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEo
ImFmaWxlIiwKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1vdmVEaXJlY3Rv
cnlOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5hbWUoImFkaXIvIikg
LT4gIiIKLVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFdoZXJlVGhlcmVJc05vRmlsZU5h
bWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCIiLAotICAgICAgICAg
ICAgICAgRmlsZVBhdGgoImFkaXIvIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOwot
fQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCJhZGlyL2FmaWxlIikgLT4gImFmaWxlIgotVEVT
VChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgU2hvdWxkR2l2ZUZpbGVOYW1lRm9yQWx0ZXJuYXRl
U2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWZpbGUiLAotICAgICAgICAgICAgICAgRmls
ZVBhdGgoImFkaXIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIoKSk7Ci19Ci0K
LS8vIFJlbW92ZURpcmVjdG9yeU5hbWUoImFkaXIvc3ViZGlyL2FmaWxlIikgLT4gImFmaWxlIgot
VEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgU2hvdWxkQWxzb0dpdmVGaWxlTmFtZUZvckFs
dGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoImFmaWxlIiwKLSAgICAgICAgICAg
ICAgIEZpbGVQYXRoKCJhZGlyL3N1YmRpci9hZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5j
X3N0cigpKTsKLX0KLQotI2VuZGlmCi0KLS8vIFJlbW92ZUZpbGVOYW1lICIiIC0+ICIuLyIKLVRF
U1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBFbXB0eU5hbWUpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dT
X01PQklMRQotICAvLyBPbiBXaW5kb3dzIENFLCB3ZSB1c2UgdGhlIHJvb3QgYXMgdGhlIGN1cnJl
bnQgZGlyZWN0b3J5LgotICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLAotICAgICAgRmls
ZVBhdGgoIiIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci0jZWxzZQotICBFWFBFQ1RfU1RS
RVEoIi4iIEdURVNUX1BBVEhfU0VQXywKLSAgICAgIEZpbGVQYXRoKCIiKS5SZW1vdmVGaWxlTmFt
ZSgpLmNfc3RyKCkpOwotI2VuZGlmCi19Ci0KLS8vIFJlbW92ZUZpbGVOYW1lICJhZGlyLyIgLT4g
ImFkaXIvIgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEJ1dE5vRmlsZSkgewotICBFWFBFQ1Rf
U1RSRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXywKLSAgICAgIEZpbGVQYXRoKCJhZGlyIiBHVEVT
VF9QQVRIX1NFUF8pLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZUZp
bGVOYW1lICJhZGlyL2FmaWxlIiAtPiAiYWRpci8iCi1URVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwg
R2l2ZXNEaXJOYW1lKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAot
ICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKQotICAgICAgLlJl
bW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZUZpbGVOYW1lICJhZGlyL3N1
YmRpci9hZmlsZSIgLT4gImFkaXIvc3ViZGlyLyIKLVRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBH
aXZlc0RpckFuZFN1YkRpck5hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZGlyIiBHVEVTVF9QQVRI
X1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9TRVBfLAotICAgICAgRmlsZVBhdGgoImFkaXIiIEdU
RVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikKLSAgICAgIC5S
ZW1vdmVGaWxlTmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVGaWxlTmFtZSAiL2FmaWxl
IiAtPiAiLyIKLVRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc1Jvb3REaXIpIHsKLSAgRVhQ
RUNUX1NUUkVRKEdURVNUX1BBVEhfU0VQXywKLSAgICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQ
XyAiYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLmNfc3RyKCkpOwotfQotCi0jaWYgR1RFU1RfSEFT
X0FMVF9QQVRIX1NFUF8KLQotLy8gVGVzdHMgdGhhdCBSZW1vdmVGaWxlTmFtZSgpIHdvcmtzIHdp
dGggdGhlIGFsdGVybmF0ZSBzZXBhcmF0b3Igb24KLS8vIFdpbmRvd3MuCi0KLS8vIFJlbW92ZUZp
bGVOYW1lKCJhZGlyLyIpIC0+ICJhZGlyLyIKLVRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBCdXRO
b0ZpbGVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZGlyIiBHVEVT
VF9QQVRIX1NFUF8sCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci8iKS5SZW1vdmVGaWxl
TmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVGaWxlTmFtZSgiYWRpci9hZmlsZSIpIC0+
ICJhZGlyLyIKLVRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc0Rpck5hbWVGb3JBbHRlcm5h
dGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8sCi0g
ICAgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci9hZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuY19z
dHIoKSk7Ci19Ci0KLS8vIFJlbW92ZUZpbGVOYW1lKCJhZGlyL3N1YmRpci9hZmlsZSIpIC0+ICJh
ZGlyL3N1YmRpci8iCi1URVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNEaXJBbmRTdWJEaXJO
YW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWRpciIgR1RFU1Rf
UEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQ
YXRoKCJhZGlyL3N1YmRpci9hZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci19Ci0K
LS8vIFJlbW92ZUZpbGVOYW1lKCIvYWZpbGUiKSAtPiAiXCIKLVRFU1QoUmVtb3ZlRmlsZU5hbWVU
ZXN0LCBHaXZlc1Jvb3REaXJGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVR
KEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1v
dmVGaWxlTmFtZSgpLmNfc3RyKCkpOwotfQotCi0jZW5kaWYKLQotVEVTVChNYWtlRmlsZU5hbWVU
ZXN0LCBHZW5lcmF0ZVdoZW5OdW1iZXJJc1plcm8pIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmls
ZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiksIEZpbGVQYXRoKCJiYXIiKSwKLSAg
ICAgIDAsICJ4bWwiKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFy
LnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5l
cmF0ZUZpbGVOYW1lTnVtYmVyR3RaZXJvKSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRo
OjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoImZvbyIpLCBGaWxlUGF0aCgiYmFyIiksCi0gICAgICAx
MiwgInhtbCIpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXJfMTIu
eG1sIiwgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVy
YXRlRmlsZU5hbWVXaXRoU2xhc2hOdW1iZXJJc1plcm8pIHsKLSAgRmlsZVBhdGggYWN0dWFsID0g
RmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAot
ICAgICAgRmlsZVBhdGgoImJhciIpLCAwLCAieG1sIik7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBH
VEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1QoTWFr
ZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVGaWxlTmFtZVdpdGhTbGFzaE51bWJlckd0WmVybykgewot
ICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCJmb28i
IEdURVNUX1BBVEhfU0VQXyksCi0gICAgICBGaWxlUGF0aCgiYmFyIiksIDEyLCAieG1sIik7Ci0g
IEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhcl8xMi54bWwiLCBhY3R1YWwu
Y19zdHIoKSk7Ci19Ci0KLVRFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVy
SXNaZXJvQW5kRGlySXNFbXB0eSkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFr
ZUZpbGVOYW1lKEZpbGVQYXRoKCIiKSwgRmlsZVBhdGgoImJhciIpLAotICAgICAgMCwgInhtbCIp
OwotICBFWFBFQ1RfU1RSRVEoImJhci54bWwiLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1Qo
TWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVySXNOb3RaZXJvQW5kRGlySXNFbXB0
eSkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRo
KCIiKSwgRmlsZVBhdGgoImJhciIpLAotICAgICAgMTQsICJ4bWwiKTsKLSAgRVhQRUNUX1NUUkVR
KCJiYXJfMTQueG1sIiwgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNUKENvbmNhdFBhdGhzVGVz
dCwgV29ya3NXaGVuRGlyRG9lc05vdEVuZFdpdGhQYXRoU2VwKSB7Ci0gIEZpbGVQYXRoIGFjdHVh
bCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiYmFyLnhtbCIpKTsKLSAgRVhQ
RUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVhbC5jX3N0cigp
KTsKLX0KLQotVEVTVChDb25jYXRQYXRoc1Rlc3QsIFdvcmtzV2hlblBhdGgxRW5kc1dpdGhQYXRo
U2VwKSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0
aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRmlsZVBhdGgoImJhci54bWwiKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBH
VEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1QoQ29u
Y2F0UGF0aHNUZXN0LCBQYXRoMUJlaW5nRW1wdHkpIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmls
ZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJiYXIueG1sIikpOwotICBFWFBFQ1RfU1RSRVEo
ImJhci54bWwiLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBQ
YXRoMkJlaW5nRW1wdHkpIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBh
dGhzKEZpbGVQYXRoKCJmb28iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZpbGVQYXRoKCIiKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8sIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChDb25jYXRQYXRoc1Rlc3QsIEJvdGhQYXRo
QmVpbmdFbXB0eSkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMo
RmlsZVBhdGgoIiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RmlsZVBhdGgoIiIpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0K
LVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMUNvbnRhaW5zUGF0aFNlcCkgewotICBGaWxlUGF0
aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFU
SF9TRVBfICJiYXIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZpbGVQYXRoKCJmb29iYXIueG1sIikpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFU
SF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXyAiZm9vYmFyLnhtbCIsCi0gICAgICAgICAgICAg
ICBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMkNvbnRh
aW5zUGF0aFNlcCkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMo
Ci0gICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAotICAgICAgRmlsZVBhdGgo
ImJhciIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIikpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIg
R1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsCi0gICAgICAg
ICAgICAgICBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRo
MkVuZHNXaXRoUGF0aFNlcCkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0
UGF0aHMoRmlsZVBhdGgoImZvbyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRmlsZVBhdGgoImJhciIgR1RFU1RfUEFUSF9TRVBfKSk7Ci0gIEVYUEVDVF9TVFJF
USgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBfLCBhY3R1YWwuY19z
dHIoKSk7Ci19Ci0KLS8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiIiAtPiAiIgotVEVT
VChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBFbXB0eVN0cmluZykgewotICBFWFBF
Q1RfU1RSRVEoIiIsCi0gICAgICBGaWxlUGF0aCgiIikuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJh
dG9yKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiZm9v
IiAtPiAiZm9vIgotVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBGaWxlTm9T
bGFzaFN0cmluZykgewotICBFWFBFQ1RfU1RSRVEoImZvbyIsCi0gICAgICBGaWxlUGF0aCgiZm9v
IikuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92
ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiZm9vLyIgLT4gImZvbyIKLVRFU1QoUmVtb3ZlVHJhaWxp
bmdQYXRoU2VwYXJhdG9yVGVzdCwgU2hvdWxkUmVtb3ZlVHJhaWxpbmdTZXBhcmF0b3IpIHsKLSAg
RVhQRUNUX1NUUkVRKAotICAgICAgImZvbyIsCi0gICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8pLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLmNfc3RyKCkpOwotI2lmIEdU
RVNUX0hBU19BTFRfUEFUSF9TRVBfCi0gIEVYUEVDVF9TVFJFUSgiZm9vIiwKLSAgICAgICAgICAg
ICAgIEZpbGVQYXRoKCJmb28vIikuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuY19zdHIo
KSk7Ci0jZW5kaWYKLX0KLQotLy8gUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28vYmFy
LyIgLT4gImZvby9iYXIvIgotVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBT
aG91bGRSZW1vdmVMYXN0U2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8gImJhciIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRI
X1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBfKQotICAgICAgICAgICAgICAgLlJlbW92ZVRyYWls
aW5nUGF0aFNlcGFyYXRvcigpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVUcmFpbGluZ1BhdGhT
ZXBhcmF0b3IgImZvby9iYXIiIC0+ICJmb28vYmFyIgotVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhT
ZXBhcmF0b3JUZXN0LCBTaG91bGRSZXR1cm5Vbm1vZGlmaWVkKSB7Ci0gIEVYUEVDVF9TVFJFUSgi
Zm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8gImJhciIpCi0gICAgICAgICAgICAgICAuUmVtb3ZlVHJhaWxpbmdQ
YXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7Ci19Ci0KLVRFU1QoRGlyZWN0b3J5VGVzdCwgUm9vdERp
cmVjdG9yeUV4aXN0cykgewotI2lmIEdURVNUX09TX1dJTkRPV1MgIC8vIFdlIGFyZSBvbiBXaW5k
b3dzLgotICBjaGFyIGN1cnJlbnRfZHJpdmVbX01BWF9QQVRIXTsgIC8vIE5PTElOVAotICBjdXJy
ZW50X2RyaXZlWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oX2dldGRyaXZlKCkgKyAnQScgLSAxKTsK
LSAgY3VycmVudF9kcml2ZVsxXSA9ICc6JzsKLSAgY3VycmVudF9kcml2ZVsyXSA9ICdcXCc7Ci0g
IGN1cnJlbnRfZHJpdmVbM10gPSAnXDAnOwotICBFWFBFQ1RfVFJVRShGaWxlUGF0aChjdXJyZW50
X2RyaXZlKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0jZWxzZQotICBFWFBFQ1RfVFJVRShGaWxlUGF0
aCgiLyIpLkRpcmVjdG9yeUV4aXN0cygpKTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwot
fQotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotVEVTVChEaXJlY3RvcnlUZXN0LCBSb290T2ZXcm9u
Z0RyaXZlRG9lc05vdEV4aXN0cykgewotICBjb25zdCBpbnQgc2F2ZWRfZHJpdmVfID0gX2dldGRy
aXZlKCk7Ci0gIC8vIEZpbmQgYSBkcml2ZSB0aGF0IGRvZXNuJ3QgZXhpc3QuIFN0YXJ0IHdpdGgg
J1onIHRvIGF2b2lkIGNvbW1vbiBvbmVzLgotICBmb3IgKGNoYXIgZHJpdmUgPSAnWic7IGRyaXZl
ID49ICdBJzsgZHJpdmUtLSkKLSAgICBpZiAoX2NoZHJpdmUoZHJpdmUgLSAnQScgKyAxKSA9PSAt
MSkgewotICAgICAgY2hhciBub25fZHJpdmVbX01BWF9QQVRIXTsgIC8vIE5PTElOVAotICAgICAg
bm9uX2RyaXZlWzBdID0gZHJpdmU7Ci0gICAgICBub25fZHJpdmVbMV0gPSAnOic7Ci0gICAgICBu
b25fZHJpdmVbMl0gPSAnXFwnOwotICAgICAgbm9uX2RyaXZlWzNdID0gJ1wwJzsKLSAgICAgIEVY
UEVDVF9GQUxTRShGaWxlUGF0aChub25fZHJpdmUpLkRpcmVjdG9yeUV4aXN0cygpKTsKLSAgICAg
IGJyZWFrOwotICAgIH0KLSAgX2NoZHJpdmUoc2F2ZWRfZHJpdmVfKTsKLX0KLSNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUwotCi0jaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0vLyBXaW5k
b3dzIENFIF9kb2VzXyBjb25zaWRlciBhbiBlbXB0eSBkaXJlY3RvcnkgdG8gZXhpc3QuCi1URVNU
KERpcmVjdG9yeVRlc3QsIEVtcHR5UGF0aERpcmVjdG9yeURvZXNOb3RFeGlzdCkgewotICBFWFBF
Q1RfRkFMU0UoRmlsZVBhdGgoIiIpLkRpcmVjdG9yeUV4aXN0cygpKTsKLX0KLSNlbmRpZiAgLy8g
IUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLVRFU1QoRGlyZWN0b3J5VGVzdCwgQ3VycmVudERp
cmVjdG9yeUV4aXN0cykgewotI2lmIEdURVNUX09TX1dJTkRPV1MgIC8vIFdlIGFyZSBvbiBXaW5k
b3dzLgotI2lmbmRlZiBfV0lOMzJfQ0UgIC8vIFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlIGEgY3Vy
cmVudCBkaXJlY3RvcnkuCi0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIuIikuRGlyZWN0b3J5RXhp
c3RzKCkpOwotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiLlxcIikuRGlyZWN0b3J5RXhpc3RzKCkp
OwotI2VuZGlmICAvLyBfV0lOMzJfQ0UKLSNlbHNlCi0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIu
IikuRGlyZWN0b3J5RXhpc3RzKCkpOwotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiLi8iKS5EaXJl
Y3RvcnlFeGlzdHMoKSk7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLX0KLQotVEVTVChO
b3JtYWxpemVUZXN0LCBOdWxsU3RyaW5nc0VxdWFsRW1wdHlEaXJlY3RvcnkpIHsKLSAgRVhQRUNU
X1NUUkVRKCIiLCBGaWxlUGF0aChOVUxMKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCBG
aWxlUGF0aChTdHJpbmcoTlVMTCkpLmNfc3RyKCkpOwotfQotCi0vLyAiZm9vL2JhciIgPT0gZm9v
Ly9iYXIiID09ICJmb28vLy9iYXIiCi1URVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRpcGxlQ29uc2Vj
dXRpdmVTZXBhcGFyYXRvcnNJbk1pZHN0cmluZykgewotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RF
U1RfUEFUSF9TRVBfICJiYXIiLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1Rf
UEFUSF9TRVBfICJiYXIiKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BB
VEhfU0VQXyAiYmFyIiwKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhf
U0VQXyBHVEVTVF9QQVRIX1NFUF8gImJhciIpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoImZv
byIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIg
R1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXwotICAgICAgICAgICAgICAgICAgICAgICAg
R1RFU1RfUEFUSF9TRVBfICJiYXIiKS5jX3N0cigpKTsKLX0KLQotLy8gIi9iYXIiID09IC8vYmFy
IiA9PSAiLy8vYmFyIgotVEVTVChOb3JtYWxpemVUZXN0LCBNdWx0aXBsZUNvbnNlY3V0aXZlU2Vw
YXBhcmF0b3JzQXRTdHJpbmdTdGFydCkgewotICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBf
ICJiYXIiLAotICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiYmFyIikuY19zdHIoKSk7Ci0g
IEVYUEVDVF9TVFJFUShHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAgRmlsZVBhdGgoR1RFU1Rf
UEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJF
UShHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfIEdU
RVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gImJhciIpLmNfc3RyKCkpOwotfQotCi0vLyAi
Zm9vLyIgPT0gZm9vLy8iID09ICJmb28vLy8iCi1URVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRpcGxl
Q29uc2VjdXRpdmVTZXBhcGFyYXRvcnNBdFN0cmluZ0VuZCkgewotICBFWFBFQ1RfU1RSRVEoImZv
byIgR1RFU1RfUEFUSF9TRVBfLAotICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyku
Y19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgRmls
ZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXykuY19zdHIoKSk7Ci0g
IEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgRmlsZVBhdGgoImZvbyIg
R1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8pLmNfc3RyKCkp
OwotfQotCi0jaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KLQotLy8gVGVzdHMgdGhhdCBzZXBh
cmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBhcmUgbm9ybWFsaXplZAotLy8gcmVnYXJk
bGVzcyBvZiB0aGVpciBjb21iaW5hdGlvbiAoZS5nLiAiZm9vXCIgPT0iZm9vL1wiID09Ci0vLyAi
Zm9vXFwvIikuCi1URVNUKE5vcm1hbGl6ZVRlc3QsIE1peEFsdGVybmF0ZVNlcGFyYXRvckF0U3Ry
aW5nRW5kKSB7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICAg
ICAgICAgICBGaWxlUGF0aCgiZm9vLyIpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIg
R1RFU1RfUEFUSF9TRVBfLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFU
SF9TRVBfICIvIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8sCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9vLy8iIEdURVNUX1BBVEhfU0VQXykuY19z
dHIoKSk7Ci19Ci0KLSNlbmRpZgotCi1URVNUKEFzc2lnbm1lbnRPcGVyYXRvclRlc3QsIERlZmF1
bHRBc3NpZ25lZFRvTm9uRGVmYXVsdCkgewotICBGaWxlUGF0aCBkZWZhdWx0X3BhdGg7Ci0gIEZp
bGVQYXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgiKTsKLSAgbm9uX2RlZmF1bHRfcGF0aCA9IGRl
ZmF1bHRfcGF0aDsKLSAgRVhQRUNUX1NUUkVRKCIiLCBub25fZGVmYXVsdF9wYXRoLmNfc3RyKCkp
OwotICBFWFBFQ1RfU1RSRVEoIiIsIGRlZmF1bHRfcGF0aC5jX3N0cigpKTsgIC8vIFJIUyB2YXIg
aXMgdW5jaGFuZ2VkLgotfQotCi1URVNUKEFzc2lnbm1lbnRPcGVyYXRvclRlc3QsIE5vbkRlZmF1
bHRBc3NpZ25lZFRvRGVmYXVsdCkgewotICBGaWxlUGF0aCBub25fZGVmYXVsdF9wYXRoKCJwYXRo
Iik7Ci0gIEZpbGVQYXRoIGRlZmF1bHRfcGF0aDsKLSAgZGVmYXVsdF9wYXRoID0gbm9uX2RlZmF1
bHRfcGF0aDsKLSAgRVhQRUNUX1NUUkVRKCJwYXRoIiwgZGVmYXVsdF9wYXRoLmNfc3RyKCkpOwot
ICBFWFBFQ1RfU1RSRVEoInBhdGgiLCBub25fZGVmYXVsdF9wYXRoLmNfc3RyKCkpOyAgLy8gUkhT
IHZhciBpcyB1bmNoYW5nZWQuCi19Ci0KLVRFU1QoQXNzaWdubWVudE9wZXJhdG9yVGVzdCwgQ29u
c3RBc3NpZ25lZFRvTm9uQ29uc3QpIHsKLSAgY29uc3QgRmlsZVBhdGggY29uc3RfZGVmYXVsdF9w
YXRoKCJjb25zdF9wYXRoIik7Ci0gIEZpbGVQYXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgiKTsK
LSAgbm9uX2RlZmF1bHRfcGF0aCA9IGNvbnN0X2RlZmF1bHRfcGF0aDsKLSAgRVhQRUNUX1NUUkVR
KCJjb25zdF9wYXRoIiwgbm9uX2RlZmF1bHRfcGF0aC5jX3N0cigpKTsKLX0KLQotY2xhc3MgRGly
ZWN0b3J5Q3JlYXRpb25UZXN0IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVh
bCB2b2lkIFNldFVwKCkgewotICAgIHRlc3RkYXRhX3BhdGhfLlNldChGaWxlUGF0aChTdHJpbmc6
OkZvcm1hdCgiJXMlcyVzIiwKLSAgICAgICAgVGVtcERpcigpLmNfc3RyKCksIEdldEN1cnJlbnRF
eGVjdXRhYmxlTmFtZSgpLmNfc3RyKCksCi0gICAgICAgICJfZGlyZWN0b3J5X2NyZWF0aW9uIiBH
VEVTVF9QQVRIX1NFUF8gInRlc3QiIEdURVNUX1BBVEhfU0VQXykpKTsKLSAgICB0ZXN0ZGF0YV9m
aWxlXy5TZXQodGVzdGRhdGFfcGF0aF8uUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkpOwot
Ci0gICAgdW5pcXVlX2ZpbGUwXy5TZXQoRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZSh0ZXN0ZGF0YV9w
YXRoXywgRmlsZVBhdGgoInVuaXF1ZSIpLAotICAgICAgICAwLCAidHh0IikpOwotICAgIHVuaXF1
ZV9maWxlMV8uU2V0KEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUodGVzdGRhdGFfcGF0aF8sIEZpbGVQ
YXRoKCJ1bmlxdWUiKSwKLSAgICAgICAgMSwgInR4dCIpKTsKLQotICAgIHJlbW92ZSh0ZXN0ZGF0
YV9maWxlXy5jX3N0cigpKTsKLSAgICByZW1vdmUodW5pcXVlX2ZpbGUwXy5jX3N0cigpKTsKLSAg
ICByZW1vdmUodW5pcXVlX2ZpbGUxXy5jX3N0cigpKTsKLSAgICBwb3NpeDo6Um1EaXIodGVzdGRh
dGFfcGF0aF8uY19zdHIoKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0g
ICAgcmVtb3ZlKHRlc3RkYXRhX2ZpbGVfLmNfc3RyKCkpOwotICAgIHJlbW92ZSh1bmlxdWVfZmls
ZTBfLmNfc3RyKCkpOwotICAgIHJlbW92ZSh1bmlxdWVfZmlsZTFfLmNfc3RyKCkpOwotICAgIHBv
c2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKLSAgfQotCi0gIFN0cmluZyBUZW1w
RGlyKCkgY29uc3QgewotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0gICAgcmV0dXJuIFN0
cmluZygiXFx0ZW1wXFwiKTsKLSNlbGlmIEdURVNUX09TX1dJTkRPV1MKLSAgICBjb25zdCBjaGFy
KiB0ZW1wX2RpciA9IHBvc2l4OjpHZXRFbnYoIlRFTVAiKTsKLSAgICBpZiAodGVtcF9kaXIgPT0g
TlVMTCB8fCB0ZW1wX2RpclswXSA9PSAnXDAnKQotICAgICAgcmV0dXJuIFN0cmluZygiXFx0ZW1w
XFwiKTsKLSAgICBlbHNlIGlmIChTdHJpbmcodGVtcF9kaXIpLkVuZHNXaXRoKCJcXCIpKQotICAg
ICAgcmV0dXJuIFN0cmluZyh0ZW1wX2Rpcik7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIFN0cmlu
Zzo6Rm9ybWF0KCIlc1xcIiwgdGVtcF9kaXIpOwotI2Vsc2UKLSAgICByZXR1cm4gU3RyaW5nKCIv
dG1wLyIpOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotICB9Ci0KLSAgdm9p
ZCBDcmVhdGVUZXh0RmlsZShjb25zdCBjaGFyKiBmaWxlbmFtZSkgewotICAgIEZJTEUqIGYgPSBw
b3NpeDo6Rk9wZW4oZmlsZW5hbWUsICJ3Iik7Ci0gICAgZnByaW50ZihmLCAidGV4dFxuIik7Ci0g
ICAgZmNsb3NlKGYpOwotICB9Ci0KLSAgLy8gU3RyaW5ncyByZXByZXNlbnRpbmcgYSBkaXJlY3Rv
cnkgYW5kIGEgZmlsZSwgd2l0aCBpZGVudGljYWwgcGF0aHMKLSAgLy8gZXhjZXB0IGZvciB0aGUg
dHJhaWxpbmcgc2VwYXJhdG9yIGNoYXJhY3RlciB0aGF0IGRpc3RpbnF1aXNoZXMKLSAgLy8gYSBk
aXJlY3RvcnkgbmFtZWQgJ3Rlc3QnIGZyb20gYSBmaWxlIG5hbWVkICd0ZXN0Jy4gRXhhbXBsZSBu
YW1lczoKLSAgRmlsZVBhdGggdGVzdGRhdGFfcGF0aF87ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3Jl
YXRpb24vdGVzdC8iCi0gIEZpbGVQYXRoIHRlc3RkYXRhX2ZpbGVfOyAgLy8gIi90bXAvZGlyZWN0
b3J5X2NyZWF0aW9uL3Rlc3QiCi0gIEZpbGVQYXRoIHVuaXF1ZV9maWxlMF87ICAvLyAiL3RtcC9k
aXJlY3RvcnlfY3JlYXRpb24vdGVzdC91bmlxdWUudHh0IgotICBGaWxlUGF0aCB1bmlxdWVfZmls
ZTFfOyAgLy8gIi90bXAvZGlyZWN0b3J5X2NyZWF0aW9uL3Rlc3QvdW5pcXVlXzEudHh0IgotfTsK
LQotVEVTVF9GKERpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNp
dmVseSkgewotICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfcGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkp
IDw8IHRlc3RkYXRhX3BhdGhfLmNfc3RyKCk7Ci0gIEVYUEVDVF9UUlVFKHRlc3RkYXRhX3BhdGhf
LkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3RkYXRh
X3BhdGhfLkRpcmVjdG9yeUV4aXN0cygpKTsKLX0KLQotVEVTVF9GKERpcmVjdG9yeUNyZWF0aW9u
VGVzdCwgQ3JlYXRlRGlyZWN0b3JpZXNGb3JBbHJlYWR5RXhpc3RpbmdQYXRoKSB7Ci0gIEVYUEVD
VF9GQUxTRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlzdHMoKSkgPDwgdGVzdGRhdGFfcGF0
aF8uY19zdHIoKTsKLSAgRVhQRUNUX1RSVUUodGVzdGRhdGFfcGF0aF8uQ3JlYXRlRGlyZWN0b3Jp
ZXNSZWN1cnNpdmVseSgpKTsKLSAgLy8gQ2FsbCAnY3JlYXRlJyBhZ2Fpbi4uLiBzaG91bGQgc3Rp
bGwgc3VjY2VlZC4KLSAgRVhQRUNUX1RSVUUodGVzdGRhdGFfcGF0aF8uQ3JlYXRlRGlyZWN0b3Jp
ZXNSZWN1cnNpdmVseSgpKTsKLX0KLQotVEVTVF9GKERpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3Jl
YXRlRGlyZWN0b3JpZXNBbmRVbmlxdWVGaWxlbmFtZSkgewotICBGaWxlUGF0aCBmaWxlX3BhdGgo
RmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5hbWUodGVzdGRhdGFfcGF0aF8sCi0gICAgICBG
aWxlUGF0aCgidW5pcXVlIiksICJ0eHQiKSk7Ci0gIEVYUEVDVF9TVFJFUSh1bmlxdWVfZmlsZTBf
LmNfc3RyKCksIGZpbGVfcGF0aC5jX3N0cigpKTsKLSAgRVhQRUNUX0ZBTFNFKGZpbGVfcGF0aC5G
aWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAvLyBmaWxlIG5vdCB0aGVyZQotCi0gIHRlc3RkYXRh
X3BhdGhfLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKTsKLSAgRVhQRUNUX0ZBTFNFKGZp
bGVfcGF0aC5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAvLyBmaWxlIHN0aWxsIG5vdCB0aGVy
ZQotICBDcmVhdGVUZXh0RmlsZShmaWxlX3BhdGguY19zdHIoKSk7Ci0gIEVYUEVDVF9UUlVFKGZp
bGVfcGF0aC5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7Ci0KLSAgRmlsZVBhdGggZmlsZV9wYXRo
MihGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFtZSh0ZXN0ZGF0YV9wYXRoXywKLSAgICAg
IEZpbGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIpKTsKLSAgRVhQRUNUX1NUUkVRKHVuaXF1ZV9maWxl
MV8uY19zdHIoKSwgZmlsZV9wYXRoMi5jX3N0cigpKTsKLSAgRVhQRUNUX0ZBTFNFKGZpbGVfcGF0
aDIuRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8gZmlsZSBub3QgdGhlcmUKLSAgQ3JlYXRl
VGV4dEZpbGUoZmlsZV9wYXRoMi5jX3N0cigpKTsKLSAgRVhQRUNUX1RSVUUoZmlsZV9wYXRoMi5G
aWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7Ci19Ci0KLVRFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRl
c3QsIENyZWF0ZURpcmVjdG9yaWVzRmFpbCkgewotICAvLyBmb3JjZSBhIGZhaWx1cmUgYnkgcHV0
dGluZyBhIGZpbGUgd2hlcmUgd2Ugd2lsbCB0cnkgdG8gY3JlYXRlIGEgZGlyZWN0b3J5LgotICBD
cmVhdGVUZXh0RmlsZSh0ZXN0ZGF0YV9maWxlXy5jX3N0cigpKTsKLSAgRVhQRUNUX1RSVUUodGVz
dGRhdGFfZmlsZV8uRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOwotICBFWFBFQ1RfRkFMU0UodGVz
dGRhdGFfZmlsZV8uRGlyZWN0b3J5RXhpc3RzKCkpOwotICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFf
ZmlsZV8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKTsKLX0KLQotVEVTVChOb0RpcmVj
dG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlTm9EaXJlY3Rvcmllc0ZvckRlZmF1bHRYbWxGaWxlKSB7
Ci0gIGNvbnN0IEZpbGVQYXRoIHRlc3RfZGV0YWlsX3htbCgidGVzdF9kZXRhaWwueG1sIik7Ci0g
IEVYUEVDVF9GQUxTRSh0ZXN0X2RldGFpbF94bWwuQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVs
eSgpKTsKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvcikgewotICBG
aWxlUGF0aCBmcDsKLSAgRVhQRUNUX1NUUkVRKCIiLCBmcC5jX3N0cigpKTsKLX0KLQotVEVTVChG
aWxlUGF0aFRlc3QsIENoYXJBbmRDb3B5Q29uc3RydWN0b3JzKSB7Ci0gIGNvbnN0IEZpbGVQYXRo
IGZwKCJzcGljeSIpOwotICBFWFBFQ1RfU1RSRVEoInNwaWN5IiwgZnAuY19zdHIoKSk7Ci0KLSAg
Y29uc3QgRmlsZVBhdGggZnBfY29weShmcCk7Ci0gIEVYUEVDVF9TVFJFUSgic3BpY3kiLCBmcF9j
b3B5LmNfc3RyKCkpOwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgU3RyaW5nQ29uc3RydWN0b3Ip
IHsKLSAgY29uc3QgRmlsZVBhdGggZnAoU3RyaW5nKCJjaWRlciIpKTsKLSAgRVhQRUNUX1NUUkVR
KCJjaWRlciIsIGZwLmNfc3RyKCkpOwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgU2V0KSB7Ci0g
IGNvbnN0IEZpbGVQYXRoIGFwcGxlKCJhcHBsZSIpOwotICBGaWxlUGF0aCBtYWMoIm1hYyIpOwot
ICBtYWMuU2V0KGFwcGxlKTsgIC8vIEltcGxlbWVudCBTZXQoKSBzaW5jZSBvdmVybG9hZGluZyBv
cGVyYXRvcj0gaXMgZm9yYmlkZGVuLgotICBFWFBFQ1RfU1RSRVEoImFwcGxlIiwgbWFjLmNfc3Ry
KCkpOwotICBFWFBFQ1RfU1RSRVEoImFwcGxlIiwgYXBwbGUuY19zdHIoKSk7Ci19Ci0KLVRFU1Qo
RmlsZVBhdGhUZXN0LCBUb1N0cmluZykgewotICBjb25zdCBGaWxlUGF0aCBmaWxlKCJkcmluayIp
OwotICBTdHJpbmcgc3RyKGZpbGUuVG9TdHJpbmcoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZHJpbmsi
LCBzdHIuY19zdHIoKSk7Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0LCBSZW1vdmVFeHRlbnNpb24p
IHsKLSAgRVhQRUNUX1NUUkVRKCJhcHAiLCBGaWxlUGF0aCgiYXBwLmV4ZSIpLlJlbW92ZUV4dGVu
c2lvbigiZXhlIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiQVBQIiwgRmlsZVBhdGgoIkFQ
UC5FWEUiKS5SZW1vdmVFeHRlbnNpb24oImV4ZSIpLmNfc3RyKCkpOwotfQotCi1URVNUKEZpbGVQ
YXRoVGVzdCwgUmVtb3ZlRXh0ZW5zaW9uV2hlblRoZXJlSXNOb0V4dGVuc2lvbikgewotICBFWFBF
Q1RfU1RSRVEoImFwcCIsIEZpbGVQYXRoKCJhcHAiKS5SZW1vdmVFeHRlbnNpb24oImV4ZSIpLmNf
c3RyKCkpOwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgSXNEaXJlY3RvcnkpIHsKLSAgRVhQRUNU
X0ZBTFNFKEZpbGVQYXRoKCJjb2xhIikuSXNEaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9UUlVFKEZp
bGVQYXRoKCJrb2FsYSIgR1RFU1RfUEFUSF9TRVBfKS5Jc0RpcmVjdG9yeSgpKTsKLSNpZiBHVEVT
VF9IQVNfQUxUX1BBVEhfU0VQXwotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgia29hbGEvIikuSXNE
aXJlY3RvcnkoKSk7Ci0jZW5kaWYKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIElzQWJzb2x1dGVQ
YXRoKSB7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiaXMiIEdURVNUX1BBVEhfU0VQXyAicmVs
YXRpdmUiKS5Jc0Fic29sdXRlUGF0aCgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIiKS5J
c0Fic29sdXRlUGF0aCgpKTsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIEVYUEVDVF9UUlVFKEZp
bGVQYXRoKCJjOlxcIiBHVEVTVF9QQVRIX1NFUF8gImlzX25vdCIKLSAgICAgICAgICAgICAgICAg
ICAgICAgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIpLklzQWJzb2x1dGVQYXRoKCkpOwotICBF
WFBFQ1RfRkFMU0UoRmlsZVBhdGgoImM6Zm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIpLklzQWJz
b2x1dGVQYXRoKCkpOwotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiYzovIiBHVEVTVF9QQVRIX1NF
UF8gImlzX25vdCIKLSAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfUEFUSF9TRVBfICJyZWxh
dGl2ZSIpLklzQWJzb2x1dGVQYXRoKCkpOwotI2Vsc2UKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgo
R1RFU1RfUEFUSF9TRVBfICJpc19ub3QiIEdURVNUX1BBVEhfU0VQXyAicmVsYXRpdmUiKQotICAg
ICAgICAgICAgICAuSXNBYnNvbHV0ZVBhdGgoKSk7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRP
V1MKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIElzUm9vdERpcmVjdG9yeSkgewotI2lmIEdURVNU
X09TX1dJTkRPV1MKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImE6XFwiKS5Jc1Jvb3REaXJlY3Rv
cnkoKSk7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJaOi8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7
Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJlOi8vIikuSXNSb290RGlyZWN0b3J5KCkpOwotICBF
WFBFQ1RfRkFMU0UoRmlsZVBhdGgoIiIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX0ZB
TFNFKEZpbGVQYXRoKCJiOiIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZp
bGVQYXRoKCJiOmEiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0
aCgiODovIikuSXNSb290RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImN8
LyIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSNlbHNlCi0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIv
IikuSXNSb290RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiLy8iKS5Jc1Jv
b3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiIikuSXNSb290RGlyZWN0
b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIlxcIikuSXNSb290RGlyZWN0b3J5KCkp
OwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIi94IikuSXNSb290RGlyZWN0b3J5KCkpOwotI2Vu
ZGlmCi19Ci0KLX0gIC8vIG5hbWVzcGFjZQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi19ICAv
LyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdC1saW5rZWRfcHRyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZWFlODIyOTZjOTIxZjBhZmU0MmZjMjMzNTc0OTcwZWU3NzA5ZTViZC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDE1NCAr
MCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwMywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwot
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0v
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwot
Ly8gQXV0aG9yczogRGFuIEVnbm9yIChlZ25vckBnb29nbGUuY29tKQotLy8gUG9ydGVkIHRvIFdp
bmRvd3M6IFZhZGltIEJlcm1hbiAodmFkaW1iQGdvb2dsZS5jb20pCi0KLSNpbmNsdWRlIDxndGVz
dC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRyLmg+Ci0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1uYW1lc3BhY2UgewotCi11c2luZyB0ZXN0aW5nOjpN
ZXNzYWdlOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmxpbmtlZF9wdHI7Ci0KLWludCBudW07
Ci1NZXNzYWdlKiBoaXN0b3J5ID0gTlVMTDsKLQotLy8gQ2xhc3Mgd2hpY2ggdHJhY2tzIGFsbG9j
YXRpb24vZGVhbGxvY2F0aW9uCi1jbGFzcyBBIHsKLSBwdWJsaWM6Ci0gIEEoKTogbXludW0obnVt
KyspIHsgKmhpc3RvcnkgPDwgIkEiIDw8IG15bnVtIDw8ICIgY3RvclxuIjsgfQotICB2aXJ0dWFs
IH5BKCkgeyAqaGlzdG9yeSA8PCAiQSIgPDwgbXludW0gPDwgIiBkdG9yXG4iOyB9Ci0gIHZpcnR1
YWwgdm9pZCBVc2UoKSB7ICpoaXN0b3J5IDw8ICJBIiA8PCBteW51bSA8PCAiIHVzZVxuIjsgfQot
IHByb3RlY3RlZDoKLSAgaW50IG15bnVtOwotfTsKLQotLy8gU3ViY2xhc3MKLWNsYXNzIEIgOiBw
dWJsaWMgQSB7Ci0gcHVibGljOgotICBCKCkgeyAqaGlzdG9yeSA8PCAiQiIgPDwgbXludW0gPDwg
IiBjdG9yXG4iOyB9Ci0gIH5CKCkgeyAqaGlzdG9yeSA8PCAiQiIgPDwgbXludW0gPDwgIiBkdG9y
XG4iOyB9Ci0gIHZpcnR1YWwgdm9pZCBVc2UoKSB7ICpoaXN0b3J5IDw8ICJCIiA8PCBteW51bSA8
PCAiIHVzZVxuIjsgfQotfTsKLQotY2xhc3MgTGlua2VkUHRyVGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKLSBwdWJsaWM6Ci0gIExpbmtlZFB0clRlc3QoKSB7Ci0gICAgbnVtID0gMDsKLSAg
ICBoaXN0b3J5ID0gbmV3IE1lc3NhZ2U7Ci0gIH0KLQotICB2aXJ0dWFsIH5MaW5rZWRQdHJUZXN0
KCkgewotICAgIGRlbGV0ZSBoaXN0b3J5OwotICAgIGhpc3RvcnkgPSBOVUxMOwotICB9Ci19Owot
Ci1URVNUX0YoTGlua2VkUHRyVGVzdCwgR2VuZXJhbFRlc3QpIHsKLSAgewotICAgIGxpbmtlZF9w
dHI8QT4gYTAsIGExLCBhMjsKLSAgICBhMCA9IGEwOwotICAgIGExID0gYTI7Ci0gICAgQVNTRVJU
X0VRKGEwLmdldCgpLCBzdGF0aWNfY2FzdDxBKj4oTlVMTCkpOwotICAgIEFTU0VSVF9FUShhMS5n
ZXQoKSwgc3RhdGljX2Nhc3Q8QSo+KE5VTEwpKTsKLSAgICBBU1NFUlRfRVEoYTIuZ2V0KCksIHN0
YXRpY19jYXN0PEEqPihOVUxMKSk7Ci0gICAgQVNTRVJUX1RSVUUoYTAgPT0gTlVMTCk7Ci0gICAg
QVNTRVJUX1RSVUUoYTEgPT0gTlVMTCk7Ci0gICAgQVNTRVJUX1RSVUUoYTIgPT0gTlVMTCk7Ci0K
LSAgICB7Ci0gICAgICBsaW5rZWRfcHRyPEE+IGEzKG5ldyBBKTsKLSAgICAgIGEwID0gYTM7Ci0g
ICAgICBBU1NFUlRfVFJVRShhMCA9PSBhMyk7Ci0gICAgICBBU1NFUlRfVFJVRShhMCAhPSBOVUxM
KTsKLSAgICAgIEFTU0VSVF9UUlVFKGEwLmdldCgpID09IGEzKTsKLSAgICAgIEFTU0VSVF9UUlVF
KGEwID09IGEzLmdldCgpKTsKLSAgICAgIGxpbmtlZF9wdHI8QT4gYTQoYTApOwotICAgICAgYTEg
PSBhNDsKLSAgICAgIGxpbmtlZF9wdHI8QT4gYTUobmV3IEEpOwotICAgICAgQVNTRVJUX1RSVUUo
YTUuZ2V0KCkgIT0gYTMpOwotICAgICAgQVNTRVJUX1RSVUUoYTUgIT0gYTMuZ2V0KCkpOwotICAg
ICAgYTIgPSBhNTsKLSAgICAgIGxpbmtlZF9wdHI8Qj4gYjAobmV3IEIpOwotICAgICAgbGlua2Vk
X3B0cjxBPiBhNihiMCk7Ci0gICAgICBBU1NFUlRfVFJVRShiMCA9PSBhNik7Ci0gICAgICBBU1NF
UlRfVFJVRShhNiA9PSBiMCk7Ci0gICAgICBBU1NFUlRfVFJVRShiMCAhPSBOVUxMKTsKLSAgICAg
IGE1ID0gYjA7Ci0gICAgICBhNSA9IGIwOwotICAgICAgYTMtPlVzZSgpOwotICAgICAgYTQtPlVz
ZSgpOwotICAgICAgYTUtPlVzZSgpOwotICAgICAgYTYtPlVzZSgpOwotICAgICAgYjAtPlVzZSgp
OwotICAgICAgKCpiMCkuVXNlKCk7Ci0gICAgICBiMC5nZXQoKS0+VXNlKCk7Ci0gICAgfQotCi0g
ICAgYTAtPlVzZSgpOwotICAgIGExLT5Vc2UoKTsKLSAgICBhMi0+VXNlKCk7Ci0KLSAgICBhMSA9
IGEyOwotICAgIGEyLnJlc2V0KG5ldyBBKTsKLSAgICBhMC5yZXNldCgpOwotCi0gICAgbGlua2Vk
X3B0cjxBPiBhNzsKLSAgfQotCi0gIEFTU0VSVF9TVFJFUSgKLSAgICAiQTAgY3RvclxuIgotICAg
ICJBMSBjdG9yXG4iCi0gICAgIkEyIGN0b3JcbiIKLSAgICAiQjIgY3RvclxuIgotICAgICJBMCB1
c2VcbiIKLSAgICAiQTAgdXNlXG4iCi0gICAgIkIyIHVzZVxuIgotICAgICJCMiB1c2VcbiIKLSAg
ICAiQjIgdXNlXG4iCi0gICAgIkIyIHVzZVxuIgotICAgICJCMiB1c2VcbiIKLSAgICAiQjIgZHRv
clxuIgotICAgICJBMiBkdG9yXG4iCi0gICAgIkEwIHVzZVxuIgotICAgICJBMCB1c2VcbiIKLSAg
ICAiQTEgdXNlXG4iCi0gICAgIkEzIGN0b3JcbiIKLSAgICAiQTAgZHRvclxuIgotICAgICJBMyBk
dG9yXG4iCi0gICAgIkExIGR0b3JcbiIsCi0gICAgaGlzdG9yeS0+R2V0U3RyaW5nKCkuY19zdHIo
KQotICApOwotfQotCi19ICAvLyBVbm5hbWVkIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saXN0ZW5lcl90ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saXN0ZW5lcl90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjOWJlMzlhODdlODhkODk2MDFiOWJjOTM3MmExNGVkYWFmNjEyOTQz
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYworKysgL2Rldi9udWxs
CkBAIC0xLDMxMyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0
OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8v
Ci0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCi0vLyBU
aGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCi0vLwotLy8gVGhp
cyBmaWxlIHZlcmlmaWVzIEdvb2dsZSBUZXN0IGV2ZW50IGxpc3RlbmVycyByZWNlaXZlIGV2ZW50
cyBhdCB0aGUKLS8vIHJpZ2h0IHRpbWVzLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNp
bmNsdWRlIDx2ZWN0b3I+Ci0KLXVzaW5nIDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25t
ZW50OwotdXNpbmcgOjp0ZXN0aW5nOjpFbnZpcm9ubWVudDsKLXVzaW5nIDo6dGVzdGluZzo6SW5p
dEdvb2dsZVRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OlRl
c3RDYXNlOwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcjsKLXVzaW5nIDo6dGVz
dGluZzo6VGVzdEluZm87Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OwotdXNpbmcg
Ojp0ZXN0aW5nOjpVbml0VGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZzsK
LQotLy8gVXNlZCBieSB0ZXN0cyB0byByZWdpc3RlciB0aGVpciBldmVudHMuCi1zdGQ6OnZlY3Rv
cjxTdHJpbmc+KiBnX2V2ZW50cyA9IE5VTEw7Ci0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVz
cGFjZSBpbnRlcm5hbCB7Ci0KLWNsYXNzIEV2ZW50UmVjb3JkaW5nTGlzdGVuZXIgOiBwdWJsaWMg
VGVzdEV2ZW50TGlzdGVuZXIgewotIHB1YmxpYzoKLSAgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lcihj
b25zdCBjaGFyKiBuYW1lKSA6IG5hbWVfKG5hbWUpIHt9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1
YWwgdm9pZCBPblRlc3RQcm9ncmFtU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8p
IHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RQcm9n
cmFtU3RhcnQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uU3RhcnQo
Y29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaXRlcmF0aW9uKSB7Ci0gICAgTWVzc2FnZSBtZXNzYWdlOwotICAgIG1l
c3NhZ2UgPDwgR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdEl0ZXJhdGlvblN0YXJ0IikKLSAgICAg
ICAgICAgIDw8ICIoIiA8PCBpdGVyYXRpb24gPDwgIikiOwotICAgIGdfZXZlbnRzLT5wdXNoX2Jh
Y2sobWVzc2FnZS5HZXRTdHJpbmcoKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9u
bWVudHNTZXRVcFN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7Ci0gICAgZ19l
dmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25FbnZpcm9ubWVudHNTZXRVcFN0
YXJ0IikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzU2V0VXBFbmQoY29u
c3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdl
dEZ1bGxNZXRob2ROYW1lKCJPbkVudmlyb25tZW50c1NldFVwRW5kIikpOwotICB9Ci0KLSAgdmly
dHVhbCB2b2lkIE9uVGVzdENhc2VTdGFydChjb25zdCBUZXN0Q2FzZSYgLyp0ZXN0X2Nhc2UqLykg
ewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdENhc2VT
dGFydCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RTdGFydChjb25zdCBUZXN0SW5m
byYgLyp0ZXN0X2luZm8qLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhv
ZE5hbWUoIk9uVGVzdFN0YXJ0IikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdFBhcnRS
ZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIC8qdGVzdF9wYXJ0X3Jlc3VsdCovKSB7Ci0gICAg
Z19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0UGFydFJlc3VsdCIp
KTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3QgVGVzdEluZm8mIC8qdGVz
dF9pbmZvKi8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJP
blRlc3RFbmQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0Q2FzZUVuZChjb25zdCBU
ZXN0Q2FzZSYgLyp0ZXN0X2Nhc2UqLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVs
bE1ldGhvZE5hbWUoIk9uVGVzdENhc2VFbmQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25F
bnZpcm9ubWVudHNUZWFyRG93blN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7
Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25FbnZpcm9ubWVu
dHNUZWFyRG93blN0YXJ0IikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRz
VGVhckRvd25FbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKLSAgICBnX2V2ZW50
cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPbkVudmlyb25tZW50c1RlYXJEb3duRW5k
IikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0
VGVzdCYgLyp1bml0X3Rlc3QqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgaXRlcmF0aW9uKSB7Ci0gICAgTWVzc2FnZSBtZXNzYWdlOwotICAgIG1lc3NhZ2UgPDwgR2V0
RnVsbE1ldGhvZE5hbWUoIk9uVGVzdEl0ZXJhdGlvbkVuZCIpCi0gICAgICAgICAgICA8PCAiKCIg
IDw8IGl0ZXJhdGlvbiA8PCAiKSI7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhtZXNzYWdlLkdl
dFN0cmluZygpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RQcm9ncmFtRW5kKGNvbnN0
IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRG
dWxsTWV0aG9kTmFtZSgiT25UZXN0UHJvZ3JhbUVuZCIpKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAg
U3RyaW5nIEdldEZ1bGxNZXRob2ROYW1lKGNvbnN0IGNoYXIqIG5hbWUpIHsKLSAgICBNZXNzYWdl
IG1lc3NhZ2U7Ci0gICAgbWVzc2FnZSA8PCBuYW1lXyA8PCAiLiIgPDwgbmFtZTsKLSAgICByZXR1
cm4gbWVzc2FnZS5HZXRTdHJpbmcoKTsKLSAgfQotCi0gIFN0cmluZyBuYW1lXzsKLX07Ci0KLWNs
YXNzIEVudmlyb25tZW50SW52b2NhdGlvbkNhdGNoZXIgOiBwdWJsaWMgRW52aXJvbm1lbnQgewot
IHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIGdfZXZlbnRzLT5wdXNo
X2JhY2soU3RyaW5nKCJFbnZpcm9ubWVudDo6U2V0VXAiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZv
aWQgVGVhckRvd24oKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkVudmlyb25t
ZW50OjpUZWFyRG93biIpKTsKLSAgfQotfTsKLQotY2xhc3MgTGlzdGVuZXJUZXN0IDogcHVibGlj
IFRlc3QgewotIHByb3RlY3RlZDoKLSAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKLSAg
ICBnX2V2ZW50cy0+cHVzaF9iYWNrKFN0cmluZygiTGlzdGVuZXJUZXN0OjpTZXRVcFRlc3RDYXNl
IikpOwotICB9Ci0KLSAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKLSAgICBnX2V2
ZW50cy0+cHVzaF9iYWNrKFN0cmluZygiTGlzdGVuZXJUZXN0OjpUZWFyRG93blRlc3RDYXNlIikp
OwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2Jh
Y2soU3RyaW5nKCJMaXN0ZW5lclRlc3Q6OlNldFVwIikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lk
IFRlYXJEb3duKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJMaXN0ZW5lclRl
c3Q6OlRlYXJEb3duIikpOwotICB9Ci19OwotCi1URVNUX0YoTGlzdGVuZXJUZXN0LCBEb2VzRm9v
KSB7Ci0gIC8vIFRlc3QgZXhlY3V0aW9uIG9yZGVyIHdpdGhpbiBhIHRlc3QgY2FzZSBpcyBub3Qg
Z3VhcmFudGVlZCBzbyB3ZSBhcmUgbm90Ci0gIC8vIHJlY29yZGluZyB0aGUgdGVzdCBuYW1lLgot
ICBnX2V2ZW50cy0+cHVzaF9iYWNrKFN0cmluZygiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIp
KTsKLSAgU1VDQ0VFRCgpOyAgLy8gVHJpZ2dlcnMgT25UZXN0UGFydFJlc3VsdC4KLX0KLQotVEVT
VF9GKExpc3RlbmVyVGVzdCwgRG9lc0JhcikgewotICBnX2V2ZW50cy0+cHVzaF9iYWNrKFN0cmlu
ZygiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIpKTsKLSAgU1VDQ0VFRCgpOyAgLy8gVHJpZ2dl
cnMgT25UZXN0UGFydFJlc3VsdC4KLX0KLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KLX0g
IC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OkVudmly
b25tZW50SW52b2NhdGlvbkNhdGNoZXI7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpFdmVu
dFJlY29yZGluZ0xpc3RlbmVyOwotCi12b2lkIFZlcmlmeVJlc3VsdHMoY29uc3Qgc3RkOjp2ZWN0
b3I8U3RyaW5nPiYgZGF0YSwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb25zdCog
ZXhwZWN0ZWRfZGF0YSwKLSAgICAgICAgICAgICAgICAgICBpbnQgZXhwZWN0ZWRfZGF0YV9zaXpl
KSB7Ci0gIGNvbnN0IGludCBhY3R1YWxfc2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAvLyBJZiB0aGUg
Zm9sbG93aW5nIGFzc2VydGlvbiBmYWlscywgYSBuZXcgZW50cnkgd2lsbCBiZSBhcHBlbmRlZCB0
bwotICAvLyBkYXRhLiAgSGVuY2Ugd2Ugc2F2ZSBkYXRhLnNpemUoKSBmaXJzdC4KLSAgRVhQRUNU
X0VRKGV4cGVjdGVkX2RhdGFfc2l6ZSwgYWN0dWFsX3NpemUpOwotCi0gIC8vIENvbXBhcmVzIHRo
ZSBjb21tb24gcHJlZml4LgotICBjb25zdCBpbnQgc2hvcnRlcl9zaXplID0gZXhwZWN0ZWRfZGF0
YV9zaXplIDw9IGFjdHVhbF9zaXplID8KLSAgICAgIGV4cGVjdGVkX2RhdGFfc2l6ZSA6IGFjdHVh
bF9zaXplOwotICBpbnQgaSA9IDA7Ci0gIGZvciAoOyBpIDwgc2hvcnRlcl9zaXplOyArK2kpIHsK
LSAgICBBU1NFUlRfU1RSRVEoZXhwZWN0ZWRfZGF0YVtpXSwgZGF0YVtpXS5jX3N0cigpKQotICAg
ICAgICA8PCAiYXQgcG9zaXRpb24gIiA8PCBpOwotICB9Ci0KLSAgLy8gUHJpbnRzIGV4dHJhIGVs
ZW1lbnRzIGluIHRoZSBhY3R1YWwgZGF0YS4KLSAgZm9yICg7IGkgPCBhY3R1YWxfc2l6ZTsgKytp
KSB7Ci0gICAgcHJpbnRmKCIgIEFjdHVhbCBldmVudCAjJWQ6ICVzXG4iLCBpLCBkYXRhW2ldLmNf
c3RyKCkpOwotICB9Ci19Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotICBz
dGQ6OnZlY3RvcjxTdHJpbmc+IGV2ZW50czsKLSAgZ19ldmVudHMgPSAmZXZlbnRzOwotICBJbml0
R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxp
c3RlbmVycygpLkFwcGVuZCgKLSAgICAgIG5ldyBFdmVudFJlY29yZGluZ0xpc3RlbmVyKCIxc3Qi
KSk7Ci0gIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKS5BcHBlbmQoCi0gICAg
ICBuZXcgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lcigiMm5kIikpOwotCi0gIEFkZEdsb2JhbFRlc3RF
bnZpcm9ubWVudChuZXcgRW52aXJvbm1lbnRJbnZvY2F0aW9uQ2F0Y2hlcik7Ci0KLSAgR1RFU1Rf
Q0hFQ0tfKGV2ZW50cy5zaXplKCkgPT0gMCkKLSAgICAgIDw8ICJBZGRHbG9iYWxUZXN0RW52aXJv
bm1lbnQgc2hvdWxkIG5vdCBnZW5lcmF0ZSBhbnkgZXZlbnRzIGl0c2VsZi4iOwotCi0gIDo6dGVz
dGluZzo6R1RFU1RfRkxBRyhyZXBlYXQpID0gMjsKLSAgaW50IHJldF92YWwgPSBSVU5fQUxMX1RF
U1RTKCk7Ci0KLSAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRfZXZlbnRzW10gPSB7Ci0gICAg
IjFzdC5PblRlc3RQcm9ncmFtU3RhcnQiLAotICAgICIybmQuT25UZXN0UHJvZ3JhbVN0YXJ0IiwK
LSAgICAiMXN0Lk9uVGVzdEl0ZXJhdGlvblN0YXJ0KDApIiwKLSAgICAiMm5kLk9uVGVzdEl0ZXJh
dGlvblN0YXJ0KDApIiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIsCi0gICAg
IjJuZC5PbkVudmlyb25tZW50c1NldFVwU3RhcnQiLAotICAgICJFbnZpcm9ubWVudDo6U2V0VXAi
LAotICAgICIybmQuT25FbnZpcm9ubWVudHNTZXRVcEVuZCIsCi0gICAgIjFzdC5PbkVudmlyb25t
ZW50c1NldFVwRW5kIiwKLSAgICAiMXN0Lk9uVGVzdENhc2VTdGFydCIsCi0gICAgIjJuZC5PblRl
c3RDYXNlU3RhcnQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwVGVzdENhc2UiLAotICAgICIx
c3QuT25UZXN0U3RhcnQiLAotICAgICIybmQuT25UZXN0U3RhcnQiLAotICAgICJMaXN0ZW5lclRl
c3Q6OlNldFVwIiwKLSAgICAiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCi0gICAgIjFzdC5P
blRlc3RQYXJ0UmVzdWx0IiwKLSAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAotICAgICJMaXN0
ZW5lclRlc3Q6OlRlYXJEb3duIiwKLSAgICAiMm5kLk9uVGVzdEVuZCIsCi0gICAgIjFzdC5PblRl
c3RFbmQiLAotICAgICIxc3QuT25UZXN0U3RhcnQiLAotICAgICIybmQuT25UZXN0U3RhcnQiLAot
ICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwKLSAgICAiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9k
eSIsCi0gICAgIjFzdC5PblRlc3RQYXJ0UmVzdWx0IiwKLSAgICAiMm5kLk9uVGVzdFBhcnRSZXN1
bHQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duIiwKLSAgICAiMm5kLk9uVGVzdEVuZCIs
Ci0gICAgIjFzdC5PblRlc3RFbmQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duVGVzdENh
c2UiLAotICAgICIybmQuT25UZXN0Q2FzZUVuZCIsCi0gICAgIjFzdC5PblRlc3RDYXNlRW5kIiwK
LSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydCIsCi0gICAgIjJuZC5PbkVudmly
b25tZW50c1RlYXJEb3duU3RhcnQiLAotICAgICJFbnZpcm9ubWVudDo6VGVhckRvd24iLAotICAg
ICIybmQuT25FbnZpcm9ubWVudHNUZWFyRG93bkVuZCIsCi0gICAgIjFzdC5PbkVudmlyb25tZW50
c1RlYXJEb3duRW5kIiwKLSAgICAiMm5kLk9uVGVzdEl0ZXJhdGlvbkVuZCgwKSIsCi0gICAgIjFz
dC5PblRlc3RJdGVyYXRpb25FbmQoMCkiLAotICAgICIxc3QuT25UZXN0SXRlcmF0aW9uU3RhcnQo
MSkiLAotICAgICIybmQuT25UZXN0SXRlcmF0aW9uU3RhcnQoMSkiLAotICAgICIxc3QuT25FbnZp
cm9ubWVudHNTZXRVcFN0YXJ0IiwKLSAgICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIs
Ci0gICAgIkVudmlyb25tZW50OjpTZXRVcCIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50c1NldFVw
RW5kIiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiLAotICAgICIxc3QuT25UZXN0
Q2FzZVN0YXJ0IiwKLSAgICAiMm5kLk9uVGVzdENhc2VTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVz
dDo6U2V0VXBUZXN0Q2FzZSIsCi0gICAgIjFzdC5PblRlc3RTdGFydCIsCi0gICAgIjJuZC5PblRl
c3RTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6U2V0VXAiLAotICAgICJMaXN0ZW5lclRlc3Q6
OiogVGVzdCBCb2R5IiwKLSAgICAiMXN0Lk9uVGVzdFBhcnRSZXN1bHQiLAotICAgICIybmQuT25U
ZXN0UGFydFJlc3VsdCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6VGVhckRvd24iLAotICAgICIybmQu
T25UZXN0RW5kIiwKLSAgICAiMXN0Lk9uVGVzdEVuZCIsCi0gICAgIjFzdC5PblRlc3RTdGFydCIs
Ci0gICAgIjJuZC5PblRlc3RTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6U2V0VXAiLAotICAg
ICJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5IiwKLSAgICAiMXN0Lk9uVGVzdFBhcnRSZXN1bHQi
LAotICAgICIybmQuT25UZXN0UGFydFJlc3VsdCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6VGVhckRv
d24iLAotICAgICIybmQuT25UZXN0RW5kIiwKLSAgICAiMXN0Lk9uVGVzdEVuZCIsCi0gICAgIkxp
c3RlbmVyVGVzdDo6VGVhckRvd25UZXN0Q2FzZSIsCi0gICAgIjJuZC5PblRlc3RDYXNlRW5kIiwK
LSAgICAiMXN0Lk9uVGVzdENhc2VFbmQiLAotICAgICIxc3QuT25FbnZpcm9ubWVudHNUZWFyRG93
blN0YXJ0IiwKLSAgICAiMm5kLk9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydCIsCi0gICAgIkVu
dmlyb25tZW50OjpUZWFyRG93biIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5k
IiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiLAotICAgICIybmQuT25UZXN0
SXRlcmF0aW9uRW5kKDEpIiwKLSAgICAiMXN0Lk9uVGVzdEl0ZXJhdGlvbkVuZCgxKSIsCi0gICAg
IjJuZC5PblRlc3RQcm9ncmFtRW5kIiwKLSAgICAiMXN0Lk9uVGVzdFByb2dyYW1FbmQiCi0gIH07
Ci0gIFZlcmlmeVJlc3VsdHMoZXZlbnRzLAotICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V2ZW50
cywKLSAgICAgICAgICAgICAgICBzaXplb2YoZXhwZWN0ZWRfZXZlbnRzKS9zaXplb2YoZXhwZWN0
ZWRfZXZlbnRzWzBdKSk7Ci0KLSAgLy8gV2UgbmVlZCB0byBjaGVjayBtYW51YWxseSBmb3IgYWQg
aG9jIHRlc3QgZmFpbHVyZXMgdGhhdCBoYXBwZW4gYWZ0ZXIKLSAgLy8gUlVOX0FMTF9URVNUUyBm
aW5pc2hlcy4KLSAgaWYgKFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5GYWlsZWQoKSkKLSAgICBy
ZXRfdmFsID0gMTsKLQotICByZXR1cm4gcmV0X3ZhbDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1tZXNzYWdlX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGU0MmIwMzQ0Nzg3MmUzZThmMDdhOWE0YWRkMmJlNWRkNDY5ODBiNTUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1tZXNzYWdlX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAt
MSwxNjcgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0
OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8v
Ci0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBU
ZXN0cyBmb3IgdGhlIE1lc3NhZ2UgY2xhc3MuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1tZXNz
YWdlLmg+Ci0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1uYW1lc3BhY2UgewotCi11c2lu
ZyA6OnRlc3Rpbmc6Ok1lc3NhZ2U7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJTdHJl
YW07Ci0KLS8vIEEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgdHVybnMgYSBNZXNzYWdlIGludG8gYSBD
IHN0cmluZy4KLWNvbnN0IGNoYXIqIFRvQ1N0cmluZyhjb25zdCBNZXNzYWdlJiBtc2cpIHsKLSAg
c3RhdGljIHRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmcgcmVzdWx0OwotICByZXN1bHQgPSBtc2cu
R2V0U3RyaW5nKCk7Ci0gIHJldHVybiByZXN1bHQuY19zdHIoKTsKLX0KLQotLy8gVGVzdHMgdGhl
IHRlc3Rpbmc6Ok1lc3NhZ2UgY2xhc3MKLQotLy8gVGVzdHMgdGhlIGRlZmF1bHQgY29uc3RydWN0
b3IuCi1URVNUKE1lc3NhZ2VUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3IpIHsKLSAgY29uc3QgTWVz
c2FnZSBtc2c7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgVG9DU3RyaW5nKG1zZykpOwotfQotCi0vLyBU
ZXN0cyB0aGUgY29weSBjb25zdHJ1Y3Rvci4KLVRFU1QoTWVzc2FnZVRlc3QsIENvcHlDb25zdHJ1
Y3RvcikgewotICBjb25zdCBNZXNzYWdlIG1zZzEoIkhlbGxvIik7Ci0gIGNvbnN0IE1lc3NhZ2Ug
bXNnMihtc2cxKTsKLSAgRVhQRUNUX1NUUkVRKCJIZWxsbyIsIFRvQ1N0cmluZyhtc2cyKSk7Ci19
Ci0KLS8vIFRlc3RzIGNvbnN0cnVjdGluZyBhIE1lc3NhZ2UgZnJvbSBhIEMtc3RyaW5nLgotVEVT
VChNZXNzYWdlVGVzdCwgQ29uc3RydWN0c0Zyb21DU3RyaW5nKSB7Ci0gIE1lc3NhZ2UgbXNnKCJI
ZWxsbyIpOwotICBFWFBFQ1RfU1RSRVEoIkhlbGxvIiwgVG9DU3RyaW5nKG1zZykpOwotfQotCi0v
LyBUZXN0cyBzdHJlYW1pbmcgYSBmbG9hdC4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNGbG9h
dCkgewotICBjb25zdCBjaGFyKiBjb25zdCBzID0gVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCAxLjIz
NDU2RiA8PCAiICIgPDwgMi4zNDU2N0YpOwotICAvLyBCb3RoIG51bWJlcnMgc2hvdWxkIGJlIHBy
aW50ZWQgd2l0aCBlbm91Z2ggcHJlY2lzaW9uLgotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rp
bmc6OklzU3Vic3RyaW5nLCAiMS4yMzQ1NjAiLCBzKTsKLSAgRVhQRUNUX1BSRURfRk9STUFUMih0
ZXN0aW5nOjpJc1N1YnN0cmluZywgIiAyLjM0NTY2OSIsIHMpOwotfQotCi0vLyBUZXN0cyBzdHJl
YW1pbmcgYSBkb3VibGUuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zRG91YmxlKSB7Ci0gIGNv
bnN0IGNoYXIqIGNvbnN0IHMgPSBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8IDEyNjA1NzA4ODAuNDU1
NTQ5NyA8PCAiICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAxMjYwNTcy
MjY1LjE5NTQ1MzQpOwotICAvLyBCb3RoIG51bWJlcnMgc2hvdWxkIGJlIHByaW50ZWQgd2l0aCBl
bm91Z2ggcHJlY2lzaW9uLgotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6OklzU3Vic3Ry
aW5nLCAiMTI2MDU3MDg4MC40NSIsIHMpOwotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6
OklzU3Vic3RyaW5nLCAiIDEyNjA1NzIyNjUuMTkiLCBzKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFt
aW5nIGEgbm9uLWNoYXIgcG9pbnRlci4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNQb2ludGVy
KSB7Ci0gIGludCBuID0gMDsKLSAgaW50KiBwID0gJm47Ci0gIEVYUEVDVF9TVFJORSgiKG51bGwp
IiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCBwKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBh
IE5VTEwgbm9uLWNoYXIgcG9pbnRlci4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNOdWxsUG9p
bnRlcikgewotICBpbnQqIHAgPSBOVUxMOwotICBFWFBFQ1RfU1RSRVEoIihudWxsKSIsIFRvQ1N0
cmluZyhNZXNzYWdlKCkgPDwgcCkpOwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcgYSBDIHN0cmlu
Zy4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNDU3RyaW5nKSB7Ci0gIEVYUEVDVF9TVFJFUSgi
Rm9vIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCAiRm9vIikpOwotfQotCi0vLyBUZXN0cyBzdHJl
YW1pbmcgYSBOVUxMIEMgc3RyaW5nLgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc051bGxDU3Ry
aW5nKSB7Ci0gIGNoYXIqIHAgPSBOVUxMOwotICBFWFBFQ1RfU1RSRVEoIihudWxsKSIsIFRvQ1N0
cmluZyhNZXNzYWdlKCkgPDwgcCkpOwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcgc3RkOjpzdHJp
bmcuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zU3RyaW5nKSB7Ci0gIGNvbnN0IDo6c3RkOjpz
dHJpbmcgc3RyKCJIZWxsbyIpOwotICBFWFBFQ1RfU1RSRVEoIkhlbGxvIiwgVG9DU3RyaW5nKE1l
c3NhZ2UoKSA8PCBzdHIpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB3ZSBjYW4gb3V0cHV0IHN0cmlu
Z3MgY29udGFpbmluZyBlbWJlZGRlZCBOVUxzLgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc1N0
cmluZ1dpdGhFbWJlZGRlZE5VTCkgewotICBjb25zdCBjaGFyIGNoYXJfYXJyYXlfd2l0aF9udWxb
XSA9Ci0gICAgICAiSGVyZSdzIGEgTlVMXDAgYW5kIHNvbWUgbW9yZSBzdHJpbmciOwotICBjb25z
dCA6OnN0ZDo6c3RyaW5nIHN0cmluZ193aXRoX251bChjaGFyX2FycmF5X3dpdGhfbnVsLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoY2hhcl9hcnJheV93aXRo
X251bCkgLSAxKTsKLSAgRVhQRUNUX1NUUkVRKCJIZXJlJ3MgYSBOVUxcXDAgYW5kIHNvbWUgbW9y
ZSBzdHJpbmciLAotICAgICAgICAgICAgICAgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCBzdHJpbmdf
d2l0aF9udWwpKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFtaW5nIGEgTlVMIGNoYXIuCi1URVNUKE1l
c3NhZ2VUZXN0LCBTdHJlYW1zTlVMQ2hhcikgewotICBFWFBFQ1RfU1RSRVEoIlxcMCIsIFRvQ1N0
cmluZyhNZXNzYWdlKCkgPDwgJ1wwJykpOwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcgaW50Lgot
VEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc0ludCkgewotICBFWFBFQ1RfU1RSRVEoIjEyMyIsIFRv
Q1N0cmluZyhNZXNzYWdlKCkgPDwgMTIzKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYmFzaWMgSU8g
bWFuaXB1bGF0b3JzIChlbmRsLCBlbmRzLCBhbmQgZmx1c2gpIGNhbiBiZQotLy8gc3RyZWFtZWQg
dG8gTWVzc2FnZS4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNCYXNpY0lvTWFuaXApIHsKLSAg
RVhQRUNUX1NUUkVRKCJMaW5lIDEuXG5BIE5VTCBjaGFyIFxcMCBpbiBsaW5lIDIuIiwKLSAgICAg
ICAgICAgICAgIFRvQ1N0cmluZyhNZXNzYWdlKCkgPDwgIkxpbmUgMS4iIDw8IHN0ZDo6ZW5kbAot
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJBIE5VTCBjaGFyICIgPDwgc3RkOjplbmRzIDw8
IHN0ZDo6Zmx1c2gKLSAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGluIGxpbmUgMi4iKSk7
Ci19Ci0KLS8vIFRlc3RzIE1lc3NhZ2U6OkdldFN0cmluZygpCi1URVNUKE1lc3NhZ2VUZXN0LCBH
ZXRTdHJpbmcpIHsKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCAxIDw8ICIgbGFtYiI7Ci0gIEVY
UEVDVF9TVFJFUSgiMSBsYW1iIiwgbXNnLkdldFN0cmluZygpLmNfc3RyKCkpOwotfQotCi0vLyBU
ZXN0cyBzdHJlYW1pbmcgYSBNZXNzYWdlIG9iamVjdCB0byBhbiBvc3RyZWFtLgotVEVTVChNZXNz
YWdlVGVzdCwgU3RyZWFtc1RvT1N0cmVhbSkgewotICBNZXNzYWdlIG1zZygiSGVsbG8iKTsKLSAg
U3RyU3RyZWFtIHNzOwotICBzcyA8PCBtc2c7Ci0gIEVYUEVDVF9TVFJFUSgiSGVsbG8iLCB0ZXN0
aW5nOjppbnRlcm5hbDo6U3RyU3RyZWFtVG9TdHJpbmcoJnNzKS5jX3N0cigpKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBhIE1lc3NhZ2Ugb2JqZWN0IGRvZXNuJ3QgdGFrZSB1cCB0b28gbXVjaCBzdGFj
ayBzcGFjZS4KLVRFU1QoTWVzc2FnZVRlc3QsIERvZXNOb3RUYWtlVXBNdWNoU3RhY2tTcGFjZSkg
ewotICBFWFBFQ1RfTEUoc2l6ZW9mKE1lc3NhZ2UpLCAxNlUpOwotfQotCi19ICAvLyBuYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Qtb3B0aW9u
c190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1vcHRpb25zX3Rl
c3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlMmNiYzkyZTVlMDI4Yzc0Yzgy
ZjA3NTBmZGQ4YmRmYjRlODgzMWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1vcHRpb25zX3Rl
c3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyMTIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgs
IEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0v
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcnM6IGtlaXRoLnJheUBnbWFp
bC5jb20gKEtlaXRoIFJheSkKLS8vCi0vLyBHb29nbGUgVGVzdCBVbml0VGVzdE9wdGlvbnMgdGVz
dHMKLS8vCi0vLyBUaGlzIGZpbGUgdGVzdHMgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIHVzZWQgaW50
ZXJuYWxseSBieQotLy8gR29vZ2xlIFRlc3QuICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3
aXRob3V0IG5vdGljZS4KLS8vCi0vLyBUaGlzIGZpbGUgaXMgI2luY2x1ZGVkIGZyb20gZ3Rlc3Qu
Y2MsIHRvIGF2b2lkIGNoYW5naW5nIGJ1aWxkIG9yCi0vLyBtYWtlLWZpbGVzIG9uIFdpbmRvd3Mg
YW5kIG90aGVyIHBsYXRmb3Jtcy4gRG8gbm90ICNpbmNsdWRlIHRoaXMgZmlsZQotLy8gYW55d2hl
cmUgZWxzZSEKLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLSNpZiBHVEVTVF9PU19XSU5E
T1dTX01PQklMRQotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbGlmIEdURVNUX09TX1dJTkRPV1MK
LSNpbmNsdWRlIDxkaXJlY3QuaD4KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
LQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29v
Z2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0
LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBp
bGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2Np
ZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4K
LSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50
ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLW5hbWVzcGFjZSB0
ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci1uYW1lc3BhY2UgewotCi0vLyBUdXJucyB0
aGUgZ2l2ZW4gcmVsYXRpdmUgcGF0aCBpbnRvIGFuIGFic29sdXRlIHBhdGguCi1GaWxlUGF0aCBH
ZXRBYnNvbHV0ZVBhdGhPZihjb25zdCBGaWxlUGF0aCYgcmVsYXRpdmVfcGF0aCkgewotICByZXR1
cm4gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCksIHJlbGF0
aXZlX3BhdGgpOwotfQotCi0vLyBUZXN0aW5nIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9y
bWF0L0dldE91dHB1dEZpbGUuCi0KLVRFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0Rm9ybWF0
RGVmYXVsdCkgewotICBHVEVTVF9GTEFHKG91dHB1dCkgPSAiIjsKLSAgRVhQRUNUX1NUUkVRKCIi
LCBVbml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdCgpLmNfc3RyKCkpOwotfQotCi1URVNU
KFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZvcm1hdCkgewotICBHVEVTVF9GTEFHKG91dHB1dCkg
PSAieG1sOmZpbGVuYW1lIjsKLSAgRVhQRUNUX1NUUkVRKCJ4bWwiLCBVbml0VGVzdE9wdGlvbnM6
OkdldE91dHB1dEZvcm1hdCgpLmNfc3RyKCkpOwotfQotCi1URVNUKFhtbE91dHB1dFRlc3QsIEdl
dE91dHB1dEZpbGVEZWZhdWx0KSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICIiOwotICBFWFBF
Q1RfU1RSRVEoR2V0QWJzb2x1dGVQYXRoT2YoRmlsZVBhdGgoInRlc3RfZGV0YWlsLnhtbCIpKS5j
X3N0cigpLAotICAgICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhU
b091dHB1dEZpbGUoKS5jX3N0cigpKTsKLX0KLQotVEVTVChYbWxPdXRwdXRUZXN0LCBHZXRPdXRw
dXRGaWxlU2luZ2xlRmlsZSkgewotICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOmZpbGVuYW1l
LmFiYyI7Ci0gIEVYUEVDVF9TVFJFUShHZXRBYnNvbHV0ZVBhdGhPZihGaWxlUGF0aCgiZmlsZW5h
bWUuYWJjIikpLmNfc3RyKCksCi0gICAgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFi
c29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOwotfQotCi1URVNUKFhtbE91dHB1dFRl
c3QsIEdldE91dHB1dEZpbGVGcm9tRGlyZWN0b3J5UGF0aCkgewotICBHVEVTVF9GTEFHKG91dHB1
dCkgPSAieG1sOnBhdGgiIEdURVNUX1BBVEhfU0VQXzsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZXhw
ZWN0ZWRfb3V0cHV0X2ZpbGUgPQotICAgICAgR2V0QWJzb2x1dGVQYXRoT2YoCi0gICAgICAgICAg
RmlsZVBhdGgoc3RkOjpzdHJpbmcoInBhdGgiKSArIEdURVNUX1BBVEhfU0VQXyArCi0gICAgICAg
ICAgICAgICAgICAgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuY19zdHIoKSArICIueG1sIikp
LmNfc3RyKCk7Ci0gIGNvbnN0IFN0cmluZyYgb3V0cHV0X2ZpbGUgPSBVbml0VGVzdE9wdGlvbnM6
OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpOwotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAg
RVhQRUNUX1NUUkNBU0VFUShleHBlY3RlZF9vdXRwdXRfZmlsZS5jX3N0cigpLCBvdXRwdXRfZmls
ZS5jX3N0cigpKTsKLSNlbHNlCi0gIEVYUEVDVF9FUShleHBlY3RlZF9vdXRwdXRfZmlsZSwgb3V0
cHV0X2ZpbGUuY19zdHIoKSk7Ci0jZW5kaWYKLX0KLQotVEVTVChPdXRwdXRGaWxlSGVscGVyc1Rl
c3QsIEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSkgewotICBjb25zdCBzdGQ6OnN0cmluZyBleGVf
c3RyID0gR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuY19zdHIoKTsKLSNpZiBHVEVTVF9PU19X
SU5ET1dTCi0gIGNvbnN0IGJvb2wgc3VjY2VzcyA9Ci0gICAgICBfc3RyY21waSgiZ3Rlc3Qtb3B0
aW9uc190ZXN0IiwgZXhlX3N0ci5jX3N0cigpKSA9PSAwIHx8Ci0gICAgICBfc3RyY21waSgiZ3Rl
c3Qtb3B0aW9ucy1leF90ZXN0IiwgZXhlX3N0ci5jX3N0cigpKSA9PSAwIHx8Ci0gICAgICBfc3Ry
Y21waSgiZ3Rlc3RfYWxsX3Rlc3QiLCBleGVfc3RyLmNfc3RyKCkpID09IDAgfHwKLSAgICAgIF9z
dHJjbXBpKCJndGVzdF9kbGxfdGVzdCIsIGV4ZV9zdHIuY19zdHIoKSkgPT0gMDsKLSNlbHNlCi0g
IC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiByZW1vdmUgdGhlIGhhcmQtY29kZWQgImx0LSIgcHJl
Zml4IHdoZW4KLSAgLy8gICBDaGFuZGxlciBDYXJydXRoJ3MgbGlidG9vbCByZXBsYWNlbWVudCBp
cyByZWFkeS4KLSAgY29uc3QgYm9vbCBzdWNjZXNzID0KLSAgICAgIGV4ZV9zdHIgPT0gImd0ZXN0
LW9wdGlvbnNfdGVzdCIgfHwKLSAgICAgIGV4ZV9zdHIgPT0gImd0ZXN0X2FsbF90ZXN0IiB8fAot
ICAgICAgZXhlX3N0ciA9PSAibHQtZ3Rlc3RfYWxsX3Rlc3QiIHx8Ci0gICAgICBleGVfc3RyID09
ICJndGVzdF9kbGxfdGVzdCI7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLSAgaWYgKCFz
dWNjZXNzKQotICAgIEZBSUwoKSA8PCAiR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkgcmV0dXJu
cyAiIDw8IGV4ZV9zdHI7Ci19Ci0KLWNsYXNzIFhtbE91dHB1dENoYW5nZURpclRlc3QgOiBwdWJs
aWMgVGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgb3Jp
Z2luYWxfd29ya2luZ19kaXJfID0gRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKTsKLSAgICBwb3Np
eDo6Q2hEaXIoIi4uIik7Ci0gICAgLy8gVGhpcyB3aWxsIG1ha2UgdGhlIHRlc3QgZmFpbCBpZiBy
dW4gZnJvbSB0aGUgcm9vdCBkaXJlY3RvcnkuCi0gICAgRVhQRUNUX1NUUk5FKG9yaWdpbmFsX3dv
cmtpbmdfZGlyXy5jX3N0cigpLAotICAgICAgICAgICAgICAgICBGaWxlUGF0aDo6R2V0Q3VycmVu
dERpcigpLmNfc3RyKCkpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAg
IHBvc2l4OjpDaERpcihvcmlnaW5hbF93b3JraW5nX2Rpcl8uY19zdHIoKSk7Ci0gIH0KLQotICBG
aWxlUGF0aCBvcmlnaW5hbF93b3JraW5nX2Rpcl87Ci19OwotCi1URVNUX0YoWG1sT3V0cHV0Q2hh
bmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoRGVmYXVsdCkgewotICBH
VEVTVF9GTEFHKG91dHB1dCkgPSAiIjsKLSAgRVhQRUNUX1NUUkVRKEZpbGVQYXRoOjpDb25jYXRQ
YXRocyhvcmlnaW5hbF93b3JraW5nX2Rpcl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRmlsZVBhdGgoInRlc3RfZGV0YWlsLnhtbCIpKS5jX3N0cigpLAotICAgICAgICAg
ICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0
cigpKTsKLX0KLQotVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2lu
YWxXb3JraW5nRGlyV2l0aERlZmF1bHRYTUwpIHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInht
bCI7Ci0gIEVYUEVDVF9TVFJFUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2lu
Z19kaXJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJ0
ZXN0X2RldGFpbC54bWwiKSkuY19zdHIoKSwKLSAgICAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9u
czo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSk7Ci19Ci0KLVRFU1RfRihY
bWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhSZWxh
dGl2ZUZpbGUpIHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbDpmaWxlbmFtZS5hYmMiOwot
ICBFWFBFQ1RfU1RSRVEoRmlsZVBhdGg6OkNvbmNhdFBhdGhzKG9yaWdpbmFsX3dvcmtpbmdfZGly
XywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiZmlsZW5h
bWUuYWJjIikpLmNfc3RyKCksCi0gICAgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFi
c29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOwotfQotCi1URVNUX0YoWG1sT3V0cHV0
Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoUmVsYXRpdmVQYXRo
KSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6cGF0aCIgR1RFU1RfUEFUSF9TRVBfOwot
ICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3RlZF9vdXRwdXRfZmlsZSA9Ci0gICAgICBGaWxlUGF0
aDo6Q29uY2F0UGF0aHMoCi0gICAgICAgICAgb3JpZ2luYWxfd29ya2luZ19kaXJfLAotICAgICAg
ICAgIEZpbGVQYXRoKHN0ZDo6c3RyaW5nKCJwYXRoIikgKyBHVEVTVF9QQVRIX1NFUF8gKwotICAg
ICAgICAgICAgICAgICAgIEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLmNfc3RyKCkgKyAiLnht
bCIpKS5jX3N0cigpOwotICBjb25zdCBTdHJpbmcmIG91dHB1dF9maWxlID0gVW5pdFRlc3RPcHRp
b25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKTsKLSNpZiBHVEVTVF9PU19XSU5ET1dT
Ci0gIEVYUEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUuY19zdHIoKSwgb3V0cHV0
X2ZpbGUuY19zdHIoKSk7Ci0jZWxzZQotICBFWFBFQ1RfRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUs
IG91dHB1dF9maWxlLmNfc3RyKCkpOwotI2VuZGlmCi19Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFu
Z2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhBYnNvbHV0ZUZpbGUpIHsK
LSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6YzpcXHRt
cFxcZmlsZW5hbWUuYWJjIjsKLSAgRVhQRUNUX1NUUkVRKEZpbGVQYXRoKCJjOlxcdG1wXFxmaWxl
bmFtZS5hYmMiKS5jX3N0cigpLAotICAgICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRB
YnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0cigpKTsKLSNlbHNlCi0gIEdURVNUX0ZMQUco
b3V0cHV0KSA9InhtbDovdG1wL2ZpbGVuYW1lLmFiYyI7Ci0gIEVYUEVDVF9TVFJFUShGaWxlUGF0
aCgiL3RtcC9maWxlbmFtZS5hYmMiKS5jX3N0cigpLAotICAgICAgICAgICAgICAgVW5pdFRlc3RP
cHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0cigpKTsKLSNlbmRpZgot
fQotCi1URVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtp
bmdEaXJXaXRoQWJzb2x1dGVQYXRoKSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICBjb25zdCBz
dGQ6OnN0cmluZyBwYXRoID0gImM6XFx0bXBcXCI7Ci0jZWxzZQotICBjb25zdCBzdGQ6OnN0cmlu
ZyBwYXRoID0gIi90bXAvIjsKLSNlbmRpZgotCi0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6
IiArIHBhdGg7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdGVkX291dHB1dF9maWxlID0KLSAg
ICAgIHBhdGggKyBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5jX3N0cigpICsgIi54bWwiOwot
ICBjb25zdCBTdHJpbmcmIG91dHB1dF9maWxlID0gVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0
ZVBhdGhUb091dHB1dEZpbGUoKTsKLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgRVhQRUNUX1NU
UkNBU0VFUShleHBlY3RlZF9vdXRwdXRfZmlsZS5jX3N0cigpLCBvdXRwdXRfZmlsZS5jX3N0cigp
KTsKLSNlbHNlCi0gIEVYUEVDVF9FUShleHBlY3RlZF9vdXRwdXRfZmlsZSwgb3V0cHV0X2ZpbGUu
Y19zdHIoKSk7Ci0jZW5kaWYKLX0KLQotfSAgLy8gbmFtZXNwYWNlCi19ICAvLyBuYW1lc3BhY2Ug
aW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3QyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3QyX3Rlc3QuY2MKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGNjYjZjZmFjOWU3NmI4MjdmMTdhZTExODI5ZTIzNmQ2Zjk3ZWU2
NDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjCisrKyAvZGV2
L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0v
LyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0v
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikK
LS8vCi0vLyBUZXN0cyBmb3IgR29vZ2xlIFRlc3QgaXRzZWxmLiAgVGhpcyB2ZXJpZmllcyB0aGF0
IHRoZSBiYXNpYyBjb25zdHJ1Y3RzIG9mCi0vLyBHb29nbGUgVGVzdCB3b3JrLgotCi0jaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0
LmgiCi0KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi11c2luZyA6OnRlc3Rpbmc6OlZhbHVl
czsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yOwotCi0vLyBUZXN0
cyB0aGF0IGdlbmVyYXRvcnMgZGVmaW5lZCBpbiBhIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0
Ci0vLyBhcmUgZnVuY3Rpb25hbC4gVGhlIHRlc3QgdXNpbmcgZXh0ZXJuX2dlbiBpcyBkZWZpbmVk
Ci0vLyBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MuCi1QYXJhbUdlbmVyYXRvcjxpbnQ+IGV4
dGVybl9nZW4gPSBWYWx1ZXMoMzMpOwotCi0vLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0
ZXN0IGNhc2UgY2FuIGJlIGRlZmluZWQgaW4gb25lIHRyYW5zbGF0aW9uIHVuaXQKLS8vIGFuZCBp
bnN0YW50aWF0ZWQgaW4gYW5vdGhlci4gVGhlIHRlc3QgaXMgZGVmaW5lZCBpbiBndGVzdC1wYXJh
bS10ZXN0X3Rlc3QuY2MKLS8vIGFuZCBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0IGZpeHR1cmUg
Y2xhc3MgaXMgZGVmaW5lZCBpbgotLy8gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmguCi1JTlNUQU5U
SUFURV9URVNUX0NBU0VfUChNdWx0aXBsZXNPZjMzLAotICAgICAgICAgICAgICAgICAgICAgICAg
RXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVl
cygzMywgNjYpKTsKLQotLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNh
biBiZSBpbnN0YW50aWF0ZWQKLS8vIGluIG11bHRpcGxlIHRyYW5zbGF0aW9uIHVuaXRzLiBBbm90
aGVyIGluc3RhbnRpYXRpb24gaXMgZGVmaW5lZAotLy8gaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0
LmNjIGFuZCBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QKLS8vIGZp
eHR1cmUgaXMgZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaAotSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoU2VxdWVuY2UyLAotICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlh
dGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsdWVzKDQyKjMsIDQyKjQsIDQyKjUpKTsKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFS
QU1fVEVTVApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1w
YXJhbS10ZXN0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBh
cmFtLXRlc3RfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDBhMGU3MzVj
MGI5ODhlZjFhMjJiN2Q3YWU2OTAyNzAxOGJkYjhjYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
LXBhcmFtLXRlc3RfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDgzNSArMCwwIEBACi0vLyBD
b3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwot
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3Ry
aWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2
bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQotLy8KLS8vIFRlc3RzIGZvciBHb29nbGUgVGVz
dCBpdHNlbGYuIFRoaXMgZmlsZSB2ZXJpZmllcyB0aGF0IHRoZSBwYXJhbWV0ZXIKLS8vIGdlbmVy
YXRvcnMgb2JqZWN0cyBwcm9kdWNlIGNvcnJlY3QgcGFyYW1ldGVyIHNlcXVlbmNlcyBhbmQgdGhh
dAotLy8gR29vZ2xlIFRlc3QgcnVudGltZSBpbnN0YW50aWF0ZXMgY29ycmVjdCB0ZXN0cyBmcm9t
IHRob3NlIHNlcXVlbmNlcy4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLSNpZiBHVEVT
VF9IQVNfUEFSQU1fVEVTVAotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGlvc3Ry
ZWFtPgotI2luY2x1ZGUgPGxpc3Q+Ci0jaW5jbHVkZSA8c3N0cmVhbT4KLSNpbmNsdWRlIDxzdHJp
bmc+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0vLyBUbyBpbmNsdWRlIGd0ZXN0LWludGVybmFsLWlu
bC5oLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQotI2luY2x1ZGUgInNyYy9ndGVz
dC1pbnRlcm5hbC1pbmwuaCIgIC8vIGZvciBVbml0VGVzdE9wdGlvbnMKLSN1bmRlZiBHVEVTVF9J
TVBMRU1FTlRBVElPTl8KLQotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0Lmgi
Ci0KLXVzaW5nIDo6c3RkOjp2ZWN0b3I7Ci11c2luZyA6OnN0ZDo6c29ydDsKLQotdXNpbmcgOjp0
ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQ7Ci11c2luZyA6OnRlc3Rpbmc6OkJvb2w7
Ci11c2luZyA6OnRlc3Rpbmc6Ok1lc3NhZ2U7Ci11c2luZyA6OnRlc3Rpbmc6OlJhbmdlOwotdXNp
bmcgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtOwotdXNpbmcgOjp0ZXN0aW5nOjpWYWx1ZXM7Ci11
c2luZyA6OnRlc3Rpbmc6OlZhbHVlc0luOwotCi0jaWYgR1RFU1RfSEFTX0NPTUJJTkUKLXVzaW5n
IDo6dGVzdGluZzo6Q29tYmluZTsKLXVzaW5nIDo6c3RkOjp0cjE6OmdldDsKLXVzaW5nIDo6c3Rk
Ojp0cjE6Om1ha2VfdHVwbGU7Ci11c2luZyA6OnN0ZDo6dHIxOjp0dXBsZTsKLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX0NPTUJJTkUKLQotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1HZW5l
cmF0b3I7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml0VGVzdE9wdGlvbnM7Ci0KLS8v
IFByaW50cyBhIHZhbHVlIHRvIGEgc3RyaW5nLgotLy8KLS8vIFRPRE8od2FuQGdvb2dsZS5jb20p
OiByZW1vdmUgUHJpbnRWYWx1ZSgpIHdoZW4gd2UgbW92ZSBtYXRjaGVycyBhbmQKLS8vIEVYUEVD
VF9USEFUKCkgZnJvbSBHb29nbGUgTW9jayB0byBHb29nbGUgVGVzdC4gIEF0IHRoYXQgdGltZSwg
d2UKLS8vIGNhbiB3cml0ZSBFWFBFQ1RfVEhBVCh4LCBFcSh5KSkgdG8gY29tcGFyZSB0d28gdHVw
bGVzIHggYW5kIHksIGFzCi0vLyBFWFBFQ1RfVEhBVCgpIGFuZCB0aGUgbWF0Y2hlcnMga25vdyBo
b3cgdG8gcHJpbnQgdHVwbGVzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci06OnN0ZDo6c3RyaW5n
IFByaW50VmFsdWUoY29uc3QgVCYgdmFsdWUpIHsKLSAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJl
YW07Ci0gIHN0cmVhbSA8PCB2YWx1ZTsKLSAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKLX0KLQotI2lm
IEdURVNUX0hBU19DT01CSU5FCi0KLS8vIFRoZXNlIG92ZXJsb2FkcyBhbGxvdyBwcmludGluZyB0
dXBsZXMgaW4gb3VyIHRlc3RzLiAgV2UgY2Fubm90Ci0vLyBkZWZpbmUgYW4gb3BlcmF0b3I8PCBm
b3IgdHVwbGVzLCBhcyB0aGF0IGRlZmluaXRpb24gbmVlZHMgdG8gYmUgaW4KLS8vIHRoZSBzdGQg
bmFtZXNwYWNlIGluIG9yZGVyIHRvIGJlIHBpY2tlZCB1cCBieSBHb29nbGUgVGVzdCB2aWEKLS8v
IEFyZ3VtZW50LURlcGVuZGVudCBMb29rdXAsIHlldCBkZWZpbmluZyBhbnl0aGluZyBpbiB0aGUg
c3RkCi0vLyBuYW1lc3BhY2UgaW4gbm9uLVNUTCBjb2RlIGlzIHVuZGVmaW5lZCBiZWhhdmlvci4K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLTo6c3RkOjpzdHJpbmcgUHJp
bnRWYWx1ZShjb25zdCB0dXBsZTxUMSwgVDI+JiB2YWx1ZSkgewotICA6OnN0ZDo6c3RyaW5nc3Ry
ZWFtIHN0cmVhbTsKLSAgc3RyZWFtIDw8ICIoIiA8PCBnZXQ8MD4odmFsdWUpIDw8ICIsICIgPDwg
Z2V0PDE+KHZhbHVlKSA8PCAiKSI7Ci0gIHJldHVybiBzdHJlYW0uc3RyKCk7Ci19Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotOjpzdGQ6OnN0cmlu
ZyBQcmludFZhbHVlKGNvbnN0IHR1cGxlPFQxLCBUMiwgVDM+JiB2YWx1ZSkgewotICA6OnN0ZDo6
c3RyaW5nc3RyZWFtIHN0cmVhbTsKLSAgc3RyZWFtIDw8ICIoIiA8PCBnZXQ8MD4odmFsdWUpIDw8
ICIsICIgPDwgZ2V0PDE+KHZhbHVlKQotICAgICAgICAgPDwgIiwgIjw8IGdldDwyPih2YWx1ZSkg
PDwgIikiOwotICByZXR1cm4gc3RyZWFtLnN0cigpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAot
ICAgICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1l
IFQ5LCB0eXBlbmFtZSBUMTA+Ci06OnN0ZDo6c3RyaW5nIFByaW50VmFsdWUoCi0gICAgY29uc3Qg
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwPiYgdmFsdWUpIHsK
LSAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07Ci0gIHN0cmVhbSA8PCAiKCIgPDwgZ2V0PDA+
KHZhbHVlKSA8PCAiLCAiIDw8IGdldDwxPih2YWx1ZSkKLSAgICAgICAgIDw8ICIsICI8PCBnZXQ8
Mj4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDM+KHZhbHVlKQotICAgICAgICAgPDwgIiwgIjw8IGdl
dDw0Pih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8NT4odmFsdWUpCi0gICAgICAgICA8PCAiLCAiPDwg
Z2V0PDY+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDw3Pih2YWx1ZSkKLSAgICAgICAgIDw8ICIsICI8
PCBnZXQ8OD4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDk+KHZhbHVlKSA8PCAiKSI7Ci0gIHJldHVy
biBzdHJlYW0uc3RyKCk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKLQotLy8g
VmVyaWZpZXMgdGhhdCBhIHNlcXVlbmNlIGdlbmVyYXRlZCBieSB0aGUgZ2VuZXJhdG9yIGFuZCBh
Y2Nlc3NlZAotLy8gdmlhIHRoZSBpdGVyYXRvciBvYmplY3QgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQg
b25lIHVzaW5nIEdvb2dsZSBUZXN0Ci0vLyBhc3NlcnRpb25zLgotdGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHNpemVfdCBOPgotdm9pZCBWZXJpZnlHZW5lcmF0b3IoY29uc3QgUGFyYW1HZW5lcmF0b3I8
VD4mIGdlbmVyYXRvciwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQgKCZleHBlY3RlZF92
YWx1ZXMpW05dKSB7Ci0gIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ+OjppdGVyYXRvciBpdCA9
IGdlbmVyYXRvci5iZWdpbigpOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IE47ICsraSkgewot
ICAgIEFTU0VSVF9GQUxTRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpCi0gICAgICAgIDw8ICJBdCBl
bGVtZW50ICIgPDwgaSA8PCAiIHdoZW4gYWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRvciAiCi0gICAg
ICAgIDw8ICJjcmVhdGVkIHdpdGggdGhlIGNvcHkgY29uc3RydWN0b3IuXG4iOwotICAgIC8vIFdl
IGNhbm5vdCB1c2UgRVhQRUNUX0VRKCkgaGVyZSBhcyB0aGUgdmFsdWVzIG1heSBiZSB0dXBsZXMs
Ci0gICAgLy8gd2hpY2ggZG9uJ3Qgc3VwcG9ydCA8PC4KLSAgICBFWFBFQ1RfVFJVRShleHBlY3Rl
ZF92YWx1ZXNbaV0gPT0gKml0KQotICAgICAgICA8PCAid2hlcmUgaSBpcyAiIDw8IGkKLSAgICAg
ICAgPDwgIiwgZXhwZWN0ZWRfdmFsdWVzW2ldIGlzICIgPDwgUHJpbnRWYWx1ZShleHBlY3RlZF92
YWx1ZXNbaV0pCi0gICAgICAgIDw8ICIsICppdCBpcyAiIDw8IFByaW50VmFsdWUoKml0KQotICAg
ICAgICA8PCAiLCBhbmQgJ2l0JyBpcyBhbiBpdGVyYXRvciBjcmVhdGVkIHdpdGggdGhlIGNvcHkg
Y29uc3RydWN0b3IuXG4iOwotICAgIGl0Kys7Ci0gIH0KLSAgRVhQRUNUX1RSVUUoaXQgPT0gZ2Vu
ZXJhdG9yLmVuZCgpKQotICAgICAgICA8PCAiQXQgdGhlIHByZXN1bWVkIGVuZCBvZiBzZXF1ZW5j
ZSB3aGVuIGFjY2Vzc2luZyB2aWEgYW4gaXRlcmF0b3IgIgotICAgICAgICA8PCAiY3JlYXRlZCB3
aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9yLlxuIjsKLQotICAvLyBUZXN0IHRoZSBpdGVyYXRvciBh
c3NpZ25tZW50LiBUaGUgZm9sbG93aW5nIGxpbmVzIHZlcmlmeSB0aGF0Ci0gIC8vIHRoZSBzZXF1
ZW5jZSBhY2Nlc3NlZCB2aWEgYW4gaXRlcmF0b3IgaW5pdGlhbGl6ZWQgdmlhIHRoZQotICAvLyBh
c3NpZ25tZW50IG9wZXJhdG9yIChhcyBvcHBvc2VkIHRvIGEgY29weSBjb25zdHJ1Y3RvcikgbWF0
Y2hlcwotICAvLyBqdXN0IHRoZSBzYW1lLgotICBpdCA9IGdlbmVyYXRvci5iZWdpbigpOwotICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IE47ICsraSkgewotICAgIEFTU0VSVF9GQUxTRShpdCA9PSBn
ZW5lcmF0b3IuZW5kKCkpCi0gICAgICAgIDw8ICJBdCBlbGVtZW50ICIgPDwgaSA8PCAiIHdoZW4g
YWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRvciAiCi0gICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhl
IGFzc2lnbm1lbnQgb3BlcmF0b3IuXG4iOwotICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkX3ZhbHVl
c1tpXSA9PSAqaXQpCi0gICAgICAgIDw8ICJ3aGVyZSBpIGlzICIgPDwgaQotICAgICAgICA8PCAi
LCBleHBlY3RlZF92YWx1ZXNbaV0gaXMgIiA8PCBQcmludFZhbHVlKGV4cGVjdGVkX3ZhbHVlc1tp
XSkKLSAgICAgICAgPDwgIiwgKml0IGlzICIgPDwgUHJpbnRWYWx1ZSgqaXQpCi0gICAgICAgIDw8
ICIsIGFuZCAnaXQnIGlzIGFuIGl0ZXJhdG9yIGNyZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1
Y3Rvci5cbiI7Ci0gICAgaXQrKzsKLSAgfQotICBFWFBFQ1RfVFJVRShpdCA9PSBnZW5lcmF0b3Iu
ZW5kKCkpCi0gICAgICAgIDw8ICJBdCB0aGUgcHJlc3VtZWQgZW5kIG9mIHNlcXVlbmNlIHdoZW4g
YWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRvciAiCi0gICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhl
IGFzc2lnbm1lbnQgb3BlcmF0b3IuXG4iOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZv
aWQgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShjb25zdCBQYXJhbUdlbmVyYXRvcjxUPiYgZ2VuZXJh
dG9yKSB7Ci0gIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ+OjppdGVyYXRvciBpdCA9IGdlbmVy
YXRvci5iZWdpbigpOwotICBFWFBFQ1RfVFJVRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpOwotCi0g
IGl0ID0gZ2VuZXJhdG9yLmJlZ2luKCk7Ci0gIEVYUEVDVF9UUlVFKGl0ID09IGdlbmVyYXRvci5l
bmQoKSk7Ci19Ci0KLS8vIEdlbmVyYXRvciB0ZXN0cy4gVGhleSB0ZXN0IHRoYXQgZWFjaCBvZiB0
aGUgcHJvdmlkZWQgZ2VuZXJhdG9yIGZ1bmN0aW9ucwotLy8gZ2VuZXJhdGVzIGFuIGV4cGVjdGVk
IHNlcXVlbmNlIG9mIHZhbHVlcy4gVGhlIGdlbmVyYWwgdGVzdCBwYXR0ZXJuCi0vLyBpbnN0YW50
aWF0ZXMgYSBnZW5lcmF0b3IgdXNpbmcgb25lIG9mIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb25zLAot
Ly8gY2hlY2tzIHRoZSBzZXF1ZW5jZSBwcm9kdWNlZCBieSB0aGUgZ2VuZXJhdG9yIHVzaW5nIGl0
cyBpdGVyYXRvciBBUEksCi0vLyBhbmQgdGhlbiByZXNldHMgdGhlIGl0ZXJhdG9yIGJhY2sgdG8g
dGhlIGJlZ2lubmluZyBvZiB0aGUgc2VxdWVuY2UKLS8vIGFuZCBjaGVja3MgdGhlIHNlcXVlbmNl
IGFnYWluLgotCi0vLyBUZXN0cyB0aGF0IGl0ZXJhdG9ycyBwcm9kdWNlZCBieSBnZW5lcmF0b3Ig
ZnVuY3Rpb25zIGNvbmZvcm0gdG8gdGhlCi0vLyBGb3J3YXJkSXRlcmF0b3IgY29uY2VwdC4KLVRF
U1QoSXRlcmF0b3JUZXN0LCBQYXJhbUl0ZXJhdG9yQ29uZm9ybXNUb0ZvcndhcmRJdGVyYXRvckNv
bmNlcHQpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAxMCk7
Ci0gIFBhcmFtR2VuZXJhdG9yPGludD46Oml0ZXJhdG9yIGl0ID0gZ2VuLmJlZ2luKCk7Ci0KLSAg
Ly8gVmVyaWZpZXMgdGhhdCBpdGVyYXRvciBpbml0aWFsaXphdGlvbiB3b3JrcyBhcyBleHBlY3Rl
ZC4KLSAgUGFyYW1HZW5lcmF0b3I8aW50Pjo6aXRlcmF0b3IgaXQyID0gaXQ7Ci0gIEVYUEVDVF9U
UlVFKCppdCA9PSAqaXQyKSA8PCAiSW5pdGlhbGl6ZWQgaXRlcmF0b3JzIG11c3QgcG9pbnQgdG8g
dGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJlbGVtZW50IHNhbWUgYXMgaXRz
IHNvdXJjZSBwb2ludHMgdG8iOwotCi0gIC8vIFZlcmlmaWVzIHRoYXQgaXRlcmF0b3IgYXNzaWdu
bWVudCB3b3JrcyBhcyBleHBlY3RlZC4KLSAgaXQrKzsKLSAgRVhQRUNUX0ZBTFNFKCppdCA9PSAq
aXQyKTsKLSAgaXQyID0gaXQ7Ci0gIEVYUEVDVF9UUlVFKCppdCA9PSAqaXQyKSA8PCAiQXNzaWdu
ZWQgaXRlcmF0b3JzIG11c3QgcG9pbnQgdG8gdGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8ICJlbGVtZW50IHNhbWUgYXMgaXRzIHNvdXJjZSBwb2ludHMgdG8iOwotCi0gIC8vIFZl
cmlmaWVzIHRoYXQgcHJlZml4IG9wZXJhdG9yKysoKSByZXR1cm5zICp0aGlzLgotICBFWFBFQ1Rf
RVEoJml0LCAmKCsraXQpKSA8PCAiUmVzdWx0IG9mIHRoZSBwcmVmaXggb3BlcmF0b3IrKyBtdXN0
IGJlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgInJlZmVyIHRvIHRoZSBvcmlnaW5h
bCBvYmplY3QiOwotCi0gIC8vIFZlcmlmaWVzIHRoYXQgdGhlIHJlc3VsdCBvZiB0aGUgcG9zdGZp
eCBvcGVyYXRvcisrIHBvaW50cyB0byB0aGUgdmFsdWUKLSAgLy8gcG9pbnRlZCB0byBieSB0aGUg
b3JpZ2luYWwgaXRlcmF0b3IuCi0gIGludCBvcmlnaW5hbF92YWx1ZSA9ICppdDsgIC8vIEhhdmUg
dG8gY29tcHV0ZSBpdCBvdXRzaWRlIG9mIG1hY3JvIGNhbGwgdG8gYmUKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gdW5hZmZlY3RlZCBieSB0aGUgcGFyYW1ldGVyIGV2YWx1YXRpb24g
b3JkZXIuCi0gIEVYUEVDVF9FUShvcmlnaW5hbF92YWx1ZSwgKihpdCsrKSk7Ci0KLSAgLy8gVmVy
aWZpZXMgdGhhdCBwcmVmaXggYW5kIHBvc3RmaXggb3BlcmF0b3IrKygpIGFkdmFuY2UgYW4gaXRl
cmF0b3IKLSAgLy8gYWxsIHRoZSBzYW1lLgotICBpdDIgPSBpdDsKLSAgaXQrKzsKLSAgKytpdDI7
Ci0gIEVYUEVDVF9UUlVFKCppdCA9PSAqaXQyKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBSYW5nZSgp
IGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCi1URVNUKFJhbmdlVGVzdCwgSW50UmFu
Z2VXaXRoRGVmYXVsdFN0ZXApIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBS
YW5nZSgwLCAzKTsKLSAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezAsIDEsIDJ9Owot
ICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBFZGdlIGNh
c2UuIFRlc3RzIHRoYXQgUmFuZ2UoKSBnZW5lcmF0ZXMgdGhlIHNpbmdsZSBlbGVtZW50IHNlcXVl
bmNlCi0vLyBhcyBleHBlY3RlZCB3aGVuIHByb3ZpZGVkIHdpdGggcmFuZ2UgbGltaXRzIHRoYXQg
YXJlIGVxdWFsLgotVEVTVChSYW5nZVRlc3QsIEludFJhbmdlU2luZ2xlVmFsdWUpIHsKLSAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAxKTsKLSAgY29uc3QgaW50IGV4
cGVjdGVkX3ZhbHVlc1tdID0gezB9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92
YWx1ZXMpOwotfQotCi0vLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgUmFuZ2UoKSB3aXRoIGdlbmVy
YXRlcyBlbXB0eSBzZXF1ZW5jZSB3aGVuCi0vLyBzdXBwbGllZCB3aXRoIGFuIGVtcHR5IHJhbmdl
LgotVEVTVChSYW5nZVRlc3QsIEludFJhbmdlRW1wdHkpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0
b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAwKTsKLSAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShnZW4p
OwotfQotCi0vLyBUZXN0cyB0aGF0IFJhbmdlKCkgd2l0aCBjdXN0b20gc3RlcCAoZ3JlYXRlciB0
aGVuIG9uZSkgZ2VuZXJhdGVzCi0vLyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCi1URVNUKFJhbmdl
VGVzdCwgSW50UmFuZ2VXaXRoQ3VzdG9tU3RlcCkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxp
bnQ+IGdlbiA9IFJhbmdlKDAsIDksIDMpOwotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10g
PSB7MCwgMywgNn07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgUmFuZ2UoKSB3aXRoIGN1c3RvbSBzdGVwIChncmVhdGVyIHRoZW4g
b25lKSBnZW5lcmF0ZXMKLS8vIHRoZSBleHBlY3RlZCBzZXF1ZW5jZSB3aGVuIHRoZSBsYXN0IGVs
ZW1lbnQgZG9lcyBub3QgZmFsbCBvbiB0aGUKLS8vIHVwcGVyIHJhbmdlIGxpbWl0LiBTZXF1ZW5j
ZXMgZ2VuZXJhdGVkIGJ5IFJhbmdlKCkgbXVzdCBub3QgaGF2ZQotLy8gZWxlbWVudHMgYmV5b25k
IHRoZSByYW5nZSBsaW1pdHMuCi1URVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VXaXRoQ3VzdG9tU3Rl
cE92ZXJVcHBlckJvdW5kKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gUmFu
Z2UoMCwgNCwgMyk7Ci0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHswLCAzfTsKLSAg
VmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVmVyaWZpZXMg
dGhhdCBSYW5nZSB3b3JrcyB3aXRoIHVzZXItZGVmaW5lZCB0eXBlcyB0aGF0IGRlZmluZQotLy8g
Y29weSBjb25zdHJ1Y3Rvciwgb3BlcmF0b3I9KCksIG9wZXJhdG9yKygpLCBhbmQgb3BlcmF0b3I8
KCkuCi1jbGFzcyBEb2dBZGRlciB7Ci0gcHVibGljOgotICBleHBsaWNpdCBEb2dBZGRlcihjb25z
dCBjaGFyKiBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7fQotICBEb2dBZGRlcihjb25zdCBE
b2dBZGRlciYgb3RoZXIpIDogdmFsdWVfKG90aGVyLnZhbHVlXy5jX3N0cigpKSB7fQotCi0gIERv
Z0FkZGVyIG9wZXJhdG9yPShjb25zdCBEb2dBZGRlciYgb3RoZXIpIHsKLSAgICBpZiAodGhpcyAh
PSAmb3RoZXIpCi0gICAgICB2YWx1ZV8gPSBvdGhlci52YWx1ZV87Ci0gICAgcmV0dXJuICp0aGlz
OwotICB9Ci0gIERvZ0FkZGVyIG9wZXJhdG9yKyhjb25zdCBEb2dBZGRlciYgb3RoZXIpIGNvbnN0
IHsKLSAgICBNZXNzYWdlIG1zZzsKLSAgICBtc2cgPDwgdmFsdWVfLmNfc3RyKCkgPDwgb3RoZXIu
dmFsdWVfLmNfc3RyKCk7Ci0gICAgcmV0dXJuIERvZ0FkZGVyKG1zZy5HZXRTdHJpbmcoKS5jX3N0
cigpKTsKLSAgfQotICBib29sIG9wZXJhdG9yPChjb25zdCBEb2dBZGRlciYgb3RoZXIpIGNvbnN0
IHsKLSAgICByZXR1cm4gdmFsdWVfIDwgb3RoZXIudmFsdWVfOwotICB9Ci0gIGNvbnN0IDo6dGVz
dGluZzo6aW50ZXJuYWw6OlN0cmluZyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0K
LQotIHByaXZhdGU6Ci0gIDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZyB2YWx1ZV87Ci19Owot
Ci1URVNUKFJhbmdlVGVzdCwgV29ya3NXaXRoQUN1c3RvbVR5cGUpIHsKLSAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8RG9nQWRkZXI+IGdlbiA9Ci0gICAgICBSYW5nZShEb2dBZGRlcigiY2F0IiksIERv
Z0FkZGVyKCJjYXRkb2dkb2ciKSwgRG9nQWRkZXIoImRvZyIpKTsKLSAgUGFyYW1HZW5lcmF0b3I8
RG9nQWRkZXI+OjppdGVyYXRvciBpdCA9IGdlbi5iZWdpbigpOwotCi0gIEFTU0VSVF9GQUxTRShp
dCA9PSBnZW4uZW5kKCkpOwotICBFWFBFQ1RfU1RSRVEoImNhdCIsIGl0LT52YWx1ZSgpLmNfc3Ry
KCkpOwotCi0gIEFTU0VSVF9GQUxTRSgrK2l0ID09IGdlbi5lbmQoKSk7Ci0gIEVYUEVDVF9TVFJF
USgiY2F0ZG9nIiwgaXQtPnZhbHVlKCkuY19zdHIoKSk7Ci0KLSAgRVhQRUNUX1RSVUUoKytpdCA9
PSBnZW4uZW5kKCkpOwotfQotCi1jbGFzcyBJbnRXcmFwcGVyIHsKLSBwdWJsaWM6Ci0gIGV4cGxp
Y2l0IEludFdyYXBwZXIoaW50IGFfdmFsdWUpIDogdmFsdWVfKGFfdmFsdWUpIHt9Ci0gIEludFdy
YXBwZXIoY29uc3QgSW50V3JhcHBlciYgb3RoZXIpIDogdmFsdWVfKG90aGVyLnZhbHVlXykge30K
LQotICBJbnRXcmFwcGVyIG9wZXJhdG9yPShjb25zdCBJbnRXcmFwcGVyJiBvdGhlcikgewotICAg
IHZhbHVlXyA9IG90aGVyLnZhbHVlXzsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLSAgLy8gb3Bl
cmF0b3IrKCkgYWRkcyBhIGRpZmZlcmVudCB0eXBlLgotICBJbnRXcmFwcGVyIG9wZXJhdG9yKyhp
bnQgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIEludFdyYXBwZXIodmFsdWVfICsgb3RoZXIpOyB9Ci0g
IGJvb2wgb3BlcmF0b3I8KGNvbnN0IEludFdyYXBwZXImIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0
dXJuIHZhbHVlXyA8IG90aGVyLnZhbHVlXzsKLSAgfQotICBpbnQgdmFsdWUoKSBjb25zdCB7IHJl
dHVybiB2YWx1ZV87IH0KLQotIHByaXZhdGU6Ci0gIGludCB2YWx1ZV87Ci19OwotCi1URVNUKFJh
bmdlVGVzdCwgV29ya3NXaXRoQUN1c3RvbVR5cGVXaXRoRGlmZmVyZW50SW5jcmVtZW50VHlwZSkg
ewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxJbnRXcmFwcGVyPiBnZW4gPSBSYW5nZShJbnRXcmFw
cGVyKDApLCBJbnRXcmFwcGVyKDIpKTsKLSAgUGFyYW1HZW5lcmF0b3I8SW50V3JhcHBlcj46Oml0
ZXJhdG9yIGl0ID0gZ2VuLmJlZ2luKCk7Ci0KLSAgQVNTRVJUX0ZBTFNFKGl0ID09IGdlbi5lbmQo
KSk7Ci0gIEVYUEVDVF9FUSgwLCBpdC0+dmFsdWUoKSk7Ci0KLSAgQVNTRVJUX0ZBTFNFKCsraXQg
PT0gZ2VuLmVuZCgpKTsKLSAgRVhQRUNUX0VRKDEsIGl0LT52YWx1ZSgpKTsKLQotICBFWFBFQ1Rf
VFJVRSgrK2l0ID09IGdlbi5lbmQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSB3
aXRoIGFuIGFycmF5IHBhcmFtZXRlciBnZW5lcmF0ZXMKLS8vIHRoZSBleHBlY3RlZCBzZXF1ZW5j
ZS4KLVRFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJbkFycmF5KSB7Ci0gIGludCBhcnJheVtdID0g
ezMsIDUsIDh9OwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKGFy
cmF5KTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgYXJyYXkpOwotfQotCi0vLyBUZXN0cyB0aGF0
IFZhbHVlc0luKCkgd2l0aCBhIGNvbnN0IGFycmF5IHBhcmFtZXRlciBnZW5lcmF0ZXMKLS8vIHRo
ZSBleHBlY3RlZCBzZXF1ZW5jZS4KLVRFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJbkNvbnN0QXJy
YXkpIHsKLSAgY29uc3QgaW50IGFycmF5W10gPSB7MywgNSwgOH07Ci0gIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4oYXJyYXkpOwotICBWZXJpZnlHZW5lcmF0b3IoZ2Vu
LCBhcnJheSk7Ci19Ci0KLS8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIHdpdGgg
YW4gYXJyYXkgcGFyYW1ldGVyIGNvbnRhaW5pbmcgYQotLy8gc2luZ2xlIGVsZW1lbnQgZ2VuZXJh
dGVzIHRoZSBzaW5nbGUgZWxlbWVudCBzZXF1ZW5jZS4KLVRFU1QoVmFsdWVzSW5UZXN0LCBWYWx1
ZXNJblNpbmdsZUVsZW1lbnRBcnJheSkgewotICBpbnQgYXJyYXlbXSA9IHs0Mn07Ci0gIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4oYXJyYXkpOwotICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBhcnJheSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSBnZW5lcmF0
ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlIGZvciBhbiBTVEwKLS8vIGNvbnRhaW5lciAodmVjdG9y
KS4KLVRFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJblZlY3RvcikgewotICB0eXBlZGVmIDo6c3Rk
Ojp2ZWN0b3I8aW50PiBDb250YWluZXJUeXBlOwotICBDb250YWluZXJUeXBlIHZhbHVlczsKLSAg
dmFsdWVzLnB1c2hfYmFjaygzKTsKLSAgdmFsdWVzLnB1c2hfYmFjayg1KTsKLSAgdmFsdWVzLnB1
c2hfYmFjayg4KTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbih2
YWx1ZXMpOwotCi0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHszLCA1LCA4fTsKLSAg
VmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBWYWx1ZXNJbigpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCi1URVNUKFZhbHVl
c0luVGVzdCwgVmFsdWVzSW5JdGVyYXRvclJhbmdlKSB7Ci0gIHR5cGVkZWYgOjpzdGQ6OnZlY3Rv
cjxpbnQ+IENvbnRhaW5lclR5cGU7Ci0gIENvbnRhaW5lclR5cGUgdmFsdWVzOwotICB2YWx1ZXMu
cHVzaF9iYWNrKDMpOwotICB2YWx1ZXMucHVzaF9iYWNrKDUpOwotICB2YWx1ZXMucHVzaF9iYWNr
KDgpOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVlcy5i
ZWdpbigpLCB2YWx1ZXMuZW5kKCkpOwotCi0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9
IHszLCA1LCA4fTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0K
LQotLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFZhbHVlc0luKCkgcHJvdmlkZWQgd2l0aCBhbiBp
dGVyYXRvciByYW5nZSBzcGVjaWZ5aW5nIGEKLS8vIHNpbmdsZSB2YWx1ZSBnZW5lcmF0ZXMgYSBz
aW5nbGUtZWxlbWVudCBzZXF1ZW5jZS4KLVRFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJblNpbmds
ZUVsZW1lbnRJdGVyYXRvclJhbmdlKSB7Ci0gIHR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxpbnQ+IENv
bnRhaW5lclR5cGU7Ci0gIENvbnRhaW5lclR5cGUgdmFsdWVzOwotICB2YWx1ZXMucHVzaF9iYWNr
KDQyKTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbih2YWx1ZXMu
YmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKLQotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10g
PSB7NDJ9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0v
LyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSBwcm92aWRlZCB3aXRoIGFuIGVtcHR5
IGl0ZXJhdG9yIHJhbmdlCi0vLyBnZW5lcmF0ZXMgYW4gZW1wdHkgc2VxdWVuY2UuCi1URVNUKFZh
bHVlc0luVGVzdCwgVmFsdWVzSW5FbXB0eUl0ZXJhdG9yUmFuZ2UpIHsKLSAgdHlwZWRlZiA6OnN0
ZDo6dmVjdG9yPGludD4gQ29udGFpbmVyVHlwZTsKLSAgQ29udGFpbmVyVHlwZSB2YWx1ZXM7Ci0g
IGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4odmFsdWVzLmJlZ2luKCks
IHZhbHVlcy5lbmQoKSk7Ci0KLSAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShnZW4pOwotfQotCi0v
LyBUZXN0cyB0aGF0IHRoZSBWYWx1ZXMoKSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNl
LgotVEVTVChWYWx1ZXNUZXN0LCBWYWx1ZXNXb3JrcykgewotICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxpbnQ+IGdlbiA9IFZhbHVlcygzLCA1LCA4KTsKLQotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFs
dWVzW10gPSB7MywgNSwgOH07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVl
cyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVmFsdWVzKCkgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBz
ZXF1ZW5jZXMgZnJvbSBlbGVtZW50cyBvZgotLy8gZGlmZmVyZW50IHR5cGVzIGNvbnZlcnRpYmxl
IHRvIFBhcmFtR2VuZXJhdG9yJ3MgcGFyYW1ldGVyIHR5cGUuCi1URVNUKFZhbHVlc1Rlc3QsIFZh
bHVlc1dvcmtzRm9yVmFsdWVzT2ZDb21wYXRpYmxlVHlwZXMpIHsKLSAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8ZG91YmxlPiBnZW4gPSBWYWx1ZXMoMywgNS4wZiwgOC4wKTsKLQotICBjb25zdCBkb3Vi
bGUgZXhwZWN0ZWRfdmFsdWVzW10gPSB7My4wLCA1LjAsIDguMH07Ci0gIFZlcmlmeUdlbmVyYXRv
cihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLVRFU1QoVmFsdWVzVGVzdCwgVmFsdWVzV29y
a3NGb3JNYXhMZW5ndGhMaXN0KSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0g
VmFsdWVzKAotICAgICAgMTAsIDIwLCAzMCwgNDAsIDUwLCA2MCwgNzAsIDgwLCA5MCwgMTAwLAot
ICAgICAgMTEwLCAxMjAsIDEzMCwgMTQwLCAxNTAsIDE2MCwgMTcwLCAxODAsIDE5MCwgMjAwLAot
ICAgICAgMjEwLCAyMjAsIDIzMCwgMjQwLCAyNTAsIDI2MCwgMjcwLCAyODAsIDI5MCwgMzAwLAot
ICAgICAgMzEwLCAzMjAsIDMzMCwgMzQwLCAzNTAsIDM2MCwgMzcwLCAzODAsIDM5MCwgNDAwLAot
ICAgICAgNDEwLCA0MjAsIDQzMCwgNDQwLCA0NTAsIDQ2MCwgNDcwLCA0ODAsIDQ5MCwgNTAwKTsK
LQotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7Ci0gICAgICAxMCwgMjAsIDMwLCA0
MCwgNTAsIDYwLCA3MCwgODAsIDkwLCAxMDAsCi0gICAgICAxMTAsIDEyMCwgMTMwLCAxNDAsIDE1
MCwgMTYwLCAxNzAsIDE4MCwgMTkwLCAyMDAsCi0gICAgICAyMTAsIDIyMCwgMjMwLCAyNDAsIDI1
MCwgMjYwLCAyNzAsIDI4MCwgMjkwLCAzMDAsCi0gICAgICAzMTAsIDMyMCwgMzMwLCAzNDAsIDM1
MCwgMzYwLCAzNzAsIDM4MCwgMzkwLCA0MDAsCi0gICAgICA0MTAsIDQyMCwgNDMwLCA0NDAsIDQ1
MCwgNDYwLCA0NzAsIDQ4MCwgNDkwLCA1MDB9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBl
Y3RlZF92YWx1ZXMpOwotfQotCi0vLyBFZGdlIGNhc2UgdGVzdC4gVGVzdHMgdGhhdCBzaW5nbGUt
cGFyYW1ldGVyIFZhbHVlcygpIGdlbmVyYXRlcyB0aGUgc2VxdWVuY2UKLS8vIHdpdGggdGhlIHNp
bmdsZSB2YWx1ZS4KLVRFU1QoVmFsdWVzVGVzdCwgVmFsdWVzV2l0aFNpbmdsZVBhcmFtZXRlcikg
ewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlcyg0Mik7Ci0KLSAgY29u
c3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezQyfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwg
ZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBCb29sKCkgZ2VuZXJhdGVzIHNl
cXVlbmNlIChmYWxzZSwgdHJ1ZSkuCi1URVNUKEJvb2xUZXN0LCBCb29sV29ya3MpIHsKLSAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8Ym9vbD4gZ2VuID0gQm9vbCgpOwotCi0gIGNvbnN0IGJvb2wgZXhw
ZWN0ZWRfdmFsdWVzW10gPSB7ZmFsc2UsIHRydWV9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBl
eHBlY3RlZF92YWx1ZXMpOwotfQotCi0jaWYgR1RFU1RfSEFTX0NPTUJJTkUKLQotLy8gVGVzdHMg
dGhhdCBDb21iaW5lKCkgd2l0aCB0d28gcGFyYW1ldGVycyBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVk
IHNlcXVlbmNlLgotVEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdpdGhUd29QYXJhbWV0ZXJzKSB7
Ci0gIGNvbnN0IGNoYXIqIGZvbyA9ICJmb28iOwotICBjb25zdCBjaGFyKiBiYXIgPSAiYmFyIjsK
LSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8Y29uc3QgY2hhciosIGludD4gPiBnZW4gPQot
ICAgICAgQ29tYmluZShWYWx1ZXMoZm9vLCBiYXIpLCBWYWx1ZXMoMywgNCkpOwotCi0gIHR1cGxl
PGNvbnN0IGNoYXIqLCBpbnQ+IGV4cGVjdGVkX3ZhbHVlc1tdID0gewotICAgIG1ha2VfdHVwbGUo
Zm9vLCAzKSwgbWFrZV90dXBsZShmb28sIDQpLAotICAgIG1ha2VfdHVwbGUoYmFyLCAzKSwgbWFr
ZV90dXBsZShiYXIsIDQpfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVz
KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBDb21iaW5lKCkgd2l0aCB0aHJlZSBwYXJhbWV0ZXJzIGdl
bmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCi1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5l
V2l0aFRocmVlUGFyYW1ldGVycykgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQs
IGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUoVmFsdWVzKDAsIDEpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDMsIDQp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsdWVzKDUsIDYpKTsKLSAgdHVwbGU8aW50LCBpbnQsIGludD4gZXhwZWN0ZWRfdmFs
dWVzW10gPSB7Ci0gICAgbWFrZV90dXBsZSgwLCAzLCA1KSwgbWFrZV90dXBsZSgwLCAzLCA2KSwK
LSAgICBtYWtlX3R1cGxlKDAsIDQsIDUpLCBtYWtlX3R1cGxlKDAsIDQsIDYpLAotICAgIG1ha2Vf
dHVwbGUoMSwgMywgNSksIG1ha2VfdHVwbGUoMSwgMywgNiksCi0gICAgbWFrZV90dXBsZSgxLCA0
LCA1KSwgbWFrZV90dXBsZSgxLCA0LCA2KX07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVj
dGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIENvbWJpbmUoKSB3aXRoIHRoZSBm
aXJzdCBwYXJhbWV0ZXIgZ2VuZXJhdGluZyBhIHNpbmdsZSB2YWx1ZQotLy8gc2VxdWVuY2UgZ2Vu
ZXJhdGVzIGEgc2VxdWVuY2Ugd2l0aCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGVxdWFsIHRvIHRo
ZQotLy8gbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBzZXF1ZW5jZSBnZW5lcmF0ZWQgYnkgdGhl
IHNlY29uZCBwYXJhbWV0ZXIuCi1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aEZpcnN0UGFy
YW1ldGVyU2luZ2xlVmFsdWUpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBp
bnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoNDIpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygwLCAxKSk7Ci0KLSAgdHVwbGU8
aW50LCBpbnQ+IGV4cGVjdGVkX3ZhbHVlc1tdID0ge21ha2VfdHVwbGUoNDIsIDApLCBtYWtlX3R1
cGxlKDQyLCAxKX07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIENvbWJpbmUoKSB3aXRoIHRoZSBzZWNvbmQgcGFyYW1ldGVy
IGdlbmVyYXRpbmcgYSBzaW5nbGUgdmFsdWUKLS8vIHNlcXVlbmNlIGdlbmVyYXRlcyBhIHNlcXVl
bmNlIHdpdGggdGhlIG51bWJlciBvZiBlbGVtZW50cyBlcXVhbCB0byB0aGUKLS8vIG51bWJlciBv
ZiBlbGVtZW50cyBpbiB0aGUgc2VxdWVuY2UgZ2VuZXJhdGVkIGJ5IHRoZSBmaXJzdCBwYXJhbWV0
ZXIuCi1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFNlY29uZFBhcmFtZXRlclNpbmdsZVZh
bHVlKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50PiA+IGdlbiA9IENv
bWJpbmUoVmFsdWVzKDAsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbHVlcyg0MikpOwotCi0gIHR1cGxlPGludCwgaW50PiBleHBl
Y3RlZF92YWx1ZXNbXSA9IHttYWtlX3R1cGxlKDAsIDQyKSwgbWFrZV90dXBsZSgxLCA0Mil9Owot
ICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBUZXN0cyB0
aGF0IHdoZW4gdGhlIGZpcnN0IHBhcmFtZXRlciBwcm9kdWNlcyBhbiBlbXB0eSBzZXF1ZW5jZSwK
LS8vIENvbWJpbmUoKSBwcm9kdWNlcyBhbiBlbXB0eSBzZXF1ZW5jZSwgdG9vLgotVEVTVChDb21i
aW5lVGVzdCwgQ29tYmluZVdpdGhGaXJzdFBhcmFtZXRlckVtcHR5UmFuZ2UpIHsKLSAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShSYW5nZSgwLCAw
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWx1ZXMoMCwgMSkpOwotICBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgd2hlbiB0aGUgc2Vjb25kIHBhcmFtZXRlciBwcm9kdWNlcyBhbiBlbXB0eSBz
ZXF1ZW5jZSwKLS8vIENvbWJpbmUoKSBwcm9kdWNlcyBhbiBlbXB0eSBzZXF1ZW5jZSwgdG9vLgot
VEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdpdGhTZWNvbmRQYXJhbWV0ZXJFbXB0eVJhbmdlKSB7
Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUo
VmFsdWVzKDAsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJhbmdlKDEsIDEpKTsKLSAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShnZW4p
OwotfQotCi0vLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgY29tYmluZSB3b3JrcyB3aXRoIHRoZSBt
YXhpbXVtIG51bWJlcgotLy8gb2YgcGFyYW1ldGVycyBzdXBwb3J0ZWQgYnkgR29vZ2xlIFRlc3Qg
KGN1cnJlbnRseSAxMCkuCi1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aE1heE51bWJlck9m
UGFyYW1ldGVycykgewotICBjb25zdCBjaGFyKiBmb28gPSAiZm9vIjsKLSAgY29uc3QgY2hhciog
YmFyID0gImJhciI7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGNvbnN0IGNoYXIqLCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUoVmFsdWVzKGZvbywgYmFyKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMo
MSksIFZhbHVlcygyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWx1ZXMoMyksIFZhbHVlcyg0KSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNSksIFZhbHVlcyg2KSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWx1ZXMoNyksIFZhbHVlcyg4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoOSkpOwotCi0gIHR1cGxlPGNvbnN0IGNoYXIqLCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50PgotICAgICAgZXhwZWN0
ZWRfdmFsdWVzW10gPSB7bWFrZV90dXBsZShmb28sIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZV90dXBsZShiYXIsIDEsIDIsIDMsIDQs
IDUsIDYsIDcsIDgsIDkpfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVz
KTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQotCi0vLyBUZXN0cyB0aGF0IGFu
IGdlbmVyYXRvciBwcm9kdWNlcyBjb3JyZWN0IHNlcXVlbmNlIGFmdGVyIGJlaW5nCi0vLyBhc3Np
Z25lZCBmcm9tIGFub3RoZXIgZ2VuZXJhdG9yLgotVEVTVChQYXJhbUdlbmVyYXRvclRlc3QsIEFz
c2lnbm1lbnRXb3JrcykgewotICBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlcygxLCAy
KTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4yID0gVmFsdWVzKDMsIDQpOwotICBn
ZW4gPSBnZW4yOwotCi0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHszLCA0fTsKLSAg
VmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGhpcyB0ZXN0
IHZlcmlmaWVzIHRoYXQgdGhlIHRlc3RzIGFyZSBleHBhbmRlZCBhbmQgcnVuIGFzIHNwZWNpZmll
ZDoKLS8vIG9uZSB0ZXN0IHBlciBlbGVtZW50IGZyb20gdGhlIHNlcXVlbmNlIHByb2R1Y2VkIGJ5
IHRoZSBnZW5lcmF0b3IKLS8vIHNwZWNpZmllZCBpbiBJTlNUQU5USUFURV9URVNUX0NBU0VfUC4g
SXQgYWxzbyB2ZXJpZmllcyB0aGF0IHRoZSB0ZXN0J3MKLS8vIGZpeHR1cmUgY29uc3RydWN0b3Is
IFNldFVwKCksIGFuZCBUZWFyRG93bigpIGhhdmUgcnVuIGFuZCBoYXZlIGJlZW4KLS8vIHN1cHBs
aWVkIHdpdGggdGhlIGNvcnJlY3QgcGFyYW1ldGVycy4KLQotLy8gVGhlIHVzZSBvZiBlbnZpcm9u
bWVudCBvYmplY3QgYWxsb3dzIGRldGVjdGlvbiBvZiB0aGUgY2FzZSB3aGVyZSBubyB0ZXN0Ci0v
LyBjYXNlIGZ1bmN0aW9uYWxpdHkgaXMgcnVuIGF0IGFsbC4gSW4gdGhpcyBjYXNlIFRlc3RDYXNl
VGVhckRvd24gd2lsbCBub3QKLS8vIGJlIGFibGUgdG8gZGV0ZWN0IG1pc3NpbmcgdGVzdHMsIG5h
dHVyYWxseS4KLXRlbXBsYXRlIDxpbnQga0V4cGVjdGVkQ2FsbHM+Ci1jbGFzcyBUZXN0R2VuZXJh
dGlvbkVudmlyb25tZW50IDogcHVibGljIDo6dGVzdGluZzo6RW52aXJvbm1lbnQgewotIHB1Ymxp
YzoKLSAgc3RhdGljIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQqIEluc3RhbmNlKCkgewotICAg
IHN0YXRpYyBUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50KiBpbnN0YW5jZSA9IG5ldyBUZXN0R2Vu
ZXJhdGlvbkVudmlyb25tZW50OwotICAgIHJldHVybiBpbnN0YW5jZTsKLSAgfQotCi0gIHZvaWQg
Rml4dHVyZUNvbnN0cnVjdG9yRXhlY3V0ZWQoKSB7IGZpeHR1cmVfY29uc3RydWN0b3JfY291bnRf
Kys7IH0KLSAgdm9pZCBTZXRVcEV4ZWN1dGVkKCkgeyBzZXRfdXBfY291bnRfKys7IH0KLSAgdm9p
ZCBUZWFyRG93bkV4ZWN1dGVkKCkgeyB0ZWFyX2Rvd25fY291bnRfKys7IH0KLSAgdm9pZCBUZXN0
Qm9keUV4ZWN1dGVkKCkgeyB0ZXN0X2JvZHlfY291bnRfKys7IH0KLQotICB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKSB7Ci0gICAgLy8gSWYgYWxsIE11bHRpcGxlVGVzdEdlbmVyYXRpb25UZXN0IHRl
c3RzIGhhdmUgYmVlbiBkZS1zZWxlY3RlZAotICAgIC8vIGJ5IHRoZSBmaWx0ZXIgZmxhZywgdGhl
IGZvbGxvd2luZyBjaGVja3MgbWFrZSBubyBzZW5zZS4KLSAgICBib29sIHBlcmZvcm1fY2hlY2sg
PSBmYWxzZTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwga0V4cGVjdGVkQ2FsbHM7ICsraSkg
ewotICAgICAgTWVzc2FnZSBtc2c7Ci0gICAgICBtc2cgPDwgIlRlc3RzRXhwYW5kZWRBbmRSdW4v
IiA8PCBpOwotICAgICAgaWYgKFVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0Y2hlc1Rlc3QoCi0g
ICAgICAgICAgICAgIlRlc3RFeHBhbnNpb25Nb2R1bGUvTXVsdGlwbGVUZXN0R2VuZXJhdGlvblRl
c3QiLAotICAgICAgICAgICAgICBtc2cuR2V0U3RyaW5nKCkuY19zdHIoKSkpIHsKLSAgICAgICAg
cGVyZm9ybV9jaGVjayA9IHRydWU7Ci0gICAgICB9Ci0gICAgfQotICAgIGlmIChwZXJmb3JtX2No
ZWNrKSB7Ci0gICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2FsbHMsIGZpeHR1cmVfY29uc3RydWN0
b3JfY291bnRfKQotICAgICAgICAgIDw8ICJGaXh0dXJlIGNvbnN0cnVjdG9yIG9mIFBhcmFtVGVz
dEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZSAiCi0gICAgICAgICAgPDwgImhhcyBub3QgYmVlbiBy
dW4gYXMgZXhwZWN0ZWQuIjsKLSAgICAgIEVYUEVDVF9FUShrRXhwZWN0ZWRDYWxscywgc2V0X3Vw
X2NvdW50XykKLSAgICAgICAgICA8PCAiRml4dHVyZSBTZXRVcCBtZXRob2Qgb2YgUGFyYW1UZXN0
R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlICIKLSAgICAgICAgICA8PCAiaGFzIG5vdCBiZWVuIHJ1
biBhcyBleHBlY3RlZC4iOwotICAgICAgRVhQRUNUX0VRKGtFeHBlY3RlZENhbGxzLCB0ZWFyX2Rv
d25fY291bnRfKQotICAgICAgICAgIDw8ICJGaXh0dXJlIFRlYXJEb3duIG1ldGhvZCBvZiBQYXJh
bVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgotICAgICAgICAgIDw8ICJoYXMgbm90IGJl
ZW4gcnVuIGFzIGV4cGVjdGVkLiI7Ci0gICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2FsbHMsIHRl
c3RfYm9keV9jb3VudF8pCi0gICAgICAgICAgPDwgIlRlc3QgaW4gUGFyYW1UZXN0R2VuZXJhdGlv
blRlc3QgdGVzdCBjYXNlICIKLSAgICAgICAgICA8PCAiaGFzIG5vdCBiZWVuIHJ1biBhcyBleHBl
Y3RlZC4iOwotICAgIH0KLSAgfQotIHByaXZhdGU6Ci0gIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1l
bnQoKSA6IGZpeHR1cmVfY29uc3RydWN0b3JfY291bnRfKDApLCBzZXRfdXBfY291bnRfKDApLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWFyX2Rvd25fY291bnRfKDApLCB0ZXN0
X2JvZHlfY291bnRfKDApIHt9Ci0KLSAgaW50IGZpeHR1cmVfY29uc3RydWN0b3JfY291bnRfOwot
ICBpbnQgc2V0X3VwX2NvdW50XzsKLSAgaW50IHRlYXJfZG93bl9jb3VudF87Ci0gIGludCB0ZXN0
X2JvZHlfY291bnRfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdEdl
bmVyYXRpb25FbnZpcm9ubWVudCk7Ci19OwotCi1jb25zdCBpbnQgdGVzdF9nZW5lcmF0aW9uX3Bh
cmFtc1tdID0gezM2LCA0MiwgNzJ9OwotCi1jbGFzcyBUZXN0R2VuZXJhdGlvblRlc3QgOiBwdWJs
aWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsKLSBwdWJsaWM6Ci0gIGVudW0gewotICAgIFBBUkFNRVRF
Ul9DT1VOVCA9Ci0gICAgICAgIHNpemVvZih0ZXN0X2dlbmVyYXRpb25fcGFyYW1zKS9zaXplb2Yo
dGVzdF9nZW5lcmF0aW9uX3BhcmFtc1swXSkKLSAgfTsKLQotICB0eXBlZGVmIFRlc3RHZW5lcmF0
aW9uRW52aXJvbm1lbnQ8UEFSQU1FVEVSX0NPVU5UPiBFbnZpcm9ubWVudDsKLQotICBUZXN0R2Vu
ZXJhdGlvblRlc3QoKSB7Ci0gICAgRW52aXJvbm1lbnQ6Okluc3RhbmNlKCktPkZpeHR1cmVDb25z
dHJ1Y3RvckV4ZWN1dGVkKCk7Ci0gICAgY3VycmVudF9wYXJhbWV0ZXJfID0gR2V0UGFyYW0oKTsK
LSAgfQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgRW52aXJvbm1lbnQ6Okluc3RhbmNl
KCktPlNldFVwRXhlY3V0ZWQoKTsKLSAgICBFWFBFQ1RfRVEoY3VycmVudF9wYXJhbWV0ZXJfLCBH
ZXRQYXJhbSgpKTsKLSAgfQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgRW52aXJv
bm1lbnQ6Okluc3RhbmNlKCktPlRlYXJEb3duRXhlY3V0ZWQoKTsKLSAgICBFWFBFQ1RfRVEoY3Vy
cmVudF9wYXJhbWV0ZXJfLCBHZXRQYXJhbSgpKTsKLSAgfQotCi0gIHN0YXRpYyB2b2lkIFNldFVw
VGVzdENhc2UoKSB7Ci0gICAgYm9vbCBhbGxfdGVzdHNfaW5fdGVzdF9jYXNlX3NlbGVjdGVkID0g
dHJ1ZTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgUEFSQU1FVEVSX0NPVU5UOyArK2kpIHsK
LSAgICAgIE1lc3NhZ2UgdGVzdF9uYW1lOwotICAgICAgdGVzdF9uYW1lIDw8ICJUZXN0c0V4cGFu
ZGVkQW5kUnVuLyIgPDwgaTsKLSAgICAgIGlmICggIVVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0
Y2hlc1Rlc3QoCi0gICAgICAgICAgICAgICAgIlRlc3RFeHBhbnNpb25Nb2R1bGUvTXVsdGlwbGVU
ZXN0R2VuZXJhdGlvblRlc3QiLAotICAgICAgICAgICAgICAgIHRlc3RfbmFtZS5HZXRTdHJpbmco
KSkpIHsKLSAgICAgICAgYWxsX3Rlc3RzX2luX3Rlc3RfY2FzZV9zZWxlY3RlZCA9IGZhbHNlOwot
ICAgICAgfQotICAgIH0KLSAgICBFWFBFQ1RfVFJVRShhbGxfdGVzdHNfaW5fdGVzdF9jYXNlX3Nl
bGVjdGVkKQotICAgICAgICA8PCAiV2hlbiBydW5uaW5nIHRoZSBUZXN0R2VuZXJhdGlvblRlc3Qg
dGVzdCBjYXNlIGFsbCBvZiBpdHMgdGVzdHNcbiIKLSAgICAgICAgPDwgIm11c3QgYmUgc2VsZWN0
ZWQgYnkgdGhlIGZpbHRlciBmbGFnIGZvciB0aGUgdGVzdCBjYXNlIHRvIHBhc3MuXG4iCi0gICAg
ICAgIDw8ICJJZiBub3QgYWxsIG9mIHRoZW0gYXJlIGVuYWJsZWQsIHdlIGNhbid0IHJlbGlhYmx5
IGNvbmNsdWRlXG4iCi0gICAgICAgIDw8ICJ0aGF0IHRoZSBjb3JyZWN0IG51bWJlciBvZiB0ZXN0
cyBoYXZlIGJlZW4gZ2VuZXJhdGVkLiI7Ci0KLSAgICBjb2xsZWN0ZWRfcGFyYW1ldGVyc18uY2xl
YXIoKTsKLSAgfQotCi0gIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7Ci0gICAgdmVj
dG9yPGludD4gZXhwZWN0ZWRfdmFsdWVzKHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMgKyBQQVJBTUVU
RVJfQ09VTlQpOwotICAgIC8vIFRlc3QgZXhlY3V0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVk
IGJ5IEdvb2dsZSBUZXN0LAotICAgIC8vIHNvIHRoZSBvcmRlciBvZiB2YWx1ZXMgaW4gY29sbGVj
dGVkX3BhcmFtZXRlcnNfIGNhbiBiZQotICAgIC8vIGRpZmZlcmVudCBhbmQgd2UgaGF2ZSB0byBz
b3J0IHRvIGNvbXBhcmUuCi0gICAgc29ydChleHBlY3RlZF92YWx1ZXMuYmVnaW4oKSwgZXhwZWN0
ZWRfdmFsdWVzLmVuZCgpKTsKLSAgICBzb3J0KGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5iZWdpbigp
LCBjb2xsZWN0ZWRfcGFyYW1ldGVyc18uZW5kKCkpOwotCi0gICAgRVhQRUNUX1RSVUUoY29sbGVj
dGVkX3BhcmFtZXRlcnNfID09IGV4cGVjdGVkX3ZhbHVlcyk7Ci0gIH0KLSBwcm90ZWN0ZWQ6Ci0g
IGludCBjdXJyZW50X3BhcmFtZXRlcl87Ci0gIHN0YXRpYyB2ZWN0b3I8aW50PiBjb2xsZWN0ZWRf
cGFyYW1ldGVyc187Ci0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJ
R05fKFRlc3RHZW5lcmF0aW9uVGVzdCk7Ci19OwotdmVjdG9yPGludD4gVGVzdEdlbmVyYXRpb25U
ZXN0Ojpjb2xsZWN0ZWRfcGFyYW1ldGVyc187Ci0KLVRFU1RfUChUZXN0R2VuZXJhdGlvblRlc3Qs
IFRlc3RzRXhwYW5kZWRBbmRSdW4pIHsKLSAgRW52aXJvbm1lbnQ6Okluc3RhbmNlKCktPlRlc3RC
b2R5RXhlY3V0ZWQoKTsKLSAgRVhQRUNUX0VRKGN1cnJlbnRfcGFyYW1ldGVyXywgR2V0UGFyYW0o
KSk7Ci0gIGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5wdXNoX2JhY2soR2V0UGFyYW0oKSk7Ci19Ci1J
TlNUQU5USUFURV9URVNUX0NBU0VfUChUZXN0RXhwYW5zaW9uTW9kdWxlLCBUZXN0R2VuZXJhdGlv
blRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXNJbih0ZXN0X2dlbmVyYXRpb25f
cGFyYW1zKSk7Ci0KLS8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSBlbGVtZW50IHNlcXVl
bmNlICh0aGlyZCBwYXJhbWV0ZXIgb2YKLS8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKSBpcyBl
dmFsdWF0ZWQgaW4gSW5pdEdvb2dsZVRlc3QoKSBhbmQgbmVpdGhlciBhdAotLy8gdGhlIGNhbGwg
c2l0ZSBvZiBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBub3IgaW4gUlVOX0FMTF9URVNUUygpLiAg
Rm9yCi0vLyB0aGF0LCB3ZSBkZWNsYXJlIHBhcmFtX3ZhbHVlXyB0byBiZSBhIHN0YXRpYyBtZW1i
ZXIgb2YKLS8vIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0IGFuZCBpbml0aWFsaXplIGl0IHRvIDAu
ICBXZSBzZXQgaXQgdG8gMSBpbgotLy8gbWFpbigpLCBqdXN0IGJlZm9yZSBpbnZvY2F0aW9uIG9m
IEluaXRHb29nbGVUZXN0KCkuICBBZnRlciBjYWxsaW5nCi0vLyBJbml0R29vZ2xlVGVzdCgpLCB3
ZSBzZXQgdGhlIHZhbHVlIHRvIDIuICBJZiB0aGUgc2VxdWVuY2UgaXMgZXZhbHVhdGVkCi0vLyBi
ZWZvcmUgb3IgYWZ0ZXIgSW5pdEdvb2dsZVRlc3QsIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIHdp
bGwgY3JlYXRlIGEKLS8vIHRlc3Qgd2l0aCBwYXJhbWV0ZXIgb3RoZXIgdGhhbiAxLCBhbmQgdGhl
IHRlc3QgYm9keSB3aWxsIGZhaWwgdGhlCi0vLyBhc3NlcnRpb24uCi1jbGFzcyBHZW5lcmF0b3JF
dmFsdWF0aW9uVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4gewotIHB1YmxpYzoKLSAg
c3RhdGljIGludCBwYXJhbV92YWx1ZSgpIHsgcmV0dXJuIHBhcmFtX3ZhbHVlXzsgfQotICBzdGF0
aWMgdm9pZCBzZXRfcGFyYW1fdmFsdWUoaW50IHBhcmFtX3ZhbHVlKSB7IHBhcmFtX3ZhbHVlXyA9
IHBhcmFtX3ZhbHVlOyB9Ci0KLSBwcml2YXRlOgotICBzdGF0aWMgaW50IHBhcmFtX3ZhbHVlXzsK
LX07Ci1pbnQgR2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnBhcmFtX3ZhbHVlXyA9IDA7Ci0KLVRF
U1RfUChHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCwgR2VuZXJhdG9yc0V2YWx1YXRlZEluTWFpbikg
ewotICBFWFBFQ1RfRVEoMSwgR2V0UGFyYW0oKSk7Ci19Ci1JTlNUQU5USUFURV9URVNUX0NBU0Vf
UChHZW5FdmFsTW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdG9yRXZhbHVh
dGlvblRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoR2VuZXJhdG9yRXZhbHVh
dGlvblRlc3Q6OnBhcmFtX3ZhbHVlKCkpKTsKLQotLy8gVGVzdHMgdGhhdCBnZW5lcmF0b3JzIGRl
ZmluZWQgaW4gYSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdCBhcmUKLS8vIGZ1bmN0aW9uYWwu
IEdlbmVyYXRvciBleHRlcm5fZ2VuIGlzIGRlZmluZWQgaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0
Mi5jYy4KLWV4dGVybiBQYXJhbUdlbmVyYXRvcjxpbnQ+IGV4dGVybl9nZW47Ci1jbGFzcyBFeHRl
cm5hbEdlbmVyYXRvclRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHt9OwotVEVTVF9Q
KEV4dGVybmFsR2VuZXJhdG9yVGVzdCwgRXh0ZXJuYWxHZW5lcmF0b3IpIHsKLSAgLy8gU2VxdWVu
Y2UgcHJvZHVjZWQgYnkgZXh0ZXJuX2dlbiBjb250YWlucyBvbmx5IGEgc2luZ2xlIHZhbHVlCi0g
IC8vIHdoaWNoIHdlIHZlcmlmeSBoZXJlLgotICBFWFBFQ1RfRVEoR2V0UGFyYW0oKSwgMzMpOwot
fQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoRXh0ZXJuYWxHZW5lcmF0b3JNb2R1bGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBFeHRlcm5hbEdlbmVyYXRvclRlc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBleHRlcm5fZ2VuKTsKLQotLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQg
dGVzdCBjYXNlIGNhbiBiZSBkZWZpbmVkIGluIG9uZSB0cmFuc2xhdGlvbgotLy8gdW5pdCBhbmQg
aW5zdGFudGlhdGVkIGluIGFub3RoZXIuIFRoaXMgdGVzdCB3aWxsIGJlIGluc3RhbnRpYXRlZCBp
bgotLy8gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0Mi5jYy4gRXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVz
dCBmaXh0dXJlIGNsYXNzIGlzCi0vLyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5o
LgotVEVTVF9QKEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3QsIElzTXVsdGlwbGVPZjMzKSB7Ci0g
IEVYUEVDVF9FUSgwLCBHZXRQYXJhbSgpICUgMzMpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgcGFy
YW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGluc3RhbnRpYXRlZCB3aXRoIG11bHRpcGxlCi0v
LyBnZW5lcmF0b3JzLgotY2xhc3MgTXVsdGlwbGVJbnN0YW50aWF0aW9uVGVzdCA6IHB1YmxpYyBU
ZXN0V2l0aFBhcmFtPGludD4ge307Ci1URVNUX1AoTXVsdGlwbGVJbnN0YW50aWF0aW9uVGVzdCwg
QWxsb3dzTXVsdGlwbGVJbnN0YW5jZXMpIHsKLX0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNl
cXVlbmNlMSwgTXVsdGlwbGVJbnN0YW50aWF0aW9uVGVzdCwgVmFsdWVzKDEsIDIpKTsKLUlOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMiwgTXVsdGlwbGVJbnN0YW50aWF0aW9uVGVzdCwg
UmFuZ2UoMywgNSkpOwotCi0vLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2Ug
Y2FuIGJlIGluc3RhbnRpYXRlZAotLy8gaW4gbXVsdGlwbGUgdHJhbnNsYXRpb24gdW5pdHMuIFRo
aXMgdGVzdCB3aWxsIGJlIGluc3RhbnRpYXRlZAotLy8gaGVyZSBhbmQgaW4gZ3Rlc3QtcGFyYW0t
dGVzdF90ZXN0Mi5jYy4KLS8vIEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYXRpb25Vbml0
c1Rlc3QgZml4dHVyZSBjbGFzcwotLy8gaXMgZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rl
c3QuaC4KLVRFU1RfUChJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3Qs
IElzTXVsdGlwbGVPZjQyKSB7Ci0gIEVYUEVDVF9FUSgwLCBHZXRQYXJhbSgpICUgNDIpOwotfQot
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2UxLAotICAgICAgICAgICAgICAgICAgICAg
ICAgSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsdWVzKDQyLCA0MioyKSk7Ci0KLS8vIFRlc3RzIHRoYXQgZWFjaCBp
dGVyYXRpb24gb2YgcGFyYW1ldGVyaXplZCB0ZXN0IHJ1bnMgaW4gYSBzZXBhcmF0ZSB0ZXN0Ci0v
LyBvYmplY3QuCi1jbGFzcyBTZXBhcmF0ZUluc3RhbmNlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBh
cmFtPGludD4gewotIHB1YmxpYzoKLSAgU2VwYXJhdGVJbnN0YW5jZVRlc3QoKSA6IGNvdW50Xygw
KSB7fQotCi0gIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7Ci0gICAgRVhQRUNUX0dF
KGdsb2JhbF9jb3VudF8sIDIpCi0gICAgICAgIDw8ICJJZiBzb21lIChidXQgbm90IGFsbCkgU2Vw
YXJhdGVJbnN0YW5jZVRlc3QgdGVzdHMgaGF2ZSBiZWVuICIKLSAgICAgICAgPDwgImZpbHRlcmVk
IG91dCB0aGlzIHRlc3Qgd2lsbCBmYWlsLiBNYWtlIHN1cmUgdGhhdCBhbGwgIgotICAgICAgICA8
PCAiR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QgYXJlIHNlbGVjdGVkIG9yIGRlLXNlbGVjdGVkIHRv
Z2V0aGVyICIKLSAgICAgICAgPDwgImJ5IHRoZSB0ZXN0IGZpbHRlci4iOwotICB9Ci0KLSBwcm90
ZWN0ZWQ6Ci0gIGludCBjb3VudF87Ci0gIHN0YXRpYyBpbnQgZ2xvYmFsX2NvdW50XzsKLX07Ci1p
bnQgU2VwYXJhdGVJbnN0YW5jZVRlc3Q6Omdsb2JhbF9jb3VudF8gPSAwOwotCi1URVNUX1AoU2Vw
YXJhdGVJbnN0YW5jZVRlc3QsIFRlc3RzUnVuSW5TZXBhcmF0ZUluc3RhbmNlcykgewotICBFWFBF
Q1RfRVEoMCwgY291bnRfKyspOwotICBnbG9iYWxfY291bnRfKys7Ci19Ci1JTlNUQU5USUFURV9U
RVNUX0NBU0VfUChGb3VyRWxlbVNlcXVlbmNlLCBTZXBhcmF0ZUluc3RhbmNlVGVzdCwgUmFuZ2Uo
MSwgNCkpOwotCi0vLyBUZXN0cyB0aGF0IGFsbCBpbnN0YW50aWF0aW9ucyBvZiBhIHRlc3QgaGF2
ZSBuYW1lZCBhcHByb3ByaWF0ZWx5LiBUZXN0Ci0vLyBkZWZpbmVkIHdpdGggVEVTVF9QKFRlc3RD
YXNlTmFtZSwgVGVzdE5hbWUpIGFuZCBpbnN0YW50aWF0ZWQgd2l0aAotLy8gSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoU2VxdWVuY2VOYW1lLCBUZXN0Q2FzZU5hbWUsIGdlbmVyYXRvcikgbXVzdCBi
ZSBuYW1lZAotLy8gU2VxdWVuY2VOYW1lL1Rlc3RDYXNlTmFtZS5UZXN0TmFtZS9pLCB3aGVyZSBp
IGlzIHRoZSAwLWJhc2VkIGluZGV4IG9mIHRoZQotLy8gc2VxdWVuY2UgZWxlbWVudCB1c2VkIHRv
IGluc3RhbnRpYXRlIHRoZSB0ZXN0LgotY2xhc3MgTmFtaW5nVGVzdCA6IHB1YmxpYyBUZXN0V2l0
aFBhcmFtPGludD4ge307Ci0KLVRFU1RfUChOYW1pbmdUZXN0LCBUZXN0c0FyZU5hbWVkQXBwcm9w
cmlhdGVseSkgewotICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8g
PQotICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3Rf
aW5mbygpOwotCi0gIEVYUEVDVF9TVFJFUSgiWmVyb1RvRml2ZVNlcXVlbmNlL05hbWluZ1Rlc3Qi
LCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOwotCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cg
PDwgIlRlc3RzQXJlTmFtZWRBcHByb3ByaWF0ZWx5LyIgPDwgR2V0UGFyYW0oKTsKLSAgRVhQRUNU
X1NUUkVRKG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpLCB0ZXN0X2luZm8tPm5hbWUoKSk7Ci19Ci0K
LUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFplcm9Ub0ZpdmVTZXF1ZW5jZSwgTmFtaW5nVGVzdCwg
UmFuZ2UoMCwgNSkpOwotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLVRFU1Qo
Q29tcGlsZVRlc3QsIENvbWJpbmVJc0RlZmluZWRPbmx5V2hlbkd0ZXN0SGFzUGFyYW1UZXN0SXNE
ZWZpbmVkKSB7Ci0jaWYgR1RFU1RfSEFTX0NPTUJJTkUgJiYgIUdURVNUX0hBU19QQVJBTV9URVNU
Ci0gIEZBSUwoKSA8PCAiR1RFU1RfSEFTX0NPTUJJTkUgaXMgZGVmaW5lZCB3aGlsZSBHVEVTVF9I
QVNfUEFSQU1fVEVTVCBpcyBub3RcbiIKLSNlbmRpZgotfQotCi1pbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqKmFyZ3YpIHsKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotICAvLyBVc2VkIGluIFRl
c3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UuCi0gIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChU
ZXN0R2VuZXJhdGlvblRlc3Q6OkVudmlyb25tZW50OjpJbnN0YW5jZSgpKTsKLSAgLy8gVXNlZCBp
biBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCB0ZXN0IGNhc2UuIFRlc3RzIHRoYXQgdGhlIHVwZGF0
ZWQgdmFsdWUKLSAgLy8gd2lsbCBiZSBwaWNrZWQgdXAgZm9yIGluc3RhbnRpYXRpbmcgdGVzdHMg
aW4gR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QuCi0gIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0Ojpz
ZXRfcGFyYW1fdmFsdWUoMSk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLSAg
Ojp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSNpZiBHVEVTVF9IQVNf
UEFSQU1fVEVTVAotICAvLyBVc2VkIGluIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0IHRlc3QgY2Fz
ZS4gVGVzdHMgdGhhdCB2YWx1ZSB1cGRhdGVkCi0gIC8vIGhlcmUgd2lsbCBOT1QgYmUgdXNlZCBm
b3IgaW5zdGFudGlhdGluZyB0ZXN0cyBpbgotICAvLyBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdC4K
LSAgR2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnNldF9wYXJhbV92YWx1ZSgyKTsKLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0
X3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90
ZXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3Zjk0OTM2MTM3ZGZjNWYzZjJk
NTdmYTQwZGNhZjdhMTVjYjZiNWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0
X3Rlc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4
LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8v
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3JzOiB2bGFkbEBnb29nbGUu
Y29tIChWbGFkIExvc2V2KQotLy8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3Jr
IChHb29nbGUgVGVzdCkKLS8vCi0vLyBUaGlzIGhlYWRlciBmaWxlIHByb3ZpZGVzIGNsYXNzZXMg
YW5kIGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkKLS8vIGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0
IGl0c2VsZi4KLQotI2lmbmRlZiBHVEVTVF9URVNUX0dURVNUX1BBUkFNX1RFU1RfVEVTVF9IXwot
I2RlZmluZSBHVEVTVF9URVNUX0dURVNUX1BBUkFNX1RFU1RfVEVTVF9IXwotCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLS8vIFRlc3QgZml4
dHVyZSBmb3IgdGVzdGluZyBkZWZpbml0aW9uIGFuZCBpbnN0YW50aWF0aW9uIG9mIGEgdGVzdAot
Ly8gaW4gc2VwYXJhdGUgdHJhbnNsYXRpb24gdW5pdHMuCi1jbGFzcyBFeHRlcm5hbEluc3RhbnRp
YXRpb25UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHt9OwotCi0v
LyBUZXN0IGZpeHR1cmUgZm9yIHRlc3RpbmcgaW5zdGFudGlhdGlvbiBvZiBhIHRlc3QgaW4gbXVs
dGlwbGUKLS8vIHRyYW5zbGF0aW9uIHVuaXRzLgotY2xhc3MgSW5zdGFudGlhdGlvbkluTXVsdGlw
bGVUcmFuc2xhaW9uVW5pdHNUZXN0Ci0gICAgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBh
cmFtPGludD4ge307Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotI2VuZGlm
ICAvLyBHVEVTVF9URVNUX0dURVNUX1BBUkFNX1RFU1RfVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wb3J0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzcyNTg2MDJmYTVjZjVhNzc5OTQ3Y2Q0MjdlMjBlOTA5ZmM5MjU4ZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDEw
MTggKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0Ogot
Ly8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0v
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0v
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ly8KLS8vIEF1dGhvcnM6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpLCB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRoaXMgZmlsZSB0ZXN0cyB0aGUgaW50ZXJuYWwg
Y3Jvc3MtcGxhdGZvcm0gc3VwcG9ydCB1dGlsaXRpZXMuCi0KLSNpbmNsdWRlIDxndGVzdC9pbnRl
cm5hbC9ndGVzdC1wb3J0Lmg+Ci0KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jaWYgR1RFU1RfT1Nf
TUFDCi0jaW5jbHVkZSA8dGltZS5oPgotI2VuZGlmICAvLyBHVEVTVF9PU19NQUMKLQotI2luY2x1
ZGUgPHV0aWxpdHk+ICAvLyBGb3Igc3RkOjpwYWlyIGFuZCBzdGQ6Om1ha2VfcGFpci4KLQotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+Ci0KLS8v
IEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBU
ZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRl
cm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBl
cnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRh
bGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8gaGlzIGNvZGUuCi0jZGVm
aW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFs
LWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi11c2luZyBzdGQ6Om1ha2Vf
cGFpcjsKLXVzaW5nIHN0ZDo6cGFpcjsKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNl
IGludGVybmFsIHsKLQotLy8gVGVzdHMgdGhhdCB0aGUgZWxlbWVudF90eXBlIHR5cGVkZWYgaXMg
YXZhaWxhYmxlIGluIHNjb3BlZF9wdHIgYW5kIHJlZmVycwotLy8gdG8gdGhlIHBhcmFtZXRlciB0
eXBlLgotVEVTVChTY29wZWRQdHJUZXN0LCBEZWZpbmVzRWxlbWVudFR5cGUpIHsKLSAgU3RhdGlj
QXNzZXJ0VHlwZUVxPGludCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVkX3B0cjxpbnQ+Ojpl
bGVtZW50X3R5cGU+KCk7Ci19Ci0KLS8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEltcGxlbWVu
dCBUSEUgUkVTVCBvZiBzY29wZWRfcHRyIHRlc3RzLgotCi1URVNUKEd0ZXN0Q2hlY2tTeW50YXhU
ZXN0LCBCZWhhdmVzTGlrZUFTaW5nbGVTdGF0ZW1lbnQpIHsKLSAgaWYgKEFsd2F5c0ZhbHNlKCkp
Ci0gICAgR1RFU1RfQ0hFQ0tfKGZhbHNlKSA8PCAiVGhpcyBzaG91bGQgbmV2ZXIgYmUgZXhlY3V0
ZWQ7ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJJdCdzIGEgY29tcGlsYXRpb24gdGVz
dCBvbmx5LiI7Ci0KLSAgaWYgKEFsd2F5c1RydWUoKSkKLSAgICBHVEVTVF9DSEVDS18odHJ1ZSk7
Ci0gIGVsc2UKLSAgICA7ICAvLyBOT0xJTlQKLQotICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAgICA7
ICAvLyBOT0xJTlQKLSAgZWxzZQotICAgIEdURVNUX0NIRUNLXyh0cnVlKSA8PCAiIjsKLX0KLQot
VEVTVChHdGVzdENoZWNrU3ludGF4VGVzdCwgV29ya3NXaXRoU3dpdGNoKSB7Ci0gIHN3aXRjaCAo
MCkgewotICAgIGNhc2UgMToKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBHVEVT
VF9DSEVDS18odHJ1ZSk7Ci0gIH0KLQotICBzd2l0Y2goMCkKLSAgICBjYXNlIDA6Ci0gICAgICBH
VEVTVF9DSEVDS18odHJ1ZSkgPDwgIkNoZWNrIGZhaWxlZCBpbiBzd2l0Y2ggY2FzZSI7Ci19Ci0K
LSNpZiBHVEVTVF9PU19NQUMKLXZvaWQqIFRocmVhZEZ1bmModm9pZCogZGF0YSkgewotICBwdGhy
ZWFkX211dGV4X3QqIG11dGV4ID0gc3RhdGljX2Nhc3Q8cHRocmVhZF9tdXRleF90Kj4oZGF0YSk7
Ci0gIHB0aHJlYWRfbXV0ZXhfbG9jayhtdXRleCk7Ci0gIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKG11
dGV4KTsKLSAgcmV0dXJuIE5VTEw7Ci19Ci0KLVRFU1QoR2V0VGhyZWFkQ291bnRUZXN0LCBSZXR1
cm5zQ29ycmVjdFZhbHVlKSB7Ci0gIEVYUEVDVF9FUSgxVSwgR2V0VGhyZWFkQ291bnQoKSk7Ci0g
IHB0aHJlYWRfbXV0ZXhfdCBtdXRleDsKLSAgcHRocmVhZF9hdHRyX3QgIGF0dHI7Ci0gIHB0aHJl
YWRfdCAgICAgICB0aHJlYWRfaWQ7Ci0KLSAgLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogdHVy
biBtdXRleCBpbnRvIGludGVybmFsOjpNdXRleCBmb3IgYXV0b21hdGljCi0gIC8vIGRlc3RydWN0
aW9uLgotICBwdGhyZWFkX211dGV4X2luaXQoJm11dGV4LCBOVUxMKTsKLSAgcHRocmVhZF9tdXRl
eF9sb2NrKCZtdXRleCk7Ci0gIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0dHJfaW5pdCgmYXR0cikp
OwotICBBU1NFUlRfRVEoMCwgcHRocmVhZF9hdHRyX3NldGRldGFjaHN0YXRlKCZhdHRyLCBQVEhS
RUFEX0NSRUFURV9KT0lOQUJMRSkpOwotCi0gIGNvbnN0IGludCBzdGF0dXMgPSBwdGhyZWFkX2Ny
ZWF0ZSgmdGhyZWFkX2lkLCAmYXR0ciwgJlRocmVhZEZ1bmMsICZtdXRleCk7Ci0gIEFTU0VSVF9F
USgwLCBwdGhyZWFkX2F0dHJfZGVzdHJveSgmYXR0cikpOwotICBBU1NFUlRfRVEoMCwgc3RhdHVz
KTsKLSAgRVhQRUNUX0VRKDJVLCBHZXRUaHJlYWRDb3VudCgpKTsKLSAgcHRocmVhZF9tdXRleF91
bmxvY2soJm11dGV4KTsKLQotICB2b2lkKiBkdW1teTsKLSAgQVNTRVJUX0VRKDAsIHB0aHJlYWRf
am9pbih0aHJlYWRfaWQsICZkdW1teSkpOwotCi0gIC8vIE1hY09TIFggbWF5IG5vdCBpbW1lZGlh
dGVseSByZXBvcnQgdGhlIHVwZGF0ZWQgdGhyZWFkIGNvdW50IGFmdGVyCi0gIC8vIGpvaW5pbmcg
YSB0aHJlYWQsIGNhdXNpbmcgZmxha2luZXNzIGluIHRoaXMgdGVzdC4gVG8gY291bnRlciB0aGF0
LCB3ZQotICAvLyB3YWl0IGZvciB1cCB0byAuNSBzZWNvbmRzIGZvciB0aGUgT1MgdG8gcmVwb3J0
IHRoZSBjb3JyZWN0IHZhbHVlLgotICBmb3IgKGludCBpID0gMDsgaSA8IDU7ICsraSkgewotICAg
IGlmIChHZXRUaHJlYWRDb3VudCgpID09IDEpCi0gICAgICBicmVhazsKLQotICAgIFNsZWVwTWls
bGlzZWNvbmRzKDEwMCk7Ci0gIH0KLSAgRVhQRUNUX0VRKDFVLCBHZXRUaHJlYWRDb3VudCgpKTsK
LSAgcHRocmVhZF9tdXRleF9kZXN0cm95KCZtdXRleCk7Ci19Ci0jZWxzZQotVEVTVChHZXRUaHJl
YWRDb3VudFRlc3QsIFJldHVybnNaZXJvV2hlblVuYWJsZVRvQ291bnRUaHJlYWRzKSB7Ci0gIEVY
UEVDVF9FUSgwVSwgR2V0VGhyZWFkQ291bnQoKSk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX09TX01B
QwotCi1URVNUKEd0ZXN0Q2hlY2tEZWF0aFRlc3QsIERpZXNXaXRoQ29ycmVjdE91dHB1dE9uRmFp
bHVyZSkgewotICBjb25zdCBib29sIGFfZmFsc2VfY29uZGl0aW9uID0gZmFsc2U7Ci0gIGNvbnN0
IGNoYXIgcmVnZXhbXSA9Ci0jaWZkZWYgX01TQ19WRVIKLSAgICAgImd0ZXN0LXBvcnRfdGVzdFxc
LmNjXFwoXFxkK1xcKToiCi0jZWxzZQotICAgICAiZ3Rlc3QtcG9ydF90ZXN0XFwuY2M6WzAtOV0r
IgotI2VuZGlmICAvLyBfTVNDX1ZFUgotICAgICAiLiphX2ZhbHNlX2NvbmRpdGlvbi4qRXh0cmEg
aW5mby4qIjsKLQotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKEdURVNUX0NIRUNLXyhhX2Zh
bHNlX2NvbmRpdGlvbikgPDwgIkV4dHJhIGluZm8iLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlZ2V4KTsKLX0KLQotI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLVRFU1QoR3Rlc3RD
aGVja0RlYXRoVGVzdCwgTGl2ZXNTaWxlbnRseU9uU3VjY2VzcykgewotICBFWFBFQ1RfRVhJVCh7
Ci0gICAgICBHVEVTVF9DSEVDS18odHJ1ZSkgPDwgIkV4dHJhIGluZm8iOwotICAgICAgOjpzdGQ6
OmNlcnIgPDwgIlN1Y2Nlc3NcbiI7Ci0gICAgICBleGl0KDApOyB9LAotICAgICAgOjp0ZXN0aW5n
OjpFeGl0ZWRXaXRoQ29kZSgwKSwgIlN1Y2Nlc3MiKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9I
QVNfREVBVEhfVEVTVAotCi0jaWYgR1RFU1RfVVNFU19QT1NJWF9SRQotCi0jaWYgR1RFU1RfSEFT
X1RZUEVEX1RFU1QKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFN0cj4KLWNsYXNzIFJFVGVzdCA6IHB1
YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307Ci0KLS8vIERlZmluZXMgU3RyaW5nVHlwZXMgYXMgdGhl
IGxpc3Qgb2YgYWxsIHN0cmluZyB0eXBlcyB0aGF0IGNsYXNzIFJFCi0vLyBzdXBwb3J0cy4KLXR5
cGVkZWYgdGVzdGluZzo6VHlwZXM8Ci0gICAgOjpzdGQ6OnN0cmluZywKLSNpZiBHVEVTVF9IQVNf
R0xPQkFMX1NUUklORwotICAgIDo6c3RyaW5nLAotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFM
X1NUUklORwotICAgIGNvbnN0IGNoYXIqPiBTdHJpbmdUeXBlczsKLQotVFlQRURfVEVTVF9DQVNF
KFJFVGVzdCwgU3RyaW5nVHlwZXMpOwotCi0vLyBUZXN0cyBSRSdzIGltcGxpY2l0IGNvbnN0cnVj
dG9ycy4KLVRZUEVEX1RFU1QoUkVUZXN0LCBJbXBsaWNpdENvbnN0cnVjdG9yV29ya3MpIHsKLSAg
Y29uc3QgUkUgZW1wdHkoVHlwZVBhcmFtKCIiKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgZW1wdHku
cGF0dGVybigpKTsKLQotICBjb25zdCBSRSBzaW1wbGUoVHlwZVBhcmFtKCJoZWxsbyIpKTsKLSAg
RVhQRUNUX1NUUkVRKCJoZWxsbyIsIHNpbXBsZS5wYXR0ZXJuKCkpOwotCi0gIGNvbnN0IFJFIG5v
cm1hbChUeXBlUGFyYW0oIi4qKFxcdyspIikpOwotICBFWFBFQ1RfU1RSRVEoIi4qKFxcdyspIiwg
bm9ybWFsLnBhdHRlcm4oKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUkUncyBjb25zdHJ1Y3RvcnMg
cmVqZWN0IGludmFsaWQgcmVndWxhciBleHByZXNzaW9ucy4KLVRZUEVEX1RFU1QoUkVUZXN0LCBS
ZWplY3RzSW52YWxpZFJlZ2V4KSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBj
b25zdCBSRSBpbnZhbGlkKFR5cGVQYXJhbSgiPyIpKTsKLSAgfSwgIlwiP1wiIGlzIG5vdCBhIHZh
bGlkIFBPU0lYIEV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbi4iKTsKLX0KLQotLy8gVGVzdHMg
UkU6OkZ1bGxNYXRjaCgpLgotVFlQRURfVEVTVChSRVRlc3QsIEZ1bGxNYXRjaFdvcmtzKSB7Ci0g
IGNvbnN0IFJFIGVtcHR5KFR5cGVQYXJhbSgiIikpOwotICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1h
dGNoKFR5cGVQYXJhbSgiIiksIGVtcHR5KSk7Ci0gIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNo
KFR5cGVQYXJhbSgiYSIpLCBlbXB0eSkpOwotCi0gIGNvbnN0IFJFIHJlKFR5cGVQYXJhbSgiYS4q
eiIpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oImF6IiksIHJlKSk7
Ci0gIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJheHl6IiksIHJlKSk7Ci0g
IEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYmF6IiksIHJlKSk7Ci0gIEVY
UEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYXp5IiksIHJlKSk7Ci19Ci0KLS8v
IFRlc3RzIFJFOjpQYXJ0aWFsTWF0Y2goKS4KLVRZUEVEX1RFU1QoUkVUZXN0LCBQYXJ0aWFsTWF0
Y2hXb3JrcykgewotICBjb25zdCBSRSBlbXB0eShUeXBlUGFyYW0oIiIpKTsKLSAgRVhQRUNUX1RS
VUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oIiIpLCBlbXB0eSkpOwotICBFWFBFQ1RfVFJV
RShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiYSIpLCBlbXB0eSkpOwotCi0gIGNvbnN0IFJF
IHJlKFR5cGVQYXJhbSgiYS4qeiIpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChU
eXBlUGFyYW0oImF6IiksIHJlKSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goVHlw
ZVBhcmFtKCJheHl6IiksIHJlKSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goVHlw
ZVBhcmFtKCJiYXoiKSwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBl
UGFyYW0oImF6eSIpLCByZSkpOwotICBFWFBFQ1RfRkFMU0UoUkU6OlBhcnRpYWxNYXRjaChUeXBl
UGFyYW0oInp6YSIpLCByZSkpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNU
Ci0KLSNlbGlmIEdURVNUX1VTRVNfU0lNUExFX1JFCi0KLVRFU1QoSXNJblNldFRlc3QsIE51bENo
YXJJc05vdEluQW55U2V0KSB7Ci0gIEVYUEVDVF9GQUxTRShJc0luU2V0KCdcMCcsICIiKSk7Ci0g
IEVYUEVDVF9GQUxTRShJc0luU2V0KCdcMCcsICJcMCIpKTsKLSAgRVhQRUNUX0ZBTFNFKElzSW5T
ZXQoJ1wwJywgImEiKSk7Ci19Ci0KLVRFU1QoSXNJblNldFRlc3QsIFdvcmtzRm9yTm9uTnVsQ2hh
cnMpIHsKLSAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ2EnLCAiQWIiKSk7Ci0gIEVYUEVDVF9GQUxT
RShJc0luU2V0KCdjJywgIiIpKTsKLQotICBFWFBFQ1RfVFJVRShJc0luU2V0KCdiJywgImJjZCIp
KTsKLSAgRVhQRUNUX1RSVUUoSXNJblNldCgnYicsICJhYiIpKTsKLX0KLQotVEVTVChJc0RpZ2l0
VGVzdCwgSXNGYWxzZUZvck5vbkRpZ2l0KSB7Ci0gIEVYUEVDVF9GQUxTRShJc0RpZ2l0KCdcMCcp
KTsKLSAgRVhQRUNUX0ZBTFNFKElzRGlnaXQoJyAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0RpZ2l0
KCcrJykpOwotICBFWFBFQ1RfRkFMU0UoSXNEaWdpdCgnLScpKTsKLSAgRVhQRUNUX0ZBTFNFKElz
RGlnaXQoJy4nKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0RpZ2l0KCdhJykpOwotfQotCi1URVNUKElz
RGlnaXRUZXN0LCBJc1RydWVGb3JEaWdpdCkgewotICBFWFBFQ1RfVFJVRShJc0RpZ2l0KCcwJykp
OwotICBFWFBFQ1RfVFJVRShJc0RpZ2l0KCcxJykpOwotICBFWFBFQ1RfVFJVRShJc0RpZ2l0KCc1
JykpOwotICBFWFBFQ1RfVFJVRShJc0RpZ2l0KCc5JykpOwotfQotCi1URVNUKElzUHVuY3RUZXN0
LCBJc0ZhbHNlRm9yTm9uUHVuY3QpIHsKLSAgRVhQRUNUX0ZBTFNFKElzUHVuY3QoJ1wwJykpOwot
ICBFWFBFQ1RfRkFMU0UoSXNQdW5jdCgnICcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzUHVuY3QoJ1xu
JykpOwotICBFWFBFQ1RfRkFMU0UoSXNQdW5jdCgnYScpKTsKLSAgRVhQRUNUX0ZBTFNFKElzUHVu
Y3QoJzAnKSk7Ci19Ci0KLVRFU1QoSXNQdW5jdFRlc3QsIElzVHJ1ZUZvclB1bmN0KSB7Ci0gIGZv
ciAoY29uc3QgY2hhciogcCA9ICJeLSFcIiMkJSYnKCkqKywuLzo7PD0+P0BbXFxdX2B7fH1+Ijsg
KnA7IHArKykgewotICAgIEVYUEVDVF9QUkVEMShJc1B1bmN0LCAqcCk7Ci0gIH0KLX0KLQotVEVT
VChJc1JlcGVhdFRlc3QsIElzRmFsc2VGb3JOb25SZXBlYXRDaGFyKSB7Ci0gIEVYUEVDVF9GQUxT
RShJc1JlcGVhdCgnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1JlcGVhdCgnICcpKTsKLSAgRVhQ
RUNUX0ZBTFNFKElzUmVwZWF0KCdhJykpOwotICBFWFBFQ1RfRkFMU0UoSXNSZXBlYXQoJzEnKSk7
Ci0gIEVYUEVDVF9GQUxTRShJc1JlcGVhdCgnLScpKTsKLX0KLQotVEVTVChJc1JlcGVhdFRlc3Qs
IElzVHJ1ZUZvclJlcGVhdENoYXIpIHsKLSAgRVhQRUNUX1RSVUUoSXNSZXBlYXQoJz8nKSk7Ci0g
IEVYUEVDVF9UUlVFKElzUmVwZWF0KCcqJykpOwotICBFWFBFQ1RfVFJVRShJc1JlcGVhdCgnKycp
KTsKLX0KLQotVEVTVChJc1doaXRlU3BhY2VUZXN0LCBJc0ZhbHNlRm9yTm9uV2hpdGVTcGFjZSkg
ewotICBFWFBFQ1RfRkFMU0UoSXNXaGl0ZVNwYWNlKCdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElz
V2hpdGVTcGFjZSgnYScpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV2hpdGVTcGFjZSgnMScpKTsKLSAg
RVhQRUNUX0ZBTFNFKElzV2hpdGVTcGFjZSgnKycpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV2hpdGVT
cGFjZSgnXycpKTsKLX0KLQotVEVTVChJc1doaXRlU3BhY2VUZXN0LCBJc1RydWVGb3JXaGl0ZVNw
YWNlKSB7Ci0gIEVYUEVDVF9UUlVFKElzV2hpdGVTcGFjZSgnICcpKTsKLSAgRVhQRUNUX1RSVUUo
SXNXaGl0ZVNwYWNlKCdcbicpKTsKLSAgRVhQRUNUX1RSVUUoSXNXaGl0ZVNwYWNlKCdccicpKTsK
LSAgRVhQRUNUX1RSVUUoSXNXaGl0ZVNwYWNlKCdcdCcpKTsKLSAgRVhQRUNUX1RSVUUoSXNXaGl0
ZVNwYWNlKCdcdicpKTsKLSAgRVhQRUNUX1RSVUUoSXNXaGl0ZVNwYWNlKCdcZicpKTsKLX0KLQot
VEVTVChJc1dvcmRDaGFyVGVzdCwgSXNGYWxzZUZvck5vbldvcmRDaGFyKSB7Ci0gIEVYUEVDVF9G
QUxTRShJc1dvcmRDaGFyKCdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV29yZENoYXIoJysnKSk7
Ci0gIEVYUEVDVF9GQUxTRShJc1dvcmRDaGFyKCcuJykpOwotICBFWFBFQ1RfRkFMU0UoSXNXb3Jk
Q2hhcignICcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV29yZENoYXIoJ1xuJykpOwotfQotCi1URVNU
KElzV29yZENoYXJUZXN0LCBJc1RydWVGb3JMZXR0ZXIpIHsKLSAgRVhQRUNUX1RSVUUoSXNXb3Jk
Q2hhcignYScpKTsKLSAgRVhQRUNUX1RSVUUoSXNXb3JkQ2hhcignYicpKTsKLSAgRVhQRUNUX1RS
VUUoSXNXb3JkQ2hhcignQScpKTsKLSAgRVhQRUNUX1RSVUUoSXNXb3JkQ2hhcignWicpKTsKLX0K
LQotVEVTVChJc1dvcmRDaGFyVGVzdCwgSXNUcnVlRm9yRGlnaXQpIHsKLSAgRVhQRUNUX1RSVUUo
SXNXb3JkQ2hhcignMCcpKTsKLSAgRVhQRUNUX1RSVUUoSXNXb3JkQ2hhcignMScpKTsKLSAgRVhQ
RUNUX1RSVUUoSXNXb3JkQ2hhcignNycpKTsKLSAgRVhQRUNUX1RSVUUoSXNXb3JkQ2hhcignOScp
KTsKLX0KLQotVEVTVChJc1dvcmRDaGFyVGVzdCwgSXNUcnVlRm9yVW5kZXJzY29yZSkgewotICBF
WFBFQ1RfVFJVRShJc1dvcmRDaGFyKCdfJykpOwotfQotCi1URVNUKElzVmFsaWRFc2NhcGVUZXN0
LCBJc0ZhbHNlRm9yTm9uUHJpbnRhYmxlKSB7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBl
KCdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJ1wwMDcnKSk7Ci19Ci0KLVRF
U1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzRmFsc2VGb3JEaWdpdCkgewotICBFWFBFQ1RfRkFMU0Uo
SXNWYWxpZEVzY2FwZSgnMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJzknKSk7
Ci19Ci0KLVRFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzRmFsc2VGb3JXaGl0ZVNwYWNlKSB7Ci0g
IEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCcgJykpOwotICBFWFBFQ1RfRkFMU0UoSXNWYWxp
ZEVzY2FwZSgnXG4nKSk7Ci19Ci0KLVRFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzRmFsc2VGb3JT
b21lTGV0dGVyKSB7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdhJykpOwotICBFWFBF
Q1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnWicpKTsKLX0KLQotVEVTVChJc1ZhbGlkRXNjYXBlVGVz
dCwgSXNUcnVlRm9yUHVuY3QpIHsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnLicpKTsK
LSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnLScpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxp
ZEVzY2FwZSgnXicpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnJCcpKTsKLSAgRVhQ
RUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnKCcpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2Fw
ZSgnXScpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgneycpKTsKLSAgRVhQRUNUX1RS
VUUoSXNWYWxpZEVzY2FwZSgnfCcpKTsKLX0KLQotVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNU
cnVlRm9yU29tZUxldHRlcikgewotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdkJykpOwot
ICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdEJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlk
RXNjYXBlKCdzJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdTJykpOwotICBFWFBF
Q1RfVFJVRShJc1ZhbGlkRXNjYXBlKCd3JykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBl
KCdXJykpOwotfQotCi1URVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRQdW5jdCkgewot
ICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdcXCcsICdcMCcpKTsKLSAgRVhQ
RUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXFwnLCAnICcpKTsKLSAgRVhQRUNUX0ZB
TFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXycsICcuJykpOwotICBFWFBFQ1RfRkFMU0UoQXRv
bU1hdGNoZXNDaGFyKHRydWUsICcuJywgJ2EnKSk7Ci0KLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNo
ZXNDaGFyKHRydWUsICdcXCcsICdcXCcpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFy
KHRydWUsICdfJywgJ18nKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
KycsICcrJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJy4nLCAnLicp
KTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX2QpIHsKLSAgRVhQRUNU
X0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICdhJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICdkJywgJy4nKSk7Ci0KLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXND
aGFyKHRydWUsICdkJywgJzAnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVl
LCAnZCcsICc5JykpOwotfQotCi1URVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfRCkg
ewotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJzAnKSk7Ci0gIEVY
UEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0QnLCAnOScpKTsKLQotICBFWFBFQ1Rf
VFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0QnLCAnXDAnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0
b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcsICdhJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ0QnLCAnLScpKTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBF
c2NhcGVkX3MpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICdc
MCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICdhJykpOwot
ICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJy4nKSk7Ci0gIEVYUEVD
VF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnOScpKTsKLQotICBFWFBFQ1RfVFJV
RShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnICcpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICdzJywgJ1xuJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ3MnLCAnXHQnKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNj
YXBlZF9TKSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnICcp
KTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICdccicpKTsKLQot
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnXDAnKSk7Ci0gIEVYUEVD
VF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICdhJykpOwotICBFWFBFQ1RfVFJVRShB
dG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnOScpKTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0No
YXJUZXN0LCBFc2NhcGVkX3cpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVl
LCAndycsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycs
ICcrJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJyAnKSk7
Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnXG4nKSk7Ci0KLSAg
RVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJzAnKSk7Ci0gIEVYUEVDVF9U
UlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdiJykpOwotICBFWFBFQ1RfVFJVRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnQycpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXND
aGFyKHRydWUsICd3JywgJ18nKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNj
YXBlZF9XKSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnQScp
KTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICdiJykpOwotICBF
WFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJzknKSk7Ci0gIEVYUEVDVF9G
QUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnXycpKTsKLQotICBFWFBFQ1RfVFJVRShB
dG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnXDAnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAnVycsICcqJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ1cnLCAnXG4nKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBl
ZFdoaXRlU3BhY2UpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZics
ICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZicsICdcbicp
KTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnbicsICdcMCcpKTsKLSAg
RVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnbicsICdccicpKTsKLSAgRVhQRUNU
X0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncicsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncicsICdhJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICd0JywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICd0JywgJ3QnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ3YnLCAnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3Yn
LCAnXGYnKSk7Ci0KLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdmJywgJ1xm
JykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ24nLCAnXG4nKSk7Ci0g
IEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncicsICdccicpKTsKLSAgRVhQRUNU
X1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd0JywgJ1x0JykpOwotICBFWFBFQ1RfVFJVRShB
dG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3YnLCAnXHYnKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXND
aGFyVGVzdCwgVW5lc2NhcGVkRG90KSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIo
ZmFsc2UsICcuJywgJ1xuJykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxz
ZSwgJy4nLCAnXDAnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4n
LCAnLicpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnLicsICdhJykp
OwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICcuJywgJyAnKSk7Ci19Ci0K
LVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgVW5lc2NhcGVkQ2hhcikgewotICBFWFBFQ1RfRkFM
U0UoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnYScsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0
b21NYXRjaGVzQ2hhcihmYWxzZSwgJ2EnLCAnYicpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRj
aGVzQ2hhcihmYWxzZSwgJyQnLCAnYScpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0No
YXIoZmFsc2UsICckJywgJyQnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxz
ZSwgJzUnLCAnNScpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnWics
ICdaJykpOwotfQotCi1URVNUKFZhbGlkYXRlUmVnZXhUZXN0LCBHZW5lcmF0ZXNGYWlsdXJlQW5k
UmV0dXJuc0ZhbHNlRm9ySW52YWxpZCkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NF
UlRfRkFMU0UoVmFsaWRhdGVSZWdleChOVUxMKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICJOVUxMIGlzIG5vdCBhIHZhbGlkIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24iKTsKLSAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoCi0gICAgICBBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgi
YVxcIikpLAotICAgICAgIlN5bnRheCBlcnJvciBhdCBpbmRleCAxIGluIHNpbXBsZSByZWd1bGFy
IGV4cHJlc3Npb24gXCJhXFxcIjogIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VS
VF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJhXFwiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICInXFwnIGNhbm5vdCBhcHBlYXIgYXQgdGhlIGVuZCIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiXFxuXFwiKSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICInXFwnIGNhbm5vdCBhcHBlYXIgYXQgdGhlIGVuZCIpOwotICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiXFxzXFxoYiIpKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZXNjYXBlIHNlcXVlbmNlIFwiXFxo
XCIiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVn
ZXgoIl5eIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJ14nIGNhbiBvbmx5IGFwcGVh
ciBhdCB0aGUgYmVnaW5uaW5nIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9G
QUxTRShWYWxpZGF0ZVJlZ2V4KCIuKl5iIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAi
J14nIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgYmVnaW5uaW5nIik7Ci0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCIkJCIpKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIickJyBjYW4gb25seSBhcHBlYXIgYXQgdGhlIGVuZCIpOwotICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiXiRhIikpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAiJyQnIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgZW5k
Iik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4
KCJhKGIiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInKCcgaXMgdW5zdXBwb3J0ZWQi
KTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgo
ImFiKSIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIicpJyBpcyB1bnN1cHBvcnRlZCIp
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgi
W2FiIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJ1snIGlzIHVuc3VwcG9ydGVkIik7
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJh
ezIiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIneycgaXMgdW5zdXBwb3J0ZWQiKTsK
LSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIj8i
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInPycgY2FuIG9ubHkgZm9sbG93IGEgcmVw
ZWF0YWJsZSB0b2tlbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0Uo
VmFsaWRhdGVSZWdleCgiXioiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInKicgY2Fu
IG9ubHkgZm9sbG93IGEgcmVwZWF0YWJsZSB0b2tlbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiNSorIikpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAiJysnIGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVhdGFibGUgdG9rZW4iKTsKLX0K
LQotVEVTVChWYWxpZGF0ZVJlZ2V4VGVzdCwgUmV0dXJuc1RydWVGb3JWYWxpZCkgewotICBFWFBF
Q1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCIiKSk7Ci0gIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgo
ImEiKSk7Ci0gIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIi4qIikpOwotICBFWFBFQ1RfVFJV
RShWYWxpZGF0ZVJlZ2V4KCJeYV8rIikpOwotICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCJe
YVxcdFxcJj8iKSk7Ci0gIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIjA5KiQiKSk7Ci0gIEVY
UEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIl5aJCIpKTsKLSAgRVhQRUNUX1RSVUUoVmFsaWRhdGVS
ZWdleCgiYVxcXlpcXCRcXChcXClcXHxcXFtcXF1cXHtcXH0iKSk7Ci19Ci0KLVRFU1QoTWF0Y2hS
ZXBldGl0aW9uQW5kUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc0Zvclplcm9Pck9uZSkgewotICBFWFBF
Q1RfRkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICdhJywgJz8nLCAi
YSIsICJiYSIpKTsKLSAgLy8gUmVwZWF0aW5nIG1vcmUgdGhhbiBvbmNlLgotICBFWFBFQ1RfRkFM
U0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICdhJywgJz8nLCAiYiIsICJh
YWIiKSk7Ci0KLSAgLy8gUmVwZWF0aW5nIHplcm8gdGltZXMuCi0gIEVYUEVDVF9UUlVFKE1hdGNo
UmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImIiLCAiYmEiKSk7Ci0g
IC8vIFJlcGVhdGluZyBvbmNlLgotICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdl
eEF0SGVhZChmYWxzZSwgJ2EnLCAnPycsICJiIiwgImFiIikpOwotICBFWFBFQ1RfVFJVRShNYXRj
aFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJyMnLCAnPycsICIuIiwgIiMjIikpOwot
fQotCi1URVNUKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NGb3JaZXJv
T3JNYW55KSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChm
YWxzZSwgJy4nLCAnKicsICJhJCIsICJiYWFiIikpOwotCi0gIC8vIFJlcGVhdGluZyB6ZXJvIHRp
bWVzLgotICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwg
Jy4nLCAnKicsICJiIiwgImJjIikpOwotICAvLyBSZXBlYXRpbmcgb25jZS4KLSAgRVhQRUNUX1RS
VUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJyonLCAiYiIsICJh
YmMiKSk7Ci0gIC8vIFJlcGVhdGluZyBtb3JlIHRoYW4gb25jZS4KLSAgRVhQRUNUX1RSVUUoTWF0
Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQodHJ1ZSwgJ3cnLCAnKicsICItIiwgImFiXzEtZyIp
KTsKLX0KLQotVEVTVChNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZFRlc3QsIFdvcmtzRm9y
T25lT3JNYW55KSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVh
ZChmYWxzZSwgJy4nLCAnKycsICJhJCIsICJiYWFiIikpOwotICAvLyBSZXBlYXRpbmcgemVybyB0
aW1lcy4KLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNl
LCAnLicsICcrJywgImIiLCAiYmMiKSk7Ci0KLSAgLy8gUmVwZWF0aW5nIG9uY2UuCi0gIEVYUEVD
VF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcrJywgImIi
LCAiYWJjIikpOwotICAvLyBSZXBlYXRpbmcgbW9yZSB0aGFuIG9uY2UuCi0gIEVYUEVDVF9UUlVF
KE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKHRydWUsICd3JywgJysnLCAiLSIsICJhYl8x
LWciKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIFJldHVybnNUcnVlRm9yRW1w
dHlSZWdleCkgewotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCIiLCAiIikpOwotICBF
WFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCIiLCAiYWIiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hS
ZWdleEF0SGVhZFRlc3QsIFdvcmtzV2hlbkRvbGxhcklzSW5SZWdleCkgewotICBFWFBFQ1RfRkFM
U0UoTWF0Y2hSZWdleEF0SGVhZCgiJCIsICJhIikpOwotCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVn
ZXhBdEhlYWQoIiQiLCAiIikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJhJCIs
ICJhIikpOwotfQotCi1URVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc1doZW5SZWdleFN0
YXJ0c1dpdGhFc2NhcGVTZXF1ZW5jZSkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVh
ZCgiXFx3IiwgIisiKSk7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJcXFciLCAi
YWIiKSk7Ci0KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxzYSIsICJcbmFiIikp
OwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXGQiLCAiMWEiKSk7Ci19Ci0KLVRF
U1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIFdvcmtzV2hlblJlZ2V4U3RhcnRzV2l0aFJlcGV0aXRp
b24pIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIi4rYSIsICJhYmMiKSk7Ci0g
IEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJhP2IiLCAiYWFiIikpOwotCi0gIEVYUEVD
VF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIi4qYSIsICJiYzEyLWFiIikpOwotICBFWFBFQ1RfVFJV
RShNYXRjaFJlZ2V4QXRIZWFkKCJhP2IiLCAiYiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdl
eEF0SGVhZCgiYT9iIiwgImFiIikpOwotfQotCi1URVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0LAot
ICAgICBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhSZXBldGlvbk9mRXNjYXBlU2VxdWVuY2UpIHsK
LSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIlxcLithIiwgImFiYyIpKTsKLSAgRVhQ
RUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIlxccz9iIiwgIiAgYiIpKTsKLQotICBFWFBFQ1Rf
VFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXCgqYSIsICIoKCgoYWIiKSk7Ci0gIEVYUEVDVF9UUlVF
KE1hdGNoUmVnZXhBdEhlYWQoIlxcXj9iIiwgIl5iIikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJl
Z2V4QXRIZWFkKCJcXFxcP2IiLCAiYiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVh
ZCgiXFxcXD9iIiwgIlxcYiIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgTWF0
Y2hlc1NlcXVlbnRpYWxseSkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiYWIu
KmMiLCAiYWNhYmMiKSk7Ci0KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiYWIuKmMi
LCAiYWItZnNjIikpOwotfQotCi1URVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFJldHVybnNG
YWxzZVdoZW5TdHJpbmdJc051bGwpIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVy
ZSgiIiwgTlVMTCkpOwotfQotCi1URVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFdvcmtzV2hl
blJlZ2V4U3RhcnRzV2l0aENhcmV0KSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hl
cmUoIl5hIiwgImJhIikpOwotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJlKCJeJCIs
ICJhIikpOwotCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXmEiLCAiYWIiKSk7
Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXiIsICJhYiIpKTsKLSAgRVhQRUNU
X1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJeJCIsICIiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdl
eEFueXdoZXJlVGVzdCwgUmV0dXJuc0ZhbHNlV2hlbk5vTWF0Y2gpIHsKLSAgRVhQRUNUX0ZBTFNF
KE1hdGNoUmVnZXhBbnl3aGVyZSgiYSIsICJiY2RlMTIzIikpOwotICBFWFBFQ1RfRkFMU0UoTWF0
Y2hSZWdleEFueXdoZXJlKCJhLithIiwgIi0tYWE4ODg4ODg4OCIpKTsKLX0KLQotVEVTVChNYXRj
aFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5zVHJ1ZVdoZW5NYXRjaGluZ1ByZWZpeCkgewotICBF
WFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIlxcdysiLCAiYWIxXyAtIDUiKSk7Ci0gIEVY
UEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiLio9IiwgIj0iKSk7Ci0gIEVYUEVDVF9UUlVF
KE1hdGNoUmVnZXhBbnl3aGVyZSgieC4qYWI/LipiYyIsICJ4YWFhYmMiKSk7Ci19Ci0KLVRFU1Qo
TWF0Y2hSZWdleEFueXdoZXJlVGVzdCwgUmV0dXJuc1RydWVXaGVuTWF0Y2hpbmdOb25QcmVmaXgp
IHsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJcXHcrIiwgIiQkJCBhYjFfIC0g
NSIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJcXC4rPSIsICI9ICAuLi49
IikpOwotfQotCi0vLyBUZXN0cyBSRSdzIGltcGxpY2l0IGNvbnN0cnVjdG9ycy4KLVRFU1QoUkVU
ZXN0LCBJbXBsaWNpdENvbnN0cnVjdG9yV29ya3MpIHsKLSAgY29uc3QgUkUgZW1wdHkoIiIpOwot
ICBFWFBFQ1RfU1RSRVEoIiIsIGVtcHR5LnBhdHRlcm4oKSk7Ci0KLSAgY29uc3QgUkUgc2ltcGxl
KCJoZWxsbyIpOwotICBFWFBFQ1RfU1RSRVEoImhlbGxvIiwgc2ltcGxlLnBhdHRlcm4oKSk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgUkUncyBjb25zdHJ1Y3RvcnMgcmVqZWN0IGludmFsaWQgcmVndWxh
ciBleHByZXNzaW9ucy4KLVRFU1QoUkVUZXN0LCBSZWplY3RzSW52YWxpZFJlZ2V4KSB7Ci0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBjb25zdCBSRSBub3JtYWwoTlVMTCk7Ci0gIH0s
ICJOVUxMIGlzIG5vdCBhIHZhbGlkIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24iKTsKLQotICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAgY29uc3QgUkUgbm9ybWFsKCIuKihcXHcrIik7
Ci0gIH0sICInKCcgaXMgdW5zdXBwb3J0ZWQiKTsKLQotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RSh7Ci0gICAgY29uc3QgUkUgaW52YWxpZCgiXj8iKTsKLSAgfSwgIic/JyBjYW4gb25seSBmb2xs
b3cgYSByZXBlYXRhYmxlIHRva2VuIik7Ci19Ci0KLS8vIFRlc3RzIFJFOjpGdWxsTWF0Y2goKS4K
LVRFU1QoUkVUZXN0LCBGdWxsTWF0Y2hXb3JrcykgewotICBjb25zdCBSRSBlbXB0eSgiIik7Ci0g
IEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goIiIsIGVtcHR5KSk7Ci0gIEVYUEVDVF9GQUxTRShS
RTo6RnVsbE1hdGNoKCJhIiwgZW1wdHkpKTsKLQotICBjb25zdCBSRSByZTEoImEiKTsKLSAgRVhQ
RUNUX1RSVUUoUkU6OkZ1bGxNYXRjaCgiYSIsIHJlMSkpOwotCi0gIGNvbnN0IFJFIHJlKCJhLip6
Iik7Ci0gIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goImF6IiwgcmUpKTsKLSAgRVhQRUNUX1RS
VUUoUkU6OkZ1bGxNYXRjaCgiYXh5eiIsIHJlKSk7Ci0gIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1h
dGNoKCJiYXoiLCByZSkpOwotICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaCgiYXp5IiwgcmUp
KTsKLX0KLQotLy8gVGVzdHMgUkU6OlBhcnRpYWxNYXRjaCgpLgotVEVTVChSRVRlc3QsIFBhcnRp
YWxNYXRjaFdvcmtzKSB7Ci0gIGNvbnN0IFJFIGVtcHR5KCIiKTsKLSAgRVhQRUNUX1RSVUUoUkU6
OlBhcnRpYWxNYXRjaCgiIiwgZW1wdHkpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRj
aCgiYSIsIGVtcHR5KSk7Ci0KLSAgY29uc3QgUkUgcmUoImEuKnoiKTsKLSAgRVhQRUNUX1RSVUUo
UkU6OlBhcnRpYWxNYXRjaCgiYXoiLCByZSkpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1h
dGNoKCJheHl6IiwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiYmF6Iiwg
cmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiYXp5IiwgcmUpKTsKLSAgRVhQ
RUNUX0ZBTFNFKFJFOjpQYXJ0aWFsTWF0Y2goInp6YSIsIHJlKSk7Ci19Ci0KLSNlbmRpZiAgLy8g
R1RFU1RfVVNFU19QT1NJWF9SRQotCi0jaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLVRF
U1QoQ2FwdHVyZVRlc3QsIENhcHR1cmVzU3Rkb3V0KSB7Ci0gIENhcHR1cmVTdGRvdXQoKTsKLSAg
ZnByaW50ZihzdGRvdXQsICJhYmMiKTsKLSAgRVhQRUNUX1NUUkVRKCJhYmMiLCBHZXRDYXB0dXJl
ZFN0ZG91dCgpLmNfc3RyKCkpOwotCi0gIENhcHR1cmVTdGRvdXQoKTsKLSAgZnByaW50ZihzdGRv
dXQsICJkZWYlY2doaSIsICdcMCcpOwotICBFWFBFQ1RfRVEoOjpzdGQ6OnN0cmluZygiZGVmXDBn
aGkiLCA3KSwgOjpzdGQ6OnN0cmluZyhHZXRDYXB0dXJlZFN0ZG91dCgpKSk7Ci19Ci0KLVRFU1Qo
Q2FwdHVyZVRlc3QsIENhcHR1cmVzU3RkZXJyKSB7Ci0gIENhcHR1cmVTdGRlcnIoKTsKLSAgZnBy
aW50ZihzdGRlcnIsICJqa2wiKTsKLSAgRVhQRUNUX1NUUkVRKCJqa2wiLCBHZXRDYXB0dXJlZFN0
ZGVycigpLmNfc3RyKCkpOwotCi0gIENhcHR1cmVTdGRlcnIoKTsKLSAgZnByaW50ZihzdGRlcnIs
ICJqa2wlY21ubyIsICdcMCcpOwotICBFWFBFQ1RfRVEoOjpzdGQ6OnN0cmluZygiamtsXDBtbm8i
LCA3KSwgOjpzdGQ6OnN0cmluZyhHZXRDYXB0dXJlZFN0ZGVycigpKSk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgc3Rkb3V0IGFuZCBzdGRlcnIgY2FwdHVyZSBkb24ndCBpbnRlcmZlcmUgd2l0aCBlYWNo
IG90aGVyLgotVEVTVChDYXB0dXJlVGVzdCwgQ2FwdHVyZXNTdGRvdXRBbmRTdGRlcnIpIHsKLSAg
Q2FwdHVyZVN0ZG91dCgpOwotICBDYXB0dXJlU3RkZXJyKCk7Ci0gIGZwcmludGYoc3Rkb3V0LCAi
cHFyIik7Ci0gIGZwcmludGYoc3RkZXJyLCAic3R1Iik7Ci0gIEVYUEVDVF9TVFJFUSgicHFyIiwg
R2V0Q2FwdHVyZWRTdGRvdXQoKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJzdHUiLCBHZXRD
YXB0dXJlZFN0ZGVycigpLmNfc3RyKCkpOwotfQotCi1URVNUKENhcHR1cmVEZWF0aFRlc3QsIENh
bm5vdFJlZW50ZXJTdGRvdXRDYXB0dXJlKSB7Ci0gIENhcHR1cmVTdGRvdXQoKTsKLSAgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRChDYXB0dXJlU3Rkb3V0KCk7LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJPbmx5IG9uZSBzdGRvdXQgY2FwdHVyZXIgY2FuIGV4aXN0IGF0IGEgdGltZSIp
OwotICBHZXRDYXB0dXJlZFN0ZG91dCgpOwotCi0gIC8vIFdlIGNhbm5vdCB0ZXN0IHN0ZGVyciBj
YXB0dXJpbmcgdXNpbmcgZGVhdGggdGVzdHMgYXMgdGhleSB1c2UgaXQKLSAgLy8gdGhlbXNlbHZl
cy4KLX0KLQotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLQotVEVTVChUaHJl
YWRMb2NhbFRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvckluaXRpYWxpemVzVG9EZWZhdWx0VmFsdWVz
KSB7Ci0gIFRocmVhZExvY2FsPGludD4gdDE7Ci0gIEVYUEVDVF9FUSgwLCB0MS5nZXQoKSk7Ci0K
LSAgVGhyZWFkTG9jYWw8dm9pZCo+IHQyOwotICBFWFBFQ1RfVFJVRSh0Mi5nZXQoKSA9PSBOVUxM
KTsKLX0KLQotVEVTVChUaHJlYWRMb2NhbFRlc3QsIFNpbmdsZVBhcmFtQ29uc3RydWN0b3JJbml0
aWFsaXplc1RvUGFyYW0pIHsKLSAgVGhyZWFkTG9jYWw8aW50PiB0MSgxMjMpOwotICBFWFBFQ1Rf
RVEoMTIzLCB0MS5nZXQoKSk7Ci0KLSAgaW50IGkgPSAwOwotICBUaHJlYWRMb2NhbDxpbnQqPiB0
MigmaSk7Ci0gIEVYUEVDVF9FUSgmaSwgdDIuZ2V0KCkpOwotfQotCi1jbGFzcyBOb0RlZmF1bHRD
b250cnVjdG9yIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IE5vRGVmYXVsdENvbnRydWN0b3IoY29u
c3QgY2hhciopIHt9Ci0gIE5vRGVmYXVsdENvbnRydWN0b3IoY29uc3QgTm9EZWZhdWx0Q29udHJ1
Y3RvciYpIHt9Ci19OwotCi1URVNUKFRocmVhZExvY2FsVGVzdCwgVmFsdWVEZWZhdWx0Q29udHJ1
Y3RvcklzTm90UmVxdWlyZWRGb3JQYXJhbVZlcnNpb24pIHsKLSAgVGhyZWFkTG9jYWw8Tm9EZWZh
dWx0Q29udHJ1Y3Rvcj4gYmFyKE5vRGVmYXVsdENvbnRydWN0b3IoImZvbyIpKTsKLSAgYmFyLnBv
aW50ZXIoKTsKLX0KLQotVEVTVChUaHJlYWRMb2NhbFRlc3QsIEdldEFuZFBvaW50ZXJSZXR1cm5T
YW1lVmFsdWUpIHsKLSAgVGhyZWFkTG9jYWw8U3RyaW5nPiB0aHJlYWRfbG9jYWw7Ci0KLSAgRVhQ
RUNUX0VRKHRocmVhZF9sb2NhbC5wb2ludGVyKCksICYodGhyZWFkX2xvY2FsLmdldCgpKSk7Ci0K
LSAgLy8gVmVyaWZpZXMgdGhlIGNvbmRpdGlvbiBzdGlsbCBob2xkcyBhZnRlciBjYWxsaW5nIHNl
dC4KLSAgdGhyZWFkX2xvY2FsLnNldCgiZm9vIik7Ci0gIEVYUEVDVF9FUSh0aHJlYWRfbG9jYWwu
cG9pbnRlcigpLCAmKHRocmVhZF9sb2NhbC5nZXQoKSkpOwotfQotCi1URVNUKFRocmVhZExvY2Fs
VGVzdCwgUG9pbnRlckFuZENvbnN0UG9pbnRlclJldHVyblNhbWVWYWx1ZSkgewotICBUaHJlYWRM
b2NhbDxTdHJpbmc+IHRocmVhZF9sb2NhbDsKLSAgY29uc3QgVGhyZWFkTG9jYWw8U3RyaW5nPiYg
Y29uc3RfdGhyZWFkX2xvY2FsID0gdGhyZWFkX2xvY2FsOwotCi0gIEVYUEVDVF9FUSh0aHJlYWRf
bG9jYWwucG9pbnRlcigpLCBjb25zdF90aHJlYWRfbG9jYWwucG9pbnRlcigpKTsKLQotICB0aHJl
YWRfbG9jYWwuc2V0KCJmb28iKTsKLSAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbC5wb2ludGVyKCks
IGNvbnN0X3RocmVhZF9sb2NhbC5wb2ludGVyKCkpOwotfQotCi0jaWYgR1RFU1RfSVNfVEhSRUFE
U0FGRQotCi12b2lkIEFkZFR3byhpbnQqIHBhcmFtKSB7ICpwYXJhbSArPSAyOyB9Ci0KLVRFU1Qo
VGhyZWFkV2l0aFBhcmFtVGVzdCwgQ29uc3RydWN0b3JFeGVjdXRlc1RocmVhZEZ1bmMpIHsKLSAg
aW50IGkgPSA0MDsKLSAgVGhyZWFkV2l0aFBhcmFtPGludCo+IHRocmVhZCgmQWRkVHdvLCAmaSwg
TlVMTCk7Ci0gIHRocmVhZC5Kb2luKCk7Ci0gIEVYUEVDVF9FUSg0MiwgaSk7Ci19Ci0KLVRFU1Qo
TXV0ZXhEZWF0aFRlc3QsIEFzc2VydEhlbGRTaG91bGRBc3NlcnRXaGVuTm90TG9ja2VkKSB7Ci0g
IC8vIEFzc2VydEhlbGQoKSBpcyBmbGFreSBvbmx5IGluIHRoZSBwcmVzZW5jZSBvZiBtdWx0aXBs
ZSB0aHJlYWRzIGFjY2Vzc2luZwotICAvLyB0aGUgbG9jay4gSW4gdGhpcyBjYXNlLCB0aGUgdGVz
dCBpcyByb2J1c3QuCi0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoewotICAgIE11dGV4IG07
Ci0gICAgeyBNdXRleExvY2sgbG9jaygmbSk7IH0KLSAgICBtLkFzc2VydEhlbGQoKTsKLSAgfSwK
LSAgInRocmVhZCAuKmhvbGQiKTsKLX0KLQotVEVTVChNdXRleFRlc3QsIEFzc2VydEhlbGRTaG91
bGROb3RBc3NlcnRXaGVuTG9ja2VkKSB7Ci0gIE11dGV4IG07Ci0gIE11dGV4TG9jayBsb2NrKCZt
KTsKLSAgbS5Bc3NlcnRIZWxkKCk7Ci19Ci0KLWNsYXNzIEF0b21pY0NvdW50ZXJXaXRoTXV0ZXgg
ewotIHB1YmxpYzoKLSAgZXhwbGljaXQgQXRvbWljQ291bnRlcldpdGhNdXRleChNdXRleCogbXV0
ZXgpIDoKLSAgICB2YWx1ZV8oMCksIG11dGV4XyhtdXRleCksIHJhbmRvbV8oNDIpIHt9Ci0KLSAg
dm9pZCBJbmNyZW1lbnQoKSB7Ci0gICAgTXV0ZXhMb2NrIGxvY2sobXV0ZXhfKTsKLSAgICBpbnQg
dGVtcCA9IHZhbHVlXzsKLSAgICB7Ci0gICAgICAvLyBMb2NraW5nIGEgbXV0ZXggcHV0cyB1cCBh
IG1lbW9yeSBiYXJyaWVyLCBwcmV2ZW50aW5nIHJlYWRzIGFuZAotICAgICAgLy8gd3JpdGVzIHRv
IHZhbHVlXyByZWFycmFuZ2VkIHdoZW4gb2JzZXJ2ZWQgZnJvbSBvdGhlciB0aHJlYWRzLgotICAg
ICAgLy8KLSAgICAgIC8vIFdlIGNhbm5vdCB1c2UgTXV0ZXggYW5kIE11dGV4TG9jayBoZXJlIG9y
IHJlbHkgb24gdGhlaXIgbWVtb3J5Ci0gICAgICAvLyBiYXJyaWVyIGZ1bmN0aW9uYWxpdHkgYXMg
d2UgYXJlIHRlc3RpbmcgdGhlbSBoZXJlLgotICAgICAgcHRocmVhZF9tdXRleF90IG1lbW9yeV9i
YXJyaWVyX211dGV4OwotICAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18oCi0gICAgICAg
ICAgcHRocmVhZF9tdXRleF9pbml0KCZtZW1vcnlfYmFycmllcl9tdXRleCwgTlVMTCkpOwotICAg
ICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9sb2NrKCZtZW1vcnlf
YmFycmllcl9tdXRleCkpOwotCi0gICAgICBTbGVlcE1pbGxpc2Vjb25kcyhyYW5kb21fLkdlbmVy
YXRlKDMwKSk7Ci0KLSAgICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0
ZXhfdW5sb2NrKCZtZW1vcnlfYmFycmllcl9tdXRleCkpOwotICAgIH0KLSAgICB2YWx1ZV8gPSB0
ZW1wICsgMTsKLSAgfQotICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KLQot
IHByaXZhdGU6Ci0gIHZvbGF0aWxlIGludCB2YWx1ZV87Ci0gIE11dGV4KiBjb25zdCBtdXRleF87
ICAvLyBQcm90ZWN0cyB2YWx1ZV8uCi0gIFJhbmRvbSAgICAgICByYW5kb21fOwotfTsKLQotdm9p
ZCBDb3VudGluZ1RocmVhZEZ1bmMocGFpcjxBdG9taWNDb3VudGVyV2l0aE11dGV4KiwgaW50PiBw
YXJhbSkgewotICBmb3IgKGludCBpID0gMDsgaSA8IHBhcmFtLnNlY29uZDsgKytpKQotICAgICAg
cGFyYW0uZmlyc3QtPkluY3JlbWVudCgpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBtdXRleCBv
bmx5IGxldHMgb25lIHRocmVhZCBhdCBhIHRpbWUgdG8gbG9jayBpdC4KLVRFU1QoTXV0ZXhUZXN0
LCBPbmx5T25lVGhyZWFkQ2FuTG9ja0F0QVRpbWUpIHsKLSAgTXV0ZXggbXV0ZXg7Ci0gIEF0b21p
Y0NvdW50ZXJXaXRoTXV0ZXggbG9ja2VkX2NvdW50ZXIoJm11dGV4KTsKLQotICB0eXBlZGVmIFRo
cmVhZFdpdGhQYXJhbTxwYWlyPEF0b21pY0NvdW50ZXJXaXRoTXV0ZXgqLCBpbnQ+ID4gVGhyZWFk
VHlwZTsKLSAgY29uc3QgaW50IGtDeWNsZUNvdW50ID0gMjA7Ci0gIGNvbnN0IGludCBrVGhyZWFk
Q291bnQgPSA3OwotICBzY29wZWRfcHRyPFRocmVhZFR5cGU+IGNvdW50aW5nX3RocmVhZHNba1Ro
cmVhZENvdW50XTsKLSAgTm90aWZpY2F0aW9uIHRocmVhZHNfY2FuX3N0YXJ0OwotICAvLyBDcmVh
dGVzIGFuZCBydW5zIGtUaHJlYWRDb3VudCB0aHJlYWRzIHRoYXQgaW5jcmVtZW50IGxvY2tlZF9j
b3VudGVyCi0gIC8vIGtDeWNsZUNvdW50IHRpbWVzIGVhY2guCi0gIGZvciAoaW50IGkgPSAwOyBp
IDwga1RocmVhZENvdW50OyArK2kpIHsKLSAgICBjb3VudGluZ190aHJlYWRzW2ldLnJlc2V0KG5l
dyBUaHJlYWRUeXBlKCZDb3VudGluZ1RocmVhZEZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3BhaXIoJmxvY2tlZF9jb3VudGVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDeWNsZUNv
dW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aHJl
YWRzX2Nhbl9zdGFydCkpOwotICB9Ci0gIHRocmVhZHNfY2FuX3N0YXJ0Lk5vdGlmeSgpOwotICBm
b3IgKGludCBpID0gMDsgaSA8IGtUaHJlYWRDb3VudDsgKytpKQotICAgIGNvdW50aW5nX3RocmVh
ZHNbaV0tPkpvaW4oKTsKLQotICAvLyBJZiB0aGUgbXV0ZXggbGV0cyBtb3JlIHRoYW4gb25lIHRo
cmVhZCB0byBpbmNyZW1lbnQgdGhlIGNvdW50ZXIgYXQgYQotICAvLyB0aW1lLCB0aGV5IGFyZSBs
aWtlbHkgdG8gZW5jb3VudGVyIGEgcmFjZSBjb25kaXRpb24gYW5kIGhhdmUgc29tZQotICAvLyBp
bmNyZW1lbnRzIG92ZXJ3cml0dGVuLCByZXN1bHRpbmcgaW4gdGhlIGxvd2VyIHRoZW4gZXhwZWN0
ZWQgY291bnRlcgotICAvLyB2YWx1ZS4KLSAgRVhQRUNUX0VRKGtDeWNsZUNvdW50ICoga1RocmVh
ZENvdW50LCBsb2NrZWRfY291bnRlci52YWx1ZSgpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci12b2lkIFJ1bkZyb21UaHJlYWQodm9pZCAoZnVuYykoVCksIFQgcGFyYW0pIHsKLSAgVGhy
ZWFkV2l0aFBhcmFtPFQ+IHRocmVhZChmdW5jLCBwYXJhbSwgTlVMTCk7Ci0gIHRocmVhZC5Kb2lu
KCk7Ci19Ci0KLXZvaWQgUmV0cmlldmVUaHJlYWRMb2NhbFZhbHVlKHBhaXI8VGhyZWFkTG9jYWw8
U3RyaW5nPiosIFN0cmluZyo+IHBhcmFtKSB7Ci0gICpwYXJhbS5zZWNvbmQgPSBwYXJhbS5maXJz
dC0+Z2V0KCk7Ci19Ci0KLVRFU1QoVGhyZWFkTG9jYWxUZXN0LCBQYXJhbWV0ZXJpemVkQ29uc3Ry
dWN0b3JTZXRzRGVmYXVsdCkgewotICBUaHJlYWRMb2NhbDxTdHJpbmc+IHRocmVhZF9sb2NhbCgi
Zm9vIik7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiwgdGhyZWFkX2xvY2FsLmdldCgpLmNfc3RyKCkp
OwotCi0gIHRocmVhZF9sb2NhbC5zZXQoImJhciIpOwotICBFWFBFQ1RfU1RSRVEoImJhciIsIHRo
cmVhZF9sb2NhbC5nZXQoKS5jX3N0cigpKTsKLQotICBTdHJpbmcgcmVzdWx0OwotICBSdW5Gcm9t
VGhyZWFkKCZSZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUsIG1ha2VfcGFpcigmdGhyZWFkX2xvY2Fs
LCAmcmVzdWx0KSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiwgcmVzdWx0LmNfc3RyKCkpOwotfQot
Ci0vLyBEZXN0cnVjdG9yVHJhY2tlciBrZWVwcyB0cmFjayBvZiB3aGV0aGVyIGl0cyBpbnN0YW5j
ZXMgaGF2ZSBiZWVuCi0vLyBkZXN0cm95ZWQuCi1zdGF0aWMgc3RkOjp2ZWN0b3I8Ym9vbD4gZ19k
ZXN0cm95ZWQ7Ci0KLWNsYXNzIERlc3RydWN0b3JUcmFja2VyIHsKLSBwdWJsaWM6Ci0gIERlc3Ry
dWN0b3JUcmFja2VyKCkgOiBpbmRleF8oR2V0TmV3SW5kZXgoKSkge30KLSAgRGVzdHJ1Y3RvclRy
YWNrZXIoY29uc3QgRGVzdHJ1Y3RvclRyYWNrZXImIC8qIHJocyAqLykKLSAgICAgIDogaW5kZXhf
KEdldE5ld0luZGV4KCkpIHt9Ci0gIH5EZXN0cnVjdG9yVHJhY2tlcigpIHsKLSAgICAvLyBXZSBu
ZXZlciBhY2Nlc3MgZ19kZXN0cm95ZWQgY29uY3VycmVudGx5LCBzbyB3ZSBkb24ndCBuZWVkIHRv
Ci0gICAgLy8gcHJvdGVjdCB0aGUgd3JpdGUgb3BlcmF0aW9uIHVuZGVyIGEgbXV0ZXguCi0gICAg
Z19kZXN0cm95ZWRbaW5kZXhfXSA9IHRydWU7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHN0YXRpYyBp
bnQgR2V0TmV3SW5kZXgoKSB7Ci0gICAgZ19kZXN0cm95ZWQucHVzaF9iYWNrKGZhbHNlKTsKLSAg
ICByZXR1cm4gZ19kZXN0cm95ZWQuc2l6ZSgpIC0gMTsKLSAgfQotICBjb25zdCBpbnQgaW5kZXhf
OwotfTsKLQotdHlwZWRlZiBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4qIFRocmVhZFBh
cmFtOwotCi12b2lkIENhbGxUaHJlYWRMb2NhbEdldChUaHJlYWRQYXJhbSB0aHJlYWRfbG9jYWwp
IHsKLSAgdGhyZWFkX2xvY2FsLT5nZXQoKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB3aGVuIGEgVGhy
ZWFkTG9jYWwgb2JqZWN0IGRpZXMgaW4gYSB0aHJlYWQsIGl0IGRlc3Ryb3lzCi0vLyB0aGUgbWFu
YWdlZCBvYmplY3QgZm9yIHRoYXQgdGhyZWFkLgotVEVTVChUaHJlYWRMb2NhbFRlc3QsIERlc3Ry
b3lzTWFuYWdlZE9iamVjdEZvck93blRocmVhZFdoZW5EeWluZykgewotICBnX2Rlc3Ryb3llZC5j
bGVhcigpOwotCi0gIHsKLSAgICAvLyBUaGUgbmV4dCBsaW5lIGRlZmF1bHQgY29uc3RydWN0cyBh
IERlc3RydWN0b3JUcmFja2VyIG9iamVjdCBhcwotICAgIC8vIHRoZSBkZWZhdWx0IHZhbHVlIG9m
IG9iamVjdHMgbWFuYWdlZCBieSB0aHJlYWRfbG9jYWwuCi0gICAgVGhyZWFkTG9jYWw8RGVzdHJ1
Y3RvclRyYWNrZXI+IHRocmVhZF9sb2NhbDsKLSAgICBBU1NFUlRfRVEoMVUsIGdfZGVzdHJveWVk
LnNpemUoKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdfZGVzdHJveWVkWzBdKTsKLQotICAgIC8vIFRo
aXMgY3JlYXRlcyBhbm90aGVyIERlc3RydWN0b3JUcmFja2VyIG9iamVjdCBmb3IgdGhlIG1haW4g
dGhyZWFkLgotICAgIHRocmVhZF9sb2NhbC5nZXQoKTsKLSAgICBBU1NFUlRfRVEoMlUsIGdfZGVz
dHJveWVkLnNpemUoKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdfZGVzdHJveWVkWzBdKTsKLSAgICBB
U1NFUlRfRkFMU0UoZ19kZXN0cm95ZWRbMV0pOwotICB9Ci0KLSAgLy8gTm93IHRocmVhZF9sb2Nh
bCBoYXMgZGllZC4gIEl0IHNob3VsZCBoYXZlIGRlc3Ryb3llZCBib3RoIHRoZQotICAvLyBkZWZh
dWx0IHZhbHVlIHNoYXJlZCBieSBhbGwgdGhyZWFkcyBhbmQgdGhlIHZhbHVlIGZvciB0aGUgbWFp
bgotICAvLyB0aHJlYWQuCi0gIEFTU0VSVF9FUSgyVSwgZ19kZXN0cm95ZWQuc2l6ZSgpKTsKLSAg
RVhQRUNUX1RSVUUoZ19kZXN0cm95ZWRbMF0pOwotICBFWFBFQ1RfVFJVRShnX2Rlc3Ryb3llZFsx
XSk7Ci0KLSAgZ19kZXN0cm95ZWQuY2xlYXIoKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB3aGVuIGEg
dGhyZWFkIGV4aXRzLCB0aGUgdGhyZWFkLWxvY2FsIG9iamVjdCBmb3IgdGhhdAotLy8gdGhyZWFk
IGlzIGRlc3Ryb3llZC4KLVRFU1QoVGhyZWFkTG9jYWxUZXN0LCBEZXN0cm95c01hbmFnZWRPYmpl
Y3RBdFRocmVhZEV4aXQpIHsKLSAgZ19kZXN0cm95ZWQuY2xlYXIoKTsKLQotICB7Ci0gICAgLy8g
VGhlIG5leHQgbGluZSBkZWZhdWx0IGNvbnN0cnVjdHMgYSBEZXN0cnVjdG9yVHJhY2tlciBvYmpl
Y3QgYXMKLSAgICAvLyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBvYmplY3RzIG1hbmFnZWQgYnkgdGhy
ZWFkX2xvY2FsLgotICAgIFRocmVhZExvY2FsPERlc3RydWN0b3JUcmFja2VyPiB0aHJlYWRfbG9j
YWw7Ci0gICAgQVNTRVJUX0VRKDFVLCBnX2Rlc3Ryb3llZC5zaXplKCkpOwotICAgIEFTU0VSVF9G
QUxTRShnX2Rlc3Ryb3llZFswXSk7Ci0KLSAgICAvLyBUaGlzIGNyZWF0ZXMgYW5vdGhlciBEZXN0
cnVjdG9yVHJhY2tlciBvYmplY3QgaW4gdGhlIG5ldyB0aHJlYWQuCi0gICAgVGhyZWFkV2l0aFBh
cmFtPFRocmVhZFBhcmFtPiB0aHJlYWQoCi0gICAgICAgICZDYWxsVGhyZWFkTG9jYWxHZXQsICZ0
aHJlYWRfbG9jYWwsIE5VTEwpOwotICAgIHRocmVhZC5Kb2luKCk7Ci0KLSAgICAvLyBOb3cgdGhl
IG5ldyB0aHJlYWQgaGFzIGV4aXRlZC4gIFRoZSBwZXItdGhyZWFkIG9iamVjdCBmb3IgaXQKLSAg
ICAvLyBzaG91bGQgaGF2ZSBiZWVuIGRlc3Ryb3llZC4KLSAgICBBU1NFUlRfRVEoMlUsIGdfZGVz
dHJveWVkLnNpemUoKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdfZGVzdHJveWVkWzBdKTsKLSAgICBB
U1NFUlRfVFJVRShnX2Rlc3Ryb3llZFsxXSk7Ci0gIH0KLQotICAvLyBOb3cgdGhyZWFkX2xvY2Fs
IGhhcyBkaWVkLiAgVGhlIGRlZmF1bHQgdmFsdWUgc2hvdWxkIGhhdmUgYmVlbgotICAvLyBkZXN0
cm95ZWQgdG9vLgotICBBU1NFUlRfRVEoMlUsIGdfZGVzdHJveWVkLnNpemUoKSk7Ci0gIEVYUEVD
VF9UUlVFKGdfZGVzdHJveWVkWzBdKTsKLSAgRVhQRUNUX1RSVUUoZ19kZXN0cm95ZWRbMV0pOwot
Ci0gIGdfZGVzdHJveWVkLmNsZWFyKCk7Ci19Ci0KLVRFU1QoVGhyZWFkTG9jYWxUZXN0LCBUaHJl
YWRMb2NhbE11dGF0aW9uc0FmZmVjdE9ubHlDdXJyZW50VGhyZWFkKSB7Ci0gIFRocmVhZExvY2Fs
PFN0cmluZz4gdGhyZWFkX2xvY2FsOwotICB0aHJlYWRfbG9jYWwuc2V0KCJGb28iKTsKLSAgRVhQ
RUNUX1NUUkVRKCJGb28iLCB0aHJlYWRfbG9jYWwuZ2V0KCkuY19zdHIoKSk7Ci0KLSAgU3RyaW5n
IHJlc3VsdDsKLSAgUnVuRnJvbVRocmVhZCgmUmV0cmlldmVUaHJlYWRMb2NhbFZhbHVlLCBtYWtl
X3BhaXIoJnRocmVhZF9sb2NhbCwgJnJlc3VsdCkpOwotICBFWFBFQ1RfVFJVRShyZXN1bHQuY19z
dHIoKSA9PSBOVUxMKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCi0KLX0g
IC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0LmNjCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTNlOTE5NmFiOTZlNDEzZmVmMzMwNzUyNGIx
OGM5MmY1ZWRhZGIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2MK
KysrIC9kZXYvbnVsbApAQCAtMSwyMDggKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDggR29vZ2xl
IEluYy4KLS8vIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiBtaGV1bGVAZ29vZ2xlLmNvbSAoTWFy
a3VzIEhldWxlKQotLy8KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oPgotCi0j
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdXNpbmcgdGVzdGluZzo6TWVzc2FnZTsKLXVzaW5n
IHRlc3Rpbmc6OlRlc3Q7Ci11c2luZyB0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDsKLXVzaW5nIHRl
c3Rpbmc6OlRlc3RQYXJ0UmVzdWx0QXJyYXk7Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIFRlc3RzIHRo
ZSBUZXN0UGFydFJlc3VsdCBjbGFzcy4KLQotLy8gVGhlIHRlc3QgZml4dHVyZSBmb3IgdGVzdGlu
ZyBUZXN0UGFydFJlc3VsdC4KLWNsYXNzIFRlc3RQYXJ0UmVzdWx0VGVzdCA6IHB1YmxpYyBUZXN0
IHsKLSBwcm90ZWN0ZWQ6Ci0gIFRlc3RQYXJ0UmVzdWx0VGVzdCgpCi0gICAgICA6IHIxXyhUZXN0
UGFydFJlc3VsdDo6a1N1Y2Nlc3MsICJmb28vYmFyLmNjIiwgMTAsICJTdWNjZXNzISIpLAotICAg
ICAgICByMl8oVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsICJmb28vYmFyLmNjIiwg
LTEsICJGYWlsdXJlISIpLAotICAgICAgICByM18oVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1
cmUsIE5VTEwsIC0xLCAiRmFpbHVyZSEiKSB7fQotCi0gIFRlc3RQYXJ0UmVzdWx0IHIxXywgcjJf
LCByM187Ci19OwotCi0KLVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIENvbnN0cnVjdG9yV29y
a3MpIHsKLSAgTWVzc2FnZSBtZXNzYWdlOwotICBtZXNzYWdlIDw8ICJzb21ldGhpbmcgaXMgdGVy
cmlibHkgd3JvbmciOwotICBtZXNzYWdlIDw8IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPih0ZXN0
aW5nOjppbnRlcm5hbDo6a1N0YWNrVHJhY2VNYXJrZXIpOwotICBtZXNzYWdlIDw8ICJzb21lIHVu
aW1wb3J0YW50IHN0YWNrIHRyYWNlIjsKLQotICBjb25zdCBUZXN0UGFydFJlc3VsdCByZXN1bHQo
VGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAic29tZV9maWxlLmNjIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0
cigpKTsKLQotICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsIHJl
c3VsdC50eXBlKCkpOwotICBFWFBFQ1RfU1RSRVEoInNvbWVfZmlsZS5jYyIsIHJlc3VsdC5maWxl
X25hbWUoKSk7Ci0gIEVYUEVDVF9FUSg0MiwgcmVzdWx0LmxpbmVfbnVtYmVyKCkpOwotICBFWFBF
Q1RfU1RSRVEobWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0cigpLCByZXN1bHQubWVzc2FnZSgpKTsK
LSAgRVhQRUNUX1NUUkVRKCJzb21ldGhpbmcgaXMgdGVycmlibHkgd3JvbmciLCByZXN1bHQuc3Vt
bWFyeSgpKTsKLX0KLQotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgUmVzdWx0QWNjZXNzb3Jz
V29yaykgewotICBjb25zdCBUZXN0UGFydFJlc3VsdCBzdWNjZXNzKFRlc3RQYXJ0UmVzdWx0Ojpr
U3VjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5jYyIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIm1lc3NhZ2UiKTsKLSAgRVhQRUNUX1RSVUUoc3VjY2Vzcy5wYXNzZWQoKSk7Ci0gIEVY
UEVDVF9GQUxTRShzdWNjZXNzLmZhaWxlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3Mubm9u
ZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShzdWNjZXNzLmZhdGFsbHlfZmFpbGVk
KCkpOwotCi0gIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IG5vbmZhdGFsX2ZhaWx1cmUoVGVzdFBhcnRS
ZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImZpbGUuY2MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdl
Iik7Ci0gIEVYUEVDVF9GQUxTRShub25mYXRhbF9mYWlsdXJlLnBhc3NlZCgpKTsKLSAgRVhQRUNU
X1RSVUUobm9uZmF0YWxfZmFpbHVyZS5mYWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKG5vbmZhdGFs
X2ZhaWx1cmUubm9uZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShub25mYXRhbF9m
YWlsdXJlLmZhdGFsbHlfZmFpbGVkKCkpOwotCi0gIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IGZhdGFs
X2ZhaWx1cmUoVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImZpbGUuY2MiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJt
ZXNzYWdlIik7Ci0gIEVYUEVDVF9GQUxTRShmYXRhbF9mYWlsdXJlLnBhc3NlZCgpKTsKLSAgRVhQ
RUNUX1RSVUUoZmF0YWxfZmFpbHVyZS5mYWlsZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShmYXRhbF9m
YWlsdXJlLm5vbmZhdGFsbHlfZmFpbGVkKCkpOwotICBFWFBFQ1RfVFJVRShmYXRhbF9mYWlsdXJl
LmZhdGFsbHlfZmFpbGVkKCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6dHlwZSgp
LgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgdHlwZSkgewotICBFWFBFQ1RfRVEoVGVzdFBh
cnRSZXN1bHQ6OmtTdWNjZXNzLCByMV8udHlwZSgpKTsKLSAgRVhQRUNUX0VRKFRlc3RQYXJ0UmVz
dWx0OjprTm9uRmF0YWxGYWlsdXJlLCByMl8udHlwZSgpKTsKLSAgRVhQRUNUX0VRKFRlc3RQYXJ0
UmVzdWx0OjprRmF0YWxGYWlsdXJlLCByM18udHlwZSgpKTsKLX0KLQotLy8gVGVzdHMgVGVzdFBh
cnRSZXN1bHQ6OmZpbGVfbmFtZSgpLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgZmlsZV9u
YW1lKSB7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vL2Jhci5jYyIsIHIxXy5maWxlX25hbWUoKSk7Ci0g
IEVYUEVDVF9TVFJFUShOVUxMLCByM18uZmlsZV9uYW1lKCkpOwotfQotCi0vLyBUZXN0cyBUZXN0
UGFydFJlc3VsdDo6bGluZV9udW1iZXIoKS4KLVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIGxp
bmVfbnVtYmVyKSB7Ci0gIEVYUEVDVF9FUSgxMCwgcjFfLmxpbmVfbnVtYmVyKCkpOwotICBFWFBF
Q1RfRVEoLTEsIHIyXy5saW5lX251bWJlcigpKTsKLX0KLQotLy8gVGVzdHMgVGVzdFBhcnRSZXN1
bHQ6Om1lc3NhZ2UoKS4KLVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIG1lc3NhZ2UpIHsKLSAg
RVhQRUNUX1NUUkVRKCJTdWNjZXNzISIsIHIxXy5tZXNzYWdlKCkpOwotfQotCi0vLyBUZXN0cyBU
ZXN0UGFydFJlc3VsdDo6cGFzc2VkKCkuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBQYXNz
ZWQpIHsKLSAgRVhQRUNUX1RSVUUocjFfLnBhc3NlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKHIyXy5w
YXNzZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShyM18ucGFzc2VkKCkpOwotfQotCi0vLyBUZXN0cyBU
ZXN0UGFydFJlc3VsdDo6ZmFpbGVkKCkuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBGYWls
ZWQpIHsKLSAgRVhQRUNUX0ZBTFNFKHIxXy5mYWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHIyXy5m
YWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHIzXy5mYWlsZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIFRl
c3RQYXJ0UmVzdWx0OjpmYXRhbGx5X2ZhaWxlZCgpLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVz
dCwgRmF0YWxseUZhaWxlZCkgewotICBFWFBFQ1RfRkFMU0UocjFfLmZhdGFsbHlfZmFpbGVkKCkp
OwotICBFWFBFQ1RfRkFMU0UocjJfLmZhdGFsbHlfZmFpbGVkKCkpOwotICBFWFBFQ1RfVFJVRShy
M18uZmF0YWxseV9mYWlsZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0Ojpub25m
YXRhbGx5X2ZhaWxlZCgpLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgTm9uZmF0YWxseUZh
aWxlZCkgewotICBFWFBFQ1RfRkFMU0UocjFfLm5vbmZhdGFsbHlfZmFpbGVkKCkpOwotICBFWFBF
Q1RfVFJVRShyMl8ubm9uZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShyM18ubm9u
ZmF0YWxseV9mYWlsZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBUZXN0UGFydFJlc3VsdEFycmF5
IGNsYXNzLgotCi1jbGFzcyBUZXN0UGFydFJlc3VsdEFycmF5VGVzdCA6IHB1YmxpYyBUZXN0IHsK
LSBwcm90ZWN0ZWQ6Ci0gIFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0KCkKLSAgICAgIDogcjFfKFRl
c3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlLCAiZm9vL2Jhci5jYyIsIC0xLCAiRmFpbHVy
ZSAxIiksCi0gICAgICAgIHIyXyhUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwgImZvby9i
YXIuY2MiLCAtMSwgIkZhaWx1cmUgMiIpIHt9Ci0KLSAgY29uc3QgVGVzdFBhcnRSZXN1bHQgcjFf
LCByMl87Ci19OwotCi0vLyBUZXN0cyB0aGF0IFRlc3RQYXJ0UmVzdWx0QXJyYXkgaW5pdGlhbGx5
IGhhcyBzaXplIDAuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRBcnJheVRlc3QsIEluaXRpYWxTaXpl
SXNaZXJvKSB7Ci0gIFRlc3RQYXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsKLSAgRVhQRUNUX0VRKDAs
IHJlc3VsdHMuc2l6ZSgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBUZXN0UGFydFJlc3VsdEFycmF5
IGNvbnRhaW5zIHRoZSBnaXZlbiBUZXN0UGFydFJlc3VsdAotLy8gYWZ0ZXIgb25lIEFwcGVuZCgp
IG9wZXJhdGlvbi4KLVRFU1RfRihUZXN0UGFydFJlc3VsdEFycmF5VGVzdCwgQ29udGFpbnNHaXZl
blJlc3VsdEFmdGVyQXBwZW5kKSB7Ci0gIFRlc3RQYXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsKLSAg
cmVzdWx0cy5BcHBlbmQocjFfKTsKLSAgRVhQRUNUX0VRKDEsIHJlc3VsdHMuc2l6ZSgpKTsKLSAg
RVhQRUNUX1NUUkVRKCJGYWlsdXJlIDEiLCByZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDApLm1l
c3NhZ2UoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVGVzdFBhcnRSZXN1bHRBcnJheSBjb250YWlu
cyB0aGUgZ2l2ZW4gVGVzdFBhcnRSZXN1bHRzCi0vLyBhZnRlciB0d28gQXBwZW5kKCkgb3BlcmF0
aW9ucy4KLVRFU1RfRihUZXN0UGFydFJlc3VsdEFycmF5VGVzdCwgQ29udGFpbnNHaXZlblJlc3Vs
dHNBZnRlclR3b0FwcGVuZHMpIHsKLSAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOwotICBy
ZXN1bHRzLkFwcGVuZChyMV8pOwotICByZXN1bHRzLkFwcGVuZChyMl8pOwotICBFWFBFQ1RfRVEo
MiwgcmVzdWx0cy5zaXplKCkpOwotICBFWFBFQ1RfU1RSRVEoIkZhaWx1cmUgMSIsIHJlc3VsdHMu
R2V0VGVzdFBhcnRSZXN1bHQoMCkubWVzc2FnZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCJGYWlsdXJl
IDIiLCByZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDEpLm1lc3NhZ2UoKSk7Ci19Ci0KLXR5cGVk
ZWYgVGVzdFBhcnRSZXN1bHRBcnJheVRlc3QgVGVzdFBhcnRSZXN1bHRBcnJheURlYXRoVGVzdDsK
LQotLy8gVGVzdHMgdGhhdCB0aGUgcHJvZ3JhbSBkaWVzIHdoZW4gR2V0VGVzdFBhcnRSZXN1bHQo
KSBpcyBjYWxsZWQgd2l0aAotLy8gYW4gaW52YWxpZCBpbmRleC4KLVRFU1RfRihUZXN0UGFydFJl
c3VsdEFycmF5RGVhdGhUZXN0LCBEaWVzV2hlbkluZGV4SXNPdXRPZkJvdW5kKSB7Ci0gIFRlc3RQ
YXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsKLSAgcmVzdWx0cy5BcHBlbmQocjFfKTsKLQotICBFWFBF
Q1RfREVBVEhfSUZfU1VQUE9SVEVEKHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoLTEpLCAiIik7
Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQocmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgx
KSwgIiIpOwotfQotCi0vLyBUT0RPKG1oZXVsZUBnb29nbGUuY29tKTogQWRkIGEgdGVzdCBmb3Ig
dGhlIGNsYXNzIEhhc05ld0ZhdGFsRmFpbHVyZUhlbHBlci4KLQotfSAgLy8gbmFtZXNwYWNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR1cGxlX3Rlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR1cGxlX3Rlc3QuY2MKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMmY3MGIzZDRlOTA3MGY0NTk2ODYyNWIzZmY5
N2MzOTg0NzU3ZDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10dXBsZV90ZXN0LmNjCisrKyAv
ZGV2L251bGwKQEAgLTEsMzIwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5j
LgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBX
YW4pCi0KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oPgotI2luY2x1ZGUg
PHV0aWxpdHk+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotbmFtZXNwYWNlIHsKLQotdXNp
bmcgOjpzdGQ6OnRyMTo6Z2V0OwotdXNpbmcgOjpzdGQ6OnRyMTo6bWFrZV90dXBsZTsKLXVzaW5n
IDo6c3RkOjp0cjE6OnR1cGxlOwotdXNpbmcgOjpzdGQ6OnRyMTo6dHVwbGVfZWxlbWVudDsKLXVz
aW5nIDo6c3RkOjp0cjE6OnR1cGxlX3NpemU7Ci11c2luZyA6OnRlc3Rpbmc6OlN0YXRpY0Fzc2Vy
dFR5cGVFcTsKLQotLy8gVGVzdHMgdGhhdCB0dXBsZV9lbGVtZW50PEssIHR1cGxlPFQwLCBUMSwg
Li4uLCBUTj4gPjo6dHlwZSByZXR1cm5zIFRLLgotVEVTVCh0dXBsZV9lbGVtZW50X1Rlc3QsIFJl
dHVybnNFbGVtZW50VHlwZSkgewotICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50LCB0dXBsZV9lbGVt
ZW50PDAsIHR1cGxlPGludCwgY2hhcj4gPjo6dHlwZT4oKTsKLSAgU3RhdGljQXNzZXJ0VHlwZUVx
PGludCYsIHR1cGxlX2VsZW1lbnQ8MSwgdHVwbGU8ZG91YmxlLCBpbnQmPiA+Ojp0eXBlPigpOwot
ICBTdGF0aWNBc3NlcnRUeXBlRXE8Ym9vbCwgdHVwbGVfZWxlbWVudDwyLCB0dXBsZTxkb3VibGUs
IGludCwgYm9vbD4gPjo6dHlwZT4oKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0dXBsZV9zaXplPFQ+
Ojp2YWx1ZSBnaXZlcyB0aGUgbnVtYmVyIG9mIGZpZWxkcyBpbiB0dXBsZQotLy8gdHlwZSBULgot
VEVTVCh0dXBsZV9zaXplX1Rlc3QsIFJldHVybnNOdW1iZXJPZkZpZWxkcykgewotICBFWFBFQ1Rf
RVEoMCwgK3R1cGxlX3NpemU8dHVwbGU8PiA+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9FUSgxLCArdHVw
bGVfc2l6ZTx0dXBsZTx2b2lkKj4gPjo6dmFsdWUpOwotICBFWFBFQ1RfRVEoMSwgK3R1cGxlX3Np
emU8dHVwbGU8Y2hhcj4gPjo6dmFsdWUpOwotICBFWFBFQ1RfRVEoMSwgKyh0dXBsZV9zaXplPHR1
cGxlPHR1cGxlPGludCwgZG91YmxlPiA+ID46OnZhbHVlKSk7Ci0gIEVYUEVDVF9FUSgyLCArKHR1
cGxlX3NpemU8dHVwbGU8aW50JiwgY29uc3QgY2hhcj4gPjo6dmFsdWUpKTsKLSAgRVhQRUNUX0VR
KDMsICsodHVwbGVfc2l6ZTx0dXBsZTxjaGFyKiwgdm9pZCwgY29uc3QgYm9vbCY+ID46OnZhbHVl
KSk7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyBhIHR1cGxlIHdpdGggaXRzZWxmLgotVEVTVChD
b21wYXJpc29uVGVzdCwgQ29tcGFyZXNXaXRoU2VsZikgewotICBjb25zdCB0dXBsZTxpbnQsIGNo
YXIsIGJvb2w+IGEoNSwgJ2EnLCBmYWxzZSk7Ci0KLSAgRVhQRUNUX1RSVUUoYSA9PSBhKTsKLSAg
RVhQRUNUX0ZBTFNFKGEgIT0gYSk7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyB0d28gdHVwbGVz
IHdpdGggdGhlIHNhbWUgdmFsdWUuCi1URVNUKENvbXBhcmlzb25UZXN0LCBDb21wYXJlc0VxdWFs
VHVwbGVzKSB7Ci0gIGNvbnN0IHR1cGxlPGludCwgYm9vbD4gYSg1LCB0cnVlKSwgYig1LCB0cnVl
KTsKLQotICBFWFBFQ1RfVFJVRShhID09IGIpOwotICBFWFBFQ1RfRkFMU0UoYSAhPSBiKTsKLX0K
LQotLy8gVGVzdHMgY29tcGFyaW5nIHR3byBkaWZmZXJlbnQgdHVwbGVzIHRoYXQgaGF2ZSBubyBy
ZWZlcmVuY2UgZmllbGRzLgotVEVTVChDb21wYXJpc29uVGVzdCwgQ29tcGFyZXNVbmVxdWFsVHVw
bGVzV2l0aG91dFJlZmVyZW5jZUZpZWxkcykgewotICB0eXBlZGVmIHR1cGxlPGNvbnN0IGludCwg
Y2hhcj4gRm9vVHVwbGU7Ci0KLSAgY29uc3QgRm9vVHVwbGUgYSgwLCAneCcpOwotICBjb25zdCBG
b29UdXBsZSBiKDEsICdhJyk7Ci0KLSAgRVhQRUNUX1RSVUUoYSAhPSBiKTsKLSAgRVhQRUNUX0ZB
TFNFKGEgPT0gYik7Ci0KLSAgY29uc3QgRm9vVHVwbGUgYygxLCAnYicpOwotCi0gIEVYUEVDVF9U
UlVFKGIgIT0gYyk7Ci0gIEVYUEVDVF9GQUxTRShiID09IGMpOwotfQotCi0vLyBUZXN0cyBjb21w
YXJpbmcgdHdvIGRpZmZlcmVudCB0dXBsZXMgdGhhdCBoYXZlIHJlZmVyZW5jZSBmaWVsZHMuCi1U
RVNUKENvbXBhcmlzb25UZXN0LCBDb21wYXJlc1VuZXF1YWxUdXBsZXNXaXRoUmVmZXJlbmNlRmll
bGRzKSB7Ci0gIHR5cGVkZWYgdHVwbGU8aW50JiwgY29uc3QgY2hhciY+IEZvb1R1cGxlOwotCi0g
IGludCBpID0gNTsKLSAgY29uc3QgY2hhciBjaCA9ICdhJzsKLSAgY29uc3QgRm9vVHVwbGUgYShp
LCBjaCk7Ci0KLSAgaW50IGogPSA2OwotICBjb25zdCBGb29UdXBsZSBiKGosIGNoKTsKLQotICBF
WFBFQ1RfVFJVRShhICE9IGIpOwotICBFWFBFQ1RfRkFMU0UoYSA9PSBiKTsKLQotICBqID0gNTsK
LSAgY29uc3QgY2hhciBjaDIgPSAnYic7Ci0gIGNvbnN0IEZvb1R1cGxlIGMoaiwgY2gyKTsKLQot
ICBFWFBFQ1RfVFJVRShiICE9IGMpOwotICBFWFBFQ1RfRkFMU0UoYiA9PSBjKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBhIHR1cGxlIGZpZWxkIHdpdGggYSByZWZlcmVuY2UgdHlwZSBpcyBhbiBhbGlh
cyBvZiB0aGUKLS8vIHZhcmlhYmxlIGl0J3Mgc3VwcG9zZWQgdG8gcmVmZXJlbmNlLgotVEVTVChS
ZWZlcmVuY2VGaWVsZFRlc3QsIElzQWxpYXNPZlJlZmVyZW5jZWRWYXJpYWJsZSkgewotICBpbnQg
biA9IDA7Ci0gIHR1cGxlPGJvb2wsIGludCY+IHQodHJ1ZSwgbik7Ci0KLSAgbiA9IDE7Ci0gIEVY
UEVDVF9FUShuLCBnZXQ8MT4odCkpCi0gICAgICA8PCAiQ2hhbmdpbmcgYSB1bmRlcmx5aW5nIHZh
cmlhYmxlIHNob3VsZCB1cGRhdGUgdGhlIHJlZmVyZW5jZSBmaWVsZC4iOwotCi0gIC8vIE1ha2Vz
IHN1cmUgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gZG9lc24ndCBkbyBhbnl0aGluZyBmdW5ueSB3
aXRoCi0gIC8vIHRoZSAmIG9wZXJhdG9yIGZvciB0aGUgcmV0dXJuIHR5cGUgb2YgZ2V0PD4oKS4K
LSAgRVhQRUNUX0VRKCZuLCAmKGdldDwxPih0KSkpCi0gICAgICA8PCAiVGhlIGFkZHJlc3Mgb2Yg
YSByZWZlcmVuY2UgZmllbGQgc2hvdWxkIGVxdWFsIHRoZSBhZGRyZXNzIG9mICIKLSAgICAgIDw8
ICJ0aGUgdW5kZXJseWluZyB2YXJpYWJsZS4iOwotCi0gIGdldDwxPih0KSA9IDI7Ci0gIEVYUEVD
VF9FUSgyLCBuKQotICAgICAgPDwgIkNoYW5naW5nIGEgcmVmZXJlbmNlIGZpZWxkIHNob3VsZCB1
cGRhdGUgdGhlIHVuZGVybHlpbmcgdmFyaWFibGUuIjsKLX0KLQotLy8gVGVzdHMgdGhhdCB0dXBs
ZSdzIGRlZmF1bHQgY29uc3RydWN0b3IgZGVmYXVsdCBpbml0aWFsaXplcyBlYWNoIGZpZWxkLgot
Ly8gVGhpcyB0ZXN0IG5lZWRzIHRvIGNvbXBpbGUgd2l0aG91dCBnZW5lcmF0aW5nIHdhcm5pbmdz
LgotVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yRGVmYXVsdElu
aXRpYWxpemVzRWFjaEZpZWxkKSB7Ci0gIC8vIFRoZSBUUjEgcmVwb3J0IHJlcXVpcmVzIHRoYXQg
dHVwbGUncyBkZWZhdWx0IGNvbnN0cnVjdG9yIGRlZmF1bHQKLSAgLy8gaW5pdGlhbGl6ZXMgZWFj
aCBmaWVsZCwgZXZlbiBpZiBpdCdzIGEgcHJpbWl0aXZlIHR5cGUuICBJZiB0aGUKLSAgLy8gaW1w
bGVtZW50YXRpb24gZm9yZ2V0cyB0byBkbyB0aGlzLCB0aGlzIHRlc3Qgd2lsbCBjYXRjaCBpdCBi
eQotICAvLyBnZW5lcmF0aW5nIHdhcm5pbmdzIGFib3V0IHVzaW5nIHVuaW5pdGlhbGl6ZWQgdmFy
aWFibGVzIChhc3N1bWluZwotICAvLyBhIGRlY2VudCBjb21waWxlcikuCi0KLSAgdHVwbGU8PiBl
bXB0eTsKLQotICB0dXBsZTxpbnQ+IGExLCBiMTsKLSAgYjEgPSBhMTsKLSAgRVhQRUNUX0VRKDAs
IGdldDwwPihiMSkpOwotCi0gIHR1cGxlPGludCwgZG91YmxlPiBhMiwgYjI7Ci0gIGIyID0gYTI7
Ci0gIEVYUEVDVF9FUSgwLCBnZXQ8MD4oYjIpKTsKLSAgRVhQRUNUX0VRKDAuMCwgZ2V0PDE+KGIy
KSk7Ci0KLSAgdHVwbGU8ZG91YmxlLCBjaGFyLCBib29sKj4gYTMsIGIzOwotICBiMyA9IGEzOwot
ICBFWFBFQ1RfRVEoMC4wLCBnZXQ8MD4oYjMpKTsKLSAgRVhQRUNUX0VRKCdcMCcsIGdldDwxPihi
MykpOwotICBFWFBFQ1RfVFJVRShnZXQ8Mj4oYjMpID09IE5VTEwpOwotCi0gIHR1cGxlPGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludD4gYTEwLCBiMTA7Ci0g
IGIxMCA9IGExMDsKLSAgRVhQRUNUX0VRKDAsIGdldDwwPihiMTApKTsKLSAgRVhQRUNUX0VRKDAs
IGdldDwxPihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDwyPihiMTApKTsKLSAgRVhQRUNUX0VR
KDAsIGdldDwzPihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDw0PihiMTApKTsKLSAgRVhQRUNU
X0VRKDAsIGdldDw1PihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDw2PihiMTApKTsKLSAgRVhQ
RUNUX0VRKDAsIGdldDw3PihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDw4PihiMTApKTsKLSAg
RVhQRUNUX0VRKDAsIGdldDw5PihiMTApKTsKLX0KLQotLy8gVGVzdHMgY29uc3RydWN0aW5nIGEg
dHVwbGUgZnJvbSBpdHMgZmllbGRzLgotVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgQ29uc3Ry
dWN0c0Zyb21GaWVsZHMpIHsKLSAgaW50IG4gPSAxOwotICAvLyBSZWZlcmVuY2UgZmllbGQuCi0g
IHR1cGxlPGludCY+IGEobik7Ci0gIEVYUEVDVF9FUSgmbiwgJihnZXQ8MD4oYSkpKTsKLQotICAv
LyBOb24tcmVmZXJlbmNlIGZpZWxkcy4KLSAgdHVwbGU8aW50LCBjaGFyPiBiKDUsICdhJyk7Ci0g
IEVYUEVDVF9FUSg1LCBnZXQ8MD4oYikpOwotICBFWFBFQ1RfRVEoJ2EnLCBnZXQ8MT4oYikpOwot
Ci0gIC8vIENvbnN0IHJlZmVyZW5jZSBmaWVsZC4KLSAgY29uc3QgaW50IG0gPSAyOwotICB0dXBs
ZTxib29sLCBjb25zdCBpbnQmPiBjKHRydWUsIG0pOwotICBFWFBFQ1RfVFJVRShnZXQ8MD4oYykp
OwotICBFWFBFQ1RfRVEoJm0sICYoZ2V0PDE+KGMpKSk7Ci19Ci0KLS8vIFRlc3RzIHR1cGxlJ3Mg
Y29weSBjb25zdHJ1Y3Rvci4KLVRFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3QsIENvcHlDb25zdHJ1
Y3RvcikgewotICB0dXBsZTxkb3VibGUsIGJvb2w+IGEoMC4wLCB0cnVlKTsKLSAgdHVwbGU8ZG91
YmxlLCBib29sPiBiKGEpOwotCi0gIEVYUEVDVF9ET1VCTEVfRVEoMC4wLCBnZXQ8MD4oYikpOwot
ICBFWFBFQ1RfVFJVRShnZXQ8MT4oYikpOwotfQotCi0vLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSB0
dXBsZSBmcm9tIGFub3RoZXIgdHVwbGUgdGhhdCBoYXMgYSBjb21wYXRpYmxlCi0vLyBidXQgZGlm
ZmVyZW50IHR5cGUuCi1URVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBDb25zdHJ1Y3RzRnJvbURp
ZmZlcmVudFR1cGxlVHlwZSkgewotICB0dXBsZTxpbnQsIGludCwgY2hhcj4gYSgwLCAxLCAnYScp
OwotICB0dXBsZTxkb3VibGUsIGxvbmcsIGludD4gYihhKTsKLQotICBFWFBFQ1RfRE9VQkxFX0VR
KDAuMCwgZ2V0PDA+KGIpKTsKLSAgRVhQRUNUX0VRKDEsIGdldDwxPihiKSk7Ci0gIEVYUEVDVF9F
USgnYScsIGdldDwyPihiKSk7Ci19Ci0KLS8vIFRlc3RzIGNvbnN0cnVjdGluZyBhIDItdHVwbGUg
ZnJvbSBhbiBzdGQ6OnBhaXIuCi1URVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBDb25zdHJ1Y3Rz
RnJvbVBhaXIpIHsKLSAgOjpzdGQ6OnBhaXI8aW50LCBjaGFyPiBhKDEsICdhJyk7Ci0gIHR1cGxl
PGludCwgY2hhcj4gYihhKTsKLSAgdHVwbGU8aW50LCBjb25zdCBjaGFyJj4gYyhhKTsKLX0KLQot
Ly8gVGVzdHMgYXNzaWduaW5nIGEgdHVwbGUgdG8gYW5vdGhlciB0dXBsZSB3aXRoIHRoZSBzYW1l
IHR5cGUuCi1URVNUKFR1cGxlQXNzaWdubWVudFRlc3QsIEFzc2lnbnNUb1NhbWVUdXBsZVR5cGUp
IHsKLSAgY29uc3QgdHVwbGU8aW50LCBsb25nPiBhKDUsIDdMKTsKLSAgdHVwbGU8aW50LCBsb25n
PiBiOwotICBiID0gYTsKLSAgRVhQRUNUX0VRKDUsIGdldDwwPihiKSk7Ci0gIEVYUEVDVF9FUSg3
TCwgZ2V0PDE+KGIpKTsKLX0KLQotLy8gVGVzdHMgYXNzaWduaW5nIGEgdHVwbGUgdG8gYW5vdGhl
ciB0dXBsZSB3aXRoIGEgZGlmZmVyZW50IGJ1dAotLy8gY29tcGF0aWJsZSB0eXBlLgotVEVTVChU
dXBsZUFzc2lnbm1lbnRUZXN0LCBBc3NpZ25zVG9EaWZmZXJlbnRUdXBsZVR5cGUpIHsKLSAgY29u
c3QgdHVwbGU8aW50LCBsb25nLCBib29sPiBhKDEsIDdMLCB0cnVlKTsKLSAgdHVwbGU8bG9uZywg
aW50LCBib29sPiBiOwotICBiID0gYTsKLSAgRVhQRUNUX0VRKDFMLCBnZXQ8MD4oYikpOwotICBF
WFBFQ1RfRVEoNywgZ2V0PDE+KGIpKTsKLSAgRVhQRUNUX1RSVUUoZ2V0PDI+KGIpKTsKLX0KLQot
Ly8gVGVzdHMgYXNzaWduaW5nIGFuIHN0ZDo6cGFpciB0byBhIDItdHVwbGUuCi1URVNUKFR1cGxl
QXNzaWdubWVudFRlc3QsIEFzc2lnbnNGcm9tUGFpcikgewotICBjb25zdCA6OnN0ZDo6cGFpcjxp
bnQsIGJvb2w+IGEoNSwgdHJ1ZSk7Ci0gIHR1cGxlPGludCwgYm9vbD4gYjsKLSAgYiA9IGE7Ci0g
IEVYUEVDVF9FUSg1LCBnZXQ8MD4oYikpOwotICBFWFBFQ1RfVFJVRShnZXQ8MT4oYikpOwotCi0g
IHR1cGxlPGxvbmcsIGJvb2w+IGM7Ci0gIGMgPSBhOwotICBFWFBFQ1RfRVEoNUwsIGdldDwwPihj
KSk7Ci0gIEVYUEVDVF9UUlVFKGdldDwxPihjKSk7Ci19Ci0KLS8vIEEgZml4dHVyZSBmb3IgdGVz
dGluZyBiaWcgdHVwbGVzLgotY2xhc3MgQmlnVHVwbGVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewotIHByb3RlY3RlZDoKLSAgdHlwZWRlZiB0dXBsZTxpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQ+IEJpZ1R1cGxlOwotCi0gIEJpZ1R1cGxlVGVzdCgp
IDoKLSAgICAgIGFfKDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIpLAotICAgICAgYl8oMSwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMykge30KLQotICBCaWdUdXBsZSBhXywgYl87Ci19Owot
Ci0vLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYmlnIHR1cGxlcy4KLVRFU1RfRihCaWdUdXBsZVRlc3Qs
IENvbnN0cnVjdGlvbikgewotICBCaWdUdXBsZSBhOwotICBCaWdUdXBsZSBiKGJfKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBnZXQ8Tj4odCkgcmV0dXJucyB0aGUgTi10aCAoMC1iYXNlZCkgZmllbGQg
b2YgdHVwbGUgdC4KLVRFU1RfRihCaWdUdXBsZVRlc3QsIGdldCkgewotICBFWFBFQ1RfRVEoMSwg
Z2V0PDA+KGFfKSk7Ci0gIEVYUEVDVF9FUSgyLCBnZXQ8OT4oYV8pKTsKLQotICAvLyBUZXN0cyB0
aGF0IGdldCgpIHdvcmtzIG9uIGEgY29uc3QgdHVwbGUgdG9vLgotICBjb25zdCBCaWdUdXBsZSBh
KGFfKTsKLSAgRVhQRUNUX0VRKDEsIGdldDwwPihhKSk7Ci0gIEVYUEVDVF9FUSgyLCBnZXQ8OT4o
YSkpOwotfQotCi0vLyBUZXN0cyBjb21wYXJpbmcgYmlnIHR1cGxlcy4KLVRFU1RfRihCaWdUdXBs
ZVRlc3QsIENvbXBhcmlzb25zKSB7Ci0gIEVYUEVDVF9UUlVFKGFfID09IGFfKTsKLSAgRVhQRUNU
X0ZBTFNFKGFfICE9IGFfKTsKLQotICBFWFBFQ1RfVFJVRShhXyAhPSBiXyk7Ci0gIEVYUEVDVF9G
QUxTRShhXyA9PSBiXyk7Ci19Ci0KLVRFU1QoTWFrZVR1cGxlVGVzdCwgV29ya3NGb3JTY2FsYXJU
eXBlcykgewotICB0dXBsZTxib29sLCBpbnQ+IGE7Ci0gIGEgPSBtYWtlX3R1cGxlKHRydWUsIDUp
OwotICBFWFBFQ1RfVFJVRShnZXQ8MD4oYSkpOwotICBFWFBFQ1RfRVEoNSwgZ2V0PDE+KGEpKTsK
LQotICB0dXBsZTxjaGFyLCBpbnQsIGxvbmc+IGI7Ci0gIGIgPSBtYWtlX3R1cGxlKCdhJywgJ2In
LCA1KTsKLSAgRVhQRUNUX0VRKCdhJywgZ2V0PDA+KGIpKTsKLSAgRVhQRUNUX0VRKCdiJywgZ2V0
PDE+KGIpKTsKLSAgRVhQRUNUX0VRKDUsIGdldDwyPihiKSk7Ci19Ci0KLVRFU1QoTWFrZVR1cGxl
VGVzdCwgV29ya3NGb3JQb2ludGVycykgewotICBpbnQgYVtdID0geyAxLCAyLCAzLCA0IH07Ci0g
IGNvbnN0IGNoYXIqIGNvbnN0IHN0ciA9ICJoaSI7Ci0gIGludCogY29uc3QgcCA9IGE7Ci0KLSAg
dHVwbGU8Y29uc3QgY2hhciosIGludCo+IHQ7Ci0gIHQgPSBtYWtlX3R1cGxlKHN0ciwgcCk7Ci0g
IEVYUEVDVF9FUShzdHIsIGdldDwwPih0KSk7Ci0gIEVYUEVDVF9FUShwLCBnZXQ8MT4odCkpOwot
fQotCi19ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYwppbmRleCA3OWE4YTg3ZGNmZGJkZTUzYzFl
MGQ4YzZkMTFhOTg2OTIyYjAyZmY4Li5lZDk2NDIxYzY3Y2E4YTJmYjM4ZjNkODg5NjAyMzFlZjIy
YmVhNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5
cGVkLXRlc3QyX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dC10eXBlZC10ZXN0Ml90ZXN0LmNjCkBAIC0yNiwxMyArMjYsMTIgQEAKIC8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
IC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUg
InRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgiCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
KyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRl
c3RfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVz
dF90ZXN0LmNjCmluZGV4IGYyYzM5NzIzMTAxNzc5ZTc3MTg0N2Q1OTJkOWZhYmI1NmYzYjQ1YzYu
LmMzOGJiOTRhMjkwZDkxNDAzMjI5MTE5ZTMwYjlmZGM1NTg5NmE0ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNjCkBA
IC0yNiwxNCArMjYsMTggQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisK
KworI2luY2x1ZGUgInRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgiCiAKICNpbmNsdWRlIDxz
ZXQ+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAidGVzdC9ndGVzdC10eXBlZC10ZXN0
X3Rlc3QuaCIKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCisKKyNpZiBfTVNDX1ZFUgorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDEy
NyAvKiBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50ICovKQorI2VuZGlmICAvLyAg
X01TQ19WRVIKIAogdXNpbmcgdGVzdGluZzo6VGVzdDsKIApAQCAtMTY1LDYgKzE2OSw0MCBAQCBU
WVBFRF9URVNUKE51bWVyaWNUZXN0LCBEZWZhdWx0SXNaZXJvKSB7CiAKIH0gIC8vIG5hbWVzcGFj
ZSBsaWJyYXJ5MQogCisvLyBUZXN0cyB0aGF0IGN1c3RvbSBuYW1lcyB3b3JrLgordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlZFRlc3RXaXRoTmFtZXMgOiBwdWJsaWMgVGVzdCB7fTsK
KworY2xhc3MgVHlwZWRUZXN0TmFtZXMgeworIHB1YmxpYzoKKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBHZXROYW1lKGludCBpKSB7CisgICAgaWYgKHRlc3Rp
bmc6OmludGVybmFsOjpJc1NhbWU8VCwgY2hhcj46OnZhbHVlKSB7CisgICAgICByZXR1cm4gc3Rk
OjpzdHJpbmcoImNoYXJfIikgKyA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoaSk7CisgICAgfQor
ICAgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFQsIGludD46OnZhbHVlKSB7CisgICAg
ICByZXR1cm4gc3RkOjpzdHJpbmcoImludF8iKSArIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhp
KTsKKyAgICB9CisgIH0KK307CisKK1RZUEVEX1RFU1RfQ0FTRShUeXBlZFRlc3RXaXRoTmFtZXMs
IFR3b1R5cGVzLCBUeXBlZFRlc3ROYW1lcyk7CisKK1RZUEVEX1RFU1QoVHlwZWRUZXN0V2l0aE5h
bWVzLCBUZXN0Q2FzZU5hbWUpIHsKKyAgaWYgKHRlc3Rpbmc6OmludGVybmFsOjpJc1NhbWU8VHlw
ZVBhcmFtLCBjaGFyPjo6dmFsdWUpIHsKKyAgICBFWFBFQ1RfU1RSRVEoOjp0ZXN0aW5nOjpVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKQorICAgICAgICAgICAgICAgICAgICAgLT5jdXJyZW50X3Rlc3Rf
aW5mbygpCisgICAgICAgICAgICAgICAgICAgICAtPnRlc3RfY2FzZV9uYW1lKCksCisgICAgICAg
ICAgICAgICAgICJUeXBlZFRlc3RXaXRoTmFtZXMvY2hhcl8wIik7CisgIH0KKyAgaWYgKHRlc3Rp
bmc6OmludGVybmFsOjpJc1NhbWU8VHlwZVBhcmFtLCBpbnQ+Ojp2YWx1ZSkgeworICAgIEVYUEVD
VF9TVFJFUSg6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpCisgICAgICAgICAgICAg
ICAgICAgICAtPmN1cnJlbnRfdGVzdF9pbmZvKCkKKyAgICAgICAgICAgICAgICAgICAgIC0+dGVz
dF9jYXNlX25hbWUoKSwKKyAgICAgICAgICAgICAgICAgIlR5cGVkVGVzdFdpdGhOYW1lcy9pbnRf
MSIpOworICB9Cit9CisKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QKIAogLy8gVGhp
cyAjaWZkZWYgYmxvY2sgdGVzdHMgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgpAQCAtMjY1LDYg
KzMwMyw0NiBAQCBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChEZXJpdmVkVGVzdCwKIHR5cGVk
ZWYgVHlwZXM8c2hvcnQsIGxvbmc+IE15VHdvVHlwZXM7CiBJTlNUQU5USUFURV9UWVBFRF9URVNU
X0NBU0VfUChNeSwgRGVyaXZlZFRlc3QsIE15VHdvVHlwZXMpOwogCisvLyBUZXN0cyB0aGF0IGN1
c3RvbSBuYW1lcyB3b3JrIHdpdGggdHlwZSBwYXJhbWV0cml6ZWQgdGVzdHMuIFdlIHJldXNlIHRo
ZQorLy8gVHdvVHlwZXMgZnJvbSBhYm92ZSBoZXJlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citj
bGFzcyBUeXBlUGFyYW1ldHJpemVkVGVzdFdpdGhOYW1lcyA6IHB1YmxpYyBUZXN0IHt9OworCitU
WVBFRF9URVNUX0NBU0VfUChUeXBlUGFyYW1ldHJpemVkVGVzdFdpdGhOYW1lcyk7CisKK1RZUEVE
X1RFU1RfUChUeXBlUGFyYW1ldHJpemVkVGVzdFdpdGhOYW1lcywgVGVzdENhc2VOYW1lKSB7Cisg
IGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFR5cGVQYXJhbSwgY2hhcj46OnZhbHVlKSB7
CisgICAgRVhQRUNUX1NUUkVRKDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCkKKyAg
ICAgICAgICAgICAgICAgICAgIC0+Y3VycmVudF90ZXN0X2luZm8oKQorICAgICAgICAgICAgICAg
ICAgICAgLT50ZXN0X2Nhc2VfbmFtZSgpLAorICAgICAgICAgICAgICAgICAiQ3VzdG9tTmFtZS9U
eXBlUGFyYW1ldHJpemVkVGVzdFdpdGhOYW1lcy9wX2NoYXJfMCIpOworICB9CisgIGlmICh0ZXN0
aW5nOjppbnRlcm5hbDo6SXNTYW1lPFR5cGVQYXJhbSwgaW50Pjo6dmFsdWUpIHsKKyAgICBFWFBF
Q1RfU1RSRVEoOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKQorICAgICAgICAgICAg
ICAgICAgICAgLT5jdXJyZW50X3Rlc3RfaW5mbygpCisgICAgICAgICAgICAgICAgICAgICAtPnRl
c3RfY2FzZV9uYW1lKCksCisgICAgICAgICAgICAgICAgICJDdXN0b21OYW1lL1R5cGVQYXJhbWV0
cml6ZWRUZXN0V2l0aE5hbWVzL3BfaW50XzEiKTsKKyAgfQorfQorCitSRUdJU1RFUl9UWVBFRF9U
RVNUX0NBU0VfUChUeXBlUGFyYW1ldHJpemVkVGVzdFdpdGhOYW1lcywgVGVzdENhc2VOYW1lKTsK
KworY2xhc3MgVHlwZVBhcmFtZXRyaXplZFRlc3ROYW1lcyB7CisgcHVibGljOgorICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldE5hbWUoaW50IGkpIHsKKyAg
ICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxULCBjaGFyPjo6dmFsdWUpIHsKKyAgICAg
IHJldHVybiBzdGQ6OnN0cmluZygicF9jaGFyXyIpICsgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5n
KGkpOworICAgIH0KKyAgICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxULCBpbnQ+Ojp2
YWx1ZSkgeworICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCJwX2ludF8iKSArIDo6dGVzdGluZzo6
UHJpbnRUb1N0cmluZyhpKTsKKyAgICB9CisgIH0KK307CisKK0lOU1RBTlRJQVRFX1RZUEVEX1RF
U1RfQ0FTRV9QKEN1c3RvbU5hbWUsIFR5cGVQYXJhbWV0cml6ZWRUZXN0V2l0aE5hbWVzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVHdvVHlwZXMsIFR5cGVQYXJhbWV0cml6ZWRUZXN0
TmFtZXMpOworCiAvLyBUZXN0cyB0aGF0IG11bHRpcGxlIFRZUEVEX1RFU1RfQ0FTRV9QJ3MgY2Fu
IGJlIGRlZmluZWQgaW4gdGhlIHNhbWUKIC8vIHRyYW5zbGF0aW9uIHVuaXQuCiAKQEAgLTM0Myw2
ICs0MjEsMjUgQEAgUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoTnVtZXJpY1Rlc3QsCiB0eXBl
ZGVmIFR5cGVzPGludCwgZG91YmxlPiBOdW1lcmljVHlwZXM7CiBJTlNUQU5USUFURV9UWVBFRF9U
RVNUX0NBU0VfUChNeSwgTnVtZXJpY1Rlc3QsIE51bWVyaWNUeXBlcyk7CiAKK3N0YXRpYyBjb25z
dCBjaGFyKiBHZXRUZXN0TmFtZSgpIHsKKyAgcmV0dXJuIHRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpLT5uYW1lKCk7Cit9CisvLyBUZXN0IHRoZSBz
dHJpcHBpbmcgb2Ygc3BhY2UgZnJvbSB0ZXN0IG5hbWVzCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgVHJpbW1lZFRlc3QgOiBwdWJsaWMgVGVzdCB7IH07CitUWVBFRF9URVNUX0NBU0VfUChU
cmltbWVkVGVzdCk7CitUWVBFRF9URVNUX1AoVHJpbW1lZFRlc3QsIFRlc3QxKSB7IEVYUEVDVF9T
VFJFUSgiVGVzdDEiLCBHZXRUZXN0TmFtZSgpKTsgfQorVFlQRURfVEVTVF9QKFRyaW1tZWRUZXN0
LCBUZXN0MikgeyBFWFBFQ1RfU1RSRVEoIlRlc3QyIiwgR2V0VGVzdE5hbWUoKSk7IH0KK1RZUEVE
X1RFU1RfUChUcmltbWVkVGVzdCwgVGVzdDMpIHsgRVhQRUNUX1NUUkVRKCJUZXN0MyIsIEdldFRl
c3ROYW1lKCkpOyB9CitUWVBFRF9URVNUX1AoVHJpbW1lZFRlc3QsIFRlc3Q0KSB7IEVYUEVDVF9T
VFJFUSgiVGVzdDQiLCBHZXRUZXN0TmFtZSgpKTsgfQorVFlQRURfVEVTVF9QKFRyaW1tZWRUZXN0
LCBUZXN0NSkgeyBFWFBFQ1RfU1RSRVEoIlRlc3Q1IiwgR2V0VGVzdE5hbWUoKSk7IH0KK1JFR0lT
VEVSX1RZUEVEX1RFU1RfQ0FTRV9QKAorICAgIFRyaW1tZWRUZXN0LAorICAgIFRlc3QxLCBUZXN0
MixUZXN0MyAsIFRlc3Q0ICxUZXN0NSApOyAgLy8gTk9MSU5UCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyPiBzdHJ1Y3QgTXlQYWlyIHt9OworLy8gQmUgc3VyZSB0byB0cnkgYSB0
eXBlIHdpdGggYSBjb21tYSBpbiBpdHMgbmFtZSBqdXN0IGluIGNhc2UgaXQgbWF0dGVycy4KK3R5
cGVkZWYgVHlwZXM8aW50LCBkb3VibGUsIE15UGFpcjxpbnQsIGludD4gPiBUcmltVHlwZXM7CitJ
TlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgVHJpbW1lZFRlc3QsIFRyaW1UeXBlcyk7
CisKIH0gIC8vIG5hbWVzcGFjZSBsaWJyYXJ5MgogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBF
RF9URVNUX1AKQEAgLTM1Nyw0ICs0NTQsOCBAQCBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0Vf
UChNeSwgTnVtZXJpY1Rlc3QsIE51bWVyaWNUeXBlcyk7CiAvLyBtdXN0IGJlIGRlZmluZWQpLiBU
aGlzIGR1bW15IHRlc3Qga2VlcHMgZ3Rlc3RfbWFpbiBsaW5rZWQgaW4uCiBURVNUKER1bW15VGVz
dCwgVHlwZWRUZXN0c0FyZU5vdFN1cHBvcnRlZE9uVGhpc1BsYXRmb3JtKSB7fQogCisjaWYgX01T
Q19WRVIKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQxMjcKKyNlbmRp
ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIF9NU0NfVkVSCisKICNlbmRpZiAgLy8g
I2lmICFkZWZpbmVkKEdURVNUX0hBU19UWVBFRF9URVNUKSAmJiAhZGVmaW5lZChHVEVTVF9IQVNf
VFlQRURfVEVTVF9QKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdC10eXBlZC10ZXN0X3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3QtdHlwZWQtdGVzdF90ZXN0LmgKaW5kZXggNDBkZmVhYzZlMDFkOTdlY2Y3ZmViYjg2NWZjZTY2
ODQ4YmE4ZThkYi4uMmNjZTY3YzgyNWE2Y2FiZGI5YTU0YjkxOTI5YzAwYzk5MmEwZDQ3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rl
c3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3Rf
dGVzdC5oCkBAIC0yNiwxMyArMjYsMTIgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9u
ZyBXYW4pCisKIAogI2lmbmRlZiBHVEVTVF9URVNUX0dURVNUX1RZUEVEX1RFU1RfVEVTVF9IXwog
I2RlZmluZSBHVEVTVF9URVNUX0dURVNUX1RZUEVEX1RFU1RfVEVTVF9IXwogCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAjaWYgR1RFU1RfSEFT
X1RZUEVEX1RFU1RfUAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYwppbmRleCA3ZTBmOGY4MDQ1ZDcxYzAxNWQxMjk0
ZmZlZjRjYTU0NWRkYzU1MWY5Li5mM2VhMDNhNTk2ZDBmOTlhMzkxMjUyNjMwZGNhMTA2MjI5MzEx
MmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXVuaXR0
ZXN0LWFwaV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Qt
dW5pdHRlc3QtYXBpX3Rlc3QuY2MKQEAgLTI1LDE1ICsyNSwxNCBAQAogLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAog
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB2bGFkbEBn
b29nbGUuY29tIChWbGFkIExvc2V2KQotLy8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJh
bWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tp
bmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAvLyBUaGlzIGZpbGUgY29udGFpbnMgdGVz
dHMgdmVyaWZ5aW5nIGNvcnJlY3RuZXNzIG9mIGRhdGEgcHJvdmlkZWQgdmlhCiAvLyBVbml0VGVz
dCdzIHB1YmxpYyBtZXRob2RzLgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgogCiAjaW5jbHVkZSA8c3RyaW5nLmg+ICAvLyBGb3Igc3RyY21wLgog
I2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTU0LDcgKzUzLDcgQEAgY2xhc3MgVW5pdFRlc3RIZWxw
ZXIgewogIHB1YmxpYzoKICAgLy8gUmV0dXJucyB0aGUgYXJyYXkgb2YgcG9pbnRlcnMgdG8gYWxs
IHRlc3QgY2FzZXMgc29ydGVkIGJ5IHRoZSB0ZXN0IGNhc2UKICAgLy8gbmFtZS4gIFRoZSBjYWxs
ZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZSBhcnJheS4KLSAgc3RhdGljIFRlc3RD
YXNlIGNvbnN0KiogY29uc3QgR2V0U29ydGVkVGVzdENhc2VzKCkgeworICBzdGF0aWMgVGVzdENh
c2UgY29uc3QqKiBHZXRTb3J0ZWRUZXN0Q2FzZXMoKSB7CiAgICAgVW5pdFRlc3QmIHVuaXRfdGVz
dCA9ICpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKTsKICAgICBUZXN0Q2FzZSBjb25zdCoqIGNvbnN0
IHRlc3RfY2FzZXMgPQogICAgICAgICBuZXcgY29uc3QgVGVzdENhc2UqW3VuaXRfdGVzdC50b3Rh
bF90ZXN0X2Nhc2VfY291bnQoKV07CkBAIC04Myw3ICs4Miw3IEBAIGNsYXNzIFVuaXRUZXN0SGVs
cGVyIHsKICAgLy8gUmV0dXJucyB0aGUgYXJyYXkgb2YgcG9pbnRlcnMgdG8gYWxsIHRlc3RzIGlu
IGEgcGFydGljdWxhciB0ZXN0IGNhc2UKICAgLy8gc29ydGVkIGJ5IHRoZSB0ZXN0IG5hbWUuICBU
aGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUKICAgLy8gYXJyYXkuCi0g
IHN0YXRpYyBUZXN0SW5mbyBjb25zdCoqIGNvbnN0IEdldFNvcnRlZFRlc3RzKGNvbnN0IFRlc3RD
YXNlKiB0ZXN0X2Nhc2UpIHsKKyAgc3RhdGljIFRlc3RJbmZvIGNvbnN0KiogR2V0U29ydGVkVGVz
dHMoY29uc3QgVGVzdENhc2UqIHRlc3RfY2FzZSkgewogICAgIFRlc3RJbmZvIGNvbnN0KiogY29u
c3QgdGVzdHMgPQogICAgICAgICBuZXcgY29uc3QgVGVzdEluZm8qW3Rlc3RfY2FzZS0+dG90YWxf
dGVzdF9jb3VudCgpXTsKIApAQCAtMTAzLDEyICsxMDIsNiBAQCBUWVBFRF9URVNUKFRlc3RDYXNl
V2l0aENvbW1lbnRUZXN0LCBEdW1teSkge30KIAogY29uc3QgaW50IGtUeXBlZFRlc3RDYXNlcyA9
IDE7CiBjb25zdCBpbnQga1R5cGVkVGVzdHMgPSAxOwotCi1TdHJpbmcgR2V0RXhwZWN0ZWRUZXN0
Q2FzZUNvbW1lbnQoKSB7Ci0gIE1lc3NhZ2UgY29tbWVudDsKLSAgY29tbWVudCA8PCAiVHlwZVBh
cmFtID0gIiA8PCBHZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIoKTsKLSAgcmV0dXJuIGNvbW1lbnQu
R2V0U3RyaW5nKCk7Ci19CiAjZWxzZQogY29uc3QgaW50IGtUeXBlZFRlc3RDYXNlcyA9IDA7CiBj
b25zdCBpbnQga1R5cGVkVGVzdHMgPSAwOwpAQCAtMTQzLDEyICsxMzYsMTkgQEAgVEVTVChBcGlU
ZXN0LCBVbml0VGVzdEltbXV0YWJsZUFjY2Vzc29yc1dvcmspIHsKICAgUmVjb3JkUHJvcGVydHko
ImtleSIsICJ2YWx1ZSIpOwogfQogCitBc3NlcnRpb25SZXN1bHQgSXNOdWxsKGNvbnN0IGNoYXIq
IHN0cikgeworICBpZiAoc3RyICE9IE5VTEwpIHsKKyAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0
aW9uRmFpbHVyZSgpIDw8ICJhcmd1bWVudCBpcyAiIDw8IHN0cjsKKyAgfQorICByZXR1cm4gQXNz
ZXJ0aW9uU3VjY2VzcygpOworfQorCiBURVNUKEFwaVRlc3QsIFRlc3RDYXNlSW1tdXRhYmxlQWNj
ZXNzb3JzV29yaykgewogICBjb25zdCBUZXN0Q2FzZSogdGVzdF9jYXNlID0gVW5pdFRlc3RIZWxw
ZXI6OkZpbmRUZXN0Q2FzZSgiQXBpVGVzdCIpOwogICBBU1NFUlRfVFJVRSh0ZXN0X2Nhc2UgIT0g
TlVMTCk7CiAKICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdF9jYXNlLT5uYW1lKCkpOwot
ICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RfY2FzZS0+Y29tbWVudCgpKTsKKyAgRVhQRUNUX1RSVUUo
SXNOdWxsKHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVDVF9UUlVFKHRlc3RfY2Fz
ZS0+c2hvdWxkX3J1bigpKTsKICAgRVhQRUNUX0VRKDEsIHRlc3RfY2FzZS0+ZGlzYWJsZWRfdGVz
dF9jb3VudCgpKTsKICAgRVhQRUNUX0VRKDMsIHRlc3RfY2FzZS0+dGVzdF90b19ydW5fY291bnQo
KSk7CkBAIC0xNTgsMjYgKzE1OCwyNiBAQCBURVNUKEFwaVRlc3QsIFRlc3RDYXNlSW1tdXRhYmxl
QWNjZXNzb3JzV29yaykgewogCiAgIEVYUEVDVF9TVFJFUSgiRElTQUJMRURfRHVtbXkxIiwgdGVz
dHNbMF0tPm5hbWUoKSk7CiAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzBdLT50ZXN0
X2Nhc2VfbmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1swXS0+Y29tbWVudCgpKTsK
LSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1swXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgIEVY
UEVDVF9UUlVFKElzTnVsbCh0ZXN0c1swXS0+dmFsdWVfcGFyYW0oKSkpOworICBFWFBFQ1RfVFJV
RShJc051bGwodGVzdHNbMF0tPnR5cGVfcGFyYW0oKSkpOwogICBFWFBFQ1RfRkFMU0UodGVzdHNb
MF0tPnNob3VsZF9ydW4oKSk7CiAKICAgRVhQRUNUX1NUUkVRKCJUZXN0Q2FzZURpc2FibGVkQWNj
ZXNzb3JzV29yayIsIHRlc3RzWzFdLT5uYW1lKCkpOwogICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3Qi
LCB0ZXN0c1sxXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNb
MV0tPmNvbW1lbnQoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMV0tPnRlc3RfY2FzZV9j
b21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMV0tPnZhbHVlX3BhcmFtKCkp
KTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzFdLT50eXBlX3BhcmFtKCkpKTsKICAgRVhQ
RUNUX1RSVUUodGVzdHNbMV0tPnNob3VsZF9ydW4oKSk7CiAKICAgRVhQRUNUX1NUUkVRKCJUZXN0
Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dvcmsiLCB0ZXN0c1syXS0+bmFtZSgpKTsKICAgRVhQRUNU
X1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbMl0tPnRlc3RfY2FzZV9uYW1lKCkpOwotICBFWFBFQ1Rf
U1RSRVEoIiIsIHRlc3RzWzJdLT5jb21tZW50KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3Rz
WzJdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzJd
LT52YWx1ZV9wYXJhbSgpKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1syXS0+dHlwZV9w
YXJhbSgpKSk7CiAgIEVYUEVDVF9UUlVFKHRlc3RzWzJdLT5zaG91bGRfcnVuKCkpOwogCiAgIEVY
UEVDVF9TVFJFUSgiVW5pdFRlc3RJbW11dGFibGVBY2Nlc3NvcnNXb3JrIiwgdGVzdHNbM10tPm5h
bWUoKSk7CiAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzNdLT50ZXN0X2Nhc2VfbmFt
ZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1szXS0+Y29tbWVudCgpKTsKLSAgRVhQRUNU
X1NUUkVRKCIiLCB0ZXN0c1szXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgIEVYUEVDVF9UUlVF
KElzTnVsbCh0ZXN0c1szXS0+dmFsdWVfcGFyYW0oKSkpOworICBFWFBFQ1RfVFJVRShJc051bGwo
dGVzdHNbM10tPnR5cGVfcGFyYW0oKSkpOwogICBFWFBFQ1RfVFJVRSh0ZXN0c1szXS0+c2hvdWxk
X3J1bigpKTsKIAogICBkZWxldGVbXSB0ZXN0czsKQEAgLTE4OCw3ICsxODgsNyBAQCBURVNUKEFw
aVRlc3QsIFRlc3RDYXNlSW1tdXRhYmxlQWNjZXNzb3JzV29yaykgewogICBBU1NFUlRfVFJVRSh0
ZXN0X2Nhc2UgIT0gTlVMTCk7CiAKICAgRVhQRUNUX1NUUkVRKCJUZXN0Q2FzZVdpdGhDb21tZW50
VGVzdC8wIiwgdGVzdF9jYXNlLT5uYW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoR2V0RXhwZWN0ZWRU
ZXN0Q2FzZUNvbW1lbnQoKS5jX3N0cigpLCB0ZXN0X2Nhc2UtPmNvbW1lbnQoKSk7CisgIEVYUEVD
VF9TVFJFUShHZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIoKSwgdGVzdF9jYXNlLT50eXBlX3BhcmFt
KCkpOwogICBFWFBFQ1RfVFJVRSh0ZXN0X2Nhc2UtPnNob3VsZF9ydW4oKSk7CiAgIEVYUEVDVF9F
USgwLCB0ZXN0X2Nhc2UtPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgIEVYUEVDVF9FUSgxLCB0
ZXN0X2Nhc2UtPnRlc3RfdG9fcnVuX2NvdW50KCkpOwpAQCAtMTk4LDkgKzE5OCw4IEBAIFRFU1Qo
QXBpVGVzdCwgVGVzdENhc2VJbW11dGFibGVBY2Nlc3NvcnNXb3JrKSB7CiAKICAgRVhQRUNUX1NU
UkVRKCJEdW1teSIsIHRlc3RzWzBdLT5uYW1lKCkpOwogICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNl
V2l0aENvbW1lbnRUZXN0LzAiLCB0ZXN0c1swXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVD
VF9TVFJFUSgiIiwgdGVzdHNbMF0tPmNvbW1lbnQoKSk7Ci0gIEVYUEVDVF9TVFJFUShHZXRFeHBl
Y3RlZFRlc3RDYXNlQ29tbWVudCgpLmNfc3RyKCksCi0gICAgICAgICAgICAgICB0ZXN0c1swXS0+
dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1swXS0+dmFs
dWVfcGFyYW0oKSkpOworICBFWFBFQ1RfU1RSRVEoR2V0VHlwZU5hbWU8aW50PigpLmNfc3RyKCks
IHRlc3RzWzBdLT50eXBlX3BhcmFtKCkpOwogICBFWFBFQ1RfVFJVRSh0ZXN0c1swXS0+c2hvdWxk
X3J1bigpKTsKIAogICBkZWxldGVbXSB0ZXN0czsKQEAgLTIxMiw3ICsyMTEsNyBAQCBURVNUKEFw
aVRlc3QsIFRlc3RDYXNlRGlzYWJsZWRBY2Nlc3NvcnNXb3JrKSB7CiAgIEFTU0VSVF9UUlVFKHRl
c3RfY2FzZSAhPSBOVUxMKTsKIAogICBFWFBFQ1RfU1RSRVEoIkRJU0FCTEVEX1Rlc3QiLCB0ZXN0
X2Nhc2UtPm5hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdF9jYXNlLT5jb21tZW50KCkp
OworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdF9jYXNlLT50eXBlX3BhcmFtKCkpKTsKICAgRVhQ
RUNUX0ZBTFNFKHRlc3RfY2FzZS0+c2hvdWxkX3J1bigpKTsKICAgRVhQRUNUX0VRKDEsIHRlc3Rf
Y2FzZS0+ZGlzYWJsZWRfdGVzdF9jb3VudCgpKTsKICAgRVhQRUNUX0VRKDAsIHRlc3RfY2FzZS0+
dGVzdF90b19ydW5fY291bnQoKSk7CkBAIC0yMjEsOCArMjIwLDggQEAgVEVTVChBcGlUZXN0LCBU
ZXN0Q2FzZURpc2FibGVkQWNjZXNzb3JzV29yaykgewogICBjb25zdCBUZXN0SW5mbyogY29uc3Qg
dGVzdF9pbmZvID0gdGVzdF9jYXNlLT5HZXRUZXN0SW5mbygwKTsKICAgRVhQRUNUX1NUUkVRKCJE
dW1teTIiLCB0ZXN0X2luZm8tPm5hbWUoKSk7CiAgIEVYUEVDVF9TVFJFUSgiRElTQUJMRURfVGVz
dCIsIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVz
dF9pbmZvLT5jb21tZW50KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RfaW5mby0+dGVzdF9j
YXNlX2NvbW1lbnQoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0X2luZm8tPnZhbHVlX3Bh
cmFtKCkpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfaW5mby0+dHlwZV9wYXJhbSgpKSk7
CiAgIEVYUEVDVF9GQUxTRSh0ZXN0X2luZm8tPnNob3VsZF9ydW4oKSk7CiB9CiAKQEAgLTI0Nyw3
ICsyNDYsNyBAQCBjbGFzcyBGaW5hbFN1Y2Nlc3NDaGVja2VyIDogcHVibGljIEVudmlyb25tZW50
IHsKICAgICBjb25zdCBUZXN0Q2FzZSoqIGNvbnN0IHRlc3RfY2FzZXMgPSBVbml0VGVzdEhlbHBl
cjo6R2V0U29ydGVkVGVzdENhc2VzKCk7CiAKICAgICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0
ZXN0X2Nhc2VzWzBdLT5uYW1lKCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdF9jYXNlc1sw
XS0+Y29tbWVudCgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdF9jYXNlc1swXS0+dHlw
ZV9wYXJhbSgpKSk7CiAgICAgRVhQRUNUX1RSVUUodGVzdF9jYXNlc1swXS0+c2hvdWxkX3J1bigp
KTsKICAgICBFWFBFQ1RfRVEoMSwgdGVzdF9jYXNlc1swXS0+ZGlzYWJsZWRfdGVzdF9jb3VudCgp
KTsKICAgICBBU1NFUlRfRVEoNCwgdGVzdF9jYXNlc1swXS0+dG90YWxfdGVzdF9jb3VudCgpKTsK
QEAgLTI1Nyw3ICsyNTYsNyBAQCBjbGFzcyBGaW5hbFN1Y2Nlc3NDaGVja2VyIDogcHVibGljIEVu
dmlyb25tZW50IHsKICAgICBFWFBFQ1RfRkFMU0UodGVzdF9jYXNlc1swXS0+RmFpbGVkKCkpOwog
CiAgICAgRVhQRUNUX1NUUkVRKCJESVNBQkxFRF9UZXN0IiwgdGVzdF9jYXNlc1sxXS0+bmFtZSgp
KTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RfY2FzZXNbMV0tPmNvbW1lbnQoKSk7CisgICAg
RVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfY2FzZXNbMV0tPnR5cGVfcGFyYW0oKSkpOwogICAgIEVY
UEVDVF9GQUxTRSh0ZXN0X2Nhc2VzWzFdLT5zaG91bGRfcnVuKCkpOwogICAgIEVYUEVDVF9FUSgx
LCB0ZXN0X2Nhc2VzWzFdLT5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOwogICAgIEFTU0VSVF9FUSgx
LCB0ZXN0X2Nhc2VzWzFdLT50b3RhbF90ZXN0X2NvdW50KCkpOwpAQCAtMjY2LDggKzI2NSw3IEBA
IGNsYXNzIEZpbmFsU3VjY2Vzc0NoZWNrZXIgOiBwdWJsaWMgRW52aXJvbm1lbnQgewogCiAjaWYg
R1RFU1RfSEFTX1RZUEVEX1RFU1QKICAgICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlV2l0aENvbW1l
bnRUZXN0LzAiLCB0ZXN0X2Nhc2VzWzJdLT5uYW1lKCkpOwotICAgIEVYUEVDVF9TVFJFUShHZXRF
eHBlY3RlZFRlc3RDYXNlQ29tbWVudCgpLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgIHRlc3Rf
Y2FzZXNbMl0tPmNvbW1lbnQoKSk7CisgICAgRVhQRUNUX1NUUkVRKEdldFR5cGVOYW1lPGludD4o
KS5jX3N0cigpLCB0ZXN0X2Nhc2VzWzJdLT50eXBlX3BhcmFtKCkpOwogICAgIEVYUEVDVF9UUlVF
KHRlc3RfY2FzZXNbMl0tPnNob3VsZF9ydW4oKSk7CiAgICAgRVhQRUNUX0VRKDAsIHRlc3RfY2Fz
ZXNbMl0tPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgICAgQVNTRVJUX0VRKDEsIHRlc3RfY2Fz
ZXNbMl0tPnRvdGFsX3Rlc3RfY291bnQoKSk7CkBAIC0yODUsMjQgKzI4MywyNCBAQCBjbGFzcyBG
aW5hbFN1Y2Nlc3NDaGVja2VyIDogcHVibGljIEVudmlyb25tZW50IHsKIAogICAgIEVYUEVDVF9T
VFJFUSgiVGVzdENhc2VEaXNhYmxlZEFjY2Vzc29yc1dvcmsiLCB0ZXN0c1sxXS0+bmFtZSgpKTsK
ICAgICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1sxXS0+dGVzdF9jYXNlX25hbWUoKSk7
Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1sxXS0+Y29tbWVudCgpKTsKLSAgICBFWFBFQ1Rf
U1RSRVEoIiIsIHRlc3RzWzFdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgICBFWFBFQ1RfVFJV
RShJc051bGwodGVzdHNbMV0tPnZhbHVlX3BhcmFtKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051
bGwodGVzdHNbMV0tPnR5cGVfcGFyYW0oKSkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzFdLT5z
aG91bGRfcnVuKCkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzFdLT5yZXN1bHQoKS0+UGFzc2Vk
KCkpOwogICAgIEVYUEVDVF9FUSgwLCB0ZXN0c1sxXS0+cmVzdWx0KCktPnRlc3RfcHJvcGVydHlf
Y291bnQoKSk7CiAKICAgICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlSW1tdXRhYmxlQWNjZXNzb3Jz
V29yayIsIHRlc3RzWzJdLT5uYW1lKCkpOwogICAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRl
c3RzWzJdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzJd
LT5jb21tZW50KCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMl0tPnRlc3RfY2FzZV9j
b21tZW50KCkpOworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1syXS0+dmFsdWVfcGFyYW0o
KSkpOworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1syXS0+dHlwZV9wYXJhbSgpKSk7CiAg
ICAgRVhQRUNUX1RSVUUodGVzdHNbMl0tPnNob3VsZF9ydW4oKSk7CiAgICAgRVhQRUNUX1RSVUUo
dGVzdHNbMl0tPnJlc3VsdCgpLT5QYXNzZWQoKSk7CiAgICAgRVhQRUNUX0VRKDAsIHRlc3RzWzJd
LT5yZXN1bHQoKS0+dGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKIAogICAgIEVYUEVDVF9TVFJFUSgi
VW5pdFRlc3RJbW11dGFibGVBY2Nlc3NvcnNXb3JrIiwgdGVzdHNbM10tPm5hbWUoKSk7CiAgICAg
RVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbM10tPnRlc3RfY2FzZV9uYW1lKCkpOwotICAg
IEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbM10tPmNvbW1lbnQoKSk7Ci0gICAgRVhQRUNUX1NUUkVR
KCIiLCB0ZXN0c1szXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgICAgRVhQRUNUX1RSVUUoSXNO
dWxsKHRlc3RzWzNdLT52YWx1ZV9wYXJhbSgpKSk7CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRl
c3RzWzNdLT50eXBlX3BhcmFtKCkpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0c1szXS0+c2hvdWxk
X3J1bigpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0c1szXS0+cmVzdWx0KCktPlBhc3NlZCgpKTsK
ICAgICBFWFBFQ1RfRVEoMSwgdGVzdHNbM10tPnJlc3VsdCgpLT50ZXN0X3Byb3BlcnR5X2NvdW50
KCkpOwpAQCAtMzE4LDkgKzMxNiw4IEBAIGNsYXNzIEZpbmFsU3VjY2Vzc0NoZWNrZXIgOiBwdWJs
aWMgRW52aXJvbm1lbnQgewogCiAgICAgRVhQRUNUX1NUUkVRKCJEdW1teSIsIHRlc3RzWzBdLT5u
YW1lKCkpOwogICAgIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VXaXRoQ29tbWVudFRlc3QvMCIsIHRl
c3RzWzBdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzBd
LT5jb21tZW50KCkpOwotICAgIEVYUEVDVF9TVFJFUShHZXRFeHBlY3RlZFRlc3RDYXNlQ29tbWVu
dCgpLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgIHRlc3RzWzBdLT50ZXN0X2Nhc2VfY29tbWVu
dCgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMF0tPnZhbHVlX3BhcmFtKCkpKTsK
KyAgICBFWFBFQ1RfU1RSRVEoR2V0VHlwZU5hbWU8aW50PigpLmNfc3RyKCksIHRlc3RzWzBdLT50
eXBlX3BhcmFtKCkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzBdLT5zaG91bGRfcnVuKCkpOwog
ICAgIEVYUEVDVF9UUlVFKHRlc3RzWzBdLT5yZXN1bHQoKS0+UGFzc2VkKCkpOwogICAgIEVYUEVD
VF9FUSgwLCB0ZXN0c1swXS0+cmVzdWx0KCktPnRlc3RfcHJvcGVydHlfY291bnQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2FsbF90ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9hbGxfdGVzdC5jYwppbmRleCBlMWVk
YjA4ZTMzYTE4YzIzOTExNWRhZDVlNGEwZDZmYjYzMmRiYjE3Li5lNjFlMzZiMWRmZThkYTAzMDE2
YWY1Nzg1NWIyYzc4MWVlN2Q5MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X2FsbF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfYWxsX3Rlc3QuY2MKQEAgLTI2LDIzICsyNiwyMSBAQAogLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAog
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29v
Z2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRlc3RzIGZvciBHb29nbGUgQysrIFRlc3Rp
bmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIFRlc3RzIGZvciBHb29nbGUgQysrIFRlc3Rp
bmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAvLyBTb21ldGltZXMg
aXQncyBkZXNpcmFibGUgdG8gYnVpbGQgbW9zdCBvZiBHb29nbGUgVGVzdCdzIG93biB0ZXN0cwog
Ly8gYnkgY29tcGlsaW5nIGEgc2luZ2xlIGZpbGUuICBUaGlzIGZpbGUgc2VydmVzIHRoaXMgcHVy
cG9zZS4KLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3QuY2MiCi0jaW5jbHVkZSAi
dGVzdC9ndGVzdC1saW5rZWRfcHRyX3Rlc3QuY2MiCi0jaW5jbHVkZSAidGVzdC9ndGVzdC1tZXNz
YWdlX3Rlc3QuY2MiCi0jaW5jbHVkZSAidGVzdC9ndGVzdC1vcHRpb25zX3Rlc3QuY2MiCi0jaW5j
bHVkZSAidGVzdC9ndGVzdC1wb3J0X3Rlc3QuY2MiCisjaW5jbHVkZSAidGVzdC9nb29nbGV0ZXN0
LWZpbGVwYXRoLXRlc3QuY2MiCisjaW5jbHVkZSAidGVzdC9nb29nbGV0ZXN0LWxpbmtlZC1wdHIt
dGVzdC5jYyIKKyNpbmNsdWRlICJ0ZXN0L2dvb2dsZXRlc3QtbWVzc2FnZS10ZXN0LmNjIgorI2lu
Y2x1ZGUgInRlc3QvZ29vZ2xldGVzdC1vcHRpb25zLXRlc3QuY2MiCisjaW5jbHVkZSAidGVzdC9n
b29nbGV0ZXN0LXBvcnQtdGVzdC5jYyIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0X3ByZWRfaW1wbF91
bml0dGVzdC5jYyIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0X3Byb2RfdGVzdC5jYyIKLSNpbmNsdWRl
ICJ0ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0LmNjIgorI2luY2x1ZGUgInRlc3QvZ29vZ2xldGVz
dC10ZXN0LXBhcnQtdGVzdC5jYyIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVz
dC5jYyIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MiCiAjaW5jbHVk
ZSAidGVzdC9ndGVzdF91bml0dGVzdC5jYyIKICNpbmNsdWRlICJ0ZXN0L3Byb2R1Y3Rpb24uY2Mi
Ci0jaW5jbHVkZSAic3JjL2d0ZXN0X21haW4uY2MiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Fzc2VydF9ieV9leGNlcHRpb25fdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYXNzZXJ0X2J5X2V4Y2VwdGlvbl90ZXN0LmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBlYWU4NTc1ZjNmZWUzMGJhYzY0MmJhMTU4OWZmMjM0ZDA3Zjk0NTQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Fzc2Vy
dF9ieV9leGNlcHRpb25fdGVzdC5jYwpAQCAtMCwwICsxLDExOCBAQAorLy8gQ29weXJpZ2h0IDIw
MDksIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisv
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIFRlc3RzIEdvb2dsZSBUZXN0J3Mg
YXNzZXJ0LWJ5LWV4Y2VwdGlvbiBtb2RlIHdpdGggZXhjZXB0aW9ucyBlbmFibGVkLgorCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0
ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkZXhjZXB0PgorCitjbGFz
cyBUaHJvd0xpc3RlbmVyIDogcHVibGljIHRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXIg
eworICB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHQm
IHJlc3VsdCkgb3ZlcnJpZGUgeworICAgIGlmIChyZXN1bHQudHlwZSgpID09IHRlc3Rpbmc6OlRl
c3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlKSB7CisgICAgICB0aHJvdyB0ZXN0aW5nOjpBc3Nl
cnRpb25FeGNlcHRpb24ocmVzdWx0KTsKKyAgICB9CisgIH0KK307CisKKy8vIFByaW50cyB0aGUg
Z2l2ZW4gZmFpbHVyZSBtZXNzYWdlIGFuZCBleGl0cyB0aGUgcHJvZ3JhbSB3aXRoCisvLyBub24t
emVyby4gIFdlIHVzZSB0aGlzIGluc3RlYWQgb2YgYSBHb29nbGUgVGVzdCBhc3NlcnRpb24gdG8K
Ky8vIGluZGljYXRlIGEgZmFpbHVyZSwgYXMgdGhlIGxhdHRlciBpcyBiZWVuIHRlc3RlZCBhbmQg
Y2Fubm90IGJlCisvLyByZWxpZWQgb24uCit2b2lkIEZhaWwoY29uc3QgY2hhciogbXNnKSB7Cisg
IHByaW50ZigiRkFJTFVSRTogJXNcbiIsIG1zZyk7CisgIGZmbHVzaChzdGRvdXQpOworICBleGl0
KDEpOworfQorCitzdGF0aWMgdm9pZCBBc3NlcnRGYWxzZSgpIHsKKyAgQVNTRVJUX0VRKDIsIDMp
IDw8ICJFeHBlY3RlZCBmYWlsdXJlIjsKK30KKworLy8gVGVzdHMgdGhhdCBhbiBhc3NlcnRpb24g
ZmFpbHVyZSB0aHJvd3MgYSBzdWJjbGFzcyBvZgorLy8gc3RkOjpydW50aW1lX2Vycm9yLgorVEVT
VChUZXN0LCBUZXN0KSB7CisgIC8vIEEgc3VjY2Vzc2Z1bCBhc3NlcnRpb24gc2hvdWxkbid0IHRo
cm93LgorICB0cnkgeworICAgIEVYUEVDVF9FUSgzLCAzKTsKKyAgfSBjYXRjaCguLi4pIHsKKyAg
ICBGYWlsKCJBIHN1Y2Nlc3NmdWwgYXNzZXJ0aW9uIHdyb25nZnVsbHkgdGhyZXcuIik7CisgIH0K
KworICAvLyBBIHN1Y2Nlc3NmdWwgYXNzZXJ0aW9uIHNob3VsZG4ndCB0aHJvdy4KKyAgdHJ5IHsK
KyAgICBFWFBFQ1RfRVEoMywgNCk7CisgIH0gY2F0Y2goLi4uKSB7CisgICAgRmFpbCgiQSBmYWls
ZWQgbm9uLWZhdGFsIGFzc2VydGlvbiB3cm9uZ2Z1bGx5IHRocmV3LiIpOworICB9CisKKyAgLy8g
QSBmYWlsZWQgYXNzZXJ0aW9uIHNob3VsZCB0aHJvdy4KKyAgdHJ5IHsKKyAgICBBc3NlcnRGYWxz
ZSgpOworICB9IGNhdGNoKGNvbnN0IHRlc3Rpbmc6OkFzc2VydGlvbkV4Y2VwdGlvbiYgZSkgewor
ICAgIGlmIChzdHJzdHIoZS53aGF0KCksICJFeHBlY3RlZCBmYWlsdXJlIikgIT0gTlVMTCkKKyAg
ICAgIHRocm93OworCisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJBIGZhaWxlZCBhc3Nl
cnRpb24gZGlkIHRocm93IGFuIGV4Y2VwdGlvbiBvZiB0aGUgcmlnaHQgdHlwZSwgIgorICAgICAg
ICAgICAiYnV0IHRoZSBtZXNzYWdlIGlzIGluY29ycmVjdC4gIEluc3RlYWQgb2YgY29udGFpbmlu
ZyBcIkV4cGVjdGVkICIKKyAgICAgICAgICAgImZhaWx1cmVcIiwgaXQgaXM6XG4iKTsKKyAgICBG
YWlsKGUud2hhdCgpKTsKKyAgfSBjYXRjaCguLi4pIHsKKyAgICBGYWlsKCJBIGZhaWxlZCBhc3Nl
cnRpb24gdGhyZXcgdGhlIHdyb25nIHR5cGUgb2YgZXhjZXB0aW9uLiIpOworICB9CisgIEZhaWwo
IkEgZmFpbGVkIGFzc2VydGlvbiBzaG91bGQndmUgdGhyb3duIGJ1dCBkaWRuJ3QuIik7Cit9CisK
K2ludCBrVGVzdEZvckNvbnRpbnVpbmdUZXN0ID0gMDsKKworVEVTVChUZXN0LCBUZXN0Mikgewor
ICAvLyBGSVhNRTogaG93IHRvIGZvcmNlIFRlc3QyIHRvIGJlIGFmdGVyIFRlc3Q/CisgIGtUZXN0
Rm9yQ29udGludWluZ1Rlc3QgPSAxOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFy
Z3YpIHsKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICB0ZXN0aW5n
OjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCkuQXBwZW5kKG5ldyBUaHJvd0xp
c3RlbmVyKTsKKworICBpbnQgcmVzdWx0ID0gUlVOX0FMTF9URVNUUygpOworICBpZiAocmVzdWx0
ID09IDApIHsKKyAgICBwcmludGYoIlJVTl9BTExfVEVTVFMgcmV0dXJuZWQgJWRcbiIsIHJlc3Vs
dCk7CisgICAgRmFpbCgiRXhwZWN0ZWQgZmFpbHVyZSBpbnN0ZWFkLiIpOworICB9CisKKyAgaWYg
KGtUZXN0Rm9yQ29udGludWluZ1Rlc3QgPT0gMCkgeworICAgIEZhaWwoIlNob3VsZCBoYXZlIGNv
bnRpbnVlZCB3aXRoIG90aGVyIHRlc3RzLCBidXQgZGlkIG5vdC4iKTsKKyAgfQorICByZXR1cm4g
MDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYnJl
YWtfb25fZmFpbHVyZV91bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3
NTUKaW5kZXggYzgxOTE4MzMxMjI3NWRlY2EwNWM3NjMxODYwNDA0NzFiZmY0OWYzMy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkKKysrIC9kZXYv
bnVsbApAQCAtMSwyMTggKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHly
aWdodCAyMDA2LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0j
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIGJyZWFrLW9uLWZhaWx1
cmUgbW9kZS4KLQotQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gc2VnLWZhdWx0IHdoZW4g
YW4gYXNzZXJ0aW9uIGZhaWxzLCB1c2luZwotZWl0aGVyIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlM
VVJFIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQotLS1ndGVzdF9icmVha19vbl9mYWlsdXJl
IGZsYWcuICBUaGlzIHNjcmlwdCB0ZXN0cyBzdWNoIGZ1bmN0aW9uYWxpdHkKLWJ5IGludm9raW5n
IGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfIChhIHByb2dyYW0gd3JpdHRlbiB3aXRo
Ci1Hb29nbGUgVGVzdCkgd2l0aCBkaWZmZXJlbnQgZW52aXJvbm1lbnRzIGFuZCBjb21tYW5kIGxp
bmUgZmxhZ3MuCi0iIiIKLQotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcg
V2FuKScKLQotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLWltcG9ydCBvcwotaW1wb3J0IHN5cwot
Ci0KLSMgQ29uc3RhbnRzLgotCi1JU19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCi0KLSMgVGhl
IGVudmlyb25tZW50IHZhcmlhYmxlIGZvciBlbmFibGluZy9kaXNhYmxpbmcgdGhlIGJyZWFrLW9u
LWZhaWx1cmUgbW9kZS4KLUJSRUFLX09OX0ZBSUxVUkVfRU5WX1ZBUiA9ICdHVEVTVF9CUkVBS19P
Tl9GQUlMVVJFJwotCi0jIFRoZSBjb21tYW5kIGxpbmUgZmxhZyBmb3IgZW5hYmxpbmcvZGlzYWJs
aW5nIHRoZSBicmVhay1vbi1mYWlsdXJlIG1vZGUuCi1CUkVBS19PTl9GQUlMVVJFX0ZMQUcgPSAn
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZScKLQotIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9y
IGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLgotVEhST1dfT05f
RkFJTFVSRV9FTlZfVkFSID0gJ0dURVNUX1RIUk9XX09OX0ZBSUxVUkUnCi0KLSMgVGhlIGVudmly
b25tZW50IHZhcmlhYmxlIGZvciBlbmFibGluZy9kaXNhYmxpbmcgdGhlIGNhdGNoLWV4Y2VwdGlv
bnMgbW9kZS4KLUNBVENIX0VYQ0VQVElPTlNfRU5WX1ZBUiA9ICdHVEVTVF9DQVRDSF9FWENFUFRJ
T05TJwotCi0jIFBhdGggdG8gdGhlIGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfIHBy
b2dyYW0uCi1FWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRo
KAotICAgICdndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0XycpCi0KLQotIyBVdGlsaXRp
ZXMuCi0KLQotZW52aXJvbiA9IG9zLmVudmlyb24uY29weSgpCi0KLQotZGVmIFNldEVudlZhcihl
bnZfdmFyLCB2YWx1ZSk6Ci0gICIiIlNldHMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSBn
aXZlbiB2YWx1ZTsgdW5zZXRzIGl0IHdoZW4gdGhlCi0gIGdpdmVuIHZhbHVlIGlzIE5vbmUuCi0g
ICIiIgotCi0gIGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAgIGVudmlyb25bZW52X3Zhcl0gPSB2
YWx1ZQotICBlbGlmIGVudl92YXIgaW4gZW52aXJvbjoKLSAgICBkZWwgZW52aXJvbltlbnZfdmFy
XQotCi0KLWRlZiBSdW4oY29tbWFuZCk6Ci0gICIiIlJ1bnMgYSBjb21tYW5kOyByZXR1cm5zIDEg
aWYgaXQgd2FzIGtpbGxlZCBieSBhIHNpZ25hbCwgb3IgMCBvdGhlcndpc2UuIiIiCi0KLSAgcCA9
IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kLCBlbnY9ZW52aXJvbikKLSAgaWYg
cC50ZXJtaW5hdGVkX2J5X3NpZ25hbDoKLSAgICByZXR1cm4gMQotICBlbHNlOgotICAgIHJldHVy
biAwCi0KLQotIyBUaGUgdGVzdHMuCi0KLQotY2xhc3MgR1Rlc3RCcmVha09uRmFpbHVyZVVuaXRU
ZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgotICAiIiJUZXN0cyB1c2luZyB0aGUgR1RF
U1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBvcgotICB0aGUgLS1ndGVz
dF9icmVha19vbl9mYWlsdXJlIGZsYWcgdG8gdHVybiBhc3NlcnRpb24gZmFpbHVyZXMgaW50bwot
ICBzZWdtZW50YXRpb24gZmF1bHRzLgotICAiIiIKLQotICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYs
IGVudl92YXJfdmFsdWUsIGZsYWdfdmFsdWUsIGV4cGVjdF9zZWdfZmF1bHQpOgotICAgICIiIlJ1
bnMgZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8gYW5kIHZlcmlmaWVzIHRoYXQgaXQg
ZG9lcwotICAgIChvciBkb2VzIG5vdCkgaGF2ZSBhIHNlZy1mYXVsdC4KLQotICAgIEFyZ3M6Ci0g
ICAgICBlbnZfdmFyX3ZhbHVlOiAgICB2YWx1ZSBvZiB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVS
RSBlbnZpcm9ubWVudAotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGU7IE5vbmUgaWYg
dGhlIHZhcmlhYmxlIHNob3VsZCBiZSB1bnNldC4KLSAgICAgIGZsYWdfdmFsdWU6ICAgICAgIHZh
bHVlIG9mIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZzsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgotICAgICAg
ZXhwZWN0X3NlZ19mYXVsdDogMSBpZiB0aGUgcHJvZ3JhbSBpcyBleHBlY3RlZCB0byBnZW5lcmF0
ZSBhIHNlZy1mYXVsdDsKLSAgICAgICAgICAgICAgICAgICAgICAgIDAgb3RoZXJ3aXNlLgotICAg
ICIiIgotCi0gICAgU2V0RW52VmFyKEJSRUFLX09OX0ZBSUxVUkVfRU5WX1ZBUiwgZW52X3Zhcl92
YWx1ZSkKLQotICAgIGlmIGVudl92YXJfdmFsdWUgaXMgTm9uZToKLSAgICAgIGVudl92YXJfdmFs
dWVfbXNnID0gJyBpcyBub3Qgc2V0JwotICAgIGVsc2U6Ci0gICAgICBlbnZfdmFyX3ZhbHVlX21z
ZyA9ICc9JyArIGVudl92YXJfdmFsdWUKLQotICAgIGlmIGZsYWdfdmFsdWUgaXMgTm9uZToKLSAg
ICAgIGZsYWcgPSAnJwotICAgIGVsaWYgZmxhZ192YWx1ZSA9PSAnMCc6Ci0gICAgICBmbGFnID0g
Jy0tJXM9MCcgJSBCUkVBS19PTl9GQUlMVVJFX0ZMQUcKLSAgICBlbHNlOgotICAgICAgZmxhZyA9
ICctLSVzJyAlIEJSRUFLX09OX0ZBSUxVUkVfRkxBRwotCi0gICAgY29tbWFuZCA9IFtFWEVfUEFU
SF0KLSAgICBpZiBmbGFnOgotICAgICAgY29tbWFuZC5hcHBlbmQoZmxhZykKLQotICAgIGlmIGV4
cGVjdF9zZWdfZmF1bHQ6Ci0gICAgICBzaG91bGRfb3Jfbm90ID0gJ3Nob3VsZCcKLSAgICBlbHNl
OgotICAgICAgc2hvdWxkX29yX25vdCA9ICdzaG91bGQgbm90JwotCi0gICAgaGFzX3NlZ19mYXVs
dCA9IFJ1bihjb21tYW5kKQotCi0gICAgU2V0RW52VmFyKEJSRUFLX09OX0ZBSUxVUkVfRU5WX1ZB
UiwgTm9uZSkKLQotICAgIG1zZyA9ICgnd2hlbiAlcyVzLCBhbiBhc3NlcnRpb24gZmFpbHVyZSBp
biAiJXMiICVzIGNhdXNlIGEgc2VnLWZhdWx0LicgJQotICAgICAgICAgICAoQlJFQUtfT05fRkFJ
TFVSRV9FTlZfVkFSLCBlbnZfdmFyX3ZhbHVlX21zZywgJyAnLmpvaW4oY29tbWFuZCksCi0gICAg
ICAgICAgICBzaG91bGRfb3Jfbm90KSkKLSAgICBzZWxmLmFzc2VydF8oaGFzX3NlZ19mYXVsdCA9
PSBleHBlY3Rfc2VnX2ZhdWx0LCBtc2cpCi0KLSAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3Ioc2Vs
Zik6Ci0gICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0IG1vZGUuIiIiCi0K
LSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAg
ICAgICAgICAgZmxhZ192YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9z
ZWdfZmF1bHQ9MCkKLQotICBkZWYgdGVzdEVudlZhcihzZWxmKToKLSAgICAiIiJUZXN0cyB1c2lu
ZyB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZS4iIiIKLQot
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAg
ICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2Vn
X2ZhdWx0PTApCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0gICAg
ICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdF9zZWdfZmF1bHQ9MSkKLQotICBkZWYgdGVzdEZsYWcoc2VsZik6Ci0gICAgIiIiVGVz
dHMgdXNpbmcgdGhlIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnLiIiIgotCi0gICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAg
IGZsYWdfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9
MCkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCi0gICAgICAgICAg
ICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
X3NlZ19mYXVsdD0xKQotCi0gIGRlZiB0ZXN0RmxhZ092ZXJyaWRlc0VudlZhcihzZWxmKToKLSAg
ICAiIiJUZXN0cyB0aGF0IHRoZSBmbGFnIG92ZXJyaWRlcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFi
bGUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScwJywKLSAgICAg
ICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBl
eHBlY3Rfc2VnX2ZhdWx0PTApCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0n
MCcsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0xKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92
YXJfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAnLAotICAg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MCkKLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVl
PScxJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCi0KLSAgZGVm
IHRlc3RCcmVha09uRmFpbHVyZU92ZXJyaWRlc1Rocm93T25GYWlsdXJlKHNlbGYpOgotICAgICIi
IlRlc3RzIHRoYXQgZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBvdmVycmlkZXMgZ3Rlc3RfdGhyb3df
b25fZmFpbHVyZS4iIiIKLQotICAgIFNldEVudlZhcihUSFJPV19PTl9GQUlMVVJFX0VOVl9WQVIs
ICcxJykKLSAgICB0cnk6Ci0gICAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5v
bmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKLSAgICBmaW5hbGx5OgotICAgICAgU2V0
RW52VmFyKFRIUk9XX09OX0ZBSUxVUkVfRU5WX1ZBUiwgTm9uZSkKLQotICBpZiBJU19XSU5ET1dT
OgotICAgIGRlZiB0ZXN0Q2F0Y2hFeGNlcHRpb25zRG9lc05vdEludGVyZmVyZShzZWxmKToKLSAg
ICAgICIiIlRlc3RzIHRoYXQgZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucyBkb2Vzbid0IGludGVyZmVy
ZS4iIiIKLQotICAgICAgU2V0RW52VmFyKENBVENIX0VYQ0VQVElPTlNfRU5WX1ZBUiwgJzEnKQot
ICAgICAgdHJ5OgotICAgICAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKLSAgICAgIGZpbmFsbHk6Ci0gICAgICAg
IFNldEVudlZhcihDQVRDSF9FWENFUFRJT05TX0VOVl9WQVIsIE5vbmUpCi0KLQotaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0
dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2Zh
aWx1cmVfdW5pdHRlc3RfLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjhkMWQz
ZGFkNDZiOGZkZjNjMzQwOTY3ZGJmY2E4NTJmNTllNGExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSw4NiAr
MCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwot
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0v
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwot
Ly8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBVbml0IHRlc3Qg
Zm9yIEdvb2dsZSBUZXN0J3MgYnJlYWstb24tZmFpbHVyZSBtb2RlLgotLy8KLS8vIEEgdXNlciBj
YW4gYXNrIEdvb2dsZSBUZXN0IHRvIHNlZy1mYXVsdCB3aGVuIGFuIGFzc2VydGlvbiBmYWlscywg
dXNpbmcKLS8vIGVpdGhlciB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2
YXJpYWJsZSBvciB0aGUKLS8vIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnLiAgVGhpcyBm
aWxlIGlzIHVzZWQgZm9yIHRlc3Rpbmcgc3VjaAotLy8gZnVuY3Rpb25hbGl0eS4KLS8vCi0vLyBU
aGlzIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRob24gdW5pdCB0ZXN0LiAgSXQg
aXMKLS8vIGV4cGVjdGVkIHRvIGZhaWwuICBEb24ndCBydW4gaXQgZGlyZWN0bHkuCi0KLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1ZGUgPHdp
bmRvd3MuaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgewotCi0v
LyBBIHRlc3QgdGhhdCdzIGV4cGVjdGVkIHRvIGZhaWwuCi1URVNUKEZvbywgQmFyKSB7Ci0gIEVY
UEVDVF9FUSgyLCAzKTsKLX0KLQotI2lmIEdURVNUX0hBU19TRUggJiYgIUdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCi0vLyBPbiBXaW5kb3dzIE1vYmlsZSBnbG9iYWwgZXhjZXB0aW9uIGhhbmRsZXJz
IGFyZSBub3Qgc3VwcG9ydGVkLgotTE9ORyBXSU5BUEkgRXhpdFdpdGhFeGNlcHRpb25Db2RlKAot
ICAgIHN0cnVjdCBfRVhDRVBUSU9OX1BPSU5URVJTKiBleGNlcHRpb25fcG9pbnRlcnMpIHsKLSAg
ZXhpdChleGNlcHRpb25fcG9pbnRlcnMtPkV4Y2VwdGlvblJlY29yZC0+RXhjZXB0aW9uQ29kZSk7
Ci19Ci0jZW5kaWYKLQotfSAgLy8gbmFtZXNwYWNlCi0KLWludCBtYWluKGludCBhcmdjLCBjaGFy
ICoqYXJndikgewotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgLy8gU3VwcHJlc3NlcyBkaXNwbGF5
IG9mIHRoZSBXaW5kb3dzIGVycm9yIGRpYWxvZyB1cG9uIGVuY291bnRlcmluZwotICAvLyBhIGdl
bmVyYWwgcHJvdGVjdGlvbiBmYXVsdCAoc2VnbWVudCB2aW9sYXRpb24pLgotICBTZXRFcnJvck1v
ZGUoU0VNX05PR1BGQVVMVEVSUk9SQk9YIHwgU0VNX0ZBSUxDUklUSUNBTEVSUk9SUyk7Ci0KLSNp
ZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSAgLy8gVGhlIGRlZmF1bHQgdW5oYW5kbGVkIGV4
Y2VwdGlvbiBmaWx0ZXIgZG9lcyBub3QgYWx3YXlzIGV4aXQKLSAgLy8gd2l0aCB0aGUgZXhjZXB0
aW9uIGNvZGUgYXMgZXhpdCBjb2RlIC0gZm9yIGV4YW1wbGUgaXQgZXhpdHMgd2l0aAotICAvLyAw
IGZvciBFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTiBhbmQgMSBmb3IgRVhDRVBUSU9OX0JSRUFL
UE9JTlQKLSAgLy8gaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGNvbXBpbGVkIGluIGRlYnVnIG1vZGUu
IFRodXMgd2UgdXNlIG91ciBvd24KLSAgLy8gZmlsdGVyIHdoaWNoIGFsd2F5cyBleGl0cyB3aXRo
IHRoZSBleGNlcHRpb24gY29kZSBmb3IgdW5oYW5kbGVkCi0gIC8vIGV4Y2VwdGlvbnMuCi0gIFNl
dFVuaGFuZGxlZEV4Y2VwdGlvbkZpbHRlcihFeGl0V2l0aEV4Y2VwdGlvbkNvZGUpOwotI2VuZGlm
Ci0jZW5kaWYKLQotICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAg
cmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg
ZDAyYTUzZWQ4NTdjNzRjODAwYmNjZDY3YmM0MThhNTFhMDlkNjkzNy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAot
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgot
IyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
IyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVmVyaWZpZXMg
dGhhdCBHb29nbGUgVGVzdCBjb3JyZWN0bHkgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHVzZSBjb2xv
cnMuIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0K
LWltcG9ydCBvcwotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLQotCi1JU19XSU5ET1dTID0gb3Mu
bmFtZSA9ICdudCcKLQotQ09MT1JfRU5WX1ZBUiA9ICdHVEVTVF9DT0xPUicKLUNPTE9SX0ZMQUcg
PSAnZ3Rlc3RfY29sb3InCi1DT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0
YWJsZVBhdGgoJ2d0ZXN0X2NvbG9yX3Rlc3RfJykKLQotCi1kZWYgU2V0RW52VmFyKGVudl92YXIs
IHZhbHVlKToKLSAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxlIHRvICd2YWx1ZSc7IHVuc2V0cyBp
dCB3aGVuICd2YWx1ZScgaXMgTm9uZS4iIiIKLQotICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAg
ICBvcy5lbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKLSAgZWxpZiBlbnZfdmFyIGluIG9zLmVudmly
b246Ci0gICAgZGVsIG9zLmVudmlyb25bZW52X3Zhcl0KLQotCi1kZWYgVXNlc0NvbG9yKHRlcm0s
IGNvbG9yX2Vudl92YXIsIGNvbG9yX2ZsYWcpOgotICAiIiJSdW5zIGd0ZXN0X2NvbG9yX3Rlc3Rf
IGFuZCByZXR1cm5zIGl0cyBleGl0IGNvZGUuIiIiCi0KLSAgU2V0RW52VmFyKCdURVJNJywgdGVy
bSkKLSAgU2V0RW52VmFyKENPTE9SX0VOVl9WQVIsIGNvbG9yX2Vudl92YXIpCi0KLSAgaWYgY29s
b3JfZmxhZyBpcyBOb25lOgotICAgIGFyZ3MgPSBbXQotICBlbHNlOgotICAgIGFyZ3MgPSBbJy0t
JXM9JXMnICUgKENPTE9SX0ZMQUcsIGNvbG9yX2ZsYWcpXQotICBwID0gZ3Rlc3RfdGVzdF91dGls
cy5TdWJwcm9jZXNzKFtDT01NQU5EXSArIGFyZ3MpCi0gIHJldHVybiBub3QgcC5leGl0ZWQgb3Ig
cC5leGl0X2NvZGUKLQotCi1jbGFzcyBHVGVzdENvbG9yVGVzdChndGVzdF90ZXN0X3V0aWxzLlRl
c3RDYXNlKToKLSAgZGVmIHRlc3ROb0VudlZhck5vRmxhZyhzZWxmKToKLSAgICAiIiJUZXN0cyB0
aGUgY2FzZSB3aGVuIHRoZXJlJ3MgbmVpdGhlciBHVEVTVF9DT0xPUiBub3IgLS1ndGVzdF9jb2xv
ci4iIiIKLQotICAgIGlmIG5vdCBJU19XSU5ET1dTOgotICAgICAgc2VsZi5hc3NlcnRfKG5vdCBV
c2VzQ29sb3IoJ2R1bWInLCBOb25lLCBOb25lKSkKLSAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNl
c0NvbG9yKCdlbWFjcycsIE5vbmUsIE5vbmUpKQotICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2Vz
Q29sb3IoJ3h0ZXJtLW1vbm8nLCBOb25lLCBOb25lKSkKLSAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qg
VXNlc0NvbG9yKCd1bmtub3duJywgTm9uZSwgTm9uZSkpCi0gICAgICBzZWxmLmFzc2VydF8obm90
IFVzZXNDb2xvcihOb25lLCBOb25lLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9y
KCdsaW51eCcsIE5vbmUsIE5vbmUpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2N5Z3dp
bicsIE5vbmUsIE5vbmUpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtJywgTm9u
ZSwgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tY29sb3InLCBOb25l
LCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS0yNTZjb2xvcicsIE5v
bmUsIE5vbmUpKQotCi0gIGRlZiB0ZXN0RmxhZ09ubHkoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhl
IGNhc2Ugd2hlbiB0aGVyZSdzIC0tZ3Rlc3RfY29sb3IgYnV0IG5vdCBHVEVTVF9DT0xPUi4iIiIK
LQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ25vJykpCi0g
ICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywgTm9uZSwgJ25vJykp
Ci0gICAgaWYgbm90IElTX1dJTkRPV1M6Ci0gICAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xv
cignZW1hY3MnLCBOb25lLCAnYXV0bycpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0
ZXJtJywgTm9uZSwgJ2F1dG8nKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywg
Tm9uZSwgJ3llcycpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwg
J3llcycpKQotCi0gIGRlZiB0ZXN0RW52VmFyT25seShzZWxmKToKLSAgICAiIiJUZXN0cyB0aGUg
Y2FzZSB3aGVuIHRoZXJlJ3MgR1RFU1RfQ09MT1IgYnV0IG5vdCAtLWd0ZXN0X2NvbG9yLiIiIgot
Ci0gICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ2R1bWInLCAnbm8nLCBOb25lKSkKLSAg
ICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAnbm8nLCBOb25lKSkK
LSAgICBpZiBub3QgSVNfV0lORE9XUzoKLSAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9y
KCdkdW1iJywgJ2F1dG8nLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVy
bS1jb2xvcicsICdhdXRvJywgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVt
YicsICd5ZXMnLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS1jb2xv
cicsICd5ZXMnLCBOb25lKSkKLQotICBkZWYgdGVzdEVudlZhckFuZEZsYWcoc2VsZik6Ci0gICAg
IiIiVGVzdHMgdGhlIGNhc2Ugd2hlbiB0aGVyZSBhcmUgYm90aCBHVEVTVF9DT0xPUiBhbmQgLS1n
dGVzdF9jb2xvci4iIiIKLQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybS1j
b2xvcicsICdubycsICdubycpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCAn
bm8nLCAneWVzJykpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAn
bm8nLCAnYXV0bycpKQotCi0gIGRlZiB0ZXN0QWxpYXNlc09mWWVzQW5kTm8oc2VsZik6Ci0gICAg
IiIiVGVzdHMgdXNpbmcgYWxpYXNlcyBpbiBzcGVjaWZ5aW5nIC0tZ3Rlc3RfY29sb3IuIiIiCi0K
LSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ3RydWUnKSkKLSAgICBz
ZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ1lFUycpKQotICAgIHNlbGYuYXNz
ZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAnVCcpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2Vz
Q29sb3IoJ2R1bWInLCBOb25lLCAnMScpKQotCi0gICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29s
b3IoJ3h0ZXJtJywgTm9uZSwgJ2YnKSkKLSAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcign
eHRlcm0nLCBOb25lLCAnZmFsc2UnKSkKLSAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcign
eHRlcm0nLCBOb25lLCAnMCcpKQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVy
bScsIE5vbmUsICd1bmtub3duJykpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAg
Z3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
OGQzNzdjOWIyYWYwYmZlODE5NWNhMmMwYTkwMjEzOWQ5MTEwNjQyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfY29sb3JfdGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0v
LyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0v
LwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRp
c3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9y
OiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBBIGhlbHBlciBwcm9ncmFtIGZv
ciB0ZXN0aW5nIGhvdyBHb29nbGUgVGVzdCBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlCi0vLyBj
b2xvcnMgaW4gdGhlIG91dHB1dC4gIEl0IHByaW50cyAiWUVTIiBhbmQgcmV0dXJucyAxIGlmIEdv
b2dsZSBUZXN0Ci0vLyBkZWNpZGVzIHRvIHVzZSBjb2xvcnMsIGFuZCBwcmludHMgIk5PIiBhbmQg
cmV0dXJucyAwIG90aGVyd2lzZS4KLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLSNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQg
aXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29t
ZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3
aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEg
dXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4K
LS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQotI2luY2x1ZGUg
InNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8K
LQotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlNob3VsZFVzZUNvbG9yOwotCi0vLyBUaGUgcHVy
cG9zZSBvZiB0aGlzIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSBVbml0VGVzdCBzaW5nbGV0b24gaXMK
LS8vIGNyZWF0ZWQgYmVmb3JlIG1haW4oKSBpcyBlbnRlcmVkLCBhbmQgdGh1cyB0aGF0IFNob3Vs
ZFVzZUNvbG9yKCkKLS8vIHdvcmtzIHRoZSBzYW1lIHdheSBhcyBpbiBhIHJlYWwgR29vZ2xlLVRl
c3QtYmFzZWQgdGVzdC4gIFdlIGRvbid0IGFjdHVhbAotLy8gcnVuIHRoZSBURVNUIGl0c2VsZi4K
LVRFU1QoR1Rlc3RDb2xvclRlc3QsIER1bW15KSB7Ci19Ci0KLWludCBtYWluKGludCBhcmdjLCBj
aGFyKiogYXJndikgewotICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0K
LSAgaWYgKFNob3VsZFVzZUNvbG9yKHRydWUpKSB7Ci0gICAgLy8gR29vZ2xlIFRlc3QgZGVjaWRl
cyB0byB1c2UgY29sb3JzIGluIHRoZSBvdXRwdXQgKGFzc3VtaW5nIGl0Ci0gICAgLy8gZ29lcyB0
byBhIFRUWSkuCi0gICAgcHJpbnRmKCJZRVNcbiIpOwotICAgIHJldHVybiAxOwotICB9IGVsc2Ug
ewotICAgIC8vIEdvb2dsZSBUZXN0IGRlY2lkZXMgbm90IHRvIHVzZSBjb2xvcnMgaW4gdGhlIG91
dHB1dC4KLSAgICBwcmludGYoIk5PXG4iKTsKLSAgICByZXR1cm4gMDsKLSAgfQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3QucHkg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYmNjMGJmZDU1MzI5NzI2ODA3NjE1NzczNmM4M2U0
YTg0Y2FlMDU2Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weQorKysg
L2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMg
Q29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0j
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0iIiJWZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IGNvcnJlY3RseSBw
YXJzZXMgZW52aXJvbm1lbnQgdmFyaWFibGVzLiIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWltcG9ydCBndGVzdF90ZXN0X3V0
aWxzCi0KLQotSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250JwotSVNfTElOVVggPSBvcy5uYW1l
ID09ICdwb3NpeCcgYW5kIG9zLnVuYW1lKClbMF0gPT0gJ0xpbnV4JwotCi1DT01NQU5EID0gZ3Rl
c3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2d0ZXN0X2Vudl92YXJfdGVzdF8n
KQotCi1lbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkKLQotCi1kZWYgQXNzZXJ0RXEoZXhwZWN0
ZWQsIGFjdHVhbCk6Ci0gIGlmIGV4cGVjdGVkICE9IGFjdHVhbDoKLSAgICBwcmludCAnRXhwZWN0
ZWQ6ICVzJyAlIChleHBlY3RlZCwpCi0gICAgcHJpbnQgJyAgQWN0dWFsOiAlcycgJSAoYWN0dWFs
LCkKLSAgICByYWlzZSBBc3NlcnRpb25FcnJvcgotCi0KLWRlZiBTZXRFbnZWYXIoZW52X3Zhciwg
dmFsdWUpOgotICAiIiJTZXRzIHRoZSBlbnYgdmFyaWFibGUgdG8gJ3ZhbHVlJzsgdW5zZXRzIGl0
IHdoZW4gJ3ZhbHVlJyBpcyBOb25lLiIiIgotCi0gIGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAg
IGVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQotICBlbGlmIGVudl92YXIgaW4gZW52aXJvbjoKLSAg
ICBkZWwgZW52aXJvbltlbnZfdmFyXQotCi0KLWRlZiBHZXRGbGFnKGZsYWcpOgotICAiIiJSdW5z
IGd0ZXN0X2Vudl92YXJfdGVzdF8gYW5kIHJldHVybnMgaXRzIG91dHB1dC4iIiIKLQotICBhcmdz
ID0gW0NPTU1BTkRdCi0gIGlmIGZsYWcgaXMgbm90IE5vbmU6Ci0gICAgYXJncyArPSBbZmxhZ10K
LSAgcmV0dXJuIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhhcmdzLCBlbnY9ZW52aXJvbiku
b3V0cHV0Ci0KLQotZGVmIFRlc3RGbGFnKGZsYWcsIHRlc3RfdmFsLCBkZWZhdWx0X3ZhbCk6Ci0g
ICIiIlZlcmlmaWVzIHRoYXQgdGhlIGdpdmVuIGZsYWcgaXMgYWZmZWN0ZWQgYnkgdGhlIGNvcnJl
c3BvbmRpbmcgZW52IHZhci4iIiIKLQotICBlbnZfdmFyID0gJ0dURVNUXycgKyBmbGFnLnVwcGVy
KCkKLSAgU2V0RW52VmFyKGVudl92YXIsIHRlc3RfdmFsKQotICBBc3NlcnRFcSh0ZXN0X3ZhbCwg
R2V0RmxhZyhmbGFnKSkKLSAgU2V0RW52VmFyKGVudl92YXIsIE5vbmUpCi0gIEFzc2VydEVxKGRl
ZmF1bHRfdmFsLCBHZXRGbGFnKGZsYWcpKQotCi0KLWNsYXNzIEdUZXN0RW52VmFyVGVzdChndGVz
dF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAgZGVmIHRlc3RFbnZWYXJBZmZlY3RzRmxhZyhzZWxm
KToKLSAgICAiIiJUZXN0cyB0aGF0IGVudmlyb25tZW50IHZhcmlhYmxlIHNob3VsZCBhZmZlY3Qg
dGhlIGNvcnJlc3BvbmRpbmcgZmxhZy4iIiIKLQotICAgIFRlc3RGbGFnKCdicmVha19vbl9mYWls
dXJlJywgJzEnLCAnMCcpCi0gICAgVGVzdEZsYWcoJ2NvbG9yJywgJ3llcycsICdhdXRvJykKLSAg
ICBUZXN0RmxhZygnZmlsdGVyJywgJ0Zvb1Rlc3QuQmFyJywgJyonKQotICAgIFRlc3RGbGFnKCdv
dXRwdXQnLCAneG1sOnRtcC9mb28ueG1sJywgJycpCi0gICAgVGVzdEZsYWcoJ3ByaW50X3RpbWUn
LCAnMCcsICcxJykKLSAgICBUZXN0RmxhZygncmVwZWF0JywgJzk5OScsICcxJykKLSAgICBUZXN0
RmxhZygndGhyb3dfb25fZmFpbHVyZScsICcxJywgJzAnKQotICAgIFRlc3RGbGFnKCdkZWF0aF90
ZXN0X3N0eWxlJywgJ3RocmVhZHNhZmUnLCAnZmFzdCcpCi0KLSAgICBpZiBJU19XSU5ET1dTOgot
ICAgICAgVGVzdEZsYWcoJ2NhdGNoX2V4Y2VwdGlvbnMnLCAnMScsICcwJykKLQotICAgIGlmIElT
X0xJTlVYOgotICAgICAgVGVzdEZsYWcoJ2RlYXRoX3Rlc3RfdXNlX2ZvcmsnLCAnMScsICcwJykK
LSAgICAgIFRlc3RGbGFnKCdzdGFja190cmFjZV9kZXB0aCcsICcwJywgJzEwMCcpCi0KLQotaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0Xy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0Xy5jYwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdjNzhmY2YzMDUzMTJhNjZjMjY1YjE4MTBh
NjkxMDc3ZGI3NzFmNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdF8uY2MK
KysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2ds
ZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKLQotLy8gQSBoZWxwZXIgcHJvZ3JhbSBmb3IgdGVzdGluZyB0aGF0IEdvb2dsZSBU
ZXN0IHBhcnNlcyB0aGUgZW52aXJvbm1lbnQKLS8vIHZhcmlhYmxlcyBjb3JyZWN0bHkuCi0KLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLSNkZWZpbmUg
R1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5s
LmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLXVzaW5nIDo6c3RkOjpjb3V0Owot
Ci1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLS8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gbWFr
ZSB0aGUgdGVzdCBtb3JlIHJlYWxpc3RpYyBieSBlbnN1cmluZwotLy8gdGhhdCB0aGUgVW5pdFRl
c3Qgc2luZ2xldG9uIGlzIGNyZWF0ZWQgYmVmb3JlIG1haW4oKSBpcyBlbnRlcmVkLgotLy8gV2Ug
ZG9uJ3QgYWN0dWFsIHJ1biB0aGUgVEVTVCBpdHNlbGYuCi1URVNUKEdUZXN0RW52VmFyVGVzdCwg
RHVtbXkpIHsKLX0KLQotdm9pZCBQcmludEZsYWcoY29uc3QgY2hhciogZmxhZykgewotICBpZiAo
c3RyY21wKGZsYWcsICJicmVha19vbl9mYWlsdXJlIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RF
U1RfRkxBRyhicmVha19vbl9mYWlsdXJlKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3Ry
Y21wKGZsYWcsICJjYXRjaF9leGNlcHRpb25zIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1Rf
RkxBRyhjYXRjaF9leGNlcHRpb25zKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21w
KGZsYWcsICJjb2xvciIpID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcoY29sb3IpOwot
ICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywgImRlYXRoX3Rlc3Rfc3R5bGUi
KSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpOwotICAg
IHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywgImRlYXRoX3Rlc3RfdXNlX2Zvcmsi
KSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspOwot
ICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywgImZpbHRlciIpID09IDApIHsK
LSAgICBjb3V0IDw8IEdURVNUX0ZMQUcoZmlsdGVyKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBp
ZiAoc3RyY21wKGZsYWcsICJvdXRwdXQiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFH
KG91dHB1dCk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAicHJpbnRf
dGltZSIpID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcocHJpbnRfdGltZSk7Ci0gICAg
cmV0dXJuOwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAicmVwZWF0IikgPT0gMCkgewotICAg
IGNvdXQgPDwgR1RFU1RfRkxBRyhyZXBlYXQpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChz
dHJjbXAoZmxhZywgInN0YWNrX3RyYWNlX2RlcHRoIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RF
U1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaWYgKHN0
cmNtcChmbGFnLCAidGhyb3dfb25fZmFpbHVyZSIpID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNU
X0ZMQUcodGhyb3dfb25fZmFpbHVyZSk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgY291dCA8PCAi
SW52YWxpZCBmbGFnIG5hbWUgIiA8PCBmbGFnCi0gICAgICAgPDwgIi4gIFZhbGlkIG5hbWVzIGFy
ZSBicmVha19vbl9mYWlsdXJlLCBjb2xvciwgZmlsdGVyLCBldGMuXG4iOwotICBleGl0KDEpOwot
fQotCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpIHsKLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIGlm
IChhcmdjICE9IDIpIHsKLSAgICBjb3V0IDw8ICJVc2FnZTogZ3Rlc3RfZW52X3Zhcl90ZXN0XyBO
QU1FX09GX0ZMQUdcbiI7Ci0gICAgcmV0dXJuIDE7Ci0gIH0KLQotICB0ZXN0aW5nOjpQcmludEZs
YWcoYXJndlsxXSk7Ci0gIHJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjCmluZGV4IGM5MzkyNjE0ZDc0
ZDdmYzIzMmU4NmIyYzNkNmNkYjFiMWUyYjYxMzEuLmJjOTUyNGQ2NjM3M2U3MTk1MWNhY2NkOTA2
YzA2NmVmNGFmOTRiNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfZW52aXJvbm1lbnRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X2Vudmlyb25tZW50X3Rlc3QuY2MKQEAgLTI2LDE0ICsyNiwxNCBAQAogLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogLy8KIC8vIFRlc3RzIHVzaW5nIGdsb2Jh
bCB0ZXN0IGVudmlyb25tZW50cy4KIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0
ZGlvLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKIAogbmFtZXNwYWNlIHRlc3Rp
bmcgewogR1RFU1RfREVDTEFSRV9zdHJpbmdfKGZpbHRlcik7CkBAIC05Miw2ICs5Miw3IEBAIGNs
YXNzIE15RW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6RW52aXJvbm1lbnQgewogCiAgIC8v
IFdhcyBUZWFyRG93bigpIHJ1bj8KICAgYm9vbCB0ZWFyX2Rvd25fd2FzX3J1bigpIGNvbnN0IHsg
cmV0dXJuIHRlYXJfZG93bl93YXNfcnVuXzsgfQorCiAgcHJpdmF0ZToKICAgRmFpbHVyZVR5cGUg
ZmFpbHVyZV9pbl9zZXRfdXBfOwogICBib29sIHNldF91cF93YXNfcnVuXzsKQEAgLTExMSw3ICsx
MTIsNyBAQCBURVNUKEZvb1Rlc3QsIEJhcikgewogdm9pZCBDaGVjayhib29sIGNvbmRpdGlvbiwg
Y29uc3QgY2hhciogbXNnKSB7CiAgIGlmICghY29uZGl0aW9uKSB7CiAgICAgcHJpbnRmKCJGQUlM
RUQ6ICVzXG4iLCBtc2cpOwotICAgIGFib3J0KCk7CisgICAgdGVzdGluZzo6aW50ZXJuYWw6OnBv
c2l4OjpBYm9ydCgpOwogICB9CiB9CiAKQEAgLTEyMyw2ICsxMjQsNyBAQCBpbnQgUnVuQWxsVGVz
dHMoTXlFbnZpcm9ubWVudCogZW52LCBGYWlsdXJlVHlwZSBmYWlsdXJlKSB7CiAgIGVudi0+UmVz
ZXQoKTsKICAgZW52LT5zZXRfZmFpbHVyZV9pbl9zZXRfdXAoZmFpbHVyZSk7CiAgIHRlc3Rfd2Fz
X3J1biA9IGZhbHNlOworICB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCktPkNs
ZWFyQWRIb2NUZXN0UmVzdWx0KCk7CiAgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0
ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRl
c3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDBkMWE3NzAwNThjY2I5MDExNTQ2
ODA5MjRjYmQzYzY0ZDhjOGQxNzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5p
dHRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2MzMgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0IHRl
c3QgZmlsdGVycy4KLQotQSB1c2VyIGNhbiBzcGVjaWZ5IHdoaWNoIHRlc3QocykgaW4gYSBHb29n
bGUgVGVzdCBwcm9ncmFtIHRvIHJ1biB2aWEgZWl0aGVyCi10aGUgR1RFU1RfRklMVEVSIGVudmly
b25tZW50IHZhcmlhYmxlIG9yIHRoZSAtLWd0ZXN0X2ZpbHRlciBmbGFnLgotVGhpcyBzY3JpcHQg
dGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5IGJ5IGludm9raW5nCi1ndGVzdF9maWx0ZXJfdW5pdHRl
c3RfIChhIHByb2dyYW0gd3JpdHRlbiB3aXRoIEdvb2dsZSBUZXN0KSB3aXRoIGRpZmZlcmVudAot
ZW52aXJvbm1lbnRzIGFuZCBjb21tYW5kIGxpbmUgZmxhZ3MuCi0KLU5vdGUgdGhhdCB0ZXN0IHNo
YXJkaW5nIG1heSBhbHNvIGluZmx1ZW5jZSB3aGljaCB0ZXN0cyBhcmUgZmlsdGVyZWQuIFRoZXJl
Zm9yZSwKLXdlIHRlc3QgdGhhdCBoZXJlIGFsc28uCi0iIiIKLQotX19hdXRob3JfXyA9ICd3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9y
dCBzZXRzCi1pbXBvcnQgc3lzCi0KLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi0KLSMgQ29uc3Rh
bnRzLgotCi0jIENoZWNrcyBpZiB0aGlzIHBsYXRmb3JtIGNhbiBwYXNzIGVtcHR5IGVudmlyb25t
ZW50IHZhcmlhYmxlcyB0byBjaGlsZAotIyBwcm9jZXNzZXMuICBXZSBzZXQgYW4gZW52IHZhcmlh
YmxlIHRvIGFuIGVtcHR5IHN0cmluZyBhbmQgaW52b2tlIGEgcHl0aG9uCi0jIHNjcmlwdCBpbiBh
IHN1YnByb2Nlc3MgdG8gcHJpbnQgd2hldGhlciB0aGUgdmFyaWFibGUgaXMgU1RJTEwgaW4KLSMg
b3MuZW52aXJvbi4gIFdlIHRoZW4gdXNlICdldmFsJyB0byBwYXJzZSB0aGUgY2hpbGQncyBvdXRw
dXQgc28gdGhhdCBhbgotIyBleGNlcHRpb24gaXMgdGhyb3duIGlmIHRoZSBpbnB1dCBpcyBhbnl0
aGluZyBvdGhlciB0aGFuICdUcnVlJyBub3IgJ0ZhbHNlJy4KLW9zLmVudmlyb25bJ0VNUFRZX1ZB
UiddID0gJycKLWNoaWxkID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAotICAgIFtzeXMu
ZXhlY3V0YWJsZSwgJy1jJywgJ2ltcG9ydCBvczsgcHJpbnQgXCdFTVBUWV9WQVJcJyBpbiBvcy5l
bnZpcm9uJ10pCi1DQU5fUEFTU19FTVBUWV9FTlYgPSBldmFsKGNoaWxkLm91dHB1dCkKLQotCi0j
IENoZWNrIGlmIHRoaXMgcGxhdGZvcm0gY2FuIHVuc2V0IGVudmlyb25tZW50IHZhcmlhYmxlcyBp
biBjaGlsZCBwcm9jZXNzZXMuCi0jIFdlIHNldCBhbiBlbnYgdmFyaWFibGUgdG8gYSBub24tZW1w
dHkgc3RyaW5nLCB1bnNldCBpdCwgYW5kIGludm9rZQotIyBhIHB5dGhvbiBzY3JpcHQgaW4gYSBz
dWJwcm9jZXNzIHRvIHByaW50IHdoZXRoZXIgdGhlIHZhcmlhYmxlCi0jIGlzIE5PIExPTkdFUiBp
biBvcy5lbnZpcm9uLgotIyBXZSB1c2UgJ2V2YWwnIHRvIHBhcnNlIHRoZSBjaGlsZCdzIG91dHB1
dCBzbyB0aGF0IGFuIGV4Y2VwdGlvbgotIyBpcyB0aHJvd24gaWYgdGhlIGlucHV0IGlzIG5laXRo
ZXIgJ1RydWUnIG5vciAnRmFsc2UnLgotb3MuZW52aXJvblsnVU5TRVRfVkFSJ10gPSAnWCcKLWRl
bCBvcy5lbnZpcm9uWydVTlNFVF9WQVInXQotY2hpbGQgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnBy
b2Nlc3MoCi0gICAgW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAnaW1wb3J0IG9zOyBwcmludCBcJ1VO
U0VUX1ZBUlwnIG5vdCBpbiBvcy5lbnZpcm9uJ10pCi1DQU5fVU5TRVRfRU5WID0gZXZhbChjaGls
ZC5vdXRwdXQpCi0KLQotIyBDaGVja3MgaWYgd2Ugc2hvdWxkIHRlc3Qgd2l0aCBhbiBlbXB0eSBm
aWx0ZXIuIFRoaXMgZG9lc24ndAotIyBtYWtlIHNlbnNlIG9uIHBsYXRmb3JtcyB0aGF0IGNhbm5v
dCBwYXNzIGVtcHR5IGVudiB2YXJpYWJsZXMgKFdpbjMyKQotIyBhbmQgb24gcGxhdGZvcm1zIHRo
YXQgY2Fubm90IHVuc2V0IHZhcmlhYmxlcyAoc2luY2Ugd2UgY2Fubm90IHRlbGwKLSMgdGhlIGRp
ZmZlcmVuY2UgYmV0d2VlbiAiIiBhbmQgTlVMTCAtLSBCb3JsYW5kIGFuZCBTb2xhcmlzIDwgNS4x
MCkKLUNBTl9URVNUX0VNUFRZX0ZJTFRFUiA9IChDQU5fUEFTU19FTVBUWV9FTlYgYW5kIENBTl9V
TlNFVF9FTlYpCi0KLQotIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIHNwZWNpZnlpbmcg
dGhlIHRlc3QgZmlsdGVycy4KLUZJTFRFUl9FTlZfVkFSID0gJ0dURVNUX0ZJTFRFUicKLQotIyBU
aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0ZXN0IHNoYXJkaW5nLgotVE9UQUxfU0hBUkRT
X0VOVl9WQVIgPSAnR1RFU1RfVE9UQUxfU0hBUkRTJwotU0hBUkRfSU5ERVhfRU5WX1ZBUiA9ICdH
VEVTVF9TSEFSRF9JTkRFWCcKLVNIQVJEX1NUQVRVU19GSUxFX0VOVl9WQVIgPSAnR1RFU1RfU0hB
UkRfU1RBVFVTX0ZJTEUnCi0KLSMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciBzcGVjaWZ5aW5n
IHRoZSB0ZXN0IGZpbHRlcnMuCi1GSUxURVJfRkxBRyA9ICdndGVzdF9maWx0ZXInCi0KLSMgVGhl
IGNvbW1hbmQgbGluZSBmbGFnIGZvciBpbmNsdWRpbmcgZGlzYWJsZWQgdGVzdHMuCi1BTFNPX1JV
Tl9ESVNBQkVEX1RFU1RTX0ZMQUcgPSAnZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMnCi0K
LSMgQ29tbWFuZCB0byBydW4gdGhlIGd0ZXN0X2ZpbHRlcl91bml0dGVzdF8gcHJvZ3JhbS4KLUNP
TU1BTkQgPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ3Rlc3RfZmls
dGVyX3VuaXR0ZXN0XycpCi0KLSMgUmVnZXggZm9yIGRldGVybWluaW5nIHdoZXRoZXIgcGFyYW1l
dGVyaXplZCB0ZXN0cyBhcmUgZW5hYmxlZCBpbiB0aGUgYmluYXJ5LgotUEFSQU1fVEVTVF9SRUdF
WCA9IHJlLmNvbXBpbGUocicvUGFyYW1UZXN0JykKLQotIyBSZWdleCBmb3IgcGFyc2luZyB0ZXN0
IGNhc2UgbmFtZXMgZnJvbSBHb29nbGUgVGVzdCdzIG91dHB1dC4KLVRFU1RfQ0FTRV9SRUdFWCA9
IHJlLmNvbXBpbGUocideXFtcLStcXSBcZCsgdGVzdHM/IGZyb20gKFx3KygvXHcrKT8pJykKLQot
IyBSZWdleCBmb3IgcGFyc2luZyB0ZXN0IG5hbWVzIGZyb20gR29vZ2xlIFRlc3QncyBvdXRwdXQu
Ci1URVNUX1JFR0VYID0gcmUuY29tcGlsZShyJ15cW1xzKlJVTlxzKlxdLipcLihcdysoL1x3Kyk/
KScpCi0KLSMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIHRvIHRlbGwgR29vZ2xlIFRlc3QgdG8gb3V0
cHV0IHRoZSBsaXN0IG9mIHRlc3RzIGl0Ci0jIHdpbGwgcnVuLgotTElTVF9URVNUU19GTEFHID0g
Jy0tZ3Rlc3RfbGlzdF90ZXN0cycKLQotIyBJbmRpY2F0ZXMgd2hldGhlciBHb29nbGUgVGVzdCBz
dXBwb3J0cyBkZWF0aCB0ZXN0cy4KLVNVUFBPUlRTX0RFQVRIX1RFU1RTID0gJ0hhc0RlYXRoVGVz
dCcgaW4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAotICAgIFtDT01NQU5ELCBMSVNUX1RF
U1RTX0ZMQUddKS5vdXRwdXQKLQotIyBGdWxsIG5hbWVzIG9mIGFsbCB0ZXN0cyBpbiBndGVzdF9m
aWx0ZXJfdW5pdHRlc3RzXy4KLVBBUkFNX1RFU1RTID0gWwotICAgICdTZXFQL1BhcmFtVGVzdC5U
ZXN0WC8wJywKLSAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMScsCi0gICAgJ1NlcVAvUGFyYW1U
ZXN0LlRlc3RZLzAnLAotICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8xJywKLSAgICAnU2VxUS9Q
YXJhbVRlc3QuVGVzdFgvMCcsCi0gICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RYLzEnLAotICAgICdT
ZXFRL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFkvMScsCi0g
ICAgXQotCi1ESVNBQkxFRF9URVNUUyA9IFsKLSAgICAnQmFyVGVzdC5ESVNBQkxFRF9UZXN0Rm91
cicsCi0gICAgJ0JhclRlc3QuRElTQUJMRURfVGVzdEZpdmUnLAotICAgICdCYXpUZXN0LkRJU0FC
TEVEX1Rlc3RDJywKLSAgICAnRElTQUJMRURfRm9vYmFyVGVzdC5UZXN0MScsCi0gICAgJ0RJU0FC
TEVEX0Zvb2JhclRlc3QuRElTQUJMRURfVGVzdDInLAotICAgICdESVNBQkxFRF9Gb29iYXJiYXpU
ZXN0LlRlc3RBJywKLSAgICBdCi0KLWlmIFNVUFBPUlRTX0RFQVRIX1RFU1RTOgotICBERUFUSF9U
RVNUUyA9IFsKLSAgICAnSGFzRGVhdGhUZXN0LlRlc3QxJywKLSAgICAnSGFzRGVhdGhUZXN0LlRl
c3QyJywKLSAgICBdCi1lbHNlOgotICBERUFUSF9URVNUUyA9IFtdCi0KLSMgQWxsIHRoZSBub24t
ZGlzYWJsZWQgdGVzdHMuCi1BQ1RJVkVfVEVTVFMgPSBbCi0gICAgJ0Zvb1Rlc3QuQWJjJywKLSAg
ICAnRm9vVGVzdC5YeXonLAotCi0gICAgJ0JhclRlc3QuVGVzdE9uZScsCi0gICAgJ0JhclRlc3Qu
VGVzdFR3bycsCi0gICAgJ0JhclRlc3QuVGVzdFRocmVlJywKLQotICAgICdCYXpUZXN0LlRlc3RP
bmUnLAotICAgICdCYXpUZXN0LlRlc3RBJywKLSAgICAnQmF6VGVzdC5UZXN0QicsCi0gICAgXSAr
IERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMKLQotcGFyYW1fdGVzdHNfcHJlc2VudCA9IE5vbmUK
LQotIyBVdGlsaXRpZXMuCi0KLWVudmlyb24gPSBvcy5lbnZpcm9uLmNvcHkoKQotCi0KLWRlZiBT
ZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgotICAiIiJTZXRzIHRoZSBlbnYgdmFyaWFibGUgdG8g
J3ZhbHVlJzsgdW5zZXRzIGl0IHdoZW4gJ3ZhbHVlJyBpcyBOb25lLiIiIgotCi0gIGlmIHZhbHVl
IGlzIG5vdCBOb25lOgotICAgIGVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQotICBlbGlmIGVudl92
YXIgaW4gZW52aXJvbjoKLSAgICBkZWwgZW52aXJvbltlbnZfdmFyXQotCi0KLWRlZiBSdW5BbmRS
ZXR1cm5PdXRwdXQoYXJncyA9IE5vbmUpOgotICAiIiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0gYW5k
IHJldHVybnMgaXRzIG91dHB1dC4iIiIKLQotICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJw
cm9jZXNzKFtDT01NQU5EXSArIChhcmdzIG9yIFtdKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbnY9ZW52aXJvbikub3V0cHV0Ci0KLQotZGVmIFJ1bkFuZEV4dHJhY3RU
ZXN0TGlzdChhcmdzID0gTm9uZSk6Ci0gICIiIlJ1bnMgdGhlIHRlc3QgcHJvZ3JhbSBhbmQgcmV0
dXJucyBpdHMgZXhpdCBjb2RlIGFuZCBhIGxpc3Qgb2YgdGVzdHMgcnVuLiIiIgotCi0gIHAgPSBn
dGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0NPTU1BTkRdICsgKGFyZ3Mgb3IgW10pLCBlbnY9
ZW52aXJvbikKLSAgdGVzdHNfcnVuID0gW10KLSAgdGVzdF9jYXNlID0gJycKLSAgdGVzdCA9ICcn
Ci0gIGZvciBsaW5lIGluIHAub3V0cHV0LnNwbGl0KCdcbicpOgotICAgIG1hdGNoID0gVEVTVF9D
QVNFX1JFR0VYLm1hdGNoKGxpbmUpCi0gICAgaWYgbWF0Y2ggaXMgbm90IE5vbmU6Ci0gICAgICB0
ZXN0X2Nhc2UgPSBtYXRjaC5ncm91cCgxKQotICAgIGVsc2U6Ci0gICAgICBtYXRjaCA9IFRFU1Rf
UkVHRVgubWF0Y2gobGluZSkKLSAgICAgIGlmIG1hdGNoIGlzIG5vdCBOb25lOgotICAgICAgICB0
ZXN0ID0gbWF0Y2guZ3JvdXAoMSkKLSAgICAgICAgdGVzdHNfcnVuLmFwcGVuZCh0ZXN0X2Nhc2Ug
KyAnLicgKyB0ZXN0KQotICByZXR1cm4gKHRlc3RzX3J1biwgcC5leGl0X2NvZGUpCi0KLQotZGVm
IEludm9rZVdpdGhNb2RpZmllZEVudihleHRyYV9lbnYsIGZ1bmN0aW9uLCAqYXJncywgKiprd2Fy
Z3MpOgotICAiIiJSdW5zIHRoZSBnaXZlbiBmdW5jdGlvbiBhbmQgYXJndW1lbnRzIGluIGEgbW9k
aWZpZWQgZW52aXJvbm1lbnQuIiIiCi0gIHRyeToKLSAgICBvcmlnaW5hbF9lbnYgPSBlbnZpcm9u
LmNvcHkoKQotICAgIGVudmlyb24udXBkYXRlKGV4dHJhX2VudikKLSAgICByZXR1cm4gZnVuY3Rp
b24oKmFyZ3MsICoqa3dhcmdzKQotICBmaW5hbGx5OgotICAgIGVudmlyb24uY2xlYXIoKQotICAg
IGVudmlyb24udXBkYXRlKG9yaWdpbmFsX2VudikKLQotCi1kZWYgUnVuV2l0aFNoYXJkaW5nKHRv
dGFsX3NoYXJkcywgc2hhcmRfaW5kZXgsIGNvbW1hbmQpOgotICAiIiJSdW5zIGEgdGVzdCBwcm9n
cmFtIHNoYXJkIGFuZCByZXR1cm5zIGV4aXQgY29kZSBhbmQgYSBsaXN0IG9mIHRlc3RzIHJ1bi4i
IiIKLQotICBleHRyYV9lbnYgPSB7U0hBUkRfSU5ERVhfRU5WX1ZBUjogc3RyKHNoYXJkX2luZGV4
KSwKLSAgICAgICAgICAgICAgIFRPVEFMX1NIQVJEU19FTlZfVkFSOiBzdHIodG90YWxfc2hhcmRz
KX0KLSAgcmV0dXJuIEludm9rZVdpdGhNb2RpZmllZEVudihleHRyYV9lbnYsIFJ1bkFuZEV4dHJh
Y3RUZXN0TGlzdCwgY29tbWFuZCkKLQotIyBUaGUgdW5pdCB0ZXN0LgotCi0KLWNsYXNzIEdUZXN0
RmlsdGVyVW5pdFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gICIiIlRlc3RzIHRo
ZSBlbnYgdmFyaWFibGUgb3IgdGhlIGNvbW1hbmQgbGluZSBmbGFnIHRvIGZpbHRlciB0ZXN0cy4i
IiIKLQotICAjIFV0aWxpdGllcy4KLQotICBkZWYgQXNzZXJ0U2V0RXF1YWwoc2VsZiwgbGhzLCBy
aHMpOgotICAgICIiIkFzc2VydHMgdGhhdCB0d28gc2V0cyBhcmUgZXF1YWwuIiIiCi0KLSAgICBm
b3IgZWxlbSBpbiBsaHM6Ci0gICAgICBzZWxmLmFzc2VydF8oZWxlbSBpbiByaHMsICclcyBpbiAl
cycgJSAoZWxlbSwgcmhzKSkKLQotICAgIGZvciBlbGVtIGluIHJoczoKLSAgICAgIHNlbGYuYXNz
ZXJ0XyhlbGVtIGluIGxocywgJyVzIGluICVzJyAlIChlbGVtLCBsaHMpKQotCi0gIGRlZiBBc3Nl
cnRQYXJ0aXRpb25Jc1ZhbGlkKHNlbGYsIHNldF92YXIsIGxpc3Rfb2Zfc2V0cyk6Ci0gICAgIiIi
QXNzZXJ0cyB0aGF0IGxpc3Rfb2Zfc2V0cyBpcyBhIHZhbGlkIHBhcnRpdGlvbiBvZiBzZXRfdmFy
LiIiIgotCi0gICAgZnVsbF9wYXJ0aXRpb24gPSBbXQotICAgIGZvciBzbGljZV92YXIgaW4gbGlz
dF9vZl9zZXRzOgotICAgICAgZnVsbF9wYXJ0aXRpb24uZXh0ZW5kKHNsaWNlX3ZhcikKLSAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihzZXRfdmFyKSwgbGVuKGZ1bGxfcGFydGl0aW9uKSkKLSAgICBz
ZWxmLmFzc2VydEVxdWFsKHNldHMuU2V0KHNldF92YXIpLCBzZXRzLlNldChmdWxsX3BhcnRpdGlv
bikpCi0KLSAgZGVmIEFkanVzdEZvclBhcmFtZXRlcml6ZWRUZXN0cyhzZWxmLCB0ZXN0c190b19y
dW4pOgotICAgICIiIkFkanVzdCB0ZXN0c190b19ydW4gaW4gY2FzZSB2YWx1ZSBwYXJhbWV0ZXJp
emVkIHRlc3RzIGFyZSBkaXNhYmxlZC4iIiIKLQotICAgIGdsb2JhbCBwYXJhbV90ZXN0c19wcmVz
ZW50Ci0gICAgaWYgbm90IHBhcmFtX3Rlc3RzX3ByZXNlbnQ6Ci0gICAgICByZXR1cm4gbGlzdChz
ZXRzLlNldCh0ZXN0c190b19ydW4pIC0gc2V0cy5TZXQoUEFSQU1fVEVTVFMpKQotICAgIGVsc2U6
Ci0gICAgICByZXR1cm4gdGVzdHNfdG9fcnVuCi0KLSAgZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBn
dGVzdF9maWx0ZXIsIHRlc3RzX3RvX3J1bik6Ci0gICAgIiIiQ2hlY2tzIHRoYXQgdGhlIGJpbmFy
eSBydW5zIGNvcnJlY3Qgc2V0IG9mIHRlc3RzIGZvciBhIGdpdmVuIGZpbHRlci4iIiIKLQotICAg
IHRlc3RzX3RvX3J1biA9IHNlbGYuQWRqdXN0Rm9yUGFyYW1ldGVyaXplZFRlc3RzKHRlc3RzX3Rv
X3J1bikKLQotICAgICMgRmlyc3QsIHRlc3RzIHVzaW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJs
ZS4KLQotICAgICMgV2luZG93cyByZW1vdmVzIGVtcHR5IHZhcmlhYmxlcyBmcm9tIHRoZSBlbnZp
cm9ubWVudCB3aGVuIHBhc3NpbmcgaXQKLSAgICAjIHRvIGEgbmV3IHByb2Nlc3MuICBUaGlzIG1l
YW5zIGl0IGlzIGltcG9zc2libGUgdG8gcGFzcyBhbiBlbXB0eSBmaWx0ZXIKLSAgICAjIGludG8g
YSBwcm9jZXNzIHVzaW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS4gIEhvd2V2ZXIsIHdlIGNh
biBzdGlsbAotICAgICMgdGVzdCB0aGUgY2FzZSB3aGVuIHRoZSB2YXJpYWJsZSBpcyBub3Qgc3Vw
cGxpZWQgKGkuZS4sIGd0ZXN0X2ZpbHRlciBpcwotICAgICMgTm9uZSkuCi0gICAgIyBweWxpbnQ6
IGRpc2FibGUtbXNnPUM2NDAzCi0gICAgaWYgQ0FOX1RFU1RfRU1QVFlfRklMVEVSIG9yIGd0ZXN0
X2ZpbHRlciAhPSAnJzoKLSAgICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgZ3Rlc3RfZmls
dGVyKQotICAgICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KClbMF0KLSAgICAg
IFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgTm9uZSkKLSAgICAgIHNlbGYuQXNzZXJ0U2V0RXF1
YWwodGVzdHNfcnVuLCB0ZXN0c190b19ydW4pCi0gICAgIyBweWxpbnQ6IGVuYWJsZS1tc2c9QzY0
MDMKLQotICAgICMgTmV4dCwgdGVzdHMgdXNpbmcgdGhlIGNvbW1hbmQgbGluZSBmbGFnLgotCi0g
ICAgaWYgZ3Rlc3RfZmlsdGVyIGlzIE5vbmU6Ci0gICAgICBhcmdzID0gW10KLSAgICBlbHNlOgot
ICAgICAgYXJncyA9IFsnLS0lcz0lcycgJSAoRklMVEVSX0ZMQUcsIGd0ZXN0X2ZpbHRlcildCi0K
LSAgICB0ZXN0c19ydW4gPSBSdW5BbmRFeHRyYWN0VGVzdExpc3QoYXJncylbMF0KLSAgICBzZWxm
LkFzc2VydFNldEVxdWFsKHRlc3RzX3J1biwgdGVzdHNfdG9fcnVuKQotCi0gIGRlZiBSdW5BbmRW
ZXJpZnlXaXRoU2hhcmRpbmcoc2VsZiwgZ3Rlc3RfZmlsdGVyLCB0b3RhbF9zaGFyZHMsIHRlc3Rz
X3RvX3J1biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPU5vbmUsIGNoZWNr
X2V4aXRfMD1GYWxzZSk6Ci0gICAgIiIiQ2hlY2tzIHRoYXQgYmluYXJ5IHJ1bnMgY29ycmVjdCB0
ZXN0cyBmb3IgdGhlIGdpdmVuIGZpbHRlciBhbmQgc2hhcmQuCi0KLSAgICBSdW5zIGFsbCBzaGFy
ZHMgb2YgZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0XyB3aXRoIHRoZSBnaXZlbiBmaWx0ZXIsIGFuZAot
ICAgIHZlcmlmaWVzIHRoYXQgdGhlIHJpZ2h0IHNldCBvZiB0ZXN0cyB3ZXJlIHJ1bi4gVGhlIHVu
aW9uIG9mIHRlc3RzIHJ1bgotICAgIG9uIGVhY2ggc2hhcmQgc2hvdWxkIGJlIGlkZW50aWNhbCB0
byB0ZXN0c190b19ydW4sIHdpdGhvdXQgZHVwbGljYXRlcy4KLQotICAgIEFyZ3M6Ci0gICAgICBn
dGVzdF9maWx0ZXI6IEEgZmlsdGVyIHRvIGFwcGx5IHRvIHRoZSB0ZXN0cy4KLSAgICAgIHRvdGFs
X3NoYXJkczogQSB0b3RhbCBudW1iZXIgb2Ygc2hhcmRzIHRvIHNwbGl0IHRlc3QgcnVuIGludG8u
Ci0gICAgICB0ZXN0c190b19ydW46IEEgc2V0IG9mIHRlc3RzIGV4cGVjdGVkIHRvIHJ1bi4KLSAg
ICAgIGFyZ3MgICA6ICAgICAgQXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIHRvIHRoZSB0ZXN0IGJp
bmFyeS4KLSAgICAgIGNoZWNrX2V4aXRfMDogV2hlbiBzZXQgdG8gYSB0cnVlIHZhbHVlLCBtYWtl
IHN1cmUgdGhhdCBhbGwgc2hhcmRzCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwLgotICAg
ICIiIgotCi0gICAgdGVzdHNfdG9fcnVuID0gc2VsZi5BZGp1c3RGb3JQYXJhbWV0ZXJpemVkVGVz
dHModGVzdHNfdG9fcnVuKQotCi0gICAgIyBXaW5kb3dzIHJlbW92ZXMgZW1wdHkgdmFyaWFibGVz
IGZyb20gdGhlIGVudmlyb25tZW50IHdoZW4gcGFzc2luZyBpdAotICAgICMgdG8gYSBuZXcgcHJv
Y2Vzcy4gIFRoaXMgbWVhbnMgaXQgaXMgaW1wb3NzaWJsZSB0byBwYXNzIGFuIGVtcHR5IGZpbHRl
cgotICAgICMgaW50byBhIHByb2Nlc3MgdXNpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLiAg
SG93ZXZlciwgd2UgY2FuIHN0aWxsCi0gICAgIyB0ZXN0IHRoZSBjYXNlIHdoZW4gdGhlIHZhcmlh
YmxlIGlzIG5vdCBzdXBwbGllZCAoaS5lLiwgZ3Rlc3RfZmlsdGVyIGlzCi0gICAgIyBOb25lKS4K
LSAgICAjIHB5bGludDogZGlzYWJsZS1tc2c9QzY0MDMKLSAgICBpZiBDQU5fVEVTVF9FTVBUWV9G
SUxURVIgb3IgZ3Rlc3RfZmlsdGVyICE9ICcnOgotICAgICAgU2V0RW52VmFyKEZJTFRFUl9FTlZf
VkFSLCBndGVzdF9maWx0ZXIpCi0gICAgICBwYXJ0aXRpb24gPSBbXQotICAgICAgZm9yIGkgaW4g
cmFuZ2UoMCwgdG90YWxfc2hhcmRzKToKLSAgICAgICAgKHRlc3RzX3J1biwgZXhpdF9jb2RlKSA9
IFJ1bldpdGhTaGFyZGluZyh0b3RhbF9zaGFyZHMsIGksIGFyZ3MpCi0gICAgICAgIGlmIGNoZWNr
X2V4aXRfMDoKLSAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGV4aXRfY29kZSkKLSAgICAg
ICAgcGFydGl0aW9uLmFwcGVuZCh0ZXN0c19ydW4pCi0KLSAgICAgIHNlbGYuQXNzZXJ0UGFydGl0
aW9uSXNWYWxpZCh0ZXN0c190b19ydW4sIHBhcnRpdGlvbikKLSAgICAgIFNldEVudlZhcihGSUxU
RVJfRU5WX1ZBUiwgTm9uZSkKLSAgICAjIHB5bGludDogZW5hYmxlLW1zZz1DNjQwMwotCi0gIGRl
ZiBSdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKHNlbGYsIGd0ZXN0X2ZpbHRlciwgdGVzdHNf
dG9fcnVuKToKLSAgICAiIiJDaGVja3MgdGhhdCB0aGUgYmluYXJ5IHJ1bnMgY29ycmVjdCBzZXQg
b2YgdGVzdHMgZm9yIHRoZSBnaXZlbiBmaWx0ZXIuCi0KLSAgICBSdW5zIGd0ZXN0X2ZpbHRlcl91
bml0dGVzdF8gd2l0aCB0aGUgZ2l2ZW4gZmlsdGVyLCBhbmQgZW5hYmxlcwotICAgIGRpc2FibGVk
IHRlc3RzLiBWZXJpZmllcyB0aGF0IHRoZSByaWdodCBzZXQgb2YgdGVzdHMgd2VyZSBydW4uCi0K
LSAgICBBcmdzOgotICAgICAgZ3Rlc3RfZmlsdGVyOiBBIGZpbHRlciB0byBhcHBseSB0byB0aGUg
dGVzdHMuCi0gICAgICB0ZXN0c190b19ydW46IEEgc2V0IG9mIHRlc3RzIGV4cGVjdGVkIHRvIHJ1
bi4KLSAgICAiIiIKLQotICAgIHRlc3RzX3RvX3J1biA9IHNlbGYuQWRqdXN0Rm9yUGFyYW1ldGVy
aXplZFRlc3RzKHRlc3RzX3RvX3J1bikKLQotICAgICMgQ29uc3RydWN0IHRoZSBjb21tYW5kIGxp
bmUuCi0gICAgYXJncyA9IFsnLS0lcycgJSBBTFNPX1JVTl9ESVNBQkVEX1RFU1RTX0ZMQUddCi0g
ICAgaWYgZ3Rlc3RfZmlsdGVyIGlzIG5vdCBOb25lOgotICAgICAgYXJncy5hcHBlbmQoJy0tJXM9
JXMnICUgKEZJTFRFUl9GTEFHLCBndGVzdF9maWx0ZXIpKQotCi0gICAgdGVzdHNfcnVuID0gUnVu
QW5kRXh0cmFjdFRlc3RMaXN0KGFyZ3MpWzBdCi0gICAgc2VsZi5Bc3NlcnRTZXRFcXVhbCh0ZXN0
c19ydW4sIHRlc3RzX3RvX3J1bikKLQotICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgIiIiU2V0cyB1
cCB0ZXN0IGNhc2UuCi0KLSAgICBEZXRlcm1pbmVzIHdoZXRoZXIgdmFsdWUtcGFyYW1ldGVyaXpl
ZCB0ZXN0cyBhcmUgZW5hYmxlZCBpbiB0aGUgYmluYXJ5IGFuZAotICAgIHNldHMgdGhlIGZsYWdz
IGFjY29yZGluZ2x5LgotICAgICIiIgotCi0gICAgZ2xvYmFsIHBhcmFtX3Rlc3RzX3ByZXNlbnQK
LSAgICBpZiBwYXJhbV90ZXN0c19wcmVzZW50IGlzIE5vbmU6Ci0gICAgICBwYXJhbV90ZXN0c19w
cmVzZW50ID0gUEFSQU1fVEVTVF9SRUdFWC5zZWFyY2goCi0gICAgICAgICAgUnVuQW5kUmV0dXJu
T3V0cHV0KCkpIGlzIG5vdCBOb25lCi0KLSAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3Ioc2VsZik6
Ci0gICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9yIG9mIG5vdCBzcGVjaWZ5aW5nIHRoZSBmaWx0ZXIu
IiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShOb25lLCBBQ1RJVkVfVEVTVFMpCi0KLSAgZGVm
IHRlc3REZWZhdWx0QmVoYXZpb3JXaXRoU2hhcmRzKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBi
ZWhhdmlvciB3aXRob3V0IHRoZSBmaWx0ZXIsIHdpdGggc2hhcmRpbmcgZW5hYmxlZC4iIiIKLQot
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKE5vbmUsIDEsIEFDVElWRV9URVNUUykK
LSAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhOb25lLCAyLCBBQ1RJVkVfVEVTVFMp
Ci0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgbGVuKEFDVElWRV9URVNU
UykgLSAxLCBBQ1RJVkVfVEVTVFMpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmco
Tm9uZSwgbGVuKEFDVElWRV9URVNUUyksIEFDVElWRV9URVNUUykKLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeVdpdGhTaGFyZGluZyhOb25lLCBsZW4oQUNUSVZFX1RFU1RTKSArIDEsIEFDVElWRV9URVNU
UykKLQotICBkZWYgdGVzdEVtcHR5RmlsdGVyKHNlbGYpOgotICAgICIiIlRlc3RzIGFuIGVtcHR5
IGZpbHRlci4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcnLCBbXSkKLSAgICBzZWxmLlJ1
bkFuZFZlcmlmeVdpdGhTaGFyZGluZygnJywgMSwgW10pCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlX
aXRoU2hhcmRpbmcoJycsIDIsIFtdKQotCi0gIGRlZiB0ZXN0QmFkRmlsdGVyKHNlbGYpOgotICAg
ICIiIlRlc3RzIGEgZmlsdGVyIHRoYXQgbWF0Y2hlcyBub3RoaW5nLiIiIgotCi0gICAgc2VsZi5S
dW5BbmRWZXJpZnkoJ0JhZEZpbHRlcicsIFtdKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dp
bmdEaXNhYmxlZCgnQmFkRmlsdGVyJywgW10pCi0KLSAgZGVmIHRlc3RGdWxsTmFtZShzZWxmKToK
LSAgICAiIiJUZXN0cyBmaWx0ZXJpbmcgYnkgZnVsbCBuYW1lLiIiIgotCi0gICAgc2VsZi5SdW5B
bmRWZXJpZnkoJ0Zvb1Rlc3QuWHl6JywgWydGb29UZXN0Llh5eiddKQotICAgIHNlbGYuUnVuQW5k
VmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnRm9vVGVzdC5YeXonLCBbJ0Zvb1Rlc3QuWHl6J10pCi0g
ICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJ0Zvb1Rlc3QuWHl6JywgNSwgWydGb29U
ZXN0Llh5eiddKQotCi0gIGRlZiB0ZXN0VW5pdmVyc2FsRmlsdGVycyhzZWxmKToKLSAgICAiIiJU
ZXN0cyBmaWx0ZXJzIHRoYXQgbWF0Y2ggZXZlcnl0aGluZy4iIiIKLQotICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KCcqJywgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLionLCBB
Q1RJVkVfVEVTVFMpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJyouKicsIGxl
bihBQ1RJVkVfVEVTVFMpIC0gMywgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5
QWxsb3dpbmdEaXNhYmxlZCgnKicsIEFDVElWRV9URVNUUyArIERJU0FCTEVEX1RFU1RTKQotICAg
IHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnKi4qJywgQUNUSVZFX1RFU1RTICsg
RElTQUJMRURfVEVTVFMpCi0KLSAgZGVmIHRlc3RGaWx0ZXJCeVRlc3RDYXNlKHNlbGYpOgotICAg
ICIiIlRlc3RzIGZpbHRlcmluZyBieSB0ZXN0IGNhc2UgbmFtZS4iIiIKLQotICAgIHNlbGYuUnVu
QW5kVmVyaWZ5KCdGb29UZXN0LionLCBbJ0Zvb1Rlc3QuQWJjJywgJ0Zvb1Rlc3QuWHl6J10pCi0K
LSAgICBCQVpfVEVTVFMgPSBbJ0JhelRlc3QuVGVzdE9uZScsICdCYXpUZXN0LlRlc3RBJywgJ0Jh
elRlc3QuVGVzdEInXQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdCYXpUZXN0LionLCBCQVpfVEVT
VFMpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdCYXpUZXN0LionLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCQVpfVEVTVFMgKyBbJ0JhelRl
c3QuRElTQUJMRURfVGVzdEMnXSkKLQotICBkZWYgdGVzdEZpbHRlckJ5VGVzdChzZWxmKToKLSAg
ICAiIiJUZXN0cyBmaWx0ZXJpbmcgYnkgdGVzdCBuYW1lLiIiIgotCi0gICAgc2VsZi5SdW5BbmRW
ZXJpZnkoJyouVGVzdE9uZScsIFsnQmFyVGVzdC5UZXN0T25lJywgJ0JhelRlc3QuVGVzdE9uZSdd
KQotCi0gIGRlZiB0ZXN0RmlsdGVyRGlzYWJsZWRUZXN0cyhzZWxmKToKLSAgICAiIiJTZWxlY3Qg
b25seSB0aGUgZGlzYWJsZWQgdGVzdHMgdG8gcnVuLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJp
ZnkoJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnLCBbXSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlm
eUFsbG93aW5nRGlzYWJsZWQoJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEn
XSkKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqRElTQUJMRURfKicsIFtdKQotICAgIHNlbGYu
UnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnKkRJU0FCTEVEXyonLCBESVNBQkxFRF9URVNU
UykKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLkRJU0FCTEVEXyonLCBbXSkKLSAgICBzZWxm
LlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJyouRElTQUJMRURfKicsIFsKLSAgICAgICAg
J0JhclRlc3QuRElTQUJMRURfVGVzdEZvdXInLAotICAgICAgICAnQmFyVGVzdC5ESVNBQkxFRF9U
ZXN0Rml2ZScsCi0gICAgICAgICdCYXpUZXN0LkRJU0FCTEVEX1Rlc3RDJywKLSAgICAgICAgJ0RJ
U0FCTEVEX0Zvb2JhclRlc3QuRElTQUJMRURfVGVzdDInLAotICAgICAgICBdKQotCi0gICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoJ0RJU0FCTEVEXyonLCBbXSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFs
bG93aW5nRGlzYWJsZWQoJ0RJU0FCTEVEXyonLCBbCi0gICAgICAgICdESVNBQkxFRF9Gb29iYXJU
ZXN0LlRlc3QxJywKLSAgICAgICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuRElTQUJMRURfVGVzdDIn
LAotICAgICAgICAnRElTQUJMRURfRm9vYmFyYmF6VGVzdC5UZXN0QScsCi0gICAgICAgIF0pCi0K
LSAgZGVmIHRlc3RXaWxkY2FyZEluVGVzdENhc2VOYW1lKHNlbGYpOgotICAgICIiIlRlc3RzIHVz
aW5nIHdpbGRjYXJkIGluIHRoZSB0ZXN0IGNhc2UgbmFtZS4iIiIKLQotICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KCcqYSouKicsIFsKLSAgICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCi0gICAgICAgICdC
YXJUZXN0LlRlc3RUd28nLAotICAgICAgICAnQmFyVGVzdC5UZXN0VGhyZWUnLAotCi0gICAgICAg
ICdCYXpUZXN0LlRlc3RPbmUnLAotICAgICAgICAnQmF6VGVzdC5UZXN0QScsCi0gICAgICAgICdC
YXpUZXN0LlRlc3RCJywgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMpCi0KLSAgZGVmIHRl
c3RXaWxkY2FyZEluVGVzdE5hbWUoc2VsZik6Ci0gICAgIiIiVGVzdHMgdXNpbmcgd2lsZGNhcmQg
aW4gdGhlIHRlc3QgbmFtZS4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLipBKicsIFsn
Rm9vVGVzdC5BYmMnLCAnQmF6VGVzdC5UZXN0QSddKQotCi0gIGRlZiB0ZXN0RmlsdGVyV2l0aG91
dERvdChzZWxmKToKLSAgICAiIiJUZXN0cyBhIGZpbHRlciB0aGF0IGhhcyBubyAnLicgaW4gaXQu
IiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKnoqJywgWwotICAgICAgICAnRm9vVGVzdC5Y
eXonLAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RPbmUnLAotICAgICAgICAnQmF6VGVzdC5UZXN0
QScsCi0gICAgICAgICdCYXpUZXN0LlRlc3RCJywKLSAgICAgICAgXSkKLQotICBkZWYgdGVzdFR3
b1BhdHRlcm5zKHNlbGYpOgotICAgICIiIlRlc3RzIGZpbHRlcnMgdGhhdCBjb25zaXN0IG9mIHR3
byBwYXR0ZXJucy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdGb28qLio6KkEqJywgWwot
ICAgICAgICAnRm9vVGVzdC5BYmMnLAotICAgICAgICAnRm9vVGVzdC5YeXonLAotCi0gICAgICAg
ICdCYXpUZXN0LlRlc3RBJywKLSAgICAgICAgXSkKLQotICAgICMgQW4gZW1wdHkgcGF0dGVybiAr
IGEgbm9uLWVtcHR5IG9uZQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCc6KkEqJywgWydGb29UZXN0
LkFiYycsICdCYXpUZXN0LlRlc3RBJ10pCi0KLSAgZGVmIHRlc3RUaHJlZVBhdHRlcm5zKHNlbGYp
OgotICAgICIiIlRlc3RzIGZpbHRlcnMgdGhhdCBjb25zaXN0IG9mIHRocmVlIHBhdHRlcm5zLiIi
IgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJypvbyo6KkEqOipPbmUnLCBbCi0gICAgICAgICdG
b29UZXN0LkFiYycsCi0gICAgICAgICdGb29UZXN0Llh5eicsCi0KLSAgICAgICAgJ0JhclRlc3Qu
VGVzdE9uZScsCi0KLSAgICAgICAgJ0JhelRlc3QuVGVzdE9uZScsCi0gICAgICAgICdCYXpUZXN0
LlRlc3RBJywKLSAgICAgICAgXSkKLQotICAgICMgVGhlIDJuZCBwYXR0ZXJuIGlzIGVtcHR5Lgot
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqb28qOjoqT25lJywgWwotICAgICAgICAnRm9vVGVzdC5B
YmMnLAotICAgICAgICAnRm9vVGVzdC5YeXonLAotCi0gICAgICAgICdCYXJUZXN0LlRlc3RPbmUn
LAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RPbmUnLAotICAgICAgICBdKQotCi0gICAgIyBUaGUg
bGFzdCAyIHBhdHRlcm5zIGFyZSBlbXB0eS4KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKm9vKjo6
JywgWwotICAgICAgICAnRm9vVGVzdC5BYmMnLAotICAgICAgICAnRm9vVGVzdC5YeXonLAotICAg
ICAgICBdKQotCi0gIGRlZiB0ZXN0TmVnYXRpdmVGaWx0ZXJzKHNlbGYpOgotICAgIHNlbGYuUnVu
QW5kVmVyaWZ5KCcqLUJhelRlc3QuVGVzdE9uZScsIFsKLSAgICAgICAgJ0Zvb1Rlc3QuQWJjJywK
LSAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKLSAg
ICAgICAgJ0JhclRlc3QuVGVzdFR3bycsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCi0K
LSAgICAgICAgJ0JhelRlc3QuVGVzdEEnLAotICAgICAgICAnQmF6VGVzdC5UZXN0QicsCi0gICAg
ICAgIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTKQotCi0gICAgc2VsZi5SdW5BbmRWZXJp
ZnkoJyotRm9vVGVzdC5BYmM6QmF6VGVzdC4qJywgWwotICAgICAgICAnRm9vVGVzdC5YeXonLAot
Ci0gICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAotICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywK
LSAgICAgICAgJ0JhclRlc3QuVGVzdFRocmVlJywKLSAgICAgICAgXSArIERFQVRIX1RFU1RTICsg
UEFSQU1fVEVTVFMpCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnQmFyVGVzdC4qLUJhclRlc3Qu
VGVzdE9uZScsIFsKLSAgICAgICAgJ0JhclRlc3QuVGVzdFR3bycsCi0gICAgICAgICdCYXJUZXN0
LlRlc3RUaHJlZScsCi0gICAgICAgIF0pCi0KLSAgICAjIFRlc3RzIHdpdGhvdXQgbGVhZGluZyAn
KicuCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJy1Gb29UZXN0LkFiYzpGb29UZXN0Llh5ejpCYXpU
ZXN0LionLCBbCi0gICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAotICAgICAgICAnQmFyVGVzdC5U
ZXN0VHdvJywKLSAgICAgICAgJ0JhclRlc3QuVGVzdFRocmVlJywKLSAgICAgICAgXSArIERFQVRI
X1RFU1RTICsgUEFSQU1fVEVTVFMpCi0KLSAgICAjIFZhbHVlIHBhcmFtZXRlcml6ZWQgdGVzdHMu
Ci0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJyovKicsIFBBUkFNX1RFU1RTKQotCi0gICAgIyBWYWx1
ZSBwYXJhbWV0ZXJpemVkIHRlc3RzIGZpbHRlcmluZyBieSB0aGUgc2VxdWVuY2UgbmFtZS4KLSAg
ICBzZWxmLlJ1bkFuZFZlcmlmeSgnU2VxUC8qJywgWwotICAgICAgICAnU2VxUC9QYXJhbVRlc3Qu
VGVzdFgvMCcsCi0gICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8xJywKLSAgICAgICAgJ1Nl
cVAvUGFyYW1UZXN0LlRlc3RZLzAnLAotICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMScs
Ci0gICAgICAgIF0pCi0KLSAgICAjIFZhbHVlIHBhcmFtZXRlcml6ZWQgdGVzdHMgZmlsdGVyaW5n
IGJ5IHRoZSB0ZXN0IG5hbWUuCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJyovMCcsIFsKLSAgICAg
ICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzAnLAotICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVz
dFkvMCcsCi0gICAgICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WC8wJywKLSAgICAgICAgJ1NlcVEv
UGFyYW1UZXN0LlRlc3RZLzAnLAotICAgICAgICBdKQotCi0gIGRlZiB0ZXN0RmxhZ092ZXJyaWRl
c0VudlZhcihzZWxmKToKLSAgICAiIiJUZXN0cyB0aGF0IHRoZSBmaWx0ZXIgZmxhZyBvdmVycmlk
ZXMgdGhlIGZpbHRlcmluZyBlbnYuIHZhcmlhYmxlLiIiIgotCi0gICAgU2V0RW52VmFyKEZJTFRF
Ul9FTlZfVkFSLCAnRm9vKicpCi0gICAgYXJncyA9IFsnLS0lcz0lcycgJSAoRklMVEVSX0ZMQUcs
ICcqT25lJyldCi0gICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KGFyZ3MpWzBd
Ci0gICAgU2V0RW52VmFyKEZJTFRFUl9FTlZfVkFSLCBOb25lKQotCi0gICAgc2VsZi5Bc3NlcnRT
ZXRFcXVhbCh0ZXN0c19ydW4sIFsnQmFyVGVzdC5UZXN0T25lJywgJ0JhelRlc3QuVGVzdE9uZSdd
KQotCi0gIGRlZiB0ZXN0U2hhcmRTdGF0dXNGaWxlSXNDcmVhdGVkKHNlbGYpOgotICAgICIiIlRl
c3RzIHRoYXQgdGhlIHNoYXJkIGZpbGUgaXMgY3JlYXRlZCBpZiBzcGVjaWZpZWQgaW4gdGhlIGVu
dmlyb25tZW50LiIiIgotCi0gICAgc2hhcmRfc3RhdHVzX2ZpbGUgPSBvcy5wYXRoLmpvaW4oZ3Rl
c3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3NoYXJkX3N0YXR1c19maWxlJykKLSAgICBzZWxmLmFzc2VydF8obm90IG9zLnBh
dGguZXhpc3RzKHNoYXJkX3N0YXR1c19maWxlKSkKLQotICAgIGV4dHJhX2VudiA9IHtTSEFSRF9T
VEFUVVNfRklMRV9FTlZfVkFSOiBzaGFyZF9zdGF0dXNfZmlsZX0KLSAgICB0cnk6Ci0gICAgICBJ
bnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LCBSdW5BbmRSZXR1cm5PdXRwdXQpCi0gICAg
ZmluYWxseToKLSAgICAgIHNlbGYuYXNzZXJ0Xyhvcy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNf
ZmlsZSkpCi0gICAgICBvcy5yZW1vdmUoc2hhcmRfc3RhdHVzX2ZpbGUpCi0KLSAgZGVmIHRlc3RT
aGFyZFN0YXR1c0ZpbGVJc0NyZWF0ZWRXaXRoTGlzdFRlc3RzKHNlbGYpOgotICAgICIiIlRlc3Rz
IHRoYXQgdGhlIHNoYXJkIGZpbGUgaXMgY3JlYXRlZCB3aXRoIHRoZSAibGlzdF90ZXN0cyIgZmxh
Zy4iIiIKLQotICAgIHNoYXJkX3N0YXR1c19maWxlID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3Rf
dXRpbHMuR2V0VGVtcERpcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdzaGFyZF9zdGF0dXNfZmlsZTInKQotICAgIHNlbGYuYXNzZXJ0Xyhub3Qgb3MucGF0aC5leGlz
dHMoc2hhcmRfc3RhdHVzX2ZpbGUpKQotCi0gICAgZXh0cmFfZW52ID0ge1NIQVJEX1NUQVRVU19G
SUxFX0VOVl9WQVI6IHNoYXJkX3N0YXR1c19maWxlfQotICAgIHRyeToKLSAgICAgIG91dHB1dCA9
IEludm9rZVdpdGhNb2RpZmllZEVudihleHRyYV9lbnYsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUnVuQW5kUmV0dXJuT3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtMSVNUX1RFU1RTX0ZMQUddKQotICAgIGZpbmFsbHk6Ci0gICAgICAj
IFRoaXMgYXNzZXJ0aW9uIGVuc3VyZXMgdGhhdCBHb29nbGUgVGVzdCBlbnVtZXJhdGVkIHRoZSB0
ZXN0cyBhcwotICAgICAgIyBvcHBvc2VkIHRvIHJ1bm5pbmcgdGhlbS4KLSAgICAgIHNlbGYuYXNz
ZXJ0XygnWz09PT09PT09PT1dJyBub3QgaW4gb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICdV
bmV4cGVjdGVkIG91dHB1dCBkdXJpbmcgdGVzdCBlbnVtZXJhdGlvbi5cbicKLSAgICAgICAgICAg
ICAgICAgICAnUGxlYXNlIGVuc3VyZSB0aGF0IExJU1RfVEVTVFNfRkxBRyBpcyBhc3NpZ25lZCB0
aGVcbicKLSAgICAgICAgICAgICAgICAgICAnY29ycmVjdCBmbGFnIHZhbHVlIGZvciBsaXN0aW5n
IEdvb2dsZSBUZXN0IHRlc3RzLicpCi0KLSAgICAgIHNlbGYuYXNzZXJ0Xyhvcy5wYXRoLmV4aXN0
cyhzaGFyZF9zdGF0dXNfZmlsZSkpCi0gICAgICBvcy5yZW1vdmUoc2hhcmRfc3RhdHVzX2ZpbGUp
Ci0KLSAgaWYgU1VQUE9SVFNfREVBVEhfVEVTVFM6Ci0gICAgZGVmIHRlc3RTaGFyZGluZ1dvcmtz
V2l0aERlYXRoVGVzdHMoc2VsZik6Ci0gICAgICAiIiJUZXN0cyBpbnRlZ3JhdGlvbiB3aXRoIGRl
YXRoIHRlc3RzIGFuZCBzaGFyZGluZy4iIiIKLQotICAgICAgZ3Rlc3RfZmlsdGVyID0gJ0hhc0Rl
YXRoVGVzdC4qOlNlcVAvKicKLSAgICAgIGV4cGVjdGVkX3Rlc3RzID0gWwotICAgICAgICAgICdI
YXNEZWF0aFRlc3QuVGVzdDEnLAotICAgICAgICAgICdIYXNEZWF0aFRlc3QuVGVzdDInLAotCi0g
ICAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzAnLAotICAgICAgICAgICdTZXFQL1BhcmFt
VGVzdC5UZXN0WC8xJywKLSAgICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMCcsCi0gICAg
ICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzEnLAotICAgICAgICAgIF0KLQotICAgICAgZm9y
IGZsYWcgaW4gWyctLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGU9dGhyZWFkc2FmZScsCi0gICAgICAg
ICAgICAgICAgICAgJy0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZT1mYXN0J106Ci0gICAgICAgIHNl
bGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKGd0ZXN0X2ZpbHRlciwgMywgZXhwZWN0ZWRfdGVz
dHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2V4aXRfMD1U
cnVlLCBhcmdzPVtmbGFnXSkKLSAgICAgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmco
Z3Rlc3RfZmlsdGVyLCA1LCBleHBlY3RlZF90ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hlY2tfZXhpdF8wPVRydWUsIGFyZ3M9W2ZsYWddKQotCi1pZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgotICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3RfLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3RfLmNj
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjU1MDRmZTk0YWZjMTc3YzQ2Y2JjMTM1
ZmVjNjc1YzU1NGQyZTBkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0
Xy5jYworKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSwg
R29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0v
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAo
WmhhbnlvbmcgV2FuKQotCi0vLyBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0IHRlc3QgZmlsdGVy
cy4KLS8vCi0vLyBBIHVzZXIgY2FuIHNwZWNpZnkgd2hpY2ggdGVzdChzKSBpbiBhIEdvb2dsZSBU
ZXN0IHByb2dyYW0gdG8gcnVuIHZpYQotLy8gZWl0aGVyIHRoZSBHVEVTVF9GSUxURVIgZW52aXJv
bm1lbnQgdmFyaWFibGUgb3IgdGhlIC0tZ3Rlc3RfZmlsdGVyCi0vLyBmbGFnLiAgVGhpcyBpcyB1
c2VkIGZvciB0ZXN0aW5nIHN1Y2ggZnVuY3Rpb25hbGl0eS4KLS8vCi0vLyBUaGUgcHJvZ3JhbSB3
aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRlc3QuICBEb24ndCBydW4gaXQKLS8v
IGRpcmVjdGx5LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotbmFtZXNwYWNlIHsKLQot
Ly8gVGVzdCBjYXNlIEZvb1Rlc3QuCi0KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Ci19OwotCi1URVNUX0YoRm9vVGVzdCwgQWJjKSB7Ci19Ci0KLVRFU1RfRihGb29UZXN0
LCBYeXopIHsKLSAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Ci19Ci0KLS8vIFRlc3Qg
Y2FzZSBCYXJUZXN0LgotCi1URVNUKEJhclRlc3QsIFRlc3RPbmUpIHsKLX0KLQotVEVTVChCYXJU
ZXN0LCBUZXN0VHdvKSB7Ci19Ci0KLVRFU1QoQmFyVGVzdCwgVGVzdFRocmVlKSB7Ci19Ci0KLVRF
U1QoQmFyVGVzdCwgRElTQUJMRURfVGVzdEZvdXIpIHsKLSAgRkFJTCgpIDw8ICJFeHBlY3RlZCBm
YWlsdXJlLiI7Ci19Ci0KLVRFU1QoQmFyVGVzdCwgRElTQUJMRURfVGVzdEZpdmUpIHsKLSAgRkFJ
TCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Ci19Ci0KLS8vIFRlc3QgY2FzZSBCYXpUZXN0Lgot
Ci1URVNUKEJhelRlc3QsIFRlc3RPbmUpIHsKLSAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJl
LiI7Ci19Ci0KLVRFU1QoQmF6VGVzdCwgVGVzdEEpIHsKLX0KLQotVEVTVChCYXpUZXN0LCBUZXN0
QikgewotfQotCi1URVNUKEJhelRlc3QsIERJU0FCTEVEX1Rlc3RDKSB7Ci0gIEZBSUwoKSA8PCAi
RXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi0vLyBUZXN0IGNhc2UgSGFzRGVhdGhUZXN0Ci0KLVRF
U1QoSGFzRGVhdGhUZXN0LCBUZXN0MSkgewotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKGV4
aXQoMSksICIuKiIpOwotfQotCi0vLyBXZSBuZWVkIGF0IGxlYXN0IHR3byBkZWF0aCB0ZXN0cyB0
byBtYWtlIHN1cmUgdGhhdCB0aGUgYWxsIGRlYXRoIHRlc3RzCi0vLyBhcmVuJ3Qgb24gdGhlIGZp
cnN0IHNoYXJkLgotVEVTVChIYXNEZWF0aFRlc3QsIFRlc3QyKSB7Ci0gIEVYUEVDVF9ERUFUSF9J
Rl9TVVBQT1JURUQoZXhpdCgxKSwgIi4qIik7Ci19Ci0KLS8vIFRlc3QgY2FzZSBGb29iYXJUZXN0
Ci0KLVRFU1QoRElTQUJMRURfRm9vYmFyVGVzdCwgVGVzdDEpIHsKLSAgRkFJTCgpIDw8ICJFeHBl
Y3RlZCBmYWlsdXJlLiI7Ci19Ci0KLVRFU1QoRElTQUJMRURfRm9vYmFyVGVzdCwgRElTQUJMRURf
VGVzdDIpIHsKLSAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Ci19Ci0KLS8vIFRlc3Qg
Y2FzZSBGb29iYXJiYXpUZXN0Ci0KLVRFU1QoRElTQUJMRURfRm9vYmFyYmF6VGVzdCwgVGVzdEEp
IHsKLSAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Ci19Ci0KLSNpZiBHVEVTVF9IQVNf
UEFSQU1fVEVTVAotY2xhc3MgUGFyYW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08aW50PiB7Ci19OwotCi1URVNUX1AoUGFyYW1UZXN0LCBUZXN0WCkgewotfQotCi1URVNUX1Ao
UGFyYW1UZXN0LCBUZXN0WSkgewotfQotCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXFQLCBQ
YXJhbVRlc3QsIHRlc3Rpbmc6OlZhbHVlcygxLCAyKSk7Ci1JTlNUQU5USUFURV9URVNUX0NBU0Vf
UChTZXFRLCBQYXJhbVRlc3QsIHRlc3Rpbmc6OlZhbHVlcyg1LCA2KSk7Ci0jZW5kaWYgIC8vIEdU
RVNUX0hBU19QQVJBTV9URVNUCi0KLX0gIC8vIG5hbWVzcGFjZQotCi1pbnQgbWFpbihpbnQgYXJn
YywgY2hhciAqKmFyZ3YpIHsKLSAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJn
dik7Ci0KLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3QucHkKaW5kZXggM2NiNGM0OGUwYjQ2MjhkOWFh
N2M2ZjMyMDdhYjdlZTEwY2QyMmJhMy4uNTgyZDI0YzJkY2NlODk0NTM4YWE2M2NjYmQ2MTIwYmRk
NGIzNTBhMCAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9o
ZWxwX3Rlc3QucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9oZWxw
X3Rlc3QucHkKQEAgLTI5LDI3ICsyOSwyNiBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAotIiIiVGVzdHMgdGhlIC0taGVscCBmbGFnIG9mIEdvb2dsZSBDKysgVGVzdGluZyBGcmFt
ZXdvcmsuCisiIiJUZXN0cyB0aGUgLS1oZWxwIGZsYWcgb2YgR29vZ2xlIEMrKyBUZXN0aW5nIGFu
ZCBNb2NraW5nIEZyYW1ld29yay4KIAogU1lOT1BTSVMKLSAgICAgICBndGVzdF9oZWxwX3Rlc3Qu
cHkgLS1ndGVzdF9idWlsZF9kaXI9QlVJTEQvRElSCisgICAgICAgZ3Rlc3RfaGVscF90ZXN0LnB5
IC0tYnVpbGRfZGlyPUJVSUxEL0RJUgogICAgICAgICAgIyB3aGVyZSBCVUlMRC9ESVIgY29udGFp
bnMgdGhlIGJ1aWx0IGd0ZXN0X2hlbHBfdGVzdF8gZmlsZS4KICAgICAgICBndGVzdF9oZWxwX3Rl
c3QucHkKICIiIgogCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4p
JwotCiBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKIAogCitJ
U19MSU5VWCA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBhbmQgb3MudW5hbWUoKVswXSA9PSAnTGludXgn
CiBJU19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCiAKIFBST0dSQU1fUEFUSCA9IGd0ZXN0X3Rl
c3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9oZWxwX3Rlc3RfJykKIEZMQUdf
UFJFRklYID0gJy0tZ3Rlc3RfJwotQ0FUQ0hfRVhDRVBUSU9OU19GTEFHID0gRkxBR19QUkVGSVgg
KyAnY2F0Y2hfZXhjZXB0aW9ucycKIERFQVRIX1RFU1RfU1RZTEVfRkxBRyA9IEZMQUdfUFJFRklY
ICsgJ2RlYXRoX3Rlc3Rfc3R5bGUnCitTVFJFQU1fUkVTVUxUX1RPX0ZMQUcgPSBGTEFHX1BSRUZJ
WCArICdzdHJlYW1fcmVzdWx0X3RvJwogVU5LTk9XTl9GTEFHID0gRkxBR19QUkVGSVggKyAndW5r
bm93bl9mbGFnX2Zvcl90ZXN0aW5nJwogTElTVF9URVNUU19GTEFHID0gRkxBR19QUkVGSVggKyAn
bGlzdF90ZXN0cycKIElOQ09SUkVDVF9GTEFHX1ZBUklBTlRTID0gW3JlLnN1YignXi0tJywgJy0n
LCBMSVNUX1RFU1RTX0ZMQUcpLApAQCAtNzIsNyArNzEsOCBAQCBIRUxQX1JFR0VYID0gcmUuY29t
cGlsZSgKICAgICBGTEFHX1BSRUZJWCArIHIncHJpbnRfdGltZS4qJyArCiAgICAgRkxBR19QUkVG
SVggKyByJ291dHB1dD0uKicgKwogICAgIEZMQUdfUFJFRklYICsgcidicmVha19vbl9mYWlsdXJl
LionICsKLSAgICBGTEFHX1BSRUZJWCArIHIndGhyb3dfb25fZmFpbHVyZS4qJywKKyAgICBGTEFH
X1BSRUZJWCArIHIndGhyb3dfb25fZmFpbHVyZS4qJyArCisgICAgRkxBR19QUkVGSVggKyByJ2Nh
dGNoX2V4Y2VwdGlvbnM9MC4qJywKICAgICByZS5ET1RBTEwpCiAKIApAQCAtMTA5LDEwICsxMDks
MTEgQEAgY2xhc3MgR1Rlc3RIZWxwVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKICAg
ICBleGl0X2NvZGUsIG91dHB1dCA9IFJ1bldpdGhGbGFnKGZsYWcpCiAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoMCwgZXhpdF9jb2RlKQogICAgIHNlbGYuYXNzZXJ0XyhIRUxQX1JFR0VYLnNlYXJjaChv
dXRwdXQpLCBvdXRwdXQpCi0gICAgaWYgSVNfV0lORE9XUzoKLSAgICAgIHNlbGYuYXNzZXJ0XyhD
QVRDSF9FWENFUFRJT05TX0ZMQUcgaW4gb3V0cHV0LCBvdXRwdXQpCisKKyAgICBpZiBJU19MSU5V
WDoKKyAgICAgIHNlbGYuYXNzZXJ0XyhTVFJFQU1fUkVTVUxUX1RPX0ZMQUcgaW4gb3V0cHV0LCBv
dXRwdXQpCiAgICAgZWxzZToKLSAgICAgIHNlbGYuYXNzZXJ0XyhDQVRDSF9FWENFUFRJT05TX0ZM
QUcgbm90IGluIG91dHB1dCwgb3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKFNUUkVBTV9SRVNV
TFRfVE9fRkxBRyBub3QgaW4gb3V0cHV0LCBvdXRwdXQpCiAKICAgICBpZiBTVVBQT1JUU19ERUFU
SF9URVNUUyBhbmQgbm90IElTX1dJTkRPV1M6CiAgICAgICBzZWxmLmFzc2VydF8oREVBVEhfVEVT
VF9TVFlMRV9GTEFHIGluIG91dHB1dCwgb3V0cHV0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3RfLmNjCmluZGV4IGFhZDBkNzJkNzY3NTM1ZTFiN2E3
MjIyNDc3NTQzMDEwMzNlNzEwNmYuLjc1MGFlNmNlOTVmY2JjYjMzOGVkNWRiMmI1ODhmMTVjZGQ1
YzJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVs
cF90ZXN0Xy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2hlbHBf
dGVzdF8uY2MKQEAgLTI2LDEzICsyNiwxMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKKwogCiAvLyBUaGlzIHByb2dyYW0gaXMgbWVhbnQgdG8gYmUgcnVuIGJ5IGd0ZXN0
X2hlbHBfdGVzdC5weS4gIERvIG5vdCBydW4KIC8vIGl0IGRpcmVjdGx5LgogCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAvLyBXaGVuIGEgaGVs
cCBmbGFnIGlzIHNwZWNpZmllZCwgdGhpcyBwcm9ncmFtIHNob3VsZCBza2lwIHRoZSB0ZXN0cwog
Ly8gYW5kIGV4aXQgd2l0aCAwOyBvdGhlcndpc2UgdGhlIGZvbGxvd2luZyB0ZXN0IHdpbGwgYmUg
ZXhlY3V0ZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X2pzb25fdGVzdF91dGlscy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
anNvbl90ZXN0X3V0aWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyYmJmYzI4OGY4MmIzODdjZDgzNDQ2YzBh
MDViYTE2N2IxYWE3NTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X2pzb25fdGVzdF91dGlscy5weQpAQCAtMCwwICsxLDYwIEBACisjIENvcHly
aWdodCAyMDE4LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworIiIiVW5pdCB0ZXN0IHV0aWxpdGllcyBmb3IgZ3Rlc3RfanNvbl9vdXRwdXQu
IiIiCisKK2ltcG9ydCByZQorCisKK2RlZiBub3JtYWxpemUob2JqKToKKyAgIiIiTm9ybWFsaXpl
IG91dHB1dCBvYmplY3QuCisKKyAgQXJnczoKKyAgICAgb2JqOiBHb29nbGUgVGVzdCdzIEpTT04g
b3V0cHV0IG9iamVjdCB0byBub3JtYWxpemUuCisKKyAgUmV0dXJuczoKKyAgICAgTm9ybWFsaXpl
ZCBvdXRwdXQgd2l0aG91dCBhbnkgcmVmZXJlbmNlcyB0byB0cmFuc2llbnQgaW5mb3JtYXRpb24g
dGhhdCBtYXkKKyAgICAgY2hhbmdlIGZyb20gcnVuIHRvIHJ1bi4KKyAgIiIiCisgIGRlZiBfbm9y
bWFsaXplKGtleSwgdmFsdWUpOgorICAgIGlmIGtleSA9PSAndGltZSc6CisgICAgICByZXR1cm4g
cmUuc3ViKHInXlxkKyhcLlxkKyk/cyQnLCAnKicsIHZhbHVlKQorICAgIGVsaWYga2V5ID09ICd0
aW1lc3RhbXAnOgorICAgICAgcmV0dXJuIHJlLnN1YihyJ15cZHs0fS1cZFxkLVxkXGRUXGRcZDpc
ZFxkOlxkXGRaJCcsICcqJywgdmFsdWUpCisgICAgZWxpZiBrZXkgPT0gJ2ZhaWx1cmUnOgorICAg
ICAgdmFsdWUgPSByZS5zdWIocideLipbL1xcXSguKjopXGQrXG4nLCAnXFwxKlxuJywgdmFsdWUp
CisgICAgICByZXR1cm4gcmUuc3ViKHInU3RhY2sgdHJhY2U6XG4oLnxcbikqJywgJ1N0YWNrIHRy
YWNlOlxuKicsIHZhbHVlKQorICAgIGVsc2U6CisgICAgICByZXR1cm4gbm9ybWFsaXplKHZhbHVl
KQorICBpZiBpc2luc3RhbmNlKG9iaiwgZGljdCk6CisgICAgcmV0dXJuIHtrOiBfbm9ybWFsaXpl
KGssIHYpIGZvciBrLCB2IGluIG9iai5pdGVtcygpfQorICBpZiBpc2luc3RhbmNlKG9iaiwgbGlz
dCk6CisgICAgcmV0dXJuIFtub3JtYWxpemUoeCkgZm9yIHggaW4gb2JqXQorICBlbHNlOgorICAg
IHJldHVybiBvYmoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfbGlzdF9vdXRwdXRfdW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiYmE3ZWEyY2ZkMzdj
YWQ1NTA5ZjQwZjhlOGIwMDIyNzA2YmU3ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0LnB5CkBAIC0wLDAg
KzEsMTQxIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDYsIEdv
b2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIi
VW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLgorCitB
IHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBsaXN0IGFsbCB0ZXN0cyBieSBzcGVjaWZ5aW5n
IHRoZQorLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuIElmIG91dHB1dCBpcyByZXF1ZXN0ZWQsIHZp
YSAtLWd0ZXN0X291dHB1dD14bWwKK29yIC0tZ3Rlc3Rfb3V0cHV0PWpzb24sIHRoZSB0ZXN0cyBh
cmUgbGlzdGVkLCB3aXRoIGV4dHJhIGluZm9ybWF0aW9uIGluIHRoZQorb3V0cHV0IGZpbGUuCitU
aGlzIHNjcmlwdCB0ZXN0cyBzdWNoIGZ1bmN0aW9uYWxpdHkgYnkgaW52b2tpbmcgZ3Rlc3RfbGlz
dF9vdXRwdXRfdW5pdHRlc3RfCisgKGEgcHJvZ3JhbSB3cml0dGVuIHdpdGggR29vZ2xlIFRlc3Qp
IHRoZSBjb21tYW5kIGxpbmUgZmxhZ3MuCisiIiIKKworaW1wb3J0IG9zCitpbXBvcnQgcmUKK2lt
cG9ydCBndGVzdF90ZXN0X3V0aWxzCisKK0dURVNUX0xJU1RfVEVTVFNfRkxBRyA9ICctLWd0ZXN0
X2xpc3RfdGVzdHMnCitHVEVTVF9PVVRQVVRfRkxBRyA9ICctLWd0ZXN0X291dHB1dCcKKworRVhQ
RUNURURfWE1MID0gIiIiPFw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ilw/Pgor
PHRlc3RzdWl0ZXMgdGVzdHM9IjIiIG5hbWU9IkFsbFRlc3RzIj4KKyAgPHRlc3RzdWl0ZSBuYW1l
PSJGb29UZXN0IiB0ZXN0cz0iMiI+CisgICAgPHRlc3RjYXNlIG5hbWU9IlRlc3QxIiBmaWxlPSIu
Kmd0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0Xy5jYyIgbGluZT0iNDMiIC8+CisgICAgPHRlc3Rj
YXNlIG5hbWU9IlRlc3QyIiBmaWxlPSIuKmd0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0Xy5jYyIg
bGluZT0iNDUiIC8+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPgorIiIiCisKK0VYUEVD
VEVEX0pTT04gPSAiIiJ7CisgICJ0ZXN0cyI6IDIsCisgICJuYW1lIjogIkFsbFRlc3RzIiwKKyAg
InRlc3RzdWl0ZXMiOiBcWworICAgIHsKKyAgICAgICJuYW1lIjogIkZvb1Rlc3QiLAorICAgICAg
InRlc3RzIjogMiwKKyAgICAgICJ0ZXN0c3VpdGUiOiBcWworICAgICAgICB7CisgICAgICAgICAg
Im5hbWUiOiAiVGVzdDEiLAorICAgICAgICAgICJmaWxlIjogIi4qZ3Rlc3RfbGlzdF9vdXRwdXRf
dW5pdHRlc3RfLmNjIiwKKyAgICAgICAgICAibGluZSI6IDQzCisgICAgICAgIH0sCisgICAgICAg
IHsKKyAgICAgICAgICAibmFtZSI6ICJUZXN0MiIsCisgICAgICAgICAgImZpbGUiOiAiLipndGVz
dF9saXN0X291dHB1dF91bml0dGVzdF8uY2MiLAorICAgICAgICAgICJsaW5lIjogNDUKKyAgICAg
ICAgfQorICAgICAgXF0KKyAgICB9CisgIFxdCit9CisiIiIKKworCitjbGFzcyBHVGVzdExpc3RU
ZXN0c091dHB1dFVuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJVbml0
IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgbGlzdCB0ZXN0cyB3aXRoIG91dHB1dCB0byBmaWxlIGZ1
bmN0aW9uYWxpdHkuCisgICIiIgorCisgIGRlZiB0ZXN0WG1sKHNlbGYpOgorICAgICIiIlZlcmlm
aWVzIFhNTCBvdXRwdXQgZm9yIGxpc3RpbmcgdGVzdHMgaW4gYSBHb29nbGUgVGVzdCBiaW5hcnku
CisKKyAgICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRoYXQgZ2VuZXJhdGVzIGFuIGVtcHR5IFhNTCBv
dXRwdXQsIGFuZAorICAgIHRlc3RzIHRoYXQgdGhlIFhNTCBvdXRwdXQgaXMgZXhwZWN0ZWQuCisg
ICAgIiIiCisgICAgc2VsZi5fVGVzdE91dHB1dCgneG1sJywgRVhQRUNURURfWE1MKQorCisgIGRl
ZiB0ZXN0SlNPTihzZWxmKToKKyAgICAiIiJWZXJpZmllcyBYTUwgb3V0cHV0IGZvciBsaXN0aW5n
IHRlc3RzIGluIGEgR29vZ2xlIFRlc3QgYmluYXJ5LgorCisgICAgUnVucyBhIHRlc3QgcHJvZ3Jh
bSB0aGF0IGdlbmVyYXRlcyBhbiBlbXB0eSBYTUwgb3V0cHV0LCBhbmQKKyAgICB0ZXN0cyB0aGF0
IHRoZSBYTUwgb3V0cHV0IGlzIGV4cGVjdGVkLgorICAgICIiIgorICAgIHNlbGYuX1Rlc3RPdXRw
dXQoJ2pzb24nLCBFWFBFQ1RFRF9KU09OKQorCisgIGRlZiBfR2V0T3V0cHV0KHNlbGYsIG91dF9m
b3JtYXQpOgorICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdl
dFRlbXBEaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3Rfb3V0LicgKyBv
dXRfZm9ybWF0KQorICAgIGd0ZXN0X3Byb2dfcGF0aCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVz
dEV4ZWN1dGFibGVQYXRoKAorICAgICAgICAnZ3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3RfJykK
KworICAgIGNvbW1hbmQgPSAoWworICAgICAgICBndGVzdF9wcm9nX3BhdGgsCisgICAgICAgICcl
cz0lczolcycgJSAoR1RFU1RfT1VUUFVUX0ZMQUcsIG91dF9mb3JtYXQsIGZpbGVfcGF0aCksCisg
ICAgICAgICctLWd0ZXN0X2xpc3RfdGVzdHMnCisgICAgXSkKKyAgICBlbnZpcm9uX2NvcHkgPSBv
cy5lbnZpcm9uLmNvcHkoKQorICAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisg
ICAgICAgIGNvbW1hbmQsIGVudj1lbnZpcm9uX2NvcHksIHdvcmtpbmdfZGlyPWd0ZXN0X3Rlc3Rf
dXRpbHMuR2V0VGVtcERpcigpKQorCisgICAgc2VsZi5hc3NlcnRfKHAuZXhpdGVkKQorICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKDAsIHAuZXhpdF9jb2RlKQorICAgIHdpdGggb3BlbihmaWxlX3BhdGgp
IGFzIGY6CisgICAgICByZXN1bHQgPSBmLnJlYWQoKQorICAgIHJldHVybiByZXN1bHQKKworICBk
ZWYgX1Rlc3RPdXRwdXQoc2VsZiwgdGVzdF9mb3JtYXQsIGV4cGVjdGVkX291dHB1dCk6CisgICAg
YWN0dWFsID0gc2VsZi5fR2V0T3V0cHV0KHRlc3RfZm9ybWF0KQorICAgIGFjdHVhbF9saW5lcyA9
IGFjdHVhbC5zcGxpdGxpbmVzKCkKKyAgICBleHBlY3RlZF9saW5lcyA9IGV4cGVjdGVkX291dHB1
dC5zcGxpdGxpbmVzKCkKKyAgICBsaW5lX2NvdW50ID0gMAorICAgIGZvciBhY3R1YWxfbGluZSBp
biBhY3R1YWxfbGluZXM6CisgICAgICBleHBlY3RlZF9saW5lID0gZXhwZWN0ZWRfbGluZXNbbGlu
ZV9jb3VudF0KKyAgICAgIGV4cGVjdGVkX2xpbmVfcmUgPSByZS5jb21waWxlKGV4cGVjdGVkX2xp
bmUuc3RyaXAoKSkKKyAgICAgIHNlbGYuYXNzZXJ0XygKKyAgICAgICAgICBleHBlY3RlZF9saW5l
X3JlLm1hdGNoKGFjdHVhbF9saW5lLnN0cmlwKCkpLAorICAgICAgICAgICgnYWN0dWFsIG91dHB1
dCBvZiAiJXMiLFxuJworICAgICAgICAgICAnd2hpY2ggZG9lcyBub3QgbWF0Y2ggZXhwZWN0ZWQg
cmVnZXggb2YgIiVzIlxuJworICAgICAgICAgICAnb24gbGluZSAlZCcgJSAoYWN0dWFsLCBleHBl
Y3RlZF9vdXRwdXQsIGxpbmVfY291bnQpKSkKKyAgICAgIGxpbmVfY291bnQgPSBsaW5lX2NvdW50
ICsgMQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIG9zLmVudmlyb25bJ0dURVNU
X1NUQUNLX1RSQUNFX0RFUFRIJ10gPSAnMScKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF9vdXRwdXRf
dW5pdHRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X291
dHB1dF91bml0dGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFjN2I0ZGUzNDYxZmMxNjQ1ZjQxMWI3MWY5
ZTM3ZjgyMjRmZDhhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3RfLmNjCkBAIC0wLDAgKzEsNTEgQEAKKy8v
IENvcHlyaWdodCAyMDE4LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
CisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlz
dHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
Ly8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6
IGRhdmlkLnNjaHVsZGVuZnJlaUBnbWFpbC5jb20gKERhdmlkIFNjaHVsZGVuZnJlaSkKKworLy8g
VW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIC0tZ3Rlc3RfbGlzdF90ZXN0cyBhbmQgLS1ndGVz
dF9vdXRwdXQgZmxhZy4KKy8vCisvLyBBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBsaXN0
IGFsbCB0ZXN0cyB0aGF0IHdpbGwgcnVuLAorLy8gYW5kIGhhdmUgdGhlIG91dHB1dCBzYXZlZCBp
biBhIEpzb24vWG1sIGZpbGUuCisvLyBUaGUgdGVzdHMgd2lsbCBub3QgYmUgcnVuIGFmdGVyIGxp
c3RpbmcuCisvLworLy8gVGhpcyBwcm9ncmFtIHdpbGwgYmUgaW52b2tlZCBmcm9tIGEgUHl0aG9u
IHVuaXQgdGVzdC4KKy8vIERvbid0IHJ1biBpdCBkaXJlY3RseS4KKworI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCisKK1RFU1QoRm9vVGVzdCwgVGVzdDEpIHt9CisKK1RFU1QoRm9vVGVzdCwgVGVz
dDIpIHt9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICA6OnRlc3Rpbmc6
OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICByZXR1cm4gUlVOX0FMTF9URVNUUygp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0
X3Rlc3RzX3VuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9s
aXN0X3Rlc3RzX3VuaXR0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjZThj
M2VmMDVmNjYwMGU4NzIxNGE2ZDQwMTYyOGVkOTIzYTE1MmRhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE3NyArMCww
IEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJ
bmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJVbml0
IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuCi0KLUEgdXNl
ciBjYW4gYXNrIEdvb2dsZSBUZXN0IHRvIGxpc3QgYWxsIHRlc3RzIGJ5IHNwZWNpZnlpbmcgdGhl
Ci0tLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4gIFRoaXMgc2NyaXB0IHRlc3RzIHN1Y2ggZnVuY3Rp
b25hbGl0eQotYnkgaW52b2tpbmcgZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8gKGEgcHJvZ3Jh
bSB3cml0dGVuIHdpdGgKLUdvb2dsZSBUZXN0KSB0aGUgY29tbWFuZCBsaW5lIGZsYWdzLgotIiIi
Ci0KLV9fYXV0aG9yX18gPSAncGhhbm5hQGdvb2dsZS5jb20gKFBhdHJpY2sgSGFubmEpJwotCi1p
bXBvcnQgZ3Rlc3RfdGVzdF91dGlscwotCi0KLSMgQ29uc3RhbnRzLgotCi0jIFRoZSBjb21tYW5k
IGxpbmUgZmxhZyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIGxpc3RpbmcgYWxsIHRlc3RzLgotTElT
VF9URVNUU19GTEFHID0gJ2d0ZXN0X2xpc3RfdGVzdHMnCi0KLSMgUGF0aCB0byB0aGUgZ3Rlc3Rf
bGlzdF90ZXN0c191bml0dGVzdF8gcHJvZ3JhbS4KLUVYRV9QQVRIID0gZ3Rlc3RfdGVzdF91dGls
cy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfJykKLQot
IyBUaGUgZXhwZWN0ZWQgb3V0cHV0IHdoZW4gcnVubmluZyBndGVzdF9saXN0X3Rlc3RzX3VuaXR0
ZXN0XyB3aXRoCi0jIC0tZ3Rlc3RfbGlzdF90ZXN0cwotRVhQRUNURURfT1VUUFVUX05PX0ZJTFRF
UiA9ICIiIkZvb0RlYXRoVGVzdC4KLSAgVGVzdDEKLUZvby4KLSAgQmFyMQotICBCYXIyCi0gIERJ
U0FCTEVEX0JhcjMKLUFiYy4KLSAgWHl6Ci0gIERlZgotRm9vQmFyLgotICBCYXoKLUZvb1Rlc3Qu
Ci0gIFRlc3QxCi0gIERJU0FCTEVEX1Rlc3QyCi0gIFRlc3QzCi0iIiIKLQotIyBUaGUgZXhwZWN0
ZWQgb3V0cHV0IHdoZW4gcnVubmluZyBndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0XyB3aXRoCi0j
IC0tZ3Rlc3RfbGlzdF90ZXN0cyBhbmQgLS1ndGVzdF9maWx0ZXI9Rm9vKi4KLUVYUEVDVEVEX09V
VFBVVF9GSUxURVJfRk9PID0gIiIiRm9vRGVhdGhUZXN0LgotICBUZXN0MQotRm9vLgotICBCYXIx
Ci0gIEJhcjIKLSAgRElTQUJMRURfQmFyMwotRm9vQmFyLgotICBCYXoKLUZvb1Rlc3QuCi0gIFRl
c3QxCi0gIERJU0FCTEVEX1Rlc3QyCi0gIFRlc3QzCi0iIiIKLQotIyBVdGlsaXRpZXMuCi0KLQot
ZGVmIFJ1bihhcmdzKToKLSAgIiIiUnVucyBndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0XyBhbmQg
cmV0dXJucyB0aGUgbGlzdCBvZiB0ZXN0cyBwcmludGVkLiIiIgotCi0gIHJldHVybiBndGVzdF90
ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0VYRV9QQVRIXSArIGFyZ3MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZV9zdGRlcnI9RmFsc2UpLm91dHB1dAotCi0KLSMg
VGhlIHVuaXQgdGVzdC4KLQotY2xhc3MgR1Rlc3RMaXN0VGVzdHNVbml0VGVzdChndGVzdF90ZXN0
X3V0aWxzLlRlc3RDYXNlKToKLSAgIiIiVGVzdHMgdXNpbmcgdGhlIC0tZ3Rlc3RfbGlzdF90ZXN0
cyBmbGFnIHRvIGxpc3QgYWxsIHRlc3RzLiIiIgotCi0gIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwg
ZmxhZ192YWx1ZSwgZXhwZWN0ZWRfb3V0cHV0LCBvdGhlcl9mbGFnKToKLSAgICAiIiJSdW5zIGd0
ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfIGFuZCB2ZXJpZmllcyB0aGF0IGl0IHByaW50cwotICAg
IHRoZSBjb3JyZWN0IHRlc3RzLgotCi0gICAgQXJnczoKLSAgICAgIGZsYWdfdmFsdWU6ICAgICAg
IHZhbHVlIG9mIHRoZSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZzsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgotCi0gICAgICBl
eHBlY3RlZF9vdXRwdXQ6ICB0aGUgZXhwZWN0ZWQgb3V0cHV0IGFmdGVyIHJ1bm5pbmcgY29tbWFu
ZDsKLQotICAgICAgb3RoZXJfZmxhZzogICAgICAgYSBkaWZmZXJlbnQgZmxhZyB0byBiZSBwYXNz
ZWQgdG8gY29tbWFuZAotICAgICAgICAgICAgICAgICAgICAgICAgYWxvbmcgd2l0aCBndGVzdF9s
aXN0X3Rlc3RzOwotICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSBpZiB0aGUgZmxhZyBzaG91
bGQgbm90IGJlIHByZXNlbnQuCi0gICAgIiIiCi0KLSAgICBpZiBmbGFnX3ZhbHVlIGlzIE5vbmU6
Ci0gICAgICBmbGFnID0gJycKLSAgICAgIGZsYWdfZXhwcmVzc2lvbiA9ICdub3Qgc2V0JwotICAg
IGVsaWYgZmxhZ192YWx1ZSA9PSAnMCc6Ci0gICAgICBmbGFnID0gJy0tJXM9MCcgJSBMSVNUX1RF
U1RTX0ZMQUcKLSAgICAgIGZsYWdfZXhwcmVzc2lvbiA9ICcwJwotICAgIGVsc2U6Ci0gICAgICBm
bGFnID0gJy0tJXMnICUgTElTVF9URVNUU19GTEFHCi0gICAgICBmbGFnX2V4cHJlc3Npb24gPSAn
MScKLQotICAgIGFyZ3MgPSBbZmxhZ10KLQotICAgIGlmIG90aGVyX2ZsYWcgaXMgbm90IE5vbmU6
Ci0gICAgICBhcmdzICs9IFtvdGhlcl9mbGFnXQotCi0gICAgb3V0cHV0ID0gUnVuKGFyZ3MpCi0K
LSAgICBtc2cgPSAoJ3doZW4gJXMgaXMgJXMsIHRoZSBvdXRwdXQgb2YgIiVzIiBpcyAiJXMiLicg
JQotICAgICAgICAgICAoTElTVF9URVNUU19GTEFHLCBmbGFnX2V4cHJlc3Npb24sICcgJy5qb2lu
KGFyZ3MpLCBvdXRwdXQpKQotCi0gICAgaWYgZXhwZWN0ZWRfb3V0cHV0IGlzIG5vdCBOb25lOgot
ICAgICAgc2VsZi5hc3NlcnRfKG91dHB1dCA9PSBleHBlY3RlZF9vdXRwdXQsIG1zZykKLSAgICBl
bHNlOgotICAgICAgc2VsZi5hc3NlcnRfKG91dHB1dCAhPSBFWFBFQ1RFRF9PVVRQVVRfTk9fRklM
VEVSLCBtc2cpCi0KLSAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3Ioc2VsZik6Ci0gICAgIiIiVGVz
dHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0IG1vZGUuIiIiCi0KLSAgICBzZWxmLlJ1bkFu
ZFZlcmlmeShmbGFnX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRf
b3V0cHV0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz1Ob25lKQotCi0g
IGRlZiB0ZXN0RmxhZyhzZWxmKToKLSAgICAiIiJUZXN0cyB1c2luZyB0aGUgLS1ndGVzdF9saXN0
X3Rlc3RzIGZsYWcuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPScwJywK
LSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXQ9Tm9uZSwKLSAgICAgICAgICAg
ICAgICAgICAgICBvdGhlcl9mbGFnPU5vbmUpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZmxhZ192
YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0PUVYUEVDVEVE
X09VVFBVVF9OT19GSUxURVIsCi0gICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz1Ob25l
KQotCi0gIGRlZiB0ZXN0T3ZlcnJpZGVOb25GaWx0ZXJGbGFncyhzZWxmKToKLSAgICAiIiJUZXN0
cyB0aGF0IC0tZ3Rlc3RfbGlzdF90ZXN0cyBvdmVycmlkZXMgdGhlIG5vbi1maWx0ZXIgZmxhZ3Mu
IiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAg
ICAgICAgICAgICBleHBlY3RlZF9vdXRwdXQ9RVhQRUNURURfT1VUUFVUX05PX0ZJTFRFUiwKLSAg
ICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPSctLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUn
KQotCi0gIGRlZiB0ZXN0V2l0aEZpbHRlckZsYWdzKHNlbGYpOgotICAgICIiIlRlc3RzIHRoYXQg
LS1ndGVzdF9saXN0X3Rlc3RzIHRha2VzIGludG8gYWNjb3VudCB0aGUKLSAgICAtLWd0ZXN0X2Zp
bHRlciBmbGFnLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZmxhZ192YWx1ZT0nMScsCi0g
ICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0PUVYUEVDVEVEX09VVFBVVF9GSUxU
RVJfRk9PLAotICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2ZsYWc9Jy0tZ3Rlc3RfZmlsdGVy
PUZvbyonKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rlc3RfdXRp
bHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X2xpc3RfdGVzdHNfdW5pdHRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTBlZDA4MjViNWQ4ODk2OTIzMDFjNWE0ZDRmMGViNzViYWJjNWJjOC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfLmNjCisrKyAvZGV2L251bGwKQEAgLTEs
ODUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0Ogot
Ly8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0v
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0v
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ly8KLS8vIEF1dGhvcjogcGhhbm5hQGdvb2dsZS5jb20gKFBhdHJpY2sgSGFubmEpCi0KLS8vIFVu
aXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4KLS8vCi0v
LyBBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBsaXN0IGFsbCB0ZXN0cyB0aGF0IHdpbGwg
cnVuCi0vLyBzbyB0aGF0IHdoZW4gdXNpbmcgYSBmaWx0ZXIsIGEgdXNlciB3aWxsIGtub3cgd2hh
dAotLy8gdGVzdHMgdG8gbG9vayBmb3IuIFRoZSB0ZXN0cyB3aWxsIG5vdCBiZSBydW4gYWZ0ZXIg
bGlzdGluZy4KLS8vCi0vLyBUaGlzIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRo
b24gdW5pdCB0ZXN0LgotLy8gRG9uJ3QgcnVuIGl0IGRpcmVjdGx5LgotCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KLQotbmFtZXNwYWNlIHsKLQotLy8gU2V2ZXJhbCBkaWZmZXJlbnQgdGVzdCBj
YXNlcyBhbmQgdGVzdHMgdGhhdCB3aWxsIGJlIGxpc3RlZC4KLVRFU1QoRm9vLCBCYXIxKSB7Ci19
Ci0KLVRFU1QoRm9vLCBCYXIyKSB7Ci19Ci0KLVRFU1QoRm9vLCBESVNBQkxFRF9CYXIzKSB7Ci19
Ci0KLVRFU1QoQWJjLCBYeXopIHsKLX0KLQotVEVTVChBYmMsIERlZikgewotfQotCi1URVNUKEZv
b0JhciwgQmF6KSB7Ci19Ci0KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
Ci19OwotCi1URVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKLX0KLQotVEVTVF9GKEZvb1Rlc3QsIERJ
U0FCTEVEX1Rlc3QyKSB7Ci19Ci0KLVRFU1RfRihGb29UZXN0LCBUZXN0MykgewotfQotCi1URVNU
KEZvb0RlYXRoVGVzdCwgVGVzdDEpIHsKLX0KLQotfSAgLy8gbmFtZXNwYWNlCi0KLWludCBtYWlu
KGludCBhcmdjLCBjaGFyICoqYXJndikgewotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZh
cmdjLCBhcmd2KTsKLQotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9tYWluX3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9tYWluX3VuaXR0ZXN0LmNjCmluZGV4IDdh
M2YwYWRmYWRmNmQ3ZTVjMTk1YjMxOTQ0NzE0ZDVhYzQxYmI4ZTMuLmVkZGVkZWFiZThmM2JiMDgz
ZGFiY2E2MDBlNzJmNDUxYjhkOTRjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfbWFpbl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X21haW5fdW5pdHRlc3QuY2MKQEAgLTI2LDEwICsyNiw5IEBACiAvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9y
OiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIC8vIFRlc3RzIHRoYXQgd2UgZG9uJ3Qg
aGF2ZSB0byBkZWZpbmUgbWFpbigpIHdoZW4gd2UgbGluayB0bwogLy8gZ3Rlc3RfbWFpbiBpbnN0
ZWFkIG9mIGd0ZXN0LgpAQCAtNDEsNSArNDAsNSBAQCBURVNUKEdUZXN0TWFpblRlc3QsIFNob3Vs
ZFN1Y2NlZWQpIHsKIAogfSAgLy8gbmFtZXNwYWNlCiAKLS8vIFdlIGFyZSB1c2luZyB0aGUgbWFp
bigpIGZ1bmN0aW9uIGRlZmluZWQgaW4gc3JjL2d0ZXN0X21haW4uY2MsIHNvCi0vLyB3ZSBkb24n
dCBkZWZpbmUgaXQgaGVyZS4KKy8vIFdlIGFyZSB1c2luZyB0aGUgbWFpbigpIGZ1bmN0aW9uIGRl
ZmluZWQgaW4gZ3Rlc3RfbWFpbi5jYywgc28gd2UKKy8vIGRvbid0IGRlZmluZSBpdCBoZXJlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9uYy5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbmMuY2MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDczYjVkYjZkNDE4MzA5YTQ3YTIzZGZmMTgwMDUzYjc1ZDMyMDEyNGYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9uYy5jYworKysgL2Rldi9udWxsCkBAIC0xLDIzNCArMCww
IEBACi0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBUaGlzIGZpbGUgaXMg
dGhlIGlucHV0IHRvIGEgbmVnYXRpdmUtY29tcGlsYXRpb24gdGVzdCBmb3IgR29vZ2xlCi0vLyBU
ZXN0LiAgQ29kZSBoZXJlIGlzIE5PVCBzdXBwb3NlZCB0byBjb21waWxlLiAgSXRzIHB1cnBvc2Ug
aXMgdG8KLS8vIHZlcmlmeSB0aGF0IGNlcnRhaW4gaW5jb3JyZWN0IHVzYWdlcyBvZiB0aGUgR29v
Z2xlIFRlc3QgQVBJIGFyZQotLy8gaW5kZWVkIHJlamVjdGVkIGJ5IHRoZSBjb21waWxlci4KLS8v
Ci0vLyBXZSBzdGlsbCBuZWVkIHRvIHdyaXRlIHRoZSBuZWdhdGl2ZS1jb21waWxhdGlvbiB0ZXN0
IGl0c2VsZiwgd2hpY2gKLS8vIHdpbGwgYmUgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIGJ1aWxk
IGVudmlyb25tZW50LgotLy8KLS8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBmaW5pc2ggdGhlIG5l
Z2F0aXZlLWNvbXBpbGF0aW9uIHRlc3QuCi0KLSNpZmRlZiBURVNUX0NBTk5PVF9JR05PUkVfUlVO
X0FMTF9URVNUU19SRVNVTFQKLS8vIFRlc3RzIHRoYXQgdGhlIHJlc3VsdCBvZiBSVU5fQUxMX1RF
U1RTKCkgY2Fubm90IGJlIGlnbm9yZWQuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1p
bnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRl
c3QoJmFyZ2MsIGFyZ3YpOwotICBSVU5fQUxMX1RFU1RTKCk7ICAvLyBUaGlzIGxpbmUgc2hvdWxk
bid0IGNvbXBpbGUuCi19Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9VU0VSX0NBTk5PVF9JTkNMVURF
X0dURVNUX0lOVEVSTkFMX0lOTF9IKQotLy8gVGVzdHMgdGhhdCBhIHVzZXIgY2Fubm90IGluY2x1
ZGUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4gaGlzIGNvZGUuCi0KLSNpbmNsdWRlICJzcmMvZ3Rl
c3QtaW50ZXJuYWwtaW5sLmgiCi0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRDSEVTX0RFQ0xBUklO
R19TRVRVUF9JTl9URVNUX0ZJWFRVUkVfV0lUSF9UWVBPKQotLy8gVGVzdHMgdGhhdCB0aGUgY29t
cGlsZXIgY2F0Y2hlcyB0aGUgdHlwbyB3aGVuIGEgdXNlciBkZWNsYXJlcyBhCi0vLyBTZXR1cCgp
IG1ldGhvZCBpbiBhIHRlc3QgZml4dHVyZS4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0K
LWNsYXNzIE15VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZv
aWQgU2V0dXAoKSB7fQotfTsKLQotI2VsaWYgZGVmaW5lZChURVNUX0NBVENIRVNfQ0FMTElOR19T
RVRVUF9JTl9URVNUX1dJVEhfVFlQTykKLS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNo
ZXMgdGhlIHR5cG8gd2hlbiBhIHVzZXIgY2FsbHMgU2V0dXAoKQotLy8gZnJvbSBhIHRlc3QgZml4
dHVyZS4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLWNsYXNzIE15VGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsK
LSAgICB0ZXN0aW5nOjpUZXN0OjpTZXR1cCgpOyAgLy8gVHJpZXMgdG8gY2FsbCBTZXRVcCgpIGlu
IHRoZSBwYXJlbnQgY2xhc3MuCi0gIH0KLX07Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRDSEVT
X0RFQ0xBUklOR19TRVRVUF9JTl9FTlZJUk9OTUVOVF9XSVRIX1RZUE8pCi0vLyBUZXN0cyB0aGF0
IHRoZSBjb21waWxlciBjYXRjaGVzIHRoZSB0eXBvIHdoZW4gYSB1c2VyIGRlY2xhcmVzIGEKLS8v
IFNldHVwKCkgbWV0aG9kIGluIGEgc3ViY2xhc3Mgb2YgRW52aXJvbm1lbnQuCi0KLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgotCi1jbGFzcyBNeUVudmlyb25tZW50IDogcHVibGljIHRlc3Rpbmc6
OkVudmlyb25tZW50IHsKLSBwdWJsaWM6Ci0gIHZvaWQgU2V0dXAoKSB7fQotfTsKLQotI2VsaWYg
ZGVmaW5lZChURVNUX0NBVENIRVNfQ0FMTElOR19TRVRVUF9JTl9FTlZJUk9OTUVOVF9XSVRIX1RZ
UE8pCi0vLyBUZXN0cyB0aGF0IHRoZSBjb21waWxlciBjYXRjaGVzIHRoZSB0eXBvIHdoZW4gYSB1
c2VyIGNhbGxzIFNldHVwKCkKLS8vIGluIGFuIEVudmlyb25tZW50LgotCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KLQotY2xhc3MgTXlFbnZpcm9ubWVudCA6IHB1YmxpYyB0ZXN0aW5nOjpFbnZp
cm9ubWVudCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgLy8g
VHJpZXMgdG8gY2FsbCBTZXRVcCgpIGluIHRoZSBwYXJlbnQgY2xhc3MuCi0gICAgdGVzdGluZzo6
RW52aXJvbm1lbnQ6OlNldHVwKCk7Ci0gIH0KLX07Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRD
SEVTX1dST05HX0NBU0VfSU5fVFlQRURfVEVTVF9QKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGls
ZXIgY2F0Y2hlcyB1c2luZyB0aGUgd3JvbmcgdGVzdCBjYXNlIG5hbWUgaW4KLS8vIFRZUEVEX1RF
U1RfUC4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotY2xhc3MgQmFyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07
Ci0KLVRZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QpOwotVFlQRURfVEVTVF9QKEJhclRlc3QsIEEp
IHt9ICAvLyBXcm9uZyB0ZXN0IGNhc2UgbmFtZS4KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9Q
KEZvb1Rlc3QsIEEpOwotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3Qs
IHRlc3Rpbmc6OlR5cGVzPGludD4pOwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19XUk9O
R19DQVNFX0lOX1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKQotLy8gVGVzdHMgdGhhdCB0aGUg
Y29tcGlsZXIgY2F0Y2hlcyB1c2luZyB0aGUgd3JvbmcgdGVzdCBjYXNlIG5hbWUgaW4KLS8vIFJF
R0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBCYXJUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7Ci1UWVBF
RF9URVNUX1AoRm9vVGVzdCwgQSkge30KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEJhclRl
c3QsIEEpOyAgLy8gV3JvbmcgdGVzdCBjYXNlIG5hbWUuCi1JTlNUQU5USUFURV9UWVBFRF9URVNU
X0NBU0VfUChNeSwgRm9vVGVzdCwgdGVzdGluZzo6VHlwZXM8aW50Pik7Ci0KLSNlbGlmIGRlZmlu
ZWQoVEVTVF9DQVRDSEVTX1dST05HX0NBU0VfSU5fSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNF
X1ApCi0vLyBUZXN0cyB0aGF0IHRoZSBjb21waWxlciBjYXRjaGVzIHVzaW5nIHRoZSB3cm9uZyB0
ZXN0IGNhc2UgbmFtZSBpbgotLy8gSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AuCi0KLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEZv
b1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLWNsYXNzIEJhclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1UWVBFRF9U
RVNUX0NBU0VfUChGb29UZXN0KTsKLVRZUEVEX1RFU1RfUChGb29UZXN0LCBBKSB7fQotUkVHSVNU
RVJfVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCwgQSk7Ci0KLS8vIFdyb25nIHRlc3QgY2FzZSBu
YW1lLgotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEJhclRlc3QsIHRlc3Rpbmc6
OlR5cGVzPGludD4pOwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19JTlNUQU5USUFURV9U
WVBFRF9URVNFVF9DQVNFX1BfV0lUSF9TQU1FX05BTUVfUFJFRklYKQotLy8gVGVzdHMgdGhhdCB0
aGUgY29tcGlsZXIgY2F0Y2hlcyBpbnN0YW50aWF0aW5nIFRZUEVEX1RFU1RfQ0FTRV9QCi0vLyB0
d2ljZSB3aXRoIHRoZSBzYW1lIG5hbWUgcHJlZml4LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgewotfTsKLQotVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7Ci1UWVBFRF9URVNU
X1AoRm9vVGVzdCwgQSkge30KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsIEEp
OwotCi1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgdGVzdGluZzo6
VHlwZXM8aW50Pik7Ci0KLS8vIFdyb25nIG5hbWUgcHJlZml4OiAiTXkiIGhhcyBiZWVuIHVzZWQu
Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgdGVzdGluZzo6VHlw
ZXM8ZG91YmxlPik7Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9TVEFUSUNfQVNTRVJUX1RZUEVfRVFf
SVNfTk9UX0FfVFlQRSkKLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLS8vIFRlc3RzIHRo
YXQgU3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4gY2Fubm90IGJlIHVzZWQgYXMgYSB0eXBlLgot
dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGludCwgaW50PiBkdW1teTsKLQotI2VsaWYgZGVm
aW5lZChURVNUX1NUQVRJQ19BU1NFUlRfVFlQRV9FUV9XT1JLU19JTl9OQU1FU1BBQ0UpCi0KLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0vLyBUZXN0cyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVF
cTxUMSwgVDI+IHdvcmtzIGluIGEgbmFtZXNwYWNlIHNjb3BlLgotc3RhdGljIGJvb2wgZHVtbXkg
PSB0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8aW50LCBjb25zdCBpbnQ+KCk7Ci0KLSNlbGlm
IGRlZmluZWQoVEVTVF9TVEFUSUNfQVNTRVJUX1RZUEVfRVFfV09SS1NfSU5fQ0xBU1MpCi0KLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEhl
bHBlciB7Ci0gcHVibGljOgotICAvLyBUZXN0cyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwg
VDI+IHdvcmtzIGluIGEgY2xhc3MuCi0gIEhlbHBlcigpIHsgdGVzdGluZzo6U3RhdGljQXNzZXJ0
VHlwZUVxPGludCwgVD4oKTsgfQotCi0gIHZvaWQgRG9Tb21ldGhpbmcoKSB7fQotfTsKLQotdm9p
ZCBUZXN0KCkgewotICBIZWxwZXI8Ym9vbD4gaDsKLSAgaC5Eb1NvbWV0aGluZygpOyAgLy8gVG8g
YXZvaWQgdGhlICJ1bnVzZWQgdmFyaWFibGUiIHdhcm5pbmcuCi19Ci0KLSNlbGlmIGRlZmluZWQo
VEVTVF9TVEFUSUNfQVNTRVJUX1RZUEVfRVFfV09SS1NfSU5fRlVOQ1RJT04pCi0KLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgotCi12b2lkIFRlc3QoKSB7Ci0gIC8vIFRlc3RzIHRoYXQgU3RhdGlj
QXNzZXJ0VHlwZUVxPFQxLCBUMj4gd29ya3MgaW5zaWRlIGEgZnVuY3Rpb24uCi0gIHRlc3Rpbmc6
OlN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCBpbnQsIGludD4oKTsKLX0KLQotI2Vsc2UKLS8vIEEg
c2FuaXR5IHRlc3QuICBUaGlzIHNob3VsZCBjb21waWxlLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KLQotaW50IG1haW4oKSB7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19Ci0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9uY190
ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9uY190ZXN0LnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwNmZmYjNmODAzOGYwYTU3OTZlNGI2ZDYyOWQw
MmU4MDU2NWEyNDM4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbmNfdGVzdC5weQorKysgL2Rl
di9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29w
eXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotCi0iIiJOZWdhdGl2ZSBjb21waWxhdGlvbiB0ZXN0IGZvciBHb29nbGUgVGVz
dC4iIiIKLQotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQot
aW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1JU19MSU5VWCA9IG9z
Lm5hbWUgPT0gJ3Bvc2l4JyBhbmQgb3MudW5hbWUoKVswXSA9PSAnTGludXgnCi1pZiBub3QgSVNf
TElOVVg6Ci0gIHN5cy5leGl0KDApICAjIE5lZ2F0aXZlIGNvbXBpbGF0aW9uIHRlc3RzIGFyZSBu
b3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MgJiBNYWMuCi0KLQotY2xhc3MgR1Rlc3ROQ1Rlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgotICAiIiJOZWdhdGl2ZSBjb21waWxhdGlvbiB0ZXN0IGZvciBHb29n
bGUgVGVzdC4iIiIKLQotICBkZWYgdGVzdENvbXBpbGVyRXJyb3Ioc2VsZik6Ci0gICAgIiIiVmVy
aWZpZXMgdGhhdCBlcnJvbmVvdXMgY29kZSBsZWFkcyB0byBleHBlY3RlZCBjb21waWxlcgotICAg
IG1lc3NhZ2VzLiIiIgotCi0gICAgIyBEZWZpbmVzIGEgbGlzdCBvZiB0ZXN0IHNwZWNzLCB3aGVy
ZSBlYWNoIGVsZW1lbnQgaXMgYSB0dXBsZQotICAgICMgKHRlc3QgbmFtZSwgbGlzdCBvZiByZWdl
eGVzIGZvciBtYXRjaGluZyB0aGUgY29tcGlsZXIgZXJyb3JzKS4KLSAgICB0ZXN0X3NwZWNzID0g
WwotICAgICAgKCdDQU5OT1RfSUdOT1JFX1JVTl9BTExfVEVTVFNfUkVTVUxUJywKLSAgICAgICBb
cidpZ25vcmluZyByZXR1cm4gdmFsdWUnXSksCi0KLSAgICAgICgnVVNFUl9DQU5OT1RfSU5DTFVE
RV9HVEVTVF9JTlRFUk5BTF9JTkxfSCcsCi0gICAgICAgW3InbXVzdCBub3QgYmUgaW5jbHVkZWQg
ZXhjZXB0IGJ5IEdvb2dsZSBUZXN0IGl0c2VsZiddKSwKLQotICAgICAgKCdDQVRDSEVTX0RFQ0xB
UklOR19TRVRVUF9JTl9URVNUX0ZJWFRVUkVfV0lUSF9UWVBPJywKLSAgICAgICBbcidTZXR1cF9z
aG91bGRfYmVfc3BlbGxlZF9TZXRVcCddKSwKLQotICAgICAgKCdDQVRDSEVTX0NBTExJTkdfU0VU
VVBfSU5fVEVTVF9XSVRIX1RZUE8nLAotICAgICAgIFtyJ1NldHVwX3Nob3VsZF9iZV9zcGVsbGVk
X1NldFVwJ10pLAotCi0gICAgICAoJ0NBVENIRVNfREVDTEFSSU5HX1NFVFVQX0lOX0VOVklST05N
RU5UX1dJVEhfVFlQTycsCi0gICAgICAgW3InU2V0dXBfc2hvdWxkX2JlX3NwZWxsZWRfU2V0VXAn
XSksCi0KLSAgICAgICgnQ0FUQ0hFU19DQUxMSU5HX1NFVFVQX0lOX0VOVklST05NRU5UX1dJVEhf
VFlQTycsCi0gICAgICAgW3InU2V0dXBfc2hvdWxkX2JlX3NwZWxsZWRfU2V0VXAnXSksCi0KLSAg
ICAgICgnQ0FUQ0hFU19XUk9OR19DQVNFX0lOX1RZUEVEX1RFU1RfUCcsCi0gICAgICAgW3InQmFy
VGVzdC4qd2FzIG5vdCBkZWNsYXJlZCddKSwKLQotICAgICAgKCdDQVRDSEVTX1dST05HX0NBU0Vf
SU5fUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AnLAotICAgICAgIFtyJ0JhclRlc3QuKndhcyBu
b3QgZGVjbGFyZWQnXSksCi0KLSAgICAgICgnQ0FUQ0hFU19XUk9OR19DQVNFX0lOX0lOU1RBTlRJ
QVRFX1RZUEVEX1RFU1RfQ0FTRV9QJywKLSAgICAgICBbcidCYXJUZXN0Lipub3QgZGVjbGFyZWQn
XSksCi0KLSAgICAgICgnQ0FUQ0hFU19JTlNUQU5USUFURV9UWVBFRF9URVNFVF9DQVNFX1BfV0lU
SF9TQU1FX05BTUVfUFJFRklYJywKLSAgICAgICBbcidyZWRlZmluaXRpb24gb2YuKk15LipGb29U
ZXN0J10pLAotCi0gICAgICAoJ1NUQVRJQ19BU1NFUlRfVFlQRV9FUV9JU19OT1RfQV9UWVBFJywK
LSAgICAgICBbcidTdGF0aWNBc3NlcnRUeXBlRXEuKiBkb2VzIG5vdCBuYW1lIGEgdHlwZSddKSwK
LQotICAgICAgKCdTVEFUSUNfQVNTRVJUX1RZUEVfRVFfV09SS1NfSU5fTkFNRVNQQUNFJywKLSAg
ICAgICBbcidTdGF0aWNBc3NlcnRUeXBlRXEuKmludC4qY29uc3QgaW50J10pLAotCi0gICAgICAo
J1NUQVRJQ19BU1NFUlRfVFlQRV9FUV9XT1JLU19JTl9DTEFTUycsCi0gICAgICAgW3InU3RhdGlj
QXNzZXJ0VHlwZUVxLippbnQuKmJvb2wnXSksCi0KLSAgICAgICgnU1RBVElDX0FTU0VSVF9UWVBF
X0VRX1dPUktTX0lOX0ZVTkNUSU9OJywKLSAgICAgICBbcidTdGF0aWNBc3NlcnRUeXBlRXEuKmNv
bnN0IGludC4qaW50J10pLAotCi0gICAgICAoJ1NBTklUWScsCi0gICAgICAgTm9uZSkKLSAgICAg
IF0KLQotICAgICMgVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHZlcmlmeSB0aGF0IHRoZSB0ZXN0IHNw
ZWNzIGFyZSBzYXRpc2ZpZWQuCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgdW5p
dHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X25vX3Rlc3RfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X25vX3Rlc3RfdW5pdHRlc3QuY2MKaW5kZXggYWZlMmRjMGM5MmZlNDNhZTkzNWIyMmNlZjMx
NzdlNTE4NGI3ZmZhMS4uZDRmODhkYmZkZmE2OGU2YTBjNDBiYjk5ZmFjNmU0ZGJjY2ZmOGYzYiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9ub190ZXN0X3Vu
aXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfbm9fdGVz
dF91bml0dGVzdC5jYwpAQCAtMjksMjYgKzI5LDI2IEBACiAKIC8vIFRlc3RzIHRoYXQgYSBHb29n
bGUgVGVzdCBwcm9ncmFtIHRoYXQgaGFzIG5vIHRlc3QgZGVmaW5lZCBjYW4gcnVuCiAvLyBzdWNj
ZXNzZnVsbHkuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQot
Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KIAorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAK
IGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewogICB0ZXN0aW5nOjpJbml0R29vZ2xl
VGVzdCgmYXJnYywgYXJndik7CiAKICAgLy8gQW4gYWQtaG9jIGFzc2VydGlvbiBvdXRzaWRlIG9m
IGFsbCB0ZXN0cy4KICAgLy8KLSAgLy8gVGhpcyBzZXJ2ZXMgdHdvIHB1cnBvc2VzOgorICAvLyBU
aGlzIHNlcnZlcyB0aHJlZSBwdXJwb3NlczoKICAgLy8KICAgLy8gMS4gSXQgdmVyaWZpZXMgdGhh
dCBhbiBhZC1ob2MgYXNzZXJ0aW9uIGNhbiBiZSBleGVjdXRlZCBldmVuIGlmCiAgIC8vICAgIG5v
IHRlc3QgaXMgZGVmaW5lZC4KLSAgLy8gMi4gV2UgaGFkIGEgYnVnIHdoZXJlIHRoZSBYTUwgb3V0
cHV0IHdvbid0IGJlIGdlbmVyYXRlZCBpZiBhbgorICAvLyAyLiBJdCB2ZXJpZmllcyB0aGF0IGEg
ZmFpbGVkIGFkLWhvYyBhc3NlcnRpb24gY2F1c2VzIHRoZSB0ZXN0CisgIC8vICAgIHByb2dyYW0g
dG8gZmFpbC4KKyAgLy8gMy4gV2UgaGFkIGEgYnVnIHdoZXJlIHRoZSBYTUwgb3V0cHV0IHdvbid0
IGJlIGdlbmVyYXRlZCBpZiBhbgogICAvLyAgICBhc3NlcnRpb24gaXMgZXhlY3V0ZWQgYmVmb3Jl
IFJVTl9BTExfVEVTVFMoKSBpcyBjYWxsZWQsIGV2ZW4KICAgLy8gICAgdGhvdWdoIC0tZ3Rlc3Rf
b3V0cHV0PXhtbCBpcyBzcGVjaWZpZWQuICBUaGlzIG1ha2VzIHN1cmUgdGhlCiAgIC8vICAgIGJ1
ZyBpcyBmaXhlZCBhbmQgZG9lc24ndCByZWdyZXNzLgotICBFWFBFQ1RfRVEoMSwgMSk7CisgIEVY
UEVDVF9FUSgxLCAyKTsKIAotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworICAvLyBUaGUgYWJv
dmUgRVhQRUNUX0VRKCkgc2hvdWxkIGNhdXNlIFJVTl9BTExfVEVTVFMoKSB0byByZXR1cm4gbm9u
LXplcm8uCisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCkgPyAwIDogMTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0LnB5CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCAxOTIwMzBhMjAyMGJmZDQxZTk0YzRlNDkxNGNhYmEzOGRiNzRm
MmZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkKKysrIC9kZXYvbnVs
bApAQCAtMSwzMjcgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdo
dCAyMDA4LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotIiIiVGVzdHMgdGhlIHRleHQgb3V0cHV0IG9mIEdvb2dsZSBDKysgVGVzdGluZyBG
cmFtZXdvcmsuCi0KLVNZTk9QU0lTCi0gICAgICAgZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkgLS1ndGVz
dF9idWlsZF9kaXI9QlVJTEQvRElSIC0tZ2VuZ29sZGVuCi0gICAgICAgICAjIHdoZXJlIEJVSUxE
L0RJUiBjb250YWlucyB0aGUgYnVpbHQgZ3Rlc3Rfb3V0cHV0X3Rlc3RfIGZpbGUuCi0gICAgICAg
Z3Rlc3Rfb3V0cHV0X3Rlc3QucHkgLS1nZW5nb2xkZW4KLSAgICAgICBndGVzdF9vdXRwdXRfdGVz
dC5weQotIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikn
Ci0KLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc3lzCi1pbXBvcnQgZ3Rlc3RfdGVzdF91
dGlscwotCi0KLSMgVGhlIGZsYWcgZm9yIGdlbmVyYXRpbmcgdGhlIGdvbGRlbiBmaWxlCi1HRU5H
T0xERU5fRkxBRyA9ICctLWdlbmdvbGRlbicKLUNBVENIX0VYQ0VQVElPTlNfRU5WX1ZBUl9OQU1F
ID0gJ0dURVNUX0NBVENIX0VYQ0VQVElPTlMnCi0KLUlTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdu
dCcKLQotaWYgSVNfV0lORE9XUzoKLSAgR09MREVOX05BTUUgPSAnZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
Z29sZGVuX3dpbi50eHQnCi1lbHNlOgotICBHT0xERU5fTkFNRSA9ICdndGVzdF9vdXRwdXRfdGVz
dF9nb2xkZW5fbGluLnR4dCcKLQotUFJPR1JBTV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRU
ZXN0RXhlY3V0YWJsZVBhdGgoJ2d0ZXN0X291dHB1dF90ZXN0XycpCi0KLSMgQXQgbGVhc3Qgb25l
IGNvbW1hbmQgd2UgZXhlcmNpc2UgbXVzdCBub3QgaGF2ZSB0aGUKLSMgLS1ndGVzdF9pbnRlcm5h
bF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMgZmxhZy4KLUNPTU1BTkRfTElTVF9U
RVNUUyA9ICh7fSwgW1BST0dSQU1fUEFUSCwgJy0tZ3Rlc3RfbGlzdF90ZXN0cyddKQotQ09NTUFO
RF9XSVRIX0NPTE9SID0gKHt9LCBbUFJPR1JBTV9QQVRILCAnLS1ndGVzdF9jb2xvcj15ZXMnXSkK
LUNPTU1BTkRfV0lUSF9USU1FID0gKHt9LCBbUFJPR1JBTV9QQVRILAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAnLS1ndGVzdF9wcmludF90aW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgJy0tZ3Rlc3RfaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZ3Rlc3RfZmlsdGVyPUZhdGFsRmFpbHVyZVRl
c3QuKjpMb2dnaW5nVGVzdC4qJ10pCi1DT01NQU5EX1dJVEhfRElTQUJMRUQgPSAoCi0gICAge30s
IFtQUk9HUkFNX1BBVEgsCi0gICAgICAgICAnLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0
cycsCi0gICAgICAgICAnLS1ndGVzdF9pbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9o
b2NfdGVzdHMnLAotICAgICAgICAgJy0tZ3Rlc3RfZmlsdGVyPSpESVNBQkxFRF8qJ10pCi1DT01N
QU5EX1dJVEhfU0hBUkRJTkcgPSAoCi0gICAgeydHVEVTVF9TSEFSRF9JTkRFWCc6ICcxJywgJ0dU
RVNUX1RPVEFMX1NIQVJEUyc6ICcyJ30sCi0gICAgW1BST0dSQU1fUEFUSCwKLSAgICAgJy0tZ3Rl
c3RfaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzJywKLSAgICAgJy0t
Z3Rlc3RfZmlsdGVyPVBhc3NpbmdUZXN0LionXSkKLQotR09MREVOX1BBVEggPSBvcy5wYXRoLmpv
aW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRTb3VyY2VEaXIoKSwgR09MREVOX05BTUUpCi0KLQotZGVm
IFRvVW5peExpbmVFbmRpbmcocyk6Ci0gICIiIkNoYW5nZXMgYWxsIFdpbmRvd3MvTWFjIGxpbmUg
ZW5kaW5ncyBpbiBzIHRvIFVOSVggbGluZSBlbmRpbmdzLiIiIgotCi0gIHJldHVybiBzLnJlcGxh
Y2UoJ1xyXG4nLCAnXG4nKS5yZXBsYWNlKCdccicsICdcbicpCi0KLQotZGVmIFJlbW92ZUxvY2F0
aW9ucyh0ZXN0X291dHB1dCk6Ci0gICIiIlJlbW92ZXMgYWxsIGZpbGUgbG9jYXRpb24gaW5mbyBm
cm9tIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4KLQotICBBcmdzOgotICAgICAgIHRl
c3Rfb3V0cHV0OiAgdGhlIG91dHB1dCBvZiBhIEdvb2dsZSBUZXN0IHByb2dyYW0uCi0KLSAgUmV0
dXJuczoKLSAgICAgICBvdXRwdXQgd2l0aCBhbGwgZmlsZSBsb2NhdGlvbiBpbmZvIChpbiB0aGUg
Zm9ybSBvZgotICAgICAgICdESVJFQ1RPUlkvRklMRV9OQU1FOkxJTkVfTlVNQkVSOiAnb3IKLSAg
ICAgICAnRElSRUNUT1JZXFxGSUxFX05BTUUoTElORV9OVU1CRVIpOiAnKSByZXBsYWNlZCBieQot
ICAgICAgICdGSUxFX05BTUU6IzogJy4KLSAgIiIiCi0KLSAgcmV0dXJuIHJlLnN1YihyJy4qWy9c
XF0oLispKFw6XGQrfFwoXGQrXCkpXDogJywgcidcMTojOiAnLCB0ZXN0X291dHB1dCkKLQotCi1k
ZWYgUmVtb3ZlU3RhY2tUcmFjZURldGFpbHMob3V0cHV0KToKLSAgIiIiUmVtb3ZlcyBhbGwgc3Rh
Y2sgdHJhY2VzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgotCi0gICMg
Kj8gbWVhbnMgImZpbmQgdGhlIHNob3J0ZXN0IHN0cmluZyB0aGF0IG1hdGNoZXMiLgotICByZXR1
cm4gcmUuc3ViKHInU3RhY2sgdHJhY2U6KC58XG4pKj9cblxuJywKLSAgICAgICAgICAgICAgICAn
U3RhY2sgdHJhY2U6IChvbWl0dGVkKVxuXG4nLCBvdXRwdXQpCi0KLQotZGVmIFJlbW92ZVN0YWNr
VHJhY2VzKG91dHB1dCk6Ci0gICIiIlJlbW92ZXMgYWxsIHRyYWNlcyBvZiBzdGFjayB0cmFjZXMg
ZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCi0KLSAgIyAqPyBtZWFucyAi
ZmluZCB0aGUgc2hvcnRlc3Qgc3RyaW5nIHRoYXQgbWF0Y2hlcyIuCi0gIHJldHVybiByZS5zdWIo
cidTdGFjayB0cmFjZTooLnxcbikqP1xuXG4nLCAnJywgb3V0cHV0KQotCi0KLWRlZiBSZW1vdmVU
aW1lKG91dHB1dCk6Ci0gICIiIlJlbW92ZXMgYWxsIHRpbWUgaW5mb3JtYXRpb24gZnJvbSBhIEdv
b2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCi0KLSAgcmV0dXJuIHJlLnN1YihyJ1woXGQr
IG1zJywgJyg/IG1zJywgb3V0cHV0KQotCi0KLWRlZiBSZW1vdmVUeXBlSW5mb0RldGFpbHModGVz
dF9vdXRwdXQpOgotICAiIiJSZW1vdmVzIGNvbXBpbGVyLXNwZWNpZmljIHR5cGUgaW5mbyBmcm9t
IEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuCi0KLSAgQXJnczoKLSAgICAgICB0ZXN0X291
dHB1dDogIHRoZSBvdXRwdXQgb2YgYSBHb29nbGUgVGVzdCBwcm9ncmFtLgotCi0gIFJldHVybnM6
Ci0gICAgICAgb3V0cHV0IHdpdGggdHlwZSBpbmZvcm1hdGlvbiBub3JtYWxpemVkIHRvIGNhbm9u
aWNhbCBmb3JtLgotICAiIiIKLQotICAjIHNvbWUgY29tcGlsZXJzIG91dHB1dCB0aGUgbmFtZSBv
ZiB0eXBlICd1bnNpZ25lZCBpbnQnIGFzICd1bnNpZ25lZCcKLSAgcmV0dXJuIHJlLnN1YihyJ3Vu
c2lnbmVkIGludCcsICd1bnNpZ25lZCcsIHRlc3Rfb3V0cHV0KQotCi0KLWRlZiBSZW1vdmVUZXN0
Q291bnRzKG91dHB1dCk6Ci0gICIiIlJlbW92ZXMgdGVzdCBjb3VudHMgZnJvbSBhIEdvb2dsZSBU
ZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCi0KLSAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIHRlc3Rz
PywgbGlzdGVkIGJlbG93JywKLSAgICAgICAgICAgICAgICAgICc/IHRlc3RzLCBsaXN0ZWQgYmVs
b3cnLCBvdXRwdXQpCi0gIG91dHB1dCA9IHJlLnN1YihyJ1xkKyBGQUlMRUQgVEVTVFMnLAotICAg
ICAgICAgICAgICAgICAgJz8gRkFJTEVEIFRFU1RTJywgb3V0cHV0KQotICBvdXRwdXQgPSByZS5z
dWIocidcZCsgdGVzdHM/IGZyb20gXGQrIHRlc3QgY2FzZXM/JywKLSAgICAgICAgICAgICAgICAg
ICc/IHRlc3RzIGZyb20gPyB0ZXN0IGNhc2VzJywgb3V0cHV0KQotICBvdXRwdXQgPSByZS5zdWIo
cidcZCsgdGVzdHM/IGZyb20gKFthLXpBLVpfXSknLAotICAgICAgICAgICAgICAgICAgcic/IHRl
c3RzIGZyb20gXDEnLCBvdXRwdXQpCi0gIHJldHVybiByZS5zdWIocidcZCsgdGVzdHM/XC4nLCAn
PyB0ZXN0cy4nLCBvdXRwdXQpCi0KLQotZGVmIFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRw
dXQsIHBhdHRlcm4pOgotICAiIiJSZW1vdmVzIG91dHB1dCBvZiBzcGVjaWZpZWQgdGVzdHMgZnJv
bSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuCi0KLSAgVGhpcyBmdW5jdGlvbiBzdHJp
cHMgbm90IG9ubHkgdGhlIGJlZ2lubmluZyBhbmQgdGhlIGVuZCBvZiBhIHRlc3QgYnV0IGFsc28K
LSAgYWxsIG91dHB1dCBpbiBiZXR3ZWVuLgotCi0gIEFyZ3M6Ci0gICAgdGVzdF9vdXRwdXQ6ICAg
ICAgIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHRlc3Qgb3V0cHV0LgotICAgIHBhdHRlcm46ICAg
ICAgICAgICBBIHJlZ2V4IHN0cmluZyB0aGF0IG1hdGNoZXMgbmFtZXMgb2YgdGVzdCBjYXNlcyBv
cgotICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cyB0byByZW1vdmUuCi0KLSAgUmV0dXJuczoK
LSAgICBDb250ZW50cyBvZiB0ZXN0X291dHB1dCB3aXRoIHRlc3RzIHdob3NlIG5hbWVzIG1hdGNo
IHBhdHRlcm4gcmVtb3ZlZC4KLSAgIiIiCi0KLSAgdGVzdF9vdXRwdXQgPSByZS5zdWIoCi0gICAg
ICByJy4qXFsgUlVOICAgICAgXF0gLiolcygufFxuKSo/XFsoICBGQUlMRUQgIHwgICAgICAgT0sg
KVxdIC4qJXMuKlxuJyAlICgKLSAgICAgICAgICBwYXR0ZXJuLCBwYXR0ZXJuKSwKLSAgICAgICcn
LAotICAgICAgdGVzdF9vdXRwdXQpCi0gIHJldHVybiByZS5zdWIocicuKiVzLipcbicgJSBwYXR0
ZXJuLCAnJywgdGVzdF9vdXRwdXQpCi0KLQotZGVmIE5vcm1hbGl6ZU91dHB1dChvdXRwdXQpOgot
ICAiIiJOb3JtYWxpemVzIG91dHB1dCAodGhlIG91dHB1dCBvZiBndGVzdF9vdXRwdXRfdGVzdF8u
ZXhlKS4iIiIKLQotICBvdXRwdXQgPSBUb1VuaXhMaW5lRW5kaW5nKG91dHB1dCkKLSAgb3V0cHV0
ID0gUmVtb3ZlTG9jYXRpb25zKG91dHB1dCkKLSAgb3V0cHV0ID0gUmVtb3ZlU3RhY2tUcmFjZURl
dGFpbHMob3V0cHV0KQotICBvdXRwdXQgPSBSZW1vdmVUaW1lKG91dHB1dCkKLSAgcmV0dXJuIG91
dHB1dAotCi0KLWRlZiBHZXRTaGVsbENvbW1hbmRPdXRwdXQoZW52X2NtZCk6Ci0gICIiIlJ1bnMg
YSBjb21tYW5kIGluIGEgc3ViLXByb2Nlc3MsIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQgaW4gYSBz
dHJpbmcuCi0KLSAgQXJnczoKLSAgICBlbnZfY21kOiBUaGUgc2hlbGwgY29tbWFuZC4gQSAyLXR1
cGxlIHdoZXJlIGVsZW1lbnQgMCBpcyBhIGRpY3Qgb2YgZXh0cmEKLSAgICAgICAgICAgICBlbnZp
cm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0LCBhbmQgZWxlbWVudCAxIGlzIGEgc3RyaW5nIHdpdGgK
LSAgICAgICAgICAgICB0aGUgY29tbWFuZCBhbmQgYW55IGZsYWdzLgotCi0gIFJldHVybnM6Ci0g
ICAgQSBzdHJpbmcgd2l0aCB0aGUgY29tbWFuZCdzIGNvbWJpbmVkIHN0YW5kYXJkIGFuZCBkaWFn
bm9zdGljIG91dHB1dC4KLSAgIiIiCi0KLSAgIyBTcGF3bnMgY21kIGluIGEgc3ViLXByb2Nlc3Ms
IGFuZCBnZXRzIGl0cyBzdGFuZGFyZCBJL08gZmlsZSBvYmplY3RzLgotICAjIFNldCBhbmQgc2F2
ZSB0aGUgZW52aXJvbm1lbnQgcHJvcGVybHkuCi0gIGVudmlyb24gPSBvcy5lbnZpcm9uLmNvcHko
KQotICBlbnZpcm9uLnVwZGF0ZShlbnZfY21kWzBdKQotICBwID0gZ3Rlc3RfdGVzdF91dGlscy5T
dWJwcm9jZXNzKGVudl9jbWRbMV0sIGVudj1lbnZpcm9uKQotCi0gIHJldHVybiBwLm91dHB1dAot
Ci0KLWRlZiBHZXRDb21tYW5kT3V0cHV0KGVudl9jbWQpOgotICAiIiJSdW5zIGEgY29tbWFuZCBh
bmQgcmV0dXJucyBpdHMgb3V0cHV0IHdpdGggYWxsIGZpbGUgbG9jYXRpb24KLSAgaW5mbyBzdHJp
cHBlZCBvZmYuCi0KLSAgQXJnczoKLSAgICBlbnZfY21kOiAgVGhlIHNoZWxsIGNvbW1hbmQuIEEg
Mi10dXBsZSB3aGVyZSBlbGVtZW50IDAgaXMgYSBkaWN0IG9mIGV4dHJhCi0gICAgICAgICAgICAg
IGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQsIGFuZCBlbGVtZW50IDEgaXMgYSBzdHJpbmcg
d2l0aAotICAgICAgICAgICAgICB0aGUgY29tbWFuZCBhbmQgYW55IGZsYWdzLgotICAiIiIKLQot
ICAjIERpc2FibGVzIGV4Y2VwdGlvbiBwb3AtdXBzIG9uIFdpbmRvd3MuCi0gIGVudmlyb24sIGNt
ZGxpbmUgPSBlbnZfY21kCi0gIGVudmlyb24gPSBkaWN0KGVudmlyb24pICAjIEVuc3VyZXMgd2Ug
YXJlIG1vZGlmeWluZyBhIGNvcHkuCi0gIGVudmlyb25bQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFS
X05BTUVdID0gJzEnCi0gIHJldHVybiBOb3JtYWxpemVPdXRwdXQoR2V0U2hlbGxDb21tYW5kT3V0
cHV0KChlbnZpcm9uLCBjbWRsaW5lKSkpCi0KLQotZGVmIEdldE91dHB1dE9mQWxsQ29tbWFuZHMo
KToKLSAgIiIiUmV0dXJucyBjb25jYXRlbmF0ZWQgb3V0cHV0IGZyb20gc2V2ZXJhbCByZXByZXNl
bnRhdGl2ZSBjb21tYW5kcy4iIiIKLQotICByZXR1cm4gKEdldENvbW1hbmRPdXRwdXQoQ09NTUFO
RF9XSVRIX0NPTE9SKSArCi0gICAgICAgICAgR2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJVEhf
VElNRSkgKwotICAgICAgICAgIEdldENvbW1hbmRPdXRwdXQoQ09NTUFORF9XSVRIX0RJU0FCTEVE
KSArCi0gICAgICAgICAgR2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJVEhfU0hBUkRJTkcpKQot
Ci0KLXRlc3RfbGlzdCA9IEdldFNoZWxsQ29tbWFuZE91dHB1dChDT01NQU5EX0xJU1RfVEVTVFMp
Ci1TVVBQT1JUU19ERUFUSF9URVNUUyA9ICdEZWF0aFRlc3QnIGluIHRlc3RfbGlzdAotU1VQUE9S
VFNfVFlQRURfVEVTVFMgPSAnVHlwZWRUZXN0JyBpbiB0ZXN0X2xpc3QKLVNVUFBPUlRTX1RIUkVB
RFMgPSAnRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCcgaW4gdGVzdF9saXN0Ci1TVVBQT1JU
U19TVEFDS19UUkFDRVMgPSBGYWxzZQotCi1DQU5fR0VORVJBVEVfR09MREVOX0ZJTEUgPSAoU1VQ
UE9SVFNfREVBVEhfVEVTVFMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VQUE9S
VFNfVFlQRURfVEVTVFMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VQUE9SVFNf
VEhSRUFEUykKLQotCi1jbGFzcyBHVGVzdE91dHB1dFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0
Q2FzZSk6Ci0gIGRlZiBSZW1vdmVVbnN1cHBvcnRlZFRlc3RzKHNlbGYsIHRlc3Rfb3V0cHV0KToK
LSAgICBpZiBub3QgU1VQUE9SVFNfREVBVEhfVEVTVFM6Ci0gICAgICB0ZXN0X291dHB1dCA9IFJl
bW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdEZWF0aFRlc3QnKQotICAgIGlmIG5vdCBT
VVBQT1JUU19UWVBFRF9URVNUUzoKLSAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdU
ZXN0cyh0ZXN0X291dHB1dCwgJ1R5cGVkVGVzdCcpCi0gICAgICB0ZXN0X291dHB1dCA9IFJlbW92
ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdUeXBlZERlYXRoVGVzdCcpCi0gICAgICB0ZXN0
X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdUeXBlUGFyYW1EZWF0
aFRlc3QnKQotICAgIGlmIG5vdCBTVVBQT1JUU19USFJFQURTOgotICAgICAgdGVzdF9vdXRwdXQg
PSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0JykKLSAgICAg
IHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0
UmVwb3J0ZXJUZXN0JykKLSAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0
ZXN0X291dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnV29y
a3NDb25jdXJyZW50bHknKQotICAgIGlmIG5vdCBTVVBQT1JUU19TVEFDS19UUkFDRVM6Ci0gICAg
ICB0ZXN0X291dHB1dCA9IFJlbW92ZVN0YWNrVHJhY2VzKHRlc3Rfb3V0cHV0KQotCi0gICAgcmV0
dXJuIHRlc3Rfb3V0cHV0Ci0KLSAgZGVmIHRlc3RPdXRwdXQoc2VsZik6Ci0gICAgb3V0cHV0ID0g
R2V0T3V0cHV0T2ZBbGxDb21tYW5kcygpCi0KLSAgICBnb2xkZW5fZmlsZSA9IG9wZW4oR09MREVO
X1BBVEgsICdyYicpCi0gICAgIyBBIG1pcy1jb25maWd1cmVkIHNvdXJjZSBjb250cm9sIHN5c3Rl
bSBjYW4gY2F1c2UgXHIgYXBwZWFyIGluIEVPTAotICAgICMgc2VxdWVuY2VzIHdoZW4gd2UgcmVh
ZCB0aGUgZ29sZGVuIGZpbGUgaXJyZXNwZWN0aXZlIG9mIGFuIG9wZXJhdGluZwotICAgICMgc3lz
dGVtIHVzZWQuIFRoZXJlZm9yZSwgd2UgbmVlZCB0byBzdHJpcCB0aG9zZSBccidzIGZyb20gbmV3
bGluZXMKLSAgICAjIHVuY29uZGl0aW9uYWxseS4KLSAgICBnb2xkZW4gPSBUb1VuaXhMaW5lRW5k
aW5nKGdvbGRlbl9maWxlLnJlYWQoKSkKLSAgICBnb2xkZW5fZmlsZS5jbG9zZSgpCi0KLSAgICAj
IFdlIHdhbnQgdGhlIHRlc3QgdG8gcGFzcyByZWdhcmRsZXNzIG9mIGNlcnRhaW4gZmVhdHVyZXMg
YmVpbmcKLSAgICAjIHN1cHBvcnRlZCBvciBub3QuCi0KLSAgICAjIFdlIHN0aWxsIGhhdmUgdG8g
cmVtb3ZlIHR5cGUgbmFtZSBzcGVjaWZpY3MgaW4gYWxsIGNhc2VzLgotICAgIG5vcm1hbGl6ZWRf
YWN0dWFsID0gUmVtb3ZlVHlwZUluZm9EZXRhaWxzKG91dHB1dCkKLSAgICBub3JtYWxpemVkX2dv
bGRlbiA9IFJlbW92ZVR5cGVJbmZvRGV0YWlscyhnb2xkZW4pCi0KLSAgICBpZiBDQU5fR0VORVJB
VEVfR09MREVOX0ZJTEU6Ci0gICAgICBzZWxmLmFzc2VydEVxdWFsKG5vcm1hbGl6ZWRfZ29sZGVu
LCBub3JtYWxpemVkX2FjdHVhbCkKLSAgICBlbHNlOgotICAgICAgbm9ybWFsaXplZF9hY3R1YWwg
PSBSZW1vdmVUZXN0Q291bnRzKG5vcm1hbGl6ZWRfYWN0dWFsKQotICAgICAgbm9ybWFsaXplZF9n
b2xkZW4gPSBSZW1vdmVUZXN0Q291bnRzKHNlbGYuUmVtb3ZlVW5zdXBwb3J0ZWRUZXN0cygKLSAg
ICAgICAgICBub3JtYWxpemVkX2dvbGRlbikpCi0KLSAgICAgICMgVGhpcyBjb2RlIGlzIHZlcnkg
aGFuZHkgd2hlbiBkZWJ1Z2dpbmcgZ29sZGVuIGZpbGUgZGlmZmVyZW5jZXM6Ci0gICAgICBpZiBv
cy5nZXRlbnYoJ0RFQlVHX0dURVNUX09VVFBVVF9URVNUJyk6Ci0gICAgICAgIG9wZW4ob3MucGF0
aC5qb2luKAotICAgICAgICAgICAgZ3Rlc3RfdGVzdF91dGlscy5HZXRTb3VyY2VEaXIoKSwKLSAg
ICAgICAgICAgICdfZ3Rlc3Rfb3V0cHV0X3Rlc3Rfbm9ybWFsaXplZF9hY3R1YWwudHh0JyksICd3
YicpLndyaXRlKAotICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRfYWN0dWFsKQotICAgICAgICBv
cGVuKG9zLnBhdGguam9pbigKLSAgICAgICAgICAgIGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNl
RGlyKCksCi0gICAgICAgICAgICAnX2d0ZXN0X291dHB1dF90ZXN0X25vcm1hbGl6ZWRfZ29sZGVu
LnR4dCcpLCAnd2InKS53cml0ZSgKLSAgICAgICAgICAgICAgICBub3JtYWxpemVkX2dvbGRlbikK
LQotICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtYWxpemVkX2dvbGRlbiwgbm9ybWFsaXplZF9h
Y3R1YWwpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgaWYgc3lzLmFyZ3ZbMTpd
ID09IFtHRU5HT0xERU5fRkxBR106Ci0gICAgaWYgQ0FOX0dFTkVSQVRFX0dPTERFTl9GSUxFOgot
ICAgICAgb3V0cHV0ID0gR2V0T3V0cHV0T2ZBbGxDb21tYW5kcygpCi0gICAgICBnb2xkZW5fZmls
ZSA9IG9wZW4oR09MREVOX1BBVEgsICd3YicpCi0gICAgICBnb2xkZW5fZmlsZS53cml0ZShvdXRw
dXQpCi0gICAgICBnb2xkZW5fZmlsZS5jbG9zZSgpCi0gICAgZWxzZToKLSAgICAgIG1lc3NhZ2Ug
PSAoCi0gICAgICAgICAgIiIiVW5hYmxlIHRvIHdyaXRlIGEgZ29sZGVuIGZpbGUgd2hlbiBjb21w
aWxlZCBpbiBhbiBlbnZpcm9ubWVudAotdGhhdCBkb2VzIG5vdCBzdXBwb3J0IGFsbCB0aGUgcmVx
dWlyZWQgZmVhdHVyZXMgKGRlYXRoIHRlc3RzIiIiKQotICAgICAgaWYgSVNfV0lORE9XUzoKLSAg
ICAgICAgbWVzc2FnZSArPSAoCi0gICAgICAgICAgICAiIiJcbmFuZCB0eXBlZCB0ZXN0cykuIFBs
ZWFzZSBjaGVjayB0aGF0IHlvdSBhcmUgdXNpbmcgVkMrKyA4LjAgU1AxCi1vciBoaWdoZXIgYXMg
eW91ciBjb21waWxlci4iIiIpCi0gICAgICBlbHNlOgotICAgICAgICBtZXNzYWdlICs9ICIiIlxu
dHlwZWQgdGVzdHMsIGFuZCB0aHJlYWRzKS4gIFBsZWFzZSBnZW5lcmF0ZSB0aGUKLWdvbGRlbiBm
aWxlIHVzaW5nIGEgYmluYXJ5IGJ1aWx0IHdpdGggdGhvc2UgZmVhdHVyZXMgZW5hYmxlZC4iIiIK
LQotICAgICAgc3lzLnN0ZGVyci53cml0ZShtZXNzYWdlKQotICAgICAgc3lzLmV4aXQoMSkKLSAg
ZWxzZToKLSAgICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjczZThlOTNlYjA1OWY1ZGI2OTM3YzhjN2Q3Nzc2NmY4NzgwNTI3MC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0Xy5jYworKysgL2Rldi9udWxsCkBAIC0x
LDExMzUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0
OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8v
Ci0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLy8KLS8vIEEgdW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCBpdHNlbGYuICBUaGlzIHZlcmlm
aWVzIHRoYXQgdGhlIGJhc2ljCi0vLyBjb25zdHJ1Y3RzIG9mIEdvb2dsZSBUZXN0IHdvcmsuCi0v
LwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3Qtc3BpLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotLy8gSW5kaWNh
dGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3Qncwot
Ly8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlu
bC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAg
VGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5j
bHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RF
U1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgi
Ci0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLQot
I2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKLXVzaW5nIHRlc3Rpbmc6OlNjb3BlZEZha2VUZXN0UGFy
dFJlc3VsdFJlcG9ydGVyOwotdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHRBcnJheTsKLQot
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6Ok5vdGlmaWNhdGlvbjsKLXVzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpUaHJlYWRXaXRoUGFyYW07Ci0jZW5kaWYKLQotbmFtZXNwYWNlIHBvc2l4ID0gOjp0
ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5n
OwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI7Ci0KLS8vIFRlc3RzIGNhdGNo
aW5nIGZhdGFsIGZhaWx1cmVzLgotCi0vLyBBIHN1YnJvdXRpbmUgdXNlZCBieSB0aGUgZm9sbG93
aW5nIHRlc3QuCi12b2lkIFRlc3RFcTEoaW50IHgpIHsKLSAgQVNTRVJUX0VRKDEsIHgpOwotfQot
Ci0vLyBUaGlzIGZ1bmN0aW9uIGNhbGxzIGEgdGVzdCBzdWJyb3V0aW5lLCBjYXRjaGVzIHRoZSBm
YXRhbCBmYWlsdXJlIGl0Ci0vLyBnZW5lcmF0ZXMsIGFuZCB0aGVuIHJldHVybnMgZWFybHkuCi12
b2lkIFRyeVRlc3RTdWJyb3V0aW5lKCkgewotICAvLyBDYWxscyBhIHN1YnJvdW50aW5lIHRoYXQg
eWllbGRzIGEgZmF0YWwgZmFpbHVyZS4KLSAgVGVzdEVxMSgyKTsKLQotICAvLyBDYXRjaGVzIHRo
ZSBmYXRhbCBmYWlsdXJlIGFuZCBhYm9ydHMgdGhlIHRlc3QuCi0gIC8vCi0gIC8vIFRoZSB0ZXN0
aW5nOjpUZXN0OjogcHJlZml4IGlzIG5lY2Vzc2FyeSB3aGVuIGNhbGxpbmcKLSAgLy8gSGFzRmF0
YWxGYWlsdXJlKCkgb3V0c2lkZSBvZiBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdCBmaXh0dXJlLgot
ICBpZiAodGVzdGluZzo6VGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkpIHJldHVybjsKLQotICAvLyBJ
ZiB3ZSBnZXQgaGVyZSwgc29tZXRoaW5nIGlzIHdyb25nLgotICBGQUlMKCkgPDwgIlRoaXMgc2hv
dWxkIG5ldmVyIGJlIHJlYWNoZWQuIjsKLX0KLQotVEVTVChQYXNzaW5nVGVzdCwgUGFzc2luZ1Rl
c3QxKSB7Ci19Ci0KLVRFU1QoUGFzc2luZ1Rlc3QsIFBhc3NpbmdUZXN0MikgewotfQotCi0vLyBU
ZXN0cyBjYXRjaGluZyBhIGZhdGFsIGZhaWx1cmUgaW4gYSBzdWJyb3V0aW5lLgotVEVTVChGYXRh
bEZhaWx1cmVUZXN0LCBGYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUpIHsKLSAgcHJpbnRmKCIoZXhw
ZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpXG4iKTsKLQotICBUcnlUZXN0U3Vi
cm91dGluZSgpOwotfQotCi0vLyBUZXN0cyBjYXRjaGluZyBhIGZhdGFsIGZhaWx1cmUgaW4gYSBu
ZXN0ZWQgc3Vicm91dGluZS4KLVRFU1QoRmF0YWxGYWlsdXJlVGVzdCwgRmF0YWxGYWlsdXJlSW5O
ZXN0ZWRTdWJyb3V0aW5lKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4
IHNob3VsZCBiZSAxKVxuIik7Ci0KLSAgLy8gQ2FsbHMgYSBzdWJyb3VudGluZSB0aGF0IHlpZWxk
cyBhIGZhdGFsIGZhaWx1cmUuCi0gIFRyeVRlc3RTdWJyb3V0aW5lKCk7Ci0KLSAgLy8gQ2F0Y2hl
cyB0aGUgZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSB0ZXN0LgotICAvLwotICAvLyBXaGVu
IGNhbGxpbmcgSGFzRmF0YWxGYWlsdXJlKCkgaW5zaWRlIGEgVEVTVCwgVEVTVF9GLCBvciB0ZXN0
Ci0gIC8vIGZpeHR1cmUsIHRoZSB0ZXN0aW5nOjpUZXN0OjogcHJlZml4IGlzIG5vdCBuZWVkZWQu
Ci0gIGlmIChIYXNGYXRhbEZhaWx1cmUoKSkgcmV0dXJuOwotCi0gIC8vIElmIHdlIGdldCBoZXJl
LCBzb21ldGhpbmcgaXMgd3JvbmcuCi0gIEZBSUwoKSA8PCAiVGhpcyBzaG91bGQgbmV2ZXIgYmUg
cmVhY2hlZC4iOwotfQotCi0vLyBUZXN0cyBIYXNGYXRhbEZhaWx1cmUoKSBhZnRlciBhIGZhaWxl
ZCBFWFBFQ1QgY2hlY2suCi1URVNUKEZhdGFsRmFpbHVyZVRlc3QsIE5vbmZhdGFsRmFpbHVyZUlu
U3Vicm91dGluZSkgewotICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlIG9uIGZhbHNlKVxu
Iik7Ci0gIEVYUEVDVF9UUlVFKGZhbHNlKTsgIC8vIEdlbmVyYXRlcyBhIG5vbmZhdGFsIGZhaWx1
cmUKLSAgQVNTRVJUX0ZBTFNFKEhhc0ZhdGFsRmFpbHVyZSgpKTsgIC8vIFRoaXMgc2hvdWxkIHN1
Y2NlZWQuCi19Ci0KLS8vIFRlc3RzIGludGVybGVhdmluZyB1c2VyIGxvZ2dpbmcgYW5kIEdvb2ds
ZSBUZXN0IGFzc2VydGlvbnMuCi1URVNUKExvZ2dpbmdUZXN0LCBJbnRlcmxlYXZpbmdMb2dnaW5n
QW5kQXNzZXJ0aW9ucykgewotICBzdGF0aWMgY29uc3QgaW50IGFbNF0gPSB7Ci0gICAgMywgOSwg
MiwgNgotICB9OwotCi0gIHByaW50ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzIG9uICgzKSA+PSAo
YVtpXSkpXG4iKTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihhKS9zaXplb2YoKmEpKTsgaSsrKSB7Ci0gICAgcHJpbnRmKCJpID09ICVkXG4iLCBpKTsKLSAg
ICBFWFBFQ1RfR0UoMywgYVtpXSk7Ci0gIH0KLX0KLQotLy8gVGVzdHMgdGhlIFNDT1BFRF9UUkFD
RSBtYWNyby4KLQotLy8gQSBoZWxwZXIgZnVuY3Rpb24gZm9yIHRlc3RpbmcgU0NPUEVEX1RSQUNF
Lgotdm9pZCBTdWJXaXRob3V0VHJhY2UoaW50IG4pIHsKLSAgRVhQRUNUX0VRKDEsIG4pOwotICBB
U1NFUlRfRVEoMiwgbik7Ci19Ci0KLS8vIEFub3RoZXIgaGVscGVyIGZ1bmN0aW9uIGZvciB0ZXN0
aW5nIFNDT1BFRF9UUkFDRS4KLXZvaWQgU3ViV2l0aFRyYWNlKGludCBuKSB7Ci0gIFNDT1BFRF9U
UkFDRSh0ZXN0aW5nOjpNZXNzYWdlKCkgPDwgIm4gPSAiIDw8IG4pOwotCi0gIFN1YldpdGhvdXRU
cmFjZShuKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0UoKSBvYmV5cyBsZXhpY2Fs
IHNjb3Blcy4KLVRFU1QoU0NPUEVEX1RSQUNFVGVzdCwgT2JleXNTY29wZXMpIHsKLSAgcHJpbnRm
KCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIpOwotCi0gIC8vIFRoZXJlIHNob3VsZCBiZSBubyB0cmFj
ZSBiZWZvcmUgU0NPUEVEX1RSQUNFKCkgaXMgaW52b2tlZC4KLSAgQUREX0ZBSUxVUkUoKSA8PCAi
VGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkbid0IGhhdmUgYSB0cmFjZS4iOwot
Ci0gIHsKLSAgICBTQ09QRURfVFJBQ0UoIkV4cGVjdGVkIHRyYWNlIik7Ci0gICAgLy8gQWZ0ZXIg
U0NPUEVEX1RSQUNFKCksIGEgZmFpbHVyZSBpbiB0aGUgY3VycmVudCBzY29wZSBzaG91bGQgY29u
dGFpbgotICAgIC8vIHRoZSB0cmFjZS4KLSAgICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1
cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgaGF2ZSBhIHRyYWNlLiI7Ci0gIH0KLQotICAvLyBP
bmNlIHRoZSBjb250cm9sIGxlYXZlcyB0aGUgc2NvcGUgb2YgdGhlIFNDT1BFRF9UUkFDRSgpLCB0
aGVyZQotICAvLyBzaG91bGQgYmUgbm8gdHJhY2UgYWdhaW4uCi0gIEFERF9GQUlMVVJFKCkgPDwg
IlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuIjsK
LX0KLQotLy8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0Ugd29ya3MgaW5zaWRlIGEgbG9vcC4KLVRF
U1QoU0NPUEVEX1RSQUNFVGVzdCwgV29ya3NJbkxvb3ApIHsKLSAgcHJpbnRmKCIoZXhwZWN0ZWQg
dG8gZmFpbClcbiIpOwotCi0gIGZvciAoaW50IGkgPSAxOyBpIDw9IDI7IGkrKykgewotICAgIFND
T1BFRF9UUkFDRSh0ZXN0aW5nOjpNZXNzYWdlKCkgPDwgImkgPSAiIDw8IGkpOwotCi0gICAgU3Vi
V2l0aG91dFRyYWNlKGkpOwotICB9Ci19Ci0KLS8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFIHdv
cmtzIGluIGEgc3Vicm91dGluZS4KLVRFU1QoU0NPUEVEX1RSQUNFVGVzdCwgV29ya3NJblN1YnJv
dXRpbmUpIHsKLSAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIpOwotCi0gIFN1YldpdGhU
cmFjZSgxKTsKLSAgU3ViV2l0aFRyYWNlKDIpOwotfQotCi0vLyBUZXN0cyB0aGF0IFNDT1BFRF9U
UkFDRSBjYW4gYmUgbmVzdGVkLgotVEVTVChTQ09QRURfVFJBQ0VUZXN0LCBDYW5CZU5lc3RlZCkg
ewotICBwcmludGYoIihleHBlY3RlZCB0byBmYWlsKVxuIik7Ci0KLSAgU0NPUEVEX1RSQUNFKCIi
KTsgIC8vIEEgdHJhY2Ugd2l0aG91dCBhIG1lc3NhZ2UuCi0KLSAgU3ViV2l0aFRyYWNlKDIpOwot
fQotCi0vLyBUZXN0cyB0aGF0IG11bHRpcGxlIFNDT1BFRF9UUkFDRXMgY2FuIGJlIHVzZWQgaW4g
dGhlIHNhbWUgc2NvcGUuCi1URVNUKFNDT1BFRF9UUkFDRVRlc3QsIENhbkJlUmVwZWF0ZWQpIHsK
LSAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIpOwotCi0gIFNDT1BFRF9UUkFDRSgiQSIp
OwotICBBRERfRkFJTFVSRSgpCi0gICAgICA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBh
bmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQS4iOwotCi0gIFNDT1BFRF9UUkFDRSgiQiIp
OwotICBBRERfRkFJTFVSRSgpCi0gICAgICA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBh
bmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSBhbmQgQi4iOwotCi0gIHsKLSAgICBTQ09Q
RURfVFJBQ0UoIkMiKTsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhw
ZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiAiCi0gICAgICAgICAgICAgICAgICA8PCAidHJhY2Ug
cG9pbnQgQSwgQiwgYW5kIEMuIjsKLSAgfQotCi0gIFNDT1BFRF9UUkFDRSgiRCIpOwotICBBRERf
RkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFp
biAiCi0gICAgICAgICAgICAgICAgPDwgInRyYWNlIHBvaW50IEEsIEIsIGFuZCBELiI7Ci19Ci0K
LSNpZiBHVEVTVF9JU19USFJFQURTQUZFCi0vLyBUZXN0cyB0aGF0IFNDT1BFRF9UUkFDRSgpcyBj
YW4gYmUgdXNlZCBjb25jdXJyZW50bHkgZnJvbSBtdWx0aXBsZQotLy8gdGhyZWFkcy4gIE5hbWVs
eSwgYW4gYXNzZXJ0aW9uIHNob3VsZCBiZSBhZmZlY3RlZCBieQotLy8gU0NPUEVEX1RSQUNFKClz
IGluIGl0cyBvd24gdGhyZWFkIG9ubHkuCi0KLS8vIEhlcmUncyB0aGUgc2VxdWVuY2Ugb2YgYWN0
aW9ucyB0aGF0IGhhcHBlbiBpbiB0aGUgdGVzdDoKLS8vCi0vLyAgIFRocmVhZCBBIChtYWluKSAg
ICAgICAgICAgICAgICB8IFRocmVhZCBCIChzcGF3bmVkKQotLy8gICA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09fD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLyAgIHNw
YXducyB0aHJlYWQgQiAgICAgICAgICAgICAgICB8Ci0vLyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vICAgd2FpdHMg
Zm9yIG4xICAgICAgICAgICAgICAgICAgIHwgU0NPUEVEX1RSQUNFKCJUcmFjZSBCIik7Ci0vLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdlbmVyYXRlcyBmYWlsdXJlICMxCi0v
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG5vdGlmaWVzIG4xCi0vLyAgIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLS8vICAgU0NPUEVEX1RSQUNFKCJUcmFjZSBBIik7ICAgICAgIHwgd2FpdHMgZm9yIG4y
Ci0vLyAgIGdlbmVyYXRlcyBmYWlsdXJlICMyICAgICAgICAgICB8Ci0vLyAgIG5vdGlmaWVzIG4y
ICAgICAgICAgICAgICAgICAgICB8Ci0vLyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vICAgd2FpdHMgZm9yIG4zICAg
ICAgICAgICAgICAgICAgIHwgZ2VuZXJhdGVzIGZhaWx1cmUgIzMKLS8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgdHJhY2UgQiBkaWVzCi0vLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IGdlbmVyYXRlcyBmYWlsdXJlICM0Ci0vLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IG5vdGlmaWVzIG4zCi0vLyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vICAgZ2VuZXJh
dGVzIGZhaWx1cmUgIzUgICAgICAgICAgIHwgZmluaXNoZXMKLS8vICAgdHJhY2UgQSBkaWVzICAg
ICAgICAgICAgICAgICAgIHwKLS8vICAgZ2VuZXJhdGVzIGZhaWx1cmUgIzYgICAgICAgICAgIHwK
LS8vICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotLy8gICB3YWl0cyBmb3IgdGhyZWFkIEIgdG8gZmluaXNoICAgfAotCi1z
dHJ1Y3QgQ2hlY2tQb2ludHMgewotICBOb3RpZmljYXRpb24gbjE7Ci0gIE5vdGlmaWNhdGlvbiBu
MjsKLSAgTm90aWZpY2F0aW9uIG4zOwotfTsKLQotc3RhdGljIHZvaWQgVGhyZWFkV2l0aFNjb3Bl
ZFRyYWNlKENoZWNrUG9pbnRzKiBjaGVja19wb2ludHMpIHsKLSAgewotICAgIFNDT1BFRF9UUkFD
RSgiVHJhY2UgQiIpOwotICAgIEFERF9GQUlMVVJFKCkKLSAgICAgICAgPDwgIkV4cGVjdGVkIGZh
aWx1cmUgIzEgKGluIHRocmVhZCBCLCBvbmx5IHRyYWNlIEIgYWxpdmUpLiI7Ci0gICAgY2hlY2tf
cG9pbnRzLT5uMS5Ob3RpZnkoKTsKLSAgICBjaGVja19wb2ludHMtPm4yLldhaXRGb3JOb3RpZmlj
YXRpb24oKTsKLQotICAgIEFERF9GQUlMVVJFKCkKLSAgICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1
cmUgIzMgKGluIHRocmVhZCBCLCB0cmFjZSBBICYgQiBib3RoIGFsaXZlKS4iOwotICB9ICAvLyBU
cmFjZSBCIGRpZXMgaGVyZS4KLSAgQUREX0ZBSUxVUkUoKQotICAgICAgPDwgIkV4cGVjdGVkIGZh
aWx1cmUgIzQgKGluIHRocmVhZCBCLCBvbmx5IHRyYWNlIEEgYWxpdmUpLiI7Ci0gIGNoZWNrX3Bv
aW50cy0+bjMuTm90aWZ5KCk7Ci19Ci0KLVRFU1QoU0NPUEVEX1RSQUNFVGVzdCwgV29ya3NDb25j
dXJyZW50bHkpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDYgZmFpbHVyZXMpXG4iKTsKLQotICBD
aGVja1BvaW50cyBjaGVja19wb2ludHM7Ci0gIFRocmVhZFdpdGhQYXJhbTxDaGVja1BvaW50cyo+
IHRocmVhZCgmVGhyZWFkV2l0aFNjb3BlZFRyYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmNoZWNrX3BvaW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwpOwotICBjaGVja19wb2ludHMubjEuV2FpdEZvck5vdGlmaWNhdGlv
bigpOwotCi0gIHsKLSAgICBTQ09QRURfVFJBQ0UoIlRyYWNlIEEiKTsKLSAgICBBRERfRkFJTFVS
RSgpCi0gICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyIChpbiB0aHJlYWQgQSwgdHJhY2Ug
QSAmIEIgYm90aCBhbGl2ZSkuIjsKLSAgICBjaGVja19wb2ludHMubjIuTm90aWZ5KCk7Ci0gICAg
Y2hlY2tfcG9pbnRzLm4zLldhaXRGb3JOb3RpZmljYXRpb24oKTsKLQotICAgIEFERF9GQUlMVVJF
KCkKLSAgICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzUgKGluIHRocmVhZCBBLCBvbmx5IHRy
YWNlIEEgYWxpdmUpLiI7Ci0gIH0gIC8vIFRyYWNlIEEgZGllcyBoZXJlLgotICBBRERfRkFJTFVS
RSgpCi0gICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNiAoaW4gdGhyZWFkIEEsIG5vIHRyYWNl
IGFsaXZlKS4iOwotICB0aHJlYWQuSm9pbigpOwotfQotI2VuZGlmICAvLyBHVEVTVF9JU19USFJF
QURTQUZFCi0KLVRFU1QoRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0LAotICAgICBESVNBQkxFRF9B
bHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2FybmluZykgewotICAvLyBUaGlzIHRl
c3QgYm9keSBpcyBpbnRlbnRpb25hbGx5IGVtcHR5LiAgSXRzIHNvbGUgcHVycG9zZSBpcyBmb3IK
LSAgLy8gdmVyaWZ5aW5nIHRoYXQgdGhlIC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMg
ZmxhZwotICAvLyBzdXBwcmVzc2VzIHRoZSAiWU9VIEhBVkUgMTIgRElTQUJMRUQgVEVTVFMiIHdh
cm5pbmcgYXQgdGhlIGVuZCBvZgotICAvLyB0aGUgdGVzdCBvdXRwdXQuCi19Ci0KLS8vIFRlc3Rz
IHVzaW5nIGFzc2VydGlvbnMgb3V0c2lkZSBvZiBURVNUIGFuZCBURVNUX0YuCi0vLwotLy8gVGhp
cyBmdW5jdGlvbiBjcmVhdGVzIHR3byBmYWlsdXJlcyBpbnRlbnRpb25hbGx5Lgotdm9pZCBBZEhv
Y1Rlc3QoKSB7Ci0gIHByaW50ZigiVGhlIG5vbi10ZXN0IHBhcnQgb2YgdGhlIGNvZGUgaXMgZXhw
ZWN0ZWQgdG8gaGF2ZSAyIGZhaWx1cmVzLlxuXG4iKTsKLSAgRVhQRUNUX1RSVUUoZmFsc2UpOwot
ICBFWFBFQ1RfRVEoMiwgMyk7Ci19Ci0KLS8vIFJ1bnMgYWxsIFRFU1RzLCBhbGwgVEVTVF9Gcywg
YW5kIHRoZSBhZCBob2MgdGVzdC4KLWludCBSdW5BbGxUZXN0cygpIHsKLSAgQWRIb2NUZXN0KCk7
Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19Ci0KLS8vIFRlc3RzIG5vbi1mYXRhbCBmYWls
dXJlcyBpbiB0aGUgZml4dHVyZSBjb25zdHJ1Y3Rvci4KLWNsYXNzIE5vbkZhdGFsRmFpbHVyZUlu
Rml4dHVyZUNvbnN0cnVjdG9yVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0
ZWQ6Ci0gIE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCgpIHsKLSAgICBw
cmludGYoIihleHBlY3RpbmcgNSBmYWlsdXJlcylcbiIpOwotICAgIEFERF9GQUlMVVJFKCkgPDwg
IkV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IuIjsKLSAgfQot
Ci0gIH5Ob25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QoKSB7Ci0gICAgQURE
X0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNSwgaW4gdGhlIHRlc3QgZml4dHVyZSBk
J3Rvci4iOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIEFERF9GQUlMVVJF
KCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFNldFVwKCkuIjsKLSAgfQotCi0gIHZpcnR1
YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWls
dXJlICM0LCBpbiBUZWFyRG93bi4iOwotICB9Ci19OwotCi1URVNUX0YoTm9uRmF0YWxGYWlsdXJl
SW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LCBGYWlsdXJlSW5Db25zdHJ1Y3RvcikgewotICBBRERf
RkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBib2R5LiI7Ci19
Ci0KLS8vIFRlc3RzIGZhdGFsIGZhaWx1cmVzIGluIHRoZSBmaXh0dXJlIGNvbnN0cnVjdG9yLgot
Y2xhc3MgRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0
b3JUZXN0KCkgewotICAgIHByaW50ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7Ci0gICAg
SW5pdCgpOwotICB9Ci0KLSAgfkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCgp
IHsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVz
dCBmaXh0dXJlIGQndG9yLiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAg
QUREX0ZBSUxVUkUoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIFNldFVwKCkuICAiCi0gICAg
ICAgICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBm
aXh0dXJlIGMndG9yICIKLSAgICAgICAgICAgICAgICAgIDw8ICJoYWQgYSBmYXRhbCBmYWlsdXJl
LiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgQUREX0ZBSUxVUkUo
KSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIFRlYXJEb3duKCkuICAiCi0gICAgICAgICAgICAg
ICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMn
dG9yICIKLSAgICAgICAgICAgICAgICAgIDw8ICJoYWQgYSBmYXRhbCBmYWlsdXJlLiI7Ci0gIH0K
LSBwcml2YXRlOgotICB2b2lkIEluaXQoKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWls
dXJlICMxLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGMndG9yLiI7Ci0gIH0KLX07Ci0KLVRFU1RfRihG
YXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QsIEZhaWx1cmVJbkNvbnN0cnVjdG9y
KSB7Ci0gIEFERF9GQUlMVVJFKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBi
b2R5LiAgIgotICAgICAgICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFz
IHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgIgotICAgICAgICAgICAgICAgIDw8ICJoYWQgYSBmYXRh
bCBmYWlsdXJlLiI7Ci19Ci0KLS8vIFRlc3RzIG5vbi1mYXRhbCBmYWlsdXJlcyBpbiBTZXRVcCgp
LgotY2xhc3MgTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIH5Ob25GYXRhbEZhaWx1cmVJblNldFVwVGVzdCgp
IHsKLSAgICBEZWluaXQoKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBw
cmludGYoIihleHBlY3RpbmcgNCBmYWlsdXJlcylcbiIpOwotICAgIEFERF9GQUlMVVJFKCkgPDwg
IkV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCkuIjsKLSAgfQotCi0gIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIFRl
YXJEb3duKCkuIjsKLSAgfQotIHByaXZhdGU6Ci0gIHZvaWQgRGVpbml0KCkgewotICAgIEZBSUwo
KSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4iOwot
ICB9Ci19OwotCi1URVNUX0YoTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QsIEZhaWx1cmVJblNl
dFVwKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZnVu
Y3Rpb24uIjsKLX0KLQotLy8gVGVzdHMgZmF0YWwgZmFpbHVyZXMgaW4gU2V0VXAoKS4KLWNsYXNz
IEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3Rl
Y3RlZDoKLSAgdmlydHVhbCB+RmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QoKSB7Ci0gICAgRGVpbml0
KCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgcHJpbnRmKCIoZXhwZWN0
aW5nIDMgZmFpbHVyZXMpXG4iKTsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzEs
IGluIFNldFVwKCkuIjsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBG
QUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRlYXJEb3duKCkuIjsKLSAgfQotIHBy
aXZhdGU6Ci0gIHZvaWQgRGVpbml0KCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVy
ZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4iOwotICB9Ci19OwotCi1URVNUX0YoRmF0
YWxGYWlsdXJlSW5TZXRVcFRlc3QsIEZhaWx1cmVJblNldFVwKSB7Ci0gIEZBSUwoKSA8PCAiVU5F
WFBFQ1RFRCBmYWlsdXJlIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLiAgIgotICAgICAgICAgPDwgIldl
IHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgU2V0VXAoKSBmYWlsZWQuIjsKLX0KLQotI2lmIEdU
RVNUX09TX1dJTkRPV1MKLQotLy8gVGhpcyBncm91cCBvZiB0ZXN0cyB2ZXJpZmllcyB0aGF0IEdv
b2dsZSBUZXN0IGhhbmRsZXMgU0VIIGFuZCBDKysKLS8vIGV4Y2VwdGlvbnMgY29ycmVjdGx5Lgot
Ci0vLyBBIGZ1bmN0aW9uIHRoYXQgdGhyb3dzIGFuIFNFSCBleGNlcHRpb24uCi1zdGF0aWMgdm9p
ZCBUaHJvd1NFSCgpIHsKLSAgaW50KiBwID0gTlVMTDsKLSAgKnAgPSAwOyAgLy8gUmFpc2VzIGFu
IGFjY2VzcyB2aW9sYXRpb24uCi19Ci0KLS8vIFRlc3RzIGV4Y2VwdGlvbnMgdGhyb3duIGluIHRo
ZSB0ZXN0IGZpeHR1cmUgY29uc3RydWN0b3IuCi1jbGFzcyBFeGNlcHRpb25JbkZpeHR1cmVDdG9y
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIEV4Y2VwdGlvbklu
Rml4dHVyZUN0b3JUZXN0KCkgewotICAgIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUgb24g
dGhyb3duIGV4Y2VwdGlvbiAiCi0gICAgICAgICAgICJpbiB0aGUgdGVzdCBmaXh0dXJlJ3MgY29u
c3RydWN0b3IpXG4iKTsKLQotICAgIFRocm93U0VIKCk7Ci0gIH0KLQotICB2aXJ0dWFsIH5FeGNl
cHRpb25JbkZpeHR1cmVDdG9yVGVzdCgpIHsKLSAgICBEZWluaXQoKTsKLSAgfQotCi0gIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBGQUlMKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiBT
ZXRVcCgpLiAgIgotICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0
aGUgdGVzdCBmaXh0dXJlIGMndG9yIHRocmV3LiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVh
ckRvd24oKSB7Ci0gICAgRkFJTCgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gVGVhckRvd24o
KS4gICIKLSAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgdGhlIHRl
c3QgZml4dHVyZSBjJ3RvciB0aHJldy4iOwotICB9Ci0gcHJpdmF0ZToKLSAgdm9pZCBEZWluaXQo
KSB7Ci0gICAgRkFJTCgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gdGhlIGQndG9yLiAgIgot
ICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0
dXJlIGMndG9yIHRocmV3LiI7Ci0gIH0KLX07Ci0KLVRFU1RfRihFeGNlcHRpb25JbkZpeHR1cmVD
dG9yVGVzdCwgRXhjZXB0aW9uSW5GaXh0dXJlQ3RvcikgewotICBGQUlMKCkgPDwgIlVORVhQRUNU
RUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBmdW5jdGlvbi4gICIKLSAgICAgICAgIDw8ICJXZSBzaG91
bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgdGhyZXcuIjsKLX0K
LQotLy8gVGVzdHMgZXhjZXB0aW9ucyB0aHJvd24gaW4gU2V0VXAoKS4KLWNsYXNzIEV4Y2VwdGlv
bkluU2V0VXBUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdmly
dHVhbCB+RXhjZXB0aW9uSW5TZXRVcFRlc3QoKSB7Ci0gICAgRGVpbml0KCk7Ci0gIH0KLQotICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgcHJpbnRmKCIoZXhwZWN0aW5nIDMgZmFpbHVyZXMp
XG4iKTsKLQotICAgIFRocm93U0VIKCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24o
KSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLiI7
Ci0gIH0KLSBwcml2YXRlOgotICB2b2lkIERlaW5pdCgpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVj
dGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKLSAgfQotfTsKLQot
VEVTVF9GKEV4Y2VwdGlvbkluU2V0VXBUZXN0LCBFeGNlcHRpb25JblNldFVwKSB7Ci0gIEZBSUwo
KSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLiAgIgotICAgICAg
ICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgU2V0VXAoKSB0aHJldy4iOwotfQot
Ci0vLyBUZXN0cyB0aGF0IFRlYXJEb3duKCkgYW5kIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IgYXJl
IGFsd2F5cyBjYWxsZWQsCi0vLyBldmVuIHdoZW4gdGhlIHRlc3QgZnVuY3Rpb24gdGhyb3dzIGFu
IGV4Y2VwdGlvbi4KLWNsYXNzIEV4Y2VwdGlvbkluVGVzdEZ1bmN0aW9uVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgfkV4Y2VwdGlvbkluVGVzdEZ1
bmN0aW9uVGVzdCgpIHsKLSAgICBEZWluaXQoKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRlYXJEb3du
KCkuIjsKLSAgfQotIHByaXZhdGU6Ci0gIHZvaWQgRGVpbml0KCkgewotICAgIEZBSUwoKSA8PCAi
RXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4iOwotICB9Ci19
OwotCi0vLyBUZXN0cyB0aGF0IHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IgaXMgYWx3YXlzIGNhbGxl
ZCwgZXZlbiB3aGVuIHRoZQotLy8gdGVzdCBmdW5jdGlvbiB0aHJvd3MgYW4gU0VIIGV4Y2VwdGlv
bi4KLVRFU1RfRihFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QsIFNFSCkgewotICBwcmludGYo
IihleHBlY3RpbmcgMyBmYWlsdXJlcylcbiIpOwotCi0gIFRocm93U0VIKCk7Ci19Ci0KLSNpZiBH
VEVTVF9IQVNfRVhDRVBUSU9OUwotCi0vLyBUZXN0cyB0aGF0IHRoZSB0ZXN0IGZpeHR1cmUgZCd0
b3IgaXMgYWx3YXlzIGNhbGxlZCwgZXZlbiB3aGVuIHRoZQotLy8gdGVzdCBmdW5jdGlvbiB0aHJv
d3MgYSBDKysgZXhjZXB0aW9uLiAgV2UgZG8gdGhpcyBvbmx5IHdoZW4KLS8vIEdURVNUX0hBU19F
WENFUFRJT05TIGlzIG5vbi16ZXJvLCBpLmUuIEMrKyBleGNlcHRpb25zIGFyZSBlbmFibGVkLgot
VEVTVF9GKEV4Y2VwdGlvbkluVGVzdEZ1bmN0aW9uVGVzdCwgQ3BwRXhjZXB0aW9uKSB7Ci0gIHRo
cm93IDE7Ci19Ci0KLS8vIFRlc3RzIGV4Y2VwdGlvbnMgdGhyb3duIGluIFRlYXJEb3duKCkuCi1j
bGFzcyBFeGNlcHRpb25JblRlYXJEb3duVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBw
cm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgfkV4Y2VwdGlvbkluVGVhckRvd25UZXN0KCkgewotICAgIERl
aW5pdCgpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIHRocm93IDE7
Ci0gIH0KLSBwcml2YXRlOgotICB2b2lkIERlaW5pdCgpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVj
dGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKLSAgfQotfTsKLQot
VEVTVF9GKEV4Y2VwdGlvbkluVGVhckRvd25UZXN0LCBFeGNlcHRpb25JblRlYXJEb3duKSB7Ci0g
IHByaW50ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7Ci19Ci0KLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX0VYQ0VQVElPTlMKLQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSNpZiBH
VEVTVF9JU19USFJFQURTQUZFCi0KLS8vIEEgdW5hcnkgZnVuY3Rpb24gdGhhdCBtYXkgZGllLgot
dm9pZCBEaWVJZihib29sIHNob3VsZF9kaWUpIHsKLSAgR1RFU1RfQ0hFQ0tfKCFzaG91bGRfZGll
KSA8PCAiIC0gZGVhdGggaW5zaWRlIERpZUlmKCkuIjsKLX0KLQotLy8gVGVzdHMgcnVubmluZyBk
ZWF0aCB0ZXN0cyBpbiBhIG11bHRpLXRocmVhZGVkIGNvbnRleHQuCi0KLS8vIFVzZWQgZm9yIGNv
b3JkaW5hdGlvbiBiZXR3ZWVuIHRoZSBtYWluIGFuZCB0aGUgc3Bhd24gdGhyZWFkLgotc3RydWN0
IFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyB7Ci0gIFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucygp
IHt9Ci0KLSAgTm90aWZpY2F0aW9uIHNwYXduX3RocmVhZF9zdGFydGVkOwotICBOb3RpZmljYXRp
b24gc3Bhd25fdGhyZWFkX29rX3RvX3Rlcm1pbmF0ZTsKLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oU3Bhd25UaHJlYWROb3RpZmljYXRpb25zKTsKLX07Ci0K
LS8vIFRoZSBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCBpbiB0aGUgdGhyZWFkIHNwYXduIGJ5IHRo
ZQotLy8gTXVsdGlwbGVUaHJlYWRzIHRlc3QgKGJlbG93KS4KLXN0YXRpYyB2b2lkIFRocmVhZFJv
dXRpbmUoU3Bhd25UaHJlYWROb3RpZmljYXRpb25zKiBub3RpZmljYXRpb25zKSB7Ci0gIC8vIFNp
Z25hbHMgdGhlIG1haW4gdGhyZWFkIHRoYXQgdGhpcyB0aHJlYWQgaGFzIHN0YXJ0ZWQuCi0gIG5v
dGlmaWNhdGlvbnMtPnNwYXduX3RocmVhZF9zdGFydGVkLk5vdGlmeSgpOwotCi0gIC8vIFdhaXRz
IGZvciBwZXJtaXNzaW9uIHRvIGZpbmlzaCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgbm90aWZp
Y2F0aW9ucy0+c3Bhd25fdGhyZWFkX29rX3RvX3Rlcm1pbmF0ZS5XYWl0Rm9yTm90aWZpY2F0aW9u
KCk7Ci19Ci0KLS8vIFRoaXMgaXMgYSBkZWF0aC10ZXN0IHRlc3QsIGJ1dCBpdCdzIG5vdCBuYW1l
ZCB3aXRoIGEgRGVhdGhUZXN0Ci0vLyBzdWZmaXguICBJdCBzdGFydHMgdGhyZWFkcyB3aGljaCBt
aWdodCBpbnRlcmZlcmUgd2l0aCBsYXRlcgotLy8gZGVhdGggdGVzdHMsIHNvIGl0IG11c3QgcnVu
IGFmdGVyIGFsbCBvdGhlciBkZWF0aCB0ZXN0cy4KLWNsYXNzIERlYXRoVGVzdEFuZE11bHRpVGhy
ZWFkc1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICAvLyBTdGFy
dHMgYSB0aHJlYWQgYW5kIHdhaXRzIGZvciBpdCB0byBiZWdpbi4KLSAgdmlydHVhbCB2b2lkIFNl
dFVwKCkgewotICAgIHRocmVhZF8ucmVzZXQobmV3IFRocmVhZFdpdGhQYXJhbTxTcGF3blRocmVh
ZE5vdGlmaWNhdGlvbnMqPigKLSAgICAgICAgJlRocmVhZFJvdXRpbmUsICZub3RpZmljYXRpb25z
XywgTlVMTCkpOwotICAgIG5vdGlmaWNhdGlvbnNfLnNwYXduX3RocmVhZF9zdGFydGVkLldhaXRG
b3JOb3RpZmljYXRpb24oKTsKLSAgfQotICAvLyBUZWxscyB0aGUgdGhyZWFkIHRvIGZpbmlzaCwg
YW5kIHJlYXBzIGl0LgotICAvLyBEZXBlbmRpbmcgb24gdGhlIHZlcnNpb24gb2YgdGhlIHRocmVh
ZCBsaWJyYXJ5IGluIHVzZSwKLSAgLy8gYSBtYW5hZ2VyIHRocmVhZCBtaWdodCBzdGlsbCBiZSBs
ZWZ0IHJ1bm5pbmcgdGhhdCB3aWxsIGludGVyZmVyZQotICAvLyB3aXRoIGxhdGVyIGRlYXRoIHRl
c3RzLiAgVGhpcyBpcyB1bmZvcnR1bmF0ZSwgYnV0IHRoaXMgY2xhc3MKLSAgLy8gY2xlYW5zIHVw
IGFmdGVyIGl0c2VsZiBhcyBiZXN0IGl0IGNhbi4KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkg
ewotICAgIG5vdGlmaWNhdGlvbnNfLnNwYXduX3RocmVhZF9va190b190ZXJtaW5hdGUuTm90aWZ5
KCk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyBub3RpZmlj
YXRpb25zXzsKLSAgc2NvcGVkX3B0cjxUaHJlYWRXaXRoUGFyYW08U3Bhd25UaHJlYWROb3RpZmlj
YXRpb25zKj4gPiB0aHJlYWRfOwotfTsKLQotI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZF
Ci0KLS8vIFRoZSBNaXhlZFVwVGVzdENhc2VUZXN0IHRlc3QgY2FzZSB2ZXJpZmllcyB0aGF0IEdv
b2dsZSBUZXN0IHdpbGwgZmFpbCBhCi0vLyB0ZXN0IGlmIGl0IHVzZXMgYSBkaWZmZXJlbnQgZml4
dHVyZSBjbGFzcyB0aGFuIHdoYXQgb3RoZXIgdGVzdHMgaW4KLS8vIHRoZSBzYW1lIHRlc3QgY2Fz
ZSB1c2UuICBJdCBkZWxpYmVyYXRlbHkgY29udGFpbnMgdHdvIGZpeHR1cmUKLS8vIGNsYXNzZXMg
d2l0aCB0aGUgc2FtZSBuYW1lIGJ1dCBkZWZpbmVkIGluIGRpZmZlcmVudCBuYW1lc3BhY2VzLgot
Ci0vLyBUaGUgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QgdGVzdCBjYXNlIHZl
cmlmaWVzIHRoYXQKLS8vIHdoZW4gdGhlIHVzZXIgZGVmaW5lcyB0d28gdGVzdHMgd2l0aCB0aGUg
c2FtZSB0ZXN0IGNhc2UgbmFtZSBBTkQKLS8vIHNhbWUgdGVzdCBuYW1lIChidXQgaW4gZGlmZmVy
ZW50IG5hbWVzcGFjZXMpLCB0aGUgc2Vjb25kIHRlc3Qgd2lsbAotLy8gZmFpbC4KLQotbmFtZXNw
YWNlIGZvbyB7Ci0KLWNsYXNzIE1peGVkVXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Ci19OwotCi1URVNUX0YoTWl4ZWRVcFRlc3RDYXNlVGVzdCwgRmlyc3RUZXN0RnJvbU5h
bWVzcGFjZUZvbykge30KLVRFU1RfRihNaXhlZFVwVGVzdENhc2VUZXN0LCBTZWNvbmRUZXN0RnJv
bU5hbWVzcGFjZUZvbykge30KLQotY2xhc3MgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFt
ZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1URVNUX0YoTWl4ZWRVcFRlc3RD
YXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCi0gICAgICAgVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFt
ZVNob3VsZEZhaWwpIHt9Ci0KLX0gIC8vIG5hbWVzcGFjZSBmb28KLQotbmFtZXNwYWNlIGJhciB7
Ci0KLWNsYXNzIE1peGVkVXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19
OwotCi0vLyBUaGUgZm9sbG93aW5nIHR3byB0ZXN0cyBhcmUgZXhwZWN0ZWQgdG8gZmFpbC4gIFdl
IHJlbHkgb24gdGhlCi0vLyBnb2xkZW4gZmlsZSB0byBjaGVjayB0aGF0IEdvb2dsZSBUZXN0IGdl
bmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KLVRFU1RfRihNaXhlZFVwVGVzdENhc2VU
ZXN0LCBUaGlzU2hvdWxkRmFpbCkge30KLVRFU1RfRihNaXhlZFVwVGVzdENhc2VUZXN0LCBUaGlz
U2hvdWxkRmFpbFRvbykge30KLQotY2xhc3MgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFt
ZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi0vLyBFeHBlY3RlZCB0byBmYWls
LiAgV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gY2hlY2sgdGhhdCBHb29nbGUgVGVzdAot
Ly8gZ2VuZXJhdGVzIHRoZSByaWdodCBlcnJvciBtZXNzYWdlLgotVEVTVF9GKE1peGVkVXBUZXN0
Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAotICAgICAgIFRoZVNlY29uZFRlc3RXaXRoVGhpc05h
bWVTaG91bGRGYWlsKSB7fQotCi19ICAvLyBuYW1lc3BhY2UgYmFyCi0KLS8vIFRoZSBmb2xsb3dp
bmcgdHdvIHRlc3QgY2FzZXMgdmVyaWZ5IHRoYXQgR29vZ2xlIFRlc3QgY2F0Y2hlcyB0aGUgdXNl
cgotLy8gZXJyb3Igb2YgbWl4aW5nIFRFU1QgYW5kIFRFU1RfRiBpbiB0aGUgc2FtZSB0ZXN0IGNh
c2UuICBUaGUgZmlyc3QKLS8vIHRlc3QgY2FzZSBjaGVja3MgdGhlIHNjZW5hcmlvIHdoZXJlIFRF
U1RfRiBhcHBlYXJzIGJlZm9yZSBURVNULCBhbmQKLS8vIHRoZSBzZWNvbmQgb25lIGNoZWNrcyB3
aGVyZSBURVNUIGFwcGVhcnMgYmVmb3JlIFRFU1RfRi4KLQotY2xhc3MgVEVTVF9GX2JlZm9yZV9U
RVNUX2luX3NhbWVfdGVzdF9jYXNlIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVEVT
VF9GKFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSwgRGVmaW5lZFVzaW5nVEVT
VF9GKSB7fQotCi0vLyBFeHBlY3RlZCB0byBmYWlsLiAgV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZp
bGUgdG8gY2hlY2sgdGhhdCBHb29nbGUgVGVzdAotLy8gZ2VuZXJhdGVzIHRoZSByaWdodCBlcnJv
ciBtZXNzYWdlLgotVEVTVChURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UsIERl
ZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsKSB7fQotCi1jbGFzcyBURVNUX2JlZm9yZV9URVNU
X0ZfaW5fc2FtZV90ZXN0X2Nhc2UgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1URVNU
KFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZSwgRGVmaW5lZFVzaW5nVEVTVCkg
e30KLQotLy8gRXhwZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRv
IGNoZWNrIHRoYXQgR29vZ2xlIFRlc3QKLS8vIGdlbmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVz
c2FnZS4KLVRFU1RfRihURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UsIERlZmlu
ZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwpIHsKLX0KLQotLy8gVXNlZCBmb3IgdGVzdGluZyBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGFuZCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpLgotaW50
IGdsb2JhbF9pbnRlZ2VyID0gMDsKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSgpIGNhbiByZWZlcmVuY2UgZ2xvYmFsIHZhcmlhYmxlcy4KLVRFU1QoRXhwZWN0Tm9uZmF0
YWxGYWlsdXJlVGVzdCwgQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzKSB7Ci0gIGdsb2JhbF9p
bnRlZ2VyID0gMDsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIEVYUEVDVF9FUSgx
LCBnbG9iYWxfaW50ZWdlcikgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7Ci0gIH0s
ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVuY2UgbG9jYWwgdmFyaWFibGVzCi0vLyAo
c3RhdGljIG9yIG5vdCkuCi1URVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIENhblJlZmVy
ZW5jZUxvY2FsVmFyaWFibGVzKSB7Ci0gIGludCBtID0gMDsKLSAgc3RhdGljIGludCBuOwotICBu
ID0gMTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIEVYUEVDVF9FUShtLCBuKSA8
PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKLSAgfSwgIkV4cGVjdGVkIG5vbi1mYXRh
bCBmYWlsdXJlLiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KCkgc3VjY2VlZHMgd2hlbiB0aGVyZSBpcyBleGFjdGx5Ci0vLyBvbmUgbm9uLWZhdGFsIGZhaWx1
cmUgYW5kIG5vIGZhdGFsIGZhaWx1cmUuCi1URVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qs
IFN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoewotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBm
YWlsdXJlLiI7Ci0gIH0sICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgaXMg
bm8KLS8vIG5vbi1mYXRhbCBmYWlsdXJlLgotVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LCBGYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUpIHsKLSAgcHJpbnRmKCIoZXhwZWN0
aW5nIGEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gIH0sICIi
KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdo
ZW4gdGhlcmUgYXJlIHR3bwotLy8gbm9uLWZhdGFsIGZhaWx1cmVzLgotVEVTVChFeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMpIHsK
LSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRSh7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUgMS4iOwotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
IDIuIjsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBvbmUgZmF0YWwKLS8vIGZhaWx1cmUuCi1URVNUKEV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUp
IHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSh7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7Ci0g
IH0sICIiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZh
aWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWluZwotLy8gdGVzdGVkIHJldHVybnMuCi1URVNUKEV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblN0YXRlbWVudFJldHVybnMpIHsKLSAg
cHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSh7Ci0gICAgcmV0dXJuOwotICB9LCAiIik7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfRVhDRVBU
SU9OUwotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hl
biB0aGUgc3RhdGVtZW50IGJlaW5nCi0vLyB0ZXN0ZWQgdGhyb3dzLgotVEVTVChFeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MpIHsKLSAgcHJpbnRmKCIo
ZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICB0cnkgewotICAgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKHsKLSAgICAgIHRocm93IDA7Ci0gICAgfSwgIiIpOwotICB9IGNhdGNoKGludCkgeyAg
Ly8gTk9MSU5UCi0gIH0KLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUwotCi0v
LyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgY2FuIHJlZmVyZW5jZSBnbG9iYWwg
dmFyaWFibGVzLgotVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBDYW5SZWZlcmVuY2VHbG9i
YWxWYXJpYWJsZXMpIHsKLSAgZ2xvYmFsX2ludGVnZXIgPSAwOwotICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRSh7Ci0gICAgQVNTRVJUX0VRKDEsIGdsb2JhbF9pbnRlZ2VyKSA8PCAiRXhwZWN0ZWQgZmF0
YWwgZmFpbHVyZS4iOwotICB9LCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVuY2UgbG9jYWwgc3Rh
dGljCi0vLyB2YXJpYWJsZXMuCi1URVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIENhblJlZmVy
ZW5jZUxvY2FsU3RhdGljVmFyaWFibGVzKSB7Ci0gIHN0YXRpYyBpbnQgbjsKLSAgbiA9IDE7Ci0g
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKLSAgICBBU1NFUlRfRVEoMCwgbikgPDwgIkV4cGVjdGVk
IGZhdGFsIGZhaWx1cmUuIjsKLSAgfSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBzdWNjZWVkcyB3aGVuIHRoZXJl
IGlzIGV4YWN0bHkKLS8vIG9uZSBmYXRhbCBmYWlsdXJlIGFuZCBubyBub24tZmF0YWwgZmFpbHVy
ZS4KLVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgU3VjY2VlZHNXaGVuVGhlcmVJc09uZUZh
dGFsRmFpbHVyZSkgewotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0gICAgRkFJTCgpIDw8ICJF
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7Ci0gIH0sICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIp
OwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0
aGVyZSBpcyBubyBmYXRhbAotLy8gZmFpbHVyZS4KLVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVz
dCwgRmFpbHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlKSB7Ci0gIHByaW50ZigiKGV4cGVjdGlu
ZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICB9LCAiIik7Ci19
Ci0KLS8vIEEgaGVscGVyIGZvciBnZW5lcmF0aW5nIGEgZmF0YWwgZmFpbHVyZS4KLXZvaWQgRmF0
YWxGYWlsdXJlKCkgewotICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKLX0K
LQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUg
YXJlIHR3bwotLy8gZmF0YWwgZmFpbHVyZXMuCi1URVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qs
IEZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcykgewotICBwcmludGYoIihleHBlY3Rp
bmcgYSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKLSAgICBGYXRhbEZh
aWx1cmUoKTsKLSAgICBGYXRhbEZhaWx1cmUoKTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyB0
aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBvbmUgbm9uLWZh
dGFsCi0vLyBmYWlsdXJlLgotVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5U
aGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1
cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICAgIEFERF9GQUlMVVJFKCkgPDwg
IkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWlu
ZwotLy8gdGVzdGVkIHJldHVybnMuCi1URVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEZhaWxz
V2hlblN0YXRlbWVudFJldHVybnMpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlc
biIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0gICAgcmV0dXJuOwotICB9LCAiIik7Ci19
Ci0KLSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRB
TF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGUgc3RhdGVtZW50IGJlaW5nCi0vLyB0ZXN0ZWQgdGhy
b3dzLgotVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRUaHJv
d3MpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICB0cnkgewotICAg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKLSAgICAgIHRocm93IDA7Ci0gICAgfSwgIiIpOwotICB9
IGNhdGNoKGludCkgeyAgLy8gTk9MSU5UCi0gIH0KLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNf
RVhDRVBUSU9OUwotCi0vLyBUaGlzICNpZmRlZiBibG9jayB0ZXN0cyB0aGUgb3V0cHV0IG9mIHR5
cGVkIHRlc3RzLgotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUCi0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotY2xhc3MgVHlwZWRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVFlQ
RURfVEVTVF9DQVNFKFR5cGVkVGVzdCwgdGVzdGluZzo6VHlwZXM8aW50Pik7Ci0KLVRZUEVEX1RF
U1QoVHlwZWRUZXN0LCBTdWNjZXNzKSB7Ci0gIEVYUEVDVF9FUSgwLCBUeXBlUGFyYW0oKSk7Ci19
Ci0KLVRZUEVEX1RFU1QoVHlwZWRUZXN0LCBGYWlsdXJlKSB7Ci0gIEVYUEVDVF9FUSgxLCBUeXBl
UGFyYW0oKSkgPDwgIkV4cGVjdGVkIGZhaWx1cmUiOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hB
U19UWVBFRF9URVNUCi0KLS8vIFRoaXMgI2lmZGVmIGJsb2NrIHRlc3RzIHRoZSBvdXRwdXQgb2Yg
dHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUX1AKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBUeXBlZFRlc3RQIDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgewotfTsKLQotVFlQRURfVEVTVF9DQVNFX1AoVHlwZWRUZXN0UCk7Ci0KLVRZUEVEX1RF
U1RfUChUeXBlZFRlc3RQLCBTdWNjZXNzKSB7Ci0gIEVYUEVDVF9FUSgwVSwgVHlwZVBhcmFtKCkp
OwotfQotCi1UWVBFRF9URVNUX1AoVHlwZWRUZXN0UCwgRmFpbHVyZSkgewotICBFWFBFQ1RfRVEo
MVUsIFR5cGVQYXJhbSgpKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7Ci19Ci0KLVJFR0lTVEVSX1RZ
UEVEX1RFU1RfQ0FTRV9QKFR5cGVkVGVzdFAsIFN1Y2Nlc3MsIEZhaWx1cmUpOwotCi10eXBlZGVm
IHRlc3Rpbmc6OlR5cGVzPHVuc2lnbmVkIGNoYXIsIHVuc2lnbmVkIGludD4gVW5zaWduZWRUeXBl
czsKLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFVuc2lnbmVkLCBUeXBlZFRlc3RQLCBV
bnNpZ25lZFR5cGVzKTsKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KLSNp
ZiBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi0vLyBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmlsZSB0
byB2ZXJpZnkgdGhhdCB0ZXN0cyB3aG9zZSB0ZXN0IGNhc2UKLS8vIG5hbWUgZW5kcyB3aXRoIERl
YXRoVGVzdCBhcmUgcnVuIGZpcnN0LgotCi1URVNUKEFEZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0
KSB7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAotCi0vLyBXZSByZWx5IG9uIHRoZSBn
b2xkZW4gZmlsZSB0byB2ZXJpZnkgdGhhdCB0eXBlZCB0ZXN0cyB3aG9zZSB0ZXN0Ci0vLyBjYXNl
IG5hbWUgZW5kcyB3aXRoIERlYXRoVGVzdCBhcmUgcnVuIGZpcnN0LgotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KLWNsYXNzIEFUeXBlZERlYXRoVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
LX07Ci0KLXR5cGVkZWYgdGVzdGluZzo6VHlwZXM8aW50LCBkb3VibGU+IE51bWVyaWNUeXBlczsK
LVRZUEVEX1RFU1RfQ0FTRShBVHlwZWREZWF0aFRlc3QsIE51bWVyaWNUeXBlcyk7Ci0KLVRZUEVE
X1RFU1QoQVR5cGVkRGVhdGhUZXN0LCBTaG91bGRSdW5GaXJzdCkgewotfQotCi0jZW5kaWYgIC8v
IEdURVNUX0hBU19UWVBFRF9URVNUCi0KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KLQot
Ly8gV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gdmVyaWZ5IHRoYXQgdHlwZS1wYXJhbWV0
ZXJpemVkIHRlc3RzCi0vLyB3aG9zZSB0ZXN0IGNhc2UgbmFtZSBlbmRzIHdpdGggRGVhdGhUZXN0
IGFyZSBydW4gZmlyc3QuCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgQVR5cGVQYXJh
bURlYXRoVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FT
RV9QKEFUeXBlUGFyYW1EZWF0aFRlc3QpOwotCi1UWVBFRF9URVNUX1AoQVR5cGVQYXJhbURlYXRo
VGVzdCwgU2hvdWxkUnVuRmlyc3QpIHsKLX0KLQotUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1Ao
QVR5cGVQYXJhbURlYXRoVGVzdCwgU2hvdWxkUnVuRmlyc3QpOwotCi1JTlNUQU5USUFURV9UWVBF
RF9URVNUX0NBU0VfUChNeSwgQVR5cGVQYXJhbURlYXRoVGVzdCwgTnVtZXJpY1R5cGVzKTsKLQot
I2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X0RFQVRIX1RFU1QKLQotLy8gVGVzdHMgdmFyaW91cyBmYWlsdXJlIGNvbmRpdGlvbnMgb2YKLS8v
IEVYUEVDVF97LE5PTn1GQVRBTF9GQUlMVVJFeyxfT05fQUxMX1RIUkVBRFN9LgotY2xhc3MgRXhw
ZWN0RmFpbHVyZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHVibGljOiAgLy8gTXVz
dCBiZSBwdWJsaWMgYW5kIG5vdCBwcm90ZWN0ZWQgZHVlIHRvIGEgYnVnIGluIGcrKyAzLjQuMi4K
LSAgZW51bSBGYWlsdXJlTW9kZSB7Ci0gICAgRkFUQUxfRkFJTFVSRSwKLSAgICBOT05GQVRBTF9G
QUlMVVJFCi0gIH07Ci0gIHN0YXRpYyB2b2lkIEFkZEZhaWx1cmUoRmFpbHVyZU1vZGUgZmFpbHVy
ZSkgewotICAgIGlmIChmYWlsdXJlID09IEZBVEFMX0ZBSUxVUkUpIHsKLSAgICAgIEZBSUwoKSA8
PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOwotICAgIH0gZWxzZSB7Ci0gICAgICBBRERfRkFJ
TFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOwotICAgIH0KLSAgfQotfTsK
LQotVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3RGYXRhbEZhaWx1cmUpIHsKLSAgLy8g
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0IHN1Y2NlZWRzLgotICBwcmludGYoIihleHBlY3Rp
bmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKFNVQ0NFRUQoKSwgIkV4
cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Ci0gIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1
dCBnb3QgYSBub24tZmF0YWwgZmFpbHVyZS4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVy
ZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxV
UkUpLCAiRXhwZWN0ZWQgbm9uLWZhdGFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgImZhaWx1
cmUuIik7Ci0gIC8vIFdyb25nIG1lc3NhZ2UuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1
cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJF
KSwgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICJl
eHBlY3RlZC4iKTsKLX0KLQotVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3ROb25GYXRh
bEZhaWx1cmUpIHsKLSAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVk
cy4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShTVUNDRUVEKCksICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKLSAg
Ly8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBmYXRhbCBmYWlsdXJlLgot
ICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJl
LiIpOwotICAvLyBXcm9uZyBtZXNzYWdlLgotICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJl
KVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJ
TFVSRSksICJTb21lIG90aGVyIG5vbi1mYXRhbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICJmYWlsdXJlLiIpOwotfQotCi0jaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQotCi1jbGFzcyBFeHBl
Y3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0IDogcHVibGljIEV4cGVjdEZhaWx1cmVUZXN0IHsKLSBw
cm90ZWN0ZWQ6Ci0gIHN0YXRpYyB2b2lkIEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZhaWx1cmVN
b2RlIGZhaWx1cmUpIHsKLSAgICBUaHJlYWRXaXRoUGFyYW08RmFpbHVyZU1vZGU+IHRocmVhZCgm
QWRkRmFpbHVyZSwgZmFpbHVyZSwgTlVMTCk7Ci0gICAgdGhyZWFkLkpvaW4oKTsKLSAgfQotfTsK
LQotVEVTVF9GKEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QsIEV4cGVjdEZhdGFsRmFpbHVy
ZSkgewotICAvLyBXZSBvbmx5IGludGVyY2VwdCB0aGUgY3VycmVudCB0aHJlYWQuCi0gIHByaW50
ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFk
ZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZBVEFMX0ZBSUxVUkUpLAotICAgICAgICAgICAgICAgICAg
ICAgICAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotVEVTVF9GKEV4cGVjdEZhaWx1
cmVXaXRoVGhyZWFkc1Rlc3QsIEV4cGVjdE5vbkZhdGFsRmFpbHVyZSkgewotICAvLyBXZSBvbmx5
IGludGVyY2VwdCB0aGUgY3VycmVudCB0aHJlYWQuCi0gIHByaW50ZigiKGV4cGVjdGluZyAyIGZh
aWx1cmVzKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmVJbk90aGVy
VGhyZWFkKE5PTkZBVEFMX0ZBSUxVUkUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhw
ZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7Ci19Ci0KLXR5cGVkZWYgRXhwZWN0RmFpbHVyZVdp
dGhUaHJlYWRzVGVzdCBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3Q7Ci0KLS8v
IFRlc3RzIHRoYXQgdGhlIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyIG9ubHkgY2F0
Y2hlcyBmYWlsdXJlcyBmcm9tCi0vLyB0aGUgY3VycmVudCB0aHJlYWQgaWYgaXQgaXMgaW5zdGFu
dGlhdGVkIHdpdGggSU5URVJDRVBUX09OTFlfQ1VSUkVOVF9USFJFQUQuCi1URVNUX0YoU2NvcGVk
RmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LCBJbnRlcmNlcHRPbmx5Q3VycmVudFRocmVh
ZCkgewotICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOwotICBUZXN0UGFydFJl
c3VsdEFycmF5IHJlc3VsdHM7Ci0gIHsKLSAgICBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBv
cnRlciByZXBvcnRlcigKLSAgICAgICAgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6
OklOVEVSQ0VQVF9PTkxZX0NVUlJFTlRfVEhSRUFELAotICAgICAgICAmcmVzdWx0cyk7Ci0gICAg
QWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoRkFUQUxfRkFJTFVSRSk7Ci0gICAgQWRkRmFpbHVyZUlu
T3RoZXJUaHJlYWQoTk9ORkFUQUxfRkFJTFVSRSk7Ci0gIH0KLSAgLy8gVGhlIHR3byBmYWlsdXJl
cyBzaG91bGQgbm90IGhhdmUgYmVlbiBpbnRlcmNlcHRlZC4KLSAgRVhQRUNUX0VRKDAsIHJlc3Vs
dHMuc2l6ZSgpKSA8PCAiVGhpcyBzaG91bGRuJ3QgZmFpbC4iOwotfQotCi0jZW5kaWYgIC8vIEdU
RVNUX0lTX1RIUkVBRFNBRkUKLQotVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3RGYXRh
bEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKLSAgLy8gRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0
IHN1Y2NlZWRzLgotICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVD
VF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKFNVQ0NFRUQoKSwgIkV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuIik7Ci0gIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBub24t
ZmF0YWwgZmFpbHVyZS4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlKE5PTkZBVEFMX0ZB
SUxVUkUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQg
bm9uLWZhdGFsIGZhaWx1cmUuIik7Ci0gIC8vIFdyb25nIG1lc3NhZ2UuCi0gIHByaW50ZigiKGV4
cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RI
UkVBRFMoQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJFKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBlY3RlZC4iKTsKLX0K
LQotVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRo
cmVhZHMpIHsKLSAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4K
LSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRV9PTl9BTExfVEhSRUFEUyhTVUNDRUVEKCksICJFeHBlY3RlZCBub24tZmF0YWwgIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbHVyZS4iKTsKLSAg
Ly8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBmYXRhbCBmYWlsdXJlLgot
ICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJl
LiIpOwotICAvLyBXcm9uZyBtZXNzYWdlLgotICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJl
KVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1
cmUoTk9ORkFUQUxfRkFJTFVSRSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJTb21lIG90aGVyIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwotfQotCi0KLS8vIFR3byB0
ZXN0IGVudmlyb25tZW50cyBmb3IgdGVzdGluZyB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJv
bm1lbnQoKS4KLQotY2xhc3MgRm9vRW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6RW52aXJv
bm1lbnQgewotIHB1YmxpYzoKLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIHByaW50Zigi
JXMiLCAiRm9vRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLlxuIik7Ci0gIH0KLQotICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgcHJpbnRmKCIlcyIsICJGb29FbnZpcm9ubWVudDo6
VGVhckRvd24oKSBjYWxsZWQuXG4iKTsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZh
aWx1cmUuIjsKLSAgfQotfTsKLQotY2xhc3MgQmFyRW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGlu
Zzo6RW52aXJvbm1lbnQgewotIHB1YmxpYzoKLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAg
IHByaW50ZigiJXMiLCAiQmFyRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLlxuIik7Ci0gIH0K
LQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgcHJpbnRmKCIlcyIsICJCYXJFbnZp
cm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuXG4iKTsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJF
eHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOwotICB9Ci19OwotCi1HVEVTVF9ERUZJTkVfYm9v
bF8oaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzLCBmYWxzZSwKLSAg
ICAgICAgICAgICAgICAgICAiVGhpcyBmbGFnIGNhdXNlcyB0aGUgcHJvZ3JhbSB0byBza2lwIHRl
c3QgZW52aXJvbm1lbnQgIgotICAgICAgICAgICAgICAgICAgICJ0ZXN0cyBhbmQgYWQgaG9jIHRl
c3RzLiIpOwotCi0vLyBUaGUgbWFpbiBmdW5jdGlvbi4KLS8vCi0vLyBUaGUgaWRlYSBpcyB0byB1
c2UgR29vZ2xlIFRlc3QgdG8gcnVuIGFsbCB0aGUgdGVzdHMgd2UgaGF2ZSBkZWZpbmVkIChzb21l
Ci0vLyBvZiB0aGVtIGFyZSBpbnRlbmRlZCB0byBmYWlsKSwgYW5kIHRoZW4gY29tcGFyZSB0aGUg
dGVzdCByZXN1bHRzCi0vLyB3aXRoIHRoZSAiZ29sZGVuIiBmaWxlLgotaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIgKiphcmd2KSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUcocHJpbnRfdGltZSkgPSBm
YWxzZTsKLQotICAvLyBXZSBqdXN0IHJ1biB0aGUgdGVzdHMsIGtub3dpbmcgc29tZSBvZiB0aGVt
IGFyZSBpbnRlbmRlZCB0byBmYWlsLgotICAvLyBXZSB3aWxsIHVzZSBhIHNlcGFyYXRlIFB5dGhv
biBzY3JpcHQgdG8gY29tcGFyZSB0aGUgb3V0cHV0IG9mCi0gIC8vIHRoaXMgcHJvZ3JhbSB3aXRo
IHRoZSBnb2xkZW4gZmlsZS4KLQotICAvLyBJdCdzIGhhcmQgdG8gdGVzdCBJbml0R29vZ2xlVGVz
dCgpIGRpcmVjdGx5LCBhcyBpdCBoYXMgbWFueQotICAvLyBnbG9iYWwgc2lkZSBlZmZlY3RzLiAg
VGhlIGZvbGxvd2luZyBsaW5lIHNlcnZlcyBhcyBhIHNhbml0eSB0ZXN0Ci0gIC8vIGZvciBpdC4K
LSAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotICBpZiAoYXJnYyA+PSAy
ICYmCi0gICAgICBTdHJpbmcoYXJndlsxXSkgPT0gIi0tZ3Rlc3RfaW50ZXJuYWxfc2tpcF9lbnZp
cm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzIikKLSAgICBHVEVTVF9GTEFHKGludGVybmFsX3NraXBf
ZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cykgPSB0cnVlOwotCi0jaWYgR1RFU1RfSEFTX0RF
QVRIX1RFU1QKLSAgaWYgKHRlc3Rpbmc6OmludGVybmFsOjpHVEVTVF9GTEFHKGludGVybmFsX3J1
bl9kZWF0aF90ZXN0KSAhPSAiIikgewotICAgIC8vIFNraXAgdGhlIHVzdWFsIG91dHB1dCBjYXB0
dXJpbmcgaWYgd2UncmUgcnVubmluZyBhcyB0aGUgY2hpbGQKLSAgICAvLyBwcm9jZXNzIG9mIGFu
IHRocmVhZHNhZmUtc3R5bGUgZGVhdGggdGVzdC4KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gICAg
cG9zaXg6OkZSZW9wZW4oIm51bDoiLCAidyIsIHN0ZG91dCk7Ci0jZWxzZQotICAgIHBvc2l4OjpG
UmVvcGVuKCIvZGV2L251bGwiLCAidyIsIHN0ZG91dCk7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1MKLSAgICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotICB9Ci0jZW5kaWYgIC8vIEdURVNU
X0hBU19ERUFUSF9URVNUCi0KLSAgaWYgKEdURVNUX0ZMQUcoaW50ZXJuYWxfc2tpcF9lbnZpcm9u
bWVudF9hbmRfYWRfaG9jX3Rlc3RzKSkKLSAgICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotCi0g
IC8vIFJlZ2lzdGVycyB0d28gZ2xvYmFsIHRlc3QgZW52aXJvbm1lbnRzLgotICAvLyBUaGUgZ29s
ZGVuIGZpbGUgdmVyaWZpZXMgdGhhdCB0aGV5IGFyZSBzZXQgdXAgaW4gdGhlIG9yZGVyIHRoZXkK
LSAgLy8gYXJlIHJlZ2lzdGVyZWQsIGFuZCB0b3JuIGRvd24gaW4gdGhlIHJldmVyc2Ugb3JkZXIu
Ci0gIHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgRm9vRW52aXJvbm1lbnQp
OwotICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEJhckVudmlyb25tZW50
KTsKLQotICByZXR1cm4gUnVuQWxsVGVzdHMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzYwNDM3YWNhYTc2NDBkZmJmM2RiMjgz
Y2YxZDE1MDM0YzA2MjJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29s
ZGVuX2xpbi50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2OTYgKzAsMCBAQAotVGhlIG5vbi10ZXN0
IHBhcnQgb2YgdGhlIGNvZGUgaXMgZXhwZWN0ZWQgdG8gaGF2ZSAyIGZhaWx1cmVzLgotCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IGZhbHNlCi0gIEFjdHVhbDog
ZmFsc2UKLUV4cGVjdGVkOiB0cnVlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQot
VmFsdWUgb2Y6IDMKLUV4cGVjdGVkOiAyCi0bWzA7MzJtWz09PT09PT09PT1dIBtbbVJ1bm5pbmcg
NjAgdGVzdHMgZnJvbSAyNSB0ZXN0IGNhc2VzLgotG1swOzMybVstLS0tLS0tLS0tXSAbW21HbG9i
YWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCi1Gb29FbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxs
ZWQuCi1CYXJFbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuCi0bWzA7MzJtWy0tLS0tLS0tLS1d
IBtbbTEgdGVzdCBmcm9tIEFEZWF0aFRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttQURlYXRo
VGVzdC5TaG91bGRSdW5GaXJzdAotG1swOzMybVsgICAgICAgT0sgXSAbW21BRGVhdGhUZXN0LlNo
b3VsZFJ1bkZpcnN0Ci0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEFUeXBlZERl
YXRoVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
QVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAgIE9LIF0gG1tt
QVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1tt
MSB0ZXN0IGZyb20gQVR5cGVkRGVhdGhUZXN0LzEsIHdoZXJlIFR5cGVQYXJhbSA9IGRvdWJsZQot
G1swOzMybVsgUlVOICAgICAgXSAbW21BVHlwZWREZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAot
G1swOzMybVsgICAgICAgT0sgXSAbW21BVHlwZWREZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAot
G1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBNeS9BVHlwZVBhcmFtRGVhdGhUZXN0
LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGludAotG1swOzMybVsgUlVOICAgICAgXSAbW21NeS9BVHlw
ZVBhcmFtRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAgIE9LIF0gG1tt
TXkvQVR5cGVQYXJhbURlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJtWy0tLS0tLS0t
LS1dIBtbbTEgdGVzdCBmcm9tIE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMSwgd2hlcmUgVHlwZVBh
cmFtID0gZG91YmxlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU15L0FUeXBlUGFyYW1EZWF0aFRl
c3QvMS5TaG91bGRSdW5GaXJzdAotG1swOzMybVsgICAgICAgT0sgXSAbW21NeS9BVHlwZVBhcmFt
RGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0
cyBmcm9tIFBhc3NpbmdUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVBhc3NpbmdUZXN0LlBh
c3NpbmdUZXN0MQotG1swOzMybVsgICAgICAgT0sgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5nVGVz
dDEKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi0bWzA7
MzJtWyAgICAgICBPSyBdIBtbbVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgotG1swOzMybVstLS0t
LS0tLS0tXSAbW20zIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdAotG1swOzMybVsgUlVOICAg
ICAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotKGV4cGVj
dGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IEZhaWx1cmUKLVZhbHVlIG9mOiB4Ci0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLRtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRp
bmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJ
bk5lc3RlZFN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUg
MSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogeAotICBBY3R1
YWw6IDIKLUV4cGVjdGVkOiAxCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRl
c3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi0bWzA7MzJtWyBSVU4gICAgICBdIBtb
bUZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5n
IGEgZmFpbHVyZSBvbiBmYWxzZSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1W
YWx1ZSBvZjogZmFsc2UKLSAgQWN0dWFsOiBmYWxzZQotRXhwZWN0ZWQ6IHRydWUKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRp
bmUKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gTG9nZ2luZ1Rlc3QKLRtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2Vy
dGlvbnMKLShleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKQotaSA9PSAwCi1p
ID09IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogKDMpID49
IChhW2ldKSwgYWN0dWFsOiAzIHZzIDkKLWkgPT0gMgotaSA9PSAzCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA2
Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUxvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdB
bmRBc3NlcnRpb25zCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTYgdGVzdHMgZnJvbSBTQ09QRURf
VFJBQ0VUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuT2JleXNT
Y29wZXMKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1
cmUKLUZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkbid0IGhhdmUg
YSB0cmFjZS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLVRoaXMg
ZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBoYXZlIGEgdHJhY2UuCi1Hb29nbGUgVGVz
dCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBFeHBlY3RlZCB0cmFjZQotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVj
dGVkLCBhbmQgc2hvdWxkbid0IGhhdmUgYSB0cmFjZS4KLRtbMDszMW1bICBGQUlMRUQgIF0gG1tt
U0NPUEVEX1RSQUNFVGVzdC5PYmV5c1Njb3BlcwotG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09Q
RURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogbgotICBBY3R1YWw6IDEKLUV4cGVjdGVk
OiAyCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBpID0gMQot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiBuCi0gIEFjdHVhbDog
MgotRXhwZWN0ZWQ6IDEKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IGkgPSAyCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJ
bkxvb3AKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vi
cm91dGluZQotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFp
bHVyZQotVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAxCi1FeHBlY3RlZDogMgotR29vZ2xlIFRlc3Qg
dHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogbiA9IDEKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogbgotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1H
b29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBuID0gMgotG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJyb3V0aW5lCi0bWzA7
MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLShleHBlY3Rl
ZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiBu
Ci0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IG4gPSAyCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogCi0bWzA7MzFt
WyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLRtbMDszMm1bIFJV
TiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZVJlcGVhdGVkCi0oZXhwZWN0ZWQgdG8g
ZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLVRoaXMgZmFp
bHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEuCi1Hb29n
bGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBBCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFu
ZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBIGFuZCBCLgotR29vZ2xlIFRlc3QgdHJhY2U6
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEEK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLVRoaXMgZmFpbHVyZSBp
cyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEsIEIsIGFuZCBDLgot
R29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQwotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IEIKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBBCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQs
IGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQgRC4KLUdvb2dsZSBUZXN0
IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEQKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBCCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQQotG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
U0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0NvbmN1cnJlbnRseQotKGV4cGVjdGluZyA2IGZhaWx1cmVz
KQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFp
bHVyZSAjMSAoaW4gdGhyZWFkIEIsIG9ubHkgdHJhY2UgQiBhbGl2ZSkuCi1Hb29nbGUgVGVzdCB0
cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBUcmFjZSBCCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyIChpbiB0aHJlYWQg
QSwgdHJhY2UgQSAmIEIgYm90aCBhbGl2ZSkuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBUcmFjZSBBCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVy
ZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzIChpbiB0aHJlYWQgQiwgdHJhY2UgQSAmIEIg
Ym90aCBhbGl2ZSkuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBUcmFjZSBCCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBl
Y3RlZCBmYWlsdXJlICM0IChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBBIGFsaXZlKS4KLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzUg
KGluIHRocmVhZCBBLCBvbmx5IHRyYWNlIEEgYWxpdmUpLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogVHJhY2UgQQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjNiAoaW4gdGhyZWFkIEEsIG5vIHRy
YWNlIGFsaXZlKS4KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jr
c0NvbmN1cnJlbnRseQotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBOb25GYXRh
bEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
Tm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVj
dG9yCi0oZXhwZWN0aW5nIDUgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFp
bHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGMn
dG9yLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQg
ZmFpbHVyZSAjMiwgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGJvZHkuCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICM0LCBp
biBUZWFyRG93bi4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4
cGVjdGVkIGZhaWx1cmUgIzUsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi0bWzA7MzFtWyAg
RkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWls
dXJlSW5Db25zdHJ1Y3RvcgotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBGYXRh
bEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
RmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9y
Ci0oZXhwZWN0aW5nIDIgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVy
ZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGMndG9y
LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFp
bHVyZSAjMiwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVj
dG9yCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIE5vbkZhdGFsRmFpbHVyZUlu
U2V0VXBUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluU2V0VXBU
ZXN0LkZhaWx1cmVJblNldFVwCi0oZXhwZWN0aW5nIDQgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRV
cCgpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQg
ZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZnVuY3Rpb24uCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzLCBpbiBUZWFyRG93bigpLgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVy
ZSAjNCwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLRtbMDszMW1bICBGQUlMRUQgIF0gG1tt
Tm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKLRtbMDszMm1bLS0tLS0t
LS0tLV0gG1ttMSB0ZXN0IGZyb20gRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QKLRtbMDszMm1bIFJV
TiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKLShleHBl
Y3RpbmcgMyBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWls
ZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigp
LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFp
bHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKLRtbMDszMm1bLS0tLS0t
LS0tLV0gG1ttNCB0ZXN0cyBmcm9tIE1peGVkVXBUZXN0Q2FzZVRlc3QKLRtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5GaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vCi0b
WzA7MzJtWyAgICAgICBPSyBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuRmlyc3RUZXN0RnJvbU5h
bWVzcGFjZUZvbwotG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlNl
Y29uZFRlc3RGcm9tTmFtZXNwYWNlRm9vCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbU1peGVkVXBU
ZXN0Q2FzZVRlc3QuU2Vjb25kVGVzdEZyb21OYW1lc3BhY2VGb28KLRtbMDszMm1bIFJVTiAgICAg
IF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogRmFp
bHVyZQotRmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRo
ZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRV
cFRlc3RDYXNlVGVzdCwKLXlvdSBkZWZpbmVkIHRlc3QgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZv
byBhbmQgdGVzdCBUaGlzU2hvdWxkRmFpbAotdXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1
cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBlbiBpZgotdGhlIHR3byBjbGFzc2VzIGFyZSBmcm9t
IGRpZmZlcmVudCBuYW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCi11bml0cyBhbmQgaGF2ZSB0aGUg
c2FtZSBuYW1lLiAgWW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25lCi1vZiB0aGUgY2xhc3Nl
cyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMuCi0bWzA7MzFtWyAg
RkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwKLRtbMDszMm1b
IFJVTiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbFRvbwotZ3Rl
c3QuY2M6IzogRmFpbHVyZQotRmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNl
IG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0
IGNhc2UgTWl4ZWRVcFRlc3RDYXNlVGVzdCwKLXlvdSBkZWZpbmVkIHRlc3QgRmlyc3RUZXN0RnJv
bU5hbWVzcGFjZUZvbyBhbmQgdGVzdCBUaGlzU2hvdWxkRmFpbFRvbwotdXNpbmcgdHdvIGRpZmZl
cmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBlbiBpZgotdGhlIHR3byBj
bGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCi11bml0
cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAgWW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25l
Ci1vZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2Fz
ZXMuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3Vs
ZEZhaWxUb28KLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIE1peGVkVXBUZXN0
Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBU
ZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91
bGRGYWlsCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVz
dE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCi0bWzA7MzJtWyBS
VU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29u
ZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1GYWlsZWQK
LUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBm
aXh0dXJlCi1jbGFzcy4gIEhvd2V2ZXIsIGluIHRlc3QgY2FzZSBNaXhlZFVwVGVzdENhc2VXaXRo
U2FtZVRlc3ROYW1lVGVzdCwKLXlvdSBkZWZpbmVkIHRlc3QgVGhlU2Vjb25kVGVzdFdpdGhUaGlz
TmFtZVNob3VsZEZhaWwgYW5kIHRlc3QgVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZh
aWwKLXVzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBo
YXBwZW4gaWYKLXRoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBv
ciB0cmFuc2xhdGlvbgotdW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQg
cHJvYmFibHkgcmVuYW1lIG9uZQotb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRv
IGRpZmZlcmVudCB0ZXN0IGNhc2VzLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVz
dENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxk
RmFpbAotG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVEVTVF9GX2JlZm9yZV9U
RVNUX2luX3NhbWVfdGVzdF9jYXNlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVRFU1RfRl9iZWZv
cmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0YKLRtbMDszMm1bICAg
ICAgIE9LIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRV
c2luZ1RFU1RfRgotG1swOzMybVsgUlVOICAgICAgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5f
c2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwKLWd0ZXN0LmNjOiM6
IEZhaWx1cmUKLUZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVz
ZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLCBzbyBtaXhpbmcgVEVTVF9GIGFuZCBURVNU
IGluIHRoZSBzYW1lIHRlc3QgY2FzZSBpcwotaWxsZWdhbC4gIEluIHRlc3QgY2FzZSBURVNUX0Zf
YmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UsCi10ZXN0IERlZmluZWRVc2luZ1RFU1RfRiBp
cyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKLXRlc3QgRGVmaW5lZFVzaW5nVEVTVEFuZFNob3Vs
ZEZhaWwgaXMgZGVmaW5lZCB1c2luZyBURVNULiAgWW91IHByb2JhYmx5Ci13YW50IHRvIGNoYW5n
ZSB0aGUgVEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0byBhbm90aGVyIHRlc3QKLWNhc2UuCi0b
WzA7MzFtWyAgRkFJTEVEICBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2Fz
ZS5EZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxkRmFpbAotG1swOzMybVstLS0tLS0tLS0tXSAbW20y
IHRlc3RzIGZyb20gVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlCi0bWzA7MzJt
WyBSVU4gICAgICBdIBtbbVRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZp
bmVkVXNpbmdURVNUCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbVRFU1RfYmVmb3JlX1RFU1RfRl9p
bl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUCi0bWzA7MzJtWyBSVU4gICAgICBdIBtb
bVRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZB
bmRTaG91bGRGYWlsCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUFsbCB0ZXN0cyBpbiB0
aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcywg
c28gbWl4aW5nIFRFU1RfRiBhbmQgVEVTVCBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgaXMKLWlsbGVn
YWwuICBJbiB0ZXN0IGNhc2UgVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLAot
dGVzdCBEZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsIGlzIGRlZmluZWQgdXNpbmcgVEVT
VF9GIGJ1dAotdGVzdCBEZWZpbmVkVXNpbmdURVNUIGlzIGRlZmluZWQgdXNpbmcgVEVTVC4gIFlv
dSBwcm9iYWJseQotd2FudCB0byBjaGFuZ2UgdGhlIFRFU1QgdG8gVEVTVF9GIG9yIG1vdmUgaXQg
dG8gYW5vdGhlciB0ZXN0Ci1jYXNlLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21URVNUX2JlZm9y
ZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFp
bAotG1swOzMybVstLS0tLS0tLS0tXSAbW204IHRlc3RzIGZyb20gRXhwZWN0Tm9uZmF0YWxGYWls
dXJlVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotG1swOzMy
bVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxv
Y2FsVmFyaWFibGVzCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVy
ZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxWYXJpYWJsZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
RXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1doZW5UaGVyZUlzT25lTm9uZmF0YWxG
YWlsdXJlCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qu
U3VjY2VlZHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAgICAg
XSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb05vbmZhdGFs
RmFpbHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBl
Y3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlz
Tm9Ob25mYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxG
YWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKLShleHBlY3Rp
bmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFs
IGZhaWx1cmUKLSAgQWN0dWFsOiAyIGZhaWx1cmVzCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
Tm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDEu
Ci0KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAot
RXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMi4KLQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21F
eHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvTm9uZmF0YWxGYWls
dXJlcwotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZh
aWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rl
c3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFs
OgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVj
dGVkIGZhdGFsIGZhaWx1cmUuCi0KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi0bWzA7MzJtWyBS
VU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50
UmV0dXJucwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBl
Y3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1l
bnRSZXR1cm5zCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRl
c3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0
LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDog
MCBmYWlsdXJlcwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVU
ZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotG1swOzMybVstLS0tLS0tLS0tXSAbW204IHRl
c3RzIGZyb20gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21F
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotG1swOzMy
bVsgICAgICAgT0sgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2Jh
bFZhcmlhYmxlcwotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0
LkNhblJlZmVyZW5jZUxvY2FsU3RhdGljVmFyaWFibGVzCi0bWzA7MzJtWyAgICAgICBPSyBdIBtb
bUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxTdGF0aWNWYXJpYWJsZXMK
LRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1do
ZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdEZh
dGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotG1swOzMy
bVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNO
b0ZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJl
Ci1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNO
b0ZhdGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcwotKGV4cGVjdGluZyBhIGZhaWx1
cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFj
dHVhbDogMiBmYWlsdXJlcwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6
Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi0b
WzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhl
cmVBcmVUd29GYXRhbEZhaWx1cmVzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFs
RmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotKGV4cGVjdGlu
ZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBmYXRhbCBmYWls
dXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVy
ZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLRtbMDszMW1bICBGQUlM
RUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0
YWxGYWlsdXJlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qu
RmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5j
YzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWls
dXJlcwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxz
V2hlblN0YXRlbWVudFJldHVybnMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLShleHBlY3RpbmcgYSBmYWlsdXJl
KQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1
YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0
ZXN0cyBmcm9tIFR5cGVkVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLRtbMDszMm1bIFJV
TiAgICAgIF0gG1ttVHlwZWRUZXN0LzAuU3VjY2VzcwotG1swOzMybVsgICAgICAgT0sgXSAbW21U
eXBlZFRlc3QvMC5TdWNjZXNzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVR5cGVkVGVzdC8wLkZh
aWx1cmUKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogVHlwZVBh
cmFtKCkKLSAgQWN0dWFsOiAwCi1FeHBlY3RlZDogMQotRXhwZWN0ZWQgZmFpbHVyZQotG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3QvMC5GYWlsdXJlCi0bWzA7MzJtWy0tLS0tLS0tLS1d
IBtbbTIgdGVzdHMgZnJvbSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAsIHdoZXJlIFR5cGVQYXJhbSA9
IHVuc2lnbmVkIGNoYXIKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0
UC8wLlN1Y2Nlc3MKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8w
LlN1Y2Nlc3MKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZh
aWx1cmUKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogVHlwZVBh
cmFtKCkKLSAgQWN0dWFsOiBcMAotRXhwZWN0ZWQ6IDFVCi1XaGljaCBpczogMQotRXhwZWN0ZWQg
ZmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFp
bHVyZQotG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVW5zaWduZWQvVHlwZWRU
ZXN0UC8xLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKLRtbMDszMm1bIFJVTiAgICAg
IF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1Y2Nlc3MKLRtbMDszMm1bICAgICAgIE9LIF0g
G1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1Y2Nlc3MKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
VW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBG
YWlsdXJlCi1WYWx1ZSBvZjogVHlwZVBhcmFtKCkKLSAgQWN0dWFsOiAwCi1FeHBlY3RlZDogMVUK
LVdoaWNoIGlzOiAxCi1FeHBlY3RlZCBmYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVVu
c2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTQgdGVz
dHMgZnJvbSBFeHBlY3RGYWlsdXJlVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RG
YWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rl
c3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2NlZWRlZAotCi0oZXhwZWN0aW5n
IDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1
cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJl
OgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQotKGV4cGVjdGluZyAxIGZh
aWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlIGNv
bnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBlY3RlZC4iCi0gIEFjdHVhbDoK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3Rl
ZCBmYXRhbCBmYWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVU
ZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWls
dXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rl
c3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFs
OgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1TdWNjZWVkZWQKLQotKGV4cGVj
dGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0
YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFp
bHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotKGV4cGVjdGluZyAxIGZh
aWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVy
ZSBjb250YWluaW5nICJTb21lIG90aGVyIG5vbi1mYXRhbCBmYWlsdXJlLiIKLSAgQWN0dWFsOgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBl
Y3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RG
YWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
RXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0oZXhwZWN0
aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZh
aWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1TdWNj
ZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBl
Y3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUu
Ci0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6
IDEgZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUgZXhw
ZWN0ZWQuIgotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVy
ZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLRtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWls
dXJlT25BbGxUaHJlYWRzCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1
cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBTdWNjZXNzOgotU3VjY2VlZGVkCi0KLShleHBlY3RpbmcgMSBmYWlsdXJl
KQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAg
QWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQK
LUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3Qu
Y2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAi
U29tZSBvdGhlciBub24tZmF0YWwgZmFpbHVyZS4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFs
IGZhaWx1cmUuCi0KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhw
ZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIg
dGVzdHMgZnJvbSBFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0Ci0bWzA7MzJtWyBSVU4gICAg
ICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCi0o
ZXhwZWN0aW5nIDIgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQot
RmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhw
ZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1bICBG
QUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3RGYXRhbEZhaWx1
cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5F
eHBlY3ROb25GYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgMiBmYWlsdXJlcykKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
LgotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAg
QWN0dWFsOiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVX
aXRoVGhyZWFkc1Rlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0bWzA7MzJtWy0tLS0tLS0tLS1d
IBtbbTEgdGVzdCBmcm9tIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdAotG1sw
OzMybVsgUlVOICAgICAgXSAbW21TY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3Qu
SW50ZXJjZXB0T25seUN1cnJlbnRUaHJlYWQKLShleHBlY3RpbmcgMiBmYWlsdXJlcykKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1
cmUuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBu
b24tZmF0YWwgZmFpbHVyZS4KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU2NvcGVkRmFrZVRlc3RQ
YXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCi0bWzA7MzJt
Wy0tLS0tLS0tLS1dIBtbbUdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgotQmFyRW52
aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZh
aWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi1Gb29FbnZpcm9ubWVu
dDo6VGVhckRvd24oKSBjYWxsZWQuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQot
RmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotG1swOzMybVs9PT09PT09PT09XSAbW202
MCB0ZXN0cyBmcm9tIDI1IHRlc3QgY2FzZXMgcmFuLgotG1swOzMybVsgIFBBU1NFRCAgXSAbW20y
MSB0ZXN0cy4KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttMzkgdGVzdHMsIGxpc3RlZCBiZWxvdzoK
LRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1
YnJvdXRpbmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZh
aWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWls
dXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5PYmV5c1Njb3BlcwotG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCi0bWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJblN1YnJvdXRpbmUKLRtbMDszMW1bICBGQUlM
RUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZU5lc3RlZAotG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0NvbmN1cnJlbnRseQotG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21Ob25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29u
c3RydWN0b3IKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29u
c3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtb
bU5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi0bWzA7MzFt
WyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwKLRtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbFRvbwot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVz
dC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVT
VEFuZFNob3VsZEZhaWwKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9G
X2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwKLRtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVy
ZUlzTm9Ob25mYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKLRtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVy
ZUlzT25lRmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFs
RmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRo
ZXJlSXNOb0ZhdGFsRmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcwotG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVOb25m
YXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVz
dC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVj
dEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbVR5cGVkVGVzdC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IGludAotG1sw
OzMxbVsgIEZBSUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZSwgd2hlcmUg
VHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21VbnNpZ25l
ZC9UeXBlZFRlc3RQLzEuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50Ci0b
WzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVy
ZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRh
bEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0
RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZh
aWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdEZhdGFsRmFpbHVy
ZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4
cGVjdE5vbkZhdGFsRmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TY29wZWRGYWtlVGVz
dFBhcnRSZXN1bHRSZXBvcnRlclRlc3QuSW50ZXJjZXB0T25seUN1cnJlbnRUaHJlYWQKLQotMzkg
RkFJTEVEIFRFU1RTCi0bWzA7MzNtICBZT1UgSEFWRSAxIERJU0FCTEVEIFRFU1QKLQotG1ttTm90
ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gRmF0YWxGYWlsdXJlVGVzdC4qOkxvZ2dpbmdUZXN0LioK
LVs9PT09PT09PT09XSBSdW5uaW5nIDQgdGVzdHMgZnJvbSAyIHRlc3QgY2FzZXMuCi1bLS0tLS0t
LS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDMgdGVz
dHMgZnJvbSBGYXRhbEZhaWx1cmVUZXN0Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5G
YXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91
bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogeAot
ICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5G
YXRhbEZhaWx1cmVJblN1YnJvdXRpbmUgKD8gbXMpCi1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJl
VGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJl
IHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1W
YWx1ZSBvZjogeAotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1bICBGQUlMRUQgIF0gRmF0YWxG
YWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUgKD8gbXMpCi1bIFJVTiAg
ICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLShleHBl
Y3RpbmcgYSBmYWlsdXJlIG9uIGZhbHNlKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1
cmUKLVZhbHVlIG9mOiBmYWxzZQotICBBY3R1YWw6IGZhbHNlCi1FeHBlY3RlZDogdHJ1ZQotWyAg
RkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lICg/
IG1zKQotWy0tLS0tLS0tLS1dIDMgdGVzdHMgZnJvbSBGYXRhbEZhaWx1cmVUZXN0ICg/IG1zIHRv
dGFsKQotCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTG9nZ2luZ1Rlc3QKLVsgUlVOICAgICAg
XSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotKGV4cGVjdGlu
ZyAyIGZhaWx1cmVzIG9uICgzKSA+PSAoYVtpXSkpCi1pID09IDAKLWkgPT0gMQotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6
IDMgdnMgOQotaSA9PSAyCi1pID09IDMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1FeHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDYKLVsgIEZBSUxFRCAgXSBM
b2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucyAoPyBtcykKLVstLS0t
LS0tLS0tXSAxIHRlc3QgZnJvbSBMb2dnaW5nVGVzdCAoPyBtcyB0b3RhbCkKLQotWy0tLS0tLS0t
LS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgotWz09PT09PT09PT1dIDQgdGVz
dHMgZnJvbSAyIHRlc3QgY2FzZXMgcmFuLiAoPyBtcyB0b3RhbCkKLVsgIFBBU1NFRCAgXSAwIHRl
c3RzLgotWyAgRkFJTEVEICBdIDQgdGVzdHMsIGxpc3RlZCBiZWxvdzoKLVsgIEZBSUxFRCAgXSBG
YXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotWyAgRkFJTEVEICBdIEZh
dGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi1bICBGQUlMRUQg
IF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLVsgIEZBSUxF
RCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotCi0gNCBG
QUlMRUQgVEVTVFMKLSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNUCi0KLU5vdGU6IEdvb2dsZSBU
ZXN0IGZpbHRlciA9ICpESVNBQkxFRF8qCi1bPT09PT09PT09PV0gUnVubmluZyAxIHRlc3QgZnJv
bSAxIHRlc3QgY2FzZS4KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQt
dXAuCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0Ci1b
IFJVTiAgICAgIF0gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0LkRJU0FCTEVEX0Fsc29SdW5EaXNh
YmxlZFRlc3RzRmxhZ1N1cHByZXNzZXNXYXJuaW5nCi1bICAgICAgIE9LIF0gRGlzYWJsZWRUZXN0
c1dhcm5pbmdUZXN0LkRJU0FCTEVEX0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZ1N1cHByZXNzZXNX
YXJuaW5nCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCi1b
PT09PT09PT09PV0gMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UgcmFuLgotWyAgUEFTU0VEICBdIDEg
dGVzdC4KLU5vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9IFBhc3NpbmdUZXN0LioKLU5vdGU6IFRo
aXMgaXMgdGVzdCBzaGFyZCAxIG9mIDIuCi1bPT09PT09PT09PV0gUnVubmluZyAxIHRlc3QgZnJv
bSAxIHRlc3QgY2FzZS4KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQt
dXAuCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gUGFzc2luZ1Rlc3QKLVsgUlVOICAgICAgXSBQ
YXNzaW5nVGVzdC5QYXNzaW5nVGVzdDIKLVsgICAgICAgT0sgXSBQYXNzaW5nVGVzdC5QYXNzaW5n
VGVzdDIKLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KLVs9
PT09PT09PT09XSAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZSByYW4uCi1bICBQQVNTRUQgIF0gMSB0
ZXN0LgotCi0gIFlPVSBIQVZFIDEgRElTQUJMRUQgVEVTVAotCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl93aW4udHh0IGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fd2lu
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEzYzNhYWZjMzFmNWYxMDA1Yzc3
NDI4M2UwMGJkYjA5ZGU4MWY2OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0
X2dvbGRlbl93aW4udHh0CisrKyAvZGV2L251bGwKQEAgLTEsNjA1ICswLDAgQEAKLVRoZSBub24t
dGVzdCBwYXJ0IG9mIHRoZSBjb2RlIGlzIGV4cGVjdGVkIHRvIGhhdmUgMiBmYWlsdXJlcy4KLQot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogZmFsc2UKLSAgQWN0dWFs
OiBmYWxzZQotRXhwZWN0ZWQ6IHRydWUKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjog
VmFsdWUgb2Y6IDMKLUV4cGVjdGVkOiAyCi1bPT09PT09PT09PV0gUnVubmluZyA2MSB0ZXN0cyBm
cm9tIDI3IHRlc3QgY2FzZXMuCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQg
c2V0LXVwLgotRm9vRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLgotQmFyRW52aXJvbm1lbnQ6
OlNldFVwKCkgY2FsbGVkLgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIEFEZWF0aFRlc3QKLVsg
UlVOICAgICAgXSBBRGVhdGhUZXN0LlNob3VsZFJ1bkZpcnN0Ci1bICAgICAgIE9LIF0gQURlYXRo
VGVzdC5TaG91bGRSdW5GaXJzdAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIEFUeXBlZERlYXRo
VGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLVsgUlVOICAgICAgXSBBVHlwZWREZWF0aFRl
c3QvMC5TaG91bGRSdW5GaXJzdAotWyAgICAgICBPSyBdIEFUeXBlZERlYXRoVGVzdC8wLlNob3Vs
ZFJ1bkZpcnN0Ci1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gQVR5cGVkRGVhdGhUZXN0LzEsIHdo
ZXJlIFR5cGVQYXJhbSA9IGRvdWJsZQotWyBSVU4gICAgICBdIEFUeXBlZERlYXRoVGVzdC8xLlNo
b3VsZFJ1bkZpcnN0Ci1bICAgICAgIE9LIF0gQVR5cGVkRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmly
c3QKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBNeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAsIHdo
ZXJlIFR5cGVQYXJhbSA9IGludAotWyBSVU4gICAgICBdIE15L0FUeXBlUGFyYW1EZWF0aFRlc3Qv
MC5TaG91bGRSdW5GaXJzdAotWyAgICAgICBPSyBdIE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMC5T
aG91bGRSdW5GaXJzdAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIE15L0FUeXBlUGFyYW1EZWF0
aFRlc3QvMSwgd2hlcmUgVHlwZVBhcmFtID0gZG91YmxlCi1bIFJVTiAgICAgIF0gTXkvQVR5cGVQ
YXJhbURlYXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0Ci1bICAgICAgIE9LIF0gTXkvQVR5cGVQYXJh
bURlYXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0Ci1bLS0tLS0tLS0tLV0gMiB0ZXN0cyBmcm9tIFBh
c3NpbmdUZXN0Ci1bIFJVTiAgICAgIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QxCi1bICAgICAg
IE9LIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QxCi1bIFJVTiAgICAgIF0gUGFzc2luZ1Rlc3Qu
UGFzc2luZ1Rlc3QyCi1bICAgICAgIE9LIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi1bLS0t
LS0tLS0tLV0gMyB0ZXN0cyBmcm9tIEZhdGFsRmFpbHVyZVRlc3QKLVsgUlVOICAgICAgXSBGYXRh
bEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1
cmUgdGhhdCB4IHNob3VsZCBiZSAxKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBW
YWx1ZSBvZjogeAotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1bICBGQUlMRUQgIF0gRmF0YWxG
YWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLVsgUlVOICAgICAgXSBGYXRhbEZh
aWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZh
aWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9y
OiBWYWx1ZSBvZjogeAotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1bICBGQUlMRUQgIF0gRmF0
YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKLVsgUlVOICAgICAg
XSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotKGV4cGVjdGlu
ZyBhIGZhaWx1cmUgb24gZmFsc2UpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZh
bHVlIG9mOiBmYWxzZQotICBBY3R1YWw6IGZhbHNlCi1FeHBlY3RlZDogdHJ1ZQotWyAgRkFJTEVE
ICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi1bLS0tLS0t
LS0tLV0gMSB0ZXN0IGZyb20gTG9nZ2luZ1Rlc3QKLVsgUlVOICAgICAgXSBMb2dnaW5nVGVzdC5J
bnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotKGV4cGVjdGluZyAyIGZhaWx1cmVzIG9u
ICgzKSA+PSAoYVtpXSkpCi1pID09IDAKLWkgPT0gMQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IGVycm9yOiBFeHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDkKLWkgPT0gMgot
aSA9PSAzCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAoMykgPj0g
KGFbaV0pLCBhY3R1YWw6IDMgdnMgNgotWyAgRkFJTEVEICBdIExvZ2dpbmdUZXN0LkludGVybGVh
dmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCi1bLS0tLS0tLS0tLV0gNSB0ZXN0cyBmcm9tIFNDT1BF
RF9UUkFDRVRlc3QKLVsgUlVOICAgICAgXSBTQ09QRURfVFJBQ0VUZXN0Lk9iZXlzU2NvcGVzCi0o
ZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVk
Ci1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNlLgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBl
eHBlY3RlZCwgYW5kIHNob3VsZCBoYXZlIGEgdHJhY2UuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBFeHBlY3RlZCB0cmFjZQotZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IGVycm9yOiBGYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3Vs
ZG4ndCBoYXZlIGEgdHJhY2UuCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5PYmV5c1Nj
b3BlcwotWyBSVU4gICAgICBdIFNDT1BFRF9UUkFDRVRlc3QuV29ya3NJbkxvb3AKLShleHBlY3Rl
ZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogbgot
ICBBY3R1YWw6IDEKLUV4cGVjdGVkOiAyCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBpID0gMQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1
ZSBvZjogbgotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBpID0gMgotWyAgRkFJTEVEICBdIFNDT1BFRF9UUkFDRVRl
c3QuV29ya3NJbkxvb3AKLVsgUlVOICAgICAgXSBTQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJy
b3V0aW5lCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJv
cjogVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAxCi1FeHBlY3RlZDogMgotR29vZ2xlIFRlc3QgdHJh
Y2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogbiA9IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBlcnJvcjogVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotR29vZ2xl
IFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogbiA9IDIKLVsgIEZBSUxFRCAg
XSBTQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJyb3V0aW5lCi1bIFJVTiAgICAgIF0gU0NPUEVE
X1RSQUNFVGVzdC5DYW5CZU5lc3RlZAotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEK
LUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4gPSAyCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5DYW5C
ZU5lc3RlZAotWyBSVU4gICAgICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVSZXBlYXRlZAotKGV4
cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAot
VGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQg
QS4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEEKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0
ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBIGFuZCBCLgotR29vZ2xlIFRlc3Qg
dHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IEEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1UaGlzIGZhaWx1
cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQg
Qy4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEMKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBCCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQQotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEsIEIsIGFuZCBELgotR29vZ2xlIFRl
c3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRAotZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IEIKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBBCi1bICBGQUlMRUQgIF0gU0NPUEVE
X1RSQUNFVGVzdC5DYW5CZVJlcGVhdGVkCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTm9uRmF0
YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0Ci1bIFJVTiAgICAgIF0gTm9uRmF0YWxG
YWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi0oZXhw
ZWN0aW5nIDUgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxl
ZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4KLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBp
biBTZXRVcCgpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVj
dGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGJvZHkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gVGVhckRvd24uCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjNSwg
aW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAgXSBOb25GYXRhbEZhaWx1cmVJ
bkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKLVstLS0tLS0tLS0t
XSAxIHRlc3QgZnJvbSBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QKLVsgUlVO
ICAgICAgXSBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29u
c3RydWN0b3IKLShleHBlY3RpbmcgMiBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBmaXh0dXJl
IGMndG9yLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVk
IGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi1bICBGQUlMRUQgIF0gRmF0
YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi1b
LS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QKLVsgUlVO
ICAgICAgXSBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotKGV4cGVj
dGluZyA0IGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQK
LUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZnVuY3Rp
b24uCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFp
bHVyZSAjMywgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjog
RmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICM0LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgot
WyAgRkFJTEVEICBdIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi1b
LS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QKLVsgUlVOICAg
ICAgXSBGYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotKGV4cGVjdGluZyAz
IGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVj
dGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJy
b3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0
aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZUluU2V0VXBU
ZXN0LkZhaWx1cmVJblNldFVwCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRXhjZXB0aW9uSW5G
aXh0dXJlQ3RvclRlc3QKLVsgUlVOICAgICAgXSBFeGNlcHRpb25JbkZpeHR1cmVDdG9yVGVzdC5F
eGNlcHRpb25JbkZpeHR1cmVDdG9yCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiB0aHJvd24gZXhj
ZXB0aW9uIGluIHRoZSB0ZXN0IGZpeHR1cmUncyBjb25zdHJ1Y3RvcikKLXVua25vd24gZmlsZTog
ZXJyb3I6IEV4Y2VwdGlvbiB0aHJvd24gd2l0aCBjb2RlIDB4YzAwMDAwMDUgaW4gdGhlIHRlc3Qg
Zml4dHVyZSdzIGNvbnN0cnVjdG9yLgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIEV4Y2VwdGlv
bkluU2V0VXBUZXN0Ci1bIFJVTiAgICAgIF0gRXhjZXB0aW9uSW5TZXRVcFRlc3QuRXhjZXB0aW9u
SW5TZXRVcAotKGV4cGVjdGluZyAzIGZhaWx1cmVzKQotdW5rbm93biBmaWxlOiBlcnJvcjogRXhj
ZXB0aW9uIHRocm93biB3aXRoIGNvZGUgMHhjMDAwMDAwNSBpbiBTZXRVcCgpLgotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRl
YXJEb3duKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0
ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAgXSBF
eGNlcHRpb25JblNldFVwVGVzdC5FeGNlcHRpb25JblNldFVwCi1bLS0tLS0tLS0tLV0gMiB0ZXN0
cyBmcm9tIEV4Y2VwdGlvbkluVGVzdEZ1bmN0aW9uVGVzdAotWyBSVU4gICAgICBdIEV4Y2VwdGlv
bkluVGVzdEZ1bmN0aW9uVGVzdC5TRUgKLShleHBlY3RpbmcgMyBmYWlsdXJlcykKLXVua25vd24g
ZmlsZTogZXJyb3I6IEV4Y2VwdGlvbiB0aHJvd24gd2l0aCBjb2RlIDB4YzAwMDAwMDUgaW4gdGhl
IHRlc3QgYm9keS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBl
Y3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUg
ZCd0b3IuCi1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0LlNFSAotWyBS
VU4gICAgICBdIEV4Y2VwdGlvbkluVGVzdEZ1bmN0aW9uVGVzdC5DcHBFeGNlcHRpb24KLXVua25v
d24gZmlsZTogZXJyb3I6IEV4Y2VwdGlvbiB0aHJvd24gd2l0aCBjb2RlIDB4ZTA2ZDczNjMgaW4g
dGhlIHRlc3QgYm9keS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1F
eHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1
cmUgZCd0b3IuCi1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0LkNwcEV4
Y2VwdGlvbgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIEV4Y2VwdGlvbkluVGVhckRvd25UZXN0
Ci1bIFJVTiAgICAgIF0gRXhjZXB0aW9uSW5UZWFyRG93blRlc3QuRXhjZXB0aW9uSW5UZWFyRG93
bgotKGV4cGVjdGluZyAyIGZhaWx1cmVzKQotdW5rbm93biBmaWxlOiBlcnJvcjogRXhjZXB0aW9u
IHRocm93biB3aXRoIGNvZGUgMHhlMDZkNzM2MyBpbiBUZWFyRG93bigpLgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0
ZXN0IGZpeHR1cmUgZCd0b3IuCi1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5UZWFyRG93blRlc3Qu
RXhjZXB0aW9uSW5UZWFyRG93bgotWy0tLS0tLS0tLS1dIDQgdGVzdHMgZnJvbSBNaXhlZFVwVGVz
dENhc2VUZXN0Ci1bIFJVTiAgICAgIF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5GaXJzdFRlc3RGcm9t
TmFtZXNwYWNlRm9vCi1bICAgICAgIE9LIF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5GaXJzdFRlc3RG
cm9tTmFtZXNwYWNlRm9vCi1bIFJVTiAgICAgIF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5TZWNvbmRU
ZXN0RnJvbU5hbWVzcGFjZUZvbwotWyAgICAgICBPSyBdIE1peGVkVXBUZXN0Q2FzZVRlc3QuU2Vj
b25kVGVzdEZyb21OYW1lc3BhY2VGb28KLVsgUlVOICAgICAgXSBNaXhlZFVwVGVzdENhc2VUZXN0
LlRoaXNTaG91bGRGYWlsCi1ndGVzdC5jYzojOiBlcnJvcjogRmFpbGVkCi1BbGwgdGVzdHMgaW4g
dGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3Mu
ICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlVGVzdCwKLXlvdSBkZWZpbmVk
IHRlc3QgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbyBhbmQgdGVzdCBUaGlzU2hvdWxkRmFpbAot
dXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBl
biBpZgotdGhlIHR3byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIG9yIHRy
YW5zbGF0aW9uCi11bml0cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAgWW91IHNob3VsZCBwcm9i
YWJseSByZW5hbWUgb25lCi1vZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlm
ZmVyZW50IHRlc3QgY2FzZXMuCi1bICBGQUlMRUQgIF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlz
U2hvdWxkRmFpbAotWyBSVU4gICAgICBdIE1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZh
aWxUb28KLWd0ZXN0LmNjOiM6IGVycm9yOiBGYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0
ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcy4gIEhvd2V2ZXIs
IGluIHRlc3QgY2FzZSBNaXhlZFVwVGVzdENhc2VUZXN0LAoteW91IGRlZmluZWQgdGVzdCBGaXJz
dFRlc3RGcm9tTmFtZXNwYWNlRm9vIGFuZCB0ZXN0IFRoaXNTaG91bGRGYWlsVG9vCi11c2luZyB0
d28gZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAgVGhpcyBjYW4gaGFwcGVuIGlmCi10
aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMgb3IgdHJhbnNsYXRp
b24KLXVuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZb3Ugc2hvdWxkIHByb2JhYmx5IHJl
bmFtZSBvbmUKLW9mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50byBkaWZmZXJlbnQg
dGVzdCBjYXNlcy4KLVsgIEZBSUxFRCAgXSBNaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRG
YWlsVG9vCi1bLS0tLS0tLS0tLV0gMiB0ZXN0cyBmcm9tIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1l
VGVzdE5hbWVUZXN0Ci1bIFJVTiAgICAgIF0gTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFt
ZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLVsgICAgICAgT0sgXSBN
aXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNO
YW1lU2hvdWxkRmFpbAotWyBSVU4gICAgICBdIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5h
bWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCi1ndGVzdC5jYzojOiBl
cnJvcjogRmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRo
ZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRV
cFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0IFRoZVNlY29u
ZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsIGFuZCB0ZXN0IFRoZVNlY29uZFRlc3RXaXRoVGhp
c05hbWVTaG91bGRGYWlsCi11c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2Vz
LiAgVGhpcyBjYW4gaGFwcGVuIGlmCi10aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50
IG5hbWVzcGFjZXMgb3IgdHJhbnNsYXRpb24KLXVuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUu
ICBZb3Ugc2hvdWxkIHByb2JhYmx5IHJlbmFtZSBvbmUKLW9mIHRoZSBjbGFzc2VzIHRvIHB1dCB0
aGUgdGVzdHMgaW50byBkaWZmZXJlbnQgdGVzdCBjYXNlcy4KLVsgIEZBSUxFRCAgXSBNaXhlZFVw
VGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hv
dWxkRmFpbAotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5f
c2FtZV90ZXN0X2Nhc2UKLVsgUlVOICAgICAgXSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90
ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GCi1bICAgICAgIE9LIF0gVEVTVF9GX2JlZm9yZV9U
RVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRgotWyBSVU4gICAgICBdIFRF
U1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUQW5kU2hv
dWxkRmFpbAotZ3Rlc3QuY2M6IzogZXJyb3I6IEZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1l
IHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLCBzbyBtaXhp
bmcgVEVTVF9GIGFuZCBURVNUIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBpcwotaWxsZWdhbC4gIElu
IHRlc3QgY2FzZSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UsCi10ZXN0IERl
ZmluZWRVc2luZ1RFU1RfRiBpcyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKLXRlc3QgRGVmaW5l
ZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwgaXMgZGVmaW5lZCB1c2luZyBURVNULiAgWW91IHByb2Jh
Ymx5Ci13YW50IHRvIGNoYW5nZSB0aGUgVEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0byBhbm90
aGVyIHRlc3QKLWNhc2UuCi1bICBGQUlMRUQgIF0gVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVf
dGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsCi1bLS0tLS0tLS0tLV0gMiB0
ZXN0cyBmcm9tIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZQotWyBSVU4gICAg
ICBdIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNU
Ci1bICAgICAgIE9LIF0gVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmlu
ZWRVc2luZ1RFU1QKLVsgUlVOICAgICAgXSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0
X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogZXJyb3I6
IEZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2Ft
ZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLCBzbyBtaXhpbmcgVEVTVF9GIGFuZCBURVNUIGluIHRoZSBz
YW1lIHRlc3QgY2FzZSBpcwotaWxsZWdhbC4gIEluIHRlc3QgY2FzZSBURVNUX2JlZm9yZV9URVNU
X0ZfaW5fc2FtZV90ZXN0X2Nhc2UsCi10ZXN0IERlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZh
aWwgaXMgZGVmaW5lZCB1c2luZyBURVNUX0YgYnV0Ci10ZXN0IERlZmluZWRVc2luZ1RFU1QgaXMg
ZGVmaW5lZCB1c2luZyBURVNULiAgWW91IHByb2JhYmx5Ci13YW50IHRvIGNoYW5nZSB0aGUgVEVT
VCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0byBhbm90aGVyIHRlc3QKLWNhc2UuCi1bICBGQUlMRUQg
IF0gVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1Rf
RkFuZFNob3VsZEZhaWwKLVstLS0tLS0tLS0tXSA4IHRlc3RzIGZyb20gRXhwZWN0Tm9uZmF0YWxG
YWlsdXJlVGVzdAotWyBSVU4gICAgICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVm
ZXJlbmNlR2xvYmFsVmFyaWFibGVzCi1bICAgICAgIE9LIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJl
VGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLVsgUlVOICAgICAgXSBFeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVzCi1bICAgICAgIE9LIF0g
RXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFZhcmlhYmxlcwotWyBS
VU4gICAgICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09u
ZU5vbmZhdGFsRmFpbHVyZQotWyAgICAgICBPSyBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qu
U3VjY2VlZHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotWyBSVU4gICAgICBdIEV4cGVj
dE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJlCi0o
ZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24t
ZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBFeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb05vbmZhdGFsRmFpbHVyZQotWyBS
VU4gICAgICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29O
b25mYXRhbEZhaWx1cmVzCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9y
OiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDIgZmFpbHVyZXMKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0
ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMS4KLQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1m
YXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSAyLgotCi1b
ICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3
b05vbmZhdGFsRmFpbHVyZXMKLVsgUlVOICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LkZhaWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQot
Z3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVh
bDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBl
Y3RlZCBmYXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJl
VGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi1bIFJVTiAgICAgIF0gRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi0oZXhwZWN0aW5n
IGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFp
bHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBFeHBlY3ROb25mYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLVsgUlVOICAgICAgXSBFeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotKGV4cGVjdGluZyBh
IGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1
cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWls
dXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLVstLS0tLS0tLS0tXSA4IHRlc3RzIGZy
b20gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdAotWyBSVU4gICAgICBdIEV4cGVjdEZhdGFsRmFpbHVy
ZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCi1bICAgICAgIE9LIF0gRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLVsgUlVOICAgICAgXSBF
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsU3RhdGljVmFyaWFibGVzCi1b
ICAgICAgIE9LIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFN0YXRp
Y1ZhcmlhYmxlcwotWyBSVU4gICAgICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNX
aGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotWyAgICAgICBPSyBdIEV4cGVjdEZhdGFsRmFpbHVy
ZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotWyBSVU4gICAgICBdIEV4
cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlCi0oZXhw
ZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBm
YWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotWyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFp
bHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlCi1bIFJVTiAgICAgIF0gRXhw
ZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMKLShl
eHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFs
IGZhaWx1cmUKLSAgQWN0dWFsOiAyIGZhaWx1cmVzCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuCi0KLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hl
blRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcwotWyBSVU4gICAgICBdIEV4cGVjdEZhdGFsRmFpbHVy
ZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZh
aWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBB
Y3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWls
ZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQgIF0gRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi1bIFJVTiAg
ICAgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi0o
ZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRh
bCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotWyAgRkFJTEVEICBdIEV4cGVjdEZhdGFs
RmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotWyBSVU4gICAgICBdIEV4cGVj
dEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi0oZXhwZWN0aW5nIGEg
ZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0g
IEFjdHVhbDogMCBmYWlsdXJlcwotWyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qu
RmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi1bLS0tLS0tLS0tLV0gMiB0ZXN0cyBmcm9tIFR5cGVk
VGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLVsgUlVOICAgICAgXSBUeXBlZFRlc3QvMC5T
dWNjZXNzCi1bICAgICAgIE9LIF0gVHlwZWRUZXN0LzAuU3VjY2VzcwotWyBSVU4gICAgICBdIFR5
cGVkVGVzdC8wLkZhaWx1cmUKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUg
b2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogMAotRXhwZWN0ZWQ6IDEKLUV4cGVjdGVkIGZhaWx1
cmUKLVsgIEZBSUxFRCAgXSBUeXBlZFRlc3QvMC5GYWlsdXJlCi1bLS0tLS0tLS0tLV0gMiB0ZXN0
cyBmcm9tIFVuc2lnbmVkL1R5cGVkVGVzdFAvMCwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQg
Y2hhcgotWyBSVU4gICAgICBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMC5TdWNjZXNzCi1bICAgICAg
IE9LIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8wLlN1Y2Nlc3MKLVsgUlVOICAgICAgXSBVbnNpZ25l
ZC9UeXBlZFRlc3RQLzAuRmFpbHVyZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBW
YWx1ZSBvZjogVHlwZVBhcmFtKCkKLSAgQWN0dWFsOiBcMAotRXhwZWN0ZWQ6IDFVCi1XaGljaCBp
czogMQotRXhwZWN0ZWQgZmFpbHVyZQotWyAgRkFJTEVEICBdIFVuc2lnbmVkL1R5cGVkVGVzdFAv
MC5GYWlsdXJlCi1bLS0tLS0tLS0tLV0gMiB0ZXN0cyBmcm9tIFVuc2lnbmVkL1R5cGVkVGVzdFAv
MSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50Ci1bIFJVTiAgICAgIF0gVW5zaWduZWQv
VHlwZWRUZXN0UC8xLlN1Y2Nlc3MKLVsgICAgICAgT0sgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzEu
U3VjY2VzcwotWyBSVU4gICAgICBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBUeXBlUGFyYW0oKQotICBBY3R1
YWw6IDAKLUV4cGVjdGVkOiAxVQotV2hpY2ggaXM6IDEKLUV4cGVjdGVkIGZhaWx1cmUKLVsgIEZB
SUxFRCAgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZQotWy0tLS0tLS0tLS1dIDQgdGVz
dHMgZnJvbSBFeHBlY3RGYWlsdXJlVGVzdAotWyBSVU4gICAgICBdIEV4cGVjdEZhaWx1cmVUZXN0
LkV4cGVjdEZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBl
cnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2NlZWRlZAotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkK
LWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhw
ZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3Qu
Y2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBv
dGhlciBmYXRhbCBmYWlsdXJlIGV4cGVjdGVkLiIKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUu
Ci0KLVsgIEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLVsg
UlVOICAgICAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLShleHBl
Y3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5vbi1mYXRh
bCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBTdWNjZXNzOgot
U3VjY2VlZGVkCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4
cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgot
Ci0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBu
b24tZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIG5vbi1mYXRhbCBmYWlsdXJl
LiIKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJl
OgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQotWyAgRkFJTEVEICBdIEV4
cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQotWyBSVU4gICAgICBdIEV4cGVj
dEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotKGV4cGVjdGluZyAx
IGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQot
ICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2NlZWRlZAot
Ci0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBm
YXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0
YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLShleHBl
Y3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZh
aWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBmYXRhbCBmYWlsdXJlIGV4cGVjdGVkLiIKLSAg
QWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQK
LUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLVsgIEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVz
dC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLVsgUlVOICAgICAgXSBFeHBlY3RGYWls
dXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLShleHBlY3RpbmcgMSBm
YWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJl
Ci0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBTdWNjZXNzOgotU3VjY2VlZGVk
Ci0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAx
IG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBG
YXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0
aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwg
ZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIG5vbi1mYXRhbCBmYWlsdXJlLiIKLSAgQWN0
dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVk
Ci1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQotWyAgRkFJTEVEICBdIEV4cGVjdEZhaWx1
cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotWy0tLS0tLS0tLS1dIEds
b2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgotQmFyRW52aXJvbm1lbnQ6OlRlYXJEb3du
KCkgY2FsbGVkLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVj
dGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotRm9vRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVk
LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuCi1bPT09PT09PT09PV0gNjEgdGVzdHMgZnJvbSAyNyB0ZXN0IGNhc2VzIHJhbi4K
LVsgIFBBU1NFRCAgXSAyMSB0ZXN0cy4KLVsgIEZBSUxFRCAgXSA0MCB0ZXN0cywgbGlzdGVkIGJl
bG93OgotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0
aW5lCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1
YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUlu
U3Vicm91dGluZQotWyAgRkFJTEVEICBdIExvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdB
bmRBc3NlcnRpb25zCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5PYmV5c1Njb3Blcwot
WyAgRkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuV29ya3NJbkxvb3AKLVsgIEZBSUxFRCAgXSBT
Q09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RS
QUNFVGVzdC5DYW5CZU5lc3RlZAotWyAgRkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVS
ZXBlYXRlZAotWyAgRkFJTEVEICBdIE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9y
VGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZUluRml4
dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotWyAgRkFJTEVEICBdIE5v
bkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi1bICBGQUlMRUQgIF0gRmF0
YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKLVsgIEZBSUxFRCAgXSBFeGNlcHRp
b25JbkZpeHR1cmVDdG9yVGVzdC5FeGNlcHRpb25JbkZpeHR1cmVDdG9yCi1bICBGQUlMRUQgIF0g
RXhjZXB0aW9uSW5TZXRVcFRlc3QuRXhjZXB0aW9uSW5TZXRVcAotWyAgRkFJTEVEICBdIEV4Y2Vw
dGlvbkluVGVzdEZ1bmN0aW9uVGVzdC5TRUgKLVsgIEZBSUxFRCAgXSBFeGNlcHRpb25JblRlc3RG
dW5jdGlvblRlc3QuQ3BwRXhjZXB0aW9uCi1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5UZWFyRG93
blRlc3QuRXhjZXB0aW9uSW5UZWFyRG93bgotWyAgRkFJTEVEICBdIE1peGVkVXBUZXN0Q2FzZVRl
c3QuVGhpc1Nob3VsZEZhaWwKLVsgIEZBSUxFRCAgXSBNaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNT
aG91bGRGYWlsVG9vCi1bICBGQUlMRUQgIF0gTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFt
ZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLVsgIEZBSUxFRCAgXSBU
RVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFuZFNo
b3VsZEZhaWwKLVsgIEZBSUxFRCAgXSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nh
c2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbAotWyAgRkFJTEVEICBdIEV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJlCi1bICBG
QUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b05v
bmZhdGFsRmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZh
aWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLVsgIEZBSUxFRCAgXSBFeHBlY3ROb25mYXRh
bEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLVsgIEZBSUxFRCAgXSBFeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotWyAgRkFJTEVE
ICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJl
Ci1bICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3
b0ZhdGFsRmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxz
V2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLVsgIEZBSUxFRCAgXSBFeHBlY3RG
YXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotWyAgRkFJTEVEICBdIFR5
cGVkVGVzdC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IGludAotWyAgRkFJTEVEICBdIFVu
c2lnbmVkL1R5cGVkVGVzdFAvMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBj
aGFyCi1bICBGQUlMRUQgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUsIHdoZXJlIFR5
cGVQYXJhbSA9IHVuc2lnbmVkIGludAotWyAgRkFJTEVEICBdIEV4cGVjdEZhaWx1cmVUZXN0LkV4
cGVjdEZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5v
bkZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFs
RmFpbHVyZU9uQWxsVGhyZWFkcwotWyAgRkFJTEVEICBdIEV4cGVjdEZhaWx1cmVUZXN0LkV4cGVj
dE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotCi00MCBGQUlMRUQgVEVTVFMKLSAgWU9VIEhB
VkUgMSBESVNBQkxFRCBURVNUCi0KLU5vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9IEZhdGFsRmFp
bHVyZVRlc3QuKjpMb2dnaW5nVGVzdC4qCi1bPT09PT09PT09PV0gUnVubmluZyA0IHRlc3RzIGZy
b20gMiB0ZXN0IGNhc2VzLgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNl
dC11cC4KLVstLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdAotWyBSVU4g
ICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0
aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogZXJyb3I6IFZhbHVlIG9mOiB4Ci0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLVsgIEZBSUxF
RCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZSAoPyBtcykKLVsg
UlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGlu
ZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogeAotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAx
Ci1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJv
dXRpbmUgKD8gbXMpCi1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1
cmVJblN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIG9uIGZhbHNlKQotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogZmFsc2UKLSAgQWN0dWFsOiBmYWxzZQot
RXhwZWN0ZWQ6IHRydWUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFp
bHVyZUluU3Vicm91dGluZSAoPyBtcykKLVstLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0YWxG
YWlsdXJlVGVzdCAoPyBtcyB0b3RhbCkKLQotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExvZ2dp
bmdUZXN0Ci1bIFJVTiAgICAgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFz
c2VydGlvbnMKLShleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKQotaSA9PSAw
Ci1pID09IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6ICgzKSA+
PSAoYVtpXSksIGFjdHVhbDogMyB2cyA5Ci1pID09IDIKLWkgPT0gMwotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IGVycm9yOiBFeHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDYK
LVsgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9u
cyAoPyBtcykKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBMb2dnaW5nVGVzdCAoPyBtcyB0b3Rh
bCkKLQotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgotWz09
PT09PT09PT1dIDQgdGVzdHMgZnJvbSAyIHRlc3QgY2FzZXMgcmFuLiAoPyBtcyB0b3RhbCkKLVsg
IFBBU1NFRCAgXSAwIHRlc3RzLgotWyAgRkFJTEVEICBdIDQgdGVzdHMsIGxpc3RlZCBiZWxvdzoK
LVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQot
WyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0
aW5lCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJv
dXRpbmUKLVsgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNz
ZXJ0aW9ucwotCi0gNCBGQUlMRUQgVEVTVFMKLSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNUCi0K
LU5vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9ICpESVNBQkxFRF8qCi1bPT09PT09PT09PV0gUnVu
bmluZyAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZS4KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBl
bnZpcm9ubWVudCBzZXQtdXAuCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRGlzYWJsZWRUZXN0
c1dhcm5pbmdUZXN0Ci1bIFJVTiAgICAgIF0gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0LkRJU0FC
TEVEX0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZ1N1cHByZXNzZXNXYXJuaW5nCi1bICAgICAgIE9L
IF0gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0LkRJU0FCTEVEX0Fsc29SdW5EaXNhYmxlZFRlc3Rz
RmxhZ1N1cHByZXNzZXNXYXJuaW5nCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1l
bnQgdGVhci1kb3duCi1bPT09PT09PT09PV0gMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UgcmFuLgot
WyAgUEFTU0VEICBdIDEgdGVzdC4KLU5vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9IFBhc3NpbmdU
ZXN0LioKLU5vdGU6IFRoaXMgaXMgdGVzdCBzaGFyZCAxIG9mIDIuCi1bPT09PT09PT09PV0gUnVu
bmluZyAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZS4KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBl
bnZpcm9ubWVudCBzZXQtdXAuCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gUGFzc2luZ1Rlc3QK
LVsgUlVOICAgICAgXSBQYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDIKLVsgICAgICAgT0sgXSBQYXNz
aW5nVGVzdC5QYXNzaW5nVGVzdDIKLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVu
dCB0ZWFyLWRvd24KLVs9PT09PT09PT09XSAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZSByYW4uCi1b
ICBQQVNTRUQgIF0gMSB0ZXN0LgotCi0gIFlPVSBIQVZFIDEgRElTQUJMRUQgVEVTVAotCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZWRfaW1wbF91bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsX3Vu
aXR0ZXN0LmNjCmluZGV4IGU3ZWU1NGI1NmQ4NmI5ZWE1NGI3MTYxMjU4NjlhYTI4N2QxMjZiZTcu
LmI0NjZjMTUwYWVkYzQzZmRiMTAzNzNiN2E4MDJjY2JlNzc1NzkwZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsX3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsX3VuaXR0ZXN0
LmNjCkBAIC0yNyw3ICsyNyw3IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAK
LS8vIFRoaXMgZmlsZSBpcyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRCBvbiAxMC8wMi8yMDA4IGJ5
IGNvbW1hbmQKKy8vIFRoaXMgZmlsZSBpcyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRCBvbiAwMS8w
Mi8yMDE4IGJ5IGNvbW1hbmQKIC8vICdnZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5IDUnLiAgRE8gTk9U
IEVESVQgQlkgSEFORCEKIAogLy8gUmVncmVzc2lvbiB0ZXN0IGZvciBndGVzdF9wcmVkX2ltcGwu
aApAQCAtNDksOCArNDksOCBAQAogCiAjaW5jbHVkZSA8aW9zdHJlYW0+CiAKLSNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgorI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCiAKIC8vIEEgdXNlci1k
ZWZpbmVkIGRhdGEgdHlwZS4KIHN0cnVjdCBCb29sIHsKQEAgLTEwMywxMSArMTAzLDEwIEBAIHRl
c3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rpb24xKGNvbnN0IGNoYXIqIGUx
LAogICBpZiAoUHJlZEZ1bmN0aW9uMSh2MSkpCiAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlv
blN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5nOjpNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGUxCisgIHJl
dHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IGUxCiAgICAgICA8PCAi
IGlzIGV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKICAgICAgIDw8
IHYxIDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNnKTsKIH0K
IAogLy8gQSB1bmFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3IuCkBAIC00OTQsMTEgKzQ5
MywxMCBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1bmN0aW9uMihjb25z
dCBjaGFyKiBlMSwKICAgaWYgKFByZWRGdW5jdGlvbjIodjEsIHYyKSkKICAgICByZXR1cm4gdGVz
dGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIHRlc3Rpbmc6Ok1lc3NhZ2UgbXNnOwotICBt
c2cgPDwgZTEgPDwgIiArICIgPDwgZTIKKyAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1
cmUoKQorICAgICAgPDwgZTEgPDwgIiArICIgPDwgZTIKICAgICAgIDw8ICIgaXMgZXhwZWN0ZWQg
dG8gYmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgogICAgICAgPDwgdjEgKyB2MiA8PCAi
LiI7Ci0gIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIC8vIEEg
YmluYXJ5IHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rvci4KQEAgLTkyNywxMSArOTI1LDEwIEBA
IHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rpb24zKGNvbnN0IGNoYXIq
IGUxLAogICBpZiAoUHJlZEZ1bmN0aW9uMyh2MSwgdjIsIHYzKSkKICAgICByZXR1cm4gdGVzdGlu
Zzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIHRlc3Rpbmc6Ok1lc3NhZ2UgbXNnOwotICBtc2cg
PDwgZTEgPDwgIiArICIgPDwgZTIgPDwgIiArICIgPDwgZTMKKyAgcmV0dXJuIHRlc3Rpbmc6OkFz
c2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwgZTEgPDwgIiArICIgPDwgZTIgPDwgIiArICIgPDwg
ZTMKICAgICAgIDw8ICIgaXMgZXhwZWN0ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMg
dG8gIgogICAgICAgPDwgdjEgKyB2MiArIHYzIDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFz
c2VydGlvbkZhaWx1cmUobXNnKTsKIH0KIAogLy8gQSB0ZXJuYXJ5IHByZWRpY2F0ZS1mb3JtYXR0
ZXIgZnVuY3Rvci4KQEAgLTE0MDIsMTEgKzEzOTksMTAgQEAgdGVzdGluZzo6QXNzZXJ0aW9uUmVz
dWx0IFByZWRGb3JtYXRGdW5jdGlvbjQoY29uc3QgY2hhciogZTEsCiAgIGlmIChQcmVkRnVuY3Rp
b240KHYxLCB2MiwgdjMsIHY0KSkKICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2Vz
cygpOwogCi0gIHRlc3Rpbmc6Ok1lc3NhZ2UgbXNnOwotICBtc2cgPDwgZTEgPDwgIiArICIgPDwg
ZTIgPDwgIiArICIgPDwgZTMgPDwgIiArICIgPDwgZTQKKyAgcmV0dXJuIHRlc3Rpbmc6OkFzc2Vy
dGlvbkZhaWx1cmUoKQorICAgICAgPDwgZTEgPDwgIiArICIgPDwgZTIgPDwgIiArICIgPDwgZTMg
PDwgIiArICIgPDwgZTQKICAgICAgIDw8ICIgaXMgZXhwZWN0ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1
dCBldmFsdWF0ZXMgdG8gIgogICAgICAgPDwgdjEgKyB2MiArIHYzICsgdjQgPDwgIi4iOwotICBy
ZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogCiAvLyBBIDQtYXJ5IHBy
ZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rvci4KQEAgLTE5MTksMTEgKzE5MTUsMTAgQEAgdGVzdGlu
Zzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRGb3JtYXRGdW5jdGlvbjUoY29uc3QgY2hhciogZTEsCiAg
IGlmIChQcmVkRnVuY3Rpb241KHYxLCB2MiwgdjMsIHY0LCB2NSkpCiAgICAgcmV0dXJuIHRlc3Rp
bmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5nOjpNZXNzYWdlIG1zZzsKLSAgbXNn
IDw8IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUzIDw8ICIgKyAiIDw8IGU0IDw8ICIg
KyAiIDw8IGU1CisgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8
IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUzIDw8ICIgKyAiIDw8IGU0IDw8ICIgKyAi
IDw8IGU1CiAgICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlLCBidXQgZXZhbHVh
dGVzIHRvICIKICAgICAgIDw8IHYxICsgdjIgKyB2MyArIHY0ICsgdjUgPDwgIi4iOwotICByZXR1
cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogCiAvLyBBIDUtYXJ5IHByZWRp
Y2F0ZS1mb3JtYXR0ZXIgZnVuY3Rvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfcHJlbWF0dXJlX2V4aXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJlbWF0dXJlX2V4aXRfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWU5
MzA1NmQ4YjU2MmM1OWZlYmE4Mjc4ZTIwYzI5ZGYxM2UxOTE1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcmVtYXR1cmVfZXhpdF90ZXN0LmNj
CkBAIC0wLDAgKzEsMTI2IEBACisvLyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KKy8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisv
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKy8vCisvLyBUZXN0cyB0aGF0IEdvb2dsZSBUZXN0IG1hbmlwdWxhdGVzIHRoZSBw
cmVtYXR1cmUtZXhpdC1kZXRlY3Rpb24KKy8vIGZpbGUgY29ycmVjdGx5LgorCisjaW5jbHVkZSA8
c3RkaW8uaD4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK3VzaW5nIDo6dGVzdGluZzo6
SW5pdEdvb2dsZVRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6
OmludGVybmFsOjpwb3NpeDo6R2V0RW52OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9z
aXg6OlN0YXQ7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6U3RhdFN0cnVjdDsK
KworbmFtZXNwYWNlIHsKKworY2xhc3MgUHJlbWF0dXJlRXhpdFRlc3QgOiBwdWJsaWMgVGVzdCB7
CisgcHVibGljOgorICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBnaXZlbiBmaWxlIGV4aXN0cy4K
KyAgc3RhdGljIGJvb2wgRmlsZUV4aXN0cyhjb25zdCBjaGFyKiBmaWxlcGF0aCkgeworICAgIFN0
YXRTdHJ1Y3Qgc3RhdDsKKyAgICByZXR1cm4gU3RhdChmaWxlcGF0aCwgJnN0YXQpID09IDA7Cisg
IH0KKworIHByb3RlY3RlZDoKKyAgUHJlbWF0dXJlRXhpdFRlc3QoKSB7CisgICAgcHJlbWF0dXJl
X2V4aXRfZmlsZV9wYXRoXyA9IEdldEVudigiVEVTVF9QUkVNQVRVUkVfRVhJVF9GSUxFIik7CisK
KyAgICAvLyBOb3JtYWxpemUgTlVMTCB0byAiIiBmb3IgZWFzZSBvZiBoYW5kbGluZy4KKyAgICBp
ZiAocHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXyA9PSBOVUxMKSB7CisgICAgICBwcmVtYXR1cmVf
ZXhpdF9maWxlX3BhdGhfID0gIiI7CisgICAgfQorICB9CisKKyAgLy8gUmV0dXJucyB0cnVlIGlm
ZiB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZSBleGlzdHMuCisgIGJvb2wgUHJlbWF0dXJlRXhpdEZp
bGVFeGlzdHMoKSBjb25zdCB7CisgICAgcmV0dXJuIEZpbGVFeGlzdHMocHJlbWF0dXJlX2V4aXRf
ZmlsZV9wYXRoXyk7CisgIH0KKworICBjb25zdCBjaGFyKiBwcmVtYXR1cmVfZXhpdF9maWxlX3Bh
dGhfOworfTsKKwordHlwZWRlZiBQcmVtYXR1cmVFeGl0VGVzdCBQcmVtYXR1cmVFeGl0RGVhdGhU
ZXN0OworCisvLyBUZXN0cyB0aGF0OgorLy8gICAtIHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlIGV4
aXN0cyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiBhCisvLyAgICAgZGVhdGggdGVzdCAoRVhQRUNU
X0RFQVRIKiksIGFuZAorLy8gICAtIGEgZGVhdGggdGVzdCBkb2Vzbid0IGludGVyZmVyZSB3aXRo
IHRoZSBtYWluIHRlc3QgcHJvY2VzcydzCisvLyAgICAgaGFuZGxpbmcgb2YgdGhlIHByZW1hdHVy
ZS1leGl0IGZpbGUuCitURVNUX0YoUHJlbWF0dXJlRXhpdERlYXRoVGVzdCwgRmlsZUV4aXN0c0R1
cmluZ0V4ZWN1dGlvbk9mRGVhdGhUZXN0KSB7CisgIGlmICgqcHJlbWF0dXJlX2V4aXRfZmlsZV9w
YXRoXyA9PSAnXDAnKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgRVhQRUNUX0RFQVRIX0lGX1NV
UFBPUlRFRCh7CisgICAgICAvLyBJZiB0aGUgZmlsZSBleGlzdHMsIGNyYXNoIHRoZSBwcm9jZXNz
IHN1Y2ggdGhhdCB0aGUgbWFpbiB0ZXN0CisgICAgICAvLyBwcm9jZXNzIHdpbGwgY2F0Y2ggdGhl
IChleHBlY3RlZCkgY3Jhc2ggYW5kIHJlcG9ydCBhIHN1Y2Nlc3M7CisgICAgICAvLyBvdGhlcndp
c2UgZG9uJ3QgY3Jhc2gsIHdoaWNoIHdpbGwgY2F1c2UgdGhlIG1haW4gdGVzdCBwcm9jZXNzCisg
ICAgICAvLyB0byByZXBvcnQgdGhhdCB0aGUgZGVhdGggdGVzdCBoYXMgZmFpbGVkLgorICAgICAg
aWYgKFByZW1hdHVyZUV4aXRGaWxlRXhpc3RzKCkpIHsKKyAgICAgICAgZXhpdCgxKTsKKyAgICAg
IH0KKyAgICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIHByZW1hdHVyZS1leGl0IGZp
bGUgZXhpc3RzIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIGEKKy8vIG5vcm1hbCAobm9uLWRlYXRo
KSB0ZXN0LgorVEVTVF9GKFByZW1hdHVyZUV4aXRUZXN0LCBQcmVtYXR1cmVFeGl0RmlsZUV4aXN0
c0R1cmluZ1Rlc3RFeGVjdXRpb24pIHsKKyAgaWYgKCpwcmVtYXR1cmVfZXhpdF9maWxlX3BhdGhf
ID09ICdcMCcpIHsKKyAgICByZXR1cm47CisgIH0KKworICBFWFBFQ1RfVFJVRShQcmVtYXR1cmVF
eGl0RmlsZUV4aXN0cygpKQorICAgICAgPDwgIiBmaWxlICIgPDwgcHJlbWF0dXJlX2V4aXRfZmls
ZV9wYXRoXworICAgICAgPDwgIiBzaG91bGQgZXhpc3QgZHVyaW5nIHRlc3QgZXhlY3V0aW9uLCBi
dXQgZG9lc24ndC4iOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIgKiphcmd2KSB7CisgIEluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgY29uc3Qg
aW50IGV4aXRfY29kZSA9IFJVTl9BTExfVEVTVFMoKTsKKworICAvLyBUZXN0IHRoYXQgdGhlIHBy
ZW1hdHVyZS1leGl0IGZpbGUgaXMgZGVsZXRlZCB1cG9uIHJldHVybiBmcm9tCisgIC8vIFJVTl9B
TExfVEVTVFMoKS4KKyAgY29uc3QgY2hhciogY29uc3QgZmlsZXBhdGggPSBHZXRFbnYoIlRFU1Rf
UFJFTUFUVVJFX0VYSVRfRklMRSIpOworICBpZiAoZmlsZXBhdGggIT0gTlVMTCAmJiAqZmlsZXBh
dGggIT0gJ1wwJykgeworICAgIGlmIChQcmVtYXR1cmVFeGl0VGVzdDo6RmlsZUV4aXN0cyhmaWxl
cGF0aCkpIHsKKyAgICAgIHByaW50ZigKKyAgICAgICAgICAiRmlsZSAlcyBzaG91bGRuJ3QgZXhp
c3QgYWZ0ZXIgdGhlIHRlc3QgcHJvZ3JhbSBmaW5pc2hlcywgYnV0IGRvZXMuIiwKKyAgICAgICAg
ICBmaWxlcGF0aCk7CisgICAgICByZXR1cm4gMTsKKyAgICB9CisgIH0KKworICByZXR1cm4gZXhp
dF9jb2RlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9wcm9kX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Byb2Rf
dGVzdC5jYwppbmRleCBiYzMyMDFkMGYyNGFlOThlZDA2MmM3YjhjOWY0NGQ3ZGZlNmQ3Yzk2Li5l
ZGU4MWEwZDE3YTAyYzg1M2VkMjIzNGVjODhmZTgyNzcxODBhMzdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Byb2RfdGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Byb2RfdGVzdC5jYwpAQCAtMjYsMTMgKzI2LDEy
IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKIC8v
Ci0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVW5pdCB0
ZXN0IGZvciBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaC4KKy8vIFVuaXQgdGVzdCBmb3IgZ3Rl
c3RfcHJvZC5oLgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlICJ0ZXN0L3By
b2R1Y3Rpb24uaCIKKyNpbmNsdWRlICJwcm9kdWN0aW9uLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKIAogLy8gVGVzdHMgdGhhdCBwcml2YXRlIG1lbWJlcnMgY2FuIGJlIGFjY2Vzc2VkIGZy
b20gYSBURVNUIGRlY2xhcmVkIGFzCiAvLyBhIGZyaWVuZCBvZiB0aGUgY2xhc3MuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3JlcGVhdF90ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9yZXBlYXRfdGVzdC5jYwppbmRleCBk
ZjY4NjhiODMwMjk2MTI1YTI3YzdmMzdmOTMxNmNlZDRlZDgyZDU0Li4xZThmNDk5YmI5ZGUzZDE0
YmNiM2JiMWE2NDFjMDZkN2ExMjUwYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3JlcGVhdF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfcmVwZWF0X3Rlc3QuY2MKQEAgLTI2LDIzICsyNiwxNCBAQAogLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUZXN0cyB0aGUgLS1ndGVzdF9y
ZXBlYXQ9bnVtYmVyIGZsYWcuCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxpb3N0
cmVhbT4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlz
IHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRh
dGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGlu
Y2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlz
IHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3Qt
aW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRB
VElPTl8gMQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAic3JjL2d0ZXN0LWlu
dGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwogCiBuYW1lc3BhY2Ug
dGVzdGluZyB7CiAKQEAgLTY5LDEzICs2MCwxMyBAQCBuYW1lc3BhY2UgewogICAgICAgICAgICAg
ICAgICAgPDwgIiAgQWN0dWFsOiAiIDw8IGFjdHVhbF92YWwgPDwgIlxuIlwKICAgICAgICAgICAg
ICAgICAgIDw8ICJFeHBlY3RlZDogIiAjZXhwZWN0ZWQgIlxuIlwKICAgICAgICAgICAgICAgICAg
IDw8ICJXaGljaCBpczogIiA8PCBleHBlY3RlZF92YWwgPDwgIlxuIjtcCi0gICAgICBhYm9ydCgp
O1wKKyAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpBYm9ydCgpO1wKICAgICB9XAot
ICB9IHdoaWxlKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCisgIH0gd2hpbGUg
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCiAKIAogLy8gVXNlZCBmb3IgdmVy
aWZ5aW5nIHRoYXQgZ2xvYmFsIGVudmlyb25tZW50IHNldC11cCBhbmQgdGVhci1kb3duIGFyZQot
Ly8gaW5zaWRlIHRoZSBndGVzdF9yZXBlYXQgbG9vcC4KKy8vIGluc2lkZSB0aGUgLS1ndGVzdF9y
ZXBlYXQgbG9vcC4KIAogaW50IGdfZW52aXJvbm1lbnRfc2V0X3VwX2NvdW50ID0gMDsKIGludCBn
X2Vudmlyb25tZW50X3RlYXJfZG93bl9jb3VudCA9IDA7CkBAIC0xMTMsMTMgKzEwNCwxMiBAQCBU
RVNUKEJhckRlYXRoVGVzdCwgVGhyZWFkU2FmZUFuZEZhc3QpIHsKICAgZ19kZWF0aF90ZXN0X2Nv
dW50Kys7CiAKICAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsK
LSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChhYm9ydCgpLCAiIik7CisgIEVYUEVDVF9ERUFU
SF9JRl9TVVBQT1JURUQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OkFib3J0KCksICIiKTsK
IAogICBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOwotICBFWFBFQ1RfREVB
VEhfSUZfU1VQUE9SVEVEKGFib3J0KCksICIiKTsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRF
RCg6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6QWJvcnQoKSwgIiIpOwogfQogCi0jaWYgR1RF
U1RfSEFTX1BBUkFNX1RFU1QKIGludCBnX3BhcmFtX3Rlc3RfY291bnQgPSAwOwogCiBjb25zdCBp
bnQga051bWJlck9mUGFyYW1UZXN0cyA9IDEwOwpAQCAtMTI3LDE1ICsxMTcsMTMgQEAgY29uc3Qg
aW50IGtOdW1iZXJPZlBhcmFtVGVzdHMgPSAxMDsKIGNsYXNzIE15UGFyYW1UZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7fTsKIAogVEVTVF9QKE15UGFyYW1UZXN0LCBT
aG91bGRQYXNzKSB7Ci0gIC8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IE1ha2UgcGFyYW1ldGVy
IHZhbHVlIGNoZWNraW5nIHJvYnVzdAotICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBXUlQg
b3JkZXIgb2YgdGVzdHMuCisgIC8vIEZJWE1FOiBNYWtlIHBhcmFtZXRlciB2YWx1ZSBjaGVja2lu
ZyByb2J1c3QgV1JUIG9yZGVyIG9mIHRlc3RzLgogICBHVEVTVF9DSEVDS19JTlRfRVFfKGdfcGFy
YW1fdGVzdF9jb3VudCAlIGtOdW1iZXJPZlBhcmFtVGVzdHMsIEdldFBhcmFtKCkpOwogICBnX3Bh
cmFtX3Rlc3RfY291bnQrKzsKIH0KIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKE15UGFyYW1TZXF1
ZW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgIE15UGFyYW1UZXN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdGluZzo6UmFuZ2UoMCwga051bWJlck9mUGFyYW1UZXN0cykpOwotI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogCiAvLyBSZXNldHMgdGhlIGNvdW50IGZvciBl
YWNoIHRlc3QuCiB2b2lkIFJlc2V0Q291bnRzKCkgewpAQCAtMTQ0LDkgKzEzMiw3IEBAIHZvaWQg
UmVzZXRDb3VudHMoKSB7CiAgIGdfc2hvdWxkX2ZhaWxfY291bnQgPSAwOwogICBnX3Nob3VsZF9w
YXNzX2NvdW50ID0gMDsKICAgZ19kZWF0aF90ZXN0X2NvdW50ID0gMDsKLSNpZiBHVEVTVF9IQVNf
UEFSQU1fVEVTVAogICBnX3BhcmFtX3Rlc3RfY291bnQgPSAwOwotI2VuZGlmICAvLyBHVEVTVF9I
QVNfUEFSQU1fVEVTVAogfQogCiAvLyBDaGVja3MgdGhhdCB0aGUgY291bnQgZm9yIGVhY2ggdGVz
dCBpcyBleHBlY3RlZC4KQEAgLTE1Niw5ICsxNDIsNyBAQCB2b2lkIENoZWNrQ291bnRzKGludCBl
eHBlY3RlZCkgewogICBHVEVTVF9DSEVDS19JTlRfRVFfKGV4cGVjdGVkLCBnX3Nob3VsZF9mYWls
X2NvdW50KTsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhleHBlY3RlZCwgZ19zaG91bGRfcGFzc19j
b3VudCk7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8oZXhwZWN0ZWQsIGdfZGVhdGhfdGVzdF9jb3Vu
dCk7Ci0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhleHBl
Y3RlZCAqIGtOdW1iZXJPZlBhcmFtVGVzdHMsIGdfcGFyYW1fdGVzdF9jb3VudCk7Ci0jZW5kaWYg
IC8vIEdURVNUX0hBU19QQVJBTV9URVNUCiB9CiAKIC8vIFRlc3RzIHRoZSBiZWhhdmlvciBvZiBH
b29nbGUgVGVzdCB3aGVuIC0tZ3Rlc3RfcmVwZWF0IGlzIG5vdCBzcGVjaWZpZWQuCkBAIC0yMDEs
OSArMTg1LDcgQEAgdm9pZCBUZXN0UmVwZWF0V2l0aEZpbHRlckZvclN1Y2Nlc3NmdWxUZXN0cyhp
bnQgcmVwZWF0KSB7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8oMCwgZ19zaG91bGRfZmFpbF9jb3Vu
dCk7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0LCBnX3Nob3VsZF9wYXNzX2NvdW50KTsK
ICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhyZXBlYXQsIGdfZGVhdGhfdGVzdF9jb3VudCk7Ci0jaWYg
R1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhyZXBlYXQgKiBrTnVt
YmVyT2ZQYXJhbVRlc3RzLCBnX3BhcmFtX3Rlc3RfY291bnQpOwotI2VuZGlmICAvLyBHVEVTVF9I
QVNfUEFSQU1fVEVTVAogfQogCiAvLyBUZXN0cyB1c2luZyAtLWd0ZXN0X3JlcGVhdCB3aGVuIC0t
Z3Rlc3RfZmlsdGVyIHNwZWNpZmllcyBhIHNldCBvZgpAQCAtMjE5LDE1ICsyMDEsMTQgQEAgdm9p
ZCBUZXN0UmVwZWF0V2l0aEZpbHRlckZvckZhaWxlZFRlc3RzKGludCByZXBlYXQpIHsKICAgR1RF
U1RfQ0hFQ0tfSU5UX0VRXyhyZXBlYXQsIGdfc2hvdWxkX2ZhaWxfY291bnQpOwogICBHVEVTVF9D
SEVDS19JTlRfRVFfKDAsIGdfc2hvdWxkX3Bhc3NfY291bnQpOwogICBHVEVTVF9DSEVDS19JTlRf
RVFfKDAsIGdfZGVhdGhfdGVzdF9jb3VudCk7Ci0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAg
R1RFU1RfQ0hFQ0tfSU5UX0VRXygwLCBnX3BhcmFtX3Rlc3RfY291bnQpOwotI2VuZGlmICAvLyBH
VEVTVF9IQVNfUEFSQU1fVEVTVAogfQogCiB9ICAvLyBuYW1lc3BhY2UKIAogaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIgKiphcmd2KSB7CiAgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBh
cmd2KTsKKwogICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IE15RW52aXJv
bm1lbnQpOwogCiAgIFRlc3RSZXBlYXRVbnNwZWNpZmllZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3QucHkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMzBkMDMwM2QxOTM1NTRhNWZkMGI5YjFmNmE1MWVmN2QwOWYzMDYxMi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdC5weQorKysgL2Rldi9udWxsCkBA
IC0xLDMyNSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIw
MDkgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LSIiIlZlcmlmaWVzIHRoYXQgdGVzdCBzaHVmZmxpbmcgd29ya3MuIiIiCi0KLV9fYXV0aG9yX18g
PSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBvcwotaW1wb3J0IGd0
ZXN0X3Rlc3RfdXRpbHMKLQotIyBDb21tYW5kIHRvIHJ1biB0aGUgZ3Rlc3Rfc2h1ZmZsZV90ZXN0
XyBwcm9ncmFtLgotQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQ
YXRoKCdndGVzdF9zaHVmZmxlX3Rlc3RfJykKLQotIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVz
IGZvciB0ZXN0IHNoYXJkaW5nLgotVE9UQUxfU0hBUkRTX0VOVl9WQVIgPSAnR1RFU1RfVE9UQUxf
U0hBUkRTJwotU0hBUkRfSU5ERVhfRU5WX1ZBUiA9ICdHVEVTVF9TSEFSRF9JTkRFWCcKLQotVEVT
VF9GSUxURVIgPSAnQSouQTpBKi5COkMqJwotCi1BTExfVEVTVFMgPSBbXQotQUNUSVZFX1RFU1RT
ID0gW10KLUZJTFRFUkVEX1RFU1RTID0gW10KLVNIQVJERURfVEVTVFMgPSBbXQotCi1TSFVGRkxF
RF9BTExfVEVTVFMgPSBbXQotU0hVRkZMRURfQUNUSVZFX1RFU1RTID0gW10KLVNIVUZGTEVEX0ZJ
TFRFUkVEX1RFU1RTID0gW10KLVNIVUZGTEVEX1NIQVJERURfVEVTVFMgPSBbXQotCi0KLWRlZiBB
bHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcoKToKLSAgcmV0dXJuICctLWd0ZXN0X2Fsc29fcnVuX2Rp
c2FibGVkX3Rlc3RzJwotCi0KLWRlZiBGaWx0ZXJGbGFnKHRlc3RfZmlsdGVyKToKLSAgcmV0dXJu
ICctLWd0ZXN0X2ZpbHRlcj0lcycgJSAodGVzdF9maWx0ZXIsKQotCi0KLWRlZiBSZXBlYXRGbGFn
KG4pOgotICByZXR1cm4gJy0tZ3Rlc3RfcmVwZWF0PSVzJyAlIChuLCkKLQotCi1kZWYgU2h1ZmZs
ZUZsYWcoKToKLSAgcmV0dXJuICctLWd0ZXN0X3NodWZmbGUnCi0KLQotZGVmIFJhbmRvbVNlZWRG
bGFnKG4pOgotICByZXR1cm4gJy0tZ3Rlc3RfcmFuZG9tX3NlZWQ9JXMnICUgKG4sKQotCi0KLWRl
ZiBSdW5BbmRSZXR1cm5PdXRwdXQoZXh0cmFfZW52LCBhcmdzKToKLSAgIiIiUnVucyB0aGUgdGVz
dCBwcm9ncmFtIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQuIiIiCi0KLSAgZW52aXJvbl9jb3B5ID0g
b3MuZW52aXJvbi5jb3B5KCkKLSAgZW52aXJvbl9jb3B5LnVwZGF0ZShleHRyYV9lbnYpCi0KLSAg
cmV0dXJuIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhbQ09NTUFORF0gKyBhcmdzLCBlbnY9
ZW52aXJvbl9jb3B5KS5vdXRwdXQKLQotCi1kZWYgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKGV4
dHJhX2VudiwgYXJncyk6Ci0gICIiIlJ1bnMgdGhlIHRlc3QgcHJvZ3JhbSBhbmQgcmV0dXJucyBh
IGxpc3Qgb2YgdGVzdCBsaXN0cy4KLQotICBBcmdzOgotICAgIGV4dHJhX2VudjogYSBtYXAgZnJv
bSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gdGhlaXIgdmFsdWVzCi0gICAgYXJnczogY29tbWFu
ZCBsaW5lIGZsYWdzIHRvIHBhc3MgdG8gZ3Rlc3Rfc2h1ZmZsZV90ZXN0XwotCi0gIFJldHVybnM6
Ci0gICAgQSBsaXN0IHdoZXJlIHRoZSBpLXRoIGVsZW1lbnQgaXMgdGhlIGxpc3Qgb2YgdGVzdHMg
cnVuIGluIHRoZSBpLXRoCi0gICAgdGVzdCBpdGVyYXRpb24uCi0gICIiIgotCi0gIHRlc3RfaXRl
cmF0aW9ucyA9IFtdCi0gIGZvciBsaW5lIGluIFJ1bkFuZFJldHVybk91dHB1dChleHRyYV9lbnYs
IGFyZ3MpLnNwbGl0KCdcbicpOgotICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnLS0tLScpOgotICAg
ICAgdGVzdHMgPSBbXQotICAgICAgdGVzdF9pdGVyYXRpb25zLmFwcGVuZCh0ZXN0cykKLSAgICBl
bGlmIGxpbmUuc3RyaXAoKToKLSAgICAgIHRlc3RzLmFwcGVuZChsaW5lLnN0cmlwKCkpICAjICdU
ZXN0Q2FzZU5hbWUuVGVzdE5hbWUnCi0KLSAgcmV0dXJuIHRlc3RfaXRlcmF0aW9ucwotCi0KLWRl
ZiBHZXRUZXN0Q2FzZXModGVzdHMpOgotICAiIiJSZXR1cm5zIGEgbGlzdCBvZiB0ZXN0IGNhc2Vz
IGluIHRoZSBnaXZlbiBmdWxsIHRlc3QgbmFtZXMuCi0KLSAgQXJnczoKLSAgICB0ZXN0czogYSBs
aXN0IG9mIGZ1bGwgdGVzdCBuYW1lcwotCi0gIFJldHVybnM6Ci0gICAgQSBsaXN0IG9mIHRlc3Qg
Y2FzZXMgZnJvbSAndGVzdHMnLCBpbiB0aGVpciBvcmlnaW5hbCBvcmRlci4KLSAgICBDb25zZWN1
dGl2ZSBkdXBsaWNhdGVzIGFyZSByZW1vdmVkLgotICAiIiIKLQotICB0ZXN0X2Nhc2VzID0gW10K
LSAgZm9yIHRlc3QgaW4gdGVzdHM6Ci0gICAgdGVzdF9jYXNlID0gdGVzdC5zcGxpdCgnLicpWzBd
Ci0gICAgaWYgbm90IHRlc3RfY2FzZSBpbiB0ZXN0X2Nhc2VzOgotICAgICAgdGVzdF9jYXNlcy5h
cHBlbmQodGVzdF9jYXNlKQotCi0gIHJldHVybiB0ZXN0X2Nhc2VzCi0KLQotZGVmIENhbGN1bGF0
ZVRlc3RMaXN0cygpOgotICAiIiJDYWxjdWxhdGVzIHRoZSBsaXN0IG9mIHRlc3RzIHJ1biB1bmRl
ciBkaWZmZXJlbnQgZmxhZ3MuIiIiCi0KLSAgaWYgbm90IEFMTF9URVNUUzoKLSAgICBBTExfVEVT
VFMuZXh0ZW5kKAotICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe30sIFtBbHNvUnVu
RGlzYWJsZWRUZXN0c0ZsYWcoKV0pWzBdKQotCi0gIGlmIG5vdCBBQ1RJVkVfVEVTVFM6Ci0gICAg
QUNUSVZFX1RFU1RTLmV4dGVuZChHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe30sIFtdKVswXSkK
LQotICBpZiBub3QgRklMVEVSRURfVEVTVFM6Ci0gICAgRklMVEVSRURfVEVTVFMuZXh0ZW5kKAot
ICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe30sIFtGaWx0ZXJGbGFnKFRFU1RfRklM
VEVSKV0pWzBdKQotCi0gIGlmIG5vdCBTSEFSREVEX1RFU1RTOgotICAgIFNIQVJERURfVEVTVFMu
ZXh0ZW5kKAotICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe1RPVEFMX1NIQVJEU19F
TlZfVkFSOiAnMycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBUkRfSU5E
RVhfRU5WX1ZBUjogJzEnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKVsw
XSkKLQotICBpZiBub3QgU0hVRkZMRURfQUxMX1RFU1RTOgotICAgIFNIVUZGTEVEX0FMTF9URVNU
Uy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAotICAgICAgICB7fSwgW0Fsc29SdW5E
aXNhYmxlZFRlc3RzRmxhZygpLCBTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0pWzBd
KQotCi0gIGlmIG5vdCBTSFVGRkxFRF9BQ1RJVkVfVEVTVFM6Ci0gICAgU0hVRkZMRURfQUNUSVZF
X1RFU1RTLmV4dGVuZChHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBbU2h1
ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSldKVswXSkKLQotICBpZiBub3QgU0hVRkZMRURf
RklMVEVSRURfVEVTVFM6Ci0gICAgU0hVRkZMRURfRklMVEVSRURfVEVTVFMuZXh0ZW5kKEdldFRl
c3RzRm9yQWxsSXRlcmF0aW9ucygKLSAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21T
ZWVkRmxhZygxKSwgRmlsdGVyRmxhZyhURVNUX0ZJTFRFUildKVswXSkKLQotICBpZiBub3QgU0hV
RkZMRURfU0hBUkRFRF9URVNUUzoKLSAgICBTSFVGRkxFRF9TSEFSREVEX1RFU1RTLmV4dGVuZCgK
LSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjog
JzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VOVl9W
QVI6ICcxJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU2h1ZmZsZUZsYWco
KSwgUmFuZG9tU2VlZEZsYWcoMSldKVswXSkKLQotCi1jbGFzcyBHVGVzdFNodWZmbGVVbml0VGVz
dChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAgIiIiVGVzdHMgdGVzdCBzaHVmZmxpbmcu
IiIiCi0KLSAgZGVmIHNldFVwKHNlbGYpOgotICAgIENhbGN1bGF0ZVRlc3RMaXN0cygpCi0KLSAg
ZGVmIHRlc3RTaHVmZmxlUHJlc2VydmVzTnVtYmVyT2ZUZXN0cyhzZWxmKToKLSAgICBzZWxmLmFz
c2VydEVxdWFsKGxlbihBTExfVEVTVFMpLCBsZW4oU0hVRkZMRURfQUxMX1RFU1RTKSkKLSAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihBQ1RJVkVfVEVTVFMpLCBsZW4oU0hVRkZMRURfQUNUSVZFX1RF
U1RTKSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihGSUxURVJFRF9URVNUUyksIGxlbihTSFVG
RkxFRF9GSUxURVJFRF9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oU0hBUkRFRF9U
RVNUUyksIGxlbihTSFVGRkxFRF9TSEFSREVEX1RFU1RTKSkKLQotICBkZWYgdGVzdFNodWZmbGVD
aGFuZ2VzVGVzdE9yZGVyKHNlbGYpOgotICAgIHNlbGYuYXNzZXJ0XyhTSFVGRkxFRF9BTExfVEVT
VFMgIT0gQUxMX1RFU1RTLCBTSFVGRkxFRF9BTExfVEVTVFMpCi0gICAgc2VsZi5hc3NlcnRfKFNI
VUZGTEVEX0FDVElWRV9URVNUUyAhPSBBQ1RJVkVfVEVTVFMsIFNIVUZGTEVEX0FDVElWRV9URVNU
UykKLSAgICBzZWxmLmFzc2VydF8oU0hVRkZMRURfRklMVEVSRURfVEVTVFMgIT0gRklMVEVSRURf
VEVTVFMsCi0gICAgICAgICAgICAgICAgIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTKQotICAgIHNl
bGYuYXNzZXJ0XyhTSFVGRkxFRF9TSEFSREVEX1RFU1RTICE9IFNIQVJERURfVEVTVFMsCi0gICAg
ICAgICAgICAgICAgIFNIVUZGTEVEX1NIQVJERURfVEVTVFMpCi0KLSAgZGVmIHRlc3RTaHVmZmxl
Q2hhbmdlc1Rlc3RDYXNlT3JkZXIoc2VsZik6Ci0gICAgc2VsZi5hc3NlcnRfKEdldFRlc3RDYXNl
cyhTSFVGRkxFRF9BTExfVEVTVFMpICE9IEdldFRlc3RDYXNlcyhBTExfVEVTVFMpLAotICAgICAg
ICAgICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfQUxMX1RFU1RTKSkKLSAgICBzZWxmLmFz
c2VydF8oCi0gICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9BQ1RJVkVfVEVTVFMpICE9IEdl
dFRlc3RDYXNlcyhBQ1RJVkVfVEVTVFMpLAotICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURf
QUNUSVZFX1RFU1RTKSkKLSAgICBzZWxmLmFzc2VydF8oCi0gICAgICAgIEdldFRlc3RDYXNlcyhT
SFVGRkxFRF9GSUxURVJFRF9URVNUUykgIT0gR2V0VGVzdENhc2VzKEZJTFRFUkVEX1RFU1RTKSwK
LSAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTKSkKLSAgICBzZWxm
LmFzc2VydF8oCi0gICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9TSEFSREVEX1RFU1RTKSAh
PSBHZXRUZXN0Q2FzZXMoU0hBUkRFRF9URVNUUyksCi0gICAgICAgIEdldFRlc3RDYXNlcyhTSFVG
RkxFRF9TSEFSREVEX1RFU1RTKSkKLQotICBkZWYgdGVzdFNodWZmbGVEb2VzTm90UmVwZWF0VGVz
dChzZWxmKToKLSAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9BTExfVEVTVFM6Ci0gICAgICBzZWxm
LmFzc2VydEVxdWFsKDEsIFNIVUZGTEVEX0FMTF9URVNUUy5jb3VudCh0ZXN0KSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UnICUgKHRlc3QsKSkKLSAg
ICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9BQ1RJVkVfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydEVx
dWFsKDEsIFNIVUZGTEVEX0FDVElWRV9URVNUUy5jb3VudCh0ZXN0KSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgJyVzIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UnICUgKHRlc3QsKSkKLSAgICBmb3Ig
dGVzdCBpbiBTSFVGRkxFRF9GSUxURVJFRF9URVNUUzoKLSAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MSwgU0hVRkZMRURfRklMVEVSRURfVEVTVFMuY291bnQodGVzdCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRl
c3QgaW4gU0hVRkZMRURfU0hBUkRFRF9URVNUUzoKLSAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwg
U0hVRkZMRURfU0hBUkRFRF9URVNUUy5jb3VudCh0ZXN0KSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgJyVzIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UnICUgKHRlc3QsKSkKLQotICBkZWYgdGVzdFNo
dWZmbGVEb2VzTm90Q3JlYXRlTmV3VGVzdChzZWxmKToKLSAgICBmb3IgdGVzdCBpbiBTSFVGRkxF
RF9BTExfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBBTExfVEVTVFMsICclcyBp
cyBhbiBpbnZhbGlkIHRlc3QnICUgKHRlc3QsKSkKLSAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9B
Q1RJVkVfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBBQ1RJVkVfVEVTVFMsICcl
cyBpcyBhbiBpbnZhbGlkIHRlc3QnICUgKHRlc3QsKSkKLSAgICBmb3IgdGVzdCBpbiBTSFVGRkxF
RF9GSUxURVJFRF9URVNUUzoKLSAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIEZJTFRFUkVEX1RF
U1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4g
U0hVRkZMRURfU0hBUkRFRF9URVNUUzoKLSAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIQVJE
RURfVEVTVFMsICclcyBpcyBhbiBpbnZhbGlkIHRlc3QnICUgKHRlc3QsKSkKLQotICBkZWYgdGVz
dFNodWZmbGVJbmNsdWRlc0FsbFRlc3RzKHNlbGYpOgotICAgIGZvciB0ZXN0IGluIEFMTF9URVNU
UzoKLSAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIVUZGTEVEX0FMTF9URVNUUywgJyVzIGlz
IG1pc3NpbmcnICUgKHRlc3QsKSkKLSAgICBmb3IgdGVzdCBpbiBBQ1RJVkVfVEVTVFM6Ci0gICAg
ICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMsICclcyBpcyBtaXNz
aW5nJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gRklMVEVSRURfVEVTVFM6Ci0gICAgICBz
ZWxmLmFzc2VydF8odGVzdCBpbiBTSFVGRkxFRF9GSUxURVJFRF9URVNUUywgJyVzIGlzIG1pc3Np
bmcnICUgKHRlc3QsKSkKLSAgICBmb3IgdGVzdCBpbiBTSEFSREVEX1RFU1RTOgotICAgICAgc2Vs
Zi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfU0hBUkRFRF9URVNUUywgJyVzIGlzIG1pc3Npbmcn
ICUgKHRlc3QsKSkKLQotICBkZWYgdGVzdFNodWZmbGVMZWF2ZXNEZWF0aFRlc3RzQXRGcm9udChz
ZWxmKToKLSAgICBub25fZGVhdGhfdGVzdF9mb3VuZCA9IEZhbHNlCi0gICAgZm9yIHRlc3QgaW4g
U0hVRkZMRURfQUNUSVZFX1RFU1RTOgotICAgICAgaWYgJ0RlYXRoVGVzdC4nIGluIHRlc3Q6Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qgbm9uX2RlYXRoX3Rlc3RfZm91bmQsCi0gICAgICAgICAg
ICAgICAgICAgICAnJXMgYXBwZWFycyBhZnRlciBhIG5vbi1kZWF0aCB0ZXN0JyAlICh0ZXN0LCkp
Ci0gICAgICBlbHNlOgotICAgICAgICBub25fZGVhdGhfdGVzdF9mb3VuZCA9IFRydWUKLQotICBk
ZWYgX1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50ZXJsZWF2ZShzZWxmLCB0ZXN0cyk6Ci0gICAgdGVz
dF9jYXNlcyA9IFtdCi0gICAgZm9yIHRlc3QgaW4gdGVzdHM6Ci0gICAgICBbdGVzdF9jYXNlLCBf
XSA9IHRlc3Quc3BsaXQoJy4nKQotICAgICAgaWYgdGVzdF9jYXNlcyBhbmQgdGVzdF9jYXNlc1st
MV0gIT0gdGVzdF9jYXNlOgotICAgICAgICB0ZXN0X2Nhc2VzLmFwcGVuZCh0ZXN0X2Nhc2UpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgdGVzdF9jYXNlcy5jb3VudCh0ZXN0X2Nhc2UpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICdUZXN0IGNhc2UgJXMgaXMgbm90IGdyb3VwZWQgdG9n
ZXRoZXIgaW4gJXMnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAodGVzdF9jYXNlLCB0ZXN0
cykpCi0KLSAgZGVmIHRlc3RTaHVmZmxlRG9lc05vdEludGVybGVhdmVUZXN0Q2FzZXMoc2VsZik6
Ci0gICAgc2VsZi5fVmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRlcmxlYXZlKFNIVUZGTEVEX0FMTF9U
RVNUUykKLSAgICBzZWxmLl9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUoU0hVRkZMRURf
QUNUSVZFX1RFU1RTKQotICAgIHNlbGYuX1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50ZXJsZWF2ZShT
SFVGRkxFRF9GSUxURVJFRF9URVNUUykKLSAgICBzZWxmLl9WZXJpZnlUZXN0Q2FzZXNEb05vdElu
dGVybGVhdmUoU0hVRkZMRURfU0hBUkRFRF9URVNUUykKLQotICBkZWYgdGVzdFNodWZmbGVSZXN0
b3Jlc09yZGVyQWZ0ZXJFYWNoSXRlcmF0aW9uKHNlbGYpOgotICAgICMgR2V0IHRoZSB0ZXN0IGxp
c3RzIGluIGFsbCAzIGl0ZXJhdGlvbnMsIHVzaW5nIHJhbmRvbSBzZWVkIDEsIDIsCi0gICAgIyBh
bmQgMyByZXNwZWN0aXZlbHkuICBHb29nbGUgVGVzdCBwaWNrcyBhIGRpZmZlcmVudCBzZWVkIGlu
IGVhY2gKLSAgICAjIGl0ZXJhdGlvbiwgYW5kIHRoaXMgdGVzdCBkZXBlbmRzIG9uIHRoZSBjdXJy
ZW50IGltcGxlbWVudGF0aW9uCi0gICAgIyBwaWNraW5nIHN1Y2Nlc3NpdmUgbnVtYmVycy4gIFRo
aXMgZGVwZW5kZW5jeSBpcyBub3QgaWRlYWwsIGJ1dAotICAgICMgbWFrZXMgdGhlIHRlc3QgbXVj
aCBlYXNpZXIgdG8gd3JpdGUuCi0gICAgW3Rlc3RzX2luX2l0ZXJhdGlvbjEsIHRlc3RzX2luX2l0
ZXJhdGlvbjIsIHRlc3RzX2luX2l0ZXJhdGlvbjNdID0gKAotICAgICAgICBHZXRUZXN0c0ZvckFs
bEl0ZXJhdGlvbnMoCi0gICAgICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRG
bGFnKDEpLCBSZXBlYXRGbGFnKDMpXSkpCi0KLSAgICAjIE1ha2Ugc3VyZSBydW5uaW5nIHRoZSB0
ZXN0cyB3aXRoIHJhbmRvbSBzZWVkIDEgZ2V0cyB0aGUgc2FtZQotICAgICMgb3JkZXIgYXMgaW4g
aXRlcmF0aW9uIDEgYWJvdmUuCi0gICAgW3Rlc3RzX3dpdGhfc2VlZDFdID0gR2V0VGVzdHNGb3JB
bGxJdGVyYXRpb25zKAotICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFn
KDEpXSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzX2luX2l0ZXJhdGlvbjEsIHRlc3RzX3dp
dGhfc2VlZDEpCi0KLSAgICAjIE1ha2Ugc3VyZSBydW5uaW5nIHRoZSB0ZXN0cyB3aXRoIHJhbmRv
bSBzZWVkIDIgZ2V0cyB0aGUgc2FtZQotICAgICMgb3JkZXIgYXMgaW4gaXRlcmF0aW9uIDIgYWJv
dmUuICBTdWNjZXNzIG1lYW5zIHRoYXQgR29vZ2xlIFRlc3QKLSAgICAjIGNvcnJlY3RseSByZXN0
b3JlcyB0aGUgdGVzdCBvcmRlciBiZWZvcmUgcmUtc2h1ZmZsaW5nIGF0IHRoZQotICAgICMgYmVn
aW5uaW5nIG9mIGl0ZXJhdGlvbiAyLgotICAgIFt0ZXN0c193aXRoX3NlZWQyXSA9IEdldFRlc3Rz
Rm9yQWxsSXRlcmF0aW9ucygKLSAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVk
RmxhZygyKV0pCi0gICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0c19pbl9pdGVyYXRpb24yLCB0ZXN0
c193aXRoX3NlZWQyKQotCi0gICAgIyBNYWtlIHN1cmUgcnVubmluZyB0aGUgdGVzdHMgd2l0aCBy
YW5kb20gc2VlZCAzIGdldHMgdGhlIHNhbWUKLSAgICAjIG9yZGVyIGFzIGluIGl0ZXJhdGlvbiAz
IGFib3ZlLiAgU3VjY2VzcyBtZWFucyB0aGF0IEdvb2dsZSBUZXN0Ci0gICAgIyBjb3JyZWN0bHkg
cmVzdG9yZXMgdGhlIHRlc3Qgb3JkZXIgYmVmb3JlIHJlLXNodWZmbGluZyBhdCB0aGUKLSAgICAj
IGJlZ2lubmluZyBvZiBpdGVyYXRpb24gMy4KLSAgICBbdGVzdHNfd2l0aF9zZWVkM10gPSBHZXRU
ZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9t
U2VlZEZsYWcoMyldKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHNfaW5faXRlcmF0aW9uMywg
dGVzdHNfd2l0aF9zZWVkMykKLQotICBkZWYgdGVzdFNodWZmbGVHZW5lcmF0ZXNOZXdPcmRlcklu
RWFjaEl0ZXJhdGlvbihzZWxmKToKLSAgICBbdGVzdHNfaW5faXRlcmF0aW9uMSwgdGVzdHNfaW5f
aXRlcmF0aW9uMiwgdGVzdHNfaW5faXRlcmF0aW9uM10gPSAoCi0gICAgICAgIEdldFRlc3RzRm9y
QWxsSXRlcmF0aW9ucygKLSAgICAgICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2Vl
ZEZsYWcoMSksIFJlcGVhdEZsYWcoMyldKSkKLQotICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0c19pbl9p
dGVyYXRpb24xICE9IHRlc3RzX2luX2l0ZXJhdGlvbjIsCi0gICAgICAgICAgICAgICAgIHRlc3Rz
X2luX2l0ZXJhdGlvbjEpCi0gICAgc2VsZi5hc3NlcnRfKHRlc3RzX2luX2l0ZXJhdGlvbjEgIT0g
dGVzdHNfaW5faXRlcmF0aW9uMywKLSAgICAgICAgICAgICAgICAgdGVzdHNfaW5faXRlcmF0aW9u
MSkKLSAgICBzZWxmLmFzc2VydF8odGVzdHNfaW5faXRlcmF0aW9uMiAhPSB0ZXN0c19pbl9pdGVy
YXRpb24zLAotICAgICAgICAgICAgICAgICB0ZXN0c19pbl9pdGVyYXRpb24yKQotCi0gIGRlZiB0
ZXN0U2h1ZmZsZVNoYXJkZWRUZXN0c1ByZXNlcnZlc1BhcnRpdGlvbihzZWxmKToKLSAgICAjIElm
IHdlIHJ1biBNIHRlc3RzIG9uIE4gc2hhcmRzLCB0aGUgc2FtZSBNIHRlc3RzIHNob3VsZCBiZSBy
dW4gaW4KLSAgICAjIHRvdGFsLCByZWdhcmRsZXNzIG9mIHRoZSByYW5kb20gc2VlZHMgdXNlZCBi
eSB0aGUgc2hhcmRzLgotICAgIFt0ZXN0czFdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtU
T1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMCd9LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0p
Ci0gICAgW3Rlc3RzMl0gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe1RPVEFMX1NIQVJEU19F
TlZfVkFSOiAnMycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNI
QVJEX0lOREVYX0VOVl9WQVI6ICcxJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDIwKV0pCi0gICAgW3Rlc3Rz
M10gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe1RPVEFMX1NIQVJEU19FTlZfVkFSOiAnMycs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VO
Vl9WQVI6ICcyJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1No
dWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDI1KV0pCi0gICAgc29ydGVkX3NoYXJkZWRfdGVz
dHMgPSB0ZXN0czEgKyB0ZXN0czIgKyB0ZXN0czMKLSAgICBzb3J0ZWRfc2hhcmRlZF90ZXN0cy5z
b3J0KCkKLSAgICBzb3J0ZWRfYWN0aXZlX3Rlc3RzID0gW10KLSAgICBzb3J0ZWRfYWN0aXZlX3Rl
c3RzLmV4dGVuZChBQ1RJVkVfVEVTVFMpCi0gICAgc29ydGVkX2FjdGl2ZV90ZXN0cy5zb3J0KCkK
LSAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZF9hY3RpdmVfdGVzdHMsIHNvcnRlZF9zaGFyZGVk
X3Rlc3RzKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBndGVzdF90ZXN0X3V0aWxz
Lk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9z
aHVmZmxlX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVm
ZmxlX3Rlc3RfLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2VjZjc3NzBhMTQx
MTc2NjhiNGFkZWE2ZmI2ZjUwMjY2NzE3ZGU3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1
ZmZsZV90ZXN0Xy5jYworKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vLyBDb3B5cmln
aHQgMjAwOSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8v
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlv
bi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29v
Z2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBWZXJpZmllcyB0aGF0IHRlc3Qgc2h1ZmZsaW5n
IHdvcmtzLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotbmFtZXNwYWNlIHsKLQotdXNp
bmcgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyOwotdXNpbmcgOjp0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6TWVzc2FnZTsKLXVzaW5nIDo6dGVzdGlu
Zzo6VGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzOwotdXNpbmcgOjp0
ZXN0aW5nOjpUZXN0SW5mbzsKLXVzaW5nIDo6dGVzdGluZzo6VW5pdFRlc3Q7Ci11c2luZyA6OnRl
c3Rpbmc6OmludGVybmFsOjpTdHJpbmc7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpzY29w
ZWRfcHRyOwotCi0vLyBUaGUgdGVzdCBtZXRob2RzIGFyZSBlbXB0eSwgYXMgdGhlIHNvbGUgcHVy
cG9zZSBvZiB0aGlzIHByb2dyYW0gaXMKLS8vIHRvIHByaW50IHRoZSB0ZXN0IG5hbWVzIGJlZm9y
ZS9hZnRlciBzaHVmZmxpbmcuCi0KLWNsYXNzIEEgOiBwdWJsaWMgVGVzdCB7fTsKLVRFU1RfRihB
LCBBKSB7fQotVEVTVF9GKEEsIEIpIHt9Ci0KLVRFU1QoQURlYXRoVGVzdCwgQSkge30KLVRFU1Qo
QURlYXRoVGVzdCwgQikge30KLVRFU1QoQURlYXRoVGVzdCwgQykge30KLQotVEVTVChCLCBBKSB7
fQotVEVTVChCLCBCKSB7fQotVEVTVChCLCBDKSB7fQotVEVTVChCLCBESVNBQkxFRF9EKSB7fQot
VEVTVChCLCBESVNBQkxFRF9FKSB7fQotCi1URVNUKEJEZWF0aFRlc3QsIEEpIHt9Ci1URVNUKEJE
ZWF0aFRlc3QsIEIpIHt9Ci0KLVRFU1QoQywgQSkge30KLVRFU1QoQywgQikge30KLVRFU1QoQywg
Qykge30KLVRFU1QoQywgRElTQUJMRURfRCkge30KLQotVEVTVChDRGVhdGhUZXN0LCBBKSB7fQot
Ci1URVNUKERJU0FCTEVEX0QsIEEpIHt9Ci1URVNUKERJU0FCTEVEX0QsIERJU0FCTEVEX0IpIHt9
Ci0KLS8vIFRoaXMgcHJpbnRlciBwcmludHMgdGhlIGZ1bGwgdGVzdCBuYW1lcyBvbmx5LCBzdGFy
dGluZyBlYWNoIHRlc3QKLS8vIGl0ZXJhdGlvbiB3aXRoIGEgIi0tLS0iIG1hcmtlci4KLWNsYXNz
IFRlc3ROYW1lUHJpbnRlciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKLSBwdWJs
aWM6Ci0gIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25TdGFydChjb25zdCBVbml0VGVzdCYg
LyogdW5pdF90ZXN0ICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IC8qIGl0ZXJhdGlvbiAqLykgewotICAgIHByaW50ZigiLS0tLVxuIik7Ci0gIH0KLQotICB2aXJ0
dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbykgewotICAgIHBy
aW50ZigiJXMuJXNcbiIsIHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFt
ZSgpKTsKLSAgfQotfTsKLQotfSAgLy8gbmFtZXNwYWNlCi0KLWludCBtYWluKGludCBhcmdjLCBj
aGFyICoqYXJndikgewotICBJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgLy8gUmVw
bGFjZXMgdGhlIGRlZmF1bHQgcHJpbnRlciB3aXRoIFRlc3ROYW1lUHJpbnRlciwgd2hpY2ggcHJp
bnRzCi0gIC8vIHRoZSB0ZXN0IG5hbWUgb25seS4KLSAgVGVzdEV2ZW50TGlzdGVuZXJzJiBsaXN0
ZW5lcnMgPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCk7Ci0gIGRlbGV0ZSBs
aXN0ZW5lcnMuUmVsZWFzZShsaXN0ZW5lcnMuZGVmYXVsdF9yZXN1bHRfcHJpbnRlcigpKTsKLSAg
bGlzdGVuZXJzLkFwcGVuZChuZXcgVGVzdE5hbWVQcmludGVyKTsKLQotICByZXR1cm4gUlVOX0FM
TF9URVNUUygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9zb2xlX2hlYWRlcl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9zb2xlX2hlYWRlcl90ZXN0LmNjCmluZGV4IGRlOTFlODAwZjVhMTM4Mjk5OWZjMjAxZjVj
ZjNjZTA0NjRjYWExY2UuLjFkOTRhYzZiM2FkOWY5ZjdkYmFkYmZiMmJmNzQ5YjgyNzE1NjBkYWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFk
ZXJfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3NvbGVf
aGVhZGVyX3Rlc3QuY2MKQEAgLTI2LDEzICsyNiwxMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogbWhldWxlQGdvb2dsZS5j
b20gKE1hcmt1cyBIZXVsZSkKKwogLy8KIC8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGl0J3Mg
cG9zc2libGUgdG8gdXNlIEdvb2dsZSBUZXN0IGJ5IGluY2x1ZGluZwogLy8gdGhlIGd0ZXN0Lmgg
aGVhZGVyIGZpbGUgYWxvbmUuCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCiAKIG5hbWVzcGFjZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc3RyZXNzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X3N0cmVzc190ZXN0LmNjCmluZGV4IGY1YWY3OGNjNmQzZjM5NWEw
MGQ0ZDFjZTg1OTlmYTVmMWRmYTc2MjYuLjk1YWRhMzljMzM3ZDBkNGVjZTZmZjViMzIzMmRlOTZj
M2Q1OTg2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
c3RyZXNzX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9z
dHJlc3NfdGVzdC5jYwpAQCAtMjYsMjMgKzI2LDE2IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAo
WmhhbnlvbmcgV2FuKQorCiAKIC8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFKCkgYW5kIHZhcmlv
dXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBjYW4gYmUKIC8vIHVzZWQgaW4gYSBsYXJnZSBudW1i
ZXIgb2YgdGhyZWFkcyBjb25jdXJyZW50bHkuCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKLSNpbmNsdWRlIDxpb3N0cmVhbT4KICNpbmNsdWRl
IDx2ZWN0b3I+CiAKLS8vIFdlIG11c3QgZGVmaW5lIHRoaXMgbWFjcm8gaW4gb3JkZXIgdG8gI2lu
Y2x1ZGUKLS8vIGd0ZXN0LWludGVybmFsLWlubC5oLiAgVGhpcyBpcyBob3cgR29vZ2xlIFRlc3Qg
cHJldmVudHMgYSB1c2VyIGZyb20KLS8vIGFjY2lkZW50YWxseSBkZXBlbmRpbmcgb24gaXRzIGlu
dGVybmFsIGltcGxlbWVudGF0aW9uLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQog
I2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1F
TlRBVElPTl8KIAogI2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKIApAQCAtNTAsNyArNDMsNiBAQCBu
YW1lc3BhY2UgdGVzdGluZyB7CiBuYW1lc3BhY2UgewogCiB1c2luZyBpbnRlcm5hbDo6Tm90aWZp
Y2F0aW9uOwotdXNpbmcgaW50ZXJuYWw6OlN0cmluZzsKIHVzaW5nIGludGVybmFsOjpUZXN0UHJv
cGVydHlLZXlJczsKIHVzaW5nIGludGVybmFsOjpUaHJlYWRXaXRoUGFyYW07CiB1c2luZyBpbnRl
cm5hbDo6c2NvcGVkX3B0cjsKQEAgLTYyLDEzICs1NCwxMyBAQCB1c2luZyBpbnRlcm5hbDo6c2Nv
cGVkX3B0cjsKIC8vIEhvdyBtYW55IHRocmVhZHMgdG8gY3JlYXRlPwogY29uc3QgaW50IGtUaHJl
YWRDb3VudCA9IDUwOwogCi1TdHJpbmcgSWRUb0tleShpbnQgaWQsIGNvbnN0IGNoYXIqIHN1ZmZp
eCkgeworc3RkOjpzdHJpbmcgSWRUb0tleShpbnQgaWQsIGNvbnN0IGNoYXIqIHN1ZmZpeCkgewog
ICBNZXNzYWdlIGtleTsKICAga2V5IDw8ICJrZXlfIiA8PCBpZCA8PCAiXyIgPDwgc3VmZml4Owog
ICByZXR1cm4ga2V5LkdldFN0cmluZygpOwogfQogCi1TdHJpbmcgSWRUb1N0cmluZyhpbnQgaWQp
IHsKK3N0ZDo6c3RyaW5nIElkVG9TdHJpbmcoaW50IGlkKSB7CiAgIE1lc3NhZ2UgaWRfbWVzc2Fn
ZTsKICAgaWRfbWVzc2FnZSA8PCBpZDsKICAgcmV0dXJuIGlkX21lc3NhZ2UuR2V0U3RyaW5nKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RfbWFj
cm9fc3RhY2tfZm9vdHByaW50X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X3Rlc3RfbWFjcm9fc3RhY2tfZm9vdHByaW50X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ4
ZGIwNTAxMmNjMzBlMGVkZjRhMTM1NGZmMzkyYzkyZDAwMGJmMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGVzdF9tYWNyb19zdGFja19mb290
cHJpbnRfdGVzdC5jYwpAQCAtMCwwICsxLDg5IEBACisvLyBDb3B5cmlnaHQgMjAxMywgR29vZ2xl
IEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
Ky8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vCisvLyBFYWNoIFRFU1QoKSBleHBhbmRzIHRvIHNvbWUg
c3RhdGljIHJlZ2lzdHJhdGlvbiBsb2dpYy4gIEdDQyBwdXRzIGFsbAorLy8gc3VjaCBzdGF0aWMg
aW5pdGlhbGl6YXRpb24gbG9naWMgZm9yIGEgdHJhbnNsYXRpb24gdW5pdCBpbiBhIGNvbW1vbiwK
Ky8vIGludGVybmFsIGZ1bmN0aW9uLiAgU2luY2UgR29vZ2xlJ3MgYnVpbGQgc3lzdGVtIHJlc3Ry
aWN0cyBob3cgbXVjaAorLy8gc3RhY2sgc3BhY2UgYSBmdW5jdGlvbiBjYW4gdXNlLCB0aGVyZSdz
IGEgbGltaXQgb24gaG93IG1hbnkgVEVTVCgpcworLy8gb25lIGNhbiBwdXQgaW4gYSBzaW5nbGUg
QysrIHRlc3QgZmlsZS4gIFRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgYSBsYXJnZQorLy8gbnVtYmVy
IG9mIFRFU1QoKXMgY2FuIGJlIGRlZmluZWQgaW4gdGhlIHNhbWUgdHJhbnNsYXRpb24gdW5pdC4K
KworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKy8vIFRoaXMgbWFjcm8gZGVmaW5lcyAxMCBk
dW1teSB0ZXN0cy4KKyNkZWZpbmUgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZSkgXAorICBURVNU
KHRlc3RfY2FzZV9uYW1lLCBUMCkge30gXAorICBURVNUKHRlc3RfY2FzZV9uYW1lLCBUMSkge30g
XAorICBURVNUKHRlc3RfY2FzZV9uYW1lLCBUMikge30gXAorICBURVNUKHRlc3RfY2FzZV9uYW1l
LCBUMykge30gXAorICBURVNUKHRlc3RfY2FzZV9uYW1lLCBUNCkge30gXAorICBURVNUKHRlc3Rf
Y2FzZV9uYW1lLCBUNSkge30gXAorICBURVNUKHRlc3RfY2FzZV9uYW1lLCBUNikge30gXAorICBU
RVNUKHRlc3RfY2FzZV9uYW1lLCBUNykge30gXAorICBURVNUKHRlc3RfY2FzZV9uYW1lLCBUOCkg
e30gXAorICBURVNUKHRlc3RfY2FzZV9uYW1lLCBUOSkge30KKworLy8gVGhpcyBtYWNybyBkZWZp
bmVzIDEwMCBkdW1teSB0ZXN0cy4KKyNkZWZpbmUgSFVORFJFRF9URVNUU18odGVzdF9jYXNlX25h
bWVfcHJlZml4KSBcCisgIFRFTl9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDApIFwK
KyAgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgMSkgXAorICBURU5fVEVTVFNf
KHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyAyKSBcCisgIFRFTl9URVNUU18odGVzdF9jYXNlX25h
bWVfcHJlZml4ICMjIDMpIFwKKyAgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMg
NCkgXAorICBURU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyA1KSBcCisgIFRFTl9U
RVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDYpIFwKKyAgVEVOX1RFU1RTXyh0ZXN0X2Nh
c2VfbmFtZV9wcmVmaXggIyMgNykgXAorICBURU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZp
eCAjIyA4KSBcCisgIFRFTl9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDkpCisKKy8v
IFRoaXMgbWFjcm8gZGVmaW5lcyAxMDAwIGR1bW15IHRlc3RzLgorI2RlZmluZSBUSE9VU0FORF9U
RVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4KSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3RfY2Fz
ZV9uYW1lX3ByZWZpeCAjIyAwKSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3By
ZWZpeCAjIyAxKSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyAy
KSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyAzKSBcCisgIEhV
TkRSRURfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyA0KSBcCisgIEhVTkRSRURfVEVT
VFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyA1KSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3Rf
Y2FzZV9uYW1lX3ByZWZpeCAjIyA2KSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3RfY2FzZV9uYW1l
X3ByZWZpeCAjIyA3KSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAj
IyA4KSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyA5KQorCisv
LyBFbnN1cmVzIHRoYXQgd2UgY2FuIGRlZmluZSAxMDAwIFRFU1QoKXMgaW4gdGhlIHNhbWUgdHJh
bnNsYXRpb24KKy8vIHVuaXQuCitUSE9VU0FORF9URVNUU18oVCkKKworaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIgKiphcmd2KSB7CisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2
KTsKKworICAvLyBXZSBkb24ndCBhY3R1YWxseSBuZWVkIHRvIHJ1biB0aGUgZHVtbXkgdGVzdHMg
LSB0aGUgcHVycG9zZSBpcyB0bworICAvLyBlbnN1cmUgdGhhdCB0aGV5IGNvbXBpbGUuCisgIHJl
dHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF90ZXN0X3V0aWxzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0
X3V0aWxzLnB5CmluZGV4IGUwZjU5NzNlN2VhNmY4MWU2NjZjMzEyMWMzYzhmYTg0M2Y0MzRmNjEu
LjQzY2JhOGY0Y2Q2MWRmZmYzYTFhNTIxMDFiZWQzZTczNGE1ZTFiNTQgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGVzdF91dGlscy5weQorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RfdXRpbHMucHkKQEAgLTEsNSArMSwz
IEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKICMgQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJ
bmMuCiAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCkBAIC0yOSwyMCArMjcsMjEgQEAKICMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSIiIlVuaXQgdGVzdCB1dGlsaXRpZXMgZm9yIEdv
b2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsuIiIiCisiIiJVbml0IHRlc3QgdXRpbGl0aWVzIGZv
ciBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrLiIiIgorIyBTdXBwcmVz
c2VzIHRoZSAnSW1wb3J0IG5vdCBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlJyBsaW50IGNvbXBsYWlu
dC4KKyMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjIwNAorCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMK
IAotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKK0lTX1dJTkRP
V1MgPSBvcy5uYW1lID09ICdudCcKK0lTX0NZR1dJTiA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBhbmQg
J0NZR1dJTicgaW4gb3MudW5hbWUoKVswXQogCiBpbXBvcnQgYXRleGl0Ci1pbXBvcnQgb3MKIGlt
cG9ydCBzaHV0aWwKLWltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHVuaXR0ZXN0
Ci1fdGVzdF9tb2R1bGUgPSB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0IGFzIF90ZXN0X21vZHVs
ZQogCi0jIFN1cHByZXNzZXMgdGhlICdJbXBvcnQgbm90IGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUn
IGxpbnQgY29tcGxhaW50LgotIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2MjA0CiB0cnk6CiAgIGlt
cG9ydCBzdWJwcm9jZXNzCiAgIF9TVUJQUk9DRVNTX01PRFVMRV9BVkFJTEFCTEUgPSBUcnVlCkBA
IC01MywxOCArNTIsMzAgQEAgZXhjZXB0OgogCiBHVEVTVF9PVVRQVVRfVkFSX05BTUUgPSAnR1RF
U1RfT1VUUFVUJwogCi1JU19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCi1JU19DWUdXSU4gPSBv
cy5uYW1lID09ICdwb3NpeCcgYW5kICdDWUdXSU4nIGluIG9zLnVuYW1lKClbMF0KKyMgVGhlIGVu
dmlyb25tZW50IHZhcmlhYmxlIGZvciBzcGVjaWZ5aW5nIHRoZSBwYXRoIHRvIHRoZSBwcmVtYXR1
cmUtZXhpdCBmaWxlLgorUFJFTUFUVVJFX0VYSVRfRklMRV9FTlZfVkFSID0gJ1RFU1RfUFJFTUFU
VVJFX0VYSVRfRklMRScKKworZW52aXJvbiA9IG9zLmVudmlyb24uY29weSgpCisKKworZGVmIFNl
dEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6CisgICIiIlNldHMvdW5zZXRzIGFuIGVudmlyb25tZW50
IHZhcmlhYmxlIHRvIGEgZ2l2ZW4gdmFsdWUuIiIiCisKKyAgaWYgdmFsdWUgaXMgbm90IE5vbmU6
CisgICAgZW52aXJvbltlbnZfdmFyXSA9IHZhbHVlCisgIGVsaWYgZW52X3ZhciBpbiBlbnZpcm9u
OgorICAgIGRlbCBlbnZpcm9uW2Vudl92YXJdCisKIAogIyBIZXJlIHdlIGV4cG9zZSBhIGNsYXNz
IGZyb20gYSBwYXJ0aWN1bGFyIG1vZHVsZSwgZGVwZW5kaW5nIG9uIHRoZQogIyBlbnZpcm9ubWVu
dC4gVGhlIGNvbW1lbnQgc3VwcHJlc3NlcyB0aGUgJ0ludmFsaWQgdmFyaWFibGUgbmFtZScgbGlu
dAogIyBjb21wbGFpbnQuCi1UZXN0Q2FzZSA9IF90ZXN0X21vZHVsZS5UZXN0Q2FzZSAgIyBweWxp
bnQ6IGRpc2FibGUtbXNnPUM2NDA5CitUZXN0Q2FzZSA9IF90ZXN0X21vZHVsZS5UZXN0Q2FzZSAg
IyBweWxpbnQ6IGRpc2FibGU9QzY0MDkKIAogIyBJbml0aWFsbHkgbWFwcyBhIGZsYWcgdG8gaXRz
IGRlZmF1bHQgdmFsdWUuIEFmdGVyCiAjIF9QYXJzZUFuZFN0cmlwR1Rlc3RGbGFncygpIGlzIGNh
bGxlZCwgbWFwcyBhIGZsYWcgdG8gaXRzIGFjdHVhbCB2YWx1ZS4KLV9mbGFnX21hcCA9IHsnZ3Rl
c3Rfc291cmNlX2Rpcic6IG9zLnBhdGguZGlybmFtZShzeXMuYXJndlswXSksCi0gICAgICAgICAg
ICAgJ2d0ZXN0X2J1aWxkX2Rpcic6IG9zLnBhdGguZGlybmFtZShzeXMuYXJndlswXSl9CitfZmxh
Z19tYXAgPSB7J3NvdXJjZV9kaXInOiBvcy5wYXRoLmRpcm5hbWUoc3lzLmFyZ3ZbMF0pLAorICAg
ICAgICAgICAgICdidWlsZF9kaXInOiBvcy5wYXRoLmRpcm5hbWUoc3lzLmFyZ3ZbMF0pfQogX2d0
ZXN0X2ZsYWdzX2FyZV9wYXJzZWQgPSBGYWxzZQogCiAKQEAgLTczLDcgKzg0LDcgQEAgZGVmIF9Q
YXJzZUFuZFN0cmlwR1Rlc3RGbGFncyhhcmd2KToKIAogICAjIFN1cHByZXNzZXMgdGhlIGxpbnQg
Y29tcGxhaW50IGFib3V0IGEgZ2xvYmFsIHZhcmlhYmxlIHNpbmNlIHdlIG5lZWQgaXQKICAgIyBo
ZXJlIHRvIG1haW50YWluIG1vZHVsZS13aWRlIHN0YXRlLgotICBnbG9iYWwgX2d0ZXN0X2ZsYWdz
X2FyZV9wYXJzZWQgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1XMDYwMworICBnbG9iYWwgX2d0ZXN0
X2ZsYWdzX2FyZV9wYXJzZWQgICMgcHlsaW50OiBkaXNhYmxlPVcwNjAzCiAgIGlmIF9ndGVzdF9m
bGFnc19hcmVfcGFyc2VkOgogICAgIHJldHVybgogCkBAIC0xMTEsMTMgKzEyMiwxMyBAQCBkZWYg
R2V0RmxhZyhmbGFnKToKIGRlZiBHZXRTb3VyY2VEaXIoKToKICAgIiIiUmV0dXJucyB0aGUgYWJz
b2x1dGUgcGF0aCBvZiB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSAucHkgZmlsZXMgYXJlLiIiIgog
Ci0gIHJldHVybiBvcy5wYXRoLmFic3BhdGgoR2V0RmxhZygnZ3Rlc3Rfc291cmNlX2RpcicpKQor
ICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKEdldEZsYWcoJ3NvdXJjZV9kaXInKSkKIAogCiBkZWYg
R2V0QnVpbGREaXIoKToKICAgIiIiUmV0dXJucyB0aGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgZGly
ZWN0b3J5IHdoZXJlIHRoZSB0ZXN0IGJpbmFyaWVzIGFyZS4iIiIKIAotICByZXR1cm4gb3MucGF0
aC5hYnNwYXRoKEdldEZsYWcoJ2d0ZXN0X2J1aWxkX2RpcicpKQorICByZXR1cm4gb3MucGF0aC5h
YnNwYXRoKEdldEZsYWcoJ2J1aWxkX2RpcicpKQogCiAKIF90ZW1wX2RpciA9IE5vbmUKQEAgLTEz
MCw4ICsxNDEsNiBAQCBhdGV4aXQucmVnaXN0ZXIoX1JlbW92ZVRlbXBEaXIpCiAKIAogZGVmIEdl
dFRlbXBEaXIoKToKLSAgIiIiUmV0dXJucyBhIGRpcmVjdG9yeSBmb3IgdGVtcG9yYXJ5IGZpbGVz
LiIiIgotCiAgIGdsb2JhbCBfdGVtcF9kaXIKICAgaWYgbm90IF90ZW1wX2RpcjoKICAgICBfdGVt
cF9kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKQEAgLTE2MCwxMyArMTY5LDkgQEAgZGVmIEdldFRl
c3RFeGVjdXRhYmxlUGF0aChleGVjdXRhYmxlX25hbWUsIGJ1aWxkX2Rpcj1Ob25lKToKIAogICBp
ZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aCk6CiAgICAgbWVzc2FnZSA9ICgKLSAgICAgICAgJ1Vu
YWJsZSB0byBmaW5kIHRoZSB0ZXN0IGJpbmFyeS4gUGxlYXNlIG1ha2Ugc3VyZSB0byBwcm92aWRl
IHBhdGhcbicKLSAgICAgICAgJ3RvIHRoZSBiaW5hcnkgdmlhIHRoZSAtLWd0ZXN0X2J1aWxkX2Rp
ciBmbGFnIG9yIHRoZSBHVEVTVF9CVUlMRF9ESVJcbicKLSAgICAgICAgJ2Vudmlyb25tZW50IHZh
cmlhYmxlLiBGb3IgY29udmVuaWVudCB1c2UsIGludm9rZSB0aGlzIHNjcmlwdCB2aWFcbicKLSAg
ICAgICAgJ21rX3Rlc3QucHkuXG4nCi0gICAgICAgICMgVE9ETyh2bGFkbEBnb29nbGUuY29tKTog
Y2hhbmdlIG1rX3Rlc3QucHkgdG8gdGVzdC5weSBhZnRlciByZW5hbWluZwotICAgICAgICAjIHRo
ZSBmaWxlLgotICAgICAgICAnUGxlYXNlIHJ1biBta190ZXN0LnB5IC1oIGZvciBoZWxwLicpCisg
ICAgICAgICdVbmFibGUgdG8gZmluZCB0aGUgdGVzdCBiaW5hcnkgIiVzIi4gUGxlYXNlIG1ha2Ug
c3VyZSB0byBwcm92aWRlXG4nCisgICAgICAgICdhIHBhdGggdG8gdGhlIGJpbmFyeSB2aWEgdGhl
IC0tYnVpbGRfZGlyIGZsYWcgb3IgdGhlIEJVSUxEX0RJUlxuJworICAgICAgICAnZW52aXJvbm1l
bnQgdmFyaWFibGUuJyAlIHBhdGgpCiAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgbWVzc2FnZQog
ICAgIHN5cy5leGl0KDEpCiAKQEAgLTIzNCw3ICsyMzksNyBAQCBjbGFzcyBTdWJwcm9jZXNzOgog
ICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdGRlcnIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjd2Q9d29ya2luZ19kaXIsIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVl
LCBlbnY9ZW52KQotICAgICAgIyBjb21tdW5pY2F0ZSByZXR1cm5zIGEgdHVwbGUgd2l0aCB0aGUg
ZmlsZSBvYmVjdCBmb3IgdGhlIGNoaWxkJ3MKKyAgICAgICMgY29tbXVuaWNhdGUgcmV0dXJucyBh
IHR1cGxlIHdpdGggdGhlIGZpbGUgb2JqZWN0IGZvciB0aGUgY2hpbGQncwogICAgICAgIyBvdXRw
dXQuCiAgICAgICBzZWxmLm91dHB1dCA9IHAuY29tbXVuaWNhdGUoKVswXQogICAgICAgc2VsZi5f
cmV0dXJuX2NvZGUgPSBwLnJldHVybmNvZGUKQEAgLTI0NSw3ICsyNTAsNyBAQCBjbGFzcyBTdWJw
cm9jZXNzOgogICAgICAgICAjIENoYW5nZXMgbWFkZSBieSBvcy5lbnZpcm9uLmNsZWFyIGFyZSBu
b3QgaW5oZXJpdGFibGUgYnkgY2hpbGQKICAgICAgICAgIyBwcm9jZXNzZXMgdW50aWwgUHl0aG9u
IDIuNi4gVG8gcHJvZHVjZSBpbmhlcml0YWJsZSBjaGFuZ2VzIHdlIGhhdmUKICAgICAgICAgIyB0
byBkZWxldGUgZW52aXJvbm1lbnQgaXRlbXMgd2l0aCB0aGUgZGVsIHN0YXRlbWVudC4KLSAgICAg
ICAgZm9yIGtleSBpbiBkZXN0OgorICAgICAgICBmb3Iga2V5IGluIGRlc3Qua2V5cygpOgogICAg
ICAgICAgIGRlbCBkZXN0W2tleV0KICAgICAgICAgZGVzdC51cGRhdGUoc3JjKQogCkBAIC0zMDEs
NyArMzA2LDcgQEAgZGVmIE1haW4oKToKICAgX1BhcnNlQW5kU3RyaXBHVGVzdEZsYWdzKHN5cy5h
cmd2KQogICAjIFRoZSB0ZXN0ZWQgYmluYXJpZXMgc2hvdWxkIG5vdCBiZSB3cml0aW5nIFhNTCBv
dXRwdXQgZmlsZXMgdW5sZXNzIHRoZQogICAjIHNjcmlwdCBleHBsaWNpdGx5IGluc3RydWN0cyB0
aGVtIHRvLgotICAjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IE1vdmUgdGhpcyBpbnRvIFN1YnBy
b2Nlc3Mgd2hlbiB3ZSBpbXBsZW1lbnQKKyAgIyBGSVhNRTogTW92ZSB0aGlzIGludG8gU3VicHJv
Y2VzcyB3aGVuIHdlIGltcGxlbWVudAogICAjIHBhc3NpbmcgZW52aXJvbm1lbnQgaW50byBpdCBh
cyBhIHBhcmFtZXRlci4KICAgaWYgR1RFU1RfT1VUUFVUX1ZBUl9OQU1FIGluIG9zLmVudmlyb246
CiAgICAgZGVsIG9zLmVudmlyb25bR1RFU1RfT1VUUFVUX1ZBUl9OQU1FXQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0YnJpZGdlX3Rlc3QucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RicmlkZ2VfdGVzdC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44N2ZmYWQ3M2Q0MDA2NTI5OGYzMDUwMGRlODI0ZDgwOGI2NTcxZDhkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0YnJpZGdl
X3Rlc3QucHkKQEAgLTAsMCArMSw2MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENv
cHlyaWdodCAyMDE4IEdvb2dsZSBMTEMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorIiIiVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCB1c2VzIGZpbHRlciBwcm92aWRl
ZCB2aWEgdGVzdGJyaWRnZS4iIiIKKworaW1wb3J0IG9zCisKK2ltcG9ydCBndGVzdF90ZXN0X3V0
aWxzCisKK2JpbmFyeV9uYW1lID0gJ2d0ZXN0X3Rlc3RicmlkZ2VfdGVzdF8nCitDT01NQU5EID0g
Z3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoYmluYXJ5X25hbWUpCitURVNU
QlJJREdFX05BTUUgPSAnVEVTVEJSSURHRV9URVNUX09OTFknCisKKworZGVmIEFzc2VydChjb25k
aXRpb24pOgorICBpZiBub3QgY29uZGl0aW9uOgorICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisK
KworY2xhc3MgR1Rlc3RUZXN0RmlsdGVyVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToK
KworICBkZWYgdGVzdFRlc3RFeGVjdXRpb25Jc0ZpbHRlcmVkKHNlbGYpOgorICAgICIiIlRlc3Rz
IHRoYXQgdGhlIHRlc3QgZmlsdGVyIGlzIHBpY2tlZCB1cCBmcm9tIHRoZSB0ZXN0YnJpZGdlIGVu
diB2YXIuIiIiCisgICAgc3VicHJvY2Vzc19lbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQorCisgICAg
c3VicHJvY2Vzc19lbnZbVEVTVEJSSURHRV9OQU1FXSA9ICcqLlRlc3RUaGF0U3VjY2VlZHMnCisg
ICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhDT01NQU5ELCBlbnY9c3VicHJvY2Vz
c19lbnYpCisKKyAgICBzZWxmLmFzc2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkKKworICAgIEFz
c2VydCgnZmlsdGVyID0gKi5UZXN0VGhhdFN1Y2NlZWRzJyBpbiBwLm91dHB1dCkKKyAgICBBc3Nl
cnQoJ1sgICAgICAgT0sgXSBUZXN0RmlsdGVyVGVzdC5UZXN0VGhhdFN1Y2NlZWRzJyBpbiBwLm91
dHB1dCkKKyAgICBBc3NlcnQoJ1sgIFBBU1NFRCAgXSAxIHRlc3QuJyBpbiBwLm91dHB1dCkKKwor
CitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0YnJpZGdl
X3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0YnJpZGdl
X3Rlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0NjE3YjIwOWUxMGE5ZDE3OTgzNjhlMjY0NjVhYWE2Mjcx
NWYwZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X3Rlc3RicmlkZ2VfdGVzdF8uY2MKQEAgLTAsMCArMSw0MyBAQAorLy8gQ29weXJpZ2h0IDIw
MTgsIEdvb2dsZSBMTEMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisv
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIFRoaXMgcHJvZ3JhbSBpcyBtZWFu
dCB0byBiZSBydW4gYnkgZ3Rlc3RfdGVzdF9maWx0ZXJfdGVzdC5weS4gIERvIG5vdCBydW4KKy8v
IGl0IGRpcmVjdGx5LgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworLy8gVGhlc2UgdGVz
dHMgYXJlIHVzZWQgdG8gZGV0ZWN0IGlmIGZpbHRlcmluZyBpcyB3b3JraW5nLiBPbmx5CisvLyAn
VGVzdFRoYXRTdWNjZWVkcycgc2hvdWxkIGV2ZXIgcnVuLgorCitURVNUKFRlc3RGaWx0ZXJUZXN0
LCBUZXN0VGhhdFN1Y2NlZWRzKSB7fQorCitURVNUKFRlc3RGaWx0ZXJUZXN0LCBUZXN0VGhhdEZh
aWxzKSB7CisgIEFTU0VSVF9UUlVFKGZhbHNlKSA8PCAiVGhpcyB0ZXN0IHNob3VsZCBuZXZlciBi
ZSBydW4uIjsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfdGhyb3dfb25fZmFpbHVyZV9leF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MKaW5kZXggOGJmOWRjOTA1YjVm
ZjgzYWMwMjEwNDEzNDM1ODBmOTA5NzU0ODNjZS4uOTNmNTlkNDljZmRiOTQ3NGRjYTYyMmMxN2Ey
Yzk2NGFiMGJkNThmNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF90aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MKQEAgLTI2LDEyICsy
NiwxMSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ly8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUZXN0
cyBHb29nbGUgVGVzdCdzIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRoIGV4Y2VwdGlvbnMgZW5h
YmxlZC4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVz
dC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVy
ZV90ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1Njc4ZmZlYWY2ZmE2MWVm
N2RjYjQ1YjhmMzRhMDM0MTE5MWFiZjZlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3df
b25fZmFpbHVyZV90ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTcxICswLDAgQEAKLSMhL3Vz
ci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0
OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlRlc3RzIEdvb2dsZSBU
ZXN0J3MgdGhyb3ctb24tZmFpbHVyZSBtb2RlIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4KLQot
VGhpcyBzY3JpcHQgaW52b2tlcyBndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3RfIChhIHByb2dy
YW0gd3JpdHRlbiB3aXRoCi1Hb29nbGUgVGVzdCkgd2l0aCBkaWZmZXJlbnQgZW52aXJvbm1lbnRz
IGFuZCBjb21tYW5kIGxpbmUgZmxhZ3MuCi0iIiIKLQotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IG9zCi1pbXBvcnQgZ3Rlc3RfdGVzdF91dGls
cwotCi0KLSMgQ29uc3RhbnRzLgotCi0jIFRoZSBjb21tYW5kIGxpbmUgZmxhZyBmb3IgZW5hYmxp
bmcvZGlzYWJsaW5nIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUuCi1USFJPV19PTl9GQUlMVVJF
ID0gJ2d0ZXN0X3Rocm93X29uX2ZhaWx1cmUnCi0KLSMgUGF0aCB0byB0aGUgZ3Rlc3RfdGhyb3df
b25fZmFpbHVyZV90ZXN0XyBwcm9ncmFtLCBjb21waWxlZCB3aXRoCi0jIGV4Y2VwdGlvbnMgZGlz
YWJsZWQuCi1FWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRo
KAotICAgICdndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3RfJykKLQotCi0jIFV0aWxpdGllcy4K
LQotCi1kZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToKLSAgIiIiU2V0cyBhbiBlbnZpcm9u
bWVudCB2YXJpYWJsZSB0byBhIGdpdmVuIHZhbHVlOyB1bnNldHMgaXQgd2hlbiB0aGUKLSAgZ2l2
ZW4gdmFsdWUgaXMgTm9uZS4KLSAgIiIiCi0KLSAgZW52X3ZhciA9IGVudl92YXIudXBwZXIoKQot
ICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICBvcy5lbnZpcm9uW2Vudl92YXJdID0gdmFsdWUK
LSAgZWxpZiBlbnZfdmFyIGluIG9zLmVudmlyb246Ci0gICAgZGVsIG9zLmVudmlyb25bZW52X3Zh
cl0KLQotCi1kZWYgUnVuKGNvbW1hbmQpOgotICAiIiJSdW5zIGEgY29tbWFuZDsgcmV0dXJucyBU
cnVlL0ZhbHNlIGlmIGl0cyBleGl0IGNvZGUgaXMvaXNuJ3QgMC4iIiIKLQotICBwcmludCAnUnVu
bmluZyAiJXMiLiAuIC4nICUgJyAnLmpvaW4oY29tbWFuZCkKLSAgcCA9IGd0ZXN0X3Rlc3RfdXRp
bHMuU3VicHJvY2Vzcyhjb21tYW5kKQotICByZXR1cm4gcC5leGl0ZWQgYW5kIHAuZXhpdF9jb2Rl
ID09IDAKLQotCi0jIFRoZSB0ZXN0cy4gIFRPRE8od2FuQGdvb2dsZS5jb20pOiByZWZhY3RvciB0
aGUgY2xhc3MgdG8gc2hhcmUgY29tbW9uCi0jIGxvZ2ljIHdpdGggY29kZSBpbiBndGVzdF9icmVh
a19vbl9mYWlsdXJlX3VuaXR0ZXN0LnB5LgotY2xhc3MgVGhyb3dPbkZhaWx1cmVUZXN0KGd0ZXN0
X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgotICAiIiJUZXN0cyB0aGUgdGhyb3ctb24tZmFpbHVyZSBt
b2RlLiIiIgotCi0gIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwgZW52X3Zhcl92YWx1ZSwgZmxhZ192
YWx1ZSwgc2hvdWxkX2ZhaWwpOgotICAgICIiIlJ1bnMgZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90
ZXN0XyBhbmQgdmVyaWZpZXMgdGhhdCBpdCBkb2VzCi0gICAgKG9yIGRvZXMgbm90KSBleGl0IHdp
dGggYSBub24temVybyBjb2RlLgotCi0gICAgQXJnczoKLSAgICAgIGVudl92YXJfdmFsdWU6ICAg
IHZhbHVlIG9mIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB2YXJpYWJsZTsgTm9uZSBpZiB0aGUgdmFyaWFibGUgc2hvdWxkIGJl
IHVuc2V0LgotICAgICAgZmxhZ192YWx1ZTogICAgICAgdmFsdWUgb2YgdGhlIC0tZ3Rlc3RfYnJl
YWtfb25fZmFpbHVyZSBmbGFnOwotICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSBpZiB0aGUg
ZmxhZyBzaG91bGQgbm90IGJlIHByZXNlbnQuCi0gICAgICBzaG91bGRfZmFpbDogICAgICBUcnVl
IGlmZiB0aGUgcHJvZ3JhbSBpcyBleHBlY3RlZCB0byBmYWlsLgotICAgICIiIgotCi0gICAgU2V0
RW52VmFyKFRIUk9XX09OX0ZBSUxVUkUsIGVudl92YXJfdmFsdWUpCi0KLSAgICBpZiBlbnZfdmFy
X3ZhbHVlIGlzIE5vbmU6Ci0gICAgICBlbnZfdmFyX3ZhbHVlX21zZyA9ICcgaXMgbm90IHNldCcK
LSAgICBlbHNlOgotICAgICAgZW52X3Zhcl92YWx1ZV9tc2cgPSAnPScgKyBlbnZfdmFyX3ZhbHVl
Ci0KLSAgICBpZiBmbGFnX3ZhbHVlIGlzIE5vbmU6Ci0gICAgICBmbGFnID0gJycKLSAgICBlbGlm
IGZsYWdfdmFsdWUgPT0gJzAnOgotICAgICAgZmxhZyA9ICctLSVzPTAnICUgVEhST1dfT05fRkFJ
TFVSRQotICAgIGVsc2U6Ci0gICAgICBmbGFnID0gJy0tJXMnICUgVEhST1dfT05fRkFJTFVSRQot
Ci0gICAgY29tbWFuZCA9IFtFWEVfUEFUSF0KLSAgICBpZiBmbGFnOgotICAgICAgY29tbWFuZC5h
cHBlbmQoZmxhZykKLQotICAgIGlmIHNob3VsZF9mYWlsOgotICAgICAgc2hvdWxkX29yX25vdCA9
ICdzaG91bGQnCi0gICAgZWxzZToKLSAgICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxkIG5vdCcK
LQotICAgIGZhaWxlZCA9IG5vdCBSdW4oY29tbWFuZCkKLQotICAgIFNldEVudlZhcihUSFJPV19P
Tl9GQUlMVVJFLCBOb25lKQotCi0gICAgbXNnID0gKCd3aGVuICVzJXMsIGFuIGFzc2VydGlvbiBm
YWlsdXJlIGluICIlcyIgJXMgY2F1c2UgYSBub24temVybyAnCi0gICAgICAgICAgICdleGl0IGNv
ZGUuJyAlCi0gICAgICAgICAgIChUSFJPV19PTl9GQUlMVVJFLCBlbnZfdmFyX3ZhbHVlX21zZywg
JyAnLmpvaW4oY29tbWFuZCksCi0gICAgICAgICAgICBzaG91bGRfb3Jfbm90KSkKLSAgICBzZWxm
LmFzc2VydF8oZmFpbGVkID09IHNob3VsZF9mYWlsLCBtc2cpCi0KLSAgZGVmIHRlc3REZWZhdWx0
QmVoYXZpb3Ioc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0
IG1vZGUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsIGZs
YWdfdmFsdWU9Tm9uZSwgc2hvdWxkX2ZhaWw9RmFsc2UpCi0KLSAgZGVmIHRlc3RUaHJvd09uRmFp
bHVyZUVudlZhcihzZWxmKToKLSAgICAiIiJUZXN0cyB1c2luZyB0aGUgR1RFU1RfVEhST1dfT05f
RkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZS4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5
KGVudl92YXJfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9u
ZSwKLSAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1GYWxzZSkKLSAgICBzZWxmLlJ1
bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFn
X3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9VHJ1ZSkKLQot
ICBkZWYgdGVzdFRocm93T25GYWlsdXJlRmxhZyhzZWxmKToKLSAgICAiIiJUZXN0cyB1c2luZyB0
aGUgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlIGZsYWcuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1
ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9RmFsc2UpCi0gICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAg
IGZsYWdfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPVRydWUp
Ci0KLSAgZGVmIHRlc3RUaHJvd09uRmFpbHVyZUZsYWdPdmVycmlkZXNFbnZWYXIoc2VsZik6Ci0g
ICAgIiIiVGVzdHMgdGhhdCAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmUgb3ZlcnJpZGVzIEdURVNU
X1RIUk9XX09OX0ZBSUxVUkUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3Zh
bHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKLSAgICAgICAg
ICAgICAgICAgICAgICBzaG91bGRfZmFpbD1GYWxzZSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShl
bnZfdmFyX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywK
LSAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1UcnVlKQotICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFs
dWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPUZhbHNlKQotICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAg
IGZsYWdfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPVRydWUp
Ci0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWlu
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3df
b25fZmFpbHVyZV90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
dGhyb3dfb25fZmFpbHVyZV90ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODhmYmQ1YTc2ZGM5MjA2ZjRhMDI5NTE0Yjg3NmRjMDE0MWUzNmJmYS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSw1
NiArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0v
LwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0v
LwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBUZXN0cyBH
b29nbGUgVGVzdCdzIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJs
ZWQuCi0vLwotLy8gVGhpcyBwcm9ncmFtIG11c3QgYmUgY29tcGlsZWQgd2l0aCBleGNlcHRpb25z
IGRpc2FibGVkLiAgSXQgd2lsbCBiZQotLy8gaW52b2tlZCBieSBndGVzdF90aHJvd19vbl9mYWls
dXJlX3Rlc3QucHksIGFuZCBpcyBleHBlY3RlZCB0byBleGl0Ci0vLyB3aXRoIG5vbi16ZXJvIGlu
IHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUgb3IgMCBvdGhlcndpc2UuCi0KLSNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgdGVz
dGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIC8vIFdlIHdhbnQgdG8gZW5z
dXJlIHRoYXQgcGVvcGxlIGNhbiB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBpbgotICAvLyBv
dGhlciB0ZXN0aW5nIGZyYW1ld29ya3MsIGFzIGxvbmcgYXMgdGhleSBpbml0aWFsaXplIEdvb2ds
ZSBUZXN0Ci0gIC8vIHByb3Blcmx5IGFuZCBzZXQgdGhlIHRocm93bi1vbi1mYWlsdXJlIG1vZGUu
ICBUaGVyZWZvcmUsIHdlIGRvbid0Ci0gIC8vIHVzZSBHb29nbGUgVGVzdCdzIGNvbnN0cnVjdHMg
Zm9yIGRlZmluaW5nIGFuZCBydW5uaW5nIHRlc3RzCi0gIC8vIChlLmcuIFRFU1QgYW5kIFJVTl9B
TExfVEVTVFMpIGhlcmUuCi0KLSAgLy8gSW4gdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRo
IGV4Y2VwdGlvbnMgZGlzYWJsZWQsIHRoaXMKLSAgLy8gYXNzZXJ0aW9uIHdpbGwgY2F1c2UgdGhl
IHByb2dyYW0gdG8gZXhpdCB3aXRoIGEgbm9uLXplcm8gY29kZS4KLSAgRVhQRUNUX0VRKDIsIDMp
OwotCi0gIC8vIFdoZW4gbm90IGluIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUsIHRoZSBjb250
cm9sIHdpbGwgcmVhY2gKLSAgLy8gaGVyZS4KLSAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5weSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0LnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2YWU1N2VlZWRhZmNmMDc1MDRkZDhkNWQ3
YThiNWE3ZjgzODEzZjI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90
ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCi0jCi0jIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJp
YnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCB3
YXJucyB0aGUgdXNlciB3aGVuIG5vdCBpbml0aWFsaXplZCBwcm9wZXJseS4iIiIKLQotX19hdXRo
b3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IGd0ZXN0X3Rl
c3RfdXRpbHMKLQotCi1DT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJs
ZVBhdGgoJ2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdF8nKQotCi0KLWRlZiBBc3NlcnQoY29uZGl0
aW9uKToKLSAgaWYgbm90IGNvbmRpdGlvbjoKLSAgICByYWlzZSBBc3NlcnRpb25FcnJvcgotCi0K
LWRlZiBBc3NlcnRFcShleHBlY3RlZCwgYWN0dWFsKToKLSAgaWYgZXhwZWN0ZWQgIT0gYWN0dWFs
OgotICAgIHByaW50ICdFeHBlY3RlZDogJXMnICUgKGV4cGVjdGVkLCkKLSAgICBwcmludCAnICBB
Y3R1YWw6ICVzJyAlIChhY3R1YWwsKQotICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCi0KLQotZGVm
IFRlc3RFeGl0Q29kZUFuZE91dHB1dChjb21tYW5kKToKLSAgIiIiUnVucyB0aGUgZ2l2ZW4gY29t
bWFuZCBhbmQgdmVyaWZpZXMgaXRzIGV4aXQgY29kZSBhbmQgb3V0cHV0LiIiIgotCi0gICMgVmVy
aWZpZXMgdGhhdCAnY29tbWFuZCcgZXhpdHMgd2l0aCBjb2RlIDEuCi0gIHAgPSBndGVzdF90ZXN0
X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKLSAgQXNzZXJ0KHAuZXhpdGVkKQotICBBc3NlcnRF
cSgxLCBwLmV4aXRfY29kZSkKLSAgQXNzZXJ0KCdJbml0R29vZ2xlVGVzdCcgaW4gcC5vdXRwdXQp
Ci0KLQotY2xhc3MgR1Rlc3RVbmluaXRpYWxpemVkVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RD
YXNlKToKLSAgZGVmIHRlc3RFeGl0Q29kZUFuZE91dHB1dChzZWxmKToKLSAgICBUZXN0RXhpdENv
ZGVBbmRPdXRwdXQoQ09NTUFORCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBn
dGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3RfLmNjCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlOGIyYWE4MWRkNTRkOWM2NDNhNThkZTVlNDRkNmNjYjUyMGE3NzY1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0Xy5jYworKysgL2Rldi9u
dWxsCkBAIC0xLDQzICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0K
LSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1URVNUKER1bW15VGVzdCwgRHVtbXkpIHsKLSAg
Ly8gVGhpcyB0ZXN0IGRvZXNuJ3QgdmVyaWZ5IGFueXRoaW5nLiAgV2UganVzdCBuZWVkIGl0IHRv
IGNyZWF0ZSBhCi0gIC8vIHJlYWxpc3RpYyBzdGFnZSBmb3IgdGVzdGluZyB0aGUgYmVoYXZpb3Ig
b2YgR29vZ2xlIFRlc3Qgd2hlbgotICAvLyBSVU5fQUxMX1RFU1RTKCkgaXMgY2FsbGVkIHdpdGhv
dXQgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKSBiZWluZwotICAvLyBjYWxsZWQgZmlyc3QuCi19
Ci0KLWludCBtYWluKCkgewotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MKaW5kZXggYTE0ZjA2NWEy
Y2NkODYzNzlhMDE0OWEzM2ZjNTY0NWMwZWM4YjE4MS4uZjcyMTNmYmYzZTVlODcyMDg5YmZiOTg1
NTFhYzNiYTNlM2E2N2JmNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X3VuaXR0ZXN0LmNjCkBAIC0yNiwxOCArMjYsMTYgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29t
IChaaGFueW9uZyBXYW4pCisKIC8vCiAvLyBUZXN0cyBmb3IgR29vZ2xlIFRlc3QgaXRzZWxmLiAg
VGhpcyB2ZXJpZmllcyB0aGF0IHRoZSBiYXNpYyBjb25zdHJ1Y3RzIG9mCiAvLyBHb29nbGUgVGVz
dCB3b3JrLgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDx2ZWN0b3I+Cisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAotLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29tbWFuZCBs
aW5lIGZsYWcgdmFyaWFibGVzIGNhbiBiZSBhY2Nlc3NlZAotLy8gaW4gY29kZSBvbmNlIDxndGVz
dC9ndGVzdC5oPiBoYXMgYmVlbiAjaW5jbHVkZWQuCi0vLyBEbyBub3QgbW92ZSBpdCBhZnRlciBv
dGhlciAjaW5jbHVkZXMuCisvLyBWZXJpZmllcyB0aGF0IHRoZSBjb21tYW5kIGxpbmUgZmxhZyB2
YXJpYWJsZXMgY2FuIGJlIGFjY2Vzc2VkIGluCisvLyBjb2RlIG9uY2UgImd0ZXN0LmgiIGhhcyBi
ZWVuICNpbmNsdWRlZC4KKy8vIERvIG5vdCBtb3ZlIGl0IGFmdGVyIG90aGVyIGd0ZXN0ICNpbmNs
dWRlcy4KIFRFU1QoQ29tbWFuZExpbmVGbGFnc1Rlc3QsIENhbkJlQWNjZXNzZWRJbkNvZGVPbmNl
R1Rlc3RISXNJbmNsdWRlZCkgewogICBib29sIGR1bW15ID0gdGVzdGluZzo6R1RFU1RfRkxBRyhh
bHNvX3J1bl9kaXNhYmxlZF90ZXN0cykKICAgICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcoYnJl
YWtfb25fZmFpbHVyZSkKQEAgLTUyLDMwICs1MCwxMDUgQEAgVEVTVChDb21tYW5kTGluZUZsYWdz
VGVzdCwgQ2FuQmVBY2Nlc3NlZEluQ29kZU9uY2VHVGVzdEhJc0luY2x1ZGVkKSB7CiAgICAgICB8
fCB0ZXN0aW5nOjpHVEVTVF9GTEFHKHNob3dfaW50ZXJuYWxfc3RhY2tfZnJhbWVzKQogICAgICAg
fHwgdGVzdGluZzo6R1RFU1RfRkxBRyhzaHVmZmxlKQogICAgICAgfHwgdGVzdGluZzo6R1RFU1Rf
RkxBRyhzdGFja190cmFjZV9kZXB0aCkgPiAwCisgICAgICB8fCB0ZXN0aW5nOjpHVEVTVF9GTEFH
KHN0cmVhbV9yZXN1bHRfdG8pICE9ICJ1bmtub3duIgogICAgICAgfHwgdGVzdGluZzo6R1RFU1Rf
RkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKICAgRVhQRUNUX1RSVUUoZHVtbXkgfHwgIWR1bW15KTsg
IC8vIFN1cHByZXNzZXMgd2FybmluZyB0aGF0IGR1bW15IGlzIHVudXNlZC4KIH0KIAotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0
aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0
IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBv
ciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBw
cmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwt
aW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQot
I2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1F
TlRBVElPTl8KLQogI2luY2x1ZGUgPGxpbWl0cy5oPiAgLy8gRm9yIElOVF9NQVguCiAjaW5jbHVk
ZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8dGltZS5oPgogCiAj
aW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDxvc3RyZWFtPgorI2lm
IEdURVNUX0xBTkdfQ1hYMTEKKyNpbmNsdWRlIDx1bm9yZGVyZWRfc2V0PgorI2VuZGlmICAvLyBH
VEVTVF9MQU5HX0NYWDExCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKyNpbmNsdWRl
ICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVz
cGFjZSBpbnRlcm5hbCB7CiAKKyNpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKK2NsYXNz
IFN0cmVhbWluZ0xpc3RlbmVyVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIGNsYXNz
IEZha2VTb2NrZXRXcml0ZXIgOiBwdWJsaWMgU3RyZWFtaW5nTGlzdGVuZXI6OkFic3RyYWN0U29j
a2V0V3JpdGVyIHsKKyAgIHB1YmxpYzoKKyAgICAvLyBTZW5kcyBhIHN0cmluZyB0byB0aGUgc29j
a2V0LgorICAgIHZpcnR1YWwgdm9pZCBTZW5kKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7
IG91dHB1dF8gKz0gbWVzc2FnZTsgfQorCisgICAgc3RkOjpzdHJpbmcgb3V0cHV0XzsKKyAgfTsK
KworICBTdHJlYW1pbmdMaXN0ZW5lclRlc3QoKQorICAgICAgOiBmYWtlX3NvY2tfd3JpdGVyXyhu
ZXcgRmFrZVNvY2tldFdyaXRlciksCisgICAgICAgIHN0cmVhbWVyXyhmYWtlX3NvY2tfd3JpdGVy
XyksCisgICAgICAgIHRlc3RfaW5mb19vYmpfKCJGb29UZXN0IiwgIkJhciIsIE5VTEwsIE5VTEws
CisgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbihfX0ZJTEVfXywgX19MSU5FX18p
LCAwLCBOVUxMKSB7fQorCisgcHJvdGVjdGVkOgorICBzdGQ6OnN0cmluZyogb3V0cHV0KCkgeyBy
ZXR1cm4gJihmYWtlX3NvY2tfd3JpdGVyXy0+b3V0cHV0Xyk7IH0KKworICBGYWtlU29ja2V0V3Jp
dGVyKiBjb25zdCBmYWtlX3NvY2tfd3JpdGVyXzsKKyAgU3RyZWFtaW5nTGlzdGVuZXIgc3RyZWFt
ZXJfOworICBVbml0VGVzdCB1bml0X3Rlc3RfOworICBUZXN0SW5mbyB0ZXN0X2luZm9fb2JqXzsg
IC8vIFRoZSBuYW1lIHRlc3RfaW5mb18gd2FzIHRha2VuIGJ5IHRlc3Rpbmc6OlRlc3QuCit9Owor
CitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RQcm9ncmFtRW5kKSB7CisgICpv
dXRwdXQoKSA9ICIiOworICBzdHJlYW1lcl8uT25UZXN0UHJvZ3JhbUVuZCh1bml0X3Rlc3RfKTsK
KyAgRVhQRUNUX0VRKCJldmVudD1UZXN0UHJvZ3JhbUVuZCZwYXNzZWQ9MVxuIiwgKm91dHB1dCgp
KTsKK30KKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25UZXN0SXRlcmF0aW9uRW5k
KSB7CisgICpvdXRwdXQoKSA9ICIiOworICBzdHJlYW1lcl8uT25UZXN0SXRlcmF0aW9uRW5kKHVu
aXRfdGVzdF8sIDQyKTsKKyAgRVhQRUNUX0VRKCJldmVudD1UZXN0SXRlcmF0aW9uRW5kJnBhc3Nl
ZD0xJmVsYXBzZWRfdGltZT0wbXNcbiIsICpvdXRwdXQoKSk7Cit9CisKK1RFU1RfRihTdHJlYW1p
bmdMaXN0ZW5lclRlc3QsIE9uVGVzdENhc2VTdGFydCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAg
c3RyZWFtZXJfLk9uVGVzdENhc2VTdGFydChUZXN0Q2FzZSgiRm9vVGVzdCIsICJCYXIiLCBOVUxM
LCBOVUxMKSk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdENhc2VTdGFydCZuYW1lPUZvb1Rlc3Rc
biIsICpvdXRwdXQoKSk7Cit9CisKK1RFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRlc3QsIE9uVGVz
dENhc2VFbmQpIHsKKyAgKm91dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RDYXNlRW5k
KFRlc3RDYXNlKCJGb29UZXN0IiwgIkJhciIsIE5VTEwsIE5VTEwpKTsKKyAgRVhQRUNUX0VRKCJl
dmVudD1UZXN0Q2FzZUVuZCZwYXNzZWQ9MSZlbGFwc2VkX3RpbWU9MG1zXG4iLCAqb3V0cHV0KCkp
OworfQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RTdGFydCkgeworICAq
b3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdFN0YXJ0KHRlc3RfaW5mb19vYmpfKTsK
KyAgRVhQRUNUX0VRKCJldmVudD1UZXN0U3RhcnQmbmFtZT1CYXJcbiIsICpvdXRwdXQoKSk7Cit9
CisKK1RFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRlc3QsIE9uVGVzdEVuZCkgeworICAqb3V0cHV0
KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdEVuZCh0ZXN0X2luZm9fb2JqXyk7CisgIEVYUEVD
VF9FUSgiZXZlbnQ9VGVzdEVuZCZwYXNzZWQ9MSZlbGFwc2VkX3RpbWU9MG1zXG4iLCAqb3V0cHV0
KCkpOworfQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RQYXJ0UmVzdWx0
KSB7CisgICpvdXRwdXQoKSA9ICIiOworICBzdHJlYW1lcl8uT25UZXN0UGFydFJlc3VsdChUZXN0
UGFydFJlc3VsdCgKKyAgICAgIFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLCAiZm9vLmNj
IiwgNDIsICJmYWlsZWQ9XG4mJSIpKTsKKworICAvLyBNZXRhIGNoYXJhY3RlcnMgaW4gdGhlIGZh
aWx1cmUgbWVzc2FnZSBzaG91bGQgYmUgcHJvcGVybHkgZXNjYXBlZC4KKyAgRVhQRUNUX0VRKAor
ICAgICAgImV2ZW50PVRlc3RQYXJ0UmVzdWx0JmZpbGU9Zm9vLmNjJmxpbmU9NDImbWVzc2FnZT1m
YWlsZWQlM0QlMEElMjYlMjVcbiIsCisgICAgICAqb3V0cHV0KCkpOworfQorCisjZW5kaWYgIC8v
IEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKwogLy8gUHJvdmlkZXMgYWNjZXNzIHRvIG90aGVy
d2lzZSBwcml2YXRlIHBhcnRzIG9mIHRoZSBUZXN0RXZlbnRMaXN0ZW5lcnMgY2xhc3MKIC8vIHRo
YXQgYXJlIG5lZWRlZCB0byB0ZXN0IGl0LgogY2xhc3MgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNz
b3IgewpAQCAtMTAyLDYgKzE3NSwxOCBAQCBjbGFzcyBUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3Nv
ciB7CiAgIH0KIH07CiAKK2NsYXNzIFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0SGVscGVyIDog
cHVibGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3RI
ZWxwZXIoKSB7fQorCisgIC8vIEZvcndhcmRzIHRvIFVuaXRUZXN0OjpSZWNvcmRQcm9wZXJ0eSgp
IHRvIGJ5cGFzcyBhY2Nlc3MgY29udHJvbHMuCisgIHZvaWQgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0
eShjb25zdCBjaGFyKiBrZXksIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkgeworICAgIHVuaXRf
dGVzdF8uUmVjb3JkUHJvcGVydHkoa2V5LCB2YWx1ZSk7CisgIH0KKworICBVbml0VGVzdCB1bml0
X3Rlc3RfOworfTsKKwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2Ug
dGVzdGluZwogCkBAIC0xMTAsNiArMTk1LDcgQEAgdXNpbmcgdGVzdGluZzo6QXNzZXJ0aW9uUmVz
dWx0OwogdXNpbmcgdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzczsKIHVzaW5nIHRlc3Rpbmc6OkRv
dWJsZUxFOwogdXNpbmcgdGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lcjsKK3VzaW5nIHRl
c3Rpbmc6OkVudmlyb25tZW50OwogdXNpbmcgdGVzdGluZzo6RmxvYXRMRTsKIHVzaW5nIHRlc3Rp
bmc6OkdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpOwogdXNpbmcgdGVzdGluZzo6
R1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJlKTsKQEAgLTEyNSw2ICsyMTEsNyBAQCB1c2luZyB0
ZXN0aW5nOjpHVEVTVF9GTEFHKHJlcGVhdCk7CiB1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHNo
b3dfaW50ZXJuYWxfc3RhY2tfZnJhbWVzKTsKIHVzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcoc2h1
ZmZsZSk7CiB1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKTsKK3Vz
aW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90byk7CiB1c2luZyB0ZXN0aW5n
OjpHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpOwogdXNpbmcgdGVzdGluZzo6SXNOb3RTdWJz
dHJpbmc7CiB1c2luZyB0ZXN0aW5nOjpJc1N1YnN0cmluZzsKQEAgLTEzMiw1MyArMjE5LDc4IEBA
IHVzaW5nIHRlc3Rpbmc6Ok1lc3NhZ2U7CiB1c2luZyB0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBh
cnRSZXN1bHRSZXBvcnRlcjsKIHVzaW5nIHRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTsKIHVz
aW5nIHRlc3Rpbmc6OlRlc3Q7Ci11c2luZyB0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7CiB1
c2luZyB0ZXN0aW5nOjpUZXN0Q2FzZTsKK3VzaW5nIHRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVy
czsKK3VzaW5nIHRlc3Rpbmc6OlRlc3RJbmZvOwogdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1
bHQ7CiB1c2luZyB0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdEFycmF5OwogdXNpbmcgdGVzdGluZzo6
VGVzdFByb3BlcnR5OwogdXNpbmcgdGVzdGluZzo6VGVzdFJlc3VsdDsKK3VzaW5nIHRlc3Rpbmc6
OlRpbWVJbk1pbGxpczsKIHVzaW5nIHRlc3Rpbmc6OlVuaXRUZXN0OwotdXNpbmcgdGVzdGluZzo6
a01heFN0YWNrVHJhY2VEZXB0aDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBZGRSZWZlcmVu
Y2U7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2U7CiB1c2luZyB0ZXN0aW5n
OjppbnRlcm5hbDo6QWx3YXlzVHJ1ZTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBcHBlbmRV
c2VyTWVzc2FnZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBcnJheUF3YXJlRmluZDsKK3Vz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpBcnJheUVxOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OkNvZGVQb2ludFRvVXRmODsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpDb21waWxlQXNzZXJ0
VHlwZXNFcXVhbDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpDb3B5QXJyYXk7CiB1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6Q291bnRJZjsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpFcUZh
aWx1cmU7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RmxvYXRpbmdQb2ludDsKLXVzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHM7CiB1c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6Rm9yRWFjaDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRF
cG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpGb3Jt
YXRUaW1lSW5NaWxsaXNBc1NlY29uZHM7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R1Rlc3RG
bGFnU2F2ZXI7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0Q3VycmVudE9zU3RhY2tUcmFj
ZUV4Y2VwdFRvcDsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRFbGVtZW50T3I7CiB1c2lu
ZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0TmV4dFJhbmRvbVNlZWQ7CiB1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6R2V0UmFuZG9tU2VlZEZyb21GbGFnOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OkdldFRlc3RUeXBlSWQ7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VGltZUluTWlsbGlz
OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldFR5cGVJZDsKIHVzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpHZXRVbml0VGVzdEltcGw7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGlj
aXRseUNvbnZlcnRpYmxlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkludDMyOwogdXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OkludDMyRnJvbUVudk9yRGllOwordXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OklzQVByb3RvY29sTWVzc2FnZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJc0Nv
bnRhaW5lcjsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJc0NvbnRhaW5lclRlc3Q7Cit1c2lu
ZyB0ZXN0aW5nOjppbnRlcm5hbDo6SXNOb3RDb250YWluZXI7Cit1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6TmF0aXZlQXJyYXk7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6T3NTdGFja1RyYWNl
R2V0dGVyOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6Ok9zU3RhY2tUcmFjZUdldHRlckludGVy
ZmFjZTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpQYXJzZUludDMyRmxhZzsKK3VzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpSZWxhdGlvblRvU291cmNlQ29weTsKK3VzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlOwordXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OlJlbW92ZUNvbnN0OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlJlbW92ZVJlZmVyZW5j
ZTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaG91bGRSdW5UZXN0T25TaGFyZDsKIHVzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjpTaG91bGRTaGFyZDsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjpTaG91bGRVc2VDb2xvcjsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaHVmZmxlOwogdXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OlNodWZmbGVSYW5nZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpTa2lwUHJlZml4OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlN0cmVhbWFibGVUb1N0
cmluZzsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmc7CiB1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6VGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I7CiB1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6VGVzdFJlc3VsdEFjY2Vzc29yOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlVJbnQz
MjsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpVbml0VGVzdEltcGw7CiB1c2luZyB0ZXN0aW5n
OjppbnRlcm5hbDo6V2lkZVN0cmluZ1RvVXRmODsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpl
ZGl0X2Rpc3RhbmNlOjpDYWxjdWxhdGVPcHRpbWFsRWRpdHM7Cit1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6ZWRpdF9kaXN0YW5jZTo6Q3JlYXRlVW5pZmllZERpZmY7Cit1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6ZWRpdF9kaXN0YW5jZTo6RWRpdFR5cGU7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6a01heFJhbmRvbVNlZWQ7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6a1Rlc3RUeXBlSWRJ
bkdvb2dsZVRlc3Q7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVkX3B0cjsKK3VzaW5n
IHRlc3Rpbmc6OmtNYXhTdGFja1RyYWNlRGVwdGg7CiAKLSNpZiBHVEVTVF9IQVNfU1RSRUFNX1JF
RElSRUNUSU9OXworI2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KIHVzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpDYXB0dXJlU3Rkb3V0OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6Okdl
dENhcHR1cmVkU3Rkb3V0OwotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9O
XworI2VuZGlmCiAKICNpZiBHVEVTVF9JU19USFJFQURTQUZFCiB1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6VGhyZWFkV2l0aFBhcmFtOwpAQCAtMjY3LDYgKzM3OSwzMSBAQCBURVNUKEdldFRlc3RU
eXBlSWRUZXN0LCBSZXR1cm5zVGhlU2FtZVZhbHVlSW5zaWRlT3JPdXRzaWRlT2ZHb29nbGVUZXN0
KSB7CiAgIEVYUEVDVF9FUShrVGVzdFR5cGVJZEluR29vZ2xlVGVzdCwgR2V0VGVzdFR5cGVJZCgp
KTsKIH0KIAorLy8gVGVzdHMgQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZy4KKwordXNp
bmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZzsK
KworVEVTVChDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nLCBMZWF2ZXNVbnZlcnNpb25l
ZE5hbWVzVW5jaGFuZ2VkKSB7CisgIEVYUEVDVF9FUSgic3RkOjpiaW5kIiwgQ2Fub25pY2FsaXpl
Rm9yU3RkTGliVmVyc2lvbmluZygic3RkOjpiaW5kIikpOworICBFWFBFQ1RfRVEoInN0ZDo6XyIs
IENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoInN0ZDo6XyIpKTsKKyAgRVhQRUNUX0VR
KCJzdGQ6Ol9fZm9vIiwgQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZygic3RkOjpfX2Zv
byIpKTsKKyAgRVhQRUNUX0VRKCJndGw6Ol9fMTo6eCIsIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZl
cnNpb25pbmcoImd0bDo6X18xOjp4IikpOworICBFWFBFQ1RfRVEoIl9fMTo6eCIsIENhbm9uaWNh
bGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoIl9fMTo6eCIpKTsKKyAgRVhQRUNUX0VRKCI6Ol9fMTo6
eCIsIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoIjo6X18xOjp4IikpOworfQorCitU
RVNUKENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcsIEVsaWRlc0RvdWJsZVVuZGVyTmFt
ZXMpIHsKKyAgRVhQRUNUX0VRKCJzdGQ6OmJpbmQiLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJz
aW9uaW5nKCJzdGQ6Ol9fMTo6YmluZCIpKTsKKyAgRVhQRUNUX0VRKCJzdGQ6Ol8iLCBDYW5vbmlj
YWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJzdGQ6Ol9fMTo6XyIpKTsKKworICBFWFBFQ1RfRVEo
InN0ZDo6YmluZCIsIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoInN0ZDo6X19nOjpi
aW5kIikpOworICBFWFBFQ1RfRVEoInN0ZDo6XyIsIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNp
b25pbmcoInN0ZDo6X19nOjpfIikpOworCisgIEVYUEVDVF9FUSgic3RkOjpiaW5kIiwKKyAgICAg
ICAgICAgIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoInN0ZDo6X19nb29nbGU6OmJp
bmQiKSk7CisgIEVYUEVDVF9FUSgic3RkOjpfIiwgQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lv
bmluZygic3RkOjpfX2dvb2dsZTo6XyIpKTsKK30KKwogLy8gVGVzdHMgRm9ybWF0VGltZUluTWls
bGlzQXNTZWNvbmRzKCkuCiAKIFRFU1QoRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzVGVzdCwg
Rm9ybWF0c1plcm8pIHsKQEAgLTI4OSwxMiArNDI2LDk5IEBAIFRFU1QoRm9ybWF0VGltZUluTWls
bGlzQXNTZWNvbmRzVGVzdCwgRm9ybWF0c05lZ2F0aXZlTnVtYmVyKSB7CiAgIEVYUEVDVF9FUSgi
LTMiLCBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHMoLTMwMDApKTsKIH0KIAorLy8gVGVzdHMg
Rm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoKS4gIFRoZSBjb3JyZWN0bmVzcyBvZiBj
b252ZXJzaW9uCisvLyBmb3IgcGFydGljdWxhciBkYXRlcyBiZWxvdyB3YXMgdmVyaWZpZWQgaW4g
UHl0aG9uIHVzaW5nCisvLyBkYXRldGltZS5kYXRldGltZS5mcm9tdXRjdGltZXN0YW1wKDx0aW1l
dGFtcD4vMTAwMCkuCisKKy8vIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxIGRlcGVu
ZHMgb24gdGhlIGN1cnJlbnQgdGltZXpvbmUsIHNvIHdlCisvLyBoYXZlIHRvIHNldCB1cCBhIHBh
cnRpY3VsYXIgdGltZXpvbmUgdG8gb2J0YWluIHByZWRpY3RhYmxlIHJlc3VsdHMuCitjbGFzcyBG
b3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVi
bGljOgorICAvLyBPbiBDeWd3aW4sIEdDQyBkb2Vzbid0IGFsbG93IHVucXVhbGlmaWVkIGludGVn
ZXIgbGl0ZXJhbHMgdG8gZXhjZWVkCisgIC8vIDMyIGJpdHMsIGV2ZW4gd2hlbiA2NC1iaXQgaW50
ZWdlciB0eXBlcyBhcmUgYXZhaWxhYmxlLiAgV2UgaGF2ZSB0bworICAvLyBmb3JjZSB0aGUgY29u
c3RhbnRzIHRvIGhhdmUgYSA2NC1iaXQgdHlwZSBoZXJlLgorICBzdGF0aWMgY29uc3QgVGltZUlu
TWlsbGlzIGtNaWxsaXNQZXJTZWMgPSAxMDAwOworCisgcHJpdmF0ZToKKyAgdmlydHVhbCB2b2lk
IFNldFVwKCkgeworICAgIHNhdmVkX3R6XyA9IE5VTEw7CisKKyAgICBHVEVTVF9ESVNBQkxFX01T
Q19ERVBSRUNBVEVEX1BVU0hfKC8qIGdldGVudiwgc3RyZHVwOiBkZXByZWNhdGVkICovKQorICAg
IGlmIChnZXRlbnYoIlRaIikpCisgICAgICBzYXZlZF90el8gPSBzdHJkdXAoZ2V0ZW52KCJUWiIp
KTsKKyAgICBHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BPUF8oKQorCisgICAgLy8gU2V0
IHVwIHRoZSB0aW1lIHpvbmUgZm9yIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxIHRv
IHVzZS4gIFdlCisgICAgLy8gY2Fubm90IHVzZSB0aGUgbG9jYWwgdGltZSB6b25lIGJlY2F1c2Ug
dGhlIGZ1bmN0aW9uJ3Mgb3V0cHV0IGRlcGVuZHMKKyAgICAvLyBvbiB0aGUgdGltZSB6b25lLgor
ICAgIFNldFRpbWVab25lKCJVVEMrMDAiKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93
bigpIHsKKyAgICBTZXRUaW1lWm9uZShzYXZlZF90el8pOworICAgIGZyZWUoY29uc3RfY2FzdDxj
aGFyKj4oc2F2ZWRfdHpfKSk7CisgICAgc2F2ZWRfdHpfID0gTlVMTDsKKyAgfQorCisgIHN0YXRp
YyB2b2lkIFNldFRpbWVab25lKGNvbnN0IGNoYXIqIHRpbWVfem9uZSkgeworICAgIC8vIHR6c2V0
KCkgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIHRoZSBUWiB2YXJpYWJsZSBiZWluZyBwcmVzZW50IGFu
ZCBlbXB0eQorICAgIC8vIGFuZCBub3QgYmVpbmcgcHJlc2VudCwgc28gd2UgaGF2ZSB0byBjb25z
aWRlciB0aGUgY2FzZSBvZiB0aW1lX3pvbmUKKyAgICAvLyBiZWluZyBOVUxMLgorI2lmIF9NU0Nf
VkVSIHx8IEdURVNUX09TX1dJTkRPV1NfTUlOR1cKKyAgICAvLyAuLi5Vbmxlc3MgaXQncyBNU1ZD
LCB3aG9zZSBzdGFuZGFyZCBsaWJyYXJ5J3MgX3B1dGVudiBkb2Vzbid0CisgICAgLy8gZGlzdGlu
Z3Vpc2ggYmV0d2VlbiBhbiBlbXB0eSBhbmQgYSBtaXNzaW5nIHZhcmlhYmxlLgorICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIGVudl92YXIgPQorICAgICAgICBzdGQ6OnN0cmluZygiVFo9IikgKyAodGlt
ZV96b25lID8gdGltZV96b25lIDogIiIpOworICAgIF9wdXRlbnYoZW52X3Zhci5jX3N0cigpKTsK
KyAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0OTk2IC8qIGRlcHJlY2F0ZWQg
ZnVuY3Rpb24gKi8pCisgICAgdHpzZXQoKTsKKyAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5H
U19QT1BfKCkKKyNlbHNlCisgICAgaWYgKHRpbWVfem9uZSkgeworICAgICAgc2V0ZW52KCgiVFoi
KSwgdGltZV96b25lLCAxKTsKKyAgICB9IGVsc2UgeworICAgICAgdW5zZXRlbnYoIlRaIik7Cisg
ICAgfQorICAgIHR6c2V0KCk7CisjZW5kaWYKKyAgfQorCisgIGNvbnN0IGNoYXIqIHNhdmVkX3R6
XzsKK307CisKK2NvbnN0IFRpbWVJbk1pbGxpcyBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNv
ODYwMVRlc3Q6OmtNaWxsaXNQZXJTZWM7CisKK1RFU1RfRihGb3JtYXRFcG9jaFRpbWVJbk1pbGxp
c0FzSXNvODYwMVRlc3QsIFByaW50c1R3b0RpZ2l0U2VnbWVudHMpIHsKKyAgRVhQRUNUX0VRKCIy
MDExLTEwLTMxVDE4OjUyOjQyIiwKKyAgICAgICAgICAgIEZvcm1hdEVwb2NoVGltZUluTWlsbGlz
QXNJc284NjAxKDEzMjAwODcxNjIgKiBrTWlsbGlzUGVyU2VjKSk7Cit9CisKK1RFU1RfRihGb3Jt
YXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QsIE1pbGxpc2Vjb25kc0RvTm90QWZmZWN0
UmVzdWx0KSB7CisgIEVYUEVDVF9FUSgKKyAgICAgICIyMDExLTEwLTMxVDE4OjUyOjQyIiwKKyAg
ICAgIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKDEzMjAwODcxNjIgKiBrTWlsbGlz
UGVyU2VjICsgMjM0KSk7Cit9CisKK1RFU1RfRihGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNv
ODYwMVRlc3QsIFByaW50c0xlYWRpbmdaZXJvZXMpIHsKKyAgRVhQRUNUX0VRKCIyMDExLTA5LTAz
VDA1OjA3OjAyIiwKKyAgICAgICAgICAgIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAx
KDEzMTUwMjY0MjIgKiBrTWlsbGlzUGVyU2VjKSk7Cit9CisKK1RFU1RfRihGb3JtYXRFcG9jaFRp
bWVJbk1pbGxpc0FzSXNvODYwMVRlc3QsIFByaW50czI0SG91clRpbWUpIHsKKyAgRVhQRUNUX0VR
KCIyMDExLTA5LTI4VDE3OjA4OjIyIiwKKyAgICAgICAgICAgIEZvcm1hdEVwb2NoVGltZUluTWls
bGlzQXNJc284NjAxKDEzMTcyMjk3MDIgKiBrTWlsbGlzUGVyU2VjKSk7Cit9CisKK1RFU1RfRihG
b3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QsIFByaW50c0Vwb2NoU3RhcnQpIHsK
KyAgRVhQRUNUX0VRKCIxOTcwLTAxLTAxVDAwOjAwOjAwIiwgRm9ybWF0RXBvY2hUaW1lSW5NaWxs
aXNBc0lzbzg2MDEoMCkpOworfQorCiAjaWYgR1RFU1RfQ0FOX0NPTVBBUkVfTlVMTAogCi0jaWZk
ZWYgX19CT1JMQU5EQ19fCisjIGlmZGVmIF9fQk9STEFORENfXwogLy8gU2lsZW5jZXMgd2Fybmlu
Z3M6ICJDb25kaXRpb24gaXMgYWx3YXlzIHRydWUiLCAiVW5yZWFjaGFibGUgY29kZSIKLSNwcmFn
bWEgb3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAotI2VuZGlmCisjICBwcmFnbWEgb3B0aW9uIHB1
c2ggLXctY2NjIC13LXJjaAorIyBlbmRpZgogCiAvLyBUZXN0cyB0aGF0IEdURVNUX0lTX05VTExf
TElURVJBTF8oeCkgaXMgdHJ1ZSB3aGVuIHggaXMgYSBudWxsCiAvLyBwb2ludGVyIGxpdGVyYWwu
CkBAIC0zMDMsMTQgKzUyNyw2IEBAIFRFU1QoTnVsbExpdGVyYWxUZXN0LCBJc1RydWVGb3JOdWxs
TGl0ZXJhbHMpIHsKICAgRVhQRUNUX1RSVUUoR1RFU1RfSVNfTlVMTF9MSVRFUkFMXygwKSk7CiAg
IEVYUEVDVF9UUlVFKEdURVNUX0lTX05VTExfTElURVJBTF8oMFUpKTsKICAgRVhQRUNUX1RSVUUo
R1RFU1RfSVNfTlVMTF9MSVRFUkFMXygwTCkpOwotICBFWFBFQ1RfVFJVRShHVEVTVF9JU19OVUxM
X0xJVEVSQUxfKGZhbHNlKSk7Ci0jaWZuZGVmIF9fQk9STEFORENfXwotICAvLyBTb21lIGNvbXBp
bGVycyBtYXkgZmFpbCB0byBkZXRlY3Qgc29tZSBudWxsIHBvaW50ZXIgbGl0ZXJhbHM7Ci0gIC8v
IGFzIGxvbmcgYXMgdXNlcnMgb2YgdGhlIGZyYW1ld29yayBkb24ndCB1c2Ugc3VjaCBsaXRlcmFs
cywgdGhpcwotICAvLyBpcyBoYXJtbGVzcy4KLSAgRVhQRUNUX1RSVUUoR1RFU1RfSVNfTlVMTF9M
SVRFUkFMXygxIC0gMSkpOwotICBFWFBFQ1RfVFJVRShHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHRy
dWUgJiYgZmFsc2UpKTsKLSNlbmRpZgogfQogCiAvLyBUZXN0cyB0aGF0IEdURVNUX0lTX05VTExf
TElURVJBTF8oeCkgaXMgZmFsc2Ugd2hlbiB4IGlzIG5vdCBhIG51bGwKQEAgLTMyMiwxMCArNTM4
LDEwIEBAIFRFU1QoTnVsbExpdGVyYWxUZXN0LCBJc0ZhbHNlRm9yTm9uTnVsbExpdGVyYWxzKSB7
CiAgIEVYUEVDVF9GQUxTRShHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHN0YXRpY19jYXN0PHZvaWQq
PihOVUxMKSkpOwogfQogCi0jaWZkZWYgX19CT1JMQU5EQ19fCisjIGlmZGVmIF9fQk9STEFORENf
XwogLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0ZXIgcHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1
c2giIHN1cHByZXNzZWQgdGhlbS4KLSNwcmFnbWEgb3B0aW9uIHBvcAotI2VuZGlmCisjICBwcmFn
bWEgb3B0aW9uIHBvcAorIyBlbmRpZgogCiAjZW5kaWYgIC8vIEdURVNUX0NBTl9DT01QQVJFX05V
TEwKIC8vCkBAIC0zMzMsMzkgKzU0OSw0MSBAQCBURVNUKE51bGxMaXRlcmFsVGVzdCwgSXNGYWxz
ZUZvck5vbk51bGxMaXRlcmFscykgewogCiAvLyBUZXN0cyB0aGF0IHRoZSBOVUwgY2hhcmFjdGVy
IEwnXDAnIGlzIGVuY29kZWQgY29ycmVjdGx5LgogVEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBD
YW5FbmNvZGVOdWwpIHsKLSAgY2hhciBidWZmZXJbMzJdOwotICBFWFBFQ1RfU1RSRVEoIiIsIENv
ZGVQb2ludFRvVXRmOChMJ1wwJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiIiwgQ29kZVBvaW50
VG9VdGY4KEwnXDAnKSk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgQVNDSUkgY2hhcmFjdGVycyBhcmUg
ZW5jb2RlZCBjb3JyZWN0bHkuCiBURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29kZUFz
Y2lpKSB7Ci0gIGNoYXIgYnVmZmVyWzMyXTsKLSAgRVhQRUNUX1NUUkVRKCJhIiwgQ29kZVBvaW50
VG9VdGY4KEwnYScsIGJ1ZmZlcikpOwotICBFWFBFQ1RfU1RSRVEoIloiLCBDb2RlUG9pbnRUb1V0
ZjgoTCdaJywgYnVmZmVyKSk7Ci0gIEVYUEVDVF9TVFJFUSgiJiIsIENvZGVQb2ludFRvVXRmOChM
JyYnLCBidWZmZXIpKTsKLSAgRVhQRUNUX1NUUkVRKCJceDdGIiwgQ29kZVBvaW50VG9VdGY4KEwn
XHg3RicsIGJ1ZmZlcikpOworICBFWFBFQ1RfRVEoImEiLCBDb2RlUG9pbnRUb1V0ZjgoTCdhJykp
OworICBFWFBFQ1RfRVEoIloiLCBDb2RlUG9pbnRUb1V0ZjgoTCdaJykpOworICBFWFBFQ1RfRVEo
IiYiLCBDb2RlUG9pbnRUb1V0ZjgoTCcmJykpOworICBFWFBFQ1RfRVEoIlx4N0YiLCBDb2RlUG9p
bnRUb1V0ZjgoTCdceDdGJykpOwogfQogCiAvLyBUZXN0cyB0aGF0IFVuaWNvZGUgY29kZS1wb2lu
dHMgdGhhdCBoYXZlIDggdG8gMTEgYml0cyBhcmUgZW5jb2RlZAogLy8gYXMgMTEweHh4eHggMTB4
eHh4eHguCiBURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29kZThUbzExQml0cykgewot
ICBjaGFyIGJ1ZmZlclszMl07CiAgIC8vIDAwMCAxMTAxIDAwMTEgPT4gMTEwLTAwMDExIDEwLTAx
MDAxMQotICBFWFBFQ1RfU1RSRVEoIlx4QzNceDkzIiwgQ29kZVBvaW50VG9VdGY4KEwnXHhEMycs
IGJ1ZmZlcikpOworICBFWFBFQ1RfRVEoIlx4QzNceDkzIiwgQ29kZVBvaW50VG9VdGY4KEwnXHhE
MycpKTsKIAogICAvLyAxMDEgMDExMSAwMTEwID0+IDExMC0xMDEwMSAxMC0xMTAxMTAKLSAgRVhQ
RUNUX1NUUkVRKCJceEQ1XHhCNiIsIENvZGVQb2ludFRvVXRmOChMJ1x4NTc2JywgYnVmZmVyKSk7
CisgIC8vIFNvbWUgY29tcGlsZXJzIChlLmcuLCBHQ0Mgb24gTWluR1cpIGNhbm5vdCBoYW5kbGUg
bm9uLUFTQ0lJIGNvZGVwb2ludHMKKyAgLy8gaW4gd2lkZSBzdHJpbmdzIGFuZCB3aWRlIGNoYXJz
LiBJbiBvcmRlciB0byBhY2NvbW1vZGF0ZSB0aGVtLCB3ZSBoYXZlIHRvCisgIC8vIGludHJvZHVj
ZSBzdWNoIGNoYXJhY3RlciBjb25zdGFudHMgYXMgaW50ZWdlcnMuCisgIEVYUEVDVF9FUSgiXHhE
NVx4QjYiLAorICAgICAgICAgICAgQ29kZVBvaW50VG9VdGY4KHN0YXRpY19jYXN0PHdjaGFyX3Q+
KDB4NTc2KSkpOwogfQogCiAvLyBUZXN0cyB0aGF0IFVuaWNvZGUgY29kZS1wb2ludHMgdGhhdCBo
YXZlIDEyIHRvIDE2IGJpdHMgYXJlIGVuY29kZWQKIC8vIGFzIDExMTB4eHh4IDEweHh4eHh4IDEw
eHh4eHh4LgogVEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBDYW5FbmNvZGUxMlRvMTZCaXRzKSB7
Ci0gIGNoYXIgYnVmZmVyWzMyXTsKICAgLy8gMDAwMCAxMDAwIDExMDEgMDAxMSA9PiAxMTEwLTAw
MDAgMTAtMTAwMDExIDEwLTAxMDAxMQotICBFWFBFQ1RfU1RSRVEoIlx4RTBceEEzXHg5MyIsIENv
ZGVQb2ludFRvVXRmOChMJ1x4OEQzJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiXHhFMFx4QTNc
eDkzIiwKKyAgICAgICAgICAgIENvZGVQb2ludFRvVXRmOChzdGF0aWNfY2FzdDx3Y2hhcl90Pigw
eDhEMykpKTsKIAogICAvLyAxMTAwIDAxMTEgMDEwMCAxMTAxID0+IDExMTAtMTEwMCAxMC0wMTEx
MDEgMTAtMDAxMTAxCi0gIEVYUEVDVF9TVFJFUSgiXHhFQ1x4OURceDhEIiwgQ29kZVBvaW50VG9V
dGY4KEwnXHhDNzREJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiXHhFQ1x4OURceDhEIiwKKyAg
ICAgICAgICAgIENvZGVQb2ludFRvVXRmOChzdGF0aWNfY2FzdDx3Y2hhcl90PigweEM3NEQpKSk7
CiB9CiAKICNpZiAhR1RFU1RfV0lERV9TVFJJTkdfVVNFU19VVEYxNl8KQEAgLTM3NiwyMiArNTk0
LDE5IEBAIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2RlMTJUbzE2Qml0cykgewog
Ly8gVGVzdHMgdGhhdCBVbmljb2RlIGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSAxNyB0byAyMSBiaXRz
IGFyZSBlbmNvZGVkCiAvLyBhcyAxMTExMHh4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eC4K
IFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2RlMTdUbzIxQml0cykgewotICBjaGFy
IGJ1ZmZlclszMl07CiAgIC8vIDAgMDAwMSAwMDAwIDEwMDAgMTEwMSAwMDExID0+IDExMTEwLTAw
MCAxMC0wMTAwMDAgMTAtMTAwMDExIDEwLTAxMDAxMQotICBFWFBFQ1RfU1RSRVEoIlx4RjBceDkw
XHhBM1x4OTMiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDEwOEQzJywgYnVmZmVyKSk7CisgIEVYUEVD
VF9FUSgiXHhGMFx4OTBceEEzXHg5MyIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA4RDMnKSk7CiAK
ICAgLy8gMCAwMDAxIDAwMDAgMDEwMCAwMDAwIDAwMDAgPT4gMTExMTAtMDAwIDEwLTAxMDAwMCAx
MC0wMTAwMDAgMTAtMDAwMDAwCi0gIEVYUEVDVF9TVFJFUSgiXHhGMFx4OTBceDkwXHg4MCIsIENv
ZGVQb2ludFRvVXRmOChMJ1x4MTA0MDAnLCBidWZmZXIpKTsKKyAgRVhQRUNUX0VRKCJceEYwXHg5
MFx4OTBceDgwIiwgQ29kZVBvaW50VG9VdGY4KEwnXHgxMDQwMCcpKTsKIAogICAvLyAxIDAwMDAg
MTAwMCAwMTEwIDAwMTEgMDEwMCA9PiAxMTExMC0xMDAgMTAtMDAxMDAwIDEwLTAxMTAwMCAxMC0x
MTAxMDAKLSAgRVhQRUNUX1NUUkVRKCJceEY0XHg4OFx4OThceEI0IiwgQ29kZVBvaW50VG9VdGY4
KEwnXHgxMDg2MzQnLCBidWZmZXIpKTsKKyAgRVhQRUNUX0VRKCJceEY0XHg4OFx4OThceEI0Iiwg
Q29kZVBvaW50VG9VdGY4KEwnXHgxMDg2MzQnKSk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgZW5jb2Rp
bmcgYW4gaW52YWxpZCBjb2RlLXBvaW50IGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgcmVzdWx0Lgog
VEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBDYW5FbmNvZGVJbnZhbGlkQ29kZVBvaW50KSB7Ci0g
IGNoYXIgYnVmZmVyWzMyXTsKLSAgRVhQRUNUX1NUUkVRKCIoSW52YWxpZCBVbmljb2RlIDB4MTIz
NEFCQ0QpIiwKLSAgICAgICAgICAgICAgIENvZGVQb2ludFRvVXRmOChMJ1x4MTIzNEFCQ0QnLCBi
dWZmZXIpKTsKKyAgRVhQRUNUX0VRKCIoSW52YWxpZCBVbmljb2RlIDB4MTIzNEFCQ0QpIiwgQ29k
ZVBvaW50VG9VdGY4KEwnXHgxMjM0QUJDRCcpKTsKIH0KIAogI2VuZGlmICAvLyAhR1RFU1RfV0lE
RV9TVFJJTkdfVVNFU19VVEYxNl8KQEAgLTQyMCwyMCArNjM1LDIzIEBAIFRFU1QoV2lkZVN0cmlu
Z1RvVXRmOFRlc3QsIENhbkVuY29kZThUbzExQml0cykgewogICBFWFBFQ1RfU1RSRVEoIlx4QzNc
eDkzIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4RDMiLCAtMSkuY19zdHIoKSk7CiAKICAgLy8gMTAx
IDAxMTEgMDExMCA9PiAxMTAtMTAxMDEgMTAtMTEwMTEwCi0gIEVYUEVDVF9TVFJFUSgiXHhENVx4
QjYiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHg1NzYiLCAxKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NU
UkVRKCJceEQ1XHhCNiIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceDU3NiIsIC0xKS5jX3N0cigpKTsK
KyAgY29uc3Qgd2NoYXJfdCBzW10gPSB7IDB4NTc2LCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgi
XHhENVx4QjYiLCBXaWRlU3RyaW5nVG9VdGY4KHMsIDEpLmNfc3RyKCkpOworICBFWFBFQ1RfU1RS
RVEoIlx4RDVceEI2IiwgV2lkZVN0cmluZ1RvVXRmOChzLCAtMSkuY19zdHIoKSk7CiB9CiAKIC8v
IFRlc3RzIHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0aGF0IGhhdmUgMTIgdG8gMTYgYml0cyBh
cmUgZW5jb2RlZAogLy8gYXMgMTExMHh4eHggMTB4eHh4eHggMTB4eHh4eHguCiBURVNUKFdpZGVT
dHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGUxMlRvMTZCaXRzKSB7CiAgIC8vIDAwMDAgMTAwMCAx
MTAxIDAwMTEgPT4gMTExMC0wMDAwIDEwLTEwMDAxMSAxMC0wMTAwMTEKLSAgRVhQRUNUX1NUUkVR
KCJceEUwXHhBM1x4OTMiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHg4RDMiLCAxKS5jX3N0cigpKTsK
LSAgRVhQRUNUX1NUUkVRKCJceEUwXHhBM1x4OTMiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHg4RDMi
LCAtMSkuY19zdHIoKSk7CisgIGNvbnN0IHdjaGFyX3QgczFbXSA9IHsgMHg4RDMsICdcMCcgfTsK
KyAgRVhQRUNUX1NUUkVRKCJceEUwXHhBM1x4OTMiLCBXaWRlU3RyaW5nVG9VdGY4KHMxLCAxKS5j
X3N0cigpKTsKKyAgRVhQRUNUX1NUUkVRKCJceEUwXHhBM1x4OTMiLCBXaWRlU3RyaW5nVG9VdGY4
KHMxLCAtMSkuY19zdHIoKSk7CiAKICAgLy8gMTEwMCAwMTExIDAxMDAgMTEwMSA9PiAxMTEwLTEx
MDAgMTAtMDExMTAxIDEwLTAwMTEwMQotICBFWFBFQ1RfU1RSRVEoIlx4RUNceDlEXHg4RCIsIFdp
ZGVTdHJpbmdUb1V0ZjgoTCJceEM3NEQiLCAxKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJc
eEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhDNzREIiwgLTEpLmNfc3RyKCkpOwor
ICBjb25zdCB3Y2hhcl90IHMyW10gPSB7IDB4Qzc0RCwgJ1wwJyB9OworICBFWFBFQ1RfU1RSRVEo
Ilx4RUNceDlEXHg4RCIsIFdpZGVTdHJpbmdUb1V0ZjgoczIsIDEpLmNfc3RyKCkpOworICBFWFBF
Q1RfU1RSRVEoIlx4RUNceDlEXHg4RCIsIFdpZGVTdHJpbmdUb1V0ZjgoczIsIC0xKS5jX3N0cigp
KTsKIH0KIAogLy8gVGVzdHMgdGhhdCB0aGUgY29udmVyc2lvbiBzdG9wcyB3aGVuIHRoZSBmdW5j
dGlvbiBlbmNvdW50ZXJzIFwwIGNoYXJhY3Rlci4KQEAgLTQ0Nyw3ICs2NjUsNiBAQCBURVNUKFdp
ZGVTdHJpbmdUb1V0ZjhUZXN0LCBTdG9wc1doZW5MZW5ndGhMaW1pdFJlYWNoZWQpIHsKICAgRVhQ
RUNUX1NUUkVRKCJBQkMiLCBXaWRlU3RyaW5nVG9VdGY4KEwiQUJDREVGIiwgMykuY19zdHIoKSk7
CiB9CiAKLQogI2lmICFHVEVTVF9XSURFX1NUUklOR19VU0VTX1VURjE2XwogLy8gVGVzdHMgdGhh
dCBVbmljb2RlIGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSAxNyB0byAyMSBiaXRzIGFyZSBlbmNvZGVk
CiAvLyBhcyAxMTExMHh4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eC4gVGhpcyBjb2RlIG1h
eSBub3QgY29tcGlsZQpAQCAtNDcxLDI1ICs2ODgsMjkgQEAgVEVTVChXaWRlU3RyaW5nVG9VdGY4
VGVzdCwgQ2FuRW5jb2RlSW52YWxpZENvZGVQb2ludCkgewogLy8gVGVzdHMgdGhhdCBzdXJyb2dh
dGUgcGFpcnMgYXJlIGVuY29kZWQgY29ycmVjdGx5IG9uIHRoZSBzeXN0ZW1zIHVzaW5nCiAvLyBV
VEYtMTYgZW5jb2RpbmcgaW4gdGhlIHdpZGUgc3RyaW5ncy4KIFRFU1QoV2lkZVN0cmluZ1RvVXRm
OFRlc3QsIENhbkVuY29kZVZhbGlkVXRmMTZTVXJyb2dhdGVQYWlycykgewotICBFWFBFQ1RfU1RS
RVEoIlx4RjBceDkwXHg5MFx4ODAiLAotICAgICAgICAgICAgICAgV2lkZVN0cmluZ1RvVXRmOChM
Ilx4RDgwMVx4REMwMCIsIC0xKS5jX3N0cigpKTsKKyAgY29uc3Qgd2NoYXJfdCBzW10gPSB7IDB4
RDgwMSwgMHhEQzAwLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhGMFx4OTBceDkwXHg4MCIs
IFdpZGVTdHJpbmdUb1V0ZjgocywgLTEpLmNfc3RyKCkpOwogfQogCiAvLyBUZXN0cyB0aGF0IGVu
Y29kaW5nIGFuIGludmFsaWQgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyCiAvLyBnZW5lcmF0ZXMgdGhl
IGV4cGVjdGVkIHJlc3VsdC4KIFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENhbkVuY29kZUlu
dmFsaWRVdGYxNlN1cnJvZ2F0ZVBhaXIpIHsKICAgLy8gTGVhZGluZyBzdXJyb2dhdGUgaXMgYXQg
dGhlIGVuZCBvZiB0aGUgc3RyaW5nLgotICBFWFBFQ1RfU1RSRVEoIlx4RURceEEwXHg4MCIsIFdp
ZGVTdHJpbmdUb1V0ZjgoTCJceEQ4MDAiLCAtMSkuY19zdHIoKSk7CisgIGNvbnN0IHdjaGFyX3Qg
czFbXSA9IHsgMHhEODAwLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhFRFx4QTBceDgwIiwg
V2lkZVN0cmluZ1RvVXRmOChzMSwgLTEpLmNfc3RyKCkpOwogICAvLyBMZWFkaW5nIHN1cnJvZ2F0
ZSBpcyBub3QgZm9sbG93ZWQgYnkgdGhlIHRyYWlsaW5nIHN1cnJvZ2F0ZS4KLSAgRVhQRUNUX1NU
UkVRKCJceEVEXHhBMFx4ODAkIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4RDgwMCQiLCAtMSkuY19z
dHIoKSk7CisgIGNvbnN0IHdjaGFyX3QgczJbXSA9IHsgMHhEODAwLCAnTScsICdcMCcgfTsKKyAg
RVhQRUNUX1NUUkVRKCJceEVEXHhBMFx4ODBNIiwgV2lkZVN0cmluZ1RvVXRmOChzMiwgLTEpLmNf
c3RyKCkpOwogICAvLyBUcmFpbGluZyBzdXJyb2dhdGUgYXBwZWFyYXMgd2l0aG91dCBhIGxlYWRp
bmcgc3Vycm9nYXRlLgotICBFWFBFQ1RfU1RSRVEoIlx4RURceEIwXHg4MFBRUiIsIFdpZGVTdHJp
bmdUb1V0ZjgoTCJceERDMDBQUVIiLCAtMSkuY19zdHIoKSk7CisgIGNvbnN0IHdjaGFyX3QgczNb
XSA9IHsgMHhEQzAwLCAnUCcsICdRJywgJ1InLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhF
RFx4QjBceDgwUFFSIiwgV2lkZVN0cmluZ1RvVXRmOChzMywgLTEpLmNfc3RyKCkpOwogfQogI2Vu
ZGlmICAvLyAhR1RFU1RfV0lERV9TVFJJTkdfVVNFU19VVEYxNl8KIAogLy8gVGVzdHMgdGhhdCBj
b2RlcG9pbnQgY29uY2F0ZW5hdGlvbiB3b3JrcyBjb3JyZWN0bHkuCiAjaWYgIUdURVNUX1dJREVf
U1RSSU5HX1VTRVNfVVRGMTZfCiBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDb25jYXRlbmF0
ZXNDb2RlcG9pbnRzQ29ycmVjdGx5KSB7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0geyAweDEwODYz
NCwgMHhDNzRELCAnXG4nLCAweDU3NiwgMHg4RDMsIDB4MTA4NjM0LCAnXDAnfTsKICAgRVhQRUNU
X1NUUkVRKAogICAgICAgIlx4RjRceDg4XHg5OFx4QjQiCiAgICAgICAgICAgIlx4RUNceDlEXHg4
RCIKQEAgLTQ5NywxMyArNzE4LDE0IEBAIFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENvbmNh
dGVuYXRlc0NvZGVwb2ludHNDb3JyZWN0bHkpIHsKICAgICAgICAgICAiXHhENVx4QjYiCiAgICAg
ICAgICAgIlx4RTBceEEzXHg5MyIKICAgICAgICAgICAiXHhGNFx4ODhceDk4XHhCNCIsCi0gICAg
ICBXaWRlU3RyaW5nVG9VdGY4KEwiXHgxMDg2MzRceEM3NERcblx4NTc2XHg4RDNceDEwODYzNCIs
IC0xKS5jX3N0cigpKTsKKyAgICAgIFdpZGVTdHJpbmdUb1V0ZjgocywgLTEpLmNfc3RyKCkpOwog
fQogI2Vsc2UKIFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENvbmNhdGVuYXRlc0NvZGVwb2lu
dHNDb3JyZWN0bHkpIHsKKyAgY29uc3Qgd2NoYXJfdCBzW10gPSB7IDB4Qzc0RCwgJ1xuJywgMHg1
NzYsIDB4OEQzLCAnXDAnfTsKICAgRVhQRUNUX1NUUkVRKAogICAgICAgIlx4RUNceDlEXHg4RCIg
IlxuIiAiXHhENVx4QjYiICJceEUwXHhBM1x4OTMiLAotICAgICAgV2lkZVN0cmluZ1RvVXRmOChM
Ilx4Qzc0RFxuXHg1NzZceDhEMyIsIC0xKS5jX3N0cigpKTsKKyAgICAgIFdpZGVTdHJpbmdUb1V0
ZjgocywgLTEpLmNfc3RyKCkpOwogfQogI2VuZGlmICAvLyAhR1RFU1RfV0lERV9TVFJJTkdfVVNF
U19VVEYxNl8KIApAQCAtNzk3LDI2OSArMTAxOSwxNiBAQCBURVNUKEFzc2VydEhlbHBlclRlc3Qs
IEFzc2VydEhlbHBlcklzU21hbGwpIHsKICAgRVhQRUNUX0xFKHNpemVvZih0ZXN0aW5nOjppbnRl
cm5hbDo6QXNzZXJ0SGVscGVyKSwgc2l6ZW9mKHZvaWQqKSk7CiB9CiAKLS8vIFRlc3RzIHRoZSBT
dHJpbmcgY2xhc3MuCi0KLS8vIFRlc3RzIFN0cmluZydzIGNvbnN0cnVjdG9ycy4KLVRFU1QoU3Ry
aW5nVGVzdCwgQ29uc3RydWN0b3JzKSB7Ci0gIC8vIERlZmF1bHQgY3Rvci4KLSAgU3RyaW5nIHMx
OwotICAvLyBXZSBhcmVuJ3QgdXNpbmcgRVhQRUNUX0VRKE5VTEwsIHMxLmNfc3RyKCkpIGJlY2F1
c2UgY29tcGFyaW5nCi0gIC8vIHBvaW50ZXJzIHdpdGggTlVMTCBpc24ndCBzdXBwb3J0ZWQgb24g
YWxsIHBsYXRmb3Jtcy4KLSAgRVhQRUNUX0VRKDBVLCBzMS5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9U
UlVFKE5VTEwgPT0gczEuY19zdHIoKSk7Ci0KLSAgLy8gSW1wbGljaXRseSBjb25zdHJ1Y3RzIGZy
b20gYSBDLXN0cmluZy4KLSAgU3RyaW5nIHMyID0gIkhpIjsKLSAgRVhQRUNUX0VRKDJVLCBzMi5s
ZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiSGkiLCBzMi5jX3N0cigpKTsKLQotICAvLyBDb25z
dHJ1Y3RzIGZyb20gYSBDLXN0cmluZyBhbmQgYSBsZW5ndGguCi0gIFN0cmluZyBzMygiaGVsbG8i
LCAzKTsKLSAgRVhQRUNUX0VRKDNVLCBzMy5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiaGVs
IiwgczMuY19zdHIoKSk7Ci0KLSAgLy8gVGhlIGVtcHR5IFN0cmluZyBzaG91bGQgYmUgY3JlYXRl
ZCB3aGVuIFN0cmluZyBpcyBjb25zdHJ1Y3RlZCB3aXRoCi0gIC8vIGEgTlVMTCBwb2ludGVyIGFu
ZCBsZW5ndGggMC4KLSAgRVhQRUNUX0VRKDBVLCBTdHJpbmcoTlVMTCwgMCkubGVuZ3RoKCkpOwot
ICBFWFBFQ1RfRkFMU0UoU3RyaW5nKE5VTEwsIDApLmNfc3RyKCkgPT0gTlVMTCk7Ci0KLSAgLy8g
Q29uc3RydWN0cyBhIFN0cmluZyB0aGF0IGNvbnRhaW5zICdcMCcuCi0gIFN0cmluZyBzNCgiYVww
YmNkIiwgNCk7Ci0gIEVYUEVDVF9FUSg0VSwgczQubGVuZ3RoKCkpOwotICBFWFBFQ1RfRVEoJ2En
LCBzNC5jX3N0cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdcMCcsIHM0LmNfc3RyKClbMV0pOwotICBF
WFBFQ1RfRVEoJ2InLCBzNC5jX3N0cigpWzJdKTsKLSAgRVhQRUNUX0VRKCdjJywgczQuY19zdHIo
KVszXSk7Ci0KLSAgLy8gQ29weSBjdG9yIHdoZXJlIHRoZSBzb3VyY2UgaXMgTlVMTC4KLSAgY29u
c3QgU3RyaW5nIG51bGxfc3RyOwotICBTdHJpbmcgczUgPSBudWxsX3N0cjsKLSAgRVhQRUNUX1RS
VUUoczUuY19zdHIoKSA9PSBOVUxMKTsKLQotICAvLyBDb3B5IGN0b3Igd2hlcmUgdGhlIHNvdXJj
ZSBpc24ndCBOVUxMLgotICBTdHJpbmcgczYgPSBzMzsKLSAgRVhQRUNUX0VRKDNVLCBzNi5sZW5n
dGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiaGVsIiwgczYuY19zdHIoKSk7Ci0KLSAgLy8gQ29weSBj
dG9yIHdoZXJlIHRoZSBzb3VyY2UgY29udGFpbnMgJ1wwJy4KLSAgU3RyaW5nIHM3ID0gczQ7Ci0g
IEVYUEVDVF9FUSg0VSwgczcubGVuZ3RoKCkpOwotICBFWFBFQ1RfRVEoJ2EnLCBzNy5jX3N0cigp
WzBdKTsKLSAgRVhQRUNUX0VRKCdcMCcsIHM3LmNfc3RyKClbMV0pOwotICBFWFBFQ1RfRVEoJ2In
LCBzNy5jX3N0cigpWzJdKTsKLSAgRVhQRUNUX0VRKCdjJywgczcuY19zdHIoKVszXSk7Ci19Ci0K
LVRFU1QoU3RyaW5nVGVzdCwgQ29udmVydHNGcm9tU3RkU3RyaW5nKSB7Ci0gIC8vIEFuIGVtcHR5
IHN0ZDo6c3RyaW5nLgotICBjb25zdCBzdGQ6OnN0cmluZyBzcmMxKCIiKTsKLSAgY29uc3QgU3Ry
aW5nIGRlc3QxID0gc3JjMTsKLSAgRVhQRUNUX0VRKDBVLCBkZXN0MS5sZW5ndGgoKSk7Ci0gIEVY
UEVDVF9TVFJFUSgiIiwgZGVzdDEuY19zdHIoKSk7Ci0KLSAgLy8gQSBub3JtYWwgc3RkOjpzdHJp
bmcuCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIHNyYzIoIkhpIik7Ci0gIGNvbnN0IFN0cmluZyBkZXN0
MiA9IHNyYzI7Ci0gIEVYUEVDVF9FUSgyVSwgZGVzdDIubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RS
RVEoIkhpIiwgZGVzdDIuY19zdHIoKSk7Ci0KLSAgLy8gQW4gc3RkOjpzdHJpbmcgd2l0aCBhbiBl
bWJlZGRlZCBOVUwgY2hhcmFjdGVyLgotICBjb25zdCBjaGFyIHNyYzNbXSA9ICJhXDBiIjsKLSAg
Y29uc3QgU3RyaW5nIGRlc3QzID0gc3RkOjpzdHJpbmcoc3JjMywgc2l6ZW9mKHNyYzMpKTsKLSAg
RVhQRUNUX0VRKHNpemVvZihzcmMzKSwgZGVzdDMubGVuZ3RoKCkpOwotICBFWFBFQ1RfRVEoJ2En
LCBkZXN0My5jX3N0cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdcMCcsIGRlc3QzLmNfc3RyKClbMV0p
OwotICBFWFBFQ1RfRVEoJ2InLCBkZXN0My5jX3N0cigpWzJdKTsKLX0KLQotVEVTVChTdHJpbmdU
ZXN0LCBDb252ZXJ0c1RvU3RkU3RyaW5nKSB7Ci0gIC8vIEFuIGVtcHR5IFN0cmluZy4KLSAgY29u
c3QgU3RyaW5nIHNyYzEoIiIpOwotICBjb25zdCBzdGQ6OnN0cmluZyBkZXN0MSA9IHNyYzE7Ci0g
IEVYUEVDVF9FUSgiIiwgZGVzdDEpOwotCi0gIC8vIEEgbm9ybWFsIFN0cmluZy4KLSAgY29uc3Qg
U3RyaW5nIHNyYzIoIkhpIik7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGRlc3QyID0gc3JjMjsKLSAg
RVhQRUNUX0VRKCJIaSIsIGRlc3QyKTsKLQotICAvLyBBIFN0cmluZyBjb250YWluaW5nIGEgJ1ww
Jy4KLSAgY29uc3QgU3RyaW5nIHNyYzMoInhcMHkiLCAzKTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcg
ZGVzdDMgPSBzcmMzOwotICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoInhcMHkiLCAzKSwgZGVzdDMp
OwotfQotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLQotVEVTVChTdHJpbmdUZXN0LCBD
b252ZXJ0c0Zyb21HbG9iYWxTdHJpbmcpIHsKLSAgLy8gQW4gZW1wdHkgOjpzdHJpbmcuCi0gIGNv
bnN0IDo6c3RyaW5nIHNyYzEoIiIpOwotICBjb25zdCBTdHJpbmcgZGVzdDEgPSBzcmMxOwotICBF
WFBFQ1RfRVEoMFUsIGRlc3QxLmxlbmd0aCgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCBkZXN0MS5j
X3N0cigpKTsKLQotICAvLyBBIG5vcm1hbCA6OnN0cmluZy4KLSAgY29uc3QgOjpzdHJpbmcgc3Jj
MigiSGkiKTsKLSAgY29uc3QgU3RyaW5nIGRlc3QyID0gc3JjMjsKLSAgRVhQRUNUX0VRKDJVLCBk
ZXN0Mi5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiSGkiLCBkZXN0Mi5jX3N0cigpKTsKLQot
ICAvLyBBbiA6OnN0cmluZyB3aXRoIGFuIGVtYmVkZGVkIE5VTCBjaGFyYWN0ZXIuCi0gIGNvbnN0
IGNoYXIgc3JjM1tdID0gInhcMHkiOwotICBjb25zdCBTdHJpbmcgZGVzdDMgPSA6OnN0cmluZyhz
cmMzLCBzaXplb2Yoc3JjMykpOwotICBFWFBFQ1RfRVEoc2l6ZW9mKHNyYzMpLCBkZXN0My5sZW5n
dGgoKSk7Ci0gIEVYUEVDVF9FUSgneCcsIGRlc3QzLmNfc3RyKClbMF0pOwotICBFWFBFQ1RfRVEo
J1wwJywgZGVzdDMuY19zdHIoKVsxXSk7Ci0gIEVYUEVDVF9FUSgneScsIGRlc3QzLmNfc3RyKClb
Ml0pOwotfQotCi1URVNUKFN0cmluZ1Rlc3QsIENvbnZlcnRzVG9HbG9iYWxTdHJpbmcpIHsKLSAg
Ly8gQW4gZW1wdHkgU3RyaW5nLgotICBjb25zdCBTdHJpbmcgc3JjMSgiIik7Ci0gIGNvbnN0IDo6
c3RyaW5nIGRlc3QxID0gc3JjMTsKLSAgRVhQRUNUX0VRKCIiLCBkZXN0MSk7Ci0KLSAgLy8gQSBu
b3JtYWwgU3RyaW5nLgotICBjb25zdCBTdHJpbmcgc3JjMigiSGkiKTsKLSAgY29uc3QgOjpzdHJp
bmcgZGVzdDIgPSBzcmMyOwotICBFWFBFQ1RfRVEoIkhpIiwgZGVzdDIpOwotCi0gIGNvbnN0IFN0
cmluZyBzcmMzKCJ4XDB5IiwgMyk7Ci0gIGNvbnN0IDo6c3RyaW5nIGRlc3QzID0gc3JjMzsKLSAg
RVhQRUNUX0VRKDo6c3RyaW5nKCJ4XDB5IiwgMyksIGRlc3QzKTsKLX0KLQotI2VuZGlmICAvLyBH
VEVTVF9IQVNfR0xPQkFMX1NUUklORwotCi0vLyBUZXN0cyBTdHJpbmc6OlNob3dDU3RyaW5nUXVv
dGVkKCkuCi1URVNUKFN0cmluZ1Rlc3QsIFNob3dDU3RyaW5nUXVvdGVkKSB7Ci0gIEVYUEVDVF9T
VFJFUSgiKG51bGwpIiwKLSAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQo
TlVMTCkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXCJcIiIsCi0gICAgICAgICAgICAgICBT
dHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKCIiKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJc
ImZvb1wiIiwKLSAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQoImZvbyIp
LmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6OmVtcHR5KCkuCi1URVNUKFN0cmluZ1Rl
c3QsIEVtcHR5KSB7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiIikuZW1wdHkoKSk7Ci0gIEVYUEVD
VF9GQUxTRShTdHJpbmcoKS5lbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZyhOVUxMKS5l
bXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiYSIpLmVtcHR5KCkpOwotICBFWFBFQ1Rf
RkFMU0UoU3RyaW5nKCJcMCIsIDEpLmVtcHR5KCkpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6OkNv
bXBhcmUoKS4KLVRFU1QoU3RyaW5nVGVzdCwgQ29tcGFyZSkgewotICAvLyBOVUxMIHZzIE5VTEwu
Ci0gIEVYUEVDVF9FUSgwLCBTdHJpbmcoKS5Db21wYXJlKFN0cmluZygpKSk7Ci0KLSAgLy8gTlVM
TCB2cyBub24tTlVMTC4KLSAgRVhQRUNUX0VRKC0xLCBTdHJpbmcoKS5Db21wYXJlKFN0cmluZygi
IikpKTsKLQotICAvLyBOb24tTlVMTCB2cyBOVUxMLgotICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCIi
KS5Db21wYXJlKFN0cmluZygpKSk7Ci0KLSAgLy8gVGhlIGZvbGxvd2luZyBjb3ZlcnMgbm9uLU5V
TEwgdnMgbm9uLU5VTEwuCi0KLSAgLy8gIiIgdnMgIiIuCi0gIEVYUEVDVF9FUSgwLCBTdHJpbmco
IiIpLkNvbXBhcmUoU3RyaW5nKCIiKSkpOwotCi0gIC8vICIiIHZzIG5vbi0iIi4KLSAgRVhQRUNU
X0VRKC0xLCBTdHJpbmcoIiIpLkNvbXBhcmUoU3RyaW5nKCJcMCIsIDEpKSk7Ci0gIEVYUEVDVF9F
USgtMSwgU3RyaW5nKCIiKS5Db21wYXJlKCIgIikpOwotCi0gIC8vIE5vbi0iIiB2cyAiIi4KLSAg
RVhQRUNUX0VRKDEsIFN0cmluZygiYSIpLkNvbXBhcmUoU3RyaW5nKCIiKSkpOwotCi0gIC8vIFRo
ZSBmb2xsb3dpbmcgY292ZXJzIG5vbi0iIiB2cyBub24tIiIuCi0KLSAgLy8gU2FtZSBsZW5ndGgg
YW5kIGVxdWFsLgotICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCJhIikuQ29tcGFyZShTdHJpbmcoImEi
KSkpOwotCi0gIC8vIFNhbWUgbGVuZ3RoIGFuZCBkaWZmZXJlbnQuCi0gIEVYUEVDVF9FUSgtMSwg
U3RyaW5nKCJhXDBiIiwgMykuQ29tcGFyZShTdHJpbmcoImFcMGMiLCAzKSkpOwotICBFWFBFQ1Rf
RVEoMSwgU3RyaW5nKCJiIikuQ29tcGFyZShTdHJpbmcoImEiKSkpOwotCi0gIC8vIERpZmZlcmVu
dCBsZW5ndGhzLgotICBFWFBFQ1RfRVEoLTEsIFN0cmluZygiYSIpLkNvbXBhcmUoU3RyaW5nKCJh
YiIpKSk7Ci0gIEVYUEVDVF9FUSgtMSwgU3RyaW5nKCJhIikuQ29tcGFyZShTdHJpbmcoImFcMCIs
IDIpKSk7Ci0gIEVYUEVDVF9FUSgxLCBTdHJpbmcoImFiYyIpLkNvbXBhcmUoU3RyaW5nKCJhYWNk
IikpKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpvcGVyYXRvcj09KCkuCi1URVNUKFN0cmluZ1Rl
c3QsIEVxdWFscykgewotICBjb25zdCBTdHJpbmcgbnVsbChOVUxMKTsKLSAgRVhQRUNUX1RSVUUo
bnVsbCA9PSBOVUxMKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRkFMU0UobnVsbCA9PSAiIik7ICAv
LyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKG51bGwgPT0gImJhciIpOyAgLy8gTk9MSU5UCi0KLSAg
Y29uc3QgU3RyaW5nIGVtcHR5KCIiKTsKLSAgRVhQRUNUX0ZBTFNFKGVtcHR5ID09IE5VTEwpOyAg
Ly8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKGVtcHR5ID09ICIiKTsgIC8vIE5PTElOVAotICBFWFBF
Q1RfRkFMU0UoZW1wdHkgPT0gImJhciIpOyAgLy8gTk9MSU5UCi0KLSAgY29uc3QgU3RyaW5nIGZv
bygiZm9vIik7Ci0gIEVYUEVDVF9GQUxTRShmb28gPT0gTlVMTCk7ICAvLyBOT0xJTlQKLSAgRVhQ
RUNUX0ZBTFNFKGZvbyA9PSAiIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKGZvbyA9PSAi
YmFyIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUoZm9vID09ICJmb28iKTsgIC8vIE5PTElO
VAotCi0gIGNvbnN0IFN0cmluZyBiYXIoInhcMHkiLCAzKTsKLSAgRVhQRUNUX0ZBTFNFKGJhciA9
PSAieCIpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6Om9wZXJhdG9yIT0oKS4KLVRFU1QoU3RyaW5n
VGVzdCwgTm90RXF1YWxzKSB7Ci0gIGNvbnN0IFN0cmluZyBudWxsKE5VTEwpOwotICBFWFBFQ1Rf
RkFMU0UobnVsbCAhPSBOVUxMKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShudWxsICE9ICIi
KTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShudWxsICE9ICJiYXIiKTsgIC8vIE5PTElOVAot
Ci0gIGNvbnN0IFN0cmluZyBlbXB0eSgiIik7Ci0gIEVYUEVDVF9UUlVFKGVtcHR5ICE9IE5VTEwp
OyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShlbXB0eSAhPSAiIik7ICAvLyBOT0xJTlQKLSAg
RVhQRUNUX1RSVUUoZW1wdHkgIT0gImJhciIpOyAgLy8gTk9MSU5UCi0KLSAgY29uc3QgU3RyaW5n
IGZvbygiZm9vIik7Ci0gIEVYUEVDVF9UUlVFKGZvbyAhPSBOVUxMKTsgIC8vIE5PTElOVAotICBF
WFBFQ1RfVFJVRShmb28gIT0gIiIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKGZvbyAhPSAi
YmFyIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKGZvbyAhPSAiZm9vIik7ICAvLyBOT0xJ
TlQKLQotICBjb25zdCBTdHJpbmcgYmFyKCJ4XDB5IiwgMyk7Ci0gIEVYUEVDVF9UUlVFKGJhciAh
PSAieCIpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6Omxlbmd0aCgpLgotVEVTVChTdHJpbmdUZXN0
LCBMZW5ndGgpIHsKLSAgRVhQRUNUX0VRKDBVLCBTdHJpbmcoKS5sZW5ndGgoKSk7Ci0gIEVYUEVD
VF9FUSgwVSwgU3RyaW5nKCIiKS5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgyVSwgU3RyaW5nKCJh
YiIpLmxlbmd0aCgpKTsKLSAgRVhQRUNUX0VRKDNVLCBTdHJpbmcoImFcMGIiLCAzKS5sZW5ndGgo
KSk7Ci19Ci0KLS8vIFRlc3RzIFN0cmluZzo6RW5kc1dpdGgoKS4KLVRFU1QoU3RyaW5nVGVzdCwg
RW5kc1dpdGgpIHsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCJmb29iYXIiKS5FbmRzV2l0aCgiYmFy
IikpOwotICBFWFBFQ1RfVFJVRShTdHJpbmcoImZvb2JhciIpLkVuZHNXaXRoKCIiKSk7Ci0gIEVY
UEVDVF9UUlVFKFN0cmluZygiIikuRW5kc1dpdGgoIiIpKTsKLQotICBFWFBFQ1RfRkFMU0UoU3Ry
aW5nKCJmb29iYXIiKS5FbmRzV2l0aCgiZm9vIikpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCIi
KS5FbmRzV2l0aCgiZm9vIikpOwotfQotCiAvLyBUZXN0cyBTdHJpbmc6OkVuZHNXaXRoQ2FzZUlu
c2Vuc2l0aXZlKCkuCiBURVNUKFN0cmluZ1Rlc3QsIEVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKSB7
Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiZm9vYmFyIikuRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUo
IkJBUiIpKTsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCJmb29iYVIiKS5FbmRzV2l0aENhc2VJbnNl
bnNpdGl2ZSgiYmFyIikpOwotICBFWFBFQ1RfVFJVRShTdHJpbmcoImZvb2JhciIpLkVuZHNXaXRo
Q2FzZUluc2Vuc2l0aXZlKCIiKSk7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiIikuRW5kc1dpdGhD
YXNlSW5zZW5zaXRpdmUoIiIpKTsKKyAgRVhQRUNUX1RSVUUoU3RyaW5nOjpFbmRzV2l0aENhc2VJ
bnNlbnNpdGl2ZSgiZm9vYmFyIiwgIkJBUiIpKTsKKyAgRVhQRUNUX1RSVUUoU3RyaW5nOjpFbmRz
V2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vYmFSIiwgImJhciIpKTsKKyAgRVhQRUNUX1RSVUUoU3Ry
aW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vYmFyIiwgIiIpKTsKKyAgRVhQRUNUX1RS
VUUoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiIiwgIiIpKTsKIAotICBFWFBFQ1Rf
RkFMU0UoU3RyaW5nKCJGb29iYXIiKS5FbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vIikpOwot
ICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCJmb29iYXIiKS5FbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgi
Rm9vIikpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCIiKS5FbmRzV2l0aENhc2VJbnNlbnNpdGl2
ZSgiZm9vIikpOworICBFWFBFQ1RfRkFMU0UoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2
ZSgiRm9vYmFyIiwgImZvbyIpKTsKKyAgRVhQRUNUX0ZBTFNFKFN0cmluZzo6RW5kc1dpdGhDYXNl
SW5zZW5zaXRpdmUoImZvb2JhciIsICJGb28iKSk7CisgIEVYUEVDVF9GQUxTRShTdHJpbmc6OkVu
ZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCIiLCAiZm9vIikpOwogfQogCiAvLyBDKytCdWlsZGVyJ3Mg
cHJlcHJvY2Vzc29yIGlzIGJ1Z2d5OyBpdCBmYWlscyB0byBleHBhbmQgbWFjcm9zIHRoYXQKQEAg
LTEwNzksODcgKzEwNDgsNiBAQCBURVNUKFN0cmluZ1Rlc3QsIENhc2VJbnNlbnNpdGl2ZVdpZGVD
U3RyaW5nRXF1YWxzKSB7CiAgIEVYUEVDVF9UUlVFKFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlV2lk
ZUNTdHJpbmdFcXVhbHMoTCJGT09CQVIiLCBMImZvb2JhciIpKTsKIH0KIAotLy8gVGVzdHMgdGhh
dCBOVUxMIGNhbiBiZSBhc3NpZ25lZCB0byBhIFN0cmluZy4KLVRFU1QoU3RyaW5nVGVzdCwgQ2Fu
QmVBc3NpZ25lZE5VTEwpIHsKLSAgY29uc3QgU3RyaW5nIHNyYyhOVUxMKTsKLSAgU3RyaW5nIGRl
c3Q7Ci0KLSAgZGVzdCA9IHNyYzsKLSAgRVhQRUNUX1NUUkVRKE5VTEwsIGRlc3QuY19zdHIoKSk7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIGVtcHR5IHN0cmluZyAiIiBjYW4gYmUgYXNzaWduZWQg
dG8gYSBTdHJpbmcuCi1URVNUKFN0cmluZ1Rlc3QsIENhbkJlQXNzaWduZWRFbXB0eSkgewotICBj
b25zdCBTdHJpbmcgc3JjKCIiKTsKLSAgU3RyaW5nIGRlc3Q7Ci0KLSAgZGVzdCA9IHNyYzsKLSAg
RVhQRUNUX1NUUkVRKCIiLCBkZXN0LmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgbm9u
LWVtcHR5IHN0cmluZyBjYW4gYmUgYXNzaWduZWQgdG8gYSBTdHJpbmcuCi1URVNUKFN0cmluZ1Rl
c3QsIENhbkJlQXNzaWduZWROb25FbXB0eSkgewotICBjb25zdCBTdHJpbmcgc3JjKCJoZWxsbyIp
OwotICBTdHJpbmcgZGVzdDsKLSAgZGVzdCA9IHNyYzsKLSAgRVhQRUNUX0VRKDVVLCBkZXN0Lmxl
bmd0aCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJoZWxsbyIsIGRlc3QuY19zdHIoKSk7Ci0KLSAgY29u
c3QgU3RyaW5nIHNyYzIoInhcMHkiLCAzKTsKLSAgU3RyaW5nIGRlc3QyOwotICBkZXN0MiA9IHNy
YzI7Ci0gIEVYUEVDVF9FUSgzVSwgZGVzdDIubGVuZ3RoKCkpOwotICBFWFBFQ1RfRVEoJ3gnLCBk
ZXN0Mi5jX3N0cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdcMCcsIGRlc3QyLmNfc3RyKClbMV0pOwot
ICBFWFBFQ1RfRVEoJ3knLCBkZXN0Mi5jX3N0cigpWzJdKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBh
IFN0cmluZyBjYW4gYmUgYXNzaWduZWQgdG8gaXRzZWxmLgotVEVTVChTdHJpbmdUZXN0LCBDYW5C
ZUFzc2lnbmVkU2VsZikgewotICBTdHJpbmcgZGVzdCgiaGVsbG8iKTsKLQotICBkZXN0ID0gZGVz
dDsKLSAgRVhQRUNUX1NUUkVRKCJoZWxsbyIsIGRlc3QuY19zdHIoKSk7Ci19Ci0KLS8vIFN1biBT
dHVkaW8gPCAxMiBpbmNvcnJlY3RseSByZWplY3RzIHRoaXMgY29kZSBkdWUgdG8gYW4gb3Zlcmxv
YWRpbmcKLS8vIGFtYmlndWl0eS4KLSNpZiAhKGRlZmluZWQoX19TVU5QUk9fQ0MpICYmIF9fU1VO
UFJPX0NDIDwgMHg1OTApCi0vLyBUZXN0cyBzdHJlYW1pbmcgYSBTdHJpbmcuCi1URVNUKFN0cmlu
Z1Rlc3QsIFN0cmVhbXMpIHsKLSAgRVhQRUNUX0VRKFN0cmVhbWFibGVUb1N0cmluZyhTdHJpbmco
KSksICIobnVsbCkiKTsKLSAgRVhQRUNUX0VRKFN0cmVhbWFibGVUb1N0cmluZyhTdHJpbmcoIiIp
KSwgIiIpOwotICBFWFBFQ1RfRVEoU3RyZWFtYWJsZVRvU3RyaW5nKFN0cmluZygiYVwwYiIsIDMp
KSwgImFcXDBiIik7Ci19Ci0jZW5kaWYKLQotLy8gVGVzdHMgdGhhdCBTdHJpbmc6OkZvcm1hdCgp
IHdvcmtzLgotVEVTVChTdHJpbmdUZXN0LCBGb3JtYXRXb3JrcykgewotICAvLyBOb3JtYWwgY2Fz
ZTogdGhlIGZvcm1hdCBzcGVjIGlzIHZhbGlkLCB0aGUgYXJndW1lbnRzIG1hdGNoIHRoZQotICAv
LyBzcGVjLCBhbmQgdGhlIHJlc3VsdCBpcyA8IDQwOTUgY2hhcmFjdGVycy4KLSAgRVhQRUNUX1NU
UkVRKCJIZWxsbywgNDIiLCBTdHJpbmc6OkZvcm1hdCgiJXMsICVkIiwgIkhlbGxvIiwgNDIpLmNf
c3RyKCkpOwotCi0gIC8vIEVkZ2UgY2FzZTogdGhlIHJlc3VsdCBpcyA0MDk1IGNoYXJhY3RlcnMu
Ci0gIGNoYXIgYnVmZmVyWzQwOTZdOwotICBjb25zdCBzaXplX3Qga1NpemUgPSBzaXplb2YoYnVm
ZmVyKTsKLSAgbWVtc2V0KGJ1ZmZlciwgJ2EnLCBrU2l6ZSAtIDEpOwotICBidWZmZXJba1NpemUg
LSAxXSA9ICdcMCc7Ci0gIEVYUEVDVF9TVFJFUShidWZmZXIsIFN0cmluZzo6Rm9ybWF0KCIlcyIs
IGJ1ZmZlcikuY19zdHIoKSk7Ci0KLSAgLy8gVGhlIHJlc3VsdCBuZWVkcyB0byBiZSA0MDk2IGNo
YXJhY3RlcnMsIGV4Y2VlZGluZyBGb3JtYXQoKSdzIGxpbWl0LgotICBFWFBFQ1RfU1RSRVEoIjxm
b3JtYXR0aW5nIGVycm9yIG9yIGJ1ZmZlciBleGNlZWRlZD4iLAotICAgICAgICAgICAgICAgU3Ry
aW5nOjpGb3JtYXQoInglcyIsIGJ1ZmZlcikuY19zdHIoKSk7Ci0KLSNpZiBHVEVTVF9PU19MSU5V
WAotICAvLyBPbiBMaW51eCwgaW52YWxpZCBmb3JtYXQgc3BlYyBzaG91bGQgbGVhZCB0byBhbiBl
cnJvciBtZXNzYWdlLgotICAvLyBJbiBvdGhlciBlbnZpcm9ubWVudCAoZS5nLiBNU1ZDIG9uIFdp
bmRvd3MpLCBTdHJpbmc6OkZvcm1hdCgpIG1heQotICAvLyBzaW1wbHkgaWdub3JlIGEgYmFkIGZv
cm1hdCBzcGVjLCBzbyB0aGlzIGFzc2VydGlvbiBpcyBydW4gb24KLSAgLy8gTGludXggb25seS4K
LSAgRVhQRUNUX1NUUkVRKCI8Zm9ybWF0dGluZyBlcnJvciBvciBidWZmZXIgZXhjZWVkZWQ+IiwK
LSAgICAgICAgICAgICAgIFN0cmluZzo6Rm9ybWF0KCIlIikuY19zdHIoKSk7Ci0jZW5kaWYKLX0K
LQogI2lmIEdURVNUX09TX1dJTkRPV1MKIAogLy8gVGVzdHMgU3RyaW5nOjpTaG93V2lkZUNTdHJp
bmcoKS4KQEAgLTExNzAsMTcgKzEwNTgsNyBAQCBURVNUKFN0cmluZ1Rlc3QsIFNob3dXaWRlQ1N0
cmluZykgewogICBFWFBFQ1RfU1RSRVEoImZvbyIsIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKEwi
Zm9vIikuY19zdHIoKSk7CiB9CiAKLS8vIFRlc3RzIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVv
dGVkKCkuCi1URVNUKFN0cmluZ1Rlc3QsIFNob3dXaWRlQ1N0cmluZ1F1b3RlZCkgewotICBFWFBF
Q1RfU1RSRVEoIihudWxsKSIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OlNob3dXaWRlQ1N0cmlu
Z1F1b3RlZChOVUxMKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJMXCJcIiIsCi0gICAgICAg
ICAgICAgICBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChMIiIpLmNfc3RyKCkpOwotICBF
WFBFQ1RfU1RSRVEoIkxcImZvb1wiIiwKLSAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd1dpZGVD
U3RyaW5nUXVvdGVkKEwiZm9vIikuY19zdHIoKSk7Ci19Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dT
X01PQklMRQorIyBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogVEVTVChTdHJpbmdUZXN0LCBB
bnNpQW5kVXRmMTZOdWxsKSB7CiAgIEVYUEVDVF9FUShOVUxMLCBTdHJpbmc6OkFuc2lUb1V0ZjE2
KE5VTEwpKTsKICAgRVhQRUNUX0VRKE5VTEwsIFN0cmluZzo6VXRmMTZUb0Fuc2koTlVMTCkpOwpA
QCAtMTIwMyw3ICsxMDgxLDcgQEAgVEVTVChTdHJpbmdUZXN0LCBBbnNpQW5kVXRmMTZDb252ZXJ0
UGF0aENoYXJzKSB7CiAgIEVYUEVDVF9FUSgwLCB3Y3NuY21wKEwiLjpcXCBcIio/IiwgdXRmMTYs
IDMpKTsKICAgZGVsZXRlIFtdIHV0ZjE2OwogfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dT
X01PQklMRQorIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIAogI2VuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTCiAKQEAgLTEzMTcsNiArMTE5NSwxNyBAQCBURVNUX0YoRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc0ZhdGFsRmFsaXVyZSkgewogICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShBZGRGYXRhbEZhaWx1cmUoKSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7CiB9
CiAKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworVEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVy
ZVRlc3QsIEFjY2VwdHNTdHJpbmdPYmplY3QpIHsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRk
RmF0YWxGYWlsdXJlKCksIDo6c3RyaW5nKCJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpKTsKK30K
KyNlbmRpZgorCitURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgQWNjZXB0c1N0ZFN0cmlu
Z09iamVjdCkgeworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRGYXRhbEZhaWx1cmUoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6OnN0cmluZygiRXhwZWN0ZWQgZmF0YWwgZmFpbHVy
ZS4iKSk7Cit9CisKIFRFU1RfRihFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBDYXRjaGVzRmF0YWxG
YWlsdXJlT25BbGxUaHJlYWRzKSB7CiAgIC8vIFdlIGhhdmUgYW5vdGhlciB0ZXN0IGJlbG93IHRv
IHZlcmlmeSB0aGF0IHRoZSBtYWNybyBjYXRjaGVzIGZhdGFsCiAgIC8vIGZhaWx1cmVzIGdlbmVy
YXRlZCBvbiBhbm90aGVyIHRocmVhZC4KQEAgLTEzMjYsNyArMTIxNSw3IEBAIFRFU1RfRihFeHBl
Y3RGYXRhbEZhaWx1cmVUZXN0LCBDYXRjaGVzRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzKSB7CiAK
ICNpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFNpbGVuY2VzIHdhcm5pbmdzOiAiQ29uZGl0aW9uIGlz
IGFsd2F5cyB0cnVlIgotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MKKyMgcHJhZ21hIG9wdGlv
biBwdXNoIC13LWNjYwogI2VuZGlmCiAKIC8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoKSBjYW4gYmUgdXNlZCBpbiBhIG5vbi12b2lkCkBAIC0xMzU0LDcgKzEyNDMsNyBAQCB2b2lk
IERvZXNOb3RBYm9ydEhlbHBlcihib29sKiBhYm9ydGVkKSB7CiAKICNpZmRlZiBfX0JPUkxBTkRD
X18KIC8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9wdGlvbiBw
dXNoIiBzdXBwcmVzc2VkIHRoZW0uCi0jcHJhZ21hIG9wdGlvbiBwb3AKKyMgcHJhZ21hIG9wdGlv
biBwb3AKICNlbmRpZgogCiBURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgRG9lc05vdEFi
b3J0KSB7CkBAIC0xMzcxLDggKzEyNjAsOCBAQCBzdGF0aWMgaW50IGdsb2JhbF92YXIgPSAwOwog
I2RlZmluZSBHVEVTVF9VU0VfVU5QUk9URUNURURfQ09NTUFfIGdsb2JhbF92YXIrKywgZ2xvYmFs
X3ZhcisrCiAKIFRFU1RfRihFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBBY2NlcHRzTWFjcm9UaGF0
RXhwYW5kc1RvVW5wcm90ZWN0ZWRDb21tYSkgewotI2lmICFkZWZpbmVkKF9fQk9STEFORENfXykg
fHwgX19CT1JMQU5EQ19fID49IDB4NjAwCi0gIC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAwNy4K
KyNpZm5kZWYgX19CT1JMQU5EQ19fCisgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIuCiAgIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKHsKICAgICBHVEVTVF9VU0VfVU5QUk9URUNURURfQ09NTUFfOwogICAg
IEFkZEZhdGFsRmFpbHVyZSgpOwpAQCAtMTM5NCw2ICsxMjgzLDE4IEBAIFRFU1RfRihFeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LCBDYXRjaGVzTm9uZmF0YWxGYWlsdXJlKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKIH0KIAorI2lm
IEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCitURVNUX0YoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVz
dCwgQWNjZXB0c1N0cmluZ09iamVjdCkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBZGRO
b25mYXRhbEZhaWx1cmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdHJpbmcoIkV4
cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpKTsKK30KKyNlbmRpZgorCitURVNUX0YoRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQWNjZXB0c1N0ZFN0cmluZ09iamVjdCkgeworICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShBZGROb25mYXRhbEZhaWx1cmUoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgOjpzdGQ6OnN0cmluZygiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIikpOwor
fQorCiBURVNUX0YoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc05vbmZhdGFsRmFp
bHVyZU9uQWxsVGhyZWFkcykgewogICAvLyBXZSBoYXZlIGFub3RoZXIgdGVzdCBiZWxvdyB0byB2
ZXJpZnkgdGhhdCB0aGUgbWFjcm8gY2F0Y2hlcwogICAvLyBub24tZmF0YWwgZmFpbHVyZXMgZ2Vu
ZXJhdGVkIG9uIGFub3RoZXIgdGhyZWFkLgpAQCAtMTQ4Myw4ICsxMzg0LDcgQEAgY2xhc3MgVGVz
dFJlc3VsdFRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgLy8gSW4gb3JkZXIgdG8gdGVzdCBUZXN0
UmVzdWx0LCB3ZSBuZWVkIHRvIG1vZGlmeSBpdHMgaW50ZXJuYWwKICAgICAvLyBzdGF0ZSwgaW4g
cGFydGljdWxhciB0aGUgVGVzdFBhcnRSZXN1bHQgdmVjdG9yIGl0IGhvbGRzLgogICAgIC8vIHRl
c3RfcGFydF9yZXN1bHRzKCkgcmV0dXJucyBhIGNvbnN0IHJlZmVyZW5jZSB0byB0aGlzIHZlY3Rv
ci4KLSAgICAvLyBXZSBjYXN0IGl0IHRvIGEgbm9uLWNvbnN0IG9iamVjdCBzLnQuIGl0IGNhbiBi
ZSBtb2RpZmllZCAoeWVzLAotICAgIC8vIHRoaXMgaXMgYSBoYWNrKS4KKyAgICAvLyBXZSBjYXN0
IGl0IHRvIGEgbm9uLWNvbnN0IG9iamVjdCBzLnQuIGl0IGNhbiBiZSBtb2RpZmllZAogICAgIFRQ
UlZlY3RvciogcmVzdWx0czEgPSBjb25zdF9jYXN0PFRQUlZlY3Rvcio+KAogICAgICAgICAmVGVz
dFJlc3VsdEFjY2Vzc29yOjp0ZXN0X3BhcnRfcmVzdWx0cygqcjEpKTsKICAgICBUUFJWZWN0b3Iq
IHJlc3VsdHMyID0gY29uc3RfY2FzdDxUUFJWZWN0b3IqPigKQEAgLTE1MDksNyArMTQwOSw3IEBA
IGNsYXNzIFRlc3RSZXN1bHRUZXN0IDogcHVibGljIFRlc3QgewogICAgIGRlbGV0ZSByMjsKICAg
fQogCi0gIC8vIEhlbHBlciB0aGF0IGNvbXBhcmVzIHR3byB0d28gVGVzdFBhcnRSZXN1bHRzLgor
ICAvLyBIZWxwZXIgdGhhdCBjb21wYXJlcyB0d28gVGVzdFBhcnRSZXN1bHRzLgogICBzdGF0aWMg
dm9pZCBDb21wYXJlVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIGV4cGVjdGVk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFBhcnRSZXN1
bHQmIGFjdHVhbCkgewogICAgIEVYUEVDVF9FUShleHBlY3RlZC50eXBlKCksIGFjdHVhbC50eXBl
KCkpOwpAQCAtMTU2Niw3ICsxNDY2LDcgQEAgVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBO
b1Byb3BlcnRpZXNGb3VuZFdoZW5Ob25lQXJlQWRkZWQpIHsKIFRFU1QoVGVzdFJlc3VsdFByb3Bl
cnR5VGVzdCwgT25lUHJvcGVydHlGb3VuZFdoZW5BZGRlZCkgewogICBUZXN0UmVzdWx0IHRlc3Rf
cmVzdWx0OwogICBUZXN0UHJvcGVydHkgcHJvcGVydHkoImtleV8xIiwgIjEiKTsKLSAgVGVzdFJl
c3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5KTsKKyAg
VGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2Fz
ZSIsIHByb3BlcnR5KTsKICAgQVNTRVJUX0VRKDEsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlf
Y291bnQoKSk7CiAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgYWN0dWFsX3Byb3BlcnR5ID0gdGVzdF9y
ZXN1bHQuR2V0VGVzdFByb3BlcnR5KDApOwogICBFWFBFQ1RfU1RSRVEoImtleV8xIiwgYWN0dWFs
X3Byb3BlcnR5LmtleSgpKTsKQEAgLTE1NzgsOCArMTQ3OCw4IEBAIFRFU1QoVGVzdFJlc3VsdFBy
b3BlcnR5VGVzdCwgTXVsdGlwbGVQcm9wZXJ0aWVzRm91bmRXaGVuQWRkZWQpIHsKICAgVGVzdFJl
c3VsdCB0ZXN0X3Jlc3VsdDsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzEoImtleV8xIiwgIjEi
KTsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzIoImtleV8yIiwgIjIiKTsKLSAgVGVzdFJlc3Vs
dEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzEpOwotICBU
ZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlf
Mik7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAi
dGVzdGNhc2UiLCBwcm9wZXJ0eV8xKTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9w
ZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzIpOwogICBBU1NFUlRfRVEo
MiwgdGVzdF9yZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKICAgY29uc3QgVGVzdFByb3Bl
cnR5JiBhY3R1YWxfcHJvcGVydHlfMSA9IHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgwKTsK
ICAgRVhQRUNUX1NUUkVRKCJrZXlfMSIsIGFjdHVhbF9wcm9wZXJ0eV8xLmtleSgpKTsKQEAgLTE1
OTcsMTAgKzE0OTcsMTAgQEAgVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBPdmVycmlkZXNW
YWx1ZXNGb3JEdXBsaWNhdGVLZXlzKSB7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8yXzEoImtl
eV8yIiwgIjIiKTsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzFfMigia2V5XzEiLCAiMTIiKTsK
ICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzJfMigia2V5XzIiLCAiMjIiKTsKLSAgVGVzdFJlc3Vs
dEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzFfMSk7Ci0g
IFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9wZXJ0
eV8yXzEpOwotICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3Vs
dCwgcHJvcGVydHlfMV8yKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgm
dGVzdF9yZXN1bHQsIHByb3BlcnR5XzJfMik7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3Jk
UHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8xXzEpOworICBUZXN0
UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwg
cHJvcGVydHlfMl8xKTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVz
dF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzFfMik7CisgIFRlc3RSZXN1bHRBY2Nlc3Nv
cjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8yXzIp
OwogCiAgIEFTU0VSVF9FUSgyLCB0ZXN0X3Jlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwog
ICBjb25zdCBUZXN0UHJvcGVydHkmIGFjdHVhbF9wcm9wZXJ0eV8xID0gdGVzdF9yZXN1bHQuR2V0
VGVzdFByb3BlcnR5KDApOwpAQCAtMTYxMywxNCArMTUxMywxNCBAQCBURVNUKFRlc3RSZXN1bHRQ
cm9wZXJ0eVRlc3QsIE92ZXJyaWRlc1ZhbHVlc0ZvckR1cGxpY2F0ZUtleXMpIHsKIH0KIAogLy8g
VGVzdHMgVGVzdFJlc3VsdDo6R2V0VGVzdFByb3BlcnR5KCkuCi1URVNUKFRlc3RSZXN1bHRQcm9w
ZXJ0eURlYXRoVGVzdCwgR2V0VGVzdFByb3BlcnR5KSB7CitURVNUKFRlc3RSZXN1bHRQcm9wZXJ0
eVRlc3QsIEdldFRlc3RQcm9wZXJ0eSkgewogICBUZXN0UmVzdWx0IHRlc3RfcmVzdWx0OwogICBU
ZXN0UHJvcGVydHkgcHJvcGVydHlfMSgia2V5XzEiLCAiMSIpOwogICBUZXN0UHJvcGVydHkgcHJv
cGVydHlfMigia2V5XzIiLCAiMiIpOwogICBUZXN0UHJvcGVydHkgcHJvcGVydHlfMygia2V5XzMi
LCAiMyIpOwotICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3Vs
dCwgcHJvcGVydHlfMSk7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRl
c3RfcmVzdWx0LCBwcm9wZXJ0eV8yKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9w
ZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzMpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJl
Y29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMSk7CisgIFRl
c3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2Ui
LCBwcm9wZXJ0eV8yKTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVz
dF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzMpOwogCiAgIGNvbnN0IFRlc3RQcm9wZXJ0
eSYgZmV0Y2hlZF9wcm9wZXJ0eV8xID0gdGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KDApOwog
ICBjb25zdCBUZXN0UHJvcGVydHkmIGZldGNoZWRfcHJvcGVydHlfMiA9IHRlc3RfcmVzdWx0Lkdl
dFRlc3RQcm9wZXJ0eSgxKTsKQEAgLTE2MzksNDEgKzE1MzksMTUgQEAgVEVTVChUZXN0UmVzdWx0
UHJvcGVydHlEZWF0aFRlc3QsIEdldFRlc3RQcm9wZXJ0eSkgewogICBFWFBFQ1RfREVBVEhfSUZf
U1VQUE9SVEVEKHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgtMSksICIiKTsKIH0KIAotLy8g
V2hlbiBhIHByb3BlcnR5IHVzaW5nIGEgcmVzZXJ2ZWQga2V5IGlzIHN1cHBsaWVkIHRvIHRoaXMg
ZnVuY3Rpb24sIGl0IHRlc3RzCi0vLyB0aGF0IGEgbm9uLWZhdGFsIGZhaWx1cmUgaXMgYWRkZWQs
IGEgZmF0YWwgZmFpbHVyZSBpcyBub3QgYWRkZWQsIGFuZCB0aGF0IHRoZQotLy8gcHJvcGVydHkg
aXMgbm90IHJlY29yZGVkLgotdm9pZCBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9w
ZXJ0eVdpdGhSZXNlcnZlZEtleShjb25zdCBjaGFyKiBrZXkpIHsKLSAgVGVzdFJlc3VsdCB0ZXN0
X3Jlc3VsdDsKLSAgVGVzdFByb3BlcnR5IHByb3BlcnR5KGtleSwgIjEiKTsKLSAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoCi0gICAgICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5
KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHkpLAotICAgICAgIlJlc2VydmVkIGtleSIpOwotICBBU1NF
UlRfRVEoMCwgdGVzdF9yZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpKSA8PCAiTm90IHJlY29y
ZGVkIjsKLX0KLQotLy8gQXR0ZW1wdGluZyB0byByZWNvcmRpbmcgYSBwcm9wZXJ0eSB3aXRoIHRo
ZSBSZXNlcnZlZCBsaXRlcmFsICJuYW1lIgotLy8gc2hvdWxkIGFkZCBhIG5vbi1mYXRhbCBmYWls
dXJlIGFuZCB0aGUgcHJvcGVydHkgc2hvdWxkIG5vdCBiZSByZWNvcmRlZC4KLVRFU1QoVGVzdFJl
c3VsdFByb3BlcnR5VGVzdCwgQWRkRmFpbHVyZVdoZW5Vc2luZ1Jlc2VydmVkS2V5Q2FsbGVkTmFt
ZSkgewotICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZl
ZEtleSgibmFtZSIpOwotfQotCi0vLyBBdHRlbXB0aW5nIHRvIHJlY29yZGluZyBhIHByb3BlcnR5
IHdpdGggdGhlIFJlc2VydmVkIGxpdGVyYWwgInN0YXR1cyIKLS8vIHNob3VsZCBhZGQgYSBub24t
ZmF0YWwgZmFpbHVyZSBhbmQgdGhlIHByb3BlcnR5IHNob3VsZCBub3QgYmUgcmVjb3JkZWQuCi1U
RVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIEFkZEZhaWx1cmVXaGVuVXNpbmdSZXNlcnZlZEtl
eUNhbGxlZFN0YXR1cykgewotICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0
eVdpdGhSZXNlcnZlZEtleSgic3RhdHVzIik7Ci19Ci0KLS8vIEF0dGVtcHRpbmcgdG8gcmVjb3Jk
aW5nIGEgcHJvcGVydHkgd2l0aCB0aGUgUmVzZXJ2ZWQgbGl0ZXJhbCAidGltZSIKLS8vIHNob3Vs
ZCBhZGQgYSBub24tZmF0YWwgZmFpbHVyZSBhbmQgdGhlIHByb3BlcnR5IHNob3VsZCBub3QgYmUg
cmVjb3JkZWQuCi1URVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIEFkZEZhaWx1cmVXaGVuVXNp
bmdSZXNlcnZlZEtleUNhbGxlZFRpbWUpIHsKLSAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3Jk
aW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoInRpbWUiKTsKLX0KLQotLy8gQXR0ZW1wdGluZyB0
byByZWNvcmRpbmcgYSBwcm9wZXJ0eSB3aXRoIHRoZSBSZXNlcnZlZCBsaXRlcmFsICJjbGFzc25h
bWUiCi0vLyBzaG91bGQgYWRkIGEgbm9uLWZhdGFsIGZhaWx1cmUgYW5kIHRoZSBwcm9wZXJ0eSBz
aG91bGQgbm90IGJlIHJlY29yZGVkLgotVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBBZGRG
YWlsdXJlV2hlblVzaW5nUmVzZXJ2ZWRLZXlDYWxsZWRDbGFzc25hbWUpIHsKLSAgRXhwZWN0Tm9u
RmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoImNsYXNzbmFtZSIp
OwotfQorLy8gVGVzdHMgdGhlIFRlc3QgY2xhc3MuCisvLworLy8gSXQncyBkaWZmaWN1bHQgdG8g
dGVzdCBldmVyeSBwdWJsaWMgbWV0aG9kIG9mIHRoaXMgY2xhc3MgKHdlIGFyZQorLy8gYWxyZWFk
eSBzdHJldGNoaW5nIHRoZSBsaW1pdCBvZiBHb29nbGUgVGVzdCBieSB1c2luZyBpdCB0byB0ZXN0
IGl0c2VsZiEpLgorLy8gRm9ydHVuYXRlbHksIHdlIGRvbid0IGhhdmUgdG8gZG8gdGhhdCwgYXMg
d2UgYXJlIGFscmVhZHkgdGVzdGluZworLy8gdGhlIGZ1bmN0aW9uYWxpdGllcyBvZiB0aGUgVGVz
dCBjbGFzcyBleHRlbnNpdmVseSBieSB1c2luZyBHb29nbGUgVGVzdAorLy8gYWxvbmUuCisvLwor
Ly8gVGhlcmVmb3JlLCB0aGlzIHNlY3Rpb24gb25seSBjb250YWlucyBvbmUgdGVzdC4KIAogLy8g
VGVzdHMgdGhhdCBHVGVzdEZsYWdTYXZlciB3b3JrcyBvbiBXaW5kb3dzIGFuZCBNYWMuCiAKQEAg
LTE2OTgsNiArMTU3Miw3IEBAIGNsYXNzIEdUZXN0RmxhZ1NhdmVyVGVzdCA6IHB1YmxpYyBUZXN0
IHsKICAgICBHVEVTVF9GTEFHKHJlcGVhdCkgPSAxOwogICAgIEdURVNUX0ZMQUcoc2h1ZmZsZSkg
PSBmYWxzZTsKICAgICBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSA9IGtNYXhTdGFja1Ry
YWNlRGVwdGg7CisgICAgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSA9ICIiOwogICAgIEdU
RVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSBmYWxzZTsKICAgfQogCkBAIC0xNzI0LDYgKzE1
OTksNyBAQCBjbGFzcyBHVGVzdEZsYWdTYXZlclRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgRVhQ
RUNUX0VRKDEsIEdURVNUX0ZMQUcocmVwZWF0KSk7CiAgICAgRVhQRUNUX0ZBTFNFKEdURVNUX0ZM
QUcoc2h1ZmZsZSkpOwogICAgIEVYUEVDVF9FUShrTWF4U3RhY2tUcmFjZURlcHRoLCBHVEVTVF9G
TEFHKHN0YWNrX3RyYWNlX2RlcHRoKSk7CisgICAgRVhQRUNUX1NUUkVRKCIiLCBHVEVTVF9GTEFH
KHN0cmVhbV9yZXN1bHRfdG8pLmNfc3RyKCkpOwogICAgIEVYUEVDVF9GQUxTRShHVEVTVF9GTEFH
KHRocm93X29uX2ZhaWx1cmUpKTsKIAogICAgIEdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRf
dGVzdHMpID0gdHJ1ZTsKQEAgLTE3MzksOCArMTYxNSwxMCBAQCBjbGFzcyBHVGVzdEZsYWdTYXZl
clRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgR1RFU1RfRkxBRyhyZXBlYXQpID0gMTAwOwogICAg
IEdURVNUX0ZMQUcoc2h1ZmZsZSkgPSB0cnVlOwogICAgIEdURVNUX0ZMQUcoc3RhY2tfdHJhY2Vf
ZGVwdGgpID0gMTsKKyAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pID0gImxvY2FsaG9z
dDoxMjM0IjsKICAgICBHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1ZTsKICAgfQor
CiAgcHJpdmF0ZToKICAgLy8gRm9yIHNhdmluZyBHb29nbGUgVGVzdCBmbGFncyBkdXJpbmcgdGhp
cyB0ZXN0IGNhc2UuCiAgIHN0YXRpYyBHVGVzdEZsYWdTYXZlciogc2F2ZXJfOwpAQCAtMTc3Mywx
NSArMTY1MSwxNiBAQCBzdGF0aWMgdm9pZCBTZXRFbnYoY29uc3QgY2hhciogbmFtZSwgY29uc3Qg
Y2hhciogdmFsdWUpIHsKICAgLy8gQysrQnVpbGRlcidzIHB1dGVudiBvbmx5IHN0b3JlcyBhIHBv
aW50ZXIgdG8gaXRzIHBhcmFtZXRlcjsgd2UgaGF2ZSB0bwogICAvLyBlbnN1cmUgdGhhdCB0aGUg
c3RyaW5nIHJlbWFpbnMgdmFsaWQgYXMgbG9uZyBhcyBpdCBtaWdodCBiZSBuZWVkZWQuCiAgIC8v
IFdlIHVzZSBhbiBzdGQ6Om1hcCB0byBkbyBzby4KLSAgc3RhdGljIHN0ZDo6bWFwPFN0cmluZywg
U3RyaW5nKj4gYWRkZWRfZW52OworICBzdGF0aWMgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6
c3RyaW5nKj4gYWRkZWRfZW52OwogCiAgIC8vIEJlY2F1c2UgcHV0ZW52IHN0b3JlcyBhIHBvaW50
ZXIgdG8gdGhlIHN0cmluZyBidWZmZXIsIHdlIGNhbid0IGRlbGV0ZSB0aGUKICAgLy8gcHJldmlv
dXMgc3RyaW5nIChpZiBwcmVzZW50KSB1bnRpbCBhZnRlciBpdCdzIHJlcGxhY2VkLgotICBTdHJp
bmcgKnByZXZfZW52ID0gTlVMTDsKKyAgc3RkOjpzdHJpbmcgKnByZXZfZW52ID0gTlVMTDsKICAg
aWYgKGFkZGVkX2Vudi5maW5kKG5hbWUpICE9IGFkZGVkX2Vudi5lbmQoKSkgewogICAgIHByZXZf
ZW52ID0gYWRkZWRfZW52W25hbWVdOwogICB9Ci0gIGFkZGVkX2VudltuYW1lXSA9IG5ldyBTdHJp
bmcoKE1lc3NhZ2UoKSA8PCBuYW1lIDw8ICI9IiA8PCB2YWx1ZSkuR2V0U3RyaW5nKCkpOworICBh
ZGRlZF9lbnZbbmFtZV0gPSBuZXcgc3RkOjpzdHJpbmcoCisgICAgICAoTWVzc2FnZSgpIDw8IG5h
bWUgPDwgIj0iIDw8IHZhbHVlKS5HZXRTdHJpbmcoKSk7CiAKICAgLy8gVGhlIHN0YW5kYXJkIHNp
Z25hdHVyZSBvZiBwdXRlbnYgYWNjZXB0cyBhICdjaGFyKicgYXJndW1lbnQuIE90aGVyCiAgIC8v
IGltcGxlbWVudGF0aW9ucywgbGlrZSBDKytCdWlsZGVyJ3MsIGFjY2VwdCBhICdjb25zdCBjaGFy
KicuCkBAIC0xODEzLDYgKzE2OTIsOCBAQCBURVNUKEludDMyRnJvbUdUZXN0RW52VGVzdCwgUmV0
dXJuc0RlZmF1bHRXaGVuVmFyaWFibGVJc05vdFNldCkgewogICBFWFBFQ1RfRVEoMTAsIEludDMy
RnJvbUdUZXN0RW52KCJ0ZW1wIiwgMTApKTsKIH0KIAorIyBpZiAhZGVmaW5lZChHVEVTVF9HRVRf
SU5UMzJfRlJPTV9FTlZfKQorCiAvLyBUZXN0cyB0aGF0IEludDMyRnJvbUdUZXN0RW52KCkgcmV0
dXJucyB0aGUgZGVmYXVsdCB2YWx1ZSB3aGVuIHRoZQogLy8gZW52aXJvbm1lbnQgdmFyaWFibGUg
b3ZlcmZsb3dzIGFzIGFuIEludDMyLgogVEVTVChJbnQzMkZyb21HVGVzdEVudlRlc3QsIFJldHVy
bnNEZWZhdWx0V2hlblZhbHVlT3ZlcmZsb3dzKSB7CkBAIC0xODM3LDYgKzE3MTgsOCBAQCBURVNU
KEludDMyRnJvbUdUZXN0RW52VGVzdCwgUmV0dXJuc0RlZmF1bHRXaGVuVmFsdWVJc0ludmFsaWQp
IHsKICAgRVhQRUNUX0VRKDUwLCBJbnQzMkZyb21HVGVzdEVudigidGVtcCIsIDUwKSk7CiB9CiAK
KyMgZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0dFVF9JTlQzMl9GUk9NX0VOVl8pCisKIC8vIFRl
c3RzIHRoYXQgSW50MzJGcm9tR1Rlc3RFbnYoKSBwYXJzZXMgYW5kIHJldHVybnMgdGhlIHZhbHVl
IG9mIHRoZQogLy8gZW52aXJvbm1lbnQgdmFyaWFibGUgd2hlbiBpdCByZXByZXNlbnRzIGEgdmFs
aWQgZGVjaW1hbCBpbnRlZ2VyIGluCiAvLyB0aGUgcmFuZ2Ugb2YgYW4gSW50MzIuCkBAIC0xOTI1
LDcgKzE4MDgsNyBAQCBURVNUKEludDMyRnJvbUVudk9yRGllRGVhdGhUZXN0LCBBYm9ydHNPbkZh
aWx1cmUpIHsKIH0KIAogLy8gVGVzdHMgdGhhdCBJbnQzMkZyb21FbnZPckRpZSgpIGFib3J0cyB3
aXRoIGFuIGVycm9yIG1lc3NhZ2UKLS8vIGlmIHRoZSB2YXJpYWJsZSBjYW5ub3QgYmUgcmVwcmVz
bnRlZCBieSBhbiBJbnQzMi4KKy8vIGlmIHRoZSB2YXJpYWJsZSBjYW5ub3QgYmUgcmVwcmVzZW50
ZWQgYnkgYW4gSW50MzIuCiBURVNUKEludDMyRnJvbUVudk9yRGllRGVhdGhUZXN0LCBBYm9ydHNP
bkludDMyT3ZlcmZsb3cpIHsKICAgU2V0RW52KEdURVNUX0ZMQUdfUFJFRklYX1VQUEVSXyAiVkFS
IiwgIjEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQiKTsKICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRF
RCgKQEAgLTIwNzAsNiArMTk1MywxNzMgQEAgVEVTVChVbml0VGVzdFRlc3QsIENhbkdldE9yaWdp
bmFsV29ya2luZ0RpcikgewogICBFWFBFQ1RfU1RSTkUoVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkt
Pm9yaWdpbmFsX3dvcmtpbmdfZGlyKCksICIiKTsKIH0KIAorVEVTVChVbml0VGVzdFRlc3QsIFJl
dHVybnNQbGF1c2libGVUaW1lc3RhbXApIHsKKyAgRVhQRUNUX0xUKDAsIFVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5zdGFydF90aW1lc3RhbXAoKSk7CisgIEVYUEVDVF9MRShVbml0VGVzdDo6R2V0
SW5zdGFuY2UoKS0+c3RhcnRfdGltZXN0YW1wKCksIEdldFRpbWVJbk1pbGxpcygpKTsKK30KKwor
Ly8gV2hlbiBhIHByb3BlcnR5IHVzaW5nIGEgcmVzZXJ2ZWQga2V5IGlzIHN1cHBsaWVkIHRvIHRo
aXMgZnVuY3Rpb24sIGl0CisvLyB0ZXN0cyB0aGF0IGEgbm9uLWZhdGFsIGZhaWx1cmUgaXMgYWRk
ZWQsIGEgZmF0YWwgZmFpbHVyZSBpcyBub3QgYWRkZWQsCisvLyBhbmQgdGhhdCB0aGUgcHJvcGVy
dHkgaXMgbm90IHJlY29yZGVkLgordm9pZCBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQ
cm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgKKyAgICBjb25zdCBUZXN0UmVzdWx0JiB0ZXN0X3Jlc3Vs
dCwgY29uc3QgY2hhcioga2V5KSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKFRlc3Q6OlJl
Y29yZFByb3BlcnR5KGtleSwgIjEiKSwgIlJlc2VydmVkIGtleSIpOworICBBU1NFUlRfRVEoMCwg
dGVzdF9yZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpKSA8PCAiUHJvcGVydHkgZm9yIGtleSAn
IiA8PCBrZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIicgcmVjb3JkZWQgdW5leHBlY3RlZGx5LiI7Cit9CisKK3ZvaWQgRXhwZWN0Tm9uRmF0
YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdCgK
KyAgICBjb25zdCBjaGFyKiBrZXkpIHsKKyAgY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbyA9IFVu
aXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOworICBBU1NFUlRfVFJV
RSh0ZXN0X2luZm8gIT0gTlVMTCk7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1By
b3BlcnR5V2l0aFJlc2VydmVkS2V5KCp0ZXN0X2luZm8tPnJlc3VsdCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkpOworfQorCit2
b2lkIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5
Rm9yQ3VycmVudFRlc3RDYXNlKAorICAgIGNvbnN0IGNoYXIqIGtleSkgeworICBjb25zdCBUZXN0
Q2FzZSogdGVzdF9jYXNlID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9j
YXNlKCk7CisgIEFTU0VSVF9UUlVFKHRlc3RfY2FzZSAhPSBOVUxMKTsKKyAgRXhwZWN0Tm9uRmF0
YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoCisgICAgICB0ZXN0X2Nh
c2UtPmFkX2hvY190ZXN0X3Jlc3VsdCgpLCBrZXkpOworfQorCit2b2lkIEV4cGVjdE5vbkZhdGFs
RmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2Uo
CisgICAgY29uc3QgY2hhcioga2V5KSB7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGlu
Z1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5KAorICAgICAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkt
PmFkX2hvY190ZXN0X3Jlc3VsdCgpLCBrZXkpOworfQorCisvLyBUZXN0cyB0aGF0IHByb3BlcnR5
IHJlY29yZGluZyBmdW5jdGlvbnMgaW4gVW5pdFRlc3Qgb3V0c2lkZSBvZiB0ZXN0cworLy8gZnVu
Y3Rpb25zIGNvcnJlY2x5LiAgQ3JlYXRpbmcgYSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBVbml0VGVz
dCBlbnN1cmVzIGl0CisvLyBpcyBpbiBhIHN0YXRlIHNpbWlsYXIgdG8gdGhlIFVuaXRUZXN0J3Mg
c2luZ2xldG9uJ3MgYmV0d2VlbiB0ZXN0cy4KK2NsYXNzIFVuaXRUZXN0UmVjb3JkUHJvcGVydHlU
ZXN0IDoKKyAgICBwdWJsaWMgdGVzdGluZzo6aW50ZXJuYWw6OlVuaXRUZXN0UmVjb3JkUHJvcGVy
dHlUZXN0SGVscGVyIHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7
CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRL
ZXlGb3JDdXJyZW50VGVzdENhc2UoCisgICAgICAgICJkaXNhYmxlZCIpOworICAgIEV4cGVjdE5v
bkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRl
c3RDYXNlKAorICAgICAgICAiZXJyb3JzIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVj
b3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdENhc2UoCisgICAgICAg
ICJmYWlsdXJlcyIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5
V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAorICAgICAgICAibmFtZSIpOworICAg
IEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9y
Q3VycmVudFRlc3RDYXNlKAorICAgICAgICAidGVzdHMiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZh
aWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgK
KyAgICAgICAgInRpbWUiKTsKKworICAgIFRlc3Q6OlJlY29yZFByb3BlcnR5KCJ0ZXN0X2Nhc2Vf
a2V5XzEiLCAiMSIpOworICAgIGNvbnN0IFRlc3RDYXNlKiB0ZXN0X2Nhc2UgPSBVbml0VGVzdDo6
R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2Nhc2UoKTsKKyAgICBBU1NFUlRfVFJVRSh0ZXN0
X2Nhc2UgIT0gTlVMTCk7CisKKyAgICBBU1NFUlRfRVEoMSwgdGVzdF9jYXNlLT5hZF9ob2NfdGVz
dF9yZXN1bHQoKS50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOworICAgIEVYUEVDVF9TVFJFUSgidGVz
dF9jYXNlX2tleV8xIiwKKyAgICAgICAgICAgICAgICAgdGVzdF9jYXNlLT5hZF9ob2NfdGVzdF9y
ZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMCkua2V5KCkpOworICAgIEVYUEVDVF9TVFJFUSgiMSIs
CisgICAgICAgICAgICAgICAgIHRlc3RfY2FzZS0+YWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVz
dFByb3BlcnR5KDApLnZhbHVlKCkpOworICB9Cit9OworCisvLyBUZXN0cyBUZXN0UmVzdWx0IGhh
cyB0aGUgZXhwZWN0ZWQgcHJvcGVydHkgd2hlbiBhZGRlZC4KK1RFU1RfRihVbml0VGVzdFJlY29y
ZFByb3BlcnR5VGVzdCwgT25lUHJvcGVydHlGb3VuZFdoZW5BZGRlZCkgeworICBVbml0VGVzdFJl
Y29yZFByb3BlcnR5KCJrZXlfMSIsICIxIik7CisKKyAgQVNTRVJUX0VRKDEsIHVuaXRfdGVzdF8u
YWRfaG9jX3Rlc3RfcmVzdWx0KCkudGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKKworICBFWFBFQ1Rf
U1RSRVEoImtleV8xIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVz
dWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLmtleSgpKTsKKyAgRVhQRUNUX1NUUkVRKCIxIiwKKyAg
ICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3Bl
cnR5KDApLnZhbHVlKCkpOworfQorCisvLyBUZXN0cyBUZXN0UmVzdWx0IGhhcyBtdWx0aXBsZSBw
cm9wZXJ0aWVzIHdoZW4gYWRkZWQuCitURVNUX0YoVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3Qs
IE11bHRpcGxlUHJvcGVydGllc0ZvdW5kV2hlbkFkZGVkKSB7CisgIFVuaXRUZXN0UmVjb3JkUHJv
cGVydHkoImtleV8xIiwgIjEiKTsKKyAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzIiLCAi
MiIpOworCisgIEFTU0VSVF9FUSgyLCB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLnRl
c3RfcHJvcGVydHlfY291bnQoKSk7CisKKyAgRVhQRUNUX1NUUkVRKCJrZXlfMSIsCisgICAgICAg
ICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgw
KS5rZXkoKSk7CisgIEVYUEVDVF9TVFJFUSgiMSIsIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVz
dWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLnZhbHVlKCkpOworCisgIEVYUEVDVF9TVFJFUSgia2V5
XzIiLAorICAgICAgICAgICAgICAgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRU
ZXN0UHJvcGVydHkoMSkua2V5KCkpOworICBFWFBFQ1RfU1RSRVEoIjIiLCB1bml0X3Rlc3RfLmFk
X2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgxKS52YWx1ZSgpKTsKK30KKworLy8g
VGVzdHMgVGVzdFJlc3VsdDo6UmVjb3JkUHJvcGVydHkoKSBvdmVycmlkZXMgdmFsdWVzIGZvciBk
dXBsaWNhdGUga2V5cy4KK1RFU1RfRihVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdCwgT3ZlcnJp
ZGVzVmFsdWVzRm9yRHVwbGljYXRlS2V5cykgeworICBVbml0VGVzdFJlY29yZFByb3BlcnR5KCJr
ZXlfMSIsICIxIik7CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8yIiwgIjIiKTsKKyAg
VW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzEiLCAiMTIiKTsKKyAgVW5pdFRlc3RSZWNvcmRQ
cm9wZXJ0eSgia2V5XzIiLCAiMjIiKTsKKworICBBU1NFUlRfRVEoMiwgdW5pdF90ZXN0Xy5hZF9o
b2NfdGVzdF9yZXN1bHQoKS50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOworCisgIEVYUEVDVF9TVFJF
USgia2V5XzEiLAorICAgICAgICAgICAgICAgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQo
KS5HZXRUZXN0UHJvcGVydHkoMCkua2V5KCkpOworICBFWFBFQ1RfU1RSRVEoIjEyIiwKKyAgICAg
ICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5
KDApLnZhbHVlKCkpOworCisgIEVYUEVDVF9TVFJFUSgia2V5XzIiLAorICAgICAgICAgICAgICAg
dW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMSkua2V5KCkp
OworICBFWFBFQ1RfU1RSRVEoIjIyIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9j
X3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDEpLnZhbHVlKCkpOworfQorCitURVNUX0Yo
VW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3QsCisgICAgICAgQWRkRmFpbHVyZUluc2lkZVRlc3Rz
V2hlblVzaW5nVGVzdENhc2VSZXNlcnZlZEtleXMpIHsKKyAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJl
UmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdCgKKyAgICAgICJu
YW1lIik7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2Vy
dmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgICAidmFsdWVfcGFyYW0iKTsKKyAgRXhwZWN0Tm9u
RmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVz
dCgKKyAgICAgICJ0eXBlX3BhcmFtIik7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGlu
Z1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgICAic3RhdHVzIik7
CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5
Rm9yQ3VycmVudFRlc3QoCisgICAgICAidGltZSIpOworICBFeHBlY3ROb25GYXRhbEZhaWx1cmVS
ZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0KAorICAgICAgImNs
YXNzbmFtZSIpOworfQorCitURVNUX0YoVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3QsCisgICAg
ICAgQWRkUmVjb3JkV2l0aFJlc2VydmVkS2V5c0dlbmVyYXRlc0NvcnJlY3RQcm9wZXJ0eUxpc3Qp
IHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBUZXN0OjpSZWNvcmRQcm9wZXJ0
eSgibmFtZSIsICIxIiksCisgICAgICAiJ2NsYXNzbmFtZScsICduYW1lJywgJ3N0YXR1cycsICd0
aW1lJywgJ3R5cGVfcGFyYW0nLCAndmFsdWVfcGFyYW0nLCIKKyAgICAgICIgJ2ZpbGUnLCBhbmQg
J2xpbmUnIGFyZSByZXNlcnZlZCIpOworfQorCitjbGFzcyBVbml0VGVzdFJlY29yZFByb3BlcnR5
VGVzdEVudmlyb25tZW50IDogcHVibGljIEVudmlyb25tZW50IHsKKyBwdWJsaWM6CisgIHZpcnR1
YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQ
cm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgICAgICAidGVzdHMi
KTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZl
ZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgICAgICAiZmFpbHVyZXMiKTsKKyAgICBFeHBlY3RO
b25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRl
c3RDYXNlKAorICAgICAgICAiZGlzYWJsZWQiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVS
ZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgICAg
ICAiZXJyb3JzIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlX
aXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgIm5hbWUiKTsKKyAgICBF
eHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNp
ZGVPZlRlc3RDYXNlKAorICAgICAgICAidGltZXN0YW1wIik7CisgICAgRXhwZWN0Tm9uRmF0YWxG
YWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgK
KyAgICAgICAgInRpbWUiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9w
ZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgICAgICAicmFuZG9tX3Nl
ZWQiKTsKKyAgfQorfTsKKworLy8gVGhpcyB3aWxsIHRlc3QgcHJvcGVydHkgcmVjb3JkaW5nIG91
dHNpZGUgb2YgYW55IHRlc3Qgb3IgdGVzdCBjYXNlLgorc3RhdGljIEVudmlyb25tZW50KiByZWNv
cmRfcHJvcGVydHlfZW52ID0KKyAgICBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IFVuaXRU
ZXN0UmVjb3JkUHJvcGVydHlUZXN0RW52aXJvbm1lbnQpOworCiAvLyBUaGlzIGdyb3VwIG9mIHRl
c3RzIGlzIGZvciBwcmVkaWNhdGUgYXNzZXJ0aW9ucyAoQVNTRVJUX1BSRUQqLCBldGMpCiAvLyBv
ZiB2YXJpb3VzIGFyaXRpZXMuICBUaGV5IGRvIG5vdCBhdHRlbXB0IHRvIGJlIGV4aGF1c3RpdmUu
ICBSYXRoZXIsCiAvLyB2aWV3IHRoZW0gYXMgc21va2UgdGVzdHMgdGhhdCBjYW4gYmUgZWFzaWx5
IHJldmlld2VkIGFuZCB2ZXJpZmllZC4KQEAgLTI0MDEsNyArMjQ1MSw3IEBAIFRFU1QoU3RyaW5n
QXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1NUUkVRKSB7CiAgIEFTU0VSVF9TVFJFUShwMSwgcDIpOwog
CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9TVFJFUSgiYmFkIiwgImdvb2QiKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiBcImJhZFwiIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICIgIFwiYmFkXCJcbiAgXCJnb29kXCIiKTsKIH0KIAogLy8gVGVzdHMgQVNTRVJU
X1NUUkVRIHdpdGggTlVMTCBhcmd1bWVudHMuCkBAIC0yNDM3LDcgKzI0ODcsNyBAQCBURVNUKFN0
cmluZ0Fzc2VydGlvblRlc3QsIEFTU0VSVF9TVFJDQVNFRVEpIHsKIAogICBBU1NFUlRfU1RSQ0FT
RUVRKCIiLCAiIik7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9TVFJDQVNFRVEoIkhp
IiwgImhpMiIpLAotICAgICAgICAgICAgICAgICAgICAgICAiKGlnbm9yaW5nIGNhc2UpIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICJJZ25vcmluZyBjYXNlIik7CiB9CiAKIC8vIFRlc3RzIEFT
U0VSVF9TVFJDQVNFTkUuCkBAIC0yNDc1LDYgKzI1MjUsMTEgQEAgVEVTVChTdHJpbmdBc3NlcnRp
b25UZXN0LCBTVFJFUV9XaWRlKSB7CiAgIC8vIFN0cmluZ3MgY29udGFpbmluZyB3aWRlIGNoYXJh
Y3RlcnMuCiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9TVFJFUShMImFiY1x4ODEx
OSIsIEwiYWJjXHg4MTIwIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJhYmMiKTsKKwor
ICAvLyBUaGUgc3RyZWFtaW5nIHZhcmlhdGlvbi4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX1NUUkVRKEwiYWJjXHg4MTE5IiwgTCJhYmNceDgxMjEi
KSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7CisgIH0sICJFeHBlY3RlZCBmYWlsdXJlIik7CiB9CiAK
IC8vIFRlc3RzICpfU1RSTkUgb24gd2lkZSBzdHJpbmdzLgpAQCAtMjUwMSw2ICsyNTU2LDkgQEAg
VEVTVChTdHJpbmdBc3NlcnRpb25UZXN0LCBTVFJORV9XaWRlKSB7CiAgIC8vIFN0cmluZ3MgY29u
dGFpbmluZyB3aWRlIGNoYXJhY3RlcnMuCiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVD
VF9TVFJORShMImFiY1x4ODExOSIsIEwiYWJjXHg4MTE5IiksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJhYmMiKTsKKworICAvLyBUaGUgc3RyZWFtaW5nIHZhcmlhdGlvbi4KKyAgQVNTRVJU
X1NUUk5FKEwiYWJjXHg4MTE5IiwgTCJhYmNceDgxMjAiKSA8PCAiVGhpcyBzaG91bGRuJ3QgaGFw
cGVuIjsKIH0KIAogLy8gVGVzdHMgZm9yIDo6dGVzdGluZzo6SXNTdWJzdHJpbmcoKS4KQEAgLTI2
MzEsNyArMjY4OSw2IEBAIFRFU1QoSXNOb3RTdWJzdHJpbmdUZXN0LCBSZXR1cm5zQ29ycmVjdFJl
c3VsdEZvclN0ZFdzdHJpbmcpIHsKIHRlbXBsYXRlIDx0eXBlbmFtZSBSYXdUeXBlPgogY2xhc3Mg
RmxvYXRpbmdQb2ludFRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgcHJvdGVjdGVkOgotCiAgIC8vIFBy
ZS1jYWxjdWxhdGVkIG51bWJlcnMgdG8gYmUgdXNlZCBieSB0aGUgdGVzdHMuCiAgIHN0cnVjdCBU
ZXN0VmFsdWVzIHsKICAgICBSYXdUeXBlIGNsb3NlX3RvX3Bvc2l0aXZlX3plcm87CkBAIC0zMDc5
LDEzICszMTM2LDEzIEBAIFRFU1QoRElTQUJMRURfVGVzdENhc2UsIERJU0FCTEVEX1Rlc3RTaG91
bGROb3RSdW4pIHsKICAgRkFJTCgpIDw8ICJVbmV4cGVjdGVkIGZhaWx1cmU6IFRlc3QgaW4gZGlz
YWJsZWQgdGVzdCBjYXNlIHNob3VsZCBub3QgYmUgcnVuLiI7CiB9CiAKLS8vIENoZWNrIHRoYXQg
d2hlbiBhbGwgdGVzdHMgaW4gYSB0ZXN0IGNhc2UgYXJlIGRpc2FibGVkLCBTZXR1cFRlc3RDYXNl
KCkgYW5kCisvLyBDaGVjayB0aGF0IHdoZW4gYWxsIHRlc3RzIGluIGEgdGVzdCBjYXNlIGFyZSBk
aXNhYmxlZCwgU2V0VXBUZXN0Q2FzZSgpIGFuZAogLy8gVGVhckRvd25UZXN0Q2FzZSgpIGFyZSBu
b3QgY2FsbGVkLgogY2xhc3MgRGlzYWJsZWRUZXN0c1Rlc3QgOiBwdWJsaWMgVGVzdCB7CiAgcHJv
dGVjdGVkOgogICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgewogICAgIEZBSUwoKSA8PCAi
VW5leHBlY3RlZCBmYWlsdXJlOiBBbGwgdGVzdHMgZGlzYWJsZWQgaW4gdGVzdCBjYXNlLiAiCi0g
ICAgICAgICAgICAgICJTZXR1cFRlc3RDYXNlKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQuIjsKKyAg
ICAgICAgICAgICAgIlNldFVwVGVzdENhc2UoKSBzaG91bGQgbm90IGJlIGNhbGxlZC4iOwogICB9
CiAKICAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKQEAgLTMyMjQsNyArMzI4MSw3
IEBAIFRFU1RfRihTaW5nbGVFdmFsdWF0aW9uVGVzdCwgQVNTRVJUX1NUUikgewogCiAgIC8vIGZh
aWxlZCBFWFBFQ1RfU1RSQ0FTRUVRCiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9T
VFJDQVNFRVEocDFfKyssIHAyXysrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImlnbm9y
aW5nIGNhc2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIklnbm9yaW5nIGNhc2UiKTsK
ICAgRVhQRUNUX0VRKHMxXyArIDIsIHAxXyk7CiAgIEVYUEVDVF9FUShzMl8gKyAyLCBwMl8pOwog
fQpAQCAtMzMzMiw3ICszMzg5LDcgQEAgY2xhc3MgTm9GYXRhbEZhaWx1cmVUZXN0IDogcHVibGlj
IFRlc3QgewogCiAgIHZvaWQgRG9Bc3NlcnROb0ZhdGFsRmFpbHVyZU9uRmFpbHMoKSB7CiAgICAg
QVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoRmFpbHMoKSk7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAi
c2hvbGQgbm90IHJlYWNoIGhlcmUuIjsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJzaG91bGQgbm90
IHJlYWNoIGhlcmUuIjsKICAgfQogCiAgIHZvaWQgRG9FeHBlY3ROb0ZhdGFsRmFpbHVyZU9uRmFp
bHMoKSB7CkBAIC0zNDEyLDU5ICszNDY5LDE1NyBAQCBURVNUX0YoTm9GYXRhbEZhaWx1cmVUZXN0
LCBNZXNzYWdlSXNTdHJlYW1hYmxlKSB7CiAKIC8vIFRlc3RzIG5vbi1zdHJpbmcgYXNzZXJ0aW9u
cy4KIAorc3RkOjpzdHJpbmcgRWRpdHNUb1N0cmluZyhjb25zdCBzdGQ6OnZlY3RvcjxFZGl0VHlw
ZT4mIGVkaXRzKSB7CisgIHN0ZDo6c3RyaW5nIG91dDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBlZGl0cy5zaXplKCk7ICsraSkgeworICAgIHN0YXRpYyBjb25zdCBjaGFyIGtFZGl0c1tdID0g
IiArLS8iOworICAgIG91dC5hcHBlbmQoMSwga0VkaXRzW2VkaXRzW2ldXSk7CisgIH0KKyAgcmV0
dXJuIG91dDsKK30KKworc3RkOjp2ZWN0b3I8c2l6ZV90PiBDaGFyc1RvSW5kaWNlcyhjb25zdCBz
dGQ6OnN0cmluZyYgc3RyKSB7CisgIHN0ZDo6dmVjdG9yPHNpemVfdD4gb3V0OworICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHN0ci5zaXplKCk7ICsraSkgeworICAgIG91dC5wdXNoX2JhY2soc3Ry
W2ldKTsKKyAgfQorICByZXR1cm4gb3V0OworfQorCitzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4g
Q2hhcnNUb0xpbmVzKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKKyAgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+IG91dDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHIuc2l6ZSgpOyArK2kp
IHsKKyAgICBvdXQucHVzaF9iYWNrKHN0ci5zdWJzdHIoaSwgMSkpOworICB9CisgIHJldHVybiBv
dXQ7Cit9CisKK1RFU1QoRWRpdERpc3RhbmNlLCBUZXN0Q2FzZXMpIHsKKyAgc3RydWN0IENhc2Ug
eworICAgIGludCBsaW5lOworICAgIGNvbnN0IGNoYXIqIGxlZnQ7CisgICAgY29uc3QgY2hhciog
cmlnaHQ7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWRfZWRpdHM7CisgICAgY29uc3QgY2hhciog
ZXhwZWN0ZWRfZGlmZjsKKyAgfTsKKyAgc3RhdGljIGNvbnN0IENhc2Uga0Nhc2VzW10gPSB7Cisg
ICAgICAvLyBObyBjaGFuZ2UuCisgICAgICB7X19MSU5FX18sICJBIiwgIkEiLCAiICIsICIifSwK
KyAgICAgIHtfX0xJTkVfXywgIkFCQ0RFIiwgIkFCQ0RFIiwgIiAgICAgIiwgIiJ9LAorICAgICAg
Ly8gU2ltcGxlIGFkZHMuCisgICAgICB7X19MSU5FX18sICJYIiwgIlhBIiwgIiArIiwgIkBAICsx
LDIgQEBcbiBYXG4rQVxuIn0sCisgICAgICB7X19MSU5FX18sICJYIiwgIlhBQkNEIiwgIiArKysr
IiwgIkBAICsxLDUgQEBcbiBYXG4rQVxuK0JcbitDXG4rRFxuIn0sCisgICAgICAvLyBTaW1wbGUg
cmVtb3Zlcy4KKyAgICAgIHtfX0xJTkVfXywgIlhBIiwgIlgiLCAiIC0iLCAiQEAgLTEsMiBAQFxu
IFhcbi1BXG4ifSwKKyAgICAgIHtfX0xJTkVfXywgIlhBQkNEIiwgIlgiLCAiIC0tLS0iLCAiQEAg
LTEsNSBAQFxuIFhcbi1BXG4tQlxuLUNcbi1EXG4ifSwKKyAgICAgIC8vIFNpbXBsZSByZXBsYWNl
cy4KKyAgICAgIHtfX0xJTkVfXywgIkEiLCAiYSIsICIvIiwgIkBAIC0xLDEgKzEsMSBAQFxuLUFc
bithXG4ifSwKKyAgICAgIHtfX0xJTkVfXywgIkFCQ0QiLCAiYWJjZCIsICIvLy8vIiwKKyAgICAg
ICAiQEAgLTEsNCArMSw0IEBAXG4tQVxuLUJcbi1DXG4tRFxuK2FcbitiXG4rY1xuK2RcbiJ9LAor
ICAgICAgLy8gUGF0aCBmaW5kaW5nLgorICAgICAge19fTElORV9fLCAiQUJDREVGR0giLCAiQUJY
RUdIMSIsICIgIC0vIC0gICsiLAorICAgICAgICJAQCAtMSw4ICsxLDcgQEBcbiBBXG4gQlxuLUNc
bi1EXG4rWFxuIEVcbi1GXG4gR1xuIEhcbisxXG4ifSwKKyAgICAgIHtfX0xJTkVfXywgIkFBQUFC
Q0NDQyIsICJBQkFCQ0RDREMiLCAiLSAvICAgKyAvICIsCisgICAgICAgIkBAIC0xLDkgKzEsOSBA
QFxuLUFcbiBBXG4tQVxuK0JcbiBBXG4gQlxuIENcbitEXG4gQ1xuLUNcbitEXG4gQ1xuIn0sCisg
ICAgICB7X19MSU5FX18sICJBQkNERSIsICJCQ0RDRCIsICItICAgKy8iLAorICAgICAgICJAQCAt
MSw1ICsxLDUgQEBcbi1BXG4gQlxuIENcbiBEXG4tRVxuK0NcbitEXG4ifSwKKyAgICAgIHtfX0xJ
TkVfXywgIkFCQ0RFRkdISUpLTCIsICJCQ0RDREVGR0pLTEpLIiwgIi0gKysgICAgIC0tICAgKysi
LAorICAgICAgICJAQCAtMSw0ICsxLDUgQEBcbi1BXG4gQlxuK0NcbitEXG4gQ1xuIERcbiIKKyAg
ICAgICAiQEAgLTYsNyArNyw3IEBAXG4gRlxuIEdcbi1IXG4tSVxuIEpcbiBLXG4gTFxuK0pcbitL
XG4ifSwKKyAgICAgIHt9fTsKKyAgZm9yIChjb25zdCBDYXNlKiBjID0ga0Nhc2VzOyBjLT5sZWZ0
OyArK2MpIHsKKyAgICBFWFBFQ1RfVFJVRShjLT5leHBlY3RlZF9lZGl0cyA9PQorICAgICAgICAg
ICAgICAgIEVkaXRzVG9TdHJpbmcoQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKENoYXJzVG9JbmRpY2Vz
KGMtPmxlZnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENoYXJzVG9JbmRpY2VzKGMtPnJpZ2h0KSkpKQorICAgICAgICA8PCAiTGVmdCA8IiA8
PCBjLT5sZWZ0IDw8ICI+IFJpZ2h0IDwiIDw8IGMtPnJpZ2h0IDw8ICI+IEVkaXRzIDwiCisgICAg
ICAgIDw8IEVkaXRzVG9TdHJpbmcoQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKAorICAgICAgICAgICAg
ICAgQ2hhcnNUb0luZGljZXMoYy0+bGVmdCksIENoYXJzVG9JbmRpY2VzKGMtPnJpZ2h0KSkpIDw8
ICI+IjsKKyAgICBFWFBFQ1RfVFJVRShjLT5leHBlY3RlZF9kaWZmID09IENyZWF0ZVVuaWZpZWRE
aWZmKENoYXJzVG9MaW5lcyhjLT5sZWZ0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJzVG9MaW5lcyhjLT5yaWdodCkpKQorICAgICAg
ICA8PCAiTGVmdCA8IiA8PCBjLT5sZWZ0IDw8ICI+IFJpZ2h0IDwiIDw8IGMtPnJpZ2h0IDw8ICI+
IERpZmYgPCIKKyAgICAgICAgPDwgQ3JlYXRlVW5pZmllZERpZmYoQ2hhcnNUb0xpbmVzKGMtPmxl
ZnQpLCBDaGFyc1RvTGluZXMoYy0+cmlnaHQpKQorICAgICAgICA8PCAiPiI7CisgIH0KK30KKwog
Ly8gVGVzdHMgRXFGYWlsdXJlKCksIHVzZWQgZm9yIGltcGxlbWVudGluZyAqRVEqIGFzc2VydGlv
bnMuCiBURVNUKEFzc2VydGlvblRlc3QsIEVxRmFpbHVyZSkgewotICBjb25zdCBTdHJpbmcgZm9v
X3ZhbCgiNSIpLCBiYXJfdmFsKCI2Iik7Ci0gIGNvbnN0IFN0cmluZyBtc2cxKAorICBjb25zdCBz
dGQ6OnN0cmluZyBmb29fdmFsKCI1IiksIGJhcl92YWwoIjYiKTsKKyAgY29uc3Qgc3RkOjpzdHJp
bmcgbXNnMSgKICAgICAgIEVxRmFpbHVyZSgiZm9vIiwgImJhciIsIGZvb192YWwsIGJhcl92YWws
IGZhbHNlKQogICAgICAgLmZhaWx1cmVfbWVzc2FnZSgpKTsKICAgRVhQRUNUX1NUUkVRKAotICAg
ICAgIlZhbHVlIG9mOiBiYXJcbiIKLSAgICAgICIgIEFjdHVhbDogNlxuIgotICAgICAgIkV4cGVj
dGVkOiBmb29cbiIKLSAgICAgICJXaGljaCBpczogNSIsCisgICAgICAiRXhwZWN0ZWQgZXF1YWxp
dHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgIiAgZm9vXG4iCisgICAgICAiICAgIFdoaWNo
IGlzOiA1XG4iCisgICAgICAiICBiYXJcbiIKKyAgICAgICIgICAgV2hpY2ggaXM6IDYiLAogICAg
ICAgbXNnMS5jX3N0cigpKTsKIAotICBjb25zdCBTdHJpbmcgbXNnMigKKyAgY29uc3Qgc3RkOjpz
dHJpbmcgbXNnMigKICAgICAgIEVxRmFpbHVyZSgiZm9vIiwgIjYiLCBmb29fdmFsLCBiYXJfdmFs
LCBmYWxzZSkKICAgICAgIC5mYWlsdXJlX21lc3NhZ2UoKSk7CiAgIEVYUEVDVF9TVFJFUSgKLSAg
ICAgICJWYWx1ZSBvZjogNlxuIgotICAgICAgIkV4cGVjdGVkOiBmb29cbiIKLSAgICAgICJXaGlj
aCBpczogNSIsCisgICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgor
ICAgICAgIiAgZm9vXG4iCisgICAgICAiICAgIFdoaWNoIGlzOiA1XG4iCisgICAgICAiICA2IiwK
ICAgICAgIG1zZzIuY19zdHIoKSk7CiAKLSAgY29uc3QgU3RyaW5nIG1zZzMoCisgIGNvbnN0IHN0
ZDo6c3RyaW5nIG1zZzMoCiAgICAgICBFcUZhaWx1cmUoIjUiLCAiYmFyIiwgZm9vX3ZhbCwgYmFy
X3ZhbCwgZmFsc2UpCiAgICAgICAuZmFpbHVyZV9tZXNzYWdlKCkpOwogICBFWFBFQ1RfU1RSRVEo
Ci0gICAgICAiVmFsdWUgb2Y6IGJhclxuIgotICAgICAgIiAgQWN0dWFsOiA2XG4iCi0gICAgICAi
RXhwZWN0ZWQ6IDUiLAorICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpc
biIKKyAgICAgICIgIDVcbiIKKyAgICAgICIgIGJhclxuIgorICAgICAgIiAgICBXaGljaCBpczog
NiIsCiAgICAgICBtc2czLmNfc3RyKCkpOwogCi0gIGNvbnN0IFN0cmluZyBtc2c0KAorICBjb25z
dCBzdGQ6OnN0cmluZyBtc2c0KAogICAgICAgRXFGYWlsdXJlKCI1IiwgIjYiLCBmb29fdmFsLCBi
YXJfdmFsLCBmYWxzZSkuZmFpbHVyZV9tZXNzYWdlKCkpOwogICBFWFBFQ1RfU1RSRVEoCi0gICAg
ICAiVmFsdWUgb2Y6IDZcbiIKLSAgICAgICJFeHBlY3RlZDogNSIsCisgICAgICAiRXhwZWN0ZWQg
ZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgIiAgNVxuIgorICAgICAgIiAgNiIs
CiAgICAgICBtc2c0LmNfc3RyKCkpOwogCi0gIGNvbnN0IFN0cmluZyBtc2c1KAorICBjb25zdCBz
dGQ6OnN0cmluZyBtc2c1KAogICAgICAgRXFGYWlsdXJlKCJmb28iLCAiYmFyIiwKLSAgICAgICAg
ICAgICAgICBTdHJpbmcoIlwieFwiIiksIFN0cmluZygiXCJ5XCIiKSwKKyAgICAgICAgICAgICAg
ICBzdGQ6OnN0cmluZygiXCJ4XCIiKSwgc3RkOjpzdHJpbmcoIlwieVwiIiksCiAgICAgICAgICAg
ICAgICAgdHJ1ZSkuZmFpbHVyZV9tZXNzYWdlKCkpOwogICBFWFBFQ1RfU1RSRVEoCi0gICAgICAi
VmFsdWUgb2Y6IGJhclxuIgotICAgICAgIiAgQWN0dWFsOiBcInlcIlxuIgotICAgICAgIkV4cGVj
dGVkOiBmb28gKGlnbm9yaW5nIGNhc2UpXG4iCi0gICAgICAiV2hpY2ggaXM6IFwieFwiIiwKKyAg
ICAgICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4iCisgICAgICAiICBmb29c
biIKKyAgICAgICIgICAgV2hpY2ggaXM6IFwieFwiXG4iCisgICAgICAiICBiYXJcbiIKKyAgICAg
ICIgICAgV2hpY2ggaXM6IFwieVwiXG4iCisgICAgICAiSWdub3JpbmcgY2FzZSIsCiAgICAgICBt
c2c1LmNfc3RyKCkpOwogfQogCitURVNUKEFzc2VydGlvblRlc3QsIEVxRmFpbHVyZVdpdGhEaWZm
KSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGxlZnQoCisgICAgICAiMVxcbjJYWFhcXG4zXFxuNVxc
bjZcXG43XFxuOFxcbjlcXG4xMFxcbjExXFxuMTJYWFhcXG4xM1xcbjE0XFxuMTUiKTsKKyAgY29u
c3Qgc3RkOjpzdHJpbmcgcmlnaHQoCisgICAgICAiMVxcbjJcXG4zXFxuNFxcbjVcXG42XFxuN1xc
bjhcXG45XFxuMTFcXG4xMlxcbjEzXFxuMTQiKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbXNnMSgK
KyAgICAgIEVxRmFpbHVyZSgibGVmdCIsICJyaWdodCIsIGxlZnQsIHJpZ2h0LCBmYWxzZSkuZmFp
bHVyZV9tZXNzYWdlKCkpOworICBFWFBFQ1RfU1RSRVEoCisgICAgICAiRXhwZWN0ZWQgZXF1YWxp
dHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgIiAgbGVmdFxuIgorICAgICAgIiAgICBXaGlj
aCBpczogIgorICAgICAgIjFcXG4yWFhYXFxuM1xcbjVcXG42XFxuN1xcbjhcXG45XFxuMTBcXG4x
MVxcbjEyWFhYXFxuMTNcXG4xNFxcbjE1XG4iCisgICAgICAiICByaWdodFxuIgorICAgICAgIiAg
ICBXaGljaCBpczogMVxcbjJcXG4zXFxuNFxcbjVcXG42XFxuN1xcbjhcXG45XFxuMTFcXG4xMlxc
bjEzXFxuMTRcbiIKKyAgICAgICJXaXRoIGRpZmY6XG5AQCAtMSw1ICsxLDYgQEBcbiAxXG4tMlhY
WFxuKzJcbiAzXG4rNFxuIDVcbiA2XG4iCisgICAgICAiQEAgLTcsOCArOCw2IEBAXG4gOFxuIDlc
bi0xMFxuIDExXG4tMTJYWFhcbisxMlxuIDEzXG4gMTRcbi0xNVxuIiwKKyAgICAgIG1zZzEuY19z
dHIoKSk7Cit9CisKIC8vIFRlc3RzIEFwcGVuZFVzZXJNZXNzYWdlKCksIHVzZWQgZm9yIGltcGxl
bWVudGluZyB0aGUgKkVRKiBtYWNyb3MuCiBURVNUKEFzc2VydGlvblRlc3QsIEFwcGVuZFVzZXJN
ZXNzYWdlKSB7Ci0gIGNvbnN0IFN0cmluZyBmb28oImZvbyIpOworICBjb25zdCBzdGQ6OnN0cmlu
ZyBmb28oImZvbyIpOwogCiAgIE1lc3NhZ2UgbXNnOwogICBFWFBFQ1RfU1RSRVEoImZvbyIsCkBA
IC0zNDc3LDcgKzM2MzIsNyBAQCBURVNUKEFzc2VydGlvblRlc3QsIEFwcGVuZFVzZXJNZXNzYWdl
KSB7CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFNpbGVuY2VzIHdhcm5pbmdzOiAiQ29uZGl0
aW9uIGlzIGFsd2F5cyB0cnVlIiwgIlVucmVhY2hhYmxlIGNvZGUiCi0jcHJhZ21hIG9wdGlvbiBw
dXNoIC13LWNjYyAtdy1yY2gKKyMgcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gKICNl
bmRpZgogCiAvLyBUZXN0cyBBU1NFUlRfVFJVRS4KQEAgLTM0OTAsOCArMzY0NSw4IEBAIFRFU1Qo
QXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1RSVUUpIHsKIC8vIFRlc3RzIEFTU0VSVF9UUlVFKHByZWRp
Y2F0ZSkgZm9yIHByZWRpY2F0ZXMgcmV0dXJuaW5nIEFzc2VydGlvblJlc3VsdC4KIFRFU1QoQXNz
ZXJ0aW9uVGVzdCwgQXNzZXJ0VHJ1ZVdpdGhBc3NlcnRpb25SZXN1bHQpIHsKICAgQVNTRVJUX1RS
VUUoUmVzdWx0SXNFdmVuKDIpKTsKLSNpZiAhZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IF9fQk9S
TEFORENfXyA+PSAweDYwMAotICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcuCisjaWZuZGVm
IF9fQk9STEFORENfXworICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyLgogICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShBU1NFUlRfVFJVRShSZXN1bHRJc0V2ZW4oMykpLAogICAgICAgICAgICAgICAgICAg
ICAgICAiVmFsdWUgb2Y6IFJlc3VsdElzRXZlbigzKVxuIgogICAgICAgICAgICAgICAgICAgICAg
ICAiICBBY3R1YWw6IGZhbHNlICgzIGlzIG9kZClcbiIKQEAgLTM1MTYsOCArMzY3MSw4IEBAIFRF
U1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0ZBTFNFKSB7CiAvLyBUZXN0cyBBU1NFUlRfRkFMU0Uo
cHJlZGljYXRlKSBmb3IgcHJlZGljYXRlcyByZXR1cm5pbmcgQXNzZXJ0aW9uUmVzdWx0LgogVEVT
VChBc3NlcnRpb25UZXN0LCBBc3NlcnRGYWxzZVdpdGhBc3NlcnRpb25SZXN1bHQpIHsKICAgQVNT
RVJUX0ZBTFNFKFJlc3VsdElzRXZlbigzKSk7Ci0jaWYgIWRlZmluZWQoX19CT1JMQU5EQ19fKSB8
fCBfX0JPUkxBTkRDX18gPj0gMHg2MDAKLSAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlciAyMDA3Lgor
I2lmbmRlZiBfX0JPUkxBTkRDX18KKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4KICAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFJlc3VsdElzRXZlbigyKSksCiAgICAgICAgICAg
ICAgICAgICAgICAgICJWYWx1ZSBvZjogUmVzdWx0SXNFdmVuKDIpXG4iCiAgICAgICAgICAgICAg
ICAgICAgICAgICIgIEFjdHVhbDogdHJ1ZSAoMiBpcyBldmVuKVxuIgpAQCAtMzUzMSw4ICszNjg2
LDggQEAgVEVTVChBc3NlcnRpb25UZXN0LCBBc3NlcnRGYWxzZVdpdGhBc3NlcnRpb25SZXN1bHQp
IHsKIH0KIAogI2lmZGVmIF9fQk9STEFORENfXwotLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0ZXIg
cHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHJlc3NlZCB0aGVtCi0jcHJhZ21hIG9w
dGlvbiBwb3AKKy8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9w
dGlvbiBwdXNoIiBzdXBwcmVzc2VkIHRoZW0KKyMgcHJhZ21hIG9wdGlvbiBwb3AKICNlbmRpZgog
CiAvLyBUZXN0cyB1c2luZyBBU1NFUlRfRVEgb24gZG91YmxlIHZhbHVlcy4gIFRoZSBwdXJwb3Nl
IGlzIHRvIG1ha2UKQEAgLTM1NTEsOSArMzcwNiwxMCBAQCBURVNUKEV4cGVjdFRlc3QsIEFTU0VS
VF9FUV9Eb3VibGUpIHsKIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0VRKSB7CiAgIEFTU0VS
VF9FUSg1LCAyICsgMyk7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUSg1LCAyKjMp
LAotICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IDIqM1xuIgotICAgICAgICAgICAg
ICAgICAgICAgICAiICBBY3R1YWw6IDZcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVj
dGVkOiA1Iik7CisgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0
aGVzZSB2YWx1ZXM6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgIDVcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIiAgMiozXG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgV2hp
Y2ggaXM6IDYiKTsKIH0KIAogLy8gVGVzdHMgQVNTRVJUX0VRKE5VTEwsIHBvaW50ZXIpLgpAQCAt
MzU2MSw3ICszNzE3LDcgQEAgVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfRVEpIHsKIFRFU1Qo
QXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0VRX05VTEwpIHsKICAgLy8gQSBzdWNjZXNzLgogICBjb25z
dCBjaGFyKiBwID0gTlVMTDsKLSAgLy8gU29tZSBvbGRlciBHQ0MgdmVyc2lvbnMgbWF5IGlzc3Vl
IGEgc3B1cmlvdXMgd2FyaW5nIGluIHRoaXMgb3IgdGhlIG5leHQKKyAgLy8gU29tZSBvbGRlciBH
Q0MgdmVyc2lvbnMgbWF5IGlzc3VlIGEgc3B1cmlvdXMgd2FybmluZyBpbiB0aGlzIG9yIHRoZSBu
ZXh0CiAgIC8vIGFzc2VydGlvbiBzdGF0ZW1lbnQuIFRoaXMgd2FybmluZyBzaG91bGQgbm90IGJl
IHN1cHByZXNzZWQgd2l0aAogICAvLyBzdGF0aWNfY2FzdCBzaW5jZSB0aGUgdGVzdCB2ZXJpZmll
cyB0aGUgYWJpbGl0eSB0byB1c2UgYmFyZSBOVUxMIGFzIHRoZQogICAvLyBleHBlY3RlZCBwYXJh
bWV0ZXIgdG8gdGhlIG1hY3JvLgpAQCAtMzU3MCw3ICszNzI2LDcgQEAgVEVTVChBc3NlcnRpb25U
ZXN0LCBBU1NFUlRfRVFfTlVMTCkgewogICAvLyBBIGZhaWx1cmUuCiAgIHN0YXRpYyBpbnQgbiA9
IDA7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShOVUxMLCAmbiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogJm5cbiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAiICAmblxuICAgIFdoaWNoIGlzOiIpOwogfQogI2VuZGlmICAvLyBHVEVTVF9DQU5fQ09NUEFS
RV9OVUxMCiAKQEAgLTM1ODYsNyArMzc0Miw3IEBAIFRFU1QoRXhwZWN0VGVzdCwgQVNTRVJUX0VR
XzApIHsKIAogICAvLyBBIGZhaWx1cmUuCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9F
USgwLCA1LjYpLAotICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IDAiKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIiAgMFxuICA1LjYiKTsKIH0KIAogLy8gVGVzdHMgQVNTRVJUX05F
LgpAQCAtMzYzNSwxMyArMzc5MSwxNCBAQCB2b2lkIFRocm93Tm90aGluZygpIHt9CiBURVNUKEFz
c2VydGlvblRlc3QsIEFTU0VSVF9USFJPVykgewogICBBU1NFUlRfVEhST1coVGhyb3dBbkludGVn
ZXIoKSwgaW50KTsKIAotI2lmbmRlZiBfX0JPUkxBTkRDX18KKyMgaWZuZGVmIF9fQk9STEFORENf
XworCiAgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAwNyBhbmQgMjAwOS4KICAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoCiAgICAgICBBU1NFUlRfVEhST1coVGhyb3dBbkludGVnZXIoKSwgYm9vbCks
CiAgICAgICAiRXhwZWN0ZWQ6IFRocm93QW5JbnRlZ2VyKCkgdGhyb3dzIGFuIGV4Y2VwdGlvbiBv
ZiB0eXBlIGJvb2wuXG4iCiAgICAgICAiICBBY3R1YWw6IGl0IHRocm93cyBhIGRpZmZlcmVudCB0
eXBlLiIpOwotI2VuZGlmCisjIGVuZGlmCiAKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoCiAgICAg
ICBBU1NFUlRfVEhST1coVGhyb3dOb3RoaW5nKCksIGJvb2wpLApAQCAtMzY3Miw3ICszODI5LDgg
QEAgVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfQU5ZX1RIUk9XKSB7CiAvLyBjb21waWxlLgog
VEVTVChBc3NlcnRpb25UZXN0LCBBc3NlcnRQcmVjZWRlbmNlKSB7CiAgIEFTU0VSVF9FUSgxIDwg
MiwgdHJ1ZSk7Ci0gIEFTU0VSVF9FUSh0cnVlICYmIGZhbHNlLCBmYWxzZSk7CisgIGJvb2wgZmFs
c2VfdmFsdWUgPSBmYWxzZTsKKyAgQVNTRVJUX0VRKHRydWUgJiYgZmFsc2VfdmFsdWUsIGZhbHNl
KTsKIH0KIAogLy8gQSBzdWJyb3V0aW5lIHVzZWQgYnkgdGhlIGZvbGxvd2luZyB0ZXN0LgpAQCAt
MzY4Myw3ICszODQxLDcgQEAgdm9pZCBUZXN0RXExKGludCB4KSB7CiAvLyBUZXN0cyBjYWxsaW5n
IGEgdGVzdCBzdWJyb3V0aW5lIHRoYXQncyBub3QgcGFydCBvZiBhIGZpeHR1cmUuCiBURVNUKEFz
c2VydGlvblRlc3QsIE5vbkZpeHR1cmVTdWJyb3V0aW5lKSB7CiAgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKFRlc3RFcTEoMiksCi0gICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogeCIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAiICB4XG4gICAgV2hpY2ggaXM6IDIiKTsKIH0KIAogLy8g
QW4gdW5jb3B5YWJsZSBjbGFzcy4KQEAgLTM3MzIsNyArMzg5MCw4IEBAIFRFU1QoQXNzZXJ0aW9u
VGVzdCwgQXNzZXJ0V29ya3NXaXRoVW5jb3B5YWJsZU9iamVjdCkgewogICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShUZXN0QXNzZXJ0Tm9uUG9zaXRpdmUoKSwKICAgICAiSXNQb3NpdGl2ZVVuY29weWFi
bGUoeSkgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZVxueSBldmFsdWF0ZXMgdG8gLTEiKTsKICAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoVGVzdEFzc2VydEVxdWFsc1VuY29weWFibGUoKSwKLSAgICAi
VmFsdWUgb2Y6IHlcbiAgQWN0dWFsOiAtMVxuRXhwZWN0ZWQ6IHhcbldoaWNoIGlzOiA1Iik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgIHhcbiAgICBXaGljaCBpczogNVxuICB5XG4g
ICAgV2hpY2ggaXM6IC0xIik7CiB9CiAKIC8vIFRlc3RzIHRoYXQgdW5jb3B5YWJsZSBvYmplY3Rz
IGNhbiBiZSB1c2VkIGluIGV4cGVjdHMuCkBAIC0zNzQ0LDU3ICszOTAzLDkwIEBAIFRFU1QoQXNz
ZXJ0aW9uVGVzdCwgRXhwZWN0V29ya3NXaXRoVW5jb3B5YWJsZU9iamVjdCkgewogICAgICJJc1Bv
c2l0aXZlVW5jb3B5YWJsZSh5KSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlXG55IGV2YWx1YXRl
cyB0byAtMSIpOwogICBFWFBFQ1RfRVEoeCwgeCk7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEVYUEVDVF9FUSh4LCB5KSwKLSAgICAiVmFsdWUgb2Y6IHlcbiAgQWN0dWFsOiAtMVxuRXhwZWN0
ZWQ6IHhcbldoaWNoIGlzOiA1Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3Rl
ZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICIgIHhcbiAgICBXaGljaCBpczogNVxuICB5XG4gICAgV2hpY2ggaXM6IC0xIik7CiB9CiAKK2Vu
dW0gTmFtZWRFbnVtIHsKKyAga0UxID0gMCwKKyAga0UyID0gMQorfTsKKworVEVTVChBc3NlcnRp
b25UZXN0LCBOYW1lZEVudW0pIHsKKyAgRVhQRUNUX0VRKGtFMSwga0UxKTsKKyAgRVhQRUNUX0xU
KGtFMSwga0UyKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKGtFMSwga0Uy
KSwgIldoaWNoIGlzOiAwIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShr
RTEsIGtFMiksICJXaGljaCBpczogMSIpOworfQogCiAvLyBUaGUgdmVyc2lvbiBvZiBnY2MgdXNl
ZCBpbiBYQ29kZSAyLjIgaGFzIGEgYnVnIGFuZCBkb2Vzbid0IGFsbG93CiAvLyBhbm9ueW1vdXMg
ZW51bXMgaW4gYXNzZXJ0aW9ucy4gIFRoZXJlZm9yZSB0aGUgZm9sbG93aW5nIHRlc3QgaXMgbm90
CiAvLyBkb25lIG9uIE1hYy4KLS8vIFN1biBTdHVkaW8gYWxzbyByZWplY3RzIHRoaXMgY29kZS4K
LSNpZiAhR1RFU1RfT1NfTUFDICYmICFkZWZpbmVkKF9fU1VOUFJPX0NDKQorLy8gU3VuIFN0dWRp
byBhbmQgSFAgYUNDIGFsc28gcmVqZWN0IHRoaXMgY29kZS4KKyNpZiAhR1RFU1RfT1NfTUFDICYm
ICFkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiAhZGVmaW5lZChfX0hQX2FDQykKIAogLy8gVGVzdHMg
dXNpbmcgYXNzZXJ0aW9ucyB3aXRoIGFub255bW91cyBlbnVtcy4KIGVudW0gewotICBDQVNFX0Eg
PSAtMSwKLSNpZiBHVEVTVF9PU19MSU5VWAorICBrQ2FzZUEgPSAtMSwKKworIyBpZiBHVEVTVF9P
U19MSU5VWAorCiAgIC8vIFdlIHdhbnQgdG8gdGVzdCB0aGUgY2FzZSB3aGVyZSB0aGUgc2l6ZSBv
ZiB0aGUgYW5vbnltb3VzIGVudW0gaXMKICAgLy8gbGFyZ2VyIHRoYW4gc2l6ZW9mKGludCksIHRv
IG1ha2Ugc3VyZSBvdXIgaW1wbGVtZW50YXRpb24gb2YgdGhlCiAgIC8vIGFzc2VydGlvbnMgZG9l
c24ndCB0cnVuY2F0ZSB0aGUgZW51bXMuICBIb3dldmVyLCBNU1ZDCiAgIC8vIChpbmNvcnJlY3Rs
eSkgZG9lc24ndCBhbGxvdyBhbiBlbnVtIHZhbHVlIHRvIGV4Y2VlZCB0aGUgcmFuZ2Ugb2YKICAg
Ly8gYW4gaW50LCBzbyB0aGlzIGhhcyB0byBiZSBjb25kaXRpb25hbGx5IGNvbXBpbGVkLgogICAv
LwotICAvLyBPbiBMaW51eCwgQ0FTRV9CIGFuZCBDQVNFX0EgaGF2ZSB0aGUgc2FtZSB2YWx1ZSB3
aGVuIHRydW5jYXRlZCB0bworICAvLyBPbiBMaW51eCwga0Nhc2VCIGFuZCBrQ2FzZUEgaGF2ZSB0
aGUgc2FtZSB2YWx1ZSB3aGVuIHRydW5jYXRlZCB0bwogICAvLyBpbnQgc2l6ZS4gIFdlIHdhbnQg
dG8gdGVzdCB3aGV0aGVyIHRoaXMgd2lsbCBjb25mdXNlIHRoZQogICAvLyBhc3NlcnRpb25zLgot
ICBDQVNFX0IgPSB0ZXN0aW5nOjppbnRlcm5hbDo6a01heEJpZ2dlc3RJbnQsCi0jZWxzZQotICBD
QVNFX0IgPSBJTlRfTUFYLAotI2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorICBrQ2FzZUIgPSB0
ZXN0aW5nOjppbnRlcm5hbDo6a01heEJpZ2dlc3RJbnQsCisKKyMgZWxzZQorCisgIGtDYXNlQiA9
IElOVF9NQVgsCisKKyMgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCisKKyAga0Nhc2VDID0gNDIK
IH07CiAKIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQW5vbnltb3VzRW51bSkgewotI2lmIEdURVNUX09T
X0xJTlVYCi0gIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxpbnQ+KENBU0VfQSksIHN0YXRpY19jYXN0
PGludD4oQ0FTRV9CKSk7Ci0jZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCi0KLSAgRVhQRUNUX0VR
KENBU0VfQSwgQ0FTRV9BKTsKLSAgRVhQRUNUX05FKENBU0VfQSwgQ0FTRV9CKTsKLSAgRVhQRUNU
X0xUKENBU0VfQSwgQ0FTRV9CKTsKLSAgRVhQRUNUX0xFKENBU0VfQSwgQ0FTRV9CKTsKLSAgRVhQ
RUNUX0dUKENBU0VfQiwgQ0FTRV9BKTsKLSAgRVhQRUNUX0dFKENBU0VfQSwgQ0FTRV9BKTsKLSAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dFKENBU0VfQSwgQ0FTRV9CKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIihDQVNFX0EpID49IChDQVNFX0IpIik7Ci0KLSAgQVNTRVJU
X0VRKENBU0VfQSwgQ0FTRV9BKTsKLSAgQVNTRVJUX05FKENBU0VfQSwgQ0FTRV9CKTsKLSAgQVNT
RVJUX0xUKENBU0VfQSwgQ0FTRV9CKTsKLSAgQVNTRVJUX0xFKENBU0VfQSwgQ0FTRV9CKTsKLSAg
QVNTRVJUX0dUKENBU0VfQiwgQ0FTRV9BKTsKLSAgQVNTRVJUX0dFKENBU0VfQSwgQ0FTRV9BKTsK
LSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKENBU0VfQSwgQ0FTRV9CKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBDQVNFX0IiKTsKKyMgaWYgR1RFU1RfT1NfTElO
VVgKKworICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50PihrQ2FzZUEpLCBzdGF0aWNfY2FzdDxp
bnQ+KGtDYXNlQikpOworCisjIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCisgIEVYUEVDVF9F
UShrQ2FzZUEsIGtDYXNlQSk7CisgIEVYUEVDVF9ORShrQ2FzZUEsIGtDYXNlQik7CisgIEVYUEVD
VF9MVChrQ2FzZUEsIGtDYXNlQik7CisgIEVYUEVDVF9MRShrQ2FzZUEsIGtDYXNlQik7CisgIEVY
UEVDVF9HVChrQ2FzZUIsIGtDYXNlQSk7CisgIEVYUEVDVF9HRShrQ2FzZUEsIGtDYXNlQSk7Cisg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HRShrQ2FzZUEsIGtDYXNlQiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICIoa0Nhc2VBKSA+PSAoa0Nhc2VCKSIpOworICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR0Uoa0Nhc2VBLCBrQ2FzZUMpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiLTEgdnMgNDIiKTsKKworICBBU1NFUlRfRVEoa0Nhc2VBLCBrQ2FzZUEp
OworICBBU1NFUlRfTkUoa0Nhc2VBLCBrQ2FzZUIpOworICBBU1NFUlRfTFQoa0Nhc2VBLCBrQ2Fz
ZUIpOworICBBU1NFUlRfTEUoa0Nhc2VBLCBrQ2FzZUIpOworICBBU1NFUlRfR1Qoa0Nhc2VCLCBr
Q2FzZUEpOworICBBU1NFUlRfR0Uoa0Nhc2VBLCBrQ2FzZUEpOworCisjIGlmbmRlZiBfX0JPUkxB
TkRDX18KKworICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyLgorICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RShBU1NFUlRfRVEoa0Nhc2VBLCBrQ2FzZUIpLAorICAgICAgICAgICAgICAgICAgICAgICAiICBr
Q2FzZUJcbiAgICBXaGljaCBpczogIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9F
UShrQ2FzZUEsIGtDYXNlQyksCisgICAgICAgICAgICAgICAgICAgICAgICJcbiAgICBXaGljaCBp
czogNDIiKTsKKyMgZW5kaWYKKworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoa0Nh
c2VBLCBrQ2FzZUMpLAorICAgICAgICAgICAgICAgICAgICAgICAiXG4gICAgV2hpY2ggaXM6IC0x
Iik7CiB9CiAKICNlbmRpZiAgLy8gIUdURVNUX09TX01BQyAmJiAhZGVmaW5lZChfX1NVTlBST19D
QykKQEAgLTM4NDAsMjQgKzQwMzIsMjYgQEAgVEVTVChIUkVTVUxUQXNzZXJ0aW9uVGVzdCwgRVhQ
RUNUX0hSRVNVTFRfRkFJTEVEKSB7CiAKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNU
X0hSRVNVTFRfRkFJTEVEKE9rSFJFU1VMVFN1Y2Nlc3MoKSksCiAgICAgIkV4cGVjdGVkOiAoT2tI
UkVTVUxUU3VjY2VzcygpKSBmYWlscy5cbiIKLSAgICAiICBBY3R1YWw6IDB4MDAwMDAwMDAiKTsK
KyAgICAiICBBY3R1YWw6IDB4MCIpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1Rf
SFJFU1VMVF9GQUlMRUQoRmFsc2VIUkVTVUxUU3VjY2VzcygpKSwKICAgICAiRXhwZWN0ZWQ6IChG
YWxzZUhSRVNVTFRTdWNjZXNzKCkpIGZhaWxzLlxuIgotICAgICIgIEFjdHVhbDogMHgwMDAwMDAw
MSIpOworICAgICIgIEFjdHVhbDogMHgxIik7CiB9CiAKIFRFU1QoSFJFU1VMVEFzc2VydGlvblRl
c3QsIEFTU0VSVF9IUkVTVUxUX0ZBSUxFRCkgewogICBBU1NFUlRfSFJFU1VMVF9GQUlMRUQoRV9V
TkVYUEVDVEVEKTsKIAotI2lmbmRlZiBfX0JPUkxBTkRDX18KKyMgaWZuZGVmIF9fQk9STEFORENf
XworCiAgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAwNyBhbmQgMjAwOS4KICAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoQVNTRVJUX0hSRVNVTFRfRkFJTEVEKE9rSFJFU1VMVFN1Y2Nlc3MoKSksCiAg
ICAgIkV4cGVjdGVkOiAoT2tIUkVTVUxUU3VjY2VzcygpKSBmYWlscy5cbiIKLSAgICAiICBBY3R1
YWw6IDB4MDAwMDAwMDAiKTsKLSNlbmRpZgorICAgICIgIEFjdHVhbDogMHgwIik7CisjIGVuZGlm
CisKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0hSRVNVTFRfRkFJTEVEKEZhbHNlSFJF
U1VMVFN1Y2Nlc3MoKSksCiAgICAgIkV4cGVjdGVkOiAoRmFsc2VIUkVTVUxUU3VjY2VzcygpKSBm
YWlscy5cbiIKLSAgICAiICBBY3R1YWw6IDB4MDAwMDAwMDEiKTsKKyAgICAiICBBY3R1YWw6IDB4
MSIpOwogfQogCiAvLyBUZXN0cyB0aGF0IHN0cmVhbWluZyB0byB0aGUgSFJFU1VMVCBtYWNyb3Mg
d29ya3MuCkBAIC0zODcxLDEyICs0MDY1LDEzIEBAIFRFU1QoSFJFU1VMVEFzc2VydGlvblRlc3Qs
IFN0cmVhbWluZykgewogICAgICAgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKEVfVU5FWFBFQ1RF
RCkgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAogICAgICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKIAot
I2lmbmRlZiBfX0JPUkxBTkRDX18KKyMgaWZuZGVmIF9fQk9STEFORENfXworCiAgIC8vIElDRSdz
IGluIEMrK0J1aWxkZXIgMjAwNyBhbmQgMjAwOS4KICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoCiAg
ICAgICBBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoRV9VTkVYUEVDVEVEKSA8PCAiZXhwZWN0ZWQg
ZmFpbHVyZSIsCiAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIpOwotI2VuZGlmCisjIGVuZGlmCiAK
ICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCiAgICAgICBFWFBFQ1RfSFJFU1VMVF9GQUlMRUQo
U19PSykgPDwgImV4cGVjdGVkIGZhaWx1cmUiLApAQCAtMzg5MSw3ICs0MDg2LDcgQEAgVEVTVChI
UkVTVUxUQXNzZXJ0aW9uVGVzdCwgU3RyZWFtaW5nKSB7CiAKICNpZmRlZiBfX0JPUkxBTkRDX18K
IC8vIFNpbGVuY2VzIHdhcm5pbmdzOiAiQ29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlIiwgIlVucmVh
Y2hhYmxlIGNvZGUiCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gKKyMgcHJhZ21h
IG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gKICNlbmRpZgogCiAvLyBUZXN0cyB0aGF0IHRoZSBh
c3NlcnRpb24gbWFjcm9zIGJlaGF2ZSBsaWtlIHNpbmdsZSBzdGF0ZW1lbnRzLgpAQCAtNDAwOCw3
ICs0MjAzLDcgQEAgVEVTVChBc3NlcnRpb25TeW50YXhUZXN0LCBXb3Jrc1dpdGhTd2l0Y2gpIHsK
ICNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwogCiB2b2lkIFRocm93QVN0cmluZygpIHsKLSAgICB0
aHJvdyAiU3RyaW5nIjsKKyAgICB0aHJvdyAic3RkOjpzdHJpbmciOwogfQogCiAvLyBUZXN0IHRo
YXQgdGhlIGV4Y2VwdGlvbiBhc3NlcnRpb24gbWFjcm9zIGNvbXBpbGUgYW5kIHdvcmsgd2l0aCBj
b25zdApAQCAtNDA2MCw4ICs0MjU1LDEwOSBAQCBURVNUKFN1Y2Nlc3NmdWxBc3NlcnRpb25UZXN0
LCBBU1NFUlRfU1RSKSB7CiAKIG5hbWVzcGFjZSB7CiAKKy8vIFRlc3RzIHRoZSBtZXNzYWdlIHN0
cmVhbWluZyB2YXJpYXRpb24gb2YgYXNzZXJ0aW9ucy4KKworVEVTVChBc3NlcnRpb25XaXRoTWVz
c2FnZVRlc3QsIEVYUEVDVCkgeworICBFWFBFQ1RfRVEoMSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1
Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX05FKDEsIDEpIDw8ICJF
eHBlY3RlZCBmYWlsdXJlICMxLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3Rl
ZCBmYWlsdXJlICMxIik7CisgIEVYUEVDVF9MRSgxLCAyKSA8PCAiVGhpcyBzaG91bGQgc3VjY2Vl
ZC4iOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfTFQoMSwgMCkgPDwgIkV4cGVj
dGVkIGZhaWx1cmUgIzIuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZh
aWx1cmUgIzIuIik7CisgIEVYUEVDVF9HRSgxLCAwKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4i
OworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR1QoMSwgMikgPDwgIkV4cGVjdGVk
IGZhaWx1cmUgIzMuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1
cmUgIzMuIik7CisKKyAgRVhQRUNUX1NUUkVRKCIxIiwgIjEiKSA8PCAiVGhpcyBzaG91bGQgc3Vj
Y2VlZC4iOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSTkUoIjEiLCAiMSIp
IDw8ICJFeHBlY3RlZCBmYWlsdXJlICM0LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJF
eHBlY3RlZCBmYWlsdXJlICM0LiIpOworICBFWFBFQ1RfU1RSQ0FTRUVRKCJhIiwgIkEiKSA8PCAi
VGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1Rf
U1RSQ0FTRU5FKCJhIiwgIkEiKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNS4iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZSAjNS4iKTsKKworICBFWFBFQ1RfRkxP
QVRfRVEoMSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRVhQRUNUX0RPVUJMRV9FUSgxLCAxLjIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM2
LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJlICM2LiIpOwor
ICBFWFBFQ1RfTkVBUigxLCAxLjEsIDAuMikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKK30K
KworVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVCkgeworICBBU1NFUlRfRVEo
MSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJUX05FKDEsIDIpIDw8ICJU
aGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9MRSgxLCAyKSA8PCAiVGhpcyBzaG91bGQg
c3VjY2VlZC4iOworICBBU1NFUlRfTFQoMSwgMikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsK
KyAgQVNTRVJUX0dFKDEsIDApIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9G
QVRBTF9GQUlMVVJFKEFTU0VSVF9HVCgxLCAyKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZS4iKTsKK30KKworVEVTVChBc3Nl
cnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVF9TVFIpIHsKKyAgQVNTRVJUX1NUUkVRKCIxIiwg
IjEiKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfU1RSTkUoIjEiLCAiMiIp
IDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9TVFJDQVNFRVEoImEiLCAiQSIp
IDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VS
VF9TVFJDQVNFTkUoImEiLCAiQSIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJlLiIpOworfQorCitURVNUKEFzc2VydGlvbldp
dGhNZXNzYWdlVGVzdCwgQVNTRVJUX0ZMT0FUSU5HKSB7CisgIEFTU0VSVF9GTE9BVF9FUSgxLCAx
KSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfRE9VQkxFX0VRKDEsIDEpIDw8
ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9O
RUFSKDEsMS4yLCAwLjEpIDw8ICJFeHBlY3QgZmFpbHVyZS4iLCAgLy8gTk9MSU5UCisgICAgICAg
ICAgICAgICAgICAgICAgICJFeHBlY3QgZmFpbHVyZS4iKTsKKyAgLy8gVG8gd29yayBhcm91bmQg
YSBidWcgaW4gZ2NjIDIuOTUuMCwgdGhlcmUgaXMgaW50ZW50aW9uYWxseSBubworICAvLyBzcGFj
ZSBhZnRlciB0aGUgZmlyc3QgY29tbWEgaW4gdGhlIHByZXZpb3VzIHN0YXRlbWVudC4KK30KKwor
Ly8gVGVzdHMgdXNpbmcgQVNTRVJUX0ZBTFNFIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgorVEVT
VChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVF9GQUxTRSkgeworICBBU1NFUlRfRkFM
U0UoZmFsc2UpIDw8ICJUaGlzIHNob3VsZG4ndCBmYWlsLiI7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9GQUxTRSh0cnVlKSA8PCAiRXhwZWN0ZWQgZmFp
bHVyZTogIiA8PCAyIDw8ICIgPiAiIDw8IDEKKyAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBl
dmFsdWF0ZXMgdG8gIiA8PCB0cnVlOworICB9LCAiRXhwZWN0ZWQgZmFpbHVyZSIpOworfQorCisv
LyBUZXN0cyB1c2luZyBGQUlMIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgorVEVTVChBc3NlcnRp
b25XaXRoTWVzc2FnZVRlc3QsIEZBSUwpIHsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoRkFJTCgp
IDw8IDAsCisgICAgICAgICAgICAgICAgICAgICAgICIwIik7Cit9CisKKy8vIFRlc3RzIHVzaW5n
IFNVQ0NFRUQgd2l0aCBhIHN0cmVhbWVkIG1lc3NhZ2UuCitURVNUKEFzc2VydGlvbldpdGhNZXNz
YWdlVGVzdCwgU1VDQ0VFRCkgeworICBTVUNDRUVEKCkgPDwgIlN1Y2Nlc3MgPT0gIiA8PCAxOwor
fQorCisvLyBUZXN0cyB1c2luZyBBU1NFUlRfVFJVRSB3aXRoIGEgc3RyZWFtZWQgbWVzc2FnZS4K
K1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBBU1NFUlRfVFJVRSkgeworICBBU1NFUlRf
VFJVRSh0cnVlKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfVFJVRSh0cnVl
KSA8PCB0cnVlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NF
UlRfVFJVRShmYWxzZSkgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihOVUxMKQorICAgICAg
ICAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxjaGFyICo+KE5VTEwpOworICB9LCAiKG51
bGwpKG51bGwpIik7Cit9CisKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisvLyBUZXN0cyB1c2luZyB3
aWRlIHN0cmluZ3MgaW4gYXNzZXJ0aW9uIG1lc3NhZ2VzLgorVEVTVChBc3NlcnRpb25XaXRoTWVz
c2FnZVRlc3QsIFdpZGVTdHJpbmdNZXNzYWdlKSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9UUlVFKGZhbHNlKSA8PCBMIlRoaXMgZmFpbHVyZSBp
cyBleHBlY3RlZC5ceDgxMTkiOworICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOwor
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfRVEoMSwgMikg
PDwgIlRoaXMgZmFpbHVyZSBpcyAiCisgICAgICAgICAgICAgICAgICAgIDw8IEwiZXhwZWN0ZWQg
dG9vLlx4ODEyMCI7CisgIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQgdG9vLiIpOworfQor
I2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKIC8vIFRlc3RzIEVYUEVDVF9UUlVFLgogVEVT
VChFeHBlY3RUZXN0LCBFWFBFQ1RfVFJVRSkgeworICBFWFBFQ1RfVFJVRSh0cnVlKSA8PCAiSW50
ZW50aW9uYWwgc3VjY2VzcyI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9UUlVF
KGZhbHNlKSA8PCAiSW50ZW50aW9uYWwgZmFpbHVyZSAjMS4iLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAiSW50ZW50aW9uYWwgZmFpbHVyZSAjMS4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoRVhQRUNUX1RSVUUoZmFsc2UpIDw8ICJJbnRlbnRpb25hbCBmYWlsdXJlICMyLiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlbnRpb25hbCBmYWlsdXJlICMyLiIpOwogICBF
WFBFQ1RfVFJVRSgyID4gMSk7ICAvLyBOT0xJTlQKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX1RSVUUoMiA8IDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6
IDIgPCAxXG4iCkBAIC00MDg1LDkgKzQzODEsMTQgQEAgVEVTVChFeHBlY3RUZXN0LCBFeHBlY3RU
cnVlV2l0aEFzc2VydGlvblJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhw
ZWN0ZWQ6IHRydWUiKTsKIH0KIAotLy8gVGVzdHMgRVhQRUNUX0ZBTFNFLgorLy8gVGVzdHMgRVhQ
RUNUX0ZBTFNFIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgogVEVTVChFeHBlY3RUZXN0LCBFWFBF
Q1RfRkFMU0UpIHsKICAgRVhQRUNUX0ZBTFNFKDIgPCAxKTsgIC8vIE5PTElOVAorICBFWFBFQ1Rf
RkFMU0UoZmFsc2UpIDw8ICJJbnRlbnRpb25hbCBzdWNjZXNzIjsKKyAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRVhQRUNUX0ZBTFNFKHRydWUpIDw8ICJJbnRlbnRpb25hbCBmYWlsdXJlICMxLiIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlbnRpb25hbCBmYWlsdXJlICMxLiIpOwor
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRkFMU0UodHJ1ZSkgPDwgIkludGVudGlv
bmFsIGZhaWx1cmUgIzIuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkludGVudGlvbmFs
IGZhaWx1cmUgIzIuIik7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GQUxTRSgy
ID4gMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogMiA+IDFcbiIKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiB0cnVlXG4iCkBAIC00MTExLDE3ICs0
NDEyLDE4IEBAIFRFU1QoRXhwZWN0VGVzdCwgRXhwZWN0RmFsc2VXaXRoQXNzZXJ0aW9uUmVzdWx0
KSB7CiB9CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KLS8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVy
IHByZXZpb3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXByZXNzZWQgdGhlbQotI3ByYWdtYSBv
cHRpb24gcG9wCisvLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2aW91cyAiI3ByYWdtYSBv
cHRpb24gcHVzaCIgc3VwcHJlc3NlZCB0aGVtCisjIHByYWdtYSBvcHRpb24gcG9wCiAjZW5kaWYK
IAogLy8gVGVzdHMgRVhQRUNUX0VRLgogVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVEpIHsKICAg
RVhQRUNUX0VRKDUsIDIgKyAzKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VR
KDUsIDIqMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogMiozXG4iCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogNlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAiRXhwZWN0ZWQ6IDUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4
cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgNVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiICAyKjNcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICBXaGljaCBpczogNiIpOwogICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfRVEoNSwgMiAtIDMpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAiMiAtIDMiKTsKIH0KQEAgLTQxNDMsNyArNDQ0NSw3IEBAIFRFU1QoRXhwZWN0VGVzdCwgRVhQ
RUNUX0VRX0RvdWJsZSkgewogVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVFfTlVMTCkgewogICAv
LyBBIHN1Y2Nlc3MuCiAgIGNvbnN0IGNoYXIqIHAgPSBOVUxMOwotICAvLyBTb21lIG9sZGVyIEdD
QyB2ZXJzaW9ucyBtYXkgaXNzdWUgYSBzcHVyaW91cyB3YXJpbmcgaW4gdGhpcyBvciB0aGUgbmV4
dAorICAvLyBTb21lIG9sZGVyIEdDQyB2ZXJzaW9ucyBtYXkgaXNzdWUgYSBzcHVyaW91cyB3YXJu
aW5nIGluIHRoaXMgb3IgdGhlIG5leHQKICAgLy8gYXNzZXJ0aW9uIHN0YXRlbWVudC4gVGhpcyB3
YXJuaW5nIHNob3VsZCBub3QgYmUgc3VwcHJlc3NlZCB3aXRoCiAgIC8vIHN0YXRpY19jYXN0IHNp
bmNlIHRoZSB0ZXN0IHZlcmlmaWVzIHRoZSBhYmlsaXR5IHRvIHVzZSBiYXJlIE5VTEwgYXMgdGhl
CiAgIC8vIGV4cGVjdGVkIHBhcmFtZXRlciB0byB0aGUgbWFjcm8uCkBAIC00MTUyLDcgKzQ0NTQs
NyBAQCBURVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9FUV9OVUxMKSB7CiAgIC8vIEEgZmFpbHVyZS4K
ICAgaW50IG4gPSAwOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoTlVMTCwg
Jm4pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6ICZuXG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgJm5cbiAgICBXaGljaCBpczoiKTsKIH0KICNlbmRpZiAg
Ly8gR1RFU1RfQ0FOX0NPTVBBUkVfTlVMTAogCkBAIC00MTY4LDcgKzQ0NzAsNyBAQCBURVNUKEV4
cGVjdFRlc3QsIEVYUEVDVF9FUV8wKSB7CiAKICAgLy8gQSBmYWlsdXJlLgogICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoMCwgNS42KSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkV4cGVjdGVkOiAwIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgIDBcbiAgNS42
Iik7CiB9CiAKIC8vIFRlc3RzIEVYUEVDVF9ORS4KQEAgLTQyNjgsNyArNDU3MCw3IEBAIFRFU1Qo
RXhwZWN0VGVzdCwgRVhQRUNUX0FOWV9USFJPVykgewogVEVTVChFeHBlY3RUZXN0LCBFeHBlY3RQ
cmVjZWRlbmNlKSB7CiAgIEVYUEVDVF9FUSgxIDwgMiwgdHJ1ZSk7CiAgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9FUSh0cnVlLCB0cnVlICYmIGZhbHNlKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlZhbHVlIG9mOiB0cnVlICYmIGZhbHNlIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgIHRydWUgJiYgZmFsc2VcbiAgICBXaGljaCBpczogZmFsc2UiKTsKIH0KIAog
CkBAIC00MzYxLDcgKzQ2NjMsNyBAQCBURVNUKFN0cmVhbWFibGVUZXN0LCBCYXNpY0lvTWFuaXAp
IHsKIAogdm9pZCBBZGRGYWlsdXJlSGVscGVyKGJvb2wqIGFib3J0ZWQpIHsKICAgKmFib3J0ZWQg
PSB0cnVlOwotICBBRERfRkFJTFVSRSgpIDw8ICJGYWlsdXJlIjsKKyAgQUREX0ZBSUxVUkUoKSA8
PCAiSW50ZW50aW9uYWwgZmFpbHVyZS4iOwogICAqYWJvcnRlZCA9IGZhbHNlOwogfQogCkBAIC00
MzY5LDEwICs0NjcxLDI1IEBAIHZvaWQgQWRkRmFpbHVyZUhlbHBlcihib29sKiBhYm9ydGVkKSB7
CiBURVNUKE1hY3JvVGVzdCwgQUREX0ZBSUxVUkUpIHsKICAgYm9vbCBhYm9ydGVkID0gdHJ1ZTsK
ICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVyZUhlbHBlcigmYWJvcnRlZCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsdXJlIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJJbnRlbnRpb25hbCBmYWlsdXJlLiIpOwogICBFWFBFQ1RfRkFMU0UoYWJvcnRlZCk7
CiB9CiAKKy8vIFRlc3RzIEFERF9GQUlMVVJFX0FULgorVEVTVChNYWNyb1Rlc3QsIEFERF9GQUlM
VVJFX0FUKSB7CisgIC8vIFZlcmlmaWVzIHRoYXQgQUREX0ZBSUxVUkVfQVQgZG9lcyBnZW5lcmF0
ZSBhIG5vbmZhdGFsIGZhaWx1cmUgYW5kCisgIC8vIHRoZSBmYWlsdXJlIG1lc3NhZ2UgY29udGFp
bnMgdGhlIHVzZXItc3RyZWFtZWQgcGFydC4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQURE
X0ZBSUxVUkVfQVQoImZvby5jYyIsIDQyKSA8PCAiV3JvbmchIiwgIldyb25nISIpOworCisgIC8v
IFZlcmlmaWVzIHRoYXQgdGhlIHVzZXItc3RyZWFtZWQgcGFydCBpcyBvcHRpb25hbC4KKyAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoQUREX0ZBSUxVUkVfQVQoImZvby5jYyIsIDQyKSwgIkZhaWxl
ZCIpOworCisgIC8vIFVuZm9ydHVuYXRlbHksIHdlIGNhbm5vdCB2ZXJpZnkgdGhhdCB0aGUgZmFp
bHVyZSBtZXNzYWdlIGNvbnRhaW5zCisgIC8vIHRoZSByaWdodCBmaWxlIHBhdGggYW5kIGxpbmUg
bnVtYmVyIHRoZSBzYW1lIHdheSwgYXMKKyAgLy8gRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBk
b2Vzbid0IGdldCB0byBzZWUgdGhlIGZpbGUgcGF0aCBhbmQKKyAgLy8gbGluZSBudW1iZXIuICBJ
bnN0ZWFkLCB3ZSBkbyB0aGF0IGluIGdvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjLgorfQorCiAv
LyBUZXN0cyBGQUlMLgogVEVTVChNYWNyb1Rlc3QsIEZBSUwpIHsKICAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoRkFJTCgpLApAQCAtNDM4Nyw3ICs0NzA0LDYgQEAgVEVTVChNYWNyb1Rlc3QsIFNVQ0NF
RUQpIHsKICAgU1VDQ0VFRCgpIDw8ICJFeHBsaWNpdCBzdWNjZXNzLiI7CiB9CiAKLQogLy8gVGVz
dHMgZm9yIEVYUEVDVF9FUSgpIGFuZCBBU1NFUlRfRVEoKS4KIC8vCiAvLyBUaGVzZSB0ZXN0cyBm
YWlsICppbnRlbnRpb25hbGx5Kiwgcy50LiB0aGUgZmFpbHVyZSBtZXNzYWdlcyBjYW4gYmUKQEAg
LTQzOTgsMTUgKzQ3MTQsMTcgQEAgVEVTVChNYWNyb1Rlc3QsIFNVQ0NFRUQpIHsKIC8vIFRlc3Rz
IHVzaW5nIGJvb2wgdmFsdWVzIGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4KIFRFU1QoRXFBc3NlcnRp
b25UZXN0LCBCb29sKSB7CiAgIEVYUEVDVF9FUSh0cnVlLCAgdHJ1ZSk7Ci0gIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFTU0VSVF9FUShmYWxzZSwgdHJ1ZSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICJWYWx1ZSBvZjogdHJ1ZSIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CisgICAgICBib29s
IGZhbHNlX3ZhbHVlID0gZmFsc2U7CisgICAgICBBU1NFUlRfRVEoZmFsc2VfdmFsdWUsIHRydWUp
OworICAgIH0sICIgIGZhbHNlX3ZhbHVlXG4gICAgV2hpY2ggaXM6IGZhbHNlXG4gIHRydWUiKTsK
IH0KIAogLy8gVGVzdHMgdXNpbmcgaW50IHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCiBU
RVNUKEVxQXNzZXJ0aW9uVGVzdCwgSW50KSB7CiAgIEFTU0VSVF9FUSgzMiwgMzIpOwogICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoMzIsIDMzKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIjMzIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgIDMyXG4gIDMzIik7
CiB9CiAKIC8vIFRlc3RzIHVzaW5nIHRpbWVfdCB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VR
LgpAQCAtNDQyMyw5ICs0NzQxLDkgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIENoYXIpIHsKICAg
QVNTRVJUX0VRKCd6JywgJ3onKTsKICAgY29uc3QgY2hhciBjaCA9ICdiJzsKICAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKCdcMCcsIGNoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgImNoIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgIGNoXG4gICAgV2hpY2gg
aXM6ICdiJyIpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoJ2EnLCBjaCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICJjaCIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICBjaFxuICAgIFdoaWNoIGlzOiAnYiciKTsKIH0KIAogLy8gVGVzdHMgdXNpbmcgd2No
YXJfdCB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgpAQCAtNDQzMywxOCArNDc1MSwxOSBA
QCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgV2lkZUNoYXIpIHsKICAgRVhQRUNUX0VRKEwnYicsIEwn
YicpOwogCiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShMJ1wwJywgTCd4Jyks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogTCd4J1xuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IEwneCcgKDEyMCwgMHg3OClcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiBMJ1wwJ1xuIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAiV2hpY2ggaXM6IEwnXDAnICgwLCAweDApIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgIEwnXDAnXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICIg
ICAgV2hpY2ggaXM6IEwnXDAnICgwLCAweDApXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICIgIEwneCdcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBXaGljaCBpczogTCd4
JyAoMTIwLCAweDc4KSIpOwogCiAgIHN0YXRpYyB3Y2hhcl90IHdjaGFyOwogICB3Y2hhciA9IEwn
Yic7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShMJ2EnLCB3Y2hhciksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ3Y2hhciIpOwotICB3Y2hhciA9IEwnXHg4MTE5JzsK
LSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKEwnXHg4MTIwJywgd2NoYXIpLAotICAg
ICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IHdjaGFyIik7CisgIHdjaGFyID0gMHg4MTE5
OworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8d2NoYXJfdD4o
MHg4MTIwKSwgd2NoYXIpLAorICAgICAgICAgICAgICAgICAgICAgICAiICB3Y2hhclxuICAgIFdo
aWNoIGlzOiBMJyIpOwogfQogCiAvLyBUZXN0cyB1c2luZyA6OnN0ZDo6c3RyaW5nIHZhbHVlcyBp
biB7RVhQRUNUfEFTU0VSVH1fRVEuCkBAIC00NDYxLDcgKzQ3ODAsNyBAQCBURVNUKEVxQXNzZXJ0
aW9uVGVzdCwgU3RkU3RyaW5nKSB7CiAgIC8vIENvbXBhcmVzIGEgY29uc3QgY2hhciogdG8gYW4g
c3RkOjpzdHJpbmcgdGhhdCBoYXMgZGlmZmVyZW50CiAgIC8vIGNvbnRlbnQKICAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKCJUZXN0IiwgOjpzdGQ6OnN0cmluZygidGVzdCIpKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIjo6c3RkOjpzdHJpbmcoXCJ0ZXN0XCIpIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICJcInRlc3RcIiIpOwogCiAgIC8vIENvbXBhcmVzIGFu
IHN0ZDo6c3RyaW5nIHRvIGEgY2hhciogdGhhdCBoYXMgZGlmZmVyZW50IGNvbnRlbnQuCiAgIGNo
YXIqIGNvbnN0IHAxID0gY29uc3RfY2FzdDxjaGFyKj4oImZvbyIpOwpAQCAtNDQ3MywyOCArNDc5
MiwyOSBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgU3RkU3RyaW5nKSB7CiAgIHN0YXRpYyA6OnN0
ZDo6c3RyaW5nIHN0cjMoc3RyMSk7CiAgIHN0cjMuYXQoMikgPSAnXDAnOwogICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShBU1NFUlRfRVEoc3RyMSwgc3RyMyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICJWYWx1ZSBvZjogc3RyM1xuIgotICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IFwi
QSBcXDAgaW4gdGhlIG1pZGRsZVwiIik7CisgICAgICAgICAgICAgICAgICAgICAgICIgIHN0cjNc
biAgICBXaGljaCBpczogXCJBIFxcMCBpbiB0aGUgbWlkZGxlXCIiKTsKIH0KIAogI2lmIEdURVNU
X0hBU19TVERfV1NUUklORwogCiAvLyBUZXN0cyB1c2luZyA6OnN0ZDo6d3N0cmluZyB2YWx1ZXMg
aW4ge0VYUEVDVHxBU1NFUlR9X0VRLgogVEVTVChFcUFzc2VydGlvblRlc3QsIFN0ZFdpZGVTdHJp
bmcpIHsKLSAgLy8gQ29tcGFyZXMgYW4gc3RkOjp3c3RyaW5nIHRvIGEgY29uc3Qgd2NoYXJfdCog
dGhhdCBoYXMgaWRlbnRpY2FsCi0gIC8vIGNvbnRlbnQuCi0gIEVYUEVDVF9FUSg6OnN0ZDo6d3N0
cmluZyhMIlRlc3RceDgxMTkiKSwgTCJUZXN0XHg4MTE5Iik7Ci0KICAgLy8gQ29tcGFyZXMgdHdv
IGlkZW50aWNhbCBzdGQ6OndzdHJpbmdzLgogICBjb25zdCA6OnN0ZDo6d3N0cmluZyB3c3RyMShM
IkEgKiBpbiB0aGUgbWlkZGxlIik7CiAgIGNvbnN0IDo6c3RkOjp3c3RyaW5nIHdzdHIyKHdzdHIx
KTsKICAgQVNTRVJUX0VRKHdzdHIxLCB3c3RyMik7CiAKKyAgLy8gQ29tcGFyZXMgYW4gc3RkOjp3
c3RyaW5nIHRvIGEgY29uc3Qgd2NoYXJfdCogdGhhdCBoYXMgaWRlbnRpY2FsCisgIC8vIGNvbnRl
bnQuCisgIGNvbnN0IHdjaGFyX3Qga1Rlc3RYODExOVtdID0geyAnVCcsICdlJywgJ3MnLCAndCcs
IDB4ODExOSwgJ1wwJyB9OworICBFWFBFQ1RfRVEoOjpzdGQ6OndzdHJpbmcoa1Rlc3RYODExOSks
IGtUZXN0WDgxMTkpOworCiAgIC8vIENvbXBhcmVzIGFuIHN0ZDo6d3N0cmluZyB0byBhIGNvbnN0
IHdjaGFyX3QqIHRoYXQgaGFzIGRpZmZlcmVudAogICAvLyBjb250ZW50LgorICBjb25zdCB3Y2hh
cl90IGtUZXN0WDgxMjBbXSA9IHsgJ1QnLCAnZScsICdzJywgJ3QnLCAweDgxMjAsICdcMCcgfTsK
ICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX0VRKDo6
c3RkOjp3c3RyaW5nKEwiVGVzdFx4ODExOSIpLCBMIlRlc3RceDgxMjAiKTsKLSAgfSwgIkxcIlRl
c3RcXHg4MTIwXCIiKTsKKyAgICBFWFBFQ1RfRVEoOjpzdGQ6OndzdHJpbmcoa1Rlc3RYODExOSks
IGtUZXN0WDgxMjApOworICB9LCAia1Rlc3RYODEyMCIpOwogCiAgIC8vIENvbXBhcmVzIHR3byBz
dGQ6OndzdHJpbmdzIHRoYXQgaGF2ZSBkaWZmZXJlbnQgY29udGVudHMsIG9uZSBvZgogICAvLyB3
aGljaCBoYXZpbmcgYSBOVUwgY2hhcmFjdGVyIGluIHRoZSBtaWRkbGUuCkBAIC00NTQ2LDE4ICs0
ODY2LDIwIEBAIFRFU1QoRXFBc3NlcnRpb25UZXN0LCBHbG9iYWxTdHJpbmcpIHsKIAogLy8gVGVz
dHMgdXNpbmcgOjp3c3RyaW5nIHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCiBURVNUKEVx
QXNzZXJ0aW9uVGVzdCwgR2xvYmFsV2lkZVN0cmluZykgewotICAvLyBDb21wYXJlcyBhIGNvbnN0
IHdjaGFyX3QqIHRvIGEgOjp3c3RyaW5nIHRoYXQgaGFzIGlkZW50aWNhbCBjb250ZW50LgotICBB
U1NFUlRfRVEoTCJUZXN0XHg4MTE5IiwgOjp3c3RyaW5nKEwiVGVzdFx4ODExOSIpKTsKLQogICAv
LyBDb21wYXJlcyB0d28gaWRlbnRpY2FsIDo6d3N0cmluZ3MuCiAgIHN0YXRpYyBjb25zdCA6Ondz
dHJpbmcgd3N0cjEoTCJBICogaW4gdGhlIG1pZGRsZSIpOwogICBzdGF0aWMgY29uc3QgOjp3c3Ry
aW5nIHdzdHIyKHdzdHIxKTsKICAgRVhQRUNUX0VRKHdzdHIxLCB3c3RyMik7CiAKKyAgLy8gQ29t
cGFyZXMgYSBjb25zdCB3Y2hhcl90KiB0byBhIDo6d3N0cmluZyB0aGF0IGhhcyBpZGVudGljYWwg
Y29udGVudC4KKyAgY29uc3Qgd2NoYXJfdCBrVGVzdFg4MTE5W10gPSB7ICdUJywgJ2UnLCAncycs
ICd0JywgMHg4MTE5LCAnXDAnIH07CisgIEFTU0VSVF9FUShrVGVzdFg4MTE5LCA6OndzdHJpbmco
a1Rlc3RYODExOSkpOworCiAgIC8vIENvbXBhcmVzIGEgY29uc3Qgd2NoYXJfdCogdG8gYSA6Ondz
dHJpbmcgdGhhdCBoYXMgZGlmZmVyZW50CiAgIC8vIGNvbnRlbnQuCisgIGNvbnN0IHdjaGFyX3Qg
a1Rlc3RYODEyMFtdID0geyAnVCcsICdlJywgJ3MnLCAndCcsIDB4ODEyMCwgJ1wwJyB9OwogICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfRVEoTCJUZXN0
XHg4MTIwIiwgOjp3c3RyaW5nKEwiVGVzdFx4ODExOSIpKTsKKyAgICBFWFBFQ1RfRVEoa1Rlc3RY
ODEyMCwgOjp3c3RyaW5nKGtUZXN0WDgxMTkpKTsKICAgfSwgIlRlc3RcXHg4MTE5Iik7CiAKICAg
Ly8gQ29tcGFyZXMgYSB3Y2hhcl90KiB0byBhIDo6d3N0cmluZyB0aGF0IGhhcyBkaWZmZXJlbnQg
Y29udGVudC4KQEAgLTQ1OTAsOSArNDkxMiw5IEBAIFRFU1QoRXFBc3NlcnRpb25UZXN0LCBDaGFy
UG9pbnRlcikgewogICBBU1NFUlRfRVEocDEsIHAxKTsKIAogICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShFWFBFQ1RfRVEocDAsIHAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVl
IG9mOiBwMiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiICBwMlxuICAgIFdoaWNoIGlz
OiIpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEocDEsIHAyKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgInAyIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICIg
IHAyXG4gICAgV2hpY2ggaXM6Iik7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShy
ZWludGVycHJldF9jYXN0PGNoYXIqPigweDEyMzQpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oMHhBQkMwKSksCiAgICAgICAgICAgICAg
ICAgICAgICAgICJBQkMwIik7CkBAIC00NjEyLDkgKzQ5MzQsOSBAQCBURVNUKEVxQXNzZXJ0aW9u
VGVzdCwgV2lkZUNoYXJQb2ludGVyKSB7CiAgIEVYUEVDVF9FUShwMCwgcDApOwogCiAgIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShwMCwgcDIpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAiVmFsdWUgb2Y6IHAyIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgIHAy
XG4gICAgV2hpY2ggaXM6Iik7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShw
MSwgcDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAicDIiKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiAgcDJcbiAgICBXaGljaCBpczoiKTsKICAgdm9pZCogcHYzID0gKHZvaWQq
KTB4MTIzNDsgIC8vIE5PTElOVAogICB2b2lkKiBwdjQgPSAodm9pZCopMHhBQkMwOyAgLy8gTk9M
SU5UCiAgIGNvbnN0IHdjaGFyX3QqIHAzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB3Y2hhcl90
Kj4ocHYzKTsKQEAgLTQ2MzIsNiArNDk1NCw2OCBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgT3Ro
ZXJQb2ludGVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICIweDEyMzQiKTsKIH0KIAorLy8g
QSBjbGFzcyB0aGF0IHN1cHBvcnRzIGJpbmFyeSBjb21wYXJpc29uIG9wZXJhdG9ycyBidXQgbm90
IHN0cmVhbWluZy4KK2NsYXNzIFVucHJpbnRhYmxlQ2hhciB7CisgcHVibGljOgorICBleHBsaWNp
dCBVbnByaW50YWJsZUNoYXIoY2hhciBjaCkgOiBjaGFyXyhjaCkge30KKworICBib29sIG9wZXJh
dG9yPT0oY29uc3QgVW5wcmludGFibGVDaGFyJiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gY2hh
cl8gPT0gcmhzLmNoYXJfOworICB9CisgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVbnByaW50YWJs
ZUNoYXImIHJocykgY29uc3QgeworICAgIHJldHVybiBjaGFyXyAhPSByaHMuY2hhcl87CisgIH0K
KyAgYm9vbCBvcGVyYXRvcjwoY29uc3QgVW5wcmludGFibGVDaGFyJiByaHMpIGNvbnN0IHsKKyAg
ICByZXR1cm4gY2hhcl8gPCByaHMuY2hhcl87CisgIH0KKyAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0
IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBjb25zdCB7CisgICAgcmV0dXJuIGNoYXJfIDw9IHJocy5j
aGFyXzsKKyAgfQorICBib29sIG9wZXJhdG9yPihjb25zdCBVbnByaW50YWJsZUNoYXImIHJocykg
Y29uc3QgeworICAgIHJldHVybiBjaGFyXyA+IHJocy5jaGFyXzsKKyAgfQorICBib29sIG9wZXJh
dG9yPj0oY29uc3QgVW5wcmludGFibGVDaGFyJiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gY2hh
cl8gPj0gcmhzLmNoYXJfOworICB9CisKKyBwcml2YXRlOgorICBjaGFyIGNoYXJfOworfTsKKwor
Ly8gVGVzdHMgdGhhdCBBU1NFUlRfRVEoKSBhbmQgZnJpZW5kcyBkb24ndCByZXF1aXJlIHRoZSBh
cmd1bWVudHMgdG8KKy8vIGJlIHByaW50YWJsZS4KK1RFU1QoQ29tcGFyaXNvbkFzc2VydGlvblRl
c3QsIEFjY2VwdHNVbnByaW50YWJsZUFyZ3MpIHsKKyAgY29uc3QgVW5wcmludGFibGVDaGFyIHgo
J3gnKSwgeSgneScpOworICBBU1NFUlRfRVEoeCwgeCk7CisgIEVYUEVDVF9ORSh4LCB5KTsKKyAg
QVNTRVJUX0xUKHgsIHkpOworICBFWFBFQ1RfTEUoeCwgeSk7CisgIEFTU0VSVF9HVCh5LCB4KTsK
KyAgRVhQRUNUX0dFKHgsIHgpOworCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9F
USh4LCB5KSwgIjEtYnl0ZSBvYmplY3QgPDc4PiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShFWFBFQ1RfRVEoeCwgeSksICIxLWJ5dGUgb2JqZWN0IDw3OT4iKTsKKyAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoRVhQRUNUX0xUKHksIHkpLCAiMS1ieXRlIG9iamVjdCA8Nzk+Iik7CisgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HVCh4LCB5KSwgIjEtYnl0ZSBvYmplY3QgPDc4
PiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR1QoeCwgeSksICIxLWJ5dGUg
b2JqZWN0IDw3OT4iKTsKKworICAvLyBDb2RlIHRlc3RlZCBieSBFWFBFQ1RfRkFUQUxfRkFJTFVS
RSBjYW5ub3QgcmVmZXJlbmNlIGxvY2FsCisgIC8vIHZhcmlhYmxlcywgc28gd2UgaGF2ZSB0byB3
cml0ZSBVbnByaW50YWJsZUNoYXIoJ3gnKSBpbnN0ZWFkIG9mIHguCisjaWZuZGVmIF9fQk9STEFO
RENfXworICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyLgorICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShB
U1NFUlRfTkUoVW5wcmludGFibGVDaGFyKCd4JyksIFVucHJpbnRhYmxlQ2hhcigneCcpKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3QgPDc4PiIpOworICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShBU1NFUlRfTEUoVW5wcmludGFibGVDaGFyKCd5JyksIFVucHJpbnRhYmxlQ2hh
cigneCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3QgPDc4PiIpOwor
I2VuZGlmCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9MRShVbnByaW50YWJsZUNoYXIo
J3knKSwgVW5wcmludGFibGVDaGFyKCd4JykpLAorICAgICAgICAgICAgICAgICAgICAgICAiMS1i
eXRlIG9iamVjdCA8Nzk+Iik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9HRShVbnBy
aW50YWJsZUNoYXIoJ3gnKSwgVW5wcmludGFibGVDaGFyKCd5JykpLAorICAgICAgICAgICAgICAg
ICAgICAgICAiMS1ieXRlIG9iamVjdCA8Nzg+Iik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFT
U0VSVF9HRShVbnByaW50YWJsZUNoYXIoJ3gnKSwgVW5wcmludGFibGVDaGFyKCd5JykpLAorICAg
ICAgICAgICAgICAgICAgICAgICAiMS1ieXRlIG9iamVjdCA8Nzk+Iik7Cit9CisKIC8vIFRlc3Rz
IHRoZSBGUklFTkRfVEVTVCBtYWNyby4KIAogLy8gVGhpcyBjbGFzcyBoYXMgYSBwcml2YXRlIG1l
bWJlciB3ZSB3YW50IHRvIHRlc3QuICBXZSB3aWxsIHRlc3QgaXQKQEAgLTQ3NDksNyArNTEzMyw3
IEBAIFRFU1QoQXNzZXJ0aW9uUmVzdWx0VGVzdCwgQ29uc3RydWN0aW9uV29ya3MpIHsKICAgRVhQ
RUNUX1NUUkVRKCJnaGkiLCByNS5tZXNzYWdlKCkpOwogfQogCi0vLyBUZXN0cyB0aGF0IHRoZSBu
ZWdhdGlvbiBmaXBzIHRoZSBwcmVkaWNhdGUgcmVzdWx0IGJ1dCBrZWVwcyB0aGUgbWVzc2FnZS4K
Ky8vIFRlc3RzIHRoYXQgdGhlIG5lZ2F0aW9uIGZsaXBzIHRoZSBwcmVkaWNhdGUgcmVzdWx0IGJ1
dCBrZWVwcyB0aGUgbWVzc2FnZS4KIFRFU1QoQXNzZXJ0aW9uUmVzdWx0VGVzdCwgTmVnYXRpb25X
b3JrcykgewogICBBc3NlcnRpb25SZXN1bHQgcjEgPSBBc3NlcnRpb25TdWNjZXNzKCkgPDwgImFi
YyI7CiAgIEVYUEVDVF9GQUxTRSghcjEpOwpAQCAtNDc2Niw2ICs1MTUwLDM3IEBAIFRFU1QoQXNz
ZXJ0aW9uUmVzdWx0VGVzdCwgU3RyZWFtaW5nV29ya3MpIHsKICAgRVhQRUNUX1NUUkVRKCJhYmNk
MHRydWUiLCByLm1lc3NhZ2UoKSk7CiB9CiAKK1RFU1QoQXNzZXJ0aW9uUmVzdWx0VGVzdCwgQ2Fu
U3RyZWFtT3N0cmVhbU1hbmlwdWxhdG9ycykgeworICBBc3NlcnRpb25SZXN1bHQgciA9IEFzc2Vy
dGlvblN1Y2Nlc3MoKTsKKyAgciA8PCAiRGF0YSIgPDwgc3RkOjplbmRsIDw8IHN0ZDo6Zmx1c2gg
PDwgc3RkOjplbmRzIDw8ICJXaWxsIGJlIHZpc2libGUiOworICBFWFBFQ1RfU1RSRVEoIkRhdGFc
blxcMFdpbGwgYmUgdmlzaWJsZSIsIHIubWVzc2FnZSgpKTsKK30KKworLy8gVGhlIG5leHQgdGVz
dCB1c2VzIGV4cGxpY2l0IGNvbnZlcnNpb24gb3BlcmF0b3JzIC0tIGEgQysrMTEgZmVhdHVyZS4K
KyNpZiBHVEVTVF9MQU5HX0NYWDExCisKK1RFU1QoQXNzZXJ0aW9uUmVzdWx0VGVzdCwgQ29uc3Ry
dWN0aWJsZUZyb21Db250ZXh0dWFsbHlDb252ZXJ0aWJsZVRvQm9vbCkgeworICBzdHJ1Y3QgRXhw
bGljaXRseUNvbnZlcnRpYmxlVG9Cb29sIHsKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gdmFsdWU7IH0KKyAgICBib29sIHZhbHVlOworICB9OworICBFeHBsaWNp
dGx5Q29udmVydGlibGVUb0Jvb2wgdjEgPSB7ZmFsc2V9OworICBFeHBsaWNpdGx5Q29udmVydGli
bGVUb0Jvb2wgdjIgPSB7dHJ1ZX07CisgIEVYUEVDVF9GQUxTRSh2MSk7CisgIEVYUEVDVF9UUlVF
KHYyKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisKK3N0cnVjdCBDb252ZXJ0
aWJsZVRvQXNzZXJ0aW9uUmVzdWx0IHsKKyAgb3BlcmF0b3IgQXNzZXJ0aW9uUmVzdWx0KCkgY29u
c3QgeyByZXR1cm4gQXNzZXJ0aW9uUmVzdWx0KHRydWUpOyB9Cit9OworCitURVNUKEFzc2VydGlv
blJlc3VsdFRlc3QsIENvbnN0cnVjdGlibGVGcm9tSW1wbGljaXRseUNvbnZlcnRpYmxlKSB7Cisg
IENvbnZlcnRpYmxlVG9Bc3NlcnRpb25SZXN1bHQgb2JqOworICBFWFBFQ1RfVFJVRShvYmopOwor
fQorCiAvLyBUZXN0cyBzdHJlYW1pbmcgYSB1c2VyIHR5cGUgd2hvc2UgZGVmaW5pdGlvbiBhbmQg
b3BlcmF0b3IgPDwgYXJlCiAvLyBib3RoIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgogY2xhc3Mg
QmFzZSB7CkBAIC00OTUwLDYgKzUzNjUsNTkgQEAgVEVTVF9GKFRlc3RJbmZvVGVzdCwgcmVzdWx0
KSB7CiAgIEFTU0VSVF9FUSgwLCBHZXRUZXN0UmVzdWx0KHRlc3RfaW5mbyktPnRvdGFsX3BhcnRf
Y291bnQoKSk7CiB9CiAKKyNkZWZpbmUgVkVSSUZZX0NPREVfTE9DQVRJT04gXAorICBjb25zdCBp
bnQgZXhwZWN0ZWRfbGluZSA9IF9fTElORV9fIC0gMTsgXAorICBjb25zdCBUZXN0SW5mbyogY29u
c3QgdGVzdF9pbmZvID0gR2V0VW5pdFRlc3RJbXBsKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7IFwK
KyAgQVNTRVJUX1RSVUUodGVzdF9pbmZvKTsgXAorICBFWFBFQ1RfU1RSRVEoX19GSUxFX18sIHRl
c3RfaW5mby0+ZmlsZSgpKTsgXAorICBFWFBFQ1RfRVEoZXhwZWN0ZWRfbGluZSwgdGVzdF9pbmZv
LT5saW5lKCkpCisKK1RFU1QoQ29kZUxvY2F0aW9uRm9yVEVTVCwgVmVyaWZ5KSB7CisgIFZFUklG
WV9DT0RFX0xPQ0FUSU9OOworfQorCitjbGFzcyBDb2RlTG9jYXRpb25Gb3JURVNURiA6IHB1Ymxp
YyBUZXN0IHsKK307CisKK1RFU1RfRihDb2RlTG9jYXRpb25Gb3JURVNURiwgVmVyaWZ5KSB7Cisg
IFZFUklGWV9DT0RFX0xPQ0FUSU9OOworfQorCitjbGFzcyBDb2RlTG9jYXRpb25Gb3JURVNUUCA6
IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4geworfTsKKworVEVTVF9QKENvZGVMb2NhdGlvbkZv
clRFU1RQLCBWZXJpZnkpIHsKKyAgVkVSSUZZX0NPREVfTE9DQVRJT047Cit9CisKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKCwgQ29kZUxvY2F0aW9uRm9yVEVTVFAsIFZhbHVlcygwKSk7CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUIDogcHVi
bGljIFRlc3QgeworfTsKKworVFlQRURfVEVTVF9DQVNFKENvZGVMb2NhdGlvbkZvclRZUEVEVEVT
VCwgaW50KTsKKworVFlQRURfVEVTVChDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1QsIFZlcmlmeSkg
eworICBWRVJJRllfQ09ERV9MT0NBVElPTjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citj
bGFzcyBDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1RQIDogcHVibGljIFRlc3QgeworfTsKKworVFlQ
RURfVEVTVF9DQVNFX1AoQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCk7CisKK1RZUEVEX1RFU1Rf
UChDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1RQLCBWZXJpZnkpIHsKKyAgVkVSSUZZX0NPREVfTE9D
QVRJT047Cit9CisKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKENvZGVMb2NhdGlvbkZvclRZ
UEVEVEVTVFAsIFZlcmlmeSk7CisKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBD
b2RlTG9jYXRpb25Gb3JUWVBFRFRFU1RQLCBpbnQpOworCisjdW5kZWYgVkVSSUZZX0NPREVfTE9D
QVRJT04KKwogLy8gVGVzdHMgc2V0dGluZyB1cCBhbmQgdGVhcmluZyBkb3duIGEgdGVzdCBjYXNl
LgogCiBjbGFzcyBTZXRVcFRlc3RDYXNlVGVzdCA6IHB1YmxpYyBUZXN0IHsKQEAgLTUwMTMsNyAr
NTQ4MSw4IEBAIFRFU1RfRihTZXRVcFRlc3RDYXNlVGVzdCwgVGVzdDIpIHsKICAgRVhQRUNUX1NU
UkVRKCIxMjMiLCBzaGFyZWRfcmVzb3VyY2VfKTsKIH0KIAotLy8gVGhlIEluaXRHb29nbGVUZXN0
VGVzdCB0ZXN0IGNhc2UgdGVzdHMgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKS4KKworLy8gVGhl
IFBhcnNlRmxhZ3NUZXN0IHRlc3QgY2FzZSB0ZXN0cyBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHku
CiAKIC8vIFRoZSBGbGFncyBzdHJ1Y3Qgc3RvcmVzIGEgY29weSBvZiBhbGwgR29vZ2xlIFRlc3Qg
ZmxhZ3MuCiBzdHJ1Y3QgRmxhZ3MgewpAQCAtNTAzMCw2ICs1NDk5LDcgQEAgc3RydWN0IEZsYWdz
IHsKICAgICAgICAgICAgIHJlcGVhdCgxKSwKICAgICAgICAgICAgIHNodWZmbGUoZmFsc2UpLAog
ICAgICAgICAgICAgc3RhY2tfdHJhY2VfZGVwdGgoa01heFN0YWNrVHJhY2VEZXB0aCksCisgICAg
ICAgICAgICBzdHJlYW1fcmVzdWx0X3RvKCIiKSwKICAgICAgICAgICAgIHRocm93X29uX2ZhaWx1
cmUoZmFsc2UpIHt9CiAKICAgLy8gRmFjdG9yeSBtZXRob2RzLgpAQCAtNTA5OCw4ICs1NTY4LDgg
QEAgc3RydWN0IEZsYWdzIHsKICAgICByZXR1cm4gZmxhZ3M7CiAgIH0KIAotICAvLyBDcmVhdGVz
IGEgRmxhZ3Mgc3RydWN0IHdoZXJlIHRoZSBndGVzdF9yYW5kb21fc2VlZCBmbGFnIGhhcwotICAv
LyB0aGUgZ2l2ZW4gdmFsdWUuCisgIC8vIENyZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hlcmUgdGhl
IGd0ZXN0X3JhbmRvbV9zZWVkIGZsYWcgaGFzIHRoZSBnaXZlbgorICAvLyB2YWx1ZS4KICAgc3Rh
dGljIEZsYWdzIFJhbmRvbVNlZWQoSW50MzIgcmFuZG9tX3NlZWQpIHsKICAgICBGbGFncyBmbGFn
czsKICAgICBmbGFncy5yYW5kb21fc2VlZCA9IHJhbmRvbV9zZWVkOwpAQCAtNTExNCw4ICs1NTg0
LDggQEAgc3RydWN0IEZsYWdzIHsKICAgICByZXR1cm4gZmxhZ3M7CiAgIH0KIAotICAvLyBDcmVh
dGVzIGEgRmxhZ3Mgc3RydWN0IHdoZXJlIHRoZSBndGVzdF9zaHVmZmxlIGZsYWcgaGFzCi0gIC8v
IHRoZSBnaXZlbiB2YWx1ZS4KKyAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUg
Z3Rlc3Rfc2h1ZmZsZSBmbGFnIGhhcyB0aGUgZ2l2ZW4KKyAgLy8gdmFsdWUuCiAgIHN0YXRpYyBG
bGFncyBTaHVmZmxlKGJvb2wgc2h1ZmZsZSkgewogICAgIEZsYWdzIGZsYWdzOwogICAgIGZsYWdz
LnNodWZmbGUgPSBzaHVmZmxlOwpAQCAtNTEzMCw2ICs1NjAwLDE0IEBAIHN0cnVjdCBGbGFncyB7
CiAgICAgcmV0dXJuIGZsYWdzOwogICB9CiAKKyAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3
aGVyZSB0aGUgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSBmbGFnIGhhcworICAvLyB0aGUg
Z2l2ZW4gdmFsdWUuCisgIHN0YXRpYyBGbGFncyBTdHJlYW1SZXN1bHRUbyhjb25zdCBjaGFyKiBz
dHJlYW1fcmVzdWx0X3RvKSB7CisgICAgRmxhZ3MgZmxhZ3M7CisgICAgZmxhZ3Muc3RyZWFtX3Jl
c3VsdF90byA9IHN0cmVhbV9yZXN1bHRfdG87CisgICAgcmV0dXJuIGZsYWdzOworICB9CisKICAg
Ly8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3RfdGhyb3dfb25fZmFpbHVy
ZSBmbGFnIGhhcwogICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCiAgIHN0YXRpYyBGbGFncyBUaHJvd09u
RmFpbHVyZShib29sIHRocm93X29uX2ZhaWx1cmUpIHsKQEAgLTUxNTEsMTEgKzU2MjksMTIgQEAg
c3RydWN0IEZsYWdzIHsKICAgSW50MzIgcmVwZWF0OwogICBib29sIHNodWZmbGU7CiAgIEludDMy
IHN0YWNrX3RyYWNlX2RlcHRoOworICBjb25zdCBjaGFyKiBzdHJlYW1fcmVzdWx0X3RvOwogICBi
b29sIHRocm93X29uX2ZhaWx1cmU7CiB9OwogCi0vLyBGaXh0dXJlIGZvciB0ZXN0aW5nIEluaXRH
b29nbGVUZXN0KCkuCi1jbGFzcyBJbml0R29vZ2xlVGVzdFRlc3QgOiBwdWJsaWMgVGVzdCB7Cisv
LyBGaXh0dXJlIGZvciB0ZXN0aW5nIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seSgpLgorY2xhc3Mg
UGFyc2VGbGFnc1Rlc3QgOiBwdWJsaWMgVGVzdCB7CiAgcHJvdGVjdGVkOgogICAvLyBDbGVhcnMg
dGhlIGZsYWdzIGJlZm9yZSBlYWNoIHRlc3QuCiAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKQEAg
LTUxNzEsNiArNTY1MCw3IEBAIGNsYXNzIEluaXRHb29nbGVUZXN0VGVzdCA6IHB1YmxpYyBUZXN0
IHsKICAgICBHVEVTVF9GTEFHKHJlcGVhdCkgPSAxOwogICAgIEdURVNUX0ZMQUcoc2h1ZmZsZSkg
PSBmYWxzZTsKICAgICBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSA9IGtNYXhTdGFja1Ry
YWNlRGVwdGg7CisgICAgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSA9ICIiOwogICAgIEdU
RVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSBmYWxzZTsKICAgfQogCkBAIC01MTk5LDggKzU2
NzksMTAgQEAgY2xhc3MgSW5pdEdvb2dsZVRlc3RUZXN0IDogcHVibGljIFRlc3QgewogICAgIEVY
UEVDVF9FUShleHBlY3RlZC5yYW5kb21fc2VlZCwgR1RFU1RfRkxBRyhyYW5kb21fc2VlZCkpOwog
ICAgIEVYUEVDVF9FUShleHBlY3RlZC5yZXBlYXQsIEdURVNUX0ZMQUcocmVwZWF0KSk7CiAgICAg
RVhQRUNUX0VRKGV4cGVjdGVkLnNodWZmbGUsIEdURVNUX0ZMQUcoc2h1ZmZsZSkpOwotICAgIEVY
UEVDVF9FUShleHBlY3RlZC50aHJvd19vbl9mYWlsdXJlLCBHVEVTVF9GTEFHKHRocm93X29uX2Zh
aWx1cmUpKTsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQuc3RhY2tfdHJhY2VfZGVwdGgsIEdURVNU
X0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoZXhwZWN0ZWQuc3Ry
ZWFtX3Jlc3VsdF90bywKKyAgICAgICAgICAgICAgICAgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0
X3RvKS5jX3N0cigpKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQudGhyb3dfb25fZmFpbHVyZSwg
R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSk7CiAgIH0KIAogICAvLyBQYXJzZXMgYSBjb21t
YW5kIGxpbmUgKHNwZWNpZmllZCBieSBhcmdjMSBhbmQgYXJndjEpLCB0aGVuCkBAIC01MjEzLDE2
ICs1Njk1LDE2IEBAIGNsYXNzIEluaXRHb29nbGVUZXN0VGVzdCA6IHB1YmxpYyBUZXN0IHsKICAg
ICBjb25zdCBib29sIHNhdmVkX2hlbHBfZmxhZyA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OmdfaGVs
cF9mbGFnOwogICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OmdfaGVscF9mbGFnID0gZmFsc2U7CiAK
LSNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXworIyBpZiBHVEVTVF9IQVNfU1RSRUFN
X1JFRElSRUNUSU9OCiAgICAgQ2FwdHVyZVN0ZG91dCgpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNf
U1RSRUFNX1JFRElSRUNUSU9OXworIyBlbmRpZgogCiAgICAgLy8gUGFyc2VzIHRoZSBjb21tYW5k
IGxpbmUuCiAgICAgaW50ZXJuYWw6OlBhcnNlR29vZ2xlVGVzdEZsYWdzT25seSgmYXJnYzEsIGNv
bnN0X2Nhc3Q8Q2hhclR5cGUqKj4oYXJndjEpKTsKIAotI2lmIEdURVNUX0hBU19TVFJFQU1fUkVE
SVJFQ1RJT05fCi0gICAgY29uc3QgU3RyaW5nIGNhcHR1cmVkX3N0ZG91dCA9IEdldENhcHR1cmVk
U3Rkb3V0KCk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCisjIGlm
IEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KKyAgICBjb25zdCBzdGQ6OnN0cmluZyBjYXB0
dXJlZF9zdGRvdXQgPSBHZXRDYXB0dXJlZFN0ZG91dCgpOworIyBlbmRpZgogCiAgICAgLy8gVmVy
aWZpZXMgdGhlIGZsYWcgdmFsdWVzLgogICAgIENoZWNrRmxhZ3MoZXhwZWN0ZWQpOwpAQCAtNTIz
NSw3ICs1NzE3LDcgQEAgY2xhc3MgSW5pdEdvb2dsZVRlc3RUZXN0IDogcHVibGljIFRlc3Qgewog
ICAgIC8vIGhlbHAgbWVzc2FnZSBmb3IgdGhlIGZsYWdzIGl0IHJlY29nbml6ZXMuCiAgICAgRVhQ
RUNUX0VRKHNob3VsZF9wcmludF9oZWxwLCA6OnRlc3Rpbmc6OmludGVybmFsOjpnX2hlbHBfZmxh
Zyk7CiAKLSNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXworIyBpZiBHVEVTVF9IQVNf
U1RSRUFNX1JFRElSRUNUSU9OCiAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRfaGVscF9m
cmFnbWVudCA9CiAgICAgICAgICJUaGlzIHByb2dyYW0gY29udGFpbnMgdGVzdHMgd3JpdHRlbiB1
c2luZyI7CiAgICAgaWYgKHNob3VsZF9wcmludF9oZWxwKSB7CkBAIC01MjQ0LDIxICs1NzI2LDIy
IEBAIGNsYXNzIEluaXRHb29nbGVUZXN0VGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICAgIEVYUEVD
VF9QUkVEX0ZPUk1BVDIoSXNOb3RTdWJzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdGVkX2hlbHBfZnJhZ21lbnQsIGNhcHR1cmVkX3N0ZG91dCk7CiAgICAgfQotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXworIyBlbmRpZiAgLy8gR1RFU1RfSEFT
X1NUUkVBTV9SRURJUkVDVElPTgogCiAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Z19oZWxwX2Zs
YWcgPSBzYXZlZF9oZWxwX2ZsYWc7CiAgIH0KIAogICAvLyBUaGlzIG1hY3JvIHdyYXBzIFRlc3RQ
YXJzaW5nRmxhZ3Mgcy50LiB0aGUgdXNlciBkb2Vzbid0IG5lZWQKICAgLy8gdG8gc3BlY2lmeSB0
aGUgYXJyYXkgc2l6ZXMuCi0jZGVmaW5lIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndjEs
IGFyZ3YyLCBleHBlY3RlZCwgc2hvdWxkX3ByaW50X2hlbHApIFwKKworIyBkZWZpbmUgR1RFU1Rf
VEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2MSwgYXJndjIsIGV4cGVjdGVkLCBzaG91bGRfcHJpbnRf
aGVscCkgXAogICBUZXN0UGFyc2luZ0ZsYWdzKHNpemVvZihhcmd2MSkvc2l6ZW9mKCphcmd2MSkg
LSAxLCBhcmd2MSwgXAogICAgICAgICAgICAgICAgICAgIHNpemVvZihhcmd2Mikvc2l6ZW9mKCph
cmd2MikgLSAxLCBhcmd2MiwgXAogICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLCBzaG91bGRf
cHJpbnRfaGVscCkKIH07CiAKIC8vIFRlc3RzIHBhcnNpbmcgYW4gZW1wdHkgY29tbWFuZCBsaW5l
LgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRW1wdHkpIHsKK1RFU1RfRihQYXJzZUZsYWdz
VGVzdCwgRW1wdHkpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgIE5VTEwKICAgfTsK
QEAgLTUyNzEsNyArNTc1NCw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEVtcHR5KSB7
CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgYSBjb21tYW5kIGxpbmUgdGhhdCBoYXMgbm8gZmxhZy4K
LVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE5vRmxhZykgeworVEVTVF9GKFBhcnNlRmxhZ3NU
ZXN0LCBOb0ZsYWcpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwK
ICAgICBOVUxMCkBAIC01Mjg2LDcgKzU3NjksNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0
LCBOb0ZsYWcpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyBhIGJhZCAtLWd0ZXN0X2ZpbHRlciBm
bGFnLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRmlsdGVyQmFkKSB7CitURVNUX0YoUGFy
c2VGbGFnc1Rlc3QsIEZpbHRlckJhZCkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAg
ImZvby5leGUiLAogICAgICItLWd0ZXN0X2ZpbHRlciIsCkBAIC01MzAzLDcgKzU3ODYsNyBAQCBU
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBGaWx0ZXJCYWQpIHsKIH0KIAogLy8gVGVzdHMgcGFy
c2luZyBhbiBlbXB0eSAtLWd0ZXN0X2ZpbHRlciBmbGFnLgotVEVTVF9GKEluaXRHb29nbGVUZXN0
VGVzdCwgRmlsdGVyRW1wdHkpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgRmlsdGVyRW1wdHkp
IHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVz
dF9maWx0ZXI9IiwKQEAgLTUzMTksNyArNTgwMiw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRl
c3QsIEZpbHRlckVtcHR5KSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgYSBub24tZW1wdHkgLS1n
dGVzdF9maWx0ZXIgZmxhZy4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEZpbHRlck5vbkVt
cHR5KSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEZpbHRlck5vbkVtcHR5KSB7CiAgIGNvbnN0
IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfZmlsdGVyPWFi
YyIsCkBAIC01MzM1LDcgKzU4MTgsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBGaWx0
ZXJOb25FbXB0eSkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfYnJlYWtfb25fZmFp
bHVyZS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlV2l0aG91dFZh
bHVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEJyZWFrT25GYWlsdXJlV2l0aG91dFZhbHVl
KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rl
c3RfYnJlYWtfb25fZmFpbHVyZSIsCkBAIC01MzUxLDcgKzU4MzQsNyBAQCBURVNUX0YoSW5pdEdv
b2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVyZVdpdGhvdXRWYWx1ZSkgewogfQogCiAvLyBUZXN0
cyBwYXJzaW5nIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZT0wLgotVEVTVF9GKEluaXRHb29nbGVU
ZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVGYWxzZV8wKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3Qs
IEJyZWFrT25GYWlsdXJlRmFsc2VfMCkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAg
ImZvby5leGUiLAogICAgICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9MCIsCkBAIC01MzY3LDcg
KzU4NTAsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVyZUZhbHNl
XzApIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9Zi4K
LVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlRmFsc2VfZikgeworVEVT
VF9GKFBhcnNlRmxhZ3NUZXN0LCBCcmVha09uRmFpbHVyZUZhbHNlX2YpIHsKICAgY29uc3QgY2hh
ciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9icmVha19vbl9mYWls
dXJlPWYiLApAQCAtNTM4Myw3ICs1ODY2LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwg
QnJlYWtPbkZhaWx1cmVGYWxzZV9mKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9i
cmVha19vbl9mYWlsdXJlPUYuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFp
bHVyZUZhbHNlX0YpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgQnJlYWtPbkZhaWx1cmVGYWxz
ZV9GKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0t
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZT1GIiwKQEAgLTU0MDAsNyArNTg4Myw3IEBAIFRFU1RfRihJ
bml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlRmFsc2VfRikgewogCiAvLyBUZXN0cyBw
YXJzaW5nIGEgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWcgdGhhdCBoYXMgYSAidHJ1ZSIK
IC8vIGRlZmluaXRpb24uCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVy
ZVRydWUpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgQnJlYWtPbkZhaWx1cmVUcnVlKSB7CiAg
IGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfYnJl
YWtfb25fZmFpbHVyZT0xIiwKQEAgLTU0MTYsNyArNTg5OSw3IEBAIFRFU1RfRihJbml0R29vZ2xl
VGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlVHJ1ZSkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0t
Z3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucy4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIENhdGNo
RXhjZXB0aW9ucykgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBDYXRjaEV4Y2VwdGlvbnMpIHsK
ICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9j
YXRjaF9leGNlcHRpb25zIiwKQEAgLTU0MzIsNyArNTkxNSw3IEBAIFRFU1RfRihJbml0R29vZ2xl
VGVzdFRlc3QsIENhdGNoRXhjZXB0aW9ucykgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rl
c3RfZGVhdGhfdGVzdF91c2VfZm9yay4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIERlYXRo
VGVzdFVzZUZvcmspIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgRGVhdGhUZXN0VXNlRm9yaykg
ewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0
X2RlYXRoX3Rlc3RfdXNlX2ZvcmsiLApAQCAtNTQ0OSw3ICs1OTMyLDcgQEAgVEVTVF9GKEluaXRH
b29nbGVUZXN0VGVzdCwgRGVhdGhUZXN0VXNlRm9yaykgewogCiAvLyBUZXN0cyBoYXZpbmcgdGhl
IHNhbWUgZmxhZyB0d2ljZSB3aXRoIGRpZmZlcmVudCB2YWx1ZXMuICBUaGUKIC8vIGV4cGVjdGVk
IGJlaGF2aW9yIGlzIHRoYXQgdGhlIG9uZSBjb21pbmcgbGFzdCB0YWtlcyBwcmVjZWRlbmNlLgot
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRHVwbGljYXRlZEZsYWdzKSB7CitURVNUX0YoUGFy
c2VGbGFnc1Rlc3QsIER1cGxpY2F0ZWRGbGFncykgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7
CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X2ZpbHRlcj1hIiwKQEAgLTU0NjYsNyArNTk0
OSw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIER1cGxpY2F0ZWRGbGFncykgewogfQog
CiAvLyBUZXN0cyBoYXZpbmcgYW4gdW5yZWNvZ25pemVkIGZsYWcgb24gdGhlIGNvbW1hbmQgbGlu
ZS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFVucmVjb2duaXplZEZsYWcpIHsKK1RFU1Rf
RihQYXJzZUZsYWdzVGVzdCwgVW5yZWNvZ25pemVkRmxhZykgewogICBjb25zdCBjaGFyKiBhcmd2
W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUiLApA
QCAtNTQ4OCw3ICs1OTcxLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgVW5yZWNvZ25p
emVkRmxhZykgewogfQogCiAvLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxh
ZwotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzRmxhZykgeworVEVTVF9GKFBh
cnNlRmxhZ3NUZXN0LCBMaXN0VGVzdHNGbGFnKSB7CiAgICAgY29uc3QgY2hhciogYXJndltdID0g
ewogICAgICAgImZvby5leGUiLAogICAgICAgIi0tZ3Rlc3RfbGlzdF90ZXN0cyIsCkBAIC01NTA0
LDcgKzU5ODcsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0VGVzdHNGbGFnKSB7
CiB9CiAKIC8vIFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnIHdpdGggYSAi
dHJ1ZSIgdmFsdWUKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIExpc3RUZXN0c1RydWUpIHsK
K1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgTGlzdFRlc3RzVHJ1ZSkgewogICAgIGNvbnN0IGNoYXIq
IGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICItLWd0ZXN0X2xpc3RfdGVzdHM9
MSIsCkBAIC01NTIwLDcgKzYwMDMsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0
VGVzdHNUcnVlKSB7CiB9CiAKIC8vIFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3RfbGlzdF90ZXN0cyBm
bGFnIHdpdGggYSAiZmFsc2UiIHZhbHVlCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0
VGVzdHNGYWxzZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBMaXN0VGVzdHNGYWxzZSkgewog
ICAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICItLWd0
ZXN0X2xpc3RfdGVzdHM9MCIsCkBAIC01NTM2LDcgKzYwMTksNyBAQCBURVNUX0YoSW5pdEdvb2ds
ZVRlc3RUZXN0LCBMaXN0VGVzdHNGYWxzZSkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rl
c3RfbGlzdF90ZXN0cz1mLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzRmFs
c2VfZikgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBMaXN0VGVzdHNGYWxzZV9mKSB7CiAgIGNv
bnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfbGlzdF90
ZXN0cz1mIiwKQEAgLTU1NTIsNyArNjAzNSw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3Qs
IExpc3RUZXN0c0ZhbHNlX2YpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2xpc3Rf
dGVzdHM9Ri4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIExpc3RUZXN0c0ZhbHNlX0YpIHsK
K1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgTGlzdFRlc3RzRmFsc2VfRikgewogICBjb25zdCBjaGFy
KiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X2xpc3RfdGVzdHM9RiIs
CkBAIC01NTY4LDcgKzYwNTEsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0VGVz
dHNGYWxzZV9GKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9vdXRwdXQgKGludmFs
aWQpLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgT3V0cHV0RW1wdHkpIHsKK1RFU1RfRihQ
YXJzZUZsYWdzVGVzdCwgT3V0cHV0RW1wdHkpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewog
ICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9vdXRwdXQiLApAQCAtNTU4NSw3ICs2MDY4LDcg
QEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgT3V0cHV0RW1wdHkpIHsKIH0KIAogLy8gVGVz
dHMgcGFyc2luZyAtLWd0ZXN0X291dHB1dD14bWwKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3Qs
IE91dHB1dFhtbCkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBPdXRwdXRYbWwpIHsKICAgY29u
c3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9vdXRwdXQ9
eG1sIiwKQEAgLTU2MDEsNyArNjA4NCw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91
dHB1dFhtbCkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3Rfb3V0cHV0PXhtbDpmaWxl
Ci1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBPdXRwdXRYbWxGaWxlKSB7CitURVNUX0YoUGFy
c2VGbGFnc1Rlc3QsIE91dHB1dFhtbEZpbGUpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewog
ICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9vdXRwdXQ9eG1sOmZpbGUiLApAQCAtNTYxNyw3
ICs2MTAwLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgT3V0cHV0WG1sRmlsZSkgewog
fQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3Rfb3V0cHV0PXhtbDpkaXJlY3RvcnkvcGF0aC8K
LVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91dHB1dFhtbERpcmVjdG9yeSkgeworVEVTVF9G
KFBhcnNlRmxhZ3NUZXN0LCBPdXRwdXRYbWxEaXJlY3RvcnkpIHsKICAgY29uc3QgY2hhciogYXJn
dltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9vdXRwdXQ9eG1sOmRpcmVjdG9y
eS9wYXRoLyIsCkBAIC01NjM0LDcgKzYxMTcsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0
LCBPdXRwdXRYbWxEaXJlY3RvcnkpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9w
cmludF90aW1lIGZsYWcKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZsYWcp
IHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgUHJpbnRUaW1lRmxhZykgewogICAgIGNvbnN0IGNo
YXIqIGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICItLWd0ZXN0X3ByaW50X3Rp
bWUiLApAQCAtNTY1MCw3ICs2MTMzLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUHJp
bnRUaW1lRmxhZykgewogfQogCiAvLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X3ByaW50X3RpbWUg
ZmxhZyB3aXRoIGEgInRydWUiIHZhbHVlCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBQcmlu
dFRpbWVUcnVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFByaW50VGltZVRydWUpIHsKICAg
ICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAiZm9vLmV4ZSIsCiAgICAgICAiLS1ndGVz
dF9wcmludF90aW1lPTEiLApAQCAtNTY2Niw3ICs2MTQ5LDcgQEAgVEVTVF9GKEluaXRHb29nbGVU
ZXN0VGVzdCwgUHJpbnRUaW1lVHJ1ZSkgewogfQogCiAvLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0
X3ByaW50X3RpbWUgZmxhZyB3aXRoIGEgImZhbHNlIiB2YWx1ZQotVEVTVF9GKEluaXRHb29nbGVU
ZXN0VGVzdCwgUHJpbnRUaW1lRmFsc2UpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgUHJpbnRU
aW1lRmFsc2UpIHsKICAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAiZm9vLmV4ZSIs
CiAgICAgICAiLS1ndGVzdF9wcmludF90aW1lPTAiLApAQCAtNTY4Miw3ICs2MTY1LDcgQEAgVEVT
VF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lRmFsc2UpIHsKIH0KIAogLy8gVGVzdHMg
cGFyc2luZyAtLWd0ZXN0X3ByaW50X3RpbWU9Zi4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3Qs
IFByaW50VGltZUZhbHNlX2YpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgUHJpbnRUaW1lRmFs
c2VfZikgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICIt
LWd0ZXN0X3ByaW50X3RpbWU9ZiIsCkBAIC01Njk4LDcgKzYxODEsNyBAQCBURVNUX0YoSW5pdEdv
b2dsZVRlc3RUZXN0LCBQcmludFRpbWVGYWxzZV9mKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcg
LS1ndGVzdF9wcmludF90aW1lPUYuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBQcmludFRp
bWVGYWxzZV9GKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFByaW50VGltZUZhbHNlX0YpIHsK
ICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9w
cmludF90aW1lPUYiLApAQCAtNTcxNCw3ICs2MTk3LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0
VGVzdCwgUHJpbnRUaW1lRmFsc2VfRikgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3Rf
cmFuZG9tX3NlZWQ9bnVtYmVyCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBSYW5kb21TZWVk
KSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFJhbmRvbVNlZWQpIHsKICAgY29uc3QgY2hhciog
YXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9yYW5kb21fc2VlZD0xMDAw
IiwKQEAgLTU3MzAsNyArNjIxMyw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFJhbmRv
bVNlZWQpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X3JlcGVhdD1udW1iZXIKLVRF
U1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFJlcGVhdCkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0
LCBSZXBlYXQpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAg
ICAiLS1ndGVzdF9yZXBlYXQ9MTAwMCIsCkBAIC01NzQ2LDcgKzYyMjksNyBAQCBURVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBSZXBlYXQpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5nIGEgLS1ndGVz
dF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0
LCBBbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgQWxz
b1J1bkRpc2FibGVkVGVzdHNGbGFnKSB7CiAgICAgY29uc3QgY2hhciogYXJndltdID0gewogICAg
ICAgImZvby5leGUiLAogICAgICAgIi0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMiLApA
QCAtNTc2Myw3ICs2MjQ2LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQWxzb1J1bkRp
c2FibGVkVGVzdHNGbGFnKSB7CiB9CiAKIC8vIFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3RfYWxzb19y
dW5fZGlzYWJsZWRfdGVzdHMgZmxhZyB3aXRoIGEgInRydWUiIHZhbHVlCi1URVNUX0YoSW5pdEdv
b2dsZVRlc3RUZXN0LCBBbHNvUnVuRGlzYWJsZWRUZXN0c1RydWUpIHsKK1RFU1RfRihQYXJzZUZs
YWdzVGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNUcnVlKSB7CiAgICAgY29uc3QgY2hhciogYXJn
dltdID0gewogICAgICAgImZvby5leGUiLAogICAgICAgIi0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJs
ZWRfdGVzdHM9MSIsCkBAIC01NzgwLDcgKzYyNjMsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RU
ZXN0LCBBbHNvUnVuRGlzYWJsZWRUZXN0c1RydWUpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5nIGEg
LS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnIHdpdGggYSAiZmFsc2UiIHZhbHVl
Ci1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBBbHNvUnVuRGlzYWJsZWRUZXN0c0ZhbHNlKSB7
CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzRmFsc2UpIHsKICAg
ICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAiZm9vLmV4ZSIsCiAgICAgICAiLS1ndGVz
dF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cz0wIiwKQEAgLTU3OTcsNyArNjI4MCw3IEBAIFRFU1Rf
RihJbml0R29vZ2xlVGVzdFRlc3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzRmFsc2UpIHsKIH0KIAog
Ly8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X3NodWZmbGUuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RU
ZXN0LCBTaHVmZmxlV2l0aG91dFZhbHVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFNodWZm
bGVXaXRob3V0VmFsdWUpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhl
IiwKICAgICAiLS1ndGVzdF9zaHVmZmxlIiwKQEAgLTU4MTMsNyArNjI5Niw3IEBAIFRFU1RfRihJ
bml0R29vZ2xlVGVzdFRlc3QsIFNodWZmbGVXaXRob3V0VmFsdWUpIHsKIH0KIAogLy8gVGVzdHMg
cGFyc2luZyAtLWd0ZXN0X3NodWZmbGU9MC4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFNo
dWZmbGVGYWxzZV8wKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFNodWZmbGVGYWxzZV8wKSB7
CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rf
c2h1ZmZsZT0wIiwKQEAgLTU4MjgsOSArNjMxMSw4IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRl
c3QsIFNodWZmbGVGYWxzZV8wKSB7CiAgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwg
YXJndjIsIEZsYWdzOjpTaHVmZmxlKGZhbHNlKSwgZmFsc2UpOwogfQogCi0vLyBUZXN0cyBwYXJz
aW5nIGEgLS1ndGVzdF9zaHVmZmxlIGZsYWcgdGhhdCBoYXMgYSAidHJ1ZSIKLS8vIGRlZmluaXRp
b24uCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBTaHVmZmxlVHJ1ZSkgeworLy8gVGVzdHMg
cGFyc2luZyBhIC0tZ3Rlc3Rfc2h1ZmZsZSBmbGFnIHRoYXQgaGFzIGEgInRydWUiIGRlZmluaXRp
b24uCitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFNodWZmbGVUcnVlKSB7CiAgIGNvbnN0IGNoYXIq
IGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfc2h1ZmZsZT0xIiwKQEAg
LTU4NDYsNyArNjMyOCw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFNodWZmbGVUcnVl
KSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9zdGFja190cmFjZV9kZXB0aD1udW1i
ZXIuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBTdGFja1RyYWNlRGVwdGgpIHsKK1RFU1Rf
RihQYXJzZUZsYWdzVGVzdCwgU3RhY2tUcmFjZURlcHRoKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3Zb
XSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfc3RhY2tfdHJhY2VfZGVwdGg9NSIs
CkBAIC01ODYxLDggKzYzNDMsMjQgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU3RhY2tU
cmFjZURlcHRoKSB7CiAgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZs
YWdzOjpTdGFja1RyYWNlRGVwdGgoNSksIGZhbHNlKTsKIH0KIAorVEVTVF9GKFBhcnNlRmxhZ3NU
ZXN0LCBTdHJlYW1SZXN1bHRUbykgeworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgImZv
by5leGUiLAorICAgICItLWd0ZXN0X3N0cmVhbV9yZXN1bHRfdG89bG9jYWxob3N0OjEyMzQiLAor
ICAgIE5VTEwKKyAgfTsKKworICBjb25zdCBjaGFyKiBhcmd2MltdID0geworICAgICJmb28uZXhl
IiwKKyAgICBOVUxMCisgIH07CisKKyAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXygKKyAgICAg
IGFyZ3YsIGFyZ3YyLCBGbGFnczo6U3RyZWFtUmVzdWx0VG8oImxvY2FsaG9zdDoxMjM0IiksIGZh
bHNlKTsKK30KKwogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmUuCi1U
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBUaHJvd09uRmFpbHVyZVdpdGhvdXRWYWx1ZSkgewor
VEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBUaHJvd09uRmFpbHVyZVdpdGhvdXRWYWx1ZSkgewogICBj
b25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X3Rocm93
X29uX2ZhaWx1cmUiLApAQCAtNTg3OCw3ICs2Mzc2LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0
VGVzdCwgVGhyb3dPbkZhaWx1cmVXaXRob3V0VmFsdWUpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2lu
ZyAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmU9MC4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3Qs
IFRocm93T25GYWlsdXJlRmFsc2VfMCkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBUaHJvd09u
RmFpbHVyZUZhbHNlXzApIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhl
IiwKICAgICAiLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlPTAiLApAQCAtNTg5NSw3ICs2MzkzLDcg
QEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgVGhyb3dPbkZhaWx1cmVGYWxzZV8wKSB7CiAK
IC8vIFRlc3RzIHBhcnNpbmcgYSAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmUgZmxhZyB0aGF0IGhh
cyBhICJ0cnVlIgogLy8gZGVmaW5pdGlvbi4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFRo
cm93T25GYWlsdXJlVHJ1ZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBUaHJvd09uRmFpbHVy
ZVRydWUpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAi
LS1ndGVzdF90aHJvd19vbl9mYWlsdXJlPTEiLApAQCAtNTkxMCw5ICs2NDA4LDkgQEAgVEVTVF9G
KEluaXRHb29nbGVUZXN0VGVzdCwgVGhyb3dPbkZhaWx1cmVUcnVlKSB7CiAgIEdURVNUX1RFU1Rf
UEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpUaHJvd09uRmFpbHVyZSh0cnVlKSwg
ZmFsc2UpOwogfQogCi0jaWYgR1RFU1RfT1NfV0lORE9XUworIyBpZiBHVEVTVF9PU19XSU5ET1dT
CiAvLyBUZXN0cyBwYXJzaW5nIHdpZGUgc3RyaW5ncy4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRl
c3QsIFdpZGVTdHJpbmdzKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFdpZGVTdHJpbmdzKSB7
CiAgIGNvbnN0IHdjaGFyX3QqIGFyZ3ZbXSA9IHsKICAgICBMImZvby5leGUiLAogICAgIEwiLS1n
dGVzdF9maWx0ZXI9Rm9vKiIsCkBAIC01OTM1LDcgKzY0MzMsMTA4IEBAIFRFU1RfRihJbml0R29v
Z2xlVGVzdFRlc3QsIFdpZGVTdHJpbmdzKSB7CiAKICAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdT
Xyhhcmd2LCBhcmd2MiwgZXhwZWN0ZWRfZmxhZ3MsIGZhbHNlKTsKIH0KLSNlbmRpZiAgLy8gR1RF
U1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjaWYgR1RFU1Rf
VVNFX09XTl9GTEFHRklMRV9GTEFHXworY2xhc3MgRmxhZ2ZpbGVUZXN0IDogcHVibGljIFBhcnNl
RmxhZ3NUZXN0IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBQYXJz
ZUZsYWdzVGVzdDo6U2V0VXAoKTsKKworICAgIHRlc3RkYXRhX3BhdGhfLlNldChpbnRlcm5hbDo6
RmlsZVBhdGgoCisgICAgICAgIHRlc3Rpbmc6OlRlbXBEaXIoKSArIGludGVybmFsOjpHZXRDdXJy
ZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmcoKSArCisgICAgICAgICJfZmxhZ2ZpbGVfdGVzdCIp
KTsKKyAgICB0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhfLmNf
c3RyKCkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RkYXRhX3BhdGhfLkNyZWF0ZUZvbGRlcigpKTsK
KyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICB0ZXN0aW5nOjppbnRlcm5h
bDo6cG9zaXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhfLmNfc3RyKCkpOworICAgIFBhcnNlRmxhZ3NU
ZXN0OjpUZWFyRG93bigpOworICB9CisKKyAgaW50ZXJuYWw6OkZpbGVQYXRoIENyZWF0ZUZsYWdm
aWxlKGNvbnN0IGNoYXIqIGNvbnRlbnRzKSB7CisgICAgaW50ZXJuYWw6OkZpbGVQYXRoIGZpbGVf
cGF0aChpbnRlcm5hbDo6RmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5hbWUoCisgICAgICAg
IHRlc3RkYXRhX3BhdGhfLCBpbnRlcm5hbDo6RmlsZVBhdGgoInVuaXF1ZSIpLCAidHh0IikpOwor
ICAgIEZJTEUqIGYgPSB0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OkZPcGVuKGZpbGVfcGF0aC5j
X3N0cigpLCAidyIpOworICAgIGZwcmludGYoZiwgIiVzIiwgY29udGVudHMpOworICAgIGZjbG9z
ZShmKTsKKyAgICByZXR1cm4gZmlsZV9wYXRoOworICB9CisKKyBwcml2YXRlOgorICBpbnRlcm5h
bDo6RmlsZVBhdGggdGVzdGRhdGFfcGF0aF87Cit9OworCisvLyBUZXN0cyBhbiBlbXB0eSBmbGFn
ZmlsZS4KK1RFU1RfRihGbGFnZmlsZVRlc3QsIEVtcHR5KSB7CisgIGludGVybmFsOjpGaWxlUGF0
aCBmbGFnZmlsZV9wYXRoKENyZWF0ZUZsYWdmaWxlKCIiKSk7CisgIHN0ZDo6c3RyaW5nIGZsYWdm
aWxlX2ZsYWcgPQorICAgICAgc3RkOjpzdHJpbmcoIi0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImZs
YWdmaWxlPSIpICsgZmxhZ2ZpbGVfcGF0aC5jX3N0cigpOworCisgIGNvbnN0IGNoYXIqIGFyZ3Zb
XSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgZmxhZ2ZpbGVfZmxhZy5jX3N0cigpLAorICAgIE5V
TEwKKyAgfTsKKworICBjb25zdCBjaGFyKiBhcmd2MltdID0geworICAgICJmb28uZXhlIiwKKyAg
ICBOVUxMCisgIH07CisKKyAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2Miwg
RmxhZ3MoKSwgZmFsc2UpOworfQorCisvLyBUZXN0cyBwYXNzaW5nIGEgbm9uLWVtcHR5IC0tZ3Rl
c3RfZmlsdGVyIGZsYWcgdmlhIC0tZ3Rlc3RfZmxhZ2ZpbGUuCitURVNUX0YoRmxhZ2ZpbGVUZXN0
LCBGaWx0ZXJOb25FbXB0eSkgeworICBpbnRlcm5hbDo6RmlsZVBhdGggZmxhZ2ZpbGVfcGF0aChD
cmVhdGVGbGFnZmlsZSgKKyAgICAgICItLSIgIEdURVNUX0ZMQUdfUFJFRklYXyAgImZpbHRlcj1h
YmMiKSk7CisgIHN0ZDo6c3RyaW5nIGZsYWdmaWxlX2ZsYWcgPQorICAgICAgc3RkOjpzdHJpbmco
Ii0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImZsYWdmaWxlPSIpICsgZmxhZ2ZpbGVfcGF0aC5jX3N0
cigpOworCisgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgZmxh
Z2ZpbGVfZmxhZy5jX3N0cigpLAorICAgIE5VTEwKKyAgfTsKKworICBjb25zdCBjaGFyKiBhcmd2
MltdID0geworICAgICJmb28uZXhlIiwKKyAgICBOVUxMCisgIH07CisKKyAgR1RFU1RfVEVTVF9Q
QVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OkZpbHRlcigiYWJjIiksIGZhbHNlKTsK
K30KKworLy8gVGVzdHMgcGFzc2luZyBzZXZlcmFsIGZsYWdzIHZpYSAtLWd0ZXN0X2ZsYWdmaWxl
LgorVEVTVF9GKEZsYWdmaWxlVGVzdCwgU2V2ZXJhbEZsYWdzKSB7CisgIGludGVybmFsOjpGaWxl
UGF0aCBmbGFnZmlsZV9wYXRoKENyZWF0ZUZsYWdmaWxlKAorICAgICAgIi0tIiAgR1RFU1RfRkxB
R19QUkVGSVhfICAiZmlsdGVyPWFiY1xuIgorICAgICAgIi0tIiAgR1RFU1RfRkxBR19QUkVGSVhf
ICAiYnJlYWtfb25fZmFpbHVyZVxuIgorICAgICAgIi0tIiAgR1RFU1RfRkxBR19QUkVGSVhfICAi
bGlzdF90ZXN0cyIpKTsKKyAgc3RkOjpzdHJpbmcgZmxhZ2ZpbGVfZmxhZyA9CisgICAgICBzdGQ6
OnN0cmluZygiLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiZmxhZ2ZpbGU9IikgKyBmbGFnZmlsZV9w
YXRoLmNfc3RyKCk7CisKKyAgY29uc3QgY2hhciogYXJndltdID0geworICAgICJmb28uZXhlIiwK
KyAgICBmbGFnZmlsZV9mbGFnLmNfc3RyKCksCisgICAgTlVMTAorICB9OworCisgIGNvbnN0IGNo
YXIqIGFyZ3YyW10gPSB7CisgICAgImZvby5leGUiLAorICAgIE5VTEwKKyAgfTsKKworICBGbGFn
cyBleHBlY3RlZF9mbGFnczsKKyAgZXhwZWN0ZWRfZmxhZ3MuYnJlYWtfb25fZmFpbHVyZSA9IHRy
dWU7CisgIGV4cGVjdGVkX2ZsYWdzLmZpbHRlciA9ICJhYmMiOworICBleHBlY3RlZF9mbGFncy5s
aXN0X3Rlc3RzID0gdHJ1ZTsKKworICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFy
Z3YyLCBleHBlY3RlZF9mbGFncywgZmFsc2UpOworfQorI2VuZGlmICAvLyBHVEVTVF9VU0VfT1dO
X0ZMQUdGSUxFX0ZMQUdfCiAKIC8vIFRlc3RzIGN1cnJlbnRfdGVzdF9pbmZvKCkgaW4gVW5pdFRl
c3QuCiBjbGFzcyBDdXJyZW50VGVzdEluZm9UZXN0IDogcHVibGljIFRlc3QgewpAQCAtNTk5MCw2
ICs2NTg5LDcgQEAgVEVTVF9GKEN1cnJlbnRUZXN0SW5mb1Rlc3QsIFdvcmtzRm9yU2Vjb25kVGVz
dEluQVRlc3RDYXNlKSB7CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAKKwogLy8gVGhlc2Ug
dHdvIGxpbmVzIHRlc3QgdGhhdCB3ZSBjYW4gZGVmaW5lIHRlc3RzIGluIGEgbmFtZXNwYWNlIHRo
YXQKIC8vIGhhcyB0aGUgbmFtZSAidGVzdGluZyIgYW5kIGlzIG5lc3RlZCBpbiBhbm90aGVyIG5h
bWVzcGFjZS4KIG5hbWVzcGFjZSBteV9uYW1lc3BhY2UgewpAQCAtNjA0OCw3ICs2NjQ4LDcgQEAg
VEVTVChTdHJlYW1pbmdBc3NlcnRpb25zVGVzdCwgVW5jb25kaXRpb25hbCkgewogCiAjaWZkZWYg
X19CT1JMQU5EQ19fCiAvLyBTaWxlbmNlcyB3YXJuaW5nczogIkNvbmRpdGlvbiBpcyBhbHdheXMg
dHJ1ZSIsICJVbnJlYWNoYWJsZSBjb2RlIgotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXct
cmNoCisjIHByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCiAjZW5kaWYKIAogVEVTVChT
dHJlYW1pbmdBc3NlcnRpb25zVGVzdCwgVHJ1dGgpIHsKQEAgLTYwNzAsOCArNjY3MCw4IEBAIFRF
U1QoU3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIFRydXRoMikgewogfQogCiAjaWZkZWYgX19CT1JM
QU5EQ19fCi0vLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2aW91cyAiI3ByYWdtYSBvcHRp
b24gcHVzaCIgc3VwcmVzc2VkIHRoZW0KLSNwcmFnbWEgb3B0aW9uIHBvcAorLy8gUmVzdG9yZXMg
d2FybmluZ3MgYWZ0ZXIgcHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHByZXNzZWQg
dGhlbQorIyBwcmFnbWEgb3B0aW9uIHBvcAogI2VuZGlmCiAKIFRFU1QoU3RyZWFtaW5nQXNzZXJ0
aW9uc1Rlc3QsIEludGVnZXJFcXVhbHMpIHsKQEAgLTYyNjQsMTUgKzY4NjQsNDAgQEAgVEVTVChD
b2xvcmVkT3V0cHV0VGVzdCwgVXNlc0NvbG9yc1doZW5UZXJtU3VwcG9ydHNDb2xvcnMpIHsKICAg
U2V0RW52KCJURVJNIiwgInh0ZXJtLWNvbG9yIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4K
ICAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZ
LgogCisgIFNldEVudigiVEVSTSIsICJ4dGVybS0yNTZjb2xvciIpOyAgLy8gVEVSTSBzdXBwb3J0
cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91
dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAic2NyZWVuIik7ICAvLyBURVJNIHN1cHBv
cnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rk
b3V0IGlzIGEgVFRZLgorCisgIFNldEVudigiVEVSTSIsICJzY3JlZW4tMjU2Y29sb3IiKTsgIC8v
IFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVl
KSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInRtdXgiKTsgIC8v
IFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVl
KSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInRtdXgtMjU2Y29s
b3IiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VD
b2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInJ4
dnQtdW5pY29kZSIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNo
b3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRF
Uk0iLCAicnh2dC11bmljb2RlLTI1NmNvbG9yIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4K
KyAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZ
LgorCiAgIFNldEVudigiVEVSTSIsICJsaW51eCIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMu
CiAgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRU
WS4KKworICBTZXRFbnYoIlRFUk0iLCAiY3lnd2luIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9y
cy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEg
VFRZLgogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiB9CiAKIC8vIFZlcmlmaWVzIHRoYXQg
U3RhdGljQXNzZXJ0VHlwZUVxIHdvcmtzIGluIGEgbmFtZXNwYWNlIHNjb3BlLgogCi1zdGF0aWMg
Ym9vbCBkdW1teTEgPSBTdGF0aWNBc3NlcnRUeXBlRXE8Ym9vbCwgYm9vbD4oKTsKLXN0YXRpYyBi
b29sIGR1bW15MiA9IFN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCBpbnQsIGNvbnN0IGludD4oKTsK
K3N0YXRpYyBib29sIGR1bW15MSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9IFN0YXRpY0Fzc2Vy
dFR5cGVFcTxib29sLCBib29sPigpOworc3RhdGljIGJvb2wgZHVtbXkyIEdURVNUX0FUVFJJQlVU
RV9VTlVTRURfID0KKyAgICBTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgaW50LCBjb25zdCBpbnQ+
KCk7CiAKIC8vIFZlcmlmaWVzIHRoYXQgU3RhdGljQXNzZXJ0VHlwZUVxIHdvcmtzIGluIGEgY2xh
c3MuCiAKQEAgLTYyOTUsMTQgKzY5MjAsNiBAQCBURVNUKFN0YXRpY0Fzc2VydFR5cGVFcVRlc3Qs
IENvbXBpbGVzRm9yRXF1YWxUeXBlcykgewogICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50KiwgSW50
QWxpYXMqPigpOwogfQogCi1URVNUKEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3BUZXN0
LCBSZXR1cm5zVGhlU3RhY2tUcmFjZSkgewotICB0ZXN0aW5nOjpVbml0VGVzdCogY29uc3QgdW5p
dF90ZXN0ID0gdGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCk7Ci0KLSAgLy8gV2UgZG9u
J3QgaGF2ZSBhIHN0YWNrIHdhbGtlciBpbiBHb29nbGUgVGVzdCB5ZXQuCi0gIEVYUEVDVF9TVFJF
USgiIiwgR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCh1bml0X3Rlc3QsIDApLmNfc3Ry
KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3Ao
dW5pdF90ZXN0LCAxKS5jX3N0cigpKTsKLX0KLQogVEVTVChIYXNOb25mYXRhbEZhaWx1cmVUZXN0
LCBSZXR1cm5zRmFsc2VXaGVuVGhlcmVJc05vRmFpbHVyZSkgewogICBFWFBFQ1RfRkFMU0UoSGFz
Tm9uZmF0YWxGYWlsdXJlKCkpOwogfQpAQCAtNjQ2Niw3ICs3MDgzLDcgQEAgVEVTVChUZXN0RXZl
bnRMaXN0ZW5lcnNUZXN0LCBBcHBlbmQpIHsKIC8vIG9yZGVyLgogY2xhc3MgU2VxdWVuY2VUZXN0
aW5nTGlzdGVuZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CiAgcHVibGljOgot
ICBTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lcihzdGQ6OnZlY3RvcjxTdHJpbmc+KiB2ZWN0b3IsIGNv
bnN0IGNoYXIqIGlkKQorICBTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lcihzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4qIHZlY3RvciwgY29uc3QgY2hhciogaWQpCiAgICAgICA6IHZlY3Rvcl8odmVjdG9y
KSwgaWRfKGlkKSB7fQogCiAgcHJvdGVjdGVkOgpAQCAtNjQ4OSwyMCArNzEwNiwyMCBAQCBjbGFz
cyBTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVy
IHsKICAgfQogCiAgcHJpdmF0ZToKLSAgU3RyaW5nIEdldEV2ZW50RGVzY3JpcHRpb24oY29uc3Qg
Y2hhciogbWV0aG9kKSB7CisgIHN0ZDo6c3RyaW5nIEdldEV2ZW50RGVzY3JpcHRpb24oY29uc3Qg
Y2hhciogbWV0aG9kKSB7CiAgICAgTWVzc2FnZSBtZXNzYWdlOwogICAgIG1lc3NhZ2UgPDwgaWRf
IDw8ICIuIiA8PCBtZXRob2Q7CiAgICAgcmV0dXJuIG1lc3NhZ2UuR2V0U3RyaW5nKCk7CiAgIH0K
IAotICBzdGQ6OnZlY3RvcjxTdHJpbmc+KiB2ZWN0b3JfOworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4qIHZlY3Rvcl87CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGlkXzsKIAogICBHVEVTVF9ESVNB
TExPV19DT1BZX0FORF9BU1NJR05fKFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyKTsKIH07CiAKIFRF
U1QoRXZlbnRMaXN0ZW5lclRlc3QsIEFwcGVuZEtlZXBzT3JkZXIpIHsKLSAgc3RkOjp2ZWN0b3I8
U3RyaW5nPiB2ZWM7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2ZWM7CiAgIFRlc3RFdmVu
dExpc3RlbmVycyBsaXN0ZW5lcnM7CiAgIGxpc3RlbmVycy5BcHBlbmQobmV3IFNlcXVlbmNlVGVz
dGluZ0xpc3RlbmVyKCZ2ZWMsICIxc3QiKSk7CiAgIGxpc3RlbmVycy5BcHBlbmQobmV3IFNlcXVl
bmNlVGVzdGluZ0xpc3RlbmVyKCZ2ZWMsICIybmQiKSk7CkBAIC02NzE1LDQgKzczMzIsNDY0IEBA
IEdURVNUX1RFU1QoQWx0ZXJuYXRpdmVOYW1lVGVzdCwgV29ya3MpIHsgIC8vIEdURVNUX1RFU1Qg
aXMgdGhlIHNhbWUgYXMgVEVTVC4KICAgLy8gR1RFU1RfRkFJTCBpcyB0aGUgc2FtZSBhcyBGQUlM
LgogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9GQUlMKCkgPDwgIkFuIGV4cGVjdGVkIGZh
aWx1cmUiLAogICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOwor
CisgIC8vIEdURVNUX0FTU0VSVF9YWSBpcyB0aGUgc2FtZSBhcyBBU1NFUlRfWFkuCisKKyAgR1RF
U1RfQVNTRVJUX0VRKDAsIDApOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRf
RVEoMCwgMSkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAg
ICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9B
U1NFUlRfRVEoMSwgMCkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAg
ICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworCisgIEdURVNUX0FTU0VSVF9ORSgwLCAx
KTsKKyAgR1RFU1RfQVNTRVJUX05FKDEsIDApOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVT
VF9BU1NFUlRfTkUoMCwgMCkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAg
ICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworCisgIEdURVNUX0FTU0VSVF9MRSgw
LCAwKTsKKyAgR1RFU1RfQVNTRVJUX0xFKDAsIDEpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShH
VEVTVF9BU1NFUlRfTEUoMSwgMCkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAg
ICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworCisgIEdURVNUX0FTU0VSVF9M
VCgwLCAxKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0xUKDAsIDApIDw8
ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVj
dGVkIGZhaWx1cmUiKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0xUKDEs
IDApIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFu
IGV4cGVjdGVkIGZhaWx1cmUiKTsKKworICBHVEVTVF9BU1NFUlRfR0UoMCwgMCk7CisgIEdURVNU
X0FTU0VSVF9HRSgxLCAwKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0dF
KDAsIDEpIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKworICBHVEVTVF9BU1NFUlRfR1QoMSwgMCk7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKEdURVNUX0FTU0VSVF9HVCgwLCAxKSA8PCAiQW4gZXhwZWN0ZWQg
ZmFpbHVyZSIsCisgICAgICAgICAgICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7
CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdURVNUX0FTU0VSVF9HVCgxLCAxKSA8PCAiQW4gZXhw
ZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAgICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWls
dXJlIik7Cit9CisKKy8vIFRlc3RzIGZvciBpbnRlcm5hbCB1dGlsaXRpZXMgbmVjZXNzYXJ5IGZv
ciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgdW5pdmVyc2FsCisvLyBwcmludGluZy4KKy8vIEZJWE1F
OiBGaW5kIGEgYmV0dGVyIGhvbWUgZm9yIHRoZW0uCisKK2NsYXNzIENvbnZlcnNpb25IZWxwZXJC
YXNlIHt9OworY2xhc3MgQ29udmVyc2lvbkhlbHBlckRlcml2ZWQgOiBwdWJsaWMgQ29udmVyc2lv
bkhlbHBlckJhc2Uge307CisKKy8vIFRlc3RzIHRoYXQgSXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2
YWx1ZSBpcyBhIGNvbXBpbGUtdGltZSBjb25zdGFudC4KK1RFU1QoSXNBUHJvdG9jb2xNZXNzYWdl
VGVzdCwgVmFsdWVJc0NvbXBpbGVUaW1lQ29uc3RhbnQpIHsKKyAgR1RFU1RfQ09NUElMRV9BU1NF
UlRfKElzQVByb3RvY29sTWVzc2FnZTxQcm90b2NvbE1lc3NhZ2U+Ojp2YWx1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0X3RydWUpOworICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oIUlz
QVByb3RvY29sTWVzc2FnZTxpbnQ+Ojp2YWx1ZSwgY29uc3RfZmFsc2UpOworfQorCisvLyBUZXN0
cyB0aGF0IElzQVByb3RvY29sTWVzc2FnZTxUPjo6dmFsdWUgaXMgdHJ1ZSB3aGVuIFQgaXMKKy8v
IHByb3RvMjo6TWVzc2FnZSBvciBhIHN1Yi1jbGFzcyBvZiBpdC4KK1RFU1QoSXNBUHJvdG9jb2xN
ZXNzYWdlVGVzdCwgVmFsdWVJc1RydWVXaGVuVHlwZUlzQVByb3RvY29sTWVzc2FnZSkgeworICBF
WFBFQ1RfVFJVRShJc0FQcm90b2NvbE1lc3NhZ2U8IDo6cHJvdG8yOjpNZXNzYWdlPjo6dmFsdWUp
OworICBFWFBFQ1RfVFJVRShJc0FQcm90b2NvbE1lc3NhZ2U8UHJvdG9jb2xNZXNzYWdlPjo6dmFs
dWUpOworfQorCisvLyBUZXN0cyB0aGF0IElzQVByb3RvY29sTWVzc2FnZTxUPjo6dmFsdWUgaXMg
ZmFsc2Ugd2hlbiBUIGlzIG5laXRoZXIKKy8vIFByb3RvY29sTWVzc2FnZSBub3IgYSBzdWItY2xh
c3Mgb2YgaXQuCitURVNUKElzQVByb3RvY29sTWVzc2FnZVRlc3QsIFZhbHVlSXNGYWxzZVdoZW5U
eXBlSXNOb3RBUHJvdG9jb2xNZXNzYWdlKSB7CisgIEVYUEVDVF9GQUxTRShJc0FQcm90b2NvbE1l
c3NhZ2U8aW50Pjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0UoSXNBUHJvdG9jb2xNZXNzYWdlPGNv
bnN0IENvbnZlcnNpb25IZWxwZXJCYXNlPjo6dmFsdWUpOworfQorCisvLyBUZXN0cyB0aGF0IENv
bXBpbGVBc3NlcnRUeXBlc0VxdWFsIGNvbXBpbGVzIHdoZW4gdGhlIHR5cGUgYXJndW1lbnRzIGFy
ZQorLy8gZXF1YWwuCitURVNUKENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsLCBDb21waWxlc1doZW5U
eXBlc0FyZUVxdWFsKSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPHZvaWQsIHZvaWQ+KCk7
CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCosIGludCo+KCk7Cit9CisKKy8vIFRlc3Rz
IHRoYXQgUmVtb3ZlUmVmZXJlbmNlIGRvZXMgbm90IGFmZmVjdCBub24tcmVmZXJlbmNlIHR5cGVz
LgorVEVTVChSZW1vdmVSZWZlcmVuY2VUZXN0LCBEb2VzTm90QWZmZWN0Tm9uUmVmZXJlbmNlVHlw
ZSkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQsIFJlbW92ZVJlZmVyZW5jZTxpbnQ+
Ojp0eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjb25zdCBjaGFyLCBSZW1vdmVS
ZWZlcmVuY2U8Y29uc3QgY2hhcj46OnR5cGU+KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUmVtb3Zl
UmVmZXJlbmNlIHJlbW92ZXMgcmVmZXJlbmNlIGZyb20gcmVmZXJlbmNlIHR5cGVzLgorVEVTVChS
ZW1vdmVSZWZlcmVuY2VUZXN0LCBSZW1vdmVzUmVmZXJlbmNlKSB7CisgIENvbXBpbGVBc3NlcnRU
eXBlc0VxdWFsPGludCwgUmVtb3ZlUmVmZXJlbmNlPGludCY+Ojp0eXBlPigpOworICBDb21waWxl
QXNzZXJ0VHlwZXNFcXVhbDxjb25zdCBjaGFyLCBSZW1vdmVSZWZlcmVuY2U8Y29uc3QgY2hhciY+
Ojp0eXBlPigpOworfQorCisvLyBUZXN0cyBHVEVTVF9SRU1PVkVfUkVGRVJFTkNFXy4KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgVGVzdEdUZXN0UmVtb3ZlUmVm
ZXJlbmNlKCkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxUMSwgR1RFU1RfUkVNT1ZFX1JF
RkVSRU5DRV8oVDIpPigpOworfQorCitURVNUKFJlbW92ZVJlZmVyZW5jZVRlc3QsIE1hY3JvVmVy
c2lvbikgeworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2U8aW50LCBpbnQ+KCk7CisgIFRlc3RH
VGVzdFJlbW92ZVJlZmVyZW5jZTxjb25zdCBjaGFyLCBjb25zdCBjaGFyJj4oKTsKK30KKworCisv
LyBUZXN0cyB0aGF0IFJlbW92ZUNvbnN0IGRvZXMgbm90IGFmZmVjdCBub24tY29uc3QgdHlwZXMu
CitURVNUKFJlbW92ZUNvbnN0VGVzdCwgRG9lc05vdEFmZmVjdE5vbkNvbnN0VHlwZSkgeworICBD
b21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQsIFJlbW92ZUNvbnN0PGludD46OnR5cGU+KCk7Cisg
IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNoYXImLCBSZW1vdmVDb25zdDxjaGFyJj46OnR5cGU+
KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUmVtb3ZlQ29uc3QgcmVtb3ZlcyBjb25zdCBmcm9tIGNv
bnN0IHR5cGVzLgorVEVTVChSZW1vdmVDb25zdFRlc3QsIFJlbW92ZXNDb25zdCkgeworICBDb21w
aWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQsIFJlbW92ZUNvbnN0PGNvbnN0IGludD46OnR5cGU+KCk7
CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNoYXJbMl0sIFJlbW92ZUNvbnN0PGNvbnN0IGNo
YXJbMl0+Ojp0eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjaGFyWzJdWzNdLCBS
ZW1vdmVDb25zdDxjb25zdCBjaGFyWzJdWzNdPjo6dHlwZT4oKTsKK30KKworLy8gVGVzdHMgR1RF
U1RfUkVNT1ZFX0NPTlNUXy4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4K
K3ZvaWQgVGVzdEdUZXN0UmVtb3ZlQ29uc3QoKSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFs
PFQxLCBHVEVTVF9SRU1PVkVfQ09OU1RfKFQyKT4oKTsKK30KKworVEVTVChSZW1vdmVDb25zdFRl
c3QsIE1hY3JvVmVyc2lvbikgeworICBUZXN0R1Rlc3RSZW1vdmVDb25zdDxpbnQsIGludD4oKTsK
KyAgVGVzdEdUZXN0UmVtb3ZlQ29uc3Q8ZG91YmxlJiwgZG91YmxlJj4oKTsKKyAgVGVzdEdUZXN0
UmVtb3ZlQ29uc3Q8Y2hhciwgY29uc3QgY2hhcj4oKTsKK30KKworLy8gVGVzdHMgR1RFU1RfUkVN
T1ZFX1JFRkVSRU5DRV9BTkRfQ09OU1RfLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyPgordm9pZCBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdCgpIHsKKyAgQ29t
cGlsZUFzc2VydFR5cGVzRXF1YWw8VDEsIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNU
XyhUMik+KCk7Cit9CisKK1RFU1QoUmVtb3ZlUmVmZXJlbmNlVG9Db25zdFRlc3QsIFdvcmtzKSB7
CisgIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0PGludCwgaW50PigpOworICBUZXN0
R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxkb3VibGUsIGRvdWJsZSY+KCk7CisgIFRlc3RH
VGVzdFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0PGNoYXIsIGNvbnN0IGNoYXI+KCk7CisgIFRlc3RH
VGVzdFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0PGNoYXIsIGNvbnN0IGNoYXImPigpOworICBUZXN0
R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxjb25zdCBjaGFyKiwgY29uc3QgY2hhcio+KCk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgQWRkUmVmZXJlbmNlIGRvZXMgbm90IGFmZmVjdCByZWZlcmVu
Y2UgdHlwZXMuCitURVNUKEFkZFJlZmVyZW5jZVRlc3QsIERvZXNOb3RBZmZlY3RSZWZlcmVuY2VU
eXBlKSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCYsIEFkZFJlZmVyZW5jZTxpbnQm
Pjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y29uc3QgY2hhciYsIEFkZFJl
ZmVyZW5jZTxjb25zdCBjaGFyJj46OnR5cGU+KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQWRkUmVm
ZXJlbmNlIGFkZHMgcmVmZXJlbmNlIHRvIG5vbi1yZWZlcmVuY2UgdHlwZXMuCitURVNUKEFkZFJl
ZmVyZW5jZVRlc3QsIEFkZHNSZWZlcmVuY2UpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8
aW50JiwgQWRkUmVmZXJlbmNlPGludD46OnR5cGU+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0Vx
dWFsPGNvbnN0IGNoYXImLCBBZGRSZWZlcmVuY2U8Y29uc3QgY2hhcj46OnR5cGU+KCk7Cit9CisK
Ky8vIFRlc3RzIEdURVNUX0FERF9SRUZFUkVOQ0VfLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEs
IHR5cGVuYW1lIFQyPgordm9pZCBUZXN0R1Rlc3RBZGRSZWZlcmVuY2UoKSB7CisgIENvbXBpbGVB
c3NlcnRUeXBlc0VxdWFsPFQxLCBHVEVTVF9BRERfUkVGRVJFTkNFXyhUMik+KCk7Cit9CisKK1RF
U1QoQWRkUmVmZXJlbmNlVGVzdCwgTWFjcm9WZXJzaW9uKSB7CisgIFRlc3RHVGVzdEFkZFJlZmVy
ZW5jZTxpbnQmLCBpbnQ+KCk7CisgIFRlc3RHVGVzdEFkZFJlZmVyZW5jZTxjb25zdCBjaGFyJiwg
Y29uc3QgY2hhciY+KCk7Cit9CisKKy8vIFRlc3RzIEdURVNUX1JFRkVSRU5DRV9UT19DT05TVF8u
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lkIFRlc3RHVGVzdFJl
ZmVyZW5jZVRvQ29uc3QoKSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBHVEVTVF9S
RUZFUkVOQ0VfVE9fQ09OU1RfKFQyKT4oKTsKK30KKworVEVTVChHVGVzdFJlZmVyZW5jZVRvQ29u
c3RUZXN0LCBXb3JrcykgeworICBUZXN0R1Rlc3RSZWZlcmVuY2VUb0NvbnN0PGNvbnN0IGNoYXIm
LCBjaGFyPigpOworICBUZXN0R1Rlc3RSZWZlcmVuY2VUb0NvbnN0PGNvbnN0IGludCYsIGNvbnN0
IGludD4oKTsKKyAgVGVzdEdUZXN0UmVmZXJlbmNlVG9Db25zdDxjb25zdCBkb3VibGUmLCBkb3Vi
bGU+KCk7CisgIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29uc3Q8Y29uc3Qgc3RkOjpzdHJpbmcmLCBj
b25zdCBzdGQ6OnN0cmluZyY+KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgSW1wbGljaXRseUNvbnZl
cnRpYmxlPFQxLCBUMj46OnZhbHVlIGlzIGEgY29tcGlsZS10aW1lIGNvbnN0YW50LgorVEVTVChJ
bXBsaWNpdGx5Q29udmVydGlibGVUZXN0LCBWYWx1ZUlzQ29tcGlsZVRpbWVDb25zdGFudCkgewor
ICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxpbnQsIGludD46
OnZhbHVlKSwgY29uc3RfdHJ1ZSk7CisgIEdURVNUX0NPTVBJTEVfQVNTRVJUXygoIUltcGxpY2l0
bHlDb252ZXJ0aWJsZTx2b2lkKiwgaW50Kj46OnZhbHVlKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0X2ZhbHNlKTsKK30KKworLy8gVGVzdHMgdGhhdCBJbXBsaWNpdGx5Q29udmVydGli
bGU8VDEsIFQyPjo6dmFsdWUgaXMgdHJ1ZSB3aGVuIFQxIGNhbgorLy8gYmUgaW1wbGljaXRseSBj
b252ZXJ0ZWQgdG8gVDIuCitURVNUKEltcGxpY2l0bHlDb252ZXJ0aWJsZVRlc3QsIFZhbHVlSXNU
cnVlV2hlbkNvbnZlcnRpYmxlKSB7CisgIEVYUEVDVF9UUlVFKChJbXBsaWNpdGx5Q29udmVydGli
bGU8aW50LCBkb3VibGU+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoSW1wbGljaXRseUNvbnZl
cnRpYmxlPGRvdWJsZSwgaW50Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKEltcGxpY2l0bHlD
b252ZXJ0aWJsZTxpbnQqLCB2b2lkKj46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChJbXBsaWNp
dGx5Q29udmVydGlibGU8aW50KiwgY29uc3QgaW50Kj46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVF
KChJbXBsaWNpdGx5Q29udmVydGlibGU8Q29udmVyc2lvbkhlbHBlckRlcml2ZWQmLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnZlcnNpb25IZWxwZXJCYXNl
Jj46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChJbXBsaWNpdGx5Q29udmVydGlibGU8Y29uc3Qg
Q29udmVyc2lvbkhlbHBlckJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29udmVyc2lvbkhlbHBlckJhc2U+Ojp2YWx1ZSkpOworfQorCisvLyBUZXN0cyB0aGF0IElt
cGxpY2l0bHlDb252ZXJ0aWJsZTxUMSwgVDI+Ojp2YWx1ZSBpcyBmYWxzZSB3aGVuIFQxCisvLyBj
YW5ub3QgYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gVDIuCitURVNUKEltcGxpY2l0bHlDb252
ZXJ0aWJsZVRlc3QsIFZhbHVlSXNGYWxzZVdoZW5Ob3RDb252ZXJ0aWJsZSkgeworICBFWFBFQ1Rf
RkFMU0UoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxkb3VibGUsIGludCo+Ojp2YWx1ZSkpOworICBF
WFBFQ1RfRkFMU0UoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTx2b2lkKiwgaW50Kj46OnZhbHVlKSk7
CisgIEVYUEVDVF9GQUxTRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPGNvbnN0IGludCosIGludCo+
Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxDb252ZXJz
aW9uSGVscGVyQmFzZSYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
bnZlcnNpb25IZWxwZXJEZXJpdmVkJj46OnZhbHVlKSk7Cit9CisKKy8vIFRlc3RzIElzQ29udGFp
bmVyVGVzdC4KKworY2xhc3MgTm9uQ29udGFpbmVyIHt9OworCitURVNUKElzQ29udGFpbmVyVGVz
dFRlc3QsIFdvcmtzRm9yTm9uQ29udGFpbmVyKSB7CisgIEVYUEVDVF9FUShzaXplb2YoSXNOb3RD
b250YWluZXIpLCBzaXplb2YoSXNDb250YWluZXJUZXN0PGludD4oMCkpKTsKKyAgRVhQRUNUX0VR
KHNpemVvZihJc05vdENvbnRhaW5lciksIHNpemVvZihJc0NvbnRhaW5lclRlc3Q8Y2hhcls1XT4o
MCkpKTsKKyAgRVhQRUNUX0VRKHNpemVvZihJc05vdENvbnRhaW5lciksIHNpemVvZihJc0NvbnRh
aW5lclRlc3Q8Tm9uQ29udGFpbmVyPigwKSkpOworfQorCitURVNUKElzQ29udGFpbmVyVGVzdFRl
c3QsIFdvcmtzRm9yQ29udGFpbmVyKSB7CisgIEVYUEVDVF9FUShzaXplb2YoSXNDb250YWluZXIp
LAorICAgICAgICAgICAgc2l6ZW9mKElzQ29udGFpbmVyVGVzdDxzdGQ6OnZlY3Rvcjxib29sPiA+
KDApKSk7CisgIEVYUEVDVF9FUShzaXplb2YoSXNDb250YWluZXIpLAorICAgICAgICAgICAgc2l6
ZW9mKElzQ29udGFpbmVyVGVzdDxzdGQ6Om1hcDxpbnQsIGRvdWJsZT4gPigwKSkpOworfQorCisj
aWYgR1RFU1RfTEFOR19DWFgxMQorc3RydWN0IENvbnN0T25seUNvbnRhaW5lcldpdGhQb2ludGVy
SXRlcmF0b3IgeworICB1c2luZyBjb25zdF9pdGVyYXRvciA9IGludCo7CisgIGNvbnN0X2l0ZXJh
dG9yIGJlZ2luKCkgY29uc3Q7CisgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0OworfTsKKwor
c3RydWN0IENvbnN0T25seUNvbnRhaW5lcldpdGhDbGFzc0l0ZXJhdG9yIHsKKyAgc3RydWN0IGNv
bnN0X2l0ZXJhdG9yIHsKKyAgICBjb25zdCBpbnQmIG9wZXJhdG9yKigpIGNvbnN0OworICAgIGNv
bnN0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKC8qIHByZS1pbmNyZW1lbnQgKi8pOworICB9OworICBj
b25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0OworICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25z
dDsKK307CisKK1RFU1QoSXNDb250YWluZXJUZXN0VGVzdCwgQ29uc3RPbmx5Q29udGFpbmVyKSB7
CisgIEVYUEVDVF9FUShzaXplb2YoSXNDb250YWluZXIpLAorICAgICAgICAgICAgc2l6ZW9mKElz
Q29udGFpbmVyVGVzdDxDb25zdE9ubHlDb250YWluZXJXaXRoUG9pbnRlckl0ZXJhdG9yPigwKSkp
OworICBFWFBFQ1RfRVEoc2l6ZW9mKElzQ29udGFpbmVyKSwKKyAgICAgICAgICAgIHNpemVvZihJ
c0NvbnRhaW5lclRlc3Q8Q29uc3RPbmx5Q29udGFpbmVyV2l0aENsYXNzSXRlcmF0b3I+KDApKSk7
Cit9CisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKworLy8gVGVzdHMgSXNIYXNoVGFibGUu
CitzdHJ1Y3QgQUhhc2hUYWJsZSB7CisgIHR5cGVkZWYgdm9pZCBoYXNoZXI7Cit9Oworc3RydWN0
IE5vdFJlYWxseUFIYXNoVGFibGUgeworICB0eXBlZGVmIHZvaWQgaGFzaGVyOworICB0eXBlZGVm
IHZvaWQgcmV2ZXJzZV9pdGVyYXRvcjsKK307CitURVNUKElzSGFzaFRhYmxlLCBCYXNpYykgewor
ICBFWFBFQ1RfVFJVRSh0ZXN0aW5nOjppbnRlcm5hbDo6SXNIYXNoVGFibGU8QUhhc2hUYWJsZT46
OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKHRlc3Rpbmc6OmludGVybmFsOjpJc0hhc2hUYWJsZTxO
b3RSZWFsbHlBSGFzaFRhYmxlPjo6dmFsdWUpOworI2lmIEdURVNUX0xBTkdfQ1hYMTEKKyAgRVhQ
RUNUX0ZBTFNFKHRlc3Rpbmc6OmludGVybmFsOjpJc0hhc2hUYWJsZTxzdGQ6OnZlY3RvcjxpbnQ+
Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRSh0ZXN0aW5nOjppbnRlcm5hbDo6SXNIYXNoVGFibGU8
c3RkOjp1bm9yZGVyZWRfc2V0PGludD4+Ojp2YWx1ZSk7CisjZW5kaWYgIC8vIEdURVNUX0xBTkdf
Q1hYMTEKKyNpZiBHVEVTVF9IQVNfSEFTSF9TRVRfCisgIEVYUEVDVF9UUlVFKHRlc3Rpbmc6Omlu
dGVybmFsOjpJc0hhc2hUYWJsZTxfX2dudV9jeHg6Omhhc2hfc2V0PGludD4+Ojp2YWx1ZSk7Cisj
ZW5kaWYgIC8vIEdURVNUX0hBU19IQVNIX1NFVF8KK30KKworLy8gVGVzdHMgQXJyYXlFcSgpLgor
CitURVNUKEFycmF5RXFUZXN0LCBXb3Jrc0ZvckRlZ2VuZXJhdGVkQXJyYXlzKSB7CisgIEVYUEVD
VF9UUlVFKEFycmF5RXEoNSwgNUwpKTsKKyAgRVhQRUNUX0ZBTFNFKEFycmF5RXEoJ2EnLCAwKSk7
Cit9CisKK1RFU1QoQXJyYXlFcVRlc3QsIFdvcmtzRm9yT25lRGltZW5zaW9uYWxBcnJheXMpIHsK
KyAgLy8gTm90ZSB0aGF0IGEgYW5kIGIgYXJlIGRpc3RpbmN0IGJ1dCBjb21wYXRpYmxlIHR5cGVz
LgorICBjb25zdCBpbnQgYVtdID0geyAwLCAxIH07CisgIGxvbmcgYltdID0geyAwLCAxIH07Cisg
IEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYikpOworICBFWFBFQ1RfVFJVRShBcnJheUVxKGEsIDIs
IGIpKTsKKworICBiWzBdID0gMjsKKyAgRVhQRUNUX0ZBTFNFKEFycmF5RXEoYSwgYikpOworICBF
WFBFQ1RfRkFMU0UoQXJyYXlFcShhLCAxLCBiKSk7Cit9CisKK1RFU1QoQXJyYXlFcVRlc3QsIFdv
cmtzRm9yVHdvRGltZW5zaW9uYWxBcnJheXMpIHsKKyAgY29uc3QgY2hhciBhW11bM10gPSB7ICJo
aSIsICJsbyIgfTsKKyAgY29uc3QgY2hhciBiW11bM10gPSB7ICJoaSIsICJsbyIgfTsKKyAgY29u
c3QgY2hhciBjW11bM10gPSB7ICJoaSIsICJsaSIgfTsKKworICBFWFBFQ1RfVFJVRShBcnJheUVx
KGEsIGIpKTsKKyAgRVhQRUNUX1RSVUUoQXJyYXlFcShhLCAyLCBiKSk7CisKKyAgRVhQRUNUX0ZB
TFNFKEFycmF5RXEoYSwgYykpOworICBFWFBFQ1RfRkFMU0UoQXJyYXlFcShhLCAyLCBjKSk7Cit9
CisKKy8vIFRlc3RzIEFycmF5QXdhcmVGaW5kKCkuCisKK1RFU1QoQXJyYXlBd2FyZUZpbmRUZXN0
LCBXb3Jrc0Zvck9uZURpbWVuc2lvbmFsQXJyYXkpIHsKKyAgY29uc3QgY2hhciBhW10gPSAiaGVs
bG8iOworICBFWFBFQ1RfRVEoYSArIDQsIEFycmF5QXdhcmVGaW5kKGEsIGEgKyA1LCAnbycpKTsK
KyAgRVhQRUNUX0VRKGEgKyA1LCBBcnJheUF3YXJlRmluZChhLCBhICsgNSwgJ3gnKSk7Cit9CisK
K1RFU1QoQXJyYXlBd2FyZUZpbmRUZXN0LCBXb3Jrc0ZvclR3b0RpbWVuc2lvbmFsQXJyYXkpIHsK
KyAgaW50IGFbXVsyXSA9IHsgeyAwLCAxIH0sIHsgMiwgMyB9LCB7IDQsIDUgfSB9OworICBjb25z
dCBpbnQgYlsyXSA9IHsgMiwgMyB9OworICBFWFBFQ1RfRVEoYSArIDEsIEFycmF5QXdhcmVGaW5k
KGEsIGEgKyAzLCBiKSk7CisKKyAgY29uc3QgaW50IGNbMl0gPSB7IDYsIDcgfTsKKyAgRVhQRUNU
X0VRKGEgKyAzLCBBcnJheUF3YXJlRmluZChhLCBhICsgMywgYykpOworfQorCisvLyBUZXN0cyBD
b3B5QXJyYXkoKS4KKworVEVTVChDb3B5QXJyYXlUZXN0LCBXb3Jrc0ZvckRlZ2VuZXJhdGVkQXJy
YXlzKSB7CisgIGludCBuID0gMDsKKyAgQ29weUFycmF5KCdhJywgJm4pOworICBFWFBFQ1RfRVEo
J2EnLCBuKTsKK30KKworVEVTVChDb3B5QXJyYXlUZXN0LCBXb3Jrc0Zvck9uZURpbWVuc2lvbmFs
QXJyYXlzKSB7CisgIGNvbnN0IGNoYXIgYVszXSA9ICJoaSI7CisgIGludCBiWzNdOworI2lmbmRl
ZiBfX0JPUkxBTkRDX18gIC8vIEMrK0J1aWxkZXIgY2Fubm90IGNvbXBpbGUgc29tZSBhcnJheSBz
aXplIGRlZHVjdGlvbnMuCisgIENvcHlBcnJheShhLCAmYik7CisgIEVYUEVDVF9UUlVFKEFycmF5
RXEoYSwgYikpOworI2VuZGlmCisKKyAgaW50IGNbM107CisgIENvcHlBcnJheShhLCAzLCBjKTsK
KyAgRVhQRUNUX1RSVUUoQXJyYXlFcShhLCBjKSk7Cit9CisKK1RFU1QoQ29weUFycmF5VGVzdCwg
V29ya3NGb3JUd29EaW1lbnNpb25hbEFycmF5cykgeworICBjb25zdCBpbnQgYVsyXVszXSA9IHsg
eyAwLCAxLCAyIH0sIHsgMywgNCwgNSB9IH07CisgIGludCBiWzJdWzNdOworI2lmbmRlZiBfX0JP
UkxBTkRDX18gIC8vIEMrK0J1aWxkZXIgY2Fubm90IGNvbXBpbGUgc29tZSBhcnJheSBzaXplIGRl
ZHVjdGlvbnMuCisgIENvcHlBcnJheShhLCAmYik7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwg
YikpOworI2VuZGlmCisKKyAgaW50IGNbMl1bM107CisgIENvcHlBcnJheShhLCAyLCBjKTsKKyAg
RVhQRUNUX1RSVUUoQXJyYXlFcShhLCBjKSk7Cit9CisKKy8vIFRlc3RzIE5hdGl2ZUFycmF5Lgor
CitURVNUKE5hdGl2ZUFycmF5VGVzdCwgQ29uc3RydWN0b3JGcm9tQXJyYXlXb3JrcykgeworICBj
b25zdCBpbnQgYVszXSA9IHsgMCwgMSwgMiB9OworICBOYXRpdmVBcnJheTxpbnQ+IG5hKGEsIDMs
IFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSk7CisgIEVYUEVDVF9FUSgzVSwgbmEuc2l6ZSgp
KTsKKyAgRVhQRUNUX0VRKGEsIG5hLmJlZ2luKCkpOworfQorCitURVNUKE5hdGl2ZUFycmF5VGVz
dCwgQ3JlYXRlc0FuZERlbGV0ZXNDb3B5T2ZBcnJheVdoZW5Bc2tlZFRvKSB7CisgIHR5cGVkZWYg
aW50IEFycmF5WzJdOworICBBcnJheSogYSA9IG5ldyBBcnJheVsxXTsKKyAgKCphKVswXSA9IDA7
CisgICgqYSlbMV0gPSAxOworICBOYXRpdmVBcnJheTxpbnQ+IG5hKCphLCAyLCBSZWxhdGlvblRv
U291cmNlQ29weSgpKTsKKyAgRVhQRUNUX05FKCphLCBuYS5iZWdpbigpKTsKKyAgZGVsZXRlW10g
YTsKKyAgRVhQRUNUX0VRKDAsIG5hLmJlZ2luKClbMF0pOworICBFWFBFQ1RfRVEoMSwgbmEuYmVn
aW4oKVsxXSk7CisKKyAgLy8gV2UgcmVseSBvbiB0aGUgaGVhcCBjaGVja2VyIHRvIHZlcmlmeSB0
aGF0IG5hIGRlbGV0ZXMgdGhlIGNvcHkgb2YKKyAgLy8gYXJyYXkuCit9CisKK1RFU1QoTmF0aXZl
QXJyYXlUZXN0LCBUeXBlTWVtYmVyc0FyZUNvcnJlY3QpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVx
PGNoYXIsIE5hdGl2ZUFycmF5PGNoYXI+Ojp2YWx1ZV90eXBlPigpOworICBTdGF0aWNBc3NlcnRU
eXBlRXE8aW50WzJdLCBOYXRpdmVBcnJheTxpbnRbMl0+Ojp2YWx1ZV90eXBlPigpOworCisgIFN0
YXRpY0Fzc2VydFR5cGVFcTxjb25zdCBjaGFyKiwgTmF0aXZlQXJyYXk8Y2hhcj46OmNvbnN0X2l0
ZXJhdG9yPigpOworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgYm9vbCgqKVsyXSwgTmF0aXZl
QXJyYXk8Ym9vbFsyXT46OmNvbnN0X2l0ZXJhdG9yPigpOworfQorCitURVNUKE5hdGl2ZUFycmF5
VGVzdCwgTWV0aG9kc1dvcmspIHsKKyAgY29uc3QgaW50IGFbM10gPSB7IDAsIDEsIDIgfTsKKyAg
TmF0aXZlQXJyYXk8aW50PiBuYShhLCAzLCBSZWxhdGlvblRvU291cmNlQ29weSgpKTsKKyAgQVNT
RVJUX0VRKDNVLCBuYS5zaXplKCkpOworICBFWFBFQ1RfRVEoMywgbmEuZW5kKCkgLSBuYS5iZWdp
bigpKTsKKworICBOYXRpdmVBcnJheTxpbnQ+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG5hLmJlZ2lu
KCk7CisgIEVYUEVDVF9FUSgwLCAqaXQpOworICArK2l0OworICBFWFBFQ1RfRVEoMSwgKml0KTsK
KyAgaXQrKzsKKyAgRVhQRUNUX0VRKDIsICppdCk7CisgICsraXQ7CisgIEVYUEVDVF9FUShuYS5l
bmQoKSwgaXQpOworCisgIEVYUEVDVF9UUlVFKG5hID09IG5hKTsKKworICBOYXRpdmVBcnJheTxp
bnQ+IG5hMihhLCAzLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOworICBFWFBFQ1RfVFJV
RShuYSA9PSBuYTIpOworCisgIGNvbnN0IGludCBiMVszXSA9IHsgMCwgMSwgMSB9OworICBjb25z
dCBpbnQgYjJbNF0gPSB7IDAsIDEsIDIsIDMgfTsKKyAgRVhQRUNUX0ZBTFNFKG5hID09IE5hdGl2
ZUFycmF5PGludD4oYjEsIDMsIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSkpOworICBFWFBF
Q1RfRkFMU0UobmEgPT0gTmF0aXZlQXJyYXk8aW50PihiMiwgNCwgUmVsYXRpb25Ub1NvdXJjZUNv
cHkoKSkpOworfQorCitURVNUKE5hdGl2ZUFycmF5VGVzdCwgV29ya3NGb3JUd29EaW1lbnNpb25h
bEFycmF5KSB7CisgIGNvbnN0IGNoYXIgYVsyXVszXSA9IHsgImhpIiwgImxvIiB9OworICBOYXRp
dmVBcnJheTxjaGFyWzNdPiBuYShhLCAyLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOwor
ICBBU1NFUlRfRVEoMlUsIG5hLnNpemUoKSk7CisgIEVYUEVDVF9FUShhLCBuYS5iZWdpbigpKTsK
K30KKworLy8gVGVzdHMgU2tpcFByZWZpeCgpLgorCitURVNUKFNraXBQcmVmaXhUZXN0LCBTa2lw
c1doZW5QcmVmaXhNYXRjaGVzKSB7CisgIGNvbnN0IGNoYXIqIGNvbnN0IHN0ciA9ICJoZWxsbyI7
CisKKyAgY29uc3QgY2hhciogcCA9IHN0cjsKKyAgRVhQRUNUX1RSVUUoU2tpcFByZWZpeCgiIiwg
JnApKTsKKyAgRVhQRUNUX0VRKHN0ciwgcCk7CisKKyAgcCA9IHN0cjsKKyAgRVhQRUNUX1RSVUUo
U2tpcFByZWZpeCgiaGVsbCIsICZwKSk7CisgIEVYUEVDVF9FUShzdHIgKyA0LCBwKTsKK30KKwor
VEVTVChTa2lwUHJlZml4VGVzdCwgRG9lc05vdFNraXBXaGVuUHJlZml4RG9lc05vdE1hdGNoKSB7
CisgIGNvbnN0IGNoYXIqIGNvbnN0IHN0ciA9ICJ3b3JsZCI7CisKKyAgY29uc3QgY2hhciogcCA9
IHN0cjsKKyAgRVhQRUNUX0ZBTFNFKFNraXBQcmVmaXgoIlciLCAmcCkpOworICBFWFBFQ1RfRVEo
c3RyLCBwKTsKKworICBwID0gc3RyOworICBFWFBFQ1RfRkFMU0UoU2tpcFByZWZpeCgid29ybGQh
IiwgJnApKTsKKyAgRVhQRUNUX0VRKHN0ciwgcCk7Cit9CisKKy8vIFRlc3RzIGFkX2hvY190ZXN0
X3Jlc3VsdCgpLgorCitjbGFzcyBBZEhvY1Rlc3RSZXN1bHRUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgeworIHByb3RlY3RlZDoKKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKKyAg
ICBGQUlMKCkgPDwgIkEgZmFpbHVyZSBoYXBwZW5lZCBpbnNpZGUgU2V0VXBUZXN0Q2FzZSgpLiI7
CisgIH0KK307CisKK1RFU1RfRihBZEhvY1Rlc3RSZXN1bHRUZXN0LCBBZEhvY1Rlc3RSZXN1bHRG
b3JUZXN0Q2FzZVNob3dzRmFpbHVyZSkgeworICBjb25zdCB0ZXN0aW5nOjpUZXN0UmVzdWx0JiB0
ZXN0X3Jlc3VsdCA9IHRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+Y3VycmVudF90ZXN0X2Nhc2Uo
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmFkX2hv
Y190ZXN0X3Jlc3VsdCgpOworICBFWFBFQ1RfVFJVRSh0ZXN0X3Jlc3VsdC5GYWlsZWQoKSk7Cit9
CisKK1RFU1RfRihBZEhvY1Rlc3RSZXN1bHRUZXN0LCBBZEhvY1Rlc3RSZXN1bHRUZXN0Rm9yVW5p
dFRlc3REb2VzTm90U2hvd0ZhaWx1cmUpIHsKKyAgY29uc3QgdGVzdGluZzo6VGVzdFJlc3VsdCYg
dGVzdF9yZXN1bHQgPQorICAgICAgdGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmFk
X2hvY190ZXN0X3Jlc3VsdCgpOworICBFWFBFQ1RfRkFMU0UodGVzdF9yZXN1bHQuRmFpbGVkKCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxf
b3V0ZmlsZTFfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ht
bF9vdXRmaWxlMV90ZXN0Xy5jYwppbmRleCA2NjRiYWFkMmFiODczYmEzODgxOTNhNjVkMmI3OWZk
ODNkYjJlNzc1Li5hMzhlYmFjODM5ZjdiNGZjZjcxMDkzNTFjNGQzZmVjZGUyNzE1YjBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMV90
ZXN0Xy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRm
aWxlMV90ZXN0Xy5jYwpAQCAtMjcsMTIgKzI3LDEwIEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAvLwotLy8gQXV0aG9yOiBrZWl0aC5yYXlAZ21haWwuY29tIChLZWl0aCBSYXkp
Ci0vLwogLy8gZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfIHdyaXRlcyBzb21lIHhtbCB2aWEgVGVz
dFByb3BlcnR5IHVzZWQgYnkKIC8vIGd0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5CiAKLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIGNsYXNzIFBy
b3BlcnR5T25lIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUyX3Rlc3Rf
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTJfdGVz
dF8uY2MKaW5kZXggMzQxMWEzZDM4Yjg2MTA0YzZhNjBjNjBkMTEzMWNiNjZhYTU0YzE5Mi4uYWZh
ZjE1YTVkYzMyMzE1ZDUxYWM3YTBhNTU1ZjgzY2FiNDFlZjc0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8uY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8uY2MK
QEAgLTI3LDEyICsyNywxMCBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogLy8K
LS8vIEF1dGhvcjoga2VpdGgucmF5QGdtYWlsLmNvbSAoS2VpdGggUmF5KQotLy8KIC8vIGd0ZXN0
X3htbF9vdXRmaWxlMl90ZXN0XyB3cml0ZXMgc29tZSB4bWwgdmlhIFRlc3RQcm9wZXJ0eSB1c2Vk
IGJ5CiAvLyBndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiBjbGFzcyBQcm9wZXJ0eVR3byA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5IGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weQppbmRleCAwZmU5
NDdmMDg0YzhmNTZmNGFkZjVkMGM5ZmEwMjZjZTI5OTc1ZDJjLi4yYzAzMWZmOGRiYTUxMmMyZTA0
ZTI3MDUzNGUyOWZjZWJlODg2Y2Y5IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkKQEAgLTMxLDMxICszMSwzOSBA
QAogCiAiIiJVbml0IHRlc3QgZm9yIHRoZSBndGVzdF94bWxfb3V0cHV0IG1vZHVsZS4iIiIKIAot
X19hdXRob3JfXyA9ICJrZWl0aC5yYXlAZ21haWwuY29tIChLZWl0aCBSYXkpIgotCiBpbXBvcnQg
b3MKIGZyb20geG1sLmRvbSBpbXBvcnQgbWluaWRvbSwgTm9kZQotCiBpbXBvcnQgZ3Rlc3RfdGVz
dF91dGlscwogaW1wb3J0IGd0ZXN0X3htbF90ZXN0X3V0aWxzCiAKLQogR1RFU1RfT1VUUFVUX1NV
QkRJUiA9ICJ4bWxfb3V0ZmlsZXMiCiBHVEVTVF9PVVRQVVRfMV9URVNUID0gImd0ZXN0X3htbF9v
dXRmaWxlMV90ZXN0XyIKIEdURVNUX09VVFBVVF8yX1RFU1QgPSAiZ3Rlc3RfeG1sX291dGZpbGUy
X3Rlc3RfIgogCiBFWFBFQ1RFRF9YTUxfMSA9ICIiIjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rp
bmc9IlVURi04Ij8+Ci08dGVzdHN1aXRlcyB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVk
PSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiIG5hbWU9IkFsbFRlc3RzIj4KKzx0ZXN0c3VpdGVzIHRl
c3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIgdGlt
ZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0cyI+CiAgIDx0ZXN0c3VpdGUgbmFtZT0iUHJvcGVydHlP
bmUiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0i
KiI+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IlRlc3RTb21lUHJvcGVydGllcyIgc3RhdHVzPSJydW4i
IHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlPbmUiIFNldFVwUHJvcD0iMSIgVGVzdFNvbWVQ
cm9wZXJ0eT0iMSIgVGVhckRvd25Qcm9wPSIxIiAvPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJUZXN0
U29tZVByb3BlcnRpZXMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlByb3BlcnR5
T25lIj4KKyAgICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0iU2V0VXBQ
cm9wIiB2YWx1ZT0iMSIvPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0iVGVzdFNvbWVQcm9wZXJ0
eSIgdmFsdWU9IjEiLz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9IlRlYXJEb3duUHJvcCIgdmFs
dWU9IjEiLz4KKyAgICAgIDwvcHJvcGVydGllcz4KKyAgICA8L3Rlc3RjYXNlPgogICA8L3Rlc3Rz
dWl0ZT4KIDwvdGVzdHN1aXRlcz4KICIiIgogCiBFWFBFQ1RFRF9YTUxfMiA9ICIiIjw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08dGVzdHN1aXRlcyB0ZXN0cz0iMSIgZmFp
bHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiIG5hbWU9IkFsbFRlc3Rz
Ij4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9y
cz0iMCIgdGltZT0iKiIgdGltZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0cyI+CiAgIDx0ZXN0c3Vp
dGUgbmFtZT0iUHJvcGVydHlUd28iIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAi
IGVycm9ycz0iMCIgdGltZT0iKiI+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IlRlc3RTb21lUHJvcGVy
dGllcyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlUd28iIFNldFVw
UHJvcD0iMiIgVGVzdFNvbWVQcm9wZXJ0eT0iMiIgVGVhckRvd25Qcm9wPSIyIiAvPgorICAgIDx0
ZXN0Y2FzZSBuYW1lPSJUZXN0U29tZVByb3BlcnRpZXMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBj
bGFzc25hbWU9IlByb3BlcnR5VHdvIj4KKyAgICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICA8cHJv
cGVydHkgbmFtZT0iU2V0VXBQcm9wIiB2YWx1ZT0iMiIvPgorICAgICAgICA8cHJvcGVydHkgbmFt
ZT0iVGVzdFNvbWVQcm9wZXJ0eSIgdmFsdWU9IjIiLz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9
IlRlYXJEb3duUHJvcCIgdmFsdWU9IjIiLz4KKyAgICAgIDwvcHJvcGVydGllcz4KKyAgICA8L3Rl
c3RjYXNlPgogICA8L3Rlc3RzdWl0ZT4KIDwvdGVzdHN1aXRlcz4KICIiIgpAQCAtMTAzLDExICsx
MTEsMTEgQEAgY2xhc3MgR1Rlc3RYTUxPdXRGaWxlc1Rlc3QoZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMu
R1Rlc3RYTUxUZXN0Q2FzZSk6CiAgICAgc2VsZi5hc3NlcnRfKHAuZXhpdGVkKQogICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKDAsIHAuZXhpdF9jb2RlKQogCi0gICAgIyBUT0RPKHdhbkBnb29nbGUuY29t
KTogbGlidG9vbCBjYXVzZXMgdGhlIGJ1aWx0IHRlc3QgYmluYXJ5IHRvIGJlCisgICAgIyBGSVhN
RTogbGlidG9vbCBjYXVzZXMgdGhlIGJ1aWx0IHRlc3QgYmluYXJ5IHRvIGJlCiAgICAgIyAgIG5h
bWVkIGx0LWd0ZXN0X3htbF9vdXRmaWxlc190ZXN0XyBpbnN0ZWFkIG9mCi0gICAgIyAgIGd0ZXN0
X3htbF9vdXRmaWxlc190ZXN0Xy4gIFRvIGFjY291bnQgZm9yIHRoaXMgcG9zc2liaWxsaXR5LCB3
ZQorICAgICMgICBndGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8uICBUbyBhY2NvdW50IGZvciB0aGlz
IHBvc3NpYmlsaXR5LCB3ZQogICAgICMgICBhbGxvdyBib3RoIG5hbWVzIGluIHRoZSBmb2xsb3dp
bmcgY29kZS4gIFdlIHNob3VsZCByZW1vdmUgdGhpcwotICAgICMgICBoYWNrIHdoZW4gQ2hhbmRs
ZXIgQ2FycnV0aCdzIGxpYnRvb2wgcmVwbGFjZW1lbnQgdG9vbCBpcyByZWFkeS4KKyAgICAjICAg
d2hlbiBsaWJ0b29sIHJlcGxhY2VtZW50IHRvb2wgaXMgcmVhZHkuCiAgICAgb3V0cHV0X2ZpbGVf
bmFtZTEgPSB0ZXN0X25hbWUgKyAiLnhtbCIKICAgICBvdXRwdXRfZmlsZTEgPSBvcy5wYXRoLmpv
aW4oc2VsZi5vdXRwdXRfZGlyXywgb3V0cHV0X2ZpbGVfbmFtZTEpCiAgICAgb3V0cHV0X2ZpbGVf
bmFtZTIgPSAnbHQtJyArIG91dHB1dF9maWxlX25hbWUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3QucHkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3QucHkKaW5kZXgg
NmQ0NDkyOWNhY2EwM2VjNmZhZTQ0NzFlZDFiYTFkNDE2YTVkZmNlMC4uZmFlZGQ0ZTZjZTcyZGFi
ZWY3ODZhMzEyZWY0YWVjYTVjNWQyOWJmYSAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0LnB5CisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdC5weQpAQCAtMzEsNjIg
KzMxLDc2IEBACiAKICIiIlVuaXQgdGVzdCBmb3IgdGhlIGd0ZXN0X3htbF9vdXRwdXQgbW9kdWxl
IiIiCiAKLV9fYXV0aG9yX18gPSAnZWVmYWNtQGdtYWlsLmNvbSAoU2VhbiBNY2FmZWUpJwotCitp
bXBvcnQgZGF0ZXRpbWUKIGltcG9ydCBlcnJubwogaW1wb3J0IG9zCitpbXBvcnQgcmUKIGltcG9y
dCBzeXMKIGZyb20geG1sLmRvbSBpbXBvcnQgbWluaWRvbSwgTm9kZQogCiBpbXBvcnQgZ3Rlc3Rf
dGVzdF91dGlscwogaW1wb3J0IGd0ZXN0X3htbF90ZXN0X3V0aWxzCiAKK0dURVNUX0ZJTFRFUl9G
TEFHID0gJy0tZ3Rlc3RfZmlsdGVyJworR1RFU1RfTElTVF9URVNUU19GTEFHID0gJy0tZ3Rlc3Rf
bGlzdF90ZXN0cycKK0dURVNUX09VVFBVVF9GTEFHID0gJy0tZ3Rlc3Rfb3V0cHV0JworR1RFU1Rf
REVGQVVMVF9PVVRQVVRfRklMRSA9ICd0ZXN0X2RldGFpbC54bWwnCitHVEVTVF9QUk9HUkFNX05B
TUUgPSAnZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8nCisKKyMgVGhlIGZsYWcgaW5kaWNhdGlu
ZyBzdGFja3RyYWNlcyBhcmUgbm90IHN1cHBvcnRlZAorTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZM
QUcgPSAnLS1ub19zdGFja3RyYWNlX3N1cHBvcnQnCiAKLUdURVNUX09VVFBVVF9GTEFHICAgICAg
ICAgPSAiLS1ndGVzdF9vdXRwdXQiCi1HVEVTVF9ERUZBVUxUX09VVFBVVF9GSUxFID0gInRlc3Rf
ZGV0YWlsLnhtbCIKLUdURVNUX1BST0dSQU1fTkFNRSA9ICJndGVzdF94bWxfb3V0cHV0X3VuaXR0
ZXN0XyIKKyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBzaGFyZGluZy4KK1RP
VEFMX1NIQVJEU19FTlZfVkFSID0gJ0dURVNUX1RPVEFMX1NIQVJEUycKK1NIQVJEX0lOREVYX0VO
Vl9WQVIgPSAnR1RFU1RfU0hBUkRfSU5ERVgnCitTSEFSRF9TVEFUVVNfRklMRV9FTlZfVkFSID0g
J0dURVNUX1NIQVJEX1NUQVRVU19GSUxFJwogCi1TVVBQT1JUU19TVEFDS19UUkFDRVMgPSBGYWxz
ZQorU1VQUE9SVFNfU1RBQ0tfVFJBQ0VTID0gTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZMQUcgbm90
IGluIHN5cy5hcmd2CiAKIGlmIFNVUFBPUlRTX1NUQUNLX1RSQUNFUzoKLSAgU1RBQ0tfVFJBQ0Vf
VEVNUExBVEUgPSAiXG5TdGFjayB0cmFjZTpcbioiCisgIFNUQUNLX1RSQUNFX1RFTVBMQVRFID0g
J1xuU3RhY2sgdHJhY2U6XG4qJwogZWxzZToKLSAgU1RBQ0tfVFJBQ0VfVEVNUExBVEUgPSAiIgor
ICBTVEFDS19UUkFDRV9URU1QTEFURSA9ICcnCisgICMgdW5pdHRlc3QubWFpbigpIGNhbid0IGhh
bmRsZSB1bmtub3duIGZsYWdzCisgIHN5cy5hcmd2LnJlbW92ZShOT19TVEFDS1RSQUNFX1NVUFBP
UlRfRkxBRykKIAogRVhQRUNURURfTk9OX0VNUFRZX1hNTCA9ICIiIjw/eG1sIHZlcnNpb249IjEu
MCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08dGVzdHN1aXRlcyB0ZXN0cz0iMTUiIGZhaWx1cmVzPSI0
IiBkaXNhYmxlZD0iMiIgZXJyb3JzPSIwIiB0aW1lPSIqIiBuYW1lPSJBbGxUZXN0cyI+Cis8dGVz
dHN1aXRlcyB0ZXN0cz0iMjMiIGZhaWx1cmVzPSI0IiBkaXNhYmxlZD0iMiIgZXJyb3JzPSIwIiB0
aW1lPSIqIiB0aW1lc3RhbXA9IioiIG5hbWU9IkFsbFRlc3RzIiBhZF9ob2NfcHJvcGVydHk9IjQy
Ij4KICAgPHRlc3RzdWl0ZSBuYW1lPSJTdWNjZXNzZnVsVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVz
PSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAgICA8dGVzdGNhc2UgbmFt
ZT0iU3VjY2VlZHMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlN1Y2Nlc3NmdWxU
ZXN0Ii8+CiAgIDwvdGVzdHN1aXRlPgogICA8dGVzdHN1aXRlIG5hbWU9IkZhaWxlZFRlc3QiIHRl
c3RzPSIxIiBmYWlsdXJlcz0iMSIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CiAg
ICAgPHRlc3RjYXNlIG5hbWU9IkZhaWxzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1l
PSJGYWlsZWRUZXN0Ij4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IlZhbHVlIG9mOiAyJiN4MEE7
RXhwZWN0ZWQ6IDEiIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8u
Y2M6KgotVmFsdWUgb2Y6IDIKLUV4cGVjdGVkOiAxJShzdGFjaylzXV0+PC9mYWlsdXJlPgorICAg
ICAgPGZhaWx1cmUgbWVzc2FnZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBB
O0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczomI3gwQTsgIDEmI3gwQTsgIDIiIHR5
cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgorRXhwZWN0ZWQg
ZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxCisgIDIlKHN0YWNrKXNdXT48L2ZhaWx1cmU+
CiAgICAgPC90ZXN0Y2FzZT4KICAgPC90ZXN0c3VpdGU+CiAgIDx0ZXN0c3VpdGUgbmFtZT0iTWl4
ZWRSZXN1bHRUZXN0IiB0ZXN0cz0iMyIgZmFpbHVyZXM9IjEiIGRpc2FibGVkPSIxIiBlcnJvcnM9
IjAiIHRpbWU9IioiPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJTdWNjZWVkcyIgc3RhdHVzPSJydW4i
IHRpbWU9IioiIGNsYXNzbmFtZT0iTWl4ZWRSZXN1bHRUZXN0Ii8+CiAgICAgPHRlc3RjYXNlIG5h
bWU9IkZhaWxzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJNaXhlZFJlc3VsdFRl
c3QiPgotICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IDImI3gwQTtFeHBlY3RlZDog
MSIgdHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCi1WYWx1
ZSBvZjogMgotRXhwZWN0ZWQ6IDElKHN0YWNrKXNdXT48L2ZhaWx1cmU+Ci0gICAgICA8ZmFpbHVy
ZSBtZXNzYWdlPSJWYWx1ZSBvZjogMyYjeDBBO0V4cGVjdGVkOiAyIiB0eXBlPSIiPjwhW0NEQVRB
W2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioKLVZhbHVlIG9mOiAzCi1FeHBlY3RlZDog
MiUoc3RhY2spc11dPjwvZmFpbHVyZT4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Imd0ZXN0X3ht
bF9vdXRwdXRfdW5pdHRlc3RfLmNjOiomI3gwQTtFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2
YWx1ZXM6JiN4MEE7ICAxJiN4MEE7ICAyIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3RfLmNjOioKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAg
MQorICAyJShzdGFjaylzXV0+PC9mYWlsdXJlPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iZ3Rl
c3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBBO0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRo
ZXNlIHZhbHVlczomI3gwQTsgIDImI3gwQTsgIDMiIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1s
X291dHB1dF91bml0dGVzdF8uY2M6KgorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVz
OgorICAyCisgIDMlKHN0YWNrKXNdXT48L2ZhaWx1cmU+CiAgICAgPC90ZXN0Y2FzZT4KICAgICA8
dGVzdGNhc2UgbmFtZT0iRElTQUJMRURfdGVzdCIgc3RhdHVzPSJub3RydW4iIHRpbWU9IioiIGNs
YXNzbmFtZT0iTWl4ZWRSZXN1bHRUZXN0Ii8+CiAgIDwvdGVzdHN1aXRlPgogICA8dGVzdHN1aXRl
IG5hbWU9IlhtbFF1b3RpbmdUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjEiIGRpc2FibGVkPSIw
IiBlcnJvcnM9IjAiIHRpbWU9IioiPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJPdXRwdXRzQ0RhdGEi
IHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlhtbFF1b3RpbmdUZXN0Ij4KLSAgICAg
IDxmYWlsdXJlIG1lc3NhZ2U9IkZhaWxlZCYjeDBBO1hNTCBvdXRwdXQ6ICZsdDs/eG1sIGVuY29k
aW5nPSZxdW90O3V0Zi04JnF1b3Q7Jmd0OyZsdDt0b3AmZ3Q7Jmx0OyFbQ0RBVEFbY2RhdGEgdGV4
dF1dJmd0OyZsdDsvdG9wJmd0OyIgdHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3Vu
aXR0ZXN0Xy5jYzoqCisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJndGVzdF94bWxfb3V0cHV0X3Vu
aXR0ZXN0Xy5jYzoqJiN4MEE7RmFpbGVkJiN4MEE7WE1MIG91dHB1dDogJmx0Oz94bWwgZW5jb2Rp
bmc9JnF1b3Q7dXRmLTgmcXVvdDsmZ3Q7Jmx0O3RvcCZndDsmbHQ7IVtDREFUQVtjZGF0YSB0ZXh0
XV0mZ3Q7Jmx0Oy90b3AmZ3Q7IiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5p
dHRlc3RfLmNjOioKIEZhaWxlZAogWE1MIG91dHB1dDogPD94bWwgZW5jb2Rpbmc9InV0Zi04Ij48
dG9wPjwhW0NEQVRBW2NkYXRhIHRleHRdXT5dXSZndDs8IVtDREFUQVs8L3RvcD4lKHN0YWNrKXNd
XT48L2ZhaWx1cmU+CiAgICAgPC90ZXN0Y2FzZT4KICAgPC90ZXN0c3VpdGU+CiAgIDx0ZXN0c3Vp
dGUgbmFtZT0iSW52YWxpZENoYXJhY3RlcnNUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjEiIGRp
c2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJJbnZh
bGlkQ2hhcmFjdGVyc0luTWVzc2FnZSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0i
SW52YWxpZENoYXJhY3RlcnNUZXN0Ij4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IkZhaWxlZCYj
eDBBO0ludmFsaWQgY2hhcmFjdGVycyBpbiBicmFja2V0cyBbXSIgdHlwZT0iIj48IVtDREFUQVtn
dGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJn
dGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqJiN4MEE7RmFpbGVkJiN4MEE7SW52YWxpZCBj
aGFyYWN0ZXJzIGluIGJyYWNrZXRzIFtdIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3RfLmNjOioKIEZhaWxlZAogSW52YWxpZCBjaGFyYWN0ZXJzIGluIGJyYWNrZXRz
IFtdJShzdGFjaylzXV0+PC9mYWlsdXJlPgogICAgIDwvdGVzdGNhc2U+CkBAIC05NCw0NSArMTA4
LDE1MiBAQCBJbnZhbGlkIGNoYXJhY3RlcnMgaW4gYnJhY2tldHMgW10lKHN0YWNrKXNdXT48L2Zh
aWx1cmU+CiAgIDx0ZXN0c3VpdGUgbmFtZT0iRGlzYWJsZWRUZXN0IiB0ZXN0cz0iMSIgZmFpbHVy
ZXM9IjAiIGRpc2FibGVkPSIxIiBlcnJvcnM9IjAiIHRpbWU9IioiPgogICAgIDx0ZXN0Y2FzZSBu
YW1lPSJESVNBQkxFRF90ZXN0X25vdF9ydW4iIHN0YXR1cz0ibm90cnVuIiB0aW1lPSIqIiBjbGFz
c25hbWU9IkRpc2FibGVkVGVzdCIvPgogICA8L3Rlc3RzdWl0ZT4KLSAgPHRlc3RzdWl0ZSBuYW1l
PSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiIHRlc3RzPSI0IiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9
IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+Ci0gICAgPHRlc3RjYXNlIG5hbWU9Ik9uZVByb3BlcnR5
IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3Qi
IGtleV8xPSIxIi8+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IkludFZhbHVlZFByb3BlcnR5IiBzdGF0
dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiIGtleV9p
bnQ9IjEiLz4KLSAgICA8dGVzdGNhc2UgbmFtZT0iVGhyZWVQcm9wZXJ0aWVzIiBzdGF0dXM9InJ1
biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiIGtleV8xPSIxIiBr
ZXlfMj0iMiIga2V5XzM9IjMiLz4KLSAgICA8dGVzdGNhc2UgbmFtZT0iVHdvVmFsdWVzRm9yT25l
S2V5VXNlc0xhc3RWYWx1ZSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVy
dHlSZWNvcmRpbmdUZXN0IiBrZXlfMT0iMiIvPgorICA8dGVzdHN1aXRlIG5hbWU9IlByb3BlcnR5
UmVjb3JkaW5nVGVzdCIgdGVzdHM9IjQiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3Jz
PSIwIiB0aW1lPSIqIiBTZXRVcFRlc3RDYXNlPSJ5ZXMiIFRlYXJEb3duVGVzdENhc2U9ImF5ZSI+
CisgICAgPHRlc3RjYXNlIG5hbWU9Ik9uZVByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIg
Y2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiPgorICAgICAgPHByb3BlcnRpZXM+Cisg
ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJrZXlfMSIgdmFsdWU9IjEiLz4KKyAgICAgIDwvcHJvcGVy
dGllcz4KKyAgICA8L3Rlc3RjYXNlPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJJbnRWYWx1ZWRQcm9w
ZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdU
ZXN0Ij4KKyAgICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ia2V5X2lu
dCIgdmFsdWU9IjEiLz4KKyAgICAgIDwvcHJvcGVydGllcz4KKyAgICA8L3Rlc3RjYXNlPgorICAg
IDx0ZXN0Y2FzZSBuYW1lPSJUaHJlZVByb3BlcnRpZXMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBj
bGFzc25hbWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCI+CisgICAgICA8cHJvcGVydGllcz4KKyAg
ICAgICAgPHByb3BlcnR5IG5hbWU9ImtleV8xIiB2YWx1ZT0iMSIvPgorICAgICAgICA8cHJvcGVy
dHkgbmFtZT0ia2V5XzIiIHZhbHVlPSIyIi8+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJrZXlf
MyIgdmFsdWU9IjMiLz4KKyAgICAgIDwvcHJvcGVydGllcz4KKyAgICA8L3Rlc3RjYXNlPgorICAg
IDx0ZXN0Y2FzZSBuYW1lPSJUd29WYWx1ZXNGb3JPbmVLZXlVc2VzTGFzdFZhbHVlIiBzdGF0dXM9
InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiPgorICAgICAg
PHByb3BlcnRpZXM+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJrZXlfMSIgdmFsdWU9IjIiLz4K
KyAgICAgIDwvcHJvcGVydGllcz4KKyAgICA8L3Rlc3RjYXNlPgogICA8L3Rlc3RzdWl0ZT4KICAg
PHRlc3RzdWl0ZSBuYW1lPSJOb0ZpeHR1cmVUZXN0IiB0ZXN0cz0iMyIgZmFpbHVyZXM9IjAiIGRp
c2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgotICAgICA8dGVzdGNhc2UgbmFtZT0iUmVj
b3JkUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ik5vRml4dHVyZVRl
c3QiIGtleT0iMSIvPgotICAgICA8dGVzdGNhc2UgbmFtZT0iRXh0ZXJuYWxVdGlsaXR5VGhhdENh
bGxzUmVjb3JkSW50VmFsdWVkUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25h
bWU9Ik5vRml4dHVyZVRlc3QiIGtleV9mb3JfdXRpbGl0eV9pbnQ9IjEiLz4KLSAgICAgPHRlc3Rj
YXNlIG5hbWU9IkV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFN0cmluZ1ZhbHVlZFByb3Bl
cnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJOb0ZpeHR1cmVUZXN0IiBrZXlf
Zm9yX3V0aWxpdHlfc3RyaW5nPSIxIi8+CisgICAgIDx0ZXN0Y2FzZSBuYW1lPSJSZWNvcmRQcm9w
ZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTm9GaXh0dXJlVGVzdCI+Cisg
ICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgICA8cHJvcGVydHkgbmFtZT0ia2V5IiB2YWx1ZT0i
MSIvPgorICAgICAgIDwvcHJvcGVydGllcz4KKyAgICAgPC90ZXN0Y2FzZT4KKyAgICAgPHRlc3Rj
YXNlIG5hbWU9IkV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZEludFZhbHVlZFByb3BlcnR5
IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJOb0ZpeHR1cmVUZXN0Ij4KKyAgICAg
ICA8cHJvcGVydGllcz4KKyAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJrZXlfZm9yX3V0aWxpdHlf
aW50IiB2YWx1ZT0iMSIvPgorICAgICAgIDwvcHJvcGVydGllcz4KKyAgICAgPC90ZXN0Y2FzZT4K
KyAgICAgPHRlc3RjYXNlIG5hbWU9IkV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFN0cmlu
Z1ZhbHVlZFByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJOb0ZpeHR1
cmVUZXN0Ij4KKyAgICAgICA8cHJvcGVydGllcz4KKyAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJr
ZXlfZm9yX3V0aWxpdHlfc3RyaW5nIiB2YWx1ZT0iMSIvPgorICAgICAgIDwvcHJvcGVydGllcz4K
KyAgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iU2lu
Z2xlL1ZhbHVlUGFyYW1UZXN0IiB0ZXN0cz0iNCIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBl
cnJvcnM9IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNWYWx1ZVBhcmFtQXR0
cmlidXRlLzAiIHZhbHVlX3BhcmFtPSIzMyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFt
ZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiAvPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNWYWx1
ZVBhcmFtQXR0cmlidXRlLzEiIHZhbHVlX3BhcmFtPSI0MiIgc3RhdHVzPSJydW4iIHRpbWU9Iioi
IGNsYXNzbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiAvPgorICAgIDx0ZXN0Y2FzZSBuYW1l
PSJBbm90aGVyVGVzdFRoYXRIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzAiIHZhbHVlX3BhcmFtPSIz
MyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0
IiAvPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJBbm90aGVyVGVzdFRoYXRIYXNWYWx1ZVBhcmFtQXR0
cmlidXRlLzEiIHZhbHVlX3BhcmFtPSI0MiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFt
ZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiAvPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0
ZSBuYW1lPSJUeXBlZFRlc3QvMCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIg
ZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iSGFzVHlwZVBhcmFtQXR0
cmlidXRlIiB0eXBlX3BhcmFtPSIqIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJU
eXBlZFRlc3QvMCIgLz4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iVHlwZWRU
ZXN0LzEiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGlt
ZT0iKiI+CisgICAgPHRlc3RjYXNlIG5hbWU9Ikhhc1R5cGVQYXJhbUF0dHJpYnV0ZSIgdHlwZV9w
YXJhbT0iKiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iVHlwZWRUZXN0LzEiIC8+
CisgIDwvdGVzdHN1aXRlPgorICA8dGVzdHN1aXRlIG5hbWU9IlNpbmdsZS9UeXBlUGFyYW1ldGVy
aXplZFRlc3RDYXNlLzAiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9y
cz0iMCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNlIG5hbWU9Ikhhc1R5cGVQYXJhbUF0dHJpYnV0
ZSIgdHlwZV9wYXJhbT0iKiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xl
L1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMCIgLz4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0
c3VpdGUgbmFtZT0iU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMSIgdGVzdHM9IjEi
IGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVz
dGNhc2UgbmFtZT0iSGFzVHlwZVBhcmFtQXR0cmlidXRlIiB0eXBlX3BhcmFtPSIqIiBzdGF0dXM9
InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJTaW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2Fz
ZS8xIiAvPgogICA8L3Rlc3RzdWl0ZT4KIDwvdGVzdHN1aXRlcz4iIiIgJSB7J3N0YWNrJzogU1RB
Q0tfVFJBQ0VfVEVNUExBVEV9CiAKK0VYUEVDVEVEX0ZJTFRFUkVEX1RFU1RfWE1MID0gIiIiPD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIx
IiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIKKyAgICAgICAg
ICAgIHRpbWVzdGFtcD0iKiIgbmFtZT0iQWxsVGVzdHMiIGFkX2hvY19wcm9wZXJ0eT0iNDIiPgor
ICA8dGVzdHN1aXRlIG5hbWU9IlN1Y2Nlc3NmdWxUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAi
IGRpc2FibGVkPSIwIgorICAgICAgICAgICAgIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgPHRl
c3RjYXNlIG5hbWU9IlN1Y2NlZWRzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJT
dWNjZXNzZnVsVGVzdCIvPgorICA8L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1aXRlcz4iIiIKKworRVhQ
RUNURURfU0hBUkRFRF9URVNUX1hNTCA9ICIiIjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
IlVURi04Ij8+Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMyIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIw
IiBlcnJvcnM9IjAiIHRpbWU9IioiIHRpbWVzdGFtcD0iKiIgbmFtZT0iQWxsVGVzdHMiIGFkX2hv
Y19wcm9wZXJ0eT0iNDIiPgorICA8dGVzdHN1aXRlIG5hbWU9IlN1Y2Nlc3NmdWxUZXN0IiB0ZXN0
cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgorICAg
IDx0ZXN0Y2FzZSBuYW1lPSJTdWNjZWVkcyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFt
ZT0iU3VjY2Vzc2Z1bFRlc3QiLz4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0i
Tm9GaXh0dXJlVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3Jz
PSIwIiB0aW1lPSIqIj4KKyAgICAgPHRlc3RjYXNlIG5hbWU9IlJlY29yZFByb3BlcnR5IiBzdGF0
dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJOb0ZpeHR1cmVUZXN0Ij4KKyAgICAgICA8cHJv
cGVydGllcz4KKyAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJrZXkiIHZhbHVlPSIxIi8+CisgICAg
ICAgPC9wcm9wZXJ0aWVzPgorICAgICA8L3Rlc3RjYXNlPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRl
c3RzdWl0ZSBuYW1lPSJTaW5nbGUvVmFsdWVQYXJhbVRlc3QiIHRlc3RzPSIxIiBmYWlsdXJlcz0i
MCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNlIG5hbWU9
IkFub3RoZXJUZXN0VGhhdEhhc1ZhbHVlUGFyYW1BdHRyaWJ1dGUvMSIgdmFsdWVfcGFyYW09IjQy
IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJTaW5nbGUvVmFsdWVQYXJhbVRlc3Qi
IC8+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPiIiIgogCiBFWFBFQ1RFRF9FTVBUWV9Y
TUwgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0
ZXMgdGVzdHM9IjAiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIq
IiBuYW1lPSJBbGxUZXN0cyI+Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMCIgZmFpbHVyZXM9IjAiIGRp
c2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiCisgICAgICAgICAgICB0aW1lc3RhbXA9Iioi
IG5hbWU9IkFsbFRlc3RzIj4KIDwvdGVzdHN1aXRlcz4iIiIKIAorR1RFU1RfUFJPR1JBTV9QQVRI
ID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoR1RFU1RfUFJPR1JBTV9O
QU1FKQorCitTVVBQT1JUU19UWVBFRF9URVNUUyA9ICdUeXBlZFRlc3QnIGluIGd0ZXN0X3Rlc3Rf
dXRpbHMuU3VicHJvY2VzcygKKyAgICBbR1RFU1RfUFJPR1JBTV9QQVRILCBHVEVTVF9MSVNUX1RF
U1RTX0ZMQUddLCBjYXB0dXJlX3N0ZGVycj1GYWxzZSkub3V0cHV0CisKIAogY2xhc3MgR1Rlc3RY
TUxPdXRwdXRVbml0VGVzdChndGVzdF94bWxfdGVzdF91dGlscy5HVGVzdFhNTFRlc3RDYXNlKToK
ICAgIiIiCiAgIFVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyBYTUwgb3V0cHV0IGZ1bmN0aW9u
YWxpdHkuCiAgICIiIgogCi0gIGRlZiB0ZXN0Tm9uRW1wdHlYbWxPdXRwdXQoc2VsZik6Ci0gICAg
IiIiCi0gICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBhIG5vbi1lbXB0eSBY
TUwgb3V0cHV0LCBhbmQKLSAgICB0ZXN0cyB0aGF0IHRoZSBYTUwgb3V0cHV0IGlzIGV4cGVjdGVk
LgotICAgICIiIgotICAgIHNlbGYuX1Rlc3RYbWxPdXRwdXQoR1RFU1RfUFJPR1JBTV9OQU1FLCBF
WFBFQ1RFRF9OT05fRU1QVFlfWE1MLCAxKQorICAjIFRoaXMgdGVzdCBjdXJyZW50bHkgYnJlYWtz
IG9uIHBsYXRmb3JtcyB0aGF0IGRvIG5vdCBzdXBwb3J0IHR5cGVkIGFuZAorICAjIHR5cGUtcGFy
YW1ldGVyaXplZCB0ZXN0cywgc28gd2UgZG9uJ3QgcnVuIGl0IHVuZGVyIHRoZW0uCisgIGlmIFNV
UFBPUlRTX1RZUEVEX1RFU1RTOgorICAgIGRlZiB0ZXN0Tm9uRW1wdHlYbWxPdXRwdXQoc2VsZik6
CisgICAgICAiIiIKKyAgICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYSBu
b24tZW1wdHkgWE1MIG91dHB1dCwgYW5kCisgICAgICB0ZXN0cyB0aGF0IHRoZSBYTUwgb3V0cHV0
IGlzIGV4cGVjdGVkLgorICAgICAgIiIiCisgICAgICBzZWxmLl9UZXN0WG1sT3V0cHV0KEdURVNU
X1BST0dSQU1fTkFNRSwgRVhQRUNURURfTk9OX0VNUFRZX1hNTCwgMSkKIAogICBkZWYgdGVzdEVt
cHR5WG1sT3V0cHV0KHNlbGYpOgotICAgICIiIgorICAgICIiIlZlcmlmaWVzIFhNTCBvdXRwdXQg
Zm9yIGEgR29vZ2xlIFRlc3QgYmluYXJ5IHdpdGhvdXQgYWN0dWFsIHRlc3RzLgorCiAgICAgUnVu
cyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBhbiBlbXB0eSBYTUwgb3V0cHV0LCBhbmQK
ICAgICB0ZXN0cyB0aGF0IHRoZSBYTUwgb3V0cHV0IGlzIGV4cGVjdGVkLgogICAgICIiIgogCi0g
ICAgc2VsZi5fVGVzdFhtbE91dHB1dCgiZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBFWFBFQ1RFRF9FTVBUWV9YTUwsIDApCisgICAgc2VsZi5fVGVzdFht
bE91dHB1dCgnZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCcsIEVYUEVDVEVEX0VNUFRZX1hNTCwgMCkK
KworICBkZWYgdGVzdFRpbWVzdGFtcFZhbHVlKHNlbGYpOgorICAgICIiIkNoZWNrcyB3aGV0aGVy
IHRoZSB0aW1lc3RhbXAgYXR0cmlidXRlIGluIHRoZSBYTUwgb3V0cHV0IGlzIHZhbGlkLgorCisg
ICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBhbiBlbXB0eSBYTUwgb3V0cHV0
LCBhbmQgY2hlY2tzIGlmCisgICAgdGhlIHRpbWVzdGFtcCBhdHRyaWJ1dGUgaW4gdGhlIHRlc3Rz
dWl0ZXMgdGFnIGlzIHZhbGlkLgorICAgICIiIgorICAgIGFjdHVhbCA9IHNlbGYuX0dldFhtbE91
dHB1dCgnZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCcsIFtdLCB7fSwgMCkKKyAgICBkYXRlX3RpbWVf
c3RyID0gYWN0dWFsLmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKCd0aW1lc3RhbXAn
KS52YWx1ZQorICAgICMgZGF0ZXRpbWUuc3RycHRpbWUoKSBpcyBvbmx5IGF2YWlsYWJsZSBpbiBQ
eXRob24gMi41KyBzbyB3ZSBoYXZlIHRvCisgICAgIyBwYXJzZSB0aGUgZXhwZWN0ZWQgZGF0ZXRp
bWUgbWFudWFsbHkuCisgICAgbWF0Y2ggPSByZS5tYXRjaChyJyhcZCspLShcZFxkKS0oXGRcZClU
KFxkXGQpOihcZFxkKTooXGRcZCknLCBkYXRlX3RpbWVfc3RyKQorICAgIHNlbGYuYXNzZXJ0VHJ1
ZSgKKyAgICAgICAgcmUubWF0Y2gsCisgICAgICAgICdYTUwgZGF0ZXR0aW1lIHN0cmluZyAlcyBo
YXMgaW5jb3JyZWN0IGZvcm1hdCcgJSBkYXRlX3RpbWVfc3RyKQorICAgIGRhdGVfdGltZV9mcm9t
X3htbCA9IGRhdGV0aW1lLmRhdGV0aW1lKAorICAgICAgICB5ZWFyPWludChtYXRjaC5ncm91cCgx
KSksIG1vbnRoPWludChtYXRjaC5ncm91cCgyKSksCisgICAgICAgIGRheT1pbnQobWF0Y2guZ3Jv
dXAoMykpLCBob3VyPWludChtYXRjaC5ncm91cCg0KSksCisgICAgICAgIG1pbnV0ZT1pbnQobWF0
Y2guZ3JvdXAoNSkpLCBzZWNvbmQ9aW50KG1hdGNoLmdyb3VwKDYpKSkKKworICAgIHRpbWVfZGVs
dGEgPSBhYnMoZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkgLSBkYXRlX3RpbWVfZnJvbV94bWwpCisg
ICAgIyB0aW1lc3RhbXAgdmFsdWUgc2hvdWxkIGJlIG5lYXIgdGhlIGN1cnJlbnQgbG9jYWwgdGlt
ZQorICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0aW1lX2RlbHRhIDwgZGF0ZXRpbWUudGltZWRlbHRhKHNl
Y29uZHM9NjAwKSwKKyAgICAgICAgICAgICAgICAgICAgJ3RpbWVfZGVsdGEgaXMgJXMnICUgdGlt
ZV9kZWx0YSkKKyAgICBhY3R1YWwudW5saW5rKCkKIAogICBkZWYgdGVzdERlZmF1bHRPdXRwdXRG
aWxlKHNlbGYpOgogICAgICIiIgpAQCAtMTQyLDcgKzI2Myw3IEBAIGNsYXNzIEdUZXN0WE1MT3V0
cHV0VW5pdFRlc3QoZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMuR1Rlc3RYTUxUZXN0Q2FzZSk6CiAgICAg
b3V0cHV0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfREVGQVVMVF9PVVRQVVRfRklM
RSkKICAgICBndGVzdF9wcm9nX3BhdGggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRh
YmxlUGF0aCgKLSAgICAgICAgImd0ZXN0X25vX3Rlc3RfdW5pdHRlc3QiKQorICAgICAgICAnZ3Rl
c3Rfbm9fdGVzdF91bml0dGVzdCcpCiAgICAgdHJ5OgogICAgICAgb3MucmVtb3ZlKG91dHB1dF9m
aWxlKQogICAgIGV4Y2VwdCBPU0Vycm9yLCBlOgpAQCAtMTUwLDcgKzI3MSw3IEBAIGNsYXNzIEdU
ZXN0WE1MT3V0cHV0VW5pdFRlc3QoZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMuR1Rlc3RYTUxUZXN0Q2Fz
ZSk6CiAgICAgICAgIHJhaXNlCiAKICAgICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNz
KAotICAgICAgICBbZ3Rlc3RfcHJvZ19wYXRoLCAiJXM9eG1sIiAlIEdURVNUX09VVFBVVF9GTEFH
XSwKKyAgICAgICAgW2d0ZXN0X3Byb2dfcGF0aCwgJyVzPXhtbCcgJSBHVEVTVF9PVVRQVVRfRkxB
R10sCiAgICAgICAgIHdvcmtpbmdfZGlyPWd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpKQog
ICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKICAgICBzZWxmLmFzc2VydEVxdWFscygwLCBwLmV4
aXRfY29kZSkKQEAgLTE2Myw2MCArMjg0LDk4IEBAIGNsYXNzIEdUZXN0WE1MT3V0cHV0VW5pdFRl
c3QoZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMuR1Rlc3RYTUxUZXN0Q2FzZSk6CiAgICAgIiIiCiAKICAg
ICB4bWxfcGF0aCA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QUk9HUkFNX05BTUUgKyAib3V0Lnht
bCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfUFJPR1JBTV9OQU1FICsgJ291
dC54bWwnKQogICAgIGlmIG9zLnBhdGguaXNmaWxlKHhtbF9wYXRoKToKICAgICAgIG9zLnJlbW92
ZSh4bWxfcGF0aCkKIAotICAgIGd0ZXN0X3Byb2dfcGF0aCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0
VGVzdEV4ZWN1dGFibGVQYXRoKEdURVNUX1BST0dSQU1fTkFNRSkKLQotICAgIGNvbW1hbmQgPSBb
Z3Rlc3RfcHJvZ19wYXRoLAotICAgICAgICAgICAgICAgIiVzPXhtbDolcyIgJSAoR1RFU1RfT1VU
UFVUX0ZMQUcsIHhtbF9wYXRoKSwKLSAgICAgICAgICAgICAgICItLXNodXRfZG93bl94bWwiXQor
ICAgIGNvbW1hbmQgPSBbR1RFU1RfUFJPR1JBTV9QQVRILAorICAgICAgICAgICAgICAgJyVzPXht
bDolcycgJSAoR1RFU1RfT1VUUFVUX0ZMQUcsIHhtbF9wYXRoKSwKKyAgICAgICAgICAgICAgICct
LXNodXRfZG93bl94bWwnXQogICAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29t
bWFuZCkKICAgICBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsOgotICAgICAgc2VsZi5hc3NlcnRf
KEZhbHNlLAotICAgICAgICAgICAgICAgICAgICIlcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAlZCIg
JSAoZ3Rlc3RfcHJvZ19uYW1lLCBwLnNpZ25hbCkpCisgICAgICAjIHAuc2lnbmFsIGlzIGF2YWls
YWJsZSBvbmx5IGlmIHAudGVybWluYXRlZF9ieV9zaWduYWwgaXMgVHJ1ZS4KKyAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoCisgICAgICAgICAgcC50ZXJtaW5hdGVkX2J5X3NpZ25hbCwKKyAgICAgICAg
ICAnJXMgd2FzIGtpbGxlZCBieSBzaWduYWwgJWQnICUgKEdURVNUX1BST0dSQU1fTkFNRSwgcC5z
aWduYWwpKQogICAgIGVsc2U6CiAgICAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCiAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygxLCBwLmV4aXRfY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICInJXMnIGV4aXRlZCB3aXRoIGNvZGUgJXMsIHdoaWNoIGRvZXNuJ3QgbWF0Y2ggIgotICAgICAg
ICAgICAgICAgICAgICAgICAgInRoZSBleHBlY3RlZCBleGl0IGNvZGUgJXMuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgJ3RoZSBleHBlY3RlZCBleGl0IGNvZGUgJXMuJwogICAgICAgICAgICAg
ICAgICAgICAgICAgJSAoY29tbWFuZCwgcC5leGl0X2NvZGUsIDEpKQogCiAgICAgc2VsZi5hc3Nl
cnRfKG5vdCBvcy5wYXRoLmlzZmlsZSh4bWxfcGF0aCkpCiAKKyAgZGVmIHRlc3RGaWx0ZXJlZFRl
c3RYbWxPdXRwdXQoc2VsZik6CisgICAgIiIiVmVyaWZpZXMgWE1MIG91dHB1dCB3aGVuIGEgZmls
dGVyIGlzIGFwcGxpZWQuCiAKLSAgZGVmIF9UZXN0WG1sT3V0cHV0KHNlbGYsIGd0ZXN0X3Byb2df
bmFtZSwgZXhwZWN0ZWRfeG1sLCBleHBlY3RlZF9leGl0X2NvZGUpOgorICAgIFJ1bnMgYSB0ZXN0
IHByb2dyYW0gdGhhdCBleGVjdXRlcyBvbmx5IHNvbWUgdGVzdHMgYW5kIHZlcmlmaWVzIHRoYXQK
KyAgICBub24tc2VsZWN0ZWQgdGVzdHMgZG8gbm90IHNob3cgdXAgaW4gdGhlIFhNTCBvdXRwdXQu
CiAgICAgIiIiCi0gICAgQXNzZXJ0cyB0aGF0IHRoZSBYTUwgZG9jdW1lbnQgZ2VuZXJhdGVkIGJ5
IHJ1bm5pbmcgdGhlIHByb2dyYW0KLSAgICBndGVzdF9wcm9nX25hbWUgbWF0Y2hlcyBleHBlY3Rl
ZF94bWwsIGEgc3RyaW5nIGNvbnRhaW5pbmcgYW5vdGhlcgotICAgIFhNTCBkb2N1bWVudC4gIEZ1
cnRoZXJtb3JlLCB0aGUgcHJvZ3JhbSdzIGV4aXQgY29kZSBtdXN0IGJlCi0gICAgZXhwZWN0ZWRf
ZXhpdF9jb2RlLgorCisgICAgc2VsZi5fVGVzdFhtbE91dHB1dChHVEVTVF9QUk9HUkFNX05BTUUs
IEVYUEVDVEVEX0ZJTFRFUkVEX1RFU1RfWE1MLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ZXh0cmFfYXJncz1bJyVzPVN1Y2Nlc3NmdWxUZXN0LionICUgR1RFU1RfRklMVEVSX0ZMQUddKQor
CisgIGRlZiB0ZXN0U2hhcmRlZFRlc3RYbWxPdXRwdXQoc2VsZik6CisgICAgIiIiVmVyaWZpZXMg
WE1MIG91dHB1dCB3aGVuIHJ1biB1c2luZyBtdWx0aXBsZSBzaGFyZHMuCisKKyAgICBSdW5zIGEg
dGVzdCBwcm9ncmFtIHRoYXQgZXhlY3V0ZXMgb25seSBvbmUgc2hhcmQgYW5kIHZlcmlmaWVzIHRo
YXQgdGVzdHMKKyAgICBmcm9tIG90aGVyIHNoYXJkcyBkbyBub3Qgc2hvdyB1cCBpbiB0aGUgWE1M
IG91dHB1dC4KKyAgICAiIiIKKworICAgIHNlbGYuX1Rlc3RYbWxPdXRwdXQoCisgICAgICAgIEdU
RVNUX1BST0dSQU1fTkFNRSwKKyAgICAgICAgRVhQRUNURURfU0hBUkRFRF9URVNUX1hNTCwKKyAg
ICAgICAgMCwKKyAgICAgICAgZXh0cmFfZW52PXtTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMCcsCisg
ICAgICAgICAgICAgICAgICAgVE9UQUxfU0hBUkRTX0VOVl9WQVI6ICcxMCd9KQorCisgIGRlZiBf
R2V0WG1sT3V0cHV0KHNlbGYsIGd0ZXN0X3Byb2dfbmFtZSwgZXh0cmFfYXJncywgZXh0cmFfZW52
LAorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGUpOgorICAgICIiIgorICAg
IFJldHVybnMgdGhlIHhtbCBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgdGhlIHByb2dyYW0g
Z3Rlc3RfcHJvZ19uYW1lLgorICAgIEZ1cnRoZXJtb3JlLCB0aGUgcHJvZ3JhbSdzIGV4aXQgY29k
ZSBtdXN0IGJlIGV4cGVjdGVkX2V4aXRfY29kZS4KICAgICAiIiIKICAgICB4bWxfcGF0aCA9IG9z
LnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBndGVzdF9wcm9nX25hbWUgKyAib3V0LnhtbCIpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3Rlc3RfcHJvZ19uYW1lICsgJ291dC54bWwnKQogICAgIGd0ZXN0X3By
b2dfcGF0aCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKGd0ZXN0X3By
b2dfbmFtZSkKIAotICAgIGNvbW1hbmQgPSBbZ3Rlc3RfcHJvZ19wYXRoLCAiJXM9eG1sOiVzIiAl
IChHVEVTVF9PVVRQVVRfRkxBRywgeG1sX3BhdGgpXQotICAgIHAgPSBndGVzdF90ZXN0X3V0aWxz
LlN1YnByb2Nlc3MoY29tbWFuZCkKKyAgICBjb21tYW5kID0gKFtndGVzdF9wcm9nX3BhdGgsICcl
cz14bWw6JXMnICUgKEdURVNUX09VVFBVVF9GTEFHLCB4bWxfcGF0aCldICsKKyAgICAgICAgICAg
ICAgIGV4dHJhX2FyZ3MpCisgICAgZW52aXJvbl9jb3B5ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAg
ICBpZiBleHRyYV9lbnY6CisgICAgICBlbnZpcm9uX2NvcHkudXBkYXRlKGV4dHJhX2VudikKKyAg
ICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQsIGVudj1lbnZpcm9uX2Nv
cHkpCisKICAgICBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsOgogICAgICAgc2VsZi5hc3NlcnRf
KEZhbHNlLAotICAgICAgICAgICAgICAgICAgICIlcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAlZCIg
JSAoZ3Rlc3RfcHJvZ19uYW1lLCBwLnNpZ25hbCkpCisgICAgICAgICAgICAgICAgICAgJyVzIHdh
cyBraWxsZWQgYnkgc2lnbmFsICVkJyAlIChndGVzdF9wcm9nX25hbWUsIHAuc2lnbmFsKSkKICAg
ICBlbHNlOgogICAgICAgc2VsZi5hc3NlcnRfKHAuZXhpdGVkKQogICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoZXhwZWN0ZWRfZXhpdF9jb2RlLCBwLmV4aXRfY29kZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICInJXMnIGV4aXRlZCB3aXRoIGNvZGUgJXMsIHdoaWNoIGRvZXNuJ3QgbWF0Y2ggIgot
ICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBleHBlY3RlZCBleGl0IGNvZGUgJXMuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgJ3RoZSBleHBlY3RlZCBleGl0IGNvZGUgJXMuJwogICAgICAg
ICAgICAgICAgICAgICAgICAgJSAoY29tbWFuZCwgcC5leGl0X2NvZGUsIGV4cGVjdGVkX2V4aXRf
Y29kZSkpCisgICAgYWN0dWFsID0gbWluaWRvbS5wYXJzZSh4bWxfcGF0aCkKKyAgICByZXR1cm4g
YWN0dWFsCiAKKyAgZGVmIF9UZXN0WG1sT3V0cHV0KHNlbGYsIGd0ZXN0X3Byb2dfbmFtZSwgZXhw
ZWN0ZWRfeG1sLAorICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlLCBleHRy
YV9hcmdzPU5vbmUsIGV4dHJhX2Vudj1Ob25lKToKKyAgICAiIiIKKyAgICBBc3NlcnRzIHRoYXQg
dGhlIFhNTCBkb2N1bWVudCBnZW5lcmF0ZWQgYnkgcnVubmluZyB0aGUgcHJvZ3JhbQorICAgIGd0
ZXN0X3Byb2dfbmFtZSBtYXRjaGVzIGV4cGVjdGVkX3htbCwgYSBzdHJpbmcgY29udGFpbmluZyBh
bm90aGVyCisgICAgWE1MIGRvY3VtZW50LiAgRnVydGhlcm1vcmUsIHRoZSBwcm9ncmFtJ3MgZXhp
dCBjb2RlIG11c3QgYmUKKyAgICBleHBlY3RlZF9leGl0X2NvZGUuCisgICAgIiIiCisKKyAgICBh
Y3R1YWwgPSBzZWxmLl9HZXRYbWxPdXRwdXQoZ3Rlc3RfcHJvZ19uYW1lLCBleHRyYV9hcmdzIG9y
IFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9lbnYgb3Ige30sIGV4
cGVjdGVkX2V4aXRfY29kZSkKICAgICBleHBlY3RlZCA9IG1pbmlkb20ucGFyc2VTdHJpbmcoZXhw
ZWN0ZWRfeG1sKQotICAgIGFjdHVhbCAgID0gbWluaWRvbS5wYXJzZSh4bWxfcGF0aCkKICAgICBz
ZWxmLk5vcm1hbGl6ZVhtbChhY3R1YWwuZG9jdW1lbnRFbGVtZW50KQogICAgIHNlbGYuQXNzZXJ0
RXF1aXZhbGVudE5vZGVzKGV4cGVjdGVkLmRvY3VtZW50RWxlbWVudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhY3R1YWwuZG9jdW1lbnRFbGVtZW50KQogICAgIGV4cGVjdGVkLnVu
bGluaygpCi0gICAgYWN0dWFsICAudW5saW5rKCkKLQorICAgIGFjdHVhbC51bmxpbmsoKQogCiAK
IGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYwppbmRleCBmYzA3
ZWY0NmJkNjY3YWE5MmU1ZGFmN2YyMDJlZmNkNzYzNjZiZjhhLi4yZWU4ODM4MDA1ZWVlYzIzNTcx
YmFlMzg5Yzc5MjY5OGMzMGM0ZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MKQEAgLTI3LDggKzI3
LDYgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotLy8gQXV0aG9yOiBlZWZh
Y21AZ21haWwuY29tIChTZWFuIE1jYWZlZSkKLQogLy8gVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVz
dCBYTUwgb3V0cHV0LgogLy8KIC8vIEEgdXNlciBjYW4gc3BlY2lmeSBYTUwgb3V0cHV0IGluIGEg
R29vZ2xlIFRlc3QgcHJvZ3JhbSB0byBydW4gdmlhCkBAIC0zOCwxMyArMzYsMTYgQEAKIC8vIFRo
aXMgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRlc3QuICBEb24n
dCBydW4gaXQKIC8vIGRpcmVjdGx5LgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgogCiB1c2luZyA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0Owog
dXNpbmcgOjp0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7Cit1c2luZyA6OnRlc3Rpbmc6OlRl
c3RXaXRoUGFyYW07CiB1c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OwordXNpbmcgOjp0ZXN0aW5n
OjpUZXN0OwordXNpbmcgOjp0ZXN0aW5nOjpWYWx1ZXM7CiAKLWNsYXNzIFN1Y2Nlc3NmdWxUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgU3VjY2Vzc2Z1bFRlc3QgOiBwdWJsaWMg
VGVzdCB7CiB9OwogCiBURVNUX0YoU3VjY2Vzc2Z1bFRlc3QsIFN1Y2NlZWRzKSB7CkBAIC01Miwx
NCArNTMsMTQgQEAgVEVTVF9GKFN1Y2Nlc3NmdWxUZXN0LCBTdWNjZWVkcykgewogICBBU1NFUlRf
RVEoMSwgMSk7CiB9CiAKLWNsYXNzIEZhaWxlZFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
CitjbGFzcyBGYWlsZWRUZXN0IDogcHVibGljIFRlc3QgewogfTsKIAogVEVTVF9GKEZhaWxlZFRl
c3QsIEZhaWxzKSB7CiAgIEFTU0VSVF9FUSgxLCAyKTsKIH0KIAotY2xhc3MgRGlzYWJsZWRUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgRGlzYWJsZWRUZXN0IDogcHVibGljIFRl
c3QgewogfTsKIAogVEVTVF9GKERpc2FibGVkVGVzdCwgRElTQUJMRURfdGVzdF9ub3RfcnVuKSB7
CkBAIC05MSw3ICs5MiwxMCBAQCBURVNUKEludmFsaWRDaGFyYWN0ZXJzVGVzdCwgSW52YWxpZENo
YXJhY3RlcnNJbk1lc3NhZ2UpIHsKICAgRkFJTCgpIDw8ICJJbnZhbGlkIGNoYXJhY3RlcnMgaW4g
YnJhY2tldHMgW1x4MVx4Ml0iOwogfQogCi1jbGFzcyBQcm9wZXJ0eVJlY29yZGluZ1Rlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7CitjbGFzcyBQcm9wZXJ0eVJlY29yZGluZ1Rlc3QgOiBwdWJs
aWMgVGVzdCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgeyBSZWNv
cmRQcm9wZXJ0eSgiU2V0VXBUZXN0Q2FzZSIsICJ5ZXMiKTsgfQorICBzdGF0aWMgdm9pZCBUZWFy
RG93blRlc3RDYXNlKCkgeyBSZWNvcmRQcm9wZXJ0eSgiVGVhckRvd25UZXN0Q2FzZSIsICJheWUi
KTsgfQogfTsKIAogVEVTVF9GKFByb3BlcnR5UmVjb3JkaW5nVGVzdCwgT25lUHJvcGVydHkpIHsK
QEAgLTExNywxMiArMTIxLDEyIEBAIFRFU1QoTm9GaXh0dXJlVGVzdCwgUmVjb3JkUHJvcGVydHkp
IHsKICAgUmVjb3JkUHJvcGVydHkoImtleSIsICIxIik7CiB9CiAKLXZvaWQgRXh0ZXJuYWxVdGls
aXR5VGhhdENhbGxzUmVjb3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBpbnQgdmFsdWUpIHsK
K3ZvaWQgRXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpz
dHJpbmcmIGtleSwgaW50IHZhbHVlKSB7CiAgIHRlc3Rpbmc6OlRlc3Q6OlJlY29yZFByb3BlcnR5
KGtleSwgdmFsdWUpOwogfQogCi12b2lkIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFBy
b3BlcnR5KGNvbnN0IGNoYXIqIGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogdmFsdWUpIHsKK3ZvaWQgRXh0ZXJuYWxVdGlsaXR5VGhh
dENhbGxzUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVl
KSB7CiAgIHRlc3Rpbmc6OlRlc3Q6OlJlY29yZFByb3BlcnR5KGtleSwgdmFsdWUpOwogfQogCkBA
IC0xMzQsNiArMTM4LDM1IEBAIFRFU1QoTm9GaXh0dXJlVGVzdCwgRXh0ZXJuYWxVdGlsaXR5VGhh
dENhbGxzUmVjb3JkU3RyaW5nVmFsdWVkUHJvcGVydHkpIHsKICAgRXh0ZXJuYWxVdGlsaXR5VGhh
dENhbGxzUmVjb3JkUHJvcGVydHkoImtleV9mb3JfdXRpbGl0eV9zdHJpbmciLCAiMSIpOwogfQog
CisvLyBWZXJpZmllcyB0aGF0IHRoZSB0ZXN0IHBhcmFtZXRlciB2YWx1ZSBpcyBvdXRwdXQgaW4g
dGhlICd2YWx1ZV9wYXJhbScKKy8vIFhNTCBhdHRyaWJ1dGUgZm9yIHZhbHVlLXBhcmFtZXRlcml6
ZWQgdGVzdHMuCitjbGFzcyBWYWx1ZVBhcmFtVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGlu
dD4ge307CitURVNUX1AoVmFsdWVQYXJhbVRlc3QsIEhhc1ZhbHVlUGFyYW1BdHRyaWJ1dGUpIHt9
CitURVNUX1AoVmFsdWVQYXJhbVRlc3QsIEFub3RoZXJUZXN0VGhhdEhhc1ZhbHVlUGFyYW1BdHRy
aWJ1dGUpIHt9CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChTaW5nbGUsIFZhbHVlUGFyYW1UZXN0
LCBWYWx1ZXMoMzMsIDQyKSk7CisKKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAorLy8gVmVyaWZp
ZXMgdGhhdCB0aGUgdHlwZSBwYXJhbWV0ZXIgbmFtZSBpcyBvdXRwdXQgaW4gdGhlICd0eXBlX3Bh
cmFtJworLy8gWE1MIGF0dHJpYnV0ZSBmb3IgdHlwZWQgdGVzdHMuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgVHlwZWRUZXN0IDogcHVibGljIFRlc3Qge307Cit0eXBlZGVmIHRlc3Rpbmc6
OlR5cGVzPGludCwgbG9uZz4gVHlwZWRUZXN0VHlwZXM7CitUWVBFRF9URVNUX0NBU0UoVHlwZWRU
ZXN0LCBUeXBlZFRlc3RUeXBlcyk7CitUWVBFRF9URVNUKFR5cGVkVGVzdCwgSGFzVHlwZVBhcmFt
QXR0cmlidXRlKSB7fQorI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisvLyBW
ZXJpZmllcyB0aGF0IHRoZSB0eXBlIHBhcmFtZXRlciBuYW1lIGlzIG91dHB1dCBpbiB0aGUgJ3R5
cGVfcGFyYW0nCisvLyBYTUwgYXR0cmlidXRlIGZvciB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSA6
IHB1YmxpYyBUZXN0IHt9OworVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtZXRlcml6ZWRUZXN0
Q2FzZSk7CitUWVBFRF9URVNUX1AoVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSwgSGFzVHlwZVBh
cmFtQXR0cmlidXRlKSB7fQorUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtZXRl
cml6ZWRUZXN0Q2FzZSwgSGFzVHlwZVBhcmFtQXR0cmlidXRlKTsKK3R5cGVkZWYgdGVzdGluZzo6
VHlwZXM8aW50LCBsb25nPiBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlVHlwZXM7CitJTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChTaW5nbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZVR5cGVzKTsKKyNlbmRpZgorCiBpbnQgbWFp
bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKICAgSW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3Yp
OwogCkBAIC0xNDEsNSArMTc0LDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7
CiAgICAgVGVzdEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMgPSBVbml0VGVzdDo6R2V0SW5zdGFu
Y2UoKS0+bGlzdGVuZXJzKCk7CiAgICAgZGVsZXRlIGxpc3RlbmVycy5SZWxlYXNlKGxpc3RlbmVy
cy5kZWZhdWx0X3htbF9nZW5lcmF0b3IoKSk7CiAgIH0KKyAgdGVzdGluZzo6VGVzdDo6UmVjb3Jk
UHJvcGVydHkoImFkX2hvY19wcm9wZXJ0eSIsICI0MiIpOwogICByZXR1cm4gUlVOX0FMTF9URVNU
UygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94
bWxfdGVzdF91dGlscy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1s
X3Rlc3RfdXRpbHMucHkKaW5kZXggYzgzYzNiN2VhNzliMmQ3NjJlZWQ2NjVlMmQ2MWRmOGI5ZWEw
ODQ0My4uMWUwMzU4NTkyZmIwMDg0ZjBhODljMzQzNmZmNzUxNzQ4NjgyN2FjZCAxMDA3NTUKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfdGVzdF91dGlscy5weQor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF90ZXN0X3V0aWxzLnB5
CkBAIC0xLDUgKzEsMyBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCiAjIENvcHlyaWdodCAy
MDA2LCBHb29nbGUgSW5jLgogIyBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwpAQCAtMzEsMTYgKzI5
LDExIEBACiAKICIiIlVuaXQgdGVzdCB1dGlsaXRpZXMgZm9yIGd0ZXN0X3htbF9vdXRwdXQiIiIK
IAotX19hdXRob3JfXyA9ICdlZWZhY21AZ21haWwuY29tIChTZWFuIE1jYWZlZSknCi0KIGltcG9y
dCByZQogZnJvbSB4bWwuZG9tIGltcG9ydCBtaW5pZG9tLCBOb2RlCi0KIGltcG9ydCBndGVzdF90
ZXN0X3V0aWxzCiAKLQotR1RFU1RfT1VUUFVUX0ZMQUcgICAgICAgICA9ICItLWd0ZXN0X291dHB1
dCIKLUdURVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUgPSAidGVzdF9kZXRhaWwueG1sIgorR1RFU1Rf
REVGQVVMVF9PVVRQVVRfRklMRSA9ICd0ZXN0X2RldGFpbC54bWwnCiAKIGNsYXNzIEdUZXN0WE1M
VGVzdENhc2UoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CiAgICIiIgpAQCAtNTgsOCArNTEs
OSBAQCBjbGFzcyBHVGVzdFhNTFRlc3RDYXNlKGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgog
ICAgICogIEl0IGhhcyB0aGUgc2FtZSB0YWcgbmFtZSBhcyBleHBlY3RlZF9ub2RlLgogICAgICog
IEl0IGhhcyB0aGUgc2FtZSBzZXQgb2YgYXR0cmlidXRlcyBhcyBleHBlY3RlZF9ub2RlLCBlYWNo
IHdpdGgKICAgICAgICB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1
dGUgb2YgZXhwZWN0ZWRfbm9kZS4KLSAgICAgICBBbiBleGNlcHRpb24gaXMgYW55IGF0dHJpYnV0
ZSBuYW1lZCAidGltZSIsIHdoaWNoIG5lZWRzIG9ubHkgYmUKLSAgICAgICBjb252ZXJ0aWJsZSB0
byBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4KKyAgICAgICBFeGNlcHRpb25zIGFyZSBhbnkgYXR0
cmlidXRlIG5hbWVkICJ0aW1lIiwgd2hpY2ggbmVlZHMgb25seSBiZQorICAgICAgIGNvbnZlcnRp
YmxlIHRvIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGFuZCBhbnkgYXR0cmlidXRlIG5hbWVkCisg
ICAgICAgInR5cGVfcGFyYW0iIHdoaWNoIG9ubHkgaGFzIHRvIGJlIG5vbi1lbXB0eS4KICAgICAq
ICBJdCBoYXMgYW4gZXF1aXZhbGVudCBzZXQgb2YgY2hpbGQgbm9kZXMgKGluY2x1ZGluZyBlbGVt
ZW50cyBhbmQKICAgICAgICBDREFUQSBzZWN0aW9ucykgYXMgZXhwZWN0ZWRfbm9kZS4gIE5vdGUg
dGhhdCB3ZSBpZ25vcmUgdGhlCiAgICAgICAgb3JkZXIgb2YgdGhlIGNoaWxkcmVuIGFzIHRoZXkg
YXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlIGluIGFueQpAQCAtNzksMjMgKzczLDI3IEBAIGNsYXNz
IEdUZXN0WE1MVGVzdENhc2UoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CiAgICAgYWN0dWFs
X2F0dHJpYnV0ZXMgICA9IGFjdHVhbF9ub2RlICAuYXR0cmlidXRlcwogICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKAogICAgICAgICBleHBlY3RlZF9hdHRyaWJ1dGVzLmxlbmd0aCwgYWN0dWFsX2F0dHJp
YnV0ZXMubGVuZ3RoLAotICAgICAgICAiYXR0cmlidXRlIG51bWJlcnMgZGlmZmVyIGluIGVsZW1l
bnQgIiArIGFjdHVhbF9ub2RlLnRhZ05hbWUpCisgICAgICAgICdhdHRyaWJ1dGUgbnVtYmVycyBk
aWZmZXIgaW4gZWxlbWVudCAlczpcbkV4cGVjdGVkOiAlclxuQWN0dWFsOiAlcicgJSAoCisgICAg
ICAgICAgICBhY3R1YWxfbm9kZS50YWdOYW1lLCBleHBlY3RlZF9hdHRyaWJ1dGVzLmtleXMoKSwK
KyAgICAgICAgICAgIGFjdHVhbF9hdHRyaWJ1dGVzLmtleXMoKSkpCiAgICAgZm9yIGkgaW4gcmFu
Z2UoZXhwZWN0ZWRfYXR0cmlidXRlcy5sZW5ndGgpOgogICAgICAgZXhwZWN0ZWRfYXR0ciA9IGV4
cGVjdGVkX2F0dHJpYnV0ZXMuaXRlbShpKQogICAgICAgYWN0dWFsX2F0dHIgICA9IGFjdHVhbF9h
dHRyaWJ1dGVzLmdldChleHBlY3RlZF9hdHRyLm5hbWUpCiAgICAgICBzZWxmLmFzc2VydF8oCiAg
ICAgICAgICAgYWN0dWFsX2F0dHIgaXMgbm90IE5vbmUsCi0gICAgICAgICAgImV4cGVjdGVkIGF0
dHJpYnV0ZSAlcyBub3QgZm91bmQgaW4gZWxlbWVudCAlcyIgJQorICAgICAgICAgICdleHBlY3Rl
ZCBhdHRyaWJ1dGUgJXMgbm90IGZvdW5kIGluIGVsZW1lbnQgJXMnICUKICAgICAgICAgICAoZXhw
ZWN0ZWRfYXR0ci5uYW1lLCBhY3R1YWxfbm9kZS50YWdOYW1lKSkKLSAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKGV4cGVjdGVkX2F0dHIudmFsdWUsIGFjdHVhbF9hdHRyLnZhbHVlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIiB2YWx1ZXMgb2YgYXR0cmlidXRlICVzIGluIGVsZW1lbnQgJXMgZGlm
ZmVyIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAoZXhwZWN0ZWRfYXR0ci5uYW1lLCBhY3R1
YWxfbm9kZS50YWdOYW1lKSkKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorICAgICAgICAgIGV4
cGVjdGVkX2F0dHIudmFsdWUsIGFjdHVhbF9hdHRyLnZhbHVlLAorICAgICAgICAgICcgdmFsdWVz
IG9mIGF0dHJpYnV0ZSAlcyBpbiBlbGVtZW50ICVzIGRpZmZlcjogJXMgdnMgJXMnICUKKyAgICAg
ICAgICAoZXhwZWN0ZWRfYXR0ci5uYW1lLCBhY3R1YWxfbm9kZS50YWdOYW1lLAorICAgICAgICAg
ICBleHBlY3RlZF9hdHRyLnZhbHVlLCBhY3R1YWxfYXR0ci52YWx1ZSkpCiAKICAgICBleHBlY3Rl
ZF9jaGlsZHJlbiA9IHNlbGYuX0dldENoaWxkcmVuKGV4cGVjdGVkX25vZGUpCiAgICAgYWN0dWFs
X2NoaWxkcmVuID0gc2VsZi5fR2V0Q2hpbGRyZW4oYWN0dWFsX25vZGUpCiAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoCiAgICAgICAgIGxlbihleHBlY3RlZF9jaGlsZHJlbiksIGxlbihhY3R1YWxfY2hp
bGRyZW4pLAotICAgICAgICAibnVtYmVyIG9mIGNoaWxkIGVsZW1lbnRzIGRpZmZlciBpbiBlbGVt
ZW50ICIgKyBhY3R1YWxfbm9kZS50YWdOYW1lKQorICAgICAgICAnbnVtYmVyIG9mIGNoaWxkIGVs
ZW1lbnRzIGRpZmZlciBpbiBlbGVtZW50ICcgKyBhY3R1YWxfbm9kZS50YWdOYW1lKQogICAgIGZv
ciBjaGlsZF9pZCwgY2hpbGQgaW4gZXhwZWN0ZWRfY2hpbGRyZW4uaXRlcml0ZW1zKCk6CiAgICAg
ICBzZWxmLmFzc2VydF8oY2hpbGRfaWQgaW4gYWN0dWFsX2NoaWxkcmVuLAogICAgICAgICAgICAg
ICAgICAgICc8JXM+IGlzIG5vdCBpbiA8JXM+IChpbiBlbGVtZW50ICVzKScgJQpAQCAtMTAzLDE5
ICsxMDEsMjIgQEAgY2xhc3MgR1Rlc3RYTUxUZXN0Q2FzZShndGVzdF90ZXN0X3V0aWxzLlRlc3RD
YXNlKToKICAgICAgIHNlbGYuQXNzZXJ0RXF1aXZhbGVudE5vZGVzKGNoaWxkLCBhY3R1YWxfY2hp
bGRyZW5bY2hpbGRfaWRdKQogCiAgIGlkZW50aWZ5aW5nX2F0dHJpYnV0ZSA9IHsKLSAgICAidGVz
dHN1aXRlcyI6ICJuYW1lIiwKLSAgICAidGVzdHN1aXRlIjogIm5hbWUiLAotICAgICJ0ZXN0Y2Fz
ZSI6ICAibmFtZSIsCi0gICAgImZhaWx1cmUiOiAgICJtZXNzYWdlIiwKLSAgICB9CisgICAgICAn
dGVzdHN1aXRlcyc6ICduYW1lJywKKyAgICAgICd0ZXN0c3VpdGUnOiAnbmFtZScsCisgICAgICAn
dGVzdGNhc2UnOiAnbmFtZScsCisgICAgICAnZmFpbHVyZSc6ICdtZXNzYWdlJywKKyAgICAgICdw
cm9wZXJ0eSc6ICduYW1lJywKKyAgfQogCiAgIGRlZiBfR2V0Q2hpbGRyZW4oc2VsZiwgZWxlbWVu
dCk6CiAgICAgIiIiCiAgICAgRmV0Y2hlcyBhbGwgb2YgdGhlIGNoaWxkIG5vZGVzIG9mIGVsZW1l
bnQsIGEgRE9NIEVsZW1lbnQgb2JqZWN0LgogICAgIFJldHVybnMgdGhlbSBhcyB0aGUgdmFsdWVz
IG9mIGEgZGljdGlvbmFyeSBrZXllZCBieSB0aGUgSURzIG9mIHRoZQotICAgIGNoaWxkcmVuLiAg
Rm9yIDx0ZXN0c3VpdGVzPiwgPHRlc3RzdWl0ZT4gYW5kIDx0ZXN0Y2FzZT4gZWxlbWVudHMsIHRo
ZSBJRAotICAgIGlzIHRoZSB2YWx1ZSBvZiB0aGVpciAibmFtZSIgYXR0cmlidXRlOyBmb3IgPGZh
aWx1cmU+IGVsZW1lbnRzLCBpdCBpcwotICAgIHRoZSB2YWx1ZSBvZiB0aGUgIm1lc3NhZ2UiIGF0
dHJpYnV0ZTsgQ0RBVEEgc2VjdGlvbnMgYW5kIG5vbi13aGl0ZXNwYWNlCisgICAgY2hpbGRyZW4u
ICBGb3IgPHRlc3RzdWl0ZXM+LCA8dGVzdHN1aXRlPiwgPHRlc3RjYXNlPiwgYW5kIDxwcm9wZXJ0
eT4KKyAgICBlbGVtZW50cywgdGhlIElEIGlzIHRoZSB2YWx1ZSBvZiB0aGVpciAibmFtZSIgYXR0
cmlidXRlOyBmb3IgPGZhaWx1cmU+CisgICAgZWxlbWVudHMsIGl0IGlzIHRoZSB2YWx1ZSBvZiB0
aGUgIm1lc3NhZ2UiIGF0dHJpYnV0ZTsgZm9yIDxwcm9wZXJ0aWVzPgorICAgIGVsZW1lbnRzLCBp
dCBpcyB0aGUgdmFsdWUgb2YgdGhlaXIgcGFyZW50J3MgIm5hbWUiIGF0dHJpYnV0ZSBwbHVzIHRo
ZQorICAgIGxpdGVyYWwgc3RyaW5nICJwcm9wZXJ0aWVzIjsgQ0RBVEEgc2VjdGlvbnMgYW5kIG5v
bi13aGl0ZXNwYWNlCiAgICAgdGV4dCBub2RlcyBhcmUgY29uY2F0ZW5hdGVkIGludG8gYSBzaW5n
bGUgQ0RBVEEgc2VjdGlvbiB3aXRoIElECiAgICAgImRldGFpbCIuICBBbiBleGNlcHRpb24gaXMg
cmFpc2VkIGlmIGFueSBlbGVtZW50IG90aGVyIHRoYW4gdGhlIGFib3ZlCiAgICAgZm91ciBpcyBl
bmNvdW50ZXJlZCwgaWYgdHdvIGNoaWxkIGVsZW1lbnRzIHdpdGggdGhlIHNhbWUgaWRlbnRpZnlp
bmcKQEAgLTEyNSwyMSArMTI2LDI3IEBAIGNsYXNzIEdUZXN0WE1MVGVzdENhc2UoZ3Rlc3RfdGVz
dF91dGlscy5UZXN0Q2FzZSk6CiAgICAgY2hpbGRyZW4gPSB7fQogICAgIGZvciBjaGlsZCBpbiBl
bGVtZW50LmNoaWxkTm9kZXM6CiAgICAgICBpZiBjaGlsZC5ub2RlVHlwZSA9PSBOb2RlLkVMRU1F
TlRfTk9ERToKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNoaWxkLnRhZ05hbWUgaW4gc2VsZi5pZGVu
dGlmeWluZ19hdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAiRW5jb3VudGVyZWQgdW5r
bm93biBlbGVtZW50IDwlcz4iICUgY2hpbGQudGFnTmFtZSkKLSAgICAgICAgY2hpbGRJRCA9IGNo
aWxkLmdldEF0dHJpYnV0ZShzZWxmLmlkZW50aWZ5aW5nX2F0dHJpYnV0ZVtjaGlsZC50YWdOYW1l
XSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNoaWxkSUQgbm90IGluIGNoaWxkcmVuKQotICAgICAg
ICBjaGlsZHJlbltjaGlsZElEXSA9IGNoaWxkCisgICAgICAgIGlmIGNoaWxkLnRhZ05hbWUgPT0g
J3Byb3BlcnRpZXMnOgorICAgICAgICAgIHNlbGYuYXNzZXJ0XyhjaGlsZC5wYXJlbnROb2RlIGlz
IG5vdCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAnRW5jb3VudGVyZWQgPHByb3BlcnRp
ZXM+IGVsZW1lbnQgd2l0aG91dCBhIHBhcmVudCcpCisgICAgICAgICAgY2hpbGRfaWQgPSBjaGls
ZC5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZSgnbmFtZScpICsgJy1wcm9wZXJ0aWVzJworICAgICAg
ICBlbHNlOgorICAgICAgICAgIHNlbGYuYXNzZXJ0XyhjaGlsZC50YWdOYW1lIGluIHNlbGYuaWRl
bnRpZnlpbmdfYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAnRW5jb3VudGVyZWQg
dW5rbm93biBlbGVtZW50IDwlcz4nICUgY2hpbGQudGFnTmFtZSkKKyAgICAgICAgICBjaGlsZF9p
ZCA9IGNoaWxkLmdldEF0dHJpYnV0ZSgKKyAgICAgICAgICAgICAgc2VsZi5pZGVudGlmeWluZ19h
dHRyaWJ1dGVbY2hpbGQudGFnTmFtZV0pCisgICAgICAgIHNlbGYuYXNzZXJ0XyhjaGlsZF9pZCBu
b3QgaW4gY2hpbGRyZW4pCisgICAgICAgIGNoaWxkcmVuW2NoaWxkX2lkXSA9IGNoaWxkCiAgICAg
ICBlbGlmIGNoaWxkLm5vZGVUeXBlIGluIFtOb2RlLlRFWFRfTk9ERSwgTm9kZS5DREFUQV9TRUNU
SU9OX05PREVdOgotICAgICAgICBpZiAiZGV0YWlsIiBub3QgaW4gY2hpbGRyZW46CisgICAgICAg
IGlmICdkZXRhaWwnIG5vdCBpbiBjaGlsZHJlbjoKICAgICAgICAgICBpZiAoY2hpbGQubm9kZVR5
cGUgPT0gTm9kZS5DREFUQV9TRUNUSU9OX05PREUgb3IKICAgICAgICAgICAgICAgbm90IGNoaWxk
Lm5vZGVWYWx1ZS5pc3NwYWNlKCkpOgotICAgICAgICAgICAgY2hpbGRyZW5bImRldGFpbCJdID0g
Y2hpbGQub3duZXJEb2N1bWVudC5jcmVhdGVDREFUQVNlY3Rpb24oCisgICAgICAgICAgICBjaGls
ZHJlblsnZGV0YWlsJ10gPSBjaGlsZC5vd25lckRvY3VtZW50LmNyZWF0ZUNEQVRBU2VjdGlvbigK
ICAgICAgICAgICAgICAgICBjaGlsZC5ub2RlVmFsdWUpCiAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgY2hpbGRyZW5bImRldGFpbCJdLm5vZGVWYWx1ZSArPSBjaGlsZC5ub2RlVmFsdWUKKyAgICAg
ICAgICBjaGlsZHJlblsnZGV0YWlsJ10ubm9kZVZhbHVlICs9IGNoaWxkLm5vZGVWYWx1ZQogICAg
ICAgZWxzZToKLSAgICAgICAgc2VsZi5mYWlsKCJFbmNvdW50ZXJlZCB1bmV4cGVjdGVkIG5vZGUg
dHlwZSAlZCIgJSBjaGlsZC5ub2RlVHlwZSkKKyAgICAgICAgc2VsZi5mYWlsKCdFbmNvdW50ZXJl
ZCB1bmV4cGVjdGVkIG5vZGUgdHlwZSAlZCcgJSBjaGlsZC5ub2RlVHlwZSkKICAgICByZXR1cm4g
Y2hpbGRyZW4KIAogICBkZWYgTm9ybWFsaXplWG1sKHNlbGYsIGVsZW1lbnQpOgpAQCAtMTUwLDIz
ICsxNTcsNDAgQEAgY2xhc3MgR1Rlc3RYTUxUZXN0Q2FzZShndGVzdF90ZXN0X3V0aWxzLlRlc3RD
YXNlKToKICAgICAqICBUaGUgInRpbWUiIGF0dHJpYnV0ZSBvZiA8dGVzdHN1aXRlcz4sIDx0ZXN0
c3VpdGU+IGFuZCA8dGVzdGNhc2U+CiAgICAgICAgZWxlbWVudHMgaXMgcmVwbGFjZWQgd2l0aCBh
IHNpbmdsZSBhc3RlcmlzaywgaWYgaXQgY29udGFpbnMKICAgICAgICBvbmx5IGRpZ2l0IGNoYXJh
Y3RlcnMuCi0gICAgKiAgVGhlIGxpbmUgbnVtYmVyIHJlcG9ydGVkIGluIHRoZSBmaXJzdCBsaW5l
IG9mIHRoZSAibWVzc2FnZSIKLSAgICAgICBhdHRyaWJ1dGUgb2YgPGZhaWx1cmU+IGVsZW1lbnRz
IGlzIHJlcGxhY2VkIHdpdGggYSBzaW5nbGUgYXN0ZXJpc2suCisgICAgKiAgVGhlICJ0aW1lc3Rh
bXAiIGF0dHJpYnV0ZSBvZiA8dGVzdHN1aXRlcz4gZWxlbWVudHMgaXMgcmVwbGFjZWQgd2l0aCBh
CisgICAgICAgc2luZ2xlIGFzdGVyaXNrLCBpZiBpdCBjb250YWlucyBhIHZhbGlkIElTTzg2MDEg
ZGF0ZXRpbWUgdmFsdWUuCisgICAgKiAgVGhlICJ0eXBlX3BhcmFtIiBhdHRyaWJ1dGUgb2YgPHRl
c3RjYXNlPiBlbGVtZW50cyBpcyByZXBsYWNlZCB3aXRoIGEKKyAgICAgICBzaW5nbGUgYXN0ZXJp
c2sgKGlmIGl0IHNuIG5vbi1lbXB0eSkgYXMgaXQgaXMgdGhlIHR5cGUgbmFtZSByZXR1cm5lZAor
ICAgICAgIGJ5IHRoZSBjb21waWxlciBhbmQgaXMgcGxhdGZvcm0gZGVwZW5kZW50LgorICAgICog
IFRoZSBsaW5lIGluZm8gcmVwb3J0ZWQgaW4gdGhlIGZpcnN0IGxpbmUgb2YgdGhlICJtZXNzYWdl
IgorICAgICAgIGF0dHJpYnV0ZSBhbmQgQ0RBVEEgc2VjdGlvbiBvZiA8ZmFpbHVyZT4gZWxlbWVu
dHMgaXMgcmVwbGFjZWQgd2l0aCB0aGUKKyAgICAgICBmaWxlJ3MgYmFzZW5hbWUgYW5kIGEgc2lu
Z2xlIGFzdGVyaXNrIGZvciB0aGUgbGluZSBudW1iZXIuCiAgICAgKiAgVGhlIGRpcmVjdG9yeSBu
YW1lcyBpbiBmaWxlIHBhdGhzIGFyZSByZW1vdmVkLgogICAgICogIFRoZSBzdGFjayB0cmFjZXMg
YXJlIHJlbW92ZWQuCiAgICAgIiIiCiAKLSAgICBpZiBlbGVtZW50LnRhZ05hbWUgaW4gKCJ0ZXN0
c3VpdGVzIiwgInRlc3RzdWl0ZSIsICJ0ZXN0Y2FzZSIpOgotICAgICAgdGltZSA9IGVsZW1lbnQu
Z2V0QXR0cmlidXRlTm9kZSgidGltZSIpCi0gICAgICB0aW1lLnZhbHVlID0gcmUuc3ViKHIiXlxk
KyhcLlxkKyk/JCIsICIqIiwgdGltZS52YWx1ZSkKLSAgICBlbGlmIGVsZW1lbnQudGFnTmFtZSA9
PSAiZmFpbHVyZSI6CisgICAgaWYgZWxlbWVudC50YWdOYW1lID09ICd0ZXN0c3VpdGVzJzoKKyAg
ICAgIHRpbWVzdGFtcCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlTm9kZSgndGltZXN0YW1wJykKKyAg
ICAgIHRpbWVzdGFtcC52YWx1ZSA9IHJlLnN1YihyJ15cZHs0fS1cZFxkLVxkXGRUXGRcZDpcZFxk
OlxkXGQkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKicsIHRpbWVzdGFtcC52
YWx1ZSkKKyAgICBpZiBlbGVtZW50LnRhZ05hbWUgaW4gKCd0ZXN0c3VpdGVzJywgJ3Rlc3RzdWl0
ZScsICd0ZXN0Y2FzZScpOgorICAgICAgdGltZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlTm9kZSgn
dGltZScpCisgICAgICB0aW1lLnZhbHVlID0gcmUuc3ViKHInXlxkKyhcLlxkKyk/JCcsICcqJywg
dGltZS52YWx1ZSkKKyAgICAgIHR5cGVfcGFyYW0gPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUo
J3R5cGVfcGFyYW0nKQorICAgICAgaWYgdHlwZV9wYXJhbSBhbmQgdHlwZV9wYXJhbS52YWx1ZToK
KyAgICAgICAgdHlwZV9wYXJhbS52YWx1ZSA9ICcqJworICAgIGVsaWYgZWxlbWVudC50YWdOYW1l
ID09ICdmYWlsdXJlJzoKKyAgICAgIHNvdXJjZV9saW5lX3BhdCA9IHInXi4qWy9cXF0oLio6KVxk
K1xuJworICAgICAgIyBSZXBsYWNlcyB0aGUgc291cmNlIGxpbmUgaW5mb3JtYXRpb24gd2l0aCBh
IG5vcm1hbGl6ZWQgZm9ybS4KKyAgICAgIG1lc3NhZ2UgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5v
ZGUoJ21lc3NhZ2UnKQorICAgICAgbWVzc2FnZS52YWx1ZSA9IHJlLnN1Yihzb3VyY2VfbGluZV9w
YXQsICdcXDEqXG4nLCBtZXNzYWdlLnZhbHVlKQogICAgICAgZm9yIGNoaWxkIGluIGVsZW1lbnQu
Y2hpbGROb2RlczoKICAgICAgICAgaWYgY2hpbGQubm9kZVR5cGUgPT0gTm9kZS5DREFUQV9TRUNU
SU9OX05PREU6Ci0gICAgICAgICAgIyBSZW1vdmVzIHRoZSBzb3VyY2UgbGluZSBudW1iZXIuCi0g
ICAgICAgICAgY2RhdGEgPSByZS5zdWIociJeLipbL1xcXSguKjopXGQrXG4iLCAiXFwxKlxuIiwg
Y2hpbGQubm9kZVZhbHVlKQorICAgICAgICAgICMgUmVwbGFjZXMgdGhlIHNvdXJjZSBsaW5lIGlu
Zm9ybWF0aW9uIHdpdGggYSBub3JtYWxpemVkIGZvcm0uCisgICAgICAgICAgY2RhdGEgPSByZS5z
dWIoc291cmNlX2xpbmVfcGF0LCAnXFwxKlxuJywgY2hpbGQubm9kZVZhbHVlKQogICAgICAgICAg
ICMgUmVtb3ZlcyB0aGUgYWN0dWFsIHN0YWNrIHRyYWNlLgotICAgICAgICAgIGNoaWxkLm5vZGVW
YWx1ZSA9IHJlLnN1YihyIlxuU3RhY2sgdHJhY2U6XG4oLnxcbikqIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiIsIGNkYXRhKQorICAgICAgICAgIGNoaWxkLm5vZGVWYWx1
ZSA9IHJlLnN1YihyJ1N0YWNrIHRyYWNlOlxuKC58XG4pKicsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdTdGFjayB0cmFjZTpcbionLCBjZGF0YSkKICAgICBmb3IgY2hpbGQg
aW4gZWxlbWVudC5jaGlsZE5vZGVzOgogICAgICAgaWYgY2hpbGQubm9kZVR5cGUgPT0gTm9kZS5F
TEVNRU5UX05PREU6CiAgICAgICAgIHNlbGYuTm9ybWFsaXplWG1sKGNoaWxkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9kdWN0aW9uLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9kdWN0aW9uLmNjCmluZGV4IDhiOGE0MGI0NGU5YjQxZjRj
MjlkNzU1MjY5MDg1NjhhZjIzNzkxMmQuLjBmNjlmNmRiZDJlMjZhM2E5YmRmNzU2YjQ4MDczN2E0
ZWY0MjE4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVj
dGlvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3Byb2R1Y3Rpb24uY2MK
QEAgLTI2LDEwICsyNiw5IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKIC8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4p
Ci0vLwotLy8gVGhpcyBpcyBwYXJ0IG9mIHRoZSB1bml0IHRlc3QgZm9yIGluY2x1ZGUvZ3Rlc3Qv
Z3Rlc3RfcHJvZC5oLgorLy8gVGhpcyBpcyBwYXJ0IG9mIHRoZSB1bml0IHRlc3QgZm9yIGd0ZXN0
X3Byb2QuaC4KIAogI2luY2x1ZGUgInByb2R1Y3Rpb24uaCIKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9kdWN0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L3Byb2R1Y3Rpb24uaAppbmRleCA4ZjE2ZmZmYTI0MTZjNTcxNTNmYWIzZTA5N2Qx
MzRhZjFmYjRhOWJjLi41NDI3MjNiNzA4NzM4N2Q0ZmI1MjlmYzA3YTY4OGJjMWM4ZDc4YjFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3Byb2R1Y3Rpb24uaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3Byb2R1Y3Rpb24uaApAQCAtMjYsMTUgKzI2
LDE0IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
IC8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGhp
cyBpcyBwYXJ0IG9mIHRoZSB1bml0IHRlc3QgZm9yIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5o
LgorLy8gVGhpcyBpcyBwYXJ0IG9mIHRoZSB1bml0IHRlc3QgZm9yIGd0ZXN0X3Byb2QuaC4KIAog
I2lmbmRlZiBHVEVTVF9URVNUX1BST0RVQ1RJT05fSF8KICNkZWZpbmUgR1RFU1RfVEVTVF9QUk9E
VUNUSU9OX0hfCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdF9wcm9kLmg+CisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3RfcHJvZC5oIgogCiBjbGFzcyBQcml2YXRlQ29kZSB7CiAgcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ydW5fdGVzdHNfdXRpbC5weSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3RzX3V0aWwucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDllNTc5MzFlYmEyYzYxMWUwYTFmNjBmZmY0ZjA5NTM5ZTEwNzY3
YWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ydW5fdGVzdHNfdXRpbC5weQorKysgL2Rldi9udWxsCkBA
IC0xLDQ2NiArMCwwIEBACi0jIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBk
aXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJQcm92aWRlcyBmYWNpbGl0aWVzIGZv
ciBydW5uaW5nIFNDb25zLWJ1aWx0IEdvb2dsZSBUZXN0L01vY2sgdGVzdHMuIiIiCi0KLQotaW1w
b3J0IG9wdHBhcnNlCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNldHMKLWltcG9ydCBz
eXMKLQotdHJ5OgotICAjIHN1YnJvY2VzcyBtb2R1bGUgaXMgYSBwcmVmZXJhYmxlIHdheSB0byBp
bnZva2Ugc3VicHJvY2Vzc2VzIGJ1dCBpdCBtYXkKLSAgIyBub3QgYmUgYXZhaWxhYmxlIG9uIE1h
Y09TIFggMTAuNC4KLSAgIyBTdXBwcmVzc2VzIHRoZSAnSW1wb3J0IG5vdCBhdCB0aGUgdG9wIG9m
IHRoZSBmaWxlJyBsaW50IGNvbXBsYWludC4KLSAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2MjA0
Ci0gIGltcG9ydCBzdWJwcm9jZXNzCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gIHN1YnByb2Nlc3Mg
PSBOb25lCi0KLUhFTFBfTVNHID0gIiIiUnVucyB0aGUgc3BlY2lmaWVkIHRlc3RzIGZvciAlKHBy
b2opcy4KLQotU1lOT1BTSVMKLSAgICAgICBydW5fdGVzdHMucHkgW09QVElPTl0uLi4gW0JVSUxE
X0RJUl0uLi4gW1RFU1RdLi4uCi0KLURFU0NSSVBUSU9OCi0gICAgICAgUnVucyB0aGUgc3BlY2lm
aWVkIHRlc3RzIChlaXRoZXIgYmluYXJ5IG9yIFB5dGhvbiksIGFuZCBwcmludHMgYQotICAgICAg
IHN1bW1hcnkgb2YgdGhlIHJlc3VsdHMuIEJVSUxEX0RJUlMgd2lsbCBiZSB1c2VkIHRvIHNlYXJj
aCBmb3IgdGhlCi0gICAgICAgYmluYXJpZXMuIElmIG5vIFRFU1RzIGFyZSBzcGVjaWZpZWQsIGFs
bCBiaW5hcnkgdGVzdHMgZm91bmQgaW4KLSAgICAgICBCVUlMRF9ESVJzIGFuZCBhbGwgUHl0aG9u
IHRlc3RzIGZvdW5kIGluIHRoZSBkaXJlY3RvcnkgdGVzdC8gKGluIHRoZQotICAgICAgICUocHJv
ailzIHJvb3QpIGFyZSBydW4uCi0KLSAgICAgICBURVNUIGlzIGEgbmFtZSBvZiBlaXRoZXIgYSBi
aW5hcnkgb3IgYSBQeXRob24gdGVzdC4gQSBiaW5hcnkgdGVzdCBpcwotICAgICAgIGFuIGV4ZWN1
dGFibGUgZmlsZSBuYW1lZCAqX3Rlc3Qgb3IgKl91bml0dGVzdCAod2l0aCB0aGUgLmV4ZQotICAg
ICAgIGV4dGVuc2lvbiBvbiBXaW5kb3dzKSBBIFB5dGhvbiB0ZXN0IGlzIGEgc2NyaXB0IG5hbWVk
ICpfdGVzdC5weSBvcgotICAgICAgICpfdW5pdHRlc3QucHkuCi0KLU9QVElPTlMKLSAgICAgICAt
aCwgLS1oZWxwCi0gICAgICAgICAgICAgIFByaW50IHRoaXMgaGVscCBtZXNzYWdlLgotICAgICAg
IC1jIENPTkZJR1VSQVRJT05TCi0gICAgICAgICAgICAgIFNwZWNpZnkgYnVpbGQgZGlyZWN0b3Jp
ZXMgdmlhIGJ1aWxkIGNvbmZpZ3VyYXRpb25zLgotICAgICAgICAgICAgICBDT05GSUdVUkFUSU9O
UyBpcyBlaXRoZXIgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBidWlsZAotICAgICAgICAgICAg
ICBjb25maWd1cmF0aW9ucyBvciAnYWxsJy4gRWFjaCBjb25maWd1cmF0aW9uIGlzIGVxdWl2YWxl
bnQgdG8KLSAgICAgICAgICAgICAgYWRkaW5nICdzY29ucy9idWlsZC88Y29uZmlndXJhdGlvbj4v
JShwcm9qKXMvc2NvbnMnIHRvIEJVSUxEX0RJUnMuCi0gICAgICAgICAgICAgIFNwZWNpZnlpbmcg
LWM9YWxsIGlzIGVxdWl2YWxlbnQgdG8gcHJvdmlkaW5nIGFsbCBkaXJlY3RvcmllcwotICAgICAg
ICAgICAgICBsaXN0ZWQgaW4gS05PV04gQlVJTEQgRElSRUNUT1JJRVMgc2VjdGlvbiBiZWxvdy4K
LSAgICAgICAtYQotICAgICAgICAgICAgICBFcXVpdmFsZW50IHRvIC1jPWFsbAotICAgICAgIC1i
Ci0gICAgICAgICAgICAgIEVxdWl2YWxlbnQgdG8gLWM9YWxsIHdpdGggdGhlIGV4Y2VwdGlvbiB0
aGF0IHRoZSBzY3JpcHQgd2lsbCBub3QKLSAgICAgICAgICAgICAgZmFpbCBpZiBzb21lIG9mIHRo
ZSBLTk9XTiBCVUlMRCBESVJFQ1RPUklFUyBkbyBub3QgZXhpc3RzOyB0aGUKLSAgICAgICAgICAg
ICAgc2NyaXB0IHdpbGwgc2ltcGx5IG5vdCBydW4gdGhlIHRlc3RzIHRoZXJlLiAnYicgc3RhbmRz
IGZvcgotICAgICAgICAgICAgICAnYnVpbHQgZGlyZWN0b3JpZXMnLgotCi1SRVRVUk4gVkFMVUUK
LSAgICAgICBSZXR1cm5zIDAgaWYgYWxsIHRlc3RzIGFyZSBzdWNjZXNzZnVsOyBvdGhlcndpc2Ug
cmV0dXJucyAxLgotCi1FWEFNUExFUwotICAgICAgIHJ1bl90ZXN0cy5weQotICAgICAgICAgICAg
ICBSdW5zIGFsbCB0ZXN0cyBmb3IgdGhlIGRlZmF1bHQgYnVpbGQgY29uZmlndXJhdGlvbi4KLSAg
ICAgICBydW5fdGVzdHMucHkgLWEKLSAgICAgICAgICAgICAgUnVucyBhbGwgdGVzdHMgd2l0aCBi
aW5hcmllcyBpbiBLTk9XTiBCVUlMRCBESVJFQ1RPUklFUy4KLSAgICAgICBydW5fdGVzdHMucHkg
LWIKLSAgICAgICAgICAgICAgUnVucyBhbGwgdGVzdHMgaW4gS05PV04gQlVJTEQgRElSRUNUT1JJ
RVMgdGhhdCBoYXZlIGJlZW4KLSAgICAgICAgICAgICAgYnVpbHQuCi0gICAgICAgcnVuX3Rlc3Rz
LnB5IGZvby8KLSAgICAgICAgICAgICAgUnVucyBhbGwgdGVzdHMgaW4gdGhlIGZvby8gZGlyZWN0
b3J5IGFuZCBhbGwgUHl0aG9uIHRlc3RzIGluCi0gICAgICAgICAgICAgIHRoZSBkaXJlY3Rvcnkg
dGVzdC4gVGhlIFB5dGhvbiB0ZXN0cyBhcmUgaW5zdHJ1Y3RlZCB0byBsb29rCi0gICAgICAgICAg
ICAgIGZvciBiaW5hcmllcyBpbiBmb28vLgotICAgICAgIHJ1bl90ZXN0cy5weSBiYXJfdGVzdC5l
eGUgdGVzdC9iYXpfdGVzdC5leGUgZm9vLyBiYXIvCi0gICAgICAgICAgICAgIFJ1bnMgZm9vL2Jh
cl90ZXN0LmV4ZSwgYmFyL2Jhcl90ZXN0LmV4ZSwgZm9vL2Jhel90ZXN0LmV4ZSwgYW5kCi0gICAg
ICAgICAgICAgIGJhci9iYXpfdGVzdC5leGUuCi0gICAgICAgcnVuX3Rlc3RzLnB5IGZvbyBiYXIg
dGVzdC9mb29fdGVzdC5weQotICAgICAgICAgICAgICBSdW5zIHRlc3QvZm9vX3Rlc3QucHkgdHdp
Y2UgaW5zdHJ1Y3RpbmcgaXQgdG8gbG9vayBmb3IgaXRzCi0gICAgICAgICAgICAgIHRlc3QgYmlu
YXJpZXMgaW4gdGhlIGRpcmVjdG9yaWVzIGZvbyBhbmQgYmFyLAotICAgICAgICAgICAgICBjb3Jy
ZXNwb25kaW5nbHkuCi0KLUtOT1dOIEJVSUxEIERJUkVDVE9SSUVTCi0gICAgICBydW5fdGVzdHMu
cHkga25vd3MgYWJvdXQgZGlyZWN0b3JpZXMgd2hlcmUgdGhlIFNDb25zIGJ1aWxkIHNjcmlwdAot
ICAgICAgZGVwb3NpdHMgaXRzIHByb2R1Y3RzLiBUaGVzZSBhcmUgdGhlIGRpcmVjdG9yaWVzIHdo
ZXJlIHJ1bl90ZXN0cy5weQotICAgICAgd2lsbCBiZSBsb29raW5nIGZvciBpdHMgYmluYXJpZXMu
IEN1cnJlbnRseSwgJShwcm9qKXMncyBTQ29uc3RydWN0IGZpbGUKLSAgICAgIGRlZmluZXMgdGhl
bSBhcyBmb2xsb3dzICh0aGUgZGVmYXVsdCBidWlsZCBkaXJlY3RvcnkgaXMgdGhlIGZpcnN0IG9u
ZQotICAgICAgbGlzdGVkIGluIGVhY2ggZ3JvdXApOgotICAgICAgT24gV2luZG93czoKLSAgICAg
ICAgICAgICAgPCUocHJvailzIHJvb3Q+L3Njb25zL2J1aWxkL3dpbi1kYmc4LyUocHJvailzL3Nj
b25zLwotICAgICAgICAgICAgICA8JShwcm9qKXMgcm9vdD4vc2NvbnMvYnVpbGQvd2luLW9wdDgv
JShwcm9qKXMvc2NvbnMvCi0gICAgICBPbiBNYWM6Ci0gICAgICAgICAgICAgIDwlKHByb2opcyBy
b290Pi9zY29ucy9idWlsZC9tYWMtZGJnLyUocHJvailzL3Njb25zLwotICAgICAgICAgICAgICA8
JShwcm9qKXMgcm9vdD4vc2NvbnMvYnVpbGQvbWFjLW9wdC8lKHByb2opcy9zY29ucy8KLSAgICAg
IE9uIG90aGVyIHBsYXRmb3JtczoKLSAgICAgICAgICAgICAgPCUocHJvailzIHJvb3Q+L3Njb25z
L2J1aWxkL2RiZy8lKHByb2opcy9zY29ucy8KLSAgICAgICAgICAgICAgPCUocHJvailzIHJvb3Q+
L3Njb25zL2J1aWxkL29wdC8lKHByb2opcy9zY29ucy8iIiIKLQotSVNfV0lORE9XUyA9IG9zLm5h
bWUgPT0gJ250JwotSVNfTUFDID0gb3MubmFtZSA9PSAncG9zaXgnIGFuZCBvcy51bmFtZSgpWzBd
ID09ICdEYXJ3aW4nCi1JU19DWUdXSU4gPSBvcy5uYW1lID09ICdwb3NpeCcgYW5kICdDWUdXSU4n
IGluIG9zLnVuYW1lKClbMF0KLQotIyBEZWZpbml0aW9uIG9mIENPTkZJR1MgbXVzdCBtYXRjaCB0
aGF0IG9mIHRoZSBidWlsZCBkaXJlY3RvcnkgbmFtZXMgaW4gdGhlCi0jIFNDb25zdHJ1Y3Qgc2Ny
aXB0LiBUaGUgZmlyc3QgbGlzdCBpdGVtIGlzIHRoZSBkZWZhdWx0IGJ1aWxkIGNvbmZpZ3VyYXRp
b24uCi1pZiBJU19XSU5ET1dTOgotICBDT05GSUdTID0gKCd3aW4tZGJnOCcsICd3aW4tb3B0OCcp
Ci1lbGlmIElTX01BQzoKLSAgQ09ORklHUyA9ICgnbWFjLWRiZycsICdtYWMtb3B0JykKLWVsc2U6
Ci0gIENPTkZJR1MgPSAoJ2RiZycsICdvcHQnKQotCi1pZiBJU19XSU5ET1dTIG9yIElTX0NZR1dJ
TjoKLSAgUFlUSE9OX1RFU1RfUkVHRVggPSByZS5jb21waWxlKHInXyh1bml0KT90ZXN0XC5weSQn
LCByZS5JR05PUkVDQVNFKQotICBCSU5BUllfVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocidfKHVu
aXQpP3Rlc3QoXC5leGUpPyQnLCByZS5JR05PUkVDQVNFKQotICBCSU5BUllfVEVTVF9TRUFSQ0hf
UkVHRVggPSByZS5jb21waWxlKHInXyh1bml0KT90ZXN0XC5leGUkJywgcmUuSUdOT1JFQ0FTRSkK
LWVsc2U6Ci0gIFBZVEhPTl9URVNUX1JFR0VYID0gcmUuY29tcGlsZShyJ18odW5pdCk/dGVzdFwu
cHkkJykKLSAgQklOQVJZX1RFU1RfUkVHRVggPSByZS5jb21waWxlKHInXyh1bml0KT90ZXN0JCcp
Ci0gIEJJTkFSWV9URVNUX1NFQVJDSF9SRUdFWCA9IEJJTkFSWV9URVNUX1JFR0VYCi0KLQotZGVm
IF9HZXRHdGVzdEJ1aWxkRGlyKGluamVjdGVkX29zLCBzY3JpcHRfZGlyLCBjb25maWcpOgotICAi
IiJDYWxjdWxhdGVzIHBhdGggdG8gdGhlIEdvb2dsZSBUZXN0IFNDb25zIGJ1aWxkIGRpcmVjdG9y
eS4iIiIKLQotICByZXR1cm4gaW5qZWN0ZWRfb3MucGF0aC5ub3JtcGF0aChpbmplY3RlZF9vcy5w
YXRoLmpvaW4oc2NyaXB0X2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdzY29ucy9idWlsZCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3Rlc3Qvc2Nv
bnMnKSkKLQotCi1kZWYgX0dldENvbmZpZ0Zyb21CdWlsZERpcihidWlsZF9kaXIpOgotICAiIiJF
eHRyYWN0cyB0aGUgY29uZmlndXJhdGlvbiBuYW1lIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeS4i
IiIKLQotICAjIFdlIGRvbid0IHdhbnQgdG8gZGVwZW5kIG9uIGJ1aWxkX2RpciBjb250YWluaW5n
IHRoZSBjb3JyZWN0IHBhdGgKLSAgIyBzZXBhcmF0b3JzLgotICBtID0gcmUubWF0Y2gocicuKltc
XC9dKFteXFwvXSspW1xcL11bXlxcL10rW1xcL11zY29uc1tcXC9dPyQnLCBidWlsZF9kaXIpCi0g
IGlmIG06Ci0gICAgcmV0dXJuIG0uZ3JvdXAoMSkKLSAgZWxzZToKLSAgICBwcmludCA+PnN5cy5z
dGRlcnIsICgnJXMgaXMgYW4gaW52YWxpZCBidWlsZCBkaXJlY3RvcnkgdGhhdCBkb2VzIG5vdCAn
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmQgdG8gYW55IGNvbmZpZ3VyYXRp
b24uJyAlIChidWlsZF9kaXIsKSkKLSAgICByZXR1cm4gJycKLQotCi0jIEFsbCBwYXRocyBpbiB0
aGlzIHNjcmlwdCBhcmUgZWl0aGVyIGFic29sdXRlIG9yIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50
Ci0jIHdvcmtpbmcgZGlyZWN0b3J5LCB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZC4KLWNsYXNz
IFRlc3RSdW5uZXIob2JqZWN0KToKLSAgIiIiUHJvdmlkZXMgZmFjaWxpdGllcyBmb3IgcnVubmlu
ZyBQeXRob24gYW5kIGJpbmFyeSB0ZXN0cyBmb3IgR29vZ2xlIFRlc3QuIiIiCi0KLSAgZGVmIF9f
aW5pdF9fKHNlbGYsCi0gICAgICAgICAgICAgICBzY3JpcHRfZGlyLAotICAgICAgICAgICAgICAg
YnVpbGRfZGlyX3Zhcl9uYW1lPSdHVEVTVF9CVUlMRF9ESVInLAotICAgICAgICAgICAgICAgaW5q
ZWN0ZWRfb3M9b3MsCi0gICAgICAgICAgICAgICBpbmplY3RlZF9zdWJwcm9jZXNzPXN1YnByb2Nl
c3MsCi0gICAgICAgICAgICAgICBpbmplY3RlZF9idWlsZF9kaXJfZmluZGVyPV9HZXRHdGVzdEJ1
aWxkRGlyKToKLSAgICAiIiJJbml0aWFsaXplcyBhIFRlc3RSdW5uZXIgaW5zdGFuY2UuCi0KLSAg
ICBBcmdzOgotICAgICAgc2NyaXB0X2RpcjogICAgICAgICAgICAgICAgRmlsZSBwYXRoIHRvIHRo
ZSBjYWxsaW5nIHNjcmlwdC4KLSAgICAgIGJ1aWxkX2Rpcl92YXJfbmFtZTogICAgICAgIE5hbWUg
b2YgdGhlIGVudiB2YXJpYWJsZSB1c2VkIHRvIHBhc3MgdGhlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aGUgYnVpbGQgZGlyZWN0b3J5IHBhdGggdG8gdGhlIGludm9rZWQKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzLgotICAgICAgaW5qZWN0ZWRfb3M6
ICAgICAgICAgICAgICAgc3RhbmRhcmQgb3MgbW9kdWxlIG9yIGEgbW9jay9zdHViIGZvcgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZy4KLSAgICAgIGluamVjdGVkX3N1
YnByb2Nlc3M6ICAgICAgIHN0YW5kYXJkIHN1YnByb2Nlc3MgbW9kdWxlIG9yIGEgbW9jay9zdHVi
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGVzdGluZwotICAgICAgaW5q
ZWN0ZWRfYnVpbGRfZGlyX2ZpbmRlcjogZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHRoZSBwYXRo
IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgZGlyZWN0b3J5
LgotICAgICIiIgotCi0gICAgc2VsZi5vcyA9IGluamVjdGVkX29zCi0gICAgc2VsZi5zdWJwcm9j
ZXNzID0gaW5qZWN0ZWRfc3VicHJvY2VzcwotICAgIHNlbGYuYnVpbGRfZGlyX2ZpbmRlciA9IGlu
amVjdGVkX2J1aWxkX2Rpcl9maW5kZXIKLSAgICBzZWxmLmJ1aWxkX2Rpcl92YXJfbmFtZSA9IGJ1
aWxkX2Rpcl92YXJfbmFtZQotICAgIHNlbGYuc2NyaXB0X2RpciA9IHNjcmlwdF9kaXIKLQotICBk
ZWYgX0dldEJ1aWxkRGlyRm9yQ29uZmlnKHNlbGYsIGNvbmZpZyk6Ci0gICAgIiIiUmV0dXJucyB0
aGUgYnVpbGQgZGlyZWN0b3J5IGZvciBhIGdpdmVuIGNvbmZpZ3VyYXRpb24uIiIiCi0KLSAgICBy
ZXR1cm4gc2VsZi5idWlsZF9kaXJfZmluZGVyKHNlbGYub3MsIHNlbGYuc2NyaXB0X2RpciwgY29u
ZmlnKQotCi0gIGRlZiBfUnVuKHNlbGYsIGFyZ3MpOgotICAgICIiIlJ1bnMgdGhlIGV4ZWN1dGFi
bGUgd2l0aCBnaXZlbiBhcmdzIChhcmdzWzBdIGlzIHRoZSBleGVjdXRhYmxlIG5hbWUpLgotCi0g
ICAgQXJnczoKLSAgICAgIGFyZ3M6IENvbW1hbmQgbGluZSBhcmd1bWVudHMgZm9yIHRoZSBwcm9j
ZXNzLgotCi0gICAgUmV0dXJuczoKLSAgICAgIFByb2Nlc3MncyBleGl0IGNvZGUgaWYgaXQgZXhp
dHMgbm9ybWFsbHksIG9yIC1zaWduYWwgaWYgdGhlIHByb2Nlc3MgaXMKLSAgICAgIGtpbGxlZCBi
eSBhIHNpZ25hbC4KLSAgICAiIiIKLQotICAgIGlmIHNlbGYuc3VicHJvY2VzczoKLSAgICAgIHJl
dHVybiBzZWxmLnN1YnByb2Nlc3MuUG9wZW4oYXJncykud2FpdCgpCi0gICAgZWxzZToKLSAgICAg
IHJldHVybiBzZWxmLm9zLnNwYXdudihzZWxmLm9zLlBfV0FJVCwgYXJnc1swXSwgYXJncykKLQot
ICBkZWYgX1J1bkJpbmFyeVRlc3Qoc2VsZiwgdGVzdCk6Ci0gICAgIiIiUnVucyB0aGUgYmluYXJ5
IHRlc3QgZ2l2ZW4gaXRzIHBhdGguCi0KLSAgICBBcmdzOgotICAgICAgdGVzdDogUGF0aCB0byB0
aGUgdGVzdCBiaW5hcnkuCi0KLSAgICBSZXR1cm5zOgotICAgICAgUHJvY2VzcydzIGV4aXQgY29k
ZSBpZiBpdCBleGl0cyBub3JtYWxseSwgb3IgLXNpZ25hbCBpZiB0aGUgcHJvY2VzcyBpcwotICAg
ICAga2lsbGVkIGJ5IGEgc2lnbmFsLgotICAgICIiIgotCi0gICAgcmV0dXJuIHNlbGYuX1J1bihb
dGVzdF0pCi0KLSAgZGVmIF9SdW5QeXRob25UZXN0KHNlbGYsIHRlc3QsIGJ1aWxkX2Rpcik6Ci0g
ICAgIiIiUnVucyB0aGUgUHl0aG9uIHRlc3Qgc2NyaXB0IHdpdGggdGhlIHNwZWNpZmllZCBidWls
ZCBkaXJlY3RvcnkuCi0KLSAgICBBcmdzOgotICAgICAgdGVzdDogUGF0aCB0byB0aGUgdGVzdCdz
IFB5dGhvbiBzY3JpcHQuCi0gICAgICBidWlsZF9kaXI6IFBhdGggdG8gdGhlIGRpcmVjdG9yeSB3
aGVyZSB0aGUgdGVzdCBiaW5hcnkgaXMgdG8gYmUgZm91bmQuCi0KLSAgICBSZXR1cm5zOgotICAg
ICAgUHJvY2VzcydzIGV4aXQgY29kZSBpZiBpdCBleGl0cyBub3JtYWxseSwgb3IgLXNpZ25hbCBp
ZiB0aGUgcHJvY2VzcyBpcwotICAgICAga2lsbGVkIGJ5IGEgc2lnbmFsLgotICAgICIiIgotCi0g
ICAgb2xkX2J1aWxkX2RpciA9IHNlbGYub3MuZW52aXJvbi5nZXQoc2VsZi5idWlsZF9kaXJfdmFy
X25hbWUpCi0KLSAgICB0cnk6Ci0gICAgICBzZWxmLm9zLmVudmlyb25bc2VsZi5idWlsZF9kaXJf
dmFyX25hbWVdID0gYnVpbGRfZGlyCi0KLSAgICAgICMgSWYgdGhpcyBzY3JpcHQgaXMgcnVuIG9u
IGEgV2luZG93cyBtYWNoaW5lIHRoYXQgaGFzIG5vIGFzc29jaWF0aW9uCi0gICAgICAjIGJldHdl
ZW4gdGhlIC5weSBleHRlbnNpb24gYW5kIGEgcHl0aG9uIGludGVycHJldGVyLCBzaW1wbHkgcGFz
c2luZwotICAgICAgIyB0aGUgc2NyaXB0IG5hbWUgaW50byBzdWJwcm9jZXNzLlBvcGVuL29zLnNw
YXduIHdpbGwgbm90IHdvcmsuCi0gICAgICBwcmludCAnUnVubmluZyAlcyAuIC4gLicgJSAodGVz
dCwpCi0gICAgICByZXR1cm4gc2VsZi5fUnVuKFtzeXMuZXhlY3V0YWJsZSwgdGVzdF0pCi0KLSAg
ICBmaW5hbGx5OgotICAgICAgaWYgb2xkX2J1aWxkX2RpciBpcyBOb25lOgotICAgICAgICBkZWwg
c2VsZi5vcy5lbnZpcm9uW3NlbGYuYnVpbGRfZGlyX3Zhcl9uYW1lXQotICAgICAgZWxzZToKLSAg
ICAgICAgc2VsZi5vcy5lbnZpcm9uW3NlbGYuYnVpbGRfZGlyX3Zhcl9uYW1lXSA9IG9sZF9idWls
ZF9kaXIKLQotICBkZWYgX0ZpbmRGaWxlc0J5UmVnZXgoc2VsZiwgZGlyZWN0b3J5LCByZWdleCk6
Ci0gICAgIiIiUmV0dXJucyBmaWxlcyBpbiBhIGRpcmVjdG9yeSB3aG9zZSBuYW1lcyBtYXRjaCBh
IHJlZ3VsYXIgZXhwcmVzc2lvbi4KLQotICAgIEFyZ3M6Ci0gICAgICBkaXJlY3Rvcnk6IFBhdGgg
dG8gdGhlIGRpcmVjdG9yeSB0byBzZWFyY2ggZm9yIGZpbGVzLgotICAgICAgcmVnZXg6IFJlZ3Vs
YXIgZXhwcmVzc2lvbiB0byBmaWx0ZXIgZmlsZSBuYW1lcy4KLQotICAgIFJldHVybnM6Ci0gICAg
ICBUaGUgbGlzdCBvZiB0aGUgcGF0aHMgdG8gdGhlIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuCi0g
ICAgIiIiCi0KLSAgICByZXR1cm4gW3NlbGYub3MucGF0aC5qb2luKGRpcmVjdG9yeSwgZmlsZV9u
YW1lKQotICAgICAgICAgICAgZm9yIGZpbGVfbmFtZSBpbiBzZWxmLm9zLmxpc3RkaXIoZGlyZWN0
b3J5KQotICAgICAgICAgICAgaWYgcmUuc2VhcmNoKHJlZ2V4LCBmaWxlX25hbWUpXQotCi0gICMg
VE9ETyh2bGFkbEBnb29nbGUuY29tKTogSW1wbGVtZW50IHBhcnNpbmcgb2Ygc2NvbnMvU0NvbnNj
cmlwdCB0byBydW4gYWxsCi0gICMgdGVzdHMgZGVmaW5lZCB0aGVyZSB3aGVuIG5vIHRlc3RzIGFy
ZSBzcGVjaWZpZWQuCi0gICMgVE9ETyh2bGFkbEBnb29nbGUuY29tKTogVXBkYXRlIHRoZSBkb2Nz
dHJpbmcgYWZ0ZXIgdGhlIGNvZGUgaXMgY2hhbmdlZCB0bwotICAjIHRyeSB0byB0ZXN0IGFsbCBi
dWlsZHMgZGVmaW5lZCBpbiBzY29ucy9TQ29uc2NyaXB0LgotICBkZWYgR2V0VGVzdHNUb1J1bihz
ZWxmLAotICAgICAgICAgICAgICAgICAgICBhcmdzLAotICAgICAgICAgICAgICAgICAgICBuYW1l
ZF9jb25maWd1cmF0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgYnVpbHRfY29uZmlndXJhdGlv
bnMsCi0gICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1DT05GSUdT
LAotICAgICAgICAgICAgICAgICAgICBweXRob25fdGVzdHNfdG9fc2tpcD1Ob25lKToKLSAgICAi
IiJEZXRlcm1pbmVzIHdoYXQgdGVzdHMgc2hvdWxkIGJlIHJ1bi4KLQotICAgIEFyZ3M6Ci0gICAg
ICBhcmdzOiBUaGUgbGlzdCBvZiBub24tb3B0aW9uIGFyZ3VtZW50cyBmcm9tIHRoZSBjb21tYW5k
IGxpbmUuCi0gICAgICBuYW1lZF9jb25maWd1cmF0aW9uczogVGhlIGxpc3Qgb2YgY29uZmlndXJh
dGlvbnMgc3BlY2lmaWVkIHZpYSAtYyBvciAtYS4KLSAgICAgIGJ1aWx0X2NvbmZpZ3VyYXRpb25z
OiBUcnVlIGlmIC1iIGhhcyBiZWVuIHNwZWNpZmllZC4KLSAgICAgIGF2YWlsYWJsZV9jb25maWd1
cmF0aW9uczogYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIGF2YWlsYWJsZSBvbiB0aGUKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50IHBsYXRmb3JtLCBpbmplY3RhYmxlIGZvciB0
ZXN0aW5nLgotICAgICAgcHl0aG9uX3Rlc3RzX3RvX3NraXA6IGEgY29sbGVjdGlvbiBvZiAoY29u
ZmlndXJhdGlvbiwgcHl0aG9uIHRlc3QgbmFtZSlzCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhhdCBuZWVkIHRvIGJlIHNraXBwZWQuCi0KLSAgICBSZXR1cm5zOgotICAgICAgQSB0dXBs
ZSB3aXRoIDIgZWxlbWVudHM6IHRoZSBsaXN0IG9mIFB5dGhvbiB0ZXN0cyB0byBydW4gYW5kIHRo
ZSBsaXN0IG9mCi0gICAgICBiaW5hcnkgdGVzdHMgdG8gcnVuLgotICAgICIiIgotCi0gICAgaWYg
bmFtZWRfY29uZmlndXJhdGlvbnMgPT0gJ2FsbCc6Ci0gICAgICBuYW1lZF9jb25maWd1cmF0aW9u
cyA9ICcsJy5qb2luKGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucykKLQotICAgIG5vcm1hbGl6ZWRf
YXJncyA9IFtzZWxmLm9zLnBhdGgubm9ybXBhdGgoYXJnKSBmb3IgYXJnIGluIGFyZ3NdCi0KLSAg
ICAjIEEgZmluYWwgbGlzdCBvZiBidWlsZCBkaXJlY3RvcmllcyB3aGljaCB3aWxsIGJlIHNlYXJj
aGVkIGZvciB0aGUgdGVzdAotICAgICMgYmluYXJpZXMuIEZpcnN0LCBhZGQgZGlyZWN0b3JpZXMg
c3BlY2lmaWVkIGRpcmVjdGx5IG9uIHRoZSBjb21tYW5kCi0gICAgIyBsaW5lLgotICAgIGJ1aWxk
X2RpcnMgPSBmaWx0ZXIoc2VsZi5vcy5wYXRoLmlzZGlyLCBub3JtYWxpemVkX2FyZ3MpCi0KLSAg
ICAjIEFkZHMgYnVpbGQgZGlyZWN0b3JpZXMgc3BlY2lmaWVkIHZpYSB0aGVpciBidWlsZCBjb25m
aWd1cmF0aW9ucyB1c2luZwotICAgICMgdGhlIC1jIG9yIC1hIG9wdGlvbnMuCi0gICAgaWYgbmFt
ZWRfY29uZmlndXJhdGlvbnM6Ci0gICAgICBidWlsZF9kaXJzICs9IFtzZWxmLl9HZXRCdWlsZERp
ckZvckNvbmZpZyhjb25maWcpCi0gICAgICAgICAgICAgICAgICAgICBmb3IgY29uZmlnIGluIG5h
bWVkX2NvbmZpZ3VyYXRpb25zLnNwbGl0KCcsJyldCi0KLSAgICAjIEFkZHMgS05PV04gQlVJTEQg
RElSRUNUT1JJRVMgaWYgLWIgaXMgc3BlY2lmaWVkLgotICAgIGlmIGJ1aWx0X2NvbmZpZ3VyYXRp
b25zOgotICAgICAgYnVpbGRfZGlycyArPSBbc2VsZi5fR2V0QnVpbGREaXJGb3JDb25maWcoY29u
ZmlnKQotICAgICAgICAgICAgICAgICAgICAgZm9yIGNvbmZpZyBpbiBhdmFpbGFibGVfY29uZmln
dXJhdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYub3MucGF0aC5pc2RpcihzZWxm
Ll9HZXRCdWlsZERpckZvckNvbmZpZyhjb25maWcpKV0KLQotICAgICMgSWYgbm8gZGlyZWN0b3Jp
ZXMgd2VyZSBzcGVjaWZpZWQgZWl0aGVyIHZpYSAtYSwgLWIsIC1jLCBvciBkaXJlY3RseSwgdXNl
Ci0gICAgIyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uLgotICAgIGVsaWYgbm90IGJ1aWxkX2Rp
cnM6Ci0gICAgICBidWlsZF9kaXJzID0gW3NlbGYuX0dldEJ1aWxkRGlyRm9yQ29uZmlnKGF2YWls
YWJsZV9jb25maWd1cmF0aW9uc1swXSldCi0KLSAgICAjIE1ha2VzIHN1cmUgdGhlcmUgYXJlIG5v
IGR1cGxpY2F0aW9ucy4KLSAgICBidWlsZF9kaXJzID0gc2V0cy5TZXQoYnVpbGRfZGlycykKLQot
ICAgIGVycm9yc19mb3VuZCA9IEZhbHNlCi0gICAgbGlzdGVkX3B5dGhvbl90ZXN0cyA9IFtdICAj
IEFsbCBQeXRob24gdGVzdHMgbGlzdGVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCi0gICAgbGlzdGVk
X2JpbmFyeV90ZXN0cyA9IFtdICAjIEFsbCBiaW5hcnkgdGVzdHMgbGlzdGVkIG9uIHRoZSBjb21t
YW5kIGxpbmUuCi0KLSAgICB0ZXN0X2RpciA9IHNlbGYub3MucGF0aC5ub3JtcGF0aChzZWxmLm9z
LnBhdGguam9pbihzZWxmLnNjcmlwdF9kaXIsICd0ZXN0JykpCi0KLSAgICAjIFNpZnRzIHRocm91
Z2ggbm9uLWRpcmVjdG9yeSBhcmd1bWVudHMgZmlzaGluZyBmb3IgYW55IFB5dGhvbiBvciBiaW5h
cnkKLSAgICAjIHRlc3RzIGFuZCBkZXRlY3RpbmcgZXJyb3JzLgotICAgIGZvciBhcmd1bWVudCBp
biBzZXRzLlNldChub3JtYWxpemVkX2FyZ3MpIC0gYnVpbGRfZGlyczoKLSAgICAgIGlmIHJlLnNl
YXJjaChQWVRIT05fVEVTVF9SRUdFWCwgYXJndW1lbnQpOgotICAgICAgICBweXRob25fcGF0aCA9
IHNlbGYub3MucGF0aC5qb2luKHRlc3RfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYub3MucGF0aC5iYXNlbmFtZShhcmd1bWVudCkpCi0gICAgICAgIGlm
IHNlbGYub3MucGF0aC5pc2ZpbGUocHl0aG9uX3BhdGgpOgotICAgICAgICAgIGxpc3RlZF9weXRo
b25fdGVzdHMuYXBwZW5kKHB5dGhvbl9wYXRoKQotICAgICAgICBlbHNlOgotICAgICAgICAgIHN5
cy5zdGRlcnIud3JpdGUoJ1VuYWJsZSB0byBmaW5kIFB5dGhvbiB0ZXN0ICVzJyAlIGFyZ3VtZW50
KQotICAgICAgICAgIGVycm9yc19mb3VuZCA9IFRydWUKLSAgICAgIGVsaWYgcmUuc2VhcmNoKEJJ
TkFSWV9URVNUX1JFR0VYLCBhcmd1bWVudCk6Ci0gICAgICAgICMgVGhpcyBzY3JpcHQgYWxzbyBh
Y2NlcHRzIGJpbmFyeSB0ZXN0IG5hbWVzIHByZWZpeGVkIHdpdGggdGVzdC8gZm9yCi0gICAgICAg
ICMgdGhlIGNvbnZlbmllbmNlIG9mIHR5cGluZyB0aGVtIChjYW4gdXNlIHBhdGggY29tcGxldGlv
bnMgaW4gdGhlCi0gICAgICAgICMgc2hlbGwpLiAgU3RyaXBzIHRlc3QvIHByZWZpeCBmcm9tIHRo
ZSBiaW5hcnkgdGVzdCBuYW1lcy4KLSAgICAgICAgbGlzdGVkX2JpbmFyeV90ZXN0cy5hcHBlbmQo
c2VsZi5vcy5wYXRoLmJhc2VuYW1lKGFyZ3VtZW50KSkKLSAgICAgIGVsc2U6Ci0gICAgICAgIHN5
cy5zdGRlcnIud3JpdGUoJyVzIGlzIG5laXRoZXIgdGVzdCBub3IgYnVpbGQgZGlyZWN0b3J5JyAl
IGFyZ3VtZW50KQotICAgICAgICBlcnJvcnNfZm91bmQgPSBUcnVlCi0KLSAgICBpZiBlcnJvcnNf
Zm91bmQ6Ci0gICAgICByZXR1cm4gTm9uZQotCi0gICAgdXNlcl9oYXNfbGlzdGVkX3Rlc3RzID0g
bGlzdGVkX3B5dGhvbl90ZXN0cyBvciBsaXN0ZWRfYmluYXJ5X3Rlc3RzCi0KLSAgICBpZiB1c2Vy
X2hhc19saXN0ZWRfdGVzdHM6Ci0gICAgICBzZWxlY3RlZF9weXRob25fdGVzdHMgPSBsaXN0ZWRf
cHl0aG9uX3Rlc3RzCi0gICAgZWxzZToKLSAgICAgIHNlbGVjdGVkX3B5dGhvbl90ZXN0cyA9IHNl
bGYuX0ZpbmRGaWxlc0J5UmVnZXgodGVzdF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZVEhPTl9URVNUX1JFR0VYKQotCi0gICAgIyBU
T0RPKHZsYWRsQGdvb2dsZS5jb20pOiBza2lwIHVuYnVpbHQgUHl0aG9uIHRlc3RzIHdoZW4gLWIg
aXMgc3BlY2lmaWVkLgotICAgIHB5dGhvbl90ZXN0X3BhaXJzID0gW10KLSAgICBmb3IgZGlyZWN0
b3J5IGluIGJ1aWxkX2RpcnM6Ci0gICAgICBmb3IgdGVzdCBpbiBzZWxlY3RlZF9weXRob25fdGVz
dHM6Ci0gICAgICAgIGNvbmZpZyA9IF9HZXRDb25maWdGcm9tQnVpbGREaXIoZGlyZWN0b3J5KQot
ICAgICAgICBmaWxlX25hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHRlc3QpCi0gICAgICAgIGlmIHB5
dGhvbl90ZXN0c190b19za2lwIGFuZCAoY29uZmlnLCBmaWxlX25hbWUpIGluIHB5dGhvbl90ZXN0
c190b19za2lwOgotICAgICAgICAgIHByaW50ICgnTk9URTogJXMgaXMgc2tpcHBlZCBmb3IgY29u
ZmlndXJhdGlvbiAlcywgYXMgaXQgZG9lcyBub3QgJwotICAgICAgICAgICAgICAgICAnd29yayB0
aGVyZS4nICUgKGZpbGVfbmFtZSwgY29uZmlnKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICBw
eXRob25fdGVzdF9wYWlycy5hcHBlbmQoKGRpcmVjdG9yeSwgdGVzdCkpCi0KLSAgICBiaW5hcnlf
dGVzdF9wYWlycyA9IFtdCi0gICAgZm9yIGRpcmVjdG9yeSBpbiBidWlsZF9kaXJzOgotICAgICAg
aWYgdXNlcl9oYXNfbGlzdGVkX3Rlc3RzOgotICAgICAgICBiaW5hcnlfdGVzdF9wYWlycy5leHRl
bmQoCi0gICAgICAgICAgICBbKGRpcmVjdG9yeSwgc2VsZi5vcy5wYXRoLmpvaW4oZGlyZWN0b3J5
LCB0ZXN0KSkKLSAgICAgICAgICAgICBmb3IgdGVzdCBpbiBsaXN0ZWRfYmluYXJ5X3Rlc3RzXSkK
LSAgICAgIGVsc2U6Ci0gICAgICAgIHRlc3RzID0gc2VsZi5fRmluZEZpbGVzQnlSZWdleChkaXJl
Y3RvcnksIEJJTkFSWV9URVNUX1NFQVJDSF9SRUdFWCkKLSAgICAgICAgYmluYXJ5X3Rlc3RfcGFp
cnMuZXh0ZW5kKFsoZGlyZWN0b3J5LCB0ZXN0KSBmb3IgdGVzdCBpbiB0ZXN0c10pCi0KLSAgICBy
ZXR1cm4gKHB5dGhvbl90ZXN0X3BhaXJzLCBiaW5hcnlfdGVzdF9wYWlycykKLQotICBkZWYgUnVu
VGVzdHMoc2VsZiwgcHl0aG9uX3Rlc3RzLCBiaW5hcnlfdGVzdHMpOgotICAgICIiIlJ1bnMgUHl0
aG9uIGFuZCBiaW5hcnkgdGVzdHMgYW5kIHJlcG9ydHMgcmVzdWx0cyB0byB0aGUgc3RhbmRhcmQg
b3V0cHV0LgotCi0gICAgQXJnczoKLSAgICAgIHB5dGhvbl90ZXN0czogTGlzdCBvZiBQeXRob24g
dGVzdHMgdG8gcnVuIGluIHRoZSBmb3JtIG9mIHR1cGxlcwotICAgICAgICAgICAgICAgICAgICAo
YnVpbGQgZGlyZWN0b3J5LCBQeXRob24gdGVzdCBzY3JpcHQpLgotICAgICAgYmluYXJ5X3Rlc3Rz
OiBMaXN0IG9mIGJpbmFyeSB0ZXN0cyB0byBydW4gaW4gdGhlIGZvcm0gb2YgdHVwbGVzCi0gICAg
ICAgICAgICAgICAgICAgIChidWlsZCBkaXJlY3RvcnksIGJpbmFyeSBmaWxlKS4KLQotICAgIFJl
dHVybnM6Ci0gICAgICBUaGUgZXhpdCBjb2RlIHRoZSBwcm9ncmFtIHNob3VsZCBwYXNzIGludG8g
c3lzLmV4aXQoKS4KLSAgICAiIiIKLQotICAgIGlmIHB5dGhvbl90ZXN0cyBvciBiaW5hcnlfdGVz
dHM6Ci0gICAgICByZXN1bHRzID0gW10KLSAgICAgIGZvciBkaXJlY3RvcnksIHRlc3QgaW4gcHl0
aG9uX3Rlc3RzOgotICAgICAgICByZXN1bHRzLmFwcGVuZCgoZGlyZWN0b3J5LAotICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX1J1blB5
dGhvblRlc3QodGVzdCwgZGlyZWN0b3J5KSA9PSAwKSkKLSAgICAgIGZvciBkaXJlY3RvcnksIHRl
c3QgaW4gYmluYXJ5X3Rlc3RzOgotICAgICAgICByZXN1bHRzLmFwcGVuZCgoZGlyZWN0b3J5LAot
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vcy5wYXRoLmJhc2VuYW1lKHRlc3QpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fUnVuQmluYXJ5VGVzdCh0ZXN0KSA9PSAwKSkKLQot
ICAgICAgZmFpbGVkID0gWyhkaXJlY3RvcnksIHRlc3QpCi0gICAgICAgICAgICAgICAgZm9yIChk
aXJlY3RvcnksIHRlc3QsIHN1Y2Nlc3MpIGluIHJlc3VsdHMKLSAgICAgICAgICAgICAgICBpZiBu
b3Qgc3VjY2Vzc10KLSAgICAgIHByaW50Ci0gICAgICBwcmludCAnJWQgdGVzdHMgcnVuLicgJSBs
ZW4ocmVzdWx0cykKLSAgICAgIGlmIGZhaWxlZDoKLSAgICAgICAgcHJpbnQgJ1RoZSBmb2xsb3dp
bmcgJWQgdGVzdHMgZmFpbGVkOicgJSBsZW4oZmFpbGVkKQotICAgICAgICBmb3IgKGRpcmVjdG9y
eSwgdGVzdCkgaW4gZmFpbGVkOgotICAgICAgICAgIHByaW50ICclcyBpbiAlcycgJSAodGVzdCwg
ZGlyZWN0b3J5KQotICAgICAgICByZXR1cm4gMQotICAgICAgZWxzZToKLSAgICAgICAgcHJpbnQg
J0FsbCB0ZXN0cyBwYXNzZWQhJwotICAgIGVsc2U6ICAjIE5vIHRlc3RzIGRlZmluZWQKLSAgICAg
IHByaW50ICdOb3RoaW5nIHRvIHRlc3QgLSBubyB0ZXN0cyBzcGVjaWZpZWQhJwotCi0gICAgcmV0
dXJuIDAKLQotCi1kZWYgUGFyc2VBcmdzKHByb2plY3RfbmFtZSwgYXJndj1Ob25lLCBoZWxwX2Nh
bGxiYWNrPU5vbmUpOgotICAiIiJQYXJzZXMgdGhlIG9wdGlvbnMgcnVuX3Rlc3RzLnB5IHVzZXMu
IiIiCi0KLSAgIyBTdXBwcmVzc2VzIGxpbnQgd2FybmluZyBvbiB1bnVzZWQgYXJndW1lbnRzLiAg
VGhlc2UgYXJndW1lbnRzIGFyZQotICAjIHJlcXVpcmVkIGJ5IG9wdHBhcnNlLCBldmVuIHRob3Vn
aCB0aGV5IGFyZSB1bnVzZWQuCi0gICMgcHlsaW50OiBkaXNhYmxlLW1zZz1XMDYxMwotICBkZWYg
UHJpbnRIZWxwKG9wdGlvbiwgb3B0LCB2YWx1ZSwgcGFyc2VyKToKLSAgICBwcmludCBIRUxQX01T
RyAlIHsncHJvaic6IHByb2plY3RfbmFtZX0KLSAgICBzeXMuZXhpdCgxKQotCi0gIHBhcnNlciA9
IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctYycsCi0gICAg
ICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmUnLAotICAgICAgICAgICAgICAgICAgICBkZXN0
PSdjb25maWd1cmF0aW9ucycsCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSkKLSAg
cGFyc2VyLmFkZF9vcHRpb24oJy1hJywKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9y
ZV9jb25zdCcsCi0gICAgICAgICAgICAgICAgICAgIGRlc3Q9J2NvbmZpZ3VyYXRpb25zJywKLSAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICAgICBjb25z
dD0nYWxsJykKLSAgcGFyc2VyLmFkZF9vcHRpb24oJy1iJywKLSAgICAgICAgICAgICAgICAgICAg
YWN0aW9uPSdzdG9yZV9jb25zdCcsCi0gICAgICAgICAgICAgICAgICAgIGRlc3Q9J2J1aWx0X2Nv
bmZpZ3VyYXRpb25zJywKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKLSAgICAg
ICAgICAgICAgICAgICAgY29uc3Q9VHJ1ZSkKLSAgIyBSZXBsYWNlcyB0aGUgYnVpbHQtaW4gaGVs
cCB3aXRoIG91cnMuCi0gIHBhcnNlci5yZW1vdmVfb3B0aW9uKCctaCcpCi0gIHBhcnNlci5hZGRf
b3B0aW9uKCctaCcsICctLWhlbHAnLAotICAgICAgICAgICAgICAgICAgICBhY3Rpb249J2NhbGxi
YWNrJywKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s9aGVscF9jYWxsYmFjayBvciBQcmlu
dEhlbHApCi0gIHJldHVybiBwYXJzZXIucGFyc2VfYXJncyhhcmd2KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ydW5fdGVzdHNfdXRpbF90ZXN0LnB5IGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ydW5fdGVzdHNfdXRpbF90ZXN0LnB5CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCA5YzU1NzI2ZmQ1MGIyYTBjMjUwNjgxNDFkN2U2Njk0M2YwYjZk
ZTczLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3RzX3V0aWxfdGVzdC5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDY3NiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJp
Z2h0IDIwMDkgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLSIiIlRlc3RzIGZvciBydW5fdGVzdHNfdXRpbC5weSB0ZXN0IHJ1bm5lciBzY3JpcHQu
IiIiCi0KLV9fYXV0aG9yX18gPSAndmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldiknCi0KLWlt
cG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2V0cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9y
dCBydW5fdGVzdHNfdXRpbAotCi0KLUdURVNUX0RCR19ESVIgPSAnc2NvbnMvYnVpbGQvZGJnL2d0
ZXN0L3Njb25zJwotR1RFU1RfT1BUX0RJUiA9ICdzY29ucy9idWlsZC9vcHQvZ3Rlc3Qvc2NvbnMn
Ci1HVEVTVF9PVEhFUl9ESVIgPSAnc2NvbnMvYnVpbGQvb3RoZXIvZ3Rlc3Qvc2NvbnMnCi0KLQot
ZGVmIEFkZEV4ZUV4dGVuc2lvbihwYXRoKToKLSAgIiIiQXBwZW5kcyAuZXhlIHRvIHRoZSBwYXRo
IG9uIFdpbmRvd3Mgb3IgQ3lnd2luLiIiIgotCi0gIGlmIHJ1bl90ZXN0c191dGlsLklTX1dJTkRP
V1Mgb3IgcnVuX3Rlc3RzX3V0aWwuSVNfQ1lHV0lOOgotICAgIHJldHVybiBwYXRoICsgJy5leGUn
Ci0gIGVsc2U6Ci0gICAgcmV0dXJuIHBhdGgKLQotCi1jbGFzcyBGYWtlUGF0aChvYmplY3QpOgot
ICAiIiJBIGZha2Ugb3MucGF0aCBtb2R1bGUgZm9yIHRlc3RpbmcuIiIiCi0KLSAgZGVmIF9faW5p
dF9fKHNlbGYsIGN1cnJlbnRfZGlyPW9zLmdldGN3ZCgpLCBrbm93bl9wYXRocz1Ob25lKToKLSAg
ICBzZWxmLmN1cnJlbnRfZGlyID0gY3VycmVudF9kaXIKLSAgICBzZWxmLnRyZWUgPSB7fQotICAg
IHNlbGYucGF0aF9zZXBhcmF0b3IgPSBvcy5zZXAKLQotICAgICMga25vd25fcGF0aHMgY29udGFp
bnMgZWl0aGVyIGFic29sdXRlIG9yIHJlbGF0aXZlIHBhdGhzLiBSZWxhdGl2ZSBwYXRocwotICAg
ICMgYXJlIGFic29sdXRpemVkIHdpdGggc2VsZi5jdXJyZW50X2Rpci4KLSAgICBpZiBrbm93bl9w
YXRoczoKLSAgICAgIHNlbGYuX0FkZFBhdGhzKGtub3duX3BhdGhzKQotCi0gIGRlZiBfQWRkUGF0
aChzZWxmLCBwYXRoKToKLSAgICBlbmRzX3dpdGhfc2xhc2ggPSBwYXRoLmVuZHN3aXRoKCcvJykK
LSAgICBwYXRoID0gc2VsZi5hYnNwYXRoKHBhdGgpCi0gICAgaWYgZW5kc193aXRoX3NsYXNoOgot
ICAgICAgcGF0aCArPSBzZWxmLnBhdGhfc2VwYXJhdG9yCi0gICAgbmFtZV9saXN0ID0gcGF0aC5z
cGxpdChzZWxmLnBhdGhfc2VwYXJhdG9yKQotICAgIHRyZWUgPSBzZWxmLnRyZWUKLSAgICBmb3Ig
bmFtZSBpbiBuYW1lX2xpc3RbOi0xXToKLSAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICBjb250
aW51ZQotICAgICAgaWYgbmFtZSBpbiB0cmVlOgotICAgICAgICB0cmVlID0gdHJlZVtuYW1lXQot
ICAgICAgZWxzZToKLSAgICAgICAgdHJlZVtuYW1lXSA9IHt9Ci0gICAgICAgIHRyZWUgPSB0cmVl
W25hbWVdCi0KLSAgICBuYW1lID0gbmFtZV9saXN0Wy0xXQotICAgIGlmIG5hbWU6Ci0gICAgICBp
ZiBuYW1lIGluIHRyZWU6Ci0gICAgICAgIGFzc2VydCB0cmVlW25hbWVdID09IDEKLSAgICAgIGVs
c2U6Ci0gICAgICAgIHRyZWVbbmFtZV0gPSAxCi0KLSAgZGVmIF9BZGRQYXRocyhzZWxmLCBwYXRo
cyk6Ci0gICAgZm9yIHBhdGggaW4gcGF0aHM6Ci0gICAgICBzZWxmLl9BZGRQYXRoKHBhdGgpCi0K
LSAgZGVmIFBhdGhFbGVtZW50KHNlbGYsIHBhdGgpOgotICAgICIiIlJldHVybnMgYW4gaW50ZXJu
YWwgcmVwcmVzZW50YXRpb24gb2YgZGlyZWN0b3J5IHRyZWUgZW50cnkgZm9yIHBhdGguIiIiCi0g
ICAgdHJlZSA9IHNlbGYudHJlZQotICAgIG5hbWVfbGlzdCA9IHNlbGYuYWJzcGF0aChwYXRoKS5z
cGxpdChzZWxmLnBhdGhfc2VwYXJhdG9yKQotICAgIGZvciBuYW1lIGluIG5hbWVfbGlzdDoKLSAg
ICAgIGlmIG5vdCBuYW1lOgotICAgICAgICBjb250aW51ZQotICAgICAgdHJlZSA9IHRyZWUuZ2V0
KG5hbWUsIE5vbmUpCi0gICAgICBpZiB0cmVlIGlzIE5vbmU6Ci0gICAgICAgIGJyZWFrCi0KLSAg
ICByZXR1cm4gdHJlZQotCi0gICMgU2lsZW5jZXMgcHlsaW50IHdhcm5pbmcgYWJvdXQgdXNpbmcg
c3RhbmRhcmQgbmFtZXMuCi0gICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwOQotICBkZWYgbm9y
bXBhdGgoc2VsZiwgcGF0aCk6Ci0gICAgcmV0dXJuIG9zLnBhdGgubm9ybXBhdGgocGF0aCkKLQot
ICBkZWYgYWJzcGF0aChzZWxmLCBwYXRoKToKLSAgICByZXR1cm4gc2VsZi5ub3JtcGF0aChvcy5w
YXRoLmpvaW4oc2VsZi5jdXJyZW50X2RpciwgcGF0aCkpCi0KLSAgZGVmIGlzZmlsZShzZWxmLCBw
YXRoKToKLSAgICByZXR1cm4gc2VsZi5QYXRoRWxlbWVudChzZWxmLmFic3BhdGgocGF0aCkpID09
IDEKLQotICBkZWYgaXNkaXIoc2VsZiwgcGF0aCk6Ci0gICAgcmV0dXJuIHR5cGUoc2VsZi5QYXRo
RWxlbWVudChzZWxmLmFic3BhdGgocGF0aCkpKSA9PSB0eXBlKGRpY3QoKSkKLQotICBkZWYgYmFz
ZW5hbWUoc2VsZiwgcGF0aCk6Ci0gICAgcmV0dXJuIG9zLnBhdGguYmFzZW5hbWUocGF0aCkKLQot
ICBkZWYgZGlybmFtZShzZWxmLCBwYXRoKToKLSAgICByZXR1cm4gb3MucGF0aC5kaXJuYW1lKHBh
dGgpCi0KLSAgZGVmIGpvaW4oc2VsZiwgKmthcmdzKToKLSAgICByZXR1cm4gb3MucGF0aC5qb2lu
KCprYXJncykKLQotCi1jbGFzcyBGYWtlT3Mob2JqZWN0KToKLSAgIiIiQSBmYWtlIG9zIG1vZHVs
ZSBmb3IgdGVzdGluZy4iIiIKLSAgUF9XQUlUID0gb3MuUF9XQUlUCi0KLSAgZGVmIF9faW5pdF9f
KHNlbGYsIGZha2VfcGF0aF9tb2R1bGUpOgotICAgIHNlbGYucGF0aCA9IGZha2VfcGF0aF9tb2R1
bGUKLQotICAgICMgU29tZSBtZXRob2RzL2F0dHJpYnV0ZXMgYXJlIGRlbGVnYXRlZCB0byB0aGUg
cmVhbCBvcyBtb2R1bGUuCi0gICAgc2VsZi5lbnZpcm9uID0gb3MuZW52aXJvbgotCi0gICMgcHls
aW50OiBkaXNhYmxlLW1zZz1DNjQwOQotICBkZWYgbGlzdGRpcihzZWxmLCBwYXRoKToKLSAgICBh
c3NlcnQgc2VsZi5wYXRoLmlzZGlyKHBhdGgpCi0gICAgcmV0dXJuIHNlbGYucGF0aC5QYXRoRWxl
bWVudChwYXRoKS5pdGVya2V5cygpCi0KLSAgZGVmIHNwYXdudihzZWxmLCB3YWl0LCBleGVjdXRh
YmxlLCAqa2FyZ3MpOgotICAgIGFzc2VydCB3YWl0ID09IEZha2VPcy5QX1dBSVQKLSAgICByZXR1
cm4gc2VsZi5zcGF3bl9pbXBsKGV4ZWN1dGFibGUsIGthcmdzKQotCi0KLWNsYXNzIEdldFRlc3Rz
VG9SdW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgIiIiRXhlcmNpc2VzIFRlc3RSdW5uZXIu
R2V0VGVzdHNUb1J1bi4iIiIKLQotICBkZWYgTm9ybWFsaXplR2V0VGVzdHNUb1J1blJlc3VsdHMo
c2VsZiwgcmVzdWx0cyk6Ci0gICAgIiIiTm9ybWFsaXplcyBwYXRoIGRhdGEgcmV0dXJuZWQgZnJv
bSBHZXRUZXN0c1RvUnVuIGZvciBjb21wYXJpc29uLiIiIgotCi0gICAgZGVmIE5vcm1hbGl6ZVB5
dGhvblRlc3RQYWlyKHBhaXIpOgotICAgICAgIiIiTm9ybWFsaXplcyBwYXRoIGRhdGEgaW4gdGhl
IChkaXJlY3RvcnksIHB5dGhvbl9zY3JpcHQpIHBhaXIuIiIiCi0KLSAgICAgIHJldHVybiAob3Mu
cGF0aC5ub3JtcGF0aChwYWlyWzBdKSwgb3MucGF0aC5ub3JtcGF0aChwYWlyWzFdKSkKLQotICAg
IGRlZiBOb3JtYWxpemVCaW5hcnlUZXN0UGFpcihwYWlyKToKLSAgICAgICIiIk5vcm1hbGl6ZXMg
cGF0aCBkYXRhIGluIHRoZSAoZGlyZWN0b3J5LCBiaW5hcnlfZXhlY3V0YWJsZSkgcGFpci4iIiIK
LQotICAgICAgZGlyZWN0b3J5LCBleGVjdXRhYmxlID0gbWFwKG9zLnBhdGgubm9ybXBhdGgsIHBh
aXIpCi0KLSAgICAgICMgT24gV2luZG93cyBhbmQgQ3lnd2luLCB0aGUgdGVzdCBmaWxlIG5hbWVz
IGhhdmUgdGhlIC5leGUgZXh0ZW5zaW9uLCBidXQKLSAgICAgICMgdGhleSBjYW4gYmUgaW52b2tl
ZCBlaXRoZXIgYnkgbmFtZSBvciBieSBuYW1lK2V4dGVuc2lvbi4gT3VyIHRlc3QgbXVzdAotICAg
ICAgIyBhY2NvbW1vZGF0ZSBib3RoIHNpdHVhdGlvbnMuCi0gICAgICBpZiBydW5fdGVzdHNfdXRp
bC5JU19XSU5ET1dTIG9yIHJ1bl90ZXN0c191dGlsLklTX0NZR1dJTjoKLSAgICAgICAgZXhlY3V0
YWJsZSA9IHJlLnN1YihyJ1wuZXhlJCcsICcnLCBleGVjdXRhYmxlKQotICAgICAgcmV0dXJuIChk
aXJlY3RvcnksIGV4ZWN1dGFibGUpCi0KLSAgICBweXRob25fdGVzdHMgPSBzZXRzLlNldChtYXAo
Tm9ybWFsaXplUHl0aG9uVGVzdFBhaXIsIHJlc3VsdHNbMF0pKQotICAgIGJpbmFyeV90ZXN0cyA9
IHNldHMuU2V0KG1hcChOb3JtYWxpemVCaW5hcnlUZXN0UGFpciwgcmVzdWx0c1sxXSkpCi0gICAg
cmV0dXJuIChweXRob25fdGVzdHMsIGJpbmFyeV90ZXN0cykKLQotICBkZWYgQXNzZXJ0UmVzdWx0
c0VxdWFsKHNlbGYsIHJlc3VsdHMsIGV4cGVjdGVkKToKLSAgICAiIiJBc3NlcnRzIHJlc3VsdHMg
cmV0dXJuZWQgYnkgR2V0VGVzdHNUb1J1biBlcXVhbCB0byBleHBlY3RlZCByZXN1bHRzLiIiIgot
Ci0gICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLk5vcm1hbGl6ZUdldFRlc3RzVG9SdW5SZXN1bHRz
KHJlc3VsdHMpLAotICAgICAgICAgICAgICAgICAgICAgc2VsZi5Ob3JtYWxpemVHZXRUZXN0c1Rv
UnVuUmVzdWx0cyhleHBlY3RlZCksCi0gICAgICAgICAgICAgICAgICAgICAnSW5jb3JyZWN0IHNl
dCBvZiB0ZXN0cyByZXR1cm5lZDpcbiVzXG5leHBlY3RlZDpcbiVzJyAlCi0gICAgICAgICAgICAg
ICAgICAgICAocmVzdWx0cywgZXhwZWN0ZWQpKQotCi0gIGRlZiBzZXRVcChzZWxmKToKLSAgICBz
ZWxmLmZha2Vfb3MgPSBGYWtlT3MoRmFrZVBhdGgoCi0gICAgICAgIGN1cnJlbnRfZGlyPW9zLnBh
dGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUocnVuX3Rlc3RzX3V0aWwuX19maWxlX18pKSwKLSAg
ICAgICAga25vd25fcGF0aHM9W0FkZEV4ZUV4dGVuc2lvbihHVEVTVF9EQkdfRElSICsgJy9ndGVz
dF91bml0dGVzdCcpLAotICAgICAgICAgICAgICAgICAgICAgQWRkRXhlRXh0ZW5zaW9uKEdURVNU
X09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgICAgICAgICAgICAndGVz
dC9ndGVzdF9jb2xvcl90ZXN0LnB5J10pKQotICAgIHNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyA9
IFsnZGJnJywgJ29wdCddCi0gICAgc2VsZi50ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRl
c3RSdW5uZXIoc2NyaXB0X2Rpcj0nLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5qZWN0ZWRfb3M9c2VsZi5mYWtlX29zLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluamVjdGVkX3N1YnByb2Nlc3M9
Tm9uZSkKLQotICBkZWYgdGVzdEJpbmFyeVRlc3RzT25seShzZWxmKToKLSAgICAiIiJFeGVyY2lz
ZXMgR2V0VGVzdHNUb1J1biB3aXRoIHBhcmFtZXRlcnMgZGVzaWduYXRpbmcgYmluYXJ5IHRlc3Rz
IG9ubHkuIiIiCi0KLSAgICAjIEEgZGVmYXVsdCBidWlsZC4KLSAgICBzZWxmLkFzc2VydFJlc3Vs
dHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAg
ICAgICAgWydndGVzdF91bml0dGVzdCddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBG
YWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29u
ZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdU
RVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgQW4gZXhwbGljaXRs
eSBzcGVjaWZpZWQgZGlyZWN0b3J5LgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAg
ICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbR1RFU1Rf
REJHX0RJUiwgJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAg
IEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9j
b25maWd1cmF0aW9ucyksCi0gICAgICAgIChbXSwKLSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwg
R1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBBIHBhcnRpY3Vs
YXIgY29uZmlndXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAg
c2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF91bml0
dGVzdCddLAotICAgICAgICAgICAgJ290aGVyJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAg
ICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyks
Ci0gICAgICAgIChbXSwKLSAgICAgICAgIFsoR1RFU1RfT1RIRVJfRElSLCBHVEVTVF9PVEhFUl9E
SVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgQWxsIGF2YWlsYWJsZSBjb25maWd1
cmF0aW9ucwotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3Rf
cnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X3VuaXR0ZXN0J10sCi0g
ICAgICAgICAgICAnYWxsJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxh
YmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChb
XSwKLSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5p
dHRlc3QnKSwKLSAgICAgICAgICAoR1RFU1RfT1BUX0RJUiwgR1RFU1RfT1BUX0RJUiArICcvZ3Rl
c3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBBbGwgYnVpbHQgY29uZmlndXJhdGlvbnMgKHVuYnVp
bHQgZG9uJ3QgY2F1c2UgZmFpbHVyZSkuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0g
ICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rl
c3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgVHJ1ZSwKLSAgICAg
ICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMg
KyBbJ3VuYnVpbHQnXSksCi0gICAgICAgIChbXSwKLSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwg
R1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAoR1RFU1RfT1BU
X0RJUiwgR1RFU1RfT1BUX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBBIGNv
bWJpbmF0aW9uIG9mIGFuIGV4cGxpY2l0IGRpcmVjdG9yeSBhbmQgYSBjb25maWd1cmF0aW9uLgot
ICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdl
dFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbR1RFU1RfREJHX0RJUiwgJ2d0ZXN0X3VuaXR0ZXN0
J10sCi0gICAgICAgICAgICAnb3B0JywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAg
YXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAg
ICAgIChbXSwKLSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rl
c3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAoR1RFU1RfT1BUX0RJUiwgR1RFU1RfT1BUX0RJUiAr
ICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBTYW1lIHRlc3Qgc3BlY2lmaWVkIGluIGFu
IGV4cGxpY2l0IGRpcmVjdG9yeSBhbmQgdmlhIGEgY29uZmlndXJhdGlvbi4KLSAgICBzZWxmLkFz
c2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVu
KAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIsICdndGVzdF91bml0dGVzdCddLAotICAgICAg
ICAgICAgJ2RiZycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9j
b25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0g
ICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0
JyldKSkKLQotICAgICMgQWxsIGJ1aWx0IGNvbmZpZ3VyYXRpb25zICsgZXhwbGljaXQgZGlyZWN0
b3J5ICsgZXhwbGljaXQgY29uZmlndXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVh
bCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAg
W0dURVNUX0RCR19ESVIsICdndGVzdF91bml0dGVzdCddLAotICAgICAgICAgICAgJ29wdCcsCi0g
ICAgICAgICAgICBUcnVlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNl
bGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbXSwKLSAgICAgICAgIFsoR1RFU1Rf
REJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAo
R1RFU1RfT1BUX0RJUiwgR1RFU1RfT1BUX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0g
IGRlZiB0ZXN0UHl0aG9uVGVzdHNPbmx5KHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBHZXRUZXN0
c1RvUnVuIHdpdGggcGFyYW1ldGVycyBkZXNpZ25hdGluZyBQeXRob24gdGVzdHMgb25seS4iIiIK
LQotICAgICMgQSBkZWZhdWx0IGJ1aWxkLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAot
ICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0
ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFsc2Us
Ci0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3Vy
YXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVz
dC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAgICMgQW4gZXhwbGljaXRseSBzcGVjaWZpZWQg
ZGlyZWN0b3J5LgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRl
c3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbR1RFU1RfREJHX0RJUiwgJ3Rl
c3QvZ3Rlc3RfY29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBG
YWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29u
ZmlndXJhdGlvbnMpLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xv
cl90ZXN0LnB5JyldLAotICAgICAgICAgW10pKQotCi0gICAgIyBBIHBhcnRpY3VsYXIgY29uZmln
dXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0
X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF9jb2xvcl90ZXN0LnB5
J10sCi0gICAgICAgICAgICAnb3RoZXInLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAg
ICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAg
ICAgICAgKFsoR1RFU1RfT1RIRVJfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAot
ICAgICAgICAgW10pKQotCi0gICAgIyBBbGwgYXZhaWxhYmxlIGNvbmZpZ3VyYXRpb25zCi0gICAg
c2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVz
dHNUb1J1bigKLSAgICAgICAgICAgIFsndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAg
ICAgICAgICAnYWxsJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxl
X2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbKEdU
RVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKSwKLSAgICAgICAgICAoR1RF
U1RfT1BUX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkK
LQotICAgICMgQWxsIGJ1aWx0IGNvbmZpZ3VyYXRpb25zICh1bmJ1aWx0IGRvbid0IGNhdXNlIGZh
aWx1cmUpLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3Rf
cnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X2NvbG9yX3Rlc3QucHkn
XSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgVHJ1ZSwKLSAgICAgICAgICAgIGF2YWls
YWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMgKyBbJ3VuYnVpbHQn
XSksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkn
KSwKLSAgICAgICAgICAoR1RFU1RfT1BUX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScp
XSwKLSAgICAgICAgIFtdKSkKLQotICAgICMgQSBjb21iaW5hdGlvbiBvZiBhbiBleHBsaWNpdCBk
aXJlY3RvcnkgYW5kIGEgY29uZmlndXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVh
bCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAg
W0dURVNUX0RCR19ESVIsICdndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnb3B0
JywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRp
b25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIs
ICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKSwKLSAgICAgICAgICAoR1RFU1RfT1BUX0RJUiwg
J3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAgICMgU2Ft
ZSB0ZXN0IHNwZWNpZmllZCBpbiBhbiBleHBsaWNpdCBkaXJlY3RvcnkgYW5kIHZpYSBhIGNvbmZp
Z3VyYXRpb24uCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVz
dF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rl
c3RfY29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJ2RiZycsCi0gICAgICAgICAgICBGYWxz
ZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmln
dXJhdGlvbnMpLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90
ZXN0LnB5JyldLAotICAgICAgICAgW10pKQotCi0gICAgIyBBbGwgYnVpbHQgY29uZmlndXJhdGlv
bnMgKyBleHBsaWNpdCBkaXJlY3RvcnkgKyBleHBsaWNpdCBjb25maWd1cmF0aW9uLgotICAgIHNl
bGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3Rz
VG9SdW4oCi0gICAgICAgICAgICBbR1RFU1RfREJHX0RJUiwgJ2d0ZXN0X2NvbG9yX3Rlc3QucHkn
XSwKLSAgICAgICAgICAgICdvcHQnLAotICAgICAgICAgICAgVHJ1ZSwKLSAgICAgICAgICAgIGF2
YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAg
ICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyksCi0gICAgICAg
ICAgKEdURVNUX09QVF9ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAg
ICBbXSkpCi0KLSAgZGVmIHRlc3RDb21iaW5hdGlvbk9mQmluYXJ5QW5kUHl0aG9uVGVzdHMoc2Vs
Zik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3RzVG9SdW4gd2l0aCBtaXhlZCBiaW5hcnkvUHl0
aG9uIHRlc3RzLiIiIgotCi0gICAgIyBVc2Ugb25seSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9y
IHRoaXMgdGVzdC4KLQotICAgICMgTmVpdGhlciBiaW5hcnkgbm9yIFB5dGhvbiB0ZXN0cyBhcmUg
c3BlY2lmaWVkIHNvIGZpbmQgYWxsLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAg
ICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbXSwKLSAg
ICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVf
Y29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RF
U1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFsoR1RF
U1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0gICAg
IyBTcGVjaWZ5aW5nIGJvdGggYmluYXJ5IGFuZCBQeXRob24gdGVzdHMuCi0gICAgc2VsZi5Bc3Nl
cnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigK
LSAgICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnLCAnZ3Rlc3RfY29sb3JfdGVzdC5weSddLAot
ICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJs
ZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoWyhH
VEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgWyhH
VEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAg
ICAjIFNwZWNpZnlpbmcgYmluYXJ5IHRlc3RzIHN1cHByZXNzZXMgUHl0aG9uIHRlc3RzLgotICAg
IHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRl
c3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAn
JywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRp
b25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbXSwKLSAgICAgICAgIFso
R1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0g
ICAjIFNwZWNpZnlpbmcgUHl0aG9uIHRlc3RzIHN1cHByZXNzZXMgYmluYXJ5IHRlc3RzLgotICAg
IHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRl
c3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAg
ICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmln
dXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJH
X0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICBk
ZWYgdGVzdElnbm9yZXNOb25UZXN0RmlsZXMoc2VsZik6Ci0gICAgIiIiVmVyaWZpZXMgdGhhdCBH
ZXRUZXN0c1RvUnVuIGlnbm9yZXMgbm9uLXRlc3QgZmlsZXMgaW4gdGhlIGZpbGVzeXN0ZW0uIiIi
Ci0KLSAgICBzZWxmLmZha2Vfb3MgPSBGYWtlT3MoRmFrZVBhdGgoCi0gICAgICAgIGN1cnJlbnRf
ZGlyPW9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUocnVuX3Rlc3RzX3V0aWwuX19maWxl
X18pKSwKLSAgICAgICAga25vd25fcGF0aHM9W0FkZEV4ZUV4dGVuc2lvbihHVEVTVF9EQkdfRElS
ICsgJy9ndGVzdF9ub250ZXN0JyksCi0gICAgICAgICAgICAgICAgICAgICAndGVzdC8nXSkpCi0g
ICAgc2VsZi50ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5uZXIoc2NyaXB0X2Rp
cj0nLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5qZWN0ZWRfb3M9c2VsZi5mYWtlX29zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluamVjdGVkX3N1YnByb2Nlc3M9Tm9uZSkKLSAgICBzZWxmLkFz
c2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVu
KAotICAgICAgICAgICAgW10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIFRydWUsCi0g
ICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRp
b25zKSwKLSAgICAgICAgKFtdLCBbXSkpCi0KLSAgZGVmIHRlc3RXb3Jrc0Zyb21EaWZmZXJlbnRE
aXIoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3RzVG9SdW4gZnJvbSBhIGRpcmVjdG9y
eSBkaWZmZXJlbnQgZnJvbSBydW5fdGVzdC5weSdzLiIiIgotCi0gICAgIyBIZXJlIHdlIHNpbXVs
YXRlIGFuIHRlc3Qgc2NyaXB0IGluIGRpcmVjdG9yeSAvZC8gY2FsbGVkIGZyb20gdGhlCi0gICAg
IyBkaXJlY3RvcnkgL2EvYi9jLy4KLSAgICBzZWxmLmZha2Vfb3MgPSBGYWtlT3MoRmFrZVBhdGgo
Ci0gICAgICAgIGN1cnJlbnRfZGlyPW9zLnBhdGguYWJzcGF0aCgnL2EvYi9jJyksCi0gICAgICAg
IGtub3duX3BhdGhzPVsKLSAgICAgICAgICAgICcvYS9iL2MvJywKLSAgICAgICAgICAgIEFkZEV4
ZUV4dGVuc2lvbignL2QvJyArIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0g
ICAgICAgICAgICBBZGRFeGVFeHRlbnNpb24oJy9kLycgKyBHVEVTVF9PUFRfRElSICsgJy9ndGVz
dF91bml0dGVzdCcpLAotICAgICAgICAgICAgJy9kL3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weSdd
KSkKLSAgICBzZWxmLmZha2VfY29uZmlndXJhdGlvbnMgPSBbJ2RiZycsICdvcHQnXQotICAgIHNl
bGYudGVzdF9ydW5uZXIgPSBydW5fdGVzdHNfdXRpbC5UZXN0UnVubmVyKHNjcmlwdF9kaXI9Jy9k
LycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5q
ZWN0ZWRfb3M9c2VsZi5mYWtlX29zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluamVjdGVkX3N1YnByb2Nlc3M9Tm9uZSkKLSAgICAjIEEgYmluYXJ5
IHRlc3QuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9y
dW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAg
ICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVf
Y29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFtdLAot
ICAgICAgICAgWygnL2QvJyArIEdURVNUX0RCR19ESVIsICcvZC8nICsgR1RFU1RfREJHX0RJUiAr
ICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBBIFB5dGhvbiB0ZXN0LgotICAgIHNlbGYu
QXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9S
dW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICcn
LAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlv
bnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoJy9kLycgKyBHVEVTVF9E
QkdfRElSLCAnL2QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLCBbXSkpCi0KLSAgZGVmIHRl
c3ROb25UZXN0QmluYXJ5KHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBHZXRUZXN0c1RvUnVuIHdp
dGggYSBub24tdGVzdCBwYXJhbWV0ZXIuIiIiCi0KLSAgICBzZWxmLmFzc2VydF8oCi0gICAgICAg
IG5vdCBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0
X3VuaXR0ZXN0X25vdF9yZWFsbHknXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFs
c2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZp
Z3VyYXRpb25zKSkKLQotICBkZWYgdGVzdE5vbkV4aXN0aW5nUHl0aG9uVGVzdChzZWxmKToKLSAg
ICAiIiJFeGVyY2lzZXMgR2V0VGVzdHNUb1J1biB3aXRoIGEgbm9uLWV4aXN0ZW50IFB5dGhvbiB0
ZXN0IHBhcmFtZXRlci4iIiIKLQotICAgIHNlbGYuYXNzZXJ0XygKLSAgICAgICAgbm90IHNlbGYu
dGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnbm9uZXhpc3RlbnRfdGVz
dC5weSddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAg
IGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpKQotCi0g
IGlmIHJ1bl90ZXN0c191dGlsLklTX1dJTkRPV1Mgb3IgcnVuX3Rlc3RzX3V0aWwuSVNfQ1lHV0lO
OgotCi0gICAgZGVmIHRlc3REb2VzTm90UGlja05vbkV4ZUZpbGVzT25XaW5kb3dzKHNlbGYpOgot
ICAgICAgIiIiVmVyaWZpZXMgdGhhdCBHZXRUZXN0c1RvUnVuIGRvZXMgbm90IGZpbmQgX3Rlc3Qg
ZmlsZXMgb24gV2luZG93cy4iIiIKLQotICAgICAgc2VsZi5mYWtlX29zID0gRmFrZU9zKEZha2VQ
YXRoKAotICAgICAgICAgIGN1cnJlbnRfZGlyPW9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5h
bWUocnVuX3Rlc3RzX3V0aWwuX19maWxlX18pKSwKLSAgICAgICAgICBrbm93bl9wYXRocz1bJy9k
LycgKyBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF90ZXN0JywgJ3Rlc3QvJ10pKQotICAgICAgc2Vs
Zi50ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5uZXIoc2NyaXB0X2Rpcj0nLics
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmpl
Y3RlZF9vcz1zZWxmLmZha2Vfb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmplY3RlZF9zdWJwcm9jZXNzPU5vbmUpCi0gICAgICBzZWxmLkFz
c2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9S
dW4oCi0gICAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgICAnJywKLSAgICAgICAgICAgICAg
VHJ1ZSwKLSAgICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9j
b25maWd1cmF0aW9ucyksCi0gICAgICAgICAgKFtdLCBbXSkpCi0KLQotY2xhc3MgUnVuVGVzdHNU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgIiIiRXhlcmNpc2VzIFRlc3RSdW5uZXIuUnVuVGVz
dHMuIiIiCi0KLSAgZGVmIFNwYXduU3VjY2VzcyhzZWxmLCB1bnVzZWRfZXhlY3V0YWJsZSwgdW51
c2VkX2FyZ3YpOgotICAgICIiIkZha2VzIHRlc3Qgc3VjY2VzcyBieSByZXR1cm5pbmcgMCBhcyBh
biBleGl0IGNvZGUuIiIiCi0KLSAgICBzZWxmLm51bV9zcGF3bl9jYWxscyArPSAxCi0gICAgcmV0
dXJuIDAKLQotICBkZWYgU3Bhd25GYWlsdXJlKHNlbGYsIHVudXNlZF9leGVjdXRhYmxlLCB1bnVz
ZWRfYXJndik6Ci0gICAgIiIiRmFrZXMgdGVzdCBzdWNjZXNzIGJ5IHJldHVybmluZyAxIGFzIGFu
IGV4aXQgY29kZS4iIiIKLQotICAgIHNlbGYubnVtX3NwYXduX2NhbGxzICs9IDEKLSAgICByZXR1
cm4gMQotCi0gIGRlZiBzZXRVcChzZWxmKToKLSAgICBzZWxmLmZha2Vfb3MgPSBGYWtlT3MoRmFr
ZVBhdGgoCi0gICAgICAgIGN1cnJlbnRfZGlyPW9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5h
bWUocnVuX3Rlc3RzX3V0aWwuX19maWxlX18pKSwKLSAgICAgICAga25vd25fcGF0aHM9WwotICAg
ICAgICAgICAgQWRkRXhlRXh0ZW5zaW9uKEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0
JyksCi0gICAgICAgICAgICBBZGRFeGVFeHRlbnNpb24oR1RFU1RfT1BUX0RJUiArICcvZ3Rlc3Rf
dW5pdHRlc3QnKSwKLSAgICAgICAgICAgICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknXSkpCi0g
ICAgc2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zID0gWydkYmcnLCAnb3B0J10KLSAgICBzZWxmLnRl
c3RfcnVubmVyID0gcnVuX3Rlc3RzX3V0aWwuVGVzdFJ1bm5lcigKLSAgICAgICAgc2NyaXB0X2Rp
cj1vcy5wYXRoLmRpcm5hbWUoX19maWxlX18pIG9yICcuJywKLSAgICAgICAgaW5qZWN0ZWRfb3M9
c2VsZi5mYWtlX29zLAotICAgICAgICBpbmplY3RlZF9zdWJwcm9jZXNzPU5vbmUpCi0gICAgc2Vs
Zi5udW1fc3Bhd25fY2FsbHMgPSAwICAjIEEgbnVtYmVyIG9mIGNhbGxzIHRvIHNwYXduLgotCi0g
IGRlZiB0ZXN0UnVuUHl0aG9uVGVzdFN1Y2Nlc3Moc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIFJ1
blRlc3RzIHRvIGhhbmRsZSBhIFB5dGhvbiB0ZXN0IHN1Y2Nlc3MuIiIiCi0KLSAgICBzZWxmLmZh
a2Vfb3Muc3Bhd25faW1wbCA9IHNlbGYuU3Bhd25TdWNjZXNzCi0gICAgc2VsZi5hc3NlcnRFcXVh
bCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5SdW5UZXN0cygKLSAgICAgICAgICAgIFsoR1RF
U1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgICAgIFtd
KSwKLSAgICAgICAgMCkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnVtX3NwYXduX2NhbGxz
LCAxKQotCi0gIGRlZiB0ZXN0UnVuQmluYXJ5VGVzdFN1Y2Nlc3Moc2VsZik6Ci0gICAgIiIiRXhl
cmNpc2VzIFJ1blRlc3RzIHRvIGhhbmRsZSBhIGJpbmFyeSB0ZXN0IHN1Y2Nlc3MuIiIiCi0KLSAg
ICBzZWxmLmZha2Vfb3Muc3Bhd25faW1wbCA9IHNlbGYuU3Bhd25TdWNjZXNzCi0gICAgc2VsZi5h
c3NlcnRFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5SdW5UZXN0cygKLSAgICAgICAg
ICAgIFtdLAotICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9n
dGVzdF91bml0dGVzdCcpXSksCi0gICAgICAgIDApCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzZWxm
Lm51bV9zcGF3bl9jYWxscywgMSkKLQotICBkZWYgdGVzdFJ1blB5dGhvblRlc3RGYXVpbHVyZShz
ZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgUnVuVGVzdHMgdG8gaGFuZGxlIGEgUHl0aG9uIHRlc3Qg
ZmFpbHVyZS4iIiIKLQotICAgIHNlbGYuZmFrZV9vcy5zcGF3bl9pbXBsID0gc2VsZi5TcGF3bkZh
aWx1cmUKLSAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLlJ1
blRlc3RzKAotICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90
ZXN0LnB5JyldLAotICAgICAgICAgICAgW10pLAotICAgICAgICAxKQotICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VsZi5udW1fc3Bhd25fY2FsbHMsIDEpCi0KLSAgZGVmIHRlc3RSdW5CaW5hcnlUZXN0
RmFpbHVyZShzZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgUnVuVGVzdHMgdG8gaGFuZGxlIGEgYmlu
YXJ5IHRlc3QgZmFpbHVyZS4iIiIKLQotICAgIHNlbGYuZmFrZV9vcy5zcGF3bl9pbXBsID0gc2Vs
Zi5TcGF3bkZhaWx1cmUKLSAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICBzZWxmLnRlc3Rf
cnVubmVyLlJ1blRlc3RzKAotICAgICAgICAgICAgW10sCi0gICAgICAgICAgICBbKEdURVNUX0RC
R19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSwKLSAgICAgICAgMSkK
LSAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnVtX3NwYXduX2NhbGxzLCAxKQotCi0gIGRlZiB0
ZXN0Q29tYmluZWRUZXN0U3VjY2VzcyhzZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgUnVuVGVzdHMg
dG8gaGFuZGxlIGEgc3VjY2VzcyBvZiBib3RoIFB5dGhvbiBhbmQgYmluYXJ5IHRlc3QuIiIiCi0K
LSAgICBzZWxmLmZha2Vfb3Muc3Bhd25faW1wbCA9IHNlbGYuU3Bhd25TdWNjZXNzCi0gICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5SdW5UZXN0cygKLSAgICAg
ICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3Qn
KV0sCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0
X3VuaXR0ZXN0JyldKSwKLSAgICAgICAgMCkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnVt
X3NwYXduX2NhbGxzLCAyKQotCi0gIGRlZiB0ZXN0Q29tYmluZWRUZXN0U3VjY2Vzc0FuZEZhaWx1
cmUoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIFJ1blRlc3RzIHRvIGhhbmRsZSBhIHN1Y2Nlc3Mg
b2YgYm90aCBQeXRob24gYW5kIGJpbmFyeSB0ZXN0LiIiIgotCi0gICAgZGVmIFNwYXduSW1wbChl
eGVjdXRhYmxlLCBhcmd2KToKLSAgICAgIHNlbGYubnVtX3NwYXduX2NhbGxzICs9IDEKLSAgICAg
ICMgU2ltdWxhdGVzIGZhaWx1cmUgb2YgYSBQeXRob24gdGVzdCBhbmQgc3VjY2VzcyBvZiBhIGJp
bmFyeSB0ZXN0LgotICAgICAgaWYgJy5weScgaW4gZXhlY3V0YWJsZSBvciAnLnB5JyBpbiBhcmd2
WzBdOgotICAgICAgICByZXR1cm4gMQotICAgICAgZWxzZToKLSAgICAgICAgcmV0dXJuIDAKLQot
ICAgIHNlbGYuZmFrZV9vcy5zcGF3bl9pbXBsID0gU3Bhd25JbXBsCi0gICAgc2VsZi5hc3NlcnRF
cXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5SdW5UZXN0cygKLSAgICAgICAgICAgIFso
R1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0sCi0gICAg
ICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0
JyldKSwKLSAgICAgICAgMCkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnVtX3NwYXduX2Nh
bGxzLCAyKQotCi0KLWNsYXNzIFBhcnNlQXJnc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAi
IiJFeGVyY2lzZXMgUGFyc2VBcmdzLiIiIgotCi0gIGRlZiB0ZXN0Tm9PcHRpb25zKHNlbGYpOgot
ICAgIG9wdGlvbnMsIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoJ2d0ZXN0JywgYXJn
dj1bJ3NjcmlwdC5weSddKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgWydzY3JpcHQucHkn
XSkKLSAgICBzZWxmLmFzc2VydF8ob3B0aW9ucy5jb25maWd1cmF0aW9ucyBpcyBOb25lKQotICAg
IHNlbGYuYXNzZXJ0RmFsc2Uob3B0aW9ucy5idWlsdF9jb25maWd1cmF0aW9ucykKLQotICBkZWYg
dGVzdE9wdGlvbkMoc2VsZik6Ci0gICAgb3B0aW9ucywgYXJncyA9IHJ1bl90ZXN0c191dGlsLlBh
cnNlQXJncygKLSAgICAgICAgJ2d0ZXN0JywgYXJndj1bJ3NjcmlwdC5weScsICctYycsICdkYmcn
XSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5h
c3NlcnRFcXVhbChvcHRpb25zLmNvbmZpZ3VyYXRpb25zLCAnZGJnJykKLSAgICBzZWxmLmFzc2Vy
dEZhbHNlKG9wdGlvbnMuYnVpbHRfY29uZmlndXJhdGlvbnMpCi0KLSAgZGVmIHRlc3RPcHRpb25B
KHNlbGYpOgotICAgIG9wdGlvbnMsIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoJ2d0
ZXN0JywgYXJndj1bJ3NjcmlwdC5weScsICctYSddKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJn
cywgWydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMuY29uZmlndXJh
dGlvbnMsICdhbGwnKQotICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3B0aW9ucy5idWlsdF9jb25maWd1
cmF0aW9ucykKLQotICBkZWYgdGVzdE9wdGlvbkIoc2VsZik6Ci0gICAgb3B0aW9ucywgYXJncyA9
IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygnZ3Rlc3QnLCBhcmd2PVsnc2NyaXB0LnB5JywgJy1i
J10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBbJ3NjcmlwdC5weSddKQotICAgIHNlbGYu
YXNzZXJ0XyhvcHRpb25zLmNvbmZpZ3VyYXRpb25zIGlzIE5vbmUpCi0gICAgc2VsZi5hc3NlcnRU
cnVlKG9wdGlvbnMuYnVpbHRfY29uZmlndXJhdGlvbnMpCi0KLSAgZGVmIHRlc3RPcHRpb25DQW5k
T3B0aW9uQihzZWxmKToKLSAgICBvcHRpb25zLCBhcmdzID0gcnVuX3Rlc3RzX3V0aWwuUGFyc2VB
cmdzKAotICAgICAgICAnZ3Rlc3QnLCBhcmd2PVsnc2NyaXB0LnB5JywgJy1jJywgJ2RiZycsICct
YiddKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgWydzY3JpcHQucHknXSkKLSAgICBzZWxm
LmFzc2VydEVxdWFsKG9wdGlvbnMuY29uZmlndXJhdGlvbnMsICdkYmcnKQotICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRpb25zKQotCi0gIGRlZiB0ZXN0T3B0aW9u
SChzZWxmKToKLSAgICBoZWxwX2NhbGxlZCA9IFtGYWxzZV0KLQotICAgICMgU3VwcHJlc3NlcyBs
aW50IHdhcm5pbmcgb24gdW51c2VkIGFyZ3VtZW50cy4gIFRoZXNlIGFyZ3VtZW50cyBhcmUKLSAg
ICAjIHJlcXVpcmVkIGJ5IG9wdHBhcnNlLCBldmVuIHRob3VnaCB0aGV5IGFyZSB1bnVzZWQuCi0g
ICAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPVcwNjEzCi0gICAgZGVmIFZlcmlmeUhlbHAob3B0aW9u
LCBvcHQsIHZhbHVlLCBwYXJzZXIpOgotICAgICAgaGVscF9jYWxsZWRbMF0gPSBUcnVlCi0KLSAg
ICAjIFZlcmlmaWVzIHRoYXQgLWggY2F1c2VzIHRoZSBoZWxwIGNhbGxiYWNrIHRvIGJlIGNhbGxl
ZC4KLSAgICBoZWxwX2NhbGxlZFswXSA9IEZhbHNlCi0gICAgXywgYXJncyA9IHJ1bl90ZXN0c191
dGlsLlBhcnNlQXJncygKLSAgICAgICAgJ2d0ZXN0JywgYXJndj1bJ3NjcmlwdC5weScsICctaCdd
LCBoZWxwX2NhbGxiYWNrPVZlcmlmeUhlbHApCi0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBb
J3NjcmlwdC5weSddKQotICAgIHNlbGYuYXNzZXJ0VHJ1ZShoZWxwX2NhbGxlZFswXSkKLQotICAg
ICMgVmVyaWZpZXMgdGhhdCAtLWhlbHAgY2F1c2VzIHRoZSBoZWxwIGNhbGxiYWNrIHRvIGJlIGNh
bGxlZC4KLSAgICBoZWxwX2NhbGxlZFswXSA9IEZhbHNlCi0gICAgXywgYXJncyA9IHJ1bl90ZXN0
c191dGlsLlBhcnNlQXJncygKLSAgICAgICAgJ2d0ZXN0JywgYXJndj1bJ3NjcmlwdC5weScsICct
LWhlbHAnXSwgaGVscF9jYWxsYmFjaz1WZXJpZnlIZWxwKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YXJncywgWydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydFRydWUoaGVscF9jYWxsZWRbMF0p
Ci0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgdW5pdHRlc3QubWFpbigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvRGVidWdQcm9qZWN0
LnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0RlYnVnUHJv
amVjdC54Y2NvbmZpZwppbmRleCA1NzZmM2Q5YmYwZTI0ZjZlZTk4OTE4MTNlNGUxOGU0ZjFjMWJl
NDYyLi42NDU3MDFlMjJkNjA1ZWM0MjIzOWYzMGMzMzBjNDU0ZGI3MDlhNWIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvRGVidWdQcm9qZWN0LnhjY29u
ZmlnCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9EZWJ1Z1Byb2pl
Y3QueGNjb25maWcKQEAgLTUsNyArNSw3IEBACiAvLyAgZXhhbXBsZXMuIEl0IGlzIHNldCBpbiB0
aGUgIkJhc2VkIE9uOiIgZHJvcGRvd24gaW4gdGhlICJQcm9qZWN0IiBpbmZvCiAvLyAgZGlhbG9n
LgogLy8gIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxl
cyBpbjoKLS8vICBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1h
Yy8KKy8vICBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZS10b29sYm94LWZvci1tYWMK
IC8vIAogCiAjaW5jbHVkZSAiR2VuZXJhbC54Y2NvbmZpZyIKQEAgLTI4LDEyICsyOCwzIEBAIE9U
SEVSX0NGTEFHUyA9ICQoT1RIRVJfQ0ZMQUdTKSAtRERFQlVHPTEKIC8vIFRoZXNlIGFyZSB0dXJu
ZWQgb2ZmIHRvIGF2b2lkIFNUTCBpbmNvbXBhdGliaWxpdGllcyB3aXRoIGNsaWVudCBjb2RlCiAv
LyAvLyBUdXJucyBvbiBzcGVjaWFsIEMrKyBTVEwgY2hlY2tzIHRvICJlbmNvdXJhZ2UiIGdvb2Qg
U1RMIHVzZQogLy8gR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoR0NDX1BSRVBST0NF
U1NPUl9ERUZJTklUSU9OUykgX0dMSUJDWFhfREVCVUdfUEVEQU5USUMgX0dMSUJDWFhfREVCVUcg
X0dMSUJDUFBfQ09OQ0VQVF9DSEVDS1MKLQotLy8gVXNlZCBieSBIRUFERVJfU0VBUkNIX1BBVEhT
IGluIEdlbmVyYWwueGNjb25maWcKLVdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUiA9ICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9XZWJDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyczsKLQotT05M
WV9BQ1RJVkVfQVJDSCA9IFlFUwotCi1TREtST09UID0gJChTREtST09UXyQoVVNFX0lOVEVSTkFM
X1NESykpOwotU0RLUk9PVF8gPSBtYWNvc3g7Ci1TREtST09UX1lFUyA9IG1hY29zeC5pbnRlcm5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9GcmFt
ZXdvcmtUYXJnZXQueGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25m
aWcvRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnCmluZGV4IGY0ZGE5ZDIzOTkxNjM1YWJkY2RhODJi
NmEwNmVhYzNmYzg1ODkwYWQuLjc3MDgxZmJjYjA1YTA2NTk2YWM3NDE5ZGVlNDhhZjY0MzJlY2Yz
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9GcmFt
ZXdvcmtUYXJnZXQueGNjb25maWcKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUv
Q29uZmlnL0ZyYW1ld29ya1RhcmdldC54Y2NvbmZpZwpAQCAtNCw3ICs0LDcgQEAKIC8vICBUaGVz
ZSBhcmUgRnJhbWV3b3JrIHRhcmdldCBzZXR0aW5ncyBmb3IgdGhlIGd0ZXN0IGZyYW1ld29yayBh
bmQgZXhhbXBsZXMuIEl0CiAvLyAgaXMgc2V0IGluIHRoZSAiQmFzZWQgT246IiBkcm9wZG93biBp
biB0aGUgIlRhcmdldCIgaW5mbyBkaWFsb2cuCiAvLyAgVGhpcyBmaWxlIGlzIGJhc2VkIG9uIHRo
ZSBYY29kZSBDb25maWd1cmF0aW9uIGZpbGVzIGluOgotLy8gIGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9nb29nbGUtdG9vbGJveC1mb3ItbWFjLworLy8gIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29n
bGUvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYwogLy8gCiAKIC8vIER5bmFtaWMgbGlicyBuZWVkIHRv
IGJlIHBvc2l0aW9uIGluZGVwZW5kZW50CkBAIC0xNSw1ICsxNSwzIEBAIFNUUklQX1NUWUxFID0g
bm9uLWdsb2JhbAogCiAvLyBMZXQgdGhlIHVzZXIgaW5zdGFsbCBieSBzcGVjaWZ5aW5nIHRoZSAk
RFNUUk9PVCB3aXRoIHhjb2RlYnVpbGQKIFNLSVBfSU5TVEFMTCA9IE5PCi0KLUlOU1RBTExfUEFU
SCA9ICQoU1lTVEVNX0xJQlJBUllfRElSKS9Qcml2YXRlRnJhbWV3b3JrczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9HZW5lcmFsLnhjY29uZmlnIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0dlbmVyYWwueGNjb25maWcKaW5k
ZXggM2JkMmE1ODZhNTcwNWZjZjY2ZWMyZDk1OTJhZmFjM2Q4ZDZkN2RlMC4uMWFiYTQ4NmYwNTli
NDcyZGJjNzMzMTY2MTRiNDk2ZmU0YTYwMWM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0dlbmVyYWwueGNjb25maWcKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0dlbmVyYWwueGNjb25maWcKQEAgLTQsMjEgKzQsMTEg
QEAKIC8vICBUaGVzZSBhcmUgR2VuZXJhbCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciB0aGUg
Z3Rlc3QgZnJhbWV3b3JrIGFuZAogLy8gIGV4YW1wbGVzLgogLy8gIFRoaXMgZmlsZSBpcyBiYXNl
ZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBpbjoKLS8vICBodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8KLS8vCi0KLSNpbmNsdWRlPyAiLi4v
Li4vLi4vLi4vLi4vLi4vSW50ZXJuYWwvQ29uZmlndXJhdGlvbnMvSGF2ZUludGVybmFsU0RLLnhj
Y29uZmlnIgotCi1VU0VfSU5URVJOQUxfU0RLID0gJChVU0VfSU5URVJOQUxfU0RLXyQoQ09ORklH
VVJBVElPTikpOwotVVNFX0lOVEVSTkFMX1NES19Qcm9kdWN0aW9uID0gWUVTOwotVVNFX0lOVEVS
TkFMX1NES19EZWJ1ZyA9ICQoSEFWRV9JTlRFUk5BTF9TREspOwotVVNFX0lOVEVSTkFMX1NES19S
ZWxlYXNlID0gJChIQVZFX0lOVEVSTkFMX1NESyk7Ci0KLUdDQ19WRVJTSU9OID0gY29tLmFwcGxl
LmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKLQotQVJDSFMgPSAkKEFSQ0hTX1NUQU5EQVJEXzMy
XzY0X0JJVCk7CisvLyAgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGUtdG9vbGJveC1m
b3ItbWFjCisvLyAKIAotSEVBREVSX1NFQVJDSF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElS
KS91c3IvbG9jYWwvaW5jbHVkZSAiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0Zvcndh
cmRpbmdIZWFkZXJzIiAuLi8gLi4vaW5jbHVkZS8KKy8vIEJ1aWxkIGZvciBQUEMgYW5kIEludGVs
LCAzMi0gYW5kIDY0LWJpdAorQVJDSFMgPSBpMzg2IHg4Nl82NCBwcGMgcHBjNjQKIAogLy8gWmVy
b2xpbmsgcHJldmVudHMgbGluayB3YXJuaW5ncyBzbyB0dXJuIGl0IG9mZgogWkVST19MSU5LID0g
Tk8KQEAgLTI3LDIxICsxNyw3IEBAIFpFUk9fTElOSyA9IE5PCiBQUkVCSU5ESU5HID0gTk8KIAog
Ly8gU3RyaWN0ZXN0IHdhcm5pbmcgcG9saWN5Ci1XQVJOSU5HX0NGTEFHUyA9IC1XYWxsIC1XZXJy
b3IgLVdlbmRpZi1sYWJlbHMgLVduZXdsaW5lLWVvZiAtV25vLXNpZ24tY29tcGFyZSAtV3NoYWRv
dzsKLUNMQU5HX1dBUk5fQk9PTF9DT05WRVJTSU9OID0gWUVTOwotQ0xBTkdfV0FSTl9DT05TVEFO
VF9DT05WRVJTSU9OID0gWUVTOwotQ0xBTkdfV0FSTl9FTVBUWV9CT0RZID0gWUVTOwotQ0xBTkdf
V0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZRVM7Ci1DTEFOR19XQVJOX0lOVF9DT05WRVJTSU9OID0g
WUVTOwotQ0xBTkdfV0FSTl9TVFJJQ1RfUFJPVE9UWVBFUyA9IFlFUzsKLUNMQU5HX1dBUk5fX0RV
UExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZRVM7Ci1FTkFCTEVfU1RSSUNUX09CSkNfTVNHU0VORCA9
IFlFUzsKLUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVTOwotR0NDX1dBUk5f
QUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7Ci1HQ0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0g
WUVTOwotR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFUzsKLUdDQ19XQVJOX1VOVVNF
RF9GVU5DVElPTiA9IFlFUzsKLUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKK1dBUk5J
TkdfQ0ZMQUdTID0gLVdhbGwgLVdlcnJvciAtV2VuZGlmLWxhYmVscyAtV25ld2xpbmUtZW9mIC1X
bm8tc2lnbi1jb21wYXJlIC1Xc2hhZG93CiAKIC8vIFdvcmsgYXJvdW5kIFhjb2RlIGJ1Z3MgYnkg
dXNpbmcgZXh0ZXJuYWwgc3RyaXAuIFNlZToKIC8vIGh0dHA6Ly9saXN0cy5hcHBsZS5jb20vYXJj
aGl2ZXMvWGNvZGUtdXNlcnMvMjAwNi9GZWIvbXNnMDAwNTAuaHRtbApAQCAtNTAsMjcgKzI2LDE2
IEBAIFNFUEFSQVRFX1NUUklQID0gWUVTCiAvLyBGb3JjZSBDOTkgZGlhbGVjdAogR0NDX0NfTEFO
R1VBR0VfU1RBTkRBUkQgPSBjOTkKIAotLy8gRm9yY2UgQysrMTQKLUNMQU5HX0NYWF9MQU5HVUFH
RV9TVEFOREFSRCA9IGdudSsrMTQ7Ci0KIC8vIG5vdCBzdXJlIHdoeSBhcHBsZSBkZWZhdWx0cyB0
aGlzIG9uLCBidXQgaXQncyBwcmV0dHkgcmlza3kKIEFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9
IE5PCiAKIC8vIFR1cm4gb24gcG9zaXRpb24gZGVwZW5kZW50IGNvZGUgZm9yIG1vc3QgY2FzZXMg
KG92ZXJyaWRkZW4gd2hlcmUgYXBwcm9wcmlhdGUpCiBHQ0NfRFlOQU1JQ19OT19QSUMgPSBZRVMK
IAotR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoR0NDX1BSRVBST0NFU1NPUl9ERUZJ
TklUSU9OUykgR1RFU1RfSEFTX1RSMV9UVVBMRT0wIEdURVNUX0hBU19SVFRJPTA7Ci0KLUNMQU5H
X0NYWF9MSUJSQVJZID0gbGliYysrOwotCi1UQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUiA9
ICQoTUFDX09TX1hfVkVSU0lPTl9NQUpPUik7Ci0KLUNPTUJJTkVfSElEUElfSU1BR0VTID0gWUVT
OworLy8gRGVmYXVsdCBTREsgYW5kIG1pbmltdW0gT1MgdmVyc2lvbiBpcyAxMC40CitTREtST09U
ID0gJChERVZFTE9QRVJfU0RLX0RJUikvTWFjT1NYMTAuNHUuc2RrCitNQUNPU1hfREVQTE9ZTUVO
VF9UQVJHRVQgPSAxMC40CitHQ0NfVkVSU0lPTiA9IDQuMAogCiAvLyBWRVJTSU9OSU5HIEJVSUxE
IFNFVFRJTkdTICh1c2VkIGluIEluZm8ucGxpc3QpCiBHVEVTVF9WRVJTSU9OSU5GT19BQk9VVCA9
ICDCqSAyMDA4IEdvb2dsZSBJbmMuCi1PVEhFUl9DRkxBR1MgPSAkKEFTQU5fT1RIRVJfQ0ZMQUdT
KTsKLU9USEVSX0NQTFVTUExVU0ZMQUdTID0gJChBU0FOX09USEVSX0NQTFVTUExVU0ZMQUdTKTsK
LU9USEVSX0xERkxBR1MgPSAkKEFTQU5fT1RIRVJfTERGTEFHUyk7Ci0KLVNVUFBPUlRFRF9QTEFU
Rk9STVMgPSBpcGhvbmVvcyBpcGhvbmVzaW11bGF0b3IgbWFjb3N4IHR2b3MgdHZzaW11bGF0b3Ig
d2F0Y2hvcyB3YXRjaHNpbXVsYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3hjb2RlL0NvbmZpZy9Qcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZpZyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9Qcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZpZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE2YzY4NzhlOTc2MTAxODhkYWE4NjI5ZDM1MjFh
Yjk0Nzc2YmFjNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvUHJvZHVjdGlvblByb2plY3Qu
eGNjb25maWcKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vLwotLy8gIFByb2R1Y3Rp
b25Qcm9qZWN0LnhjY29uZmlnCi0vLwotLy8gIFRoZXNlIGFyZSBQcm9kdWN0aW9uIENvbmZpZ3Vy
YXRpb24gcHJvamVjdCBzZXR0aW5ncyBmb3IgdGhlIGd0ZXN0IGZyYW1ld29yawotLy8gIGFuZCBl
eGFtcGxlcy4gSXQgaXMgc2V0IGluIHRoZSAiQmFzZWQgT246IiBkcm9wZG93biBpbiB0aGUgIlBy
b2plY3QiIGluZm8KLS8vICBkaWFsb2cuCi0vLyAgVGhpcyBmaWxlIGlzIGJhc2VkIG9uIHRoZSBY
Y29kZSBDb25maWd1cmF0aW9uIGZpbGVzIGluOgotLy8gIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20v
cC9nb29nbGUtdG9vbGJveC1mb3ItbWFjLwotLy8gCi0KLSNpbmNsdWRlICJSZWxlYXNlUHJvamVj
dC54Y2NvbmZpZyIKLQotLy8gVXNlZCBieSBIRUFERVJfU0VBUkNIX1BBVEhTIGluIEdlbmVyYWwu
eGNjb25maWcKLVdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUiA9ICQoV0VCQ09SRV9QUklWQVRF
X0hFQURFUlNfRElSXyQoV0tfVVNFX09WRVJSSURFX0ZSQU1FV09SS1NfRElSKSk7Ci1XRUJDT1JF
X1BSSVZBVEVfSEVBREVSU19ESVJfTk8gPSAkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jr
cy9XZWJLaXQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9XZWJDb3JlLmZyYW1ld29y
ay9Qcml2YXRlSGVhZGVyczsKLVdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUl9ZRVMgPSAkKFdL
X09WRVJSSURFX0ZSQU1FV09SS1NfRElSKS9XZWJDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVy
czsKLQotRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICQoV0tfUVVPVEVEX09WRVJSSURFX0ZSQU1F
V09SS1NfRElSKSAkKGluaGVyaXRlZCk7Ci0KLU9OTFlfQUNUSVZFX0FSQ0ggPSBOTwotCi1TREtS
T09UID0gbWFjb3N4LmludGVybmFsOwotCi1XS19FTVBUWV8gPSBZRVM7Ci1XS19OT1RfID0gWUVT
OwotV0tfTk9UX1lFUyA9IE5POwotCi1XS19VU0VfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVJbc2Rr
PW1hY29zeCpdID0gJChXS19OT1RfJChXS19FTVBUWV8kKFdLX09WRVJSSURFX0ZSQU1FV09SS1Nf
RElSKSkpOwotCi1XS19PVkVSUklERV9GUkFNRVdPUktTX0RJUiA9ICQoV0tfT1ZFUlJJREVfRlJB
TUVXT1JLU19ESVJfVVNFX1NUQUdJTkdfSU5TVEFMTF9QQVRIXyQoVVNFX1NUQUdJTkdfSU5TVEFM
TF9QQVRIKSk7Ci1XS19PVkVSUklERV9GUkFNRVdPUktTX0RJUl9VU0VfU1RBR0lOR19JTlNUQUxM
X1BBVEhfWUVTID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1N0YWdlZEZyYW1ld29ya3MvU2FmYXJp
OwotCi1XS19RVU9URURfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVIgPSAkKFdLX1FVT1RFRF9PVkVS
UklERV9GUkFNRVdPUktTX0RJUl8kKFdLX1VTRV9PVkVSUklERV9GUkFNRVdPUktTX0RJUikpOwot
V0tfUVVPVEVEX09WRVJSSURFX0ZSQU1FV09SS1NfRElSX1lFUyA9ICIkKFdLX09WRVJSSURFX0ZS
QU1FV09SS1NfRElSKSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29k
ZS9Db25maWcvUmVsZWFzZVByb2plY3QueGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC94Y29kZS9Db25maWcvUmVsZWFzZVByb2plY3QueGNjb25maWcKaW5kZXggMTNlOTE3ZmJmYTJk
ZGYyZDNlZTUzMTU5OGRjMGZiMGYyYjViZjg3Ni4uZGY5YTM4Zjg5Yjk3NzJkNjU3Nzg0ODIxYjJi
MTYzZGVkYWQ0NDQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUv
Q29uZmlnL1JlbGVhc2VQcm9qZWN0LnhjY29uZmlnCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3hjb2RlL0NvbmZpZy9SZWxlYXNlUHJvamVjdC54Y2NvbmZpZwpAQCAtNSw3ICs1LDcgQEAK
IC8vICBhbmQgZXhhbXBsZXMuIEl0IGlzIHNldCBpbiB0aGUgIkJhc2VkIE9uOiIgZHJvcGRvd24g
aW4gdGhlICJQcm9qZWN0IiBpbmZvCiAvLyAgZGlhbG9nLgogLy8gIFRoaXMgZmlsZSBpcyBiYXNl
ZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBpbjoKLS8vICBodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8KKy8vICBodHRwczovL2dpdGh1Yi5j
b20vZ29vZ2xlL2dvb2dsZS10b29sYm94LWZvci1tYWMKIC8vIAogCiAjaW5jbHVkZSAiR2VuZXJh
bC54Y2NvbmZpZyIKQEAgLTMwLDEyICszMCwzIEBAIE9USEVSX0NGTEFHUyA9ICQoT1RIRVJfQ0ZM
QUdTKSAtRE5ERUJVRz0xIC1Xbm8tdW51c2VkLXZhcmlhYmxlCiAKIC8vIFdoZW4gd2Ugc3RyaXAg
d2Ugd2FudCB0byBzdHJpcCBhbGwgc3ltYm9scyBpbiByZWxlYXNlLCBidXQgc2F2ZSBleHRlcm5h
bHMuCiBTVFJJUF9TVFlMRSA9IGFsbAotCi0vLyBVc2VkIGJ5IEhFQURFUl9TRUFSQ0hfUEFUSFMg
aW4gR2VuZXJhbC54Y2NvbmZpZwotV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSID0gJChCVUlM
VF9QUk9EVUNUU19ESVIpL1dlYkNvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwotCi1PTkxZ
X0FDVElWRV9BUkNIID0gWUVTCi0KLVNES1JPT1QgPSAkKFNES1JPT1RfJChVU0VfSU5URVJOQUxf
U0RLKSk7Ci1TREtST09UXyA9IG1hY29zeDsKLVNES1JPT1RfWUVTID0gbWFjb3N4LmludGVybmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1N0YXRp
Y0xpYnJhcnlUYXJnZXQueGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9D
b25maWcvU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZwppbmRleCBkZDMzMjU1YTk0NDc3MDIw
Y2YxMWY3MDU1ZTQ0YWUyNTI4ZWI5Zjk3Li5kMjQyNGZlODBkMWNkYWRiNWEwMjYwM2M4OWQ4MjQ1
NTg1ODVjMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25m
aWcvU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC94Y29kZS9Db25maWcvU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZwpAQCAtNCw3ICs0
LDcgQEAKIC8vICBUaGVzZSBhcmUgc3RhdGljIGxpYnJhcnkgdGFyZ2V0IHNldHRpbmdzIGZvciBs
aWJndGVzdC5hLiBJdAogLy8gIGlzIHNldCBpbiB0aGUgIkJhc2VkIE9uOiIgZHJvcGRvd24gaW4g
dGhlICJUYXJnZXQiIGluZm8gZGlhbG9nLgogLy8gIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiB0aGUg
WGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBpbjoKLS8vICBodHRwOi8vY29kZS5nb29nbGUuY29t
L3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8KKy8vICBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xl
L2dvb2dsZS10b29sYm94LWZvci1tYWMKIC8vIAogCiAvLyBTdGF0aWMgbGlicyBjYW4gYmUgaW5j
bHVkZWQgaW4gYnVuZGxlcyBzbyBtYWtlIHRoZW0gcG9zaXRpb24gaW5kZXBlbmRlbnQKQEAgLTE2
LDUgKzE2LDMgQEAgU1RSSVBfU1RZTEUgPSBkZWJ1Z2dpbmcKIAogLy8gTGV0IHRoZSB1c2VyIGlu
c3RhbGwgYnkgc3BlY2lmeWluZyB0aGUgJERTVFJPT1Qgd2l0aCB4Y29kZWJ1aWxkCiBTS0lQX0lO
U1RBTEwgPSBOTwotCi1PVEhFUl9MREZMQUdTID0gOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QveGNvZGUvTWFrZWZpbGUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29k
ZS9NYWtlZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM4ZTg0OTNkZjI5Njhh
YmU3NzFjNmQ2NzhlOGQyOWQzOWM5YjNhNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9NYWtlZmlsZQor
KysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotU0NSSVBUU19QQVRIID89IC4uLy4uLy4uLy4u
L1Rvb2xzL1NjcmlwdHMKLWluY2x1ZGUgLi4vLi4vLi4vLi4vTWFrZWZpbGUuc2hhcmVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1Nh
bXBsZS93aWRnZXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL1NhbXBs
ZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjCmluZGV4IDYxYzBkMmZmZDc2ZDE4MDZh
YTM1OTc5ZDhhZTM2NDEwNjQ4YWFhMTUuLjg3MjU5OTQyMTg1MTQwOGU3NmFhYjZjNTYwYjgxODky
NDU5YmJkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL1NhbXBs
ZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjCkBAIC0z
Niw3ICszNiw3IEBACiAvLyBUaGlzIGlzIGEgc2ltcGxlIHRlc3QgZmlsZSBmb3IgdGhlIFdpZGdl
dCBjbGFzcyBpbiB0aGUgV2lkZ2V0LmZyYW1ld29yawogCiAjaW5jbHVkZSA8c3RyaW5nPgotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2luY2x1
ZGUgPFdpZGdldC93aWRnZXQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QveGNvZGUvU2NyaXB0cy92ZXJzaW9uZ2VuZXJhdGUucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC94Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weQpvbGQgbW9kZSAxMDA2NDQKbmV3
IG1vZGUgMTAwNzU1CmluZGV4IDgxZGU4Yzk2YWM1ZDg2Y2E2Mzk0NTZjOTBjNDMzMDY3YmRmZDQw
ZTUuLmJkZDc1NDFhZDc5N2ZhNjczZjY1ZGEzODE2OGUxNTgwZmQ3ZGRlM2EKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2NyaXB0cy92ZXJzaW9uZ2VuZXJhdGUucHkKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2NyaXB0cy92ZXJzaW9uZ2VuZXJhdGUucHkK
QEAgLTI5LDcgKzI5LDcgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSIiIkEg
c2NyaXB0IHRvIHByZXBhcmUgdmVyc2lvbiBpbmZvcm10aW9uIGZvciB1c2UgdGhlIGd0ZXN0IElu
Zm8ucGxpc3QgZmlsZS4KKyIiIkEgc2NyaXB0IHRvIHByZXBhcmUgdmVyc2lvbiBpbmZvcm1hdGlv
biBmb3IgdXNlIHRoZSBndGVzdCBJbmZvLnBsaXN0IGZpbGUuCiAKICAgVGhpcyBzY3JpcHQgZXh0
cmFjdHMgdGhlIHZlcnNpb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgY29uZmlndXJlLmFjIGZpbGUg
YW5kCiAgIHVzZXMgaXQgdG8gZ2VuZXJhdGUgYSBoZWFkZXIgZmlsZSBjb250YWluaW5nIHRoZSBz
YW1lIGluZm9ybWF0aW9uLiBUaGUKQEAgLTQyLDcgKzQyLDcgQEAKICAgICAxLiBUaGUgQUNfSU5J
VCBtYWNybyB3aWxsIGJlIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGZpcnN0IDEwMjQgY2hhcmFjdGVy
cwogICAgICAgIG9mIGNvbmZpZ3VyZS5hYwogICAgIDIuIFRoZSB2ZXJzaW9uIHN0cmluZyB3aWxs
IGJlIDMgaW50ZWdlcnMgc2VwYXJhdGVkIGJ5IHBlcmlvZHMgYW5kIHdpbGwgYmUKLSAgICAgICBz
dXJyb3VuZGVkIGJ5IHNxdXJlIGJyYWNrZXRzLCAiWyIgYW5kICJdIiAoZS5nLiBbMS4wLjFdKS4g
VGhlIGZpcnN0CisgICAgICAgc3Vycm91bmRlZCBieSBzcXVhcmUgYnJhY2tldHMsICJbIiBhbmQg
Il0iIChlLmcuIFsxLjAuMV0pLiBUaGUgZmlyc3QKICAgICAgICBzZWdtZW50IHJlcHJlc2VudHMg
dGhlIG1ham9yIHZlcnNpb24sIHRoZSBzZWNvbmQgcmVwcmVzZW50cyB0aGUgbWlub3IKICAgICAg
ICB2ZXJzaW9uIGFuZCB0aGUgdGhpcmQgcmVwcmVzZW50cyB0aGUgZml4IHZlcnNpb24uCiAgICAg
My4gTm8gIikiIGNoYXJhY3RlciBleGlzdHMgYmV0d2VlbiB0aGUgb3BlbmluZyAiKCIgYW5kIGNs
b3NpbmcgIikiIG9mCkBAIC02OCw3ICs2OCw3IEBAIGNvbmZpZ19maWxlLmNsb3NlKCkKIAogIyBF
eHRyYWN0IHRoZSB2ZXJzaW9uIHN0cmluZyBmcm9tIHRoZSBBQ19JTklUIG1hY3JvCiAjICAgVGhl
IGZvbGxvd2luZyBpbml0X2V4cHJlc3Npb24gbWVhbnM6Ci0jICAgICBFeHRyYWN0IHRocmVlIGlu
dGVnZXJzIHNlcGFyYXRlZCBieSBwZXJpb2RzIGFuZCBzdXJyb3VuZGVkIGJ5IHNxdXJlCisjICAg
ICBFeHRyYWN0IHRocmVlIGludGVnZXJzIHNlcGFyYXRlZCBieSBwZXJpb2RzIGFuZCBzdXJyb3Vu
ZGVkIGJ5IHNxdWFyZQogIyAgICAgYnJhY2tldHMoZS5nLiAiWzEuMC4xXSIpIGJldHdlZW4gIkFD
X0lOSVQoIiBhbmQgIikiLiBEbyBub3QgYmUgZ3JlZWR5CiAjICAgICAoKj8gaXMgdGhlIG5vbi1n
cmVlZHkgZmxhZykgc2luY2UgdGhhdCB3b3VsZCBwdWxsIGluIGV2ZXJ5dGhpbmcgYmV0d2Vlbgog
IyAgICAgdGhlIGZpcnN0ICIoIiBhbmQgdGhlIGxhc3QgIikiIGluIHRoZSBmaWxlLgpAQCAtODgs
NyArODgsNyBAQCBmaWxlX2RhdGEgPSAiIiIvLwogLy8gaXMgZXhlY3V0ZWQgaW4gYSAiUnVuIFNj
cmlwdCIgYnVpbGQgcGhhc2Ugd2hlbiBjcmVhdGluZyBndGVzdC5mcmFtZXdvcmsuIFRoaXMKIC8v
IGhlYWRlciBmaWxlIGlzIG5vdCB1c2VkIGR1cmluZyBjb21waWxhdGlvbiBvZiBDLXNvdXJjZS4g
UmF0aGVyLCBpdCBzaW1wbHkKIC8vIGRlZmluZXMgc29tZSB2ZXJzaW9uIHN0cmluZ3MgZm9yIHN1
YnN0aXR1dGlvbiBpbiB0aGUgSW5mby5wbGlzdC4gQmVjYXVzZSBvZgotLy8gdGhpcywgd2UgYXJl
IG5vdCBub3QgcmVzdHJpY3RlZCB0byBDLXN5bnRheCBub3IgYXJlIHdlIHVzaW5nIGluY2x1ZGUg
Z3VhcmRzLgorLy8gdGhpcywgd2UgYXJlIG5vdCByZXN0cmljdGVkIHRvIEMtc3ludGF4IG5vciBh
cmUgd2UgdXNpbmcgaW5jbHVkZSBndWFyZHMuCiAvLwogCiAjZGVmaW5lIEdURVNUX1ZFUlNJT05J
TkZPX1NIT1JUICVzLiVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29k
ZS9ndGVzdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QveGNvZGUvZ3Rlc3QueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZmYzZmJhZmVm
YmFhYzNiODM4MjQ4YjE3ZDU2ODc2YjNkNWY2YmU4Li5mMDVkOTZmZmE4OGU2NjA2OTg4ZjBlZjhh
NGM2ZDdkODYzOWM3YmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29k
ZS9ndGVzdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3hjb2RlL2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3LDcgKzM3
LDYgQEAKIC8qIEVuZCBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQ
QlhCdWlsZEZpbGUgc2VjdGlvbiAqLwotCQkxQTBBNEM0NTE0QjdBM0I1MDA4OTUxMzUgLyogSmF2
YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUEwQTRDNDQxNEI3QTNCNTAwODk1MTM1IC8qIEphdmFTY3JpcHRDb3Jl
LmZyYW1ld29yayAqLzsgfTsKIAkJMjI0QTEyQTMwRTlFQURDQzAwQkQxN0ZEIC8qIGd0ZXN0LXRl
c3QtcGFydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjI0QTEyQTIwRTlFQURDQzAwQkQxN0ZEIC8qIGd0ZXN0LXRlc3QtcGFydC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJM0JGNkYyQTAwRTc5QjVBRDAw
MEYyRUVFIC8qIGd0ZXN0LXR5cGUtdXRpbC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQkY2RjI5RjBFNzlCNUFEMDAwRjJFRUUg
LyogZ3Rlc3QtdHlwZS11dGlsLmggKi87IH07CiAJCTNCRjZGMkE1MEU3OUI2MTYwMDBGMkVFRSAv
KiBndGVzdC10eXBlZC10ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzQkY2RjJBNDBFNzlCNjE2MDAwRjJFRUUgLyogZ3Rlc3QtdHlwZWQtdGVzdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKQEAgLTQ3LDcg
KzQ2LDcgQEAKIAkJNDA0ODg0M0IwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNERTBFMkY3OTlCMDBD
Rjc2NTggLyogZ3Rlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7
IH07IH07CiAJCTQwNDg4NDNDMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcmVkX2ltcGwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0RGMEUy
Rjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcmVkX2ltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTQwNDg4NDNEMEUyRjc5OUIwMENGNzY1OCAvKiBn
dGVzdF9wcm9kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MDQ4ODNFMDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3RfcHJvZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJNDA0ODg0NTAwRTJGNzk5QjAwQ0Y3
NjU4IC8qIFJFQURNRSBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRSAqLzsgfTsKKwkJNDA0ODg0
NTAwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURN
RS5tZCAqLzsgfTsKIAkJNDA0ODg0QTAwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRoLXRl
c3QtaW50ZXJuYWwuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRTIwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRo
LXRlc3QtaW50ZXJuYWwuaCAqLzsgfTsKIAkJNDA0ODg0QTEwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0
ZXN0LWZpbGVwYXRoLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0UzMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1maWxl
cGF0aC5oICovOyB9OwogCQk0MDQ4ODRBMjBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3QtaW50ZXJu
YWwuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDA0ODgzRTQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWludGVybmFsLmggKi87
IH07CkBAIC01NSw3ICs1NCw3IEBACiAJCTQwNDg4NEE0MEUyRjdCRTYwMENGNzY1OCAvKiBndGVz
dC1zdHJpbmcuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDA0ODgzRTYwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXN0cmluZy5o
ICovOyB9OwogCQk0MDQ4ODRBQzBFMkY3Q0Q5MDBDRjc2NTggLyogQ0hBTkdFUyBpbiBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODg0QTkwRTJGN0NEOTAw
Q0Y3NjU4IC8qIENIQU5HRVMgKi87IH07CiAJCTQwNDg4NEFEMEUyRjdDRDkwMENGNzY1OCAvKiBD
T05UUklCVVRPUlMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQwNDg4NEFBMEUyRjdDRDkwMENGNzY1OCAvKiBDT05UUklCVVRPUlMgKi87IH07Ci0JCTQw
NDg4NEFFMEUyRjdDRDkwMENGNzY1OCAvKiBDT1BZSU5HIGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogQ09Q
WUlORyAqLzsgfTsKKwkJNDA0ODg0QUUwRTJGN0NEOTAwQ0Y3NjU4IC8qIExJQ0VOU0UgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4NEFCMEUyRjdD
RDkwMENGNzY1OCAvKiBMSUNFTlNFICovOyB9OwogCQk0MDg5OUYzQTBGRkE3MEQ0MDAwQjI5QUUg
LyogZ3Rlc3QtYWxsLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjI0QTEyQTEwRTlFQURBNzAwQkQxN0ZEIC8qIGd0ZXN0LWFsbC5jYyAqLzsgfTsKIAkJ
NDA4OTlGNTAwRkZBNzI4MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggaW4gQ29weSBIZWFkZXJz
IEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwODk5RjREMEZG
QTcyNzEwMDBCMjlBRSAvKiBndGVzdC10dXBsZS5oICovOyB9OwogCQk0MDg5OUY1MzBGRkE3MkEw
MDAwQjI5QUUgLyogZ3Rlc3RfdW5pdHRlc3QuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzQjIzOEMxMjBFN0ZFMTNDMDA4NDZFMTEgLyogZ3Rlc3RfdW5p
dHRlc3QuY2MgKi87IH07CkBAIC03OSw2ICs3OCwxNCBAQAogCQk0NTM5QzkzODBFQzI4MEUyMDBB
NzBGNEMgLyogZ3Rlc3QtbGlua2VkX3B0ci5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTM5QzkzNTBFQzI4MEUyMDBBNzBGNEMg
LyogZ3Rlc3QtbGlua2VkX3B0ci5oICovOyB9OwogCQk0NTM5QzkzOTBFQzI4MEUyMDBBNzBGNEMg
LyogZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUzOUM5MzYwRUMyODBFMjAwQTcw
RjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmggKi87IH07CiAJCTQ1MzlDOTNBMEVD
MjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLmggaW4gQ29weSBIZWFkZXJzIEludGVy
bmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MzlDOTM3MEVDMjgwRTIw
MEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLmggKi87IH07CisJCTQ1NjdDODE4MTI2NEZGNzEw
MDc3NDBCRSAvKiBndGVzdC1wcmludGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDU2N0M4MTcxMjY0RkY3MTAwNzc0MEJFIC8qIGd0ZXN0LXByaW50
ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlG
NjdENEYzRTFDN0Y1RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdENEYzRDFDN0Y1RDhCMDAxN0M3
MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggKi87IH07CisJCUY2N0Q0RjNGMUM3RjVEQTcwMDE3Qzcy
OSAvKiBndGVzdC1wb3J0LWFyY2guaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGM0QxQzdGNUQ4QjAwMTdDNzI5IC8qIGd0
ZXN0LXBvcnQtYXJjaC5oICovOyB9OworCQlGNjdENEY0NDFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rl
c3QtcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjY3RDRGNDExQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCAqLzsgfTsKKwkJRjY3RDRG
NDUxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdENEY0MjFDN0Y1REQwMDAxN0M3MjkgLyog
Z3Rlc3QtcHJpbnRlcnMuaCAqLzsgfTsKKwkJRjY3RDRGNDYxQzdGNUREMDAwMTdDNzI5IC8qIGd0
ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdE
NEY0MzFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QuaCAqLzsgfTsKKwkJRjY3RDRGNDgxQzdGNUUx
NjAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgQ3VzdG9t
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2N0Q0RjQxMUM3RjVERDAwMDE3
QzcyOSAvKiBndGVzdC1wb3J0LmggKi87IH07CisJCUY2N0Q0RjQ5MUM3RjVFMjYwMDE3QzcyOSAv
KiBndGVzdC1wcmludGVycy5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20gKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGNDIxQzdGNUREMDAwMTdDNzI5IC8q
IGd0ZXN0LXByaW50ZXJzLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTE4OCw2ICsx
OTUsNyBAQAogCQkJCTQ1MzlDOTM4MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1saW5rZWRfcHRy
LmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLAogCQkJCTQ1MzlDOTM5MEVDMjgwRTIwMEE3
MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIGluIENvcHkgSGVhZGVycyBJbnRl
cm5hbCAqLywKIAkJCQk0NTM5QzkzQTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdXRp
bC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKKwkJCQlGNjdENEYzRjFDN0Y1REE3MDAx
N0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLAog
CQkJCTQwNDg4NEEzMEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1wb3J0LmggaW4gQ29weSBIZWFk
ZXJzIEludGVybmFsICovLAogCQkJCTQwNDg4NEE0MEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1z
dHJpbmcuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8sCiAJCQkJNDA4OTlGNTAwRkZBNzI4
MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLApA
QCAtMTk2LDEwICsyMDQsMjEgQEAKIAkJCW5hbWUgPSAiQ29weSBIZWFkZXJzIEludGVybmFsIjsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OworCQlGNjdE
NEY0NzFDN0Y1REY2MDAxN0M3MjkgLyogQ29weSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLyA9
IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IEhlYWRlcnMvaW50ZXJuYWwvY3VzdG9tOworCQkJ
ZHN0U3ViZm9sZGVyU3BlYyA9IDY7CisJCQlmaWxlcyA9ICgKKwkJCQlGNjdENEY0ODFDN0Y1RTE2
MDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20g
Ki8sCisJCQkJRjY3RDRGNDkxQzdGNUUyNjAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggaW4g
Q29weSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLywKKwkJCSk7CisJCQluYW1lID0gIkNvcHkg
SGVhZGVycyBJbnRlcm5hbCBDdXN0b20iOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCX07CiAvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCQkxQTBBNEM0NDE0
QjdBM0I1MDA4OTUxMzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IHBh
dGggPSBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTIyNEExMkExMEU5RUFEQTcwMEJEMTdGRCAvKiBndGVzdC1hbGwuY2MgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gImd0ZXN0LWFsbC5jYyI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIyNEExMkEyMEU5RUFEQ0MwMEJEMTdGRCAvKiBndGVz
dC10ZXN0LXBhcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC10
ZXN0LXBhcnQuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNCMjM4QzEyMEU3RkUx
M0MwMDg0NkUxMSAvKiBndGVzdF91bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IGd0ZXN0X3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjE4LDExICsyMzcsMTEgQEAKIAkJNDA0ODgzRTQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0
ZXN0LWludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1p
bnRlcm5hbC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDA0ODgzRTUwRTJGNzk5
QjAwQ0Y3NjU4IC8qIGd0ZXN0LXBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gImd0ZXN0LXBvcnQuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwNDg4M0U2
MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gImd0ZXN0LXN0cmluZy5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5h
bWUgPSBSRUFETUU7IHBhdGggPSAuLi9SRUFETUU7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsg
fTsKKwkJNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IG5hbWUgPSBSRUFETUUubWQ7IHBhdGggPSAuLi9SRUFETUUubWQ7IHNvdXJjZVRyZWUgPSBT
T1VSQ0VfUk9PVDsgfTsKIAkJNDA0ODg0MEQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X21haW4u
Y2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBndGVzdF9tYWluLmNjOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MDQ4ODRBOTBFMkY3Q0Q5MDBDRjc2NTggLyog
Q0hBTkdFUyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDSEFOR0VTOyBwYXRoID0gLi4vQ0hBTkdF
Uzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk0MDQ4ODRBQTBFMkY3Q0Q5MDBDRjc2
NTggLyogQ09OVFJJQlVUT1JTICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IENPTlRSSUJVVE9SUzsg
cGF0aCA9IC4uL0NPTlRSSUJVVE9SUzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQk0
MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogQ09QWUlORyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUg
PSBDT1BZSU5HOyBwYXRoID0gLi4vQ09QWUlORzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OworCQk0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogTElDRU5TRSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBMSUNFTlNFOyBwYXRoID0gLi4vTElDRU5TRTsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OwogCQk0MDg5OUY0MzBGRkE3MTg0MDAwQjI5QUUgLyogZ3Rlc3RfdW5pdHRlc3QtZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSAi
Z3Rlc3RfdW5pdHRlc3QtZnJhbWV3b3JrIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJNDA4OTlGNEQwRkZBNzI3MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC10dXBsZS5oIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDA4OTlGQjMwRkZBNzU2NzAwMEIyOUFFIC8qIFN0YXRpY0xpYnJh
cnlUYXJnZXQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU3RhdGlj
TGlicmFyeVRhcmdldC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIz
OSwxMiArMjU4LDE2IEBACiAJCTQwRDRDREYzMEUzMEUwNzQwMDI5NDgwMSAvKiBHZW5lcmFsLnhj
Y29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEdlbmVyYWwueGNjb25maWc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwRDRDREY0MEUzMEUwNzQwMDI5NDgwMSAv
KiBSZWxlYXNlUHJvamVjdC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBSZWxlYXNlUHJvamVjdC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDBENENGNTEwRTMwRjVFMjAwMjk0ODAxIC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBs
aXN0LnhtbDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTQ0QzQ4REZGMTRBNDA5OEYwMEEyRDlDNyAvKiBQcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZpZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBQcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZp
Zzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDUzOUM4RkYwRUMyN0Y2NDAwQTcwRjRD
IC8qIGd0ZXN0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNp
dEZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9
IGd0ZXN0LmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJ
NDUzOUM5MzMwRUMyODBBRTAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXRlc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXBhcmFtLXRlc3QuaCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ1MzlDOTM1MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1saW5r
ZWRfcHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1saW5rZWRf
cHRyLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NTM5QzkzNjBFQzI4MEUyMDBB
NzBGNEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gImd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NTM5QzkzNzBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFy
YW0tdXRpbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcGFyYW0t
dXRpbC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDU2N0M4MTcxMjY0RkY3MTAw
Nzc0MEJFIC8qIGd0ZXN0LXByaW50ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9ICJndGVzdC1wcmludGVycy5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjY3
RDRGM0QxQzdGNUQ4QjAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQtYXJjaC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcG9ydC1hcmNoLmgiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGNjdENEY0MTFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcG9ydC5oIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjY3RDRGNDIxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBy
aW50ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1wcmludGVy
cy5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjY3RDRGNDMxQzdGNUREMDAwMTdD
NzI5IC8qIGd0ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGd0ZXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAg
LTI4NCwxNCArMzA3LDYgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKLQkJNDQ0RDExNzIxNEEyNjI4RjAwOUZFQzNGIC8qIEZyYW1ld29y
a3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQkxQTBBNEM0NTE0QjdBM0I1
MDA4OTUxMzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCi0J
CQkpOwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07CiAv
KiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhH
cm91cCBzZWN0aW9uICovCkBAIC0zMTYsNyArMzMxLDYgQEAKIAkJCQkwOEZCNzdBQ0ZFODQxNzA3
QzAyQUFDMDcgLyogU291cmNlICovLAogCQkJCTQwRDRDRjRFMEUzMEY1RTIwMDI5NDgwMSAvKiBS
ZXNvdXJjZXMgKi8sCiAJCQkJNDAzRUUzN0IwRTM3NzgyMjAwNEJEMUUyIC8qIFNjcmlwdHMgKi8s
Ci0JCQkJMUEwQTRDNDYxNEI3QTNCQzAwODk1MTM1IC8qIEZyYW1ld29ya3MgKi8sCiAJCQkJMDM0
NzY4RERGRjM4QTQ1QTExREI5QzhCIC8qIFByb2R1Y3RzICovLAogCQkJKTsKIAkJCW5hbWUgPSBn
dGVzdDsKQEAgLTMyNywyNCArMzQxLDE2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MDQ4ODRB
OTBFMkY3Q0Q5MDBDRjc2NTggLyogQ0hBTkdFUyAqLywKIAkJCQk0MDQ4ODRBQTBFMkY3Q0Q5MDBD
Rjc2NTggLyogQ09OVFJJQlVUT1JTICovLAotCQkJCTQwNDg4NEFCMEUyRjdDRDkwMENGNzY1OCAv
KiBDT1BZSU5HICovLAogCQkJCTQwNDg4M0Q5MEUyRjc5OUIwMENGNzY1OCAvKiBpbmNsdWRlICov
LAotCQkJCTQwNDg4M0Y2MEUyRjc5OUIwMENGNzY1OCAvKiBSRUFETUUgKi8sCisJCQkJNDA0ODg0
QUIwRTJGN0NEOTAwQ0Y3NjU4IC8qIExJQ0VOU0UgKi8sCiAJCQkJNDA4OUEwMkYwRkZBQ0Y4NDAw
MEIyOUFFIC8qIHNhbXBsZXMgKi8sCiAJCQkJNDA0ODg0MDcwRTJGNzk5QjAwQ0Y3NjU4IC8qIHNy
YyAqLywKIAkJCQkzQjIzOEJGMDBFN0ZFMTNCMDA4NDZFMTEgLyogdGVzdCAqLywKKwkJCQk0MDQ4
ODNGNjBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FLm1kICovLAogCQkJKTsKIAkJCW5hbWUgPSBT
b3VyY2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQkxQTBBNEM0NjE0QjdB
M0JDMDA4OTUxMzUgLyogRnJhbWV3b3JrcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJMUEwQTRDNDQxNEI3QTNCNTAwODk1MTM1IC8qIEphdmFTY3JpcHRD
b3JlLmZyYW1ld29yayAqLywKLQkJCSk7Ci0JCQluYW1lID0gRnJhbWV3b3JrczsKLQkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTNCMjM4QkYwMEU3RkUxM0IwMDg0NkUxMSAvKiB0
ZXN0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTM3OSw2
ICszODUsNyBAQAogCQkJCTQwNDg4M0RCMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1kZWF0aC10
ZXN0LmggKi8sCiAJCQkJNDA0ODgzREMwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LW1lc3NhZ2Uu
aCAqLywKIAkJCQk0NTM5QzkzMzBFQzI4MEFFMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdGVzdC5o
ICovLAorCQkJCTQ1NjdDODE3MTI2NEZGNzEwMDc3NDBCRSAvKiBndGVzdC1wcmludGVycy5oICov
LAogCQkJCTQwNDg4M0REMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zcGkuaCAqLywKIAkJCQky
MjRBMTJBMjBFOUVBRENDMDBCRDE3RkQgLyogZ3Rlc3QtdGVzdC1wYXJ0LmggKi8sCiAJCQkJM0JG
NkYyQTQwRTc5QjYxNjAwMEYyRUVFIC8qIGd0ZXN0LXR5cGVkLXRlc3QuaCAqLywKQEAgLTM5Miwx
MiArMzk5LDE0IEBACiAJCTQwNDg4M0UxMEUyRjc5OUIwMENGNzY1OCAvKiBpbnRlcm5hbCAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRjY3RDRGNDAxQzdG
NUREMDAwMTdDNzI5IC8qIGN1c3RvbSAqLywKIAkJCQk0MDQ4ODNFMjBFMkY3OTlCMDBDRjc2NTgg
LyogZ3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5oICovLAogCQkJCTQwNDg4M0UzMEUyRjc5OUIw
MENGNzY1OCAvKiBndGVzdC1maWxlcGF0aC5oICovLAogCQkJCTQwNDg4M0U0MEUyRjc5OUIwMENG
NzY1OCAvKiBndGVzdC1pbnRlcm5hbC5oICovLAogCQkJCTQ1MzlDOTM1MEVDMjgwRTIwMEE3MEY0
QyAvKiBndGVzdC1saW5rZWRfcHRyLmggKi8sCiAJCQkJNDUzOUM5MzYwRUMyODBFMjAwQTcwRjRD
IC8qIGd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmggKi8sCiAJCQkJNDUzOUM5MzcwRUMyODBF
MjAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwuaCAqLywKKwkJCQlGNjdENEYzRDFDN0Y1RDhC
MDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggKi8sCiAJCQkJNDA0ODgzRTUwRTJGNzk5QjAw
Q0Y3NjU4IC8qIGd0ZXN0LXBvcnQuaCAqLywKIAkJCQk0MDQ4ODNFNjBFMkY3OTlCMDBDRjc2NTgg
LyogZ3Rlc3Qtc3RyaW5nLmggKi8sCiAJCQkJNDA4OTlGNEQwRkZBNzI3MTAwMEIyOUFFIC8qIGd0
ZXN0LXR1cGxlLmggKi8sCkBAIC00MzMsNyArNDQyLDYgQEAKIAkJCQk0MEQ0Q0RGMTBFMzBFMDc0
MDAyOTQ4MDEgLyogRGVidWdQcm9qZWN0LnhjY29uZmlnICovLAogCQkJCTQwRDRDREYyMEUzMEUw
NzQwMDI5NDgwMSAvKiBGcmFtZXdvcmtUYXJnZXQueGNjb25maWcgKi8sCiAJCQkJNDBENENERjMw
RTMwRTA3NDAwMjk0ODAxIC8qIEdlbmVyYWwueGNjb25maWcgKi8sCi0JCQkJNDRDNDhERkYxNEE0
MDk4RjAwQTJEOUM3IC8qIFByb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmlnICovLAogCQkJCTQwRDRD
REY0MEUzMEUwNzQwMDI5NDgwMSAvKiBSZWxlYXNlUHJvamVjdC54Y2NvbmZpZyAqLywKIAkJCQk0
MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyAq
LywKIAkJCSk7CkBAIC00NDgsNiArNDU2LDE2IEBACiAJCQlwYXRoID0gUmVzb3VyY2VzOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRjY3RDRGNDAxQzdGNUREMDAwMTdDNzI5
IC8qIGN1c3RvbSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJRjY3RDRGNDExQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCAqLywKKwkJCQlGNjdE
NEY0MjFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLywKKwkJCQlGNjdENEY0
MzFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gY3VzdG9t
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ1
OCw5ICs0NzYsMTQgQEAKIAkJCQk0MDQ4ODQzODBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtZGVh
dGgtdGVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0MzkwRTJGNzk5QjAwQ0Y3NjU4IC8q
IGd0ZXN0LW1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1MzlDOTM0MEVDMjgwQUUwMEE3
MEY0QyAvKiBndGVzdC1wYXJhbS10ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNjdENEYzRTFD
N0Y1RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
NjdENEY0NDFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRjY3RDRGNDUxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0NTY3QzgxODEyNjRGRjcxMDA3NzQwQkUgLyogZ3Rlc3QtcHJpbnRlcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTQwNDg4NDNBMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zcGku
aCBpbiBIZWFkZXJzICovLAogCQkJCTIyNEExMkEzMEU5RUFEQ0MwMEJEMTdGRCAvKiBndGVzdC10
ZXN0LXBhcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTNCRjZGMkE1MEU3OUI2MTYwMDBGMkVFRSAv
KiBndGVzdC10eXBlZC10ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNjdENEY0NjFDN0Y1REQw
MDAxN0M3MjkgLyogZ3Rlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQwNDg4NDNCMEUyRjc5OUIw
MENGNzY1OCAvKiBndGVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0M0MwRTJGNzk5QjAw
Q0Y3NjU4IC8qIGd0ZXN0X3ByZWRfaW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0M0Qw
RTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X3Byb2QuaCBpbiBIZWFkZXJzICovLApAQCAtNTc3LDgg
KzYwMCw4IEBACiAJCQkJOEQwN0YyQzEwNDg2Q0M3QTAwN0NEMUQwIC8qIFNvdXJjZXMgKi8sCiAJ
CQkJOEQwN0YyQkQwNDg2Q0M3QTAwN0NEMUQwIC8qIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0QTUw
RTJGN0MwNDAwQ0Y3NjU4IC8qIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKKwkJCQlGNjdENEY0
NzFDN0Y1REY2MDAxN0M3MjkgLyogQ29weSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLywKIAkJ
CQk4RDA3RjJCRjA0ODZDQzdBMDA3Q0QxRDAgLyogUmVzb3VyY2VzICovLAotCQkJCTQ0NEQxMTcy
MTRBMjYyOEYwMDlGRUMzRiAvKiBGcmFtZXdvcmtzICovLAogCQkJKTsKIAkJCWJ1aWxkUnVsZXMg
PSAoCiAJCQkpOwpAQCAtNTk5LDggKzYyMiw3IEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMw
NyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlhdHRy
aWJ1dGVzID0gewotCQkJCUxhc3RTd2lmdFVwZGF0ZUNoZWNrID0gMDcwMDsKLQkJCQlMYXN0VXBn
cmFkZUNoZWNrID0gMDYwMDsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDQ2MDsKIAkJCX07CiAJ
CQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNEZBREMyNDYwOEI0MTU2RDAwQUJFNTVFIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiZ3Rlc3QiICovOwogCQkJY29t
cGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMy4yIjsKQEAgLTYzOCw5ICs2NjAsOSBAQAogCQkJ
ZmlsZXMgPSAoCiAJCQkJNDA0ODg0QUMwRTJGN0NEOTAwQ0Y3NjU4IC8qIENIQU5HRVMgaW4gUmVz
b3VyY2VzICovLAogCQkJCTQwNDg4NEFEMEUyRjdDRDkwMENGNzY1OCAvKiBDT05UUklCVVRPUlMg
aW4gUmVzb3VyY2VzICovLAotCQkJCTQwNDg4NEFFMEUyRjdDRDkwMENGNzY1OCAvKiBDT1BZSU5H
IGluIFJlc291cmNlcyAqLywKIAkJCQk0MEM4NDk3ODEwMUEzNjU0MDA4MzY0MkEgLyogbGliZ3Rl
c3RfbWFpbi5hIGluIFJlc291cmNlcyAqLywKLQkJCQk0MDQ4ODQ1MDBFMkY3OTlCMDBDRjc2NTgg
LyogUkVBRE1FIGluIFJlc291cmNlcyAqLywKKwkJCQk0MDQ4ODRBRTBFMkY3Q0Q5MDBDRjc2NTgg
LyogTElDRU5TRSBpbiBSZXNvdXJjZXMgKi8sCisJCQkJNDA0ODg0NTAwRTJGNzk5QjAwQ0Y3NjU4
IC8qIFJFQURNRS5tZCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC04MTIsMjAgKzgzNCwyNSBAQAogCQkz
QjIzOEY2MDBFODI4QjU0MDA4NDZFMTEgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9J
TUFHRVMgPSBZRVM7CiAJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POwogCQkJCUdDQ19EWU5BTUlD
X05PX1BJQyA9IE5POwogCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19W
RVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKIAkJCQlQUk9EVUNU
X05BTUUgPSBDaGVjazsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUgPSBE
ZWJ1ZzsKIAkJfTsKIAkJM0IyMzhGNjEwRTgyOEI1NDAwODQ2RTExIC8qIFJlbGVhc2UgKi8gPSB7
CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CiAJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlF
UzsKIAkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKLQkJ
CQlHQ0NfRU5BQkxFX0ZJWF9BTkRfQ09OVElOVUUgPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNv
bS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CiAJCQkJUFJPRFVDVF9OQU1FID0gQ2hl
Y2s7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlaRVJPX0xJTksgPSBOTzsKIAkJCX07CiAJ
CQluYW1lID0gUmVsZWFzZTsKQEAgLTgzMywzNSArODYwLDQ5IEBACiAJCTQwODk5RjQ1MEZGQTcx
ODUwMDBCMjlBRSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21w
aWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9IC4uLzsKIAkJ
CQlQUk9EVUNUX05BTUUgPSAiZ3Rlc3RfdW5pdHRlc3QtZnJhbWV3b3JrIjsKKwkJCQlTREtST09U
ID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKIAkJNDA4OTlGNDYwRkZB
NzE4NTAwMEIyOUFFIC8qIFJlbGVhc2UgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUu
Y29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAuLi87
CiAJCQkJUFJPRFVDVF9OQU1FID0gImd0ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayI7CisJCQkJU0RL
Uk9PVCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKIAkJNDA4OUEw
MTUwRkZBQ0VGRDAwMEIyOUFFIC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFw
cGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKIAkJCQlQUk9EVUNUX05BTUUgPSAic2FtcGxl
MV91bml0dGVzdC1mcmFtZXdvcmsiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQl9OwogCQkJ
bmFtZSA9IERlYnVnOwogCQl9OwogCQk0MDg5QTAxNjBGRkFDRUZEMDAwQjI5QUUgLyogUmVsZWFz
ZSAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4x
XzA7CiAJCQkJUFJPRFVDVF9OQU1FID0gInNhbXBsZTFfdW5pdHRlc3QtZnJhbWV3b3JrIjsKKwkJ
CQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwogCQk0
MEM0NEFERjBFMzc5OEY0MDA4RkNDNTEgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9J
TUFHRVMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0u
Y2xhbmcuMV8wOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CiAJCQkJUFJP
RFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlUQVJHRVRfTkFN
RSA9IGd0ZXN0OwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKQEAgLTg2OSw3ICs5MTAsMTEgQEAK
IAkJNDBDNDRBRTAwRTM3OThGNDAwOEZDQzUxIC8qIFJlbGVhc2UgKi8gPSB7CiAJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9I
SURQSV9JTUFHRVMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJz
Lmxsdm0uY2xhbmcuMV8wOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CiAJ
CQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlUQVJH
RVRfTkFNRSA9IGd0ZXN0OwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwpAQCAtODc4LDkgKzky
MywxNiBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDQwODk5RkIzMEZGQTc1NjcwMDBCMjlBRSAvKiBTdGF0aWNMaWJyYXJ5
VGFyZ2V0LnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDT01CSU5FX0hJ
RFBJX0lNQUdFUyA9IFlFUzsKIAkJCQlHQ0NfSU5MSU5FU19BUkVfUFJJVkFURV9FWFRFUk4gPSBZ
RVM7CiAJCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBZRVM7CisJCQkJR0NDX1ZFUlNJ
T04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUhFQURFUl9TRUFS
Q0hfUEFUSFMgPSAoCisJCQkJCS4uLywKKwkJCQkJLi4vaW5jbHVkZS8sCisJCQkJKTsKIAkJCQlQ
Uk9EVUNUX05BTUUgPSBndGVzdDsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5h
bWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTg4OCw5ICs5NDAsMTYgQEAKIAkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0MDg5OUZCMzBG
RkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLzsKIAkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CiAJCQkJR0ND
X0lOTElORVNfQVJFX1BSSVZBVEVfRVhURVJOID0gWUVTOwogCQkJCUdDQ19TWU1CT0xTX1BSSVZB
VEVfRVhURVJOID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5s
bHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLi8sCisJ
CQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJ
U0RLUk9PVCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKQEAgLTg5
OCw3ICs5NTcsMTQgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNv
bmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGlj
TGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09N
QklORV9ISURQSV9JTUFHRVMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29t
cGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJ
CS4uLywKKwkJCQkJLi4vaW5jbHVkZS8sCisJCQkJKTsKIAkJCQlQUk9EVUNUX05BTUUgPSBndGVz
dF9tYWluOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwog
CQl9OwpAQCAtOTA2LDEzNCArOTcyLDcyIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDA4OTlGQjMwRkZBNzU2NzAwMEIy
OUFFIC8qIFN0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCUNPTUJJTkVfSElEUElfSU1BR0VTID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0g
Y29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BB
VEhTID0gKAorCQkJCQkuLi8sCisJCQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7CiAJCQkJUFJPRFVD
VF9OQU1FID0gZ3Rlc3RfbWFpbjsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5h
bWUgPSBSZWxlYXNlOwogCQl9OwogCQk0MEM4NDk4NTEwMUEzNjg1MDA4MzY0MkEgLyogRGVidWcg
Ki8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8w
OworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAuLi87CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rl
c3RfdW5pdHRlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gRGVi
dWc7CiAJCX07CiAJCTQwQzg0OTg2MTAxQTM2ODUwMDgzNjQyQSAvKiBSZWxlYXNlICovID0gewog
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlI
RUFERVJfU0VBUkNIX1BBVEhTID0gLi4vOwogCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0X3VuaXR0
ZXN0OworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJ
CX07CiAJCTQwQzg0OTk1MTAxQTM2QTYwMDgzNjQyQSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlHQ0NfVkVS
U0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CiAJCQkJUFJPRFVDVF9O
QU1FID0gInNhbXBsZTFfdW5pdHRlc3Qtc3RhdGljIjsKKwkJCQlTREtST09UID0gbWFjb3N4Owog
CQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKIAkJNDBDODQ5OTYxMDFBMzZBNjAwODM2NDJB
IC8qIFJlbGVhc2UgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxs
dm0uY2xhbmcuMV8wOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJzYW1wbGUxX3VuaXR0ZXN0LXN0YXRp
YyI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJ
fTsKLQkJNDRDNDhFMDQxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0JCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gNDRDNDhERkYxNEE0MDk4RjAwQTJEOUM3IC8qIFByb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmln
ICovOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCX07Ci0JCQluYW1lID0gUHJvZHVjdGlvbjsK
LQkJfTsKLQkJNDRDNDhFMDUxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0J
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJl
bmNlID0gNDBENENERjIwRTMwRTA3NDAwMjk0ODAxIC8qIEZyYW1ld29ya1RhcmdldC54Y2NvbmZp
ZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJRFlMSUJfQ09NUEFUSUJJTElUWV9WRVJT
SU9OID0gMTsKLQkJCQlEWUxJQl9DVVJSRU5UX1ZFUlNJT04gPSAxOwotCQkJCUlORk9QTElTVF9G
SUxFID0gUmVzb3VyY2VzL0luZm8ucGxpc3Q7Ci0JCQkJSU5GT1BMSVNUX1BSRUZJWF9IRUFERVIg
PSAiJChQUk9KRUNUX1RFTVBfRElSKS9WZXJzaW9uLmgiOwotCQkJCUlORk9QTElTVF9QUkVQUk9D
RVNTID0gWUVTOwotCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0OwotCQkJCVZFUlNJT05JTkdfU1lT
VEVNID0gImFwcGxlLWdlbmVyaWMiOwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9
OwotCQk0NEM0OEUwNjE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSA0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZp
ZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJR0NDX0lOTElORVNfQVJFX1BSSVZBVEVf
RVhURVJOID0gWUVTOwotCQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gWUVTOwotCQkJ
CVBST0RVQ1RfTkFNRSA9IGd0ZXN0OwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9
OwotCQk0NEM0OEUwNzE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSA0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZp
ZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3RfbWFp
bjsKLQkJCX07Ci0JCQluYW1lID0gUHJvZHVjdGlvbjsKLQkJfTsKLQkJNDRDNDhFMDgxNEE0MDlE
RTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gImd0ZXN0X3Vu
aXR0ZXN0LWZyYW1ld29yayI7Ci0JCQl9OwotCQkJbmFtZSA9IFByb2R1Y3Rpb247Ci0JCX07Ci0J
CTQ0QzQ4RTA5MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICovID0gewotCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCVBST0RVQ1Rf
TkFNRSA9IGd0ZXN0X3VuaXR0ZXN0OwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9
OwotCQk0NEM0OEUwQTE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlQUk9E
VUNUX05BTUUgPSAic2FtcGxlMV91bml0dGVzdC1mcmFtZXdvcmsiOwotCQkJfTsKLQkJCW5hbWUg
PSBQcm9kdWN0aW9uOwotCQl9OwotCQk0NEM0OEUwQjE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVj
dGlvbiAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0
aW5ncyA9IHsKLQkJCQlQUk9EVUNUX05BTUUgPSAic2FtcGxlMV91bml0dGVzdC1zdGF0aWMiOwot
CQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9OwotCQk0NEM0OEUwQzE0QTQwOURFMDBB
MkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOwotCQkJ
CURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOwotCQkJCUdDQ19F
TkFCTEVfRklYX0FORF9DT05USU5VRSA9IE5POwotCQkJCVBST0RVQ1RfTkFNRSA9IENoZWNrOwot
CQkJCVpFUk9fTElOSyA9IE5POwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9Owot
CQk0NEM0OEUwRDE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlQUk9EVUNU
X05BTUUgPSBndGVzdDsKLQkJCQlUQVJHRVRfTkFNRSA9IGd0ZXN0OwotCQkJfTsKLQkJCW5hbWUg
PSBQcm9kdWN0aW9uOwotCQl9OwogCQk0RkFEQzI0MzA4QjQxNTZEMDBBQkU1NUUgLyogRGVidWcg
Ki8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0
aW9uUmVmZXJlbmNlID0gNDBENENERjIwRTMwRTA3NDAwMjk0ODAxIC8qIEZyYW1ld29ya1Rhcmdl
dC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9J
TUFHRVMgPSBZRVM7CiAJCQkJRFlMSUJfQ09NUEFUSUJJTElUWV9WRVJTSU9OID0gMTsKIAkJCQlE
WUxJQl9DVVJSRU5UX1ZFUlNJT04gPSAxOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNv
bXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJ
CQkuLi8sCisJCQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSBS
ZXNvdXJjZXMvSW5mby5wbGlzdDsKIAkJCQlJTkZPUExJU1RfUFJFRklYX0hFQURFUiA9ICIkKFBS
T0pFQ1RfVEVNUF9ESVIpL1ZlcnNpb24uaCI7CiAJCQkJSU5GT1BMSVNUX1BSRVBST0NFU1MgPSBZ
RVM7CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJ
CQlWRVJTSU9OSU5HX1NZU1RFTSA9ICJhcHBsZS1nZW5lcmljIjsKIAkJCX07CiAJCQluYW1lID0g
RGVidWc7CkBAIC0xMDQyLDEyICsxMDQ2LDE5IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDBENENERjIwRTMwRTA3NDAw
Mjk0ODAxIC8qIEZyYW1ld29ya1RhcmdldC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CiAJCQkJRFlMSUJfQ09NUEFUSUJJ
TElUWV9WRVJTSU9OID0gMTsKIAkJCQlEWUxJQl9DVVJSRU5UX1ZFUlNJT04gPSAxOworCQkJCUdD
Q19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFE
RVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLi8sCisJCQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7
CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSBSZXNvdXJjZXMvSW5mby5wbGlzdDsKIAkJCQlJTkZPUExJ
U1RfUFJFRklYX0hFQURFUiA9ICIkKFBST0pFQ1RfVEVNUF9ESVIpL1ZlcnNpb24uaCI7CiAJCQkJ
SU5GT1BMSVNUX1BSRVBST0NFU1MgPSBZRVM7CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJ
CQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlWRVJTSU9OSU5HX1NZU1RFTSA9ICJhcHBsZS1nZW5l
cmljIjsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKQEAgLTEwNTYsNiArMTA2Nyw5IEBACiAJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJl
bmNlID0gNDBENENERjEwRTMwRTA3NDAwMjk0ODAxIC8qIERlYnVnUHJvamVjdC54Y2NvbmZpZyAq
LzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJE
ID0gImdudSsrMHgiOworCQkJCUNMQU5HX0NYWF9MSUJSQVJZID0gImxpYmMrKyI7CisJCQkJTUFD
T1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJ
CX07CkBAIC0xMDYzLDYgKzEwNzcsOSBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDQwRDRDREY0MEUzMEUwNzQwMDI5NDgw
MSAvKiBSZWxlYXNlUHJvamVjdC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMHgiOworCQkJCUNMQU5HX0NY
WF9MSUJSQVJZID0gImxpYmMrKyI7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAu
NzsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKQEAgLTEwNzQsMTAwICsxMDkxLDkw
IEBACiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAogCQkJCTNCMjM4RjYwMEU4MjhCNTQwMDg0
NkUxMSAvKiBEZWJ1ZyAqLywKIAkJCQkzQjIzOEY2MTBFODI4QjU0MDA4NDZFMTEgLyogUmVsZWFz
ZSAqLywKLQkJCQk0NEM0OEUwQzE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLywKIAkJ
CSk7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1l
ID0gUmVsZWFzZTsKIAkJfTsKIAkJNDA4OTlGNEEwRkZBNzFCQzAwMEIyOUFFIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJndGVzdF91bml0dGVzdC1mcmFt
ZXdvcmsiICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29u
ZmlndXJhdGlvbnMgPSAoCiAJCQkJNDA4OTlGNDUwRkZBNzE4NTAwMEIyOUFFIC8qIERlYnVnICov
LAogCQkJCTQwODk5RjQ2MEZGQTcxODUwMDBCMjlBRSAvKiBSZWxlYXNlICovLAotCQkJCTQ0QzQ4
RTA4MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICovLAogCQkJKTsKIAkJCWRlZmF1bHRD
b25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9
IFByb2R1Y3Rpb247CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwogCQl9
OwogCQk0MDg5QTAyNDBGRkFDRjAxMDAwQjI5QUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhOYXRpdmVUYXJnZXQgInNhbXBsZTFfdW5pdHRlc3QtZnJhbWV3b3JrIiAqLyA9IHsK
IAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0g
KAogCQkJCTQwODlBMDE1MEZGQUNFRkQwMDBCMjlBRSAvKiBEZWJ1ZyAqLywKIAkJCQk0MDg5QTAx
NjBGRkFDRUZEMDAwQjI5QUUgLyogUmVsZWFzZSAqLywKLQkJCQk0NEM0OEUwQTE0QTQwOURFMDBB
MkQ5QzcgLyogUHJvZHVjdGlvbiAqLywKIAkJCSk7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklz
VmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwor
CQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKIAkJfTsKIAkJNDBDNDRBRTQw
RTM3OTkwNTAwOEZDQzUxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVn
YXRlVGFyZ2V0ICJWZXJzaW9uIEluZm8iICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9u
TGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCiAJCQkJNDBDNDRBREYwRTM3OThGNDAw
OEZDQzUxIC8qIERlYnVnICovLAogCQkJCTQwQzQ0QUUwMEUzNzk4RjQwMDhGQ0M1MSAvKiBSZWxl
YXNlICovLAotCQkJCTQ0QzQ4RTBEMTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICovLAog
CQkJKTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRD
b25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5h
bWUgPSBSZWxlYXNlOwogCQl9OwogCQk0MEM4NDkwMjEwMUEyMTJFMDA4MzY0MkEgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0LXN0YXRpYyIgKi8g
PSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9u
cyA9ICgKIAkJCQk0MEM4NDhGQjEwMUEyMDlEMDA4MzY0MkEgLyogRGVidWcgKi8sCiAJCQkJNDBD
ODQ4RkMxMDFBMjA5RDAwODM2NDJBIC8qIFJlbGVhc2UgKi8sCi0JCQkJNDRDNDhFMDYxNEE0MDlE
RTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8sCiAJCQkpOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlv
bjsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CiAJCX07CiAJCTQwQzg0
OTEyMTAxQTIxRDIwMDgzNjQyQSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5h
dGl2ZVRhcmdldCAiZ3Rlc3RfbWFpbi1zdGF0aWMiICovID0gewogCQkJaXNhID0gWENDb25maWd1
cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCiAJCQkJNDBDODQ5MEUxMDFB
MjE3RjAwODM2NDJBIC8qIERlYnVnICovLAogCQkJCTQwQzg0OTBGMTAxQTIxN0YwMDgzNjQyQSAv
KiBSZWxlYXNlICovLAotCQkJCTQ0QzQ4RTA3MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9u
ICovLAogCQkJKTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRl
ZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCQlkZWZhdWx0Q29uZmlndXJh
dGlvbk5hbWUgPSBSZWxlYXNlOwogCQl9OwogCQk0MEM4NDk4NDEwMUEzNjg1MDA4MzY0MkEgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0X3VuaXR0
ZXN0LXN0YXRpYyIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVp
bGRDb25maWd1cmF0aW9ucyA9ICgKIAkJCQk0MEM4NDk4NTEwMUEzNjg1MDA4MzY0MkEgLyogRGVi
dWcgKi8sCiAJCQkJNDBDODQ5ODYxMDFBMzY4NTAwODM2NDJBIC8qIFJlbGVhc2UgKi8sCi0JCQkJ
NDRDNDhFMDkxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8sCiAJCQkpOwogCQkJZGVm
YXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25O
YW1lID0gUHJvZHVjdGlvbjsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7
CiAJCX07CiAJCTQwQzg0OTk0MTAxQTM2QTYwMDgzNjQyQSAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAic2FtcGxlMV91bml0dGVzdC1zdGF0aWMiICovID0g
ewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCiAJCQkJNDBDODQ5OTUxMDFBMzZBNjAwODM2NDJBIC8qIERlYnVnICovLAogCQkJCTQwQzg0
OTk2MTAxQTM2QTYwMDgzNjQyQSAvKiBSZWxlYXNlICovLAotCQkJCTQ0QzQ4RTBCMTRBNDA5REUw
MEEyRDlDNyAvKiBQcm9kdWN0aW9uICovLAogCQkJKTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9u
SXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247
CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwogCQl9OwogCQk0RkFEQzI0
MjA4QjQxNTZEMDBBQkU1NUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRp
dmVUYXJnZXQgImd0ZXN0LWZyYW1ld29yayIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRp
b25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKIAkJCQk0RkFEQzI0MzA4QjQxNTZE
MDBBQkU1NUUgLyogRGVidWcgKi8sCiAJCQkJNEZBREMyNDQwOEI0MTU2RDAwQUJFNTVFIC8qIFJl
bGVhc2UgKi8sCi0JCQkJNDRDNDhFMDUxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8s
CiAJCQkpOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9u
TmFtZSA9IFJlbGVhc2U7CiAJCX07CiAJCTRGQURDMjQ2MDhCNDE1NkQwMEFCRTU1RSAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgImd0ZXN0IiAqLyA9IHsKIAkJCWlz
YSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAogCQkJ
CTRGQURDMjQ3MDhCNDE1NkQwMEFCRTU1RSAvKiBEZWJ1ZyAqLywKIAkJCQk0RkFEQzI0ODA4QjQx
NTZEMDBBQkU1NUUgLyogUmVsZWFzZSAqLywKLQkJCQk0NEM0OEUwNDE0QTQwOURFMDBBMkQ5Qzcg
LyogUHJvZHVjdGlvbiAqLywKIAkJCSk7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJs
ZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQkJZGVm
YXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKIAkJfTsKIC8qIEVuZCBYQ0NvbmZpZ3Vy
YXRpb25MaXN0IHNlY3Rpb24gKi8KIAl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50U2l6ZS5oCmluZGV4IDdhYzY0Y2FiNDhjM2QwOWE5MWE5YWU3OGJkMGM3YWFkZmUwOTQ1
YTQuLmRhMTM0ZWE1OWQwNWNmNGYxNjM0OTM5ZDQ2MzM2NzA3ZmExZjFiMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9DaGVja2Vk
QXJpdGhtZXRpYy5oPgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBkZWZpbmVkIF9fT0JKQ19fCiAj
aW1wb3J0IDxGb3VuZGF0aW9uL05TR2VvbWV0cnkuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3Y2VjNjE4N2ZlNTUwMGQ1YmY4MGY1MmQ4MDYx
NjYwYmEzMmI0ZTdkLi4yYzYxYjBjM2IyMTQ1ZmQ2MGQ3ZGRhZWIyZTM3YTEwYWMyZjY3NzAyIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTgtMDgtMzAgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnku
Y29tPgorCisgICAgICAgIFVwZGF0ZSBnb29nbGV0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3MjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29uZmlnLmg6CisgICAg
ICAgIEluc3RlYWQgb2YgbW9kaWZ5aW5nIGd0ZXN0IGl0c2VsZiwgYWRkIGFueSBuZWNlc3Nhcnkg
V1RGIGluY2x1ZGVzIGhlcmUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRp
b25zL0Jhc2UueGNjb25maWcKKyAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGRlZmluaXRpb25z
IEdURVNUX0hBU19UUjFfVFVQTEU9MCBhbmQgR1RFU1RfSEFTX1JUVEk9MC4KKwogMjAxOC0wOC0z
MCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBXS05hdmlnYXRp
b24uUHJvY2Vzc0NyYXNoRHVyaW5nQ2FsbGJhY2sgaXMgZmFpbGluZyBvbiBpT1MKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwppbmRleCAzYzJl
NTllYjZjNWQ0MWMzYjJmMzQ5ZmZjY2U1Mjg0NjhiY2FhMjViLi4zZjRiZGZiYzliNjE0ZDI3Mzgx
MDc5Y2U0NjAyYTY2ZTQyMjZjNGJmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0Nv
bmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25m
aWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCkBAIC0zNSw3ICszNSw3IEBAIENMQU5HX1dBUk5fQ1hY
MFhfRVhURU5TSU9OUyA9IE5POwogSEVBREVSX1NFQVJDSF9QQVRIUyA9ICR7QlVJTFRfUFJPRFVD
VFNfRElSfS91c3IvbG9jYWwvaW5jbHVkZSAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikv
Rm9yd2FyZGluZ0hlYWRlcnMgJChCVUlMVF9QUk9EVUNUU19ESVIpL1dlYkNvcmVUZXN0U3VwcG9y
dDsKIAogR0NDX05PX0NPTU1PTl9CTE9DS1MgPSBZRVM7Ci1HQ0NfUFJFUFJPQ0VTU09SX0RFRklO
SVRJT05TID0gJChERUJVR19ERUZJTkVTKSAkKEZFQVRVUkVfREVGSU5FUykgR1RFU1RfSEFTX1RS
MV9UVVBMRT0wIEdURVNUX0hBU19SVFRJPTAgVV9ESVNBQkxFX1JFTkFNSU5HPTEgVV9TSE9XX0NQ
TFVTUExVU19BUEk9MCAkKEdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlNfJChQTEFURk9STV9O
QU1FKSk7CitHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChERUJVR19ERUZJTkVTKSAk
KEZFQVRVUkVfREVGSU5FUykgVV9ESVNBQkxFX1JFTkFNSU5HPTEgVV9TSE9XX0NQTFVTUExVU19B
UEk9MCAkKEdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlNfJChQTEFURk9STV9OQU1FKSk7CiBH
Q0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TX21hY29zeCA9IEVOQUJMRV9EQVNIQk9BUkRfU1VQ
UE9SVDsKIERFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9IGR3YXJmLXdpdGgtZHN5bTsKIFBSRUJJ
TkRJTkcgPSBOTwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKaW5kZXggZWRmOGE2ZjFmNTZiMGJlZGZmZTg0ZTY2
MGVlOGVmNTA0YzRjNTJjYS4uMGMyYzRhZTdiZjBlOWNlNWU5ODc5NThlNTQ4NDNlZDQzNzQ2MjI0
NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvbmZpZy5oCkBAIC01Nyw4ICs1NywxNCBAQAogCiAjaWZkZWYgX19jcGx1
c3BsdXMKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CisjdW5kZWYgbmV3CisjdW5kZWYgZGVsZXRlCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KICNlbmRpZgogCisjaW5jbHVkZSA8d3RmL0Rpc2FsbG93Q1R5cGUuaD4KKwogI2lmZGVmIF9f
Y2xhbmdfXwogLy8gRmluaXNoIHdvcmtpbmcgYXJvdW5kIHRoZSBsZXNzIHN0cmljdCBjb2Rpbmcg
c3RhbmRhcmRzIG9mIHRoZSBndGVzdCBmcmFtZXdvcmsuCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcG9wCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348597</attachid>
            <date>2018-08-30 21:34:24 -0700</date>
            <delta_ts>2018-08-31 20:00:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175722-20180830213419.patch</filename>
            <type>text/plain</type>
            <size>2545900</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9DaGFuZ2VMb2cKaW5kZXggZmI1MTE0ZTAz
ZmM3ZTUxZjg2N2YzOWFiZjhkYjIwNDA1YWRhOWJiYS4uMmFlYjQwMzU4ZDEzMDg4YzNkMzMzNGU2
NDZmZGM1YTlmY2NjMWZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4
LTA4LTMwICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAg
ICBVcGRhdGUgZ29vZ2xldGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc1NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBndGVzdC86CisgICAgICAgIFVwZGF0ZSB0byBsYXRlc3QgKHBvc3QtMS44
LjApLgorCisgICAgICAgICogZ3Rlc3QvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgIEtlZXAgb3Vy
IHZlcnNpb24gb2YgdGhpcyBmaWxlLCBidXQgdXBkYXRlIHNvdXJjZSBmaWxlIGxpc3QuCisKIDIw
MTgtMDctMTcgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtXUEVdW0dUS10gVXBkYXRlIHhkZ21pbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L0NIQU5HRVMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DSEFOR0VTCmlu
ZGV4IGU1NzQ0MTVlZTZlZDgxY2Y0OTJiZTI5NTM0NmM0NDRlZWIxMGNlODguLjA1NTIxMzI0MjEy
YzkxMjg3ZDkyNDRkNDRiYWIzMDZkYjY2NGJhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L0NIQU5HRVMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ0hBTkdFUwpA
QCAtMSwzICsxLDYyIEBACitDaGFuZ2VzIGZvciAxLjcuMDoKKworKiBOZXcgZmVhdHVyZTogZGVh
dGggdGVzdHMgYXJlIHN1cHBvcnRlZCBvbiBPcGVuQlNEIGFuZCBpbiBpT1MKKyAgc2ltdWxhdG9y
IG5vdy4KKyogTmV3IGZlYXR1cmU6IEdvb2dsZSBUZXN0IG5vdyBpbXBsZW1lbnRzIGEgcHJvdG9j
b2wgdG8gYWxsb3cKKyAgYSB0ZXN0IHJ1bm5lciB0byBkZXRlY3QgdGhhdCBhIHRlc3QgcHJvZ3Jh
bSBoYXMgZXhpdGVkCisgIHByZW1hdHVyZWx5IGFuZCByZXBvcnQgaXQgYXMgYSBmYWlsdXJlIChi
ZWZvcmUgaXQgd291bGQgYmUKKyAgZmFsc2VseSByZXBvcnRlZCBhcyBhIHN1Y2Nlc3MgaWYgdGhl
IGV4aXQgY29kZSBpcyAwKS4KKyogTmV3IGZlYXR1cmU6IFRlc3Q6OlJlY29yZFByb3BlcnR5KCkg
Y2FuIG5vdyBiZSB1c2VkIG91dHNpZGUgb2YgdGhlCisgIGxpZmVzcGFuIG9mIGEgdGVzdCBtZXRo
b2QsIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBiZSBhdHRyaWJ1dGVkIHRvCisgIHRoZSBjdXJyZW50
IHRlc3QgY2FzZSBvciB0aGUgdGVzdCBwcm9ncmFtIGluIHRoZSBYTUwgcmVwb3J0LgorKiBOZXcg
ZmVhdHVyZSAocG90ZW50aWFsbHkgYnJlYWtpbmcpOiAtLWd0ZXN0X2xpc3RfdGVzdHMgbm93IHBy
aW50cworICB0aGUgdHlwZSBwYXJhbWV0ZXJzIGFuZCB2YWx1ZSBwYXJhbWV0ZXJzIGZvciBlYWNo
IHRlc3QuCisqIEltcHJvdmVtZW50OiBjaGFyIHBvaW50ZXJzIGFuZCBjaGFyIGFycmF5cyBhcmUg
bm93IGVzY2FwZWQgcHJvcGVybHkKKyAgaW4gZmFpbHVyZSBtZXNzYWdlcy4KKyogSW1wcm92ZW1l
bnQ6IGZhaWx1cmUgc3VtbWFyeSBpbiBYTUwgcmVwb3J0cyBub3cgaW5jbHVkZXMgZmlsZSBhbmQK
KyAgbGluZSBpbmZvcm1hdGlvbi4KKyogSW1wcm92ZW1lbnQ6IHRoZSA8dGVzdHN1aXRlcz4gWE1M
IGVsZW1lbnQgbm93IGhhcyBhIHRpbWVzdGFtcCBhdHRyaWJ1dGUuCisqIEltcHJvdmVtZW50OiBX
aGVuIC0tZ3Rlc3RfZmlsdGVyIGlzIHNwZWNpZmllZCwgWE1MIHJlcG9ydCBub3cgZG9lc24ndAor
ICBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IHRlc3RzIHRoYXQgYXJlIGZpbHRlcmVkIG91dC4K
KyogRml4ZWQgdGhlIGJ1ZyB3aGVyZSBsb25nIC0tZ3Rlc3RfZmlsdGVyIGZsYWcgdmFsdWVzIGFy
ZSB0cnVuY2F0ZWQgaW4KKyAgZGVhdGggdGVzdHMuCisqIFBvdGVudGlhbGx5IGJyZWFraW5nIGNo
YW5nZTogUlVOX0FMTF9URVNUUygpIGlzIG5vdyBpbXBsZW1lbnRlZCBhcyBhCisgIGZ1bmN0aW9u
IGluc3RlYWQgb2YgYSBtYWNybyBpbiBvcmRlciB0byB3b3JrIGJldHRlciB3aXRoIENsYW5nLgor
KiBDb21wYXRpYmlsaXR5IGZpeGVzIHdpdGggQysrIDExIGFuZCB2YXJpb3VzIHBsYXRmb3Jtcy4K
KyogQnVnL3dhcm5pbmcgZml4ZXMuCisKK0NoYW5nZXMgZm9yIDEuNi4wOgorCisqIE5ldyBmZWF0
dXJlOiBBRERfRkFJTFVSRV9BVCgpIGZvciByZXBvcnRpbmcgYSB0ZXN0IGZhaWx1cmUgYXQgdGhl
CisgIGdpdmVuIHNvdXJjZSBsb2NhdGlvbiAtLSB1c2VmdWwgZm9yIHdyaXRpbmcgdGVzdGluZyB1
dGlsaXRpZXMuCisqIE5ldyBmZWF0dXJlOiB0aGUgdW5pdmVyc2FsIHZhbHVlIHByaW50ZXIgaXMg
bW92ZWQgZnJvbSBHb29nbGUgTW9jaworICB0byBHb29nbGUgVGVzdC4KKyogTmV3IGZlYXR1cmU6
IHR5cGUgcGFyYW1ldGVycyBhbmQgdmFsdWUgcGFyYW1ldGVycyBhcmUgcmVwb3J0ZWQgaW4KKyAg
dGhlIFhNTCByZXBvcnQgbm93LgorKiBBIGd0ZXN0X2Rpc2FibGVfcHRocmVhZHMgQ01ha2Ugb3B0
aW9uLgorKiBDb2xvcmVkIG91dHB1dCB3b3JrcyBpbiBHTlUgU2NyZWVuIHNlc3Npb25zIG5vdy4K
KyogUGFyYW1ldGVycyBvZiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBub3cgcHJpbnRl
ZCBpbiB0aGUKKyAgdGV4dHVhbCBvdXRwdXQuCisqIEZhaWx1cmVzIGZyb20gYWQgaG9jIHRlc3Qg
YXNzZXJ0aW9ucyBydW4gYmVmb3JlIFJVTl9BTExfVEVTVFMoKSBhcmUKKyAgbm93IGNvcnJlY3Rs
eSByZXBvcnRlZC4KKyogQXJndW1lbnRzIG9mIEFTU0VSVF9YWSBhbmQgRVhQRUNUX1hZIG5vIGxv
bmdlciBuZWVkIHRvIHN1cHBvcnQgPDwgdG8KKyAgb3N0cmVhbS4KKyogTW9yZSBjb21wbGV0ZSBo
YW5kbGluZyBvZiBleGNlcHRpb25zLgorKiBHVEVTVF9BU1NFUlRfWFkgY2FuIGJlIHVzZWQgaW5z
dGVhZCBvZiBBU1NFUlRfWFkgaW4gY2FzZSB0aGUgbGF0dGVyCisgIG5hbWUgaXMgYWxyZWFkeSB1
c2VkIGJ5IGFub3RoZXIgbGlicmFyeS4KKyogLS1ndGVzdF9jYXRjaF9leGNlcHRpb25zIGlzIG5v
dyB0cnVlIGJ5IGRlZmF1bHQsIGFsbG93aW5nIGEgdGVzdAorICBwcm9ncmFtIHRvIGNvbnRpbnVl
IGFmdGVyIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uCisqIFZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dCBmaXh0dXJlcyBjYW4gbm93IGRlcml2ZSBmcm9tIFRlc3QgYW5kCisgIFdpdGhQYXJhbUludGVy
ZmFjZTxUPiBzZXBhcmF0ZWx5LCBlYXNpbmcgY29udmVyc2lvbiBvZiBsZWdhY3kgdGVzdHMuCisq
IERlYXRoIHRlc3QgbWVzc2FnZXMgYXJlIGNsZWFybHkgbWFya2VkIHRvIG1ha2UgdGhlbSBtb3Jl
CisgIGRpc3Rpbmd1aXNoYWJsZSBmcm9tIG90aGVyIG1lc3NhZ2VzLgorKiBDb21wYXRpYmlsaXR5
IGZpeGVzIGZvciBBbmRyb2lkLCBHb29nbGUgTmF0aXZlIENsaWVudCwgTWluR1csIEhQIFVYLAor
ICBQb3dlclBDLCBMdWNpZCBhdXRvdG9vbHMsIGxpYkNTdGQsIFN1biBDKyssIEJvcmxhbmQgQysr
IEJ1aWxkZXIgKENvZGUgR2VhciksCisgIElCTSBYTCBDKysgKFZpc3VhbCBBZ2UgQysrKSwgYW5k
IEMrKzB4LgorKiBCdWcgZml4ZXMgYW5kIGltcGxlbWVudGF0aW9uIGNsZWFuLXVwcy4KKyogUG90
ZW50aWFsbHkgaW5jb21wYXRpYmxlIGNoYW5nZXM6IGRpc2FibGVzIHRoZSBoYXJtZnVsICdtYWtl
IGluc3RhbGwnCisgIGNvbW1hbmQgaW4gYXV0b3Rvb2xzLgorCiBDaGFuZ2VzIGZvciAxLjUuMDoK
IAogICogTmV3IGZlYXR1cmU6IGFzc2VydGlvbnMgY2FuIGJlIHNhZmVseSBjYWxsZWQgaW4gbXVs
dGlwbGUgdGhyZWFkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DTWFrZUxpc3RzLnR4dAppbmRleCBk
ZDEwMDVmZTZlNTdjNTIwYmU5N2Y0ZjgwNTJiNDI2ZjBmZTA1NjhmLi5hYTNhM2VlZjI0NTgxNmMy
ZGE3ODhjNTMyZGQ3ZDFjYjA5NDRlZTU4IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DTWFrZUxp
c3RzLnR4dApAQCAtMTcsNiArMTcsNyBAQCBzZXQoR1RFU1RfU09VUkNFUwogICAgICR7R1RFU1Rf
RElSfS9zcmMvZ3Rlc3QtZmlsZXBhdGguY2MKICAgICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0X21h
aW4uY2MKICAgICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LXBvcnQuY2MKKyAgICAke0dURVNUX0RJ
Un0vc3JjL2d0ZXN0LXByaW50ZXJzLmNjCiAgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC10ZXN0
LXBhcnQuY2MKICAgICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKICkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NPTlRSSUJVVE9SUyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L0NPTlRSSUJVVE9SUwppbmRleCAwOTM0YWUxMzA1OWFmY2RjMDVkZjgx
MjQ3ZTYxYjlhODRhMjMxMmUyLi5mZWFlMmZjMDQ0MTBkYzMwOGU0NjRhYTI1NmZlMWYyZDMxZWRj
OTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DT05UUklCVVRPUlMKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09OVFJJQlVUT1JTCkBAIC0yMSw2ICsyMSw3IEBA
IE1hbnVlbCBLbGltZWsgPGtsaW1la0Bnb29nbGUuY29tPgogTWFya3VzIEhldWxlIDxtYXJrdXMu
aGV1bGVAZ21haWwuY29tPgogTWlrYSBSYWVudG8gPG1pa2llQGlraS5maT4KIE1pa2zDs3MgRmF6
ZWthcyA8bWZhemVrYXNAc3plbWFmb3IuY29tPgorUGFzaSBWYWxtaW5lbiA8cGFzaS52YWxtaW5l
bkBnbWFpbC5jb20+CiBQYXRyaWNrIEhhbm5hIDxwaGFubmFAZ29vZ2xlLmNvbT4KIFBhdHJpY2sg
UmlsZXkgPHBmckBnb29nbGUuY29tPgogUGV0ZXIgS2FtaW5za2kgPHBpb3Rya0Bnb29nbGUuY29t
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09QWUlORyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L0NPUFlJTkcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5
NDFhMTFmOGNlOTQzODkxNjBiNDU4OTI3YTI5YmEyMTc1NDI4MTguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09Q
WUlORworKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUNvcHlyaWdodCAyMDA4LCBHb29n
bGUgSW5jLgotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci1tZXQ6Ci0KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci1ub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi1jb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi1pbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi1k
aXN0cmlidXRpb24uCi0gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi1jb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLU9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi1EQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0xJQ0VOU0UgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5NDFhMTFmOGNlOTQzODkxNjBiNDU4
OTI3YTI5YmEyMTc1NDI4MTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9MSUNFTlNFCkBAIC0wLDAgKzEsMjggQEAKK0NvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5j
LgorQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCittZXQ6
CisKKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Citub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCitjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCitpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCitkaXN0cmli
dXRpb24uCisgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCitjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQordGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKK09XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCitE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKK1RIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L01ha2VmaWxlLmFtIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvTWFrZWZpbGUuYW0KaW5kZXggOGQ3NWUzMmNjMjBjZGU4M2MxNzRmNGUwNzhl
Mjk5M2E5MzJhOWQxOC4uYjQ0Yzg0MTZiYTA4MGMyZjAxNmYxNjZiMThiNDJjMGY3M2VjZTdiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvTWFrZWZpbGUuYW0KKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvTWFrZWZpbGUuYW0KQEAgLTEsMTMgKzEsMTYgQEAKICMgQXV0
b21ha2UgZmlsZQogCitBQ0xPQ0FMX0FNRkxBR1MgPSAtSSBtNAorCiAjIE5vbnN0YW5kYXJkIHBh
Y2thZ2UgZmlsZXMgZm9yIGRpc3RyaWJ1dGlvbgogRVhUUkFfRElTVCA9IFwKICAgQ0hBTkdFUyBc
CiAgIENPTlRSSUJVVE9SUyBcCisgIExJQ0VOU0UgXAogICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXBh
cmFtLXRlc3QuaC5wdW1wIFwKKyAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11
dGlsLWdlbmVyYXRlZC5oLnB1bXAgXAogICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1
cGxlLmgucHVtcCBcCiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgu
cHVtcCBcCi0gIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0
ZWQuaC5wdW1wIFwKICAgbWFrZS9NYWtlZmlsZSBcCiAgIHNjcmlwdHMvZnVzZV9ndGVzdF9maWxl
cy5weSBcCiAgIHNjcmlwdHMvZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weSBcCkBAIC0xNywxOSArMjAs
MjEgQEAgRVhUUkFfRElTVCA9IFwKICMgZ3Rlc3Qgc291cmNlIGZpbGVzIHRoYXQgd2UgZG9uJ3Qg
Y29tcGlsZSBkaXJlY3RseS4gIFRoZXkgYXJlCiAjICNpbmNsdWRlZCBieSBndGVzdC1hbGwuY2Mu
CiBHVEVTVF9TUkMgPSBcCi0gIHNyYy9ndGVzdC5jYyBcCiAgIHNyYy9ndGVzdC1kZWF0aC10ZXN0
LmNjIFwKICAgc3JjL2d0ZXN0LWZpbGVwYXRoLmNjIFwKICAgc3JjL2d0ZXN0LWludGVybmFsLWlu
bC5oIFwKICAgc3JjL2d0ZXN0LXBvcnQuY2MgXAorICBzcmMvZ3Rlc3QtcHJpbnRlcnMuY2MgXAog
ICBzcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjIFwKLSAgc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKKyAg
c3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MgXAorICBzcmMvZ3Rlc3QuY2MKIAogRVhUUkFfRElTVCAr
PSAkKEdURVNUX1NSQykKIAogIyBTYW1wbGUgZmlsZXMgdGhhdCB3ZSBkb24ndCBjb21waWxlLgog
RVhUUkFfRElTVCArPSBcCiAgIHNhbXBsZXMvcHJpbWVfdGFibGVzLmggXAorICBzYW1wbGVzL3Nh
bXBsZTFfdW5pdHRlc3QuY2MgXAogICBzYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2MgXAogICBz
YW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MgXAogICBzYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3Qu
Y2MgXApAQCAtNDEsODggKzQ2LDkxIEBAIEVYVFJBX0RJU1QgKz0gXAogCiAjIEMrKyB0ZXN0IGZp
bGVzIHRoYXQgd2UgZG9uJ3QgY29tcGlsZSBkaXJlY3RseS4KIEVYVFJBX0RJU1QgKz0gXAorICB0
ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3QtZGVhdGgtdGVz
dF90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjIFwKICAgdGVzdC9n
dGVzdC1maWxlcGF0aF90ZXN0LmNjIFwKICAgdGVzdC9ndGVzdC1saW5rZWRfcHRyX3Rlc3QuY2Mg
XAorICB0ZXN0L2d0ZXN0LWxpc3RlbmVyX3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0LW1lc3NhZ2Vf
dGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdC5jYyBcCiAgIHRlc3QvZ3Rl
c3Qtb3B0aW9uc190ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MgXAot
ICB0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QyX3Rlc3QuY2MgXAorICB0ZXN0L2dvb2dsZXRlc3QtcGFy
YW0tdGVzdDItdGVzdC5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0Mi10ZXN0LmNj
IFwKKyAgdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYyBcCisgIHRlc3QvZ29vZ2xl
dGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MgXAogICB0ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5o
IFwKICAgdGVzdC9ndGVzdC1wb3J0X3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0X3ByZW1hdHVyZV9l
eGl0X3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0LXByaW50ZXJzX3Rlc3QuY2MgXAorICB0ZXN0L2d0
ZXN0LXRlc3QtcGFydF90ZXN0LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LXR1cGxlLXRlc3QuY2Mg
XAorICB0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MgXAorICB0ZXN0L2d0ZXN0LXR5cGVk
LXRlc3RfdGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmggXAorICB0ZXN0
L2d0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LWJyZWFrLW9u
LWZhaWx1cmUtdW5pdHRlc3RfLmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlv
bnMtdGVzdF8uY2MgXAorICB0ZXN0L2dvb2dsZXRlc3QtY29sb3ItdGVzdF8uY2MgXAorICB0ZXN0
L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0Xy5jYyBcCisgIHRlc3QvZ3Rlc3RfZW52aXJvbm1lbnRf
dGVzdC5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3RfLmNjIFwKKyAgdGVz
dC9ndGVzdF9oZWxwX3Rlc3RfLmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5p
dHRlc3RfLmNjIFwKKyAgdGVzdC9ndGVzdF9tYWluX3VuaXR0ZXN0LmNjIFwKKyAgdGVzdC9ndGVz
dF9ub190ZXN0X3VuaXR0ZXN0LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5j
YyBcCiAgIHRlc3QvZ3Rlc3RfcHJlZF9pbXBsX3VuaXR0ZXN0LmNjIFwKICAgdGVzdC9ndGVzdF9w
cm9kX3Rlc3QuY2MgXAotICB0ZXN0L3Byb2R1Y3Rpb24uY2MgXAotICB0ZXN0L3Byb2R1Y3Rpb24u
aCBcCiAgIHRlc3QvZ3Rlc3RfcmVwZWF0X3Rlc3QuY2MgXAorICB0ZXN0L2dvb2dsZXRlc3Qtc2h1
ZmZsZS10ZXN0Xy5jYyBcCiAgIHRlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYyBcCiAgIHRl
c3QvZ3Rlc3Rfc3RyZXNzX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0LmNj
IFwKICAgdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MgXAotICB0ZXN0L2d0
ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5j
YyBcCi0gIHRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmggXAorICB0ZXN0L2dvb2dsZXRlc3Qt
dGhyb3ctb24tZmFpbHVyZS10ZXN0Xy5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC11bmluaXRpYWxp
emVkLXRlc3RfLmNjIFwKICAgdGVzdC9ndGVzdF91bml0dGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3Qt
dW5pdHRlc3QtYXBpX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LWxpc3RlbmVyX3Rlc3QuY2MgXAot
ICB0ZXN0L2d0ZXN0X21haW5fdW5pdHRlc3QuY2MgXAogICB0ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNj
IFwKLSAgdGVzdC9ndGVzdC10dXBsZV90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0
X3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QyX3Rlc3QuY2MgXAotICB0ZXN0L2d0
ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9jb2xvcl90
ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3Rf
ZmlsdGVyX3VuaXR0ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3RfaGVscF90ZXN0Xy5jYyBcCi0gIHRl
c3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X291dHB1dF90
ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3Rf
dGhyb3dfb25fZmFpbHVyZV90ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90
ZXN0Xy5jYyBcCiAgIHRlc3QvZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfLmNjIFwKICAgdGVzdC9n
dGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5p
dHRlc3RfLmNjCisgIHRlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MgXAorICB0ZXN0
L3Byb2R1Y3Rpb24uY2MgXAorICB0ZXN0L3Byb2R1Y3Rpb24uaAogCiAjIFB5dGhvbiB0ZXN0cyB0
aGF0IHdlIGRvbid0IHJ1bi4KIEVYVFJBX0RJU1QgKz0gXAotICB0ZXN0L2d0ZXN0X3Rlc3RfdXRp
bHMucHkgXAotICB0ZXN0L2d0ZXN0X3htbF90ZXN0X3V0aWxzLnB5IFwKLSAgdGVzdC9ndGVzdF9i
cmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5
IFwKLSAgdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3QucHkgXAotICB0ZXN0L2d0ZXN0X2ZpbHRlcl91
bml0dGVzdC5weSBcCisgIHRlc3QvZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0
LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdC5weSBcCisgIHRl
c3QvZ29vZ2xldGVzdC1jb2xvci10ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LWVudi12YXIt
dGVzdC5weSBcCisgIHRlc3QvZ29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3QucHkgXAogICB0ZXN0
L2d0ZXN0X2hlbHBfdGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdC5w
eSBcCi0gIHRlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkgXAotICB0ZXN0L2d0ZXN0X291dHB1dF90
ZXN0X2dvbGRlbl9saW4udHh0IFwKLSAgdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fd2lu
LnR4dCBcCi0gIHRlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF90aHJv
d19vbl9mYWlsdXJlX3Rlc3QucHkgXAotICB0ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5w
eSBcCisgIHRlc3QvZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0LnB5IFwKKyAgdGVzdC9n
b29nbGV0ZXN0LW91dHB1dC10ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0
X2dvbGRlbl9saW4udHh0IFwKKyAgdGVzdC9nb29nbGV0ZXN0LXNodWZmbGUtdGVzdC5weSBcCisg
IHRlc3QvZ3Rlc3RfdGVzdF91dGlscy5weSBcCisgIHRlc3QvZ29vZ2xldGVzdC10aHJvdy1vbi1m
YWlsdXJlLXRlc3QucHkgXAorICB0ZXN0L2dvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0LnB5
IFwKICAgdGVzdC9ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weSBcCiAgIHRlc3QvZ3Rlc3RfeG1s
X291dHB1dF91bml0dGVzdC5weSBcCi0gIHRlc3QvcnVuX3Rlc3RzX3V0aWwucHkgXAotICB0ZXN0
L3J1bl90ZXN0c191dGlsX3Rlc3QucHkKKyAgdGVzdC9ndGVzdF94bWxfdGVzdF91dGlscy5weQog
CiAjIENNYWtlIHNjcmlwdAogRVhUUkFfRElTVCArPSBcCi0gIENNYWtlTGlzdHMudHh0CisgIENN
YWtlTGlzdHMudHh0IFwKKyAgY21ha2UvaW50ZXJuYWxfdXRpbHMuY21ha2UKIAogIyBNU1ZDIHBy
b2plY3QgZmlsZXMKIEVYVFJBX0RJU1QgKz0gXAotICBtc3ZjL2d0ZXN0LW1kLnNsbiBcCi0gIG1z
dmMvZ3Rlc3Quc2xuIFwKLSAgbXN2Yy9ndGVzdC1tZC52Y3Byb2ogXAotICBtc3ZjL2d0ZXN0LnZj
cHJvaiBcCi0gIG1zdmMvZ3Rlc3RfbWFpbi1tZC52Y3Byb2ogXAotICBtc3ZjL2d0ZXN0X21haW4u
dmNwcm9qIFwKLSAgbXN2Yy9ndGVzdF9wcm9kX3Rlc3QtbWQudmNwcm9qIFwKLSAgbXN2Yy9ndGVz
dF9wcm9kX3Rlc3QudmNwcm9qIFwKLSAgbXN2Yy9ndGVzdF91bml0dGVzdC1tZC52Y3Byb2ogXAot
ICBtc3ZjL2d0ZXN0X3VuaXR0ZXN0LnZjcHJvagorICBtc3ZjLzIwMTAvZ3Rlc3QtbWQuc2xuIFwK
KyAgbXN2Yy8yMDEwL2d0ZXN0LW1kLnZjeHByb2ogXAorICBtc3ZjLzIwMTAvZ3Rlc3Quc2xuIFwK
KyAgbXN2Yy8yMDEwL2d0ZXN0LnZjeHByb2ogXAorICBtc3ZjLzIwMTAvZ3Rlc3RfbWFpbi1tZC52
Y3hwcm9qIFwKKyAgbXN2Yy8yMDEwL2d0ZXN0X21haW4udmN4cHJvaiBcCisgIG1zdmMvMjAxMC9n
dGVzdF9wcm9kX3Rlc3QtbWQudmN4cHJvaiBcCisgIG1zdmMvMjAxMC9ndGVzdF9wcm9kX3Rlc3Qu
dmN4cHJvaiBcCisgIG1zdmMvMjAxMC9ndGVzdF91bml0dGVzdC1tZC52Y3hwcm9qIFwKKyAgbXN2
Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0LnZjeHByb2oKIAogIyB4Y29kZSBwcm9qZWN0IGZpbGVzCiBF
WFRSQV9ESVNUICs9IFwKQEAgLTEzMywzMSArMTQxLDI3IEBAIEVYVFJBX0RJU1QgKz0gXAogICB4
Y29kZS9Db25maWcvU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyBcCiAgIHhjb2RlL0NvbmZp
Zy9UZXN0VGFyZ2V0LnhjY29uZmlnIFwKICAgeGNvZGUvUmVzb3VyY2VzL0luZm8ucGxpc3QgXAot
ICB4Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weSBcCiAgIHhjb2RlL1NjcmlwdHMvcnVu
dGVzdHMuc2ggXAorICB4Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weSBcCiAgIHhjb2Rl
L2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKIAogIyB4Y29kZSBzYW1wbGUgZmlsZXMK
IEVYVFJBX0RJU1QgKz0gXAogICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9JbmZvLnBs
aXN0IFwKKyAgeGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvV2lkZ2V0RnJhbWV3b3JrLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogXAogICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBs
ZS9ydW50ZXN0cy5zaCBcCi0gIHhjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90
ZXN0LmNjIFwKICAgeGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0LmNjIFwKICAg
eGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0LmggXAotICB4Y29kZS9TYW1wbGVz
L0ZyYW1ld29ya1NhbXBsZS9XaWRnZXRGcmFtZXdvcmsueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS93aWRnZXRfdGVzdC5jYwogCiAjIEMr
K0J1aWxkZXIgcHJvamVjdCBmaWxlcwogRVhUUkFfRElTVCArPSBcCisgIGNvZGVnZWFyL2d0ZXN0
LmNicHJvaiBcCisgIGNvZGVnZWFyL2d0ZXN0Lmdyb3VwcHJvaiBcCiAgIGNvZGVnZWFyL2d0ZXN0
X2FsbC5jYyBcCiAgIGNvZGVnZWFyL2d0ZXN0X2xpbmsuY2MgXAotICBjb2RlZ2Vhci9ndGVzdC5j
YnByb2ogXAogICBjb2RlZ2Vhci9ndGVzdF9tYWluLmNicHJvaiBcCi0gIGNvZGVnZWFyL2d0ZXN0
X3VuaXR0ZXN0LmNicHJvaiBcCi0gIGNvZGVnZWFyL2d0ZXN0Lmdyb3VwcHJvagotCi0jIFNjcmlw
dHMgYW5kIHV0aWxpdGllcwotYmluX1NDUklQVFMgPSBzY3JpcHRzL2d0ZXN0LWNvbmZpZwotQ0xF
QU5GSUxFUyA9ICQoYmluX1NDUklQVFMpCisgIGNvZGVnZWFyL2d0ZXN0X3VuaXR0ZXN0LmNicHJv
agogCiAjIERpc3RyaWJ1dGUgYW5kIGluc3RhbGwgTTQgbWFjcm8KIG00ZGF0YWRpciA9ICQoZGF0
YWRpcikvYWNsb2NhbApAQCAtMTgxLDE1ICsxODUsMTcgQEAgbGliX0xUTElCUkFSSUVTID0gbGli
L2xpYmd0ZXN0LmxhIGxpYi9saWJndGVzdF9tYWluLmxhCiAKIGxpYl9saWJndGVzdF9sYV9TT1VS
Q0VTID0gc3JjL2d0ZXN0LWFsbC5jYwogCi1wa2dpbmNsdWRlX0hFQURFUlMgPSBpbmNsdWRlL2d0
ZXN0L2d0ZXN0LmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVzdC1k
ZWF0aC10ZXN0LmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVzdC1t
ZXNzYWdlLmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJh
bS10ZXN0LmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVzdF9wcmVk
X2ltcGwuaCBcCi0gICAgICAgICAgICAgICAgICAgICBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2Qu
aCBcCi0gICAgICAgICAgICAgICAgICAgICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXNwaS5oIFwKLSAg
ICAgICAgICAgICAgICAgICAgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmggXAotICAg
ICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVzdC10eXBlZC10ZXN0LmgKK3BrZ2lu
Y2x1ZGVfSEVBREVSUyA9IFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmggXAor
ICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3Qt
cGFyYW0tdGVzdC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC1wcmludGVycy5oIFwKKyAgaW5j
bHVkZS9ndGVzdC9ndGVzdC1zcGkuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0
LmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaCBcCisgIGluY2x1ZGUvZ3Rl
c3QvZ3Rlc3QuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmggXAorICBpbmNs
dWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaAogCiBwa2dpbmNsdWRlX2ludGVybmFsZGlyID0gJChwa2dp
bmNsdWRlZGlyKS9pbnRlcm5hbAogcGtnaW5jbHVkZV9pbnRlcm5hbF9IRUFERVJTID0gXApAQCAt
MjAwLDYxICsyMDYsOTcgQEAgcGtnaW5jbHVkZV9pbnRlcm5hbF9IRUFERVJTID0gXAogICBpbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmggXAogICBpbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaCBcCiAgIGluY2x1ZGUvZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1w
b3J0LWFyY2guaCBcCiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmggXAog
ICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmggXAotICBpbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oCisgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtdHlwZS11dGlsLmggXAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5o
IFwKKyAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oIFwKKyAgaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcHJpbnRlcnMuaAogCiBsaWJfbGliZ3Rl
c3RfbWFpbl9sYV9TT1VSQ0VTID0gc3JjL2d0ZXN0X21haW4uY2MKIGxpYl9saWJndGVzdF9tYWlu
X2xhX0xJQkFERCA9IGxpYi9saWJndGVzdC5sYQogCi0jIEJ1bGlkIHJ1bGVzIGZvciBzYW1wbGVz
IGFuZCB0ZXN0cy4gQXV0b21ha2UncyBuYW1pbmcgZm9yIHNvbWUgb2YKKyMgQnVpbGQgcnVsZXMg
Zm9yIHNhbXBsZXMgYW5kIHRlc3RzLiBBdXRvbWFrZSdzIG5hbWluZyBmb3Igc29tZSBvZgogIyB0
aGVzZSB2YXJpYWJsZXMgaXNuJ3QgdGVycmlibHkgb2J2aW91cywgc28gdGhpcyBpcyBhIGJyaWVm
CiAjIHJlZmVyZW5jZToKICMKICMgVEVTVFMgLS0gUHJvZ3JhbXMgcnVuIGF1dG9tYXRpY2FsbHkg
YnkgIm1ha2UgY2hlY2siCiAjIGNoZWNrX1BST0dSQU1TIC0tIFByb2dyYW1zIGJ1aWx0IGJ5ICJt
YWtlIGNoZWNrIiBidXQgbm90IG5lY2Vzc2FyaWx5IHJ1bgogCi1ub2luc3RfTFRMSUJSQVJJRVMg
PSBzYW1wbGVzL2xpYnNhbXBsZXMubGEKLQotc2FtcGxlc19saWJzYW1wbGVzX2xhX1NPVVJDRVMg
PSBzYW1wbGVzL3NhbXBsZTEuY2MgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
YW1wbGVzL3NhbXBsZTEuaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBs
ZXMvc2FtcGxlMi5jYyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMv
c2FtcGxlMi5oIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlcy9zYW1w
bGUzLWlubC5oIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlcy9zYW1w
bGU0LmNjIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlcy9zYW1wbGU0
LmgKLQogVEVTVFM9CiBURVNUU19FTlZJUk9OTUVOVCA9IEdURVNUX1NPVVJDRV9ESVI9IiQoc3Jj
ZGlyKS90ZXN0IiBcCiAgICAgICAgICAgICAgICAgICAgIEdURVNUX0JVSUxEX0RJUj0iJCh0b3Bf
YnVpbGRkaXIpL3Rlc3QiCiBjaGVja19QUk9HUkFNUz0KIAogIyBBIHNpbXBsZSBzYW1wbGUgb24g
dXNpbmcgZ3Rlc3QuCi1URVNUUyArPSBzYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QKLWNoZWNrX1BS
T0dSQU1TICs9IHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdAotc2FtcGxlc19zYW1wbGUxX3VuaXR0
ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QuY2MKK1RFU1RTICs9IHNhbXBs
ZXMvc2FtcGxlMV91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0IFwKKyAg
ICBzYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlNF91bml0dGVz
dCBcCisgICAgc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTZf
dW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlN191bml0dGVzdCBcCisgICAgc2FtcGxlcy9z
YW1wbGU4X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QgXAorICAgIHNh
bXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QKK2NoZWNrX1BST0dSQU1TICs9IHNhbXBsZXMvc2FtcGxl
MV91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVz
L3NhbXBsZTNfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlNF91bml0dGVzdCBcCisgICAg
c2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3Qg
XAorICAgIHNhbXBsZXMvc2FtcGxlN191bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGU4X3Vu
aXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2Ft
cGxlMTBfdW5pdHRlc3QKKworc2FtcGxlc19zYW1wbGUxX3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1w
bGVzL3NhbXBsZTFfdW5pdHRlc3QuY2Mgc2FtcGxlcy9zYW1wbGUxLmNjCiBzYW1wbGVzX3NhbXBs
ZTFfdW5pdHRlc3RfTERBREQgPSBsaWIvbGliZ3Rlc3RfbWFpbi5sYSBcCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzYW1wbGVzL2xpYnNhbXBsZXMubGEKLQotIyBBbm90aGVyIHNh
bXBsZS4gIEl0IGFsc28gdmVyaWZpZXMgdGhhdCBsaWJndGVzdCB3b3Jrcy4KLVRFU1RTICs9IHNh
bXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QKLWNoZWNrX1BST0dSQU1TICs9IHNhbXBsZXMvc2FtcGxl
MTBfdW5pdHRlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVz
dC5sYQorc2FtcGxlc19zYW1wbGUyX3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTJf
dW5pdHRlc3QuY2Mgc2FtcGxlcy9zYW1wbGUyLmNjCitzYW1wbGVzX3NhbXBsZTJfdW5pdHRlc3Rf
TERBREQgPSBsaWIvbGliZ3Rlc3RfbWFpbi5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsaWIvbGliZ3Rlc3QubGEKK3NhbXBsZXNfc2FtcGxlM191bml0dGVzdF9TT1VSQ0VT
ID0gc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjCitzYW1wbGVzX3NhbXBsZTNfdW5pdHRlc3Rf
TERBREQgPSBsaWIvbGliZ3Rlc3RfbWFpbi5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsaWIvbGliZ3Rlc3QubGEKK3NhbXBsZXNfc2FtcGxlNF91bml0dGVzdF9TT1VSQ0VT
ID0gc2FtcGxlcy9zYW1wbGU0X3VuaXR0ZXN0LmNjIHNhbXBsZXMvc2FtcGxlNC5jYworc2FtcGxl
c19zYW1wbGU0X3VuaXR0ZXN0X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBs
ZTVfdW5pdHRlc3RfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYyBzYW1wbGVz
L3NhbXBsZTEuY2MKK3NhbXBsZXNfc2FtcGxlNV91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVz
dF9tYWluLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVz
dC5sYQorc2FtcGxlc19zYW1wbGU2X3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTZf
dW5pdHRlc3QuY2MKK3NhbXBsZXNfc2FtcGxlNl91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVz
dF9tYWluLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVz
dC5sYQorc2FtcGxlc19zYW1wbGU3X3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTdf
dW5pdHRlc3QuY2MKK3NhbXBsZXNfc2FtcGxlN191bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVz
dF9tYWluLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVz
dC5sYQorc2FtcGxlc19zYW1wbGU4X3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZThf
dW5pdHRlc3QuY2MKK3NhbXBsZXNfc2FtcGxlOF91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVz
dF9tYWluLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVz
dC5sYQorCisjIEFsc28gdmVyaWZ5IHRoYXQgbGliZ3Rlc3Qgd29ya3MgYnkgaXRzZWxmLgorc2Ft
cGxlc19zYW1wbGU5X3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3Qu
Y2MKK3NhbXBsZXNfc2FtcGxlOV91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdC5sYQogc2Ft
cGxlc19zYW1wbGUxMF91bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGUxMF91bml0dGVz
dC5jYwogc2FtcGxlc19zYW1wbGUxMF91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdC5sYQog
CiAjIFRoaXMgdGVzdHMgbW9zdCBjb25zdHJ1Y3RzIG9mIGd0ZXN0IGFuZCB2ZXJpZmllcyB0aGF0
IGxpYmd0ZXN0X21haW4KLSMgd29ya3MuCisjIGFuZCBsaWJndGVzdCB3b3JrLgogVEVTVFMgKz0g
dGVzdC9ndGVzdF9hbGxfdGVzdAogY2hlY2tfUFJPR1JBTVMgKz0gdGVzdC9ndGVzdF9hbGxfdGVz
dAogdGVzdF9ndGVzdF9hbGxfdGVzdF9TT1VSQ0VTID0gdGVzdC9ndGVzdF9hbGxfdGVzdC5jYwot
dGVzdF9ndGVzdF9hbGxfdGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWluLmxhCit0ZXN0X2d0
ZXN0X2FsbF90ZXN0X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQogCiAjIFRlc3RzIHRoYXQgZnVzZWQgZ3Rl
c3QgZmlsZXMgY29tcGlsZSBhbmQgd29yay4KIEZVU0VEX0dURVNUX1NSQyA9IFwKICAgZnVzZWQt
c3JjL2d0ZXN0L2d0ZXN0LWFsbC5jYyBcCi0gIGZ1c2VkLXNyYy9ndGVzdC9ndGVzdF9tYWluLmNj
IFwKLSAgZnVzZWQtc3JjL2d0ZXN0L2d0ZXN0LmgKKyAgZnVzZWQtc3JjL2d0ZXN0L2d0ZXN0Lmgg
XAorICBmdXNlZC1zcmMvZ3Rlc3QvZ3Rlc3RfbWFpbi5jYwogCitpZiBIQVZFX1BZVEhPTgogVEVT
VFMgKz0gdGVzdC9mdXNlZF9ndGVzdF90ZXN0CiBjaGVja19QUk9HUkFNUyArPSB0ZXN0L2Z1c2Vk
X2d0ZXN0X3Rlc3QKIHRlc3RfZnVzZWRfZ3Rlc3RfdGVzdF9TT1VSQ0VTID0gJChGVVNFRF9HVEVT
VF9TUkMpIFwKQEAgLTI3OCw3ICszMjAsMjAgQEAgZnVzZWQtZ3Rlc3Q6ICQocGtnaW5jbHVkZV9I
RUFERVJTKSAkKHBrZ2luY2x1ZGVfaW50ZXJuYWxfSEVBREVSUykgXAogCiBtYWludGFpbmVyLWNs
ZWFuLWxvY2FsOgogCXJtIC1yZiAiJChzcmNkaXIpL2Z1c2VkLXNyYyIKK2VuZGlmCiAKICMgRGVh
dGggdGVzdHMgbWF5IHByb2R1Y2UgY29yZSBkdW1wcyBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LiBJ
biBjYXNlCiAjIHRoaXMgaGFwcGVucywgY2xlYW4gdGhlbSB0byBrZWVwIGRpc3RjbGVhbmNoZWNr
IGhhcHB5LgotQ0xFQU5GSUxFUyArPSBjb3JlCitDTEVBTkZJTEVTID0gY29yZQorCisjIERpc2Fi
bGVzICdtYWtlIGluc3RhbGwnIGFzIGluc3RhbGxpbmcgYSBjb21waWxlZCB2ZXJzaW9uIG9mIEdv
b2dsZQorIyBUZXN0IGNhbiBsZWFkIHRvIHVuZGVmaW5lZCBiZWhhdmlvciBkdWUgdG8gdmlvbGF0
aW9uIG9mIHRoZQorIyBPbmUtRGVmaW5pdGlvbiBSdWxlLgorCitpbnN0YWxsLWV4ZWMtbG9jYWw6
CisJZWNobyAiJ21ha2UgaW5zdGFsbCcgaXMgZGFuZ2Vyb3VzIGFuZCBub3Qgc3VwcG9ydGVkLiBJ
bnN0ZWFkLCBzZWUgUkVBRE1FIGZvciBob3cgdG8gaW50ZWdyYXRlIEdvb2dsZSBUZXN0IGludG8g
eW91ciBidWlsZCBzeXN0ZW0uIgorCWZhbHNlCisKK2luc3RhbGwtZGF0YS1sb2NhbDoKKwllY2hv
ICInbWFrZSBpbnN0YWxsJyBpcyBkYW5nZXJvdXMgYW5kIG5vdCBzdXBwb3J0ZWQuIEluc3RlYWQs
IHNlZSBSRUFETUUgZm9yIGhvdyB0byBpbnRlZ3JhdGUgR29vZ2xlIFRlc3QgaW50byB5b3VyIGJ1
aWxkIHN5c3RlbS4iCisJZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L1JFQURNRSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZWM2MTE5MDAyMDk5MTUwZDcxNTc0OWExNmUwM2MyZjU3MzY4NmJiNS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9SRUFETUUKKysrIC9kZXYvbnVsbApAQCAtMSw0MTcgKzAsMCBAQAotR29v
Z2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yawotPT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
Ci1odHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC8KLQotT3ZlcnZpZXcKLS0tLS0t
LS0tCi0KLUdvb2dsZSdzIGZyYW1ld29yayBmb3Igd3JpdGluZyBDKysgdGVzdHMgb24gYSB2YXJp
ZXR5IG9mIHBsYXRmb3JtcwotKExpbnV4LCBNYWMgT1MgWCwgV2luZG93cywgV2luZG93cyBDRSwg
U3ltYmlhbiwgZXRjKS4gIEJhc2VkIG9uIHRoZQoteFVuaXQgYXJjaGl0ZWN0dXJlLiAgU3VwcG9y
dHMgYXV0b21hdGljIHRlc3QgZGlzY292ZXJ5LCBhIHJpY2ggc2V0IG9mCi1hc3NlcnRpb25zLCB1
c2VyLWRlZmluZWQgYXNzZXJ0aW9ucywgZGVhdGggdGVzdHMsIGZhdGFsIGFuZCBub24tZmF0YWwK
LWZhaWx1cmVzLCB2YXJpb3VzIG9wdGlvbnMgZm9yIHJ1bm5pbmcgdGhlIHRlc3RzLCBhbmQgWE1M
IHRlc3QgcmVwb3J0Ci1nZW5lcmF0aW9uLgotCi1QbGVhc2Ugc2VlIHRoZSBwcm9qZWN0IHBhZ2Ug
YWJvdmUgZm9yIG1vcmUgaW5mb3JtYXRpb24gYXMgd2VsbCBhcyB0aGUKLW1haWxpbmcgbGlzdCBm
b3IgcXVlc3Rpb25zLCBkaXNjdXNzaW9ucywgYW5kIGRldmVsb3BtZW50LiAgVGhlcmUgaXMKLWFs
c28gYW4gSVJDIGNoYW5uZWwgb24gT0ZUQyAoaXJjLm9mdGMubmV0KSAjZ3Rlc3QgYXZhaWxhYmxl
LiAgUGxlYXNlCi1qb2luIHVzIQotCi1SZXF1aXJlbWVudHMgZm9yIEVuZCBVc2VycwotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotR29vZ2xlIFRlc3QgaXMgZGVzaWduZWQgdG8gaGF2ZSBm
YWlybHkgbWluaW1hbCByZXF1aXJlbWVudHMgdG8gYnVpbGQKLWFuZCB1c2Ugd2l0aCB5b3VyIHBy
b2plY3RzLCBidXQgdGhlcmUgYXJlIHNvbWUuICBDdXJyZW50bHksIHdlIHN1cHBvcnQKLUxpbnV4
LCBXaW5kb3dzLCBNYWMgT1MgWCwgYW5kIEN5Z3dpbi4gIFdlIHdpbGwgYWxzbyBtYWtlIG91ciBi
ZXN0Ci1lZmZvcnQgdG8gc3VwcG9ydCBvdGhlciBwbGF0Zm9ybXMgKGUuZy4gU29sYXJpcywgQUlY
LCBhbmQgei9PUykuCi1Ib3dldmVyLCBzaW5jZSBjb3JlIG1lbWJlcnMgb2YgdGhlIEdvb2dsZSBU
ZXN0IHByb2plY3QgaGF2ZSBubyBhY2Nlc3MKLXRvIHRoZXNlIHBsYXRmb3JtcywgR29vZ2xlIFRl
c3QgbWF5IGhhdmUgb3V0c3RhbmRpbmcgaXNzdWVzIHRoZXJlLiAgSWYKLXlvdSBub3RpY2UgYW55
IHByb2JsZW1zIG9uIHlvdXIgcGxhdGZvcm0sIHBsZWFzZSBub3RpZnkKLWdvb2dsZXRlc3RmcmFt
ZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbS4gIFBhdGNoZXMgZm9yIGZpeGluZyB0aGVtIGFyZQotZXZl
biBtb3JlIHdlbGNvbWUhCi0KLSMjIyBMaW51eCBSZXF1aXJlbWVudHMgIyMjCi0KLVRoZXNlIGFy
ZSB0aGUgYmFzZSByZXF1aXJlbWVudHMgdG8gYnVpbGQgYW5kIHVzZSBHb29nbGUgVGVzdCBmcm9t
IGEgc291cmNlCi1wYWNrYWdlIChhcyBkZXNjcmliZWQgYmVsb3cpOgotICAqIEdOVS1jb21wYXRp
YmxlIE1ha2Ugb3IgZ21ha2UKLSAgKiBQT1NJWC1zdGFuZGFyZCBzaGVsbAotICAqIFBPU0lYKC0y
KSBSZWd1bGFyIEV4cHJlc3Npb25zIChyZWdleC5oKQotICAqIEEgQysrOTgtc3RhbmRhcmQtY29t
cGxpYW50IGNvbXBpbGVyCi0KLSMjIyBXaW5kb3dzIFJlcXVpcmVtZW50cyAjIyMKLQotICAqIE1p
Y3Jvc29mdCBWaXN1YWwgQysrIDcuMSBvciBuZXdlcgotCi0jIyMgQ3lnd2luIFJlcXVpcmVtZW50
cyAjIyMKLQotICAqIEN5Z3dpbiAxLjUuMjUtMTQgb3IgbmV3ZXIKLQotIyMjIE1hYyBPUyBYIFJl
cXVpcmVtZW50cyAjIyMKLQotICAqIE1hYyBPUyBYIDEwLjQgVGlnZXIgb3IgbmV3ZXIKLSAgKiBE
ZXZlbG9wZXIgVG9vbHMgSW5zdGFsbGVkCi0KLUFsc28sIHlvdSdsbCBuZWVkIENNYWtlIDIuNi40
IG9yIGhpZ2hlciBpZiB5b3Ugd2FudCB0byBidWlsZCB0aGUKLXNhbXBsZXMgdXNpbmcgdGhlIHBy
b3ZpZGVkIENNYWtlIHNjcmlwdCwgcmVnYXJkbGVzcyBvZiB0aGUgcGxhdGZvcm0uCi0KLVJlcXVp
cmVtZW50cyBmb3IgQ29udHJpYnV0b3JzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci1XZSB3ZWxjb21lIHBhdGNoZXMuICBJZiB5b3UgcGxhbiB0byBjb250cmlidXRlIGEgcGF0Y2gs
IHlvdSBuZWVkIHRvCi1idWlsZCBHb29nbGUgVGVzdCBhbmQgaXRzIG93biB0ZXN0cyBmcm9tIGFu
IFNWTiBjaGVja291dCAoZGVzY3JpYmVkCi1iZWxvdyksIHdoaWNoIGhhcyBmdXJ0aGVyIHJlcXVp
cmVtZW50czoKLQotICAqIFB5dGhvbiB2ZXJzaW9uIDIuMyBvciBuZXdlciAoZm9yIHJ1bm5pbmcg
c29tZSBvZiB0aGUgdGVzdHMgYW5kCi0gICAgcmUtZ2VuZXJhdGluZyBjZXJ0YWluIHNvdXJjZSBm
aWxlcyBmcm9tIHRlbXBsYXRlcykKLSAgKiBDTWFrZSAyLjYuNCBvciBuZXdlcgotCi1HZXR0aW5n
IHRoZSBTb3VyY2UKLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UaGVyZSBhcmUgdHdvIHByaW1hcnkg
d2F5cyBvZiBnZXR0aW5nIEdvb2dsZSBUZXN0J3Mgc291cmNlIGNvZGU6IHlvdQotY2FuIGRvd25s
b2FkIGEgc3RhYmxlIHNvdXJjZSByZWxlYXNlIGluIHlvdXIgcHJlZmVycmVkIGFyY2hpdmUgZm9y
bWF0LAotb3IgZGlyZWN0bHkgY2hlY2sgb3V0IHRoZSBzb3VyY2UgZnJvbSBvdXIgU3VidmVyc2lv
biAoU1ZOKSByZXBvc2l0YXJ5LgotVGhlIFNWTiBjaGVja291dCByZXF1aXJlcyBhIGZldyBleHRy
YSBzdGVwcyBhbmQgc29tZSBleHRyYSBzb2Z0d2FyZQotcGFja2FnZXMgb24geW91ciBzeXN0ZW0s
IGJ1dCBsZXRzIHlvdSB0cmFjayB0aGUgbGF0ZXN0IGRldmVsb3BtZW50IGFuZAotbWFrZSBwYXRj
aGVzIG11Y2ggbW9yZSBlYXNpbHksIHNvIHdlIGhpZ2hseSBlbmNvdXJhZ2UgaXQuCi0KLSMjIyBT
b3VyY2UgUGFja2FnZSAjIyMKLQotR29vZ2xlIFRlc3QgaXMgcmVsZWFzZWQgaW4gdmVyc2lvbmVk
IHNvdXJjZSBwYWNrYWdlcyB3aGljaCBjYW4gYmUKLWRvd25sb2FkZWQgZnJvbSB0aGUgZG93bmxv
YWQgcGFnZSBbMV0uICBTZXZlcmFsIGRpZmZlcmVudCBhcmNoaXZlCi1mb3JtYXRzIGFyZSBwcm92
aWRlZCwgYnV0IHRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhlIHRvb2xzIHVzZWQgdG8KLW1hbmlw
dWxhdGUgdGhlbSwgYW5kIHRoZSBzaXplIG9mIHRoZSByZXN1bHRpbmcgZmlsZS4gIERvd25sb2Fk
Ci13aGljaGV2ZXIgeW91IGFyZSBtb3N0IGNvbWZvcnRhYmxlIHdpdGguCi0KLSAgWzFdIGh0dHA6
Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L2Rvd25sb2Fkcy9saXN0Ci0KLU9uY2UgdGhl
IHBhY2thZ2UgaXMgZG93bmxvYWRlZCwgZXhwYW5kIGl0IHVzaW5nIHdoaWNoZXZlciB0b29scyB5
b3UKLXByZWZlciBmb3IgdGhhdCB0eXBlLiAgVGhpcyB3aWxsIHJlc3VsdCBpbiBhIG5ldyBkaXJl
Y3Rvcnkgd2l0aCB0aGUKLW5hbWUgImd0ZXN0LVguWS5aIiB3aGljaCBjb250YWlucyBhbGwgb2Yg
dGhlIHNvdXJjZSBjb2RlLiAgSGVyZSBhcmUKLXNvbWUgZXhhbXBsZXMgb24gTGludXg6Ci0KLSAg
dGFyIC14dnpmIGd0ZXN0LVguWS5aLnRhci5negotICB0YXIgLXh2amYgZ3Rlc3QtWC5ZLloudGFy
LmJ6MgotICB1bnppcCBndGVzdC1YLlkuWi56aXAKLQotIyMjIFNWTiBDaGVja291dCAjIyMKLQot
VG8gY2hlY2sgb3V0IHRoZSBtYWluIGJyYW5jaCAoYWxzbyBrbm93biBhcyB0aGUgInRydW5rIikg
b2YgR29vZ2xlCi1UZXN0LCBydW4gdGhlIGZvbGxvd2luZyBTdWJ2ZXJzaW9uIGNvbW1hbmQ6Ci0K
LSAgc3ZuIGNoZWNrb3V0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVu
ay8gZ3Rlc3Qtc3ZuCi0KLVNldHRpbmcgdXAgdGhlIEJ1aWxkCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCi1UbyBidWlsZCBHb29nbGUgVGVzdCBhbmQgeW91ciB0ZXN0cyB0aGF0IHVzZSBpdCwgeW91
IG5lZWQgdG8gdGVsbCB5b3VyCi1idWlsZCBzeXN0ZW0gd2hlcmUgdG8gZmluZCBpdHMgaGVhZGVy
cyBhbmQgc291cmNlIGZpbGVzLiAgVGhlIGV4YWN0Ci13YXkgdG8gZG8gaXQgZGVwZW5kcyBvbiB3
aGljaCBidWlsZCBzeXN0ZW0geW91IHVzZSwgYW5kIGlzIHVzdWFsbHkKLXN0cmFpZ2h0Zm9yd2Fy
ZC4KLQotIyMjIEdlbmVyaWMgQnVpbGQgSW5zdHJ1Y3Rpb25zICMjIwotCi1TdXBwb3NlIHlvdSBw
dXQgR29vZ2xlIFRlc3QgaW4gZGlyZWN0b3J5ICR7R1RFU1RfRElSfS4gIFRvIGJ1aWxkIGl0LAot
Y3JlYXRlIGEgbGlicmFyeSBidWlsZCB0YXJnZXQgKG9yIGEgcHJvamVjdCBhcyBjYWxsZWQgYnkg
VmlzdWFsIFN0dWRpbwotYW5kIFhjb2RlKSB0byBjb21waWxlCi0KLSAgJHtHVEVTVF9ESVJ9L3Ny
Yy9ndGVzdC1hbGwuY2MKLQotd2l0aAotCi0gICR7R1RFU1RfRElSfS9pbmNsdWRlIGFuZCAke0dU
RVNUX0RJUn0KLQotaW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0aC4gIEFzc3VtaW5nIGEgTGludXgt
bGlrZSBzeXN0ZW0gYW5kIGdjYywKLXNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgd2lsbCBk
bzoKLQotICBnKysgLUkke0dURVNUX0RJUn0vaW5jbHVkZSAtSSR7R1RFU1RfRElSfSAtYyAke0dU
RVNUX0RJUn0vc3JjL2d0ZXN0LWFsbC5jYwotICBhciAtcnYgbGliZ3Rlc3QuYSBndGVzdC1hbGwu
bwotCi1OZXh0LCB5b3Ugc2hvdWxkIGNvbXBpbGUgeW91ciB0ZXN0IHNvdXJjZSBmaWxlIHdpdGgK
LSR7R1RFU1RfRElSfS9pbmNsdWRlIGluIHRoZSBoZWFkZXIgc2VhcmNoIHBhdGgsIGFuZCBsaW5r
IGl0IHdpdGggZ3Rlc3QKLWFuZCBhbnkgb3RoZXIgbmVjZXNzYXJ5IGxpYnJhcmllczoKLQotICBn
KysgLUkke0dURVNUX0RJUn0vaW5jbHVkZSBwYXRoL3RvL3lvdXJfdGVzdC5jYyBsaWJndGVzdC5h
IC1vIHlvdXJfdGVzdAotCi1BcyBhbiBleGFtcGxlLCB0aGUgbWFrZS8gZGlyZWN0b3J5IGNvbnRh
aW5zIGEgTWFrZWZpbGUgdGhhdCB5b3UgY2FuCi11c2UgdG8gYnVpbGQgR29vZ2xlIFRlc3Qgb24g
c3lzdGVtcyB3aGVyZSBHTlUgbWFrZSBpcyBhdmFpbGFibGUKLShlLmcuIExpbnV4LCBNYWMgT1Mg
WCwgYW5kIEN5Z3dpbikuICBJdCBkb2Vzbid0IHRyeSB0byBidWlsZCBHb29nbGUKLVRlc3QncyBv
d24gdGVzdHMuICBJbnN0ZWFkLCBpdCBqdXN0IGJ1aWxkcyB0aGUgR29vZ2xlIFRlc3QgbGlicmFy
eSBhbmQKLWEgc2FtcGxlIHRlc3QuICBZb3UgY2FuIHVzZSBpdCBhcyBhIHN0YXJ0aW5nIHBvaW50
IGZvciB5b3VyIG93biBidWlsZAotc2NyaXB0LgotCi1JZiB0aGUgZGVmYXVsdCBzZXR0aW5ncyBh
cmUgY29ycmVjdCBmb3IgeW91ciBlbnZpcm9ubWVudCwgdGhlCi1mb2xsb3dpbmcgY29tbWFuZHMg
c2hvdWxkIHN1Y2NlZWQ6Ci0KLSAgY2QgJHtHVEVTVF9ESVJ9L21ha2UKLSAgbWFrZQotICAuL3Nh
bXBsZTFfdW5pdHRlc3QKLQotSWYgeW91IHNlZSBlcnJvcnMsIHRyeSB0byB0d2VhayB0aGUgY29u
dGVudHMgb2YgbWFrZS9NYWtlZmlsZSB0byBtYWtlCi10aGVtIGdvIGF3YXkuICBUaGVyZSBhcmUg
aW5zdHJ1Y3Rpb25zIGluIG1ha2UvTWFrZWZpbGUgb24gaG93IHRvIGRvCi1pdC4KLQotIyMjIFVz
aW5nIENNYWtlICMjIwotCi1Hb29nbGUgVGVzdCBjb21lcyB3aXRoIGEgQ01ha2UgYnVpbGQgc2Ny
aXB0IChDTWFrZUxpc3RzLnR4dCkgdGhhdCBjYW4KLWJlIHVzZWQgb24gYSB3aWRlIHJhbmdlIG9m
IHBsYXRmb3JtcyAoIkMiIHN0YW5kcyBmb3IgY3Jvc3MtcGxhdG9mcm0uKS4KLUlmIHlvdSBkb24n
dCBoYXZlIENNYWtlIGluc3RhbGxlZCBhbHJlYWR5LCB5b3UgY2FuIGRvd25sb2FkIGl0IGZvcgot
ZnJlZSBmcm9tIGh0dHA6Ly93d3cuY21ha2Uub3JnLy4KLQotQ01ha2Ugd29ya3MgYnkgZ2VuZXJh
dGluZyBuYXRpdmUgbWFrZWZpbGVzIG9yIGJ1aWxkIHByb2plY3RzIHRoYXQgY2FuCi1iZSB1c2Vk
IGluIHRoZSBjb21waWxlciBlbnZpcm9ubWVudCBvZiB5b3VyIGNob2ljZS4gIFRoZSB0eXBpY2Fs
Ci13b3JrZmxvdyBzdGFydHMgd2l0aDoKLQotICBta2RpciBteWJ1aWxkICAgICAgICMgQ3JlYXRl
IGEgZGlyZWN0b3J5IHRvIGhvbGQgdGhlIGJ1aWxkIG91dHB1dC4KLSAgY2QgbXlidWlsZAotICBj
bWFrZSAke0dURVNUX0RJUn0gICMgR2VuZXJhdGUgbmF0aXZlIGJ1aWxkIHNjcmlwdHMuCi0KLUlm
IHlvdSB3YW50IHRvIGJ1aWxkIEdvb2dsZSBUZXN0J3Mgc2FtcGxlcywgeW91IHNob3VsZCByZXBs
YWNlIHRoZQotbGFzdCBjb21tYW5kIHdpdGgKLQotICBjbWFrZSAtRGJ1aWxkX2d0ZXN0X3NhbXBs
ZXM9T04gJHtHVEVTVF9ESVJ9Ci0KLUlmIHlvdSBhcmUgb24gYSAqbml4IHN5c3RlbSwgeW91IHNo
b3VsZCBub3cgc2VlIGEgTWFrZWZpbGUgaW4gdGhlCi1jdXJyZW50IGRpcmVjdG9yeS4gIEp1c3Qg
dHlwZSAnbWFrZScgdG8gYnVpbGQgZ3Rlc3QuCi0KLUlmIHlvdSB1c2UgV2luZG93cyBhbmQgaGF2
ZSBWaXN0dWFsIFN0dWRpbyBpbnN0YWxsZWQsIGEgZ3Rlc3Quc2xuIGZpbGUKLWFuZCBzZXZlcmFs
IC52Y3Byb2ogZmlsZXMgd2lsbCBiZSBjcmVhdGVkLiAgWW91IGNhbiB0aGVuIGJ1aWxkIHRoZW0K
LXVzaW5nIFZpc3VhbCBTdHVkaW8uCi0KLU9uIE1hYyBPUyBYIHdpdGggWGNvZGUgaW5zdGFsbGVk
LCBhIC54Y29kZXByb2ogZmlsZSB3aWxsIGJlIGdlbmVyYXRlZC4KLQotIyMjIExlZ2FjeSBCdWls
ZCBTY3JpcHRzICMjIwotCi1CZWZvcmUgc2V0dGxpbmcgb24gQ01ha2UsIHdlIGhhdmUgYmVlbiBw
cm92aWRpbmcgaGFuZC1tYWludGFpbmVkIGJ1aWxkCi1wcm9qZWN0cy9zY3JpcHRzIGZvciBWaXN1
YWwgU3R1ZGlvLCBYY29kZSwgYW5kIEF1dG90b29scy4gIFdoaWxlIHdlCi1jb250aW51ZSB0byBw
cm92aWRlIHRoZW0gZm9yIGNvbnZlbmllbmNlLCB0aGV5IGFyZSBub3QgYWN0aXZlbHkKLW1haW50
YWluZWQgYW55IG1vcmUuICBXZSBoaWdobHkgcmVjb21tZW5kIHRoYXQgeW91IGZvbGxvdyB0aGUK
LWluc3RydWN0aW9ucyBpbiB0aGUgcHJldmlvdXMgdHdvIHNlY3Rpb25zIHRvIGludGVncmF0ZSBH
b29nbGUgVGVzdAotd2l0aCB5b3VyIGV4aXN0aW5nIGJ1aWxkIHN5c3RlbS4KLQotSWYgeW91IHN0
aWxsIG5lZWQgdG8gdXNlIHRoZSBsZWdhY3kgYnVpbGQgc2NyaXB0cywgaGVyZSdzIGhvdzoKLQot
VGhlIG1zdmNcIGZvbGRlciBjb250YWlucyB0d28gc29sdXRpb25zIHdpdGggVmlzdWFsIEMrKyBw
cm9qZWN0cy4KLU9wZW4gdGhlIGd0ZXN0LnNsbiBvciBndGVzdC1tZC5zbG4gZmlsZSB1c2luZyBW
aXN1YWwgU3R1ZGlvLCBhbmQgeW91Ci1hcmUgcmVhZHkgdG8gYnVpbGQgR29vZ2xlIFRlc3QgdGhl
IHNhbWUgd2F5IHlvdSBidWlsZCBhbnkgVmlzdWFsCi1TdHVkaW8gcHJvamVjdC4gIEZpbGVzIHRo
YXQgaGF2ZSBuYW1lcyBlbmRpbmcgd2l0aCAtbWQgdXNlIERMTAotdmVyc2lvbnMgb2YgTWljcm9z
b2Z0IHJ1bnRpbWUgbGlicmFyaWVzICh0aGUgL01EIG9yIHRoZSAvTURkIGNvbXBpbGVyCi1vcHRp
b24pLiAgRmlsZXMgd2l0aG91dCB0aGF0IHN1ZmZpeCB1c2Ugc3RhdGljIHZlcnNpb25zIG9mIHRo
ZSBydW50aW1lCi1saWJyYXJpZXMgKHRoZSAvTVQgb3IgdGhlIC9NVGQgb3B0aW9uKS4gIFBsZWFz
ZSBub3RlIHRoYXQgb25lIG11c3QgdXNlCi10aGUgc2FtZSBvcHRpb24gdG8gY29tcGlsZSBib3Ro
IGd0ZXN0IGFuZCB0aGUgdGVzdCBjb2RlLiAgSWYgeW91IHVzZQotVmlzdWFsIFN0dWRpbyAyMDA1
IG9yIGFib3ZlLCB3ZSByZWNvbW1lbmQgdGhlIC1tZCB2ZXJzaW9uIGFzIC9NRCBpcwotdGhlIGRl
ZmF1bHQgZm9yIG5ldyBwcm9qZWN0cyBpbiB0aGVzZSB2ZXJzaW9ucyBvZiBWaXN1YWwgU3R1ZGlv
LgotCi1PbiBNYWMgT1MgWCwgb3BlbiB0aGUgZ3Rlc3QueGNvZGVwcm9qIGluIHRoZSB4Y29kZS8g
Zm9sZGVyIHVzaW5nCi1YY29kZS4gIEJ1aWxkIHRoZSAiZ3Rlc3QiIHRhcmdldC4gIFRoZSB1bml2
ZXJzYWwgYmluYXJ5IGZyYW1ld29yayB3aWxsCi1lbmQgdXAgaW4geW91ciBzZWxlY3RlZCBidWls
ZCBkaXJlY3RvcnkgKHNlbGVjdGVkIGluIHRoZSBYY29kZQotIlByZWZlcmVuY2VzLi4uIiAtPiAi
QnVpbGRpbmciIHBhbmUgYW5kIGRlZmF1bHRzIHRvIHhjb2RlL2J1aWxkKS4KLUFsdGVybmF0aXZl
bHksIGF0IHRoZSBjb21tYW5kIGxpbmUsIGVudGVyOgotCi0gIHhjb2RlYnVpbGQKLQotVGhpcyB3
aWxsIGJ1aWxkIHRoZSAiUmVsZWFzZSIgY29uZmlndXJhdGlvbiBvZiBndGVzdC5mcmFtZXdvcmsg
aW4geW91cgotZGVmYXVsdCBidWlsZCBsb2NhdGlvbi4gIFNlZSB0aGUgInhjb2RlYnVpbGQiIG1h
biBwYWdlIGZvciBtb3JlCi1pbmZvcm1hdGlvbiBhYm91dCBidWlsZGluZyBkaWZmZXJlbnQgY29u
ZmlndXJhdGlvbnMgYW5kIGJ1aWxkaW5nIGluCi1kaWZmZXJlbnQgbG9jYXRpb25zLgotCi1Ud2Vh
a2luZyBHb29nbGUgVGVzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotR29vZ2xlIFRlc3QgY2Fu
IGJlIHVzZWQgaW4gZGl2ZXJzZSBlbnZpcm9ubWVudHMuICBUaGUgZGVmYXVsdAotY29uZmlndXJh
dGlvbiBtYXkgbm90IHdvcmsgKG9yIG1heSBub3Qgd29yayB3ZWxsKSBvdXQgb2YgdGhlIGJveCBp
bgotc29tZSBlbnZpcm9ubWVudHMuICBIb3dldmVyLCB5b3UgY2FuIGVhc2lseSB0d2VhayBHb29n
bGUgVGVzdCBieQotZGVmaW5pbmcgY29udHJvbCBtYWNyb3Mgb24gdGhlIGNvbXBpbGVyIGNvbW1h
bmQgbGluZS4gIEdlbmVyYWxseSwKLXRoZXNlIG1hY3JvcyBhcmUgbmFtZWQgbGlrZSBHVEVTVF9Y
WVogYW5kIHlvdSBkZWZpbmUgdGhlbSB0byBlaXRoZXIgMQotb3IgMCB0byBlbmFibGUgb3IgZGlz
YWJsZSBhIGNlcnRhaW4gZmVhdHVyZS4KLQotV2UgbGlzdCB0aGUgbW9zdCBmcmVxdWVudGx5IHVz
ZWQgbWFjcm9zIGJlbG93LiAgRm9yIGEgY29tcGxldGUgbGlzdCwKLXNlZSBmaWxlIGluY2x1ZGUv
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oLgotCi0jIyMgQ2hvb3NpbmcgYSBUUjEgVHVwbGUg
TGlicmFyeSAjIyMKLQotU29tZSBHb29nbGUgVGVzdCBmZWF0dXJlcyByZXF1aXJlIHRoZSBDKysg
VGVjaG5pY2FsIFJlcG9ydCAxIChUUjEpCi10dXBsZSBsaWJyYXJ5LCB3aGljaCBpcyBub3QgeWV0
IGF2YWlsYWJsZSB3aXRoIGFsbCBjb21waWxlcnMuICBUaGUKLWdvb2QgbmV3cyBpcyB0aGF0IEdv
b2dsZSBUZXN0IGltcGxlbWVudHMgYSBzdWJzZXQgb2YgVFIxIHR1cGxlIHRoYXQncwotZW5vdWdo
IGZvciBpdHMgb3duIG5lZWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdXNlIHRoaXMgd2hlbiB0
aGUKLWNvbXBpbGVyIGRvZXNuJ3QgcHJvdmlkZSBUUjEgdHVwbGUuCi0KLVVzdWFsbHkgeW91IGRv
bid0IG5lZWQgdG8gY2FyZSBhYm91dCB3aGljaCB0dXBsZSBsaWJyYXJ5IEdvb2dsZSBUZXN0Ci11
c2VzLiAgSG93ZXZlciwgaWYgeW91ciBwcm9qZWN0IGFscmVhZHkgdXNlcyBUUjEgdHVwbGUsIHlv
dSBuZWVkIHRvCi10ZWxsIEdvb2dsZSBUZXN0IHRvIHVzZSB0aGUgc2FtZSBUUjEgdHVwbGUgbGli
cmFyeSB0aGUgcmVzdCBvZiB5b3VyCi1wcm9qZWN0IHVzZXMsIG9yIHRoZSB0d28gdHVwbGUgaW1w
bGVtZW50YXRpb25zIHdpbGwgY2xhc2guICBUbyBkbwotdGhhdCwgYWRkCi0KLSAgLURHVEVTVF9V
U0VfT1dOX1RSMV9UVVBMRT0wCi0KLXRvIHRoZSBjb21waWxlciBmbGFncyB3aGlsZSBjb21waWxp
bmcgR29vZ2xlIFRlc3QgYW5kIHlvdXIgdGVzdHMuICBJZgoteW91IHdhbnQgdG8gZm9yY2UgR29v
Z2xlIFRlc3QgdG8gdXNlIGl0cyBvd24gdHVwbGUgbGlicmFyeSwganVzdCBhZGQKLQotICAtREdU
RVNUX1VTRV9PV05fVFIxX1RVUExFPTEKLQotdG8gdGhlIGNvbXBpbGVyIGZsYWdzIGluc3RlYWQu
Ci0KLUlmIHlvdSBkb24ndCB3YW50IEdvb2dsZSBUZXN0IHRvIHVzZSB0dXBsZSBhdCBhbGwsIGFk
ZAotCi0gIC1ER1RFU1RfSEFTX1RSMV9UVVBMRT0wCi0KLWFuZCBhbGwgZmVhdHVyZXMgdXNpbmcg
dHVwbGUgd2lsbCBiZSBkaXNhYmxlZC4KLQotIyMjIE11bHRpLXRocmVhZGVkIFRlc3RzICMjIwot
Ci1Hb29nbGUgVGVzdCBpcyB0aHJlYWQtc2FmZSB3aGVyZSB0aGUgcHRocmVhZCBsaWJyYXJ5IGlz
IGF2YWlsYWJsZS4KLUFmdGVyICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPiwgeW91IGNhbiBjaGVj
ayB0aGUgR1RFU1RfSVNfVEhSRUFEU0FGRQotbWFjcm8gdG8gc2VlIHdoZXRoZXIgdGhpcyBpcyB0
aGUgY2FzZSAoeWVzIGlmIHRoZSBtYWNybyBpcyAjZGVmaW5lZCB0bwotMSwgbm8gaWYgaXQncyB1
bmRlZmluZWQuKS4KLQotSWYgR29vZ2xlIFRlc3QgZG9lc24ndCBjb3JyZWN0bHkgZGV0ZWN0IHdo
ZXRoZXIgcHRocmVhZCBpcyBhdmFpbGFibGUKLWluIHlvdXIgZW52aXJvbm1lbnQsIHlvdSBjYW4g
Zm9yY2UgaXQgd2l0aAotCi0gIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MQotCi1vcgotCi0gIC1ER1RF
U1RfSEFTX1BUSFJFQUQ9MAotCi1XaGVuIEdvb2dsZSBUZXN0IHVzZXMgcHRocmVhZCwgeW91IG1h
eSBuZWVkIHRvIGFkZCBmbGFncyB0byB5b3VyCi1jb21waWxlciBhbmQvb3IgbGlua2VyIHRvIHNl
bGVjdCB0aGUgcHRocmVhZCBsaWJyYXJ5LCBvciB5b3UnbGwgZ2V0Ci1saW5rIGVycm9ycy4gIElm
IHlvdSB1c2UgdGhlIENNYWtlIHNjcmlwdCBvciB0aGUgZGVwcmVjYXRlZCBBdXRvdG9vbHMKLXNj
cmlwdCwgdGhpcyBpcyB0YWtlbiBjYXJlIG9mIGZvciB5b3UuICBJZiB5b3UgdXNlIHlvdXIgb3du
IGJ1aWxkCi1zY3JpcHQsIHlvdSdsbCBuZWVkIHRvIHJlYWQgeW91ciBjb21waWxlciBhbmQgbGlu
a2VyJ3MgbWFudWFsIHRvCi1maWd1cmUgb3V0IHdoYXQgZmxhZ3MgdG8gYWRkLgotCi0jIyMgQXMg
YSBTaGFyZWQgTGlicmFyeSAoRExMKSAjIyMKLQotR29vZ2xlIFRlc3QgaXMgY29tcGFjdCwgc28g
bW9zdCB1c2VycyBjYW4gYnVpbGQgYW5kIGxpbmsgaXQgYXMgYQotc3RhdGljIGxpYnJhcnkgZm9y
IHRoZSBzaW1wbGljaXR5LiAgWW91IGNhbiBjaG9vc2UgdG8gdXNlIEdvb2dsZSBUZXN0Ci1hcyBh
IHNoYXJlZCBsaWJyYXJ5IChrbm93biBhcyBhIERMTCBvbiBXaW5kb3dzKSBpZiB5b3UgcHJlZmVy
LgotCi1UbyBjb21waWxlIGd0ZXN0IGFzIGEgc2hhcmVkIGxpYnJhcnksIGFkZAotCi0gIC1ER1RF
U1RfQ1JFQVRFX1NIQVJFRF9MSUJSQVJZPTEKLQotdG8gdGhlIGNvbXBpbGVyIGZsYWdzLiAgWW91
J2xsIGFsc28gbmVlZCB0byB0ZWxsIHRoZSBsaW5rZXIgdG8gcHJvZHVjZQotYSBzaGFyZWQgbGli
cmFyeSBpbnN0ZWFkIC0gY29uc3VsdCB5b3VyIGxpbmtlcidzIG1hbnVhbCBmb3IgaG93IHRvIGRv
Ci1pdC4KLQotVG8gY29tcGlsZSB5b3VyIHRlc3RzIHRoYXQgdXNlIHRoZSBndGVzdCBzaGFyZWQg
bGlicmFyeSwgYWRkCi0KLSAgLURHVEVTVF9MSU5LRURfQVNfU0hBUkVEX0xJQlJBUlk9MQotCi10
byB0aGUgY29tcGlsZXIgZmxhZ3MuCi0KLSMjIyBBdm9pZGluZyBNYWNybyBOYW1lIENsYXNoZXMg
IyMjCi0KLUluIEMrKywgbWFjcm9zIGRvbid0IG9iZXkgbmFtZXNwYWNlcy4gIFRoZXJlZm9yZSB0
d28gbGlicmFyaWVzIHRoYXQKLWJvdGggZGVmaW5lIGEgbWFjcm8gb2YgdGhlIHNhbWUgbmFtZSB3
aWxsIGNsYXNoIGlmIHlvdSAjaW5jbHVkZSBib3RoCi1kZWZpbml0aW9ucy4gIEluIGNhc2UgYSBH
b29nbGUgVGVzdCBtYWNybyBjbGFzaGVzIHdpdGggYW5vdGhlcgotbGlicmFyeSwgeW91IGNhbiBm
b3JjZSBHb29nbGUgVGVzdCB0byByZW5hbWUgaXRzIG1hY3JvIHRvIGF2b2lkIHRoZQotY29uZmxp
Y3QuCi0KLVNwZWNpZmljYWxseSwgaWYgYm90aCBHb29nbGUgVGVzdCBhbmQgc29tZSBvdGhlciBj
b2RlIGRlZmluZSBtYWNybwotRk9PLCB5b3UgY2FuIGFkZAotCi0gIC1ER1RFU1RfRE9OVF9ERUZJ
TkVfRk9PPTEKLQotdG8gdGhlIGNvbXBpbGVyIGZsYWdzIHRvIHRlbGwgR29vZ2xlIFRlc3QgdG8g
Y2hhbmdlIHRoZSBtYWNybydzIG5hbWUKLWZyb20gRk9PIHRvIEdURVNUX0ZPTy4gIEN1cnJlbnRs
eSBGT08gY2FuIGJlIEZBSUwsIFNVQ0NFRUQsIG9yIFRFU1QuCi1Gb3IgZXhhbXBsZSwgd2l0aCAt
REdURVNUX0RPTlRfREVGSU5FX1RFU1Q9MSwgeW91J2xsIG5lZWQgdG8gd3JpdGUKLQotICBHVEVT
VF9URVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAuLi4gfQotCi1pbnN0ZWFkIG9mCi0KLSAgVEVT
VChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KLQotaW4gb3JkZXIgdG8gZGVmaW5lIGEgdGVz
dC4KLQotVXBncmF0aW5nIGZyb20gYW4gRWFybGllciBWZXJzaW9uCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLQotV2Ugc3RyaXZlIHRvIGtlZXAgR29vZ2xlIFRlc3QgcmVsZWFz
ZXMgYmFja3dhcmQgY29tcGF0aWJsZS4KLVNvbWV0aW1lcywgdGhvdWdoLCB3ZSBoYXZlIHRvIG1h
a2Ugc29tZSBicmVha2luZyBjaGFuZ2VzIGZvciB0aGUKLXVzZXJzJyBsb25nLXRlcm0gYmVuZWZp
dHMuICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHdoYXQgeW91J2xsIG5lZWQgdG8KLWRvIGlmIHlv
dSBhcmUgdXBncmFkaW5nIGZyb20gYW4gZWFybGllciB2ZXJzaW9uIG9mIEdvb2dsZSBUZXN0Lgot
Ci0jIyMgVXBncmFkaW5nIGZyb20gMS4zLjAgb3IgRWFybGllciAjIyMKLQotWW91IG1heSBuZWVk
IHRvIGV4cGxpY2l0bHkgZW5hYmxlIG9yIGRpc2FibGUgR29vZ2xlIFRlc3QncyBvd24gVFIxCi10
dXBsZSBsaWJyYXJ5LiAgU2VlIHRoZSBpbnN0cnVjdGlvbnMgaW4gc2VjdGlvbiAiQ2hvb3Npbmcg
YSBUUjEgVHVwbGUKLUxpYnJhcnkiLgotCi0jIyMgVXBncmFkaW5nIGZyb20gMS40LjAgb3IgRWFy
bGllciAjIyMKLQotVGhlIEF1dG90b29scyBidWlsZCBzY3JpcHQgKGNvbmZpZ3VyZSArIG1ha2Up
IGlzIG5vIGxvbmdlciBvZmZpY2lhbGx5Ci1zdXBwb3J0dGVkLiAgWW91IGFyZSBlbmNvdXJhZ2Vk
IHRvIG1pZ3JhdGUgdG8geW91ciBvd24gYnVpbGQgc3lzdGVtIG9yCi11c2UgQ01ha2UuICBJZiB5
b3Ugc3RpbGwgbmVlZCB0byB1c2UgQXV0b3Rvb2xzLCB5b3UgY2FuIGZpbmQKLWluc3RydWN0aW9u
cyBpbiB0aGUgUkVBRE1FIGZpbGUgZnJvbSBHb29nbGUgVGVzdCAxLjQuMC4KLQotT24gcGxhdGZv
cm1zIHdoZXJlIHRoZSBwdGhyZWFkIGxpYnJhcnkgaXMgYXZhaWxhYmxlLCBHb29nbGUgVGVzdCB1
c2VzCi1pdCBpbiBvcmRlciB0byBiZSB0aHJlYWQtc2FmZS4gIFNlZSB0aGUgIk11bHRpLXRocmVh
ZGVkIFRlc3RzIiBzZWN0aW9uCi1mb3Igd2hhdCB0aGlzIG1lYW5zIHRvIHlvdXIgYnVpbGQgc2Ny
aXB0LgotCi1JZiB5b3UgdXNlIE1pY3Jvc29mdCBWaXN1YWwgQysrIDcuMSB3aXRoIGV4Y2VwdGlv
bnMgZGlzYWJsZWQsIEdvb2dsZQotVGVzdCB3aWxsIG5vIGxvbmdlciBjb21waWxlLiAgVGhpcyBz
aG91bGQgYWZmZWN0IHZlcnkgZmV3IHBlb3BsZSwgYXMgYQotbGFyZ2UgcG9ydGlvbiBvZiBTVEwg
KGluY2x1ZGluZyA8c3RyaW5nPikgZG9lc24ndCBjb21waWxlIGluIHRoaXMgbW9kZQotYW55d2F5
LiAgV2UgZGVjaWRlZCB0byBzdG9wIHN1cHBvcnRpbmcgaXQgaW4gb3JkZXIgdG8gZ3JlYXRseSBz
aW1wbGlmeQotR29vZ2xlIFRlc3QncyBpbXBsZW1lbnRhdGlvbi4KLQotRGV2ZWxvcGluZyBHb29n
bGUgVGVzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UaGlzIHNlY3Rpb24gZGlzY3Vzc2Vz
IGhvdyB0byBtYWtlIHlvdXIgb3duIGNoYW5nZXMgdG8gR29vZ2xlIFRlc3QuCi0KLSMjIyBUZXN0
aW5nIEdvb2dsZSBUZXN0IEl0c2VsZiAjIyMKLQotVG8gbWFrZSBzdXJlIHlvdXIgY2hhbmdlcyB3
b3JrIGFzIGludGVuZGVkIGFuZCBkb24ndCBicmVhayBleGlzdGluZwotZnVuY3Rpb25hbGl0eSwg
eW91J2xsIHdhbnQgdG8gY29tcGlsZSBhbmQgcnVuIEdvb2dsZSBUZXN0J3Mgb3duIHRlc3RzLgot
Rm9yIHRoYXQgeW91IGNhbiB1c2UgQ01ha2U6Ci0KLSAgbWtkaXIgbXlidWlsZAotICBjZCBteWJ1
aWxkCi0gIGNtYWtlIC1EYnVpbGRfYWxsX2d0ZXN0X3Rlc3RzPU9OICR7R1RFU1RfRElSfQotCi1N
YWtlIHN1cmUgeW91IGhhdmUgUHl0aG9uIGluc3RhbGxlZCwgYXMgc29tZSBvZiBHb29nbGUgVGVz
dCdzIHRlc3RzCi1hcmUgd3JpdHRlbiBpbiBQeXRob24uICBJZiB0aGUgY21ha2UgY29tbWFuZCBj
b21wbGFpbnMgYWJvdXQgbm90IGJlaW5nCi1hYmxlIHRvIGZpbmQgUHl0aG9uICgiQ291bGQgTk9U
IGZpbmQgUHl0aG9uSW50ZXJwIChtaXNzaW5nOgotUFlUSE9OX0VYRUNVVEFCTEUpIiksIHRyeSB0
ZWxsaW5nIGl0IGV4cGxpY2l0bHkgd2hlcmUgeW91ciBQeXRob24KLWV4ZWN1dGFibGUgY2FuIGJl
IGZvdW5kOgotCi0gIGNtYWtlIC1EUFlUSE9OX0VYRUNVVEFCTEU9cGF0aC90by9weXRob24gLURi
dWlsZF9hbGxfZ3Rlc3RfdGVzdHM9T04gXAotICAgICAgJHtHVEVTVF9ESVJ9Ci0KLU5leHQsIHlv
dSBjYW4gYnVpbGQgR29vZ2xlIFRlc3QgYW5kIGFsbCBvZiBpdHMgb3duIHRlc3RzLiAgT24gKm5p
eCwKLXRoaXMgaXMgdXN1YWxseSBkb25lIGJ5ICdtYWtlJy4gIFRvIHJ1biB0aGUgdGVzdHMsIGRv
Ci0KLSAgbWFrZSB0ZXN0Ci0KLUFsbCB0ZXN0cyBzaG91bGQgcGFzcy4KLQotIyMjIFJlZ2VuZXJh
dGluZyBTb3VyY2UgRmlsZXMgIyMjCi0KLVNvbWUgb2YgR29vZ2xlIFRlc3QncyBzb3VyY2UgZmls
ZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRlbXBsYXRlcyAobm90Ci1pbiB0aGUgQysrIHNlbnNlKSB1
c2luZyBhIHNjcmlwdC4gIEEgdGVtcGxhdGUgZmlsZSBpcyBuYW1lZCBGT08ucHVtcCwKLXdoZXJl
IEZPTyBpcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSBpdCB3aWxsIGdlbmVyYXRlLiAgRm9yIGV4YW1w
bGUsIHRoZQotZmlsZSBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oLnB1
bXAgaXMgdXNlZCB0byBnZW5lcmF0ZQotZ3Rlc3QtdHlwZS11dGlsLmggaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgotCi1Ob3JtYWxseSB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCByZWdlbmVy
YXRpbmcgdGhlIHNvdXJjZSBmaWxlcywKLXVubGVzcyB5b3UgbmVlZCB0byBtb2RpZnkgdGhlbS4g
IEluIHRoYXQgY2FzZSwgeW91IHNob3VsZCBtb2RpZnkgdGhlCi1jb3JyZXNwb25kaW5nIC5wdW1w
IGZpbGVzIGluc3RlYWQgYW5kIHJ1biB0aGUgcHVtcC5weSBQeXRob24gc2NyaXB0IHRvCi1yZWdl
bmVyYXRlIHRoZW0uICBZb3UgY2FuIGZpbmQgcHVtcC5weSBpbiB0aGUgc2NyaXB0cy8gZGlyZWN0
b3J5LgotUmVhZCB0aGUgUHVtcCBtYW51YWwgWzJdIGZvciBob3cgdG8gdXNlIGl0LgotCi0gIFsy
XSBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL1B1bXBNYW51YWwKLQot
IyMjIENvbnRyaWJ1dGluZyBhIFBhdGNoICMjIwotCi1XZSB3ZWxjb21lIHBhdGNoZXMuICBQbGVh
c2UgcmVhZCB0aGUgR29vZ2xlIFRlc3QgZGV2ZWxvcGVyJ3MgZ3VpZGUgWzNdCi1mb3IgaG93IHlv
dSBjYW4gY29udHJpYnV0ZS4gIEluIHBhcnRpY3VsYXIsIG1ha2Ugc3VyZSB5b3UgaGF2ZSBzaWdu
ZWQKLXRoZSBDb250cmlidXRvciBMaWNlbnNlIEFncmVlbWVudCwgb3Igd2Ugd29uJ3QgYmUgYWJs
ZSB0byBhY2NlcHQgdGhlCi1wYXRjaC4KLQotICBbM10gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L2dvb2dsZXRlc3Qvd2lraS9Hb29nbGVUZXN0RGV2R3VpZGUKLQotSGFwcHkgdGVzdGluZyEKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5XZWJLaXQgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9SRUFETUUuV2ViS2l0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2YTMxOGZmNjJlMzI0OWM4ZTY1MzIwOTNmNDBlM2NiNDFjMTVmOWFjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L1JFQURNRS5XZWJLaXQKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1HVGVzdCB2
LjEuNS4wCi0KLWh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90YWdzL3JlbGVh
c2UtMS41LjAvIAotCi0yMDE2LTAxLTAyIFRpbmctV2VpIExhbiAobGFudHc0NEBnbWFpbC5jb20p
Ci0gICAgICBSZW1vdmUgdXNhZ2Ugb2YgZW52aXJvbiBnbG9iYWwgdmFyaWFibGUgdG8gZml4IHRo
ZSBidWlsZCBvbiBGcmVlQlNELgotCi0yMDEyLTAxLTA0IERtaXRyeSBMb21vdiAoZHNsb21vdkBn
b29nbGUuY29tKSAgRGF2aWQgS2lsemVyIChkZGtpbHplckBhcHBsZS5jb20pCi0gICAgICAtIFdl
YktpdCBwb3J0IG9mIGd0ZXN0IHVzZXMgRmFzdE1hbGxvYyAibmV3IiBhbmQgImRlbGV0ZSIgb3Bl
cmF0b3JzIGZyb20gSmF2YVNjcmlwdENvcmUuCi0gICAgICAtIFRoZSBndGVzdC5mcmFtZXdvcmsg
dGFyZ2V0IG5vdyBsaW5rcyB0byBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsuCi0KLTIwMTEtMTIt
MjIgRGF2aWQgS2lsemVyIChkZGtpbHplckBhcHBsZS5jb20pCi0gICAgICBBZGRlZCBQcm9kdWN0
aW9uIGNvbmZpZ3VyYXRpb24gdG8gZ3Rlc3QgWGNvZGUgcHJvamVjdC4KLQotMjAxMS0wNS0wNiBE
bWl0cnkgTG9tb3YgKGRzbG9tb3ZAZ29vZ2xlLmNvbSkKLSAgICAgIGd0ZXN0LW1kLnZjcHJvaiB1
cGdyYWRlZCB0byBWUyAyMDA1ICg4LjApIGZvcm1hdCB0byBtYXRjaCB0aGUgcmVzdCBvZiBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5tZCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzBmZTgwNDcxMjdiZWUx
NmQyYzcxZjE0YjUwOWYzNzU3MWFkZDQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMzQxIEBACisjIyMgR2VuZXJpYyBCdWls
ZCBJbnN0cnVjdGlvbnMKKworIyMjIyBTZXR1cAorCitUbyBidWlsZCBHb29nbGUgVGVzdCBhbmQg
eW91ciB0ZXN0cyB0aGF0IHVzZSBpdCwgeW91IG5lZWQgdG8gdGVsbCB5b3VyIGJ1aWxkCitzeXN0
ZW0gd2hlcmUgdG8gZmluZCBpdHMgaGVhZGVycyBhbmQgc291cmNlIGZpbGVzLiBUaGUgZXhhY3Qg
d2F5IHRvIGRvIGl0CitkZXBlbmRzIG9uIHdoaWNoIGJ1aWxkIHN5c3RlbSB5b3UgdXNlLCBhbmQg
aXMgdXN1YWxseSBzdHJhaWdodGZvcndhcmQuCisKKyMjIyMgQnVpbGQKKworU3VwcG9zZSB5b3Ug
cHV0IEdvb2dsZSBUZXN0IGluIGRpcmVjdG9yeSBgJHtHVEVTVF9ESVJ9YC4gVG8gYnVpbGQgaXQs
IGNyZWF0ZSBhCitsaWJyYXJ5IGJ1aWxkIHRhcmdldCAob3IgYSBwcm9qZWN0IGFzIGNhbGxlZCBi
eSBWaXN1YWwgU3R1ZGlvIGFuZCBYY29kZSkgdG8KK2NvbXBpbGUKKworICAgICR7R1RFU1RfRElS
fS9zcmMvZ3Rlc3QtYWxsLmNjCisKK3dpdGggYCR7R1RFU1RfRElSfS9pbmNsdWRlYCBpbiB0aGUg
c3lzdGVtIGhlYWRlciBzZWFyY2ggcGF0aCBhbmQgYCR7R1RFU1RfRElSfWAKK2luIHRoZSBub3Jt
YWwgaGVhZGVyIHNlYXJjaCBwYXRoLiBBc3N1bWluZyBhIExpbnV4LWxpa2Ugc3lzdGVtIGFuZCBn
Y2MsCitzb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nIHdpbGwgZG86CisKKyAgICBnKysgLWlz
eXN0ZW0gJHtHVEVTVF9ESVJ9L2luY2x1ZGUgLUkke0dURVNUX0RJUn0gXAorICAgICAgICAtcHRo
cmVhZCAtYyAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LWFsbC5jYworICAgIGFyIC1ydiBsaWJndGVz
dC5hIGd0ZXN0LWFsbC5vCisKKyhXZSBuZWVkIGAtcHRocmVhZGAgYXMgR29vZ2xlIFRlc3QgdXNl
cyB0aHJlYWRzLikKKworTmV4dCwgeW91IHNob3VsZCBjb21waWxlIHlvdXIgdGVzdCBzb3VyY2Ug
ZmlsZSB3aXRoIGAke0dURVNUX0RJUn0vaW5jbHVkZWAgaW4KK3RoZSBzeXN0ZW0gaGVhZGVyIHNl
YXJjaCBwYXRoLCBhbmQgbGluayBpdCB3aXRoIGd0ZXN0IGFuZCBhbnkgb3RoZXIgbmVjZXNzYXJ5
CitsaWJyYXJpZXM6CisKKyAgICBnKysgLWlzeXN0ZW0gJHtHVEVTVF9ESVJ9L2luY2x1ZGUgLXB0
aHJlYWQgcGF0aC90by95b3VyX3Rlc3QuY2MgbGliZ3Rlc3QuYSBcCisgICAgICAgIC1vIHlvdXJf
dGVzdAorCitBcyBhbiBleGFtcGxlLCB0aGUgbWFrZS8gZGlyZWN0b3J5IGNvbnRhaW5zIGEgTWFr
ZWZpbGUgdGhhdCB5b3UgY2FuIHVzZSB0byBidWlsZAorR29vZ2xlIFRlc3Qgb24gc3lzdGVtcyB3
aGVyZSBHTlUgbWFrZSBpcyBhdmFpbGFibGUgKGUuZy4gTGludXgsIE1hYyBPUyBYLCBhbmQKK0N5
Z3dpbikuIEl0IGRvZXNuJ3QgdHJ5IHRvIGJ1aWxkIEdvb2dsZSBUZXN0J3Mgb3duIHRlc3RzLiBJ
bnN0ZWFkLCBpdCBqdXN0CitidWlsZHMgdGhlIEdvb2dsZSBUZXN0IGxpYnJhcnkgYW5kIGEgc2Ft
cGxlIHRlc3QuIFlvdSBjYW4gdXNlIGl0IGFzIGEgc3RhcnRpbmcKK3BvaW50IGZvciB5b3VyIG93
biBidWlsZCBzY3JpcHQuCisKK0lmIHRoZSBkZWZhdWx0IHNldHRpbmdzIGFyZSBjb3JyZWN0IGZv
ciB5b3VyIGVudmlyb25tZW50LCB0aGUgZm9sbG93aW5nIGNvbW1hbmRzCitzaG91bGQgc3VjY2Vl
ZDoKKworICAgIGNkICR7R1RFU1RfRElSfS9tYWtlCisgICAgbWFrZQorICAgIC4vc2FtcGxlMV91
bml0dGVzdAorCitJZiB5b3Ugc2VlIGVycm9ycywgdHJ5IHRvIHR3ZWFrIHRoZSBjb250ZW50cyBv
ZiBgbWFrZS9NYWtlZmlsZWAgdG8gbWFrZSB0aGVtIGdvCithd2F5LiBUaGVyZSBhcmUgaW5zdHJ1
Y3Rpb25zIGluIGBtYWtlL01ha2VmaWxlYCBvbiBob3cgdG8gZG8gaXQuCisKKyMjIyBVc2luZyBD
TWFrZQorCitHb29nbGUgVGVzdCBjb21lcyB3aXRoIGEgQ01ha2UgYnVpbGQgc2NyaXB0ICgKK1tD
TWFrZUxpc3RzLnR4dF0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2Iv
bWFzdGVyL0NNYWtlTGlzdHMudHh0KSkKK3RoYXQgY2FuIGJlIHVzZWQgb24gYSB3aWRlIHJhbmdl
IG9mIHBsYXRmb3JtcyAoIkMiIHN0YW5kcyBmb3IgY3Jvc3MtcGxhdGZvcm0uKS4KK0lmIHlvdSBk
b24ndCBoYXZlIENNYWtlIGluc3RhbGxlZCBhbHJlYWR5LCB5b3UgY2FuIGRvd25sb2FkIGl0IGZv
ciBmcmVlIGZyb20KKzxodHRwOi8vd3d3LmNtYWtlLm9yZy8+LgorCitDTWFrZSB3b3JrcyBieSBn
ZW5lcmF0aW5nIG5hdGl2ZSBtYWtlZmlsZXMgb3IgYnVpbGQgcHJvamVjdHMgdGhhdCBjYW4gYmUg
dXNlZCBpbgordGhlIGNvbXBpbGVyIGVudmlyb25tZW50IG9mIHlvdXIgY2hvaWNlLiBZb3UgY2Fu
IGVpdGhlciBidWlsZCBHb29nbGUgVGVzdCBhcyBhCitzdGFuZGFsb25lIHByb2plY3Qgb3IgaXQg
Y2FuIGJlIGluY29ycG9yYXRlZCBpbnRvIGFuIGV4aXN0aW5nIENNYWtlIGJ1aWxkIGZvcgorYW5v
dGhlciBwcm9qZWN0LgorCisjIyMjIFN0YW5kYWxvbmUgQ01ha2UgUHJvamVjdAorCitXaGVuIGJ1
aWxkaW5nIEdvb2dsZSBUZXN0IGFzIGEgc3RhbmRhbG9uZSBwcm9qZWN0LCB0aGUgdHlwaWNhbCB3
b3JrZmxvdyBzdGFydHMKK3dpdGg6CisKKyAgICBta2RpciBteWJ1aWxkICAgICAgICMgQ3JlYXRl
IGEgZGlyZWN0b3J5IHRvIGhvbGQgdGhlIGJ1aWxkIG91dHB1dC4KKyAgICBjZCBteWJ1aWxkCisg
ICAgY21ha2UgJHtHVEVTVF9ESVJ9ICAjIEdlbmVyYXRlIG5hdGl2ZSBidWlsZCBzY3JpcHRzLgor
CitJZiB5b3Ugd2FudCB0byBidWlsZCBHb29nbGUgVGVzdCdzIHNhbXBsZXMsIHlvdSBzaG91bGQg
cmVwbGFjZSB0aGUgbGFzdCBjb21tYW5kCit3aXRoCisKKyAgICBjbWFrZSAtRGd0ZXN0X2J1aWxk
X3NhbXBsZXM9T04gJHtHVEVTVF9ESVJ9CisKK0lmIHlvdSBhcmUgb24gYSBcKm5peCBzeXN0ZW0s
IHlvdSBzaG91bGQgbm93IHNlZSBhIE1ha2VmaWxlIGluIHRoZSBjdXJyZW50CitkaXJlY3Rvcnku
IEp1c3QgdHlwZSAnbWFrZScgdG8gYnVpbGQgZ3Rlc3QuCisKK0lmIHlvdSB1c2UgV2luZG93cyBh
bmQgaGF2ZSBWaXN1YWwgU3R1ZGlvIGluc3RhbGxlZCwgYSBgZ3Rlc3Quc2xuYCBmaWxlIGFuZAor
c2V2ZXJhbCBgLnZjcHJvamAgZmlsZXMgd2lsbCBiZSBjcmVhdGVkLiBZb3UgY2FuIHRoZW4gYnVp
bGQgdGhlbSB1c2luZyBWaXN1YWwKK1N0dWRpby4KKworT24gTWFjIE9TIFggd2l0aCBYY29kZSBp
bnN0YWxsZWQsIGEgYC54Y29kZXByb2pgIGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQuCisKKyMjIyMg
SW5jb3Jwb3JhdGluZyBJbnRvIEFuIEV4aXN0aW5nIENNYWtlIFByb2plY3QKKworSWYgeW91IHdh
bnQgdG8gdXNlIGd0ZXN0IGluIGEgcHJvamVjdCB3aGljaCBhbHJlYWR5IHVzZXMgQ01ha2UsIHRo
ZW4gYSBtb3JlCityb2J1c3QgYW5kIGZsZXhpYmxlIGFwcHJvYWNoIGlzIHRvIGJ1aWxkIGd0ZXN0
IGFzIHBhcnQgb2YgdGhhdCBwcm9qZWN0IGRpcmVjdGx5LgorVGhpcyBpcyBkb25lIGJ5IG1ha2lu
ZyB0aGUgR29vZ2xlVGVzdCBzb3VyY2UgY29kZSBhdmFpbGFibGUgdG8gdGhlIG1haW4gYnVpbGQK
K2FuZCBhZGRpbmcgaXQgdXNpbmcgQ01ha2UncyBgYWRkX3N1YmRpcmVjdG9yeSgpYCBjb21tYW5k
LiBUaGlzIGhhcyB0aGUKK3NpZ25pZmljYW50IGFkdmFudGFnZSB0aGF0IHRoZSBzYW1lIGNvbXBp
bGVyIGFuZCBsaW5rZXIgc2V0dGluZ3MgYXJlIHVzZWQKK2JldHdlZW4gZ3Rlc3QgYW5kIHRoZSBy
ZXN0IG9mIHlvdXIgcHJvamVjdCwgc28gaXNzdWVzIGFzc29jaWF0ZWQgd2l0aCB1c2luZworaW5j
b21wYXRpYmxlIGxpYnJhcmllcyAoZWcgZGVidWcvcmVsZWFzZSksIGV0Yy4gYXJlIGF2b2lkZWQu
IFRoaXMgaXMKK3BhcnRpY3VsYXJseSB1c2VmdWwgb24gV2luZG93cy4gTWFraW5nIEdvb2dsZVRl
c3QncyBzb3VyY2UgY29kZSBhdmFpbGFibGUgdG8gdGhlCittYWluIGJ1aWxkIGNhbiBiZSBkb25l
IGEgZmV3IGRpZmZlcmVudCB3YXlzOgorCisqICAgRG93bmxvYWQgdGhlIEdvb2dsZVRlc3Qgc291
cmNlIGNvZGUgbWFudWFsbHkgYW5kIHBsYWNlIGl0IGF0IGEga25vd24KKyAgICBsb2NhdGlvbi4g
VGhpcyBpcyB0aGUgbGVhc3QgZmxleGlibGUgYXBwcm9hY2ggYW5kIGNhbiBtYWtlIGl0IG1vcmUg
ZGlmZmljdWx0CisgICAgdG8gdXNlIHdpdGggY29udGludW91cyBpbnRlZ3JhdGlvbiBzeXN0ZW1z
LCBldGMuCisqICAgRW1iZWQgdGhlIEdvb2dsZVRlc3Qgc291cmNlIGNvZGUgYXMgYSBkaXJlY3Qg
Y29weSBpbiB0aGUgbWFpbiBwcm9qZWN0J3MKKyAgICBzb3VyY2UgdHJlZS4gVGhpcyBpcyBvZnRl
biB0aGUgc2ltcGxlc3QgYXBwcm9hY2gsIGJ1dCBpcyBhbHNvIHRoZSBoYXJkZXN0IHRvCisgICAg
a2VlcCB1cCB0byBkYXRlLiBTb21lIG9yZ2FuaXphdGlvbnMgbWF5IG5vdCBwZXJtaXQgdGhpcyBt
ZXRob2QuCisqICAgQWRkIEdvb2dsZVRlc3QgYXMgYSBnaXQgc3VibW9kdWxlIG9yIGVxdWl2YWxl
bnQuIFRoaXMgbWF5IG5vdCBhbHdheXMgYmUKKyAgICBwb3NzaWJsZSBvciBhcHByb3ByaWF0ZS4g
R2l0IHN1Ym1vZHVsZXMsIGZvciBleGFtcGxlLCBoYXZlIHRoZWlyIG93biBzZXQgb2YKKyAgICBh
ZHZhbnRhZ2VzIGFuZCBkcmF3YmFja3MuCisqICAgVXNlIENNYWtlIHRvIGRvd25sb2FkIEdvb2ds
ZVRlc3QgYXMgcGFydCBvZiB0aGUgYnVpbGQncyBjb25maWd1cmUgc3RlcC4gVGhpcworICAgIGlz
IGp1c3QgYSBsaXR0bGUgbW9yZSBjb21wbGV4LCBidXQgZG9lc24ndCBoYXZlIHRoZSBsaW1pdGF0
aW9ucyBvZiB0aGUgb3RoZXIKKyAgICBtZXRob2RzLgorCitUaGUgbGFzdCBvZiB0aGUgYWJvdmUg
bWV0aG9kcyBpcyBpbXBsZW1lbnRlZCB3aXRoIGEgc21hbGwgcGllY2Ugb2YgQ01ha2UgY29kZSBp
bgorYSBzZXBhcmF0ZSBmaWxlIChlLmcuIGBDTWFrZUxpc3RzLnR4dC5pbmApIHdoaWNoIGlzIGNv
cGllZCB0byB0aGUgYnVpbGQgYXJlYSBhbmQKK3RoZW4gaW52b2tlZCBhcyBhIHN1Yi1idWlsZCBf
ZHVyaW5nIHRoZSBDTWFrZSBzdGFnZV8uIFRoYXQgZGlyZWN0b3J5IGlzIHRoZW4KK3B1bGxlZCBp
bnRvIHRoZSBtYWluIGJ1aWxkIHdpdGggYGFkZF9zdWJkaXJlY3RvcnkoKWAuIEZvciBleGFtcGxl
OgorCitOZXcgZmlsZSBgQ01ha2VMaXN0cy50eHQuaW5gOgorCisgICAgY21ha2VfbWluaW11bV9y
ZXF1aXJlZChWRVJTSU9OIDIuOC4yKQorCisgICAgcHJvamVjdChnb29nbGV0ZXN0LWRvd25sb2Fk
IE5PTkUpCisKKyAgICBpbmNsdWRlKEV4dGVybmFsUHJvamVjdCkKKyAgICBFeHRlcm5hbFByb2pl
Y3RfQWRkKGdvb2dsZXRlc3QKKyAgICAgIEdJVF9SRVBPU0lUT1JZICAgIGh0dHBzOi8vZ2l0aHVi
LmNvbS9nb29nbGUvZ29vZ2xldGVzdC5naXQKKyAgICAgIEdJVF9UQUcgICAgICAgICAgIG1hc3Rl
cgorICAgICAgU09VUkNFX0RJUiAgICAgICAgIiR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVz
dC1zcmMiCisgICAgICBCSU5BUllfRElSICAgICAgICAiJHtDTUFLRV9CSU5BUllfRElSfS9nb29n
bGV0ZXN0LWJ1aWxkIgorICAgICAgQ09ORklHVVJFX0NPTU1BTkQgIiIKKyAgICAgIEJVSUxEX0NP
TU1BTkQgICAgICIiCisgICAgICBJTlNUQUxMX0NPTU1BTkQgICAiIgorICAgICAgVEVTVF9DT01N
QU5EICAgICAgIiIKKyAgICApCisKK0V4aXN0aW5nIGJ1aWxkJ3MgYENNYWtlTGlzdHMudHh0YDoK
KworICAgICMgRG93bmxvYWQgYW5kIHVucGFjayBnb29nbGV0ZXN0IGF0IGNvbmZpZ3VyZSB0aW1l
CisgICAgY29uZmlndXJlX2ZpbGUoQ01ha2VMaXN0cy50eHQuaW4gZ29vZ2xldGVzdC1kb3dubG9h
ZC9DTWFrZUxpc3RzLnR4dCkKKyAgICBleGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAke0NNQUtFX0NP
TU1BTkR9IC1HICIke0NNQUtFX0dFTkVSQVRPUn0iIC4KKyAgICAgIFJFU1VMVF9WQVJJQUJMRSBy
ZXN1bHQKKyAgICAgIFdPUktJTkdfRElSRUNUT1JZICR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xl
dGVzdC1kb3dubG9hZCApCisgICAgaWYocmVzdWx0KQorICAgICAgbWVzc2FnZShGQVRBTF9FUlJP
UiAiQ01ha2Ugc3RlcCBmb3IgZ29vZ2xldGVzdCBmYWlsZWQ6ICR7cmVzdWx0fSIpCisgICAgZW5k
aWYoKQorICAgIGV4ZWN1dGVfcHJvY2VzcyhDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLS1idWls
ZCAuCisgICAgICBSRVNVTFRfVkFSSUFCTEUgcmVzdWx0CisgICAgICBXT1JLSU5HX0RJUkVDVE9S
WSAke0NNQUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3QtZG93bmxvYWQgKQorICAgIGlmKHJlc3Vs
dCkKKyAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkJ1aWxkIHN0ZXAgZm9yIGdvb2dsZXRlc3Qg
ZmFpbGVkOiAke3Jlc3VsdH0iKQorICAgIGVuZGlmKCkKKworICAgICMgUHJldmVudCBvdmVycmlk
aW5nIHRoZSBwYXJlbnQgcHJvamVjdCdzIGNvbXBpbGVyL2xpbmtlcgorICAgICMgc2V0dGluZ3Mg
b24gV2luZG93cworICAgIHNldChndGVzdF9mb3JjZV9zaGFyZWRfY3J0IE9OIENBQ0hFIEJPT0wg
IiIgRk9SQ0UpCisKKyAgICAjIEFkZCBnb29nbGV0ZXN0IGRpcmVjdGx5IHRvIG91ciBidWlsZC4g
VGhpcyBkZWZpbmVzCisgICAgIyB0aGUgZ3Rlc3QgYW5kIGd0ZXN0X21haW4gdGFyZ2V0cy4KKyAg
ICBhZGRfc3ViZGlyZWN0b3J5KCR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1zcmMKKyAg
ICAgICAgICAgICAgICAgICAgICR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1idWlsZAor
ICAgICAgICAgICAgICAgICAgICAgRVhDTFVERV9GUk9NX0FMTCkKKworICAgICMgVGhlIGd0ZXN0
L2d0ZXN0X21haW4gdGFyZ2V0cyBjYXJyeSBoZWFkZXIgc2VhcmNoIHBhdGgKKyAgICAjIGRlcGVu
ZGVuY2llcyBhdXRvbWF0aWNhbGx5IHdoZW4gdXNpbmcgQ01ha2UgMi44LjExIG9yCisgICAgIyBs
YXRlci4gT3RoZXJ3aXNlIHdlIGhhdmUgdG8gYWRkIHRoZW0gaGVyZSBvdXJzZWx2ZXMuCisgICAg
aWYgKENNQUtFX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDIuOC4xMSkKKyAgICAgIGluY2x1ZGVfZGly
ZWN0b3JpZXMoIiR7Z3Rlc3RfU09VUkNFX0RJUn0vaW5jbHVkZSIpCisgICAgZW5kaWYoKQorCisg
ICAgIyBOb3cgc2ltcGx5IGxpbmsgYWdhaW5zdCBndGVzdCBvciBndGVzdF9tYWluIGFzIG5lZWRl
ZC4gRWcKKyAgICBhZGRfZXhlY3V0YWJsZShleGFtcGxlIGV4YW1wbGUuY3BwKQorICAgIHRhcmdl
dF9saW5rX2xpYnJhcmllcyhleGFtcGxlIGd0ZXN0X21haW4pCisgICAgYWRkX3Rlc3QoTkFNRSBl
eGFtcGxlX3Rlc3QgQ09NTUFORCBleGFtcGxlKQorCitOb3RlIHRoYXQgdGhpcyBhcHByb2FjaCBy
ZXF1aXJlcyBDTWFrZSAyLjguMiBvciBsYXRlciBkdWUgdG8gaXRzIHVzZSBvZiB0aGUKK2BFeHRl
cm5hbFByb2plY3RfQWRkKClgIGNvbW1hbmQuIFRoZSBhYm92ZSB0ZWNobmlxdWUgaXMgZGlzY3Vz
c2VkIGluIG1vcmUgZGV0YWlsCitpbiBbdGhpcyBzZXBhcmF0ZSBhcnRpY2xlXShodHRwOi8vY3Jh
c2NpdC5jb20vMjAxNS8wNy8yNS9jbWFrZS1ndGVzdC8pIHdoaWNoCithbHNvIGNvbnRhaW5zIGEg
bGluayB0byBhIGZ1bGx5IGdlbmVyYWxpemVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSB0ZWNobmlx
dWUuCisKKyMjIyMjIFZpc3VhbCBTdHVkaW8gRHluYW1pYyB2cyBTdGF0aWMgUnVudGltZXMKKwor
QnkgZGVmYXVsdCwgbmV3IFZpc3VhbCBTdHVkaW8gcHJvamVjdHMgbGluayB0aGUgQyBydW50aW1l
cyBkeW5hbWljYWxseSBidXQKK0dvb2dsZSBUZXN0IGxpbmtzIHRoZW0gc3RhdGljYWxseS4gVGhp
cyB3aWxsIGdlbmVyYXRlIGFuIGVycm9yIHRoYXQgbG9va3MKK3NvbWV0aGluZyBsaWtlIHRoZSBm
b2xsb3dpbmc6IGd0ZXN0LmxpYihndGVzdC1hbGwub2JqKSA6IGVycm9yIExOSzIwMzg6IG1pc21h
dGNoCitkZXRlY3RlZCBmb3IgJ1J1bnRpbWVMaWJyYXJ5JzogdmFsdWUgJ01UZF9TdGF0aWNEZWJ1
ZycgZG9lc24ndCBtYXRjaCB2YWx1ZQorJ01EZF9EeW5hbWljRGVidWcnIGluIG1haW4ub2JqCisK
K0dvb2dsZSBUZXN0IGFscmVhZHkgaGFzIGEgQ01ha2Ugb3B0aW9uIGZvciB0aGlzOiBgZ3Rlc3Rf
Zm9yY2Vfc2hhcmVkX2NydGAKKworRW5hYmxpbmcgdGhpcyBvcHRpb24gd2lsbCBtYWtlIGd0ZXN0
IGxpbmsgdGhlIHJ1bnRpbWVzIGR5bmFtaWNhbGx5IHRvbywgYW5kCittYXRjaCB0aGUgcHJvamVj
dCBpbiB3aGljaCBpdCBpcyBpbmNsdWRlZC4KKworIyMjIExlZ2FjeSBCdWlsZCBTY3JpcHRzCisK
K0JlZm9yZSBzZXR0bGluZyBvbiBDTWFrZSwgd2UgaGF2ZSBiZWVuIHByb3ZpZGluZyBoYW5kLW1h
aW50YWluZWQgYnVpbGQKK3Byb2plY3RzL3NjcmlwdHMgZm9yIFZpc3VhbCBTdHVkaW8sIFhjb2Rl
LCBhbmQgQXV0b3Rvb2xzLiBXaGlsZSB3ZSBjb250aW51ZSB0bworcHJvdmlkZSB0aGVtIGZvciBj
b252ZW5pZW5jZSwgdGhleSBhcmUgbm90IGFjdGl2ZWx5IG1haW50YWluZWQgYW55IG1vcmUuIFdl
CitoaWdobHkgcmVjb21tZW5kIHRoYXQgeW91IGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRo
ZSBhYm92ZSBzZWN0aW9ucyB0bworaW50ZWdyYXRlIEdvb2dsZSBUZXN0IHdpdGggeW91ciBleGlz
dGluZyBidWlsZCBzeXN0ZW0uCisKK0lmIHlvdSBzdGlsbCBuZWVkIHRvIHVzZSB0aGUgbGVnYWN5
IGJ1aWxkIHNjcmlwdHMsIGhlcmUncyBob3c6CisKK1RoZSBtc3ZjXCBmb2xkZXIgY29udGFpbnMg
dHdvIHNvbHV0aW9ucyB3aXRoIFZpc3VhbCBDKysgcHJvamVjdHMuIE9wZW4gdGhlCitgZ3Rlc3Qu
c2xuYCBvciBgZ3Rlc3QtbWQuc2xuYCBmaWxlIHVzaW5nIFZpc3VhbCBTdHVkaW8sIGFuZCB5b3Ug
YXJlIHJlYWR5IHRvCitidWlsZCBHb29nbGUgVGVzdCB0aGUgc2FtZSB3YXkgeW91IGJ1aWxkIGFu
eSBWaXN1YWwgU3R1ZGlvIHByb2plY3QuIEZpbGVzIHRoYXQKK2hhdmUgbmFtZXMgZW5kaW5nIHdp
dGggLW1kIHVzZSBETEwgdmVyc2lvbnMgb2YgTWljcm9zb2Z0IHJ1bnRpbWUgbGlicmFyaWVzICh0
aGUKKy9NRCBvciB0aGUgL01EZCBjb21waWxlciBvcHRpb24pLiBGaWxlcyB3aXRob3V0IHRoYXQg
c3VmZml4IHVzZSBzdGF0aWMgdmVyc2lvbnMKK29mIHRoZSBydW50aW1lIGxpYnJhcmllcyAodGhl
IC9NVCBvciB0aGUgL01UZCBvcHRpb24pLiBQbGVhc2Ugbm90ZSB0aGF0IG9uZSBtdXN0Cit1c2Ug
dGhlIHNhbWUgb3B0aW9uIHRvIGNvbXBpbGUgYm90aCBndGVzdCBhbmQgdGhlIHRlc3QgY29kZS4g
SWYgeW91IHVzZSBWaXN1YWwKK1N0dWRpbyAyMDA1IG9yIGFib3ZlLCB3ZSByZWNvbW1lbmQgdGhl
IC1tZCB2ZXJzaW9uIGFzIC9NRCBpcyB0aGUgZGVmYXVsdCBmb3IgbmV3Citwcm9qZWN0cyBpbiB0
aGVzZSB2ZXJzaW9ucyBvZiBWaXN1YWwgU3R1ZGlvLgorCitPbiBNYWMgT1MgWCwgb3BlbiB0aGUg
YGd0ZXN0Lnhjb2RlcHJvamAgaW4gdGhlIGB4Y29kZS9gIGZvbGRlciB1c2luZyBYY29kZS4KK0J1
aWxkIHRoZSAiZ3Rlc3QiIHRhcmdldC4gVGhlIHVuaXZlcnNhbCBiaW5hcnkgZnJhbWV3b3JrIHdp
bGwgZW5kIHVwIGluIHlvdXIKK3NlbGVjdGVkIGJ1aWxkIGRpcmVjdG9yeSAoc2VsZWN0ZWQgaW4g
dGhlIFhjb2RlICJQcmVmZXJlbmNlcy4uLiIgLT4gIkJ1aWxkaW5nIgorcGFuZSBhbmQgZGVmYXVs
dHMgdG8geGNvZGUvYnVpbGQpLiBBbHRlcm5hdGl2ZWx5LCBhdCB0aGUgY29tbWFuZCBsaW5lLCBl
bnRlcjoKKworICAgIHhjb2RlYnVpbGQKKworVGhpcyB3aWxsIGJ1aWxkIHRoZSAiUmVsZWFzZSIg
Y29uZmlndXJhdGlvbiBvZiBndGVzdC5mcmFtZXdvcmsgaW4geW91ciBkZWZhdWx0CitidWlsZCBs
b2NhdGlvbi4gU2VlIHRoZSAieGNvZGVidWlsZCIgbWFuIHBhZ2UgZm9yIG1vcmUgaW5mb3JtYXRp
b24gYWJvdXQKK2J1aWxkaW5nIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBhbmQgYnVpbGRpbmcg
aW4gZGlmZmVyZW50IGxvY2F0aW9ucy4KKworSWYgeW91IHdpc2ggdG8gdXNlIHRoZSBHb29nbGUg
VGVzdCBYY29kZSBwcm9qZWN0IHdpdGggWGNvZGUgNC54IGFuZCBhYm92ZSwgeW91CituZWVkIHRv
IGVpdGhlcjoKKworKiAgIHVwZGF0ZSB0aGUgU0RLIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiB4
Y29kZS9Db25maWcvR2VuZXJhbC54Y29uZmlnLgorICAgIENvbW1lbnQgb3B0aW9ucyBgU0RLUk9P
VGAsIGBNQUNPU19ERVBMT1lNRU5UX1RBUkdFVGAsIGFuZCBgR0NDX1ZFUlNJT05gLiBJZgorICAg
IHlvdSBjaG9vc2UgdGhpcyByb3V0ZSB5b3UgbG9zZSB0aGUgYWJpbGl0eSB0byB0YXJnZXQgZWFy
bGllciB2ZXJzaW9ucyBvZgorICAgIE1hY09TIFguCisqICAgSW5zdGFsbCBhbiBTREsgZm9yIGFu
IGVhcmxpZXIgdmVyc2lvbi4gVGhpcyBkb2Vzbid0IGFwcGVhciB0byBiZSBzdXBwb3J0ZWQKKyAg
ICBieSBBcHBsZSwgYnV0IGhhcyBiZWVuIHJlcG9ydGVkIHRvIHdvcmsKKyAgICAoaHR0cDovL3N0
YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81Mzc4NTE4KS4KKworIyMjIFR3ZWFraW5nIEdvb2ds
ZSBUZXN0CisKK0dvb2dsZSBUZXN0IGNhbiBiZSB1c2VkIGluIGRpdmVyc2UgZW52aXJvbm1lbnRz
LiBUaGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIG1heQorbm90IHdvcmsgKG9yIG1heSBub3Qgd29y
ayB3ZWxsKSBvdXQgb2YgdGhlIGJveCBpbiBzb21lIGVudmlyb25tZW50cy4gSG93ZXZlciwKK3lv
dSBjYW4gZWFzaWx5IHR3ZWFrIEdvb2dsZSBUZXN0IGJ5IGRlZmluaW5nIGNvbnRyb2wgbWFjcm9z
IG9uIHRoZSBjb21waWxlcgorY29tbWFuZCBsaW5lLiBHZW5lcmFsbHksIHRoZXNlIG1hY3JvcyBh
cmUgbmFtZWQgbGlrZSBgR1RFU1RfWFlaYCBhbmQgeW91IGRlZmluZQordGhlbSB0byBlaXRoZXIg
MSBvciAwIHRvIGVuYWJsZSBvciBkaXNhYmxlIGEgY2VydGFpbiBmZWF0dXJlLgorCitXZSBsaXN0
IHRoZSBtb3N0IGZyZXF1ZW50bHkgdXNlZCBtYWNyb3MgYmVsb3cuIEZvciBhIGNvbXBsZXRlIGxp
c3QsIHNlZSBmaWxlCitbaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmhdKGh0dHBz
Oi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9ibG9iL21hc3Rlci9pbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LXBvcnQuaCkuCisKKyMjIyBDaG9vc2luZyBhIFRSMSBUdXBsZSBMaWJy
YXJ5CisKK1NvbWUgR29vZ2xlIFRlc3QgZmVhdHVyZXMgcmVxdWlyZSB0aGUgQysrIFRlY2huaWNh
bCBSZXBvcnQgMSAoVFIxKSB0dXBsZQorbGlicmFyeSwgd2hpY2ggaXMgbm90IHlldCBhdmFpbGFi
bGUgd2l0aCBhbGwgY29tcGlsZXJzLiBUaGUgZ29vZCBuZXdzIGlzIHRoYXQKK0dvb2dsZSBUZXN0
IGltcGxlbWVudHMgYSBzdWJzZXQgb2YgVFIxIHR1cGxlIHRoYXQncyBlbm91Z2ggZm9yIGl0cyBv
d24gbmVlZCwgYW5kCit3aWxsIGF1dG9tYXRpY2FsbHkgdXNlIHRoaXMgd2hlbiB0aGUgY29tcGls
ZXIgZG9lc24ndCBwcm92aWRlIFRSMSB0dXBsZS4KKworVXN1YWxseSB5b3UgZG9uJ3QgbmVlZCB0
byBjYXJlIGFib3V0IHdoaWNoIHR1cGxlIGxpYnJhcnkgR29vZ2xlIFRlc3QgdXNlcy4KK0hvd2V2
ZXIsIGlmIHlvdXIgcHJvamVjdCBhbHJlYWR5IHVzZXMgVFIxIHR1cGxlLCB5b3UgbmVlZCB0byB0
ZWxsIEdvb2dsZSBUZXN0IHRvCit1c2UgdGhlIHNhbWUgVFIxIHR1cGxlIGxpYnJhcnkgdGhlIHJl
c3Qgb2YgeW91ciBwcm9qZWN0IHVzZXMsIG9yIHRoZSB0d28gdHVwbGUKK2ltcGxlbWVudGF0aW9u
cyB3aWxsIGNsYXNoLiBUbyBkbyB0aGF0LCBhZGQKKworICAgIC1ER1RFU1RfVVNFX09XTl9UUjFf
VFVQTEU9MAorCit0byB0aGUgY29tcGlsZXIgZmxhZ3Mgd2hpbGUgY29tcGlsaW5nIEdvb2dsZSBU
ZXN0IGFuZCB5b3VyIHRlc3RzLiBJZiB5b3Ugd2FudCB0bworZm9yY2UgR29vZ2xlIFRlc3QgdG8g
dXNlIGl0cyBvd24gdHVwbGUgbGlicmFyeSwganVzdCBhZGQKKworICAgIC1ER1RFU1RfVVNFX09X
Tl9UUjFfVFVQTEU9MQorCit0byB0aGUgY29tcGlsZXIgZmxhZ3MgaW5zdGVhZC4KKworSWYgeW91
IGRvbid0IHdhbnQgR29vZ2xlIFRlc3QgdG8gdXNlIHR1cGxlIGF0IGFsbCwgYWRkCisKKyAgICAt
REdURVNUX0hBU19UUjFfVFVQTEU9MAorCithbmQgYWxsIGZlYXR1cmVzIHVzaW5nIHR1cGxlIHdp
bGwgYmUgZGlzYWJsZWQuCisKKyMjIyBNdWx0aS10aHJlYWRlZCBUZXN0cworCitHb29nbGUgVGVz
dCBpcyB0aHJlYWQtc2FmZSB3aGVyZSB0aGUgcHRocmVhZCBsaWJyYXJ5IGlzIGF2YWlsYWJsZS4g
QWZ0ZXIKK2AjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCJgLCB5b3UgY2FuIGNoZWNrIHRoZSBgR1RF
U1RfSVNfVEhSRUFEU0FGRWAgbWFjcm8gdG8gc2VlCit3aGV0aGVyIHRoaXMgaXMgdGhlIGNhc2Ug
KHllcyBpZiB0aGUgbWFjcm8gaXMgYCNkZWZpbmVkYCB0byAxLCBubyBpZiBpdCdzCit1bmRlZmlu
ZWQuKS4KKworSWYgR29vZ2xlIFRlc3QgZG9lc24ndCBjb3JyZWN0bHkgZGV0ZWN0IHdoZXRoZXIg
cHRocmVhZCBpcyBhdmFpbGFibGUgaW4geW91cgorZW52aXJvbm1lbnQsIHlvdSBjYW4gZm9yY2Ug
aXQgd2l0aAorCisgICAgLURHVEVTVF9IQVNfUFRIUkVBRD0xCisKK29yCisKKyAgICAtREdURVNU
X0hBU19QVEhSRUFEPTAKKworV2hlbiBHb29nbGUgVGVzdCB1c2VzIHB0aHJlYWQsIHlvdSBtYXkg
bmVlZCB0byBhZGQgZmxhZ3MgdG8geW91ciBjb21waWxlciBhbmQvb3IKK2xpbmtlciB0byBzZWxl
Y3QgdGhlIHB0aHJlYWQgbGlicmFyeSwgb3IgeW91J2xsIGdldCBsaW5rIGVycm9ycy4gSWYgeW91
IHVzZSB0aGUKK0NNYWtlIHNjcmlwdCBvciB0aGUgZGVwcmVjYXRlZCBBdXRvdG9vbHMgc2NyaXB0
LCB0aGlzIGlzIHRha2VuIGNhcmUgb2YgZm9yIHlvdS4KK0lmIHlvdSB1c2UgeW91ciBvd24gYnVp
bGQgc2NyaXB0LCB5b3UnbGwgbmVlZCB0byByZWFkIHlvdXIgY29tcGlsZXIgYW5kIGxpbmtlcidz
CittYW51YWwgdG8gZmlndXJlIG91dCB3aGF0IGZsYWdzIHRvIGFkZC4KKworIyMjIEFzIGEgU2hh
cmVkIExpYnJhcnkgKERMTCkKKworR29vZ2xlIFRlc3QgaXMgY29tcGFjdCwgc28gbW9zdCB1c2Vy
cyBjYW4gYnVpbGQgYW5kIGxpbmsgaXQgYXMgYSBzdGF0aWMgbGlicmFyeQorZm9yIHRoZSBzaW1w
bGljaXR5LiBZb3UgY2FuIGNob29zZSB0byB1c2UgR29vZ2xlIFRlc3QgYXMgYSBzaGFyZWQgbGli
cmFyeSAoa25vd24KK2FzIGEgRExMIG9uIFdpbmRvd3MpIGlmIHlvdSBwcmVmZXIuCisKK1RvIGNv
bXBpbGUgKmd0ZXN0KiBhcyBhIHNoYXJlZCBsaWJyYXJ5LCBhZGQKKworICAgIC1ER1RFU1RfQ1JF
QVRFX1NIQVJFRF9MSUJSQVJZPTEKKwordG8gdGhlIGNvbXBpbGVyIGZsYWdzLiBZb3UnbGwgYWxz
byBuZWVkIHRvIHRlbGwgdGhlIGxpbmtlciB0byBwcm9kdWNlIGEgc2hhcmVkCitsaWJyYXJ5IGlu
c3RlYWQgLSBjb25zdWx0IHlvdXIgbGlua2VyJ3MgbWFudWFsIGZvciBob3cgdG8gZG8gaXQuCisK
K1RvIGNvbXBpbGUgeW91ciAqdGVzdHMqIHRoYXQgdXNlIHRoZSBndGVzdCBzaGFyZWQgbGlicmFy
eSwgYWRkCisKKyAgICAtREdURVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFSWT0xCisKK3RvIHRo
ZSBjb21waWxlciBmbGFncy4KKworTm90ZTogd2hpbGUgdGhlIGFib3ZlIHN0ZXBzIGFyZW4ndCB0
ZWNobmljYWxseSBuZWNlc3NhcnkgdG9kYXkgd2hlbiB1c2luZyBzb21lCitjb21waWxlcnMgKGUu
Zy4gR0NDKSwgdGhleSBtYXkgYmVjb21lIG5lY2Vzc2FyeSBpbiB0aGUgZnV0dXJlLCBpZiB3ZSBk
ZWNpZGUgdG8KK2ltcHJvdmUgdGhlIHNwZWVkIG9mIGxvYWRpbmcgdGhlIGxpYnJhcnkgKHNlZQor
PGh0dHA6Ly9nY2MuZ251Lm9yZy93aWtpL1Zpc2liaWxpdHk+IGZvciBkZXRhaWxzKS4gVGhlcmVm
b3JlIHlvdSBhcmUgcmVjb21tZW5kZWQKK3RvIGFsd2F5cyBhZGQgdGhlIGFib3ZlIGZsYWdzIHdo
ZW4gdXNpbmcgR29vZ2xlIFRlc3QgYXMgYSBzaGFyZWQgbGlicmFyeS4KK090aGVyd2lzZSBhIGZ1
dHVyZSByZWxlYXNlIG9mIEdvb2dsZSBUZXN0IG1heSBicmVhayB5b3VyIGJ1aWxkIHNjcmlwdC4K
KworIyMjIEF2b2lkaW5nIE1hY3JvIE5hbWUgQ2xhc2hlcworCitJbiBDKyssIG1hY3JvcyBkb24n
dCBvYmV5IG5hbWVzcGFjZXMuIFRoZXJlZm9yZSB0d28gbGlicmFyaWVzIHRoYXQgYm90aCBkZWZp
bmUgYQorbWFjcm8gb2YgdGhlIHNhbWUgbmFtZSB3aWxsIGNsYXNoIGlmIHlvdSBgI2luY2x1ZGVg
IGJvdGggZGVmaW5pdGlvbnMuIEluIGNhc2UgYQorR29vZ2xlIFRlc3QgbWFjcm8gY2xhc2hlcyB3
aXRoIGFub3RoZXIgbGlicmFyeSwgeW91IGNhbiBmb3JjZSBHb29nbGUgVGVzdCB0bworcmVuYW1l
IGl0cyBtYWNybyB0byBhdm9pZCB0aGUgY29uZmxpY3QuCisKK1NwZWNpZmljYWxseSwgaWYgYm90
aCBHb29nbGUgVGVzdCBhbmQgc29tZSBvdGhlciBjb2RlIGRlZmluZSBtYWNybyBGT08sIHlvdSBj
YW4KK2FkZAorCisgICAgLURHVEVTVF9ET05UX0RFRklORV9GT089MQorCit0byB0aGUgY29tcGls
ZXIgZmxhZ3MgdG8gdGVsbCBHb29nbGUgVGVzdCB0byBjaGFuZ2UgdGhlIG1hY3JvJ3MgbmFtZSBm
cm9tIGBGT09gCit0byBgR1RFU1RfRk9PYC4gQ3VycmVudGx5IGBGT09gIGNhbiBiZSBgRkFJTGAs
IGBTVUNDRUVEYCwgb3IgYFRFU1RgLiBGb3IKK2V4YW1wbGUsIHdpdGggYC1ER1RFU1RfRE9OVF9E
RUZJTkVfVEVTVD0xYCwgeW91J2xsIG5lZWQgdG8gd3JpdGUKKworICAgIEdURVNUX1RFU1QoU29t
ZVRlc3QsIERvZXNUaGlzKSB7IC4uLiB9CisKK2luc3RlYWQgb2YKKworICAgIFRFU1QoU29tZVRl
c3QsIERvZXNUaGlzKSB7IC4uLiB9CisKK2luIG9yZGVyIHRvIGRlZmluZSBhIHRlc3QuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9Db25maWcuY21ha2UuaW4gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9Db25maWcuY21ha2UuaW4KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTJiZTQ0OThiMWEwNzk2ODFhMTI5ZTMxYjE3YzU3ZTE4MTI2YTYzYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL0NvbmZpZy5jbWFrZS5pbgpAQCAtMCww
ICsxLDkgQEAKK0BQQUNLQUdFX0lOSVRACitpbmNsdWRlKENNYWtlRmluZERlcGVuZGVuY3lNYWNy
bykKK2lmIChAR1RFU1RfSEFTX1BUSFJFQURAKQorICBzZXQoVEhSRUFEU19QUkVGRVJfUFRIUkVB
RF9GTEFHIEBUSFJFQURTX1BSRUZFUl9QVEhSRUFEX0ZMQUdAKQorICBmaW5kX2RlcGVuZGVuY3ko
VGhyZWFkcykKK2VuZGlmKCkKKworaW5jbHVkZSgiJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9A
dGFyZ2V0c19leHBvcnRfbmFtZUAuY21ha2UiKQorY2hlY2tfcmVxdWlyZWRfY29tcG9uZW50cygi
QHByb2plY3RfbmFtZUAiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21h
a2UvZ3Rlc3QucGMuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9ndGVzdC5wYy5p
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lNzk2N2FkNTZmZjJjMzJlZDRiYTA2NzAzYWVhNTI1ZGNhZDJjZTdiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvZ3Rlc3QucGMu
aW4KQEAgLTAsMCArMSw5IEBACitsaWJkaXI9QENNQUtFX0lOU1RBTExfRlVMTF9MSUJESVJACitp
bmNsdWRlZGlyPUBDTUFLRV9JTlNUQUxMX0ZVTExfSU5DTFVERURJUkAKKworTmFtZTogZ3Rlc3QK
K0Rlc2NyaXB0aW9uOiBHb29nbGVUZXN0ICh3aXRob3V0IG1haW4oKSBmdW5jdGlvbikKK1ZlcnNp
b246IEBQUk9KRUNUX1ZFUlNJT05ACitVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29v
Z2xldGVzdAorTGliczogLUwke2xpYmRpcn0gLWxndGVzdCBAQ01BS0VfVEhSRUFEX0xJQlNfSU5J
VEAKK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9IEBHVEVTVF9IQVNfUFRIUkVBRF9NQUNST0AgQENN
QUtFX1RIUkVBRF9MSUJTX0lOSVRACmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9jbWFrZS9ndGVzdF9tYWluLnBjLmluIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2Uv
Z3Rlc3RfbWFpbi5wYy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTI1ZDljNzNjNjgzYjY0MTdiOTliYjcwM2Mx
M2FlMTZiYThhOTUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
Y21ha2UvZ3Rlc3RfbWFpbi5wYy5pbgpAQCAtMCwwICsxLDEwIEBACitsaWJkaXI9QENNQUtFX0lO
U1RBTExfRlVMTF9MSUJESVJACitpbmNsdWRlZGlyPUBDTUFLRV9JTlNUQUxMX0ZVTExfSU5DTFVE
RURJUkAKKworTmFtZTogZ3Rlc3RfbWFpbgorRGVzY3JpcHRpb246IEdvb2dsZVRlc3QgKHdpdGgg
bWFpbigpIGZ1bmN0aW9uKQorVmVyc2lvbjogQFBST0pFQ1RfVkVSU0lPTkAKK1VSTDogaHR0cHM6
Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0CitSZXF1aXJlczogZ3Rlc3QKK0xpYnM6IC1M
JHtsaWJkaXJ9IC1sZ3Rlc3RfbWFpbiBAQ01BS0VfVEhSRUFEX0xJQlNfSU5JVEAKK0NmbGFnczog
LUkke2luY2x1ZGVkaXJ9IEBHVEVTVF9IQVNfUFRIUkVBRF9NQUNST0AgQENNQUtFX1RIUkVBRF9M
SUJTX0lOSVRACmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9pbnRl
cm5hbF91dGlscy5jbWFrZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2ludGVybmFs
X3V0aWxzLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjMWY5YmE5OWNmNTA1NzRmNjY5ZGQ3ZGViYTMyNGRj
ZTQwNTk1ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFr
ZS9pbnRlcm5hbF91dGlscy5jbWFrZQpAQCAtMCwwICsxLDMxOCBAQAorIyBEZWZpbmVzIGZ1bmN0
aW9ucyBhbmQgbWFjcm9zIHVzZWZ1bCBmb3IgYnVpbGRpbmcgR29vZ2xlIFRlc3QgYW5kCisjIEdv
b2dsZSBNb2NrLgorIworIyBOb3RlOgorIworIyAtIFRoaXMgZmlsZSB3aWxsIGJlIHJ1biB0d2lj
ZSB3aGVuIGJ1aWxkaW5nIEdvb2dsZSBNb2NrIChvbmNlIHZpYQorIyAgIEdvb2dsZSBUZXN0J3Mg
Q01ha2VMaXN0cy50eHQsIGFuZCBvbmNlIHZpYSBHb29nbGUgTW9jaydzKS4KKyMgICBUaGVyZWZv
cmUgaXQgc2hvdWxkbid0IGhhdmUgYW55IHNpZGUgZWZmZWN0cyBvdGhlciB0aGFuIGRlZmluaW5n
CisjICAgdGhlIGZ1bmN0aW9ucyBhbmQgbWFjcm9zLgorIworIyAtIFRoZSBmdW5jdGlvbnMvbWFj
cm9zIGRlZmluZWQgaW4gdGhpcyBmaWxlIG1heSBkZXBlbmQgb24gR29vZ2xlCisjICAgVGVzdCBh
bmQgR29vZ2xlIE1vY2sncyBvcHRpb24oKSBkZWZpbml0aW9ucywgYW5kIHRodXMgbXVzdCBiZQor
IyAgIGNhbGxlZCAqYWZ0ZXIqIHRoZSBvcHRpb25zIGhhdmUgYmVlbiBkZWZpbmVkLgorCisjIFR3
ZWFrcyBDTWFrZSdzIGRlZmF1bHQgY29tcGlsZXIvbGlua2VyIHNldHRpbmdzIHRvIHN1aXQgR29v
Z2xlIFRlc3QncyBuZWVkcy4KKyMKKyMgVGhpcyBtdXN0IGJlIGEgbWFjcm8oKSwgYXMgaW5zaWRl
IGEgZnVuY3Rpb24gc3RyaW5nKCkgY2FuIG9ubHkKKyMgdXBkYXRlIHZhcmlhYmxlcyBpbiB0aGUg
ZnVuY3Rpb24gc2NvcGUuCittYWNybyhmaXhfZGVmYXVsdF9jb21waWxlcl9zZXR0aW5nc18pCisg
IGlmIChNU1ZDKQorICAgICMgRm9yIE1TVkMsIENNYWtlIHNldHMgY2VydGFpbiBmbGFncyB0byBk
ZWZhdWx0cyB3ZSB3YW50IHRvIG92ZXJyaWRlLgorICAgICMgVGhpcyByZXBsYWNlbWVudCBjb2Rl
IGlzIHRha2VuIGZyb20gc2FtcGxlIGluIHRoZSBDTWFrZSBXaWtpIGF0CisgICAgIyBodHRwczov
L2dpdGxhYi5raXR3YXJlLmNvbS9jbWFrZS9jb21tdW5pdHkvd2lraXMvRkFRI2R5bmFtaWMtcmVw
bGFjZS4KKyAgICBmb3JlYWNoIChmbGFnX3ZhcgorICAgICAgICAgICAgIENNQUtFX0NYWF9GTEFH
UyBDTUFLRV9DWFhfRkxBR1NfREVCVUcgQ01BS0VfQ1hYX0ZMQUdTX1JFTEVBU0UKKyAgICAgICAg
ICAgICBDTUFLRV9DWFhfRkxBR1NfTUlOU0laRVJFTCBDTUFLRV9DWFhfRkxBR1NfUkVMV0lUSERF
QklORk8pCisgICAgICBpZiAoTk9UIEJVSUxEX1NIQVJFRF9MSUJTIEFORCBOT1QgZ3Rlc3RfZm9y
Y2Vfc2hhcmVkX2NydCkKKyAgICAgICAgIyBXaGVuIEdvb2dsZSBUZXN0IGlzIGJ1aWx0IGFzIGEg
c2hhcmVkIGxpYnJhcnksIGl0IHNob3VsZCBhbHNvIHVzZQorICAgICAgICAjIHNoYXJlZCBydW50
aW1lIGxpYnJhcmllcy4gIE90aGVyd2lzZSwgaXQgbWF5IGVuZCB1cCB3aXRoIG11bHRpcGxlCisg
ICAgICAgICMgY29waWVzIG9mIHJ1bnRpbWUgbGlicmFyeSBkYXRhIGluIGRpZmZlcmVudCBtb2R1
bGVzLCByZXN1bHRpbmcgaW4KKyAgICAgICAgIyBoYXJkLXRvLWZpbmQgY3Jhc2hlcy4gV2hlbiBp
dCBpcyBidWlsdCBhcyBhIHN0YXRpYyBsaWJyYXJ5LCBpdCBpcworICAgICAgICAjIHByZWZlcmFi
bGUgdG8gdXNlIENSVCBhcyBzdGF0aWMgbGlicmFyaWVzLCBhcyB3ZSBkb24ndCBoYXZlIHRvIHJl
bHkKKyAgICAgICAgIyBvbiBDUlQgRExMcyBiZWluZyBhdmFpbGFibGUuIENNYWtlIGFsd2F5cyBk
ZWZhdWx0cyB0byB1c2luZyBzaGFyZWQKKyAgICAgICAgIyBDUlQgbGlicmFyaWVzLCBzbyB3ZSBv
dmVycmlkZSB0aGF0IGRlZmF1bHQgaGVyZS4KKyAgICAgICAgc3RyaW5nKFJFUExBQ0UgIi9NRCIg
Ii1NVCIgJHtmbGFnX3Zhcn0gIiR7JHtmbGFnX3Zhcn19IikKKyAgICAgIGVuZGlmKCkKKworICAg
ICAgIyBXZSBwcmVmZXIgbW9yZSBzdHJpY3Qgd2FybmluZyBjaGVja2luZyBmb3IgYnVpbGRpbmcg
R29vZ2xlIFRlc3QuCisgICAgICAjIFJlcGxhY2VzIC9XMyB3aXRoIC9XNCBpbiBkZWZhdWx0cy4K
KyAgICAgIHN0cmluZyhSRVBMQUNFICIvVzMiICIvVzQiICR7ZmxhZ192YXJ9ICIkeyR7ZmxhZ192
YXJ9fSIpCisKKyAgICAgICMgUHJldmVudCBEOTAyNSB3YXJuaW5nIGZvciB0YXJnZXRzIHRoYXQg
aGF2ZSBleGNlcHRpb24gaGFuZGxpbmcKKyAgICAgICMgdHVybmVkIG9mZiAoL0VIcy1jLSBmbGFn
KS4gV2hlcmUgcmVxdWlyZWQsIGV4Y2VwdGlvbnMgYXJlIGV4cGxpY2l0bHkKKyAgICAgICMgcmUt
ZW5hYmxlZCB1c2luZyB0aGUgY3h4X2V4Y2VwdGlvbl9mbGFncyB2YXJpYWJsZS4KKyAgICAgIHN0
cmluZyhSRVBMQUNFICIvRUhzYyIgIiIgJHtmbGFnX3Zhcn0gIiR7JHtmbGFnX3Zhcn19IikKKyAg
ICBlbmRmb3JlYWNoKCkKKyAgZW5kaWYoKQorZW5kbWFjcm8oKQorCisjIERlZmluZXMgdGhlIGNv
bXBpbGVyL2xpbmtlciBmbGFncyB1c2VkIHRvIGJ1aWxkIEdvb2dsZSBUZXN0IGFuZAorIyBHb29n
bGUgTW9jay4gIFlvdSBjYW4gdHdlYWsgdGhlc2UgZGVmaW5pdGlvbnMgdG8gc3VpdCB5b3VyIG5l
ZWQuICBBCisjIHZhcmlhYmxlJ3MgdmFsdWUgaXMgZW1wdHkgYmVmb3JlIGl0J3MgZXhwbGljaXRs
eSBhc3NpZ25lZCB0by4KK21hY3JvKGNvbmZpZ19jb21waWxlcl9hbmRfbGlua2VyKQorICAjIE5v
dGU6IHB0aHJlYWRzIG9uIE1pbkdXIGlzIG5vdCBzdXBwb3J0ZWQsIGV2ZW4gaWYgYXZhaWxhYmxl
CisgICMgaW5zdGVhZCwgd2UgdXNlIHdpbmRvd3MgdGhyZWFkaW5nIHByaW1pdGl2ZXMKKyAgdW5z
ZXQoR1RFU1RfSEFTX1BUSFJFQUQpCisgIGlmIChOT1QgZ3Rlc3RfZGlzYWJsZV9wdGhyZWFkcyBB
TkQgTk9UIE1JTkdXKQorICAgICMgRGVmaW5lcyBDTUFLRV9VU0VfUFRIUkVBRFNfSU5JVCBhbmQg
Q01BS0VfVEhSRUFEX0xJQlNfSU5JVC4KKyAgICBzZXQoVEhSRUFEU19QUkVGRVJfUFRIUkVBRF9G
TEFHIE9OKQorICAgIGZpbmRfcGFja2FnZShUaHJlYWRzKQorICAgIGlmIChDTUFLRV9VU0VfUFRI
UkVBRFNfSU5JVCkKKyAgICAgIHNldChHVEVTVF9IQVNfUFRIUkVBRCBPTikKKyAgICBlbmRpZigp
CisgIGVuZGlmKCkKKworICBmaXhfZGVmYXVsdF9jb21waWxlcl9zZXR0aW5nc18oKQorICBpZiAo
TVNWQykKKyAgICAjIE5ld2xpbmVzIGluc2lkZSBmbGFncyB2YXJpYWJsZXMgYnJlYWsgQ01ha2Un
cyBOTWFrZSBnZW5lcmF0b3IuCisgICAgIyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBBZGQgLVJU
Q3MgYW5kIC1SVEN1IHRvIGRlYnVnIGJ1aWxkcy4KKyAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIi1H
UyAtVzQgLVdYIC13ZDQyNTEgLXdkNDI3NSAtbm9sb2dvIC1KIC1aaSIpCisgICAgaWYgKE1TVkNf
VkVSU0lPTiBMRVNTIDE0MDApICAjIDE0MDAgaXMgVmlzdWFsIFN0dWRpbyAyMDA1CisgICAgICAj
IFN1cHByZXNzIHNwdXJpb3VzIHdhcm5pbmdzIE1TVkMgNy4xIHNvbWV0aW1lcyBpc3N1ZXMuCisg
ICAgICAjIEZvcmNpbmcgdmFsdWUgdG8gYm9vbC4KKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAi
JHtjeHhfYmFzZV9mbGFnc30gLXdkNDgwMCIpCisgICAgICAjIENvcHkgY29uc3RydWN0b3IgYW5k
IGFzc2lnbm1lbnQgb3BlcmF0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZC4KKyAgICAgIHNldChj
eHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLXdkNDUxMSAtd2Q0NTEyIikKKyAgICAg
ICMgQ29tcGF0aWJpbGl0eSB3YXJuaW5ncyBub3QgYXBwbGljYWJsZSB0byBHb29nbGUgVGVzdC4K
KyAgICAgICMgUmVzb2x2ZWQgb3ZlcmxvYWQgd2FzIGZvdW5kIGJ5IGFyZ3VtZW50LWRlcGVuZGVu
dCBsb29rdXAuCisgICAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC13
ZDQ2NzUiKQorICAgIGVuZGlmKCkKKyAgICBpZiAoTVNWQ19WRVJTSU9OIExFU1MgMTUwMCkgICMg
MTUwMCBpcyBWaXN1YWwgU3R1ZGlvIDIwMDgKKyAgICAgICMgQ29uZGl0aW9uYWwgZXhwcmVzc2lv
biBpcyBjb25zdGFudC4KKyAgICAgICMgV2hlbiBjb21waWxpbmcgd2l0aCAvVzQsIHdlIGdldCBz
ZXZlcmFsIGluc3RhbmNlcyBvZiBDNDEyNworICAgICAgIyAoQ29uZGl0aW9uYWwgZXhwcmVzc2lv
biBpcyBjb25zdGFudCkuIEluIG91ciBjb2RlLCB3ZSBkaXNhYmxlIHRoYXQKKyAgICAgICMgd2Fy
bmluZyBvbiBhIGNhc2UtYnktY2FzZSBiYXNpcy4gSG93ZXZlciwgb24gVmlzdWFsIFN0dWRpbyAy
MDA1LAorICAgICAgIyB0aGUgd2FybmluZyBmaXJlcyBvbiBzdGQ6Omxpc3QuIFRoZXJlZm9yZSBv
biB0aGF0IGNvbXBpbGVyIGFuZCBlYXJsaWVyLAorICAgICAgIyB3ZSBkaXNhYmxlIHRoZSB3YXJu
aW5nIHByb2plY3Qtd2lkZS4KKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9m
bGFnc30gLXdkNDEyNyIpCisgICAgZW5kaWYoKQorICAgIGlmIChOT1QgKE1TVkNfVkVSU0lPTiBM
RVNTIDE3MDApKSAgIyAxNzAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxMi4KKyAgICAgICMgU3VwcHJl
c3MgInVucmVhY2hhYmxlIGNvZGUiIHdhcm5pbmcgb24gVlMgMjAxMiBhbmQgbGF0ZXIuCisgICAg
ICAjIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzIzMjY2OSBleHBsYWlucyB0
aGUgaXNzdWUuCisgICAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC13
ZDQ3MDIiKQorICAgIGVuZGlmKCkKKworICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFz
ZV9mbGFnc30gLURfVU5JQ09ERSAtRFVOSUNPREUgLURXSU4zMiAtRF9XSU4zMiIpCisgICAgc2V0
KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtRFNUUklDVCAtRFdJTjMyX0xFQU5f
QU5EX01FQU4iKQorICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICItRUhzYyAtRF9IQVNfRVhD
RVBUSU9OUz0xIikKKyAgICBzZXQoY3h4X25vX2V4Y2VwdGlvbl9mbGFncyAiLUVIcy1jLSAtRF9I
QVNfRVhDRVBUSU9OUz0wIikKKyAgICBzZXQoY3h4X25vX3J0dGlfZmxhZ3MgIi1HUi0iKQorICBl
bHNlaWYgKENNQUtFX0NPTVBJTEVSX0lTX0dOVUNYWCkKKyAgICBzZXQoY3h4X2Jhc2VfZmxhZ3Mg
Ii1XYWxsIC1Xc2hhZG93IC1XZXJyb3IiKQorICAgIGlmKE5PVCBDTUFLRV9DWFhfQ09NUElMRVJf
VkVSU0lPTiBWRVJTSU9OX0xFU1MgNy4wLjApCisgICAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7
Y3h4X2Jhc2VfZmxhZ3N9IC1Xbm8tZXJyb3I9ZGFuZ2xpbmctZWxzZSIpCisgICAgZW5kaWYoKQor
ICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICItZmV4Y2VwdGlvbnMiKQorICAgIHNldChjeHhf
bm9fZXhjZXB0aW9uX2ZsYWdzICItZm5vLWV4Y2VwdGlvbnMiKQorICAgICMgVW50aWwgdmVyc2lv
biA0LjMuMiwgR0NDIGRvZXNuJ3QgZGVmaW5lIGEgbWFjcm8gdG8gaW5kaWNhdGUKKyAgICAjIHdo
ZXRoZXIgUlRUSSBpcyBlbmFibGVkLiAgVGhlcmVmb3JlIHdlIGRlZmluZSBHVEVTVF9IQVNfUlRU
SQorICAgICMgZXhwbGljaXRseS4KKyAgICBzZXQoY3h4X25vX3J0dGlfZmxhZ3MgIi1mbm8tcnR0
aSAtREdURVNUX0hBU19SVFRJPTAiKQorICAgIHNldChjeHhfc3RyaWN0X2ZsYWdzCisgICAgICAi
LVdleHRyYSAtV25vLXVudXNlZC1wYXJhbWV0ZXIgLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxp
emVycyIpCisgIGVsc2VpZiAoQ01BS0VfQ1hYX0NPTVBJTEVSX0lEIFNUUkVRVUFMICJTdW5Qcm8i
KQorICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICItZmVhdHVyZXM9ZXhjZXB0IikKKyAgICAj
IFN1biBQcm8gZG9lc24ndCBwcm92aWRlIG1hY3JvcyB0byBpbmRpY2F0ZSB3aGV0aGVyIGV4Y2Vw
dGlvbnMgYW5kCisgICAgIyBSVFRJIGFyZSBlbmFibGVkLCBzbyB3ZSBkZWZpbmUgR1RFU1RfSEFT
XyogZXhwbGljaXRseS4KKyAgICBzZXQoY3h4X25vX2V4Y2VwdGlvbl9mbGFncyAiLWZlYXR1cmVz
PW5vJWV4Y2VwdCAtREdURVNUX0hBU19FWENFUFRJT05TPTAiKQorICAgIHNldChjeHhfbm9fcnR0
aV9mbGFncyAiLWZlYXR1cmVzPW5vJXJ0dGkgLURHVEVTVF9IQVNfUlRUST0wIikKKyAgZWxzZWlm
IChDTUFLRV9DWFhfQ09NUElMRVJfSUQgU1RSRVFVQUwgIlZpc3VhbEFnZSIgT1IKKyAgICAgIENN
QUtFX0NYWF9DT01QSUxFUl9JRCBTVFJFUVVBTCAiWEwiKQorICAgICMgQ01ha2UgMi44IGNoYW5n
ZXMgVmlzdWFsIEFnZSdzIGNvbXBpbGVyIElEIHRvICJYTCIuCisgICAgc2V0KGN4eF9leGNlcHRp
b25fZmxhZ3MgIi1xZWgiKQorICAgIHNldChjeHhfbm9fZXhjZXB0aW9uX2ZsYWdzICItcW5vZWgi
KQorICAgICMgVW50aWwgdmVyc2lvbiA5LjAsIFZpc3VhbCBBZ2UgZG9lc24ndCBkZWZpbmUgYSBt
YWNybyB0byBpbmRpY2F0ZQorICAgICMgd2hldGhlciBSVFRJIGlzIGVuYWJsZWQuICBUaGVyZWZv
cmUgd2UgZGVmaW5lIEdURVNUX0hBU19SVFRJCisgICAgIyBleHBsaWNpdGx5LgorICAgIHNldChj
eHhfbm9fcnR0aV9mbGFncyAiLXFub3J0dGkgLURHVEVTVF9IQVNfUlRUST0wIikKKyAgZWxzZWlm
IChDTUFLRV9DWFhfQ09NUElMRVJfSUQgU1RSRVFVQUwgIkhQIikKKyAgICBzZXQoY3h4X2Jhc2Vf
ZmxhZ3MgIi1BQSAtbXQiKQorICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICItREdURVNUX0hB
U19FWENFUFRJT05TPTEiKQorICAgIHNldChjeHhfbm9fZXhjZXB0aW9uX2ZsYWdzICIrbm9laCAt
REdURVNUX0hBU19FWENFUFRJT05TPTAiKQorICAgICMgUlRUSSBjYW4gbm90IGJlIGRpc2FibGVk
IGluIEhQIGFDQyBjb21waWxlci4KKyAgICBzZXQoY3h4X25vX3J0dGlfZmxhZ3MgIiIpCisgIGVu
ZGlmKCkKKworICAjIFRoZSBwdGhyZWFkcyBsaWJyYXJ5IGlzIGF2YWlsYWJsZSBhbmQgYWxsb3dl
ZD8KKyAgaWYgKERFRklORUQgR1RFU1RfSEFTX1BUSFJFQUQpCisgICAgc2V0KEdURVNUX0hBU19Q
VEhSRUFEX01BQ1JPICItREdURVNUX0hBU19QVEhSRUFEPTEiKQorICBlbHNlKCkKKyAgICBzZXQo
R1RFU1RfSEFTX1BUSFJFQURfTUFDUk8gIi1ER1RFU1RfSEFTX1BUSFJFQUQ9MCIpCisgIGVuZGlm
KCkKKyAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAke0dURVNUX0hBU19Q
VEhSRUFEX01BQ1JPfSIpCisKKyAgIyBGb3IgYnVpbGRpbmcgZ3Rlc3QncyBvd24gdGVzdHMgYW5k
IHNhbXBsZXMuCisgIHNldChjeHhfZXhjZXB0aW9uICIke2N4eF9iYXNlX2ZsYWdzfSAke2N4eF9l
eGNlcHRpb25fZmxhZ3N9IikKKyAgc2V0KGN4eF9ub19leGNlcHRpb24KKyAgICAiJHtDTUFLRV9D
WFhfRkxBR1N9ICR7Y3h4X2Jhc2VfZmxhZ3N9ICR7Y3h4X25vX2V4Y2VwdGlvbl9mbGFnc30iKQor
ICBzZXQoY3h4X2RlZmF1bHQgIiR7Y3h4X2V4Y2VwdGlvbn0iKQorICBzZXQoY3h4X25vX3J0dGkg
IiR7Y3h4X2RlZmF1bHR9ICR7Y3h4X25vX3J0dGlfZmxhZ3N9IikKKyAgc2V0KGN4eF91c2Vfb3du
X3R1cGxlICIke2N4eF9kZWZhdWx0fSAtREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTEiKQorCisg
ICMgRm9yIGJ1aWxkaW5nIHRoZSBndGVzdCBsaWJyYXJpZXMuCisgIHNldChjeHhfc3RyaWN0ICIk
e2N4eF9kZWZhdWx0fSAke2N4eF9zdHJpY3RfZmxhZ3N9IikKK2VuZG1hY3JvKCkKKworIyBEZWZp
bmVzIHRoZSBndGVzdCAmIGd0ZXN0X21haW4gbGlicmFyaWVzLiAgVXNlciB0ZXN0cyBzaG91bGQg
bGluaworIyB3aXRoIG9uZSBvZiB0aGVtLgorZnVuY3Rpb24oY3h4X2xpYnJhcnlfd2l0aF90eXBl
IG5hbWUgdHlwZSBjeHhfZmxhZ3MpCisgICMgdHlwZSBjYW4gYmUgZWl0aGVyIFNUQVRJQyBvciBT
SEFSRUQgdG8gZGVub3RlIGEgc3RhdGljIG9yIHNoYXJlZCBsaWJyYXJ5LgorICAjIEFSR04gcmVm
ZXJzIHRvIGFkZGl0aW9uYWwgYXJndW1lbnRzIGFmdGVyICdjeHhfZmxhZ3MnLgorICBhZGRfbGli
cmFyeSgke25hbWV9ICR7dHlwZX0gJHtBUkdOfSkKKyAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7
bmFtZX0KKyAgICBQUk9QRVJUSUVTCisgICAgQ09NUElMRV9GTEFHUyAiJHtjeHhfZmxhZ3N9IikK
KyAgIyBHZW5lcmF0ZSBkZWJ1ZyBsaWJyYXJ5IG5hbWUgd2l0aCBhIHBvc3RmaXguCisgIHNldF90
YXJnZXRfcHJvcGVydGllcygke25hbWV9CisgICAgUFJPUEVSVElFUworICAgIERFQlVHX1BPU1RG
SVggImQiKQorICBpZiAoQlVJTERfU0hBUkVEX0xJQlMgT1IgdHlwZSBTVFJFUVVBTCAiU0hBUkVE
IikKKyAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtuYW1lfQorICAgICAgUFJPUEVSVElFUwor
ICAgICAgQ09NUElMRV9ERUZJTklUSU9OUyAiR1RFU1RfQ1JFQVRFX1NIQVJFRF9MSUJSQVJZPTEi
KQorICAgIGlmIChOT1QgIiR7Q01BS0VfVkVSU0lPTn0iIFZFUlNJT05fTEVTUyAiMi44LjExIikK
KyAgICAgIHRhcmdldF9jb21waWxlX2RlZmluaXRpb25zKCR7bmFtZX0gSU5URVJGQUNFCisgICAg
ICAgICQ8SU5TVEFMTF9JTlRFUkZBQ0U6R1RFU1RfTElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZPTE+
KQorICAgIGVuZGlmKCkKKyAgZW5kaWYoKQorICBpZiAoREVGSU5FRCBHVEVTVF9IQVNfUFRIUkVB
RCkKKyAgICBpZiAoIiR7Q01BS0VfVkVSU0lPTn0iIFZFUlNJT05fTEVTUyAiMy4xLjAiKQorICAg
ICAgc2V0KHRocmVhZHNfc3BlYyAke0NNQUtFX1RIUkVBRF9MSUJTX0lOSVR9KQorICAgIGVsc2Uo
KQorICAgICAgc2V0KHRocmVhZHNfc3BlYyBUaHJlYWRzOjpUaHJlYWRzKQorICAgIGVuZGlmKCkK
KyAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtuYW1lfSBQVUJMSUMgJHt0aHJlYWRzX3NwZWN9
KQorICBlbmRpZigpCitlbmRmdW5jdGlvbigpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBIZWxw
ZXIgZnVuY3Rpb25zIGZvciBjcmVhdGluZyBidWlsZCB0YXJnZXRzLgorCitmdW5jdGlvbihjeHhf
c2hhcmVkX2xpYnJhcnkgbmFtZSBjeHhfZmxhZ3MpCisgIGN4eF9saWJyYXJ5X3dpdGhfdHlwZSgk
e25hbWV9IFNIQVJFRCAiJHtjeHhfZmxhZ3N9IiAke0FSR059KQorZW5kZnVuY3Rpb24oKQorCitm
dW5jdGlvbihjeHhfbGlicmFyeSBuYW1lIGN4eF9mbGFncykKKyAgY3h4X2xpYnJhcnlfd2l0aF90
eXBlKCR7bmFtZX0gIiIgIiR7Y3h4X2ZsYWdzfSIgJHtBUkdOfSkKK2VuZGZ1bmN0aW9uKCkKKwor
IyBjeHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzKG5hbWUgY3h4X2ZsYWdzIGxpYnMgc3Jjcy4uLikK
KyMKKyMgY3JlYXRlcyBhIG5hbWVkIEMrKyBleGVjdXRhYmxlIHRoYXQgZGVwZW5kcyBvbiB0aGUg
Z2l2ZW4gbGlicmFyaWVzIGFuZAorIyBpcyBidWlsdCBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmls
ZXMgd2l0aCB0aGUgZ2l2ZW4gY29tcGlsZXIgZmxhZ3MuCitmdW5jdGlvbihjeHhfZXhlY3V0YWJs
ZV93aXRoX2ZsYWdzIG5hbWUgY3h4X2ZsYWdzIGxpYnMpCisgIGFkZF9leGVjdXRhYmxlKCR7bmFt
ZX0gJHtBUkdOfSkKKyAgaWYgKE1TVkMgQU5EIChOT1QgKE1TVkNfVkVSU0lPTiBMRVNTIDE3MDAp
KSkgICMgMTcwMCBpcyBWaXN1YWwgU3R1ZGlvIDIwMTIuCisgICAgIyBCaWdPYmogcmVxdWlyZWQg
Zm9yIHRlc3RzLgorICAgIHNldChjeHhfZmxhZ3MgIiR7Y3h4X2ZsYWdzfSAtYmlnb2JqIikKKyAg
ZW5kaWYoKQorICBpZiAoY3h4X2ZsYWdzKQorICAgIHNldF90YXJnZXRfcHJvcGVydGllcygke25h
bWV9CisgICAgICBQUk9QRVJUSUVTCisgICAgICBDT01QSUxFX0ZMQUdTICIke2N4eF9mbGFnc30i
KQorICBlbmRpZigpCisgIGlmIChCVUlMRF9TSEFSRURfTElCUykKKyAgICBzZXRfdGFyZ2V0X3By
b3BlcnRpZXMoJHtuYW1lfQorICAgICAgUFJPUEVSVElFUworICAgICAgQ09NUElMRV9ERUZJTklU
SU9OUyAiR1RFU1RfTElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZPTEiKQorICBlbmRpZigpCisgICMg
VG8gc3VwcG9ydCBtaXhpbmcgbGlua2luZyBpbiBzdGF0aWMgYW5kIGR5bmFtaWMgbGlicmFyaWVz
LCBsaW5rIGVhY2gKKyAgIyBsaWJyYXJ5IGluIHdpdGggYW4gZXh0cmEgY2FsbCB0byB0YXJnZXRf
bGlua19saWJyYXJpZXMuCisgIGZvcmVhY2ggKGxpYiAiJHtsaWJzfSIpCisgICAgdGFyZ2V0X2xp
bmtfbGlicmFyaWVzKCR7bmFtZX0gJHtsaWJ9KQorICBlbmRmb3JlYWNoKCkKK2VuZGZ1bmN0aW9u
KCkKKworIyBjeHhfZXhlY3V0YWJsZShuYW1lIGRpciBsaWIgc3Jjcy4uLikKKyMKKyMgY3JlYXRl
cyBhIG5hbWVkIHRhcmdldCB0aGF0IGRlcGVuZHMgb24gdGhlIGdpdmVuIGxpYnMgYW5kIGlzIGJ1
aWx0CisjIGZyb20gdGhlIGdpdmVuIHNvdXJjZSBmaWxlcy4gIGRpci9uYW1lLmNjIGlzIGltcGxp
Y2l0bHkgaW5jbHVkZWQgaW4KKyMgdGhlIHNvdXJjZSBmaWxlIGxpc3QuCitmdW5jdGlvbihjeHhf
ZXhlY3V0YWJsZSBuYW1lIGRpciBsaWJzKQorICBjeHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzKAor
ICAgICR7bmFtZX0gIiR7Y3h4X2RlZmF1bHR9IiAiJHtsaWJzfSIgIiR7ZGlyfS8ke25hbWV9LmNj
IiAke0FSR059KQorZW5kZnVuY3Rpb24oKQorCisjIFNldHMgUFlUSE9OSU5URVJQX0ZPVU5EIGFu
ZCBQWVRIT05fRVhFQ1VUQUJMRS4KK2ZpbmRfcGFja2FnZShQeXRob25JbnRlcnApCisKKyMgY3h4
X3Rlc3Rfd2l0aF9mbGFncyhuYW1lIGN4eF9mbGFncyBsaWJzIHNyY3MuLi4pCisjCisjIGNyZWF0
ZXMgYSBuYW1lZCBDKysgdGVzdCB0aGF0IGRlcGVuZHMgb24gdGhlIGdpdmVuIGxpYnMgYW5kIGlz
IGJ1aWx0CisjIGZyb20gdGhlIGdpdmVuIHNvdXJjZSBmaWxlcyB3aXRoIHRoZSBnaXZlbiBjb21w
aWxlciBmbGFncy4KK2Z1bmN0aW9uKGN4eF90ZXN0X3dpdGhfZmxhZ3MgbmFtZSBjeHhfZmxhZ3Mg
bGlicykKKyAgY3h4X2V4ZWN1dGFibGVfd2l0aF9mbGFncygke25hbWV9ICIke2N4eF9mbGFnc30i
ICIke2xpYnN9IiAke0FSR059KQorICBhZGRfdGVzdChOQU1FICR7bmFtZX0gQ09NTUFORCAke25h
bWV9KQorZW5kZnVuY3Rpb24oKQorCisjIGN4eF90ZXN0KG5hbWUgbGlicyBzcmNzLi4uKQorIwor
IyBjcmVhdGVzIGEgbmFtZWQgdGVzdCB0YXJnZXQgdGhhdCBkZXBlbmRzIG9uIHRoZSBnaXZlbiBs
aWJzIGFuZCBpcworIyBidWlsdCBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmlsZXMuICBVbmxpa2Ug
Y3h4X3Rlc3Rfd2l0aF9mbGFncywKKyMgdGVzdC9uYW1lLmNjIGlzIGFscmVhZHkgaW1wbGljaXRs
eSBpbmNsdWRlZCBpbiB0aGUgc291cmNlIGZpbGUgbGlzdC4KK2Z1bmN0aW9uKGN4eF90ZXN0IG5h
bWUgbGlicykKKyAgY3h4X3Rlc3Rfd2l0aF9mbGFncygiJHtuYW1lfSIgIiR7Y3h4X2RlZmF1bHR9
IiAiJHtsaWJzfSIKKyAgICAidGVzdC8ke25hbWV9LmNjIiAke0FSR059KQorZW5kZnVuY3Rpb24o
KQorCisjIHB5X3Rlc3QobmFtZSkKKyMKKyMgY3JlYXRlcyBhIFB5dGhvbiB0ZXN0IHdpdGggdGhl
IGdpdmVuIG5hbWUgd2hvc2UgbWFpbiBtb2R1bGUgaXMgaW4KKyMgdGVzdC9uYW1lLnB5LiAgSXQg
ZG9lcyBub3RoaW5nIGlmIFB5dGhvbiBpcyBub3QgaW5zdGFsbGVkLgorZnVuY3Rpb24ocHlfdGVz
dCBuYW1lKQorICBpZiAoUFlUSE9OSU5URVJQX0ZPVU5EKQorICAgIGlmICgke0NNQUtFX01BSk9S
X1ZFUlNJT059LiR7Q01BS0VfTUlOT1JfVkVSU0lPTn0gR1JFQVRFUiAzLjEpCisgICAgICBpZiAo
Q01BS0VfQ09ORklHVVJBVElPTl9UWVBFUykKKwkjIE11bHRpLWNvbmZpZ3VyYXRpb24gYnVpbGQg
Z2VuZXJhdG9ycyBhcyBmb3IgVmlzdWFsIFN0dWRpbyBzYXZlCisJIyBvdXRwdXQgaW4gYSBzdWJk
aXJlY3Rvcnkgb2YgQ01BS0VfQ1VSUkVOVF9CSU5BUllfRElSIChEZWJ1ZywKKwkjIFJlbGVhc2Ug
ZXRjLiksIHNvIHdlIGhhdmUgdG8gcHJvdmlkZSBpdCBoZXJlLgorICAgICAgICBhZGRfdGVzdCgK
KyAgICAgICAgICBOQU1FICR7bmFtZX0KKyAgICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNV
VEFCTEV9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS90ZXN0LyR7bmFtZX0ucHkKKyAgICAg
ICAgICAgICAgLS1idWlsZF9kaXI9JHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9LyQ8Q09ORklH
PiAke0FSR059KQorICAgICAgZWxzZSAoQ01BS0VfQ09ORklHVVJBVElPTl9UWVBFUykKKwkjIFNp
bmdsZS1jb25maWd1cmF0aW9uIGJ1aWxkIGdlbmVyYXRvcnMgbGlrZSBNYWtlZmlsZSBnZW5lcmF0
b3JzCisJIyBkb24ndCBoYXZlIHN1YmRpcnMgYmVsb3cgQ01BS0VfQ1VSUkVOVF9CSU5BUllfRElS
LgorICAgICAgICBhZGRfdGVzdCgKKyAgICAgICAgICBOQU1FICR7bmFtZX0KKyAgICAgICAgICBD
T01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS90
ZXN0LyR7bmFtZX0ucHkKKyAgICAgICAgICAgICAgLS1idWlsZF9kaXI9JHtDTUFLRV9DVVJSRU5U
X0JJTkFSWV9ESVJ9ICR7QVJHTn0pCisgICAgICBlbmRpZiAoQ01BS0VfQ09ORklHVVJBVElPTl9U
WVBFUykKKyAgICBlbHNlICgke0NNQUtFX01BSk9SX1ZFUlNJT059LiR7Q01BS0VfTUlOT1JfVkVS
U0lPTn0gR1JFQVRFUiAzLjEpCisgICAgICAjICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfSBp
cyBrbm93biBhdCBjb25maWd1cmF0aW9uIHRpbWUsIHNvIHdlIGNhbgorICAgICAgIyBkaXJlY3Rs
eSBiaW5kIGl0IGZyb20gY21ha2UuICR7Q1RFU1RfQ09ORklHVVJBVElPTl9UWVBFfSBpcyBrbm93
bgorICAgICAgIyBvbmx5IGF0IGN0ZXN0IHJ1bnRpbWUgKGJ5IGNhbGxpbmcgY3Rlc3QgLWMgPENv
bmZpZ3VyYXRpb24+KSwgc28KKyAgICAgICMgd2UgaGF2ZSB0byBlc2NhcGUgJCB0byBkZWxheSB2
YXJpYWJsZSBzdWJzdGl0dXRpb24gaGVyZS4KKyAgICAgIGFkZF90ZXN0KAorICAgICAgICAke25h
bWV9CisgICAgICAgICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf
RElSfS90ZXN0LyR7bmFtZX0ucHkKKyAgICAgICAgICAtLWJ1aWxkX2Rpcj0ke0NNQUtFX0NVUlJF
TlRfQklOQVJZX0RJUn0vXCR7Q1RFU1RfQ09ORklHVVJBVElPTl9UWVBFfSAke0FSR059KQorICAg
IGVuZGlmICgke0NNQUtFX01BSk9SX1ZFUlNJT059LiR7Q01BS0VfTUlOT1JfVkVSU0lPTn0gR1JF
QVRFUiAzLjEpCisgIGVuZGlmKFBZVEhPTklOVEVSUF9GT1VORCkKK2VuZGZ1bmN0aW9uKCkKKwor
IyBpbnN0YWxsX3Byb2plY3QodGFyZ2V0cy4uLikKKyMKKyMgSW5zdGFsbHMgdGhlIHNwZWNpZmll
ZCB0YXJnZXRzIGFuZCBjb25maWd1cmVzIHRoZSBhc3NvY2lhdGVkIHBrZ2NvbmZpZyBmaWxlcy4K
K2Z1bmN0aW9uKGluc3RhbGxfcHJvamVjdCkKKyAgaWYoSU5TVEFMTF9HVEVTVCkKKyAgICBpbnN0
YWxsKERJUkVDVE9SWSAiJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2luY2x1ZGUvIgorICAgICAgREVT
VElOQVRJT04gIiR7Q01BS0VfSU5TVEFMTF9JTkNMVURFRElSfSIpCisgICAgIyBJbnN0YWxsIHRo
ZSBwcm9qZWN0IHRhcmdldHMuCisgICAgaW5zdGFsbChUQVJHRVRTICR7QVJHTn0KKyAgICAgIEVY
UE9SVCAke3RhcmdldHNfZXhwb3J0X25hbWV9CisgICAgICBSVU5USU1FIERFU1RJTkFUSU9OICIk
e0NNQUtFX0lOU1RBTExfQklORElSfSIKKyAgICAgIEFSQ0hJVkUgREVTVElOQVRJT04gIiR7Q01B
S0VfSU5TVEFMTF9MSUJESVJ9IgorICAgICAgTElCUkFSWSBERVNUSU5BVElPTiAiJHtDTUFLRV9J
TlNUQUxMX0xJQkRJUn0iKQorICAgICMgQ29uZmlndXJlIGFuZCBpbnN0YWxsIHBrZ2NvbmZpZyBm
aWxlcy4KKyAgICBmb3JlYWNoKHQgJHtBUkdOfSkKKyAgICAgIHNldChjb25maWd1cmVkX3BjICIk
e2dlbmVyYXRlZF9kaXJ9LyR7dH0ucGMiKQorICAgICAgY29uZmlndXJlX2ZpbGUoIiR7UFJPSkVD
VF9TT1VSQ0VfRElSfS9jbWFrZS8ke3R9LnBjLmluIgorICAgICAgICAiJHtjb25maWd1cmVkX3Bj
fSIgQE9OTFkpCisgICAgICBpbnN0YWxsKEZJTEVTICIke2NvbmZpZ3VyZWRfcGN9IgorICAgICAg
ICBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0vcGtnY29uZmlnIikKKyAgICBl
bmRmb3JlYWNoKCkKKyAgZW5kaWYoKQorZW5kZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvY29uZmlndXJlLmFjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
Y29uZmlndXJlLmFjCmluZGV4IDFiOTEyMzc0NjFlMzlmZjYxYjYzMGYzZTAxOWFkZmVlZWI3ODNh
ZTYuLjI1NGM4YzRiMzE4ODVkMjU3MWZhMjMwMGI2MzFlOGJmOWQ5NWFlMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NvbmZpZ3VyZS5hYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9jb25maWd1cmUuYWMKQEAgLTUsMTMgKzUsMTQgQEAgbTRfaW5jbHVkZShtNC9h
Y3hfcHRocmVhZC5tNCkKICMgIlsxLjAuMV0iKS4gSXQgYWxzbyBhc3VtZXMgdGhhdCB0aGVyZSB3
b24ndCBiZSBhbnkgY2xvc2luZyBwYXJlbnRoZXNpcwogIyBiZXR3ZWVuICJBQ19JTklUKCIgYW5k
IHRoZSBjbG9zaW5nICIpIiBpbmNsdWRpbmcgY29tbWVudHMgYW5kIHN0cmluZ3MuCiBBQ19JTklU
KFtHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrXSwKLSAgICAgICAgWzEuNS4wXSwKKyAgICAg
ICAgWzEuOC4wXSwKICAgICAgICAgW2dvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNv
bV0sCiAgICAgICAgIFtndGVzdF0pCiAKICMgUHJvdmlkZSB2YXJpb3VzIG9wdGlvbnMgdG8gaW5p
dGlhbGl6ZSB0aGUgQXV0b2NvbmYgYW5kIGNvbmZpZ3VyZSBwcm9jZXNzZXMuCiBBQ19QUkVSRVEo
WzIuNTldKQotQUNfQ09ORklHX1NSQ0RJUihbLi9DT1BZSU5HXSkKK0FDX0NPTkZJR19TUkNESVIo
Wy4vTElDRU5TRV0pCitBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCiBBQ19DT05GSUdfQVVYX0RJ
UihbYnVpbGQtYXV4XSkKIEFDX0NPTkZJR19IRUFERVJTKFtidWlsZC1hdXgvY29uZmlnLmhdKQog
QUNfQ09ORklHX0ZJTEVTKFtNYWtlZmlsZV0pCkBAIC01NCw3ICs1NSw3IEBAIEFTX0lGKFt0ZXN0
ICJ4JHdpdGhfcHRocmVhZHMiICE9ICJ4bm8iXSwKICAgICAgICAgICAgICAgIFtBQ19NU0dfRkFJ
TFVSRSgKICAgICAgICAgICAgICAgICAgWy0td2l0aC1wdGhyZWFkcyB3YXMgc3BlY2lmaWVkLCBi
dXQgdW5hYmxlIHRvIGJlIHVzZWRdKV0pXSkKICAgICAgICBoYXZlX3B0aHJlYWRzPSIkYWN4X3B0
aHJlYWRfb2siXSkKLUFNX0NPTkRJVElPTkFMKFtIQVZFX1BUSFJFQURTXSxbdGVzdCAieCRoYXZl
X3B0aHJlYWRzIiA9PSAieHllcyJdKQorQU1fQ09ORElUSU9OQUwoW0hBVkVfUFRIUkVBRFNdLFt0
ZXN0ICJ4JGhhdmVfcHRocmVhZHMiID0gInh5ZXMiXSkKIEFDX1NVQlNUKFBUSFJFQURfQ0ZMQUdT
KQogQUNfU1VCU1QoUFRIUkVBRF9MSUJTKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9kb2NzL1BrZ2NvbmZpZy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3Mv
UGtnY29uZmlnLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3NjEyODk0ZDJhM2M4ZWFkYjQ0MmM1NTg3ODA0ZmI3
Nzg1ZWFhNzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2Nz
L1BrZ2NvbmZpZy5tZApAQCAtMCwwICsxLDE0NiBAQAorIyMgVXNpbmcgR29vZ2xlVGVzdCBmcm9t
IHZhcmlvdXMgYnVpbGQgc3lzdGVtcyAjIworCitHb29nbGVUZXN0IGNvbWVzIHdpdGggcGtnLWNv
bmZpZyBmaWxlcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSBhbGwKK25lY2Vzc2FyeSBm
bGFncyBmb3IgY29tcGlsaW5nIGFuZCBsaW5raW5nIHRvIEdvb2dsZVRlc3QgKGFuZCBHb29nbGVN
b2NrKS4KK1BrZy1jb25maWcgaXMgYSBzdGFuZGFyZGlzZWQgcGxhaW4tdGV4dCBmb3JtYXQgY29u
dGFpbmluZworCisgICogdGhlIGluY2x1ZGVkaXIgKC1JKSBwYXRoCisgICogbmVjZXNzYXJ5IG1h
Y3JvICgtRCkgZGVmaW5pdGlvbnMKKyAgKiBmdXJ0aGVyIHJlcXVpcmVkIGZsYWdzICgtcHRocmVh
ZCkKKyAgKiB0aGUgbGlicmFyeSAoLUwpIHBhdGgKKyAgKiB0aGUgbGlicmFyeSAoLWwpIHRvIGxp
bmsgdG8KKworQWxsIGN1cnJlbnQgYnVpbGQgc3lzdGVtcyBzdXBwb3J0IHBrZy1jb25maWcgaW4g
b25lIHdheSBvciBhbm90aGVyLiBGb3IKK2FsbCBleGFtcGxlcyBoZXJlIHdlIGFzc3VtZSB5b3Ug
d2FudCB0byBjb21waWxlIHRoZSBzYW1wbGUKK2BzYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2Ng
LgorCisKKyMjIyBDTWFrZSAjIyMKKworVXNpbmcgYHBrZy1jb25maWdgIGluIENNYWtlIGlzIGZh
aXJseSBlYXN5OgorCitgYGAKK2NtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjApCisK
K2NtYWtlX3BvbGljeShTRVQgQ01QMDA0OCBORVcpCitwcm9qZWN0KG15X2d0ZXN0X3BrZ2NvbmZp
ZyBWRVJTSU9OIDAuMC4xIExBTkdVQUdFUyBDWFgpCisKK2ZpbmRfcGFja2FnZShQa2dDb25maWcp
Citwa2dfc2VhcmNoX21vZHVsZShHVEVTVCBSRVFVSVJFRCBndGVzdF9tYWluKQorCithZGRfZXhl
Y3V0YWJsZSh0ZXN0YXBwIHNhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYykKK3RhcmdldF9saW5r
X2xpYnJhcmllcyh0ZXN0YXBwICR7R1RFU1RfTERGTEFHU30pCit0YXJnZXRfY29tcGlsZV9vcHRp
b25zKHRlc3RhcHAgUFVCTElDICR7R1RFU1RfQ0ZMQUdTfSkKKworaW5jbHVkZShDVGVzdCkKK2Fk
ZF90ZXN0KGZpcnN0X2FuZF9vbmx5X3Rlc3QgdGVzdGFwcCkKK2BgYAorCitJdCBpcyBnZW5lcmFs
bHkgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXNlIGB0YXJnZXRfY29tcGlsZV9vcHRpb25zYCArIGBf
Q0ZMQUdTYAorb3ZlciBgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXNgICsgYF9JTkNMVURFX0RJ
UlNgIGFzIHRoZSBmb3JtZXIgaW5jbHVkZXMgbm90CitqdXN0IC1JIGZsYWdzIChHb29nbGVUZXN0
IG1pZ2h0IHJlcXVpcmUgYSBtYWNybyBpbmRpY2F0aW5nIHRvIGludGVybmFsIGhlYWRlcnMKK3Ro
YXQgYWxsIGxpYnJhcmllcyBoYXZlIGJlZW4gY29tcGlsZWQgd2l0aCB0aHJlYWRpbmcgZW5hYmxl
ZC4gSW4gYWRkaXRpb24sCitHb29nbGVUZXN0IG1pZ2h0IGFsc28gcmVxdWlyZSBgLXB0aHJlYWRg
IGluIHRoZSBjb21waWxpbmcgc3RlcCwgYW5kIGFzIHN1Y2gKK3NwbGl0dGluZyB0aGUgcGtnLWNv
bmZpZyBgQ2ZsYWdzYCB2YXJpYWJsZSBpbnRvIGluY2x1ZGUgZGlycyBhbmQgbWFjcm9zIGZvcgor
YHRhcmdldF9jb21waWxlX2RlZmluaXRpb25zKClgIG1pZ2h0IHN0aWxsIG1pc3MgdGhpcykuIFRo
ZSBzYW1lIHJlY29tbWVuZGF0aW9uCitnb2VzIGZvciB1c2luZyBgX0xERkxBR1NgIG92ZXIgdGhl
IG1vcmUgY29tbW9ucGxhY2UgYF9MSUJSQVJJRVNgLCB3aGljaAoraGFwcGVucyB0byBkaXNjYXJk
IGAtTGAgZmxhZ3MgYW5kIGAtcHRocmVhZGAuCisKKworIyMjIEF1dG90b29scyAjIyMKKworRmlu
ZGluZyBHb29nbGVUZXN0IGluIEF1dG9jb25mIGFuZCB1c2luZyBpdCBmcm9tIEF1dG9tYWtlIGlz
IGFsc28gZmFpcmx5IGVhc3k6CisKK0luIHlvdXIgYGNvbmZpZ3VyZS5hY2A6CisKK2BgYAorQUNf
UFJFUkVRKFsyLjY5XSkKK0FDX0lOSVQoW215X2d0ZXN0X3BrZ2NvbmZpZ10sIFswLjAuMV0pCitB
Q19DT05GSUdfU1JDRElSKFtzYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2NdKQorQUNfUFJPR19D
WFgKKworUEtHX0NIRUNLX01PRFVMRVMoW0dURVNUXSwgW2d0ZXN0X21haW5dKQorCitBTV9JTklU
X0FVVE9NQUtFKFtmb3JlaWduIHN1YmRpci1vYmplY3RzXSkKK0FDX0NPTkZJR19GSUxFUyhbTWFr
ZWZpbGVdKQorQUNfT1VUUFVUCitgYGAKKworYW5kIGluIHlvdXIgYE1ha2VmaWxlLmFtYDoKKwor
YGBgCitjaGVja19QUk9HUkFNUyA9IHRlc3RhcHAKK1RFU1RTID0gJChjaGVja19QUk9HUkFNUykK
KwordGVzdGFwcF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjCit0ZXN0YXBw
X0NYWEZMQUdTID0gJChHVEVTVF9DRkxBR1MpCit0ZXN0YXBwX0xEQUREID0gJChHVEVTVF9MSUJT
KQorYGBgCisKKworIyMjIE1lc29uICMjIworCitNZXNvbiBuYXRpdmVseSB1c2VzIHBrZ2NvbmZp
ZyB0byBxdWVyeSBkZXBlbmRlbmNpZXM6CisKK2BgYAorcHJvamVjdCgnbXlfZ3Rlc3RfcGtnY29u
ZmlnJywgJ2NwcCcsIHZlcnNpb24gOiAnMC4wLjEnKQorCitndGVzdF9kZXAgPSBkZXBlbmRlbmN5
KCdndGVzdF9tYWluJykKKwordGVzdGFwcCA9IGV4ZWN1dGFibGUoCisgICd0ZXN0YXBwJywKKyAg
ZmlsZXMoWydzYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MnXSksCisgIGRlcGVuZGVuY2llcyA6
IGd0ZXN0X2RlcCwKKyAgaW5zdGFsbCA6IGZhbHNlKQorCit0ZXN0KCdmaXJzdF9hbmRfb25seV90
ZXN0JywgdGVzdGFwcCkKK2BgYAorCisKKyMjIyBQbGFpbiBNYWtlZmlsZXMgIyMjCisKK1NpbmNl
IGBwa2ctY29uZmlnYCBpcyBhIHNtYWxsIFVuaXggY29tbWFuZC1saW5lIHV0aWxpdHksIGl0IGNh
biBiZSB1c2VkCitpbiBoYW5kd3JpdHRlbiBgTWFrZWZpbGVgcyB0b286CisKK2BgYAorR1RFU1Rf
Q0ZMQUdTID0gYHBrZy1jb25maWcgLS1jZmxhZ3MgZ3Rlc3RfbWFpbmAKK0dURVNUX0xJQlMgPSBg
cGtnLWNvbmZpZyAtLWxpYnMgZ3Rlc3RfbWFpbmAKKworLlBIT05ZOiB0ZXN0cyBhbGwKKwordGVz
dHM6IGFsbAorCS4vdGVzdGFwcAorCithbGw6IHRlc3RhcHAKKwordGVzdGFwcDogdGVzdGFwcC5v
CisJJChDWFgpICQoQ1hYRkxBR1MpICQoTERGTEFHUykgJDwgLW8gJEAgJChHVEVTVF9MSUJTKQor
Cit0ZXN0YXBwLm86IHNhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYworCSQoQ1hYKSAkKENQUEZM
QUdTKSAkKENYWEZMQUdTKSAkPCAtYyAtbyAkQCAkKEdURVNUX0NGTEFHUykKK2BgYAorCisKKyMj
IyBIZWxwISBwa2ctY29uZmlnIGNhbid0IGZpbmQgR29vZ2xlVGVzdCEgIyMjCisKK0xldCdzIHNh
eSB5b3UgaGF2ZSBhIGBDTWFrZUxpc3RzLnR4dGAgYWxvbmcgdGhlIGxpbmVzIG9mIHRoZSBvbmUg
aW4gdGhpcwordHV0b3JpYWwgYW5kIHlvdSB0cnkgdG8gcnVuIGBjbWFrZWAuIEl0IGlzIHZlcnkg
cG9zc2libGUgdGhhdCB5b3UgZ2V0IGEKK2ZhaWx1cmUgYWxvbmcgdGhlIGxpbmVzIG9mOgorCitg
YGAKKy0tIENoZWNraW5nIGZvciBvbmUgb2YgdGhlIG1vZHVsZXMgJ2d0ZXN0X21haW4nCitDTWFr
ZSBFcnJvciBhdCAvdXNyL3NoYXJlL2NtYWtlL01vZHVsZXMvRmluZFBrZ0NvbmZpZy5jbWFrZTo2
NDAgKG1lc3NhZ2UpOgorICBOb25lIG9mIHRoZSByZXF1aXJlZCAnZ3Rlc3RfbWFpbicgZm91bmQK
K2BgYAorCitUaGVzZSBmYWlsdXJlcyBhcmUgY29tbW9uIGlmIHlvdSBpbnN0YWxsZWQgR29vZ2xl
VGVzdCB5b3Vyc2VsZiBhbmQgaGF2ZSBub3QKK3NvdXJjZWQgaXQgZnJvbSBhIGRpc3RybyBvciBv
dGhlciBwYWNrYWdlIG1hbmFnZXIuIElmIHNvLCB5b3UgbmVlZCB0byB0ZWxsCitwa2ctY29uZmln
IHdoZXJlIGl0IGNhbiBmaW5kIHRoZSBgLnBjYCBmaWxlcyBjb250YWluaW5nIHRoZSBpbmZvcm1h
dGlvbi4KK1NheSB5b3UgaW5zdGFsbGVkIEdvb2dsZVRlc3QgdG8gYC91c3IvbG9jYWxgLCB0aGVu
IGl0IG1pZ2h0IGJlIHRoYXQgdGhlCitgLnBjYCBmaWxlcyBhcmUgaW5zdGFsbGVkIHVuZGVyIGAv
dXNyL2xvY2FsL2xpYjY0L3BrZ2NvbmZpZ2AuIElmIHlvdSBzZXQKKworYGBgCitleHBvcnQgUEtH
X0NPTkZJR19QQVRIPS91c3IvbG9jYWwvbGliNjQvcGtnY29uZmlnCitgYGAKKworcGtnLWNvbmZp
ZyB3aWxsIGFsc28gdHJ5IHRvIGxvb2sgaW4gYFBLR19DT05GSUdfUEFUSGAgdG8gZmluZCBgZ3Rl
c3RfbWFpbi5wY2AuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1B1
bXBNYW51YWwubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1B1bXBNYW51YWwubWQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODI3YmIyNGIwNDJkYzU0M2FmNGM0MDlhZDAzZTE0N2VhNTk0OWI3YgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvUHVtcE1hbnVhbC5t
ZApAQCAtMCwwICsxLDE3NyBAQAorCisKKzxiPlA8L2I+dW1wIGlzIDxiPlU8L2I+c2VmdWwgZm9y
IDxiPk08L2I+ZXRhIDxiPlA8L2I+cm9ncmFtbWluZy4KKworIyBUaGUgUHJvYmxlbSAjCisKK1Rl
bXBsYXRlIGFuZCBtYWNybyBsaWJyYXJpZXMgb2Z0ZW4gbmVlZCB0byBkZWZpbmUgbWFueSBjbGFz
c2VzLAorZnVuY3Rpb25zLCBvciBtYWNyb3MgdGhhdCB2YXJ5IG9ubHkgKG9yIGFsbW9zdCBvbmx5
KSBpbiB0aGUgbnVtYmVyIG9mCithcmd1bWVudHMgdGhleSB0YWtlLiBJdCdzIGEgbG90IG9mIHJl
cGV0aXRpdmUsIG1lY2hhbmljYWwsIGFuZAorZXJyb3ItcHJvbmUgd29yay4KKworVmFyaWFkaWMg
dGVtcGxhdGVzIGFuZCB2YXJpYWRpYyBtYWNyb3MgY2FuIGFsbGV2aWF0ZSB0aGUgcHJvYmxlbS4K
K0hvd2V2ZXIsIHdoaWxlIGJvdGggYXJlIGJlaW5nIGNvbnNpZGVyZWQgYnkgdGhlIEMrKyBjb21t
aXR0ZWUsIG5laXRoZXIKK2lzIGluIHRoZSBzdGFuZGFyZCB5ZXQgb3Igd2lkZWx5IHN1cHBvcnRl
ZCBieSBjb21waWxlcnMuICBUaHVzIHRoZXkKK2FyZSBvZnRlbiBub3QgYSBnb29kIGNob2ljZSwg
ZXNwZWNpYWxseSB3aGVuIHlvdXIgY29kZSBuZWVkcyB0byBiZQorcG9ydGFibGUuIEFuZCB0aGVp
ciBjYXBhYmlsaXRpZXMgYXJlIHN0aWxsIGxpbWl0ZWQuCisKK0FzIGEgcmVzdWx0LCBhdXRob3Jz
IG9mIHN1Y2ggbGlicmFyaWVzIG9mdGVuIGhhdmUgdG8gd3JpdGUgc2NyaXB0cyB0bworZ2VuZXJh
dGUgdGhlaXIgaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIsIG91ciBleHBlcmllbmNlIGlzIHRoYXQg
aXQncwordGVkaW91cyB0byB3cml0ZSBzdWNoIHNjcmlwdHMsIHdoaWNoIHRlbmQgdG8gcmVmbGVj
dCB0aGUgc3RydWN0dXJlIG9mCit0aGUgZ2VuZXJhdGVkIGNvZGUgcG9vcmx5IGFuZCBhcmUgb2Z0
ZW4gaGFyZCB0byByZWFkIGFuZCBlZGl0LiBGb3IKK2V4YW1wbGUsIGEgc21hbGwgY2hhbmdlIG5l
ZWRlZCBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUgbWF5IHJlcXVpcmUgc29tZQorbm9uLWludHVpdGl2
ZSwgbm9uLXRyaXZpYWwgY2hhbmdlcyBpbiB0aGUgc2NyaXB0LiBUaGlzIGlzIGVzcGVjaWFsbHkK
K3BhaW5mdWwgd2hlbiBleHBlcmltZW50aW5nIHdpdGggdGhlIGNvZGUuCisKKyMgT3VyIFNvbHV0
aW9uICMKKworUHVtcCAoZm9yIFB1bXAgaXMgVXNlZnVsIGZvciBNZXRhIFByb2dyYW1taW5nLCBQ
cmV0dHkgVXNlZnVsIGZvciBNZXRhCitQcm9ncmFtbWluZywgb3IgUHJhY3RpY2FsIFV0aWxpdHkg
Zm9yIE1ldGEgUHJvZ3JhbW1pbmcsIHdoaWNoZXZlciB5b3UKK3ByZWZlcikgaXMgYSBzaW1wbGUg
bWV0YS1wcm9ncmFtbWluZyB0b29sIGZvciBDKysuIFRoZSBpZGVhIGlzIHRoYXQgYQorcHJvZ3Jh
bW1lciB3cml0ZXMgYSBgZm9vLnB1bXBgIGZpbGUgd2hpY2ggY29udGFpbnMgQysrIGNvZGUgcGx1
cyBtZXRhCitjb2RlIHRoYXQgbWFuaXB1bGF0ZXMgdGhlIEMrKyBjb2RlLiBUaGUgbWV0YSBjb2Rl
IGNhbiBoYW5kbGUKK2l0ZXJhdGlvbnMgb3ZlciBhIHJhbmdlLCBuZXN0ZWQgaXRlcmF0aW9ucywg
bG9jYWwgbWV0YSB2YXJpYWJsZQorZGVmaW5pdGlvbnMsIHNpbXBsZSBhcml0aG1ldGljLCBhbmQg
Y29uZGl0aW9uYWwgZXhwcmVzc2lvbnMuIFlvdSBjYW4KK3ZpZXcgaXQgYXMgYSBzbWFsbCBEb21h
aW4tU3BlY2lmaWMgTGFuZ3VhZ2UuIFRoZSBtZXRhIGxhbmd1YWdlIGlzCitkZXNpZ25lZCB0byBi
ZSBub24taW50cnVzaXZlIChzLnQuIGl0IHdvbid0IGNvbmZ1c2UgRW1hY3MnIEMrKyBtb2RlLAor
Zm9yIGV4YW1wbGUpIGFuZCBjb25jaXNlLCBtYWtpbmcgUHVtcCBjb2RlIGludHVpdGl2ZSBhbmQg
ZWFzeSB0bworbWFpbnRhaW4uCisKKyMjIEhpZ2hsaWdodHMgIyMKKworICAqIFRoZSBpbXBsZW1l
bnRhdGlvbiBpcyBpbiBhIHNpbmdsZSBQeXRob24gc2NyaXB0IGFuZCB0aHVzIHVsdHJhIHBvcnRh
YmxlOiBubyBidWlsZCBvciBpbnN0YWxsYXRpb24gaXMgbmVlZGVkIGFuZCBpdCB3b3JrcyBjcm9z
cyBwbGF0Zm9ybXMuCisgICogUHVtcCB0cmllcyB0byBiZSBzbWFydCB3aXRoIHJlc3BlY3QgdG8g
W0dvb2dsZSdzIHN0eWxlIGd1aWRlXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL3N0eWxlZ3Vp
ZGUpOiBpdCBicmVha3MgbG9uZyBsaW5lcyAoZWFzeSB0byBoYXZlIHdoZW4gdGhleSBhcmUgZ2Vu
ZXJhdGVkKSBhdCBhY2NlcHRhYmxlIHBsYWNlcyB0byBmaXQgd2l0aGluIDgwIGNvbHVtbnMgYW5k
IGluZGVudCB0aGUgY29udGludWF0aW9uIGxpbmVzIGNvcnJlY3RseS4KKyAgKiBUaGUgZm9ybWF0
IGlzIGh1bWFuLXJlYWRhYmxlIGFuZCBtb3JlIGNvbmNpc2UgdGhhbiBYTUwuCisgICogVGhlIGZv
cm1hdCB3b3JrcyByZWxhdGl2ZWx5IHdlbGwgd2l0aCBFbWFjcycgQysrIG1vZGUuCisKKyMjIEV4
YW1wbGVzICMjCisKK1RoZSBmb2xsb3dpbmcgUHVtcCBjb2RlICh3aGVyZSBtZXRhIGtleXdvcmRz
IHN0YXJ0IHdpdGggYCRgLCBgW1tgIGFuZCBgXV1gIGFyZSBtZXRhIGJyYWNrZXRzLCBhbmQgYCQk
YCBzdGFydHMgYSBtZXRhIGNvbW1lbnQgdGhhdCBlbmRzIHdpdGggdGhlIGxpbmUpOgorCitgYGAK
KyR2YXIgbiA9IDMgICAgICQkIERlZmluZXMgYSBtZXRhIHZhcmlhYmxlIG4uCiskcmFuZ2UgaSAw
Li5uICAkJCBEZWNsYXJlcyB0aGUgcmFuZ2Ugb2YgbWV0YSBpdGVyYXRvciBpIChpbmNsdXNpdmUp
LgorJGZvciBpIFtbCisgICAgICAgICAgICAgICAkJCBNZXRhIGxvb3AuCisvLyBGb28kaSBkb2Vz
IGJsYWggZm9yICRpLWFyeSBwcmVkaWNhdGVzLgorJHJhbmdlIGogMS4uaQordGVtcGxhdGUgPHNp
emVfdCBOICRmb3IgaiBbWywgdHlwZW5hbWUgQSRqXV0+CitjbGFzcyBGb28kaSB7CiskaWYgaSA9
PSAwIFtbCisgIGJsYWggYTsKK11dICRlbGlmIGkgPD0gMiBbWworICBibGFoIGI7CitdXSAkZWxz
ZSBbWworICBibGFoIGM7CitdXQorfTsKKworXV0KK2BgYAorCit3aWxsIGJlIHRyYW5zbGF0ZWQg
YnkgdGhlIFB1bXAgY29tcGlsZXIgdG86CisKK2BgYAorLy8gRm9vMCBkb2VzIGJsYWggZm9yIDAt
YXJ5IHByZWRpY2F0ZXMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4+CitjbGFzcyBGb28wIHsKKyAgYmxh
aCBhOworfTsKKworLy8gRm9vMSBkb2VzIGJsYWggZm9yIDEtYXJ5IHByZWRpY2F0ZXMuCit0ZW1w
bGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIEExPgorY2xhc3MgRm9vMSB7CisgIGJsYWggYjsKK307
CisKKy8vIEZvbzIgZG9lcyBibGFoIGZvciAyLWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNp
emVfdCBOLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTI+CitjbGFzcyBGb28yIHsKKyAgYmxhaCBi
OworfTsKKworLy8gRm9vMyBkb2VzIGJsYWggZm9yIDMtYXJ5IHByZWRpY2F0ZXMuCit0ZW1wbGF0
ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTM+CitjbGFz
cyBGb28zIHsKKyAgYmxhaCBjOworfTsKK2BgYAorCitJbiBhbm90aGVyIGV4YW1wbGUsCisKK2Bg
YAorJHJhbmdlIGkgMS4ubgorRnVuYygkZm9yIGkgKyBbW2EkaV1dKTsKKyQkIFRoZSB0ZXh0IGJl
dHdlZW4gaSBhbmQgW1sgaXMgdGhlIHNlcGFyYXRvciBiZXR3ZWVuIGl0ZXJhdGlvbnMuCitgYGAK
Kword2lsbCBnZW5lcmF0ZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBsaW5lcyAod2l0aG91dCB0aGUg
Y29tbWVudHMpLCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGBuYDoKKworYGBgCitGdW5jKCk7
ICAgICAgICAgICAgICAvLyBJZiBuIGlzIDAuCitGdW5jKGExKTsgICAgICAgICAgICAvLyBJZiBu
IGlzIDEuCitGdW5jKGExICsgYTIpOyAgICAgICAvLyBJZiBuIGlzIDIuCitGdW5jKGExICsgYTIg
KyBhMyk7ICAvLyBJZiBuIGlzIDMuCisvLyBBbmQgc28gb24uLi4KK2BgYAorCisjIyBDb25zdHJ1
Y3RzICMjCisKK1dlIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBtZXRhIHByb2dyYW1taW5nIGNvbnN0
cnVjdHM6CisKK3wgYCR2YXIgaWQgPSBleHBgIHwgRGVmaW5lcyBhIG5hbWVkIGNvbnN0YW50IHZh
bHVlLiBgJGlkYCBpcyB2YWxpZCB1dGlsIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgbWV0YSBsZXhp
Y2FsIGJsb2NrLiB8Cit8Oi0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfAorfCBgJHJhbmdlIGlkIGV4cC4uZXhwYCB8IFNldHMgdGhlIHJhbmdl
IG9mIGFuIGl0ZXJhdGlvbiB2YXJpYWJsZSwgd2hpY2ggY2FuIGJlIHJldXNlZCBpbiBtdWx0aXBs
ZSBsb29wcyBsYXRlci4gICAgICAgICAgfAorfCBgJGZvciBpZCBzZXAgW1sgY29kZSBdXWAgfCBJ
dGVyYXRpb24uIFRoZSByYW5nZSBvZiBgaWRgIG11c3QgaGF2ZSBiZWVuIGRlZmluZWQgZWFybGll
ci4gYCRpZGAgaXMgdmFsaWQgaW4gYGNvZGVgLiAgICAgICAgIHwKK3wgYCQoJClgICAgICAgICAg
IHwgR2VuZXJhdGVzIGEgc2luZ2xlIGAkYCBjaGFyYWN0ZXIuICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGAkaWRgICAgICAg
ICAgICB8IFZhbHVlIG9mIHRoZSBuYW1lZCBjb25zdGFudCBvciBpdGVyYXRpb24gdmFyaWFibGUu
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgJChleHAp
YCAgICAgICAgfCBWYWx1ZSBvZiB0aGUgZXhwcmVzc2lvbi4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYCRp
ZiBleHAgW1sgY29kZSBdXSBlbHNlX2JyYW5jaGAgfCBDb25kaXRpb25hbC4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKK3wgYFtbIGNvZGUgXV1gICAgIHwgTWV0YSBsZXhpY2FsIGJsb2NrLiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8Cit8IGBjcHBfY29kZWAgICAgICB8IFJhdyBDKysgY29kZS4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorfCBgJCQgY29tbWVudGAgICAgfCBNZXRhIGNvbW1lbnQu
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKworKipOb3RlOioqIFRvIGdpdmUgdGhlIHVzZXIg
c29tZSBmcmVlZG9tIGluIGZvcm1hdHRpbmcgdGhlIFB1bXAgc291cmNlCitjb2RlLCBQdW1wIGln
bm9yZXMgYSBuZXctbGluZSBjaGFyYWN0ZXIgaWYgaXQncyByaWdodCBhZnRlciBgJGZvciBmb29g
CitvciBuZXh0IHRvIGBbW2Agb3IgYF1dYC4gV2l0aG91dCB0aGlzIHJ1bGUgeW91J2xsIG9mdGVu
IGJlIGZvcmNlZCB0byB3cml0ZQordmVyeSBsb25nIGxpbmVzIHRvIGdldCB0aGUgZGVzaXJlZCBv
dXRwdXQuIFRoZXJlZm9yZSBzb21ldGltZXMgeW91IG1heQorbmVlZCB0byBpbnNlcnQgYW4gZXh0
cmEgbmV3LWxpbmUgaW4gc3VjaCBwbGFjZXMgZm9yIGEgbmV3LWxpbmUgdG8gc2hvdwordXAgaW4g
eW91ciBvdXRwdXQuCisKKyMjIEdyYW1tYXIgIyMKKworYGBgCitjb2RlIDo6PSBhdG9taWNfY29k
ZSoKK2F0b21pY19jb2RlIDo6PSAkdmFyIGlkID0gZXhwCisgICAgfCAkdmFyIGlkID0gW1sgY29k
ZSBdXQorICAgIHwgJHJhbmdlIGlkIGV4cC4uZXhwCisgICAgfCAkZm9yIGlkIHNlcCBbWyBjb2Rl
IF1dCisgICAgfCAkKCQpCisgICAgfCAkaWQKKyAgICB8ICQoZXhwKQorICAgIHwgJGlmIGV4cCBb
WyBjb2RlIF1dIGVsc2VfYnJhbmNoCisgICAgfCBbWyBjb2RlIF1dCisgICAgfCBjcHBfY29kZQor
c2VwIDo6PSBjcHBfY29kZSB8IGVtcHR5X3N0cmluZworZWxzZV9icmFuY2ggOjo9ICRlbHNlIFtb
IGNvZGUgXV0KKyAgICB8ICRlbGlmIGV4cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNoCisgICAgfCBl
bXB0eV9zdHJpbmcKK2V4cCA6Oj0gc2ltcGxlX2V4cHJlc3Npb25faW5fUHl0aG9uX3N5bnRheAor
YGBgCisKKyMjIENvZGUgIyMKKworWW91IGNhbiBmaW5kIHRoZSBzb3VyY2UgY29kZSBvZiBQdW1w
IGluIFtzY3JpcHRzL3B1bXAucHldKC4uL3NjcmlwdHMvcHVtcC5weSkuIEl0IGlzIHN0aWxsCit2
ZXJ5IHVucG9saXNoZWQgYW5kIGxhY2tzIGF1dG9tYXRlZCB0ZXN0cywgYWx0aG91Z2ggaXQgaGFz
IGJlZW4KK3N1Y2Nlc3NmdWxseSB1c2VkIG1hbnkgdGltZXMuIElmIHlvdSBmaW5kIGEgY2hhbmNl
IHRvIHVzZSBpdCBpbiB5b3VyCitwcm9qZWN0LCBwbGVhc2UgbGV0IHVzIGtub3cgd2hhdCB5b3Ug
dGhpbmshICBXZSBhbHNvIHdlbGNvbWUgaGVscCBvbgoraW1wcm92aW5nIFB1bXAuCisKKyMjIFJl
YWwgRXhhbXBsZXMgIyMKKworWW91IGNhbiBmaW5kIHJlYWwtd29ybGQgYXBwbGljYXRpb25zIG9m
IFB1bXAgaW4gW0dvb2dsZSBUZXN0XShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRl
c3QvdHJlZS9tYXN0ZXIvZ29vZ2xldGVzdCkgYW5kIFtHb29nbGUgTW9ja10oaHR0cHM6Ly9naXRo
dWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L3RyZWUvbWFzdGVyL2dvb2dsZW1vY2spLiBUaGUgc291
cmNlIGZpbGUgYGZvby5oLnB1bXBgIGdlbmVyYXRlcyBgZm9vLmhgLgorCisjIyBUaXBzICMjCisK
KyAgKiBJZiBhIG1ldGEgdmFyaWFibGUgaXMgZm9sbG93ZWQgYnkgYSBsZXR0ZXIgb3IgZGlnaXQs
IHlvdSBjYW4gc2VwYXJhdGUgdGhlbSB1c2luZyBgW1tdXWAsIHdoaWNoIGluc2VydHMgYW4gZW1w
dHkgc3RyaW5nLiBGb3IgZXhhbXBsZSBgRm9vJGpbW11dSGVscGVyYCBnZW5lcmF0ZSBgRm9vMUhl
bHBlcmAgd2hlbiBgamAgaXMgMS4KKyAgKiBUbyBhdm9pZCBleHRyYS1sb25nIFB1bXAgc291cmNl
IGxpbmVzLCB5b3UgY2FuIGJyZWFrIGEgbGluZSBhbnl3aGVyZSB5b3Ugd2FudCBieSBpbnNlcnRp
bmcgYFtbXV1gIGZvbGxvd2VkIGJ5IGEgbmV3IGxpbmUuIFNpbmNlIGFueSBuZXctbGluZSBjaGFy
YWN0ZXIgbmV4dCB0byBgW1tgIG9yIGBdXWAgaXMgaWdub3JlZCwgdGhlIGdlbmVyYXRlZCBjb2Rl
IHdvbid0IGNvbnRhaW4gdGhpcyBuZXcgbGluZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2RvY3MvWGNvZGVHdWlkZS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2Rv
Y3MvWGNvZGVHdWlkZS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzYwYTMzZGFkNDNiYWY5ODM4MWY3YzlmMjBm
NjliNTU4YjJhYWQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
ZG9jcy9YY29kZUd1aWRlLm1kCkBAIC0wLDAgKzEsOTMgQEAKKworCitUaGlzIGd1aWRlIHdpbGwg
ZXhwbGFpbiBob3cgdG8gdXNlIHRoZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaW4geW91ciBY
Y29kZSBwcm9qZWN0cyBvbiBNYWMgT1MgWC4gVGhpcyB0dXRvcmlhbCBiZWdpbnMgYnkgcXVpY2ts
eSBleHBsYWluaW5nIHdoYXQgdG8gZG8gZm9yIGV4cGVyaWVuY2VkIHVzZXJzLiBBZnRlciB0aGUg
cXVpY2sgc3RhcnQsIHRoZSBndWlkZSBnb2VzIHByb3ZpZGVzIGFkZGl0aW9uYWwgZXhwbGFuYXRp
b24gYWJvdXQgZWFjaCBzdGVwLgorCisjIFF1aWNrIFN0YXJ0ICMKKworSGVyZSBpcyB0aGUgcXVp
Y2sgZ3VpZGUgZm9yIHVzaW5nIEdvb2dsZSBUZXN0IGluIHlvdXIgWGNvZGUgcHJvamVjdC4KKwor
ICAxLiBEb3dubG9hZCB0aGUgc291cmNlIGZyb20gdGhlIFt3ZWJzaXRlXShodHRwczovL2dpdGh1
Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QpIHVzaW5nIHRoaXMgY29tbWFuZDogYHN2biBjaGVja291
dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvIGdvb2dsZXRlc3Qt
cmVhZC1vbmx5YC4KKyAgMS4gT3BlbiB1cCB0aGUgYGd0ZXN0Lnhjb2RlcHJvamAgaW4gdGhlIGBn
b29nbGV0ZXN0LXJlYWQtb25seS94Y29kZS9gIGRpcmVjdG9yeSBhbmQgYnVpbGQgdGhlIGd0ZXN0
LmZyYW1ld29yay4KKyAgMS4gQ3JlYXRlIGEgbmV3ICJTaGVsbCBUb29sIiB0YXJnZXQgaW4geW91
ciBYY29kZSBwcm9qZWN0IGNhbGxlZCBzb21ldGhpbmcgbGlrZSAiVW5pdFRlc3RzIi4KKyAgMS4g
QWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8geW91ciBwcm9qZWN0IGFuZCBhZGQgaXQgdG8gdGhl
ICJMaW5rIEJpbmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgIlVuaXRUZXN0cyIu
CisgIDEuIEFkZCB5b3VyIHVuaXQgdGVzdCBzb3VyY2UgY29kZSB0byB0aGUgIkNvbXBpbGUgU291
cmNlcyIgYnVpbGQgcGhhc2Ugb2YgIlVuaXRUZXN0cyIuCisgIDEuIEVkaXQgdGhlICJVbml0VGVz
dHMiIGV4ZWN1dGFibGUgYW5kIGFkZCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lZCAiRFlM
RFxfRlJBTUVXT1JLXF9QQVRIIiB3aXRoIGEgdmFsdWUgZXF1YWwgdG8gdGhlIHBhdGggdG8gdGhl
IGZyYW1ld29yayBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsgcmVsYXRpdmUgdG8gdGhl
IGNvbXBpbGVkIGV4ZWN1dGFibGUuCisgIDEuIEJ1aWxkIGFuZCBHby4KKworVGhlIGZvbGxvd2lu
ZyBzZWN0aW9ucyBmdXJ0aGVyIGV4cGxhaW4gZWFjaCBvZiB0aGUgc3RlcHMgbGlzdGVkIGFib3Zl
IGluIGRlcHRoLCBkZXNjcmliaW5nIGluIG1vcmUgZGV0YWlsIGhvdyB0byBjb21wbGV0ZSBpdCBp
bmNsdWRpbmcgc29tZSB2YXJpYXRpb25zLgorCisjIEdldCB0aGUgU291cmNlICMKKworQ3VycmVu
dGx5LCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIGRpc2N1c3NlZCBoZXJlIGlzbid0IGF2YWlsYWJsZSBp
biBhIHRhZ2dlZCByZWxlYXNlIG9mIEdvb2dsZSBUZXN0LCBpdCBpcyBvbmx5IGF2YWlsYWJsZSBp
biB0aGUgdHJ1bmsuIEFzIGV4cGxhaW5lZCBhdCB0aGUgR29vZ2xlIFRlc3QgW3NpdGVdKGh0dHBz
Oi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdCksIHlvdSBjYW4gZ2V0IHRoZSBjb2RlIGZy
b20gYW5vbnltb3VzIFNWTiB3aXRoIHRoaXMgY29tbWFuZDoKKworYGBgCitzdm4gY2hlY2tvdXQg
aHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rLyBnb29nbGV0ZXN0LXJl
YWQtb25seQorYGBgCisKK0FsdGVybmF0aXZlbHksIGlmIHlvdSBhcmUgd29ya2luZyB3aXRoIFN1
YnZlcnNpb24gaW4geW91ciBvd24gY29kZSBiYXNlLCB5b3UgY2FuIGFkZCBHb29nbGUgVGVzdCBh
cyBhbiBleHRlcm5hbCBkZXBlbmRlbmN5IHRvIHlvdXIgb3duIFN1YnZlcnNpb24gcmVwb3NpdG9y
eS4gQnkgZm9sbG93aW5nIHRoaXMgYXBwcm9hY2gsIGV2ZXJ5b25lIHRoYXQgY2hlY2tzIG91dCB5
b3VyIHN2biByZXBvc2l0b3J5IHdpbGwgYWxzbyByZWNlaXZlIGEgY29weSBvZiBHb29nbGUgVGVz
dCAoYSBzcGVjaWZpYyB2ZXJzaW9uLCBpZiB5b3Ugd2lzaCkgd2l0aG91dCBoYXZpbmcgdG8gY2hl
Y2sgaXQgb3V0IGV4cGxpY2l0bHkuIFRoaXMgbWFrZXMgdGhlIHNldCB1cCBvZiB5b3VyIHByb2pl
Y3Qgc2ltcGxlciBhbmQgcmVkdWNlcyB0aGUgY29waWVkIGNvZGUgaW4gdGhlIHJlcG9zaXRvcnku
CisKK1RvIHVzZSBgc3ZuOmV4dGVybmFsc2AsIGRlY2lkZSB3aGVyZSB5b3Ugd291bGQgbGlrZSB0
byBoYXZlIHRoZSBleHRlcm5hbCBzb3VyY2UgcmVzaWRlLiBZb3UgbWlnaHQgY2hvb3NlIHRvIHB1
dCB0aGUgZXh0ZXJuYWwgc291cmNlIGluc2lkZSB0aGUgdHJ1bmssIGJlY2F1c2UgeW91IHdhbnQg
aXQgdG8gYmUgcGFydCBvZiB0aGUgYnJhbmNoIHdoZW4geW91IG1ha2UgYSByZWxlYXNlLiBIb3dl
dmVyLCBrZWVwaW5nIGl0IG91dHNpZGUgdGhlIHRydW5rIGluIGEgdmVyc2lvbi10YWdnZWQgZGly
ZWN0b3J5IGNhbGxlZCBzb21ldGhpbmcgbGlrZSBgdGhpcmQtcGFydHkvZ29vZ2xldGVzdC8xLjAu
MWAsIGlzIGFub3RoZXIgb3B0aW9uLiBPbmNlIHRoZSBsb2NhdGlvbiBpcyBlc3RhYmxpc2hlZCwg
dXNlIGBzdm4gcHJvcGVkaXQgc3ZuOmV4dGVybmFscyBfZGlyZWN0b3J5X2AgdG8gc2V0IHRoZSBz
dm46ZXh0ZXJuYWxzIHByb3BlcnR5IG9uIGEgZGlyZWN0b3J5IGluIHlvdXIgcmVwb3NpdG9yeS4g
VGhpcyBkaXJlY3Rvcnkgd29uJ3QgY29udGFpbiB0aGUgY29kZSwgYnV0IGJlIGl0cyB2ZXJzaW9u
ZWQgcGFyZW50IGRpcmVjdG9yeS4KKworVGhlIGNvbW1hbmQgYHN2biBwcm9wZWRpdGAgd2lsbCBi
cmluZyB1cCB5b3VyIFN1YnZlcnNpb24gZWRpdG9yLCBtYWtpbmcgZWRpdGluZyB0aGUgbG9uZywg
KHBvdGVudGlhbGx5IG11bHRpLWxpbmUpIHByb3BlcnR5IHNpbXBsZXIuIFRoaXMgc2FtZSBtZXRo
b2QgY2FuIGJlIHVzZWQgdG8gY2hlY2sgb3V0IGEgdGFnZ2VkIGJyYW5jaCwgYnkgdXNpbmcgdGhl
IGFwcHJvcHJpYXRlIFVSTCAoZS5nLiBgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0
ZXN0L3JlbGVhc2VzL3RhZy9yZWxlYXNlLTEuMC4xYCkuIEFkZGl0aW9uYWxseSwgdGhlIHN2bjpl
eHRlcm5hbHMgcHJvcGVydHkgYWxsb3dzIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgcGFydGljdWxh
ciByZXZpc2lvbiBvZiB0aGUgdHJ1bmsgd2l0aCB0aGUgYC1yXyMjX2Agb3B0aW9uIChlLmcuIGBl
eHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QgLXI2MCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2Rl
LmNvbS9zdm4vdHJ1bmtgKS4KKworSGVyZSBpcyBhbiBleGFtcGxlIG9mIHVzaW5nIHRoZSBzdm46
ZXh0ZXJuYWxzIHByb3BlcnRpZXMgb24gYSB0cnVuayAocmVhZCB2aWEgYHN2biBwcm9wZ2V0YCkg
b2YgYSBwcm9qZWN0LiBUaGlzIHZhbHVlIGNoZWNrcyBvdXQgYSBjb3B5IG9mIEdvb2dsZSBUZXN0
IGludG8gdGhlIGB0cnVuay9leHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QvYCBkaXJlY3RvcnkuCisK
K2BgYAorW0NvbXB1dGVyOnN2bl0gdXNlciQgc3ZuIHByb3BnZXQgc3ZuOmV4dGVybmFscyB0cnVu
aworZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUu
Y29tL3N2bi90cnVuaworYGBgCisKKyMgQWRkIHRoZSBGcmFtZXdvcmsgdG8gWW91ciBQcm9qZWN0
ICMKKworVGhlIG5leHQgc3RlcCBpcyB0byBidWlsZCBhbmQgYWRkIHRoZSBndGVzdC5mcmFtZXdv
cmsgdG8geW91ciBvd24gcHJvamVjdC4gVGhpcyBndWlkZSBkZXNjcmliZXMgdHdvIGNvbW1vbiB3
YXlzIGJlbG93LgorCisgICogKipPcHRpb24gMSoqIC0tLSBUaGUgc2ltcGxlc3Qgd2F5IHRvIGFk
ZCBHb29nbGUgVGVzdCB0byB5b3VyIG93biBwcm9qZWN0LCBpcyB0byBvcGVuIGd0ZXN0Lnhjb2Rl
cHJvaiAoZm91bmQgaW4gdGhlIHhjb2RlLyBkaXJlY3Rvcnkgb2YgdGhlIEdvb2dsZSBUZXN0IHRy
dW5rKSBhbmQgYnVpbGQgdGhlIGZyYW1ld29yayBtYW51YWxseS4gVGhlbiwgYWRkIHRoZSBidWls
dCBmcmFtZXdvcmsgaW50byB5b3VyIHByb2plY3QgdXNpbmcgdGhlICJBZGQtPkV4aXN0aW5nIEZy
YW1ld29yay4uLiIgZnJvbSB0aGUgY29udGV4dCBtZW51IG9yICJQcm9qZWN0LT5BZGQuLi4iIGZy
b20gdGhlIG1haW4gbWVudS4gVGhlIGd0ZXN0LmZyYW1ld29yayBpcyByZWxvY2F0YWJsZSBhbmQg
Y29udGFpbnMgdGhlIGhlYWRlcnMgYW5kIG9iamVjdCBjb2RlIHRoYXQgeW91J2xsIG5lZWQgdG8g
bWFrZSB0ZXN0cy4gVGhpcyBtZXRob2QgcmVxdWlyZXMgcmVidWlsZGluZyBldmVyeSB0aW1lIHlv
dSB1cGdyYWRlIEdvb2dsZSBUZXN0IGluIHlvdXIgcHJvamVjdC4KKyAgKiAqKk9wdGlvbiAyKiog
LS0tIElmIHlvdSBhcmUgZ29pbmcgdG8gYmUgbGl2aW5nIG9mZiB0aGUgdHJ1bmsgb2YgR29vZ2xl
IFRlc3QsIGluY29ycG9yYXRpbmcgaXRzIGxhdGVzdCBmZWF0dXJlcyBpbnRvIHlvdXIgdW5pdCB0
ZXN0cyAob3IgYXJlIGEgR29vZ2xlIFRlc3QgZGV2ZWxvcGVyIHlvdXJzZWxmKS4gWW91J2xsIHdh
bnQgdG8gcmVidWlsZCB0aGUgZnJhbWV3b3JrIGV2ZXJ5IHRpbWUgdGhlIHNvdXJjZSB1cGRhdGVz
LiB0byBkbyB0aGlzLCB5b3UnbGwgbmVlZCB0byBhZGQgdGhlIGd0ZXN0Lnhjb2RlcHJvaiBmaWxl
LCBub3QgdGhlIGZyYW1ld29yayBpdHNlbGYsIHRvIHlvdXIgb3duIFhjb2RlIHByb2plY3QuIFRo
ZW4sIGZyb20gdGhlIGJ1aWxkIHByb2R1Y3RzIHRoYXQgYXJlIHJldmVhbGVkIGJ5IHRoZSBwcm9q
ZWN0J3MgZGlzY2xvc3VyZSB0cmlhbmdsZSwgeW91IGNhbiBmaW5kIHRoZSBndGVzdC5mcmFtZXdv
cmssIHdoaWNoIGNhbiBiZSBhZGRlZCB0byB5b3VyIHRhcmdldHMgKGRpc2N1c3NlZCBiZWxvdyku
CisKKyMgTWFrZSBhIFRlc3QgVGFyZ2V0ICMKKworVG8gc3RhcnQgd3JpdGluZyB0ZXN0cywgbWFr
ZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0LiBUaGlzIHRhcmdldCB0ZW1wbGF0ZSBpcyBhdmFp
bGFibGUgdW5kZXIgQlNELCBDb2NvYSwgb3IgQ2FyYm9uLiBBZGQgeW91ciB1bml0IHRlc3Qgc291
cmNlIGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJjZXMiIGJ1aWxkIHBoYXNlIG9mIHRoZSB0YXJn
ZXQuCisKK05leHQsIHlvdSdsbCB3YW50IHRvIGFkZCBndGVzdC5mcmFtZXdvcmsgaW4gdHdvIGRp
ZmZlcmVudCB3YXlzLCBkZXBlbmRpbmcgdXBvbiB3aGljaCBvcHRpb24geW91IGNob3NlIGFib3Zl
LgorCisgICogKipPcHRpb24gMSoqIC0tLSBEdXJpbmcgY29tcGlsYXRpb24sIFhjb2RlIHdpbGwg
bmVlZCB0byBrbm93IHRoYXQgeW91IGFyZSBsaW5raW5nIGFnYWluc3QgdGhlIGd0ZXN0LmZyYW1l
d29yay4gQWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8gdGhlICJMaW5rIEJpbmFyeSB3aXRoIExp
YnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gVGhpcyB3aWxsIGluY2x1
ZGUgdGhlIEdvb2dsZSBUZXN0IGhlYWRlcnMgaW4geW91ciBoZWFkZXIgc2VhcmNoIHBhdGgsIGFu
ZCB3aWxsIHRlbGwgdGhlIGxpbmtlciB3aGVyZSB0byBmaW5kIHRoZSBsaWJyYXJ5LgorICAqICoq
T3B0aW9uIDIqKiAtLS0gSWYgeW91ciB3b3JraW5nIG91dCBvZiB0aGUgdHJ1bmssIHlvdSdsbCBh
bHNvIHdhbnQgdG8gYWRkIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyICJMaW5rIEJpbmFyeSB3aXRo
IExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gSW4gYWRkaXRpb24s
IHlvdSdsbCAgd2FudCB0byBhZGQgdGhlIGd0ZXN0LmZyYW1ld29yayBhcyBhIGRlcGVuZGVuY3kg
dG8geW91ciB1bml0IHRlc3QgdGFyZ2V0LiBUaGlzIHdheSwgWGNvZGUgd2lsbCBtYWtlIHN1cmUg
dGhhdCBndGVzdC5mcmFtZXdvcmsgaXMgdXAgdG8gZGF0ZSwgZXZlcnkgdGltZSB5b3VyIGJ1aWxk
IHlvdXIgdGFyZ2V0LiBGaW5hbGx5LCBpZiB5b3UgZG9uJ3Qgc2hhcmUgYnVpbGQgZGlyZWN0b3Jp
ZXMgd2l0aCBHb29nbGUgVGVzdCwgeW91J2xsIGhhdmUgdG8gY29weSB0aGUgZ3Rlc3QuZnJhbWV3
b3JrIGludG8geW91ciBvd24gYnVpbGQgcHJvZHVjdHMgZGlyZWN0b3J5IHVzaW5nIGEgIlJ1biBT
Y3JpcHQiIGJ1aWxkIHBoYXNlLgorCisjIFNldCBVcCB0aGUgRXhlY3V0YWJsZSBSdW4gRW52aXJv
bm1lbnQgIworCitTaW5jZSB0aGUgdW5pdCB0ZXN0IGV4ZWN1dGFibGUgaXMgYSBzaGVsbCB0b29s
LCBpdCBkb2Vzbid0IGhhdmUgYSBidW5kbGUgd2l0aCBhIGBDb250ZW50cy9GcmFtZXdvcmtzYCBk
aXJlY3RvcnksIGluIHdoaWNoIHRvIHBsYWNlIGd0ZXN0LmZyYW1ld29yay4gSW5zdGVhZCwgdGhl
IGR5bmFtaWMgbGlua2VyIG11c3QgYmUgdG9sZCBhdCBydW50aW1lIHRvIHNlYXJjaCBmb3IgdGhl
IGZyYW1ld29yayBpbiBhbm90aGVyIGxvY2F0aW9uLiBUaGlzIGNhbiBiZSBhY2NvbXBsaXNoZWQg
Ynkgc2V0dGluZyB0aGUgIkRZTERcX0ZSQU1FV09SS1xfUEFUSCIgZW52aXJvbm1lbnQgdmFyaWFi
bGUgaW4gdGhlICJFZGl0IEFjdGl2ZSBFeGVjdXRhYmxlIC4uLiIgQXJndW1lbnRzIHRhYiwgdW5k
ZXIgIlZhcmlhYmxlcyB0byBiZSBzZXQgaW4gdGhlIGVudmlyb25tZW50OiIuIFRoZSBwYXRoIGZv
ciB0aGlzIHZhbHVlIGlzIHRoZSBwYXRoIChyZWxhdGl2ZSBvciBhYnNvbHV0ZSkgb2YgdGhlIGRp
cmVjdG9yeSBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsuCisKK0lmIHlvdSBoYXZlbid0
IHNldCB1cCB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRILCBjb3JyZWN0bHksIHlvdSBtaWdodCBn
ZXQgYSBtZXNzYWdlIGxpa2UgdGhpczoKKworYGBgCitbU2Vzc2lvbiBzdGFydGVkIGF0IDIwMDgt
MDgtMTUgMDY6MjM6NTcgLTA2MDAuXQorICBkeWxkOiBMaWJyYXJ5IG5vdCBsb2FkZWQ6IEBsb2Fk
ZXJfcGF0aC8uLi9GcmFtZXdvcmtzL2d0ZXN0LmZyYW1ld29yay9WZXJzaW9ucy9BL2d0ZXN0Cisg
ICAgUmVmZXJlbmNlZCBmcm9tOiAvVXNlcnMvdXNlcm5hbWUvRG9jdW1lbnRzL1NhbmRib3gvZ3Rl
c3RTYW1wbGUvYnVpbGQvRGVidWcvV2lkZ2V0RnJhbWV3b3JrVGVzdAorICAgIFJlYXNvbjogaW1h
Z2Ugbm90IGZvdW5kCitgYGAKKworVG8gY29ycmVjdCB0aGlzIHByb2JsZW0sIGdvIHRvIHRvIHRo
ZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZXhlY3V0YWJsZSBuYW1lZCBpbiAiUmVmZXJlbmNl
ZCBmcm9tOiIgdmFsdWUgaW4gdGhlIGVycm9yIG1lc3NhZ2UgYWJvdmUuIFRoZW4sIHdpdGggdGhl
IHRlcm1pbmFsIGluIHRoaXMgbG9jYXRpb24sIGZpbmQgdGhlIHJlbGF0aXZlIHBhdGggdG8gdGhl
IGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsuIFRoYXQgaXMgdGhlIHZh
bHVlIHlvdSdsbCBuZWVkIHRvIHNldCBhcyB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRILgorCisj
IEJ1aWxkIGFuZCBHbyAjCisKK05vdywgd2hlbiB5b3UgY2xpY2sgIkJ1aWxkIGFuZCBHbyIsIHRo
ZSB0ZXN0IHdpbGwgYmUgZXhlY3V0ZWQuIER1bXBpbmcgb3V0IHNvbWV0aGluZyBsaWtlIHRoaXM6
CisKK2BgYAorW1Nlc3Npb24gc3RhcnRlZCBhdCAyMDA4LTA4LTA2IDA2OjM2OjEzIC0wNjAwLl0K
K1s9PT09PT09PT09XSBSdW5uaW5nIDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZS4KK1stLS0tLS0t
LS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCitbLS0tLS0tLS0tLV0gMiB0ZXN0
cyBmcm9tIFdpZGdldEluaXRpYWxpemVyVGVzdAorWyBSVU4gICAgICBdIFdpZGdldEluaXRpYWxp
emVyVGVzdC5UZXN0Q29uc3RydWN0b3IKK1sgICAgICAgT0sgXSBXaWRnZXRJbml0aWFsaXplclRl
c3QuVGVzdENvbnN0cnVjdG9yCitbIFJVTiAgICAgIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRl
c3RDb252ZXJzaW9uCitbICAgICAgIE9LIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb252
ZXJzaW9uCitbLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCitb
PT09PT09PT09PV0gMiB0ZXN0cyBmcm9tIDEgdGVzdCBjYXNlIHJhbi4KK1sgIFBBU1NFRCAgXSAy
IHRlc3RzLgorCitUaGUgRGVidWdnZXIgaGFzIGV4aXRlZCB3aXRoIHN0YXR1cyAwLiAgCitgYGAK
KworIyBTdW1tYXJ5ICMKKworVW5pdCB0ZXN0aW5nIGlzIGEgdmFsdWFibGUgd2F5IHRvIGVuc3Vy
ZSB5b3VyIGRhdGEgbW9kZWwgc3RheXMgdmFsaWQgZXZlbiBkdXJpbmcgcmFwaWQgZGV2ZWxvcG1l
bnQgb3IgcmVmYWN0b3JpbmcuIFRoZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaXMgYSBncmVh
dCB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIGZvciBDIGFuZCBDKysgd2hpY2ggaW50ZWdyYXRlcyB3
ZWxsIHdpdGggYW4gWGNvZGUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL2FkdmFuY2VkLm1kIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvZG9jcy9hZHZhbmNlZC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDY1ZDE5NjIxYThiMzdmYjc4
Y2I1ZTBlZDFiODYxOGZlNzYyNWQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvZG9jcy9hZHZhbmNlZC5tZApAQCAtMCwwICsxLDI1MjAgQEAKKyMgQWR2YW5jZWQg
Z29vZ2xldGVzdCBUb3BpY3MKKworCisjIyBJbnRyb2R1Y3Rpb24KKworTm93IHRoYXQgeW91IGhh
dmUgcmVhZCB0aGUgW2dvb2dsZXRlc3QgUHJpbWVyXShwcmltZXIubWQpIGFuZCBsZWFybmVkIGhv
dyB0byB3cml0ZQordGVzdHMgdXNpbmcgZ29vZ2xldGVzdCwgaXQncyB0aW1lIHRvIGxlYXJuIHNv
bWUgbmV3IHRyaWNrcy4gVGhpcyBkb2N1bWVudCB3aWxsCitzaG93IHlvdSBtb3JlIGFzc2VydGlv
bnMgYXMgd2VsbCBhcyBob3cgdG8gY29uc3RydWN0IGNvbXBsZXggZmFpbHVyZSBtZXNzYWdlcywK
K3Byb3BhZ2F0ZSBmYXRhbCBmYWlsdXJlcywgcmV1c2UgYW5kIHNwZWVkIHVwIHlvdXIgdGVzdCBm
aXh0dXJlcywgYW5kIHVzZSB2YXJpb3VzCitmbGFncyB3aXRoIHlvdXIgdGVzdHMuCisKKyMjIE1v
cmUgQXNzZXJ0aW9ucworCitUaGlzIHNlY3Rpb24gY292ZXJzIHNvbWUgbGVzcyBmcmVxdWVudGx5
IHVzZWQsIGJ1dCBzdGlsbCBzaWduaWZpY2FudCwKK2Fzc2VydGlvbnMuCisKKyMjIyBFeHBsaWNp
dCBTdWNjZXNzIGFuZCBGYWlsdXJlCisKK1RoZXNlIHRocmVlIGFzc2VydGlvbnMgZG8gbm90IGFj
dHVhbGx5IHRlc3QgYSB2YWx1ZSBvciBleHByZXNzaW9uLiBJbnN0ZWFkLCB0aGV5CitnZW5lcmF0
ZSBhIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBkaXJlY3RseS4gTGlrZSB0aGUgbWFjcm9zIHRoYXQgYWN0
dWFsbHkgcGVyZm9ybSBhCit0ZXN0LCB5b3UgbWF5IHN0cmVhbSBhIGN1c3RvbSBmYWlsdXJlIG1l
c3NhZ2UgaW50byB0aGVtLgorCitgYGBjKysKK1NVQ0NFRUQoKTsKK2BgYAorCitHZW5lcmF0ZXMg
YSBzdWNjZXNzLiBUaGlzIGRvZXMgKipOT1QqKiBtYWtlIHRoZSBvdmVyYWxsIHRlc3Qgc3VjY2Vl
ZC4gQSB0ZXN0IGlzCitjb25zaWRlcmVkIHN1Y2Nlc3NmdWwgb25seSBpZiBub25lIG9mIGl0cyBh
c3NlcnRpb25zIGZhaWwgZHVyaW5nIGl0cyBleGVjdXRpb24uCisKK05PVEU6IGBTVUNDRUVEKClg
IGlzIHB1cmVseSBkb2N1bWVudGFyeSBhbmQgY3VycmVudGx5IGRvZXNuJ3QgZ2VuZXJhdGUgYW55
Cit1c2VyLXZpc2libGUgb3V0cHV0LiBIb3dldmVyLCB3ZSBtYXkgYWRkIGBTVUNDRUVEKClgIG1l
c3NhZ2VzIHRvIGdvb2dsZXRlc3Qncworb3V0cHV0IGluIHRoZSBmdXR1cmUuCisKK2BgYGMrKwor
RkFJTCgpOworQUREX0ZBSUxVUkUoKTsKK0FERF9GQUlMVVJFX0FUKCJmaWxlX3BhdGgiLCBsaW5l
X251bWJlcik7CitgYGAKKworYEZBSUwoKWAgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSwgd2hp
bGUgYEFERF9GQUlMVVJFKClgIGFuZCBgQUREX0ZBSUxVUkVfQVQoKWAKK2dlbmVyYXRlIGEgbm9u
ZmF0YWwgZmFpbHVyZS4gVGhlc2UgYXJlIHVzZWZ1bCB3aGVuIGNvbnRyb2wgZmxvdywgcmF0aGVy
IHRoYW4gYQorQm9vbGVhbiBleHByZXNzaW9uLCBkZXRlcm1pbmVzIHRoZSB0ZXN0J3Mgc3VjY2Vz
cyBvciBmYWlsdXJlLiBGb3IgZXhhbXBsZSwgeW91CittaWdodCB3YW50IHRvIHdyaXRlIHNvbWV0
aGluZyBsaWtlOgorCitgYGBjKysKK3N3aXRjaChleHByZXNzaW9uKSB7CisgIGNhc2UgMToKKyAg
ICAgLi4uIHNvbWUgY2hlY2tzIC4uLgorICBjYXNlIDI6CisgICAgIC4uLiBzb21lIG90aGVyIGNo
ZWNrcyAuLi4KKyAgZGVmYXVsdDoKKyAgICAgRkFJTCgpIDw8ICJXZSBzaG91bGRuJ3QgZ2V0IGhl
cmUuIjsKK30KK2BgYAorCitOT1RFOiB5b3UgY2FuIG9ubHkgdXNlIGBGQUlMKClgIGluIGZ1bmN0
aW9ucyB0aGF0IHJldHVybiBgdm9pZGAuIFNlZSB0aGUKK1tBc3NlcnRpb24gUGxhY2VtZW50IHNl
Y3Rpb25dKCNhc3NlcnRpb24tcGxhY2VtZW50KSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworKipB
dmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIEV4Y2VwdGlvbiBBc3Nl
cnRpb25zCisKK1RoZXNlIGFyZSBmb3IgdmVyaWZ5aW5nIHRoYXQgYSBwaWVjZSBvZiBjb2RlIHRo
cm93cyAob3IgZG9lcyBub3QgdGhyb3cpIGFuCitleGNlcHRpb24gb2YgdGhlIGdpdmVuIHR5cGU6
CisKK0ZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmZhdGFs
IGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlcmlmaWVzCistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLQorYEFTU0VSVF9USFJPVyhzdGF0ZW1lbnQs
IGV4Y2VwdGlvbl90eXBlKTtgIHwgYEVYUEVDVF9USFJPVyhzdGF0ZW1lbnQsIGV4Y2VwdGlvbl90
eXBlKTtgIHwgYHN0YXRlbWVudGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiB0aGUgZ2l2ZW4gdHlw
ZQorYEFTU0VSVF9BTllfVEhST1coc3RhdGVtZW50KTtgICAgICAgICAgICAgIHwgYEVYUEVDVF9B
TllfVEhST1coc3RhdGVtZW50KTtgICAgICAgICAgICAgIHwgYHN0YXRlbWVudGAgdGhyb3dzIGFu
IGV4Y2VwdGlvbiBvZiBhbnkgdHlwZQorYEFTU0VSVF9OT19USFJPVyhzdGF0ZW1lbnQpO2AgICAg
ICAgICAgICAgIHwgYEVYUEVDVF9OT19USFJPVyhzdGF0ZW1lbnQpO2AgICAgICAgICAgICAgIHwg
YHN0YXRlbWVudGAgZG9lc24ndCB0aHJvdyBhbnkgZXhjZXB0aW9uCisKK0V4YW1wbGVzOgorCitg
YGBjKysKK0FTU0VSVF9USFJPVyhGb28oNSksIGJhcl9leGNlcHRpb24pOworCitFWFBFQ1RfTk9f
VEhST1coeworICBpbnQgbiA9IDU7CisgIEJhcigmbik7Cit9KTsKK2BgYAorCisqKkF2YWlsYWJp
bGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjOyByZXF1aXJlcyBleGNlcHRpb25zIHRvIGJlIGVu
YWJsZWQgaW4gdGhlCitidWlsZCBlbnZpcm9ubWVudCAobm90ZSB0aGF0IGBnb29nbGUzYCAqKmRp
c2FibGVzKiogZXhjZXB0aW9ucykuCisKKyMjIyBQcmVkaWNhdGUgQXNzZXJ0aW9ucyBmb3IgQmV0
dGVyIEVycm9yIE1lc3NhZ2VzCisKK0V2ZW4gdGhvdWdoIGdvb2dsZXRlc3QgaGFzIGEgcmljaCBz
ZXQgb2YgYXNzZXJ0aW9ucywgdGhleSBjYW4gbmV2ZXIgYmUgY29tcGxldGUsCithcyBpdCdzIGlt
cG9zc2libGUgKG5vciBhIGdvb2QgaWRlYSkgdG8gYW50aWNpcGF0ZSBhbGwgc2NlbmFyaW9zIGEg
dXNlciBtaWdodAorcnVuIGludG8uIFRoZXJlZm9yZSwgc29tZXRpbWVzIGEgdXNlciBoYXMgdG8g
dXNlIGBFWFBFQ1RfVFJVRSgpYCB0byBjaGVjayBhCitjb21wbGV4IGV4cHJlc3Npb24sIGZvciBs
YWNrIG9mIGEgYmV0dGVyIG1hY3JvLiBUaGlzIGhhcyB0aGUgcHJvYmxlbSBvZiBub3QKK3Nob3dp
bmcgeW91IHRoZSB2YWx1ZXMgb2YgdGhlIHBhcnRzIG9mIHRoZSBleHByZXNzaW9uLCBtYWtpbmcg
aXQgaGFyZCB0bwordW5kZXJzdGFuZCB3aGF0IHdlbnQgd3JvbmcuIEFzIGEgd29ya2Fyb3VuZCwg
c29tZSB1c2VycyBjaG9vc2UgdG8gY29uc3RydWN0IHRoZQorZmFpbHVyZSBtZXNzYWdlIGJ5IHRo
ZW1zZWx2ZXMsIHN0cmVhbWluZyBpdCBpbnRvIGBFWFBFQ1RfVFJVRSgpYC4gSG93ZXZlciwgdGhp
cworaXMgYXdrd2FyZCBlc3BlY2lhbGx5IHdoZW4gdGhlIGV4cHJlc3Npb24gaGFzIHNpZGUtZWZm
ZWN0cyBvciBpcyBleHBlbnNpdmUgdG8KK2V2YWx1YXRlLgorCitnb29nbGV0ZXN0IGdpdmVzIHlv
dSB0aHJlZSBkaWZmZXJlbnQgb3B0aW9ucyB0byBzb2x2ZSB0aGlzIHByb2JsZW06CisKKyMjIyMg
VXNpbmcgYW4gRXhpc3RpbmcgQm9vbGVhbiBGdW5jdGlvbgorCitJZiB5b3UgYWxyZWFkeSBoYXZl
IGEgZnVuY3Rpb24gb3IgZnVuY3RvciB0aGF0IHJldHVybnMgYGJvb2xgIChvciBhIHR5cGUgdGhh
dAorY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGBib29sYCksIHlvdSBjYW4gdXNlIGl0
IGluIGEgKnByZWRpY2F0ZQorYXNzZXJ0aW9uKiB0byBnZXQgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50
cyBwcmludGVkIGZvciBmcmVlOgorCit8IEZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAg
ICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgIHwgVmVyaWZpZXMgICAgICAg
ICAgICAgICAgICAgIHwKK3wgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gfAorfCBgQVNTRVJUX1BSRUQxKHByZWQxLCB2YWwxKTtgICAgICAgIHwgYEVYUEVDVF9Q
UkVEMShwcmVkMSwgdmFsMSk7YCAgICAgICB8IGBwcmVkMSh2YWwxKWAgaXMgdHJ1ZSAgICAgICB8
Cit8IGBBU1NFUlRfUFJFRDIocHJlZDIsIHZhbDEsIHZhbDIpO2AgfCBgRVhQRUNUX1BSRUQyKHBy
ZWQyLCB2YWwxLCB2YWwyKTtgIHwgYHByZWQyKHZhbDEsIHZhbDIpYCBpcyB0cnVlIHwKK3wgYC4u
LmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGAuLi5gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgfAorCitJbiB0aGUgYWJv
dmUsIGBwcmVkbmAgaXMgYW4gYG5gLWFyeSBwcmVkaWNhdGUgZnVuY3Rpb24gb3IgZnVuY3Rvciwg
d2hlcmUgYHZhbDFgLAorYHZhbDJgLCAuLi4sIGFuZCBgdmFsbmAgYXJlIGl0cyBhcmd1bWVudHMu
IFRoZSBhc3NlcnRpb24gc3VjY2VlZHMgaWYgdGhlCitwcmVkaWNhdGUgcmV0dXJucyBgdHJ1ZWAg
d2hlbiBhcHBsaWVkIHRvIHRoZSBnaXZlbiBhcmd1bWVudHMsIGFuZCBmYWlscworb3RoZXJ3aXNl
LiBXaGVuIHRoZSBhc3NlcnRpb24gZmFpbHMsIGl0IHByaW50cyB0aGUgdmFsdWUgb2YgZWFjaCBh
cmd1bWVudC4gSW4KK2VpdGhlciBjYXNlLCB0aGUgYXJndW1lbnRzIGFyZSBldmFsdWF0ZWQgZXhh
Y3RseSBvbmNlLgorCitIZXJlJ3MgYW4gZXhhbXBsZS4gR2l2ZW4KKworYGBgYysrCisvLyBSZXR1
cm5zIHRydWUgaWYgbSBhbmQgbiBoYXZlIG5vIGNvbW1vbiBkaXZpc29ycyBleGNlcHQgMS4KK2Jv
b2wgTXV0dWFsbHlQcmltZShpbnQgbSwgaW50IG4pIHsgLi4uIH0KKworY29uc3QgaW50IGEgPSAz
OworY29uc3QgaW50IGIgPSA0OworY29uc3QgaW50IGMgPSAxMDsKK2BgYAorCit0aGUgYXNzZXJ0
aW9uCisKK2BgYGMrKworICBFWFBFQ1RfUFJFRDIoTXV0dWFsbHlQcmltZSwgYSwgYik7CitgYGAK
Kword2lsbCBzdWNjZWVkLCB3aGlsZSB0aGUgYXNzZXJ0aW9uCisKK2BgYGMrKworICBFWFBFQ1Rf
UFJFRDIoTXV0dWFsbHlQcmltZSwgYiwgYyk7CitgYGAKKword2lsbCBmYWlsIHdpdGggdGhlIG1l
c3NhZ2UKKworYGBgbm9uZQorTXV0dWFsbHlQcmltZShiLCBjKSBpcyBmYWxzZSwgd2hlcmUKK2Ig
aXMgNAorYyBpcyAxMAorYGBgCisKKz4gTk9URToKKz4KKz4gMS4gIElmIHlvdSBzZWUgYSBjb21w
aWxlciBlcnJvciAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gdG8gY2FsbCIgd2hlbiB1c2luZworPiAg
ICAgYEFTU0VSVF9QUkVEKmAgb3IgYEVYUEVDVF9QUkVEKmAsIHBsZWFzZSBzZWUKKz4gICAgIFt0
aGlzXShmYXEubWQjT3ZlcmxvYWRlZFByZWRpY2F0ZSkgZm9yIGhvdyB0byByZXNvbHZlIGl0Lgor
PiAxLiAgQ3VycmVudGx5IHdlIG9ubHkgcHJvdmlkZSBwcmVkaWNhdGUgYXNzZXJ0aW9ucyBvZiBh
cml0eSA8PSA1LiBJZiB5b3UgbmVlZAorPiAgICAgYSBoaWdoZXItYXJpdHkgYXNzZXJ0aW9uLCBs
ZXQgW3VzXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvaXNzdWVzKSBrbm93
LgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMjIFVzaW5n
IGEgRnVuY3Rpb24gVGhhdCBSZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdAorCitXaGlsZSBgRVhQ
RUNUX1BSRUQqKClgIGFuZCBmcmllbmRzIGFyZSBoYW5keSBmb3IgYSBxdWljayBqb2IsIHRoZSBz
eW50YXggaXMgbm90CitzYXRpc2ZhY3Rvcnk6IHlvdSBoYXZlIHRvIHVzZSBkaWZmZXJlbnQgbWFj
cm9zIGZvciBkaWZmZXJlbnQgYXJpdGllcywgYW5kIGl0CitmZWVscyBtb3JlIGxpa2UgTGlzcCB0
aGFuIEMrKy4gVGhlIGA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdGAgY2xhc3Mgc29sdmVzCit0
aGlzIHByb2JsZW0uCisKK0FuIGBBc3NlcnRpb25SZXN1bHRgIG9iamVjdCByZXByZXNlbnRzIHRo
ZSByZXN1bHQgb2YgYW4gYXNzZXJ0aW9uICh3aGV0aGVyIGl0J3MKK2Egc3VjY2VzcyBvciBhIGZh
aWx1cmUsIGFuZCBhbiBhc3NvY2lhdGVkIG1lc3NhZ2UpLiBZb3UgY2FuIGNyZWF0ZSBhbgorYEFz
c2VydGlvblJlc3VsdGAgdXNpbmcgb25lIG9mIHRoZXNlIGZhY3RvcnkgZnVuY3Rpb25zOgorCitg
YGBjKysKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworLy8gUmV0dXJucyBhbiBBc3NlcnRpb25SZXN1
bHQgb2JqZWN0IHRvIGluZGljYXRlIHRoYXQgYW4gYXNzZXJ0aW9uIGhhcworLy8gc3VjY2VlZGVk
LgorQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvblN1Y2Nlc3MoKTsKKworLy8gUmV0dXJucyBhbiBB
c3NlcnRpb25SZXN1bHQgb2JqZWN0IHRvIGluZGljYXRlIHRoYXQgYW4gYXNzZXJ0aW9uIGhhcwor
Ly8gZmFpbGVkLgorQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvbkZhaWx1cmUoKTsKKworfQorYGBg
CisKK1lvdSBjYW4gdGhlbiB1c2UgdGhlIGA8PGAgb3BlcmF0b3IgdG8gc3RyZWFtIG1lc3NhZ2Vz
IHRvIHRoZSBgQXNzZXJ0aW9uUmVzdWx0YAorb2JqZWN0LgorCitUbyBwcm92aWRlIG1vcmUgcmVh
ZGFibGUgbWVzc2FnZXMgaW4gQm9vbGVhbiBhc3NlcnRpb25zIChlLmcuIGBFWFBFQ1RfVFJVRSgp
YCksCit3cml0ZSBhIHByZWRpY2F0ZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYEFzc2VydGlvblJl
c3VsdGAgaW5zdGVhZCBvZiBgYm9vbGAuIEZvcgorZXhhbXBsZSwgaWYgeW91IGRlZmluZSBgSXNF
dmVuKClgIGFzOgorCitgYGBjKysKKzo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IElzRXZlbihp
bnQgbikgeworICBpZiAoKG4gJSAyKSA9PSAwKQorICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3Nl
cnRpb25TdWNjZXNzKCk7CisgIGVsc2UKKyAgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9u
RmFpbHVyZSgpIDw8IG4gPDwgIiBpcyBvZGQiOworfQorYGBgCisKK2luc3RlYWQgb2Y6CisKK2Bg
YGMrKworYm9vbCBJc0V2ZW4oaW50IG4pIHsKKyAgcmV0dXJuIChuICUgMikgPT0gMDsKK30KK2Bg
YAorCit0aGUgZmFpbGVkIGFzc2VydGlvbiBgRVhQRUNUX1RSVUUoSXNFdmVuKEZpYig0KSkpYCB3
aWxsIHByaW50OgorCitgYGBub25lCitWYWx1ZSBvZjogSXNFdmVuKEZpYig0KSkKKyAgQWN0dWFs
OiBmYWxzZSAoMyBpcyBvZGQpCitFeHBlY3RlZDogdHJ1ZQorYGBgCisKK2luc3RlYWQgb2YgYSBt
b3JlIG9wYXF1ZQorCitgYGBub25lCitWYWx1ZSBvZjogSXNFdmVuKEZpYig0KSkKKyAgQWN0dWFs
OiBmYWxzZQorRXhwZWN0ZWQ6IHRydWUKK2BgYAorCitJZiB5b3Ugd2FudCBpbmZvcm1hdGl2ZSBt
ZXNzYWdlcyBpbiBgRVhQRUNUX0ZBTFNFYCBhbmQgYEFTU0VSVF9GQUxTRWAgYXMgd2VsbAorKG9u
ZSB0aGlyZCBvZiBCb29sZWFuIGFzc2VydGlvbnMgaW4gdGhlIEdvb2dsZSBjb2RlIGJhc2UgYXJl
IG5lZ2F0aXZlIG9uZXMpLCBhbmQKK2FyZSBmaW5lIHdpdGggbWFraW5nIHRoZSBwcmVkaWNhdGUg
c2xvd2VyIGluIHRoZSBzdWNjZXNzIGNhc2UsIHlvdSBjYW4gc3VwcGx5IGEKK3N1Y2Nlc3MgbWVz
c2FnZToKKworYGBgYysrCis6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBJc0V2ZW4oaW50IG4p
IHsKKyAgaWYgKChuICUgMikgPT0gMCkKKyAgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9u
U3VjY2VzcygpIDw8IG4gPDwgIiBpcyBldmVuIjsKKyAgZWxzZQorICAgICByZXR1cm4gOjp0ZXN0
aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgbiA8PCAiIGlzIG9kZCI7Cit9CitgYGAKKworVGhl
biB0aGUgc3RhdGVtZW50IGBFWFBFQ1RfRkFMU0UoSXNFdmVuKEZpYig2KSkpYCB3aWxsIHByaW50
CisKK2BgYG5vbmUKKyAgVmFsdWUgb2Y6IElzRXZlbihGaWIoNikpCisgICAgIEFjdHVhbDogdHJ1
ZSAoOCBpcyBldmVuKQorICBFeHBlY3RlZDogZmFsc2UKK2BgYAorCisqKkF2YWlsYWJpbGl0eSoq
OiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMjIFVzaW5nIGEgUHJlZGljYXRlLUZvcm1hdHRl
cgorCitJZiB5b3UgZmluZCB0aGUgZGVmYXVsdCBtZXNzYWdlIGdlbmVyYXRlZCBieSBgKEFTU0VS
VHxFWFBFQ1QpX1BSRUQqYCBhbmQKK2AoQVNTRVJUfEVYUEVDVClfKFRSVUV8RkFMU0UpYCB1bnNh
dGlzZmFjdG9yeSwgb3Igc29tZSBhcmd1bWVudHMgdG8geW91cgorcHJlZGljYXRlIGRvIG5vdCBz
dXBwb3J0IHN0cmVhbWluZyB0byBgb3N0cmVhbWAsIHlvdSBjYW4gaW5zdGVhZCB1c2UgdGhlCitm
b2xsb3dpbmcgKnByZWRpY2F0ZS1mb3JtYXR0ZXIgYXNzZXJ0aW9ucyogdG8gKmZ1bGx5KiBjdXN0
b21pemUgaG93IHRoZSBtZXNzYWdlCitpcyBmb3JtYXR0ZWQ6CisKK0ZhdGFsIGFzc2VydGlvbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlcmlmaWVzCistLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLQorYEFTU0VSVF9QUkVEX0ZPUk1BVDEo
cHJlZF9mb3JtYXQxLCB2YWwxKTtgICAgICAgIHwgYEVYUEVDVF9QUkVEX0ZPUk1BVDEocHJlZF9m
b3JtYXQxLCB2YWwxKTtgICAgICAgIHwgYHByZWRfZm9ybWF0MSh2YWwxKWAgaXMgc3VjY2Vzc2Z1
bAorYEFTU0VSVF9QUkVEX0ZPUk1BVDIocHJlZF9mb3JtYXQyLCB2YWwxLCB2YWwyKTtgIHwgYEVY
UEVDVF9QUkVEX0ZPUk1BVDIocHJlZF9mb3JtYXQyLCB2YWwxLCB2YWwyKTtgIHwgYHByZWRfZm9y
bWF0Mih2YWwxLCB2YWwyKWAgaXMgc3VjY2Vzc2Z1bAorYC4uLmAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgYC4uLmAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgLi4uCisKK1RoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBh
bmQgdGhlIHByZXZpb3VzIGdyb3VwIG9mIG1hY3JvcyBpcyB0aGF0IGluc3RlYWQgb2YKK2EgcHJl
ZGljYXRlLCBgKEFTU0VSVHxFWFBFQ1QpX1BSRURfRk9STUFUKmAgdGFrZSBhICpwcmVkaWNhdGUt
Zm9ybWF0dGVyKgorKGBwcmVkX2Zvcm1hdG5gKSwgd2hpY2ggaXMgYSBmdW5jdGlvbiBvciBmdW5j
dG9yIHdpdGggdGhlIHNpZ25hdHVyZToKKworYGBgYysrCis6OnRlc3Rpbmc6OkFzc2VydGlvblJl
c3VsdCBQcmVkaWNhdGVGb3JtYXR0ZXJuKGNvbnN0IGNoYXIqIGV4cHIxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHByMiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cHJu
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUMSB2YWwx
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUMiB2YWwy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG4gdmFsbik7Citg
YGAKKword2hlcmUgYHZhbDFgLCBgdmFsMmAsIC4uLiwgYW5kIGB2YWxuYCBhcmUgdGhlIHZhbHVl
cyBvZiB0aGUgcHJlZGljYXRlIGFyZ3VtZW50cywKK2FuZCBgZXhwcjFgLCBgZXhwcjJgLCAuLi4s
IGFuZCBgZXhwcm5gIGFyZSB0aGUgY29ycmVzcG9uZGluZyBleHByZXNzaW9ucyBhcyB0aGV5Cith
cHBlYXIgaW4gdGhlIHNvdXJjZSBjb2RlLiBUaGUgdHlwZXMgYFQxYCwgYFQyYCwgLi4uLCBhbmQg
YFRuYCBjYW4gYmUgZWl0aGVyCit2YWx1ZSB0eXBlcyBvciByZWZlcmVuY2UgdHlwZXMuIEZvciBl
eGFtcGxlLCBpZiBhbiBhcmd1bWVudCBoYXMgdHlwZSBgRm9vYCwgeW91CitjYW4gZGVjbGFyZSBp
dCBhcyBlaXRoZXIgYEZvb2Agb3IgYGNvbnN0IEZvbyZgLCB3aGljaGV2ZXIgaXMgYXBwcm9wcmlh
dGUuCisKK0FzIGFuIGV4YW1wbGUsIGxldCdzIGltcHJvdmUgdGhlIGZhaWx1cmUgbWVzc2FnZSBp
biBgTXV0dWFsbHlQcmltZSgpYCwgd2hpY2ggd2FzCit1c2VkIHdpdGggYEVYUEVDVF9QUkVEMigp
YDoKKworYGBgYysrCisvLyBSZXR1cm5zIHRoZSBzbWFsbGVzdCBwcmltZSBjb21tb24gZGl2aXNv
ciBvZiBtIGFuZCBuLAorLy8gb3IgMSB3aGVuIG0gYW5kIG4gYXJlIG11dHVhbGx5IHByaW1lLgor
aW50IFNtYWxsZXN0UHJpbWVDb21tb25EaXZpc29yKGludCBtLCBpbnQgbikgeyAuLi4gfQorCisv
LyBBIHByZWRpY2F0ZS1mb3JtYXR0ZXIgZm9yIGFzc2VydGluZyB0aGF0IHR3byBpbnRlZ2VycyBh
cmUgbXV0dWFsbHkgcHJpbWUuCis6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBBc3NlcnRNdXR1
YWxseVByaW1lKGNvbnN0IGNoYXIqIG1fZXhwciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbl9leHByLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG4pIHsKKyAgaWYgKE11dHVhbGx5UHJp
bWUobSwgbikpIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKKworICByZXR1
cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgbV9leHByIDw8ICIgYW5kICIgPDwg
bl9leHByCisgICAgICA8PCAiICgiIDw8IG0gPDwgIiBhbmQgIiA8PCBuIDw8ICIpIGFyZSBub3Qg
bXV0dWFsbHkgcHJpbWUsICIKKyAgICAgIDw8ICJhcyB0aGV5IGhhdmUgYSBjb21tb24gZGl2aXNv
ciAiIDw8IFNtYWxsZXN0UHJpbWVDb21tb25EaXZpc29yKG0sIG4pOworfQorYGBgCisKK1dpdGgg
dGhpcyBwcmVkaWNhdGUtZm9ybWF0dGVyLCB3ZSBjYW4gdXNlCisKK2BgYGMrKworICBFWFBFQ1Rf
UFJFRF9GT1JNQVQyKEFzc2VydE11dHVhbGx5UHJpbWUsIGIsIGMpOworYGBgCisKK3RvIGdlbmVy
YXRlIHRoZSBtZXNzYWdlCisKK2BgYG5vbmUKK2IgYW5kIGMgKDQgYW5kIDEwKSBhcmUgbm90IG11
dHVhbGx5IHByaW1lLCBhcyB0aGV5IGhhdmUgYSBjb21tb24gZGl2aXNvciAyLgorYGBgCisKK0Fz
IHlvdSBtYXkgaGF2ZSByZWFsaXplZCwgbWFueSBvZiB0aGUgYnVpbHQtaW4gYXNzZXJ0aW9ucyB3
ZSBpbnRyb2R1Y2VkIGVhcmxpZXIKK2FyZSBzcGVjaWFsIGNhc2VzIG9mIGAoRVhQRUNUfEFTU0VS
VClfUFJFRF9GT1JNQVQqYC4gSW4gZmFjdCwgbW9zdCBvZiB0aGVtIGFyZQoraW5kZWVkIGRlZmlu
ZWQgdXNpbmcgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZPUk1BVCpgLgorCisqKkF2YWlsYWJpbGl0
eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgRmxvYXRpbmctUG9pbnQgQ29tcGFyaXNv
bgorCitDb21wYXJpbmcgZmxvYXRpbmctcG9pbnQgbnVtYmVycyBpcyB0cmlja3kuIER1ZSB0byBy
b3VuZC1vZmYgZXJyb3JzLCBpdCBpcyB2ZXJ5Cit1bmxpa2VseSB0aGF0IHR3byBmbG9hdGluZy1w
b2ludHMgd2lsbCBtYXRjaCBleGFjdGx5LiBUaGVyZWZvcmUsIGBBU1NFUlRfRVFgICdzCituYWl2
ZSBjb21wYXJpc29uIHVzdWFsbHkgZG9lc24ndCB3b3JrLiBBbmQgc2luY2UgZmxvYXRpbmctcG9p
bnRzIGNhbiBoYXZlIGEgd2lkZQordmFsdWUgcmFuZ2UsIG5vIHNpbmdsZSBmaXhlZCBlcnJvciBi
b3VuZCB3b3Jrcy4gSXQncyBiZXR0ZXIgdG8gY29tcGFyZSBieSBhCitmaXhlZCByZWxhdGl2ZSBl
cnJvciBib3VuZCwgZXhjZXB0IGZvciB2YWx1ZXMgY2xvc2UgdG8gMCBkdWUgdG8gdGhlIGxvc3Mg
b2YKK3ByZWNpc2lvbiB0aGVyZS4KKworSW4gZ2VuZXJhbCwgZm9yIGZsb2F0aW5nLXBvaW50IGNv
bXBhcmlzb24gdG8gbWFrZSBzZW5zZSwgdGhlIHVzZXIgbmVlZHMgdG8KK2NhcmVmdWxseSBjaG9v
c2UgdGhlIGVycm9yIGJvdW5kLiBJZiB0aGV5IGRvbid0IHdhbnQgb3IgY2FyZSB0bywgY29tcGFy
aW5nIGluCit0ZXJtcyBvZiBVbml0cyBpbiB0aGUgTGFzdCBQbGFjZSAoVUxQcykgaXMgYSBnb29k
IGRlZmF1bHQsIGFuZCBnb29nbGV0ZXN0Citwcm92aWRlcyBhc3NlcnRpb25zIHRvIGRvIHRoaXMu
IEZ1bGwgZGV0YWlscyBhYm91dCBVTFBzIGFyZSBxdWl0ZSBsb25nOyBpZiB5b3UKK3dhbnQgdG8g
bGVhcm4gbW9yZSwgc2VlCitbaGVyZV0oaHR0cHM6Ly9yYW5kb21hc2NpaS53b3JkcHJlc3MuY29t
LzIwMTIvMDIvMjUvY29tcGFyaW5nLWZsb2F0aW5nLXBvaW50LW51bWJlcnMtMjAxMi1lZGl0aW9u
LykuCisKKyMjIyMgRmxvYXRpbmctUG9pbnQgTWFjcm9zCisKK3wgRmF0YWwgYXNzZXJ0aW9uICAg
ICAgICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICB8IFZlcmlmaWVz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8Cit8IGBBU1NFUlRfRkxPQVRfRVEodmFs
MSwgdmFsMik7YCAgfCBgRVhQRUNUX0ZMT0FUX0VRKHZhbDEsdmFsMik7YCAgfCB0aGUgdHdvIGBm
bG9hdGAgdmFsdWVzIGFyZSBhbG1vc3QgZXF1YWwgIHwKK3wgYEFTU0VSVF9ET1VCTEVfRVEodmFs
MSwgdmFsMik7YCB8IGBFWFBFQ1RfRE9VQkxFX0VRKHZhbDEsIHZhbDIpO2B8IHRoZSB0d28gYGRv
dWJsZWAgdmFsdWVzIGFyZSBhbG1vc3QgZXF1YWwgfAorCitCeSAiYWxtb3N0IGVxdWFsIiB3ZSBt
ZWFuIHRoZSB2YWx1ZXMgYXJlIHdpdGhpbiA0IFVMUCdzIGZyb20gZWFjaCBvdGhlci4KKworTk9U
RTogYENIRUNLX0RPVUJMRV9FUSgpYCBpbiBgYmFzZS9sb2dnaW5nLmhgIHVzZXMgYSBmaXhlZCBh
YnNvbHV0ZSBlcnJvciBib3VuZCwKK3NvIGl0cyByZXN1bHQgbWF5IGRpZmZlciBmcm9tIHRoYXQg
b2YgdGhlIGdvb2dsZXRlc3QgbWFjcm9zLiBUaGF0IG1hY3JvIGlzCit1bnNhZmUgYW5kIGhhcyBi
ZWVuIGRlcHJlY2F0ZWQuIFBsZWFzZSBkb24ndCB1c2UgaXQgYW55IG1vcmUuCisKK1RoZSBmb2xs
b3dpbmcgYXNzZXJ0aW9ucyBhbGxvdyB5b3UgdG8gY2hvb3NlIHRoZSBhY2NlcHRhYmxlIGVycm9y
IGJvdW5kOgorCit8IEZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgICAgfCBOb25m
YXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgICAgIHwgVmVyaWZpZXMgICAgICAgICAgICAg
ICAgICB8Cit8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSB8Cit8IGBBU1NFUlRfTkVBUih2YWwxLCB2YWwyLCBhYnNfZXJyb3IpO2AgfCBgRVhQRUNUX05F
QVIodmFsMSwgdmFsMiwgYWJzX2Vycm9yKTtgIHwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBgdmFs
MWAgYW5kIGB2YWwyYCBkb2Vzbid0IGV4Y2VlZCB0aGUgZ2l2ZW4gYWJzb2x1dGUgZXJyb3IgfAor
CisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMjIEZsb2F0aW5n
LVBvaW50IFByZWRpY2F0ZS1Gb3JtYXQgRnVuY3Rpb25zCisKK1NvbWUgZmxvYXRpbmctcG9pbnQg
b3BlcmF0aW9ucyBhcmUgdXNlZnVsLCBidXQgbm90IHRoYXQgb2Z0ZW4gdXNlZC4gSW4gb3JkZXIg
dG8KK2F2b2lkIGFuIGV4cGxvc2lvbiBvZiBuZXcgbWFjcm9zLCB3ZSBwcm92aWRlIHRoZW0gYXMg
cHJlZGljYXRlLWZvcm1hdCBmdW5jdGlvbnMKK3RoYXQgY2FuIGJlIHVzZWQgaW4gcHJlZGljYXRl
IGFzc2VydGlvbiBtYWNyb3MgKGUuZy4gYEVYUEVDVF9QUkVEX0ZPUk1BVDJgLAorZXRjKS4KKwor
YGBgYysrCitFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RmxvYXRMRSwgdmFsMSwgdmFs
Mik7CitFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RG91YmxlTEUsIHZhbDEsIHZhbDIp
OworYGBgCisKK1ZlcmlmaWVzIHRoYXQgYHZhbDFgIGlzIGxlc3MgdGhhbiwgb3IgYWxtb3N0IGVx
dWFsIHRvLCBgdmFsMmAuIFlvdSBjYW4gcmVwbGFjZQorYEVYUEVDVF9QUkVEX0ZPUk1BVDJgIGlu
IHRoZSBhYm92ZSB0YWJsZSB3aXRoIGBBU1NFUlRfUFJFRF9GT1JNQVQyYC4KKworKipBdmFpbGFi
aWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIEFzc2VydGluZyBVc2luZyBnTW9j
ayBNYXRjaGVycworCitHb29nbGUtZGV2ZWxvcGVkIEMrKyBtb2NraW5nIGZyYW1ld29yayBbZ01v
Y2tdKC4uLy4uL2dvb2dsZW1vY2spIGNvbWVzIHdpdGggYQorbGlicmFyeSBvZiBtYXRjaGVycyBm
b3IgdmFsaWRhdGluZyBhcmd1bWVudHMgcGFzc2VkIHRvIG1vY2sgb2JqZWN0cy4gQSBnTW9jawor
Km1hdGNoZXIqIGlzIGJhc2ljYWxseSBhIHByZWRpY2F0ZSB0aGF0IGtub3dzIGhvdyB0byBkZXNj
cmliZSBpdHNlbGYuIEl0IGNhbiBiZQordXNlZCBpbiB0aGVzZSBhc3NlcnRpb24gbWFjcm9zOgor
Cit8IEZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAg
ICAgICAgICAgICB8IFZlcmlmaWVzICAgICAgICAgICAgICB8Cit8IC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0t
LS0tLS0tLS0tLS0tLSB8Cit8IGBBU1NFUlRfVEhBVCh2YWx1ZSwgbWF0Y2hlcik7YCB8IGBFWFBF
Q1RfVEhBVCh2YWx1ZSwgbWF0Y2hlcik7YCB8IHZhbHVlIG1hdGNoZXMgbWF0Y2hlciB8CisKK0Zv
ciBleGFtcGxlLCBgU3RhcnRzV2l0aChwcmVmaXgpYCBpcyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVz
IGEgc3RyaW5nIHN0YXJ0aW5nCit3aXRoIGBwcmVmaXhgLCBhbmQgeW91IGNhbiB3cml0ZToKKwor
YGBgYysrCit1c2luZyA6OnRlc3Rpbmc6OlN0YXJ0c1dpdGg7CisuLi4KKyAgICAvLyBWZXJpZmll
cyB0aGF0IEZvbygpIHJldHVybnMgYSBzdHJpbmcgc3RhcnRpbmcgd2l0aCAiSGVsbG8iLgorICAg
IEVYUEVDVF9USEFUKEZvbygpLCBTdGFydHNXaXRoKCJIZWxsbyIpKTsKK2BgYAorCitSZWFkIHRo
aXMgW3JlY2lwZV0oLi4vLi4vZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3VzaW5nLW1hdGNo
ZXJzLWluLWdvb2dsZS10ZXN0LWFzc2VydGlvbnMpIGluCit0aGUgZ01vY2sgQ29va2Jvb2sgZm9y
IG1vcmUgZGV0YWlscy4KKworZ01vY2sgaGFzIGEgcmljaCBzZXQgb2YgbWF0Y2hlcnMuIFlvdSBj
YW4gZG8gbWFueSB0aGluZ3MgZ29vZ2xldGVzdCBjYW5ub3QgZG8KK2Fsb25lIHdpdGggdGhlbS4g
Rm9yIGEgbGlzdCBvZiBtYXRjaGVycyBnTW9jayBwcm92aWRlcywgcmVhZAorW3RoaXNdKC4uLy4u
L2dvb2dsZW1vY2svZG9jcy9Db29rQm9vay5tZCN1c2luZy1tYXRjaGVycykuIEVzcGVjaWFsbHkg
dXNlZnVsIGFtb25nIHRoZW0gYXJlCitzb21lIFtwcm90b2NvbCBidWZmZXIgbWF0Y2hlcnNdKGh0
dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvbnVjbGV1cy9ibG9iL21hc3Rlci9udWNsZXVzL3Rlc3Rp
bmcvcHJvdG9jb2wtYnVmZmVyLW1hdGNoZXJzLmgpLiBJdCdzIGVhc3kgdG8gd3JpdGUKK3lvdXIg
W293biBtYXRjaGVyc10oLi4vLi4vZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3dyaXRpbmct
bmV3LW1hdGNoZXJzLXF1aWNrbHkpIHRvby4KKworRm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIGdN
b2NrJ3MKK1tFcXVhbHNQcm90b10oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9udWNsZXVzL2Js
b2IvbWFzdGVyL251Y2xldXMvdGVzdGluZy9wcm90b2NvbC1idWZmZXItbWF0Y2hlcnMuaCkKK3Rv
IGNvbXBhcmUgcHJvdG9zIGluIHlvdXIgdGVzdHM6CisKK2BgYGMrKworI2luY2x1ZGUgInRlc3Rp
bmcvYmFzZS9wdWJsaWMvZ21vY2suaCIKK3VzaW5nIDo6dGVzdGluZzo6RXF1YWxzUHJvdG87Cisu
Li4KKyAgICBFWFBFQ1RfVEhBVChhY3R1YWxfcHJvdG8sIEVxdWFsc1Byb3RvKCJmb286IDEyMyBi
YXI6ICd4eXonIikpOworICAgIEVYUEVDVF9USEFUKCphY3R1YWxfcHJvdG9fcHRyLCBFcXVhbHNQ
cm90byhleHBlY3RlZF9wcm90bykpOworYGBgCisKK2dNb2NrIGlzIGJ1bmRsZWQgd2l0aCBnb29n
bGV0ZXN0LCBzbyB5b3UgZG9uJ3QgbmVlZCB0byBhZGQgYW55IGJ1aWxkIGRlcGVuZGVuY3kKK2lu
IG9yZGVyIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoaXMuIEp1c3QgaW5jbHVkZSBgInRlc3Rpbmcv
YmFzZS9wdWJsaWMvZ21vY2suaCJgCithbmQgeW91J3JlIHJlYWR5IHRvIGdvLgorCisqKkF2YWls
YWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgYW5kIE1hYy4KKworIyMjIE1vcmUgU3RyaW5nIEFz
c2VydGlvbnMKKworKFBsZWFzZSByZWFkIHRoZSBbcHJldmlvdXNdKCNBc3NlcnRUaGF0KSBzZWN0
aW9uIGZpcnN0IGlmIHlvdSBoYXZlbid0LikKKworWW91IGNhbiB1c2UgdGhlIGdNb2NrIFtzdHJp
bmcgbWF0Y2hlcnNdKC4uLy4uL2dvb2dsZW1vY2svZG9jcy9DaGVhdFNoZWV0Lm1kI3N0cmluZy1t
YXRjaGVycykKK3dpdGggYEVYUEVDVF9USEFUKClgIG9yIGBBU1NFUlRfVEhBVCgpYCB0byBkbyBt
b3JlIHN0cmluZyBjb21wYXJpc29uIHRyaWNrcworKHN1Yi1zdHJpbmcsIHByZWZpeCwgc3VmZml4
LCByZWd1bGFyIGV4cHJlc3Npb24sIGFuZCBldGMpLiBGb3IgZXhhbXBsZSwKKworYGBgYysrCit1
c2luZyA6OnRlc3Rpbmc6Okhhc1N1YnN0cjsKK3VzaW5nIDo6dGVzdGluZzo6TWF0Y2hlc1JlZ2V4
OworLi4uCisgIEFTU0VSVF9USEFUKGZvb19zdHJpbmcsIEhhc1N1YnN0cigibmVlZGxlIikpOwor
ICBFWFBFQ1RfVEhBVChiYXJfc3RyaW5nLCBNYXRjaGVzUmVnZXgoIlxcdypcXGQrIikpOworYGBg
CisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKK0lmIHRoZSBzdHJp
bmcgY29udGFpbnMgYSB3ZWxsLWZvcm1lZCBIVE1MIG9yIFhNTCBkb2N1bWVudCwgeW91IGNhbiBj
aGVjayB3aGV0aGVyCitpdHMgRE9NIHRyZWUgbWF0Y2hlcyBhbiBbWFBhdGgKK2V4cHJlc3Npb25d
KGh0dHA6Ly93d3cudzMub3JnL1RSL3hwYXRoLyNjb250ZW50cyk6CisKK2BgYGMrKworLy8gQ3Vy
cmVudGx5IHN0aWxsIGluIC8vdGVtcGxhdGUvcHJvdG90ZW1wbGF0ZS90ZXN0aW5nOnhwYXRoX21h
dGNoZXIKKyNpbmNsdWRlICJ0ZW1wbGF0ZS9wcm90b3RlbXBsYXRlL3Rlc3RpbmcveHBhdGhfbWF0
Y2hlci5oIgordXNpbmcgcHJvdG90ZW1wbGF0ZTo6dGVzdGluZzo6TWF0Y2hlc1hQYXRoOworRVhQ
RUNUX1RIQVQoaHRtbF9zdHJpbmcsIE1hdGNoZXNYUGF0aCgiLy9hW3RleHQoKT0nY2xpY2sgaGVy
ZSddIikpOworYGBgCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LgorCisjIyMgV2luZG93cyBI
UkVTVUxUIGFzc2VydGlvbnMKKworVGhlc2UgYXNzZXJ0aW9ucyB0ZXN0IGZvciBgSFJFU1VMVGAg
c3VjY2VzcyBvciBmYWlsdXJlLgorCitGYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgICAg
ICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgIHwgVmVyaWZpZXMK
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLQorYEFTU0VSVF9IUkVTVUxUX1NVQ0NF
RURFRChleHByZXNzaW9uKWAgfCBgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKGV4cHJlc3Npb24p
YCB8IGBleHByZXNzaW9uYCBpcyBhIHN1Y2Nlc3MgYEhSRVNVTFRgCitgQVNTRVJUX0hSRVNVTFRf
RkFJTEVEKGV4cHJlc3Npb24pYCAgICB8IGBFWFBFQ1RfSFJFU1VMVF9GQUlMRUQoZXhwcmVzc2lv
bilgICAgIHwgYGV4cHJlc3Npb25gIGlzIGEgZmFpbHVyZSBgSFJFU1VMVGAKKworVGhlIGdlbmVy
YXRlZCBvdXRwdXQgY29udGFpbnMgdGhlIGh1bWFuLXJlYWRhYmxlIGVycm9yIG1lc3NhZ2UgYXNz
b2NpYXRlZCB3aXRoCit0aGUgYEhSRVNVTFRgIGNvZGUgcmV0dXJuZWQgYnkgYGV4cHJlc3Npb25g
LgorCitZb3UgbWlnaHQgdXNlIHRoZW0gbGlrZSB0aGlzOgorCitgYGBjKysKK0NDb21QdHI8SVNo
ZWxsRGlzcGF0Y2gyPiBzaGVsbDsKK0FTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChzaGVsbC5Db0Ny
ZWF0ZUluc3RhbmNlKEwiU2hlbGwuQXBwbGljYXRpb24iKSk7CitDQ29tVmFyaWFudCBlbXB0eTsK
K0FTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChzaGVsbC0+U2hlbGxFeGVjdXRlKENDb21CU1RSKHVy
bCksIGVtcHR5LCBlbXB0eSwgZW1wdHksIGVtcHR5KSk7CitgYGAKKworKipBdmFpbGFiaWxpdHkq
KjogV2luZG93cy4KKworIyMjIFR5cGUgQXNzZXJ0aW9ucworCitZb3UgY2FuIGNhbGwgdGhlIGZ1
bmN0aW9uCisKK2BgYGMrKworOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8VDEsIFQyPigp
OworYGBgCisKK3RvIGFzc2VydCB0aGF0IHR5cGVzIGBUMWAgYW5kIGBUMmAgYXJlIHRoZSBzYW1l
LiBUaGUgZnVuY3Rpb24gZG9lcyBub3RoaW5nIGlmCit0aGUgYXNzZXJ0aW9uIGlzIHNhdGlzZmll
ZC4gSWYgdGhlIHR5cGVzIGFyZSBkaWZmZXJlbnQsIHRoZSBmdW5jdGlvbiBjYWxsIHdpbGwKK2Zh
aWwgdG8gY29tcGlsZSwgYW5kIHRoZSBjb21waWxlciBlcnJvciBtZXNzYWdlIHdpbGwgbGlrZWx5
IChkZXBlbmRpbmcgb24gdGhlCitjb21waWxlcikgc2hvdyB5b3UgdGhlIGFjdHVhbCB2YWx1ZXMg
b2YgYFQxYCBhbmQgYFQyYC4gVGhpcyBpcyBtYWlubHkgdXNlZnVsCitpbnNpZGUgdGVtcGxhdGUg
Y29kZS4KKworKipDYXZlYXQqKjogV2hlbiB1c2VkIGluc2lkZSBhIG1lbWJlciBmdW5jdGlvbiBv
ZiBhIGNsYXNzIHRlbXBsYXRlIG9yIGEgZnVuY3Rpb24KK3RlbXBsYXRlLCBgU3RhdGljQXNzZXJ0
VHlwZUVxPFQxLCBUMj4oKWAgaXMgZWZmZWN0aXZlIG9ubHkgaWYgdGhlIGZ1bmN0aW9uIGlzCitp
bnN0YW50aWF0ZWQuIEZvciBleGFtcGxlLCBnaXZlbjoKKworYGBgYysrCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY2xhc3MgRm9vIHsKKyBwdWJsaWM6CisgIHZvaWQgQmFyKCkgeyA6OnRlc3Rpbmc6
OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIFQ+KCk7IH0KK307CitgYGAKKwordGhlIGNvZGU6CisK
K2BgYGMrKwordm9pZCBUZXN0MSgpIHsgRm9vPGJvb2w+IGZvbzsgfQorYGBgCisKK3dpbGwgbm90
IGdlbmVyYXRlIGEgY29tcGlsZXIgZXJyb3IsIGFzIGBGb288Ym9vbD46OkJhcigpYCBpcyBuZXZl
ciBhY3R1YWxseQoraW5zdGFudGlhdGVkLiBJbnN0ZWFkLCB5b3UgbmVlZDoKKworYGBgYysrCit2
b2lkIFRlc3QyKCkgeyBGb288Ym9vbD4gZm9vOyBmb28uQmFyKCk7IH0KK2BgYAorCit0byBjYXVz
ZSBhIGNvbXBpbGVyIGVycm9yLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywg
TWFjLgorCisjIyMgQXNzZXJ0aW9uIFBsYWNlbWVudAorCitZb3UgY2FuIHVzZSBhc3NlcnRpb25z
IGluIGFueSBDKysgZnVuY3Rpb24uIEluIHBhcnRpY3VsYXIsIGl0IGRvZXNuJ3QgaGF2ZSB0byBi
ZQorYSBtZXRob2Qgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4gVGhlIG9uZSBjb25zdHJhaW50
IGlzIHRoYXQgYXNzZXJ0aW9ucyB0aGF0CitnZW5lcmF0ZSBhIGZhdGFsIGZhaWx1cmUgKGBGQUlM
KmAgYW5kIGBBU1NFUlRfKmApIGNhbiBvbmx5IGJlIHVzZWQgaW4KK3ZvaWQtcmV0dXJuaW5nIGZ1
bmN0aW9ucy4gVGhpcyBpcyBhIGNvbnNlcXVlbmNlIG9mIEdvb2dsZSdzIG5vdCB1c2luZworZXhj
ZXB0aW9ucy4gQnkgcGxhY2luZyBpdCBpbiBhIG5vbi12b2lkIGZ1bmN0aW9uIHlvdSdsbCBnZXQg
YSBjb25mdXNpbmcgY29tcGlsZQorZXJyb3IgbGlrZSBgImVycm9yOiB2b2lkIHZhbHVlIG5vdCBp
Z25vcmVkIGFzIGl0IG91Z2h0IHRvIGJlImAgb3IgYCJjYW5ub3QKK2luaXRpYWxpemUgcmV0dXJu
IG9iamVjdCBvZiB0eXBlICdib29sJyB3aXRoIGFuIHJ2YWx1ZSBvZiB0eXBlICd2b2lkJyJgIG9y
CitgImVycm9yOiBubyB2aWFibGUgY29udmVyc2lvbiBmcm9tICd2b2lkJyB0byAnc3RyaW5nJyJg
LgorCitJZiB5b3UgbmVlZCB0byB1c2UgZmF0YWwgYXNzZXJ0aW9ucyBpbiBhIGZ1bmN0aW9uIHRo
YXQgcmV0dXJucyBub24tdm9pZCwgb25lCitvcHRpb24gaXMgdG8gbWFrZSB0aGUgZnVuY3Rpb24g
cmV0dXJuIHRoZSB2YWx1ZSBpbiBhbiBvdXQgcGFyYW1ldGVyIGluc3RlYWQuIEZvcgorZXhhbXBs
ZSwgeW91IGNhbiByZXdyaXRlIGBUMiBGb28oVDEgeClgIHRvIGB2b2lkIEZvbyhUMSB4LCBUMiog
cmVzdWx0KWAuIFlvdQorbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgKnJlc3VsdGAgY29udGFpbnMg
c29tZSBzZW5zaWJsZSB2YWx1ZSBldmVuIHdoZW4gdGhlCitmdW5jdGlvbiByZXR1cm5zIHByZW1h
dHVyZWx5LiBBcyB0aGUgZnVuY3Rpb24gbm93IHJldHVybnMgYHZvaWRgLCB5b3UgY2FuIHVzZQor
YW55IGFzc2VydGlvbiBpbnNpZGUgb2YgaXQuCisKK0lmIGNoYW5naW5nIHRoZSBmdW5jdGlvbidz
IHR5cGUgaXMgbm90IGFuIG9wdGlvbiwgeW91IHNob3VsZCBqdXN0IHVzZSBhc3NlcnRpb25zCit0
aGF0IGdlbmVyYXRlIG5vbi1mYXRhbCBmYWlsdXJlcywgc3VjaCBhcyBgQUREX0ZBSUxVUkUqYCBh
bmQgYEVYUEVDVF8qYC4KKworTk9URTogQ29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycyBhcmUg
bm90IGNvbnNpZGVyZWQgdm9pZC1yZXR1cm5pbmcgZnVuY3Rpb25zLAorYWNjb3JkaW5nIHRvIHRo
ZSBDKysgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbiwgYW5kIHNvIHlvdSBtYXkgbm90IHVzZSBmYXRh
bAorYXNzZXJ0aW9ucyBpbiB0aGVtLiBZb3UnbGwgZ2V0IGEgY29tcGlsYXRpb24gZXJyb3IgaWYg
eW91IHRyeS4gQSBzaW1wbGUKK3dvcmthcm91bmQgaXMgdG8gdHJhbnNmZXIgdGhlIGVudGlyZSBi
b2R5IG9mIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yIHRvIGEKK3ByaXZhdGUgdm9pZC1y
ZXR1cm5pbmcgbWV0aG9kLiBIb3dldmVyLCB5b3Ugc2hvdWxkIGJlIGF3YXJlIHRoYXQgYSBmYXRh
bAorYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYSBjb25zdHJ1Y3RvciBkb2VzIG5vdCB0ZXJtaW5hdGUg
dGhlIGN1cnJlbnQgdGVzdCwgYXMgeW91cgoraW50dWl0aW9uIG1pZ2h0IHN1Z2dlc3Q7IGl0IG1l
cmVseSByZXR1cm5zIGZyb20gdGhlIGNvbnN0cnVjdG9yIGVhcmx5LCBwb3NzaWJseQorbGVhdmlu
ZyB5b3VyIG9iamVjdCBpbiBhIHBhcnRpYWxseS1jb25zdHJ1Y3RlZCBzdGF0ZS4gTGlrZXdpc2Us
IGEgZmF0YWwKK2Fzc2VydGlvbiBmYWlsdXJlIGluIGEgZGVzdHJ1Y3RvciBtYXkgbGVhdmUgeW91
ciBvYmplY3QgaW4gYQorcGFydGlhbGx5LWRlc3RydWN0ZWQgc3RhdGUuIFVzZSBhc3NlcnRpb25z
IGNhcmVmdWxseSBpbiB0aGVzZSBzaXR1YXRpb25zIQorCisjIyBUZWFjaGluZyBnb29nbGV0ZXN0
IEhvdyB0byBQcmludCBZb3VyIFZhbHVlcworCitXaGVuIGEgdGVzdCBhc3NlcnRpb24gc3VjaCBh
cyBgRVhQRUNUX0VRYCBmYWlscywgZ29vZ2xldGVzdCBwcmludHMgdGhlIGFyZ3VtZW50Cit2YWx1
ZXMgdG8gaGVscCB5b3UgZGVidWcuIEl0IGRvZXMgdGhpcyB1c2luZyBhIHVzZXItZXh0ZW5zaWJs
ZSB2YWx1ZSBwcmludGVyLgorCitUaGlzIHByaW50ZXIga25vd3MgaG93IHRvIHByaW50IGJ1aWx0
LWluIEMrKyB0eXBlcywgbmF0aXZlIGFycmF5cywgU1RMCitjb250YWluZXJzLCBhbmQgYW55IHR5
cGUgdGhhdCBzdXBwb3J0cyB0aGUgYDw8YCBvcGVyYXRvci4gRm9yIG90aGVyIHR5cGVzLCBpdAor
cHJpbnRzIHRoZSByYXcgYnl0ZXMgaW4gdGhlIHZhbHVlIGFuZCBob3BlcyB0aGF0IHlvdSB0aGUg
dXNlciBjYW4gZmlndXJlIGl0IG91dC4KKworQXMgbWVudGlvbmVkIGVhcmxpZXIsIHRoZSBwcmlu
dGVyIGlzICpleHRlbnNpYmxlKi4gVGhhdCBtZWFucyB5b3UgY2FuIHRlYWNoIGl0Cit0byBkbyBh
IGJldHRlciBqb2IgYXQgcHJpbnRpbmcgeW91ciBwYXJ0aWN1bGFyIHR5cGUgdGhhbiB0byBkdW1w
IHRoZSBieXRlcy4gVG8KK2RvIHRoYXQsIGRlZmluZSBgPDxgIGZvciB5b3VyIHR5cGU6CisKK2Bg
YGMrKworLy8gU3RyZWFtcyBhcmUgYWxsb3dlZCBvbmx5IGZvciBsb2dnaW5nLiAgRG9uJ3QgaW5j
bHVkZSB0aGlzIGZvcgorLy8gYW55IG90aGVyIHB1cnBvc2UuCisjaW5jbHVkZSA8b3N0cmVhbT4K
KworbmFtZXNwYWNlIGZvbyB7CisKK2NsYXNzIEJhciB7ICAvLyBXZSB3YW50IGdvb2dsZXRlc3Qg
dG8gYmUgYWJsZSB0byBwcmludCBpbnN0YW5jZXMgb2YgdGhpcy4KKy4uLgorICAvLyBDcmVhdGUg
YSBmcmVlIGlubGluZSBmcmllbmQgZnVuY3Rpb24uCisgIGZyaWVuZCBzdGQ6Om9zdHJlYW0mIG9w
ZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgQmFyJiBiYXIpIHsKKyAgICByZXR1cm4g
b3MgPDwgYmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3aGF0ZXZlciBuZWVkZWQgdG8gcHJpbnQgYmFy
IHRvIG9zCisgIH0KK307CisKKy8vIElmIHlvdSBjYW4ndCBkZWNsYXJlIHRoZSBmdW5jdGlvbiBp
biB0aGUgY2xhc3MgaXQncyBpbXBvcnRhbnQgdGhhdCB0aGUKKy8vIDw8IG9wZXJhdG9yIGlzIGRl
ZmluZWQgaW4gdGhlIFNBTUUgbmFtZXNwYWNlIHRoYXQgZGVmaW5lcyBCYXIuICBDKysncyBsb29r
LXVwCisvLyBydWxlcyByZWx5IG9uIHRoYXQuCitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3Rk
Ojpvc3RyZWFtJiBvcywgY29uc3QgQmFyJiBiYXIpIHsKKyAgcmV0dXJuIG9zIDw8IGJhci5EZWJ1
Z1N0cmluZygpOyAgLy8gd2hhdGV2ZXIgbmVlZGVkIHRvIHByaW50IGJhciB0byBvcworfQorCit9
ICAvLyBuYW1lc3BhY2UgZm9vCitgYGAKKworU29tZXRpbWVzLCB0aGlzIG1pZ2h0IG5vdCBiZSBh
biBvcHRpb246IHlvdXIgdGVhbSBtYXkgY29uc2lkZXIgaXQgYmFkIHN0eWxlIHRvCitoYXZlIGEg
YDw8YCBvcGVyYXRvciBmb3IgYEJhcmAsIG9yIGBCYXJgIG1heSBhbHJlYWR5IGhhdmUgYSBgPDxg
IG9wZXJhdG9yIHRoYXQKK2RvZXNuJ3QgZG8gd2hhdCB5b3Ugd2FudCAoYW5kIHlvdSBjYW5ub3Qg
Y2hhbmdlIGl0KS4gSWYgc28sIHlvdSBjYW4gaW5zdGVhZAorZGVmaW5lIGEgYFByaW50VG8oKWAg
ZnVuY3Rpb24gbGlrZSB0aGlzOgorCitgYGBjKysKKy8vIFN0cmVhbXMgYXJlIGFsbG93ZWQgb25s
eSBmb3IgbG9nZ2luZy4gIERvbid0IGluY2x1ZGUgdGhpcyBmb3IKKy8vIGFueSBvdGhlciBwdXJw
b3NlLgorI2luY2x1ZGUgPG9zdHJlYW0+CisKK25hbWVzcGFjZSBmb28geworCitjbGFzcyBCYXIg
eworICAuLi4KKyAgZnJpZW5kIHZvaWQgUHJpbnRUbyhjb25zdCBCYXImIGJhciwgc3RkOjpvc3Ry
ZWFtKiBvcykgeworICAgICpvcyA8PCBiYXIuRGVidWdTdHJpbmcoKTsgIC8vIHdoYXRldmVyIG5l
ZWRlZCB0byBwcmludCBiYXIgdG8gb3MKKyAgfQorfTsKKworLy8gSWYgeW91IGNhbid0IGRlY2xh
cmUgdGhlIGZ1bmN0aW9uIGluIHRoZSBjbGFzcyBpdCdzIGltcG9ydGFudCB0aGF0IFByaW50VG8o
KQorLy8gaXMgZGVmaW5lZCBpbiB0aGUgU0FNRSBuYW1lc3BhY2UgdGhhdCBkZWZpbmVzIEJhci4g
IEMrKydzIGxvb2stdXAgcnVsZXMgcmVseQorLy8gb24gdGhhdC4KK3ZvaWQgUHJpbnRUbyhjb25z
dCBCYXImIGJhciwgc3RkOjpvc3RyZWFtKiBvcykgeworICAqb3MgPDwgYmFyLkRlYnVnU3RyaW5n
KCk7ICAvLyB3aGF0ZXZlciBuZWVkZWQgdG8gcHJpbnQgYmFyIHRvIG9zCit9CisKK30gIC8vIG5h
bWVzcGFjZSBmb28KK2BgYAorCitJZiB5b3UgaGF2ZSBkZWZpbmVkIGJvdGggYDw8YCBhbmQgYFBy
aW50VG8oKWAsIHRoZSBsYXR0ZXIgd2lsbCBiZSB1c2VkIHdoZW4KK2dvb2dsZXRlc3QgaXMgY29u
Y2VybmVkLiBUaGlzIGFsbG93cyB5b3UgdG8gY3VzdG9taXplIGhvdyB0aGUgdmFsdWUgYXBwZWFy
cyBpbgorZ29vZ2xldGVzdCdzIG91dHB1dCB3aXRob3V0IGFmZmVjdGluZyBjb2RlIHRoYXQgcmVs
aWVzIG9uIHRoZSBiZWhhdmlvciBvZiBpdHMKK2A8PGAgb3BlcmF0b3IuCisKK0lmIHlvdSB3YW50
IHRvIHByaW50IGEgdmFsdWUgYHhgIHVzaW5nIGdvb2dsZXRlc3QncyB2YWx1ZSBwcmludGVyIHlv
dXJzZWxmLCBqdXN0CitjYWxsIGA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoeClgLCB3aGljaCBy
ZXR1cm5zIGFuIGBzdGQ6OnN0cmluZ2A6CisKK2BgYGMrKwordmVjdG9yPHBhaXI8QmFyLCBpbnQ+
ID4gYmFyX2ludHMgPSBHZXRCYXJJbnRWZWN0b3IoKTsKKworRVhQRUNUX1RSVUUoSXNDb3JyZWN0
QmFySW50VmVjdG9yKGJhcl9pbnRzKSkKKyAgICA8PCAiYmFyX2ludHMgPSAiIDw8IDo6dGVzdGlu
Zzo6UHJpbnRUb1N0cmluZyhiYXJfaW50cyk7CitgYGAKKworIyMgRGVhdGggVGVzdHMKKworSW4g
bWFueSBhcHBsaWNhdGlvbnMsIHRoZXJlIGFyZSBhc3NlcnRpb25zIHRoYXQgY2FuIGNhdXNlIGFw
cGxpY2F0aW9uIGZhaWx1cmUgaWYKK2EgY29uZGl0aW9uIGlzIG5vdCBtZXQuIFRoZXNlIHNhbml0
eSBjaGVja3MsIHdoaWNoIGVuc3VyZSB0aGF0IHRoZSBwcm9ncmFtIGlzIGluCithIGtub3duIGdv
b2Qgc3RhdGUsIGFyZSB0aGVyZSB0byBmYWlsIGF0IHRoZSBlYXJsaWVzdCBwb3NzaWJsZSB0aW1l
IGFmdGVyIHNvbWUKK3Byb2dyYW0gc3RhdGUgaXMgY29ycnVwdGVkLiBJZiB0aGUgYXNzZXJ0aW9u
IGNoZWNrcyB0aGUgd3JvbmcgY29uZGl0aW9uLCB0aGVuCit0aGUgcHJvZ3JhbSBtYXkgcHJvY2Vl
ZCBpbiBhbiBlcnJvbmVvdXMgc3RhdGUsIHdoaWNoIGNvdWxkIGxlYWQgdG8gbWVtb3J5Citjb3Jy
dXB0aW9uLCBzZWN1cml0eSBob2xlcywgb3Igd29yc2UuIEhlbmNlIGl0IGlzIHZpdGFsbHkgaW1w
b3J0YW50IHRvIHRlc3QgdGhhdAorc3VjaCBhc3NlcnRpb24gc3RhdGVtZW50cyB3b3JrIGFzIGV4
cGVjdGVkLgorCitTaW5jZSB0aGVzZSBwcmVjb25kaXRpb24gY2hlY2tzIGNhdXNlIHRoZSBwcm9j
ZXNzZXMgdG8gZGllLCB3ZSBjYWxsIHN1Y2ggdGVzdHMKK19kZWF0aCB0ZXN0c18uIE1vcmUgZ2Vu
ZXJhbGx5LCBhbnkgdGVzdCB0aGF0IGNoZWNrcyB0aGF0IGEgcHJvZ3JhbSB0ZXJtaW5hdGVzCiso
ZXhjZXB0IGJ5IHRocm93aW5nIGFuIGV4Y2VwdGlvbikgaW4gYW4gZXhwZWN0ZWQgZmFzaGlvbiBp
cyBhbHNvIGEgZGVhdGggdGVzdC4KKworCitOb3RlIHRoYXQgaWYgYSBwaWVjZSBvZiBjb2RlIHRo
cm93cyBhbiBleGNlcHRpb24sIHdlIGRvbid0IGNvbnNpZGVyIGl0ICJkZWF0aCIKK2ZvciB0aGUg
cHVycG9zZSBvZiBkZWF0aCB0ZXN0cywgYXMgdGhlIGNhbGxlciBvZiB0aGUgY29kZSBjb3VsZCBj
YXRjaCB0aGUKK2V4Y2VwdGlvbiBhbmQgYXZvaWQgdGhlIGNyYXNoLiBJZiB5b3Ugd2FudCB0byB2
ZXJpZnkgZXhjZXB0aW9ucyB0aHJvd24gYnkgeW91cgorY29kZSwgc2VlIFtFeGNlcHRpb24gQXNz
ZXJ0aW9uc10oI2V4Y2VwdGlvbi1hc3NlcnRpb25zKS4KKworSWYgeW91IHdhbnQgdG8gdGVzdCBg
RVhQRUNUXyooKS9BU1NFUlRfKigpYCBmYWlsdXJlcyBpbiB5b3VyIHRlc3QgY29kZSwgc2VlCitD
YXRjaGluZyBGYWlsdXJlcworCisjIyMgSG93IHRvIFdyaXRlIGEgRGVhdGggVGVzdAorCitnb29n
bGV0ZXN0IGhhcyB0aGUgZm9sbG93aW5nIG1hY3JvcyB0byBzdXBwb3J0IGRlYXRoIHRlc3RzOgor
CitGYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZmF0
YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlcmlmaWVzCistLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tCitgQVNTRVJUX0RF
QVRIKHN0YXRlbWVudCwgcmVnZXgpO2AgICAgICAgICAgICAgIHwgYEVYUEVDVF9ERUFUSChzdGF0
ZW1lbnQsIHJlZ2V4KTtgICAgICAgICAgICAgICB8IGBzdGF0ZW1lbnRgIGNyYXNoZXMgd2l0aCB0
aGUgZ2l2ZW4gZXJyb3IKK2BBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVn
ZXgpO2AgfCBgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KTtgIHwg
aWYgZGVhdGggdGVzdHMgYXJlIHN1cHBvcnRlZCwgdmVyaWZpZXMgdGhhdCBgc3RhdGVtZW50YCBj
cmFzaGVzIHdpdGggdGhlIGdpdmVuIGVycm9yOyBvdGhlcndpc2UgdmVyaWZpZXMgbm90aGluZwor
YEFTU0VSVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCk7YCAgICB8IGBFWFBFQ1Rf
RVhJVChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpO2AgICAgfCBgc3RhdGVtZW50YCBleGl0
cyB3aXRoIHRoZSBnaXZlbiBlcnJvciwgYW5kIGl0cyBleGl0IGNvZGUgbWF0Y2hlcyBgcHJlZGlj
YXRlYAorCit3aGVyZSBgc3RhdGVtZW50YCBpcyBhIHN0YXRlbWVudCB0aGF0IGlzIGV4cGVjdGVk
IHRvIGNhdXNlIHRoZSBwcm9jZXNzIHRvIGRpZSwKK2BwcmVkaWNhdGVgIGlzIGEgZnVuY3Rpb24g
b3IgZnVuY3Rpb24gb2JqZWN0IHRoYXQgZXZhbHVhdGVzIGFuIGludGVnZXIgZXhpdAorc3RhdHVz
LCBhbmQgYHJlZ2V4YCBpcyBhIChQZXJsKSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCB0aGUgc3Rk
ZXJyIG91dHB1dCBvZgorYHN0YXRlbWVudGAgaXMgZXhwZWN0ZWQgdG8gbWF0Y2guIE5vdGUgdGhh
dCBgc3RhdGVtZW50YCBjYW4gYmUgKmFueSB2YWxpZAorc3RhdGVtZW50KiAoaW5jbHVkaW5nICpj
b21wb3VuZCBzdGF0ZW1lbnQqKSBhbmQgZG9lc24ndCBoYXZlIHRvIGJlIGFuCitleHByZXNzaW9u
LgorCisKK0FzIHVzdWFsLCB0aGUgYEFTU0VSVGAgdmFyaWFudHMgYWJvcnQgdGhlIGN1cnJlbnQg
dGVzdCBmdW5jdGlvbiwgd2hpbGUgdGhlCitgRVhQRUNUYCB2YXJpYW50cyBkbyBub3QuCisKKz4g
Tk9URTogV2UgdXNlIHRoZSB3b3JkICJjcmFzaCIgaGVyZSB0byBtZWFuIHRoYXQgdGhlIHByb2Nl
c3MgdGVybWluYXRlcyB3aXRoIGEKKz4gKm5vbi16ZXJvKiBleGl0IHN0YXR1cyBjb2RlLiBUaGVy
ZSBhcmUgdHdvIHBvc3NpYmlsaXRpZXM6IGVpdGhlciB0aGUgcHJvY2VzcworPiBoYXMgY2FsbGVk
IGBleGl0KClgIG9yIGBfZXhpdCgpYCB3aXRoIGEgbm9uLXplcm8gdmFsdWUsIG9yIGl0IG1heSBi
ZSBraWxsZWQgYnkKKz4gYSBzaWduYWwuCis+Cis+IFRoaXMgbWVhbnMgdGhhdCBpZiBgKnN0YXRl
bWVudCpgIHRlcm1pbmF0ZXMgdGhlIHByb2Nlc3Mgd2l0aCBhIDAgZXhpdCBjb2RlLCBpdAorPiBp
cyAqbm90KiBjb25zaWRlcmVkIGEgY3Jhc2ggYnkgYEVYUEVDVF9ERUFUSGAuIFVzZSBgRVhQRUNU
X0VYSVRgIGluc3RlYWQgaWYKKz4gdGhpcyBpcyB0aGUgY2FzZSwgb3IgaWYgeW91IHdhbnQgdG8g
cmVzdHJpY3QgdGhlIGV4aXQgY29kZSBtb3JlIHByZWNpc2VseS4KKworQSBwcmVkaWNhdGUgaGVy
ZSBtdXN0IGFjY2VwdCBhbiBgaW50YCBhbmQgcmV0dXJuIGEgYGJvb2xgLiBUaGUgZGVhdGggdGVz
dAorc3VjY2VlZHMgb25seSBpZiB0aGUgcHJlZGljYXRlIHJldHVybnMgYHRydWVgLiBnb29nbGV0
ZXN0IGRlZmluZXMgYSBmZXcKK3ByZWRpY2F0ZXMgdGhhdCBoYW5kbGUgdGhlIG1vc3QgY29tbW9u
IGNhc2VzOgorCitgYGBjKysKKzo6dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoZXhpdF9jb2RlKQor
YGBgCisKK1RoaXMgZXhwcmVzc2lvbiBpcyBgdHJ1ZWAgaWYgdGhlIHByb2dyYW0gZXhpdGVkIG5v
cm1hbGx5IHdpdGggdGhlIGdpdmVuIGV4aXQKK2NvZGUuCisKK2BgYGMrKworOjp0ZXN0aW5nOjpL
aWxsZWRCeVNpZ25hbChzaWduYWxfbnVtYmVyKSAgLy8gTm90IGF2YWlsYWJsZSBvbiBXaW5kb3dz
LgorYGBgCisKK1RoaXMgZXhwcmVzc2lvbiBpcyBgdHJ1ZWAgaWYgdGhlIHByb2dyYW0gd2FzIGtp
bGxlZCBieSB0aGUgZ2l2ZW4gc2lnbmFsLgorCitUaGUgYCpfREVBVEhgIG1hY3JvcyBhcmUgY29u
dmVuaWVudCB3cmFwcGVycyBmb3IgYCpfRVhJVGAgdGhhdCB1c2UgYSBwcmVkaWNhdGUKK3RoYXQg
dmVyaWZpZXMgdGhlIHByb2Nlc3MnIGV4aXQgY29kZSBpcyBub24temVyby4KKworTm90ZSB0aGF0
IGEgZGVhdGggdGVzdCBvbmx5IGNhcmVzIGFib3V0IHRocmVlIHRoaW5nczoKKworMS4gIGRvZXMg
YHN0YXRlbWVudGAgYWJvcnQgb3IgZXhpdCB0aGUgcHJvY2Vzcz8KKzIuICAoaW4gdGhlIGNhc2Ug
b2YgYEFTU0VSVF9FWElUYCBhbmQgYEVYUEVDVF9FWElUYCkgZG9lcyB0aGUgZXhpdCBzdGF0dXMK
KyAgICBzYXRpc2Z5IGBwcmVkaWNhdGVgPyBPciAoaW4gdGhlIGNhc2Ugb2YgYEFTU0VSVF9ERUFU
SGAgYW5kIGBFWFBFQ1RfREVBVEhgKQorICAgIGlzIHRoZSBleGl0IHN0YXR1cyBub24temVybz8g
QW5kCiszLiAgZG9lcyB0aGUgc3RkZXJyIG91dHB1dCBtYXRjaCBgcmVnZXhgPworCitJbiBwYXJ0
aWN1bGFyLCBpZiBgc3RhdGVtZW50YCBnZW5lcmF0ZXMgYW4gYEFTU0VSVF8qYCBvciBgRVhQRUNU
XypgIGZhaWx1cmUsIGl0Cit3aWxsICoqbm90KiogY2F1c2UgdGhlIGRlYXRoIHRlc3QgdG8gZmFp
bCwgYXMgZ29vZ2xldGVzdCBhc3NlcnRpb25zIGRvbid0IGFib3J0Cit0aGUgcHJvY2Vzcy4KKwor
VG8gd3JpdGUgYSBkZWF0aCB0ZXN0LCBzaW1wbHkgdXNlIG9uZSBvZiB0aGUgYWJvdmUgbWFjcm9z
IGluc2lkZSB5b3VyIHRlc3QKK2Z1bmN0aW9uLiBGb3IgZXhhbXBsZSwKKworYGBgYysrCitURVNU
KE15RGVhdGhUZXN0LCBGb28pIHsKKyAgLy8gVGhpcyBkZWF0aCB0ZXN0IHVzZXMgYSBjb21wb3Vu
ZCBzdGF0ZW1lbnQuCisgIEFTU0VSVF9ERUFUSCh7CisgICAgaW50IG4gPSA1OworICAgIEZvbygm
bik7CisgIH0sICJFcnJvciBvbiBsaW5lIC4qIG9mIEZvbygpIik7Cit9CisKK1RFU1QoTXlEZWF0
aFRlc3QsIE5vcm1hbEV4aXQpIHsKKyAgRVhQRUNUX0VYSVQoTm9ybWFsRXhpdCgpLCA6OnRlc3Rp
bmc6OkV4aXRlZFdpdGhDb2RlKDApLCAiU3VjY2VzcyIpOworfQorCitURVNUKE15RGVhdGhUZXN0
LCBLaWxsTXlzZWxmKSB7CisgIEVYUEVDVF9FWElUKEtpbGxNeXNlbGYoKSwgOjp0ZXN0aW5nOjpL
aWxsZWRCeVNpZ25hbChTSUdLSUxMKSwKKyAgICAgICAgICAgICAgIlNlbmRpbmcgbXlzZWxmIHVu
YmxvY2thYmxlIHNpZ25hbCIpOworfQorYGBgCisKK3ZlcmlmaWVzIHRoYXQ6CisKKyogICBjYWxs
aW5nIGBGb28oNSlgIGNhdXNlcyB0aGUgcHJvY2VzcyB0byBkaWUgd2l0aCB0aGUgZ2l2ZW4gZXJy
b3IgbWVzc2FnZSwKKyogICBjYWxsaW5nIGBOb3JtYWxFeGl0KClgIGNhdXNlcyB0aGUgcHJvY2Vz
cyB0byBwcmludCBgIlN1Y2Nlc3MiYCB0byBzdGRlcnIgYW5kCisgICAgZXhpdCB3aXRoIGV4aXQg
Y29kZSAwLCBhbmQKKyogICBjYWxsaW5nIGBLaWxsTXlzZWxmKClgIGtpbGxzIHRoZSBwcm9jZXNz
IHdpdGggc2lnbmFsIGBTSUdLSUxMYC4KKworVGhlIHRlc3QgZnVuY3Rpb24gYm9keSBtYXkgY29u
dGFpbiBvdGhlciBhc3NlcnRpb25zIGFuZCBzdGF0ZW1lbnRzIGFzIHdlbGwsIGlmCituZWNlc3Nh
cnkuCisKKyMjIyBEZWF0aCBUZXN0IE5hbWluZworCitJTVBPUlRBTlQ6IFdlIHN0cm9uZ2x5IHJl
Y29tbWVuZCB5b3UgdG8gZm9sbG93IHRoZSBjb252ZW50aW9uIG9mIG5hbWluZyB5b3VyCisqKnRl
c3QgY2FzZSoqIChub3QgdGVzdCkgYCpEZWF0aFRlc3RgIHdoZW4gaXQgY29udGFpbnMgYSBkZWF0
aCB0ZXN0LCBhcworZGVtb25zdHJhdGVkIGluIHRoZSBhYm92ZSBleGFtcGxlLiBUaGUgW0RlYXRo
IFRlc3RzIEFuZAorVGhyZWFkc10oI2RlYXRoLXRlc3RzLWFuZC10aHJlYWRzKSBzZWN0aW9uIGJl
bG93IGV4cGxhaW5zIHdoeS4KKworSWYgYSB0ZXN0IGZpeHR1cmUgY2xhc3MgaXMgc2hhcmVkIGJ5
IG5vcm1hbCB0ZXN0cyBhbmQgZGVhdGggdGVzdHMsIHlvdSBjYW4gdXNlCitgdXNpbmdgIG9yIGB0
eXBlZGVmYCB0byBpbnRyb2R1Y2UgYW4gYWxpYXMgZm9yIHRoZSBmaXh0dXJlIGNsYXNzIGFuZCBh
dm9pZAorZHVwbGljYXRpbmcgaXRzIGNvZGU6CisKK2BgYGMrKworY2xhc3MgRm9vVGVzdCA6IHB1
YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKKwordXNpbmcgRm9vRGVhdGhUZXN0ID0gRm9v
VGVzdDsKKworVEVTVF9GKEZvb1Rlc3QsIERvZXNUaGlzKSB7CisgIC8vIG5vcm1hbCB0ZXN0Cit9
CisKK1RFU1RfRihGb29EZWF0aFRlc3QsIERvZXNUaGF0KSB7CisgIC8vIGRlYXRoIHRlc3QKK30K
K2BgYAorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4
LjAgb3IgYWJvdmUpLCBDeWd3aW4sIGFuZCBNYWMKKworIyMjIFJlZ3VsYXIgRXhwcmVzc2lvbiBT
eW50YXgKKworCitPbiBQT1NJWCBzeXN0ZW1zIChlLmcuIExpbnV4LCBDeWd3aW4sIGFuZCBNYWMp
LCBnb29nbGV0ZXN0IHVzZXMgdGhlCitbUE9TSVggZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9u
XShodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvYmFzZWRlZnMv
eGJkX2NoYXAwOS5odG1sI3RhZ18wOV8wNCkKK3N5bnRheC4gVG8gbGVhcm4gYWJvdXQgdGhpcyBz
eW50YXgsIHlvdSBtYXkgd2FudCB0byByZWFkIHRoaXMKK1tXaWtpcGVkaWEgZW50cnldKGh0dHA6
Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVndWxhcl9leHByZXNzaW9uI1BPU0lYX0V4dGVuZGVk
X1JlZ3VsYXJfRXhwcmVzc2lvbnMpLgorCitPbiBXaW5kb3dzLCBnb29nbGV0ZXN0IHVzZXMgaXRz
IG93biBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uIGltcGxlbWVudGF0aW9uLiBJdAorbGFja3Mg
bWFueSBmZWF0dXJlcy4gRm9yIGV4YW1wbGUsIHdlIGRvbid0IHN1cHBvcnQgdW5pb24gKGAieHx5
ImApLCBncm91cGluZworKGAiKHh5KSJgKSwgYnJhY2tldHMgKGAiW3h5XSJgKSwgYW5kIHJlcGV0
aXRpb24gY291bnQgKGAieHs1LDd9ImApLCBhbW9uZworb3RoZXJzLiBCZWxvdyBpcyB3aGF0IHdl
IGRvIHN1cHBvcnQgKGBBYCBkZW5vdGVzIGEgbGl0ZXJhbCBjaGFyYWN0ZXIsIHBlcmlvZAorKGAu
YCksIG9yIGEgc2luZ2xlIGBcXCBgIGVzY2FwZSBzZXF1ZW5jZTsgYHhgIGFuZCBgeWAgZGVub3Rl
IHJlZ3VsYXIKK2V4cHJlc3Npb25zLik6CisKK0V4cHJlc3Npb24gfCBNZWFuaW5nCistLS0tLS0t
LS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KK2BjYCAgICAgICAgfCBtYXRjaGVzIGFueSBsaXRlcmFsIGNoYXJhY3RlciBg
Y2AKK2BcXGRgICAgICAgfCBtYXRjaGVzIGFueSBkZWNpbWFsIGRpZ2l0CitgXFxEYCAgICAgIHwg
bWF0Y2hlcyBhbnkgY2hhcmFjdGVyIHRoYXQncyBub3QgYSBkZWNpbWFsIGRpZ2l0CitgXFxmYCAg
ICAgIHwgbWF0Y2hlcyBgXGZgCitgXFxuYCAgICAgIHwgbWF0Y2hlcyBgXG5gCitgXFxyYCAgICAg
IHwgbWF0Y2hlcyBgXHJgCitgXFxzYCAgICAgIHwgbWF0Y2hlcyBhbnkgQVNDSUkgd2hpdGVzcGFj
ZSwgaW5jbHVkaW5nIGBcbmAKK2BcXFNgICAgICAgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhh
dCdzIG5vdCBhIHdoaXRlc3BhY2UKK2BcXHRgICAgICAgfCBtYXRjaGVzIGBcdGAKK2BcXHZgICAg
ICAgfCBtYXRjaGVzIGBcdmAKK2BcXHdgICAgICAgfCBtYXRjaGVzIGFueSBsZXR0ZXIsIGBfYCwg
b3IgZGVjaW1hbCBkaWdpdAorYFxcV2AgICAgICB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0
IGBcXHdgIGRvZXNuJ3QgbWF0Y2gKK2BcXGNgICAgICAgfCBtYXRjaGVzIGFueSBsaXRlcmFsIGNo
YXJhY3RlciBgY2AsIHdoaWNoIG11c3QgYmUgYSBwdW5jdHVhdGlvbgorYC5gICAgICAgICB8IG1h
dGNoZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIgZXhjZXB0IGBcbmAKK2BBP2AgICAgICAgfCBtYXRj
aGVzIDAgb3IgMSBvY2N1cnJlbmNlcyBvZiBgQWAKK2BBKmAgICAgICAgfCBtYXRjaGVzIDAgb3Ig
bWFueSBvY2N1cnJlbmNlcyBvZiBgQWAKK2BBK2AgICAgICAgfCBtYXRjaGVzIDEgb3IgbWFueSBv
Y2N1cnJlbmNlcyBvZiBgQWAKK2BeYCAgICAgICAgfCBtYXRjaGVzIHRoZSBiZWdpbm5pbmcgb2Yg
YSBzdHJpbmcgKG5vdCB0aGF0IG9mIGVhY2ggbGluZSkKK2AkYCAgICAgICAgfCBtYXRjaGVzIHRo
ZSBlbmQgb2YgYSBzdHJpbmcgKG5vdCB0aGF0IG9mIGVhY2ggbGluZSkKK2B4eWAgICAgICAgfCBt
YXRjaGVzIGB4YCBmb2xsb3dlZCBieSBgeWAKKworVG8gaGVscCB5b3UgZGV0ZXJtaW5lIHdoaWNo
IGNhcGFiaWxpdHkgaXMgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtLCBnb29nbGV0ZXN0CitkZWZp
bmVzIG1hY3JvcyB0byBnb3Zlcm4gd2hpY2ggcmVndWxhciBleHByZXNzaW9uIGl0IGlzIHVzaW5n
LiBUaGUgbWFjcm9zIGFyZToKKzwhLS1hYnNsOmdvb2dsZTMtYmVnaW4oZ29vZ2xlMy1vbmx5KS0t
PmBHVEVTVF9VU0VTX1BDUkU9MWAsIG9yCis8IS0tYWJzbDpnb29nbGUzLWVuZC0tPiBgR1RFU1Rf
VVNFU19TSU1QTEVfUkU9MWAgb3IgYEdURVNUX1VTRVNfUE9TSVhfUkU9MWAuIElmCit5b3Ugd2Fu
dCB5b3VyIGRlYXRoIHRlc3RzIHRvIHdvcmsgaW4gYWxsIGNhc2VzLCB5b3UgY2FuIGVpdGhlciBg
I2lmYCBvbiB0aGVzZQorbWFjcm9zIG9yIHVzZSB0aGUgbW9yZSBsaW1pdGVkIHN5bnRheCBvbmx5
LgorCisjIyMgSG93IEl0IFdvcmtzCisKK1VuZGVyIHRoZSBob29kLCBgQVNTRVJUX0VYSVQoKWAg
c3Bhd25zIGEgbmV3IHByb2Nlc3MgYW5kIGV4ZWN1dGVzIHRoZSBkZWF0aCB0ZXN0CitzdGF0ZW1l
bnQgaW4gdGhhdCBwcm9jZXNzLiBUaGUgZGV0YWlscyBvZiBob3cgcHJlY2lzZWx5IHRoYXQgaGFw
cGVucyBkZXBlbmQgb24KK3RoZSBwbGF0Zm9ybSBhbmQgdGhlIHZhcmlhYmxlIDo6dGVzdGluZzo6
R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSAod2hpY2ggaXMKK2luaXRpYWxpemVkIGZyb20g
dGhlIGNvbW1hbmQtbGluZSBmbGFnIGAtLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGVgKS4KKworKiAg
IE9uIFBPU0lYIHN5c3RlbXMsIGBmb3JrKClgIChvciBgY2xvbmUoKWAgb24gTGludXgpIGlzIHVz
ZWQgdG8gc3Bhd24gdGhlCisgICAgY2hpbGQsIGFmdGVyIHdoaWNoOgorICAgICogICBJZiB0aGUg
dmFyaWFibGUncyB2YWx1ZSBpcyBgImZhc3QiYCwgdGhlIGRlYXRoIHRlc3Qgc3RhdGVtZW50IGlz
CisgICAgICAgIGltbWVkaWF0ZWx5IGV4ZWN1dGVkLgorICAgICogICBJZiB0aGUgdmFyaWFibGUn
cyB2YWx1ZSBpcyBgInRocmVhZHNhZmUiYCwgdGhlIGNoaWxkIHByb2Nlc3MgcmUtZXhlY3V0ZXMK
KyAgICAgICAgdGhlIHVuaXQgdGVzdCBiaW5hcnkganVzdCBhcyBpdCB3YXMgb3JpZ2luYWxseSBp
bnZva2VkLCBidXQgd2l0aCBzb21lCisgICAgICAgIGV4dHJhIGZsYWdzIHRvIGNhdXNlIGp1c3Qg
dGhlIHNpbmdsZSBkZWF0aCB0ZXN0IHVuZGVyIGNvbnNpZGVyYXRpb24gdG8KKyAgICAgICAgYmUg
cnVuLgorKiAgIE9uIFdpbmRvd3MsIHRoZSBjaGlsZCBpcyBzcGF3bmVkIHVzaW5nIHRoZSBgQ3Jl
YXRlUHJvY2VzcygpYCBBUEksIGFuZAorICAgIHJlLWV4ZWN1dGVzIHRoZSBiaW5hcnkgdG8gY2F1
c2UganVzdCB0aGUgc2luZ2xlIGRlYXRoIHRlc3QgdW5kZXIKKyAgICBjb25zaWRlcmF0aW9uIHRv
IGJlIHJ1biAtIG11Y2ggbGlrZSB0aGUgYHRocmVhZHNhZmVgIG1vZGUgb24gUE9TSVguCisKK090
aGVyIHZhbHVlcyBmb3IgdGhlIHZhcmlhYmxlIGFyZSBpbGxlZ2FsIGFuZCB3aWxsIGNhdXNlIHRo
ZSBkZWF0aCB0ZXN0IHRvIGZhaWwuCitDdXJyZW50bHksIHRoZSBmbGFnJ3MgZGVmYXVsdCB2YWx1
ZSBpcworImZhc3QiLiBIb3dldmVyLCB3ZSByZXNlcnZlCit0aGUgcmlnaHQgdG8gY2hhbmdlIGl0
IGluIHRoZSBmdXR1cmUuIFRoZXJlZm9yZSwgeW91ciB0ZXN0cyBzaG91bGQgbm90IGRlcGVuZCBv
bgordGhpcy4gSW4gZWl0aGVyIGNhc2UsIHRoZSBwYXJlbnQgcHJvY2VzcyB3YWl0cyBmb3IgdGhl
IGNoaWxkIHByb2Nlc3MgdG8KK2NvbXBsZXRlLCBhbmQgY2hlY2tzIHRoYXQKKworMS4gIHRoZSBj
aGlsZCdzIGV4aXQgc3RhdHVzIHNhdGlzZmllcyB0aGUgcHJlZGljYXRlLCBhbmQKKzIuICB0aGUg
Y2hpbGQncyBzdGRlcnIgbWF0Y2hlcyB0aGUgcmVndWxhciBleHByZXNzaW9uLgorCitJZiB0aGUg
ZGVhdGggdGVzdCBzdGF0ZW1lbnQgcnVucyB0byBjb21wbGV0aW9uIHdpdGhvdXQgZHlpbmcsIHRo
ZSBjaGlsZCBwcm9jZXNzCit3aWxsIG5vbmV0aGVsZXNzIHRlcm1pbmF0ZSwgYW5kIHRoZSBhc3Nl
cnRpb24gZmFpbHMuCisKKyMjIyBEZWF0aCBUZXN0cyBBbmQgVGhyZWFkcworCitUaGUgcmVhc29u
IGZvciB0aGUgdHdvIGRlYXRoIHRlc3Qgc3R5bGVzIGhhcyB0byBkbyB3aXRoIHRocmVhZCBzYWZl
dHkuIER1ZSB0bword2VsbC1rbm93biBwcm9ibGVtcyB3aXRoIGZvcmtpbmcgaW4gdGhlIHByZXNl
bmNlIG9mIHRocmVhZHMsIGRlYXRoIHRlc3RzIHNob3VsZAorYmUgcnVuIGluIGEgc2luZ2xlLXRo
cmVhZGVkIGNvbnRleHQuIFNvbWV0aW1lcywgaG93ZXZlciwgaXQgaXNuJ3QgZmVhc2libGUgdG8K
K2FycmFuZ2UgdGhhdCBraW5kIG9mIGVudmlyb25tZW50LiBGb3IgZXhhbXBsZSwgc3RhdGljYWxs
eS1pbml0aWFsaXplZCBtb2R1bGVzCittYXkgc3RhcnQgdGhyZWFkcyBiZWZvcmUgbWFpbiBpcyBl
dmVyIHJlYWNoZWQuIE9uY2UgdGhyZWFkcyBoYXZlIGJlZW4gY3JlYXRlZCwKK2l0IG1heSBiZSBk
aWZmaWN1bHQgb3IgaW1wb3NzaWJsZSB0byBjbGVhbiB0aGVtIHVwLgorCitnb29nbGV0ZXN0IGhh
cyB0aHJlZSBmZWF0dXJlcyBpbnRlbmRlZCB0byByYWlzZSBhd2FyZW5lc3Mgb2YgdGhyZWFkaW5n
IGlzc3Vlcy4KKworMS4gIEEgd2FybmluZyBpcyBlbWl0dGVkIGlmIG11bHRpcGxlIHRocmVhZHMg
YXJlIHJ1bm5pbmcgd2hlbiBhIGRlYXRoIHRlc3QgaXMKKyAgICBlbmNvdW50ZXJlZC4KKzIuICBU
ZXN0IGNhc2VzIHdpdGggYSBuYW1lIGVuZGluZyBpbiAiRGVhdGhUZXN0IiBhcmUgcnVuIGJlZm9y
ZSBhbGwgb3RoZXIgdGVzdHMuCiszLiAgSXQgdXNlcyBgY2xvbmUoKWAgaW5zdGVhZCBvZiBgZm9y
aygpYCB0byBzcGF3biB0aGUgY2hpbGQgcHJvY2VzcyBvbiBMaW51eAorICAgIChgY2xvbmUoKWAg
aXMgbm90IGF2YWlsYWJsZSBvbiBDeWd3aW4gYW5kIE1hYyksIGFzIGBmb3JrKClgIGlzIG1vcmUg
bGlrZWx5CisgICAgdG8gY2F1c2UgdGhlIGNoaWxkIHRvIGhhbmcgd2hlbiB0aGUgcGFyZW50IHBy
b2Nlc3MgaGFzIG11bHRpcGxlIHRocmVhZHMuCisKK0l0J3MgcGVyZmVjdGx5IGZpbmUgdG8gY3Jl
YXRlIHRocmVhZHMgaW5zaWRlIGEgZGVhdGggdGVzdCBzdGF0ZW1lbnQ7IHRoZXkgYXJlCitleGVj
dXRlZCBpbiBhIHNlcGFyYXRlIHByb2Nlc3MgYW5kIGNhbm5vdCBhZmZlY3QgdGhlIHBhcmVudC4K
KworIyMjIERlYXRoIFRlc3QgU3R5bGVzCisKKworVGhlICJ0aHJlYWRzYWZlIiBkZWF0aCB0ZXN0
IHN0eWxlIHdhcyBpbnRyb2R1Y2VkIGluIG9yZGVyIHRvIGhlbHAgbWl0aWdhdGUgdGhlCityaXNr
cyBvZiB0ZXN0aW5nIGluIGEgcG9zc2libHkgbXVsdGl0aHJlYWRlZCBlbnZpcm9ubWVudC4gSXQg
dHJhZGVzIGluY3JlYXNlZAordGVzdCBleGVjdXRpb24gdGltZSAocG90ZW50aWFsbHkgZHJhbWF0
aWNhbGx5IHNvKSBmb3IgaW1wcm92ZWQgdGhyZWFkIHNhZmV0eS4KKworVGhlIGF1dG9tYXRlZCB0
ZXN0aW5nIGZyYW1ld29yayBkb2VzIG5vdCBzZXQgdGhlIHN0eWxlIGZsYWcuIFlvdSBjYW4gY2hv
b3NlIGEKK3BhcnRpY3VsYXIgc3R5bGUgb2YgZGVhdGggdGVzdHMgYnkgc2V0dGluZyB0aGUgZmxh
ZyBwcm9ncmFtbWF0aWNhbGx5OgorCitgYGBjKysKK3Rlc3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRo
X3Rlc3Rfc3R5bGU9InRocmVhZHNhZmUiCitgYGAKKworWW91IGNhbiBkbyB0aGlzIGluIGBtYWlu
KClgIHRvIHNldCB0aGUgc3R5bGUgZm9yIGFsbCBkZWF0aCB0ZXN0cyBpbiB0aGUgYmluYXJ5LAor
b3IgaW4gaW5kaXZpZHVhbCB0ZXN0cy4gUmVjYWxsIHRoYXQgZmxhZ3MgYXJlIHNhdmVkIGJlZm9y
ZSBydW5uaW5nIGVhY2ggdGVzdCBhbmQKK3Jlc3RvcmVkIGFmdGVyd2FyZHMsIHNvIHlvdSBuZWVk
IG5vdCBkbyB0aGF0IHlvdXJzZWxmLiBGb3IgZXhhbXBsZToKKworYGBgYysrCitpbnQgbWFpbihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgSW5pdEdvb2dsZShhcmd2WzBdLCAmYXJnYywgJmFy
Z3YsIHRydWUpOworICA6OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAi
ZmFzdCI7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CisKK1RFU1QoTXlEZWF0aFRlc3Qs
IFRlc3RPbmUpIHsKKyAgOjp0ZXN0aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0g
InRocmVhZHNhZmUiOworICAvLyBUaGlzIHRlc3QgaXMgcnVuIGluIHRoZSAidGhyZWFkc2FmZSIg
c3R5bGU6CisgIEFTU0VSVF9ERUFUSChUaGlzU2hvdWxkRGllKCksICIiKTsKK30KKworVEVTVChN
eURlYXRoVGVzdCwgVGVzdFR3bykgeworICAvLyBUaGlzIHRlc3QgaXMgcnVuIGluIHRoZSAiZmFz
dCIgc3R5bGU6CisgIEFTU0VSVF9ERUFUSChUaGlzU2hvdWxkRGllKCksICIiKTsKK30KK2BgYAor
CisKKyMjIyBDYXZlYXRzCisKK1RoZSBgc3RhdGVtZW50YCBhcmd1bWVudCBvZiBgQVNTRVJUX0VY
SVQoKWAgY2FuIGJlIGFueSB2YWxpZCBDKysgc3RhdGVtZW50LiBJZgoraXQgbGVhdmVzIHRoZSBj
dXJyZW50IGZ1bmN0aW9uIHZpYSBhIGByZXR1cm5gIHN0YXRlbWVudCBvciBieSB0aHJvd2luZyBh
bgorZXhjZXB0aW9uLCB0aGUgZGVhdGggdGVzdCBpcyBjb25zaWRlcmVkIHRvIGhhdmUgZmFpbGVk
LiBTb21lIGdvb2dsZXRlc3QgbWFjcm9zCittYXkgcmV0dXJuIGZyb20gdGhlIGN1cnJlbnQgZnVu
Y3Rpb24gKGUuZy4gYEFTU0VSVF9UUlVFKClgKSwgc28gYmUgc3VyZSB0byBhdm9pZAordGhlbSBp
biBgc3RhdGVtZW50YC4KKworU2luY2UgYHN0YXRlbWVudGAgcnVucyBpbiB0aGUgY2hpbGQgcHJv
Y2VzcywgYW55IGluLW1lbW9yeSBzaWRlIGVmZmVjdCAoZS5nLgorbW9kaWZ5aW5nIGEgdmFyaWFi
bGUsIHJlbGVhc2luZyBtZW1vcnksIGV0YykgaXQgY2F1c2VzIHdpbGwgKm5vdCogYmUgb2JzZXJ2
YWJsZQoraW4gdGhlIHBhcmVudCBwcm9jZXNzLiBJbiBwYXJ0aWN1bGFyLCBpZiB5b3UgcmVsZWFz
ZSBtZW1vcnkgaW4gYSBkZWF0aCB0ZXN0LAoreW91ciBwcm9ncmFtIHdpbGwgZmFpbCB0aGUgaGVh
cCBjaGVjayBhcyB0aGUgcGFyZW50IHByb2Nlc3Mgd2lsbCBuZXZlciBzZWUgdGhlCittZW1vcnkg
cmVjbGFpbWVkLiBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIHlvdSBjYW4KKworMS4gIHRyeSBub3Qg
dG8gZnJlZSBtZW1vcnkgaW4gYSBkZWF0aCB0ZXN0OworMi4gIGZyZWUgdGhlIG1lbW9yeSBhZ2Fp
biBpbiB0aGUgcGFyZW50IHByb2Nlc3M7IG9yCiszLiAgZG8gbm90IHVzZSB0aGUgaGVhcCBjaGVj
a2VyIGluIHlvdXIgcHJvZ3JhbS4KKworRHVlIHRvIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCwg
eW91IGNhbm5vdCBwbGFjZSBtdWx0aXBsZSBkZWF0aCB0ZXN0IGFzc2VydGlvbnMKK29uIHRoZSBz
YW1lIGxpbmU7IG90aGVyd2lzZSwgY29tcGlsYXRpb24gd2lsbCBmYWlsIHdpdGggYW4gdW5vYnZp
b3VzIGVycm9yCittZXNzYWdlLgorCitEZXNwaXRlIHRoZSBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5
IGFmZm9yZGVkIGJ5IHRoZSAidGhyZWFkc2FmZSIgc3R5bGUgb2YgZGVhdGgKK3Rlc3QsIHRocmVh
ZCBwcm9ibGVtcyBzdWNoIGFzIGRlYWRsb2NrIGFyZSBzdGlsbCBwb3NzaWJsZSBpbiB0aGUgcHJl
c2VuY2Ugb2YKK2hhbmRsZXJzIHJlZ2lzdGVyZWQgd2l0aCBgcHRocmVhZF9hdGZvcmsoMylgLgor
CisKKyMjIFVzaW5nIEFzc2VydGlvbnMgaW4gU3ViLXJvdXRpbmVzCisKKyMjIyBBZGRpbmcgVHJh
Y2VzIHRvIEFzc2VydGlvbnMKKworSWYgYSB0ZXN0IHN1Yi1yb3V0aW5lIGlzIGNhbGxlZCBmcm9t
IHNldmVyYWwgcGxhY2VzLCB3aGVuIGFuIGFzc2VydGlvbiBpbnNpZGUgaXQKK2ZhaWxzLCBpdCBj
YW4gYmUgaGFyZCB0byB0ZWxsIHdoaWNoIGludm9jYXRpb24gb2YgdGhlIHN1Yi1yb3V0aW5lIHRo
ZSBmYWlsdXJlIGlzCitmcm9tLiAKK1lvdSBjYW4gYWxsZXZpYXRlIHRoaXMgcHJvYmxlbSB1c2lu
ZyBleHRyYSBsb2dnaW5nIG9yIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2VzLAorYnV0IHRoYXQgdXN1
YWxseSBjbHV0dGVycyB1cCB5b3VyIHRlc3RzLiBBIGJldHRlciBzb2x1dGlvbiBpcyB0byB1c2Ug
dGhlCitgU0NPUEVEX1RSQUNFYCBtYWNybyBvciB0aGUgYFNjb3BlZFRyYWNlYCB1dGlsaXR5Ogor
CitgYGBjKysKK1NDT1BFRF9UUkFDRShtZXNzYWdlKTsKK1Njb3BlZFRyYWNlIHRyYWNlKCJmaWxl
X3BhdGgiLCBsaW5lX251bWJlciwgbWVzc2FnZSk7CitgYGAKKword2hlcmUgYG1lc3NhZ2VgIGNh
biBiZSBhbnl0aGluZyBzdHJlYW1hYmxlIHRvIGBzdGQ6Om9zdHJlYW1gLiBgU0NPUEVEX1RSQUNF
YAorbWFjcm8gd2lsbCBjYXVzZSB0aGUgY3VycmVudCBmaWxlIG5hbWUsIGxpbmUgbnVtYmVyLCBh
bmQgdGhlIGdpdmVuIG1lc3NhZ2UgdG8gYmUKK2FkZGVkIGluIGV2ZXJ5IGZhaWx1cmUgbWVzc2Fn
ZS4gYFNjb3BlZFRyYWNlYCBhY2NlcHRzIGV4cGxpY2l0IGZpbGUgbmFtZSBhbmQKK2xpbmUgbnVt
YmVyIGluIGFyZ3VtZW50cywgd2hpY2ggaXMgdXNlZnVsIGZvciB3cml0aW5nIHRlc3QgaGVscGVy
cy4gVGhlIGVmZmVjdAord2lsbCBiZSB1bmRvbmUgd2hlbiB0aGUgY29udHJvbCBsZWF2ZXMgdGhl
IGN1cnJlbnQgbGV4aWNhbCBzY29wZS4KKworRm9yIGV4YW1wbGUsCisKK2BgYGMrKworMTA6IHZv
aWQgU3ViMShpbnQgbikgeworMTE6ICAgRVhQRUNUX0VRKDEsIEJhcihuKSk7CisxMjogICBFWFBF
Q1RfRVEoMiwgQmFyKG4gKyAxKSk7CisxMzogfQorMTQ6CisxNTogVEVTVChGb29UZXN0LCBCYXIp
IHsKKzE2OiAgIHsKKzE3OiAgICAgU0NPUEVEX1RSQUNFKCJBIik7ICAvLyBUaGlzIHRyYWNlIHBv
aW50IHdpbGwgYmUgaW5jbHVkZWQgaW4KKzE4OiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBl
dmVyeSBmYWlsdXJlIGluIHRoaXMgc2NvcGUuCisxOTogICAgIFN1YjEoMSk7CisyMDogICB9Cisy
MTogICAvLyBOb3cgaXQgd29uJ3QuCisyMjogICBTdWIxKDkpOworMjM6IH0KK2BgYAorCitjb3Vs
ZCByZXN1bHQgaW4gbWVzc2FnZXMgbGlrZSB0aGVzZToKKworYGBgbm9uZQorcGF0aC90by9mb29f
dGVzdC5jYzoxMTogRmFpbHVyZQorVmFsdWUgb2Y6IEJhcihuKQorRXhwZWN0ZWQ6IDEKKyAgQWN0
dWFsOiAyCisgICBUcmFjZToKK3BhdGgvdG8vZm9vX3Rlc3QuY2M6MTc6IEEKKworcGF0aC90by9m
b29fdGVzdC5jYzoxMjogRmFpbHVyZQorVmFsdWUgb2Y6IEJhcihuICsgMSkKK0V4cGVjdGVkOiAy
CisgIEFjdHVhbDogMworYGBgCisKK1dpdGhvdXQgdGhlIHRyYWNlLCBpdCB3b3VsZCd2ZSBiZWVu
IGRpZmZpY3VsdCB0byBrbm93IHdoaWNoIGludm9jYXRpb24gb2YKK2BTdWIxKClgIHRoZSB0d28g
ZmFpbHVyZXMgY29tZSBmcm9tIHJlc3BlY3RpdmVseS4gKFlvdSBjb3VsZCBhZGQKKworYW4gZXh0
cmEgbWVzc2FnZSB0byBlYWNoIGFzc2VydGlvbiBpbiBgU3ViMSgpYCB0byBpbmRpY2F0ZSB0aGUg
dmFsdWUgb2YgYG5gLCBidXQKK3RoYXQncyB0ZWRpb3VzLikKKworU29tZSB0aXBzIG9uIHVzaW5n
IGBTQ09QRURfVFJBQ0VgOgorCisxLiAgV2l0aCBhIHN1aXRhYmxlIG1lc3NhZ2UsIGl0J3Mgb2Z0
ZW4gZW5vdWdoIHRvIHVzZSBgU0NPUEVEX1RSQUNFYCBhdCB0aGUKKyAgICBiZWdpbm5pbmcgb2Yg
YSBzdWItcm91dGluZSwgaW5zdGVhZCBvZiBhdCBlYWNoIGNhbGwgc2l0ZS4KKzIuICBXaGVuIGNh
bGxpbmcgc3ViLXJvdXRpbmVzIGluc2lkZSBhIGxvb3AsIG1ha2UgdGhlIGxvb3AgaXRlcmF0b3Ig
cGFydCBvZiB0aGUKKyAgICBtZXNzYWdlIGluIGBTQ09QRURfVFJBQ0VgIHN1Y2ggdGhhdCB5b3Ug
Y2FuIGtub3cgd2hpY2ggaXRlcmF0aW9uIHRoZSBmYWlsdXJlCisgICAgaXMgZnJvbS4KKzMuICBT
b21ldGltZXMgdGhlIGxpbmUgbnVtYmVyIG9mIHRoZSB0cmFjZSBwb2ludCBpcyBlbm91Z2ggZm9y
IGlkZW50aWZ5aW5nIHRoZQorICAgIHBhcnRpY3VsYXIgaW52b2NhdGlvbiBvZiBhIHN1Yi1yb3V0
aW5lLiBJbiB0aGlzIGNhc2UsIHlvdSBkb24ndCBoYXZlIHRvCisgICAgY2hvb3NlIGEgdW5pcXVl
IG1lc3NhZ2UgZm9yIGBTQ09QRURfVFJBQ0VgLiBZb3UgY2FuIHNpbXBseSB1c2UgYCIiYC4KKzQu
ICBZb3UgY2FuIHVzZSBgU0NPUEVEX1RSQUNFYCBpbiBhbiBpbm5lciBzY29wZSB3aGVuIHRoZXJl
IGlzIG9uZSBpbiB0aGUgb3V0ZXIKKyAgICBzY29wZS4gSW4gdGhpcyBjYXNlLCBhbGwgYWN0aXZl
IHRyYWNlIHBvaW50cyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBmYWlsdXJlCisgICAgbWVzc2Fn
ZXMsIGluIHJldmVyc2Ugb3JkZXIgdGhleSBhcmUgZW5jb3VudGVyZWQuCis1LiAgVGhlIHRyYWNl
IGR1bXAgaXMgY2xpY2thYmxlIGluIEVtYWNzIC0gaGl0IGByZXR1cm5gIG9uIGEgbGluZSBudW1i
ZXIgYW5kCisgICAgeW91J2xsIGJlIHRha2VuIHRvIHRoYXQgbGluZSBpbiB0aGUgc291cmNlIGZp
bGUhCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBQcm9w
YWdhdGluZyBGYXRhbCBGYWlsdXJlcworCitBIGNvbW1vbiBwaXRmYWxsIHdoZW4gdXNpbmcgYEFT
U0VSVF8qYCBhbmQgYEZBSUwqYCBpcyBub3QgdW5kZXJzdGFuZGluZyB0aGF0Cit3aGVuIHRoZXkg
ZmFpbCB0aGV5IG9ubHkgYWJvcnQgdGhlIF9jdXJyZW50IGZ1bmN0aW9uXywgbm90IHRoZSBlbnRp
cmUgdGVzdC4gRm9yCitleGFtcGxlLCB0aGUgZm9sbG93aW5nIHRlc3Qgd2lsbCBzZWdmYXVsdDoK
KworYGBgYysrCit2b2lkIFN1YnJvdXRpbmUoKSB7CisgIC8vIEdlbmVyYXRlcyBhIGZhdGFsIGZh
aWx1cmUgYW5kIGFib3J0cyB0aGUgY3VycmVudCBmdW5jdGlvbi4KKyAgQVNTRVJUX0VRKDEsIDIp
OworCisgIC8vIFRoZSBmb2xsb3dpbmcgd29uJ3QgYmUgZXhlY3V0ZWQuCisgIC4uLgorfQorCitU
RVNUKEZvb1Rlc3QsIEJhcikgeworICBTdWJyb3V0aW5lKCk7ICAvLyBUaGUgaW50ZW5kZWQgYmVo
YXZpb3IgaXMgZm9yIHRoZSBmYXRhbCBmYWlsdXJlCisgICAgICAgICAgICAgICAgIC8vIGluIFN1
YnJvdXRpbmUoKSB0byBhYm9ydCB0aGUgZW50aXJlIHRlc3QuCisKKyAgLy8gVGhlIGFjdHVhbCBi
ZWhhdmlvcjogdGhlIGZ1bmN0aW9uIGdvZXMgb24gYWZ0ZXIgU3Vicm91dGluZSgpIHJldHVybnMu
CisgIGludCogcCA9IE5VTEw7CisgICpwID0gMzsgIC8vIFNlZ2ZhdWx0IQorfQorYGBgCisKK1Rv
IGFsbGV2aWF0ZSB0aGlzLCBnb29nbGV0ZXN0IHByb3ZpZGVzIHRocmVlIGRpZmZlcmVudCBzb2x1
dGlvbnMuIFlvdSBjb3VsZCB1c2UKK2VpdGhlciBleGNlcHRpb25zLCB0aGUgYChBU1NFUlR8RVhQ
RUNUKV9OT19GQVRBTF9GQUlMVVJFYCBhc3NlcnRpb25zIG9yIHRoZQorYEhhc0ZhdGFsRmFpbHVy
ZSgpYCBmdW5jdGlvbi4gVGhleSBhcmUgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgdHdvCitz
dWJzZWN0aW9ucy4KKworIyMjIyBBc3NlcnRpbmcgb24gU3Vicm91dGluZXMgd2l0aCBhbiBleGNl
cHRpb24KKworVGhlIGZvbGxvd2luZyBjb2RlIGNhbiB0dXJuIEFTU0VSVC1mYWlsdXJlIGludG8g
YW4gZXhjZXB0aW9uOgorCitgYGBjKysKK2NsYXNzIFRocm93TGlzdGVuZXIgOiBwdWJsaWMgdGVz
dGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CisgIHZvaWQgT25UZXN0UGFydFJlc3VsdChj
b25zdCB0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdCYgcmVzdWx0KSBvdmVycmlkZSB7CisgICAgaWYg
KHJlc3VsdC50eXBlKCkgPT0gdGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUp
IHsKKyAgICAgIHRocm93IHRlc3Rpbmc6OkFzc2VydGlvbkV4Y2VwdGlvbihyZXN1bHQpOworICAg
IH0KKyAgfQorfTsKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICAuLi4KKyAg
dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpLkFwcGVuZChuZXcg
VGhyb3dMaXN0ZW5lcik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CitgYGAKKworVGhp
cyBsaXN0ZW5lciBzaG91bGQgYmUgYWRkZWQgYWZ0ZXIgb3RoZXIgbGlzdGVuZXJzIGlmIHlvdSBo
YXZlIGFueSwgb3RoZXJ3aXNlCit0aGV5IHdvbid0IHNlZSBmYWlsZWQgYE9uVGVzdFBhcnRSZXN1
bHRgLgorCisjIyMjIEFzc2VydGluZyBvbiBTdWJyb3V0aW5lcworCitBcyBzaG93biBhYm92ZSwg
aWYgeW91ciB0ZXN0IGNhbGxzIGEgc3Vicm91dGluZSB0aGF0IGhhcyBhbiBgQVNTRVJUXypgIGZh
aWx1cmUKK2luIGl0LCB0aGUgdGVzdCB3aWxsIGNvbnRpbnVlIGFmdGVyIHRoZSBzdWJyb3V0aW5l
IHJldHVybnMuIFRoaXMgbWF5IG5vdCBiZSB3aGF0Cit5b3Ugd2FudC4KKworT2Z0ZW4gcGVvcGxl
IHdhbnQgZmF0YWwgZmFpbHVyZXMgdG8gcHJvcGFnYXRlIGxpa2UgZXhjZXB0aW9ucy4gRm9yIHRo
YXQKK2dvb2dsZXRlc3Qgb2ZmZXJzIHRoZSBmb2xsb3dpbmcgbWFjcm9zOgorCitGYXRhbCBhc3Nl
cnRpb24gICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgICAg
ICAgICAgICAgICB8IFZlcmlmaWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tCitg
QVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoc3RhdGVtZW50KTtgIHwgYEVYUEVDVF9OT19GQVRBTF9G
QUlMVVJFKHN0YXRlbWVudCk7YCB8IGBzdGF0ZW1lbnRgIGRvZXNuJ3QgZ2VuZXJhdGUgYW55IG5l
dyBmYXRhbCBmYWlsdXJlcyBpbiB0aGUgY3VycmVudCB0aHJlYWQuCisKK09ubHkgZmFpbHVyZXMg
aW4gdGhlIHRocmVhZCB0aGF0IGV4ZWN1dGVzIHRoZSBhc3NlcnRpb24gYXJlIGNoZWNrZWQgdG8g
ZGV0ZXJtaW5lCit0aGUgcmVzdWx0IG9mIHRoaXMgdHlwZSBvZiBhc3NlcnRpb25zLiBJZiBgc3Rh
dGVtZW50YCBjcmVhdGVzIG5ldyB0aHJlYWRzLAorZmFpbHVyZXMgaW4gdGhlc2UgdGhyZWFkcyBh
cmUgaWdub3JlZC4KKworRXhhbXBsZXM6CisKK2BgYGMrKworQVNTRVJUX05PX0ZBVEFMX0ZBSUxV
UkUoRm9vKCkpOworCitpbnQgaTsKK0VYUEVDVF9OT19GQVRBTF9GQUlMVVJFKHsKKyAgaSA9IEJh
cigpOworfSk7CitgYGAKKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4g
QXNzZXJ0aW9ucyBmcm9tIG11bHRpcGxlIHRocmVhZHMgYXJlCitjdXJyZW50bHkgbm90IHN1cHBv
cnRlZCBvbiBXaW5kb3dzLgorCisjIyMjIENoZWNraW5nIGZvciBGYWlsdXJlcyBpbiB0aGUgQ3Vy
cmVudCBUZXN0CisKK2BIYXNGYXRhbEZhaWx1cmUoKWAgaW4gdGhlIGA6OnRlc3Rpbmc6OlRlc3Rg
IGNsYXNzIHJldHVybnMgYHRydWVgIGlmIGFuCithc3NlcnRpb24gaW4gdGhlIGN1cnJlbnQgdGVz
dCBoYXMgc3VmZmVyZWQgYSBmYXRhbCBmYWlsdXJlLiBUaGlzIGFsbG93cworZnVuY3Rpb25zIHRv
IGNhdGNoIGZhdGFsIGZhaWx1cmVzIGluIGEgc3ViLXJvdXRpbmUgYW5kIHJldHVybiBlYXJseS4K
KworYGBgYysrCitjbGFzcyBUZXN0IHsKKyBwdWJsaWM6CisgIC4uLgorICBzdGF0aWMgYm9vbCBI
YXNGYXRhbEZhaWx1cmUoKTsKK307CitgYGAKKworVGhlIHR5cGljYWwgdXNhZ2UsIHdoaWNoIGJh
c2ljYWxseSBzaW11bGF0ZXMgdGhlIGJlaGF2aW9yIG9mIGEgdGhyb3duIGV4Y2VwdGlvbiwKK2lz
OgorCitgYGBjKysKK1RFU1QoRm9vVGVzdCwgQmFyKSB7CisgIFN1YnJvdXRpbmUoKTsKKyAgLy8g
QWJvcnRzIGlmIFN1YnJvdXRpbmUoKSBoYWQgYSBmYXRhbCBmYWlsdXJlLgorICBpZiAoSGFzRmF0
YWxGYWlsdXJlKCkpIHJldHVybjsKKworICAvLyBUaGUgZm9sbG93aW5nIHdvbid0IGJlIGV4ZWN1
dGVkLgorICAuLi4KK30KK2BgYAorCitJZiBgSGFzRmF0YWxGYWlsdXJlKClgIGlzIHVzZWQgb3V0
c2lkZSBvZiBgVEVTVCgpYCAsIGBURVNUX0YoKWAgLCBvciBhIHRlc3QKK2ZpeHR1cmUsIHlvdSBt
dXN0IGFkZCB0aGUgYDo6dGVzdGluZzo6VGVzdDo6YCBwcmVmaXgsIGFzIGluOgorCitgYGBjKysK
K2lmICg6OnRlc3Rpbmc6OlRlc3Q6Okhhc0ZhdGFsRmFpbHVyZSgpKSByZXR1cm47CitgYGAKKwor
U2ltaWxhcmx5LCBgSGFzTm9uZmF0YWxGYWlsdXJlKClgIHJldHVybnMgYHRydWVgIGlmIHRoZSBj
dXJyZW50IHRlc3QgaGFzIGF0CitsZWFzdCBvbmUgbm9uLWZhdGFsIGZhaWx1cmUsIGFuZCBgSGFz
RmFpbHVyZSgpYCByZXR1cm5zIGB0cnVlYCBpZiB0aGUgY3VycmVudAordGVzdCBoYXMgYXQgbGVh
c3Qgb25lIGZhaWx1cmUgb2YgZWl0aGVyIGtpbmQuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4
LCBXaW5kb3dzLCBNYWMuCisKKyMjIExvZ2dpbmcgQWRkaXRpb25hbCBJbmZvcm1hdGlvbgorCitJ
biB5b3VyIHRlc3QgY29kZSwgeW91IGNhbiBjYWxsIGBSZWNvcmRQcm9wZXJ0eSgia2V5IiwgdmFs
dWUpYCB0byBsb2cgYWRkaXRpb25hbAoraW5mb3JtYXRpb24sIHdoZXJlIGB2YWx1ZWAgY2FuIGJl
IGVpdGhlciBhIHN0cmluZyBvciBhbiBgaW50YC4gVGhlICpsYXN0KiB2YWx1ZQorcmVjb3JkZWQg
Zm9yIGEga2V5IHdpbGwgYmUgZW1pdHRlZCB0byB0aGUgW1hNTCBvdXRwdXRdKCNnZW5lcmF0aW5n
LWFuLXhtbC1yZXBvcnQpIGlmIHlvdQorc3BlY2lmeSBvbmUuIEZvciBleGFtcGxlLCB0aGUgdGVz
dAorCitgYGBjKysKK1RFU1RfRihXaWRnZXRVc2FnZVRlc3QsIE1pbkFuZE1heFdpZGdldHMpIHsK
KyAgUmVjb3JkUHJvcGVydHkoIk1heGltdW1XaWRnZXRzIiwgQ29tcHV0ZU1heFVzYWdlKCkpOwor
ICBSZWNvcmRQcm9wZXJ0eSgiTWluaW11bVdpZGdldHMiLCBDb21wdXRlTWluVXNhZ2UoKSk7Cit9
CitgYGAKKword2lsbCBvdXRwdXQgWE1MIGxpa2UgdGhpczoKKworYGBgeG1sCisgIC4uLgorICAg
IDx0ZXN0Y2FzZSBuYW1lPSJNaW5BbmRNYXhXaWRnZXRzIiBzdGF0dXM9InJ1biIgdGltZT0iMC4w
MDYiIGNsYXNzbmFtZT0iV2lkZ2V0VXNhZ2VUZXN0IiBNYXhpbXVtV2lkZ2V0cz0iMTIiIE1pbmlt
dW1XaWRnZXRzPSI5IiAvPgorICAuLi4KK2BgYAorCis+IE5PVEU6Cis+Cis+ICogICBgUmVjb3Jk
UHJvcGVydHkoKWAgaXMgYSBzdGF0aWMgbWVtYmVyIG9mIHRoZSBgVGVzdGAgY2xhc3MuIFRoZXJl
Zm9yZSBpdAorPiAgICAgbmVlZHMgdG8gYmUgcHJlZml4ZWQgd2l0aCBgOjp0ZXN0aW5nOjpUZXN0
OjpgIGlmIHVzZWQgb3V0c2lkZSBvZiB0aGUKKz4gICAgIGBURVNUYCBib2R5IGFuZCB0aGUgdGVz
dCBmaXh0dXJlIGNsYXNzLgorPiAqICAgYCprZXkqYCBtdXN0IGJlIGEgdmFsaWQgWE1MIGF0dHJp
YnV0ZSBuYW1lLCBhbmQgY2Fubm90IGNvbmZsaWN0IHdpdGggdGhlCis+ICAgICBvbmVzIGFscmVh
ZHkgdXNlZCBieSBnb29nbGV0ZXN0IChgbmFtZWAsIGBzdGF0dXNgLCBgdGltZWAsIGBjbGFzc25h
bWVgLAorPiAgICAgYHR5cGVfcGFyYW1gLCBhbmQgYHZhbHVlX3BhcmFtYCkuCis+ICogICBDYWxs
aW5nIGBSZWNvcmRQcm9wZXJ0eSgpYCBvdXRzaWRlIG9mIHRoZSBsaWZlc3BhbiBvZiBhIHRlc3Qg
aXMgYWxsb3dlZC4KKz4gICAgIElmIGl0J3MgY2FsbGVkIG91dHNpZGUgb2YgYSB0ZXN0IGJ1dCBi
ZXR3ZWVuIGEgdGVzdCBjYXNlJ3MKKz4gICAgIGBTZXRVcFRlc3RDYXNlKClgIGFuZCBgVGVhckRv
d25UZXN0Q2FzZSgpYCBtZXRob2RzLCBpdCB3aWxsIGJlIGF0dHJpYnV0ZWQKKz4gICAgIHRvIHRo
ZSBYTUwgZWxlbWVudCBmb3IgdGhlIHRlc3QgY2FzZS4gSWYgaXQncyBjYWxsZWQgb3V0c2lkZSBv
ZiBhbGwgdGVzdAorPiAgICAgY2FzZXMgKGUuZy4gaW4gYSB0ZXN0IGVudmlyb25tZW50KSwgaXQg
d2lsbCBiZSBhdHRyaWJ1dGVkIHRvIHRoZSB0b3AtbGV2ZWwKKz4gICAgIFhNTCBlbGVtZW50Lgor
CisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBTaGFyaW5nIFJl
c291cmNlcyBCZXR3ZWVuIFRlc3RzIGluIHRoZSBTYW1lIFRlc3QgQ2FzZQorCitnb29nbGV0ZXN0
IGNyZWF0ZXMgYSBuZXcgdGVzdCBmaXh0dXJlIG9iamVjdCBmb3IgZWFjaCB0ZXN0IGluIG9yZGVy
IHRvIG1ha2UKK3Rlc3RzIGluZGVwZW5kZW50IGFuZCBlYXNpZXIgdG8gZGVidWcuIEhvd2V2ZXIs
IHNvbWV0aW1lcyB0ZXN0cyB1c2UgcmVzb3VyY2VzCit0aGF0IGFyZSBleHBlbnNpdmUgdG8gc2V0
IHVwLCBtYWtpbmcgdGhlIG9uZS1jb3B5LXBlci10ZXN0IG1vZGVsIHByb2hpYml0aXZlbHkKK2V4
cGVuc2l2ZS4KKworSWYgdGhlIHRlc3RzIGRvbid0IGNoYW5nZSB0aGUgcmVzb3VyY2UsIHRoZXJl
J3Mgbm8gaGFybSBpbiB0aGVpciBzaGFyaW5nIGEKK3NpbmdsZSByZXNvdXJjZSBjb3B5LiBTbywg
aW4gYWRkaXRpb24gdG8gcGVyLXRlc3Qgc2V0LXVwL3RlYXItZG93biwgZ29vZ2xldGVzdAorYWxz
byBzdXBwb3J0cyBwZXItdGVzdC1jYXNlIHNldC11cC90ZWFyLWRvd24uIFRvIHVzZSBpdDoKKwor
MS4gIEluIHlvdXIgdGVzdCBmaXh0dXJlIGNsYXNzIChzYXkgYEZvb1Rlc3RgICksIGRlY2xhcmUg
YXMgYHN0YXRpY2Agc29tZSBtZW1iZXIKKyAgICB2YXJpYWJsZXMgdG8gaG9sZCB0aGUgc2hhcmVk
IHJlc291cmNlcy4KKzEuICBPdXRzaWRlIHlvdXIgdGVzdCBmaXh0dXJlIGNsYXNzICh0eXBpY2Fs
bHkganVzdCBiZWxvdyBpdCksIGRlZmluZSB0aG9zZQorICAgIG1lbWJlciB2YXJpYWJsZXMsIG9w
dGlvbmFsbHkgZ2l2aW5nIHRoZW0gaW5pdGlhbCB2YWx1ZXMuCisxLiAgSW4gdGhlIHNhbWUgdGVz
dCBmaXh0dXJlIGNsYXNzLCBkZWZpbmUgYSBgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpYAor
ICAgIGZ1bmN0aW9uIChyZW1lbWJlciBub3QgdG8gc3BlbGwgaXQgYXMgKipgU2V0dXBUZXN0Q2Fz
ZWAqKiB3aXRoIGEgc21hbGwgYHVgISkKKyAgICB0byBzZXQgdXAgdGhlIHNoYXJlZCByZXNvdXJj
ZXMgYW5kIGEgYHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKWAKKyAgICBmdW5jdGlvbiB0
byB0ZWFyIHRoZW0gZG93bi4KKworVGhhdCdzIGl0ISBnb29nbGV0ZXN0IGF1dG9tYXRpY2FsbHkg
Y2FsbHMgYFNldFVwVGVzdENhc2UoKWAgYmVmb3JlIHJ1bm5pbmcgdGhlCisqZmlyc3QgdGVzdCog
aW4gdGhlIGBGb29UZXN0YCB0ZXN0IGNhc2UgKGkuZS4gYmVmb3JlIGNyZWF0aW5nIHRoZSBmaXJz
dAorYEZvb1Rlc3RgIG9iamVjdCksIGFuZCBjYWxscyBgVGVhckRvd25UZXN0Q2FzZSgpYCBhZnRl
ciBydW5uaW5nIHRoZSAqbGFzdCB0ZXN0KgoraW4gaXQgKGkuZS4gYWZ0ZXIgZGVsZXRpbmcgdGhl
IGxhc3QgYEZvb1Rlc3RgIG9iamVjdCkuIEluIGJldHdlZW4sIHRoZSB0ZXN0cyBjYW4KK3VzZSB0
aGUgc2hhcmVkIHJlc291cmNlcy4KKworUmVtZW1iZXIgdGhhdCB0aGUgdGVzdCBvcmRlciBpcyB1
bmRlZmluZWQsIHNvIHlvdXIgY29kZSBjYW4ndCBkZXBlbmQgb24gYSB0ZXN0CitwcmVjZWRpbmcg
b3IgZm9sbG93aW5nIGFub3RoZXIuIEFsc28sIHRoZSB0ZXN0cyBtdXN0IGVpdGhlciBub3QgbW9k
aWZ5IHRoZSBzdGF0ZQorb2YgYW55IHNoYXJlZCByZXNvdXJjZSwgb3IsIGlmIHRoZXkgZG8gbW9k
aWZ5IHRoZSBzdGF0ZSwgdGhleSBtdXN0IHJlc3RvcmUgdGhlCitzdGF0ZSB0byBpdHMgb3JpZ2lu
YWwgdmFsdWUgYmVmb3JlIHBhc3NpbmcgY29udHJvbCB0byB0aGUgbmV4dCB0ZXN0LgorCitIZXJl
J3MgYW4gZXhhbXBsZSBvZiBwZXItdGVzdC1jYXNlIHNldC11cCBhbmQgdGVhci1kb3duOgorCitg
YGBjKysKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0
ZWQ6CisgIC8vIFBlci10ZXN0LWNhc2Ugc2V0LXVwLgorICAvLyBDYWxsZWQgYmVmb3JlIHRoZSBm
aXJzdCB0ZXN0IGluIHRoaXMgdGVzdCBjYXNlLgorICAvLyBDYW4gYmUgb21pdHRlZCBpZiBub3Qg
bmVlZGVkLgorICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgeworICAgIHNoYXJlZF9yZXNv
dXJjZV8gPSBuZXcgLi4uOworICB9CisKKyAgLy8gUGVyLXRlc3QtY2FzZSB0ZWFyLWRvd24uCisg
IC8vIENhbGxlZCBhZnRlciB0aGUgbGFzdCB0ZXN0IGluIHRoaXMgdGVzdCBjYXNlLgorICAvLyBD
YW4gYmUgb21pdHRlZCBpZiBub3QgbmVlZGVkLgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RD
YXNlKCkgeworICAgIGRlbGV0ZSBzaGFyZWRfcmVzb3VyY2VfOworICAgIHNoYXJlZF9yZXNvdXJj
ZV8gPSBOVUxMOworICB9CisKKyAgLy8gWW91IGNhbiBkZWZpbmUgcGVyLXRlc3Qgc2V0LXVwIGxv
Z2ljIGFzIHVzdWFsLgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IC4uLiB9CisKKyAgLy8gWW91
IGNhbiBkZWZpbmUgcGVyLXRlc3QgdGVhci1kb3duIGxvZ2ljIGFzIHVzdWFsLgorICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7IC4uLiB9CisKKyAgLy8gU29tZSBleHBlbnNpdmUgcmVzb3VyY2Ug
c2hhcmVkIGJ5IGFsbCB0ZXN0cy4KKyAgc3RhdGljIFQqIHNoYXJlZF9yZXNvdXJjZV87Cit9Owor
CitUKiBGb29UZXN0OjpzaGFyZWRfcmVzb3VyY2VfID0gTlVMTDsKKworVEVTVF9GKEZvb1Rlc3Qs
IFRlc3QxKSB7CisgIC4uLiB5b3UgY2FuIHJlZmVyIHRvIHNoYXJlZF9yZXNvdXJjZV8gaGVyZSAu
Li4KK30KKworVEVTVF9GKEZvb1Rlc3QsIFRlc3QyKSB7CisgIC4uLiB5b3UgY2FuIHJlZmVyIHRv
IHNoYXJlZF9yZXNvdXJjZV8gaGVyZSAuLi4KK30KK2BgYAorCitOT1RFOiBUaG91Z2ggdGhlIGFi
b3ZlIGNvZGUgZGVjbGFyZXMgYFNldFVwVGVzdENhc2UoKWAgcHJvdGVjdGVkLCBpdCBtYXkKK3Nv
bWV0aW1lcyBiZSBuZWNlc3NhcnkgdG8gZGVjbGFyZSBpdCBwdWJsaWMsIHN1Y2ggYXMgd2hlbiB1
c2luZyBpdCB3aXRoCitgVEVTVF9QYC4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRv
d3MsIE1hYy4KKworIyMgR2xvYmFsIFNldC1VcCBhbmQgVGVhci1Eb3duCisKK0p1c3QgYXMgeW91
IGNhbiBkbyBzZXQtdXAgYW5kIHRlYXItZG93biBhdCB0aGUgdGVzdCBsZXZlbCBhbmQgdGhlIHRl
c3QgY2FzZQorbGV2ZWwsIHlvdSBjYW4gYWxzbyBkbyBpdCBhdCB0aGUgdGVzdCBwcm9ncmFtIGxl
dmVsLiBIZXJlJ3MgaG93LgorCitGaXJzdCwgeW91IHN1YmNsYXNzIHRoZSBgOjp0ZXN0aW5nOjpF
bnZpcm9ubWVudGAgY2xhc3MgdG8gZGVmaW5lIGEgdGVzdAorZW52aXJvbm1lbnQsIHdoaWNoIGtu
b3dzIGhvdyB0byBzZXQtdXAgYW5kIHRlYXItZG93bjoKKworYGBgYysrCitjbGFzcyBFbnZpcm9u
bWVudCB7CisgcHVibGljOgorICB2aXJ0dWFsIH5FbnZpcm9ubWVudCgpIHt9CisKKyAgLy8gT3Zl
cnJpZGUgdGhpcyB0byBkZWZpbmUgaG93IHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQuCisgIHZp
cnR1YWwgdm9pZCBTZXRVcCgpIHt9CisKKyAgLy8gT3ZlcnJpZGUgdGhpcyB0byBkZWZpbmUgaG93
IHRvIHRlYXIgZG93biB0aGUgZW52aXJvbm1lbnQuCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigp
IHt9Cit9OworYGBgCisKK1RoZW4sIHlvdSByZWdpc3RlciBhbiBpbnN0YW5jZSBvZiB5b3VyIGVu
dmlyb25tZW50IGNsYXNzIHdpdGggZ29vZ2xldGVzdCBieQorY2FsbGluZyB0aGUgYDo6dGVzdGlu
Zzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KClgIGZ1bmN0aW9uOgorCitgYGBjKysKK0Vudmly
b25tZW50KiBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoRW52aXJvbm1lbnQqIGVudik7CitgYGAK
KworTm93LCB3aGVuIGBSVU5fQUxMX1RFU1RTKClgIGlzIGNhbGxlZCwgaXQgZmlyc3QgY2FsbHMg
dGhlIGBTZXRVcCgpYCBtZXRob2Qgb2YKK3RoZSBlbnZpcm9ubWVudCBvYmplY3QsIHRoZW4gcnVu
cyB0aGUgdGVzdHMgaWYgdGhlcmUgd2FzIG5vIGZhdGFsIGZhaWx1cmVzLCBhbmQKK2ZpbmFsbHkg
Y2FsbHMgYFRlYXJEb3duKClgIG9mIHRoZSBlbnZpcm9ubWVudCBvYmplY3QuCisKK0l0J3MgT0sg
dG8gcmVnaXN0ZXIgbXVsdGlwbGUgZW52aXJvbm1lbnQgb2JqZWN0cy4gSW4gdGhpcyBjYXNlLCB0
aGVpciBgU2V0VXAoKWAKK3dpbGwgYmUgY2FsbGVkIGluIHRoZSBvcmRlciB0aGV5IGFyZSByZWdp
c3RlcmVkLCBhbmQgdGhlaXIgYFRlYXJEb3duKClgIHdpbGwgYmUKK2NhbGxlZCBpbiB0aGUgcmV2
ZXJzZSBvcmRlci4KKworTm90ZSB0aGF0IGdvb2dsZXRlc3QgdGFrZXMgb3duZXJzaGlwIG9mIHRo
ZSByZWdpc3RlcmVkIGVudmlyb25tZW50IG9iamVjdHMuCitUaGVyZWZvcmUgKipkbyBub3QgZGVs
ZXRlIHRoZW0qKiBieSB5b3Vyc2VsZi4KKworWW91IHNob3VsZCBjYWxsIGBBZGRHbG9iYWxUZXN0
RW52aXJvbm1lbnQoKWAgYmVmb3JlIGBSVU5fQUxMX1RFU1RTKClgIGlzIGNhbGxlZCwKK3Byb2Jh
Ymx5IGluIGBtYWluKClgLiBJZiB5b3UgdXNlIGBndGVzdF9tYWluYCwgeW91IG5lZWQgdG8gY2Fs
bCB0aGlzIGJlZm9yZQorYG1haW4oKWAgc3RhcnRzIGZvciBpdCB0byB0YWtlIGVmZmVjdC4gT25l
IHdheSB0byBkbyB0aGlzIGlzIHRvIGRlZmluZSBhIGdsb2JhbAordmFyaWFibGUgbGlrZSB0aGlz
OgorCitgYGBjKysKKzo6dGVzdGluZzo6RW52aXJvbm1lbnQqIGNvbnN0IGZvb19lbnYgPQorICAg
IDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBGb29FbnZpcm9ubWVudCk7
CitgYGAKKworSG93ZXZlciwgd2Ugc3Ryb25nbHkgcmVjb21tZW5kIHlvdSB0byB3cml0ZSB5b3Vy
IG93biBgbWFpbigpYCBhbmQgY2FsbAorYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCB0aGVy
ZSwgYXMgcmVseWluZyBvbiBpbml0aWFsaXphdGlvbiBvZiBnbG9iYWwKK3ZhcmlhYmxlcyBtYWtl
cyB0aGUgY29kZSBoYXJkZXIgdG8gcmVhZCBhbmQgbWF5IGNhdXNlIHByb2JsZW1zIHdoZW4geW91
IHJlZ2lzdGVyCittdWx0aXBsZSBlbnZpcm9ubWVudHMgZnJvbSBkaWZmZXJlbnQgdHJhbnNsYXRp
b24gdW5pdHMgYW5kIHRoZSBlbnZpcm9ubWVudHMgaGF2ZQorZGVwZW5kZW5jaWVzIGFtb25nIHRo
ZW0gKHJlbWVtYmVyIHRoYXQgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgZ3VhcmFudGVlIHRoZSBvcmRl
cgoraW4gd2hpY2ggZ2xvYmFsIHZhcmlhYmxlcyBmcm9tIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1
bml0cyBhcmUgaW5pdGlhbGl6ZWQpLgorCisjIyBWYWx1ZS1QYXJhbWV0ZXJpemVkIFRlc3RzCisK
KypWYWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzKiBhbGxvdyB5b3UgdG8gdGVzdCB5b3VyIGNvZGUg
d2l0aCBkaWZmZXJlbnQKK3BhcmFtZXRlcnMgd2l0aG91dCB3cml0aW5nIG11bHRpcGxlIGNvcGll
cyBvZiB0aGUgc2FtZSB0ZXN0LiBUaGlzIGlzIHVzZWZ1bCBpbiBhCitudW1iZXIgb2Ygc2l0dWF0
aW9ucywgZm9yIGV4YW1wbGU6CisKKyogICBZb3UgaGF2ZSBhIHBpZWNlIG9mIGNvZGUgd2hvc2Ug
YmVoYXZpb3IgaXMgYWZmZWN0ZWQgYnkgb25lIG9yIG1vcmUKKyAgICBjb21tYW5kLWxpbmUgZmxh
Z3MuIFlvdSB3YW50IHRvIG1ha2Ugc3VyZSB5b3VyIGNvZGUgcGVyZm9ybXMgY29ycmVjdGx5IGZv
cgorICAgIHZhcmlvdXMgdmFsdWVzIG9mIHRob3NlIGZsYWdzLgorKiAgIFlvdSB3YW50IHRvIHRl
c3QgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBvZiBhbiBPTyBpbnRlcmZhY2UuCisqICAgWW91
IHdhbnQgdG8gdGVzdCB5b3VyIGNvZGUgb3ZlciB2YXJpb3VzIGlucHV0cyAoYS5rLmEuIGRhdGEt
ZHJpdmVuIHRlc3RpbmcpLgorICAgIFRoaXMgZmVhdHVyZSBpcyBlYXN5IHRvIGFidXNlLCBzbyBw
bGVhc2UgZXhlcmNpc2UgeW91ciBnb29kIHNlbnNlIHdoZW4gZG9pbmcKKyAgICBpdCEKKworIyMj
IEhvdyB0byBXcml0ZSBWYWx1ZS1QYXJhbWV0ZXJpemVkIFRlc3RzCisKK1RvIHdyaXRlIHZhbHVl
LXBhcmFtZXRlcml6ZWQgdGVzdHMsIGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4dHVyZSBj
bGFzcy4gSXQKK211c3QgYmUgZGVyaXZlZCBmcm9tIGJvdGggYDo6dGVzdGluZzo6VGVzdGAgYW5k
CitgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD5gICh0aGUgbGF0dGVyIGlzIGEgcHVy
ZSBpbnRlcmZhY2UpLCB3aGVyZSBgVGAKK2lzIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZh
bHVlcy4gRm9yIGNvbnZlbmllbmNlLCB5b3UgY2FuIGp1c3QgZGVyaXZlIHRoZQorZml4dHVyZSBj
bGFzcyBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08VD5gLCB3aGljaCBpdHNlbGYgaXMg
ZGVyaXZlZCBmcm9tCitib3RoIGA6OnRlc3Rpbmc6OlRlc3RgIGFuZCBgOjp0ZXN0aW5nOjpXaXRo
UGFyYW1JbnRlcmZhY2U8VD5gLiBgVGAgY2FuIGJlIGFueQorY29weWFibGUgdHlwZS4gSWYgaXQn
cyBhIHJhdyBwb2ludGVyLCB5b3UgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUKK2xp
ZmVzcGFuIG9mIHRoZSBwb2ludGVkIHZhbHVlcy4KKworTk9URTogSWYgeW91ciB0ZXN0IGZpeHR1
cmUgZGVmaW5lcyBgU2V0VXBUZXN0Q2FzZSgpYCBvciBgVGVhckRvd25UZXN0Q2FzZSgpYAordGhl
eSBtdXN0IGJlIGRlY2xhcmVkICoqcHVibGljKiogcmF0aGVyIHRoYW4gKipwcm90ZWN0ZWQqKiBp
biBvcmRlciB0byB1c2UKK2BURVNUX1BgLgorCitgYGBjKysKK2NsYXNzIEZvb1Rlc3QgOgorICAg
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08Y29uc3QgY2hhcio+IHsKKyAgLy8gWW91
IGNhbiBpbXBsZW1lbnQgYWxsIHRoZSB1c3VhbCBmaXh0dXJlIGNsYXNzIG1lbWJlcnMgaGVyZS4K
KyAgLy8gVG8gYWNjZXNzIHRoZSB0ZXN0IHBhcmFtZXRlciwgY2FsbCBHZXRQYXJhbSgpIGZyb20g
Y2xhc3MKKyAgLy8gVGVzdFdpdGhQYXJhbTxUPi4KK307CisKKy8vIE9yLCB3aGVuIHlvdSB3YW50
IHRvIGFkZCBwYXJhbWV0ZXJzIHRvIGEgcHJlLWV4aXN0aW5nIGZpeHR1cmUgY2xhc3M6CitjbGFz
cyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICAuLi4KK307CitjbGFzcyBC
YXJUZXN0IDogcHVibGljIEJhc2VUZXN0LAorICAgICAgICAgICAgICAgIHB1YmxpYyA6OnRlc3Rp
bmc6OldpdGhQYXJhbUludGVyZmFjZTxjb25zdCBjaGFyKj4geworICAuLi4KK307CitgYGAKKwor
VGhlbiwgdXNlIHRoZSBgVEVTVF9QYCBtYWNybyB0byBkZWZpbmUgYXMgbWFueSB0ZXN0IHBhdHRl
cm5zIHVzaW5nIHRoaXMgZml4dHVyZQorYXMgeW91IHdhbnQuIFRoZSBgX1BgIHN1ZmZpeCBpcyBm
b3IgInBhcmFtZXRlcml6ZWQiIG9yICJwYXR0ZXJuIiwgd2hpY2hldmVyIHlvdQorcHJlZmVyIHRv
IHRoaW5rLgorCitgYGBjKysKK1RFU1RfUChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJbnNp
ZGUgYSB0ZXN0LCBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyIHdpdGggdGhlIEdldFBhcmFtKCkg
bWV0aG9kCisgIC8vIG9mIHRoZSBUZXN0V2l0aFBhcmFtPFQ+IGNsYXNzOgorICBFWFBFQ1RfVFJV
RShmb28uQmxhaChHZXRQYXJhbSgpKSk7CisgIC4uLgorfQorCitURVNUX1AoRm9vVGVzdCwgSGFz
QmxhaEJsYWgpIHsKKyAgLi4uCit9CitgYGAKKworRmluYWxseSwgeW91IGNhbiB1c2UgYElOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QYCB0byBpbnN0YW50aWF0ZSB0aGUgdGVzdCBjYXNlIHdpdGgKK2Fu
eSBzZXQgb2YgcGFyYW1ldGVycyB5b3Ugd2FudC4gZ29vZ2xldGVzdCBkZWZpbmVzIGEgbnVtYmVy
IG9mIGZ1bmN0aW9ucyBmb3IKK2dlbmVyYXRpbmcgdGVzdCBwYXJhbWV0ZXJzLiBUaGV5IHJldHVy
biB3aGF0IHdlIGNhbGwgKHN1cnByaXNlISkgKnBhcmFtZXRlcgorZ2VuZXJhdG9ycyouIEhlcmUg
aXMgYSBzdW1tYXJ5IG9mIHRoZW0sIHdoaWNoIGFyZSBhbGwgaW4gdGhlIGB0ZXN0aW5nYAorbmFt
ZXNwYWNlOgorCit8IFBhcmFtZXRlciBHZW5lcmF0b3IgICAgICAgICAgfCBCZWhhdmlvciAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAor
fCBgUmFuZ2UoYmVnaW4sIGVuZCBbLCBzdGVwXSlgIHwgWWllbGRzIHZhbHVlcyBge2JlZ2luLCBi
ZWdpbitzdGVwLCBiZWdpbitzdGVwK3N0ZXAsIC4uLn1gLiBUaGUgdmFsdWVzIGRvIG5vdCBpbmNs
dWRlIGBlbmRgLiBgc3RlcGAgZGVmYXVsdHMgdG8gMS4gICAgICB8Cit8IGBWYWx1ZXModjEsIHYy
LCAuLi4sIHZOKWAgICAgfCBZaWVsZHMgdmFsdWVzIGB7djEsIHYyLCAuLi4sIHZOfWAuICAgICAg
ICAgIHwKK3wgYFZhbHVlc0luKGNvbnRhaW5lcilgIGFuZCBgVmFsdWVzSW4oYmVnaW4sZW5kKWAg
ICB8IFlpZWxkcyB2YWx1ZXMgZnJvbSBhIEMtc3R5bGUgYXJyYXksIGFuIFNUTC1zdHlsZSBjb250
YWluZXIsIG9yIGFuIGl0ZXJhdG9yIHJhbmdlICBgW2JlZ2luLCBlbmQpYC4gfAorfCBgQm9vbCgp
YCAgICAgICAgICAgICAgICAgICAgIHwgWWllbGRzIHNlcXVlbmNlIGB7ZmFsc2UsIHRydWV9YC4g
ICAgICAgICAgICB8Cit8IGBDb21iaW5lKGcxLCBnMiwgLi4uLCBnTilgICAgfCBZaWVsZHMgYWxs
IGNvbWJpbmF0aW9ucyAoQ2FydGVzaWFuIHByb2R1Y3QpIGFzIHN0ZFw6XDp0dXBsZXMgb2YgdGhl
IHZhbHVlcyBnZW5lcmF0ZWQgYnkgdGhlIGBOYCBnZW5lcmF0b3JzLiAgICAgICAgICAgIHwKKwor
Rm9yIG1vcmUgZGV0YWlscywgc2VlIHRoZSBjb21tZW50cyBhdCB0aGUgZGVmaW5pdGlvbnMgb2Yg
dGhlc2UgZnVuY3Rpb25zLgorCitUaGUgZm9sbG93aW5nIHN0YXRlbWVudCB3aWxsIGluc3RhbnRp
YXRlIHRlc3RzIGZyb20gdGhlIGBGb29UZXN0YCB0ZXN0IGNhc2UgZWFjaAord2l0aCBwYXJhbWV0
ZXIgdmFsdWVzIGAibWVlbnkiYCwgYCJtaW55ImAsIGFuZCBgIm1vZSJgLgorCitgYGBjKysKK0lO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEluc3RhbnRpYXRpb25OYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgRm9vVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFs
dWVzKCJtZWVueSIsICJtaW55IiwgIm1vZSIpKTsKK2BgYAorCitOT1RFOiBUaGUgY29kZSBhYm92
ZSBtdXN0IGJlIHBsYWNlZCBhdCBnbG9iYWwgb3IgbmFtZXNwYWNlIHNjb3BlLCBub3QgYXQKK2Z1
bmN0aW9uIHNjb3BlLgorCitOT1RFOiBEb24ndCBmb3JnZXQgdGhpcyBzdGVwISBJZiB5b3UgZG8g
eW91ciB0ZXN0IHdpbGwgc2lsZW50bHkgcGFzcywgYnV0IG5vbmUKK29mIGl0cyBjYXNlcyB3aWxs
IGV2ZXIgcnVuIQorCitUbyBkaXN0aW5ndWlzaCBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIHRoZSBw
YXR0ZXJuICh5ZXMsIHlvdSBjYW4gaW5zdGFudGlhdGUgaXQKK21vcmUgdGhhbiBvbmNlKSwgdGhl
IGZpcnN0IGFyZ3VtZW50IHRvIGBJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgaXMgYSBwcmVmaXgK
K3RoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgYWN0dWFsIHRlc3QgY2FzZSBuYW1lLiBSZW1lbWJl
ciB0byBwaWNrIHVuaXF1ZQorcHJlZml4ZXMgZm9yIGRpZmZlcmVudCBpbnN0YW50aWF0aW9ucy4g
VGhlIHRlc3RzIGZyb20gdGhlIGluc3RhbnRpYXRpb24gYWJvdmUKK3dpbGwgaGF2ZSB0aGVzZSBu
YW1lczoKKworKiAgIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzBgIGZvciBg
Im1lZW55ImAKKyogICBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8xYCBmb3Ig
YCJtaW55ImAKKyogICBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8yYCBmb3Ig
YCJtb2UiYAorKiAgIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzBgIGZv
ciBgIm1lZW55ImAKKyogICBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8x
YCBmb3IgYCJtaW55ImAKKyogICBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxh
aC8yYCBmb3IgYCJtb2UiYAorCitZb3UgY2FuIHVzZSB0aGVzZSBuYW1lcyBpbiBbYC0tZ3Rlc3Rf
ZmlsdGVyYF0oI3J1bm5pbmctYS1zdWJzZXQtb2YtdGhlLXRlc3RzKS4KKworVGhpcyBzdGF0ZW1l
bnQgd2lsbCBpbnN0YW50aWF0ZSBhbGwgdGVzdHMgZnJvbSBgRm9vVGVzdGAgYWdhaW4sIGVhY2gg
d2l0aAorcGFyYW1ldGVyIHZhbHVlcyBgImNhdCJgIGFuZCBgImRvZyJgOgorCitgYGBjKysKK2Nv
bnN0IGNoYXIqIHBldHNbXSA9IHsiY2F0IiwgImRvZyJ9OworSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoQW5vdGhlckluc3RhbnRpYXRpb25OYW1lLCBGb29UZXN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXNJbihwZXRzKSk7CitgYGAKKworVGhlIHRlc3RzIGZyb20g
dGhlIGluc3RhbnRpYXRpb24gYWJvdmUgd2lsbCBoYXZlIHRoZXNlIG5hbWVzOgorCisqICAgYEFu
b3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzBgIGZvciBgImNhdCJgCisq
ICAgYEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzFgIGZvciBgImRv
ZyJgCisqICAgYEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzBg
IGZvciBgImNhdCJgCisqICAgYEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0Js
YWhCbGFoLzFgIGZvciBgImRvZyJgCisKK1BsZWFzZSBub3RlIHRoYXQgYElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QYCB3aWxsIGluc3RhbnRpYXRlICphbGwqIHRlc3RzIGluIHRoZQorZ2l2ZW4gdGVz
dCBjYXNlLCB3aGV0aGVyIHRoZWlyIGRlZmluaXRpb25zIGNvbWUgYmVmb3JlIG9yICphZnRlciog
dGhlCitgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIHN0YXRlbWVudC4KKworWW91IGNhbiBzZWUg
c2FtcGxlN191bml0dGVzdC5jYyBhbmQgc2FtcGxlOF91bml0dGVzdC5jYyBmb3IgbW9yZSBleGFt
cGxlcy4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMg
OC4wIG9yIGFib3ZlKSwgTWFjCisKKyMjIyBDcmVhdGluZyBWYWx1ZS1QYXJhbWV0ZXJpemVkIEFi
c3RyYWN0IFRlc3RzCisKK0luIHRoZSBhYm92ZSwgd2UgZGVmaW5lIGFuZCBpbnN0YW50aWF0ZSBg
Rm9vVGVzdGAgaW4gdGhlICpzYW1lKiBzb3VyY2UgZmlsZS4KK1NvbWV0aW1lcyB5b3UgbWF5IHdh
bnQgdG8gZGVmaW5lIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgaW4gYSBsaWJyYXJ5IGFuZCBs
ZXQKK290aGVyIHBlb3BsZSBpbnN0YW50aWF0ZSB0aGVtIGxhdGVyLiBUaGlzIHBhdHRlcm4gaXMg
a25vd24gYXMgKmFic3RyYWN0IHRlc3RzKi4KK0FzIGFuIGV4YW1wbGUgb2YgaXRzIGFwcGxpY2F0
aW9uLCB3aGVuIHlvdSBhcmUgZGVzaWduaW5nIGFuIGludGVyZmFjZSB5b3UgY2FuCit3cml0ZSBh
IHN0YW5kYXJkIHN1aXRlIG9mIGFic3RyYWN0IHRlc3RzIChwZXJoYXBzIHVzaW5nIGEgZmFjdG9y
eSBmdW5jdGlvbiBhcwordGhlIHRlc3QgcGFyYW1ldGVyKSB0aGF0IGFsbCBpbXBsZW1lbnRhdGlv
bnMgb2YgdGhlIGludGVyZmFjZSBhcmUgZXhwZWN0ZWQgdG8KK3Bhc3MuIFdoZW4gc29tZW9uZSBp
bXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UsIHRoZXkgY2FuIGluc3RhbnRpYXRlIHlvdXIgc3VpdGUg
dG8KK2dldCBhbGwgdGhlIGludGVyZmFjZS1jb25mb3JtYW5jZSB0ZXN0cyBmb3IgZnJlZS4KKwor
VG8gZGVmaW5lIGFic3RyYWN0IHRlc3RzLCB5b3Ugc2hvdWxkIG9yZ2FuaXplIHlvdXIgY29kZSBs
aWtlIHRoaXM6CisKKzEuICBQdXQgdGhlIGRlZmluaXRpb24gb2YgdGhlIHBhcmFtZXRlcml6ZWQg
dGVzdCBmaXh0dXJlIGNsYXNzIChlLmcuIGBGb29UZXN0YCkKKyAgICBpbiBhIGhlYWRlciBmaWxl
LCBzYXkgYGZvb19wYXJhbV90ZXN0LmhgLiBUaGluayBvZiB0aGlzIGFzICpkZWNsYXJpbmcqIHlv
dXIKKyAgICBhYnN0cmFjdCB0ZXN0cy4KKzEuICBQdXQgdGhlIGBURVNUX1BgIGRlZmluaXRpb25z
IGluIGBmb29fcGFyYW1fdGVzdC5jY2AsIHdoaWNoIGluY2x1ZGVzCisgICAgYGZvb19wYXJhbV90
ZXN0LmhgLiBUaGluayBvZiB0aGlzIGFzICppbXBsZW1lbnRpbmcqIHlvdXIgYWJzdHJhY3QgdGVz
dHMuCisKK09uY2UgdGhleSBhcmUgZGVmaW5lZCwgeW91IGNhbiBpbnN0YW50aWF0ZSB0aGVtIGJ5
IGluY2x1ZGluZyBgZm9vX3BhcmFtX3Rlc3QuaGAsCitpbnZva2luZyBgSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1AoKWAsIGFuZCBkZXBlbmRpbmcgb24gdGhlIGxpYnJhcnkgdGFyZ2V0IHRoYXQKK2Nv
bnRhaW5zIGBmb29fcGFyYW1fdGVzdC5jY2AuIFlvdSBjYW4gaW5zdGFudGlhdGUgdGhlIHNhbWUg
YWJzdHJhY3QgdGVzdCBjYXNlCittdWx0aXBsZSB0aW1lcywgcG9zc2libHkgaW4gZGlmZmVyZW50
IHNvdXJjZSBmaWxlcy4KKworIyMjIFNwZWNpZnlpbmcgTmFtZXMgZm9yIFZhbHVlLVBhcmFtZXRl
cml6ZWQgVGVzdCBQYXJhbWV0ZXJzCisKK1RoZSBvcHRpb25hbCBsYXN0IGFyZ3VtZW50IHRvIGBJ
TlNUQU5USUFURV9URVNUX0NBU0VfUCgpYCBhbGxvd3MgdGhlIHVzZXIgdG8KK3NwZWNpZnkgYSBm
dW5jdGlvbiBvciBmdW5jdG9yIHRoYXQgZ2VuZXJhdGVzIGN1c3RvbSB0ZXN0IG5hbWUgc3VmZml4
ZXMgYmFzZWQgb24KK3RoZSB0ZXN0IHBhcmFtZXRlcnMuIFRoZSBmdW5jdGlvbiBzaG91bGQgYWNj
ZXB0IG9uZSBhcmd1bWVudCBvZiB0eXBlCitgdGVzdGluZzo6VGVzdFBhcmFtSW5mbzxjbGFzcyBQ
YXJhbVR5cGU+YCwgYW5kIHJldHVybiBgc3RkOjpzdHJpbmdgLgorCitgdGVzdGluZzo6UHJpbnRU
b1N0cmluZ1BhcmFtTmFtZWAgaXMgYSBidWlsdGluIHRlc3Qgc3VmZml4IGdlbmVyYXRvciB0aGF0
CityZXR1cm5zIHRoZSB2YWx1ZSBvZiBgdGVzdGluZzo6UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgp
KWAuIEl0IGRvZXMgbm90IHdvcmsgZm9yCitgc3RkOjpzdHJpbmdgIG9yIEMgc3RyaW5ncy4KKwor
Tk9URTogdGVzdCBuYW1lcyBtdXN0IGJlIG5vbi1lbXB0eSwgdW5pcXVlLCBhbmQgbWF5IG9ubHkg
Y29udGFpbiBBU0NJSQorYWxwaGFudW1lcmljIGNoYXJhY3RlcnMuIEluIHBhcnRpY3VsYXIsIHRo
ZXkgW3Nob3VsZCBub3QgY29udGFpbgordW5kZXJzY29yZXNdKGh0dHBzOi8vZzNkb2MuY29ycC5n
b29nbGUuY29tL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9nM2RvYy9mYXEubWQj
bm8tdW5kZXJzY29yZXMpLgorCitgYGBjKysKK2NsYXNzIE15VGVzdENhc2UgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHt9OworCitURVNUX1AoTXlUZXN0Q2FzZSwgTXlUZXN0
KQoreworICBzdGQ6OmNvdXQgPDwgIkV4YW1wbGUgVGVzdCBQYXJhbTogIiA8PCBHZXRQYXJhbSgp
IDw8IHN0ZDo6ZW5kbDsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoTXlHcm91cCwgTXlU
ZXN0Q2FzZSwgdGVzdGluZzo6UmFuZ2UoMCwgMTApLAorICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgpKTsKK2BgYAorCisjIyBUeXBlZCBUZXN0
czwvaWQ+CisKK1N1cHBvc2UgeW91IGhhdmUgbXVsdGlwbGUgaW1wbGVtZW50YXRpb25zIG9mIHRo
ZSBzYW1lIGludGVyZmFjZSBhbmQgd2FudCB0byBtYWtlCitzdXJlIHRoYXQgYWxsIG9mIHRoZW0g
c2F0aXNmeSBzb21lIGNvbW1vbiByZXF1aXJlbWVudHMuIE9yLCB5b3UgbWF5IGhhdmUgZGVmaW5l
ZAorc2V2ZXJhbCB0eXBlcyB0aGF0IGFyZSBzdXBwb3NlZCB0byBjb25mb3JtIHRvIHRoZSBzYW1l
ICJjb25jZXB0IiBhbmQgeW91IHdhbnQgdG8KK3ZlcmlmeSBpdC4gSW4gYm90aCBjYXNlcywgeW91
IHdhbnQgdGhlIHNhbWUgdGVzdCBsb2dpYyByZXBlYXRlZCBmb3IgZGlmZmVyZW50Cit0eXBlcy4K
KworV2hpbGUgeW91IGNhbiB3cml0ZSBvbmUgYFRFU1RgIG9yIGBURVNUX0ZgIGZvciBlYWNoIHR5
cGUgeW91IHdhbnQgdG8gdGVzdCAoYW5kCit5b3UgbWF5IGV2ZW4gZmFjdG9yIHRoZSB0ZXN0IGxv
Z2ljIGludG8gYSBmdW5jdGlvbiB0ZW1wbGF0ZSB0aGF0IHlvdSBpbnZva2UgZnJvbQordGhlIGBU
RVNUYCksIGl0J3MgdGVkaW91cyBhbmQgZG9lc24ndCBzY2FsZTogaWYgeW91IHdhbnQgYG1gIHRl
c3RzIG92ZXIgYG5gCit0eXBlcywgeW91J2xsIGVuZCB1cCB3cml0aW5nIGBtKm5gIGBURVNUYHMu
CisKKypUeXBlZCB0ZXN0cyogYWxsb3cgeW91IHRvIHJlcGVhdCB0aGUgc2FtZSB0ZXN0IGxvZ2lj
IG92ZXIgYSBsaXN0IG9mIHR5cGVzLiBZb3UKK29ubHkgbmVlZCB0byB3cml0ZSB0aGUgdGVzdCBs
b2dpYyBvbmNlLCBhbHRob3VnaCB5b3UgbXVzdCBrbm93IHRoZSB0eXBlIGxpc3QKK3doZW4gd3Jp
dGluZyB0eXBlZCB0ZXN0cy4gSGVyZSdzIGhvdyB5b3UgZG8gaXQ6CisKK0ZpcnN0LCBkZWZpbmUg
YSBmaXh0dXJlIGNsYXNzIHRlbXBsYXRlLiBJdCBzaG91bGQgYmUgcGFyYW1ldGVyaXplZCBieSBh
IHR5cGUuCitSZW1lbWJlciB0byBkZXJpdmUgaXQgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0YDoKKwor
YGBgYysrCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpUZXN0IHsKKyBwdWJsaWM6CisgIC4uLgorICB0eXBlZGVmIHN0ZDo6bGlzdDxUPiBM
aXN0OworICBzdGF0aWMgVCBzaGFyZWRfOworICBUIHZhbHVlXzsKK307CitgYGAKKworTmV4dCwg
YXNzb2NpYXRlIGEgbGlzdCBvZiB0eXBlcyB3aXRoIHRoZSB0ZXN0IGNhc2UsIHdoaWNoIHdpbGwg
YmUgcmVwZWF0ZWQgZm9yCitlYWNoIHR5cGUgaW4gdGhlIGxpc3Q6CisKK2BgYGMrKwordXNpbmcg
TXlUeXBlcyA9IDo6dGVzdGluZzo6VHlwZXM8Y2hhciwgaW50LCB1bnNpZ25lZCBpbnQ+OworVFlQ
RURfVEVTVF9DQVNFKEZvb1Rlc3QsIE15VHlwZXMpOworYGBgCisKK1RoZSB0eXBlIGFsaWFzIChg
dXNpbmdgIG9yIGB0eXBlZGVmYCkgaXMgbmVjZXNzYXJ5IGZvciB0aGUgYFRZUEVEX1RFU1RfQ0FT
RWAKK21hY3JvIHRvIHBhcnNlIGNvcnJlY3RseS4gT3RoZXJ3aXNlIHRoZSBjb21waWxlciB3aWxs
IHRoaW5rIHRoYXQgZWFjaCBjb21tYSBpbgordGhlIHR5cGUgbGlzdCBpbnRyb2R1Y2VzIGEgbmV3
IG1hY3JvIGFyZ3VtZW50LgorCitUaGVuLCB1c2UgYFRZUEVEX1RFU1QoKWAgaW5zdGVhZCBvZiBg
VEVTVF9GKClgIHRvIGRlZmluZSBhIHR5cGVkIHRlc3QgZm9yIHRoaXMKK3Rlc3QgY2FzZS4gWW91
IGNhbiByZXBlYXQgdGhpcyBhcyBtYW55IHRpbWVzIGFzIHlvdSB3YW50OgorCitgYGBjKysKK1RZ
UEVEX1RFU1QoRm9vVGVzdCwgRG9lc0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIg
dG8gdGhlIHNwZWNpYWwgbmFtZSBUeXBlUGFyYW0gdG8gZ2V0IHRoZSB0eXBlCisgIC8vIHBhcmFt
ZXRlci4gIFNpbmNlIHdlIGFyZSBpbnNpZGUgYSBkZXJpdmVkIGNsYXNzIHRlbXBsYXRlLCBDKysg
cmVxdWlyZXMKKyAgLy8gdXMgdG8gdmlzaXQgdGhlIG1lbWJlcnMgb2YgRm9vVGVzdCB2aWEgJ3Ro
aXMnLgorICBUeXBlUGFyYW0gbiA9IHRoaXMtPnZhbHVlXzsKKworICAvLyBUbyB2aXNpdCBzdGF0
aWMgbWVtYmVycyBvZiB0aGUgZml4dHVyZSwgYWRkIHRoZSAnVGVzdEZpeHR1cmU6OicKKyAgLy8g
cHJlZml4LgorICBuICs9IFRlc3RGaXh0dXJlOjpzaGFyZWRfOworCisgIC8vIFRvIHJlZmVyIHRv
IHR5cGVkZWZzIGluIHRoZSBmaXh0dXJlLCBhZGQgdGhlICd0eXBlbmFtZSBUZXN0Rml4dHVyZTo6
JworICAvLyBwcmVmaXguICBUaGUgJ3R5cGVuYW1lJyBpcyByZXF1aXJlZCB0byBzYXRpc2Z5IHRo
ZSBjb21waWxlci4KKyAgdHlwZW5hbWUgVGVzdEZpeHR1cmU6Okxpc3QgdmFsdWVzOworCisgIHZh
bHVlcy5wdXNoX2JhY2sobik7CisgIC4uLgorfQorCitUWVBFRF9URVNUKEZvb1Rlc3QsIEhhc1By
b3BlcnR5QSkgeyAuLi4gfQorYGBgCisKK1lvdSBjYW4gc2VlIHNhbXBsZTZfdW5pdHRlc3QuY2MK
KworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9y
IGFib3ZlKSwgTWFjCisKKyMjIFR5cGUtUGFyYW1ldGVyaXplZCBUZXN0cworCisqVHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3RzKiBhcmUgbGlrZSB0eXBlZCB0ZXN0cywgZXhjZXB0IHRoYXQgdGhleSBk
b24ndCByZXF1aXJlCit5b3UgdG8ga25vdyB0aGUgbGlzdCBvZiB0eXBlcyBhaGVhZCBvZiB0aW1l
LiBJbnN0ZWFkLCB5b3UgY2FuIGRlZmluZSB0aGUgdGVzdAorbG9naWMgZmlyc3QgYW5kIGluc3Rh
bnRpYXRlIGl0IHdpdGggZGlmZmVyZW50IHR5cGUgbGlzdHMgbGF0ZXIuIFlvdSBjYW4gZXZlbgor
aW5zdGFudGlhdGUgaXQgbW9yZSB0aGFuIG9uY2UgaW4gdGhlIHNhbWUgcHJvZ3JhbS4KKworSWYg
eW91IGFyZSBkZXNpZ25pbmcgYW4gaW50ZXJmYWNlIG9yIGNvbmNlcHQsIHlvdSBjYW4gZGVmaW5l
IGEgc3VpdGUgb2YKK3R5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyB0byB2ZXJpZnkgcHJvcGVydGll
cyB0aGF0IGFueSB2YWxpZCBpbXBsZW1lbnRhdGlvbiBvZgordGhlIGludGVyZmFjZS9jb25jZXB0
IHNob3VsZCBoYXZlLiBUaGVuLCB0aGUgYXV0aG9yIG9mIGVhY2ggaW1wbGVtZW50YXRpb24gY2Fu
CitqdXN0IGluc3RhbnRpYXRlIHRoZSB0ZXN0IHN1aXRlIHdpdGggdGhlaXIgdHlwZSB0byB2ZXJp
ZnkgdGhhdCBpdCBjb25mb3JtcyB0bwordGhlIHJlcXVpcmVtZW50cywgd2l0aG91dCBoYXZpbmcg
dG8gd3JpdGUgc2ltaWxhciB0ZXN0cyByZXBlYXRlZGx5LiBIZXJlJ3MgYW4KK2V4YW1wbGU6CisK
K0ZpcnN0LCBkZWZpbmUgYSBmaXh0dXJlIGNsYXNzIHRlbXBsYXRlLCBhcyB3ZSBkaWQgd2l0aCB0
eXBlZCB0ZXN0czoKKworYGBgYysrCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEZvb1Rl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyAgLi4uCit9OworYGBgCisKK05leHQsIGRl
Y2xhcmUgdGhhdCB5b3Ugd2lsbCBkZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNl
OgorCitgYGBjKysKK1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QpOworYGBgCisKK1RoZW4sIHVz
ZSBgVFlQRURfVEVTVF9QKClgIHRvIGRlZmluZSBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LiBZ
b3UgY2FuIHJlcGVhdAordGhpcyBhcyBtYW55IHRpbWVzIGFzIHlvdSB3YW50OgorCitgYGBjKysK
K1RZUEVEX1RFU1RfUChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJbnNpZGUgYSB0ZXN0LCBy
ZWZlciB0byBUeXBlUGFyYW0gdG8gZ2V0IHRoZSB0eXBlIHBhcmFtZXRlci4KKyAgVHlwZVBhcmFt
IG4gPSAwOworICAuLi4KK30KKworVFlQRURfVEVTVF9QKEZvb1Rlc3QsIEhhc1Byb3BlcnR5QSkg
eyAuLi4gfQorYGBgCisKK05vdyB0aGUgdHJpY2t5IHBhcnQ6IHlvdSBuZWVkIHRvIHJlZ2lzdGVy
IGFsbCB0ZXN0IHBhdHRlcm5zIHVzaW5nIHRoZQorYFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9Q
YCBtYWNybyBiZWZvcmUgeW91IGNhbiBpbnN0YW50aWF0ZSB0aGVtLiBUaGUgZmlyc3QKK2FyZ3Vt
ZW50IG9mIHRoZSBtYWNybyBpcyB0aGUgdGVzdCBjYXNlIG5hbWU7IHRoZSByZXN0IGFyZSB0aGUg
bmFtZXMgb2YgdGhlIHRlc3RzCitpbiB0aGlzIHRlc3QgY2FzZToKKworYGBgYysrCitSRUdJU1RF
Ul9UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
RG9lc0JsYWgsIEhhc1Byb3BlcnR5QSk7CitgYGAKKworRmluYWxseSwgeW91IGFyZSBmcmVlIHRv
IGluc3RhbnRpYXRlIHRoZSBwYXR0ZXJuIHdpdGggdGhlIHR5cGVzIHlvdSB3YW50LiBJZiB5b3UK
K3B1dCB0aGUgYWJvdmUgY29kZSBpbiBhIGhlYWRlciBmaWxlLCB5b3UgY2FuIGAjaW5jbHVkZWAg
aXQgaW4gbXVsdGlwbGUgQysrCitzb3VyY2UgZmlsZXMgYW5kIGluc3RhbnRpYXRlIGl0IG11bHRp
cGxlIHRpbWVzLgorCitgYGBjKysKK3R5cGVkZWYgOjp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQs
IHVuc2lnbmVkIGludD4gTXlUeXBlczsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15
LCBGb29UZXN0LCBNeVR5cGVzKTsKK2BgYAorCitUbyBkaXN0aW5ndWlzaCBkaWZmZXJlbnQgaW5z
dGFuY2VzIG9mIHRoZSBwYXR0ZXJuLCB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlCitgSU5TVEFO
VElBVEVfVFlQRURfVEVTVF9DQVNFX1BgIG1hY3JvIGlzIGEgcHJlZml4IHRoYXQgd2lsbCBiZSBh
ZGRlZCB0byB0aGUKK2FjdHVhbCB0ZXN0IGNhc2UgbmFtZS4gUmVtZW1iZXIgdG8gcGljayB1bmlx
dWUgcHJlZml4ZXMgZm9yIGRpZmZlcmVudCBpbnN0YW5jZXMuCisKK0luIHRoZSBzcGVjaWFsIGNh
c2Ugd2hlcmUgdGhlIHR5cGUgbGlzdCBjb250YWlucyBvbmx5IG9uZSB0eXBlLCB5b3UgY2FuIHdy
aXRlCit0aGF0IHR5cGUgZGlyZWN0bHkgd2l0aG91dCBgOjp0ZXN0aW5nOjpUeXBlczwuLi4+YCwg
bGlrZSB0aGlzOgorCitgYGBjKysKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBG
b29UZXN0LCBpbnQpOworYGBgCisKK1lvdSBjYW4gc2VlIGBzYW1wbGU2X3VuaXR0ZXN0LmNjYCBm
b3IgYSBjb21wbGV0ZSBleGFtcGxlLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93
cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBNYWMKKworIyMgVGVzdGluZyBQcml2YXRl
IENvZGUKKworSWYgeW91IGNoYW5nZSB5b3VyIHNvZnR3YXJlJ3MgaW50ZXJuYWwgaW1wbGVtZW50
YXRpb24sIHlvdXIgdGVzdHMgc2hvdWxkIG5vdAorYnJlYWsgYXMgbG9uZyBhcyB0aGUgY2hhbmdl
IGlzIG5vdCBvYnNlcnZhYmxlIGJ5IHVzZXJzLiBUaGVyZWZvcmUsICoqcGVyIHRoZQorYmxhY2st
Ym94IHRlc3RpbmcgcHJpbmNpcGxlLCBtb3N0IG9mIHRoZSB0aW1lIHlvdSBzaG91bGQgdGVzdCB5
b3VyIGNvZGUgdGhyb3VnaAoraXRzIHB1YmxpYyBpbnRlcmZhY2VzLioqCisKKyoqSWYgeW91IHN0
aWxsIGZpbmQgeW91cnNlbGYgbmVlZGluZyB0byB0ZXN0IGludGVybmFsIGltcGxlbWVudGF0aW9u
IGNvZGUsCitjb25zaWRlciBpZiB0aGVyZSdzIGEgYmV0dGVyIGRlc2lnbi4qKiBUaGUgZGVzaXJl
IHRvIHRlc3QgaW50ZXJuYWwKK2ltcGxlbWVudGF0aW9uIGlzIG9mdGVuIGEgc2lnbiB0aGF0IHRo
ZSBjbGFzcyBpcyBkb2luZyB0b28gbXVjaC4gQ29uc2lkZXIKK2V4dHJhY3RpbmcgYW4gaW1wbGVt
ZW50YXRpb24gY2xhc3MsIGFuZCB0ZXN0aW5nIGl0LiBUaGVuIHVzZSB0aGF0IGltcGxlbWVudGF0
aW9uCitjbGFzcyBpbiB0aGUgb3JpZ2luYWwgY2xhc3MuCisKK0lmIHlvdSBhYnNvbHV0ZWx5IGhh
dmUgdG8gdGVzdCBub24tcHVibGljIGludGVyZmFjZSBjb2RlIHRob3VnaCwgeW91IGNhbi4gVGhl
cmUKK2FyZSB0d28gY2FzZXMgdG8gY29uc2lkZXI6CisKKyogICBTdGF0aWMgZnVuY3Rpb25zICgg
Km5vdCogdGhlIHNhbWUgYXMgc3RhdGljIG1lbWJlciBmdW5jdGlvbnMhKSBvciB1bm5hbWVkCisg
ICAgbmFtZXNwYWNlcywgYW5kCisqICAgUHJpdmF0ZSBvciBwcm90ZWN0ZWQgY2xhc3MgbWVtYmVy
cworCitUbyB0ZXN0IHRoZW0sIHdlIHVzZSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgdGVjaG5pcXVl
czoKKworKiAgIEJvdGggc3RhdGljIGZ1bmN0aW9ucyBhbmQgZGVmaW5pdGlvbnMvZGVjbGFyYXRp
b25zIGluIGFuIHVubmFtZWQgbmFtZXNwYWNlCisgICAgYXJlIG9ubHkgdmlzaWJsZSB3aXRoaW4g
dGhlIHNhbWUgdHJhbnNsYXRpb24gdW5pdC4gVG8gdGVzdCB0aGVtLCB5b3UgY2FuCisgICAgYCNp
bmNsdWRlYCB0aGUgZW50aXJlIGAuY2NgIGZpbGUgYmVpbmcgdGVzdGVkIGluIHlvdXIgYCpfdGVz
dC5jY2AgZmlsZS4KKyAgICAoaW5jbHVkaW5nIGAuY2NgIGZpbGVzIGlzIG5vdCBhIGdvb2Qgd2F5
IHRvIHJldXNlIGNvZGUgLSB5b3Ugc2hvdWxkIG5vdCBkbworICAgIHRoaXMgaW4gcHJvZHVjdGlv
biBjb2RlISkKKworICAgIEhvd2V2ZXIsIGEgYmV0dGVyIGFwcHJvYWNoIGlzIHRvIG1vdmUgdGhl
IHByaXZhdGUgY29kZSBpbnRvIHRoZQorICAgIGBmb286OmludGVybmFsYCBuYW1lc3BhY2UsIHdo
ZXJlIGBmb29gIGlzIHRoZSBuYW1lc3BhY2UgeW91ciBwcm9qZWN0CisgICAgbm9ybWFsbHkgdXNl
cywgYW5kIHB1dCB0aGUgcHJpdmF0ZSBkZWNsYXJhdGlvbnMgaW4gYSBgKi1pbnRlcm5hbC5oYCBm
aWxlLgorICAgIFlvdXIgcHJvZHVjdGlvbiBgLmNjYCBmaWxlcyBhbmQgeW91ciB0ZXN0cyBhcmUg
YWxsb3dlZCB0byBpbmNsdWRlIHRoaXMKKyAgICBpbnRlcm5hbCBoZWFkZXIsIGJ1dCB5b3VyIGNs
aWVudHMgYXJlIG5vdC4gVGhpcyB3YXksIHlvdSBjYW4gZnVsbHkgdGVzdCB5b3VyCisgICAgaW50
ZXJuYWwgaW1wbGVtZW50YXRpb24gd2l0aG91dCBsZWFraW5nIGl0IHRvIHlvdXIgY2xpZW50cy4K
KworKiAgIFByaXZhdGUgY2xhc3MgbWVtYmVycyBhcmUgb25seSBhY2Nlc3NpYmxlIGZyb20gd2l0
aGluIHRoZSBjbGFzcyBvciBieQorICAgIGZyaWVuZHMuIFRvIGFjY2VzcyBhIGNsYXNzJyBwcml2
YXRlIG1lbWJlcnMsIHlvdSBjYW4gZGVjbGFyZSB5b3VyIHRlc3QKKyAgICBmaXh0dXJlIGFzIGEg
ZnJpZW5kIHRvIHRoZSBjbGFzcyBhbmQgZGVmaW5lIGFjY2Vzc29ycyBpbiB5b3VyIGZpeHR1cmUu
IFRlc3RzCisgICAgdXNpbmcgdGhlIGZpeHR1cmUgY2FuIHRoZW4gYWNjZXNzIHRoZSBwcml2YXRl
IG1lbWJlcnMgb2YgeW91ciBwcm9kdWN0aW9uCisgICAgY2xhc3MgdmlhIHRoZSBhY2Nlc3NvcnMg
aW4gdGhlIGZpeHR1cmUuIE5vdGUgdGhhdCBldmVuIHRob3VnaCB5b3VyIGZpeHR1cmUKKyAgICBp
cyBhIGZyaWVuZCB0byB5b3VyIHByb2R1Y3Rpb24gY2xhc3MsIHlvdXIgdGVzdHMgYXJlIG5vdCBh
dXRvbWF0aWNhbGx5CisgICAgZnJpZW5kcyB0byBpdCwgYXMgdGhleSBhcmUgdGVjaG5pY2FsbHkg
ZGVmaW5lZCBpbiBzdWItY2xhc3NlcyBvZiB0aGUKKyAgICBmaXh0dXJlLgorCisgICAgQW5vdGhl
ciB3YXkgdG8gdGVzdCBwcml2YXRlIG1lbWJlcnMgaXMgdG8gcmVmYWN0b3IgdGhlbSBpbnRvIGFu
CisgICAgaW1wbGVtZW50YXRpb24gY2xhc3MsIHdoaWNoIGlzIHRoZW4gZGVjbGFyZWQgaW4gYSBg
Ki1pbnRlcm5hbC5oYCBmaWxlLiBZb3VyCisgICAgY2xpZW50cyBhcmVuJ3QgYWxsb3dlZCB0byBp
bmNsdWRlIHRoaXMgaGVhZGVyIGJ1dCB5b3VyIHRlc3RzIGNhbi4gU3VjaCBpcworICAgIGNhbGxl
ZCB0aGUKKyAgICBbUGltcGxdKGh0dHBzOi8vd3d3LmdhbWVkZXYubmV0L2FydGljbGVzL3Byb2dy
YW1taW5nL2dlbmVyYWwtYW5kLWdhbWVwbGF5LXByb2dyYW1taW5nL3RoZS1jLXBpbXBsLXIxNzk0
LykKKyAgICAoUHJpdmF0ZSBJbXBsZW1lbnRhdGlvbikgaWRpb20uCisKKyAgICBPciwgeW91IGNh
biBkZWNsYXJlIGFuIGluZGl2aWR1YWwgdGVzdCBhcyBhIGZyaWVuZCBvZiB5b3VyIGNsYXNzIGJ5
IGFkZGluZworICAgIHRoaXMgbGluZSBpbiB0aGUgY2xhc3MgYm9keToKKworICAgIGBgYGMrKwor
ICAgICAgICBGUklFTkRfVEVTVChUZXN0Q2FzZU5hbWUsIFRlc3ROYW1lKTsKKyAgICBgYGAKKwor
ICAgIEZvciBleGFtcGxlLAorCisgICAgYGBgYysrCisgICAgLy8gZm9vLmgKKworICAgICNpbmNs
dWRlICJndGVzdC9ndGVzdF9wcm9kLmgiCisKKyAgICBjbGFzcyBGb28geworICAgICAgLi4uCisg
ICAgcHJpdmF0ZToKKyAgICAgIEZSSUVORF9URVNUKEZvb1Rlc3QsIEJhclJldHVybnNaZXJvT25O
dWxsKTsKKworICAgICAgaW50IEJhcih2b2lkKiB4KTsKKyAgICB9OworCisgICAgLy8gZm9vX3Rl
c3QuY2MKKyAgICAuLi4KKyAgICBURVNUKEZvb1Rlc3QsIEJhclJldHVybnNaZXJvT25OdWxsKSB7
CisgICAgICBGb28gZm9vOworICAgICAgRVhQRUNUX0VRKDAsIGZvby5CYXIoTlVMTCkpOyAgLy8g
VXNlcyBGb28ncyBwcml2YXRlIG1lbWJlciBCYXIoKS4KKyAgICB9CisgICAgYGBgCisKKyAgICBQ
YXkgc3BlY2lhbCBhdHRlbnRpb24gd2hlbiB5b3VyIGNsYXNzIGlzIGRlZmluZWQgaW4gYSBuYW1l
c3BhY2UsIGFzIHlvdQorICAgIHNob3VsZCBkZWZpbmUgeW91ciB0ZXN0IGZpeHR1cmVzIGFuZCB0
ZXN0cyBpbiB0aGUgc2FtZSBuYW1lc3BhY2UgaWYgeW91IHdhbnQKKyAgICB0aGVtIHRvIGJlIGZy
aWVuZHMgb2YgeW91ciBjbGFzcy4gRm9yIGV4YW1wbGUsIGlmIHRoZSBjb2RlIHRvIGJlIHRlc3Rl
ZAorICAgIGxvb2tzIGxpa2U6CisKKyAgICBgYGBjKysKKyAgICBuYW1lc3BhY2UgbXlfbmFtZXNw
YWNlIHsKKworICAgIGNsYXNzIEZvbyB7CisgICAgICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKKyAg
ICAgIEZSSUVORF9URVNUKEZvb1Rlc3QsIEJhcik7CisgICAgICBGUklFTkRfVEVTVChGb29UZXN0
LCBCYXopOworICAgICAgLi4uIGRlZmluaXRpb24gb2YgdGhlIGNsYXNzIEZvbyAuLi4KKyAgICB9
OworCisgICAgfSAgLy8gbmFtZXNwYWNlIG15X25hbWVzcGFjZQorICAgIGBgYAorCisgICAgWW91
ciB0ZXN0IGNvZGUgc2hvdWxkIGJlIHNvbWV0aGluZyBsaWtlOgorCisgICAgYGBgYysrCisgICAg
bmFtZXNwYWNlIG15X25hbWVzcGFjZSB7CisKKyAgICBjbGFzcyBGb29UZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCB7CisgICAgIHByb3RlY3RlZDoKKyAgICAgIC4uLgorICAgIH07CisKKyAg
ICBURVNUX0YoRm9vVGVzdCwgQmFyKSB7IC4uLiB9CisgICAgVEVTVF9GKEZvb1Rlc3QsIEJheikg
eyAuLi4gfQorCisgICAgfSAgLy8gbmFtZXNwYWNlIG15X25hbWVzcGFjZQorICAgIGBgYAorCisK
KyMjICJDYXRjaGluZyIgRmFpbHVyZXMKKworSWYgeW91IGFyZSBidWlsZGluZyBhIHRlc3Rpbmcg
dXRpbGl0eSBvbiB0b3Agb2YgZ29vZ2xldGVzdCwgeW91J2xsIHdhbnQgdG8gdGVzdAoreW91ciB1
dGlsaXR5LiBXaGF0IGZyYW1ld29yayB3b3VsZCB5b3UgdXNlIHRvIHRlc3QgaXQ/IGdvb2dsZXRl
c3QsIG9mIGNvdXJzZS4KKworVGhlIGNoYWxsZW5nZSBpcyB0byB2ZXJpZnkgdGhhdCB5b3VyIHRl
c3RpbmcgdXRpbGl0eSByZXBvcnRzIGZhaWx1cmVzIGNvcnJlY3RseS4KK0luIGZyYW1ld29ya3Mg
dGhhdCByZXBvcnQgYSBmYWlsdXJlIGJ5IHRocm93aW5nIGFuIGV4Y2VwdGlvbiwgeW91IGNvdWxk
IGNhdGNoCit0aGUgZXhjZXB0aW9uIGFuZCBhc3NlcnQgb24gaXQuIEJ1dCBnb29nbGV0ZXN0IGRv
ZXNuJ3QgdXNlIGV4Y2VwdGlvbnMsIHNvIGhvdyBkbword2UgdGVzdCB0aGF0IGEgcGllY2Ugb2Yg
Y29kZSBnZW5lcmF0ZXMgYW4gZXhwZWN0ZWQgZmFpbHVyZT8KKworZ3VuaXQtc3BpLmggY29udGFp
bnMgc29tZSBjb25zdHJ1Y3RzIHRvIGRvIHRoaXMuIEFmdGVyICNpbmNsdWRpbmcgdGhpcyBoZWFk
ZXIsCit5b3UgY2FuIHVzZQorCitgYGBjKysKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoc3RhdGVt
ZW50LCBzdWJzdHJpbmcpOworYGBgCisKK3RvIGFzc2VydCB0aGF0IGBzdGF0ZW1lbnRgIGdlbmVy
YXRlcyBhIGZhdGFsIChlLmcuIGBBU1NFUlRfKmApIGZhaWx1cmUgaW4gdGhlCitjdXJyZW50IHRo
cmVhZCB3aG9zZSBtZXNzYWdlIGNvbnRhaW5zIHRoZSBnaXZlbiBgc3Vic3RyaW5nYCwgb3IgdXNl
CisKK2BgYGMrKworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShzdGF0ZW1lbnQsIHN1YnN0cmlu
Zyk7CitgYGAKKworaWYgeW91IGFyZSBleHBlY3RpbmcgYSBub24tZmF0YWwgKGUuZy4gYEVYUEVD
VF8qYCkgZmFpbHVyZS4KKworT25seSBmYWlsdXJlcyBpbiB0aGUgY3VycmVudCB0aHJlYWQgYXJl
IGNoZWNrZWQgdG8gZGV0ZXJtaW5lIHRoZSByZXN1bHQgb2YgdGhpcwordHlwZSBvZiBleHBlY3Rh
dGlvbnMuIElmIGBzdGF0ZW1lbnRgIGNyZWF0ZXMgbmV3IHRocmVhZHMsIGZhaWx1cmVzIGluIHRo
ZXNlCit0aHJlYWRzIGFyZSBhbHNvIGlnbm9yZWQuIElmIHlvdSB3YW50IHRvIGNhdGNoIGZhaWx1
cmVzIGluIG90aGVyIHRocmVhZHMgYXMKK3dlbGwsIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBt
YWNyb3MgaW5zdGVhZDoKKworYGBgYysrCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFX09OX0FMTF9U
SFJFQURTKHN0YXRlbWVudCwgc3Vic3RyaW5nKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVf
T05fQUxMX1RIUkVBRFMoc3RhdGVtZW50LCBzdWJzdHJpbmcpOworYGBgCisKK05PVEU6IEFzc2Vy
dGlvbnMgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIGFyZSBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCBv
biBXaW5kb3dzLgorCitGb3IgdGVjaG5pY2FsIHJlYXNvbnMsIHRoZXJlIGFyZSBzb21lIGNhdmVh
dHM6CisKKzEuICBZb3UgY2Fubm90IHN0cmVhbSBhIGZhaWx1cmUgbWVzc2FnZSB0byBlaXRoZXIg
bWFjcm8uCisKKzEuICBgc3RhdGVtZW50YCBpbiBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkV7X09OX0FM
TF9USFJFQURTfSgpYCBjYW5ub3QgcmVmZXJlbmNlCisgICAgbG9jYWwgbm9uLXN0YXRpYyB2YXJp
YWJsZXMgb3Igbm9uLXN0YXRpYyBtZW1iZXJzIG9mIGB0aGlzYCBvYmplY3QuCisKKzEuICBgc3Rh
dGVtZW50YCBpbiBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkV7X09OX0FMTF9USFJFQURTfSgpKClgIGNh
bm5vdCByZXR1cm4gYQorICAgIHZhbHVlLgorCisKKyMjIEdldHRpbmcgdGhlIEN1cnJlbnQgVGVz
dCdzIE5hbWUKKworU29tZXRpbWVzIGEgZnVuY3Rpb24gbWF5IG5lZWQgdG8ga25vdyB0aGUgbmFt
ZSBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdC4KK0ZvciBleGFtcGxlLCB5b3UgbWF5IGJl
IHVzaW5nIHRoZSBgU2V0VXAoKWAgbWV0aG9kIG9mIHlvdXIgdGVzdCBmaXh0dXJlIHRvIHNldAor
dGhlIGdvbGRlbiBmaWxlIG5hbWUgYmFzZWQgb24gd2hpY2ggdGVzdCBpcyBydW5uaW5nLiBUaGUg
YDo6dGVzdGluZzo6VGVzdEluZm9gCitjbGFzcyBoYXMgdGhpcyBpbmZvcm1hdGlvbjoKKworYGBg
YysrCituYW1lc3BhY2UgdGVzdGluZyB7CisKK2NsYXNzIFRlc3RJbmZvIHsKKyBwdWJsaWM6Cisg
IC8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBuYW1lIGFuZCB0aGUgdGVzdCBuYW1lLCByZXNwZWN0
aXZlbHkuCisgIC8vCisgIC8vIERvIE5PVCBkZWxldGUgb3IgZnJlZSB0aGUgcmV0dXJuIHZhbHVl
IC0gaXQncyBtYW5hZ2VkIGJ5IHRoZQorICAvLyBUZXN0SW5mbyBjbGFzcy4KKyAgY29uc3QgY2hh
ciogdGVzdF9jYXNlX25hbWUoKSBjb25zdDsKKyAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0Owor
fTsKKworfQorYGBgCisKK1RvIG9idGFpbiBhIGBUZXN0SW5mb2Agb2JqZWN0IGZvciB0aGUgY3Vy
cmVudGx5IHJ1bm5pbmcgdGVzdCwgY2FsbAorYGN1cnJlbnRfdGVzdF9pbmZvKClgIG9uIHRoZSBg
VW5pdFRlc3RgIHNpbmdsZXRvbiBvYmplY3Q6CisKK2BgYGMrKworICAvLyBHZXRzIGluZm9ybWF0
aW9uIGFib3V0IHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LgorICAvLyBEbyBOT1QgZGVsZXRl
IHRoZSByZXR1cm5lZCBvYmplY3QgLSBpdCdzIG1hbmFnZWQgYnkgdGhlIFVuaXRUZXN0IGNsYXNz
LgorICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQorICAgIDo6
dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisK
KworCisgIHByaW50ZigiV2UgYXJlIGluIHRlc3QgJXMgb2YgdGVzdCBjYXNlICVzLlxuIiwKKyAg
ICAgICAgIHRlc3RfaW5mby0+bmFtZSgpLAorICAgICAgICAgdGVzdF9pbmZvLT50ZXN0X2Nhc2Vf
bmFtZSgpKTsKK2BgYAorCitgY3VycmVudF90ZXN0X2luZm8oKWAgcmV0dXJucyBhIG51bGwgcG9p
bnRlciBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcuIEluCitwYXJ0aWN1bGFyLCB5b3UgY2Fubm90IGZp
bmQgdGhlIHRlc3QgY2FzZSBuYW1lIGluIGBUZXN0Q2FzZVNldFVwKClgLAorYFRlc3RDYXNlVGVh
ckRvd24oKWAgKHdoZXJlIHlvdSBrbm93IHRoZSB0ZXN0IGNhc2UgbmFtZSBpbXBsaWNpdGx5KSwg
b3IKK2Z1bmN0aW9ucyBjYWxsZWQgZnJvbSB0aGVtLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51
eCwgV2luZG93cywgTWFjLgorCisjIyBFeHRlbmRpbmcgZ29vZ2xldGVzdCBieSBIYW5kbGluZyBU
ZXN0IEV2ZW50cworCitnb29nbGV0ZXN0IHByb3ZpZGVzIGFuICoqZXZlbnQgbGlzdGVuZXIgQVBJ
KiogdG8gbGV0IHlvdSByZWNlaXZlIG5vdGlmaWNhdGlvbnMKK2Fib3V0IHRoZSBwcm9ncmVzcyBv
ZiBhIHRlc3QgcHJvZ3JhbSBhbmQgdGVzdCBmYWlsdXJlcy4gVGhlIGV2ZW50cyB5b3UgY2FuCits
aXN0ZW4gdG8gaW5jbHVkZSB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGUgdGVzdCBwcm9ncmFtLCBh
IHRlc3QgY2FzZSwgb3IgYSB0ZXN0CittZXRob2QsIGFtb25nIG90aGVycy4gWW91IG1heSB1c2Ug
dGhpcyBBUEkgdG8gYXVnbWVudCBvciByZXBsYWNlIHRoZSBzdGFuZGFyZAorY29uc29sZSBvdXRw
dXQsIHJlcGxhY2UgdGhlIFhNTCBvdXRwdXQsIG9yIHByb3ZpZGUgYSBjb21wbGV0ZWx5IGRpZmZl
cmVudCBmb3JtCitvZiBvdXRwdXQsIHN1Y2ggYXMgYSBHVUkgb3IgYSBkYXRhYmFzZS4gWW91IGNh
biBhbHNvIHVzZSB0ZXN0IGV2ZW50cyBhcworY2hlY2twb2ludHMgdG8gaW1wbGVtZW50IGEgcmVz
b3VyY2UgbGVhayBjaGVja2VyLCBmb3IgZXhhbXBsZS4KKworKipBdmFpbGFiaWxpdHkqKjogTGlu
dXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIERlZmluaW5nIEV2ZW50IExpc3RlbmVycworCitUbyBk
ZWZpbmUgYSBldmVudCBsaXN0ZW5lciwgeW91IHN1YmNsYXNzIGVpdGhlciB0ZXN0aW5nOjpUZXN0
RXZlbnRMaXN0ZW5lciBvcgordGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lciBUaGUgZm9y
bWVyIGlzIGFuIChhYnN0cmFjdCkgaW50ZXJmYWNlLCB3aGVyZQorKmVhY2ggcHVyZSB2aXJ0dWFs
IG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbiB0byBoYW5kbGUgYSB0ZXN0IGV2ZW50KiAoRm9yCitl
eGFtcGxlLCB3aGVuIGEgdGVzdCBzdGFydHMsIHRoZSBgT25UZXN0U3RhcnQoKWAgbWV0aG9kIHdp
bGwgYmUgY2FsbGVkLikuIFRoZQorbGF0dGVyIHByb3ZpZGVzIGFuIGVtcHR5IGltcGxlbWVudGF0
aW9uIG9mIGFsbCBtZXRob2RzIGluIHRoZSBpbnRlcmZhY2UsIHN1Y2gKK3RoYXQgYSBzdWJjbGFz
cyBvbmx5IG5lZWRzIHRvIG92ZXJyaWRlIHRoZSBtZXRob2RzIGl0IGNhcmVzIGFib3V0LgorCitX
aGVuIGFuIGV2ZW50IGlzIGZpcmVkLCBpdHMgY29udGV4dCBpcyBwYXNzZWQgdG8gdGhlIGhhbmRs
ZXIgZnVuY3Rpb24gYXMgYW4KK2FyZ3VtZW50LiBUaGUgZm9sbG93aW5nIGFyZ3VtZW50IHR5cGVz
IGFyZSB1c2VkOgorCisqICAgVW5pdFRlc3QgcmVmbGVjdHMgdGhlIHN0YXRlIG9mIHRoZSBlbnRp
cmUgdGVzdCBwcm9ncmFtLAorKiAgIFRlc3RDYXNlIGhhcyBpbmZvcm1hdGlvbiBhYm91dCBhIHRl
c3QgY2FzZSwgd2hpY2ggY2FuIGNvbnRhaW4gb25lIG9yIG1vcmUKKyAgICB0ZXN0cywKKyogICBU
ZXN0SW5mbyBjb250YWlucyB0aGUgc3RhdGUgb2YgYSB0ZXN0LCBhbmQKKyogICBUZXN0UGFydFJl
c3VsdCByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYSB0ZXN0IGFzc2VydGlvbi4KKworQW4gZXZl
bnQgaGFuZGxlciBmdW5jdGlvbiBjYW4gZXhhbWluZSB0aGUgYXJndW1lbnQgaXQgcmVjZWl2ZXMg
dG8gZmluZCBvdXQKK2ludGVyZXN0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBldmVudCBhbmQg
dGhlIHRlc3QgcHJvZ3JhbSdzIHN0YXRlLgorCitIZXJlJ3MgYW4gZXhhbXBsZToKKworYGBgYysr
CisgIGNsYXNzIE1pbmltYWxpc3RQcmludGVyIDogcHVibGljIDo6dGVzdGluZzo6RW1wdHlUZXN0
RXZlbnRMaXN0ZW5lciB7CisgICAgLy8gQ2FsbGVkIGJlZm9yZSBhIHRlc3Qgc3RhcnRzLgorICAg
IHZpcnR1YWwgdm9pZCBPblRlc3RTdGFydChjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvJiB0ZXN0
X2luZm8pIHsKKyAgICAgIHByaW50ZigiKioqIFRlc3QgJXMuJXMgc3RhcnRpbmcuXG4iLAorICAg
ICAgICAgICAgIHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsK
KyAgICB9CisKKyAgICAvLyBDYWxsZWQgYWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0aW9uIG9yIGEgU1VD
Q0VTUygpLgorICAgIHZpcnR1YWwgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IDo6dGVzdGlu
Zzo6VGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKKyAgICAgIHByaW50ZigiJXMg
aW4gJXM6JWRcbiVzXG4iLAorICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQuZmFpbGVkKCkg
PyAiKioqIEZhaWx1cmUiIDogIlN1Y2Nlc3MiLAorICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1
bHQuZmlsZV9uYW1lKCksCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5saW5lX251bWJl
cigpLAorICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQuc3VtbWFyeSgpKTsKKyAgICB9CisK
KyAgICAvLyBDYWxsZWQgYWZ0ZXIgYSB0ZXN0IGVuZHMuCisgICAgdmlydHVhbCB2b2lkIE9uVGVz
dEVuZChjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKKyAgICAgIHByaW50
ZigiKioqIFRlc3QgJXMuJXMgZW5kaW5nLlxuIiwKKyAgICAgICAgICAgICB0ZXN0X2luZm8udGVz
dF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7CisgICAgfQorICB9OworYGBgCisKKyMj
IyBVc2luZyBFdmVudCBMaXN0ZW5lcnMKKworVG8gdXNlIHRoZSBldmVudCBsaXN0ZW5lciB5b3Ug
aGF2ZSBkZWZpbmVkLCBhZGQgYW4gaW5zdGFuY2Ugb2YgaXQgdG8gdGhlCitnb29nbGV0ZXN0IGV2
ZW50IGxpc3RlbmVyIGxpc3QgKHJlcHJlc2VudGVkIGJ5IGNsYXNzIFRlc3RFdmVudExpc3RlbmVy
cyAtIG5vdGUKK3RoZSAicyIgYXQgdGhlIGVuZCBvZiB0aGUgbmFtZSkgaW4geW91ciBgbWFpbigp
YCBmdW5jdGlvbiwgYmVmb3JlIGNhbGxpbmcKK2BSVU5fQUxMX1RFU1RTKClgOgorCitgYGBjKysK
K2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICA6OnRlc3Rpbmc6OkluaXRHb29n
bGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgLy8gR2V0cyBob2xkIG9mIHRoZSBldmVudCBsaXN0ZW5l
ciBsaXN0LgorICA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0KKyAg
ICAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCk7Cisg
IC8vIEFkZHMgYSBsaXN0ZW5lciB0byB0aGUgZW5kLiAgZ29vZ2xldGVzdCB0YWtlcyB0aGUgb3du
ZXJzaGlwLgorICBsaXN0ZW5lcnMuQXBwZW5kKG5ldyBNaW5pbWFsaXN0UHJpbnRlcik7CisgIHJl
dHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CitgYGAKKworVGhlcmUncyBvbmx5IG9uZSBwcm9ibGVt
OiB0aGUgZGVmYXVsdCB0ZXN0IHJlc3VsdCBwcmludGVyIGlzIHN0aWxsIGluIGVmZmVjdCwgc28K
K2l0cyBvdXRwdXQgd2lsbCBtaW5nbGUgd2l0aCB0aGUgb3V0cHV0IGZyb20geW91ciBtaW5pbWFs
aXN0IHByaW50ZXIuIFRvIHN1cHByZXNzCit0aGUgZGVmYXVsdCBwcmludGVyLCBqdXN0IHJlbGVh
c2UgaXQgZnJvbSB0aGUgZXZlbnQgbGlzdGVuZXIgbGlzdCBhbmQgZGVsZXRlIGl0LgorWW91IGNh
biBkbyBzbyBieSBhZGRpbmcgb25lIGxpbmU6CisKK2BgYGMrKworICAuLi4KKyAgZGVsZXRlIGxp
c3RlbmVycy5SZWxlYXNlKGxpc3RlbmVycy5kZWZhdWx0X3Jlc3VsdF9wcmludGVyKCkpOworICBs
aXN0ZW5lcnMuQXBwZW5kKG5ldyBNaW5pbWFsaXN0UHJpbnRlcik7CisgIHJldHVybiBSVU5fQUxM
X1RFU1RTKCk7CitgYGAKKworTm93LCBzaXQgYmFjayBhbmQgZW5qb3kgYSBjb21wbGV0ZWx5IGRp
ZmZlcmVudCBvdXRwdXQgZnJvbSB5b3VyIHRlc3RzLiBGb3IgbW9yZQorZGV0YWlscywgeW91IGNh
biByZWFkIHRoaXMgc2FtcGxlOV91bml0dGVzdC5jYworCitZb3UgbWF5IGFwcGVuZCBtb3JlIHRo
YW4gb25lIGxpc3RlbmVyIHRvIHRoZSBsaXN0LiBXaGVuIGFuIGBPbipTdGFydCgpYCBvcgorYE9u
VGVzdFBhcnRSZXN1bHQoKWAgZXZlbnQgaXMgZmlyZWQsIHRoZSBsaXN0ZW5lcnMgd2lsbCByZWNl
aXZlIGl0IGluIHRoZSBvcmRlcgordGhleSBhcHBlYXIgaW4gdGhlIGxpc3QgKHNpbmNlIG5ldyBs
aXN0ZW5lcnMgYXJlIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QsCit0aGUgZGVmYXVsdCB0
ZXh0IHByaW50ZXIgYW5kIHRoZSBkZWZhdWx0IFhNTCBnZW5lcmF0b3Igd2lsbCByZWNlaXZlIHRo
ZSBldmVudAorZmlyc3QpLiBBbiBgT24qRW5kKClgIGV2ZW50IHdpbGwgYmUgcmVjZWl2ZWQgYnkg
dGhlIGxpc3RlbmVycyBpbiB0aGUgKnJldmVyc2UqCitvcmRlci4gVGhpcyBhbGxvd3Mgb3V0cHV0
IGJ5IGxpc3RlbmVycyBhZGRlZCBsYXRlciB0byBiZSBmcmFtZWQgYnkgb3V0cHV0IGZyb20KK2xp
c3RlbmVycyBhZGRlZCBlYXJsaWVyLgorCisjIyMgR2VuZXJhdGluZyBGYWlsdXJlcyBpbiBMaXN0
ZW5lcnMKKworWW91IG1heSB1c2UgZmFpbHVyZS1yYWlzaW5nIG1hY3JvcyAoYEVYUEVDVF8qKClg
LCBgQVNTRVJUXyooKWAsIGBGQUlMKClgLCBldGMpCit3aGVuIHByb2Nlc3NpbmcgYW4gZXZlbnQu
IFRoZXJlIGFyZSBzb21lIHJlc3RyaWN0aW9uczoKKworMS4gIFlvdSBjYW5ub3QgZ2VuZXJhdGUg
YW55IGZhaWx1cmUgaW4gYE9uVGVzdFBhcnRSZXN1bHQoKWAgKG90aGVyd2lzZSBpdCB3aWxsCisg
ICAgY2F1c2UgYE9uVGVzdFBhcnRSZXN1bHQoKWAgdG8gYmUgY2FsbGVkIHJlY3Vyc2l2ZWx5KS4K
KzEuICBBIGxpc3RlbmVyIHRoYXQgaGFuZGxlcyBgT25UZXN0UGFydFJlc3VsdCgpYCBpcyBub3Qg
YWxsb3dlZCB0byBnZW5lcmF0ZSBhbnkKKyAgICBmYWlsdXJlLgorCitXaGVuIHlvdSBhZGQgbGlz
dGVuZXJzIHRvIHRoZSBsaXN0ZW5lciBsaXN0LCB5b3Ugc2hvdWxkIHB1dCBsaXN0ZW5lcnMgdGhh
dAoraGFuZGxlIGBPblRlc3RQYXJ0UmVzdWx0KClgICpiZWZvcmUqIGxpc3RlbmVycyB0aGF0IGNh
biBnZW5lcmF0ZSBmYWlsdXJlcy4gVGhpcworZW5zdXJlcyB0aGF0IGZhaWx1cmVzIGdlbmVyYXRl
ZCBieSB0aGUgbGF0dGVyIGFyZSBhdHRyaWJ1dGVkIHRvIHRoZSByaWdodCB0ZXN0CitieSB0aGUg
Zm9ybWVyLgorCitXZSBoYXZlIGEgc2FtcGxlIG9mIGZhaWx1cmUtcmFpc2luZyBsaXN0ZW5lciBz
YW1wbGUxMF91bml0dGVzdC5jYworCisjIyBSdW5uaW5nIFRlc3QgUHJvZ3JhbXM6IEFkdmFuY2Vk
IE9wdGlvbnMKKworZ29vZ2xldGVzdCB0ZXN0IHByb2dyYW1zIGFyZSBvcmRpbmFyeSBleGVjdXRh
Ymxlcy4gT25jZSBidWlsdCwgeW91IGNhbiBydW4gdGhlbQorZGlyZWN0bHkgYW5kIGFmZmVjdCB0
aGVpciBiZWhhdmlvciB2aWEgdGhlIGZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMKK2Fu
ZC9vciBjb21tYW5kIGxpbmUgZmxhZ3MuIEZvciB0aGUgZmxhZ3MgdG8gd29yaywgeW91ciBwcm9n
cmFtcyBtdXN0IGNhbGwKK2A6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClgIGJlZm9yZSBjYWxs
aW5nIGBSVU5fQUxMX1RFU1RTKClgLgorCitUbyBzZWUgYSBsaXN0IG9mIHN1cHBvcnRlZCBmbGFn
cyBhbmQgdGhlaXIgdXNhZ2UsIHBsZWFzZSBydW4geW91ciB0ZXN0IHByb2dyYW0KK3dpdGggdGhl
IGAtLWhlbHBgIGZsYWcuIFlvdSBjYW4gYWxzbyB1c2UgYC1oYCwgYC0/YCwgb3IgYC8/YCBmb3Ig
c2hvcnQuCisKK0lmIGFuIG9wdGlvbiBpcyBzcGVjaWZpZWQgYm90aCBieSBhbiBlbnZpcm9ubWVu
dCB2YXJpYWJsZSBhbmQgYnkgYSBmbGFnLCB0aGUKK2xhdHRlciB0YWtlcyBwcmVjZWRlbmNlLgor
CisjIyMgU2VsZWN0aW5nIFRlc3RzCisKKyMjIyMgTGlzdGluZyBUZXN0IE5hbWVzCisKK1NvbWV0
aW1lcyBpdCBpcyBuZWNlc3NhcnkgdG8gbGlzdCB0aGUgYXZhaWxhYmxlIHRlc3RzIGluIGEgcHJv
Z3JhbSBiZWZvcmUKK3J1bm5pbmcgdGhlbSBzbyB0aGF0IGEgZmlsdGVyIG1heSBiZSBhcHBsaWVk
IGlmIG5lZWRlZC4gSW5jbHVkaW5nIHRoZSBmbGFnCitgLS1ndGVzdF9saXN0X3Rlc3RzYCBvdmVy
cmlkZXMgYWxsIG90aGVyIGZsYWdzIGFuZCBsaXN0cyB0ZXN0cyBpbiB0aGUgZm9sbG93aW5nCitm
b3JtYXQ6CisKK2BgYG5vbmUKK1Rlc3RDYXNlMS4KKyAgVGVzdE5hbWUxCisgIFRlc3ROYW1lMgor
VGVzdENhc2UyLgorICBUZXN0TmFtZQorYGBgCisKK05vbmUgb2YgdGhlIHRlc3RzIGxpc3RlZCBh
cmUgYWN0dWFsbHkgcnVuIGlmIHRoZSBmbGFnIGlzIHByb3ZpZGVkLiBUaGVyZSBpcyBubworY29y
cmVzcG9uZGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgdGhpcyBmbGFnLgorCisqKkF2YWls
YWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMjIFJ1bm5pbmcgYSBTdWJzZXQg
b2YgdGhlIFRlc3RzCisKK0J5IGRlZmF1bHQsIGEgZ29vZ2xldGVzdCBwcm9ncmFtIHJ1bnMgYWxs
IHRlc3RzIHRoZSB1c2VyIGhhcyBkZWZpbmVkLiBTb21ldGltZXMsCit5b3Ugd2FudCB0byBydW4g
b25seSBhIHN1YnNldCBvZiB0aGUgdGVzdHMgKGUuZy4gZm9yIGRlYnVnZ2luZyBvciBxdWlja2x5
Cit2ZXJpZnlpbmcgYSBjaGFuZ2UpLiBJZiB5b3Ugc2V0IHRoZSBgR1RFU1RfRklMVEVSYCBlbnZp
cm9ubWVudCB2YXJpYWJsZSBvciB0aGUKK2AtLWd0ZXN0X2ZpbHRlcmAgZmxhZyB0byBhIGZpbHRl
ciBzdHJpbmcsIGdvb2dsZXRlc3Qgd2lsbCBvbmx5IHJ1biB0aGUgdGVzdHMKK3dob3NlIGZ1bGwg
bmFtZXMgKGluIHRoZSBmb3JtIG9mIGBUZXN0Q2FzZU5hbWUuVGVzdE5hbWVgKSBtYXRjaCB0aGUg
ZmlsdGVyLgorCitUaGUgZm9ybWF0IG9mIGEgZmlsdGVyIGlzIGEgJ2A6YCctc2VwYXJhdGVkIGxp
c3Qgb2Ygd2lsZGNhcmQgcGF0dGVybnMgKGNhbGxlZAordGhlICpwb3NpdGl2ZSBwYXR0ZXJucyop
IG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAnYC1gJyBhbmQgYW5vdGhlcgorJ2A6YCctc2VwYXJh
dGVkIHBhdHRlcm4gbGlzdCAoY2FsbGVkIHRoZSAqbmVnYXRpdmUgcGF0dGVybnMqKS4gQSB0ZXN0
IG1hdGNoZXMKK3RoZSBmaWx0ZXIgaWYgYW5kIG9ubHkgaWYgaXQgbWF0Y2hlcyBhbnkgb2YgdGhl
IHBvc2l0aXZlIHBhdHRlcm5zIGJ1dCBkb2VzIG5vdAorbWF0Y2ggYW55IG9mIHRoZSBuZWdhdGl2
ZSBwYXR0ZXJucy4KKworQSBwYXR0ZXJuIG1heSBjb250YWluIGAnKidgIChtYXRjaGVzIGFueSBz
dHJpbmcpIG9yIGAnPydgIChtYXRjaGVzIGFueSBzaW5nbGUKK2NoYXJhY3RlcikuIEZvciBjb252
ZW5pZW5jZSwgdGhlIGZpbHRlcgorCitgJyotTmVnYXRpdmVQYXR0ZXJucydgIGNhbiBiZSBhbHNv
IHdyaXR0ZW4gYXMgYCctTmVnYXRpdmVQYXR0ZXJucydgLgorCitGb3IgZXhhbXBsZToKKworKiAg
IGAuL2Zvb190ZXN0YCBIYXMgbm8gZmxhZywgYW5kIHRodXMgcnVucyBhbGwgaXRzIHRlc3RzLgor
KiAgIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPSpgIEFsc28gcnVucyBldmVyeXRoaW5nLCBk
dWUgdG8gdGhlIHNpbmdsZQorICAgIG1hdGNoLWV2ZXJ5dGhpbmcgYCpgIHZhbHVlLgorKiAgIGAu
L2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rlc3QuKmAgUnVucyBldmVyeXRoaW5nIGluIHRl
c3QgY2FzZSBgRm9vVGVzdGAKKyAgICAuCisqICAgYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9
Kk51bGwqOipDb25zdHJ1Y3RvcipgIFJ1bnMgYW55IHRlc3Qgd2hvc2UgZnVsbAorICAgIG5hbWUg
Y29udGFpbnMgZWl0aGVyIGAiTnVsbCJgIG9yIGAiQ29uc3RydWN0b3IiYCAuCisqICAgYC4vZm9v
X3Rlc3QgLS1ndGVzdF9maWx0ZXI9LSpEZWF0aFRlc3QuKmAgUnVucyBhbGwgbm9uLWRlYXRoIHRl
c3RzLgorKiAgIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rlc3QuKi1Gb29UZXN0LkJh
cmAgUnVucyBldmVyeXRoaW5nIGluIHRlc3QKKyAgICBjYXNlIGBGb29UZXN0YCBleGNlcHQgYEZv
b1Rlc3QuQmFyYC4KKyogICBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj1Gb29UZXN0Lio6QmFy
VGVzdC4qLUZvb1Rlc3QuQmFyOkJhclRlc3QuRm9vYCBSdW5zCisgICAgZXZlcnl0aGluZyBpbiB0
ZXN0IGNhc2UgYEZvb1Rlc3RgIGV4Y2VwdCBgRm9vVGVzdC5CYXJgIGFuZCBldmVyeXRoaW5nIGlu
CisgICAgdGVzdCBjYXNlIGBCYXJUZXN0YCBleGNlcHQgYEJhclRlc3QuRm9vYC4KKyAgICAKKyMj
IyMgVGVtcG9yYXJpbHkgRGlzYWJsaW5nIFRlc3RzCisKK0lmIHlvdSBoYXZlIGEgYnJva2VuIHRl
c3QgdGhhdCB5b3UgY2Fubm90IGZpeCByaWdodCBhd2F5LCB5b3UgY2FuIGFkZCB0aGUKK2BESVNB
QkxFRF9gIHByZWZpeCB0byBpdHMgbmFtZS4gVGhpcyB3aWxsIGV4Y2x1ZGUgaXQgZnJvbSBleGVj
dXRpb24uIFRoaXMgaXMKK2JldHRlciB0aGFuIGNvbW1lbnRpbmcgb3V0IHRoZSBjb2RlIG9yIHVz
aW5nIGAjaWYgMGAsIGFzIGRpc2FibGVkIHRlc3RzIGFyZQorc3RpbGwgY29tcGlsZWQgKGFuZCB0
aHVzIHdvbid0IHJvdCkuCisKK0lmIHlvdSBuZWVkIHRvIGRpc2FibGUgYWxsIHRlc3RzIGluIGEg
dGVzdCBjYXNlLCB5b3UgY2FuIGVpdGhlciBhZGQgYERJU0FCTEVEX2AKK3RvIHRoZSBmcm9udCBv
ZiB0aGUgbmFtZSBvZiBlYWNoIHRlc3QsIG9yIGFsdGVybmF0aXZlbHkgYWRkIGl0IHRvIHRoZSBm
cm9udCBvZgordGhlIHRlc3QgY2FzZSBuYW1lLgorCitGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2lu
ZyB0ZXN0cyB3b24ndCBiZSBydW4gYnkgZ29vZ2xldGVzdCwgZXZlbiB0aG91Z2ggdGhleQord2ls
bCBzdGlsbCBiZSBjb21waWxlZDoKKworYGBgYysrCisvLyBUZXN0cyB0aGF0IEZvbyBkb2VzIEFi
Yy4KK1RFU1QoRm9vVGVzdCwgRElTQUJMRURfRG9lc0FiYykgeyAuLi4gfQorCitjbGFzcyBESVNB
QkxFRF9CYXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OworCisvLyBUZXN0
cyB0aGF0IEJhciBkb2VzIFh5ei4KK1RFU1RfRihESVNBQkxFRF9CYXJUZXN0LCBEb2VzWHl6KSB7
IC4uLiB9CitgYGAKKworTk9URTogVGhpcyBmZWF0dXJlIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9y
IHRlbXBvcmFyeSBwYWluLXJlbGllZi4gWW91IHN0aWxsIGhhdmUKK3RvIGZpeCB0aGUgZGlzYWJs
ZWQgdGVzdHMgYXQgYSBsYXRlciBkYXRlLiBBcyBhIHJlbWluZGVyLCBnb29nbGV0ZXN0IHdpbGwg
cHJpbnQKK2EgYmFubmVyIHdhcm5pbmcgeW91IGlmIGEgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIGFu
eSBkaXNhYmxlZCB0ZXN0cy4KKworVElQOiBZb3UgY2FuIGVhc2lseSBjb3VudCB0aGUgbnVtYmVy
IG9mIGRpc2FibGVkIHRlc3RzIHlvdSBoYXZlIHVzaW5nIGBnc2VhcmNoYAorYW5kL29yIGBncmVw
YC4gVGhpcyBudW1iZXIgY2FuIGJlIHVzZWQgYXMgYSBtZXRyaWMgZm9yIGltcHJvdmluZyB5b3Vy
IHRlc3QKK3F1YWxpdHkuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKKyMjIyMgVGVtcG9yYXJpbHkgRW5hYmxpbmcgRGlzYWJsZWQgVGVzdHMKKworVG8gaW5jbHVk
ZSBkaXNhYmxlZCB0ZXN0cyBpbiB0ZXN0IGV4ZWN1dGlvbiwganVzdCBpbnZva2UgdGhlIHRlc3Qg
cHJvZ3JhbSB3aXRoCit0aGUgYC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHNgIGZsYWcg
b3Igc2V0IHRoZQorYEdURVNUX0FMU09fUlVOX0RJU0FCTEVEX1RFU1RTYCBlbnZpcm9ubWVudCB2
YXJpYWJsZSB0byBhIHZhbHVlIG90aGVyIHRoYW4gYDBgLgorWW91IGNhbiBjb21iaW5lIHRoaXMg
d2l0aCB0aGUgYC0tZ3Rlc3RfZmlsdGVyYCBmbGFnIHRvIGZ1cnRoZXIgc2VsZWN0IHdoaWNoCitk
aXNhYmxlZCB0ZXN0cyB0byBydW4uCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dz
LCBNYWMuCisKKyMjIyBSZXBlYXRpbmcgdGhlIFRlc3RzCisKK09uY2UgaW4gYSB3aGlsZSB5b3Un
bGwgcnVuIGludG8gYSB0ZXN0IHdob3NlIHJlc3VsdCBpcyBoaXQtb3ItbWlzcy4gUGVyaGFwcyBp
dAord2lsbCBmYWlsIG9ubHkgMSUgb2YgdGhlIHRpbWUsIG1ha2luZyBpdCByYXRoZXIgaGFyZCB0
byByZXByb2R1Y2UgdGhlIGJ1ZyB1bmRlcgorYSBkZWJ1Z2dlci4gVGhpcyBjYW4gYmUgYSBtYWpv
ciBzb3VyY2Ugb2YgZnJ1c3RyYXRpb24uCisKK1RoZSBgLS1ndGVzdF9yZXBlYXRgIGZsYWcgYWxs
b3dzIHlvdSB0byByZXBlYXQgYWxsIChvciBzZWxlY3RlZCkgdGVzdCBtZXRob2RzIGluCithIHBy
b2dyYW0gbWFueSB0aW1lcy4gSG9wZWZ1bGx5LCBhIGZsYWt5IHRlc3Qgd2lsbCBldmVudHVhbGx5
IGZhaWwgYW5kIGdpdmUgeW91CithIGNoYW5jZSB0byBkZWJ1Zy4gSGVyZSdzIGhvdyB0byB1c2Ug
aXQ6CisKK2BgYG5vbmUKKyQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMAorUmVwZWF0IGZv
b190ZXN0IDEwMDAgdGltZXMgYW5kIGRvbid0IHN0b3AgYXQgZmFpbHVyZXMuCisKKyQgZm9vX3Rl
c3QgLS1ndGVzdF9yZXBlYXQ9LTEKK0EgbmVnYXRpdmUgY291bnQgbWVhbnMgcmVwZWF0aW5nIGZv
cmV2ZXIuCisKKyQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMCAtLWd0ZXN0X2JyZWFrX29u
X2ZhaWx1cmUKK1JlcGVhdCBmb29fdGVzdCAxMDAwIHRpbWVzLCBzdG9wcGluZyBhdCB0aGUgZmly
c3QgZmFpbHVyZS4gIFRoaXMKK2lzIGVzcGVjaWFsbHkgdXNlZnVsIHdoZW4gcnVubmluZyB1bmRl
ciBhIGRlYnVnZ2VyOiB3aGVuIHRoZSB0ZXN0CitmYWlscywgaXQgd2lsbCBkcm9wIGludG8gdGhl
IGRlYnVnZ2VyIGFuZCB5b3UgY2FuIHRoZW4gaW5zcGVjdAordmFyaWFibGVzIGFuZCBzdGFja3Mu
CisKKyQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMCAtLWd0ZXN0X2ZpbHRlcj1Gb29CYXIu
KgorUmVwZWF0IHRoZSB0ZXN0cyB3aG9zZSBuYW1lIG1hdGNoZXMgdGhlIGZpbHRlciAxMDAwIHRp
bWVzLgorYGBgCisKK0lmIHlvdXIgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIFtnbG9iYWwgc2V0LXVw
L3RlYXItZG93bl0oI2dsb2JhbC1zZXQtdXAtYW5kLXRlYXItZG93bikgY29kZSwgaXQKK3dpbGwg
YmUgcmVwZWF0ZWQgaW4gZWFjaCBpdGVyYXRpb24gYXMgd2VsbCwgYXMgdGhlIGZsYWtpbmVzcyBt
YXkgYmUgaW4gaXQuIFlvdQorY2FuIGFsc28gc3BlY2lmeSB0aGUgcmVwZWF0IGNvdW50IGJ5IHNl
dHRpbmcgdGhlIGBHVEVTVF9SRVBFQVRgIGVudmlyb25tZW50Cit2YXJpYWJsZS4KKworKipBdmFp
bGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIFNodWZmbGluZyB0aGUgVGVz
dHMKKworWW91IGNhbiBzcGVjaWZ5IHRoZSBgLS1ndGVzdF9zaHVmZmxlYCBmbGFnIChvciBzZXQg
dGhlIGBHVEVTVF9TSFVGRkxFYAorZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYDFgKSB0byBydW4g
dGhlIHRlc3RzIGluIGEgcHJvZ3JhbSBpbiBhIHJhbmRvbSBvcmRlci4KK1RoaXMgaGVscHMgdG8g
cmV2ZWFsIGJhZCBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0ZXN0cy4KKworQnkgZGVmYXVsdCwgZ29v
Z2xldGVzdCB1c2VzIGEgcmFuZG9tIHNlZWQgY2FsY3VsYXRlZCBmcm9tIHRoZSBjdXJyZW50IHRp
bWUuCitUaGVyZWZvcmUgeW91J2xsIGdldCBhIGRpZmZlcmVudCBvcmRlciBldmVyeSB0aW1lLiBU
aGUgY29uc29sZSBvdXRwdXQgaW5jbHVkZXMKK3RoZSByYW5kb20gc2VlZCB2YWx1ZSwgc3VjaCB0
aGF0IHlvdSBjYW4gcmVwcm9kdWNlIGFuIG9yZGVyLXJlbGF0ZWQgdGVzdCBmYWlsdXJlCitsYXRl
ci4gVG8gc3BlY2lmeSB0aGUgcmFuZG9tIHNlZWQgZXhwbGljaXRseSwgdXNlIHRoZSBgLS1ndGVz
dF9yYW5kb21fc2VlZD1TRUVEYAorZmxhZyAob3Igc2V0IHRoZSBgR1RFU1RfUkFORE9NX1NFRURg
IGVudmlyb25tZW50IHZhcmlhYmxlKSwgd2hlcmUgYFNFRURgIGlzIGFuCitpbnRlZ2VyIGluIHRo
ZSByYW5nZSBbMCwgOTk5OTldLiBUaGUgc2VlZCB2YWx1ZSAwIGlzIHNwZWNpYWw6IGl0IHRlbGxz
Citnb29nbGV0ZXN0IHRvIGRvIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGNhbGN1bGF0aW5nIHRo
ZSBzZWVkIGZyb20gdGhlIGN1cnJlbnQKK3RpbWUuCisKK0lmIHlvdSBjb21iaW5lIHRoaXMgd2l0
aCBgLS1ndGVzdF9yZXBlYXQ9TmAsIGdvb2dsZXRlc3Qgd2lsbCBwaWNrIGEgZGlmZmVyZW50City
YW5kb20gc2VlZCBhbmQgcmUtc2h1ZmZsZSB0aGUgdGVzdHMgaW4gZWFjaCBpdGVyYXRpb24uCisK
KyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBDb250cm9sbGlu
ZyBUZXN0IE91dHB1dAorCisjIyMjIENvbG9yZWQgVGVybWluYWwgT3V0cHV0CisKK2dvb2dsZXRl
c3QgY2FuIHVzZSBjb2xvcnMgaW4gaXRzIHRlcm1pbmFsIG91dHB1dCB0byBtYWtlIGl0IGVhc2ll
ciB0byBzcG90IHRoZQoraW1wb3J0YW50IGluZm9ybWF0aW9uOgorCisuLi48YnIvPgorPHNwYW4g
c3R5bGU9ImNvbG9yOmdyZWVuIj5bLS0tLS0tLS0tLV08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2si
PiAxIHRlc3QgZnJvbSBGb29UZXN0PGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbiI+WyBS
VU4gICAgICBdPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4gRm9vVGVzdC5Eb2VzQWJjPGJyLz4K
KzxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbiI+WyAgICAgICBPSyBdPHNwYW4gc3R5bGU9ImNvbG9y
OmJsYWNrIj4gRm9vVGVzdC5Eb2VzQWJjPGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbiI+
Wy0tLS0tLS0tLS1dPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4gMiB0ZXN0cyBmcm9tIEJhclRl
c3Q8YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuIj5bIFJVTiAgICAgIF08c3BhbiBzdHls
ZT0iY29sb3I6YmxhY2siPiBCYXJUZXN0Lkhhc1h5elByb3BlcnR5PGJyLz4KKzxzcGFuIHN0eWxl
PSJjb2xvcjpncmVlbiI+WyAgICAgICBPSyBdPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4gQmFy
VGVzdC5IYXNYeXpQcm9wZXJ0eTxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPlsgUlVO
ICAgICAgXTxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+IEJhclRlc3QuUmV0dXJuc1RydWVPblN1
Y2Nlc3M8YnIvPgorLi4uIHNvbWUgZXJyb3IgbWVzc2FnZXMgLi4uPGJyLz4KKzxzcGFuICAgc3R5
bGU9ImNvbG9yOnJlZCI+WyAgRkFJTEVEICBdIDxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+QmFy
VGVzdC5SZXR1cm5zVHJ1ZU9uU3VjY2Vzczxici8+CisuLi48YnIvPgorPHNwYW4gc3R5bGU9ImNv
bG9yOmdyZWVuIj5bPT09PT09PT09PV08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiAzMCB0ZXN0
cyBmcm9tIDE0IHRlc3QgY2FzZXMgcmFuLjxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4i
PlsgIFBBU1NFRCAgXTxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+IDI4IHRlc3RzLjxici8+Cis8
c3BhbiBzdHlsZT0iY29sb3I6cmVkIj5bICBGQUlMRUQgIF08c3BhbiBzdHlsZT0iY29sb3I6Ymxh
Y2siPiAyIHRlc3RzLCBsaXN0ZWQgYmVsb3c6PGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpyZWQi
PlsgIEZBSUxFRCAgXTxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+IEJhclRlc3QuUmV0dXJuc1Ry
dWVPblN1Y2Nlc3M8YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOnJlZCI+WyAgRkFJTEVEICBdPHNw
YW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4gQW5vdGhlclRlc3QuRG9lc1h5ejxici8+CisgIDIgRkFJ
TEVEIFRFU1RTCisKK1lvdSBjYW4gc2V0IHRoZSBgR1RFU1RfQ09MT1JgIGVudmlyb25tZW50IHZh
cmlhYmxlIG9yIHRoZSBgLS1ndGVzdF9jb2xvcmAKK2NvbW1hbmQgbGluZSBmbGFnIHRvIGB5ZXNg
LCBgbm9gLCBvciBgYXV0b2AgKHRoZSBkZWZhdWx0KSB0byBlbmFibGUgY29sb3JzLAorZGlzYWJs
ZSBjb2xvcnMsIG9yIGxldCBnb29nbGV0ZXN0IGRlY2lkZS4gV2hlbiB0aGUgdmFsdWUgaXMgYGF1
dG9gLCBnb29nbGV0ZXN0Cit3aWxsIHVzZSBjb2xvcnMgaWYgYW5kIG9ubHkgaWYgdGhlIG91dHB1
dCBnb2VzIHRvIGEgdGVybWluYWwgYW5kIChvbiBub24tV2luZG93cworcGxhdGZvcm1zKSB0aGUg
YFRFUk1gIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCB0byBgeHRlcm1gIG9yIGB4dGVybS1j
b2xvcmAuCisKKyAqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMj
IFN1cHByZXNzaW5nIHRoZSBFbGFwc2VkIFRpbWUKKworQnkgZGVmYXVsdCwgZ29vZ2xldGVzdCBw
cmludHMgdGhlIHRpbWUgaXQgdGFrZXMgdG8gcnVuIGVhY2ggdGVzdC4gVG8gZGlzYWJsZQordGhh
dCwgcnVuIHRoZSB0ZXN0IHByb2dyYW0gd2l0aCB0aGUgYC0tZ3Rlc3RfcHJpbnRfdGltZT0wYCBj
b21tYW5kIGxpbmUgZmxhZywgb3IKK3NldCB0aGUgR1RFU1RfUFJJTlRfVElNRSBlbnZpcm9ubWVu
dCB2YXJpYWJsZSB0byBgMGAuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBN
YWMuCisKKyMjIyMgU3VwcHJlc3NpbmcgVVRGLTggVGV4dCBPdXRwdXQKKworSW4gY2FzZSBvZiBh
c3NlcnRpb24gZmFpbHVyZXMsIGdvb2dsZXRlc3QgcHJpbnRzIGV4cGVjdGVkIGFuZCBhY3R1YWwg
dmFsdWVzIG9mCit0eXBlIGBzdHJpbmdgIGJvdGggYXMgaGV4LWVuY29kZWQgc3RyaW5ncyBhcyB3
ZWxsIGFzIGluIHJlYWRhYmxlIFVURi04IHRleHQgaWYKK3RoZXkgY29udGFpbiB2YWxpZCBub24t
QVNDSUkgVVRGLTggY2hhcmFjdGVycy4gSWYgeW91IHdhbnQgdG8gc3VwcHJlc3MgdGhlIFVURi04
Cit0ZXh0IGJlY2F1c2UsIGZvciBleGFtcGxlLCB5b3UgZG9uJ3QgaGF2ZSBhbiBVVEYtOCBjb21w
YXRpYmxlIG91dHB1dCBtZWRpdW0sIHJ1bgordGhlIHRlc3QgcHJvZ3JhbSB3aXRoIGAtLWd0ZXN0
X3ByaW50X3V0Zjg9MGAgb3Igc2V0IHRoZSBgR1RFU1RfUFJJTlRfVVRGOGAKK2Vudmlyb25tZW50
IHZhcmlhYmxlIHRvIGAwYC4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1h
Yy4KKworCisjIyMjIEdlbmVyYXRpbmcgYW4gWE1MIFJlcG9ydAorCitnb29nbGV0ZXN0IGNhbiBl
bWl0IGEgZGV0YWlsZWQgWE1MIHJlcG9ydCB0byBhIGZpbGUgaW4gYWRkaXRpb24gdG8gaXRzIG5v
cm1hbAordGV4dHVhbCBvdXRwdXQuIFRoZSByZXBvcnQgY29udGFpbnMgdGhlIGR1cmF0aW9uIG9m
IGVhY2ggdGVzdCwgYW5kIHRodXMgY2FuIGhlbHAKK3lvdSBpZGVudGlmeSBzbG93IHRlc3RzLiBU
aGUgcmVwb3J0IGlzIGFsc28gdXNlZCBieSB0aGUgaHR0cDovL3VuaXR0ZXN0CitkYXNoYm9hcmQg
dG8gc2hvdyBwZXItdGVzdC1tZXRob2QgZXJyb3IgbWVzc2FnZXMuCisKK1RvIGdlbmVyYXRlIHRo
ZSBYTUwgcmVwb3J0LCBzZXQgdGhlIGBHVEVTVF9PVVRQVVRgIGVudmlyb25tZW50IHZhcmlhYmxl
IG9yIHRoZQorYC0tZ3Rlc3Rfb3V0cHV0YCBmbGFnIHRvIHRoZSBzdHJpbmcgYCJ4bWw6cGF0aF90
b19vdXRwdXRfZmlsZSJgLCB3aGljaCB3aWxsCitjcmVhdGUgdGhlIGZpbGUgYXQgdGhlIGdpdmVu
IGxvY2F0aW9uLiBZb3UgY2FuIGFsc28ganVzdCB1c2UgdGhlIHN0cmluZyBgInhtbCJgLAoraW4g
d2hpY2ggY2FzZSB0aGUgb3V0cHV0IGNhbiBiZSBmb3VuZCBpbiB0aGUgYHRlc3RfZGV0YWlsLnht
bGAgZmlsZSBpbiB0aGUKK2N1cnJlbnQgZGlyZWN0b3J5LgorCitJZiB5b3Ugc3BlY2lmeSBhIGRp
cmVjdG9yeSAoZm9yIGV4YW1wbGUsIGAieG1sOm91dHB1dC9kaXJlY3RvcnkvImAgb24gTGludXgg
b3IKK2AieG1sOm91dHB1dFxkaXJlY3RvcnlcImAgb24gV2luZG93cyksIGdvb2dsZXRlc3Qgd2ls
bCBjcmVhdGUgdGhlIFhNTCBmaWxlIGluCit0aGF0IGRpcmVjdG9yeSwgbmFtZWQgYWZ0ZXIgdGhl
IHRlc3QgZXhlY3V0YWJsZSAoZS5nLiBgZm9vX3Rlc3QueG1sYCBmb3IgdGVzdAorcHJvZ3JhbSBg
Zm9vX3Rlc3RgIG9yIGBmb29fdGVzdC5leGVgKS4gSWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMg
KHBlcmhhcHMgbGVmdAorb3ZlciBmcm9tIGEgcHJldmlvdXMgcnVuKSwgZ29vZ2xldGVzdCB3aWxs
IHBpY2sgYSBkaWZmZXJlbnQgbmFtZSAoZS5nLgorYGZvb190ZXN0XzEueG1sYCkgdG8gYXZvaWQg
b3ZlcndyaXRpbmcgaXQuCisKKworVGhlIHJlcG9ydCBpcyBiYXNlZCBvbiB0aGUgYGp1bml0cmVw
b3J0YCBBbnQgdGFzay4gU2luY2UgdGhhdCBmb3JtYXQgd2FzCitvcmlnaW5hbGx5IGludGVuZGVk
IGZvciBKYXZhLCBhIGxpdHRsZSBpbnRlcnByZXRhdGlvbiBpcyByZXF1aXJlZCB0byBtYWtlIGl0
CithcHBseSB0byBnb29nbGV0ZXN0IHRlc3RzLCBhcyBzaG93biBoZXJlOgorCitgYGB4bWwKKzx0
ZXN0c3VpdGVzIG5hbWU9IkFsbFRlc3RzIiAuLi4+CisgIDx0ZXN0c3VpdGUgbmFtZT0idGVzdF9j
YXNlX25hbWUiIC4uLj4KKyAgICA8dGVzdGNhc2UgICAgbmFtZT0idGVzdF9uYW1lIiAuLi4+Cisg
ICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4u
LiIvPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+CisgICAgPC90ZXN0Y2FzZT4KKyAg
PC90ZXN0c3VpdGU+Cis8L3Rlc3RzdWl0ZXM+CitgYGAKKworKiAgIFRoZSByb290IGA8dGVzdHN1
aXRlcz5gIGVsZW1lbnQgY29ycmVzcG9uZHMgdG8gdGhlIGVudGlyZSB0ZXN0IHByb2dyYW0uCisq
ICAgYDx0ZXN0c3VpdGU+YCBlbGVtZW50cyBjb3JyZXNwb25kIHRvIGdvb2dsZXRlc3QgdGVzdCBj
YXNlcy4KKyogICBgPHRlc3RjYXNlPmAgZWxlbWVudHMgY29ycmVzcG9uZCB0byBnb29nbGV0ZXN0
IHRlc3QgZnVuY3Rpb25zLgorCitGb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgcHJvZ3JhbQor
CitgYGBjKysKK1RFU1QoTWF0aFRlc3QsIEFkZGl0aW9uKSB7IC4uLiB9CitURVNUKE1hdGhUZXN0
LCBTdWJ0cmFjdGlvbikgeyAuLi4gfQorVEVTVChMb2dpY1Rlc3QsIE5vbkNvbnRyYWRpY3Rpb24p
IHsgLi4uIH0KK2BgYAorCitjb3VsZCBnZW5lcmF0ZSB0aGlzIHJlcG9ydDoKKworYGBgeG1sCis8
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHRlc3RzdWl0ZXMgdGVzdHM9
IjMiIGZhaWx1cmVzPSIxIiBlcnJvcnM9IjAiIHRpbWU9IjAuMDM1IiB0aW1lc3RhbXA9IjIwMTEt
MTAtMzFUMTg6NTI6NDIiIG5hbWU9IkFsbFRlc3RzIj4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJNYXRo
VGVzdCIgdGVzdHM9IjIiIGZhaWx1cmVzPSIxIiBlcnJvcnM9IjAiIHRpbWU9IjAuMDE1Ij4KKyAg
ICA8dGVzdGNhc2UgbmFtZT0iQWRkaXRpb24iIHN0YXR1cz0icnVuIiB0aW1lPSIwLjAwNyIgY2xh
c3NuYW1lPSIiPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IGFkZCgxLCAxKSYj
eDBBOyAgQWN0dWFsOiAzJiN4MEE7RXhwZWN0ZWQ6IDIiIHR5cGU9IiI+Li4uPC9mYWlsdXJlPgor
ICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IGFkZCgxLCAtMSkmI3gwQTsgIEFjdHVh
bDogMSYjeDBBO0V4cGVjdGVkOiAwIiB0eXBlPSIiPi4uLjwvZmFpbHVyZT4KKyAgICA8L3Rlc3Rj
YXNlPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJTdWJ0cmFjdGlvbiIgc3RhdHVzPSJydW4iIHRpbWU9
IjAuMDA1IiBjbGFzc25hbWU9IiI+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+Cisg
IDx0ZXN0c3VpdGUgbmFtZT0iTG9naWNUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGVycm9y
cz0iMCIgdGltZT0iMC4wMDUiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJOb25Db250cmFkaWN0aW9u
IiBzdGF0dXM9InJ1biIgdGltZT0iMC4wMDUiIGNsYXNzbmFtZT0iIj4KKyAgICA8L3Rlc3RjYXNl
PgorICA8L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1aXRlcz4KK2BgYAorCitUaGluZ3MgdG8gbm90ZToK
KworKiAgIFRoZSBgdGVzdHNgIGF0dHJpYnV0ZSBvZiBhIGA8dGVzdHN1aXRlcz5gIG9yIGA8dGVz
dHN1aXRlPmAgZWxlbWVudCB0ZWxscyBob3cKKyAgICBtYW55IHRlc3QgZnVuY3Rpb25zIHRoZSBn
b29nbGV0ZXN0IHByb2dyYW0gb3IgdGVzdCBjYXNlIGNvbnRhaW5zLCB3aGlsZSB0aGUKKyAgICBg
ZmFpbHVyZXNgIGF0dHJpYnV0ZSB0ZWxscyBob3cgbWFueSBvZiB0aGVtIGZhaWxlZC4KKworKiAg
IFRoZSBgdGltZWAgYXR0cmlidXRlIGV4cHJlc3NlcyB0aGUgZHVyYXRpb24gb2YgdGhlIHRlc3Qs
IHRlc3QgY2FzZSwgb3IKKyAgICBlbnRpcmUgdGVzdCBwcm9ncmFtIGluIHNlY29uZHMuCisKKyog
ICBUaGUgYHRpbWVzdGFtcGAgYXR0cmlidXRlIHJlY29yZHMgdGhlIGxvY2FsIGRhdGUgYW5kIHRp
bWUgb2YgdGhlIHRlc3QKKyAgICBleGVjdXRpb24uCisKKyogICBFYWNoIGA8ZmFpbHVyZT5gIGVs
ZW1lbnQgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgZmFpbGVkIGdvb2dsZXRlc3QKKyAgICBhc3Nl
cnRpb24uCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyMg
R2VuZXJhdGluZyBhbiBKU09OIFJlcG9ydAorCitnb29nbGV0ZXN0IGNhbiBhbHNvIGVtaXQgYSBK
U09OIHJlcG9ydCBhcyBhbiBhbHRlcm5hdGl2ZSBmb3JtYXQgdG8gWE1MLiBUbworZ2VuZXJhdGUg
dGhlIEpTT04gcmVwb3J0LCBzZXQgdGhlIGBHVEVTVF9PVVRQVVRgIGVudmlyb25tZW50IHZhcmlh
YmxlIG9yIHRoZQorYC0tZ3Rlc3Rfb3V0cHV0YCBmbGFnIHRvIHRoZSBzdHJpbmcgYCJqc29uOnBh
dGhfdG9fb3V0cHV0X2ZpbGUiYCwgd2hpY2ggd2lsbAorY3JlYXRlIHRoZSBmaWxlIGF0IHRoZSBn
aXZlbiBsb2NhdGlvbi4gWW91IGNhbiBhbHNvIGp1c3QgdXNlIHRoZSBzdHJpbmcKK2AianNvbiJg
LCBpbiB3aGljaCBjYXNlIHRoZSBvdXRwdXQgY2FuIGJlIGZvdW5kIGluIHRoZSBgdGVzdF9kZXRh
aWwuanNvbmAgZmlsZQoraW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorCitUaGUgcmVwb3J0IGZv
cm1hdCBjb25mb3JtcyB0byB0aGUgZm9sbG93aW5nIEpTT04gU2NoZW1hOgorCitgYGBqc29uCit7
CisgICIkc2NoZW1hIjogImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvc2NoZW1hIyIsCisgICJ0eXBl
IjogIm9iamVjdCIsCisgICJkZWZpbml0aW9ucyI6IHsKKyAgICAiVGVzdENhc2UiOiB7CisgICAg
ICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgInByb3BlcnRpZXMiOiB7CisgICAgICAgICJuYW1l
IjogeyAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICJ0ZXN0cyI6IHsgInR5cGUiOiAiaW50
ZWdlciIgfSwKKyAgICAgICAgImZhaWx1cmVzIjogeyAidHlwZSI6ICJpbnRlZ2VyIiB9LAorICAg
ICAgICAiZGlzYWJsZWQiOiB7ICJ0eXBlIjogImludGVnZXIiIH0sCisgICAgICAgICJ0aW1lIjog
eyAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICJ0ZXN0c3VpdGUiOiB7CisgICAgICAgICAg
InR5cGUiOiAiYXJyYXkiLAorICAgICAgICAgICJpdGVtcyI6IHsKKyAgICAgICAgICAgICIkcmVm
IjogIiMvZGVmaW5pdGlvbnMvVGVzdEluZm8iCisgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICB9CisgICAgfSwKKyAgICAiVGVzdEluZm8iOiB7CisgICAgICAidHlwZSI6ICJvYmplY3QiLAor
ICAgICAgInByb3BlcnRpZXMiOiB7CisgICAgICAgICJuYW1lIjogeyAidHlwZSI6ICJzdHJpbmci
IH0sCisgICAgICAgICJzdGF0dXMiOiB7CisgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKKyAg
ICAgICAgICAiZW51bSI6IFsiUlVOIiwgIk5PVFJVTiJdCisgICAgICAgIH0sCisgICAgICAgICJ0
aW1lIjogeyAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICJjbGFzc25hbWUiOiB7ICJ0eXBl
IjogInN0cmluZyIgfSwKKyAgICAgICAgImZhaWx1cmVzIjogeworICAgICAgICAgICJ0eXBlIjog
ImFycmF5IiwKKyAgICAgICAgICAiaXRlbXMiOiB7CisgICAgICAgICAgICAiJHJlZiI6ICIjL2Rl
ZmluaXRpb25zL0ZhaWx1cmUiCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAg
fSwKKyAgICAiRmFpbHVyZSI6IHsKKyAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAicHJv
cGVydGllcyI6IHsKKyAgICAgICAgImZhaWx1cmVzIjogeyAidHlwZSI6ICJzdHJpbmciIH0sCisg
ICAgICAgICJ0eXBlIjogeyAidHlwZSI6ICJzdHJpbmciIH0KKyAgICAgIH0KKyAgICB9CisgIH0s
CisgICJwcm9wZXJ0aWVzIjogeworICAgICJ0ZXN0cyI6IHsgInR5cGUiOiAiaW50ZWdlciIgfSwK
KyAgICAiZmFpbHVyZXMiOiB7ICJ0eXBlIjogImludGVnZXIiIH0sCisgICAgImRpc2FibGVkIjog
eyAidHlwZSI6ICJpbnRlZ2VyIiB9LAorICAgICJlcnJvcnMiOiB7ICJ0eXBlIjogImludGVnZXIi
IH0sCisgICAgInRpbWVzdGFtcCI6IHsKKyAgICAgICJ0eXBlIjogInN0cmluZyIsCisgICAgICAi
Zm9ybWF0IjogImRhdGUtdGltZSIKKyAgICB9LAorICAgICJ0aW1lIjogeyAidHlwZSI6ICJzdHJp
bmciIH0sCisgICAgIm5hbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAidGVzdHN1aXRl
cyI6IHsKKyAgICAgICJ0eXBlIjogImFycmF5IiwKKyAgICAgICJpdGVtcyI6IHsKKyAgICAgICAg
IiRyZWYiOiAiIy9kZWZpbml0aW9ucy9UZXN0Q2FzZSIKKyAgICAgIH0KKyAgICB9CisgIH0KK30K
K2BgYAorCitUaGUgcmVwb3J0IHVzZXMgdGhlIGZvcm1hdCB0aGF0IGNvbmZvcm1zIHRvIHRoZSBm
b2xsb3dpbmcgUHJvdG8zIHVzaW5nIHRoZSBbSlNPTgorZW5jb2RpbmddKGh0dHBzOi8vZGV2ZWxv
cGVycy5nb29nbGUuY29tL3Byb3RvY29sLWJ1ZmZlcnMvZG9jcy9wcm90bzMjanNvbik6CisKK2Bg
YHByb3RvCitzeW50YXggPSAicHJvdG8zIjsKKworcGFja2FnZSBnb29nbGV0ZXN0OworCitpbXBv
cnQgImdvb2dsZS9wcm90b2J1Zi90aW1lc3RhbXAucHJvdG8iOworaW1wb3J0ICJnb29nbGUvcHJv
dG9idWYvZHVyYXRpb24ucHJvdG8iOworCittZXNzYWdlIFVuaXRUZXN0IHsKKyAgaW50MzIgdGVz
dHMgPSAxOworICBpbnQzMiBmYWlsdXJlcyA9IDI7CisgIGludDMyIGRpc2FibGVkID0gMzsKKyAg
aW50MzIgZXJyb3JzID0gNDsKKyAgZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCB0aW1lc3RhbXAg
PSA1OworICBnb29nbGUucHJvdG9idWYuRHVyYXRpb24gdGltZSA9IDY7CisgIHN0cmluZyBuYW1l
ID0gNzsKKyAgcmVwZWF0ZWQgVGVzdENhc2UgdGVzdHN1aXRlcyA9IDg7Cit9CisKK21lc3NhZ2Ug
VGVzdENhc2UgeworICBzdHJpbmcgbmFtZSA9IDE7CisgIGludDMyIHRlc3RzID0gMjsKKyAgaW50
MzIgZmFpbHVyZXMgPSAzOworICBpbnQzMiBkaXNhYmxlZCA9IDQ7CisgIGludDMyIGVycm9ycyA9
IDU7CisgIGdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbiB0aW1lID0gNjsKKyAgcmVwZWF0ZWQgVGVz
dEluZm8gdGVzdHN1aXRlID0gNzsKK30KKworbWVzc2FnZSBUZXN0SW5mbyB7CisgIHN0cmluZyBu
YW1lID0gMTsKKyAgZW51bSBTdGF0dXMgeworICAgIFJVTiA9IDA7CisgICAgTk9UUlVOID0gMTsK
KyAgfQorICBTdGF0dXMgc3RhdHVzID0gMjsKKyAgZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uIHRp
bWUgPSAzOworICBzdHJpbmcgY2xhc3NuYW1lID0gNDsKKyAgbWVzc2FnZSBGYWlsdXJlIHsKKyAg
ICBzdHJpbmcgZmFpbHVyZXMgPSAxOworICAgIHN0cmluZyB0eXBlID0gMjsKKyAgfQorICByZXBl
YXRlZCBGYWlsdXJlIGZhaWx1cmVzID0gNTsKK30KK2BgYAorCitGb3IgaW5zdGFuY2UsIHRoZSBm
b2xsb3dpbmcgcHJvZ3JhbQorCitgYGBjKysKK1RFU1QoTWF0aFRlc3QsIEFkZGl0aW9uKSB7IC4u
LiB9CitURVNUKE1hdGhUZXN0LCBTdWJ0cmFjdGlvbikgeyAuLi4gfQorVEVTVChMb2dpY1Rlc3Qs
IE5vbkNvbnRyYWRpY3Rpb24pIHsgLi4uIH0KK2BgYAorCitjb3VsZCBnZW5lcmF0ZSB0aGlzIHJl
cG9ydDoKKworYGBganNvbgoreworICAidGVzdHMiOiAzLAorICAiZmFpbHVyZXMiOiAxLAorICAi
ZXJyb3JzIjogMCwKKyAgInRpbWUiOiAiMC4wMzVzIiwKKyAgInRpbWVzdGFtcCI6ICIyMDExLTEw
LTMxVDE4OjUyOjQyWiIKKyAgIm5hbWUiOiAiQWxsVGVzdHMiLAorICAidGVzdHN1aXRlcyI6IFsK
KyAgICB7CisgICAgICAibmFtZSI6ICJNYXRoVGVzdCIsCisgICAgICAidGVzdHMiOiAyLAorICAg
ICAgImZhaWx1cmVzIjogMSwKKyAgICAgICJlcnJvcnMiOiAwLAorICAgICAgInRpbWUiOiAiMC4w
MTVzIiwKKyAgICAgICJ0ZXN0c3VpdGUiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAibmFtZSI6
ICJBZGRpdGlvbiIsCisgICAgICAgICAgInN0YXR1cyI6ICJSVU4iLAorICAgICAgICAgICJ0aW1l
IjogIjAuMDA3cyIsCisgICAgICAgICAgImNsYXNzbmFtZSI6ICIiLAorICAgICAgICAgICJmYWls
dXJlcyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgIm1lc3NhZ2UiOiAiVmFsdWUg
b2Y6IGFkZCgxLCAxKVx4MEEgIEFjdHVhbDogM1x4MEFFeHBlY3RlZDogMiIsCisgICAgICAgICAg
ICAgICJ0eXBlIjogIiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICJtZXNzYWdlIjogIlZhbHVlIG9mOiBhZGQoMSwgLTEpXHgwQSAgQWN0dWFsOiAxXHgwQUV4
cGVjdGVkOiAwIiwKKyAgICAgICAgICAgICAgInR5cGUiOiAiIgorICAgICAgICAgICAgfQorICAg
ICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICJuYW1lIjogIlN1YnRy
YWN0aW9uIiwKKyAgICAgICAgICAic3RhdHVzIjogIlJVTiIsCisgICAgICAgICAgInRpbWUiOiAi
MC4wMDVzIiwKKyAgICAgICAgICAiY2xhc3NuYW1lIjogIiIKKyAgICAgICAgfQorICAgICAgXQor
ICAgIH0KKyAgICB7CisgICAgICAibmFtZSI6ICJMb2dpY1Rlc3QiLAorICAgICAgInRlc3RzIjog
MSwKKyAgICAgICJmYWlsdXJlcyI6IDAsCisgICAgICAiZXJyb3JzIjogMCwKKyAgICAgICJ0aW1l
IjogIjAuMDA1cyIsCisgICAgICAidGVzdHN1aXRlIjogWworICAgICAgICB7CisgICAgICAgICAg
Im5hbWUiOiAiTm9uQ29udHJhZGljdGlvbiIsCisgICAgICAgICAgInN0YXR1cyI6ICJSVU4iLAor
ICAgICAgICAgICJ0aW1lIjogIjAuMDA1cyIsCisgICAgICAgICAgImNsYXNzbmFtZSI6ICIiCisg
ICAgICAgIH0KKyAgICAgIF0KKyAgICB9CisgIF0KK30KK2BgYAorCitJTVBPUlRBTlQ6IFRoZSBl
eGFjdCBmb3JtYXQgb2YgdGhlIEpTT04gZG9jdW1lbnQgaXMgc3ViamVjdCB0byBjaGFuZ2UuCisK
KyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBDb250cm9sbGlu
ZyBIb3cgRmFpbHVyZXMgQXJlIFJlcG9ydGVkCisKKyMjIyMgVHVybmluZyBBc3NlcnRpb24gRmFp
bHVyZXMgaW50byBCcmVhay1Qb2ludHMKKworV2hlbiBydW5uaW5nIHRlc3QgcHJvZ3JhbXMgdW5k
ZXIgYSBkZWJ1Z2dlciwgaXQncyB2ZXJ5IGNvbnZlbmllbnQgaWYgdGhlCitkZWJ1Z2dlciBjYW4g
Y2F0Y2ggYW4gYXNzZXJ0aW9uIGZhaWx1cmUgYW5kIGF1dG9tYXRpY2FsbHkgZHJvcCBpbnRvIGlu
dGVyYWN0aXZlCittb2RlLiBnb29nbGV0ZXN0J3MgKmJyZWFrLW9uLWZhaWx1cmUqIG1vZGUgc3Vw
cG9ydHMgdGhpcyBiZWhhdmlvci4KKworVG8gZW5hYmxlIGl0LCBzZXQgdGhlIGBHVEVTVF9CUkVB
S19PTl9GQUlMVVJFYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIHZhbHVlCitvdGhlciB0aGFu
IGAwYCAuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHRoZSBgLS1ndGVzdF9icmVha19vbl9m
YWlsdXJlYAorY29tbWFuZCBsaW5lIGZsYWcuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBX
aW5kb3dzLCBNYWMuCisKKyMjIyMgRGlzYWJsaW5nIENhdGNoaW5nIFRlc3QtVGhyb3duIEV4Y2Vw
dGlvbnMKKworZ29vZ2xldGVzdCBjYW4gYmUgdXNlZCBlaXRoZXIgd2l0aCBvciB3aXRob3V0IGV4
Y2VwdGlvbnMgZW5hYmxlZC4gSWYgYSB0ZXN0Cit0aHJvd3MgYSBDKysgZXhjZXB0aW9uIG9yIChv
biBXaW5kb3dzKSBhIHN0cnVjdHVyZWQgZXhjZXB0aW9uIChTRUgpLCBieSBkZWZhdWx0Citnb29n
bGV0ZXN0IGNhdGNoZXMgaXQsIHJlcG9ydHMgaXQgYXMgYSB0ZXN0IGZhaWx1cmUsIGFuZCBjb250
aW51ZXMgd2l0aCB0aGUgbmV4dAordGVzdCBtZXRob2QuIFRoaXMgbWF4aW1pemVzIHRoZSBjb3Zl
cmFnZSBvZiBhIHRlc3QgcnVuLiBBbHNvLCBvbiBXaW5kb3dzIGFuCit1bmNhdWdodCBleGNlcHRp
b24gd2lsbCBjYXVzZSBhIHBvcC11cCB3aW5kb3csIHNvIGNhdGNoaW5nIHRoZSBleGNlcHRpb25z
IGFsbG93cworeW91IHRvIHJ1biB0aGUgdGVzdHMgYXV0b21hdGljYWxseS4KKworV2hlbiBkZWJ1
Z2dpbmcgdGhlIHRlc3QgZmFpbHVyZXMsIGhvd2V2ZXIsIHlvdSBtYXkgaW5zdGVhZCB3YW50IHRo
ZSBleGNlcHRpb25zCit0byBiZSBoYW5kbGVkIGJ5IHRoZSBkZWJ1Z2dlciwgc3VjaCB0aGF0IHlv
dSBjYW4gZXhhbWluZSB0aGUgY2FsbCBzdGFjayB3aGVuIGFuCitleGNlcHRpb24gaXMgdGhyb3du
LiBUbyBhY2hpZXZlIHRoYXQsIHNldCB0aGUgYEdURVNUX0NBVENIX0VYQ0VQVElPTlNgCitlbnZp
cm9ubWVudCB2YXJpYWJsZSB0byBgMGAsIG9yIHVzZSB0aGUgYC0tZ3Rlc3RfY2F0Y2hfZXhjZXB0
aW9ucz0wYCBmbGFnIHdoZW4KK3J1bm5pbmcgdGhlIHRlc3RzLgorCisqKkF2YWlsYWJpbGl0eSoq
OiBMaW51eCwgV2luZG93cywgTWFjLgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9kb2NzL2ZhcS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvZmFxLm1kCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdkNDJmZjdkYmFhOGZhYmQwY2M2NTJmZDcwNTI3OTgxODRlOTVjNDkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL2ZhcS5tZApAQCAtMCww
ICsxLDc3MCBAQAorIyBHb29nbGV0ZXN0IEZBUQorCisKKyMjIFdoeSBzaG91bGQgdGVzdCBjYXNl
IG5hbWVzIGFuZCB0ZXN0IG5hbWVzIG5vdCBjb250YWluIHVuZGVyc2NvcmU/CisKK1VuZGVyc2Nv
cmUgKGBfYCkgaXMgc3BlY2lhbCwgYXMgQysrIHJlc2VydmVzIHRoZSBmb2xsb3dpbmcgdG8gYmUg
dXNlZCBieSB0aGUKK2NvbXBpbGVyIGFuZCB0aGUgc3RhbmRhcmQgbGlicmFyeToKKworMS4gIGFu
eSBpZGVudGlmaWVyIHRoYXQgc3RhcnRzIHdpdGggYW4gYF9gIGZvbGxvd2VkIGJ5IGFuIHVwcGVy
LWNhc2UgbGV0dGVyLCBhbmQKKzEuICBhbnkgaWRlbnRpZmllciB0aGF0IGNvbnRhaW5zIHR3byBj
b25zZWN1dGl2ZSB1bmRlcnNjb3JlcyAoaS5lLiBgX19gKQorICAgICphbnl3aGVyZSogaW4gaXRz
IG5hbWUuCisKK1VzZXIgY29kZSBpcyAqcHJvaGliaXRlZCogZnJvbSB1c2luZyBzdWNoIGlkZW50
aWZpZXJzLgorCitOb3cgbGV0J3MgbG9vayBhdCB3aGF0IHRoaXMgbWVhbnMgZm9yIGBURVNUYCBh
bmQgYFRFU1RfRmAuCisKK0N1cnJlbnRseSBgVEVTVChUZXN0Q2FzZU5hbWUsIFRlc3ROYW1lKWAg
Z2VuZXJhdGVzIGEgY2xhc3MgbmFtZWQKK2BUZXN0Q2FzZU5hbWVfVGVzdE5hbWVfVGVzdGAuIFdo
YXQgaGFwcGVucyBpZiBgVGVzdENhc2VOYW1lYCBvciBgVGVzdE5hbWVgCitjb250YWlucyBgX2A/
CisKKzEuICBJZiBgVGVzdENhc2VOYW1lYCBzdGFydHMgd2l0aCBhbiBgX2AgZm9sbG93ZWQgYnkg
YW4gdXBwZXItY2FzZSBsZXR0ZXIgKHNheSwKKyAgICBgX0Zvb2ApLCB3ZSBlbmQgdXAgd2l0aCBg
X0Zvb19UZXN0TmFtZV9UZXN0YCwgd2hpY2ggaXMgcmVzZXJ2ZWQgYW5kIHRodXMKKyAgICBpbnZh
bGlkLgorMS4gIElmIGBUZXN0Q2FzZU5hbWVgIGVuZHMgd2l0aCBhbiBgX2AgKHNheSwgYEZvb19g
KSwgd2UgZ2V0CisgICAgYEZvb19fVGVzdE5hbWVfVGVzdGAsIHdoaWNoIGlzIGludmFsaWQuCisx
LiAgSWYgYFRlc3ROYW1lYCBzdGFydHMgd2l0aCBhbiBgX2AgKHNheSwgYF9CYXJgKSwgd2UgZ2V0
CisgICAgYFRlc3RDYXNlTmFtZV9fQmFyX1Rlc3RgLCB3aGljaCBpcyBpbnZhbGlkLgorMS4gIElm
IGBUZXN0TmFtZWAgZW5kcyB3aXRoIGFuIGBfYCAoc2F5LCBgQmFyX2ApLCB3ZSBnZXQKKyAgICBg
VGVzdENhc2VOYW1lX0Jhcl9fVGVzdGAsIHdoaWNoIGlzIGludmFsaWQuCisKK1NvIGNsZWFybHkg
YFRlc3RDYXNlTmFtZWAgYW5kIGBUZXN0TmFtZWAgY2Fubm90IHN0YXJ0IG9yIGVuZCB3aXRoIGBf
YCAoQWN0dWFsbHksCitgVGVzdENhc2VOYW1lYCBjYW4gc3RhcnQgd2l0aCBgX2AgLS0gYXMgbG9u
ZyBhcyB0aGUgYF9gIGlzbid0IGZvbGxvd2VkIGJ5IGFuCit1cHBlci1jYXNlIGxldHRlci4gQnV0
IHRoYXQncyBnZXR0aW5nIGNvbXBsaWNhdGVkLiBTbyBmb3Igc2ltcGxpY2l0eSB3ZSBqdXN0IHNh
eQordGhhdCBpdCBjYW5ub3Qgc3RhcnQgd2l0aCBgX2AuKS4KKworSXQgbWF5IHNlZW0gZmluZSBm
b3IgYFRlc3RDYXNlTmFtZWAgYW5kIGBUZXN0TmFtZWAgdG8gY29udGFpbiBgX2AgaW4gdGhlIG1p
ZGRsZS4KK0hvd2V2ZXIsIGNvbnNpZGVyIHRoaXM6CisKK2BgYGMrKworVEVTVChUaW1lLCBGbGll
c19MaWtlX0FuX0Fycm93KSB7IC4uLiB9CitURVNUKFRpbWVfRmxpZXMsIExpa2VfQW5fQXJyb3cp
IHsgLi4uIH0KK2BgYAorCitOb3csIHRoZSB0d28gYFRFU1RgcyB3aWxsIGJvdGggZ2VuZXJhdGUg
dGhlIHNhbWUgY2xhc3MKKyhgVGltZV9GbGllc19MaWtlX0FuX0Fycm93X1Rlc3RgKS4gVGhhdCdz
IG5vdCBnb29kLgorCitTbyBmb3Igc2ltcGxpY2l0eSwgd2UganVzdCBhc2sgdGhlIHVzZXJzIHRv
IGF2b2lkIGBfYCBpbiBgVGVzdENhc2VOYW1lYCBhbmQKK2BUZXN0TmFtZWAuIFRoZSBydWxlIGlz
IG1vcmUgY29uc3RyYWluaW5nIHRoYW4gbmVjZXNzYXJ5LCBidXQgaXQncyBzaW1wbGUgYW5kCitl
YXN5IHRvIHJlbWVtYmVyLiBJdCBhbHNvIGdpdmVzIGdvb2dsZXRlc3Qgc29tZSB3aWdnbGUgcm9v
bSBpbiBjYXNlIGl0cworaW1wbGVtZW50YXRpb24gbmVlZHMgdG8gY2hhbmdlIGluIHRoZSBmdXR1
cmUuCisKK0lmIHlvdSB2aW9sYXRlIHRoZSBydWxlLCB0aGVyZSBtYXkgbm90IGJlIGltbWVkaWF0
ZSBjb25zZXF1ZW5jZXMsIGJ1dCB5b3VyIHRlc3QKK21heSAoanVzdCBtYXkpIGJyZWFrIHdpdGgg
YSBuZXcgY29tcGlsZXIgKG9yIGEgbmV3IHZlcnNpb24gb2YgdGhlIGNvbXBpbGVyIHlvdQorYXJl
IHVzaW5nKSBvciB3aXRoIGEgbmV3IHZlcnNpb24gb2YgZ29vZ2xldGVzdC4gVGhlcmVmb3JlIGl0
J3MgYmVzdCB0byBmb2xsb3cKK3RoZSBydWxlLgorCisjIyBXaHkgZG9lcyBnb29nbGV0ZXN0IHN1
cHBvcnQgYEVYUEVDVF9FUShOVUxMLCBwdHIpYCBhbmQgYEFTU0VSVF9FUShOVUxMLCBwdHIpYCBi
dXQgbm90IGBFWFBFQ1RfTkUoTlVMTCwgcHRyKWAgYW5kIGBBU1NFUlRfTkUoTlVMTCwgcHRyKWA/
CisKK0ZpcnN0IG9mIGFsbCB5b3UgY2FuIHVzZSBgRVhQRUNUX05FKG51bGxwdHIsIHB0cilgIGFu
ZCBgQVNTRVJUX05FKG51bGxwdHIsCitwdHIpYC4gVGhpcyBpcyB0aGUgcHJlZmVycmVkIHN5bnRh
eCBpbiB0aGUgc3R5bGUgZ3VpZGUgYmVjYXVzZSBudWxscHRyIGRvZXMgbm90CitoYXZlIHRoZSB0
eXBlIHByb2JsZW1zIHRoYXQgTlVMTCBkb2VzLiBXaGljaCBpcyB3aHkgTlVMTCBkb2VzIG5vdCB3
b3JrLgorCitEdWUgdG8gc29tZSBwZWN1bGlhcml0eSBvZiBDKyssIGl0IHJlcXVpcmVzIHNvbWUg
bm9uLXRyaXZpYWwgdGVtcGxhdGUgbWV0YQorcHJvZ3JhbW1pbmcgdHJpY2tzIHRvIHN1cHBvcnQg
dXNpbmcgYE5VTExgIGFzIGFuIGFyZ3VtZW50IG9mIHRoZSBgRVhQRUNUX1hYKClgCithbmQgYEFT
U0VSVF9YWCgpYCBtYWNyb3MuIFRoZXJlZm9yZSB3ZSBvbmx5IGRvIGl0IHdoZXJlIGl0J3MgbW9z
dCBuZWVkZWQKKyhvdGhlcndpc2Ugd2UgbWFrZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgZ29vZ2xl
dGVzdCBoYXJkZXIgdG8gbWFpbnRhaW4gYW5kIG1vcmUKK2Vycm9yLXByb25lIHRoYW4gbmVjZXNz
YXJ5KS4KKworVGhlIGBFWFBFQ1RfRVEoKWAgbWFjcm8gdGFrZXMgdGhlICpleHBlY3RlZCogdmFs
dWUgYXMgaXRzIGZpcnN0IGFyZ3VtZW50IGFuZCB0aGUKKyphY3R1YWwqIHZhbHVlIGFzIHRoZSBz
ZWNvbmQuIEl0J3MgcmVhc29uYWJsZSB0aGF0IHNvbWVvbmUgd2FudHMgdG8gd3JpdGUKK2BFWFBF
Q1RfRVEoTlVMTCwgc29tZV9leHByZXNzaW9uKWAsIGFuZCB0aGlzIGluZGVlZCB3YXMgcmVxdWVz
dGVkIHNldmVyYWwgdGltZXMuCitUaGVyZWZvcmUgd2UgaW1wbGVtZW50ZWQgaXQuCisKK1RoZSBu
ZWVkIGZvciBgRVhQRUNUX05FKE5VTEwsIHB0cilgIGlzbid0IG5lYXJseSBhcyBzdHJvbmcuIFdo
ZW4gdGhlIGFzc2VydGlvbgorZmFpbHMsIHlvdSBhbHJlYWR5IGtub3cgdGhhdCBgcHRyYCBtdXN0
IGJlIGBOVUxMYCwgc28gaXQgZG9lc24ndCBhZGQgYW55CitpbmZvcm1hdGlvbiB0byBwcmludCBg
cHRyYCBpbiB0aGlzIGNhc2UuIFRoYXQgbWVhbnMgYEVYUEVDVF9UUlVFKHB0ciAhPSBOVUxMKWAK
K3dvcmtzIGp1c3QgYXMgd2VsbC4KKworSWYgd2Ugd2VyZSB0byBzdXBwb3J0IGBFWFBFQ1RfTkUo
TlVMTCwgcHRyKWAsIGZvciBjb25zaXN0ZW5jeSB3ZSdsbCBoYXZlIHRvCitzdXBwb3J0IGBFWFBF
Q1RfTkUocHRyLCBOVUxMKWAgYXMgd2VsbCwgYXMgdW5saWtlIGBFWFBFQ1RfRVFgLCB3ZSBkb24n
dCBoYXZlIGEKK2NvbnZlbnRpb24gb24gdGhlIG9yZGVyIG9mIHRoZSB0d28gYXJndW1lbnRzIGZv
ciBgRVhQRUNUX05FYC4gVGhpcyBtZWFucyB1c2luZwordGhlIHRlbXBsYXRlIG1ldGEgcHJvZ3Jh
bW1pbmcgdHJpY2tzIHR3aWNlIGluIHRoZSBpbXBsZW1lbnRhdGlvbiwgbWFraW5nIGl0IGV2ZW4K
K2hhcmRlciB0byB1bmRlcnN0YW5kIGFuZCBtYWludGFpbi4gV2UgYmVsaWV2ZSB0aGUgYmVuZWZp
dCBkb2Vzbid0IGp1c3RpZnkgdGhlCitjb3N0LgorCitGaW5hbGx5LCB3aXRoIHRoZSBncm93dGgg
b2YgdGhlIGdNb2NrIG1hdGNoZXIgbGlicmFyeSwgd2UgYXJlIGVuY291cmFnaW5nIHBlb3BsZQor
dG8gdXNlIHRoZSB1bmlmaWVkIGBFWFBFQ1RfVEhBVCh2YWx1ZSwgbWF0Y2hlcilgIHN5bnRheCBt
b3JlIG9mdGVuIGluIHRlc3RzLiBPbmUKK3NpZ25pZmljYW50IGFkdmFudGFnZSBvZiB0aGUgbWF0
Y2hlciBhcHByb2FjaCBpcyB0aGF0IG1hdGNoZXJzIGNhbiBiZSBlYXNpbHkKK2NvbWJpbmVkIHRv
IGZvcm0gbmV3IG1hdGNoZXJzLCB3aGlsZSB0aGUgYEVYUEVDVF9ORWAsIGV0YywgbWFjcm9zIGNh
bm5vdCBiZQorZWFzaWx5IGNvbWJpbmVkLiBUaGVyZWZvcmUgd2Ugd2FudCB0byBpbnZlc3QgbW9y
ZSBpbiB0aGUgbWF0Y2hlcnMgdGhhbiBpbiB0aGUKK2BFWFBFQ1RfWFgoKWAgbWFjcm9zLgorCisj
IyBJIG5lZWQgdG8gdGVzdCB0aGF0IGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgb2YgYW4gaW50
ZXJmYWNlIHNhdGlzZnkgc29tZSBjb21tb24gcmVxdWlyZW1lbnRzLiBTaG91bGQgSSB1c2UgdHlw
ZWQgdGVzdHMgb3IgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cz8KKworRm9yIHRlc3RpbmcgdmFy
aW91cyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHNhbWUgaW50ZXJmYWNlLCBlaXRoZXIgdHlwZWQg
dGVzdHMgb3IKK3ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgY2FuIGdldCBpdCBkb25lLiBJdCdz
IHJlYWxseSB1cCB0byB5b3UgdGhlIHVzZXIgdG8KK2RlY2lkZSB3aGljaCBpcyBtb3JlIGNvbnZl
bmllbnQgZm9yIHlvdSwgZGVwZW5kaW5nIG9uIHlvdXIgcGFydGljdWxhciBjYXNlLiBTb21lCity
b3VnaCBndWlkZWxpbmVzOgorCisqICAgVHlwZWQgdGVzdHMgY2FuIGJlIGVhc2llciB0byB3cml0
ZSBpZiBpbnN0YW5jZXMgb2YgdGhlIGRpZmZlcmVudAorICAgIGltcGxlbWVudGF0aW9ucyBjYW4g
YmUgY3JlYXRlZCB0aGUgc2FtZSB3YXksIG1vZHVsbyB0aGUgdHlwZS4gRm9yIGV4YW1wbGUsCisg
ICAgaWYgYWxsIHRoZXNlIGltcGxlbWVudGF0aW9ucyBoYXZlIGEgcHVibGljIGRlZmF1bHQgY29u
c3RydWN0b3IgKHN1Y2ggdGhhdAorICAgIHlvdSBjYW4gd3JpdGUgYG5ldyBUeXBlUGFyYW1gKSwg
b3IgaWYgdGhlaXIgZmFjdG9yeSBmdW5jdGlvbnMgaGF2ZSB0aGUgc2FtZQorICAgIGZvcm0gKGUu
Zy4gYENyZWF0ZUluc3RhbmNlPFR5cGVQYXJhbT4oKWApLgorKiAgIFZhbHVlLXBhcmFtZXRlcml6
ZWQgdGVzdHMgY2FuIGJlIGVhc2llciB0byB3cml0ZSBpZiB5b3UgbmVlZCBkaWZmZXJlbnQgY29k
ZQorICAgIHBhdHRlcm5zIHRvIGNyZWF0ZSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zJyBpbnN0
YW5jZXMsIGUuZy4gYG5ldyBGb29gIHZzCisgICAgYG5ldyBCYXIoNSlgLiBUbyBhY2NvbW1vZGF0
ZSBmb3IgdGhlIGRpZmZlcmVuY2VzLCB5b3UgY2FuIHdyaXRlIGZhY3RvcnkKKyAgICBmdW5jdGlv
biB3cmFwcGVycyBhbmQgcGFzcyB0aGVzZSBmdW5jdGlvbiBwb2ludGVycyB0byB0aGUgdGVzdHMg
YXMgdGhlaXIKKyAgICBwYXJhbWV0ZXJzLgorKiAgIFdoZW4gYSB0eXBlZCB0ZXN0IGZhaWxzLCB0
aGUgb3V0cHV0IGluY2x1ZGVzIHRoZSBuYW1lIG9mIHRoZSB0eXBlLCB3aGljaCBjYW4KKyAgICBo
ZWxwIHlvdSBxdWlja2x5IGlkZW50aWZ5IHdoaWNoIGltcGxlbWVudGF0aW9uIGlzIHdyb25nLiBW
YWx1ZS1wYXJhbWV0ZXJpemVkCisgICAgdGVzdHMgY2Fubm90IGRvIHRoaXMsIHNvIHRoZXJlIHlv
dSdsbCBoYXZlIHRvIGxvb2sgYXQgdGhlIGl0ZXJhdGlvbiBudW1iZXIKKyAgICB0byBrbm93IHdo
aWNoIGltcGxlbWVudGF0aW9uIHRoZSBmYWlsdXJlIGlzIGZyb20sIHdoaWNoIGlzIGxlc3MgZGly
ZWN0LgorKiAgIElmIHlvdSBtYWtlIGEgbWlzdGFrZSB3cml0aW5nIGEgdHlwZWQgdGVzdCwgdGhl
IGNvbXBpbGVyIGVycm9ycyBjYW4gYmUKKyAgICBoYXJkZXIgdG8gZGlnZXN0LCBhcyB0aGUgY29k
ZSBpcyB0ZW1wbGF0aXplZC4KKyogICBXaGVuIHVzaW5nIHR5cGVkIHRlc3RzLCB5b3UgbmVlZCB0
byBtYWtlIHN1cmUgeW91IGFyZSB0ZXN0aW5nIGFnYWluc3QgdGhlCisgICAgaW50ZXJmYWNlIHR5
cGUsIG5vdCB0aGUgY29uY3JldGUgdHlwZXMgKGluIG90aGVyIHdvcmRzLCB5b3Ugd2FudCB0byBt
YWtlCisgICAgc3VyZSBgaW1wbGljaXRfY2FzdDxNeUludGVyZmFjZSo+KG15X2NvbmNyZXRlX2lt
cGwpYCB3b3Jrcywgbm90IGp1c3QgdGhhdAorICAgIGBteV9jb25jcmV0ZV9pbXBsYCB3b3Jrcyku
IEl0J3MgbGVzcyBsaWtlbHkgdG8gbWFrZSBtaXN0YWtlcyBpbiB0aGlzIGFyZWEKKyAgICB3aGVu
IHVzaW5nIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCisKK0kgaG9wZSBJIGRpZG4ndCBjb25m
dXNlIHlvdSBtb3JlLiA6LSkgSWYgeW91IGRvbid0IG1pbmQsIEknZCBzdWdnZXN0IHlvdSB0byBn
aXZlCitib3RoIGFwcHJvYWNoZXMgYSB0cnkuIFByYWN0aWNlIGlzIGEgbXVjaCBiZXR0ZXIgd2F5
IHRvIGdyYXNwIHRoZSBzdWJ0bGUKK2RpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHR3byB0b29scy4g
T25jZSB5b3UgaGF2ZSBzb21lIGNvbmNyZXRlIGV4cGVyaWVuY2UsIHlvdQorY2FuIG11Y2ggbW9y
ZSBlYXNpbHkgZGVjaWRlIHdoaWNoIG9uZSB0byB1c2UgdGhlIG5leHQgdGltZS4KKworIyMgTXkg
ZGVhdGggdGVzdHMgYmVjYW1lIHZlcnkgc2xvdyAtIHdoYXQgaGFwcGVuZWQ/CisKK0luIEF1Z3Vz
dCAyMDA4IHdlIGhhZCB0byBzd2l0Y2ggdGhlIGRlZmF1bHQgZGVhdGggdGVzdCBzdHlsZSBmcm9t
IGBmYXN0YCB0bworYHRocmVhZHNhZmVgLCBhcyB0aGUgZm9ybWVyIGlzIG5vIGxvbmdlciBzYWZl
IG5vdyB0aGF0IHRocmVhZGVkIGxvZ2dpbmcgaXMgdGhlCitkZWZhdWx0LiBUaGlzIGNhdXNlZCBt
YW55IGRlYXRoIHRlc3RzIHRvIHNsb3cgZG93bi4gVW5mb3J0dW5hdGVseSB0aGlzIGNoYW5nZQor
d2FzIG5lY2Vzc2FyeS4KKworUGxlYXNlIHJlYWQgW0ZpeGluZyBGYWlsaW5nIERlYXRoIFRlc3Rz
XShkZWF0aF90ZXN0X3N0eWxlcy5tZCkgZm9yIHdoYXQgeW91IGNhbgorZG8uCisKKyMjIEkgZ290
IHNvbWUgcnVuLXRpbWUgZXJyb3JzIGFib3V0IGludmFsaWQgcHJvdG8gZGVzY3JpcHRvcnMgd2hl
biB1c2luZyBgUHJvdG9jb2xNZXNzYWdlRXF1YWxzYC4gSGVscCEKKworKipOb3RlOioqIGBQcm90
b2NvbE1lc3NhZ2VFcXVhbHNgIGFuZCBgUHJvdG9jb2xNZXNzYWdlRXF1aXZgIGFyZSAqZGVwcmVj
YXRlZCoKK25vdy4gUGxlYXNlIHVzZSBgRXF1YWxzUHJvdG9gLCBldGMgaW5zdGVhZC4KKworYFBy
b3RvY29sTWVzc2FnZUVxdWFsc2AgYW5kIGBQcm90b2NvbE1lc3NhZ2VFcXVpdmAgd2VyZSByZWRl
ZmluZWQgcmVjZW50bHkgYW5kCithcmUgbm93IGxlc3MgdG9sZXJhbnQgb24gaW52YWxpZCBwcm90
b2NvbCBidWZmZXIgZGVmaW5pdGlvbnMuIEluIHBhcnRpY3VsYXIsIGlmCit5b3UgaGF2ZSBhIGBm
b28ucHJvdG9gIHRoYXQgZG9lc24ndCBmdWxseSBxdWFsaWZ5IHRoZSB0eXBlIG9mIGEgcHJvdG9j
b2wgbWVzc2FnZQoraXQgcmVmZXJlbmNlcyAoZS5nLiBgbWVzc2FnZTxCYXI+YCB3aGVyZSBpdCBz
aG91bGQgYmUgYG1lc3NhZ2U8YmxhaC5CYXI+YCksIHlvdQord2lsbCBub3cgZ2V0IHJ1bi10aW1l
IGVycm9ycyBsaWtlOgorCitgYGAKKy4uLiBkZXNjcmlwdG9yLmNjOi4uLl0gSW52YWxpZCBwcm90
byBkZXNjcmlwdG9yIGZvciBmaWxlICJwYXRoL3RvL2Zvby5wcm90byI6CisuLi4gZGVzY3JpcHRv
ci5jYzouLi5dICBibGFoLk15TWVzc2FnZS5teV9maWVsZDogIi5CYXIiIGlzIG5vdCBkZWZpbmVk
LgorYGBgCisKK0lmIHlvdSBzZWUgdGhpcywgeW91ciBgLnByb3RvYCBmaWxlIGlzIGJyb2tlbiBh
bmQgbmVlZHMgdG8gYmUgZml4ZWQgYnkgbWFraW5nCit0aGUgdHlwZXMgZnVsbHkgcXVhbGlmaWVk
LiBUaGUgbmV3IGRlZmluaXRpb24gb2YgYFByb3RvY29sTWVzc2FnZUVxdWFsc2AgYW5kCitgUHJv
dG9jb2xNZXNzYWdlRXF1aXZgIGp1c3QgaGFwcGVuIHRvIHJldmVhbCB5b3VyIGJ1Zy4KKworIyMg
TXkgZGVhdGggdGVzdCBtb2RpZmllcyBzb21lIHN0YXRlLCBidXQgdGhlIGNoYW5nZSBzZWVtcyBs
b3N0IGFmdGVyIHRoZSBkZWF0aCB0ZXN0IGZpbmlzaGVzLiBXaHk/CisKK0RlYXRoIHRlc3RzIChg
RVhQRUNUX0RFQVRIYCwgZXRjKSBhcmUgZXhlY3V0ZWQgaW4gYSBzdWItcHJvY2VzcyBzLnQuIHRo
ZQorZXhwZWN0ZWQgY3Jhc2ggd29uJ3Qga2lsbCB0aGUgdGVzdCBwcm9ncmFtIChpLmUuIHRoZSBw
YXJlbnQgcHJvY2VzcykuIEFzIGEKK3Jlc3VsdCwgYW55IGluLW1lbW9yeSBzaWRlIGVmZmVjdHMg
dGhleSBpbmN1ciBhcmUgb2JzZXJ2YWJsZSBpbiB0aGVpciByZXNwZWN0aXZlCitzdWItcHJvY2Vz
c2VzLCBidXQgbm90IGluIHRoZSBwYXJlbnQgcHJvY2Vzcy4gWW91IGNhbiB0aGluayBvZiB0aGVt
IGFzIHJ1bm5pbmcKK2luIGEgcGFyYWxsZWwgdW5pdmVyc2UsIG1vcmUgb3IgbGVzcy4KKworSW4g
cGFydGljdWxhciwgaWYgeW91IHVzZSBbZ01vY2tdKC4uLy4uL2dvb2dsZW1vY2spIGFuZCB0aGUg
ZGVhdGggdGVzdCBzdGF0ZW1lbnQKK2ludm9rZXMgc29tZSBtb2NrIG1ldGhvZHMsIHRoZSBwYXJl
bnQgcHJvY2VzcyB3aWxsIHRoaW5rIHRoZSBjYWxscyBoYXZlIG5ldmVyCitvY2N1cnJlZC4gVGhl
cmVmb3JlLCB5b3UgbWF5IHdhbnQgdG8gbW92ZSB5b3VyIGBFWFBFQ1RfQ0FMTGAgc3RhdGVtZW50
cyBpbnNpZGUKK3RoZSBgRVhQRUNUX0RFQVRIYCBtYWNyby4KKworIyMgRVhQRUNUX0VRKGh0b25s
KGJsYWgpLCBibGFoX2JsYWgpIGdlbmVyYXRlcyB3ZWlyZCBjb21waWxlciBlcnJvcnMgaW4gb3B0
IG1vZGUuIElzIHRoaXMgYSBnb29nbGV0ZXN0IGJ1Zz8KKworQWN0dWFsbHksIHRoZSBidWcgaXMg
aW4gYGh0b25sKClgLgorCitBY2NvcmRpbmcgdG8gYCdtYW4gaHRvbmwnYCwgYGh0b25sKClgIGlz
IGEgKmZ1bmN0aW9uKiwgd2hpY2ggbWVhbnMgaXQncyB2YWxpZCB0bwordXNlIGBodG9ubGAgYXMg
YSBmdW5jdGlvbiBwb2ludGVyLiBIb3dldmVyLCBpbiBvcHQgbW9kZSBgaHRvbmwoKWAgaXMgZGVm
aW5lZCBhcworYSAqbWFjcm8qLCB3aGljaCBicmVha3MgdGhpcyB1c2FnZS4KKworV29yc2UsIHRo
ZSBtYWNybyBkZWZpbml0aW9uIG9mIGBodG9ubCgpYCB1c2VzIGEgYGdjY2AgZXh0ZW5zaW9uIGFu
ZCBpcyAqbm90Kgorc3RhbmRhcmQgQysrLiBUaGF0IGhhY2t5IGltcGxlbWVudGF0aW9uIGhhcyBz
b21lIGFkIGhvYyBsaW1pdGF0aW9ucy4gSW4KK3BhcnRpY3VsYXIsIGl0IHByZXZlbnRzIHlvdSBm
cm9tIHdyaXRpbmcgYEZvbzxzaXplb2YoaHRvbmwoeCkpPigpYCwgd2hlcmUgYEZvb2AKK2lzIGEg
dGVtcGxhdGUgdGhhdCBoYXMgYW4gaW50ZWdyYWwgYXJndW1lbnQuCisKK1RoZSBpbXBsZW1lbnRh
dGlvbiBvZiBgRVhQRUNUX0VRKGEsIGIpYCB1c2VzIGBzaXplb2YoLi4uIGEgLi4uKWAgaW5zaWRl
IGEKK3RlbXBsYXRlIGFyZ3VtZW50LCBhbmQgdGh1cyBkb2Vzbid0IGNvbXBpbGUgaW4gb3B0IG1v
ZGUgd2hlbiBgYWAgY29udGFpbnMgYSBjYWxsCit0byBgaHRvbmwoKWAuIEl0IGlzIGRpZmZpY3Vs
dCB0byBtYWtlIGBFWFBFQ1RfRVFgIGJ5cGFzcyB0aGUgYGh0b25sKClgIGJ1ZywgYXMKK3RoZSBz
b2x1dGlvbiBtdXN0IHdvcmsgd2l0aCBkaWZmZXJlbnQgY29tcGlsZXJzIG9uIHZhcmlvdXMgcGxh
dGZvcm1zLgorCitgaHRvbmwoKWAgaGFzIHNvbWUgb3RoZXIgcHJvYmxlbXMgYXMgZGVzY3JpYmVk
IGluIGAvL3V0aWwvZW5kaWFuL2VuZGlhbi5oYCwKK3doaWNoIGRlZmluZXMgYGdodG9ubCgpYCB0
byByZXBsYWNlIGl0LiBgZ2h0b25sKClgIGRvZXMgdGhlIHNhbWUgdGhpbmcgYGh0b25sKClgCitk
b2VzLCBvbmx5IHdpdGhvdXQgaXRzIHByb2JsZW1zLiBXZSBzdWdnZXN0IHlvdSB0byB1c2UgYGdo
dG9ubCgpYCBpbnN0ZWFkIG9mCitgaHRvbmwoKWAsIGJvdGggaW4geW91ciB0ZXN0cyBhbmQgcHJv
ZHVjdGlvbiBjb2RlLgorCitgLy91dGlsL2VuZGlhbi9lbmRpYW4uaGAgYWxzbyBkZWZpbmVzIGBn
aHRvbnMoKWAsIHdoaWNoIHNvbHZlcyBzaW1pbGFyIHByb2JsZW1zCitpbiBgaHRvbnMoKWAuCisK
K0Rvbid0IGZvcmdldCB0byBhZGQgYC8vdXRpbC9lbmRpYW5gIHRvIHRoZSBsaXN0IG9mIGRlcGVu
ZGVuY2llcyBpbiB0aGUgYEJVSUxEYAorZmlsZSB3aGVyZXZlciBgZ2h0b25sKClgIGFuZCBgZ2h0
b25zKClgIGFyZSB1c2VkLiBUaGUgbGlicmFyeSBjb25zaXN0cyBvZiBhCitzaW5nbGUgaGVhZGVy
IGZpbGUgYW5kIHdpbGwgbm90IGJsb2F0IHlvdXIgYmluYXJ5LgorCisjIyBUaGUgY29tcGlsZXIg
Y29tcGxhaW5zIGFib3V0ICJ1bmRlZmluZWQgcmVmZXJlbmNlcyIgdG8gc29tZSBzdGF0aWMgY29u
c3QgbWVtYmVyIHZhcmlhYmxlcywgYnV0IEkgZGlkIGRlZmluZSB0aGVtIGluIHRoZSBjbGFzcyBi
b2R5LiBXaGF0J3Mgd3Jvbmc/CisKK0lmIHlvdXIgY2xhc3MgaGFzIGEgc3RhdGljIGRhdGEgbWVt
YmVyOgorCitgYGBjKysKKy8vIGZvby5oCitjbGFzcyBGb28geworICAuLi4KKyAgc3RhdGljIGNv
bnN0IGludCBrQmFyID0gMTAwOworfTsKK2BgYAorCitZb3UgYWxzbyBuZWVkIHRvIGRlZmluZSBp
dCAqb3V0c2lkZSogb2YgdGhlIGNsYXNzIGJvZHkgaW4gYGZvby5jY2A6CisKK2BgYGMrKworY29u
c3QgaW50IEZvbzo6a0JhcjsgIC8vIE5vIGluaXRpYWxpemVyIGhlcmUuCitgYGAKKworT3RoZXJ3
aXNlIHlvdXIgY29kZSBpcyAqKmludmFsaWQgQysrKiosIGFuZCBtYXkgYnJlYWsgaW4gdW5leHBl
Y3RlZCB3YXlzLiBJbgorcGFydGljdWxhciwgdXNpbmcgaXQgaW4gZ29vZ2xldGVzdCBjb21wYXJp
c29uIGFzc2VydGlvbnMgKGBFWFBFQ1RfRVFgLCBldGMpIHdpbGwKK2dlbmVyYXRlIGFuICJ1bmRl
ZmluZWQgcmVmZXJlbmNlIiBsaW5rZXIgZXJyb3IuIFRoZSBmYWN0IHRoYXQgIml0IHVzZWQgdG8g
d29yayIKK2RvZXNuJ3QgbWVhbiBpdCdzIHZhbGlkLiBJdCBqdXN0IG1lYW5zIHRoYXQgeW91IHdl
cmUgbHVja3kuIDotKQorCisjIyBDYW4gSSBkZXJpdmUgYSB0ZXN0IGZpeHR1cmUgZnJvbSBhbm90
aGVyPworCitZZXMuCisKK0VhY2ggdGVzdCBmaXh0dXJlIGhhcyBhIGNvcnJlc3BvbmRpbmcgYW5k
IHNhbWUgbmFtZWQgdGVzdCBjYXNlLiBUaGlzIG1lYW5zIG9ubHkKK29uZSB0ZXN0IGNhc2UgY2Fu
IHVzZSBhIHBhcnRpY3VsYXIgZml4dHVyZS4gU29tZXRpbWVzLCBob3dldmVyLCBtdWx0aXBsZSB0
ZXN0CitjYXNlcyBtYXkgd2FudCB0byB1c2UgdGhlIHNhbWUgb3Igc2xpZ2h0bHkgZGlmZmVyZW50
IGZpeHR1cmVzLiBGb3IgZXhhbXBsZSwgeW91CittYXkgd2FudCB0byBtYWtlIHN1cmUgdGhhdCBh
bGwgb2YgYSBHVUkgbGlicmFyeSdzIHRlc3QgY2FzZXMgZG9uJ3QgbGVhaworaW1wb3J0YW50IHN5
c3RlbSByZXNvdXJjZXMgbGlrZSBmb250cyBhbmQgYnJ1c2hlcy4KKworSW4gZ29vZ2xldGVzdCwg
eW91IHNoYXJlIGEgZml4dHVyZSBhbW9uZyB0ZXN0IGNhc2VzIGJ5IHB1dHRpbmcgdGhlIHNoYXJl
ZCBsb2dpYworaW4gYSBiYXNlIHRlc3QgZml4dHVyZSwgdGhlbiBkZXJpdmluZyBmcm9tIHRoYXQg
YmFzZSBhIHNlcGFyYXRlIGZpeHR1cmUgZm9yIGVhY2gKK3Rlc3QgY2FzZSB0aGF0IHdhbnRzIHRv
IHVzZSB0aGlzIGNvbW1vbiBsb2dpYy4gWW91IHRoZW4gdXNlIGBURVNUX0YoKWAgdG8gd3JpdGUK
K3Rlc3RzIHVzaW5nIGVhY2ggZGVyaXZlZCBmaXh0dXJlLgorCitUeXBpY2FsbHksIHlvdXIgY29k
ZSBsb29rcyBsaWtlIHRoaXM6CisKK2BgYGMrKworLy8gRGVmaW5lcyBhIGJhc2UgdGVzdCBmaXh0
dXJlLgorY2xhc3MgQmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0
ZWQ6CisgIC4uLgorfTsKKworLy8gRGVyaXZlcyBhIGZpeHR1cmUgRm9vVGVzdCBmcm9tIEJhc2VU
ZXN0LgorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCB7CisgcHJvdGVjdGVkOgorICB2
b2lkIFNldFVwKCkgb3ZlcnJpZGUgeworICAgIEJhc2VUZXN0OjpTZXRVcCgpOyAgLy8gU2V0cyB1
cCB0aGUgYmFzZSBmaXh0dXJlIGZpcnN0LgorICAgIC4uLiBhZGRpdGlvbmFsIHNldC11cCB3b3Jr
IC4uLgorICB9CisKKyAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlIHsKKyAgICAuLi4gY2xlYW4t
dXAgd29yayBmb3IgRm9vVGVzdCAuLi4KKyAgICBCYXNlVGVzdDo6VGVhckRvd24oKTsgIC8vIFJl
bWVtYmVyIHRvIHRlYXIgZG93biB0aGUgYmFzZSBmaXh0dXJlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBhZnRlciBjbGVhbmluZyB1cCBGb29UZXN0IQorICB9CisKKyAgLi4uIGZ1bmN0
aW9ucyBhbmQgdmFyaWFibGVzIGZvciBGb29UZXN0IC4uLgorfTsKKworLy8gVGVzdHMgdGhhdCB1
c2UgdGhlIGZpeHR1cmUgRm9vVGVzdC4KK1RFU1RfRihGb29UZXN0LCBCYXIpIHsgLi4uIH0KK1RF
U1RfRihGb29UZXN0LCBCYXopIHsgLi4uIH0KKworLi4uIGFkZGl0aW9uYWwgZml4dHVyZXMgZGVy
aXZlZCBmcm9tIEJhc2VUZXN0IC4uLgorYGBgCisKK0lmIG5lY2Vzc2FyeSwgeW91IGNhbiBjb250
aW51ZSB0byBkZXJpdmUgdGVzdCBmaXh0dXJlcyBmcm9tIGEgZGVyaXZlZCBmaXh0dXJlLgorZ29v
Z2xldGVzdCBoYXMgbm8gbGltaXQgb24gaG93IGRlZXAgdGhlIGhpZXJhcmNoeSBjYW4gYmUuCisK
K0ZvciBhIGNvbXBsZXRlIGV4YW1wbGUgdXNpbmcgZGVyaXZlZCB0ZXN0IGZpeHR1cmVzLCBzZWUg
W2dvb2dsZXRlc3QKK3NhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0
L2Jsb2IvbWFzdGVyL2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjKQorCisj
IyBNeSBjb21waWxlciBjb21wbGFpbnMgInZvaWQgdmFsdWUgbm90IGlnbm9yZWQgYXMgaXQgb3Vn
aHQgdG8gYmUuIiBXaGF0IGRvZXMgdGhpcyBtZWFuPworCitZb3UncmUgcHJvYmFibHkgdXNpbmcg
YW4gYEFTU0VSVF8qKClgIGluIGEgZnVuY3Rpb24gdGhhdCBkb2Vzbid0IHJldHVybiBgdm9pZGAu
CitgQVNTRVJUXyooKWAgY2FuIG9ubHkgYmUgdXNlZCBpbiBgdm9pZGAgZnVuY3Rpb25zLCBkdWUg
dG8gZXhjZXB0aW9ucyBiZWluZworZGlzYWJsZWQgYnkgb3VyIGJ1aWxkIHN5c3RlbS4gUGxlYXNl
IHNlZSBtb3JlIGRldGFpbHMKK1toZXJlXShhZHZhbmNlZC5tZCNhc3NlcnRpb24tcGxhY2VtZW50
KS4KKworIyMgTXkgZGVhdGggdGVzdCBoYW5ncyAob3Igc2VnLWZhdWx0cykuIEhvdyBkbyBJIGZp
eCBpdD8KKworSW4gZ29vZ2xldGVzdCwgZGVhdGggdGVzdHMgYXJlIHJ1biBpbiBhIGNoaWxkIHBy
b2Nlc3MgYW5kIHRoZSB3YXkgdGhleSB3b3JrIGlzCitkZWxpY2F0ZS4gVG8gd3JpdGUgZGVhdGgg
dGVzdHMgeW91IHJlYWxseSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgd29yay4KK1BsZWFz
ZSBtYWtlIHN1cmUgeW91IGhhdmUgcmVhZCBbdGhpc10oYWR2YW5jZWQubWQjaG93LWl0LXdvcmtz
KS4KKworSW4gcGFydGljdWxhciwgZGVhdGggdGVzdHMgZG9uJ3QgbGlrZSBoYXZpbmcgbXVsdGlw
bGUgdGhyZWFkcyBpbiB0aGUgcGFyZW50Citwcm9jZXNzLiBTbyB0aGUgZmlyc3QgdGhpbmcgeW91
IGNhbiB0cnkgaXMgdG8gZWxpbWluYXRlIGNyZWF0aW5nIHRocmVhZHMgb3V0c2lkZQorb2YgYEVY
UEVDVF9ERUFUSCgpYC4gRm9yIGV4YW1wbGUsIHlvdSBtYXkgd2FudCB0byB1c2UgW21vY2tzXSgu
Li8uLi9nb29nbGVtb2NrKQorb3IgZmFrZSBvYmplY3RzIGluc3RlYWQgb2YgcmVhbCBvbmVzIGlu
IHlvdXIgdGVzdHMuCisKK1NvbWV0aW1lcyB0aGlzIGlzIGltcG9zc2libGUgYXMgc29tZSBsaWJy
YXJ5IHlvdSBtdXN0IHVzZSBtYXkgYmUgY3JlYXRpbmcKK3RocmVhZHMgYmVmb3JlIGBtYWluKClg
IGlzIGV2ZW4gcmVhY2hlZC4gSW4gdGhpcyBjYXNlLCB5b3UgY2FuIHRyeSB0byBtaW5pbWl6ZQor
dGhlIGNoYW5jZSBvZiBjb25mbGljdHMgYnkgZWl0aGVyIG1vdmluZyBhcyBtYW55IGFjdGl2aXRp
ZXMgYXMgcG9zc2libGUgaW5zaWRlCitgRVhQRUNUX0RFQVRIKClgIChpbiB0aGUgZXh0cmVtZSBj
YXNlLCB5b3Ugd2FudCB0byBtb3ZlIGV2ZXJ5dGhpbmcgaW5zaWRlKSwgb3IKK2xlYXZpbmcgYXMg
ZmV3IHRoaW5ncyBhcyBwb3NzaWJsZSBpbiBpdC4gQWxzbywgeW91IGNhbiB0cnkgdG8gc2V0IHRo
ZSBkZWF0aCB0ZXN0CitzdHlsZSB0byBgInRocmVhZHNhZmUiYCwgd2hpY2ggaXMgc2FmZXIgYnV0
IHNsb3dlciwgYW5kIHNlZSBpZiBpdCBoZWxwcy4KKworSWYgeW91IGdvIHdpdGggdGhyZWFkLXNh
ZmUgZGVhdGggdGVzdHMsIHJlbWVtYmVyIHRoYXQgdGhleSByZXJ1biB0aGUgdGVzdAorcHJvZ3Jh
bSBmcm9tIHRoZSBiZWdpbm5pbmcgaW4gdGhlIGNoaWxkIHByb2Nlc3MuIFRoZXJlZm9yZSBtYWtl
IHN1cmUgeW91cgorcHJvZ3JhbSBjYW4gcnVuIHNpZGUtYnktc2lkZSB3aXRoIGl0c2VsZiBhbmQg
aXMgZGV0ZXJtaW5pc3RpYy4KKworSW4gdGhlIGVuZCwgdGhpcyBib2lscyBkb3duIHRvIGdvb2Qg
Y29uY3VycmVudCBwcm9ncmFtbWluZy4gWW91IGhhdmUgdG8gbWFrZQorc3VyZSB0aGF0IHRoZXJl
IGlzIG5vIHJhY2UgY29uZGl0aW9ucyBvciBkZWFkIGxvY2tzIGluIHlvdXIgcHJvZ3JhbS4gTm8g
c2lsdmVyCitidWxsZXQgLSBzb3JyeSEKKworIyMgU2hvdWxkIEkgdXNlIHRoZSBjb25zdHJ1Y3Rv
ci9kZXN0cnVjdG9yIG9mIHRoZSB0ZXN0IGZpeHR1cmUgb3IgU2V0VXAoKS9UZWFyRG93bigpPwor
CitUaGUgZmlyc3QgdGhpbmcgdG8gcmVtZW1iZXIgaXMgdGhhdCBnb29nbGV0ZXN0IGRvZXMgKipu
b3QqKiByZXVzZSB0aGUgc2FtZSB0ZXN0CitmaXh0dXJlIG9iamVjdCBhY3Jvc3MgbXVsdGlwbGUg
dGVzdHMuIEZvciBlYWNoIGBURVNUX0ZgLCBnb29nbGV0ZXN0IHdpbGwgY3JlYXRlCithICoqZnJl
c2gqKiB0ZXN0IGZpeHR1cmUgb2JqZWN0LCBpbW1lZGlhdGVseSBjYWxsIGBTZXRVcCgpYCwgcnVu
IHRoZSB0ZXN0IGJvZHksCitjYWxsIGBUZWFyRG93bigpYCwgYW5kIHRoZW4gZGVsZXRlIHRoZSB0
ZXN0IGZpeHR1cmUgb2JqZWN0LgorCitXaGVuIHlvdSBuZWVkIHRvIHdyaXRlIHBlci10ZXN0IHNl
dC11cCBhbmQgdGVhci1kb3duIGxvZ2ljLCB5b3UgaGF2ZSB0aGUgY2hvaWNlCitiZXR3ZWVuIHVz
aW5nIHRoZSB0ZXN0IGZpeHR1cmUgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBvciBgU2V0VXAoKS9U
ZWFyRG93bigpYC4KK1RoZSBmb3JtZXIgaXMgdXN1YWxseSBwcmVmZXJyZWQsIGFzIGl0IGhhcyB0
aGUgZm9sbG93aW5nIGJlbmVmaXRzOgorCisqICAgQnkgaW5pdGlhbGl6aW5nIGEgbWVtYmVyIHZh
cmlhYmxlIGluIHRoZSBjb25zdHJ1Y3Rvciwgd2UgaGF2ZSB0aGUgb3B0aW9uIHRvCisgICAgbWFr
ZSBpdCBgY29uc3RgLCB3aGljaCBoZWxwcyBwcmV2ZW50IGFjY2lkZW50YWwgY2hhbmdlcyB0byBp
dHMgdmFsdWUgYW5kCisgICAgbWFrZXMgdGhlIHRlc3RzIG1vcmUgb2J2aW91c2x5IGNvcnJlY3Qu
CisqICAgSW4gY2FzZSB3ZSBuZWVkIHRvIHN1YmNsYXNzIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3Ms
IHRoZSBzdWJjbGFzcycKKyAgICBjb25zdHJ1Y3RvciBpcyBndWFyYW50ZWVkIHRvIGNhbGwgdGhl
IGJhc2UgY2xhc3MnIGNvbnN0cnVjdG9yICpmaXJzdCosIGFuZAorICAgIHRoZSBzdWJjbGFzcycg
ZGVzdHJ1Y3RvciBpcyBndWFyYW50ZWVkIHRvIGNhbGwgdGhlIGJhc2UgY2xhc3MnIGRlc3RydWN0
b3IKKyAgICAqYWZ0ZXJ3YXJkKi4gV2l0aCBgU2V0VXAoKS9UZWFyRG93bigpYCwgYSBzdWJjbGFz
cyBtYXkgbWFrZSB0aGUgbWlzdGFrZSBvZgorICAgIGZvcmdldHRpbmcgdG8gY2FsbCB0aGUgYmFz
ZSBjbGFzcycgYFNldFVwKCkvVGVhckRvd24oKWAgb3IgY2FsbCB0aGVtIGF0IHRoZQorICAgIHdy
b25nIHRpbWUuCisKK1lvdSBtYXkgc3RpbGwgd2FudCB0byB1c2UgYFNldFVwKCkvVGVhckRvd24o
KWAgaW4gdGhlIGZvbGxvd2luZyByYXJlIGNhc2VzOgorCisqICAgSW4gdGhlIGJvZHkgb2YgYSBj
b25zdHJ1Y3RvciAob3IgZGVzdHJ1Y3RvciksIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHVzZSB0aGUK
KyAgICBgQVNTRVJUX3h4YCBtYWNyb3MuIFRoZXJlZm9yZSwgaWYgdGhlIHNldC11cCBvcGVyYXRp
b24gY291bGQgY2F1c2UgYSBmYXRhbAorICAgIHRlc3QgZmFpbHVyZSB0aGF0IHNob3VsZCBwcmV2
ZW50IHRoZSB0ZXN0IGZyb20gcnVubmluZywgaXQncyBuZWNlc3NhcnkgdG8KKyAgICB1c2UgYSBg
Q0hFQ0tgIG1hY3JvIG9yIHRvIHVzZSBgU2V0VXAoKWAgaW5zdGVhZCBvZiBhIGNvbnN0cnVjdG9y
LgorKiAgIElmIHRoZSB0ZWFyLWRvd24gb3BlcmF0aW9uIGNvdWxkIHRocm93IGFuIGV4Y2VwdGlv
biwgeW91IG11c3QgdXNlCisgICAgYFRlYXJEb3duKClgIGFzIG9wcG9zZWQgdG8gdGhlIGRlc3Ry
dWN0b3IsIGFzIHRocm93aW5nIGluIGEgZGVzdHJ1Y3RvciBsZWFkcworICAgIHRvIHVuZGVmaW5l
ZCBiZWhhdmlvciBhbmQgdXN1YWxseSB3aWxsIGtpbGwgeW91ciBwcm9ncmFtIHJpZ2h0IGF3YXku
IE5vdGUKKyAgICB0aGF0IG1hbnkgc3RhbmRhcmQgbGlicmFyaWVzIChsaWtlIFNUTCkgbWF5IHRo
cm93IHdoZW4gZXhjZXB0aW9ucyBhcmUKKyAgICBlbmFibGVkIGluIHRoZSBjb21waWxlci4gVGhl
cmVmb3JlIHlvdSBzaG91bGQgcHJlZmVyIGBUZWFyRG93bigpYCBpZiB5b3UKKyAgICB3YW50IHRv
IHdyaXRlIHBvcnRhYmxlIHRlc3RzIHRoYXQgd29yayB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9u
cy4KKyogICBUaGUgZ29vZ2xldGVzdCB0ZWFtIGlzIGNvbnNpZGVyaW5nIG1ha2luZyB0aGUgYXNz
ZXJ0aW9uIG1hY3JvcyB0aHJvdyBvbgorICAgIHBsYXRmb3JtcyB3aGVyZSBleGNlcHRpb25zIGFy
ZSBlbmFibGVkIChlLmcuIFdpbmRvd3MsIE1hYyBPUywgYW5kIExpbnV4CisgICAgY2xpZW50LXNp
ZGUpLCB3aGljaCB3aWxsIGVsaW1pbmF0ZSB0aGUgbmVlZCBmb3IgdGhlIHVzZXIgdG8gcHJvcGFn
YXRlCisgICAgZmFpbHVyZXMgZnJvbSBhIHN1YnJvdXRpbmUgdG8gaXRzIGNhbGxlci4gVGhlcmVm
b3JlLCB5b3Ugc2hvdWxkbid0IHVzZQorICAgIGdvb2dsZXRlc3QgYXNzZXJ0aW9ucyBpbiBhIGRl
c3RydWN0b3IgaWYgeW91ciBjb2RlIGNvdWxkIHJ1biBvbiBzdWNoIGEKKyAgICBwbGF0Zm9ybS4K
KyogICBJbiBhIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IsIHlvdSBjYW5ub3QgbWFrZSBhIHZp
cnR1YWwgZnVuY3Rpb24gY2FsbCBvbgorICAgIHRoaXMgb2JqZWN0LiAoWW91IGNhbiBjYWxsIGEg
bWV0aG9kIGRlY2xhcmVkIGFzIHZpcnR1YWwsIGJ1dCBpdCB3aWxsIGJlCisgICAgc3RhdGljYWxs
eSBib3VuZC4pIFRoZXJlZm9yZSwgaWYgeW91IG5lZWQgdG8gY2FsbCBhIG1ldGhvZCB0aGF0IHdp
bGwgYmUKKyAgICBvdmVycmlkZGVuIGluIGEgZGVyaXZlZCBjbGFzcywgeW91IGhhdmUgdG8gdXNl
IGBTZXRVcCgpL1RlYXJEb3duKClgLgorCisKKyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgIm5v
IG1hdGNoaW5nIGZ1bmN0aW9uIHRvIGNhbGwiIHdoZW4gSSB1c2UgQVNTRVJUX1BSRUQqLiBIb3cg
ZG8gSSBmaXggaXQ/CisKK0lmIHRoZSBwcmVkaWNhdGUgZnVuY3Rpb24geW91IHVzZSBpbiBgQVNT
RVJUX1BSRUQqYCBvciBgRVhQRUNUX1BSRUQqYCBpcworb3ZlcmxvYWRlZCBvciBhIHRlbXBsYXRl
LCB0aGUgY29tcGlsZXIgd2lsbCBoYXZlIHRyb3VibGUgZmlndXJpbmcgb3V0IHdoaWNoCitvdmVy
bG9hZGVkIHZlcnNpb24gaXQgc2hvdWxkIHVzZS4gYEFTU0VSVF9QUkVEX0ZPUk1BVCpgIGFuZAor
YEVYUEVDVF9QUkVEX0ZPUk1BVCpgIGRvbid0IGhhdmUgdGhpcyBwcm9ibGVtLgorCitJZiB5b3Ug
c2VlIHRoaXMgZXJyb3IsIHlvdSBtaWdodCB3YW50IHRvIHN3aXRjaCB0bworYChBU1NFUlR8RVhQ
RUNUKV9QUkVEX0ZPUk1BVCpgLCB3aGljaCB3aWxsIGFsc28gZ2l2ZSB5b3UgYSBiZXR0ZXIgZmFp
bHVyZQorbWVzc2FnZS4gSWYsIGhvd2V2ZXIsIHRoYXQgaXMgbm90IGFuIG9wdGlvbiwgeW91IGNh
biByZXNvbHZlIHRoZSBwcm9ibGVtIGJ5CitleHBsaWNpdGx5IHRlbGxpbmcgdGhlIGNvbXBpbGVy
IHdoaWNoIHZlcnNpb24gdG8gcGljay4KKworRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhdmUK
KworYGBgYysrCitib29sIElzUG9zaXRpdmUoaW50IG4pIHsKKyAgcmV0dXJuIG4gPiAwOworfQor
Citib29sIElzUG9zaXRpdmUoZG91YmxlIHgpIHsKKyAgcmV0dXJuIHggPiAwOworfQorYGBgCisK
K3lvdSB3aWxsIGdldCBhIGNvbXBpbGVyIGVycm9yIGlmIHlvdSB3cml0ZQorCitgYGBjKysKK0VY
UEVDVF9QUkVEMShJc1Bvc2l0aXZlLCA1KTsKK2BgYAorCitIb3dldmVyLCB0aGlzIHdpbGwgd29y
azoKKworYGBgYysrCitFWFBFQ1RfUFJFRDEoc3RhdGljX2Nhc3Q8Ym9vbCAoKikoaW50KT4oSXNQ
b3NpdGl2ZSksIDUpOworYGBgCisKKyhUaGUgc3R1ZmYgaW5zaWRlIHRoZSBhbmdsZWQgYnJhY2tl
dHMgZm9yIHRoZSBgc3RhdGljX2Nhc3RgIG9wZXJhdG9yIGlzIHRoZSB0eXBlCitvZiB0aGUgZnVu
Y3Rpb24gcG9pbnRlciBmb3IgdGhlIGBpbnRgLXZlcnNpb24gb2YgYElzUG9zaXRpdmUoKWAuKQor
CitBcyBhbm90aGVyIGV4YW1wbGUsIHdoZW4geW91IGhhdmUgYSB0ZW1wbGF0ZSBmdW5jdGlvbgor
CitgYGBjKysKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorYm9vbCBJc05lZ2F0aXZlKFQgeCkgewor
ICByZXR1cm4geCA8IDA7Cit9CitgYGAKKworeW91IGNhbiB1c2UgaXQgaW4gYSBwcmVkaWNhdGUg
YXNzZXJ0aW9uIGxpa2UgdGhpczoKKworYGBgYysrCitBU1NFUlRfUFJFRDEoSXNOZWdhdGl2ZTxp
bnQ+LCAtNSk7CitgYGAKKworVGhpbmdzIGFyZSBtb3JlIGludGVyZXN0aW5nIGlmIHlvdXIgdGVt
cGxhdGUgaGFzIG1vcmUgdGhhbiBvbmUgcGFyYW1ldGVycy4gVGhlCitmb2xsb3dpbmcgd29uJ3Qg
Y29tcGlsZToKKworYGBgYysrCitBU1NFUlRfUFJFRDIoR3JlYXRlclRoYW48aW50LCBpbnQ+LCA1
LCAwKTsKK2BgYAorCithcyB0aGUgQysrIHByZS1wcm9jZXNzb3IgdGhpbmtzIHlvdSBhcmUgZ2l2
aW5nIGBBU1NFUlRfUFJFRDJgIDQgYXJndW1lbnRzLCB3aGljaAoraXMgb25lIG1vcmUgdGhhbiBl
eHBlY3RlZC4gVGhlIHdvcmthcm91bmQgaXMgdG8gd3JhcCB0aGUgcHJlZGljYXRlIGZ1bmN0aW9u
IGluCitwYXJlbnRoZXNlczoKKworYGBgYysrCitBU1NFUlRfUFJFRDIoKEdyZWF0ZXJUaGFuPGlu
dCwgaW50PiksIDUsIDApOworYGBgCisKKworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0
ICJpZ25vcmluZyByZXR1cm4gdmFsdWUiIHdoZW4gSSBjYWxsIFJVTl9BTExfVEVTVFMoKS4gV2h5
PworCitTb21lIHBlb3BsZSBoYWQgYmVlbiBpZ25vcmluZyB0aGUgcmV0dXJuIHZhbHVlIG9mIGBS
VU5fQUxMX1RFU1RTKClgLiBUaGF0IGlzLAoraW5zdGVhZCBvZgorCitgYGBjKysKKyAgcmV0dXJu
IFJVTl9BTExfVEVTVFMoKTsKK2BgYAorCit0aGV5IHdyaXRlCisKK2BgYGMrKworICBSVU5fQUxM
X1RFU1RTKCk7CitgYGAKKworVGhpcyBpcyAqKndyb25nIGFuZCBkYW5nZXJvdXMqKi4gVGhlIHRl
c3Rpbmcgc2VydmljZXMgbmVlZHMgdG8gc2VlIHRoZSByZXR1cm4KK3ZhbHVlIG9mIGBSVU5fQUxM
X1RFU1RTKClgIGluIG9yZGVyIHRvIGRldGVybWluZSBpZiBhIHRlc3QgaGFzIHBhc3NlZC4gSWYg
eW91cgorYG1haW4oKWAgZnVuY3Rpb24gaWdub3JlcyBpdCwgeW91ciB0ZXN0IHdpbGwgYmUgY29u
c2lkZXJlZCBzdWNjZXNzZnVsIGV2ZW4gaWYgaXQKK2hhcyBhIGdvb2dsZXRlc3QgYXNzZXJ0aW9u
IGZhaWx1cmUuIFZlcnkgYmFkLgorCitXZSBoYXZlIGRlY2lkZWQgdG8gZml4IHRoaXMgKHRoYW5r
cyB0byBNaWNoYWVsIENoYXN0YWluIGZvciB0aGUgaWRlYSkuIE5vdywgeW91cgorY29kZSB3aWxs
IG5vIGxvbmdlciBiZSBhYmxlIHRvIGlnbm9yZSBgUlVOX0FMTF9URVNUUygpYCB3aGVuIGNvbXBp
bGVkIHdpdGgKK2BnY2NgLiBJZiB5b3UgZG8gc28sIHlvdSdsbCBnZXQgYSBjb21waWxlciBlcnJv
ci4KKworSWYgeW91IHNlZSB0aGUgY29tcGlsZXIgY29tcGxhaW5pbmcgYWJvdXQgeW91IGlnbm9y
aW5nIHRoZSByZXR1cm4gdmFsdWUgb2YKK2BSVU5fQUxMX1RFU1RTKClgLCB0aGUgZml4IGlzIHNp
bXBsZToganVzdCBtYWtlIHN1cmUgaXRzIHZhbHVlIGlzIHVzZWQgYXMgdGhlCityZXR1cm4gdmFs
dWUgb2YgYG1haW4oKWAuCisKK0J1dCBob3cgY291bGQgd2UgaW50cm9kdWNlIGEgY2hhbmdlIHRo
YXQgYnJlYWtzIGV4aXN0aW5nIHRlc3RzPyBXZWxsLCBpbiB0aGlzCitjYXNlLCB0aGUgY29kZSB3
YXMgYWxyZWFkeSBicm9rZW4gaW4gdGhlIGZpcnN0IHBsYWNlLCBzbyB3ZSBkaWRuJ3QgYnJlYWsg
aXQuIDotKQorCisjIyBNeSBjb21waWxlciBjb21wbGFpbnMgdGhhdCBhIGNvbnN0cnVjdG9yIChv
ciBkZXN0cnVjdG9yKSBjYW5ub3QgcmV0dXJuIGEgdmFsdWUuIFdoYXQncyBnb2luZyBvbj8KKwor
RHVlIHRvIGEgcGVjdWxpYXJpdHkgb2YgQysrLCBpbiBvcmRlciB0byBzdXBwb3J0IHRoZSBzeW50
YXggZm9yIHN0cmVhbWluZworbWVzc2FnZXMgdG8gYW4gYEFTU0VSVF8qYCwgZS5nLgorCitgYGBj
KysKKyAgQVNTRVJUX0VRKDEsIEZvbygpKSA8PCAiYmxhaCBibGFoIiA8PCBmb287CitgYGAKKwor
d2UgaGFkIHRvIGdpdmUgdXAgdXNpbmcgYEFTU0VSVCpgIGFuZCBgRkFJTCpgIChidXQgbm90IGBF
WFBFQ1QqYCBhbmQKK2BBRERfRkFJTFVSRSpgKSBpbiBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0
b3JzLiBUaGUgd29ya2Fyb3VuZCBpcyB0byBtb3ZlIHRoZQorY29udGVudCBvZiB5b3VyIGNvbnN0
cnVjdG9yL2Rlc3RydWN0b3IgdG8gYSBwcml2YXRlIHZvaWQgbWVtYmVyIGZ1bmN0aW9uLCBvcgor
c3dpdGNoIHRvIGBFWFBFQ1RfKigpYCBpZiB0aGF0IHdvcmtzLiBUaGlzCitbc2VjdGlvbl0oYWR2
YW5jZWQubWQjYXNzZXJ0aW9uLXBsYWNlbWVudCkgaW4gdGhlIHVzZXIncyBndWlkZSBleHBsYWlu
cyBpdC4KKworIyMgTXkgU2V0VXAoKSBmdW5jdGlvbiBpcyBub3QgY2FsbGVkLiBXaHk/CisKK0Mr
KyBpcyBjYXNlLXNlbnNpdGl2ZS4gRGlkIHlvdSBzcGVsbCBpdCBhcyBgU2V0dXAoKWA/CisKK1Np
bWlsYXJseSwgc29tZXRpbWVzIHBlb3BsZSBzcGVsbCBgU2V0VXBUZXN0Q2FzZSgpYCBhcyBgU2V0
dXBUZXN0Q2FzZSgpYCBhbmQKK3dvbmRlciB3aHkgaXQncyBuZXZlciBjYWxsZWQuCisKKyMjIEhv
dyBkbyBJIGp1bXAgdG8gdGhlIGxpbmUgb2YgYSBmYWlsdXJlIGluIEVtYWNzIGRpcmVjdGx5Pwor
Citnb29nbGV0ZXN0J3MgZmFpbHVyZSBtZXNzYWdlIGZvcm1hdCBpcyB1bmRlcnN0b29kIGJ5IEVt
YWNzIGFuZCBtYW55IG90aGVyIElERXMsCitsaWtlIGFjbWUgYW5kIFhDb2RlLiBJZiBhIGdvb2ds
ZXRlc3QgbWVzc2FnZSBpcyBpbiBhIGNvbXBpbGF0aW9uIGJ1ZmZlciBpbgorRW1hY3MsIHRoZW4g
aXQncyBjbGlja2FibGUuCisKKworIyMgSSBoYXZlIHNldmVyYWwgdGVzdCBjYXNlcyB3aGljaCBz
aGFyZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUgbG9naWMsIGRvIEkgaGF2ZSB0byBkZWZpbmUgYSBu
ZXcgdGVzdCBmaXh0dXJlIGNsYXNzIGZvciBlYWNoIG9mIHRoZW0/IFRoaXMgc2VlbXMgcHJldHR5
IHRlZGlvdXMuCisKK1lvdSBkb24ndCBoYXZlIHRvLiBJbnN0ZWFkIG9mCisKK2BgYGMrKworY2xh
c3MgRm9vVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCB7fTsKKworVEVTVF9GKEZvb1Rlc3QsIEFiYykg
eyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQorCitjbGFzcyBCYXJUZXN0IDog
cHVibGljIEJhc2VUZXN0IHt9OworCitURVNUX0YoQmFyVGVzdCwgQWJjKSB7IC4uLiB9CitURVNU
X0YoQmFyVGVzdCwgRGVmKSB7IC4uLiB9CitgYGAKKworeW91IGNhbiBzaW1wbHkgYHR5cGVkZWZg
IHRoZSB0ZXN0IGZpeHR1cmVzOgorCitgYGBjKysKK3R5cGVkZWYgQmFzZVRlc3QgRm9vVGVzdDsK
KworVEVTVF9GKEZvb1Rlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIERlZikgeyAu
Li4gfQorCit0eXBlZGVmIEJhc2VUZXN0IEJhclRlc3Q7CisKK1RFU1RfRihCYXJUZXN0LCBBYmMp
IHsgLi4uIH0KK1RFU1RfRihCYXJUZXN0LCBEZWYpIHsgLi4uIH0KK2BgYAorCisjIyBnb29nbGV0
ZXN0IG91dHB1dCBpcyBidXJpZWQgaW4gYSB3aG9sZSBidW5jaCBvZiBMT0cgbWVzc2FnZXMuIFdo
YXQgZG8gSSBkbz8KKworVGhlIGdvb2dsZXRlc3Qgb3V0cHV0IGlzIG1lYW50IHRvIGJlIGEgY29u
Y2lzZSBhbmQgaHVtYW4tZnJpZW5kbHkgcmVwb3J0LiBJZgoreW91ciB0ZXN0IGdlbmVyYXRlcyB0
ZXh0dWFsIG91dHB1dCBpdHNlbGYsIGl0IHdpbGwgbWl4IHdpdGggdGhlIGdvb2dsZXRlc3QKK291
dHB1dCwgbWFraW5nIGl0IGhhcmQgdG8gcmVhZC4gSG93ZXZlciwgdGhlcmUgaXMgYW4gZWFzeSBz
b2x1dGlvbiB0byB0aGlzCitwcm9ibGVtLgorCitTaW5jZSBgTE9HYCBtZXNzYWdlcyBnbyB0byBz
dGRlcnIsIHdlIGRlY2lkZWQgdG8gbGV0IGdvb2dsZXRlc3Qgb3V0cHV0IGdvIHRvCitzdGRvdXQu
IFRoaXMgd2F5LCB5b3UgY2FuIGVhc2lseSBzZXBhcmF0ZSB0aGUgdHdvIHVzaW5nIHJlZGlyZWN0
aW9uLiBGb3IKK2V4YW1wbGU6CisKK2BgYHNoZWxsCiskIC4vbXlfdGVzdCA+IGd0ZXN0X291dHB1
dC50eHQKK2BgYAorCisKKyMjIFdoeSBzaG91bGQgSSBwcmVmZXIgdGVzdCBmaXh0dXJlcyBvdmVy
IGdsb2JhbCB2YXJpYWJsZXM/CisKK1RoZXJlIGFyZSBzZXZlcmFsIGdvb2QgcmVhc29uczoKKwor
MS4gIEl0J3MgbGlrZWx5IHlvdXIgdGVzdCBuZWVkcyB0byBjaGFuZ2UgdGhlIHN0YXRlcyBvZiBp
dHMgZ2xvYmFsIHZhcmlhYmxlcy4KKyAgICBUaGlzIG1ha2VzIGl0IGRpZmZpY3VsdCB0byBrZWVw
IHNpZGUgZWZmZWN0cyBmcm9tIGVzY2FwaW5nIG9uZSB0ZXN0IGFuZAorICAgIGNvbnRhbWluYXRp
bmcgb3RoZXJzLCBtYWtpbmcgZGVidWdnaW5nIGRpZmZpY3VsdC4gQnkgdXNpbmcgZml4dHVyZXMs
IGVhY2gKKyAgICB0ZXN0IGhhcyBhIGZyZXNoIHNldCBvZiB2YXJpYWJsZXMgdGhhdCdzIGRpZmZl
cmVudCAoYnV0IHdpdGggdGhlIHNhbWUKKyAgICBuYW1lcykuIFRodXMsIHRlc3RzIGFyZSBrZXB0
IGluZGVwZW5kZW50IG9mIGVhY2ggb3RoZXIuCisxLiAgR2xvYmFsIHZhcmlhYmxlcyBwb2xsdXRl
IHRoZSBnbG9iYWwgbmFtZXNwYWNlLgorMS4gIFRlc3QgZml4dHVyZXMgY2FuIGJlIHJldXNlZCB2
aWEgc3ViY2xhc3NpbmcsIHdoaWNoIGNhbm5vdCBiZSBkb25lIGVhc2lseQorICAgIHdpdGggZ2xv
YmFsIHZhcmlhYmxlcy4gVGhpcyBpcyB1c2VmdWwgaWYgbWFueSB0ZXN0IGNhc2VzIGhhdmUgc29t
ZXRoaW5nIGluCisgICAgY29tbW9uLgorCisKKyAgICAjIyBXaGF0IGNhbiB0aGUgc3RhdGVtZW50
IGFyZ3VtZW50IGluIEFTU0VSVF9ERUFUSCgpIGJlPworCitgQVNTRVJUX0RFQVRIKCpzdGF0ZW1l
bnQqLCAqcmVnZXgqKWAgKG9yIGFueSBkZWF0aCBhc3NlcnRpb24gbWFjcm8pIGNhbiBiZSB1c2Vk
Cit3aGVyZXZlciBgKnN0YXRlbWVudCpgIGlzIHZhbGlkLiBTbyBiYXNpY2FsbHkgYCpzdGF0ZW1l
bnQqYCBjYW4gYmUgYW55IEMrKworc3RhdGVtZW50IHRoYXQgbWFrZXMgc2Vuc2UgaW4gdGhlIGN1
cnJlbnQgY29udGV4dC4gSW4gcGFydGljdWxhciwgaXQgY2FuCityZWZlcmVuY2UgZ2xvYmFsIGFu
ZC9vciBsb2NhbCB2YXJpYWJsZXMsIGFuZCBjYW4gYmU6CisKKyogICBhIHNpbXBsZSBmdW5jdGlv
biBjYWxsIChvZnRlbiB0aGUgY2FzZSksCisqICAgYSBjb21wbGV4IGV4cHJlc3Npb24sIG9yCisq
ICAgYSBjb21wb3VuZCBzdGF0ZW1lbnQuCisKK1NvbWUgZXhhbXBsZXMgYXJlIHNob3duIGhlcmU6
CisKK2BgYGMrKworLy8gQSBkZWF0aCB0ZXN0IGNhbiBiZSBhIHNpbXBsZSBmdW5jdGlvbiBjYWxs
LgorVEVTVChNeURlYXRoVGVzdCwgRnVuY3Rpb25DYWxsKSB7CisgIEFTU0VSVF9ERUFUSChYeXoo
NSksICJYeXogZmFpbGVkIik7Cit9CisKKy8vIE9yIGEgY29tcGxleCBleHByZXNzaW9uIHRoYXQg
cmVmZXJlbmNlcyB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucy4KK1RFU1QoTXlEZWF0aFRlc3QsIENv
bXBsZXhFeHByZXNzaW9uKSB7CisgIGNvbnN0IGJvb2wgYyA9IENvbmRpdGlvbigpOworICBBU1NF
UlRfREVBVEgoKGMgPyBGdW5jMSgwKSA6IG9iamVjdDIuTWV0aG9kKCJ0ZXN0IikpLAorICAgICAg
ICAgICAgICAgIihGdW5jMXxNZXRob2QpIGZhaWxlZCIpOworfQorCisvLyBEZWF0aCBhc3NlcnRp
b25zIGNhbiBiZSB1c2VkIGFueSB3aGVyZSBpbiBhIGZ1bmN0aW9uLiAgSW4KKy8vIHBhcnRpY3Vs
YXIsIHRoZXkgY2FuIGJlIGluc2lkZSBhIGxvb3AuCitURVNUKE15RGVhdGhUZXN0LCBJbnNpZGVM
b29wKSB7CisgIC8vIFZlcmlmaWVzIHRoYXQgRm9vKDApLCBGb28oMSksIC4uLiwgYW5kIEZvbyg0
KSBhbGwgZGllLgorICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgeworICAgIEVYUEVDVF9E
RUFUSF9NKEZvbyhpKSwgIkZvbyBoYXMgXFxkKyBlcnJvcnMiLAorICAgICAgICAgICAgICAgICAg
IDo6dGVzdGluZzo6TWVzc2FnZSgpIDw8ICJ3aGVyZSBpIGlzICIgPDwgaSk7CisgIH0KK30KKwor
Ly8gQSBkZWF0aCBhc3NlcnRpb24gY2FuIGNvbnRhaW4gYSBjb21wb3VuZCBzdGF0ZW1lbnQuCitU
RVNUKE15RGVhdGhUZXN0LCBDb21wb3VuZFN0YXRlbWVudCkgeworICAvLyBWZXJpZmllcyB0aGF0
IGF0IGxlYXNlIG9uZSBvZiBCYXIoMCksIEJhcigxKSwgLi4uLCBhbmQKKyAgLy8gQmFyKDQpIGRp
ZXMuCisgIEFTU0VSVF9ERUFUSCh7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsK
KyAgICAgIEJhcihpKTsKKyAgICB9CisgIH0sCisgICJCYXIgaGFzIFxcZCsgZXJyb3JzIik7Cit9
CitgYGAKKworZ3Rlc3QtZGVhdGgtdGVzdF90ZXN0LmNjIGNvbnRhaW5zIG1vcmUgZXhhbXBsZXMg
aWYgeW91IGFyZSBpbnRlcmVzdGVkLgorCisjIyBJIGhhdmUgYSBmaXh0dXJlIGNsYXNzIGBGb29U
ZXN0YCwgYnV0IGBURVNUX0YoRm9vVGVzdCwgQmFyKWAgZ2l2ZXMgbWUgZXJyb3IgYGAibm8gbWF0
Y2hpbmcgZnVuY3Rpb24gZm9yIGNhbGwgdG8gYEZvb1Rlc3Q6OkZvb1Rlc3QoKSciYGAuIFdoeT8K
KworR29vZ2xldGVzdCBuZWVkcyB0byBiZSBhYmxlIHRvIGNyZWF0ZSBvYmplY3RzIG9mIHlvdXIg
dGVzdCBmaXh0dXJlIGNsYXNzLCBzbyBpdAorbXVzdCBoYXZlIGEgZGVmYXVsdCBjb25zdHJ1Y3Rv
ci4gTm9ybWFsbHkgdGhlIGNvbXBpbGVyIHdpbGwgZGVmaW5lIG9uZSBmb3IgeW91LgorSG93ZXZl
ciwgdGhlcmUgYXJlIGNhc2VzIHdoZXJlIHlvdSBoYXZlIHRvIGRlZmluZSB5b3VyIG93bjoKKwor
KiAgIElmIHlvdSBleHBsaWNpdGx5IGRlY2xhcmUgYSBub24tZGVmYXVsdCBjb25zdHJ1Y3RvciBm
b3IgY2xhc3MgYEZvb1Rlc3RgCisgICAgKGBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUygpYCBk
b2VzIHRoaXMpLCB0aGVuIHlvdSBuZWVkIHRvIGRlZmluZSBhCisgICAgZGVmYXVsdCBjb25zdHJ1
Y3RvciwgZXZlbiBpZiBpdCB3b3VsZCBiZSBlbXB0eS4KKyogICBJZiBgRm9vVGVzdGAgaGFzIGEg
Y29uc3Qgbm9uLXN0YXRpYyBkYXRhIG1lbWJlciwgdGhlbiB5b3UgaGF2ZSB0byBkZWZpbmUgdGhl
CisgICAgZGVmYXVsdCBjb25zdHJ1Y3RvciAqYW5kKiBpbml0aWFsaXplIHRoZSBjb25zdCBtZW1i
ZXIgaW4gdGhlIGluaXRpYWxpemVyCisgICAgbGlzdCBvZiB0aGUgY29uc3RydWN0b3IuIChFYXJs
eSB2ZXJzaW9ucyBvZiBgZ2NjYCBkb2Vzbid0IGZvcmNlIHlvdSB0bworICAgIGluaXRpYWxpemUg
dGhlIGNvbnN0IG1lbWJlci4gSXQncyBhIGJ1ZyB0aGF0IGhhcyBiZWVuIGZpeGVkIGluIGBnY2Mg
NGAuKQorCisjIyBXaHkgZG9lcyBBU1NFUlRfREVBVEggY29tcGxhaW4gYWJvdXQgcHJldmlvdXMg
dGhyZWFkcyB0aGF0IHdlcmUgYWxyZWFkeSBqb2luZWQ/CisKK1dpdGggdGhlIExpbnV4IHB0aHJl
YWQgbGlicmFyeSwgdGhlcmUgaXMgbm8gdHVybmluZyBiYWNrIG9uY2UgeW91IGNyb3NzIHRoZSBs
aW5lCitmcm9tIHNpbmdsZSB0aHJlYWQgdG8gbXVsdGlwbGUgdGhyZWFkcy4gVGhlIGZpcnN0IHRp
bWUgeW91IGNyZWF0ZSBhIHRocmVhZCwgYQorbWFuYWdlciB0aHJlYWQgaXMgY3JlYXRlZCBpbiBh
ZGRpdGlvbiwgc28geW91IGdldCAzLCBub3QgMiwgdGhyZWFkcy4gTGF0ZXIgd2hlbgordGhlIHRo
cmVhZCB5b3UgY3JlYXRlIGpvaW5zIHRoZSBtYWluIHRocmVhZCwgdGhlIHRocmVhZCBjb3VudCBk
ZWNyZW1lbnRzIGJ5IDEsCitidXQgdGhlIG1hbmFnZXIgdGhyZWFkIHdpbGwgbmV2ZXIgYmUga2ls
bGVkLCBzbyB5b3Ugc3RpbGwgaGF2ZSAyIHRocmVhZHMsIHdoaWNoCittZWFucyB5b3UgY2Fubm90
IHNhZmVseSBydW4gYSBkZWF0aCB0ZXN0LgorCitUaGUgbmV3IE5QVEwgdGhyZWFkIGxpYnJhcnkg
ZG9lc24ndCBzdWZmZXIgZnJvbSB0aGlzIHByb2JsZW0sIGFzIGl0IGRvZXNuJ3QKK2NyZWF0ZSBh
IG1hbmFnZXIgdGhyZWFkLiBIb3dldmVyLCBpZiB5b3UgZG9uJ3QgY29udHJvbCB3aGljaCBtYWNo
aW5lIHlvdXIgdGVzdAorcnVucyBvbiwgeW91IHNob3VsZG4ndCBkZXBlbmQgb24gdGhpcy4KKwor
IyMgV2h5IGRvZXMgZ29vZ2xldGVzdCByZXF1aXJlIHRoZSBlbnRpcmUgdGVzdCBjYXNlLCBpbnN0
ZWFkIG9mIGluZGl2aWR1YWwgdGVzdHMsIHRvIGJlIG5hbWVkICpEZWF0aFRlc3Qgd2hlbiBpdCB1
c2VzIEFTU0VSVF9ERUFUSD8KKworZ29vZ2xldGVzdCBkb2VzIG5vdCBpbnRlcmxlYXZlIHRlc3Rz
IGZyb20gZGlmZmVyZW50IHRlc3QgY2FzZXMuIFRoYXQgaXMsIGl0IHJ1bnMKK2FsbCB0ZXN0cyBp
biBvbmUgdGVzdCBjYXNlIGZpcnN0LCBhbmQgdGhlbiBydW5zIGFsbCB0ZXN0cyBpbiB0aGUgbmV4
dCB0ZXN0IGNhc2UsCithbmQgc28gb24uIGdvb2dsZXRlc3QgZG9lcyB0aGlzIGJlY2F1c2UgaXQg
bmVlZHMgdG8gc2V0IHVwIGEgdGVzdCBjYXNlIGJlZm9yZQordGhlIGZpcnN0IHRlc3QgaW4gaXQg
aXMgcnVuLCBhbmQgdGVhciBpdCBkb3duIGFmdGVyd29yZHMuIFNwbGl0dGluZyB1cCB0aGUgdGVz
dAorY2FzZSB3b3VsZCByZXF1aXJlIG11bHRpcGxlIHNldC11cCBhbmQgdGVhci1kb3duIHByb2Nl
c3Nlcywgd2hpY2ggaXMgaW5lZmZpY2llbnQKK2FuZCBtYWtlcyB0aGUgc2VtYW50aWNzIHVuY2xl
YW4uCisKK0lmIHdlIHdlcmUgdG8gZGV0ZXJtaW5lIHRoZSBvcmRlciBvZiB0ZXN0cyBiYXNlZCBv
biB0ZXN0IG5hbWUgaW5zdGVhZCBvZiB0ZXN0CitjYXNlIG5hbWUsIHRoZW4gd2Ugd291bGQgaGF2
ZSBhIHByb2JsZW0gd2l0aCB0aGUgZm9sbG93aW5nIHNpdHVhdGlvbjoKKworYGBgYysrCitURVNU
X0YoRm9vVGVzdCwgQWJjRGVhdGhUZXN0KSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgVXZ3KSB7
IC4uLiB9CisKK1RFU1RfRihCYXJUZXN0LCBEZWZEZWF0aFRlc3QpIHsgLi4uIH0KK1RFU1RfRihC
YXJUZXN0LCBYeXopIHsgLi4uIH0KK2BgYAorCitTaW5jZSBgRm9vVGVzdC5BYmNEZWF0aFRlc3Rg
IG5lZWRzIHRvIHJ1biBiZWZvcmUgYEJhclRlc3QuWHl6YCwgYW5kIHdlIGRvbid0CitpbnRlcmxl
YXZlIHRlc3RzIGZyb20gZGlmZmVyZW50IHRlc3QgY2FzZXMsIHdlIG5lZWQgdG8gcnVuIGFsbCB0
ZXN0cyBpbiB0aGUKK2BGb29UZXN0YCBjYXNlIGJlZm9yZSBydW5uaW5nIGFueSB0ZXN0IGluIHRo
ZSBgQmFyVGVzdGAgY2FzZS4gVGhpcyBjb250cmFkaWN0cword2l0aCB0aGUgcmVxdWlyZW1lbnQg
dG8gcnVuIGBCYXJUZXN0LkRlZkRlYXRoVGVzdGAgYmVmb3JlIGBGb29UZXN0LlV2d2AuCisKKyMj
IEJ1dCBJIGRvbid0IGxpa2UgY2FsbGluZyBteSBlbnRpcmUgdGVzdCBjYXNlIFwqRGVhdGhUZXN0
IHdoZW4gaXQgY29udGFpbnMgYm90aCBkZWF0aCB0ZXN0cyBhbmQgbm9uLWRlYXRoIHRlc3RzLiBX
aGF0IGRvIEkgZG8/CisKK1lvdSBkb24ndCBoYXZlIHRvLCBidXQgaWYgeW91IGxpa2UsIHlvdSBt
YXkgc3BsaXQgdXAgdGhlIHRlc3QgY2FzZSBpbnRvCitgRm9vVGVzdGAgYW5kIGBGb29EZWF0aFRl
c3RgLCB3aGVyZSB0aGUgbmFtZXMgbWFrZSBpdCBjbGVhciB0aGF0IHRoZXkgYXJlCityZWxhdGVk
OgorCitgYGBjKysKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4u
IH07CisKK1RFU1RfRihGb29UZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBEZWYp
IHsgLi4uIH0KKwordXNpbmcgRm9vRGVhdGhUZXN0ID0gRm9vVGVzdDsKKworVEVTVF9GKEZvb0Rl
YXRoVGVzdCwgVXZ3KSB7IC4uLiBFWFBFQ1RfREVBVEgoLi4uKSAuLi4gfQorVEVTVF9GKEZvb0Rl
YXRoVGVzdCwgWHl6KSB7IC4uLiBBU1NFUlRfREVBVEgoLi4uKSAuLi4gfQorYGBgCisKKyMjIGdv
b2dsZXRlc3QgcHJpbnRzIHRoZSBMT0cgbWVzc2FnZXMgaW4gYSBkZWF0aCB0ZXN0J3MgY2hpbGQg
cHJvY2VzcyBvbmx5IHdoZW4gdGhlIHRlc3QgZmFpbHMuIEhvdyBjYW4gSSBzZWUgdGhlIExPRyBt
ZXNzYWdlcyB3aGVuIHRoZSBkZWF0aCB0ZXN0IHN1Y2NlZWRzPworCitQcmludGluZyB0aGUgTE9H
IG1lc3NhZ2VzIGdlbmVyYXRlZCBieSB0aGUgc3RhdGVtZW50IGluc2lkZSBgRVhQRUNUX0RFQVRI
KClgCittYWtlcyBpdCBoYXJkZXIgdG8gc2VhcmNoIGZvciByZWFsIHByb2JsZW1zIGluIHRoZSBw
YXJlbnQncyBsb2cuIFRoZXJlZm9yZSwKK2dvb2dsZXRlc3Qgb25seSBwcmludHMgdGhlbSB3aGVu
IHRoZSBkZWF0aCB0ZXN0IGhhcyBmYWlsZWQuCisKK0lmIHlvdSByZWFsbHkgbmVlZCB0byBzZWUg
c3VjaCBMT0cgbWVzc2FnZXMsIGEgd29ya2Fyb3VuZCBpcyB0byB0ZW1wb3JhcmlseQorYnJlYWsg
dGhlIGRlYXRoIHRlc3QgKGUuZy4gYnkgY2hhbmdpbmcgdGhlIHJlZ2V4IHBhdHRlcm4gaXQgaXMg
ZXhwZWN0ZWQgdG8KK21hdGNoKS4gQWRtaXR0ZWRseSwgdGhpcyBpcyBhIGhhY2suIFdlJ2xsIGNv
bnNpZGVyIGEgbW9yZSBwZXJtYW5lbnQgc29sdXRpb24KK2FmdGVyIHRoZSBmb3JrLWFuZC1leGVj
LXN0eWxlIGRlYXRoIHRlc3RzIGFyZSBpbXBsZW1lbnRlZC4KKworIyMgVGhlIGNvbXBpbGVyIGNv
bXBsYWlucyBhYm91dCAibm8gbWF0Y2ggZm9yICdvcGVyYXRvcjw8JyIgd2hlbiBJIHVzZSBhbiBh
c3NlcnRpb24uIFdoYXQgZ2l2ZXM/CisKK0lmIHlvdSB1c2UgYSB1c2VyLWRlZmluZWQgdHlwZSBg
Rm9vVHlwZWAgaW4gYW4gYXNzZXJ0aW9uLCB5b3UgbXVzdCBtYWtlIHN1cmUKK3RoZXJlIGlzIGFu
IGBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiwgY29uc3QgRm9vVHlwZSYp
YCBmdW5jdGlvbgorZGVmaW5lZCBzdWNoIHRoYXQgd2UgY2FuIHByaW50IGEgdmFsdWUgb2YgYEZv
b1R5cGVgLgorCitJbiBhZGRpdGlvbiwgaWYgYEZvb1R5cGVgIGlzIGRlY2xhcmVkIGluIGEgbmFt
ZSBzcGFjZSwgdGhlIGA8PGAgb3BlcmF0b3IgYWxzbworbmVlZHMgdG8gYmUgZGVmaW5lZCBpbiB0
aGUgKnNhbWUqIG5hbWUgc3BhY2UuIFNlZSBnby90b3R3LzQ5IGZvciBkZXRhaWxzLgorCisjIyBI
b3cgZG8gSSBzdXBwcmVzcyB0aGUgbWVtb3J5IGxlYWsgbWVzc2FnZXMgb24gV2luZG93cz8KKwor
U2luY2UgdGhlIHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQgZ29vZ2xldGVzdCBzaW5nbGV0b24gcmVx
dWlyZXMgYWxsb2NhdGlvbnMgb24KK3RoZSBoZWFwLCB0aGUgVmlzdWFsIEMrKyBtZW1vcnkgbGVh
ayBkZXRlY3RvciB3aWxsIHJlcG9ydCBtZW1vcnkgbGVha3MgYXQgdGhlCitlbmQgb2YgdGhlIHBy
b2dyYW0gcnVuLiBUaGUgZWFzaWVzdCB3YXkgdG8gYXZvaWQgdGhpcyBpcyB0byB1c2UgdGhlCitg
X0NydE1lbUNoZWNrcG9pbnRgIGFuZCBgX0NydE1lbUR1bXBBbGxPYmplY3RzU2luY2VgIGNhbGxz
IHRvIG5vdCByZXBvcnQgYW55CitzdGF0aWNhbGx5IGluaXRpYWxpemVkIGhlYXAgb2JqZWN0cy4g
U2VlIE1TRE4gZm9yIG1vcmUgZGV0YWlscyBhbmQgYWRkaXRpb25hbAoraGVhcCBjaGVjay9kZWJ1
ZyByb3V0aW5lcy4KKworCisjIyBIb3cgY2FuIG15IGNvZGUgZGV0ZWN0IGlmIGl0IGlzIHJ1bm5p
bmcgaW4gYSB0ZXN0PworCitJZiB5b3Ugd3JpdGUgY29kZSB0aGF0IHNuaWZmcyB3aGV0aGVyIGl0
J3MgcnVubmluZyBpbiBhIHRlc3QgYW5kIGRvZXMgZGlmZmVyZW50Cit0aGluZ3MgYWNjb3JkaW5n
bHksIHlvdSBhcmUgbGVha2luZyB0ZXN0LW9ubHkgbG9naWMgaW50byBwcm9kdWN0aW9uIGNvZGUg
YW5kCit0aGVyZSBpcyBubyBlYXN5IHdheSB0byBlbnN1cmUgdGhhdCB0aGUgdGVzdC1vbmx5IGNv
ZGUgcGF0aHMgYXJlbid0IHJ1biBieQorbWlzdGFrZSBpbiBwcm9kdWN0aW9uLiBTdWNoIGNsZXZl
cm5lc3MgYWxzbyBsZWFkcyB0bworW0hlaXNlbmJ1Z3NdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL0hlaXNlbmJ1ZykuIFRoZXJlZm9yZSB3ZSBzdHJvbmdseQorYWR2aXNlIGFnYWluc3Qg
dGhlIHByYWN0aWNlLCBhbmQgZ29vZ2xldGVzdCBkb2Vzbid0IHByb3ZpZGUgYSB3YXkgdG8gZG8g
aXQuCisKK0luIGdlbmVyYWwsIHRoZSByZWNvbW1lbmRlZCB3YXkgdG8gY2F1c2UgdGhlIGNvZGUg
dG8gYmVoYXZlIGRpZmZlcmVudGx5IHVuZGVyCit0ZXN0IGlzIFtEZXBlbmRlbmN5IEluamVjdGlv
bl0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVwZW5kZW5jeV9pbmplY3Rpb24pLiBZ
b3UgY2FuIGluamVjdAorZGlmZmVyZW50IGZ1bmN0aW9uYWxpdHkgZnJvbSB0aGUgdGVzdCBhbmQg
ZnJvbSB0aGUgcHJvZHVjdGlvbiBjb2RlLiBTaW5jZSB5b3VyCitwcm9kdWN0aW9uIGNvZGUgZG9l
c24ndCBsaW5rIGluIHRoZSBmb3ItdGVzdCBsb2dpYyBhdCBhbGwgKHRoZQorW2B0ZXN0b25seWBd
KGh0dHBzOi8vZG9jcy5iYXplbC5idWlsZC92ZXJzaW9ucy9tYXN0ZXIvYmUvY29tbW9uLWRlZmlu
aXRpb25zLmh0bWwjY29tbW9uLnRlc3Rvbmx5KQorYXR0cmlidXRlIGZvciBCVUlMRCB0YXJnZXRz
IGhlbHBzIHRvIGVuc3VyZSB0aGF0KSwgdGhlcmUgaXMgbm8gZGFuZ2VyIGluCithY2NpZGVudGFs
bHkgcnVubmluZyBpdC4KKworSG93ZXZlciwgaWYgeW91ICpyZWFsbHkqLCAqcmVhbGx5KiwgKnJl
YWxseSogaGF2ZSBubyBjaG9pY2UsIGFuZCBpZiB5b3UgZm9sbG93Cit0aGUgcnVsZSBvZiBlbmRp
bmcgeW91ciB0ZXN0IHByb2dyYW0gbmFtZXMgd2l0aCBgX3Rlc3RgLCB5b3UgY2FuIHVzZSB0aGUK
Kypob3JyaWJsZSogaGFjayBvZiBzbmlmZmluZyB5b3VyIGV4ZWN1dGFibGUgbmFtZSAoYGFyZ3Zb
MF1gIGluIGBtYWluKClgKSB0byBrbm93Cit3aGV0aGVyIHRoZSBjb2RlIGlzIHVuZGVyIHRlc3Qu
CisKKworIyMgSG93IGRvIEkgdGVtcG9yYXJpbHkgZGlzYWJsZSBhIHRlc3Q/CisKK0lmIHlvdSBo
YXZlIGEgYnJva2VuIHRlc3QgdGhhdCB5b3UgY2Fubm90IGZpeCByaWdodCBhd2F5LCB5b3UgY2Fu
IGFkZCB0aGUKK0RJU0FCTEVEXyBwcmVmaXggdG8gaXRzIG5hbWUuIFRoaXMgd2lsbCBleGNsdWRl
IGl0IGZyb20gZXhlY3V0aW9uLiBUaGlzIGlzCitiZXR0ZXIgdGhhbiBjb21tZW50aW5nIG91dCB0
aGUgY29kZSBvciB1c2luZyAjaWYgMCwgYXMgZGlzYWJsZWQgdGVzdHMgYXJlIHN0aWxsCitjb21w
aWxlZCAoYW5kIHRodXMgd29uJ3Qgcm90KS4KKworVG8gaW5jbHVkZSBkaXNhYmxlZCB0ZXN0cyBp
biB0ZXN0IGV4ZWN1dGlvbiwganVzdCBpbnZva2UgdGhlIHRlc3QgcHJvZ3JhbSB3aXRoCit0aGUg
LS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnLgorCisjIyBJcyBpdCBPSyBpZiBJ
IGhhdmUgdHdvIHNlcGFyYXRlIGBURVNUKEZvbywgQmFyKWAgdGVzdCBtZXRob2RzIGRlZmluZWQg
aW4gZGlmZmVyZW50IG5hbWVzcGFjZXM/CisKK1llcy4KKworVGhlIHJ1bGUgaXMgKiphbGwgdGVz
dCBtZXRob2RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSBmaXh0dXJl
CitjbGFzcy4qKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBpcyAqKmFsbG93ZWQqKiBi
ZWNhdXNlIGJvdGggdGVzdHMgdXNlIHRoZQorc2FtZSBmaXh0dXJlIGNsYXNzIChgOjp0ZXN0aW5n
OjpUZXN0YCkuCisKK2BgYGMrKworbmFtZXNwYWNlIGZvbyB7CitURVNUKENvb2xUZXN0LCBEb1Nv
bWV0aGluZykgeworICBTVUNDRUVEKCk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgZm9vCisKK25hbWVz
cGFjZSBiYXIgeworVEVTVChDb29sVGVzdCwgRG9Tb21ldGhpbmcpIHsKKyAgU1VDQ0VFRCgpOwor
fQorfSAgLy8gbmFtZXNwYWNlIGJhcgorYGBgCisKK0hvd2V2ZXIsIHRoZSBmb2xsb3dpbmcgY29k
ZSBpcyAqKm5vdCBhbGxvd2VkKiogYW5kIHdpbGwgcHJvZHVjZSBhIHJ1bnRpbWUgZXJyb3IKK2Zy
b20gZ29vZ2xldGVzdCBiZWNhdXNlIHRoZSB0ZXN0IG1ldGhvZHMgYXJlIHVzaW5nIGRpZmZlcmVu
dCB0ZXN0IGZpeHR1cmUKK2NsYXNzZXMgd2l0aCB0aGUgc2FtZSB0ZXN0IGNhc2UgbmFtZS4KKwor
YGBgYysrCituYW1lc3BhY2UgZm9vIHsKK2NsYXNzIENvb2xUZXN0IDogcHVibGljIDo6dGVzdGlu
Zzo6VGVzdCB7fTsgIC8vIEZpeHR1cmUgZm9vOjpDb29sVGVzdAorVEVTVF9GKENvb2xUZXN0LCBE
b1NvbWV0aGluZykgeworICBTVUNDRUVEKCk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgZm9vCisKK25h
bWVzcGFjZSBiYXIgeworY2xhc3MgQ29vbFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9
OyAgLy8gRml4dHVyZTogYmFyOjpDb29sVGVzdAorVEVTVF9GKENvb2xUZXN0LCBEb1NvbWV0aGlu
ZykgeworICBTVUNDRUVEKCk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgYmFyCitgYGAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvcHJpbWVyLm1kIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvZG9jcy9wcmltZXIubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E4ZWE4ZDcxN2I4MzViY2Jk
MjNmODRjOWVhMDVmMTZhODc4YTVkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2RvY3MvcHJpbWVyLm1kCkBAIC0wLDAgKzEsNTY5IEBACisjIEdvb2dsZXRlc3Qg
UHJpbWVyCisKKworIyMgSW50cm9kdWN0aW9uOiBXaHkgZ29vZ2xldGVzdD8KKworKmdvb2dsZXRl
c3QqIGhlbHBzIHlvdSB3cml0ZSBiZXR0ZXIgQysrIHRlc3RzLgorCitnb29nbGV0ZXN0IGlzIGEg
dGVzdGluZyBmcmFtZXdvcmsgZGV2ZWxvcGVkIGJ5IHRoZSBUZXN0aW5nCitUZWNobm9sb2d5IHRl
YW0gd2l0aCBHb29nbGUncyBzcGVjaWZpYworcmVxdWlyZW1lbnRzIGFuZCBjb25zdHJhaW50cyBp
biBtaW5kLiBObyBtYXR0ZXIgd2hldGhlciB5b3Ugd29yayBvbiBMaW51eCwKK1dpbmRvd3MsIG9y
IGEgTWFjLCBpZiB5b3Ugd3JpdGUgQysrIGNvZGUsIGdvb2dsZXRlc3QgY2FuIGhlbHAgeW91LiBB
bmQgaXQKK3N1cHBvcnRzICphbnkqIGtpbmQgb2YgdGVzdHMsIG5vdCBqdXN0IHVuaXQgdGVzdHMu
CisKK1NvIHdoYXQgbWFrZXMgYSBnb29kIHRlc3QsIGFuZCBob3cgZG9lcyBnb29nbGV0ZXN0IGZp
dCBpbj8gV2UgYmVsaWV2ZToKKworMS4gIFRlc3RzIHNob3VsZCBiZSAqaW5kZXBlbmRlbnQqIGFu
ZCAqcmVwZWF0YWJsZSouIEl0J3MgYSBwYWluIHRvIGRlYnVnIGEgdGVzdAorICAgIHRoYXQgc3Vj
Y2VlZHMgb3IgZmFpbHMgYXMgYSByZXN1bHQgb2Ygb3RoZXIgdGVzdHMuIGdvb2dsZXRlc3QgaXNv
bGF0ZXMgdGhlCisgICAgdGVzdHMgYnkgcnVubmluZyBlYWNoIG9mIHRoZW0gb24gYSBkaWZmZXJl
bnQgb2JqZWN0LiBXaGVuIGEgdGVzdCBmYWlscywKKyAgICBnb29nbGV0ZXN0IGFsbG93cyB5b3Ug
dG8gcnVuIGl0IGluIGlzb2xhdGlvbiBmb3IgcXVpY2sgZGVidWdnaW5nLgorMS4gIFRlc3RzIHNo
b3VsZCBiZSB3ZWxsICpvcmdhbml6ZWQqIGFuZCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhl
IHRlc3RlZAorICAgIGNvZGUuIGdvb2dsZXRlc3QgZ3JvdXBzIHJlbGF0ZWQgdGVzdHMgaW50byB0
ZXN0IGNhc2VzIHRoYXQgY2FuIHNoYXJlIGRhdGEKKyAgICBhbmQgc3Vicm91dGluZXMuIFRoaXMg
Y29tbW9uIHBhdHRlcm4gaXMgZWFzeSB0byByZWNvZ25pemUgYW5kIG1ha2VzIHRlc3RzCisgICAg
ZWFzeSB0byBtYWludGFpbi4gU3VjaCBjb25zaXN0ZW5jeSBpcyBlc3BlY2lhbGx5IGhlbHBmdWwg
d2hlbiBwZW9wbGUgc3dpdGNoCisgICAgcHJvamVjdHMgYW5kIHN0YXJ0IHRvIHdvcmsgb24gYSBu
ZXcgY29kZSBiYXNlLgorMS4gIFRlc3RzIHNob3VsZCBiZSAqcG9ydGFibGUqIGFuZCAqcmV1c2Fi
bGUqLiBHb29nbGUgaGFzIGEgbG90IG9mIGNvZGUgdGhhdCBpcworICAgIHBsYXRmb3JtLW5ldXRy
YWwsIGl0cyB0ZXN0cyBzaG91bGQgYWxzbyBiZSBwbGF0Zm9ybS1uZXV0cmFsLiBnb29nbGV0ZXN0
CisgICAgd29ya3Mgb24gZGlmZmVyZW50IE9TZXMsIHdpdGggZGlmZmVyZW50IGNvbXBpbGVycyAo
Z2NjLCBpY2MsIGFuZCBNU1ZDKSwgd2l0aAorICAgIG9yIHdpdGhvdXQgZXhjZXB0aW9ucywgc28g
Z29vZ2xldGVzdCB0ZXN0cyBjYW4gZWFzaWx5IHdvcmsgd2l0aCBhIHZhcmlldHkgb2YKKyAgICBj
b25maWd1cmF0aW9ucy4KKzEuICBXaGVuIHRlc3RzIGZhaWwsIHRoZXkgc2hvdWxkIHByb3ZpZGUg
YXMgbXVjaCAqaW5mb3JtYXRpb24qIGFib3V0IHRoZSBwcm9ibGVtCisgICAgYXMgcG9zc2libGUu
IGdvb2dsZXRlc3QgZG9lc24ndCBzdG9wIGF0IHRoZSBmaXJzdCB0ZXN0IGZhaWx1cmUuIEluc3Rl
YWQsIGl0CisgICAgb25seSBzdG9wcyB0aGUgY3VycmVudCB0ZXN0IGFuZCBjb250aW51ZXMgd2l0
aCB0aGUgbmV4dC4gWW91IGNhbiBhbHNvIHNldCB1cAorICAgIHRlc3RzIHRoYXQgcmVwb3J0IG5v
bi1mYXRhbCBmYWlsdXJlcyBhZnRlciB3aGljaCB0aGUgY3VycmVudCB0ZXN0IGNvbnRpbnVlcy4K
KyAgICBUaHVzLCB5b3UgY2FuIGRldGVjdCBhbmQgZml4IG11bHRpcGxlIGJ1Z3MgaW4gYSBzaW5n
bGUgcnVuLWVkaXQtY29tcGlsZQorICAgIGN5Y2xlLgorMS4gIFRoZSB0ZXN0aW5nIGZyYW1ld29y
ayBzaG91bGQgbGliZXJhdGUgdGVzdCB3cml0ZXJzIGZyb20gaG91c2VrZWVwaW5nIGNob3Jlcwor
ICAgIGFuZCBsZXQgdGhlbSBmb2N1cyBvbiB0aGUgdGVzdCAqY29udGVudCouIGdvb2dsZXRlc3Qg
YXV0b21hdGljYWxseSBrZWVwcworICAgIHRyYWNrIG9mIGFsbCB0ZXN0cyBkZWZpbmVkLCBhbmQg
ZG9lc24ndCByZXF1aXJlIHRoZSB1c2VyIHRvIGVudW1lcmF0ZSB0aGVtCisgICAgaW4gb3JkZXIg
dG8gcnVuIHRoZW0uCisxLiAgVGVzdHMgc2hvdWxkIGJlICpmYXN0Ki4gV2l0aCBnb29nbGV0ZXN0
LCB5b3UgY2FuIHJldXNlIHNoYXJlZCByZXNvdXJjZXMKKyAgICBhY3Jvc3MgdGVzdHMgYW5kIHBh
eSBmb3IgdGhlIHNldC11cC90ZWFyLWRvd24gb25seSBvbmNlLCB3aXRob3V0IG1ha2luZworICAg
IHRlc3RzIGRlcGVuZCBvbiBlYWNoIG90aGVyLgorCitTaW5jZSBnb29nbGV0ZXN0IGlzIGJhc2Vk
IG9uIHRoZSBwb3B1bGFyIHhVbml0IGFyY2hpdGVjdHVyZSwgeW91J2xsIGZlZWwgcmlnaHQKK2F0
IGhvbWUgaWYgeW91J3ZlIHVzZWQgSlVuaXQgb3IgUHlVbml0IGJlZm9yZS4gSWYgbm90LCBpdCB3
aWxsIHRha2UgeW91IGFib3V0IDEwCittaW51dGVzIHRvIGxlYXJuIHRoZSBiYXNpY3MgYW5kIGdl
dCBzdGFydGVkLiBTbyBsZXQncyBnbyEKKworIyMgQmV3YXJlIG9mIHRoZSBub21lbmNsYXR1cmUK
KworX05vdGU6XyBUaGVyZSBtaWdodCBiZSBzb21lIGNvbmZ1c2lvbiBvZiBpZGVhIGR1ZSB0byBk
aWZmZXJlbnQKK2RlZmluaXRpb25zIG9mIHRoZSB0ZXJtcyBfVGVzdF8sIF9UZXN0IENhc2VfIGFu
ZCBfVGVzdCBTdWl0ZV8sIHNvIGJld2FyZQorb2YgbWlzdW5kZXJzdGFuZGluZyB0aGVzZS4KKwor
SGlzdG9yaWNhbGx5LCBnb29nbGV0ZXN0IHN0YXJ0ZWQgdG8gdXNlIHRoZSB0ZXJtIF9UZXN0IENh
c2VfIGZvciBncm91cGluZworcmVsYXRlZCB0ZXN0cywgd2hlcmVhcyBjdXJyZW50IHB1YmxpY2F0
aW9ucyBpbmNsdWRpbmcgdGhlIEludGVybmF0aW9uYWwgU29mdHdhcmUKK1Rlc3RpbmcgUXVhbGlm
aWNhdGlvbnMgQm9hcmQgKFtJU1RRQl0oaHR0cDovL3d3dy5pc3RxYi5vcmcvKSkgYW5kIHZhcmlv
dXMKK3RleHRib29rcyBvbiBTb2Z0d2FyZSBRdWFsaXR5IHVzZSB0aGUgdGVybSBfW1Rlc3QKK1N1
aXRlXShodHRwOi8vZ2xvc3NhcnkuaXN0cWIub3JnL3NlYXJjaC90ZXN0JTIwc3VpdGUpXyBmb3Ig
dGhpcy4KKworVGhlIHJlbGF0ZWQgdGVybSBfVGVzdF8sIGFzIGl0IGlzIHVzZWQgaW4gdGhlIGdv
b2dsZXRlc3QsIGlzIGNvcnJlc3BvbmRpbmcgdG8KK3RoZSB0ZXJtIF9bVGVzdCBDYXNlXShodHRw
Oi8vZ2xvc3NhcnkuaXN0cWIub3JnL3NlYXJjaC90ZXN0JTIwY2FzZSlfIG9mIElTVFFCCithbmQg
b3RoZXJzLgorCitUaGUgdGVybSBfVGVzdF8gaXMgY29tbW9ubHkgb2YgYnJvYWQgZW5vdWdoIHNl
bnNlLCBpbmNsdWRpbmcgSVNUUUIncworZGVmaW5pdGlvbiBvZiBfVGVzdCBDYXNlXywgc28gaXQn
cyBub3QgbXVjaCBvZiBhIHByb2JsZW0gaGVyZS4gQnV0IHRoZQordGVybSBfVGVzdCBDYXNlXyBh
cyB1c2VkIGluIEdvb2dsZSBUZXN0IGlzIG9mIGNvbnRyYWRpY3Rvcnkgc2Vuc2UgYW5kIHRodXMg
Y29uZnVzaW5nLgorCitVbmZvcnR1bmF0ZWx5IHJlcGxhY2luZyB0aGUgdGVybSBfVGVzdCBDYXNl
XyBieSBfVGVzdCBTdWl0ZV8gdGhyb3VnaG91dCB0aGUKK2dvb2dsZXRlc3QgaXMgbm90IGVhc3kg
d2l0aG91dCBicmVha2luZyBkZXBlbmRlbnQgcHJvamVjdHMsIGFzIGBUZXN0Q2FzZWAgaXMKK3Bh
cnQgb2YgdGhlIHB1YmxpYyBBUEkgYXQgdmFyaW91cyBwbGFjZXMuCisKK1NvIGZvciB0aGUgdGlt
ZSBiZWluZywgcGxlYXNlIGJlIGF3YXJlIG9mIHRoZSBkaWZmZXJlbnQgZGVmaW5pdGlvbnMgb2YK
K3RoZSB0ZXJtczoKKworTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ29vZ2xldGVzdCBU
ZXJtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtJU1RRQl0oaHR0cDovL3d3
dy5pc3RxYi5vcmcvKSBUZXJtCis6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCA6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgOi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0V4ZXJjaXNlIGEgcGFydGljdWxhciBwcm9ncmFtIHBh
dGggd2l0aCBzcGVjaWZpYyBpbnB1dCB2YWx1ZXMgYW5kIHZlcmlmeSB0aGUgcmVzdWx0cyB8IFtU
RVNUKCldKCNzaW1wbGUtdGVzdHMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbVGVzdCBD
YXNlXShodHRwOi8vZ2xvc3NhcnkuaXN0cWIub3JnL3NlYXJjaC90ZXN0JTIwY2FzZSkKK0Egc2V0
IG9mIHNldmVyYWwgdGVzdHMgcmVsYXRlZCB0byBvbmUgY29tcG9uZW50ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8IFtUZXN0Q2FzZV0oI2Jhc2ljLWNvbmNlcHRzKSB8IFtU
ZXN0U3VpdGVdKGh0dHA6Ly9nbG9zc2FyeS5pc3RxYi5vcmcvc2VhcmNoL3Rlc3QlMjBzdWl0ZSkK
KworIyMgQmFzaWMgQ29uY2VwdHMKKworV2hlbiB1c2luZyBnb29nbGV0ZXN0LCB5b3Ugc3RhcnQg
Ynkgd3JpdGluZyAqYXNzZXJ0aW9ucyosIHdoaWNoIGFyZSBzdGF0ZW1lbnRzCit0aGF0IGNoZWNr
IHdoZXRoZXIgYSBjb25kaXRpb24gaXMgdHJ1ZS4gQW4gYXNzZXJ0aW9uJ3MgcmVzdWx0IGNhbiBi
ZSAqc3VjY2VzcyosCisqbm9uZmF0YWwgZmFpbHVyZSosIG9yICpmYXRhbCBmYWlsdXJlKi4gSWYg
YSBmYXRhbCBmYWlsdXJlIG9jY3VycywgaXQgYWJvcnRzIHRoZQorY3VycmVudCBmdW5jdGlvbjsg
b3RoZXJ3aXNlIHRoZSBwcm9ncmFtIGNvbnRpbnVlcyBub3JtYWxseS4KKworKlRlc3RzKiB1c2Ug
YXNzZXJ0aW9ucyB0byB2ZXJpZnkgdGhlIHRlc3RlZCBjb2RlJ3MgYmVoYXZpb3IuIElmIGEgdGVz
dCBjcmFzaGVzCitvciBoYXMgYSBmYWlsZWQgYXNzZXJ0aW9uLCB0aGVuIGl0ICpmYWlscyo7IG90
aGVyd2lzZSBpdCAqc3VjY2VlZHMqLgorCitBICp0ZXN0IGNhc2UqIGNvbnRhaW5zIG9uZSBvciBt
YW55IHRlc3RzLiBZb3Ugc2hvdWxkIGdyb3VwIHlvdXIgdGVzdHMgaW50byB0ZXN0CitjYXNlcyB0
aGF0IHJlZmxlY3QgdGhlIHN0cnVjdHVyZSBvZiB0aGUgdGVzdGVkIGNvZGUuIFdoZW4gbXVsdGlw
bGUgdGVzdHMgaW4gYQordGVzdCBjYXNlIG5lZWQgdG8gc2hhcmUgY29tbW9uIG9iamVjdHMgYW5k
IHN1YnJvdXRpbmVzLCB5b3UgY2FuIHB1dCB0aGVtIGludG8gYQorKnRlc3QgZml4dHVyZSogY2xh
c3MuCisKK0EgKnRlc3QgcHJvZ3JhbSogY2FuIGNvbnRhaW4gbXVsdGlwbGUgdGVzdCBjYXNlcy4K
KworV2UnbGwgbm93IGV4cGxhaW4gaG93IHRvIHdyaXRlIGEgdGVzdCBwcm9ncmFtLCBzdGFydGlu
ZyBhdCB0aGUgaW5kaXZpZHVhbAorYXNzZXJ0aW9uIGxldmVsIGFuZCBidWlsZGluZyB1cCB0byB0
ZXN0cyBhbmQgdGVzdCBjYXNlcy4KKworIyMgQXNzZXJ0aW9ucworCitnb29nbGV0ZXN0IGFzc2Vy
dGlvbnMgYXJlIG1hY3JvcyB0aGF0IHJlc2VtYmxlIGZ1bmN0aW9uIGNhbGxzLiBZb3UgdGVzdCBh
IGNsYXNzCitvciBmdW5jdGlvbiBieSBtYWtpbmcgYXNzZXJ0aW9ucyBhYm91dCBpdHMgYmVoYXZp
b3IuIFdoZW4gYW4gYXNzZXJ0aW9uIGZhaWxzLAorZ29vZ2xldGVzdCBwcmludHMgdGhlIGFzc2Vy
dGlvbidzIHNvdXJjZSBmaWxlIGFuZCBsaW5lIG51bWJlciBsb2NhdGlvbiwgYWxvbmcKK3dpdGgg
YSBmYWlsdXJlIG1lc3NhZ2UuIFlvdSBtYXkgYWxzbyBzdXBwbHkgYSBjdXN0b20gZmFpbHVyZSBt
ZXNzYWdlIHdoaWNoIHdpbGwKK2JlIGFwcGVuZGVkIHRvIGdvb2dsZXRlc3QncyBtZXNzYWdlLgor
CitUaGUgYXNzZXJ0aW9ucyBjb21lIGluIHBhaXJzIHRoYXQgdGVzdCB0aGUgc2FtZSB0aGluZyBi
dXQgaGF2ZSBkaWZmZXJlbnQgZWZmZWN0cworb24gdGhlIGN1cnJlbnQgZnVuY3Rpb24uIGBBU1NF
UlRfKmAgdmVyc2lvbnMgZ2VuZXJhdGUgZmF0YWwgZmFpbHVyZXMgd2hlbiB0aGV5CitmYWlsLCBh
bmQgKiphYm9ydCB0aGUgY3VycmVudCBmdW5jdGlvbioqLiBgRVhQRUNUXypgIHZlcnNpb25zIGdl
bmVyYXRlIG5vbmZhdGFsCitmYWlsdXJlcywgd2hpY2ggZG9uJ3QgYWJvcnQgdGhlIGN1cnJlbnQg
ZnVuY3Rpb24uIFVzdWFsbHkgYEVYUEVDVF8qYCBhcmUKK3ByZWZlcnJlZCwgYXMgdGhleSBhbGxv
dyBtb3JlIHRoYW4gb25lIGZhaWx1cmUgdG8gYmUgcmVwb3J0ZWQgaW4gYSB0ZXN0LgorSG93ZXZl
ciwgeW91IHNob3VsZCB1c2UgYEFTU0VSVF8qYCBpZiBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8g
Y29udGludWUgd2hlbiB0aGUKK2Fzc2VydGlvbiBpbiBxdWVzdGlvbiBmYWlscy4KKworU2luY2Ug
YSBmYWlsZWQgYEFTU0VSVF8qYCByZXR1cm5zIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gaW1t
ZWRpYXRlbHksCitwb3NzaWJseSBza2lwcGluZyBjbGVhbi11cCBjb2RlIHRoYXQgY29tZXMgYWZ0
ZXIgaXQsIGl0IG1heSBjYXVzZSBhIHNwYWNlIGxlYWsuCitEZXBlbmRpbmcgb24gdGhlIG5hdHVy
ZSBvZiB0aGUgbGVhaywgaXQgbWF5IG9yIG1heSBub3QgYmUgd29ydGggZml4aW5nIC0gc28ga2Vl
cAordGhpcyBpbiBtaW5kIGlmIHlvdSBnZXQgYSBoZWFwIGNoZWNrZXIgZXJyb3IgaW4gYWRkaXRp
b24gdG8gYXNzZXJ0aW9uIGVycm9ycy4KKworVG8gcHJvdmlkZSBhIGN1c3RvbSBmYWlsdXJlIG1l
c3NhZ2UsIHNpbXBseSBzdHJlYW0gaXQgaW50byB0aGUgbWFjcm8gdXNpbmcgdGhlCitgPDxgIG9w
ZXJhdG9yLCBvciBhIHNlcXVlbmNlIG9mIHN1Y2ggb3BlcmF0b3JzLiBBbiBleGFtcGxlOgorCitg
YGBjKysKK0FTU0VSVF9FUSh4LnNpemUoKSwgeS5zaXplKCkpIDw8ICJWZWN0b3JzIHggYW5kIHkg
YXJlIG9mIHVuZXF1YWwgbGVuZ3RoIjsKKworZm9yIChpbnQgaSA9IDA7IGkgPCB4LnNpemUoKTsg
KytpKSB7CisgIEVYUEVDVF9FUSh4W2ldLCB5W2ldKSA8PCAiVmVjdG9ycyB4IGFuZCB5IGRpZmZl
ciBhdCBpbmRleCAiIDw8IGk7Cit9CitgYGAKKworQW55dGhpbmcgdGhhdCBjYW4gYmUgc3RyZWFt
ZWQgdG8gYW4gYG9zdHJlYW1gIGNhbiBiZSBzdHJlYW1lZCB0byBhbiBhc3NlcnRpb24KK21hY3Jv
LS1pbiBwYXJ0aWN1bGFyLCBDIHN0cmluZ3MgYW5kIGBzdHJpbmdgIG9iamVjdHMuIElmIGEgd2lk
ZSBzdHJpbmcKKyhgd2NoYXJfdCpgLCBgVENIQVIqYCBpbiBgVU5JQ09ERWAgbW9kZSBvbiBXaW5k
b3dzLCBvciBgc3RkOjp3c3RyaW5nYCkgaXMKK3N0cmVhbWVkIHRvIGFuIGFzc2VydGlvbiwgaXQg
d2lsbCBiZSB0cmFuc2xhdGVkIHRvIFVURi04IHdoZW4gcHJpbnRlZC4KKworIyMjIEJhc2ljIEFz
c2VydGlvbnMKKworVGhlc2UgYXNzZXJ0aW9ucyBkbyBiYXNpYyB0cnVlL2ZhbHNlIGNvbmRpdGlv
biB0ZXN0aW5nLgorCitGYXRhbCBhc3NlcnRpb24gICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2Vy
dGlvbiAgICAgICAgIHwgVmVyaWZpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLQorYEFTU0VSVF9U
UlVFKGNvbmRpdGlvbik7YCAgfCBgRVhQRUNUX1RSVUUoY29uZGl0aW9uKTtgICB8IGBjb25kaXRp
b25gIGlzIHRydWUKK2BBU1NFUlRfRkFMU0UoY29uZGl0aW9uKTtgIHwgYEVYUEVDVF9GQUxTRShj
b25kaXRpb24pO2AgfCBgY29uZGl0aW9uYCBpcyBmYWxzZQorCitSZW1lbWJlciwgd2hlbiB0aGV5
IGZhaWwsIGBBU1NFUlRfKmAgeWllbGRzIGEgZmF0YWwgZmFpbHVyZSBhbmQgcmV0dXJucyBmcm9t
IHRoZQorY3VycmVudCBmdW5jdGlvbiwgd2hpbGUgYEVYUEVDVF8qYCB5aWVsZHMgYSBub25mYXRh
bCBmYWlsdXJlLCBhbGxvd2luZyB0aGUKK2Z1bmN0aW9uIHRvIGNvbnRpbnVlIHJ1bm5pbmcuIElu
IGVpdGhlciBjYXNlLCBhbiBhc3NlcnRpb24gZmFpbHVyZSBtZWFucyBpdHMKK2NvbnRhaW5pbmcg
dGVzdCBmYWlscy4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKwor
IyMjIEJpbmFyeSBDb21wYXJpc29uCisKK1RoaXMgc2VjdGlvbiBkZXNjcmliZXMgYXNzZXJ0aW9u
cyB0aGF0IGNvbXBhcmUgdHdvIHZhbHVlcy4KKworRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgIHwg
Tm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgIHwgVmVyaWZpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tCitgQVNTRVJU
X0VRKHZhbDEsIHZhbDIpO2AgfCBgRVhQRUNUX0VRKHZhbDEsIHZhbDIpO2AgfCBgdmFsMSA9PSB2
YWwyYAorYEFTU0VSVF9ORSh2YWwxLCB2YWwyKTtgIHwgYEVYUEVDVF9ORSh2YWwxLCB2YWwyKTtg
IHwgYHZhbDEgIT0gdmFsMmAKK2BBU1NFUlRfTFQodmFsMSwgdmFsMik7YCB8IGBFWFBFQ1RfTFQo
dmFsMSwgdmFsMik7YCB8IGB2YWwxIDwgdmFsMmAKK2BBU1NFUlRfTEUodmFsMSwgdmFsMik7YCB8
IGBFWFBFQ1RfTEUodmFsMSwgdmFsMik7YCB8IGB2YWwxIDw9IHZhbDJgCitgQVNTRVJUX0dUKHZh
bDEsIHZhbDIpO2AgfCBgRVhQRUNUX0dUKHZhbDEsIHZhbDIpO2AgfCBgdmFsMSA+IHZhbDJgCitg
QVNTRVJUX0dFKHZhbDEsIHZhbDIpO2AgfCBgRVhQRUNUX0dFKHZhbDEsIHZhbDIpO2AgfCBgdmFs
MSA+PSB2YWwyYAorCitWYWx1ZSBhcmd1bWVudHMgbXVzdCBiZSBjb21wYXJhYmxlIGJ5IHRoZSBh
c3NlcnRpb24ncyBjb21wYXJpc29uIG9wZXJhdG9yIG9yCit5b3UnbGwgZ2V0IGEgY29tcGlsZXIg
ZXJyb3IuIFdlIHVzZWQgdG8gcmVxdWlyZSB0aGUgYXJndW1lbnRzIHRvIHN1cHBvcnQgdGhlCitg
PDxgIG9wZXJhdG9yIGZvciBzdHJlYW1pbmcgdG8gYW4gYG9zdHJlYW1gLCBidXQgaXQncyBubyBs
b25nZXIgbmVjZXNzYXJ5LiBJZgorYDw8YCBpcyBzdXBwb3J0ZWQsIGl0IHdpbGwgYmUgY2FsbGVk
IHRvIHByaW50IHRoZSBhcmd1bWVudHMgd2hlbiB0aGUgYXNzZXJ0aW9uCitmYWlsczsgb3RoZXJ3
aXNlIGdvb2dsZXRlc3Qgd2lsbCBhdHRlbXB0IHRvIHByaW50IHRoZW0gaW4gdGhlIGJlc3Qgd2F5
IGl0IGNhbi4KK0ZvciBtb3JlIGRldGFpbHMgYW5kIGhvdyB0byBjdXN0b21pemUgdGhlIHByaW50
aW5nIG9mIHRoZSBhcmd1bWVudHMsIHNlZQorZ01vY2sgW3JlY2lwZV0oLi4vLi4vZ29vZ2xlbW9j
ay9kb2NzL0Nvb2tCb29rLm1kI3RlYWNoaW5nLWdvb2dsZS1tb2NrLWhvdy10by1wcmludC15b3Vy
LXZhbHVlcykuKS4KKworVGhlc2UgYXNzZXJ0aW9ucyBjYW4gd29yayB3aXRoIGEgdXNlci1kZWZp
bmVkIHR5cGUsIGJ1dCBvbmx5IGlmIHlvdSBkZWZpbmUgdGhlCitjb3JyZXNwb25kaW5nIGNvbXBh
cmlzb24gb3BlcmF0b3IgKGUuZy4gYD09YCwgYDxgLCBldGMpLiBTaW5jZSB0aGlzIGlzCitkaXNj
b3VyYWdlZCBieSB0aGUgR29vZ2xlIFtDKysgU3R5bGUKK0d1aWRlXShodHRwczovL2dvb2dsZS5n
aXRodWIuaW8vc3R5bGVndWlkZS9jcHBndWlkZS5odG1sI09wZXJhdG9yX092ZXJsb2FkaW5nKSwK
K3lvdSBtYXkgbmVlZCB0byB1c2UgYEFTU0VSVF9UUlVFKClgIG9yIGBFWFBFQ1RfVFJVRSgpYCB0
byBhc3NlcnQgdGhlIGVxdWFsaXR5IG9mCit0d28gb2JqZWN0cyBvZiBhIHVzZXItZGVmaW5lZCB0
eXBlLgorCitIb3dldmVyLCB3aGVuIHBvc3NpYmxlLCBgQVNTRVJUX0VRKGFjdHVhbCwgZXhwZWN0
ZWQpYCBpcyBwcmVmZXJyZWQgdG8KK2BBU1NFUlRfVFJVRShhY3R1YWwgPT0gZXhwZWN0ZWQpYCwg
c2luY2UgaXQgdGVsbHMgeW91IGBhY3R1YWxgIGFuZCBgZXhwZWN0ZWRgJ3MKK3ZhbHVlcyBvbiBm
YWlsdXJlLgorCitBcmd1bWVudHMgYXJlIGFsd2F5cyBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLiBU
aGVyZWZvcmUsIGl0J3MgT0sgZm9yIHRoZQorYXJndW1lbnRzIHRvIGhhdmUgc2lkZSBlZmZlY3Rz
LiBIb3dldmVyLCBhcyB3aXRoIGFueSBvcmRpbmFyeSBDL0MrKyBmdW5jdGlvbiwKK3RoZSBhcmd1
bWVudHMnIGV2YWx1YXRpb24gb3JkZXIgaXMgdW5kZWZpbmVkIChpLmUuIHRoZSBjb21waWxlciBp
cyBmcmVlIHRvCitjaG9vc2UgYW55IG9yZGVyKSBhbmQgeW91ciBjb2RlIHNob3VsZCBub3QgZGVw
ZW5kIG9uIGFueSBwYXJ0aWN1bGFyIGFyZ3VtZW50CitldmFsdWF0aW9uIG9yZGVyLgorCitgQVNT
RVJUX0VRKClgIGRvZXMgcG9pbnRlciBlcXVhbGl0eSBvbiBwb2ludGVycy4gSWYgdXNlZCBvbiB0
d28gQyBzdHJpbmdzLCBpdAordGVzdHMgaWYgdGhleSBhcmUgaW4gdGhlIHNhbWUgbWVtb3J5IGxv
Y2F0aW9uLCBub3QgaWYgdGhleSBoYXZlIHRoZSBzYW1lIHZhbHVlLgorVGhlcmVmb3JlLCBpZiB5
b3Ugd2FudCB0byBjb21wYXJlIEMgc3RyaW5ncyAoZS5nLiBgY29uc3QgY2hhcipgKSBieSB2YWx1
ZSwgdXNlCitgQVNTRVJUX1NUUkVRKClgLCB3aGljaCB3aWxsIGJlIGRlc2NyaWJlZCBsYXRlciBv
bi4gSW4gcGFydGljdWxhciwgdG8gYXNzZXJ0Cit0aGF0IGEgQyBzdHJpbmcgaXMgYE5VTExgLCB1
c2UgYEFTU0VSVF9TVFJFUShjX3N0cmluZywgTlVMTClgLiBDb25zaWRlciB1c2UKK2BBU1NFUlRf
RVEoY19zdHJpbmcsIG51bGxwdHIpYCBpZiBjKysxMSBpcyBzdXBwb3J0ZWQuIFRvIGNvbXBhcmUg
dHdvIGBzdHJpbmdgCitvYmplY3RzLCB5b3Ugc2hvdWxkIHVzZSBgQVNTRVJUX0VRYC4KKworV2hl
biBkb2luZyBwb2ludGVyIGNvbXBhcmlzb25zIHVzZSBgKl9FUShwdHIsIG51bGxwdHIpYCBhbmQg
YCpfTkUocHRyLCBudWxscHRyKWAKK2luc3RlYWQgb2YgYCpfRVEocHRyLCBOVUxMKWAgYW5kIGAq
X05FKHB0ciwgTlVMTClgLiBUaGlzIGlzIGJlY2F1c2UgYG51bGxwdHJgIGlzCit0eXBlZCB3aGls
ZSBgTlVMTGAgaXMgbm90LiBTZWUgW0ZBUV0oZmFxLm1kI3doeS1kb2VzLWdvb2dsZS10ZXN0LXN1
cHBvcnQtZXhwZWN0X2VxbnVsbC1wdHItYW5kLWFzc2VydF9lcW51bGwtcHRyLWJ1dC1ub3QtZXhw
ZWN0X25lbnVsbC1wdHItYW5kLWFzc2VydF9uZW51bGwtcHRyKQorZm9yIG1vcmUgZGV0YWlscy4K
KworSWYgeW91J3JlIHdvcmtpbmcgd2l0aCBmbG9hdGluZyBwb2ludCBudW1iZXJzLCB5b3UgbWF5
IHdhbnQgdG8gdXNlIHRoZSBmbG9hdGluZworcG9pbnQgdmFyaWF0aW9ucyBvZiBzb21lIG9mIHRo
ZXNlIG1hY3JvcyBpbiBvcmRlciB0byBhdm9pZCBwcm9ibGVtcyBjYXVzZWQgYnkKK3JvdW5kaW5n
LiBTZWUgW0FkdmFuY2VkIGdvb2dsZXRlc3QgVG9waWNzXShhZHZhbmNlZC5tZCkgZm9yIGRldGFp
bHMuCisKK01hY3JvcyBpbiB0aGlzIHNlY3Rpb24gd29yayB3aXRoIGJvdGggbmFycm93IGFuZCB3
aWRlIHN0cmluZyBvYmplY3RzIChgc3RyaW5nYAorYW5kIGB3c3RyaW5nYCkuCisKKyoqQXZhaWxh
YmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyoqSGlzdG9yaWNhbCBub3RlKio6IEJl
Zm9yZSBGZWJydWFyeSAyMDE2IGAqX0VRYCBoYWQgYSBjb252ZW50aW9uIG9mIGNhbGxpbmcgaXQK
K2FzIGBBU1NFUlRfRVEoZXhwZWN0ZWQsIGFjdHVhbClgLCBzbyBsb3RzIG9mIGV4aXN0aW5nIGNv
ZGUgdXNlcyB0aGlzIG9yZGVyLiBOb3cKK2AqX0VRYCB0cmVhdHMgYm90aCBwYXJhbWV0ZXJzIGlu
IHRoZSBzYW1lIHdheS4KKworIyMjIFN0cmluZyBDb21wYXJpc29uCisKK1RoZSBhc3NlcnRpb25z
IGluIHRoaXMgZ3JvdXAgY29tcGFyZSB0d28gKipDIHN0cmluZ3MqKi4gSWYgeW91IHdhbnQgdG8g
Y29tcGFyZQordHdvIGBzdHJpbmdgIG9iamVjdHMsIHVzZSBgRVhQRUNUX0VRYCwgYEVYUEVDVF9O
RWAsIGFuZCBldGMgaW5zdGVhZC4KKworfCBGYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAg
IHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICB8IFZlcmlmaWVzICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8Cit8
IGBBU1NFUlRfU1RSRVEoc3RyMSwgc3RyMik7YCAgICAgfCBgRVhQRUNUX1NUUkVRKHN0cjEsIHN0
cjIpO2AgICAgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSB0aGUgc2FtZSBjb250ZW50ICAgICAg
ICAgICAgICAgICAgfAorfCBgQVNTRVJUX1NUUk5FKHN0cjEsIHN0cjIpO2AgICAgIHwgYEVYUEVD
VF9TVFJORShzdHIxLCBzdHIyKTtgICAgICB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUgZGlmZmVy
ZW50IGNvbnRlbnRzICAgICAgICAgICAgICAgIHwKK3wgYEFTU0VSVF9TVFJDQVNFRVEoc3RyMSwg
c3RyMik7YCB8IGBFWFBFQ1RfU1RSQ0FTRUVRKHN0cjEsIHN0cjIpO2AgfCB0aGUgdHdvIEMgc3Ry
aW5ncyBoYXZlIHRoZSBzYW1lIGNvbnRlbnQsIGlnbm9yaW5nIGNhc2UgICB8Cit8IGBBU1NFUlRf
U1RSQ0FTRU5FKHN0cjEsIHN0cjIpO2AgfCBgRVhQRUNUX1NUUkNBU0VORShzdHIxLCBzdHIyKTtg
IHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSBkaWZmZXJlbnQgY29udGVudHMsIGlnbm9yaW5nIGNh
c2UgfAorCitOb3RlIHRoYXQgIkNBU0UiIGluIGFuIGFzc2VydGlvbiBuYW1lIG1lYW5zIHRoYXQg
Y2FzZSBpcyBpZ25vcmVkLiBBIGBOVUxMYAorcG9pbnRlciBhbmQgYW4gZW1wdHkgc3RyaW5nIGFy
ZSBjb25zaWRlcmVkICpkaWZmZXJlbnQqLgorCitgKlNUUkVRKmAgYW5kIGAqU1RSTkUqYCBhbHNv
IGFjY2VwdCB3aWRlIEMgc3RyaW5ncyAoYHdjaGFyX3QqYCkuIElmIGEgY29tcGFyaXNvbgorb2Yg
dHdvIHdpZGUgc3RyaW5ncyBmYWlscywgdGhlaXIgdmFsdWVzIHdpbGwgYmUgcHJpbnRlZCBhcyBV
VEYtOCBuYXJyb3cgc3RyaW5ncy4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3Ms
IE1hYy4KKworKipTZWUgYWxzbyoqOiBGb3IgbW9yZSBzdHJpbmcgY29tcGFyaXNvbiB0cmlja3Mg
KHN1YnN0cmluZywgcHJlZml4LCBzdWZmaXgsIGFuZAorcmVndWxhciBleHByZXNzaW9uIG1hdGNo
aW5nLCBmb3IgZXhhbXBsZSksIHNlZQorW3RoaXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUv
Z29vZ2xldGVzdC9ibG9iL21hc3Rlci9nb29nbGV0ZXN0L2RvY3MvYWR2YW5jZWQubWQpCitpbiB0
aGUgQWR2YW5jZWQgZ29vZ2xldGVzdCBHdWlkZS4KKworIyMgU2ltcGxlIFRlc3RzCisKK1RvIGNy
ZWF0ZSBhIHRlc3Q6CisKKzEuICBVc2UgdGhlIGBURVNUKClgIG1hY3JvIHRvIGRlZmluZSBhbmQg
bmFtZSBhIHRlc3QgZnVuY3Rpb24sIFRoZXNlIGFyZQorICAgIG9yZGluYXJ5IEMrKyBmdW5jdGlv
bnMgdGhhdCBkb24ndCByZXR1cm4gYSB2YWx1ZS4KKzEuICBJbiB0aGlzIGZ1bmN0aW9uLCBhbG9u
ZyB3aXRoIGFueSB2YWxpZCBDKysgc3RhdGVtZW50cyB5b3Ugd2FudCB0byBpbmNsdWRlLAorICAg
IHVzZSB0aGUgdmFyaW91cyBnb29nbGV0ZXN0IGFzc2VydGlvbnMgdG8gY2hlY2sgdmFsdWVzLgor
MS4gIFRoZSB0ZXN0J3MgcmVzdWx0IGlzIGRldGVybWluZWQgYnkgdGhlIGFzc2VydGlvbnM7IGlm
IGFueSBhc3NlcnRpb24gaW4gdGhlCisgICAgdGVzdCBmYWlscyAoZWl0aGVyIGZhdGFsbHkgb3Ig
bm9uLWZhdGFsbHkpLCBvciBpZiB0aGUgdGVzdCBjcmFzaGVzLCB0aGUKKyAgICBlbnRpcmUgdGVz
dCBmYWlscy4gT3RoZXJ3aXNlLCBpdCBzdWNjZWVkcy4KKworYGBgYysrCitURVNUKFRlc3RDYXNl
TmFtZSwgVGVzdE5hbWUpIHsKKyAgLi4uIHRlc3QgYm9keSAuLi4KK30KK2BgYAorCitgVEVTVCgp
YCBhcmd1bWVudHMgZ28gZnJvbSBnZW5lcmFsIHRvIHNwZWNpZmljLiBUaGUgKmZpcnN0KiBhcmd1
bWVudCBpcyB0aGUgbmFtZQorb2YgdGhlIHRlc3QgY2FzZSwgYW5kIHRoZSAqc2Vjb25kKiBhcmd1
bWVudCBpcyB0aGUgdGVzdCdzIG5hbWUgd2l0aGluIHRoZSB0ZXN0CitjYXNlLiBCb3RoIG5hbWVz
IG11c3QgYmUgdmFsaWQgQysrIGlkZW50aWZpZXJzLCBhbmQgdGhleSBzaG91bGQgbm90IGNvbnRh
aW4KK3VuZGVyc2NvcmUgKGBfYCkuIEEgdGVzdCdzICpmdWxsIG5hbWUqIGNvbnNpc3RzIG9mIGl0
cyBjb250YWluaW5nIHRlc3QgY2FzZSBhbmQKK2l0cyBpbmRpdmlkdWFsIG5hbWUuIFRlc3RzIGZy
b20gZGlmZmVyZW50IHRlc3QgY2FzZXMgY2FuIGhhdmUgdGhlIHNhbWUKK2luZGl2aWR1YWwgbmFt
ZS4KKworRm9yIGV4YW1wbGUsIGxldCdzIHRha2UgYSBzaW1wbGUgaW50ZWdlciBmdW5jdGlvbjoK
KworYGBgYysrCitpbnQgRmFjdG9yaWFsKGludCBuKTsgIC8vIFJldHVybnMgdGhlIGZhY3Rvcmlh
bCBvZiBuCitgYGAKKworQSB0ZXN0IGNhc2UgZm9yIHRoaXMgZnVuY3Rpb24gbWlnaHQgbG9vayBs
aWtlOgorCitgYGBjKysKKy8vIFRlc3RzIGZhY3RvcmlhbCBvZiAwLgorVEVTVChGYWN0b3JpYWxU
ZXN0LCBIYW5kbGVzWmVyb0lucHV0KSB7CisgIEVYUEVDVF9FUShGYWN0b3JpYWwoMCksIDEpOwor
fQorCisvLyBUZXN0cyBmYWN0b3JpYWwgb2YgcG9zaXRpdmUgbnVtYmVycy4KK1RFU1QoRmFjdG9y
aWFsVGVzdCwgSGFuZGxlc1Bvc2l0aXZlSW5wdXQpIHsKKyAgRVhQRUNUX0VRKEZhY3RvcmlhbCgx
KSwgMSk7CisgIEVYUEVDVF9FUShGYWN0b3JpYWwoMiksIDIpOworICBFWFBFQ1RfRVEoRmFjdG9y
aWFsKDMpLCA2KTsKKyAgRVhQRUNUX0VRKEZhY3RvcmlhbCg4KSwgNDAzMjApOworfQorYGBgCisK
K2dvb2dsZXRlc3QgZ3JvdXBzIHRoZSB0ZXN0IHJlc3VsdHMgYnkgdGVzdCBjYXNlcywgc28gbG9n
aWNhbGx5LXJlbGF0ZWQgdGVzdHMKK3Nob3VsZCBiZSBpbiB0aGUgc2FtZSB0ZXN0IGNhc2U7IGlu
IG90aGVyIHdvcmRzLCB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlaXIKK2BURVNUKClgIHNob3Vs
ZCBiZSB0aGUgc2FtZS4gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHdlIGhhdmUgdHdvIHRlc3RzLAor
YEhhbmRsZXNaZXJvSW5wdXRgIGFuZCBgSGFuZGxlc1Bvc2l0aXZlSW5wdXRgLCB0aGF0IGJlbG9u
ZyB0byB0aGUgc2FtZSB0ZXN0IGNhc2UKK2BGYWN0b3JpYWxUZXN0YC4KKworV2hlbiBuYW1pbmcg
eW91ciB0ZXN0IGNhc2VzIGFuZCB0ZXN0cywgeW91IHNob3VsZCBmb2xsb3cgdGhlIHNhbWUgY29u
dmVudGlvbiBhcworZm9yIFtuYW1pbmcgZnVuY3Rpb25zIGFuZAorY2xhc3Nlc10oaHR0cHM6Ly9n
b29nbGUuZ2l0aHViLmlvL3N0eWxlZ3VpZGUvY3BwZ3VpZGUuaHRtbCNGdW5jdGlvbl9OYW1lcyku
CisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIFRlc3QgRml4
dHVyZXM6IFVzaW5nIHRoZSBTYW1lIERhdGEgQ29uZmlndXJhdGlvbiBmb3IgTXVsdGlwbGUgVGVz
dHMKKworSWYgeW91IGZpbmQgeW91cnNlbGYgd3JpdGluZyB0d28gb3IgbW9yZSB0ZXN0cyB0aGF0
IG9wZXJhdGUgb24gc2ltaWxhciBkYXRhLCB5b3UKK2NhbiB1c2UgYSAqdGVzdCBmaXh0dXJlKi4g
SXQgYWxsb3dzIHlvdSB0byByZXVzZSB0aGUgc2FtZSBjb25maWd1cmF0aW9uIG9mCitvYmplY3Rz
IGZvciBzZXZlcmFsIGRpZmZlcmVudCB0ZXN0cy4KKworVG8gY3JlYXRlIGEgZml4dHVyZToKKwor
MS4gIERlcml2ZSBhIGNsYXNzIGZyb20gYDo6dGVzdGluZzo6VGVzdGAgLiBTdGFydCBpdHMgYm9k
eSB3aXRoIGBwcm90ZWN0ZWQ6YCBhcworICAgIHdlJ2xsIHdhbnQgdG8gYWNjZXNzIGZpeHR1cmUg
bWVtYmVycyBmcm9tIHN1Yi1jbGFzc2VzLgorMS4gIEluc2lkZSB0aGUgY2xhc3MsIGRlY2xhcmUg
YW55IG9iamVjdHMgeW91IHBsYW4gdG8gdXNlLgorMS4gIElmIG5lY2Vzc2FyeSwgd3JpdGUgYSBk
ZWZhdWx0IGNvbnN0cnVjdG9yIG9yIGBTZXRVcCgpYCBmdW5jdGlvbiB0byBwcmVwYXJlCisgICAg
dGhlIG9iamVjdHMgZm9yIGVhY2ggdGVzdC4gQSBjb21tb24gbWlzdGFrZSBpcyB0byBzcGVsbCBg
U2V0VXAoKWAgYXMKKyAgICAqKmBTZXR1cCgpYCoqIHdpdGggYSBzbWFsbCBgdWAgLSBVc2UgYG92
ZXJyaWRlYCBpbiBDKysxMSB0byBtYWtlIHN1cmUgeW91CisgICAgc3BlbGxlZCBpdCBjb3JyZWN0
bHkKKzEuICBJZiBuZWNlc3NhcnksIHdyaXRlIGEgZGVzdHJ1Y3RvciBvciBgVGVhckRvd24oKWAg
ZnVuY3Rpb24gdG8gcmVsZWFzZSBhbnkKKyAgICByZXNvdXJjZXMgeW91IGFsbG9jYXRlZCBpbiBg
U2V0VXAoKWAgLiBUbyBsZWFybiB3aGVuIHlvdSBzaG91bGQgdXNlIHRoZQorICAgIGNvbnN0cnVj
dG9yL2Rlc3RydWN0b3IgYW5kIHdoZW4geW91IHNob3VsZCB1c2UgYFNldFVwKCkvVGVhckRvd24o
KWAsIHJlYWQKKyAgICB0aGlzIFtGQVFdKGZhcS5tZCNzaG91bGQtaS11c2UtdGhlLWNvbnN0cnVj
dG9yZGVzdHJ1Y3Rvci1vZi10aGUtdGVzdC1maXh0dXJlLW9yLXNldHVwdGVhcmRvd24pIGVudHJ5
LgorMS4gIElmIG5lZWRlZCwgZGVmaW5lIHN1YnJvdXRpbmVzIGZvciB5b3VyIHRlc3RzIHRvIHNo
YXJlLgorCitXaGVuIHVzaW5nIGEgZml4dHVyZSwgdXNlIGBURVNUX0YoKWAgaW5zdGVhZCBvZiBg
VEVTVCgpYCBhcyBpdCBhbGxvd3MgeW91IHRvCithY2Nlc3Mgb2JqZWN0cyBhbmQgc3Vicm91dGlu
ZXMgaW4gdGhlIHRlc3QgZml4dHVyZToKKworYGBgYysrCitURVNUX0YoVGVzdENhc2VOYW1lLCBU
ZXN0TmFtZSkgeworICAuLi4gdGVzdCBib2R5IC4uLgorfQorYGBgCisKK0xpa2UgYFRFU1QoKWAs
IHRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgdGVzdCBjYXNlIG5hbWUsIGJ1dCBmb3IgYFRFU1Rf
RigpYCB0aGlzCittdXN0IGJlIHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuIFlv
dSd2ZSBwcm9iYWJseSBndWVzc2VkOiBgX0ZgIGlzIGZvcgorZml4dHVyZS4KKworVW5mb3J0dW5h
dGVseSwgdGhlIEMrKyBtYWNybyBzeXN0ZW0gZG9lcyBub3QgYWxsb3cgdXMgdG8gY3JlYXRlIGEg
c2luZ2xlIG1hY3JvCit0aGF0IGNhbiBoYW5kbGUgYm90aCB0eXBlcyBvZiB0ZXN0cy4gVXNpbmcg
dGhlIHdyb25nIG1hY3JvIGNhdXNlcyBhIGNvbXBpbGVyCitlcnJvci4KKworQWxzbywgeW91IG11
c3QgZmlyc3QgZGVmaW5lIGEgdGVzdCBmaXh0dXJlIGNsYXNzIGJlZm9yZSB1c2luZyBpdCBpbiBh
CitgVEVTVF9GKClgLCBvciB5b3UnbGwgZ2V0IHRoZSBjb21waWxlciBlcnJvciAiYHZpcnR1YWwg
b3V0c2lkZSBjbGFzcworZGVjbGFyYXRpb25gIi4KKworRm9yIGVhY2ggdGVzdCBkZWZpbmVkIHdp
dGggYFRFU1RfRigpYCAsIGdvb2dsZXRlc3Qgd2lsbCBjcmVhdGUgYSAqZnJlc2gqIHRlc3QKK2Zp
eHR1cmUgYXQgcnVudGltZSwgaW1tZWRpYXRlbHkgaW5pdGlhbGl6ZSBpdCB2aWEgYFNldFVwKClg
ICwgcnVuIHRoZSB0ZXN0LAorY2xlYW4gdXAgYnkgY2FsbGluZyBgVGVhckRvd24oKWAgLCBhbmQg
dGhlbiBkZWxldGUgdGhlIHRlc3QgZml4dHVyZS4gTm90ZSB0aGF0CitkaWZmZXJlbnQgdGVzdHMg
aW4gdGhlIHNhbWUgdGVzdCBjYXNlIGhhdmUgZGlmZmVyZW50IHRlc3QgZml4dHVyZSBvYmplY3Rz
LCBhbmQKK2dvb2dsZXRlc3QgYWx3YXlzIGRlbGV0ZXMgYSB0ZXN0IGZpeHR1cmUgYmVmb3JlIGl0
IGNyZWF0ZXMgdGhlIG5leHQgb25lLgorZ29vZ2xldGVzdCBkb2VzICoqbm90KiogcmV1c2UgdGhl
IHNhbWUgdGVzdCBmaXh0dXJlIGZvciBtdWx0aXBsZSB0ZXN0cy4gQW55CitjaGFuZ2VzIG9uZSB0
ZXN0IG1ha2VzIHRvIHRoZSBmaXh0dXJlIGRvIG5vdCBhZmZlY3Qgb3RoZXIgdGVzdHMuCisKK0Fz
IGFuIGV4YW1wbGUsIGxldCdzIHdyaXRlIHRlc3RzIGZvciBhIEZJRk8gcXVldWUgY2xhc3MgbmFt
ZWQgYFF1ZXVlYCwgd2hpY2ggaGFzCit0aGUgZm9sbG93aW5nIGludGVyZmFjZToKKworYGBgYysr
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRT4gIC8vIEUgaXMgdGhlIGVsZW1lbnQgdHlwZS4KK2NsYXNz
IFF1ZXVlIHsKKyBwdWJsaWM6CisgIFF1ZXVlKCk7CisgIHZvaWQgRW5xdWV1ZShjb25zdCBFJiBl
bGVtZW50KTsKKyAgRSogRGVxdWV1ZSgpOyAgLy8gUmV0dXJucyBOVUxMIGlmIHRoZSBxdWV1ZSBp
cyBlbXB0eS4KKyAgc2l6ZV90IHNpemUoKSBjb25zdDsKKyAgLi4uCit9OworYGBgCisKK0ZpcnN0
LCBkZWZpbmUgYSBmaXh0dXJlIGNsYXNzLiBCeSBjb252ZW50aW9uLCB5b3Ugc2hvdWxkIGdpdmUg
aXQgdGhlIG5hbWUKK2BGb29UZXN0YCB3aGVyZSBgRm9vYCBpcyB0aGUgY2xhc3MgYmVpbmcgdGVz
dGVkLgorCitgYGBjKysKK2NsYXNzIFF1ZXVlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qg
eworIHByb3RlY3RlZDoKKyAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIHsKKyAgICAgcTFfLkVucXVl
dWUoMSk7CisgICAgIHEyXy5FbnF1ZXVlKDIpOworICAgICBxMl8uRW5xdWV1ZSgzKTsKKyAgfQor
CisgIC8vIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZSB7fQorCisgIFF1ZXVlPGludD4gcTBfOwor
ICBRdWV1ZTxpbnQ+IHExXzsKKyAgUXVldWU8aW50PiBxMl87Cit9OworYGBgCisKK0luIHRoaXMg
Y2FzZSwgYFRlYXJEb3duKClgIGlzIG5vdCBuZWVkZWQgc2luY2Ugd2UgZG9uJ3QgaGF2ZSB0byBj
bGVhbiB1cCBhZnRlcgorZWFjaCB0ZXN0LCBvdGhlciB0aGFuIHdoYXQncyBhbHJlYWR5IGRvbmUg
YnkgdGhlIGRlc3RydWN0b3IuCisKK05vdyB3ZSdsbCB3cml0ZSB0ZXN0cyB1c2luZyBgVEVTVF9G
KClgIGFuZCB0aGlzIGZpeHR1cmUuCisKK2BgYGMrKworVEVTVF9GKFF1ZXVlVGVzdCwgSXNFbXB0
eUluaXRpYWxseSkgeworICBFWFBFQ1RfRVEocTBfLnNpemUoKSwgMCk7Cit9CisKK1RFU1RfRihR
dWV1ZVRlc3QsIERlcXVldWVXb3JrcykgeworICBpbnQqIG4gPSBxMF8uRGVxdWV1ZSgpOworICBF
WFBFQ1RfRVEobiwgbnVsbHB0cik7CisKKyAgbiA9IHExXy5EZXF1ZXVlKCk7CisgIEFTU0VSVF9O
RShuLCBudWxscHRyKTsKKyAgRVhQRUNUX0VRKCpuLCAxKTsKKyAgRVhQRUNUX0VRKHExXy5zaXpl
KCksIDApOworICBkZWxldGUgbjsKKworICBuID0gcTJfLkRlcXVldWUoKTsKKyAgQVNTRVJUX05F
KG4sIG51bGxwdHIpOworICBFWFBFQ1RfRVEoKm4sIDIpOworICBFWFBFQ1RfRVEocTJfLnNpemUo
KSwgMSk7CisgIGRlbGV0ZSBuOworfQorYGBgCisKK1RoZSBhYm92ZSB1c2VzIGJvdGggYEFTU0VS
VF8qYCBhbmQgYEVYUEVDVF8qYCBhc3NlcnRpb25zLiBUaGUgcnVsZSBvZiB0aHVtYiBpcwordG8g
dXNlIGBFWFBFQ1RfKmAgd2hlbiB5b3Ugd2FudCB0aGUgdGVzdCB0byBjb250aW51ZSB0byByZXZl
YWwgbW9yZSBlcnJvcnMgYWZ0ZXIKK3RoZSBhc3NlcnRpb24gZmFpbHVyZSwgYW5kIHVzZSBgQVNT
RVJUXypgIHdoZW4gY29udGludWluZyBhZnRlciBmYWlsdXJlIGRvZXNuJ3QKK21ha2Ugc2Vuc2Uu
IEZvciBleGFtcGxlLCB0aGUgc2Vjb25kIGFzc2VydGlvbiBpbiB0aGUgYERlcXVldWVgIHRlc3Qg
aXMKKz1BU1NFUlRfTkUobnVsbHB0ciwgbik9LCBhcyB3ZSBuZWVkIHRvIGRlcmVmZXJlbmNlIHRo
ZSBwb2ludGVyIGBuYCBsYXRlciwgd2hpY2gKK3dvdWxkIGxlYWQgdG8gYSBzZWdmYXVsdCB3aGVu
IGBuYCBpcyBgTlVMTGAuCisKK1doZW4gdGhlc2UgdGVzdHMgcnVuLCB0aGUgZm9sbG93aW5nIGhh
cHBlbnM6CisKKzEuICBnb29nbGV0ZXN0IGNvbnN0cnVjdHMgYSBgUXVldWVUZXN0YCBvYmplY3Qg
KGxldCdzIGNhbGwgaXQgYHQxYCApLgorMS4gIGB0MS5TZXRVcCgpYCBpbml0aWFsaXplcyBgdDFg
IC4KKzEuICBUaGUgZmlyc3QgdGVzdCAoIGBJc0VtcHR5SW5pdGlhbGx5YCApIHJ1bnMgb24gYHQx
YCAuCisxLiAgYHQxLlRlYXJEb3duKClgIGNsZWFucyB1cCBhZnRlciB0aGUgdGVzdCBmaW5pc2hl
cy4KKzEuICBgdDFgIGlzIGRlc3RydWN0ZWQuCisxLiAgVGhlIGFib3ZlIHN0ZXBzIGFyZSByZXBl
YXRlZCBvbiBhbm90aGVyIGBRdWV1ZVRlc3RgIG9iamVjdCwgdGhpcyB0aW1lCisgICAgcnVubmlu
ZyB0aGUgYERlcXVldWVXb3Jrc2AgdGVzdC4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdp
bmRvd3MsIE1hYy4KKworCisjIyBJbnZva2luZyB0aGUgVGVzdHMKKworYFRFU1QoKWAgYW5kIGBU
RVNUX0YoKWAgaW1wbGljaXRseSByZWdpc3RlciB0aGVpciB0ZXN0cyB3aXRoIGdvb2dsZXRlc3Qu
IFNvLAordW5saWtlIHdpdGggbWFueSBvdGhlciBDKysgdGVzdGluZyBmcmFtZXdvcmtzLCB5b3Ug
ZG9uJ3QgaGF2ZSB0byByZS1saXN0IGFsbAoreW91ciBkZWZpbmVkIHRlc3RzIGluIG9yZGVyIHRv
IHJ1biB0aGVtLgorCitBZnRlciBkZWZpbmluZyB5b3VyIHRlc3RzLCB5b3UgY2FuIHJ1biB0aGVt
IHdpdGggYFJVTl9BTExfVEVTVFMoKWAgLCB3aGljaAorcmV0dXJucyBgMGAgaWYgYWxsIHRoZSB0
ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3IgYDFgIG90aGVyd2lzZS4gTm90ZSB0aGF0CitgUlVOX0FM
TF9URVNUUygpYCBydW5zICphbGwgdGVzdHMqIGluIHlvdXIgbGluayB1bml0IC0tIHRoZXkgY2Fu
IGJlIGZyb20KK2RpZmZlcmVudCB0ZXN0IGNhc2VzLCBvciBldmVuIGRpZmZlcmVudCBzb3VyY2Ug
ZmlsZXMuCisKK1doZW4gaW52b2tlZCwgdGhlIGBSVU5fQUxMX1RFU1RTKClgIG1hY3JvOgorCisx
LiBTYXZlcyB0aGUgc3RhdGUgb2YgYWxsIGdvb2dsZXRlc3QgZmxhZ3MKKworKiAgIENyZWF0ZXMg
YSB0ZXN0IGZpeHR1cmUgb2JqZWN0IGZvciB0aGUgZmlyc3QgdGVzdC4KKworKiAgIEluaXRpYWxp
emVzIGl0IHZpYSBgU2V0VXAoKWAuCisKKyogICBSdW5zIHRoZSB0ZXN0IG9uIHRoZSBmaXh0dXJl
IG9iamVjdC4KKworKiAgIENsZWFucyB1cCB0aGUgZml4dHVyZSB2aWEgYFRlYXJEb3duKClgLgor
CisqICAgRGVsZXRlcyB0aGUgZml4dHVyZS4KKworKiBSZXN0b3JlcyB0aGUgc3RhdGUgb2YgYWxs
IGdvb2dsZXRlc3QgZmxhZ3MKKworKiAgIFJlcGVhdHMgdGhlIGFib3ZlIHN0ZXBzIGZvciB0aGUg
bmV4dCB0ZXN0LCB1bnRpbCBhbGwgdGVzdHMgaGF2ZSBydW4uCisKK0lmIGEgZmF0YWwgZmFpbHVy
ZSBoYXBwZW5zIHRoZSBzdWJzZXF1ZW50IHN0ZXBzIHdpbGwgYmUgc2tpcHBlZC4KKworPiBJTVBP
UlRBTlQ6IFlvdSBtdXN0ICoqbm90KiogaWdub3JlIHRoZSByZXR1cm4gdmFsdWUgb2YgYFJVTl9B
TExfVEVTVFMoKWAsIG9yCis+IHlvdSB3aWxsIGdldCBhIGNvbXBpbGVyIGVycm9yLiBUaGUgcmF0
aW9uYWxlIGZvciB0aGlzIGRlc2lnbiBpcyB0aGF0IHRoZQorPiBhdXRvbWF0ZWQgdGVzdGluZyBz
ZXJ2aWNlIGRldGVybWluZXMgd2hldGhlciBhIHRlc3QgaGFzIHBhc3NlZCBiYXNlZCBvbiBpdHMK
Kz4gZXhpdCBjb2RlLCBub3Qgb24gaXRzIHN0ZG91dC9zdGRlcnIgb3V0cHV0OyB0aHVzIHlvdXIg
YG1haW4oKWAgZnVuY3Rpb24gbXVzdAorPiByZXR1cm4gdGhlIHZhbHVlIG9mIGBSVU5fQUxMX1RF
U1RTKClgLgorPgorPiBBbHNvLCB5b3Ugc2hvdWxkIGNhbGwgYFJVTl9BTExfVEVTVFMoKWAgb25s
eSAqKm9uY2UqKi4gQ2FsbGluZyBpdCBtb3JlIHRoYW4KKz4gb25jZSBjb25mbGljdHMgd2l0aCBz
b21lIGFkdmFuY2VkIGdvb2dsZXRlc3QgZmVhdHVyZXMgKGUuZy4gdGhyZWFkLXNhZmUgW2RlYXRo
Cis+IHRlc3RzXShhZHZhbmNlZCNkZWF0aC10ZXN0cykpIGFuZCB0aHVzIGlzIG5vdCBzdXBwb3J0
ZWQuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIFdyaXRp
bmcgdGhlIG1haW4oKSBGdW5jdGlvbgorCitJbiBgZ29vZ2xlM2AsIHRoZSBzaW1wbGVzdCBhcHBy
b2FjaCBpcyB0byB1c2UgdGhlIGRlZmF1bHQgbWFpbigpIGZ1bmN0aW9uCitwcm92aWRlZCBieSBs
aW5raW5nIGluIGAiLy90ZXN0aW5nL2Jhc2UvcHVibGljOmd0ZXN0X21haW4iYC4gSWYgdGhhdCBk
b2Vzbid0Citjb3ZlciB3aGF0IHlvdSBuZWVkLCB5b3Ugc2hvdWxkIHdyaXRlIHlvdXIgb3duIG1h
aW4oKSBmdW5jdGlvbiwgd2hpY2ggc2hvdWxkCityZXR1cm4gdGhlIHZhbHVlIG9mIGBSVU5fQUxM
X1RFU1RTKClgLiBMaW5rIHRvIGAiLy90ZXN0aW5nL2Jhc2UvcHVibGljOmd1bml0ImAuCitZb3Ug
Y2FuIHN0YXJ0IGZyb20gdGhpcyBib2lsZXJwbGF0ZToKKworYGBgYysrCisjaW5jbHVkZSAidGhp
cy9wYWNrYWdlL2Zvby5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7
CisKKy8vIFRoZSBmaXh0dXJlIGZvciB0ZXN0aW5nIGNsYXNzIEZvby4KK2NsYXNzIEZvb1Rlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIC8vIFlvdSBjYW4gcmVt
b3ZlIGFueSBvciBhbGwgb2YgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgaWYgaXRzIGJvZHkKKyAg
Ly8gaXMgZW1wdHkuCisKKyAgRm9vVGVzdCgpIHsKKyAgICAgLy8gWW91IGNhbiBkbyBzZXQtdXAg
d29yayBmb3IgZWFjaCB0ZXN0IGhlcmUuCisgIH0KKworICB+Rm9vVGVzdCgpIG92ZXJyaWRlIHsK
KyAgICAgLy8gWW91IGNhbiBkbyBjbGVhbi11cCB3b3JrIHRoYXQgZG9lc24ndCB0aHJvdyBleGNl
cHRpb25zIGhlcmUuCisgIH0KKworICAvLyBJZiB0aGUgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0
b3IgYXJlIG5vdCBlbm91Z2ggZm9yIHNldHRpbmcgdXAKKyAgLy8gYW5kIGNsZWFuaW5nIHVwIGVh
Y2ggdGVzdCwgeW91IGNhbiBkZWZpbmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorCisgIHZvaWQg
U2V0VXAoKSBvdmVycmlkZSB7CisgICAgIC8vIENvZGUgaGVyZSB3aWxsIGJlIGNhbGxlZCBpbW1l
ZGlhdGVseSBhZnRlciB0aGUgY29uc3RydWN0b3IgKHJpZ2h0CisgICAgIC8vIGJlZm9yZSBlYWNo
IHRlc3QpLgorICB9CisKKyAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlIHsKKyAgICAgLy8gQ29k
ZSBoZXJlIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIGVhY2ggdGVzdCAocmlnaHQK
KyAgICAgLy8gYmVmb3JlIHRoZSBkZXN0cnVjdG9yKS4KKyAgfQorCisgIC8vIE9iamVjdHMgZGVj
bGFyZWQgaGVyZSBjYW4gYmUgdXNlZCBieSBhbGwgdGVzdHMgaW4gdGhlIHRlc3QgY2FzZSBmb3Ig
Rm9vLgorfTsKKworLy8gVGVzdHMgdGhhdCB0aGUgRm9vOjpCYXIoKSBtZXRob2QgZG9lcyBBYmMu
CitURVNUX0YoRm9vVGVzdCwgTWV0aG9kQmFyRG9lc0FiYykgeworICBjb25zdCBzdGQ6OnN0cmlu
ZyBpbnB1dF9maWxlcGF0aCA9ICJ0aGlzL3BhY2thZ2UvdGVzdGRhdGEvbXlpbnB1dGZpbGUuZGF0
IjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgb3V0cHV0X2ZpbGVwYXRoID0gInRoaXMvcGFja2FnZS90
ZXN0ZGF0YS9teW91dHB1dGZpbGUuZGF0IjsKKyAgRm9vIGY7CisgIEVYUEVDVF9FUShmLkJhcihp
bnB1dF9maWxlcGF0aCwgb3V0cHV0X2ZpbGVwYXRoKSwgMCk7Cit9CisKKy8vIFRlc3RzIHRoYXQg
Rm9vIGRvZXMgWHl6LgorVEVTVF9GKEZvb1Rlc3QsIERvZXNYeXopIHsKKyAgLy8gRXhlcmNpc2Vz
IHRoZSBYeXogZmVhdHVyZSBvZiBGb28uCit9CisKK30gIC8vIG5hbWVzcGFjZQorCitpbnQgbWFp
bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgm
YXJnYywgYXJndik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CitgYGAKKworCitUaGUg
YDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKWAgZnVuY3Rpb24gcGFyc2VzIHRoZSBjb21tYW5k
IGxpbmUgZm9yCitnb29nbGV0ZXN0IGZsYWdzLCBhbmQgcmVtb3ZlcyBhbGwgcmVjb2duaXplZCBm
bGFncy4gVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8KK2NvbnRyb2wgYSB0ZXN0IHByb2dyYW0ncyBi
ZWhhdmlvciB2aWEgdmFyaW91cyBmbGFncywgd2hpY2ggd2UnbGwgY292ZXIgaW4KK1tBZHZhbmNl
ZEd1aWRlXShhZHZhbmNlZC5tZCkuIFlvdSAqKm11c3QqKiBjYWxsIHRoaXMgZnVuY3Rpb24gYmVm
b3JlIGNhbGxpbmcKK2BSVU5fQUxMX1RFU1RTKClgLCBvciB0aGUgZmxhZ3Mgd29uJ3QgYmUgcHJv
cGVybHkgaW5pdGlhbGl6ZWQuCisKK09uIFdpbmRvd3MsIGBJbml0R29vZ2xlVGVzdCgpYCBhbHNv
IHdvcmtzIHdpdGggd2lkZSBzdHJpbmdzLCBzbyBpdCBjYW4gYmUgdXNlZAoraW4gcHJvZ3JhbXMg
Y29tcGlsZWQgaW4gYFVOSUNPREVgIG1vZGUgYXMgd2VsbC4KKworQnV0IG1heWJlIHlvdSB0aGlu
ayB0aGF0IHdyaXRpbmcgYWxsIHRob3NlIG1haW4oKSBmdW5jdGlvbnMgaXMgdG9vIG11Y2ggd29y
az8gV2UKK2FncmVlIHdpdGggeW91IGNvbXBsZXRlbHkgYW5kIHRoYXQncyB3aHkgR29vZ2xlIFRl
c3QgcHJvdmlkZXMgYSBiYXNpYworaW1wbGVtZW50YXRpb24gb2YgbWFpbigpLiBJZiBpdCBmaXRz
IHlvdXIgbmVlZHMsIHRoZW4ganVzdCBsaW5rIHlvdXIgdGVzdCB3aXRoCitndGVzdFxfbWFpbiBs
aWJyYXJ5IGFuZCB5b3UgYXJlIGdvb2QgdG8gZ28uCisKK05PVEU6IGBQYXJzZUdVbml0RmxhZ3Mo
KWAgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgSW5pdEdvb2dsZVRlc3QoKWAuCisKKworIyMg
S25vd24gTGltaXRhdGlvbnMKKworKiAgIEdvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHRvIGJlIHRo
cmVhZC1zYWZlLiBUaGUgaW1wbGVtZW50YXRpb24gaXMgdGhyZWFkLXNhZmUKKyAgICBvbiBzeXN0
ZW1zIHdoZXJlIHRoZSBgcHRocmVhZHNgIGxpYnJhcnkgaXMgYXZhaWxhYmxlLiBJdCBpcyBjdXJy
ZW50bHkKKyAgICBfdW5zYWZlXyB0byB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBmcm9tIHR3
byB0aHJlYWRzIGNvbmN1cnJlbnRseSBvbgorICAgIG90aGVyIHN5c3RlbXMgKGUuZy4gV2luZG93
cykuIEluIG1vc3QgdGVzdHMgdGhpcyBpcyBub3QgYW4gaXNzdWUgYXMgdXN1YWxseQorICAgIHRo
ZSBhc3NlcnRpb25zIGFyZSBkb25lIGluIHRoZSBtYWluIHRocmVhZC4gSWYgeW91IHdhbnQgdG8g
aGVscCwgeW91IGNhbgorICAgIHZvbHVudGVlciB0byBpbXBsZW1lbnQgdGhlIG5lY2Vzc2FyeSBz
eW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyBpbgorICAgIGBndGVzdC1wb3J0LmhgIGZvciB5b3Vy
IHBsYXRmb3JtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9zYW1w
bGVzLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9zYW1wbGVzLm1kCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4ZGNjYTM4MTQ5MWUxOTgyMzMyYzZkNDQ3MmNhODJkMGQwMjE3MDIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL3NhbXBsZXMubWQKQEAgLTAsMCAr
MSwyMiBAQAorIyBHb29nbGV0ZXN0IFNhbXBsZXMgeyNzYW1wbGVzfQorCitJZiB5b3UncmUgbGlr
ZSB1cywgeW91J2QgbGlrZSB0byBsb29rIGF0IFtnb29nbGV0ZXN0CitzYW1wbGVzLl0oaHR0cHM6
Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L3RyZWUvbWFzdGVyL2dvb2dsZXRlc3Qvc2Ft
cGxlcykKK1RoZSBzYW1wbGUgZGlyZWN0b3J5IGhhcyBhIG51bWJlciBvZiB3ZWxsLWNvbW1lbnRl
ZCBzYW1wbGVzIHNob3dpbmcgaG93IHRvIHVzZSBhCit2YXJpZXR5IG9mIGdvb2dsZXRlc3QgZmVh
dHVyZXMuCisKKyogICBTYW1wbGUgIzEgc2hvd3MgdGhlIGJhc2ljIHN0ZXBzIG9mIHVzaW5nIGdv
b2dsZXRlc3QgdG8gdGVzdCBDKysgZnVuY3Rpb25zLgorKiAgIFNhbXBsZSAjMiBzaG93cyBhIG1v
cmUgY29tcGxleCB1bml0IHRlc3QgZm9yIGEgY2xhc3Mgd2l0aCBtdWx0aXBsZSBtZW1iZXIKKyAg
ICBmdW5jdGlvbnMuCisqICAgU2FtcGxlICMzIHVzZXMgYSB0ZXN0IGZpeHR1cmUuCisqICAgU2Ft
cGxlICM0IHRlYWNoZXMgeW91IGhvdyB0byB1c2UgZ29vZ2xldGVzdCBhbmQgYGdvb2dsZXRlc3Qu
aGAgdG9nZXRoZXIgdG8KKyAgICBnZXQgdGhlIGJlc3Qgb2YgYm90aCBsaWJyYXJpZXMuCisqICAg
U2FtcGxlICM1IHB1dHMgc2hhcmVkIHRlc3RpbmcgbG9naWMgaW4gYSBiYXNlIHRlc3QgZml4dHVy
ZSwgYW5kIHJldXNlcyBpdCBpbgorICAgIGRlcml2ZWQgZml4dHVyZXMuCisqICAgU2FtcGxlICM2
IGRlbW9uc3RyYXRlcyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCisqICAgU2FtcGxlICM3IHRl
YWNoZXMgdGhlIGJhc2ljcyBvZiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorKiAgIFNhbXBs
ZSAjOCBzaG93cyB1c2luZyBgQ29tYmluZSgpYCBpbiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3Rz
LgorKiAgIFNhbXBsZSAjOSBzaG93cyB1c2Ugb2YgdGhlIGxpc3RlbmVyIEFQSSB0byBtb2RpZnkg
R29vZ2xlIFRlc3QncyBjb25zb2xlCisgICAgb3V0cHV0IGFuZCB0aGUgdXNlIG9mIGl0cyByZWZs
ZWN0aW9uIEFQSSB0byBpbnNwZWN0IHRlc3QgcmVzdWx0cy4KKyogICBTYW1wbGUgIzEwIHNob3dz
IHVzZSBvZiB0aGUgbGlzdGVuZXIgQVBJIHRvIGltcGxlbWVudCBhIHByaW1pdGl2ZSBtZW1vcnkK
KyAgICBsZWFrIGNoZWNrZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9p
bmNsdWRlL2d0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oCmluZGV4IDEyMWRjMWZiNWFjNWQ1OWEz
M2Q1MzAzNDA1OGVlZTkxYzIxMmEyMDguLjIwYzU0ZDg2OTUxOWY2OTMwZTdlYmZkMmMwODA1YmFj
YTQyMjE2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvZ3Rlc3QtZGVhdGgtdGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oCkBAIC0yNiwxOSArMjYsMTkgQEAKIC8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwogLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0
aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFu
ZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBoZWFkZXIgZmls
ZSBkZWZpbmVzIHRoZSBwdWJsaWMgQVBJIGZvciBkZWF0aCB0ZXN0cy4gIEl0IGlzCiAvLyAjaW5j
bHVkZWQgYnkgZ3Rlc3QuaCBzbyBhIHVzZXIgZG9lc24ndCBuZWVkIHRvIGluY2x1ZGUgdGhpcwog
Ly8gZGlyZWN0bHkuCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCiAKICNpZm5k
ZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9ERUFUSF9URVNUX0hfCiAjZGVmaW5lIEdURVNU
X0lOQ0xVREVfR1RFU1RfR1RFU1RfREVBVEhfVEVTVF9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVy
bmFsL2d0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCIKIAogbmFtZXNwYWNlIHRlc3Rpbmcgewog
CkBAIC01MSw2ICs1MSwxNyBAQCBHVEVTVF9ERUNMQVJFX3N0cmluZ18oZGVhdGhfdGVzdF9zdHls
ZSk7CiAKICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogCituYW1lc3BhY2UgaW50ZXJuYWwgewor
CisvLyBSZXR1cm5zIGEgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNhbGxl
ciBpcyBjdXJyZW50bHkKKy8vIGV4ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiB0aGUgZGVhdGgg
dGVzdCBjaGlsZCBwcm9jZXNzLiAgVG9vbHMgc3VjaCBhcworLy8gVmFsZ3JpbmQgaGVhcCBjaGVj
a2VycyBtYXkgbmVlZCB0aGlzIHRvIG1vZGlmeSB0aGVpciBiZWhhdmlvciBpbiBkZWF0aAorLy8g
dGVzdHMuICBJTVBPUlRBTlQ6IFRoaXMgaXMgYW4gaW50ZXJuYWwgdXRpbGl0eS4gIFVzaW5nIGl0
IG1heSBicmVhayB0aGUKKy8vIGltcGxlbWVudGF0aW9uIG9mIGRlYXRoIHRlc3RzLiAgVXNlciBj
b2RlIE1VU1QgTk9UIHVzZSBpdC4KK0dURVNUX0FQSV8gYm9vbCBJbkRlYXRoVGVzdENoaWxkKCk7
CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCiAvLyBUaGUgZm9sbG93aW5nIG1hY3JvcyBh
cmUgdXNlZnVsIGZvciB3cml0aW5nIGRlYXRoIHRlc3RzLgogCiAvLyBIZXJlJ3Mgd2hhdCBoYXBw
ZW5zIHdoZW4gYW4gQVNTRVJUX0RFQVRIKiBvciBFWFBFQ1RfREVBVEgqIGlzCkBAIC03NSw3ICs4
Niw3IEBAIEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhkZWF0aF90ZXN0X3N0eWxlKTsKIC8vICAgZm9y
IChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKIC8vICAgICBFWFBFQ1RfREVBVEgoc2VydmVyLlBy
b2Nlc3NSZXF1ZXN0KGkpLAogLy8gICAgICAgICAgICAgICAgICAiSW52YWxpZCByZXF1ZXN0IC4q
IGluIFByb2Nlc3NSZXF1ZXN0KCkiKQotLy8gICAgICAgICA8PCAiRmFpbGVkIHRvIGRpZSBvbiBy
ZXF1ZXN0ICIgPDwgaSk7CisvLyAgICAgICAgICAgICAgICAgIDw8ICJGYWlsZWQgdG8gZGllIG9u
IHJlcXVlc3QgIiA8PCBpOwogLy8gICB9CiAvLwogLy8gICBBU1NFUlRfRVhJVChzZXJ2ZXIuRXhp
dE5vdygpLCA6OnRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApLCAiRXhpdGluZyIpOwpAQCAtODgs
MTAgKzk5LDExIEBAIEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhkZWF0aF90ZXN0X3N0eWxlKTsKIC8v
CiAvLyBPbiB0aGUgcmVndWxhciBleHByZXNzaW9ucyB1c2VkIGluIGRlYXRoIHRlc3RzOgogLy8K
Ky8vICAgR09PR0xFVEVTVF9DTTAwMDUgRE8gTk9UIERFTEVURQogLy8gICBPbiBQT1NJWC1jb21w
bGlhbnQgc3lzdGVtcyAoKm5peCksIHdlIHVzZSB0aGUgPHJlZ2V4Lmg+IGxpYnJhcnksCiAvLyAg
IHdoaWNoIHVzZXMgdGhlIFBPU0lYIGV4dGVuZGVkIHJlZ2V4IHN5bnRheC4KIC8vCi0vLyAgIE9u
IG90aGVyIHBsYXRmb3JtcyAoZS5nLiBXaW5kb3dzKSwgd2Ugb25seSBzdXBwb3J0IGEgc2ltcGxl
IHJlZ2V4CisvLyAgIE9uIG90aGVyIHBsYXRmb3JtcyAoZS5nLiBXaW5kb3dzIG9yIE1hYyksIHdl
IG9ubHkgc3VwcG9ydCBhIHNpbXBsZSByZWdleAogLy8gICBzeW50YXggaW1wbGVtZW50ZWQgYXMg
cGFydCBvZiBHb29nbGUgVGVzdC4gIFRoaXMgbGltaXRlZAogLy8gICBpbXBsZW1lbnRhdGlvbiBz
aG91bGQgYmUgZW5vdWdoIG1vc3Qgb2YgdGhlIHRpbWUgd2hlbiB3cml0aW5nCiAvLyAgIGRlYXRo
IHRlc3RzOyB0aG91Z2ggaXQgbGFja3MgbWFueSBmZWF0dXJlcyB5b3UgY2FuIGZpbmQgaW4gUENS
RQpAQCAtMTQ5LDI5ICsxNjEsMjkgQEAgR1RFU1RfREVDTEFSRV9zdHJpbmdfKGRlYXRoX3Rlc3Rf
c3R5bGUpOwogLy8gICBpcyByYXJlbHkgYSBwcm9ibGVtIGFzIHBlb3BsZSB1c3VhbGx5IGRvbid0
IHB1dCB0aGUgdGVzdCBiaW5hcnkKIC8vICAgZGlyZWN0b3J5IGluIFBBVEguCiAvLwotLy8gVE9E
Tyh3YW5AZ29vZ2xlLmNvbSk6IG1ha2UgdGhyZWFkLXNhZmUgZGVhdGggdGVzdHMgc2VhcmNoIHRo
ZSBQQVRILgorLy8gRklYTUU6IG1ha2UgdGhyZWFkLXNhZmUgZGVhdGggdGVzdHMgc2VhcmNoIHRo
ZSBQQVRILgogCiAvLyBBc3NlcnRzIHRoYXQgYSBnaXZlbiBzdGF0ZW1lbnQgY2F1c2VzIHRoZSBw
cm9ncmFtIHRvIGV4aXQsIHdpdGggYW4KIC8vIGludGVnZXIgZXhpdCBzdGF0dXMgdGhhdCBzYXRp
c2ZpZXMgcHJlZGljYXRlLCBhbmQgZW1pdHRpbmcgZXJyb3Igb3V0cHV0CiAvLyB0aGF0IG1hdGNo
ZXMgcmVnZXguCi0jZGVmaW5lIEFTU0VSVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdl
eCkgXAotICBHVEVTVF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIEdU
RVNUX0ZBVEFMX0ZBSUxVUkVfKQorIyBkZWZpbmUgQVNTRVJUX0VYSVQoc3RhdGVtZW50LCBwcmVk
aWNhdGUsIHJlZ2V4KSBcCisgICAgR1RFU1RfREVBVEhfVEVTVF8oc3RhdGVtZW50LCBwcmVkaWNh
dGUsIHJlZ2V4LCBHVEVTVF9GQVRBTF9GQUlMVVJFXykKIAogLy8gTGlrZSBBU1NFUlRfRVhJVCwg
YnV0IGNvbnRpbnVlcyBvbiB0byBzdWNjZXNzaXZlIHRlc3RzIGluIHRoZQogLy8gdGVzdCBjYXNl
LCBpZiBhbnk6Ci0jZGVmaW5lIEVYUEVDVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdl
eCkgXAotICBHVEVTVF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIEdU
RVNUX05PTkZBVEFMX0ZBSUxVUkVfKQorIyBkZWZpbmUgRVhQRUNUX0VYSVQoc3RhdGVtZW50LCBw
cmVkaWNhdGUsIHJlZ2V4KSBcCisgICAgR1RFU1RfREVBVEhfVEVTVF8oc3RhdGVtZW50LCBwcmVk
aWNhdGUsIHJlZ2V4LCBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXykKIAogLy8gQXNzZXJ0cyB0aGF0
IGEgZ2l2ZW4gc3RhdGVtZW50IGNhdXNlcyB0aGUgcHJvZ3JhbSB0byBleGl0LCBlaXRoZXIgYnkK
IC8vIGV4cGxpY2l0bHkgZXhpdGluZyB3aXRoIGEgbm9uemVybyBleGl0IGNvZGUgb3IgYmVpbmcg
a2lsbGVkIGJ5IGEKIC8vIHNpZ25hbCwgYW5kIGVtaXR0aW5nIGVycm9yIG91dHB1dCB0aGF0IG1h
dGNoZXMgcmVnZXguCi0jZGVmaW5lIEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCi0g
IEFTU0VSVF9FWElUKHN0YXRlbWVudCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RXhpdGVkVW5zdWNj
ZXNzZnVsbHksIHJlZ2V4KQorIyBkZWZpbmUgQVNTRVJUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgp
IFwKKyAgICBBU1NFUlRfRVhJVChzdGF0ZW1lbnQsIDo6dGVzdGluZzo6aW50ZXJuYWw6OkV4aXRl
ZFVuc3VjY2Vzc2Z1bGx5LCByZWdleCkKIAogLy8gTGlrZSBBU1NFUlRfREVBVEgsIGJ1dCBjb250
aW51ZXMgb24gdG8gc3VjY2Vzc2l2ZSB0ZXN0cyBpbiB0aGUKIC8vIHRlc3QgY2FzZSwgaWYgYW55
OgotI2RlZmluZSBFWFBFQ1RfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAotICBFWFBFQ1RfRVhJ
VChzdGF0ZW1lbnQsIDo6dGVzdGluZzo6aW50ZXJuYWw6OkV4aXRlZFVuc3VjY2Vzc2Z1bGx5LCBy
ZWdleCkKKyMgZGVmaW5lIEVYUEVDVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgICAgRVhQ
RUNUX0VYSVQoc3RhdGVtZW50LCA6OnRlc3Rpbmc6OmludGVybmFsOjpFeGl0ZWRVbnN1Y2Nlc3Nm
dWxseSwgcmVnZXgpCiAKIC8vIFR3byBwcmVkaWNhdGUgY2xhc3NlcyB0aGF0IGNhbiBiZSB1c2Vk
IGluIHtBU1NFUlQsRVhQRUNUfV9FWElUKjoKIApAQCAtMTg3LDkgKzE5OSwxMCBAQCBjbGFzcyBH
VEVTVF9BUElfIEV4aXRlZFdpdGhDb2RlIHsKICAgY29uc3QgaW50IGV4aXRfY29kZV87CiB9Owog
Ci0jaWYgIUdURVNUX09TX1dJTkRPV1MKKyMgaWYgIUdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNU
X09TX0ZVQ0hTSUEKIC8vIFRlc3RzIHRoYXQgYW4gZXhpdCBjb2RlIGRlc2NyaWJlcyBhbiBleGl0
IGR1ZSB0byB0ZXJtaW5hdGlvbiBieSBhCiAvLyBnaXZlbiBzaWduYWwuCisvLyBHT09HTEVURVNU
X0NNMDAwNiBETyBOT1QgREVMRVRFCiBjbGFzcyBHVEVTVF9BUElfIEtpbGxlZEJ5U2lnbmFsIHsK
ICBwdWJsaWM6CiAgIGV4cGxpY2l0IEtpbGxlZEJ5U2lnbmFsKGludCBzaWdudW0pOwpAQCAtMTk3
LDcgKzIxMCw3IEBAIGNsYXNzIEdURVNUX0FQSV8gS2lsbGVkQnlTaWduYWwgewogIHByaXZhdGU6
CiAgIGNvbnN0IGludCBzaWdudW1fOwogfTsKLSNlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1MK
KyMgZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCiAKIC8vIEVYUEVDVF9ERUJVR19ERUFUSCBh
c3NlcnRzIHRoYXQgdGhlIGdpdmVuIHN0YXRlbWVudHMgZGllIGluIGRlYnVnIG1vZGUuCiAvLyBU
aGUgZGVhdGggdGVzdGluZyBmcmFtZXdvcmsgY2F1c2VzIHRoaXMgdG8gaGF2ZSBpbnRlcmVzdGlu
ZyBzZW1hbnRpY3MsCkBAIC0yNDIsNDAgKzI1NSw4OCBAQCBjbGFzcyBHVEVTVF9BUElfIEtpbGxl
ZEJ5U2lnbmFsIHsKIC8vICAgRVhQRUNUX0VRKDEyLCBEaWVJbkRlYnVnT3IxMigmc2lkZWVmZmVj
dCkpOwogLy8gfSwgImRlYXRoIik7CiAvLwotI2lmZGVmIE5ERUJVRworIyBpZmRlZiBOREVCVUcK
IAotI2RlZmluZSBFWFBFQ1RfREVCVUdfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAotICBkbyB7
IHN0YXRlbWVudDsgfSB3aGlsZSAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2UoKSkK
KyMgIGRlZmluZSBFWFBFQ1RfREVCVUdfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAorICBHVEVT
VF9FWEVDVVRFX1NUQVRFTUVOVF8oc3RhdGVtZW50LCByZWdleCkKIAotI2RlZmluZSBBU1NFUlRf
REVCVUdfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAotICBkbyB7IHN0YXRlbWVudDsgfSB3aGls
ZSAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2UoKSkKKyMgIGRlZmluZSBBU1NFUlRf
REVCVUdfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAorICBHVEVTVF9FWEVDVVRFX1NUQVRFTUVO
VF8oc3RhdGVtZW50LCByZWdleCkKIAotI2Vsc2UKKyMgZWxzZQogCi0jZGVmaW5lIEVYUEVDVF9E
RUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisjICBkZWZpbmUgRVhQRUNUX0RFQlVHX0RF
QVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKICAgRVhQRUNUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgp
CiAKLSNkZWZpbmUgQVNTRVJUX0RFQlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKKyMgIGRl
ZmluZSBBU1NFUlRfREVCVUdfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAogICBBU1NFUlRfREVB
VEgoc3RhdGVtZW50LCByZWdleCkKIAotI2VuZGlmICAvLyBOREVCVUcgZm9yIEVYUEVDVF9ERUJV
R19ERUFUSAorIyBlbmRpZiAgLy8gTkRFQlVHIGZvciBFWFBFQ1RfREVCVUdfREVBVEgKICNlbmRp
ZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKIAorLy8gVGhpcyBtYWNybyBpcyB1c2VkIGZvciBp
bXBsZW1lbnRpbmcgbWFjcm9zIHN1Y2ggYXMKKy8vIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQg
YW5kIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgb24gc3lzdGVtcyB3aGVyZQorLy8gZGVhdGgg
dGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQuIFRob3NlIG1hY3JvcyBtdXN0IGNvbXBpbGUgb24gc3Vj
aCBzeXN0ZW1zCisvLyBpZmYgRVhQRUNUX0RFQVRIIGFuZCBBU1NFUlRfREVBVEggY29tcGlsZSB3
aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMgb24KKy8vIHN5c3RlbXMgdGhhdCBzdXBwb3J0IGRlYXRo
IHRlc3RzLiBUaGlzIGFsbG93cyBvbmUgdG8gd3JpdGUgc3VjaCBhIG1hY3JvCisvLyBvbiBhIHN5
c3RlbSB0aGF0IGRvZXMgbm90IHN1cHBvcnQgZGVhdGggdGVzdHMgYW5kIGJlIHN1cmUgdGhhdCBp
dCB3aWxsCisvLyBjb21waWxlIG9uIGEgZGVhdGgtdGVzdCBzdXBwb3J0aW5nIHN5c3RlbS4gSXQg
aXMgZXhwb3NlZCBwdWJsaWNseSBzbyB0aGF0CisvLyBzeXN0ZW1zIHRoYXQgaGF2ZSBkZWF0aC10
ZXN0cyB3aXRoIHN0cmljdGVyIHJlcXVpcmVtZW50cyB0aGFuCisvLyBHVEVTVF9IQVNfREVBVEhf
VEVTVCBjYW4gd3JpdGUgdGhlaXIgb3duIGVxdWl2YWxlbnQgb2YKKy8vIEVYUEVDVF9ERUFUSF9J
Rl9TVVBQT1JURUQgYW5kIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQuCisvLworLy8gUGFyYW1l
dGVyczoKKy8vICAgc3RhdGVtZW50IC0gIEEgc3RhdGVtZW50IHRoYXQgYSBtYWNybyBzdWNoIGFz
IEVYUEVDVF9ERUFUSCB3b3VsZCB0ZXN0CisvLyAgICAgICAgICAgICAgICBmb3IgcHJvZ3JhbSB0
ZXJtaW5hdGlvbi4gVGhpcyBtYWNybyBoYXMgdG8gbWFrZSBzdXJlIHRoaXMKKy8vICAgICAgICAg
ICAgICAgIHN0YXRlbWVudCBpcyBjb21waWxlZCBidXQgbm90IGV4ZWN1dGVkLCB0byBlbnN1cmUg
dGhhdAorLy8gICAgICAgICAgICAgICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCBjb21waWxl
cyB3aXRoIGEgY2VydGFpbgorLy8gICAgICAgICAgICAgICAgcGFyYW1ldGVyIGlmZiBFWFBFQ1Rf
REVBVEggY29tcGlsZXMgd2l0aCBpdC4KKy8vICAgcmVnZXggICAgIC0gIEEgcmVnZXggdGhhdCBh
IG1hY3JvIHN1Y2ggYXMgRVhQRUNUX0RFQVRIIHdvdWxkIHVzZSB0byB0ZXN0CisvLyAgICAgICAg
ICAgICAgICB0aGUgb3V0cHV0IG9mIHN0YXRlbWVudC4gIFRoaXMgcGFyYW1ldGVyIGhhcyB0byBi
ZQorLy8gICAgICAgICAgICAgICAgY29tcGlsZWQgYnV0IG5vdCBldmFsdWF0ZWQgYnkgdGhpcyBt
YWNybywgdG8gZW5zdXJlIHRoYXQKKy8vICAgICAgICAgICAgICAgIHRoaXMgbWFjcm8gb25seSBh
Y2NlcHRzIGV4cHJlc3Npb25zIHRoYXQgYSBtYWNybyBzdWNoIGFzCisvLyAgICAgICAgICAgICAg
ICBFWFBFQ1RfREVBVEggd291bGQgYWNjZXB0LgorLy8gICB0ZXJtaW5hdG9yIC0gTXVzdCBiZSBh
biBlbXB0eSBzdGF0ZW1lbnQgZm9yIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQKKy8vICAgICAg
ICAgICAgICAgIGFuZCBhIHJldHVybiBzdGF0ZW1lbnQgZm9yIEFTU0VSVF9ERUFUSF9JRl9TVVBQ
T1JURUQuCisvLyAgICAgICAgICAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCBBU1NFUlRfREVBVEhf
SUZfU1VQUE9SVEVEIHdpbGwgbm90CisvLyAgICAgICAgICAgICAgICBjb21waWxlIGluc2lkZSBm
dW5jdGlvbnMgd2hlcmUgQVNTRVJUX0RFQVRIIGRvZXNuJ3QKKy8vICAgICAgICAgICAgICAgIGNv
bXBpbGUuCisvLworLy8gIFRoZSBicmFuY2ggdGhhdCBoYXMgYW4gYWx3YXlzIGZhbHNlIGNvbmRp
dGlvbiBpcyB1c2VkIHRvIGVuc3VyZSB0aGF0CisvLyAgc3RhdGVtZW50IGFuZCByZWdleCBhcmUg
Y29tcGlsZWQgKGFuZCB0aHVzIHN5bnRhY3RpY2FsbHkgY29ycmVjdCkgYnV0CisvLyAgbmV2ZXIg
ZXhlY3V0ZWQuIFRoZSB1bnJlYWNoYWJsZSBjb2RlIG1hY3JvIHByb3RlY3RzIHRoZSB0ZXJtaW5h
dG9yCisvLyAgc3RhdGVtZW50IGZyb20gZ2VuZXJhdGluZyBhbiAndW5yZWFjaGFibGUgY29kZScg
d2FybmluZyBpbiBjYXNlCisvLyAgc3RhdGVtZW50IHVuY29uZGl0aW9uYWxseSByZXR1cm5zIG9y
IHRocm93cy4gVGhlIE1lc3NhZ2UgY29uc3RydWN0b3IgYXQKKy8vICB0aGUgZW5kIGFsbG93cyB0
aGUgc3ludGF4IG9mIHN0cmVhbWluZyBhZGRpdGlvbmFsIG1lc3NhZ2VzIGludG8gdGhlCisvLyAg
bWFjcm8sIGZvciBjb21waWxhdGlvbmFsIGNvbXBhdGliaWxpdHkgd2l0aCBFWFBFQ1RfREVBVEgv
QVNTRVJUX0RFQVRILgorIyBkZWZpbmUgR1RFU1RfVU5TVVBQT1JURURfREVBVEhfVEVTVChzdGF0
ZW1lbnQsIHJlZ2V4LCB0ZXJtaW5hdG9yKSBcCisgICAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxP
Q0tFUl8gXAorICAgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAor
ICAgICAgR1RFU1RfTE9HXyhXQVJOSU5HKSBcCisgICAgICAgICAgPDwgIkRlYXRoIHRlc3RzIGFy
ZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uXG4iIFwKKyAgICAgICAgICA8PCAiU3Rh
dGVtZW50ICciICNzdGF0ZW1lbnQgIicgY2Fubm90IGJlIHZlcmlmaWVkLiI7IFwKKyAgICB9IGVs
c2UgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpIHsgXAorICAgICAgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6UkU6OlBhcnRpYWxNYXRjaCgiLioiLCAocmVnZXgpKTsgXAorICAg
ICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1l
bnQpOyBcCisgICAgICB0ZXJtaW5hdG9yOyBcCisgICAgfSBlbHNlIFwKKyAgICAgIDo6dGVzdGlu
Zzo6TWVzc2FnZSgpCisKIC8vIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCBy
ZWdleCkgYW5kCiAvLyBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgp
IGV4cGFuZCB0byByZWFsIGRlYXRoIHRlc3RzIGlmCiAvLyBkZWF0aCB0ZXN0cyBhcmUgc3VwcG9y
dGVkOyBvdGhlcndpc2UgdGhleSBqdXN0IGlzc3VlIGEgd2FybmluZy4gIFRoaXMgaXMKIC8vIHVz
ZWZ1bCB3aGVuIHlvdSBhcmUgY29tYmluaW5nIGRlYXRoIHRlc3QgYXNzZXJ0aW9ucyB3aXRoIG5v
cm1hbCB0ZXN0CiAvLyBhc3NlcnRpb25zIGluIG9uZSB0ZXN0LgogI2lmIEdURVNUX0hBU19ERUFU
SF9URVNUCi0jZGVmaW5lIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdl
eCkgXAorIyBkZWZpbmUgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4
KSBcCiAgICAgRVhQRUNUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpCi0jZGVmaW5lIEFTU0VSVF9E
RUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAorIyBkZWZpbmUgQVNTRVJUX0RF
QVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCiAgICAgQVNTRVJUX0RFQVRIKHN0
YXRlbWVudCwgcmVnZXgpCiAjZWxzZQotI2RlZmluZSBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVE
KHN0YXRlbWVudCwgcmVnZXgpIFwKLSAgICBHVEVTVF9VTlNVUFBPUlRFRF9ERUFUSF9URVNUXyhz
dGF0ZW1lbnQsIHJlZ2V4LCApCi0jZGVmaW5lIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoc3Rh
dGVtZW50LCByZWdleCkgXAotICAgIEdURVNUX1VOU1VQUE9SVEVEX0RFQVRIX1RFU1RfKHN0YXRl
bWVudCwgcmVnZXgsIHJldHVybikKKyMgZGVmaW5lIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQo
c3RhdGVtZW50LCByZWdleCkgXAorICAgIEdURVNUX1VOU1VQUE9SVEVEX0RFQVRIX1RFU1Qoc3Rh
dGVtZW50LCByZWdleCwgKQorIyBkZWZpbmUgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0
ZW1lbnQsIHJlZ2V4KSBcCisgICAgR1RFU1RfVU5TVVBQT1JURURfREVBVEhfVEVTVChzdGF0ZW1l
bnQsIHJlZ2V4LCByZXR1cm4pCiAjZW5kaWYKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtbWVz
c2FnZS5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1tZXNz
YWdlLmgKaW5kZXggZjEzNWI2OTQyN2ZlOWViZTIzN2M0Y2RhN2E5YzJmMGQ3OGRkNzY4ZS4uNWNh
MDQxNjE0Y2IzNTU5MjJmMzU1Yjg5M2Y5Yzg0YTNiN2Y1MmM2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmgKQEAgLTI2
LDEwICsyNiw5IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKIC8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwot
Ly8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gVGhl
IEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQog
Ly8KIC8vIFRoaXMgaGVhZGVyIGZpbGUgZGVmaW5lcyB0aGUgTWVzc2FnZSBjbGFzcy4KIC8vCkBA
IC00MywxMyArNDIsMjEgQEAKIC8vIHRvIENIQU5HRSBXSVRIT1VUIE5PVElDRS4gIFRoZXJlZm9y
ZSBETyBOT1QgREVQRU5EIE9OIElUIGluIGEgdXNlcgogLy8gcHJvZ3JhbSEKIAorLy8gR09PR0xF
VEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1Rf
R1RFU1RfTUVTU0FHRV9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX01FU1NB
R0VfSF8KIAogI2luY2x1ZGUgPGxpbWl0cz4KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0
ZXN0LXN0cmluZy5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg+
CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorCitHVEVTVF9ESVNBQkxF
X01TQ19XQVJOSU5HU19QVVNIXyg0MjUxIFwKKy8qIGNsYXNzIEEgbmVlZHMgdG8gaGF2ZSBkbGwt
aW50ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50cyBvZiBjbGFzcyBCICovKQorCisvLyBFbnN1
cmVzIHRoYXQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIG9wZXJhdG9yPDwgaW4gdGhlIGdsb2JhbCBu
YW1lc3BhY2UuCisvLyBTZWUgTWVzc2FnZSYgb3BlcmF0b3I8PCguLi4pIGJlbG93IGZvciB3aHku
Cit2b2lkIG9wZXJhdG9yPDwoY29uc3QgdGVzdGluZzo6aW50ZXJuYWw6OlNlY3JldCYsIGludCk7
CiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIApAQCAtNTgsNyArNjUsNyBAQCBuYW1lc3BhY2UgdGVz
dGluZyB7CiAvLyBUeXBpY2FsIHVzYWdlOgogLy8KIC8vICAgMS4gWW91IHN0cmVhbSBhIGJ1bmNo
IG9mIHZhbHVlcyB0byBhIE1lc3NhZ2Ugb2JqZWN0LgotLy8gICAgICBJdCB3aWxsIHJlbWVtYmVy
IHRoZSB0ZXh0IGluIGEgU3RyU3RyZWFtLgorLy8gICAgICBJdCB3aWxsIHJlbWVtYmVyIHRoZSB0
ZXh0IGluIGEgc3RyaW5nc3RyZWFtLgogLy8gICAyLiBUaGVuIHlvdSBzdHJlYW0gdGhlIE1lc3Nh
Z2Ugb2JqZWN0IHRvIGFuIG9zdHJlYW0uCiAvLyAgICAgIFRoaXMgY2F1c2VzIHRoZSB0ZXh0IGlu
IHRoZSBNZXNzYWdlIHRvIGJlIHN0cmVhbWVkCiAvLyAgICAgIHRvIHRoZSBvc3RyZWFtLgpAQCAt
NzQsNyArODEsNyBAQCBuYW1lc3BhY2UgdGVzdGluZyB7CiAvLyBNZXNzYWdlIGlzIG5vdCBpbnRl
bmRlZCB0byBiZSBpbmhlcml0ZWQgZnJvbS4gIEluIHBhcnRpY3VsYXIsIGl0cwogLy8gZGVzdHJ1
Y3RvciBpcyBub3QgdmlydHVhbC4KIC8vCi0vLyBOb3RlIHRoYXQgU3RyU3RyZWFtIGJlaGF2ZXMg
ZGlmZmVyZW50bHkgaW4gZ2NjIGFuZCBpbiBNU1ZDLiAgWW91CisvLyBOb3RlIHRoYXQgc3RyaW5n
c3RyZWFtIGJlaGF2ZXMgZGlmZmVyZW50bHkgaW4gZ2NjIGFuZCBpbiBNU1ZDLiAgWW91CiAvLyBj
YW4gc3RyZWFtIGEgTlVMTCBjaGFyIHBvaW50ZXIgdG8gaXQgaW4gdGhlIGZvcm1lciwgYnV0IG5v
dCBpbiB0aGUKIC8vIGxhdHRlciAoaXQgY2F1c2VzIGFuIGFjY2VzcyB2aW9sYXRpb24gaWYgeW91
IGRvKS4gIFRoZSBNZXNzYWdlCiAvLyBjbGFzcyBoaWRlcyB0aGlzIGRpZmZlcmVuY2UgYnkgdHJl
YXRpbmcgYSBOVUxMIGNoYXIgcG9pbnRlciBhcwpAQCAtODcsMjcgKzk0LDE4IEBAIGNsYXNzIEdU
RVNUX0FQSV8gTWVzc2FnZSB7CiAKICBwdWJsaWM6CiAgIC8vIENvbnN0cnVjdHMgYW4gZW1wdHkg
TWVzc2FnZS4KLSAgLy8gV2UgYWxsb2NhdGUgdGhlIFN0clN0cmVhbSBzZXBhcmF0ZWx5IGJlY2F1
c2UgaXQgb3RoZXJ3aXNlIGVhY2ggdXNlIG9mCi0gIC8vIEFTU0VSVC9FWFBFQ1QgaW4gYSBwcm9j
ZWR1cmUgYWRkcyBvdmVyIDIwMCBieXRlcyB0byB0aGUgcHJvY2VkdXJlJ3MKLSAgLy8gc3RhY2sg
ZnJhbWUgbGVhZGluZyB0byBodWdlIHN0YWNrIGZyYW1lcyBpbiBzb21lIGNhc2VzOyBnY2MgZG9l
cyBub3QgcmV1c2UKLSAgLy8gdGhlIHN0YWNrIHNwYWNlLgotICBNZXNzYWdlKCkgOiBzc18obmV3
IGludGVybmFsOjpTdHJTdHJlYW0pIHsKLSAgICAvLyBCeSBkZWZhdWx0LCB3ZSB3YW50IHRoZXJl
IHRvIGJlIGVub3VnaCBwcmVjaXNpb24gd2hlbiBwcmludGluZwotICAgIC8vIGEgZG91YmxlIHRv
IGEgTWVzc2FnZS4KLSAgICAqc3NfIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6ZGlnaXRzMTAgKyAyKTsKLSAgfQorICBNZXNzYWdlKCk7CiAKICAgLy8g
Q29weSBjb25zdHJ1Y3Rvci4KLSAgTWVzc2FnZShjb25zdCBNZXNzYWdlJiBtc2cpIDogc3NfKG5l
dyBpbnRlcm5hbDo6U3RyU3RyZWFtKSB7ICAvLyBOT0xJTlQKKyAgTWVzc2FnZShjb25zdCBNZXNz
YWdlJiBtc2cpIDogc3NfKG5ldyA6OnN0ZDo6c3RyaW5nc3RyZWFtKSB7ICAvLyBOT0xJTlQKICAg
ICAqc3NfIDw8IG1zZy5HZXRTdHJpbmcoKTsKICAgfQogCiAgIC8vIENvbnN0cnVjdHMgYSBNZXNz
YWdlIGZyb20gYSBDLXN0cmluZy4KLSAgZXhwbGljaXQgTWVzc2FnZShjb25zdCBjaGFyKiBzdHIp
IDogc3NfKG5ldyBpbnRlcm5hbDo6U3RyU3RyZWFtKSB7CisgIGV4cGxpY2l0IE1lc3NhZ2UoY29u
c3QgY2hhciogc3RyKSA6IHNzXyhuZXcgOjpzdGQ6OnN0cmluZ3N0cmVhbSkgewogICAgICpzc18g
PDwgc3RyOwogICB9CiAKLSAgfk1lc3NhZ2UoKSB7IGRlbGV0ZSBzc187IH0KICNpZiBHVEVTVF9P
U19TWU1CSUFOCiAgIC8vIFN0cmVhbXMgYSB2YWx1ZSAoZWl0aGVyIGEgcG9pbnRlciBvciBub3Qp
IHRvIHRoaXMgb2JqZWN0LgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTExOSw3ICsxMTcs
MjIgQEAgY2xhc3MgR1RFU1RfQVBJXyBNZXNzYWdlIHsKICAgLy8gU3RyZWFtcyBhIG5vbi1wb2lu
dGVyIHZhbHVlIHRvIHRoaXMgb2JqZWN0LgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgaW5s
aW5lIE1lc3NhZ2UmIG9wZXJhdG9yIDw8KGNvbnN0IFQmIHZhbCkgewotICAgIDo6R1Rlc3RTdHJl
YW1Ub0hlbHBlcihzc18sIHZhbCk7CisgICAgLy8gU29tZSBsaWJyYXJpZXMgb3ZlcmxvYWQgPDwg
Zm9yIFNUTCBjb250YWluZXJzLiAgVGhlc2UKKyAgICAvLyBvdmVybG9hZHMgYXJlIGRlZmluZWQg
aW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UgaW5zdGVhZCBvZiA6OnN0ZC4KKyAgICAvLworICAgIC8v
IEMrKydzIHN5bWJvbCBsb29rdXAgcnVsZSAoaS5lLiBLb2VuaWcgbG9va3VwKSBzYXlzIHRoYXQg
dGhlc2UKKyAgICAvLyBvdmVybG9hZHMgYXJlIHZpc2libGUgaW4gZWl0aGVyIHRoZSBzdGQgbmFt
ZXNwYWNlIG9yIHRoZSBnbG9iYWwKKyAgICAvLyBuYW1lc3BhY2UsIGJ1dCBub3Qgb3RoZXIgbmFt
ZXNwYWNlcywgaW5jbHVkaW5nIHRoZSB0ZXN0aW5nCisgICAgLy8gbmFtZXNwYWNlIHdoaWNoIEdv
b2dsZSBUZXN0J3MgTWVzc2FnZSBjbGFzcyBpcyBpbi4KKyAgICAvLworICAgIC8vIFRvIGFsbG93
IFNUTCBjb250YWluZXJzIChhbmQgb3RoZXIgdHlwZXMgdGhhdCBoYXMgYSA8PCBvcGVyYXRvcgor
ICAgIC8vIGRlZmluZWQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UpIHRvIGJlIHVzZWQgaW4gR29v
Z2xlIFRlc3QKKyAgICAvLyBhc3NlcnRpb25zLCB0ZXN0aW5nOjpNZXNzYWdlIG11c3QgYWNjZXNz
IHRoZSBjdXN0b20gPDwgb3BlcmF0b3IKKyAgICAvLyBmcm9tIHRoZSBnbG9iYWwgbmFtZXNwYWNl
LiAgV2l0aCB0aGlzIHVzaW5nIGRlY2xhcmF0aW9uLAorICAgIC8vIG92ZXJsb2FkcyBvZiA8PCBk
ZWZpbmVkIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlIGFuZCB0aG9zZQorICAgIC8vIHZpc2libGUg
dmlhIEtvZW5pZyBsb29rdXAgYXJlIGJvdGggZXhwb3NlZCBpbiB0aGlzIGZ1bmN0aW9uLgorICAg
IHVzaW5nIDo6b3BlcmF0b3IgPDw7CisgICAgKnNzXyA8PCB2YWw7CiAgICAgcmV0dXJuICp0aGlz
OwogICB9CiAKQEAgLTE0MSw3ICsxNTQsNyBAQCBjbGFzcyBHVEVTVF9BUElfIE1lc3NhZ2Ugewog
ICAgIGlmIChwb2ludGVyID09IE5VTEwpIHsKICAgICAgICpzc18gPDwgIihudWxsKSI7CiAgICAg
fSBlbHNlIHsKLSAgICAgIDo6R1Rlc3RTdHJlYW1Ub0hlbHBlcihzc18sIHBvaW50ZXIpOworICAg
ICAgKnNzXyA8PCBwb2ludGVyOwogICAgIH0KICAgICByZXR1cm4gKnRoaXM7CiAgIH0KQEAgLTE2
NSwxMiArMTc4LDggQEAgY2xhc3MgR1RFU1RfQVBJXyBNZXNzYWdlIHsKIAogICAvLyBUaGVzZSB0
d28gb3ZlcmxvYWRzIGFsbG93IHN0cmVhbWluZyBhIHdpZGUgQyBzdHJpbmcgdG8gYSBNZXNzYWdl
CiAgIC8vIHVzaW5nIHRoZSBVVEYtOCBlbmNvZGluZy4KLSAgTWVzc2FnZSYgb3BlcmF0b3IgPDwo
Y29uc3Qgd2NoYXJfdCogd2lkZV9jX3N0cikgewotICAgIHJldHVybiAqdGhpcyA8PCBpbnRlcm5h
bDo6U3RyaW5nOjpTaG93V2lkZUNTdHJpbmcod2lkZV9jX3N0cik7Ci0gIH0KLSAgTWVzc2FnZSYg
b3BlcmF0b3IgPDwod2NoYXJfdCogd2lkZV9jX3N0cikgewotICAgIHJldHVybiAqdGhpcyA8PCBp
bnRlcm5hbDo6U3RyaW5nOjpTaG93V2lkZUNTdHJpbmcod2lkZV9jX3N0cik7Ci0gIH0KKyAgTWVz
c2FnZSYgb3BlcmF0b3IgPDwoY29uc3Qgd2NoYXJfdCogd2lkZV9jX3N0cik7CisgIE1lc3NhZ2Um
IG9wZXJhdG9yIDw8KHdjaGFyX3QqIHdpZGVfY19zdHIpOwogCiAjaWYgR1RFU1RfSEFTX1NURF9X
U1RSSU5HCiAgIC8vIENvbnZlcnRzIHRoZSBnaXZlbiB3aWRlIHN0cmluZyB0byBhIG5hcnJvdyBz
dHJpbmcgdXNpbmcgdGhlIFVURi04CkBAIC0xODQsMTMgKzE5MywxMSBAQCBjbGFzcyBHVEVTVF9B
UElfIE1lc3NhZ2UgewogICBNZXNzYWdlJiBvcGVyYXRvciA8PChjb25zdCA6OndzdHJpbmcmIHdz
dHIpOwogI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKIAotICAvLyBHZXRzIHRo
ZSB0ZXh0IHN0cmVhbWVkIHRvIHRoaXMgb2JqZWN0IHNvIGZhciBhcyBhIFN0cmluZy4KKyAgLy8g
R2V0cyB0aGUgdGV4dCBzdHJlYW1lZCB0byB0aGlzIG9iamVjdCBzbyBmYXIgYXMgYW4gc3RkOjpz
dHJpbmcuCiAgIC8vIEVhY2ggJ1wwJyBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlciBpcyByZXBsYWNl
ZCB3aXRoICJcXDAiLgogICAvLwogICAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5P
VCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCi0gIGludGVybmFsOjpTdHJpbmcgR2V0U3RyaW5nKCkg
Y29uc3QgewotICAgIHJldHVybiBpbnRlcm5hbDo6U3RyU3RyZWFtVG9TdHJpbmcoc3NfKTsKLSAg
fQorICBzdGQ6OnN0cmluZyBHZXRTdHJpbmcoKSBjb25zdDsKIAogIHByaXZhdGU6CiAjaWYgR1RF
U1RfT1NfU1lNQklBTgpAQCAtMTk5LDIxICsyMDYsMjUgQEAgY2xhc3MgR1RFU1RfQVBJXyBNZXNz
YWdlIHsKICAgLy8gZGVjaWRlIGJldHdlZW4gY2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25z
IGZvciBUIGFuZCBUKiwgc28gYQogICAvLyB0cjE6OnR5cGVfdHJhaXRzLWxpa2UgaXNfcG9pbnRl
ciB3b3JrcywgYW5kIHdlIGNhbiBvdmVybG9hZCBvbiB0aGF0LgogICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLSAgaW5saW5lIHZvaWQgU3RyZWFtSGVscGVyKGludGVybmFsOjp0cnVlX3R5cGUgLypk
dW1teSovLCBUKiBwb2ludGVyKSB7CisgIGlubGluZSB2b2lkIFN0cmVhbUhlbHBlcihpbnRlcm5h
bDo6dHJ1ZV90eXBlIC8qaXNfcG9pbnRlciovLCBUKiBwb2ludGVyKSB7CiAgICAgaWYgKHBvaW50
ZXIgPT0gTlVMTCkgewogICAgICAgKnNzXyA8PCAiKG51bGwpIjsKICAgICB9IGVsc2UgewotICAg
ICAgOjpHVGVzdFN0cmVhbVRvSGVscGVyKHNzXywgcG9pbnRlcik7CisgICAgICAqc3NfIDw8IHBv
aW50ZXI7CiAgICAgfQogICB9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBpbmxpbmUgdm9p
ZCBTdHJlYW1IZWxwZXIoaW50ZXJuYWw6OmZhbHNlX3R5cGUgLypkdW1teSovLCBjb25zdCBUJiB2
YWx1ZSkgewotICAgIDo6R1Rlc3RTdHJlYW1Ub0hlbHBlcihzc18sIHZhbHVlKTsKKyAgaW5saW5l
IHZvaWQgU3RyZWFtSGVscGVyKGludGVybmFsOjpmYWxzZV90eXBlIC8qaXNfcG9pbnRlciovLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCYgdmFsdWUpIHsKKyAgICAvLyBTZWUg
dGhlIGNvbW1lbnRzIGluIE1lc3NhZ2UmIG9wZXJhdG9yIDw8KGNvbnN0IFQmKSBhYm92ZSBmb3Ig
d2h5CisgICAgLy8gd2UgbmVlZCB0aGlzIHVzaW5nIHN0YXRlbWVudC4KKyAgICB1c2luZyA6Om9w
ZXJhdG9yIDw8OworICAgICpzc18gPDwgdmFsdWU7CiAgIH0KICNlbmRpZiAgLy8gR1RFU1RfT1Nf
U1lNQklBTgogCiAgIC8vIFdlJ2xsIGhvbGQgdGhlIHRleHQgc3RyZWFtZWQgdG8gdGhpcyBvYmpl
Y3QgaGVyZS4KLSAgaW50ZXJuYWw6OlN0clN0cmVhbSogY29uc3Qgc3NfOworICBjb25zdCBpbnRl
cm5hbDo6c2NvcGVkX3B0cjwgOjpzdGQ6OnN0cmluZ3N0cmVhbT4gc3NfOwogCiAgIC8vIFdlIGRl
Y2xhcmUgKGJ1dCBkb24ndCBpbXBsZW1lbnQpIHRoaXMgdG8gcHJldmVudCB0aGUgY29tcGlsZXIK
ICAgLy8gZnJvbSBpbXBsZW1lbnRpbmcgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCkBAIC0yMjUs
NiArMjM2LDIwIEBAIGlubGluZSBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yIDw8KHN0ZDo6b3N0cmVh
bSYgb3MsIGNvbnN0IE1lc3NhZ2UmIHNiKSB7CiAgIHJldHVybiBvcyA8PCBzYi5HZXRTdHJpbmco
KTsKIH0KIAorbmFtZXNwYWNlIGludGVybmFsIHsKKworLy8gQ29udmVydHMgYSBzdHJlYW1hYmxl
IHZhbHVlIHRvIGFuIHN0ZDo6c3RyaW5nLiAgQSBOVUxMIHBvaW50ZXIgaXMKKy8vIGNvbnZlcnRl
ZCB0byAiKG51bGwpIi4gIFdoZW4gdGhlIGlucHV0IHZhbHVlIGlzIGEgOjpzdHJpbmcsCisvLyA6
OnN0ZDo6c3RyaW5nLCA6OndzdHJpbmcsIG9yIDo6c3RkOjp3c3RyaW5nIG9iamVjdCwgZWFjaCBO
VUwKKy8vIGNoYXJhY3RlciBpbiBpdCBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitzdGQ6OnN0cmluZyBTdHJlYW1hYmxlVG9TdHJpbmcoY29uc3QgVCYgc3Ry
ZWFtYWJsZSkgeworICByZXR1cm4gKE1lc3NhZ2UoKSA8PCBzdHJlYW1hYmxlKS5HZXRTdHJpbmco
KTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGlu
ZwogCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkgIC8vICA0MjUxCisKICNlbmRp
ZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9NRVNTQUdFX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5o
CmluZGV4IDgxMDA2OTY0NGQyM2FkMzU1OTczY2I1M2ZjZWIwYTg1NmIwYTAwNmMuLjFlMjJmNjg1
MDI0MGYxM2ViZDk5ZWU5YTlhZjgzNmJiYWI3M2JjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oCkBAIC0x
LDQgKzEsNiBAQAotLy8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgYSBzY3JpcHQuICBETyBO
T1QgRURJVCBCWSBIQU5EISEhCisvLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBjb21tYW5k
OgorLy8gICAgIHB1bXAucHkgZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1bXAKKy8vIERPIE5PVCBFRElU
IEJZIEhBTkQhISEKIAogLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCiAvLyBBbGwgcmln
aHRzIHJlc2VydmVkLgpAQCAtMjksMTMgKzMxLDEzIEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAvLwotLy8gQXV0aG9yczogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikK
LS8vCiAvLyBNYWNyb3MgYW5kIGZ1bmN0aW9ucyBmb3IgaW1wbGVtZW50aW5nIHBhcmFtZXRlcml6
ZWQgdGVzdHMKLS8vIGluIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0
KQorLy8gaW4gR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xl
IFRlc3QpCiAvLwogLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBhIFNDUklQVC4gIERPIE5P
VCBFRElUIEJZIEhBTkQhCiAvLworLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQor
CiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9IXwogI2RlZmlu
ZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8KIApAQCAtNDgsMTAgKzUw
LDEyIEBACiAjaWYgMAogCiAvLyBUbyB3cml0ZSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLCBm
aXJzdCB5b3Ugc2hvdWxkIGRlZmluZSBhIGZpeHR1cmUKLS8vIGNsYXNzLiBJdCBtdXN0IGJlIGRl
cml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPFQ+LCB3aGVyZSBUIGlzCi0vLyB0aGUg
dHlwZSBvZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuIFRlc3RXaXRoUGFyYW08VD4gaXMgaXRzZWxm
IGRlcml2ZWQKLS8vIGZyb20gdGVzdGluZzo6VGVzdC4gVCBjYW4gYmUgYW55IGNvcHlhYmxlIHR5
cGUuIElmIGl0J3MgYSByYXcgcG9pbnRlciwKLS8vIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIG1h
bmFnaW5nIHRoZSBsaWZlc3BhbiBvZiB0aGUgcG9pbnRlZCB2YWx1ZXMuCisvLyBjbGFzcy4gSXQg
aXMgdXN1YWxseSBkZXJpdmVkIGZyb20gdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxUPiAoc2VlIGJl
bG93IGZvcgorLy8gYW5vdGhlciBpbmhlcml0YW5jZSBzY2hlbWUgdGhhdCdzIHNvbWV0aW1lcyB1
c2VmdWwgaW4gbW9yZSBjb21wbGljYXRlZAorLy8gY2xhc3MgaGllcmFyY2hpZXMpLCB3aGVyZSB0
aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuCisvLyBUZXN0V2l0aFBhcmFtPFQ+IGlz
IGl0c2VsZiBkZXJpdmVkIGZyb20gdGVzdGluZzo6VGVzdC4gVCBjYW4gYmUgYW55CisvLyBjb3B5
YWJsZSB0eXBlLiBJZiBpdCdzIGEgcmF3IHBvaW50ZXIsIHlvdSBhcmUgcmVzcG9uc2libGUgZm9y
IG1hbmFnaW5nIHRoZQorLy8gbGlmZXNwYW4gb2YgdGhlIHBvaW50ZWQgdmFsdWVzLgogCiBjbGFz
cyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBjaGFyKj4g
ewogICAvLyBZb3UgY2FuIGltcGxlbWVudCBhbGwgdGhlIHVzdWFsIGNsYXNzIGZpeHR1cmUgbWVt
YmVycyBoZXJlLgpAQCAtNzUsNyArNzksNyBAQCBURVNUX1AoRm9vVGVzdCwgSGFzQmxhaEJsYWgp
IHsKIC8vIEZpbmFsbHksIHlvdSBjYW4gdXNlIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIHRvIGlu
c3RhbnRpYXRlIHRoZSB0ZXN0CiAvLyBjYXNlIHdpdGggYW55IHNldCBvZiBwYXJhbWV0ZXJzIHlv
dSB3YW50LiBHb29nbGUgVGVzdCBkZWZpbmVzIGEgbnVtYmVyCiAvLyBvZiBmdW5jdGlvbnMgZm9y
IGdlbmVyYXRpbmcgdGVzdCBwYXJhbWV0ZXJzLiBUaGV5IHJldHVybiB3aGF0IHdlIGNhbGwKLS8v
IChzdXJwcmlzZSEpIHBhcmFtZXRlciBnZW5lcmF0b3JzLiBIZXJlIGlzIGEgIHN1bW1hcnkgb2Yg
dGhlbSwgd2hpY2gKKy8vIChzdXJwcmlzZSEpIHBhcmFtZXRlciBnZW5lcmF0b3JzLiBIZXJlIGlz
IGEgc3VtbWFyeSBvZiB0aGVtLCB3aGljaAogLy8gYXJlIGFsbCBpbiB0aGUgdGVzdGluZyBuYW1l
c3BhY2U6CiAvLwogLy8KQEAgLTE0NiwyMyArMTUwLDQ0IEBAIElOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QKEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwgVmFsdWVzSW4ocGV0cykpOwog
Ly8gSW4gdGhlIGZ1dHVyZSwgd2UgcGxhbiB0byBwdWJsaXNoIHRoZSBBUEkgZm9yIGRlZmluaW5n
IG5ldyBwYXJhbWV0ZXIKIC8vIGdlbmVyYXRvcnMuIEJ1dCBmb3Igbm93IHRoaXMgaW50ZXJmYWNl
IHJlbWFpbnMgcGFydCBvZiB0aGUgaW50ZXJuYWwKIC8vIGltcGxlbWVudGF0aW9uIGFuZCBpcyBz
dWJqZWN0IHRvIGNoYW5nZS4KKy8vCisvLworLy8gQSBwYXJhbWV0ZXJpemVkIHRlc3QgZml4dHVy
ZSBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0IGFuZCBmcm9tCisvLyB0ZXN0aW5n
OjpXaXRoUGFyYW1JbnRlcmZhY2U8VD4sIHdoZXJlIFQgaXMgdGhlIHR5cGUgb2YgdGhlIHBhcmFt
ZXRlcgorLy8gdmFsdWVzLiBJbmhlcml0aW5nIGZyb20gVGVzdFdpdGhQYXJhbTxUPiBzYXRpc2Zp
ZXMgdGhhdCByZXF1aXJlbWVudCBiZWNhdXNlCisvLyBUZXN0V2l0aFBhcmFtPFQ+IGluaGVyaXRz
IGZyb20gYm90aCBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UuIEluIG1vcmUKKy8vIGNvbXBs
aWNhdGVkIGhpZXJhcmNoaWVzLCBob3dldmVyLCBpdCBpcyBvY2Nhc2lvbmFsbHkgdXNlZnVsIHRv
IGluaGVyaXQKKy8vIHNlcGFyYXRlbHkgZnJvbSBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2Uu
IEZvciBleGFtcGxlOgorCitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qg
eworICAvLyBZb3UgY2FuIGluaGVyaXQgYWxsIHRoZSB1c3VhbCBtZW1iZXJzIGZvciBhIG5vbi1w
YXJhbWV0ZXJpemVkIHRlc3QKKyAgLy8gZml4dHVyZSBoZXJlLgorfTsKKworY2xhc3MgRGVyaXZl
ZFRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVy
ZmFjZTxpbnQ+IHsKKyAgLy8gVGhlIHVzdWFsIHRlc3QgZml4dHVyZSBtZW1iZXJzIGdvIGhlcmUg
dG9vLgorfTsKKworVEVTVF9GKEJhc2VUZXN0LCBIYXNGb28pIHsKKyAgLy8gVGhpcyBpcyBhbiBv
cmRpbmFyeSBub24tcGFyYW1ldGVyaXplZCB0ZXN0LgorfQorCitURVNUX1AoRGVyaXZlZFRlc3Qs
IERvZXNCbGFoKSB7CisgIC8vIEdldFBhcmFtIHdvcmtzIGp1c3QgdGhlIHNhbWUgaGVyZSBhcyBp
ZiB5b3UgaW5oZXJpdCBmcm9tIFRlc3RXaXRoUGFyYW0uCisgIEVYUEVDVF9UUlVFKGZvby5CbGFo
KEdldFBhcmFtKCkpKTsKK30KIAogI2VuZGlmICAvLyAwCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRl
cm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5o
IgogCiAjaWYgIUdURVNUX09TX1NZTUJJQU4KLSNpbmNsdWRlIDx1dGlsaXR5PgorIyBpbmNsdWRl
IDx1dGlsaXR5PgogI2VuZGlmCiAKLS8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBkZXBlbmRzIG9u
IGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKLS8vICp1bmNvbmRpdGlvbmFsbHkq
LiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKLS8vIGluc2lkZSAj
aWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
aW50ZXJuYWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmg+
Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaD4K
LQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGls
LmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQu
aCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC0yNDMsNyArMjY4LDcgQEAgaW50ZXJuYWw6
OlBhcmFtR2VuZXJhdG9yPFQ+IFJhbmdlKFQgc3RhcnQsIFQgZW5kKSB7CiAvLyBlYWNoIHdpdGgg
Qy1zdHJpbmcgdmFsdWVzIG9mICJmb28iLCAiYmFyIiwgYW5kICJiYXoiOgogLy8KIC8vIGNvbnN0
IGNoYXIqIHN0cmluZ3NbXSA9IHsiZm9vIiwgImJhciIsICJiYXoifTsKLS8vIElOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKFN0cmluZ1NlcXVlbmNlLCBTcnRpbmdUZXN0LCBWYWx1ZXNJbihzdHJpbmdz
KSk7CisvLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChTdHJpbmdTZXF1ZW5jZSwgU3RyaW5nVGVz
dCwgVmFsdWVzSW4oc3RyaW5ncykpOwogLy8KIC8vIFRoaXMgaW5zdGFudGlhdGVzIHRlc3RzIGZy
b20gdGVzdCBjYXNlIFN0bFN0cmluZ1Rlc3QKIC8vIGVhY2ggd2l0aCBTVEwgc3RyaW5ncyB3aXRo
IHZhbHVlcyAiYSIgYW5kICJiIjoKQEAgLTI3NiwxMSArMzAxLDEwIEBAIGludGVybmFsOjpQYXJh
bUdlbmVyYXRvcjxUPiBSYW5nZShUIHN0YXJ0LCBUIGVuZCkgewogLy8KIHRlbXBsYXRlIDx0eXBl
bmFtZSBGb3J3YXJkSXRlcmF0b3I+CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ci0gICAgdHlw
ZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBl
PiBWYWx1ZXNJbigKLSAgRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLAotICBGb3J3YXJkSXRlcmF0b3Ig
ZW5kKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJk
SXRlcmF0b3I+Ojp2YWx1ZV90eXBlCi0gICAgICBQYXJhbVR5cGU7CisgIHR5cGVuYW1lIDo6dGVz
dGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5
cGU+CitWYWx1ZXNJbihGb3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJdGVyYXRvciBlbmQp
IHsKKyAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVyYXRvclRyYWl0
czxGb3J3YXJkSXRlcmF0b3I+CisgICAgICA6OnZhbHVlX3R5cGUgUGFyYW1UeXBlOwogICByZXR1
cm4gaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT4oCiAgICAgICBuZXcgaW50ZXJu
YWw6OlZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvcjxQYXJhbVR5cGU+KGJlZ2luLCBlbmQp
KTsKIH0KQEAgLTExOTIsNyArMTIxNiw3IEBAIGlubGluZSBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0
b3I8Ym9vbD4gQm9vbCgpIHsKICAgcmV0dXJuIFZhbHVlcyhmYWxzZSwgdHJ1ZSk7CiB9CiAKLSNp
ZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNfQ09NQklORQogLy8gQ29tYmluZSgp
IGFsbG93cyB0aGUgdXNlciB0byBjb21iaW5lIHR3byBvciBtb3JlIHNlcXVlbmNlcyB0byBwcm9k
dWNlCiAvLyB2YWx1ZXMgb2YgYSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB0aG9zZSBzZXF1ZW5jZXMn
IGVsZW1lbnRzLgogLy8KQEAgLTEyMjgsNyArMTI1Miw3IEBAIGlubGluZSBpbnRlcm5hbDo6UGFy
YW1HZW5lcmF0b3I8Ym9vbD4gQm9vbCgpIHsKIC8vIEJvb2xlYW4gZmxhZ3M6CiAvLwogLy8gY2xh
c3MgRmxhZ0RlcGVuZGVudFRlc3QKLS8vICAgICA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBh
cmFtPHR1cGxlKGJvb2wsIGJvb2wpPiA+IHsKKy8vICAgICA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
V2l0aFBhcmFtPHR1cGxlPGJvb2wsIGJvb2w+ID4gewogLy8gICB2aXJ0dWFsIHZvaWQgU2V0VXAo
KSB7CiAvLyAgICAgLy8gQXNzaWducyBleHRlcm5hbF9mbGFnXzEgYW5kIGV4dGVybmFsX2ZsYWdf
MiB2YWx1ZXMgZnJvbSB0aGUgdHVwbGUuCiAvLyAgICAgdGllKGV4dGVybmFsX2ZsYWdfMSwgZXh0
ZXJuYWxfZmxhZ18yKSA9IEdldFBhcmFtKCk7CkBAIC0xMzQ0LDExICsxMzY4LDkgQEAgaW50ZXJu
YWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIxMDxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5l
cmF0b3IzLAogICAgICAgR2VuZXJhdG9yMTA+KAogICAgICAgZzEsIGcyLCBnMywgZzQsIGc1LCBn
NiwgZzcsIGc4LCBnOSwgZzEwKTsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKLQot
CisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQogCi0jZGVmaW5lIFRFU1RfUCh0ZXN0X2Nh
c2VfbmFtZSwgdGVzdF9uYW1lKSBcCisjIGRlZmluZSBURVNUX1AodGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSkgXAogICBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1l
LCB0ZXN0X25hbWUpIFwKICAgICAgIDogcHVibGljIHRlc3RfY2FzZV9uYW1lIHsgXAogICAgcHVi
bGljOiBcCkBAIC0xMzU4LDE0ICsxMzgwLDE3IEBAIGludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0
SG9sZGVyMTA8R2VuZXJhdG9yMSwgR2VuZXJhdG9yMiwgR2VuZXJhdG9yMywKICAgICBzdGF0aWMg
aW50IEFkZFRvUmVnaXN0cnkoKSB7IFwKICAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldElu
c3RhbmNlKCktPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpLiBcCiAgICAgICAgICAgR2V0
VGVzdENhc2VQYXR0ZXJuSG9sZGVyPHRlc3RfY2FzZV9uYW1lPihcCi0gICAgICAgICAgICAgICN0
ZXN0X2Nhc2VfbmFtZSwgX19GSUxFX18sIF9fTElORV9fKS0+QWRkVGVzdFBhdHRlcm4oXAotICAg
ICAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCi0gICAgICAgICAgICAgICAgICAjdGVz
dF9uYW1lLCBcCi0gICAgICAgICAgICAgICAgICBuZXcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVz
dE1ldGFGYWN0b3J5PCBcCi0gICAgICAgICAgICAgICAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19O
QU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKT4oKSk7IFwKKyAgICAgICAgICAgICAgI3Rl
c3RfY2FzZV9uYW1lLCBcCisgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVM
b2NhdGlvbihcCisgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pKS0+QWRkVGVz
dFBhdHRlcm4oXAorICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1NUUklOR0lGWV8odGVzdF9j
YXNlX25hbWUpLCBcCisgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfU1RSSU5HSUZZXyh0ZXN0
X25hbWUpLCBcCisgICAgICAgICAgICAgICAgICAgICAgbmV3IDo6dGVzdGluZzo6aW50ZXJuYWw6
OlRlc3RNZXRhRmFjdG9yeTwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9URVNU
X0NMQVNTX05BTUVfKFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY2FzZV9u
YW1lLCB0ZXN0X25hbWUpPigpKTsgXAogICAgICAgcmV0dXJuIDA7IFwKICAgICB9IFwKLSAgICBz
dGF0aWMgaW50IGd0ZXN0X3JlZ2lzdGVyaW5nX2R1bW15XzsgXAorICAgIHN0YXRpYyBpbnQgZ3Rl
c3RfcmVnaXN0ZXJpbmdfZHVtbXlfIEdURVNUX0FUVFJJQlVURV9VTlVTRURfOyBcCiAgICAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhcCiAgICAgICAgIEdURVNUX1RFU1RfQ0xBU1Nf
TkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkpOyBcCiAgIH07IFwKQEAgLTEzNzQsMTkg
KzEzOTksMzkgQEAgaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIxMDxHZW5lcmF0b3Ix
LCBHZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAogICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0
ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKTo6QWRkVG9SZWdpc3RyeSgpOyBcCiAgIHZvaWQgR1RF
U1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKTo6VGVzdEJvZHko
KQogCi0jZGVmaW5lIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKHByZWZpeCwgdGVzdF9jYXNlX25h
bWUsIGdlbmVyYXRvcikgXAotICA6OnRlc3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVyYXRvcjx0
ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiBcCi0gICAgICBndGVzdF8jI3ByZWZpeCMjdGVzdF9j
YXNlX25hbWUjI19FdmFsR2VuZXJhdG9yXygpIHsgcmV0dXJuIGdlbmVyYXRvcjsgfSBcCi0gIGlu
dCBndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19kdW1teV8gPSBcCi0gICAgICA6OnRl
c3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5wYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0
cnkoKS4gXAotICAgICAgICAgIEdldFRlc3RDYXNlUGF0dGVybkhvbGRlcjx0ZXN0X2Nhc2VfbmFt
ZT4oXAotICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIF9fRklMRV9fLCBfX0xJTkVfXykt
PkFkZFRlc3RDYXNlSW5zdGFudGlhdGlvbihcCi0gICAgICAgICAgICAgICAgICAjcHJlZml4LCBc
Ci0gICAgICAgICAgICAgICAgICAmZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZh
bEdlbmVyYXRvcl8sIFwKLSAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykKKy8v
IFRoZSBvcHRpb25hbCBsYXN0IGFyZ3VtZW50IHRvIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIGFs
bG93cyB0aGUgdXNlcgorLy8gdG8gc3BlY2lmeSBhIGZ1bmN0aW9uIG9yIGZ1bmN0b3IgdGhhdCBn
ZW5lcmF0ZXMgY3VzdG9tIHRlc3QgbmFtZSBzdWZmaXhlcworLy8gYmFzZWQgb24gdGhlIHRlc3Qg
cGFyYW1ldGVycy4gVGhlIGZ1bmN0aW9uIHNob3VsZCBhY2NlcHQgb25lIGFyZ3VtZW50IG9mCisv
LyB0eXBlIHRlc3Rpbmc6OlRlc3RQYXJhbUluZm88Y2xhc3MgUGFyYW1UeXBlPiwgYW5kIHJldHVy
biBzdGQ6OnN0cmluZy4KKy8vCisvLyB0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1OYW1lIGlz
IGEgYnVpbHRpbiB0ZXN0IHN1ZmZpeCBnZW5lcmF0b3IgdGhhdAorLy8gcmV0dXJucyB0aGUgdmFs
dWUgb2YgdGVzdGluZzo6UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgpKS4KKy8vCisvLyBOb3RlOiB0
ZXN0IG5hbWVzIG11c3QgYmUgbm9uLWVtcHR5LCB1bmlxdWUsIGFuZCBtYXkgb25seSBjb250YWlu
IEFTQ0lJCisvLyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBvciB1bmRlcnNjb3JlLiBCZWNhdXNl
IFByaW50VG9TdHJpbmcgYWRkcyBxdW90ZXMKKy8vIHRvIHN0ZDo6c3RyaW5nIGFuZCBDIHN0cmlu
Z3MsIGl0IHdvbid0IHdvcmsgZm9yIHRoZXNlIHR5cGVzLgorCisjZGVmaW5lIElOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKHByZWZpeCwgdGVzdF9jYXNlX25hbWUsIGdlbmVyYXRvciwgLi4uKSAgICAg
ICAgXAorICBzdGF0aWMgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dGVzdF9j
YXNlX25hbWU6OlBhcmFtVHlwZT4gICAgICAgIFwKKyAgICAgIGd0ZXN0XyMjcHJlZml4IyN0ZXN0
X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0b3JfKCkgeyAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgcmV0dXJuIGdlbmVyYXRvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgc3RhdGlj
IDo6c3RkOjpzdHJpbmcgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVy
YXRlTmFtZV8oICAgICBcCisgICAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88dGVz
dF9jYXNlX25hbWU6OlBhcmFtVHlwZT4mIGluZm8pIHsgICAgICAgXAorICAgIHJldHVybiA6OnRl
c3Rpbmc6OmludGVybmFsOjpHZXRQYXJhbU5hbWVHZW48dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlw
ZT4oICAgIFwKKyAgICAgICAgX19WQV9BUkdTX18pKGluZm8pOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICBzdGF0aWMgaW50IGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX2R1bW15XyBH
VEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9IFwKKyAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6Okdl
dEluc3RhbmNlKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgLT5wYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIC5HZXRUZXN0Q2FzZVBhdHRlcm5Ib2xkZXI8
dGVzdF9jYXNlX25hbWU+KCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
ICAgI3Rlc3RfY2FzZV9uYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2Nh
dGlvbihfX0ZJTEVfXywgX19MSU5FX18pKSAgICAgICAgICAgXAorICAgICAgICAgIC0+QWRkVGVz
dENhc2VJbnN0YW50aWF0aW9uKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgICAgI3ByZWZpeCwgJmd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2Vf
bmFtZSMjX0V2YWxHZW5lcmF0b3JfLCAgICAgICBcCisgICAgICAgICAgICAgICZndGVzdF8jI3By
ZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdGVOYW1lXywgX19GSUxFX18sICAgXAor
ICAgICAgICAgICAgICBfX0xJTkVfXykKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVf
R1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1bXAKaW5kZXgg
YTIzMTE4ODI3ZjFkNDgwZmJiYjgyNTJmMzQwZjBlYmVkYTM0NmUyNS4uMjc0ZjJiM2I1NjkzMzAw
MTJlODVlZTNjZjRmZDU3ZWIwYjU0MjFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC5wdW1wCkBA
IC0zMCwxMyArMzAsMTIgQEAgJHZhciBtYXh0dXBsZSA9IDEwICAkJCBNYXhpbXVtIG51bWJlciBv
ZiBDb21iaW5lIGFyZ3VtZW50cyB3ZSB3YW50IHRvIHN1cHBvcnQuCiAvLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
IC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQXV0aG9yczogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBM
b3NldikKLS8vCiAvLyBNYWNyb3MgYW5kIGZ1bmN0aW9ucyBmb3IgaW1wbGVtZW50aW5nIHBhcmFt
ZXRlcml6ZWQgdGVzdHMKLS8vIGluIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2ds
ZSBUZXN0KQorLy8gaW4gR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAo
R29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBhIFNDUklQVC4g
IERPIE5PVCBFRElUIEJZIEhBTkQhCiAvLworLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERF
TEVURQogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8KICNk
ZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QQVJBTV9URVNUX0hfCiAKQEAgLTQ5LDEw
ICs0OCwxMiBAQCAkdmFyIG1heHR1cGxlID0gMTAgICQkIE1heGltdW0gbnVtYmVyIG9mIENvbWJp
bmUgYXJndW1lbnRzIHdlIHdhbnQgdG8gc3VwcG9ydC4KICNpZiAwCiAKIC8vIFRvIHdyaXRlIHZh
bHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4dHVy
ZQotLy8gY2xhc3MuIEl0IG11c3QgYmUgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08VD4sIHdoZXJlIFQgaXMKLS8vIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVlcy4g
VGVzdFdpdGhQYXJhbTxUPiBpcyBpdHNlbGYgZGVyaXZlZAotLy8gZnJvbSB0ZXN0aW5nOjpUZXN0
LiBUIGNhbiBiZSBhbnkgY29weWFibGUgdHlwZS4gSWYgaXQncyBhIHJhdyBwb2ludGVyLAotLy8g
eW91IGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIGxpZmVzcGFuIG9mIHRoZSBwb2lu
dGVkIHZhbHVlcy4KKy8vIGNsYXNzLiBJdCBpcyB1c3VhbGx5IGRlcml2ZWQgZnJvbSB0ZXN0aW5n
OjpUZXN0V2l0aFBhcmFtPFQ+IChzZWUgYmVsb3cgZm9yCisvLyBhbm90aGVyIGluaGVyaXRhbmNl
IHNjaGVtZSB0aGF0J3Mgc29tZXRpbWVzIHVzZWZ1bCBpbiBtb3JlIGNvbXBsaWNhdGVkCisvLyBj
bGFzcyBoaWVyYXJjaGllcyksIHdoZXJlIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVl
cy4KKy8vIFRlc3RXaXRoUGFyYW08VD4gaXMgaXRzZWxmIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpU
ZXN0LiBUIGNhbiBiZSBhbnkKKy8vIGNvcHlhYmxlIHR5cGUuIElmIGl0J3MgYSByYXcgcG9pbnRl
ciwgeW91IGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlCisvLyBsaWZlc3BhbiBvZiB0
aGUgcG9pbnRlZCB2YWx1ZXMuCiAKIGNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0V2l0aFBhcmFtPGNvbnN0IGNoYXIqPiB7CiAgIC8vIFlvdSBjYW4gaW1wbGVtZW50IGFsbCB0
aGUgdXN1YWwgY2xhc3MgZml4dHVyZSBtZW1iZXJzIGhlcmUuCkBAIC03Niw3ICs3Nyw3IEBAIFRF
U1RfUChGb29UZXN0LCBIYXNCbGFoQmxhaCkgewogLy8gRmluYWxseSwgeW91IGNhbiB1c2UgSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AgdG8gaW5zdGFudGlhdGUgdGhlIHRlc3QKIC8vIGNhc2Ugd2l0
aCBhbnkgc2V0IG9mIHBhcmFtZXRlcnMgeW91IHdhbnQuIEdvb2dsZSBUZXN0IGRlZmluZXMgYSBu
dW1iZXIKIC8vIG9mIGZ1bmN0aW9ucyBmb3IgZ2VuZXJhdGluZyB0ZXN0IHBhcmFtZXRlcnMuIFRo
ZXkgcmV0dXJuIHdoYXQgd2UgY2FsbAotLy8gKHN1cnByaXNlISkgcGFyYW1ldGVyIGdlbmVyYXRv
cnMuIEhlcmUgaXMgYSAgc3VtbWFyeSBvZiB0aGVtLCB3aGljaAorLy8gKHN1cnByaXNlISkgcGFy
YW1ldGVyIGdlbmVyYXRvcnMuIEhlcmUgaXMgYSBzdW1tYXJ5IG9mIHRoZW0sIHdoaWNoCiAvLyBh
cmUgYWxsIGluIHRoZSB0ZXN0aW5nIG5hbWVzcGFjZToKIC8vCiAvLwpAQCAtMTM0LDkgKzEzNSwx
MiBAQCBJTlNUQU5USUFURV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFudGlhdGlvbk5hbWUsIEZv
b1Rlc3QsIFZhbHVlc0luKHBldHMpKTsKIC8vIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UsIHdoZXRo
ZXIgdGhlaXIgZGVmaW5pdGlvbnMgY29tZSBiZWZvcmUgb3IKIC8vIEFGVEVSIHRoZSBJTlNUQU5U
SUFURV9URVNUX0NBU0VfUCBzdGF0ZW1lbnQuCiAvLwotLy8gUGxlYXNlIGFsc28gbm90ZSB0aGF0
IGdlbmVyYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIGluCi0vLyBSVU5fQUxMX1RFU1RT
KCksIGFmdGVyIG1haW4oKSBoYXMgc3RhcnRlZC4gVGhpcyBhbGxvd3MgZXZhbHVhdGlvbiBvZgot
Ly8gcGFyYW1ldGVyIGxpc3QgYmFzZWQgb24gY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMuCisvLyBQ
bGVhc2UgYWxzbyBub3RlIHRoYXQgZ2VuZXJhdG9yIGV4cHJlc3Npb25zIChpbmNsdWRpbmcgcGFy
YW1ldGVycyB0byB0aGUKKy8vIGdlbmVyYXRvcnMpIGFyZSBldmFsdWF0ZWQgaW4gSW5pdEdvb2ds
ZVRlc3QoKSwgYWZ0ZXIgbWFpbigpIGhhcyBzdGFydGVkLgorLy8gVGhpcyBhbGxvd3MgdGhlIHVz
ZXIgb24gb25lIGhhbmQsIHRvIGFkanVzdCBnZW5lcmF0b3IgcGFyYW1ldGVycyBpbiBvcmRlcgor
Ly8gdG8gZHluYW1pY2FsbHkgZGV0ZXJtaW5lIGEgc2V0IG9mIHRlc3RzIHRvIHJ1biBhbmQgb24g
dGhlIG90aGVyIGhhbmQsCisvLyBnaXZlIHRoZSB1c2VyIGEgY2hhbmNlIHRvIGluc3BlY3QgdGhl
IGdlbmVyYXRlZCB0ZXN0cyB3aXRoIEdvb2dsZSBUZXN0CisvLyByZWZsZWN0aW9uIEFQSSBiZWZv
cmUgUlVOX0FMTF9URVNUUygpIGlzIGV4ZWN1dGVkLgogLy8KIC8vIFlvdSBjYW4gc2VlIHNhbXBs
ZXMvc2FtcGxlN191bml0dGVzdC5jYyBhbmQgc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjCiAv
LyBmb3IgbW9yZSBleGFtcGxlcy4KQEAgLTE0NCwyMyArMTQ4LDQ0IEBAIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwgVmFsdWVzSW4ocGV0
cykpOwogLy8gSW4gdGhlIGZ1dHVyZSwgd2UgcGxhbiB0byBwdWJsaXNoIHRoZSBBUEkgZm9yIGRl
ZmluaW5nIG5ldyBwYXJhbWV0ZXIKIC8vIGdlbmVyYXRvcnMuIEJ1dCBmb3Igbm93IHRoaXMgaW50
ZXJmYWNlIHJlbWFpbnMgcGFydCBvZiB0aGUgaW50ZXJuYWwKIC8vIGltcGxlbWVudGF0aW9uIGFu
ZCBpcyBzdWJqZWN0IHRvIGNoYW5nZS4KKy8vCisvLworLy8gQSBwYXJhbWV0ZXJpemVkIHRlc3Qg
Zml4dHVyZSBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0IGFuZCBmcm9tCisvLyB0
ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD4sIHdoZXJlIFQgaXMgdGhlIHR5cGUgb2YgdGhl
IHBhcmFtZXRlcgorLy8gdmFsdWVzLiBJbmhlcml0aW5nIGZyb20gVGVzdFdpdGhQYXJhbTxUPiBz
YXRpc2ZpZXMgdGhhdCByZXF1aXJlbWVudCBiZWNhdXNlCisvLyBUZXN0V2l0aFBhcmFtPFQ+IGlu
aGVyaXRzIGZyb20gYm90aCBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UuIEluIG1vcmUKKy8v
IGNvbXBsaWNhdGVkIGhpZXJhcmNoaWVzLCBob3dldmVyLCBpdCBpcyBvY2Nhc2lvbmFsbHkgdXNl
ZnVsIHRvIGluaGVyaXQKKy8vIHNlcGFyYXRlbHkgZnJvbSBUZXN0IGFuZCBXaXRoUGFyYW1JbnRl
cmZhY2UuIEZvciBleGFtcGxlOgorCitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgeworICAvLyBZb3UgY2FuIGluaGVyaXQgYWxsIHRoZSB1c3VhbCBtZW1iZXJzIGZvciBh
IG5vbi1wYXJhbWV0ZXJpemVkIHRlc3QKKyAgLy8gZml4dHVyZSBoZXJlLgorfTsKKworY2xhc3Mg
RGVyaXZlZFRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQYXJh
bUludGVyZmFjZTxpbnQ+IHsKKyAgLy8gVGhlIHVzdWFsIHRlc3QgZml4dHVyZSBtZW1iZXJzIGdv
IGhlcmUgdG9vLgorfTsKKworVEVTVF9GKEJhc2VUZXN0LCBIYXNGb28pIHsKKyAgLy8gVGhpcyBp
cyBhbiBvcmRpbmFyeSBub24tcGFyYW1ldGVyaXplZCB0ZXN0LgorfQorCitURVNUX1AoRGVyaXZl
ZFRlc3QsIERvZXNCbGFoKSB7CisgIC8vIEdldFBhcmFtIHdvcmtzIGp1c3QgdGhlIHNhbWUgaGVy
ZSBhcyBpZiB5b3UgaW5oZXJpdCBmcm9tIFRlc3RXaXRoUGFyYW0uCisgIEVYUEVDVF9UUlVFKGZv
by5CbGFoKEdldFBhcmFtKCkpKTsKK30KIAogI2VuZGlmICAvLyAwCiAKLSNpbmNsdWRlIDxndGVz
dC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
cG9ydC5oIgogCiAjaWYgIUdURVNUX09TX1NZTUJJQU4KLSNpbmNsdWRlIDx1dGlsaXR5PgorIyBp
bmNsdWRlIDx1dGlsaXR5PgogI2VuZGlmCiAKLS8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBkZXBl
bmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKLS8vICp1bmNvbmRpdGlv
bmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKLS8vIGlu
c2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11
dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0
ZWQuaD4KLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJh
bS11dGlsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5l
cmF0ZWQuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC0yNDEsNyArMjY2LDcgQEAgaW50
ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFJhbmdlKFQgc3RhcnQsIFQgZW5kKSB7CiAvLyBlYWNo
IHdpdGggQy1zdHJpbmcgdmFsdWVzIG9mICJmb28iLCAiYmFyIiwgYW5kICJiYXoiOgogLy8KIC8v
IGNvbnN0IGNoYXIqIHN0cmluZ3NbXSA9IHsiZm9vIiwgImJhciIsICJiYXoifTsKLS8vIElOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QKFN0cmluZ1NlcXVlbmNlLCBTcnRpbmdUZXN0LCBWYWx1ZXNJbihz
dHJpbmdzKSk7CisvLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChTdHJpbmdTZXF1ZW5jZSwgU3Ry
aW5nVGVzdCwgVmFsdWVzSW4oc3RyaW5ncykpOwogLy8KIC8vIFRoaXMgaW5zdGFudGlhdGVzIHRl
c3RzIGZyb20gdGVzdCBjYXNlIFN0bFN0cmluZ1Rlc3QKIC8vIGVhY2ggd2l0aCBTVEwgc3RyaW5n
cyB3aXRoIHZhbHVlcyAiYSIgYW5kICJiIjoKQEAgLTI3NCwxMSArMjk5LDEwIEBAIGludGVybmFs
OjpQYXJhbUdlbmVyYXRvcjxUPiBSYW5nZShUIHN0YXJ0LCBUIGVuZCkgewogLy8KIHRlbXBsYXRl
IDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ci0g
ICAgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1
ZV90eXBlPiBWYWx1ZXNJbigKLSAgRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLAotICBGb3J3YXJkSXRl
cmF0b3IgZW5kKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxG
b3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCi0gICAgICBQYXJhbVR5cGU7CisgIHR5cGVuYW1l
IDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZh
bHVlX3R5cGU+CitWYWx1ZXNJbihGb3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJdGVyYXRv
ciBlbmQpIHsKKyAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVyYXRv
clRyYWl0czxGb3J3YXJkSXRlcmF0b3I+CisgICAgICA6OnZhbHVlX3R5cGUgUGFyYW1UeXBlOwog
ICByZXR1cm4gaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT4oCiAgICAgICBuZXcg
aW50ZXJuYWw6OlZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvcjxQYXJhbVR5cGU+KGJlZ2lu
LCBlbmQpKTsKIH0KQEAgLTM0OCw3ICszNzIsNyBAQCBpbmxpbmUgaW50ZXJuYWw6OlBhcmFtR2Vu
ZXJhdG9yPGJvb2w+IEJvb2woKSB7CiAgIHJldHVybiBWYWx1ZXMoZmFsc2UsIHRydWUpOwogfQog
Ci0jaWYgR1RFU1RfSEFTX0NPTUJJTkUKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKIC8vIENvbWJp
bmUoKSBhbGxvd3MgdGhlIHVzZXIgdG8gY29tYmluZSB0d28gb3IgbW9yZSBzZXF1ZW5jZXMgdG8g
cHJvZHVjZQogLy8gdmFsdWVzIG9mIGEgQ2FydGVzaWFuIHByb2R1Y3Qgb2YgdGhvc2Ugc2VxdWVu
Y2VzJyBlbGVtZW50cy4KIC8vCkBAIC0zODQsNyArNDA4LDcgQEAgaW5saW5lIGludGVybmFsOjpQ
YXJhbUdlbmVyYXRvcjxib29sPiBCb29sKCkgewogLy8gQm9vbGVhbiBmbGFnczoKIC8vCiAvLyBj
bGFzcyBGbGFnRGVwZW5kZW50VGVzdAotLy8gICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRo
UGFyYW08dHVwbGUoYm9vbCwgYm9vbCk+ID4geworLy8gICAgIDogcHVibGljIHRlc3Rpbmc6OlRl
c3RXaXRoUGFyYW08dHVwbGU8Ym9vbCwgYm9vbD4gPiB7CiAvLyAgIHZpcnR1YWwgdm9pZCBTZXRV
cCgpIHsKIC8vICAgICAvLyBBc3NpZ25zIGV4dGVybmFsX2ZsYWdfMSBhbmQgZXh0ZXJuYWxfZmxh
Z18yIHZhbHVlcyBmcm9tIHRoZSB0dXBsZS4KIC8vICAgICB0aWUoZXh0ZXJuYWxfZmxhZ18xLCBl
eHRlcm5hbF9mbGFnXzIpID0gR2V0UGFyYW0oKTsKQEAgLTQwOSwxMSArNDMzLDkgQEAgaW50ZXJu
YWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIkaTwkZm9yIGosIFtbR2VuZXJhdG9yJGpdXT4gQ29t
YmluZSgKIH0KIAogXV0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKLQotCisjIGVuZGlm
ICAvLyBHVEVTVF9IQVNfQ09NQklORQogCi0jZGVmaW5lIFRFU1RfUCh0ZXN0X2Nhc2VfbmFtZSwg
dGVzdF9uYW1lKSBcCisjIGRlZmluZSBURVNUX1AodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkg
XAogICBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25h
bWUpIFwKICAgICAgIDogcHVibGljIHRlc3RfY2FzZV9uYW1lIHsgXAogICAgcHVibGljOiBcCkBA
IC00MjMsMTQgKzQ0NSwxNyBAQCBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlciRpPCRm
b3IgaiwgW1tHZW5lcmF0b3Ikal1dPiBDb21iaW5lKAogICAgIHN0YXRpYyBpbnQgQWRkVG9SZWdp
c3RyeSgpIHsgXAogICAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+cGFy
YW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkuIFwKICAgICAgICAgICBHZXRUZXN0Q2FzZVBhdHRl
cm5Ib2xkZXI8dGVzdF9jYXNlX25hbWU+KFwKLSAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1l
LCBfX0ZJTEVfXywgX19MSU5FX18pLT5BZGRUZXN0UGF0dGVybihcCi0gICAgICAgICAgICAgICAg
ICAjdGVzdF9jYXNlX25hbWUsIFwKLSAgICAgICAgICAgICAgICAgICN0ZXN0X25hbWUsIFwKLSAg
ICAgICAgICAgICAgICAgIG5ldyA6OnRlc3Rpbmc6OmludGVybmFsOjpUZXN0TWV0YUZhY3Rvcnk8
IFwKLSAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2Fz
ZV9uYW1lLCB0ZXN0X25hbWUpPigpKTsgXAorICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUs
IFwKKyAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKFwKKyAg
ICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykpLT5BZGRUZXN0UGF0dGVybihcCisg
ICAgICAgICAgICAgICAgICAgICAgR1RFU1RfU1RSSU5HSUZZXyh0ZXN0X2Nhc2VfbmFtZSksIFwK
KyAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9TVFJJTkdJRllfKHRlc3RfbmFtZSksIFwKKyAg
ICAgICAgICAgICAgICAgICAgICBuZXcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdE1ldGFGYWN0
b3J5PCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8o
XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jYXNlX25hbWUsIHRlc3RfbmFt
ZSk+KCkpOyBcCiAgICAgICByZXR1cm4gMDsgXAogICAgIH0gXAotICAgIHN0YXRpYyBpbnQgZ3Rl
c3RfcmVnaXN0ZXJpbmdfZHVtbXlfOyBcCisgICAgc3RhdGljIGludCBndGVzdF9yZWdpc3Rlcmlu
Z19kdW1teV8gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF87IFwKICAgICBHVEVTVF9ESVNBTExPV19D
T1BZX0FORF9BU1NJR05fKFwKICAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nh
c2VfbmFtZSwgdGVzdF9uYW1lKSk7IFwKICAgfTsgXApAQCAtNDM5LDE5ICs0NjQsMzcgQEAgaW50
ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIkaTwkZm9yIGosIFtbR2VuZXJhdG9yJGpdXT4g
Q29tYmluZSgKICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSk6OkFkZFRvUmVnaXN0cnkoKTsgXAogICB2b2lkIEdURVNUX1RFU1RfQ0xBU1NfTkFN
RV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSk6OlRlc3RCb2R5KCkKIAotI2RlZmluZSBJTlNU
QU5USUFURV9URVNUX0NBU0VfUChwcmVmaXgsIHRlc3RfY2FzZV9uYW1lLCBnZW5lcmF0b3IpIFwK
LSAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dGVzdF9jYXNlX25hbWU6OlBh
cmFtVHlwZT4gXAorLy8gVGhlIG9wdGlvbmFsIGxhc3QgYXJndW1lbnQgdG8gSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AgYWxsb3dzIHRoZSB1c2VyCisvLyB0byBzcGVjaWZ5IGEgZnVuY3Rpb24gb3Ig
ZnVuY3RvciB0aGF0IGdlbmVyYXRlcyBjdXN0b20gdGVzdCBuYW1lIHN1ZmZpeGVzCisvLyBiYXNl
ZCBvbiB0aGUgdGVzdCBwYXJhbWV0ZXJzLiBUaGUgZnVuY3Rpb24gc2hvdWxkIGFjY2VwdCBvbmUg
YXJndW1lbnQgb2YKKy8vIHR5cGUgdGVzdGluZzo6VGVzdFBhcmFtSW5mbzxjbGFzcyBQYXJhbVR5
cGU+LCBhbmQgcmV0dXJuIHN0ZDo6c3RyaW5nLgorLy8KKy8vIHRlc3Rpbmc6OlByaW50VG9TdHJp
bmdQYXJhbU5hbWUgaXMgYSBidWlsdGluIHRlc3Qgc3VmZml4IGdlbmVyYXRvciB0aGF0CisvLyBy
ZXR1cm5zIHRoZSB2YWx1ZSBvZiB0ZXN0aW5nOjpQcmludFRvU3RyaW5nKEdldFBhcmFtKCkpLgor
Ly8KKy8vIE5vdGU6IHRlc3QgbmFtZXMgbXVzdCBiZSBub24tZW1wdHksIHVuaXF1ZSwgYW5kIG1h
eSBvbmx5IGNvbnRhaW4gQVNDSUkKKy8vIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9yIHVuZGVy
c2NvcmUuIEJlY2F1c2UgUHJpbnRUb1N0cmluZyBhZGRzIHF1b3RlcworLy8gdG8gc3RkOjpzdHJp
bmcgYW5kIEMgc3RyaW5ncywgaXQgd29uJ3Qgd29yayBmb3IgdGhlc2UgdHlwZXMuCisKKyMgZGVm
aW5lIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKHByZWZpeCwgdGVzdF9jYXNlX25hbWUsIGdlbmVy
YXRvciwgLi4uKSBcCisgIHN0YXRpYyA6OnRlc3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVyYXRv
cjx0ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiBcCiAgICAgICBndGVzdF8jI3ByZWZpeCMjdGVz
dF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdG9yXygpIHsgcmV0dXJuIGdlbmVyYXRvcjsgfSBcCi0g
IGludCBndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19kdW1teV8gPSBcCisgIHN0YXRp
YyA6OnN0ZDo6c3RyaW5nIGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5l
cmF0ZU5hbWVfKCBcCisgICAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88dGVzdF9j
YXNlX25hbWU6OlBhcmFtVHlwZT4mIGluZm8pIHsgXAorICAgIHJldHVybiA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpHZXRQYXJhbU5hbWVHZW48dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlwZT4gXAorICAg
ICAgICAoX19WQV9BUkdTX18pKGluZm8pOyBcCisgIH0gXAorICBzdGF0aWMgaW50IGd0ZXN0XyMj
cHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX2R1bW15XyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9
IFwKICAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRlcml6
ZWRfdGVzdF9yZWdpc3RyeSgpLiBcCiAgICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVy
PHRlc3RfY2FzZV9uYW1lPihcCi0gICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgX19GSUxF
X18sIF9fTElORV9fKS0+QWRkVGVzdENhc2VJbnN0YW50aWF0aW9uKFwKLSAgICAgICAgICAgICAg
ICAgICNwcmVmaXgsIFwKLSAgICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9j
YXNlX25hbWUjI19FdmFsR2VuZXJhdG9yXywgXAotICAgICAgICAgICAgICAgICAgX19GSUxFX18s
IF9fTElORV9fKQorICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIFwKKyAgICAgICAgICAg
ICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKFwKKyAgICAgICAgICAgICAgICAg
IF9fRklMRV9fLCBfX0xJTkVfXykpLT5BZGRUZXN0Q2FzZUluc3RhbnRpYXRpb24oXAorICAgICAg
ICAgICAgICAgICAgICAgICNwcmVmaXgsIFwKKyAgICAgICAgICAgICAgICAgICAgICAmZ3Rlc3Rf
IyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRvcl8sIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAmZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRl
TmFtZV8sIFwKKyAgICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pCiAKIH0g
IC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QK
LQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcHJp
bnRlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcHJp
bnRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41MTg2NWY4NGU2ZjZmYTNlMGZjZTE5ODcwMGI1YTVkZmU1ZjY1
NTBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdC1wcmludGVycy5oCkBAIC0wLDAgKzEsMTEwNyBAQAorLy8gQ29weXJpZ2h0IDIw
MDcsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisv
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIEdvb2dsZSBUZXN0IC0gVGhlIEdv
b2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsKKy8vCisvLyBUaGlzIGZpbGUg
aW1wbGVtZW50cyBhIHVuaXZlcnNhbCB2YWx1ZSBwcmludGVyIHRoYXQgY2FuIHByaW50IGEKKy8v
IHZhbHVlIG9mIGFueSB0eXBlIFQ6CisvLworLy8gICB2b2lkIDo6dGVzdGluZzo6aW50ZXJuYWw6
OlVuaXZlcnNhbFByaW50ZXI8VD46OlByaW50KHZhbHVlLCBvc3RyZWFtX3B0cik7CisvLworLy8g
QSB1c2VyIGNhbiB0ZWFjaCB0aGlzIGZ1bmN0aW9uIGhvdyB0byBwcmludCBhIGNsYXNzIHR5cGUg
VCBieQorLy8gZGVmaW5pbmcgZWl0aGVyIG9wZXJhdG9yPDwoKSBvciBQcmludFRvKCkgaW4gdGhl
IG5hbWVzcGFjZSB0aGF0CisvLyBkZWZpbmVzIFQuICBNb3JlIHNwZWNpZmljYWxseSwgdGhlIEZJ
UlNUIGRlZmluZWQgZnVuY3Rpb24gaW4gdGhlCisvLyBmb2xsb3dpbmcgbGlzdCB3aWxsIGJlIHVz
ZWQgKGFzc3VtaW5nIFQgaXMgZGVmaW5lZCBpbiBuYW1lc3BhY2UKKy8vIGZvbyk6CisvLworLy8g
ICAxLiBmb286OlByaW50VG8oY29uc3QgVCYsIG9zdHJlYW0qKQorLy8gICAyLiBvcGVyYXRvcjw8
KG9zdHJlYW0mLCBjb25zdCBUJikgZGVmaW5lZCBpbiBlaXRoZXIgZm9vIG9yIHRoZQorLy8gICAg
ICBnbG9iYWwgbmFtZXNwYWNlLgorLy8KKy8vIEhvd2V2ZXIgaWYgVCBpcyBhbiBTVEwtc3R5bGUg
Y29udGFpbmVyIHRoZW4gaXQgaXMgcHJpbnRlZCBlbGVtZW50LXdpc2UKKy8vIHVubGVzcyBmb286
OlByaW50VG8oY29uc3QgVCYsIG9zdHJlYW0qKSBpcyBkZWZpbmVkLiBOb3RlIHRoYXQKKy8vIG9w
ZXJhdG9yPDwoKSBpcyBpZ25vcmVkIGZvciBjb250YWluZXIgdHlwZXMuCisvLworLy8gSWYgbm9u
ZSBvZiB0aGUgYWJvdmUgaXMgZGVmaW5lZCwgaXQgd2lsbCBwcmludCB0aGUgZGVidWcgc3RyaW5n
IG9mCisvLyB0aGUgdmFsdWUgaWYgaXQgaXMgYSBwcm90b2NvbCBidWZmZXIsIG9yIHByaW50IHRo
ZSByYXcgYnl0ZXMgaW4gdGhlCisvLyB2YWx1ZSBvdGhlcndpc2UuCisvLworLy8gVG8gYWlkIGRl
YnVnZ2luZzogd2hlbiBUIGlzIGEgcmVmZXJlbmNlIHR5cGUsIHRoZSBhZGRyZXNzIG9mIHRoZQor
Ly8gdmFsdWUgaXMgYWxzbyBwcmludGVkOyB3aGVuIFQgaXMgYSAoY29uc3QpIGNoYXIgcG9pbnRl
ciwgYm90aCB0aGUKKy8vIHBvaW50ZXIgdmFsdWUgYW5kIHRoZSBOVUwtdGVybWluYXRlZCBzdHJp
bmcgaXQgcG9pbnRzIHRvIGFyZQorLy8gcHJpbnRlZC4KKy8vCisvLyBXZSBhbHNvIHByb3ZpZGUg
c29tZSBjb252ZW5pZW50IHdyYXBwZXJzOgorLy8KKy8vICAgLy8gUHJpbnRzIGEgdmFsdWUgdG8g
YSBzdHJpbmcuICBGb3IgYSAoY29uc3Qgb3Igbm90KSBjaGFyCisvLyAgIC8vIHBvaW50ZXIsIHRo
ZSBOVUwtdGVybWluYXRlZCBzdHJpbmcgKGJ1dCBub3QgdGhlIHBvaW50ZXIpIGlzCisvLyAgIC8v
IHByaW50ZWQuCisvLyAgIHN0ZDo6c3RyaW5nIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhjb25z
dCBUJiB2YWx1ZSk7CisvLworLy8gICAvLyBQcmludHMgYSB2YWx1ZSB0ZXJzZWx5OiBmb3IgYSBy
ZWZlcmVuY2UgdHlwZSwgdGhlIHJlZmVyZW5jZWQKKy8vICAgLy8gdmFsdWUgKGJ1dCBub3QgdGhl
IGFkZHJlc3MpIGlzIHByaW50ZWQ7IGZvciBhIChjb25zdCBvciBub3QpIGNoYXIKKy8vICAgLy8g
cG9pbnRlciwgdGhlIE5VTC10ZXJtaW5hdGVkIHN0cmluZyAoYnV0IG5vdCB0aGUgcG9pbnRlcikg
aXMKKy8vICAgLy8gcHJpbnRlZC4KKy8vICAgdm9pZCA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2
ZXJzYWxUZXJzZVByaW50KGNvbnN0IFQmIHZhbHVlLCBvc3RyZWFtKik7CisvLworLy8gICAvLyBQ
cmludHMgdmFsdWUgdXNpbmcgdGhlIHR5cGUgaW5mZXJyZWQgYnkgdGhlIGNvbXBpbGVyLiAgVGhl
IGRpZmZlcmVuY2UKKy8vICAgLy8gZnJvbSBVbml2ZXJzYWxUZXJzZVByaW50KCkgaXMgdGhhdCB0
aGlzIGZ1bmN0aW9uIHByaW50cyBib3RoIHRoZQorLy8gICAvLyBwb2ludGVyIGFuZCB0aGUgTlVM
LXRlcm1pbmF0ZWQgc3RyaW5nIGZvciBhIChjb25zdCBvciBub3QpIGNoYXIgcG9pbnRlci4KKy8v
ICAgdm9pZCA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxQcmludChjb25zdCBUJiB2YWx1
ZSwgb3N0cmVhbSopOworLy8KKy8vICAgLy8gUHJpbnRzIHRoZSBmaWVsZHMgb2YgYSB0dXBsZSB0
ZXJzZWx5IHRvIGEgc3RyaW5nIHZlY3Rvciwgb25lCisvLyAgIC8vIGVsZW1lbnQgZm9yIGVhY2gg
ZmllbGQuIFR1cGxlIHN1cHBvcnQgbXVzdCBiZSBlbmFibGVkIGluCisvLyAgIC8vIGd0ZXN0LXBv
cnQuaC4KKy8vICAgc3RkOjp2ZWN0b3I8c3RyaW5nPiBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVG
aWVsZHNUb1N0cmluZ3MoCisvLyAgICAgICBjb25zdCBUdXBsZSYgdmFsdWUpOworLy8KKy8vIEtu
b3duIGxpbWl0YXRpb246CisvLworLy8gVGhlIHByaW50IHByaW1pdGl2ZXMgcHJpbnQgdGhlIGVs
ZW1lbnRzIG9mIGFuIFNUTC1zdHlsZSBjb250YWluZXIKKy8vIHVzaW5nIHRoZSBjb21waWxlci1p
bmZlcnJlZCB0eXBlIG9mICppdGVyIHdoZXJlIGl0ZXIgaXMgYQorLy8gY29uc3RfaXRlcmF0b3Ig
b2YgdGhlIGNvbnRhaW5lci4gIFdoZW4gY29uc3RfaXRlcmF0b3IgaXMgYW4gaW5wdXQKKy8vIGl0
ZXJhdG9yIGJ1dCBub3QgYSBmb3J3YXJkIGl0ZXJhdG9yLCB0aGlzIGluZmVycmVkIHR5cGUgbWF5
IG5vdAorLy8gbWF0Y2ggdmFsdWVfdHlwZSwgYW5kIHRoZSBwcmludCBvdXRwdXQgbWF5IGJlIGlu
Y29ycmVjdC4gIEluCisvLyBwcmFjdGljZSwgdGhpcyBpcyByYXJlbHkgYSBwcm9ibGVtIGFzIGZv
ciBtb3N0IGNvbnRhaW5lcnMKKy8vIGNvbnN0X2l0ZXJhdG9yIGlzIGEgZm9yd2FyZCBpdGVyYXRv
ci4gIFdlJ2xsIGZpeCB0aGlzIGlmIHRoZXJlJ3MgYW4KKy8vIGFjdHVhbCBuZWVkIGZvciBpdC4g
IE5vdGUgdGhhdCB0aGlzIGZpeCBjYW5ub3QgcmVseSBvbiB2YWx1ZV90eXBlCisvLyBiZWluZyBk
ZWZpbmVkIGFzIG1hbnkgdXNlci1kZWZpbmVkIGNvbnRhaW5lciB0eXBlcyBkb24ndCBoYXZlCisv
LyB2YWx1ZV90eXBlLgorCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKKyNp
Zm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUklOVEVSU19IXworI2RlZmluZSBHVEVT
VF9JTkNMVURFX0dURVNUX0dURVNUX1BSSU5URVJTX0hfCisKKyNpbmNsdWRlIDxvc3RyZWFtPiAg
Ly8gTk9MSU5UCisjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVk
ZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtcG9ydC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgi
CisKKyNpZiBHVEVTVF9IQVNfU1REX1RVUExFXworIyBpbmNsdWRlIDx0dXBsZT4KKyNlbmRpZgor
CisjaWYgR1RFU1RfSEFTX0FCU0wKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcu
aCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYWJzbC90eXBl
cy92YXJpYW50LmgiCisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCisKK25hbWVzcGFjZSB0ZXN0
aW5nIHsKKworLy8gRGVmaW5pdGlvbnMgaW4gdGhlICdpbnRlcm5hbCcgYW5kICdpbnRlcm5hbDIn
IG5hbWUgc3BhY2VzIGFyZQorLy8gc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuICBE
TyBOT1QgVVNFIFRIRU0gSU4gVVNFUiBDT0RFIQorbmFtZXNwYWNlIGludGVybmFsMiB7CisKKy8v
IFByaW50cyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBnaXZlbiBvYmplY3QgdG8g
dGhlIGdpdmVuCisvLyBvc3RyZWFtLgorR1RFU1RfQVBJXyB2b2lkIFByaW50Qnl0ZXNJbk9iamVj
dFRvKGNvbnN0IHVuc2lnbmVkIGNoYXIqIG9ial9ieXRlcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKKworLy8gRm9yIHNlbGVjdGluZyB3aGlj
aCBwcmludGVyIHRvIHVzZSB3aGVuIGEgZ2l2ZW4gdHlwZSBoYXMgbmVpdGhlciA8PAorLy8gbm9y
IFByaW50VG8oKS4KK2VudW0gVHlwZUtpbmQgeworICBrUHJvdG9idWYsICAgICAgICAgICAgICAv
LyBhIHByb3RvYnVmIHR5cGUKKyAga0NvbnZlcnRpYmxlVG9JbnRlZ2VyLCAgLy8gYSB0eXBlIGlt
cGxpY2l0bHkgY29udmVydGlibGUgdG8gQmlnZ2VzdEludAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyAoZS5nLiBhIG5hbWVkIG9yIHVubmFtZWQgZW51bSB0eXBlKQorI2lmIEdURVNUX0hB
U19BQlNMCisgIGtDb252ZXJ0aWJsZVRvU3RyaW5nVmlldywgIC8vIGEgdHlwZSBpbXBsaWNpdGx5
IGNvbnZlcnRpYmxlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFic2w6OnN0
cmluZ192aWV3CisjZW5kaWYKKyAga090aGVyVHlwZSAgLy8gYW55dGhpbmcgZWxzZQorfTsKKwor
Ly8gVHlwZVdpdGhvdXRGb3JtYXR0ZXI8VCwga1R5cGVLaW5kPjo6UHJpbnRWYWx1ZSh2YWx1ZSwg
b3MpIGlzIGNhbGxlZAorLy8gYnkgdGhlIHVuaXZlcnNhbCBwcmludGVyIHRvIHByaW50IGEgdmFs
dWUgb2YgdHlwZSBUIHdoZW4gbmVpdGhlcgorLy8gb3BlcmF0b3I8PCBub3IgUHJpbnRUbygpIGlz
IGRlZmluZWQgZm9yIFQsIHdoZXJlIGtUeXBlS2luZCBpcyB0aGUKKy8vICJraW5kIiBvZiBUIGFz
IGRlZmluZWQgYnkgZW51bSBUeXBlS2luZC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBUeXBlS2lu
ZCBrVHlwZUtpbmQ+CitjbGFzcyBUeXBlV2l0aG91dEZvcm1hdHRlciB7CisgcHVibGljOgorICAv
LyBUaGlzIGRlZmF1bHQgdmVyc2lvbiBpcyBjYWxsZWQgd2hlbiBrVHlwZUtpbmQgaXMga090aGVy
VHlwZS4KKyAgc3RhdGljIHZvaWQgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgICAgUHJpbnRCeXRlc0luT2JqZWN0VG8oc3RhdGljX2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJl
dF9jYXN0PGNvbnN0IHZvaWQqPigmdmFsdWUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplb2YodmFsdWUpLCBvcyk7CisgIH0KK307CisKKy8vIFdlIHByaW50IGEgcHJvdG9idWYgdXNp
bmcgaXRzIFNob3J0RGVidWdTdHJpbmcoKSB3aGVuIHRoZSBzdHJpbmcKKy8vIGRvZXNuJ3QgZXhj
ZWVkIHRoaXMgbWFueSBjaGFyYWN0ZXJzOyBvdGhlcndpc2Ugd2UgcHJpbnQgaXQgdXNpbmcKKy8v
IERlYnVnU3RyaW5nKCkgZm9yIGJldHRlciByZWFkYWJpbGl0eS4KK2NvbnN0IHNpemVfdCBrUHJv
dG9idWZPbmVMaW5lck1heExlbmd0aCA9IDUwOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIFR5cGVXaXRob3V0Rm9ybWF0dGVyPFQsIGtQcm90b2J1Zj4geworIHB1YmxpYzoKKyAgc3Rh
dGljIHZvaWQgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7
CisgICAgc3RkOjpzdHJpbmcgcHJldHR5X3N0ciA9IHZhbHVlLlNob3J0RGVidWdTdHJpbmcoKTsK
KyAgICBpZiAocHJldHR5X3N0ci5sZW5ndGgoKSA+IGtQcm90b2J1Zk9uZUxpbmVyTWF4TGVuZ3Ro
KSB7CisgICAgICBwcmV0dHlfc3RyID0gIlxuIiArIHZhbHVlLkRlYnVnU3RyaW5nKCk7CisgICAg
fQorICAgICpvcyA8PCAoIjwiICsgcHJldHR5X3N0ciArICI+Iik7CisgIH0KK307CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZVdpdGhvdXRGb3JtYXR0ZXI8VCwga0NvbnZlcnRp
YmxlVG9JbnRlZ2VyPiB7CisgcHVibGljOgorICAvLyBTaW5jZSBUIGhhcyBubyA8PCBvcGVyYXRv
ciBvciBQcmludFRvKCkgYnV0IGNhbiBiZSBpbXBsaWNpdGx5CisgIC8vIGNvbnZlcnRlZCB0byBC
aWdnZXN0SW50LCB3ZSBwcmludCBpdCBhcyBhIEJpZ2dlc3RJbnQuCisgIC8vCisgIC8vIE1vc3Qg
bGlrZWx5IFQgaXMgYW4gZW51bSB0eXBlIChlaXRoZXIgbmFtZWQgb3IgdW5uYW1lZCksIGluIHdo
aWNoCisgIC8vIGNhc2UgcHJpbnRpbmcgaXQgYXMgYW4gaW50ZWdlciBpcyB0aGUgZGVzaXJlZCBi
ZWhhdmlvci4gIEluIGNhc2UKKyAgLy8gVCBpcyBub3QgYW4gZW51bSwgcHJpbnRpbmcgaXQgYXMg
YW4gaW50ZWdlciBpcyB0aGUgYmVzdCB3ZSBjYW4gZG8KKyAgLy8gZ2l2ZW4gdGhhdCBpdCBoYXMg
bm8gdXNlci1kZWZpbmVkIHByaW50ZXIuCisgIHN0YXRpYyB2b2lkIFByaW50VmFsdWUoY29uc3Qg
VCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIGNvbnN0IGludGVybmFsOjpCaWdn
ZXN0SW50IGtCaWdJbnQgPSB2YWx1ZTsKKyAgICAqb3MgPDwga0JpZ0ludDsKKyAgfQorfTsKKwor
I2lmIEdURVNUX0hBU19BQlNMCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVXaXRo
b3V0Rm9ybWF0dGVyPFQsIGtDb252ZXJ0aWJsZVRvU3RyaW5nVmlldz4geworIHB1YmxpYzoKKyAg
Ly8gU2luY2UgVCBoYXMgbmVpdGhlciBvcGVyYXRvcjw8IG5vciBQcmludFRvKCkgYnV0IGNhbiBi
ZSBpbXBsaWNpdGx5CisgIC8vIGNvbnZlcnRlZCB0byBhYnNsOjpzdHJpbmdfdmlldywgd2UgcHJp
bnQgaXQgYXMgYSBhYnNsOjpzdHJpbmdfdmlldy4KKyAgLy8KKyAgLy8gTm90ZTogdGhlIGltcGxl
bWVudGF0aW9uIGlzIGZ1cnRoZXIgYmVsb3csIGFzIGl0IGRlcGVuZHMgb24KKyAgLy8gaW50ZXJu
YWw6OlByaW50VG8gc3ltYm9sIHdoaWNoIGlzIGRlZmluZWQgbGF0ZXIgaW4gdGhlIGZpbGUuCisg
IHN0YXRpYyB2b2lkIFByaW50VmFsdWUoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBv
cyk7Cit9OworI2VuZGlmCisKKy8vIFByaW50cyB0aGUgZ2l2ZW4gdmFsdWUgdG8gdGhlIGdpdmVu
IG9zdHJlYW0uICBJZiB0aGUgdmFsdWUgaXMgYQorLy8gcHJvdG9jb2wgbWVzc2FnZSwgaXRzIGRl
YnVnIHN0cmluZyBpcyBwcmludGVkOyBpZiBpdCdzIGFuIGVudW0gb3IKKy8vIG9mIGEgdHlwZSBp
bXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRvIEJpZ2dlc3RJbnQsIGl0J3MgcHJpbnRlZCBhcyBhbgor
Ly8gaW50ZWdlcjsgb3RoZXJ3aXNlIHRoZSBieXRlcyBpbiB0aGUgdmFsdWUgYXJlIHByaW50ZWQu
ICBUaGlzIGlzCisvLyB3aGF0IFVuaXZlcnNhbFByaW50ZXI8VD46OlByaW50KCkgZG9lcyB3aGVu
IGl0IGtub3dzIG5vdGhpbmcgYWJvdXQKKy8vIHR5cGUgVCBhbmQgVCBoYXMgbmVpdGhlciA8PCBv
cGVyYXRvciBub3IgUHJpbnRUbygpLgorLy8KKy8vIEEgdXNlciBjYW4gb3ZlcnJpZGUgdGhpcyBi
ZWhhdmlvciBmb3IgYSBjbGFzcyB0eXBlIEZvbyBieSBkZWZpbmluZworLy8gYSA8PCBvcGVyYXRv
ciBpbiB0aGUgbmFtZXNwYWNlIHdoZXJlIEZvbyBpcyBkZWZpbmVkLgorLy8KKy8vIFdlIHB1dCB0
aGlzIG9wZXJhdG9yIGluIG5hbWVzcGFjZSAnaW50ZXJuYWwyJyBpbnN0ZWFkIG9mICdpbnRlcm5h
bCcKKy8vIHRvIHNpbXBsaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbiwgYXMgbXVjaCBjb2RlIGluICdp
bnRlcm5hbCcgbmVlZHMgdG8KKy8vIHVzZSA8PCBpbiBTVEwsIHdoaWNoIHdvdWxkIGNvbmZsaWN0
IHdpdGggb3VyIG93biA8PCB3ZXJlIGl0IGRlZmluZWQKKy8vIGluICdpbnRlcm5hbCcuCisvLwor
Ly8gTm90ZSB0aGF0IHRoaXMgb3BlcmF0b3I8PCB0YWtlcyBhIGdlbmVyaWMgc3RkOjpiYXNpY19v
c3RyZWFtPENoYXIsCisvLyBDaGFyVHJhaXRzPiB0eXBlIGluc3RlYWQgb2YgdGhlIG1vcmUgcmVz
dHJpY3RlZCBzdGQ6Om9zdHJlYW0uICBJZgorLy8gd2UgZGVmaW5lIGl0IHRvIHRha2UgYW4gc3Rk
Ojpvc3RyZWFtIGluc3RlYWQsIHdlJ2xsIGdldCBhbgorLy8gImFtYmlndW91cyBvdmVybG9hZHMi
IGNvbXBpbGVyIGVycm9yIHdoZW4gdHJ5aW5nIHRvIHByaW50IGEgdHlwZQorLy8gRm9vIHRoYXQg
c3VwcG9ydHMgc3RyZWFtaW5nIHRvIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLAorLy8gQ2hhclRy
YWl0cz4sIGFzIHRoZSBjb21waWxlciBjYW5ub3QgdGVsbCB3aGV0aGVyCisvLyBvcGVyYXRvcjw8
KHN0ZDo6b3N0cmVhbSYsIGNvbnN0IFQmKSBvcgorLy8gb3BlcmF0b3I8PChzdGQ6OmJhc2ljX3N0
cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiwgY29uc3QgRm9vJikgaXMgbW9yZQorLy8gc3BlY2lmaWMu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhciwgdHlwZW5hbWUgQ2hhclRyYWl0cywgdHlwZW5hbWUg
VD4KKzo6c3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcGVyYXRvcjw8KAor
ICAgIDo6c3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcywgY29uc3QgVCYg
eCkgeworICBUeXBlV2l0aG91dEZvcm1hdHRlcjxULCAoaW50ZXJuYWw6OklzQVByb3RvY29sTWVz
c2FnZTxUPjo6dmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGtQcm90b2J1
ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50ZXJuYWw6OkltcGxpY2l0bHlD
b252ZXJ0aWJsZTwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
JiwgaW50ZXJuYWw6OkJpZ2dlc3RJbnQ+Ojp2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID8ga0NvbnZlcnRpYmxlVG9JbnRlZ2VyCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOgorI2lmIEdURVNUX0hBU19BQlNMCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCYsIGFic2w6OnN0
cmluZ192aWV3Pjo6dmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPyBrQ29udmVydGlibGVUb1N0cmluZ1ZpZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOgorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGtPdGhlclR5cGUpPjo6UHJpbnRWYWx1ZSh4LCAmb3MpOworICByZXR1cm4gb3M7
Cit9CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbDIKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5n
CisKKy8vIFRoaXMgbmFtZXNwYWNlIE1VU1QgTk9UIEJFIE5FU1RFRCBJTiA6OnRlc3RpbmcsIG9y
IHRoZSBuYW1lIGxvb2stdXAKKy8vIG1hZ2ljIG5lZWRlZCBmb3IgaW1wbGVtZW50aW5nIFVuaXZl
cnNhbFByaW50ZXIgd29uJ3Qgd29yay4KK25hbWVzcGFjZSB0ZXN0aW5nX2ludGVybmFsIHsKKwor
Ly8gVXNlZCB0byBwcmludCBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIFNUTC1zdHlsZSBjb250YWlu
ZXIgd2hlbiB0aGUKKy8vIHVzZXIgZG9lc24ndCBkZWZpbmUgUHJpbnRUbygpIGZvciBpdC4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBEZWZhdWx0UHJpbnROb25Db250YWluZXJUbyhjb25z
dCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIC8vIFdpdGggdGhlIGZvbGxvd2lu
ZyBzdGF0ZW1lbnQsIGR1cmluZyB1bnF1YWxpZmllZCBuYW1lIGxvb2t1cCwKKyAgLy8gdGVzdGlu
Zzo6aW50ZXJuYWwyOjpvcGVyYXRvcjw8IGFwcGVhcnMgYXMgaWYgaXQgd2FzIGRlY2xhcmVkIGlu
CisgIC8vIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UgdGhhdCBjb250YWlucyBib3Ro
CisgIC8vIDo6dGVzdGluZ19pbnRlcm5hbCBhbmQgOjp0ZXN0aW5nOjppbnRlcm5hbDIsIGkuZS4g
dGhlIGdsb2JhbAorICAvLyBuYW1lc3BhY2UuICBGb3IgbW9yZSBkZXRhaWxzLCByZWZlciB0byB0
aGUgQysrIFN0YW5kYXJkIHNlY3Rpb24KKyAgLy8gNy4zLjQtMSBbbmFtZXNwYWNlLnVkaXJdLiAg
VGhpcyBhbGxvd3MgdXMgdG8gZmFsbCBiYWNrIG9udG8KKyAgLy8gdGVzdGluZzo6aW50ZXJuYWwy
OjpvcGVyYXRvcjw8IGluIGNhc2UgVCBkb2Vzbid0IGNvbWUgd2l0aCBhIDw8CisgIC8vIG9wZXJh
dG9yLgorICAvLworICAvLyBXZSBjYW5ub3Qgd3JpdGUgJ3VzaW5nIDo6dGVzdGluZzo6aW50ZXJu
YWwyOjpvcGVyYXRvcjw8OycsIHdoaWNoCisgIC8vIGdjYyAzLjMgZmFpbHMgdG8gY29tcGlsZSBk
dWUgdG8gYSBjb21waWxlciBidWcuCisgIHVzaW5nIG5hbWVzcGFjZSA6OnRlc3Rpbmc6OmludGVy
bmFsMjsgIC8vIE5PTElOVAorCisgIC8vIEFzc3VtaW5nIFQgaXMgZGVmaW5lZCBpbiBuYW1lc3Bh
Y2UgZm9vLCBpbiB0aGUgbmV4dCBzdGF0ZW1lbnQsCisgIC8vIHRoZSBjb21waWxlciB3aWxsIGNv
bnNpZGVyIGFsbCBvZjoKKyAgLy8KKyAgLy8gICAxLiBmb286Om9wZXJhdG9yPDwgKHRoYW5rcyB0
byBLb2VuaWcgbG9vay11cCksCisgIC8vICAgMi4gOjpvcGVyYXRvcjw8IChhcyB0aGUgY3VycmVu
dCBuYW1lc3BhY2UgaXMgZW5jbG9zZWQgaW4gOjopLAorICAvLyAgIDMuIHRlc3Rpbmc6OmludGVy
bmFsMjo6b3BlcmF0b3I8PCAodGhhbmtzIHRvIHRoZSB1c2luZyBzdGF0ZW1lbnQgYWJvdmUpLgor
ICAvLworICAvLyBUaGUgb3BlcmF0b3I8PCB3aG9zZSB0eXBlIG1hdGNoZXMgVCBiZXN0IHdpbGwg
YmUgcGlja2VkLgorICAvLworICAvLyBXZSBkZWxpYmVyYXRlbHkgYWxsb3cgIzIgdG8gYmUgYSBj
YW5kaWRhdGUsIGFzIHNvbWV0aW1lcyBpdCdzCisgIC8vIGltcG9zc2libGUgdG8gZGVmaW5lICMx
IChlLmcuIHdoZW4gZm9vIGlzIDo6c3RkLCBkZWZpbmluZworICAvLyBhbnl0aGluZyBpbiBpdCBp
cyB1bmRlZmluZWQgYmVoYXZpb3IgdW5sZXNzIHlvdSBhcmUgYSBjb21waWxlcgorICAvLyB2ZW5k
b3IuKS4KKyAgKm9zIDw8IHZhbHVlOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZ19pbnRl
cm5hbAorCituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBG
b3JtYXRGb3JDb21wYXJpc29uPFRvUHJpbnQsIE90aGVyT3BlcmFuZD46OkZvcm1hdCh2YWx1ZSkg
Zm9ybWF0cyBhCisvLyB2YWx1ZSBvZiB0eXBlIFRvUHJpbnQgdGhhdCBpcyBhbiBvcGVyYW5kIG9m
IGEgY29tcGFyaXNvbiBhc3NlcnRpb24KKy8vIChlLmcuIEFTU0VSVF9FUSkuICBPdGhlck9wZXJh
bmQgaXMgdGhlIHR5cGUgb2YgdGhlIG90aGVyIG9wZXJhbmQgaW4KKy8vIHRoZSBjb21wYXJpc29u
LCBhbmQgaXMgdXNlZCB0byBoZWxwIGRldGVybWluZSB0aGUgYmVzdCB3YXkgdG8KKy8vIGZvcm1h
dCB0aGUgdmFsdWUuICBJbiBwYXJ0aWN1bGFyLCB3aGVuIHRoZSB2YWx1ZSBpcyBhIEMgc3RyaW5n
CisvLyAoY2hhciBwb2ludGVyKSBhbmQgdGhlIG90aGVyIG9wZXJhbmQgaXMgYW4gU1RMIHN0cmlu
ZyBvYmplY3QsIHdlCisvLyB3YW50IHRvIGZvcm1hdCB0aGUgQyBzdHJpbmcgYXMgYSBzdHJpbmcs
IHNpbmNlIHdlIGtub3cgaXQgaXMKKy8vIGNvbXBhcmVkIGJ5IHZhbHVlIHdpdGggdGhlIHN0cmlu
ZyBvYmplY3QuICBJZiB0aGUgdmFsdWUgaXMgYSBjaGFyCisvLyBwb2ludGVyIGJ1dCB0aGUgb3Ro
ZXIgb3BlcmFuZCBpcyBub3QgYW4gU1RMIHN0cmluZyBvYmplY3QsIHdlIGRvbid0CisvLyBrbm93
IHdoZXRoZXIgdGhlIHBvaW50ZXIgaXMgc3VwcG9zZWQgdG8gcG9pbnQgdG8gYSBOVUwtdGVybWlu
YXRlZAorLy8gc3RyaW5nLCBhbmQgdGh1cyB3YW50IHRvIHByaW50IGl0IGFzIGEgcG9pbnRlciB0
byBiZSBzYWZlLgorLy8KKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJ
TiBBIFVTRVIgUFJPR1JBTS4KKworLy8gVGhlIGRlZmF1bHQgY2FzZS4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBUb1ByaW50LCB0eXBlbmFtZSBPdGhlck9wZXJhbmQ+CitjbGFzcyBGb3JtYXRGb3JDb21w
YXJpc29uIHsKKyBwdWJsaWM6CisgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1hdChjb25zdCBU
b1ByaW50JiB2YWx1ZSkgeworICAgIHJldHVybiA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcodmFs
dWUpOworICB9Cit9OworCisvLyBBcnJheS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUb1ByaW50LCBz
aXplX3QgTiwgdHlwZW5hbWUgT3RoZXJPcGVyYW5kPgorY2xhc3MgRm9ybWF0Rm9yQ29tcGFyaXNv
bjxUb1ByaW50W05dLCBPdGhlck9wZXJhbmQ+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyA6OnN0ZDo6
c3RyaW5nIEZvcm1hdChjb25zdCBUb1ByaW50KiB2YWx1ZSkgeworICAgIHJldHVybiBGb3JtYXRG
b3JDb21wYXJpc29uPGNvbnN0IFRvUHJpbnQqLCBPdGhlck9wZXJhbmQ+OjpGb3JtYXQodmFsdWUp
OworICB9Cit9OworCisvLyBCeSBkZWZhdWx0LCBwcmludCBDIHN0cmluZyBhcyBwb2ludGVycyB0
byBiZSBzYWZlLCBhcyB3ZSBkb24ndCBrbm93CisvLyB3aGV0aGVyIHRoZXkgYWN0dWFsbHkgcG9p
bnQgdG8gYSBOVUwtdGVybWluYXRlZCBzdHJpbmcuCisKKyNkZWZpbmUgR1RFU1RfSU1QTF9GT1JN
QVRfQ19TVFJJTkdfQVNfUE9JTlRFUl8oQ2hhclR5cGUpICAgICAgICAgICAgICAgIFwKKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIE90aGVyT3BlcmFuZD4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgY2xhc3MgRm9ybWF0Rm9yQ29tcGFyaXNvbjxDaGFyVHlwZSosIE90aGVy
T3BlcmFuZD4geyAgICAgICAgICAgICAgICAgIFwKKyAgIHB1YmxpYzogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0
aWMgOjpzdGQ6OnN0cmluZyBGb3JtYXQoQ2hhclR5cGUqIHZhbHVlKSB7ICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgIHJldHVybiA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoc3RhdGljX2Nh
c3Q8Y29uc3Qgdm9pZCo+KHZhbHVlKSk7IFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCitHVEVT
VF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19QT0lOVEVSXyhjaGFyKTsKK0dURVNUX0lNUExfRk9S
TUFUX0NfU1RSSU5HX0FTX1BPSU5URVJfKGNvbnN0IGNoYXIpOworR1RFU1RfSU1QTF9GT1JNQVRf
Q19TVFJJTkdfQVNfUE9JTlRFUl8od2NoYXJfdCk7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklO
R19BU19QT0lOVEVSXyhjb25zdCB3Y2hhcl90KTsKKworI3VuZGVmIEdURVNUX0lNUExfRk9STUFU
X0NfU1RSSU5HX0FTX1BPSU5URVJfCisKKy8vIElmIGEgQyBzdHJpbmcgaXMgY29tcGFyZWQgd2l0
aCBhbiBTVEwgc3RyaW5nIG9iamVjdCwgd2Uga25vdyBpdCdzIG1lYW50CisvLyB0byBwb2ludCB0
byBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZywgYW5kIHRodXMgY2FuIHByaW50IGl0IGFzIGEgc3Ry
aW5nLgorCisjZGVmaW5lIEdURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18oQ2hh
clR5cGUsIE90aGVyU3RyaW5nVHlwZSkgXAorICB0ZW1wbGF0ZSA8PiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBjbGFzcyBGb3Jt
YXRGb3JDb21wYXJpc29uPENoYXJUeXBlKiwgT3RoZXJTdHJpbmdUeXBlPiB7ICAgICAgICAgICAg
ICAgXAorICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1hdChD
aGFyVHlwZSogdmFsdWUpIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgcmV0dXJuIDo6
dGVzdGluZzo6UHJpbnRUb1N0cmluZyh2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICB9CisKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FT
X1NUUklOR18oY2hhciwgOjpzdGQ6OnN0cmluZyk7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklO
R19BU19TVFJJTkdfKGNvbnN0IGNoYXIsIDo6c3RkOjpzdHJpbmcpOworCisjaWYgR1RFU1RfSEFT
X0dMT0JBTF9TVFJJTkcKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18oY2hh
ciwgOjpzdHJpbmcpOworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjb25z
dCBjaGFyLCA6OnN0cmluZyk7CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklO
RworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyh3Y2hhcl90LCA6OndzdHJp
bmcpOworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjb25zdCB3Y2hhcl90
LCA6OndzdHJpbmcpOworI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKK0dURVNU
X0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18od2NoYXJfdCwgOjpzdGQ6OndzdHJpbmcp
OworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjb25zdCB3Y2hhcl90LCA6
OnN0ZDo6d3N0cmluZyk7CisjZW5kaWYKKworI3VuZGVmIEdURVNUX0lNUExfRk9STUFUX0NfU1RS
SU5HX0FTX1NUUklOR18KKworLy8gRm9ybWF0cyBhIGNvbXBhcmlzb24gYXNzZXJ0aW9uIChlLmcu
IEFTU0VSVF9FUSwgRVhQRUNUX0xULCBhbmQgZXRjKQorLy8gb3BlcmFuZCB0byBiZSB1c2VkIGlu
IGEgZmFpbHVyZSBtZXNzYWdlLiAgVGhlIHR5cGUgKGJ1dCBub3QgdmFsdWUpCisvLyBvZiB0aGUg
b3RoZXIgb3BlcmFuZCBtYXkgYWZmZWN0IHRoZSBmb3JtYXQuICBUaGlzIGFsbG93cyB1cyB0bwor
Ly8gcHJpbnQgYSBjaGFyKiBhcyBhIHJhdyBwb2ludGVyIHdoZW4gaXQgaXMgY29tcGFyZWQgYWdh
aW5zdCBhbm90aGVyCisvLyBjaGFyKiBvciB2b2lkKiwgYW5kIHByaW50IGl0IGFzIGEgQyBzdHJp
bmcgd2hlbiBpdCBpcyBjb21wYXJlZAorLy8gYWdhaW5zdCBhbiBzdGQ6OnN0cmluZyBvYmplY3Qs
IGZvciBleGFtcGxlLgorLy8KKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVT
RSBJTiBBIFVTRVIgUFJPR1JBTS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+
CitzdGQ6OnN0cmluZyBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoCisgICAgY29u
c3QgVDEmIHZhbHVlLCBjb25zdCBUMiYgLyogb3RoZXJfb3BlcmFuZCAqLykgeworICByZXR1cm4g
Rm9ybWF0Rm9yQ29tcGFyaXNvbjxUMSwgVDI+OjpGb3JtYXQodmFsdWUpOworfQorCisvLyBVbml2
ZXJzYWxQcmludGVyPFQ+OjpQcmludCh2YWx1ZSwgb3N0cmVhbV9wdHIpIHByaW50cyB0aGUgZ2l2
ZW4KKy8vIHZhbHVlIHRvIHRoZSBnaXZlbiBvc3RyZWFtLiAgVGhlIGNhbGxlciBtdXN0IGVuc3Vy
ZSB0aGF0CisvLyAnb3N0cmVhbV9wdHInIGlzIG5vdCBOVUxMLCBvciB0aGUgYmVoYXZpb3IgaXMg
dW5kZWZpbmVkLgorLy8KKy8vIFdlIGRlZmluZSBVbml2ZXJzYWxQcmludGVyIGFzIGEgY2xhc3Mg
dGVtcGxhdGUgKGFzIG9wcG9zZWQgdG8gYQorLy8gZnVuY3Rpb24gdGVtcGxhdGUpLCBhcyB3ZSBu
ZWVkIHRvIHBhcnRpYWxseSBzcGVjaWFsaXplIGl0IGZvcgorLy8gcmVmZXJlbmNlIHR5cGVzLCB3
aGljaCBjYW5ub3QgYmUgZG9uZSB3aXRoIGZ1bmN0aW9uIHRlbXBsYXRlcy4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorY2xhc3MgVW5pdmVyc2FsUHJpbnRlcjsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Cit2b2lkIFVuaXZlcnNhbFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSog
b3MpOworCitlbnVtIERlZmF1bHRQcmludGVyVHlwZSB7CisgIGtQcmludENvbnRhaW5lciwKKyAg
a1ByaW50UG9pbnRlciwKKyAga1ByaW50RnVuY3Rpb25Qb2ludGVyLAorICBrUHJpbnRPdGhlciwK
K307Cit0ZW1wbGF0ZSA8RGVmYXVsdFByaW50ZXJUeXBlIHR5cGU+IHN0cnVjdCBXcmFwUHJpbnRl
clR5cGUge307CisKKy8vIFVzZWQgdG8gcHJpbnQgYW4gU1RMLXN0eWxlIGNvbnRhaW5lciB3aGVu
IHRoZSB1c2VyIGRvZXNuJ3QgZGVmaW5lCisvLyBhIFByaW50VG8oKSBmb3IgaXQuCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQz4KK3ZvaWQgRGVmYXVsdFByaW50VG8oV3JhcFByaW50ZXJUeXBlPGtQcmlu
dENvbnRhaW5lcj4gLyogZHVtbXkgKi8sCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEMmIGNv
bnRhaW5lciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIGNvbnN0IHNpemVfdCBrTWF4Q291bnQg
PSAzMjsgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyB0byBwcmludC4KKyAgKm9z
IDw8ICd7JzsKKyAgc2l6ZV90IGNvdW50ID0gMDsKKyAgZm9yICh0eXBlbmFtZSBDOjpjb25zdF9p
dGVyYXRvciBpdCA9IGNvbnRhaW5lci5iZWdpbigpOworICAgICAgIGl0ICE9IGNvbnRhaW5lci5l
bmQoKTsgKytpdCwgKytjb3VudCkgeworICAgIGlmIChjb3VudCA+IDApIHsKKyAgICAgICpvcyA8
PCAnLCc7CisgICAgICBpZiAoY291bnQgPT0ga01heENvdW50KSB7ICAvLyBFbm91Z2ggaGFzIGJl
ZW4gcHJpbnRlZC4KKyAgICAgICAgKm9zIDw8ICIgLi4uIjsKKyAgICAgICAgYnJlYWs7CisgICAg
ICB9CisgICAgfQorICAgICpvcyA8PCAnICc7CisgICAgLy8gV2UgY2Fubm90IGNhbGwgUHJpbnRU
bygqaXQsIG9zKSBoZXJlIGFzIFByaW50VG8oKSBkb2Vzbid0CisgICAgLy8gaGFuZGxlICppdCBi
ZWluZyBhIG5hdGl2ZSBhcnJheS4KKyAgICBpbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnQoKml0LCBv
cyk7CisgIH0KKworICBpZiAoY291bnQgPiAwKSB7CisgICAgKm9zIDw8ICcgJzsKKyAgfQorICAq
b3MgPDwgJ30nOworfQorCisvLyBVc2VkIHRvIHByaW50IGEgcG9pbnRlciB0aGF0IGlzIG5laXRo
ZXIgYSBjaGFyIHBvaW50ZXIgbm9yIGEgbWVtYmVyCisvLyBwb2ludGVyLCB3aGVuIHRoZSB1c2Vy
IGRvZXNuJ3QgZGVmaW5lIFByaW50VG8oKSBmb3IgaXQuICAoQSBtZW1iZXIKKy8vIHZhcmlhYmxl
IHBvaW50ZXIgb3IgbWVtYmVyIGZ1bmN0aW9uIHBvaW50ZXIgZG9lc24ndCByZWFsbHkgcG9pbnQg
dG8KKy8vIGEgbG9jYXRpb24gaW4gdGhlIGFkZHJlc3Mgc3BhY2UuICBUaGVpciByZXByZXNlbnRh
dGlvbiBpcworLy8gaW1wbGVtZW50YXRpb24tZGVmaW5lZC4gIFRoZXJlZm9yZSB0aGV5IHdpbGwg
YmUgcHJpbnRlZCBhcyByYXcKKy8vIGJ5dGVzLikKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9p
ZCBEZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5cGU8a1ByaW50UG9pbnRlcj4gLyogZHVtbXkg
Ki8sCisgICAgICAgICAgICAgICAgICAgIFQqIHAsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBp
ZiAocCA9PSBOVUxMKSB7CisgICAgKm9zIDw8ICJOVUxMIjsKKyAgfSBlbHNlIHsKKyAgICAvLyBU
IGlzIG5vdCBhIGZ1bmN0aW9uIHR5cGUuICBXZSBqdXN0IGNhbGwgPDwgdG8gcHJpbnQgcCwKKyAg
ICAvLyByZWx5aW5nIG9uIEFETCB0byBwaWNrIHVwIHVzZXItZGVmaW5lZCA8PCBmb3IgdGhlaXIg
cG9pbnRlcgorICAgIC8vIHR5cGVzLCBpZiBhbnkuCisgICAgKm9zIDw8IHA7CisgIH0KK30KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBEZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5cGU8
a1ByaW50RnVuY3Rpb25Qb2ludGVyPiAvKiBkdW1teSAqLywKKyAgICAgICAgICAgICAgICAgICAg
VCogcCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIGlmIChwID09IE5VTEwpIHsKKyAgICAqb3Mg
PDwgIk5VTEwiOworICB9IGVsc2UgeworICAgIC8vIFQgaXMgYSBmdW5jdGlvbiB0eXBlLCBzbyAn
Km9zIDw8IHAnIGRvZXNuJ3QgZG8gd2hhdCB3ZSB3YW50CisgICAgLy8gKGl0IGp1c3QgcHJpbnRz
IHAgYXMgYm9vbCkuICBXZSB3YW50IHRvIHByaW50IHAgYXMgYSBjb25zdAorICAgIC8vIHZvaWQq
LgorICAgICpvcyA8PCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihwKTsKKyAgfQorfQor
CisvLyBVc2VkIHRvIHByaW50IGEgbm9uLWNvbnRhaW5lciwgbm9uLXBvaW50ZXIgdmFsdWUgd2hl
biB0aGUgdXNlcgorLy8gZG9lc24ndCBkZWZpbmUgUHJpbnRUbygpIGZvciBpdC4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgordm9pZCBEZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5cGU8a1ByaW50
T3RoZXI+IC8qIGR1bW15ICovLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiB2YWx1ZSwg
OjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIDo6dGVzdGluZ19pbnRlcm5hbDo6RGVmYXVsdFByaW50
Tm9uQ29udGFpbmVyVG8odmFsdWUsIG9zKTsKK30KKworLy8gUHJpbnRzIHRoZSBnaXZlbiB2YWx1
ZSB1c2luZyB0aGUgPDwgb3BlcmF0b3IgaWYgaXQgaGFzIG9uZTsKKy8vIG90aGVyd2lzZSBwcmlu
dHMgdGhlIGJ5dGVzIGluIGl0LiAgVGhpcyBpcyB3aGF0CisvLyBVbml2ZXJzYWxQcmludGVyPFQ+
OjpQcmludCgpIGRvZXMgd2hlbiBQcmludFRvKCkgaXMgbm90IHNwZWNpYWxpemVkCisvLyBvciBv
dmVybG9hZGVkIGZvciB0eXBlIFQuCisvLworLy8gQSB1c2VyIGNhbiBvdmVycmlkZSB0aGlzIGJl
aGF2aW9yIGZvciBhIGNsYXNzIHR5cGUgRm9vIGJ5IGRlZmluaW5nCisvLyBhbiBvdmVybG9hZCBv
ZiBQcmludFRvKCkgaW4gdGhlIG5hbWVzcGFjZSB3aGVyZSBGb28gaXMgZGVmaW5lZC4gIFdlCisv
LyBnaXZlIHRoZSB1c2VyIHRoaXMgb3B0aW9uIGFzIHNvbWV0aW1lcyBkZWZpbmluZyBhIDw8IG9w
ZXJhdG9yIGZvcgorLy8gRm9vIGlzIG5vdCBkZXNpcmFibGUgKGUuZy4gdGhlIGNvZGluZyBzdHls
ZSBtYXkgcHJldmVudCBkb2luZyBpdCwKKy8vIG9yIHRoZXJlIGlzIGFscmVhZHkgYSA8PCBvcGVy
YXRvciBidXQgaXQgZG9lc24ndCBkbyB3aGF0IHRoZSB1c2VyCisvLyB3YW50cykuCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgUHJpbnRUbyhjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJl
YW0qIG9zKSB7CisgIC8vIERlZmF1bHRQcmludFRvKCkgaXMgb3ZlcmxvYWRlZC4gIFRoZSB0eXBl
IG9mIGl0cyBmaXJzdCBhcmd1bWVudAorICAvLyBkZXRlcm1pbmVzIHdoaWNoIHZlcnNpb24gd2ls
bCBiZSBwaWNrZWQuCisgIC8vCisgIC8vIE5vdGUgdGhhdCB3ZSBjaGVjayBmb3IgY29udGFpbmVy
IHR5cGVzIGhlcmUsIHByaW9yIHRvIHdlIGNoZWNrCisgIC8vIGZvciBwcm90b2NvbCBtZXNzYWdl
IHR5cGVzIGluIG91ciBvcGVyYXRvcjw8LiAgVGhlIHJhdGlvbmFsZSBpczoKKyAgLy8KKyAgLy8g
Rm9yIHByb3RvY29sIG1lc3NhZ2VzLCB3ZSB3YW50IHRvIGdpdmUgcGVvcGxlIGEgY2hhbmNlIHRv
CisgIC8vIG92ZXJyaWRlIEdvb2dsZSBNb2NrJ3MgZm9ybWF0IGJ5IGRlZmluaW5nIGEgUHJpbnRU
bygpIG9yCisgIC8vIG9wZXJhdG9yPDwuICBGb3IgU1RMIGNvbnRhaW5lcnMsIG90aGVyIGZvcm1h
dHMgY2FuIGJlCisgIC8vIGluY29tcGF0aWJsZSB3aXRoIEdvb2dsZSBNb2NrJ3MgZm9ybWF0IGZv
ciB0aGUgY29udGFpbmVyCisgIC8vIGVsZW1lbnRzOyB0aGVyZWZvcmUgd2UgY2hlY2sgZm9yIGNv
bnRhaW5lciB0eXBlcyBoZXJlIHRvIGVuc3VyZQorICAvLyB0aGF0IG91ciBmb3JtYXQgaXMgdXNl
ZC4KKyAgLy8KKyAgLy8gTm90ZSB0aGF0IE1TVkMgYW5kIGNsYW5nLWNsIGRvIGFsbG93IGFuIGlt
cGxpY2l0IGNvbnZlcnNpb24gZnJvbQorICAvLyBwb2ludGVyLXRvLWZ1bmN0aW9uIHRvIHBvaW50
ZXItdG8tb2JqZWN0LCBidXQgY2xhbmctY2wgd2FybnMgb24gaXQuCisgIC8vIFNvIGRvbid0IHVz
ZSBJbXBsaWNpdGx5Q29udmVydGlibGUgaWYgaXQgY2FuIGJlIGhlbHBlZCBzaW5jZSBpdCB3aWxs
CisgIC8vIGNhdXNlIHRoaXMgd2FybmluZywgYW5kIHVzZSBhIHNlcGFyYXRlIG92ZXJsb2FkIG9m
IERlZmF1bHRQcmludFRvIGZvcgorICAvLyBmdW5jdGlvbiBwb2ludGVycyBzbyB0aGF0IHRoZSBg
Km9zIDw8IHBgIGluIHRoZSBvYmplY3QgcG9pbnRlciBvdmVybG9hZAorICAvLyBkb2Vzbid0IGNh
dXNlIHRoYXQgd2FybmluZyBlaXRoZXIuCisgIERlZmF1bHRQcmludFRvKAorICAgICAgV3JhcFBy
aW50ZXJUeXBlIDwKKyAgICAgICAgICAgICAgICAgIChzaXplb2YoSXNDb250YWluZXJUZXN0PFQ+
KDApKSA9PSBzaXplb2YoSXNDb250YWluZXIpKSAmJgorICAgICAgICAgICAgICAhSXNSZWN1cnNp
dmVDb250YWluZXI8VD46OnZhbHVlCisgICAgICAgICAgPyBrUHJpbnRDb250YWluZXIKKyAgICAg
ICAgICA6ICFpc19wb2ludGVyPFQ+Ojp2YWx1ZQorICAgICAgICAgICAgICAgID8ga1ByaW50T3Ro
ZXIKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisgICAgICAgICAgICAgICAgOiBzdGQ6OmlzX2Z1bmN0
aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+Ojp2YWx1ZQorI2Vsc2UK
KyAgICAgICAgICAgICAgICA6ICFpbnRlcm5hbDo6SW1wbGljaXRseUNvbnZlcnRpYmxlPFQsIGNv
bnN0IHZvaWQqPjo6dmFsdWUKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgID8ga1ByaW50
RnVuY3Rpb25Qb2ludGVyCisgICAgICAgICAgICAgICAgICAgICAgOiBrUHJpbnRQb2ludGVyID4g
KCksCisgICAgICB2YWx1ZSwgb3MpOworfQorCisvLyBUaGUgZm9sbG93aW5nIGxpc3Qgb2YgUHJp
bnRUbygpIG92ZXJsb2FkcyB0ZWxscworLy8gVW5pdmVyc2FsUHJpbnRlcjxUPjo6UHJpbnQoKSBo
b3cgdG8gcHJpbnQgc3RhbmRhcmQgdHlwZXMgKGJ1aWx0LWluCisvLyB0eXBlcywgc3RyaW5ncywg
cGxhaW4gYXJyYXlzLCBhbmQgcG9pbnRlcnMpLgorCisvLyBPdmVybG9hZHMgZm9yIHZhcmlvdXMg
Y2hhciB0eXBlcy4KK0dURVNUX0FQSV8gdm9pZCBQcmludFRvKHVuc2lnbmVkIGNoYXIgYywgOjpz
dGQ6Om9zdHJlYW0qIG9zKTsKK0dURVNUX0FQSV8gdm9pZCBQcmludFRvKHNpZ25lZCBjaGFyIGMs
IDo6c3RkOjpvc3RyZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRvKGNoYXIgYywgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgIC8vIFdoZW4gcHJpbnRpbmcgYSBwbGFpbiBjaGFyLCB3ZSBhbHdh
eXMgdHJlYXQgaXQgYXMgdW5zaWduZWQuICBUaGlzCisgIC8vIHdheSwgdGhlIG91dHB1dCB3b24n
dCBiZSBhZmZlY3RlZCBieSB3aGV0aGVyIHRoZSBjb21waWxlciB0aGlua3MKKyAgLy8gY2hhciBp
cyBzaWduZWQgb3Igbm90LgorICBQcmludFRvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMp
LCBvcyk7Cit9CisKKy8vIE92ZXJsb2FkcyBmb3Igb3RoZXIgc2ltcGxlIGJ1aWx0LWluIHR5cGVz
LgoraW5saW5lIHZvaWQgUHJpbnRUbyhib29sIHgsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAq
b3MgPDwgKHggPyAidHJ1ZSIgOiAiZmFsc2UiKTsKK30KKworLy8gT3ZlcmxvYWQgZm9yIHdjaGFy
X3QgdHlwZS4KKy8vIFByaW50cyBhIHdjaGFyX3QgYXMgYSBzeW1ib2wgaWYgaXQgaXMgcHJpbnRh
YmxlIG9yIGFzIGl0cyBpbnRlcm5hbAorLy8gY29kZSBvdGhlcndpc2UgYW5kIGFsc28gYXMgaXRz
IGRlY2ltYWwgY29kZSAoZXhjZXB0IGZvciBMJ1wwJykuCisvLyBUaGUgTCdcMCcgY2hhciBpcyBw
cmludGVkIGFzICJMJ1xcMCciLiBUaGUgZGVjaW1hbCBjb2RlIGlzIHByaW50ZWQKKy8vIGFzIHNp
Z25lZCBpbnRlZ2VyIHdoZW4gd2NoYXJfdCBpcyBpbXBsZW1lbnRlZCBieSB0aGUgY29tcGlsZXIK
Ky8vIGFzIGEgc2lnbmVkIHR5cGUgYW5kIGlzIHByaW50ZWQgYXMgYW4gdW5zaWduZWQgaW50ZWdl
ciB3aGVuIHdjaGFyX3QKKy8vIGlzIGltcGxlbWVudGVkIGFzIGFuIHVuc2lnbmVkIHR5cGUuCitH
VEVTVF9BUElfIHZvaWQgUHJpbnRUbyh3Y2hhcl90IHdjLCA6OnN0ZDo6b3N0cmVhbSogb3MpOwor
CisvLyBPdmVybG9hZHMgZm9yIEMgc3RyaW5ncy4KK0dURVNUX0FQSV8gdm9pZCBQcmludFRvKGNv
bnN0IGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRvKGNo
YXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFRvKEltcGxpY2l0Q2FzdF88Y29u
c3QgY2hhcio+KHMpLCBvcyk7Cit9CisKKy8vIHNpZ25lZC91bnNpZ25lZCBjaGFyIGlzIG9mdGVu
IHVzZWQgZm9yIHJlcHJlc2VudGluZyBiaW5hcnkgZGF0YSwgc28KKy8vIHdlIHByaW50IHBvaW50
ZXJzIHRvIGl0IGFzIHZvaWQqIHRvIGJlIHNhZmUuCitpbmxpbmUgdm9pZCBQcmludFRvKGNvbnN0
IHNpZ25lZCBjaGFyKiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUbyhJbXBsaWNp
dENhc3RfPGNvbnN0IHZvaWQqPihzKSwgb3MpOworfQoraW5saW5lIHZvaWQgUHJpbnRUbyhzaWdu
ZWQgY2hhciogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGljaXRDYXN0
Xzxjb25zdCB2b2lkKj4ocyksIG9zKTsKK30KK2lubGluZSB2b2lkIFByaW50VG8oY29uc3QgdW5z
aWduZWQgY2hhciogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGljaXRD
YXN0Xzxjb25zdCB2b2lkKj4ocyksIG9zKTsKK30KK2lubGluZSB2b2lkIFByaW50VG8odW5zaWdu
ZWQgY2hhciogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGljaXRDYXN0
Xzxjb25zdCB2b2lkKj4ocyksIG9zKTsKK30KKworLy8gTVNWQyBjYW4gYmUgY29uZmlndXJlZCB0
byBkZWZpbmUgd2NoYXJfdCBhcyBhIHR5cGVkZWYgb2YgdW5zaWduZWQKKy8vIHNob3J0LiAgSXQg
ZGVmaW5lcyBfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCB3aGVuIHdjaGFyX3QgaXMgYSBuYXRpdmUK
Ky8vIHR5cGUuICBXaGVuIHdjaGFyX3QgaXMgYSB0eXBlZGVmLCBkZWZpbmluZyBhbiBvdmVybG9h
ZCBmb3IgY29uc3QKKy8vIHdjaGFyX3QqIHdvdWxkIGNhdXNlIHVuc2lnbmVkIHNob3J0KiBiZSBw
cmludGVkIGFzIGEgd2lkZSBzdHJpbmcsCisvLyBwb3NzaWJseSBjYXVzaW5nIGludmFsaWQgbWVt
b3J5IGFjY2Vzc2VzLgorI2lmICFkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9OQVRJVkVf
V0NIQVJfVF9ERUZJTkVEKQorLy8gT3ZlcmxvYWRzIGZvciB3aWRlIEMgc3RyaW5ncworR1RFU1Rf
QVBJXyB2b2lkIFByaW50VG8oY29uc3Qgd2NoYXJfdCogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsK
K2lubGluZSB2b2lkIFByaW50VG8od2NoYXJfdCogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Cisg
IFByaW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB3Y2hhcl90Kj4ocyksIG9zKTsKK30KKyNlbmRp
ZgorCisvLyBPdmVybG9hZCBmb3IgQyBhcnJheXMuICBNdWx0aS1kaW1lbnNpb25hbCBhcnJheXMg
YXJlIHByaW50ZWQKKy8vIHByb3Blcmx5LgorCisvLyBQcmludHMgdGhlIGdpdmVuIG51bWJlciBv
ZiBlbGVtZW50cyBpbiBhbiBhcnJheSwgd2l0aG91dCBwcmludGluZworLy8gdGhlIGN1cmx5IGJy
YWNlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBQcmludFJhd0FycmF5VG8oY29uc3Qg
VCBhW10sIHNpemVfdCBjb3VudCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFVuaXZlcnNhbFBy
aW50KGFbMF0sIG9zKTsKKyAgZm9yIChzaXplX3QgaSA9IDE7IGkgIT0gY291bnQ7IGkrKykgewor
ICAgICpvcyA8PCAiLCAiOworICAgIFVuaXZlcnNhbFByaW50KGFbaV0sIG9zKTsKKyAgfQorfQor
CisvLyBPdmVybG9hZHMgZm9yIDo6c3RyaW5nIGFuZCA6OnN0ZDo6c3RyaW5nLgorI2lmIEdURVNU
X0hBU19HTE9CQUxfU1RSSU5HCitHVEVTVF9BUElfIHZvaWQgUHJpbnRTdHJpbmdUbyhjb25zdCA6
OnN0cmluZyZzLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhjb25z
dCA6OnN0cmluZyYgcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50U3RyaW5nVG8ocywg
b3MpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCitHVEVTVF9BUElf
IHZvaWQgUHJpbnRTdHJpbmdUbyhjb25zdCA6OnN0ZDo6c3RyaW5nJnMsIDo6c3RkOjpvc3RyZWFt
KiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHMsIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgeworICBQcmludFN0cmluZ1RvKHMsIG9zKTsKK30KKworLy8gT3Zlcmxv
YWRzIGZvciA6OndzdHJpbmcgYW5kIDo6c3RkOjp3c3RyaW5nLgorI2lmIEdURVNUX0hBU19HTE9C
QUxfV1NUUklORworR1RFU1RfQVBJXyB2b2lkIFByaW50V2lkZVN0cmluZ1RvKGNvbnN0IDo6d3N0
cmluZyZzLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6
OndzdHJpbmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFdpZGVTdHJpbmdUbyhz
LCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORworCisjaWYgR1RF
U1RfSEFTX1NURF9XU1RSSU5HCitHVEVTVF9BUElfIHZvaWQgUHJpbnRXaWRlU3RyaW5nVG8oY29u
c3QgOjpzdGQ6OndzdHJpbmcmcywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKK2lubGluZSB2b2lkIFBy
aW50VG8oY29uc3QgOjpzdGQ6OndzdHJpbmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQ
cmludFdpZGVTdHJpbmdUbyhzLCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NU
UklORworCisjaWYgR1RFU1RfSEFTX0FCU0wKKy8vIE92ZXJsb2FkIGZvciBhYnNsOjpzdHJpbmdf
dmlldy4KK2lubGluZSB2b2lkIFByaW50VG8oYWJzbDo6c3RyaW5nX3ZpZXcgc3AsIDo6c3RkOjpv
c3RyZWFtKiBvcykgeworICBQcmludFRvKDo6c3RkOjpzdHJpbmcoc3ApLCBvcyk7Cit9CisjZW5k
aWYgIC8vIEdURVNUX0hBU19BQlNMCisKKyNpZiBHVEVTVF9MQU5HX0NYWDExCitpbmxpbmUgdm9p
ZCBQcmludFRvKHN0ZDo6bnVsbHB0cl90LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsgKm9zIDw8ICIo
bnVsbHB0cikiOyB9CisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKworI2lmIEdURVNUX0hB
U19UUjFfVFVQTEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8KKy8vIEhlbHBlciBmdW5jdGlvbiBm
b3IgcHJpbnRpbmcgYSB0dXBsZS4gIFQgbXVzdCBiZSBpbnN0YW50aWF0ZWQgd2l0aAorLy8gYSB0
dXBsZSB0eXBlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFByaW50VHVwbGVUbyhjb25z
dCBUJiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfVFIxX1RV
UExFIHx8IEdURVNUX0hBU19TVERfVFVQTEVfCisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCisv
LyBPdmVybG9hZCBmb3IgOjpzdGQ6OnRyMTo6dHVwbGUuICBOZWVkZWQgZm9yIHByaW50aW5nIGZ1
bmN0aW9uIGFyZ3VtZW50cywKKy8vIHdoaWNoIGFyZSBwYWNrZWQgYXMgdHVwbGVzLgorCisvLyBP
dmVybG9hZGVkIFByaW50VG8oKSBmb3IgdHVwbGVzIG9mIHZhcmlvdXMgYXJpdGllcy4gIFdlIHN1
cHBvcnQKKy8vIHR1cGxlcyBvZiB1cC10byAxMCBmaWVsZHMuICBUaGUgZm9sbG93aW5nIGltcGxl
bWVudGF0aW9uIHdvcmtzCisvLyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdHIxOjp0dXBsZSBpcyBp
bXBsZW1lbnRlZCB1c2luZyB0aGUKKy8vIG5vbi1zdGFuZGFyZCB2YXJpYWRpYyB0ZW1wbGF0ZSBm
ZWF0dXJlIG9yIG5vdC4KKworaW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0
dXBsZTw+JiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0
cjE6OnR1cGxlPFQxPiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0
LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lkIFBy
aW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyPiYgdCwgOjpzdGQ6Om9zdHJlYW0q
IG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
MSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0
cjE6OnR1cGxlPFQxLCBUMiwgVDM+JiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRU
dXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Pgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6
OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50
VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIs
IHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+Cit2b2lkIFByaW50VG8oY29u
c3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiYgdCwKKyAgICAgICAgICAg
ICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0
LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0eXBlbmFtZSBUNj4KK3ZvaWQgUHJpbnRUbyhjb25z
dCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiYgdCwKKyAgICAgICAg
ICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+Cit2
b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDc+JiB0LAorICAgICAgICAgICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFR1
cGxlVG8odCwgb3MpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0
eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgICAgICAgIHR5cGVuYW1l
IFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6
OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiYgdCwKKyAgICAgICAg
ICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5
cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOT4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0
dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiYgdCwKKyAgICAgICAgICAg
ICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0
LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVu
YW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgordm9pZCBQcmludFRvKAorICAgIGNv
bnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMD4mIHQsCisgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBv
cyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUKKworI2lmIEdURVNUX0hBU19T
VERfVFVQTEVfCit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHlwZXM+Cit2b2lkIFByaW50VG8oY29u
c3QgOjpzdGQ6OnR1cGxlPFR5cGVzLi4uPiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFBy
aW50VHVwbGVUbyh0LCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfVFVQTEVfCisK
Ky8vIE92ZXJsb2FkIGZvciBzdGQ6OnBhaXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjpwYWlyPFQxLCBUMj4mIHZhbHVlLCA6
OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8ICcoJzsKKyAgLy8gV2UgY2Fubm90IHVzZSBV
bml2ZXJzYWxQcmludCh2YWx1ZS5maXJzdCwgb3MpIGhlcmUsIGFzIFQxIG1heSBiZQorICAvLyBh
IHJlZmVyZW5jZSB0eXBlLiAgVGhlIHNhbWUgZm9yIHByaW50aW5nIHZhbHVlLnNlY29uZC4KKyAg
VW5pdmVyc2FsUHJpbnRlcjxUMT46OlByaW50KHZhbHVlLmZpcnN0LCBvcyk7CisgICpvcyA8PCAi
LCAiOworICBVbml2ZXJzYWxQcmludGVyPFQyPjo6UHJpbnQodmFsdWUuc2Vjb25kLCBvcyk7Cisg
ICpvcyA8PCAnKSc7Cit9CisKKy8vIEltcGxlbWVudHMgcHJpbnRpbmcgYSBub24tcmVmZXJlbmNl
IHR5cGUgVCBieSBsZXR0aW5nIHRoZSBjb21waWxlcgorLy8gcGljayB0aGUgcmlnaHQgb3Zlcmxv
YWQgb2YgUHJpbnRUbygpIGZvciBULgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbml2
ZXJzYWxQcmludGVyIHsKKyBwdWJsaWM6CisgIC8vIE1TVkMgd2FybnMgYWJvdXQgYWRkaW5nIGNv
bnN0IHRvIGEgZnVuY3Rpb24gdHlwZSwgc28gd2Ugd2FudCB0bworICAvLyBkaXNhYmxlIHRoZSB3
YXJuaW5nLgorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MTgwKQorCisgIC8v
IE5vdGU6IHdlIGRlbGliZXJhdGVseSBkb24ndCBjYWxsIHRoaXMgUHJpbnRUbygpLCBhcyB0aGF0
IG5hbWUKKyAgLy8gY29uZmxpY3RzIHdpdGggOjp0ZXN0aW5nOjppbnRlcm5hbDo6UHJpbnRUbyBp
biB0aGUgYm9keSBvZiB0aGUKKyAgLy8gZnVuY3Rpb24uCisgIHN0YXRpYyB2b2lkIFByaW50KGNv
bnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICAvLyBCeSBkZWZhdWx0LCA6
OnRlc3Rpbmc6OmludGVybmFsOjpQcmludFRvKCkgaXMgdXNlZCBmb3IgcHJpbnRpbmcKKyAgICAv
LyB0aGUgdmFsdWUuCisgICAgLy8KKyAgICAvLyBUaGFua3MgdG8gS29lbmlnIGxvb2stdXAsIGlm
IFQgaXMgYSBjbGFzcyBhbmQgaGFzIGl0cyBvd24KKyAgICAvLyBQcmludFRvKCkgZnVuY3Rpb24g
ZGVmaW5lZCBpbiBpdHMgbmFtZXNwYWNlLCB0aGF0IGZ1bmN0aW9uIHdpbGwKKyAgICAvLyBiZSB2
aXNpYmxlIGhlcmUuICBTaW5jZSBpdCBpcyBtb3JlIHNwZWNpZmljIHRoYW4gdGhlIGdlbmVyaWMg
b25lcworICAgIC8vIGluIDo6dGVzdGluZzo6aW50ZXJuYWwsIGl0IHdpbGwgYmUgcGlja2VkIGJ5
IHRoZSBjb21waWxlciBpbiB0aGUKKyAgICAvLyBmb2xsb3dpbmcgc3RhdGVtZW50IC0gZXhhY3Rs
eSB3aGF0IHdlIHdhbnQuCisgICAgUHJpbnRUbyh2YWx1ZSwgb3MpOworICB9CisKKyAgR1RFU1Rf
RElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCit9OworCisjaWYgR1RFU1RfSEFTX0FCU0wKKwor
Ly8gUHJpbnRlciBmb3IgYWJzbDo6b3B0aW9uYWwKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citj
bGFzcyBVbml2ZXJzYWxQcmludGVyPDo6YWJzbDo6b3B0aW9uYWw8VD4+IHsKKyBwdWJsaWM6Cisg
IHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IDo6YWJzbDo6b3B0aW9uYWw8VD4mIHZhbHVlLCA6OnN0
ZDo6b3N0cmVhbSogb3MpIHsKKyAgICAqb3MgPDwgJygnOworICAgIGlmICghdmFsdWUpIHsKKyAg
ICAgICpvcyA8PCAibnVsbG9wdCI7CisgICAgfSBlbHNlIHsKKyAgICAgIFVuaXZlcnNhbFByaW50
KCp2YWx1ZSwgb3MpOworICAgIH0KKyAgICAqb3MgPDwgJyknOworICB9Cit9OworCisvLyBQcmlu
dGVyIGZvciBhYnNsOjp2YXJpYW50CisKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBUPgorY2xhc3Mg
VW5pdmVyc2FsUHJpbnRlcjw6OmFic2w6OnZhcmlhbnQ8VC4uLj4+IHsKKyBwdWJsaWM6CisgIHN0
YXRpYyB2b2lkIFByaW50KGNvbnN0IDo6YWJzbDo6dmFyaWFudDxULi4uPiYgdmFsdWUsIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgeworICAgICpvcyA8PCAnKCc7CisgICAgYWJzbDo6dmlzaXQoVmlzaXRv
cntvc30sIHZhbHVlKTsKKyAgICAqb3MgPDwgJyknOworICB9CisKKyBwcml2YXRlOgorICBzdHJ1
Y3QgVmlzaXRvciB7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgICAgdm9pZCBvcGVyYXRv
cigpKGNvbnN0IFUmIHUpIGNvbnN0IHsKKyAgICAgICpvcyA8PCAiJyIgPDwgR2V0VHlwZU5hbWU8
VT4oKSA8PCAiJyB3aXRoIHZhbHVlICI7CisgICAgICBVbml2ZXJzYWxQcmludCh1LCBvcyk7Cisg
ICAgfQorICAgIDo6c3RkOjpvc3RyZWFtKiBvczsKKyAgfTsKK307CisKKyNlbmRpZiAgLy8gR1RF
U1RfSEFTX0FCU0wKKworLy8gVW5pdmVyc2FsUHJpbnRBcnJheShiZWdpbiwgbGVuLCBvcykgcHJp
bnRzIGFuIGFycmF5IG9mICdsZW4nCisvLyBlbGVtZW50cywgc3RhcnRpbmcgYXQgYWRkcmVzcyAn
YmVnaW4nLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFByaW50QXJyYXko
Y29uc3QgVCogYmVnaW4sIHNpemVfdCBsZW4sIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBpZiAo
bGVuID09IDApIHsKKyAgICAqb3MgPDwgInt9IjsKKyAgfSBlbHNlIHsKKyAgICAqb3MgPDwgInsg
IjsKKyAgICBjb25zdCBzaXplX3Qga1RocmVzaG9sZCA9IDE4OworICAgIGNvbnN0IHNpemVfdCBr
Q2h1bmtTaXplID0gODsKKyAgICAvLyBJZiB0aGUgYXJyYXkgaGFzIG1vcmUgdGhhbiBrVGhyZXNo
b2xkIGVsZW1lbnRzLCB3ZSdsbCBoYXZlIHRvCisgICAgLy8gb21pdCBzb21lIGRldGFpbHMgYnkg
cHJpbnRpbmcgb25seSB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0CisgICAgLy8ga0NodW5rU2l6ZSBl
bGVtZW50cy4KKyAgICAvLyBGSVhNRTogbGV0IHRoZSB1c2VyIGNvbnRyb2wgdGhlIHRocmVzaG9s
ZCB1c2luZyBhIGZsYWcuCisgICAgaWYgKGxlbiA8PSBrVGhyZXNob2xkKSB7CisgICAgICBQcmlu
dFJhd0FycmF5VG8oYmVnaW4sIGxlbiwgb3MpOworICAgIH0gZWxzZSB7CisgICAgICBQcmludFJh
d0FycmF5VG8oYmVnaW4sIGtDaHVua1NpemUsIG9zKTsKKyAgICAgICpvcyA8PCAiLCAuLi4sICI7
CisgICAgICBQcmludFJhd0FycmF5VG8oYmVnaW4gKyBsZW4gLSBrQ2h1bmtTaXplLCBrQ2h1bmtT
aXplLCBvcyk7CisgICAgfQorICAgICpvcyA8PCAiIH0iOworICB9Cit9CisvLyBUaGlzIG92ZXJs
b2FkIHByaW50cyBhIChjb25zdCkgY2hhciBhcnJheSBjb21wYWN0bHkuCitHVEVTVF9BUElfIHZv
aWQgVW5pdmVyc2FsUHJpbnRBcnJheSgKKyAgICBjb25zdCBjaGFyKiBiZWdpbiwgc2l6ZV90IGxl
biwgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKKworLy8gVGhpcyBvdmVybG9hZCBwcmludHMgYSAoY29u
c3QpIHdjaGFyX3QgYXJyYXkgY29tcGFjdGx5LgorR1RFU1RfQVBJXyB2b2lkIFVuaXZlcnNhbFBy
aW50QXJyYXkoCisgICAgY29uc3Qgd2NoYXJfdCogYmVnaW4sIHNpemVfdCBsZW4sIDo6c3RkOjpv
c3RyZWFtKiBvcyk7CisKKy8vIEltcGxlbWVudHMgcHJpbnRpbmcgYW4gYXJyYXkgdHlwZSBUW05d
LgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgorY2xhc3MgVW5pdmVyc2FsUHJpbnRl
cjxUW05dPiB7CisgcHVibGljOgorICAvLyBQcmludHMgdGhlIGdpdmVuIGFycmF5LCBvbWl0dGlu
ZyBzb21lIGVsZW1lbnRzIHdoZW4gdGhlcmUgYXJlIHRvbworICAvLyBtYW55LgorICBzdGF0aWMg
dm9pZCBQcmludChjb25zdCBUICgmYSlbTl0sIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIFVu
aXZlcnNhbFByaW50QXJyYXkoYSwgTiwgb3MpOworICB9Cit9OworCisvLyBJbXBsZW1lbnRzIHBy
aW50aW5nIGEgcmVmZXJlbmNlIHR5cGUgVCYuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNz
IFVuaXZlcnNhbFByaW50ZXI8VCY+IHsKKyBwdWJsaWM6CisgIC8vIE1TVkMgd2FybnMgYWJvdXQg
YWRkaW5nIGNvbnN0IHRvIGEgZnVuY3Rpb24gdHlwZSwgc28gd2Ugd2FudCB0bworICAvLyBkaXNh
YmxlIHRoZSB3YXJuaW5nLgorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MTgw
KQorCisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgICAvLyBQcmludHMgdGhlIGFkZHJlc3Mgb2YgdGhlIHZhbHVlLiAgV2UgdXNlIHJl
aW50ZXJwcmV0X2Nhc3QgaGVyZQorICAgIC8vIGFzIHN0YXRpY19jYXN0IGRvZXNuJ3QgY29tcGls
ZSB3aGVuIFQgaXMgYSBmdW5jdGlvbiB0eXBlLgorICAgICpvcyA8PCAiQCIgPDwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB2b2lkKj4oJnZhbHVlKSA8PCAiICI7CisKKyAgICAvLyBUaGVuIHByaW50
cyB0aGUgdmFsdWUgaXRzZWxmLgorICAgIFVuaXZlcnNhbFByaW50KHZhbHVlLCBvcyk7CisgIH0K
KworICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKK307CisKKy8vIFByaW50cyBh
IHZhbHVlIHRlcnNlbHk6IGZvciBhIHJlZmVyZW5jZSB0eXBlLCB0aGUgcmVmZXJlbmNlZCB2YWx1
ZQorLy8gKGJ1dCBub3QgdGhlIGFkZHJlc3MpIGlzIHByaW50ZWQ7IGZvciBhIChjb25zdCkgY2hh
ciBwb2ludGVyLCB0aGUKKy8vIE5VTC10ZXJtaW5hdGVkIHN0cmluZyAoYnV0IG5vdCB0aGUgcG9p
bnRlcikgaXMgcHJpbnRlZC4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbml2ZXJz
YWxUZXJzZVByaW50ZXIgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCYg
dmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIFVuaXZlcnNhbFByaW50KHZhbHVlLCBv
cyk7CisgIH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNl
UHJpbnRlcjxUJj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCYgdmFs
dWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIFVuaXZlcnNhbFByaW50KHZhbHVlLCBvcyk7
CisgIH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitjbGFzcyBVbml2ZXJz
YWxUZXJzZVByaW50ZXI8VFtOXT4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29u
c3QgVCAoJnZhbHVlKVtOXSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVW5pdmVyc2FsUHJp
bnRlcjxUW05dPjo6UHJpbnQodmFsdWUsIG9zKTsKKyAgfQorfTsKK3RlbXBsYXRlIDw+CitjbGFz
cyBVbml2ZXJzYWxUZXJzZVByaW50ZXI8Y29uc3QgY2hhcio+IHsKKyBwdWJsaWM6CisgIHN0YXRp
YyB2b2lkIFByaW50KGNvbnN0IGNoYXIqIHN0ciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAg
aWYgKHN0ciA9PSBOVUxMKSB7CisgICAgICAqb3MgPDwgIk5VTEwiOworICAgIH0gZWxzZSB7Cisg
ICAgICBVbml2ZXJzYWxQcmludChzdGQ6OnN0cmluZyhzdHIpLCBvcyk7CisgICAgfQorICB9Cit9
OwordGVtcGxhdGUgPD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjaGFyKj4geworIHB1
YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY2hhciogc3RyLCA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgICBVbml2ZXJzYWxUZXJzZVByaW50ZXI8Y29uc3QgY2hhcio+OjpQcmludChzdHIsIG9z
KTsKKyAgfQorfTsKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORwordGVtcGxhdGUgPD4KK2Ns
YXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjb25zdCB3Y2hhcl90Kj4geworIHB1YmxpYzoKKyAg
c3RhdGljIHZvaWQgUHJpbnQoY29uc3Qgd2NoYXJfdCogc3RyLCA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICpvcyA8PCAiTlVMTCI7CisgICAgfSBl
bHNlIHsKKyAgICAgIFVuaXZlcnNhbFByaW50KDo6c3RkOjp3c3RyaW5nKHN0ciksIG9zKTsKKyAg
ICB9CisgIH0KK307CisjZW5kaWYKKwordGVtcGxhdGUgPD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNl
UHJpbnRlcjx3Y2hhcl90Kj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQod2NoYXJf
dCogc3RyLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBVbml2ZXJzYWxUZXJzZVByaW50ZXI8
Y29uc3Qgd2NoYXJfdCo+OjpQcmludChzdHIsIG9zKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFRlcnNlUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgeworICBVbml2ZXJzYWxUZXJzZVByaW50ZXI8VD46OlByaW50KHZhbHVl
LCBvcyk7Cit9CisKKy8vIFByaW50cyBhIHZhbHVlIHVzaW5nIHRoZSB0eXBlIGluZmVycmVkIGJ5
IHRoZSBjb21waWxlci4gIFRoZQorLy8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIFVuaXZl
cnNhbFRlcnNlUHJpbnQoKSBpcyB0aGF0IGZvciBhCisvLyAoY29uc3QpIGNoYXIgcG9pbnRlciwg
dGhpcyBwcmludHMgYm90aCB0aGUgcG9pbnRlciBhbmQgdGhlCisvLyBOVUwtdGVybWluYXRlZCBz
dHJpbmcuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVW5pdmVyc2FsUHJpbnQoY29uc3Qg
VCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAvLyBBIHdvcmthcm9uZCBmb3IgdGhl
IGJ1ZyBpbiBWQysrIDcuMSB0aGF0IHByZXZlbnRzIHVzIGZyb20gaW5zdGFudGlhdGluZworICAv
LyBVbml2ZXJzYWxQcmludGVyIHdpdGggVCBkaXJlY3RseS4KKyAgdHlwZWRlZiBUIFQxOworICBV
bml2ZXJzYWxQcmludGVyPFQxPjo6UHJpbnQodmFsdWUsIG9zKTsKK30KKwordHlwZWRlZiA6OnN0
ZDo6dmVjdG9yPCA6OnN0ZDo6c3RyaW5nPiBTdHJpbmdzOworCisvLyBUdXBsZVBvbGljeTxUdXBs
ZVQ+IG11c3QgcHJvdmlkZToKKy8vIC0gdHVwbGVfc2l6ZQorLy8gICAgIHNpemUgb2YgdHVwbGUg
VHVwbGVULgorLy8gLSBnZXQ8c2l6ZV90IEk+KGNvbnN0IFR1cGxlVCYgdCkKKy8vICAgICBzdGF0
aWMgZnVuY3Rpb24gZXh0cmFjdGluZyBlbGVtZW50IEkgb2YgdHVwbGUgVHVwbGVULgorLy8gLSB0
dXBsZV9lbGVtZW50PHNpemVfdCBJPjo6dHlwZQorLy8gICAgIHR5cGUgb2YgZWxlbWVudCBJIG9m
IHR1cGxlIFR1cGxlVC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZVQ+CitzdHJ1Y3QgVHVwbGVQ
b2xpY3k7CisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVw
bGVUPgorc3RydWN0IFR1cGxlUG9saWN5IHsKKyAgdHlwZWRlZiBUdXBsZVQgVHVwbGU7CisgIHN0
YXRpYyBjb25zdCBzaXplX3QgdHVwbGVfc2l6ZSA9IDo6c3RkOjp0cjE6OnR1cGxlX3NpemU8VHVw
bGU+Ojp2YWx1ZTsKKworICB0ZW1wbGF0ZSA8c2l6ZV90IEk+CisgIHN0cnVjdCB0dXBsZV9lbGVt
ZW50IDogOjpzdGQ6OnRyMTo6dHVwbGVfZWxlbWVudDxzdGF0aWNfY2FzdDxpbnQ+KEkpLCBUdXBs
ZT4geworICB9OworCisgIHRlbXBsYXRlIDxzaXplX3QgST4KKyAgc3RhdGljIHR5cGVuYW1lIEFk
ZFJlZmVyZW5jZTxjb25zdCB0eXBlbmFtZSA6OnN0ZDo6dHIxOjp0dXBsZV9lbGVtZW50PAorICAg
ICAgc3RhdGljX2Nhc3Q8aW50PihJKSwgVHVwbGU+Ojp0eXBlPjo6dHlwZQorICBnZXQoY29uc3Qg
VHVwbGUmIHR1cGxlKSB7CisgICAgcmV0dXJuIDo6c3RkOjp0cjE6OmdldDxJPih0dXBsZSk7Cisg
IH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGVUPgorY29uc3Qgc2l6ZV90IFR1cGxlUG9s
aWN5PFR1cGxlVD46OnR1cGxlX3NpemU7CisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUK
KworI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHlwZXM+
CitzdHJ1Y3QgVHVwbGVQb2xpY3k8IDo6c3RkOjp0dXBsZTxUeXBlcy4uLj4gPiB7CisgIHR5cGVk
ZWYgOjpzdGQ6OnR1cGxlPFR5cGVzLi4uPiBUdXBsZTsKKyAgc3RhdGljIGNvbnN0IHNpemVfdCB0
dXBsZV9zaXplID0gOjpzdGQ6OnR1cGxlX3NpemU8VHVwbGU+Ojp2YWx1ZTsKKworICB0ZW1wbGF0
ZSA8c2l6ZV90IEk+CisgIHN0cnVjdCB0dXBsZV9lbGVtZW50IDogOjpzdGQ6OnR1cGxlX2VsZW1l
bnQ8SSwgVHVwbGU+IHt9OworCisgIHRlbXBsYXRlIDxzaXplX3QgST4KKyAgc3RhdGljIGNvbnN0
IHR5cGVuYW1lIDo6c3RkOjp0dXBsZV9lbGVtZW50PEksIFR1cGxlPjo6dHlwZSYgZ2V0KAorICAg
ICAgY29uc3QgVHVwbGUmIHR1cGxlKSB7CisgICAgcmV0dXJuIDo6c3RkOjpnZXQ8ST4odHVwbGUp
OworICB9Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFR5cGVzPgorY29uc3Qgc2l6ZV90IFR1
cGxlUG9saWN5PCA6OnN0ZDo6dHVwbGU8VHlwZXMuLi4+ID46OnR1cGxlX3NpemU7CisjZW5kaWYg
IC8vIEdURVNUX0hBU19TVERfVFVQTEVfCisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFIHx8IEdU
RVNUX0hBU19TVERfVFVQTEVfCisvLyBUaGlzIGhlbHBlciB0ZW1wbGF0ZSBhbGxvd3MgUHJpbnRU
bygpIGZvciB0dXBsZXMgYW5kCisvLyBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0
cmluZ3MoKSB0byBiZSBkZWZpbmVkIGJ5CisvLyBpbmR1Y3Rpb24gb24gdGhlIG51bWJlciBvZiB0
dXBsZSBmaWVsZHMuICBUaGUgaWRlYSBpcyB0aGF0CisvLyBUdXBsZVByZWZpeFByaW50ZXI8Tj46
OlByaW50UHJlZml4VG8odCwgb3MpIHByaW50cyB0aGUgZmlyc3QgTgorLy8gZmllbGRzIGluIHR1
cGxlIHQsIGFuZCBjYW4gYmUgZGVmaW5lZCBpbiB0ZXJtcyBvZgorLy8gVHVwbGVQcmVmaXhQcmlu
dGVyPE4gLSAxPi4KKy8vCisvLyBUaGUgaW5kdWN0aXZlIGNhc2UuCit0ZW1wbGF0ZSA8c2l6ZV90
IE4+CitzdHJ1Y3QgVHVwbGVQcmVmaXhQcmludGVyIHsKKyAgLy8gUHJpbnRzIHRoZSBmaXJzdCBO
IGZpZWxkcyBvZiBhIHR1cGxlLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+CisgIHN0YXRp
YyB2b2lkIFByaW50UHJlZml4VG8oY29uc3QgVHVwbGUmIHQsIDo6c3RkOjpvc3RyZWFtKiBvcykg
eworICAgIFR1cGxlUHJlZml4UHJpbnRlcjxOIC0gMT46OlByaW50UHJlZml4VG8odCwgb3MpOwor
ICAgIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUFVTSF8oKQorICAgIGlmIChOID4gMSkg
eworICAgIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUE9QXygpCisgICAgICAqb3MgPDwg
IiwgIjsKKyAgICB9CisgICAgVW5pdmVyc2FsUHJpbnRlcjwKKyAgICAgICAgdHlwZW5hbWUgVHVw
bGVQb2xpY3k8VHVwbGU+Ojp0ZW1wbGF0ZSB0dXBsZV9lbGVtZW50PE4gLSAxPjo6dHlwZT4KKyAg
ICAgICAgOjpQcmludChUdXBsZVBvbGljeTxUdXBsZT46OnRlbXBsYXRlIGdldDxOIC0gMT4odCks
IG9zKTsKKyAgfQorCisgIC8vIFRlcnNlbHkgcHJpbnRzIHRoZSBmaXJzdCBOIGZpZWxkcyBvZiBh
IHR1cGxlIHRvIGEgc3RyaW5nIHZlY3RvciwKKyAgLy8gb25lIGVsZW1lbnQgZm9yIGVhY2ggZmll
bGQuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4KKyAgc3RhdGljIHZvaWQgVGVyc2VQcmlu
dFByZWZpeFRvU3RyaW5ncyhjb25zdCBUdXBsZSYgdCwgU3RyaW5ncyogc3RyaW5ncykgeworICAg
IFR1cGxlUHJlZml4UHJpbnRlcjxOIC0gMT46OlRlcnNlUHJpbnRQcmVmaXhUb1N0cmluZ3ModCwg
c3RyaW5ncyk7CisgICAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgICBVbml2ZXJzYWxUZXJz
ZVByaW50KFR1cGxlUG9saWN5PFR1cGxlPjo6dGVtcGxhdGUgZ2V0PE4gLSAxPih0KSwgJnNzKTsK
KyAgICBzdHJpbmdzLT5wdXNoX2JhY2soc3Muc3RyKCkpOworICB9Cit9OworCisvLyBCYXNlIGNh
c2UuCit0ZW1wbGF0ZSA8Pgorc3RydWN0IFR1cGxlUHJlZml4UHJpbnRlcjwwPiB7CisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUdXBsZT4KKyAgc3RhdGljIHZvaWQgUHJpbnRQcmVmaXhUbyhjb25zdCBU
dXBsZSYsIDo6c3RkOjpvc3RyZWFtKikge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+
CisgIHN0YXRpYyB2b2lkIFRlcnNlUHJpbnRQcmVmaXhUb1N0cmluZ3MoY29uc3QgVHVwbGUmLCBT
dHJpbmdzKikge30KK307CisKKy8vIEhlbHBlciBmdW5jdGlvbiBmb3IgcHJpbnRpbmcgYSB0dXBs
ZS4KKy8vIFR1cGxlIG11c3QgYmUgZWl0aGVyIHN0ZDo6dHIxOjp0dXBsZSBvciBzdGQ6OnR1cGxl
IHR5cGUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+Cit2b2lkIFByaW50VHVwbGVUbyhjb25z
dCBUdXBsZSYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCAiKCI7CisgIFR1cGxl
UHJlZml4UHJpbnRlcjxUdXBsZVBvbGljeTxUdXBsZT46OnR1cGxlX3NpemU+OjpQcmludFByZWZp
eFRvKHQsIG9zKTsKKyAgKm9zIDw8ICIpIjsKK30KKworLy8gUHJpbnRzIHRoZSBmaWVsZHMgb2Yg
YSB0dXBsZSB0ZXJzZWx5IHRvIGEgc3RyaW5nIHZlY3Rvciwgb25lCisvLyBlbGVtZW50IGZvciBl
YWNoIGZpZWxkLiAgU2VlIHRoZSBjb21tZW50IGJlZm9yZQorLy8gVW5pdmVyc2FsVGVyc2VQcmlu
dCgpIGZvciBob3cgd2UgZGVmaW5lICJ0ZXJzZWx5Ii4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUdXBs
ZT4KK1N0cmluZ3MgVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKGNvbnN0
IFR1cGxlJiB2YWx1ZSkgeworICBTdHJpbmdzIHJlc3VsdDsKKyAgVHVwbGVQcmVmaXhQcmludGVy
PFR1cGxlUG9saWN5PFR1cGxlPjo6dHVwbGVfc2l6ZT46OgorICAgICAgVGVyc2VQcmludFByZWZp
eFRvU3RyaW5ncyh2YWx1ZSwgJnJlc3VsdCk7CisgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYg
IC8vIEdURVNUX0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8KKworfSAgLy8g
bmFtZXNwYWNlIGludGVybmFsCisKKyNpZiBHVEVTVF9IQVNfQUJTTAorbmFtZXNwYWNlIGludGVy
bmFsMiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVHlwZVdpdGhvdXRGb3JtYXR0ZXI8
VCwga0NvbnZlcnRpYmxlVG9TdHJpbmdWaWV3Pjo6UHJpbnRWYWx1ZSgKKyAgICBjb25zdCBUJiB2
YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIGludGVybmFsOjpQcmludFRvKGFic2w6OnN0
cmluZ192aWV3KHZhbHVlKSwgb3MpOworfQorfSAgLy8gbmFtZXNwYWNlIGludGVybmFsMgorI2Vu
ZGlmCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorOjpzdGQ6OnN0cmluZyBQcmludFRvU3RyaW5n
KGNvbnN0IFQmIHZhbHVlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIGludGVybmFs
OjpVbml2ZXJzYWxUZXJzZVByaW50ZXI8VD46OlByaW50KHZhbHVlLCAmc3MpOworICByZXR1cm4g
c3Muc3RyKCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKy8vIEluY2x1ZGUgYW55
IGN1c3RvbSBwcmludGVyIGFkZGVkIGJ5IHRoZSBsb2NhbCBpbnN0YWxsYXRpb24uCisvLyBXZSBt
dXN0IGluY2x1ZGUgdGhpcyBoZWFkZXIgYXQgdGhlIGVuZCB0byBtYWtlIHN1cmUgaXQgY2FuIHVz
ZSB0aGUKKy8vIGRlY2xhcmF0aW9ucyBmcm9tIHRoaXMgZmlsZS4KKyNpbmNsdWRlICJndGVzdC9p
bnRlcm5hbC9jdXN0b20vZ3Rlc3QtcHJpbnRlcnMuaCIKKworI2VuZGlmICAvLyBHVEVTVF9JTkNM
VURFX0dURVNUX0dURVNUX1BSSU5URVJTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXNwaS5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1zcGkuaAppbmRleCBjNDFkYTQ4NDQ3NjAzZTk2NWZiNzcy
YWJjYTJmMTQ1ZWU4MmE2MDZmLi4xZTg5ODM5MzhlYTI3OTJjNTI2OTBlYWQyOWIwMGFiNThjZGFh
ZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0
ZXN0LXNwaS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rl
c3Qtc3BpLmgKQEAgLTI2LDE2ICsyNiwyMCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKKwogLy8KIC8vIFV0aWxpdGllcyBmb3IgdGVzdGluZyBHb29nbGUgVGVzdCBpdHNl
bGYgYW5kIGNvZGUgdGhhdCB1c2VzIEdvb2dsZSBUZXN0CiAvLyAoZS5nLiBmcmFtZXdvcmtzIGJ1
aWx0IG9uIHRvcCBvZiBHb29nbGUgVGVzdCkuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDA0IERPIE5P
VCBERUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1NQSV9IXwogI2Rl
ZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1NQSV9IXwogCi0jaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCitHVEVTVF9ESVNBQkxFX01TQ19X
QVJOSU5HU19QVVNIXyg0MjUxIFwKKy8qIGNsYXNzIEEgbmVlZHMgdG8gaGF2ZSBkbGwtaW50ZXJm
YWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50cyBvZiBjbGFzcyBCICovKQogCiBuYW1lc3BhY2UgdGVz
dGluZyB7CiAKQEAgLTk3LDEzICsxMDEsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBTaW5nbGVGYWls
dXJlQ2hlY2tlciB7CiAgcHVibGljOgogICAvLyBUaGUgY29uc3RydWN0b3IgcmVtZW1iZXJzIHRo
ZSBhcmd1bWVudHMuCiAgIFNpbmdsZUZhaWx1cmVDaGVja2VyKGNvbnN0IFRlc3RQYXJ0UmVzdWx0
QXJyYXkqIHJlc3VsdHMsCi0gICAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0OjpU
eXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN1YnN0cik7Cisg
ICAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUsIGNvbnN0IHN0
ZDo6c3RyaW5nJiBzdWJzdHIpOwogICB+U2luZ2xlRmFpbHVyZUNoZWNrZXIoKTsKICBwcml2YXRl
OgogICBjb25zdCBUZXN0UGFydFJlc3VsdEFycmF5KiBjb25zdCByZXN1bHRzXzsKICAgY29uc3Qg
VGVzdFBhcnRSZXN1bHQ6OlR5cGUgdHlwZV87Ci0gIGNvbnN0IFN0cmluZyBzdWJzdHJfOworICBj
b25zdCBzdGQ6OnN0cmluZyBzdWJzdHJfOwogCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oU2luZ2xlRmFpbHVyZUNoZWNrZXIpOwogfTsKQEAgLTExMiw2ICsxMTUsOCBAQCBjbGFz
cyBHVEVTVF9BUElfIFNpbmdsZUZhaWx1cmVDaGVja2VyIHsKIAogfSAgLy8gbmFtZXNwYWNlIHRl
c3RpbmcKIAorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQorCiAv
LyBBIHNldCBvZiBtYWNyb3MgZm9yIHRlc3RpbmcgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBvciBj
b2RlIHRoYXQncyBleHBlY3RlZAogLy8gdG8gZ2VuZXJhdGUgR29vZ2xlIFRlc3QgZmF0YWwgZmFp
bHVyZXMuICBJdCB2ZXJpZmllcyB0aGF0IHRoZSBnaXZlbgogLy8gc3RhdGVtZW50IHdpbGwgY2F1
c2UgZXhhY3RseSBvbmUgZmF0YWwgR29vZ2xlIFRlc3QgZmFpbHVyZSB3aXRoICdzdWJzdHInCkBA
IC0yMjMsNyArMjI4LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBTaW5nbGVGYWlsdXJlQ2hlY2tlciB7
CiAgICAgICAgIChzdWJzdHIpKTtcCiAgICAge1wKICAgICAgIDo6dGVzdGluZzo6U2NvcGVkRmFr
ZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIgZ3Rlc3RfcmVwb3J0ZXIoXAotICAgICAgICAgIDo6dGVz
dGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6OklOVEVSQ0VQVF9BTExfVEhS
RUFEUyxcCisgICAgICAgICAgOjp0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBv
cnRlcjo6SU5URVJDRVBUX0FMTF9USFJFQURTLCBcCiAgICAgICAgICAgJmd0ZXN0X2ZhaWx1cmVz
KTtcCiAgICAgICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IHN0YXRl
bWVudDsgfVwKICAgICB9XApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBhcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgKaW5kZXggZjcxNDc1OTA2NzYzOWYxZWE0ZWMw
YTEyNjM0N2RlYzEyMDQ4MjQzOS4uMWM3Yjg5ZTA4Nzk2ZDk3MzBmOWY4ZWVhZTQwNjIyNzE3N2Ri
YTUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9n
dGVzdC10ZXN0LXBhcnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2d0ZXN0LXRlc3QtcGFydC5oCkBAIC0yNywxNiArMjcsMTggQEAKIC8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRob3I6IG1oZXVsZUBnb29nbGUuY29tIChNYXJr
dXMgSGV1bGUpCi0vLworLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQogCiAjaWZu
ZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfVEVTVF9QQVJUX0hfCiAjZGVmaW5lIEdURVNU
X0lOQ0xVREVfR1RFU1RfR1RFU1RfVEVTVF9QQVJUX0hfCiAKICNpbmNsdWRlIDxpb3Nmd2Q+CiAj
aW5jbHVkZSA8dmVjdG9yPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFs
Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+CisjaW5jbHVkZSAi
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5h
bC9ndGVzdC1zdHJpbmcuaCIKKworR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDI1
MSBcCisvKiBjbGFzcyBBIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2VkIGJ5
IGNsaWVudHMgb2YgY2xhc3MgQiAqLykKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC02Miw3
ICs2NCw3IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFBhcnRSZXN1bHQgewogICAgICAgICAgICAg
ICAgICBpbnQgYV9saW5lX251bWJlciwKICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV9t
ZXNzYWdlKQogICAgICAgOiB0eXBlXyhhX3R5cGUpLAotICAgICAgICBmaWxlX25hbWVfKGFfZmls
ZV9uYW1lKSwKKyAgICAgICAgZmlsZV9uYW1lXyhhX2ZpbGVfbmFtZSA9PSBOVUxMID8gIiIgOiBh
X2ZpbGVfbmFtZSksCiAgICAgICAgIGxpbmVfbnVtYmVyXyhhX2xpbmVfbnVtYmVyKSwKICAgICAg
ICAgc3VtbWFyeV8oRXh0cmFjdFN1bW1hcnkoYV9tZXNzYWdlKSksCiAgICAgICAgIG1lc3NhZ2Vf
KGFfbWVzc2FnZSkgewpAQCAtNzMsNyArNzUsOSBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RQYXJ0
UmVzdWx0IHsKIAogICAvLyBHZXRzIHRoZSBuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB3aGVyZSB0
aGUgdGVzdCBwYXJ0IHRvb2sgcGxhY2UsIG9yCiAgIC8vIE5VTEwgaWYgaXQncyB1bmtub3duLgot
ICBjb25zdCBjaGFyKiBmaWxlX25hbWUoKSBjb25zdCB7IHJldHVybiBmaWxlX25hbWVfLmNfc3Ry
KCk7IH0KKyAgY29uc3QgY2hhciogZmlsZV9uYW1lKCkgY29uc3QgeworICAgIHJldHVybiBmaWxl
X25hbWVfLmVtcHR5KCkgPyBOVUxMIDogZmlsZV9uYW1lXy5jX3N0cigpOworICB9CiAKICAgLy8g
R2V0cyB0aGUgbGluZSBpbiB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0b29r
IHBsYWNlLAogICAvLyBvciAtMSBpZiBpdCdzIHVua25vd24uCkBAIC05NiwyMSArMTAwLDIyIEBA
IGNsYXNzIEdURVNUX0FQSV8gVGVzdFBhcnRSZXN1bHQgewogCiAgIC8vIFJldHVybnMgdHJ1ZSBp
ZmYgdGhlIHRlc3QgcGFydCBmYXRhbGx5IGZhaWxlZC4KICAgYm9vbCBmYXRhbGx5X2ZhaWxlZCgp
IGNvbnN0IHsgcmV0dXJuIHR5cGVfID09IGtGYXRhbEZhaWx1cmU7IH0KKwogIHByaXZhdGU6CiAg
IFR5cGUgdHlwZV87CiAKICAgLy8gR2V0cyB0aGUgc3VtbWFyeSBvZiB0aGUgZmFpbHVyZSBtZXNz
YWdlIGJ5IG9taXR0aW5nIHRoZSBzdGFjawogICAvLyB0cmFjZSBpbiBpdC4KLSAgc3RhdGljIGlu
dGVybmFsOjpTdHJpbmcgRXh0cmFjdFN1bW1hcnkoY29uc3QgY2hhciogbWVzc2FnZSk7CisgIHN0
YXRpYyBzdGQ6OnN0cmluZyBFeHRyYWN0U3VtbWFyeShjb25zdCBjaGFyKiBtZXNzYWdlKTsKIAog
ICAvLyBUaGUgbmFtZSBvZiB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0b29r
IHBsYWNlLCBvcgotICAvLyBOVUxMIGlmIHRoZSBzb3VyY2UgZmlsZSBpcyB1bmtub3duLgotICBp
bnRlcm5hbDo6U3RyaW5nIGZpbGVfbmFtZV87CisgIC8vICIiIGlmIHRoZSBzb3VyY2UgZmlsZSBp
cyB1bmtub3duLgorICBzdGQ6OnN0cmluZyBmaWxlX25hbWVfOwogICAvLyBUaGUgbGluZSBpbiB0
aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0b29rIHBsYWNlLCBvciAtMQogICAv
LyBpZiB0aGUgbGluZSBudW1iZXIgaXMgdW5rbm93bi4KICAgaW50IGxpbmVfbnVtYmVyXzsKLSAg
aW50ZXJuYWw6OlN0cmluZyBzdW1tYXJ5XzsgIC8vIFRoZSB0ZXN0IGZhaWx1cmUgc3VtbWFyeS4K
LSAgaW50ZXJuYWw6OlN0cmluZyBtZXNzYWdlXzsgIC8vIFRoZSB0ZXN0IGZhaWx1cmUgbWVzc2Fn
ZS4KKyAgc3RkOjpzdHJpbmcgc3VtbWFyeV87ICAvLyBUaGUgdGVzdCBmYWlsdXJlIHN1bW1hcnku
CisgIHN0ZDo6c3RyaW5nIG1lc3NhZ2VfOyAgLy8gVGhlIHRlc3QgZmFpbHVyZSBtZXNzYWdlLgog
fTsKIAogLy8gUHJpbnRzIGEgVGVzdFBhcnRSZXN1bHQgb2JqZWN0LgpAQCAtMTQwLDcgKzE0NSw3
IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFBhcnRSZXN1bHRBcnJheSB7CiB9OwogCiAvLyBUaGlz
IGludGVyZmFjZSBrbm93cyBob3cgdG8gcmVwb3J0IGEgdGVzdCBwYXJ0IHJlc3VsdC4KLWNsYXNz
IFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2UgeworY2xhc3MgR1RFU1RfQVBJXyBUZXN0
UGFydFJlc3VsdFJlcG9ydGVySW50ZXJmYWNlIHsKICBwdWJsaWM6CiAgIHZpcnR1YWwgflRlc3RQ
YXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2UoKSB7fQogCkBAIC0xNzMsNCArMTc4LDYgQEAgY2xh
c3MgR1RFU1RfQVBJXyBIYXNOZXdGYXRhbEZhaWx1cmVIZWxwZXIKIAogfSAgLy8gbmFtZXNwYWNl
IHRlc3RpbmcKIAorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQor
CiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfVEVTVF9QQVJUX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXR5cGVk
LXRlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlw
ZWQtdGVzdC5oCmluZGV4IDFlYzhlYjhkMzA5Mzk4ZDUyYmQ0OTYzODRjZjQ3NDgzYWUxMTUyZWUu
LjI5YjA4NTk5MmRlMGVlNGYzN2I2NzYyZmMzZTIzNjQzY2NlYWQ2ZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVz
dC5oCkBAIC0yNiw4ICsyNiw5IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KQorCisKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKIAogI2lmbmRlZiBHVEVT
VF9JTkNMVURFX0dURVNUX0dURVNUX1RZUEVEX1RFU1RfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVE
RV9HVEVTVF9HVEVTVF9UWVBFRF9URVNUX0hfCkBAIC04Miw2ICs4MywyNCBAQCBUWVBFRF9URVNU
KEZvb1Rlc3QsIERvZXNCbGFoKSB7CiAKIFRZUEVEX1RFU1QoRm9vVGVzdCwgSGFzUHJvcGVydHlB
KSB7IC4uLiB9CiAKKy8vIFRZUEVEX1RFU1RfQ0FTRSB0YWtlcyBhbiBvcHRpb25hbCB0aGlyZCBh
cmd1bWVudCB3aGljaCBhbGxvd3MgdG8gc3BlY2lmeSBhCisvLyBjbGFzcyB0aGF0IGdlbmVyYXRl
cyBjdXN0b20gdGVzdCBuYW1lIHN1ZmZpeGVzIGJhc2VkIG9uIHRoZSB0eXBlLiBUaGlzIHNob3Vs
ZAorLy8gYmUgYSBjbGFzcyB3aGljaCBoYXMgYSBzdGF0aWMgdGVtcGxhdGUgZnVuY3Rpb24gR2V0
TmFtZShpbnQgaW5kZXgpIHJldHVybmluZworLy8gYSBzdHJpbmcgZm9yIGVhY2ggdHlwZS4gVGhl
IHByb3ZpZGVkIGludGVnZXIgaW5kZXggZXF1YWxzIHRoZSBpbmRleCBvZiB0aGUKKy8vIHR5cGUg
aW4gdGhlIHByb3ZpZGVkIHR5cGUgbGlzdC4gSW4gbWFueSBjYXNlcyB0aGUgaW5kZXggY2FuIGJl
IGlnbm9yZWQuCisvLworLy8gRm9yIGV4YW1wbGU6CisvLyAgIGNsYXNzIE15VHlwZU5hbWVzIHsK
Ky8vICAgIHB1YmxpYzoKKy8vICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy8vICAgICBzdGF0
aWMgc3RkOjpzdHJpbmcgR2V0TmFtZShpbnQpIHsKKy8vICAgICAgIGlmIChzdGQ6OmlzX3NhbWU8
VCwgY2hhcj4oKSkgcmV0dXJuICJjaGFyIjsKKy8vICAgICAgIGlmIChzdGQ6OmlzX3NhbWU8VCwg
aW50PigpKSByZXR1cm4gImludCI7CisvLyAgICAgICBpZiAoc3RkOjppc19zYW1lPFQsIHVuc2ln
bmVkIGludD4oKSkgcmV0dXJuICJ1bnNpZ25lZF9pbnQiOworLy8gICAgIH0KKy8vICAgfTsKKy8v
ICAgVFlQRURfVEVTVF9DQVNFKEZvb1Rlc3QsIE15VHlwZXMsIE15VHlwZU5hbWVzKTsKKwogI2Vu
ZGlmICAvLyAwCiAKIC8vIFR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgYWJzdHJhY3QgdGVz
dCBwYXR0ZXJucyBwYXJhbWV0ZXJpemVkCkBAIC0xNDMsMTEgKzE2MiwxNiBAQCBJTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcyk7CiAvLyBJZiB0aGUgdHlw
ZSBsaXN0IGNvbnRhaW5zIG9ubHkgb25lIHR5cGUsIHlvdSBjYW4gd3JpdGUgdGhhdCB0eXBlCiAv
LyBkaXJlY3RseSB3aXRob3V0IFR5cGVzPC4uLj46CiAvLyAgIElOU1RBTlRJQVRFX1RZUEVEX1RF
U1RfQ0FTRV9QKE15LCBGb29UZXN0LCBpbnQpOworLy8KKy8vIFNpbWlsYXIgdG8gdGhlIG9wdGlv
bmFsIGFyZ3VtZW50IG9mIFRZUEVEX1RFU1RfQ0FTRSBhYm92ZSwKKy8vIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QIHRha2VzIGFuIG9wdGlvbmFsIGZvdXJ0aCBhcmd1bWVudCB3aGljaCBhbGxvd3Mg
dG8KKy8vIGdlbmVyYXRlIGN1c3RvbSBuYW1lcy4KKy8vICAgSU5TVEFOVElBVEVfVFlQRURfVEVT
VF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMsIE15VHlwZU5hbWVzKTsKIAogI2VuZGlmICAv
LyAwCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+Ci0jaW5jbHVkZSA8
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcG9ydC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRp
bC5oIgogCiAvLyBJbXBsZW1lbnRzIHR5cGVkIHRlc3RzLgogCkBAIC0xNTcsMzMgKzE4MSw0NyBA
QCBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcyk7CiAv
LwogLy8gRXhwYW5kcyB0byB0aGUgbmFtZSBvZiB0aGUgdHlwZWRlZiBmb3IgdGhlIHR5cGUgcGFy
YW1ldGVycyBvZiB0aGUKIC8vIGdpdmVuIHRlc3QgY2FzZS4KLSNkZWZpbmUgR1RFU1RfVFlQRV9Q
QVJBTVNfKFRlc3RDYXNlTmFtZSkgZ3Rlc3RfdHlwZV9wYXJhbXNfIyNUZXN0Q2FzZU5hbWUjI18K
KyMgZGVmaW5lIEdURVNUX1RZUEVfUEFSQU1TXyhUZXN0Q2FzZU5hbWUpIGd0ZXN0X3R5cGVfcGFy
YW1zXyMjVGVzdENhc2VOYW1lIyNfCisKKy8vIEV4cGFuZHMgdG8gdGhlIG5hbWUgb2YgdGhlIHR5
cGVkZWYgZm9yIHRoZSBOYW1lR2VuZXJhdG9yLCByZXNwb25zaWJsZSBmb3IKKy8vIGNyZWF0aW5n
IHRoZSBzdWZmaXhlcyBvZiB0aGUgbmFtZS4KKyNkZWZpbmUgR1RFU1RfTkFNRV9HRU5FUkFUT1Jf
KFRlc3RDYXNlTmFtZSkgXAorICBndGVzdF90eXBlX3BhcmFtc18jI1Rlc3RDYXNlTmFtZSMjX05h
bWVHZW5lcmF0b3IKIAogLy8gVGhlICdUeXBlcycgdGVtcGxhdGUgYXJndW1lbnQgYmVsb3cgbXVz
dCBoYXZlIHNwYWNlcyBhcm91bmQgaXQKIC8vIHNpbmNlIHNvbWUgY29tcGlsZXJzIG1heSBjaG9r
ZSBvbiAnPj4nIHdoZW4gcGFzc2luZyBhIHRlbXBsYXRlCiAvLyBpbnN0YW5jZSAoZS5nLiBUeXBl
czxpbnQ+KQotI2RlZmluZSBUWVBFRF9URVNUX0NBU0UoQ2FzZU5hbWUsIFR5cGVzKSBcCi0gIHR5
cGVkZWYgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZUxpc3Q8IFR5cGVzID46OnR5cGUgXAotICAg
ICAgR1RFU1RfVFlQRV9QQVJBTVNfKENhc2VOYW1lKQotCi0jZGVmaW5lIFRZUEVEX1RFU1QoQ2Fz
ZU5hbWUsIFRlc3ROYW1lKSBcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1f
PiBcCi0gIGNsYXNzIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8oQ2FzZU5hbWUsIFRlc3ROYW1lKSBc
Ci0gICAgICA6IHB1YmxpYyBDYXNlTmFtZTxndGVzdF9UeXBlUGFyYW1fPiB7IFwKLSAgIHByaXZh
dGU6IFwKLSAgICB0eXBlZGVmIENhc2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IFRlc3RGaXh0dXJl
OyBcCi0gICAgdHlwZWRlZiBndGVzdF9UeXBlUGFyYW1fIFR5cGVQYXJhbTsgXAotICAgIHZpcnR1
YWwgdm9pZCBUZXN0Qm9keSgpOyBcCi0gIH07IFwKLSAgYm9vbCBndGVzdF8jI0Nhc2VOYW1lIyNf
IyNUZXN0TmFtZSMjX3JlZ2lzdGVyZWRfID0gXAotICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
VHlwZVBhcmFtZXRlcml6ZWRUZXN0PCBcCi0gICAgICAgICAgQ2FzZU5hbWUsIFwKLSAgICAgICAg
ICA6OnRlc3Rpbmc6OmludGVybmFsOjpUZW1wbGF0ZVNlbDwgXAotICAgICAgICAgICAgICBHVEVT
VF9URVNUX0NMQVNTX05BTUVfKENhc2VOYW1lLCBUZXN0TmFtZSk+LCBcCi0gICAgICAgICAgR1RF
U1RfVFlQRV9QQVJBTVNfKENhc2VOYW1lKT46OlJlZ2lzdGVyKFwKLSAgICAgICAgICAgICAgIiIs
ICNDYXNlTmFtZSwgI1Rlc3ROYW1lLCAwKTsgXAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgZ3Rlc3Rf
VHlwZVBhcmFtXz4gXAotICB2b2lkIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8oQ2FzZU5hbWUsIFRl
c3ROYW1lKTxndGVzdF9UeXBlUGFyYW1fPjo6VGVzdEJvZHkoKQorIyBkZWZpbmUgVFlQRURfVEVT
VF9DQVNFKENhc2VOYW1lLCBUeXBlcywgLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICB0eXBlZGVmIDo6dGVzdGluZzo6aW50ZXJuYWw6OlR5cGVMaXN0PCBUeXBlcyA+Ojp0eXBl
IEdURVNUX1RZUEVfUEFSQU1TXyggXAorICAgICAgQ2FzZU5hbWUpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB0eXBlZGVmIDo6
dGVzdGluZzo6aW50ZXJuYWw6Ok5hbWVHZW5lcmF0b3JTZWxlY3RvcjxfX1ZBX0FSR1NfXz46OnR5
cGUgICAgXAorICAgICAgR1RFU1RfTkFNRV9HRU5FUkFUT1JfKENhc2VOYW1lKQorCisjIGRlZmlu
ZSBUWVBFRF9URVNUKENhc2VOYW1lLCBUZXN0TmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGNsYXNzIEdURVNUX1RF
U1RfQ0xBU1NfTkFNRV8oQ2FzZU5hbWUsIFRlc3ROYW1lKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICA6IHB1YmxpYyBDYXNlTmFtZTxndGVzdF9UeXBlUGFyYW1fPiB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICBwcml2YXRlOiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgdHlwZWRlZiBDYXNlTmFtZTxndGVzdF9UeXBlUGFyYW1fPiBUZXN0Rml4dHVyZTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgdHlwZWRlZiBndGVzdF9UeXBlUGFyYW1fIFR5cGVQ
YXJhbTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdmlydHVh
bCB2b2lkIFRlc3RCb2R5KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGJvb2wgZ3Rlc3RfIyNDYXNl
TmFtZSMjXyMjVGVzdE5hbWUjI19yZWdpc3RlcmVkXyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9
ICBcCisgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpUeXBlUGFyYW1ldGVyaXplZFRlc3Q8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgQ2FzZU5hbWUsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVtcGxhdGVTZWw8R1RFU1RfVEVTVF9DTEFTU19O
QU1FXyhDYXNlTmFtZSwgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0TmFtZSk+LCBcCisgICAgICAgICAgR1RF
U1RfVFlQRV9QQVJBTVNfKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICAgIENhc2VOYW1lKT46OlJlZ2lzdGVyKCIiLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbiggICAgICAgICBc
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5F
X18pLCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICNDYXNlTmFtZSwgI1Rlc3ROYW1lLCAwLCAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkdlbmVyYXRl
TmFtZXM8ICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
VEVTVF9OQU1FX0dFTkVSQVRPUl8oQ2FzZU5hbWUpLCAgICAgICBcCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9UWVBFX1BBUkFNU18oQ2FzZU5hbWUpPigpKTsg
ICAgICBcCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHZvaWQgR1RFU1RfVEVTVF9DTEFTU19O
QU1FXyhDYXNlTmFtZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0TmFtZSk8Z3Rlc3RfVHlwZVBhcmFtXz46
OlRlc3RCb2R5KCkKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAogCkBAIC0xOTYs
MzEgKzIzNCwzMSBAQCBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwg
TXlUeXBlcyk7CiAvLyBFeHBhbmRzIHRvIHRoZSBuYW1lc3BhY2UgbmFtZSB0aGF0IHRoZSB0eXBl
LXBhcmFtZXRlcml6ZWQgdGVzdHMgZm9yCiAvLyB0aGUgZ2l2ZW4gdHlwZS1wYXJhbWV0ZXJpemVk
IHRlc3QgY2FzZSBhcmUgZGVmaW5lZCBpbi4gIFRoZSBleGFjdAogLy8gbmFtZSBvZiB0aGUgbmFt
ZXNwYWNlIGlzIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotI2RlZmluZSBHVEVT
VF9DQVNFX05BTUVTUEFDRV8oVGVzdENhc2VOYW1lKSBcCisjIGRlZmluZSBHVEVTVF9DQVNFX05B
TUVTUEFDRV8oVGVzdENhc2VOYW1lKSBcCiAgIGd0ZXN0X2Nhc2VfIyNUZXN0Q2FzZU5hbWUjI18K
IAogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4K
IC8vCiAvLyBFeHBhbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSB1c2VkIHRvIHJlbWVt
YmVyIHRoZSBuYW1lcyBvZgogLy8gdGhlIGRlZmluZWQgdGVzdHMgaW4gdGhlIGdpdmVuIHRlc3Qg
Y2FzZS4KLSNkZWZpbmUgR1RFU1RfVFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKFRlc3RDYXNlTmFt
ZSkgXAorIyBkZWZpbmUgR1RFU1RfVFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKFRlc3RDYXNlTmFt
ZSkgXAogICBndGVzdF90eXBlZF90ZXN0X2Nhc2VfcF9zdGF0ZV8jI1Rlc3RDYXNlTmFtZSMjXwog
CiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFIERJ
UkVDVExZLgogLy8KIC8vIEV4cGFuZHMgdG8gdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIHVzZWQg
dG8gcmVtZW1iZXIgdGhlIG5hbWVzIG9mCiAvLyB0aGUgcmVnaXN0ZXJlZCB0ZXN0cyBpbiB0aGUg
Z2l2ZW4gdGVzdCBjYXNlLgotI2RlZmluZSBHVEVTVF9SRUdJU1RFUkVEX1RFU1RfTkFNRVNfKFRl
c3RDYXNlTmFtZSkgXAorIyBkZWZpbmUgR1RFU1RfUkVHSVNURVJFRF9URVNUX05BTUVTXyhUZXN0
Q2FzZU5hbWUpIFwKICAgZ3Rlc3RfcmVnaXN0ZXJlZF90ZXN0X25hbWVzXyMjVGVzdENhc2VOYW1l
IyNfCiAKIC8vIFRoZSB2YXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgdHlwZS1wYXJhbWV0ZXJpemVk
IHRlc3QgbWFjcm9zIGFyZQogLy8gc3RhdGljIGFzIHR5cGljYWxseSB0aGVzZSBtYWNyb3MgYXJl
IHVzZWQgaW4gYSAuaCBmaWxlIHRoYXQgY2FuIGJlCiAvLyAjaW5jbHVkZWQgaW4gbXVsdGlwbGUg
dHJhbnNsYXRpb24gdW5pdHMgbGlua2VkIHRvZ2V0aGVyLgotI2RlZmluZSBUWVBFRF9URVNUX0NB
U0VfUChDYXNlTmFtZSkgXAorIyBkZWZpbmUgVFlQRURfVEVTVF9DQVNFX1AoQ2FzZU5hbWUpIFwK
ICAgc3RhdGljIDo6dGVzdGluZzo6aW50ZXJuYWw6OlR5cGVkVGVzdENhc2VQU3RhdGUgXAogICAg
ICAgR1RFU1RfVFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKENhc2VOYW1lKQogCi0jZGVmaW5lIFRZ
UEVEX1RFU1RfUChDYXNlTmFtZSwgVGVzdE5hbWUpIFwKKyMgZGVmaW5lIFRZUEVEX1RFU1RfUChD
YXNlTmFtZSwgVGVzdE5hbWUpIFwKICAgbmFtZXNwYWNlIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhD
YXNlTmFtZSkgeyBcCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiBcCiAg
IGNsYXNzIFRlc3ROYW1lIDogcHVibGljIENhc2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IHsgXApA
QCAtMjI5LDMwICsyNjcsMzggQEAgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZv
b1Rlc3QsIE15VHlwZXMpOwogICAgIHR5cGVkZWYgZ3Rlc3RfVHlwZVBhcmFtXyBUeXBlUGFyYW07
IFwKICAgICB2aXJ0dWFsIHZvaWQgVGVzdEJvZHkoKTsgXAogICB9OyBcCi0gIHN0YXRpYyBib29s
IGd0ZXN0XyMjVGVzdE5hbWUjI19kZWZpbmVkXyA9IFwKKyAgc3RhdGljIGJvb2wgZ3Rlc3RfIyNU
ZXN0TmFtZSMjX2RlZmluZWRfIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gXAogICAgICAgR1RF
U1RfVFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKENhc2VOYW1lKS5BZGRUZXN0TmFtZShcCiAgICAg
ICAgICAgX19GSUxFX18sIF9fTElORV9fLCAjQ2FzZU5hbWUsICNUZXN0TmFtZSk7IFwKICAgfSBc
CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiBcCiAgIHZvaWQgR1RFU1Rf
Q0FTRV9OQU1FU1BBQ0VfKENhc2VOYW1lKTo6VGVzdE5hbWU8Z3Rlc3RfVHlwZVBhcmFtXz46OlRl
c3RCb2R5KCkKIAotI2RlZmluZSBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChDYXNlTmFtZSwg
Li4uKSBcCisjIGRlZmluZSBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChDYXNlTmFtZSwgLi4u
KSBcCiAgIG5hbWVzcGFjZSBHVEVTVF9DQVNFX05BTUVTUEFDRV8oQ2FzZU5hbWUpIHsgXAogICB0
eXBlZGVmIDo6dGVzdGluZzo6aW50ZXJuYWw6OlRlbXBsYXRlczxfX1ZBX0FSR1NfXz46OnR5cGUg
Z3Rlc3RfQWxsVGVzdHNfOyBcCiAgIH0gXAotICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgR1RF
U1RfUkVHSVNURVJFRF9URVNUX05BTUVTXyhDYXNlTmFtZSkgPSBcCi0gICAgICBHVEVTVF9UWVBF
RF9URVNUX0NBU0VfUF9TVEFURV8oQ2FzZU5hbWUpLlZlcmlmeVJlZ2lzdGVyZWRUZXN0TmFtZXMo
XAotICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgI19fVkFfQVJHU19fKQorICBzdGF0aWMg
Y29uc3QgY2hhciogY29uc3QgR1RFU1RfUkVHSVNURVJFRF9URVNUX05BTUVTXyhDYXNlTmFtZSkg
XAorICAgICAgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gPSBcCisgICAgICAgICAgR1RFU1RfVFlQ
RURfVEVTVF9DQVNFX1BfU1RBVEVfKENhc2VOYW1lKS5WZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVz
KCBcCisgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgI19fVkFfQVJHU19fKQogCiAv
LyBUaGUgJ1R5cGVzJyB0ZW1wbGF0ZSBhcmd1bWVudCBiZWxvdyBtdXN0IGhhdmUgc3BhY2VzIGFy
b3VuZCBpdAogLy8gc2luY2Ugc29tZSBjb21waWxlcnMgbWF5IGNob2tlIG9uICc+Picgd2hlbiBw
YXNzaW5nIGEgdGVtcGxhdGUKIC8vIGluc3RhbmNlIChlLmcuIFR5cGVzPGludD4pCi0jZGVmaW5l
IElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFByZWZpeCwgQ2FzZU5hbWUsIFR5cGVzKSBc
Ci0gIGJvb2wgZ3Rlc3RfIyNQcmVmaXgjI18jI0Nhc2VOYW1lID0gXAotICAgICAgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6VHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTxDYXNlTmFtZSwgXAotICAgICAg
ICAgIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhDYXNlTmFtZSk6Omd0ZXN0X0FsbFRlc3RzXywgXAot
ICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlR5cGVMaXN0PCBUeXBlcyA+Ojp0eXBlPjo6
UmVnaXN0ZXIoXAotICAgICAgICAgICAgICAjUHJlZml4LCAjQ2FzZU5hbWUsIEdURVNUX1JFR0lT
VEVSRURfVEVTVF9OQU1FU18oQ2FzZU5hbWUpKQorIyBkZWZpbmUgSU5TVEFOVElBVEVfVFlQRURf
VEVTVF9DQVNFX1AoUHJlZml4LCBDYXNlTmFtZSwgVHlwZXMsIC4uLikgICAgICBcCisgIGJvb2wg
Z3Rlc3RfIyNQcmVmaXgjI18jI0Nhc2VOYW1lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gICAg
ICAgICAgICAgIFwKKyAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlR5cGVQYXJhbWV0ZXJpemVk
VGVzdENhc2U8ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIENhc2VOYW1lLCBHVEVT
VF9DQVNFX05BTUVTUEFDRV8oQ2FzZU5hbWUpOjpndGVzdF9BbGxUZXN0c18sICAgICBcCisgICAg
ICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZUxpc3Q8IFR5cGVzID46OnR5cGU+OjogICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICBSZWdpc3RlcigjUHJlZml4LCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIDo6
dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihfX0ZJTEVfXywgX19MSU5FX18pLCBcCisg
ICAgICAgICAgICAgICAgICAgJkdURVNUX1RZUEVEX1RFU1RfQ0FTRV9QX1NUQVRFXyhDYXNlTmFt
ZSksICNDYXNlTmFtZSwgIFwKKyAgICAgICAgICAgICAgICAgICBHVEVTVF9SRUdJU1RFUkVEX1RF
U1RfTkFNRVNfKENhc2VOYW1lKSwgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAg
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkdlbmVyYXRlTmFtZXM8ICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok5hbWVHZW5lcmF0
b3JTZWxlY3RvcjwgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fVkFfQVJH
U19fPjo6dHlwZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
ICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpUeXBlTGlzdDwgVHlwZXMgPjo6dHlwZT4oKSkK
IAogI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaAppbmRleCA5MjFmYWQxMWZjYzhmMjRjMGRk
MjIzOTRhNDg2N2FiMjRiNmVhMGMzLi4yYmU4YjExMmM2MzdiMTBkYWNmZDA2OWZiOTcxZmU2ODY2
YThkODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2d0ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVz
dC5oCkBAIC0yNiwxMCArMjYsOSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcg
V2FuKQotLy8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVz
dCkKKy8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29n
bGUgVGVzdCkKIC8vCiAvLyBUaGlzIGhlYWRlciBmaWxlIGRlZmluZXMgdGhlIHB1YmxpYyBBUEkg
Zm9yIEdvb2dsZSBUZXN0LiAgSXQgc2hvdWxkIGJlCiAvLyBpbmNsdWRlZCBieSBhbnkgdGVzdCBw
cm9ncmFtIHRoYXQgdXNlcyBHb29nbGUgVGVzdC4KQEAgLTQ4LDM4ICs0Nyw1NCBAQAogLy8gcmVn
aXN0cmF0aW9uIGZyb20gQmFydGhlbGVteSBEYWdlbmFpcycgKGJhcnRoZWxlbXlAcHJvbG9naXF1
ZS5jb20pCiAvLyBlYXN5VW5pdCBmcmFtZXdvcmsuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERP
IE5PVCBERUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0hfCiAjZGVm
aW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KIAogI2luY2x1ZGUgPGxpbWl0cz4KKyNp
bmNsdWRlIDxvc3RyZWFtPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgPGd0ZXN0L2lu
dGVybmFsL2d0ZXN0LWludGVybmFsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
c3RyaW5nLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oPgotI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1wYXJhbS10ZXN0
Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3RfcHJvZC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
LXRlc3QtcGFydC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaD4KKyNpbmNs
dWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oIgorI2luY2x1ZGUgImd0ZXN0L2lu
dGVybmFsL2d0ZXN0LXN0cmluZy5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3Qu
aCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1tZXNzYWdlLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QtcGFyYW0tdGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXByaW50ZXJzLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3RfcHJvZC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXRlc3QtcGFy
dC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaCIKKworR1RFU1RfRElTQUJM
RV9NU0NfV0FSTklOR1NfUFVTSF8oNDI1MSBcCisvKiBjbGFzcyBBIG5lZWRzIHRvIGhhdmUgZGxs
LWludGVyZmFjZSB0byBiZSB1c2VkIGJ5IGNsaWVudHMgb2YgY2xhc3MgQiAqLykKIAogLy8gRGVw
ZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSwgZGlmZmVyZW50IHN0cmluZyBjbGFzc2VzIGFyZSBhdmFp
bGFibGUuCiAvLyBPbiBMaW51eCwgaW4gYWRkaXRpb24gdG8gOjpzdGQ6OnN0cmluZywgR29vZ2xl
IGFsc28gbWFrZXMgdXNlIG9mCiAvLyBjbGFzcyA6OnN0cmluZywgd2hpY2ggaGFzIHRoZSBzYW1l
IGludGVyZmFjZSBhcyA6OnN0ZDo6c3RyaW5nLCBidXQKIC8vIGhhcyBhIGRpZmZlcmVudCBpbXBs
ZW1lbnRhdGlvbi4KIC8vCi0vLyBUaGUgdXNlciBjYW4gZGVmaW5lIEdURVNUX0hBU19HTE9CQUxf
U1RSSU5HIHRvIDEgdG8gaW5kaWNhdGUgdGhhdAorLy8gWW91IGNhbiBkZWZpbmUgR1RFU1RfSEFT
X0dMT0JBTF9TVFJJTkcgdG8gMSB0byBpbmRpY2F0ZSB0aGF0CiAvLyA6OnN0cmluZyBpcyBhdmFp
bGFibGUgQU5EIGlzIGEgZGlzdGluY3QgdHlwZSB0byA6OnN0ZDo6c3RyaW5nLCBvcgogLy8gZGVm
aW5lIGl0IHRvIDAgdG8gaW5kaWNhdGUgb3RoZXJ3aXNlLgogLy8KLS8vIElmIHRoZSB1c2VyJ3Mg
OjpzdGQ6OnN0cmluZyBhbmQgOjpzdHJpbmcgYXJlIHRoZSBzYW1lIGNsYXNzIGR1ZSB0bwotLy8g
YWxpYXNpbmcsIGhlIHNob3VsZCBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgdG8gMC4K
Ky8vIElmIDo6c3RkOjpzdHJpbmcgYW5kIDo6c3RyaW5nIGFyZSB0aGUgc2FtZSBjbGFzcyBvbiB5
b3VyIHBsYXRmb3JtCisvLyBkdWUgdG8gYWxpYXNpbmcsIHlvdSBzaG91bGQgZGVmaW5lIEdURVNU
X0hBU19HTE9CQUxfU1RSSU5HIHRvIDAuCiAvLwotLy8gSWYgdGhlIHVzZXIgZG9lc24ndCBkZWZp
bmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcsIGl0IGlzIGRlZmluZWQKKy8vIElmIHlvdSBkbyBu
b3QgZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HLCBpdCBpcyBkZWZpbmVkCiAvLyBoZXVy
aXN0aWNhbGx5LgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKKy8vIFNpbGVuY2UgQzQxMDAgKHVu
cmVmZXJlbmNlZCBmb3JtYWwgcGFyYW1ldGVyKSBhbmQgNDgwNQorLy8gdW5zYWZlIG1peCBvZiB0
eXBlICdjb25zdCBpbnQnIGFuZCB0eXBlICdjb25zdCBib29sJworI2lmZGVmIF9NU0NfVkVSCisj
IHByYWdtYSB3YXJuaW5nKHB1c2gpCisjIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDgwNSkKKyMg
cHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTAwKQorI2VuZGlmCisKKwogLy8gRGVjbGFyZXMgdGhl
IGZsYWdzLgogCiAvLyBUaGlzIGZsYWcgdGVtcG9yYXJ5IGVuYWJsZXMgdGhlIGRpc2FibGVkIHRl
c3RzLgpAQCAtMTEzLDYgKzEyOCw5IEBAIEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhvdXRwdXQpOwog
Ly8gdGVzdC4KIEdURVNUX0RFQ0xBUkVfYm9vbF8ocHJpbnRfdGltZSk7CiAKKy8vIFRoaXMgZmxh
Z3MgY29udHJvbCB3aGV0aGVyIEdvb2dsZSBUZXN0IHByaW50cyBVVEY4IGNoYXJhY3RlcnMgYXMg
dGV4dC4KK0dURVNUX0RFQ0xBUkVfYm9vbF8ocHJpbnRfdXRmOCk7CisKIC8vIFRoaXMgZmxhZyBz
cGVjaWZpZXMgdGhlIHJhbmRvbSBudW1iZXIgc2VlZC4KIEdURVNUX0RFQ0xBUkVfaW50MzJfKHJh
bmRvbV9zZWVkKTsKIApAQCAtMTMzLDkgKzE1MSwxNCBAQCBHVEVTVF9ERUNMQVJFX2ludDMyXyhz
dGFja190cmFjZV9kZXB0aCk7CiAKIC8vIFdoZW4gdGhpcyBmbGFnIGlzIHNwZWNpZmllZCwgYSBm
YWlsZWQgYXNzZXJ0aW9uIHdpbGwgdGhyb3cgYW4KIC8vIGV4Y2VwdGlvbiBpZiBleGNlcHRpb25z
IGFyZSBlbmFibGVkLCBvciBleGl0IHRoZSBwcm9ncmFtIHdpdGggYQotLy8gbm9uLXplcm8gY29k
ZSBvdGhlcndpc2UuCisvLyBub24temVybyBjb2RlIG90aGVyd2lzZS4gRm9yIHVzZSB3aXRoIGFu
IGV4dGVybmFsIHRlc3QgZnJhbWV3b3JrLgogR1RFU1RfREVDTEFSRV9ib29sXyh0aHJvd19vbl9m
YWlsdXJlKTsKIAorLy8gV2hlbiB0aGlzIGZsYWcgaXMgc2V0IHdpdGggYSAiaG9zdDpwb3J0IiBz
dHJpbmcsIG9uIHN1cHBvcnRlZAorLy8gcGxhdGZvcm1zIHRlc3QgcmVzdWx0cyBhcmUgc3RyZWFt
ZWQgdG8gdGhlIHNwZWNpZmllZCBwb3J0IG9uCisvLyB0aGUgc3BlY2lmaWVkIGhvc3QgbWFjaGlu
ZS4KK0dURVNUX0RFQ0xBUkVfc3RyaW5nXyhzdHJlYW1fcmVzdWx0X3RvKTsKKwogLy8gVGhlIHVw
cGVyIGxpbWl0IGZvciB2YWxpZCBzdGFjayB0cmFjZSBkZXB0aHMuCiBjb25zdCBpbnQga01heFN0
YWNrVHJhY2VEZXB0aCA9IDEwMDsKIApAQCAtMTQ3LDMxICsxNzAsMjcgQEAgY2xhc3MgRXhlY0Rl
YXRoVGVzdDsKIGNsYXNzIE5vRXhlY0RlYXRoVGVzdDsKIGNsYXNzIEZpbmFsU3VjY2Vzc0NoZWNr
ZXI7CiBjbGFzcyBHVGVzdEZsYWdTYXZlcjsKLWNsYXNzIFRlc3RJbmZvSW1wbDsKK2NsYXNzIFN0
cmVhbWluZ0xpc3RlbmVyVGVzdDsKIGNsYXNzIFRlc3RSZXN1bHRBY2Nlc3NvcjsKIGNsYXNzIFRl
c3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOwogY2xhc3MgVGVzdEV2ZW50UmVwZWF0ZXI7CitjbGFz
cyBVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdEhlbHBlcjsKIGNsYXNzIFdpbmRvd3NEZWF0aFRl
c3Q7CitjbGFzcyBGdWNoc2lhRGVhdGhUZXN0OwogY2xhc3MgVW5pdFRlc3RJbXBsKiBHZXRVbml0
VGVzdEltcGwoKTsKIHZvaWQgUmVwb3J0RmFpbHVyZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0
UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLWNsYXNzIFByZXR0eVVuaXRUZXN0UmVzdWx0
UHJpbnRlcjsKLWNsYXNzIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjsKLQotLy8gQ29udmVydHMg
YSBzdHJlYW1hYmxlIHZhbHVlIHRvIGEgU3RyaW5nLiAgQSBOVUxMIHBvaW50ZXIgaXMKLS8vIGNv
bnZlcnRlZCB0byAiKG51bGwpIi4gIFdoZW4gdGhlIGlucHV0IHZhbHVlIGlzIGEgOjpzdHJpbmcs
Ci0vLyA6OnN0ZDo6c3RyaW5nLCA6OndzdHJpbmcsIG9yIDo6c3RkOjp3c3RyaW5nIG9iamVjdCwg
ZWFjaCBOVUwKLS8vIGNoYXJhY3RlciBpbiBpdCBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgotLy8g
RGVjbGFyZWQgaW4gZ3Rlc3QtaW50ZXJuYWwuaCBidXQgZGVmaW5lZCBoZXJlLCBzbyB0aGF0IGl0
IGhhcyBhY2Nlc3MKLS8vIHRvIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBNZXNzYWdlIGNsYXNzLCBy
ZXF1aXJlZCBieSB0aGUgQVJNCi0vLyBjb21waWxlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
U3RyaW5nIFN0cmVhbWFibGVUb1N0cmluZyhjb25zdCBUJiBzdHJlYW1hYmxlKSB7Ci0gIHJldHVy
biAoTWVzc2FnZSgpIDw8IHN0cmVhbWFibGUpLkdldFN0cmluZygpOwotfQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpOwogCiB9
ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAorLy8gVGhlIGZyaWVuZCByZWxhdGlvbnNoaXAgb2Yg
c29tZSBvZiB0aGVzZSBjbGFzc2VzIGlzIGN5Y2xpYy4KKy8vIElmIHdlIGRvbid0IGZvcndhcmQg
ZGVjbGFyZSB0aGVtIHRoZSBjb21waWxlciBtaWdodCBjb25mdXNlIHRoZSBjbGFzc2VzCisvLyBp
biBmcmllbmRzaGlwIGNsYXVzZXMgd2l0aCBzYW1lIG5hbWVkIGNsYXNzZXMgb24gdGhlIHNjb3Bl
LgorY2xhc3MgVGVzdDsKK2NsYXNzIFRlc3RDYXNlOworY2xhc3MgVGVzdEluZm87CitjbGFzcyBV
bml0VGVzdDsKKwogLy8gQSBjbGFzcyBmb3IgaW5kaWNhdGluZyB3aGV0aGVyIGFuIGFzc2VydGlv
biB3YXMgc3VjY2Vzc2Z1bC4gIFdoZW4KIC8vIHRoZSBhc3NlcnRpb24gd2Fzbid0IHN1Y2Nlc3Nm
dWwsIHRoZSBBc3NlcnRpb25SZXN1bHQgb2JqZWN0CiAvLyByZW1lbWJlcnMgYSBub24tZW1wdHkg
bWVzc2FnZSB0aGF0IGRlc2NyaWJlcyBob3cgaXQgZmFpbGVkLgpAQCAtMjU2LDggKzI3NSwzNSBA
QCBjbGFzcyBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCB7CiAgIC8vIENvcHkgY29uc3RydWN0
b3IuCiAgIC8vIFVzZWQgaW4gRVhQRUNUX1RSVUUvRkFMU0UoYXNzZXJ0aW9uX3Jlc3VsdCkuCiAg
IEFzc2VydGlvblJlc3VsdChjb25zdCBBc3NlcnRpb25SZXN1bHQmIG90aGVyKTsKKworI2lmIGRl
ZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSIDwgMTkxMAorICBHVEVTVF9ESVNBQkxFX01TQ19X
QVJOSU5HU19QVVNIXyg0ODAwIC8qIGZvcmNpbmcgdmFsdWUgdG8gYm9vbCAqLykKKyNlbmRpZgor
CiAgIC8vIFVzZWQgaW4gdGhlIEVYUEVDVF9UUlVFL0ZBTFNFKGJvb2xfZXhwcmVzc2lvbikuCi0g
IGV4cGxpY2l0IEFzc2VydGlvblJlc3VsdChib29sIHN1Y2Nlc3MpIDogc3VjY2Vzc18oc3VjY2Vz
cykge30KKyAgLy8KKyAgLy8gVCBtdXN0IGJlIGNvbnRleHR1YWxseSBjb252ZXJ0aWJsZSB0byBi
b29sLgorICAvLworICAvLyBUaGUgc2Vjb25kIHBhcmFtZXRlciBwcmV2ZW50cyB0aGlzIG92ZXJs
b2FkIGZyb20gYmVpbmcgY29uc2lkZXJlZCBpZgorICAvLyB0aGUgYXJndW1lbnQgaXMgaW1wbGlj
aXRseSBjb252ZXJ0aWJsZSB0byBBc3NlcnRpb25SZXN1bHQuIEluIHRoYXQgY2FzZQorICAvLyB3
ZSB3YW50IEFzc2VydGlvblJlc3VsdCdzIGNvcHkgY29uc3RydWN0b3IgdG8gYmUgdXNlZC4KKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIGV4cGxpY2l0IEFzc2VydGlvblJlc3VsdCgKKyAgICAg
IGNvbnN0IFQmIHN1Y2Nlc3MsCisgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RW5hYmxlSWY8Cisg
ICAgICAgICAgIWludGVybmFsOjpJbXBsaWNpdGx5Q29udmVydGlibGU8VCwgQXNzZXJ0aW9uUmVz
dWx0Pjo6dmFsdWU+Ojp0eXBlKgorICAgICAgICAgIC8qZW5hYmxlciovID0gTlVMTCkKKyAgICAg
IDogc3VjY2Vzc18oc3VjY2Vzcykge30KKworI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0Nf
VkVSIDwgMTkxMAorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKyNlbmRpZgor
CisgIC8vIEFzc2lnbm1lbnQgb3BlcmF0b3IuCisgIEFzc2VydGlvblJlc3VsdCYgb3BlcmF0b3I9
KEFzc2VydGlvblJlc3VsdCBvdGhlcikgeworICAgIHN3YXAob3RoZXIpOworICAgIHJldHVybiAq
dGhpczsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGFzc2VydGlvbiBzdWNjZWVk
ZWQuCiAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBzdWNjZXNzXzsgfSAgLy8gTk9M
SU5UCkBAIC0yNzAsMjAgKzMxNiwzNiBAQCBjbGFzcyBHVEVTVF9BUElfIEFzc2VydGlvblJlc3Vs
dCB7CiAgIC8vIGFzc2VydGlvbidzIGV4cGVjdGF0aW9uKS4gV2hlbiBub3RoaW5nIGhhcyBiZWVu
IHN0cmVhbWVkIGludG8gdGhlCiAgIC8vIG9iamVjdCwgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcu
CiAgIGNvbnN0IGNoYXIqIG1lc3NhZ2UoKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1lc3NhZ2VfLmdl
dCgpICE9IE5VTEwgJiYgbWVzc2FnZV8tPmNfc3RyKCkgIT0gTlVMTCA/Ci0gICAgICAgICAgIG1l
c3NhZ2VfLT5jX3N0cigpIDogIiI7CisgICAgcmV0dXJuIG1lc3NhZ2VfLmdldCgpICE9IE5VTEwg
PyAgbWVzc2FnZV8tPmNfc3RyKCkgOiAiIjsKICAgfQotICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5j
b20pOiBSZW1vdmUgdGhpcyBhZnRlciBtYWtpbmcgc3VyZSBubyBjbGllbnRzIHVzZSBpdC4KKyAg
Ly8gRklYTUU6IFJlbW92ZSB0aGlzIGFmdGVyIG1ha2luZyBzdXJlIG5vIGNsaWVudHMgdXNlIGl0
LgogICAvLyBEZXByZWNhdGVkOyBwbGVhc2UgdXNlIG1lc3NhZ2UoKSBpbnN0ZWFkLgogICBjb25z
dCBjaGFyKiBmYWlsdXJlX21lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtZXNzYWdlKCk7IH0KIAog
ICAvLyBTdHJlYW1zIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSBpbnRvIHRoaXMgb2JqZWN0Lgot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gQXNzZXJ0aW9uUmVzdWx0JiBvcGVyYXRvcjw8KGNvbnN0
IFQmIHZhbHVlKTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IEFzc2VydGlvblJlc3VsdCYgb3Bl
cmF0b3I8PChjb25zdCBUJiB2YWx1ZSkgeworICAgIEFwcGVuZE1lc3NhZ2UoTWVzc2FnZSgpIDw8
IHZhbHVlKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICAvLyBBbGxvd3Mgc3RyZWFtaW5n
IGJhc2ljIG91dHB1dCBtYW5pcHVsYXRvcnMgc3VjaCBhcyBlbmRsIG9yIGZsdXNoIGludG8KKyAg
Ly8gdGhpcyBvYmplY3QuCisgIEFzc2VydGlvblJlc3VsdCYgb3BlcmF0b3I8PCgKKyAgICAgIDo6
c3RkOjpvc3RyZWFtJiAoKmJhc2ljX21hbmlwdWxhdG9yKSg6OnN0ZDo6b3N0cmVhbSYgc3RyZWFt
KSkgeworICAgIEFwcGVuZE1lc3NhZ2UoTWVzc2FnZSgpIDw8IGJhc2ljX21hbmlwdWxhdG9yKTsK
KyAgICByZXR1cm4gKnRoaXM7CisgIH0KIAogIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0
aW9uIC0gd2Ugd2FudCBBc3NlcnRpb25SZXN1bHQgdG8gYmUKLSAgLy8gY29weS1jb25zdHJ1Y3Rp
YmxlIGJ1dCBub3QgYXNzaWduYWJsZS4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQXNzZXJ0aW9u
UmVzdWx0JiBvdGhlcik7CisgIC8vIEFwcGVuZHMgdGhlIGNvbnRlbnRzIG9mIG1lc3NhZ2UgdG8g
bWVzc2FnZV8uCisgIHZvaWQgQXBwZW5kTWVzc2FnZShjb25zdCBNZXNzYWdlJiBhX21lc3NhZ2Up
IHsKKyAgICBpZiAobWVzc2FnZV8uZ2V0KCkgPT0gTlVMTCkKKyAgICAgIG1lc3NhZ2VfLnJlc2V0
KG5ldyA6OnN0ZDo6c3RyaW5nKTsKKyAgICBtZXNzYWdlXy0+YXBwZW5kKGFfbWVzc2FnZS5HZXRT
dHJpbmcoKS5jX3N0cigpKTsKKyAgfQorCisgIC8vIFN3YXAgdGhlIGNvbnRlbnRzIG9mIHRoaXMg
QXNzZXJ0aW9uUmVzdWx0IHdpdGggb3RoZXIuCisgIHZvaWQgc3dhcChBc3NlcnRpb25SZXN1bHQm
IG90aGVyKTsKIAogICAvLyBTdG9yZXMgcmVzdWx0IG9mIHRoZSBhc3NlcnRpb24gcHJlZGljYXRl
LgogICBib29sIHN1Y2Nlc3NfOwpAQCAtMjkxLDE5ICszNTMsOCBAQCBjbGFzcyBHVEVTVF9BUElf
IEFzc2VydGlvblJlc3VsdCB7CiAgIC8vIGNvbnN0cnVjdCBpcyBub3Qgc2F0aXNmaWVkIHdpdGgg
dGhlIHByZWRpY2F0ZSdzIG91dGNvbWUuCiAgIC8vIFJlZmVyZW5jZWQgdmlhIGEgcG9pbnRlciB0
byBhdm9pZCB0YWtpbmcgdG9vIG11Y2ggc3RhY2sgZnJhbWUgc3BhY2UKICAgLy8gd2l0aCB0ZXN0
IGFzc2VydGlvbnMuCi0gIGludGVybmFsOjpzY29wZWRfcHRyPGludGVybmFsOjpTdHJpbmc+IG1l
c3NhZ2VfOwotfTsgIC8vIGNsYXNzIEFzc2VydGlvblJlc3VsdAotCi0vLyBTdHJlYW1zIGEgY3Vz
dG9tIGZhaWx1cmUgbWVzc2FnZSBpbnRvIHRoaXMgb2JqZWN0LgotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1Bc3NlcnRpb25SZXN1bHQmIEFzc2VydGlvblJlc3VsdDo6b3BlcmF0b3I8PChjb25zdCBU
JiB2YWx1ZSkgewotICBNZXNzYWdlIG1zZzsKLSAgaWYgKG1lc3NhZ2VfLmdldCgpICE9IE5VTEwp
Ci0gICAgbXNnIDw8ICptZXNzYWdlXzsKLSAgbXNnIDw8IHZhbHVlOwotICBtZXNzYWdlXy5yZXNl
dChuZXcgaW50ZXJuYWw6OlN0cmluZyhtc2cuR2V0U3RyaW5nKCkpKTsKLSAgcmV0dXJuICp0aGlz
OwotfQorICBpbnRlcm5hbDo6c2NvcGVkX3B0cjwgOjpzdGQ6OnN0cmluZz4gbWVzc2FnZV87Cit9
OwogCiAvLyBNYWtlcyBhIHN1Y2Nlc3NmdWwgYXNzZXJ0aW9uIHJlc3VsdC4KIEdURVNUX0FQSV8g
QXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvblN1Y2Nlc3MoKTsKQEAgLTMxNSw2ICszNjYsMTUgQEAg
R1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uRmFpbHVyZSgpOwogLy8gRGVwcmVj
YXRlZDsgdXNlIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBtc2cuCiBHVEVTVF9BUElfIEFzc2VydGlv
blJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKGNvbnN0IE1lc3NhZ2UmIG1zZyk7CiAKK30gIC8vIG5h
bWVzcGFjZSB0ZXN0aW5nCisKKy8vIEluY2x1ZGVzIHRoZSBhdXRvLWdlbmVyYXRlZCBoZWFkZXIg
dGhhdCBpbXBsZW1lbnRzIGEgZmFtaWx5IG9mIGdlbmVyaWMKKy8vIHByZWRpY2F0ZSBhc3NlcnRp
b24gbWFjcm9zLiBUaGlzIGluY2x1ZGUgY29tZXMgbGF0ZSBiZWNhdXNlIGl0IHJlbGllcyBvbgor
Ly8gQVBJcyBkZWNsYXJlZCBhYm92ZS4KKyNpbmNsdWRlICJndGVzdC9ndGVzdF9wcmVkX2ltcGwu
aCIKKworbmFtZXNwYWNlIHRlc3RpbmcgeworCiAvLyBUaGUgYWJzdHJhY3QgY2xhc3MgdGhhdCBh
bGwgdGVzdHMgaW5oZXJpdCBmcm9tLgogLy8KIC8vIEluIEdvb2dsZSBUZXN0LCBhIHVuaXQgdGVz
dCBwcm9ncmFtIGNvbnRhaW5zIG9uZSBvciBtYW55IFRlc3RDYXNlcywgYW5kCkBAIC0zMjUsMTIg
KzM4NSwxMiBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKGNv
bnN0IE1lc3NhZ2UmIG1zZyk7CiAvLyB0aGlzIGZvciB5b3UuCiAvLwogLy8gVGhlIG9ubHkgdGlt
ZSB5b3UgZGVyaXZlIGZyb20gVGVzdCBpcyB3aGVuIGRlZmluaW5nIGEgdGVzdCBmaXh0dXJlCi0v
LyB0byBiZSB1c2VkIGEgVEVTVF9GLiAgRm9yIGV4YW1wbGU6CisvLyB0byBiZSB1c2VkIGluIGEg
VEVTVF9GLiAgRm9yIGV4YW1wbGU6CiAvLwogLy8gICBjbGFzcyBGb29UZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgewogLy8gICAgcHJvdGVjdGVkOgotLy8gICAgIHZpcnR1YWwgdm9pZCBTZXRV
cCgpIHsgLi4uIH0KLS8vICAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7IC4uLiB9CisvLyAg
ICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIHsgLi4uIH0KKy8vICAgICB2b2lkIFRlYXJEb3duKCkg
b3ZlcnJpZGUgeyAuLi4gfQogLy8gICAgIC4uLgogLy8gICB9OwogLy8KQEAgLTM0MCw3ICs0MDAs
NyBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKGNvbnN0IE1l
c3NhZ2UmIG1zZyk7CiAvLyBUZXN0IGlzIG5vdCBjb3B5YWJsZS4KIGNsYXNzIEdURVNUX0FQSV8g
VGVzdCB7CiAgcHVibGljOgotICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbDsK
KyAgZnJpZW5kIGNsYXNzIFRlc3RJbmZvOwogCiAgIC8vIERlZmluZXMgdHlwZXMgZm9yIHBvaW50
ZXJzIHRvIGZ1bmN0aW9ucyB0aGF0IHNldCB1cCBhbmQgdGVhciBkb3duCiAgIC8vIGEgdGVzdCBj
YXNlLgpAQCAtMzc2LDIwICs0MzYsMjEgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0IHsKICAgLy8g
bm9uLWZhdGFsKSBmYWlsdXJlLgogICBzdGF0aWMgYm9vbCBIYXNGYWlsdXJlKCkgeyByZXR1cm4g
SGFzRmF0YWxGYWlsdXJlKCkgfHwgSGFzTm9uZmF0YWxGYWlsdXJlKCk7IH0KIAotICAvLyBMb2dz
IGEgcHJvcGVydHkgZm9yIHRoZSBjdXJyZW50IHRlc3QuICBPbmx5IHRoZSBsYXN0IHZhbHVlIGZv
ciBhIGdpdmVuCi0gIC8vIGtleSBpcyByZW1lbWJlcmVkLgotICAvLyBUaGVzZSBhcmUgcHVibGlj
IHN0YXRpYyBzbyB0aGV5IGNhbiBiZSBjYWxsZWQgZnJvbSB1dGlsaXR5IGZ1bmN0aW9ucwotICAv
LyB0aGF0IGFyZSBub3QgbWVtYmVycyBvZiB0aGUgdGVzdCBmaXh0dXJlLgotICAvLyBUaGUgYXJn
dW1lbnRzIGFyZSBjb25zdCBjaGFyKiBpbnN0ZWFkIHN0cmluZ3MsIGFzIEdvb2dsZSBUZXN0IGlz
IHVzZWQKLSAgLy8gb24gcGxhdGZvcm1zIHdoZXJlIHN0cmluZyBkb2Vzbid0IGNvbXBpbGUuCi0g
IC8vCi0gIC8vIE5vdGUgdGhhdCBhIGRyaXZpbmcgY29uc2lkZXJhdGlvbiBmb3IgdGhlc2UgUmVj
b3JkUHJvcGVydHkgbWV0aG9kcwotICAvLyB3YXMgdG8gcHJvZHVjZSB4bWwgb3V0cHV0IHN1aXRl
ZCB0byB0aGUgR3JlZW5zcGFuIGNoYXJ0aW5nIHV0aWxpdHksCi0gIC8vIHdoaWNoIGF0IHByZXNl
bnQgd2lsbCBvbmx5IGNoYXJ0IHZhbHVlcyB0aGF0IGZpdCBpbiBhIDMyLWJpdCBpbnQuIEl0Ci0g
IC8vIGlzIHRoZSB1c2VyJ3MgcmVzcG9uc2liaWxpdHkgdG8gcmVzdHJpY3QgdGhlaXIgdmFsdWVz
IHRvIDMyLWJpdCBpbnRzCi0gIC8vIGlmIHRoZXkgaW50ZW5kIHRoZW0gdG8gYmUgdXNlZCB3aXRo
IEdyZWVuc3Bhbi4KLSAgc3RhdGljIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5
LCBjb25zdCBjaGFyKiB2YWx1ZSk7Ci0gIHN0YXRpYyB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0
IGNoYXIqIGtleSwgaW50IHZhbHVlKTsKKyAgLy8gTG9ncyBhIHByb3BlcnR5IGZvciB0aGUgY3Vy
cmVudCB0ZXN0LCB0ZXN0IGNhc2UsIG9yIGZvciB0aGUgZW50aXJlCisgIC8vIGludm9jYXRpb24g
b2YgdGhlIHRlc3QgcHJvZ3JhbSB3aGVuIHVzZWQgb3V0c2lkZSBvZiB0aGUgY29udGV4dCBvZiBh
CisgIC8vIHRlc3QgY2FzZS4gIE9ubHkgdGhlIGxhc3QgdmFsdWUgZm9yIGEgZ2l2ZW4ga2V5IGlz
IHJlbWVtYmVyZWQuICBUaGVzZQorICAvLyBhcmUgcHVibGljIHN0YXRpYyBzbyB0aGV5IGNhbiBi
ZSBjYWxsZWQgZnJvbSB1dGlsaXR5IGZ1bmN0aW9ucyB0aGF0IGFyZQorICAvLyBub3QgbWVtYmVy
cyBvZiB0aGUgdGVzdCBmaXh0dXJlLiAgQ2FsbHMgdG8gUmVjb3JkUHJvcGVydHkgbWFkZSBkdXJp
bmcKKyAgLy8gbGlmZXNwYW4gb2YgdGhlIHRlc3QgKGZyb20gdGhlIG1vbWVudCBpdHMgY29uc3Ry
dWN0b3Igc3RhcnRzIHRvIHRoZQorICAvLyBtb21lbnQgaXRzIGRlc3RydWN0b3IgZmluaXNoZXMp
IHdpbGwgYmUgb3V0cHV0IGluIFhNTCBhcyBhdHRyaWJ1dGVzIG9mCisgIC8vIHRoZSA8dGVzdGNh
c2U+IGVsZW1lbnQuICBQcm9wZXJ0aWVzIHJlY29yZGVkIGZyb20gZml4dHVyZSdzCisgIC8vIFNl
dFVwVGVzdENhc2Ugb3IgVGVhckRvd25UZXN0Q2FzZSBhcmUgbG9nZ2VkIGFzIGF0dHJpYnV0ZXMg
b2YgdGhlCisgIC8vIGNvcnJlc3BvbmRpbmcgPHRlc3RzdWl0ZT4gZWxlbWVudC4gIENhbGxzIHRv
IFJlY29yZFByb3BlcnR5IG1hZGUgaW4gdGhlCisgIC8vIGdsb2JhbCBjb250ZXh0IChiZWZvcmUg
b3IgYWZ0ZXIgaW52b2NhdGlvbiBvZiBSVU5fQUxMX1RFU1RTIGFuZCBmcm9tCisgIC8vIFNldFVw
L1RlYXJEb3duIG1ldGhvZCBvZiBFbnZpcm9ubWVudCBvYmplY3RzIHJlZ2lzdGVyZWQgd2l0aCBH
b29nbGUKKyAgLy8gVGVzdCkgd2lsbCBiZSBvdXRwdXQgYXMgYXR0cmlidXRlcyBvZiB0aGUgPHRl
c3RzdWl0ZXM+IGVsZW1lbnQuCisgIHN0YXRpYyB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0IHN0
ZDo6c3RyaW5nJiBrZXksIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSk7CisgIHN0YXRpYyB2b2lk
IFJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGludCB2YWx1ZSk7CiAKICBw
cm90ZWN0ZWQ6CiAgIC8vIENyZWF0ZXMgYSBUZXN0IG9iamVjdC4KQEAgLTQxNywyMCArNDc4LDIz
IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdCB7CiAgIC8vIFNldHMgdXAsIGV4ZWN1dGVzLCBhbmQg
dGVhcnMgZG93biB0aGUgdGVzdC4KICAgdm9pZCBSdW4oKTsKIAotICAvLyBVc2VzIGEgR1Rlc3RG
bGFnU2F2ZXIgdG8gc2F2ZSBhbmQgcmVzdG9yZSBhbGwgR29vZ2xlIFRlc3QgZmxhZ3MuCi0gIGNv
bnN0IGludGVybmFsOjpHVGVzdEZsYWdTYXZlciogY29uc3QgZ3Rlc3RfZmxhZ19zYXZlcl87Cisg
IC8vIERlbGV0ZXMgc2VsZi4gIFdlIGRlbGliZXJhdGVseSBwaWNrIGFuIHVudXN1YWwgbmFtZSBm
b3IgdGhpcworICAvLyBpbnRlcm5hbCBtZXRob2QgdG8gYXZvaWQgY2xhc2hpbmcgd2l0aCBuYW1l
cyB1c2VkIGluIHVzZXIgVEVTVHMuCisgIHZvaWQgRGVsZXRlU2VsZl8oKSB7IGRlbGV0ZSB0aGlz
OyB9CiAKLSAgLy8gT2Z0ZW4gYSB1c2VyIG1pcy1zcGVsbHMgU2V0VXAoKSBhcyBTZXR1cCgpIGFu
ZCBzcGVuZHMgYSBsb25nIHRpbWUKKyAgY29uc3QgaW50ZXJuYWw6OnNjb3BlZF9wdHI8IEdURVNU
X0ZMQUdfU0FWRVJfID4gZ3Rlc3RfZmxhZ19zYXZlcl87CisKKyAgLy8gT2Z0ZW4gYSB1c2VyIG1p
c3NwZWxscyBTZXRVcCgpIGFzIFNldHVwKCkgYW5kIHNwZW5kcyBhIGxvbmcgdGltZQogICAvLyB3
b25kZXJpbmcgd2h5IGl0IGlzIG5ldmVyIGNhbGxlZCBieSBHb29nbGUgVGVzdC4gIFRoZSBkZWNs
YXJhdGlvbiBvZgogICAvLyB0aGUgZm9sbG93aW5nIG1ldGhvZCBpcyBzb2xlbHkgZm9yIGNhdGNo
aW5nIHN1Y2ggYW4gZXJyb3IgYXQKICAgLy8gY29tcGlsZSB0aW1lOgogICAvLwogICAvLyAgIC0g
VGhlIHJldHVybiB0eXBlIGlzIGRlbGliZXJhdGVseSBjaG9zZW4gdG8gYmUgbm90IHZvaWQsIHNv
IGl0Ci0gIC8vICAgd2lsbCBiZSBhIGNvbmZsaWN0IGlmIGEgdXNlciBkZWNsYXJlcyB2b2lkIFNl
dHVwKCkgaW4gaGlzIHRlc3QKLSAgLy8gICBmaXh0dXJlLgorICAvLyAgIHdpbGwgYmUgYSBjb25m
bGljdCBpZiB2b2lkIFNldHVwKCkgaXMgZGVjbGFyZWQgaW4gdGhlIHVzZXIncworICAvLyAgIHRl
c3QgZml4dHVyZS4KICAgLy8KICAgLy8gICAtIFRoaXMgbWV0aG9kIGlzIHByaXZhdGUsIHNvIGl0
IHdpbGwgYmUgYW5vdGhlciBjb21waWxlciBlcnJvcgotICAvLyAgIGlmIGEgdXNlciBjYWxscyBp
dCBmcm9tIGhpcyB0ZXN0IGZpeHR1cmUuCisgIC8vICAgaWYgdGhlIG1ldGhvZCBpcyBjYWxsZWQg
ZnJvbSB0aGUgdXNlcidzIHRlc3QgZml4dHVyZS4KICAgLy8KICAgLy8gRE8gTk9UIE9WRVJSSURF
IFRISVMgRlVOQ1RJT04uCiAgIC8vCkBAIC00NTQsNyArNTE4LDcgQEAgY2xhc3MgVGVzdFByb3Bl
cnR5IHsKICAgLy8gQyd0b3IuICBUZXN0UHJvcGVydHkgZG9lcyBOT1QgaGF2ZSBhIGRlZmF1bHQg
Y29uc3RydWN0b3IuCiAgIC8vIEFsd2F5cyB1c2UgdGhpcyBjb25zdHJ1Y3RvciAod2l0aCBwYXJh
bWV0ZXJzKSB0byBjcmVhdGUgYQogICAvLyBUZXN0UHJvcGVydHkgb2JqZWN0LgotICBUZXN0UHJv
cGVydHkoY29uc3QgY2hhciogYV9rZXksIGNvbnN0IGNoYXIqIGFfdmFsdWUpIDoKKyAgVGVzdFBy
b3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBhX2tleSwgY29uc3Qgc3RkOjpzdHJpbmcmIGFfdmFs
dWUpIDoKICAgICBrZXlfKGFfa2V5KSwgdmFsdWVfKGFfdmFsdWUpIHsKICAgfQogCkBAIC00Njks
MTUgKzUzMywxNSBAQCBjbGFzcyBUZXN0UHJvcGVydHkgewogICB9CiAKICAgLy8gU2V0cyBhIG5l
dyB2YWx1ZSwgb3ZlcnJpZGluZyB0aGUgb25lIHN1cHBsaWVkIGluIHRoZSBjb25zdHJ1Y3Rvci4K
LSAgdm9pZCBTZXRWYWx1ZShjb25zdCBjaGFyKiBuZXdfdmFsdWUpIHsKKyAgdm9pZCBTZXRWYWx1
ZShjb25zdCBzdGQ6OnN0cmluZyYgbmV3X3ZhbHVlKSB7CiAgICAgdmFsdWVfID0gbmV3X3ZhbHVl
OwogICB9CiAKICBwcml2YXRlOgogICAvLyBUaGUga2V5IHN1cHBsaWVkIGJ5IHRoZSB1c2VyLgot
ICBpbnRlcm5hbDo6U3RyaW5nIGtleV87CisgIHN0ZDo6c3RyaW5nIGtleV87CiAgIC8vIFRoZSB2
YWx1ZSBzdXBwbGllZCBieSB0aGUgdXNlci4KLSAgaW50ZXJuYWw6OlN0cmluZyB2YWx1ZV87Cisg
IHN0ZDo6c3RyaW5nIHZhbHVlXzsKIH07CiAKIC8vIFRoZSByZXN1bHQgb2YgYSBzaW5nbGUgVGVz
dC4gIFRoaXMgaW5jbHVkZXMgYSBsaXN0IG9mCkBAIC01MTYsOSArNTgwLDggQEAgY2xhc3MgR1RF
U1RfQVBJXyBUZXN0UmVzdWx0IHsKICAgLy8gUmV0dXJucyB0aGUgZWxhcHNlZCB0aW1lLCBpbiBt
aWxsaXNlY29uZHMuCiAgIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3RpbWUoKSBjb25zdCB7IHJldHVy
biBlbGFwc2VkX3RpbWVfOyB9CiAKLSAgLy8gUmV0dXJucyB0aGUgaS10aCB0ZXN0IHBhcnQgcmVz
dWx0IGFtb25nIGFsbCB0aGUgcmVzdWx0cy4gaSBjYW4gcmFuZ2UKLSAgLy8gZnJvbSAwIHRvIHRl
c3RfcHJvcGVydHlfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIGFib3J0
cwotICAvLyB0aGUgcHJvZ3JhbS4KKyAgLy8gUmV0dXJucyB0aGUgaS10aCB0ZXN0IHBhcnQgcmVz
dWx0IGFtb25nIGFsbCB0aGUgcmVzdWx0cy4gaSBjYW4gcmFuZ2UgZnJvbSAwCisgIC8vIHRvIHRv
dGFsX3BhcnRfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIGFib3J0cyB0
aGUgcHJvZ3JhbS4KICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIEdldFRlc3RQYXJ0UmVzdWx0KGlu
dCBpKSBjb25zdDsKIAogICAvLyBSZXR1cm5zIHRoZSBpLXRoIHRlc3QgcHJvcGVydHkuIGkgY2Fu
IHJhbmdlIGZyb20gMCB0bwpAQCAtNTI4LDEzICs1OTEsMTQgQEAgY2xhc3MgR1RFU1RfQVBJXyBU
ZXN0UmVzdWx0IHsKIAogIHByaXZhdGU6CiAgIGZyaWVuZCBjbGFzcyBUZXN0SW5mbzsKKyAgZnJp
ZW5kIGNsYXNzIFRlc3RDYXNlOwogICBmcmllbmQgY2xhc3MgVW5pdFRlc3Q7CiAgIGZyaWVuZCBj
bGFzcyBpbnRlcm5hbDo6RGVmYXVsdEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI7CiAgIGZy
aWVuZCBjbGFzcyBpbnRlcm5hbDo6RXhlY0RlYXRoVGVzdDsKLSAgZnJpZW5kIGNsYXNzIGludGVy
bmFsOjpUZXN0SW5mb0ltcGw7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VGVzdFJlc3VsdEFj
Y2Vzc29yOwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbDsKICAgZnJpZW5k
IGNsYXNzIGludGVybmFsOjpXaW5kb3dzRGVhdGhUZXN0OworICBmcmllbmQgY2xhc3MgaW50ZXJu
YWw6OkZ1Y2hzaWFEZWF0aFRlc3Q7CiAKICAgLy8gR2V0cyB0aGUgdmVjdG9yIG9mIFRlc3RQYXJ0
UmVzdWx0cy4KICAgY29uc3Qgc3RkOjp2ZWN0b3I8VGVzdFBhcnRSZXN1bHQ+JiB0ZXN0X3BhcnRf
cmVzdWx0cygpIGNvbnN0IHsKQEAgLTU1MywxMyArNjE3LDE2IEBAIGNsYXNzIEdURVNUX0FQSV8g
VGVzdFJlc3VsdCB7CiAgIC8vIGEgbm9uLWZhdGFsIGZhaWx1cmUgaWYgaW52YWxpZCAoZS5nLiwg
aWYgaXQgY29uZmxpY3RzIHdpdGggcmVzZXJ2ZWQKICAgLy8ga2V5IG5hbWVzKS4gSWYgYSBwcm9w
ZXJ0eSBpcyBhbHJlYWR5IHJlY29yZGVkIGZvciB0aGUgc2FtZSBrZXksIHRoZQogICAvLyB2YWx1
ZSB3aWxsIGJlIHVwZGF0ZWQsIHJhdGhlciB0aGFuIHN0b3JpbmcgbXVsdGlwbGUgdmFsdWVzIGZv
ciB0aGUgc2FtZQotICAvLyBrZXkuCi0gIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3QgVGVzdFBy
b3BlcnR5JiB0ZXN0X3Byb3BlcnR5KTsKKyAgLy8ga2V5LiAgeG1sX2VsZW1lbnQgc3BlY2lmaWVz
IHRoZSBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvcGVydHkgaXMgYmVpbmcKKyAgLy8gcmVjb3Jk
ZWQgYW5kIGlzIHVzZWQgZm9yIHZhbGlkYXRpb24uCisgIHZvaWQgUmVjb3JkUHJvcGVydHkoY29u
c3Qgc3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSk7CiAKICAgLy8gQWRkcyBhIGZhaWx1cmUgaWYg
dGhlIGtleSBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBvZiBHb29nbGUgVGVzdAogICAvLyB0ZXN0
Y2FzZSB0YWdzLiAgUmV0dXJucyB0cnVlIGlmIHRoZSBwcm9wZXJ0eSBpcyB2YWxpZC4KLSAgLy8g
VE9ETyhydXNzcik6IFZhbGlkYXRlIGF0dHJpYnV0ZSBuYW1lcyBhcmUgbGVnYWwgYW5kIGh1bWFu
IHJlYWRhYmxlLgotICBzdGF0aWMgYm9vbCBWYWxpZGF0ZVRlc3RQcm9wZXJ0eShjb25zdCBUZXN0
UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpOworICAvLyBGSVhNRTogVmFsaWRhdGUgYXR0cmlidXRl
IG5hbWVzIGFyZSBsZWdhbCBhbmQgaHVtYW4gcmVhZGFibGUuCisgIHN0YXRpYyBib29sIFZhbGlk
YXRlVGVzdFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiB4bWxfZWxlbWVudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3Bl
cnR5KTsKIAogICAvLyBBZGRzIGEgdGVzdCBwYXJ0IHJlc3VsdCB0byB0aGUgbGlzdC4KICAgdm9p
ZCBBZGRUZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3Vs
dCk7CkBAIC02MTEsMjAgKzY3OCwzOSBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RJbmZvIHsKICAg
flRlc3RJbmZvKCk7CiAKICAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIG5hbWUuCi0gIGNvbnN0
IGNoYXIqIHRlc3RfY2FzZV9uYW1lKCkgY29uc3Q7CisgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9u
YW1lKCkgY29uc3QgeyByZXR1cm4gdGVzdF9jYXNlX25hbWVfLmNfc3RyKCk7IH0KIAogICAvLyBS
ZXR1cm5zIHRoZSB0ZXN0IG5hbWUuCi0gIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKKyAgY29u
c3QgY2hhciogbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG5hbWVfLmNfc3RyKCk7IH0KKworICAvLyBS
ZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdHlwZSwgb3IgTlVMTCBpZiB0aGlzIGlz
IG5vdCBhIHR5cGVkCisgIC8vIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisgIGNvbnN0
IGNoYXIqIHR5cGVfcGFyYW0oKSBjb25zdCB7CisgICAgaWYgKHR5cGVfcGFyYW1fLmdldCgpICE9
IE5VTEwpCisgICAgICByZXR1cm4gdHlwZV9wYXJhbV8tPmNfc3RyKCk7CisgICAgcmV0dXJuIE5V
TEw7CisgIH0KKworICAvLyBSZXR1cm5zIHRoZSB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2
YWx1ZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYgdGhpcworICAvLyBpcyBub3QgYSB2YWx1ZS1wYXJh
bWV0ZXJpemVkIHRlc3QuCisgIGNvbnN0IGNoYXIqIHZhbHVlX3BhcmFtKCkgY29uc3QgeworICAg
IGlmICh2YWx1ZV9wYXJhbV8uZ2V0KCkgIT0gTlVMTCkKKyAgICAgIHJldHVybiB2YWx1ZV9wYXJh
bV8tPmNfc3RyKCk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICAvLyBSZXR1cm5zIHRoZSBm
aWxlIG5hbWUgd2hlcmUgdGhpcyB0ZXN0IGlzIGRlZmluZWQuCisgIGNvbnN0IGNoYXIqIGZpbGUo
KSBjb25zdCB7IHJldHVybiBsb2NhdGlvbl8uZmlsZS5jX3N0cigpOyB9CiAKLSAgLy8gUmV0dXJu
cyB0aGUgdGVzdCBjYXNlIGNvbW1lbnQuCi0gIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9jb21tZW50
KCkgY29uc3Q7CisgIC8vIFJldHVybnMgdGhlIGxpbmUgd2hlcmUgdGhpcyB0ZXN0IGlzIGRlZmlu
ZWQuCisgIGludCBsaW5lKCkgY29uc3QgeyByZXR1cm4gbG9jYXRpb25fLmxpbmU7IH0KIAotICAv
LyBSZXR1cm5zIHRoZSB0ZXN0IGNvbW1lbnQuCi0gIGNvbnN0IGNoYXIqIGNvbW1lbnQoKSBjb25z
dDsKKyAgLy8gUmV0dXJuIHRydWUgaWYgdGhpcyB0ZXN0IHNob3VsZCBub3QgYmUgcnVuIGJlY2F1
c2UgaXQncyBpbiBhbm90aGVyIHNoYXJkLgorICBib29sIGlzX2luX2Fub3RoZXJfc2hhcmQoKSBj
b25zdCB7IHJldHVybiBpc19pbl9hbm90aGVyX3NoYXJkXzsgfQogCi0gIC8vIFJldHVybnMgdHJ1
ZSBpZiB0aGlzIHRlc3Qgc2hvdWxkIHJ1biwgdGhhdCBpcyBpZiB0aGUgdGVzdCBpcyBub3QgZGlz
YWJsZWQKLSAgLy8gKG9yIGl0IGlzIGRpc2FibGVkIGJ1dCB0aGUgYWxzb19ydW5fZGlzYWJsZWRf
dGVzdHMgZmxhZyBoYXMgYmVlbiBzcGVjaWZpZWQpCi0gIC8vIGFuZCBpdHMgZnVsbCBuYW1lIG1h
dGNoZXMgdGhlIHVzZXItc3BlY2lmaWVkIGZpbHRlci4KKyAgLy8gUmV0dXJucyB0cnVlIGlmIHRo
aXMgdGVzdCBzaG91bGQgcnVuLCB0aGF0IGlzIGlmIHRoZSB0ZXN0IGlzIG5vdAorICAvLyBkaXNh
YmxlZCAob3IgaXQgaXMgZGlzYWJsZWQgYnV0IHRoZSBhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBm
bGFnIGhhcworICAvLyBiZWVuIHNwZWNpZmllZCkgYW5kIGl0cyBmdWxsIG5hbWUgbWF0Y2hlcyB0
aGUgdXNlci1zcGVjaWZpZWQgZmlsdGVyLgogICAvLwogICAvLyBHb29nbGUgVGVzdCBhbGxvd3Mg
dGhlIHVzZXIgdG8gZmlsdGVyIHRoZSB0ZXN0cyBieSB0aGVpciBmdWxsIG5hbWVzLgogICAvLyBU
aGUgZnVsbCBuYW1lIG9mIGEgdGVzdCBCYXIgaW4gdGVzdCBjYXNlIEZvbyBpcyBkZWZpbmVkIGFz
CkBAIC02MzgsMTAgKzcyNCwxNyBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RJbmZvIHsKICAgLy8K
ICAgLy8gRm9yIGV4YW1wbGUsICpBKjpGb28uKiBpcyBhIGZpbHRlciB0aGF0IG1hdGNoZXMgYW55
IHN0cmluZyB0aGF0CiAgIC8vIGNvbnRhaW5zIHRoZSBjaGFyYWN0ZXIgJ0EnIG9yIHN0YXJ0cyB3
aXRoICJGb28uIi4KLSAgYm9vbCBzaG91bGRfcnVuKCkgY29uc3Q7CisgIGJvb2wgc2hvdWxkX3J1
bigpIGNvbnN0IHsgcmV0dXJuIHNob3VsZF9ydW5fOyB9CisKKyAgLy8gUmV0dXJucyB0cnVlIGlm
ZiB0aGlzIHRlc3Qgd2lsbCBhcHBlYXIgaW4gdGhlIFhNTCByZXBvcnQuCisgIGJvb2wgaXNfcmVw
b3J0YWJsZSgpIGNvbnN0IHsKKyAgICAvLyBUaGUgWE1MIHJlcG9ydCBpbmNsdWRlcyB0ZXN0cyBt
YXRjaGluZyB0aGUgZmlsdGVyLCBleGNsdWRpbmcgdGhvc2UKKyAgICAvLyBydW4gaW4gb3RoZXIg
c2hhcmRzLgorICAgIHJldHVybiBtYXRjaGVzX2ZpbHRlcl8gJiYgIWlzX2luX2Fub3RoZXJfc2hh
cmRfOworICB9CiAKICAgLy8gUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSB0ZXN0LgotICBjb25z
dCBUZXN0UmVzdWx0KiByZXN1bHQoKSBjb25zdDsKKyAgY29uc3QgVGVzdFJlc3VsdCogcmVzdWx0
KCkgY29uc3QgeyByZXR1cm4gJnJlc3VsdF87IH0KIAogIHByaXZhdGU6CiAjaWYgR1RFU1RfSEFT
X0RFQVRIX1RFU1QKQEAgLTY0OSwzNiArNzQyLDY1IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdElu
Zm8gewogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogICBmcmllbmQgY2xhc3MgVGVz
dDsKICAgZnJpZW5kIGNsYXNzIFRlc3RDYXNlOwotICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlRl
c3RJbmZvSW1wbDsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpVbml0VGVzdEltcGw7CisgIGZy
aWVuZCBjbGFzcyBpbnRlcm5hbDo6U3RyZWFtaW5nTGlzdGVuZXJUZXN0OwogICBmcmllbmQgVGVz
dEluZm8qIGludGVybmFsOjpNYWtlQW5kUmVnaXN0ZXJUZXN0SW5mbygKLSAgICAgIGNvbnN0IGNo
YXIqIHRlc3RfY2FzZV9uYW1lLCBjb25zdCBjaGFyKiBuYW1lLAotICAgICAgY29uc3QgY2hhciog
dGVzdF9jYXNlX2NvbW1lbnQsIGNvbnN0IGNoYXIqIGNvbW1lbnQsCisgICAgICBjb25zdCBjaGFy
KiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICBjb25zdCBj
aGFyKiB0eXBlX3BhcmFtLAorICAgICAgY29uc3QgY2hhciogdmFsdWVfcGFyYW0sCisgICAgICBp
bnRlcm5hbDo6Q29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24sCiAgICAgICBpbnRlcm5hbDo6VHlw
ZUlkIGZpeHR1cmVfY2xhc3NfaWQsCiAgICAgICBUZXN0OjpTZXRVcFRlc3RDYXNlRnVuYyBzZXRf
dXBfdGMsCiAgICAgICBUZXN0OjpUZWFyRG93blRlc3RDYXNlRnVuYyB0ZWFyX2Rvd25fdGMsCiAg
ICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5KTsKIAotICAvLyBSZXR1cm5z
IHRydWUgaWYgdGhpcyB0ZXN0IG1hdGNoZXMgdGhlIHVzZXItc3BlY2lmaWVkIGZpbHRlci4KLSAg
Ym9vbCBtYXRjaGVzX2ZpbHRlcigpIGNvbnN0OworICAvLyBDb25zdHJ1Y3RzIGEgVGVzdEluZm8g
b2JqZWN0LiBUaGUgbmV3bHkgY29uc3RydWN0ZWQgaW5zdGFuY2UgYXNzdW1lcworICAvLyBvd25l
cnNoaXAgb2YgdGhlIGZhY3Rvcnkgb2JqZWN0LgorICBUZXN0SW5mbyhjb25zdCBzdGQ6OnN0cmlu
ZyYgdGVzdF9jYXNlX25hbWUsCisgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAor
ICAgICAgICAgICBjb25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sICAgLy8gTlVMTCBpZiBub3QgYSB0
eXBlLXBhcmFtZXRlcml6ZWQgdGVzdAorICAgICAgICAgICBjb25zdCBjaGFyKiBhX3ZhbHVlX3Bh
cmFtLCAgLy8gTlVMTCBpZiBub3QgYSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QKKyAgICAgICAg
ICAgaW50ZXJuYWw6OkNvZGVMb2NhdGlvbiBhX2NvZGVfbG9jYXRpb24sCisgICAgICAgICAgIGlu
dGVybmFsOjpUeXBlSWQgZml4dHVyZV9jbGFzc19pZCwKKyAgICAgICAgICAgaW50ZXJuYWw6OlRl
c3RGYWN0b3J5QmFzZSogZmFjdG9yeSk7CiAKICAgLy8gSW5jcmVtZW50cyB0aGUgbnVtYmVyIG9m
IGRlYXRoIHRlc3RzIGVuY291bnRlcmVkIGluIHRoaXMgdGVzdCBzbwogICAvLyBmYXIuCi0gIGlu
dCBpbmNyZW1lbnRfZGVhdGhfdGVzdF9jb3VudCgpOworICBpbnQgaW5jcmVtZW50X2RlYXRoX3Rl
c3RfY291bnQoKSB7CisgICAgcmV0dXJuIHJlc3VsdF8uaW5jcmVtZW50X2RlYXRoX3Rlc3RfY291
bnQoKTsKKyAgfQogCi0gIC8vIEFjY2Vzc29ycyBmb3IgdGhlIGltcGxlbWVudGF0aW9uIG9iamVj
dC4KLSAgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbCogaW1wbCgpIHsgcmV0dXJuIGltcGxfOyB9Ci0g
IGNvbnN0IGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBpbXBs
XzsgfQorICAvLyBDcmVhdGVzIHRoZSB0ZXN0IG9iamVjdCwgcnVucyBpdCwgcmVjb3JkcyBpdHMg
cmVzdWx0LCBhbmQgdGhlbgorICAvLyBkZWxldGVzIGl0LgorICB2b2lkIFJ1bigpOwogCi0gIC8v
IENvbnN0cnVjdHMgYSBUZXN0SW5mbyBvYmplY3QuIFRoZSBuZXdseSBjb25zdHJ1Y3RlZCBpbnN0
YW5jZSBhc3N1bWVzCi0gIC8vIG93bmVyc2hpcCBvZiB0aGUgZmFjdG9yeSBvYmplY3QuCi0gIFRl
c3RJbmZvKGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLCBjb25zdCBjaGFyKiBuYW1lLAotICAg
ICAgICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfY29tbWVudCwgY29uc3QgY2hhciogY29tbWVu
dCwKLSAgICAgICAgICAgaW50ZXJuYWw6OlR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkLAotICAgICAg
ICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5KTsKKyAgc3RhdGljIHZvaWQg
Q2xlYXJUZXN0UmVzdWx0KFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKKyAgICB0ZXN0X2luZm8tPnJl
c3VsdF8uQ2xlYXIoKTsKKyAgfQogCi0gIC8vIEFuIG9wYXF1ZSBpbXBsZW1lbnRhdGlvbiBvYmpl
Y3QuCi0gIGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGltcGxfOworICAvLyBUaGVzZSBmaWVsZHMg
YXJlIGltbXV0YWJsZSBwcm9wZXJ0aWVzIG9mIHRoZSB0ZXN0LgorICBjb25zdCBzdGQ6OnN0cmlu
ZyB0ZXN0X2Nhc2VfbmFtZV87ICAgICAvLyBUZXN0IGNhc2UgbmFtZQorICBjb25zdCBzdGQ6OnN0
cmluZyBuYW1lXzsgICAgICAgICAgICAgICAvLyBUZXN0IG5hbWUKKyAgLy8gTmFtZSBvZiB0aGUg
cGFyYW1ldGVyIHR5cGUsIG9yIE5VTEwgaWYgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhCisgIC8v
IHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LgorICBjb25zdCBpbnRlcm5hbDo6c2NvcGVkX3B0cjxj
b25zdCA6OnN0ZDo6c3RyaW5nPiB0eXBlX3BhcmFtXzsKKyAgLy8gVGV4dCByZXByZXNlbnRhdGlv
biBvZiB0aGUgdmFsdWUgcGFyYW1ldGVyLCBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEKKyAgLy8g
dmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0LgorICBjb25zdCBpbnRlcm5hbDo6c2NvcGVkX3B0cjxj
b25zdCA6OnN0ZDo6c3RyaW5nPiB2YWx1ZV9wYXJhbV87CisgIGludGVybmFsOjpDb2RlTG9jYXRp
b24gbG9jYXRpb25fOworICBjb25zdCBpbnRlcm5hbDo6VHlwZUlkIGZpeHR1cmVfY2xhc3NfaWRf
OyAgIC8vIElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKKyAgYm9vbCBzaG91bGRfcnVuXzsg
ICAgICAgICAgICAgICAgIC8vIFRydWUgaWZmIHRoaXMgdGVzdCBzaG91bGQgcnVuCisgIGJvb2wg
aXNfZGlzYWJsZWRfOyAgICAgICAgICAgICAgICAvLyBUcnVlIGlmZiB0aGlzIHRlc3QgaXMgZGlz
YWJsZWQKKyAgYm9vbCBtYXRjaGVzX2ZpbHRlcl87ICAgICAgICAgICAgIC8vIFRydWUgaWYgdGhp
cyB0ZXN0IG1hdGNoZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyB1c2VyLXNwZWNpZmllZCBmaWx0ZXIuCisgIGJvb2wgaXNfaW5fYW5vdGhlcl9zaGFyZF87ICAg
ICAgICAvLyBXaWxsIGJlIHJ1biBpbiBhbm90aGVyIHNoYXJkLgorICBpbnRlcm5hbDo6VGVzdEZh
Y3RvcnlCYXNlKiBjb25zdCBmYWN0b3J5XzsgIC8vIFRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB0ZXN0
IG9iamVjdAorCisgIC8vIFRoaXMgZmllbGQgaXMgbXV0YWJsZSBhbmQgbmVlZHMgdG8gYmUgcmVz
ZXQgYmVmb3JlIHJ1bm5pbmcgdGhlCisgIC8vIHRlc3QgZm9yIHRoZSBzZWNvbmQgdGltZS4KKyAg
VGVzdFJlc3VsdCByZXN1bHRfOwogCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8o
VGVzdEluZm8pOwogfTsKQEAgLTY5Niw5ICs4MTgsMTEgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0
Q2FzZSB7CiAgIC8vIEFyZ3VtZW50czoKICAgLy8KICAgLy8gICBuYW1lOiAgICAgICAgIG5hbWUg
b2YgdGhlIHRlc3QgY2FzZQorICAvLyAgIGFfdHlwZV9wYXJhbTogdGhlIG5hbWUgb2YgdGhlIHRl
c3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorICAvLyAgICAgICAgICAgICAgICAgdGhp
cyBpcyBub3QgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KICAgLy8gICBzZXRfdXBfdGM6ICAg
IHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBjYXNlCiAgIC8v
ICAgdGVhcl9kb3duX3RjOiBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24g
dGhlIHRlc3QgY2FzZQotICBUZXN0Q2FzZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBj
b21tZW50LAorICBUZXN0Q2FzZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBhX3R5cGVf
cGFyYW0sCiAgICAgICAgICAgIFRlc3Q6OlNldFVwVGVzdENhc2VGdW5jIHNldF91cF90YywKICAg
ICAgICAgICAgVGVzdDo6VGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3RjKTsKIApAQCAt
NzA4LDggKzgzMiwxMyBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RDYXNlIHsKICAgLy8gR2V0cyB0
aGUgbmFtZSBvZiB0aGUgVGVzdENhc2UuCiAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7IHJl
dHVybiBuYW1lXy5jX3N0cigpOyB9CiAKLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIGNvbW1l
bnQuCi0gIGNvbnN0IGNoYXIqIGNvbW1lbnQoKSBjb25zdCB7IHJldHVybiBjb21tZW50Xy5jX3N0
cigpOyB9CisgIC8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB0eXBlLCBvciBO
VUxMIGlmIHRoaXMgaXMgbm90IGEKKyAgLy8gdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZS4K
KyAgY29uc3QgY2hhciogdHlwZV9wYXJhbSgpIGNvbnN0IHsKKyAgICBpZiAodHlwZV9wYXJhbV8u
Z2V0KCkgIT0gTlVMTCkKKyAgICAgIHJldHVybiB0eXBlX3BhcmFtXy0+Y19zdHIoKTsKKyAgICBy
ZXR1cm4gTlVMTDsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgdGVzdCBpbiB0aGlz
IHRlc3QgY2FzZSBzaG91bGQgcnVuLgogICBib29sIHNob3VsZF9ydW4oKSBjb25zdCB7IHJldHVy
biBzaG91bGRfcnVuXzsgfQpAQCAtNzIwLDkgKzg0OSwxNSBAQCBjbGFzcyBHVEVTVF9BUElfIFRl
c3RDYXNlIHsKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cyBpbiB0aGlzIHRl
c3QgY2FzZS4KICAgaW50IGZhaWxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CiAKKyAgLy8gR2V0cyB0
aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHRoYXQgd2lsbCBiZSByZXBvcnRlZCBpbiB0aGUg
WE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0
OworCiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyBpbiB0aGlzIHRlc3Qg
Y2FzZS4KICAgaW50IGRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAvLyBHZXRzIHRo
ZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50
IHJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8vIEdldCB0aGUgbnVtYmVyIG9m
IHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlIHRoYXQgc2hvdWxkIHJ1bi4KICAgaW50IHRlc3RfdG9f
cnVuX2NvdW50KCkgY29uc3Q7CiAKQEAgLTc0Miw2ICs4NzcsMTAgQEAgY2xhc3MgR1RFU1RfQVBJ
XyBUZXN0Q2FzZSB7CiAgIC8vIHRvdGFsX3Rlc3RfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGlu
IHRoYXQgcmFuZ2UsIHJldHVybnMgTlVMTC4KICAgY29uc3QgVGVzdEluZm8qIEdldFRlc3RJbmZv
KGludCBpKSBjb25zdDsKIAorICAvLyBSZXR1cm5zIHRoZSBUZXN0UmVzdWx0IHRoYXQgaG9sZHMg
dGVzdCBwcm9wZXJ0aWVzIHJlY29yZGVkIGR1cmluZworICAvLyBleGVjdXRpb24gb2YgU2V0VXBU
ZXN0Q2FzZSBhbmQgVGVhckRvd25UZXN0Q2FzZS4KKyAgY29uc3QgVGVzdFJlc3VsdCYgYWRfaG9j
X3Rlc3RfcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gYWRfaG9jX3Rlc3RfcmVzdWx0XzsgfQorCiAg
cHJpdmF0ZToKICAgZnJpZW5kIGNsYXNzIFRlc3Q7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6
VW5pdFRlc3RJbXBsOwpAQCAtNzc2LDE3ICs5MTUsNDQgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0
Q2FzZSB7CiAgIC8vIFJ1bnMgZXZlcnkgdGVzdCBpbiB0aGlzIFRlc3RDYXNlLgogICB2b2lkIFJ1
bigpOwogCisgIC8vIFJ1bnMgU2V0VXBUZXN0Q2FzZSgpIGZvciB0aGlzIFRlc3RDYXNlLiAgVGhp
cyB3cmFwcGVyIGlzIG5lZWRlZAorICAvLyBmb3IgY2F0Y2hpbmcgZXhjZXB0aW9ucyB0aHJvd24g
ZnJvbSBTZXRVcFRlc3RDYXNlKCkuCisgIHZvaWQgUnVuU2V0VXBUZXN0Q2FzZSgpIHsgKCpzZXRf
dXBfdGNfKSgpOyB9CisKKyAgLy8gUnVucyBUZWFyRG93blRlc3RDYXNlKCkgZm9yIHRoaXMgVGVz
dENhc2UuICBUaGlzIHdyYXBwZXIgaXMKKyAgLy8gbmVlZGVkIGZvciBjYXRjaGluZyBleGNlcHRp
b25zIHRocm93biBmcm9tIFRlYXJEb3duVGVzdENhc2UoKS4KKyAgdm9pZCBSdW5UZWFyRG93blRl
c3RDYXNlKCkgeyAoKnRlYXJfZG93bl90Y18pKCk7IH0KKwogICAvLyBSZXR1cm5zIHRydWUgaWZm
IHRlc3QgcGFzc2VkLgotICBzdGF0aWMgYm9vbCBUZXN0UGFzc2VkKGNvbnN0IFRlc3RJbmZvICog
dGVzdF9pbmZvKTsKKyAgc3RhdGljIGJvb2wgVGVzdFBhc3NlZChjb25zdCBUZXN0SW5mbyogdGVz
dF9pbmZvKSB7CisgICAgcmV0dXJuIHRlc3RfaW5mby0+c2hvdWxkX3J1bigpICYmIHRlc3RfaW5m
by0+cmVzdWx0KCktPlBhc3NlZCgpOworICB9CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0
IGZhaWxlZC4KLSAgc3RhdGljIGJvb2wgVGVzdEZhaWxlZChjb25zdCBUZXN0SW5mbyAqIHRlc3Rf
aW5mbyk7CisgIHN0YXRpYyBib29sIFRlc3RGYWlsZWQoY29uc3QgVGVzdEluZm8qIHRlc3RfaW5m
bykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPnNob3VsZF9ydW4oKSAmJiB0ZXN0X2luZm8tPnJl
c3VsdCgpLT5GYWlsZWQoKTsKKyAgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3Qg
aXMgZGlzYWJsZWQgYW5kIHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhNTAorICAvLyByZXBvcnQu
CisgIHN0YXRpYyBib29sIFRlc3RSZXBvcnRhYmxlRGlzYWJsZWQoY29uc3QgVGVzdEluZm8qIHRl
c3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPmlzX3JlcG9ydGFibGUoKSAmJiB0ZXN0
X2luZm8tPmlzX2Rpc2FibGVkXzsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGVzdCBp
cyBkaXNhYmxlZC4KLSAgc3RhdGljIGJvb2wgVGVzdERpc2FibGVkKGNvbnN0IFRlc3RJbmZvICog
dGVzdF9pbmZvKTsKKyAgc3RhdGljIGJvb2wgVGVzdERpc2FibGVkKGNvbnN0IFRlc3RJbmZvKiB0
ZXN0X2luZm8pIHsKKyAgICByZXR1cm4gdGVzdF9pbmZvLT5pc19kaXNhYmxlZF87CisgIH0KKwor
ICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgdGVzdCB3aWxsIGFwcGVhciBpbiB0aGUgWE1MIHJl
cG9ydC4KKyAgc3RhdGljIGJvb2wgVGVzdFJlcG9ydGFibGUoY29uc3QgVGVzdEluZm8qIHRlc3Rf
aW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPmlzX3JlcG9ydGFibGUoKTsKKyAgfQogCiAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdGVzdCBzaG91bGQgcnVuLgotICBzdGF0aWMg
Ym9vbCBTaG91bGRSdW5UZXN0KGNvbnN0IFRlc3RJbmZvICp0ZXN0X2luZm8pOworICBzdGF0aWMg
Ym9vbCBTaG91bGRSdW5UZXN0KGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKKyAgICByZXR1
cm4gdGVzdF9pbmZvLT5zaG91bGRfcnVuKCk7CisgIH0KIAogICAvLyBTaHVmZmxlcyB0aGUgdGVz
dHMgaW4gdGhpcyB0ZXN0IGNhc2UuCiAgIHZvaWQgU2h1ZmZsZVRlc3RzKGludGVybmFsOjpSYW5k
b20qIHJhbmRvbSk7CkBAIC03OTUsOSArOTYxLDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdENh
c2UgewogICB2b2lkIFVuc2h1ZmZsZVRlc3RzKCk7CiAKICAgLy8gTmFtZSBvZiB0aGUgdGVzdCBj
YXNlLgotICBpbnRlcm5hbDo6U3RyaW5nIG5hbWVfOwotICAvLyBDb21tZW50IG9uIHRoZSB0ZXN0
IGNhc2UuCi0gIGludGVybmFsOjpTdHJpbmcgY29tbWVudF87CisgIHN0ZDo6c3RyaW5nIG5hbWVf
OworICAvLyBOYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdHlwZSwgb3IgTlVMTCBpZiB0aGlzIGlzIG5v
dCBhIHR5cGVkIG9yIGEKKyAgLy8gdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisgIGNvbnN0IGlu
dGVybmFsOjpzY29wZWRfcHRyPGNvbnN0IDo6c3RkOjpzdHJpbmc+IHR5cGVfcGFyYW1fOwogICAv
LyBUaGUgdmVjdG9yIG9mIFRlc3RJbmZvcyBpbiB0aGVpciBvcmlnaW5hbCBvcmRlci4gIEl0IG93
bnMgdGhlCiAgIC8vIGVsZW1lbnRzIGluIHRoZSB2ZWN0b3IuCiAgIHN0ZDo6dmVjdG9yPFRlc3RJ
bmZvKj4gdGVzdF9pbmZvX2xpc3RfOwpAQCAtODEzLDEzICs5ODAsMTYgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBUZXN0Q2FzZSB7CiAgIGJvb2wgc2hvdWxkX3J1bl87CiAgIC8vIEVsYXBzZWQgdGltZSwg
aW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5NaWxsaXMgZWxhcHNlZF90aW1lXzsKKyAgLy8gSG9s
ZHMgdGVzdCBwcm9wZXJ0aWVzIHJlY29yZGVkIGR1cmluZyBleGVjdXRpb24gb2YgU2V0VXBUZXN0
Q2FzZSBhbmQKKyAgLy8gVGVhckRvd25UZXN0Q2FzZS4KKyAgVGVzdFJlc3VsdCBhZF9ob2NfdGVz
dF9yZXN1bHRfOwogCiAgIC8vIFdlIGRpc2FsbG93IGNvcHlpbmcgVGVzdENhc2VzLgogICBHVEVT
VF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRlc3RDYXNlKTsKIH07CiAKIC8vIEFuIEVudmly
b25tZW50IG9iamVjdCBpcyBjYXBhYmxlIG9mIHNldHRpbmcgdXAgYW5kIHRlYXJpbmcgZG93biBh
bgotLy8gZW52aXJvbm1lbnQuICBUaGUgdXNlciBzaG91bGQgc3ViY2xhc3MgdGhpcyB0byBkZWZp
bmUgaGlzIG93bgorLy8gZW52aXJvbm1lbnQuICBZb3Ugc2hvdWxkIHN1YmNsYXNzIHRoaXMgdG8g
ZGVmaW5lIHlvdXIgb3duCiAvLyBlbnZpcm9ubWVudChzKS4KIC8vCiAvLyBBbiBFbnZpcm9ubWVu
dCBvYmplY3QgZG9lcyB0aGUgc2V0LXVwIGFuZCB0ZWFyLWRvd24gaW4gdmlydHVhbApAQCAtODQ5
LDYgKzEwMTksMTggQEAgY2xhc3MgRW52aXJvbm1lbnQgewogICB2aXJ0dWFsIFNldHVwX3Nob3Vs
ZF9iZV9zcGVsbGVkX1NldFVwKiBTZXR1cCgpIHsgcmV0dXJuIE5VTEw7IH0KIH07CiAKKyNpZiBH
VEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBFeGNlcHRpb24gd2hpY2ggY2FuIGJlIHRocm93biBm
cm9tIFRlc3RFdmVudExpc3RlbmVyOjpPblRlc3RQYXJ0UmVzdWx0LgorY2xhc3MgR1RFU1RfQVBJ
XyBBc3NlcnRpb25FeGNlcHRpb24KKyAgICA6IHB1YmxpYyBpbnRlcm5hbDo6R29vZ2xlVGVzdEZh
aWx1cmVFeGNlcHRpb24geworIHB1YmxpYzoKKyAgZXhwbGljaXQgQXNzZXJ0aW9uRXhjZXB0aW9u
KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiByZXN1bHQpCisgICAgICA6IEdvb2dsZVRlc3RGYWlsdXJl
RXhjZXB0aW9uKHJlc3VsdCkge30KK307CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElP
TlMKKwogLy8gVGhlIGludGVyZmFjZSBmb3IgdHJhY2luZyBleGVjdXRpb24gb2YgdGVzdHMuIFRo
ZSBtZXRob2RzIGFyZSBvcmdhbml6ZWQgaW4KIC8vIHRoZSBvcmRlciB0aGUgY29ycmVzcG9uZGlu
ZyBldmVudHMgYXJlIGZpcmVkLgogY2xhc3MgVGVzdEV2ZW50TGlzdGVuZXIgewpAQCAtODc2LDcg
KzEwNTgsOSBAQCBjbGFzcyBUZXN0RXZlbnRMaXN0ZW5lciB7CiAgIC8vIEZpcmVkIGJlZm9yZSB0
aGUgdGVzdCBzdGFydHMuCiAgIHZpcnR1YWwgdm9pZCBPblRlc3RTdGFydChjb25zdCBUZXN0SW5m
byYgdGVzdF9pbmZvKSA9IDA7CiAKLSAgLy8gRmlyZWQgYWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0aW9u
IG9yIGEgU1VDQ0VTUygpLgorICAvLyBGaXJlZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3Ig
YSBTVUNDRUVEKCkgaW52b2NhdGlvbi4KKyAgLy8gSWYgeW91IHdhbnQgdG8gdGhyb3cgYW4gZXhj
ZXB0aW9uIGZyb20gdGhpcyBmdW5jdGlvbiB0byBza2lwIHRvIHRoZSBuZXh0CisgIC8vIFRFU1Qs
IGl0IG11c3QgYmUgQXNzZXJ0aW9uRXhjZXB0aW9uIGRlZmluZWQgYWJvdmUsIG9yIGluaGVyaXRl
ZCBmcm9tIGl0LgogICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFy
dFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgPSAwOwogCiAgIC8vIEZpcmVkIGFmdGVyIHRoZSB0
ZXN0IGVuZHMuCkBAIC05NjEsMTAgKzExNDUsMTAgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0RXZl
bnRMaXN0ZW5lcnMgewogCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNsYXNzIFRlc3RDYXNlOworICBm
cmllbmQgY2xhc3MgVGVzdEluZm87CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6RGVmYXVsdEds
b2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6Tm9F
eGVjRGVhdGhUZXN0OwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlRlc3RFdmVudExpc3RlbmVy
c0FjY2Vzc29yOwotICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbDsKICAgZnJp
ZW5kIGNsYXNzIGludGVybmFsOjpVbml0VGVzdEltcGw7CiAKICAgLy8gUmV0dXJucyByZXBlYXRl
ciB0aGF0IGJyb2FkY2FzdHMgdGhlIFRlc3RFdmVudExpc3RlbmVyIGV2ZW50cyB0byBhbGwKQEAg
LTEwMzIsMjIgKzEyMTYsMjMgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdCB7CiAKICAgLy8g
UmV0dXJucyB0aGUgVGVzdENhc2Ugb2JqZWN0IGZvciB0aGUgdGVzdCB0aGF0J3MgY3VycmVudGx5
IHJ1bm5pbmcsCiAgIC8vIG9yIE5VTEwgaWYgbm8gdGVzdCBpcyBydW5uaW5nLgotICBjb25zdCBU
ZXN0Q2FzZSogY3VycmVudF90ZXN0X2Nhc2UoKSBjb25zdDsKKyAgY29uc3QgVGVzdENhc2UqIGN1
cnJlbnRfdGVzdF9jYXNlKCkgY29uc3QKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4
Xyk7CiAKICAgLy8gUmV0dXJucyB0aGUgVGVzdEluZm8gb2JqZWN0IGZvciB0aGUgdGVzdCB0aGF0
J3MgY3VycmVudGx5IHJ1bm5pbmcsCiAgIC8vIG9yIE5VTEwgaWYgbm8gdGVzdCBpcyBydW5uaW5n
LgotICBjb25zdCBUZXN0SW5mbyogY3VycmVudF90ZXN0X2luZm8oKSBjb25zdDsKKyAgY29uc3Qg
VGVzdEluZm8qIGN1cnJlbnRfdGVzdF9pbmZvKCkgY29uc3QKKyAgICAgIEdURVNUX0xPQ0tfRVhD
TFVERURfKG11dGV4Xyk7CiAKICAgLy8gUmV0dXJucyB0aGUgcmFuZG9tIHNlZWQgdXNlZCBhdCB0
aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQgdGVzdCBydW4uCiAgIGludCByYW5kb21fc2VlZCgpIGNv
bnN0OwogCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgLy8gUmV0dXJucyB0aGUgUGFyYW1l
dGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgb2JqZWN0IHVzZWQgdG8ga2VlcCB0cmFjayBvZgogICAv
LyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFuZCBpbnN0YW50aWF0ZSBhbmQgcmVnaXN0ZXIg
dGhlbS4KICAgLy8KICAgLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElO
IEEgVVNFUiBQUk9HUkFNLgotICBpbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0
cnkmIHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNf
UEFSQU1fVEVTVAorICBpbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkmIHBh
cmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyht
dXRleF8pOwogCiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIHRlc3QgY2FzZXMu
CiAgIGludCBzdWNjZXNzZnVsX3Rlc3RfY2FzZV9jb3VudCgpIGNvbnN0OwpAQCAtMTA2OCwxNSAr
MTI1MywyNSBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0IHsKICAgLy8gR2V0cyB0aGUgbnVt
YmVyIG9mIGZhaWxlZCB0ZXN0cy4KICAgaW50IGZhaWxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CiAK
KyAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHRoYXQgd2lsbCBiZSByZXBv
cnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9j
b3VudCgpIGNvbnN0OworCiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cy4K
ICAgaW50IGRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAvLyBHZXRzIHRoZSBudW1i
ZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJlcG9y
dGFibGVfdGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwg
dGVzdHMuCiAgIGludCB0b3RhbF90ZXN0X2NvdW50KCkgY29uc3Q7CiAKICAgLy8gR2V0cyB0aGUg
bnVtYmVyIG9mIHRlc3RzIHRoYXQgc2hvdWxkIHJ1bi4KICAgaW50IHRlc3RfdG9fcnVuX2NvdW50
KCkgY29uc3Q7CiAKKyAgLy8gR2V0cyB0aGUgdGltZSBvZiB0aGUgdGVzdCBwcm9ncmFtIHN0YXJ0
LCBpbiBtcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUKKyAgLy8gVU5JWCBlcG9jaC4KKyAgVGltZUlu
TWlsbGlzIHN0YXJ0X3RpbWVzdGFtcCgpIGNvbnN0OworCiAgIC8vIEdldHMgdGhlIGVsYXBzZWQg
dGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5NaWxsaXMgZWxhcHNlZF90aW1lKCkgY29u
c3Q7CiAKQEAgLTEwOTEsNiArMTI4NiwxMCBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0IHsK
ICAgLy8gdG90YWxfdGVzdF9jYXNlX2NvdW50KCkgLSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJh
bmdlLCByZXR1cm5zIE5VTEwuCiAgIGNvbnN0IFRlc3RDYXNlKiBHZXRUZXN0Q2FzZShpbnQgaSkg
Y29uc3Q7CiAKKyAgLy8gUmV0dXJucyB0aGUgVGVzdFJlc3VsdCBjb250YWluaW5nIGluZm9ybWF0
aW9uIG9uIHRlc3QgZmFpbHVyZXMgYW5kCisgIC8vIHByb3BlcnRpZXMgbG9nZ2VkIG91dHNpZGUg
b2YgaW5kaXZpZHVhbCB0ZXN0IGNhc2VzLgorICBjb25zdCBUZXN0UmVzdWx0JiBhZF9ob2NfdGVz
dF9yZXN1bHQoKSBjb25zdDsKKwogICAvLyBSZXR1cm5zIHRoZSBsaXN0IG9mIGV2ZW50IGxpc3Rl
bmVycyB0aGF0IGNhbiBiZSB1c2VkIHRvIHRyYWNrIGV2ZW50cwogICAvLyBpbnNpZGUgR29vZ2xl
IFRlc3QuCiAgIFRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzKCk7CkBAIC0xMTE0LDEyICsx
MzEzLDE2IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3QgewogICB2b2lkIEFkZFRlc3RQYXJ0
UmVzdWx0KFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGVfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgbGluZV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJu
YWw6OlN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnRl
cm5hbDo6U3RyaW5nJiBvc19zdGFja190cmFjZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIG9zX3N0YWNrX3RyYWNlKQorICAgICAgR1RFU1RfTE9DS19FWENMVURF
RF8obXV0ZXhfKTsKIAotICAvLyBBZGRzIGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJyZW50IFRl
c3RSZXN1bHQgb2JqZWN0LiBJZiB0aGUgcmVzdWx0IGFscmVhZHkKLSAgLy8gY29udGFpbnMgYSBw
cm9wZXJ0eSB3aXRoIHRoZSBzYW1lIGtleSwgdGhlIHZhbHVlIHdpbGwgYmUgdXBkYXRlZC4KLSAg
dm9pZCBSZWNvcmRQcm9wZXJ0eUZvckN1cnJlbnRUZXN0KGNvbnN0IGNoYXIqIGtleSwgY29uc3Qg
Y2hhciogdmFsdWUpOworICAvLyBBZGRzIGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJyZW50IFRl
c3RSZXN1bHQgb2JqZWN0IHdoZW4gaW52b2tlZCBmcm9tCisgIC8vIGluc2lkZSBhIHRlc3QsIHRv
IGN1cnJlbnQgVGVzdENhc2UncyBhZF9ob2NfdGVzdF9yZXN1bHRfIHdoZW4gaW52b2tlZAorICAv
LyBmcm9tIFNldFVwVGVzdENhc2Ugb3IgVGVhckRvd25UZXN0Q2FzZSwgb3IgdG8gdGhlIGdsb2Jh
bCBwcm9wZXJ0eSBzZXQKKyAgLy8gd2hlbiBpbnZva2VkIGVsc2V3aGVyZS4gIElmIHRoZSByZXN1
bHQgYWxyZWFkeSBjb250YWlucyBhIHByb3BlcnR5IHdpdGgKKyAgLy8gdGhlIHNhbWUga2V5LCB0
aGUgdmFsdWUgd2lsbCBiZSB1cGRhdGVkLgorICB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0IHN0
ZDo6c3RyaW5nJiBrZXksIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSk7CiAKICAgLy8gR2V0cyB0
aGUgaS10aCB0ZXN0IGNhc2UgYW1vbmcgYWxsIHRoZSB0ZXN0IGNhc2VzLiBpIGNhbiByYW5nZSBm
cm9tIDAgdG8KICAgLy8gdG90YWxfdGVzdF9jYXNlX2NvdW50KCkgLSAxLiBJZiBpIGlzIG5vdCBp
biB0aGF0IHJhbmdlLCByZXR1cm5zIE5VTEwuCkBAIC0xMTI5LDE2ICsxMzMyLDE4IEBAIGNsYXNz
IEdURVNUX0FQSV8gVW5pdFRlc3QgewogICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBpbXBsKCkg
eyByZXR1cm4gaW1wbF87IH0KICAgY29uc3QgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCogaW1wbCgp
IGNvbnN0IHsgcmV0dXJuIGltcGxfOyB9CiAKLSAgLy8gVGhlc2UgY2xhc3NlcyBhbmQgZnVuY2lv
bnMgYXJlIGZyaWVuZHMgYXMgdGhleSBuZWVkIHRvIGFjY2VzcyBwcml2YXRlCisgIC8vIFRoZXNl
IGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyBhcmUgZnJpZW5kcyBhcyB0aGV5IG5lZWQgdG8gYWNjZXNz
IHByaXZhdGUKICAgLy8gbWVtYmVycyBvZiBVbml0VGVzdC4KKyAgZnJpZW5kIGNsYXNzIFNjb3Bl
ZFRyYWNlOwogICBmcmllbmQgY2xhc3MgVGVzdDsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpB
c3NlcnRIZWxwZXI7Ci0gIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6U2NvcGVkVHJhY2U7CisgIGZy
aWVuZCBjbGFzcyBpbnRlcm5hbDo6U3RyZWFtaW5nTGlzdGVuZXJUZXN0OworICBmcmllbmQgY2xh
c3MgaW50ZXJuYWw6OlVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0SGVscGVyOwogICBmcmllbmQg
RW52aXJvbm1lbnQqIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KTsK
ICAgZnJpZW5kIGludGVybmFsOjpVbml0VGVzdEltcGwqIGludGVybmFsOjpHZXRVbml0VGVzdElt
cGwoKTsKICAgZnJpZW5kIHZvaWQgaW50ZXJuYWw6OlJlcG9ydEZhaWx1cmVJblVua25vd25Mb2Nh
dGlvbigKICAgICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAotICAgICAgY29u
c3QgaW50ZXJuYWw6OlN0cmluZyYgbWVzc2FnZSk7CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
bWVzc2FnZSk7CiAKICAgLy8gQ3JlYXRlcyBhbiBlbXB0eSBVbml0VGVzdC4KICAgVW5pdFRlc3Qo
KTsKQEAgLTExNDgsMTAgKzEzNTMsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdCB7CiAK
ICAgLy8gUHVzaGVzIGEgdHJhY2UgZGVmaW5lZCBieSBTQ09QRURfVFJBQ0UoKSBvbiB0byB0aGUg
cGVyLXRocmVhZAogICAvLyBHb29nbGUgVGVzdCB0cmFjZSBzdGFjay4KLSAgdm9pZCBQdXNoR1Rl
c3RUcmFjZShjb25zdCBpbnRlcm5hbDo6VHJhY2VJbmZvJiB0cmFjZSk7CisgIHZvaWQgUHVzaEdU
ZXN0VHJhY2UoY29uc3QgaW50ZXJuYWw6OlRyYWNlSW5mbyYgdHJhY2UpCisgICAgICBHVEVTVF9M
T0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCiAgIC8vIFBvcHMgYSB0cmFjZSBmcm9tIHRoZSBwZXIt
dGhyZWFkIEdvb2dsZSBUZXN0IHRyYWNlIHN0YWNrLgotICB2b2lkIFBvcEdUZXN0VHJhY2UoKTsK
KyAgdm9pZCBQb3BHVGVzdFRyYWNlKCkKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4
Xyk7CiAKICAgLy8gUHJvdGVjdHMgbXV0YWJsZSBzdGF0ZSBpbiAqaW1wbF8uICBUaGlzIGlzIG11
dGFibGUgYXMgc29tZSBjb25zdAogICAvLyBtZXRob2RzIG5lZWQgdG8gbG9jayBpdCB0b28uCkBA
IC0xMjA2LDgyICsxNDEzLDQwIEBAIEdURVNUX0FQSV8gdm9pZCBJbml0R29vZ2xlVGVzdChpbnQq
IGFyZ2MsIHdjaGFyX3QqKiBhcmd2KTsKIAogbmFtZXNwYWNlIGludGVybmFsIHsKIAotLy8gVGhl
c2Ugb3ZlcmxvYWRlZCB2ZXJzaW9ucyBoYW5kbGUgOjpzdGQ6OnN0cmluZyBhbmQgOjpzdGQ6Ondz
dHJpbmcuCi1HVEVTVF9BUElfIGlubGluZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2Uo
Y29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyKSB7Ci0gIHJldHVybiAoTWVzc2FnZSgpIDw8ICciJyA8
PCBzdHIgPDwgJyInKS5HZXRTdHJpbmcoKTsKLX0KLQotI2lmIEdURVNUX0hBU19TVERfV1NUUklO
RwotR1RFU1RfQVBJXyBpbmxpbmUgU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKGNvbnN0
IDo6c3RkOjp3c3RyaW5nJiB3c3RyKSB7Ci0gIHJldHVybiAoTWVzc2FnZSgpIDw8ICJMXCIiIDw8
IHdzdHIgPDwgJyInKS5HZXRTdHJpbmcoKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9X
U1RSSU5HCi0KLS8vIFRoZXNlIG92ZXJsb2FkZWQgdmVyc2lvbnMgaGFuZGxlIDo6c3RyaW5nIGFu
ZCA6OndzdHJpbmcuCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLUdURVNUX0FQSV8gaW5s
aW5lIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjb25zdCA6OnN0cmluZyYgc3RyKSB7
Ci0gIHJldHVybiAoTWVzc2FnZSgpIDw8ICciJyA8PCBzdHIgPDwgJyInKS5HZXRTdHJpbmcoKTsK
LX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLQotI2lmIEdURVNUX0hBU19H
TE9CQUxfV1NUUklORwotR1RFU1RfQVBJXyBpbmxpbmUgU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVN
ZXNzYWdlKGNvbnN0IDo6d3N0cmluZyYgd3N0cikgewotICByZXR1cm4gKE1lc3NhZ2UoKSA8PCAi
TFwiIiA8PCB3c3RyIDw8ICciJykuR2V0U3RyaW5nKCk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hB
U19HTE9CQUxfV1NUUklORwotCi0vLyBGb3JtYXRzIGEgY29tcGFyaXNvbiBhc3NlcnRpb24gKGUu
Zy4gQVNTRVJUX0VRLCBFWFBFQ1RfTFQsIGFuZCBldGMpCi0vLyBvcGVyYW5kIHRvIGJlIHVzZWQg
aW4gYSBmYWlsdXJlIG1lc3NhZ2UuICBUaGUgdHlwZSAoYnV0IG5vdCB2YWx1ZSkKLS8vIG9mIHRo
ZSBvdGhlciBvcGVyYW5kIG1heSBhZmZlY3QgdGhlIGZvcm1hdC4gIFRoaXMgYWxsb3dzIHVzIHRv
Ci0vLyBwcmludCBhIGNoYXIqIGFzIGEgcmF3IHBvaW50ZXIgd2hlbiBpdCBpcyBjb21wYXJlZCBh
Z2FpbnN0IGFub3RoZXIKLS8vIGNoYXIqLCBhbmQgcHJpbnQgaXQgYXMgYSBDIHN0cmluZyB3aGVu
IGl0IGlzIGNvbXBhcmVkIGFnYWluc3QgYW4KLS8vIHN0ZDo6c3RyaW5nIG9iamVjdCwgZm9yIGV4
YW1wbGUuCi0vLwotLy8gVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaWdub3JlcyB0aGUgdHlw
ZSBvZiB0aGUgb3RoZXIgb3BlcmFuZC4KLS8vIFNvbWUgc3BlY2lhbGl6ZWQgdmVyc2lvbnMgYXJl
IHVzZWQgdG8gaGFuZGxlIGZvcm1hdHRpbmcgd2lkZSBvcgotLy8gbmFycm93IEMgc3RyaW5ncy4K
LS8vCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VSIFBS
T0dSQU0uCisvLyBTZXBhcmF0ZSB0aGUgZXJyb3IgZ2VuZXJhdGluZyBjb2RlIGZyb20gdGhlIGNv
ZGUgcGF0aCB0byByZWR1Y2UgdGhlIHN0YWNrCisvLyBmcmFtZSBzaXplIG9mIENtcEhlbHBlckVR
LiBUaGlzIGhlbHBzIHJlZHVjZSB0aGUgb3ZlcmhlYWQgb2Ygc29tZSBzYW5pdGl6ZXJzCisvLyB3
aGVuIGNhbGxpbmcgRVhQRUNUXyogaW4gYSB0aWdodCBsb29wLgogdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMj4KLVN0cmluZyBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2UoY29uc3QgVDEmIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUMiYgLyogb3RoZXJfb3BlcmFuZCAqLykgewotICByZXR1cm4gRm9ybWF0Rm9y
RmFpbHVyZU1lc3NhZ2UodmFsdWUpOworQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRRmFpbHVy
ZShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFQxJiBsaHMsIGNvbnN0IFQyJiByaHMpIHsKKyAgcmV0dXJu
IEVxRmFpbHVyZShsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICByaHNfZXhwcmVz
c2lvbiwKKyAgICAgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2UobGhzLCByaHMpLAorICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWls
dXJlTWVzc2FnZShyaHMsIGxocyksCisgICAgICAgICAgICAgICAgICAgZmFsc2UpOwogfQogCiAv
LyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fRVEuCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRKGNv
bnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVDEmIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFQyJiBhY3R1YWwpIHsKLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHB1c2gp
ICAgICAgICAgIC8vIFNhdmVzIHRoZSBjdXJyZW50IHdhcm5pbmcgc3RhdGUuCi0jcHJhZ21hIHdh
cm5pbmcoZGlzYWJsZTo0Mzg5KSAgLy8gVGVtcG9yYXJpbHkgZGlzYWJsZXMgd2FybmluZyBvbgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpZ25lZC91bnNpZ25lZCBtaXNtYXRj
aC4KLSNlbmRpZgotCi0gIGlmIChleHBlY3RlZCA9PSBhY3R1YWwpIHsKK0Fzc2VydGlvblJlc3Vs
dCBDbXBIZWxwZXJFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUMSYgbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFQyJiByaHMpIHsKKyAgaWYgKGxocyA9PSByaHMpIHsKICAgICByZXR1cm4gQXNzZXJ0
aW9uU3VjY2VzcygpOwogICB9CiAKLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHBv
cCkgICAgICAgICAgLy8gUmVzdG9yZXMgdGhlIHdhcm5pbmcgc3RhdGUuCi0jZW5kaWYKLQotICBy
ZXR1cm4gRXFGYWlsdXJlKGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAg
YWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNv
bkZhaWx1cmVNZXNzYWdlKGV4cGVjdGVkLCBhY3R1YWwpLAotICAgICAgICAgICAgICAgICAgIEZv
cm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShhY3R1YWwsIGV4cGVjdGVkKSwKLSAgICAg
ICAgICAgICAgICAgICBmYWxzZSk7CisgIHJldHVybiBDbXBIZWxwZXJFUUZhaWx1cmUobGhzX2V4
cHJlc3Npb24sIHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7CiB9CiAKIC8vIFdpdGggdGhpcyBv
dmVybG9hZGVkIHZlcnNpb24sIHdlIGFsbG93IGFub255bW91cyBlbnVtcyB0byBiZSB1c2VkCiAv
LyBpbiB7QVNTRVJUfEVYUEVDVH1fRVEgd2hlbiBjb21waWxlZCB3aXRoIGdjYyA0LCBhcyBhbm9u
eW1vdXMgZW51bXMKIC8vIGNhbiBiZSBpbXBsaWNpdGx5IGNhc3QgdG8gQmlnZ2VzdEludC4KLUdU
RVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRKGNvbnN0IGNoYXIqIGV4cGVjdGVk
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJpZ2dlc3RJbnQgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBCaWdnZXN0SW50IGFjdHVhbCk7CitHVEVTVF9BUElfIEFzc2VydGlvblJl
c3VsdCBDbXBIZWxwZXJFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBsaHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IHJocyk7CiAK
IC8vIFRoZSBoZWxwZXIgY2xhc3MgZm9yIHtBU1NFUlR8RVhQRUNUfV9FUS4gIFRoZSB0ZW1wbGF0
ZSBhcmd1bWVudAogLy8gbGhzX2lzX251bGxfbGl0ZXJhbCBpcyB0cnVlIGlmZiB0aGUgZmlyc3Qg
YXJndW1lbnQgdG8gQVNTRVJUX0VRKCkKQEAgLTEyOTIsMTIgKzE0NTcsMTEgQEAgY2xhc3MgRXFI
ZWxwZXIgewogIHB1YmxpYzoKICAgLy8gVGhpcyB0ZW1wbGF0aXplZCB2ZXJzaW9uIGlzIGZvciB0
aGUgZ2VuZXJhbCBjYXNlLgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgot
ICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhw
cmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFj
dHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VDEmIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDIm
IGFjdHVhbCkgewotICAgIHJldHVybiBDbXBIZWxwZXJFUShleHBlY3RlZF9leHByZXNzaW9uLCBh
Y3R1YWxfZXhwcmVzc2lvbiwgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgIGFjdHVh
bCk7CisgIHN0YXRpYyBBc3NlcnRpb25SZXN1bHQgQ29tcGFyZShjb25zdCBjaGFyKiBsaHNfZXhw
cmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJo
c19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEm
IGxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiByaHMpIHsK
KyAgICByZXR1cm4gQ21wSGVscGVyRVEobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLCBs
aHMsIHJocyk7CiAgIH0KIAogICAvLyBXaXRoIHRoaXMgb3ZlcmxvYWRlZCB2ZXJzaW9uLCB3ZSBh
bGxvdyBhbm9ueW1vdXMgZW51bXMgdG8gYmUgdXNlZApAQCAtMTMwNiwxNyArMTQ3MCwxNiBAQCBj
bGFzcyBFcUhlbHBlciB7CiAgIC8vCiAgIC8vIEV2ZW4gdGhvdWdoIGl0cyBib2R5IGxvb2tzIHRo
ZSBzYW1lIGFzIHRoZSBhYm92ZSB2ZXJzaW9uLCB3ZQogICAvLyBjYW5ub3QgbWVyZ2UgdGhlIHR3
bywgYXMgaXQgd2lsbCBtYWtlIGFub255bW91cyBlbnVtcyB1bmhhcHB5LgotICBzdGF0aWMgQXNz
ZXJ0aW9uUmVzdWx0IENvbXBhcmUoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNz
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBleHBlY3Rl
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgYWN0dWFsKSB7
Ci0gICAgcmV0dXJuIENtcEhlbHBlckVRKGV4cGVjdGVkX2V4cHJlc3Npb24sIGFjdHVhbF9leHBy
ZXNzaW9uLCBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsKTsKKyAgc3Rh
dGljIEFzc2VydGlvblJlc3VsdCBDb21wYXJlKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Np
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGxocywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgcmhzKSB7CisgICAgcmV0
dXJuIENtcEhlbHBlckVRKGxoc19leHByZXNzaW9uLCByaHNfZXhwcmVzc2lvbiwgbGhzLCByaHMp
OwogICB9CiB9OwogCiAvLyBUaGlzIHNwZWNpYWxpemF0aW9uIGlzIHVzZWQgd2hlbiB0aGUgZmly
c3QgYXJndW1lbnQgdG8gQVNTRVJUX0VRKCkKLS8vIGlzIGEgbnVsbCBwb2ludGVyIGxpdGVyYWwu
CisvLyBpcyBhIG51bGwgcG9pbnRlciBsaXRlcmFsLCBsaWtlIE5VTEwsIGZhbHNlLCBvciAwLgog
dGVtcGxhdGUgPD4KIGNsYXNzIEVxSGVscGVyPHRydWU+IHsKICBwdWJsaWM6CkBAIC0xMzI1LDI3
ICsxNDg4LDUzIEBAIGNsYXNzIEVxSGVscGVyPHRydWU+IHsKICAgLy8gTk9UIGEgcG9pbnRlciwg
ZS5nLiBBU1NFUlRfRVEoMCwgQW5JbnRGdW5jdGlvbigpKSBvcgogICAvLyBFWFBFQ1RfRVEoZmFs
c2UsIGFfYm9vbCkuCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gIHN0
YXRpYyBBc3NlcnRpb25SZXN1bHQgQ29tcGFyZShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNz
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFs
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYg
ZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgYWN0
dWFsKSB7Ci0gICAgcmV0dXJuIENtcEhlbHBlckVRKGV4cGVjdGVkX2V4cHJlc3Npb24sIGFjdHVh
bF9leHByZXNzaW9uLCBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsKTsK
KyAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBDb21wYXJlKAorICAgICAgY29uc3QgY2hhciogbGhz
X2V4cHJlc3Npb24sCisgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgIGNv
bnN0IFQxJiBsaHMsCisgICAgICBjb25zdCBUMiYgcmhzLAorICAgICAgLy8gVGhlIGZvbGxvd2lu
ZyBsaW5lIHByZXZlbnRzIHRoaXMgb3ZlcmxvYWQgZnJvbSBiZWluZyBjb25zaWRlcmVkIGlmIFQy
CisgICAgICAvLyBpcyBub3QgYSBwb2ludGVyIHR5cGUuICBXZSBuZWVkIHRoaXMgYmVjYXVzZSBB
U1NFUlRfRVEoTlVMTCwgbXlfcHRyKQorICAgICAgLy8gZXhwYW5kcyB0byBDb21wYXJlKCIiLCAi
IiwgTlVMTCwgbXlfcHRyKSwgd2hpY2ggcmVxdWlyZXMgYSBjb252ZXJzaW9uCisgICAgICAvLyB0
byBtYXRjaCB0aGUgU2VjcmV0KiBpbiB0aGUgb3RoZXIgb3ZlcmxvYWQsIHdoaWNoIHdvdWxkIG90
aGVyd2lzZSBtYWtlCisgICAgICAvLyB0aGlzIHRlbXBsYXRlIG1hdGNoIGJldHRlci4KKyAgICAg
IHR5cGVuYW1lIEVuYWJsZUlmPCFpc19wb2ludGVyPFQyPjo6dmFsdWU+Ojp0eXBlKiA9IDApIHsK
KyAgICByZXR1cm4gQ21wSGVscGVyRVEobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLCBs
aHMsIHJocyk7CiAgIH0KIAotICAvLyBUaGlzIHZlcnNpb24gd2lsbCBiZSBwaWNrZWQgd2hlbiB0
aGUgc2Vjb25kIGFyZ3VtZW50IHRvCi0gIC8vIEFTU0VSVF9FUSgpIGlzIGEgcG9pbnRlciwgZS5n
LiBBU1NFUlRfRVEoTlVMTCwgYV9wb2ludGVyKS4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMj4KLSAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBDb21wYXJlKGNvbnN0IGNoYXIq
IGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFQxJiAvKiBleHBlY3RlZCAqLywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFQyKiBhY3R1YWwpIHsKLSAgICAvLyBXZSBhbHJlYWR5IGtub3cgdGhhdCAnZXhw
ZWN0ZWQnIGlzIGEgbnVsbCBwb2ludGVyLgotICAgIHJldHVybiBDbXBIZWxwZXJFUShleHBlY3Rl
ZF9leHByZXNzaW9uLCBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8VDIqPihOVUxMKSwgYWN0dWFsKTsKKyAgLy8gVGhpcyB2ZXJzaW9uIHdpbGwg
YmUgcGlja2VkIHdoZW4gdGhlIHNlY29uZCBhcmd1bWVudCB0byBBU1NFUlRfRVEoKSBpcyBhCisg
IC8vIHBvaW50ZXIsIGUuZy4gQVNTRVJUX0VRKE5VTEwsIGFfcG9pbnRlcikuCisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgorICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUoCisgICAgICBj
b25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNz
aW9uLAorICAgICAgLy8gV2UgdXNlZCB0byBoYXZlIGEgc2Vjb25kIHRlbXBsYXRlIHBhcmFtZXRl
ciBpbnN0ZWFkIG9mIFNlY3JldCouICBUaGF0CisgICAgICAvLyB0ZW1wbGF0ZSBwYXJhbWV0ZXIg
d291bGQgZGVkdWNlIHRvICdsb25nJywgbWFraW5nIHRoaXMgYSBiZXR0ZXIgbWF0Y2gKKyAgICAg
IC8vIHRoYW4gdGhlIGZpcnN0IG92ZXJsb2FkIGV2ZW4gd2l0aG91dCB0aGUgZmlyc3Qgb3Zlcmxv
YWQncyBFbmFibGVJZi4KKyAgICAgIC8vIFVuZm9ydHVuYXRlbHksIGdjYyB3aXRoIC1XY29udmVy
c2lvbi1udWxsIHdhcm5zIHdoZW4gInBhc3NpbmcgTlVMTCB0bworICAgICAgLy8gbm9uLXBvaW50
ZXIgYXJndW1lbnQiIChldmVuIGEgZGVkdWNlZCBpbnRlZ3JhbCBhcmd1bWVudCksIHNvIHRoZSBv
bGQKKyAgICAgIC8vIGltcGxlbWVudGF0aW9uIGNhdXNlZCB3YXJuaW5ncyBpbiB1c2VyIGNvZGUu
CisgICAgICBTZWNyZXQqIC8qIGxocyAoTlVMTCkgKi8sCisgICAgICBUKiByaHMpIHsKKyAgICAv
LyBXZSBhbHJlYWR5IGtub3cgdGhhdCAnbGhzJyBpcyBhIG51bGwgcG9pbnRlci4KKyAgICByZXR1
cm4gQ21wSGVscGVyRVEobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxUKj4oTlVMTCksIHJocyk7CiAgIH0KIH07CiAKKy8v
IFNlcGFyYXRlIHRoZSBlcnJvciBnZW5lcmF0aW5nIGNvZGUgZnJvbSB0aGUgY29kZSBwYXRoIHRv
IHJlZHVjZSB0aGUgc3RhY2sKKy8vIGZyYW1lIHNpemUgb2YgQ21wSGVscGVyT1AuIFRoaXMgaGVs
cHMgcmVkdWNlIHRoZSBvdmVyaGVhZCBvZiBzb21lIHNhbml0aXplcnMKKy8vIHdoZW4gY2FsbGlu
ZyBFWFBFQ1RfT1AgaW4gYSB0aWdodCBsb29wLgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMj4KK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJPcEZhaWx1cmUoY29uc3QgY2hhciog
ZXhwcjEsIGNvbnN0IGNoYXIqIGV4cHIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUMSYgdmFsMSwgY29uc3QgVDImIHZhbDIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG9wKSB7CisgIHJldHVybiBBc3NlcnRpb25GYWls
dXJlKCkKKyAgICAgICAgIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgIiA8PCBvcCA8
PCAiICgiIDw8IGV4cHIyCisgICAgICAgICA8PCAiKSwgYWN0dWFsOiAiIDw8IEZvcm1hdEZvckNv
bXBhcmlzb25GYWlsdXJlTWVzc2FnZSh2YWwxLCB2YWwyKQorICAgICAgICAgPDwgIiB2cyAiIDw8
IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSh2YWwyLCB2YWwxKTsKK30KKwogLy8g
QSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHRoZSBoZWxwZXIgZnVuY3Rpb25zIG5lZWRlZCB0byBp
bXBsZW1lbnQKIC8vIEFTU0VSVF8/PyBhbmQgRVhQRUNUXz8/LiAgSXQgaXMgaGVyZSBqdXN0IHRv
IGF2b2lkIGNvcHktYW5kLXBhc3RlCiAvLyBvZiBzaW1pbGFyIGNvZGUuCkBAIC0xMzU2LDYgKzE1
NDUsNyBAQCBjbGFzcyBFcUhlbHBlcjx0cnVlPiB7CiAvLyB3aXRoIGdjYyA0LgogLy8KIC8vIElO
VEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KKwog
I2RlZmluZSBHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKG9wX25hbWUsIG9wKVwKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+XAogQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlciMjb3Bf
bmFtZShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIsIFwKQEAgLTEzNjMsMTEg
KzE1NTMsNyBAQCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyIyNvcF9uYW1lKGNvbnN0IGNoYXIq
IGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwgXAogICBpZiAodmFsMSBvcCB2YWwyKSB7XAogICAg
IHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7XAogICB9IGVsc2Uge1wKLSAgICBNZXNzYWdlIG1z
ZztcCi0gICAgbXNnIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgIiAjb3AgIiAoIiA8
PCBleHByMlwKLSAgICAgICAgPDwgIiksIGFjdHVhbDogIiA8PCBGb3JtYXRGb3JDb21wYXJpc29u
RmFpbHVyZU1lc3NhZ2UodmFsMSwgdmFsMilcCi0gICAgICAgIDw8ICIgdnMgIiA8PCBGb3JtYXRG
b3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UodmFsMiwgdmFsMSk7XAotICAgIHJldHVybiBBc3Nl
cnRpb25GYWlsdXJlKG1zZyk7XAorICAgIHJldHVybiBDbXBIZWxwZXJPcEZhaWx1cmUoZXhwcjEs
IGV4cHIyLCB2YWwxLCB2YWwyLCAjb3ApO1wKICAgfVwKIH1cCiBHVEVTVF9BUElfIEFzc2VydGlv
blJlc3VsdCBDbXBIZWxwZXIjI29wX25hbWUoXApAQCAtMTM4MCwyOSArMTU2NiwyOSBAQCBHVEVT
VF9JTVBMX0NNUF9IRUxQRVJfKE5FLCAhPSk7CiAvLyBJbXBsZW1lbnRzIHRoZSBoZWxwZXIgZnVu
Y3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9MRQogR1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhMRSwg
PD0pOwogLy8gSW1wbGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVD
VH1fTFQKLUdURVNUX0lNUExfQ01QX0hFTFBFUl8oTFQsIDwgKTsKK0dURVNUX0lNUExfQ01QX0hF
TFBFUl8oTFQsIDwpOwogLy8gSW1wbGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNT
RVJUfEVYUEVDVH1fR0UKIEdURVNUX0lNUExfQ01QX0hFTFBFUl8oR0UsID49KTsKIC8vIEltcGxl
bWVudHMgdGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X0dUCi1HVEVTVF9J
TVBMX0NNUF9IRUxQRVJfKEdULCA+ICk7CitHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKEdULCA+KTsK
IAogI3VuZGVmIEdURVNUX0lNUExfQ01QX0hFTFBFUl8KIAogLy8gVGhlIGhlbHBlciBmdW5jdGlv
biBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NUUkVRLgogLy8KIC8vIElOVEVSTkFMIElNUExFTUVOVEFU
SU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KLUdURVNUX0FQSV8gQXNzZXJ0aW9u
UmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1
YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsKTsKK0dURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0
IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMl9leHByZXNzaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBz
Mik7CiAKIC8vIFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9TVFJDQVNF
RVEuCiAvLwogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNF
UiBQUk9HUkFNLgotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSQ0FTRUVR
KGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
ZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogYWN0dWFsKTsKK0dURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBl
clNUUkNBU0VFUShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMyX2V4cHJlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
czEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogczIpOwogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1f
U1RSTkUuCiAvLwpAQCAtMTQyNCwxMCArMTYxMCwxMCBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJl
c3VsdCBDbXBIZWxwZXJTVFJDQVNFTkUoY29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKIC8vIEhl
bHBlciBmdW5jdGlvbiBmb3IgKl9TVFJFUSBvbiB3aWRlIHN0cmluZ3MuCiAvLwogLy8gSU5URVJO
QUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotR1RFU1Rf
QVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogZXhwZWN0ZWRf
ZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiBhY3R1YWwpOworR1RFU1Rf
QVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogczFfZXhwcmVz
c2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIHMyX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB3Y2hhcl90KiBzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIHMyKTsKIAogLy8gSGVscGVyIGZ1bmN0aW9uIGZvciAq
X1NUUk5FIG9uIHdpZGUgc3RyaW5ncy4KIC8vCkBAIC0xNDg1LDI4ICsxNjcxLDI4IEBAIG5hbWVz
cGFjZSBpbnRlcm5hbCB7CiAvLwogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1Qg
VVNFIElOIEEgVVNFUiBQUk9HUkFNLgogdGVtcGxhdGUgPHR5cGVuYW1lIFJhd1R5cGU+Ci1Bc3Nl
cnRpb25SZXN1bHQgQ21wSGVscGVyRmxvYXRpbmdQb2ludEVRKGNvbnN0IGNoYXIqIGV4cGVjdGVk
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSYXdUeXBlIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSYXdUeXBlIGFjdHVhbCkgewotICBjb25zdCBGbG9hdGluZ1BvaW50
PFJhd1R5cGU+IGxocyhleHBlY3RlZCksIHJocyhhY3R1YWwpOworQXNzZXJ0aW9uUmVzdWx0IENt
cEhlbHBlckZsb2F0aW5nUG9pbnRFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJl
c3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhd1R5cGUg
bGhzX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdU
eXBlIHJoc192YWx1ZSkgeworICBjb25zdCBGbG9hdGluZ1BvaW50PFJhd1R5cGU+IGxocyhsaHNf
dmFsdWUpLCByaHMocmhzX3ZhbHVlKTsKIAogICBpZiAobGhzLkFsbW9zdEVxdWFscyhyaHMpKSB7
CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQogCi0gIFN0clN0cmVhbSBleHBl
Y3RlZF9zczsKLSAgZXhwZWN0ZWRfc3MgPDwgc3RkOjpzZXRwcmVjaXNpb24oc3RkOjpudW1lcmlj
X2xpbWl0czxSYXdUeXBlPjo6ZGlnaXRzMTAgKyAyKQotICAgICAgICAgICAgICA8PCBleHBlY3Rl
ZDsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBsaHNfc3M7CisgIGxoc19zcyA8PCBzdGQ6OnNldHBy
ZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+OjpkaWdpdHMxMCArIDIpCisgICAg
ICAgICA8PCBsaHNfdmFsdWU7CiAKLSAgU3RyU3RyZWFtIGFjdHVhbF9zczsKLSAgYWN0dWFsX3Nz
IDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8UmF3VHlwZT46OmRpZ2l0
czEwICsgMikKLSAgICAgICAgICAgIDw8IGFjdHVhbDsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBy
aHNfc3M7CisgIHJoc19zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRz
PFJhd1R5cGU+OjpkaWdpdHMxMCArIDIpCisgICAgICAgICA8PCByaHNfdmFsdWU7CiAKLSAgcmV0
dXJuIEVxRmFpbHVyZShleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIGFj
dHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIFN0clN0cmVhbVRvU3RyaW5nKCZl
eHBlY3RlZF9zcyksCi0gICAgICAgICAgICAgICAgICAgU3RyU3RyZWFtVG9TdHJpbmcoJmFjdHVh
bF9zcyksCisgIHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAg
ICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgU3RyaW5nU3RyZWFtVG9T
dHJpbmcoJmxoc19zcyksCisgICAgICAgICAgICAgICAgICAgU3RyaW5nU3RyZWFtVG9TdHJpbmco
JnJoc19zcyksCiAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwogfQogCkBAIC0xNTQ4LDkgKzE3
MzQsOSBAQCBjbGFzcyBHVEVTVF9BUElfIEFzc2VydEhlbHBlciB7CiAgICAgICAgIDogdHlwZSh0
KSwgZmlsZShzcmNmaWxlKSwgbGluZShsaW5lX251bSksIG1lc3NhZ2UobXNnKSB7IH0KIAogICAg
IFRlc3RQYXJ0UmVzdWx0OjpUeXBlIGNvbnN0IHR5cGU7Ci0gICAgY29uc3QgY2hhciogICAgICAg
IGNvbnN0IGZpbGU7Ci0gICAgaW50ICAgICAgICAgICAgICAgIGNvbnN0IGxpbmU7Ci0gICAgU3Ry
aW5nICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2U7CisgICAgY29uc3QgY2hhciogY29uc3QgZmls
ZTsKKyAgICBpbnQgY29uc3QgbGluZTsKKyAgICBzdGQ6OnN0cmluZyBjb25zdCBtZXNzYWdlOwog
CiAgICBwcml2YXRlOgogICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQXNzZXJ0
SGVscGVyRGF0YSk7CkBAIC0xNTYzLDEwICsxNzQ5LDEzIEBAIGNsYXNzIEdURVNUX0FQSV8gQXNz
ZXJ0SGVscGVyIHsKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiAKLSNpZiBHVEVTVF9IQVNf
UEFSQU1fVEVTVAotLy8gVGhlIGFic3RyYWN0IGJhc2UgY2xhc3MgdGhhdCBhbGwgdmFsdWUtcGFy
YW1ldGVyaXplZCB0ZXN0cyBpbmhlcml0IGZyb20uCisvLyBUaGUgcHVyZSBpbnRlcmZhY2UgY2xh
c3MgdGhhdCBhbGwgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBpbmhlcml0IGZyb20uCisvLyBB
IHZhbHVlLXBhcmFtZXRlcml6ZWQgY2xhc3MgbXVzdCBpbmhlcml0IGZyb20gYm90aCA6OnRlc3Rp
bmc6OlRlc3QgYW5kCisvLyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZS4gSW4gbW9zdCBj
YXNlcyB0aGF0IGp1c3QgbWVhbnMgaW5oZXJpdGluZworLy8gZnJvbSA6OnRlc3Rpbmc6OlRlc3RX
aXRoUGFyYW0sIGJ1dCBtb3JlIGNvbXBsaWNhdGVkIHRlc3QgaGllcmFyY2hpZXMKKy8vIG1heSBu
ZWVkIHRvIGluaGVyaXQgZnJvbSBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UgYXQgZGlmZmVy
ZW50IGxldmVscy4KIC8vCi0vLyBUaGlzIGNsYXNzIGFkZHMgc3VwcG9ydCBmb3IgYWNjZXNzaW5n
IHRoZSB0ZXN0IHBhcmFtZXRlciB2YWx1ZSB2aWEKKy8vIFRoaXMgaW50ZXJmYWNlIGhhcyBzdXBw
b3J0IGZvciBhY2Nlc3NpbmcgdGhlIHRlc3QgcGFyYW1ldGVyIHZhbHVlIHZpYQogLy8gdGhlIEdl
dFBhcmFtKCkgbWV0aG9kLgogLy8KIC8vIFVzZSBpdCB3aXRoIG9uZSBvZiB0aGUgcGFyYW1ldGVy
IGdlbmVyYXRvciBkZWZpbmluZyBmdW5jdGlvbnMsIGxpa2UgUmFuZ2UoKSwKQEAgLTE1OTUsMTMg
KzE3ODQsMjIgQEAgY2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRIZWxwZXIgewogLy8gSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoT25lVG9UZW5SYW5nZSwgRm9vVGVzdCwgOjp0ZXN0aW5nOjpSYW5nZSgx
LCAxMCkpOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFRlc3RXaXRoUGFyYW0gOiBw
dWJsaWMgVGVzdCB7CitjbGFzcyBXaXRoUGFyYW1JbnRlcmZhY2UgewogIHB1YmxpYzoKICAgdHlw
ZWRlZiBUIFBhcmFtVHlwZTsKKyAgdmlydHVhbCB+V2l0aFBhcmFtSW50ZXJmYWNlKCkge30KIAog
ICAvLyBUaGUgY3VycmVudCBwYXJhbWV0ZXIgdmFsdWUuIElzIGFsc28gYXZhaWxhYmxlIGluIHRo
ZSB0ZXN0IGZpeHR1cmUncwotICAvLyBjb25zdHJ1Y3Rvci4KLSAgY29uc3QgUGFyYW1UeXBlJiBH
ZXRQYXJhbSgpIGNvbnN0IHsgcmV0dXJuICpwYXJhbWV0ZXJfOyB9CisgIC8vIGNvbnN0cnVjdG9y
LiBUaGlzIG1lbWJlciBmdW5jdGlvbiBpcyBub24tc3RhdGljLCBldmVuIHRob3VnaCBpdCBvbmx5
CisgIC8vIHJlZmVyZW5jZXMgc3RhdGljIGRhdGEsIHRvIHJlZHVjZSB0aGUgb3Bwb3J0dW5pdHkg
Zm9yIGluY29ycmVjdCB1c2VzCisgIC8vIGxpa2Ugd3JpdGluZyAnV2l0aFBhcmFtSW50ZXJmYWNl
PGJvb2w+OjpHZXRQYXJhbSgpJyBmb3IgYSB0ZXN0IHRoYXQKKyAgLy8gdXNlcyBhIGZpeHR1cmUg
d2hvc2UgcGFyYW1ldGVyIHR5cGUgaXMgaW50LgorICBjb25zdCBQYXJhbVR5cGUmIEdldFBhcmFt
KCkgY29uc3QgeworICAgIEdURVNUX0NIRUNLXyhwYXJhbWV0ZXJfICE9IE5VTEwpCisgICAgICAg
IDw8ICJHZXRQYXJhbSgpIGNhbiBvbmx5IGJlIGNhbGxlZCBpbnNpZGUgYSB2YWx1ZS1wYXJhbWV0
ZXJpemVkIHRlc3QgIgorICAgICAgICA8PCAiLS0gZGlkIHlvdSBpbnRlbmQgdG8gd3JpdGUgVEVT
VF9QIGluc3RlYWQgb2YgVEVTVF9GPyI7CisgICAgcmV0dXJuICpwYXJhbWV0ZXJfOworICB9CiAK
ICBwcml2YXRlOgogICAvLyBTZXRzIHBhcmFtZXRlciB2YWx1ZS4gVGhlIGNhbGxlciBpcyByZXNw
b25zaWJsZSBmb3IgbWFraW5nIHN1cmUgdGhlIHZhbHVlCkBAIC0xNjEzLDE0ICsxODExLDE5IEBA
IGNsYXNzIFRlc3RXaXRoUGFyYW0gOiBwdWJsaWMgVGVzdCB7CiAgIC8vIFN0YXRpYyB2YWx1ZSB1
c2VkIGZvciBhY2Nlc3NpbmcgcGFyYW1ldGVyIGR1cmluZyBhIHRlc3QgbGlmZXRpbWUuCiAgIHN0
YXRpYyBjb25zdCBQYXJhbVR5cGUqIHBhcmFtZXRlcl87CiAKLSAgLy8gVGVzdENsYXNzIG11c3Qg
YmUgYSBzdWJjbGFzcyBvZiBUZXN0V2l0aFBhcmFtPFQ+LgorICAvLyBUZXN0Q2xhc3MgbXVzdCBi
ZSBhIHN1YmNsYXNzIG9mIFdpdGhQYXJhbUludGVyZmFjZTxUPiBhbmQgVGVzdC4KICAgdGVtcGxh
dGUgPGNsYXNzIFRlc3RDbGFzcz4gZnJpZW5kIGNsYXNzIGludGVybmFsOjpQYXJhbWV0ZXJpemVk
VGVzdEZhY3Rvcnk7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNvbnN0IFQqIFRlc3RX
aXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOworY29uc3QgVCogV2l0aFBhcmFtSW50ZXJm
YWNlPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKKworLy8gTW9zdCB2YWx1ZS1wYXJhbWV0ZXJpemVk
IGNsYXNzZXMgY2FuIGlnbm9yZSB0aGUgZXhpc3RlbmNlIG9mCisvLyBXaXRoUGFyYW1JbnRlcmZh
Y2UsIGFuZCBjYW4ganVzdCBpbmhlcml0IGZyb20gOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtLgog
Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2NsYXNzIFRlc3RXaXRoUGFyYW0gOiBwdWJsaWMgVGVzdCwgcHVibGljIFdpdGhQYXJhbUludGVy
ZmFjZTxUPiB7Cit9OwogCiAvLyBNYWNyb3MgZm9yIGluZGljYXRpbmcgc3VjY2Vzcy9mYWlsdXJl
IGluIHRlc3QgY29kZS4KIApAQCAtMTY0MCwyMyArMTg0MywyMyBAQCBjb25zdCBUKiBUZXN0V2l0
aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIC8vIHVzdWFsbHkgd2FudCB0aGUgZmFpbC1m
YXN0IGJlaGF2aW9yIG9mIEZBSUwgYW5kIEFTU0VSVF8qLCBidXQgdGhvc2UKIC8vIHdyaXRpbmcg
ZGF0YS1kcml2ZW4gdGVzdHMgb2Z0ZW4gZmluZCB0aGVtc2VsdmVzIHVzaW5nIEFERF9GQUlMVVJF
CiAvLyBhbmQgRVhQRUNUXyogbW9yZS4KLS8vCi0vLyBFeGFtcGxlczoKLS8vCi0vLyAgIEVYUEVD
VF9UUlVFKHNlcnZlci5TdGF0dXNJc09LKCkpOwotLy8gICBBU1NFUlRfRkFMU0Uoc2VydmVyLkhh
c1BlbmRpbmdSZXF1ZXN0KHBvcnQpKQotLy8gICAgICAgPDwgIlRoZXJlIGFyZSBzdGlsbCBwZW5k
aW5nIHJlcXVlc3RzICIgPDwgIm9uIHBvcnQgIiA8PCBwb3J0OwogCiAvLyBHZW5lcmF0ZXMgYSBu
b25mYXRhbCBmYWlsdXJlIHdpdGggYSBnZW5lcmljIG1lc3NhZ2UuCiAjZGVmaW5lIEFERF9GQUlM
VVJFKCkgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8oIkZhaWxlZCIpCiAKKy8vIEdlbmVyYXRlcyBh
IG5vbmZhdGFsIGZhaWx1cmUgYXQgdGhlIGdpdmVuIHNvdXJjZSBmaWxlIGxvY2F0aW9uIHdpdGgK
Ky8vIGEgZ2VuZXJpYyBtZXNzYWdlLgorI2RlZmluZSBBRERfRkFJTFVSRV9BVChmaWxlLCBsaW5l
KSBcCisgIEdURVNUX01FU1NBR0VfQVRfKGZpbGUsIGxpbmUsICJGYWlsZWQiLCBcCisgICAgICAg
ICAgICAgICAgICAgIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUp
CisKIC8vIEdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUgd2l0aCBhIGdlbmVyaWMgbWVzc2FnZS4K
ICNkZWZpbmUgR1RFU1RfRkFJTCgpIEdURVNUX0ZBVEFMX0ZBSUxVUkVfKCJGYWlsZWQiKQogCiAv
LyBEZWZpbmUgdGhpcyBtYWNybyB0byAxIHRvIG9taXQgdGhlIGRlZmluaXRpb24gb2YgRkFJTCgp
LCB3aGljaCBpcyBhCiAvLyBnZW5lcmljIG5hbWUgYW5kIGNsYXNoZXMgd2l0aCBzb21lIG90aGVy
IGxpYnJhcmllcy4KICNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfRkFJTAotI2RlZmluZSBGQUlMKCkg
R1RFU1RfRkFJTCgpCisjIGRlZmluZSBGQUlMKCkgR1RFU1RfRkFJTCgpCiAjZW5kaWYKIAogLy8g
R2VuZXJhdGVzIGEgc3VjY2VzcyB3aXRoIGEgZ2VuZXJpYyBtZXNzYWdlLgpAQCAtMTY2NSw3ICsx
ODY4LDcgQEAgY29uc3QgVCogVGVzdFdpdGhQYXJhbTxUPjo6cGFyYW1ldGVyXyA9IE5VTEw7CiAv
LyBEZWZpbmUgdGhpcyBtYWNybyB0byAxIHRvIG9taXQgdGhlIGRlZmluaXRpb24gb2YgU1VDQ0VF
RCgpLCB3aGljaAogLy8gaXMgYSBnZW5lcmljIG5hbWUgYW5kIGNsYXNoZXMgd2l0aCBzb21lIG90
aGVyIGxpYnJhcmllcy4KICNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfU1VDQ0VFRAotI2RlZmluZSBT
VUNDRUVEKCkgR1RFU1RfU1VDQ0VFRCgpCisjIGRlZmluZSBTVUNDRUVEKCkgR1RFU1RfU1VDQ0VF
RCgpCiAjZW5kaWYKIAogLy8gTWFjcm9zIGZvciB0ZXN0aW5nIGV4Y2VwdGlvbnMuCkBAIC0xNzA2
LDE4ICsxOTA5LDE0IEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBO
VUxMOwogICBHVEVTVF9URVNUX0JPT0xFQU5fKCEoY29uZGl0aW9uKSwgI2NvbmRpdGlvbiwgdHJ1
ZSwgZmFsc2UsIFwKICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9GQVRBTF9GQUlMVVJFXykK
IAotLy8gSW5jbHVkZXMgdGhlIGF1dG8tZ2VuZXJhdGVkIGhlYWRlciB0aGF0IGltcGxlbWVudHMg
YSBmYW1pbHkgb2YKLS8vIGdlbmVyaWMgcHJlZGljYXRlIGFzc2VydGlvbiBtYWNyb3MuCi0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmg+Ci0KIC8vIE1hY3JvcyBmb3IgdGVzdGluZyBl
cXVhbGl0aWVzIGFuZCBpbmVxdWFsaXRpZXMuCiAvLwotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1f
RVEoZXhwZWN0ZWQsIGFjdHVhbCk6IFRlc3RzIHRoYXQgZXhwZWN0ZWQgPT0gYWN0dWFsCi0vLyAg
ICAqIHtBU1NFUlR8RVhQRUNUfV9ORSh2MSwgdjIpOiAgICAgICAgICAgVGVzdHMgdGhhdCB2MSAh
PSB2MgotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTFQodjEsIHYyKTogICAgICAgICAgIFRlc3Rz
IHRoYXQgdjEgPCB2MgotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTEUodjEsIHYyKTogICAgICAg
ICAgIFRlc3RzIHRoYXQgdjEgPD0gdjIKLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0dUKHYxLCB2
Mik6ICAgICAgICAgICBUZXN0cyB0aGF0IHYxID4gdjIKLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9
X0dFKHYxLCB2Mik6ICAgICAgICAgICBUZXN0cyB0aGF0IHYxID49IHYyCisvLyAgICAqIHtBU1NF
UlR8RVhQRUNUfV9FUSh2MSwgdjIpOiBUZXN0cyB0aGF0IHYxID09IHYyCisvLyAgICAqIHtBU1NF
UlR8RVhQRUNUfV9ORSh2MSwgdjIpOiBUZXN0cyB0aGF0IHYxICE9IHYyCisvLyAgICAqIHtBU1NF
UlR8RVhQRUNUfV9MVCh2MSwgdjIpOiBUZXN0cyB0aGF0IHYxIDwgdjIKKy8vICAgICoge0FTU0VS
VHxFWFBFQ1R9X0xFKHYxLCB2Mik6IFRlc3RzIHRoYXQgdjEgPD0gdjIKKy8vICAgICoge0FTU0VS
VHxFWFBFQ1R9X0dUKHYxLCB2Mik6IFRlc3RzIHRoYXQgdjEgPiB2MgorLy8gICAgKiB7QVNTRVJU
fEVYUEVDVH1fR0UodjEsIHYyKTogVGVzdHMgdGhhdCB2MSA+PSB2MgogLy8KIC8vIFdoZW4gdGhl
eSBhcmUgbm90LCBHb29nbGUgVGVzdCBwcmludHMgYm90aCB0aGUgdGVzdGVkIGV4cHJlc3Npb25z
IGFuZAogLy8gdGhlaXIgYWN0dWFsIHZhbHVlcy4gIFRoZSB2YWx1ZXMgbXVzdCBiZSBjb21wYXRp
YmxlIGJ1aWx0LWluIHR5cGVzLApAQCAtMTczOSw4ICsxOTM4LDggQEAgY29uc3QgVCogVGVzdFdp
dGhQYXJhbTxUPjo6cGFyYW1ldGVyXyA9IE5VTEw7CiAvLyAgIGFyZSByZWxhdGVkLCBub3QgaG93
IHRoZWlyIGNvbnRlbnQgaXMgcmVsYXRlZC4gIFRvIGNvbXBhcmUgdHdvIEMKIC8vICAgc3RyaW5n
cyBieSBjb250ZW50LCB1c2Uge0FTU0VSVHxFWFBFQ1R9X1NUUiooKS4KIC8vCi0vLyAgIDMuIHtB
U1NFUlR8RVhQRUNUfV9FUShleHBlY3RlZCwgYWN0dWFsKSBpcyBwcmVmZXJyZWQgdG8KLS8vICAg
e0FTU0VSVHxFWFBFQ1R9X1RSVUUoZXhwZWN0ZWQgPT0gYWN0dWFsKSwgYXMgdGhlIGZvcm1lciB0
ZWxscyB5b3UKKy8vICAgMy4ge0FTU0VSVHxFWFBFQ1R9X0VRKHYxLCB2MikgaXMgcHJlZmVycmVk
IHRvCisvLyAgIHtBU1NFUlR8RVhQRUNUfV9UUlVFKHYxID09IHYyKSwgYXMgdGhlIGZvcm1lciB0
ZWxscyB5b3UKIC8vICAgd2hhdCB0aGUgYWN0dWFsIHZhbHVlIGlzIHdoZW4gaXQgZmFpbHMsIGFu
ZCBzaW1pbGFybHkgZm9yIHRoZQogLy8gICBvdGhlciBjb21wYXJpc29ucy4KIC8vCkBAIC0xNzUx
LDE3ICsxOTUwLDE3IEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBO
VUxMOwogLy8KIC8vIEV4YW1wbGVzOgogLy8KLS8vICAgRVhQRUNUX05FKDUsIEZvbygpKTsKLS8v
ICAgRVhQRUNUX0VRKE5VTEwsIGFfcG9pbnRlcik7CisvLyAgIEVYUEVDVF9ORShGb28oKSwgNSk7
CisvLyAgIEVYUEVDVF9FUShhX3BvaW50ZXIsIE5VTEwpOwogLy8gICBBU1NFUlRfTFQoaSwgYXJy
YXlfc2l6ZSk7CiAvLyAgIEFTU0VSVF9HVChyZWNvcmRzLnNpemUoKSwgMCkgPDwgIlRoZXJlIGlz
IG5vIHJlY29yZCBsZWZ0LiI7CiAKLSNkZWZpbmUgRVhQRUNUX0VRKGV4cGVjdGVkLCBhY3R1YWwp
IFwKKyNkZWZpbmUgRVhQRUNUX0VRKHZhbDEsIHZhbDIpIFwKICAgRVhQRUNUX1BSRURfRk9STUFU
Mig6OnRlc3Rpbmc6OmludGVybmFsOjogXAotICAgICAgICAgICAgICAgICAgICAgIEVxSGVscGVy
PEdURVNUX0lTX05VTExfTElURVJBTF8oZXhwZWN0ZWQpPjo6Q29tcGFyZSwgXAotICAgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkLCBhY3R1YWwpCi0jZGVmaW5lIEVYUEVDVF9ORShleHBlY3Rl
ZCwgYWN0dWFsKSBcCi0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
Q21wSGVscGVyTkUsIGV4cGVjdGVkLCBhY3R1YWwpCisgICAgICAgICAgICAgICAgICAgICAgRXFI
ZWxwZXI8R1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh2YWwxKT46OkNvbXBhcmUsIFwKKyAgICAgICAg
ICAgICAgICAgICAgICB2YWwxLCB2YWwyKQorI2RlZmluZSBFWFBFQ1RfTkUodmFsMSwgdmFsMikg
XAorICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlck5F
LCB2YWwxLCB2YWwyKQogI2RlZmluZSBFWFBFQ1RfTEUodmFsMSwgdmFsMikgXAogICBFWFBFQ1Rf
UFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckxFLCB2YWwxLCB2YWwy
KQogI2RlZmluZSBFWFBFQ1RfTFQodmFsMSwgdmFsMikgXApAQCAtMTc3MSwyMiArMTk3MCw0OSBA
QCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKICNkZWZpbmUg
RVhQRUNUX0dUKHZhbDEsIHZhbDIpIFwKICAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6
OmludGVybmFsOjpDbXBIZWxwZXJHVCwgdmFsMSwgdmFsMikKIAotI2RlZmluZSBBU1NFUlRfRVEo
ZXhwZWN0ZWQsIGFjdHVhbCkgXAorI2RlZmluZSBHVEVTVF9BU1NFUlRfRVEodmFsMSwgdmFsMikg
XAogICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OiBcCi0gICAgICAg
ICAgICAgICAgICAgICAgRXFIZWxwZXI8R1RFU1RfSVNfTlVMTF9MSVRFUkFMXyhleHBlY3RlZCk+
OjpDb21wYXJlLCBcCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQsIGFjdHVhbCkKLSNk
ZWZpbmUgQVNTRVJUX05FKHZhbDEsIHZhbDIpIFwKKyAgICAgICAgICAgICAgICAgICAgICBFcUhl
bHBlcjxHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHZhbDEpPjo6Q29tcGFyZSwgXAorICAgICAgICAg
ICAgICAgICAgICAgIHZhbDEsIHZhbDIpCisjZGVmaW5lIEdURVNUX0FTU0VSVF9ORSh2YWwxLCB2
YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVs
cGVyTkUsIHZhbDEsIHZhbDIpCi0jZGVmaW5lIEFTU0VSVF9MRSh2YWwxLCB2YWwyKSBcCisjZGVm
aW5lIEdURVNUX0FTU0VSVF9MRSh2YWwxLCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIo
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyTEUsIHZhbDEsIHZhbDIpCi0jZGVmaW5lIEFT
U0VSVF9MVCh2YWwxLCB2YWwyKSBcCisjZGVmaW5lIEdURVNUX0FTU0VSVF9MVCh2YWwxLCB2YWwy
KSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVy
TFQsIHZhbDEsIHZhbDIpCi0jZGVmaW5lIEFTU0VSVF9HRSh2YWwxLCB2YWwyKSBcCisjZGVmaW5l
IEdURVNUX0FTU0VSVF9HRSh2YWwxLCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0
ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyR0UsIHZhbDEsIHZhbDIpCi0jZGVmaW5lIEFTU0VS
VF9HVCh2YWwxLCB2YWwyKSBcCisjZGVmaW5lIEdURVNUX0FTU0VSVF9HVCh2YWwxLCB2YWwyKSBc
CiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyR1Qs
IHZhbDEsIHZhbDIpCiAKLS8vIEMgU3RyaW5nIENvbXBhcmlzb25zLiAgQWxsIHRlc3RzIHRyZWF0
IE5VTEwgYW5kIGFueSBub24tTlVMTCBzdHJpbmcKKy8vIERlZmluZSBtYWNybyBHVEVTVF9ET05U
X0RFRklORV9BU1NFUlRfWFkgdG8gMSB0byBvbWl0IHRoZSBkZWZpbml0aW9uIG9mCisvLyBBU1NF
UlRfWFkoKSwgd2hpY2ggY2xhc2hlcyB3aXRoIHNvbWUgdXNlcnMnIG93biBjb2RlLgorCisjaWYg
IUdURVNUX0RPTlRfREVGSU5FX0FTU0VSVF9FUQorIyBkZWZpbmUgQVNTRVJUX0VRKHZhbDEsIHZh
bDIpIEdURVNUX0FTU0VSVF9FUSh2YWwxLCB2YWwyKQorI2VuZGlmCisKKyNpZiAhR1RFU1RfRE9O
VF9ERUZJTkVfQVNTRVJUX05FCisjIGRlZmluZSBBU1NFUlRfTkUodmFsMSwgdmFsMikgR1RFU1Rf
QVNTRVJUX05FKHZhbDEsIHZhbDIpCisjZW5kaWYKKworI2lmICFHVEVTVF9ET05UX0RFRklORV9B
U1NFUlRfTEUKKyMgZGVmaW5lIEFTU0VSVF9MRSh2YWwxLCB2YWwyKSBHVEVTVF9BU1NFUlRfTEUo
dmFsMSwgdmFsMikKKyNlbmRpZgorCisjaWYgIUdURVNUX0RPTlRfREVGSU5FX0FTU0VSVF9MVAor
IyBkZWZpbmUgQVNTRVJUX0xUKHZhbDEsIHZhbDIpIEdURVNUX0FTU0VSVF9MVCh2YWwxLCB2YWwy
KQorI2VuZGlmCisKKyNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX0dFCisjIGRlZmluZSBB
U1NFUlRfR0UodmFsMSwgdmFsMikgR1RFU1RfQVNTRVJUX0dFKHZhbDEsIHZhbDIpCisjZW5kaWYK
KworI2lmICFHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfR1QKKyMgZGVmaW5lIEFTU0VSVF9HVCh2
YWwxLCB2YWwyKSBHVEVTVF9BU1NFUlRfR1QodmFsMSwgdmFsMikKKyNlbmRpZgorCisvLyBDLXN0
cmluZyBDb21wYXJpc29ucy4gIEFsbCB0ZXN0cyB0cmVhdCBOVUxMIGFuZCBhbnkgbm9uLU5VTEwg
c3RyaW5nCiAvLyBhcyBkaWZmZXJlbnQuICBUd28gTlVMTHMgYXJlIGVxdWFsLgogLy8KIC8vICAg
ICoge0FTU0VSVHxFWFBFQ1R9X1NUUkVRKHMxLCBzMik6ICAgICBUZXN0cyB0aGF0IHMxID09IHMy
CkBAIC0xODAyLDI5ICsyMDI4LDI5IEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFt
ZXRlcl8gPSBOVUxMOwogLy8KIC8vIFRoZXNlIG1hY3JvcyBldmFsdWF0ZSB0aGVpciBhcmd1bWVu
dHMgZXhhY3RseSBvbmNlLgogCi0jZGVmaW5lIEVYUEVDVF9TVFJFUShleHBlY3RlZCwgYWN0dWFs
KSBcCi0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVy
U1RSRVEsIGV4cGVjdGVkLCBhY3R1YWwpCisjZGVmaW5lIEVYUEVDVF9TVFJFUShzMSwgczIpIFwK
KyAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJF
USwgczEsIHMyKQogI2RlZmluZSBFWFBFQ1RfU1RSTkUoczEsIHMyKSBcCiAgIEVYUEVDVF9QUkVE
X0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSTkUsIHMxLCBzMikKLSNk
ZWZpbmUgRVhQRUNUX1NUUkNBU0VFUShleHBlY3RlZCwgYWN0dWFsKSBcCi0gIEVYUEVDVF9QUkVE
X0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSQ0FTRUVRLCBleHBlY3Rl
ZCwgYWN0dWFsKQorI2RlZmluZSBFWFBFQ1RfU1RSQ0FTRUVRKHMxLCBzMikgXAorICBFWFBFQ1Rf
UFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkNBU0VFUSwgczEs
IHMyKQogI2RlZmluZSBFWFBFQ1RfU1RSQ0FTRU5FKHMxLCBzMilcCiAgIEVYUEVDVF9QUkVEX0ZP
Uk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSQ0FTRU5FLCBzMSwgczIpCiAK
LSNkZWZpbmUgQVNTRVJUX1NUUkVRKGV4cGVjdGVkLCBhY3R1YWwpIFwKLSAgQVNTRVJUX1BSRURf
Rk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJFUSwgZXhwZWN0ZWQsIGFj
dHVhbCkKKyNkZWZpbmUgQVNTRVJUX1NUUkVRKHMxLCBzMikgXAorICBBU1NFUlRfUFJFRF9GT1JN
QVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkVRLCBzMSwgczIpCiAjZGVmaW5l
IEFTU0VSVF9TVFJORShzMSwgczIpIFwKICAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6
OmludGVybmFsOjpDbXBIZWxwZXJTVFJORSwgczEsIHMyKQotI2RlZmluZSBBU1NFUlRfU1RSQ0FT
RUVRKGV4cGVjdGVkLCBhY3R1YWwpIFwKLSAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6
OmludGVybmFsOjpDbXBIZWxwZXJTVFJDQVNFRVEsIGV4cGVjdGVkLCBhY3R1YWwpCisjZGVmaW5l
IEFTU0VSVF9TVFJDQVNFRVEoczEsIHMyKSBcCisgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0
aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSQ0FTRUVRLCBzMSwgczIpCiAjZGVmaW5lIEFTU0VS
VF9TVFJDQVNFTkUoczEsIHMyKVwKICAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6Omlu
dGVybmFsOjpDbXBIZWxwZXJTVFJDQVNFTkUsIHMxLCBzMikKIAogLy8gTWFjcm9zIGZvciBjb21w
YXJpbmcgZmxvYXRpbmctcG9pbnQgbnVtYmVycy4KIC8vCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNU
fV9GTE9BVF9FUShleHBlY3RlZCwgYWN0dWFsKToKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0ZM
T0FUX0VRKHZhbDEsIHZhbDIpOgogLy8gICAgICAgICBUZXN0cyB0aGF0IHR3byBmbG9hdCB2YWx1
ZXMgYXJlIGFsbW9zdCBlcXVhbC4KLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0RPVUJMRV9FUShl
eHBlY3RlZCwgYWN0dWFsKToKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0RPVUJMRV9FUSh2YWwx
LCB2YWwyKToKIC8vICAgICAgICAgVGVzdHMgdGhhdCB0d28gZG91YmxlIHZhbHVlcyBhcmUgYWxt
b3N0IGVxdWFsLgogLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTkVBUih2MSwgdjIsIGFic19lcnJv
cik6CiAvLyAgICAgICAgIFRlc3RzIHRoYXQgdjEgYW5kIHYyIGFyZSB3aXRoaW4gdGhlIGdpdmVu
IGRpc3RhbmNlIHRvIGVhY2ggb3RoZXIuCkBAIC0xODM0LDIxICsyMDYwLDIxIEBAIGNvbnN0IFQq
IFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogLy8gRmxvYXRpbmdQb2ludCB0
ZW1wbGF0ZSBjbGFzcyBpbiBndGVzdC1pbnRlcm5hbC5oIGlmIHlvdSBhcmUKIC8vIGludGVyZXN0
ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCiAKLSNkZWZpbmUgRVhQRUNUX0ZMT0FU
X0VRKGV4cGVjdGVkLCBhY3R1YWwpXAorI2RlZmluZSBFWFBFQ1RfRkxPQVRfRVEodmFsMSwgdmFs
MilcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVy
RmxvYXRpbmdQb2ludEVRPGZsb2F0PiwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
LCBhY3R1YWwpCisgICAgICAgICAgICAgICAgICAgICAgdmFsMSwgdmFsMikKIAotI2RlZmluZSBF
WFBFQ1RfRE9VQkxFX0VRKGV4cGVjdGVkLCBhY3R1YWwpXAorI2RlZmluZSBFWFBFQ1RfRE9VQkxF
X0VRKHZhbDEsIHZhbDIpXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJu
YWw6OkNtcEhlbHBlckZsb2F0aW5nUG9pbnRFUTxkb3VibGU+LCBcCi0gICAgICAgICAgICAgICAg
ICAgICAgZXhwZWN0ZWQsIGFjdHVhbCkKKyAgICAgICAgICAgICAgICAgICAgICB2YWwxLCB2YWwy
KQogCi0jZGVmaW5lIEFTU0VSVF9GTE9BVF9FUShleHBlY3RlZCwgYWN0dWFsKVwKKyNkZWZpbmUg
QVNTRVJUX0ZMT0FUX0VRKHZhbDEsIHZhbDIpXAogICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVz
dGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckZsb2F0aW5nUG9pbnRFUTxmbG9hdD4sIFwKLSAgICAg
ICAgICAgICAgICAgICAgICBleHBlY3RlZCwgYWN0dWFsKQorICAgICAgICAgICAgICAgICAgICAg
IHZhbDEsIHZhbDIpCiAKLSNkZWZpbmUgQVNTRVJUX0RPVUJMRV9FUShleHBlY3RlZCwgYWN0dWFs
KVwKKyNkZWZpbmUgQVNTRVJUX0RPVUJMRV9FUSh2YWwxLCB2YWwyKVwKICAgQVNTRVJUX1BSRURf
Rk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJGbG9hdGluZ1BvaW50RVE8ZG91
YmxlPiwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLCBhY3R1YWwpCisgICAgICAg
ICAgICAgICAgICAgICAgdmFsMSwgdmFsMikKIAogI2RlZmluZSBFWFBFQ1RfTkVBUih2YWwxLCB2
YWwyLCBhYnNfZXJyb3IpXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQzKDo6dGVzdGluZzo6aW50ZXJu
YWw6OkRvdWJsZU5lYXJQcmVkRm9ybWF0LCBcCkBAIC0xODgyLDE2ICsyMTA4LDE2IEBAIEdURVNU
X0FQSV8gQXNzZXJ0aW9uUmVzdWx0IERvdWJsZUxFKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBj
aGFyKiBleHByMiwKIC8vIGV4cGVjdGVkIHJlc3VsdCBhbmQgdGhlIGFjdHVhbCByZXN1bHQgd2l0
aCBib3RoIGEgaHVtYW4tcmVhZGFibGUKIC8vIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUg
ZXJyb3IsIGlmIGF2YWlsYWJsZSwgYXMgd2VsbCBhcyB0aGUKIC8vIGhleCByZXN1bHQgY29kZS4K
LSNkZWZpbmUgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKGV4cHIpIFwKKyMgZGVmaW5lIEVYUEVD
VF9IUkVTVUxUX1NVQ0NFRURFRChleHByKSBcCiAgICAgRVhQRUNUX1BSRURfRk9STUFUMSg6OnRl
c3Rpbmc6OmludGVybmFsOjpJc0hSRVNVTFRTdWNjZXNzLCAoZXhwcikpCiAKLSNkZWZpbmUgQVNT
RVJUX0hSRVNVTFRfU1VDQ0VFREVEKGV4cHIpIFwKKyMgZGVmaW5lIEFTU0VSVF9IUkVTVUxUX1NV
Q0NFRURFRChleHByKSBcCiAgICAgQVNTRVJUX1BSRURfRk9STUFUMSg6OnRlc3Rpbmc6OmludGVy
bmFsOjpJc0hSRVNVTFRTdWNjZXNzLCAoZXhwcikpCiAKLSNkZWZpbmUgRVhQRUNUX0hSRVNVTFRf
RkFJTEVEKGV4cHIpIFwKKyMgZGVmaW5lIEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChleHByKSBcCiAg
ICAgRVhQRUNUX1BSRURfRk9STUFUMSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hSRVNVTFRGYWls
dXJlLCAoZXhwcikpCiAKLSNkZWZpbmUgQVNTRVJUX0hSRVNVTFRfRkFJTEVEKGV4cHIpIFwKKyMg
ZGVmaW5lIEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChleHByKSBcCiAgICAgQVNTRVJUX1BSRURfRk9S
TUFUMSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hSRVNVTFRGYWlsdXJlLCAoZXhwcikpCiAKICNl
bmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwpAQCAtMTkxMSw2ICsyMTM3LDU3IEBAIEdURVNUX0FQ
SV8gQXNzZXJ0aW9uUmVzdWx0IERvdWJsZUxFKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFy
KiBleHByMiwKICNkZWZpbmUgRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoc3RhdGVtZW50KSBcCiAg
ICAgR1RFU1RfVEVTVF9OT19GQVRBTF9GQUlMVVJFXyhzdGF0ZW1lbnQsIEdURVNUX05PTkZBVEFM
X0ZBSUxVUkVfKQogCisvLyBDYXVzZXMgYSB0cmFjZSAoaW5jbHVkaW5nIHRoZSBnaXZlbiBzb3Vy
Y2UgZmlsZSBwYXRoIGFuZCBsaW5lIG51bWJlciwKKy8vIGFuZCB0aGUgZ2l2ZW4gbWVzc2FnZSkg
dG8gYmUgaW5jbHVkZWQgaW4gZXZlcnkgdGVzdCBmYWlsdXJlIG1lc3NhZ2UgZ2VuZXJhdGVkCisv
LyBieSBjb2RlIGluIHRoZSBzY29wZSBvZiB0aGUgbGlmZXRpbWUgb2YgYW4gaW5zdGFuY2Ugb2Yg
dGhpcyBjbGFzcy4gVGhlIGVmZmVjdAorLy8gaXMgdW5kb25lIHdpdGggdGhlIGRlc3RydWN0aW9u
IG9mIHRoZSBpbnN0YW5jZS4KKy8vCisvLyBUaGUgbWVzc2FnZSBhcmd1bWVudCBjYW4gYmUgYW55
dGhpbmcgc3RyZWFtYWJsZSB0byBzdGQ6Om9zdHJlYW0uCisvLworLy8gRXhhbXBsZToKKy8vICAg
dGVzdGluZzo6U2NvcGVkVHJhY2UgdHJhY2UoImZpbGUuY2MiLCAxMjMsICJtZXNzYWdlIik7Cisv
LworY2xhc3MgR1RFU1RfQVBJXyBTY29wZWRUcmFjZSB7CisgcHVibGljOgorICAvLyBUaGUgYyd0
b3IgcHVzaGVzIHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlvbiBhbmQgbWVzc2FnZSBvbnRv
CisgIC8vIGEgdHJhY2Ugc3RhY2sgbWFpbnRhaW5lZCBieSBHb29nbGUgVGVzdC4KKworICAvLyBU
ZW1wbGF0ZSB2ZXJzaW9uLiBVc2VzIE1lc3NhZ2UoKSB0byBjb252ZXJ0IHRoZSB2YWx1ZXMgaW50
byBzdHJpbmdzLgorICAvLyBTbG93LCBidXQgZmxleGlibGUuCisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorICBTY29wZWRUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgVCYg
bWVzc2FnZSkgeworICAgIFB1c2hUcmFjZShmaWxlLCBsaW5lLCAoTWVzc2FnZSgpIDw8IG1lc3Nh
Z2UpLkdldFN0cmluZygpKTsKKyAgfQorCisgIC8vIE9wdGltaXplIGZvciBzb21lIGtub3duIHR5
cGVzLgorICBTY29wZWRUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hh
ciogbWVzc2FnZSkgeworICAgIFB1c2hUcmFjZShmaWxlLCBsaW5lLCBtZXNzYWdlID8gbWVzc2Fn
ZSA6ICIobnVsbCkiKTsKKyAgfQorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKyAgU2Nv
cGVkVHJhY2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IDo6c3RyaW5nJiBtZXNz
YWdlKSB7CisgICAgUHVzaFRyYWNlKGZpbGUsIGxpbmUsIG1lc3NhZ2UpOworICB9CisjZW5kaWYK
KworICBTY29wZWRUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3Qgc3RkOjpz
dHJpbmcmIG1lc3NhZ2UpIHsKKyAgICBQdXNoVHJhY2UoZmlsZSwgbGluZSwgbWVzc2FnZSk7Cisg
IH0KKworICAvLyBUaGUgZCd0b3IgcG9wcyB0aGUgaW5mbyBwdXNoZWQgYnkgdGhlIGMndG9yLgor
ICAvLworICAvLyBOb3RlIHRoYXQgdGhlIGQndG9yIGlzIG5vdCB2aXJ0dWFsIGluIG9yZGVyIHRv
IGJlIGVmZmljaWVudC4KKyAgLy8gRG9uJ3QgaW5oZXJpdCBmcm9tIFNjb3BlZFRyYWNlIQorICB+
U2NvcGVkVHJhY2UoKTsKKworIHByaXZhdGU6CisgIHZvaWQgUHVzaFRyYWNlKGNvbnN0IGNoYXIq
IGZpbGUsIGludCBsaW5lLCBzdGQ6OnN0cmluZyBtZXNzYWdlKTsKKworICBHVEVTVF9ESVNBTExP
V19DT1BZX0FORF9BU1NJR05fKFNjb3BlZFRyYWNlKTsKK30gR1RFU1RfQVRUUklCVVRFX1VOVVNF
RF87ICAvLyBBIFNjb3BlZFRyYWNlIG9iamVjdCBkb2VzIGl0cyBqb2IgaW4gaXRzCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gYyd0b3IgYW5kIGQndG9yLiAgVGhlcmVmb3JlIGl0IGRv
ZXNuJ3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZWVkIHRvIGJlIHVzZWQgb3Ro
ZXJ3aXNlLgorCiAvLyBDYXVzZXMgYSB0cmFjZSAoaW5jbHVkaW5nIHRoZSBzb3VyY2UgZmlsZSBw
YXRoLCB0aGUgY3VycmVudCBsaW5lCiAvLyBudW1iZXIsIGFuZCB0aGUgZ2l2ZW4gbWVzc2FnZSkg
dG8gYmUgaW5jbHVkZWQgaW4gZXZlcnkgdGVzdCBmYWlsdXJlCiAvLyBtZXNzYWdlIGdlbmVyYXRl
ZCBieSBjb2RlIGluIHRoZSBjdXJyZW50IHNjb3BlLiAgVGhlIGVmZmVjdCBpcwpAQCAtMTkyMiwy
MCArMjE5OSwxNCBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBEb3VibGVMRShjb25zdCBj
aGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIsCiAvLyBvZiB0aGUgZHVtbXkgdmFyaWFibGUg
bmFtZSwgdGh1cyBhbGxvd2luZyBtdWx0aXBsZSBTQ09QRURfVFJBQ0UoKXMKIC8vIHRvIGFwcGVh
ciBpbiB0aGUgc2FtZSBibG9jayAtIGFzIGxvbmcgYXMgdGhleSBhcmUgb24gZGlmZmVyZW50CiAv
LyBsaW5lcy4KKy8vCisvLyBBc3N1bWluZyB0aGF0IGVhY2ggdGhyZWFkIG1haW50YWlucyBpdHMg
b3duIHN0YWNrIG9mIHRyYWNlcy4KKy8vIFRoZXJlZm9yZSwgYSBTQ09QRURfVFJBQ0UoKSB3b3Vs
ZCAoY29ycmVjdGx5KSBvbmx5IGFmZmVjdCB0aGUKKy8vIGFzc2VydGlvbnMgaW4gaXRzIG93biB0
aHJlYWQuCiAjZGVmaW5lIFNDT1BFRF9UUkFDRShtZXNzYWdlKSBcCi0gIDo6dGVzdGluZzo6aW50
ZXJuYWw6OlNjb3BlZFRyYWNlIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfdHJhY2VfLCBfX0xJ
TkVfXykoXAotICAgIF9fRklMRV9fLCBfX0xJTkVfXywgOjp0ZXN0aW5nOjpNZXNzYWdlKCkgPDwg
KG1lc3NhZ2UpKQotCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBUaGlzIHRlbXBsYXRlIGlz
IGRlY2xhcmVkLCBidXQgaW50ZW50aW9uYWxseSB1bmRlZmluZWQuCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyPgotc3RydWN0IFN0YXRpY0Fzc2VydFR5cGVFcUhlbHBlcjsKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgU3RhdGljQXNzZXJ0VHlwZUVxSGVscGVyPFQs
IFQ+IHt9OworICA6OnRlc3Rpbmc6OlNjb3BlZFRyYWNlIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rl
c3RfdHJhY2VfLCBfX0xJTkVfXykoXAorICAgIF9fRklMRV9fLCBfX0xJTkVfXywgKG1lc3NhZ2Up
KQogCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAogLy8gQ29tcGlsZS10aW1lIGFzc2VydGlv
biBmb3IgdHlwZSBlcXVhbGl0eS4KIC8vIFN0YXRpY0Fzc2VydFR5cGVFcTx0eXBlMSwgdHlwZTI+
KCkgY29tcGlsZXMgaWZmIHR5cGUxIGFuZCB0eXBlMiBhcmUKQEAgLTE5NjksNyArMjI0MCw3IEBA
IHN0cnVjdCBTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI8VCwgVD4ge307CiAvLyB0byBjYXVzZSBh
IGNvbXBpbGVyIGVycm9yLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KIGJv
b2wgU3RhdGljQXNzZXJ0VHlwZUVxKCkgewotICBpbnRlcm5hbDo6U3RhdGljQXNzZXJ0VHlwZUVx
SGVscGVyPFQxLCBUMj4oKTsKKyAgKHZvaWQpaW50ZXJuYWw6OlN0YXRpY0Fzc2VydFR5cGVFcUhl
bHBlcjxUMSwgVDI+KCk7CiAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xOTgxLDggKzIyNTIsOCBA
QCBib29sIFN0YXRpY0Fzc2VydFR5cGVFcSgpIHsKIC8vIFRoZSBjb252ZW50aW9uIGlzIHRvIGVu
ZCB0aGUgdGVzdCBjYXNlIG5hbWUgd2l0aCAiVGVzdCIuICBGb3IKIC8vIGV4YW1wbGUsIGEgdGVz
dCBjYXNlIGZvciB0aGUgRm9vIGNsYXNzIGNhbiBiZSBuYW1lZCBGb29UZXN0LgogLy8KLS8vIFRo
ZSB1c2VyIHNob3VsZCBwdXQgaGlzIHRlc3QgY29kZSBiZXR3ZWVuIGJyYWNlcyBhZnRlciB1c2lu
ZyB0aGlzCi0vLyBtYWNyby4gIEV4YW1wbGU6CisvLyBUZXN0IGNvZGUgc2hvdWxkIGFwcGVhciBi
ZXR3ZWVuIGJyYWNlcyBhZnRlciBhbiBpbnZvY2F0aW9uIG9mCisvLyB0aGlzIG1hY3JvLiAgRXhh
bXBsZToKIC8vCiAvLyAgIFRFU1QoRm9vVGVzdCwgSW5pdGlhbGl6ZXNDb3JyZWN0bHkpIHsKIC8v
ICAgICBGb28gZm9vOwpAQCAtMjAwNSw3ICsyMjc2LDcgQEAgYm9vbCBTdGF0aWNBc3NlcnRUeXBl
RXEoKSB7CiAvLyBEZWZpbmUgdGhpcyBtYWNybyB0byAxIHRvIG9taXQgdGhlIGRlZmluaXRpb24g
b2YgVEVTVCgpLCB3aGljaAogLy8gaXMgYSBnZW5lcmljIG5hbWUgYW5kIGNsYXNoZXMgd2l0aCBz
b21lIG90aGVyIGxpYnJhcmllcy4KICNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfVEVTVAotI2RlZmlu
ZSBURVNUKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIEdURVNUX1RFU1QodGVzdF9jYXNlX25h
bWUsIHRlc3RfbmFtZSkKKyMgZGVmaW5lIFRFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkg
R1RFU1RfVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKQogI2VuZGlmCiAKIC8vIERlZmlu
ZXMgYSB0ZXN0IHRoYXQgdXNlcyBhIHRlc3QgZml4dHVyZS4KQEAgLTIwMTUsNyArMjI4Niw3IEBA
IGJvb2wgU3RhdGljQXNzZXJ0VHlwZUVxKCkgewogLy8gbmFtZSBvZiB0aGUgdGVzdCB3aXRoaW4g
dGhlIHRlc3QgY2FzZS4KIC8vCiAvLyBBIHRlc3QgZml4dHVyZSBjbGFzcyBtdXN0IGJlIGRlY2xh
cmVkIGVhcmxpZXIuICBUaGUgdXNlciBzaG91bGQgcHV0Ci0vLyBoaXMgdGVzdCBjb2RlIGJldHdl
ZW4gYnJhY2VzIGFmdGVyIHVzaW5nIHRoaXMgbWFjcm8uICBFeGFtcGxlOgorLy8gdGhlIHRlc3Qg
Y29kZSBiZXR3ZWVuIGJyYWNlcyBhZnRlciB1c2luZyB0aGlzIG1hY3JvLiAgRXhhbXBsZToKIC8v
CiAvLyAgIGNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAvLyAgICBwcm90
ZWN0ZWQ6CkBAIC0yMDMwLDIzICsyMzAxLDM4IEBAIGJvb2wgU3RhdGljQXNzZXJ0VHlwZUVxKCkg
ewogLy8gICB9CiAvLwogLy8gICBURVNUX0YoRm9vVGVzdCwgUmV0dXJuc0VsZW1lbnRDb3VudENv
cnJlY3RseSkgewotLy8gICAgIEVYUEVDVF9FUSgwLCBhXy5zaXplKCkpOwotLy8gICAgIEVYUEVD
VF9FUSgxLCBiXy5zaXplKCkpOworLy8gICAgIEVYUEVDVF9FUShhXy5zaXplKCksIDApOworLy8g
ICAgIEVYUEVDVF9FUShiXy5zaXplKCksIDEpOwogLy8gICB9CiAKICNkZWZpbmUgVEVTVF9GKHRl
c3RfZml4dHVyZSwgdGVzdF9uYW1lKVwKICAgR1RFU1RfVEVTVF8odGVzdF9maXh0dXJlLCB0ZXN0
X25hbWUsIHRlc3RfZml4dHVyZSwgXAogICAgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFs
OjpHZXRUeXBlSWQ8dGVzdF9maXh0dXJlPigpKQogCi0vLyBVc2UgdGhpcyBtYWNybyBpbiBtYWlu
KCkgdG8gcnVuIGFsbCB0ZXN0cy4gIEl0IHJldHVybnMgMCBpZiBhbGwKKy8vIFJldHVybnMgYSBw
YXRoIHRvIHRlbXBvcmFyeSBkaXJlY3RvcnkuCisvLyBUcmllcyB0byBkZXRlcm1pbmUgYW4gYXBw
cm9wcmlhdGUgZGlyZWN0b3J5IGZvciB0aGUgcGxhdGZvcm0uCitHVEVTVF9BUElfIHN0ZDo6c3Ry
aW5nIFRlbXBEaXIoKTsKKworI2lmZGVmIF9NU0NfVkVSCisjICBwcmFnbWEgd2FybmluZyhwb3Ap
CisjZW5kaWYKKworfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKworLy8gVXNlIHRoaXMgZnVuY3Rp
b24gaW4gbWFpbigpIHRvIHJ1biBhbGwgdGVzdHMuICBJdCByZXR1cm5zIDAgaWYgYWxsCiAvLyB0
ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3IgMSBvdGhlcndpc2UuCiAvLwogLy8gUlVOX0FMTF9URVNU
UygpIHNob3VsZCBiZSBpbnZva2VkIGFmdGVyIHRoZSBjb21tYW5kIGxpbmUgaGFzIGJlZW4KIC8v
IHBhcnNlZCBieSBJbml0R29vZ2xlVGVzdCgpLgorLy8KKy8vIFRoaXMgZnVuY3Rpb24gd2FzIGZv
cm1lcmx5IGEgbWFjcm87IHRodXMsIGl0IGlzIGluIHRoZSBnbG9iYWwKKy8vIG5hbWVzcGFjZSBh
bmQgaGFzIGFuIGFsbC1jYXBzIG5hbWUuCitpbnQgUlVOX0FMTF9URVNUUygpIEdURVNUX01VU1Rf
VVNFX1JFU1VMVF87CiAKLSNkZWZpbmUgUlVOX0FMTF9URVNUUygpXAotICAoOjp0ZXN0aW5nOjpV
bml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+UnVuKCkpCitpbmxpbmUgaW50IFJVTl9BTExfVEVTVFMo
KSB7CisgIHJldHVybiA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5SdW4oKTsK
K30KIAotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdT
X1BPUF8oKSAgLy8gIDQyNTEKIAogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNU
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0
ZXN0X3ByZWRfaW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9n
dGVzdF9wcmVkX2ltcGwuaAppbmRleCBlMWUyZjhjNGM4ODdhOGRlZmNiNzU4Y2EwY2FhYjNiN2Nl
YjlkNDFhLi4wYzExMDVjYjhlYjJlZjdjMjYxNmU2N2ZmNTU1NmFhYjI5ZmYyZDFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1w
bC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJl
ZF9pbXBsLmgKQEAgLTI3LDE4ICsyNywxOSBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogCi0vLyBUaGlzIGZpbGUgaXMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQgb24gMTAvMDIv
MjAwOCBieSBjb21tYW5kCisvLyBUaGlzIGZpbGUgaXMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQg
b24gMDEvMDIvMjAxOCBieSBjb21tYW5kCiAvLyAnZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weSA1Jy4g
IERPIE5PVCBFRElUIEJZIEhBTkQhCiAvLwogLy8gSW1wbGVtZW50cyBhIGZhbWlseSBvZiBnZW5l
cmljIHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9zLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBE
TyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lN
UExfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KIAot
Ly8gTWFrZXMgc3VyZSB0aGlzIGhlYWRlciBpcyBub3QgaW5jbHVkZWQgYmVmb3JlIGd0ZXN0Lmgu
Ci0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KLSNlcnJvciBEbyBub3QgaW5j
bHVkZSBndGVzdF9wcmVkX2ltcGwuaCBkaXJlY3RseS4gIEluY2x1ZGUgZ3Rlc3QuaCBpbnN0ZWFk
LgotI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0hfCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHRlc3RpbmcgewogCiAvLyBUaGlzIGhlYWRlciBpbXBs
ZW1lbnRzIGEgZmFtaWx5IG9mIGdlbmVyaWMgcHJlZGljYXRlIGFzc2VydGlvbgogLy8gbWFjcm9z
OgpAQCAtNjYsOCArNjcsNiBAQAogLy8gV2UgYWxzbyBkZWZpbmUgdGhlIEVYUEVDVF8qIHZhcmlh
dGlvbnMuCiAvLwogLy8gRm9yIG5vdyB3ZSBvbmx5IHN1cHBvcnQgcHJlZGljYXRlcyB3aG9zZSBh
cml0eSBpcyBhdCBtb3N0IDUuCi0vLyBQbGVhc2UgZW1haWwgZ29vZ2xldGVzdGZyYW1ld29ya0Bn
b29nbGVncm91cHMuY29tIGlmIHlvdSBuZWVkCi0vLyBzdXBwb3J0IGZvciBoaWdoZXIgYXJpdGll
cy4KIAogLy8gR1RFU1RfQVNTRVJUXyBpcyB0aGUgYmFzaWMgc3RhdGVtZW50IHRvIHdoaWNoIGFs
bCBvZiB0aGUgYXNzZXJ0aW9ucwogLy8gaW4gdGhpcyBmaWxlIHJlZHVjZS4gIERvbid0IHVzZSB0
aGlzIGluIHlvdXIgY29kZS4KQEAgLTkwLDE3ICs4OSwxNSBAQCBBc3NlcnRpb25SZXN1bHQgQXNz
ZXJ0UHJlZDFIZWxwZXIoY29uc3QgY2hhciogcHJlZF90ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFQxJiB2MSkgewogICBpZiAocHJlZCh2MSkpIHJldHVybiBB
c3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBwcmVkX3RleHQg
PDwgIigiCi0gICAgICA8PCBlMSA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgotICAg
ICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxOwotICByZXR1cm4gQXNz
ZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRf
dGV4dCA8PCAiKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMSA8PCAiKSBldmFs
dWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJc
biIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MTsKIH0KIAogLy8gSW50ZXJuYWwgbWFj
cm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQxLgogLy8gRG9u
J3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDFfKHBy
ZWRfZm9ybWF0LCB2MSwgb25fZmFpbHVyZSlcCi0gIEdURVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQo
I3YxLCB2MSksXAorICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgdjEpLCBcCiAgICAg
ICAgICAgICAgICAgb25fZmFpbHVyZSkKIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVu
dGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRDEuICBEb24ndCB1c2UKQEAgLTEzNiwxOSArMTMzLDE3
IEBAIEFzc2VydGlvblJlc3VsdCBBc3NlcnRQcmVkMkhlbHBlcihjb25zdCBjaGFyKiBwcmVkX3Rl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDImIHYyKSB7CiAg
IGlmIChwcmVkKHYxLCB2MikpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgTWVzc2Fn
ZSBtc2c7Ci0gIG1zZyA8PCBwcmVkX3RleHQgPDwgIigiCi0gICAgICA8PCBlMSA8PCAiLCAiCi0g
ICAgICA8PCBlMiA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgotICAgICAgPDwgIlxu
IiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxCi0gICAgICA8PCAiXG4iIDw8IGUyIDw8
ICIgZXZhbHVhdGVzIHRvICIgPDwgdjI7Ci0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7
CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgcHJlZF90ZXh0IDw8ICIoIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8IGUxIDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCBlMiA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2
MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0
ZXMgdG8gIiA8PCB2MjsKIH0KIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7
RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQyLgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBj
b2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDJfKHByZWRfZm9ybWF0LCB2MSwgdjIsIG9u
X2ZhaWx1cmUpXAotICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCB2MSwgdjIp
LFwKKyAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgdjEsIHYyKSwgXAogICAg
ICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1l
bnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQyLiAgRG9uJ3QgdXNlCkBAIC0xODksMjEgKzE4NCwx
OSBAQCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDNIZWxwZXIoY29uc3QgY2hhciogcHJlZF90
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQzJiB2Mykgewog
ICBpZiAocHJlZCh2MSwgdjIsIHYzKSkgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICBN
ZXNzYWdlIG1zZzsKLSAgbXNnIDw8IHByZWRfdGV4dCA8PCAiKCIKLSAgICAgIDw8IGUxIDw8ICIs
ICIKLSAgICAgIDw8IGUyIDw8ICIsICIKLSAgICAgIDw8IGUzIDw8ICIpIGV2YWx1YXRlcyB0byBm
YWxzZSwgd2hlcmUiCi0gICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwg
djEKLSAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MgotICAgICAg
PDwgIlxuIiA8PCBlMyA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYzOwotICByZXR1cm4gQXNzZXJ0
aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4
dCA8PCAiKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMSA8PCAiLCAiCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTIgPDwgIiwgIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDw8IGUzIDw8ICIpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmUiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8
IHYxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIiA8PCBlMiA8PCAiIGV2YWx1
YXRlcyB0byAiIDw8IHYyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIiA8PCBl
MyA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYzOwogfQogCiAvLyBJbnRlcm5hbCBtYWNybyBmb3Ig
aW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEX0ZPUk1BVDMuCiAvLyBEb24ndCB1c2Ug
dGhpcyBpbiB5b3VyIGNvZGUuCiAjZGVmaW5lIEdURVNUX1BSRURfRk9STUFUM18ocHJlZF9mb3Jt
YXQsIHYxLCB2MiwgdjMsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0
KCN2MSwgI3YyLCAjdjMsIHYxLCB2MiwgdjMpLFwKKyAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1h
dCgjdjEsICN2MiwgI3YzLCB2MSwgdjIsIHYzKSwgXAogICAgICAgICAgICAgICAgIG9uX2ZhaWx1
cmUpCiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9
X1BSRUQzLiAgRG9uJ3QgdXNlCkBAIC0yNDksMjMgKzI0MiwyMSBAQCBBc3NlcnRpb25SZXN1bHQg
QXNzZXJ0UHJlZDRIZWxwZXIoY29uc3QgY2hhciogcHJlZF90ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFQ0JiB2NCkgewogICBpZiAocHJlZCh2MSwgdjIsIHYz
LCB2NCkpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1z
ZyA8PCBwcmVkX3RleHQgPDwgIigiCi0gICAgICA8PCBlMSA8PCAiLCAiCi0gICAgICA8PCBlMiA8
PCAiLCAiCi0gICAgICA8PCBlMyA8PCAiLCAiCi0gICAgICA8PCBlNCA8PCAiKSBldmFsdWF0ZXMg
dG8gZmFsc2UsIHdoZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAi
IDw8IHYxCi0gICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjIKLSAg
ICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MwotICAgICAgPDwgIlxu
IiA8PCBlNCA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHY0OwotICByZXR1cm4gQXNzZXJ0aW9uRmFp
bHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAi
KCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMSA8PCAiLCAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgZTIgPDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8IGUzIDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlNCA8PCAi
KSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8g
IiA8PCB2MworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTQgPDwgIiBl
dmFsdWF0ZXMgdG8gIiA8PCB2NDsKIH0KIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVu
dGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQ0LgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4g
eW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDRfKHByZWRfZm9ybWF0LCB2MSwg
djIsIHYzLCB2NCwgb25fZmFpbHVyZSlcCi0gIEdURVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoI3Yx
LCAjdjIsICN2MywgI3Y0LCB2MSwgdjIsIHYzLCB2NCksXAorICBHVEVTVF9BU1NFUlRfKHByZWRf
Zm9ybWF0KCN2MSwgI3YyLCAjdjMsICN2NCwgdjEsIHYyLCB2MywgdjQpLCBcCiAgICAgICAgICAg
ICAgICAgb25fZmFpbHVyZSkKIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7
RVhQRUNUfEFTU0VSVH1fUFJFRDQuICBEb24ndCB1c2UKQEAgLTMxNiwyNSArMzA3LDIzIEBAIEFz
c2VydGlvblJlc3VsdCBBc3NlcnRQcmVkNUhlbHBlcihjb25zdCBjaGFyKiBwcmVkX3RleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDUmIHY1KSB7CiAgIGlmIChw
cmVkKHYxLCB2MiwgdjMsIHY0LCB2NSkpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAg
TWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBwcmVkX3RleHQgPDwgIigiCi0gICAgICA8PCBlMSA8PCAi
LCAiCi0gICAgICA8PCBlMiA8PCAiLCAiCi0gICAgICA8PCBlMyA8PCAiLCAiCi0gICAgICA8PCBl
NCA8PCAiLCAiCi0gICAgICA8PCBlNSA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgot
ICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxCi0gICAgICA8PCAi
XG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjIKLSAgICAgIDw8ICJcbiIgPDwgZTMg
PDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MwotICAgICAgPDwgIlxuIiA8PCBlNCA8PCAiIGV2YWx1
YXRlcyB0byAiIDw8IHY0Ci0gICAgICA8PCAiXG4iIDw8IGU1IDw8ICIgZXZhbHVhdGVzIHRvICIg
PDwgdjU7Ci0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIHJldHVybiBBc3NlcnRp
b25GYWlsdXJlKCkgPDwgcHJlZF90ZXh0IDw8ICIoIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8IGUxIDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMiA8PCAi
LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTMgPDwgIiwgIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IGU0IDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8PCBlNSA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0ZXMg
dG8gIiA8PCB2MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTMgPDwg
IiBldmFsdWF0ZXMgdG8gIiA8PCB2MworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJc
biIgPDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICJcbiIgPDwgZTUgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NTsKIH0KIAogLy8g
SW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JN
QVQ1LgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVE
X0ZPUk1BVDVfKHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCB2NCwgdjUsIG9uX2ZhaWx1cmUpXAot
ICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAjdjMsICN2NCwgI3Y1LCB2MSwg
djIsIHYzLCB2NCwgdjUpLFwKKyAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2Miwg
I3YzLCAjdjQsICN2NSwgdjEsIHYyLCB2MywgdjQsIHY1KSwgXAogICAgICAgICAgICAgICAgIG9u
X2ZhaWx1cmUpCiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxB
U1NFUlR9X1BSRUQ1LiAgRG9uJ3QgdXNlCkBAIC0zNjUsNCArMzU0LDYgQEAgQXNzZXJ0aW9uUmVz
dWx0IEFzc2VydFByZWQ1SGVscGVyKGNvbnN0IGNoYXIqIHByZWRfdGV4dCwKIAogCiAKK30gIC8v
IG5hbWVzcGFjZSB0ZXN0aW5nCisKICNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVT
VF9QUkVEX0lNUExfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdF9wcm9kLmgKaW5kZXggZGE4MGRkYzZjNzBlZTJkYzc3M2VkNjc2NWE0Zjg5ZGZh
OGNiMzhlOC4uZTY1MTY3MWViZGU4NTlmYzczMWI1NDU5YmRjMDY2MWFmMDc1N2NiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmgK
QEAgLTI2LDEwICsyNiwxMCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KQotLy8KLS8vIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgZGVmaW5pdGlvbnMgdXNlZnVs
IGluIHByb2R1Y3Rpb24gY29kZS4KKy8vIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBG
cmFtZXdvcmsgZGVmaW5pdGlvbnMgdXNlZnVsIGluIHByb2R1Y3Rpb24gY29kZS4KKy8vIEdPT0dM
RVRFU1RfQ00wMDAzIERPIE5PVCBERUxFVEUKIAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNU
X0dURVNUX1BST0RfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUk9EX0hf
CkBAIC00MCwxNyArNDAsMjAgQEAKIC8vCiAvLyBjbGFzcyBNeUNsYXNzIHsKIC8vICBwcml2YXRl
OgotLy8gICB2b2lkIE15TWV0aG9kKCk7Ci0vLyAgIEZSSUVORF9URVNUKE15Q2xhc3NUZXN0LCBN
eU1ldGhvZCk7CisvLyAgIHZvaWQgUHJpdmF0ZU1ldGhvZCgpOworLy8gICBGUklFTkRfVEVTVChN
eUNsYXNzVGVzdCwgUHJpdmF0ZU1ldGhvZFdvcmtzKTsKIC8vIH07CiAvLwogLy8gY2xhc3MgTXlD
bGFzc1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAvLyAgIC8vIC4uLgogLy8gfTsKIC8v
Ci0vLyBURVNUX0YoTXlDbGFzc1Rlc3QsIE15TWV0aG9kKSB7Ci0vLyAgIC8vIENhbiBjYWxsIE15
Q2xhc3M6Ok15TWV0aG9kKCkgaGVyZS4KKy8vIFRFU1RfRihNeUNsYXNzVGVzdCwgUHJpdmF0ZU1l
dGhvZFdvcmtzKSB7CisvLyAgIC8vIENhbiBjYWxsIE15Q2xhc3M6OlByaXZhdGVNZXRob2QoKSBo
ZXJlLgogLy8gfQorLy8KKy8vIE5vdGU6IFRoZSB0ZXN0IGNsYXNzIG11c3QgYmUgaW4gdGhlIHNh
bWUgbmFtZXNwYWNlIGFzIHRoZSBjbGFzcyBiZWluZyB0ZXN0ZWQuCisvLyBGb3IgZXhhbXBsZSwg
cHV0dGluZyBNeUNsYXNzVGVzdCBpbiBhbiBhbm9ueW1vdXMgbmFtZXNwYWNlIHdpbGwgbm90IHdv
cmsuCiAKICNkZWZpbmUgRlJJRU5EX1RFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSlcCiBm
cmllbmQgY2xhc3MgdGVzdF9jYXNlX25hbWUjI18jI3Rlc3RfbmFtZSMjX1Rlc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9t
L1JFQURNRS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvY3VzdG9tL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjM5MWZiNGUyYjU3NjVjYWM4YzY5NDMz
NTliMTViYmQ1ZjRmMTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vUkVBRE1FLm1kCkBAIC0wLDAgKzEsNTYg
QEAKKyMgQ3VzdG9taXphdGlvbiBQb2ludHMKKworVGhlIGN1c3RvbSBkaXJlY3RvcnkgaXMgYW4g
aW5qZWN0aW9uIHBvaW50IGZvciBjdXN0b20gdXNlciBjb25maWd1cmF0aW9ucy4KKworIyMgSGVh
ZGVyIGBndGVzdC5oYAorCisjIyMgVGhlIGZvbGxvd2luZyBtYWNyb3MgY2FuIGJlIGRlZmluZWQ6
CisKKyogICBgR1RFU1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVSX2AgLSBUaGUgbmFtZSBvZiBhbiBp
bXBsZW1lbnRhdGlvbiBvZgorICAgIGBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2VgLgorKiAg
IGBHVEVTVF9DVVNUT01fVEVNUERJUl9GVU5DVElPTl9gIC0gQW4gb3ZlcnJpZGUgZm9yIGB0ZXN0
aW5nOjpUZW1wRGlyKClgLiBTZWUKKyAgICBgdGVzdGluZzo6VGVtcERpcmAgZm9yIHNlbWFudGlj
cyBhbmQgc2lnbmF0dXJlLgorCisjIyBIZWFkZXIgYGd0ZXN0LXBvcnQuaGAKKworVGhlIGZvbGxv
d2luZyBtYWNyb3MgY2FuIGJlIGRlZmluZWQ6CisKKyMjIyBGbGFnIHJlbGF0ZWQgbWFjcm9zOgor
CisqICAgYEdURVNUX0ZMQUcoZmxhZ19uYW1lKWAKKyogICBgR1RFU1RfVVNFX09XTl9GTEFHRklM
RV9GTEFHX2AgLSBEZWZpbmUgdG8gMCB3aGVuIHRoZSBzeXN0ZW0gcHJvdmlkZXMgaXRzCisgICAg
b3duIGZsYWdmaWxlIGZsYWcgcGFyc2luZy4KKyogICBgR1RFU1RfREVDTEFSRV9ib29sXyhuYW1l
KWAKKyogICBgR1RFU1RfREVDTEFSRV9pbnQzMl8obmFtZSlgCisqICAgYEdURVNUX0RFQ0xBUkVf
c3RyaW5nXyhuYW1lKWAKKyogICBgR1RFU1RfREVGSU5FX2Jvb2xfKG5hbWUsIGRlZmF1bHRfdmFs
LCBkb2MpYAorKiAgIGBHVEVTVF9ERUZJTkVfaW50MzJfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2Mp
YAorKiAgIGBHVEVTVF9ERUZJTkVfc3RyaW5nXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKWAKKwor
IyMjIExvZ2dpbmc6CisKKyogICBgR1RFU1RfTE9HXyhzZXZlcml0eSlgCisqICAgYEdURVNUX0NI
RUNLXyhjb25kaXRpb24pYAorKiAgIEZ1bmN0aW9ucyBgTG9nVG9TdGRlcnIoKWAgYW5kIGBGbHVz
aEluZm9Mb2coKWAgaGF2ZSB0byBiZSBwcm92aWRlZCB0b28uCisKKyMjIyBUaHJlYWRpbmc6CisK
KyogICBgR1RFU1RfSEFTX05PVElGSUNBVElPTl9gIC0gRW5hYmxlZCBpZiBOb3RpZmljYXRpb24g
aXMgYWxyZWFkeSBwcm92aWRlZC4KKyogICBgR1RFU1RfSEFTX01VVEVYX0FORF9USFJFQURfTE9D
QUxfYCAtIEVuYWJsZWQgaWYgYE11dGV4YCBhbmQgYFRocmVhZExvY2FsYAorICAgIGFyZSBhbHJl
YWR5IHByb3ZpZGVkLiBNdXN0IGFsc28gcHJvdmlkZSBgR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVU
RVhfKG11dGV4KWAKKyAgICBhbmQgYEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKG11dGV4KWAK
KyogICBgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGxvY2tzKWAKKyogICBgR1RFU1Rf
TE9DS19FWENMVURFRF8obG9ja3MpYAorCisjIyMgVW5kZXJseWluZyBsaWJyYXJ5IHN1cHBvcnQg
ZmVhdHVyZXMKKworKiAgIGBHVEVTVF9IQVNfQ1hYQUJJX0hfYAorCisjIyMgRXhwb3J0aW5nIEFQ
SSBzeW1ib2xzOgorCisqICAgYEdURVNUX0FQSV9gIC0gU3BlY2lmaWVyIGZvciBleHBvcnRlZCBz
eW1ib2xzLgorCisjIyBIZWFkZXIgYGd0ZXN0LXByaW50ZXJzLmhgCisKKyogICBTZWUgZG9jdW1l
bnRhdGlvbiBhdCBgZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaGAgZm9yIGRldGFpbHMgb24gaG93IHRv
IGRlZmluZSBhCisgICAgY3VzdG9tIHByaW50ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVz
dC1wb3J0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q4NWQ5NTZkMmRjMTdiZDUzN2YyMTQyMzQwYmRmNThmNDcz
NzExOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUv
Z3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXBvcnQuaApAQCAtMCwwICsxLDM3IEBACisvLyBD
b3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3Ry
aWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gSW5qZWN0aW9u
IHBvaW50IGZvciBjdXN0b20gdXNlciBjb25maWd1cmF0aW9ucy4gU2VlIFJFQURNRSBmb3IgZGV0
YWlscworLy8KKy8vICoqIEN1c3RvbSBpbXBsZW1lbnRhdGlvbiBzdGFydHMgaGVyZSAqKgorCisj
aWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX1BPUlRfSF8K
KyNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RFU1RfUE9SVF9I
XworCisjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNU
X1BPUlRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXByaW50ZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wcmludGVycy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmViNDQ2N2FiY2FiZWE3ZmY3NmY5ZDJkNTI3Mzg3YzlkYTgxMDE0OGIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2N1c3RvbS9ndGVzdC1wcmludGVycy5oCkBAIC0wLDAgKzEsNDIgQEAKKy8vIENvcHlyaWdodCAy
MDE1LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgor
Ly8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBUaGlzIGZpbGUgcHJvdmlkZXMg
YW4gaW5qZWN0aW9uIHBvaW50IGZvciBjdXN0b20gcHJpbnRlcnMgaW4gYSBsb2NhbAorLy8gaW5z
dGFsbGF0aW9uIG9mIGdUZXN0LgorLy8gSXQgd2lsbCBiZSBpbmNsdWRlZCBmcm9tIGd0ZXN0LXBy
aW50ZXJzLmggYW5kIHRoZSBvdmVycmlkZXMgaW4gdGhpcyBmaWxlCisvLyB3aWxsIGJlIHZpc2li
bGUgdG8gZXZlcnlvbmUuCisvLworLy8gSW5qZWN0aW9uIHBvaW50IGZvciBjdXN0b20gdXNlciBj
b25maWd1cmF0aW9ucy4gU2VlIFJFQURNRSBmb3IgZGV0YWlscworLy8KKy8vICoqIEN1c3RvbSBp
bXBsZW1lbnRhdGlvbiBzdGFydHMgaGVyZSAqKgorCisjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RF
U1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX1BSSU5URVJTX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xV
REVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX1BSSU5URVJTX0hfCisKKyNlbmRpZiAgLy8g
R1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RFU1RfUFJJTlRFUlNfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwv
Y3VzdG9tL2d0ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2N1c3RvbS9ndGVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjOGUwN2JlMjNmMWZkNjE1OWFmZWYy
ZWVmZDc0NDQwMzRkZDA2MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oCkBAIC0wLDAgKzEsMzcg
QEAKKy8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
Ly8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBJ
bmplY3Rpb24gcG9pbnQgZm9yIGN1c3RvbSB1c2VyIGNvbmZpZ3VyYXRpb25zLiBTZWUgUkVBRE1F
IGZvciBkZXRhaWxzCisvLworLy8gKiogQ3VzdG9tIGltcGxlbWVudGF0aW9uIHN0YXJ0cyBoZXJl
ICoqCisKKyNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RFU1Rf
SF8KKyNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RFU1RfSF8K
KworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0NVU1RPTV9HVEVTVF9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaAppbmRl
eCBlNDMzMDg0OGQ0ZWFlNTcwZjI4MGRhYzU3Y2YwMGIyOTcyMmM3ZDBjLi4wYTliNDJjOGE1NzJh
ODcxOTRjNjUxMDkwM2UyMWVhMjI2MGZhYzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaApAQCAtMjcsMTcgKzI3LDE4IEBACiAvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQXV0aG9yczogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbiksIGVlZmFjbUBnbWFpbC5jb20gKFNlYW4gTWNhZmVlKQotLy8KLS8vIFRoZSBH
b29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIFRoZSBHb29nbGUg
QysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAvLyBU
aGlzIGhlYWRlciBmaWxlIGRlZmluZXMgaW50ZXJuYWwgdXRpbGl0aWVzIG5lZWRlZCBmb3IgaW1w
bGVtZW50aW5nCiAvLyBkZWF0aCB0ZXN0cy4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdp
dGhvdXQgbm90aWNlLgorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQogCiAjaWZu
ZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfREVBVEhfVEVTVF9JTlRFUk5B
TF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0RFQVRIX1RF
U1RfSU5URVJOQUxfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFs
Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKworI2luY2x1
ZGUgPHN0ZGlvLmg+CiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7
CkBAIC01MSw2ICs1Miw5IEBAIGNvbnN0IGNoYXIga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZ1td
ID0gImludGVybmFsX3J1bl9kZWF0aF90ZXN0IjsKIAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNU
CiAKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQyNTEgXAorLyogY2xhc3MgQSBu
ZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBieSBjbGllbnRzIG9mIGNsYXNz
IEIgKi8pCisKIC8vIERlYXRoVGVzdCBpcyBhIGNsYXNzIHRoYXQgaGlkZXMgbXVjaCBvZiB0aGUg
Y29tcGxleGl0eSBvZiB0aGUKIC8vIEdURVNUX0RFQVRIX1RFU1RfIG1hY3JvLiAgSXQgaXMgYWJz
dHJhY3Q7IGl0cyBzdGF0aWMgQ3JlYXRlIG1ldGhvZAogLy8gcmV0dXJucyBhIGNvbmNyZXRlIGNs
YXNzIHRoYXQgZGVwZW5kcyBvbiB0aGUgcHJldmFpbGluZyBkZWF0aCB0ZXN0CkBAIC05Niw4ICsx
MDAsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBEZWF0aFRlc3QgewogICAvLyB0ZXN0LCB0aGVuIHdh
aXQgZm9yIGl0IHRvIGNvbXBsZXRlLgogICBlbnVtIFRlc3RSb2xlIHsgT1ZFUlNFRV9URVNULCBF
WEVDVVRFX1RFU1QgfTsKIAotICAvLyBBbiBlbnVtZXJhdGlvbiBvZiB0aGUgdHdvIHJlYXNvbnMg
dGhhdCBhIHRlc3QgbWlnaHQgYmUgYWJvcnRlZC4KLSAgZW51bSBBYm9ydFJlYXNvbiB7IFRFU1Rf
RU5DT1VOVEVSRURfUkVUVVJOX1NUQVRFTUVOVCwgVEVTVF9ESURfTk9UX0RJRSB9OworICAvLyBB
biBlbnVtZXJhdGlvbiBvZiB0aGUgdGhyZWUgcmVhc29ucyB0aGF0IGEgdGVzdCBtaWdodCBiZSBh
Ym9ydGVkLgorICBlbnVtIEFib3J0UmVhc29uIHsKKyAgICBURVNUX0VOQ09VTlRFUkVEX1JFVFVS
Tl9TVEFURU1FTlQsCisgICAgVEVTVF9USFJFV19FWENFUFRJT04sCisgICAgVEVTVF9ESURfTk9U
X0RJRQorICB9OwogCiAgIC8vIEFzc3VtZXMgb25lIG9mIHRoZSBhYm92ZSByb2xlcy4KICAgdmly
dHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCkgPSAwOwpAQCAtMTIxLDE1ICsxMjksMTcgQEAgY2xh
c3MgR1RFU1RfQVBJXyBEZWF0aFRlc3QgewogICAvLyB0aGUgbGFzdCBkZWF0aCB0ZXN0LgogICBz
dGF0aWMgY29uc3QgY2hhciogTGFzdE1lc3NhZ2UoKTsKIAotICBzdGF0aWMgdm9pZCBzZXRfbGFz
dF9kZWF0aF90ZXN0X21lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgc3RhdGljIHZv
aWQgc2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdl
KTsKIAogIHByaXZhdGU6CiAgIC8vIEEgc3RyaW5nIGNvbnRhaW5pbmcgYSBkZXNjcmlwdGlvbiBv
ZiB0aGUgb3V0Y29tZSBvZiB0aGUgbGFzdCBkZWF0aCB0ZXN0LgotICBzdGF0aWMgU3RyaW5nIGxh
c3RfZGVhdGhfdGVzdF9tZXNzYWdlXzsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIGxhc3RfZGVhdGhf
dGVzdF9tZXNzYWdlXzsKIAogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKERlYXRo
VGVzdCk7CiB9OwogCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkgIC8vICA0MjUx
CisKIC8vIEZhY3RvcnkgaW50ZXJmYWNlIGZvciBkZWF0aCB0ZXN0cy4gIE1heSBiZSBtb2NrZWQg
b3V0IGZvciB0ZXN0aW5nLgogY2xhc3MgRGVhdGhUZXN0RmFjdG9yeSB7CiAgcHVibGljOgpAQCAt
MTQ5LDkgKzE1OSwzNCBAQCBjbGFzcyBEZWZhdWx0RGVhdGhUZXN0RmFjdG9yeSA6IHB1YmxpYyBE
ZWF0aFRlc3RGYWN0b3J5IHsKIC8vIGJ5IGEgc2lnbmFsLCBvciBleGl0ZWQgbm9ybWFsbHkgd2l0
aCBhIG5vbnplcm8gZXhpdCBjb2RlLgogR1RFU1RfQVBJXyBib29sIEV4aXRlZFVuc3VjY2Vzc2Z1
bGx5KGludCBleGl0X3N0YXR1cyk7CiAKKy8vIFRyYXBzIEMrKyBleGNlcHRpb25zIGVzY2FwaW5n
IHN0YXRlbWVudCBhbmQgcmVwb3J0cyB0aGVtIGFzIHRlc3QKKy8vIGZhaWx1cmVzLiBOb3RlIHRo
YXQgdHJhcHBpbmcgU0VIIGV4Y2VwdGlvbnMgaXMgbm90IGltcGxlbWVudGVkIGhlcmUuCisjIGlm
IEdURVNUX0hBU19FWENFUFRJT05TCisjICBkZWZpbmUgR1RFU1RfRVhFQ1VURV9ERUFUSF9URVNU
X1NUQVRFTUVOVF8oc3RhdGVtZW50LCBkZWF0aF90ZXN0KSBcCisgIHRyeSB7IFwKKyAgICBHVEVT
VF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwK
KyAgfSBjYXRjaCAoY29uc3QgOjpzdGQ6OmV4Y2VwdGlvbiYgZ3Rlc3RfZXhjZXB0aW9uKSB7IFwK
KyAgICBmcHJpbnRmKFwKKyAgICAgICAgc3RkZXJyLCBcCisgICAgICAgICJcbiVzOiBDYXVnaHQg
c3RkOjpleGNlcHRpb24tZGVyaXZlZCBleGNlcHRpb24gZXNjYXBpbmcgdGhlICIgXAorICAgICAg
ICAiZGVhdGggdGVzdCBzdGF0ZW1lbnQuIEV4Y2VwdGlvbiBtZXNzYWdlOiAlc1xuIiwgXAorICAg
ICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRGaWxlTG9jYXRpb24oX19GSUxFX18sIF9f
TElORV9fKS5jX3N0cigpLCBcCisgICAgICAgIGd0ZXN0X2V4Y2VwdGlvbi53aGF0KCkpOyBcCisg
ICAgZmZsdXNoKHN0ZGVycik7IFwKKyAgICBkZWF0aF90ZXN0LT5BYm9ydCg6OnRlc3Rpbmc6Omlu
dGVybmFsOjpEZWF0aFRlc3Q6OlRFU1RfVEhSRVdfRVhDRVBUSU9OKTsgXAorICB9IGNhdGNoICgu
Li4pIHsgXAorICAgIGRlYXRoX3Rlc3QtPkFib3J0KDo6dGVzdGluZzo6aW50ZXJuYWw6OkRlYXRo
VGVzdDo6VEVTVF9USFJFV19FWENFUFRJT04pOyBcCisgIH0KKworIyBlbHNlCisjICBkZWZpbmUg
R1RFU1RfRVhFQ1VURV9ERUFUSF9URVNUX1NUQVRFTUVOVF8oc3RhdGVtZW50LCBkZWF0aF90ZXN0
KSBcCisgIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3Rh
dGVtZW50KQorCisjIGVuZGlmCisKIC8vIFRoaXMgbWFjcm8gaXMgZm9yIGltcGxlbWVudGluZyBB
U1NFUlRfREVBVEgqLCBFWFBFQ1RfREVBVEgqLAogLy8gQVNTRVJUX0VYSVQqLCBhbmQgRVhQRUNU
X0VYSVQqLgotI2RlZmluZSBHVEVTVF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwg
cmVnZXgsIGZhaWwpIFwKKyMgZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJl
ZGljYXRlLCByZWdleCwgZmFpbCkgXAogICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBc
CiAgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAogICAgIGNvbnN0
IDo6dGVzdGluZzo6aW50ZXJuYWw6OlJFJiBndGVzdF9yZWdleCA9IChyZWdleCk7IFwKQEAgLTE3
MiwxMCArMjA3LDEyIEBAIEdURVNUX0FQSV8gYm9vbCBFeGl0ZWRVbnN1Y2Nlc3NmdWxseShpbnQg
ZXhpdF9zdGF0dXMpOwogICAgICAgICBjYXNlIDo6dGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVz
dDo6RVhFQ1VURV9URVNUOiB7IFwKICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0
aFRlc3Q6OlJldHVyblNlbnRpbmVsIFwKICAgICAgICAgICAgICAgZ3Rlc3Rfc2VudGluZWwoZ3Rl
c3RfZHQpOyBcCi0gICAgICAgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJO
SU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCisgICAgICAgICAgR1RFU1RfRVhFQ1VURV9ERUFUSF9U
RVNUX1NUQVRFTUVOVF8oc3RhdGVtZW50LCBndGVzdF9kdCk7IFwKICAgICAgICAgICBndGVzdF9k
dC0+QWJvcnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0OjpURVNUX0RJRF9OT1RfRElF
KTsgXAogICAgICAgICAgIGJyZWFrOyBcCiAgICAgICAgIH0gXAorICAgICAgICBkZWZhdWx0OiBc
CisgICAgICAgICAgYnJlYWs7IFwKICAgICAgIH0gXAogICAgIH0gXAogICB9IGVsc2UgXApAQCAt
MTg0LDEyICsyMjEsMjcgQEAgR1RFU1RfQVBJXyBib29sIEV4aXRlZFVuc3VjY2Vzc2Z1bGx5KGlu
dCBleGl0X3N0YXR1cyk7CiAvLyBUaGUgc3ltYm9sICJmYWlsIiBoZXJlIGV4cGFuZHMgdG8gc29t
ZXRoaW5nIGludG8gd2hpY2ggYSBtZXNzYWdlCiAvLyBjYW4gYmUgc3RyZWFtZWQuCiAKKy8vIFRo
aXMgbWFjcm8gaXMgZm9yIGltcGxlbWVudGluZyBBU1NFUlQvRVhQRUNUX0RFQlVHX0RFQVRIIHdo
ZW4gY29tcGlsZWQgaW4KKy8vIE5ERUJVRyBtb2RlLiBJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0aGUg
c3RhdGVtZW50cyB0byBiZSBleGVjdXRlZCBhbmQgdGhlIG1hY3JvCisvLyBtdXN0IGFjY2VwdCBh
IHN0cmVhbWVkIG1lc3NhZ2UgZXZlbiB0aG91Z2ggdGhlIG1lc3NhZ2UgaXMgbmV2ZXIgcHJpbnRl
ZC4KKy8vIFRoZSByZWdleCBvYmplY3QgaXMgbm90IGV2YWx1YXRlZCwgYnV0IGl0IGlzIHVzZWQg
dG8gcHJldmVudCAidW51c2VkIgorLy8gd2FybmluZ3MgYW5kIHRvIGF2b2lkIGFuIGV4cHJlc3Np
b24gdGhhdCBkb2Vzbid0IGNvbXBpbGUgaW4gZGVidWcgbW9kZS4KKyNkZWZpbmUgR1RFU1RfRVhF
Q1VURV9TVEFURU1FTlRfKHN0YXRlbWVudCwgcmVnZXgpICAgICAgICAgICAgIFwKKyAgR1RFU1Rf
QU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVM
T1dfKHN0YXRlbWVudCk7IFwKKyAgfSBlbHNlIGlmICghOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3
YXlzVHJ1ZSgpKSB7ICAgICAgICAgICAgIFwKKyAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFs
OjpSRSYgZ3Rlc3RfcmVnZXggPSAocmVnZXgpOyAgICAgIFwKKyAgICBzdGF0aWNfY2FzdDx2b2lk
PihndGVzdF9yZWdleCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSBlbHNlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICA6OnRlc3Rpbmc6Ok1lc3NhZ2UoKQorCiAvLyBBIGNsYXNzIHJlcHJlc2VudGluZyB0aGUgcGFy
c2VkIGNvbnRlbnRzIG9mIHRoZQogLy8gLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBm
bGFnLCBhcyBpdCBleGlzdGVkIHdoZW4KIC8vIFJVTl9BTExfVEVTVFMgd2FzIGNhbGxlZC4KIGNs
YXNzIEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyB7CiAgcHVibGljOgotICBJbnRlcm5hbFJ1bkRl
YXRoVGVzdEZsYWcoY29uc3QgU3RyaW5nJiBhX2ZpbGUsCisgIEludGVybmFsUnVuRGVhdGhUZXN0
RmxhZyhjb25zdCBzdGQ6OnN0cmluZyYgYV9maWxlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGFfbGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbl9pbmRleCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhX3dyaXRlX2ZkKQpAQCAtMjAxLDEzICsy
NTMsMTMgQEAgY2xhc3MgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnIHsKICAgICAgIHBvc2l4OjpD
bG9zZSh3cml0ZV9mZF8pOwogICB9CiAKLSAgU3RyaW5nIGZpbGUoKSBjb25zdCB7IHJldHVybiBm
aWxlXzsgfQorICBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZSgpIGNvbnN0IHsgcmV0dXJuIGZpbGVf
OyB9CiAgIGludCBsaW5lKCkgY29uc3QgeyByZXR1cm4gbGluZV87IH0KICAgaW50IGluZGV4KCkg
Y29uc3QgeyByZXR1cm4gaW5kZXhfOyB9CiAgIGludCB3cml0ZV9mZCgpIGNvbnN0IHsgcmV0dXJu
IHdyaXRlX2ZkXzsgfQogCiAgcHJpdmF0ZToKLSAgU3RyaW5nIGZpbGVfOworICBzdGQ6OnN0cmlu
ZyBmaWxlXzsKICAgaW50IGxpbmVfOwogICBpbnQgaW5kZXhfOwogICBpbnQgd3JpdGVfZmRfOwpA
QCAtMjIwLDUzICsyNzIsNiBAQCBjbGFzcyBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcgewogLy8g
dGhlIGZsYWcgaXMgc3BlY2lmaWVkOyBvdGhlcndpc2UgcmV0dXJucyBOVUxMLgogSW50ZXJuYWxS
dW5EZWF0aFRlc3RGbGFnKiBQYXJzZUludGVybmFsUnVuRGVhdGhUZXN0RmxhZygpOwogCi0jZWxz
ZSAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotLy8gVGhpcyBtYWNybyBpcyB1c2VkIGZvciBp
bXBsZW1lbnRpbmcgbWFjcm9zIHN1Y2ggYXMKLS8vIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQg
YW5kIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgb24gc3lzdGVtcyB3aGVyZQotLy8gZGVhdGgg
dGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQuIFRob3NlIG1hY3JvcyBtdXN0IGNvbXBpbGUgb24gc3Vj
aCBzeXN0ZW1zCi0vLyBpZmYgRVhQRUNUX0RFQVRIIGFuZCBBU1NFUlRfREVBVEggY29tcGlsZSB3
aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMgb24KLS8vIHN5c3RlbXMgdGhhdCBzdXBwb3J0IGRlYXRo
IHRlc3RzLiBUaGlzIGFsbG93cyBvbmUgdG8gd3JpdGUgc3VjaCBhIG1hY3JvCi0vLyBvbiBhIHN5
c3RlbSB0aGF0IGRvZXMgbm90IHN1cHBvcnQgZGVhdGggdGVzdHMgYW5kIGJlIHN1cmUgdGhhdCBp
dCB3aWxsCi0vLyBjb21waWxlIG9uIGEgZGVhdGgtdGVzdCBzdXBwb3J0aW5nIHN5c3RlbS4KLS8v
Ci0vLyBQYXJhbWV0ZXJzOgotLy8gICBzdGF0ZW1lbnQgLSAgQSBzdGF0ZW1lbnQgdGhhdCBhIG1h
Y3JvIHN1Y2ggYXMgRVhQRUNUX0RFQVRIIHdvdWxkIHRlc3QKLS8vICAgICAgICAgICAgICAgIGZv
ciBwcm9ncmFtIHRlcm1pbmF0aW9uLiBUaGlzIG1hY3JvIGhhcyB0byBtYWtlIHN1cmUgdGhpcwot
Ly8gICAgICAgICAgICAgICAgc3RhdGVtZW50IGlzIGNvbXBpbGVkIGJ1dCBub3QgZXhlY3V0ZWQs
IHRvIGVuc3VyZSB0aGF0Ci0vLyAgICAgICAgICAgICAgICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9S
VEVEIGNvbXBpbGVzIHdpdGggYSBjZXJ0YWluCi0vLyAgICAgICAgICAgICAgICBwYXJhbWV0ZXIg
aWZmIEVYUEVDVF9ERUFUSCBjb21waWxlcyB3aXRoIGl0LgotLy8gICByZWdleCAgICAgLSAgQSBy
ZWdleCB0aGF0IGEgbWFjcm8gc3VjaCBhcyBFWFBFQ1RfREVBVEggd291bGQgdXNlIHRvIHRlc3QK
LS8vICAgICAgICAgICAgICAgIHRoZSBvdXRwdXQgb2Ygc3RhdGVtZW50LiAgVGhpcyBwYXJhbWV0
ZXIgaGFzIHRvIGJlCi0vLyAgICAgICAgICAgICAgICBjb21waWxlZCBidXQgbm90IGV2YWx1YXRl
ZCBieSB0aGlzIG1hY3JvLCB0byBlbnN1cmUgdGhhdAotLy8gICAgICAgICAgICAgICAgdGhpcyBt
YWNybyBvbmx5IGFjY2VwdHMgZXhwcmVzc2lvbnMgdGhhdCBhIG1hY3JvIHN1Y2ggYXMKLS8vICAg
ICAgICAgICAgICAgIEVYUEVDVF9ERUFUSCB3b3VsZCBhY2NlcHQuCi0vLyAgIHRlcm1pbmF0b3Ig
LSBNdXN0IGJlIGFuIGVtcHR5IHN0YXRlbWVudCBmb3IgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRF
RAotLy8gICAgICAgICAgICAgICAgYW5kIGEgcmV0dXJuIHN0YXRlbWVudCBmb3IgQVNTRVJUX0RF
QVRIX0lGX1NVUFBPUlRFRC4KLS8vICAgICAgICAgICAgICAgIFRoaXMgZW5zdXJlcyB0aGF0IEFT
U0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgd2lsbCBub3QKLS8vICAgICAgICAgICAgICAgIGNvbXBp
bGUgaW5zaWRlIGZ1bmN0aW9ucyB3aGVyZSBBU1NFUlRfREVBVEggZG9lc24ndAotLy8gICAgICAg
ICAgICAgICAgY29tcGlsZS4KLS8vCi0vLyAgVGhlIGJyYW5jaCB0aGF0IGhhcyBhbiBhbHdheXMg
ZmFsc2UgY29uZGl0aW9uIGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQKLS8vICBzdGF0ZW1lbnQgYW5k
IHJlZ2V4IGFyZSBjb21waWxlZCAoYW5kIHRodXMgc3ludGFjdGljYWxseSBjb3JyZWN0KSBidXQK
LS8vICBuZXZlciBleGVjdXRlZC4gVGhlIHVucmVhY2hhYmxlIGNvZGUgbWFjcm8gcHJvdGVjdHMg
dGhlIHRlcm1pbmF0b3IKLS8vICBzdGF0ZW1lbnQgZnJvbSBnZW5lcmF0aW5nIGFuICd1bnJlYWNo
YWJsZSBjb2RlJyB3YXJuaW5nIGluIGNhc2UKLS8vICBzdGF0ZW1lbnQgdW5jb25kaXRpb25hbGx5
IHJldHVybnMgb3IgdGhyb3dzLiBUaGUgTWVzc2FnZSBjb25zdHJ1Y3RvciBhdAotLy8gIHRoZSBl
bmQgYWxsb3dzIHRoZSBzeW50YXggb2Ygc3RyZWFtaW5nIGFkZGl0aW9uYWwgbWVzc2FnZXMgaW50
byB0aGUKLS8vICBtYWNybywgZm9yIGNvbXBpbGF0aW9uYWwgY29tcGF0aWJpbGl0eSB3aXRoIEVY
UEVDVF9ERUFUSC9BU1NFUlRfREVBVEguCi0jZGVmaW5lIEdURVNUX1VOU1VQUE9SVEVEX0RFQVRI
X1RFU1RfKHN0YXRlbWVudCwgcmVnZXgsIHRlcm1pbmF0b3IpIFwKLSAgICBHVEVTVF9BTUJJR1VP
VVNfRUxTRV9CTE9DS0VSXyBcCi0gICAgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1Ry
dWUoKSkgeyBcCi0gICAgICBHVEVTVF9MT0dfKFdBUk5JTkcpIFwKLSAgICAgICAgICA8PCAiRGVh
dGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS5cbiIgXAotICAgICAg
ICAgIDw8ICJTdGF0ZW1lbnQgJyIgI3N0YXRlbWVudCAiJyBjYW5ub3QgYmUgdmVyaWZpZWQuIjsg
XAotICAgIH0gZWxzZSBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2UoKSkgeyBc
Ci0gICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpSRTo6UGFydGlhbE1hdGNoKCIuKiIsIChyZWdl
eCkpOyBcCi0gICAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVM
T1dfKHN0YXRlbWVudCk7IFwKLSAgICAgIHRlcm1pbmF0b3I7IFwKLSAgICB9IGVsc2UgXAotICAg
ICAgOjp0ZXN0aW5nOjpNZXNzYWdlKCkKLQogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVT
VAogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGgu
aAppbmRleCA0Yjc2ZDc5NTA2YjAyNmFiYTM3MTY0NzJmYzQzY2VmYzFhN2UzODhhLi5hZTM4ZDk1
YmY4NDRmYTlkYzIxNzM5Y2Y4MjEyNzZkNWIzNDE3ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1m
aWxlcGF0aC5oCkBAIC0yNywyMCArMjcsMjMgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIC8vCi0vLyBBdXRob3I6IGtlaXRoLnJheUBnbWFpbC5jb20gKEtlaXRoIFJheSkKLS8v
CiAvLyBHb29nbGUgVGVzdCBmaWxlcGF0aCB1dGlsaXRpZXMKIC8vCiAvLyBUaGlzIGhlYWRlciBm
aWxlIGRlY2xhcmVzIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkgYnkKIC8v
IEdvb2dsZSBUZXN0LiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2Uu
CiAvLwotLy8gVGhpcyBmaWxlIGlzICNpbmNsdWRlZCBpbiA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
aW50ZXJuYWwuaD4uCisvLyBUaGlzIGZpbGUgaXMgI2luY2x1ZGVkIGluIGd0ZXN0L2ludGVybmFs
L2d0ZXN0LWludGVybmFsLmguCiAvLyBEbyBub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBmaWxlIHNl
cGFyYXRlbHkhCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKKwogI2lmbmRl
ZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0ZJTEVQQVRIX0hfCiAjZGVmaW5l
IEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfRklMRVBBVEhfSF8KIAotI2luY2x1
ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVy
bmFsL2d0ZXN0LXN0cmluZy5oIgorCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0
MjUxIFwKKy8qIGNsYXNzIEEgbmVlZHMgdG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvIGJlIHVzZWQg
YnkgY2xpZW50cyBvZiBjbGFzcyBCICovKQogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiBuYW1lc3Bh
Y2UgaW50ZXJuYWwgewpAQCAtNjEsMTEgKzY0LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBGaWxlUGF0
aCB7CiAgIEZpbGVQYXRoKCkgOiBwYXRobmFtZV8oIiIpIHsgfQogICBGaWxlUGF0aChjb25zdCBG
aWxlUGF0aCYgcmhzKSA6IHBhdGhuYW1lXyhyaHMucGF0aG5hbWVfKSB7IH0KIAotICBleHBsaWNp
dCBGaWxlUGF0aChjb25zdCBjaGFyKiBwYXRobmFtZSkgOiBwYXRobmFtZV8ocGF0aG5hbWUpIHsK
LSAgICBOb3JtYWxpemUoKTsKLSAgfQotCi0gIGV4cGxpY2l0IEZpbGVQYXRoKGNvbnN0IFN0cmlu
ZyYgcGF0aG5hbWUpIDogcGF0aG5hbWVfKHBhdGhuYW1lKSB7CisgIGV4cGxpY2l0IEZpbGVQYXRo
KGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRobmFtZSkgOiBwYXRobmFtZV8ocGF0aG5hbWUpIHsKICAg
ICBOb3JtYWxpemUoKTsKICAgfQogCkBAIC03OCw3ICs3Nyw3IEBAIGNsYXNzIEdURVNUX0FQSV8g
RmlsZVBhdGggewogICAgIHBhdGhuYW1lXyA9IHJocy5wYXRobmFtZV87CiAgIH0KIAotICBTdHJp
bmcgVG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBwYXRobmFtZV87IH0KKyAgY29uc3Qgc3RkOjpz
dHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHBhdGhuYW1lXzsgfQogICBjb25zdCBjaGFy
KiBjX3N0cigpIGNvbnN0IHsgcmV0dXJuIHBhdGhuYW1lXy5jX3N0cigpOyB9CiAKICAgLy8gUmV0
dXJucyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSwgb3IgIiIgaWYgdW5zdWNjZXNzZnVs
LgpAQCAtMTExLDggKzExMCw4IEBAIGNsYXNzIEdURVNUX0FQSV8gRmlsZVBhdGggewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGaWxlUGF0aCYgYmFzZV9u
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBleHRlbnNpb24pOwogCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHBhdGggaXMgTlVMTCBv
ciAiIi4KLSAgYm9vbCBJc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gY19zdHIoKSA9PSBOVUxMIHx8
ICpjX3N0cigpID09ICdcMCc7IH0KKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgcGF0aCBpcyAi
Ii4KKyAgYm9vbCBJc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gcGF0aG5hbWVfLmVtcHR5KCk7IH0K
IAogICAvLyBJZiBpbnB1dCBuYW1lIGhhcyBhIHRyYWlsaW5nIHNlcGFyYXRvciBjaGFyYWN0ZXIs
IHJlbW92ZXMgaXQgYW5kIHJldHVybnMKICAgLy8gdGhlIG5hbWUsIG90aGVyd2lzZSByZXR1cm4g
dGhlIG5hbWUgc3RyaW5nIHVubW9kaWZpZWQuCkBAIC0yMDEsMTAgKzIwMCwxMiBAQCBjbGFzcyBH
VEVTVF9BUElfIEZpbGVQYXRoIHsKICAgLy8gc2VwYXJhdG9ycy4gUmV0dXJucyBOVUxMIGlmIG5v
IHBhdGggc2VwYXJhdG9yIHdhcyBmb3VuZC4KICAgY29uc3QgY2hhciogRmluZExhc3RQYXRoU2Vw
YXJhdG9yKCkgY29uc3Q7CiAKLSAgU3RyaW5nIHBhdGhuYW1lXzsKKyAgc3RkOjpzdHJpbmcgcGF0
aG5hbWVfOwogfTsgIC8vIGNsYXNzIEZpbGVQYXRoCiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5h
bAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1Nf
UE9QXygpICAvLyAgNDI1MQorCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJO
QUxfR1RFU1RfRklMRVBBVEhfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaAppbmRleCAz
MWE2NmU5OWQzYzQ4MjE1MWU0MGZjMzVhNDAyNzAwNjkwMzJhMWQ1Li5iNzYyZjYxZmM1M2MzZGI5
Y2ZiNzUzOTQwZDkxYjVkNTRhYjM2MzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5o
CkBAIC0yNywzNCArMjcsNDMgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIC8v
Ci0vLyBBdXRob3JzOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKSwgZWVmYWNtQGdtYWls
LmNvbSAoU2VhbiBNY2FmZWUpCi0vLwotLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdv
cmsgKEdvb2dsZSBUZXN0KQorLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBG
cmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogLy8KIC8vIFRoaXMgaGVhZGVyIGZpbGUgZGVjbGFyZXMg
ZnVuY3Rpb25zIGFuZCBtYWNyb3MgdXNlZCBpbnRlcm5hbGx5IGJ5CiAvLyBHb29nbGUgVGVzdC4g
IFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgogCisvLyBHT09HTEVU
RVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9J
TlRFUk5BTF9HVEVTVF9JTlRFUk5BTF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lO
VEVSTkFMX0dURVNUX0lOVEVSTkFMX0hfCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVz
dC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAjaWYg
R1RFU1RfT1NfTElOVVgKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMu
aD4KLSNpbmNsdWRlIDxzeXMvd2FpdC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgorIyBpbmNsdWRl
IDxzdGRsaWIuaD4KKyMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjIGluY2x1ZGUgPHN5cy93YWl0
Lmg+CisjIGluY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAogCisj
aWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKyMgaW5jbHVkZSA8c3RkZXhjZXB0PgorI2VuZGlmCisK
ICNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPGZsb2F0Lmg+CiAjaW5jbHVkZSA8c3RyaW5n
Lmg+CiAjaW5jbHVkZSA8aW9tYW5pcD4KICNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bWFw
PgogI2luY2x1ZGUgPHNldD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgog
Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+Ci0jaW5jbHVkZSA8Z3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9n
dGVzdC10eXBlLXV0aWwuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC1tZXNzYWdlLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCIKKyNpbmNsdWRlICJndGVzdC9p
bnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10
eXBlLXV0aWwuaCIKIAogLy8gRHVlIHRvIEMrKyBwcmVwcm9jZXNzb3Igd2VpcmRuZXNzLCB3ZSBu
ZWVkIGRvdWJsZSBpbmRpcmVjdGlvbiB0bwogLy8gY29uY2F0ZW5hdGUgdHdvIHRva2VucyB3aGVu
IG9uZSBvZiB0aGVtIGlzIF9fTElORV9fLiAgV3JpdGluZwpAQCAtNjcsMzkgKzc2LDE1IEBACiAj
ZGVmaW5lIEdURVNUX0NPTkNBVF9UT0tFTl8oZm9vLCBiYXIpIEdURVNUX0NPTkNBVF9UT0tFTl9J
TVBMXyhmb28sIGJhcikKICNkZWZpbmUgR1RFU1RfQ09OQ0FUX1RPS0VOX0lNUExfKGZvbywgYmFy
KSBmb28gIyMgYmFyCiAKLS8vIEdvb2dsZSBUZXN0IGRlZmluZXMgdGhlIHRlc3Rpbmc6Ok1lc3Nh
Z2UgY2xhc3MgdG8gYWxsb3cgY29uc3RydWN0aW9uIG9mCi0vLyB0ZXN0IG1lc3NhZ2VzIHZpYSB0
aGUgPDwgb3BlcmF0b3IuICBUaGUgaWRlYSBpcyB0aGF0IGFueXRoaW5nCi0vLyBzdHJlYW1hYmxl
IHRvIHN0ZDo6b3N0cmVhbSBjYW4gYmUgc3RyZWFtZWQgdG8gYSB0ZXN0aW5nOjpNZXNzYWdlLgot
Ly8gVGhpcyBhbGxvd3MgYSB1c2VyIHRvIHVzZSBoaXMgb3duIHR5cGVzIGluIEdvb2dsZSBUZXN0
IGFzc2VydGlvbnMgYnkKLS8vIG92ZXJsb2FkaW5nIHRoZSA8PCBvcGVyYXRvci4KLS8vCi0vLyB1
dGlsL2d0bC9zdGxfbG9nZ2luZy1pbmwuaCBvdmVybG9hZHMgPDwgZm9yIFNUTCBjb250YWluZXJz
LiAgVGhlc2UKLS8vIG92ZXJsb2FkcyBjYW5ub3QgYmUgZGVmaW5lZCBpbiB0aGUgc3RkIG5hbWVz
cGFjZSwgYXMgdGhhdCB3aWxsIGJlCi0vLyB1bmRlZmluZWQgYmVoYXZpb3IuICBUaGVyZWZvcmUs
IHRoZXkgYXJlIGRlZmluZWQgaW4gdGhlIGdsb2JhbAotLy8gbmFtZXNwYWNlIGluc3RlYWQuCi0v
LwotLy8gQysrJ3Mgc3ltYm9sIGxvb2t1cCBydWxlIChpLmUuIEtvZW5pZyBsb29rdXApIHNheXMg
dGhhdCB0aGVzZQotLy8gb3ZlcmxvYWRzIGFyZSB2aXNpYmxlIGluIGVpdGhlciB0aGUgc3RkIG5h
bWVzcGFjZSBvciB0aGUgZ2xvYmFsCi0vLyBuYW1lc3BhY2UsIGJ1dCBub3Qgb3RoZXIgbmFtZXNw
YWNlcywgaW5jbHVkaW5nIHRoZSB0ZXN0aW5nCi0vLyBuYW1lc3BhY2Ugd2hpY2ggR29vZ2xlIFRl
c3QncyBNZXNzYWdlIGNsYXNzIGlzIGluLgotLy8KLS8vIFRvIGFsbG93IFNUTCBjb250YWluZXJz
IChhbmQgb3RoZXIgdHlwZXMgdGhhdCBoYXMgYSA8PCBvcGVyYXRvcgotLy8gZGVmaW5lZCBpbiB0
aGUgZ2xvYmFsIG5hbWVzcGFjZSkgdG8gYmUgdXNlZCBpbiBHb29nbGUgVGVzdCBhc3NlcnRpb25z
LAotLy8gdGVzdGluZzo6TWVzc2FnZSBtdXN0IGFjY2VzcyB0aGUgY3VzdG9tIDw8IG9wZXJhdG9y
IGZyb20gdGhlIGdsb2JhbAotLy8gbmFtZXNwYWNlLiAgSGVuY2UgdGhpcyBoZWxwZXIgZnVuY3Rp
b24uCi0vLwotLy8gTm90ZTogSmVmZnJleSBZYXNza2luIHN1Z2dlc3RlZCBhbiBhbHRlcm5hdGl2
ZSBmaXggYnkgInVzaW5nCi0vLyA6Om9wZXJhdG9yPDw7IiBpbiB0aGUgZGVmaW5pdGlvbiBvZiBN
ZXNzYWdlJ3Mgb3BlcmF0b3I8PC4gIFRoYXQgZml4Ci0vLyBkb2Vzbid0IHJlcXVpcmUgYSBoZWxw
ZXIgZnVuY3Rpb24sIGJ1dCB1bmZvcnR1bmF0ZWx5IGRvZXNuJ3QKLS8vIGNvbXBpbGUgd2l0aCBN
U1ZDLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBHVGVzdFN0cmVhbVRvSGVs
cGVyKHN0ZDo6b3N0cmVhbSogb3MsIGNvbnN0IFQmIHZhbCkgewotICAqb3MgPDwgdmFsOwotfQor
Ly8gU3RyaW5naWZpZXMgaXRzIGFyZ3VtZW50LgorI2RlZmluZSBHVEVTVF9TVFJJTkdJRllfKG5h
bWUpICNuYW1lCisKK2NsYXNzIFByb3RvY29sTWVzc2FnZTsKK25hbWVzcGFjZSBwcm90bzIgeyBj
bGFzcyBNZXNzYWdlOyB9CiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIAotLy8gRm9yd2FyZCBkZWNs
YXJhdGlvbiBvZiBjbGFzc2VzLgorLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMuCiAKIGNsYXNzIEFz
c2VydGlvblJlc3VsdDsgICAgICAgICAgICAgICAgIC8vIFJlc3VsdCBvZiBhbiBhc3NlcnRpb24u
CiBjbGFzcyBNZXNzYWdlOyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXByZXNlbnRzIGEg
ZmFpbHVyZSBtZXNzYWdlLgpAQCAtMTA4LDI1ICs5MywxOSBAQCBjbGFzcyBUZXN0SW5mbzsgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCBhIHRlc3QuCiBjbGFzcyBU
ZXN0UGFydFJlc3VsdDsgICAgICAgICAgICAgICAgICAvLyBSZXN1bHQgb2YgYSB0ZXN0IHBhcnQu
CiBjbGFzcyBVbml0VGVzdDsgICAgICAgICAgICAgICAgICAgICAgICAvLyBBIGNvbGxlY3Rpb24g
b2YgdGVzdCBjYXNlcy4KIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cis6OnN0ZDo6c3RyaW5nIFBy
aW50VG9TdHJpbmcoY29uc3QgVCYgdmFsdWUpOworCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCiBz
dHJ1Y3QgVHJhY2VJbmZvOyAgICAgICAgICAgICAgICAgICAgICAvLyBJbmZvcm1hdGlvbiBhYm91
dCBhIHRyYWNlIHBvaW50LgotY2xhc3MgU2NvcGVkVHJhY2U7ICAgICAgICAgICAgICAgICAgICAg
Ly8gSW1wbGVtZW50cyBzY29wZWQgdHJhY2UuCiBjbGFzcyBUZXN0SW5mb0ltcGw7ICAgICAgICAg
ICAgICAgICAgICAvLyBPcGFxdWUgaW1wbGVtZW50YXRpb24gb2YgVGVzdEluZm8KIGNsYXNzIFVu
aXRUZXN0SW1wbDsgICAgICAgICAgICAgICAgICAgIC8vIE9wYXF1ZSBpbXBsZW1lbnRhdGlvbiBv
ZiBVbml0VGVzdAogCi0vLyBIb3cgbWFueSB0aW1lcyBJbml0R29vZ2xlVGVzdCgpIGhhcyBiZWVu
IGNhbGxlZC4KLWV4dGVybiBpbnQgZ19pbml0X2d0ZXN0X2NvdW50OwotCiAvLyBUaGUgdGV4dCB1
c2VkIGluIGZhaWx1cmUgbWVzc2FnZXMgdG8gaW5kaWNhdGUgdGhlIHN0YXJ0IG9mIHRoZQogLy8g
c3RhY2sgdHJhY2UuCiBHVEVTVF9BUElfIGV4dGVybiBjb25zdCBjaGFyIGtTdGFja1RyYWNlTWFy
a2VyW107CiAKLS8vIEEgc2VjcmV0IHR5cGUgdGhhdCBHb29nbGUgVGVzdCB1c2VycyBkb24ndCBr
bm93IGFib3V0LiAgSXQgaGFzIG5vCi0vLyBkZWZpbml0aW9uIG9uIHB1cnBvc2UuICBUaGVyZWZv
cmUgaXQncyBpbXBvc3NpYmxlIHRvIGNyZWF0ZSBhCi0vLyBTZWNyZXQgb2JqZWN0LCB3aGljaCBp
cyB3aGF0IHdlIHdhbnQuCi1jbGFzcyBTZWNyZXQ7Ci0KIC8vIFR3byBvdmVybG9hZGVkIGhlbHBl
cnMgZm9yIGNoZWNraW5nIGF0IGNvbXBpbGUgdGltZSB3aGV0aGVyIGFuCiAvLyBleHByZXNzaW9u
IGlzIGEgbnVsbCBwb2ludGVyIGxpdGVyYWwgKGkuZS4gTlVMTCBvciBhbnkgMC12YWx1ZWQKIC8v
IGNvbXBpbGUtdGltZSBpbnRlZ3JhbCBjb25zdGFudCkuICBUaGVpciByZXR1cm4gdmFsdWVzIGhh
dmUKQEAgLTE1MCwxMjcgKzEyOSw2NSBAQCBjaGFyICgmSXNOdWxsTGl0ZXJhbEhlbHBlciguLi4p
KVsyXTsgIC8vIE5PTElOVAogI2lmZGVmIEdURVNUX0VMTElQU0lTX05FRURTX1BPRF8KIC8vIFdl
IGxvc2Ugc3VwcG9ydCBmb3IgTlVMTCBkZXRlY3Rpb24gd2hlcmUgdGhlIGNvbXBpbGVyIGRvZXNu
J3QgbGlrZQogLy8gcGFzc2luZyBub24tUE9EIGNsYXNzZXMgdGhyb3VnaCBlbGxpcHNpcyAoLi4u
KS4KLSNkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBmYWxzZQorIyBkZWZpbmUgR1RF
U1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBmYWxzZQogI2Vsc2UKLSNkZWZpbmUgR1RFU1RfSVNfTlVM
TF9MSVRFUkFMXyh4KSBcCisjIGRlZmluZSBHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHgpIFwKICAg
ICAoc2l6ZW9mKDo6dGVzdGluZzo6aW50ZXJuYWw6OklzTnVsbExpdGVyYWxIZWxwZXIoeCkpID09
IDEpCiAjZW5kaWYgIC8vIEdURVNUX0VMTElQU0lTX05FRURTX1BPRF8KIAogLy8gQXBwZW5kcyB0
aGUgdXNlci1zdXBwbGllZCBtZXNzYWdlIHRvIHRoZSBHb29nbGUtVGVzdC1nZW5lcmF0ZWQgbWVz
c2FnZS4KLUdURVNUX0FQSV8gU3RyaW5nIEFwcGVuZFVzZXJNZXNzYWdlKGNvbnN0IFN0cmluZyYg
Z3Rlc3RfbXNnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVz
c2FnZSYgdXNlcl9tc2cpOwotCi0vLyBBIGhlbHBlciBjbGFzcyBmb3IgY3JlYXRpbmcgc2NvcGVk
IHRyYWNlcyBpbiB1c2VyIHByb2dyYW1zLgotY2xhc3MgR1RFU1RfQVBJXyBTY29wZWRUcmFjZSB7
Ci0gcHVibGljOgotICAvLyBUaGUgYyd0b3IgcHVzaGVzIHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBs
b2NhdGlvbiBhbmQgbWVzc2FnZSBvbnRvCi0gIC8vIGEgdHJhY2Ugc3RhY2sgbWFpbnRhaW5lZCBi
eSBHb29nbGUgVGVzdC4KLSAgU2NvcGVkVHJhY2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUs
IGNvbnN0IE1lc3NhZ2UmIG1lc3NhZ2UpOwotCi0gIC8vIFRoZSBkJ3RvciBwb3BzIHRoZSBpbmZv
IHB1c2hlZCBieSB0aGUgYyd0b3IuCi0gIC8vCi0gIC8vIE5vdGUgdGhhdCB0aGUgZCd0b3IgaXMg
bm90IHZpcnR1YWwgaW4gb3JkZXIgdG8gYmUgZWZmaWNpZW50LgotICAvLyBEb24ndCBpbmhlcml0
IGZyb20gU2NvcGVkVHJhY2UhCi0gIH5TY29wZWRUcmFjZSgpOwotCi0gcHJpdmF0ZToKLSAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTY29wZWRUcmFjZSk7Ci19IEdURVNUX0FUVFJJ
QlVURV9VTlVTRURfOyAgLy8gQSBTY29wZWRUcmFjZSBvYmplY3QgZG9lcyBpdHMgam9iIGluIGl0
cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGMndG9yIGFuZCBkJ3Rvci4gIFRoZXJl
Zm9yZSBpdCBkb2Vzbid0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmVlZCB0byBi
ZSB1c2VkIG90aGVyd2lzZS4KLQotLy8gQ29udmVydHMgYSBzdHJlYW1hYmxlIHZhbHVlIHRvIGEg
U3RyaW5nLiAgQSBOVUxMIHBvaW50ZXIgaXMKLS8vIGNvbnZlcnRlZCB0byAiKG51bGwpIi4gIFdo
ZW4gdGhlIGlucHV0IHZhbHVlIGlzIGEgOjpzdHJpbmcsCi0vLyA6OnN0ZDo6c3RyaW5nLCA6Ondz
dHJpbmcsIG9yIDo6c3RkOjp3c3RyaW5nIG9iamVjdCwgZWFjaCBOVUwKLS8vIGNoYXJhY3RlciBp
biBpdCBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgotLy8gRGVjbGFyZWQgaGVyZSBidXQgZGVmaW5l
ZCBpbiBndGVzdC5oLCBzbyB0aGF0IGl0IGhhcyBhY2Nlc3MKLS8vIHRvIHRoZSBkZWZpbml0aW9u
IG9mIHRoZSBNZXNzYWdlIGNsYXNzLCByZXF1aXJlZCBieSB0aGUgQVJNCi0vLyBjb21waWxlci4K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotU3RyaW5nIFN0cmVhbWFibGVUb1N0cmluZyhjb25zdCBU
JiBzdHJlYW1hYmxlKTsKLQotLy8gRm9ybWF0cyBhIHZhbHVlIHRvIGJlIHVzZWQgaW4gYSBmYWls
dXJlIG1lc3NhZ2UuCi0KLSNpZmRlZiBHVEVTVF9ORUVEU19JU19QT0lOVEVSXwotCi0vLyBUaGVz
ZSBhcmUgbmVlZGVkIGFzIHRoZSBOb2tpYSBTeW1iaWFuIGFuZCBJQk0gWEwgQy9DKysgY29tcGls
ZXJzCi0vLyBjYW5ub3QgZGVjaWRlIGJldHdlZW4gY29uc3QgVCYgYW5kIGNvbnN0IFQqIGluIGEg
ZnVuY3Rpb24gdGVtcGxhdGUuCi0vLyBUaGVzZSBjb21waWxlcnMgX2Nhbl8gZGVjaWRlIGJldHdl
ZW4gY2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zCi0vLyBmb3IgVCBhbmQgVCosIHNvIGEg
dHIxOjp0eXBlX3RyYWl0cy1saWtlIGlzX3BvaW50ZXIgd29ya3MsIGFuZCB3ZQotLy8gY2FuIG92
ZXJsb2FkIG9uIHRoYXQuCitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIEFwcGVuZFVzZXJNZXNzYWdl
KAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBndGVzdF9tc2csIGNvbnN0IE1lc3NhZ2UmIHVzZXJf
bXNnKTsKIAotLy8gVGhpcyBvdmVybG9hZCBtYWtlcyBzdXJlIHRoYXQgYWxsIHBvaW50ZXJzIChp
bmNsdWRpbmcKLS8vIHRob3NlIHRvIGNoYXIgb3Igd2NoYXJfdCkgYXJlIHByaW50ZWQgYXMgcmF3
IHBvaW50ZXJzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgU3RyaW5nIEZvcm1hdFZh
bHVlRm9yRmFpbHVyZU1lc3NhZ2UoaW50ZXJuYWw6OnRydWVfdHlwZSAvKmR1bW15Ki8sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVCogcG9pbnRlcikgewotICBy
ZXR1cm4gU3RyZWFtYWJsZVRvU3RyaW5nKHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihwb2ludGVy
KSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFN0cmluZyBGb3JtYXRWYWx1
ZUZvckZhaWx1cmVNZXNzYWdlKGludGVybmFsOjpmYWxzZV90eXBlIC8qZHVtbXkqLywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiB2YWx1ZSkgewot
ICByZXR1cm4gU3RyZWFtYWJsZVRvU3RyaW5nKHZhbHVlKTsKLX0KKyNpZiBHVEVTVF9IQVNfRVhD
RVBUSU9OUwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBTdHJpbmcgRm9ybWF0Rm9y
RmFpbHVyZU1lc3NhZ2UoY29uc3QgVCYgdmFsdWUpIHsKLSAgcmV0dXJuIEZvcm1hdFZhbHVlRm9y
RmFpbHVyZU1lc3NhZ2UoCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6aXNfcG9pbnRlcjxUPjo6
dHlwZSgpLCB2YWx1ZSk7Ci19CitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0Mjc1
IFwKKy8qIGFuIGV4cG9ydGVkIGNsYXNzIHdhcyBkZXJpdmVkIGZyb20gYSBjbGFzcyB0aGF0IHdh
cyBub3QgZXhwb3J0ZWQgKi8pCiAKLSNlbHNlCisvLyBUaGlzIGV4Y2VwdGlvbiBpcyB0aHJvd24g
YnkgKGFuZCBvbmx5IGJ5KSBhIGZhaWxlZCBHb29nbGUgVGVzdAorLy8gYXNzZXJ0aW9uIHdoZW4g
R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSBpcyB0cnVlIChpZiBleGNlcHRpb25zCisvLyBh
cmUgZW5hYmxlZCkuICBXZSBkZXJpdmUgaXQgZnJvbSBzdGQ6OnJ1bnRpbWVfZXJyb3IsIHdoaWNo
IGlzIGZvcgorLy8gZXJyb3JzIHByZXN1bWFibHkgZGV0ZWN0YWJsZSBvbmx5IGF0IHJ1biB0aW1l
LiAgU2luY2UKKy8vIHN0ZDo6cnVudGltZV9lcnJvciBpbmhlcml0cyBmcm9tIHN0ZDo6ZXhjZXB0
aW9uLCBtYW55IHRlc3RpbmcKKy8vIGZyYW1ld29ya3Mga25vdyBob3cgdG8gZXh0cmFjdCBhbmQg
cHJpbnQgdGhlIG1lc3NhZ2UgaW5zaWRlIGl0LgorY2xhc3MgR1RFU1RfQVBJXyBHb29nbGVUZXN0
RmFpbHVyZUV4Y2VwdGlvbiA6IHB1YmxpYyA6OnN0ZDo6cnVudGltZV9lcnJvciB7CisgcHVibGlj
OgorICBleHBsaWNpdCBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbihjb25zdCBUZXN0UGFydFJl
c3VsdCYgZmFpbHVyZSk7Cit9OwogCi0vLyBUaGVzZSBhcmUgbmVlZGVkIGFzIHRoZSBhYm92ZSBz
b2x1dGlvbiB1c2luZyBpc19wb2ludGVyIGhhcyB0aGUKLS8vIGxpbWl0YXRpb24gdGhhdCBUIGNh
bm5vdCBiZSBhIHR5cGUgd2l0aG91dCBleHRlcm5hbCBsaW5rYWdlLCB3aGVuCi0vLyBjb21waWxl
ZCB1c2luZyBNU1ZDLgorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI3
NQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVy
ZU1lc3NhZ2UoY29uc3QgVCYgdmFsdWUpIHsKLSAgcmV0dXJuIFN0cmVhbWFibGVUb1N0cmluZyh2
YWx1ZSk7Ci19CisjZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCiAKLS8vIFRoaXMgb3Zl
cmxvYWQgbWFrZXMgc3VyZSB0aGF0IGFsbCBwb2ludGVycyAoaW5jbHVkaW5nCi0vLyB0aG9zZSB0
byBjaGFyIG9yIHdjaGFyX3QpIGFyZSBwcmludGVkIGFzIHJhdyBwb2ludGVycy4KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotaW5saW5lIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShUKiBw
b2ludGVyKSB7Ci0gIHJldHVybiBTdHJlYW1hYmxlVG9TdHJpbmcoc3RhdGljX2Nhc3Q8Y29uc3Qg
dm9pZCo+KHBvaW50ZXIpKTsKLX0KK25hbWVzcGFjZSBlZGl0X2Rpc3RhbmNlIHsKKy8vIFJldHVy
bnMgdGhlIG9wdGltYWwgZWRpdHMgdG8gZ28gZnJvbSAnbGVmdCcgdG8gJ3JpZ2h0Jy4KKy8vIEFs
bCBlZGl0cyBjb3N0IHRoZSBzYW1lLCB3aXRoIHJlcGxhY2UgaGF2aW5nIGxvd2VyIHByaW9yaXR5
IHRoYW4KKy8vIGFkZC9yZW1vdmUuCisvLyBTaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFdh
Z25lci1GaXNjaGVyIGFsZ29yaXRobS4KKy8vIFNlZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93
aWtpL1dhZ25lci1GaXNjaGVyX2FsZ29yaXRobQorZW51bSBFZGl0VHlwZSB7IGtNYXRjaCwga0Fk
ZCwga1JlbW92ZSwga1JlcGxhY2UgfTsKK0dURVNUX0FQSV8gc3RkOjp2ZWN0b3I8RWRpdFR5cGU+
IENhbGN1bGF0ZU9wdGltYWxFZGl0cygKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+JiBs
ZWZ0LCBjb25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+JiByaWdodCk7CiAKLSNlbmRpZiAgLy8gR1RF
U1RfTkVFRFNfSVNfUE9JTlRFUl8KLQotLy8gVGhlc2Ugb3ZlcmxvYWRlZCB2ZXJzaW9ucyBoYW5k
bGUgbmFycm93IGFuZCB3aWRlIGNoYXJhY3RlcnMuCi1HVEVTVF9BUElfIFN0cmluZyBGb3JtYXRG
b3JGYWlsdXJlTWVzc2FnZShjaGFyIGNoKTsKLUdURVNUX0FQSV8gU3RyaW5nIEZvcm1hdEZvckZh
aWx1cmVNZXNzYWdlKHdjaGFyX3Qgd2NoYXIpOwotCi0vLyBXaGVuIHRoaXMgb3BlcmFuZCBpcyBh
IGNvbnN0IGNoYXIqIG9yIGNoYXIqLCBhbmQgdGhlIG90aGVyIG9wZXJhbmQKLS8vIGlzIGEgOjpz
dGQ6OnN0cmluZyBvciA6OnN0cmluZywgd2UgcHJpbnQgdGhpcyBvcGVyYW5kIGFzIGEgQyBzdHJp
bmcKLS8vIHJhdGhlciB0aGFuIGEgcG9pbnRlci4gIFdlIGRvIHRoZSBzYW1lIGZvciB3aWRlIHN0
cmluZ3MuCi0KLS8vIFRoaXMgaW50ZXJuYWwgbWFjcm8gaXMgdXNlZCB0byBhdm9pZCBkdXBsaWNh
dGVkIGNvZGUuCi0jZGVmaW5lIEdURVNUX0ZPUk1BVF9JTVBMXyhvcGVyYW5kMl90eXBlLCBvcGVy
YW5kMV9wcmludGVyKVwKLWlubGluZSBTdHJpbmcgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVN
ZXNzYWdlKFwKLSAgICBvcGVyYW5kMl90eXBlOjp2YWx1ZV90eXBlKiBzdHIsIGNvbnN0IG9wZXJh
bmQyX3R5cGUmIC8qb3BlcmFuZDIqLykge1wKLSAgcmV0dXJuIG9wZXJhbmQxX3ByaW50ZXIoc3Ry
KTtcCi19XAotaW5saW5lIFN0cmluZyBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uo
XAotICAgIGNvbnN0IG9wZXJhbmQyX3R5cGU6OnZhbHVlX3R5cGUqIHN0ciwgY29uc3Qgb3BlcmFu
ZDJfdHlwZSYgLypvcGVyYW5kMiovKSB7XAotICByZXR1cm4gb3BlcmFuZDFfcHJpbnRlcihzdHIp
O1wKLX0KKy8vIFNhbWUgYXMgYWJvdmUsIGJ1dCB0aGUgaW5wdXQgaXMgcmVwcmVzZW50ZWQgYXMg
c3RyaW5ncy4KK0dURVNUX0FQSV8gc3RkOjp2ZWN0b3I8RWRpdFR5cGU+IENhbGN1bGF0ZU9wdGlt
YWxFZGl0cygKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGxlZnQsCisgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiByaWdodCk7CiAKLUdURVNUX0ZPUk1BVF9J
TVBMXyg6OnN0ZDo6c3RyaW5nLCBTdHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKQotI2lmIEdURVNU
X0hBU19TVERfV1NUUklORwotR1RFU1RfRk9STUFUX0lNUExfKDo6c3RkOjp3c3RyaW5nLCBTdHJp
bmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZCkKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RS
SU5HCisvLyBDcmVhdGUgYSBkaWZmIG9mIHRoZSBpbnB1dCBzdHJpbmdzIGluIFVuaWZpZWQgZGlm
ZiBmb3JtYXQuCitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIENyZWF0ZVVuaWZpZWREaWZmKGNvbnN0
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiByaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvbnRleHQg
PSAyKTsKIAotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi1HVEVTVF9GT1JNQVRfSU1QTF8o
OjpzdHJpbmcsIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQpCi0jZW5kaWYgIC8vIEdURVNUX0hB
U19HTE9CQUxfU1RSSU5HCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCi1HVEVTVF9GT1JN
QVRfSU1QTF8oOjp3c3RyaW5nLCBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZCkKLSNlbmRp
ZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCit9ICAvLyBuYW1lc3BhY2UgZWRpdF9kaXN0
YW5jZQogCi0jdW5kZWYgR1RFU1RfRk9STUFUX0lNUExfCisvLyBDYWxjdWxhdGUgdGhlIGRpZmYg
YmV0d2VlbiAnbGVmdCcgYW5kICdyaWdodCcgYW5kIHJldHVybiBpdCBpbiB1bmlmaWVkIGRpZmYK
Ky8vIGZvcm1hdC4KKy8vIElmIG5vdCBudWxsLCBzdG9yZXMgaW4gJ3RvdGFsX2xpbmVfY291bnQn
IHRoZSB0b3RhbCBudW1iZXIgb2YgbGluZXMgZm91bmQKKy8vIGluIGxlZnQgKyByaWdodC4KK0dU
RVNUX0FQSV8gc3RkOjpzdHJpbmcgRGlmZlN0cmluZ3MoY29uc3Qgc3RkOjpzdHJpbmcmIGxlZnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBy
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiB0b3RhbF9s
aW5lX2NvdW50KTsKIAogLy8gQ29uc3RydWN0cyBhbmQgcmV0dXJucyB0aGUgbWVzc2FnZSBmb3Ig
YW4gZXF1YWxpdHkgYXNzZXJ0aW9uCiAvLyAoZS5nLiBBU1NFUlRfRVEsIEVYUEVDVF9TVFJFUSwg
ZXRjKSBmYWlsdXJlLgpAQCAtMjg5LDEyICsyMDYsMTIgQEAgR1RFU1RfRk9STUFUX0lNUExfKDo6
d3N0cmluZywgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQpCiAvLyBiZSBpbnNlcnRlZCBp
bnRvIHRoZSBtZXNzYWdlLgogR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgRXFGYWlsdXJlKGNv
bnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBleHBlY3RlZF92YWx1ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGFjdHVhbF92
YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgZXhwZWN0ZWRfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFjdHVhbF92YWx1ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGlnbm9yaW5nX2Nhc2UpOwogCiAvLyBDb25zdHJ1Y3RzIGEg
ZmFpbHVyZSBtZXNzYWdlIGZvciBCb29sZWFuIGFzc2VydGlvbnMgc3VjaCBhcyBFWFBFQ1RfVFJV
RS4KLUdURVNUX0FQSV8gU3RyaW5nIEdldEJvb2xBc3NlcnRpb25GYWlsdXJlTWVzc2FnZSgKK0dU
RVNUX0FQSV8gc3RkOjpzdHJpbmcgR2V0Qm9vbEFzc2VydGlvbkZhaWx1cmVNZXNzYWdlKAogICAg
IGNvbnN0IEFzc2VydGlvblJlc3VsdCYgYXNzZXJ0aW9uX3Jlc3VsdCwKICAgICBjb25zdCBjaGFy
KiBleHByZXNzaW9uX3RleHQsCiAgICAgY29uc3QgY2hhciogYWN0dWFsX3ByZWRpY2F0ZV92YWx1
ZSwKQEAgLTM2OSw3ICsyODYsNyBAQCBjbGFzcyBGbG9hdGluZ1BvaW50IHsKICAgLy8gYml0cy4g
IFRoZXJlZm9yZSwgNCBzaG91bGQgYmUgZW5vdWdoIGZvciBvcmRpbmFyeSB1c2UuCiAgIC8vCiAg
IC8vIFNlZSB0aGUgZm9sbG93aW5nIGFydGljbGUgZm9yIG1vcmUgZGV0YWlscyBvbiBVTFA6Ci0g
IC8vIGh0dHA6Ly93d3cuY3lnbnVzLXNvZnR3YXJlLmNvbS9wYXBlcnMvY29tcGFyaW5nZmxvYXRz
L2NvbXBhcmluZ2Zsb2F0cy5odG0uCisgIC8vIGh0dHA6Ly9yYW5kb21hc2NpaS53b3JkcHJlc3Mu
Y29tLzIwMTIvMDIvMjUvY29tcGFyaW5nLWZsb2F0aW5nLXBvaW50LW51bWJlcnMtMjAxMi1lZGl0
aW9uLwogICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtNYXhVbHBzID0gNDsKIAogICAvLyBDb25zdHJ1
Y3RzIGEgRmxvYXRpbmdQb2ludCBmcm9tIGEgcmF3IGZsb2F0aW5nLXBvaW50IG51bWJlci4KQEAg
LTM5Niw2ICszMTMsOSBAQCBjbGFzcyBGbG9hdGluZ1BvaW50IHsKICAgICByZXR1cm4gUmVpbnRl
cnByZXRCaXRzKGtFeHBvbmVudEJpdE1hc2spOwogICB9CiAKKyAgLy8gUmV0dXJucyB0aGUgbWF4
aW11bSByZXByZXNlbnRhYmxlIGZpbml0ZSBmbG9hdGluZy1wb2ludCBudW1iZXIuCisgIHN0YXRp
YyBSYXdUeXBlIE1heCgpOworCiAgIC8vIE5vbi1zdGF0aWMgbWV0aG9kcwogCiAgIC8vIFJldHVy
bnMgdGhlIGJpdHMgdGhhdCByZXByZXNlbnRzIHRoaXMgbnVtYmVyLgpAQCAtNDc2LDYgKzM5Niwx
MyBAQCBjbGFzcyBGbG9hdGluZ1BvaW50IHsKICAgRmxvYXRpbmdQb2ludFVuaW9uIHVfOwogfTsK
IAorLy8gV2UgY2Fubm90IHVzZSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSBhcyBpdCBj
bGFzaGVzIHdpdGggdGhlIG1heCgpCisvLyBtYWNybyBkZWZpbmVkIGJ5IDx3aW5kb3dzLmg+Lgor
dGVtcGxhdGUgPD4KK2lubGluZSBmbG9hdCBGbG9hdGluZ1BvaW50PGZsb2F0Pjo6TWF4KCkgeyBy
ZXR1cm4gRkxUX01BWDsgfQordGVtcGxhdGUgPD4KK2lubGluZSBkb3VibGUgRmxvYXRpbmdQb2lu
dDxkb3VibGU+OjpNYXgoKSB7IHJldHVybiBEQkxfTUFYOyB9CisKIC8vIFR5cGVkZWZzIHRoZSBp
bnN0YW5jZXMgb2YgdGhlIEZsb2F0aW5nUG9pbnQgdGVtcGxhdGUgY2xhc3MgdGhhdCB3ZQogLy8g
Y2FyZSB0byB1c2UuCiB0eXBlZGVmIEZsb2F0aW5nUG9pbnQ8ZmxvYXQ+IEZsb2F0OwpAQCAtNTU4
LDI0ICs0ODUsMTggQEAgR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgSXNIUkVTVUxURmFpbHVy
ZShjb25zdCBjaGFyKiBleHByLAogCiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAotLy8g
Rm9ybWF0cyBhIHNvdXJjZSBmaWxlIHBhdGggYW5kIGEgbGluZSBudW1iZXIgYXMgdGhleSB3b3Vs
ZCBhcHBlYXIKLS8vIGluIGEgY29tcGlsZXIgZXJyb3IgbWVzc2FnZS4KLWlubGluZSBTdHJpbmcg
Rm9ybWF0RmlsZUxvY2F0aW9uKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKSB7Ci0gIGNvbnN0
IGNoYXIqIGNvbnN0IGZpbGVfbmFtZSA9IGZpbGUgPT0gTlVMTCA/ICJ1bmtub3duIGZpbGUiIDog
ZmlsZTsKLSAgaWYgKGxpbmUgPCAwKSB7Ci0gICAgcmV0dXJuIFN0cmluZzo6Rm9ybWF0KCIlczoi
LCBmaWxlX25hbWUpOwotICB9Ci0jaWZkZWYgX01TQ19WRVIKLSAgcmV0dXJuIFN0cmluZzo6Rm9y
bWF0KCIlcyglZCk6IiwgZmlsZV9uYW1lLCBsaW5lKTsKLSNlbHNlCi0gIHJldHVybiBTdHJpbmc6
OkZvcm1hdCgiJXM6JWQ6IiwgZmlsZV9uYW1lLCBsaW5lKTsKLSNlbmRpZiAgLy8gX01TQ19WRVIK
LX0KLQogLy8gVHlwZXMgb2YgU2V0VXBUZXN0Q2FzZSgpIGFuZCBUZWFyRG93blRlc3RDYXNlKCkg
ZnVuY3Rpb25zLgogdHlwZWRlZiB2b2lkICgqU2V0VXBUZXN0Q2FzZUZ1bmMpKCk7CiB0eXBlZGVm
IHZvaWQgKCpUZWFyRG93blRlc3RDYXNlRnVuYykoKTsKIAorc3RydWN0IENvZGVMb2NhdGlvbiB7
CisgIENvZGVMb2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgYV9maWxlLCBpbnQgYV9saW5lKQor
ICAgICAgOiBmaWxlKGFfZmlsZSksIGxpbmUoYV9saW5lKSB7fQorCisgIHN0ZDo6c3RyaW5nIGZp
bGU7CisgIGludCBsaW5lOworfTsKKwogLy8gQ3JlYXRlcyBhIG5ldyBUZXN0SW5mbyBvYmplY3Qg
YW5kIHJlZ2lzdGVycyBpdCB3aXRoIEdvb2dsZSBUZXN0OwogLy8gcmV0dXJucyB0aGUgY3JlYXRl
ZCBvYmplY3QuCiAvLwpAQCAtNTgzLDEwICs1MDQsMTEgQEAgdHlwZWRlZiB2b2lkICgqVGVhckRv
d25UZXN0Q2FzZUZ1bmMpKCk7CiAvLwogLy8gICB0ZXN0X2Nhc2VfbmFtZTogICBuYW1lIG9mIHRo
ZSB0ZXN0IGNhc2UKIC8vICAgbmFtZTogICAgICAgICAgICAgbmFtZSBvZiB0aGUgdGVzdAotLy8g
ICB0ZXN0X2Nhc2VfY29tbWVudDogYSBjb21tZW50IG9uIHRoZSB0ZXN0IGNhc2UgdGhhdCB3aWxs
IGJlIGluY2x1ZGVkIGluCi0vLyAgICAgICAgICAgICAgICAgICAgICB0aGUgdGVzdCBvdXRwdXQK
LS8vICAgY29tbWVudDogICAgICAgICAgYSBjb21tZW50IG9uIHRoZSB0ZXN0IHRoYXQgd2lsbCBi
ZSBpbmNsdWRlZCBpbiB0aGUKLS8vICAgICAgICAgICAgICAgICAgICAgdGVzdCBvdXRwdXQKKy8v
ICAgdHlwZV9wYXJhbSAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRl
ciwgb3IgTlVMTCBpZgorLy8gICAgICAgICAgICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGVk
IG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisvLyAgIHZhbHVlX3BhcmFtICAgICAgIHRl
eHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRlc3QncyB2YWx1ZSBwYXJhbWV0ZXIsCisvLyAgICAg
ICAgICAgICAgICAgICAgIG9yIE5VTEwgaWYgdGhpcyBpcyBub3QgYSB0eXBlLXBhcmFtZXRlcml6
ZWQgdGVzdC4KKy8vICAgY29kZV9sb2NhdGlvbjogICAgY29kZSBsb2NhdGlvbiB3aGVyZSB0aGUg
dGVzdCBpcyBkZWZpbmVkCiAvLyAgIGZpeHR1cmVfY2xhc3NfaWQ6IElEIG9mIHRoZSB0ZXN0IGZp
eHR1cmUgY2xhc3MKIC8vICAgc2V0X3VwX3RjOiAgICAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rp
b24gdGhhdCBzZXRzIHVwIHRoZSB0ZXN0IGNhc2UKIC8vICAgdGVhcl9kb3duX3RjOiAgICAgcG9p
bnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UKQEAgLTU5
NCw4ICs1MTYsMTEgQEAgdHlwZWRlZiB2b2lkICgqVGVhckRvd25UZXN0Q2FzZUZ1bmMpKCk7CiAv
LyAgICAgICAgICAgICAgICAgICAgIFRoZSBuZXdseSBjcmVhdGVkIFRlc3RJbmZvIGluc3RhbmNl
IHdpbGwgYXNzdW1lCiAvLyAgICAgICAgICAgICAgICAgICAgIG93bmVyc2hpcCBvZiB0aGUgZmFj
dG9yeSBvYmplY3QuCiBHVEVTVF9BUElfIFRlc3RJbmZvKiBNYWtlQW5kUmVnaXN0ZXJUZXN0SW5m
bygKLSAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwgY29uc3QgY2hhciogbmFtZSwKLSAg
ICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfY29tbWVudCwgY29uc3QgY2hhciogY29tbWVudCwKKyAg
ICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICBjb25zdCBjaGFyKiBuYW1lLAorICAg
IGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0sCisgICAgY29uc3QgY2hhciogdmFsdWVfcGFyYW0sCisg
ICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24sCiAgICAgVHlwZUlkIGZpeHR1cmVfY2xhc3Nf
aWQsCiAgICAgU2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAgIFRlYXJEb3duVGVzdENh
c2VGdW5jIHRlYXJfZG93bl90YywKQEAgLTYwNCwxMCArNTI5LDEzIEBAIEdURVNUX0FQSV8gVGVz
dEluZm8qIE1ha2VBbmRSZWdpc3RlclRlc3RJbmZvKAogLy8gSWYgKnBzdHIgc3RhcnRzIHdpdGgg
dGhlIGdpdmVuIHByZWZpeCwgbW9kaWZpZXMgKnBzdHIgdG8gYmUgcmlnaHQKIC8vIHBhc3QgdGhl
IHByZWZpeCBhbmQgcmV0dXJucyB0cnVlOyBvdGhlcndpc2UgbGVhdmVzICpwc3RyIHVuY2hhbmdl
ZAogLy8gYW5kIHJldHVybnMgZmFsc2UuICBOb25lIG9mIHBzdHIsICpwc3RyLCBhbmQgcHJlZml4
IGNhbiBiZSBOVUxMLgotYm9vbCBTa2lwUHJlZml4KGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3Qg
Y2hhcioqIHBzdHIpOworR1RFU1RfQVBJXyBib29sIFNraXBQcmVmaXgoY29uc3QgY2hhciogcHJl
Zml4LCBjb25zdCBjaGFyKiogcHN0cik7CiAKICNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBH
VEVTVF9IQVNfVFlQRURfVEVTVF9QCiAKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hf
KDQyNTEgXAorLyogY2xhc3MgQSBuZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNl
ZCBieSBjbGllbnRzIG9mIGNsYXNzIEIgKi8pCisKIC8vIFN0YXRlIG9mIHRoZSBkZWZpbml0aW9u
IG9mIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZS4KIGNsYXNzIEdURVNUX0FQSV8gVHlw
ZWRUZXN0Q2FzZVBTdGF0ZSB7CiAgcHVibGljOgpAQCAtNjI1LDEwICs1NTMsMjEgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBUeXBlZFRlc3RDYXNlUFN0YXRlIHsKICAgICAgIGZmbHVzaChzdGRlcnIpOwog
ICAgICAgcG9zaXg6OkFib3J0KCk7CiAgICAgfQotICAgIGRlZmluZWRfdGVzdF9uYW1lc18uaW5z
ZXJ0KHRlc3RfbmFtZSk7CisgICAgcmVnaXN0ZXJlZF90ZXN0c18uaW5zZXJ0KAorICAgICAgICA6
OnN0ZDo6bWFrZV9wYWlyKHRlc3RfbmFtZSwgQ29kZUxvY2F0aW9uKGZpbGUsIGxpbmUpKSk7CiAg
ICAgcmV0dXJuIHRydWU7CiAgIH0KIAorICBib29sIFRlc3RFeGlzdHMoY29uc3Qgc3RkOjpzdHJp
bmcmIHRlc3RfbmFtZSkgY29uc3QgeworICAgIHJldHVybiByZWdpc3RlcmVkX3Rlc3RzXy5jb3Vu
dCh0ZXN0X25hbWUpID4gMDsKKyAgfQorCisgIGNvbnN0IENvZGVMb2NhdGlvbiYgR2V0Q29kZUxv
Y2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0X25hbWUpIGNvbnN0IHsKKyAgICBSZWdpc3Rl
cmVkVGVzdHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVnaXN0ZXJlZF90ZXN0c18uZmluZCh0
ZXN0X25hbWUpOworICAgIEdURVNUX0NIRUNLXyhpdCAhPSByZWdpc3RlcmVkX3Rlc3RzXy5lbmQo
KSk7CisgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CisgIH0KKwogICAvLyBWZXJpZmllcyB0aGF0IHJl
Z2lzdGVyZWRfdGVzdHMgbWF0Y2ggdGhlIHRlc3QgbmFtZXMgaW4KICAgLy8gZGVmaW5lZF90ZXN0
X25hbWVzXzsgcmV0dXJucyByZWdpc3RlcmVkX3Rlc3RzIGlmIHN1Y2Nlc3NmdWwsIG9yCiAgIC8v
IGFib3J0cyB0aGUgcHJvZ3JhbSBvdGhlcndpc2UuCkBAIC02MzYsMTAgKzU3NSwxNCBAQCBjbGFz
cyBHVEVTVF9BUElfIFR5cGVkVGVzdENhc2VQU3RhdGUgewogICAgICAgY29uc3QgY2hhciogZmls
ZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIHJlZ2lzdGVyZWRfdGVzdHMpOwogCiAgcHJpdmF0ZToK
KyAgdHlwZWRlZiA6OnN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBDb2RlTG9jYXRpb24+IFJlZ2lzdGVy
ZWRUZXN0c01hcDsKKwogICBib29sIHJlZ2lzdGVyZWRfOwotICA6OnN0ZDo6c2V0PGNvbnN0IGNo
YXIqPiBkZWZpbmVkX3Rlc3RfbmFtZXNfOworICBSZWdpc3RlcmVkVGVzdHNNYXAgcmVnaXN0ZXJl
ZF90ZXN0c187CiB9OwogCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkgIC8vICA0
MjUxCisKIC8vIFNraXBzIHRvIHRoZSBmaXJzdCBub24tc3BhY2UgY2hhciBhZnRlciB0aGUgZmly
c3QgY29tbWEgaW4gJ3N0cic7CiAvLyByZXR1cm5zIE5VTEwgaWYgbm8gY29tbWEgaXMgZm91bmQg
aW4gJ3N0cicuCiBpbmxpbmUgY29uc3QgY2hhciogU2tpcENvbW1hKGNvbnN0IGNoYXIqIHN0cikg
ewpAQCAtNjQ3LDE1ICs1OTAsNTEgQEAgaW5saW5lIGNvbnN0IGNoYXIqIFNraXBDb21tYShjb25z
dCBjaGFyKiBzdHIpIHsKICAgaWYgKGNvbW1hID09IE5VTEwpIHsKICAgICByZXR1cm4gTlVMTDsK
ICAgfQotICB3aGlsZSAoaXNzcGFjZSgqKCsrY29tbWEpKSkge30KKyAgd2hpbGUgKElzU3BhY2Uo
KigrK2NvbW1hKSkpIHt9CiAgIHJldHVybiBjb21tYTsKIH0KIAogLy8gUmV0dXJucyB0aGUgcHJl
Zml4IG9mICdzdHInIGJlZm9yZSB0aGUgZmlyc3QgY29tbWEgaW4gaXQ7IHJldHVybnMKIC8vIHRo
ZSBlbnRpcmUgc3RyaW5nIGlmIGl0IGNvbnRhaW5zIG5vIGNvbW1hLgotaW5saW5lIFN0cmluZyBH
ZXRQcmVmaXhVbnRpbENvbW1hKGNvbnN0IGNoYXIqIHN0cikgeworaW5saW5lIHN0ZDo6c3RyaW5n
IEdldFByZWZpeFVudGlsQ29tbWEoY29uc3QgY2hhciogc3RyKSB7CiAgIGNvbnN0IGNoYXIqIGNv
bW1hID0gc3RyY2hyKHN0ciwgJywnKTsKLSAgcmV0dXJuIGNvbW1hID09IE5VTEwgPyBTdHJpbmco
c3RyKSA6IFN0cmluZyhzdHIsIGNvbW1hIC0gc3RyKTsKKyAgcmV0dXJuIGNvbW1hID09IE5VTEwg
PyBzdHIgOiBzdGQ6OnN0cmluZyhzdHIsIGNvbW1hKTsKK30KKworLy8gU3BsaXRzIGEgZ2l2ZW4g
c3RyaW5nIG9uIGEgZ2l2ZW4gZGVsaW1pdGVyLCBwb3B1bGF0aW5nIGEgZ2l2ZW4KKy8vIHZlY3Rv
ciB3aXRoIHRoZSBmaWVsZHMuCit2b2lkIFNwbGl0U3RyaW5nKGNvbnN0IDo6c3RkOjpzdHJpbmcm
IHN0ciwgY2hhciBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAgIDo6c3RkOjp2ZWN0b3I8IDo6
c3RkOjpzdHJpbmc+KiBkZXN0KTsKKworLy8gVGhlIGRlZmF1bHQgYXJndW1lbnQgdG8gdGhlIHRl
bXBsYXRlIGJlbG93IGZvciB0aGUgY2FzZSB3aGVuIHRoZSB1c2VyIGRvZXMKKy8vIG5vdCBwcm92
aWRlIGEgbmFtZSBnZW5lcmF0b3IuCitzdHJ1Y3QgRGVmYXVsdE5hbWVHZW5lcmF0b3IgeworICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldE5hbWUoaW50IGkp
IHsKKyAgICByZXR1cm4gU3RyZWFtYWJsZVRvU3RyaW5nKGkpOworICB9Cit9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgUHJvdmlkZWQgPSBEZWZhdWx0TmFtZUdlbmVyYXRvcj4KK3N0cnVjdCBOYW1l
R2VuZXJhdG9yU2VsZWN0b3IgeworICB0eXBlZGVmIFByb3ZpZGVkIHR5cGU7Cit9OworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgTmFtZUdlbmVyYXRvcj4KK3ZvaWQgR2VuZXJhdGVOYW1lc1JlY3Vyc2l2
ZWx5KFR5cGVzMCwgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiwgaW50KSB7fQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgTmFtZUdlbmVyYXRvciwgdHlwZW5hbWUgVHlwZXM+Cit2b2lkIEdlbmVyYXRl
TmFtZXNSZWN1cnNpdmVseShUeXBlcywgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiByZXN1bHQs
IGludCBpKSB7CisgIHJlc3VsdC0+cHVzaF9iYWNrKE5hbWVHZW5lcmF0b3I6OnRlbXBsYXRlIEdl
dE5hbWU8dHlwZW5hbWUgVHlwZXM6OkhlYWQ+KGkpKTsKKyAgR2VuZXJhdGVOYW1lc1JlY3Vyc2l2
ZWx5PE5hbWVHZW5lcmF0b3I+KHR5cGVuYW1lIFR5cGVzOjpUYWlsKCksIHJlc3VsdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKyAxKTsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIE5hbWVHZW5lcmF0b3IsIHR5cGVuYW1lIFR5cGVzPgorc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IEdlbmVyYXRlTmFtZXMoKSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
PiByZXN1bHQ7CisgIEdlbmVyYXRlTmFtZXNSZWN1cnNpdmVseTxOYW1lR2VuZXJhdG9yPihUeXBl
cygpLCAmcmVzdWx0LCAwKTsKKyAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLy8gVHlwZVBhcmFtZXRl
cml6ZWRUZXN0PEZpeHR1cmUsIFRlc3RTZWwsIFR5cGVzPjo6UmVnaXN0ZXIoKQpAQCAtNjcyLDgg
KzY1MSwxMCBAQCBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3QgewogICAvLyBzcGVjaWZpZWQg
aW4gSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoUHJlZml4LCBUZXN0Q2FzZSwKICAgLy8g
VHlwZXMpLiAgVmFsaWQgdmFsdWVzIGZvciAnaW5kZXgnIGFyZSBbMCwgTiAtIDFdIHdoZXJlIE4g
aXMgdGhlCiAgIC8vIGxlbmd0aCBvZiBUeXBlcy4KLSAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29u
c3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiBjYXNlX25hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHRlc3RfbmFtZXMsIGludCBpbmRleCkgeworICBzdGF0aWMgYm9v
bCBSZWdpc3Rlcihjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IENvZGVMb2NhdGlvbiYgY29kZV9s
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogY2FzZV9uYW1lLCBj
b25zdCBjaGFyKiB0ZXN0X25hbWVzLCBpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgdHlwZV9uYW1lcyA9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHZW5lcmF0ZU5hbWVzPERlZmF1bHROYW1lR2VuZXJhdG9yLCBUeXBl
cz4oKSkgewogICAgIHR5cGVkZWYgdHlwZW5hbWUgVHlwZXM6OkhlYWQgVHlwZTsKICAgICB0eXBl
ZGVmIEZpeHR1cmU8VHlwZT4gRml4dHVyZUNsYXNzOwogICAgIHR5cGVkZWYgdHlwZW5hbWUgR1RF
U1RfQklORF8oVGVzdFNlbCwgVHlwZSkgVGVzdENsYXNzOwpAQCAtNjgxLDE5ICs2NjIsMjMgQEAg
Y2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0IHsKICAgICAvLyBGaXJzdCwgcmVnaXN0ZXJzIHRo
ZSBmaXJzdCB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBpbiB0aGUgdHlwZQogICAgIC8vIGxpc3Qu
CiAgICAgTWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8oCi0gICAgICAgIFN0cmluZzo6Rm9ybWF0KCIl
cyVzJXMvJWQiLCBwcmVmaXgsIHByZWZpeFswXSA9PSAnXDAnID8gIiIgOiAiLyIsCi0gICAgICAg
ICAgICAgICAgICAgICAgIGNhc2VfbmFtZSwgaW5kZXgpLmNfc3RyKCksCi0gICAgICAgIEdldFBy
ZWZpeFVudGlsQ29tbWEodGVzdF9uYW1lcykuY19zdHIoKSwKLSAgICAgICAgU3RyaW5nOjpGb3Jt
YXQoIlR5cGVQYXJhbSA9ICVzIiwgR2V0VHlwZU5hbWU8VHlwZT4oKS5jX3N0cigpKS5jX3N0cigp
LAotICAgICAgICAiIiwKLSAgICAgICAgR2V0VHlwZUlkPEZpeHR1cmVDbGFzcz4oKSwKLSAgICAg
ICAgVGVzdENsYXNzOjpTZXRVcFRlc3RDYXNlLAotICAgICAgICBUZXN0Q2xhc3M6OlRlYXJEb3du
VGVzdENhc2UsCi0gICAgICAgIG5ldyBUZXN0RmFjdG9yeUltcGw8VGVzdENsYXNzPik7CisgICAg
ICAgIChzdGQ6OnN0cmluZyhwcmVmaXgpICsgKHByZWZpeFswXSA9PSAnXDAnID8gIiIgOiAiLyIp
ICsgY2FzZV9uYW1lICsKKyAgICAgICAgICIvIiArIHR5cGVfbmFtZXNbaW5kZXhdKQorICAgICAg
ICAgICAgLmNfc3RyKCksCisgICAgICAgIFN0cmlwVHJhaWxpbmdTcGFjZXMoR2V0UHJlZml4VW50
aWxDb21tYSh0ZXN0X25hbWVzKSkuY19zdHIoKSwKKyAgICAgICAgR2V0VHlwZU5hbWU8VHlwZT4o
KS5jX3N0cigpLAorICAgICAgICBOVUxMLCAgLy8gTm8gdmFsdWUgcGFyYW1ldGVyLgorICAgICAg
ICBjb2RlX2xvY2F0aW9uLCBHZXRUeXBlSWQ8Rml4dHVyZUNsYXNzPigpLCBUZXN0Q2xhc3M6OlNl
dFVwVGVzdENhc2UsCisgICAgICAgIFRlc3RDbGFzczo6VGVhckRvd25UZXN0Q2FzZSwgbmV3IFRl
c3RGYWN0b3J5SW1wbDxUZXN0Q2xhc3M+KTsKIAogICAgIC8vIE5leHQsIHJlY3Vyc2VzIChhdCBj
b21waWxlIHRpbWUpIHdpdGggdGhlIHRhaWwgb2YgdGhlIHR5cGUgbGlzdC4KLSAgICByZXR1cm4g
VHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIFRlc3RTZWwsIHR5cGVuYW1lIFR5cGVzOjpU
YWlsPgotICAgICAgICA6OlJlZ2lzdGVyKHByZWZpeCwgY2FzZV9uYW1lLCB0ZXN0X25hbWVzLCBp
bmRleCArIDEpOworICAgIHJldHVybiBUeXBlUGFyYW1ldGVyaXplZFRlc3Q8Rml4dHVyZSwgVGVz
dFNlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpU
YWlsPjo6UmVnaXN0ZXIocHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlX2xvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ICsgMSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHlwZV9uYW1lcyk7CiAgIH0KIH07CiAKQEAgLTcwMSw4ICs2ODYsMTEgQEAgY2xhc3MgVHlw
ZVBhcmFtZXRlcml6ZWRUZXN0IHsKIHRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gRml4dHVyZSwg
Y2xhc3MgVGVzdFNlbD4KIGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVkVGVzdDxGaXh0dXJlLCBUZXN0
U2VsLCBUeXBlczA+IHsKICBwdWJsaWM6Ci0gIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNo
YXIqIC8qcHJlZml4Ki8sIGNvbnN0IGNoYXIqIC8qY2FzZV9uYW1lKi8sCi0gICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIC8qdGVzdF9uYW1lcyovLCBpbnQgLyppbmRleCovKSB7Cisg
IHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIqIC8qcHJlZml4Ki8sIGNvbnN0IENvZGVM
b2NhdGlvbiYsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qY2FzZV9uYW1l
Ki8sIGNvbnN0IGNoYXIqIC8qdGVzdF9uYW1lcyovLAorICAgICAgICAgICAgICAgICAgICAgICBp
bnQgLyppbmRleCovLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4mID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPigpIC8qdHlwZV9uYW1lcyovKSB7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIH07
CkBAIC03MTQsMTcgKzcwMiwzNSBAQCBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3Q8Rml4dHVy
ZSwgVGVzdFNlbCwgVHlwZXMwPiB7CiB0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIEZpeHR1cmUs
IHR5cGVuYW1lIFRlc3RzLCB0eXBlbmFtZSBUeXBlcz4KIGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVk
VGVzdENhc2UgewogIHB1YmxpYzoKLSAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciog
cHJlZml4LCBjb25zdCBjaGFyKiBjYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHRlc3RfbmFtZXMpIHsKKyAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hh
ciogcHJlZml4LCBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVHlwZWRUZXN0Q2FzZVBTdGF0ZSogc3RhdGUsIGNvbnN0IGNoYXIqIGNhc2Vf
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGVzdF9uYW1lcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiB0eXBl
X25hbWVzID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTmFtZXM8RGVmYXVs
dE5hbWVHZW5lcmF0b3IsIFR5cGVzPigpKSB7CisgICAgc3RkOjpzdHJpbmcgdGVzdF9uYW1lID0g
U3RyaXBUcmFpbGluZ1NwYWNlcygKKyAgICAgICAgR2V0UHJlZml4VW50aWxDb21tYSh0ZXN0X25h
bWVzKSk7CisgICAgaWYgKCFzdGF0ZS0+VGVzdEV4aXN0cyh0ZXN0X25hbWUpKSB7CisgICAgICBm
cHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgY29kZSBsb2NhdGlvbiBmb3IgdGVzdCAlcy4l
cyBhdCAlcy4iLAorICAgICAgICAgICAgICBjYXNlX25hbWUsIHRlc3RfbmFtZS5jX3N0cigpLAor
ICAgICAgICAgICAgICBGb3JtYXRGaWxlTG9jYXRpb24oY29kZV9sb2NhdGlvbi5maWxlLmNfc3Ry
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlX2xvY2F0aW9uLmxpbmUp
LmNfc3RyKCkpOworICAgICAgZmZsdXNoKHN0ZGVycik7CisgICAgICBwb3NpeDo6QWJvcnQoKTsK
KyAgICB9CisgICAgY29uc3QgQ29kZUxvY2F0aW9uJiB0ZXN0X2xvY2F0aW9uID0gc3RhdGUtPkdl
dENvZGVMb2NhdGlvbih0ZXN0X25hbWUpOworCiAgICAgdHlwZWRlZiB0eXBlbmFtZSBUZXN0czo6
SGVhZCBIZWFkOwogCiAgICAgLy8gRmlyc3QsIHJlZ2lzdGVyIHRoZSBmaXJzdCB0ZXN0IGluICdU
ZXN0JyBmb3IgZWFjaCB0eXBlIGluICdUeXBlcycuCiAgICAgVHlwZVBhcmFtZXRlcml6ZWRUZXN0
PEZpeHR1cmUsIEhlYWQsIFR5cGVzPjo6UmVnaXN0ZXIoCi0gICAgICAgIHByZWZpeCwgY2FzZV9u
YW1lLCB0ZXN0X25hbWVzLCAwKTsKKyAgICAgICAgcHJlZml4LCB0ZXN0X2xvY2F0aW9uLCBjYXNl
X25hbWUsIHRlc3RfbmFtZXMsIDAsIHR5cGVfbmFtZXMpOwogCiAgICAgLy8gTmV4dCwgcmVjdXJz
ZXMgKGF0IGNvbXBpbGUgdGltZSkgd2l0aCB0aGUgdGFpbCBvZiB0aGUgdGVzdCBsaXN0LgotICAg
IHJldHVybiBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlPEZpeHR1cmUsIHR5cGVuYW1lIFRlc3Rz
OjpUYWlsLCBUeXBlcz4KLSAgICAgICAgOjpSZWdpc3RlcihwcmVmaXgsIGNhc2VfbmFtZSwgU2tp
cENvbW1hKHRlc3RfbmFtZXMpKTsKKyAgICByZXR1cm4gVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2Fz
ZTxGaXh0dXJlLCB0eXBlbmFtZSBUZXN0czo6VGFpbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUeXBlcz46OlJlZ2lzdGVyKHByZWZpeCwgY29kZV9sb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRl
LCBjYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTa2lwQ29tbWEodGVzdF9uYW1lcyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlX25hbWVzKTsKICAgfQogfTsKIApA
QCAtNzMyLDE1ICs3MzgsMTggQEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSB7CiB0
ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIEZpeHR1cmUsIHR5cGVuYW1lIFR5cGVzPgogY2xhc3Mg
VHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTxGaXh0dXJlLCBUZW1wbGF0ZXMwLCBUeXBlcz4gewog
IHB1YmxpYzoKLSAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogLypwcmVmaXgqLywg
Y29uc3QgY2hhciogLypjYXNlX25hbWUqLywKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogLyp0ZXN0X25hbWVzKi8pIHsKKyAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hh
ciogLypwcmVmaXgqLywgY29uc3QgQ29kZUxvY2F0aW9uJiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVHlwZWRUZXN0Q2FzZVBTdGF0ZSogLypzdGF0ZSovLAorICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiAvKmNhc2VfbmFtZSovLCBjb25zdCBjaGFyKiAvKnRlc3RfbmFt
ZXMqLywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+JiA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4oKSAvKnR5cGVfbmFtZXMqLykgewogICAgIHJldHVybiB0cnVlOwogICB9CiB9OwogCiAjZW5k
aWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AKIAot
Ly8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBhcyBhIFN0cmluZy4KKy8vIFJl
dHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYW4gc3RkOjpzdHJpbmcuCiAvLwog
Ly8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZCBpcyBz
cGVjaWZpZWQgYnkKIC8vIHRoZSBndGVzdF9zdGFja190cmFjZV9kZXB0aCBmbGFnLiAgVGhlIHNr
aXBfY291bnQgcGFyYW1ldGVyCkBAIC03NTAsOCArNzU5LDggQEAgY2xhc3MgVHlwZVBhcmFtZXRl
cml6ZWRUZXN0Q2FzZTxGaXh0dXJlLCBUZW1wbGF0ZXMwLCBUeXBlcz4gewogLy8gRm9yIGV4YW1w
bGUsIGlmIEZvbygpIGNhbGxzIEJhcigpLCB3aGljaCBpbiB0dXJuIGNhbGxzCiAvLyBHZXRDdXJy
ZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKC4uLiwgMSksIEZvbygpIHdpbGwgYmUgaW5jbHVkZWQg
aW4KIC8vIHRoZSB0cmFjZSBidXQgQmFyKCkgYW5kIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNl
cHRUb3AoKSB3b24ndC4KLUdURVNUX0FQSV8gU3RyaW5nIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VF
eGNlcHRUb3AoVW5pdFRlc3QqIHVuaXRfdGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNraXBfY291bnQpOworR1RFU1RfQVBJXyBzdGQ6
OnN0cmluZyBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKAorICAgIFVuaXRUZXN0KiB1
bml0X3Rlc3QsIGludCBza2lwX2NvdW50KTsKIAogLy8gSGVscGVycyBmb3Igc3VwcHJlc3Npbmcg
d2FybmluZ3Mgb24gdW5yZWFjaGFibGUgY29kZSBvciBjb25zdGFudAogLy8gY29uZGl0aW9uLgpA
QCAtNzYyLDYgKzc3MSwxNSBAQCBHVEVTVF9BUElfIGJvb2wgQWx3YXlzVHJ1ZSgpOwogLy8gQWx3
YXlzIHJldHVybnMgZmFsc2UuCiBpbmxpbmUgYm9vbCBBbHdheXNGYWxzZSgpIHsgcmV0dXJuICFB
bHdheXNUcnVlKCk7IH0KIAorLy8gSGVscGVyIGZvciBzdXBwcmVzc2luZyBmYWxzZSB3YXJuaW5n
IGZyb20gQ2xhbmcgb24gYSBjb25zdCBjaGFyKgorLy8gdmFyaWFibGUgZGVjbGFyZWQgaW4gYSBj
b25kaXRpb25hbCBleHByZXNzaW9uIGFsd2F5cyBiZWluZyBOVUxMIGluCisvLyB0aGUgZWxzZSBi
cmFuY2guCitzdHJ1Y3QgR1RFU1RfQVBJXyBDb25zdENoYXJQdHIgeworICBDb25zdENoYXJQdHIo
Y29uc3QgY2hhciogc3RyKSA6IHZhbHVlKHN0cikge30KKyAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KKyAgY29uc3QgY2hhciogdmFsdWU7Cit9OworCiAvLyBBIHNpbXBs
ZSBMaW5lYXIgQ29uZ3J1ZW50aWFsIEdlbmVyYXRvciBmb3IgZ2VuZXJhdGluZyByYW5kb20KIC8v
IG51bWJlcnMgd2l0aCBhIHVuaWZvcm0gZGlzdHJpYnV0aW9uLiAgVW5saWtlIHJhbmQoKSBhbmQg
c3JhbmQoKSwgaXQKIC8vIGRvZXNuJ3QgdXNlIGdsb2JhbCBzdGF0ZSAoYW5kIHRoZXJlZm9yZSBj
YW4ndCBpbnRlcmZlcmUgd2l0aCB1c2VyCkBAIC03ODQsMTMgKzgwMiw0MDMgQEAgY2xhc3MgR1RF
U1RfQVBJXyBSYW5kb20gewogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFJhbmRv
bSk7CiB9OwogCisvLyBEZWZpbmluZyBhIHZhcmlhYmxlIG9mIHR5cGUgQ29tcGlsZUFzc2VydFR5
cGVzRXF1YWw8VDEsIFQyPiB3aWxsIGNhdXNlIGEKKy8vIGNvbXBpbGVyIGVycm9yIGlmZiBUMSBh
bmQgVDIgYXJlIGRpZmZlcmVudCB0eXBlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDI+CitzdHJ1Y3QgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw7CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgorc3RydWN0IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQsIFQ+IHsKK307CisKKy8v
IFJlbW92ZXMgdGhlIHJlZmVyZW5jZSBmcm9tIGEgdHlwZSBpZiBpdCBpcyBhIHJlZmVyZW5jZSB0
eXBlLAorLy8gb3RoZXJ3aXNlIGxlYXZlcyBpdCB1bmNoYW5nZWQuICBUaGlzIGlzIHRoZSBzYW1l
IGFzCisvLyB0cjE6OnJlbW92ZV9yZWZlcmVuY2UsIHdoaWNoIGlzIG5vdCB3aWRlbHkgYXZhaWxh
YmxlIHlldC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IFJlbW92ZVJlZmVyZW5jZSB7
IHR5cGVkZWYgVCB0eXBlOyB9OyAgLy8gTk9MSU5UCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0
cnVjdCBSZW1vdmVSZWZlcmVuY2U8VCY+IHsgdHlwZWRlZiBUIHR5cGU7IH07ICAvLyBOT0xJTlQK
KworLy8gQSBoYW5keSB3cmFwcGVyIGFyb3VuZCBSZW1vdmVSZWZlcmVuY2UgdGhhdCB3b3JrcyB3
aGVuIHRoZSBhcmd1bWVudAorLy8gVCBkZXBlbmRzIG9uIHRlbXBsYXRlIHBhcmFtZXRlcnMuCisj
ZGVmaW5lIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfKFQpIFwKKyAgICB0eXBlbmFtZSA6OnRlc3Rp
bmc6OmludGVybmFsOjpSZW1vdmVSZWZlcmVuY2U8VD46OnR5cGUKKworLy8gUmVtb3ZlcyBjb25z
dCBmcm9tIGEgdHlwZSBpZiBpdCBpcyBhIGNvbnN0IHR5cGUsIG90aGVyd2lzZSBsZWF2ZXMKKy8v
IGl0IHVuY2hhbmdlZC4gIFRoaXMgaXMgdGhlIHNhbWUgYXMgdHIxOjpyZW1vdmVfY29uc3QsIHdo
aWNoIGlzIG5vdAorLy8gd2lkZWx5IGF2YWlsYWJsZSB5ZXQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK3N0cnVjdCBSZW1vdmVDb25zdCB7IHR5cGVkZWYgVCB0eXBlOyB9OyAgLy8gTk9MSU5UCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBSZW1vdmVDb25zdDxjb25zdCBUPiB7IHR5cGVk
ZWYgVCB0eXBlOyB9OyAgLy8gTk9MSU5UCisKKy8vIE1TVkMgOC4wLCBTdW4gQysrLCBhbmQgSUJN
IFhMIEMrKyBoYXZlIGEgYnVnIHdoaWNoIGNhdXNlcyB0aGUgYWJvdmUKKy8vIGRlZmluaXRpb24g
dG8gZmFpbCB0byByZW1vdmUgdGhlIGNvbnN0IGluICdjb25zdCBpbnRbM10nIGFuZCAnY29uc3QK
Ky8vIGNoYXJbM11bNF0nLiAgVGhlIGZvbGxvd2luZyBzcGVjaWFsaXphdGlvbiB3b3JrcyBhcm91
bmQgdGhlIGJ1Zy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KK3N0cnVjdCBSZW1v
dmVDb25zdDxjb25zdCBUW05dPiB7CisgIHR5cGVkZWYgdHlwZW5hbWUgUmVtb3ZlQ29uc3Q8VD46
OnR5cGUgdHlwZVtOXTsKK307CisKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA8
IDE0MDAKKy8vIFRoaXMgaXMgdGhlIG9ubHkgc3BlY2lhbGl6YXRpb24gdGhhdCBhbGxvd3MgVkMr
KyA3LjEgdG8gcmVtb3ZlIGNvbnN0IGluCisvLyAnY29uc3QgaW50WzNdIGFuZCAnY29uc3QgaW50
WzNdWzRdJy4gIEhvd2V2ZXIsIGl0IGNhdXNlcyB0cm91YmxlIHdpdGggR0NDCisvLyBhbmQgdGh1
cyBuZWVkcyB0byBiZSBjb25kaXRpb25hbGx5IGNvbXBpbGVkLgordGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHNpemVfdCBOPgorc3RydWN0IFJlbW92ZUNvbnN0PFRbTl0+IHsKKyAgdHlwZWRlZiB0eXBl
bmFtZSBSZW1vdmVDb25zdDxUPjo6dHlwZSB0eXBlW05dOworfTsKKyNlbmRpZgorCisvLyBBIGhh
bmR5IHdyYXBwZXIgYXJvdW5kIFJlbW92ZUNvbnN0IHRoYXQgd29ya3Mgd2hlbiB0aGUgYXJndW1l
bnQKKy8vIFQgZGVwZW5kcyBvbiB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgorI2RlZmluZSBHVEVTVF9S
RU1PVkVfQ09OU1RfKFQpIFwKKyAgICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpSZW1v
dmVDb25zdDxUPjo6dHlwZQorCisvLyBUdXJucyBjb25zdCBVJiwgVSYsIGNvbnN0IFUsIGFuZCBV
IGFsbCBpbnRvIFUuCisjZGVmaW5lIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhU
KSBcCisgICAgR1RFU1RfUkVNT1ZFX0NPTlNUXyhHVEVTVF9SRU1PVkVfUkVGRVJFTkNFXyhUKSkK
KworLy8gSW1wbGljaXRseUNvbnZlcnRpYmxlPEZyb20sIFRvPjo6dmFsdWUgaXMgYSBjb21waWxl
LXRpbWUgYm9vbAorLy8gY29uc3RhbnQgdGhhdCdzIHRydWUgaWZmIHR5cGUgRnJvbSBjYW4gYmUg
aW1wbGljaXRseSBjb252ZXJ0ZWQgdG8KKy8vIHR5cGUgVG8uCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RnJvbSwgdHlwZW5hbWUgVG8+CitjbGFzcyBJbXBsaWNpdGx5Q29udmVydGlibGUgeworIHByaXZh
dGU6CisgIC8vIFdlIG5lZWQgdGhlIGZvbGxvd2luZyBoZWxwZXIgZnVuY3Rpb25zIG9ubHkgZm9y
IHRoZWlyIHR5cGVzLgorICAvLyBUaGV5IGhhdmUgbm8gaW1wbGVtZW50YXRpb25zLgorCisgIC8v
IE1ha2VGcm9tKCkgaXMgYW4gZXhwcmVzc2lvbiB3aG9zZSB0eXBlIGlzIEZyb20uICBXZSBjYW5u
b3Qgc2ltcGx5CisgIC8vIHVzZSBGcm9tKCksIGFzIHRoZSB0eXBlIEZyb20gbWF5IG5vdCBoYXZl
IGEgcHVibGljIGRlZmF1bHQKKyAgLy8gY29uc3RydWN0b3IuCisgIHN0YXRpYyB0eXBlbmFtZSBB
ZGRSZWZlcmVuY2U8RnJvbT46OnR5cGUgTWFrZUZyb20oKTsKKworICAvLyBUaGVzZSB0d28gZnVu
Y3Rpb25zIGFyZSBvdmVybG9hZGVkLiAgR2l2ZW4gYW4gZXhwcmVzc2lvbgorICAvLyBIZWxwZXIo
eCksIHRoZSBjb21waWxlciB3aWxsIHBpY2sgdGhlIGZpcnN0IHZlcnNpb24gaWYgeCBjYW4gYmUK
KyAgLy8gaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gdHlwZSBUbzsgb3RoZXJ3aXNlIGl0IHdpbGwg
cGljayB0aGUKKyAgLy8gc2Vjb25kIHZlcnNpb24uCisgIC8vCisgIC8vIFRoZSBmaXJzdCB2ZXJz
aW9uIHJldHVybnMgYSB2YWx1ZSBvZiBzaXplIDEsIGFuZCB0aGUgc2Vjb25kCisgIC8vIHZlcnNp
b24gcmV0dXJucyBhIHZhbHVlIG9mIHNpemUgMi4gIFRoZXJlZm9yZSwgYnkgY2hlY2tpbmcgdGhl
CisgIC8vIHNpemUgb2YgSGVscGVyKHgpLCB3aGljaCBjYW4gYmUgZG9uZSBhdCBjb21waWxlIHRp
bWUsIHdlIGNhbiB0ZWxsCisgIC8vIHdoaWNoIHZlcnNpb24gb2YgSGVscGVyKCkgaXMgdXNlZCwg
YW5kIGhlbmNlIHdoZXRoZXIgeCBjYW4gYmUKKyAgLy8gaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8g
dHlwZSBUby4KKyAgc3RhdGljIGNoYXIgSGVscGVyKFRvKTsKKyAgc3RhdGljIGNoYXIgKCZIZWxw
ZXIoLi4uKSlbMl07ICAvLyBOT0xJTlQKKworICAvLyBXZSBoYXZlIHRvIHB1dCB0aGUgJ3B1Ymxp
Yycgc2VjdGlvbiBhZnRlciB0aGUgJ3ByaXZhdGUnIHNlY3Rpb24sCisgIC8vIG9yIE1TVkMgcmVm
dXNlcyB0byBjb21waWxlIHRoZSBjb2RlLgorIHB1YmxpYzoKKyNpZiBkZWZpbmVkKF9fQk9STEFO
RENfXykKKyAgLy8gQysrQnVpbGRlciBjYW5ub3QgdXNlIG1lbWJlciBvdmVybG9hZCByZXNvbHV0
aW9uIGR1cmluZyB0ZW1wbGF0ZQorICAvLyBpbnN0YW50aWF0aW9uLiAgVGhlIHNpbXBsZXN0IHdv
cmthcm91bmQgaXMgdG8gdXNlIGl0cyBDKysweCB0eXBlIHRyYWl0cworICAvLyBmdW5jdGlvbnMg
KEMrK0J1aWxkZXIgMjAwOSBhbmQgYWJvdmUgb25seSkuCisgIHN0YXRpYyBjb25zdCBib29sIHZh
bHVlID0gX19pc19jb252ZXJ0aWJsZShGcm9tLCBUbyk7CisjZWxzZQorICAvLyBNU1ZDIHdhcm5z
IGFib3V0IGltcGxpY2l0bHkgY29udmVydGluZyBmcm9tIGRvdWJsZSB0byBpbnQgZm9yCisgIC8v
IHBvc3NpYmxlIGxvc3Mgb2YgZGF0YSwgc28gd2UgbmVlZCB0byB0ZW1wb3JhcmlseSBkaXNhYmxl
IHRoZQorICAvLyB3YXJuaW5nLgorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0
MjQ0KQorICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9CisgICAgICBzaXplb2YoSGVscGVyKElt
cGxpY2l0bHlDb252ZXJ0aWJsZTo6TWFrZUZyb20oKSkpID09IDE7CisgIEdURVNUX0RJU0FCTEVf
TVNDX1dBUk5JTkdTX1BPUF8oKQorI2VuZGlmICAvLyBfX0JPUkxBTkRDX18KK307Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Citjb25zdCBib29sIEltcGxpY2l0bHlDb252
ZXJ0aWJsZTxGcm9tLCBUbz46OnZhbHVlOworCisvLyBJc0FQcm90b2NvbE1lc3NhZ2U8VD46OnZh
bHVlIGlzIGEgY29tcGlsZS10aW1lIGJvb2wgY29uc3RhbnQgdGhhdCdzCisvLyB0cnVlIGlmZiBU
IGlzIHR5cGUgUHJvdG9jb2xNZXNzYWdlLCBwcm90bzI6Ok1lc3NhZ2UsIG9yIGEgc3ViY2xhc3MK
Ky8vIG9mIHRob3NlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNBUHJvdG9jb2xN
ZXNzYWdlCisgICAgOiBwdWJsaWMgYm9vbF9jb25zdGFudDwKKyAgSW1wbGljaXRseUNvbnZlcnRp
YmxlPGNvbnN0IFQqLCBjb25zdCA6OlByb3RvY29sTWVzc2FnZSo+Ojp2YWx1ZSB8fAorICBJbXBs
aWNpdGx5Q29udmVydGlibGU8Y29uc3QgVCosIGNvbnN0IDo6cHJvdG8yOjpNZXNzYWdlKj46OnZh
bHVlPiB7Cit9OworCisvLyBXaGVuIHRoZSBjb21waWxlciBzZWVzIGV4cHJlc3Npb24gSXNDb250
YWluZXJUZXN0PEM+KDApLCBpZiBDIGlzIGFuCisvLyBTVEwtc3R5bGUgY29udGFpbmVyIGNsYXNz
LCB0aGUgZmlyc3Qgb3ZlcmxvYWQgb2YgSXNDb250YWluZXJUZXN0CisvLyB3aWxsIGJlIHZpYWJs
ZSAoc2luY2UgYm90aCBDOjppdGVyYXRvciogYW5kIEM6OmNvbnN0X2l0ZXJhdG9yKiBhcmUKKy8v
IHZhbGlkIHR5cGVzIGFuZCBOVUxMIGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0aGVt
KS4gIEl0IHdpbGwKKy8vIGJlIHBpY2tlZCBvdmVyIHRoZSBzZWNvbmQgb3ZlcmxvYWQgYXMgJ2lu
dCcgaXMgYSBwZXJmZWN0IG1hdGNoIGZvcgorLy8gdGhlIHR5cGUgb2YgYXJndW1lbnQgMC4gIElm
IEM6Oml0ZXJhdG9yIG9yIEM6OmNvbnN0X2l0ZXJhdG9yIGlzIG5vdAorLy8gYSB2YWxpZCB0eXBl
LCB0aGUgZmlyc3Qgb3ZlcmxvYWQgaXMgbm90IHZpYWJsZSwgYW5kIHRoZSBzZWNvbmQKKy8vIG92
ZXJsb2FkIHdpbGwgYmUgcGlja2VkLiAgVGhlcmVmb3JlLCB3ZSBjYW4gZGV0ZXJtaW5lIHdoZXRo
ZXIgQyBpcworLy8gYSBjb250YWluZXIgY2xhc3MgYnkgY2hlY2tpbmcgdGhlIHR5cGUgb2YgSXND
b250YWluZXJUZXN0PEM+KDApLgorLy8gVGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlzIGlu
c2lnbmlmaWNhbnQuCisvLworLy8gSW4gQysrMTEgbW9kZSB3ZSBjaGVjayB0aGUgZXhpc3RlbmNl
IG9mIGEgY29uc3RfaXRlcmF0b3IgYW5kIHRoYXQgYW4KKy8vIGl0ZXJhdG9yIGlzIHByb3Blcmx5
IGltcGxlbWVudGVkIGZvciB0aGUgY29udGFpbmVyLgorLy8KKy8vIEZvciBwcmUtQysrMTEgdGhh
dCB3ZSBsb29rIGZvciBib3RoIEM6Oml0ZXJhdG9yIGFuZCBDOjpjb25zdF9pdGVyYXRvci4KKy8v
IFRoZSByZWFzb24gaXMgdGhhdCBDKysgaW5qZWN0cyB0aGUgbmFtZSBvZiBhIGNsYXNzIGFzIGEg
bWVtYmVyIG9mIHRoZQorLy8gY2xhc3MgaXRzZWxmIChlLmcuIHlvdSBjYW4gcmVmZXIgdG8gY2xh
c3MgaXRlcmF0b3IgYXMgZWl0aGVyCisvLyAnaXRlcmF0b3InIG9yICdpdGVyYXRvcjo6aXRlcmF0
b3InKS4gIElmIHdlIGxvb2sgZm9yIEM6Oml0ZXJhdG9yCisvLyBvbmx5LCBmb3IgZXhhbXBsZSwg
d2Ugd291bGQgbWlzdGFrZW5seSB0aGluayB0aGF0IGEgY2xhc3MgbmFtZWQKKy8vIGl0ZXJhdG9y
IGlzIGFuIFNUTCBjb250YWluZXIuCisvLworLy8gQWxzbyBub3RlIHRoYXQgdGhlIHNpbXBsZXIg
YXBwcm9hY2ggb2Ygb3ZlcmxvYWRpbmcKKy8vIElzQ29udGFpbmVyVGVzdCh0eXBlbmFtZSBDOjpj
b25zdF9pdGVyYXRvciopIGFuZAorLy8gSXNDb250YWluZXJUZXN0KC4uLikgZG9lc24ndCB3b3Jr
IHdpdGggVmlzdWFsIEFnZSBDKysgYW5kIFN1biBDKysuCit0eXBlZGVmIGludCBJc0NvbnRhaW5l
cjsKKyNpZiBHVEVTVF9MQU5HX0NYWDExCit0ZW1wbGF0ZSA8Y2xhc3MgQywKKyAgICAgICAgICBj
bGFzcyBJdGVyYXRvciA9IGRlY2x0eXBlKDo6c3RkOjpkZWNsdmFsPGNvbnN0IEMmPigpLmJlZ2lu
KCkpLAorICAgICAgICAgIGNsYXNzID0gZGVjbHR5cGUoOjpzdGQ6OmRlY2x2YWw8Y29uc3QgQyY+
KCkuZW5kKCkpLAorICAgICAgICAgIGNsYXNzID0gZGVjbHR5cGUoKys6OnN0ZDo6ZGVjbHZhbDxJ
dGVyYXRvciY+KCkpLAorICAgICAgICAgIGNsYXNzID0gZGVjbHR5cGUoKjo6c3RkOjpkZWNsdmFs
PEl0ZXJhdG9yPigpKSwKKyAgICAgICAgICBjbGFzcyA9IHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJh
dG9yPgorSXNDb250YWluZXIgSXNDb250YWluZXJUZXN0KGludCAvKiBkdW1teSAqLykgeworICBy
ZXR1cm4gMDsKK30KKyNlbHNlCit0ZW1wbGF0ZSA8Y2xhc3MgQz4KK0lzQ29udGFpbmVyIElzQ29u
dGFpbmVyVGVzdChpbnQgLyogZHVtbXkgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHlwZW5hbWUgQzo6aXRlcmF0b3IqIC8qIGl0ICovID0gTlVMTCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvciogLyogY29uc3RfaXQgKi8gPSBO
VUxMKSB7CisgIHJldHVybiAwOworfQorI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisKK3R5
cGVkZWYgY2hhciBJc05vdENvbnRhaW5lcjsKK3RlbXBsYXRlIDxjbGFzcyBDPgorSXNOb3RDb250
YWluZXIgSXNDb250YWluZXJUZXN0KGxvbmcgLyogZHVtbXkgKi8pIHsgcmV0dXJuICdcMCc7IH0K
KworLy8gVHJhaXQgdG8gZGV0ZWN0IHdoZXRoZXIgYSB0eXBlIFQgaXMgYSBoYXNoIHRhYmxlLgor
Ly8gVGhlIGhldXJpc3RpYyB1c2VkIGlzIHRoYXQgdGhlIHR5cGUgY29udGFpbnMgYW4gaW5uZXIg
dHlwZSBgaGFzaGVyYCBhbmQgZG9lcworLy8gbm90IGNvbnRhaW4gYW4gaW5uZXIgdHlwZSBgcmV2
ZXJzZV9pdGVyYXRvcmAuCisvLyBJZiB0aGUgY29udGFpbmVyIGlzIGl0ZXJhYmxlIGluIHJldmVy
c2UsIHRoZW4gb3JkZXIgbWlnaHQgYWN0dWFsbHkgbWF0dGVyLgordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitzdHJ1Y3QgSXNIYXNoVGFibGUgeworIHByaXZhdGU6CisgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBVPgorICBzdGF0aWMgY2hhciB0ZXN0KHR5cGVuYW1lIFU6Omhhc2hlciosIHR5cGVuYW1lIFU6
OnJldmVyc2VfaXRlcmF0b3IqKTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIHN0YXRpYyBp
bnQgdGVzdCh0eXBlbmFtZSBVOjpoYXNoZXIqLCAuLi4pOworICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VT4KKyAgc3RhdGljIGNoYXIgdGVzdCguLi4pOworCisgcHVibGljOgorICBzdGF0aWMgY29uc3Qg
Ym9vbCB2YWx1ZSA9IHNpemVvZih0ZXN0PFQ+KDAsIDApKSA9PSBzaXplb2YoaW50KTsKK307CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3QgYm9vbCBJc0hhc2hUYWJsZTxUPjo6dmFsdWU7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgVm9pZFQgeworICAgIHR5cGVkZWYgdm9p
ZCB2YWx1ZV90eXBlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdm9p
ZD4KK3N0cnVjdCBIYXNWYWx1ZVR5cGUgOiBmYWxzZV90eXBlIHt9OwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitzdHJ1Y3QgSGFzVmFsdWVUeXBlPFQsIFZvaWRUPHR5cGVuYW1lIFQ6OnZhbHVlX3R5
cGU+ID4gOiB0cnVlX3R5cGUgeworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEMsCisgICAgICAg
ICAgYm9vbCA9IHNpemVvZihJc0NvbnRhaW5lclRlc3Q8Qz4oMCkpID09IHNpemVvZihJc0NvbnRh
aW5lciksCisgICAgICAgICAgYm9vbCA9IEhhc1ZhbHVlVHlwZTxDPjo6dmFsdWU+CitzdHJ1Y3Qg
SXNSZWN1cnNpdmVDb250YWluZXJJbXBsOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQywgYm9vbCBI
Vj4KK3N0cnVjdCBJc1JlY3Vyc2l2ZUNvbnRhaW5lckltcGw8QywgZmFsc2UsIEhWPiA6IHB1Ymxp
YyBmYWxzZV90eXBlIHt9OworCisvLyBTaW5jZSB0aGUgSXNSZWN1cnNpdmVDb250YWluZXJJbXBs
IGRlcGVuZHMgb24gdGhlIElzQ29udGFpbmVyVGVzdCB3ZSBuZWVkIHRvCisvLyBvYmV5IHRoZSBz
YW1lIGluY29uc2lzdGVuY2llcyBhcyB0aGUgSXNDb250YWluZXJUZXN0LCBuYW1lbHkgY2hlY2sg
aWYKKy8vIHNvbWV0aGluZyBpcyBhIGNvbnRhaW5lciBpcyByZWx5aW5nIG9uIG9ubHkgY29uc3Rf
aXRlcmF0b3IgaW4gQysrMTEgYW5kCisvLyBpcyByZWx5aW5nIG9uIGJvdGggY29uc3RfaXRlcmF0
b3IgYW5kIGl0ZXJhdG9yIG90aGVyd2lzZQordGVtcGxhdGUgPHR5cGVuYW1lIEM+CitzdHJ1Y3Qg
SXNSZWN1cnNpdmVDb250YWluZXJJbXBsPEMsIHRydWUsIGZhbHNlPiA6IHB1YmxpYyBmYWxzZV90
eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KK3N0cnVjdCBJc1JlY3Vyc2l2ZUNvbnRh
aW5lckltcGw8QywgdHJ1ZSwgdHJ1ZT4geworICAjaWYgR1RFU1RfTEFOR19DWFgxMQorICB0eXBl
ZGVmIHR5cGVuYW1lIEl0ZXJhdG9yVHJhaXRzPHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yPjo6
dmFsdWVfdHlwZQorICAgICAgdmFsdWVfdHlwZTsKKyNlbHNlCisgIHR5cGVkZWYgdHlwZW5hbWUg
SXRlcmF0b3JUcmFpdHM8dHlwZW5hbWUgQzo6aXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5
cGU7CisjZW5kaWYKKyAgdHlwZWRlZiBpc19zYW1lPHZhbHVlX3R5cGUsIEM+IHR5cGU7Cit9Owor
CisvLyBJc1JlY3Vyc2l2ZUNvbnRhaW5lcjxUeXBlPiBpcyBhIHVuYXJ5IGNvbXBpbGUtdGltZSBw
cmVkaWNhdGUgdGhhdAorLy8gZXZhbHVhdGVzIHdoZXRoZXIgQyBpcyBhIHJlY3Vyc2l2ZSBjb250
YWluZXIgdHlwZS4gQSByZWN1cnNpdmUgY29udGFpbmVyCisvLyB0eXBlIGlzIGEgY29udGFpbmVy
IHR5cGUgd2hvc2UgdmFsdWVfdHlwZSBpcyBlcXVhbCB0byB0aGUgY29udGFpbmVyIHR5cGUKKy8v
IGl0c2VsZi4gQW4gZXhhbXBsZSBmb3IgYSByZWN1cnNpdmUgY29udGFpbmVyIHR5cGUgaXMKKy8v
IGJvb3N0OjpmaWxlc3lzdGVtOjpwYXRoLCB3aG9zZSBpdGVyYXRvciBoYXMgYSB2YWx1ZV90eXBl
IHRoYXQgaXMgZXF1YWwgdG8KKy8vIGJvb3N0OjpmaWxlc3lzdGVtOjpwYXRoLgordGVtcGxhdGUg
PHR5cGVuYW1lIEM+CitzdHJ1Y3QgSXNSZWN1cnNpdmVDb250YWluZXIgOiBwdWJsaWMgSXNSZWN1
cnNpdmVDb250YWluZXJJbXBsPEM+Ojp0eXBlIHt9OworCisvLyBFbmFibGVJZjxjb25kaXRpb24+
Ojp0eXBlIGlzIHZvaWQgd2hlbiAnQ29uZCcgaXMgdHJ1ZSwgYW5kCisvLyB1bmRlZmluZWQgd2hl
biAnQ29uZCcgaXMgZmFsc2UuICBUbyB1c2UgU0ZJTkFFIHRvIG1ha2UgYSBmdW5jdGlvbgorLy8g
b3ZlcmxvYWQgb25seSBhcHBseSB3aGVuIGEgcGFydGljdWxhciBleHByZXNzaW9uIGlzIHRydWUs
IGFkZAorLy8gInR5cGVuYW1lIEVuYWJsZUlmPGV4cHJlc3Npb24+Ojp0eXBlKiA9IDAiIGFzIHRo
ZSBsYXN0IHBhcmFtZXRlci4KK3RlbXBsYXRlPGJvb2w+IHN0cnVjdCBFbmFibGVJZjsKK3RlbXBs
YXRlPD4gc3RydWN0IEVuYWJsZUlmPHRydWU+IHsgdHlwZWRlZiB2b2lkIHR5cGU7IH07ICAvLyBO
T0xJTlQKKworLy8gVXRpbGl0aWVzIGZvciBuYXRpdmUgYXJyYXlzLgorCisvLyBBcnJheUVxKCkg
Y29tcGFyZXMgdHdvIGstZGltZW5zaW9uYWwgbmF0aXZlIGFycmF5cyB1c2luZyB0aGUKKy8vIGVs
ZW1lbnRzJyBvcGVyYXRvcj09LCB3aGVyZSBrIGNhbiBiZSBhbnkgaW50ZWdlciA+PSAwLiAgV2hl
biBrIGlzCisvLyAwLCBBcnJheUVxKCkgZGVnZW5lcmF0ZXMgaW50byBjb21wYXJpbmcgYSBzaW5n
bGUgcGFpciBvZiB2YWx1ZXMuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgor
Ym9vbCBBcnJheUVxKGNvbnN0IFQqIGxocywgc2l6ZV90IHNpemUsIGNvbnN0IFUqIHJocyk7CisK
Ky8vIFRoaXMgZ2VuZXJpYyB2ZXJzaW9uIGlzIHVzZWQgd2hlbiBrIGlzIDAuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2lubGluZSBib29sIEFycmF5RXEoY29uc3QgVCYgbGhz
LCBjb25zdCBVJiByaHMpIHsgcmV0dXJuIGxocyA9PSByaHM7IH0KKworLy8gVGhpcyBvdmVybG9h
ZCBpcyB1c2VkIHdoZW4gayA+PSAxLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUs
IHNpemVfdCBOPgoraW5saW5lIGJvb2wgQXJyYXlFcShjb25zdCBUKCZsaHMpW05dLCBjb25zdCBV
KCZyaHMpW05dKSB7CisgIHJldHVybiBpbnRlcm5hbDo6QXJyYXlFcShsaHMsIE4sIHJocyk7Cit9
CisKKy8vIFRoaXMgaGVscGVyIHJlZHVjZXMgY29kZSBibG9hdC4gIElmIHdlIGluc3RlYWQgcHV0
IGl0cyBsb2dpYyBpbnNpZGUKKy8vIHRoZSBwcmV2aW91cyBBcnJheUVxKCkgZnVuY3Rpb24sIGFy
cmF5cyB3aXRoIGRpZmZlcmVudCBzaXplcyB3b3VsZAorLy8gbGVhZCB0byBkaWZmZXJlbnQgY29w
aWVzIG9mIHRoZSB0ZW1wbGF0ZSBjb2RlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+Citib29sIEFycmF5RXEoY29uc3QgVCogbGhzLCBzaXplX3Qgc2l6ZSwgY29uc3QgVSogcmhz
KSB7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHNpemU7IGkrKykgeworICAgIGlmICghaW50
ZXJuYWw6OkFycmF5RXEobGhzW2ldLCByaHNbaV0pKQorICAgICAgcmV0dXJuIGZhbHNlOworICB9
CisgIHJldHVybiB0cnVlOworfQorCisvLyBGaW5kcyB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUg
aXRlcmF0b3IgcmFuZ2UgW2JlZ2luLCBlbmQpIHRoYXQKKy8vIGVxdWFscyBlbGVtLiAgRWxlbWVu
dCBtYXkgYmUgYSBuYXRpdmUgYXJyYXkgdHlwZSBpdHNlbGYuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
SXRlciwgdHlwZW5hbWUgRWxlbWVudD4KK0l0ZXIgQXJyYXlBd2FyZUZpbmQoSXRlciBiZWdpbiwg
SXRlciBlbmQsIGNvbnN0IEVsZW1lbnQmIGVsZW0pIHsKKyAgZm9yIChJdGVyIGl0ID0gYmVnaW47
IGl0ICE9IGVuZDsgKytpdCkgeworICAgIGlmIChpbnRlcm5hbDo6QXJyYXlFcSgqaXQsIGVsZW0p
KQorICAgICAgcmV0dXJuIGl0OworICB9CisgIHJldHVybiBlbmQ7Cit9CisKKy8vIENvcHlBcnJh
eSgpIGNvcGllcyBhIGstZGltZW5zaW9uYWwgbmF0aXZlIGFycmF5IHVzaW5nIHRoZSBlbGVtZW50
cycKKy8vIG9wZXJhdG9yPSwgd2hlcmUgayBjYW4gYmUgYW55IGludGVnZXIgPj0gMC4gIFdoZW4g
ayBpcyAwLAorLy8gQ29weUFycmF5KCkgZGVnZW5lcmF0ZXMgaW50byBjb3B5aW5nIGEgc2luZ2xl
IHZhbHVlLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3ZvaWQgQ29weUFy
cmF5KGNvbnN0IFQqIGZyb20sIHNpemVfdCBzaXplLCBVKiB0byk7CisKKy8vIFRoaXMgZ2VuZXJp
YyB2ZXJzaW9uIGlzIHVzZWQgd2hlbiBrIGlzIDAuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KK2lubGluZSB2b2lkIENvcHlBcnJheShjb25zdCBUJiBmcm9tLCBVKiB0bykgeyAq
dG8gPSBmcm9tOyB9CisKKy8vIFRoaXMgb3ZlcmxvYWQgaXMgdXNlZCB3aGVuIGsgPj0gMS4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgTj4KK2lubGluZSB2b2lkIENv
cHlBcnJheShjb25zdCBUKCZmcm9tKVtOXSwgVSgqdG8pW05dKSB7CisgIGludGVybmFsOjpDb3B5
QXJyYXkoZnJvbSwgTiwgKnRvKTsKK30KKworLy8gVGhpcyBoZWxwZXIgcmVkdWNlcyBjb2RlIGJs
b2F0LiAgSWYgd2UgaW5zdGVhZCBwdXQgaXRzIGxvZ2ljIGluc2lkZQorLy8gdGhlIHByZXZpb3Vz
IENvcHlBcnJheSgpIGZ1bmN0aW9uLCBhcnJheXMgd2l0aCBkaWZmZXJlbnQgc2l6ZXMKKy8vIHdv
dWxkIGxlYWQgdG8gZGlmZmVyZW50IGNvcGllcyBvZiB0aGUgdGVtcGxhdGUgY29kZS4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgordm9pZCBDb3B5QXJyYXkoY29uc3QgVCogZnJv
bSwgc2l6ZV90IHNpemUsIFUqIHRvKSB7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHNpemU7
IGkrKykgeworICAgIGludGVybmFsOjpDb3B5QXJyYXkoZnJvbVtpXSwgdG8gKyBpKTsKKyAgfQor
fQorCisvLyBUaGUgcmVsYXRpb24gYmV0d2VlbiBhbiBOYXRpdmVBcnJheSBvYmplY3QgKHNlZSBi
ZWxvdykgYW5kIHRoZQorLy8gbmF0aXZlIGFycmF5IGl0IHJlcHJlc2VudHMuCisvLyBXZSB1c2Ug
MiBkaWZmZXJlbnQgc3RydWN0cyB0byBhbGxvdyBub24tY29weWFibGUgdHlwZXMgdG8gYmUgdXNl
ZCwgYXMgbG9uZworLy8gYXMgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgpIGlzIHBhc3NlZC4K
K3N0cnVjdCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlIHt9Oworc3RydWN0IFJlbGF0aW9uVG9T
b3VyY2VDb3B5IHt9OworCisvLyBBZGFwdHMgYSBuYXRpdmUgYXJyYXkgdG8gYSByZWFkLW9ubHkg
U1RMLXN0eWxlIGNvbnRhaW5lci4gIEluc3RlYWQKKy8vIG9mIHRoZSBjb21wbGV0ZSBTVEwgY29u
dGFpbmVyIGNvbmNlcHQsIHRoaXMgYWRhcHRvciBvbmx5IGltcGxlbWVudHMKKy8vIG1lbWJlcnMg
dXNlZnVsIGZvciBHb29nbGUgTW9jaydzIGNvbnRhaW5lciBtYXRjaGVycy4gIE5ldyBtZW1iZXJz
CisvLyBzaG91bGQgYmUgYWRkZWQgYXMgbmVlZGVkLiAgVG8gc2ltcGxpZnkgdGhlIGltcGxlbWVu
dGF0aW9uLCB3ZSBvbmx5CisvLyBzdXBwb3J0IEVsZW1lbnQgYmVpbmcgYSByYXcgdHlwZSAoaS5l
LiBoYXZpbmcgbm8gdG9wLWxldmVsIGNvbnN0IG9yCisvLyByZWZlcmVuY2UgbW9kaWZpZXIpLiAg
SXQncyB0aGUgY2xpZW50J3MgcmVzcG9uc2liaWxpdHkgdG8gc2F0aXNmeQorLy8gdGhpcyByZXF1
aXJlbWVudC4gIEVsZW1lbnQgY2FuIGJlIGFuIGFycmF5IHR5cGUgaXRzZWxmIChoZW5jZQorLy8g
bXVsdGktZGltZW5zaW9uYWwgYXJyYXlzIGFyZSBzdXBwb3J0ZWQpLgordGVtcGxhdGUgPHR5cGVu
YW1lIEVsZW1lbnQ+CitjbGFzcyBOYXRpdmVBcnJheSB7CisgcHVibGljOgorICAvLyBTVEwtc3R5
bGUgY29udGFpbmVyIHR5cGVkZWZzLgorICB0eXBlZGVmIEVsZW1lbnQgdmFsdWVfdHlwZTsKKyAg
dHlwZWRlZiBFbGVtZW50KiBpdGVyYXRvcjsKKyAgdHlwZWRlZiBjb25zdCBFbGVtZW50KiBjb25z
dF9pdGVyYXRvcjsKKworICAvLyBDb25zdHJ1Y3RzIGZyb20gYSBuYXRpdmUgYXJyYXkuIFJlZmVy
ZW5jZXMgdGhlIHNvdXJjZS4KKyAgTmF0aXZlQXJyYXkoY29uc3QgRWxlbWVudCogYXJyYXksIHNp
emVfdCBjb3VudCwgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSkgeworICAgIEluaXRSZWYoYXJy
YXksIGNvdW50KTsKKyAgfQorCisgIC8vIENvbnN0cnVjdHMgZnJvbSBhIG5hdGl2ZSBhcnJheS4g
Q29waWVzIHRoZSBzb3VyY2UuCisgIE5hdGl2ZUFycmF5KGNvbnN0IEVsZW1lbnQqIGFycmF5LCBz
aXplX3QgY291bnQsIFJlbGF0aW9uVG9Tb3VyY2VDb3B5KSB7CisgICAgSW5pdENvcHkoYXJyYXks
IGNvdW50KTsKKyAgfQorCisgIC8vIENvcHkgY29uc3RydWN0b3IuCisgIE5hdGl2ZUFycmF5KGNv
bnN0IE5hdGl2ZUFycmF5JiByaHMpIHsKKyAgICAodGhpcy0+KnJocy5jbG9uZV8pKHJocy5hcnJh
eV8sIHJocy5zaXplXyk7CisgIH0KKworICB+TmF0aXZlQXJyYXkoKSB7CisgICAgaWYgKGNsb25l
XyAhPSAmTmF0aXZlQXJyYXk6OkluaXRSZWYpCisgICAgICBkZWxldGVbXSBhcnJheV87CisgIH0K
KworICAvLyBTVEwtc3R5bGUgY29udGFpbmVyIG1ldGhvZHMuCisgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gc2l6ZV87IH0KKyAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJl
dHVybiBhcnJheV87IH0KKyAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gYXJy
YXlfICsgc2l6ZV87IH0KKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5hdGl2ZUFycmF5JiByaHMp
IGNvbnN0IHsKKyAgICByZXR1cm4gc2l6ZSgpID09IHJocy5zaXplKCkgJiYKKyAgICAgICAgQXJy
YXlFcShiZWdpbigpLCBzaXplKCksIHJocy5iZWdpbigpKTsKKyAgfQorCisgcHJpdmF0ZToKKyAg
ZW51bSB7CisgICAga0NoZWNrVHlwZUlzTm90Q29uc3RPckFSZWZlcmVuY2UgPSBTdGF0aWNBc3Nl
cnRUeXBlRXFIZWxwZXI8CisgICAgICAgIEVsZW1lbnQsIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0Vf
QU5EX0NPTlNUXyhFbGVtZW50KT46OnZhbHVlCisgIH07CisKKyAgLy8gSW5pdGlhbGl6ZXMgdGhp
cyBvYmplY3Qgd2l0aCBhIGNvcHkgb2YgdGhlIGlucHV0LgorICB2b2lkIEluaXRDb3B5KGNvbnN0
IEVsZW1lbnQqIGFycmF5LCBzaXplX3QgYV9zaXplKSB7CisgICAgRWxlbWVudCogY29uc3QgY29w
eSA9IG5ldyBFbGVtZW50W2Ffc2l6ZV07CisgICAgQ29weUFycmF5KGFycmF5LCBhX3NpemUsIGNv
cHkpOworICAgIGFycmF5XyA9IGNvcHk7CisgICAgc2l6ZV8gPSBhX3NpemU7CisgICAgY2xvbmVf
ID0gJk5hdGl2ZUFycmF5OjpJbml0Q29weTsKKyAgfQorCisgIC8vIEluaXRpYWxpemVzIHRoaXMg
b2JqZWN0IHdpdGggYSByZWZlcmVuY2Ugb2YgdGhlIGlucHV0LgorICB2b2lkIEluaXRSZWYoY29u
c3QgRWxlbWVudCogYXJyYXksIHNpemVfdCBhX3NpemUpIHsKKyAgICBhcnJheV8gPSBhcnJheTsK
KyAgICBzaXplXyA9IGFfc2l6ZTsKKyAgICBjbG9uZV8gPSAmTmF0aXZlQXJyYXk6OkluaXRSZWY7
CisgIH0KKworICBjb25zdCBFbGVtZW50KiBhcnJheV87CisgIHNpemVfdCBzaXplXzsKKyAgdm9p
ZCAoTmF0aXZlQXJyYXk6OipjbG9uZV8pKGNvbnN0IEVsZW1lbnQqLCBzaXplX3QpOworCisgIEdU
RVNUX0RJU0FMTE9XX0FTU0lHTl8oTmF0aXZlQXJyYXkpOworfTsKKwogfSAgLy8gbmFtZXNwYWNl
IGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCi0jZGVmaW5lIEdURVNUX01FU1NB
R0VfKG1lc3NhZ2UsIHJlc3VsdF90eXBlKSBcCi0gIDo6dGVzdGluZzo6aW50ZXJuYWw6OkFzc2Vy
dEhlbHBlcihyZXN1bHRfdHlwZSwgX19GSUxFX18sIF9fTElORV9fLCBtZXNzYWdlKSBcCisjZGVm
aW5lIEdURVNUX01FU1NBR0VfQVRfKGZpbGUsIGxpbmUsIG1lc3NhZ2UsIHJlc3VsdF90eXBlKSBc
CisgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkFzc2VydEhlbHBlcihyZXN1bHRfdHlwZSwgZmlsZSwg
bGluZSwgbWVzc2FnZSkgXAogICAgID0gOjp0ZXN0aW5nOjpNZXNzYWdlKCkKIAorI2RlZmluZSBH
VEVTVF9NRVNTQUdFXyhtZXNzYWdlLCByZXN1bHRfdHlwZSkgXAorICBHVEVTVF9NRVNTQUdFX0FU
XyhfX0ZJTEVfXywgX19MSU5FX18sIG1lc3NhZ2UsIHJlc3VsdF90eXBlKQorCiAjZGVmaW5lIEdU
RVNUX0ZBVEFMX0ZBSUxVUkVfKG1lc3NhZ2UpIFwKICAgcmV0dXJuIEdURVNUX01FU1NBR0VfKG1l
c3NhZ2UsIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUpCiAKQEAgLTgw
MCw3ICsxMjA4LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBSYW5kb20gewogI2RlZmluZSBHVEVTVF9T
VUNDRVNTXyhtZXNzYWdlKSBcCiAgIEdURVNUX01FU1NBR0VfKG1lc3NhZ2UsIDo6dGVzdGluZzo6
VGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNzKQogCi0vLyBTdXBwcmVzc2VzIE1TVkMgd2FybmluZ3Mg
NDA3MiAodW5yZWFjaGFibGUgY29kZSkgZm9yIHRoZSBjb2RlIGZvbGxvd2luZworLy8gU3VwcHJl
c3MgTVNWQyB3YXJuaW5nIDQ3MDIgKHVucmVhY2hhYmxlIGNvZGUpIGZvciB0aGUgY29kZSBmb2xs
b3dpbmcKIC8vIHN0YXRlbWVudCBpZiBpdCByZXR1cm5zIG9yIHRocm93cyAob3IgZG9lc24ndCBy
ZXR1cm4gb3IgdGhyb3cgaW4gc29tZQogLy8gc2l0dWF0aW9ucykuCiAjZGVmaW5lIEdURVNUX1NV
UFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KSBcCkBAIC04
MDgsNyArMTIxNiw3IEBAIGNsYXNzIEdURVNUX0FQSV8gUmFuZG9tIHsKIAogI2RlZmluZSBHVEVT
VF9URVNUX1RIUk9XXyhzdGF0ZW1lbnQsIGV4cGVjdGVkX2V4Y2VwdGlvbiwgZmFpbCkgXAogICBH
VEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0gIGlmIChjb25zdCBjaGFyKiBndGVzdF9t
c2cgPSAiIikgeyBcCisgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpDb25zdENoYXJQdHIgZ3Rl
c3RfbXNnID0gIiIpIHsgXAogICAgIGJvb2wgZ3Rlc3RfY2F1Z2h0X2V4cGVjdGVkID0gZmFsc2U7
IFwKICAgICB0cnkgeyBcCiAgICAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dB
Uk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKQEAgLTgxNywzOCArMTIyNSwzOCBAQCBjbGFzcyBH
VEVTVF9BUElfIFJhbmRvbSB7CiAgICAgICBndGVzdF9jYXVnaHRfZXhwZWN0ZWQgPSB0cnVlOyBc
CiAgICAgfSBcCiAgICAgY2F0Y2ggKC4uLikgeyBcCi0gICAgICBndGVzdF9tc2cgPSAiRXhwZWN0
ZWQ6ICIgI3N0YXRlbWVudCAiIHRocm93cyBhbiBleGNlcHRpb24gb2YgdHlwZSAiIFwKLSAgICAg
ICAgICAgICAgICAgICNleHBlY3RlZF9leGNlcHRpb24gIi5cbiAgQWN0dWFsOiBpdCB0aHJvd3Mg
YSBkaWZmZXJlbnQgIiBcCi0gICAgICAgICAgICAgICAgICAidHlwZS4iOyBcCisgICAgICBndGVz
dF9tc2cudmFsdWUgPSBcCisgICAgICAgICAgIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJv
d3MgYW4gZXhjZXB0aW9uIG9mIHR5cGUgIiBcCisgICAgICAgICAgI2V4cGVjdGVkX2V4Y2VwdGlv
biAiLlxuICBBY3R1YWw6IGl0IHRocm93cyBhIGRpZmZlcmVudCB0eXBlLiI7IFwKICAgICAgIGdv
dG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0dGhyb3dfLCBfX0xJTkVfXyk7
IFwKICAgICB9IFwKICAgICBpZiAoIWd0ZXN0X2NhdWdodF9leHBlY3RlZCkgeyBcCi0gICAgICBn
dGVzdF9tc2cgPSAiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIHRocm93cyBhbiBleGNlcHRpb24g
b2YgdHlwZSAiIFwKLSAgICAgICAgICAgICAgICAgICNleHBlY3RlZF9leGNlcHRpb24gIi5cbiAg
QWN0dWFsOiBpdCB0aHJvd3Mgbm90aGluZy4iOyBcCisgICAgICBndGVzdF9tc2cudmFsdWUgPSBc
CisgICAgICAgICAgIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9u
IG9mIHR5cGUgIiBcCisgICAgICAgICAgI2V4cGVjdGVkX2V4Y2VwdGlvbiAiLlxuICBBY3R1YWw6
IGl0IHRocm93cyBub3RoaW5nLiI7IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhn
dGVzdF9sYWJlbF90ZXN0dGhyb3dfLCBfX0xJTkVfXyk7IFwKICAgICB9IFwKICAgfSBlbHNlIFwK
ICAgICBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3R0aHJvd18sIF9fTElORV9f
KTogXAotICAgICAgZmFpbChndGVzdF9tc2cpCisgICAgICBmYWlsKGd0ZXN0X21zZy52YWx1ZSkK
IAogI2RlZmluZSBHVEVTVF9URVNUX05PX1RIUk9XXyhzdGF0ZW1lbnQsIGZhaWwpIFwKICAgR1RF
U1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAotICBpZiAoY29uc3QgY2hhciogZ3Rlc3RfbXNn
ID0gIiIpIHsgXAorICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwK
ICAgICB0cnkgeyBcCiAgICAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5J
TkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKICAgICB9IFwKICAgICBjYXRjaCAoLi4uKSB7IFwKLSAg
ICAgIGd0ZXN0X21zZyA9ICJFeHBlY3RlZDogIiAjc3RhdGVtZW50ICIgZG9lc24ndCB0aHJvdyBh
biBleGNlcHRpb24uXG4iIFwKLSAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogaXQgdGhyb3dz
LiI7IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0bm90
aHJvd18sIF9fTElORV9fKTsgXAogICAgIH0gXAogICB9IGVsc2UgXAogICAgIEdURVNUX0NPTkNB
VF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdG5vdGhyb3dfLCBfX0xJTkVfXyk6IFwKLSAgICAgIGZh
aWwoZ3Rlc3RfbXNnKQorICAgICAgZmFpbCgiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIGRvZXNu
J3QgdGhyb3cgYW4gZXhjZXB0aW9uLlxuIiBcCisgICAgICAgICAgICIgIEFjdHVhbDogaXQgdGhy
b3dzLiIpCiAKICNkZWZpbmUgR1RFU1RfVEVTVF9BTllfVEhST1dfKHN0YXRlbWVudCwgZmFpbCkg
XAogICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0gIGlmIChjb25zdCBjaGFyKiBn
dGVzdF9tc2cgPSAiIikgeyBcCisgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVl
KCkpIHsgXAogICAgIGJvb2wgZ3Rlc3RfY2F1Z2h0X2FueSA9IGZhbHNlOyBcCiAgICAgdHJ5IHsg
XAogICAgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhz
dGF0ZW1lbnQpOyBcCkBAIC04NTcsMTMgKzEyNjUsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBSYW5k
b20gewogICAgICAgZ3Rlc3RfY2F1Z2h0X2FueSA9IHRydWU7IFwKICAgICB9IFwKICAgICBpZiAo
IWd0ZXN0X2NhdWdodF9hbnkpIHsgXAotICAgICAgZ3Rlc3RfbXNnID0gIkV4cGVjdGVkOiAiICNz
dGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuIiBcCi0gICAgICAgICAgICAgICAgICAi
ICBBY3R1YWw6IGl0IGRvZXNuJ3QuIjsgXAogICAgICAgZ290byBHVEVTVF9DT05DQVRfVE9LRU5f
KGd0ZXN0X2xhYmVsX3Rlc3Rhbnl0aHJvd18sIF9fTElORV9fKTsgXAogICAgIH0gXAogICB9IGVs
c2UgXAogICAgIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdGFueXRocm93Xywg
X19MSU5FX18pOiBcCi0gICAgICBmYWlsKGd0ZXN0X21zZykKKyAgICAgIGZhaWwoIkV4cGVjdGVk
OiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuIiBcCisgICAgICAgICAgICIg
IEFjdHVhbDogaXQgZG9lc24ndC4iKQogCiAKIC8vIEltcGxlbWVudHMgQm9vbGVhbiB0ZXN0IGFz
c2VydGlvbnMgc3VjaCBhcyBFWFBFQ1RfVFJVRS4gZXhwcmVzc2lvbiBjYW4gYmUKQEAgLTg4MCwx
OCArMTI4NywxNyBAQCBjbGFzcyBHVEVTVF9BUElfIFJhbmRvbSB7CiAKICNkZWZpbmUgR1RFU1Rf
VEVTVF9OT19GQVRBTF9GQUlMVVJFXyhzdGF0ZW1lbnQsIGZhaWwpIFwKICAgR1RFU1RfQU1CSUdV
T1VTX0VMU0VfQkxPQ0tFUl8gXAotICBpZiAoY29uc3QgY2hhciogZ3Rlc3RfbXNnID0gIiIpIHsg
XAorICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKICAgICA6OnRl
c3Rpbmc6OmludGVybmFsOjpIYXNOZXdGYXRhbEZhaWx1cmVIZWxwZXIgZ3Rlc3RfZmF0YWxfZmFp
bHVyZV9jaGVja2VyOyBcCiAgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJO
SU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCiAgICAgaWYgKGd0ZXN0X2ZhdGFsX2ZhaWx1cmVfY2hl
Y2tlci5oYXNfbmV3X2ZhdGFsX2ZhaWx1cmUoKSkgeyBcCi0gICAgICBndGVzdF9tc2cgPSAiRXhw
ZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgZ2VuZXJhdGUgbmV3IGZhdGFsICIgXAotICAg
ICAgICAgICAgICAgICAgImZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZC5cbiIgXAotICAg
ICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBpdCBkb2VzLiI7IFwKICAgICAgIGdvdG8gR1RFU1Rf
Q09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0bm9mYXRhbF8sIF9fTElORV9fKTsgXAogICAg
IH0gXAogICB9IGVsc2UgXAogICAgIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVz
dG5vZmF0YWxfLCBfX0xJTkVfXyk6IFwKLSAgICAgIGZhaWwoZ3Rlc3RfbXNnKQorICAgICAgZmFp
bCgiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgZ2VuZXJhdGUgbmV3IGZhdGFsICIg
XAorICAgICAgICAgICAiZmFpbHVyZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkLlxuIiBcCisgICAg
ICAgICAgICIgIEFjdHVhbDogaXQgZG9lcy4iKQogCiAvLyBFeHBhbmRzIHRvIHRoZSBuYW1lIG9m
IHRoZSBjbGFzcyB0aGF0IGltcGxlbWVudHMgdGhlIGdpdmVuIHRlc3QuCiAjZGVmaW5lIEdURVNU
X1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXApAQCAtOTA0LDcg
KzEzMTAsNyBAQCBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0
ZXN0X25hbWUpIDogcHVibGljIHBhcmVudF9jbGFzcyB7XAogICBHVEVTVF9URVNUX0NMQVNTX05B
TUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpKCkge31cCiAgcHJpdmF0ZTpcCiAgIHZpcnR1
YWwgdm9pZCBUZXN0Qm9keSgpO1wKLSAgc3RhdGljIDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0
IHRlc3RfaW5mb187XAorICBzdGF0aWMgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9p
bmZvXyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXztcCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8oXAogICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwg
dGVzdF9uYW1lKSk7XAogfTtcCkBAIC05MTIsNyArMTMxOCw4IEBAIGNsYXNzIEdURVNUX1RFU1Rf
Q0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgOiBwdWJsaWMgcGFyZW50X2Ns
YXNzIHtcCiA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCBHVEVTVF9URVNUX0NMQVNTX05BTUVf
KHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpXAogICA6OnRlc3RfaW5mb18gPVwKICAgICA6OnRl
c3Rpbmc6OmludGVybmFsOjpNYWtlQW5kUmVnaXN0ZXJUZXN0SW5mbyhcCi0gICAgICAgICN0ZXN0
X2Nhc2VfbmFtZSwgI3Rlc3RfbmFtZSwgIiIsICIiLCBcCisgICAgICAgICN0ZXN0X2Nhc2VfbmFt
ZSwgI3Rlc3RfbmFtZSwgTlVMTCwgTlVMTCwgXAorICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFs
OjpDb2RlTG9jYXRpb24oX19GSUxFX18sIF9fTElORV9fKSwgXAogICAgICAgICAocGFyZW50X2lk
KSwgXAogICAgICAgICBwYXJlbnRfY2xhc3M6OlNldFVwVGVzdENhc2UsIFwKICAgICAgICAgcGFy
ZW50X2NsYXNzOjpUZWFyRG93blRlc3RDYXNlLCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2Vk
X3B0ci5oCmluZGV4IDU0MGVmNGNkNDRlNzJiNTU4NjU3MDgxYTVmMDdhMGYyOGIzZTQwZTMuLjA4
MmI4NzI4OWFlMTdjOGFhN2I5NmQ4ZThjOTJiOTZlMDE4Yzc2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0
ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtbGlua2VkX3B0ci5oCkBAIC0yNyw4ICsyNyw2IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAvLwotLy8gQXV0aG9yczogRGFuIEVnbm9yIChlZ25vckBnb29nbGUuY29t
KQotLy8KIC8vIEEgInNtYXJ0IiBwb2ludGVyIHR5cGUgd2l0aCByZWZlcmVuY2UgdHJhY2tpbmcu
ICBFdmVyeSBwb2ludGVyIHRvIGEKIC8vIHBhcnRpY3VsYXIgb2JqZWN0IGlzIGtlcHQgb24gYSBj
aXJjdWxhciBsaW5rZWQgbGlzdC4gIFdoZW4gdGhlIGxhc3QgcG9pbnRlcgogLy8gdG8gYW4gb2Jq
ZWN0IGlzIGRlc3Ryb3llZCBvciByZWFzc2lnbmVkLCB0aGUgb2JqZWN0IGlzIGRlbGV0ZWQuCkBA
IC02MiwxNiArNjAsMTggQEAKIC8vICAgICAgIHJhdyBwb2ludGVyIChlLmcuIHZpYSBnZXQoKSkg
Y29uY3VycmVudGx5LCBhbmQKIC8vICAgICAtIGl0J3Mgc2FmZSB0byB3cml0ZSB0byB0d28gbGlu
a2VkX3B0cnMgdGhhdCBwb2ludCB0byB0aGUgc2FtZQogLy8gICAgICAgc2hhcmVkIG9iamVjdCBj
b25jdXJyZW50bHkuCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogcmVuYW1lIHRoaXMgdG8gc2Fm
ZV9saW5rZWRfcHRyIHRvIGF2b2lkCisvLyBGSVhNRTogcmVuYW1lIHRoaXMgdG8gc2FmZV9saW5r
ZWRfcHRyIHRvIGF2b2lkCiAvLyBjb25mdXNpb24gd2l0aCBub3JtYWwgbGlua2VkX3B0ci4KIAor
Ly8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xV
REVfR1RFU1RfSU5URVJOQUxfR1RFU1RfTElOS0VEX1BUUl9IXwogI2RlZmluZSBHVEVTVF9JTkNM
VURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0xJTktFRF9QVFJfSF8KIAogI2luY2x1ZGUgPHN0ZGxp
Yi5oPgogI2luY2x1ZGUgPGFzc2VydC5oPgogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKIAogbmFt
ZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsKQEAgLTEwNSwyNSArMTA1LDM1
IEBAIGNsYXNzIGxpbmtlZF9wdHJfaW50ZXJuYWwgewogICAvLyBmcmFtZXdvcmsuCiAKICAgLy8g
Sm9pbiBhbiBleGlzdGluZyBjaXJjbGUuCi0gIC8vIEwgPCBnX2xpbmtlZF9wdHJfbXV0ZXgKLSAg
dm9pZCBqb2luKGxpbmtlZF9wdHJfaW50ZXJuYWwgY29uc3QqIHB0cikgeworICB2b2lkIGpvaW4o
bGlua2VkX3B0cl9pbnRlcm5hbCBjb25zdCogcHRyKQorICAgICAgR1RFU1RfTE9DS19FWENMVURF
RF8oZ19saW5rZWRfcHRyX211dGV4KSB7CiAgICAgTXV0ZXhMb2NrIGxvY2soJmdfbGlua2VkX3B0
cl9tdXRleCk7CiAKICAgICBsaW5rZWRfcHRyX2ludGVybmFsIGNvbnN0KiBwID0gcHRyOwotICAg
IHdoaWxlIChwLT5uZXh0XyAhPSBwdHIpIHAgPSBwLT5uZXh0XzsKKyAgICB3aGlsZSAocC0+bmV4
dF8gIT0gcHRyKSB7CisgICAgICBhc3NlcnQocC0+bmV4dF8gIT0gdGhpcyAmJgorICAgICAgICAg
ICAgICJUcnlpbmcgdG8gam9pbigpIGEgbGlua2VkIHJpbmcgd2UgYXJlIGFscmVhZHkgaW4uICIK
KyAgICAgICAgICAgICAiSXMgR01vY2sgdGhyZWFkIHNhZmV0eSBlbmFibGVkPyIpOworICAgICAg
cCA9IHAtPm5leHRfOworICAgIH0KICAgICBwLT5uZXh0XyA9IHRoaXM7CiAgICAgbmV4dF8gPSBw
dHI7CiAgIH0KIAogICAvLyBMZWF2ZSB3aGF0ZXZlciBjaXJjbGUgd2UncmUgcGFydCBvZi4gIFJl
dHVybnMgdHJ1ZSBpZiB3ZSB3ZXJlIHRoZQogICAvLyBsYXN0IG1lbWJlciBvZiB0aGUgY2lyY2xl
LiAgT25jZSB0aGlzIGlzIGRvbmUsIHlvdSBjYW4gam9pbigpIGFub3RoZXIuCi0gIC8vIEwgPCBn
X2xpbmtlZF9wdHJfbXV0ZXgKLSAgYm9vbCBkZXBhcnQoKSB7CisgIGJvb2wgZGVwYXJ0KCkKKyAg
ICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGdfbGlua2VkX3B0cl9tdXRleCkgewogICAgIE11dGV4
TG9jayBsb2NrKCZnX2xpbmtlZF9wdHJfbXV0ZXgpOwogCiAgICAgaWYgKG5leHRfID09IHRoaXMp
IHJldHVybiB0cnVlOwogICAgIGxpbmtlZF9wdHJfaW50ZXJuYWwgY29uc3QqIHAgPSBuZXh0XzsK
LSAgICB3aGlsZSAocC0+bmV4dF8gIT0gdGhpcykgcCA9IHAtPm5leHRfOworICAgIHdoaWxlIChw
LT5uZXh0XyAhPSB0aGlzKSB7CisgICAgICBhc3NlcnQocC0+bmV4dF8gIT0gbmV4dF8gJiYKKyAg
ICAgICAgICAgICAiVHJ5aW5nIHRvIGRlcGFydCgpIGEgbGlua2VkIHJpbmcgd2UgYXJlIG5vdCBp
bi4gIgorICAgICAgICAgICAgICJJcyBHTW9jayB0aHJlYWQgc2FmZXR5IGVuYWJsZWQ/Iik7Cisg
ICAgICBwID0gcC0+bmV4dF87CisgICAgfQogICAgIHAtPm5leHRfID0gbmV4dF87CiAgICAgcmV0
dXJuIGZhbHNlOwogICB9CkBAIC0xNzIsMTUgKzE4Miw2IEBAIGNsYXNzIGxpbmtlZF9wdHIgewog
ICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KICAgVCogb3BlcmF0b3ItPigpIGNv
bnN0IHsgcmV0dXJuIHZhbHVlXzsgfQogICBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAq
dmFsdWVfOyB9Ci0gIC8vIFJlbGVhc2Ugb3duZXJzaGlwIG9mIHRoZSBwb2ludGVkIG9iamVjdCBh
bmQgcmV0dXJucyBpdC4KLSAgLy8gU29sZSBvd25lcnNoaXAgYnkgdGhpcyBsaW5rZWRfcHRyIG9i
amVjdCBpcyByZXF1aXJlZC4KLSAgVCogcmVsZWFzZSgpIHsKLSAgICBib29sIGxhc3QgPSBsaW5r
Xy5kZXBhcnQoKTsKLSAgICBhc3NlcnQobGFzdCk7Ci0gICAgVCogdiA9IHZhbHVlXzsKLSAgICB2
YWx1ZV8gPSBOVUxMOwotICAgIHJldHVybiB2OwotICB9CiAKICAgYm9vbCBvcGVyYXRvcj09KFQq
IHApIGNvbnN0IHsgcmV0dXJuIHZhbHVlXyA9PSBwOyB9CiAgIGJvb2wgb3BlcmF0b3IhPShUKiBw
KSBjb25zdCB7IHJldHVybiB2YWx1ZV8gIT0gcDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVy
YXRlZC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9n
dGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oCmluZGV4IDYyYjVhZTEzZTI4ZTU2NmIxZTg4NTEy
N2RiYjA3Y2QxNzJhMjZmMTkuLmY0ZGY1OTkxOTA1NzJlN2IwOWU5ZDdiMGNlODk5NDcyZGM3ZWI5
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVk
LmgKQEAgLTEsNCArMSw2IEBACi0vLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBhIHNjcmlw
dC4gIERPIE5PVCBFRElUIEJZIEhBTkQhISEKKy8vIFRoaXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5
IGNvbW1hbmQ6CisvLyAgICAgcHVtcC5weSBndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oLnB1
bXAKKy8vIERPIE5PVCBFRElUIEJZIEhBTkQhISEKIAogLy8gQ29weXJpZ2h0IDIwMDggR29vZ2xl
IEluYy4KIC8vIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCkBAIC0yOCw4ICszMCw3IEBACiAvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2
bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQorCiAKIC8vIFR5cGUgYW5kIGZ1bmN0aW9uIHV0
aWxpdGllcyBmb3IgaW1wbGVtZW50aW5nIHBhcmFtZXRlcml6ZWQgdGVzdHMuCiAvLyBUaGlzIGZp
bGUgaXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBULiAgRE8gTk9UIEVESVQgQlkgSEFORCEKQEAgLTQx
LDE2ICs0MiwxMyBAQAogLy8gYnkgdGhlIG1heGltdW0gYXJpdHkgb2YgdGhlIGltcGxlbWVudGF0
aW9uIG9mIHR1cGxlIHdoaWNoIGlzCiAvLyBjdXJyZW50bHkgc2V0IGF0IDEwLgogCisvLyBHT09H
TEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVT
VF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0dFTkVSQVRFRF9IXwogI2RlZmluZSBHVEVTVF9J
TkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BBUkFNX1VUSUxfR0VORVJBVEVEX0hfCiAKLS8v
IHNjcmlwdHMvZnVzZV9ndGVzdC5weSBkZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWlu
ZyAjaW5jbHVkZWQKLS8vICp1bmNvbmRpdGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNs
dWRlcyBjYW5ub3QgYmUgbW92ZWQKLS8vIGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1Qu
Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oPgotI2luY2x1ZGUg
PGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNU
CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oIgorI2luY2x1ZGUg
Imd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBA
IC01OCw4ICs1Niw4IEBAIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIC8vIGluY2x1ZGUvZ3Rlc3QvZ3Rl
c3QtcGFyYW0tdGVzdC5oLgogdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcj4KIGlu
dGVybmFsOjpQYXJhbUdlbmVyYXRvcjwKLSAgICB0eXBlbmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJh
aXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+IFZhbHVlc0luKAotICAgICAgICBGb3J3
YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJdGVyYXRvciBlbmQpOworICB0eXBlbmFtZSA6OnRl
c3Rpbmc6OmludGVybmFsOjpJdGVyYXRvclRyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90
eXBlPgorVmFsdWVzSW4oRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5k
KTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgogaW50ZXJuYWw6OlBhcmFtR2Vu
ZXJhdG9yPFQ+IFZhbHVlc0luKGNvbnN0IFQgKCZhcnJheSlbTl0pOwpAQCAtNzcsNyArNzUsMTAg
QEAgY2xhc3MgVmFsdWVBcnJheTEgewogICBleHBsaWNpdCBWYWx1ZUFycmF5MShUMSB2MSkgOiB2
MV8odjEpIHt9CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgeyByZXR1cm4gVmFsdWVzSW4oJnYxXywgJnYxXyArIDEpOyB9Cisg
IG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgeworICAgIGNvbnN0IFQgYXJyYXlb
XSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pfTsKKyAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwor
ICB9CiAKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMg
dW5zdXBwb3J0ZWQuCkBAIC05Myw3ICs5NCw3IEBAIGNsYXNzIFZhbHVlQXJyYXkyIHsKIAogICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25z
dCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJffTsKKyAgICBjb25zdCBUIGFycmF5
W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKX07CiAgICAgcmV0
dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0xMTIsNyArMTEzLDggQEAgY2xhc3MgVmFs
dWVBcnJheTMgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdl
bmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYz
X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19j
YXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyl9OwogICAgIHJldHVybiBW
YWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTMzLDcgKzEzNSw4IEBAIGNsYXNzIFZhbHVlQXJy
YXk0IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0
X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19j
YXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+
KHY0Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTU1LDcgKzE1
OCw4IEBAIGNsYXNzIFZhbHVlQXJyYXk1IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAg
b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtd
ID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3Rh
dGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKX07CiAg
ICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0xNzksNyArMTgzLDkgQEAgY2xh
c3MgVmFsdWVBcnJheTYgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQ
YXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2
Ml8sIHYzXywgdjRfLCB2NV8sIHY2X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19j
YXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY2Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0K
IApAQCAtMjA0LDcgKzIxMCw5IEBAIGNsYXNzIFZhbHVlQXJyYXk3IHsKIAogICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAg
Y29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3X307Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAt
MjMxLDcgKzIzOSw5IEBAIGNsYXNzIFZhbHVlQXJyYXk4IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3Qg
VCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhffTsKKyAg
ICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKX07CiAgICAgcmV0dXJuIFZhbHVlc0lu
KGFycmF5KTsKICAgfQogCkBAIC0yNTksNyArMjY5LDEwIEBAIGNsYXNzIFZhbHVlQXJyYXk5IHsK
IAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4o
KSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVf
LCB2Nl8sIHY3XywgdjhfLCB2OV99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2Fz
dDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2
OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4o
YXJyYXkpOwogICB9CiAKQEAgLTI4OCw3ICszMDEsMTAgQEAgY2xhc3MgVmFsdWVBcnJheTEwIHsK
IAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4o
KSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVf
LCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0
aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2Fz
dDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2
MTBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0zMTksNyArMzM1
LDEwIEBAIGNsYXNzIFZhbHVlQXJyYXkxMSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAg
IG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlb
XSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2
MTFffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTM1MSw4ICszNzAs
MTEgQEAgY2xhc3MgVmFsdWVBcnJheTEyIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAg
b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtd
ID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYx
MV8sCi0gICAgICAgIHYxMl99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxU
Pih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18p
LCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3Rh
dGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pfTsKICAgICBy
ZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTM4Niw4ICs0MDgsMTEgQEAgY2xhc3Mg
VmFsdWVBcnJheTEzIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFy
YW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJf
LCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAg
IHYxMl8sIHYxM199OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8p
LCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0
aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nh
c3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTNfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC00MjIsOCAr
NDQ3LDExIEBAIGNsYXNzIFZhbHVlQXJyYXkxNCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJy
YXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBf
LCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRffTsKKyAgICBjb25zdCBUIGFycmF5W10g
PSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nh
c3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pfTsKICAg
ICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTQ1OSw4ICs0ODcsMTIgQEAgY2xh
c3MgVmFsdWVBcnJheTE1IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3Ig
UGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywg
djJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAg
ICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0
aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2Fz
dDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2
MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8p
LCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYxNV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAK
QEAgLTQ5OSw4ICs1MzEsMTIgQEAgY2xhc3MgVmFsdWVBcnJheTE2IHsKIAogICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAg
Y29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3Xywgdjhf
LCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl99
OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2Fz
dDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2
NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBz
dGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNf
Y2FzdDxUPih2MTZfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC01
NDAsOCArNTc2LDEyIEBAIGNsYXNzIFZhbHVlQXJyYXkxNyB7CiAKICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywgdjlf
LCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdf
fTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4o
djRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwg
c3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0
YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pfTsKICAgICByZXR1cm4gVmFsdWVz
SW4oYXJyYXkpOwogICB9CiAKQEAgLTU4Miw4ICs2MjIsMTMgQEAgY2xhc3MgVmFsdWVBcnJheTE4
IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8
VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0Xywg
djVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18s
IHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtz
dGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNf
Y2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
Ml8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8
VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pfTsKICAgICByZXR1cm4gVmFs
dWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTYyNSw4ICs2NzAsMTMgQEAgY2xhc3MgVmFsdWVBcnJh
eTE5IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0
XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYx
M18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV99OworICAgIGNvbnN0IFQgYXJy
YXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxU
Pih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18p
LCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0
aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNf
Y2FzdDxUPih2MTlfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC02
NzAsOCArNzIwLDEzIEBAIGNsYXNzIFZhbHVlQXJyYXkyMCB7CiAKICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywgdjlf
LCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdf
LCB2MThfLCB2MTlfLCB2MjBffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8
VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNf
KSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0
YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRp
Y19jYXN0PFQ+KHYyMF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAg
LTcxNyw4ICs3NzIsMTQgQEAgY2xhc3MgVmFsdWVBcnJheTIxIHsKIAogICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29u
c3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2
OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYx
N18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0
aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2Fz
dDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2
MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8p
LCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4o
djE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlf
KSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pfTsK
ICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTc2NSw4ICs4MjYsMTQgQEAg
Y2xhc3MgVmFsdWVBcnJheTIyIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0
b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3Yx
XywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0g
ICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYy
MF8sIHYyMV8sIHYyMl99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2
MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBz
dGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGlj
X2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2Fz
dDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nh
c3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjJfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC04MTUsOSAr
ODgyLDE0IEBAIGNsYXNzIFZhbHVlQXJyYXkyMyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJy
YXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBf
LCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThf
LCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLAotICAgICAgICB2MjNffTsKKyAgICBjb25zdCBUIGFy
cmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8
VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdf
KSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3Rh
dGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0
YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pfTsK
ICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTg2Nyw5ICs5MzksMTUgQEAg
Y2xhc3MgVmFsdWVBcnJheTI0IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0
b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3Yx
XywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0g
ICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYy
MF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF99OworICAgIGNvbnN0IFQgYXJyYXlb
XSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2
NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBz
dGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNf
Y2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2Fz
dDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwog
ICB9CiAKQEAgLTkyMCw5ICs5OTgsMTUgQEAgY2xhc3MgVmFsdWVBcnJheTI1IHsKIAogICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7
Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3
XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8s
IHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAg
IHYyNF8sIHYyNV99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8p
LCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0
aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nh
c3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
NV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8
VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2
MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8p
LCBzdGF0aWNfY2FzdDxUPih2MjVfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAg
fQogCkBAIC05NzUsOSArMTA1OSwxNSBAQCBjbGFzcyBWYWx1ZUFycmF5MjYgewogCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
LSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywgdjdf
LCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1Xywg
djE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAg
djI0XywgdjI1XywgdjI2X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+
KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyks
IHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0
aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19j
YXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0
PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0xMDMyLDkgKzExMjIsMTYgQEAgY2xh
c3MgVmFsdWVBcnJheTI3IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3Ig
UGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywg
djJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAg
ICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8s
IHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN199OworICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2
Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBz
dGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNf
Y2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nh
c3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
OF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8
VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2
MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18p
fTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTEwOTAsOSArMTE4Nywx
NiBAQCBjbGFzcyBWYWx1ZUFycmF5MjggewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5
XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3
XywgdjI4X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYx
M18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyks
IHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2
MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8p
LCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0
YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pfTsKICAgICByZXR1cm4gVmFsdWVz
SW4oYXJyYXkpOwogICB9CiAKQEAgLTExNDksOSArMTI1MywxNiBAQCBjbGFzcyBWYWx1ZUFycmF5
MjkgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRf
LCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEz
XywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywg
djIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5X307CisgICAg
Y29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYy
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0
YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19j
YXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2Fz
dDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+
KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4
XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYy
NV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKX07CiAgICAgcmV0dXJu
IFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0xMjEwLDkgKzEzMjEsMTcgQEAgY2xhc3MgVmFs
dWVBcnJheTMwIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1H
ZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2
M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYx
Ml8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8s
IHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8s
IHYzMF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0
aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2Fz
dDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4o
djExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNf
KSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBz
dGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIw
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwg
c3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0
aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJy
YXkpOwogICB9CiAKQEAgLTEyNzMsOSArMTM5MiwxNyBAQCBjbGFzcyBWYWx1ZUFycmF5MzEgewog
CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigp
IGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8s
IHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0
XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywK
LSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxX307
CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0
PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0
XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0
YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0
aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19j
YXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0
PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pfTsKICAgICByZXR1
cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTEzMzcsOSArMTQ2NCwxNyBAQCBjbGFzcyBW
YWx1ZUFycmF5MzIgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8s
IHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAg
djEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIx
XywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5
XywgdjMwXywgdjMxXywgdjMyX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0
PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
XyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBz
dGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRp
Y19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0
aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19j
YXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNf
Y2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0
PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCkBAIC0xNDAzLDkgKzE1MzgsMTggQEAgY2xhc3MgVmFsdWVBcnJheTMzIHsK
IAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4o
KSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVf
LCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYx
NF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18s
Ci0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8s
IHYzMl8sIHYzM199OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8p
LCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0
aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nh
c3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
NV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8
VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2
MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8p
LCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4o
djI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFf
KSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pfTsK
ICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTE0NzAsOSArMTYxNCwxOCBA
QCBjbGFzcyBWYWx1ZUFycmF5MzQgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVy
YXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7
djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywK
LSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5Xywg
djIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3Xywg
djI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0X307CisgICAgY29uc3QgVCBh
cnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0
PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3
XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0
YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBz
dGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRp
Y19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0
aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19j
YXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pfTsKICAgICBy
ZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTE1MzgsMTAgKzE2OTEsMTggQEAgY2xh
c3MgVmFsdWVBcnJheTM1IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3Ig
UGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywg
djJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAg
ICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8s
IHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8s
IHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8sCi0gICAgICAgIHYzNV99OworICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2
Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBz
dGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNf
Y2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nh
c3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
OF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8
VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2
MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18p
LCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4o
djMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRf
KSwgc3RhdGljX2Nhc3Q8VD4odjM1Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAg
IH0KIApAQCAtMTYwOSwxMCArMTc3MCwxOSBAQCBjbGFzcyBWYWx1ZUFycmF5MzYgewogCiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0
IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywg
djdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1
XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAg
ICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywg
djMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2X307CisgICAgY29uc3QgVCBhcnJheVtdID0g
e3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRp
Y19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0
PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2Fz
dDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+
KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIx
XyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYy
OF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyks
IHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2
MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJ
bihhcnJheSk7CiAgIH0KIApAQCAtMTY4MiwxMCArMTg1MiwxOSBAQCBjbGFzcyBWYWx1ZUFycmF5
MzcgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRf
LCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEz
XywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywg
djIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywg
djMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3X307CisgICAg
Y29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYy
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0
YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19j
YXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2Fz
dDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+
KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4
XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYy
NV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2
MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8p
LCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0
YXRpY19jYXN0PFQ+KHYzN18pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAK
QEAgLTE3NTYsMTAgKzE5MzUsMTkgQEAgY2xhc3MgVmFsdWVBcnJheTM4IHsKIAogICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0g
ICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3Xywg
djhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYx
Nl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYy
NF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18s
IHYzNF8sIHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18sIHYzOF99OworICAgIGNvbnN0IFQgYXJy
YXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxU
Pih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18p
LCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0
aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNf
Y2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2Fz
dDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nh
c3Q8VD4odjM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJh
eSk7CiAgIH0KIApAQCAtMTgzMSwxMCArMjAxOSwyMCBAQCBjbGFzcyBWYWx1ZUFycmF5Mzkgewog
CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigp
IGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8s
IHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0
XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywK
LSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywg
djMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5X307
CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0
PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0
XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0
YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0
aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19j
YXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0
PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2Fz
dDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+
KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2
XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjM5Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0K
IApAQCAtMTkwOCwxMCArMjEwNiwyMCBAQCBjbGFzcyBWYWx1ZUFycmF5NDAgewogCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
LSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywgdjdf
LCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1Xywg
djE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAg
djI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMz
XywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwX307Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNf
Y2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0
PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2Fz
dDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+
KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3
XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxU
Pih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYz
NF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2Xyks
IHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pfTsKICAgICByZXR1cm4gVmFs
dWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTE5ODcsMTAgKzIxOTUsMjAgQEAgY2xhc3MgVmFsdWVB
cnJheTQxIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5l
cmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18s
IHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8s
IHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYy
Ml8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYz
MF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18sIHYz
OF8sIHYzOV8sIHY0MF8sIHY0MV99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2Fz
dDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2
OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwg
c3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0
aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3Rh
dGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2Fz
dDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nh
c3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxU
Pih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJh
eSk7CiAgIH0KIApAQCAtMjA2NywxMCArMjI4NSwyMSBAQCBjbGFzcyBWYWx1ZUFycmF5NDIgewog
CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigp
IGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8s
IHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0
XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywK
LSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywg
djMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5Xywg
djQwXywgdjQxXywgdjQyX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+
KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyks
IHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0
aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19j
YXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0
PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2Fz
dDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+
KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMz
XyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxU
Pih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0
MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyl9
OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjE0OCwxMCArMjM3Nywy
MSBAQCBjbGFzcyBWYWx1ZUFycmF5NDMgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5
XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3
XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAg
ICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzX307CisgICAg
Y29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYy
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0
YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19j
YXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2Fz
dDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+
KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4
XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYy
NV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2
MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8p
LCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0
YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pfTsK
ICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTIyMzEsMTAgKzI0NzEsMjEg
QEAgY2xhc3MgVmFsdWVBcnJheTQ0IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3Bl
cmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0g
e3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8s
Ci0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8s
IHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18s
IHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8sCi0gICAgICAg
IHYzNl8sIHYzN18sIHYzOF8sIHYzOV8sIHY0MF8sIHY0MV8sIHY0Ml8sIHY0M18sIHY0NF99Owor
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxU
Pih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8p
LCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0
aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2Fz
dDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nh
c3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxU
Pih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYy
N18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8
VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2
MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8p
LCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4o
djQxXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0Ml8pLCBzdGF0aWNfY2FzdDxUPih2NDNf
KSwgc3RhdGljX2Nhc3Q8VD4odjQ0Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAg
IH0KIApAQCAtMjMxNSwxMCArMjU2NiwyMiBAQCBjbGFzcyBWYWx1ZUFycmF5NDUgewogCiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0
IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywg
djdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1
XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAg
ICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywg
djMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywg
djQxXywgdjQyXywgdjQzXywgdjQ0XywgdjQ1X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYx
OV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyks
IHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2
MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8p
LCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0
YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBz
dGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRp
Y19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ1Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJh
eSk7CiAgIH0KIApAQCAtMjQwMSwxMCArMjY2NCwyMiBAQCBjbGFzcyBWYWx1ZUFycmF5NDYgewog
CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigp
IGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8s
IHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0
XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywK
LSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywg
djMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5Xywg
djQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0XywgdjQ1XywgdjQ2X307CisgICAgY29uc3QgVCBh
cnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0
PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3
XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0
YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBz
dGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRp
Y19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0
aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19j
YXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNf
Y2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0
PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2Fz
dDxUPih2NDRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0YXRpY19jYXN0PFQ+
KHY0Nl8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTI0ODksMTEg
KzI3NjQsMjIgQEAgY2xhc3MgVmFsdWVBcnJheTQ3IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBh
cnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYx
MF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYx
OF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYy
Nl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8s
Ci0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYzOV8sIHY0MF8sIHY0MV8sIHY0Ml8sIHY0M18s
IHY0NF8sIHY0NV8sIHY0Nl8sCi0gICAgICAgIHY0N199OworICAgIGNvbnN0IFQgYXJyYXlbXSA9
IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0
aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2Fz
dDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nh
c3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYy
MV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8
VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2
MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8p
LCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4o
djM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2Mzdf
KSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBz
dGF0aWNfY2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY0Ml8pLCBzdGF0aWNfY2FzdDxUPih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4odjQ0
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0NV8pLCBzdGF0aWNfY2FzdDxUPih2NDZfKSwg
c3RhdGljX2Nhc3Q8VD4odjQ3Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0K
IApAQCAtMjU3OSwxMSArMjg2NSwyMyBAQCBjbGFzcyBWYWx1ZUFycmF5NDggewogCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
LSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywgdjdf
LCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1Xywg
djE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAg
djI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMz
XywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQx
XywgdjQyXywgdjQzXywgdjQ0XywgdjQ1XywgdjQ2XywgdjQ3XywKLSAgICAgICAgdjQ4X307Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNf
Y2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0
PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2Fz
dDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+
KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3
XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxU
Pih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYz
NF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2Xyks
IHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2
NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18p
LCBzdGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0
YXRpY19jYXN0PFQ+KHY0Nl8pLCBzdGF0aWNfY2FzdDxUPih2NDdfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjQ4Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAt
MjY3MCwxMSArMjk2OCwyMyBAQCBjbGFzcyBWYWx1ZUFycmF5NDkgewogCiAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBj
b25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8s
IHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2Xywg
djE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0Xywg
djI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0
XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQy
XywgdjQzXywgdjQ0XywgdjQ1XywgdjQ2XywgdjQ3XywKLSAgICAgICAgdjQ4XywgdjQ5X307Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNf
Y2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0
PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2Fz
dDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+
KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3
XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxU
Pih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYz
NF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2Xyks
IHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2
NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18p
LCBzdGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0
YXRpY19jYXN0PFQ+KHY0Nl8pLCBzdGF0aWNfY2FzdDxUPih2NDdfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjQ4XyksIHN0YXRpY19jYXN0PFQ+KHY0OV8pfTsKICAgICByZXR1cm4gVmFsdWVz
SW4oYXJyYXkpOwogICB9CiAKQEAgLTI3NjIsMTEgKzMwNzIsMjMgQEAgY2xhc3MgVmFsdWVBcnJh
eTUwIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0
XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYx
M18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8s
IHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8s
IHYzMV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8s
IHYzOV8sIHY0MF8sIHY0MV8sIHY0Ml8sIHY0M18sIHY0NF8sIHY0NV8sIHY0Nl8sIHY0N18sCi0g
ICAgICAgIHY0OF8sIHY0OV8sIHY1MF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNf
Y2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxU
Pih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBf
KSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBz
dGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwg
c3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0
aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNf
Y2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGlj
X2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNfY2Fz
dDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY0Ml8pLCBzdGF0aWNfY2FzdDxUPih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4odjQ0XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHY0NV8pLCBzdGF0aWNfY2FzdDxUPih2NDZfKSwgc3RhdGljX2Nh
c3Q8VD4odjQ3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0OF8pLCBzdGF0aWNfY2FzdDxU
Pih2NDlfKSwgc3RhdGljX2Nhc3Q8VD4odjUwXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJh
eSk7CiAgIH0KIApAQCAtMjgyNiw3ICszMTQ4LDcgQEAgY2xhc3MgVmFsdWVBcnJheTUwIHsKICAg
Y29uc3QgVDUwIHY1MF87CiB9OwogCi0jaWYgR1RFU1RfSEFTX0NPTUJJTkUKKyMgaWYgR1RFU1Rf
SEFTX0NPTUJJTkUKIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBV
U0VSIENPREUuCiAvLwogLy8gR2VuZXJhdGVzIHZhbHVlcyBmcm9tIHRoZSBDYXJ0ZXNpYW4gcHJv
ZHVjdCBvZiB2YWx1ZXMgcHJvZHVjZWQKQEAgLTI4MzQsOSArMzE1Niw5IEBAIGNsYXNzIFZhbHVl
QXJyYXk1MCB7CiAvLwogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KIGNsYXNz
IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IyCi0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJ
bnRlcmZhY2U8IDo6c3RkOjp0dXBsZTxUMSwgVDI+ID4geworICAgIDogcHVibGljIFBhcmFtR2Vu
ZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMj4gPiB7CiAgcHVibGljOgot
ICB0eXBlZGVmIDo6c3RkOjp0dXBsZTxUMSwgVDI+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRl
c3Rpbmc6OnR1cGxlPFQxLCBUMj4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3IyKGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdl
bmVyYXRvcjxUMj4mIGcyKQpAQCAtMjg4Miw3ICszMjA0LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjIKICAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1U
eXBlPiogQ2xvbmUoKSBjb25zdCB7CiAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsK
ICAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJl
dHVybiAmY3VycmVudF92YWx1ZV87IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3Vy
cmVudCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVh
bCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90
aGVyKSBjb25zdCB7CiAgICAgICAvLyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3Vh
cmFudGVlcyB0aGF0IHRoZSBvdGhlcgogICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUg
dHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0LgpAQCAtMjkxNCw3ICszMjM2LDcgQEAgY2xhc3MgQ2Fy
dGVzaWFuUHJvZHVjdEdlbmVyYXRvcjIKIAogICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgp
IHsKICAgICAgIGlmICghQXRFbmQoKSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5
cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXyk7CisgICAgICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0
KG5ldyBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXykpOwogICAgIH0KICAgICBib29s
IEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0
aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAgLTI5MzYsNyArMzI1OCw3
IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IyCiAgICAgY29uc3QgdHlwZW5hbWUg
UGFyYW1HZW5lcmF0b3I8VDI+OjppdGVyYXRvciBiZWdpbjJfOwogICAgIGNvbnN0IHR5cGVuYW1l
IFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3IgZW5kMl87CiAgICAgdHlwZW5hbWUgUGFyYW1H
ZW5lcmF0b3I8VDI+OjppdGVyYXRvciBjdXJyZW50Ml87Ci0gICAgUGFyYW1UeXBlIGN1cnJlbnRf
dmFsdWVfOworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsKICAgfTsg
IC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IyOjpJdGVyYXRvcgogCiAgIC8vIE5v
IGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTI5NDksOSAr
MzI3MSw5IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IyCiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgogY2xhc3MgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjMKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpz
dGQ6OnR1cGxlPFQxLCBUMiwgVDM+ID4geworICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50
ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDM+ID4gewogIHB1YmxpYzoKLSAgdHlw
ZWRlZiA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMz4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVz
dGluZzo6dHVwbGU8VDEsIFQyLCBUMz4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RH
ZW5lcmF0b3IzKGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJh
bUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczKQpAQCAtMzAw
NSw3ICszMzI3LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjMKICAgICB2aXJ0
dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7CiAg
ICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBjb25z
dCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0K
KyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGN1
cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJh
bUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAvLyBI
YXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgog
ICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0
LgpAQCAtMzA0MSw3ICszMzYzLDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjMK
IAogICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKICAgICAgIGlmICghQXRFbmQoKSkK
LSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQy
XywgKmN1cnJlbnQzXyk7CisgICAgICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJhbVR5
cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXykpOwogICAgIH0KICAgICBib29s
IEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0
aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAgLTMwNjcsNyArMzM4OSw3
IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IzCiAgICAgY29uc3QgdHlwZW5hbWUg
UGFyYW1HZW5lcmF0b3I8VDM+OjppdGVyYXRvciBiZWdpbjNfOwogICAgIGNvbnN0IHR5cGVuYW1l
IFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3IgZW5kM187CiAgICAgdHlwZW5hbWUgUGFyYW1H
ZW5lcmF0b3I8VDM+OjppdGVyYXRvciBjdXJyZW50M187Ci0gICAgUGFyYW1UeXBlIGN1cnJlbnRf
dmFsdWVfOworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsKICAgfTsg
IC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IzOjpJdGVyYXRvcgogCiAgIC8vIE5v
IGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTMwODEsOSAr
MzQwMyw5IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IzCiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KIGNsYXNz
IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0Ci0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJ
bnRlcmZhY2U8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPiB7CisgICAgOiBwdWJsaWMg
UGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+
ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+IFBh
cmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiBQYXJh
bVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQoY29uc3QgUGFyYW1HZW5lcmF0
b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBh
cmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBAIC0zMTQ2LDcgKzM0NjgsNyBAQCBjbGFzcyBDYXJ0ZXNp
YW5Qcm9kdWN0R2VuZXJhdG9yNAogICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQ
YXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKICAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRo
aXMpOwogICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0
IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQorICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBl
KiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gY3VycmVudF92YWx1ZV8uZ2V0KCk7IH0KICAgICB2
aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBl
PiYgb3RoZXIpIGNvbnN0IHsKICAgICAgIC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRv
ciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCiAgICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUg
c2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCkBAIC0zMTg2LDggKzM1MDgsOCBAQCBjbGFz
cyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNAogCiAgICAgdm9pZCBDb21wdXRlQ3VycmVudFZh
bHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBh
cmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAotICAgICAgICAgICAg
KmN1cnJlbnQ0Xyk7CisgICAgICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJhbVR5cGUo
KmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKKyAgICAgICAgICAgICpjdXJyZW50
NF8pKTsKICAgICB9CiAgICAgYm9vbCBBdEVuZCgpIGNvbnN0IHsKICAgICAgIC8vIFdlIG11c3Qg
cmVwb3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2hlbiBlaXRoZXIgb2Yg
dGhlCkBAIC0zMjE3LDcgKzM1MzksNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9y
NAogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgYmVnaW40
XzsKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yIGVuZDRf
OwogICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgY3VycmVudDRfOwot
ICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKKyAgICBsaW5rZWRfcHRyPFBhcmFtVHlwZT4g
Y3VycmVudF92YWx1ZV87CiAgIH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9y
NDo6SXRlcmF0b3IKIAogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5z
dXBwb3J0ZWQuCkBAIC0zMjMyLDkgKzM1NTQsOSBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2Vu
ZXJhdG9yNAogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBU
MywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1PgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVy
YXRvcjUKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnR1cGxl
PFQxLCBUMiwgVDMsIFQ0LCBUNT4gPiB7CisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRl
cmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiA+IHsKICBwdWJsaWM6
Ci0gIHR5cGVkZWYgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gUGFyYW1UeXBlOwor
ICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiBQYXJhbVR5cGU7
CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjUoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+
JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPFQzPiYgZzMsCkBAIC0zMzA0LDcgKzM2MjYsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yNQogICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5
cGU+KiBDbG9uZSgpIGNvbnN0IHsKICAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwog
ICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0
dXJuICZjdXJyZW50X3ZhbHVlXzsgfQorICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJy
ZW50KCkgY29uc3QgeyByZXR1cm4gY3VycmVudF92YWx1ZV8uZ2V0KCk7IH0KICAgICB2aXJ0dWFs
IGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3Ro
ZXIpIGNvbnN0IHsKICAgICAgIC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFy
YW50ZWVzIHRoYXQgdGhlIG90aGVyCiAgICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0
eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCkBAIC0zMzQ4LDggKzM2NzAsOCBAQCBjbGFzcyBDYXJ0
ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNQogCiAgICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkg
ewogICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlw
ZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAotICAgICAgICAgICAgKmN1cnJl
bnQ0XywgKmN1cnJlbnQ1Xyk7CisgICAgICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJh
bVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKKyAgICAgICAgICAgICpj
dXJyZW50NF8sICpjdXJyZW50NV8pKTsKICAgICB9CiAgICAgYm9vbCBBdEVuZCgpIGNvbnN0IHsK
ICAgICAgIC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmFu
Z2Ugd2hlbiBlaXRoZXIgb2YgdGhlCkBAIC0zMzgzLDcgKzM3MDUsNyBAQCBjbGFzcyBDYXJ0ZXNp
YW5Qcm9kdWN0R2VuZXJhdG9yNQogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1
Pjo6aXRlcmF0b3IgYmVnaW41XzsKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxU
NT46Oml0ZXJhdG9yIGVuZDVfOwogICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRl
cmF0b3IgY3VycmVudDVfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKKyAgICBsaW5r
ZWRfcHRyPFBhcmFtVHlwZT4gY3VycmVudF92YWx1ZV87CiAgIH07ICAvLyBjbGFzcyBDYXJ0ZXNp
YW5Qcm9kdWN0R2VuZXJhdG9yNTo6SXRlcmF0b3IKIAogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAt
IGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC0zNDAwLDEwICszNzIyLDEwIEBAIGNsYXNz
IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgIHR5cGVu
YW1lIFQ2PgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjYKLSAgICA6IHB1YmxpYyBQ
YXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwK
KyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxU
MSwgVDIsIFQzLCBUNCwgVDUsCiAgICAgICAgIFQ2PiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYg
OjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+IFBhcmFtVHlwZTsKKyAgdHlwZWRl
ZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+IFBhcmFtVHlwZTsKIAog
ICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNihjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcx
LAogICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0
b3I8VDM+JiBnMywKQEAgLTM0ODEsNyArMzgwMyw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RH
ZW5lcmF0b3I2CiAgICAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4q
IENsb25lKCkgY29uc3QgewogICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAg
fQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4g
JmN1cnJlbnRfdmFsdWVfOyB9CisgICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQo
KSBjb25zdCB7IHJldHVybiBjdXJyZW50X3ZhbHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9v
bCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikg
Y29uc3QgewogICAgICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRl
ZXMgdGhhdCB0aGUgb3RoZXIKICAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUg
YW5kIHdlIGNhbiBkb3duY2FzdC4KQEAgLTM1MjksOCArMzg1MSw4IEBAIGNsYXNzIENhcnRlc2lh
blByb2R1Y3RHZW5lcmF0b3I2CiAKICAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAg
ICAgICBpZiAoIUF0RW5kKCkpCi0gICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpj
dXJyZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18sCi0gICAgICAgICAgICAqY3VycmVudDRf
LCAqY3VycmVudDVfLCAqY3VycmVudDZfKTsKKyAgICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQo
bmV3IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAorICAgICAg
ICAgICAgKmN1cnJlbnQ0XywgKmN1cnJlbnQ1XywgKmN1cnJlbnQ2XykpOwogICAgIH0KICAgICBi
b29sIEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3IgcGFz
dCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAgLTM1NjgsNyArMzg5
MCw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2CiAgICAgY29uc3QgdHlwZW5h
bWUgUGFyYW1HZW5lcmF0b3I8VDY+OjppdGVyYXRvciBiZWdpbjZfOwogICAgIGNvbnN0IHR5cGVu
YW1lIFBhcmFtR2VuZXJhdG9yPFQ2Pjo6aXRlcmF0b3IgZW5kNl87CiAgICAgdHlwZW5hbWUgUGFy
YW1HZW5lcmF0b3I8VDY+OjppdGVyYXRvciBjdXJyZW50Nl87Ci0gICAgUGFyYW1UeXBlIGN1cnJl
bnRfdmFsdWVfOworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsKICAg
fTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2OjpJdGVyYXRvcgogCiAgIC8v
IE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTM1ODYs
MTAgKzM5MDgsMTAgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjYKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlw
ZW5hbWUgVDUsCiAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3PgogY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjcKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwg
OjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCisgICAgOiBwdWJsaWMgUGFyYW1H
ZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwKICAgICAgICAgVDc+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6
OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PiBQYXJhbVR5cGU7CiAKICAgQ2FydGVz
aWFuUHJvZHVjdEdlbmVyYXRvcjcoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAg
IGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYg
ZzMsCkBAIC0zNjc1LDcgKzM5OTcsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9y
NwogICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgp
IGNvbnN0IHsKICAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwogICAgIH0KLSAgICB2
aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50
X3ZhbHVlXzsgfQorICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3Qg
eyByZXR1cm4gY3VycmVudF92YWx1ZV8uZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgRXF1YWxz
KGNvbnN0IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsK
ICAgICAgIC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQg
dGhlIG90aGVyCiAgICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBj
YW4gZG93bmNhc3QuCkBAIC0zNzI3LDggKzQwNDksOCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0
R2VuZXJhdG9yNwogCiAgICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYg
KCFBdEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFf
LCAqY3VycmVudDJfLCAqY3VycmVudDNfLAotICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1cnJl
bnQ1XywgKmN1cnJlbnQ2XywgKmN1cnJlbnQ3Xyk7CisgICAgICAgIGN1cnJlbnRfdmFsdWVfLnJl
c2V0KG5ldyBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKKyAg
ICAgICAgICAgICpjdXJyZW50NF8sICpjdXJyZW50NV8sICpjdXJyZW50Nl8sICpjdXJyZW50N18p
KTsKICAgICB9CiAgICAgYm9vbCBBdEVuZCgpIGNvbnN0IHsKICAgICAgIC8vIFdlIG11c3QgcmVw
b3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2hlbiBlaXRoZXIgb2YgdGhl
CkBAIC0zNzcwLDcgKzQwOTIsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNwog
ICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ3Pjo6aXRlcmF0b3IgYmVnaW43XzsK
ICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNz46Oml0ZXJhdG9yIGVuZDdfOwog
ICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ3Pjo6aXRlcmF0b3IgY3VycmVudDdfOwotICAg
IFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKKyAgICBsaW5rZWRfcHRyPFBhcmFtVHlwZT4gY3Vy
cmVudF92YWx1ZV87CiAgIH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNzo6
SXRlcmF0b3IKIAogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBw
b3J0ZWQuCkBAIC0zNzg5LDEwICs0MTExLDEwIEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3I3CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywg
dHlwZW5hbWUgVDg+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOAotICAgIDogcHVi
bGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5n
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAogICAgICAgICBUNywgVDg+ID4gewogIHB1
YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4PiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNywgVDg+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJh
dG9yOChjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKQEAgLTM4ODgsNyAr
NDIxMCw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4CiAgICAgdmlydHVhbCBQ
YXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3QgewogICAgICAg
cmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwgY29uc3QgUGFy
YW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9CisgICAg
dmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiBjdXJyZW50
X3ZhbHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVy
YXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAgICAgLy8gSGF2aW5n
IHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKICAgICAg
IC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KQEAg
LTM5NDQsOCArNDI2Niw4IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4CiAKICAg
ICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkpCi0gICAg
ICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8sICpj
dXJyZW50M18sCi0gICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVudDVfLCAqY3VycmVudDZf
LCAqY3VycmVudDdfLCAqY3VycmVudDhfKTsKKyAgICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQo
bmV3IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAorICAgICAg
ICAgICAgKmN1cnJlbnQ0XywgKmN1cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1cnJlbnQ3XywgKmN1
cnJlbnQ4XykpOwogICAgIH0KICAgICBib29sIEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2Ug
bXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhl
ciBvZiB0aGUKQEAgLTM5OTEsNyArNDMxMyw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3I4CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDg+OjppdGVyYXRvciBi
ZWdpbjhfOwogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ4Pjo6aXRlcmF0b3Ig
ZW5kOF87CiAgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDg+OjppdGVyYXRvciBjdXJyZW50
OF87Ci0gICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFsdWVfOworICAgIGxpbmtlZF9wdHI8UGFyYW1U
eXBlPiBjdXJyZW50X3ZhbHVlXzsKICAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3I4OjpJdGVyYXRvcgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBp
cyB1bnN1cHBvcnRlZC4KQEAgLTQwMTEsMTAgKzQzMzMsMTAgQEAgY2xhc3MgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjgKIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVu
YW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgdHlwZW5hbWUgVDYsIHR5cGVu
YW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDk+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0
R2VuZXJhdG9yOQotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRv
ckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAogICAg
ICAgICBUNywgVDgsIFQ5PiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6
OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+IFBhcmFt
VHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOShjb25zdCBQYXJhbUdlbmVyYXRv
cjxUMT4mIGcxLAogICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwgY29uc3QgUGFy
YW1HZW5lcmF0b3I8VDM+JiBnMywKQEAgLTQxMTcsNyArNDQzOSw3IEBAIGNsYXNzIENhcnRlc2lh
blByb2R1Y3RHZW5lcmF0b3I5CiAgICAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBh
cmFtVHlwZT4qIENsb25lKCkgY29uc3QgewogICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhp
cyk7CiAgICAgfQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3Qg
eyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9CisgICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUq
IEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiBjdXJyZW50X3ZhbHVlXy5nZXQoKTsgfQogICAgIHZp
cnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+
JiBvdGhlcikgY29uc3QgewogICAgICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9y
IGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKICAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBz
YW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KQEAgLTQxNzcsOSArNDQ5OSw5IEBAIGNsYXNz
IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5CiAKICAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFs
dWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkpCi0gICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFy
YW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18sCisgICAgICAgIGN1cnJl
bnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1
cnJlbnQzXywKICAgICAgICAgICAgICpjdXJyZW50NF8sICpjdXJyZW50NV8sICpjdXJyZW50Nl8s
ICpjdXJyZW50N18sICpjdXJyZW50OF8sCi0gICAgICAgICAgICAqY3VycmVudDlfKTsKKyAgICAg
ICAgICAgICpjdXJyZW50OV8pKTsKICAgICB9CiAgICAgYm9vbCBBdEVuZCgpIGNvbnN0IHsKICAg
ICAgIC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2Ug
d2hlbiBlaXRoZXIgb2YgdGhlCkBAIC00MjI5LDcgKzQ1NTEsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Q
cm9kdWN0R2VuZXJhdG9yOQogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ5Pjo6
aXRlcmF0b3IgYmVnaW45XzsKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOT46
Oml0ZXJhdG9yIGVuZDlfOwogICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ5Pjo6aXRlcmF0
b3IgY3VycmVudDlfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKKyAgICBsaW5rZWRf
cHRyPFBhcmFtVHlwZT4gY3VycmVudF92YWx1ZV87CiAgIH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Q
cm9kdWN0R2VuZXJhdG9yOTo6SXRlcmF0b3IKIAogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFz
c2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC00MjUwLDEwICs0NTcyLDEwIEBAIGNsYXNzIENh
cnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgIHR5cGVuYW1l
IFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTA+
CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMTAKLSAgICA6IHB1YmxpYyBQYXJhbUdl
bmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCisg
ICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNiwKICAgICAgICAgVDcsIFQ4LCBUOSwgVDEwPiA+IHsKICBwdWJs
aWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMD4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwPiBQYXJhbVR5cGU7CiAKICAgQ2FydGVz
aWFuUHJvZHVjdEdlbmVyYXRvcjEwKGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAg
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4m
IGczLApAQCAtNDM2NCw3ICs0Njg2LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjEwCiAgICAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25l
KCkgY29uc3QgewogICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAg
IHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJl
bnRfdmFsdWVfOyB9CisgICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25z
dCB7IHJldHVybiBjdXJyZW50X3ZhbHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVh
bHMoY29uc3QgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3Qg
ewogICAgICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhh
dCB0aGUgb3RoZXIKICAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdl
IGNhbiBkb3duY2FzdC4KQEAgLTQ0MjgsOSArNDc1MCw5IEBAIGNsYXNzIENhcnRlc2lhblByb2R1
Y3RHZW5lcmF0b3IxMAogCiAgICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAg
aWYgKCFBdEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVu
dDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAorICAgICAgICBjdXJyZW50X3ZhbHVlXy5yZXNl
dChuZXcgUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18sCiAgICAg
ICAgICAgICAqY3VycmVudDRfLCAqY3VycmVudDVfLCAqY3VycmVudDZfLCAqY3VycmVudDdfLCAq
Y3VycmVudDhfLAotICAgICAgICAgICAgKmN1cnJlbnQ5XywgKmN1cnJlbnQxMF8pOworICAgICAg
ICAgICAgKmN1cnJlbnQ5XywgKmN1cnJlbnQxMF8pKTsKICAgICB9CiAgICAgYm9vbCBBdEVuZCgp
IGNvbnN0IHsKICAgICAgIC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBv
ZiB0aGUgcmFuZ2Ugd2hlbiBlaXRoZXIgb2YgdGhlCkBAIC00NDg0LDcgKzQ4MDYsNyBAQCBjbGFz
cyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMTAKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdl
bmVyYXRvcjxUMTA+OjppdGVyYXRvciBiZWdpbjEwXzsKICAgICBjb25zdCB0eXBlbmFtZSBQYXJh
bUdlbmVyYXRvcjxUMTA+OjppdGVyYXRvciBlbmQxMF87CiAgICAgdHlwZW5hbWUgUGFyYW1HZW5l
cmF0b3I8VDEwPjo6aXRlcmF0b3IgY3VycmVudDEwXzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92
YWx1ZV87CisgICAgbGlua2VkX3B0cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAg
Ly8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjEwOjpJdGVyYXRvcgogCiAgIC8vIE5v
IGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTQ1MTUsOCAr
NDgzNyw4IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXIyIHsKIENhcnRlc2lhblByb2R1
Y3RIb2xkZXIyKGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMikKICAg
ICAgIDogZzFfKGcxKSwgZzJfKGcyKSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMj4g
PigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwg
VDI+ID4oCisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBU
Mj4gPigpIGNvbnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVw
bGU8VDEsIFQyPiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjI8VDEs
IFQyPigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKICAg
ICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSkpOwpAQCAtNDUzNyw4
ICs0ODU5LDggQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjMoY29uc3QgR2VuZXJhdG9yMSYgZzEs
IGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICAgIGNvbnN0IEdlbmVyYXRvcjMmIGczKQogICAgICAg
OiBnMV8oZzEpLCBnMl8oZzIpLCBnM18oZzMpIHt9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpz
dGQ6OnR1cGxlPFQxLCBUMiwgVDM+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJh
dG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMz4gPigKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMz4gPigpIGNvbnN0IHsKKyAgICByZXR1cm4g
UGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMz4gPigKICAgICAgICAg
bmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IzPFQxLCBUMiwgVDM+KAogICAgICAgICBzdGF0
aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQ
YXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pLApAQCAtNDU2Miw4ICs0ODg0LDggQEAgQ2FydGVzaWFu
UHJvZHVjdEhvbGRlcjQoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcy
LAogICAgIGNvbnN0IEdlbmVyYXRvcjMmIGczLCBjb25zdCBHZW5lcmF0b3I0JiBnNCkKICAgICAg
IDogZzFfKGcxKSwgZzJfKGcyKSwgZzNfKGczKSwgZzRfKGc0KSB7fQogICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci0gIG9wZXJh
dG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+ID4oKSBjb25z
dCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywg
VDQ+ID4oCisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBU
MiwgVDMsIFQ0PiA+KCkgY29uc3QgeworICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0
aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1
Y3RHZW5lcmF0b3I0PFQxLCBUMiwgVDMsIFQ0PigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1H
ZW5lcmF0b3I8VDE+ID4oZzFfKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8
VDI+ID4oZzJfKSwKQEAgLTQ1ODksOCArNDkxMSw4IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXI1
KGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKICAgICBjb25zdCBH
ZW5lcmF0b3IzJiBnMywgY29uc3QgR2VuZXJhdG9yNCYgZzQsIGNvbnN0IEdlbmVyYXRvcjUmIGc1
KQogICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBnM18oZzMpLCBnNF8oZzQpLCBnNV8oZzUpIHt9
CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUNCwgdHlwZW5hbWUgVDU+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdl
bmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gPigKKyAgb3BlcmF0b3Ig
UGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiA+KCkg
Y29uc3QgeworICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwg
VDIsIFQzLCBUNCwgVDU+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9y
NTxUMSwgVDIsIFQzLCBUNCwgVDU+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRv
cjxUMT4gPihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4gPihn
Ml8pLApAQCAtNDYyMCw4ICs0OTQyLDggQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjYoY29uc3Qg
R2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICAgICAgOiBnMV8oZzEpLCBn
Ml8oZzIpLCBnM18oZzMpLCBnNF8oZzQpLCBnNV8oZzUpLCBnNl8oZzYpIHt9CiAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlw
ZW5hbWUgVDUsCiAgICAgICB0eXBlbmFtZSBUNj4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8
IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiA+KCkgY29uc3QgewotICAgIHJl
dHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+
ID4oCisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDY+ID4oKSBjb25zdCB7CisgICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6
OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+ID4oCiAgICAgICAgIG5ldyBD
YXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PigKICAgICAg
ICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKICAgICAgICAgc3RhdGlj
X2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwKQEAgLTQ2NTMsOSArNDk3NSw5IEBAIENh
cnRlc2lhblByb2R1Y3RIb2xkZXI3KGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0
b3IyJiBnMiwKICAgICAgIDogZzFfKGcxKSwgZzJfKGcyKSwgZzNfKGczKSwgZzRfKGc0KSwgZzVf
KGc1KSwgZzZfKGc2KSwgZzdfKGc3KSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgICAgdHlw
ZW5hbWUgVDYsIHR5cGVuYW1lIFQ3PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6
OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9y
PCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCiAgICAgICBUNz4gPigp
IGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIs
IFQzLCBUNCwgVDUsIFQ2LCBUNz4gPigKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVz
dGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+ID4oCiAgICAgICAgIG5ldyBD
YXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4oCiAg
ICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcxXyksCiAgICAgICAgIHN0
YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyksCkBAIC00NjkxLDkgKzUwMTMsOSBA
QCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyOChjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2Vu
ZXJhdG9yMiYgZzIsCiAgICAgICAgICAgZzhfKGc4KSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAog
ICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOD4KLSAgb3BlcmF0b3Ig
UGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywK
KyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwgVDcsCiAgICAgICBUOD4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1H
ZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+ID4o
CisgICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOD4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3I4PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4oCiAgICAgICAgIHN0YXRpY19j
YXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcxXyksCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFt
R2VuZXJhdG9yPFQyPiA+KGcyXyksCkBAIC00NzMyLDkgKzUwNTQsOSBAQCBDYXJ0ZXNpYW5Qcm9k
dWN0SG9sZGVyOShjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAg
ICAgICAgICAgZzlfKGc5KSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgICAgdHlwZW5hbWUg
VDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDk+Ci0gIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LAorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsCiAgICAgICBUOT4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4g
UGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywg
VDgsCisgICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwKICAgICAgICAgVDk+ID4oCiAgICAgICAgIG5ldyBDYXJ0
ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
PigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKQEAgLTQ3
NzYsMTAgKzUwOTgsMTAgQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjEwKGNvbnN0IEdlbmVyYXRv
cjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKICAgICAgICAgICBnOV8oZzkpLCBnMTBfKGcx
MCkge30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMs
IHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBU
NywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTA+Ci0gIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LAotICAgICAgVDksIFQxMD4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8
IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsCi0gICAgICAgIFQ5
LCBUMTA+ID4oCisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksCisgICAgICBUMTA+ID4oKSBjb25zdCB7
CisgICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksCisgICAgICAgIFQxMD4gPigKICAgICAgICAgbmV3IENh
cnRlc2lhblByb2R1Y3RHZW5lcmF0b3IxMDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LAogICAgICAgICAgICAgVDEwPigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0
b3I8VDE+ID4oZzFfKSwKQEAgLTQ4MTAsMTEgKzUxMzIsOSBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9s
ZGVyMTAoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICBjb25z
dCBHZW5lcmF0b3IxMCBnMTBfOwogfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXIx
MAogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCisjIGVuZGlmICAvLyBHVEVTVF9IQVNf
Q09NQklORQogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0
aW5nCiAKLSNlbmRpZiAgLy8gIEdURVNUX0hBU19QQVJBTV9URVNUCi0KICNlbmRpZiAgLy8gR1RF
U1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0dFTkVSQVRFRF9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oLnB1bXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgu
cHVtcAppbmRleCBiYWVkZmJjMmQ3ZTgzNDFiNWI1NTlkOWNlMzNiOGQ4NzQ1M2RlZDQyLi5hZThj
NTdiNTJiYTFmNzg1OTFjNTNhNTkyOTgzNjk0NzQxNjY4YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwt
Z2VuZXJhdGVkLmgucHVtcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcApAQCAtMjksOCAr
MjksNyBAQCAkdmFyIG1heHR1cGxlID0gMTAgICQkIE1heGltdW0gbnVtYmVyIG9mIENvbWJpbmUg
YXJndW1lbnRzIHdlIHdhbnQgdG8gc3VwcG9ydC4KIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZs
YWQgTG9zZXYpCisKIAogLy8gVHlwZSBhbmQgZnVuY3Rpb24gdXRpbGl0aWVzIGZvciBpbXBsZW1l
bnRpbmcgcGFyYW1ldGVyaXplZCB0ZXN0cy4KIC8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkg
YSBTQ1JJUFQuICBETyBOT1QgRURJVCBCWSBIQU5EIQpAQCAtMzksMTkgKzM4LDE2IEBAICR2YXIg
bWF4dHVwbGUgPSAxMCAgJCQgTWF4aW11bSBudW1iZXIgb2YgQ29tYmluZSBhcmd1bWVudHMgd2Ug
d2FudCB0byBzdXBwb3J0LgogLy8gYW5kIGF0IG1vc3QgJG1heHR1cGxlIGFyZ3VtZW50cyBpbiBD
b21iaW5lLiBQbGVhc2UgY29udGFjdAogLy8gZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91
cHMuY29tIGlmIHlvdSBuZWVkIG1vcmUuCiAvLyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBudW1iZXIg
b2YgYXJndW1lbnRzIHRvIENvbWJpbmUgaXMgbGltaXRlZAotLy8gYnkgdGhlIG1heGltdW0gYXJp
dHkgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRyMTo6dHVwbGUgd2hpY2ggaXMKKy8vIGJ5IHRo
ZSBtYXhpbXVtIGFyaXR5IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0dXBsZSB3aGljaCBpcwog
Ly8gY3VycmVudGx5IHNldCBhdCAkbWF4dHVwbGUuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERP
IE5PVCBERUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNU
X1BBUkFNX1VUSUxfR0VORVJBVEVEX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5U
RVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFURURfSF8KIAotLy8gc2NyaXB0cy9mdXNlX2d0
ZXN0LnB5IGRlcGVuZHMgb24gZ3Rlc3QncyBvd24gaGVhZGVyIGJlaW5nICNpbmNsdWRlZAotLy8g
KnVuY29uZGl0aW9uYWxseSouICBUaGVyZWZvcmUgdGhlc2UgI2luY2x1ZGVzIGNhbm5vdCBiZSBt
b3ZlZAotLy8gaW5zaWRlICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVC4KLSNpbmNsdWRlIDxndGVz
dC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtcG9ydC5oPgotCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKKyNpbmNsdWRlICJndGVz
dC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtcG9ydC5oIgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKQEAgLTU5LDggKzU1LDggQEAg
bmFtZXNwYWNlIHRlc3RpbmcgewogLy8gaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0Lmgu
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yPgogaW50ZXJuYWw6OlBhcmFtR2Vu
ZXJhdG9yPAotICAgIHR5cGVuYW1lIDo6c3RkOjppdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXJh
dG9yPjo6dmFsdWVfdHlwZT4gVmFsdWVzSW4oCi0gICAgICAgIEZvcndhcmRJdGVyYXRvciBiZWdp
biwgRm9yd2FyZEl0ZXJhdG9yIGVuZCk7CisgIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6
Okl0ZXJhdG9yVHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+CitWYWx1ZXNJbihG
b3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJdGVyYXRvciBlbmQpOwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgc2l6ZV90IE4+CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8VD4gVmFsdWVz
SW4oY29uc3QgVCAoJmFycmF5KVtOXSk7CkBAIC03MiwzMyArNjgsMTggQEAgaW50ZXJuYWw6OlBh
cmFtR2VuZXJhdG9yPHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZT4gVmFsdWVzSW4oCiBu
YW1lc3BhY2UgaW50ZXJuYWwgewogCiAvLyBVc2VkIGluIHRoZSBWYWx1ZXMoKSBmdW5jdGlvbiB0
byBwcm92aWRlIHBvbHltb3JwaGljIGNhcGFiaWxpdGllcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
MT4KLWNsYXNzIFZhbHVlQXJyYXkxIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFZhbHVlQXJyYXkx
KFQxIHYxKSA6IHYxXyh2MSkge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0
b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7IHJldHVybiBWYWx1ZXNJbigmdjFfLCAmdjFf
ICsgMSk7IH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVu
dCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTEmIG90
aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci19OwotCi0kcmFuZ2UgaSAyLi5uCiskcmFuZ2UgaSAx
Li5uCiAkZm9yIGkgW1sKICRyYW5nZSBqIDEuLmkKIAogdGVtcGxhdGUgPCRmb3IgaiwgW1t0eXBl
bmFtZSBUJGpdXT4KIGNsYXNzIFZhbHVlQXJyYXkkaSB7CiAgcHVibGljOgotICBWYWx1ZUFycmF5
JGkoJGZvciBqLCBbW1QkaiB2JGpdXSkgOiAkZm9yIGosIFtbdiQoailfKHYkaildXSB7fQorICAk
aWYgaT09MSBbW2V4cGxpY2l0IF1dVmFsdWVBcnJheSRpKCRmb3IgaiwgW1tUJGogdiRqXV0pIDog
JGZvciBqLCBbW3YkKGopXyh2JGopXV0ge30KIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAg
b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtd
ID0geyRmb3IgaiwgW1t2JChqKV9dXX07CisgICAgY29uc3QgVCBhcnJheVtdID0geyRmb3Igaiwg
W1tzdGF0aWNfY2FzdDxUPih2JChqKV8pXV19OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7
CiAgIH0KIApAQCAtMTE1LDcgKzk2LDcgQEAgJGZvciBqIFtbCiAKIF1dCiAKLSNpZiBHVEVTVF9I
QVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNfQ09NQklORQogLy8gSU5URVJOQUwgSU1QTEVNRU5U
QVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KIC8vCiAvLyBHZW5lcmF0ZXMgdmFsdWVz
IGZyb20gdGhlIENhcnRlc2lhbiBwcm9kdWN0IG9mIHZhbHVlcyBwcm9kdWNlZApAQCAtMTI4LDkg
KzEwOSw5IEBAICRyYW5nZSBrIDIuLmkKIAogdGVtcGxhdGUgPCRmb3IgaiwgW1t0eXBlbmFtZSBU
JGpdXT4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IkaQotICAgIDogcHVibGljIFBh
cmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+
ID4geworICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1
cGxlPCRmb3IgaiwgW1tUJGpdXT4gPiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0cjE6
OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6
dHVwbGU8JGZvciBqLCBbW1Qkal1dPiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdl
bmVyYXRvciRpKCRmb3IgaiwgW1tjb25zdCBQYXJhbUdlbmVyYXRvcjxUJGo+JiBnJGpdXSkKICAg
ICAgIDogJGZvciBqLCBbW2ckKGopXyhnJGopXV0ge30KQEAgLTE4MCw3ICsxNjEsNyBAQCAkZm9y
IGsgW1sKICAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xv
bmUoKSBjb25zdCB7CiAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0g
ICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3Vy
cmVudF92YWx1ZV87IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNv
bnN0IHsgcmV0dXJuIGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVx
dWFscyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25z
dCB7CiAgICAgICAvLyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0
aGF0IHRoZSBvdGhlcgogICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQg
d2UgY2FuIGRvd25jYXN0LgpAQCAtMjEyLDcgKzE5Myw3IEBAICRmb3IgayBbWwogCiAgICAgdm9p
ZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBj
dXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgkZm9yIGosIFtbKmN1cnJlbnQkKGopX11dKTsKKyAg
ICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgkZm9yIGosIFtbKmN1cnJl
bnQkKGopX11dKSk7CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAvLyBX
ZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0
aGVyIG9mIHRoZQpAQCAtMjM3LDcgKzIxOCw3IEBAICRmb3IgaiBbWwogICAgIHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQkaj46Oml0ZXJhdG9yIGN1cnJlbnQkKGopXzsKIF1dCiAKLSAgICBQYXJh
bVR5cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0cjxQYXJhbVR5cGU+IGN1cnJlbnRf
dmFsdWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpOjpJdGVy
YXRvcgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRl
ZC4KQEAgLTI2OSw4ICsyNTAsOCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyJGkgewog
Q2FydGVzaWFuUHJvZHVjdEhvbGRlciRpKCRmb3IgaiwgW1tjb25zdCBHZW5lcmF0b3IkaiYgZyRq
XV0pCiAgICAgICA6ICRmb3IgaiwgW1tnJChqKV8oZyRqKV1dIHt9CiAgIHRlbXBsYXRlIDwkZm9y
IGosIFtbdHlwZW5hbWUgVCRqXV0+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6
dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFt
R2VuZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4oCisgIG9wZXJh
dG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4gPigp
IGNvbnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8JGZv
ciBqLCBbW1Qkal1dPiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRp
PCRmb3IgaiwgW1tUJGpdXT4oCiAkZm9yIGosW1sKIApAQCAtMjkxLDExICsyNzIsOSBAQCAkZm9y
IGogW1sKIAogXV0KIAotI2VuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQorIyBlbmRpZiAgLy8g
R1RFU1RfSEFTX0NPTUJJTkUKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1l
c3BhY2UgdGVzdGluZwogCi0jZW5kaWYgIC8vICBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCiAjZW5k
aWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5F
UkFURURfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgKaW5kZXggMGNiYjU4YzIx
YjdiODljZDQ4YThkMWM1Y2I1MjBmMzExMzc0Y2RlMi4uZDY0ZjYyMGM0YzY3NDM0NjczYzBhNjFl
MjM5NjBiNjE1YzM0ZTc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgKQEAg
LTI2LDI4ICsyNiw0OSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKwog
CiAvLyBUeXBlIGFuZCBmdW5jdGlvbiB1dGlsaXRpZXMgZm9yIGltcGxlbWVudGluZyBwYXJhbWV0
ZXJpemVkIHRlc3RzLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNp
Zm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0hfCiAj
ZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9IXwog
CisjaW5jbHVkZSA8Y3R5cGUuaD4KKwogI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPHNl
dD4KICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotLy8gc2NyaXB0cy9m
dXNlX2d0ZXN0LnB5IGRlcGVuZHMgb24gZ3Rlc3QncyBvd24gaGVhZGVyIGJlaW5nICNpbmNsdWRl
ZAotLy8gKnVuY29uZGl0aW9uYWxseSouICBUaGVyZWZvcmUgdGhlc2UgI2luY2x1ZGVzIGNhbm5v
dCBiZSBtb3ZlZAotLy8gaW5zaWRlICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVC4KLSNpbmNsdWRl
IDxndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVy
bmFsL2d0ZXN0LWxpbmtlZF9wdHIuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1w
b3J0Lmg+Ci0KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAorI2luY2x1ZGUgImd0ZXN0L2ludGVy
bmFsL2d0ZXN0LWludGVybmFsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlu
a2VkX3B0ci5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC1wcmludGVycy5oIgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CisKKy8v
IElucHV0IHRvIGEgcGFyYW1ldGVyaXplZCB0ZXN0IG5hbWUgZ2VuZXJhdG9yLCBkZXNjcmliaW5n
IGEgdGVzdCBwYXJhbWV0ZXIuCisvLyBDb25zaXN0cyBvZiB0aGUgcGFyYW1ldGVyIHZhbHVlIGFu
ZCB0aGUgaW50ZWdlciBwYXJhbWV0ZXIgaW5kZXguCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBl
Pgorc3RydWN0IFRlc3RQYXJhbUluZm8geworICBUZXN0UGFyYW1JbmZvKGNvbnN0IFBhcmFtVHlw
ZSYgYV9wYXJhbSwgc2l6ZV90IGFuX2luZGV4KSA6CisgICAgcGFyYW0oYV9wYXJhbSksCisgICAg
aW5kZXgoYW5faW5kZXgpIHt9CisgIFBhcmFtVHlwZSBwYXJhbTsKKyAgc2l6ZV90IGluZGV4Owor
fTsKKworLy8gQSBidWlsdGluIHBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lIGdlbmVyYXRvciB3aGlj
aCByZXR1cm5zIHRoZSByZXN1bHQgb2YKKy8vIHRlc3Rpbmc6OlByaW50VG9TdHJpbmcuCitzdHJ1
Y3QgUHJpbnRUb1N0cmluZ1BhcmFtTmFtZSB7CisgIHRlbXBsYXRlIDxjbGFzcyBQYXJhbVR5cGU+
CisgIHN0ZDo6c3RyaW5nIG9wZXJhdG9yKCkoY29uc3QgVGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+
JiBpbmZvKSBjb25zdCB7CisgICAgcmV0dXJuIFByaW50VG9TdHJpbmcoaW5mby5wYXJhbSk7Cisg
IH0KK307CisKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIC8vIElOVEVSTkFMIElNUExFTUVOVEFU
SU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCkBAIC01Nyw3ICs3OCw3IEBAIG5hbWVzcGFj
ZSBpbnRlcm5hbCB7CiAvLyBURVNUX1AgbWFjcm8gaXMgdXNlZCB0byBkZWZpbmUgdHdvIHRlc3Rz
IHdpdGggdGhlIHNhbWUgbmFtZQogLy8gYnV0IGluIGRpZmZlcmVudCBuYW1lc3BhY2VzLgogR1RF
U1RfQVBJXyB2b2lkIFJlcG9ydEludmFsaWRUZXN0Q2FzZVR5cGUoY29uc3QgY2hhciogdGVzdF9j
YXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbik7CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZT4gY2xhc3MgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U7CiB0ZW1wbGF0ZSA8dHlwZW5hbWU+
IGNsYXNzIFBhcmFtR2VuZXJhdG9yOwpAQCAtMTcxLDcgKzE5Miw3IEBAIGNsYXNzIFBhcmFtR2Vu
ZXJhdG9yIHsKICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoaW1wbF8t
PkVuZCgpKTsgfQogCiAgcHJpdmF0ZToKLSAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0
cjxjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiA+IGltcGxfOworICBsaW5rZWRfcHRy
PGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+ID4gaW1wbF87CiB9OwogCiAvLyBHZW5l
cmF0ZXMgdmFsdWVzIGZyb20gYSByYW5nZSBvZiB0d28gY29tcGFyYWJsZSB2YWx1ZXMuIENhbiBi
ZSB1c2VkIHRvCkBAIC0yMDUsNyArMjI2LDcgQEAgY2xhc3MgUmFuZ2VHZW5lcmF0b3IgOiBwdWJs
aWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4gewogICAgICAgcmV0dXJuIGJhc2VfOwogICAg
IH0KICAgICB2aXJ0dWFsIHZvaWQgQWR2YW5jZSgpIHsKLSAgICAgIHZhbHVlXyA9IHZhbHVlXyAr
IHN0ZXBfOworICAgICAgdmFsdWVfID0gc3RhdGljX2Nhc3Q8VD4odmFsdWVfICsgc3RlcF8pOwog
ICAgICAgaW5kZXhfKys7CiAgICAgfQogICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFj
ZTxUPiogQ2xvbmUoKSBjb25zdCB7CkBAIC0yNDIsNyArMjYzLDcgQEAgY2xhc3MgUmFuZ2VHZW5l
cmF0b3IgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4gewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFQmIGVuZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBJbmNyZW1lbnRUJiBzdGVwKSB7CiAgICAgaW50IGVuZF9pbmRleCA9IDA7
Ci0gICAgZm9yIChUIGkgPSBiZWdpbjsgaSA8IGVuZDsgaSA9IGkgKyBzdGVwKQorICAgIGZvciAo
VCBpID0gYmVnaW47IGkgPCBlbmQ7IGkgPSBzdGF0aWNfY2FzdDxUPihpICsgc3RlcCkpCiAgICAg
ICBlbmRfaW5kZXgrKzsKICAgICByZXR1cm4gZW5kX2luZGV4OwogICB9CkBAIC0yODUsNyArMzA2
LDcgQEAgY2xhc3MgVmFsdWVzSW5JdGVyYXRvclJhbmdlR2VuZXJhdG9yIDogcHVibGljIFBhcmFt
R2VuZXJhdG9ySW50ZXJmYWNlPFQ+IHsKICAgIHB1YmxpYzoKICAgICBJdGVyYXRvcihjb25zdCBQ
YXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiogYmFzZSwKICAgICAgICAgICAgICB0eXBlbmFtZSBD
b250YWluZXJUeXBlOjpjb25zdF9pdGVyYXRvciBpdGVyYXRvcikKLSAgICAgICAgOiAgYmFzZV8o
YmFzZSksIGl0ZXJhdG9yXyhpdGVyYXRvcikge30KKyAgICAgICAgOiBiYXNlXyhiYXNlKSwgaXRl
cmF0b3JfKGl0ZXJhdG9yKSB7fQogICAgIHZpcnR1YWwgfkl0ZXJhdG9yKCkge30KIAogICAgIHZp
cnR1YWwgY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4qIEJhc2VHZW5lcmF0b3IoKSBj
b25zdCB7CkBAIC0zNDQsNiArMzY1LDM3IEBAIGNsYXNzIFZhbHVlc0luSXRlcmF0b3JSYW5nZUdl
bmVyYXRvciA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiB7CiAgIGNvbnN0IENv
bnRhaW5lclR5cGUgY29udGFpbmVyXzsKIH07ICAvLyBjbGFzcyBWYWx1ZXNJbkl0ZXJhdG9yUmFu
Z2VHZW5lcmF0b3IKIAorLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElO
IFVTRVIgQ09ERS4KKy8vCisvLyBEZWZhdWx0IHBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lIGdlbmVy
YXRvciwgcmV0dXJucyBhIHN0cmluZyBjb250YWluaW5nIHRoZQorLy8gaW50ZWdlciB0ZXN0IHBh
cmFtZXRlciBpbmRleC4KK3RlbXBsYXRlIDxjbGFzcyBQYXJhbVR5cGU+CitzdGQ6OnN0cmluZyBE
ZWZhdWx0UGFyYW1OYW1lKGNvbnN0IFRlc3RQYXJhbUluZm88UGFyYW1UeXBlPiYgaW5mbykgewor
ICBNZXNzYWdlIG5hbWVfc3RyZWFtOworICBuYW1lX3N0cmVhbSA8PCBpbmZvLmluZGV4OworICBy
ZXR1cm4gbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCk7Cit9CisKKy8vIElOVEVSTkFMIElNUExFTUVO
VEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCisvLworLy8gUGFyYW1ldGVyaXplZCB0
ZXN0IG5hbWUgb3ZlcmxvYWQgaGVscGVycywgd2hpY2ggaGVscCB0aGUKKy8vIElOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QIG1hY3JvIGNob29zZSBiZXR3ZWVuIHRoZSBkZWZhdWx0IHBhcmFtZXRlcml6
ZWQKKy8vIHRlc3QgbmFtZSBnZW5lcmF0b3IgYW5kIHVzZXIgcGFyYW0gbmFtZSBnZW5lcmF0b3Iu
Cit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlLCBjbGFzcyBQYXJhbU5hbWVHZW5GdW5jdG9yPgor
UGFyYW1OYW1lR2VuRnVuY3RvciBHZXRQYXJhbU5hbWVHZW4oUGFyYW1OYW1lR2VuRnVuY3RvciBm
dW5jKSB7CisgIHJldHVybiBmdW5jOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgor
c3RydWN0IFBhcmFtTmFtZUdlbkZ1bmMgeworICB0eXBlZGVmIHN0ZDo6c3RyaW5nIFR5cGUoY29u
c3QgVGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+Jik7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgUGFy
YW1UeXBlPgordHlwZW5hbWUgUGFyYW1OYW1lR2VuRnVuYzxQYXJhbVR5cGU+OjpUeXBlICpHZXRQ
YXJhbU5hbWVHZW4oKSB7CisgIHJldHVybiBEZWZhdWx0UGFyYW1OYW1lOworfQorCiAvLyBJTlRF
Uk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgogLy8KIC8vIFN0
b3JlcyBhIHBhcmFtZXRlciB2YWx1ZSBhbmQgbGF0ZXIgY3JlYXRlcyB0ZXN0cyBwYXJhbWV0ZXJp
emVkIHdpdGggdGhhdApAQCAtNDE2LDcgKzQ2OCw3IEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0
Q2FzZUluZm9CYXNlIHsKICAgdmlydHVhbCB+UGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2Uo
KSB7fQogCiAgIC8vIEJhc2UgcGFydCBvZiB0ZXN0IGNhc2UgbmFtZSBmb3IgZGlzcGxheSBwdXJw
b3Nlcy4KLSAgdmlydHVhbCBjb25zdCBTdHJpbmcmIEdldFRlc3RDYXNlTmFtZSgpIGNvbnN0ID0g
MDsKKyAgdmlydHVhbCBjb25zdCBzdGQ6OnN0cmluZyYgR2V0VGVzdENhc2VOYW1lKCkgY29uc3Qg
PSAwOwogICAvLyBUZXN0IGNhc2UgaWQgdG8gdmVyaWZ5IGlkZW50aXR5LgogICB2aXJ0dWFsIFR5
cGVJZCBHZXRUZXN0Q2FzZVR5cGVJZCgpIGNvbnN0ID0gMDsKICAgLy8gVW5pdFRlc3QgY2xhc3Mg
aW52b2tlcyB0aGlzIG1ldGhvZCB0byByZWdpc3RlciB0ZXN0cyBpbiB0aGlzCkBAIC00NDgsMTIg
KzUwMCwxNCBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvIDogcHVibGljIFBhcmFt
ZXRlcml6ZWRUZXN0Q2FzZUluZm9CYXNlIHsKICAgdHlwZWRlZiB0eXBlbmFtZSBUZXN0Q2FzZTo6
UGFyYW1UeXBlIFBhcmFtVHlwZTsKICAgLy8gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gaW5z
dGFuY2Ugb2YgYXBwcm9wcmlhdGUgZ2VuZXJhdG9yIHR5cGUuCiAgIHR5cGVkZWYgUGFyYW1HZW5l
cmF0b3I8UGFyYW1UeXBlPihHZW5lcmF0b3JDcmVhdGlvbkZ1bmMpKCk7CisgIHR5cGVkZWYgdHlw
ZW5hbWUgUGFyYW1OYW1lR2VuRnVuYzxQYXJhbVR5cGU+OjpUeXBlIFBhcmFtTmFtZUdlbmVyYXRv
ckZ1bmM7CiAKLSAgZXhwbGljaXQgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbyhjb25zdCBjaGFy
KiBuYW1lKQotICAgICAgOiB0ZXN0X2Nhc2VfbmFtZV8obmFtZSkge30KKyAgZXhwbGljaXQgUGFy
YW1ldGVyaXplZFRlc3RDYXNlSW5mbygKKyAgICAgIGNvbnN0IGNoYXIqIG5hbWUsIENvZGVMb2Nh
dGlvbiBjb2RlX2xvY2F0aW9uKQorICAgICAgOiB0ZXN0X2Nhc2VfbmFtZV8obmFtZSksIGNvZGVf
bG9jYXRpb25fKGNvZGVfbG9jYXRpb24pIHt9CiAKICAgLy8gVGVzdCBjYXNlIGJhc2UgbmFtZSBm
b3IgZGlzcGxheSBwdXJwb3Nlcy4KLSAgdmlydHVhbCBjb25zdCBTdHJpbmcmIEdldFRlc3RDYXNl
TmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRlc3RfY2FzZV9uYW1lXzsgfQorICB2aXJ0dWFsIGNvbnN0
IHN0ZDo6c3RyaW5nJiBHZXRUZXN0Q2FzZU5hbWUoKSBjb25zdCB7IHJldHVybiB0ZXN0X2Nhc2Vf
bmFtZV87IH0KICAgLy8gVGVzdCBjYXNlIGlkIHRvIHZlcmlmeSBpZGVudGl0eS4KICAgdmlydHVh
bCBUeXBlSWQgR2V0VGVzdENhc2VUeXBlSWQoKSBjb25zdCB7IHJldHVybiBHZXRUeXBlSWQ8VGVz
dENhc2U+KCk7IH0KICAgLy8gVEVTVF9QIG1hY3JvIHVzZXMgQWRkVGVzdFBhdHRlcm4oKSB0byBy
ZWNvcmQgaW5mb3JtYXRpb24KQEAgLTQ3MSwxMSArNTI1LDEyIEBAIGNsYXNzIFBhcmFtZXRlcml6
ZWRUZXN0Q2FzZUluZm8gOiBwdWJsaWMgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2Ugewog
ICB9CiAgIC8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIG1hY3JvIHVzZXMgQWRkR2VuZXJhdG9y
KCkgdG8gcmVjb3JkIGluZm9ybWF0aW9uCiAgIC8vIGFib3V0IGEgZ2VuZXJhdG9yLgotICBpbnQg
QWRkVGVzdENhc2VJbnN0YW50aWF0aW9uKGNvbnN0IGNoYXIqIGluc3RhbnRpYXRpb25fbmFtZSwK
KyAgaW50IEFkZFRlc3RDYXNlSW5zdGFudGlhdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgaW5zdGFu
dGlhdGlvbl9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvckNy
ZWF0aW9uRnVuYyogZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiAvKiBmaWxlICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKiBs
aW5lICovKSB7Ci0gICAgaW5zdGFudGlhdGlvbnNfLnB1c2hfYmFjayg6OnN0ZDo6bWFrZV9wYWly
KGluc3RhbnRpYXRpb25fbmFtZSwgZnVuYykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhcmFtTmFtZUdlbmVyYXRvckZ1bmMqIG5hbWVfZnVuYywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSkgeworICAgIGluc3RhbnRp
YXRpb25zXy5wdXNoX2JhY2soCisgICAgICAgIEluc3RhbnRpYXRpb25JbmZvKGluc3RhbnRpYXRp
b25fbmFtZSwgZnVuYywgbmFtZV9mdW5jLCBmaWxlLCBsaW5lKSk7CiAgICAgcmV0dXJuIDA7ICAv
LyBSZXR1cm4gdmFsdWUgdXNlZCBvbmx5IHRvIHJ1biB0aGlzIG1ldGhvZCBpbiBuYW1lc3BhY2Ug
c2NvcGUuCiAgIH0KICAgLy8gVW5pdFRlc3QgY2xhc3MgaW52b2tlcyB0aGlzIG1ldGhvZCB0byBy
ZWdpc3RlciB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZQpAQCAtNDkwLDI2ICs1NDUsNDUgQEAgY2xh
c3MgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbyA6IHB1YmxpYyBQYXJhbWV0ZXJpemVkVGVzdENh
c2VJbmZvQmFzZSB7CiAgICAgICBmb3IgKHR5cGVuYW1lIEluc3RhbnRpYXRpb25Db250YWluZXI6
Oml0ZXJhdG9yIGdlbl9pdCA9CiAgICAgICAgICAgICAgICBpbnN0YW50aWF0aW9uc18uYmVnaW4o
KTsgZ2VuX2l0ICE9IGluc3RhbnRpYXRpb25zXy5lbmQoKTsKICAgICAgICAgICAgICAgICsrZ2Vu
X2l0KSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgaW5zdGFudGlhdGlvbl9uYW1lID0gZ2VuX2l0
LT5maXJzdDsKLSAgICAgICAgUGFyYW1HZW5lcmF0b3I8UGFyYW1UeXBlPiBnZW5lcmF0b3IoKCpn
ZW5faXQtPnNlY29uZCkoKSk7CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnN0YW50aWF0
aW9uX25hbWUgPSBnZW5faXQtPm5hbWU7CisgICAgICAgIFBhcmFtR2VuZXJhdG9yPFBhcmFtVHlw
ZT4gZ2VuZXJhdG9yKCgqZ2VuX2l0LT5nZW5lcmF0b3IpKCkpOworICAgICAgICBQYXJhbU5hbWVH
ZW5lcmF0b3JGdW5jKiBuYW1lX2Z1bmMgPSBnZW5faXQtPm5hbWVfZnVuYzsKKyAgICAgICAgY29u
c3QgY2hhciogZmlsZSA9IGdlbl9pdC0+ZmlsZTsKKyAgICAgICAgaW50IGxpbmUgPSBnZW5faXQt
PmxpbmU7CiAKLSAgICAgICAgTWVzc2FnZSB0ZXN0X2Nhc2VfbmFtZV9zdHJlYW07CisgICAgICAg
IHN0ZDo6c3RyaW5nIHRlc3RfY2FzZV9uYW1lOwogICAgICAgICBpZiAoICFpbnN0YW50aWF0aW9u
X25hbWUuZW1wdHkoKSApCi0gICAgICAgICAgdGVzdF9jYXNlX25hbWVfc3RyZWFtIDw8IGluc3Rh
bnRpYXRpb25fbmFtZS5jX3N0cigpIDw8ICIvIjsKLSAgICAgICAgdGVzdF9jYXNlX25hbWVfc3Ry
ZWFtIDw8IHRlc3RfaW5mby0+dGVzdF9jYXNlX2Jhc2VfbmFtZS5jX3N0cigpOworICAgICAgICAg
IHRlc3RfY2FzZV9uYW1lID0gaW5zdGFudGlhdGlvbl9uYW1lICsgIi8iOworICAgICAgICB0ZXN0
X2Nhc2VfbmFtZSArPSB0ZXN0X2luZm8tPnRlc3RfY2FzZV9iYXNlX25hbWU7CiAKLSAgICAgICAg
aW50IGkgPSAwOworICAgICAgICBzaXplX3QgaSA9IDA7CisgICAgICAgIHN0ZDo6c2V0PHN0ZDo6
c3RyaW5nPiB0ZXN0X3BhcmFtX25hbWVzOwogICAgICAgICBmb3IgKHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFBhcmFtVHlwZT46Oml0ZXJhdG9yIHBhcmFtX2l0ID0KICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLmJlZ2luKCk7CiAgICAgICAgICAgICAgcGFyYW1faXQgIT0gZ2VuZXJhdG9yLmVu
ZCgpOyArK3BhcmFtX2l0LCArK2kpIHsKICAgICAgICAgICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJl
YW07Ci0gICAgICAgICAgdGVzdF9uYW1lX3N0cmVhbSA8PCB0ZXN0X2luZm8tPnRlc3RfYmFzZV9u
YW1lLmNfc3RyKCkgPDwgIi8iIDw8IGk7Ci0gICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
TWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8oCi0gICAgICAgICAgICAgIHRlc3RfY2FzZV9uYW1lX3N0
cmVhbS5HZXRTdHJpbmcoKS5jX3N0cigpLAorCisgICAgICAgICAgc3RkOjpzdHJpbmcgcGFyYW1f
bmFtZSA9IG5hbWVfZnVuYygKKyAgICAgICAgICAgICAgVGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+
KCpwYXJhbV9pdCwgaSkpOworCisgICAgICAgICAgR1RFU1RfQ0hFQ0tfKElzVmFsaWRQYXJhbU5h
bWUocGFyYW1fbmFtZSkpCisgICAgICAgICAgICAgIDw8ICJQYXJhbWV0ZXJpemVkIHRlc3QgbmFt
ZSAnIiA8PCBwYXJhbV9uYW1lCisgICAgICAgICAgICAgIDw8ICInIGlzIGludmFsaWQsIGluICIg
PDwgZmlsZQorICAgICAgICAgICAgICA8PCAiIGxpbmUgIiA8PCBsaW5lIDw8IHN0ZDo6ZW5kbDsK
KworICAgICAgICAgIEdURVNUX0NIRUNLXyh0ZXN0X3BhcmFtX25hbWVzLmNvdW50KHBhcmFtX25h
bWUpID09IDApCisgICAgICAgICAgICAgIDw8ICJEdXBsaWNhdGUgcGFyYW1ldGVyaXplZCB0ZXN0
IG5hbWUgJyIgPDwgcGFyYW1fbmFtZQorICAgICAgICAgICAgICA8PCAiJywgaW4gIiA8PCBmaWxl
IDw8ICIgbGluZSAiIDw8IGxpbmUgPDwgc3RkOjplbmRsOworCisgICAgICAgICAgdGVzdF9wYXJh
bV9uYW1lcy5pbnNlcnQocGFyYW1fbmFtZSk7CisKKyAgICAgICAgICB0ZXN0X25hbWVfc3RyZWFt
IDw8IHRlc3RfaW5mby0+dGVzdF9iYXNlX25hbWUgPDwgIi8iIDw8IHBhcmFtX25hbWU7CisgICAg
ICAgICAgTWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8oCisgICAgICAgICAgICAgIHRlc3RfY2FzZV9u
YW1lLmNfc3RyKCksCiAgICAgICAgICAgICAgIHRlc3RfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCku
Y19zdHIoKSwKLSAgICAgICAgICAgICAgIiIsICAvLyB0ZXN0X2Nhc2VfY29tbWVudAotICAgICAg
ICAgICAgICAiIiwgIC8vIGNvbW1lbnQ7IFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IHByb3ZpZGUg
cGFyYW1ldGVyIHZhbHVlCi0gICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVwcmVzZW50YXRpb24uCisgICAgICAgICAgICAgIE5VTEwsICAvLyBO
byB0eXBlIHBhcmFtZXRlci4KKyAgICAgICAgICAgICAgUHJpbnRUb1N0cmluZygqcGFyYW1faXQp
LmNfc3RyKCksCisgICAgICAgICAgICAgIGNvZGVfbG9jYXRpb25fLAogICAgICAgICAgICAgICBH
ZXRUZXN0Q2FzZVR5cGVJZCgpLAogICAgICAgICAgICAgICBUZXN0Q2FzZTo6U2V0VXBUZXN0Q2Fz
ZSwKICAgICAgICAgICAgICAgVGVzdENhc2U6OlRlYXJEb3duVGVzdENhc2UsCkBAIC01MzAsMTcg
KzYwNCw1MCBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvIDogcHVibGljIFBhcmFt
ZXRlcml6ZWRUZXN0Q2FzZUluZm9CYXNlIHsKICAgICAgICAgdGVzdF9iYXNlX25hbWUoYV90ZXN0
X2Jhc2VfbmFtZSksCiAgICAgICAgIHRlc3RfbWV0YV9mYWN0b3J5KGFfdGVzdF9tZXRhX2ZhY3Rv
cnkpIHt9CiAKLSAgICBjb25zdCBTdHJpbmcgdGVzdF9jYXNlX2Jhc2VfbmFtZTsKLSAgICBjb25z
dCBTdHJpbmcgdGVzdF9iYXNlX25hbWU7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdF9jYXNl
X2Jhc2VfbmFtZTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0X2Jhc2VfbmFtZTsKICAgICBj
b25zdCBzY29wZWRfcHRyPFRlc3RNZXRhRmFjdG9yeUJhc2U8UGFyYW1UeXBlPiA+IHRlc3RfbWV0
YV9mYWN0b3J5OwogICB9OwogICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8bGlua2VkX3B0cjxUZXN0
SW5mbz4gPiBUZXN0SW5mb0NvbnRhaW5lcjsKLSAgLy8gS2VlcHMgcGFpcnMgb2YgPEluc3RhbnRp
YXRpb24gbmFtZSwgU2VxdWVuY2UgZ2VuZXJhdG9yIGNyZWF0aW9uIGZ1bmN0aW9uPgotICAvLyBy
ZWNlaXZlZCBmcm9tIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIG1hY3Jvcy4KLSAgdHlwZWRlZiA6
OnN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIEdlbmVyYXRvckNyZWF0aW9uRnVuYyo+ID4K
LSAgICAgIEluc3RhbnRpYXRpb25Db250YWluZXI7CisgIC8vIFJlY29yZHMgZGF0YSByZWNlaXZl
ZCBmcm9tIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIG1hY3JvczoKKyAgLy8gIDxJbnN0YW50aWF0
aW9uIG5hbWUsIFNlcXVlbmNlIGdlbmVyYXRvciBjcmVhdGlvbiBmdW5jdGlvbiwKKyAgLy8gICAg
IE5hbWUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBTb3VyY2UgZmlsZSwgU291cmNlIGxpbmU+CisgIHN0
cnVjdCBJbnN0YW50aWF0aW9uSW5mbyB7CisgICAgICBJbnN0YW50aWF0aW9uSW5mbyhjb25zdCBz
dGQ6OnN0cmluZyAmbmFtZV9pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvckNy
ZWF0aW9uRnVuYyogZ2VuZXJhdG9yX2luLAorICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1O
YW1lR2VuZXJhdG9yRnVuYyogbmFtZV9mdW5jX2luLAorICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogZmlsZV9pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lX2lu
KQorICAgICAgICAgIDogbmFtZShuYW1lX2luKSwKKyAgICAgICAgICAgIGdlbmVyYXRvcihnZW5l
cmF0b3JfaW4pLAorICAgICAgICAgICAgbmFtZV9mdW5jKG5hbWVfZnVuY19pbiksCisgICAgICAg
ICAgICBmaWxlKGZpbGVfaW4pLAorICAgICAgICAgICAgbGluZShsaW5lX2luKSB7fQorCisgICAg
ICBzdGQ6OnN0cmluZyBuYW1lOworICAgICAgR2VuZXJhdG9yQ3JlYXRpb25GdW5jKiBnZW5lcmF0
b3I7CisgICAgICBQYXJhbU5hbWVHZW5lcmF0b3JGdW5jKiBuYW1lX2Z1bmM7CisgICAgICBjb25z
dCBjaGFyKiBmaWxlOworICAgICAgaW50IGxpbmU7CisgIH07CisgIHR5cGVkZWYgOjpzdGQ6OnZl
Y3RvcjxJbnN0YW50aWF0aW9uSW5mbz4gSW5zdGFudGlhdGlvbkNvbnRhaW5lcjsKIAotICBjb25z
dCBTdHJpbmcgdGVzdF9jYXNlX25hbWVfOworICBzdGF0aWMgYm9vbCBJc1ZhbGlkUGFyYW1OYW1l
KGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKSB7CisgICAgLy8gQ2hlY2sgZm9yIGVtcHR5IHN0cmlu
ZworICAgIGlmIChuYW1lLmVtcHR5KCkpCisgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBD
aGVjayBmb3IgaW52YWxpZCBjaGFyYWN0ZXJzCisgICAgZm9yIChzdGQ6OnN0cmluZzo6c2l6ZV90
eXBlIGluZGV4ID0gMDsgaW5kZXggPCBuYW1lLnNpemUoKTsgKytpbmRleCkgeworICAgICAgaWYg
KCFpc2FsbnVtKG5hbWVbaW5kZXhdKSAmJiBuYW1lW2luZGV4XSAhPSAnXycpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIGNvbnN0IHN0
ZDo6c3RyaW5nIHRlc3RfY2FzZV9uYW1lXzsKKyAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb25f
OwogICBUZXN0SW5mb0NvbnRhaW5lciB0ZXN0c187CiAgIEluc3RhbnRpYXRpb25Db250YWluZXIg
aW5zdGFudGlhdGlvbnNfOwogCkBAIC01NjgsOCArNjc1LDcgQEAgY2xhc3MgUGFyYW1ldGVyaXpl
ZFRlc3RDYXNlUmVnaXN0cnkgewogICB0ZW1wbGF0ZSA8Y2xhc3MgVGVzdENhc2U+CiAgIFBhcmFt
ZXRlcml6ZWRUZXN0Q2FzZUluZm88VGVzdENhc2U+KiBHZXRUZXN0Q2FzZVBhdHRlcm5Ib2xkZXIo
CiAgICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgIGNvbnN0IGNoYXIqIGZp
bGUsCi0gICAgICBpbnQgbGluZSkgeworICAgICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24p
IHsKICAgICBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvPFRlc3RDYXNlPiogdHlwZWRfdGVzdF9p
bmZvID0gTlVMTDsKICAgICBmb3IgKFRlc3RDYXNlSW5mb0NvbnRhaW5lcjo6aXRlcmF0b3IgaXQg
PSB0ZXN0X2Nhc2VfaW5mb3NfLmJlZ2luKCk7CiAgICAgICAgICBpdCAhPSB0ZXN0X2Nhc2VfaW5m
b3NfLmVuZCgpOyArK2l0KSB7CkBAIC01NzgsOCArNjg0LDggQEAgY2xhc3MgUGFyYW1ldGVyaXpl
ZFRlc3RDYXNlUmVnaXN0cnkgewogICAgICAgICAgIC8vIENvbXBsYWluIGFib3V0IGluY29ycmVj
dCB1c2FnZSBvZiBHb29nbGUgVGVzdCBmYWNpbGl0aWVzCiAgICAgICAgICAgLy8gYW5kIHRlcm1p
bmF0ZSB0aGUgcHJvZ3JhbSBzaW5jZSB3ZSBjYW5ub3QgZ3VhcmFudHkgY29ycmVjdAogICAgICAg
ICAgIC8vIHRlc3QgY2FzZSBzZXR1cCBhbmQgdGVhci1kb3duIGluIHRoaXMgY2FzZS4KLSAgICAg
ICAgICBSZXBvcnRJbnZhbGlkVGVzdENhc2VUeXBlKHRlc3RfY2FzZV9uYW1lLCAgZmlsZSwgbGlu
ZSk7Ci0gICAgICAgICAgYWJvcnQoKTsKKyAgICAgICAgICBSZXBvcnRJbnZhbGlkVGVzdENhc2VU
eXBlKHRlc3RfY2FzZV9uYW1lLCBjb2RlX2xvY2F0aW9uKTsKKyAgICAgICAgICBwb3NpeDo6QWJv
cnQoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGFy
ZSBzdXJlIHRoYXQgdGhlIG9iamVjdCB3ZSBmb3VuZCBpcyBvZiB0aGUgc2FtZQogICAgICAgICAg
IC8vIHR5cGUgd2UgYXJlIGxvb2tpbmcgZm9yLCBzbyB3ZSBkb3duY2FzdCBpdCB0byB0aGF0IHR5
cGUKQEAgLTU5MSw3ICs2OTcsOCBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3Ry
eSB7CiAgICAgICB9CiAgICAgfQogICAgIGlmICh0eXBlZF90ZXN0X2luZm8gPT0gTlVMTCkgewot
ICAgICAgdHlwZWRfdGVzdF9pbmZvID0gbmV3IFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm88VGVz
dENhc2U+KHRlc3RfY2FzZV9uYW1lKTsKKyAgICAgIHR5cGVkX3Rlc3RfaW5mbyA9IG5ldyBQYXJh
bWV0ZXJpemVkVGVzdENhc2VJbmZvPFRlc3RDYXNlPigKKyAgICAgICAgICB0ZXN0X2Nhc2VfbmFt
ZSwgY29kZV9sb2NhdGlvbik7CiAgICAgICB0ZXN0X2Nhc2VfaW5mb3NfLnB1c2hfYmFjayh0eXBl
ZF90ZXN0X2luZm8pOwogICAgIH0KICAgICByZXR1cm4gdHlwZWRfdGVzdF9pbmZvOwpAQCAtNjE0
LDYgKzcyMSw0IEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IHsKIH0gIC8v
IG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotI2VuZGlmICAv
LyAgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNU
X0lOVEVSTkFMX0dURVNUX1BBUkFNX1VUSUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC1hcmNoLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJj
aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY4MzcwMGUwNmQ5OGMzNmY2NDg3MjkxYzNmOTMxODA3YWYzNTNmNzQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oCkBAIC0wLDAgKzEsMTAwIEBACisvLyBDb3B5cmln
aHQgMjAxNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8v
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlv
bi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gVGhlIEdvb2dsZSBDKysg
VGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8KKy8vIFRoaXMg
aGVhZGVyIGZpbGUgZGVmaW5lcyB0aGUgR1RFU1RfT1NfKiBtYWNyby4KKy8vIEl0IGlzIHNlcGFy
YXRlIGZyb20gZ3Rlc3QtcG9ydC5oIHNvIHRoYXQgY3VzdG9tL2d0ZXN0LXBvcnQuaCBjYW4gaW5j
bHVkZSBpdC4KKworI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BP
UlRfQVJDSF9IXworI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BP
UlRfQVJDSF9IXworCisvLyBEZXRlcm1pbmVzIHRoZSBwbGF0Zm9ybSBvbiB3aGljaCBHb29nbGUg
VGVzdCBpcyBjb21waWxlZC4KKyNpZmRlZiBfX0NZR1dJTl9fCisjIGRlZmluZSBHVEVTVF9PU19D
WUdXSU4gMQorI2VsaWYgZGVmaW5lZCBfX1NZTUJJQU4zMl9fCisjIGRlZmluZSBHVEVTVF9PU19T
WU1CSUFOIDEKKyNlbGlmIGRlZmluZWQgX1dJTjMyCisjIGRlZmluZSBHVEVTVF9PU19XSU5ET1dT
IDEKKyMgaWZkZWYgX1dJTjMyX1dDRQorIyAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfTU9CSUxF
IDEKKyMgZWxpZiBkZWZpbmVkKF9fTUlOR1dfXykgfHwgZGVmaW5lZChfX01JTkdXMzJfXykKKyMg
IGRlZmluZSBHVEVTVF9PU19XSU5ET1dTX01JTkdXIDEKKyMgZWxpZiBkZWZpbmVkKFdJTkFQSV9G
QU1JTFkpCisjICBpbmNsdWRlIDx3aW5hcGlmYW1pbHkuaD4KKyMgIGlmIFdJTkFQSV9GQU1JTFlf
UEFSVElUSU9OKFdJTkFQSV9QQVJUSVRJT05fREVTS1RPUCkKKyMgICBkZWZpbmUgR1RFU1RfT1Nf
V0lORE9XU19ERVNLVE9QIDEKKyMgIGVsaWYgV0lOQVBJX0ZBTUlMWV9QQVJUSVRJT04oV0lOQVBJ
X1BBUlRJVElPTl9QSE9ORV9BUFApCisjICAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfUEhPTkUg
MQorIyAgZWxpZiBXSU5BUElfRkFNSUxZX1BBUlRJVElPTihXSU5BUElfUEFSVElUSU9OX0FQUCkK
KyMgICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19SVCAxCisjICBlbGlmIFdJTkFQSV9GQU1JTFlf
UEFSVElUSU9OKFdJTkFQSV9QQVJUSVRJT05fVFZfVElUTEUpCisjICAgZGVmaW5lIEdURVNUX09T
X1dJTkRPV1NfUEhPTkUgMQorIyAgIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTX1RWX1RJVExFIDEK
KyMgIGVsc2UKKyAgICAvLyBXSU5BUElfRkFNSUxZIGRlZmluZWQgYnV0IG5vIGtub3duIHBhcnRp
dGlvbiBtYXRjaGVkLgorICAgIC8vIERlZmF1bHQgdG8gZGVza3RvcC4KKyMgICBkZWZpbmUgR1RF
U1RfT1NfV0lORE9XU19ERVNLVE9QIDEKKyMgIGVuZGlmCisjIGVsc2UKKyMgIGRlZmluZSBHVEVT
VF9PU19XSU5ET1dTX0RFU0tUT1AgMQorIyBlbmRpZiAgLy8gX1dJTjMyX1dDRQorI2VsaWYgZGVm
aW5lZCBfX0FQUExFX18KKyMgZGVmaW5lIEdURVNUX09TX01BQyAxCisjIGlmIFRBUkdFVF9PU19J
UEhPTkUKKyMgIGRlZmluZSBHVEVTVF9PU19JT1MgMQorIyBlbmRpZgorI2VsaWYgZGVmaW5lZCBf
X0ZyZWVCU0RfXworIyBkZWZpbmUgR1RFU1RfT1NfRlJFRUJTRCAxCisjZWxpZiBkZWZpbmVkIF9f
RnVjaHNpYV9fCisjIGRlZmluZSBHVEVTVF9PU19GVUNIU0lBIDEKKyNlbGlmIGRlZmluZWQgX19s
aW51eF9fCisjIGRlZmluZSBHVEVTVF9PU19MSU5VWCAxCisjIGlmIGRlZmluZWQgX19BTkRST0lE
X18KKyMgIGRlZmluZSBHVEVTVF9PU19MSU5VWF9BTkRST0lEIDEKKyMgZW5kaWYKKyNlbGlmIGRl
ZmluZWQgX19NVlNfXworIyBkZWZpbmUgR1RFU1RfT1NfWk9TIDEKKyNlbGlmIGRlZmluZWQoX19z
dW4pICYmIGRlZmluZWQoX19TVlI0KQorIyBkZWZpbmUgR1RFU1RfT1NfU09MQVJJUyAxCisjZWxp
ZiBkZWZpbmVkKF9BSVgpCisjIGRlZmluZSBHVEVTVF9PU19BSVggMQorI2VsaWYgZGVmaW5lZChf
X2hwdXgpCisjIGRlZmluZSBHVEVTVF9PU19IUFVYIDEKKyNlbGlmIGRlZmluZWQgX19uYXRpdmVf
Y2xpZW50X18KKyMgZGVmaW5lIEdURVNUX09TX05BQ0wgMQorI2VsaWYgZGVmaW5lZCBfX05ldEJT
RF9fCisjIGRlZmluZSBHVEVTVF9PU19ORVRCU0QgMQorI2VsaWYgZGVmaW5lZCBfX09wZW5CU0Rf
XworIyBkZWZpbmUgR1RFU1RfT1NfT1BFTkJTRCAxCisjZWxpZiBkZWZpbmVkIF9fUU5YX18KKyMg
ZGVmaW5lIEdURVNUX09TX1FOWCAxCisjZW5kaWYgIC8vIF9fQ1lHV0lOX18KKworI2VuZGlmICAv
LyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRfQVJDSF9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC1wb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXBvcnQuaAppbmRleCBmOGJlODA5MjZmODk4N2QzYzk1ODI4NjE2MDIwMTBiZmY2ZTY0
ZDZkLi43ODY0OTdkODU0Yzk3ZjFiNmFiOTM3MmEyNDFjMWZhMTU1YTMwYTU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXBvcnQuaApAQCAtMjcsMjkgKzI3LDU3IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAvLwotLy8gQXV0aG9yczogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikK
LS8vCiAvLyBMb3ctbGV2ZWwgdHlwZXMgYW5kIHV0aWxpdGllcyBmb3IgcG9ydGluZyBHb29nbGUg
VGVzdCB0byB2YXJpb3VzCi0vLyBwbGF0Zm9ybXMuICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5n
ZSB3aXRob3V0IG5vdGljZS4gIERPIE5PVCBVU0UKLS8vIFRIRU0gSU4gVVNFUiBDT0RFLgorLy8g
cGxhdGZvcm1zLiAgQWxsIG1hY3JvcyBlbmRpbmcgd2l0aCBfIGFuZCBzeW1ib2xzIGRlZmluZWQg
aW4gYW4KKy8vIGludGVybmFsIG5hbWVzcGFjZSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91
dCBub3RpY2UuICBDb2RlCisvLyBvdXRzaWRlIEdvb2dsZSBUZXN0IE1VU1QgTk9UIFVTRSBUSEVN
IERJUkVDVExZLiAgTWFjcm9zIHRoYXQgZG9uJ3QKKy8vIGVuZCB3aXRoIF8gYXJlIHBhcnQgb2Yg
R29vZ2xlIFRlc3QncyBwdWJsaWMgQVBJIGFuZCBjYW4gYmUgdXNlZCBieQorLy8gY29kZSBvdXRz
aWRlIEdvb2dsZSBUZXN0LgorLy8KKy8vIFRoaXMgZmlsZSBpcyBmdW5kYW1lbnRhbCB0byBHb29n
bGUgVGVzdC4gIEFsbCBvdGhlciBHb29nbGUgVGVzdCBzb3VyY2UKKy8vIGZpbGVzIGFyZSBleHBl
Y3RlZCB0byAjaW5jbHVkZSB0aGlzLiAgVGhlcmVmb3JlLCBpdCBjYW5ub3QgI2luY2x1ZGUKKy8v
IGFueSBvdGhlciBHb29nbGUgVGVzdCBoZWFkZXIuCisKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERP
IE5PVCBERUxFVEUKIAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNU
X1BPUlRfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QT1JU
X0hfCiAKLS8vIFRoZSB1c2VyIGNhbiBkZWZpbmUgdGhlIGZvbGxvd2luZyBtYWNyb3MgaW4gdGhl
IGJ1aWxkIHNjcmlwdCB0bwotLy8gY29udHJvbCBHb29nbGUgVGVzdCdzIGJlaGF2aW9yLiAgSWYg
dGhlIHVzZXIgZG9lc24ndCBkZWZpbmUgYSBtYWNybwotLy8gaW4gdGhpcyBsaXN0LCBHb29nbGUg
VGVzdCB3aWxsIGRlZmluZSBpdC4KKy8vIEVudmlyb25tZW50LWRlc2NyaWJpbmcgbWFjcm9zCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEdvb2dsZSBUZXN0IGNhbiBi
ZSB1c2VkIGluIG1hbnkgZGlmZmVyZW50IGVudmlyb25tZW50cy4gIE1hY3JvcyBpbgorLy8gdGhp
cyBzZWN0aW9uIHRlbGwgR29vZ2xlIFRlc3Qgd2hhdCBraW5kIG9mIGVudmlyb25tZW50IGl0IGlz
IGJlaW5nCisvLyB1c2VkIGluLCBzdWNoIHRoYXQgR29vZ2xlIFRlc3QgY2FuIHByb3ZpZGUgZW52
aXJvbm1lbnQtc3BlY2lmaWMKKy8vIGZlYXR1cmVzIGFuZCBpbXBsZW1lbnRhdGlvbnMuCisvLwor
Ly8gR29vZ2xlIFRlc3QgdHJpZXMgdG8gYXV0b21hdGljYWxseSBkZXRlY3QgdGhlIHByb3BlcnRp
ZXMgb2YgaXRzCisvLyBlbnZpcm9ubWVudCwgc28gdXNlcnMgdXN1YWxseSBkb24ndCBuZWVkIHRv
IHdvcnJ5IGFib3V0IHRoZXNlCisvLyBtYWNyb3MuICBIb3dldmVyLCB0aGUgYXV0b21hdGljIGRl
dGVjdGlvbiBpcyBub3QgcGVyZmVjdC4KKy8vIFNvbWV0aW1lcyBpdCdzIG5lY2Vzc2FyeSBmb3Ig
YSB1c2VyIHRvIGRlZmluZSBzb21lIG9mIHRoZSBmb2xsb3dpbmcKKy8vIG1hY3JvcyBpbiB0aGUg
YnVpbGQgc2NyaXB0IHRvIG92ZXJyaWRlIEdvb2dsZSBUZXN0J3MgZGVjaXNpb25zLgorLy8KKy8v
IElmIHRoZSB1c2VyIGRvZXNuJ3QgZGVmaW5lIGEgbWFjcm8gaW4gdGhlIGxpc3QsIEdvb2dsZSBU
ZXN0IHdpbGwKKy8vIHByb3ZpZGUgYSBkZWZhdWx0IGRlZmluaXRpb24uICBBZnRlciB0aGlzIGhl
YWRlciBpcyAjaW5jbHVkZWQsIGFsbAorLy8gbWFjcm9zIGluIHRoaXMgbGlzdCB3aWxsIGJlIGRl
ZmluZWQgdG8gZWl0aGVyIDEgb3IgMC4KKy8vCisvLyBOb3RlcyB0byBtYWludGFpbmVyczoKKy8v
ICAgLSBFYWNoIG1hY3JvIGhlcmUgaXMgYSB1c2VyLXR3ZWFrYWJsZSBrbm9iOyBkbyBub3QgZ3Jv
dyB0aGUgbGlzdAorLy8gICAgIGxpZ2h0bHkuCisvLyAgIC0gVXNlICNpZiB0byBrZXkgb2ZmIHRo
ZXNlIG1hY3Jvcy4gIERvbid0IHVzZSAjaWZkZWYgb3IgIiNpZgorLy8gICAgIGRlZmluZWQoLi4u
KSIsIHdoaWNoIHdpbGwgbm90IHdvcmsgYXMgdGhlc2UgbWFjcm9zIGFyZSBBTFdBWVMKKy8vICAg
ICBkZWZpbmVkLgogLy8KIC8vICAgR1RFU1RfSEFTX0NMT05FICAgICAgICAgIC0gRGVmaW5lIGl0
IHRvIDEvMCB0byBpbmRpY2F0ZSB0aGF0IGNsb25lKDIpCiAvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlzL2lzbid0IGF2YWlsYWJsZS4KIC8vICAgR1RFU1RfSEFTX0VYQ0VQVElPTlMg
ICAgIC0gRGVmaW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB0aGF0IGV4Y2VwdGlvbnMKIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGVuYWJsZWQuCiAvLyAgIEdURVNUX0hBU19H
TE9CQUxfU1RSSU5HICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA6OnN0cmlu
ZwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcy9pc24ndCBhdmFpbGFibGUgKHNv
bWUgc3lzdGVtcyBkZWZpbmUKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdHJp
bmcsIHdoaWNoIGlzIGRpZmZlcmVudCB0byBzdGQ6OnN0cmluZykuCi0vLyAgIEdURVNUX0hBU19H
TE9CQUxfV1NUUklORyAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA6OnN0cmlu
ZwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcy9pc24ndCBhdmFpbGFibGUgKHNv
bWUgc3lzdGVtcyBkZWZpbmUKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjp3c3Ry
aW5nLCB3aGljaCBpcyBkaWZmZXJlbnQgdG8gc3RkOjp3c3RyaW5nKS4KKy8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlCisvLyAgIEdURVNUX0hBU19HTE9C
QUxfV1NUUklORyAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA6OndzdHJpbmcK
Ky8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlCisvLyAg
IEdURVNUX0hBU19QT1NJWF9SRSAgICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUg
dGhhdCBQT1NJWCByZWd1bGFyCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJl
c3Npb25zIGFyZS9hcmVuJ3QgYXZhaWxhYmxlLgogLy8gICBHVEVTVF9IQVNfUFRIUkVBRCAgICAg
ICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgPHB0aHJlYWQuaD4KIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlLgogLy8gICBHVEVT
VF9IQVNfUlRUSSAgICAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQg
UlRUSSBpcy9pc24ndApAQCAtNjIsMTAgKzkwLDE2IEBACiAvLyAgIEdURVNUX0hBU19TRUggICAg
ICAgICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUKIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIgc3VwcG9ydHMgTWljcm9zb2Z0J3Mg
IlN0cnVjdHVyZWQKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uIEhh
bmRsaW5nIi4KKy8vICAgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgorLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHdoZXRoZXIg
dGhlCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtIHN1cHBvcnRzIEkv
TyBzdHJlYW0gcmVkaXJlY3Rpb24gdXNpbmcKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZHVwKCkgYW5kIGR1cDIoKS4KIC8vICAgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgIC0gRGVm
aW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB3aGV0aGVyIEdvb2dsZQogLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXN0J3Mgb3duIHRyMSB0dXBsZSBpbXBsZW1lbnRhdGlvbiBzaG91
bGQgYmUKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZC4gIFVudXNlZCB3aGVu
IHRoZSB1c2VyIHNldHMKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfSEFT
X1RSMV9UVVBMRSB0byAwLgorLy8gICBHVEVTVF9MQU5HX0NYWDExICAgICAgICAgLSBEZWZpbmUg
aXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgR29vZ2xlIFRlc3QKKy8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaXMgYnVpbGRpbmcgaW4gQysrMTEvQysrOTggbW9kZS4KIC8vICAgR1RF
U1RfTElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtIERlZmluZSB0byAxIHdoZW4gY29tcGlsaW5nIHRlc3RzIHRoYXQgdXNlCiAvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdvb2dsZSBUZXN0IGFzIGEgc2hhcmVkIGxpYnJhcnkgKGtu
b3duIGFzCkBAIC03MywyMyArMTA3LDQzIEBACiAvLyAgIEdURVNUX0NSRUFURV9TSEFSRURfTElC
UkFSWQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBEZWZpbmUgdG8gMSB3aGVuIGNv
bXBpbGluZyBHb29nbGUgVGVzdCBpdHNlbGYKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXMgYSBzaGFyZWQgbGlicmFyeS4KLQotLy8gVGhpcyBoZWFkZXIgZGVmaW5lcyB0aGUgZm9s
bG93aW5nIHV0aWxpdGllczoKKy8vICAgR1RFU1RfREVGQVVMVF9ERUFUSF9URVNUX1NUWUxFCisv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoZSBkZWZhdWx0IHZhbHVlIG9mIC0tZ3Rl
c3RfZGVhdGhfdGVzdF9zdHlsZS4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhl
IGxlZ2FjeSBkZWZhdWx0IGhhcyBiZWVuICJmYXN0IiBpbiB0aGUgb3BlbgorLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzb3VyY2UgdmVyc2lvbiBzaW5jZSAyMDA4LiBUaGUgcmVjb21t
ZW5kZWQgdmFsdWUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgInRocmVhZHNh
ZmUiLCBhbmQgY2FuIGJlIHNldCBpbgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
dXN0b20vZ3Rlc3QtcG9ydC5oLgorCisvLyBQbGF0Zm9ybS1pbmRpY2F0aW5nIG1hY3JvcworLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNYWNyb3MgaW5kaWNhdGluZyB0aGUg
cGxhdGZvcm0gb24gd2hpY2ggR29vZ2xlIFRlc3QgaXMgYmVpbmcgdXNlZAorLy8gKGEgbWFjcm8g
aXMgZGVmaW5lZCB0byAxIGlmIGNvbXBpbGVkIG9uIHRoZSBnaXZlbiBwbGF0Zm9ybTsKKy8vIG90
aGVyd2lzZSBVTkRFRklORUQgLS0gaXQncyBuZXZlciBkZWZpbmVkIHRvIDAuKS4gIEdvb2dsZSBU
ZXN0CisvLyBkZWZpbmVzIHRoZXNlIG1hY3JvcyBhdXRvbWF0aWNhbGx5LiAgQ29kZSBvdXRzaWRl
IEdvb2dsZSBUZXN0IE1VU1QKKy8vIE5PVCBkZWZpbmUgdGhlbS4KIC8vCi0vLyBNYWNyb3MgaW5k
aWNhdGluZyB0aGUgY3VycmVudCBwbGF0Zm9ybSAoZGVmaW5lZCB0byAxIGlmIGNvbXBpbGVkIG9u
Ci0vLyB0aGUgZ2l2ZW4gcGxhdGZvcm07IG90aGVyd2lzZSB1bmRlZmluZWQpOgogLy8gICBHVEVT
VF9PU19BSVggICAgICAtIElCTSBBSVgKIC8vICAgR1RFU1RfT1NfQ1lHV0lOICAgLSBDeWd3aW4K
LS8vICAgR1RFU1RfT1NfTElOVVggICAgLSBMaW51eAogLy8gICBHVEVTVF9PU19GUkVFQlNEICAt
IEZyZWVCU0QKLS8vICAgR1RFU1RfT1NfSFVSRCAgICAgLSBHTlUvSHVyZAorLy8gICBHVEVTVF9P
U19GVUNIU0lBICAtIEZ1Y2hzaWEKKy8vICAgR1RFU1RfT1NfSFBVWCAgICAgLSBIUC1VWAorLy8g
ICBHVEVTVF9PU19MSU5VWCAgICAtIExpbnV4CisvLyAgICAgR1RFU1RfT1NfTElOVVhfQU5EUk9J
RCAtIEdvb2dsZSBBbmRyb2lkCiAvLyAgIEdURVNUX09TX01BQyAgICAgIC0gTWFjIE9TIFgKKy8v
ICAgICBHVEVTVF9PU19JT1MgICAgLSBpT1MKKy8vICAgR1RFU1RfT1NfTkFDTCAgICAgLSBHb29n
bGUgTmF0aXZlIENsaWVudCAoTmFDbCkKKy8vICAgR1RFU1RfT1NfTkVUQlNEICAgLSBOZXRCU0QK
Ky8vICAgR1RFU1RfT1NfT1BFTkJTRCAgLSBPcGVuQlNECisvLyAgIEdURVNUX09TX1FOWCAgICAg
IC0gUU5YCiAvLyAgIEdURVNUX09TX1NPTEFSSVMgIC0gU3VuIFNvbGFyaXMKIC8vICAgR1RFU1Rf
T1NfU1lNQklBTiAgLSBTeW1iaWFuCiAvLyAgIEdURVNUX09TX1dJTkRPV1MgIC0gV2luZG93cyAo
RGVza3RvcCwgTWluR1csIG9yIE1vYmlsZSkKIC8vICAgICBHVEVTVF9PU19XSU5ET1dTX0RFU0tU
T1AgIC0gV2luZG93cyBEZXNrdG9wCiAvLyAgICAgR1RFU1RfT1NfV0lORE9XU19NSU5HVyAgICAt
IE1pbkdXCiAvLyAgICAgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgICAtIFdpbmRvd3MgTW9iaWxl
CisvLyAgICAgR1RFU1RfT1NfV0lORE9XU19QSE9ORSAgICAtIFdpbmRvd3MgUGhvbmUKKy8vICAg
ICBHVEVTVF9PU19XSU5ET1dTX1JUICAgICAgIC0gV2luZG93cyBTdG9yZSBBcHAvV2luUlQKIC8v
ICAgR1RFU1RfT1NfWk9TICAgICAgLSB6L09TCiAvLwogLy8gQW1vbmcgdGhlIHBsYXRmb3Jtcywg
Q3lnd2luLCBMaW51eCwgTWF4IE9TIFgsIGFuZCBXaW5kb3dzIGhhdmUgdGhlCkBAIC05OSwyMCAr
MTUzLDUwIEBACiAvLyBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20gKHBhdGNo
ZXMgZm9yIGZpeGluZyB0aGVtIGFyZQogLy8gZXZlbiBtb3JlIHdlbGNvbWUhKS4KIC8vCi0vLyBO
b3RlIHRoYXQgaXQgaXMgcG9zc2libGUgdGhhdCBub25lIG9mIHRoZSBHVEVTVF9PU18qIG1hY3Jv
cyBhcmUgZGVmaW5lZC4KKy8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgbm9uZSBvZiB0aGUgR1RFU1Rf
T1NfKiBtYWNyb3MgYXJlIGRlZmluZWQuCisKKy8vIEZlYXR1cmUtaW5kaWNhdGluZyBtYWNyb3MK
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNYWNyb3MgaW5kaWNhdGluZyB3
aGljaCBHb29nbGUgVGVzdCBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlIChhIG1hY3JvCisvLyBpcyBk
ZWZpbmVkIHRvIDEgaWYgdGhlIGNvcnJlc3BvbmRpbmcgZmVhdHVyZSBpcyBzdXBwb3J0ZWQ7Cisv
LyBvdGhlcndpc2UgVU5ERUZJTkVEIC0tIGl0J3MgbmV2ZXIgZGVmaW5lZCB0byAwLikuICBHb29n
bGUgVGVzdAorLy8gZGVmaW5lcyB0aGVzZSBtYWNyb3MgYXV0b21hdGljYWxseS4gIENvZGUgb3V0
c2lkZSBHb29nbGUgVGVzdCBNVVNUCisvLyBOT1QgZGVmaW5lIHRoZW0uCisvLworLy8gVGhlc2Ug
bWFjcm9zIGFyZSBwdWJsaWMgc28gdGhhdCBwb3J0YWJsZSB0ZXN0cyBjYW4gYmUgd3JpdHRlbi4K
Ky8vIFN1Y2ggdGVzdHMgdHlwaWNhbGx5IHN1cnJvdW5kIGNvZGUgdXNpbmcgYSBmZWF0dXJlIHdp
dGggYW4gI2lmCisvLyB3aGljaCBjb250cm9scyB0aGF0IGNvZGUuICBGb3IgZXhhbXBsZToKKy8v
CisvLyAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKy8vICAgRVhQRUNUX0RFQVRIKERvU29tZXRo
aW5nRGVhZGx5KCkpOworLy8gI2VuZGlmCiAvLwotLy8gTWFjcm9zIGluZGljYXRpbmcgYXZhaWxh
YmxlIEdvb2dsZSBUZXN0IGZlYXR1cmVzIChkZWZpbmVkIHRvIDEgaWYKLS8vIHRoZSBjb3JyZXNw
b25kaW5nIGZlYXR1cmUgaXMgc3VwcG9ydGVkOyBvdGhlcndpc2UgdW5kZWZpbmVkKToKIC8vICAg
R1RFU1RfSEFTX0NPTUJJTkUgICAgICAtIHRoZSBDb21iaW5lKCkgZnVuY3Rpb24gKGZvciB2YWx1
ZS1wYXJhbWV0ZXJpemVkCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cykKIC8v
ICAgR1RFU1RfSEFTX0RFQVRIX1RFU1QgICAtIGRlYXRoIHRlc3RzCi0vLyAgIEdURVNUX0hBU19Q
QVJBTV9URVNUICAgLSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzCiAvLyAgIEdURVNUX0hBU19U
WVBFRF9URVNUICAgLSB0eXBlZCB0ZXN0cwogLy8gICBHVEVTVF9IQVNfVFlQRURfVEVTVF9QIC0g
dHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzCi0vLyAgIEdURVNUX1VTRVNfUE9TSVhfUkUgICAgLSBl
bmhhbmNlZCBQT1NJWCByZWdleCBpcyB1c2VkLgorLy8gICBHVEVTVF9JU19USFJFQURTQUZFICAg
IC0gR29vZ2xlIFRlc3QgaXMgdGhyZWFkLXNhZmUuCisvLyAgIEdPT0dMRVRFU1RfQ00wMDA3IERP
IE5PVCBERUxFVEUKKy8vICAgR1RFU1RfVVNFU19QT1NJWF9SRSAgICAtIGVuaGFuY2VkIFBPU0lY
IHJlZ2V4IGlzIHVzZWQuIERvIG5vdCBjb25mdXNlIHdpdGgKKy8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdURVNUX0hBU19QT1NJWF9SRSAoc2VlIGFib3ZlKSB3aGljaCB1c2VycyBjYW4K
Ky8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSB0aGVtc2VsdmVzLgogLy8gICBH
VEVTVF9VU0VTX1NJTVBMRV9SRSAgIC0gb3VyIG93biBzaW1wbGUgcmVnZXggaXMgdXNlZDsKLS8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhYm92ZSB0d28gYXJlIG11dHVhbGx5IGV4
Y2x1c2l2ZS4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhYm92ZSBSRVxiKHMp
IGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCiAvLyAgIEdURVNUX0NBTl9DT01QQVJFX05VTEwgLSBh
Y2NlcHRzIHVudHlwZWQgTlVMTCBpbiBFWFBFQ1RfRVEoKS4KKworLy8gTWlzYyBwdWJsaWMgbWFj
cm9zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyAgIEdURVNUX0ZMQUcoZmxhZ19uYW1l
KSAgLSByZWZlcmVuY2VzIHRoZSB2YXJpYWJsZSBjb3JyZXNwb25kaW5nIHRvCisvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aGUgZ2l2ZW4gR29vZ2xlIFRlc3QgZmxhZy4KKworLy8gSW50
ZXJuYWwgdXRpbGl0aWVzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBUaGUgZm9sbG93
aW5nIG1hY3JvcyBhbmQgdXRpbGl0aWVzIGFyZSBmb3IgR29vZ2xlIFRlc3QncyBJTlRFUk5BTAor
Ly8gdXNlIG9ubHkuICBDb2RlIG91dHNpZGUgR29vZ2xlIFRlc3QgTVVTVCBOT1QgVVNFIFRIRU0g
RElSRUNUTFkuCiAvLwogLy8gTWFjcm9zIGZvciBiYXNpYyBDKysgY29kaW5nOgogLy8gICBHVEVT
VF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyAtIGZvciBkaXNhYmxpbmcgYSBnY2Mgd2FybmluZy4K
QEAgLTEyMSwyNSArMjA1LDM0IEBACiAvLyAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8gICAtIGRp
c2FibGVzIG9wZXJhdG9yPS4KIC8vICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyAt
IGRpc2FibGVzIGNvcHkgY3RvciBhbmQgb3BlcmF0b3I9LgogLy8gICBHVEVTVF9NVVNUX1VTRV9S
RVNVTFRfICAgLSBkZWNsYXJlcyB0aGF0IGEgZnVuY3Rpb24ncyByZXN1bHQgbXVzdCBiZSB1c2Vk
LgorLy8gICBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BVU0hfIC0gc3RhcnQgY29kZSBz
ZWN0aW9uIHdoZXJlIE1TVkMgQzQxMjcgaXMKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN1cHByZXNzZWQgKGNvbnN0YW50IGNvbmRpdGlvbmFsKS4KKy8vICAgR1RF
U1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QT1BfICAtIGZpbmlzaCBjb2RlIHNlY3Rpb24gd2hl
cmUgTVNWQyBDNDEyNworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aXMgc3VwcHJlc3NlZC4KKy8vCisvLyBDKysxMSBmZWF0dXJlIHdyYXBwZXJzOgorLy8KKy8vICAg
dGVzdGluZzo6aW50ZXJuYWw6OmZvcndhcmQgLSBwb3J0YWJpbGl0eSB3cmFwcGVyIGZvciBzdGQ6
OmZvcndhcmQuCisvLyAgIHRlc3Rpbmc6OmludGVybmFsOjptb3ZlICAtIHBvcnRhYmlsaXR5IHdy
YXBwZXIgZm9yIHN0ZDo6bW92ZS4KIC8vCiAvLyBTeW5jaHJvbml6YXRpb246CiAvLyAgIE11dGV4
LCBNdXRleExvY2ssIFRocmVhZExvY2FsLCBHZXRUaHJlYWRDb3VudCgpCi0vLyAgICAgICAgICAg
ICAgICAgIC0gc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMuCi0vLyAgIEdURVNUX0lTX1RIUkVB
RFNBRkUgLSBkZWZpbmVkIHRvIDEgdG8gaW5kaWNhdGUgdGhhdCB0aGUgYWJvdmUKLS8vICAgICAg
ICAgICAgICAgICAgICAgICAgIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGhhdmUgcmVhbCBp
bXBsZW1lbnRhdGlvbnMKLS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBHb29nbGUgVGVz
dCBpcyB0aHJlYWQtc2FmZTsgb3IgMCBvdGhlcndpc2UuCisvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAtIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzLgogLy8KIC8vIFRlbXBsYXRlIG1l
dGEgcHJvZ3JhbW1pbmc6CiAvLyAgIGlzX3BvaW50ZXIgICAgIC0gYXMgaW4gVFIxOyBuZWVkZWQg
b24gU3ltYmlhbiBhbmQgSUJNIFhMIEMvQysrIG9ubHkuCisvLyAgIEl0ZXJhdG9yVHJhaXRzIC0g
cGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBzdGQ6Oml0ZXJhdG9yX3RyYWl0cywgd2hpY2gKKy8v
ICAgICAgICAgICAgICAgICAgICBpcyBub3QgYXZhaWxhYmxlIGluIGxpYkNzdGQgd2hlbiBjb21w
aWxlZCB3aXRoIFN1biBDKysuCiAvLwogLy8gU21hcnQgcG9pbnRlcnM6CiAvLyAgIHNjb3BlZF9w
dHIgICAgIC0gYXMgaW4gVFIyLgogLy8KIC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnM6CiAvLyAgIFJF
ICAgICAgICAgICAgIC0gYSBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uIGNsYXNzIHVzaW5nIHRo
ZSBQT1NJWAotLy8gICAgICAgICAgICAgICAgICAgIEV4dGVuZGVkIFJlZ3VsYXIgRXhwcmVzc2lv
biBzeW50YXguICBOb3QgYXZhaWxhYmxlIG9uCi0vLyAgICAgICAgICAgICAgICAgICAgV2luZG93
cy4KLS8vCisvLyAgICAgICAgICAgICAgICAgICAgRXh0ZW5kZWQgUmVndWxhciBFeHByZXNzaW9u
IHN5bnRheCBvbiBVTklYLWxpa2UgcGxhdGZvcm1zCisvLyAgICAgICAgICAgICAgICAgICAgR09P
R0xFVEVTVF9DTTAwMDggRE8gTk9UIERFTEVURQorLy8gICAgICAgICAgICAgICAgICAgIG9yIGEg
cmVkdWNlZCByZWd1bGFyIGV4Y2VwdGlvbiBzeW50YXggb24gb3RoZXIKKy8vICAgICAgICAgICAg
ICAgICAgICBwbGF0Zm9ybXMsIGluY2x1ZGluZyBXaW5kb3dzLgogLy8gTG9nZ2luZzoKIC8vICAg
R1RFU1RfTE9HXygpICAgLSBsb2dzIG1lc3NhZ2VzIGF0IHRoZSBzcGVjaWZpZWQgc2V2ZXJpdHkg
bGV2ZWwuCiAvLyAgIExvZ1RvU3RkZXJyKCkgIC0gZGlyZWN0cyBhbGwgbG9nIG1lc3NhZ2VzIHRv
IHN0ZGVyci4KQEAgLTE2MCwxMCArMjUzLDkgQEAKIC8vICAgQmlnZ2VzdEludCAgICAgLSB0aGUg
YmlnZ2VzdCBzaWduZWQgaW50ZWdlciB0eXBlLgogLy8KIC8vIENvbW1hbmQtbGluZSB1dGlsaXRp
ZXM6Ci0vLyAgIEdURVNUX0ZMQUcoKSAgICAgICAtIHJlZmVyZW5jZXMgYSBmbGFnLgogLy8gICBH
VEVTVF9ERUNMQVJFXyooKSAgLSBkZWNsYXJlcyBhIGZsYWcuCiAvLyAgIEdURVNUX0RFRklORV8q
KCkgICAtIGRlZmluZXMgYSBmbGFnLgotLy8gICBHZXRBcmd2cygpICAgICAgICAgLSByZXR1cm5z
IHRoZSBjb21tYW5kIGxpbmUgYXMgYSB2ZWN0b3Igb2Ygc3RyaW5ncy4KKy8vICAgR2V0SW5qZWN0
YWJsZUFyZ3ZzKCkgLSByZXR1cm5zIHRoZSBjb21tYW5kIGxpbmUgYXMgYSB2ZWN0b3Igb2Ygc3Ry
aW5ncy4KIC8vCiAvLyBFbnZpcm9ubWVudCB2YXJpYWJsZSB1dGlsaXRpZXM6CiAvLyAgIEdldEVu
digpICAgICAgICAgICAgIC0gZ2V0cyB0aGUgdmFsdWUgb2YgYW4gZW52aXJvbm1lbnQgdmFyaWFi
bGUuCkBAIC0xNzEsMTcxICsyNjMsMzA1IEBACiAvLyAgIEludDMyRnJvbUdUZXN0RW52KCkgIC0g
cGFyc2VzIGFuIEludDMyIGVudmlyb25tZW50IHZhcmlhYmxlLgogLy8gICBTdHJpbmdGcm9tR1Rl
c3RFbnYoKSAtIHBhcnNlcyBhIHN0cmluZyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KIAotI2luY2x1
ZGUgPHN0ZGRlZi5oPiAgLy8gRm9yIHB0cmRpZmZfdAorI2luY2x1ZGUgPGN0eXBlLmg+ICAgLy8g
Zm9yIGlzc3BhY2UsIGV0YworI2luY2x1ZGUgPHN0ZGRlZi5oPiAgLy8gZm9yIHB0cmRpZmZfdAog
I2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5n
Lmg+CiAjaWZuZGVmIF9XSU4zMl9XQ0UKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgorIyBpbmNsdWRl
IDxzeXMvdHlwZXMuaD4KKyMgaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNlbmRpZiAgLy8gIV9XSU4z
Ml9XQ0UKIAotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgotI2luY2x1ZGUgPHd0Zi9FeHBvcnRN
YWNyb3MuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0V4cG9ydE1hY3Jvcy5oPgotI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNp
ZiBkZWZpbmVkIF9fQVBQTEVfXworIyBpbmNsdWRlIDxBdmFpbGFiaWxpdHlNYWNyb3MuaD4KKyMg
aW5jbHVkZSA8VGFyZ2V0Q29uZGl0aW9uYWxzLmg+CisjZW5kaWYKIAorLy8gQnJpbmdzIGluIHRo
ZSBkZWZpbml0aW9uIG9mIEhBU19HTE9CQUxfU1RSSU5HLiAgVGhpcyBtdXN0IGJlIGRvbmUKKy8v
IEJFRk9SRSB3ZSB0ZXN0IEhBU19HTE9CQUxfU1RSSU5HLgorI2luY2x1ZGUgPHN0cmluZz4gIC8v
IE5PTElOVAorI2luY2x1ZGUgPGFsZ29yaXRobT4gIC8vIE5PTElOVAogI2luY2x1ZGUgPGlvc3Ry
ZWFtPiAgLy8gTk9MSU5UCiAjaW5jbHVkZSA8c3N0cmVhbT4gIC8vIE5PTElOVAotI2luY2x1ZGUg
PHN0cmluZz4gIC8vIE5PTElOVAorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9y
PiAgLy8gTk9MSU5UCisKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LWFyY2gu
aCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oIgorCisjaWYg
IWRlZmluZWQoR1RFU1RfREVWX0VNQUlMXykKKyMgZGVmaW5lIEdURVNUX0RFVl9FTUFJTF8gImdv
b2dsZXRlc3RmcmFtZXdvcmtAQGdvb2dsZWdyb3Vwcy5jb20iCisjIGRlZmluZSBHVEVTVF9GTEFH
X1BSRUZJWF8gImd0ZXN0XyIKKyMgZGVmaW5lIEdURVNUX0ZMQUdfUFJFRklYX0RBU0hfICJndGVz
dC0iCisjIGRlZmluZSBHVEVTVF9GTEFHX1BSRUZJWF9VUFBFUl8gIkdURVNUXyIKKyMgZGVmaW5l
IEdURVNUX05BTUVfICJHb29nbGUgVGVzdCIKKyMgZGVmaW5lIEdURVNUX1BST0pFQ1RfVVJMXyAi
aHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0LyIKKyNlbmRpZiAgLy8gIWRlZmlu
ZWQoR1RFU1RfREVWX0VNQUlMXykKIAotI2RlZmluZSBHVEVTVF9ERVZfRU1BSUxfICJnb29nbGV0
ZXN0ZnJhbWV3b3JrQEBnb29nbGVncm91cHMuY29tIgotI2RlZmluZSBHVEVTVF9GTEFHX1BSRUZJ
WF8gImd0ZXN0XyIKLSNkZWZpbmUgR1RFU1RfRkxBR19QUkVGSVhfREFTSF8gImd0ZXN0LSIKLSNk
ZWZpbmUgR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJHVEVTVF8iCi0jZGVmaW5lIEdURVNUX05B
TUVfICJHb29nbGUgVGVzdCIKLSNkZWZpbmUgR1RFU1RfUFJPSkVDVF9VUkxfICJodHRwOi8vY29k
ZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC8iCisjaWYgIWRlZmluZWQoR1RFU1RfSU5JVF9HT09H
TEVfVEVTVF9OQU1FXykKKyMgZGVmaW5lIEdURVNUX0lOSVRfR09PR0xFX1RFU1RfTkFNRV8gInRl
c3Rpbmc6OkluaXRHb29nbGVUZXN0IgorI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9JTklUX0dP
T0dMRV9URVNUX05BTUVfKQogCiAvLyBEZXRlcm1pbmVzIHRoZSB2ZXJzaW9uIG9mIGdjYyB0aGF0
IGlzIHVzZWQgdG8gY29tcGlsZSB0aGlzLgogI2lmZGVmIF9fR05VQ19fCiAvLyA0MDMwMiBtZWFu
cyB2ZXJzaW9uIDQuMy4yLgotI2RlZmluZSBHVEVTVF9HQ0NfVkVSXyBcCisjIGRlZmluZSBHVEVT
VF9HQ0NfVkVSXyBcCiAgICAgKF9fR05VQ19fKjEwMDAwICsgX19HTlVDX01JTk9SX18qMTAwICsg
X19HTlVDX1BBVENITEVWRUxfXykKICNlbmRpZiAgLy8gX19HTlVDX18KIAotLy8gRGV0ZXJtaW5l
cyB0aGUgcGxhdGZvcm0gb24gd2hpY2ggR29vZ2xlIFRlc3QgaXMgY29tcGlsZWQuCi0jaWZkZWYg
X19DWUdXSU5fXwotI2RlZmluZSBHVEVTVF9PU19DWUdXSU4gMQotI2VsaWYgZGVmaW5lZCBfX1NZ
TUJJQU4zMl9fCi0jZGVmaW5lIEdURVNUX09TX1NZTUJJQU4gMQotI2VsaWYgZGVmaW5lZCBfV0lO
MzIKLSNkZWZpbmUgR1RFU1RfT1NfV0lORE9XUyAxCi0jaWZkZWYgX1dJTjMyX1dDRQotI2RlZmlu
ZSBHVEVTVF9PU19XSU5ET1dTX01PQklMRSAxCi0jZWxpZiBkZWZpbmVkKF9fTUlOR1dfXykgfHwg
ZGVmaW5lZChfX01JTkdXMzJfXykKLSNkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19NSU5HVyAxCisv
LyBNYWNyb3MgZm9yIGRpc2FibGluZyBNaWNyb3NvZnQgVmlzdWFsIEMrKyB3YXJuaW5ncy4KKy8v
CisvLyAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQ4MDAgNDM4NSkKKy8vICAg
LyogY29kZSB0aGF0IHRyaWdnZXJzIHdhcm5pbmdzIEM0ODAwIGFuZCBDNDM4NSAqLworLy8gICBH
VEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKyNpZiBfTVNDX1ZFUiA+PSAxNDAwCisj
IGRlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyh3YXJuaW5ncykgXAorICAg
IF9fcHJhZ21hKHdhcm5pbmcocHVzaCkpICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9f
cHJhZ21hKHdhcm5pbmcoZGlzYWJsZTogd2FybmluZ3MpKQorIyBkZWZpbmUgR1RFU1RfRElTQUJM
RV9NU0NfV0FSTklOR1NfUE9QXygpICAgICAgICAgIFwKKyAgICBfX3ByYWdtYSh3YXJuaW5nKHBv
cCkpCiAjZWxzZQotI2RlZmluZSBHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1AgMQotI2VuZGlmICAv
LyBfV0lOMzJfV0NFCi0jZWxpZiBkZWZpbmVkIF9fQVBQTEVfXwotI2RlZmluZSBHVEVTVF9PU19N
QUMgMQotI2VsaWYgZGVmaW5lZCBfX2xpbnV4X18KLSNkZWZpbmUgR1RFU1RfT1NfTElOVVggMQot
I2VsaWYgZGVmaW5lZCBfX0dOVV9fCi0jZGVmaW5lIEdURVNUX09TX0hVUkQgMQotI2VsaWYgZGVm
aW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKF9f
RnJlZUJTRF9rZXJuZWxfXykKLSNkZWZpbmUgR1RFU1RfT1NfRlJFRUJTRCAxCi0jZWxpZiBkZWZp
bmVkIF9fTVZTX18KLSNkZWZpbmUgR1RFU1RfT1NfWk9TIDEKLSNlbGlmIGRlZmluZWQoX19zdW4p
ICYmIGRlZmluZWQoX19TVlI0KQotI2RlZmluZSBHVEVTVF9PU19TT0xBUklTIDEKLSNlbGlmIGRl
ZmluZWQoX0FJWCkKLSNkZWZpbmUgR1RFU1RfT1NfQUlYIDEKLSNlbmRpZiAgLy8gX19DWUdXSU5f
XwotCi0jaWYgR1RFU1RfT1NfQ1lHV0lOIHx8IEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01B
QyB8fCBHVEVTVF9PU19TWU1CSUFOIHx8IFwKLSAgICBHVEVTVF9PU19TT0xBUklTIHx8IEdURVNU
X09TX0FJWCB8fCBHVEVTVF9PU19GUkVFQlNEIHx8IEdURVNUX09TX0hVUkQKKy8vIE9sZGVyIHZl
cnNpb25zIG9mIE1TVkMgZG9uJ3QgaGF2ZSBfX3ByYWdtYS4KKyMgZGVmaW5lIEdURVNUX0RJU0FC
TEVfTVNDX1dBUk5JTkdTX1BVU0hfKHdhcm5pbmdzKQorIyBkZWZpbmUgR1RFU1RfRElTQUJMRV9N
U0NfV0FSTklOR1NfUE9QXygpCisjZW5kaWYKKworLy8gQ2xhbmcgb24gV2luZG93cyBkb2VzIG5v
dCB1bmRlcnN0YW5kIE1TVkMncyBwcmFnbWEgd2FybmluZy4KKy8vIFdlIG5lZWQgY2xhbmctc3Bl
Y2lmaWMgd2F5IHRvIGRpc2FibGUgZnVuY3Rpb24gZGVwcmVjYXRpb24gd2FybmluZy4KKyNpZmRl
ZiBfX2NsYW5nX18KKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVTSF8o
KSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgX1ByYWdtYSgiY2xhbmcgZGlhZ25vc3Rp
YyBwdXNoIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9QcmFnbWEo
ImNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCBcIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNcIiIp
IFwKKyAgICBfUHJhZ21hKCJjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV2RlcHJlY2F0ZWQt
aW1wbGVtZW50YXRpb25zXCIiKQorI2RlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVE
X1BPUF8oKSBcCisgICAgX1ByYWdtYSgiY2xhbmcgZGlhZ25vc3RpYyBwb3AiKQorI2Vsc2UKKyMg
ZGVmaW5lIEdURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVTSF8oKSBcCisgICAgR1RFU1Rf
RElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDk5NikKKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVf
TVNDX0RFUFJFQ0FURURfUE9QXygpIFwKKyAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19Q
T1BfKCkKKyNlbmRpZgorCisjaWZuZGVmIEdURVNUX0xBTkdfQ1hYMTEKKy8vIGdjYyBhbmQgY2xh
bmcgZGVmaW5lIF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fIHdoZW4KKy8vIC1zdGQ9e2MsZ251
fSsrezB4LDExfSBpcyBwYXNzZWQuICBUaGUgQysrMTEgc3RhbmRhcmQgc3BlY2lmaWVzIGEKKy8v
IHZhbHVlIGZvciBfX2NwbHVzcGx1cywgYW5kIHJlY2VudCB2ZXJzaW9ucyBvZiBjbGFuZywgZ2Nj
LCBhbmQKKy8vIHByb2JhYmx5IG90aGVyIGNvbXBpbGVycyBzZXQgdGhhdCB0b28gaW4gQysrMTEg
bW9kZS4KKyMgaWYgX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18gfHwgX19jcGx1c3BsdXMgPj0g
MjAxMTAzTCB8fCBfTVNDX1ZFUiA+PSAxOTAwCisvLyBDb21waWxpbmcgaW4gYXQgbGVhc3QgQysr
MTEgbW9kZS4KKyMgIGRlZmluZSBHVEVTVF9MQU5HX0NYWDExIDEKKyMgZWxzZQorIyAgZGVmaW5l
IEdURVNUX0xBTkdfQ1hYMTEgMAorIyBlbmRpZgorI2VuZGlmCisKKy8vIERpc3RpbmN0IGZyb20g
QysrMTEgbGFuZ3VhZ2Ugc3VwcG9ydCwgc29tZSBlbnZpcm9ubWVudHMgZG9uJ3QgcHJvdmlkZQor
Ly8gcHJvcGVyIEMrKzExIGxpYnJhcnkgc3VwcG9ydC4gTm90YWJseSwgaXQncyBwb3NzaWJsZSB0
byBidWlsZCBpbgorLy8gQysrMTEgbW9kZSB3aGVuIHRhcmdldGluZyBNYWMgT1MgWCAxMC42LCB3
aGljaCBoYXMgYW4gb2xkIGxpYnN0ZGMrKworLy8gd2l0aCBubyBDKysxMSBzdXBwb3J0LgorLy8K
Ky8vIGxpYnN0ZGMrKyBoYXMgc3VmZmljaWVudCBDKysxMSBzdXBwb3J0IGFzIG9mIEdDQyA0LjYu
MCwgX19HTElCQ1hYX18KKy8vIDIwMTEwMzI1LCBidXQgbWFpbnRlbmFuY2UgcmVsZWFzZXMgaW4g
dGhlIDQuNCBhbmQgNC41IHNlcmllcyBmb2xsb3dlZAorLy8gdGhpcyBkYXRlLCBzbyBjaGVjayBm
b3IgdGhvc2UgdmVyc2lvbnMgYnkgdGhlaXIgZGF0ZSBzdGFtcHMuCisvLyBodHRwczovL2djYy5n
bnUub3JnL29ubGluZWRvY3MvbGlic3RkYysrL21hbnVhbC9hYmkuaHRtbCNhYmkudmVyc2lvbmlu
ZworI2lmIEdURVNUX0xBTkdfQ1hYMTEgJiYgXAorICAgICghZGVmaW5lZChfX0dMSUJDWFhfXykg
fHwgKCBcCisgICAgICAgIF9fR0xJQkNYWF9fID49IDIwMTEwMzI1dWwgJiYgIC8qIEdDQyA+PSA0
LjYuMCAqLyBcCisgICAgICAgIC8qIEJsYWNrbGlzdCBvZiBwYXRjaCByZWxlYXNlcyBvZiBvbGRl
ciBicmFuY2hlczogKi8gXAorICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDExMDQxNnVsICYmICAv
KiBHQ0MgNC40LjYgKi8gXAorICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDEyMDMxM3VsICYmICAv
KiBHQ0MgNC40LjcgKi8gXAorICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDExMDQyOHVsICYmICAv
KiBHQ0MgNC41LjMgKi8gXAorICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDEyMDcwMnVsKSkgICAv
KiBHQ0MgNC41LjQgKi8KKyMgZGVmaW5lIEdURVNUX1NURExJQl9DWFgxMSAxCisjZW5kaWYKKwor
Ly8gT25seSB1c2UgQysrMTEgbGlicmFyeSBmZWF0dXJlcyBpZiB0aGUgbGlicmFyeSBwcm92aWRl
cyB0aGVtLgorI2lmIEdURVNUX1NURExJQl9DWFgxMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9C
RUdJTl9BTkRfRU5EXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8gMQor
IyBpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgKF9NU0NfRlVMTF9WRVIgPj0gMTkwMDIzODI0KQor
Ly8gd29ya3Mgb25seSB3aXRoIFZTMjAxNVUyIGFuZCBiZXR0ZXIKKyMgICBkZWZpbmUgR1RFU1Rf
SEFTX1NURF9GVU5DVElPTl8gMQorIyBlbmRpZgorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9JTklU
SUFMSVpFUl9MSVNUXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX01PVkVfIDEKKyMgZGVmaW5l
IEdURVNUX0hBU19TVERfVU5JUVVFX1BUUl8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9TSEFS
RURfUFRSXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfVU5PUkRFUkVEX01BUF8gMQorIyBkZWZpbmUg
R1RFU1RfSEFTX1VOT1JERVJFRF9TRVRfIDEKKyNlbmRpZgorCisvLyBDKysxMSBzcGVjaWZpZXMg
dGhhdCA8dHVwbGU+IHByb3ZpZGVzIHN0ZDo6dHVwbGUuCisvLyBTb21lIHBsYXRmb3JtcyBzdGls
bCBtaWdodCBub3QgaGF2ZSBpdCwgaG93ZXZlci4KKyNpZiBHVEVTVF9MQU5HX0NYWDExCisjIGRl
ZmluZSBHVEVTVF9IQVNfU1REX1RVUExFXyAxCisjIGlmIGRlZmluZWQoX19jbGFuZ19fKQorLy8g
SW5zcGlyZWQgYnkKKy8vIGh0dHBzOi8vY2xhbmcubGx2bS5vcmcvZG9jcy9MYW5ndWFnZUV4dGVu
c2lvbnMuaHRtbCNpbmNsdWRlLWZpbGUtY2hlY2tpbmctbWFjcm9zCisjICBpZiBkZWZpbmVkKF9f
aGFzX2luY2x1ZGUpICYmICFfX2hhc19pbmNsdWRlKDx0dXBsZT4pCisjICAgdW5kZWYgR1RFU1Rf
SEFTX1NURF9UVVBMRV8KKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfTVNDX1ZFUikKKy8vIElu
c3BpcmVkIGJ5IGJvb3N0L2NvbmZpZy9zdGRsaWIvZGlua3Vtd2FyZS5ocHAKKyMgIGlmIGRlZmlu
ZWQoX0NQUExJQl9WRVIpICYmIF9DUFBMSUJfVkVSIDwgNTIwCisjICAgdW5kZWYgR1RFU1RfSEFT
X1NURF9UVVBMRV8KKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX0dMSUJDWFhfXykKKy8vIElu
c3BpcmVkIGJ5IGJvb3N0L2NvbmZpZy9zdGRsaWIvbGlic3RkY3BwMy5ocHAsCisvLyBodHRwOi8v
Z2NjLmdudS5vcmcvZ2NjLTQuMi9jaGFuZ2VzLmh0bWwgYW5kCisvLyBodHRwczovL3dlYi5hcmNo
aXZlLm9yZy93ZWIvMjAxNDAyMjcwNDQ0MjkvZ2NjLmdudS5vcmcvb25saW5lZG9jcy9saWJzdGRj
KysvbWFudWFsL2JrMDFwdDAxY2gwMS5odG1sI21hbnVhbC5pbnRyby5zdGF0dXMuc3RhbmRhcmQu
MjAweAorIyAgaWYgX19HTlVDX18gPCA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5P
Ul9fIDwgMikKKyMgICB1bmRlZiBHVEVTVF9IQVNfU1REX1RVUExFXworIyAgZW5kaWYKKyMgZW5k
aWYKKyNlbmRpZgorCisvLyBCcmluZ3MgaW4gZGVmaW5pdGlvbnMgZm9yIGZ1bmN0aW9ucyB1c2Vk
IGluIHRoZSB0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXgKKy8vIG5hbWVzcGFjZSAocmVhZCwgd3Jp
dGUsIGNsb3NlLCBjaGRpciwgaXNhdHR5LCBzdGF0KS4gV2UgZG8gbm90IGN1cnJlbnRseQorLy8g
dXNlIHRoZW0gb24gV2luZG93cyBNb2JpbGUuCisjaWYgR1RFU1RfT1NfV0lORE9XUworIyBpZiAh
R1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgIGluY2x1ZGUgPGRpcmVjdC5oPgorIyAgaW5jbHVk
ZSA8aW8uaD4KKyMgZW5kaWYKKy8vIEluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBpbmNsdWRl
IDx3aW5kb3dzLmg+LCB1c2UgZm9yd2FyZCBkZWNsYXJhdGlvbgorI2lmIEdURVNUX09TX1dJTkRP
V1NfTUlOR1cgJiYgIWRlZmluZWQoX19NSU5HVzY0X1ZFUlNJT05fTUFKT1IpCisvLyBNaW5HVyBk
ZWZpbmVkIF9DUklUSUNBTF9TRUNUSU9OIGFuZCBfUlRMX0NSSVRJQ0FMX1NFQ1RJT04gYXMgdHdv
CisvLyBzZXBhcmF0ZSAoZXF1aXZhbGVudCkgc3RydWN0cywgaW5zdGVhZCBvZiB1c2luZyB0eXBl
ZGVmCit0eXBlZGVmIHN0cnVjdCBfQ1JJVElDQUxfU0VDVElPTiBHVEVTVF9DUklUSUNBTF9TRUNU
SU9OOworI2Vsc2UKKy8vIEFzc3VtZSBDUklUSUNBTF9TRUNUSU9OIGlzIGEgdHlwZWRlZiBvZiBf
UlRMX0NSSVRJQ0FMX1NFQ1RJT04uCisvLyBUaGlzIGFzc3VtcHRpb24gaXMgdmVyaWZpZWQgYnkK
Ky8vIFdpbmRvd3NUeXBlc1Rlc3QuQ1JJVElDQUxfU0VDVElPTklzX1JUTF9DUklUSUNBTF9TRUNU
SU9OLgordHlwZWRlZiBzdHJ1Y3QgX1JUTF9DUklUSUNBTF9TRUNUSU9OIEdURVNUX0NSSVRJQ0FM
X1NFQ1RJT047CisjZW5kaWYKKyNlbHNlCisvLyBUaGlzIGFzc3VtZXMgdGhhdCBub24tV2luZG93
cyBPU2VzIHByb3ZpZGUgdW5pc3RkLmguIEZvciBPU2VzIHdoZXJlIHRoaXMKKy8vIGlzIG5vdCB0
aGUgY2FzZSwgd2UgbmVlZCB0byBpbmNsdWRlIGhlYWRlcnMgdGhhdCBwcm92aWRlIHRoZSBmdW5j
dGlvbnMKKy8vIG1lbnRpb25lZCBhYm92ZS4KKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjIGluY2x1
ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjaWYgR1RFU1Rf
T1NfTElOVVhfQU5EUk9JRAorLy8gVXNlZCB0byBkZWZpbmUgX19BTkRST0lEX0FQSV9fIG1hdGNo
aW5nIHRoZSB0YXJnZXQgTkRLIEFQSSBsZXZlbC4KKyMgIGluY2x1ZGUgPGFuZHJvaWQvYXBpLWxl
dmVsLmg+ICAvLyBOT0xJTlQKKyNlbmRpZgorCisvLyBEZWZpbmVzIHRoaXMgdG8gdHJ1ZSBpZmYg
R29vZ2xlIFRlc3QgY2FuIHVzZSBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb25zLgorI2lmbmRlZiBH
VEVTVF9IQVNfUE9TSVhfUkUKKyMgaWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRAorLy8gT24gQW5k
cm9pZCwgPHJlZ2V4Lmg+IGlzIG9ubHkgYXZhaWxhYmxlIHN0YXJ0aW5nIHdpdGggR2luZ2VyYnJl
YWQuCisjICBkZWZpbmUgR1RFU1RfSEFTX1BPU0lYX1JFIChfX0FORFJPSURfQVBJX18gPj0gOSkK
KyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0hBU19QT1NJWF9SRSAoIUdURVNUX09TX1dJTkRPV1Mp
CisjIGVuZGlmCisjZW5kaWYKKworI2lmIEdURVNUX1VTRVNfUENSRQorLy8gVGhlIGFwcHJvcHJp
YXRlIGhlYWRlcnMgaGF2ZSBhbHJlYWR5IGJlZW4gaW5jbHVkZWQuCisKKyNlbGlmIEdURVNUX0hB
U19QT1NJWF9SRQogCiAvLyBPbiBzb21lIHBsYXRmb3JtcywgPHJlZ2V4Lmg+IG5lZWRzIHNvbWVv
bmUgdG8gZGVmaW5lIHNpemVfdCwgYW5kCiAvLyB3b24ndCBjb21waWxlIG90aGVyd2lzZS4gIFdl
IGNhbiAjaW5jbHVkZSBpdCBoZXJlIGFzIHdlIGFscmVhZHkKIC8vIGluY2x1ZGVkIDxzdGRsaWIu
aD4sIHdoaWNoIGlzIGd1YXJhbnRlZWQgdG8gZGVmaW5lIHNpemVfdCB0aHJvdWdoCiAvLyA8c3Rk
ZGVmLmg+LgotI2lmIEhBVkUoUkVHRVhfSCkKLSNpbmNsdWRlIDxyZWdleC5oPiAgLy8gTk9MSU5U
Ci0jZGVmaW5lIEdURVNUX1VTRVNfUE9TSVhfUkUgMQotI2Vsc2UKLSNkZWZpbmUgR1RFU1RfVVNF
U19TSU1QTEVfUkUgMQotI2VuZGlmCi0jaW5jbHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5UCi0j
aW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDx0aW1lLmg+ICAvLyBO
T0xJTlQKLSNpbmNsdWRlIDx1bmlzdGQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxyZWdleC5o
PiAgLy8gTk9MSU5UCiAKKyMgZGVmaW5lIEdURVNUX1VTRVNfUE9TSVhfUkUgMQogCiAjZWxpZiBH
VEVTVF9PU19XSU5ET1dTCiAKLSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSNpbmNsdWRl
IDxkaXJlY3QuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPGlvLmg+ICAvLyBOT0xJTlQKLSNlbmRp
ZgotCiAvLyA8cmVnZXguaD4gaXMgbm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLiAgVXNlIG91ciBv
d24gc2ltcGxlIHJlZ2V4CiAvLyBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkLgotI2RlZmluZSBHVEVT
VF9VU0VTX1NJTVBMRV9SRSAxCisjIGRlZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9SRSAxCiAKICNl
bHNlCiAKIC8vIDxyZWdleC5oPiBtYXkgbm90IGJlIGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3Jt
LiAgVXNlIG91ciBvd24KIC8vIHNpbXBsZSByZWdleCBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkLgot
I2RlZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9SRSAxCisjIGRlZmluZSBHVEVTVF9VU0VTX1NJTVBM
RV9SRSAxCiAKLSNlbmRpZiAgLy8gR1RFU1RfT1NfQ1lHV0lOIHx8IEdURVNUX09TX0xJTlVYIHx8
IEdURVNUX09TX01BQyB8fAotICAgICAgICAvLyBHVEVTVF9PU19TWU1CSUFOIHx8IEdURVNUX09T
X1NPTEFSSVMgfHwgR1RFU1RfT1NfQUlYIHx8Ci0gICAgICAgIC8vIEdURVNUX09TX0ZSRUVCU0Qg
fHwgR1RFU1RfT1NfSFVSRAorI2VuZGlmICAvLyBHVEVTVF9VU0VTX1BDUkUKIAogI2lmbmRlZiBH
VEVTVF9IQVNfRVhDRVBUSU9OUwogLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMgd2hldGhlciBl
eGNlcHRpb25zIGFyZSBlbmFibGVkLCBzbyB3ZSBuZWVkCiAvLyB0byBmaWd1cmUgaXQgb3V0Lgot
I2lmIGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQotLy8gTVNWQydz
IGFuZCBDKytCdWlsZGVyJ3MgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBTVEwgdXNlIHRoZSBfSEFT
X0VYQ0VQVElPTlMKKyMgaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZChfQ1BQVU5XSU5E
KQorLy8gTVNWQyBkZWZpbmVzIF9DUFBVTldJTkQgdG8gMSBpZmYgZXhjZXB0aW9ucyBhcmUgZW5h
YmxlZC4KKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCisjIGVsaWYgZGVmaW5lZChf
X0JPUkxBTkRDX18pCisvLyBDKytCdWlsZGVyJ3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNUTCB1
c2VzIHRoZSBfSEFTX0VYQ0VQVElPTlMKIC8vIG1hY3JvIHRvIGVuYWJsZSBleGNlcHRpb25zLCBz
byB3ZSdsbCBkbyB0aGUgc2FtZS4KIC8vIEFzc3VtZXMgdGhhdCBleGNlcHRpb25zIGFyZSBlbmFi
bGVkIGJ5IGRlZmF1bHQuCi0jaWZuZGVmIF9IQVNfRVhDRVBUSU9OUwotI2RlZmluZSBfSEFTX0VY
Q0VQVElPTlMgMQotI2VuZGlmICAvLyBfSEFTX0VYQ0VQVElPTlMKLSNkZWZpbmUgR1RFU1RfSEFT
X0VYQ0VQVElPTlMgX0hBU19FWENFUFRJT05TCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBf
X0VYQ0VQVElPTlMKKyMgIGlmbmRlZiBfSEFTX0VYQ0VQVElPTlMKKyMgICBkZWZpbmUgX0hBU19F
WENFUFRJT05TIDEKKyMgIGVuZGlmICAvLyBfSEFTX0VYQ0VQVElPTlMKKyMgIGRlZmluZSBHVEVT
VF9IQVNfRVhDRVBUSU9OUyBfSEFTX0VYQ0VQVElPTlMKKyMgZWxpZiBkZWZpbmVkKF9fY2xhbmdf
XykKKy8vIGNsYW5nIGRlZmluZXMgX19FWENFUFRJT05TIGlmZiBleGNlcHRpb25zIGFyZSBlbmFi
bGVkIGJlZm9yZSBjbGFuZyAyMjA3MTQsCisvLyBidXQgaWZmIGNsZWFudXBzIGFyZSBlbmFibGVk
IGFmdGVyIHRoYXQuIEluIE9iai1DKysgZmlsZXMsIHRoZXJlIGNhbiBiZQorLy8gY2xlYW51cHMg
Zm9yIE9iakMgZXhjZXB0aW9ucyB3aGljaCBhbHNvIG5lZWQgY2xlYW51cHMsIGV2ZW4gaWYgQysr
IGV4Y2VwdGlvbnMKKy8vIGFyZSBkaXNhYmxlZC4gY2xhbmcgaGFzIF9faGFzX2ZlYXR1cmUoY3h4
X2V4Y2VwdGlvbnMpIHdoaWNoIGNoZWNrcyBmb3IgQysrCisvLyBleGNlcHRpb25zIHN0YXJ0aW5n
IGF0IGNsYW5nIHIyMDYzNTIsIGJ1dCB3aGljaCBjaGVja2VkIGZvciBjbGVhbnVwcyBwcmlvciB0
bworLy8gdGhhdC4gVG8gcmVsaWFibHkgY2hlY2sgZm9yIEMrKyBleGNlcHRpb24gYXZhaWxhYmls
aXR5IHdpdGggY2xhbmcsIGNoZWNrIGZvcgorLy8gX19FWENFUFRJT05TICYmIF9faGFzX2ZlYXR1
cmUoY3h4X2V4Y2VwdGlvbnMpLgorIyAgZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIChfX0VY
Q0VQVElPTlMgJiYgX19oYXNfZmVhdHVyZShjeHhfZXhjZXB0aW9ucykpCisjIGVsaWYgZGVmaW5l
ZChfX0dOVUNfXykgJiYgX19FWENFUFRJT05TCiAvLyBnY2MgZGVmaW5lcyBfX0VYQ0VQVElPTlMg
dG8gMSBpZmYgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZC4KLSNkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQ
VElPTlMgMQotI2VsaWYgZGVmaW5lZChfX1NVTlBST19DQykKKyMgIGRlZmluZSBHVEVTVF9IQVNf
RVhDRVBUSU9OUyAxCisjIGVsaWYgZGVmaW5lZChfX1NVTlBST19DQykKIC8vIFN1biBQcm8gQ0Mg
c3VwcG9ydHMgZXhjZXB0aW9ucy4gIEhvd2V2ZXIsIHRoZXJlIGlzIG5vIGNvbXBpbGUtdGltZSB3
YXkgb2YKIC8vIGRldGVjdGluZyB3aGV0aGVyIHRoZXkgYXJlIGVuYWJsZWQgb3Igbm90LiAgVGhl
cmVmb3JlLCB3ZSBhc3N1bWUgdGhhdAogLy8gdGhleSBhcmUgZW5hYmxlZCB1bmxlc3MgdGhlIHVz
ZXIgdGVsbHMgdXMgb3RoZXJ3aXNlLgotI2RlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCi0j
ZWxpZiBkZWZpbmVkKF9fSUJNQ1BQX18pICYmIF9fRVhDRVBUSU9OUworIyAgZGVmaW5lIEdURVNU
X0hBU19FWENFUFRJT05TIDEKKyMgZWxpZiBkZWZpbmVkKF9fSUJNQ1BQX18pICYmIF9fRVhDRVBU
SU9OUwogLy8geGxDIGRlZmluZXMgX19FWENFUFRJT05TIHRvIDEgaWZmIGV4Y2VwdGlvbnMgYXJl
IGVuYWJsZWQuCi0jZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIDEKLSNlbHNlCisjICBkZWZp
bmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMQorIyBlbGlmIGRlZmluZWQoX19IUF9hQ0MpCisvLyBF
eGNlcHRpb24gaGFuZGxpbmcgaXMgaW4gZWZmZWN0IGJ5IGRlZmF1bHQgaW4gSFAgYUNDIGNvbXBp
bGVyLiBJdCBoYXMgdG8KKy8vIGJlIHR1cm5lZCBvZiBieSArbm9laCBjb21waWxlciBvcHRpb24g
aWYgZGVzaXJlZC4KKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCisjIGVsc2UKIC8v
IEZvciBvdGhlciBjb21waWxlcnMsIHdlIGFzc3VtZSBleGNlcHRpb25zIGFyZSBkaXNhYmxlZCB0
byBiZQogLy8gY29uc2VydmF0aXZlLgotI2RlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAwCi0j
ZW5kaWYgIC8vIGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQorIyAg
ZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIDAKKyMgZW5kaWYgIC8vIGRlZmluZWQoX01TQ19W
RVIpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQogI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBU
SU9OUwogCiAjaWYgIWRlZmluZWQoR1RFU1RfSEFTX1NURF9TVFJJTkcpCiAvLyBFdmVuIHRob3Vn
aCB3ZSBkb24ndCB1c2UgdGhpcyBtYWNybyBhbnkgbG9uZ2VyLCB3ZSBrZWVwIGl0IGluIGNhc2UK
IC8vIHNvbWUgY2xpZW50cyBzdGlsbCBkZXBlbmQgb24gaXQuCi0jZGVmaW5lIEdURVNUX0hBU19T
VERfU1RSSU5HIDEKKyMgZGVmaW5lIEdURVNUX0hBU19TVERfU1RSSU5HIDEKICNlbGlmICFHVEVT
VF9IQVNfU1REX1NUUklORwogLy8gVGhlIHVzZXIgdG9sZCB1cyB0aGF0IDo6c3RkOjpzdHJpbmcg
aXNuJ3QgYXZhaWxhYmxlLgotI2Vycm9yICJHb29nbGUgVGVzdCBjYW5ub3QgYmUgdXNlZCB3aGVy
ZSA6OnN0ZDo6c3RyaW5nIGlzbid0IGF2YWlsYWJsZS4iCisjIGVycm9yICI6OnN0ZDo6c3RyaW5n
IGlzbid0IGF2YWlsYWJsZS4iCiAjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0hBU19TVERfU1RS
SU5HKQogCiAjaWZuZGVmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0vLyBUaGUgdXNlciBkaWRu
J3QgdGVsbCB1cyB3aGV0aGVyIDo6c3RyaW5nIGlzIGF2YWlsYWJsZSwgc28gd2UgbmVlZAotLy8g
dG8gZmlndXJlIGl0IG91dC4KLQotI2RlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORyAwCi0K
KyMgZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HIDAKICNlbmRpZiAgLy8gR1RFU1RfSEFT
X0dMT0JBTF9TVFJJTkcKIAogI2lmbmRlZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKIC8vIFRoZSB1
c2VyIGRpZG4ndCB0ZWxsIHVzIHdoZXRoZXIgOjpzdGQ6OndzdHJpbmcgaXMgYXZhaWxhYmxlLCBz
byB3ZSBuZWVkCiAvLyB0byBmaWd1cmUgaXQgb3V0LgotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6
IHVzZXMgYXV0b2NvbmYgdG8gZGV0ZWN0IHdoZXRoZXIgOjpzdGQ6OndzdHJpbmcKKy8vIEZJWE1F
OiB1c2VzIGF1dG9jb25mIHRvIGRldGVjdCB3aGV0aGVyIDo6c3RkOjp3c3RyaW5nCiAvLyAgIGlz
IGF2YWlsYWJsZS4KIAotLy8gQ3lnd2luIDEuNSBhbmQgYmVsb3cgZG9lc24ndCBzdXBwb3J0IDo6
c3RkOjp3c3RyaW5nLgotLy8gQ3lnd2luIDEuNyBtaWdodCBhZGQgd3N0cmluZyBzdXBwb3J0OyB0
aGlzIHNob3VsZCBiZSB1cGRhdGVkIHdoZW4gY2xlYXIuCi0vLyBTb2xhcmlzJyBsaWJjKysgZG9l
c24ndCBzdXBwb3J0IGl0IGVpdGhlci4KLSNkZWZpbmUgR1RFU1RfSEFTX1NURF9XU1RSSU5HICgh
KEdURVNUX09TX0NZR1dJTiB8fCBHVEVTVF9PU19TT0xBUklTKSkKKy8vIEN5Z3dpbiAxLjcgYW5k
IGJlbG93IGRvZXNuJ3Qgc3VwcG9ydCA6OnN0ZDo6d3N0cmluZy4KKy8vIFNvbGFyaXMnIGxpYmMr
KyBkb2Vzbid0IHN1cHBvcnQgaXQgZWl0aGVyLiAgQW5kcm9pZCBoYXMKKy8vIG5vIHN1cHBvcnQg
Zm9yIGl0IGF0IGxlYXN0IGFzIHJlY2VudCBhcyBGcm95byAoMi4yKS4KKyMgZGVmaW5lIEdURVNU
X0hBU19TVERfV1NUUklORyBcCisgICAgKCEoR1RFU1RfT1NfTElOVVhfQU5EUk9JRCB8fCBHVEVT
VF9PU19DWUdXSU4gfHwgR1RFU1RfT1NfU09MQVJJUykpCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFT
X1NURF9XU1RSSU5HCiAKICNpZm5kZWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCiAvLyBUaGUg
dXNlciBkaWRuJ3QgdGVsbCB1cyB3aGV0aGVyIDo6d3N0cmluZyBpcyBhdmFpbGFibGUsIHNvIHdl
IG5lZWQKIC8vIHRvIGZpZ3VyZSBpdCBvdXQuCi0jZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfV1NU
UklORyBcCisjIGRlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcgXAogICAgIChHVEVTVF9I
QVNfU1REX1dTVFJJTkcgJiYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcpCiAjZW5kaWYgIC8vIEdU
RVNUX0hBU19HTE9CQUxfV1NUUklORwogCkBAIC0zNDQsMTMzICs1NzAsMjEyIEBACiAvLyBUaGUg
dXNlciBkaWRuJ3QgdGVsbCB1cyB3aGV0aGVyIFJUVEkgaXMgZW5hYmxlZCwgc28gd2UgbmVlZCB0
bwogLy8gZmlndXJlIGl0IG91dC4KIAotI2lmZGVmIF9NU0NfVkVSCisjIGlmZGVmIF9NU0NfVkVS
CiAKLSNpZmRlZiBfQ1BQUlRUSSAgLy8gTVNWQyBkZWZpbmVzIHRoaXMgbWFjcm8gaWZmIFJUVEkg
aXMgZW5hYmxlZC4KLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQotI2Vsc2UKLSNkZWZpbmUgR1RF
U1RfSEFTX1JUVEkgMAotI2VuZGlmCisjICBpZmRlZiBfQ1BQUlRUSSAgLy8gTVNWQyBkZWZpbmVz
IHRoaXMgbWFjcm8gaWZmIFJUVEkgaXMgZW5hYmxlZC4KKyMgICBkZWZpbmUgR1RFU1RfSEFTX1JU
VEkgMQorIyAgZWxzZQorIyAgIGRlZmluZSBHVEVTVF9IQVNfUlRUSSAwCisjICBlbmRpZgogCiAv
LyBTdGFydGluZyB3aXRoIHZlcnNpb24gNC4zLjIsIGdjYyBkZWZpbmVzIF9fR1hYX1JUVEkgaWZm
IFJUVEkgaXMgZW5hYmxlZC4KLSNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIChHVEVTVF9HQ0Nf
VkVSXyA+PSA0MDMwMikKLQotI2lmZGVmIF9fR1hYX1JUVEkKLSNkZWZpbmUgR1RFU1RfSEFTX1JU
VEkgMQotI2Vsc2UKLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAotI2VuZGlmICAvLyBfX0dYWF9S
VFRJCisjIGVsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMzAy
KQorCisjICBpZmRlZiBfX0dYWF9SVFRJCisvLyBXaGVuIGJ1aWxkaW5nIGFnYWluc3QgU1RMcG9y
dCB3aXRoIHRoZSBBbmRyb2lkIE5ESyBhbmQgd2l0aAorLy8gLWZydHRpIC1mbm8tZXhjZXB0aW9u
cywgdGhlIGJ1aWxkIGZhaWxzIGF0IGxpbmsgdGltZSB3aXRoIHVuZGVmaW5lZAorLy8gcmVmZXJl
bmNlcyB0byBfX2N4YV9iYWRfdHlwZWlkLiBOb3RlIHN1cmUgaWYgU1RMIG9yIHRvb2xjaGFpbiBi
dWcsCisvLyBzbyBkaXNhYmxlIFJUVEkgd2hlbiBkZXRlY3RlZC4KKyMgICBpZiBHVEVTVF9PU19M
SU5VWF9BTkRST0lEICYmIGRlZmluZWQoX1NUTFBPUlRfTUFKT1IpICYmIFwKKyAgICAgICAhZGVm
aW5lZChfX0VYQ0VQVElPTlMpCisjICAgIGRlZmluZSBHVEVTVF9IQVNfUlRUSSAwCisjICAgZWxz
ZQorIyAgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQorIyAgIGVuZGlmICAvLyBHVEVTVF9PU19M
SU5VWF9BTkRST0lEICYmIF9fU1RMUE9SVF9NQUpPUiAmJiAhX19FWENFUFRJT05TCisjICBlbHNl
CisjICAgZGVmaW5lIEdURVNUX0hBU19SVFRJIDAKKyMgIGVuZGlmICAvLyBfX0dYWF9SVFRJCisK
Ky8vIENsYW5nIGRlZmluZXMgX19HWFhfUlRUSSBzdGFydGluZyB3aXRoIHZlcnNpb24gMy4wLCBi
dXQgaXRzIG1hbnVhbCByZWNvbW1lbmRzCisvLyB1c2luZyBoYXNfZmVhdHVyZSBpbnN0ZWFkLiBo
YXNfZmVhdHVyZShjeHhfcnR0aSkgaXMgc3VwcG9ydGVkIHNpbmNlIDIuNywgdGhlCisvLyBmaXJz
dCB2ZXJzaW9uIHdpdGggQysrIHN1cHBvcnQuCisjIGVsaWYgZGVmaW5lZChfX2NsYW5nX18pCisK
KyMgIGRlZmluZSBHVEVTVF9IQVNfUlRUSSBfX2hhc19mZWF0dXJlKGN4eF9ydHRpKQogCiAvLyBT
dGFydGluZyB3aXRoIHZlcnNpb24gOS4wIElCTSBWaXN1YWwgQWdlIGRlZmluZXMgX19SVFRJX0FM
TF9fIHRvIDEgaWYKIC8vIGJvdGggdGhlIHR5cGVpZCBhbmQgZHluYW1pY19jYXN0IGZlYXR1cmVz
IGFyZSBwcmVzZW50LgotI2VsaWYgZGVmaW5lZChfX0lCTUNQUF9fKSAmJiAoX19JQk1DUFBfXyA+
PSA5MDApCisjIGVsaWYgZGVmaW5lZChfX0lCTUNQUF9fKSAmJiAoX19JQk1DUFBfXyA+PSA5MDAp
CiAKLSNpZmRlZiBfX1JUVElfQUxMX18KLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQotI2Vsc2UK
LSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAotI2VuZGlmCisjICBpZmRlZiBfX1JUVElfQUxMX18K
KyMgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQorIyAgZWxzZQorIyAgIGRlZmluZSBHVEVTVF9I
QVNfUlRUSSAwCisjICBlbmRpZgogCi0jZWxzZQorIyBlbHNlCiAKIC8vIEZvciBhbGwgb3RoZXIg
Y29tcGlsZXJzLCB3ZSBhc3N1bWUgUlRUSSBpcyBlbmFibGVkLgotI2RlZmluZSBHVEVTVF9IQVNf
UlRUSSAxCisjICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQogCi0jZW5kaWYgIC8vIF9NU0NfVkVS
CisjIGVuZGlmICAvLyBfTVNDX1ZFUgogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19SVFRJCiAKIC8v
IEl0J3MgdGhpcyBoZWFkZXIncyByZXNwb25zaWJpbGl0eSB0byAjaW5jbHVkZSA8dHlwZWluZm8+
IHdoZW4gUlRUSQogLy8gaXMgZW5hYmxlZC4KICNpZiBHVEVTVF9IQVNfUlRUSQotI2luY2x1ZGUg
PHR5cGVpbmZvPgorIyBpbmNsdWRlIDx0eXBlaW5mbz4KICNlbmRpZgogCiAvLyBEZXRlcm1pbmVz
IHdoZXRoZXIgR29vZ2xlIFRlc3QgY2FuIHVzZSB0aGUgcHRocmVhZHMgbGlicmFyeS4KICNpZm5k
ZWYgR1RFU1RfSEFTX1BUSFJFQUQKLS8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIGV4cGxpY2l0
bHksIHNvIHdlIGFzc3VtZSBwdGhyZWFkcyBzdXBwb3J0IGlzCi0vLyBhdmFpbGFibGUgb24gTGlu
dXggYW5kIE1hYy4KKy8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIGV4cGxpY2l0bHksIHNvIHdl
IG1ha2UgcmVhc29uYWJsZSBhc3N1bXB0aW9ucyBhYm91dAorLy8gd2hpY2ggcGxhdGZvcm1zIGhh
dmUgcHRocmVhZHMgc3VwcG9ydC4KIC8vCiAvLyBUbyBkaXNhYmxlIHRocmVhZGluZyBzdXBwb3J0
IGluIEdvb2dsZSBUZXN0LCBhZGQgLURHVEVTVF9IQVNfUFRIUkVBRD0wCiAvLyB0byB5b3VyIGNv
bXBpbGVyIGZsYWdzLgotI2RlZmluZSBHVEVTVF9IQVNfUFRIUkVBRCAoR1RFU1RfT1NfTElOVVgg
fHwgR1RFU1RfT1NfRlJFRUJTRCB8fCBHVEVTVF9PU19IVVJEIHx8IEdURVNUX09TX01BQykKKyNk
ZWZpbmUgR1RFU1RfSEFTX1BUSFJFQUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgIChHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19NQUMgfHwgR1RFU1Rf
T1NfSFBVWCB8fCBHVEVTVF9PU19RTlggfHwgXAorICAgR1RFU1RfT1NfRlJFRUJTRCB8fCBHVEVT
VF9PU19OQUNMIHx8IEdURVNUX09TX05FVEJTRCB8fCBHVEVTVF9PU19GVUNIU0lBKQogI2VuZGlm
ICAvLyBHVEVTVF9IQVNfUFRIUkVBRAogCisjaWYgR1RFU1RfSEFTX1BUSFJFQUQKKy8vIGd0ZXN0
LXBvcnQuaCBndWFyYW50ZWVzIHRvICNpbmNsdWRlIDxwdGhyZWFkLmg+IHdoZW4gR1RFU1RfSEFT
X1BUSFJFQUQgaXMKKy8vIHRydWUuCisjIGluY2x1ZGUgPHB0aHJlYWQuaD4gIC8vIE5PTElOVAor
CisvLyBGb3IgdGltZXNwZWMgYW5kIG5hbm9zbGVlcCwgdXNlZCBiZWxvdy4KKyMgaW5jbHVkZSA8
dGltZS5oPiAgLy8gTk9MSU5UCisjZW5kaWYKKworLy8gRGV0ZXJtaW5lcyBpZiBoYXNoX21hcC9o
YXNoX3NldCBhcmUgYXZhaWxhYmxlLgorLy8gT25seSB1c2VkIGZvciB0ZXN0aW5nIGFnYWluc3Qg
dGhvc2UgY29udGFpbmVycy4KKyNpZiAhZGVmaW5lZChHVEVTVF9IQVNfSEFTSF9NQVBfKQorIyBp
ZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPCAxOTAwKQorIyAgZGVmaW5lIEdURVNU
X0hBU19IQVNIX01BUF8gMSAgLy8gSW5kaWNhdGVzIHRoYXQgaGFzaF9tYXAgaXMgYXZhaWxhYmxl
LgorIyAgZGVmaW5lIEdURVNUX0hBU19IQVNIX1NFVF8gMSAgLy8gSW5kaWNhdGVzIHRoYXQgaGFz
aF9zZXQgaXMgYXZhaWxhYmxlLgorIyBlbmRpZiAgLy8gX01TQ19WRVIKKyNlbmRpZiAgLy8gIWRl
ZmluZWQoR1RFU1RfSEFTX0hBU0hfTUFQXykKKwogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIEdvb2ds
ZSBUZXN0IGNhbiB1c2UgdHIxL3R1cGxlLiAgWW91IGNhbiBkZWZpbmUKIC8vIHRoaXMgbWFjcm8g
dG8gMCB0byBwcmV2ZW50IEdvb2dsZSBUZXN0IGZyb20gdXNpbmcgdHVwbGUgKGFueQogLy8gZmVh
dHVyZSBkZXBlbmRpbmcgb24gdHVwbGUgd2l0aCBiZSBkaXNhYmxlZCBpbiB0aGlzIG1vZGUpLgog
I2lmbmRlZiBHVEVTVF9IQVNfVFIxX1RVUExFCisjIGlmIEdURVNUX09TX0xJTlVYX0FORFJPSUQg
JiYgZGVmaW5lZChfU1RMUE9SVF9NQUpPUikKKy8vIFNUTHBvcnQsIHByb3ZpZGVkIHdpdGggdGhl
IEFuZHJvaWQgTkRLLCBoYXMgbmVpdGhlciA8dHIxL3R1cGxlPiBvciA8dHVwbGU+LgorIyAgZGVm
aW5lIEdURVNUX0hBU19UUjFfVFVQTEUgMAorIyBlbGlmIGRlZmluZWQoX01TQ19WRVIpICYmIChf
TVNDX1ZFUiA+PSAxOTEwKQorLy8gUHJldmVudCBgd2FybmluZyBDNDk5NjogJ3N0ZDo6dHIxJzog
d2FybmluZyBTVEw0MDAyOgorLy8gVGhlIG5vbi1TdGFuZGFyZCBzdGQ6OnRyMSBuYW1lc3BhY2Ug
YW5kIFRSMS1vbmx5IG1hY2hpbmVyeQorLy8gYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgUkVN
T1ZFRC5gCisjICBkZWZpbmUgR1RFU1RfSEFTX1RSMV9UVVBMRSAwCisjIGVsaWYgR1RFU1RfTEFO
R19DWFgxMSAmJiBkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikKKy8vIGxpYmMrKyBkb2Vzbid0IHN1
cHBvcnQgVFIxLgorIyAgZGVmaW5lIEdURVNUX0hBU19UUjFfVFVQTEUgMAorIyBlbHNlCiAvLyBU
aGUgdXNlciBkaWRuJ3QgdGVsbCB1cyBub3QgdG8gZG8gaXQsIHNvIHdlIGFzc3VtZSBpdCdzIE9L
LgotI2RlZmluZSBHVEVTVF9IQVNfVFIxX1RVUExFIDEKKyMgIGRlZmluZSBHVEVTVF9IQVNfVFIx
X1RVUExFIDEKKyMgZW5kaWYKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRQogCiAvLyBE
ZXRlcm1pbmVzIHdoZXRoZXIgR29vZ2xlIFRlc3QncyBvd24gdHIxIHR1cGxlIGltcGxlbWVudGF0
aW9uCiAvLyBzaG91bGQgYmUgdXNlZC4KICNpZm5kZWYgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUK
Ky8vIFdlIHVzZSBvdXIgb3duIHR1cGxlIGltcGxlbWVudGF0aW9uIG9uIFN5bWJpYW4uCisjIGlm
IEdURVNUX09TX1NZTUJJQU4KKyMgIGRlZmluZSBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSAxCisj
IGVsc2UKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzLCBzbyB3ZSBuZWVkIHRvIGZpZ3VyZSBp
dCBvdXQuCiAKIC8vIFdlIHVzZSBvdXIgb3duIFRSMSB0dXBsZSBpZiB3ZSBhcmVuJ3Qgc3VyZSB0
aGUgdXNlciBoYXMgYW4KLS8vIGltcGxlbWVudGF0aW9uIG9mIGl0IGFscmVhZHkuICBBdCB0aGlz
IHRpbWUsIEdDQyA0LjAuMCsgYW5kIE1TVkMKLS8vIDIwMTAgYXJlIHRoZSBvbmx5IG1haW5zdHJl
YW0gY29tcGlsZXJzIHRoYXQgY29tZSB3aXRoIGEgVFIxIHR1cGxlCi0vLyBpbXBsZW1lbnRhdGlv
bi4gIE5WSURJQSdzIENVREEgTlZDQyBjb21waWxlciBwcmV0ZW5kcyB0byBiZSBHQ0MgYnkKLS8v
IGRlZmluaW5nIF9fR05VQ19fIGFuZCBmcmllbmRzLCBidXQgY2Fubm90IGNvbXBpbGUgR0NDJ3Mg
dHVwbGUKLS8vIGltcGxlbWVudGF0aW9uLiAgTVNWQyAyMDA4ICg5LjApIHByb3ZpZGVzIFRSMSB0
dXBsZSBpbiBhIDMyMyBNQgotLy8gRmVhdHVyZSBQYWNrIGRvd25sb2FkLCB3aGljaCB3ZSBjYW5u
b3QgYXNzdW1lIHRoZSB1c2VyIGhhcy4KLSNpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmlu
ZWQoX19DVURBQ0NfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMDAwKSkgXAotICAgIHx8IF9N
U0NfVkVSID49IDE2MDAKLSNkZWZpbmUgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgMAotI2Vsc2UK
LSNkZWZpbmUgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgMQotI2VuZGlmCi0KKy8vIGltcGxlbWVu
dGF0aW9uIG9mIGl0IGFscmVhZHkuICBBdCB0aGlzIHRpbWUsIGxpYnN0ZGMrKyA0LjAuMCsgYW5k
CisvLyBNU1ZDIDIwMTAgYXJlIHRoZSBvbmx5IG1haW5zdHJlYW0gc3RhbmRhcmQgbGlicmFyaWVz
IHRoYXQgY29tZQorLy8gd2l0aCBhIFRSMSB0dXBsZSBpbXBsZW1lbnRhdGlvbi4gIE5WSURJQSdz
IENVREEgTlZDQyBjb21waWxlcgorLy8gcHJldGVuZHMgdG8gYmUgR0NDIGJ5IGRlZmluaW5nIF9f
R05VQ19fIGFuZCBmcmllbmRzLCBidXQgY2Fubm90CisvLyBjb21waWxlIEdDQydzIHR1cGxlIGlt
cGxlbWVudGF0aW9uLiAgTVNWQyAyMDA4ICg5LjApIHByb3ZpZGVzIFRSMQorLy8gdHVwbGUgaW4g
YSAzMjMgTUIgRmVhdHVyZSBQYWNrIGRvd25sb2FkLCB3aGljaCB3ZSBjYW5ub3QgYXNzdW1lIHRo
ZQorLy8gdXNlciBoYXMuICBRTlgncyBRQ0MgY29tcGlsZXIgaXMgYSBtb2RpZmllZCBHQ0MgYnV0
IGl0IGRvZXNuJ3QKKy8vIHN1cHBvcnQgVFIxIHR1cGxlLiAgbGliYysrIG9ubHkgcHJvdmlkZXMg
c3RkOjp0dXBsZSwgaW4gQysrMTEgbW9kZSwKKy8vIGFuZCBpdCBjYW4gYmUgdXNlZCB3aXRoIHNv
bWUgY29tcGlsZXJzIHRoYXQgZGVmaW5lIF9fR05VQ19fLgorIyBpZiAoZGVmaW5lZChfX0dOVUNf
XykgJiYgIWRlZmluZWQoX19DVURBQ0NfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMDAwKSBc
CisgICAgICAmJiAhR1RFU1RfT1NfUU5YICYmICFkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikpIFwK
KyAgICAgIHx8IChfTVNDX1ZFUiA+PSAxNjAwICYmIF9NU0NfVkVSIDwgMTkwMCkKKyMgIGRlZmlu
ZSBHVEVTVF9FTlZfSEFTX1RSMV9UVVBMRV8gMQorIyBlbmRpZgorCisvLyBDKysxMSBzcGVjaWZp
ZXMgdGhhdCA8dHVwbGU+IHByb3ZpZGVzIHN0ZDo6dHVwbGUuIFVzZSB0aGF0IGlmIGd0ZXN0IGlz
IHVzZWQKKy8vIGluIEMrKzExIG1vZGUgYW5kIGxpYnN0ZGMrKyBpc24ndCB2ZXJ5IG9sZCAoYmlu
YXJpZXMgdGFyZ2V0aW5nIE9TIFggMTAuNgorLy8gY2FuIGJ1aWxkIHdpdGggY2xhbmcgYnV0IG5l
ZWQgdG8gdXNlIGdjYzQuMidzIGxpYnN0ZGMrKykuCisjIGlmIEdURVNUX0xBTkdfQ1hYMTEgJiYg
KCFkZWZpbmVkKF9fR0xJQkNYWF9fKSB8fCBfX0dMSUJDWFhfXyA+IDIwMTEwMzI1KQorIyAgZGVm
aW5lIEdURVNUX0VOVl9IQVNfU1REX1RVUExFXyAxCisjIGVuZGlmCisKKyMgaWYgR1RFU1RfRU5W
X0hBU19UUjFfVFVQTEVfIHx8IEdURVNUX0VOVl9IQVNfU1REX1RVUExFXworIyAgZGVmaW5lIEdU
RVNUX1VTRV9PV05fVFIxX1RVUExFIDAKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX1VTRV9PV05f
VFIxX1RVUExFIDEKKyMgZW5kaWYKKyMgZW5kaWYgIC8vIEdURVNUX09TX1NZTUJJQU4KICNlbmRp
ZiAgLy8gR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUKIAotLy8gVG8gYXZvaWQgY29uZGl0aW9uYWwg
Y29tcGlsYXRpb24gZXZlcnl3aGVyZSwgd2UgbWFrZSBpdAotLy8gZ3Rlc3QtcG9ydC5oJ3MgcmVz
cG9uc2liaWxpdHkgdG8gI2luY2x1ZGUgdGhlIGhlYWRlciBpbXBsZW1lbnRpbmcKLS8vIHRyMS90
dXBsZS4KKy8vIFRvIGF2b2lkIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHdlIG1ha2UgaXQgZ3Rl
c3QtcG9ydC5oJ3MgcmVzcG9uc2liaWxpdHkKKy8vIHRvICNpbmNsdWRlIHRoZSBoZWFkZXIgaW1w
bGVtZW50aW5nIHR1cGxlLgorI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCisjIGluY2x1ZGUgPHR1
cGxlPiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydAorIyBkZWZpbmUgR1RFU1RfVFVQTEVfTkFNRVNQ
QUNFXyA6OnN0ZAorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1RVUExFXworCisvLyBXZSBpbmNs
dWRlIHRyMTo6dHVwbGUgZXZlbiBpZiBzdGQ6OnR1cGxlIGlzIGF2YWlsYWJsZSB0byBkZWZpbmUg
cHJpbnRlcnMgZm9yCisvLyB0aGVtLgogI2lmIEdURVNUX0hBU19UUjFfVFVQTEUKKyMgaWZuZGVm
IEdURVNUX1RVUExFX05BTUVTUEFDRV8KKyMgIGRlZmluZSBHVEVTVF9UVVBMRV9OQU1FU1BBQ0Vf
IDo6c3RkOjp0cjEKKyMgZW5kaWYgIC8vIEdURVNUX1RVUExFX05BTUVTUEFDRV8KIAotI2lmIEdU
RVNUX1VTRV9PV05fVFIxX1RVUExFCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVw
bGUuaD4KLSNlbGlmIEdURVNUX09TX1NZTUJJQU4KKyMgaWYgR1RFU1RfVVNFX09XTl9UUjFfVFVQ
TEUKKyMgIGluY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgiICAvLyBJV1lVIHBy
YWdtYTogZXhwb3J0ICAvLyBOT0xJTlQKKyMgZWxpZiBHVEVTVF9PU19TWU1CSUFOCiAKIC8vIE9u
IFN5bWJpYW4sIEJPT1NUX0hBU19UUjFfVFVQTEUgY2F1c2VzIEJvb3N0J3MgVFIxIHR1cGxlIGxp
YnJhcnkgdG8KIC8vIHVzZSBTVExwb3J0J3MgdHVwbGUgaW1wbGVtZW50YXRpb24sIHdoaWNoIHVu
Zm9ydHVuYXRlbHkgZG9lc24ndAogLy8gd29yayBhcyB0aGUgY29weSBvZiBTVExwb3J0IGRpc3Ry
aWJ1dGVkIHdpdGggU3ltYmlhbiBpcyBpbmNvbXBsZXRlLgogLy8gQnkgbWFraW5nIHN1cmUgQk9P
U1RfSEFTX1RSMV9UVVBMRSBpcyB1bmRlZmluZWQsIHdlIGZvcmNlIEJvb3N0IHRvCiAvLyB1c2Ug
aXRzIG93biB0dXBsZSBpbXBsZW1lbnRhdGlvbi4KLSNpZmRlZiBCT09TVF9IQVNfVFIxX1RVUExF
Ci0jdW5kZWYgQk9PU1RfSEFTX1RSMV9UVVBMRQotI2VuZGlmICAvLyBCT09TVF9IQVNfVFIxX1RV
UExFCisjICBpZmRlZiBCT09TVF9IQVNfVFIxX1RVUExFCisjICAgdW5kZWYgQk9PU1RfSEFTX1RS
MV9UVVBMRQorIyAgZW5kaWYgIC8vIEJPT1NUX0hBU19UUjFfVFVQTEUKIAogLy8gVGhpcyBwcmV2
ZW50cyA8Ym9vc3QvdHIxL2RldGFpbC9jb25maWcuaHBwPiwgd2hpY2ggZGVmaW5lcwogLy8gQk9P
U1RfSEFTX1RSMV9UVVBMRSwgZnJvbSBiZWluZyAjaW5jbHVkZWQgYnkgQm9vc3QncyA8dHVwbGU+
LgotI2RlZmluZSBCT09TVF9UUjFfREVUQUlMX0NPTkZJR19IUFBfSU5DTFVERUQKLSNpbmNsdWRl
IDx0dXBsZT4KKyMgIGRlZmluZSBCT09TVF9UUjFfREVUQUlMX0NPTkZJR19IUFBfSU5DTFVERUQK
KyMgIGluY2x1ZGUgPHR1cGxlPiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydCAgLy8gTk9MSU5UCiAK
LSNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSA0MDAwMCkKKyMg
ZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0gNDAwMDApCiAvLyBH
Q0MgNC4wKyBpbXBsZW1lbnRzIHRyMS90dXBsZSBpbiB0aGUgPHRyMS90dXBsZT4gaGVhZGVyLiAg
VGhpcyBkb2VzCiAvLyBub3QgY29uZm9ybSB0byB0aGUgVFIxIHNwZWMsIHdoaWNoIHJlcXVpcmVz
IHRoZSBoZWFkZXIgdG8gYmUgPHR1cGxlPi4KIAotI2lmICFHVEVTVF9IQVNfUlRUSSAmJiBHVEVT
VF9HQ0NfVkVSXyA8IDQwMzAyCisjICBpZiAhR1RFU1RfSEFTX1JUVEkgJiYgR1RFU1RfR0NDX1ZF
Ul8gPCA0MDMwMgogLy8gVW50aWwgdmVyc2lvbiA0LjMuMiwgZ2NjIGhhcyBhIGJ1ZyB0aGF0IGNh
dXNlcyA8dHIxL2Z1bmN0aW9uYWw+LAogLy8gd2hpY2ggaXMgI2luY2x1ZGVkIGJ5IDx0cjEvdHVw
bGU+LCB0byBub3QgY29tcGlsZSB3aGVuIFJUVEkgaXMKIC8vIGRpc2FibGVkLiAgX1RSMV9GVU5D
VElPTkFMIGlzIHRoZSBoZWFkZXIgZ3VhcmQgZm9yCi0vLyA8dHIxL2Z1bmN0aW9uYWw+LiAgSGVu
Y2UgdGhlIGZvbGxvd2luZyAjZGVmaW5lIGlzIGEgaGFjayB0byBwcmV2ZW50CisvLyA8dHIxL2Z1
bmN0aW9uYWw+LiAgSGVuY2UgdGhlIGZvbGxvd2luZyAjZGVmaW5lIGlzIHVzZWQgdG8gcHJldmVu
dAogLy8gPHRyMS9mdW5jdGlvbmFsPiBmcm9tIGJlaW5nIGluY2x1ZGVkLgotI2RlZmluZSBfVFIx
X0ZVTkNUSU9OQUwgMQotI2luY2x1ZGUgPHRyMS90dXBsZT4KLSN1bmRlZiBfVFIxX0ZVTkNUSU9O
QUwgIC8vIEFsbG93cyB0aGUgdXNlciB0byAjaW5jbHVkZQotICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gPHRyMS9mdW5jdGlvbmFsPiBpZiBoZSBjaG9vc2VzIHRvLgotI2Vsc2UKLSNpbmNsdWRl
IDx0cjEvdHVwbGU+ICAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gIUdURVNUX0hBU19SVFRJICYmIEdU
RVNUX0dDQ19WRVJfIDwgNDAzMDIKLQotI2Vsc2UKLS8vIElmIHRoZSBjb21waWxlciBpcyBub3Qg
R0NDIDQuMCssIHdlIGFzc3VtZSB0aGUgdXNlciBpcyB1c2luZyBhCi0vLyBzcGVjLWNvbmZvcm1p
bmcgVFIxIGltcGxlbWVudGF0aW9uLgotI2luY2x1ZGUgPHR1cGxlPiAgLy8gTk9MSU5UCi0jZW5k
aWYgIC8vIEdURVNUX1VTRV9PV05fVFIxX1RVUExFCisjICAgZGVmaW5lIF9UUjFfRlVOQ1RJT05B
TCAxCisjICAgaW5jbHVkZSA8dHIxL3R1cGxlPgorIyAgIHVuZGVmIF9UUjFfRlVOQ1RJT05BTCAg
Ly8gQWxsb3dzIHRoZSB1c2VyIHRvICNpbmNsdWRlCisgICAgICAgICAgICAgICAgICAgICAgICAv
LyA8dHIxL2Z1bmN0aW9uYWw+IGlmIHRoZXkgY2hvb3NlIHRvLgorIyAgZWxzZQorIyAgIGluY2x1
ZGUgPHRyMS90dXBsZT4gIC8vIE5PTElOVAorIyAgZW5kaWYgIC8vICFHVEVTVF9IQVNfUlRUSSAm
JiBHVEVTVF9HQ0NfVkVSXyA8IDQwMzAyCisKKy8vIFZTIDIwMTAgbm93IGhhcyB0cjEgc3VwcG9y
dC4KKyMgZWxpZiBfTVNDX1ZFUiA+PSAxNjAwCisjICBpbmNsdWRlIDx0dXBsZT4gIC8vIElXWVUg
cHJhZ21hOiBleHBvcnQgIC8vIE5PTElOVAorCisjIGVsc2UgIC8vIEdURVNUX1VTRV9PV05fVFIx
X1RVUExFCisjICBpbmNsdWRlIDx0cjEvdHVwbGU+ICAvLyBJV1lVIHByYWdtYTogZXhwb3J0ICAv
LyBOT0xJTlQKKyMgZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fVFIxX1RVUExFCiAKICNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1RSMV9UVVBMRQogCkBAIC00ODEsNTkgKzc4Niw4MCBAQAogI2lmbmRlZiBH
VEVTVF9IQVNfQ0xPTkUKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzLCBzbyB3ZSBuZWVkIHRv
IGZpZ3VyZSBpdCBvdXQuCiAKLSNpZiBHVEVTVF9PU19MSU5VWCAmJiAhZGVmaW5lZChfX2lhNjRf
XykKLSNkZWZpbmUgR1RFU1RfSEFTX0NMT05FIDEKLSNlbHNlCi0jZGVmaW5lIEdURVNUX0hBU19D
TE9ORSAwCi0jZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYICYmICFkZWZpbmVkKF9faWE2NF9fKQor
IyBpZiBHVEVTVF9PU19MSU5VWCAmJiAhZGVmaW5lZChfX2lhNjRfXykKKyMgIGlmIEdURVNUX09T
X0xJTlVYX0FORFJPSUQKKy8vIE9uIEFuZHJvaWQsIGNsb25lKCkgYmVjYW1lIGF2YWlsYWJsZSBh
dCBkaWZmZXJlbnQgQVBJIGxldmVscyBmb3IgZWFjaCAzMi1iaXQKKy8vIGFyY2hpdGVjdHVyZS4K
KyMgICAgaWYgZGVmaW5lZChfX0xQNjRfXykgfHwgXAorICAgICAgICAoZGVmaW5lZChfX2FybV9f
KSAmJiBfX0FORFJPSURfQVBJX18gPj0gOSkgfHwgXAorICAgICAgICAoZGVmaW5lZChfX21pcHNf
XykgJiYgX19BTkRST0lEX0FQSV9fID49IDEyKSB8fCBcCisgICAgICAgIChkZWZpbmVkKF9faTM4
Nl9fKSAmJiBfX0FORFJPSURfQVBJX18gPj0gMTcpCisjICAgICBkZWZpbmUgR1RFU1RfSEFTX0NM
T05FIDEKKyMgICAgZWxzZQorIyAgICAgZGVmaW5lIEdURVNUX0hBU19DTE9ORSAwCisjICAgIGVu
ZGlmCisjICBlbHNlCisjICAgZGVmaW5lIEdURVNUX0hBU19DTE9ORSAxCisjICBlbmRpZgorIyBl
bHNlCisjICBkZWZpbmUgR1RFU1RfSEFTX0NMT05FIDAKKyMgZW5kaWYgIC8vIEdURVNUX09TX0xJ
TlVYICYmICFkZWZpbmVkKF9faWE2NF9fKQogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORQog
CiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc3VwcG9ydCBzdHJlYW0gcmVkaXJlY3Rpb24uIFRo
aXMgaXMgdXNlZCB0byB0ZXN0CiAvLyBvdXRwdXQgY29ycmVjdG5lc3MgYW5kIHRvIGltcGxlbWVu
dCBkZWF0aCB0ZXN0cy4KLSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09T
X1NZTUJJQU4KLSNkZWZpbmUgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8gMQotI2VuZGlm
ICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZTUJJQU4KKyNpZm5k
ZWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgorLy8gQnkgZGVmYXVsdCwgd2UgYXNzdW1l
IHRoYXQgc3RyZWFtIHJlZGlyZWN0aW9uIGlzIHN1cHBvcnRlZCBvbiBhbGwKKy8vIHBsYXRmb3Jt
cyBleGNlcHQga25vd24gbW9iaWxlIG9uZXMuCisjIGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxF
IHx8IEdURVNUX09TX1NZTUJJQU4gfHwgXAorICAgIEdURVNUX09TX1dJTkRPV1NfUEhPTkUgfHwg
R1RFU1RfT1NfV0lORE9XU19SVAorIyAgZGVmaW5lIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJ
T04gMAorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTiAxCisj
IGVuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZTUJJQU4K
KyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgogCiAvLyBEZXRlcm1pbmVz
IHdoZXRoZXIgdG8gc3VwcG9ydCBkZWF0aCB0ZXN0cy4KIC8vIEdvb2dsZSBUZXN0IGRvZXMgbm90
IHN1cHBvcnQgZGVhdGggdGVzdHMgZm9yIFZDIDcuMSBhbmQgZWFybGllciBhcwogLy8gYWJvcnQo
KSBpbiBhIFZDIDcuMSBhcHBsaWNhdGlvbiBjb21waWxlZCBhcyBHVUkgaW4gZGVidWcgY29uZmln
CiAvLyBwb3BzIHVwIGEgZGlhbG9nIHdpbmRvdyB0aGF0IGNhbm5vdCBiZSBzdXBwcmVzc2VkIHBy
b2dyYW1tYXRpY2FsbHkuCi0jaWYgKEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX0ZSRUVCU0Qg
fHwgR1RFU1RfT1NfSFVSRCB8fCBcCi0gICAgIEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19DWUdX
SU4gfHwgR1RFU1RfT1NfU09MQVJJUyB8fCBcCi0gICAgIChHVEVTVF9PU19XSU5ET1dTX0RFU0tU
T1AgJiYgX01TQ19WRVIgPj0gMTQwMCkgfHwgXAotICAgICBHVEVTVF9PU19XSU5ET1dTX01JTkdX
IHx8IEdURVNUX09TX0FJWCkKLSNkZWZpbmUgR1RFU1RfSEFTX0RFQVRIX1RFU1QgMQotI2luY2x1
ZGUgPHZlY3Rvcj4gIC8vIE5PTElOVAorI2lmIChHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19D
WUdXSU4gfHwgR1RFU1RfT1NfU09MQVJJUyB8fCAgIFwKKyAgICAgKEdURVNUX09TX01BQyAmJiAh
R1RFU1RfT1NfSU9TKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIChHVEVTVF9P
U19XSU5ET1dTX0RFU0tUT1AgJiYgX01TQ19WRVIgPj0gMTQwMCkgfHwgICAgICAgICAgXAorICAg
ICBHVEVTVF9PU19XSU5ET1dTX01JTkdXIHx8IEdURVNUX09TX0FJWCB8fCBHVEVTVF9PU19IUFVY
IHx8IFwKKyAgICAgR1RFU1RfT1NfT1BFTkJTRCB8fCBHVEVTVF9PU19RTlggfHwgR1RFU1RfT1Nf
RlJFRUJTRCB8fCBcCisgICAgIEdURVNUX09TX05FVEJTRCB8fCBHVEVTVF9PU19GVUNIU0lBKQor
IyBkZWZpbmUgR1RFU1RfSEFTX0RFQVRIX1RFU1QgMQogI2VuZGlmCiAKLS8vIFdlIGRvbid0IHN1
cHBvcnQgTVNWQyA3LjEgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkIG5vdy4gIFRoZXJlZm9yZQot
Ly8gYWxsIHRoZSBjb21waWxlcnMgd2UgY2FyZSBhYm91dCBhcmUgYWRlcXVhdGUgZm9yIHN1cHBv
cnRpbmcKLS8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCi0jZGVmaW5lIEdURVNUX0hBU19Q
QVJBTV9URVNUIDEKLQogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHN1cHBvcnQgdHlwZS1kcml2
ZW4gdGVzdHMuCiAKIC8vIFR5cGVkIHRlc3RzIG5lZWQgPHR5cGVpbmZvPiBhbmQgdmFyaWFkaWMg
bWFjcm9zLCB3aGljaCBHQ0MsIFZDKysgOC4wLAotLy8gU3VuIFBybyBDQywgYW5kIElCTSBWaXN1
YWwgQWdlIHN1cHBvcnQuCisvLyBTdW4gUHJvIENDLCBJQk0gVmlzdWFsIEFnZSwgYW5kIEhQIGFD
QyBzdXBwb3J0LgogI2lmIGRlZmluZWQoX19HTlVDX18pIHx8IChfTVNDX1ZFUiA+PSAxNDAwKSB8
fCBkZWZpbmVkKF9fU1VOUFJPX0NDKSB8fCBcCi0gICAgZGVmaW5lZChfX0lCTUNQUF9fKQotI2Rl
ZmluZSBHVEVTVF9IQVNfVFlQRURfVEVTVCAxCi0jZGVmaW5lIEdURVNUX0hBU19UWVBFRF9URVNU
X1AgMQorICAgIGRlZmluZWQoX19JQk1DUFBfXykgfHwgZGVmaW5lZChfX0hQX2FDQykKKyMgZGVm
aW5lIEdURVNUX0hBU19UWVBFRF9URVNUIDEKKyMgZGVmaW5lIEdURVNUX0hBU19UWVBFRF9URVNU
X1AgMQogI2VuZGlmCiAKIC8vIERldGVybWluZXMgd2hldGhlciB0byBzdXBwb3J0IENvbWJpbmUo
KS4gVGhpcyBvbmx5IG1ha2VzIHNlbnNlIHdoZW4KIC8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dHMgYXJlIGVuYWJsZWQuICBUaGUgaW1wbGVtZW50YXRpb24gZG9lc24ndAogLy8gd29yayBvbiBT
dW4gU3R1ZGlvIHNpbmNlIGl0IGRvZXNuJ3QgdW5kZXJzdGFuZCB0ZW1wbGF0ZWQgY29udmVyc2lv
bgogLy8gb3BlcmF0b3JzLgotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUICYmIEdURVNUX0hBU19U
UjFfVFVQTEUgJiYgIWRlZmluZWQoX19TVU5QUk9fQ0MpCi0jZGVmaW5lIEdURVNUX0hBU19DT01C
SU5FIDEKKyNpZiAoR1RFU1RfSEFTX1RSMV9UVVBMRSB8fCBHVEVTVF9IQVNfU1REX1RVUExFXykg
JiYgIWRlZmluZWQoX19TVU5QUk9fQ0MpCisjIGRlZmluZSBHVEVTVF9IQVNfQ09NQklORSAxCiAj
ZW5kaWYKIAogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzeXN0ZW0gY29tcGlsZXIgdXNlcyBV
VEYtMTYgZm9yIGVuY29kaW5nIHdpZGUgc3RyaW5ncy4KICNkZWZpbmUgR1RFU1RfV0lERV9TVFJJ
TkdfVVNFU19VVEYxNl8gXAogICAgIChHVEVTVF9PU19XSU5ET1dTIHx8IEdURVNUX09TX0NZR1dJ
TiB8fCBHVEVTVF9PU19TWU1CSUFOIHx8IEdURVNUX09TX0FJWCkKIAorLy8gRGV0ZXJtaW5lcyB3
aGV0aGVyIHRlc3QgcmVzdWx0cyBjYW4gYmUgc3RyZWFtZWQgdG8gYSBzb2NrZXQuCisjaWYgR1RF
U1RfT1NfTElOVVgKKyMgZGVmaW5lIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18gMQorI2VuZGlm
CisKIC8vIERlZmluZXMgc29tZSB1dGlsaXR5IG1hY3Jvcy4KIAogLy8gVGhlIEdOVSBjb21waWxl
ciBlbWl0cyBhIHdhcm5pbmcgaWYgbmVzdGVkICJpZiIgc3RhdGVtZW50cyBhcmUgZm9sbG93ZWQg
YnkKQEAgLTU0NSw5ICs4NzEsOSBAQAogLy8KIC8vIFRoZSAic3dpdGNoICgwKSBjYXNlIDA6IiBp
ZGlvbSBpcyB1c2VkIHRvIHN1cHByZXNzIHRoaXMuCiAjaWZkZWYgX19JTlRFTF9DT01QSUxFUgot
I2RlZmluZSBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXworIyBkZWZpbmUgR1RFU1RfQU1C
SUdVT1VTX0VMU0VfQkxPQ0tFUl8KICNlbHNlCi0jZGVmaW5lIEdURVNUX0FNQklHVU9VU19FTFNF
X0JMT0NLRVJfIHN3aXRjaCAoMCkgY2FzZSAwOiAgLy8gTk9MSU5UCisjIGRlZmluZSBHVEVTVF9B
TUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBzd2l0Y2ggKDApIGNhc2UgMDogZGVmYXVsdDogIC8vIE5P
TElOVAogI2VuZGlmCiAKIC8vIFVzZSB0aGlzIGFubm90YXRpb24gYXQgdGhlIGVuZCBvZiBhIHN0
cnVjdC9jbGFzcyBkZWZpbml0aW9uIHRvCkBAIC01NjIsMjAgKzg4OCw0OSBAQAogLy8gQWxzbyB1
c2UgaXQgYWZ0ZXIgYSB2YXJpYWJsZSBvciBwYXJhbWV0ZXIgZGVjbGFyYXRpb24gdG8gdGVsbCB0
aGUKIC8vIGNvbXBpbGVyIHRoZSB2YXJpYWJsZS9wYXJhbWV0ZXIgZG9lcyBub3QgaGF2ZSB0byBi
ZSB1c2VkLgogI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKENPTVBJTEVSX0lDQykK
LSNkZWZpbmUgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkp
CisjIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyBfX2F0dHJpYnV0ZV9fICgodW51c2Vk
KSkKKyNlbGlmIGRlZmluZWQoX19jbGFuZ19fKQorIyBpZiBfX2hhc19hdHRyaWJ1dGUodW51c2Vk
KQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfIF9fYXR0cmlidXRlX18gKCh1bnVz
ZWQpKQorIyBlbmRpZgorI2VuZGlmCisjaWZuZGVmIEdURVNUX0FUVFJJQlVURV9VTlVTRURfCisj
IGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXworI2VuZGlmCisKKyNpZiBHVEVTVF9MQU5H
X0NYWDExCisjIGRlZmluZSBHVEVTVF9DWFgxMV9FUVVBTFNfREVMRVRFXyA9IGRlbGV0ZQorI2Vs
c2UgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKyMgZGVmaW5lIEdURVNUX0NYWDExX0VRVUFMU19ERUxF
VEVfCisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKworLy8gVXNlIHRoaXMgYW5ub3RhdGlv
biBiZWZvcmUgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgcHJpbnRmIGZvcm1hdCBzdHJpbmcuCisj
aWYgKGRlZmluZWQoX19HTlVDX18pIHx8IGRlZmluZWQoX19jbGFuZ19fKSkgJiYgIWRlZmluZWQo
Q09NUElMRVJfSUNDKQorIyBpZiBkZWZpbmVkKF9fTUlOR1dfUFJJTlRGX0ZPUk1BVCkKKy8vIE1p
bkdXIGhhcyB0d28gZGlmZmVyZW50IHByaW50ZiBpbXBsZW1lbnRhdGlvbnMuIEVuc3VyZSB0aGUg
Zm9ybWF0IG1hY3JvCisvLyBtYXRjaGVzIHRoZSBzZWxlY3RlZCBpbXBsZW1lbnRhdGlvbi4gU2Vl
CisvLyBodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wL21pbmd3LXc2NC93aWtpMi9nbnUlMjBwcmlu
dGYvLgorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9QUklOVEZfKHN0cmluZ19pbmRleCwgZmly
c3RfdG9fY2hlY2spIFwKKyAgICAgICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fTUlOR1df
UFJJTlRGX0ZPUk1BVCwgc3RyaW5nX2luZGV4LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmaXJzdF90b19jaGVjaykpKQorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfQVRUUklC
VVRFX1BSSU5URl8oc3RyaW5nX2luZGV4LCBmaXJzdF90b19jaGVjaykgXAorICAgICAgIF9fYXR0
cmlidXRlX18oKF9fZm9ybWF0X18oX19wcmludGZfXywgc3RyaW5nX2luZGV4LCBmaXJzdF90b19j
aGVjaykpKQorIyBlbmRpZgogI2Vsc2UKLSNkZWZpbmUgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8K
KyMgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9QUklOVEZfKHN0cmluZ19pbmRleCwgZmlyc3RfdG9f
Y2hlY2spCiAjZW5kaWYKIAorCiAvLyBBIG1hY3JvIHRvIGRpc2FsbG93IG9wZXJhdG9yPQogLy8g
VGhpcyBzaG91bGQgYmUgdXNlZCBpbiB0aGUgcHJpdmF0ZTogZGVjbGFyYXRpb25zIGZvciBhIGNs
YXNzLgotI2RlZmluZSBHVEVTVF9ESVNBTExPV19BU1NJR05fKHR5cGUpXAotICB2b2lkIG9wZXJh
dG9yPSh0eXBlIGNvbnN0ICYpCisjZGVmaW5lIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8odHlwZSkg
XAorICB2b2lkIG9wZXJhdG9yPSh0eXBlIGNvbnN0ICYpIEdURVNUX0NYWDExX0VRVUFMU19ERUxF
VEVfCiAKIC8vIEEgbWFjcm8gdG8gZGlzYWxsb3cgY29weSBjb25zdHJ1Y3RvciBhbmQgb3BlcmF0
b3I9CiAvLyBUaGlzIHNob3VsZCBiZSB1c2VkIGluIHRoZSBwcml2YXRlOiBkZWNsYXJhdGlvbnMg
Zm9yIGEgY2xhc3MuCi0jZGVmaW5lIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8odHlw
ZSlcCi0gIHR5cGUodHlwZSBjb25zdCAmKTtcCisjZGVmaW5lIEdURVNUX0RJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTl8odHlwZSkgXAorICB0eXBlKHR5cGUgY29uc3QgJikgR1RFU1RfQ1hYMTFfRVFV
QUxTX0RFTEVURV87IFwKICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyh0eXBlKQogCiAvLyBUZWxs
IHRoZSBjb21waWxlciB0byB3YXJuIGFib3V0IHVudXNlZCByZXR1cm4gdmFsdWVzIGZvciBmdW5j
dGlvbnMgZGVjbGFyZWQKQEAgLTU4NCw3MiArOTM5LDI1MCBAQAogLy8KIC8vICAgU3Byb2NrZXQq
IEFsbG9jYXRlU3Byb2NrZXQoKSBHVEVTVF9NVVNUX1VTRV9SRVNVTFRfOwogI2lmIGRlZmluZWQo
X19HTlVDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSAzMDQwMCkgJiYgIWRlZmluZWQoQ09NUElM
RVJfSUNDKQotI2RlZmluZSBHVEVTVF9NVVNUX1VTRV9SRVNVTFRfIF9fYXR0cmlidXRlX18gKCh3
YXJuX3VudXNlZF9yZXN1bHQpKQorIyBkZWZpbmUgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXyBfX2F0
dHJpYnV0ZV9fICgod2Fybl91bnVzZWRfcmVzdWx0KSkKICNlbHNlCi0jZGVmaW5lIEdURVNUX01V
U1RfVVNFX1JFU1VMVF8KKyMgZGVmaW5lIEdURVNUX01VU1RfVVNFX1JFU1VMVF8KICNlbmRpZiAg
Ly8gX19HTlVDX18gJiYgKEdURVNUX0dDQ19WRVJfID49IDMwNDAwKSAmJiAhQ09NUElMRVJfSUND
CiAKKy8vIE1TIEMrKyBjb21waWxlciBlbWl0cyB3YXJuaW5nIHdoZW4gYSBjb25kaXRpb25hbCBl
eHByZXNzaW9uIGlzIGNvbXBpbGUgdGltZQorLy8gY29uc3RhbnQuIEluIHNvbWUgY29udGV4dHMg
dGhpcyB3YXJuaW5nIGlzIGZhbHNlIHBvc2l0aXZlIGFuZCBuZWVkcyB0byBiZQorLy8gc3VwcHJl
c3NlZC4gVXNlIHRoZSBmb2xsb3dpbmcgdHdvIG1hY3JvcyBpbiBzdWNoIGNhc2VzOgorLy8KKy8v
IEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUFVTSF8oKQorLy8gd2hpbGUgKHRydWUpIHsK
Ky8vIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUE9QXygpCisvLyB9CisjIGRlZmluZSBH
VEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BVU0hfKCkgXAorICAgIEdURVNUX0RJU0FCTEVf
TVNDX1dBUk5JTkdTX1BVU0hfKDQxMjcpCisjIGRlZmluZSBHVEVTVF9JTlRFTlRJT05BTF9DT05T
VF9DT05EX1BPUF8oKSBcCisgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCisK
IC8vIERldGVybWluZSB3aGV0aGVyIHRoZSBjb21waWxlciBzdXBwb3J0cyBNaWNyb3NvZnQncyBT
dHJ1Y3R1cmVkIEV4Y2VwdGlvbgogLy8gSGFuZGxpbmcuICBUaGlzIGlzIHN1cHBvcnRlZCBieSBz
ZXZlcmFsIFdpbmRvd3MgY29tcGlsZXJzIGJ1dCBnZW5lcmFsbHkKIC8vIGRvZXMgbm90IGV4aXN0
IG9uIGFueSBvdGhlciBzeXN0ZW0uCiAjaWZuZGVmIEdURVNUX0hBU19TRUgKIC8vIFRoZSB1c2Vy
IGRpZG4ndCB0ZWxsIHVzLCBzbyB3ZSBuZWVkIHRvIGZpZ3VyZSBpdCBvdXQuCiAKLSNpZiBkZWZp
bmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykKKyMgaWYgZGVmaW5lZChfTVND
X1ZFUikgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pCiAvLyBUaGVzZSB0d28gY29tcGlsZXJzIGFy
ZSBrbm93biB0byBzdXBwb3J0IFNFSC4KLSNkZWZpbmUgR1RFU1RfSEFTX1NFSCAxCi0jZWxzZQor
IyAgZGVmaW5lIEdURVNUX0hBU19TRUggMQorIyBlbHNlCiAvLyBBc3N1bWUgbm8gU0VILgotI2Rl
ZmluZSBHVEVTVF9IQVNfU0VIIDAKLSNlbmRpZgorIyAgZGVmaW5lIEdURVNUX0hBU19TRUggMAor
IyBlbmRpZgogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKKyNkZWZpbmUgR1RFU1RfSVNfVEhS
RUFEU0FGRSBcCisgICAgKEdURVNUX0hBU19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMXyBcCisgICAg
IHx8IChHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVT
VF9PU19XSU5ET1dTX1JUKSBcCisgICAgIHx8IEdURVNUX0hBU19QVEhSRUFEKQogCi0jaWZkZWYg
X01TQ19WRVIKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAogCi0jaWYgR1RFU1RfTElOS0VEX0FT
X1NIQVJFRF9MSUJSQVJZCi0jZGVmaW5lIEdURVNUX0FQSV8gX19kZWNsc3BlYyhkbGxpbXBvcnQp
Ci0jZWxpZiBHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJBUlkKLSNkZWZpbmUgR1RFU1RfQVBJXyBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkKLSNlbmRpZgorLy8gR1RFU1RfQVBJXyBxdWFsaWZpZXMgYWxs
IHN5bWJvbHMgdGhhdCBtdXN0IGJlIGV4cG9ydGVkLiBUaGUgZGVmaW5pdGlvbnMgYmVsb3cKKy8v
IGFyZSBndWFyZGVkIGJ5ICNpZm5kZWYgdG8gZ2l2ZSBlbWJlZGRlcnMgYSBjaGFuY2UgdG8gZGVm
aW5lIEdURVNUX0FQSV8gaW4KKy8vIGd0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmgK
KyNpZm5kZWYgR1RFU1RfQVBJXwogCisjaWZkZWYgX01TQ19WRVIKKyMgaWYgR1RFU1RfTElOS0VE
X0FTX1NIQVJFRF9MSUJSQVJZCisjICBkZWZpbmUgR1RFU1RfQVBJXyBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkKKyMgZWxpZiBHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJBUlkKKyMgIGRlZmluZSBHVEVT
VF9BUElfIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorIyBlbmRpZgorI2VsaWYgX19HTlVDX18gPj0g
NCB8fCBkZWZpbmVkKF9fY2xhbmdfXykKKyMgZGVmaW5lIEdURVNUX0FQSV8gX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAjZW5kaWYgIC8vIF9NU0NfVkVSCiAKKyNlbmRp
ZiAgLy8gR1RFU1RfQVBJXworCiAjaWZuZGVmIEdURVNUX0FQSV8KLSNkZWZpbmUgR1RFU1RfQVBJ
XworIyBkZWZpbmUgR1RFU1RfQVBJXworI2VuZGlmICAvLyBHVEVTVF9BUElfCisKKyNpZm5kZWYg
R1RFU1RfREVGQVVMVF9ERUFUSF9URVNUX1NUWUxFCisjIGRlZmluZSBHVEVTVF9ERUZBVUxUX0RF
QVRIX1RFU1RfU1RZTEUgICJmYXN0IgorI2VuZGlmICAvLyBHVEVTVF9ERUZBVUxUX0RFQVRIX1RF
U1RfU1RZTEUKKworI2lmZGVmIF9fR05VQ19fCisvLyBBc2sgdGhlIGNvbXBpbGVyIHRvIG5ldmVy
IGlubGluZSBhIGdpdmVuIGZ1bmN0aW9uLgorIyBkZWZpbmUgR1RFU1RfTk9fSU5MSU5FXyBfX2F0
dHJpYnV0ZV9fKChub2lubGluZSkpCisjZWxzZQorIyBkZWZpbmUgR1RFU1RfTk9fSU5MSU5FXwog
I2VuZGlmCiAKKy8vIF9MSUJDUFBfVkVSU0lPTiBpcyBkZWZpbmVkIGJ5IHRoZSBsaWJjKysgbGli
cmFyeSBmcm9tIHRoZSBMTFZNIHByb2plY3QuCisjaWYgIWRlZmluZWQoR1RFU1RfSEFTX0NYWEFC
SV9IXykKKyMgaWYgZGVmaW5lZChfX0dMSUJDWFhfXykgfHwgKGRlZmluZWQoX0xJQkNQUF9WRVJT
SU9OKSAmJiAhZGVmaW5lZChfTVNDX1ZFUikpCisjICBkZWZpbmUgR1RFU1RfSEFTX0NYWEFCSV9I
XyAxCisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9IQVNfQ1hYQUJJX0hfIDAKKyMgZW5kaWYKKyNl
bmRpZgorCisvLyBBIGZ1bmN0aW9uIGxldmVsIGF0dHJpYnV0ZSB0byBkaXNhYmxlIGNoZWNraW5n
IGZvciB1c2Ugb2YgdW5pbml0aWFsaXplZAorLy8gbWVtb3J5IHdoZW4gYnVpbHQgd2l0aCBNZW1v
cnlTYW5pdGl6ZXIuCisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisjIGlmIF9faGFzX2ZlYXR1cmUo
bWVtb3J5X3Nhbml0aXplcikKKyMgIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVf
TUVNT1JZXyBcCisgICAgICAgX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfbWVtb3J5KSkKKyMg
ZWxzZQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9NRU1PUllfCisjIGVu
ZGlmICAvLyBfX2hhc19mZWF0dXJlKG1lbW9yeV9zYW5pdGl6ZXIpCisjZWxzZQorIyBkZWZpbmUg
R1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8KKyNlbmRpZiAgLy8gX19jbGFuZ19f
CisKKy8vIEEgZnVuY3Rpb24gbGV2ZWwgYXR0cmlidXRlIHRvIGRpc2FibGUgQWRkcmVzc1Nhbml0
aXplciBpbnN0cnVtZW50YXRpb24uCisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisjIGlmIF9faGFz
X2ZlYXR1cmUoYWRkcmVzc19zYW5pdGl6ZXIpCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05P
X1NBTklUSVpFX0FERFJFU1NfIFwKKyAgICAgICBfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV9h
ZGRyZXNzKSkKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9B
RERSRVNTXworIyBlbmRpZiAgLy8gX19oYXNfZmVhdHVyZShhZGRyZXNzX3Nhbml0aXplcikKKyNl
bHNlCisjIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTU18KKyNlbmRp
ZiAgLy8gX19jbGFuZ19fCisKKy8vIEEgZnVuY3Rpb24gbGV2ZWwgYXR0cmlidXRlIHRvIGRpc2Fi
bGUgVGhyZWFkU2FuaXRpemVyIGluc3RydW1lbnRhdGlvbi4KKyNpZiBkZWZpbmVkKF9fY2xhbmdf
XykKKyMgaWYgX19oYXNfZmVhdHVyZSh0aHJlYWRfc2FuaXRpemVyKQorIyAgZGVmaW5lIEdURVNU
X0FUVFJJQlVURV9OT19TQU5JVElaRV9USFJFQURfIFwKKyAgICAgICBfX2F0dHJpYnV0ZV9fKChu
b19zYW5pdGl6ZV90aHJlYWQpKQorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05P
X1NBTklUSVpFX1RIUkVBRF8KKyMgZW5kaWYgIC8vIF9faGFzX2ZlYXR1cmUodGhyZWFkX3Nhbml0
aXplcikKKyNlbHNlCisjIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFE
XworI2VuZGlmICAvLyBfX2NsYW5nX18KKwogbmFtZXNwYWNlIHRlc3RpbmcgewogCiBjbGFzcyBN
ZXNzYWdlOwogCisjaWYgZGVmaW5lZChHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfKQorLy8gSW1wb3J0
IHR1cGxlIGFuZCBmcmllbmRzIGludG8gdGhlIDo6dGVzdGluZyBuYW1lc3BhY2UuCisvLyBJdCBp
cyBwYXJ0IG9mIG91ciBpbnRlcmZhY2UsIGhhdmluZyB0aGVtIGluIDo6dGVzdGluZyBhbGxvd3Mg
dXMgdG8gY2hhbmdlCisvLyB0aGVpciB0eXBlcyBhcyBuZWVkZWQuCit1c2luZyBHVEVTVF9UVVBM
RV9OQU1FU1BBQ0VfOjpnZXQ7Cit1c2luZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjptYWtlX3R1
cGxlOwordXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXzo6dHVwbGU7Cit1c2luZyBHVEVTVF9U
VVBMRV9OQU1FU1BBQ0VfOjp0dXBsZV9zaXplOwordXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNF
Xzo6dHVwbGVfZWxlbWVudDsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9UVVBMRV9OQU1FU1BB
Q0VfKQorCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCi1jbGFzcyBTdHJpbmc7CisvLyBBIHNlY3Jl
dCB0eXBlIHRoYXQgR29vZ2xlIFRlc3QgdXNlcnMgZG9uJ3Qga25vdyBhYm91dC4gIEl0IGhhcyBu
bworLy8gZGVmaW5pdGlvbiBvbiBwdXJwb3NlLiAgVGhlcmVmb3JlIGl0J3MgaW1wb3NzaWJsZSB0
byBjcmVhdGUgYQorLy8gU2VjcmV0IG9iamVjdCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LgorY2xh
c3MgU2VjcmV0OwogCi1jbGFzcyBTdHJTdHJlYW0gOiBwdWJsaWMgOjpzdGQ6OnN0cmluZ3N0cmVh
bSB7Ci0gcHVibGljOgotICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJl
dHVybiBwOyB9Ci0gIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1
cm4gcDsgfQorLy8gVGhlIEdURVNUX0NPTVBJTEVfQVNTRVJUXyBtYWNybyBjYW4gYmUgdXNlZCB0
byB2ZXJpZnkgdGhhdCBhIGNvbXBpbGUgdGltZQorLy8gZXhwcmVzc2lvbiBpcyB0cnVlLiBGb3Ig
ZXhhbXBsZSwgeW91IGNvdWxkIHVzZSBpdCB0byB2ZXJpZnkgdGhlCisvLyBzaXplIG9mIGEgc3Rh
dGljIGFycmF5OgorLy8KKy8vICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKEdURVNUX0FSUkFZX1NJ
WkVfKG5hbWVzKSA9PSBOVU1fTkFNRVMsCisvLyAgICAgICAgICAgICAgICAgICAgICAgICBuYW1l
c19pbmNvcnJlY3Rfc2l6ZSk7CisvLworLy8gb3IgdG8gbWFrZSBzdXJlIGEgc3RydWN0IGlzIHNt
YWxsZXIgdGhhbiBhIGNlcnRhaW4gc2l6ZToKKy8vCisvLyAgIEdURVNUX0NPTVBJTEVfQVNTRVJU
XyhzaXplb2YoZm9vKSA8IDEyOCwgZm9vX3Rvb19sYXJnZSk7CisvLworLy8gVGhlIHNlY29uZCBh
cmd1bWVudCB0byB0aGUgbWFjcm8gaXMgdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlLiBJZgorLy8g
dGhlIGV4cHJlc3Npb24gaXMgZmFsc2UsIG1vc3QgY29tcGlsZXJzIHdpbGwgaXNzdWUgYSB3YXJu
aW5nL2Vycm9yCisvLyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZS4KKworI2lm
IEdURVNUX0xBTkdfQ1hYMTEKKyMgZGVmaW5lIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhleHByLCBt
c2cpIHN0YXRpY19hc3NlcnQoZXhwciwgI21zZykKKyNlbHNlICAvLyAhR1RFU1RfTEFOR19DWFgx
MQordGVtcGxhdGUgPGJvb2w+CisgIHN0cnVjdCBDb21waWxlQXNzZXJ0IHsKK307CiAKLSAgdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7Ci0gICAgcmV0dXJuIG1hbGxvYyhzaXplKTsK
LSAgfQorIyBkZWZpbmUgR1RFU1RfQ09NUElMRV9BU1NFUlRfKGV4cHIsIG1zZykgXAorICB0eXBl
ZGVmIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvbXBpbGVBc3NlcnQ8KHN0YXRpY19jYXN0PGJvb2w+
KGV4cHIpKT4gXAorICAgICAgbXNnW3N0YXRpY19jYXN0PGJvb2w+KGV4cHIpID8gMSA6IC0xXSBH
VEVTVF9BVFRSSUJVVEVfVU5VU0VEXworI2VuZGlmICAvLyAhR1RFU1RfTEFOR19DWFgxMQogCi0g
IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsKLSAgICBmcmVlKHApOwotICB9CisvLyBJ
bXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIEdURVNUX0NPTVBJTEVfQVNTRVJUXzoKKy8vCisvLyAo
SW4gQysrMTEsIHdlIHNpbXBseSB1c2Ugc3RhdGljX2Fzc2VydCBpbnN0ZWFkIG9mIHRoZSBmb2xs
b3dpbmcpCisvLworLy8gLSBHVEVTVF9DT01QSUxFX0FTU0VSVF8gd29ya3MgYnkgZGVmaW5pbmcg
YW4gYXJyYXkgdHlwZSB0aGF0IGhhcyAtMQorLy8gICBlbGVtZW50cyAoYW5kIHRodXMgaXMgaW52
YWxpZCkgd2hlbiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZS4KKy8vCisvLyAtIFRoZSBzaW1wbGVy
IGRlZmluaXRpb24KKy8vCisvLyAgICAjZGVmaW5lIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhleHBy
LCBtc2cpIHR5cGVkZWYgY2hhciBtc2dbKGV4cHIpID8gMSA6IC0xXQorLy8KKy8vICAgZG9lcyBu
b3Qgd29yaywgYXMgZ2NjIHN1cHBvcnRzIHZhcmlhYmxlLWxlbmd0aCBhcnJheXMgd2hvc2Ugc2l6
ZXMKKy8vICAgYXJlIGRldGVybWluZWQgYXQgcnVuLXRpbWUgKHRoaXMgaXMgZ2NjJ3MgZXh0ZW5z
aW9uIGFuZCBub3QgcGFydAorLy8gICBvZiB0aGUgQysrIHN0YW5kYXJkKS4gIEFzIGEgcmVzdWx0
LCBnY2MgZmFpbHMgdG8gcmVqZWN0IHRoZQorLy8gICBmb2xsb3dpbmcgY29kZSB3aXRoIHRoZSBz
aW1wbGUgZGVmaW5pdGlvbjoKKy8vCisvLyAgICAgaW50IGZvbzsKKy8vICAgICBHVEVTVF9DT01Q
SUxFX0FTU0VSVF8oZm9vLCBtc2cpOyAvLyBub3Qgc3VwcG9zZWQgdG8gY29tcGlsZSBhcyBmb28g
aXMKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBub3QgYSBjb21w
aWxlLXRpbWUgY29uc3RhbnQuCisvLworLy8gLSBCeSB1c2luZyB0aGUgdHlwZSBDb21waWxlQXNz
ZXJ0PChib29sKGV4cHIpKT4sIHdlIGVuc3VyZXMgdGhhdAorLy8gICBleHByIGlzIGEgY29tcGls
ZS10aW1lIGNvbnN0YW50LiAgKFRlbXBsYXRlIGFyZ3VtZW50cyBtdXN0IGJlCisvLyAgIGRldGVy
bWluZWQgYXQgY29tcGlsZS10aW1lLikKKy8vCisvLyAtIFRoZSBvdXR0ZXIgcGFyZW50aGVzZXMg
aW4gQ29tcGlsZUFzc2VydDwoYm9vbChleHByKSk+IGFyZSBuZWNlc3NhcnkKKy8vICAgdG8gd29y
ayBhcm91bmQgYSBidWcgaW4gZ2NjIDMuNC40IGFuZCA0LjAuMS4gIElmIHdlIGhhZCB3cml0dGVu
CisvLworLy8gICAgIENvbXBpbGVBc3NlcnQ8Ym9vbChleHByKT4KKy8vCisvLyAgIGluc3RlYWQs
IHRoZXNlIGNvbXBpbGVycyB3aWxsIHJlZnVzZSB0byBjb21waWxlCisvLworLy8gICAgIEdURVNU
X0NPTVBJTEVfQVNTRVJUXyg1ID4gMCwgc29tZV9tZXNzYWdlKTsKKy8vCisvLyAgIChUaGV5IHNl
ZW0gdG8gdGhpbmsgdGhlICI+IiBpbiAiNSA+IDAiIG1hcmtzIHRoZSBlbmQgb2YgdGhlCisvLyAg
IHRlbXBsYXRlIGFyZ3VtZW50IGxpc3QuKQorLy8KKy8vIC0gVGhlIGFycmF5IHNpemUgaXMgKGJv
b2woZXhwcikgPyAxIDogLTEpLCBpbnN0ZWFkIG9mIHNpbXBseQorLy8KKy8vICAgICAoKGV4cHIp
ID8gMSA6IC0xKS4KKy8vCisvLyAgIFRoaXMgaXMgdG8gYXZvaWQgcnVubmluZyBpbnRvIGEgYnVn
IGluIE1TIFZDIDcuMSwgd2hpY2gKKy8vICAgY2F1c2VzICgoMC4wKSA/IDEgOiAtMSkgdG8gaW5j
b3JyZWN0bHkgZXZhbHVhdGUgdG8gMS4KIAotICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qg
c2l6ZSkgewotICAgIHJldHVybiBtYWxsb2Moc2l6ZSk7Ci0gIH0KKy8vIFN0YXRpY0Fzc2VydFR5
cGVFcUhlbHBlciBpcyB1c2VkIGJ5IFN0YXRpY0Fzc2VydFR5cGVFcSBkZWZpbmVkIGluIGd0ZXN0
LmguCisvLworLy8gVGhpcyB0ZW1wbGF0ZSBpcyBkZWNsYXJlZCwgYnV0IGludGVudGlvbmFsbHkg
dW5kZWZpbmVkLgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3N0cnVjdCBT
dGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI7CiAKLSAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lk
KiBwKSB7Ci0gICAgZnJlZShwKTsKLSAgfQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3Qg
U3RhdGljQXNzZXJ0VHlwZUVxSGVscGVyPFQsIFQ+IHsKKyAgZW51bSB7IHZhbHVlID0gdHJ1ZSB9
OwogfTsKIAorLy8gU2FtZSBhcyBzdGQ6OmlzX3NhbWU8Pi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPgorc3RydWN0IElzU2FtZSB7CisgIGVudW0geyB2YWx1ZSA9IGZhbHNlIH07
Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNTYW1lPFQsIFQ+IHsKKyAgZW51
bSB7IHZhbHVlID0gdHJ1ZSB9OworfTsKIAorLy8gRXZhbHVhdGVzIHRvIHRoZSBudW1iZXIgb2Yg
ZWxlbWVudHMgaW4gJ2FycmF5Jy4KKyNkZWZpbmUgR1RFU1RfQVJSQVlfU0laRV8oYXJyYXkpIChz
aXplb2YoYXJyYXkpIC8gc2l6ZW9mKGFycmF5WzBdKSkKKworI2lmIEdURVNUX0hBU19HTE9CQUxf
U1RSSU5HCit0eXBlZGVmIDo6c3RyaW5nIHN0cmluZzsKKyNlbHNlCit0eXBlZGVmIDo6c3RkOjpz
dHJpbmcgc3RyaW5nOworI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCisjaWYg
R1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCit0eXBlZGVmIDo6d3N0cmluZyB3c3RyaW5nOworI2Vs
aWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCit0eXBlZGVmIDo6c3RkOjp3c3RyaW5nIHdzdHJpbmc7
CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwogCiAvLyBBIGhlbHBlciBmb3Ig
c3VwcHJlc3Npbmcgd2FybmluZ3Mgb24gY29uc3RhbnQgY29uZGl0aW9uLiAgSXQganVzdAogLy8g
cmV0dXJucyAnY29uZGl0aW9uJy4KQEAgLTY4NSw2ICsxMjE4LDEyIEBAIGNsYXNzIHNjb3BlZF9w
dHIgewogICAgICAgcHRyXyA9IHA7CiAgICAgfQogICB9CisKKyAgZnJpZW5kIHZvaWQgc3dhcChz
Y29wZWRfcHRyJiBhLCBzY29wZWRfcHRyJiBiKSB7CisgICAgdXNpbmcgc3RkOjpzd2FwOworICAg
IHN3YXAoYS5wdHJfLCBiLnB0cl8pOworICB9CisKICBwcml2YXRlOgogICBUKiBwdHJfOwogCkBA
IC02OTMsNiArMTIzMiwxMCBAQCBjbGFzcyBzY29wZWRfcHRyIHsKIAogLy8gRGVmaW5lcyBSRS4K
IAorI2lmIEdURVNUX1VTRVNfUENSRQorLy8gaWYgdXNlZCwgUENSRSBpcyBpbmplY3RlZCBieSBj
dXN0b20vZ3Rlc3QtcG9ydC5oCisjZWxpZiBHVEVTVF9VU0VTX1BPU0lYX1JFIHx8IEdURVNUX1VT
RVNfU0lNUExFX1JFCisKIC8vIEEgc2ltcGxlIEMrKyB3cmFwcGVyIGZvciA8cmVnZXguaD4uICBJ
dCB1c2VzIHRoZSBQT1NJWCBFeHRlbmRlZAogLy8gUmVndWxhciBFeHByZXNzaW9uIHN5bnRheC4K
IGNsYXNzIEdURVNUX0FQSV8gUkUgewpAQCAtNzA0LDkgKzEyNDcsMTEgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBSRSB7CiAgIC8vIENvbnN0cnVjdHMgYW4gUkUgZnJvbSBhIHN0cmluZy4KICAgUkUoY29u
c3QgOjpzdGQ6OnN0cmluZyYgcmVnZXgpIHsgSW5pdChyZWdleC5jX3N0cigpKTsgfSAgLy8gTk9M
SU5UCiAKLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworIyBpZiBHVEVTVF9IQVNfR0xPQkFM
X1NUUklORworCiAgIFJFKGNvbnN0IDo6c3RyaW5nJiByZWdleCkgeyBJbml0KHJlZ2V4LmNfc3Ry
KCkpOyB9ICAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKwor
IyBlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKIAogICBSRShjb25zdCBjaGFyKiBy
ZWdleCkgeyBJbml0KHJlZ2V4KTsgfSAgLy8gTk9MSU5UCiAgIH5SRSgpOwpAQCAtNzE5LDcgKzEy
NjQsNyBAQCBjbGFzcyBHVEVTVF9BUElfIFJFIHsKICAgLy8gUGFydGlhbE1hdGNoKHN0ciwgcmUp
IHJldHVybnMgdHJ1ZSBpZmYgcmVndWxhciBleHByZXNzaW9uIHJlCiAgIC8vIG1hdGNoZXMgYSBz
dWJzdHJpbmcgb2Ygc3RyIChpbmNsdWRpbmcgc3RyIGl0c2VsZikuCiAgIC8vCi0gIC8vIFRPRE8o
d2FuQGdvb2dsZS5jb20pOiBtYWtlIEZ1bGxNYXRjaCgpIGFuZCBQYXJ0aWFsTWF0Y2goKSB3b3Jr
CisgIC8vIEZJWE1FOiBtYWtlIEZ1bGxNYXRjaCgpIGFuZCBQYXJ0aWFsTWF0Y2goKSB3b3JrCiAg
IC8vIHdoZW4gc3RyIGNvbnRhaW5zIE5VTCBjaGFyYWN0ZXJzLgogICBzdGF0aWMgYm9vbCBGdWxs
TWF0Y2goY29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyLCBjb25zdCBSRSYgcmUpIHsKICAgICByZXR1
cm4gRnVsbE1hdGNoKHN0ci5jX3N0cigpLCByZSk7CkBAIC03MjgsMTQgKzEyNzMsMTYgQEAgY2xh
c3MgR1RFU1RfQVBJXyBSRSB7CiAgICAgcmV0dXJuIFBhcnRpYWxNYXRjaChzdHIuY19zdHIoKSwg
cmUpOwogICB9CiAKLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworIyBpZiBHVEVTVF9IQVNf
R0xPQkFMX1NUUklORworCiAgIHN0YXRpYyBib29sIEZ1bGxNYXRjaChjb25zdCA6OnN0cmluZyYg
c3RyLCBjb25zdCBSRSYgcmUpIHsKICAgICByZXR1cm4gRnVsbE1hdGNoKHN0ci5jX3N0cigpLCBy
ZSk7CiAgIH0KICAgc3RhdGljIGJvb2wgUGFydGlhbE1hdGNoKGNvbnN0IDo6c3RyaW5nJiBzdHIs
IGNvbnN0IFJFJiByZSkgewogICAgIHJldHVybiBQYXJ0aWFsTWF0Y2goc3RyLmNfc3RyKCksIHJl
KTsKICAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCisjIGVuZGlmICAv
LyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwogCiAgIHN0YXRpYyBib29sIEZ1bGxNYXRjaChjb25z
dCBjaGFyKiBzdHIsIGNvbnN0IFJFJiByZSk7CiAgIHN0YXRpYyBib29sIFBhcnRpYWxNYXRjaChj
b25zdCBjaGFyKiBzdHIsIGNvbnN0IFJFJiByZSk7CkBAIC03NDMsMjIgKzEyOTAsMzggQEAgY2xh
c3MgR1RFU1RfQVBJXyBSRSB7CiAgcHJpdmF0ZToKICAgdm9pZCBJbml0KGNvbnN0IGNoYXIqIHJl
Z2V4KTsKIAotICAvLyBXZSB1c2UgYSBjb25zdCBjaGFyKiBpbnN0ZWFkIG9mIGEgc3RyaW5nLCBh
cyBHb29nbGUgVGVzdCBtYXkgYmUgdXNlZAotICAvLyB3aGVyZSBzdHJpbmcgaXMgbm90IGF2YWls
YWJsZS4gIFdlIGFsc28gZG8gbm90IHVzZSBHb29nbGUgVGVzdCdzIG93bgotICAvLyBTdHJpbmcg
dHlwZSBoZXJlLCBpbiBvcmRlciB0byBzaW1wbGlmeSBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGUK
LSAgLy8gZmlsZXMuCisgIC8vIFdlIHVzZSBhIGNvbnN0IGNoYXIqIGluc3RlYWQgb2YgYW4gc3Rk
OjpzdHJpbmcsIGFzIEdvb2dsZSBUZXN0IHVzZWQgdG8gYmUKKyAgLy8gdXNlZCB3aGVyZSBzdGQ6
OnN0cmluZyBpcyBub3QgYXZhaWxhYmxlLiAgRklYTUU6IGNoYW5nZSB0bworICAvLyBzdGQ6OnN0
cmluZy4KICAgY29uc3QgY2hhciogcGF0dGVybl87CiAgIGJvb2wgaXNfdmFsaWRfOwotI2lmIEdU
RVNUX1VTRVNfUE9TSVhfUkUKKworIyBpZiBHVEVTVF9VU0VTX1BPU0lYX1JFCisKICAgcmVnZXhf
dCBmdWxsX3JlZ2V4XzsgICAgIC8vIEZvciBGdWxsTWF0Y2goKS4KICAgcmVnZXhfdCBwYXJ0aWFs
X3JlZ2V4XzsgIC8vIEZvciBQYXJ0aWFsTWF0Y2goKS4KLSNlbHNlICAvLyBHVEVTVF9VU0VTX1NJ
TVBMRV9SRQorCisjIGVsc2UgIC8vIEdURVNUX1VTRVNfU0lNUExFX1JFCisKICAgY29uc3QgY2hh
ciogZnVsbF9wYXR0ZXJuXzsgIC8vIEZvciBGdWxsTWF0Y2goKTsKLSNlbmRpZgorCisjIGVuZGlm
CiAKICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhSRSk7CiB9OwogCisjZW5kaWYgIC8vIEdURVNU
X1VTRVNfUENSRQorCisvLyBGb3JtYXRzIGEgc291cmNlIGZpbGUgcGF0aCBhbmQgYSBsaW5lIG51
bWJlciBhcyB0aGV5IHdvdWxkIGFwcGVhcgorLy8gaW4gYW4gZXJyb3IgbWVzc2FnZSBmcm9tIHRo
ZSBjb21waWxlciB1c2VkIHRvIGNvbXBpbGUgdGhpcyBjb2RlLgorR1RFU1RfQVBJXyA6OnN0ZDo6
c3RyaW5nIEZvcm1hdEZpbGVMb2NhdGlvbihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7CisK
Ky8vIEZvcm1hdHMgYSBmaWxlIGxvY2F0aW9uIGZvciBjb21waWxlci1pbmRlcGVuZGVudCBYTUwg
b3V0cHV0LgorLy8gQWx0aG91Z2ggdGhpcyBmdW5jdGlvbiBpcyBub3QgcGxhdGZvcm0gZGVwZW5k
ZW50LCB3ZSBwdXQgaXQgbmV4dCB0bworLy8gRm9ybWF0RmlsZUxvY2F0aW9uIGluIG9yZGVyIHRv
IGNvbnRyYXN0IHRoZSB0d28gZnVuY3Rpb25zLgorR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEZv
cm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oY29uc3QgY2hhciogZmlsZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBsaW5lKTsKKwogLy8gRGVmaW5lcyBsb2dnaW5nIHV0aWxpdGllczoKIC8vICAgR1RF
U1RfTE9HXyhzZXZlcml0eSkgLSBsb2dzIG1lc3NhZ2VzIGF0IHRoZSBzcGVjaWZpZWQgc2V2ZXJp
dHkgbGV2ZWwuIFRoZQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgaXRzZWxm
IGlzIHN0cmVhbWVkIGludG8gdGhlIG1hY3JvLgpAQCAtNzkwLDEzICsxMzUzLDE4IEBAIGNsYXNz
IEdURVNUX0FQSV8gR1Rlc3RMb2cgewogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05f
KEdUZXN0TG9nKTsKIH07CiAKLSNkZWZpbmUgR1RFU1RfTE9HXyhzZXZlcml0eSkgXAorI2lmICFk
ZWZpbmVkKEdURVNUX0xPR18pCisKKyMgZGVmaW5lIEdURVNUX0xPR18oc2V2ZXJpdHkpIFwKICAg
ICA6OnRlc3Rpbmc6OmludGVybmFsOjpHVGVzdExvZyg6OnRlc3Rpbmc6OmludGVybmFsOjpHVEVT
VF8jI3NldmVyaXR5LCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GSUxF
X18sIF9fTElORV9fKS5HZXRTdHJlYW0oKQogCiBpbmxpbmUgdm9pZCBMb2dUb1N0ZGVycigpIHt9
CiBpbmxpbmUgdm9pZCBGbHVzaEluZm9Mb2coKSB7IGZmbHVzaChOVUxMKTsgfQogCisjZW5kaWYg
IC8vICFkZWZpbmVkKEdURVNUX0xPR18pCisKKyNpZiAhZGVmaW5lZChHVEVTVF9DSEVDS18pCiAv
LyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UuCiAvLwogLy8gR1RFU1RfQ0hF
Q0tfIGlzIGFuIGFsbC1tb2RlIGFzc2VydC4gSXQgYWJvcnRzIHRoZSBwcm9ncmFtIGlmIHRoZSBj
b25kaXRpb24KQEAgLTgxMSwxMiArMTM3OSwxMyBAQCBpbmxpbmUgdm9pZCBGbHVzaEluZm9Mb2co
KSB7IGZmbHVzaChOVUxMKTsgfQogLy8gICAgY29uZGl0aW9uIGl0c2VsZiwgcGx1cyBhZGRpdGlv
bmFsIG1lc3NhZ2Ugc3RyZWFtZWQgaW50byBpdCwgaWYgYW55LAogLy8gICAgYW5kIHRoZW4gaXQg
YWJvcnRzIHRoZSBwcm9ncmFtLiBJdCBhYm9ydHMgdGhlIHByb2dyYW0gaXJyZXNwZWN0aXZlIG9m
CiAvLyAgICB3aGV0aGVyIGl0IGlzIGJ1aWx0IGluIHRoZSBkZWJ1ZyBtb2RlIG9yIG5vdC4KLSNk
ZWZpbmUgR1RFU1RfQ0hFQ0tfKGNvbmRpdGlvbikgXAorIyBkZWZpbmUgR1RFU1RfQ0hFQ0tfKGNv
bmRpdGlvbikgXAogICAgIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKICAgICBpZiAo
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6SXNUcnVlKGNvbmRpdGlvbikpIFwKICAgICAgIDsgXAogICAg
IGVsc2UgXAogICAgICAgR1RFU1RfTE9HXyhGQVRBTCkgPDwgIkNvbmRpdGlvbiAiICNjb25kaXRp
b24gIiBmYWlsZWQuICIKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfQ0hFQ0tfKQogCiAvLyBB
biBhbGwtbW9kZSBhc3NlcnQgdG8gdmVyaWZ5IHRoYXQgdGhlIGdpdmVuIFBPU0lYLXN0eWxlIGZ1
bmN0aW9uCiAvLyBjYWxsIHJldHVybnMgMCAoaW5kaWNhdGluZyBzdWNjZXNzKS4gIEtub3duIGxp
bWl0YXRpb246IHRoaXMKQEAgLTgyOCw4ICsxMzk3LDEyNSBAQCBpbmxpbmUgdm9pZCBGbHVzaElu
Zm9Mb2coKSB7IGZmbHVzaChOVUxMKTsgfQogICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICNwb3Np
eF9jYWxsIDw8ICJmYWlsZWQgd2l0aCBlcnJvciAiIFwKICAgICAgICAgICAgICAgICAgICAgICA8
PCBndGVzdF9lcnJvcgogCisvLyBBZGRzIHJlZmVyZW5jZSB0byBhIHR5cGUgaWYgaXQgaXMgbm90
IGEgcmVmZXJlbmNlIHR5cGUsCisvLyBvdGhlcndpc2UgbGVhdmVzIGl0IHVuY2hhbmdlZC4gIFRo
aXMgaXMgdGhlIHNhbWUgYXMKKy8vIHRyMTo6YWRkX3JlZmVyZW5jZSwgd2hpY2ggaXMgbm90IHdp
ZGVseSBhdmFpbGFibGUgeWV0LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQWRkUmVm
ZXJlbmNlIHsgdHlwZWRlZiBUJiB0eXBlOyB9OyAgLy8gTk9MSU5UCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK3N0cnVjdCBBZGRSZWZlcmVuY2U8VCY+IHsgdHlwZWRlZiBUJiB0eXBlOyB9OyAgLy8g
Tk9MSU5UCisKKy8vIEEgaGFuZHkgd3JhcHBlciBhcm91bmQgQWRkUmVmZXJlbmNlIHRoYXQgd29y
a3Mgd2hlbiB0aGUgYXJndW1lbnQgVAorLy8gZGVwZW5kcyBvbiB0ZW1wbGF0ZSBwYXJhbWV0ZXJz
LgorI2RlZmluZSBHVEVTVF9BRERfUkVGRVJFTkNFXyhUKSBcCisgICAgdHlwZW5hbWUgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6QWRkUmVmZXJlbmNlPFQ+Ojp0eXBlCisKKy8vIFRyYW5zZm9ybXMgIlQi
IGludG8gImNvbnN0IFQmIiBhY2NvcmRpbmcgdG8gc3RhbmRhcmQgcmVmZXJlbmNlIGNvbGxhcHNp
bmcKKy8vIHJ1bGVzICh0aGlzIGlzIG9ubHkgbmVlZGVkIGFzIGEgYmFja3BvcnQgZm9yIEMrKzk4
IGNvbXBpbGVycyB0aGF0IGRvIG5vdAorLy8gc3VwcG9ydCByZWZlcmVuY2UgY29sbGFwc2luZyku
IFNwZWNpZmljYWxseSwgaXQgdHJhbnNmb3JtczoKKy8vCisvLyAgIGNoYXIgICAgICAgICA9PT4g
Y29uc3QgY2hhciYKKy8vICAgY29uc3QgY2hhciAgID09PiBjb25zdCBjaGFyJgorLy8gICBjaGFy
JiAgICAgICAgPT0+IGNoYXImCisvLyAgIGNvbnN0IGNoYXImICA9PT4gY29uc3QgY2hhciYKKy8v
CisvLyBOb3RlIHRoYXQgdGhlIG5vbi1jb25zdCByZWZlcmVuY2Ugd2lsbCBub3QgaGF2ZSAiY29u
c3QiIGFkZGVkLiBUaGlzIGlzCisvLyBzdGFuZGFyZCwgYW5kIG5lY2Vzc2FyeSBzbyB0aGF0ICJU
IiBjYW4gYWx3YXlzIGJpbmQgdG8gImNvbnN0IFQmIi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
c3RydWN0IENvbnN0UmVmIHsgdHlwZWRlZiBjb25zdCBUJiB0eXBlOyB9OwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitzdHJ1Y3QgQ29uc3RSZWY8VCY+IHsgdHlwZWRlZiBUJiB0eXBlOyB9OworCisv
LyBUaGUgYXJndW1lbnQgVCBtdXN0IGRlcGVuZCBvbiBzb21lIHRlbXBsYXRlIHBhcmFtZXRlcnMu
CisjZGVmaW5lIEdURVNUX1JFRkVSRU5DRV9UT19DT05TVF8oVCkgXAorICB0eXBlbmFtZSA6OnRl
c3Rpbmc6OmludGVybmFsOjpDb25zdFJlZjxUPjo6dHlwZQorCisjaWYgR1RFU1RfSEFTX1NURF9N
T1ZFXwordXNpbmcgc3RkOjpmb3J3YXJkOwordXNpbmcgc3RkOjptb3ZlOworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK3N0cnVjdCBSdmFsdWVSZWYgeworICB0eXBlZGVmIFQmJiB0eXBlOworfTsK
KyNlbHNlICAvLyBHVEVTVF9IQVNfU1REX01PVkVfCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Nv
bnN0IFQmIG1vdmUoY29uc3QgVCYgdCkgeworICByZXR1cm4gdDsKK30KK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgorR1RFU1RfQUREX1JFRkVSRU5DRV8oVCkgZm9yd2FyZChHVEVTVF9BRERfUkVGRVJF
TkNFXyhUKSB0KSB7IHJldHVybiB0OyB9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0
IFJ2YWx1ZVJlZiB7CisgIHR5cGVkZWYgY29uc3QgVCYgdHlwZTsKK307CisjZW5kaWYgIC8vIEdU
RVNUX0hBU19TVERfTU9WRV8KKwogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1Qg
VVNFIElOIFVTRVIgQ09ERS4KIC8vCisvLyBVc2UgSW1wbGljaXRDYXN0XyBhcyBhIHNhZmUgdmVy
c2lvbiBvZiBzdGF0aWNfY2FzdCBmb3IgdXBjYXN0aW5nIGluCisvLyB0aGUgdHlwZSBoaWVyYXJj
aHkgKGUuZy4gY2FzdGluZyBhIEZvbyogdG8gYSBTdXBlcmNsYXNzT2ZGb28qIG9yIGEKKy8vIGNv
bnN0IEZvbyopLiAgV2hlbiB5b3UgdXNlIEltcGxpY2l0Q2FzdF8sIHRoZSBjb21waWxlciBjaGVj
a3MgdGhhdAorLy8gdGhlIGNhc3QgaXMgc2FmZS4gIFN1Y2ggZXhwbGljaXQgSW1wbGljaXRDYXN0
X3MgYXJlIG5lY2Vzc2FyeSBpbgorLy8gc3VycHJpc2luZ2x5IG1hbnkgc2l0dWF0aW9ucyB3aGVy
ZSBDKysgZGVtYW5kcyBhbiBleGFjdCB0eXBlIG1hdGNoCisvLyBpbnN0ZWFkIG9mIGFuIGFyZ3Vt
ZW50IHR5cGUgY29udmVydGFibGUgdG8gYSB0YXJnZXQgdHlwZS4KKy8vCisvLyBUaGUgc3ludGF4
IGZvciB1c2luZyBJbXBsaWNpdENhc3RfIGlzIHRoZSBzYW1lIGFzIGZvciBzdGF0aWNfY2FzdDoK
Ky8vCisvLyAgIEltcGxpY2l0Q2FzdF88VG9UeXBlPihleHByKQorLy8KKy8vIEltcGxpY2l0Q2Fz
dF8gd291bGQgaGF2ZSBiZWVuIHBhcnQgb2YgdGhlIEMrKyBzdGFuZGFyZCBsaWJyYXJ5LAorLy8g
YnV0IHRoZSBwcm9wb3NhbCB3YXMgc3VibWl0dGVkIHRvbyBsYXRlLiAgSXQgd2lsbCBwcm9iYWJs
eSBtYWtlCisvLyBpdHMgd2F5IGludG8gdGhlIGxhbmd1YWdlIGluIHRoZSBmdXR1cmUuCisvLwor
Ly8gVGhpcyByZWxhdGl2ZWx5IHVnbHkgbmFtZSBpcyBpbnRlbnRpb25hbC4gSXQgcHJldmVudHMg
Y2xhc2hlcyB3aXRoCisvLyBzaW1pbGFyIGZ1bmN0aW9ucyB1c2VycyBtYXkgaGF2ZSAoZS5nLiwg
aW1wbGljaXRfY2FzdCkuIFRoZSBpbnRlcm5hbAorLy8gbmFtZXNwYWNlIGFsb25lIGlzIG5vdCBl
bm91Z2ggYmVjYXVzZSB0aGUgZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGJ5IEFETC4KK3RlbXBsYXRl
PHR5cGVuYW1lIFRvPgoraW5saW5lIFRvIEltcGxpY2l0Q2FzdF8oVG8geCkgeyByZXR1cm4geDsg
fQorCisvLyBXaGVuIHlvdSB1cGNhc3QgKHRoYXQgaXMsIGNhc3QgYSBwb2ludGVyIGZyb20gdHlw
ZSBGb28gdG8gdHlwZQorLy8gU3VwZXJjbGFzc09mRm9vKSwgaXQncyBmaW5lIHRvIHVzZSBJbXBs
aWNpdENhc3RfPD4sIHNpbmNlIHVwY2FzdHMKKy8vIGFsd2F5cyBzdWNjZWVkLiAgV2hlbiB5b3Ug
ZG93bmNhc3QgKHRoYXQgaXMsIGNhc3QgYSBwb2ludGVyIGZyb20KKy8vIHR5cGUgRm9vIHRvIHR5
cGUgU3ViY2xhc3NPZkZvbyksIHN0YXRpY19jYXN0PD4gaXNuJ3Qgc2FmZSwgYmVjYXVzZQorLy8g
aG93IGRvIHlvdSBrbm93IHRoZSBwb2ludGVyIGlzIHJlYWxseSBvZiB0eXBlIFN1YmNsYXNzT2ZG
b28/ICBJdAorLy8gY291bGQgYmUgYSBiYXJlIEZvbywgb3Igb2YgdHlwZSBEaWZmZXJlbnRTdWJj
bGFzc09mRm9vLiAgVGh1cywKKy8vIHdoZW4geW91IGRvd25jYXN0LCB5b3Ugc2hvdWxkIHVzZSB0
aGlzIG1hY3JvLiAgSW4gZGVidWcgbW9kZSwgd2UKKy8vIHVzZSBkeW5hbWljX2Nhc3Q8PiB0byBk
b3VibGUtY2hlY2sgdGhlIGRvd25jYXN0IGlzIGxlZ2FsICh3ZSBkaWUKKy8vIGlmIGl0J3Mgbm90
KS4gIEluIG5vcm1hbCBtb2RlLCB3ZSBkbyB0aGUgZWZmaWNpZW50IHN0YXRpY19jYXN0PD4KKy8v
IGluc3RlYWQuICBUaHVzLCBpdCdzIGltcG9ydGFudCB0byB0ZXN0IGluIGRlYnVnIG1vZGUgdG8g
bWFrZSBzdXJlCisvLyB0aGUgY2FzdCBpcyBsZWdhbCEKKy8vICAgIFRoaXMgaXMgdGhlIG9ubHkg
cGxhY2UgaW4gdGhlIGNvZGUgd2Ugc2hvdWxkIHVzZSBkeW5hbWljX2Nhc3Q8Pi4KKy8vIEluIHBh
cnRpY3VsYXIsIHlvdSBTSE9VTEROJ1QgYmUgdXNpbmcgZHluYW1pY19jYXN0PD4gaW4gb3JkZXIg
dG8KKy8vIGRvIFJUVEkgKGVnIGNvZGUgbGlrZSB0aGlzOgorLy8gICAgaWYgKGR5bmFtaWNfY2Fz
dDxTdWJjbGFzczE+KGZvbykpIEhhbmRsZUFTdWJjbGFzczFPYmplY3QoZm9vKTsKKy8vICAgIGlm
IChkeW5hbWljX2Nhc3Q8U3ViY2xhc3MyPihmb28pKSBIYW5kbGVBU3ViY2xhc3MyT2JqZWN0KGZv
byk7CisvLyBZb3Ugc2hvdWxkIGRlc2lnbiB0aGUgY29kZSBzb21lIG90aGVyIHdheSBub3QgdG8g
bmVlZCB0aGlzLgorLy8KKy8vIFRoaXMgcmVsYXRpdmVseSB1Z2x5IG5hbWUgaXMgaW50ZW50aW9u
YWwuIEl0IHByZXZlbnRzIGNsYXNoZXMgd2l0aAorLy8gc2ltaWxhciBmdW5jdGlvbnMgdXNlcnMg
bWF5IGhhdmUgKGUuZy4sIGRvd25fY2FzdCkuIFRoZSBpbnRlcm5hbAorLy8gbmFtZXNwYWNlIGFs
b25lIGlzIG5vdCBlbm91Z2ggYmVjYXVzZSB0aGUgZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGJ5IEFE
TC4KK3RlbXBsYXRlPHR5cGVuYW1lIFRvLCB0eXBlbmFtZSBGcm9tPiAgLy8gdXNlIGxpa2UgdGhp
czogRG93bkNhc3RfPFQqPihmb28pOworaW5saW5lIFRvIERvd25DYXN0XyhGcm9tKiBmKSB7ICAv
LyBzbyB3ZSBvbmx5IGFjY2VwdCBwb2ludGVycworICAvLyBFbnN1cmVzIHRoYXQgVG8gaXMgYSBz
dWItdHlwZSBvZiBGcm9tICouICBUaGlzIHRlc3QgaXMgaGVyZSBvbmx5CisgIC8vIGZvciBjb21w
aWxlLXRpbWUgdHlwZSBjaGVja2luZywgYW5kIGhhcyBubyBvdmVyaGVhZCBpbiBhbgorICAvLyBv
cHRpbWl6ZWQgYnVpbGQgYXQgcnVuLXRpbWUsIGFzIGl0IHdpbGwgYmUgb3B0aW1pemVkIGF3YXkK
KyAgLy8gY29tcGxldGVseS4KKyAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QVVNIXygp
CisgIGlmIChmYWxzZSkgeworICBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BPUF8oKQor
ICAgIGNvbnN0IFRvIHRvID0gTlVMTDsKKyAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNp
dENhc3RfPEZyb20qPih0byk7CisgIH0KKworI2lmIEdURVNUX0hBU19SVFRJCisgIC8vIFJUVEk6
IGRlYnVnIG1vZGUgb25seSEKKyAgR1RFU1RfQ0hFQ0tfKGYgPT0gTlVMTCB8fCBkeW5hbWljX2Nh
c3Q8VG8+KGYpICE9IE5VTEwpOworI2VuZGlmCisgIHJldHVybiBzdGF0aWNfY2FzdDxUbz4oZik7
Cit9CisKIC8vIERvd25jYXN0cyB0aGUgcG9pbnRlciBvZiB0eXBlIEJhc2UgdG8gRGVyaXZlZC4K
IC8vIERlcml2ZWQgbXVzdCBiZSBhIHN1YmNsYXNzIG9mIEJhc2UuIFRoZSBwYXJhbWV0ZXIgTVVT
VAogLy8gcG9pbnQgdG8gYSBjbGFzcyBvZiB0eXBlIERlcml2ZWQsIG5vdCBhbnkgc3ViY2xhc3Mg
b2YgaXQuCkBAIC04MzksMTMgKzE1MjUsMTggQEAgdGVtcGxhdGUgPGNsYXNzIERlcml2ZWQsIGNs
YXNzIEJhc2U+CiBEZXJpdmVkKiBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGUoQmFzZSogYmFz
ZSkgewogI2lmIEdURVNUX0hBU19SVFRJCiAgIEdURVNUX0NIRUNLXyh0eXBlaWQoKmJhc2UpID09
IHR5cGVpZChEZXJpdmVkKSk7CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19ET1dOQ0FTVF8KKyAg
cmV0dXJuIDo6ZG93bl9jYXN0PERlcml2ZWQqPihiYXNlKTsKKyNlbGlmIEdURVNUX0hBU19SVFRJ
CiAgIHJldHVybiBkeW5hbWljX2Nhc3Q8RGVyaXZlZCo+KGJhc2UpOyAgLy8gTk9MSU5UCiAjZWxz
ZQogICByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZCo+KGJhc2UpOyAgLy8gUG9vciBtYW4ncyBk
b3duY2FzdC4KICNlbmRpZgogfQogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8K
KyNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCiAKIC8vIERlZmluZXMgdGhlIHN0ZGVy
ciBjYXB0dXJlcjoKIC8vICAgQ2FwdHVyZVN0ZG91dCAgICAgLSBzdGFydHMgY2FwdHVyaW5nIHN0
ZG91dC4KQEAgLTg1NCwzMCArMTU0NSwzOSBAQCBEZXJpdmVkKiBDaGVja2VkRG93bmNhc3RUb0Fj
dHVhbFR5cGUoQmFzZSogYmFzZSkgewogLy8gICBHZXRDYXB0dXJlZFN0ZGVyciAtIHN0b3BzIGNh
cHR1cmluZyBzdGRlcnIgYW5kIHJldHVybnMgdGhlIGNhcHR1cmVkIHN0cmluZy4KIC8vCiBHVEVT
VF9BUElfIHZvaWQgQ2FwdHVyZVN0ZG91dCgpOwotR1RFU1RfQVBJXyBTdHJpbmcgR2V0Q2FwdHVy
ZWRTdGRvdXQoKTsKK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKTsK
IEdURVNUX0FQSV8gdm9pZCBDYXB0dXJlU3RkZXJyKCk7Ci1HVEVTVF9BUElfIFN0cmluZyBHZXRD
YXB0dXJlZFN0ZGVycigpOworR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0ZGVy
cigpOwogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCisjZW5kaWYg
IC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KKy8vIFJldHVybnMgdGhlIHNpemUgKGlu
IGJ5dGVzKSBvZiBhIGZpbGUuCitHVEVTVF9BUElfIHNpemVfdCBHZXRGaWxlU2l6ZShGSUxFKiBm
aWxlKTsKIAorLy8gUmVhZHMgdGhlIGVudGlyZSBjb250ZW50IG9mIGEgZmlsZSBhcyBhIHN0cmlu
Zy4KK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgUmVhZEVudGlyZUZpbGUoRklMRSogZmlsZSk7CiAK
LSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorLy8gQWxsIGNvbW1hbmQgbGluZSBhcmd1bWVudHMu
CitHVEVTVF9BUElfIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRBcmd2cygpOwogCi0vLyBB
IGNvcHkgb2YgYWxsIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuICBTZXQgYnkgSW5pdEdvb2dsZVRl
c3QoKS4KLWV4dGVybiA6OnN0ZDo6dmVjdG9yPFN0cmluZz4gZ19hcmd2czsKKyNpZiBHVEVTVF9I
QVNfREVBVEhfVEVTVAogCi0vLyBHVEVTVF9IQVNfREVBVEhfVEVTVCBpbXBsaWVzIHdlIGhhdmUg
OjpzdGQ6OnN0cmluZy4KLWNvbnN0IDo6c3RkOjp2ZWN0b3I8U3RyaW5nPiYgR2V0QXJndnMoKTsK
K3N0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRJbmplY3RhYmxlQXJndnMoKTsKKy8vIERlcHJl
Y2F0ZWQ6IHBhc3MgdGhlIGFyZ3MgdmVjdG9yIGJ5IHZhbHVlIGluc3RlYWQuCit2b2lkIFNldElu
amVjdGFibGVBcmd2cyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIG5ld19hcmd2cyk7
Cit2b2lkIFNldEluamVjdGFibGVBcmd2cyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4m
IG5ld19hcmd2cyk7CisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK3ZvaWQgU2V0SW5qZWN0
YWJsZUFyZ3ZzKGNvbnN0IHN0ZDo6dmVjdG9yPCA6OnN0cmluZz4mIG5ld19hcmd2cyk7CisjZW5k
aWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCit2b2lkIENsZWFySW5qZWN0YWJsZUFyZ3Zz
KCk7CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKIAogLy8gRGVmaW5lcyBzeW5j
aHJvbml6YXRpb24gcHJpbWl0aXZlcy4KLQotI2lmIEdURVNUX0hBU19QVEhSRUFECi0KLS8vIFNs
ZWVwcyBmb3IgKHJvdWdobHkpIG4gbWlsbGktc2Vjb25kcy4gIFRoaXMgZnVuY3Rpb24gaXMgb25s
eSBmb3IKLS8vIHRlc3RpbmcgR29vZ2xlIFRlc3QncyBvd24gY29uc3RydWN0cy4gIERvbid0IHVz
ZSBpdCBpbiB1c2VyIHRlc3RzLAotLy8gZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCisj
aWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorIyBpZiBHVEVTVF9IQVNfUFRIUkVBRAorLy8gU2xlZXBz
IGZvciAocm91Z2hseSkgbiBtaWxsaXNlY29uZHMuICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZm9y
IHRlc3RpbmcKKy8vIEdvb2dsZSBUZXN0J3Mgb3duIGNvbnN0cnVjdHMuICBEb24ndCB1c2UgaXQg
aW4gdXNlciB0ZXN0cywgZWl0aGVyCisvLyBkaXJlY3RseSBvciBpbmRpcmVjdGx5LgogaW5saW5l
IHZvaWQgU2xlZXBNaWxsaXNlY29uZHMoaW50IG4pIHsKICAgY29uc3QgdGltZXNwZWMgdGltZSA9
IHsKICAgICAwLCAgICAgICAgICAgICAgICAgIC8vIDAgc2Vjb25kcy4KQEAgLTg4NSw3ICsxNTg1
LDEzIEBAIGlubGluZSB2b2lkIFNsZWVwTWlsbGlzZWNvbmRzKGludCBuKSB7CiAgIH07CiAgIG5h
bm9zbGVlcCgmdGltZSwgTlVMTCk7CiB9CisjIGVuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVBRAog
CisjIGlmIEdURVNUX0hBU19OT1RJRklDQVRJT05fCisvLyBOb3RpZmljYXRpb24gaGFzIGFscmVh
ZHkgYmVlbiBpbXBvcnRlZCBpbnRvIHRoZSBuYW1lc3BhY2UuCisvLyBOb3RoaW5nIHRvIGRvIGhl
cmUuCisKKyMgZWxpZiBHVEVTVF9IQVNfUFRIUkVBRAogLy8gQWxsb3dzIGEgY29udHJvbGxlciB0
aHJlYWQgdG8gcGF1c2UgZXhlY3V0aW9uIG9mIG5ld2x5IGNyZWF0ZWQKIC8vIHRocmVhZHMgdW50
aWwgbm90aWZpZWQuICBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBtdXN0IGJlIGNyZWF0ZWQKIC8v
IGFuZCBkZXN0cm95ZWQgaW4gdGhlIGNvbnRyb2xsZXIgdGhyZWFkLgpAQCAtODk0LDI1ICsxNjAw
LDk2IEBAIGlubGluZSB2b2lkIFNsZWVwTWlsbGlzZWNvbmRzKGludCBuKSB7CiAvLyB1c2UgaXQg
aW4gdXNlciB0ZXN0cywgZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCiBjbGFzcyBOb3Rp
ZmljYXRpb24gewogIHB1YmxpYzoKLSAgTm90aWZpY2F0aW9uKCkgOiBub3RpZmllZF8oZmFsc2Up
IHt9CisgIE5vdGlmaWNhdGlvbigpIDogbm90aWZpZWRfKGZhbHNlKSB7CisgICAgR1RFU1RfQ0hF
Q0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9pbml0KCZtdXRleF8sIE5VTEwpKTsKKyAg
fQorICB+Tm90aWZpY2F0aW9uKCkgeworICAgIHB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmbXV0ZXhf
KTsKKyAgfQogCiAgIC8vIE5vdGlmaWVzIGFsbCB0aHJlYWRzIGNyZWF0ZWQgd2l0aCB0aGlzIG5v
dGlmaWNhdGlvbiB0byBzdGFydC4gTXVzdAogICAvLyBiZSBjYWxsZWQgZnJvbSB0aGUgY29udHJv
bGxlciB0aHJlYWQuCi0gIHZvaWQgTm90aWZ5KCkgeyBub3RpZmllZF8gPSB0cnVlOyB9CisgIHZv
aWQgTm90aWZ5KCkgeworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXhfKTsKKyAgICBub3Rp
ZmllZF8gPSB0cnVlOworICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleF8pOworICB9CiAK
ICAgLy8gQmxvY2tzIHVudGlsIHRoZSBjb250cm9sbGVyIHRocmVhZCBub3RpZmllcy4gTXVzdCBi
ZSBjYWxsZWQgZnJvbSBhIHRlc3QKICAgLy8gdGhyZWFkLgogICB2b2lkIFdhaXRGb3JOb3RpZmlj
YXRpb24oKSB7Ci0gICAgd2hpbGUoIW5vdGlmaWVkXykgeworICAgIGZvciAoOzspIHsKKyAgICAg
IHB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXhfKTsKKyAgICAgIGNvbnN0IGJvb2wgbm90aWZpZWQg
PSBub3RpZmllZF87CisgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXhfKTsKKyAgICAg
IGlmIChub3RpZmllZCkKKyAgICAgICAgYnJlYWs7CiAgICAgICBTbGVlcE1pbGxpc2Vjb25kcygx
MCk7CiAgICAgfQogICB9CiAKICBwcml2YXRlOgotICB2b2xhdGlsZSBib29sIG5vdGlmaWVkXzsK
KyAgcHRocmVhZF9tdXRleF90IG11dGV4XzsKKyAgYm9vbCBub3RpZmllZF87CisKKyAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhOb3RpZmljYXRpb24pOworfTsKKworIyBlbGlmIEdU
RVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJ
TkRPV1NfUlQKKworR1RFU1RfQVBJXyB2b2lkIFNsZWVwTWlsbGlzZWNvbmRzKGludCBuKTsKKwor
Ly8gUHJvdmlkZXMgbGVhay1zYWZlIFdpbmRvd3Mga2VybmVsIGhhbmRsZSBvd25lcnNoaXAuCisv
LyBVc2VkIGluIGRlYXRoIHRlc3RzIGFuZCBpbiB0aHJlYWRpbmcgc3VwcG9ydC4KK2NsYXNzIEdU
RVNUX0FQSV8gQXV0b0hhbmRsZSB7CisgcHVibGljOgorICAvLyBBc3N1bWUgdGhhdCBXaW4zMiBI
QU5ETEUgdHlwZSBpcyBlcXVpdmFsZW50IHRvIHZvaWQqLiBEb2luZyBzbyBhbGxvd3MgdXMgdG8K
KyAgLy8gYXZvaWQgaW5jbHVkaW5nIDx3aW5kb3dzLmg+IGluIHRoaXMgaGVhZGVyIGZpbGUuIElu
Y2x1ZGluZyA8d2luZG93cy5oPiBpcworICAvLyB1bmRlc2lyYWJsZSBiZWNhdXNlIGl0IGRlZmlu
ZXMgYSBsb3Qgb2Ygc3ltYm9scyBhbmQgbWFjcm9zIHRoYXQgdGVuZCB0bworICAvLyBjb25mbGlj
dCB3aXRoIGNsaWVudCBjb2RlLiBUaGlzIGFzc3VtcHRpb24gaXMgdmVyaWZpZWQgYnkKKyAgLy8g
V2luZG93c1R5cGVzVGVzdC5IQU5ETEVJc1ZvaWRTdGFyLgorICB0eXBlZGVmIHZvaWQqIEhhbmRs
ZTsKKyAgQXV0b0hhbmRsZSgpOworICBleHBsaWNpdCBBdXRvSGFuZGxlKEhhbmRsZSBoYW5kbGUp
OworCisgIH5BdXRvSGFuZGxlKCk7CisKKyAgSGFuZGxlIEdldCgpIGNvbnN0OworICB2b2lkIFJl
c2V0KCk7CisgIHZvaWQgUmVzZXQoSGFuZGxlIGhhbmRsZSk7CisKKyBwcml2YXRlOgorICAvLyBS
ZXR1cm5zIHRydWUgaWZmIHRoZSBoYW5kbGUgaXMgYSB2YWxpZCBoYW5kbGUgb2JqZWN0IHRoYXQg
Y2FuIGJlIGNsb3NlZC4KKyAgYm9vbCBJc0Nsb3NlYWJsZSgpIGNvbnN0OworCisgIEhhbmRsZSBo
YW5kbGVfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQXV0b0hhbmRsZSk7
Cit9OworCisvLyBBbGxvd3MgYSBjb250cm9sbGVyIHRocmVhZCB0byBwYXVzZSBleGVjdXRpb24g
b2YgbmV3bHkgY3JlYXRlZAorLy8gdGhyZWFkcyB1bnRpbCBub3RpZmllZC4gIEluc3RhbmNlcyBv
ZiB0aGlzIGNsYXNzIG11c3QgYmUgY3JlYXRlZAorLy8gYW5kIGRlc3Ryb3llZCBpbiB0aGUgY29u
dHJvbGxlciB0aHJlYWQuCisvLworLy8gVGhpcyBjbGFzcyBpcyBvbmx5IGZvciB0ZXN0aW5nIEdv
b2dsZSBUZXN0J3Mgb3duIGNvbnN0cnVjdHMuIERvIG5vdAorLy8gdXNlIGl0IGluIHVzZXIgdGVz
dHMsIGVpdGhlciBkaXJlY3RseSBvciBpbmRpcmVjdGx5LgorY2xhc3MgR1RFU1RfQVBJXyBOb3Rp
ZmljYXRpb24geworIHB1YmxpYzoKKyAgTm90aWZpY2F0aW9uKCk7CisgIHZvaWQgTm90aWZ5KCk7
CisgIHZvaWQgV2FpdEZvck5vdGlmaWNhdGlvbigpOworCisgcHJpdmF0ZToKKyAgQXV0b0hhbmRs
ZSBldmVudF87CiAKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhOb3RpZmljYXRp
b24pOwogfTsKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19OT1RJRklDQVRJT05fCisKKy8vIE9uIE1p
bkdXLCB3ZSBjYW4gaGF2ZSBib3RoIEdURVNUX09TX1dJTkRPV1MgYW5kIEdURVNUX0hBU19QVEhS
RUFECisvLyBkZWZpbmVkLCBidXQgd2UgZG9uJ3Qgd2FudCB0byB1c2UgTWluR1cncyBwdGhyZWFk
cyBpbXBsZW1lbnRhdGlvbiwgd2hpY2gKKy8vIGhhcyBjb25mb3JtYW5jZSBwcm9ibGVtcyB3aXRo
IHNvbWUgdmVyc2lvbnMgb2YgdGhlIFBPU0lYIHN0YW5kYXJkLgorIyBpZiBHVEVTVF9IQVNfUFRI
UkVBRCAmJiAhR1RFU1RfT1NfV0lORE9XU19NSU5HVwogCiAvLyBBcyBhIEMtZnVuY3Rpb24sIFRo
cmVhZEZ1bmNXaXRoQ0xpbmthZ2UgY2Fubm90IGJlIHRlbXBsYXRlZCBpdHNlbGYuCiAvLyBDb25z
ZXF1ZW50bHksIGl0IGNhbm5vdCBzZWxlY3QgYSBjb3JyZWN0IGluc3RhbnRpYXRpb24gb2YgVGhy
ZWFkV2l0aFBhcmFtCkBAIC05NTEsMTAgKzE3MjgsOSBAQCBleHRlcm4gIkMiIGlubGluZSB2b2lk
KiBUaHJlYWRGdW5jV2l0aENMaW5rYWdlKHZvaWQqIHRocmVhZCkgewogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiBjbGFzcyBUaHJlYWRXaXRoUGFyYW0gOiBwdWJsaWMgVGhyZWFkV2l0aFBhcmFtQmFz
ZSB7CiAgcHVibGljOgotICB0eXBlZGVmIHZvaWQgKCpVc2VyVGhyZWFkRnVuYykoVCk7CisgIHR5
cGVkZWYgdm9pZCBVc2VyVGhyZWFkRnVuYyhUKTsKIAotICBUaHJlYWRXaXRoUGFyYW0oCi0gICAg
ICBVc2VyVGhyZWFkRnVuYyBmdW5jLCBUIHBhcmFtLCBOb3RpZmljYXRpb24qIHRocmVhZF9jYW5f
c3RhcnQpCisgIFRocmVhZFdpdGhQYXJhbShVc2VyVGhyZWFkRnVuYyogZnVuYywgVCBwYXJhbSwg
Tm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KQogICAgICAgOiBmdW5jXyhmdW5jKSwKICAg
ICAgICAgcGFyYW1fKHBhcmFtKSwKICAgICAgICAgdGhyZWFkX2Nhbl9zdGFydF8odGhyZWFkX2Nh
bl9zdGFydCksCkBAIC05ODEsNyArMTc1Nyw3IEBAIGNsYXNzIFRocmVhZFdpdGhQYXJhbSA6IHB1
YmxpYyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKICAgfQogCiAgcHJpdmF0ZToKLSAgY29uc3QgVXNl
clRocmVhZEZ1bmMgZnVuY187ICAvLyBVc2VyLXN1cHBsaWVkIHRocmVhZCBmdW5jdGlvbi4KKyAg
VXNlclRocmVhZEZ1bmMqIGNvbnN0IGZ1bmNfOyAgLy8gVXNlci1zdXBwbGllZCB0aHJlYWQgZnVu
Y3Rpb24uCiAgIGNvbnN0IFQgcGFyYW1fOyAgLy8gVXNlci1zdXBwbGllZCBwYXJhbWV0ZXIgdG8g
dGhlIHRocmVhZCBmdW5jdGlvbi4KICAgLy8gV2hlbiBub24tTlVMTCwgdXNlZCB0byBibG9jayBl
eGVjdXRpb24gdW50aWwgdGhlIGNvbnRyb2xsZXIgdGhyZWFkCiAgIC8vIG5vdGlmaWVzLgpAQCAt
OTkxLDUxICsxNzY3LDMxNiBAQCBjbGFzcyBUaHJlYWRXaXRoUGFyYW0gOiBwdWJsaWMgVGhyZWFk
V2l0aFBhcmFtQmFzZSB7CiAKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJl
YWRXaXRoUGFyYW0pOwogfTsKKyMgZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTICYmIEdURVNU
X0hBU19QVEhSRUFEIHx8CisgICAgICAgICAvLyBHVEVTVF9IQVNfTVVURVhfQU5EX1RIUkVBRF9M
T0NBTF8KIAotLy8gZ3Rlc3QtcG9ydC5oIGd1YXJhbnRlZXMgdG8gI2luY2x1ZGUgPHB0aHJlYWQu
aD4gd2hlbiBHVEVTVF9IQVNfUFRIUkVBRCBpcwotLy8gdHJ1ZS4KLSNpbmNsdWRlIDxwdGhyZWFk
Lmg+CisjIGlmIEdURVNUX0hBU19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMXworLy8gTXV0ZXggYW5k
IFRocmVhZExvY2FsIGhhdmUgYWxyZWFkeSBiZWVuIGltcG9ydGVkIGludG8gdGhlIG5hbWVzcGFj
ZS4KKy8vIE5vdGhpbmcgdG8gZG8gaGVyZS4KIAotLy8gTXV0ZXhCYXNlIGFuZCBNdXRleCBpbXBs
ZW1lbnQgbXV0ZXggb24gcHRocmVhZHMtYmFzZWQgcGxhdGZvcm1zLiBUaGV5Ci0vLyBhcmUgdXNl
ZCBpbiBjb25qdW5jdGlvbiB3aXRoIGNsYXNzIE11dGV4TG9jazoKKyMgZWxpZiBHVEVTVF9PU19X
SU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JU
CisKKy8vIE11dGV4IGltcGxlbWVudHMgbXV0ZXggb24gV2luZG93cyBwbGF0Zm9ybXMuICBJdCBp
cyB1c2VkIGluIGNvbmp1bmN0aW9uCisvLyB3aXRoIGNsYXNzIE11dGV4TG9jazoKIC8vCiAvLyAg
IE11dGV4IG11dGV4OwogLy8gICAuLi4KLS8vICAgTXV0ZXhMb2NrIGxvY2soJm11dGV4KTsgIC8v
IEFjcXVpcmVzIHRoZSBtdXRleCBhbmQgcmVsZWFzZXMgaXQgYXQgdGhlIGVuZAotLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gb2YgdGhlIGN1cnJlbnQgc2NvcGUuCi0vLwotLy8gTXV0
ZXhCYXNlIGltcGxlbWVudHMgYmVoYXZpb3IgZm9yIGJvdGggc3RhdGljYWxseSBhbmQgZHluYW1p
Y2FsbHkKLS8vIGFsbG9jYXRlZCBtdXRleGVzLiAgRG8gbm90IHVzZSBNdXRleEJhc2UgZGlyZWN0
bHkuICBJbnN0ZWFkLCB3cml0ZQotLy8gdGhlIGZvbGxvd2luZyB0byBkZWZpbmUgYSBzdGF0aWMg
bXV0ZXg6CisvLyAgIE11dGV4TG9jayBsb2NrKCZtdXRleCk7ICAvLyBBY3F1aXJlcyB0aGUgbXV0
ZXggYW5kIHJlbGVhc2VzIGl0IGF0IHRoZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZW5kIG9mIHRoZSBjdXJyZW50IHNjb3BlLgogLy8KKy8vIEEgc3RhdGljIE11dGV4ICptdXN0
KiBiZSBkZWZpbmVkIG9yIGRlY2xhcmVkIHVzaW5nIG9uZSBvZiB0aGUgZm9sbG93aW5nCisvLyBt
YWNyb3M6CiAvLyAgIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKGdfc29tZV9tdXRleCk7Cisv
LyAgIEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhnX3NvbWVfbXV0ZXgpOworLy8KKy8vIChB
IG5vbi1zdGF0aWMgTXV0ZXggaXMgZGVmaW5lZC9kZWNsYXJlZCBpbiB0aGUgdXN1YWwgd2F5KS4K
K2NsYXNzIEdURVNUX0FQSV8gTXV0ZXggeworIHB1YmxpYzoKKyAgZW51bSBNdXRleFR5cGUgeyBr
U3RhdGljID0gMCwga0R5bmFtaWMgPSAxIH07CisgIC8vIFdlIHJlbHkgb24ga1N0YXRpY011dGV4
IGJlaW5nIDAgYXMgaXQgaXMgdG8gd2hhdCB0aGUgbGlua2VyIGluaXRpYWxpemVzCisgIC8vIHR5
cGVfIGluIHN0YXRpYyBtdXRleGVzLiAgY3JpdGljYWxfc2VjdGlvbl8gd2lsbCBiZSBpbml0aWFs
aXplZCBsYXppbHkKKyAgLy8gaW4gVGhyZWFkU2FmZUxhenlJbml0KCkuCisgIGVudW0gU3RhdGlj
Q29uc3RydWN0b3JTZWxlY3RvciB7IGtTdGF0aWNNdXRleCA9IDAgfTsKKworICAvLyBUaGlzIGNv
bnN0cnVjdG9yIGludGVudGlvbmFsbHkgZG9lcyBub3RoaW5nLiAgSXQgcmVsaWVzIG9uIHR5cGVf
IGJlaW5nCisgIC8vIHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQgdG8gMCAoZWZmZWN0aXZlbHkgc2V0
dGluZyBpdCB0byBrU3RhdGljKSBhbmQgb24KKyAgLy8gVGhyZWFkU2FmZUxhenlJbml0KCkgdG8g
bGF6aWx5IGluaXRpYWxpemUgdGhlIHJlc3Qgb2YgdGhlIG1lbWJlcnMuCisgIGV4cGxpY2l0IE11
dGV4KFN0YXRpY0NvbnN0cnVjdG9yU2VsZWN0b3IgLypkdW1teSovKSB7fQorCisgIE11dGV4KCk7
CisgIH5NdXRleCgpOworCisgIHZvaWQgTG9jaygpOworCisgIHZvaWQgVW5sb2NrKCk7CisKKyAg
Ly8gRG9lcyBub3RoaW5nIGlmIHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUgbXV0ZXguIE90
aGVyd2lzZSwgY3Jhc2hlcworICAvLyB3aXRoIGhpZ2ggcHJvYmFiaWxpdHkuCisgIHZvaWQgQXNz
ZXJ0SGVsZCgpOworCisgcHJpdmF0ZToKKyAgLy8gSW5pdGlhbGl6ZXMgb3duZXJfdGhyZWFkX2lk
XyBhbmQgY3JpdGljYWxfc2VjdGlvbl8gaW4gc3RhdGljIG11dGV4ZXMuCisgIHZvaWQgVGhyZWFk
U2FmZUxhenlJbml0KCk7CisKKyAgLy8gUGVyIGh0dHBzOi8vYmxvZ3MubXNkbi5taWNyb3NvZnQu
Y29tL29sZG5ld3RoaW5nLzIwMDQwMjIzLTAwLz9wPTQwNTAzLAorICAvLyB3ZSBhc3N1bWUgdGhh
dCAwIGlzIGFuIGludmFsaWQgdmFsdWUgZm9yIHRocmVhZCBJRHMuCisgIHVuc2lnbmVkIGludCBv
d25lcl90aHJlYWRfaWRfOworCisgIC8vIEZvciBzdGF0aWMgbXV0ZXhlcywgd2UgcmVseSBvbiB0
aGVzZSBtZW1iZXJzIGJlaW5nIGluaXRpYWxpemVkIHRvIHplcm9zCisgIC8vIGJ5IHRoZSBsaW5r
ZXIuCisgIE11dGV4VHlwZSB0eXBlXzsKKyAgbG9uZyBjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhh
c2VfOyAgLy8gTk9MSU5UCisgIEdURVNUX0NSSVRJQ0FMX1NFQ1RJT04qIGNyaXRpY2FsX3NlY3Rp
b25fOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTXV0ZXgpOworfTsKKwor
IyBkZWZpbmUgR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVURVhfKG11dGV4KSBcCisgICAgZXh0ZXJu
IDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4IG11dGV4CisKKyMgZGVmaW5lIEdURVNUX0RFRklO
RV9TVEFUSUNfTVVURVhfKG11dGV4KSBcCisgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXgg
bXV0ZXgoOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXg6OmtTdGF0aWNNdXRleCkKKworLy8gV2Ug
Y2Fubm90IG5hbWUgdGhpcyBjbGFzcyBNdXRleExvY2sgYmVjYXVzZSB0aGUgY3RvciBkZWNsYXJh
dGlvbiB3b3VsZAorLy8gY29uZmxpY3Qgd2l0aCBhIG1hY3JvIG5hbWVkIE11dGV4TG9jaywgd2hp
Y2ggaXMgZGVmaW5lZCBvbiBzb21lCisvLyBwbGF0Zm9ybXMuIFRoYXQgbWFjcm8gaXMgdXNlZCBh
cyBhIGRlZmVuc2l2ZSBtZWFzdXJlIHRvIHByZXZlbnQgYWdhaW5zdAorLy8gaW5hZHZlcnRlbnQg
bWlzdXNlcyBvZiBNdXRleExvY2sgbGlrZSAiTXV0ZXhMb2NrKCZtdSkiIHJhdGhlciB0aGFuCisv
LyAiTXV0ZXhMb2NrIGwoJm11KSIuICBIZW5jZSB0aGUgdHlwZWRlZiB0cmljayBiZWxvdy4KK2Ns
YXNzIEdUZXN0TXV0ZXhMb2NrIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEdUZXN0TXV0ZXhMb2Nr
KE11dGV4KiBtdXRleCkKKyAgICAgIDogbXV0ZXhfKG11dGV4KSB7IG11dGV4Xy0+TG9jaygpOyB9
CisKKyAgfkdUZXN0TXV0ZXhMb2NrKCkgeyBtdXRleF8tPlVubG9jaygpOyB9CisKKyBwcml2YXRl
OgorICBNdXRleCogY29uc3QgbXV0ZXhfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oR1Rlc3RNdXRleExvY2spOworfTsKKwordHlwZWRlZiBHVGVzdE11dGV4TG9jayBNdXRl
eExvY2s7CisKKy8vIEJhc2UgY2xhc3MgZm9yIFZhbHVlSG9sZGVyPFQ+LiAgQWxsb3dzIGEgY2Fs
bGVyIHRvIGhvbGQgYW5kIGRlbGV0ZSBhIHZhbHVlCisvLyB3aXRob3V0IGtub3dpbmcgaXRzIHR5
cGUuCitjbGFzcyBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSB7CisgcHVibGljOgorICB2aXJ0
dWFsIH5UaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSgpIHt9Cit9OworCisvLyBQcm92aWRlcyBh
IHdheSBmb3IgYSB0aHJlYWQgdG8gc2VuZCBub3RpZmljYXRpb25zIHRvIGEgVGhyZWFkTG9jYWwK
Ky8vIHJlZ2FyZGxlc3Mgb2YgaXRzIHBhcmFtZXRlciB0eXBlLgorY2xhc3MgVGhyZWFkTG9jYWxC
YXNlIHsKKyBwdWJsaWM6CisgIC8vIENyZWF0ZXMgYSBuZXcgVmFsdWVIb2xkZXI8VD4gb2JqZWN0
IGhvbGRpbmcgYSBkZWZhdWx0IHZhbHVlIHBhc3NlZCB0bworICAvLyB0aGlzIFRocmVhZExvY2Fs
PFQ+J3MgY29uc3RydWN0b3IgYW5kIHJldHVybnMgaXQuICBJdCBpcyB0aGUgY2FsbGVyJ3MKKyAg
Ly8gcmVzcG9uc2liaWxpdHkgbm90IHRvIGNhbGwgdGhpcyB3aGVuIHRoZSBUaHJlYWRMb2NhbDxU
PiBpbnN0YW5jZSBhbHJlYWR5CisgIC8vIGhhcyBhIHZhbHVlIG9uIHRoZSBjdXJyZW50IHRocmVh
ZC4KKyAgdmlydHVhbCBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogTmV3VmFsdWVGb3JDdXJy
ZW50VGhyZWFkKCkgY29uc3QgPSAwOworCisgcHJvdGVjdGVkOgorICBUaHJlYWRMb2NhbEJhc2Uo
KSB7fQorICB2aXJ0dWFsIH5UaHJlYWRMb2NhbEJhc2UoKSB7fQorCisgcHJpdmF0ZToKKyAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJlYWRMb2NhbEJhc2UpOworfTsKKworLy8g
TWFwcyBhIHRocmVhZCB0byBhIHNldCBvZiBUaHJlYWRMb2NhbHMgdGhhdCBoYXZlIHZhbHVlcyBp
bnN0YW50aWF0ZWQgb24gdGhhdAorLy8gdGhyZWFkIGFuZCBub3RpZmllcyB0aGVtIHdoZW4gdGhl
IHRocmVhZCBleGl0cy4gIEEgVGhyZWFkTG9jYWwgaW5zdGFuY2UgaXMKKy8vIGV4cGVjdGVkIHRv
IHBlcnNpc3QgdW50aWwgYWxsIHRocmVhZHMgaXQgaGFzIHZhbHVlcyBvbiBoYXZlIHRlcm1pbmF0
ZWQuCitjbGFzcyBHVEVTVF9BUElfIFRocmVhZExvY2FsUmVnaXN0cnkgeworIHB1YmxpYzoKKyAg
Ly8gUmVnaXN0ZXJzIHRocmVhZF9sb2NhbF9pbnN0YW5jZSBhcyBoYXZpbmcgdmFsdWUgb24gdGhl
IGN1cnJlbnQgdGhyZWFkLgorICAvLyBSZXR1cm5zIGEgdmFsdWUgdGhhdCBjYW4gYmUgdXNlZCB0
byBpZGVudGlmeSB0aGUgdGhyZWFkIGZyb20gb3RoZXIgdGhyZWFkcy4KKyAgc3RhdGljIFRocmVh
ZExvY2FsVmFsdWVIb2xkZXJCYXNlKiBHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCgKKyAgICAgIGNv
bnN0IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKKworICAvLyBJbnZv
a2VkIHdoZW4gYSBUaHJlYWRMb2NhbCBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuCisgIHN0YXRpYyB2
b2lkIE9uVGhyZWFkTG9jYWxEZXN0cm95ZWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2Uq
IHRocmVhZF9sb2NhbF9pbnN0YW5jZSk7Cit9OworCitjbGFzcyBHVEVTVF9BUElfIFRocmVhZFdp
dGhQYXJhbUJhc2UgeworIHB1YmxpYzoKKyAgdm9pZCBKb2luKCk7CisKKyBwcm90ZWN0ZWQ6Cisg
IGNsYXNzIFJ1bm5hYmxlIHsKKyAgIHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5SdW5uYWJsZSgpIHt9
CisgICAgdmlydHVhbCB2b2lkIFJ1bigpID0gMDsKKyAgfTsKKworICBUaHJlYWRXaXRoUGFyYW1C
YXNlKFJ1bm5hYmxlICpydW5uYWJsZSwgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KTsK
KyAgdmlydHVhbCB+VGhyZWFkV2l0aFBhcmFtQmFzZSgpOworCisgcHJpdmF0ZToKKyAgQXV0b0hh
bmRsZSB0aHJlYWRfOworfTsKKworLy8gSGVscGVyIGNsYXNzIGZvciB0ZXN0aW5nIEdvb2dsZSBU
ZXN0J3MgbXVsdGktdGhyZWFkaW5nIGNvbnN0cnVjdHMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2NsYXNzIFRocmVhZFdpdGhQYXJhbSA6IHB1YmxpYyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKKyBw
dWJsaWM6CisgIHR5cGVkZWYgdm9pZCBVc2VyVGhyZWFkRnVuYyhUKTsKKworICBUaHJlYWRXaXRo
UGFyYW0oVXNlclRocmVhZEZ1bmMqIGZ1bmMsIFQgcGFyYW0sIE5vdGlmaWNhdGlvbiogdGhyZWFk
X2Nhbl9zdGFydCkKKyAgICAgIDogVGhyZWFkV2l0aFBhcmFtQmFzZShuZXcgUnVubmFibGVJbXBs
KGZ1bmMsIHBhcmFtKSwgdGhyZWFkX2Nhbl9zdGFydCkgeworICB9CisgIHZpcnR1YWwgflRocmVh
ZFdpdGhQYXJhbSgpIHt9CisKKyBwcml2YXRlOgorICBjbGFzcyBSdW5uYWJsZUltcGwgOiBwdWJs
aWMgUnVubmFibGUgeworICAgcHVibGljOgorICAgIFJ1bm5hYmxlSW1wbChVc2VyVGhyZWFkRnVu
YyogZnVuYywgVCBwYXJhbSkKKyAgICAgICAgOiBmdW5jXyhmdW5jKSwKKyAgICAgICAgICBwYXJh
bV8ocGFyYW0pIHsKKyAgICB9CisgICAgdmlydHVhbCB+UnVubmFibGVJbXBsKCkge30KKyAgICB2
aXJ0dWFsIHZvaWQgUnVuKCkgeworICAgICAgZnVuY18ocGFyYW1fKTsKKyAgICB9CisKKyAgIHBy
aXZhdGU6CisgICAgVXNlclRocmVhZEZ1bmMqIGNvbnN0IGZ1bmNfOworICAgIGNvbnN0IFQgcGFy
YW1fOworCisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhSdW5uYWJsZUltcGwp
OworICB9OworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkV2l0aFBh
cmFtKTsKK307CisKKy8vIEltcGxlbWVudHMgdGhyZWFkLWxvY2FsIHN0b3JhZ2Ugb24gV2luZG93
cyBzeXN0ZW1zLgogLy8KLS8vIFlvdSBjYW4gZm9yd2FyZCBkZWNsYXJlIGEgc3RhdGljIG11dGV4
IGxpa2UgdGhpczoKKy8vICAgLy8gVGhyZWFkIDEKKy8vICAgVGhyZWFkTG9jYWw8aW50PiB0bCgx
MDApOyAgLy8gMTAwIGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBlYWNoIHRocmVhZC4KIC8vCi0v
LyAgIEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhnX3NvbWVfbXV0ZXgpOworLy8gICAvLyBU
aHJlYWQgMgorLy8gICB0bC5zZXQoMTUwKTsgIC8vIENoYW5nZXMgdGhlIHZhbHVlIGZvciB0aHJl
YWQgMiBvbmx5LgorLy8gICBFWFBFQ1RfRVEoMTUwLCB0bC5nZXQoKSk7CiAvLwotLy8gVG8gY3Jl
YXRlIGEgZHluYW1pYyBtdXRleCwganVzdCBkZWZpbmUgYW4gb2JqZWN0IG9mIHR5cGUgTXV0ZXgu
CisvLyAgIC8vIFRocmVhZCAxCisvLyAgIEVYUEVDVF9FUSgxMDAsIHRsLmdldCgpKTsgIC8vIElu
IHRocmVhZCAxLCB0bCBoYXMgdGhlIG9yaWdpbmFsIHZhbHVlLgorLy8gICB0bC5zZXQoMjAwKTsK
Ky8vICAgRVhQRUNUX0VRKDIwMCwgdGwuZ2V0KCkpOworLy8KKy8vIFRoZSB0ZW1wbGF0ZSB0eXBl
IGFyZ3VtZW50IFQgbXVzdCBoYXZlIGEgcHVibGljIGNvcHkgY29uc3RydWN0b3IuCisvLyBJbiBh
ZGRpdGlvbiwgdGhlIGRlZmF1bHQgVGhyZWFkTG9jYWwgY29uc3RydWN0b3IgcmVxdWlyZXMgVCB0
byBoYXZlCisvLyBhIHB1YmxpYyBkZWZhdWx0IGNvbnN0cnVjdG9yLgorLy8KKy8vIFRoZSB1c2Vy
cyBvZiBhIFRoZWFkTG9jYWwgaW5zdGFuY2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCBhbGwgYnV0
IG9uZQorLy8gdGhyZWFkcyAoaW5jbHVkaW5nIHRoZSBtYWluIG9uZSkgdXNpbmcgdGhhdCBpbnN0
YW5jZSBoYXZlIGV4aXRlZCBiZWZvcmUKKy8vIGRlc3Ryb3lpbmcgaXQuIE90aGVyd2lzZSwgdGhl
IHBlci10aHJlYWQgb2JqZWN0cyBtYW5hZ2VkIGZvciB0aGVtIGJ5IHRoZQorLy8gVGhyZWFkTG9j
YWwgaW5zdGFuY2UgYXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlIGRlc3Ryb3llZCBvbiBhbGwgcGxh
dGZvcm1zLgorLy8KKy8vIEdvb2dsZSBUZXN0IG9ubHkgdXNlcyBnbG9iYWwgVGhyZWFkTG9jYWwg
b2JqZWN0cy4gIFRoYXQgbWVhbnMgdGhleQorLy8gd2lsbCBkaWUgYWZ0ZXIgbWFpbigpIGhhcyBy
ZXR1cm5lZC4gIFRoZXJlZm9yZSwgbm8gcGVyLXRocmVhZAorLy8gb2JqZWN0IG1hbmFnZWQgYnkg
R29vZ2xlIFRlc3Qgd2lsbCBiZSBsZWFrZWQgYXMgbG9uZyBhcyBhbGwgdGhyZWFkcworLy8gdXNp
bmcgR29vZ2xlIFRlc3QgaGF2ZSBleGl0ZWQgd2hlbiBtYWluKCkgcmV0dXJucy4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorY2xhc3MgVGhyZWFkTG9jYWwgOiBwdWJsaWMgVGhyZWFkTG9jYWxCYXNl
IHsKKyBwdWJsaWM6CisgIFRocmVhZExvY2FsKCkgOiBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBEZWZh
dWx0VmFsdWVIb2xkZXJGYWN0b3J5KCkpIHt9CisgIGV4cGxpY2l0IFRocmVhZExvY2FsKGNvbnN0
IFQmIHZhbHVlKQorICAgICAgOiBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBJbnN0YW5jZVZhbHVlSG9s
ZGVyRmFjdG9yeSh2YWx1ZSkpIHt9CisKKyAgflRocmVhZExvY2FsKCkgeyBUaHJlYWRMb2NhbFJl
Z2lzdHJ5OjpPblRocmVhZExvY2FsRGVzdHJveWVkKHRoaXMpOyB9CisKKyAgVCogcG9pbnRlcigp
IHsgcmV0dXJuIEdldE9yQ3JlYXRlVmFsdWUoKTsgfQorICBjb25zdCBUKiBwb2ludGVyKCkgY29u
c3QgeyByZXR1cm4gR2V0T3JDcmVhdGVWYWx1ZSgpOyB9CisgIGNvbnN0IFQmIGdldCgpIGNvbnN0
IHsgcmV0dXJuICpwb2ludGVyKCk7IH0KKyAgdm9pZCBzZXQoY29uc3QgVCYgdmFsdWUpIHsgKnBv
aW50ZXIoKSA9IHZhbHVlOyB9CisKKyBwcml2YXRlOgorICAvLyBIb2xkcyBhIHZhbHVlIG9mIFQu
ICBDYW4gYmUgZGVsZXRlZCB2aWEgaXRzIGJhc2UgY2xhc3Mgd2l0aG91dCB0aGUgY2FsbGVyCisg
IC8vIGtub3dpbmcgdGhlIHR5cGUgb2YgVC4KKyAgY2xhc3MgVmFsdWVIb2xkZXIgOiBwdWJsaWMg
VGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UgeworICAgcHVibGljOgorICAgIFZhbHVlSG9sZGVy
KCkgOiB2YWx1ZV8oKSB7fQorICAgIGV4cGxpY2l0IFZhbHVlSG9sZGVyKGNvbnN0IFQmIHZhbHVl
KSA6IHZhbHVlXyh2YWx1ZSkge30KKworICAgIFQqIHBvaW50ZXIoKSB7IHJldHVybiAmdmFsdWVf
OyB9CisKKyAgIHByaXZhdGU6CisgICAgVCB2YWx1ZV87CisgICAgR1RFU1RfRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOXyhWYWx1ZUhvbGRlcik7CisgIH07CisKKworICBUKiBHZXRPckNyZWF0ZVZh
bHVlKCkgY29uc3QgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxWYWx1ZUhvbGRlcio+KAorICAg
ICAgICBUaHJlYWRMb2NhbFJlZ2lzdHJ5OjpHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCh0aGlzKSkt
PnBvaW50ZXIoKTsKKyAgfQorCisgIHZpcnR1YWwgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2Uq
IE5ld1ZhbHVlRm9yQ3VycmVudFRocmVhZCgpIGNvbnN0IHsKKyAgICByZXR1cm4gZGVmYXVsdF9m
YWN0b3J5Xy0+TWFrZU5ld0hvbGRlcigpOworICB9CisKKyAgY2xhc3MgVmFsdWVIb2xkZXJGYWN0
b3J5IHsKKyAgIHB1YmxpYzoKKyAgICBWYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1
YWwgflZhbHVlSG9sZGVyRmFjdG9yeSgpIHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRlciogTWFr
ZU5ld0hvbGRlcigpIGNvbnN0ID0gMDsKKworICAgcHJpdmF0ZToKKyAgICBHVEVTVF9ESVNBTExP
V19DT1BZX0FORF9BU1NJR05fKFZhbHVlSG9sZGVyRmFjdG9yeSk7CisgIH07CisKKyAgY2xhc3Mg
RGVmYXVsdFZhbHVlSG9sZGVyRmFjdG9yeSA6IHB1YmxpYyBWYWx1ZUhvbGRlckZhY3Rvcnkgewor
ICAgcHVibGljOgorICAgIERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1
YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCB7IHJldHVybiBuZXcgVmFsdWVI
b2xkZXIoKTsgfQorCisgICBwcml2YXRlOgorICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oRGVmYXVsdFZhbHVlSG9sZGVyRmFjdG9yeSk7CisgIH07CisKKyAgY2xhc3MgSW5zdGFu
Y2VWYWx1ZUhvbGRlckZhY3RvcnkgOiBwdWJsaWMgVmFsdWVIb2xkZXJGYWN0b3J5IHsKKyAgIHB1
YmxpYzoKKyAgICBleHBsaWNpdCBJbnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeShjb25zdCBUJiB2
YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRlciogTWFrZU5l
d0hvbGRlcigpIGNvbnN0IHsKKyAgICAgIHJldHVybiBuZXcgVmFsdWVIb2xkZXIodmFsdWVfKTsK
KyAgICB9CisKKyAgIHByaXZhdGU6CisgICAgY29uc3QgVCB2YWx1ZV87ICAvLyBUaGUgdmFsdWUg
Zm9yIGVhY2ggdGhyZWFkLgorCisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhJ
bnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeSk7CisgIH07CisKKyAgc2NvcGVkX3B0cjxWYWx1ZUhv
bGRlckZhY3Rvcnk+IGRlZmF1bHRfZmFjdG9yeV87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOXyhUaHJlYWRMb2NhbCk7Cit9OworCisjIGVsaWYgR1RFU1RfSEFTX1BUSFJFQUQK
KworLy8gTXV0ZXhCYXNlIGFuZCBNdXRleCBpbXBsZW1lbnQgbXV0ZXggb24gcHRocmVhZHMtYmFz
ZWQgcGxhdGZvcm1zLgogY2xhc3MgTXV0ZXhCYXNlIHsKICBwdWJsaWM6CiAgIC8vIEFjcXVpcmVz
IHRoaXMgbXV0ZXguCiAgIHZvaWQgTG9jaygpIHsKICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUND
RVNTXyhwdGhyZWFkX211dGV4X2xvY2soJm11dGV4XykpOwogICAgIG93bmVyXyA9IHB0aHJlYWRf
c2VsZigpOworICAgIGhhc19vd25lcl8gPSB0cnVlOwogICB9CiAKICAgLy8gUmVsZWFzZXMgdGhp
cyBtdXRleC4KICAgdm9pZCBVbmxvY2soKSB7Ci0gICAgLy8gV2UgZG9uJ3QgcHJvdGVjdCB3cml0
aW5nIHRvIG93bmVyXyBoZXJlLCBhcyBpdCdzIHRoZSBjYWxsZXIncwotICAgIC8vIHJlc3BvbnNp
YmlsaXR5IHRvIGVuc3VyZSB0aGF0IHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUKKyAgICAv
LyBTaW5jZSB0aGUgbG9jayBpcyBiZWluZyByZWxlYXNlZCB0aGUgb3duZXJfIGZpZWxkIHNob3Vs
ZCBubyBsb25nZXIgYmUKKyAgICAvLyBjb25zaWRlcmVkIHZhbGlkLiBXZSBkb24ndCBwcm90ZWN0
IHdyaXRpbmcgdG8gaGFzX293bmVyXyBoZXJlLCBhcyBpdCdzCisgICAgLy8gdGhlIGNhbGxlcidz
IHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGF0IHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0
aGUKICAgICAvLyBtdXRleCB3aGVuIHRoaXMgaXMgY2FsbGVkLgotICAgIG93bmVyXyA9IDA7Cisg
ICAgaGFzX293bmVyXyA9IGZhbHNlOwogICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0
aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleF8pKTsKICAgfQogCiAgIC8vIERvZXMgbm90aGluZyBp
ZiB0aGUgY3VycmVudCB0aHJlYWQgaG9sZHMgdGhlIG11dGV4LiBPdGhlcndpc2UsIGNyYXNoZXMK
ICAgLy8gd2l0aCBoaWdoIHByb2JhYmlsaXR5LgogICB2b2lkIEFzc2VydEhlbGQoKSBjb25zdCB7
Ci0gICAgR1RFU1RfQ0hFQ0tfKG93bmVyXyA9PSBwdGhyZWFkX3NlbGYoKSkKKyAgICBHVEVTVF9D
SEVDS18oaGFzX293bmVyXyAmJiBwdGhyZWFkX2VxdWFsKG93bmVyXywgcHRocmVhZF9zZWxmKCkp
KQogICAgICAgICA8PCAiVGhlIGN1cnJlbnQgdGhyZWFkIGlzIG5vdCBob2xkaW5nIHRoZSBtdXRl
eCBAIiA8PCB0aGlzOwogICB9CiAKQEAgLTEwNDYsMTYgKzIwODcsMjggQEAgY2xhc3MgTXV0ZXhC
YXNlIHsKICAgLy8gaGF2ZSB0byBiZSBwdWJsaWMuCiAgcHVibGljOgogICBwdGhyZWFkX211dGV4
X3QgbXV0ZXhfOyAgLy8gVGhlIHVuZGVybHlpbmcgcHRocmVhZCBtdXRleC4KLSAgcHRocmVhZF90
IG93bmVyXzsgIC8vIFRoZSB0aHJlYWQgaG9sZGluZyB0aGUgbXV0ZXg7IDAgbWVhbnMgbm8gb25l
IGhvbGRzIGl0LgorICAvLyBoYXNfb3duZXJfIGluZGljYXRlcyB3aGV0aGVyIHRoZSBvd25lcl8g
ZmllbGQgYmVsb3cgY29udGFpbnMgYSB2YWxpZCB0aHJlYWQKKyAgLy8gSUQgYW5kIGlzIHRoZXJl
Zm9yZSBzYWZlIHRvIGluc3BlY3QgKGUuZy4sIHRvIHVzZSBpbiBwdGhyZWFkX2VxdWFsKCkpLiBB
bGwKKyAgLy8gYWNjZXNzZXMgdG8gdGhlIG93bmVyXyBmaWVsZCBzaG91bGQgYmUgcHJvdGVjdGVk
IGJ5IGEgY2hlY2sgb2YgdGhpcyBmaWVsZC4KKyAgLy8gQW4gYWx0ZXJuYXRpdmUgbWlnaHQgYmUg
dG8gbWVtc2V0KCkgb3duZXJfIHRvIGFsbCB6ZXJvcywgYnV0IHRoZXJlJ3Mgbm8KKyAgLy8gZ3Vh
cmFudGVlIHRoYXQgYSB6ZXJvJ2QgcHRocmVhZF90IGlzIG5lY2Vzc2FyaWx5IGludmFsaWQgb3Ig
ZXZlbiBkaWZmZXJlbnQKKyAgLy8gZnJvbSBwdGhyZWFkX3NlbGYoKS4KKyAgYm9vbCBoYXNfb3du
ZXJfOworICBwdGhyZWFkX3Qgb3duZXJfOyAgLy8gVGhlIHRocmVhZCBob2xkaW5nIHRoZSBtdXRl
eC4KIH07CiAKIC8vIEZvcndhcmQtZGVjbGFyZXMgYSBzdGF0aWMgbXV0ZXguCi0jZGVmaW5lIEdU
RVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRleCkgXAotICAgIGV4dGVybiA6OnRlc3Rpbmc6
OmludGVybmFsOjpNdXRleEJhc2UgbXV0ZXgKKyMgIGRlZmluZSBHVEVTVF9ERUNMQVJFX1NUQVRJ
Q19NVVRFWF8obXV0ZXgpIFwKKyAgICAgZXh0ZXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4
QmFzZSBtdXRleAogCiAvLyBEZWZpbmVzIGFuZCBzdGF0aWNhbGx5IChpLmUuIGF0IGxpbmsgdGlt
ZSkgaW5pdGlhbGl6ZXMgYSBzdGF0aWMgbXV0ZXguCisvLyBUaGUgaW5pdGlhbGl6YXRpb24gbGlz
dCBoZXJlIGRvZXMgbm90IGV4cGxpY2l0bHkgaW5pdGlhbGl6ZSBlYWNoIGZpZWxkLAorLy8gaW5z
dGVhZCByZWx5aW5nIG9uIGRlZmF1bHQgaW5pdGlhbGl6YXRpb24gZm9yIHRoZSB1bnNwZWNpZmll
ZCBmaWVsZHMuIEluCisvLyBwYXJ0aWN1bGFyLCB0aGUgb3duZXJfIGZpZWxkIChhIHB0aHJlYWRf
dCkgaXMgbm90IGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQuCisvLyBUaGlzIGFsbG93cyBpbml0aWFs
aXphdGlvbiB0byB3b3JrIHdoZXRoZXIgcHRocmVhZF90IGlzIGEgc2NhbGFyIG9yIHN0cnVjdC4K
Ky8vIFRoZSBmbGFnIC1XbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMgbXVzdCBub3QgYmUgc3Bl
Y2lmaWVkIGZvciB0aGlzIHRvIHdvcmsuCiAjZGVmaW5lIEdURVNUX0RFRklORV9TVEFUSUNfTVVU
RVhfKG11dGV4KSBcCi0gICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXhCYXNlIG11dGV4ID0g
eyBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSLCAwIH0KKyAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
TXV0ZXhCYXNlIG11dGV4ID0ge1BUSFJFQURfTVVURVhfSU5JVElBTElaRVIsIGZhbHNlLCAwfQog
CiAvLyBUaGUgTXV0ZXggY2xhc3MgY2FuIG9ubHkgYmUgdXNlZCBmb3IgbXV0ZXhlcyBjcmVhdGVk
IGF0IHJ1bnRpbWUuIEl0CiAvLyBzaGFyZXMgaXRzIEFQSSB3aXRoIE11dGV4QmFzZSBvdGhlcndp
c2UuCkBAIC0xMDYzLDcgKzIxMTYsNyBAQCBjbGFzcyBNdXRleCA6IHB1YmxpYyBNdXRleEJhc2Ug
ewogIHB1YmxpYzoKICAgTXV0ZXgoKSB7CiAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18o
cHRocmVhZF9tdXRleF9pbml0KCZtdXRleF8sIE5VTEwpKTsKLSAgICBvd25lcl8gPSAwOworICAg
IGhhc19vd25lcl8gPSBmYWxzZTsKICAgfQogICB+TXV0ZXgoKSB7CiAgICAgR1RFU1RfQ0hFQ0tf
UE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9kZXN0cm95KCZtdXRleF8pKTsKQEAgLTEwNzMs
OSArMjEyNiwxMSBAQCBjbGFzcyBNdXRleCA6IHB1YmxpYyBNdXRleEJhc2UgewogICBHVEVTVF9E
SVNBTExPV19DT1BZX0FORF9BU1NJR05fKE11dGV4KTsKIH07CiAKLS8vIFdlIGNhbm5vdCBuYW1l
IHRoaXMgY2xhc3MgTXV0ZXhMb2NrIGFzIHRoZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCisvLyBX
ZSBjYW5ub3QgbmFtZSB0aGlzIGNsYXNzIE11dGV4TG9jayBiZWNhdXNlIHRoZSBjdG9yIGRlY2xh
cmF0aW9uIHdvdWxkCiAvLyBjb25mbGljdCB3aXRoIGEgbWFjcm8gbmFtZWQgTXV0ZXhMb2NrLCB3
aGljaCBpcyBkZWZpbmVkIG9uIHNvbWUKLS8vIHBsYXRmb3Jtcy4gIEhlbmNlIHRoZSB0eXBlZGVm
IHRyaWNrIGJlbG93LgorLy8gcGxhdGZvcm1zLiBUaGF0IG1hY3JvIGlzIHVzZWQgYXMgYSBkZWZl
bnNpdmUgbWVhc3VyZSB0byBwcmV2ZW50IGFnYWluc3QKKy8vIGluYWR2ZXJ0ZW50IG1pc3VzZXMg
b2YgTXV0ZXhMb2NrIGxpa2UgIk11dGV4TG9jaygmbXUpIiByYXRoZXIgdGhhbgorLy8gIk11dGV4
TG9jayBsKCZtdSkiLiAgSGVuY2UgdGhlIHR5cGVkZWYgdHJpY2sgYmVsb3cuCiBjbGFzcyBHVGVz
dE11dGV4TG9jayB7CiAgcHVibGljOgogICBleHBsaWNpdCBHVGVzdE11dGV4TG9jayhNdXRleEJh
c2UqIG11dGV4KQpAQCAtMTEwOSw0MSArMjE2NCwxNCBAQCBleHRlcm4gIkMiIGlubGluZSB2b2lk
IERlbGV0ZVRocmVhZExvY2FsVmFsdWUodm9pZCogdmFsdWVfaG9sZGVyKSB7CiB9CiAKIC8vIElt
cGxlbWVudHMgdGhyZWFkLWxvY2FsIHN0b3JhZ2Ugb24gcHRocmVhZHMtYmFzZWQgc3lzdGVtcy4K
LS8vCi0vLyAgIC8vIFRocmVhZCAxCi0vLyAgIFRocmVhZExvY2FsPGludD4gdGwoMTAwKTsgIC8v
IDEwMCBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgZWFjaCB0aHJlYWQuCi0vLwotLy8gICAvLyBU
aHJlYWQgMgotLy8gICB0bC5zZXQoMTUwKTsgIC8vIENoYW5nZXMgdGhlIHZhbHVlIGZvciB0aHJl
YWQgMiBvbmx5LgotLy8gICBFWFBFQ1RfRVEoMTUwLCB0bC5nZXQoKSk7Ci0vLwotLy8gICAvLyBU
aHJlYWQgMQotLy8gICBFWFBFQ1RfRVEoMTAwLCB0bC5nZXQoKSk7ICAvLyBJbiB0aHJlYWQgMSwg
dGwgaGFzIHRoZSBvcmlnaW5hbCB2YWx1ZS4KLS8vICAgdGwuc2V0KDIwMCk7Ci0vLyAgIEVYUEVD
VF9FUSgyMDAsIHRsLmdldCgpKTsKLS8vCi0vLyBUaGUgdGVtcGxhdGUgdHlwZSBhcmd1bWVudCBU
IG11c3QgaGF2ZSBhIHB1YmxpYyBjb3B5IGNvbnN0cnVjdG9yLgotLy8gSW4gYWRkaXRpb24sIHRo
ZSBkZWZhdWx0IFRocmVhZExvY2FsIGNvbnN0cnVjdG9yIHJlcXVpcmVzIFQgdG8gaGF2ZQotLy8g
YSBwdWJsaWMgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KLS8vCi0vLyBBbiBvYmplY3QgbWFuYWdlZCBm
b3IgYSB0aHJlYWQgYnkgYSBUaHJlYWRMb2NhbCBpbnN0YW5jZSBpcyBkZWxldGVkCi0vLyB3aGVu
IHRoZSB0aHJlYWQgZXhpdHMuICBPciwgaWYgdGhlIFRocmVhZExvY2FsIGluc3RhbmNlIGRpZXMg
aW4KLS8vIHRoYXQgdGhyZWFkLCB3aGVuIHRoZSBUaHJlYWRMb2NhbCBkaWVzLiAgSXQncyB0aGUg
dXNlcidzCi0vLyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCBhbGwgb3RoZXIgdGhyZWFk
cyB1c2luZyBhIFRocmVhZExvY2FsCi0vLyBoYXZlIGV4aXRlZCB3aGVuIGl0IGRpZXMsIG9yIHRo
ZSBwZXItdGhyZWFkIG9iamVjdHMgZm9yIHRob3NlCi0vLyB0aHJlYWRzIHdpbGwgbm90IGJlIGRl
bGV0ZWQuCi0vLwotLy8gR29vZ2xlIFRlc3Qgb25seSB1c2VzIGdsb2JhbCBUaHJlYWRMb2NhbCBv
YmplY3RzLiAgVGhhdCBtZWFucyB0aGV5Ci0vLyB3aWxsIGRpZSBhZnRlciBtYWluKCkgaGFzIHJl
dHVybmVkLiAgVGhlcmVmb3JlLCBubyBwZXItdGhyZWFkCi0vLyBvYmplY3QgbWFuYWdlZCBieSBH
b29nbGUgVGVzdCB3aWxsIGJlIGxlYWtlZCBhcyBsb25nIGFzIGFsbCB0aHJlYWRzCi0vLyB1c2lu
ZyBHb29nbGUgVGVzdCBoYXZlIGV4aXRlZCB3aGVuIG1haW4oKSByZXR1cm5zLgogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBUaHJlYWRMb2NhbCB7CitjbGFzcyBHVEVTVF9BUElfIFRocmVh
ZExvY2FsIHsKICBwdWJsaWM6Ci0gIFRocmVhZExvY2FsKCkgOiBrZXlfKENyZWF0ZUtleSgpKSwK
LSAgICAgICAgICAgICAgICAgIGRlZmF1bHRfKCkge30KLSAgZXhwbGljaXQgVGhyZWFkTG9jYWwo
Y29uc3QgVCYgdmFsdWUpIDoga2V5XyhDcmVhdGVLZXkoKSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfKHZhbHVlKSB7fQorICBUaHJlYWRMb2NhbCgp
CisgICAgICA6IGtleV8oQ3JlYXRlS2V5KCkpLCBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0
VmFsdWVIb2xkZXJGYWN0b3J5KCkpIHt9CisgIGV4cGxpY2l0IFRocmVhZExvY2FsKGNvbnN0IFQm
IHZhbHVlKQorICAgICAgOiBrZXlfKENyZWF0ZUtleSgpKSwKKyAgICAgICAgZGVmYXVsdF9mYWN0
b3J5XyhuZXcgSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkodmFsdWUpKSB7fQogCiAgIH5UaHJl
YWRMb2NhbCgpIHsKICAgICAvLyBEZXN0cm95cyB0aGUgbWFuYWdlZCBvYmplY3QgZm9yIHRoZSBj
dXJyZW50IHRocmVhZCwgaWYgYW55LgpAQCAtMTE2Myw2ICsyMTkxLDcgQEAgY2xhc3MgVGhyZWFk
TG9jYWwgewogICAvLyBIb2xkcyBhIHZhbHVlIG9mIHR5cGUgVC4KICAgY2xhc3MgVmFsdWVIb2xk
ZXIgOiBwdWJsaWMgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UgewogICAgcHVibGljOgorICAg
IFZhbHVlSG9sZGVyKCkgOiB2YWx1ZV8oKSB7fQogICAgIGV4cGxpY2l0IFZhbHVlSG9sZGVyKGNv
bnN0IFQmIHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KIAogICAgIFQqIHBvaW50ZXIoKSB7IHJl
dHVybiAmdmFsdWVfOyB9CkBAIC0xMTg4LDIyICsyMjE3LDU0IEBAIGNsYXNzIFRocmVhZExvY2Fs
IHsKICAgICAgIHJldHVybiBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGU8VmFsdWVIb2xkZXI+
KGhvbGRlciktPnBvaW50ZXIoKTsKICAgICB9CiAKLSAgICBWYWx1ZUhvbGRlciogY29uc3QgbmV3
X2hvbGRlciA9IG5ldyBWYWx1ZUhvbGRlcihkZWZhdWx0Xyk7CisgICAgVmFsdWVIb2xkZXIqIGNv
bnN0IG5ld19ob2xkZXIgPSBkZWZhdWx0X2ZhY3RvcnlfLT5NYWtlTmV3SG9sZGVyKCk7CiAgICAg
VGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UqIGNvbnN0IGhvbGRlcl9iYXNlID0gbmV3X2hvbGRl
cjsKICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX3NldHNwZWNpZmljKGtl
eV8sIGhvbGRlcl9iYXNlKSk7CiAgICAgcmV0dXJuIG5ld19ob2xkZXItPnBvaW50ZXIoKTsKICAg
fQogCisgIGNsYXNzIFZhbHVlSG9sZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAgVmFsdWVI
b2xkZXJGYWN0b3J5KCkge30KKyAgICB2aXJ0dWFsIH5WYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQor
ICAgIHZpcnR1YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCA9IDA7CisKKyAg
IHByaXZhdGU6CisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhWYWx1ZUhvbGRl
ckZhY3RvcnkpOworICB9OworCisgIGNsYXNzIERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkgOiBw
dWJsaWMgVmFsdWVIb2xkZXJGYWN0b3J5IHsKKyAgIHB1YmxpYzoKKyAgICBEZWZhdWx0VmFsdWVI
b2xkZXJGYWN0b3J5KCkge30KKyAgICB2aXJ0dWFsIFZhbHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVy
KCkgY29uc3QgeyByZXR1cm4gbmV3IFZhbHVlSG9sZGVyKCk7IH0KKworICAgcHJpdmF0ZToKKyAg
ICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKERlZmF1bHRWYWx1ZUhvbGRlckZhY3Rv
cnkpOworICB9OworCisgIGNsYXNzIEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5IDogcHVibGlj
IFZhbHVlSG9sZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAgZXhwbGljaXQgSW5zdGFuY2VW
YWx1ZUhvbGRlckZhY3RvcnkoY29uc3QgVCYgdmFsdWUpIDogdmFsdWVfKHZhbHVlKSB7fQorICAg
IHZpcnR1YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCB7CisgICAgICByZXR1
cm4gbmV3IFZhbHVlSG9sZGVyKHZhbHVlXyk7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGNv
bnN0IFQgdmFsdWVfOyAgLy8gVGhlIHZhbHVlIGZvciBlYWNoIHRocmVhZC4KKworICAgIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkpOwor
ICB9OworCiAgIC8vIEEga2V5IHB0aHJlYWRzIHVzZXMgZm9yIGxvb2tpbmcgdXAgcGVyLXRocmVh
ZCB2YWx1ZXMuCiAgIGNvbnN0IHB0aHJlYWRfa2V5X3Qga2V5XzsKLSAgY29uc3QgVCBkZWZhdWx0
XzsgIC8vIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBlYWNoIHRocmVhZC4KKyAgc2NvcGVkX3B0cjxW
YWx1ZUhvbGRlckZhY3Rvcnk+IGRlZmF1bHRfZmFjdG9yeV87CiAKICAgR1RFU1RfRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOXyhUaHJlYWRMb2NhbCk7CiB9OwogCi0jZGVmaW5lIEdURVNUX0lTX1RI
UkVBRFNBRkUgMQorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX01VVEVYX0FORF9USFJFQURfTE9DQUxf
CiAKLSNlbHNlICAvLyBHVEVTVF9IQVNfUFRIUkVBRAorI2Vsc2UgIC8vIEdURVNUX0lTX1RIUkVB
RFNBRkUKIAogLy8gQSBkdW1teSBpbXBsZW1lbnRhdGlvbiBvZiBzeW5jaHJvbml6YXRpb24gcHJp
bWl0aXZlcyAobXV0ZXgsIGxvY2ssCiAvLyBhbmQgdGhyZWFkLWxvY2FsIHZhcmlhYmxlKS4gIE5l
Y2Vzc2FyeSBmb3IgY29tcGlsaW5nIEdvb2dsZSBUZXN0IHdoZXJlCkBAIC0xMjEzLDE0ICsyMjc0
LDIxIEBAIGNsYXNzIFRocmVhZExvY2FsIHsKIGNsYXNzIE11dGV4IHsKICBwdWJsaWM6CiAgIE11
dGV4KCkge30KKyAgdm9pZCBMb2NrKCkge30KKyAgdm9pZCBVbmxvY2soKSB7fQogICB2b2lkIEFz
c2VydEhlbGQoKSBjb25zdCB7fQogfTsKIAotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19N
VVRFWF8obXV0ZXgpIFwKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRl
eCkgXAogICBleHRlcm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXggbXV0ZXgKIAotI2RlZmlu
ZSBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhtdXRleCkgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
TXV0ZXggbXV0ZXgKKyMgZGVmaW5lIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKG11dGV4KSA6
OnRlc3Rpbmc6OmludGVybmFsOjpNdXRleCBtdXRleAogCisvLyBXZSBjYW5ub3QgbmFtZSB0aGlz
IGNsYXNzIE11dGV4TG9jayBiZWNhdXNlIHRoZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCisvLyBj
b25mbGljdCB3aXRoIGEgbWFjcm8gbmFtZWQgTXV0ZXhMb2NrLCB3aGljaCBpcyBkZWZpbmVkIG9u
IHNvbWUKKy8vIHBsYXRmb3Jtcy4gVGhhdCBtYWNybyBpcyB1c2VkIGFzIGEgZGVmZW5zaXZlIG1l
YXN1cmUgdG8gcHJldmVudCBhZ2FpbnN0CisvLyBpbmFkdmVydGVudCBtaXN1c2VzIG9mIE11dGV4
TG9jayBsaWtlICJNdXRleExvY2soJm11KSIgcmF0aGVyIHRoYW4KKy8vICJNdXRleExvY2sgbCgm
bXUpIi4gIEhlbmNlIHRoZSB0eXBlZGVmIHRyaWNrIGJlbG93LgogY2xhc3MgR1Rlc3RNdXRleExv
Y2sgewogIHB1YmxpYzoKICAgZXhwbGljaXQgR1Rlc3RNdXRleExvY2soTXV0ZXgqKSB7fSAgLy8g
Tk9MSU5UCkBAIC0xMjI5LDcgKzIyOTcsNyBAQCBjbGFzcyBHVGVzdE11dGV4TG9jayB7CiB0eXBl
ZGVmIEdUZXN0TXV0ZXhMb2NrIE11dGV4TG9jazsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1j
bGFzcyBUaHJlYWRMb2NhbCB7CitjbGFzcyBHVEVTVF9BUElfIFRocmVhZExvY2FsIHsKICBwdWJs
aWM6CiAgIFRocmVhZExvY2FsKCkgOiB2YWx1ZV8oKSB7fQogICBleHBsaWNpdCBUaHJlYWRMb2Nh
bChjb25zdCBUJiB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9CkBAIC0xMjQxLDI4ICsyMzA5LDI1
IEBAIGNsYXNzIFRocmVhZExvY2FsIHsKICAgVCB2YWx1ZV87CiB9OwogCi0vLyBUaGUgYWJvdmUg
c3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaGF2ZSBkdW1teSBpbXBsZW1lbnRhdGlvbnMuCi0v
LyBUaGVyZWZvcmUgR29vZ2xlIFRlc3QgaXMgbm90IHRocmVhZC1zYWZlLgotI2RlZmluZSBHVEVT
VF9JU19USFJFQURTQUZFIDAKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVBRAorI2VuZGlm
ICAvLyBHVEVTVF9JU19USFJFQURTQUZFCiAKIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiB0aHJl
YWRzIHJ1bm5pbmcgaW4gdGhlIHByb2Nlc3MsIG9yIDAgdG8gaW5kaWNhdGUgdGhhdAogLy8gd2Ug
Y2Fubm90IGRldGVjdCBpdC4KIEdURVNUX0FQSV8gc2l6ZV90IEdldFRocmVhZENvdW50KCk7CiAK
IC8vIFBhc3Npbmcgbm9uLVBPRCBjbGFzc2VzIHRocm91Z2ggZWxsaXBzaXMgKC4uLikgY3Jhc2hl
cyB0aGUgQVJNCi0vLyBjb21waWxlciBhbmQgZ2VuZXJhdGVzIGEgd2FybmluZyBpbiBTdW4gU3R1
ZGlvLiAgVGhlIE5va2lhIFN5bWJpYW4KKy8vIGNvbXBpbGVyIGFuZCBnZW5lcmF0ZXMgYSB3YXJu
aW5nIGluIFN1biBTdHVkaW8gYmVmb3JlIDEydTQuIFRoZSBOb2tpYSBTeW1iaWFuCiAvLyBhbmQg
dGhlIElCTSBYTCBDL0MrKyBjb21waWxlciB0cnkgdG8gaW5zdGFudGlhdGUgYSBjb3B5IGNvbnN0
cnVjdG9yCiAvLyBmb3Igb2JqZWN0cyBwYXNzZWQgdGhyb3VnaCBlbGxpcHNpcyAoLi4uKSwgZmFp
bGluZyBmb3IgdW5jb3B5YWJsZQogLy8gb2JqZWN0cy4gIFdlIGRlZmluZSB0aGlzIHRvIGVuc3Vy
ZSB0aGF0IG9ubHkgUE9EIGlzIHBhc3NlZCB0aHJvdWdoCiAvLyBlbGxpcHNpcyBvbiB0aGVzZSBz
eXN0ZW1zLgotI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgfHwgZGVmaW5lZChfX0lCTUNQUF9f
KSB8fCBkZWZpbmVkKF9fU1VOUFJPX0NDKQorI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgfHwg
ZGVmaW5lZChfX0lCTUNQUF9fKSB8fCBcCisgICAgIChkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiBf
X1NVTlBST19DQyA8IDB4NTEzMCkKIC8vIFdlIGxvc2Ugc3VwcG9ydCBmb3IgTlVMTCBkZXRlY3Rp
b24gd2hlcmUgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZQogLy8gcGFzc2luZyBub24tUE9EIGNs
YXNzZXMgdGhyb3VnaCBlbGxpcHNpcyAoLi4uKS4KLSNkZWZpbmUgR1RFU1RfRUxMSVBTSVNfTkVF
RFNfUE9EXyAxCisjIGRlZmluZSBHVEVTVF9FTExJUFNJU19ORUVEU19QT0RfIDEKICNlbHNlCi0j
ZGVmaW5lIEdURVNUX0NBTl9DT01QQVJFX05VTEwgMQorIyBkZWZpbmUgR1RFU1RfQ0FOX0NPTVBB
UkVfTlVMTCAxCiAjZW5kaWYKIAogLy8gVGhlIE5va2lhIFN5bWJpYW4gYW5kIElCTSBYTCBDL0Mr
KyBjb21waWxlcnMgY2Fubm90IGRlY2lkZSBiZXR3ZWVuCkBAIC0xMjcwLDcgKzIzMzUsNyBAQCBH
VEVTVF9BUElfIHNpemVfdCBHZXRUaHJlYWRDb3VudCgpOwogLy8gX2Nhbl8gZGVjaWRlIGJldHdl
ZW4gY2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIGZvciBUIGFuZCBUKiwKIC8vIHNvIGEg
dHIxOjp0eXBlX3RyYWl0cy1saWtlIGlzX3BvaW50ZXIgd29ya3MuCiAjaWYgZGVmaW5lZChfX1NZ
TUJJQU4zMl9fKSB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pCi0jZGVmaW5lIEdURVNUX05FRURTX0lT
X1BPSU5URVJfIDEKKyMgZGVmaW5lIEdURVNUX05FRURTX0lTX1BPSU5URVJfIDEKICNlbmRpZgog
CiB0ZW1wbGF0ZSA8Ym9vbCBib29sX3ZhbHVlPgpAQCAtMTI4MywyMyArMjM0OCw5MyBAQCB0ZW1w
bGF0ZSA8Ym9vbCBib29sX3ZhbHVlPiBjb25zdCBib29sIGJvb2xfY29uc3RhbnQ8Ym9vbF92YWx1
ZT46OnZhbHVlOwogdHlwZWRlZiBib29sX2NvbnN0YW50PGZhbHNlPiBmYWxzZV90eXBlOwogdHlw
ZWRlZiBib29sX2NvbnN0YW50PHRydWU+IHRydWVfdHlwZTsKIAordGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+CitzdHJ1Y3QgaXNfc2FtZSA6IHB1YmxpYyBmYWxzZV90eXBlIHt9Owor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc19zYW1lPFQsIFQ+IDogcHVibGljIHRy
dWVfdHlwZSB7fTsKKworCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0cnVjdCBpc19wb2ludGVy
IDogcHVibGljIGZhbHNlX3R5cGUge307CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RydWN0
IGlzX3BvaW50ZXI8VCo+IDogcHVibGljIHRydWVfdHlwZSB7fTsKIAordGVtcGxhdGUgPHR5cGVu
YW1lIEl0ZXJhdG9yPgorc3RydWN0IEl0ZXJhdG9yVHJhaXRzIHsKKyAgdHlwZWRlZiB0eXBlbmFt
ZSBJdGVyYXRvcjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOworfTsKKworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3N0cnVjdCBJdGVyYXRvclRyYWl0czxUKj4geworICB0eXBlZGVmIFQgdmFsdWVf
dHlwZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEl0ZXJhdG9yVHJhaXRz
PGNvbnN0IFQqPiB7CisgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOworfTsKKwogI2lmIEdURVNUX09T
X1dJTkRPV1MKLSNkZWZpbmUgR1RFU1RfUEFUSF9TRVBfICJcXCIKLSNkZWZpbmUgR1RFU1RfSEFT
X0FMVF9QQVRIX1NFUF8gMQorIyBkZWZpbmUgR1RFU1RfUEFUSF9TRVBfICJcXCIKKyMgZGVmaW5l
IEdURVNUX0hBU19BTFRfUEFUSF9TRVBfIDEKIC8vIFRoZSBiaWdnZXN0IHNpZ25lZCBpbnRlZ2Vy
IHR5cGUgdGhlIGNvbXBpbGVyIHN1cHBvcnRzLgogdHlwZWRlZiBfX2ludDY0IEJpZ2dlc3RJbnQ7
CiAjZWxzZQotI2RlZmluZSBHVEVTVF9QQVRIX1NFUF8gIi8iCi0jZGVmaW5lIEdURVNUX0hBU19B
TFRfUEFUSF9TRVBfIDAKKyMgZGVmaW5lIEdURVNUX1BBVEhfU0VQXyAiLyIKKyMgZGVmaW5lIEdU
RVNUX0hBU19BTFRfUEFUSF9TRVBfIDAKIHR5cGVkZWYgbG9uZyBsb25nIEJpZ2dlc3RJbnQ7ICAv
LyBOT0xJTlQKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCisvLyBVdGlsaXRpZXMgZm9y
IGNoYXIuCisKKy8vIGlzc3BhY2UoaW50IGNoKSBhbmQgZnJpZW5kcyBhY2NlcHQgYW4gdW5zaWdu
ZWQgY2hhciBvciBFT0YuICBjaGFyCisvLyBtYXkgYmUgc2lnbmVkLCBkZXBlbmRpbmcgb24gdGhl
IGNvbXBpbGVyIChvciBjb21waWxlciBmbGFncykuCisvLyBUaGVyZWZvcmUgd2UgbmVlZCB0byBj
YXN0IGEgY2hhciB0byB1bnNpZ25lZCBjaGFyIGJlZm9yZSBjYWxsaW5nCisvLyBpc3NwYWNlKCks
IGV0Yy4KKworaW5saW5lIGJvb2wgSXNBbHBoYShjaGFyIGNoKSB7CisgIHJldHVybiBpc2FscGhh
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKK30KK2lubGluZSBib29sIElz
QWxOdW0oY2hhciBjaCkgeworICByZXR1cm4gaXNhbG51bShzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihjaCkpICE9IDA7Cit9CitpbmxpbmUgYm9vbCBJc0RpZ2l0KGNoYXIgY2gpIHsKKyAgcmV0
dXJuIGlzZGlnaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOworfQoraW5s
aW5lIGJvb2wgSXNMb3dlcihjaGFyIGNoKSB7CisgIHJldHVybiBpc2xvd2VyKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKK30KK2lubGluZSBib29sIElzU3BhY2UoY2hhciBj
aCkgeworICByZXR1cm4gaXNzcGFjZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpICE9
IDA7Cit9CitpbmxpbmUgYm9vbCBJc1VwcGVyKGNoYXIgY2gpIHsKKyAgcmV0dXJuIGlzdXBwZXIo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNY
RGlnaXQoY2hhciBjaCkgeworICByZXR1cm4gaXN4ZGlnaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oY2gpKSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNYRGlnaXQod2NoYXJfdCBjaCkgewor
ICBjb25zdCB1bnNpZ25lZCBjaGFyIGxvd19ieXRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cj4oY2gpOworICByZXR1cm4gY2ggPT0gbG93X2J5dGUgJiYgaXN4ZGlnaXQobG93X2J5dGUpICE9
IDA7Cit9CisKK2lubGluZSBjaGFyIFRvTG93ZXIoY2hhciBjaCkgeworICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y2hhcj4odG9sb3dlcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpKTsKK30K
K2lubGluZSBjaGFyIFRvVXBwZXIoY2hhciBjaCkgeworICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hh
cj4odG91cHBlcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpKTsKK30KKworaW5saW5l
IHN0ZDo6c3RyaW5nIFN0cmlwVHJhaWxpbmdTcGFjZXMoc3RkOjpzdHJpbmcgc3RyKSB7CisgIHN0
ZDo6c3RyaW5nOjppdGVyYXRvciBpdCA9IHN0ci5lbmQoKTsKKyAgd2hpbGUgKGl0ICE9IHN0ci5i
ZWdpbigpICYmIElzU3BhY2UoKi0taXQpKQorICAgIGl0ID0gc3RyLmVyYXNlKGl0KTsKKyAgcmV0
dXJuIHN0cjsKK30KKwogLy8gVGhlIHRlc3Rpbmc6OmludGVybmFsOjpwb3NpeCBuYW1lc3BhY2Ug
aG9sZHMgd3JhcHBlcnMgZm9yIGNvbW1vbgogLy8gUE9TSVggZnVuY3Rpb25zLiAgVGhlc2Ugd3Jh
cHBlcnMgaGlkZSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbgogLy8gV2luZG93cy9NU1ZDIGFuZCBQ
T1NJWCBzeXN0ZW1zLiAgU2luY2Ugc29tZSBjb21waWxlcnMgZGVmaW5lIHRoZXNlCkBAIC0xMzE0
LDM2ICsyNDQ5LDM2IEBAIG5hbWVzcGFjZSBwb3NpeCB7CiAKIHR5cGVkZWYgc3RydWN0IF9zdGF0
IFN0YXRTdHJ1Y3Q7CiAKLSNpZmRlZiBfX0JPUkxBTkRDX18KKyMgaWZkZWYgX19CT1JMQU5EQ19f
CiBpbmxpbmUgaW50IElzQVRUWShpbnQgZmQpIHsgcmV0dXJuIGlzYXR0eShmZCk7IH0KIGlubGlu
ZSBpbnQgU3RyQ2FzZUNtcChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIpIHsKICAgcmV0
dXJuIHN0cmljbXAoczEsIHMyKTsKIH0KIGlubGluZSBjaGFyKiBTdHJEdXAoY29uc3QgY2hhciog
c3JjKSB7IHJldHVybiBzdHJkdXAoc3JjKTsgfQotI2Vsc2UgIC8vICFfX0JPUkxBTkRDX18KLSNp
ZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBlbHNlICAvLyAhX19CT1JMQU5EQ19fCisjICBp
ZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogaW5saW5lIGludCBJc0FUVFkoaW50IC8qIGZkICov
KSB7IHJldHVybiAwOyB9Ci0jZWxzZQorIyAgZWxzZQogaW5saW5lIGludCBJc0FUVFkoaW50IGZk
KSB7IHJldHVybiBfaXNhdHR5KGZkKTsgfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01P
QklMRQorIyAgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiBpbmxpbmUgaW50IFN0
ckNhc2VDbXAoY29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyKSB7CiAgIHJldHVybiBfc3Ry
aWNtcChzMSwgczIpOwogfQogaW5saW5lIGNoYXIqIFN0ckR1cChjb25zdCBjaGFyKiBzcmMpIHsg
cmV0dXJuIF9zdHJkdXAoc3JjKTsgfQotI2VuZGlmICAvLyBfX0JPUkxBTkRDX18KKyMgZW5kaWYg
IC8vIF9fQk9STEFORENfXwogCi0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaWYgR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKIGlubGluZSBpbnQgRmlsZU5vKEZJTEUqIGZpbGUpIHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aW50PihfZmlsZW5vKGZpbGUpKTsgfQogLy8gU3RhdCgpLCBS
bURpcigpLCBhbmQgSXNEaXIoKSBhcmUgbm90IG5lZWRlZCBvbiBXaW5kb3dzIENFIGF0IHRoaXMK
IC8vIHRpbWUgYW5kIHRodXMgbm90IGRlZmluZWQgdGhlcmUuCi0jZWxzZQorIyBlbHNlCiBpbmxp
bmUgaW50IEZpbGVObyhGSUxFKiBmaWxlKSB7IHJldHVybiBfZmlsZW5vKGZpbGUpOyB9CiBpbmxp
bmUgaW50IFN0YXQoY29uc3QgY2hhciogcGF0aCwgU3RhdFN0cnVjdCogYnVmKSB7IHJldHVybiBf
c3RhdChwYXRoLCBidWYpOyB9CiBpbmxpbmUgaW50IFJtRGlyKGNvbnN0IGNoYXIqIGRpcikgeyBy
ZXR1cm4gX3JtZGlyKGRpcik7IH0KIGlubGluZSBib29sIElzRGlyKGNvbnN0IFN0YXRTdHJ1Y3Qm
IHN0KSB7CiAgIHJldHVybiAoX1NfSUZESVIgJiBzdC5zdF9tb2RlKSAhPSAwOwogfQotI2VuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKIAogI2Vsc2UKIApAQCAtMTM2MywxMSArMjQ5OCw3IEBAIGlubGluZSBib29sIElz
RGlyKGNvbnN0IFN0YXRTdHJ1Y3QmIHN0KSB7IHJldHVybiBTX0lTRElSKHN0LnN0X21vZGUpOyB9
CiAKIC8vIEZ1bmN0aW9ucyBkZXByZWNhdGVkIGJ5IE1TVkMgOC4wLgogCi0jaWZkZWYgX01TQ19W
RVIKLS8vIFRlbXBvcmFyaWx5IGRpc2FibGUgd2FybmluZyA0OTk2IChkZXByZWNhdGVkIGZ1bmN0
aW9uKS4KLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDk5
NikKLSNlbmRpZgorR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRFRF9QVVNIXygpCiAKIGlubGlu
ZSBjb25zdCBjaGFyKiBTdHJOQ3B5KGNoYXIqIGRlc3QsIGNvbnN0IGNoYXIqIHNyYywgc2l6ZV90
IG4pIHsKICAgcmV0dXJuIHN0cm5jcHkoZGVzdCwgc3JjLCBuKTsKQEAgLTEzNzcsNyArMjUwOCw3
IEBAIGlubGluZSBjb25zdCBjaGFyKiBTdHJOQ3B5KGNoYXIqIGRlc3QsIGNvbnN0IGNoYXIqIHNy
Yywgc2l6ZV90IG4pIHsKIC8vIFN0ckVycm9yKCkgYXJlbid0IG5lZWRlZCBvbiBXaW5kb3dzIENF
IGF0IHRoaXMgdGltZSBhbmQgdGh1cyBub3QKIC8vIGRlZmluZWQgdGhlcmUuCiAKLSNpZiAhR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKKyNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdU
RVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQKIGlubGluZSBpbnQg
Q2hEaXIoY29uc3QgY2hhciogZGlyKSB7IHJldHVybiBjaGRpcihkaXIpOyB9CiAjZW5kaWYKIGlu
bGluZSBGSUxFKiBGT3Blbihjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyKiBtb2RlKSB7CkBA
IC0xNDAxLDggKzI1MzIsOSBAQCBpbmxpbmUgaW50IENsb3NlKGludCBmZCkgeyByZXR1cm4gY2xv
c2UoZmQpOyB9CiBpbmxpbmUgY29uc3QgY2hhciogU3RyRXJyb3IoaW50IGVycm51bSkgeyByZXR1
cm4gc3RyZXJyb3IoZXJybnVtKTsgfQogI2VuZGlmCiBpbmxpbmUgY29uc3QgY2hhciogR2V0RW52
KGNvbnN0IGNoYXIqIG5hbWUpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorI2lmIEdU
RVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNUX09TX1dJTkRPV1NfUEhPTkUgfHwgR1RFU1Rf
T1NfV0lORE9XU19SVAogICAvLyBXZSBhcmUgb24gV2luZG93cyBDRSwgd2hpY2ggaGFzIG5vIGVu
dmlyb25tZW50IHZhcmlhYmxlcy4KKyAgc3RhdGljX2Nhc3Q8dm9pZD4obmFtZSk7ICAvLyBUbyBw
cmV2ZW50ICd1bnVzZWQgYXJndW1lbnQnIHdhcm5pbmcuCiAgIHJldHVybiBOVUxMOwogI2VsaWYg
ZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQoX19TdW5PU181XzgpIHx8IGRlZmluZWQo
X19TdW5PU181XzkpCiAgIC8vIEVudmlyb25tZW50IHZhcmlhYmxlcyB3aGljaCB3ZSBwcm9ncmFt
bWF0aWNhbGx5IGNsZWFyIHdpbGwgYmUgc2V0IHRvIHRoZQpAQCAtMTQxNCw5ICsyNTQ2LDcgQEAg
aW5saW5lIGNvbnN0IGNoYXIqIEdldEVudihjb25zdCBjaGFyKiBuYW1lKSB7CiAjZW5kaWYKIH0K
IAotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmcocG9wKSAgLy8gUmVzdG9yZXMgdGhl
IHdhcm5pbmcgc3RhdGUuCi0jZW5kaWYKK0dURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUE9Q
XygpCiAKICNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogLy8gV2luZG93cyBDRSBoYXMgbm8g
QyBsaWJyYXJ5LiBUaGUgYWJvcnQoKSBmdW5jdGlvbiBpcyB1c2VkIGluCkBAIC0xNDI5LDYgKzI1
NTksMjMgQEAgaW5saW5lIHZvaWQgQWJvcnQoKSB7IGFib3J0KCk7IH0KIAogfSAgLy8gbmFtZXNw
YWNlIHBvc2l4CiAKKy8vIE1TVkMgImRlcHJlY2F0ZXMiIHNucHJpbnRmIGFuZCBpc3N1ZXMgd2Fy
bmluZ3Mgd2hlcmV2ZXIgaXQgaXMgdXNlZC4gIEluCisvLyBvcmRlciB0byBhdm9pZCB0aGVzZSB3
YXJuaW5ncywgd2UgbmVlZCB0byB1c2UgX3NucHJpbnRmIG9yIF9zbnByaW50Zl9zIG9uCisvLyBN
U1ZDLWJhc2VkIHBsYXRmb3Jtcy4gIFdlIG1hcCB0aGUgR1RFU1RfU05QUklOVEZfIG1hY3JvIHRv
IHRoZSBhcHByb3ByaWF0ZQorLy8gZnVuY3Rpb24gaW4gb3JkZXIgdG8gYWNoaWV2ZSB0aGF0LiAg
V2UgdXNlIG1hY3JvIGRlZmluaXRpb24gaGVyZSBiZWNhdXNlCisvLyBzbnByaW50ZiBpcyBhIHZh
cmlhZGljIGZ1bmN0aW9uLgorI2lmIF9NU0NfVkVSID49IDE0MDAgJiYgIUdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCisvLyBNU1ZDIDIwMDUgYW5kIGFib3ZlIHN1cHBvcnQgdmFyaWFkaWMgbWFjcm9z
LgorIyBkZWZpbmUgR1RFU1RfU05QUklOVEZfKGJ1ZmZlciwgc2l6ZSwgZm9ybWF0LCAuLi4pIFwK
KyAgICAgX3NucHJpbnRmX3MoYnVmZmVyLCBzaXplLCBzaXplLCBmb3JtYXQsIF9fVkFfQVJHU19f
KQorI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKy8vIFdpbmRvd3MgQ0UgZG9lcyBub3QgZGVmaW5l
IF9zbnByaW50Zl9zIGFuZCBNU1ZDIHByaW9yIHRvIDIwMDUgZG9lc24ndAorLy8gY29tcGxhaW4g
YWJvdXQgX3NucHJpbnRmLgorIyBkZWZpbmUgR1RFU1RfU05QUklOVEZfIF9zbnByaW50ZgorI2Vs
c2UKKyMgZGVmaW5lIEdURVNUX1NOUFJJTlRGXyBzbnByaW50ZgorI2VuZGlmCisKIC8vIFRoZSBt
YXhpbXVtIG51bWJlciBhIEJpZ2dlc3RJbnQgY2FuIHJlcHJlc2VudC4gIFRoaXMgZGVmaW5pdGlv
bgogLy8gd29ya3Mgbm8gbWF0dGVyIEJpZ2dlc3RJbnQgaXMgcmVwcmVzZW50ZWQgaW4gb25lJ3Mg
Y29tcGxlbWVudCBvcgogLy8gdHdvJ3MgY29tcGxlbWVudC4KQEAgLTE1MDAsMjcgKzI2NDcsNDQg
QEAgdHlwZWRlZiBUeXBlV2l0aFNpemU8OD46OkludCBUaW1lSW5NaWxsaXM7ICAvLyBSZXByZXNl
bnRzIHRpbWUgaW4gbWlsbGlzZWNvbmRzLgogLy8gVXRpbGl0aWVzIGZvciBjb21tYW5kIGxpbmUg
ZmxhZ3MgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlcy4KIAogLy8gTWFjcm8gZm9yIHJlZmVyZW5j
aW5nIGZsYWdzLgotI2RlZmluZSBHVEVTVF9GTEFHKG5hbWUpIEZMQUdTX2d0ZXN0XyMjbmFtZQor
I2lmICFkZWZpbmVkKEdURVNUX0ZMQUcpCisjIGRlZmluZSBHVEVTVF9GTEFHKG5hbWUpIEZMQUdT
X2d0ZXN0XyMjbmFtZQorI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9GTEFHKQorCisjaWYgIWRl
ZmluZWQoR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXykKKyMgZGVmaW5lIEdURVNUX1VTRV9P
V05fRkxBR0ZJTEVfRkxBR18gMQorI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9VU0VfT1dOX0ZM
QUdGSUxFX0ZMQUdfKQorCisjaWYgIWRlZmluZWQoR1RFU1RfREVDTEFSRV9ib29sXykKKyMgZGVm
aW5lIEdURVNUX0ZMQUdfU0FWRVJfIDo6dGVzdGluZzo6aW50ZXJuYWw6OkdUZXN0RmxhZ1NhdmVy
CiAKIC8vIE1hY3JvcyBmb3IgZGVjbGFyaW5nIGZsYWdzLgotI2RlZmluZSBHVEVTVF9ERUNMQVJF
X2Jvb2xfKG5hbWUpIEdURVNUX0FQSV8gZXh0ZXJuIGJvb2wgR1RFU1RfRkxBRyhuYW1lKQotI2Rl
ZmluZSBHVEVTVF9ERUNMQVJFX2ludDMyXyhuYW1lKSBcCisjIGRlZmluZSBHVEVTVF9ERUNMQVJF
X2Jvb2xfKG5hbWUpIEdURVNUX0FQSV8gZXh0ZXJuIGJvb2wgR1RFU1RfRkxBRyhuYW1lKQorIyBk
ZWZpbmUgR1RFU1RfREVDTEFSRV9pbnQzMl8obmFtZSkgXAogICAgIEdURVNUX0FQSV8gZXh0ZXJu
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkludDMyIEdURVNUX0ZMQUcobmFtZSkKLSNkZWZpbmUgR1RF
U1RfREVDTEFSRV9zdHJpbmdfKG5hbWUpIFwKLSAgICBHVEVTVF9BUElfIGV4dGVybiA6OnRlc3Rp
bmc6OmludGVybmFsOjpTdHJpbmcgR1RFU1RfRkxBRyhuYW1lKQorIyBkZWZpbmUgR1RFU1RfREVD
TEFSRV9zdHJpbmdfKG5hbWUpIFwKKyAgICBHVEVTVF9BUElfIGV4dGVybiA6OnN0ZDo6c3RyaW5n
IEdURVNUX0ZMQUcobmFtZSkKIAogLy8gTWFjcm9zIGZvciBkZWZpbmluZyBmbGFncy4KLSNkZWZp
bmUgR1RFU1RfREVGSU5FX2Jvb2xfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpIFwKKyMgZGVmaW5l
IEdURVNUX0RFRklORV9ib29sXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCiAgICAgR1RFU1Rf
QVBJXyBib29sIEdURVNUX0ZMQUcobmFtZSkgPSAoZGVmYXVsdF92YWwpCi0jZGVmaW5lIEdURVNU
X0RFRklORV9pbnQzMl8obmFtZSwgZGVmYXVsdF92YWwsIGRvYykgXAorIyBkZWZpbmUgR1RFU1Rf
REVGSU5FX2ludDMyXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCiAgICAgR1RFU1RfQVBJXyA6
OnRlc3Rpbmc6OmludGVybmFsOjpJbnQzMiBHVEVTVF9GTEFHKG5hbWUpID0gKGRlZmF1bHRfdmFs
KQotI2RlZmluZSBHVEVTVF9ERUZJTkVfc3RyaW5nXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBc
Ci0gICAgR1RFU1RfQVBJXyA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmcgR1RFU1RfRkxBRyhu
YW1lKSA9IChkZWZhdWx0X3ZhbCkKKyMgZGVmaW5lIEdURVNUX0RFRklORV9zdHJpbmdfKG5hbWUs
IGRlZmF1bHRfdmFsLCBkb2MpIFwKKyAgICBHVEVTVF9BUElfIDo6c3RkOjpzdHJpbmcgR1RFU1Rf
RkxBRyhuYW1lKSA9IChkZWZhdWx0X3ZhbCkKKworI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9E
RUNMQVJFX2Jvb2xfKQorCisvLyBUaHJlYWQgYW5ub3RhdGlvbnMKKyNpZiAhZGVmaW5lZChHVEVT
VF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8pCisjIGRlZmluZSBHVEVTVF9FWENMVVNJVkVfTE9D
S19SRVFVSVJFRF8obG9ja3MpCisjIGRlZmluZSBHVEVTVF9MT0NLX0VYQ0xVREVEXyhsb2NrcykK
KyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKQogCiAv
LyBQYXJzZXMgJ3N0cicgZm9yIGEgMzItYml0IHNpZ25lZCBpbnRlZ2VyLiAgSWYgc3VjY2Vzc2Z1
bCwgd3JpdGVzIHRoZSByZXN1bHQKIC8vIHRvICp2YWx1ZSBhbmQgcmV0dXJucyB0cnVlOyBvdGhl
cndpc2UgbGVhdmVzICp2YWx1ZSB1bmNoYW5nZWQgYW5kIHJldHVybnMKIC8vIGZhbHNlLgotLy8g
VE9ETyhjaGFuZGxlcmMpOiBGaW5kIGEgYmV0dGVyIHdheSB0byByZWZhY3RvciBmbGFnIGFuZCBl
bnZpcm9ubWVudCBwYXJzaW5nCisvLyBGSVhNRTogRmluZCBhIGJldHRlciB3YXkgdG8gcmVmYWN0
b3IgZmxhZyBhbmQgZW52aXJvbm1lbnQgcGFyc2luZwogLy8gb3V0IG9mIGJvdGggZ3Rlc3QtcG9y
dC5jYyBhbmQgZ3Rlc3QuY2MgdG8gYXZvaWQgZXhwb3J0aW5nIHRoaXMgdXRpbGl0eQogLy8gZnVu
Y3Rpb24uCiBib29sIFBhcnNlSW50MzIoY29uc3QgTWVzc2FnZSYgc3JjX3RleHQsIGNvbnN0IGNo
YXIqIHN0ciwgSW50MzIqIHZhbHVlKTsKQEAgLTE1MjksNiArMjY5Myw3IEBAIGJvb2wgUGFyc2VJ
bnQzMihjb25zdCBNZXNzYWdlJiBzcmNfdGV4dCwgY29uc3QgY2hhciogc3RyLCBJbnQzMiogdmFs
dWUpOwogLy8gY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gR29vZ2xlIFRlc3QgZmxhZy4KIGJv
b2wgQm9vbEZyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBib29sIGRlZmF1bHRfdmFsKTsK
IEdURVNUX0FQSV8gSW50MzIgSW50MzJGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywgSW50
MzIgZGVmYXVsdF92YWwpOworc3RkOjpzdHJpbmcgT3V0cHV0RmxhZ0Fsc29DaGVja0VudlZhcigp
OwogY29uc3QgY2hhciogU3RyaW5nRnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIGNvbnN0
IGNoYXIqIGRlZmF1bHRfdmFsKTsKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0
LXN0cmluZy5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC1zdHJpbmcuaAppbmRleCBhZmYwOTNkZWM4ZGIzOTkwNzRlYTNiNzFiYjcyMjdkYTdl
OTY3MzBhLi40YzliNjI2MmMzYzEwMzcyNmFhM2NhYjRjMTk5OTViYWVmOTU4Yjk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0
LXN0cmluZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgKQEAgLTI3LDcwICsyNywzOCBAQAogLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogLy8KLS8vIEF1dGhvcnM6IHdhbkBnb29nbGUuY29tIChaaGFueW9u
ZyBXYW4pLCBlZWZhY21AZ21haWwuY29tIChTZWFuIE1jYWZlZSkKLS8vCi0vLyBUaGUgR29vZ2xl
IEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBUaGUgR29vZ2xlIEMrKyBU
ZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBo
ZWFkZXIgZmlsZSBkZWNsYXJlcyB0aGUgU3RyaW5nIGNsYXNzIGFuZCBmdW5jdGlvbnMgdXNlZCBp
bnRlcm5hbGx5IGJ5CiAvLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdl
IHdpdGhvdXQgbm90aWNlLiBUaGV5IHNob3VsZCBub3QgdXNlZAogLy8gYnkgY29kZSBleHRlcm5h
bCB0byBHb29nbGUgVGVzdC4KIC8vCi0vLyBUaGlzIGhlYWRlciBmaWxlIGlzICNpbmNsdWRlZCBi
eSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4uCisvLyBUaGlzIGhlYWRlciBmaWxl
IGlzICNpbmNsdWRlZCBieSBndGVzdC1pbnRlcm5hbC5oLgogLy8gSXQgc2hvdWxkIG5vdCBiZSAj
aW5jbHVkZWQgYnkgb3RoZXIgZmlsZXMuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBE
RUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1NUUklO
R19IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1NUUklOR19I
XwogCiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBzdHJpbmcuaCBpcyBub3QgZ3VhcmFudGVlZCB0
byBwcm92aWRlIHN0cmNweSBvbiBDKysgQnVpbGRlci4KLSNpbmNsdWRlIDxtZW0uaD4KKyMgaW5j
bHVkZSA8bWVtLmg+CiAjZW5kaWYKIAogI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPGd0
ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLQogI2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1
ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKwogbmFtZXNwYWNlIHRlc3Rpbmcgewog
bmFtZXNwYWNlIGludGVybmFsIHsKIAotLy8gU3RyaW5nIC0gYSBVVEYtOCBzdHJpbmcgY2xhc3Mu
Ci0vLwotLy8gRm9yIGhpc3RvcmljIHJlYXNvbnMsIHdlIGRvbid0IHVzZSBzdGQ6OnN0cmluZy4K
LS8vCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogcmVwbGFjZSB0aGlzIGNsYXNzIHdpdGggc3Rk
OjpzdHJpbmcgb3IKLS8vIGltcGxlbWVudCBpdCBpbiB0ZXJtcyBvZiB0aGUgbGF0dGVyLgotLy8K
LS8vIE5vdGUgdGhhdCBTdHJpbmcgY2FuIHJlcHJlc2VudCBib3RoIE5VTEwgYW5kIHRoZSBlbXB0
eSBzdHJpbmcsCi0vLyB3aGlsZSBzdGQ6OnN0cmluZyBjYW5ub3QgcmVwcmVzZW50IE5VTEwuCi0v
LwotLy8gTlVMTCBhbmQgdGhlIGVtcHR5IHN0cmluZyBhcmUgY29uc2lkZXJlZCBkaWZmZXJlbnQu
ICBOVUxMIGlzIGxlc3MKLS8vIHRoYW4gYW55dGhpbmcgKGluY2x1ZGluZyB0aGUgZW1wdHkgc3Ry
aW5nKSBleGNlcHQgaXRzZWxmLgotLy8KLS8vIFRoaXMgY2xhc3Mgb25seSBwcm92aWRlcyBtaW5p
bXVtIGZ1bmN0aW9uYWxpdHkgbmVjZXNzYXJ5IGZvcgotLy8gaW1wbGVtZW50aW5nIEdvb2dsZSBU
ZXN0LiAgV2UgZG8gbm90IGludGVuZCB0byBpbXBsZW1lbnQgYSBmdWxsLWZsZWRnZWQKLS8vIHN0
cmluZyBjbGFzcyBoZXJlLgotLy8KLS8vIFNpbmNlIHRoZSBwdXJwb3NlIG9mIHRoaXMgY2xhc3Mg
aXMgdG8gcHJvdmlkZSBhIHN1YnN0aXR1dGUgZm9yCi0vLyBzdGQ6OnN0cmluZyBvbiBwbGF0Zm9y
bXMgd2hlcmUgaXQgY2Fubm90IGJlIHVzZWQsIHdlIGRlZmluZSBhIGNvcHkKLS8vIGNvbnN0cnVj
dG9yIGFuZCBhc3NpZ25tZW50IG9wZXJhdG9ycyBzdWNoIHRoYXQgd2UgZG9uJ3QgbmVlZAotLy8g
Y29uZGl0aW9uYWwgY29tcGlsYXRpb24gaW4gYSBsb3Qgb2YgcGxhY2VzLgotLy8KLS8vIEluIG9y
ZGVyIHRvIG1ha2UgdGhlIHJlcHJlc2VudGF0aW9uIGVmZmljaWVudCwgdGhlIGQndG9yIG9mIFN0
cmluZwotLy8gaXMgbm90IHZpcnR1YWwuICBUaGVyZWZvcmUgRE8gTk9UIElOSEVSSVQgRlJPTSBT
dHJpbmcuCisvLyBTdHJpbmcgLSBhbiBhYnN0cmFjdCBjbGFzcyBob2xkaW5nIHN0YXRpYyBzdHJp
bmcgdXRpbGl0aWVzLgogY2xhc3MgR1RFU1RfQVBJXyBTdHJpbmcgewogIHB1YmxpYzoKICAgLy8g
U3RhdGljIHV0aWxpdHkgbWV0aG9kcwogCi0gIC8vIFJldHVybnMgdGhlIGlucHV0IGVuY2xvc2Vk
IGluIGRvdWJsZSBxdW90ZXMgaWYgaXQncyBub3QgTlVMTDsKLSAgLy8gb3RoZXJ3aXNlIHJldHVy
bnMgIihudWxsKSIuICBGb3IgZXhhbXBsZSwgIlwiSGVsbG9cIiIgaXMgcmV0dXJuZWQKLSAgLy8g
Zm9yIGlucHV0ICJIZWxsbyIuCi0gIC8vCi0gIC8vIFRoaXMgaXMgdXNlZnVsIGZvciBwcmludGlu
ZyBhIEMgc3RyaW5nIGluIHRoZSBzeW50YXggb2YgYSBsaXRlcmFsLgotICAvLwotICAvLyBLbm93
biBpc3N1ZTogZXNjYXBlIHNlcXVlbmNlcyBhcmUgbm90IGhhbmRsZWQgeWV0LgotICBzdGF0aWMg
U3RyaW5nIFNob3dDU3RyaW5nUXVvdGVkKGNvbnN0IGNoYXIqIGNfc3RyKTsKLQogICAvLyBDbG9u
ZXMgYSAwLXRlcm1pbmF0ZWQgQyBzdHJpbmcsIGFsbG9jYXRpbmcgbWVtb3J5IHVzaW5nIG5ldy4g
IFRoZQogICAvLyBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZSByZXR1cm4g
dmFsdWUgdXNpbmcKICAgLy8gZGVsZXRlW10uICBSZXR1cm5zIHRoZSBjbG9uZWQgc3RyaW5nLCBv
ciBOVUxMIGlmIHRoZSBpbnB1dCBpcwpAQCAtMTM3LDExICsxMDUsNyBAQCBjbGFzcyBHVEVTVF9B
UElfIFN0cmluZyB7CiAgIC8vIE5VTEwgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gIihudWxsKSIuICBJ
ZiBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcKICAgLy8gdGhlIGNvbnZlcnNpb24sICIoZmFpbGVk
IHRvIGNvbnZlcnQgZnJvbSB3aWRlIHN0cmluZykiIGlzCiAgIC8vIHJldHVybmVkLgotICBzdGF0
aWMgU3RyaW5nIFNob3dXaWRlQ1N0cmluZyhjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKTsKLQot
ICAvLyBTaW1pbGFyIHRvIFNob3dXaWRlQ1N0cmluZygpLCBleGNlcHQgdGhhdCB0aGlzIGZ1bmN0
aW9uIGVuY2xvc2VzCi0gIC8vIHRoZSBjb252ZXJ0ZWQgc3RyaW5nIGluIGRvdWJsZSBxdW90ZXMu
Ci0gIHN0YXRpYyBTdHJpbmcgU2hvd1dpZGVDU3RyaW5nUXVvdGVkKGNvbnN0IHdjaGFyX3QqIHdp
ZGVfY19zdHIpOworICBzdGF0aWMgc3RkOjpzdHJpbmcgU2hvd1dpZGVDU3RyaW5nKGNvbnN0IHdj
aGFyX3QqIHdpZGVfY19zdHIpOwogCiAgIC8vIENvbXBhcmVzIHR3byB3aWRlIEMgc3RyaW5ncy4g
IFJldHVybnMgdHJ1ZSBpZmYgdGhleSBoYXZlIHRoZSBzYW1lCiAgIC8vIGNvbnRlbnQuCkBAIC0x
NzUsMTc0ICsxMzksMjcgQEAgY2xhc3MgR1RFU1RfQVBJXyBTdHJpbmcgewogICBzdGF0aWMgYm9v
bCBDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscyhjb25zdCB3Y2hhcl90KiBsaHMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFy
X3QqIHJocyk7CiAKLSAgLy8gRm9ybWF0cyBhIGxpc3Qgb2YgYXJndW1lbnRzIHRvIGEgU3RyaW5n
LCB1c2luZyB0aGUgc2FtZSBmb3JtYXQKLSAgLy8gc3BlYyBzdHJpbmcgYXMgZm9yIHByaW50Zi4K
LSAgLy8KLSAgLy8gV2UgZG8gbm90IHVzZSB0aGUgU3RyaW5nUHJpbnRmIGNsYXNzIGFzIGl0IGlz
IG5vdCB1bml2ZXJzYWxseQotICAvLyBhdmFpbGFibGUuCi0gIC8vCi0gIC8vIFRoZSByZXN1bHQg
aXMgbGltaXRlZCB0byA0MDk2IGNoYXJhY3RlcnMgKGluY2x1ZGluZyB0aGUgdGFpbGluZwotICAv
LyAwKS4gIElmIDQwOTYgY2hhcmFjdGVycyBhcmUgbm90IGVub3VnaCB0byBmb3JtYXQgdGhlIGlu
cHV0LAotICAvLyAiPGJ1ZmZlciBleGNlZWRlZD4iIGlzIHJldHVybmVkLgotICBzdGF0aWMgU3Ry
aW5nIEZvcm1hdChjb25zdCBjaGFyKiBmb3JtYXQsIC4uLik7Ci0KLSAgLy8gQyd0b3JzCi0KLSAg
Ly8gVGhlIGRlZmF1bHQgYyd0b3IgY29uc3RydWN0cyBhIE5VTEwgc3RyaW5nLgotICBTdHJpbmco
KSA6IGNfc3RyXyhOVUxMKSwgbGVuZ3RoXygwKSB7fQotCi0gIC8vIENvbnN0cnVjdHMgYSBTdHJp
bmcgYnkgY2xvbmluZyBhIDAtdGVybWluYXRlZCBDIHN0cmluZy4KLSAgU3RyaW5nKGNvbnN0IGNo
YXIqIGFfY19zdHIpIHsgIC8vIE5PTElOVAotICAgIGlmIChhX2Nfc3RyID09IE5VTEwpIHsKLSAg
ICAgIGNfc3RyXyA9IE5VTEw7Ci0gICAgICBsZW5ndGhfID0gMDsKLSAgICB9IGVsc2UgewotICAg
ICAgQ29uc3RydWN0Tm9uTnVsbChhX2Nfc3RyLCBzdHJsZW4oYV9jX3N0cikpOwotICAgIH0KLSAg
fQorICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBnaXZlbiBzdHJpbmcgZW5kcyB3aXRoIHRoZSBn
aXZlbiBzdWZmaXgsIGlnbm9yaW5nCisgIC8vIGNhc2UuIEFueSBzdHJpbmcgaXMgY29uc2lkZXJl
ZCB0byBlbmQgd2l0aCBhbiBlbXB0eSBzdWZmaXguCisgIHN0YXRpYyBib29sIEVuZHNXaXRoQ2Fz
ZUluc2Vuc2l0aXZlKAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0ciwgY29uc3Qgc3RkOjpz
dHJpbmcmIHN1ZmZpeCk7CiAKLSAgLy8gQ29uc3RydWN0cyBhIFN0cmluZyBieSBjb3B5aW5nIGEg
Z2l2ZW4gbnVtYmVyIG9mIGNoYXJzIGZyb20gYQotICAvLyBidWZmZXIuICBFLmcuIFN0cmluZygi
aGVsbG8iLCAzKSBjcmVhdGVzIHRoZSBzdHJpbmcgImhlbCIsCi0gIC8vIFN0cmluZygiYVwwYmNk
IiwgNCkgY3JlYXRlcyAiYVwwYmMiLCBTdHJpbmcoTlVMTCwgMCkgY3JlYXRlcyAiIiwKLSAgLy8g
YW5kIFN0cmluZyhOVUxMLCAxKSByZXN1bHRzIGluIGFjY2VzcyB2aW9sYXRpb24uCi0gIFN0cmlu
Zyhjb25zdCBjaGFyKiBidWZmZXIsIHNpemVfdCBhX2xlbmd0aCkgewotICAgIENvbnN0cnVjdE5v
bk51bGwoYnVmZmVyLCBhX2xlbmd0aCk7Ci0gIH0KKyAgLy8gRm9ybWF0cyBhbiBpbnQgdmFsdWUg
YXMgIiUwMmQiLgorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0SW50V2lkdGgyKGludCB2YWx1
ZSk7ICAvLyAiJTAyZCIgZm9yIHdpZHRoID09IDIKIAotICAvLyBUaGUgY29weSBjJ3RvciBjcmVh
dGVzIGEgbmV3IGNvcHkgb2YgdGhlIHN0cmluZy4gIFRoZSB0d28KLSAgLy8gU3RyaW5nIG9iamVj
dHMgZG8gbm90IHNoYXJlIGNvbnRlbnQuCi0gIFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cikgOiBj
X3N0cl8oTlVMTCksIGxlbmd0aF8oMCkgeyAqdGhpcyA9IHN0cjsgfQorICAvLyBGb3JtYXRzIGFu
IGludCB2YWx1ZSBhcyAiJVgiLgorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0SGV4SW50KGlu
dCB2YWx1ZSk7CiAKLSAgLy8gRCd0b3IuICBTdHJpbmcgaXMgaW50ZW5kZWQgdG8gYmUgYSBmaW5h
bCBjbGFzcywgc28gdGhlIGQndG9yCi0gIC8vIGRvZXNuJ3QgbmVlZCB0byBiZSB2aXJ0dWFsLgot
ICB+U3RyaW5nKCkgeyBkZWxldGVbXSBjX3N0cl87IH0KLQotICAvLyBBbGxvd3MgYSBTdHJpbmcg
dG8gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYW4gOjpzdGQ6OnN0cmluZyBvcgotICAvLyA6
OnN0cmluZywgYW5kIHZpY2UgdmVyc2EuICBDb252ZXJ0aW5nIGEgU3RyaW5nIGNvbnRhaW5pbmcg
YSBOVUxMCi0gIC8vIHBvaW50ZXIgdG8gOjpzdGQ6OnN0cmluZyBvciA6OnN0cmluZyBpcyB1bmRl
ZmluZWQgYmVoYXZpb3IuCi0gIC8vIENvbnZlcnRpbmcgYSA6OnN0ZDo6c3RyaW5nIG9yIDo6c3Ry
aW5nIGNvbnRhaW5pbmcgYW4gZW1iZWRkZWQgTlVMCi0gIC8vIGNoYXJhY3RlciB0byBhIFN0cmlu
ZyB3aWxsIHJlc3VsdCBpbiB0aGUgcHJlZml4IHVwIHRvIHRoZSBmaXJzdAotICAvLyBOVUwgY2hh
cmFjdGVyLgotICBTdHJpbmcoY29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyKSB7Ci0gICAgQ29uc3Ry
dWN0Tm9uTnVsbChzdHIuY19zdHIoKSwgc3RyLmxlbmd0aCgpKTsKLSAgfQotCi0gIG9wZXJhdG9y
IDo6c3RkOjpzdHJpbmcoKSBjb25zdCB7IHJldHVybiA6OnN0ZDo6c3RyaW5nKGNfc3RyKCksIGxl
bmd0aCgpKTsgfQotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLSAgU3RyaW5nKGNvbnN0
IDo6c3RyaW5nJiBzdHIpIHsKLSAgICBDb25zdHJ1Y3ROb25OdWxsKHN0ci5jX3N0cigpLCBzdHIu
bGVuZ3RoKCkpOwotICB9Ci0KLSAgb3BlcmF0b3IgOjpzdHJpbmcoKSBjb25zdCB7IHJldHVybiA6
OnN0cmluZyhjX3N0cigpLCBsZW5ndGgoKSk7IH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JB
TF9TVFJJTkcKLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgaXMgYW4gZW1wdHkgc3RyaW5n
IChpLmUuICIiKS4KLSAgYm9vbCBlbXB0eSgpIGNvbnN0IHsgcmV0dXJuIChjX3N0cigpICE9IE5V
TEwpICYmIChsZW5ndGgoKSA9PSAwKTsgfQotCi0gIC8vIENvbXBhcmVzIHRoaXMgd2l0aCBhbm90
aGVyIFN0cmluZy4KLSAgLy8gUmV0dXJucyA8IDAgaWYgdGhpcyBpcyBsZXNzIHRoYW4gcmhzLCAw
IGlmIHRoaXMgaXMgZXF1YWwgdG8gcmhzLCBvciA+IDAKLSAgLy8gaWYgdGhpcyBpcyBncmVhdGVy
IHRoYW4gcmhzLgotICBpbnQgQ29tcGFyZShjb25zdCBTdHJpbmcmIHJocykgY29uc3Q7Ci0KLSAg
Ly8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIFN0cmluZyBlcXVhbHMgdGhlIGdpdmVuIEMgc3RyaW5n
LiAgQSBOVUxMCi0gIC8vIHN0cmluZyBhbmQgYSBub24tTlVMTCBzdHJpbmcgYXJlIGNvbnNpZGVy
ZWQgbm90IGVxdWFsLgotICBib29sIG9wZXJhdG9yPT0oY29uc3QgY2hhciogYV9jX3N0cikgY29u
c3QgeyByZXR1cm4gQ29tcGFyZShhX2Nfc3RyKSA9PSAwOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVl
IGlmZiB0aGlzIFN0cmluZyBpcyBsZXNzIHRoYW4gdGhlIGdpdmVuIFN0cmluZy4gIEEKLSAgLy8g
TlVMTCBzdHJpbmcgaXMgY29uc2lkZXJlZCBsZXNzIHRoYW4gIiIuCi0gIGJvb2wgb3BlcmF0b3I8
KGNvbnN0IFN0cmluZyYgcmhzKSBjb25zdCB7IHJldHVybiBDb21wYXJlKHJocykgPCAwOyB9Ci0K
LSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIFN0cmluZyBkb2Vzbid0IGVxdWFsIHRoZSBnaXZl
biBDIHN0cmluZy4gIEEgTlVMTAotICAvLyBzdHJpbmcgYW5kIGEgbm9uLU5VTEwgc3RyaW5nIGFy
ZSBjb25zaWRlcmVkIG5vdCBlcXVhbC4KLSAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIqIGFf
Y19zdHIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gYV9jX3N0cik7IH0KLQotICAvLyBSZXR1
cm5zIHRydWUgaWZmIHRoaXMgU3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LiAgKkFu
eSoKLSAgLy8gU3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGggYSBOVUxMIG9yIGVtcHR5
IHN1ZmZpeC4KLSAgYm9vbCBFbmRzV2l0aChjb25zdCBjaGFyKiBzdWZmaXgpIGNvbnN0OwotCi0g
IC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBTdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZm
aXgsIG5vdCBjb25zaWRlcmluZwotICAvLyBjYXNlLiBBbnkgU3RyaW5nIGlzIGNvbnNpZGVyZWQg
dG8gZW5kIHdpdGggYSBOVUxMIG9yIGVtcHR5IHN1ZmZpeC4KLSAgYm9vbCBFbmRzV2l0aENhc2VJ
bnNlbnNpdGl2ZShjb25zdCBjaGFyKiBzdWZmaXgpIGNvbnN0OwotCi0gIC8vIFJldHVybnMgdGhl
IGxlbmd0aCBvZiB0aGUgZW5jYXBzdWxhdGVkIHN0cmluZywgb3IgMCBpZiB0aGUKLSAgLy8gc3Ry
aW5nIGlzIE5VTEwuCi0gIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBsZW5ndGhfOyB9
Ci0KLSAgLy8gR2V0cyB0aGUgMC10ZXJtaW5hdGVkIEMgc3RyaW5nIHRoaXMgU3RyaW5nIG9iamVj
dCByZXByZXNlbnRzLgotICAvLyBUaGUgU3RyaW5nIG9iamVjdCBzdGlsbCBvd25zIHRoZSBzdHJp
bmcuICBUaGVyZWZvcmUgdGhlIGNhbGxlcgotICAvLyBzaG91bGQgTk9UIGRlbGV0ZSB0aGUgcmV0
dXJuIHZhbHVlLgotICBjb25zdCBjaGFyKiBjX3N0cigpIGNvbnN0IHsgcmV0dXJuIGNfc3RyXzsg
fQotCi0gIC8vIEFzc2lnbnMgYSBDIHN0cmluZyB0byB0aGlzIG9iamVjdC4gIFNlbGYtYXNzaWdu
bWVudCB3b3Jrcy4KLSAgY29uc3QgU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgY2hhciogYV9jX3N0
cikgewotICAgIHJldHVybiAqdGhpcyA9IFN0cmluZyhhX2Nfc3RyKTsKLSAgfQotCi0gIC8vIEFz
c2lnbnMgYSBTdHJpbmcgb2JqZWN0IHRvIHRoaXMgb2JqZWN0LiAgU2VsZi1hc3NpZ25tZW50IHdv
cmtzLgotICBjb25zdCBTdHJpbmcmIG9wZXJhdG9yPShjb25zdCBTdHJpbmcmIHJocykgewotICAg
IGlmICh0aGlzICE9ICZyaHMpIHsKLSAgICAgIGRlbGV0ZVtdIGNfc3RyXzsKLSAgICAgIGlmIChy
aHMuY19zdHIoKSA9PSBOVUxMKSB7Ci0gICAgICAgIGNfc3RyXyA9IE5VTEw7Ci0gICAgICAgIGxl
bmd0aF8gPSAwOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgQ29uc3RydWN0Tm9uTnVsbChyaHMu
Y19zdHIoKSwgcmhzLmxlbmd0aCgpKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gKnRo
aXM7Ci0gIH0KKyAgLy8gRm9ybWF0cyBhIGJ5dGUgYXMgIiUwMlgiLgorICBzdGF0aWMgc3RkOjpz
dHJpbmcgRm9ybWF0Qnl0ZSh1bnNpZ25lZCBjaGFyIHZhbHVlKTsKIAogIHByaXZhdGU6Ci0gIC8v
IENvbnN0cnVjdHMgYSBub24tTlVMTCBTdHJpbmcgZnJvbSB0aGUgZ2l2ZW4gY29udGVudC4gIFRo
aXMKLSAgLy8gZnVuY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gZGF0YV8gaGFzIG5vdCBi
ZWVuIGFsbG9jYXRlZC4KLSAgLy8gQ29uc3RydWN0Tm9uTnVsbChOVUxMLCAwKSByZXN1bHRzIGlu
IGFuIGVtcHR5IHN0cmluZyAoIiIpLgotICAvLyBDb25zdHJ1Y3ROb25OdWxsKE5VTEwsIG5vbl96
ZXJvKSBpcyB1bmRlZmluZWQgYmVoYXZpb3IuCi0gIHZvaWQgQ29uc3RydWN0Tm9uTnVsbChjb25z
dCBjaGFyKiBidWZmZXIsIHNpemVfdCBhX2xlbmd0aCkgewotICAgIGNoYXIqIGNvbnN0IHN0ciA9
IG5ldyBjaGFyW2FfbGVuZ3RoICsgMV07Ci0gICAgbWVtY3B5KHN0ciwgYnVmZmVyLCBhX2xlbmd0
aCk7Ci0gICAgc3RyW2FfbGVuZ3RoXSA9ICdcMCc7Ci0gICAgY19zdHJfID0gc3RyOwotICAgIGxl
bmd0aF8gPSBhX2xlbmd0aDsKLSAgfQotCi0gIGNvbnN0IGNoYXIqIGNfc3RyXzsKLSAgc2l6ZV90
IGxlbmd0aF87CisgIFN0cmluZygpOyAgLy8gTm90IG1lYW50IHRvIGJlIGluc3RhbnRpYXRlZC4K
IH07ICAvLyBjbGFzcyBTdHJpbmcKIAotLy8gU3RyZWFtcyBhIFN0cmluZyB0byBhbiBvc3RyZWFt
LiAgRWFjaCAnXDAnIGNoYXJhY3RlciBpbiB0aGUgU3RyaW5nCi0vLyBpcyByZXBsYWNlZCB3aXRo
ICJcXDAiLgotaW5saW5lIDo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFt
JiBvcywgY29uc3QgU3RyaW5nJiBzdHIpIHsKLSAgaWYgKHN0ci5jX3N0cigpID09IE5VTEwpIHsK
LSAgICBvcyA8PCAiKG51bGwpIjsKLSAgfSBlbHNlIHsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBj
X3N0ciA9IHN0ci5jX3N0cigpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHN0ci5sZW5n
dGgoKTsgaSsrKSB7Ci0gICAgICBpZiAoY19zdHJbaV0gPT0gJ1wwJykgewotICAgICAgICBvcyA8
PCAiXFwwIjsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIG9zIDw8IGNfc3RyW2ldOwotICAgICAg
fQotICAgIH0KLSAgfQotICByZXR1cm4gb3M7Ci19Ci0KLS8vIEdldHMgdGhlIGNvbnRlbnQgb2Yg
dGhlIFN0clN0cmVhbSdzIGJ1ZmZlciBhcyBhIFN0cmluZy4gIEVhY2ggJ1wwJworLy8gR2V0cyB0
aGUgY29udGVudCBvZiB0aGUgc3RyaW5nc3RyZWFtJ3MgYnVmZmVyIGFzIGFuIHN0ZDo6c3RyaW5n
LiAgRWFjaCAnXDAnCiAvLyBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlciBpcyByZXBsYWNlZCB3aXRo
ICJcXDAiLgotR1RFU1RfQVBJXyBTdHJpbmcgU3RyU3RyZWFtVG9TdHJpbmcoU3RyU3RyZWFtKiBz
dHJlYW0pOwotCi0vLyBDb252ZXJ0cyBhIHN0cmVhbWFibGUgdmFsdWUgdG8gYSBTdHJpbmcuICBB
IE5VTEwgcG9pbnRlciBpcwotLy8gY29udmVydGVkIHRvICIobnVsbCkiLiAgV2hlbiB0aGUgaW5w
dXQgdmFsdWUgaXMgYSA6OnN0cmluZywKLS8vIDo6c3RkOjpzdHJpbmcsIDo6d3N0cmluZywgb3Ig
OjpzdGQ6OndzdHJpbmcgb2JqZWN0LCBlYWNoIE5VTAotLy8gY2hhcmFjdGVyIGluIGl0IGlzIHJl
cGxhY2VkIHdpdGggIlxcMCIuCi0KLS8vIERlY2xhcmVkIGhlcmUgYnV0IGRlZmluZWQgaW4gZ3Rl
c3QuaCwgc28gdGhhdCBpdCBoYXMgYWNjZXNzCi0vLyB0byB0aGUgZGVmaW5pdGlvbiBvZiB0aGUg
TWVzc2FnZSBjbGFzcywgcmVxdWlyZWQgYnkgdGhlIEFSTQotLy8gY29tcGlsZXIuCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLVN0cmluZyBTdHJlYW1hYmxlVG9TdHJpbmcoY29uc3QgVCYgc3RyZWFt
YWJsZSk7CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFN0cmluZ1N0cmVhbVRvU3RyaW5nKDo6c3Rk
OjpzdHJpbmdzdHJlYW0qIHN0cmVhbSk7CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAg
Ly8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaAppbmRleCBjMjdmM2E0
MjFkOWM0OTcxZWRlNDljYzMzMjkxMmQ0YTgzNjBjNWE1Li43OGEzYTZhMDFmYWM3NTUxN2VhYjgz
MTMxMjQyN2UxNWQ1ZTRlYmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9p
bmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oCkBAIC0xLDQgKzEs
NiBAQAotLy8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgYSBzY3JpcHQuICBETyBOT1QgRURJ
VCBCWSBIQU5EISEhCisvLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBjb21tYW5kOgorLy8g
ICAgIHB1bXAucHkgZ3Rlc3QtdHVwbGUuaC5wdW1wCisvLyBETyBOT1QgRURJVCBCWSBIQU5EISEh
CiAKIC8vIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuCiAvLyBBbGwgUmlnaHRzIFJlc2VydmVk
LgpAQCAtMjgsMTEgKzMwLDEyIEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KQorCiAKIC8vIEltcGxlbWVudHMgYSBzdWJzZXQgb2YgVFIxIHR1cGxlIG5lZWRlZCBieSBHb29n
bGUgVGVzdCBhbmQgR29vZ2xlIE1vY2suCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBE
RUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RVUExF
X0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFVQTEVfSF8K
IApAQCAtNDAsMTcgKzQzLDI1IEBACiAKIC8vIFRoZSBjb21waWxlciB1c2VkIGluIFN5bWJpYW4g
aGFzIGEgYnVnIHRoYXQgcHJldmVudHMgdXMgZnJvbSBkZWNsYXJpbmcgdGhlCiAvLyB0dXBsZSB0
ZW1wbGF0ZSBhcyBhIGZyaWVuZCAoaXQgY29tcGxhaW5zIHRoYXQgdHVwbGUgaXMgcmVkZWZpbmVk
KS4gIFRoaXMKLS8vIGhhY2sgYnlwYXNzZXMgdGhlIGJ1ZyBieSBkZWNsYXJpbmcgdGhlIG1lbWJl
cnMgdGhhdCBzaG91bGQgb3RoZXJ3aXNlIGJlCisvLyBieXBhc3NlcyB0aGUgYnVnIGJ5IGRlY2xh
cmluZyB0aGUgbWVtYmVycyB0aGF0IHNob3VsZCBvdGhlcndpc2UgYmUKIC8vIHByaXZhdGUgYXMg
cHVibGljLgogLy8gU3VuIFN0dWRpbyB2ZXJzaW9ucyA8IDEyIGFsc28gaGF2ZSB0aGUgYWJvdmUg
YnVnLgogI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgfHwgKGRlZmluZWQoX19TVU5QUk9fQ0Mp
ICYmIF9fU1VOUFJPX0NDIDwgMHg1OTApCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNf
RlJJRU5EXyBwdWJsaWM6CisjIGRlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8g
cHVibGljOgogI2Vsc2UKLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIFwK
KyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBcCiAgICAgdGVtcGxhdGUg
PEdURVNUXzEwX1RZUEVOQU1FU18oVSk+IGZyaWVuZCBjbGFzcyB0dXBsZTsgXAogICAgcHJpdmF0
ZToKICNlbmRpZgogCisvLyBWaXN1YWwgU3R1ZGlvIDIwMTAsIDIwMTIsIGFuZCAyMDEzIGRlZmlu
ZSBzeW1ib2xzIGluIHN0ZDo6dHIxIHRoYXQgY29uZmxpY3QKKy8vIHdpdGggb3VyIG93biBkZWZp
bml0aW9ucy4gVGhlcmVmb3JlIHVzaW5nIG91ciBvd24gdHVwbGUgZG9lcyBub3Qgd29yayBvbgor
Ly8gdGhvc2UgY29tcGlsZXJzLgorI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49
IDE2MDAgIC8qIDE2MDAgaXMgVmlzdWFsIFN0dWRpbyAyMDEwICovCisjIGVycm9yICJndGVzdCdz
IHR1cGxlIGRvZXNuJ3QgY29tcGlsZSBvbiBWaXN1YWwgU3R1ZGlvIDIwMTAgb3IgbGF0ZXIuIFwK
K0dURVNUX1VTRV9PV05fVFIxX1RVUExFIG11c3QgYmUgc2V0IHRvIDAgb24gdGhvc2UgY29tcGls
ZXJzLiIKKyNlbmRpZgorCiAvLyBHVEVTVF9uX1RVUExFXyhUKSBpcyB0aGUgdHlwZSBvZiBhbiBu
LXR1cGxlLgogI2RlZmluZSBHVEVTVF8wX1RVUExFXyhUKSB0dXBsZTw+CiAjZGVmaW5lIEdURVNU
XzFfVFVQTEVfKFQpIHR1cGxlPFQjIzAsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQsIHZv
aWQsIFwKQEAgLTE0MCwzNCArMTUxLDU0IEBAIHRlbXBsYXRlIDxib29sIGtJbmRleFZhbGlkLCBp
bnQga0luZGV4LCBjbGFzcyBUdXBsZT4KIHN0cnVjdCBUdXBsZUVsZW1lbnQ7CiAKIHRlbXBsYXRl
IDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAwLCBH
VEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUMCB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxl
bWVudDx0cnVlLCAwLCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDAgdHlwZTsK
K307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxl
bWVudDx0cnVlLCAxLCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUMSB0eXBlOyB9Owor
c3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAxLCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5
cGVkZWYgVDEgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgot
c3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAyLCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRl
ZiBUMiB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAyLCBHVEVTVF8xMF9UVVBM
RV8oVCkgPiB7CisgIHR5cGVkZWYgVDIgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9U
WVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAzLCBHVEVTVF8xMF9UVVBM
RV8oVCk+IHsgdHlwZWRlZiBUMyB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAz
LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDMgdHlwZTsKK307CiAKIHRlbXBs
YXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA0
LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUNCB0eXBlOyB9Oworc3RydWN0IFR1cGxl
RWxlbWVudDx0cnVlLCA0LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDQgdHlw
ZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxl
RWxlbWVudDx0cnVlLCA1LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUNSB0eXBlOyB9
Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA1LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7Cisg
IHR5cGVkZWYgVDUgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQp
Pgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA2LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlw
ZWRlZiBUNiB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA2LCBHVEVTVF8xMF9U
VVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDYgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8x
MF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA3LCBHVEVTVF8xMF9U
VVBMRV8oVCk+IHsgdHlwZWRlZiBUNyB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVl
LCA3LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDcgdHlwZTsKK307CiAKIHRl
bXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVl
LCA4LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUOCB0eXBlOyB9Oworc3RydWN0IFR1
cGxlRWxlbWVudDx0cnVlLCA4LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDgg
dHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1
cGxlRWxlbWVudDx0cnVlLCA5LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUOSB0eXBl
OyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA5LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7
CisgIHR5cGVkZWYgVDkgdHlwZTsKK307CiAKIH0gIC8vIG5hbWVzcGFjZSBndGVzdF9pbnRlcm5h
bAogCkBAIC03MDgsMzcgKzczOSw1OSBAQCBpbmxpbmUgR1RFU1RfMTBfVFVQTEVfKFQpIG1ha2Vf
dHVwbGUoY29uc3QgVDAmIGYwLCBjb25zdCBUMSYgZjEsIGNvbnN0IFQyJiBmMiwKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUdXBsZT4gc3RydWN0IHR1cGxlX3NpemU7CiAKIHRlbXBsYXRlIDxHVEVTVF8w
X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8wX1RVUExFXyhUKT4geyBz
dGF0aWMgY29uc3QgaW50IHZhbHVlID0gMDsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzBf
VFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMDsKK307CiAKIHRlbXBs
YXRlIDxHVEVTVF8xX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8xX1RV
UExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMTsgfTsKK3N0cnVjdCB0dXBsZV9z
aXplPEdURVNUXzFfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMTsK
K307CiAKIHRlbXBsYXRlIDxHVEVTVF8yX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6
ZTxHVEVTVF8yX1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMjsgfTsKK3N0
cnVjdCB0dXBsZV9zaXplPEdURVNUXzJfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50
IHZhbHVlID0gMjsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8zX1RZUEVOQU1FU18oVCk+Ci1zdHJ1
Y3QgdHVwbGVfc2l6ZTxHVEVTVF8zX1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVl
ID0gMzsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzNfVFVQTEVfKFQpID4geworICBzdGF0
aWMgY29uc3QgaW50IHZhbHVlID0gMzsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF80X1RZUEVOQU1F
U18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF80X1RVUExFXyhUKT4geyBzdGF0aWMgY29u
c3QgaW50IHZhbHVlID0gNDsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzRfVFVQTEVfKFQp
ID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNDsKK307CiAKIHRlbXBsYXRlIDxHVEVT
VF81X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF81X1RVUExFXyhUKT4g
eyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNTsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNU
XzVfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNTsKK307CiAKIHRl
bXBsYXRlIDxHVEVTVF82X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF82
X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNjsgfTsKK3N0cnVjdCB0dXBs
ZV9zaXplPEdURVNUXzZfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0g
NjsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF83X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVf
c2l6ZTxHVEVTVF83X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNzsgfTsK
K3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzdfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3Qg
aW50IHZhbHVlID0gNzsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF84X1RZUEVOQU1FU18oVCk+Ci1z
dHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF84X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZh
bHVlID0gODsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzhfVFVQTEVfKFQpID4geworICBz
dGF0aWMgY29uc3QgaW50IHZhbHVlID0gODsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF85X1RZUEVO
QU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF85X1RVUExFXyhUKT4geyBzdGF0aWMg
Y29uc3QgaW50IHZhbHVlID0gOTsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzlfVFVQTEVf
KFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gOTsKK307CiAKIHRlbXBsYXRlIDxH
VEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVf
KFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAxMDsgfTsKK3N0cnVjdCB0dXBsZV9zaXpl
PEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDEwOwor
fTsKIAogdGVtcGxhdGUgPGludCBrLCBjbGFzcyBUdXBsZT4KIHN0cnVjdCB0dXBsZV9lbGVtZW50
IHsKQEAgLTkxMiw3ICs5NjUsNyBAQCBzdHJ1Y3QgU2FtZVNpemVUdXBsZVByZWZpeENvbXBhcmF0
b3I8aywgaz4gewogICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGUxLCBjbGFzcyBUdXBsZTI+CiAgIHN0
YXRpYyBib29sIEVxKGNvbnN0IFR1cGxlMSYgdDEsIGNvbnN0IFR1cGxlMiYgdDIpIHsKICAgICBy
ZXR1cm4gU2FtZVNpemVUdXBsZVByZWZpeENvbXBhcmF0b3I8ayAtIDEsIGsgLSAxPjo6RXEodDEs
IHQyKSAmJgotICAgICAgICA6OnN0ZDo6Z2V0PGsgLSAxPih0MSkgPT0gOjpzdGQ6OmdldDxrIC0g
MT4odDIpOworICAgICAgICA6OnN0ZDo6dHIxOjpnZXQ8ayAtIDE+KHQxKSA9PSA6OnN0ZDo6dHIx
OjpnZXQ8ayAtIDE+KHQyKTsKICAgfQogfTsKIApAQCAtOTIyLDggKzk3NSw4IEBAIHRlbXBsYXRl
IDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpLCBHVEVTVF8xMF9UWVBFTkFNRVNfKFUpPgogaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBHVEVTVF8xMF9UVVBMRV8oVCkmIHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdURVNUXzEwX1RVUExFXyhVKSYgdSkgewogICByZXR1cm4gZ3Rl
c3RfaW50ZXJuYWw6OlNhbWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9yPAotICAgICAgdHVwbGVf
c2l6ZTxHVEVTVF8xMF9UVVBMRV8oVCk+Ojp2YWx1ZSwKLSAgICAgIHR1cGxlX3NpemU8R1RFU1Rf
MTBfVFVQTEVfKFUpPjo6dmFsdWU+OjpFcSh0LCB1KTsKKyAgICAgIHR1cGxlX3NpemU8R1RFU1Rf
MTBfVFVQTEVfKFQpID46OnZhbHVlLAorICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8xMF9UVVBMRV8o
VSkgPjo6dmFsdWU+OjpFcSh0LCB1KTsKIH0KIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1F
U18oVCksIEdURVNUXzEwX1RZUEVOQU1FU18oVSk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUu
aC5wdW1wCmluZGV4IDg1ZWJjODA2MmVlMTA0NDczN2IzNmU4YTQwODVkMjY3ZjE4ZGMyMDUuLmJi
NjI2ZTA0OWYwODc4MGZmY2U5NmQ0ODUyY2I4ZWQ1ZDNlZjVmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5w
dW1wCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtdHVwbGUuaC5wdW1wCkBAIC0yOSwxMSArMjksMTIgQEAgJCQgVGhpcyBtZXRhIGNvbW1l
bnQgZml4ZXMgYXV0by1pbmRlbnRhdGlvbiBpbiBFbWFjcy4gfX0KIC8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUu
Y29tIChaaGFueW9uZyBXYW4pCisKIAogLy8gSW1wbGVtZW50cyBhIHN1YnNldCBvZiBUUjEgdHVw
bGUgbmVlZGVkIGJ5IEdvb2dsZSBUZXN0IGFuZCBHb29nbGUgTW9jay4KIAorLy8gR09PR0xFVEVT
VF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5U
RVJOQUxfR1RFU1RfVFVQTEVfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5B
TF9HVEVTVF9UVVBMRV9IXwogCkBAIC00MSwxNyArNDIsMjUgQEAgJCQgVGhpcyBtZXRhIGNvbW1l
bnQgZml4ZXMgYXV0by1pbmRlbnRhdGlvbiBpbiBFbWFjcy4gfX0KIAogLy8gVGhlIGNvbXBpbGVy
IHVzZWQgaW4gU3ltYmlhbiBoYXMgYSBidWcgdGhhdCBwcmV2ZW50cyB1cyBmcm9tIGRlY2xhcmlu
ZyB0aGUKIC8vIHR1cGxlIHRlbXBsYXRlIGFzIGEgZnJpZW5kIChpdCBjb21wbGFpbnMgdGhhdCB0
dXBsZSBpcyByZWRlZmluZWQpLiAgVGhpcwotLy8gaGFjayBieXBhc3NlcyB0aGUgYnVnIGJ5IGRl
Y2xhcmluZyB0aGUgbWVtYmVycyB0aGF0IHNob3VsZCBvdGhlcndpc2UgYmUKKy8vIGJ5cGFzc2Vz
IHRoZSBidWcgYnkgZGVjbGFyaW5nIHRoZSBtZW1iZXJzIHRoYXQgc2hvdWxkIG90aGVyd2lzZSBi
ZQogLy8gcHJpdmF0ZSBhcyBwdWJsaWMuCiAvLyBTdW4gU3R1ZGlvIHZlcnNpb25zIDwgMTIgYWxz
byBoYXZlIHRoZSBhYm92ZSBidWcuCiAjaWYgZGVmaW5lZChfX1NZTUJJQU4zMl9fKSB8fCAoZGVm
aW5lZChfX1NVTlBST19DQykgJiYgX19TVU5QUk9fQ0MgPCAweDU5MCkKLSNkZWZpbmUgR1RFU1Rf
REVDTEFSRV9UVVBMRV9BU19GUklFTkRfIHB1YmxpYzoKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVf
VFVQTEVfQVNfRlJJRU5EXyBwdWJsaWM6CiAjZWxzZQotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1RV
UExFX0FTX0ZSSUVORF8gXAorIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRf
IFwKICAgICB0ZW1wbGF0ZSA8R1RFU1RfJChuKV9UWVBFTkFNRVNfKFUpPiBmcmllbmQgY2xhc3Mg
dHVwbGU7IFwKICAgIHByaXZhdGU6CiAjZW5kaWYKIAorLy8gVmlzdWFsIFN0dWRpbyAyMDEwLCAy
MDEyLCBhbmQgMjAxMyBkZWZpbmUgc3ltYm9scyBpbiBzdGQ6OnRyMSB0aGF0IGNvbmZsaWN0Cisv
LyB3aXRoIG91ciBvd24gZGVmaW5pdGlvbnMuIFRoZXJlZm9yZSB1c2luZyBvdXIgb3duIHR1cGxl
IGRvZXMgbm90IHdvcmsgb24KKy8vIHRob3NlIGNvbXBpbGVycy4KKyNpZiBkZWZpbmVkKF9NU0Nf
VkVSKSAmJiBfTVNDX1ZFUiA+PSAxNjAwICAvKiAxNjAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxMCAq
LworIyBlcnJvciAiZ3Rlc3QncyB0dXBsZSBkb2Vzbid0IGNvbXBpbGUgb24gVmlzdWFsIFN0dWRp
byAyMDEwIG9yIGxhdGVyLiBcCitHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSBtdXN0IGJlIHNldCB0
byAwIG9uIHRob3NlIGNvbXBpbGVycy4iCisjZW5kaWYKKwogCiAkcmFuZ2UgaSAwLi5uLTEKICRy
YW5nZSBqIDAuLm4KQEAgLTExOCw4ICsxMjcsOSBAQCBzdHJ1Y3QgVHVwbGVFbGVtZW50OwogCiAk
Zm9yIGkgW1sKIHRlbXBsYXRlIDxHVEVTVF8kKG4pX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVw
bGVFbGVtZW50PHRydWUsICRpLCBHVEVTVF8kKG4pX1RVUExFXyhUKT4gW1tdXQoteyB0eXBlZGVm
IFQkaSB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAkaSwgR1RFU1RfJChuKV9U
VVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVCRpIHR5cGU7Cit9OwogCiAKIF1dCkBAIC0yMjAsNyAr
MjMwLDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPiBzdHJ1Y3QgdHVwbGVfc2l6ZTsKIAog
JGZvciBqIFtbCiB0ZW1wbGF0ZSA8R1RFU1RfJChqKV9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1
cGxlX3NpemU8R1RFU1RfJChqKV9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9
ICRqOyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfJChqKV9UVVBMRV8oVCkgPiB7CisgIHN0
YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAkajsKK307CiAKIAogXV0KQEAgLTMwMiw4ICszMTQsOCBA
QCB0ZW1wbGF0ZSA8R1RFU1RfJChuKV9UWVBFTkFNRVNfKFQpLCBHVEVTVF8kKG4pX1RZUEVOQU1F
U18oVSk+CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdURVNUXyQobilfVFVQTEVfKFQp
JiB0LAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHVEVTVF8kKG4pX1RVUExFXyhVKSYg
dSkgewogICByZXR1cm4gZ3Rlc3RfaW50ZXJuYWw6OlNhbWVTaXplVHVwbGVQcmVmaXhDb21wYXJh
dG9yPAotICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8kKG4pX1RVUExFXyhUKT46OnZhbHVlLAotICAg
ICAgdHVwbGVfc2l6ZTxHVEVTVF8kKG4pX1RVUExFXyhVKT46OnZhbHVlPjo6RXEodCwgdSk7Cisg
ICAgICB0dXBsZV9zaXplPEdURVNUXyQobilfVFVQTEVfKFQpID46OnZhbHVlLAorICAgICAgdHVw
bGVfc2l6ZTxHVEVTVF8kKG4pX1RVUExFXyhVKSA+Ojp2YWx1ZT46OkVxKHQsIHUpOwogfQogCiB0
ZW1wbGF0ZSA8R1RFU1RfJChuKV9UWVBFTkFNRVNfKFQpLCBHVEVTVF8kKG4pX1RZUEVOQU1FU18o
VSk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaAppbmRleCAwOTNlZWU2ZjAxOTYzNTU2
OWY0MDRhZTYzNTdiOGRlNDhiNzE4ZTgxLi4yOGU0MTEyNDUzNjFjMDhmMjg3MDdlOTI0OGU2ZDAz
MzIwZTY4NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgKQEAgLTMwLDggKzMw
LDcgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8v
Ci0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogLy8gVHlwZSB1
dGlsaXRpZXMgbmVlZGVkIGZvciBpbXBsZW1lbnRpbmcgdHlwZWQgYW5kIHR5cGUtcGFyYW1ldGVy
aXplZAogLy8gdGVzdHMuICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBULiAgRE8g
Tk9UIEVESVQgQlkgSEFORCEKQEAgLTQxLDU4ICs0MCw4NCBAQAogLy8gUGxlYXNlIGNvbnRhY3Qg
Z29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tIGlmIHlvdSBuZWVkCiAvLyBtb3Jl
LgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1Rf
SU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UWVBFX1VUSUxfSF8KICNkZWZpbmUgR1RFU1Rf
SU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UWVBFX1VUSUxfSF8KIAotI2luY2x1ZGUgPGd0
ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVz
dC1zdHJpbmcuaD4KLQotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBF
RF9URVNUX1AKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKIC8vICNp
ZmRlZiBfX0dOVUNfXyBpcyB0b28gZ2VuZXJhbCBoZXJlLiAgSXQgaXMgcG9zc2libGUgdG8gdXNl
IGdjYyB3aXRob3V0IHVzaW5nCiAvLyBsaWJzdGRjKysgKHdoaWNoIGlzIHdoZXJlIGN4eGFiaS5o
IGNvbWVzIGZyb20pLgotI2lmZGVmIF9fR0xJQkNYWF9fCi0jaW5jbHVkZSA8Y3h4YWJpLmg+Ci0j
ZW5kaWYgIC8vIF9fR0xJQkNYWF9fCisjIGlmIEdURVNUX0hBU19DWFhBQklfSF8KKyMgIGluY2x1
ZGUgPGN4eGFiaS5oPgorIyBlbGlmIGRlZmluZWQoX19IUF9hQ0MpCisjICBpbmNsdWRlIDxhY3h4
X2RlbWFuZ2xlLmg+CisjIGVuZGlmICAvLyBHVEVTVF9IQVNIX0NYWEFCSV9IXwogCiBuYW1lc3Bh
Y2UgdGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCi0vLyBBc3NlcnR5VHlwZUVxPFQx
LCBUMj46OnR5cGUgaXMgZGVmaW5lZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQotLy8gdHlw
ZS4gIFRoaXMgY2FuIGJlIHVzZWQgYXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRvIGVuc3Vy
ZSB0aGF0Ci0vLyB0d28gdHlwZXMgYXJlIGVxdWFsLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEs
IHR5cGVuYW1lIFQyPgotc3RydWN0IEFzc2VydFR5cGVFcTsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1zdHJ1Y3QgQXNzZXJ0VHlwZUVxPFQsIFQ+IHsKLSAgdHlwZWRlZiBib29sIHR5cGU7Ci19
OworLy8gQ2Fub25pY2FsaXplcyBhIGdpdmVuIG5hbWUgd2l0aCByZXNwZWN0IHRvIHRoZSBTdGFu
ZGFyZCBDKysgTGlicmFyeS4KKy8vIFRoaXMgaGFuZGxlcyByZW1vdmluZyB0aGUgaW5saW5lIG5h
bWVzcGFjZSB3aXRoaW4gYHN0ZGAgdGhhdCBpcworLy8gdXNlZCBieSB2YXJpb3VzIHN0YW5kYXJk
IGxpYnJhcmllcyAoZS5nLiwgYHN0ZDo6X18xYCkuICBOYW1lcyBvdXRzaWRlCisvLyBvZiBuYW1l
c3BhY2Ugc3RkIGFyZSByZXR1cm5lZCB1bm1vZGlmaWVkLgoraW5saW5lIHN0ZDo6c3RyaW5nIENh
bm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoc3RkOjpzdHJpbmcgcykgeworICBzdGF0aWMg
Y29uc3QgY2hhciBwcmVmaXhbXSA9ICJzdGQ6Ol9fIjsKKyAgaWYgKHMuY29tcGFyZSgwLCBzdHJs
ZW4ocHJlZml4KSwgcHJlZml4KSA9PSAwKSB7CisgICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBl
bmQgPSBzLmZpbmQoIjo6Iiwgc3RybGVuKHByZWZpeCkpOworICAgIGlmIChlbmQgIT0gcy5ucG9z
KSB7CisgICAgICAvLyBFcmFzZSBldmVyeXRoaW5nIGJldHdlZW4gdGhlIGluaXRpYWwgYHN0ZGAg
YW5kIHRoZSBzZWNvbmQgYDo6YC4KKyAgICAgIHMuZXJhc2Uoc3RybGVuKCJzdGQiKSwgZW5kIC0g
c3RybGVuKCJzdGQiKSk7CisgICAgfQorICB9CisgIHJldHVybiBzOworfQogCiAvLyBHZXRUeXBl
TmFtZTxUPigpIHJldHVybnMgYSBodW1hbi1yZWFkYWJsZSBuYW1lIG9mIHR5cGUgVC4KKy8vIE5C
OiBUaGlzIGZ1bmN0aW9uIGlzIGFsc28gdXNlZCBpbiBHb29nbGUgTW9jaywgc28gZG9uJ3QgbW92
ZSBpdCBpbnNpZGUgb2YKKy8vIHRoZSB0eXBlZC10ZXN0LW9ubHkgc2VjdGlvbiBiZWxvdy4KIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotU3RyaW5nIEdldFR5cGVOYW1lKCkgewotI2lmIEdURVNUX0hB
U19SVFRJCitzdGQ6OnN0cmluZyBHZXRUeXBlTmFtZSgpIHsKKyMgaWYgR1RFU1RfSEFTX1JUVEkK
IAogICBjb25zdCBjaGFyKiBjb25zdCBuYW1lID0gdHlwZWlkKFQpLm5hbWUoKTsKLSNpZmRlZiBf
X0dMSUJDWFhfXworIyAgaWYgR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBkZWZpbmVkKF9fSFBfYUND
KQogICBpbnQgc3RhdHVzID0gMDsKICAgLy8gZ2NjJ3MgaW1wbGVtZW50YXRpb24gb2YgdHlwZWlk
KFQpLm5hbWUoKSBtYW5nbGVzIHRoZSB0eXBlIG5hbWUsCiAgIC8vIHNvIHdlIGhhdmUgdG8gZGVt
YW5nbGUgaXQuCi0gIGNoYXIqIGNvbnN0IHJlYWRhYmxlX25hbWUgPSBhYmk6Ol9fY3hhX2RlbWFu
Z2xlKG5hbWUsIDAsIDAsICZzdGF0dXMpOwotICBjb25zdCBTdHJpbmcgbmFtZV9zdHIoc3RhdHVz
ID09IDAgPyByZWFkYWJsZV9uYW1lIDogbmFtZSk7CisjICAgaWYgR1RFU1RfSEFTX0NYWEFCSV9I
XworICB1c2luZyBhYmk6Ol9fY3hhX2RlbWFuZ2xlOworIyAgIGVuZGlmICAvLyBHVEVTVF9IQVNf
Q1hYQUJJX0hfCisgIGNoYXIqIGNvbnN0IHJlYWRhYmxlX25hbWUgPSBfX2N4YV9kZW1hbmdsZShu
YW1lLCAwLCAwLCAmc3RhdHVzKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZV9zdHIoc3RhdHVz
ID09IDAgPyByZWFkYWJsZV9uYW1lIDogbmFtZSk7CiAgIGZyZWUocmVhZGFibGVfbmFtZSk7Ci0g
IHJldHVybiBuYW1lX3N0cjsKLSNlbHNlCisgIHJldHVybiBDYW5vbmljYWxpemVGb3JTdGRMaWJW
ZXJzaW9uaW5nKG5hbWVfc3RyKTsKKyMgIGVsc2UKICAgcmV0dXJuIG5hbWU7Ci0jZW5kaWYgIC8v
IF9fR0xJQkNYWF9fCisjICBlbmRpZiAgLy8gR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBfX0hQX2FD
QworCisjIGVsc2UKIAotI2Vsc2UKICAgcmV0dXJuICI8dHlwZT4iOwotI2VuZGlmICAvLyBHVEVT
VF9IQVNfUlRUSQorCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfUlRUSQogfQogCisjaWYgR1RFU1Rf
SEFTX1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorCisvLyBBc3NlcnR5VHlw
ZUVxPFQxLCBUMj46OnR5cGUgaXMgZGVmaW5lZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQor
Ly8gdHlwZS4gIFRoaXMgY2FuIGJlIHVzZWQgYXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRv
IGVuc3VyZSB0aGF0CisvLyB0d28gdHlwZXMgYXJlIGVxdWFsLgorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyPgorc3RydWN0IEFzc2VydFR5cGVFcTsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitzdHJ1Y3QgQXNzZXJ0VHlwZUVxPFQsIFQ+IHsKKyAgdHlwZWRlZiBib29sIHR5
cGU7Cit9OworCiAvLyBBIHVuaXF1ZSB0eXBlIHVzZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9y
IHRoZSBhcmd1bWVudHMgb2YgY2xhc3MKIC8vIHRlbXBsYXRlIFR5cGVzLiAgVGhpcyBhbGxvd3Mg
dXMgdG8gc2ltdWxhdGUgdmFyaWFkaWMgdGVtcGxhdGVzCiAvLyAoZS5nLiBUeXBlczxpbnQ+LCBU
eXBlPGludCwgZG91YmxlPiwgYW5kIGV0YyksIHdoaWNoIEMrKyBkb2Vzbid0CkBAIC0xNjExLDcg
KzE2MzYsNyBAQCBzdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBU
OSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKIAogbmFtZXNwYWNlIGludGVybmFsIHsK
IAotI2RlZmluZSBHVEVTVF9URU1QTEFURV8gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzCisj
IGRlZmluZSBHVEVTVF9URU1QTEFURV8gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzCiAKIC8v
IFRoZSB0ZW1wbGF0ZSAic2VsZWN0b3IiIHN0cnVjdCBUZW1wbGF0ZVNlbDxUbXBsPiBpcyB1c2Vk
IHRvCiAvLyByZXByZXNlbnQgVG1wbCwgd2hpY2ggbXVzdCBiZSBhIGNsYXNzIHRlbXBsYXRlIHdp
dGggb25lIHR5cGUKQEAgLTE2MjksNyArMTY1NCw3IEBAIHN0cnVjdCBUZW1wbGF0ZVNlbCB7CiAg
IH07CiB9OwogCi0jZGVmaW5lIEdURVNUX0JJTkRfKFRtcGxTZWwsIFQpIFwKKyMgZGVmaW5lIEdU
RVNUX0JJTkRfKFRtcGxTZWwsIFQpIFwKICAgVG1wbFNlbDo6dGVtcGxhdGUgQmluZDxUPjo6dHlw
ZQogCiAvLyBBIHVuaXF1ZSBzdHJ1Y3QgdGVtcGxhdGUgdXNlZCBhcyB0aGUgZGVmYXVsdCB2YWx1
ZSBmb3IgdGhlCkBAIC0zMjkxLDcgKzMzMTYsOSBAQCBzdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAogLy8g
SU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoKS4KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1zdHJ1Y3QgVHlwZUxpc3QgeyB0eXBlZGVmIFR5cGVzMTxUPiB0eXBlOyB9Oworc3RydWN0IFR5
cGVMaXN0IHsKKyAgdHlwZWRlZiBUeXBlczE8VD4gdHlwZTsKK307CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDUsCiAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUg
VDksIHR5cGVuYW1lIFQxMCwKQEAgLTMzMTMsOSArMzM0MCw5IEBAIHN0cnVjdCBUeXBlTGlzdDxU
eXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBU
MTMsCiAgICAgICBUNDEsIFQ0MiwgVDQzLCBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5LCBU
NTA+Ojp0eXBlIHR5cGU7CiB9OwogCisjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8
IEdURVNUX0hBU19UWVBFRF9URVNUX1AKKwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAv
LyBuYW1lc3BhY2UgdGVzdGluZwogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8
IEdURVNUX0hBU19UWVBFRF9URVNUX1AKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNU
X0lOVEVSTkFMX0dURVNUX1RZUEVfVVRJTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBl
LXV0aWwuaC5wdW1wCmluZGV4IDVhZWQxZTU1NDRmYTJkYTE1ODk3MzRjYmMzYjQxNDFiNTg3YTFm
MzIuLjAwMDFhNWQzOWRmYTZkMjRjN2M0MWExNmExNWYyZTJhNWNlOTQ5ZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlw
ZS11dGlsLmgucHVtcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oLnB1bXAKQEAgLTI4LDggKzI4LDcgQEAgJHZhciBu
ID0gNTAgICQkIE1heGltdW0gbGVuZ3RoIG9mIHR5cGUgbGlzdHMgd2Ugd2FudCB0byBzdXBwb3J0
LgogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8v
IEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUeXBlIHV0aWxp
dGllcyBuZWVkZWQgZm9yIGltcGxlbWVudGluZyB0eXBlZCBhbmQgdHlwZS1wYXJhbWV0ZXJpemVk
CiAvLyB0ZXN0cy4gIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBETyBOT1Qg
RURJVCBCWSBIQU5EIQpAQCAtMzksNTggKzM4LDg0IEBAICR2YXIgbiA9IDUwICAkJCBNYXhpbXVt
IGxlbmd0aCBvZiB0eXBlIGxpc3RzIHdlIHdhbnQgdG8gc3VwcG9ydC4KIC8vIFBsZWFzZSBjb250
YWN0IGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbSBpZiB5b3UgbmVlZAogLy8g
bW9yZS4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdU
RVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCiAjZGVmaW5lIEdU
RVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCiAKLSNpbmNsdWRl
IDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwv
Z3Rlc3Qtc3RyaW5nLmg+Ci0KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNf
VFlQRURfVEVTVF9QCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAv
LyAjaWZkZWYgX19HTlVDX18gaXMgdG9vIGdlbmVyYWwgaGVyZS4gIEl0IGlzIHBvc3NpYmxlIHRv
IHVzZSBnY2Mgd2l0aG91dCB1c2luZwogLy8gbGlic3RkYysrICh3aGljaCBpcyB3aGVyZSBjeHhh
YmkuaCBjb21lcyBmcm9tKS4KLSNpZmRlZiBfX0dMSUJDWFhfXwotI2luY2x1ZGUgPGN4eGFiaS5o
PgotI2VuZGlmICAvLyBfX0dMSUJDWFhfXworIyBpZiBHVEVTVF9IQVNfQ1hYQUJJX0hfCisjICBp
bmNsdWRlIDxjeHhhYmkuaD4KKyMgZWxpZiBkZWZpbmVkKF9fSFBfYUNDKQorIyAgaW5jbHVkZSA8
YWN4eF9kZW1hbmdsZS5oPgorIyBlbmRpZiAgLy8gR1RFU1RfSEFTSF9DWFhBQklfSF8KIAogbmFt
ZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsKIAotLy8gQXNzZXJ0eVR5cGVF
cTxUMSwgVDI+Ojp0eXBlIGlzIGRlZmluZWQgaWZmIFQxIGFuZCBUMiBhcmUgdGhlIHNhbWUKLS8v
IHR5cGUuICBUaGlzIGNhbiBiZSB1c2VkIGFzIGEgY29tcGlsZS10aW1lIGFzc2VydGlvbiB0byBl
bnN1cmUgdGhhdAotLy8gdHdvIHR5cGVzIGFyZSBlcXVhbC4KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMj4KLXN0cnVjdCBBc3NlcnRUeXBlRXE7Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotc3RydWN0IEFzc2VydFR5cGVFcTxULCBUPiB7Ci0gIHR5cGVkZWYgYm9vbCB0eXBl
OwotfTsKKy8vIENhbm9uaWNhbGl6ZXMgYSBnaXZlbiBuYW1lIHdpdGggcmVzcGVjdCB0byB0aGUg
U3RhbmRhcmQgQysrIExpYnJhcnkuCisvLyBUaGlzIGhhbmRsZXMgcmVtb3ZpbmcgdGhlIGlubGlu
ZSBuYW1lc3BhY2Ugd2l0aGluIGBzdGRgIHRoYXQgaXMKKy8vIHVzZWQgYnkgdmFyaW91cyBzdGFu
ZGFyZCBsaWJyYXJpZXMgKGUuZy4sIGBzdGQ6Ol9fMWApLiAgTmFtZXMgb3V0c2lkZQorLy8gb2Yg
bmFtZXNwYWNlIHN0ZCBhcmUgcmV0dXJuZWQgdW5tb2RpZmllZC4KK2lubGluZSBzdGQ6OnN0cmlu
ZyBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKHN0ZDo6c3RyaW5nIHMpIHsKKyAgc3Rh
dGljIGNvbnN0IGNoYXIgcHJlZml4W10gPSAic3RkOjpfXyI7CisgIGlmIChzLmNvbXBhcmUoMCwg
c3RybGVuKHByZWZpeCksIHByZWZpeCkgPT0gMCkgeworICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5
cGUgZW5kID0gcy5maW5kKCI6OiIsIHN0cmxlbihwcmVmaXgpKTsKKyAgICBpZiAoZW5kICE9IHMu
bnBvcykgeworICAgICAgLy8gRXJhc2UgZXZlcnl0aGluZyBiZXR3ZWVuIHRoZSBpbml0aWFsIGBz
dGRgIGFuZCB0aGUgc2Vjb25kIGA6OmAuCisgICAgICBzLmVyYXNlKHN0cmxlbigic3RkIiksIGVu
ZCAtIHN0cmxlbigic3RkIikpOworICAgIH0KKyAgfQorICByZXR1cm4gczsKK30KIAogLy8gR2V0
VHlwZU5hbWU8VD4oKSByZXR1cm5zIGEgaHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0eXBlIFQuCisv
LyBOQjogVGhpcyBmdW5jdGlvbiBpcyBhbHNvIHVzZWQgaW4gR29vZ2xlIE1vY2ssIHNvIGRvbid0
IG1vdmUgaXQgaW5zaWRlIG9mCisvLyB0aGUgdHlwZWQtdGVzdC1vbmx5IHNlY3Rpb24gYmVsb3cu
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVN0cmluZyBHZXRUeXBlTmFtZSgpIHsKLSNpZiBHVEVT
VF9IQVNfUlRUSQorc3RkOjpzdHJpbmcgR2V0VHlwZU5hbWUoKSB7CisjIGlmIEdURVNUX0hBU19S
VFRJCiAKICAgY29uc3QgY2hhciogY29uc3QgbmFtZSA9IHR5cGVpZChUKS5uYW1lKCk7Ci0jaWZk
ZWYgX19HTElCQ1hYX18KKyMgIGlmIEdURVNUX0hBU19DWFhBQklfSF8gfHwgZGVmaW5lZChfX0hQ
X2FDQykKICAgaW50IHN0YXR1cyA9IDA7CiAgIC8vIGdjYydzIGltcGxlbWVudGF0aW9uIG9mIHR5
cGVpZChUKS5uYW1lKCkgbWFuZ2xlcyB0aGUgdHlwZSBuYW1lLAogICAvLyBzbyB3ZSBoYXZlIHRv
IGRlbWFuZ2xlIGl0LgotICBjaGFyKiBjb25zdCByZWFkYWJsZV9uYW1lID0gYWJpOjpfX2N4YV9k
ZW1hbmdsZShuYW1lLCAwLCAwLCAmc3RhdHVzKTsKLSAgY29uc3QgU3RyaW5nIG5hbWVfc3RyKHN0
YXR1cyA9PSAwID8gcmVhZGFibGVfbmFtZSA6IG5hbWUpOworIyAgIGlmIEdURVNUX0hBU19DWFhB
QklfSF8KKyAgdXNpbmcgYWJpOjpfX2N4YV9kZW1hbmdsZTsKKyMgICBlbmRpZiAgLy8gR1RFU1Rf
SEFTX0NYWEFCSV9IXworICBjaGFyKiBjb25zdCByZWFkYWJsZV9uYW1lID0gX19jeGFfZGVtYW5n
bGUobmFtZSwgMCwgMCwgJnN0YXR1cyk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG5hbWVfc3RyKHN0
YXR1cyA9PSAwID8gcmVhZGFibGVfbmFtZSA6IG5hbWUpOwogICBmcmVlKHJlYWRhYmxlX25hbWUp
OwotICByZXR1cm4gbmFtZV9zdHI7Ci0jZWxzZQorICByZXR1cm4gQ2Fub25pY2FsaXplRm9yU3Rk
TGliVmVyc2lvbmluZyhuYW1lX3N0cik7CisjICBlbHNlCiAgIHJldHVybiBuYW1lOwotI2VuZGlm
ICAvLyBfX0dMSUJDWFhfXworIyAgZW5kaWYgIC8vIEdURVNUX0hBU19DWFhBQklfSF8gfHwgX19I
UF9hQ0MKKworIyBlbHNlCiAKLSNlbHNlCiAgIHJldHVybiAiPHR5cGU+IjsKLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1JUVEkKKworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX1JUVEkKIH0KIAorI2lmIEdU
RVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AKKworLy8gQXNzZXJ0
eVR5cGVFcTxUMSwgVDI+Ojp0eXBlIGlzIGRlZmluZWQgaWZmIFQxIGFuZCBUMiBhcmUgdGhlIHNh
bWUKKy8vIHR5cGUuICBUaGlzIGNhbiBiZSB1c2VkIGFzIGEgY29tcGlsZS10aW1lIGFzc2VydGlv
biB0byBlbnN1cmUgdGhhdAorLy8gdHdvIHR5cGVzIGFyZSBlcXVhbC4KKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3N0cnVjdCBBc3NlcnRUeXBlRXE7CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorc3RydWN0IEFzc2VydFR5cGVFcTxULCBUPiB7CisgIHR5cGVkZWYgYm9v
bCB0eXBlOworfTsKKwogLy8gQSB1bmlxdWUgdHlwZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHZhbHVl
IGZvciB0aGUgYXJndW1lbnRzIG9mIGNsYXNzCiAvLyB0ZW1wbGF0ZSBUeXBlcy4gIFRoaXMgYWxs
b3dzIHVzIHRvIHNpbXVsYXRlIHZhcmlhZGljIHRlbXBsYXRlcwogLy8gKGUuZy4gVHlwZXM8aW50
PiwgVHlwZTxpbnQsIGRvdWJsZT4sIGFuZCBldGMpLCB3aGljaCBDKysgZG9lc24ndApAQCAtMTY5
LDcgKzE5NCw3IEBAIHN0cnVjdCBUeXBlczwkZm9yIGosIFtbVCRqXV0kZm9yIGtbWywgaW50ZXJu
YWw6Ok5vbmVdXT4gewogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCi0jZGVmaW5lIEdURVNUX1RF
TVBMQVRFXyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MKKyMgZGVmaW5lIEdURVNUX1RFTVBM
QVRFXyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MKIAogLy8gVGhlIHRlbXBsYXRlICJzZWxl
Y3RvciIgc3RydWN0IFRlbXBsYXRlU2VsPFRtcGw+IGlzIHVzZWQgdG8KIC8vIHJlcHJlc2VudCBU
bXBsLCB3aGljaCBtdXN0IGJlIGEgY2xhc3MgdGVtcGxhdGUgd2l0aCBvbmUgdHlwZQpAQCAtMTg3
LDcgKzIxMiw3IEBAIHN0cnVjdCBUZW1wbGF0ZVNlbCB7CiAgIH07CiB9OwogCi0jZGVmaW5lIEdU
RVNUX0JJTkRfKFRtcGxTZWwsIFQpIFwKKyMgZGVmaW5lIEdURVNUX0JJTkRfKFRtcGxTZWwsIFQp
IFwKICAgVG1wbFNlbDo6dGVtcGxhdGUgQmluZDxUPjo6dHlwZQogCiAvLyBBIHVuaXF1ZSBzdHJ1
Y3QgdGVtcGxhdGUgdXNlZCBhcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlCkBAIC0yNzAsNyAr
Mjk1LDkgQEAgc3RydWN0IFRlbXBsYXRlczwkZm9yIGosIFtbVCRqXV0kZm9yIGtbWywgTm9uZVRd
XT4gewogLy8gSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoKS4KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1zdHJ1Y3QgVHlwZUxpc3QgeyB0eXBlZGVmIFR5cGVzMTxUPiB0eXBlOyB9Owor
c3RydWN0IFR5cGVMaXN0IHsKKyAgdHlwZWRlZiBUeXBlczE8VD4gdHlwZTsKK307CiAKIAogJHJh
bmdlIGkgMS4ubgpAQCAtMjc5LDkgKzMwNiw5IEBAIHN0cnVjdCBUeXBlTGlzdDxUeXBlczwkZm9y
IGksIFtbVCRpXV0+ID4gewogICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzPCRmb3IgaSwgW1tUJGld
XT46OnR5cGUgdHlwZTsKIH07CiAKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwg
R1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8v
IG5hbWVzcGFjZSB0ZXN0aW5nCiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwg
R1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1Rf
SU5URVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9tYWtlL01ha2VmaWxlIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbWFrZS9NYWtl
ZmlsZQppbmRleCA1YjI3YjZhMmNiYjEzZTM4MGVlNzVkMTg2ZjU1M2JmYjVmYTE0NGI1Li45YWM3
NDQ5M2JhNTUyNDY1OTdlOTBiODk4ZmFlODQ3YWUzNThlYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9tYWtlL01ha2VmaWxlCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L21ha2UvTWFrZWZpbGUKQEAgLTIwLDEwICsyMCwxMiBAQCBHVEVTVF9ESVIgPSAuLgogVVNF
Ul9ESVIgPSAuLi9zYW1wbGVzCiAKICMgRmxhZ3MgcGFzc2VkIHRvIHRoZSBwcmVwcm9jZXNzb3Iu
Ci1DUFBGTEFHUyArPSAtSSQoR1RFU1RfRElSKS9pbmNsdWRlCisjIFNldCBHb29nbGUgVGVzdCdz
IGhlYWRlciBkaXJlY3RvcnkgYXMgYSBzeXN0ZW0gZGlyZWN0b3J5LCBzdWNoIHRoYXQKKyMgdGhl
IGNvbXBpbGVyIGRvZXNuJ3QgZ2VuZXJhdGUgd2FybmluZ3MgaW4gR29vZ2xlIFRlc3QgaGVhZGVy
cy4KK0NQUEZMQUdTICs9IC1pc3lzdGVtICQoR1RFU1RfRElSKS9pbmNsdWRlCiAKICMgRmxhZ3Mg
cGFzc2VkIHRvIHRoZSBDKysgY29tcGlsZXIuCi1DWFhGTEFHUyArPSAtZyAtV2FsbCAtV2V4dHJh
CitDWFhGTEFHUyArPSAtZyAtV2FsbCAtV2V4dHJhIC1wdGhyZWFkCiAKICMgQWxsIHRlc3RzIHBy
b2R1Y2VkIGJ5IHRoaXMgTWFrZWZpbGUuICBSZW1lbWJlciB0byBhZGQgbmV3IHRlc3RzIHlvdQog
IyBjcmVhdGVkIHRvIHRoZSBsaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvbXN2Yy8yMDEwL2d0ZXN0LW1kLnNsbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMv
MjAxMC9ndGVzdC1tZC5zbG4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM2YjMzYjYyMTVjMzc0YWZjMTE2YjUyMDg0
YjE2ZjQxNDg4MDQ3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L21zdmMvMjAxMC9ndGVzdC1tZC5zbG4KQEAgLTAsMCArMSw1NSBAQAorTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTEuMDAKKyMgVmlzdWFsIEMr
KyBFeHByZXNzIDIwMTAKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkx
QkM5NDJ9IikgPSAiZ3Rlc3QtbWQiLCAiZ3Rlc3QtbWQudmN4cHJvaiIsICJ7QzhGNkMxNzItNTZG
Mi00RTc2LUI1RkEtQzNCNDIzQjMxQkU4fSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VC
OC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3RfbWFpbi1tZCIsICJndGVz
dF9tYWluLW1kLnZjeHByb2oiLCAiezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAz
M30iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5
MUJDOTQyfSIpID0gImd0ZXN0X3Byb2RfdGVzdC1tZCIsICJndGVzdF9wcm9kX3Rlc3QtbWQudmN4
cHJvaiIsICJ7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfSIKK0VuZFByb2pl
Y3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAi
Z3Rlc3RfdW5pdHRlc3QtbWQiLCAiZ3Rlc3RfdW5pdHRlc3QtbWQudmN4cHJvaiIsICJ7NEQ5RkRG
QjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfSIKK0VuZFByb2plY3QKK0dsb2JhbAorCUds
b2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9u
CisJCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzIKKwkJRGVidWd8eDY0ID0gRGVidWd8eDY0CisJ
CVJlbGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyCisJCVJlbGVhc2V8eDY0ID0gUmVsZWFzZXx4
NjQKKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlv
blBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24KKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMz
QjQyM0IzMUJFOH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0M4RjZD
MTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERl
YnVnfFdpbjMyCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LkRlYnVn
fHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMz
QjQyM0IzMUJFOH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJe0M4RjZDMTcyLTU2
RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxl
YXNlfFdpbjMyCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LlJlbGVh
c2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1C
NUZBLUMzQjQyM0IzMUJFOH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJ
e0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uUmVsZWFzZXx4NjQuQnVpbGQu
MCA9IFJlbGVhc2V8eDY0CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9
LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQz
MzItOTE0Ny1GNjhFRDk4NjIwMzN9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgor
CQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5EZWJ1Z3x4NjQuQWN0aXZl
Q2ZnID0gRGVidWd8eDY0CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9
LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0
Ny1GNjhFRDk4NjIwMzN9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgor
CQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5SZWxlYXNlfFdpbjMyLkJ1
aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4
NjIwMzN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXszQUY1NEM4QS0x
MEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNl
fHg2NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5EZWJ1Z3xXaW4z
Mi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0
RDQ5QkMzRUNCfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezI0ODQ4NTUx
LUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVn
fHg2NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5EZWJ1Z3x4NjQu
QnVpbGQuMCA9IERlYnVnfHg2NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMz
RUNCfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezI0ODQ4NTUx
LUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVs
ZWFzZXxXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5SZWxl
YXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlB
OUQtRUE0RDQ5QkMzRUNCfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezRE
OUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uRGVidWd8V2luMzIuQWN0aXZlQ2Zn
ID0gRGVidWd8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0u
RGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzkt
ODIzQy1GNEVFMEVENDgxQTJ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezRE
OUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBE
ZWJ1Z3x4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uUmVsZWFz
ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzkt
ODIzQy1GNEVFMEVENDgxQTJ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIK
KwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uUmVsZWFzZXx4NjQuQWN0
aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0
ODFBMn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJRW5kR2xvYmFsU2VjdGlv
bgorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uCisJCUhp
ZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQorCUVuZEdsb2JhbFNlY3Rpb24KK0VuZEdsb2JhbApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1kLnZjeHBy
b2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QtbWQudmN4cHJvagpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xNmE2ZmYxMmY3YjU3OTAxNWFiYjE0MTU4MGUyZjJkNGZkYTZmOWMzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1k
LnZjeHByb2oKQEAgLTAsMCArMSwxNDkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rp
bmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lv
bj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNi
dWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4K
KyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAg
PENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2lu
MzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RD
b25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5E
ZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAg
IDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmln
dXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0
Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFz
ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAg
ICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+
CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAg
PFByb2plY3RHdWlkPntDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9PC9Qcm9q
ZWN0R3VpZD4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlH
cm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAu
RGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRp
b24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9u
VHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQ
bGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+
CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3Vy
YXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0
ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAw
PC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
IExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGli
cmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0No
YXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4K
KyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9u
Ij4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5
cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxh
dGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIg
Lz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0
R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJ
bXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51
c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNw
cC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIg
Lz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVl
dHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4k
KFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilc
TWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERh
dGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0i
UHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWlj
cm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChV
c2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVs
PSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0
JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJl
eGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+Cisg
IDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4K
KyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNp
b24+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9y
bSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE91dERpcikkKFBy
b2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1
dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPElu
dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
V2luMzInIj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdy
b3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0
aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50
RGlyPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0
ZXN0ZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+
CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0k
KENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpJChQcm9qZWN0
TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3Q8L1RhcmdldE5hbWU+CisgIDwv
UHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0
ZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4K
KyAgICA8VGFyZ2V0TmFtZT5ndGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6
YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWls
ZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxl
RmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11
bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5M
ZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRB
bmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGls
ZT4KKyAgICA8TGliIC8+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0
aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwv
T3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJ
QURJQ19NQVg9MTA7X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0
Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlU
aHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
cj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVs
MzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURh
dGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgor
ICAgIDxMaWIgLz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25H
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25z
PldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11
bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVy
PgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwz
PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0
YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+Cisg
ICAgPExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4
NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJ
TjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRp
VGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgor
ICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9X
YXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJh
c2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAg
PExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3QtYWxsLmNjIj4KKyAgICAgIDxBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRp
b25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENv
bXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0
aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVu
c2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMv
MjAxMC9ndGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9t
c3ZjLzIwMTAvZ3Rlc3QtbWQudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZWRlZmYyMzA2
ZTFmYWM5M2U3N2M1NTNmMDU2YjcwZmQyYTY4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QtbWQudmN4cHJvai5maWx0ZXJzCkBAIC0w
LDAgKzEsMTggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8
UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29m
dC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRl
ciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzcz
N0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAg
ICA8RXh0ZW5zaW9ucz5jcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0
ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxl
cyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1
RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4
eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3Jv
dXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rl
c3QtYWxsLmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9n
dGVzdC5zbG4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3Quc2xuCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNhY2Q1YzBjZTZiOTMyODZiYTUyNzBmODMxMWY3ZDY0OTIxZTAyZTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3Quc2xu
CkBAIC0wLDAgKzEsNTUgQEAKK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUs
IEZvcm1hdCBWZXJzaW9uIDExLjAwCisjIFZpc3VhbCBDKysgRXhwcmVzcyAyMDEwCitQcm9qZWN0
KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0IiwgImd0
ZXN0LnZjeHByb2oiLCAie0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30iCitF
bmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQy
fSIpID0gImd0ZXN0X21haW4iLCAiZ3Rlc3RfbWFpbi52Y3hwcm9qIiwgInszQUY1NEM4QS0xMEJG
LTQzMzItOTE0Ny1GNjhFRDk4NjIwMzJ9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4
LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdF91bml0dGVzdCIsICJndGVz
dF91bml0dGVzdC52Y3hwcm9qIiwgIns0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgx
QTF9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBD
OTFCQzk0Mn0iKSA9ICJndGVzdF9wcm9kX3Rlc3QiLCAiZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2oi
LCAiezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQX0iCitFbmRQcm9qZWN0CitH
bG9iYWwKKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBw
cmVTb2x1dGlvbgorCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyCisJCURlYnVnfHg2NCA9IERl
YnVnfHg2NAorCQlSZWxlYXNlfFdpbjMyID0gUmVsZWFzZXxXaW4zMgorCQlSZWxlYXNlfHg2NCA9
IFJlbGVhc2V8eDY0CisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oUHJvamVjdENv
bmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uCisJCXtDOEY2QzE3Mi01NkYyLTRF
NzYtQjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMy
CisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnfFdpbjMyLkJ1
aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMx
QkU3fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXtDOEY2QzE3Mi01NkYyLTRF
NzYtQjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtD
OEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LlJlbGVhc2V8V2luMzIuQWN0aXZl
Q2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMx
QkU3fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtDOEY2QzE3Mi01
NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVh
c2V8eDY0CisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LlJlbGVhc2V8
eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4
RUQ5ODYyMDMyfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7M0FGNTRD
OEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVi
dWd8V2luMzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uRGVidWd8
eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4
RUQ5ODYyMDMyfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7M0FGNTRDOEEtMTBC
Ri00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVh
c2V8V2luMzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uUmVsZWFz
ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkx
NDctRjY4RUQ5ODYyMDMyfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7
M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5SZWxlYXNlfHg2NC5CdWlsZC4w
ID0gUmVsZWFzZXx4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0u
RGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEz
OS04MjNDLUY0RUUwRUQ0ODFBMX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJ
CXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9LkRlYnVnfHg2NC5BY3RpdmVD
ZmcgPSBEZWJ1Z3x4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0u
RGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjND
LUY0RUUwRUQ0ODFBMX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJ
CXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9LlJlbGVhc2V8V2luMzIuQnVp
bGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0
ODFBMX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezREOUZERkI1LTk4
NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8
eDY0CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LkRlYnVnfFdpbjMy
LkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRE
NDlCQzNFQ0F9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7MjQ4NDg1NTEt
RUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8
eDY0CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LkRlYnVnfHg2NC5C
dWlsZC4wID0gRGVidWd8eDY0CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNF
Q0F9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7MjQ4NDg1NTEt
RUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxl
YXNlfFdpbjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LlJlbGVh
c2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5
RC1FQTRENDlCQzNFQ0F9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCUVuZEds
b2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1
dGlvbgorCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UKKwlFbmRHbG9iYWxTZWN0aW9uCitFbmRH
bG9iYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVz
dC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LnZjeHBy
b2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTQ2ZjVjN2FmMjQ1MzhkMzk4YzM2MjZjOGVjY2U5MTQ4Yzk2ZjAxZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVz
dC52Y3hwcm9qCkBAIC0wLDAgKzEsMTQ5IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNp
b249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21z
YnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+
CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAg
IDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldp
bjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0
Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+
RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAg
ICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNs
dWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZp
Z3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVj
dENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVh
c2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Cisg
ICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9u
PgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAg
IDxQcm9qZWN0R3VpZD57QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fTwvUHJv
amVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5
R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3Bw
LkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0
aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlv
blR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8
UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3Vw
PgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1
cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFj
dGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEw
MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
IiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xp
YnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9D
aGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+
CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlv
biI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25U
eXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBs
YXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4K
KyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMi
IC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9y
dEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8
SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0i
IC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hl
ZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBE
YXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9
IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJl
bD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2
NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJS
b290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0i
ZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJv
cHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgor
ICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+
CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJz
aW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZv
cm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpdGVt
cFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIp
JChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Cisg
ICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICA8
L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9u
RGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGly
PgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAg
ICA8VGFyZ2V0TmFtZT5ndGVzdGQ8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFt
ZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQo
T3V0RGlyKXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWU+Z3Rl
c3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgor
ICAgIDxUYXJnZXROYW1lPmd0ZXN0ZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdDwvVGFyZ2V0TmFtZT4K
KyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29t
cGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAg
IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztf
TElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4K
KyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNp
Y1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAg
ICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+Cisg
ICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAg
ICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9y
bWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAg
ICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGliIC8+CisgIDwvSXRlbURlZmluaXRpb25Hcm91
cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGlt
aXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmlu
aXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEJhc2ljUnVudGlt
ZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVu
dGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQ
cmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2Fy
bmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25G
b3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAg
IDwvQ2xDb21waWxlPgorICAgIDxMaWIgLz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8
SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nl
c3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1
bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNv
bXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5n
TGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1h
dD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9D
bENvbXBpbGU+CisgICAgPExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRl
ZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNz
b3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVM
aWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+
TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9n
cmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBp
bGU+CisgICAgPExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3QtYWxsLmNjIj4KKyAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAg
ICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAg
ICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Cisg
ICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNU
YXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFi
ZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L21zdmMvMjAxMC9ndGVzdC52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9tc3ZjLzIwMTAvZ3Rlc3QudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZWRlZmYy
MzA2ZTFmYWM5M2U3N2M1NTNmMDU2YjcwZmQyYTY4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QudmN4cHJvai5maWx0ZXJzCkBAIC0w
LDAgKzEsMTggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8
UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29m
dC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRl
ciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzcz
N0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAg
ICA8RXh0ZW5zaW9ucz5jcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0
ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxl
cyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1
RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4
eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3Jv
dXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rl
c3QtYWxsLmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9n
dGVzdF9tYWluLW1kLnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAv
Z3Rlc3RfbWFpbi1tZC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNzczODk1YjcwMjNkZTg0NzQwZDYy
YmJhNjNlYzkwMGY3NGM5MjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qCkBAIC0wLDAgKzEsMTU0IEBACivv
u788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVs
dFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFz
Lm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFi
ZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIElu
Y2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1
cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RD
b25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4
NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8
UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAg
IDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxD
b25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2lu
MzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RD
b25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9u
PlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4K
KyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5
R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57M0FGNTRDOEEtMTBCRi00
MzMyLTkxNDctRjY4RUQ5ODYyMDMzfTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQ
cm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChW
Q1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0
eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+
U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0
aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3Jt
VG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNv
bmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25m
aWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0
PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3Bl
cnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAg
PENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAg
IDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9v
bHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3Bl
cnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0
YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlC
eXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRv
b2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0
c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0
ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFi
ZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMo
JyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBM
YWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBv
cnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0
aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3Jv
dXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0
IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Cisg
IDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Cisg
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRm
b3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1h
Y3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAu
MC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25E
aXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+
CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPE91
dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZp
Z3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFt
ZSlcPC9JbnREaXI+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8
T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmln
dXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8
L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluZDwvVGFyZ2V0TmFtZT4KKyAgPC9Q
cm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9u
RGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGly
PgorICAgIDxJbnREaXI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRh
cmdldE5hbWU+Z3Rlc3RfbWFpbjwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8
UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfbWFpbmQ8L1RhcmdldE5hbWU+
CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPFRhcmdldE5h
bWU+Z3Rlc3RfbWFpbjwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURl
ZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlz
YWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4z
MjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMp
PC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9N
aW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNr
czwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFk
ZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Cisg
ICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dh
cm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51
ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
KTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8
TGliIC8+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4K
KyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0
aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9
MTA7X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRl
ZmluaXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9C
YXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERl
YnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAg
IDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2Fybmlu
Z0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9E
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWIg
Lz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4K
KyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19W
QVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1By
ZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFk
ZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAg
PC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5n
TGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0Rl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAv
PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAg
ICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJ
QURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRE
TEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9Q
cmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2
ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4u
LlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgor
ICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3RfbWFpbi5jYyI+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgor
ICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNs
dWRlPSJndGVzdC1tZC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjOGY2YzE3Mi01NmYyLTRl
NzYtYjVmYS1jM2I0MjNiMzFiZTh9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4K
KyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNy
b3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFy
Z2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0
ZXN0X21haW4tbWQudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2
Yy8yMDEwL2d0ZXN0X21haW4tbWQudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyNmM3NzNj
Y2IxNzc2YTU4ZDZmNGZkNjVhMTZjYjUwZjQyMmQxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qLmZpbHRl
cnMKQEAgLTAsMCArMSwxOCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRm
LTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMu
bWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAg
ICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmll
cj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmll
cj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTth
c214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVh
ZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQt
ODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+
aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8
L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4u
XHNyY1xndGVzdF9tYWluLmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+
CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21z
dmMvMjAxMC9ndGVzdF9tYWluLnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3Zj
LzIwMTAvZ3Rlc3RfbWFpbi52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmYjI1ODk3YzhiMWMyZGJiM2Nm
NmMxM2U5YjQxOTNmYzlhZTA1MGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi52Y3hwcm9qCkBAIC0wLDAgKzEsMTYyIEBACivv
u788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVs
dFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFz
Lm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFi
ZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIElu
Y2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1
cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RD
b25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4
NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8
UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAg
IDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxD
b25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2lu
MzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RD
b25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9u
PlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4K
KyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5
R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57M0FGNTRDOEEtMTBCRi00
MzMyLTkxNDctRjY4RUQ5ODYyMDMyfTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQ
cm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChW
Q1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0
eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+
U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0
aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3Jt
VG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNv
bmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25m
aWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0
PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3Bl
cnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAg
PENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAg
IDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9v
bHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3Bl
cnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0
YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlC
eXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRv
b2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0
c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0
ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFi
ZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMo
JyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBM
YWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBv
cnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0
aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3Jv
dXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0
IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Cisg
IDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Cisg
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRm
b3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1h
Y3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAu
MC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25E
aXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+
CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAg
ICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQo
Q29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE91dERpcil0ZW1wXCQo
UHJvamVjdE5hbWUpXDwvSW50RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0
JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3Jt
KS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwk
KFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluZDwvVGFy
Z2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE91
dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3Vy
YXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1l
KVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluPC9UYXJnZXROYW1lPgorICA8
L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVz
dF9tYWluZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluPC9UYXJnZXROYW1lPgorICA8L1Byb3Bl
cnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAg
ICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nl
c3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19MSUI7JShQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1p
bmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNo
ZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGlt
ZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVj
b21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2Fybmlu
Z0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3Jt
YXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwv
Q2xDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2pl
Y3ROYW1lKWQubGliPC9PdXRwdXRGaWxlPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9u
R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxP
cHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxCYXNpY1J1
bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAg
PFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+CisgICAg
ICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAg
PFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0
aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4K
KyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIp
JChQcm9qZWN0TmFtZSlkLmxpYjwvT3V0cHV0RmlsZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVm
aW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxl
PgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7
TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmlu
aXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJy
YXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRl
cj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVi
dWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3Jt
YXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4u
XC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxl
PiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLmxpYjwvT3V0cHV0RmlsZT4KKyAgICA8L0xpYj4KKyAg
PC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPENs
Q29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNf
TUFYPTEwO05ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50
aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGls
ZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAg
ICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0
aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5j
bHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0
cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKS5saWI8L091dHB1dEZpbGU+CisgICAgPC9M
aWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xndGVzdF9tYWluLmNjIj4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25h
bEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBp
bGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNl
IEluY2x1ZGU9Imd0ZXN0LnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2M4ZjZjMTcyLTU2ZjIt
NGU3Ni1iNWZhLWMzYjQyM2IzMWJlN308L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNl
PgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1p
Y3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25U
YXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAv
Z3Rlc3RfbWFpbi52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3Zj
LzIwMTAvZ3Rlc3RfbWFpbi52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI2Yzc3M2NjYjE3
NzZhNThkNmY0ZmQ2NWExNmNiNTBmNDIyZDE1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9tYWluLnZjeHByb2ouZmlsdGVycwpAQCAt
MCwwICsxLDE4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pgor
PFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3Nv
ZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0
ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3
MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAg
ICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4
dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmls
ZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYy
NUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDto
eHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdy
b3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXGd0
ZXN0X21haW4uY2MiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8
L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEw
L2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2
Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzMGU1ZGNlNDEw
NjIzYzE1YjY4ZmVhNzE4ZWQ5NGM0NTdmMDcwZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjeHByb2oKQEAg
LTAsMCArMSwxOTkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+
Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxu
cz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4K
KyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVj
dENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRp
b24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3Jt
PgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9u
IEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmln
dXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENv
bmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8
V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAg
ICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlv
bj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAg
ICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9y
bT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdy
b3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlk
PnsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0J9PC9Qcm9qZWN0R3VpZD4KKyAg
ICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPElt
cG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9w
cyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxD
b25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENo
YXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0
PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBs
aWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8
L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNl
dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3Vy
YXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlv
blR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8
UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3Vw
PgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJh
dGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJT
ZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9Q
bGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIk
KFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBM
YWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9u
PSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+
CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwv
SW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAg
ICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29m
dC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZv
cm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNo
ZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3Bw
LiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBw
RGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJl
bD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZl
cnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQo
U29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilc
PC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+
CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5r
SW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3x4NjQnIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPE91dERpciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0
aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0
RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+Cisg
ICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5r
SW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgIDwvUHJvcGVydHlHcm91cD4K
KyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5h
bWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4k
KE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9w
cm9kX3Rlc3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2
NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9y
bSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKSQoUHJv
amVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X3Byb2RfdGVzdDwvVGFy
Z2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPFRh
cmdldE5hbWU+Z3Rlc3RfcHJvZF90ZXN0PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+
CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X3Byb2RfdGVzdDwv
VGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+
CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXph
dGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFY
PTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVp
bGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVu
dGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8
L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGls
ZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAg
ICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0
aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5j
bHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdl
bmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Cisg
ICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF9wcm9kX3Rlc3QucGRiPC9Q
cm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+
CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwv
TGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgor
ICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRp
b24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0x
MDtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tz
PC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRl
ZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8
L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdM
ZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVi
dWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
Pi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4K
KyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9y
bWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChPdXREaXIpZ3Rlc3RfcHJvZF90
ZXN0LnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwv
U3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRl
bURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19DT05TT0xFOyUoUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxS
dW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQ
cmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdM
ZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0
PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0Ns
Q29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1
ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9T
dWJTeXN0ZW0+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJl
bmNlcz4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRp
bmc+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAg
IDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0
JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4z
MjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRp
b25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVs
dGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+
VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJu
aW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8
L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExp
bms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJ
bmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAg
PE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8RW5h
YmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgIDwvTGluaz4K
KyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cLi5cdGVzdFxndGVzdF9wcm9kX3Rlc3QuY2MiPgorICAgICAgPEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGls
ZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8QWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25h
bEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21w
aWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgIDwvQ2xDb21waWxl
PgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxwcm9kdWN0aW9uLmNjIj4KKyAg
ICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Cisg
ICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAg
ICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAg
ICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAg
ICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAg
ICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Cisg
ICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAg
ICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24uaCIgLz4KKyAgPC9JdGVtR3JvdXA+
CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iZ3Rlc3RfbWFp
bi1tZC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnszYWY1NGM4YS0xMGJmLTQzMzItOTE0Ny1m
NjhlZDk4NjIwMzN9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVt
R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3Bw
LnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+Cisg
IDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2Rf
dGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIw
MTAvZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzM2NzMx
MGFlZTYyNmY0ZWM5YzFkZmZkYTczM2E1MGYyYTVjNWVjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9q
LmZpbHRlcnMKQEAgLTAsMCArMSwyNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3Nj
aGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91
cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRl
bnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRl
bnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0
O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVk
ZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJE
LTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVu
c2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVy
PgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXC4uXHRlc3RcZ3Rlc3RfcHJvZF90ZXN0LmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZp
bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlwuLlx0ZXN0XHByb2R1Y3Rpb24uY2MiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0Zp
bHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24uaCI+CisgICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1H
cm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHBy
b2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZj
eHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDQyZTEzNTExZGYyOGE1MzIyMjQyMDU3ZTc1NDFmOTY1NjcwZGRh
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9n
dGVzdF9wcm9kX3Rlc3QudmN4cHJvagpAQCAtMCwwICsxLDE5MSBAQAor77u/PD94bWwgdmVyc2lv
bj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWls
ZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29t
L2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29u
ZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xX
aW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAg
IDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4K
KyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxD
b25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwv
UGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZp
Z3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5S
ZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4K
KyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJ
bmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25m
aWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0
Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJH
bG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0
OUJDM0VDQX08L1Byb2plY3RHdWlkPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4K
KyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClc
TWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJl
bD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9D
b25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVy
U2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Cisg
ICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAg
ICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRv
b2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9w
ZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBl
PkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRp
Qnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1U
b29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZp
Z3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJh
dGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAg
ICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdy
b3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5w
cm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwv
SW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgor
ICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9z
b2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0
Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVy
dHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0
LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9v
dERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2Nh
bEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBM
YWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0
cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJyki
IExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPElt
cG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0
aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3Jv
dXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlH
cm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0Rmls
ZVZlcnNpb24+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQ
bGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE91dERp
cil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRy
dWU8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvTGlua0luY3Jl
bWVudGFsPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQ
bGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoT3V0
RGlyKXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmZhbHNlPC9M
aW5rSW5jcmVtZW50YWw+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAg
ICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29u
ZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERpcil0ZW1wXCQoUHJvamVj
dE5hbWUpXDwvSW50RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4K
KyAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQo
Q29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERpcil0ZW1wXCQoUHJv
amVjdE5hbWUpXDwvSW50RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlv
bkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwv
T3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJ
QURJQ19NQVg9MTA7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9Q
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5p
bWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwv
QmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRE
ZWJ1ZzwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVj
b21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+
CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5m
b3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwu
LlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAg
ICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlv
bj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKWd0ZXN0X3Byb2RfdGVzdC5w
ZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5
c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+Cisg
ICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0
JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGlt
aXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNf
TUFYPTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RD
aGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRo
cmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVz
ZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2Fybmlu
Z0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9E
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5r
PgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5m
b3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF9wcm9k
X3Rlc3QucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xl
PC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJ
dGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAg
PFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFBy
ZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xl
dmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xD
b21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVl
PC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1
YlN5c3RlbT4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVu
Y2VzPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGlu
Zz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAg
PC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQn
Ij4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMy
O19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0
aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8
L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdM
ZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVi
dWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
Pi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4K
KyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9y
bWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8T3B0
aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxFbmFibGVD
T01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgPC9MaW5rPgorICA8
L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlwuLlx0ZXN0XGd0ZXN0X3Byb2RfdGVzdC5jYyI+CisgICAgICA8QWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhl
YWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2
NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fFdpbjMyJyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXx4NjQnIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24uY2MiPgorICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8
UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAg
IDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgIDwv
Q2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXC4uXHRlc3RccHJvZHVjdGlvbi5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAg
PEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJndGVzdF9tYWluLnZj
eHByb2oiPgorICAgICAgPFByb2plY3Q+ezNhZjU0YzhhLTEwYmYtNDMzMi05MTQ3LWY2OGVkOTg2
MjAzMn08L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4K
KyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0
cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBv
cnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZj
eHByb2ouZmlsdGVycyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9w
cm9kX3Rlc3QudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjMzY3MzEwYWVlNjI2ZjRlYzlj
MWRmZmRhNzMzYTUwZjJhNWM1ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2ouZmlsdGVycwpAQCAtMCww
ICsxLDI2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFBy
b2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQu
Y29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIg
SW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdG
MS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAg
PEV4dGVuc2lvbnM+Y3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVu
c2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMi
PgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZC
RTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7
aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3Vw
PgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxndGVz
dF9wcm9kX3Rlc3QuY2MiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAg
ICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RccHJvZHVj
dGlvbi5jYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xD
b21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXC4uXHRlc3RccHJvZHVjdGlvbi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC1tZC52Y3hwcm9qIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjeHByb2oKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTNiMGRjNGUxYTRlMDNhZThkNjNlZmYzNmM2N2JmZTgyMzY1ZjE4OAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVz
dC1tZC52Y3hwcm9qCkBAIC0wLDAgKzEsMTg4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1Zl
cnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVy
L21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9u
cyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAg
ICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3Jt
PldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9q
ZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRp
b24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4K
KyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJ
bmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0Nv
bmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJv
amVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJl
bGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+
CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0
aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgor
ICAgIDxQcm9qZWN0R3VpZD57NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfTwv
UHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3Bl
cnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQu
Q3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1
cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRp
b25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAg
PFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91
cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmln
dXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0
ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAw
PC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
IExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRp
b248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFy
YWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+Cisg
IDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+
CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4K
KyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9y
bVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJ
bXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgor
ICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91
cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9y
dCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIu
cHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQo
UGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgor
ICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+
CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxh
dGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNy
b3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBs
YXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9w
ZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJS
b290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9Ikxv
Y2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBM
YWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0
cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJyki
IExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFBy
b3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAg
IDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4K
KyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0k
KENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVj
dE5hbWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0xpbmtJbmNyZW1l
bnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxP
dXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25m
aWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5h
bWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1l
bnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICA8
L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9u
RGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGly
PgorICAgIDxJbnREaXI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRh
cmdldE5hbWU+Z3Rlc3RfdW5pdHRlc3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4K
KyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9u
TmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGly
PiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0
X3VuaXR0ZXN0PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2lu
MzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF91bml0dGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Q
cm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVz
dF91bml0dGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmlu
aXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJs
ZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtf
VkFSSUFESUNfTUFYPTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25z
KTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwv
TWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVj
a3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVh
ZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVz
ZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2Fybmlu
Z0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9E
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5r
PgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5m
b3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF91bml0
dGVzdC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8
L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hp
bmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5p
dGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8
L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFS
SUFESUNfTUFYPTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwv
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJs
ZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5N
dWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVs
MzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURh
dGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgor
ICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0
ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpciln
dGVzdF91bml0dGVzdC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVt
PkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91
cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztfQ09O
U09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+
CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+
CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAg
IDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1h
dGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAg
ICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9y
bWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+
Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRp
bWl6ZVJlZmVyZW5jZXM+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVD
T01EQVRGb2xkaW5nPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFj
aGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZp
bml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNz
b3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVM
aWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxl
dmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3Jh
bURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxl
PgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5l
cmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3Rl
bT4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgor
ICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAg
ICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2MiPgorICAgICAg
PE9wdGltaXphdGlvbiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+TWluU3BhY2U8L09wdGltaXphdGlvbj4KKyAgICAgIDxPcHRpbWl6YXRp
b24gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQn
Ij5NaW5TcGFjZTwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+RGVm
YXVsdDwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkRlZmF1
bHQ8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAg
ICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgICA8
L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPlByb2dy
YW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0
aW9uRm9ybWF0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAg
ICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAg
ICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Cisg
ICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAg
ICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2pl
Y3RSZWZlcmVuY2UgSW5jbHVkZT0iZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qIj4KKyAgICAgIDxQcm9q
ZWN0PnszYWY1NGM4YS0xMGJmLTQzMzItOTE0Ny1mNjhlZDk4NjIwMzN9PC9Qcm9qZWN0PgorICAg
IDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0i
JChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91
cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjeHByb2ouZmlsdGVycyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC1tZC52Y3hwcm9q
LmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ3ZGFlNTEzZTg2MDE1M2E1Y2VjMmY0NWI0OGNkYmM3NWY5
YjZjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAx
MC9ndGVzdF91bml0dGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxOCBAQAor77u/
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVy
c2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIv
bXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJj
ZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEw
NjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNw
cDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwv
RmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlx
dWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9Vbmlx
dWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNk
PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91
cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2Mi
PgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4K
KyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0
ZXN0LnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfdW5p
dHRlc3QudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzZhYmRlN2RhMTdlMjllZDI0NzZmNzBjNjk0MTVh
ZTk2OGYyMWYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2
Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0LnZjeHByb2oKQEAgLTAsMCArMSwxODAgQEAKK++7vzw/eG1s
IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0
cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9z
b2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJv
amVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0i
RGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+
CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3Vy
YXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+Cisg
ICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9y
bT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2pl
Y3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3Vy
YXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxh
dGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3Vy
YXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFz
ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwv
UHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBM
YWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPns0RDlGREZCNS05ODZBLTQxMzktODIz
Qy1GNEVFMEVENDgxQTF9PC9Qcm9qZWN0R3VpZD4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tl
eXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0
c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMy
JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNh
dGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0No
YXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4K
KyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRp
b24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5
cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxh
dGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0
aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNl
dD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1Bs
YXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVs
PSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0Nv
bmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJT
ZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJv
cGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29m
dC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3Mi
PgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hl
ZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBE
YXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9
IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJl
bD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdp
bjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9u
PSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+
CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9q
ZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMi
IENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0lt
cG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFBy
b3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJv
amVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5h
bWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+
JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVu
dGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2lu
MzInIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0xp
bmtJbmNyZW1lbnRhbD4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5h
bWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVt
ZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5m
YWxzZTwvTGlua0luY3JlbWVudGFsPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0
JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3Jt
KS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwk
KFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRm
b3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVt
cFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURl
ZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlz
YWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4z
MjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRp
b25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1
ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RD
aGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRo
cmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVz
ZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2Fybmlu
Z0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9E
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5r
PgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5m
b3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF91bml0
dGVzdC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8
L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hp
bmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5p
dGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8
L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFS
SUFESUNfTUFYPTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwv
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJs
ZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5N
dWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVh
ZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwv
V2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFi
YXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAg
IDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURl
YnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVz
dF91bml0dGVzdC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNv
bnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4K
KyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztfQ09OU09M
RTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Cisg
ICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAg
ICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJu
aW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZv
cm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAg
PC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9u
PnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29s
ZTwvU3ViU3lzdGVtPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJl
ZmVyZW5jZXM+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRG
b2xkaW5nPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4K
KyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9u
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+
V0lOMzI7X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5
Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVy
PlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2Fy
bmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNl
PC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxM
aW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVn
SW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAg
IDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPEVu
YWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICA8L0xpbms+
CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2MiPgorICAgICAgPE9wdGltaXph
dGlvbiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdp
bjMyJyI+TWluU3BhY2U8L09wdGltaXphdGlvbj4KKyAgICAgIDxPcHRpbWl6YXRpb24gQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5NaW5TcGFj
ZTwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4u
Oy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Li47
Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+RGVmYXVsdDwvQmFz
aWNSdW50aW1lQ2hlY2tzPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkRlZmF1bHQ8L0Jhc2lj
UnVudGltZUNoZWNrcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgICA8L1ByZWNv
bXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgICA8L1ByZWNvbXBp
bGVkSGVhZGVyPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPlByb2dyYW1EYXRhYmFz
ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVj
b21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJl
Y29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfHg2NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8L0NsQ29t
cGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVu
Y2UgSW5jbHVkZT0iZ3Rlc3RfbWFpbi52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnszYWY1NGM4
YS0xMGJmLTQzMzItOTE0Ny1mNjhlZDk4NjIwMzJ9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJl
ZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQ
YXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0
ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2
Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0LnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDQ3ZGFlNTEzZTg2MDE1M2E1Y2VjMmY0NWI0OGNkYmM3NWY5YjZjZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC52
Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxOCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0
cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0
ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5p
cXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5p
cXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDto
cGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIg
SW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4
MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAg
PEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwv
RmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2MiPgorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1By
b2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3hwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxMDA3OGU0YWFiNjkxNzEyYTEwM2MyZWI2M2VlN2RhYzFlZjQ5OWJlLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L21zdmMvZ3Rlc3QtbWQudmN4cHJvagorKysgL2Rldi9udWxsCkBAIC0xLDM2MCArMCwwIEBACi3v
u788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVs
dFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjE0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1h
cy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SXRlbUdyb3VwIExh
YmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJ
bmNsdWRlPSJEZWJ1Z1N1ZmZpeHxXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Z1N1
ZmZpeDwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0g
ICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5j
bHVkZT0iRGVidWdTdWZmaXh8eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnU3VmZml4
PC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Q
cm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0i
RGVidWdfV2luQ2Fpcm98V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWdfV2luQ2Fp
cm88L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAg
IDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IkRlYnVnX1dpbkNhaXJvfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Z19XaW5D
YWlybzwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAg
IDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IkRlYnVnfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0
aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25m
aWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQi
PgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxh
dGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQcm9kdWN0aW9ufFdpbjMyIj4KLSAgICAgIDxD
b25maWd1cmF0aW9uPlByb2R1Y3Rpb248L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+
V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2pl
Y3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlByb2R1Y3Rpb258eDY0Ij4KLSAgICAgIDxDb25maWd1
cmF0aW9uPlByb2R1Y3Rpb248L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9Q
bGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmln
dXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlX1dpbkNhaXJvfFdpbjMyIj4KLSAgICAgIDxDb25maWd1
cmF0aW9uPlJlbGVhc2VfV2luQ2Fpcm88L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+
V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2pl
Y3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2VfV2luQ2Fpcm98eDY0Ij4KLSAgICAgIDxD
b25maWd1cmF0aW9uPlJlbGVhc2VfV2luQ2Fpcm88L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxh
dGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KLSAgICAgIDxDb25m
aWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8
L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25m
aWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJl
bGVhc2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAg
ICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICA8L0l0ZW1Hcm91cD4KLSAgPFByb3BlcnR5R3Jv
dXAgTGFiZWw9Ikdsb2JhbHMiPgotICAgIDxQcm9qZWN0R3VpZD57QzhGNkMxNzItNTZGMi00RTc2
LUI1RkEtQzNCNDIzQjMxQkU4fTwvUHJvamVjdEd1aWQ+Ci0gICAgPFJvb3ROYW1lc3BhY2U+Z3Rl
c3QtbWQ8L1Jvb3ROYW1lc3BhY2U+Ci0gICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgot
ICAgIDxXaW5kb3dzVGFyZ2V0UGxhdGZvcm1WZXJzaW9uPjguMTwvV2luZG93c1RhcmdldFBsYXRm
b3JtVmVyc2lvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNU
YXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0
YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlC
eXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRv
b2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25m
aWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmln
dXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4K
LSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0
eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlv
biI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25U
eXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBs
YXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4K
LSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8
Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAg
PENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29s
c2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVy
dHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1
Y3Rpb258V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25U
eXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+
TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0
Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciIExh
YmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFy
eTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJh
Y3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAg
PC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24i
PgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlw
ZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0
Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0g
IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9u
VHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0
Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxh
dGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2lu
MzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRp
Y0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRl
PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xz
ZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIiBMYWJlbD0i
Q29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0Nv
bmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJT
ZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJv
cGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9u
Ij4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5
cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxh
dGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgot
ICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnU3VmZml4fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmln
dXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJh
Y3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYx
NDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KLSAgPEltcG9ydEdy
b3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBv
cnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0i
JChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25k
aXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51
c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0
IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMi
IC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hl
ZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBE
YXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMp
XHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1w
b3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlX1dpbkNhaXJvfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0
IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0g
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29t
bW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCci
IExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhp
c3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMn
KSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0i
JChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9J
bXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+
Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxh
dGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNy
b3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBs
YXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29s
c1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlv
bnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChV
c2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRp
b249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2Vy
LnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+
Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRz
Ij4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRh
UGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRv
b2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249
ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnBy
b3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2pl
Y3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0g
IDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5
U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxB
cHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJp
ZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8
SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z19XaW5DYWlyb3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQg
UHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnBy
b3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBs
YXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAg
ICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21t
b24ucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyIgTGFi
ZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMo
JyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBM
YWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdl
YktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICAgIDxJbXBv
cnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGRlYnVnc3VmZml4
LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIiBMYWJlbD0i
UHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWlj
cm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChV
c2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVs
PSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0
X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQ
cm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcZGVidWdzdWZmaXgucHJv
cHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFj
cm9zIiAvPgotICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4w
LjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPE91dERpciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxP
dXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
PC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQn
Ij4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9P
dXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj4kKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0g
ICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdp
bjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMici
PiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091
dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnx4NjQnIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Z3Rlc3QkKERl
YnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Z3Rlc3QkKERlYnVnU3Vm
Zml4KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj5ndGVzdCQoRGVi
dWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj5ndGVzdCQo
RGVidWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPmd0ZXN0JChE
ZWJ1Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPmd0ZXN0JChEZWJ1
Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPmd0ZXN0JChEZWJ1Z1N1ZmZp
eCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJn
ZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9U
YXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwv
VGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwv
VGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1Rh
cmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgot
ICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRp
b24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47
JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVc
V2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVk
ZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNj
cmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxQ
cmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8QmFz
aWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAg
ICA8L0NsQ29tcGlsZT4KLSAgICA8TGliPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpZ3Rl
c3QkKERlYnVnU3VmZml4KS5saWI8L091dHB1dEZpbGU+Ci0gICAgPC9MaWI+Ci0gIDwvSXRlbURl
ZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8Q2xDb21waWxlPgot
ICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJ
bmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0g
ICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRp
b25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+
Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5F
bmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0g
ICAgPExpYj4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKWd0ZXN0JChEZWJ1Z1N1ZmZpeCku
bGliPC9PdXRwdXRGaWxlPgotICAgIDwvTGliPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0g
IDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAg
PE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRl
OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwv
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJl
YWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAg
ICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVG
YXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExp
Yj4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKWd0ZXN0LmxpYjwvT3V0cHV0RmlsZT4KLSAg
ICA8L0xpYj4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNh
aXJvfHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVk
PC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFBy
b2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHBy
aXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFy
eT4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+
Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGlt
ZUNoZWNrcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliPgotICAgICAgPE91dHB1dEZpbGU+
JChPdXREaXIpZ3Rlc3QubGliPC9PdXRwdXRGaWxlPgotICAgIDwvTGliPgotICA8L0l0ZW1EZWZp
bml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj4KLSAgICA8Q2xDb21w
aWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERp
cikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9y
d2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTsk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUo
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRl
ZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UHJlY29tcGlsZWRI
ZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNo
ZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBp
bGU+Ci0gICAgPExpYj4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKWd0ZXN0JChEZWJ1Z1N1
ZmZpeCkubGliPC9PdXRwdXRGaWxlPgotICAgIDwvTGliPgotICA8L0l0ZW1EZWZpbml0aW9uR3Jv
dXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAg
IDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVk
ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAg
PFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8
L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAg
ICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxl
RmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxM
aWI+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilndGVzdCQoRGVidWdTdWZmaXgpLmxpYjwv
T3V0cHV0RmlsZT4KLSAgICA8L0xpYj4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRl
bURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRl
OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8
UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1By
ZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAg
PC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPENs
Q29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERp
cikuLjskKFByb2plY3REaXIpLi5cSW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5j
bHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxp
bmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxK
YXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9Q
cmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUo
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8
L0NsQ29tcGlsZT4KLSAgICA8TGliIC8+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0
ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIp
Li5cSW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChD
b25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
PgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4K
LSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8
TGliIC8+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNh
aXJvfHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVjb21waWxl
ZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8UHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYiAvPgotICA8L0l0ZW1EZWZp
bml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPgotICAgIDxDbENvbXBp
bGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47
JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVc
V2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVk
ZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNj
cmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29t
cGlsZWRIZWFkZXI+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXBy
b2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENv
bXBpbGU+Ci0gICAgPExpYiAvPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVm
aW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UHJvZHVjdGlvbnx4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJl
Y29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFByZXBy
b2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cc3JjXGd0ZXN0LWRlYXRoLXRlc3QuY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxzcmNcZ3Rlc3QtZmlsZXBhdGguY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxzcmNcZ3Rlc3QtcG9ydC5jYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xn
dGVzdC10ZXN0LXBhcnQuY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rl
c3QtdHlwZWQtdGVzdC5jYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVz
dC5jYyIgLz4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJu
YWwuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3Qt
ZGVhdGgtdGVzdC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVz
dFxpbnRlcm5hbFxndGVzdC1maWxlcGF0aC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cc3JjXGd0ZXN0LWludGVybmFsLWlubC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1pbnRlcm5hbC5oIiAvPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC1tZXNzYWdlLmgiIC8+Ci0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LXBvcnQu
aCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3Qtc3Bp
LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFs
XGd0ZXN0LXN0cmluZy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxn
dGVzdFxndGVzdC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVz
dFxndGVzdF9wcmVkX2ltcGwuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1
ZGVcZ3Rlc3RcZ3Rlc3RfcHJvZC5oIiAvPgotICA8L0l0ZW1Hcm91cD4KLSAgPEltcG9ydCBQcm9q
ZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KLSAgPEltcG9y
dEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KLSAgPC9JbXBvcnRHcm91cD4KLTwvUHJv
amVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQu
dmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52
Y3hwcm9qLmZpbHRlcnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzN2QxYzliNGRj
YTZhMTRlYzcwNmJjNGE4YzEzMWY2YjVjODM4MDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1t
ZC52Y3hwcm9qLmZpbHRlcnMKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi3vu788P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgVG9vbHNWZXJzaW9u
PSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1
aWxkLzIwMDMiPgotICA8SXRlbUdyb3VwPgotICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZp
bGVzIj4KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0y
QTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgotICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7
Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+Ci0gICAgPC9GaWx0
ZXI+Ci0gICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgotICAgICAgPFVuaXF1ZUlk
ZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlk
ZW50aWZpZXI+Ci0gICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4
dGVuc2lvbnM+Ci0gICAgPC9GaWx0ZXI+Ci0gIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgot
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LWRlYXRoLXRlc3QuY2MiPgotICAg
ICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC1maWxlcGF0aC5jYyI+Ci0gICAgICA8Rmls
dGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LXBvcnQuY2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2Ug
RmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHNyY1xndGVzdC10ZXN0LXBhcnQuY2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8
L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNy
Y1xndGVzdC10eXBlZC10ZXN0LmNjIj4KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0
ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rl
c3QuY2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29t
cGlsZT4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwu
aCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRl
PgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC1kZWF0aC10
ZXN0LmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5j
bHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxc
Z3Rlc3QtZmlsZXBhdGguaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgot
ICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LWlu
dGVybmFsLWlubC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAg
PC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGlu
dGVybmFsXGd0ZXN0LWludGVybmFsLmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0Zp
bHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1
ZGVcZ3Rlc3RcZ3Rlc3QtbWVzc2FnZS5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9G
aWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNs
dWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LXBvcnQuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caW5jbHVkZVxndGVzdFxndGVzdC1zcGkuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1zdHJpbmcuaCI+Ci0gICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxpbmNsdWRlXGd0ZXN0XGd0ZXN0X3ByZWRfaW1wbC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0X3Byb2QuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVj
dD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9ydW5fdGVzdHMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9ydW5fdGVz
dHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGUxMDg0MDU2ZTIzYmRkNWNmY2Y0
NGYwNjc2YzFkNjI4YWU2M2Q3NjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvcnVuX3Rlc3RzLnB5CisrKyAvZGV2
L251bGwKQEAgLTEsNjAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHly
aWdodCAyMDA4LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotIiIiUnVucyB0aGUgc3BlY2lmaWVkIHRlc3RzIGZvciBHb29nbGUgVGVzdC4KLQot
VGhpcyBzY3JpcHQgcmVxdWlyZXMgUHl0aG9uIDIuMyBvciBoaWdoZXIuICBUbyBsZWFybiB0aGUg
dXNhZ2UsIHJ1biBpdAotd2l0aCAtaC4KLSIiIgotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQot
U0NSSVBUX0RJUiA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3IgJy4nCi0KLXN5cy5wYXRo
LmFwcGVuZChvcy5wYXRoLmpvaW4oU0NSSVBUX0RJUiwgJ3Rlc3QnKSkKLWltcG9ydCBydW5fdGVz
dHNfdXRpbAotCi0KLWRlZiBfTWFpbigpOgotICAiIiJSdW5zIGFsbCB0ZXN0cyBmb3IgR29vZ2xl
IFRlc3QuIiIiCi0KLSAgb3B0aW9ucywgYXJncyA9IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygn
Z3Rlc3QnKQotICB0ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5uZXIoc2NyaXB0
X2Rpcj1TQ1JJUFRfRElSKQotICB0ZXN0cyA9IHRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oYXJn
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuY29uZmlndXJh
dGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmJ1aWx0
X2NvbmZpZ3VyYXRpb25zKQotICBpZiBub3QgdGVzdHM6Ci0gICAgc3lzLmV4aXQoMSkgICMgSW5j
b3JyZWN0IHBhcmFtZXRlcnMgZ2l2ZW4sIGFib3J0IGV4ZWN1dGlvbi4KLQotICBzeXMuZXhpdCh0
ZXN0X3J1bm5lci5SdW5UZXN0cyh0ZXN0c1swXSwgdGVzdHNbMV0pKQotCi1pZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgotICBfTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3ByaW1lX3RhYmxlcy5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ft
cGxlcy9wcmltZV90YWJsZXMuaAppbmRleCA5MmNlMTZhMDE0NGQ1MDJmZDBlNDViNzNmMzdkMzJi
YmVkZjFjM2YzLi41MjNjNTBiOWFmYjFhMDkxOTE2ODA5NGQ3MWZkZjM3NmI2NGFmNmIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3ByaW1lX3RhYmxlcy5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvcHJpbWVfdGFibGVzLmgKQEAgLTI2
LDkgKzI2LDggQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLyBBdXRo
b3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCisKKwogCiAvLyBUaGlzIHByb3ZpZGVz
IGludGVyZmFjZSBQcmltZVRhYmxlIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgbnVtYmVyIGlz
IGEKIC8vIHByaW1lIGFuZCBkZXRlcm1pbmVzIGEgbmV4dCBwcmltZSBudW1iZXIuIFRoaXMgaW50
ZXJmYWNlIGlzIHVzZWQKQEAgLTEwMywxMSArMTAyLDE1IEBAIGNsYXNzIFByZUNhbGN1bGF0ZWRQ
cmltZVRhYmxlIDogcHVibGljIFByaW1lVGFibGUgewogICAgIDo6c3RkOjpmaWxsKGlzX3ByaW1l
XywgaXNfcHJpbWVfICsgaXNfcHJpbWVfc2l6ZV8sIHRydWUpOwogICAgIGlzX3ByaW1lX1swXSA9
IGlzX3ByaW1lX1sxXSA9IGZhbHNlOwogCi0gICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gbWF4OyBp
KyspIHsKKyAgICAvLyBDaGVja3MgZXZlcnkgY2FuZGlkYXRlIGZvciBwcmltZSBudW1iZXIgKHdl
IGtub3cgdGhhdCAyIGlzIHRoZSBvbmx5IGV2ZW4KKyAgICAvLyBwcmltZSkuCisgICAgZm9yIChp
bnQgaSA9IDI7IGkqaSA8PSBtYXg7IGkgKz0gaSUyKzEpIHsKICAgICAgIGlmICghaXNfcHJpbWVf
W2ldKSBjb250aW51ZTsKIAogICAgICAgLy8gTWFya3MgYWxsIG11bHRpcGxlcyBvZiBpIChleGNl
cHQgaSBpdHNlbGYpIGFzIG5vbi1wcmltZS4KLSAgICAgIGZvciAoaW50IGogPSAyKmk7IGogPD0g
bWF4OyBqICs9IGkpIHsKKyAgICAgIC8vIFdlIGFyZSBzdGFydGluZyBoZXJlIGZyb20gaS10aCBt
dWx0aXBsaWVyLCBiZWNhdXNlIGFsbCBzbWFsbGVyCisgICAgICAvLyBjb21wbGV4IG51bWJlcnMg
d2VyZSBhbHJlYWR5IG1hcmtlZC4KKyAgICAgIGZvciAoaW50IGogPSBpKmk7IGogPD0gbWF4OyBq
ICs9IGkpIHsKICAgICAgICAgaXNfcHJpbWVfW2pdID0gZmFsc2U7CiAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmNjCmluZGV4IGYxNzFlMjYw
OWQyNTEzMjI4NDYyMWZiNjJjZjNiYTg2ZTFlNjk5MjUuLjEzY2VjMWQwZmJmYWJkYWFmMWM2YzQx
YjFhODZiYzFkMDkwODk4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nh
bXBsZXMvc2FtcGxlMS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3Nh
bXBsZTEuY2MKQEAgLTI4LDggKzI4LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxl
IHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3Jr
LgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAogI2luY2x1
ZGUgInNhbXBsZTEuaCIKIApAQCAtNTUsNyArNTMsNyBAQCBib29sIElzUHJpbWUoaW50IG4pIHsK
IAogICAvLyBUcnkgdG8gZGl2aWRlIG4gYnkgZXZlcnkgb2RkIG51bWJlciBpLCBzdGFydGluZyBm
cm9tIDMKICAgZm9yIChpbnQgaSA9IDM7IDsgaSArPSAyKSB7Ci0gICAgLy8gV2Ugb25seSBoYXZl
IHRvIHRyeSBpIHVwIHRvIHRoZSBzcXVyZSByb290IG9mIG4KKyAgICAvLyBXZSBvbmx5IGhhdmUg
dG8gdHJ5IGkgdXAgdG8gdGhlIHNxdWFyZSByb290IG9mIG4KICAgICBpZiAoaSA+IG4vaSkgYnJl
YWs7CiAKICAgICAvLyBOb3csIHdlIGhhdmUgaSA8PSBuL2kgPCBuLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEuaAppbmRleCAzZGZlYjk4YzQ1MDMwMTQ1ZjllYTE4ZDc5
NTMxYzkxYzgxZWU4NDlhLi4yYzNlOWYwNWYxYTEwYTQ0MjVmNzdiMjg3MTZlODA1OTY4MjE5NjFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEuaApAQCAtMjgsOCAr
MjgsNiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0
aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCiAjaWZuZGVmIEdURVNUX1NBTVBMRVNfU0FN
UExFMV9IXwogI2RlZmluZSBHVEVTVF9TQU1QTEVTX1NBTVBMRTFfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjCmluZGV4IDNh
ZDZmZDY1MzgyNjE3ZjdkNmI0MDFmNGQxYmQ4M2ZjODZlZDg0ZmUuLjdjZTk1NTBmODgzYWEzNDJk
MjViMDQ4NTkzZmFhOTZjYWJkOGUxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYwpAQCAtMjUsOCArMjUsNyBAQAogLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhv
cjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKwogCiAvLyBUaGlzIHNhbXBsZSBzaG93
cyBob3cgdG8gdXNlIEdvb2dsZSBUZXN0IGxpc3RlbmVyIEFQSSB0byBpbXBsZW1lbnQKIC8vIGEg
cHJpbWl0aXZlIGxlYWsgY2hlY2tlci4KQEAgLTM0LDE5ICszMywxNiBAQAogI2luY2x1ZGUgPHN0
ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgot
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIHVzaW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZl
bnRMaXN0ZW5lcjsKIHVzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7CiB1c2luZyA6OnRl
c3Rpbmc6OlRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RDYXNlOwogdXNpbmcgOjp0ZXN0aW5n
OjpUZXN0RXZlbnRMaXN0ZW5lcnM7CiB1c2luZyA6OnRlc3Rpbmc6OlRlc3RJbmZvOwogdXNpbmcg
Ojp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDsKIHVzaW5nIDo6dGVzdGluZzo6VW5pdFRlc3Q7CiAK
IG5hbWVzcGFjZSB7Ci0KIC8vIFdlIHdpbGwgdHJhY2sgbWVtb3J5IHVzZWQgYnkgdGhpcyBjbGFz
cy4KIGNsYXNzIFdhdGVyIHsKICBwdWJsaWM6CkBAIC04OSw4ICs4NSw3IEBAIGNsYXNzIExlYWtD
aGVja2VyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewogICAgIC8vIFlvdSBjYW4g
Z2VuZXJhdGUgYSBmYWlsdXJlIGluIGFueSBldmVudCBoYW5kbGVyIGV4Y2VwdAogICAgIC8vIE9u
VGVzdFBhcnRSZXN1bHQuIEp1c3QgdXNlIGFuIGFwcHJvcHJpYXRlIEdvb2dsZSBUZXN0IGFzc2Vy
dGlvbiB0byBkbwogICAgIC8vIGl0LgotICAgIEVYUEVDVF9UUlVFKGRpZmZlcmVuY2UgPD0gMCkK
LSAgICAgICAgPDwgIkxlYWtlZCAiIDw8IGRpZmZlcmVuY2UgPDwgIiB1bml0KHMpIG9mIFdhdGVy
ISI7CisgICAgRVhQRUNUX0xFKGRpZmZlcmVuY2UsIDApIDw8ICJMZWFrZWQgIiA8PCBkaWZmZXJl
bmNlIDw8ICIgdW5pdChzKSBvZiBXYXRlciEiOwogICB9CiAKICAgaW50IGluaXRpYWxseV9hbGxv
Y2F0ZWRfOwpAQCAtMTA3LDcgKzEwMiw2IEBAIFRFU1QoTGlzdGVuZXJzVGVzdCwgTGVha3NXYXRl
cikgewogICBXYXRlciogd2F0ZXIgPSBuZXcgV2F0ZXI7CiAgIEVYUEVDVF9UUlVFKHdhdGVyICE9
IE5VTEwpOwogfQotCiB9ICAvLyBuYW1lc3BhY2UKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg
Kiphcmd2KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3Nh
bXBsZTFfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBs
ZTFfdW5pdHRlc3QuY2MKaW5kZXggMDFlYjU0NjJmODFhZDU0YjM4YWM1ZWU2MzM3OTcyZWFhMDRk
N2FkZS4uY2IwOGI2MWE1OWE5ZTE2YjM2NTc4NjFmMWM5NjA5MDAxZDIwOTZiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYwpA
QCAtMjgsOSArMjgsNiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBk
ZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCiAKIC8vIFRoaXMgc2FtcGxl
IHNob3dzIGhvdyB0byB3cml0ZSBhIHNpbXBsZSB1bml0IHRlc3QgZm9yIGEgZnVuY3Rpb24sCiAv
LyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgpAQCAtNDUsOCArNDIsOCBAQAog
CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSAic2FtcGxlMS5oIgotI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+Ci0KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorbmFtZXNwYWNlIHsKIAog
Ly8gU3RlcCAyLiBVc2UgdGhlIFRFU1QgbWFjcm8gdG8gZGVmaW5lIHlvdXIgdGVzdHMuCiAvLwpA
QCAtODEsNyArNzgsNyBAQCBURVNUKEZhY3RvcmlhbFRlc3QsIE5lZ2F0aXZlKSB7CiAgIC8vIHRl
c3QgY2FzZS4KICAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgtNSkpOwogICBFWFBFQ1RfRVEoMSwg
RmFjdG9yaWFsKC0xKSk7Ci0gIEVYUEVDVF9UUlVFKEZhY3RvcmlhbCgtMTApID4gMCk7CisgIEVY
UEVDVF9HVChGYWN0b3JpYWwoLTEwKSwgMCk7CiAKICAgLy8gPFRlY2huaWNhbERldGFpbHM+CiAg
IC8vCkBAIC0xMzksNiArMTM2LDcgQEAgVEVTVChJc1ByaW1lVGVzdCwgUG9zaXRpdmUpIHsKICAg
RVhQRUNUX0ZBTFNFKElzUHJpbWUoNikpOwogICBFWFBFQ1RfVFJVRShJc1ByaW1lKDIzKSk7CiB9
Cit9ICAvLyBuYW1lc3BhY2UKIAogLy8gU3RlcCAzLiBDYWxsIFJVTl9BTExfVEVTVFMoKSBpbiBt
YWluKCkuCiAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9z
YW1wbGUyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUyLmNjCmlu
ZGV4IDVmNzYzYjliZGY4ZDdhYmMxM2M2MWM1NjgzMzFkMjFiOWZhNDk3NWQuLmYzYjcyMmZjYWNm
ZWVlN2Q4OTBiMmQxZjE5YmM5NzQxNWVjYTQ5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zYW1wbGVzL3NhbXBsZTIuY2MKQEAgLTI4LDggKzI4LDYgQEAKIC8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAK
IC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3Rp
bmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdh
bikKIAogI2luY2x1ZGUgInNhbXBsZTIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1w
bGVzL3NhbXBsZTIuaAppbmRleCA1YjU3ZTYwODJmYTRmNmI3MjRiZmI1ODI2ODdiZmUwYTYzMTlm
MmE3Li41OGYzNjBmNDVjNzY1OGMwMTk3ZTNmZmM2NWVjOGIzNzVmYjMzNmIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTIuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTIuaApAQCAtMjgsOCArMjgsNiBAQAogLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdv
b2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNv
bSAoWmhhbnlvbmcgV2FuKQogCiAjaWZuZGVmIEdURVNUX1NBTVBMRVNfU0FNUExFMl9IXwogI2Rl
ZmluZSBHVEVTVF9TQU1QTEVTX1NBTVBMRTJfSF8KQEAgLTQ0LDcgKzQyLDYgQEAgY2xhc3MgTXlT
dHJpbmcgewogICBjb25zdCBNeVN0cmluZyYgb3BlcmF0b3I9KGNvbnN0IE15U3RyaW5nJiByaHMp
OwogCiAgcHVibGljOgotCiAgIC8vIENsb25lcyBhIDAtdGVybWluYXRlZCBDIHN0cmluZywgYWxs
b2NhdGluZyBtZW1vcnkgdXNpbmcgbmV3LgogICBzdGF0aWMgY29uc3QgY2hhciogQ2xvbmVDU3Ry
aW5nKGNvbnN0IGNoYXIqIGFfY19zdHJpbmcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2MKaW5kZXggMzIyMzJkOThjMGJkMjU0
ODIxYzhmNjkxYTZiODU1ZjFmMTYxNmZiOC4uMDg0ODgyNjE5MmNjNjZmY2I3OTA2ZWYyYzBhYWVm
NjZhZjg0M2Y5MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9z
YW1wbGUyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMv
c2FtcGxlMl91bml0dGVzdC5jYwpAQCAtMjgsOSArMjgsNiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAog
Ly8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGlu
ZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KQotCiAKIC8vIFRoaXMgc2FtcGxlIHNob3dzIGhvdyB0byB3cml0ZSBhIG1vcmUgY29tcGxleCB1
bml0IHRlc3QgZm9yIGEgY2xhc3MKIC8vIHRoYXQgaGFzIG11bHRpcGxlIG1lbWJlciBmdW5jdGlv
bnMuCkBAIC00MSw4ICszOCw4IEBACiAvLyBuZWVkZWQuCiAKICNpbmNsdWRlICJzYW1wbGUyLmgi
Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCitu
YW1lc3BhY2UgewogLy8gSW4gdGhpcyBleGFtcGxlLCB3ZSB0ZXN0IHRoZSBNeVN0cmluZyBjbGFz
cyAoYSBzaW1wbGUgc3RyaW5nKS4KIAogLy8gVGVzdHMgdGhlIGRlZmF1bHQgYyd0b3IuCkBAIC03
OSw3ICs3Niw3IEBAIGNvbnN0IGNoYXIga0hlbGxvU3RyaW5nW10gPSAiSGVsbG8sIHdvcmxkISI7
CiAvLyBUZXN0cyB0aGUgYyd0b3IgdGhhdCBhY2NlcHRzIGEgQyBzdHJpbmcuCiBURVNUKE15U3Ry
aW5nLCBDb25zdHJ1Y3RvckZyb21DU3RyaW5nKSB7CiAgIGNvbnN0IE15U3RyaW5nIHMoa0hlbGxv
U3RyaW5nKTsKLSAgRVhQRUNUX1RSVUUoc3RyY21wKHMuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5n
KSA9PSAwKTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzLmNfc3RyaW5nKCksIGtIZWxsb1N0cmlu
ZykpOwogICBFWFBFQ1RfRVEoc2l6ZW9mKGtIZWxsb1N0cmluZykvc2l6ZW9mKGtIZWxsb1N0cmlu
Z1swXSkgLSAxLAogICAgICAgICAgICAgcy5MZW5ndGgoKSk7CiB9CkBAIC04OCw3ICs4NSw3IEBA
IFRFU1QoTXlTdHJpbmcsIENvbnN0cnVjdG9yRnJvbUNTdHJpbmcpIHsKIFRFU1QoTXlTdHJpbmcs
IENvcHlDb25zdHJ1Y3RvcikgewogICBjb25zdCBNeVN0cmluZyBzMShrSGVsbG9TdHJpbmcpOwog
ICBjb25zdCBNeVN0cmluZyBzMiA9IHMxOwotICBFWFBFQ1RfVFJVRShzdHJjbXAoczIuY19zdHJp
bmcoKSwga0hlbGxvU3RyaW5nKSA9PSAwKTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzMi5jX3N0
cmluZygpLCBrSGVsbG9TdHJpbmcpKTsKIH0KIAogLy8gVGVzdHMgdGhlIFNldCBtZXRob2QuCkBA
IC05NiwxNCArOTMsMTUgQEAgVEVTVChNeVN0cmluZywgU2V0KSB7CiAgIE15U3RyaW5nIHM7CiAK
ICAgcy5TZXQoa0hlbGxvU3RyaW5nKTsKLSAgRVhQRUNUX1RSVUUoc3RyY21wKHMuY19zdHJpbmco
KSwga0hlbGxvU3RyaW5nKSA9PSAwKTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzLmNfc3RyaW5n
KCksIGtIZWxsb1N0cmluZykpOwogCiAgIC8vIFNldCBzaG91bGQgd29yayB3aGVuIHRoZSBpbnB1
dCBwb2ludGVyIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUKICAgLy8gYWxyZWFkeSBpbiB0aGUgTXlT
dHJpbmcgb2JqZWN0LgogICBzLlNldChzLmNfc3RyaW5nKCkpOwotICBFWFBFQ1RfVFJVRShzdHJj
bXAocy5jX3N0cmluZygpLCBrSGVsbG9TdHJpbmcpID09IDApOworICBFWFBFQ1RfRVEoMCwgc3Ry
Y21wKHMuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSk7CiAKICAgLy8gQ2FuIHdlIHNldCB0aGUg
TXlTdHJpbmcgdG8gTlVMTD8KICAgcy5TZXQoTlVMTCk7CiAgIEVYUEVDVF9TVFJFUShOVUxMLCBz
LmNfc3RyaW5nKCkpOwogfQorfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTMtaW5sLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTMtaW5sLmgKaW5kZXggNDYzNjlhMDc2ZDg1YzQxMTQyM2FjYWE5
OGRkNDU1ZTU1OWVkMzAwYS4uMWEyOWNlOTI5NmE2NGRmZTk3YTlmN2ZkYzZkYTg2Mzg3ZGMwYjc1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzLWlu
bC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMy1pbmwuaApA
QCAtMjgsOCArMjgsNiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBk
ZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCiAjaWZuZGVmIEdURVNUX1NB
TVBMRVNfU0FNUExFM19JTkxfSF8KICNkZWZpbmUgR1RFU1RfU0FNUExFU19TQU1QTEUzX0lOTF9I
XwpAQCAtNjAsNyArNTgsNyBAQCBjbGFzcyBRdWV1ZU5vZGUgewogIHByaXZhdGU6CiAgIC8vIENy
ZWF0ZXMgYSBub2RlIHdpdGggYSBnaXZlbiBlbGVtZW50IHZhbHVlLiAgVGhlIG5leHQgcG9pbnRl
ciBpcwogICAvLyBzZXQgdG8gTlVMTC4KLSAgUXVldWVOb2RlKGNvbnN0IEUmIGFuX2VsZW1lbnQp
IDogZWxlbWVudF8oYW5fZWxlbWVudCksIG5leHRfKE5VTEwpIHt9CisgIGV4cGxpY2l0IFF1ZXVl
Tm9kZShjb25zdCBFJiBhbl9lbGVtZW50KSA6IGVsZW1lbnRfKGFuX2VsZW1lbnQpLCBuZXh0XyhO
VUxMKSB7fQogCiAgIC8vIFdlIGRpc2FibGUgdGhlIGRlZmF1bHQgYXNzaWdubWVudCBvcGVyYXRv
ciBhbmQgY29weSBjJ3Rvci4KICAgY29uc3QgUXVldWVOb2RlJiBvcGVyYXRvciA9IChjb25zdCBR
dWV1ZU5vZGUmKTsKQEAgLTcyLDggKzcwLDcgQEAgY2xhc3MgUXVldWVOb2RlIHsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIEU+ICAvLyBFIGlzIHRoZSBlbGVtZW50IHR5cGUuCiBjbGFzcyBRdWV1ZSB7
Ci1wdWJsaWM6Ci0KKyBwdWJsaWM6CiAgIC8vIENyZWF0ZXMgYW4gZW1wdHkgcXVldWUuCiAgIFF1
ZXVlKCkgOiBoZWFkXyhOVUxMKSwgbGFzdF8oTlVMTCksIHNpemVfKDApIHt9CiAKQEAgLTE2OCw2
ICsxNjUsNiBAQCBwdWJsaWM6CiAgIC8vIFdlIGRpc2FsbG93IGNvcHlpbmcgYSBxdWV1ZS4KICAg
UXVldWUoY29uc3QgUXVldWUmKTsKICAgY29uc3QgUXVldWUmIG9wZXJhdG9yID0gKGNvbnN0IFF1
ZXVlJik7Ci0gfTsKK307CiAKICNlbmRpZiAgLy8gR1RFU1RfU0FNUExFU19TQU1QTEUzX0lOTF9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0
ZXN0LmNjCmluZGV4IDM0YzFjYTg2NTZlYWI1NjQxODE1NjBkYmYxNDlkMGEyYWE5MmNjMWQuLmUw
OTNjMjU4ODU3M2Y5NjI3MGE1ZWQ0MTI0NWFjN2U4OWY0ODUxMTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MKQEAgLTI4LDkg
KzI4LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJh
dGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQogCiAvLyBJbiB0aGlzIGV4YW1wbGUsIHdl
IHVzZSBhIG1vcmUgYWR2YW5jZWQgZmVhdHVyZSBvZiBHb29nbGUgVGVzdCBjYWxsZWQKIC8vIHRl
c3QgZml4dHVyZS4KQEAgLTY0LDE1ICs2MSwxNSBAQAogLy8gPC9UZWNobmljYWxEZXRhaWxzPgog
CiAjaW5jbHVkZSAic2FtcGxlMy1pbmwuaCIKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKK25hbWVzcGFjZSB7CiAvLyBUbyB1c2UgYSB0ZXN0IGZp
eHR1cmUsIGRlcml2ZSBhIGNsYXNzIGZyb20gdGVzdGluZzo6VGVzdC4KLWNsYXNzIFF1ZXVlVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIFF1ZXVlVGVzdFNtcGwzIDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgewogIHByb3RlY3RlZDogIC8vIFlvdSBzaG91bGQgbWFrZSB0aGUgbWVt
YmVycyBwcm90ZWN0ZWQgcy50LiB0aGV5IGNhbiBiZQogICAgICAgICAgICAgIC8vIGFjY2Vzc2Vk
IGZyb20gc3ViLWNsYXNzZXMuCiAKICAgLy8gdmlydHVhbCB2b2lkIFNldFVwKCkgd2lsbCBiZSBj
YWxsZWQgYmVmb3JlIGVhY2ggdGVzdCBpcyBydW4uICBZb3UKLSAgLy8gc2hvdWxkIGRlZmluZSBp
dCBpZiB5b3UgbmVlZCB0byBpbml0aWFsaXplIHRoZSB2YXJhaWJsZXMuCisgIC8vIHNob3VsZCBk
ZWZpbmUgaXQgaWYgeW91IG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGUgdmFyaWFibGVzLgogICAvLyBP
dGhlcndpc2UsIHRoaXMgY2FuIGJlIHNraXBwZWQuCiAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsK
ICAgICBxMV8uRW5xdWV1ZSgxKTsKQEAgLTEyMCwxMyArMTE3LDEzIEBAIGNsYXNzIFF1ZXVlVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIC8vIGluc3RlYWQgb2YgVEVTVC4KIAogLy8gVGVz
dHMgdGhlIGRlZmF1bHQgYyd0b3IuCi1URVNUX0YoUXVldWVUZXN0LCBEZWZhdWx0Q29uc3RydWN0
b3IpIHsKK1RFU1RfRihRdWV1ZVRlc3RTbXBsMywgRGVmYXVsdENvbnN0cnVjdG9yKSB7CiAgIC8v
IFlvdSBjYW4gYWNjZXNzIGRhdGEgaW4gdGhlIHRlc3QgZml4dHVyZSBoZXJlLgogICBFWFBFQ1Rf
RVEoMHUsIHEwXy5TaXplKCkpOwogfQogCiAvLyBUZXN0cyBEZXF1ZXVlKCkuCi1URVNUX0YoUXVl
dWVUZXN0LCBEZXF1ZXVlKSB7CitURVNUX0YoUXVldWVUZXN0U21wbDMsIERlcXVldWUpIHsKICAg
aW50ICogbiA9IHEwXy5EZXF1ZXVlKCk7CiAgIEVYUEVDVF9UUlVFKG4gPT0gTlVMTCk7CiAKQEAg
LTE0NCw4ICsxNDEsOSBAQCBURVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVlKSB7CiB9CiAKIC8vIFRl
c3RzIHRoZSBRdWV1ZTo6TWFwKCkgZnVuY3Rpb24uCi1URVNUX0YoUXVldWVUZXN0LCBNYXApIHsK
K1RFU1RfRihRdWV1ZVRlc3RTbXBsMywgTWFwKSB7CiAgIE1hcFRlc3RlcigmcTBfKTsKICAgTWFw
VGVzdGVyKCZxMV8pOwogICBNYXBUZXN0ZXIoJnEyXyk7CiB9Cit9ICAvLyBuYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNC5jYwppbmRleCBhZTQ0YmRhNmYx
YmFkNTNmZjNjNmYxNGUwMzAyYmQzYmIzMDljYmE3Li5iMGVlNjA5M2I0YTI1MGNmMTE5MzZjY2M4
MjA4YTYxMjI5MWI4MTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1w
bGVzL3NhbXBsZTQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1w
bGU0LmNjCkBAIC0yOCw4ICsyOCw2IEBACiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAvLyBBIHNhbXBsZSBw
cm9ncmFtIGRlbW9uc3RyYXRpbmcgdXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4K
LS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAKICNpbmNsdWRl
IDxzdGRpby5oPgogCkBAIC00MCw2ICszOCwxNiBAQCBpbnQgQ291bnRlcjo6SW5jcmVtZW50KCkg
ewogICByZXR1cm4gY291bnRlcl8rKzsKIH0KIAorLy8gUmV0dXJucyB0aGUgY3VycmVudCBjb3Vu
dGVyIHZhbHVlLCBhbmQgZGVjcmVtZW50cyBpdC4KKy8vIGNvdW50ZXIgY2FuIG5vdCBiZSBsZXNz
IHRoYW4gMCwgcmV0dXJuIDAgaW4gdGhpcyBjYXNlCitpbnQgQ291bnRlcjo6RGVjcmVtZW50KCkg
eworICBpZiAoY291bnRlcl8gPT0gMCkgeworICAgIHJldHVybiBjb3VudGVyXzsKKyAgfSBlbHNl
ICB7CisgICAgcmV0dXJuIGNvdW50ZXJfLS07CisgIH0KK30KKwogLy8gUHJpbnRzIHRoZSBjdXJy
ZW50IGNvdW50ZXIgdmFsdWUgdG8gU1RET1VULgogdm9pZCBDb3VudGVyOjpQcmludCgpIGNvbnN0
IHsKICAgcHJpbnRmKCIlZCIsIGNvdW50ZXJfKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ft
cGxlcy9zYW1wbGU0LmgKaW5kZXggY2Q2MGYwZGQyZDE4NjA3MzdiN2YwZWE0NWM1Njc1YTNhOGVh
NzIxZi4uZTI1NmY0MDY0ZmU5MWE3ZjAxYTk0NTUwZDMyYzNiYjExYjBhNGZmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0LmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0LmgKQEAgLTI4LDkgKzI4LDYgQEAKIC8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBH
b29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbikKLQogI2lmbmRlZiBHVEVTVF9TQU1QTEVTX1NBTVBMRTRfSF8KICNk
ZWZpbmUgR1RFU1RfU0FNUExFU19TQU1QTEU0X0hfCiAKQEAgLTQ2LDYgKzQzLDkgQEAgY2xhc3Mg
Q291bnRlciB7CiAgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgY291bnRlciB2YWx1ZSwgYW5kIGlu
Y3JlbWVudHMgaXQuCiAgIGludCBJbmNyZW1lbnQoKTsKIAorICAvLyBSZXR1cm5zIHRoZSBjdXJy
ZW50IGNvdW50ZXIgdmFsdWUsIGFuZCBkZWNyZW1lbnRzIGl0LgorICBpbnQgRGVjcmVtZW50KCk7
CisKICAgLy8gUHJpbnRzIHRoZSBjdXJyZW50IGNvdW50ZXIgdmFsdWUgdG8gU1RET1VULgogICB2
b2lkIFByaW50KCkgY29uc3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2FtcGxlcy9zYW1wbGU0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGU0X3VuaXR0ZXN0LmNjCmluZGV4IGI0ZmIzNzM2YWJiZmY4M2Y3OWFmNDQ3
Y2E0YmM2YjkxMDU4NjkzMmUuLmQ1MTQ0YzBkMDBmNWM3NjAwNjkzZWEwMjU4MDJjMGQ3ZDUyNTBk
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNF91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTRf
dW5pdHRlc3QuY2MKQEAgLTI2LDIwICsyNiwyOCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbikKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKICNpbmNsdWRlICJzYW1w
bGU0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAorbmFtZXNwYWNlIHsKIC8vIFRlc3Rz
IHRoZSBJbmNyZW1lbnQoKSBtZXRob2QuCisKIFRFU1QoQ291bnRlciwgSW5jcmVtZW50KSB7CiAg
IENvdW50ZXIgYzsKIAorICAvLyBUZXN0IHRoYXQgY291bnRlciAwIHJldHVybnMgMAorICBFWFBF
Q1RfRVEoMCwgYy5EZWNyZW1lbnQoKSk7CisKICAgLy8gRVhQRUNUX0VRKCkgZXZhbHVhdGVzIGl0
cyBhcmd1bWVudHMgZXhhY3RseSBvbmNlLCBzbyB0aGV5CiAgIC8vIGNhbiBoYXZlIHNpZGUgZWZm
ZWN0cy4KIAogICBFWFBFQ1RfRVEoMCwgYy5JbmNyZW1lbnQoKSk7CiAgIEVYUEVDVF9FUSgxLCBj
LkluY3JlbWVudCgpKTsKICAgRVhQRUNUX0VRKDIsIGMuSW5jcmVtZW50KCkpOworCisgIEVYUEVD
VF9FUSgzLCBjLkRlY3JlbWVudCgpKTsKIH0KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MKaW5kZXgg
NDlkYWU3YzY5ZmE3NmU4YTQ4NjA3NzA2YjRhMTYyYzY0MmYwYTA4NS4uZDhhODc4OGM2ZDBmZGEy
Mzg2NDZmZWEyOTBlMDk3Y2M3NjI3Nzg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYwpAQCAtMjYsOCArMjYsNyBAQAogLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhv
cjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUaGlzIHNhbXBsZSB0ZWFj
aGVzIGhvdyB0byByZXVzZSBhIHRlc3QgZml4dHVyZSBpbiBtdWx0aXBsZSB0ZXN0CiAvLyBjYXNl
cyBieSBkZXJpdmluZyBzdWItZml4dHVyZXMgZnJvbSBpdC4KQEAgLTQ2LDEwICs0NSwxMCBAQAog
CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8dGltZS5oPgotI2luY2x1ZGUgInNhbXBs
ZTMtaW5sLmgiCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVz
dC5oIgogI2luY2x1ZGUgInNhbXBsZTEuaCIKLQorI2luY2x1ZGUgInNhbXBsZTMtaW5sLmgiCitu
YW1lc3BhY2UgewogLy8gSW4gdGhpcyBzYW1wbGUsIHdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgZXZl
cnkgdGVzdCBmaW5pc2hlcyB3aXRoaW4KIC8vIH41IHNlY29uZHMuICBJZiBhIHRlc3QgdGFrZXMg
bG9uZ2VyIHRvIHJ1biwgd2UgY29uc2lkZXIgaXQgYQogLy8gZmFpbHVyZS4KQEAgLTEwMSw3ICsx
MDAsNyBAQCBURVNUX0YoSW50ZWdlckZ1bmN0aW9uVGVzdCwgRmFjdG9yaWFsKSB7CiAgIC8vIFRl
c3RzIGZhY3RvcmlhbCBvZiBuZWdhdGl2ZSBudW1iZXJzLgogICBFWFBFQ1RfRVEoMSwgRmFjdG9y
aWFsKC01KSk7CiAgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoLTEpKTsKLSAgRVhQRUNUX1RSVUUo
RmFjdG9yaWFsKC0xMCkgPiAwKTsKKyAgRVhQRUNUX0dUKEZhY3RvcmlhbCgtMTApLCAwKTsKIAog
ICAvLyBUZXN0cyBmYWN0b3JpYWwgb2YgMC4KICAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgwKSk7
CkBAIC0xMTcsMjAgKzExNiwyMCBAQCBURVNUX0YoSW50ZWdlckZ1bmN0aW9uVGVzdCwgRmFjdG9y
aWFsKSB7CiAvLyBUZXN0cyBJc1ByaW1lKCkKIFRFU1RfRihJbnRlZ2VyRnVuY3Rpb25UZXN0LCBJ
c1ByaW1lKSB7CiAgIC8vIFRlc3RzIG5lZ2F0aXZlIGlucHV0LgotICBFWFBFQ1RfVFJVRSghSXNQ
cmltZSgtMSkpOwotICBFWFBFQ1RfVFJVRSghSXNQcmltZSgtMikpOwotICBFWFBFQ1RfVFJVRSgh
SXNQcmltZShJTlRfTUlOKSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKC0xKSk7CisgIEVYUEVD
VF9GQUxTRShJc1ByaW1lKC0yKSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKElOVF9NSU4pKTsK
IAogICAvLyBUZXN0cyBzb21lIHRyaXZpYWwgY2FzZXMuCi0gIEVYUEVDVF9UUlVFKCFJc1ByaW1l
KDApKTsKLSAgRVhQRUNUX1RSVUUoIUlzUHJpbWUoMSkpOworICBFWFBFQ1RfRkFMU0UoSXNQcmlt
ZSgwKSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKDEpKTsKICAgRVhQRUNUX1RSVUUoSXNQcmlt
ZSgyKSk7CiAgIEVYUEVDVF9UUlVFKElzUHJpbWUoMykpOwogCiAgIC8vIFRlc3RzIHBvc2l0aXZl
IGlucHV0LgotICBFWFBFQ1RfVFJVRSghSXNQcmltZSg0KSk7CisgIEVYUEVDVF9GQUxTRShJc1By
aW1lKDQpKTsKICAgRVhQRUNUX1RSVUUoSXNQcmltZSg1KSk7Ci0gIEVYUEVDVF9UUlVFKCFJc1By
aW1lKDYpKTsKKyAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoNikpOwogICBFWFBFQ1RfVFJVRShJc1By
aW1lKDIzKSk7CiB9CiAKQEAgLTE5MSw3ICsxOTAsNyBAQCBURVNUX0YoUXVldWVUZXN0LCBEZXF1
ZXVlKSB7CiAgIEVYUEVDVF9FUSgxdSwgcTJfLlNpemUoKSk7CiAgIGRlbGV0ZSBuOwogfQotCit9
ICAvLyBuYW1lc3BhY2UKIC8vIElmIG5lY2Vzc2FyeSwgeW91IGNhbiBkZXJpdmUgZnVydGhlciB0
ZXN0IGZpeHR1cmVzIGZyb20gYSBkZXJpdmVkCiAvLyBmaXh0dXJlIGl0c2VsZi4gIEZvciBleGFt
cGxlLCB5b3UgY2FuIGRlcml2ZSBhbm90aGVyIGZpeHR1cmUgZnJvbQogLy8gUXVldWVUZXN0LiAg
R29vZ2xlIFRlc3QgaW1wb3NlcyBubyBsaW1pdCBvbiBob3cgZGVlcCB0aGUgaGllcmFyY2h5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTZfdW5pdHRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3Qu
Y2MKaW5kZXggZGQwZGYzMWYwYmI3Y2JmMjYxNjA3MzQyZTg2NDA0ZDc1YTg1MzQzZS4uZGRmMmYx
YzEzYmJlMDM0ODEzNDQ5MzZiMGE3MmRiYjJhMGIyODQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYwpAQCAtMjYsOCArMjYs
NyBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8K
LS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUaGlzIHNh
bXBsZSBzaG93cyBob3cgdG8gdGVzdCBjb21tb24gcHJvcGVydGllcyBvZiBtdWx0aXBsZQogLy8g
aW1wbGVtZW50YXRpb25zIG9mIHRoZSBzYW1lIGludGVyZmFjZSAoYWthIGludGVyZmFjZSB0ZXN0
cykuCkBAIC0zNSw4ICszNCw4IEBACiAvLyBUaGUgaW50ZXJmYWNlIGFuZCBpdHMgaW1wbGVtZW50
YXRpb25zIGFyZSBpbiB0aGlzIGhlYWRlci4KICNpbmNsdWRlICJwcmltZV90YWJsZXMuaCIKIAot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorbmFt
ZXNwYWNlIHsKIC8vIEZpcnN0LCB3ZSBkZWZpbmUgc29tZSBmYWN0b3J5IGZ1bmN0aW9ucyBmb3Ig
Y3JlYXRpbmcgaW5zdGFuY2VzIG9mCiAvLyB0aGUgaW1wbGVtZW50YXRpb25zLiAgWW91IG1heSBi
ZSBhYmxlIHRvIHNraXAgdGhpcyBzdGVwIGlmIGFsbCB5b3VyCiAvLyBpbXBsZW1lbnRhdGlvbnMg
Y2FuIGJlIGNvbnN0cnVjdGVkIHRoZSBzYW1lIHdheS4KQEAgLTIyMiwzICsyMjEsNCBAQCBJTlNU
QU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChPblRoZUZseUFuZFByZUNhbGN1bGF0ZWQsICAgIC8v
IEluc3RhbmNlIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1lVGFibGVJ
bXBsZW1lbnRhdGlvbnMpOyAgLy8gVHlwZSBsaXN0CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZ
UEVEX1RFU1RfUAorfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MKaW5kZXggZjQ1NTI4MjdlZDliODMwNmNk
ZDMxOWFhNTdmM2VkMDY3NjJiNGY1Zi4uYzFhZThiZGVkYzlhZmM5YTExZDBkOTIwMjFlZjc2Nzdk
Mzk4YTljOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1w
bGU3X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2Ft
cGxlN191bml0dGVzdC5jYwpAQCAtMjYsOCArMjYsNyBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNv
bSAoVmxhZCBMb3NldikKKwogCiAvLyBUaGlzIHNhbXBsZSBzaG93cyBob3cgdG8gdGVzdCBjb21t
b24gcHJvcGVydGllcyBvZiBtdWx0aXBsZQogLy8gaW1wbGVtZW50YXRpb25zIG9mIGFuIGludGVy
ZmFjZSAoYWthIGludGVyZmFjZSB0ZXN0cykgdXNpbmcKQEAgLTM4LDE5ICszNywxNyBAQAogLy8g
VGhlIGludGVyZmFjZSBhbmQgaXRzIGltcGxlbWVudGF0aW9ucyBhcmUgaW4gdGhpcyBoZWFkZXIu
CiAjaW5jbHVkZSAicHJpbWVfdGFibGVzLmgiCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgot
Ci0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorbmFt
ZXNwYWNlIHsKIAogdXNpbmcgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtOwogdXNpbmcgOjp0ZXN0
aW5nOjpWYWx1ZXM7CiAKLS8vIEFzIGEgZ2VuZXJhbCBydWxlLCB0ZXN0ZWQgb2JqZWN0cyBzaG91
bGQgbm90IGJlIHJldXNlZCBiZXR3ZWVuIHRlc3RzLgotLy8gQWxzbywgdGhlaXIgY29uc3RydWN0
b3JzIGFuZCBkZXN0cnVjdG9ycyBvZiB0ZXN0ZWQgb2JqZWN0cyBjYW4gaGF2ZQotLy8gc2lkZSBl
ZmZlY3RzLiBUaHVzIHlvdSBzaG91bGQgY3JlYXRlIGFuZCBkZXN0cm95IHRoZW0gZm9yIGVhY2gg
dGVzdC4KLS8vIEluIHRoaXMgc2FtcGxlIHdlIHdpbGwgZGVmaW5lIGEgc2ltcGxlIGZhY3Rvcnkg
ZnVuY3Rpb24gZm9yIFByaW1lVGFibGUKLS8vIG9iamVjdHMuIFdlIHdpbGwgaW5zdGFudGlhdGUg
b2JqZWN0cyBpbiB0ZXN0J3MgU2V0VXAoKSBtZXRob2QgYW5kCi0vLyBkZWxldGUgdGhlbSBpbiBU
ZWFyRG93bigpIG1ldGhvZC4KKy8vIEFzIGEgZ2VuZXJhbCBydWxlLCB0byBwcmV2ZW50IGEgdGVz
dCBmcm9tIGFmZmVjdGluZyB0aGUgdGVzdHMgdGhhdCBjb21lCisvLyBhZnRlciBpdCwgeW91IHNo
b3VsZCBjcmVhdGUgYW5kIGRlc3Ryb3kgdGhlIHRlc3RlZCBvYmplY3RzIGZvciBlYWNoIHRlc3QK
Ky8vIGluc3RlYWQgb2YgcmV1c2luZyB0aGVtLiAgSW4gdGhpcyBzYW1wbGUgd2Ugd2lsbCBkZWZp
bmUgYSBzaW1wbGUgZmFjdG9yeQorLy8gZnVuY3Rpb24gZm9yIFByaW1lVGFibGUgb2JqZWN0cy4g
IFdlIHdpbGwgaW5zdGFudGlhdGUgb2JqZWN0cyBpbiB0ZXN0J3MKKy8vIFNldFVwKCkgbWV0aG9k
IGFuZCBkZWxldGUgdGhlbSBpbiBUZWFyRG93bigpIG1ldGhvZC4KIHR5cGVkZWYgUHJpbWVUYWJs
ZSogQ3JlYXRlUHJpbWVUYWJsZUZ1bmMoKTsKIAogUHJpbWVUYWJsZSogQ3JlYXRlT25UaGVGbHlQ
cmltZVRhYmxlKCkgewpAQCAtNjIsMTQgKzU5LDEzIEBAIFByaW1lVGFibGUqIENyZWF0ZVByZUNh
bGN1bGF0ZWRQcmltZVRhYmxlKCkgewogICByZXR1cm4gbmV3IFByZUNhbGN1bGF0ZWRQcmltZVRh
YmxlKG1heF9wcmVjYWxjdWxhdGVkKTsKIH0KIAotLy8gSW5zaWRlIHRoZSB0ZXN0IGJvZHksIGZp
eHR1cmUgY29uc3RydWN0b3IsIFNldFVwKCksIGFuZCBUZWFyRG93bigpCi0vLyB5b3UgY2FuIHJl
ZmVyIHRvIHRoZSB0ZXN0IHBhcmFtZXRlciBieSBHZXRQYXJhbSgpLgotLy8gSW4gdGhpcyBjYXNl
LCB0aGUgdGVzdCBwYXJhbWV0ZXIgaXMgYSBQcmltZVRhYmxlRmFjdG9yeSBpbnRlcmZhY2UgcG9p
bnRlcgotLy8gd2hpY2ggd2UgdXNlIGluIGZpeHR1cmUncyBTZXRVcCgpIHRvIGNyZWF0ZSBhbmQg
c3RvcmUgYW4gaW5zdGFuY2Ugb2YKLS8vIFByaW1lVGFibGUuCi1jbGFzcyBQcmltZVRhYmxlVGVz
dCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPENyZWF0ZVByaW1lVGFibGVGdW5jKj4geworLy8gSW5z
aWRlIHRoZSB0ZXN0IGJvZHksIGZpeHR1cmUgY29uc3RydWN0b3IsIFNldFVwKCksIGFuZCBUZWFy
RG93bigpIHlvdQorLy8gY2FuIHJlZmVyIHRvIHRoZSB0ZXN0IHBhcmFtZXRlciBieSBHZXRQYXJh
bSgpLiAgSW4gdGhpcyBjYXNlLCB0aGUgdGVzdAorLy8gcGFyYW1ldGVyIGlzIGEgZmFjdG9yeSBm
dW5jdGlvbiB3aGljaCB3ZSBjYWxsIGluIGZpeHR1cmUncyBTZXRVcCgpIHRvCisvLyBjcmVhdGUg
YW5kIHN0b3JlIGFuIGluc3RhbmNlIG9mIFByaW1lVGFibGUuCitjbGFzcyBQcmltZVRhYmxlVGVz
dFNtcGw3IDogcHVibGljIFRlc3RXaXRoUGFyYW08Q3JlYXRlUHJpbWVUYWJsZUZ1bmMqPiB7CiAg
cHVibGljOgotICB2aXJ0dWFsIH5QcmltZVRhYmxlVGVzdCgpIHsgZGVsZXRlIHRhYmxlXzsgfQor
ICB2aXJ0dWFsIH5QcmltZVRhYmxlVGVzdFNtcGw3KCkgeyBkZWxldGUgdGFibGVfOyB9CiAgIHZp
cnR1YWwgdm9pZCBTZXRVcCgpIHsgdGFibGVfID0gKCpHZXRQYXJhbSgpKSgpOyB9CiAgIHZpcnR1
YWwgdm9pZCBUZWFyRG93bigpIHsKICAgICBkZWxldGUgdGFibGVfOwpAQCAtODAsNyArNzYsNyBA
QCBjbGFzcyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPENyZWF0ZVByaW1l
VGFibGVGdW5jKj4gewogICBQcmltZVRhYmxlKiB0YWJsZV87CiB9OwogCi1URVNUX1AoUHJpbWVU
YWJsZVRlc3QsIFJldHVybnNGYWxzZUZvck5vblByaW1lcykgeworVEVTVF9QKFByaW1lVGFibGVU
ZXN0U21wbDcsIFJldHVybnNGYWxzZUZvck5vblByaW1lcykgewogICBFWFBFQ1RfRkFMU0UodGFi
bGVfLT5Jc1ByaW1lKC01KSk7CiAgIEVYUEVDVF9GQUxTRSh0YWJsZV8tPklzUHJpbWUoMCkpOwog
ICBFWFBFQ1RfRkFMU0UodGFibGVfLT5Jc1ByaW1lKDEpKTsKQEAgLTg5LDcgKzg1LDcgQEAgVEVT
VF9QKFByaW1lVGFibGVUZXN0LCBSZXR1cm5zRmFsc2VGb3JOb25QcmltZXMpIHsKICAgRVhQRUNU
X0ZBTFNFKHRhYmxlXy0+SXNQcmltZSgxMDApKTsKIH0KIAotVEVTVF9QKFByaW1lVGFibGVUZXN0
LCBSZXR1cm5zVHJ1ZUZvclByaW1lcykgeworVEVTVF9QKFByaW1lVGFibGVUZXN0U21wbDcsIFJl
dHVybnNUcnVlRm9yUHJpbWVzKSB7CiAgIEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSgyKSk7
CiAgIEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSgzKSk7CiAgIEVYUEVDVF9UUlVFKHRhYmxl
Xy0+SXNQcmltZSg1KSk7CkBAIC05OCw3ICs5NCw3IEBAIFRFU1RfUChQcmltZVRhYmxlVGVzdCwg
UmV0dXJuc1RydWVGb3JQcmltZXMpIHsKICAgRVhQRUNUX1RSVUUodGFibGVfLT5Jc1ByaW1lKDEz
MSkpOwogfQogCi1URVNUX1AoUHJpbWVUYWJsZVRlc3QsIENhbkdldE5leHRQcmltZSkgeworVEVT
VF9QKFByaW1lVGFibGVUZXN0U21wbDcsIENhbkdldE5leHRQcmltZSkgewogICBFWFBFQ1RfRVEo
MiwgdGFibGVfLT5HZXROZXh0UHJpbWUoMCkpOwogICBFWFBFQ1RfRVEoMywgdGFibGVfLT5HZXRO
ZXh0UHJpbWUoMikpOwogICBFWFBFQ1RfRVEoNSwgdGFibGVfLT5HZXROZXh0UHJpbWUoMykpOwpA
QCAtMTE0LDE5ICsxMTAsOCBAQCBURVNUX1AoUHJpbWVUYWJsZVRlc3QsIENhbkdldE5leHRQcmlt
ZSkgewogLy8KIC8vIEhlcmUsIHdlIGluc3RhbnRpYXRlIG91ciB0ZXN0cyB3aXRoIGEgbGlzdCBv
ZiB0d28gUHJpbWVUYWJsZSBvYmplY3QKIC8vIGZhY3RvcnkgZnVuY3Rpb25zOgotSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoCi0gICAgT25UaGVGbHlBbmRQcmVDYWxjdWxhdGVkLAotICAgIFByaW1l
VGFibGVUZXN0LAotICAgIFZhbHVlcygmQ3JlYXRlT25UaGVGbHlQcmltZVRhYmxlLCAmQ3JlYXRl
UHJlQ2FsY3VsYXRlZFByaW1lVGFibGU8MTAwMD4pKTsKLQotI2Vsc2UKLQotLy8gR29vZ2xlIFRl
c3QgbWF5IG5vdCBzdXBwb3J0IHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgd2l0aCBzb21lCi0v
LyBjb21waWxlcnMuIElmIHdlIHVzZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBjb21waWxl
IG91dCBhbGwKLS8vIGNvZGUgcmVmZXJyaW5nIHRvIHRoZSBndGVzdF9tYWluIGxpYnJhcnksIE1T
VkMgbGlua2VyIHdpbGwgbm90IGxpbmsKLS8vIHRoYXQgbGlicmFyeSBhdCBhbGwgYW5kIGNvbnNl
cXVlbnRseSBjb21wbGFpbiBhYm91dCBtaXNzaW5nIGVudHJ5Ci0vLyBwb2ludCBkZWZpbmVkIGlu
IHRoYXQgbGlicmFyeSAoZmF0YWwgZXJyb3IgTE5LMTU2MTogZW50cnkgcG9pbnQKLS8vIG11c3Qg
YmUgZGVmaW5lZCkuIFRoaXMgZHVtbXkgdGVzdCBrZWVwcyBndGVzdF9tYWluIGxpbmtlZCBpbi4K
LVRFU1QoRHVtbXlUZXN0LCBWYWx1ZVBhcmFtZXRlcml6ZWRUZXN0c0FyZU5vdFN1cHBvcnRlZE9u
VGhpc1BsYXRmb3JtKSB7fQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoT25UaGVGbHlBbmRQcmVD
YWxjdWxhdGVkLCBQcmltZVRhYmxlVGVzdFNtcGw3LAorICAgICAgICAgICAgICAgICAgICAgICAg
VmFsdWVzKCZDcmVhdGVPblRoZUZseVByaW1lVGFibGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJkNyZWF0ZVByZUNhbGN1bGF0ZWRQcmltZVRhYmxlPDEwMDA+KSk7CiAKLSNlbmRp
ZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjCmluZGV4IGNj
ZjYxZDkyYjg1YzMxMmY3ZjJlYzJmNmQ4YTY3M2RmZjRiMDJkNjYuLmNlNzVjZjAzMDg3MGMzNzZk
ZmVjNjAzMWRiMjQ3MTEwODcwMzgzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2MKQEAgLTI2LDggKzI2LDcgQEAKIC8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6
IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCisKIAogLy8gVGhpcyBzYW1wbGUgc2hvd3Mg
aG93IHRvIHRlc3QgY29kZSByZWx5aW5nIG9uIHNvbWUgZ2xvYmFsIGZsYWcgdmFyaWFibGVzLgog
Ly8gQ29tYmluZSgpIGhlbHBzIHdpdGggZ2VuZXJhdGluZyBhbGwgcG9zc2libGUgY29tYmluYXRp
b25zIG9mIHN1Y2ggZmxhZ3MsCkBAIC0zNiw4ICszNSw4IEBACiAvLyBVc2UgY2xhc3MgZGVmaW5p
dGlvbnMgdG8gdGVzdCBmcm9tIHRoaXMgaGVhZGVyLgogI2luY2x1ZGUgInByaW1lX3RhYmxlcy5o
IgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CituYW1lc3BhY2UgewogI2lmIEdURVNUX0hBU19DT01CSU5FCiAKIC8vIFN1cHBvc2Ugd2Ugd2Fu
dCB0byBpbnRyb2R1Y2UgYSBuZXcsIGltcHJvdmVkIGltcGxlbWVudGF0aW9uIG9mIFByaW1lVGFi
bGUKQEAgLTkwLDcgKzg5LDcgQEAgdXNpbmcgOjp0ZXN0aW5nOjpDb21iaW5lOwogLy8gUHJlQ2Fs
Y3VsYXRlZFByaW1lVGFibGUgZGlzYWJsZWQuIFdlIGRvIHRoaXMgYnkgZGVmaW5pbmcgZml4dHVy
ZSB3aGljaCB3aWxsCiAvLyBhY2NlcHQgZGlmZmVyZW50IGNvbWJpbmF0aW9ucyBvZiBwYXJhbWV0
ZXJzIGZvciBpbnN0YW50aWF0aW5nIGEKIC8vIEh5YnJpZFByaW1lVGFibGUgaW5zdGFuY2UuCi1j
bGFzcyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPCA6OnN0ZDo6dHIxOjp0
dXBsZTxib29sLCBpbnQ+ID4geworY2xhc3MgUHJpbWVUYWJsZVRlc3QgOiBwdWJsaWMgVGVzdFdp
dGhQYXJhbTwgOjp0ZXN0aW5nOjp0dXBsZTxib29sLCBpbnQ+ID4gewogIHByb3RlY3RlZDoKICAg
dmlydHVhbCB2b2lkIFNldFVwKCkgewogICAgIC8vIFRoaXMgY2FuIGJlIHdyaXR0ZW4gYXMKQEAg
LTEwMSw4ICsxMDAsOCBAQCBjbGFzcyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBh
cmFtPCA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQ+ID4gewogICAgIC8vCiAgICAgLy8gb25j
ZSB0aGUgR29vZ2xlIEMrKyBTdHlsZSBHdWlkZSBhbGxvd3MgdXNlIG9mIDo6c3RkOjp0cjE6OnRp
ZS4KICAgICAvLwotICAgIGJvb2wgZm9yY2Vfb25fdGhlX2ZseSA9IDo6c3RkOjp0cjE6OmdldDww
PihHZXRQYXJhbSgpKTsKLSAgICBpbnQgbWF4X3ByZWNhbGN1bGF0ZWQgPSA6OnN0ZDo6dHIxOjpn
ZXQ8MT4oR2V0UGFyYW0oKSk7CisgICAgYm9vbCBmb3JjZV9vbl90aGVfZmx5ID0gOjp0ZXN0aW5n
OjpnZXQ8MD4oR2V0UGFyYW0oKSk7CisgICAgaW50IG1heF9wcmVjYWxjdWxhdGVkID0gOjp0ZXN0
aW5nOjpnZXQ8MT4oR2V0UGFyYW0oKSk7CiAgICAgdGFibGVfID0gbmV3IEh5YnJpZFByaW1lVGFi
bGUoZm9yY2Vfb25fdGhlX2ZseSwgbWF4X3ByZWNhbGN1bGF0ZWQpOwogICB9CiAgIHZpcnR1YWwg
dm9pZCBUZWFyRG93bigpIHsKQEAgLTE3MSwzICsxNzAsNCBAQCBJTlNUQU5USUFURV9URVNUX0NB
U0VfUChNZWFuaW5nZnVsVGVzdFBhcmFtZXRlcnMsCiBURVNUKER1bW15VGVzdCwgQ29tYmluZUlz
Tm90U3VwcG9ydGVkT25UaGlzUGxhdGZvcm0pIHt9CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0NP
TUJJTkUKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjCmluZGV4IGQ4MjhlZjRkODZiNzQ2YjI1Njk3YmRk
NDZkMjEwMGE0NDYxNDJkMzEuLjUzZjlhZjViYTFkZmMyNjk1NjYwNzhmMjM2ZjY5NTU5OWRjNTJh
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlOV91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTlf
dW5pdHRlc3QuY2MKQEAgLTI1LDggKzI1LDcgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZs
YWQgTG9zZXYpCisKIAogLy8gVGhpcyBzYW1wbGUgc2hvd3MgaG93IHRvIHVzZSBHb29nbGUgVGVz
dCBsaXN0ZW5lciBBUEkgdG8gaW1wbGVtZW50CiAvLyBhbiBhbHRlcm5hdGl2ZSBjb25zb2xlIG91
dHB1dCBhbmQgaG93IHRvIHVzZSB0aGUgVW5pdFRlc3QgcmVmbGVjdGlvbiBBUEkKQEAgLTM0LDcg
KzMzLDcgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5o
PgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIHVzaW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0
RXZlbnRMaXN0ZW5lcjsKIHVzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7CkBAIC00NCw5
ICs0Myw3IEBAIHVzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzOwogdXNpbmcgOjp0
ZXN0aW5nOjpUZXN0SW5mbzsKIHVzaW5nIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ7CiB1c2lu
ZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OwotCiBuYW1lc3BhY2UgewotCiAvLyBQcm92aWRlcyBhbHRl
cm5hdGl2ZSBvdXRwdXQgbW9kZSB3aGljaCBwcm9kdWNlcyBtaW5pbWFsIGFtb3VudCBvZgogLy8g
aW5mb3JtYXRpb24gYWJvdXQgdGVzdHMuCiBjbGFzcyBUZXJzZVByaW50ZXIgOiBwdWJsaWMgRW1w
dHlUZXN0RXZlbnRMaXN0ZW5lciB7CkBAIC02OSw3ICs2Niw3IEBAIGNsYXNzIFRlcnNlUHJpbnRl
ciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKICAgICBmZmx1c2goc3Rkb3V0KTsK
ICAgfQogCi0gIC8vIENhbGxlZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRVNT
KCkuCisgIC8vIENhbGxlZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRUVEKCkg
aW52b2NhdGlvbi4KICAgdmlydHVhbCB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBh
cnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKICAgICBmcHJpbnRmKHN0ZG91dCwKICAgICAg
ICAgICAgICIlcyBpbiAlczolZFxuJXNcbiIsCkBAIC0xMDIsNyArOTksNiBAQCBURVNUKEN1c3Rv
bU91dHB1dFRlc3QsIEZhaWxzKSB7CiAgIEVYUEVDVF9FUSgxLCAyKQogICAgICAgPDwgIlRoaXMg
dGVzdCBmYWlscyBpbiBvcmRlciB0byBkZW1vbnN0cmF0ZSBhbHRlcm5hdGl2ZSBmYWlsdXJlIG1l
c3NhZ2VzIjsKIH0KLQogfSAgLy8gbmFtZXNwYWNlCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFy
ICoqYXJndikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9j
b21tb24ucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2NvbW1vbi5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zYzAzNDdhNzViZGZmMzE4ODA5Nzc0NTAxNWE1ODAzNzY0YWQ3NDFjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9jb21tb24ucHkKQEAg
LTAsMCArMSw4MyBAQAorIyBDb3B5cmlnaHQgMjAxMyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiU2hhcmVkIHV0aWxpdGllcyBmb3Igd3Jp
dGluZyBzY3JpcHRzIGZvciBHb29nbGUgVGVzdC9Nb2NrLiIiIgorCitfX2F1dGhvcl9fID0gJ3dh
bkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJworCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCisK
KworIyBNYXRjaGVzIHRoZSBsaW5lIGZyb20gJ3N2biBpbmZvIC4nIG91dHB1dCB0aGF0IGRlc2Ny
aWJlcyB3aGF0IFNWTgorIyBwYXRoIHRoZSBjdXJyZW50IGxvY2FsIGRpcmVjdG9yeSBjb3JyZXNw
b25kcyB0by4gIEZvciBleGFtcGxlLCBpbgorIyBhIGdvb2dsZXRlc3QgU1ZOIHdvcmtzcGFjZSdz
IHRydW5rL3Rlc3QgZGlyZWN0b3J5LCB0aGUgb3V0cHV0IHdpbGwgYmU6CisjCisjIFVSTDogaHR0
cHM6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay90ZXN0CitfU1ZOX0lORk9f
VVJMX1JFID0gcmUuY29tcGlsZShyJ15VUkw6IGh0dHBzOi8vKFx3KylcLmdvb2dsZWNvZGVcLmNv
bS9zdm4oLiopJykKKworCitkZWYgR2V0Q29tbWFuZE91dHB1dChjb21tYW5kKToKKyAgIiIiUnVu
cyB0aGUgc2hlbGwgY29tbWFuZCBhbmQgcmV0dXJucyBpdHMgc3Rkb3V0IGFzIGEgbGlzdCBvZiBs
aW5lcy4iIiIKKworICBmID0gb3MucG9wZW4oY29tbWFuZCwgJ3InKQorICBsaW5lcyA9IFtsaW5l
LnN0cmlwKCkgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKV0KKyAgZi5jbG9zZSgpCisgIHJldHVy
biBsaW5lcworCisKK2RlZiBHZXRTdm5JbmZvKCk6CisgICIiIlJldHVybnMgdGhlIHByb2plY3Qg
bmFtZSBhbmQgdGhlIGN1cnJlbnQgU1ZOIHdvcmtzcGFjZSdzIHJvb3QgcGF0aC4iIiIKKworICBm
b3IgbGluZSBpbiBHZXRDb21tYW5kT3V0cHV0KCdzdm4gaW5mbyAuJyk6CisgICAgbSA9IF9TVk5f
SU5GT19VUkxfUkUubWF0Y2gobGluZSkKKyAgICBpZiBtOgorICAgICAgcHJvamVjdCA9IG0uZ3Jv
dXAoMSkgICMgZ29vZ2xldGVzdCBvciBnb29nbGVtb2NrCisgICAgICByZWxfcGF0aCA9IG0uZ3Jv
dXAoMikKKyAgICAgIHJvb3QgPSBvcy5wYXRoLnJlYWxwYXRoKHJlbF9wYXRoLmNvdW50KCcvJykg
KiAnLi4vJykKKyAgICAgIHJldHVybiBwcm9qZWN0LCByb290CisKKyAgcmV0dXJuIE5vbmUsIE5v
bmUKKworCitkZWYgR2V0U3ZuVHJ1bmsoKToKKyAgIiIiUmV0dXJucyB0aGUgY3VycmVudCBTVk4g
d29ya3NwYWNlJ3MgdHJ1bmsgcm9vdCBwYXRoLiIiIgorCisgIF8sIHJvb3QgPSBHZXRTdm5JbmZv
KCkKKyAgcmV0dXJuIHJvb3QgKyAnL3RydW5rJyBpZiByb290IGVsc2UgTm9uZQorCisKK2RlZiBJ
c0luR1Rlc3RTdm4oKToKKyAgcHJvamVjdCwgXyA9IEdldFN2bkluZm8oKQorICByZXR1cm4gcHJv
amVjdCA9PSAnZ29vZ2xldGVzdCcKKworCitkZWYgSXNJbkdNb2NrU3ZuKCk6CisgIHByb2plY3Qs
IF8gPSBHZXRTdm5JbmZvKCkKKyAgcmV0dXJuIHByb2plY3QgPT0gJ2dvb2dsZW1vY2snCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMu
cHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMucHkK
aW5kZXggMTQ4NDQ0Y2E3MTFiMWVkYWFhZmVhOGQ3ODI2ZDNjZmQ0YzAxZGUwYi4uZDBkZDQ2NGZl
OGI1OWM1NDEwYTNkMWI4NWRiNDc5NWJiZDAzMWQ4OSAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc2NyaXB0cy9mdXNlX2d0ZXN0X2ZpbGVzLnB5CisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NjcmlwdHMvZnVzZV9ndGVzdF9maWxlcy5weQpAQCAtNTIsNyArNTIsNyBA
QCBFWEFNUExFUwogVGhpcyB0b29sIGlzIGV4cGVyaW1lbnRhbC4gIEluIHBhcnRpY3VsYXIsIGl0
IGFzc3VtZXMgdGhhdCB0aGVyZSBpcyBubwogY29uZGl0aW9uYWwgaW5jbHVzaW9uIG9mIEdvb2ds
ZSBUZXN0IGhlYWRlcnMuICBQbGVhc2UgcmVwb3J0IGFueQogcHJvYmxlbXMgdG8gZ29vZ2xldGVz
dGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tLiAgWW91IGNhbiByZWFkCi1odHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL0dvb2dsZVRlc3RBZHZhbmNlZEd1aWRlIGZvcgor
aHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2dsZXRl
c3QvZG9jcy9hZHZhbmNlZC5tZCBmb3IKIG1vcmUgaW5mb3JtYXRpb24uCiAiIiIKIApAQCAtNjAs
MTUgKzYwLDE4IEBAIF9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikn
CiAKIGltcG9ydCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgc2V0cwordHJ5OgorICBmcm9tIHNldHMg
aW1wb3J0IFNldCBhcyBzZXQgICMgRm9yIFB5dGhvbiAyLjMgY29tcGF0aWJpbGl0eQorZXhjZXB0
IEltcG9ydEVycm9yOgorICBwYXNzCiBpbXBvcnQgc3lzCiAKICMgV2UgYXNzdW1lIHRoYXQgdGhp
cyBmaWxlIGlzIGluIHRoZSBzY3JpcHRzLyBkaXJlY3RvcnkgaW4gdGhlIEdvb2dsZQogIyBUZXN0
IHJvb3QgZGlyZWN0b3J5LgogREVGQVVMVF9HVEVTVF9ST09UX0RJUiA9IG9zLnBhdGguam9pbihv
cy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nKQogCi0jIFJlZ2V4IGZvciBtYXRjaGluZyAn
I2luY2x1ZGUgPGd0ZXN0Ly4uLj4nLgotSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VYID0gcmUuY29t
cGlsZShyJ15ccyojXHMqaW5jbHVkZVxzKjwoZ3Rlc3QvLispPicpCisjIFJlZ2V4IGZvciBtYXRj
aGluZyAnI2luY2x1ZGUgImd0ZXN0Ly4uLiInLgorSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VYID0g
cmUuY29tcGlsZShyJ15ccyojXHMqaW5jbHVkZVxzKiIoZ3Rlc3QvLispIicpCiAKICMgUmVnZXgg
Zm9yIG1hdGNoaW5nICcjaW5jbHVkZSAic3JjLy4uLiInLgogSU5DTFVERV9TUkNfRklMRV9SRUdF
WCA9IHJlLmNvbXBpbGUocideXHMqI1xzKmluY2x1ZGVccyoiKHNyYy8uKykiJykKQEAgLTkwLDEw
ICs5MywxMCBAQCBkZWYgVmVyaWZ5RmlsZUV4aXN0cyhkaXJlY3RvcnksIHJlbGF0aXZlX3BhdGgp
OgogICAiIiIKIAogICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGRpcmVjdG9y
eSwgcmVsYXRpdmVfcGF0aCkpOgotICAgIHByaW50ICdFUlJPUjogQ2Fubm90IGZpbmQgJXMgaW4g
ZGlyZWN0b3J5ICVzLicgJSAocmVsYXRpdmVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSkKLSAgICBwcmludCAoJ1Bs
ZWFzZSBlaXRoZXIgc3BlY2lmeSBhIHZhbGlkIHByb2plY3Qgcm9vdCBkaXJlY3RvcnkgJwotICAg
ICAgICAgICAnb3Igb21pdCBpdCBvbiB0aGUgY29tbWFuZCBsaW5lLicpCisgICAgcHJpbnQoJ0VS
Uk9SOiBDYW5ub3QgZmluZCAlcyBpbiBkaXJlY3RvcnkgJXMuJyAlIChyZWxhdGl2ZV9wYXRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGly
ZWN0b3J5KSkKKyAgICBwcmludCgnUGxlYXNlIGVpdGhlciBzcGVjaWZ5IGEgdmFsaWQgcHJvamVj
dCByb290IGRpcmVjdG9yeSAnCisgICAgICAgICAgJ29yIG9taXQgaXQgb24gdGhlIGNvbW1hbmQg
bGluZS4nKQogICAgIHN5cy5leGl0KDEpCiAKIApAQCAtMTE5LDExICsxMjIsMTEgQEAgZGVmIFZl
cmlmeU91dHB1dEZpbGUob3V0cHV0X2RpciwgcmVsYXRpdmVfcGF0aCk6CiAgICAgIyBUT0RPKHdh
bkBnb29nbGUuY29tKTogVGhlIGZvbGxvd2luZyB1c2VyLWludGVyYWN0aW9uIGRvZXNuJ3QKICAg
ICAjIHdvcmsgd2l0aCBhdXRvbWF0ZWQgcHJvY2Vzc2VzLiAgV2Ugc2hvdWxkIHByb3ZpZGUgYSB3
YXkgZm9yIHRoZQogICAgICMgTWFrZWZpbGUgdG8gZm9yY2Ugb3ZlcndyaXRpbmcgdGhlIGZpbGVz
LgotICAgIHByaW50ICgnJXMgYWxyZWFkeSBleGlzdHMgaW4gZGlyZWN0b3J5ICVzIC0gb3Zlcndy
aXRlIGl0PyAoeS9OKSAnICUKLSAgICAgICAgICAgKHJlbGF0aXZlX3BhdGgsIG91dHB1dF9kaXIp
KQorICAgIHByaW50KCclcyBhbHJlYWR5IGV4aXN0cyBpbiBkaXJlY3RvcnkgJXMgLSBvdmVyd3Jp
dGUgaXQ/ICh5L04pICcgJQorICAgICAgICAgIChyZWxhdGl2ZV9wYXRoLCBvdXRwdXRfZGlyKSkK
ICAgICBhbnN3ZXIgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKS5zdHJpcCgpCiAgICAgaWYgYW5zd2Vy
IG5vdCBpbiBbJ3knLCAnWSddOgotICAgICAgcHJpbnQgJ0FCT1JURUQuJworICAgICAgcHJpbnQo
J0FCT1JURUQuJykKICAgICAgIHN5cy5leGl0KDEpCiAKICAgIyBNYWtlcyBzdXJlIHRoZSBkaXJl
Y3RvcnkgaG9sZGluZyB0aGUgb3V0cHV0IGZpbGUgZXhpc3RzOyBjcmVhdGVzCkBAIC0xNDYsOCAr
MTQ5LDggQEAgZGVmIFZhbGlkYXRlT3V0cHV0RGlyKG91dHB1dF9kaXIpOgogZGVmIEZ1c2VHVGVz
dEgoZ3Rlc3Rfcm9vdCwgb3V0cHV0X2Rpcik6CiAgICIiIlNjYW5zIGZvbGRlciBndGVzdF9yb290
IHRvIGdlbmVyYXRlIGd0ZXN0L2d0ZXN0LmggaW4gb3V0cHV0X2Rpci4iIiIKIAotICBvdXRwdXRf
ZmlsZSA9IGZpbGUob3MucGF0aC5qb2luKG91dHB1dF9kaXIsIEdURVNUX0hfT1VUUFVUKSwgJ3cn
KQotICBwcm9jZXNzZWRfZmlsZXMgPSBzZXRzLlNldCgpICAjIEhvbGRzIGFsbCBndGVzdCBoZWFk
ZXJzIHdlJ3ZlIHByb2Nlc3NlZC4KKyAgb3V0cHV0X2ZpbGUgPSBvcGVuKG9zLnBhdGguam9pbihv
dXRwdXRfZGlyLCBHVEVTVF9IX09VVFBVVCksICd3JykKKyAgcHJvY2Vzc2VkX2ZpbGVzID0gc2V0
KCkgICMgSG9sZHMgYWxsIGd0ZXN0IGhlYWRlcnMgd2UndmUgcHJvY2Vzc2VkLgogCiAgIGRlZiBQ
cm9jZXNzRmlsZShndGVzdF9oZWFkZXJfcGF0aCk6CiAgICAgIiIiUHJvY2Vzc2VzIHRoZSBnaXZl
biBndGVzdCBoZWFkZXIgZmlsZS4iIiIKQEAgLTE1OSwxMCArMTYyLDEwIEBAIGRlZiBGdXNlR1Rl
c3RIKGd0ZXN0X3Jvb3QsIG91dHB1dF9kaXIpOgogICAgIHByb2Nlc3NlZF9maWxlcy5hZGQoZ3Rl
c3RfaGVhZGVyX3BhdGgpCiAKICAgICAjIFJlYWRzIGVhY2ggbGluZSBpbiB0aGUgZ2l2ZW4gZ3Rl
c3QgaGVhZGVyLgotICAgIGZvciBsaW5lIGluIGZpbGUob3MucGF0aC5qb2luKGd0ZXN0X3Jvb3Qs
IGd0ZXN0X2hlYWRlcl9wYXRoKSwgJ3InKToKKyAgICBmb3IgbGluZSBpbiBvcGVuKG9zLnBhdGgu
am9pbihndGVzdF9yb290LCBndGVzdF9oZWFkZXJfcGF0aCksICdyJyk6CiAgICAgICBtID0gSU5D
TFVERV9HVEVTVF9GSUxFX1JFR0VYLm1hdGNoKGxpbmUpCiAgICAgICBpZiBtOgotICAgICAgICAj
IEl0J3MgJyNpbmNsdWRlIDxndGVzdC8uLi4+JyAtIGxldCdzIHByb2Nlc3MgaXQgcmVjdXJzaXZl
bHkuCisgICAgICAgICMgSXQncyAnI2luY2x1ZGUgImd0ZXN0Ly4uLiInIC0gbGV0J3MgcHJvY2Vz
cyBpdCByZWN1cnNpdmVseS4KICAgICAgICAgUHJvY2Vzc0ZpbGUoJ2luY2x1ZGUvJyArIG0uZ3Jv
dXAoMSkpCiAgICAgICBlbHNlOgogICAgICAgICAjIE90aGVyd2lzZSB3ZSBjb3B5IHRoZSBsaW5l
IHVuY2hhbmdlZCB0byB0aGUgb3V0cHV0IGZpbGUuCkBAIC0xNzUsNyArMTc4LDcgQEAgZGVmIEZ1
c2VHVGVzdEgoZ3Rlc3Rfcm9vdCwgb3V0cHV0X2Rpcik6CiBkZWYgRnVzZUdUZXN0QWxsQ2NUb0Zp
bGUoZ3Rlc3Rfcm9vdCwgb3V0cHV0X2ZpbGUpOgogICAiIiJTY2FucyBmb2xkZXIgZ3Rlc3Rfcm9v
dCB0byBnZW5lcmF0ZSBndGVzdC9ndGVzdC1hbGwuY2MgaW4gb3V0cHV0X2ZpbGUuIiIiCiAKLSAg
cHJvY2Vzc2VkX2ZpbGVzID0gc2V0cy5TZXQoKQorICBwcm9jZXNzZWRfZmlsZXMgPSBzZXQoKQog
CiAgIGRlZiBQcm9jZXNzRmlsZShndGVzdF9zb3VyY2VfZmlsZSk6CiAgICAgIiIiUHJvY2Vzc2Vz
IHRoZSBnaXZlbiBndGVzdCBzb3VyY2UgZmlsZS4iIiIKQEAgLTE4NywyMyArMTkwLDIzIEBAIGRl
ZiBGdXNlR1Rlc3RBbGxDY1RvRmlsZShndGVzdF9yb290LCBvdXRwdXRfZmlsZSk6CiAgICAgcHJv
Y2Vzc2VkX2ZpbGVzLmFkZChndGVzdF9zb3VyY2VfZmlsZSkKIAogICAgICMgUmVhZHMgZWFjaCBs
aW5lIGluIHRoZSBnaXZlbiBndGVzdCBzb3VyY2UgZmlsZS4KLSAgICBmb3IgbGluZSBpbiBmaWxl
KG9zLnBhdGguam9pbihndGVzdF9yb290LCBndGVzdF9zb3VyY2VfZmlsZSksICdyJyk6CisgICAg
Zm9yIGxpbmUgaW4gb3Blbihvcy5wYXRoLmpvaW4oZ3Rlc3Rfcm9vdCwgZ3Rlc3Rfc291cmNlX2Zp
bGUpLCAncicpOgogICAgICAgbSA9IElOQ0xVREVfR1RFU1RfRklMRV9SRUdFWC5tYXRjaChsaW5l
KQogICAgICAgaWYgbToKICAgICAgICAgaWYgJ2luY2x1ZGUvJyArIG0uZ3JvdXAoMSkgPT0gR1RF
U1RfU1BJX0hfU0VFRDoKLSAgICAgICAgICAjIEl0J3MgJyNpbmNsdWRlIDxndGVzdC9ndGVzdC1z
cGkuaD4nLiAgVGhpcyBmaWxlIGlzIG5vdAotICAgICAgICAgICMgI2luY2x1ZGVkIGJ5IDxndGVz
dC9ndGVzdC5oPiwgc28gd2UgbmVlZCB0byBwcm9jZXNzIGl0LgorICAgICAgICAgICMgSXQncyAn
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIicuICBUaGlzIGZpbGUgaXMgbm90CisgICAgICAg
ICAgIyAjaW5jbHVkZWQgYnkgImd0ZXN0L2d0ZXN0LmgiLCBzbyB3ZSBuZWVkIHRvIHByb2Nlc3Mg
aXQuCiAgICAgICAgICAgUHJvY2Vzc0ZpbGUoR1RFU1RfU1BJX0hfU0VFRCkKICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAjIEl0J3MgJyNpbmNsdWRlIDxndGVzdC9mb28uaD4nIHdoZXJlIGZvbyBp
cyBub3QgZ3Rlc3Qtc3BpLgotICAgICAgICAgICMgV2UgdHJlYXQgaXQgYXMgJyNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPicsIGFzIGFsbCBvdGhlcgorICAgICAgICAgICMgSXQncyAnI2luY2x1ZGUg
Imd0ZXN0L2Zvby5oIicgd2hlcmUgZm9vIGlzIG5vdCBndGVzdC1zcGkuCisgICAgICAgICAgIyBX
ZSB0cmVhdCBpdCBhcyAnI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiJywgYXMgYWxsIG90aGVyCiAg
ICAgICAgICAgIyBndGVzdCBoZWFkZXJzIGFyZSBiZWluZyBmdXNlZCBpbnRvIGd0ZXN0LmggYW5k
IGNhbm5vdCBiZQogICAgICAgICAgICMgI2luY2x1ZGVkIGRpcmVjdGx5LgogCi0gICAgICAgICAg
IyBUaGVyZSBpcyBubyBuZWVkIHRvICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPiBtb3JlIHRoYW4g
b25jZS4KKyAgICAgICAgICAjIFRoZXJlIGlzIG5vIG5lZWQgdG8gI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiIG1vcmUgdGhhbiBvbmNlLgogICAgICAgICAgIGlmIG5vdCBHVEVTVF9IX1NFRUQgaW4g
cHJvY2Vzc2VkX2ZpbGVzOgogICAgICAgICAgICAgcHJvY2Vzc2VkX2ZpbGVzLmFkZChHVEVTVF9I
X1NFRUQpCi0gICAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZSgnI2luY2x1ZGUgPCVzPlxuJyAl
IChHVEVTVF9IX09VVFBVVCwpKQorICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoJyNpbmNs
dWRlICIlcyJcbicgJSAoR1RFU1RfSF9PVVRQVVQsKSkKICAgICAgIGVsc2U6CiAgICAgICAgIG0g
PSBJTkNMVURFX1NSQ19GSUxFX1JFR0VYLm1hdGNoKGxpbmUpCiAgICAgICAgIGlmIG06CkBAIC0y
MTgsNyArMjIxLDcgQEAgZGVmIEZ1c2VHVGVzdEFsbENjVG9GaWxlKGd0ZXN0X3Jvb3QsIG91dHB1
dF9maWxlKToKIGRlZiBGdXNlR1Rlc3RBbGxDYyhndGVzdF9yb290LCBvdXRwdXRfZGlyKToKICAg
IiIiU2NhbnMgZm9sZGVyIGd0ZXN0X3Jvb3QgdG8gZ2VuZXJhdGUgZ3Rlc3QvZ3Rlc3QtYWxsLmNj
IGluIG91dHB1dF9kaXIuIiIiCiAKLSAgb3V0cHV0X2ZpbGUgPSBmaWxlKG9zLnBhdGguam9pbihv
dXRwdXRfZGlyLCBHVEVTVF9BTExfQ0NfT1VUUFVUKSwgJ3cnKQorICBvdXRwdXRfZmlsZSA9IG9w
ZW4ob3MucGF0aC5qb2luKG91dHB1dF9kaXIsIEdURVNUX0FMTF9DQ19PVVRQVVQpLCAndycpCiAg
IEZ1c2VHVGVzdEFsbENjVG9GaWxlKGd0ZXN0X3Jvb3QsIG91dHB1dF9maWxlKQogICBvdXRwdXRf
ZmlsZS5jbG9zZSgpCiAKQEAgLTI0Miw3ICsyNDUsNyBAQCBkZWYgbWFpbigpOgogICAgICMgZnVz
ZV9ndGVzdF9maWxlcy5weSBHVEVTVF9ST09UX0RJUiBPVVRQVVRfRElSCiAgICAgRnVzZUdUZXN0
KHN5cy5hcmd2WzFdLCBzeXMuYXJndlsyXSkKICAgZWxzZToKLSAgICBwcmludCBfX2RvY19fCisg
ICAgcHJpbnQoX19kb2NfXykKICAgICBzeXMuZXhpdCgxKQogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weQppbmRleCA4
MzA3MTM0YWRhZjRkYTJiZThmYTIzMzIyOTE1MjBkMzljOTRiYjEyLi5iNDNlZmRmNDFlNWMwMjc0
MGY3MmIzNTUzMmJlNWNmMDQ5Nzk0ODM1IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zY3JpcHRzL2dlbl9ndGVzdF9wcmVkX2ltcGwucHkKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc2NyaXB0cy9nZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5CkBAIC0xMTUsMTAgKzExNSw5
IEBAIGRlZiBIZWFkZXJQcmVhbWJsZShuKToKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9H
VEVTVF9QUkVEX0lNUExfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVE
X0lNUExfSF8KIAotLy8gTWFrZXMgc3VyZSB0aGlzIGhlYWRlciBpcyBub3QgaW5jbHVkZWQgYmVm
b3JlIGd0ZXN0LmguCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KLSNlcnJv
ciBEbyBub3QgaW5jbHVkZSBndGVzdF9wcmVkX2ltcGwuaCBkaXJlY3RseS4gIEluY2x1ZGUgZ3Rl
c3QuaCBpbnN0ZWFkLgotI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0hfCisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHRlc3RpbmcgewogCiAvLyBUaGlz
IGhlYWRlciBpbXBsZW1lbnRzIGEgZmFtaWx5IG9mIGdlbmVyaWMgcHJlZGljYXRlIGFzc2VydGlv
bgogLy8gbWFjcm9zOgpAQCAtMjM4LDI3ICsyMzcsMjUgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2Vy
dFByZWQlKG4pc0hlbHBlcihjb25zdCBjaGFyKiBwcmVkX3RleHQiIiIgJSBERUZTCiAgIGltcGwg
Kz0gIiIiKSB7CiAgIGlmIChwcmVkKCUodnMpcykpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7
CiAKLSAgTWVzc2FnZSBtc2c7CiAiIiIgJSBERUZTCiAKLSAgaW1wbCArPSAnICBtc2cgPDwgcHJl
ZF90ZXh0IDw8ICIoIicKKyAgaW1wbCArPSAnICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8
IHByZWRfdGV4dCA8PCAiKCInCiAKICAgaW1wbCArPSBJdGVyKG4sICIiIgotICAgICAgPDwgZSVz
IiIiLCBzZXA9JyA8PCAiLCAiJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlJXMi
IiIsIHNlcD0nIDw8ICIsICInKQogCiAgIGltcGwgKz0gJyA8PCAiKSBldmFsdWF0ZXMgdG8gZmFs
c2UsIHdoZXJlIicKIAogICBpbXBsICs9IEl0ZXIobiwgIiIiCi0gICAgICA8PCAiXFxuIiA8PCBl
JXMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2JXMiIiIpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgIlxcbiIgPDwgZSVzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdiVzIiIiKQogCiAg
IGltcGwgKz0gIiIiOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogCiAvLyBJ
bnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEX0ZPUk1B
VCUobilzLgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9Q
UkVEX0ZPUk1BVCUobilzXyhwcmVkX2Zvcm1hdCwgJSh2cylzLCBvbl9mYWlsdXJlKVxcCi0gIEdU
RVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoJSh2dHMpcywgJSh2cylzKSxcXAorICBHVEVTVF9BU1NF
UlRfKHByZWRfZm9ybWF0KCUodnRzKXMsICUodnMpcyksIFxcCiAgICAgICAgICAgICAgICAgb25f
ZmFpbHVyZSkKIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFT
U0VSVH1fUFJFRCUobilzLiAgRG9uJ3QgdXNlCkBAIC0yOTcsMTYgKzI5NCwxNyBAQCBkZWYgSGVh
ZGVyUG9zdGFtYmxlKCk6CiAKICAgcmV0dXJuICIiIgogCit9ICAvLyBuYW1lc3BhY2UgdGVzdGlu
ZworCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJFRF9JTVBMX0hfCiAi
IiIKIAogCiBkZWYgR2VuZXJhdGVGaWxlKHBhdGgsIGNvbnRlbnQpOgotICAiIiJHaXZlbiBhIGZp
bGUgcGF0aCBhbmQgYSBjb250ZW50IHN0cmluZywgb3ZlcndyaXRlcyBpdCB3aXRoIHRoZQotICBn
aXZlbiBjb250ZW50LiIiIgotCisgICIiIkdpdmVuIGEgZmlsZSBwYXRoIGFuZCBhIGNvbnRlbnQg
c3RyaW5nCisgICAgIG92ZXJ3cml0ZXMgaXQgd2l0aCB0aGUgZ2l2ZW4gY29udGVudC4KKyAgIiIi
CiAgIHByaW50ICdVcGRhdGluZyBmaWxlICVzIC4gLiAuJyAlIHBhdGgKLQogICBmID0gZmlsZShw
YXRoLCAndysnKQogICBwcmludCA+PmYsIGNvbnRlbnQsCiAgIGYuY2xvc2UoKQpAQCAtMzE2LDgg
KzMxNCw4IEBAIGRlZiBHZW5lcmF0ZUZpbGUocGF0aCwgY29udGVudCk6CiAKIGRlZiBHZW5lcmF0
ZUhlYWRlcihuKToKICAgIiIiR2l2ZW4gdGhlIG1heGltdW0gYXJpdHkgbiwgdXBkYXRlcyB0aGUg
aGVhZGVyIGZpbGUgdGhhdCBpbXBsZW1lbnRzCi0gIHRoZSBwcmVkaWNhdGUgYXNzZXJ0aW9ucy4i
IiIKLQorICB0aGUgcHJlZGljYXRlIGFzc2VydGlvbnMuCisgICIiIgogICBHZW5lcmF0ZUZpbGUo
SEVBREVSLAogICAgICAgICAgICAgICAgSGVhZGVyUHJlYW1ibGUobikKICAgICAgICAgICAgICAg
ICsgJycuam9pbihbSW1wbGVtZW50YXRpb25Gb3JBcml0eShpKSBmb3IgaSBpbiBPbmVUbyhuKV0p
CkBAIC0zODYsOCArMzg0LDggQEAgZGVmIFVuaXRUZXN0UHJlYW1ibGUoKToKIAogI2luY2x1ZGUg
PGlvc3RyZWFtPgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9n
dGVzdC1zcGkuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LXNwaS5oIgogCiAvLyBBIHVzZXItZGVmaW5lZCBkYXRhIHR5cGUuCiBzdHJ1Y3QgQm9vbCB7
CkBAIC00NzgsMTUgKzQ3NiwxNCBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1h
dEZ1bmN0aW9uJShuKXMoIiIiICUgREVGUwogICBpZiAoUHJlZEZ1bmN0aW9uJShuKXMoJSh2cylz
KSkKICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIHRlc3Rpbmc6
Ok1lc3NhZ2UgbXNnOwotICBtc2cgPDwgIiIiICUgREVGUworICByZXR1cm4gdGVzdGluZzo6QXNz
ZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCAiIiIgJSBERUZTCiAKICAgdGVzdHMgKz0gSXRlcihu
LCAnZSVzJywgc2VwPScgPDwgIiArICIgPDwgJykKIAogICB0ZXN0cyArPSAiIiIKICAgICAgIDw8
ICIgaXMgZXhwZWN0ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgogICAgICAg
PDwgJSh2X3N1bSlzIDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUo
bXNnKTsKIH0KICIiIiAlIERFRlMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2NyaXB0cy9ndGVzdC1jb25maWcuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3Jp
cHRzL2d0ZXN0LWNvbmZpZy5pbgppbmRleCA5YzcyNjM4NTRiOWY4NjNiNjE4YzcwOGRlMWVmZTBl
OGIxZjcyODBhLi43ODBmODQzMmVmY2MxYWVlYWFhZDA3MDYwODZkM2ZmNjQxMjg1YjY4IDEwMDc1
NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2d0ZXN0LWNvbmZpZy5pbgor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2d0ZXN0LWNvbmZpZy5pbgpAQCAt
MjA5LDcgKzIwOSw3IEBAIGlmIHRlc3QgIiR7dGhpc19iaW5kaXJ9IiA9ICIke3RoaXNfYmluZGly
JSR7YmluZGlyfX0iOyB0aGVuCiAgICMgVGhlIHBhdGggdG8gdGhlIHNjcmlwdCBkb2Vzbid0IGVu
ZCBpbiB0aGUgYmluZGlyIHNlcXVlbmNlIGZyb20gQXV0b2NvbmYsCiAgICMgYXNzdW1lIHRoYXQg
d2UgYXJlIGluIGEgYnVpbGQgdHJlZS4KICAgYnVpbGRfZGlyPWBkaXJuYW1lICR7dGhpc19iaW5k
aXJ9YAotICBzcmNfZGlyPWBjZCAke3RoaXNfYmluZGlyfS9AdG9wX3NyY2RpckA7IHB3ZCAtUGAK
KyAgc3JjX2Rpcj1gY2QgJHt0aGlzX2JpbmRpcn07IGNkIEB0b3Bfc3JjZGlyQDsgcHdkIC1QYAog
CiAgICMgVE9ETyhjaGFuZGxlcmNAZ29vZ2xlLmNvbSk6IFRoaXMgaXMgYSBkYW5nZXJvdXMgZGVw
ZW5kZW5jeSBvbiBsaWJ0b29sLCB3ZQogICAjIHNob3VsZCB3b3JrIHRvIHJlbW92ZSBpdCwgYW5k
L29yIHJlbW92ZSBsaWJ0b29sIGFsdG9nZXRoZXIsIHJlcGxhY2luZyBpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9wdW1wLnB5IGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc2NyaXB0cy9wdW1wLnB5CmluZGV4IGYxNWMxYjZjZWI0YjhiMWJiMGJmNGU4M2Uz
ZWE5M2IzOGM3ODU4MDAuLjVlZmI2NTNjMjA3ZDFmMWMyYWVjYzRkNjkwYmY3MzJlM2MxZDcxYWIg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcHVtcC5weQorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3B1bXAucHkKQEAgLTI5LDcgKzI5LDcg
QEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSIiInB1bXAgdjAuMSAtIFByZXR0
eSBVc2VmdWwgZm9yIE1ldGEgUHJvZ3JhbW1pbmcuCisiIiJwdW1wIHYwLjIuMCAtIFByZXR0eSBV
c2VmdWwgZm9yIE1ldGEgUHJvZ3JhbW1pbmcuCiAKIEEgdG9vbCBmb3IgcHJlcHJvY2Vzc29yIG1l
dGEgcHJvZ3JhbW1pbmcuICBVc2VmdWwgZm9yIGdlbmVyYXRpbmcKIHJlcGV0aXRpdmUgYm9pbGVy
cGxhdGUgY29kZS4gIEVzcGVjaWFsbHkgdXNlZnVsIGZvciB3cml0aW5nIEMrKwpAQCAtNzgsNyAr
NzgsNiBAQCBUT0tFTl9UQUJMRSA9IFsKICAgICAocmUuY29tcGlsZShyJ1wkcmFuZ2VccysnKSwg
JyRyYW5nZScpLAogICAgIChyZS5jb21waWxlKHInXCRbX0EtWmEtel1cdyonKSwgJyRpZCcpLAog
ICAgIChyZS5jb21waWxlKHInXCRcKFwkXCknKSwgJyQoJCknKSwKLSAgICAocmUuY29tcGlsZShy
J1wkXCQuKicpLCAnJCQnKSwKICAgICAocmUuY29tcGlsZShyJ1wkJyksICckJyksCiAgICAgKHJl
LmNvbXBpbGUocidcW1xbXG4/JyksICdbWycpLAogICAgIChyZS5jb21waWxlKHInXF1cXVxuPycp
LCAnXV0nKSwKQEAgLTIyNCw2ICsyMjMsMTcgQEAgZGVmIFN1YlN0cmluZyhsaW5lcywgc3RhcnQs
IGVuZCk6CiAgIHJldHVybiAnJy5qb2luKHJlc3VsdF9saW5lcykKIAogCitkZWYgU3RyaXBNZXRh
Q29tbWVudHMoc3RyKToKKyAgIiIiU3RyaXAgbWV0YSBjb21tZW50cyBmcm9tIGVhY2ggbGluZSBp
biB0aGUgZ2l2ZW4gc3RyaW5nLiIiIgorCisgICMgRmlyc3QsIGNvbXBsZXRlbHkgcmVtb3ZlIGxp
bmVzIGNvbnRhaW5pbmcgbm90aGluZyBidXQgYSBtZXRhCisgICMgY29tbWVudCwgaW5jbHVkaW5n
IHRoZSB0cmFpbGluZyBcbi4KKyAgc3RyID0gcmUuc3ViKHInXlxzKlwkXCQuKlxuJywgJycsIHN0
cikKKworICAjIFRoZW4sIHJlbW92ZSBtZXRhIGNvbW1lbnRzIGZyb20gY29udGVudGZ1bCBsaW5l
cy4KKyAgcmV0dXJuIHJlLnN1YihyJ1xzKlwkXCQuKicsICcnLCBzdHIpCisKKwogZGVmIE1ha2VU
b2tlbihsaW5lcywgc3RhcnQsIGVuZCwgdG9rZW5fdHlwZSk6CiAgICIiIkNyZWF0ZXMgYSBuZXcg
aW5zdGFuY2Ugb2YgVG9rZW4uIiIiCiAKQEAgLTMxMSwxMSArMzIxLDcgQEAgZGVmIFRva2VuaXpl
TGluZXMobGluZXMsIHBvcyk6CiAgICAgICBwcmV2X3Rva2VuID0gTWFrZVRva2VuKGxpbmVzLCBw
b3MsIGZvdW5kLnN0YXJ0LCAnY29kZScpCiAgICAgICBwcmV2X3Rva2VuX3JzdHJpcHBlZCA9IFJT
dHJpcE5ld0xpbmVGcm9tVG9rZW4ocHJldl90b2tlbikKIAotICAgIGlmIGZvdW5kLnRva2VuX3R5
cGUgPT0gJyQkJzogICMgQSBtZXRhIGNvbW1lbnQuCi0gICAgICBpZiBwcmV2X3Rva2VuX3JzdHJp
cHBlZDoKLSAgICAgICAgeWllbGQgcHJldl90b2tlbl9yc3RyaXBwZWQKLSAgICAgIHBvcyA9IEN1
cnNvcihmb3VuZC5lbmQubGluZSArIDEsIDApCi0gICAgZWxpZiBmb3VuZC50b2tlbl90eXBlID09
ICckdmFyJzoKKyAgICBpZiBmb3VuZC50b2tlbl90eXBlID09ICckdmFyJzoKICAgICAgIGlmIHBy
ZXZfdG9rZW5fcnN0cmlwcGVkOgogICAgICAgICB5aWVsZCBwcmV2X3Rva2VuX3JzdHJpcHBlZAog
ICAgICAgeWllbGQgZm91bmQKQEAgLTM3NCw4ICszODAsMTEgQEAgZGVmIFRva2VuaXplTGluZXMo
bGluZXMsIHBvcyk6CiAKIAogZGVmIFRva2VuaXplKHMpOgotICBsaW5lcyA9IHMuc3BsaXRsaW5l
cyhUcnVlKQotICByZXR1cm4gVG9rZW5pemVMaW5lcyhsaW5lcywgQ3Vyc29yKDAsIDApKQorICAi
IiJBIGdlbmVyYXRvciB0aGF0IHlpZWxkcyB0aGUgdG9rZW5zIGluIHRoZSBnaXZlbiBzdHJpbmcu
IiIiCisgIGlmIHMgIT0gJyc6CisgICAgbGluZXMgPSBzLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICBm
b3IgdG9rZW4gaW4gVG9rZW5pemVMaW5lcyhsaW5lcywgQ3Vyc29yKDAsIDApKToKKyAgICAgIHlp
ZWxkIHRva2VuCiAKIAogY2xhc3MgQ29kZU5vZGU6CkBAIC01NjUsMTEgKzU3NCw5IEBAIGRlZiBQ
YXJzZUNvZGVOb2RlKHRva2Vucyk6CiAgIHJldHVybiBDb2RlTm9kZShhdG9taWNfY29kZV9saXN0
KQogCiAKLWRlZiBDb252ZXJ0KGZpbGVfcGF0aCk6Ci0gIHMgPSBmaWxlKGZpbGVfcGF0aCwgJ3In
KS5yZWFkKCkKLSAgdG9rZW5zID0gW10KLSAgZm9yIHRva2VuIGluIFRva2VuaXplKHMpOgotICAg
IHRva2Vucy5hcHBlbmQodG9rZW4pCitkZWYgUGFyc2VUb0FTVChwdW1wX3NyY190ZXh0KToKKyAg
IiIiQ29udmVydCB0aGUgZ2l2ZW4gUHVtcCBzb3VyY2UgdGV4dCBpbnRvIGFuIEFTVC4iIiIKKyAg
dG9rZW5zID0gbGlzdChUb2tlbml6ZShwdW1wX3NyY190ZXh0KSkKICAgY29kZV9ub2RlID0gUGFy
c2VDb2RlTm9kZSh0b2tlbnMpCiAgIHJldHVybiBjb2RlX25vZGUKIApAQCAtNjk3LDE0ICs3MDQs
MTQgQEAgZGVmIFJ1bkNvZGUoZW52LCBjb2RlX25vZGUsIG91dHB1dCk6CiAgICAgUnVuQXRvbWlj
Q29kZShlbnYsIGF0b21pY19jb2RlLCBvdXRwdXQpCiAKIAotZGVmIElzQ29tbWVudChjdXJfbGlu
ZSk6CitkZWYgSXNTaW5nbGVMaW5lQ29tbWVudChjdXJfbGluZSk6CiAgIHJldHVybiAnLy8nIGlu
IGN1cl9saW5lCiAKIAotZGVmIElzSW5QcmVwcm9jZXNzb3JEaXJldmF0aXZlKHByZXZfbGluZXMs
IGN1cl9saW5lKToKK2RlZiBJc0luUHJlcHJvY2Vzc29yRGlyZWN0aXZlKHByZXZfbGluZXMsIGN1
cl9saW5lKToKICAgaWYgY3VyX2xpbmUubHN0cmlwKCkuc3RhcnRzd2l0aCgnIycpOgogICAgIHJl
dHVybiBUcnVlCi0gIHJldHVybiBwcmV2X2xpbmVzICE9IFtdIGFuZCBwcmV2X2xpbmVzWy0xXS5l
bmRzd2l0aCgnXFwnKQorICByZXR1cm4gcHJldl9saW5lcyBhbmQgcHJldl9saW5lc1stMV0uZW5k
c3dpdGgoJ1xcJykKIAogCiBkZWYgV3JhcENvbW1lbnQobGluZSwgb3V0cHV0KToKQEAgLTc2MSw3
ICs3NjgsNyBAQCBkZWYgV3JhcENvZGUobGluZSwgbGluZV9jb25jYXQsIG91dHB1dCk6CiAgICAg
b3V0cHV0LmFwcGVuZChwcmVmaXggKyBjdXJfbGluZS5zdHJpcCgpKQogCiAKLWRlZiBXcmFwUHJl
cHJvY2Vzc29yRGlyZXZhdGl2ZShsaW5lLCBvdXRwdXQpOgorZGVmIFdyYXBQcmVwcm9jZXNzb3JE
aXJlY3RpdmUobGluZSwgb3V0cHV0KToKICAgV3JhcENvZGUobGluZSwgJyBcXCcsIG91dHB1dCkK
IAogCkBAIC03NjksMjkgKzc3NiwzNyBAQCBkZWYgV3JhcFBsYWluQ29kZShsaW5lLCBvdXRwdXQp
OgogICBXcmFwQ29kZShsaW5lLCAnJywgb3V0cHV0KQogCiAKLWRlZiBJc0hlYWRlckd1YXJkT3JJ
bmNsdWRlKGxpbmUpOgorZGVmIElzTXVsdGlMaW5lSVdZVVByYWdtYShsaW5lKToKKyAgcmV0dXJu
IHJlLnNlYXJjaChyJy9cKiBJV1lVIHByYWdtYTogJywgbGluZSkKKworCitkZWYgSXNIZWFkZXJH
dWFyZEluY2x1ZGVPck9uZUxpbmVJV1lVUHJhZ21hKGxpbmUpOgogICByZXR1cm4gKHJlLm1hdGNo
KHInXiMoaWZuZGVmfGRlZmluZXxlbmRpZlxzKi8vKVxzKltcd19dK1xzKiQnLCBsaW5lKSBvcgot
ICAgICAgICAgIHJlLm1hdGNoKHInXiNpbmNsdWRlXHMnLCBsaW5lKSkKKyAgICAgICAgICByZS5t
YXRjaChyJ14jaW5jbHVkZVxzJywgbGluZSkgb3IKKyAgICAgICAgICAjIERvbid0IGJyZWFrIElX
WVUgcHJhZ21hcywgZWl0aGVyOyB0aGF0IGNhdXNlcyBpd3l1LnB5IHByb2JsZW1zLgorICAgICAg
ICAgIHJlLnNlYXJjaChyJy8vIElXWVUgcHJhZ21hOiAnLCBsaW5lKSkKIAogCiBkZWYgV3JhcExv
bmdMaW5lKGxpbmUsIG91dHB1dCk6CiAgIGxpbmUgPSBsaW5lLnJzdHJpcCgpCiAgIGlmIGxlbihs
aW5lKSA8PSA4MDoKICAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCi0gIGVsaWYgSXNDb21tZW50KGxp
bmUpOgotICAgIGlmIElzSGVhZGVyR3VhcmRPckluY2x1ZGUobGluZSk6Ci0gICAgICAjIFRoZSBz
dHlsZSBndWlkZSBtYWRlIGFuIGV4Y2VwdGlvbiB0byBhbGxvdyBsb25nIGhlYWRlciBndWFyZCBs
aW5lcwotICAgICAgIyBhbmQgaW5jbHVkZXMuCisgIGVsaWYgSXNTaW5nbGVMaW5lQ29tbWVudChs
aW5lKToKKyAgICBpZiBJc0hlYWRlckd1YXJkSW5jbHVkZU9yT25lTGluZUlXWVVQcmFnbWEobGlu
ZSk6CisgICAgICAjIFRoZSBzdHlsZSBndWlkZSBtYWRlIGFuIGV4Y2VwdGlvbiB0byBhbGxvdyBs
b25nIGhlYWRlciBndWFyZCBsaW5lcywKKyAgICAgICMgaW5jbHVkZXMgYW5kIElXWVUgcHJhZ21h
cy4KICAgICAgIG91dHB1dC5hcHBlbmQobGluZSkKICAgICBlbHNlOgogICAgICAgV3JhcENvbW1l
bnQobGluZSwgb3V0cHV0KQotICBlbGlmIElzSW5QcmVwcm9jZXNzb3JEaXJldmF0aXZlKG91dHB1
dCwgbGluZSk6Ci0gICAgaWYgSXNIZWFkZXJHdWFyZE9ySW5jbHVkZShsaW5lKToKLSAgICAgICMg
VGhlIHN0eWxlIGd1aWRlIG1hZGUgYW4gZXhjZXB0aW9uIHRvIGFsbG93IGxvbmcgaGVhZGVyIGd1
YXJkIGxpbmVzCi0gICAgICAjIGFuZCBpbmNsdWRlcy4KKyAgZWxpZiBJc0luUHJlcHJvY2Vzc29y
RGlyZWN0aXZlKG91dHB1dCwgbGluZSk6CisgICAgaWYgSXNIZWFkZXJHdWFyZEluY2x1ZGVPck9u
ZUxpbmVJV1lVUHJhZ21hKGxpbmUpOgorICAgICAgIyBUaGUgc3R5bGUgZ3VpZGUgbWFkZSBhbiBl
eGNlcHRpb24gdG8gYWxsb3cgbG9uZyBoZWFkZXIgZ3VhcmQgbGluZXMsCisgICAgICAjIGluY2x1
ZGVzIGFuZCBJV1lVIHByYWdtYXMuCiAgICAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCiAgICAgZWxz
ZToKLSAgICAgIFdyYXBQcmVwcm9jZXNzb3JEaXJldmF0aXZlKGxpbmUsIG91dHB1dCkKKyAgICAg
IFdyYXBQcmVwcm9jZXNzb3JEaXJlY3RpdmUobGluZSwgb3V0cHV0KQorICBlbGlmIElzTXVsdGlM
aW5lSVdZVVByYWdtYShsaW5lKToKKyAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCiAgIGVsc2U6CiAg
ICAgV3JhcFBsYWluQ29kZShsaW5lLCBvdXRwdXQpCiAKQEAgLTgwNSwxNiArODIwLDIxIEBAIGRl
ZiBCZWF1dGlmeUNvZGUoc3RyaW5nKToKICAgcmV0dXJuICdcbicuam9pbihvdXRwdXQyKSArICdc
bicKIAogCitkZWYgQ29udmVydEZyb21QdW1wU291cmNlKHNyY190ZXh0KToKKyAgIiIiUmV0dXJu
IHRoZSB0ZXh0IGdlbmVyYXRlZCBmcm9tIHRoZSBnaXZlbiBQdW1wIHNvdXJjZSB0ZXh0LiIiIgor
ICBhc3QgPSBQYXJzZVRvQVNUKFN0cmlwTWV0YUNvbW1lbnRzKHNyY190ZXh0KSkKKyAgb3V0cHV0
ID0gT3V0cHV0KCkKKyAgUnVuQ29kZShFbnYoKSwgYXN0LCBvdXRwdXQpCisgIHJldHVybiBCZWF1
dGlmeUNvZGUob3V0cHV0LnN0cmluZykKKworCiBkZWYgbWFpbihhcmd2KToKICAgaWYgbGVuKGFy
Z3YpID09IDE6CiAgICAgcHJpbnQgX19kb2NfXwogICAgIHN5cy5leGl0KDEpCiAKICAgZmlsZV9w
YXRoID0gYXJndlstMV0KLSAgYXN0ID0gQ29udmVydChmaWxlX3BhdGgpCi0gIG91dHB1dCA9IE91
dHB1dCgpCi0gIFJ1bkNvZGUoRW52KCksIGFzdCwgb3V0cHV0KQotICBvdXRwdXRfc3RyID0gQmVh
dXRpZnlDb2RlKG91dHB1dC5zdHJpbmcpCisgIG91dHB1dF9zdHIgPSBDb252ZXJ0RnJvbVB1bXBT
b3VyY2UoZmlsZShmaWxlX3BhdGgsICdyJykucmVhZCgpKQogICBpZiBmaWxlX3BhdGguZW5kc3dp
dGgoJy5wdW1wJyk6CiAgICAgb3V0cHV0X2ZpbGVfcGF0aCA9IGZpbGVfcGF0aFs6LTVdCiAgIGVs
c2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3JlbGVhc2Vf
ZG9jcy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcmVsZWFzZV9kb2NzLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjEyOTEzNDdmNjc0YWZkN2FmODQ5NjE1YTc1YjEzOGQ1MjkzZjljZjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3JlbGVhc2Vf
ZG9jcy5weQpAQCAtMCwwICsxLDE1OCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENv
cHlyaWdodCAyMDEzIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisiIiJTY3JpcHQgZm9yIGJyYW5jaGluZyBHb29nbGUgVGVzdC9Nb2NrIHdpa2kg
cGFnZXMgZm9yIGEgbmV3IHZlcnNpb24uCisKK1NZTk9QU0lTCisgICAgICAgcmVsZWFzZV9kb2Nz
LnB5IE5FV19SRUxFQVNFX1ZFUlNJT04KKworICAgICAgIEdvb2dsZSBUZXN0IGFuZCBHb29nbGUg
TW9jaydzIGV4dGVybmFsIHVzZXIgZG9jdW1lbnRhdGlvbiBpcyBpbgorICAgICAgIGludGVybGlu
a2VkIHdpa2kgZmlsZXMuICBXaGVuIHdlIHJlbGVhc2UgYSBuZXcgdmVyc2lvbiBvZgorICAgICAg
IEdvb2dsZSBUZXN0IG9yIEdvb2dsZSBNb2NrLCB3ZSBuZWVkIHRvIGJyYW5jaCB0aGUgd2lraSBm
aWxlcworICAgICAgIHN1Y2ggdGhhdCB1c2VycyBvZiBhIHNwZWNpZmljIHZlcnNpb24gb2YgR29v
Z2xlIFRlc3QvTW9jayBjYW4KKyAgICAgICBsb29rIHVwIGRvY3VtZW5hdGlvbiByZWxldmFudCBm
b3IgdGhhdCB2ZXJzaW9uLiAgVGhpcyBzY3JpcHQKKyAgICAgICBhdXRvbWF0ZXMgdGhhdCBwcm9j
ZXNzIGJ5OgorCisgICAgICAgICAtIGJyYW5jaGluZyB0aGUgY3VycmVudCB3aWtpIHBhZ2VzICh3
aGljaCBkb2N1bWVudCB0aGUKKyAgICAgICAgICAgYmVoYXZpb3Igb2YgdGhlIFNWTiB0cnVuayBo
ZWFkKSB0byBwYWdlcyBmb3IgdGhlIHNwZWNpZmllZAorICAgICAgICAgICB2ZXJzaW9uIChlLmcu
IGJyYW5jaGluZyBGQVEud2lraSB0byBWMl82X0ZBUS53aWtpIHdoZW4KKyAgICAgICAgICAgTkVX
X1JFTEVBU0VfVkVSU0lPTiBpcyAyLjYpOworICAgICAgICAgLSB1cGRhdGluZyB0aGUgbGlua3Mg
aW4gdGhlIGJyYW5jaGVkIGZpbGVzIHRvIHBvaW50IHRvIHRoZSBicmFuY2hlZAorICAgICAgICAg
ICB2ZXJzaW9uIChlLmcuIGEgbGluayBpbiBWMl82X0ZBUS53aWtpIHRoYXQgcG9pbnRlZCB0bwor
ICAgICAgICAgICBQcmltZXIud2lraSNBbmNob3Igd2lsbCBub3cgcG9pbnQgdG8gVjJfNl9Qcmlt
ZXIud2lraSNBbmNob3IpLgorCisgICAgICAgTk9URTogTkVXX1JFTEVBU0VfVkVSU0lPTiBtdXN0
IGJlIGEgTkVXIHZlcnNpb24gbnVtYmVyIGZvcgorICAgICAgIHdoaWNoIHRoZSB3aWtpIHBhZ2Vz
IGRvbid0IHlldCBleGlzdDsgb3RoZXJ3aXNlIHlvdSdsbCBnZXQgU1ZOCisgICAgICAgZXJyb3Jz
IGxpa2UgInN2bjogUGF0aCAnVjFfN19QdW1wTWFudWFsLndpa2knIGlzIG5vdCBhCisgICAgICAg
ZGlyZWN0b3J5IiB3aGVuIHJ1bm5pbmcgdGhlIHNjcmlwdC4KKworRVhBTVBMRQorICAgICAgICQg
Y2QgUEFUSC9UTy9HVEVTVF9TVk5fV09SS1NQQUNFL3RydW5rCisgICAgICAgJCBzY3JpcHRzL3Jl
bGVhc2VfZG9jcy5weSAyLjYgICMgY3JlYXRlIHdpa2kgcGFnZXMgZm9yIHYyLjYKKyAgICAgICAk
IHN2biBzdGF0dXMgICAgICAgICAgICAgICAgICAgIyB2ZXJpZnkgdGhlIGZpbGUgbGlzdAorICAg
ICAgICQgc3ZuIGRpZmYgICAgICAgICAgICAgICAgICAgICAjIHZlcmlmeSB0aGUgZmlsZSBjb250
ZW50cworICAgICAgICQgc3ZuIGNvbW1pdCAtbSAicmVsZWFzZSB3aWtpIHBhZ2VzIGZvciB2Mi42
IgorIiIiCisKK19fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCisK
K2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCisKK2ltcG9ydCBjb21tb24KKworCisj
IFdpa2kgcGFnZXMgdGhhdCBzaG91bGRuJ3QgYmUgYnJhbmNoZWQgZm9yIGV2ZXJ5IGd0ZXN0L2dt
b2NrIHJlbGVhc2UuCitHVEVTVF9VTlZFUlNJT05FRF9XSUtJUyA9IFsnRGV2R3VpZGUud2lraSdd
CitHTU9DS19VTlZFUlNJT05FRF9XSUtJUyA9IFsKKyAgICAnRGVzaWduRG9jLndpa2knLAorICAg
ICdEZXZHdWlkZS53aWtpJywKKyAgICAnS25vd25Jc3N1ZXMud2lraScKKyAgICBdCisKKworZGVm
IERyb3BXaWtpU3VmZml4KHdpa2lfZmlsZW5hbWUpOgorICAiIiJSZW1vdmVzIHRoZSAud2lraSBz
dWZmaXggKGlmIGFueSkgZnJvbSB0aGUgZ2l2ZW4gZmlsZW5hbWUuIiIiCisKKyAgcmV0dXJuICh3
aWtpX2ZpbGVuYW1lWzotbGVuKCcud2lraScpXSBpZiB3aWtpX2ZpbGVuYW1lLmVuZHN3aXRoKCcu
d2lraScpCisgICAgICAgICAgZWxzZSB3aWtpX2ZpbGVuYW1lKQorCisKK2NsYXNzIFdpa2lCcmFu
Y2hlcihvYmplY3QpOgorICAiIiJCcmFuY2hlcyAuLi4iIiIKKworICBkZWYgX19pbml0X18oc2Vs
ZiwgZG90X3ZlcnNpb24pOgorICAgIHNlbGYucHJvamVjdCwgc3ZuX3Jvb3RfcGF0aCA9IGNvbW1v
bi5HZXRTdm5JbmZvKCkKKyAgICBpZiBzZWxmLnByb2plY3Qgbm90IGluICgnZ29vZ2xldGVzdCcs
ICdnb29nbGVtb2NrJyk6CisgICAgICBzeXMuZXhpdCgnVGhpcyBzY3JpcHQgbXVzdCBiZSBydW4g
aW4gYSBndGVzdCBvciBnbW9jayBTVk4gd29ya3NwYWNlLicpCisgICAgc2VsZi53aWtpX2RpciA9
IHN2bl9yb290X3BhdGggKyAnL3dpa2knCisgICAgIyBUdXJuICcyLjYnIHRvICdWMl82XycuCisg
ICAgc2VsZi52ZXJzaW9uX3ByZWZpeCA9ICdWJyArIGRvdF92ZXJzaW9uLnJlcGxhY2UoJy4nLCAn
XycpICsgJ18nCisgICAgc2VsZi5maWxlc190b19icmFuY2ggPSBzZWxmLkdldEZpbGVzVG9CcmFu
Y2goKQorICAgIHBhZ2VfbmFtZXMgPSBbRHJvcFdpa2lTdWZmaXgoZikgZm9yIGYgaW4gc2VsZi5m
aWxlc190b19icmFuY2hdCisgICAgIyBBIGxpbmsgdG8gRm9vLndpa2kgaXMgaW4gb25lIG9mIHRo
ZSBmb2xsb3dpbmcgZm9ybXM6CisgICAgIyAgIFtGb28gd29yZHNdCisgICAgIyAgIFtGb28jQW5j
aG9yIHdvcmRzXQorICAgICMgICBbaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS8uLi4vd2lraS9Gb28g
d29yZHNdCisgICAgIyAgIFtodHRwOi8vY29kZS5nb29nbGUuY29tLy4uLi93aWtpL0ZvbyNBbmNo
b3Igd29yZHNdCisgICAgIyBXZSB3YW50IHRvIHJlcGxhY2UgJ0Zvbycgd2l0aCAnVjJfNl9Gb28n
IGluIHRoZSBhYm92ZSBjYXNlcy4KKyAgICBzZWxmLnNlYXJjaF9mb3JfcmUgPSByZS5jb21waWxl
KAorICAgICAgICAjIFRoaXMgcmVnZXggbWF0Y2hlcyBlaXRoZXIKKyAgICAgICAgIyAgIFtGb28K
KyAgICAgICAgIyBvcgorICAgICAgICAjICAgL3dpa2kvRm9vCisgICAgICAgICMgZm9sbG93ZWQg
YnkgYSBzcGFjZSBvciBhICMsIHdoZXJlIEZvbyBpcyB0aGUgbmFtZSBvZiBhbgorICAgICAgICAj
IHVudmVyc2lvbmVkIHdpa2kgcGFnZS4KKyAgICAgICAgcicoXFt8L3dpa2kvKSglcykoWyAjXSkn
ICUgJ3wnLmpvaW4ocGFnZV9uYW1lcykpCisgICAgc2VsZi5yZXBsYWNlX3dpdGggPSByJ1wxJXNc
MlwzJyAlIChzZWxmLnZlcnNpb25fcHJlZml4LCkKKworICBkZWYgR2V0RmlsZXNUb0JyYW5jaChz
ZWxmKToKKyAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiAud2lraSBmaWxlIG5hbWVzIHRoYXQgbmVl
ZCB0byBiZSBicmFuY2hlZC4iIiIKKworICAgIHVudmVyc2lvbmVkX3dpa2lzID0gKEdURVNUX1VO
VkVSU0lPTkVEX1dJS0lTIGlmIHNlbGYucHJvamVjdCA9PSAnZ29vZ2xldGVzdCcKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlIEdNT0NLX1VOVkVSU0lPTkVEX1dJS0lTKQorICAgIHJldHVy
biBbZiBmb3IgZiBpbiBvcy5saXN0ZGlyKHNlbGYud2lraV9kaXIpCisgICAgICAgICAgICBpZiAo
Zi5lbmRzd2l0aCgnLndpa2knKSBhbmQKKyAgICAgICAgICAgICAgICBub3QgcmUubWF0Y2gocide
VlxkJywgZikgYW5kICAjIEV4Y2x1ZGVkIHZlcnNpb25lZCAud2lraSBmaWxlcy4KKyAgICAgICAg
ICAgICAgICBmIG5vdCBpbiB1bnZlcnNpb25lZF93aWtpcyldCisKKyAgZGVmIEJyYW5jaEZpbGVz
KHNlbGYpOgorICAgICIiIkJyYW5jaGVzIHRoZSAud2lraSBmaWxlcyBuZWVkZWQgdG8gYmUgYnJh
bmNoZWQuIiIiCisKKyAgICBwcmludCAnQnJhbmNoaW5nICVkIC53aWtpIGZpbGVzOicgJSAobGVu
KHNlbGYuZmlsZXNfdG9fYnJhbmNoKSwpCisgICAgb3MuY2hkaXIoc2VsZi53aWtpX2RpcikKKyAg
ICBmb3IgZiBpbiBzZWxmLmZpbGVzX3RvX2JyYW5jaDoKKyAgICAgIGNvbW1hbmQgPSAnc3ZuIGNw
ICVzICVzJXMnICUgKGYsIHNlbGYudmVyc2lvbl9wcmVmaXgsIGYpCisgICAgICBwcmludCBjb21t
YW5kCisgICAgICBvcy5zeXN0ZW0oY29tbWFuZCkKKworICBkZWYgVXBkYXRlTGlua3NJbkJyYW5j
aGVkRmlsZXMoc2VsZik6CisKKyAgICBmb3IgZiBpbiBzZWxmLmZpbGVzX3RvX2JyYW5jaDoKKyAg
ICAgIHNvdXJjZV9maWxlID0gb3MucGF0aC5qb2luKHNlbGYud2lraV9kaXIsIGYpCisgICAgICB2
ZXJzaW9uZWRfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndpa2lfZGlyLCBzZWxmLnZlcnNpb25f
cHJlZml4ICsgZikKKyAgICAgIHByaW50ICdVcGRhdGluZyBsaW5rcyBpbiAlcy4nICUgKHZlcnNp
b25lZF9maWxlLCkKKyAgICAgIHRleHQgPSBmaWxlKHNvdXJjZV9maWxlLCAncicpLnJlYWQoKQor
ICAgICAgbmV3X3RleHQgPSBzZWxmLnNlYXJjaF9mb3JfcmUuc3ViKHNlbGYucmVwbGFjZV93aXRo
LCB0ZXh0KQorICAgICAgZmlsZSh2ZXJzaW9uZWRfZmlsZSwgJ3cnKS53cml0ZShuZXdfdGV4dCkK
KworCitkZWYgbWFpbigpOgorICBpZiBsZW4oc3lzLmFyZ3YpICE9IDI6CisgICAgc3lzLmV4aXQo
X19kb2NfXykKKworICBicmFuY2hlciA9IFdpa2lCcmFuY2hlcihzeXMuYXJndlsxXSkKKyAgYnJh
bmNoZXIuQnJhbmNoRmlsZXMoKQorICBicmFuY2hlci5VcGRhdGVMaW5rc0luQnJhbmNoZWRGaWxl
cygpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgbWFpbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUKaW5kZXggZmZjMGM5MGFkOTk1
NzJkZjk0YWZiNWI2NDEzNmE5YzI5NDg4YWUwNi4uY2RmZjU4NDYzN2I3YTZlOWRmMWZhNDNjZThm
NTg4YzQzODE1ZTU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0
cy90ZXN0L01ha2VmaWxlCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvdGVz
dC9NYWtlZmlsZQpAQCAtMjEsNyArMjEsOSBAQCBTQU1QTEVfRElSID0gLi4vLi4vc2FtcGxlcwog
R1RFU1RfTUFJTl9DQyA9IC4uLy4uL3NyYy9ndGVzdF9tYWluLmNjCiAKICMgRmxhZ3MgcGFzc2Vk
IHRvIHRoZSBwcmVwcm9jZXNzb3IuCi1DUFBGTEFHUyArPSAtSSQoRlVTRURfR1RFU1RfRElSKQor
IyBXZSBoYXZlIG5vIGlkZWEgaGVyZSB3aGV0aGVyIHB0aHJlYWRzIGlzIGF2YWlsYWJsZSBpbiB0
aGUgc3lzdGVtLCBzbworIyBkaXNhYmxlIGl0cyB1c2UuCitDUFBGTEFHUyArPSAtSSQoRlVTRURf
R1RFU1RfRElSKSAtREdURVNUX0hBU19QVEhSRUFEPTAKIAogIyBGbGFncyBwYXNzZWQgdG8gdGhl
IEMrKyBjb21waWxlci4KIENYWEZMQUdTICs9IC1nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zY3JpcHRzL3VwbG9hZC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nj
cmlwdHMvdXBsb2FkLnB5CmluZGV4IDZlNmY5YTE0NzE5ZWY4YzlmZGI2MDNhZDUwYmRkMzVkYzc5
OTZlMmQuLmM4NTJlNGM5MWUwNmVmN2M0OWUwMzg2ODM1MDlmZmQ5NDk1YzgyMGYgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvdXBsb2FkLnB5CisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvdXBsb2FkLnB5CkBAIC0yNDIsNyArMjQyLDcgQEAg
Y2xhc3MgQWJzdHJhY3RScGNTZXJ2ZXIob2JqZWN0KToKICAgICBUaGUgYXV0aGVudGljYXRpb24g
cHJvY2VzcyB3b3JrcyBhcyBmb2xsb3dzOgogICAgICAxKSBXZSBnZXQgYSB1c2VybmFtZSBhbmQg
cGFzc3dvcmQgZnJvbSB0aGUgdXNlcgogICAgICAyKSBXZSB1c2UgQ2xpZW50TG9naW4gdG8gb2J0
YWluIGFuIEFVVEggdG9rZW4gZm9yIHRoZSB1c2VyCi0gICAgICAgIChzZWUgaHR0cDovL2NvZGUu
Z29vZ2xlLmNvbS9hcGlzL2FjY291bnRzL0F1dGhGb3JJbnN0YWxsZWRBcHBzLmh0bWwpLgorICAg
ICAgICAoc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2lkZW50aXR5L3Byb3RvY29s
cy9BdXRoRm9ySW5zdGFsbGVkQXBwcykuCiAgICAgIDMpIFdlIHBhc3MgdGhlIGF1dGggdG9rZW4g
dG8gL19haC9sb2dpbiBvbiB0aGUgc2VydmVyIHRvIG9idGFpbiBhbgogICAgICAgICBhdXRoZW50
aWNhdGlvbiBjb29raWUuIElmIGxvZ2luIHdhcyBzdWNjZXNzZnVsLCBpdCB0cmllcyB0byByZWRp
cmVjdAogICAgICAgICB1cyB0byB0aGUgVVJMIHdlIHByb3ZpZGVkLgpAQCAtNTA2LDcgKzUwNiw3
IEBAIGRlZiBFbmNvZGVNdWx0aXBhcnRGb3JtRGF0YShmaWVsZHMsIGZpbGVzKToKICAgICAoY29u
dGVudF90eXBlLCBib2R5KSByZWFkeSBmb3IgaHR0cGxpYi5IVFRQIGluc3RhbmNlLgogCiAgIFNv
dXJjZToKLSAgICBodHRwOi8vYXNwbi5hY3RpdmVzdGF0ZS5jb20vQVNQTi9Db29rYm9vay9QeXRo
b24vUmVjaXBlLzE0NjMwNgorICAgIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE2MDEx
NjA1MjAwMS9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzE0NjMwNgogICAiIiIKICAgQk9V
TkRBUlkgPSAnLU0tQS1HLUktQy0tLUItTy1VLU4tRC1BLVItWS0nCiAgIENSTEYgPSAnXHJcbicK
QEAgLTczMiw3ICs3MzIsNyBAQCBjbGFzcyBTdWJ2ZXJzaW9uVkNTKFZlcnNpb25Db250cm9sU3lz
dGVtKToKICAgICBlbHNlOgogICAgICAgc2VsZi5yZXZfc3RhcnQgPSBzZWxmLnJldl9lbmQgPSBO
b25lCiAgICAgIyBDYWNoZSBvdXRwdXQgZnJvbSAic3ZuIGxpc3QgLXIgUkVWTk8gZGlybmFtZSIu
Ci0gICAgIyBLZXlzOiBkaXJuYW1lLCBWYWx1ZXM6IDItdHVwbGUgKG91cHV0IGZvciBzdGFydCBy
ZXYgYW5kIGVuZCByZXYpLgorICAgICMgS2V5czogZGlybmFtZSwgVmFsdWVzOiAyLXR1cGxlIChv
dXRwdXQgZm9yIHN0YXJ0IHJldiBhbmQgZW5kIHJldikuCiAgICAgc2VsZi5zdm5sc19jYWNoZSA9
IHt9CiAgICAgIyBTVk4gYmFzZSBVUkwgaXMgcmVxdWlyZWQgdG8gZmV0Y2ggZmlsZXMgZGVsZXRl
ZCBpbiBhbiBvbGRlciByZXZpc2lvbi4KICAgICAjIFJlc3VsdCBpcyBjYWNoZWQgdG8gbm90IGd1
ZXNzIGl0IG92ZXIgYW5kIG92ZXIgYWdhaW4gaW4gR2V0QmFzZUZpbGUoKS4KQEAgLTgwNyw3ICs4
MDcsNyBAQCBjbGFzcyBTdWJ2ZXJzaW9uVkNTKFZlcnNpb25Db250cm9sU3lzdGVtKToKICAgICAj
IHN2biBjYXQgdHJhbnNsYXRlcyBrZXl3b3JkcyBidXQgc3ZuIGRpZmYgZG9lc24ndC4gQXMgYSBy
ZXN1bHQgb2YgdGhpcwogICAgICMgYmVoYXZpb3IgcGF0Y2hpbmcuUGF0Y2hDaHVua3MoKSBmYWls
cyB3aXRoIGEgY2h1bmsgbWlzbWF0Y2ggZXJyb3IuCiAgICAgIyBUaGlzIHBhcnQgd2FzIG9yaWdp
bmFsbHkgd3JpdHRlbiBieSB0aGUgUmV2aWV3IEJvYXJkIGRldmVsb3BtZW50IHRlYW0KLSAgICAj
IHdobyBoYWQgdGhlIHNhbWUgcHJvYmxlbSAoaHR0cDovL3Jldmlld3MucmV2aWV3LWJvYXJkLm9y
Zy9yLzI3Ni8pLgorICAgICMgd2hvIGhhZCB0aGUgc2FtZSBwcm9ibGVtIChodHRwczovL3Jldmll
d3MucmV2aWV3Ym9hcmQub3JnL3IvMjc2LykuCiAgICAgIyBNYXBwaW5nIG9mIGtleXdvcmRzIHRv
IGtub3duIGFsaWFzZXMKICAgICBzdm5fa2V5d29yZHMgPSB7CiAgICAgICAjIFN0YW5kYXJkIGtl
eXdvcmRzCkBAIC04NjAsNyArODYwLDcgQEAgY2xhc3MgU3VidmVyc2lvblZDUyhWZXJzaW9uQ29u
dHJvbFN5c3RlbSk6CiAgICAgICBzdGF0dXNfbGluZXMgPSBzdGF0dXMuc3BsaXRsaW5lcygpCiAg
ICAgICAjIElmIGZpbGUgaXMgaW4gYSBjbCwgdGhlIG91dHB1dCB3aWxsIGJlZ2luIHdpdGgKICAg
ICAgICMgIlxuLS0tIENoYW5nZWxpc3QgJ2NsX25hbWUnOlxuIi4gIFNlZQotICAgICAgIyBodHRw
Oi8vc3ZuLmNvbGxhYi5uZXQvcmVwb3Mvc3ZuL3RydW5rL25vdGVzL2NoYW5nZWxpc3QtZGVzaWdu
LnR4dAorICAgICAgIyBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAwOTA5MTgyMzQ4MTUv
c3ZuLmNvbGxhYi5uZXQvcmVwb3Mvc3ZuL3RydW5rL25vdGVzL2NoYW5nZWxpc3QtZGVzaWduLnR4
dAogICAgICAgaWYgKGxlbihzdGF0dXNfbGluZXMpID09IDMgYW5kCiAgICAgICAgICAgbm90IHN0
YXR1c19saW5lc1swXSBhbmQKICAgICAgICAgICBzdGF0dXNfbGluZXNbMV0uc3RhcnRzd2l0aCgi
LS0tIENoYW5nZWxpc3QiKSk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9z
cmMvZ3Rlc3QtYWxsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWFsbC5j
YwppbmRleCBmZTM0NzY1ZmI2NzIxOGE1NmNiNWUyNTJhNzBlNjhhMzZiYzg4ZDA3Li5iMjE3YTE4
MDA2YjBjOGJkYWY0YTlmOWI2ZDA2ZGU0ZmQ4YWQ5ZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtYWxsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NyYy9ndGVzdC1hbGwuY2MKQEAgLTI2LDIyICsyNiwyMiBAQAogLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAog
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiBtaGV1bGVA
Z29vZ2xlLmNvbSAoTWFya3VzIEhldWxlKQotLy8KLS8vIEdvb2dsZSBDKysgVGVzdGluZyBGcmFt
ZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZy
YW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gU29tZXRpbWVzIGl0J3MgZGVzaXJhYmxlIHRv
IGJ1aWxkIEdvb2dsZSBUZXN0IGJ5IGNvbXBpbGluZyBhIHNpbmdsZSBmaWxlLgogLy8gVGhpcyBm
aWxlIHNlcnZlcyB0aGlzIHB1cnBvc2UuCiAKIC8vIFRoaXMgbGluZSBlbnN1cmVzIHRoYXQgZ3Rl
c3QuaCBjYW4gYmUgY29tcGlsZWQgb24gaXRzIG93biwgZXZlbgogLy8gd2hlbiBpdCdzIGZ1c2Vk
LgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAog
Ly8gVGhlIGZvbGxvd2luZyBsaW5lcyBwdWxsIGluIHRoZSByZWFsIGd0ZXN0ICouY2MgZmlsZXMu
CiAjaW5jbHVkZSAic3JjL2d0ZXN0LmNjIgogI2luY2x1ZGUgInNyYy9ndGVzdC1kZWF0aC10ZXN0
LmNjIgogI2luY2x1ZGUgInNyYy9ndGVzdC1maWxlcGF0aC5jYyIKICNpbmNsdWRlICJzcmMvZ3Rl
c3QtcG9ydC5jYyIKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtcHJpbnRlcnMuY2MiCiAjaW5jbHVkZSAi
c3JjL2d0ZXN0LXRlc3QtcGFydC5jYyIKICNpbmNsdWRlICJzcmMvZ3Rlc3QtdHlwZWQtdGVzdC5j
YyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1kZWF0aC10
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MK
aW5kZXggMGNmNzgyNWJjYWM3OWZhMzVkMGExMjQ4ZTIzMDhhMjRhYTYyN2I4YS4uMDkwODM1NTE2
MTJlM2MzYjliM2JkN2QxZWU2MDZjMThmZmI1ZjczYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MKQEAgLTI2LDUyICsyNiw2NSBAQAogLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhv
cjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiksIHZsYWRsQGdvb2dsZS5jb20gKFZsYWQg
TG9zZXYpCisKIC8vCiAvLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBkZWF0aCB0ZXN0cy4KIAotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5h
bC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgorI2lu
Y2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRl
cm5hbC9jdXN0b20vZ3Rlc3QuaCIKIAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCiAKLSNpZiBH
VEVTVF9PU19NQUMKLSNpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgotI2VuZGlmICAvLyBHVEVTVF9P
U19NQUMKKyMgaWYgR1RFU1RfT1NfTUFDCisjICBpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgorIyBl
bmRpZiAgLy8gR1RFU1RfT1NfTUFDCiAKLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZj
bnRsLmg+Ci0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+CisjIGluY2x1
ZGUgPGVycm5vLmg+CisjIGluY2x1ZGUgPGZjbnRsLmg+CisjIGluY2x1ZGUgPGxpbWl0cy5oPgog
Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbHNlCi0jaW5j
bHVkZSA8c3lzL21tYW4uaD4KLSNpbmNsdWRlIDxzeXMvd2FpdC5oPgotI2VuZGlmICAvLyBHVEVT
VF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09TX0xJTlVYCisjICBpbmNsdWRlIDxzaWduYWwuaD4K
KyMgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRI
X1RFU1QKKyMgaW5jbHVkZSA8c3RkYXJnLmg+CisKKyMgaWYgR1RFU1RfT1NfV0lORE9XUworIyAg
aW5jbHVkZSA8d2luZG93cy5oPgorIyBlbHNlCisjICBpbmNsdWRlIDxzeXMvbW1hbi5oPgorIyAg
aW5jbHVkZSA8c3lzL3dhaXQuaD4KKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworIyBp
ZiBHVEVTVF9PU19RTlgKKyMgIGluY2x1ZGUgPHNwYXduLmg+CisjIGVuZGlmICAvLyBHVEVTVF9P
U19RTlgKKworIyBpZiBHVEVTVF9PU19GVUNIU0lBCisjICBpbmNsdWRlIDxsaWIvZmRpby9pby5o
PgorIyAgaW5jbHVkZSA8bGliL2ZkaW8vc3Bhd24uaD4KKyMgIGluY2x1ZGUgPHppcmNvbi9wcm9j
ZXNzYXJncy5oPgorIyAgaW5jbHVkZSA8emlyY29uL3N5c2NhbGxzLmg+CisjICBpbmNsdWRlIDx6
aXJjb24vc3lzY2FsbHMvcG9ydC5oPgorIyBlbmRpZiAgLy8gR1RFU1RfT1NfRlVDSFNJQQogCi0j
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFs
L2d0ZXN0LXN0cmluZy5oPgorI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCi0vLyBJ
bmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVz
dCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJu
YWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJy
b3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxs
eSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmlu
ZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LW1lc3NhZ2Uu
aCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKICNpbmNsdWRlICJz
cmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCiAK
IG5hbWVzcGFjZSB0ZXN0aW5nIHsKIAogLy8gQ29uc3RhbnRzLgogCiAvLyBUaGUgZGVmYXVsdCBk
ZWF0aCB0ZXN0IHN0eWxlLgotc3RhdGljIGNvbnN0IGNoYXIga0RlZmF1bHREZWF0aFRlc3RTdHls
ZVtdID0gImZhc3QiOworLy8KKy8vIFRoaXMgaXMgZGVmaW5lZCBpbiBpbnRlcm5hbC9ndGVzdC1w
b3J0LmggYXMgImZhc3QiLCBidXQgY2FuIGJlIG92ZXJyaWRkZW4gYnkKKy8vIGEgZGVmaW5pdGlv
biBpbiBpbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oLiBUaGUgcmVjb21tZW5kZWQgdmFsdWUs
IHdoaWNoIGlzCisvLyB1c2VkIGludGVybmFsbHkgYXQgR29vZ2xlLCBpcyAidGhyZWFkc2FmZSIu
CitzdGF0aWMgY29uc3QgY2hhciBrRGVmYXVsdERlYXRoVGVzdFN0eWxlW10gPSBHVEVTVF9ERUZB
VUxUX0RFQVRIX1RFU1RfU1RZTEU7CiAKIEdURVNUX0RFRklORV9zdHJpbmdfKAogICAgIGRlYXRo
X3Rlc3Rfc3R5bGUsCkBAIC0xMDAsMzYgKzExMyw3OSBAQCBHVEVTVF9ERUZJTkVfc3RyaW5nXygK
ICAgICAiSW5kaWNhdGVzIHRoZSBmaWxlLCBsaW5lIG51bWJlciwgdGVtcG9yYWwgaW5kZXggb2Yg
IgogICAgICJ0aGUgc2luZ2xlIGRlYXRoIHRlc3QgdG8gcnVuLCBhbmQgYSBmaWxlIGRlc2NyaXB0
b3IgdG8gIgogICAgICJ3aGljaCBhIHN1Y2Nlc3MgY29kZSBtYXkgYmUgc2VudCwgYWxsIHNlcGFy
YXRlZCBieSAiCi0gICAgImNvbG9ucy4gIFRoaXMgZmxhZyBpcyBzcGVjaWZpZWQgaWYgYW5kIG9u
bHkgaWYgdGhlIGN1cnJlbnQgIgorICAgICJ0aGUgJ3wnIGNoYXJhY3RlcnMuICBUaGlzIGZsYWcg
aXMgc3BlY2lmaWVkIGlmIGFuZCBvbmx5IGlmIHRoZSBjdXJyZW50ICIKICAgICAicHJvY2VzcyBp
cyBhIHN1Yi1wcm9jZXNzIGxhdW5jaGVkIGZvciBydW5uaW5nIGEgdGhyZWFkLXNhZmUgIgogICAg
ICJkZWF0aCB0ZXN0LiAgRk9SIElOVEVSTkFMIFVTRSBPTkxZLiIpOwogfSAgLy8gbmFtZXNwYWNl
IGludGVybmFsCiAKICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogCituYW1lc3BhY2UgaW50ZXJu
YWwgeworCisvLyBWYWxpZCBvbmx5IGZvciBmYXN0IGRlYXRoIHRlc3RzLiBJbmRpY2F0ZXMgdGhl
IGNvZGUgaXMgcnVubmluZyBpbiB0aGUKKy8vIGNoaWxkIHByb2Nlc3Mgb2YgYSBmYXN0IHN0eWxl
IGRlYXRoIHRlc3QuCisjIGlmICFHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19GVUNIU0lB
CitzdGF0aWMgYm9vbCBnX2luX2Zhc3RfZGVhdGhfdGVzdF9jaGlsZCA9IGZhbHNlOworIyBlbmRp
ZgorCisvLyBSZXR1cm5zIGEgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNh
bGxlciBpcyBjdXJyZW50bHkKKy8vIGV4ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiB0aGUgZGVh
dGggdGVzdCBjaGlsZCBwcm9jZXNzLiAgVG9vbHMgc3VjaCBhcworLy8gVmFsZ3JpbmQgaGVhcCBj
aGVja2VycyBtYXkgbmVlZCB0aGlzIHRvIG1vZGlmeSB0aGVpciBiZWhhdmlvciBpbiBkZWF0aAor
Ly8gdGVzdHMuICBJTVBPUlRBTlQ6IFRoaXMgaXMgYW4gaW50ZXJuYWwgdXRpbGl0eS4gIFVzaW5n
IGl0IG1heSBicmVhayB0aGUKKy8vIGltcGxlbWVudGF0aW9uIG9mIGRlYXRoIHRlc3RzLiAgVXNl
ciBjb2RlIE1VU1QgTk9UIHVzZSBpdC4KK2Jvb2wgSW5EZWF0aFRlc3RDaGlsZCgpIHsKKyMgaWYg
R1RFU1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19GVUNIU0lBCisKKyAgLy8gT24gV2luZG93cyBh
bmQgRnVjaHNpYSwgZGVhdGggdGVzdHMgYXJlIHRocmVhZC1zYWZlIHJlZ2FyZGxlc3Mgb2YgdGhl
IHZhbHVlCisgIC8vIG9mIHRoZSBkZWF0aF90ZXN0X3N0eWxlIGZsYWcuCisgIHJldHVybiAhR1RF
U1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkuZW1wdHkoKTsKKworIyBlbHNlCisKKyAg
aWYgKEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPT0gInRocmVhZHNhZmUiKQorICAgIHJl
dHVybiAhR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkuZW1wdHkoKTsKKyAgZWxz
ZQorICAgIHJldHVybiBnX2luX2Zhc3RfZGVhdGhfdGVzdF9jaGlsZDsKKyNlbmRpZgorfQorCit9
ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKwogLy8gRXhpdGVkV2l0aENvZGUgY29uc3RydWN0b3Iu
CiBFeGl0ZWRXaXRoQ29kZTo6RXhpdGVkV2l0aENvZGUoaW50IGV4aXRfY29kZSkgOiBleGl0X2Nv
ZGVfKGV4aXRfY29kZSkgewogfQogCiAvLyBFeGl0ZWRXaXRoQ29kZSBmdW5jdGlvbi1jYWxsIG9w
ZXJhdG9yLgogYm9vbCBFeGl0ZWRXaXRoQ29kZTo6b3BlcmF0b3IoKShpbnQgZXhpdF9zdGF0dXMp
IGNvbnN0IHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MgfHwg
R1RFU1RfT1NfRlVDSFNJQQorCiAgIHJldHVybiBleGl0X3N0YXR1cyA9PSBleGl0X2NvZGVfOwot
I2Vsc2UKKworIyBlbHNlCisKICAgcmV0dXJuIFdJRkVYSVRFRChleGl0X3N0YXR1cykgJiYgV0VY
SVRTVEFUVVMoZXhpdF9zdGF0dXMpID09IGV4aXRfY29kZV87Ci0jZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19GVUNI
U0lBCiB9CiAKLSNpZiAhR1RFU1RfT1NfV0lORE9XUworIyBpZiAhR1RFU1RfT1NfV0lORE9XUyAm
JiAhR1RFU1RfT1NfRlVDSFNJQQogLy8gS2lsbGVkQnlTaWduYWwgY29uc3RydWN0b3IuCiBLaWxs
ZWRCeVNpZ25hbDo6S2lsbGVkQnlTaWduYWwoaW50IHNpZ251bSkgOiBzaWdudW1fKHNpZ251bSkg
ewogfQogCiAvLyBLaWxsZWRCeVNpZ25hbCBmdW5jdGlvbi1jYWxsIG9wZXJhdG9yLgogYm9vbCBL
aWxsZWRCeVNpZ25hbDo6b3BlcmF0b3IoKShpbnQgZXhpdF9zdGF0dXMpIGNvbnN0IHsKKyMgIGlm
IGRlZmluZWQoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8pCisgIHsKKyAgICBib29s
IHJlc3VsdDsKKyAgICBpZiAoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8oc2lnbnVt
XywgZXhpdF9zdGF0dXMsICZyZXN1bHQpKSB7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KyAgfQorIyAgZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklE
RV8pCiAgIHJldHVybiBXSUZTSUdOQUxFRChleGl0X3N0YXR1cykgJiYgV1RFUk1TSUcoZXhpdF9z
dGF0dXMpID09IHNpZ251bV87CiB9Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVu
ZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfRlVDSFNJQQogCiBuYW1lc3Bh
Y2UgaW50ZXJuYWwgewogCkBAIC0xMzcsMjIgKzE5MywyNyBAQCBuYW1lc3BhY2UgaW50ZXJuYWwg
ewogCiAvLyBHZW5lcmF0ZXMgYSB0ZXh0dWFsIGRlc2NyaXB0aW9uIG9mIGEgZ2l2ZW4gZXhpdCBj
b2RlLCBpbiB0aGUgZm9ybWF0CiAvLyBzcGVjaWZpZWQgYnkgd2FpdCgyKS4KLXN0YXRpYyBTdHJp
bmcgRXhpdFN1bW1hcnkoaW50IGV4aXRfY29kZSkgeworc3RhdGljIHN0ZDo6c3RyaW5nIEV4aXRT
dW1tYXJ5KGludCBleGl0X2NvZGUpIHsKICAgTWVzc2FnZSBtOwotI2lmIEdURVNUX09TX1dJTkRP
V1MKKworIyBpZiBHVEVTVF9PU19XSU5ET1dTIHx8IEdURVNUX09TX0ZVQ0hTSUEKKwogICBtIDw8
ICJFeGl0ZWQgd2l0aCBleGl0IHN0YXR1cyAiIDw8IGV4aXRfY29kZTsKLSNlbHNlCisKKyMgZWxz
ZQorCiAgIGlmIChXSUZFWElURUQoZXhpdF9jb2RlKSkgewogICAgIG0gPDwgIkV4aXRlZCB3aXRo
IGV4aXQgc3RhdHVzICIgPDwgV0VYSVRTVEFUVVMoZXhpdF9jb2RlKTsKICAgfSBlbHNlIGlmIChX
SUZTSUdOQUxFRChleGl0X2NvZGUpKSB7CiAgICAgbSA8PCAiVGVybWluYXRlZCBieSBzaWduYWwg
IiA8PCBXVEVSTVNJRyhleGl0X2NvZGUpOwogICB9Ci0jaWZkZWYgV0NPUkVEVU1QCisjICBpZmRl
ZiBXQ09SRURVTVAKICAgaWYgKFdDT1JFRFVNUChleGl0X2NvZGUpKSB7CiAgICAgbSA8PCAiIChj
b3JlIGR1bXBlZCkiOwogICB9Ci0jZW5kaWYKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwor
IyAgZW5kaWYKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfRlVDSFNJ
QQorCiAgIHJldHVybiBtLkdldFN0cmluZygpOwogfQogCkBAIC0xNjIsNDIgKzIyMyw1OSBAQCBi
b29sIEV4aXRlZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1cykgewogICByZXR1cm4gIUV4
aXRlZFdpdGhDb2RlKDApKGV4aXRfc3RhdHVzKTsKIH0KIAotI2lmICFHVEVTVF9PU19XSU5ET1dT
CisjIGlmICFHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19GVUNIU0lBCiAvLyBHZW5lcmF0
ZXMgYSB0ZXh0dWFsIGZhaWx1cmUgbWVzc2FnZSB3aGVuIGEgZGVhdGggdGVzdCBmaW5kcyBtb3Jl
IHRoYW4KIC8vIG9uZSB0aHJlYWQgcnVubmluZywgb3IgY2Fubm90IGRldGVybWluZSB0aGUgbnVt
YmVyIG9mIHRocmVhZHMsIHByaW9yCiAvLyB0byBleGVjdXRpbmcgdGhlIGdpdmVuIHN0YXRlbWVu
dC4gIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUKIC8vIGNhbGxlciBub3QgdG8gcGFz
cyBhIHRocmVhZF9jb3VudCBvZiAxLgotc3RhdGljIFN0cmluZyBEZWF0aFRlc3RUaHJlYWRXYXJu
aW5nKHNpemVfdCB0aHJlYWRfY291bnQpIHsKK3N0YXRpYyBzdGQ6OnN0cmluZyBEZWF0aFRlc3RU
aHJlYWRXYXJuaW5nKHNpemVfdCB0aHJlYWRfY291bnQpIHsKICAgTWVzc2FnZSBtc2c7CiAgIG1z
ZyA8PCAiRGVhdGggdGVzdHMgdXNlIGZvcmsoKSwgd2hpY2ggaXMgdW5zYWZlIHBhcnRpY3VsYXJs
eSIKICAgICAgIDw8ICIgaW4gYSB0aHJlYWRlZCBjb250ZXh0LiBGb3IgdGhpcyB0ZXN0LCAiIDw8
IEdURVNUX05BTUVfIDw8ICIgIjsKLSAgaWYgKHRocmVhZF9jb3VudCA9PSAwKQorICBpZiAodGhy
ZWFkX2NvdW50ID09IDApIHsKICAgICBtc2cgPDwgImNvdWxkbid0IGRldGVjdCB0aGUgbnVtYmVy
IG9mIHRocmVhZHMuIjsKLSAgZWxzZQorICB9IGVsc2UgewogICAgIG1zZyA8PCAiZGV0ZWN0ZWQg
IiA8PCB0aHJlYWRfY291bnQgPDwgIiB0aHJlYWRzLiI7CisgIH0KKyAgbXNnIDw8ICIgU2VlICIK
KyAgICAgICAgICJodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvYmxvYi9tYXN0
ZXIvZ29vZ2xldGVzdC9kb2NzLyIKKyAgICAgICAgICJhZHZhbmNlZC5tZCNkZWF0aC10ZXN0cy1h
bmQtdGhyZWFkcyIKKyAgICAgIDw8ICIgZm9yIG1vcmUgZXhwbGFuYXRpb24gYW5kIHN1Z2dlc3Rl
ZCBzb2x1dGlvbnMsIGVzcGVjaWFsbHkgaWYiCisgICAgICA8PCAiIHRoaXMgaXMgdGhlIGxhc3Qg
bWVzc2FnZSB5b3Ugc2VlIGJlZm9yZSB5b3VyIHRlc3QgdGltZXMgb3V0LiI7CiAgIHJldHVybiBt
c2cuR2V0U3RyaW5nKCk7CiB9Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlm
ICAvLyAhR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfRlVDSFNJQQogCiAvLyBGbGFnIGNo
YXJhY3RlcnMgZm9yIHJlcG9ydGluZyBhIGRlYXRoIHRlc3QgdGhhdCBkaWQgbm90IGRpZS4KIHN0
YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RMaXZlZCA9ICdMJzsKIHN0YXRpYyBjb25zdCBjaGFy
IGtEZWF0aFRlc3RSZXR1cm5lZCA9ICdSJzsKK3N0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RU
aHJldyA9ICdUJzsKIHN0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RJbnRlcm5hbEVycm9yID0g
J0knOwogCi0vLyBBbiBlbnVtZXJhdGlvbiBkZXNjcmliaW5nIGFsbCBvZiB0aGUgcG9zc2libGUg
d2F5cyB0aGF0IGEgZGVhdGggdGVzdAotLy8gY2FuIGNvbmNsdWRlLiAgRElFRCBtZWFucyB0aGF0
IHRoZSBwcm9jZXNzIGRpZWQgd2hpbGUgZXhlY3V0aW5nIHRoZQotLy8gdGVzdCBjb2RlOyBMSVZF
RCBtZWFucyB0aGF0IHByb2Nlc3MgbGl2ZWQgYmV5b25kIHRoZSBlbmQgb2YgdGhlIHRlc3QKLS8v
IGNvZGU7IGFuZCBSRVRVUk5FRCBtZWFucyB0aGF0IHRoZSB0ZXN0IHN0YXRlbWVudCBhdHRlbXB0
ZWQgYSAicmV0dXJuLCIKLS8vIHdoaWNoIGlzIG5vdCBhbGxvd2VkLiAgSU5fUFJPR1JFU1MgbWVh
bnMgdGhlIHRlc3QgaGFzIG5vdCB5ZXQKLS8vIGNvbmNsdWRlZC4KLWVudW0gRGVhdGhUZXN0T3V0
Y29tZSB7IElOX1BST0dSRVNTLCBESUVELCBMSVZFRCwgUkVUVVJORUQgfTsKKyNpZiBHVEVTVF9P
U19GVUNIU0lBCisKKy8vIEZpbGUgZGVzY3JpcHRvciB1c2VkIGZvciB0aGUgcGlwZSBpbiB0aGUg
Y2hpbGQgcHJvY2Vzcy4KK3N0YXRpYyBjb25zdCBpbnQga0Z1Y2hzaWFSZWFkUGlwZUZkID0gMzsK
KworI2VuZGlmCisKKy8vIEFuIGVudW1lcmF0aW9uIGRlc2NyaWJpbmcgYWxsIG9mIHRoZSBwb3Nz
aWJsZSB3YXlzIHRoYXQgYSBkZWF0aCB0ZXN0IGNhbgorLy8gY29uY2x1ZGUuICBESUVEIG1lYW5z
IHRoYXQgdGhlIHByb2Nlc3MgZGllZCB3aGlsZSBleGVjdXRpbmcgdGhlIHRlc3QKKy8vIGNvZGU7
IExJVkVEIG1lYW5zIHRoYXQgcHJvY2VzcyBsaXZlZCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgdGVz
dCBjb2RlOworLy8gUkVUVVJORUQgbWVhbnMgdGhhdCB0aGUgdGVzdCBzdGF0ZW1lbnQgYXR0ZW1w
dGVkIHRvIGV4ZWN1dGUgYSByZXR1cm4KKy8vIHN0YXRlbWVudCwgd2hpY2ggaXMgbm90IGFsbG93
ZWQ7IFRIUkVXIG1lYW5zIHRoYXQgdGhlIHRlc3Qgc3RhdGVtZW50CisvLyByZXR1cm5lZCBjb250
cm9sIGJ5IHRocm93aW5nIGFuIGV4Y2VwdGlvbi4gIElOX1BST0dSRVNTIG1lYW5zIHRoZSB0ZXN0
CisvLyBoYXMgbm90IHlldCBjb25jbHVkZWQuCisvLyBGSVhNRTogVW5pZnkgbmFtZXMgYW5kIHBv
c3NpYmx5IHZhbHVlcyBmb3IKKy8vIEFib3J0UmVhc29uLCBEZWF0aFRlc3RPdXRjb21lLCBhbmQg
ZmxhZyBjaGFyYWN0ZXJzIGFib3ZlLgorZW51bSBEZWF0aFRlc3RPdXRjb21lIHsgSU5fUFJPR1JF
U1MsIERJRUQsIExJVkVELCBSRVRVUk5FRCwgVEhSRVcgfTsKIAogLy8gUm91dGluZSBmb3IgYWJv
cnRpbmcgdGhlIHByb2dyYW0gd2hpY2ggaXMgc2FmZSB0byBjYWxsIGZyb20gYW4KIC8vIGV4ZWMt
c3R5bGUgZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzLCBpbiB3aGljaCBjYXNlIHRoZSBlcnJvcgog
Ly8gbWVzc2FnZSBpcyBwcm9wYWdhdGVkIGJhY2sgdG8gdGhlIHBhcmVudCBwcm9jZXNzLiAgT3Ro
ZXJ3aXNlLCB0aGUKIC8vIG1lc3NhZ2UgaXMgc2ltcGx5IHByaW50ZWQgdG8gc3RkZXJyLiAgSW4g
ZWl0aGVyIGNhc2UsIHRoZSBwcm9ncmFtCiAvLyB0aGVuIGV4aXRzIHdpdGggc3RhdHVzIDEuCi12
b2lkIERlYXRoVGVzdEFib3J0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgeworc3RhdGljIHZvaWQg
RGVhdGhUZXN0QWJvcnQoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsKICAgLy8gT24gYSBQ
T1NJWCBzeXN0ZW0sIHRoaXMgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCBmcm9tIGEgdGhyZWFkc2Fm
ZS1zdHlsZQogICAvLyBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nlc3MsIHdoaWNoIG9wZXJhdGVzIG9u
IGEgdmVyeSBzbWFsbCBzdGFjay4gIFVzZQogICAvLyB0aGUgaGVhcCBmb3IgYW55IGFkZGl0aW9u
YWwgbm9uLW1pbnVzY3VsZSBtZW1vcnkgcmVxdWlyZW1lbnRzLgpAQCAtMjEyLDE4ICsyOTAsMTkg
QEAgdm9pZCBEZWF0aFRlc3RBYm9ydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsKICAgfSBlbHNl
IHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgbWVzc2FnZS5jX3N0cigpKTsKICAgICBmZmx1
c2goc3RkZXJyKTsKLSAgICBhYm9ydCgpOworICAgIHBvc2l4OjpBYm9ydCgpOwogICB9CiB9CiAK
IC8vIEEgcmVwbGFjZW1lbnQgZm9yIENIRUNLIHRoYXQgY2FsbHMgRGVhdGhUZXN0QWJvcnQgaWYg
dGhlIGFzc2VydGlvbgogLy8gZmFpbHMuCi0jZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tf
KGV4cHJlc3Npb24pIFwKKyMgZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGV4cHJlc3Np
b24pIFwKICAgZG8geyBcCiAgICAgaWYgKCE6OnRlc3Rpbmc6OmludGVybmFsOjpJc1RydWUoZXhw
cmVzc2lvbikpIHsgXAotICAgICAgRGVhdGhUZXN0QWJvcnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
U3RyaW5nOjpGb3JtYXQoIFwKLSAgICAgICAgICAiQ0hFQ0sgZmFpbGVkOiBGaWxlICVzLCBsaW5l
ICVkOiAlcyIsIFwKLSAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sICNleHByZXNzaW9uKSk7
IFwKKyAgICAgIERlYXRoVGVzdEFib3J0KCBcCisgICAgICAgICAgOjpzdGQ6OnN0cmluZygiQ0hF
Q0sgZmFpbGVkOiBGaWxlICIpICsgX19GSUxFX18gKyAgIiwgbGluZSAiIFwKKyAgICAgICAgICAr
IDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmVhbWFibGVUb1N0cmluZyhfX0xJTkVfXykgKyAiOiAi
IFwKKyAgICAgICAgICArICNleHByZXNzaW9uKTsgXAogICAgIH0gXAogICB9IHdoaWxlICg6OnRl
c3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgpKQogCkBAIC0yMzQsMjIgKzMxMywyMyBAQCB2
b2lkIERlYXRoVGVzdEFib3J0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewogLy8gZXZhbHVhdGVz
IHRoZSBleHByZXNzaW9uIGFzIGxvbmcgYXMgaXQgZXZhbHVhdGVzIHRvIC0xIGFuZCBzZXRzCiAv
LyBlcnJubyB0byBFSU5UUi4gIElmIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAtMSBidXQg
ZXJybm8gaXMKIC8vIHNvbWV0aGluZyBvdGhlciB0aGFuIEVJTlRSLCBEZWF0aFRlc3RBYm9ydCBp
cyBjYWxsZWQuCi0jZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oZXhwcmVz
c2lvbikgXAorIyBkZWZpbmUgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhleHByZXNz
aW9uKSBcCiAgIGRvIHsgXAogICAgIGludCBndGVzdF9yZXR2YWw7IFwKICAgICBkbyB7IFwKICAg
ICAgIGd0ZXN0X3JldHZhbCA9IChleHByZXNzaW9uKTsgXAogICAgIH0gd2hpbGUgKGd0ZXN0X3Jl
dHZhbCA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUik7IFwKICAgICBpZiAoZ3Rlc3RfcmV0dmFsID09
IC0xKSB7IFwKLSAgICAgIERlYXRoVGVzdEFib3J0KDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmlu
Zzo6Rm9ybWF0KCBcCi0gICAgICAgICAgIkNIRUNLIGZhaWxlZDogRmlsZSAlcywgbGluZSAlZDog
JXMgIT0gLTEiLCBcCi0gICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCAjZXhwcmVzc2lvbikp
OyBcCisgICAgICBEZWF0aFRlc3RBYm9ydCggXAorICAgICAgICAgIDo6c3RkOjpzdHJpbmcoIkNI
RUNLIGZhaWxlZDogRmlsZSAiKSArIF9fRklMRV9fICsgIiwgbGluZSAiIFwKKyAgICAgICAgICAr
IDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmVhbWFibGVUb1N0cmluZyhfX0xJTkVfXykgKyAiOiAi
IFwKKyAgICAgICAgICArICNleHByZXNzaW9uICsgIiAhPSAtMSIpOyBcCiAgICAgfSBcCiAgIH0g
d2hpbGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCiAKIC8vIFJldHVybnMg
dGhlIG1lc3NhZ2UgZGVzY3JpYmluZyB0aGUgbGFzdCBzeXN0ZW0gZXJyb3IgaW4gZXJybm8uCi1T
dHJpbmcgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKSB7Ci0gICAgcmV0dXJuIFN0cmluZyhlcnJu
byA9PSAwID8gIiIgOiBwb3NpeDo6U3RyRXJyb3IoZXJybm8pKTsKK3N0ZDo6c3RyaW5nIEdldExh
c3RFcnJub0Rlc2NyaXB0aW9uKCkgeworICAgIHJldHVybiBlcnJubyA9PSAwID8gIiIgOiBwb3Np
eDo6U3RyRXJyb3IoZXJybm8pOwogfQogCiAvLyBUaGlzIGlzIGNhbGxlZCBmcm9tIGEgZGVhdGgg
dGVzdCBwYXJlbnQgcHJvY2VzcyB0byByZWFkIGEgZmFpbHVyZQpAQCAtMjk5LDExICszNzksMTEg
QEAgY29uc3QgY2hhciogRGVhdGhUZXN0OjpMYXN0TWVzc2FnZSgpIHsKICAgcmV0dXJuIGxhc3Rf
ZGVhdGhfdGVzdF9tZXNzYWdlXy5jX3N0cigpOwogfQogCi12b2lkIERlYXRoVGVzdDo6c2V0X2xh
c3RfZGVhdGhfdGVzdF9tZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewordm9pZCBEZWF0
aFRlc3Q6OnNldF9sYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVz
c2FnZSkgewogICBsYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZV8gPSBtZXNzYWdlOwogfQogCi1TdHJp
bmcgRGVhdGhUZXN0OjpsYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZV87CitzdGQ6OnN0cmluZyBEZWF0
aFRlc3Q6Omxhc3RfZGVhdGhfdGVzdF9tZXNzYWdlXzsKIAogLy8gUHJvdmlkZXMgY3Jvc3MgcGxh
dGZvcm0gaW1wbGVtZW50YXRpb24gZm9yIHNvbWUgZGVhdGggZnVuY3Rpb25hbGl0eS4KIGNsYXNz
IERlYXRoVGVzdEltcGwgOiBwdWJsaWMgRGVhdGhUZXN0IHsKQEAgLTM4OCw2ICs0NjgsOSBAQCB2
b2lkIERlYXRoVGVzdEltcGw6OlJlYWRBbmRJbnRlcnByZXRTdGF0dXNCeXRlKCkgewogICAgICAg
Y2FzZSBrRGVhdGhUZXN0UmV0dXJuZWQ6CiAgICAgICAgIHNldF9vdXRjb21lKFJFVFVSTkVEKTsK
ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIGtEZWF0aFRlc3RUaHJldzoKKyAgICAgICAgc2V0
X291dGNvbWUoVEhSRVcpOworICAgICAgICBicmVhazsKICAgICAgIGNhc2Uga0RlYXRoVGVzdExp
dmVkOgogICAgICAgICBzZXRfb3V0Y29tZShMSVZFRCk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDE2
LDE5ICs0OTksNDYgQEAgdm9pZCBEZWF0aFRlc3RJbXBsOjpBYm9ydChBYm9ydFJlYXNvbiByZWFz
b24pIHsKICAgLy8gaXQgZmluZHMgYW55IGRhdGEgaW4gb3VyIHBpcGUuICBTbywgaGVyZSB3ZSB3
cml0ZSBhIHNpbmdsZSBmbGFnIGJ5dGUKICAgLy8gdG8gdGhlIHBpcGUsIHRoZW4gZXhpdC4KICAg
Y29uc3QgY2hhciBzdGF0dXNfY2ggPQotICAgICAgcmVhc29uID09IFRFU1RfRElEX05PVF9ESUUg
PyBrRGVhdGhUZXN0TGl2ZWQgOiBrRGVhdGhUZXN0UmV0dXJuZWQ7CisgICAgICByZWFzb24gPT0g
VEVTVF9ESURfTk9UX0RJRSA/IGtEZWF0aFRlc3RMaXZlZCA6CisgICAgICByZWFzb24gPT0gVEVT
VF9USFJFV19FWENFUFRJT04gPyBrRGVhdGhUZXN0VGhyZXcgOiBrRGVhdGhUZXN0UmV0dXJuZWQ7
CisKICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhwb3NpeDo6V3JpdGUod3JpdGVf
ZmQoKSwgJnN0YXR1c19jaCwgMSkpOwotICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExf
KHBvc2l4OjpDbG9zZSh3cml0ZV9mZCgpKSk7CisgIC8vIFdlIGFyZSBsZWFraW5nIHRoZSBkZXNj
cmlwdG9yIGhlcmUgYmVjYXVzZSBvbiBzb21lIHBsYXRmb3JtcyAoaS5lLiwKKyAgLy8gd2hlbiBi
dWlsdCBhcyBXaW5kb3dzIERMTCksIGRlc3RydWN0b3JzIG9mIGdsb2JhbCBvYmplY3RzIHdpbGwg
c3RpbGwKKyAgLy8gcnVuIGFmdGVyIGNhbGxpbmcgX2V4aXQoKS4gT24gc3VjaCBzeXN0ZW1zLCB3
cml0ZV9mZF8gd2lsbCBiZQorICAvLyBpbmRpcmVjdGx5IGNsb3NlZCBmcm9tIHRoZSBkZXN0cnVj
dG9yIG9mIFVuaXRUZXN0SW1wbCwgY2F1c2luZyBkb3VibGUKKyAgLy8gY2xvc2UgaWYgaXQgaXMg
YWxzbyBjbG9zZWQgaGVyZS4gT24gZGVidWcgY29uZmlndXJhdGlvbnMsIGRvdWJsZSBjbG9zZQor
ICAvLyBtYXkgYXNzZXJ0LiBBcyB0aGVyZSBhcmUgbm8gaW4tcHJvY2VzcyBidWZmZXJzIHRvIGZs
dXNoIGhlcmUsIHdlIGFyZQorICAvLyByZWx5aW5nIG9uIHRoZSBPUyB0byBjbG9zZSB0aGUgZGVz
Y3JpcHRvciBhZnRlciB0aGUgcHJvY2VzcyB0ZXJtaW5hdGVzCisgIC8vIHdoZW4gdGhlIGRlc3Ry
dWN0b3JzIGFyZSBub3QgcnVuLgogICBfZXhpdCgxKTsgIC8vIEV4aXRzIHcvbyBhbnkgbm9ybWFs
IGV4aXQgaG9va3MgKHdlIHdlcmUgc3VwcG9zZWQgdG8gY3Jhc2gpCiB9CiAKKy8vIFJldHVybnMg
YW4gaW5kZW50ZWQgY29weSBvZiBzdGRlcnIgb3V0cHV0IGZvciBhIGRlYXRoIHRlc3QuCisvLyBU
aGlzIG1ha2VzIGRpc3Rpbmd1aXNoaW5nIGRlYXRoIHRlc3Qgb3V0cHV0IGxpbmVzIGZyb20gcmVn
dWxhciBsb2cgbGluZXMKKy8vIG11Y2ggZWFzaWVyLgorc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9y
bWF0RGVhdGhUZXN0T3V0cHV0KGNvbnN0IDo6c3RkOjpzdHJpbmcmIG91dHB1dCkgeworICA6OnN0
ZDo6c3RyaW5nIHJldDsKKyAgZm9yIChzaXplX3QgYXQgPSAwOyA7ICkgeworICAgIGNvbnN0IHNp
emVfdCBsaW5lX2VuZCA9IG91dHB1dC5maW5kKCdcbicsIGF0KTsKKyAgICByZXQgKz0gIlsgIERF
QVRIICAgXSAiOworICAgIGlmIChsaW5lX2VuZCA9PSA6OnN0ZDo6c3RyaW5nOjpucG9zKSB7Cisg
ICAgICByZXQgKz0gb3V0cHV0LnN1YnN0cihhdCk7CisgICAgICBicmVhazsKKyAgICB9CisgICAg
cmV0ICs9IG91dHB1dC5zdWJzdHIoYXQsIGxpbmVfZW5kICsgMSAtIGF0KTsKKyAgICBhdCA9IGxp
bmVfZW5kICsgMTsKKyAgfQorICByZXR1cm4gcmV0OworfQorCiAvLyBBc3Nlc3NlcyB0aGUgc3Vj
Y2VzcyBvciBmYWlsdXJlIG9mIGEgZGVhdGggdGVzdCwgdXNpbmcgYm90aCBwcml2YXRlCiAvLyBt
ZW1iZXJzIHdoaWNoIGhhdmUgcHJldmlvdXNseSBiZWVuIHNldCwgYW5kIG9uZSBhcmd1bWVudDoK
IC8vCiAvLyBQcml2YXRlIGRhdGEgbWVtYmVyczoKIC8vICAgb3V0Y29tZTogIEFuIGVudW1lcmF0
aW9uIGRlc2NyaWJpbmcgaG93IHRoZSBkZWF0aCB0ZXN0Ci0vLyAgICAgICAgICAgICBjb25jbHVk
ZWQ6IERJRUQsIExJVkVELCBvciBSRVRVUk5FRC4gIFRoZSBkZWF0aCB0ZXN0IGZhaWxzCi0vLyAg
ICAgICAgICAgICBpbiB0aGUgbGF0dGVyIHR3byBjYXNlcy4KKy8vICAgICAgICAgICAgIGNvbmNs
dWRlZDogRElFRCwgTElWRUQsIFRIUkVXLCBvciBSRVRVUk5FRC4gIFRoZSBkZWF0aCB0ZXN0Cisv
LyAgICAgICAgICAgICBmYWlscyBpbiB0aGUgbGF0dGVyIHRocmVlIGNhc2VzLgogLy8gICBzdGF0
dXM6ICAgVGhlIGV4aXQgc3RhdHVzIG9mIHRoZSBjaGlsZCBwcm9jZXNzLiBPbiAqbml4LCBpdCBp
cyBpbiB0aGUKIC8vICAgICAgICAgICAgIGluIHRoZSBmb3JtYXQgc3BlY2lmaWVkIGJ5IHdhaXQo
MikuIE9uIFdpbmRvd3MsIHRoaXMgaXMgdGhlCiAvLyAgICAgICAgICAgICB2YWx1ZSBzdXBwbGll
ZCB0byB0aGUgRXhpdFByb2Nlc3MoKSBBUEkgb3IgYSBudW1lcmljIGNvZGUKQEAgLTQ0OCw3ICs1
NTgsNyBAQCBib29sIERlYXRoVGVzdEltcGw6OlBhc3NlZChib29sIHN0YXR1c19vaykgewogICBp
ZiAoIXNwYXduZWQoKSkKICAgICByZXR1cm4gZmFsc2U7CiAKLSAgY29uc3QgU3RyaW5nIGVycm9y
X21lc3NhZ2UgPSBHZXRDYXB0dXJlZFN0ZGVycigpOworICBjb25zdCBzdGQ6OnN0cmluZyBlcnJv
cl9tZXNzYWdlID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKIAogICBib29sIHN1Y2Nlc3MgPSBmYWxz
ZTsKICAgTWVzc2FnZSBidWZmZXI7CkBAIC00NTcsMjUgKzU2NywzNSBAQCBib29sIERlYXRoVGVz
dEltcGw6OlBhc3NlZChib29sIHN0YXR1c19vaykgewogICBzd2l0Y2ggKG91dGNvbWUoKSkgewog
ICAgIGNhc2UgTElWRUQ6CiAgICAgICBidWZmZXIgPDwgIiAgICBSZXN1bHQ6IGZhaWxlZCB0byBk
aWUuXG4iCi0gICAgICAgICAgICAgPDwgIiBFcnJvciBtc2c6ICIgPDwgZXJyb3JfbWVzc2FnZTsK
KyAgICAgICAgICAgICA8PCAiIEVycm9yIG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0
KGVycm9yX21lc3NhZ2UpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBUSFJFVzoKKyAgICAgIGJ1
ZmZlciA8PCAiICAgIFJlc3VsdDogdGhyZXcgYW4gZXhjZXB0aW9uLlxuIgorICAgICAgICAgICAg
IDw8ICIgRXJyb3IgbXNnOlxuIiA8PCBGb3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2Fn
ZSk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFJFVFVSTkVEOgogICAgICAgYnVmZmVyIDw8ICIg
ICAgUmVzdWx0OiBpbGxlZ2FsIHJldHVybiBpbiB0ZXN0IHN0YXRlbWVudC5cbiIKLSAgICAgICAg
ICAgICA8PCAiIEVycm9yIG1zZzogIiA8PCBlcnJvcl9tZXNzYWdlOworICAgICAgICAgICAgIDw8
ICIgRXJyb3IgbXNnOlxuIiA8PCBGb3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2FnZSk7
CiAgICAgICBicmVhazsKICAgICBjYXNlIERJRUQ6CiAgICAgICBpZiAoc3RhdHVzX29rKSB7Cisj
IGlmIEdURVNUX1VTRVNfUENSRQorICAgICAgICAvLyBQQ1JFIHJlZ2V4ZXMgc3VwcG9ydCBlbWJl
ZGRlZCBOVUxzLgorICAgICAgICBjb25zdCBib29sIG1hdGNoZWQgPSBSRTo6UGFydGlhbE1hdGNo
KGVycm9yX21lc3NhZ2UsICpyZWdleCgpKTsKKyMgZWxzZQogICAgICAgICBjb25zdCBib29sIG1h
dGNoZWQgPSBSRTo6UGFydGlhbE1hdGNoKGVycm9yX21lc3NhZ2UuY19zdHIoKSwgKnJlZ2V4KCkp
OworIyBlbmRpZiAgLy8gR1RFU1RfVVNFU19QQ1JFCiAgICAgICAgIGlmIChtYXRjaGVkKSB7CiAg
ICAgICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgYnVm
ZmVyIDw8ICIgICAgUmVzdWx0OiBkaWVkIGJ1dCBub3Qgd2l0aCBleHBlY3RlZCBlcnJvci5cbiIK
ICAgICAgICAgICAgICAgICAgPDwgIiAgRXhwZWN0ZWQ6ICIgPDwgcmVnZXgoKS0+cGF0dGVybigp
IDw8ICJcbiIKLSAgICAgICAgICAgICAgICAgPDwgIkFjdHVhbCBtc2c6ICIgPDwgZXJyb3JfbWVz
c2FnZTsKKyAgICAgICAgICAgICAgICAgPDwgIkFjdHVhbCBtc2c6XG4iIDw8IEZvcm1hdERlYXRo
VGVzdE91dHB1dChlcnJvcl9tZXNzYWdlKTsKICAgICAgICAgfQogICAgICAgfSBlbHNlIHsKICAg
ICAgICAgYnVmZmVyIDw8ICIgICAgUmVzdWx0OiBkaWVkIGJ1dCBub3Qgd2l0aCBleHBlY3RlZCBl
eGl0IGNvZGU6XG4iCi0gICAgICAgICAgICAgICA8PCAiICAgICAgICAgICAgIiA8PCBFeGl0U3Vt
bWFyeShzdGF0dXMoKSkgPDwgIlxuIjsKKyAgICAgICAgICAgICAgIDw8ICIgICAgICAgICAgICAi
IDw8IEV4aXRTdW1tYXJ5KHN0YXR1cygpKSA8PCAiXG4iCisgICAgICAgICAgICAgICA8PCAiQWN0
dWFsIG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGVycm9yX21lc3NhZ2UpOwogICAg
ICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTl9QUk9HUkVTUzoKQEAgLTQ4OCw3ICs2MDgs
NyBAQCBib29sIERlYXRoVGVzdEltcGw6OlBhc3NlZChib29sIHN0YXR1c19vaykgewogICByZXR1
cm4gc3VjY2VzczsKIH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lO
RE9XUwogLy8gV2luZG93c0RlYXRoVGVzdCBpbXBsZW1lbnRzIGRlYXRoIHRlc3RzIG9uIFdpbmRv
d3MuIER1ZSB0byB0aGUKIC8vIHNwZWNpZmljcyBvZiBzdGFydGluZyBuZXcgcHJvY2Vzc2VzIG9u
IFdpbmRvd3MsIGRlYXRoIHRlc3RzIHRoZXJlIGFyZQogLy8gYWx3YXlzIHRocmVhZHNhZmUsIGFu
ZCBHb29nbGUgVGVzdCBjb25zaWRlcnMgdGhlCkBAIC01MTksMTEgKzYzOSwxMSBAQCBib29sIERl
YXRoVGVzdEltcGw6OlBhc3NlZChib29sIHN0YXR1c19vaykgewogLy8KIGNsYXNzIFdpbmRvd3NE
ZWF0aFRlc3QgOiBwdWJsaWMgRGVhdGhUZXN0SW1wbCB7CiAgcHVibGljOgotICBXaW5kb3dzRGVh
dGhUZXN0KGNvbnN0IGNoYXIqIHN0YXRlbWVudCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBS
RSogcmVnZXgsCisgIFdpbmRvd3NEZWF0aFRlc3QoY29uc3QgY2hhciogYV9zdGF0ZW1lbnQsCisg
ICAgICAgICAgICAgICAgICAgY29uc3QgUkUqIGFfcmVnZXgsCiAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogZmlsZSwKICAgICAgICAgICAgICAgICAgICBpbnQgbGluZSkKLSAgICAgIDog
RGVhdGhUZXN0SW1wbChzdGF0ZW1lbnQsIHJlZ2V4KSwgZmlsZV8oZmlsZSksIGxpbmVfKGxpbmUp
IHt9CisgICAgICA6IERlYXRoVGVzdEltcGwoYV9zdGF0ZW1lbnQsIGFfcmVnZXgpLCBmaWxlXyhm
aWxlKSwgbGluZV8obGluZSkge30KIAogICAvLyBBbGwgb2YgdGhlc2UgdmlydHVhbCBmdW5jdGlv
bnMgYXJlIGluaGVyaXRlZCBmcm9tIERlYXRoVGVzdC4KICAgdmlydHVhbCBpbnQgV2FpdCgpOwpA
QCAtNTgwLDEyICs3MDAsMTIgQEAgaW50IFdpbmRvd3NEZWF0aFRlc3Q6OldhaXQoKSB7CiAgIEdU
RVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKAogICAgICAgV0FJVF9PQkpFQ1RfMCA9PSA6OldhaXRGb3JT
aW5nbGVPYmplY3QoY2hpbGRfaGFuZGxlXy5HZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIElORklOSVRFKSk7Ci0gIERXT1JEIHN0YXR1czsKLSAgR1RF
U1RfREVBVEhfVEVTVF9DSEVDS18oOjpHZXRFeGl0Q29kZVByb2Nlc3MoY2hpbGRfaGFuZGxlXy5H
ZXQoKSwgJnN0YXR1cykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gRkFMU0UpOworICBE
V09SRCBzdGF0dXNfY29kZTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oCisgICAgICA6Okdl
dEV4aXRDb2RlUHJvY2VzcyhjaGlsZF9oYW5kbGVfLkdldCgpLCAmc3RhdHVzX2NvZGUpICE9IEZB
TFNFKTsKICAgY2hpbGRfaGFuZGxlXy5SZXNldCgpOwotICBzZXRfc3RhdHVzKHN0YXRpY19jYXN0
PGludD4oc3RhdHVzKSk7Ci0gIHJldHVybiB0aGlzLT5zdGF0dXMoKTsKKyAgc2V0X3N0YXR1cyhz
dGF0aWNfY2FzdDxpbnQ+KHN0YXR1c19jb2RlKSk7CisgIHJldHVybiBzdGF0dXMoKTsKIH0KIAog
Ly8gVGhlIEFzc3VtZVJvbGUgcHJvY2VzcyBmb3IgYSBXaW5kb3dzIGRlYXRoIHRlc3QuICBJdCBj
cmVhdGVzIGEgY2hpbGQKQEAgLTYyNSwyMiArNzQ1LDE5IEBAIERlYXRoVGVzdDo6VGVzdFJvbGUg
V2luZG93c0RlYXRoVGVzdDo6QXNzdW1lUm9sZSgpIHsKICAgICAgIEZBTFNFLCAgIC8vIFRoZSBp
bml0aWFsIHN0YXRlIGlzIG5vbi1zaWduYWxsZWQuCiAgICAgICBOVUxMKSk7ICAvLyBUaGUgZXZl
biBpcyB1bm5hbWVkLgogICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhldmVudF9oYW5kbGVfLkdl
dCgpICE9IE5VTEwpOwotICBjb25zdCBTdHJpbmcgZmlsdGVyX2ZsYWcgPSBTdHJpbmc6OkZvcm1h
dCgiLS0lcyVzPSVzLiVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR1RFU1RfRkxBR19QUkVGSVhfLCBrRmlsdGVyRmxhZywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+dGVzdF9jYXNlX25hbWUoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+bmFtZSgpKTsKLSAg
Y29uc3QgU3RyaW5nIGludGVybmFsX2ZsYWcgPSBTdHJpbmc6OkZvcm1hdCgKLSAgICAiLS0lcyVz
PSVzfCVkfCVkfCV1fCVJdXwlSXUiLAotICAgICAgR1RFU1RfRkxBR19QUkVGSVhfLAotICAgICAg
a0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZywKLSAgICAgIGZpbGVfLCBsaW5lXywKLSAgICAgIGRl
YXRoX3Rlc3RfaW5kZXgsCi0gICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KDo6R2V0Q3Vy
cmVudFByb2Nlc3NJZCgpKSwKLSAgICAgIC8vIHNpemVfdCBoYXMgdGhlIHNhbWUgd2l0aCBhcyBw
b2ludGVycyBvbiBib3RoIDMyLWJpdCBhbmQgNjQtYml0CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZp
bHRlcl9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIpICsgR1RFU1RfRkxBR19QUkVGSVhf
ICsga0ZpbHRlckZsYWcgKyAiPSIgKworICAgICAgaW5mby0+dGVzdF9jYXNlX25hbWUoKSArICIu
IiArIGluZm8tPm5hbWUoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgaW50ZXJuYWxfZmxhZyA9Cisg
ICAgICBzdGQ6OnN0cmluZygiLS0iKSArIEdURVNUX0ZMQUdfUFJFRklYXyArIGtJbnRlcm5hbFJ1
bkRlYXRoVGVzdEZsYWcgKworICAgICAgIj0iICsgZmlsZV8gKyAifCIgKyBTdHJlYW1hYmxlVG9T
dHJpbmcobGluZV8pICsgInwiICsKKyAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhkZWF0aF90ZXN0
X2luZGV4KSArICJ8IiArCisgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgaW50Pig6OkdldEN1cnJlbnRQcm9jZXNzSWQoKSkpICsKKyAgICAgIC8vIHNpemVfdCBo
YXMgdGhlIHNhbWUgd2lkdGggYXMgcG9pbnRlcnMgb24gYm90aCAzMi1iaXQgYW5kIDY0LWJpdAog
ICAgICAgLy8gV2luZG93cyBwbGF0Zm9ybXMuCiAgICAgICAvLyBTZWUgaHR0cDovL21zZG4ubWlj
cm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3RjeGYxZHc2LmFzcHguCi0gICAgICByZWludGVycHJl
dF9jYXN0PHNpemVfdD4od3JpdGVfaGFuZGxlKSwKLSAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8c2l6
ZV90PihldmVudF9oYW5kbGVfLkdldCgpKSk7CisgICAgICAifCIgKyBTdHJlYW1hYmxlVG9TdHJp
bmcocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KHdyaXRlX2hhbmRsZSkpICsKKyAgICAgICJ8IiAr
IFN0cmVhbWFibGVUb1N0cmluZyhyZWludGVycHJldF9jYXN0PHNpemVfdD4oZXZlbnRfaGFuZGxl
Xy5HZXQoKSkpOwogCiAgIGNoYXIgZXhlY3V0YWJsZV9wYXRoW19NQVhfUEFUSCArIDFdOyAgLy8g
Tk9MSU5UCiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKApAQCAtNjQ4LDEwICs3NjUsOSBAQCBE
ZWF0aFRlc3Q6OlRlc3RSb2xlIFdpbmRvd3NEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVfcGF0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01BWF9QQVRIKSk7
CiAKLSAgU3RyaW5nIGNvbW1hbmRfbGluZSA9IFN0cmluZzo6Rm9ybWF0KCIlcyAlcyBcIiVzXCIi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpHZXRDb21tYW5kTGlu
ZUEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl9mbGFn
LmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5h
bF9mbGFnLmNfc3RyKCkpOworICBzdGQ6OnN0cmluZyBjb21tYW5kX2xpbmUgPQorICAgICAgc3Rk
OjpzdHJpbmcoOjpHZXRDb21tYW5kTGluZUEoKSkgKyAiICIgKyBmaWx0ZXJfZmxhZyArICIgXCIi
ICsKKyAgICAgIGludGVybmFsX2ZsYWcgKyAiXCIiOwogCiAgIERlYXRoVGVzdDo6c2V0X2xhc3Rf
ZGVhdGhfdGVzdF9tZXNzYWdlKCIiKTsKIApAQCAtNjg0LDcgKzgwMCwyMDAgQEAgRGVhdGhUZXN0
OjpUZXN0Um9sZSBXaW5kb3dzRGVhdGhUZXN0OjpBc3N1bWVSb2xlKCkgewogICBzZXRfc3Bhd25l
ZCh0cnVlKTsKICAgcmV0dXJuIE9WRVJTRUVfVEVTVDsKIH0KLSNlbHNlICAvLyBXZSBhcmUgbm90
IG9uIFdpbmRvd3MuCisKKyMgZWxpZiBHVEVTVF9PU19GVUNIU0lBCisKK2NsYXNzIEZ1Y2hzaWFE
ZWF0aFRlc3QgOiBwdWJsaWMgRGVhdGhUZXN0SW1wbCB7CisgcHVibGljOgorICBGdWNoc2lhRGVh
dGhUZXN0KGNvbnN0IGNoYXIqIGFfc3RhdGVtZW50LAorICAgICAgICAgICAgICAgICAgIGNvbnN0
IFJFKiBhX3JlZ2V4LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsCisgICAg
ICAgICAgICAgICAgICAgaW50IGxpbmUpCisgICAgICA6IERlYXRoVGVzdEltcGwoYV9zdGF0ZW1l
bnQsIGFfcmVnZXgpLCBmaWxlXyhmaWxlKSwgbGluZV8obGluZSkge30KKyAgdmlydHVhbCB+RnVj
aHNpYURlYXRoVGVzdCgpIHsKKyAgICB6eF9zdGF0dXNfdCBzdGF0dXMgPSB6eF9oYW5kbGVfY2xv
c2UoY2hpbGRfcHJvY2Vzc18pOworICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1cyA9
PSBaWF9PSyk7CisgICAgc3RhdHVzID0genhfaGFuZGxlX2Nsb3NlKHBvcnRfKTsKKyAgICBHVEVT
VF9ERUFUSF9URVNUX0NIRUNLXyhzdGF0dXMgPT0gWlhfT0spOworICB9CisKKyAgLy8gQWxsIG9m
IHRoZXNlIHZpcnR1YWwgZnVuY3Rpb25zIGFyZSBpbmhlcml0ZWQgZnJvbSBEZWF0aFRlc3QuCisg
IHZpcnR1YWwgaW50IFdhaXQoKTsKKyAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCk7CisK
KyBwcml2YXRlOgorICAvLyBUaGUgbmFtZSBvZiB0aGUgZmlsZSBpbiB3aGljaCB0aGUgZGVhdGgg
dGVzdCBpcyBsb2NhdGVkLgorICBjb25zdCBjaGFyKiBjb25zdCBmaWxlXzsKKyAgLy8gVGhlIGxp
bmUgbnVtYmVyIG9uIHdoaWNoIHRoZSBkZWF0aCB0ZXN0IGlzIGxvY2F0ZWQuCisgIGNvbnN0IGlu
dCBsaW5lXzsKKworICB6eF9oYW5kbGVfdCBjaGlsZF9wcm9jZXNzXyA9IFpYX0hBTkRMRV9JTlZB
TElEOworICB6eF9oYW5kbGVfdCBwb3J0XyA9IFpYX0hBTkRMRV9JTlZBTElEOworfTsKKworLy8g
VXRpbGl0eSBjbGFzcyBmb3IgYWNjdW11bGF0aW5nIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuCitj
bGFzcyBBcmd1bWVudHMgeworIHB1YmxpYzoKKyAgQXJndW1lbnRzKCkgeworICAgIGFyZ3NfLnB1
c2hfYmFjayhOVUxMKTsKKyAgfQorCisgIH5Bcmd1bWVudHMoKSB7CisgICAgZm9yIChzdGQ6OnZl
Y3RvcjxjaGFyKj46Oml0ZXJhdG9yIGkgPSBhcmdzXy5iZWdpbigpOyBpICE9IGFyZ3NfLmVuZCgp
OworICAgICAgICAgKytpKSB7CisgICAgICBmcmVlKCppKTsKKyAgICB9CisgIH0KKyAgdm9pZCBB
ZGRBcmd1bWVudChjb25zdCBjaGFyKiBhcmd1bWVudCkgeworICAgIGFyZ3NfLmluc2VydChhcmdz
Xy5lbmQoKSAtIDEsIHBvc2l4OjpTdHJEdXAoYXJndW1lbnQpKTsKKyAgfQorCisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBTdHI+CisgIHZvaWQgQWRkQXJndW1lbnRzKGNvbnN0IDo6c3RkOjp2ZWN0b3I8
U3RyPiYgYXJndW1lbnRzKSB7CisgICAgZm9yICh0eXBlbmFtZSA6OnN0ZDo6dmVjdG9yPFN0cj46
OmNvbnN0X2l0ZXJhdG9yIGkgPSBhcmd1bWVudHMuYmVnaW4oKTsKKyAgICAgICAgIGkgIT0gYXJn
dW1lbnRzLmVuZCgpOworICAgICAgICAgKytpKSB7CisgICAgICBhcmdzXy5pbnNlcnQoYXJnc18u
ZW5kKCkgLSAxLCBwb3NpeDo6U3RyRHVwKGktPmNfc3RyKCkpKTsKKyAgICB9CisgIH0KKyAgY2hh
ciogY29uc3QqIEFyZ3YoKSB7CisgICAgcmV0dXJuICZhcmdzX1swXTsKKyAgfQorCisgIGludCBz
aXplKCkgeworICAgIHJldHVybiBhcmdzXy5zaXplKCkgLSAxOworICB9CisKKyBwcml2YXRlOgor
ICBzdGQ6OnZlY3RvcjxjaGFyKj4gYXJnc187Cit9OworCisvLyBXYWl0cyBmb3IgdGhlIGNoaWxk
IGluIGEgZGVhdGggdGVzdCB0byBleGl0LCByZXR1cm5pbmcgaXRzIGV4aXQKKy8vIHN0YXR1cywg
b3IgMCBpZiBubyBjaGlsZCBwcm9jZXNzIGV4aXN0cy4gIEFzIGEgc2lkZSBlZmZlY3QsIHNldHMg
dGhlCisvLyBvdXRjb21lIGRhdGEgbWVtYmVyLgoraW50IEZ1Y2hzaWFEZWF0aFRlc3Q6OldhaXQo
KSB7CisgIGlmICghc3Bhd25lZCgpKQorICAgIHJldHVybiAwOworCisgIC8vIFJlZ2lzdGVyIHRv
IHdhaXQgZm9yIHRoZSBjaGlsZCBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4KKyAgenhfc3RhdHVzX3Qg
c3RhdHVzX3p4OworICBzdGF0dXNfenggPSB6eF9vYmplY3Rfd2FpdF9hc3luYyhjaGlsZF9wcm9j
ZXNzXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyoga2V5ICovLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBaWF9QUk9DRVNTX1RFUk1JTkFURUQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFpYX1dBSVRfQVNZTkNfT05DRSk7CisgIEdURVNUX0RFQVRI
X1RFU1RfQ0hFQ0tfKHN0YXR1c196eCA9PSBaWF9PSyk7CisKKyAgLy8gV2FpdCBmb3IgaXQgdG8g
dGVybWluYXRlLCBvciBhbiBleGNlcHRpb24gdG8gYmUgcmVjZWl2ZWQuCisgIHp4X3BvcnRfcGFj
a2V0X3QgcGFja2V0OworICBzdGF0dXNfenggPSB6eF9wb3J0X3dhaXQocG9ydF8sIFpYX1RJTUVf
SU5GSU5JVEUsICZwYWNrZXQpOworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhzdGF0dXNfengg
PT0gWlhfT0spOworCisgIGlmIChaWF9QS1RfSVNfRVhDRVBUSU9OKHBhY2tldC50eXBlKSkgewor
ICAgIC8vIFByb2Nlc3MgZW5jb3VudGVyZWQgYW4gZXhjZXB0aW9uLiBLaWxsIGl0IGRpcmVjdGx5
IHJhdGhlciB0aGFuIGxldHRpbmcKKyAgICAvLyBvdGhlciBoYW5kbGVycyBwcm9jZXNzIHRoZSBl
dmVudC4KKyAgICBzdGF0dXNfenggPSB6eF90YXNrX2tpbGwoY2hpbGRfcHJvY2Vzc18pOworICAg
IEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1c196eCA9PSBaWF9PSyk7CisKKyAgICAvLyBO
b3cgd2FpdCBmb3IgfGNoaWxkX3Byb2Nlc3NffCB0byB0ZXJtaW5hdGUuCisgICAgenhfc2lnbmFs
c190IHNpZ25hbHMgPSAwOworICAgIHN0YXR1c196eCA9IHp4X29iamVjdF93YWl0X29uZSgKKyAg
ICAgICAgY2hpbGRfcHJvY2Vzc18sIFpYX1BST0NFU1NfVEVSTUlOQVRFRCwgWlhfVElNRV9JTkZJ
TklURSwgJnNpZ25hbHMpOworICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1c196eCA9
PSBaWF9PSyk7CisgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc2lnbmFscyAmIFpYX1BST0NF
U1NfVEVSTUlOQVRFRCk7CisgIH0gZWxzZSB7CisgICAgLy8gUHJvY2VzcyB0ZXJtaW5hdGVkLgor
ICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKFpYX1BLVF9JU19TSUdOQUxfT05FKHBhY2tldC50
eXBlKSk7CisgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18ocGFja2V0LnNpZ25hbC5vYnNlcnZl
ZCAmIFpYX1BST0NFU1NfVEVSTUlOQVRFRCk7CisgIH0KKworICBSZWFkQW5kSW50ZXJwcmV0U3Rh
dHVzQnl0ZSgpOworCisgIHp4X2luZm9fcHJvY2Vzc190IGJ1ZmZlcjsKKyAgc3RhdHVzX3p4ID0g
enhfb2JqZWN0X2dldF9pbmZvKAorICAgICAgY2hpbGRfcHJvY2Vzc18sCisgICAgICBaWF9JTkZP
X1BST0NFU1MsCisgICAgICAmYnVmZmVyLAorICAgICAgc2l6ZW9mKGJ1ZmZlciksCisgICAgICBu
dWxscHRyLAorICAgICAgbnVsbHB0cik7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1
c196eCA9PSBaWF9PSyk7CisKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oYnVmZmVyLmV4aXRl
ZCk7CisgIHNldF9zdGF0dXMoYnVmZmVyLnJldHVybl9jb2RlKTsKKyAgcmV0dXJuIHN0YXR1cygp
OworfQorCisvLyBUaGUgQXNzdW1lUm9sZSBwcm9jZXNzIGZvciBhIEZ1Y2hzaWEgZGVhdGggdGVz
dC4gIEl0IGNyZWF0ZXMgYSBjaGlsZAorLy8gcHJvY2VzcyB3aXRoIHRoZSBzYW1lIGV4ZWN1dGFi
bGUgYXMgdGhlIGN1cnJlbnQgcHJvY2VzcyB0byBydW4gdGhlCisvLyBkZWF0aCB0ZXN0LiAgVGhl
IGNoaWxkIHByb2Nlc3MgaXMgZ2l2ZW4gdGhlIC0tZ3Rlc3RfZmlsdGVyIGFuZAorLy8gLS1ndGVz
dF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFncyBzdWNoIHRoYXQgaXQga25vd3MgdG8gcnVu
IHRoZQorLy8gY3VycmVudCBkZWF0aCB0ZXN0IG9ubHkuCitEZWF0aFRlc3Q6OlRlc3RSb2xlIEZ1
Y2hzaWFEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CisgIGNvbnN0IFVuaXRUZXN0SW1wbCogY29u
c3QgaW1wbCA9IEdldFVuaXRUZXN0SW1wbCgpOworICBjb25zdCBJbnRlcm5hbFJ1bkRlYXRoVGVz
dEZsYWcqIGNvbnN0IGZsYWcgPQorICAgICAgaW1wbC0+aW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3Rf
ZmxhZygpOworICBjb25zdCBUZXN0SW5mbyogY29uc3QgaW5mbyA9IGltcGwtPmN1cnJlbnRfdGVz
dF9pbmZvKCk7CisgIGNvbnN0IGludCBkZWF0aF90ZXN0X2luZGV4ID0gaW5mby0+cmVzdWx0KCkt
PmRlYXRoX3Rlc3RfY291bnQoKTsKKworICBpZiAoZmxhZyAhPSBOVUxMKSB7CisgICAgLy8gUGFy
c2VJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoKSBoYXMgcGVyZm9ybWVkIGFsbCB0aGUgbmVjZXNz
YXJ5CisgICAgLy8gcHJvY2Vzc2luZy4KKyAgICBzZXRfd3JpdGVfZmQoa0Z1Y2hzaWFSZWFkUGlw
ZUZkKTsKKyAgICByZXR1cm4gRVhFQ1VURV9URVNUOworICB9CisKKyAgQ2FwdHVyZVN0ZGVycigp
OworICAvLyBGbHVzaCB0aGUgbG9nIGJ1ZmZlcnMgc2luY2UgdGhlIGxvZyBzdHJlYW1zIGFyZSBz
aGFyZWQgd2l0aCB0aGUgY2hpbGQuCisgIEZsdXNoSW5mb0xvZygpOworCisgIC8vIEJ1aWxkIHRo
ZSBjaGlsZCBwcm9jZXNzIGNvbW1hbmQgbGluZS4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsdGVy
X2ZsYWcgPQorICAgICAgc3RkOjpzdHJpbmcoIi0tIikgKyBHVEVTVF9GTEFHX1BSRUZJWF8gKyBr
RmlsdGVyRmxhZyArICI9IgorICAgICAgKyBpbmZvLT50ZXN0X2Nhc2VfbmFtZSgpICsgIi4iICsg
aW5mby0+bmFtZSgpOworICBjb25zdCBzdGQ6OnN0cmluZyBpbnRlcm5hbF9mbGFnID0KKyAgICAg
IHN0ZDo6c3RyaW5nKCItLSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsga0ludGVybmFsUnVuRGVh
dGhUZXN0RmxhZyArICI9IgorICAgICAgKyBmaWxlXyArICJ8IgorICAgICAgKyBTdHJlYW1hYmxl
VG9TdHJpbmcobGluZV8pICsgInwiCisgICAgICArIFN0cmVhbWFibGVUb1N0cmluZyhkZWF0aF90
ZXN0X2luZGV4KTsKKyAgQXJndW1lbnRzIGFyZ3M7CisgIGFyZ3MuQWRkQXJndW1lbnRzKEdldElu
amVjdGFibGVBcmd2cygpKTsKKyAgYXJncy5BZGRBcmd1bWVudChmaWx0ZXJfZmxhZy5jX3N0cigp
KTsKKyAgYXJncy5BZGRBcmd1bWVudChpbnRlcm5hbF9mbGFnLmNfc3RyKCkpOworCisgIC8vIEJ1
aWxkIHRoZSBwaXBlIGZvciBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGNoaWxkLgorICB6eF9zdGF0
dXNfdCBzdGF0dXM7CisgIHp4X2hhbmRsZV90IGNoaWxkX3BpcGVfaGFuZGxlOworICB1aW50MzJf
dCB0eXBlOworICBzdGF0dXMgPSBmZGlvX3BpcGVfaGFsZigmY2hpbGRfcGlwZV9oYW5kbGUsICZ0
eXBlKTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhdHVzID49IDApOworICBzZXRfcmVh
ZF9mZChzdGF0dXMpOworCisgIC8vIFNldCB0aGUgcGlwZSBoYW5kbGUgZm9yIHRoZSBjaGlsZC4K
KyAgZmRpb19zcGF3bl9hY3Rpb25fdCBhZGRfaGFuZGxlX2FjdGlvbiA9IHt9OworICBhZGRfaGFu
ZGxlX2FjdGlvbi5hY3Rpb24gPSBGRElPX1NQQVdOX0FDVElPTl9BRERfSEFORExFOworICBhZGRf
aGFuZGxlX2FjdGlvbi5oLmlkID0gUEFfSE5EKHR5cGUsIGtGdWNoc2lhUmVhZFBpcGVGZCk7Cisg
IGFkZF9oYW5kbGVfYWN0aW9uLmguaGFuZGxlID0gY2hpbGRfcGlwZV9oYW5kbGU7CisKKyAgLy8g
U3Bhd24gdGhlIGNoaWxkIHByb2Nlc3MuCisgIHN0YXR1cyA9IGZkaW9fc3Bhd25fZXRjKFpYX0hB
TkRMRV9JTlZBTElELCBGRElPX1NQQVdOX0NMT05FX0FMTCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJncy5Bcmd2KClbMF0sIGFyZ3MuQXJndigpLCBudWxscHRyLCAxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAmYWRkX2hhbmRsZV9hY3Rpb24sICZjaGlsZF9wcm9jZXNzXywgbnVs
bHB0cik7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1cyA9PSBaWF9PSyk7CisKKyAg
Ly8gQ3JlYXRlIGFuIGV4Y2VwdGlvbiBwb3J0IGFuZCBhdHRhY2ggaXQgdG8gdGhlIHxjaGlsZF9w
cm9jZXNzX3wsIHRvIGFsbG93CisgIC8vIHVzIHRvIHN1cHByZXNzIHRoZSBzeXN0ZW0gZGVmYXVs
dCBleGNlcHRpb24gaGFuZGxlciBmcm9tIGZpcmluZy4KKyAgc3RhdHVzID0genhfcG9ydF9jcmVh
dGUoMCwgJnBvcnRfKTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhdHVzID09IFpYX09L
KTsKKyAgc3RhdHVzID0genhfdGFza19iaW5kX2V4Y2VwdGlvbl9wb3J0KAorICAgICAgY2hpbGRf
cHJvY2Vzc18sIHBvcnRfLCAwIC8qIGtleSAqLywgMCAvKm9wdGlvbnMgKi8pOworICBHVEVTVF9E
RUFUSF9URVNUX0NIRUNLXyhzdGF0dXMgPT0gWlhfT0spOworCisgIHNldF9zcGF3bmVkKHRydWUp
OworICByZXR1cm4gT1ZFUlNFRV9URVNUOworfQorCisjZWxzZSAgLy8gV2UgYXJlIG5laXRoZXIg
b24gV2luZG93cywgbm9yIG9uIEZ1Y2hzaWEuCiAKIC8vIEZvcmtpbmdEZWF0aFRlc3QgcHJvdmlk
ZXMgaW1wbGVtZW50YXRpb25zIGZvciBtb3N0IG9mIHRoZSBhYnN0cmFjdAogLy8gbWV0aG9kcyBv
ZiB0aGUgRGVhdGhUZXN0IGludGVyZmFjZS4gIE9ubHkgdGhlIEFzc3VtZVJvbGUgbWV0aG9kIGlz
CkBAIC03NjgsNiArMTA3Nyw3IEBAIERlYXRoVGVzdDo6VGVzdFJvbGUgTm9FeGVjRGVhdGhUZXN0
OjpBc3N1bWVSb2xlKCkgewogICAgIC8vIEV2ZW50IGZvcndhcmRpbmcgdG8gdGhlIGxpc3RlbmVy
cyBvZiBldmVudCBsaXN0ZW5lciBBUEkgbXVzaCBiZSBzaHV0CiAgICAgLy8gZG93biBpbiBkZWF0
aCB0ZXN0IHN1YnByb2Nlc3Nlcy4KICAgICBHZXRVbml0VGVzdEltcGwoKS0+bGlzdGVuZXJzKCkt
PlN1cHByZXNzRXZlbnRGb3J3YXJkaW5nKCk7CisgICAgZ19pbl9mYXN0X2RlYXRoX3Rlc3RfY2hp
bGQgPSB0cnVlOwogICAgIHJldHVybiBFWEVDVVRFX1RFU1Q7CiAgIH0gZWxzZSB7CiAgICAgR1RF
U1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhjbG9zZShwaXBlX2ZkWzFdKSk7CkBAIC03ODcs
NiArMTA5NywxNSBAQCBjbGFzcyBFeGVjRGVhdGhUZXN0IDogcHVibGljIEZvcmtpbmdEZWF0aFRl
c3QgewogICAgICAgRm9ya2luZ0RlYXRoVGVzdChhX3N0YXRlbWVudCwgYV9yZWdleCksIGZpbGVf
KGZpbGUpLCBsaW5lXyhsaW5lKSB7IH0KICAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCk7
CiAgcHJpdmF0ZToKKyAgc3RhdGljIDo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdldEFyZ3Zz
Rm9yRGVhdGhUZXN0Q2hpbGRQcm9jZXNzKCkgeworICAgIDo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+IGFyZ3MgPSBHZXRJbmplY3RhYmxlQXJndnMoKTsKKyMgIGlmIGRlZmluZWQoR1RFU1RfRVhU
UkFfREVBVEhfVEVTVF9DT01NQU5EX0xJTkVfQVJHU18pCisgICAgOjpzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gZXh0cmFfYXJncyA9CisgICAgICAgIEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ09N
TUFORF9MSU5FX0FSR1NfKCk7CisgICAgYXJncy5pbnNlcnQoYXJncy5lbmQoKSwgZXh0cmFfYXJn
cy5iZWdpbigpLCBleHRyYV9hcmdzLmVuZCgpKTsKKyMgIGVuZGlmICAvLyBkZWZpbmVkKEdURVNU
X0VYVFJBX0RFQVRIX1RFU1RfQ09NTUFORF9MSU5FX0FSR1NfKQorICAgIHJldHVybiBhcmdzOwor
ICB9CiAgIC8vIFRoZSBuYW1lIG9mIHRoZSBmaWxlIGluIHdoaWNoIHRoZSBkZWF0aCB0ZXN0IGlz
IGxvY2F0ZWQuCiAgIGNvbnN0IGNoYXIqIGNvbnN0IGZpbGVfOwogICAvLyBUaGUgbGluZSBudW1i
ZXIgb24gd2hpY2ggdGhlIGRlYXRoIHRlc3QgaXMgbG9jYXRlZC4KQEAgLTgyMSw2ICsxMTQwLDcg
QEAgY2xhc3MgQXJndW1lbnRzIHsKICAgY2hhciogY29uc3QqIEFyZ3YoKSB7CiAgICAgcmV0dXJu
ICZhcmdzX1swXTsKICAgfQorCiAgcHJpdmF0ZToKICAgc3RkOjp2ZWN0b3I8Y2hhcio+IGFyZ3Nf
OwogfTsKQEAgLTgzMiw2ICsxMTUyLDIxIEBAIHN0cnVjdCBFeGVjRGVhdGhUZXN0QXJncyB7CiAg
IGludCBjbG9zZV9mZDsgICAgICAgLy8gRmlsZSBkZXNjcmlwdG9yIHRvIGNsb3NlOyB0aGUgcmVh
ZCBlbmQgb2YgYSBwaXBlCiB9OwogCisjICBpZiBHVEVTVF9PU19NQUMKK2lubGluZSBjaGFyKiog
R2V0RW52aXJvbigpIHsKKyAgLy8gV2hlbiBHb29nbGUgVGVzdCBpcyBidWlsdCBhcyBhIGZyYW1l
d29yayBvbiBNYWNPUyBYLCB0aGUgZW52aXJvbiB2YXJpYWJsZQorICAvLyBpcyB1bmF2YWlsYWJs
ZS4gQXBwbGUncyBkb2N1bWVudGF0aW9uIChtYW4gZW52aXJvbikgcmVjb21tZW5kcyB1c2luZwor
ICAvLyBfTlNHZXRFbnZpcm9uKCkgaW5zdGVhZC4KKyAgcmV0dXJuICpfTlNHZXRFbnZpcm9uKCk7
Cit9CisjICBlbHNlCisvLyBTb21lIFBPU0lYIHBsYXRmb3JtcyBleHBlY3QgeW91IHRvIGRlY2xh
cmUgZW52aXJvbi4gZXh0ZXJuICJDIiBtYWtlcworLy8gaXQgcmVzaWRlIGluIHRoZSBnbG9iYWwg
bmFtZXNwYWNlLgorZXh0ZXJuICJDIiBjaGFyKiogZW52aXJvbjsKK2lubGluZSBjaGFyKiogR2V0
RW52aXJvbigpIHsgcmV0dXJuIGVudmlyb247IH0KKyMgIGVuZGlmICAvLyBHVEVTVF9PU19NQUMK
KworIyAgaWYgIUdURVNUX09TX1FOWAogLy8gVGhlIG1haW4gZnVuY3Rpb24gZm9yIGEgdGhyZWFk
c2FmZS1zdHlsZSBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nlc3MuCiAvLyBUaGlzIGZ1bmN0aW9uIGlz
IGNhbGxlZCBpbiBhIGNsb25lKCktZWQgcHJvY2VzcyBhbmQgdGh1cyBtdXN0IGF2b2lkCiAvLyBh
bnkgcG90ZW50aWFsbHkgdW5zYWZlIG9wZXJhdGlvbnMgbGlrZSBtYWxsb2Mgb3IgbGliYyBmdW5j
dGlvbnMuCkBAIC04NDYsOSArMTE4MSw4IEBAIHN0YXRpYyBpbnQgRXhlY0RlYXRoVGVzdENoaWxk
TWFpbih2b2lkKiBjaGlsZF9hcmcpIHsKICAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5v
cmlnaW5hbF93b3JraW5nX2RpcigpOwogICAvLyBXZSBjYW4gc2FmZWx5IGNhbGwgY2hkaXIoKSBh
cyBpdCdzIGEgZGlyZWN0IHN5c3RlbSBjYWxsLgogICBpZiAoY2hkaXIob3JpZ2luYWxfZGlyKSAh
PSAwKSB7Ci0gICAgRGVhdGhUZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQoImNoZGlyKFwiJXNcIikg
ZmFpbGVkOiAlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxf
ZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2Ny
aXB0aW9uKCkuY19zdHIoKSkpOworICAgIERlYXRoVGVzdEFib3J0KHN0ZDo6c3RyaW5nKCJjaGRp
cihcIiIpICsgb3JpZ2luYWxfZGlyICsgIlwiKSBmYWlsZWQ6ICIgKworICAgICAgICAgICAgICAg
ICAgIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkpOwogICAgIHJldHVybiBFWElUX0ZBSUxVUkU7
CiAgIH0KIApAQCAtODU3LDQwICsxMTkxLDk3IEBAIHN0YXRpYyBpbnQgRXhlY0RlYXRoVGVzdENo
aWxkTWFpbih2b2lkKiBjaGlsZF9hcmcpIHsKICAgLy8gdW5zYWZlLiAgU2luY2UgZXhlY3ZlKCkg
ZG9lc24ndCBzZWFyY2ggdGhlIFBBVEgsIHRoZSB1c2VyIG11c3QKICAgLy8gaW52b2tlIHRoZSB0
ZXN0IHByb2dyYW0gdmlhIGEgdmFsaWQgcGF0aCB0aGF0IGNvbnRhaW5zIGF0IGxlYXN0CiAgIC8v
IG9uZSBwYXRoIHNlcGFyYXRvci4KLSAgLy8gV2UgaGF2ZSByZXBsYWNlZCBleGVjdmUoKSB3aXRo
IGV4ZWN2KCkgZm9yIFdlYktpdCB0byBhdm9pZCB1c2luZwotICAvLyBlbnZpcm9uLiBJdCBzaG91
bGQgYmUgc2FmZSBiZWNhdXNlIGV4ZWN2KCkgaXMganVzdCBhIHNpbXBsZSB3cmFwcGVyCi0gIC8v
IG9mIGV4ZWN2ZSgpLgotICBleGVjdihhcmdzLT5hcmd2WzBdLCBhcmdzLT5hcmd2KTsKLSAgRGVh
dGhUZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQoImV4ZWN2KCVzLCAuLi4pIGluICVzIGZhaWxlZDog
JXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLT5hcmd2WzBdLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbF9kaXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkuY19zdHIoKSkpOwor
ICBleGVjdmUoYXJncy0+YXJndlswXSwgYXJncy0+YXJndiwgR2V0RW52aXJvbigpKTsKKyAgRGVh
dGhUZXN0QWJvcnQoc3RkOjpzdHJpbmcoImV4ZWN2ZSgiKSArIGFyZ3MtPmFyZ3ZbMF0gKyAiLCAu
Li4pIGluICIgKworICAgICAgICAgICAgICAgICBvcmlnaW5hbF9kaXIgKyAiIGZhaWxlZDogIiAr
CisgICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkpOwogICByZXR1cm4g
RVhJVF9GQUlMVVJFOwogfQorIyAgZW5kaWYgIC8vICFHVEVTVF9PU19RTlgKIAorIyAgaWYgR1RF
U1RfSEFTX0NMT05FCiAvLyBUd28gdXRpbGl0eSByb3V0aW5lcyB0aGF0IHRvZ2V0aGVyIGRldGVy
bWluZSB0aGUgZGlyZWN0aW9uIHRoZSBzdGFjawogLy8gZ3Jvd3MuCiAvLyBUaGlzIGNvdWxkIGJl
IGFjY29tcGxpc2hlZCBtb3JlIGVsZWdhbnRseSBieSBhIHNpbmdsZSByZWN1cnNpdmUKIC8vIGZ1
bmN0aW9uLCBidXQgd2Ugd2FudCB0byBndWFyZCBhZ2FpbnN0IHRoZSB1bmxpa2VseSBwb3NzaWJp
bGl0eSBvZgogLy8gYSBzbWFydCBjb21waWxlciBvcHRpbWl6aW5nIHRoZSByZWN1cnNpb24gYXdh
eS4KLWJvb2wgU3RhY2tMb3dlclRoYW5BZGRyZXNzKGNvbnN0IHZvaWQqIHB0cikgeworLy8KKy8v
IEdURVNUX05PX0lOTElORV8gaXMgcmVxdWlyZWQgdG8gcHJldmVudCBHQ0MgNC42IGZyb20gaW5s
aW5pbmcKKy8vIFN0YWNrTG93ZXJUaGFuQWRkcmVzcyBpbnRvIFN0YWNrR3Jvd3NEb3duLCB3aGlj
aCB0aGVuIGRvZXNuJ3QgZ2l2ZQorLy8gY29ycmVjdCBhbnN3ZXIuCitzdGF0aWMgdm9pZCBTdGFj
a0xvd2VyVGhhbkFkZHJlc3MoY29uc3Qgdm9pZCogcHRyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wqIHJlc3VsdCkgR1RFU1RfTk9fSU5MSU5FXzsKK3N0YXRpYyB2b2lk
IFN0YWNrTG93ZXJUaGFuQWRkcmVzcyhjb25zdCB2b2lkKiBwdHIsIGJvb2wqIHJlc3VsdCkgewog
ICBpbnQgZHVtbXk7Ci0gIHJldHVybiAmZHVtbXkgPCBwdHI7CisgICpyZXN1bHQgPSAoJmR1bW15
IDwgcHRyKTsKIH0KIAotYm9vbCBTdGFja0dyb3dzRG93bigpIHsKKy8vIE1ha2Ugc3VyZSBBZGRy
ZXNzU2FuaXRpemVyIGRvZXMgbm90IHRhbXBlciB3aXRoIHRoZSBzdGFjayBoZXJlLgorR1RFU1Rf
QVRUUklCVVRFX05PX1NBTklUSVpFX0FERFJFU1NfCitzdGF0aWMgYm9vbCBTdGFja0dyb3dzRG93
bigpIHsKICAgaW50IGR1bW15OwotICByZXR1cm4gU3RhY2tMb3dlclRoYW5BZGRyZXNzKCZkdW1t
eSk7CisgIGJvb2wgcmVzdWx0OworICBTdGFja0xvd2VyVGhhbkFkZHJlc3MoJmR1bW15LCAmcmVz
dWx0KTsKKyAgcmV0dXJuIHJlc3VsdDsKIH0KLQotLy8gQSB0aHJlYWRzYWZlIGltcGxlbWVudGF0
aW9uIG9mIGZvcmsoMikgZm9yIHRocmVhZHNhZmUtc3R5bGUgZGVhdGggdGVzdHMKLS8vIHRoYXQg
dXNlcyBjbG9uZSgyKS4gIEl0IGRpZXMgd2l0aCBhbiBlcnJvciBtZXNzYWdlIGlmIGFueXRoaW5n
IGdvZXMKLS8vIHdyb25nLgotc3RhdGljIHBpZF90IEV4ZWNEZWF0aFRlc3RGb3JrKGNoYXIqIGNv
bnN0KiBhcmd2LCBpbnQgY2xvc2VfZmQpIHsKKyMgIGVuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUK
KworLy8gU3Bhd25zIGEgY2hpbGQgcHJvY2VzcyB3aXRoIHRoZSBzYW1lIGV4ZWN1dGFibGUgYXMg
dGhlIGN1cnJlbnQgcHJvY2VzcyBpbgorLy8gYSB0aHJlYWQtc2FmZSBtYW5uZXIgYW5kIGluc3Ry
dWN0cyBpdCB0byBydW4gdGhlIGRlYXRoIHRlc3QuICBUaGUKKy8vIGltcGxlbWVudGF0aW9uIHVz
ZXMgZm9yaygyKSArIGV4ZWMuICBPbiBzeXN0ZW1zIHdoZXJlIGNsb25lKDIpIGlzCisvLyBhdmFp
bGFibGUsIGl0IGlzIHVzZWQgaW5zdGVhZCwgYmVpbmcgc2xpZ2h0bHkgbW9yZSB0aHJlYWQtc2Fm
ZS4gIE9uIFFOWCwKKy8vIGZvcmsgc3VwcG9ydHMgb25seSBzaW5nbGUtdGhyZWFkZWQgZW52aXJv
bm1lbnRzLCBzbyB0aGlzIGZ1bmN0aW9uIHVzZXMKKy8vIHNwYXduKDIpIHRoZXJlIGluc3RlYWQu
ICBUaGUgZnVuY3Rpb24gZGllcyB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaWYKKy8vIGFueXRoaW5n
IGdvZXMgd3JvbmcuCitzdGF0aWMgcGlkX3QgRXhlY0RlYXRoVGVzdFNwYXduQ2hpbGQoY2hhciog
Y29uc3QqIGFyZ3YsIGludCBjbG9zZV9mZCkgewogICBFeGVjRGVhdGhUZXN0QXJncyBhcmdzID0g
eyBhcmd2LCBjbG9zZV9mZCB9OwogICBwaWRfdCBjaGlsZF9waWQgPSAtMTsKIAotI2lmIEdURVNU
X0hBU19DTE9ORQorIyAgaWYgR1RFU1RfT1NfUU5YCisgIC8vIE9idGFpbnMgdGhlIGN1cnJlbnQg
ZGlyZWN0b3J5IGFuZCBzZXRzIGl0IHRvIGJlIGNsb3NlZCBpbiB0aGUgY2hpbGQKKyAgLy8gcHJv
Y2Vzcy4KKyAgY29uc3QgaW50IGN3ZF9mZCA9IG9wZW4oIi4iLCBPX1JET05MWSk7CisgIEdURVNU
X0RFQVRIX1RFU1RfQ0hFQ0tfKGN3ZF9mZCAhPSAtMSk7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hF
Q0tfU1lTQ0FMTF8oZmNudGwoY3dkX2ZkLCBGX1NFVEZELCBGRF9DTE9FWEVDKSk7CisgIC8vIFdl
IG5lZWQgdG8gZXhlY3V0ZSB0aGUgdGVzdCBwcm9ncmFtIGluIHRoZSBzYW1lIGVudmlyb25tZW50
IHdoZXJlCisgIC8vIGl0IHdhcyBvcmlnaW5hbGx5IGludm9rZWQuICBUaGVyZWZvcmUgd2UgY2hh
bmdlIHRvIHRoZSBvcmlnaW5hbAorICAvLyB3b3JraW5nIGRpcmVjdG9yeSBmaXJzdC4KKyAgY29u
c3QgY2hhciogY29uc3Qgb3JpZ2luYWxfZGlyID0KKyAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5j
ZSgpLT5vcmlnaW5hbF93b3JraW5nX2RpcigpOworICAvLyBXZSBjYW4gc2FmZWx5IGNhbGwgY2hk
aXIoKSBhcyBpdCdzIGEgZGlyZWN0IHN5c3RlbSBjYWxsLgorICBpZiAoY2hkaXIob3JpZ2luYWxf
ZGlyKSAhPSAwKSB7CisgICAgRGVhdGhUZXN0QWJvcnQoc3RkOjpzdHJpbmcoImNoZGlyKFwiIikg
KyBvcmlnaW5hbF9kaXIgKyAiXCIpIGZhaWxlZDogIiArCisgICAgICAgICAgICAgICAgICAgR2V0
TGFzdEVycm5vRGVzY3JpcHRpb24oKSk7CisgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgfQor
CisgIGludCBmZF9mbGFnczsKKyAgLy8gU2V0IGNsb3NlX2ZkIHRvIGJlIGNsb3NlZCBhZnRlciBz
cGF3bi4KKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhmZF9mbGFncyA9IGZjbnRs
KGNsb3NlX2ZkLCBGX0dFVEZEKSk7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8o
ZmNudGwoY2xvc2VfZmQsIEZfU0VURkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmRfZmxhZ3MgfCBGRF9DTE9FWEVDKSk7CisgIHN0cnVjdCBpbmhlcml0YW5jZSBp
bmhlcml0ID0gezB9OworICAvLyBzcGF3biBpcyBhIHN5c3RlbSBjYWxsLgorICBjaGlsZF9waWQg
PSBzcGF3bihhcmdzLmFyZ3ZbMF0sIDAsIE5VTEwsICZpbmhlcml0LCBhcmdzLmFyZ3YsIEdldEVu
dmlyb24oKSk7CisgIC8vIFJlc3RvcmVzIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5Lgor
ICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhmY2hkaXIoY3dkX2ZkKSAhPSAtMSk7CisgIEdURVNU
X0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oY2xvc2UoY3dkX2ZkKSk7CisKKyMgIGVsc2UgICAv
LyBHVEVTVF9PU19RTlgKKyMgICBpZiBHVEVTVF9PU19MSU5VWAorICAvLyBXaGVuIGEgU0lHUFJP
RiBzaWduYWwgaXMgcmVjZWl2ZWQgd2hpbGUgZm9yaygpIG9yIGNsb25lKCkgYXJlIGV4ZWN1dGlu
ZywKKyAgLy8gdGhlIHByb2Nlc3MgbWF5IGhhbmcuIFRvIGF2b2lkIHRoaXMsIHdlIGlnbm9yZSBT
SUdQUk9GIGhlcmUgYW5kIHJlLWVuYWJsZQorICAvLyBpdCBhZnRlciB0aGUgY2FsbCB0byBmb3Jr
KCkvY2xvbmUoKSBpcyBjb21wbGV0ZS4KKyAgc3RydWN0IHNpZ2FjdGlvbiBzYXZlZF9zaWdwcm9m
X2FjdGlvbjsKKyAgc3RydWN0IHNpZ2FjdGlvbiBpZ25vcmVfc2lncHJvZl9hY3Rpb247CisgIG1l
bXNldCgmaWdub3JlX3NpZ3Byb2ZfYWN0aW9uLCAwLCBzaXplb2YoaWdub3JlX3NpZ3Byb2ZfYWN0
aW9uKSk7CisgIHNpZ2VtcHR5c2V0KCZpZ25vcmVfc2lncHJvZl9hY3Rpb24uc2FfbWFzayk7Cisg
IGlnbm9yZV9zaWdwcm9mX2FjdGlvbi5zYV9oYW5kbGVyID0gU0lHX0lHTjsKKyAgR1RFU1RfREVB
VEhfVEVTVF9DSEVDS19TWVNDQUxMXyhzaWdhY3Rpb24oCisgICAgICBTSUdQUk9GLCAmaWdub3Jl
X3NpZ3Byb2ZfYWN0aW9uLCAmc2F2ZWRfc2lncHJvZl9hY3Rpb24pKTsKKyMgICBlbmRpZiAgLy8g
R1RFU1RfT1NfTElOVVgKKworIyAgIGlmIEdURVNUX0hBU19DTE9ORQogICBjb25zdCBib29sIHVz
ZV9mb3JrID0gR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKTsKIAogICBpZiAoIXVzZV9m
b3JrKSB7CkBAIC05MDAsMjEgKzEyOTEsMzcgQEAgc3RhdGljIHBpZF90IEV4ZWNEZWF0aFRlc3RG
b3JrKGNoYXIqIGNvbnN0KiBhcmd2LCBpbnQgY2xvc2VfZmQpIHsKICAgICB2b2lkKiBjb25zdCBz
dGFjayA9IG1tYXAoTlVMTCwgc3RhY2tfc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFQX0FOT04gfCBNQVBfUFJJVkFURSwgLTEsIDAp
OwogICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YWNrICE9IE1BUF9GQUlMRUQpOworCisg
ICAgLy8gTWF4aW11bSBzdGFjayBhbGlnbm1lbnQgaW4gYnl0ZXM6ICBGb3IgYSBkb3dud2FyZC1n
cm93aW5nIHN0YWNrLCB0aGlzCisgICAgLy8gYW1vdW50IGlzIHN1YnRyYWN0ZWQgZnJvbSBzaXpl
IG9mIHRoZSBzdGFjayBzcGFjZSB0byBnZXQgYW4gYWRkcmVzcworICAgIC8vIHRoYXQgaXMgd2l0
aGluIHRoZSBzdGFjayBzcGFjZSBhbmQgaXMgYWxpZ25lZCBvbiBhbGwgc3lzdGVtcyB3ZSBjYXJl
CisgICAgLy8gYWJvdXQuICBBcyBmYXIgYXMgSSBrbm93IHRoZXJlIGlzIG5vIEFCSSB3aXRoIHN0
YWNrIGFsaWdubWVudCBncmVhdGVyCisgICAgLy8gdGhhbiA2NC4gIFdlIGFzc3VtZSBzdGFjayBh
bmQgc3RhY2tfc2l6ZSBhbHJlYWR5IGhhdmUgYWxpZ25tZW50IG9mCisgICAgLy8ga01heFN0YWNr
QWxpZ25tZW50LgorICAgIGNvbnN0IHNpemVfdCBrTWF4U3RhY2tBbGlnbm1lbnQgPSA2NDsKICAg
ICB2b2lkKiBjb25zdCBzdGFja190b3AgPQotICAgICAgICBzdGF0aWNfY2FzdDxjaGFyKj4oc3Rh
Y2spICsgKHN0YWNrX2dyb3dzX2Rvd24gPyBzdGFja19zaXplIDogMCk7CisgICAgICAgIHN0YXRp
Y19jYXN0PGNoYXIqPihzdGFjaykgKworICAgICAgICAgICAgKHN0YWNrX2dyb3dzX2Rvd24gPyBz
dGFja19zaXplIC0ga01heFN0YWNrQWxpZ25tZW50IDogMCk7CisgICAgR1RFU1RfREVBVEhfVEVT
VF9DSEVDS18oc3RhY2tfc2l6ZSA+IGtNYXhTdGFja0FsaWdubWVudCAmJgorICAgICAgICByZWlu
dGVycHJldF9jYXN0PGludHB0cl90PihzdGFja190b3ApICUga01heFN0YWNrQWxpZ25tZW50ID09
IDApOwogCiAgICAgY2hpbGRfcGlkID0gY2xvbmUoJkV4ZWNEZWF0aFRlc3RDaGlsZE1haW4sIHN0
YWNrX3RvcCwgU0lHQ0hMRCwgJmFyZ3MpOwogCiAgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18o
bXVubWFwKHN0YWNrLCBzdGFja19zaXplKSAhPSAtMSk7CiAgIH0KLSNlbHNlCisjICAgZWxzZQog
ICBjb25zdCBib29sIHVzZV9mb3JrID0gdHJ1ZTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NMT05F
CisjICAgZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORQogCiAgIGlmICh1c2VfZm9yayAmJiAoY2hp
bGRfcGlkID0gZm9yaygpKSA9PSAwKSB7CiAgICAgICBFeGVjRGVhdGhUZXN0Q2hpbGRNYWluKCZh
cmdzKTsKICAgICAgIF9leGl0KDApOwogICB9CisjICBlbmRpZiAgLy8gR1RFU1RfT1NfUU5YCisj
ICBpZiBHVEVTVF9PU19MSU5VWAorICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKAor
ICAgICAgc2lnYWN0aW9uKFNJR1BST0YsICZzYXZlZF9zaWdwcm9mX2FjdGlvbiwgTlVMTCkpOwor
IyAgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCiAKICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18o
Y2hpbGRfcGlkICE9IC0xKTsKICAgcmV0dXJuIGNoaWxkX3BpZDsKQEAgLTk0MiwxNiArMTM0OSwx
NiBAQCBEZWF0aFRlc3Q6OlRlc3RSb2xlIEV4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAg
IC8vIGl0IGJlIGNsb3NlZCB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGRvZXMgYW4gZXhlYzoKICAg
R1RFU1RfREVBVEhfVEVTVF9DSEVDS18oZmNudGwocGlwZV9mZFsxXSwgRl9TRVRGRCwgMCkgIT0g
LTEpOwogCi0gIGNvbnN0IFN0cmluZyBmaWx0ZXJfZmxhZyA9Ci0gICAgICBTdHJpbmc6OkZvcm1h
dCgiLS0lcyVzPSVzLiVzIiwKLSAgICAgICAgICAgICAgICAgICAgIEdURVNUX0ZMQUdfUFJFRklY
Xywga0ZpbHRlckZsYWcsCi0gICAgICAgICAgICAgICAgICAgICBpbmZvLT50ZXN0X2Nhc2VfbmFt
ZSgpLCBpbmZvLT5uYW1lKCkpOwotICBjb25zdCBTdHJpbmcgaW50ZXJuYWxfZmxhZyA9Ci0gICAg
ICBTdHJpbmc6OkZvcm1hdCgiLS0lcyVzPSVzfCVkfCVkfCVkIiwKLSAgICAgICAgICAgICAgICAg
ICAgIEdURVNUX0ZMQUdfUFJFRklYXywga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZywKLSAgICAg
ICAgICAgICAgICAgICAgIGZpbGVfLCBsaW5lXywgZGVhdGhfdGVzdF9pbmRleCwgcGlwZV9mZFsx
XSk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbHRlcl9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5n
KCItLSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsga0ZpbHRlckZsYWcgKyAiPSIKKyAgICAgICsg
aW5mby0+dGVzdF9jYXNlX25hbWUoKSArICIuIiArIGluZm8tPm5hbWUoKTsKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcgaW50ZXJuYWxfZmxhZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0iKSArIEdURVNU
X0ZMQUdfUFJFRklYXyArIGtJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcgKyAiPSIKKyAgICAgICsg
ZmlsZV8gKyAifCIgKyBTdHJlYW1hYmxlVG9TdHJpbmcobGluZV8pICsgInwiCisgICAgICArIFN0
cmVhbWFibGVUb1N0cmluZyhkZWF0aF90ZXN0X2luZGV4KSArICJ8IgorICAgICAgKyBTdHJlYW1h
YmxlVG9TdHJpbmcocGlwZV9mZFsxXSk7CiAgIEFyZ3VtZW50cyBhcmdzOwotICBhcmdzLkFkZEFy
Z3VtZW50cyhHZXRBcmd2cygpKTsKKyAgYXJncy5BZGRBcmd1bWVudHMoR2V0QXJndnNGb3JEZWF0
aFRlc3RDaGlsZFByb2Nlc3MoKSk7CiAgIGFyZ3MuQWRkQXJndW1lbnQoZmlsdGVyX2ZsYWcuY19z
dHIoKSk7CiAgIGFyZ3MuQWRkQXJndW1lbnQoaW50ZXJuYWxfZmxhZy5jX3N0cigpKTsKIApAQCAt
OTYyLDcgKzEzNjksNyBAQCBEZWF0aFRlc3Q6OlRlc3RSb2xlIEV4ZWNEZWF0aFRlc3Q6OkFzc3Vt
ZVJvbGUoKSB7CiAgIC8vIGlzIG5lY2Vzc2FyeS4KICAgRmx1c2hJbmZvTG9nKCk7CiAKLSAgY29u
c3QgcGlkX3QgY2hpbGRfcGlkID0gRXhlY0RlYXRoVGVzdEZvcmsoYXJncy5Bcmd2KCksIHBpcGVf
ZmRbMF0pOworICBjb25zdCBwaWRfdCBjaGlsZF9waWQgPSBFeGVjRGVhdGhUZXN0U3Bhd25DaGls
ZChhcmdzLkFyZ3YoKSwgcGlwZV9mZFswXSk7CiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lT
Q0FMTF8oY2xvc2UocGlwZV9mZFsxXSkpOwogICBzZXRfY2hpbGRfcGlkKGNoaWxkX3BpZCk7CiAg
IHNldF9yZWFkX2ZkKHBpcGVfZmRbMF0pOwpAQCAtOTcwLDcgKzEzNzcsNyBAQCBEZWF0aFRlc3Q6
OlRlc3RSb2xlIEV4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAgIHJldHVybiBPVkVSU0VF
X1RFU1Q7CiB9CiAKLSNlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vICFH
VEVTVF9PU19XSU5ET1dTCiAKIC8vIENyZWF0ZXMgYSBjb25jcmV0ZSBEZWF0aFRlc3QtZGVyaXZl
ZCBjbGFzcyB0aGF0IGRlcGVuZHMgb24gdGhlCiAvLyAtLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUg
ZmxhZywgYW5kIHNldHMgdGhlIHBvaW50ZXIgcG9pbnRlZCB0bwpAQCAtOTg4LDkgKzEzOTUsMTAg
QEAgYm9vbCBEZWZhdWx0RGVhdGhUZXN0RmFjdG9yeTo6Q3JlYXRlKGNvbnN0IGNoYXIqIHN0YXRl
bWVudCwgY29uc3QgUkUqIHJlZ2V4LAogCiAgIGlmIChmbGFnICE9IE5VTEwpIHsKICAgICBpZiAo
ZGVhdGhfdGVzdF9pbmRleCA+IGZsYWctPmluZGV4KCkpIHsKLSAgICAgIERlYXRoVGVzdDo6c2V0
X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKFN0cmluZzo6Rm9ybWF0KAotICAgICAgICAgICJEZWF0
aCB0ZXN0IGNvdW50ICglZCkgc29tZWhvdyBleGNlZWRlZCBleHBlY3RlZCBtYXhpbXVtICglZCki
LAotICAgICAgICAgIGRlYXRoX3Rlc3RfaW5kZXgsIGZsYWctPmluZGV4KCkpKTsKKyAgICAgIERl
YXRoVGVzdDo6c2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKAorICAgICAgICAgICJEZWF0aCB0
ZXN0IGNvdW50ICgiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGRlYXRoX3Rlc3RfaW5kZXgpCisgICAg
ICAgICAgKyAiKSBzb21laG93IGV4Y2VlZGVkIGV4cGVjdGVkIG1heGltdW0gKCIKKyAgICAgICAg
ICArIFN0cmVhbWFibGVUb1N0cmluZyhmbGFnLT5pbmRleCgpKSArICIpIik7CiAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMDAxLDY0ICsxNDA5LDU2IEBAIGJvb2wgRGVmYXVsdERl
YXRoVGVzdEZhY3Rvcnk6OkNyZWF0ZShjb25zdCBjaGFyKiBzdGF0ZW1lbnQsIGNvbnN0IFJFKiBy
ZWdleCwKICAgICB9CiAgIH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1Nf
V0lORE9XUworCiAgIGlmIChHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJ0aHJlYWRz
YWZlIiB8fAogICAgICAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAiZmFzdCIpIHsK
ICAgICAqdGVzdCA9IG5ldyBXaW5kb3dzRGVhdGhUZXN0KHN0YXRlbWVudCwgcmVnZXgsIGZpbGUs
IGxpbmUpOwogICB9Ci0jZWxzZQorCisjIGVsaWYgR1RFU1RfT1NfRlVDSFNJQQorCisgIGlmIChH
VEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZlIiB8fAorICAgICAgR1RF
U1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAiZmFzdCIpIHsKKyAgICAqdGVzdCA9IG5ldyBG
dWNoc2lhRGVhdGhUZXN0KHN0YXRlbWVudCwgcmVnZXgsIGZpbGUsIGxpbmUpOworICB9CisKKyMg
ZWxzZQorCiAgIGlmIChHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZl
IikgewogICAgICp0ZXN0ID0gbmV3IEV4ZWNEZWF0aFRlc3Qoc3RhdGVtZW50LCByZWdleCwgZmls
ZSwgbGluZSk7CiAgIH0gZWxzZSBpZiAoR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAi
ZmFzdCIpIHsKICAgICAqdGVzdCA9IG5ldyBOb0V4ZWNEZWF0aFRlc3Qoc3RhdGVtZW50LCByZWdl
eCk7CiAgIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjIGVuZGlmICAvLyBHVEVT
VF9PU19XSU5ET1dTCisKICAgZWxzZSB7ICAvLyBOT0xJTlQgLSB0aGlzIGlzIG1vcmUgcmVhZGFi
bGUgdGhhbiB1bmJhbGFuY2VkIGJyYWNrZXRzIGluc2lkZSAjaWYuCi0gICAgRGVhdGhUZXN0Ojpz
ZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICJVbmtu
b3duIGRlYXRoIHRlc3Qgc3R5bGUgXCIlc1wiIGVuY291bnRlcmVkIiwKLSAgICAgICAgR1RFU1Rf
RkxBRyhkZWF0aF90ZXN0X3N0eWxlKS5jX3N0cigpKSk7CisgICAgRGVhdGhUZXN0OjpzZXRfbGFz
dF9kZWF0aF90ZXN0X21lc3NhZ2UoCisgICAgICAgICJVbmtub3duIGRlYXRoIHRlc3Qgc3R5bGUg
XCIiICsgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKQorICAgICAgICArICJcIiBlbmNvdW50
ZXJlZCIpOwogICAgIHJldHVybiBmYWxzZTsKICAgfQogCiAgIHJldHVybiB0cnVlOwogfQogCi0v
LyBTcGxpdHMgYSBnaXZlbiBzdHJpbmcgb24gYSBnaXZlbiBkZWxpbWl0ZXIsIHBvcHVsYXRpbmcg
YSBnaXZlbgotLy8gdmVjdG9yIHdpdGggdGhlIGZpZWxkcy4gIEdURVNUX0hBU19ERUFUSF9URVNU
IGltcGxpZXMgdGhhdCB3ZSBoYXZlCi0vLyA6OnN0ZDo6c3RyaW5nLCBzbyB3ZSBjYW4gdXNlIGl0
IGhlcmUuCi1zdGF0aWMgdm9pZCBTcGxpdFN0cmluZyhjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIs
IGNoYXIgZGVsaW1pdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6OnZlY3Rvcjwg
OjpzdGQ6OnN0cmluZz4qIGRlc3QpIHsKLSAgOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4g
cGFyc2VkOwotICA6OnN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgcG9zID0gMDsKLSAgd2hpbGUgKDo6
dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgewotICAgIGNvbnN0IDo6c3RkOjpzdHJp
bmc6OnNpemVfdHlwZSBjb2xvbiA9IHN0ci5maW5kKGRlbGltaXRlciwgcG9zKTsKLSAgICBpZiAo
Y29sb24gPT0gOjpzdGQ6OnN0cmluZzo6bnBvcykgewotICAgICAgcGFyc2VkLnB1c2hfYmFjayhz
dHIuc3Vic3RyKHBvcykpOwotICAgICAgYnJlYWs7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHBhcnNl
ZC5wdXNoX2JhY2soc3RyLnN1YnN0cihwb3MsIGNvbG9uIC0gcG9zKSk7Ci0gICAgICBwb3MgPSBj
b2xvbiArIDE7Ci0gICAgfQotICB9Ci0gIGRlc3QtPnN3YXAocGFyc2VkKTsKLX0KLQotI2lmIEdU
RVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lORE9XUwogLy8gUmVjcmVhdGVzIHRoZSBw
aXBlIGFuZCBldmVudCBoYW5kbGVzIGZyb20gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMsCiAvLyBz
aWduYWxzIHRoZSBldmVudCwgYW5kIHJldHVybnMgYSBmaWxlIGRlc2NyaXB0b3Igd3JhcHBlZCBh
cm91bmQgdGhlIHBpcGUKIC8vIGhhbmRsZS4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gdGhl
IGNoaWxkIHByb2Nlc3Mgb25seS4KLWludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25l
ZCBpbnQgcGFyZW50X3Byb2Nlc3NfaWQsCitzdGF0aWMgaW50IEdldFN0YXR1c0ZpbGVEZXNjcmlw
dG9yKHVuc2lnbmVkIGludCBwYXJlbnRfcHJvY2Vzc19pZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgZXZlbnRfaGFuZGxlX2FzX3NpemVfdCkgewogICBBdXRvSGFuZGxl
IHBhcmVudF9wcm9jZXNzX2hhbmRsZSg6Ok9wZW5Qcm9jZXNzKFBST0NFU1NfRFVQX0hBTkRMRSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNF
LCAgLy8gTm9uLWluaGVyaXRhYmxlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyZW50X3Byb2Nlc3NfaWQpKTsKICAgaWYgKHBhcmVudF9wcm9j
ZXNzX2hhbmRsZS5HZXQoKSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgIERlYXRoVGVz
dEFib3J0KFN0cmluZzo6Rm9ybWF0KCJVbmFibGUgdG8gb3BlbiBwYXJlbnQgcHJvY2VzcyAldSIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50X3Byb2Nlc3NfaWQpKTsK
KyAgICBEZWF0aFRlc3RBYm9ydCgiVW5hYmxlIHRvIG9wZW4gcGFyZW50IHByb2Nlc3MgIiArCisg
ICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHBhcmVudF9wcm9jZXNzX2lkKSk7
CiAgIH0KIAotICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBSZXBsYWNlIHRoZSBmb2xsb3dp
bmcgY2hlY2sgd2l0aCBhCisgIC8vIEZJWE1FOiBSZXBsYWNlIHRoZSBmb2xsb3dpbmcgY2hlY2sg
d2l0aCBhCiAgIC8vIGNvbXBpbGUtdGltZSBhc3NlcnRpb24gd2hlbiBhdmFpbGFibGUuCiAgIEdU
RVNUX0NIRUNLXyhzaXplb2YoSEFORExFKSA8PSBzaXplb2Yoc2l6ZV90KSk7CiAKQEAgLTEwNjYs
NyArMTQ2Niw3IEBAIGludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBpbnQgcGFy
ZW50X3Byb2Nlc3NfaWQsCiAgICAgICByZWludGVycHJldF9jYXN0PEhBTkRMRT4od3JpdGVfaGFu
ZGxlX2FzX3NpemVfdCk7CiAgIEhBTkRMRSBkdXBfd3JpdGVfaGFuZGxlOwogCi0gIC8vIFRoZSBu
ZXdseSBpbml0aWFsaXplZCBoYW5kbGUgaXMgYWNjZXNzaWJsZSBvbmx5IGluIGluIHRoZSBwYXJl
bnQKKyAgLy8gVGhlIG5ld2x5IGluaXRpYWxpemVkIGhhbmRsZSBpcyBhY2Nlc3NpYmxlIG9ubHkg
aW4gdGhlIHBhcmVudAogICAvLyBwcm9jZXNzLiBUbyBvYnRhaW4gb25lIGFjY2Vzc2libGUgd2l0
aGluIHRoZSBjaGlsZCwgd2UgbmVlZCB0byB1c2UKICAgLy8gRHVwbGljYXRlSGFuZGxlLgogICBp
ZiAoITo6RHVwbGljYXRlSGFuZGxlKHBhcmVudF9wcm9jZXNzX2hhbmRsZS5HZXQoKSwgd3JpdGVf
aGFuZGxlLApAQCAtMTA3NSw5ICsxNDc1LDEwIEBAIGludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRv
cih1bnNpZ25lZCBpbnQgcGFyZW50X3Byb2Nlc3NfaWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MgaXMgdXNlZC4KICAgICAgICAgICAg
ICAgICAgICAgICAgICBGQUxTRSwgIC8vIFJlcXVlc3Qgbm9uLWluaGVyaXRhYmxlIGhhbmRsZXIu
CiAgICAgICAgICAgICAgICAgICAgICAgICAgRFVQTElDQVRFX1NBTUVfQUNDRVNTKSkgewotICAg
IERlYXRoVGVzdEFib3J0KFN0cmluZzo6Rm9ybWF0KAotICAgICAgICAiVW5hYmxlIHRvIGR1cGxp
Y2F0ZSB0aGUgcGlwZSBoYW5kbGUgJUl1IGZyb20gdGhlIHBhcmVudCBwcm9jZXNzICV1IiwKLSAg
ICAgICAgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCwgcGFyZW50X3Byb2Nlc3NfaWQpKTsKKyAgICBE
ZWF0aFRlc3RBYm9ydCgiVW5hYmxlIHRvIGR1cGxpY2F0ZSB0aGUgcGlwZSBoYW5kbGUgIiArCisg
ICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHdyaXRlX2hhbmRsZV9hc19zaXpl
X3QpICsKKyAgICAgICAgICAgICAgICAgICAiIGZyb20gdGhlIHBhcmVudCBwcm9jZXNzICIgKwor
ICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhwYXJlbnRfcHJvY2Vzc19pZCkp
OwogICB9CiAKICAgY29uc3QgSEFORExFIGV2ZW50X2hhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
SEFORExFPihldmVudF9oYW5kbGVfYXNfc2l6ZV90KTsKQEAgLTEwODgsMTcgKzE0ODksMTggQEAg
aW50IEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9yKHVuc2lnbmVkIGludCBwYXJlbnRfcHJvY2Vzc19p
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgRFVQTElDQVRFX1NBTUVfQUNDRVNT
KSkgewotICAgIERlYXRoVGVzdEFib3J0KFN0cmluZzo6Rm9ybWF0KAotICAgICAgICAiVW5hYmxl
IHRvIGR1cGxpY2F0ZSB0aGUgZXZlbnQgaGFuZGxlICVJdSBmcm9tIHRoZSBwYXJlbnQgcHJvY2Vz
cyAldSIsCi0gICAgICAgIGV2ZW50X2hhbmRsZV9hc19zaXplX3QsIHBhcmVudF9wcm9jZXNzX2lk
KSk7CisgICAgRGVhdGhUZXN0QWJvcnQoIlVuYWJsZSB0byBkdXBsaWNhdGUgdGhlIGV2ZW50IGhh
bmRsZSAiICsKKyAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcoZXZlbnRfaGFu
ZGxlX2FzX3NpemVfdCkgKworICAgICAgICAgICAgICAgICAgICIgZnJvbSB0aGUgcGFyZW50IHBy
b2Nlc3MgIiArCisgICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHBhcmVudF9w
cm9jZXNzX2lkKSk7CiAgIH0KIAogICBjb25zdCBpbnQgd3JpdGVfZmQgPQogICAgICAgOjpfb3Bl
bl9vc2ZoYW5kbGUocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oZHVwX3dyaXRlX2hhbmRsZSks
IE9fQVBQRU5EKTsKICAgaWYgKHdyaXRlX2ZkID09IC0xKSB7Ci0gICAgRGVhdGhUZXN0QWJvcnQo
U3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICJVbmFibGUgdG8gY29udmVydCBwaXBlIGhhbmRsZSAl
SXUgdG8gYSBmaWxlIGRlc2NyaXB0b3IiLAotICAgICAgICB3cml0ZV9oYW5kbGVfYXNfc2l6ZV90
KSk7CisgICAgRGVhdGhUZXN0QWJvcnQoIlVuYWJsZSB0byBjb252ZXJ0IHBpcGUgaGFuZGxlICIg
KworICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh3cml0ZV9oYW5kbGVfYXNf
c2l6ZV90KSArCisgICAgICAgICAgICAgICAgICAgIiB0byBhIGZpbGUgZGVzY3JpcHRvciIpOwog
ICB9CiAKICAgLy8gU2lnbmFscyB0aGUgcGFyZW50IHRoYXQgdGhlIHdyaXRlIGVuZCBvZiB0aGUg
cGlwZSBoYXMgYmVlbiBhY3F1aXJlZApAQCAtMTEwNyw3ICsxNTA5LDcgQEAgaW50IEdldFN0YXR1
c0ZpbGVEZXNjcmlwdG9yKHVuc2lnbmVkIGludCBwYXJlbnRfcHJvY2Vzc19pZCwKIAogICByZXR1
cm4gd3JpdGVfZmQ7CiB9Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1MKIAogLy8gUmV0dXJucyBhIG5ld2x5IGNyZWF0ZWQgSW50ZXJuYWxS
dW5EZWF0aFRlc3RGbGFnIG9iamVjdCB3aXRoIGZpZWxkcwogLy8gaW5pdGlhbGl6ZWQgZnJvbSB0
aGUgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkgZmxhZyBpZgpAQCAtMTEyMyw3
ICsxNTI1LDggQEAgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBQYXJzZUludGVybmFsUnVuRGVh
dGhUZXN0RmxhZygpIHsKICAgU3BsaXRTdHJpbmcoR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVh
dGhfdGVzdCkuY19zdHIoKSwgJ3wnLCAmZmllbGRzKTsKICAgaW50IHdyaXRlX2ZkID0gLTE7CiAK
LSNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKwogICB1bnNpZ25l
ZCBpbnQgcGFyZW50X3Byb2Nlc3NfaWQgPSAwOwogICBzaXplX3Qgd3JpdGVfaGFuZGxlX2FzX3Np
emVfdCA9IDA7CiAgIHNpemVfdCBldmVudF9oYW5kbGVfYXNfc2l6ZV90ID0gMDsKQEAgLTExMzQs
MjMgKzE1MzcsMzQgQEAgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBQYXJzZUludGVybmFsUnVu
RGVhdGhUZXN0RmxhZygpIHsKICAgICAgIHx8ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmllbGRzWzNd
LCAmcGFyZW50X3Byb2Nlc3NfaWQpCiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxk
c1s0XSwgJndyaXRlX2hhbmRsZV9hc19zaXplX3QpCiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVt
YmVyKGZpZWxkc1s1XSwgJmV2ZW50X2hhbmRsZV9hc19zaXplX3QpKSB7Ci0gICAgRGVhdGhUZXN0
QWJvcnQoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICJCYWQgLS1ndGVzdF9pbnRlcm5hbF9ydW5f
ZGVhdGhfdGVzdCBmbGFnOiAlcyIsCi0gICAgICAgIEdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2Rl
YXRoX3Rlc3QpLmNfc3RyKCkpKTsKKyAgICBEZWF0aFRlc3RBYm9ydCgiQmFkIC0tZ3Rlc3RfaW50
ZXJuYWxfcnVuX2RlYXRoX3Rlc3QgZmxhZzogIiArCisgICAgICAgICAgICAgICAgICAgR1RFU1Rf
RkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkpOwogICB9CiAgIHdyaXRlX2ZkID0gR2V0U3Rh
dHVzRmlsZURlc2NyaXB0b3IocGFyZW50X3Byb2Nlc3NfaWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBldmVudF9oYW5kbGVfYXNfc2l6ZV90KTsKLSNlbHNlCisK
KyMgZWxpZiBHVEVTVF9PU19GVUNIU0lBCisKKyAgaWYgKGZpZWxkcy5zaXplKCkgIT0gMworICAg
ICAgfHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVsZHNbMV0sICZsaW5lKQorICAgICAgfHwgIVBh
cnNlTmF0dXJhbE51bWJlcihmaWVsZHNbMl0sICZpbmRleCkpIHsKKyAgICBEZWF0aFRlc3RBYm9y
dCgiQmFkIC0tZ3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QgZmxhZzogIgorICAgICAgICAr
IEdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpKTsKKyAgfQorCisjIGVsc2UKKwog
ICBpZiAoZmllbGRzLnNpemUoKSAhPSA0CiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZp
ZWxkc1sxXSwgJmxpbmUpCiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1syXSwg
JmluZGV4KQogICAgICAgfHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVsZHNbM10sICZ3cml0ZV9m
ZCkpIHsKLSAgICBEZWF0aFRlc3RBYm9ydChTdHJpbmc6OkZvcm1hdCgKLSAgICAgICAgIkJhZCAt
LWd0ZXN0X2ludGVybmFsX3J1bl9kZWF0aF90ZXN0IGZsYWc6ICVzIiwKLSAgICAgICAgR1RFU1Rf
RkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkuY19zdHIoKSkpOworICAgIERlYXRoVGVzdEFi
b3J0KCJCYWQgLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFnOiAiCisgICAgICAg
ICsgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkpOwogICB9Ci0jZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1MKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCiAgIHJl
dHVybiBuZXcgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKGZpZWxkc1swXSwgbGluZSwgaW5kZXgs
IHdyaXRlX2ZkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3Jj
L2d0ZXN0LWZpbGVwYXRoLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWZp
bGVwYXRoLmNjCmluZGV4IGMxZWY5MTg4YWQ4NWFiOGEwNDdhMzNiZjk5NDVlMWNkMGNjNzNlZmYu
LmE3ZTY1YzA4MmE3NWZjNmZiMDM4YTAyM2Q1YjFkM2UwOWU0NzlmMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1maWxlcGF0aC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtZmlsZXBhdGguY2MKQEAgLTI2LDM5ICsyNiwzOCBA
QAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8v
IEF1dGhvcnM6IGtlaXRoLnJheUBnbWFpbC5jb20gKEtlaXRoIFJheSkKIAotI2luY2x1ZGUgPGd0
ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtcG9ydC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgi
CiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1w
b3J0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgogCiAjaWYgR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUKLSNpbmNsdWRlIDx3aW5kb3dzLmg+CisjIGluY2x1ZGUgPHdpbmRvd3Mu
aD4KICNlbGlmIEdURVNUX09TX1dJTkRPV1MKLSNpbmNsdWRlIDxkaXJlY3QuaD4KLSNpbmNsdWRl
IDxpby5oPgorIyBpbmNsdWRlIDxkaXJlY3QuaD4KKyMgaW5jbHVkZSA8aW8uaD4KICNlbGlmIEdU
RVNUX09TX1NZTUJJQU4KIC8vIFN5bWJpYW4gT3BlbkMgaGFzIFBBVEhfTUFYIGluIHN5cy9zeXNs
aW1pdHMuaAotI2luY2x1ZGUgPHN5cy9zeXNsaW1pdHMuaD4KKyMgaW5jbHVkZSA8c3lzL3N5c2xp
bWl0cy5oPgogI2Vsc2UKLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxjbGltaXRzPiAg
Ly8gU29tZSBMaW51eCBkaXN0cmlidXRpb25zIGRlZmluZSBQQVRIX01BWCBoZXJlLgorIyBpbmNs
dWRlIDxsaW1pdHMuaD4KKyMgaW5jbHVkZSA8Y2xpbWl0cz4gIC8vIFNvbWUgTGludXggZGlzdHJp
YnV0aW9ucyBkZWZpbmUgUEFUSF9NQVggaGVyZS4KICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKIAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgorCiAj
aWYgR1RFU1RfT1NfV0lORE9XUwotI2RlZmluZSBHVEVTVF9QQVRIX01BWF8gX01BWF9QQVRICisj
IGRlZmluZSBHVEVTVF9QQVRIX01BWF8gX01BWF9QQVRICiAjZWxpZiBkZWZpbmVkKFBBVEhfTUFY
KQotI2RlZmluZSBHVEVTVF9QQVRIX01BWF8gUEFUSF9NQVgKKyMgZGVmaW5lIEdURVNUX1BBVEhf
TUFYXyBQQVRIX01BWAogI2VsaWYgZGVmaW5lZChfWE9QRU5fUEFUSF9NQVgpCi0jZGVmaW5lIEdU
RVNUX1BBVEhfTUFYXyBfWE9QRU5fUEFUSF9NQVgKKyMgZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBf
WE9QRU5fUEFUSF9NQVgKICNlbHNlCi0jZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBfUE9TSVhfUEFU
SF9NQVgKKyMgZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBfUE9TSVhfUEFUSF9NQVgKICNlbmRpZiAg
Ly8gR1RFU1RfT1NfV0lORE9XUwogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3Ry
aW5nLmg+Ci0KIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKQEAg
LTY5LDIxICs2OCwxOSBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogLy8gb2YgdGhlbS4KIGNvbnN0
IGNoYXIga1BhdGhTZXBhcmF0b3IgPSAnXFwnOwogY29uc3QgY2hhciBrQWx0ZXJuYXRlUGF0aFNl
cGFyYXRvciA9ICcvJzsKLWNvbnN0IGNoYXIga1BhdGhTZXBhcmF0b3JTdHJpbmdbXSA9ICJcXCI7
CiBjb25zdCBjaGFyIGtBbHRlcm5hdGVQYXRoU2VwYXJhdG9yU3RyaW5nW10gPSAiLyI7Ci0jaWYg
R1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIC8v
IFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlIGEgY3VycmVudCBkaXJlY3RvcnkuIFlvdSBzaG91bGQg
bm90IHVzZQogLy8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGluIHRlc3RzIG9uIFdpbmRvd3MgQ0Us
IGJ1dCB0aGlzIGF0IGxlYXN0CiAvLyBwcm92aWRlcyBhIHJlYXNvbmFibGUgZmFsbGJhY2suCiBj
b25zdCBjaGFyIGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nW10gPSAiXFwiOwogLy8gV2luZG93cyBD
RSBkb2Vzbid0IGRlZmluZSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUwogY29uc3QgRFdPUkQga0lu
dmFsaWRGaWxlQXR0cmlidXRlcyA9IDB4ZmZmZmZmZmY7Ci0jZWxzZQorIyBlbHNlCiBjb25zdCBj
aGFyIGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nW10gPSAiLlxcIjsKLSNlbmRpZiAgLy8gR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAj
ZWxzZQogY29uc3QgY2hhciBrUGF0aFNlcGFyYXRvciA9ICcvJzsKLWNvbnN0IGNoYXIga1BhdGhT
ZXBhcmF0b3JTdHJpbmdbXSA9ICIvIjsKIGNvbnN0IGNoYXIga0N1cnJlbnREaXJlY3RvcnlTdHJp
bmdbXSA9ICIuLyI7CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIApAQCAtOTgsNyArOTUs
NyBAQCBzdGF0aWMgYm9vbCBJc1BhdGhTZXBhcmF0b3IoY2hhciBjKSB7CiAKIC8vIFJldHVybnMg
dGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksIG9yICIiIGlmIHVuc3VjY2Vzc2Z1bC4KIEZp
bGVQYXRoIEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkgewotI2lmIEdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFCisjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgfHwgR1RFU1RfT1NfV0lORE9XU19Q
SE9ORSB8fCBHVEVTVF9PU19XSU5ET1dTX1JUCiAgIC8vIFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZl
IGEgY3VycmVudCBkaXJlY3RvcnksIHNvIHdlIGp1c3QgcmV0dXJuCiAgIC8vIHNvbWV0aGluZyBy
ZWFzb25hYmxlLgogICByZXR1cm4gRmlsZVBhdGgoa0N1cnJlbnREaXJlY3RvcnlTdHJpbmcpOwpA
QCAtMTA3LDcgKzEwNCwxNCBAQCBGaWxlUGF0aCBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpIHsK
ICAgcmV0dXJuIEZpbGVQYXRoKF9nZXRjd2QoY3dkLCBzaXplb2YoY3dkKSkgPT0gTlVMTCA/ICIi
IDogY3dkKTsKICNlbHNlCiAgIGNoYXIgY3dkW0dURVNUX1BBVEhfTUFYXyArIDFdID0geyAnXDAn
IH07Ci0gIHJldHVybiBGaWxlUGF0aChnZXRjd2QoY3dkLCBzaXplb2YoY3dkKSkgPT0gTlVMTCA/
ICIiIDogY3dkKTsKKyAgY2hhciogcmVzdWx0ID0gZ2V0Y3dkKGN3ZCwgc2l6ZW9mKGN3ZCkpOwor
IyBpZiBHVEVTVF9PU19OQUNMCisgIC8vIGdldGN3ZCB3aWxsIGxpa2VseSBmYWlsIGluIE5hQ2wg
ZHVlIHRvIHRoZSBzYW5kYm94LCBzbyByZXR1cm4gc29tZXRoaW5nCisgIC8vIHJlYXNvbmFibGUu
IFRoZSB1c2VyIG1heSBoYXZlIHByb3ZpZGVkIGEgc2hpbSBpbXBsZW1lbnRhdGlvbiBmb3IgZ2V0
Y3dkLAorICAvLyBob3dldmVyLCBzbyBmYWxsYmFjayBvbmx5IHdoZW4gZmFpbHVyZSBpcyBkZXRl
Y3RlZC4KKyAgcmV0dXJuIEZpbGVQYXRoKHJlc3VsdCA9PSBOVUxMID8ga0N1cnJlbnREaXJlY3Rv
cnlTdHJpbmcgOiBjd2QpOworIyBlbmRpZiAgLy8gR1RFU1RfT1NfTkFDTAorICByZXR1cm4gRmls
ZVBhdGgocmVzdWx0ID09IE5VTEwgPyAiIiA6IGN3ZCk7CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCiB9CiAKQEAgLTExNiwxNCArMTIwLDE1IEBAIEZpbGVQYXRoIEZpbGVQYXRo
OjpHZXRDdXJyZW50RGlyKCkgewogLy8gRmlsZVBhdGgoImRpci9maWxlIikuIElmIGEgY2FzZS1p
bnNlbnNpdGl2ZSBleHRlbnNpb24gaXMgbm90CiAvLyBmb3VuZCwgcmV0dXJucyBhIGNvcHkgb2Yg
dGhlIG9yaWdpbmFsIEZpbGVQYXRoLgogRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZUV4dGVuc2lv
bihjb25zdCBjaGFyKiBleHRlbnNpb24pIGNvbnN0IHsKLSAgU3RyaW5nIGRvdF9leHRlbnNpb24o
U3RyaW5nOjpGb3JtYXQoIi4lcyIsIGV4dGVuc2lvbikpOwotICBpZiAocGF0aG5hbWVfLkVuZHNX
aXRoQ2FzZUluc2Vuc2l0aXZlKGRvdF9leHRlbnNpb24uY19zdHIoKSkpIHsKLSAgICByZXR1cm4g
RmlsZVBhdGgoU3RyaW5nKHBhdGhuYW1lXy5jX3N0cigpLCBwYXRobmFtZV8ubGVuZ3RoKCkgLSA0
KSk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGRvdF9leHRlbnNpb24gPSBzdGQ6OnN0cmluZygiLiIp
ICsgZXh0ZW5zaW9uOworICBpZiAoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZShwYXRo
bmFtZV8sIGRvdF9leHRlbnNpb24pKSB7CisgICAgcmV0dXJuIEZpbGVQYXRoKHBhdGhuYW1lXy5z
dWJzdHIoCisgICAgICAgIDAsIHBhdGhuYW1lXy5sZW5ndGgoKSAtIGRvdF9leHRlbnNpb24ubGVu
Z3RoKCkpKTsKICAgfQogICByZXR1cm4gKnRoaXM7CiB9CiAKLS8vIFJldHVybnMgYSBwb2ludGVy
IHRvIHRoZSBsYXN0IG9jY3VyZW5jZSBvZiBhIHZhbGlkIHBhdGggc2VwYXJhdG9yIGluCisvLyBS
ZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIGEgdmFsaWQgcGF0aCBz
ZXBhcmF0b3IgaW4KIC8vIHRoZSBGaWxlUGF0aC4gT24gV2luZG93cywgZm9yIGV4YW1wbGUsIGJv
dGggJy8nIGFuZCAnXCcgYXJlIHZhbGlkIHBhdGgKIC8vIHNlcGFyYXRvcnMuIFJldHVybnMgTlVM
TCBpZiBubyBwYXRoIHNlcGFyYXRvciB3YXMgZm91bmQuCiBjb25zdCBjaGFyKiBGaWxlUGF0aDo6
RmluZExhc3RQYXRoU2VwYXJhdG9yKCkgY29uc3QgewpAQCAtMTQ3LDcgKzE1Miw3IEBAIGNvbnN0
IGNoYXIqIEZpbGVQYXRoOjpGaW5kTGFzdFBhdGhTZXBhcmF0b3IoKSBjb25zdCB7CiAvLyBPbiBX
aW5kb3dzIHBsYXRmb3JtLCAnXCcgaXMgdGhlIHBhdGggc2VwYXJhdG9yLCBvdGhlcndpc2UgaXQg
aXMgJy8nLgogRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZURpcmVjdG9yeU5hbWUoKSBjb25zdCB7
CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGxhc3Rfc2VwID0gRmluZExhc3RQYXRoU2VwYXJhdG9yKCk7
Ci0gIHJldHVybiBsYXN0X3NlcCA/IEZpbGVQYXRoKFN0cmluZyhsYXN0X3NlcCArIDEpKSA6ICp0
aGlzOworICByZXR1cm4gbGFzdF9zZXAgPyBGaWxlUGF0aChsYXN0X3NlcCArIDEpIDogKnRoaXM7
CiB9CiAKIC8vIFJlbW92ZUZpbGVOYW1lIHJldHVybnMgdGhlIGRpcmVjdG9yeSBwYXRoIHdpdGgg
dGhlIGZpbGVuYW1lIHJlbW92ZWQuCkBAIC0xNTgsOSArMTYzLDkgQEAgRmlsZVBhdGggRmlsZVBh
dGg6OlJlbW92ZURpcmVjdG9yeU5hbWUoKSBjb25zdCB7CiAvLyBPbiBXaW5kb3dzIHBsYXRmb3Jt
LCAnXCcgaXMgdGhlIHBhdGggc2VwYXJhdG9yLCBvdGhlcndpc2UgaXQgaXMgJy8nLgogRmlsZVBh
dGggRmlsZVBhdGg6OlJlbW92ZUZpbGVOYW1lKCkgY29uc3QgewogICBjb25zdCBjaGFyKiBjb25z
dCBsYXN0X3NlcCA9IEZpbmRMYXN0UGF0aFNlcGFyYXRvcigpOwotICBTdHJpbmcgZGlyOworICBz
dGQ6OnN0cmluZyBkaXI7CiAgIGlmIChsYXN0X3NlcCkgewotICAgIGRpciA9IFN0cmluZyhjX3N0
cigpLCBsYXN0X3NlcCArIDEgLSBjX3N0cigpKTsKKyAgICBkaXIgPSBzdGQ6OnN0cmluZyhjX3N0
cigpLCBsYXN0X3NlcCArIDEgLSBjX3N0cigpKTsKICAgfSBlbHNlIHsKICAgICBkaXIgPSBrQ3Vy
cmVudERpcmVjdG9yeVN0cmluZzsKICAgfQpAQCAtMTc3LDExICsxODIsMTIgQEAgRmlsZVBhdGgg
RmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShjb25zdCBGaWxlUGF0aCYgZGlyZWN0b3J5LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGaWxlUGF0aCYgYmFzZV9uYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtYmVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHRlbnNpb24pIHsKLSAgU3RyaW5nIGZpbGU7
CisgIHN0ZDo6c3RyaW5nIGZpbGU7CiAgIGlmIChudW1iZXIgPT0gMCkgewotICAgIGZpbGUgPSBT
dHJpbmc6OkZvcm1hdCgiJXMuJXMiLCBiYXNlX25hbWUuY19zdHIoKSwgZXh0ZW5zaW9uKTsKKyAg
ICBmaWxlID0gYmFzZV9uYW1lLnN0cmluZygpICsgIi4iICsgZXh0ZW5zaW9uOwogICB9IGVsc2Ug
ewotICAgIGZpbGUgPSBTdHJpbmc6OkZvcm1hdCgiJXNfJWQuJXMiLCBiYXNlX25hbWUuY19zdHIo
KSwgbnVtYmVyLCBleHRlbnNpb24pOworICAgIGZpbGUgPSBiYXNlX25hbWUuc3RyaW5nKCkgKyAi
XyIgKyBTdHJlYW1hYmxlVG9TdHJpbmcobnVtYmVyKQorICAgICAgICArICIuIiArIGV4dGVuc2lv
bjsKICAgfQogICByZXR1cm4gQ29uY2F0UGF0aHMoZGlyZWN0b3J5LCBGaWxlUGF0aChmaWxlKSk7
CiB9CkBAIC0xOTMsOCArMTk5LDcgQEAgRmlsZVBhdGggRmlsZVBhdGg6OkNvbmNhdFBhdGhzKGNv
bnN0IEZpbGVQYXRoJiBkaXJlY3RvcnksCiAgIGlmIChkaXJlY3RvcnkuSXNFbXB0eSgpKQogICAg
IHJldHVybiByZWxhdGl2ZV9wYXRoOwogICBjb25zdCBGaWxlUGF0aCBkaXIoZGlyZWN0b3J5LlJl
bW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpKTsKLSAgcmV0dXJuIEZpbGVQYXRoKFN0cmluZzo6
Rm9ybWF0KCIlcyVjJXMiLCBkaXIuY19zdHIoKSwga1BhdGhTZXBhcmF0b3IsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZV9wYXRoLmNfc3RyKCkpKTsKKyAgcmV0dXJu
IEZpbGVQYXRoKGRpci5zdHJpbmcoKSArIGtQYXRoU2VwYXJhdG9yICsgcmVsYXRpdmVfcGF0aC5z
dHJpbmcoKSk7CiB9CiAKIC8vIFJldHVybnMgdHJ1ZSBpZiBwYXRobmFtZSBkZXNjcmliZXMgc29t
ZXRoaW5nIGZpbmRhYmxlIGluIHRoZSBmaWxlLXN5c3RlbSwKQEAgLTI0NSw3ICsyNTAsNyBAQCBi
b29sIEZpbGVQYXRoOjpEaXJlY3RvcnlFeGlzdHMoKSBjb25zdCB7CiAvLyByb290IGRpcmVjdG9y
eSBwZXIgZGlzayBkcml2ZS4pCiBib29sIEZpbGVQYXRoOjpJc1Jvb3REaXJlY3RvcnkoKSBjb25z
dCB7CiAjaWYgR1RFU1RfT1NfV0lORE9XUwotICAvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogb24g
V2luZG93cyBhIG5ldHdvcmsgc2hhcmUgbGlrZQorICAvLyBGSVhNRTogb24gV2luZG93cyBhIG5l
dHdvcmsgc2hhcmUgbGlrZQogICAvLyBcXHNlcnZlclxzaGFyZSBjYW4gYmUgYSByb290IGRpcmVj
dG9yeSwgYWx0aG91Z2ggaXQgY2Fubm90IGJlIHRoZQogICAvLyBjdXJyZW50IGRpcmVjdG9yeS4g
IEhhbmRsZSB0aGlzIHByb3Blcmx5LgogICByZXR1cm4gcGF0aG5hbWVfLmxlbmd0aCgpID09IDMg
JiYgSXNBYnNvbHV0ZVBhdGgoKTsKQEAgLTMzOCwxNCArMzQzLDE0IEBAIGJvb2wgRmlsZVBhdGg6
OkNyZWF0ZUZvbGRlcigpIGNvbnN0IHsKIC8vIE9uIFdpbmRvd3MgcGxhdGZvcm0sIHVzZXMgXCBh
cyB0aGUgc2VwYXJhdG9yLCBvdGhlciBwbGF0Zm9ybXMgdXNlIC8uCiBGaWxlUGF0aCBGaWxlUGF0
aDo6UmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkgY29uc3QgewogICByZXR1cm4gSXNEaXJl
Y3RvcnkoKQotICAgICAgPyBGaWxlUGF0aChTdHJpbmcocGF0aG5hbWVfLmNfc3RyKCksIHBhdGhu
YW1lXy5sZW5ndGgoKSAtIDEpKQorICAgICAgPyBGaWxlUGF0aChwYXRobmFtZV8uc3Vic3RyKDAs
IHBhdGhuYW1lXy5sZW5ndGgoKSAtIDEpKQogICAgICAgOiAqdGhpczsKIH0KIAogLy8gUmVtb3Zl
cyBhbnkgcmVkdW5kYW50IHNlcGFyYXRvcnMgdGhhdCBtaWdodCBiZSBpbiB0aGUgcGF0aG5hbWUu
CiAvLyBGb3IgZXhhbXBsZSwgImJhci8vL2ZvbyIgYmVjb21lcyAiYmFyL2ZvbyIuIERvZXMgbm90
IGVsaW1pbmF0ZSBvdGhlcgogLy8gcmVkdW5kYW5jaWVzIHRoYXQgbWlnaHQgYmUgaW4gYSBwYXRo
bmFtZSBpbnZvbHZpbmcgIi4iIG9yICIuLiIuCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogaGFu
ZGxlIFdpbmRvd3MgbmV0d29yayBzaGFyZXMgKGUuZy4gXFxzZXJ2ZXJcc2hhcmUpLgorLy8gRklY
TUU6IGhhbmRsZSBXaW5kb3dzIG5ldHdvcmsgc2hhcmVzIChlLmcuIFxcc2VydmVyXHNoYXJlKS4K
IHZvaWQgRmlsZVBhdGg6Ok5vcm1hbGl6ZSgpIHsKICAgaWYgKHBhdGhuYW1lXy5jX3N0cigpID09
IE5VTEwpIHsKICAgICBwYXRobmFtZV8gPSAiIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3NyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaAppbmRleCAwMTQxNWY3ZDk1OWRjYTA3MDlmYWMx
NzY2MTBkYjczODhmNjA0NTU5Li40NzkwMDQxNDliNDhjMjg1NjRlMjA1ZTAyMTBjNmM0MzEwNDE4
YjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtaW50ZXJu
YWwtaW5sLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWludGVybmFs
LWlubC5oCkBAIC0yNywyNiArMjcsMTUgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAotLy8gVXRpbGl0eSBmdW5jdGlvbnMgYW5kIGNsYXNzZXMgdXNlZCBieSB0aGUgR29vZ2xl
IEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tICha
aGFueW9uZyBXYW4pCi0vLworLy8gVXRpbGl0eSBmdW5jdGlvbnMgYW5kIGNsYXNzZXMgdXNlZCBi
eSB0aGUgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4vLwogLy8gVGhpcyBmaWxlIGNvbnRh
aW5zIHB1cmVseSBHb29nbGUgVGVzdCdzIGludGVybmFsIGltcGxlbWVudGF0aW9uLiAgUGxlYXNl
CiAvLyBETyBOT1QgI0lOQ0xVREUgSVQgSU4gQSBVU0VSIFBST0dSQU0uCiAKICNpZm5kZWYgR1RF
U1RfU1JDX0dURVNUX0lOVEVSTkFMX0lOTF9IXwogI2RlZmluZSBHVEVTVF9TUkNfR1RFU1RfSU5U
RVJOQUxfSU5MX0hfCiAKLS8vIEdURVNUX0lNUExFTUVOVEFUSU9OXyBpcyBkZWZpbmVkIHRvIDEg
aWZmIHRoZSBjdXJyZW50IHRyYW5zbGF0aW9uIHVuaXQgaXMKLS8vIHBhcnQgb2YgR29vZ2xlIFRl
c3QncyBpbXBsZW1lbnRhdGlvbjsgb3RoZXJ3aXNlIGl0J3MgdW5kZWZpbmVkLgotI2lmICFHVEVT
VF9JTVBMRU1FTlRBVElPTl8KLS8vIEEgdXNlciBpcyB0cnlpbmcgdG8gaW5jbHVkZSB0aGlzIGZy
b20gaGlzIGNvZGUgLSBqdXN0IHNheSBuby4KLSNlcnJvciAiZ3Rlc3QtaW50ZXJuYWwtaW5sLmgg
aXMgcGFydCBvZiBHb29nbGUgVGVzdCdzIGludGVybmFsIGltcGxlbWVudGF0aW9uLiIKLSNlcnJv
ciAiSXQgbXVzdCBub3QgYmUgaW5jbHVkZWQgZXhjZXB0IGJ5IEdvb2dsZSBUZXN0IGl0c2VsZi4i
Ci0jZW5kaWYgIC8vIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCiAjaWZuZGVmIF9XSU4zMl9XQ0UK
LSNpbmNsdWRlIDxlcnJuby5oPgorIyBpbmNsdWRlIDxlcnJuby5oPgogI2VuZGlmICAvLyAhX1dJ
TjMyX1dDRQogI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPiAgLy8gRm9y
IHN0cnRvbGwvX3N0cnRvdWw2NC9tYWxsb2MvZnJlZS4KQEAgLTU2LDE0ICs0NSwyMiBAQAogI2lu
Y2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlIDxndGVzdC9pbnRl
cm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5o
IgorCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworIyBpbmNsdWRlIDxhcnBhL2luZXQu
aD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxuZXRkYi5oPiAgLy8gTk9MSU5UCisjZW5kaWYKIAog
I2lmIEdURVNUX09TX1dJTkRPV1MKLSNpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBGb3IgRFdPUkQu
CisjIGluY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAogI2VuZGlmICAvLyBHVEVTVF9PU19X
SU5ET1dTCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3Qtc3BpLmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJn
dGVzdC9ndGVzdC1zcGkuaCIKKworR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDI1
MSBcCisvKiBjbGFzcyBBIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2VkIGJ5
IGNsaWVudHMgb2YgY2xhc3MgQiAqLykKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC04OSwx
MSArODYsMTQgQEAgY29uc3QgY2hhciBrRmlsdGVyRmxhZ1tdID0gImZpbHRlciI7CiBjb25zdCBj
aGFyIGtMaXN0VGVzdHNGbGFnW10gPSAibGlzdF90ZXN0cyI7CiBjb25zdCBjaGFyIGtPdXRwdXRG
bGFnW10gPSAib3V0cHV0IjsKIGNvbnN0IGNoYXIga1ByaW50VGltZUZsYWdbXSA9ICJwcmludF90
aW1lIjsKK2NvbnN0IGNoYXIga1ByaW50VVRGOEZsYWdbXSA9ICJwcmludF91dGY4IjsKIGNvbnN0
IGNoYXIga1JhbmRvbVNlZWRGbGFnW10gPSAicmFuZG9tX3NlZWQiOwogY29uc3QgY2hhciBrUmVw
ZWF0RmxhZ1tdID0gInJlcGVhdCI7CiBjb25zdCBjaGFyIGtTaHVmZmxlRmxhZ1tdID0gInNodWZm
bGUiOwogY29uc3QgY2hhciBrU3RhY2tUcmFjZURlcHRoRmxhZ1tdID0gInN0YWNrX3RyYWNlX2Rl
cHRoIjsKK2NvbnN0IGNoYXIga1N0cmVhbVJlc3VsdFRvRmxhZ1tdID0gInN0cmVhbV9yZXN1bHRf
dG8iOwogY29uc3QgY2hhciBrVGhyb3dPbkZhaWx1cmVGbGFnW10gPSAidGhyb3dfb25fZmFpbHVy
ZSI7Citjb25zdCBjaGFyIGtGbGFnZmlsZUZsYWdbXSA9ICJmbGFnZmlsZSI7CiAKIC8vIEEgdmFs
aWQgcmFuZG9tIHNlZWQgbXVzdCBiZSBpbiBbMSwga01heFJhbmRvbVNlZWRdLgogY29uc3QgaW50
IGtNYXhSYW5kb21TZWVkID0gOTk5OTk7CkBAIC0xMTEsNiArMTExLDEyIEBAIEdURVNUX0FQSV8g
Ym9vbCBTaG91bGRVc2VDb2xvcihib29sIHN0ZG91dF9pc190dHkpOwogLy8gRm9ybWF0cyB0aGUg
Z2l2ZW4gdGltZSBpbiBtaWxsaXNlY29uZHMgYXMgc2Vjb25kcy4KIEdURVNUX0FQSV8gc3RkOjpz
dHJpbmcgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKFRpbWVJbk1pbGxpcyBtcyk7CiAKKy8v
IENvbnZlcnRzIHRoZSBnaXZlbiB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byBhIGRhdGUgc3RyaW5n
IGluIHRoZSBJU08gODYwMQorLy8gZm9ybWF0LCB3aXRob3V0IHRoZSB0aW1lem9uZSBpbmZvcm1h
dGlvbi4gIE4uQi46IGR1ZSB0byB0aGUgdXNlIHRoZQorLy8gbm9uLXJlZW50cmFudCBsb2NhbHRp
bWUoKSBmdW5jdGlvbiwgdGhpcyBmdW5jdGlvbiBpcyBub3QgdGhyZWFkIHNhZmUuICBEbworLy8g
bm90IHVzZSBpdCBpbiBhbnkgY29kZSB0aGF0IGNhbiBiZSBjYWxsZWQgZnJvbSBtdWx0aXBsZSB0
aHJlYWRzLgorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0Fz
SXNvODYwMShUaW1lSW5NaWxsaXMgbXMpOworCiAvLyBQYXJzZXMgYSBzdHJpbmcgZm9yIGFuIElu
dDMyIGZsYWcsIGluIHRoZSBmb3JtIG9mICItLWZsYWc9dmFsdWUiLgogLy8KIC8vIE9uIHN1Y2Nl
c3MsIHN0b3JlcyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcgaW4gKnZhbHVlLCBhbmQgcmV0dXJucwpA
QCAtMTYxLDEwICsxNjcsMTIgQEAgY2xhc3MgR1Rlc3RGbGFnU2F2ZXIgewogICAgIGxpc3RfdGVz
dHNfID0gR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKTsKICAgICBvdXRwdXRfID0gR1RFU1RfRkxBRyhv
dXRwdXQpOwogICAgIHByaW50X3RpbWVfID0gR1RFU1RfRkxBRyhwcmludF90aW1lKTsKKyAgICBw
cmludF91dGY4XyA9IEdURVNUX0ZMQUcocHJpbnRfdXRmOCk7CiAgICAgcmFuZG9tX3NlZWRfID0g
R1RFU1RfRkxBRyhyYW5kb21fc2VlZCk7CiAgICAgcmVwZWF0XyA9IEdURVNUX0ZMQUcocmVwZWF0
KTsKICAgICBzaHVmZmxlXyA9IEdURVNUX0ZMQUcoc2h1ZmZsZSk7CiAgICAgc3RhY2tfdHJhY2Vf
ZGVwdGhfID0gR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCk7CisgICAgc3RyZWFtX3Jlc3Vs
dF90b18gPSBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pOwogICAgIHRocm93X29uX2ZhaWx1
cmVfID0gR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKICAgfQogCkBAIC0xODEsNDEgKzE4
OSw0NCBAQCBjbGFzcyBHVGVzdEZsYWdTYXZlciB7CiAgICAgR1RFU1RfRkxBRyhsaXN0X3Rlc3Rz
KSA9IGxpc3RfdGVzdHNfOwogICAgIEdURVNUX0ZMQUcob3V0cHV0KSA9IG91dHB1dF87CiAgICAg
R1RFU1RfRkxBRyhwcmludF90aW1lKSA9IHByaW50X3RpbWVfOworICAgIEdURVNUX0ZMQUcocHJp
bnRfdXRmOCkgPSBwcmludF91dGY4XzsKICAgICBHVEVTVF9GTEFHKHJhbmRvbV9zZWVkKSA9IHJh
bmRvbV9zZWVkXzsKICAgICBHVEVTVF9GTEFHKHJlcGVhdCkgPSByZXBlYXRfOwogICAgIEdURVNU
X0ZMQUcoc2h1ZmZsZSkgPSBzaHVmZmxlXzsKICAgICBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2Rl
cHRoKSA9IHN0YWNrX3RyYWNlX2RlcHRoXzsKKyAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRf
dG8pID0gc3RyZWFtX3Jlc3VsdF90b187CiAgICAgR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJl
KSA9IHRocm93X29uX2ZhaWx1cmVfOwogICB9CisKICBwcml2YXRlOgogICAvLyBGaWVsZHMgZm9y
IHNhdmluZyB0aGUgb3JpZ2luYWwgdmFsdWVzIG9mIGZsYWdzLgogICBib29sIGFsc29fcnVuX2Rp
c2FibGVkX3Rlc3RzXzsKICAgYm9vbCBicmVha19vbl9mYWlsdXJlXzsKICAgYm9vbCBjYXRjaF9l
eGNlcHRpb25zXzsKLSAgU3RyaW5nIGNvbG9yXzsKLSAgU3RyaW5nIGRlYXRoX3Rlc3Rfc3R5bGVf
OworICBzdGQ6OnN0cmluZyBjb2xvcl87CisgIHN0ZDo6c3RyaW5nIGRlYXRoX3Rlc3Rfc3R5bGVf
OwogICBib29sIGRlYXRoX3Rlc3RfdXNlX2ZvcmtfOwotICBTdHJpbmcgZmlsdGVyXzsKLSAgU3Ry
aW5nIGludGVybmFsX3J1bl9kZWF0aF90ZXN0XzsKKyAgc3RkOjpzdHJpbmcgZmlsdGVyXzsKKyAg
c3RkOjpzdHJpbmcgaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfOwogICBib29sIGxpc3RfdGVzdHNf
OwotICBTdHJpbmcgb3V0cHV0XzsKKyAgc3RkOjpzdHJpbmcgb3V0cHV0XzsKICAgYm9vbCBwcmlu
dF90aW1lXzsKKyAgYm9vbCBwcmludF91dGY4XzsKICAgaW50ZXJuYWw6OkludDMyIHJhbmRvbV9z
ZWVkXzsKICAgaW50ZXJuYWw6OkludDMyIHJlcGVhdF87CiAgIGJvb2wgc2h1ZmZsZV87CiAgIGlu
dGVybmFsOjpJbnQzMiBzdGFja190cmFjZV9kZXB0aF87CisgIHN0ZDo6c3RyaW5nIHN0cmVhbV9y
ZXN1bHRfdG9fOwogICBib29sIHRocm93X29uX2ZhaWx1cmVfOwogfSBHVEVTVF9BVFRSSUJVVEVf
VU5VU0VEXzsKIAogLy8gQ29udmVydHMgYSBVbmljb2RlIGNvZGUgcG9pbnQgdG8gYSBuYXJyb3cg
c3RyaW5nIGluIFVURi04IGVuY29kaW5nLgogLy8gY29kZV9wb2ludCBwYXJhbWV0ZXIgaXMgb2Yg
dHlwZSBVSW50MzIgYmVjYXVzZSB3Y2hhcl90IG1heSBub3QgYmUKIC8vIHdpZGUgZW5vdWdoIHRv
IGNvbnRhaW4gYSBjb2RlIHBvaW50LgotLy8gVGhlIG91dHB1dCBidWZmZXIgc3RyIG11c3QgY29u
dGFpbnQgYXQgbGVhc3QgMzIgY2hhcmFjdGVycy4KLS8vIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRo
ZSBhZGRyZXNzIG9mIHRoZSBvdXRwdXQgYnVmZmVyLgogLy8gSWYgdGhlIGNvZGVfcG9pbnQgaXMg
bm90IGEgdmFsaWQgVW5pY29kZSBjb2RlIHBvaW50Ci0vLyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNv
ZGUgcmFuZ2UgVSswIHRvIFUrMTBGRkZGKSBpdCB3aWxsIGJlIG91dHB1dAotLy8gYXMgJyhJbnZh
bGlkIFVuaWNvZGUgMHhYWFhYWFhYWCknLgotR1RFU1RfQVBJXyBjaGFyKiBDb2RlUG9pbnRUb1V0
ZjgoVUludDMyIGNvZGVfcG9pbnQsIGNoYXIqIHN0cik7CisvLyAoaS5lLiBvdXRzaWRlIG9mIFVu
aWNvZGUgcmFuZ2UgVSswIHRvIFUrMTBGRkZGKSBpdCB3aWxsIGJlIGNvbnZlcnRlZAorLy8gdG8g
IihJbnZhbGlkIFVuaWNvZGUgMHhYWFhYWFhYWCkiLgorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBD
b2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQpOwogCiAvLyBDb252ZXJ0cyBhIHdpZGUg
c3RyaW5nIHRvIGEgbmFycm93IHN0cmluZyBpbiBVVEYtOCBlbmNvZGluZy4KIC8vIFRoZSB3aWRl
IHN0cmluZyBpcyBhc3N1bWVkIHRvIGhhdmUgdGhlIGZvbGxvd2luZyBlbmNvZGluZzoKQEAgLTIz
MCw3ICsyNDEsNyBAQCBHVEVTVF9BUElfIGNoYXIqIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29k
ZV9wb2ludCwgY2hhciogc3RyKTsKIC8vIGFzICcoSW52YWxpZCBVbmljb2RlIDB4WFhYWFhYWFgp
Jy4gSWYgdGhlIHN0cmluZyBpcyBpbiBVVEYxNiBlbmNvZGluZwogLy8gYW5kIGNvbnRhaW5zIGlu
dmFsaWQgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycywgdmFsdWVzIGluIHRob3NlIHBhaXJzCiAvLyB3
aWxsIGJlIGVuY29kZWQgYXMgaW5kaXZpZHVhbCBVbmljb2RlIGNoYXJhY3RlcnMgZnJvbSBCYXNp
YyBOb3JtYWwgUGxhbmUuCi1HVEVTVF9BUElfIFN0cmluZyBXaWRlU3RyaW5nVG9VdGY4KGNvbnN0
IHdjaGFyX3QqIHN0ciwgaW50IG51bV9jaGFycyk7CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFdp
ZGVTdHJpbmdUb1V0ZjgoY29uc3Qgd2NoYXJfdCogc3RyLCBpbnQgbnVtX2NoYXJzKTsKIAogLy8g
UmVhZHMgdGhlIEdURVNUX1NIQVJEX1NUQVRVU19GSUxFIGVudmlyb25tZW50IHZhcmlhYmxlLCBh
bmQgY3JlYXRlcyB0aGUgZmlsZQogLy8gaWYgdGhlIHZhcmlhYmxlIGlzIHByZXNlbnQuIElmIGEg
ZmlsZSBhbHJlYWR5IGV4aXN0cyBhdCB0aGlzIGxvY2F0aW9uLCB0aGlzCkBAIC0yNjYsNyArMjc3
LDE0IEBAIEdURVNUX0FQSV8gYm9vbCBTaG91bGRSdW5UZXN0T25TaGFyZCgKIC8vIHRoZSBnaXZl
biBwcmVkaWNhdGUuCiB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyLCB0eXBlbmFtZSBQcmVkaWNh
dGU+CiBpbmxpbmUgaW50IENvdW50SWYoY29uc3QgQ29udGFpbmVyJiBjLCBQcmVkaWNhdGUgcHJl
ZGljYXRlKSB7Ci0gIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6Y291bnRfaWYoYy5iZWdp
bigpLCBjLmVuZCgpLCBwcmVkaWNhdGUpKTsKKyAgLy8gSW1wbGVtZW50ZWQgYXMgYW4gZXhwbGlj
aXQgbG9vcCBzaW5jZSBzdGQ6OmNvdW50X2lmKCkgaW4gbGliQ3N0ZCBvbgorICAvLyBTb2xhcmlz
IGhhcyBhIG5vbi1zdGFuZGFyZCBzaWduYXR1cmUuCisgIGludCBjb3VudCA9IDA7CisgIGZvciAo
dHlwZW5hbWUgQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBpdCA9IGMuYmVnaW4oKTsgaXQgIT0g
Yy5lbmQoKTsgKytpdCkgeworICAgIGlmIChwcmVkaWNhdGUoKml0KSkKKyAgICAgICsrY291bnQ7
CisgIH0KKyAgcmV0dXJuIGNvdW50OwogfQogCiAvLyBBcHBsaWVzIGEgZnVuY3Rpb24vZnVuY3Rv
ciB0byBlYWNoIGVsZW1lbnQgaW4gdGhlIGNvbnRhaW5lci4KQEAgLTMyNyw5NSArMzQ1LDE1IEBA
IGNsYXNzIFRlc3RQcm9wZXJ0eUtleUlzIHsKICAgLy8gQ29uc3RydWN0b3IuCiAgIC8vCiAgIC8v
IFRlc3RQcm9wZXJ0eUtleUlzIGhhcyBOTyBkZWZhdWx0IGNvbnN0cnVjdG9yLgotICBleHBsaWNp
dCBUZXN0UHJvcGVydHlLZXlJcyhjb25zdCBjaGFyKiBrZXkpCi0gICAgICA6IGtleV8oa2V5KSB7
fQorICBleHBsaWNpdCBUZXN0UHJvcGVydHlLZXlJcyhjb25zdCBzdGQ6OnN0cmluZyYga2V5KSA6
IGtleV8oa2V5KSB7fQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgbmFtZSBvZiB0
ZXN0IHByb3BlcnR5IG1hdGNoZXMgb24ga2V5Xy4KICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFRl
c3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgY29uc3QgewotICAgIHJldHVybiBTdHJpbmcodGVz
dF9wcm9wZXJ0eS5rZXkoKSkuQ29tcGFyZShrZXlfKSA9PSAwOwotICB9Ci0KLSBwcml2YXRlOgot
ICBTdHJpbmcga2V5XzsKLX07Ci0KLWNsYXNzIFRlc3RJbmZvSW1wbCB7Ci0gcHVibGljOgotICBU
ZXN0SW5mb0ltcGwoVGVzdEluZm8qIHBhcmVudCwgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUs
Ci0gICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB0ZXN0X2Nhc2Vf
Y29tbWVudCwKLSAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbW1lbnQsIFR5cGVJZCBmaXh0
dXJlX2NsYXNzX2lkLAotICAgICAgICAgICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSog
ZmFjdG9yeSk7Ci0gIH5UZXN0SW5mb0ltcGwoKTsKLQotICAvLyBSZXR1cm5zIHRydWUgaWYgdGhp
cyB0ZXN0IHNob3VsZCBydW4uCi0gIGJvb2wgc2hvdWxkX3J1bigpIGNvbnN0IHsgcmV0dXJuIHNo
b3VsZF9ydW5fOyB9Ci0KLSAgLy8gU2V0cyB0aGUgc2hvdWxkX3J1biBtZW1iZXIuCi0gIHZvaWQg
c2V0X3Nob3VsZF9ydW4oYm9vbCBzaG91bGQpIHsgc2hvdWxkX3J1bl8gPSBzaG91bGQ7IH0KLQot
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IGlzIGRpc2FibGVkLiBEaXNhYmxlZCB0ZXN0
cyBhcmUgbm90IHJ1bi4KLSAgYm9vbCBpc19kaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGlzX2Rp
c2FibGVkXzsgfQotCi0gIC8vIFNldHMgdGhlIGlzX2Rpc2FibGVkIG1lbWJlci4KLSAgdm9pZCBz
ZXRfaXNfZGlzYWJsZWQoYm9vbCBpcykgeyBpc19kaXNhYmxlZF8gPSBpczsgfQotCi0gIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGlzIHRlc3QgbWF0Y2hlcyB0aGUgZmlsdGVyIHNwZWNpZmllZCBieSB0
aGUgdXNlci4KLSAgYm9vbCBtYXRjaGVzX2ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1hdGNoZXNf
ZmlsdGVyXzsgfQotCi0gIC8vIFNldHMgdGhlIG1hdGNoZXNfZmlsdGVyIG1lbWJlci4KLSAgdm9p
ZCBzZXRfbWF0Y2hlc19maWx0ZXIoYm9vbCBtYXRjaGVzKSB7IG1hdGNoZXNfZmlsdGVyXyA9IG1h
dGNoZXM7IH0KLQotICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNhc2UgbmFtZS4KLSAgY29uc3QgY2hh
ciogdGVzdF9jYXNlX25hbWUoKSBjb25zdCB7IHJldHVybiB0ZXN0X2Nhc2VfbmFtZV8uY19zdHIo
KTsgfQotCi0gIC8vIFJldHVybnMgdGhlIHRlc3QgbmFtZS4KLSAgY29uc3QgY2hhciogbmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG5hbWVfLmNfc3RyKCk7IH0KLQotICAvLyBSZXR1cm5zIHRoZSB0ZXN0
IGNhc2UgY29tbWVudC4KLSAgY29uc3QgY2hhciogdGVzdF9jYXNlX2NvbW1lbnQoKSBjb25zdCB7
IHJldHVybiB0ZXN0X2Nhc2VfY29tbWVudF8uY19zdHIoKTsgfQotCi0gIC8vIFJldHVybnMgdGhl
IHRlc3QgY29tbWVudC4KLSAgY29uc3QgY2hhciogY29tbWVudCgpIGNvbnN0IHsgcmV0dXJuIGNv
bW1lbnRfLmNfc3RyKCk7IH0KLQotICAvLyBSZXR1cm5zIHRoZSBJRCBvZiB0aGUgdGVzdCBmaXh0
dXJlIGNsYXNzLgotICBUeXBlSWQgZml4dHVyZV9jbGFzc19pZCgpIGNvbnN0IHsgcmV0dXJuIGZp
eHR1cmVfY2xhc3NfaWRfOyB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgdGVzdCByZXN1bHQuCi0gIFRl
c3RSZXN1bHQqIHJlc3VsdCgpIHsgcmV0dXJuICZyZXN1bHRfOyB9Ci0gIGNvbnN0IFRlc3RSZXN1
bHQqIHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuICZyZXN1bHRfOyB9Ci0KLSAgLy8gQ3JlYXRlcyB0
aGUgdGVzdCBvYmplY3QsIHJ1bnMgaXQsIHJlY29yZHMgaXRzIHJlc3VsdCwgYW5kIHRoZW4KLSAg
Ly8gZGVsZXRlcyBpdC4KLSAgdm9pZCBSdW4oKTsKLQotICAvLyBDbGVhcnMgdGhlIHRlc3QgcmVz
dWx0LgotICB2b2lkIENsZWFyUmVzdWx0KCkgeyByZXN1bHRfLkNsZWFyKCk7IH0KLQotICAvLyBD
bGVhcnMgdGhlIHRlc3QgcmVzdWx0IGluIHRoZSBnaXZlbiBUZXN0SW5mbyBvYmplY3QuCi0gIHN0
YXRpYyB2b2lkIENsZWFyVGVzdFJlc3VsdChUZXN0SW5mbyAqIHRlc3RfaW5mbykgewotICAgIHRl
c3RfaW5mby0+aW1wbCgpLT5DbGVhclJlc3VsdCgpOworICAgIHJldHVybiB0ZXN0X3Byb3BlcnR5
LmtleSgpID09IGtleV87CiAgIH0KIAogIHByaXZhdGU6Ci0gIC8vIFRoZXNlIGZpZWxkcyBhcmUg
aW1tdXRhYmxlIHByb3BlcnRpZXMgb2YgdGhlIHRlc3QuCi0gIFRlc3RJbmZvKiBjb25zdCBwYXJl
bnRfOyAgICAgICAgICAvLyBUaGUgb3duZXIgb2YgdGhpcyBvYmplY3QKLSAgY29uc3QgU3RyaW5n
IHRlc3RfY2FzZV9uYW1lXzsgICAgIC8vIFRlc3QgY2FzZSBuYW1lCi0gIGNvbnN0IFN0cmluZyBu
YW1lXzsgICAgICAgICAgICAgICAvLyBUZXN0IG5hbWUKLSAgY29uc3QgU3RyaW5nIHRlc3RfY2Fz
ZV9jb21tZW50XzsgIC8vIFRlc3QgY2FzZSBjb21tZW50Ci0gIGNvbnN0IFN0cmluZyBjb21tZW50
XzsgICAgICAgICAgICAvLyBUZXN0IGNvbW1lbnQKLSAgY29uc3QgVHlwZUlkIGZpeHR1cmVfY2xh
c3NfaWRfOyAgIC8vIElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKLSAgYm9vbCBzaG91bGRf
cnVuXzsgICAgICAgICAgICAgICAgIC8vIFRydWUgaWZmIHRoaXMgdGVzdCBzaG91bGQgcnVuCi0g
IGJvb2wgaXNfZGlzYWJsZWRfOyAgICAgICAgICAgICAgICAvLyBUcnVlIGlmZiB0aGlzIHRlc3Qg
aXMgZGlzYWJsZWQKLSAgYm9vbCBtYXRjaGVzX2ZpbHRlcl87ICAgICAgICAgICAgIC8vIFRydWUg
aWYgdGhpcyB0ZXN0IG1hdGNoZXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyB1c2VyLXNwZWNpZmllZCBmaWx0ZXIuCi0gIGludGVybmFsOjpUZXN0RmFjdG9yeUJh
c2UqIGNvbnN0IGZhY3RvcnlfOyAgLy8gVGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHRlc3Qgb2JqZWN0
Ci0KLSAgLy8gVGhpcyBmaWVsZCBpcyBtdXRhYmxlIGFuZCBuZWVkcyB0byBiZSByZXNldCBiZWZv
cmUgcnVubmluZyB0aGUKLSAgLy8gdGVzdCBmb3IgdGhlIHNlY29uZCB0aW1lLgotICBUZXN0UmVz
dWx0IHJlc3VsdF87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0SW5m
b0ltcGwpOworICBzdGQ6OnN0cmluZyBrZXlfOwogfTsKIAogLy8gQ2xhc3MgVW5pdFRlc3RPcHRp
b25zLgpAQCAtNDMzLDEyICszNzEsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdE9wdGlv
bnMgewogICAvLyBGdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgdGhlIGd0ZXN0X291dHB1dCBmbGFn
LgogCiAgIC8vIFJldHVybnMgdGhlIG91dHB1dCBmb3JtYXQsIG9yICIiIGZvciBub3JtYWwgcHJp
bnRlZCBvdXRwdXQuCi0gIHN0YXRpYyBTdHJpbmcgR2V0T3V0cHV0Rm9ybWF0KCk7CisgIHN0YXRp
YyBzdGQ6OnN0cmluZyBHZXRPdXRwdXRGb3JtYXQoKTsKIAogICAvLyBSZXR1cm5zIHRoZSBhYnNv
bHV0ZSBwYXRoIG9mIHRoZSByZXF1ZXN0ZWQgb3V0cHV0IGZpbGUsIG9yIHRoZQogICAvLyBkZWZh
dWx0ICh0ZXN0X2RldGFpbC54bWwgaW4gdGhlIG9yaWdpbmFsIHdvcmtpbmcgZGlyZWN0b3J5KSBp
ZgogICAvLyBub25lIHdhcyBleHBsaWNpdGx5IHNwZWNpZmllZC4KLSAgc3RhdGljIFN0cmluZyBH
ZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKTsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldEFi
c29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpOwogCiAgIC8vIEZ1bmN0aW9ucyBmb3IgcHJvY2Vzc2lu
ZyB0aGUgZ3Rlc3RfZmlsdGVyIGZsYWcuCiAKQEAgLTQ1MSw4ICszODksOCBAQCBjbGFzcyBHVEVT
VF9BUElfIFVuaXRUZXN0T3B0aW9ucyB7CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdXNl
ci1zcGVjaWZpZWQgZmlsdGVyIG1hdGNoZXMgdGhlIHRlc3QgY2FzZQogICAvLyBuYW1lIGFuZCB0
aGUgdGVzdCBuYW1lLgotICBzdGF0aWMgYm9vbCBGaWx0ZXJNYXRjaGVzVGVzdChjb25zdCBTdHJp
bmcgJnRlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBTdHJpbmcgJnRlc3RfbmFtZSk7CisgIHN0YXRpYyBib29sIEZpbHRlck1hdGNoZXNUZXN0KGNv
bnN0IHN0ZDo6c3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnRlc3RfbmFtZSk7CiAKICNpZiBHVEVTVF9PU19X
SU5ET1dTCiAgIC8vIEZ1bmN0aW9uIGZvciBzdXBwb3J0aW5nIHRoZSBndGVzdF9jYXRjaF9leGNl
cHRpb24gZmxhZy4KQEAgLTQ2NSw3ICs0MDMsNyBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0
T3B0aW9ucyB7CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmICJuYW1lIiBtYXRjaGVzIHRoZSAnOicg
c2VwYXJhdGVkIGxpc3Qgb2YgZ2xvYi1zdHlsZQogICAvLyBmaWx0ZXJzIGluICJmaWx0ZXIiLgot
ICBzdGF0aWMgYm9vbCBNYXRjaGVzRmlsdGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgY2hh
ciogZmlsdGVyKTsKKyAgc3RhdGljIGJvb2wgTWF0Y2hlc0ZpbHRlcihjb25zdCBzdGQ6OnN0cmlu
ZyYgbmFtZSwgY29uc3QgY2hhciogZmlsdGVyKTsKIH07CiAKIC8vIFJldHVybnMgdGhlIGN1cnJl
bnQgYXBwbGljYXRpb24ncyBuYW1lLCByZW1vdmluZyBkaXJlY3RvcnkgcGF0aCBpZiB0aGF0CkBA
IC00NzgsMTkgKzQxNiwyMyBAQCBjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2Ugewog
ICBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UoKSB7fQogICB2aXJ0dWFsIH5Pc1N0YWNrVHJh
Y2VHZXR0ZXJJbnRlcmZhY2UoKSB7fQogCi0gIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3Rh
Y2sgdHJhY2UgYXMgYSBTdHJpbmcuICBQYXJhbWV0ZXJzOgorICAvLyBSZXR1cm5zIHRoZSBjdXJy
ZW50IE9TIHN0YWNrIHRyYWNlIGFzIGFuIHN0ZDo6c3RyaW5nLiAgUGFyYW1ldGVyczoKICAgLy8K
ICAgLy8gICBtYXhfZGVwdGggIC0gdGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0
byBiZSBpbmNsdWRlZAogICAvLyAgICAgICAgICAgICAgICBpbiB0aGUgdHJhY2UuCiAgIC8vICAg
c2tpcF9jb3VudCAtIHRoZSBudW1iZXIgb2YgdG9wIGZyYW1lcyB0byBiZSBza2lwcGVkOyBkb2Vz
bid0IGNvdW50CiAgIC8vICAgICAgICAgICAgICAgIGFnYWluc3QgbWF4X2RlcHRoLgotICB2aXJ0
dWFsIFN0cmluZyBDdXJyZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3Vu
dCkgPSAwOworICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIEN1cnJlbnRTdGFja1RyYWNlKGludCBtYXhf
ZGVwdGgsIGludCBza2lwX2NvdW50KSA9IDA7CiAKICAgLy8gVXBvbkxlYXZpbmdHVGVzdCgpIHNo
b3VsZCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIEdvb2dsZSBUZXN0IGNhbGxzCiAgIC8v
IHVzZXIgY29kZS4gSXQgc2F2ZXMgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBz
dGFjayB0aGF0CiAgIC8vIEN1cnJlbnRTdGFja1RyYWNlKCkgd2lsbCB1c2UgdG8gZmluZCBhbmQg
aGlkZSBHb29nbGUgVGVzdCBzdGFjayBmcmFtZXMuCiAgIHZpcnR1YWwgdm9pZCBVcG9uTGVhdmlu
Z0dUZXN0KCkgPSAwOwogCisgIC8vIFRoaXMgc3RyaW5nIGlzIGluc2VydGVkIGluIHBsYWNlIG9m
IHN0YWNrIGZyYW1lcyB0aGF0IGFyZSBwYXJ0IG9mCisgIC8vIEdvb2dsZSBUZXN0J3MgaW1wbGVt
ZW50YXRpb24uCisgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBrRWxpZGVkRnJhbWVzTWFya2Vy
OworCiAgcHJpdmF0ZToKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhPc1N0YWNr
VHJhY2VHZXR0ZXJJbnRlcmZhY2UpOwogfTsKQEAgLTQ5OCwyMiArNDQwLDIxIEBAIGNsYXNzIE9z
U3RhY2tUcmFjZUdldHRlckludGVyZmFjZSB7CiAvLyBBIHdvcmtpbmcgaW1wbGVtZW50YXRpb24g
b2YgdGhlIE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSBpbnRlcmZhY2UuCiBjbGFzcyBPc1N0
YWNrVHJhY2VHZXR0ZXIgOiBwdWJsaWMgT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlIHsKICBw
dWJsaWM6Ci0gIE9zU3RhY2tUcmFjZUdldHRlcigpIDogY2FsbGVyX2ZyYW1lXyhOVUxMKSB7fQot
ICB2aXJ0dWFsIFN0cmluZyBDdXJyZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tp
cF9jb3VudCk7Ci0gIHZpcnR1YWwgdm9pZCBVcG9uTGVhdmluZ0dUZXN0KCk7CisgIE9zU3RhY2tU
cmFjZUdldHRlcigpIHt9CiAKLSAgLy8gVGhpcyBzdHJpbmcgaXMgaW5zZXJ0ZWQgaW4gcGxhY2Ug
b2Ygc3RhY2sgZnJhbWVzIHRoYXQgYXJlIHBhcnQgb2YKLSAgLy8gR29vZ2xlIFRlc3QncyBpbXBs
ZW1lbnRhdGlvbi4KLSAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGtFbGlkZWRGcmFtZXNNYXJr
ZXI7CisgIHZpcnR1YWwgc3RkOjpzdHJpbmcgQ3VycmVudFN0YWNrVHJhY2UoaW50IG1heF9kZXB0
aCwgaW50IHNraXBfY291bnQpOworICB2aXJ0dWFsIHZvaWQgVXBvbkxlYXZpbmdHVGVzdCgpOwog
CiAgcHJpdmF0ZToKLSAgTXV0ZXggbXV0ZXhfOyAgLy8gcHJvdGVjdHMgYWxsIGludGVybmFsIHN0
YXRlCisjaWYgR1RFU1RfSEFTX0FCU0wKKyAgTXV0ZXggbXV0ZXhfOyAgLy8gUHJvdGVjdHMgYWxs
IGludGVybmFsIHN0YXRlLgogCiAgIC8vIFdlIHNhdmUgdGhlIHN0YWNrIGZyYW1lIGJlbG93IHRo
ZSBmcmFtZSB0aGF0IGNhbGxzIHVzZXIgY29kZS4KICAgLy8gV2UgZG8gdGhpcyBiZWNhdXNlIHRo
ZSBhZGRyZXNzIG9mIHRoZSBmcmFtZSBpbW1lZGlhdGVseSBiZWxvdwogICAvLyB0aGUgdXNlciBj
b2RlIGNoYW5nZXMgYmV0d2VlbiB0aGUgY2FsbCB0byBVcG9uTGVhdmluZ0dUZXN0KCkKLSAgLy8g
YW5kIGFueSBjYWxscyB0byBDdXJyZW50U3RhY2tUcmFjZSgpIGZyb20gd2l0aGluIHRoZSB1c2Vy
IGNvZGUuCi0gIHZvaWQqIGNhbGxlcl9mcmFtZV87CisgIC8vIGFuZCBhbnkgY2FsbHMgdG8gdGhl
IHN0YWNrIHRyYWNlIGNvZGUgZnJvbSB3aXRoaW4gdGhlIHVzZXIgY29kZS4KKyAgdm9pZCogY2Fs
bGVyX2ZyYW1lXyA9IG51bGxwdHI7CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCiAKICAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhPc1N0YWNrVHJhY2VHZXR0ZXIpOwogfTsKQEAg
LTUyMiw3ICs0NjMsNyBAQCBjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXIgOiBwdWJsaWMgT3NTdGFj
a1RyYWNlR2V0dGVySW50ZXJmYWNlIHsKIHN0cnVjdCBUcmFjZUluZm8gewogICBjb25zdCBjaGFy
KiBmaWxlOwogICBpbnQgbGluZTsKLSAgU3RyaW5nIG1lc3NhZ2U7CisgIHN0ZDo6c3RyaW5nIG1l
c3NhZ2U7CiB9OwogCiAvLyBUaGlzIGlzIHRoZSBkZWZhdWx0IGdsb2JhbCB0ZXN0IHBhcnQgcmVz
dWx0IHJlcG9ydGVyIHVzZWQgaW4gVW5pdFRlc3RJbXBsLgpAQCAtNjA2LDE1ICs1NDcsMjUgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBHZXRzIHRoZSBudW1iZXIgb2Yg
ZmFpbGVkIHRlc3RzLgogICBpbnQgZmFpbGVkX3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAvLyBH
ZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGlu
IHRoZSBYTUwgcmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkg
Y29uc3Q7CisKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzLgogICBpbnQg
ZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0OwogCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiB0
ZXN0cyB0byBiZSBwcmludGVkIGluIHRoZSBYTUwgcmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV90
ZXN0X2NvdW50KCkgY29uc3Q7CisKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0cy4K
ICAgaW50IHRvdGFsX3Rlc3RfY291bnQoKSBjb25zdDsKIAogICAvLyBHZXRzIHRoZSBudW1iZXIg
b2YgdGVzdHMgdGhhdCBzaG91bGQgcnVuLgogICBpbnQgdGVzdF90b19ydW5fY291bnQoKSBjb25z
dDsKIAorICAvLyBHZXRzIHRoZSB0aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0gc3RhcnQsIGluIG1z
IGZyb20gdGhlIHN0YXJ0IG9mIHRoZQorICAvLyBVTklYIGVwb2NoLgorICBUaW1lSW5NaWxsaXMg
c3RhcnRfdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gc3RhcnRfdGltZXN0YW1wXzsgfQorCiAg
IC8vIEdldHMgdGhlIGVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5NaWxs
aXMgZWxhcHNlZF90aW1lKCkgY29uc3QgeyByZXR1cm4gZWxhcHNlZF90aW1lXzsgfQogCkBAIC02
NjMsNyArNjE0LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBnZXR0
ZXIsIGFuZCByZXR1cm5zIGl0LgogICBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UqIG9zX3N0
YWNrX3RyYWNlX2dldHRlcigpOwogCi0gIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sg
dHJhY2UgYXMgYSBTdHJpbmcuCisgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJh
Y2UgYXMgYW4gc3RkOjpzdHJpbmcuCiAgIC8vCiAgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBz
dGFjayBmcmFtZXMgdG8gYmUgaW5jbHVkZWQgaXMgc3BlY2lmaWVkIGJ5CiAgIC8vIHRoZSBndGVz
dF9zdGFja190cmFjZV9kZXB0aCBmbGFnLiAgVGhlIHNraXBfY291bnQgcGFyYW1ldGVyCkBAIC02
NzMsNyArNjI0LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBGb3Ig
ZXhhbXBsZSwgaWYgRm9vKCkgY2FsbHMgQmFyKCksIHdoaWNoIGluIHR1cm4gY2FsbHMKICAgLy8g
Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgxKSwgRm9vKCkgd2lsbCBiZSBpbmNsdWRlZCBp
biB0aGUKICAgLy8gdHJhY2UgYnV0IEJhcigpIGFuZCBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0
VG9wKCkgd29uJ3QuCi0gIFN0cmluZyBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKGludCBz
a2lwX2NvdW50KTsKKyAgc3RkOjpzdHJpbmcgQ3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcChp
bnQgc2tpcF9jb3VudCkgR1RFU1RfTk9fSU5MSU5FXzsKIAogICAvLyBGaW5kcyBhbmQgcmV0dXJu
cyBhIFRlc3RDYXNlIHdpdGggdGhlIGdpdmVuIG5hbWUuICBJZiBvbmUgZG9lc24ndAogICAvLyBl
eGlzdCwgY3JlYXRlcyBvbmUgYW5kIHJldHVybnMgaXQuCkBAIC02ODEsMTAgKzYzMiwxMiBAQCBj
bGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vIEFyZ3VtZW50czoKICAgLy8KICAg
Ly8gICB0ZXN0X2Nhc2VfbmFtZTogbmFtZSBvZiB0aGUgdGVzdCBjYXNlCisgIC8vICAgdHlwZV9w
YXJhbTogICAgIHRoZSBuYW1lIG9mIHRoZSB0ZXN0J3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwg
aWYKKyAgLy8gICAgICAgICAgICAgICAgICAgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhIHR5cGUt
cGFyYW1ldGVyaXplZCB0ZXN0LgogICAvLyAgIHNldF91cF90YzogICAgICBwb2ludGVyIHRvIHRo
ZSBmdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIHRlc3QgY2FzZQogICAvLyAgIHRlYXJfZG93bl90
YzogICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2Fz
ZQogICBUZXN0Q2FzZSogR2V0VGVzdENhc2UoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb21tZW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogdHlwZV9wYXJhbSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIFRlc3Q6OlNldFVwVGVzdENhc2VGdW5jIHNldF91cF90YywKICAgICAgICAgICAgICAgICAg
ICAgICAgIFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90Yyk7CiAKQEAgLTY5
Nyw3ICs2NTAsNyBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vICAgdGVz
dF9pbmZvOiAgICB0aGUgVGVzdEluZm8gb2JqZWN0CiAgIHZvaWQgQWRkVGVzdEluZm8oVGVzdDo6
U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAgICAgICAgICAgICAgICAgIFRlc3Q6OlRl
YXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YywKLSAgICAgICAgICAgICAgICAgICBUZXN0
SW5mbyAqIHRlc3RfaW5mbykgeworICAgICAgICAgICAgICAgICAgIFRlc3RJbmZvKiB0ZXN0X2lu
Zm8pIHsKICAgICAvLyBJbiBvcmRlciB0byBzdXBwb3J0IHRocmVhZC1zYWZlIGRlYXRoIHRlc3Rz
LCB3ZSBuZWVkIHRvCiAgICAgLy8gcmVtZW1iZXIgdGhlIG9yaWdpbmFsIHdvcmtpbmcgZGlyZWN0
b3J5IHdoZW4gdGhlIHRlc3QgcHJvZ3JhbQogICAgIC8vIHdhcyBmaXJzdCBpbnZva2VkLiAgV2Ug
Y2Fubm90IGRvIHRoaXMgaW4gUlVOX0FMTF9URVNUUygpLCBhcwpAQCAtNzEyLDE4ICs2NjUsMTYg
QEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAgIH0KIAogICAgIEdldFRlc3RD
YXNlKHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSwKLSAgICAgICAgICAgICAgICB0ZXN0X2lu
Zm8tPnRlc3RfY2FzZV9jb21tZW50KCksCisgICAgICAgICAgICAgICAgdGVzdF9pbmZvLT50eXBl
X3BhcmFtKCksCiAgICAgICAgICAgICAgICAgc2V0X3VwX3RjLAogICAgICAgICAgICAgICAgIHRl
YXJfZG93bl90YyktPkFkZFRlc3RJbmZvKHRlc3RfaW5mbyk7CiAgIH0KIAotI2lmIEdURVNUX0hB
U19QQVJBTV9URVNUCiAgIC8vIFJldHVybnMgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkg
b2JqZWN0IHVzZWQgdG8ga2VlcCB0cmFjayBvZgogICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRl
c3RzIGFuZCBpbnN0YW50aWF0ZSBhbmQgcmVnaXN0ZXIgdGhlbS4KICAgaW50ZXJuYWw6OlBhcmFt
ZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5JiBwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKSB7
CiAgICAgcmV0dXJuIHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeV87CiAgIH0KLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIAogICAvLyBTZXRzIHRoZSBUZXN0Q2FzZSBvYmplY3Qg
Zm9yIHRoZSB0ZXN0IHRoYXQncyBjdXJyZW50bHkgcnVubmluZy4KICAgdm9pZCBzZXRfY3VycmVu
dF90ZXN0X2Nhc2UoVGVzdENhc2UqIGFfY3VycmVudF90ZXN0X2Nhc2UpIHsKQEAgLTczOCwyNyAr
Njg5LDM1IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgfQogCiAgIC8vIFJl
Z2lzdGVycyBhbGwgcGFyYW1ldGVyaXplZCB0ZXN0cyBkZWZpbmVkIHVzaW5nIFRFU1RfUCBhbmQK
LSAgLy8gSU5TVEFOVElBVEVfVEVTVF9QLCBjcmVhdGluZyByZWd1bGFyIHRlc3RzIGZvciBlYWNo
IHRlc3QvcGFyYW1ldGVyCi0gIC8vIGNvbWJpbmF0aW9uLiBUaGlzIG1ldGhvZCBjYW4gYmUgY2Fs
bGVkIG1vcmUgdGhlbiBvbmNlOyBpdCBoYXMKLSAgLy8gZ3VhcmRzIHByb3RlY3RpbmcgZnJvbSBy
ZWdpc3RlcmluZyB0aGUgdGVzdHMgbW9yZSB0aGVuIG9uY2UuCi0gIC8vIElmIHZhbHVlLXBhcmFt
ZXRlcml6ZWQgdGVzdHMgYXJlIGRpc2FibGVkLCBSZWdpc3RlclBhcmFtZXRlcml6ZWRUZXN0cwot
ICAvLyBpcyBwcmVzZW50IGJ1dCBkb2VzIG5vdGhpbmcuCisgIC8vIElOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QLCBjcmVhdGluZyByZWd1bGFyIHRlc3RzIGZvciBlYWNoIHRlc3QvcGFyYW1ldGVyCisg
IC8vIGNvbWJpbmF0aW9uLiBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIG1vcmUgdGhlbiBvbmNl
OyBpdCBoYXMgZ3VhcmRzCisgIC8vIHByb3RlY3RpbmcgZnJvbSByZWdpc3RlcmluZyB0aGUgdGVz
dHMgbW9yZSB0aGVuIG9uY2UuICBJZgorICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFy
ZSBkaXNhYmxlZCwgUmVnaXN0ZXJQYXJhbWV0ZXJpemVkVGVzdHMgaXMKKyAgLy8gcHJlc2VudCBi
dXQgZG9lcyBub3RoaW5nLgogICB2b2lkIFJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzKCk7CiAK
ICAgLy8gUnVucyBhbGwgdGVzdHMgaW4gdGhpcyBVbml0VGVzdCBvYmplY3QsIHByaW50cyB0aGUg
cmVzdWx0LCBhbmQKLSAgLy8gcmV0dXJucyAwIGlmIGFsbCB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwg
b3IgMSBvdGhlcndpc2UuICBJZiBhbnkKLSAgLy8gZXhjZXB0aW9uIGlzIHRocm93biBkdXJpbmcg
YSB0ZXN0IG9uIFdpbmRvd3MsIHRoaXMgdGVzdCBpcwotICAvLyBjb25zaWRlcmVkIHRvIGJlIGZh
aWxlZCwgYnV0IHRoZSByZXN0IG9mIHRoZSB0ZXN0cyB3aWxsIHN0aWxsIGJlCi0gIC8vIHJ1bi4g
IChXZSBkaXNhYmxlIGV4Y2VwdGlvbnMgb24gTGludXggYW5kIE1hYyBPUyBYLCBzbyB0aGUgaXNz
dWUKLSAgLy8gZG9lc24ndCBhcHBseSB0aGVyZS4pCi0gIGludCBSdW5BbGxUZXN0cygpOwotCi0g
IC8vIENsZWFycyB0aGUgcmVzdWx0cyBvZiBhbGwgdGVzdHMsIGluY2x1ZGluZyB0aGUgYWQgaG9j
IHRlc3QuCi0gIHZvaWQgQ2xlYXJSZXN1bHQoKSB7CisgIC8vIHJldHVybnMgdHJ1ZSBpZiBhbGwg
dGVzdHMgYXJlIHN1Y2Nlc3NmdWwuICBJZiBhbnkgZXhjZXB0aW9uIGlzCisgIC8vIHRocm93biBk
dXJpbmcgYSB0ZXN0LCB0aGlzIHRlc3QgaXMgY29uc2lkZXJlZCB0byBiZSBmYWlsZWQsIGJ1dAor
ICAvLyB0aGUgcmVzdCBvZiB0aGUgdGVzdHMgd2lsbCBzdGlsbCBiZSBydW4uCisgIGJvb2wgUnVu
QWxsVGVzdHMoKTsKKworICAvLyBDbGVhcnMgdGhlIHJlc3VsdHMgb2YgYWxsIHRlc3RzLCBleGNl
cHQgdGhlIGFkIGhvYyB0ZXN0cy4KKyAgdm9pZCBDbGVhck5vbkFkSG9jVGVzdFJlc3VsdCgpIHsK
ICAgICBGb3JFYWNoKHRlc3RfY2FzZXNfLCBUZXN0Q2FzZTo6Q2xlYXJUZXN0Q2FzZVJlc3VsdCk7
CisgIH0KKworICAvLyBDbGVhcnMgdGhlIHJlc3VsdHMgb2YgYWQtaG9jIHRlc3QgYXNzZXJ0aW9u
cy4KKyAgdm9pZCBDbGVhckFkSG9jVGVzdFJlc3VsdCgpIHsKICAgICBhZF9ob2NfdGVzdF9yZXN1
bHRfLkNsZWFyKCk7CiAgIH0KIAorICAvLyBBZGRzIGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJy
ZW50IFRlc3RSZXN1bHQgb2JqZWN0IHdoZW4gaW52b2tlZCBpbiBhCisgIC8vIGNvbnRleHQgb2Yg
YSB0ZXN0IG9yIGEgdGVzdCBjYXNlLCBvciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNldC4gSWYg
dGhlCisgIC8vIHJlc3VsdCBhbHJlYWR5IGNvbnRhaW5zIGEgcHJvcGVydHkgd2l0aCB0aGUgc2Ft
ZSBrZXksIHRoZSB2YWx1ZSB3aWxsIGJlCisgIC8vIHVwZGF0ZWQuCisgIHZvaWQgUmVjb3JkUHJv
cGVydHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5KTsKKwogICBlbnVtIFJlYWN0
aW9uVG9TaGFyZGluZyB7CiAgICAgSE9OT1JfU0hBUkRJTkdfUFJPVE9DT0wsCiAgICAgSUdOT1JF
X1NIQVJESU5HX1BST1RPQ09MCkBAIC04MTcsNiArNzc2LDEyIEBAIGNsYXNzIEdURVNUX0FQSV8g
VW5pdFRlc3RJbXBsIHsKICAgLy8gVW5pdFRlc3RPcHRpb25zLiBNdXN0IG5vdCBiZSBjYWxsZWQg
YmVmb3JlIEluaXRHb29nbGVUZXN0LgogICB2b2lkIENvbmZpZ3VyZVhtbE91dHB1dCgpOwogCisj
aWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworICAvLyBJbml0aWFsaXplcyB0aGUgZXZlbnQg
bGlzdGVuZXIgZm9yIHN0cmVhbWluZyB0ZXN0IHJlc3VsdHMgdG8gYSBzb2NrZXQuCisgIC8vIE11
c3Qgbm90IGJlIGNhbGxlZCBiZWZvcmUgSW5pdEdvb2dsZVRlc3QuCisgIHZvaWQgQ29uZmlndXJl
U3RyZWFtaW5nT3V0cHV0KCk7CisjZW5kaWYKKwogICAvLyBQZXJmb3JtcyBpbml0aWFsaXphdGlv
biBkZXBlbmRlbnQgdXBvbiBmbGFnIHZhbHVlcyBvYnRhaW5lZCBpbgogICAvLyBQYXJzZUdvb2ds
ZVRlc3RGbGFnc09ubHkuICBJcyBjYWxsZWQgZnJvbSBJbml0R29vZ2xlVGVzdCBhZnRlciB0aGUg
Y2FsbCB0bwogICAvLyBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkuICBJbiBjYXNlIGEgdXNlciBu
ZWdsZWN0cyB0byBjYWxsIEluaXRHb29nbGVUZXN0CkBAIC04MzcsOSArODAyLDE3IEBAIGNsYXNz
IEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gUmVzdG9yZXMgdGhlIHRlc3QgY2FzZXMg
YW5kIHRlc3RzIHRvIHRoZWlyIG9yZGVyIGJlZm9yZSB0aGUgZmlyc3Qgc2h1ZmZsZS4KICAgdm9p
ZCBVbnNodWZmbGVUZXN0cygpOwogCisgIC8vIFJldHVybnMgdGhlIHZhbHVlIG9mIEdURVNUX0ZM
QUcoY2F0Y2hfZXhjZXB0aW9ucykgYXQgdGhlIG1vbWVudAorICAvLyBVbml0VGVzdDo6UnVuKCkg
c3RhcnRzLgorICBib29sIGNhdGNoX2V4Y2VwdGlvbnMoKSBjb25zdCB7IHJldHVybiBjYXRjaF9l
eGNlcHRpb25zXzsgfQorCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNsYXNzIDo6dGVzdGluZzo6VW5p
dFRlc3Q7CiAKKyAgLy8gVXNlZCBieSBVbml0VGVzdDo6UnVuKCkgdG8gY2FwdHVyZSB0aGUgc3Rh
dGUgb2YKKyAgLy8gR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSBhdCB0aGUgbW9tZW50IGl0
IHN0YXJ0cy4KKyAgdm9pZCBzZXRfY2F0Y2hfZXhjZXB0aW9ucyhib29sIHZhbHVlKSB7IGNhdGNo
X2V4Y2VwdGlvbnNfID0gdmFsdWU7IH0KKwogICAvLyBUaGUgVW5pdFRlc3Qgb2JqZWN0IHRoYXQg
b3ducyB0aGlzIGltcGxlbWVudGF0aW9uIG9iamVjdC4KICAgVW5pdFRlc3QqIGNvbnN0IHBhcmVu
dF87CiAKQEAgLTg3NiwxNCArODQ5LDEyIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBs
IHsKICAgLy8gc2h1ZmZsZWQgb3JkZXIuCiAgIHN0ZDo6dmVjdG9yPGludD4gdGVzdF9jYXNlX2lu
ZGljZXNfOwogCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgLy8gUGFyYW1ldGVyaXplZFRl
c3RSZWdpc3RyeSBvYmplY3QgdXNlZCB0byByZWdpc3RlciB2YWx1ZS1wYXJhbWV0ZXJpemVkCiAg
IC8vIHRlc3RzLgogICBpbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgcGFy
YW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5XzsKIAogICAvLyBJbmRpY2F0ZXMgd2hldGhlciBSZWdp
c3RlclBhcmFtZXRlcml6ZWRUZXN0cygpIGhhcyBiZWVuIGNhbGxlZCBhbHJlYWR5LgogICBib29s
IHBhcmFtZXRlcml6ZWRfdGVzdHNfcmVnaXN0ZXJlZF87Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19Q
QVJBTV9URVNUCiAKICAgLy8gSW5kZXggb2YgdGhlIGxhc3QgZGVhdGggdGVzdCBjYXNlIHJlZ2lz
dGVyZWQuICBJbml0aWFsbHkgLTEuCiAgIGludCBsYXN0X2RlYXRoX3Rlc3RfY2FzZV87CkBAIC05
MjksNiArOTAwLDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gT3Vy
IHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLgogICBpbnRlcm5hbDo6UmFuZG9tIHJhbmRvbV87CiAK
KyAgLy8gVGhlIHRpbWUgb2YgdGhlIHRlc3QgcHJvZ3JhbSBzdGFydCwgaW4gbXMgZnJvbSB0aGUg
c3RhcnQgb2YgdGhlCisgIC8vIFVOSVggZXBvY2guCisgIFRpbWVJbk1pbGxpcyBzdGFydF90aW1l
c3RhbXBfOworCiAgIC8vIEhvdyBsb25nIHRoZSB0ZXN0IHRvb2sgdG8gcnVuLCBpbiBtaWxsaXNl
Y29uZHMuCiAgIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3RpbWVfOwogCkBAIC05NDIsNiArOTE3LDEw
IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gQSBwZXItdGhyZWFkIHN0
YWNrIG9mIHRyYWNlcyBjcmVhdGVkIGJ5IHRoZSBTQ09QRURfVFJBQ0UoKSBtYWNyby4KICAgaW50
ZXJuYWw6OlRocmVhZExvY2FsPHN0ZDo6dmVjdG9yPFRyYWNlSW5mbz4gPiBndGVzdF90cmFjZV9z
dGFja187CiAKKyAgLy8gVGhlIHZhbHVlIG9mIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykg
YXQgdGhlIG1vbWVudCBSdW5BbGxUZXN0cygpCisgIC8vIHN0YXJ0cy4KKyAgYm9vbCBjYXRjaF9l
eGNlcHRpb25zXzsKKwogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFVuaXRUZXN0
SW1wbCk7CiB9OyAgLy8gY2xhc3MgVW5pdFRlc3RJbXBsCiAKQEAgLTk1MSwxNCArOTMwLDE2IEBA
IGlubGluZSBVbml0VGVzdEltcGwqIEdldFVuaXRUZXN0SW1wbCgpIHsKICAgcmV0dXJuIFVuaXRU
ZXN0OjpHZXRJbnN0YW5jZSgpLT5pbXBsKCk7CiB9CiAKKyNpZiBHVEVTVF9VU0VTX1NJTVBMRV9S
RQorCiAvLyBJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zIGZvciBpbXBsZW1lbnRpbmcgdGhlIHNp
bXBsZSByZWd1bGFyCiAvLyBleHByZXNzaW9uIG1hdGNoZXIuCiBHVEVTVF9BUElfIGJvb2wgSXNJ
blNldChjaGFyIGNoLCBjb25zdCBjaGFyKiBzdHIpOwotR1RFU1RfQVBJXyBib29sIElzRGlnaXQo
Y2hhciBjaCk7Ci1HVEVTVF9BUElfIGJvb2wgSXNQdW5jdChjaGFyIGNoKTsKK0dURVNUX0FQSV8g
Ym9vbCBJc0FzY2lpRGlnaXQoY2hhciBjaCk7CitHVEVTVF9BUElfIGJvb2wgSXNBc2NpaVB1bmN0
KGNoYXIgY2gpOwogR1RFU1RfQVBJXyBib29sIElzUmVwZWF0KGNoYXIgY2gpOwotR1RFU1RfQVBJ
XyBib29sIElzV2hpdGVTcGFjZShjaGFyIGNoKTsKLUdURVNUX0FQSV8gYm9vbCBJc1dvcmRDaGFy
KGNoYXIgY2gpOworR1RFU1RfQVBJXyBib29sIElzQXNjaWlXaGl0ZVNwYWNlKGNoYXIgY2gpOwor
R1RFU1RfQVBJXyBib29sIElzQXNjaWlXb3JkQ2hhcihjaGFyIGNoKTsKIEdURVNUX0FQSV8gYm9v
bCBJc1ZhbGlkRXNjYXBlKGNoYXIgY2gpOwogR1RFU1RfQVBJXyBib29sIEF0b21NYXRjaGVzQ2hh
cihib29sIGVzY2FwZWQsIGNoYXIgcGF0dGVybiwgY2hhciBjaCk7CiBHVEVTVF9BUElfIGJvb2wg
VmFsaWRhdGVSZWdleChjb25zdCBjaGFyKiByZWdleCk7CkBAIC05NjcsNiArOTQ4LDggQEAgR1RF
U1RfQVBJXyBib29sIE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKAogICAgIGJvb2wgZXNj
YXBlZCwgY2hhciBjaCwgY2hhciByZXBlYXQsIGNvbnN0IGNoYXIqIHJlZ2V4LCBjb25zdCBjaGFy
KiBzdHIpOwogR1RFU1RfQVBJXyBib29sIE1hdGNoUmVnZXhBbnl3aGVyZShjb25zdCBjaGFyKiBy
ZWdleCwgY29uc3QgY2hhciogc3RyKTsKIAorI2VuZGlmICAvLyBHVEVTVF9VU0VTX1NJTVBMRV9S
RQorCiAvLyBQYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IgR29vZ2xlIFRlc3QgZmxhZ3MsIHdp
dGhvdXQgaW5pdGlhbGl6aW5nCiAvLyBvdGhlciBwYXJ0cyBvZiBHb29nbGUgVGVzdC4KIEdURVNU
X0FQSV8gdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoaW50KiBhcmdjLCBjaGFyKiogYXJn
dik7CkBAIC05NzYsMzMgKzk1OSw3IEBAIEdURVNUX0FQSV8gdm9pZCBQYXJzZUdvb2dsZVRlc3RG
bGFnc09ubHkoaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndik7CiAKIC8vIFJldHVybnMgdGhlIG1l
c3NhZ2UgZGVzY3JpYmluZyB0aGUgbGFzdCBzeXN0ZW0gZXJyb3IsIHJlZ2FyZGxlc3Mgb2YgdGhl
CiAvLyBwbGF0Zm9ybS4KLVN0cmluZyBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpOwotCi0jaWYg
R1RFU1RfT1NfV0lORE9XUwotLy8gUHJvdmlkZXMgbGVhay1zYWZlIFdpbmRvd3Mga2VybmVsIGhh
bmRsZSBvd25lcnNoaXAuCi1jbGFzcyBBdXRvSGFuZGxlIHsKLSBwdWJsaWM6Ci0gIEF1dG9IYW5k
bGUoKSA6IGhhbmRsZV8oSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHt9Ci0gIGV4cGxpY2l0IEF1dG9I
YW5kbGUoSEFORExFIGhhbmRsZSkgOiBoYW5kbGVfKGhhbmRsZSkge30KLQotICB+QXV0b0hhbmRs
ZSgpIHsgUmVzZXQoKTsgfQotCi0gIEhBTkRMRSBHZXQoKSBjb25zdCB7IHJldHVybiBoYW5kbGVf
OyB9Ci0gIHZvaWQgUmVzZXQoKSB7IFJlc2V0KElOVkFMSURfSEFORExFX1ZBTFVFKTsgfQotICB2
b2lkIFJlc2V0KEhBTkRMRSBoYW5kbGUpIHsKLSAgICBpZiAoaGFuZGxlICE9IGhhbmRsZV8pIHsK
LSAgICAgIGlmIChoYW5kbGVfICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICA6OkNs
b3NlSGFuZGxlKGhhbmRsZV8pOwotICAgICAgaGFuZGxlXyA9IGhhbmRsZTsKLSAgICB9Ci0gIH0K
LQotIHByaXZhdGU6Ci0gIEhBTkRMRSBoYW5kbGVfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTl8oQXV0b0hhbmRsZSk7Ci19OwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dT
CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCk7CiAKIC8v
IEF0dGVtcHRzIHRvIHBhcnNlIGEgc3RyaW5nIGludG8gYSBwb3NpdGl2ZSBpbnRlZ2VyIHBvaW50
ZWQgdG8gYnkgdGhlCiAvLyBudW1iZXIgcGFyYW1ldGVyLiAgUmV0dXJucyB0cnVlIGlmIHRoYXQg
aXMgcG9zc2libGUuCkBAIC0xMDEzLDcgKzk3MCw3IEBAIGJvb2wgUGFyc2VOYXR1cmFsTnVtYmVy
KGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgSW50ZWdlciogbnVtYmVyKSB7CiAgIC8vIEZhaWwg
ZmFzdCBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGRvZXMgbm90IGJlZ2luIHdpdGggYSBkaWdpdDsKICAg
Ly8gdGhpcyBieXBhc3NlcyBzdHJ0b1hYWCdzICJvcHRpb25hbCBsZWFkaW5nIHdoaXRlc3BhY2Ug
YW5kIHBsdXMKICAgLy8gb3IgbWludXMgc2lnbiIgc2VtYW50aWNzLCB3aGljaCBhcmUgdW5kZXNp
cmFibGUgaGVyZS4KLSAgaWYgKHN0ci5lbXB0eSgpIHx8ICFpc2RpZ2l0KHN0clswXSkpIHsKKyAg
aWYgKHN0ci5lbXB0eSgpIHx8ICFJc0RpZ2l0KHN0clswXSkpIHsKICAgICByZXR1cm4gZmFsc2U7
CiAgIH0KICAgZXJybm8gPSAwOwpAQCAtMTAyMSwxNyArOTc4LDIzIEBAIGJvb2wgUGFyc2VOYXR1
cmFsTnVtYmVyKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgSW50ZWdlciogbnVtYmVyKSB7CiAg
IGNoYXIqIGVuZDsKICAgLy8gQmlnZ2VzdENvbnZlcnRpYmxlIGlzIHRoZSBsYXJnZXN0IGludGVn
ZXIgdHlwZSB0aGF0IHN5c3RlbS1wcm92aWRlZAogICAvLyBzdHJpbmctdG8tbnVtYmVyIGNvbnZl
cnNpb24gcm91dGluZXMgY2FuIHJldHVybi4KLSNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZp
bmVkKF9fR05VQ19fKQorCisjIGlmIEdURVNUX09TX1dJTkRPV1MgJiYgIWRlZmluZWQoX19HTlVD
X18pCisKICAgLy8gTVNWQyBhbmQgQysrIEJ1aWxkZXIgZGVmaW5lIF9faW50NjQgaW5zdGVhZCBv
ZiB0aGUgc3RhbmRhcmQgbG9uZyBsb25nLgogICB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgQmln
Z2VzdENvbnZlcnRpYmxlOwogICBjb25zdCBCaWdnZXN0Q29udmVydGlibGUgcGFyc2VkID0gX3N0
cnRvdWk2NChzdHIuY19zdHIoKSwgJmVuZCwgMTApOwotI2Vsc2UKKworIyBlbHNlCisKICAgdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgQmlnZ2VzdENvbnZlcnRpYmxlOyAgLy8gTk9MSU5UCiAg
IGNvbnN0IEJpZ2dlc3RDb252ZXJ0aWJsZSBwYXJzZWQgPSBzdHJ0b3VsbChzdHIuY19zdHIoKSwg
JmVuZCwgMTApOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVkKF9fR05V
Q19fKQorCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVkKF9fR05VQ19f
KQorCiAgIGNvbnN0IGJvb2wgcGFyc2Vfc3VjY2VzcyA9ICplbmQgPT0gJ1wwJyAmJiBlcnJubyA9
PSAwOwogCi0gIC8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IENvbnZlcnQgdGhpcyB0byBjb21w
aWxlIHRpbWUgYXNzZXJ0aW9uIHdoZW4gaXQgaXMKKyAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0
byBjb21waWxlIHRpbWUgYXNzZXJ0aW9uIHdoZW4gaXQgaXMKICAgLy8gYXZhaWxhYmxlLgogICBH
VEVTVF9DSEVDS18oc2l6ZW9mKEludGVnZXIpIDw9IHNpemVvZihwYXJzZWQpKTsKIApAQCAtMTA1
Myw4ICsxMDE2LDkgQEAgYm9vbCBQYXJzZU5hdHVyYWxOdW1iZXIoY29uc3QgOjpzdGQ6OnN0cmlu
ZyYgc3RyLCBJbnRlZ2VyKiBudW1iZXIpIHsKIGNsYXNzIFRlc3RSZXN1bHRBY2Nlc3NvciB7CiAg
cHVibGljOgogICBzdGF0aWMgdm9pZCBSZWNvcmRQcm9wZXJ0eShUZXN0UmVzdWx0KiB0ZXN0X3Jl
c3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHht
bF9lbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UHJvcGVy
dHkmIHByb3BlcnR5KSB7Ci0gICAgdGVzdF9yZXN1bHQtPlJlY29yZFByb3BlcnR5KHByb3BlcnR5
KTsKKyAgICB0ZXN0X3Jlc3VsdC0+UmVjb3JkUHJvcGVydHkoeG1sX2VsZW1lbnQsIHByb3BlcnR5
KTsKICAgfQogCiAgIHN0YXRpYyB2b2lkIENsZWFyVGVzdFBhcnRSZXN1bHRzKFRlc3RSZXN1bHQq
IHRlc3RfcmVzdWx0KSB7CkBAIC0xMDY3LDcgKzEwMzEsMTU3IEBAIGNsYXNzIFRlc3RSZXN1bHRB
Y2Nlc3NvciB7CiAgIH0KIH07CiAKKyNpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKKy8v
IFN0cmVhbXMgdGVzdCByZXN1bHRzIHRvIHRoZSBnaXZlbiBwb3J0IG9uIHRoZSBnaXZlbiBob3N0
IG1hY2hpbmUuCitjbGFzcyBTdHJlYW1pbmdMaXN0ZW5lciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVu
dExpc3RlbmVyIHsKKyBwdWJsaWM6CisgIC8vIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHdyaXRp
bmcgc3RyaW5ncyB0byBhIHNvY2tldC4KKyAgY2xhc3MgQWJzdHJhY3RTb2NrZXRXcml0ZXIgewor
ICAgcHVibGljOgorICAgIHZpcnR1YWwgfkFic3RyYWN0U29ja2V0V3JpdGVyKCkge30KKworICAg
IC8vIFNlbmRzIGEgc3RyaW5nIHRvIHRoZSBzb2NrZXQuCisgICAgdmlydHVhbCB2b2lkIFNlbmQo
Y29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpID0gMDsKKworICAgIC8vIENsb3NlcyB0aGUgc29j
a2V0LgorICAgIHZpcnR1YWwgdm9pZCBDbG9zZUNvbm5lY3Rpb24oKSB7fQorCisgICAgLy8gU2Vu
ZHMgYSBzdHJpbmcgYW5kIGEgbmV3bGluZSB0byB0aGUgc29ja2V0LgorICAgIHZvaWQgU2VuZExu
KGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7IFNlbmQobWVzc2FnZSArICJcbiIpOyB9Cisg
IH07CisKKyAgLy8gQ29uY3JldGUgY2xhc3MgZm9yIGFjdHVhbGx5IHdyaXRpbmcgc3RyaW5ncyB0
byBhIHNvY2tldC4KKyAgY2xhc3MgU29ja2V0V3JpdGVyIDogcHVibGljIEFic3RyYWN0U29ja2V0
V3JpdGVyIHsKKyAgIHB1YmxpYzoKKyAgICBTb2NrZXRXcml0ZXIoY29uc3Qgc3RkOjpzdHJpbmcm
IGhvc3QsIGNvbnN0IHN0ZDo6c3RyaW5nJiBwb3J0KQorICAgICAgICA6IHNvY2tmZF8oLTEpLCBo
b3N0X25hbWVfKGhvc3QpLCBwb3J0X251bV8ocG9ydCkgeworICAgICAgTWFrZUNvbm5lY3Rpb24o
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Tb2NrZXRXcml0ZXIoKSB7CisgICAgICBpZiAoc29j
a2ZkXyAhPSAtMSkKKyAgICAgICAgQ2xvc2VDb25uZWN0aW9uKCk7CisgICAgfQorCisgICAgLy8g
U2VuZHMgYSBzdHJpbmcgdG8gdGhlIHNvY2tldC4KKyAgICB2aXJ0dWFsIHZvaWQgU2VuZChjb25z
dCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgeworICAgICAgR1RFU1RfQ0hFQ0tfKHNvY2tmZF8gIT0g
LTEpCisgICAgICAgICAgPDwgIlNlbmQoKSBjYW4gYmUgY2FsbGVkIG9ubHkgd2hlbiB0aGVyZSBp
cyBhIGNvbm5lY3Rpb24uIjsKKworICAgICAgY29uc3QgaW50IGxlbiA9IHN0YXRpY19jYXN0PGlu
dD4obWVzc2FnZS5sZW5ndGgoKSk7CisgICAgICBpZiAod3JpdGUoc29ja2ZkXywgbWVzc2FnZS5j
X3N0cigpLCBsZW4pICE9IGxlbikgeworICAgICAgICBHVEVTVF9MT0dfKFdBUk5JTkcpCisgICAg
ICAgICAgICA8PCAic3RyZWFtX3Jlc3VsdF90bzogZmFpbGVkIHRvIHN0cmVhbSB0byAiCisgICAg
ICAgICAgICA8PCBob3N0X25hbWVfIDw8ICI6IiA8PCBwb3J0X251bV87CisgICAgICB9CisgICAg
fQorCisgICBwcml2YXRlOgorICAgIC8vIENyZWF0ZXMgYSBjbGllbnQgc29ja2V0IGFuZCBjb25u
ZWN0cyB0byB0aGUgc2VydmVyLgorICAgIHZvaWQgTWFrZUNvbm5lY3Rpb24oKTsKKworICAgIC8v
IENsb3NlcyB0aGUgc29ja2V0LgorICAgIHZvaWQgQ2xvc2VDb25uZWN0aW9uKCkgeworICAgICAg
R1RFU1RfQ0hFQ0tfKHNvY2tmZF8gIT0gLTEpCisgICAgICAgICAgPDwgIkNsb3NlQ29ubmVjdGlv
bigpIGNhbiBiZSBjYWxsZWQgb25seSB3aGVuIHRoZXJlIGlzIGEgY29ubmVjdGlvbi4iOworCisg
ICAgICBjbG9zZShzb2NrZmRfKTsKKyAgICAgIHNvY2tmZF8gPSAtMTsKKyAgICB9CisKKyAgICBp
bnQgc29ja2ZkXzsgIC8vIHNvY2tldCBmaWxlIGRlc2NyaXB0b3IKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyBob3N0X25hbWVfOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHBvcnRfbnVtXzsKKworICAg
IEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oU29ja2V0V3JpdGVyKTsKKyAgfTsgIC8v
IGNsYXNzIFNvY2tldFdyaXRlcgorCisgIC8vIEVzY2FwZXMgJz0nLCAnJicsICclJywgYW5kICdc
bicgY2hhcmFjdGVycyBpbiBzdHIgYXMgIiV4eCIuCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBVcmxF
bmNvZGUoY29uc3QgY2hhciogc3RyKTsKKworICBTdHJlYW1pbmdMaXN0ZW5lcihjb25zdCBzdGQ6
OnN0cmluZyYgaG9zdCwgY29uc3Qgc3RkOjpzdHJpbmcmIHBvcnQpCisgICAgICA6IHNvY2tldF93
cml0ZXJfKG5ldyBTb2NrZXRXcml0ZXIoaG9zdCwgcG9ydCkpIHsKKyAgICBTdGFydCgpOworICB9
CisKKyAgZXhwbGljaXQgU3RyZWFtaW5nTGlzdGVuZXIoQWJzdHJhY3RTb2NrZXRXcml0ZXIqIHNv
Y2tldF93cml0ZXIpCisgICAgICA6IHNvY2tldF93cml0ZXJfKHNvY2tldF93cml0ZXIpIHsgU3Rh
cnQoKTsgfQorCisgIHZvaWQgT25UZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKiB1
bml0X3Rlc3QgKi8pIHsKKyAgICBTZW5kTG4oImV2ZW50PVRlc3RQcm9ncmFtU3RhcnQiKTsKKyAg
fQorCisgIHZvaWQgT25UZXN0UHJvZ3JhbUVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KSB7
CisgICAgLy8gTm90ZSB0aGF0IEdvb2dsZSBUZXN0IGN1cnJlbnQgb25seSByZXBvcnQgZWxhcHNl
ZCB0aW1lIGZvciBlYWNoCisgICAgLy8gdGVzdCBpdGVyYXRpb24sIG5vdCBmb3IgdGhlIGVudGly
ZSB0ZXN0IHByb2dyYW0uCisgICAgU2VuZExuKCJldmVudD1UZXN0UHJvZ3JhbUVuZCZwYXNzZWQ9
IiArIEZvcm1hdEJvb2wodW5pdF90ZXN0LlBhc3NlZCgpKSk7CisKKyAgICAvLyBOb3RpZnkgdGhl
IHN0cmVhbWluZyBzZXJ2ZXIgdG8gc3RvcC4KKyAgICBzb2NrZXRfd3JpdGVyXy0+Q2xvc2VDb25u
ZWN0aW9uKCk7CisgIH0KKworICB2b2lkIE9uVGVzdEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVuaXRU
ZXN0JiAvKiB1bml0X3Rlc3QgKi8sIGludCBpdGVyYXRpb24pIHsKKyAgICBTZW5kTG4oImV2ZW50
PVRlc3RJdGVyYXRpb25TdGFydCZpdGVyYXRpb249IiArCisgICAgICAgICAgIFN0cmVhbWFibGVU
b1N0cmluZyhpdGVyYXRpb24pKTsKKyAgfQorCisgIHZvaWQgT25UZXN0SXRlcmF0aW9uRW5kKGNv
bnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsIGludCAvKiBpdGVyYXRpb24gKi8pIHsKKyAgICBTZW5k
TG4oImV2ZW50PVRlc3RJdGVyYXRpb25FbmQmcGFzc2VkPSIgKworICAgICAgICAgICBGb3JtYXRC
b29sKHVuaXRfdGVzdC5QYXNzZWQoKSkgKyAiJmVsYXBzZWRfdGltZT0iICsKKyAgICAgICAgICAg
U3RyZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5lbGFwc2VkX3RpbWUoKSkgKyAibXMiKTsKKyAg
fQorCisgIHZvaWQgT25UZXN0Q2FzZVN0YXJ0KGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsK
KyAgICBTZW5kTG4oc3RkOjpzdHJpbmcoImV2ZW50PVRlc3RDYXNlU3RhcnQmbmFtZT0iKSArIHRl
c3RfY2FzZS5uYW1lKCkpOworICB9CisKKyAgdm9pZCBPblRlc3RDYXNlRW5kKGNvbnN0IFRlc3RD
YXNlJiB0ZXN0X2Nhc2UpIHsKKyAgICBTZW5kTG4oImV2ZW50PVRlc3RDYXNlRW5kJnBhc3NlZD0i
ICsgRm9ybWF0Qm9vbCh0ZXN0X2Nhc2UuUGFzc2VkKCkpCisgICAgICAgICAgICsgIiZlbGFwc2Vk
X3RpbWU9IiArIFN0cmVhbWFibGVUb1N0cmluZyh0ZXN0X2Nhc2UuZWxhcHNlZF90aW1lKCkpCisg
ICAgICAgICAgICsgIm1zIik7CisgIH0KKworICB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJ
bmZvJiB0ZXN0X2luZm8pIHsKKyAgICBTZW5kTG4oc3RkOjpzdHJpbmcoImV2ZW50PVRlc3RTdGFy
dCZuYW1lPSIpICsgdGVzdF9pbmZvLm5hbWUoKSk7CisgIH0KKworICB2b2lkIE9uVGVzdEVuZChj
b25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CisgICAgU2VuZExuKCJldmVudD1UZXN0RW5kJnBh
c3NlZD0iICsKKyAgICAgICAgICAgRm9ybWF0Qm9vbCgodGVzdF9pbmZvLnJlc3VsdCgpKS0+UGFz
c2VkKCkpICsKKyAgICAgICAgICAgIiZlbGFwc2VkX3RpbWU9IiArCisgICAgICAgICAgIFN0cmVh
bWFibGVUb1N0cmluZygodGVzdF9pbmZvLnJlc3VsdCgpKS0+ZWxhcHNlZF90aW1lKCkpICsgIm1z
Iik7CisgIH0KKworICB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQm
IHRlc3RfcGFydF9yZXN1bHQpIHsKKyAgICBjb25zdCBjaGFyKiBmaWxlX25hbWUgPSB0ZXN0X3Bh
cnRfcmVzdWx0LmZpbGVfbmFtZSgpOworICAgIGlmIChmaWxlX25hbWUgPT0gTlVMTCkKKyAgICAg
IGZpbGVfbmFtZSA9ICIiOworICAgIFNlbmRMbigiZXZlbnQ9VGVzdFBhcnRSZXN1bHQmZmlsZT0i
ICsgVXJsRW5jb2RlKGZpbGVfbmFtZSkgKworICAgICAgICAgICAiJmxpbmU9IiArIFN0cmVhbWFi
bGVUb1N0cmluZyh0ZXN0X3BhcnRfcmVzdWx0LmxpbmVfbnVtYmVyKCkpICsKKyAgICAgICAgICAg
IiZtZXNzYWdlPSIgKyBVcmxFbmNvZGUodGVzdF9wYXJ0X3Jlc3VsdC5tZXNzYWdlKCkpKTsKKyAg
fQorCisgcHJpdmF0ZToKKyAgLy8gU2VuZHMgdGhlIGdpdmVuIG1lc3NhZ2UgYW5kIGEgbmV3bGlu
ZSB0byB0aGUgc29ja2V0LgorICB2b2lkIFNlbmRMbihjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2Fn
ZSkgeyBzb2NrZXRfd3JpdGVyXy0+U2VuZExuKG1lc3NhZ2UpOyB9CisKKyAgLy8gQ2FsbGVkIGF0
IHRoZSBzdGFydCBvZiBzdHJlYW1pbmcgdG8gbm90aWZ5IHRoZSByZWNlaXZlciB3aGF0CisgIC8v
IHByb3RvY29sIHdlIGFyZSB1c2luZy4KKyAgdm9pZCBTdGFydCgpIHsgU2VuZExuKCJndGVzdF9z
dHJlYW1pbmdfcHJvdG9jb2xfdmVyc2lvbj0xLjAiKTsgfQorCisgIHN0ZDo6c3RyaW5nIEZvcm1h
dEJvb2woYm9vbCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPyAiMSIgOiAiMCI7IH0KKworICBjb25z
dCBzY29wZWRfcHRyPEFic3RyYWN0U29ja2V0V3JpdGVyPiBzb2NrZXRfd3JpdGVyXzsKKworICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFN0cmVhbWluZ0xpc3RlbmVyKTsKK307ICAv
LyBjbGFzcyBTdHJlYW1pbmdMaXN0ZW5lcgorCisjZW5kaWYgIC8vIEdURVNUX0NBTl9TVFJFQU1f
UkVTVUxUU18KKwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVz
dGluZwogCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkgIC8vICA0MjUxCisKICNl
bmRpZiAgLy8gR1RFU1RfU1JDX0dURVNUX0lOVEVSTkFMX0lOTF9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXBvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYwppbmRleCBiOTUwNGY1NmFlNmY5M2UxMjZkMmI1Njhh
N2Q5N2RiNTE3ZmI4M2U0Li5mZWNiNWQxMWMyMTI5NmE5MTgxYTExMjgwMjI2MDY3YjY0M2VkZDA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYwor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYwpAQCAtMjYsNDIg
KzI2LDUyIEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCi0jaW5jbHVk
ZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcG9ydC5oIgogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8c3RkbGli
Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxm
c3RyZWFtPgogCi0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSNpbmNsdWRlIDx3aW5kb3dz
Lmg+ICAvLyBGb3IgVGVybWluYXRlUHJvY2VzcygpCi0jZWxpZiBHVEVTVF9PU19XSU5ET1dTCi0j
aW5jbHVkZSA8aW8uaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2lmIEdURVNUX09TX1dJTkRP
V1MKKyMgaW5jbHVkZSA8d2luZG93cy5oPgorIyBpbmNsdWRlIDxpby5oPgorIyBpbmNsdWRlIDxz
eXMvc3RhdC5oPgorIyBpbmNsdWRlIDxtYXA+ICAvLyBVc2VkIGluIFRocmVhZExvY2FsLgogI2Vs
c2UKLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAog
I2lmIEdURVNUX09TX01BQwotI2luY2x1ZGUgPG1hY2gvbWFjaF9pbml0Lmg+Ci0jaW5jbHVkZSA8
bWFjaC90YXNrLmg+Ci0jaW5jbHVkZSA8bWFjaC92bV9tYXAuaD4KKyMgaW5jbHVkZSA8bWFjaC9t
YWNoX2luaXQuaD4KKyMgaW5jbHVkZSA8bWFjaC90YXNrLmg+CisjIGluY2x1ZGUgPG1hY2gvdm1f
bWFwLmg+CiAjZW5kaWYgIC8vIEdURVNUX09TX01BQwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qt
c3BpLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oPgotI2luY2x1ZGUgPGd0ZXN0
L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oPgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5z
bGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4g
IEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVk
LCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0v
LyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJu
YWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8g
MQorI2lmIEdURVNUX09TX1FOWAorIyBpbmNsdWRlIDxkZXZjdGwuaD4KKyMgaW5jbHVkZSA8ZmNu
dGwuaD4KKyMgaW5jbHVkZSA8c3lzL3Byb2Nmcy5oPgorI2VuZGlmICAvLyBHVEVTVF9PU19RTlgK
KworI2lmIEdURVNUX09TX0FJWAorIyBpbmNsdWRlIDxwcm9jaW5mby5oPgorIyBpbmNsdWRlIDxz
eXMvdHlwZXMuaD4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfQUlYCisKKyNpZiBHVEVTVF9PU19GVUNI
U0lBCisjIGluY2x1ZGUgPHppcmNvbi9wcm9jZXNzLmg+CisjIGluY2x1ZGUgPHppcmNvbi9zeXNj
YWxscy5oPgorI2VuZGlmICAvLyBHVEVTVF9PU19GVUNIU0lBCisKKyNpbmNsdWRlICJndGVzdC9n
dGVzdC1zcGkuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1tZXNzYWdlLmgiCisjaW5jbHVkZSAi
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5h
bC9ndGVzdC1zdHJpbmcuaCIKICNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0j
dW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVz
cGFjZSBpbnRlcm5hbCB7CkBAIC03NSwxMCArODUsMzEgQEAgY29uc3QgaW50IGtTdGRPdXRGaWxl
bm8gPSBTVERPVVRfRklMRU5POwogY29uc3QgaW50IGtTdGRFcnJGaWxlbm8gPSBTVERFUlJfRklM
RU5POwogI2VuZGlmICAvLyBfTVNDX1ZFUgogCi0jaWYgR1RFU1RfT1NfTUFDCisjaWYgR1RFU1Rf
T1NfTElOVVgKKworbmFtZXNwYWNlIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorVCBSZWFkUHJv
Y0ZpbGVGaWVsZChjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUsIGludCBmaWVsZCkgeworICBz
dGQ6OnN0cmluZyBkdW1teTsKKyAgc3RkOjppZnN0cmVhbSBmaWxlKGZpbGVuYW1lLmNfc3RyKCkp
OworICB3aGlsZSAoZmllbGQtLSA+IDApIHsKKyAgICBmaWxlID4+IGR1bW15OworICB9CisgIFQg
b3V0cHV0ID0gMDsKKyAgZmlsZSA+PiBvdXRwdXQ7CisgIHJldHVybiBvdXRwdXQ7Cit9Cit9ICAv
LyBuYW1lc3BhY2UKKworLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSB0aHJlYWRzLCBv
ciAwIHdoZW4gdGhlcmUgaXMgYW4gZXJyb3IuCitzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGZpbGVuYW1lID0KKyAgICAgIChNZXNzYWdlKCkgPDwgIi9wcm9j
LyIgPDwgZ2V0cGlkKCkgPDwgIi9zdGF0IikuR2V0U3RyaW5nKCk7CisgIHJldHVybiBSZWFkUHJv
Y0ZpbGVGaWVsZDxpbnQ+KGZpbGVuYW1lLCAxOSk7Cit9CisKKyNlbGlmIEdURVNUX09TX01BQwog
Ci0vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBydW5uaW5nIGluIHRoZSBwcm9jZXNz
LCBvciAwIHRvIGluZGljYXRlIHRoYXQKLS8vIHdlIGNhbm5vdCBkZXRlY3QgaXQuCiBzaXplX3Qg
R2V0VGhyZWFkQ291bnQoKSB7CiAgIGNvbnN0IHRhc2tfdCB0YXNrID0gbWFjaF90YXNrX3NlbGYo
KTsKICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCB0aHJlYWRfY291bnQ7CkBAIC05Niw2ICsxMjcs
NTggQEAgc2l6ZV90IEdldFRocmVhZENvdW50KCkgewogICB9CiB9CiAKKyNlbGlmIEdURVNUX09T
X1FOWAorCisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBydW5uaW5nIGluIHRoZSBw
cm9jZXNzLCBvciAwIHRvIGluZGljYXRlIHRoYXQKKy8vIHdlIGNhbm5vdCBkZXRlY3QgaXQuCitz
aXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CisgIGNvbnN0IGludCBmZCA9IG9wZW4oIi9wcm9jL3Nl
bGYvYXMiLCBPX1JET05MWSk7CisgIGlmIChmZCA8IDApIHsKKyAgICByZXR1cm4gMDsKKyAgfQor
ICBwcm9jZnNfaW5mbyBwcm9jZXNzX2luZm87CisgIGNvbnN0IGludCBzdGF0dXMgPQorICAgICAg
ZGV2Y3RsKGZkLCBEQ01EX1BST0NfSU5GTywgJnByb2Nlc3NfaW5mbywgc2l6ZW9mKHByb2Nlc3Nf
aW5mbyksIE5VTEwpOworICBjbG9zZShmZCk7CisgIGlmIChzdGF0dXMgPT0gRU9LKSB7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4ocHJvY2Vzc19pbmZvLm51bV90aHJlYWRzKTsKKyAg
fSBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCisjZWxpZiBHVEVTVF9PU19BSVgKKwor
c2l6ZV90IEdldFRocmVhZENvdW50KCkgeworICBzdHJ1Y3QgcHJvY2VudHJ5NjQgZW50cnk7Cisg
IHBpZF90IHBpZCA9IGdldHBpZCgpOworICBpbnQgc3RhdHVzID0gZ2V0cHJvY3M2NCgmZW50cnks
IHNpemVvZihlbnRyeSksIE5VTEwsIDAsICZwaWQsIDEpOworICBpZiAoc3RhdHVzID09IDEpIHsK
KyAgICByZXR1cm4gZW50cnkucGlfdGhjb3VudDsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gMDsK
KyAgfQorfQorCisjZWxpZiBHVEVTVF9PU19GVUNIU0lBCisKK3NpemVfdCBHZXRUaHJlYWRDb3Vu
dCgpIHsKKyAgaW50IGR1bW15X2J1ZmZlcjsKKyAgc2l6ZV90IGF2YWlsOworICB6eF9zdGF0dXNf
dCBzdGF0dXMgPSB6eF9vYmplY3RfZ2V0X2luZm8oCisgICAgICB6eF9wcm9jZXNzX3NlbGYoKSwK
KyAgICAgIFpYX0lORk9fUFJPQ0VTU19USFJFQURTLAorICAgICAgJmR1bW15X2J1ZmZlciwKKyAg
ICAgIDAsCisgICAgICBudWxscHRyLAorICAgICAgJmF2YWlsKTsKKyAgaWYgKHN0YXR1cyA9PSBa
WF9PSykgeworICAgIHJldHVybiBhdmFpbDsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAg
fQorfQorCiAjZWxzZQogCiBzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CkBAIC0xMDQsNyArMTg3
LDQzMiBAQCBzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CiAgIHJldHVybiAwOwogfQogCi0jZW5k
aWYgIC8vIEdURVNUX09TX01BQworI2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCisjaWYgR1RF
U1RfSVNfVEhSRUFEU0FGRSAmJiBHVEVTVF9PU19XSU5ET1dTCisKK3ZvaWQgU2xlZXBNaWxsaXNl
Y29uZHMoaW50IG4pIHsKKyAgOjpTbGVlcChuKTsKK30KKworQXV0b0hhbmRsZTo6QXV0b0hhbmRs
ZSgpCisgICAgOiBoYW5kbGVfKElOVkFMSURfSEFORExFX1ZBTFVFKSB7fQorCitBdXRvSGFuZGxl
OjpBdXRvSGFuZGxlKEhhbmRsZSBoYW5kbGUpCisgICAgOiBoYW5kbGVfKGhhbmRsZSkge30KKwor
QXV0b0hhbmRsZTo6fkF1dG9IYW5kbGUoKSB7CisgIFJlc2V0KCk7Cit9CisKK0F1dG9IYW5kbGU6
OkhhbmRsZSBBdXRvSGFuZGxlOjpHZXQoKSBjb25zdCB7CisgIHJldHVybiBoYW5kbGVfOworfQor
Cit2b2lkIEF1dG9IYW5kbGU6OlJlc2V0KCkgeworICBSZXNldChJTlZBTElEX0hBTkRMRV9WQUxV
RSk7Cit9CisKK3ZvaWQgQXV0b0hhbmRsZTo6UmVzZXQoSEFORExFIGhhbmRsZSkgeworICAvLyBS
ZXNldHRpbmcgd2l0aCB0aGUgc2FtZSBoYW5kbGUgd2UgYWxyZWFkeSBvd24gaXMgaW52YWxpZC4K
KyAgaWYgKGhhbmRsZV8gIT0gaGFuZGxlKSB7CisgICAgaWYgKElzQ2xvc2VhYmxlKCkpIHsKKyAg
ICAgIDo6Q2xvc2VIYW5kbGUoaGFuZGxlXyk7CisgICAgfQorICAgIGhhbmRsZV8gPSBoYW5kbGU7
CisgIH0gZWxzZSB7CisgICAgR1RFU1RfQ0hFQ0tfKCFJc0Nsb3NlYWJsZSgpKQorICAgICAgICA8
PCAiUmVzZXR0aW5nIGEgdmFsaWQgaGFuZGxlIHRvIGl0c2VsZiBpcyBsaWtlbHkgYSBwcm9ncmFt
bWVyIGVycm9yICIKKyAgICAgICAgICAgICJhbmQgdGh1cyBub3QgYWxsb3dlZC4iOworICB9Cit9
CisKK2Jvb2wgQXV0b0hhbmRsZTo6SXNDbG9zZWFibGUoKSBjb25zdCB7CisgIC8vIERpZmZlcmVu
dCBXaW5kb3dzIEFQSXMgbWF5IHVzZSBlaXRoZXIgb2YgdGhlc2UgdmFsdWVzIHRvIHJlcHJlc2Vu
dCBhbgorICAvLyBpbnZhbGlkIGhhbmRsZS4KKyAgcmV0dXJuIGhhbmRsZV8gIT0gTlVMTCAmJiBo
YW5kbGVfICE9IElOVkFMSURfSEFORExFX1ZBTFVFOworfQorCitOb3RpZmljYXRpb246Ok5vdGlm
aWNhdGlvbigpCisgICAgOiBldmVudF8oOjpDcmVhdGVFdmVudChOVUxMLCAgIC8vIERlZmF1bHQg
c2VjdXJpdHkgYXR0cmlidXRlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsICAg
Ly8gRG8gbm90IHJlc2V0IGF1dG9tYXRpY2FsbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGQUxTRSwgIC8vIEluaXRpYWxseSB1bnNldC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5VTEwpKSB7ICAvLyBBbm9ueW1vdXMgZXZlbnQuCisgIEdURVNUX0NIRUNLXyhldmVudF8uR2V0
KCkgIT0gTlVMTCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpOb3RpZnkoKSB7CisgIEdURVNU
X0NIRUNLXyg6OlNldEV2ZW50KGV2ZW50Xy5HZXQoKSkgIT0gRkFMU0UpOworfQorCit2b2lkIE5v
dGlmaWNhdGlvbjo6V2FpdEZvck5vdGlmaWNhdGlvbigpIHsKKyAgR1RFU1RfQ0hFQ0tfKAorICAg
ICAgOjpXYWl0Rm9yU2luZ2xlT2JqZWN0KGV2ZW50Xy5HZXQoKSwgSU5GSU5JVEUpID09IFdBSVRf
T0JKRUNUXzApOworfQorCitNdXRleDo6TXV0ZXgoKQorICAgIDogb3duZXJfdGhyZWFkX2lkXygw
KSwKKyAgICAgIHR5cGVfKGtEeW5hbWljKSwKKyAgICAgIGNyaXRpY2FsX3NlY3Rpb25faW5pdF9w
aGFzZV8oMCksCisgICAgICBjcml0aWNhbF9zZWN0aW9uXyhuZXcgQ1JJVElDQUxfU0VDVElPTikg
eworICA6OkluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oY3JpdGljYWxfc2VjdGlvbl8pOworfQor
CitNdXRleDo6fk11dGV4KCkgeworICAvLyBTdGF0aWMgbXV0ZXhlcyBhcmUgbGVha2VkIGludGVu
dGlvbmFsbHkuIEl0IGlzIG5vdCB0aHJlYWQtc2FmZSB0byB0cnkKKyAgLy8gdG8gY2xlYW4gdGhl
bSB1cC4KKyAgLy8gRklYTUU6IFN3aXRjaCB0byBTbGltIFJlYWRlci9Xcml0ZXIgKFNSVykgTG9j
a3MsIHdoaWNoIHJlcXVpcmVzCisgIC8vIG5vdGhpbmcgdG8gY2xlYW4gaXQgdXAgYnV0IGlzIGF2
YWlsYWJsZSBvbmx5IG9uIFZpc3RhIGFuZCBsYXRlci4KKyAgLy8gaHR0cHM6Ly9kb2NzLm1pY3Jv
c29mdC5jb20vZW4tdXMvd2luZG93cy9kZXNrdG9wL1N5bmMvc2xpbS1yZWFkZXItd3JpdGVyLS1z
cnctLWxvY2tzCisgIGlmICh0eXBlXyA9PSBrRHluYW1pYykgeworICAgIDo6RGVsZXRlQ3JpdGlj
YWxTZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb25fKTsKKyAgICBkZWxldGUgY3JpdGljYWxfc2VjdGlv
bl87CisgICAgY3JpdGljYWxfc2VjdGlvbl8gPSBOVUxMOworICB9Cit9CisKK3ZvaWQgTXV0ZXg6
OkxvY2soKSB7CisgIFRocmVhZFNhZmVMYXp5SW5pdCgpOworICA6OkVudGVyQ3JpdGljYWxTZWN0
aW9uKGNyaXRpY2FsX3NlY3Rpb25fKTsKKyAgb3duZXJfdGhyZWFkX2lkXyA9IDo6R2V0Q3VycmVu
dFRocmVhZElkKCk7Cit9CisKK3ZvaWQgTXV0ZXg6OlVubG9jaygpIHsKKyAgVGhyZWFkU2FmZUxh
enlJbml0KCk7CisgIC8vIFdlIGRvbid0IHByb3RlY3Qgd3JpdGluZyB0byBvd25lcl90aHJlYWRf
aWRfIGhlcmUsIGFzIGl0J3MgdGhlCisgIC8vIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGVu
c3VyZSB0aGF0IHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUKKyAgLy8gbXV0ZXggd2hlbiB0
aGlzIGlzIGNhbGxlZC4KKyAgb3duZXJfdGhyZWFkX2lkXyA9IDA7CisgIDo6TGVhdmVDcml0aWNh
bFNlY3Rpb24oY3JpdGljYWxfc2VjdGlvbl8pOworfQorCisvLyBEb2VzIG5vdGhpbmcgaWYgdGhl
IGN1cnJlbnQgdGhyZWFkIGhvbGRzIHRoZSBtdXRleC4gT3RoZXJ3aXNlLCBjcmFzaGVzCisvLyB3
aXRoIGhpZ2ggcHJvYmFiaWxpdHkuCit2b2lkIE11dGV4OjpBc3NlcnRIZWxkKCkgeworICBUaHJl
YWRTYWZlTGF6eUluaXQoKTsKKyAgR1RFU1RfQ0hFQ0tfKG93bmVyX3RocmVhZF9pZF8gPT0gOjpH
ZXRDdXJyZW50VGhyZWFkSWQoKSkKKyAgICAgIDw8ICJUaGUgY3VycmVudCB0aHJlYWQgaXMgbm90
IGhvbGRpbmcgdGhlIG11dGV4IEAiIDw8IHRoaXM7Cit9CisKK25hbWVzcGFjZSB7CisKKy8vIFVz
ZSB0aGUgUkFJSSBpZGlvbSB0byBmbGFnIG1lbSBhbGxvY3MgdGhhdCBhcmUgaW50ZW50aW9uYWxs
eSBuZXZlcgorLy8gZGVhbGxvY2F0ZWQuIFRoZSBtb3RpdmF0aW9uIGlzIHRvIHNpbGVuY2UgdGhl
IGZhbHNlIHBvc2l0aXZlIG1lbSBsZWFrcworLy8gdGhhdCBhcmUgcmVwb3J0ZWQgYnkgdGhlIGRl
YnVnIHZlcnNpb24gb2YgTVMncyBDUlQgd2hpY2ggY2FuIG9ubHkgZGV0ZWN0CisvLyBpZiBhbiBh
bGxvYyBpcyBtaXNzaW5nIGEgbWF0Y2hpbmcgZGVhbGxvY2F0aW9uLgorLy8gRXhhbXBsZToKKy8v
ICAgIE1lbW9yeUlzTm90RGVhbGxvY2F0ZWQgbWVtb3J5X2lzX25vdF9kZWFsbG9jYXRlZDsKKy8v
ICAgIGNyaXRpY2FsX3NlY3Rpb25fID0gbmV3IENSSVRJQ0FMX1NFQ1RJT047CisvLworY2xhc3Mg
TWVtb3J5SXNOb3REZWFsbG9jYXRlZAoreworIHB1YmxpYzoKKyAgTWVtb3J5SXNOb3REZWFsbG9j
YXRlZCgpIDogb2xkX2NydGRiZ19mbGFnXygwKSB7CisjaWZkZWYgX01TQ19WRVIKKyAgICBvbGRf
Y3J0ZGJnX2ZsYWdfID0gX0NydFNldERiZ0ZsYWcoX0NSVERCR19SRVBPUlRfRkxBRyk7CisgICAg
Ly8gU2V0IGhlYXAgYWxsb2NhdGlvbiBibG9jayB0eXBlIHRvIF9JR05PUkVfQkxPQ0sgc28gdGhh
dCBNUyBkZWJ1ZyBDUlQKKyAgICAvLyBkb2Vzbid0IHJlcG9ydCBtZW0gbGVhayBpZiB0aGVyZSdz
IG5vIG1hdGNoaW5nIGRlYWxsb2NhdGlvbi4KKyAgICBfQ3J0U2V0RGJnRmxhZyhvbGRfY3J0ZGJn
X2ZsYWdfICYgfl9DUlREQkdfQUxMT0NfTUVNX0RGKTsKKyNlbmRpZiAgLy8gIF9NU0NfVkVSCisg
IH0KKworICB+TWVtb3J5SXNOb3REZWFsbG9jYXRlZCgpIHsKKyNpZmRlZiBfTVNDX1ZFUgorICAg
IC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIF9DUlREQkdfQUxMT0NfTUVNX0RGIGZsYWcKKyAgICBf
Q3J0U2V0RGJnRmxhZyhvbGRfY3J0ZGJnX2ZsYWdfKTsKKyNlbmRpZiAgLy8gIF9NU0NfVkVSCisg
IH0KKworIHByaXZhdGU6CisgIGludCBvbGRfY3J0ZGJnX2ZsYWdfOworCisgIEdURVNUX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTl8oTWVtb3J5SXNOb3REZWFsbG9jYXRlZCk7Cit9OworCit9ICAv
LyBuYW1lc3BhY2UKKworLy8gSW5pdGlhbGl6ZXMgb3duZXJfdGhyZWFkX2lkXyBhbmQgY3JpdGlj
YWxfc2VjdGlvbl8gaW4gc3RhdGljIG11dGV4ZXMuCit2b2lkIE11dGV4OjpUaHJlYWRTYWZlTGF6
eUluaXQoKSB7CisgIC8vIER5bmFtaWMgbXV0ZXhlcyBhcmUgaW5pdGlhbGl6ZWQgaW4gdGhlIGNv
bnN0cnVjdG9yLgorICBpZiAodHlwZV8gPT0ga1N0YXRpYykgeworICAgIHN3aXRjaCAoCisgICAg
ICAgIDo6SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoJmNyaXRpY2FsX3NlY3Rpb25faW5pdF9w
aGFzZV8sIDFMLCAwTCkpIHsKKyAgICAgIGNhc2UgMDoKKyAgICAgICAgLy8gSWYgY3JpdGljYWxf
c2VjdGlvbl9pbml0X3BoYXNlXyB3YXMgMCBiZWZvcmUgdGhlIGV4Y2hhbmdlLCB3ZQorICAgICAg
ICAvLyBhcmUgdGhlIGZpcnN0IHRvIHRlc3QgaXQgYW5kIG5lZWQgdG8gcGVyZm9ybSB0aGUgaW5p
dGlhbGl6YXRpb24uCisgICAgICAgIG93bmVyX3RocmVhZF9pZF8gPSAwOworICAgICAgICB7Cisg
ICAgICAgICAgLy8gVXNlIFJBSUkgdG8gZmxhZyB0aGF0IGZvbGxvd2luZyBtZW0gYWxsb2MgaXMg
bmV2ZXIgZGVhbGxvY2F0ZWQuCisgICAgICAgICAgTWVtb3J5SXNOb3REZWFsbG9jYXRlZCBtZW1v
cnlfaXNfbm90X2RlYWxsb2NhdGVkOworICAgICAgICAgIGNyaXRpY2FsX3NlY3Rpb25fID0gbmV3
IENSSVRJQ0FMX1NFQ1RJT047CisgICAgICAgIH0KKyAgICAgICAgOjpJbml0aWFsaXplQ3JpdGlj
YWxTZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb25fKTsKKyAgICAgICAgLy8gVXBkYXRlcyB0aGUgY3Jp
dGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXyB0byAyIHRvIHNpZ25hbAorICAgICAgICAvLyBpbml0
aWFsaXphdGlvbiBjb21wbGV0ZS4KKyAgICAgICAgR1RFU1RfQ0hFQ0tfKDo6SW50ZXJsb2NrZWRD
b21wYXJlRXhjaGFuZ2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICZjcml0aWNhbF9zZWN0
aW9uX2luaXRfcGhhc2VfLCAyTCwgMUwpID09CisgICAgICAgICAgICAgICAgICAgICAgMUwpOwor
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMToKKyAgICAgICAgLy8gU29tZWJvZHkgZWxzZSBp
cyBhbHJlYWR5IGluaXRpYWxpemluZyB0aGUgbXV0ZXg7IHNwaW4gdW50aWwgdGhleQorICAgICAg
ICAvLyBhcmUgZG9uZS4KKyAgICAgICAgd2hpbGUgKDo6SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFu
Z2UoJmNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFzZV8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDJMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyTCkgIT0gMkwpIHsKKyAgICAgICAgICAvLyBQb3NzaWJseSB5aWVsZHMg
dGhlIHJlc3Qgb2YgdGhlIHRocmVhZCdzIHRpbWUgc2xpY2UgdG8gb3RoZXIKKyAgICAgICAgICAv
LyB0aHJlYWRzLgorICAgICAgICAgIDo6U2xlZXAoMCk7CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisKKyAgICAgIGNhc2UgMjoKKyAgICAgICAgYnJlYWs7ICAvLyBUaGUgbXV0ZXggaXMgYWxy
ZWFkeSBpbml0aWFsaXplZCBhbmQgcmVhZHkgZm9yIHVzZS4KKworICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgR1RFU1RfQ0hFQ0tfKGZhbHNlKQorICAgICAgICAgICAgPDwgIlVuZXhwZWN0ZWQgdmFs
dWUgb2YgY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXyAiCisgICAgICAgICAgICA8PCAid2hp
bGUgaW5pdGlhbGl6aW5nIGEgc3RhdGljIG11dGV4LiI7CisgICAgfQorICB9Cit9CisKK25hbWVz
cGFjZSB7CisKK2NsYXNzIFRocmVhZFdpdGhQYXJhbVN1cHBvcnQgOiBwdWJsaWMgVGhyZWFkV2l0
aFBhcmFtQmFzZSB7CisgcHVibGljOgorICBzdGF0aWMgSEFORExFIENyZWF0ZVRocmVhZChSdW5u
YWJsZSogcnVubmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlv
biogdGhyZWFkX2Nhbl9zdGFydCkgeworICAgIFRocmVhZE1haW5QYXJhbSogcGFyYW0gPSBuZXcg
VGhyZWFkTWFpblBhcmFtKHJ1bm5hYmxlLCB0aHJlYWRfY2FuX3N0YXJ0KTsKKyAgICBEV09SRCB0
aHJlYWRfaWQ7CisgICAgLy8gRklYTUU6IENvbnNpZGVyIHRvIHVzZSBfYmVnaW50aHJlYWRleCBp
bnN0ZWFkLgorICAgIEhBTkRMRSB0aHJlYWRfaGFuZGxlID0gOjpDcmVhdGVUaHJlYWQoCisgICAg
ICAgIE5VTEwsICAgIC8vIERlZmF1bHQgc2VjdXJpdHkuCisgICAgICAgIDAsICAgICAgIC8vIERl
ZmF1bHQgc3RhY2sgc2l6ZS4KKyAgICAgICAgJlRocmVhZFdpdGhQYXJhbVN1cHBvcnQ6OlRocmVh
ZE1haW4sCisgICAgICAgIHBhcmFtLCAgIC8vIFBhcmFtZXRlciB0byBUaHJlYWRNYWluU3RhdGlj
CisgICAgICAgIDB4MCwgICAgIC8vIERlZmF1bHQgY3JlYXRpb24gZmxhZ3MuCisgICAgICAgICZ0
aHJlYWRfaWQpOyAgLy8gTmVlZCBhIHZhbGlkIHBvaW50ZXIgZm9yIHRoZSBjYWxsIHRvIHdvcmsg
dW5kZXIgV2luOTguCisgICAgR1RFU1RfQ0hFQ0tfKHRocmVhZF9oYW5kbGUgIT0gTlVMTCkgPDwg
IkNyZWF0ZVRocmVhZCBmYWlsZWQgd2l0aCBlcnJvciAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgOjpHZXRMYXN0RXJyb3IoKSA8PCAiLiI7CisgICAgaWYgKHRo
cmVhZF9oYW5kbGUgPT0gTlVMTCkgeworICAgICAgZGVsZXRlIHBhcmFtOworICAgIH0KKyAgICBy
ZXR1cm4gdGhyZWFkX2hhbmRsZTsKKyAgfQorCisgcHJpdmF0ZToKKyAgc3RydWN0IFRocmVhZE1h
aW5QYXJhbSB7CisgICAgVGhyZWFkTWFpblBhcmFtKFJ1bm5hYmxlKiBydW5uYWJsZSwgTm90aWZp
Y2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KQorICAgICAgICA6IHJ1bm5hYmxlXyhydW5uYWJsZSks
CisgICAgICAgICAgdGhyZWFkX2Nhbl9zdGFydF8odGhyZWFkX2Nhbl9zdGFydCkgeworICAgIH0K
KyAgICBzY29wZWRfcHRyPFJ1bm5hYmxlPiBydW5uYWJsZV87CisgICAgLy8gRG9lcyBub3Qgb3du
LgorICAgIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydF87CisgIH07CisKKyAgc3RhdGlj
IERXT1JEIFdJTkFQSSBUaHJlYWRNYWluKHZvaWQqIHB0cikgeworICAgIC8vIFRyYW5zZmVycyBv
d25lcnNoaXAuCisgICAgc2NvcGVkX3B0cjxUaHJlYWRNYWluUGFyYW0+IHBhcmFtKHN0YXRpY19j
YXN0PFRocmVhZE1haW5QYXJhbSo+KHB0cikpOworICAgIGlmIChwYXJhbS0+dGhyZWFkX2Nhbl9z
dGFydF8gIT0gTlVMTCkKKyAgICAgIHBhcmFtLT50aHJlYWRfY2FuX3N0YXJ0Xy0+V2FpdEZvck5v
dGlmaWNhdGlvbigpOworICAgIHBhcmFtLT5ydW5uYWJsZV8tPlJ1bigpOworICAgIHJldHVybiAw
OworICB9CisKKyAgLy8gUHJvaGliaXQgaW5zdGFudGlhdGlvbi4KKyAgVGhyZWFkV2l0aFBhcmFt
U3VwcG9ydCgpOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkV2l0
aFBhcmFtU3VwcG9ydCk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UKKworVGhyZWFkV2l0aFBhcmFt
QmFzZTo6VGhyZWFkV2l0aFBhcmFtQmFzZShSdW5uYWJsZSAqcnVubmFibGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9z
dGFydCkKKyAgICAgIDogdGhyZWFkXyhUaHJlYWRXaXRoUGFyYW1TdXBwb3J0OjpDcmVhdGVUaHJl
YWQocnVubmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRocmVhZF9jYW5fc3RhcnQpKSB7Cit9CisKK1RocmVhZFdpdGhQYXJhbUJhc2U6
On5UaHJlYWRXaXRoUGFyYW1CYXNlKCkgeworICBKb2luKCk7Cit9CisKK3ZvaWQgVGhyZWFkV2l0
aFBhcmFtQmFzZTo6Sm9pbigpIHsKKyAgR1RFU1RfQ0hFQ0tfKDo6V2FpdEZvclNpbmdsZU9iamVj
dCh0aHJlYWRfLkdldCgpLCBJTkZJTklURSkgPT0gV0FJVF9PQkpFQ1RfMCkKKyAgICAgIDw8ICJG
YWlsZWQgdG8gam9pbiB0aGUgdGhyZWFkIHdpdGggZXJyb3IgIiA8PCA6OkdldExhc3RFcnJvcigp
IDw8ICIuIjsKK30KKworLy8gTWFwcyBhIHRocmVhZCB0byBhIHNldCBvZiBUaHJlYWRJZFRvVGhy
ZWFkTG9jYWxzIHRoYXQgaGF2ZSB2YWx1ZXMKKy8vIGluc3RhbnRpYXRlZCBvbiB0aGF0IHRocmVh
ZCBhbmQgbm90aWZpZXMgdGhlbSB3aGVuIHRoZSB0aHJlYWQgZXhpdHMuICBBCisvLyBUaHJlYWRM
b2NhbCBpbnN0YW5jZSBpcyBleHBlY3RlZCB0byBwZXJzaXN0IHVudGlsIGFsbCB0aHJlYWRzIGl0
IGhhcworLy8gdmFsdWVzIG9uIGhhdmUgdGVybWluYXRlZC4KK2NsYXNzIFRocmVhZExvY2FsUmVn
aXN0cnlJbXBsIHsKKyBwdWJsaWM6CisgIC8vIFJlZ2lzdGVycyB0aHJlYWRfbG9jYWxfaW5zdGFu
Y2UgYXMgaGF2aW5nIHZhbHVlIG9uIHRoZSBjdXJyZW50IHRocmVhZC4KKyAgLy8gUmV0dXJucyBh
IHZhbHVlIHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHRocmVhZCBmcm9tIG90aGVy
IHRocmVhZHMuCisgIHN0YXRpYyBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogR2V0VmFsdWVP
bkN1cnJlbnRUaHJlYWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2Nh
bF9pbnN0YW5jZSkgeworICAgIERXT1JEIGN1cnJlbnRfdGhyZWFkID0gOjpHZXRDdXJyZW50VGhy
ZWFkSWQoKTsKKyAgICBNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKKyAgICBUaHJlYWRJZFRvVGhy
ZWFkTG9jYWxzKiBjb25zdCB0aHJlYWRfdG9fdGhyZWFkX2xvY2FscyA9CisgICAgICAgIEdldFRo
cmVhZExvY2Fsc01hcExvY2tlZCgpOworICAgIFRocmVhZElkVG9UaHJlYWRMb2NhbHM6Oml0ZXJh
dG9yIHRocmVhZF9sb2NhbF9wb3MgPQorICAgICAgICB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+
ZmluZChjdXJyZW50X3RocmVhZCk7CisgICAgaWYgKHRocmVhZF9sb2NhbF9wb3MgPT0gdGhyZWFk
X3RvX3RocmVhZF9sb2NhbHMtPmVuZCgpKSB7CisgICAgICB0aHJlYWRfbG9jYWxfcG9zID0gdGhy
ZWFkX3RvX3RocmVhZF9sb2NhbHMtPmluc2VydCgKKyAgICAgICAgICBzdGQ6Om1ha2VfcGFpcihj
dXJyZW50X3RocmVhZCwgVGhyZWFkTG9jYWxWYWx1ZXMoKSkpLmZpcnN0OworICAgICAgU3RhcnRX
YXRjaGVyVGhyZWFkRm9yKGN1cnJlbnRfdGhyZWFkKTsKKyAgICB9CisgICAgVGhyZWFkTG9jYWxW
YWx1ZXMmIHRocmVhZF9sb2NhbF92YWx1ZXMgPSB0aHJlYWRfbG9jYWxfcG9zLT5zZWNvbmQ7Cisg
ICAgVGhyZWFkTG9jYWxWYWx1ZXM6Oml0ZXJhdG9yIHZhbHVlX3BvcyA9CisgICAgICAgIHRocmVh
ZF9sb2NhbF92YWx1ZXMuZmluZCh0aHJlYWRfbG9jYWxfaW5zdGFuY2UpOworICAgIGlmICh2YWx1
ZV9wb3MgPT0gdGhyZWFkX2xvY2FsX3ZhbHVlcy5lbmQoKSkgeworICAgICAgdmFsdWVfcG9zID0K
KyAgICAgICAgICB0aHJlYWRfbG9jYWxfdmFsdWVzCisgICAgICAgICAgICAgIC5pbnNlcnQoc3Rk
OjptYWtlX3BhaXIoCisgICAgICAgICAgICAgICAgICB0aHJlYWRfbG9jYWxfaW5zdGFuY2UsCisg
ICAgICAgICAgICAgICAgICBsaW5rZWRfcHRyPFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlPigK
KyAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRfbG9jYWxfaW5zdGFuY2UtPk5ld1ZhbHVlRm9y
Q3VycmVudFRocmVhZCgpKSkpCisgICAgICAgICAgICAgIC5maXJzdDsKKyAgICB9CisgICAgcmV0
dXJuIHZhbHVlX3Bvcy0+c2Vjb25kLmdldCgpOworICB9CisKKyAgc3RhdGljIHZvaWQgT25UaHJl
YWRMb2NhbERlc3Ryb3llZCgKKyAgICAgIGNvbnN0IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xv
Y2FsX2luc3RhbmNlKSB7CisgICAgc3RkOjp2ZWN0b3I8bGlua2VkX3B0cjxUaHJlYWRMb2NhbFZh
bHVlSG9sZGVyQmFzZT4gPiB2YWx1ZV9ob2xkZXJzOworICAgIC8vIENsZWFuIHVwIHRoZSBUaHJl
YWRMb2NhbFZhbHVlcyBkYXRhIHN0cnVjdHVyZSB3aGlsZSBob2xkaW5nIHRoZSBsb2NrLCBidXQK
KyAgICAvLyBkZWZlciB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhlIFRocmVhZExvY2FsVmFsdWVIb2xk
ZXJCYXNlcy4KKyAgICB7CisgICAgICBNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKKyAgICAgIFRo
cmVhZElkVG9UaHJlYWRMb2NhbHMqIGNvbnN0IHRocmVhZF90b190aHJlYWRfbG9jYWxzID0KKyAg
ICAgICAgICBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKTsKKyAgICAgIGZvciAoVGhyZWFkSWRU
b1RocmVhZExvY2Fsczo6aXRlcmF0b3IgaXQgPQorICAgICAgICAgIHRocmVhZF90b190aHJlYWRf
bG9jYWxzLT5iZWdpbigpOworICAgICAgICAgIGl0ICE9IHRocmVhZF90b190aHJlYWRfbG9jYWxz
LT5lbmQoKTsKKyAgICAgICAgICArK2l0KSB7CisgICAgICAgIFRocmVhZExvY2FsVmFsdWVzJiB0
aHJlYWRfbG9jYWxfdmFsdWVzID0gaXQtPnNlY29uZDsKKyAgICAgICAgVGhyZWFkTG9jYWxWYWx1
ZXM6Oml0ZXJhdG9yIHZhbHVlX3BvcyA9CisgICAgICAgICAgICB0aHJlYWRfbG9jYWxfdmFsdWVz
LmZpbmQodGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKKyAgICAgICAgaWYgKHZhbHVlX3BvcyAhPSB0
aHJlYWRfbG9jYWxfdmFsdWVzLmVuZCgpKSB7CisgICAgICAgICAgdmFsdWVfaG9sZGVycy5wdXNo
X2JhY2sodmFsdWVfcG9zLT5zZWNvbmQpOworICAgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMu
ZXJhc2UodmFsdWVfcG9zKTsKKyAgICAgICAgICAvLyBUaGlzICdpZicgY2FuIG9ubHkgYmUgc3Vj
Y2Vzc2Z1bCBhdCBtb3N0IG9uY2UsIHNvIHRoZW9yZXRpY2FsbHkgd2UKKyAgICAgICAgICAvLyBj
b3VsZCBicmVhayBvdXQgb2YgdGhlIGxvb3AgaGVyZSwgYnV0IHdlIGRvbid0IGJvdGhlciBkb2lu
ZyBzby4KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICAvLyBPdXRzaWRlIHRoZSBsb2Nr
LCBsZXQgdGhlIGRlc3RydWN0b3IgZm9yICd2YWx1ZV9ob2xkZXJzJyBkZWFsbG9jYXRlIHRoZQor
ICAgIC8vIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlcy4KKyAgfQorCisgIHN0YXRpYyB2b2lk
IE9uVGhyZWFkRXhpdChEV09SRCB0aHJlYWRfaWQpIHsKKyAgICBHVEVTVF9DSEVDS18odGhyZWFk
X2lkICE9IDApIDw8IDo6R2V0TGFzdEVycm9yKCk7CisgICAgc3RkOjp2ZWN0b3I8bGlua2VkX3B0
cjxUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZT4gPiB2YWx1ZV9ob2xkZXJzOworICAgIC8vIENs
ZWFuIHVwIHRoZSBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzIGRhdGEgc3RydWN0dXJlIHdoaWxlIGhv
bGRpbmcgdGhlCisgICAgLy8gbG9jaywgYnV0IGRlZmVyIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUg
VGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2VzLgorICAgIHsKKyAgICAgIE11dGV4TG9jayBsb2Nr
KCZtdXRleF8pOworICAgICAgVGhyZWFkSWRUb1RocmVhZExvY2FscyogY29uc3QgdGhyZWFkX3Rv
X3RocmVhZF9sb2NhbHMgPQorICAgICAgICAgIEdldFRocmVhZExvY2Fsc01hcExvY2tlZCgpOwor
ICAgICAgVGhyZWFkSWRUb1RocmVhZExvY2Fsczo6aXRlcmF0b3IgdGhyZWFkX2xvY2FsX3BvcyA9
CisgICAgICAgICAgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmZpbmQodGhyZWFkX2lkKTsKKyAg
ICAgIGlmICh0aHJlYWRfbG9jYWxfcG9zICE9IHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5lbmQo
KSkgeworICAgICAgICBUaHJlYWRMb2NhbFZhbHVlcyYgdGhyZWFkX2xvY2FsX3ZhbHVlcyA9IHRo
cmVhZF9sb2NhbF9wb3MtPnNlY29uZDsKKyAgICAgICAgZm9yIChUaHJlYWRMb2NhbFZhbHVlczo6
aXRlcmF0b3IgdmFsdWVfcG9zID0KKyAgICAgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMuYmVn
aW4oKTsKKyAgICAgICAgICAgIHZhbHVlX3BvcyAhPSB0aHJlYWRfbG9jYWxfdmFsdWVzLmVuZCgp
OworICAgICAgICAgICAgKyt2YWx1ZV9wb3MpIHsKKyAgICAgICAgICB2YWx1ZV9ob2xkZXJzLnB1
c2hfYmFjayh2YWx1ZV9wb3MtPnNlY29uZCk7CisgICAgICAgIH0KKyAgICAgICAgdGhyZWFkX3Rv
X3RocmVhZF9sb2NhbHMtPmVyYXNlKHRocmVhZF9sb2NhbF9wb3MpOworICAgICAgfQorICAgIH0K
KyAgICAvLyBPdXRzaWRlIHRoZSBsb2NrLCBsZXQgdGhlIGRlc3RydWN0b3IgZm9yICd2YWx1ZV9o
b2xkZXJzJyBkZWFsbG9jYXRlIHRoZQorICAgIC8vIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNl
cy4KKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gSW4gYSBwYXJ0aWN1bGFyIHRocmVhZCwgbWFwcyBh
IFRocmVhZExvY2FsIG9iamVjdCB0byBpdHMgdmFsdWUuCisgIHR5cGVkZWYgc3RkOjptYXA8Y29u
c3QgVGhyZWFkTG9jYWxCYXNlKiwKKyAgICAgICAgICAgICAgICAgICBsaW5rZWRfcHRyPFRocmVh
ZExvY2FsVmFsdWVIb2xkZXJCYXNlPiA+IFRocmVhZExvY2FsVmFsdWVzOworICAvLyBTdG9yZXMg
YWxsIFRocmVhZElkVG9UaHJlYWRMb2NhbHMgaGF2aW5nIHZhbHVlcyBpbiBhIHRocmVhZCwgaW5k
ZXhlZCBieQorICAvLyB0aHJlYWQncyBJRC4KKyAgdHlwZWRlZiBzdGQ6Om1hcDxEV09SRCwgVGhy
ZWFkTG9jYWxWYWx1ZXM+IFRocmVhZElkVG9UaHJlYWRMb2NhbHM7CisKKyAgLy8gSG9sZHMgdGhl
IHRocmVhZCBpZCBhbmQgdGhyZWFkIGhhbmRsZSB0aGF0IHdlIHBhc3MgZnJvbQorICAvLyBTdGFy
dFdhdGNoZXJUaHJlYWRGb3IgdG8gV2F0Y2hlclRocmVhZEZ1bmMuCisgIHR5cGVkZWYgc3RkOjpw
YWlyPERXT1JELCBIQU5ETEU+IFRocmVhZElkQW5kSGFuZGxlOworCisgIHN0YXRpYyB2b2lkIFN0
YXJ0V2F0Y2hlclRocmVhZEZvcihEV09SRCB0aHJlYWRfaWQpIHsKKyAgICAvLyBUaGUgcmV0dXJu
ZWQgaGFuZGxlIHdpbGwgYmUga2VwdCBpbiB0aHJlYWRfbWFwIGFuZCBjbG9zZWQgYnkKKyAgICAv
LyB3YXRjaGVyX3RocmVhZCBpbiBXYXRjaGVyVGhyZWFkRnVuYy4KKyAgICBIQU5ETEUgdGhyZWFk
ID0gOjpPcGVuVGhyZWFkKFNZTkNIUk9OSVpFIHwgVEhSRUFEX1FVRVJZX0lORk9STUFUSU9OLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aHJlYWRfaWQpOworICAgIEdURVNUX0NIRUNLXyh0aHJlYWQgIT0g
TlVMTCk7CisgICAgLy8gV2UgbmVlZCB0byBwYXNzIGEgdmFsaWQgdGhyZWFkIElEIHBvaW50ZXIg
aW50byBDcmVhdGVUaHJlYWQgZm9yIGl0CisgICAgLy8gdG8gd29yayBjb3JyZWN0bHkgdW5kZXIg
V2luOTguCisgICAgRFdPUkQgd2F0Y2hlcl90aHJlYWRfaWQ7CisgICAgSEFORExFIHdhdGNoZXJf
dGhyZWFkID0gOjpDcmVhdGVUaHJlYWQoCisgICAgICAgIE5VTEwsICAgLy8gRGVmYXVsdCBzZWN1
cml0eS4KKyAgICAgICAgMCwgICAgICAvLyBEZWZhdWx0IHN0YWNrIHNpemUKKyAgICAgICAgJlRo
cmVhZExvY2FsUmVnaXN0cnlJbXBsOjpXYXRjaGVyVGhyZWFkRnVuYywKKyAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxMUFZPSUQ+KG5ldyBUaHJlYWRJZEFuZEhhbmRsZSh0aHJlYWRfaWQsIHRocmVh
ZCkpLAorICAgICAgICBDUkVBVEVfU1VTUEVOREVELAorICAgICAgICAmd2F0Y2hlcl90aHJlYWRf
aWQpOworICAgIEdURVNUX0NIRUNLXyh3YXRjaGVyX3RocmVhZCAhPSBOVUxMKTsKKyAgICAvLyBH
aXZlIHRoZSB3YXRjaGVyIHRocmVhZCB0aGUgc2FtZSBwcmlvcml0eSBhcyBvdXJzIHRvIGF2b2lk
IGJlaW5nCisgICAgLy8gYmxvY2tlZCBieSBpdC4KKyAgICA6OlNldFRocmVhZFByaW9yaXR5KHdh
dGNoZXJfdGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgOjpHZXRUaHJlYWRQcmlvcml0
eSg6OkdldEN1cnJlbnRUaHJlYWQoKSkpOworICAgIDo6UmVzdW1lVGhyZWFkKHdhdGNoZXJfdGhy
ZWFkKTsKKyAgICA6OkNsb3NlSGFuZGxlKHdhdGNoZXJfdGhyZWFkKTsKKyAgfQorCisgIC8vIE1v
bml0b3JzIGV4aXQgZnJvbSBhIGdpdmVuIHRocmVhZCBhbmQgbm90aWZpZXMgdGhvc2UKKyAgLy8g
VGhyZWFkSWRUb1RocmVhZExvY2FscyBhYm91dCB0aHJlYWQgdGVybWluYXRpb24uCisgIHN0YXRp
YyBEV09SRCBXSU5BUEkgV2F0Y2hlclRocmVhZEZ1bmMoTFBWT0lEIHBhcmFtKSB7CisgICAgY29u
c3QgVGhyZWFkSWRBbmRIYW5kbGUqIHRhaCA9CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVGhyZWFkSWRBbmRIYW5kbGUqPihwYXJhbSk7CisgICAgR1RFU1RfQ0hFQ0tfKAorICAgICAg
ICA6OldhaXRGb3JTaW5nbGVPYmplY3QodGFoLT5zZWNvbmQsIElORklOSVRFKSA9PSBXQUlUX09C
SkVDVF8wKTsKKyAgICBPblRocmVhZEV4aXQodGFoLT5maXJzdCk7CisgICAgOjpDbG9zZUhhbmRs
ZSh0YWgtPnNlY29uZCk7CisgICAgZGVsZXRlIHRhaDsKKyAgICByZXR1cm4gMDsKKyAgfQorCisg
IC8vIFJldHVybnMgbWFwIG9mIHRocmVhZCBsb2NhbCBpbnN0YW5jZXMuCisgIHN0YXRpYyBUaHJl
YWRJZFRvVGhyZWFkTG9jYWxzKiBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKSB7CisgICAgbXV0
ZXhfLkFzc2VydEhlbGQoKTsKKyAgICBNZW1vcnlJc05vdERlYWxsb2NhdGVkIG1lbW9yeV9pc19u
b3RfZGVhbGxvY2F0ZWQ7CisgICAgc3RhdGljIFRocmVhZElkVG9UaHJlYWRMb2NhbHMqIG1hcCA9
IG5ldyBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzKCk7CisgICAgcmV0dXJuIG1hcDsKKyAgfQorCisg
IC8vIFByb3RlY3RzIGFjY2VzcyB0byBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKSBhbmQgaXRz
IHJldHVybiB2YWx1ZS4KKyAgc3RhdGljIE11dGV4IG11dGV4XzsKKyAgLy8gUHJvdGVjdHMgYWNj
ZXNzIHRvIEdldFRocmVhZE1hcExvY2tlZCgpIGFuZCBpdHMgcmV0dXJuIHZhbHVlLgorICBzdGF0
aWMgTXV0ZXggdGhyZWFkX21hcF9tdXRleF87Cit9OworCitNdXRleCBUaHJlYWRMb2NhbFJlZ2lz
dHJ5SW1wbDo6bXV0ZXhfKE11dGV4OjprU3RhdGljTXV0ZXgpOworTXV0ZXggVGhyZWFkTG9jYWxS
ZWdpc3RyeUltcGw6OnRocmVhZF9tYXBfbXV0ZXhfKE11dGV4OjprU3RhdGljTXV0ZXgpOworCitU
aHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogVGhyZWFkTG9jYWxSZWdpc3RyeTo6R2V0VmFsdWVP
bkN1cnJlbnRUaHJlYWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2Nh
bF9pbnN0YW5jZSkgeworICByZXR1cm4gVGhyZWFkTG9jYWxSZWdpc3RyeUltcGw6OkdldFZhbHVl
T25DdXJyZW50VGhyZWFkKAorICAgICAgdGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKK30KKwordm9p
ZCBUaHJlYWRMb2NhbFJlZ2lzdHJ5OjpPblRocmVhZExvY2FsRGVzdHJveWVkKAorICAgICAgY29u
c3QgVGhyZWFkTG9jYWxCYXNlKiB0aHJlYWRfbG9jYWxfaW5zdGFuY2UpIHsKKyAgVGhyZWFkTG9j
YWxSZWdpc3RyeUltcGw6Ok9uVGhyZWFkTG9jYWxEZXN0cm95ZWQodGhyZWFkX2xvY2FsX2luc3Rh
bmNlKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFICYmIEdURVNUX09TX1dJ
TkRPV1MKIAogI2lmIEdURVNUX1VTRVNfUE9TSVhfUkUKIApAQCAtMTgwLDIwICs2ODgsMjAgQEAg
Ym9vbCBJc0luU2V0KGNoYXIgY2gsIGNvbnN0IGNoYXIqIHN0cikgewogLy8gUmV0dXJucyB0cnVl
IGlmZiBjaCBiZWxvbmdzIHRvIHRoZSBnaXZlbiBjbGFzc2lmaWNhdGlvbi4gIFVubGlrZQogLy8g
c2ltaWxhciBmdW5jdGlvbnMgaW4gPGN0eXBlLmg+LCB0aGVzZSBhcmVuJ3QgYWZmZWN0ZWQgYnkg
dGhlCiAvLyBjdXJyZW50IGxvY2FsZS4KLWJvb2wgSXNEaWdpdChjaGFyIGNoKSB7IHJldHVybiAn
MCcgPD0gY2ggJiYgY2ggPD0gJzknOyB9Ci1ib29sIElzUHVuY3QoY2hhciBjaCkgeworYm9vbCBJ
c0FzY2lpRGlnaXQoY2hhciBjaCkgeyByZXR1cm4gJzAnIDw9IGNoICYmIGNoIDw9ICc5JzsgfQor
Ym9vbCBJc0FzY2lpUHVuY3QoY2hhciBjaCkgewogICByZXR1cm4gSXNJblNldChjaCwgIl4tIVwi
IyQlJicoKSorLC4vOjs8PT4/QFtcXF1fYHt8fX4iKTsKIH0KIGJvb2wgSXNSZXBlYXQoY2hhciBj
aCkgeyByZXR1cm4gSXNJblNldChjaCwgIj8qKyIpOyB9Ci1ib29sIElzV2hpdGVTcGFjZShjaGFy
IGNoKSB7IHJldHVybiBJc0luU2V0KGNoLCAiIFxmXG5cclx0XHYiKTsgfQotYm9vbCBJc1dvcmRD
aGFyKGNoYXIgY2gpIHsKK2Jvb2wgSXNBc2NpaVdoaXRlU3BhY2UoY2hhciBjaCkgeyByZXR1cm4g
SXNJblNldChjaCwgIiBcZlxuXHJcdFx2Iik7IH0KK2Jvb2wgSXNBc2NpaVdvcmRDaGFyKGNoYXIg
Y2gpIHsKICAgcmV0dXJuICgnYScgPD0gY2ggJiYgY2ggPD0gJ3onKSB8fCAoJ0EnIDw9IGNoICYm
IGNoIDw9ICdaJykgfHwKICAgICAgICgnMCcgPD0gY2ggJiYgY2ggPD0gJzknKSB8fCBjaCA9PSAn
Xyc7CiB9CiAKIC8vIFJldHVybnMgdHJ1ZSBpZmYgIlxcYyIgaXMgYSBzdXBwb3J0ZWQgZXNjYXBl
IHNlcXVlbmNlLgogYm9vbCBJc1ZhbGlkRXNjYXBlKGNoYXIgYykgewotICByZXR1cm4gKElzUHVu
Y3QoYykgfHwgSXNJblNldChjLCAiZERmbnJzU3R2d1ciKSk7CisgIHJldHVybiAoSXNBc2NpaVB1
bmN0KGMpIHx8IElzSW5TZXQoYywgImREZm5yc1N0dndXIikpOwogfQogCiAvLyBSZXR1cm5zIHRy
dWUgaWZmIHRoZSBnaXZlbiBhdG9tIChzcGVjaWZpZWQgYnkgZXNjYXBlZCBhbmQgcGF0dGVybikK
QEAgLTIwMSwyNiArNzA5LDI2IEBAIGJvb2wgSXNWYWxpZEVzY2FwZShjaGFyIGMpIHsKIGJvb2wg
QXRvbU1hdGNoZXNDaGFyKGJvb2wgZXNjYXBlZCwgY2hhciBwYXR0ZXJuX2NoYXIsIGNoYXIgY2gp
IHsKICAgaWYgKGVzY2FwZWQpIHsgIC8vICJcXHAiIHdoZXJlIHAgaXMgcGF0dGVybl9jaGFyLgog
ICAgIHN3aXRjaCAocGF0dGVybl9jaGFyKSB7Ci0gICAgICBjYXNlICdkJzogcmV0dXJuIElzRGln
aXQoY2gpOwotICAgICAgY2FzZSAnRCc6IHJldHVybiAhSXNEaWdpdChjaCk7CisgICAgICBjYXNl
ICdkJzogcmV0dXJuIElzQXNjaWlEaWdpdChjaCk7CisgICAgICBjYXNlICdEJzogcmV0dXJuICFJ
c0FzY2lpRGlnaXQoY2gpOwogICAgICAgY2FzZSAnZic6IHJldHVybiBjaCA9PSAnXGYnOwogICAg
ICAgY2FzZSAnbic6IHJldHVybiBjaCA9PSAnXG4nOwogICAgICAgY2FzZSAncic6IHJldHVybiBj
aCA9PSAnXHInOwotICAgICAgY2FzZSAncyc6IHJldHVybiBJc1doaXRlU3BhY2UoY2gpOwotICAg
ICAgY2FzZSAnUyc6IHJldHVybiAhSXNXaGl0ZVNwYWNlKGNoKTsKKyAgICAgIGNhc2UgJ3MnOiBy
ZXR1cm4gSXNBc2NpaVdoaXRlU3BhY2UoY2gpOworICAgICAgY2FzZSAnUyc6IHJldHVybiAhSXNB
c2NpaVdoaXRlU3BhY2UoY2gpOwogICAgICAgY2FzZSAndCc6IHJldHVybiBjaCA9PSAnXHQnOwog
ICAgICAgY2FzZSAndic6IHJldHVybiBjaCA9PSAnXHYnOwotICAgICAgY2FzZSAndyc6IHJldHVy
biBJc1dvcmRDaGFyKGNoKTsKLSAgICAgIGNhc2UgJ1cnOiByZXR1cm4gIUlzV29yZENoYXIoY2gp
OworICAgICAgY2FzZSAndyc6IHJldHVybiBJc0FzY2lpV29yZENoYXIoY2gpOworICAgICAgY2Fz
ZSAnVyc6IHJldHVybiAhSXNBc2NpaVdvcmRDaGFyKGNoKTsKICAgICB9Ci0gICAgcmV0dXJuIElz
UHVuY3QocGF0dGVybl9jaGFyKSAmJiBwYXR0ZXJuX2NoYXIgPT0gY2g7CisgICAgcmV0dXJuIElz
QXNjaWlQdW5jdChwYXR0ZXJuX2NoYXIpICYmIHBhdHRlcm5fY2hhciA9PSBjaDsKICAgfQogCiAg
IHJldHVybiAocGF0dGVybl9jaGFyID09ICcuJyAmJiBjaCAhPSAnXG4nKSB8fCBwYXR0ZXJuX2No
YXIgPT0gY2g7CiB9CiAKIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IFZhbGlkYXRlUmVnZXgo
KSB0byBmb3JtYXQgZXJyb3IgbWVzc2FnZXMuCi1TdHJpbmcgRm9ybWF0UmVnZXhTeW50YXhFcnJv
cihjb25zdCBjaGFyKiByZWdleCwgaW50IGluZGV4KSB7CitzdGF0aWMgc3RkOjpzdHJpbmcgRm9y
bWF0UmVnZXhTeW50YXhFcnJvcihjb25zdCBjaGFyKiByZWdleCwgaW50IGluZGV4KSB7CiAgIHJl
dHVybiAoTWVzc2FnZSgpIDw8ICJTeW50YXggZXJyb3IgYXQgaW5kZXggIiA8PCBpbmRleAogICAg
ICAgICAgIDw8ICIgaW4gc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiBcIiIgPDwgcmVnZXggPDwg
IlwiOiAiKS5HZXRTdHJpbmcoKTsKIH0KQEAgLTIyOSw3ICs3MzcsNyBAQCBTdHJpbmcgRm9ybWF0
UmVnZXhTeW50YXhFcnJvcihjb25zdCBjaGFyKiByZWdleCwgaW50IGluZGV4KSB7CiAvLyBvdGhl
cndpc2UgcmV0dXJucyB0cnVlLgogYm9vbCBWYWxpZGF0ZVJlZ2V4KGNvbnN0IGNoYXIqIHJlZ2V4
KSB7CiAgIGlmIChyZWdleCA9PSBOVUxMKSB7Ci0gICAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6
IGZpeCB0aGUgc291cmNlIGZpbGUgbG9jYXRpb24gaW4gdGhlCisgICAgLy8gRklYTUU6IGZpeCB0
aGUgc291cmNlIGZpbGUgbG9jYXRpb24gaW4gdGhlCiAgICAgLy8gYXNzZXJ0aW9uIGZhaWx1cmVz
IHRvIG1hdGNoIHdoZXJlIHRoZSByZWdleCBpcyB1c2VkIGluIHVzZXIKICAgICAvLyBjb2RlLgog
ICAgIEFERF9GQUlMVVJFKCkgPDwgIk5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxlIHJlZ3VsYXIg
ZXhwcmVzc2lvbi4iOwpAQCAtNDIyLDYgKzkzMCwzNyBAQCB2b2lkIFJFOjpJbml0KGNvbnN0IGNo
YXIqIHJlZ2V4KSB7CiAKICNlbmRpZiAgLy8gR1RFU1RfVVNFU19QT1NJWF9SRQogCitjb25zdCBj
aGFyIGtVbmtub3duRmlsZVtdID0gInVua25vd24gZmlsZSI7CisKKy8vIEZvcm1hdHMgYSBzb3Vy
Y2UgZmlsZSBwYXRoIGFuZCBhIGxpbmUgbnVtYmVyIGFzIHRoZXkgd291bGQgYXBwZWFyCisvLyBp
biBhbiBlcnJvciBtZXNzYWdlIGZyb20gdGhlIGNvbXBpbGVyIHVzZWQgdG8gY29tcGlsZSB0aGlz
IGNvZGUuCitHVEVTVF9BUElfIDo6c3RkOjpzdHJpbmcgRm9ybWF0RmlsZUxvY2F0aW9uKGNvbnN0
IGNoYXIqIGZpbGUsIGludCBsaW5lKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbGVfbmFtZShm
aWxlID09IE5VTEwgPyBrVW5rbm93bkZpbGUgOiBmaWxlKTsKKworICBpZiAobGluZSA8IDApIHsK
KyAgICByZXR1cm4gZmlsZV9uYW1lICsgIjoiOworICB9CisjaWZkZWYgX01TQ19WRVIKKyAgcmV0
dXJuIGZpbGVfbmFtZSArICIoIiArIFN0cmVhbWFibGVUb1N0cmluZyhsaW5lKSArICIpOiI7Cisj
ZWxzZQorICByZXR1cm4gZmlsZV9uYW1lICsgIjoiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGxpbmUp
ICsgIjoiOworI2VuZGlmICAvLyBfTVNDX1ZFUgorfQorCisvLyBGb3JtYXRzIGEgZmlsZSBsb2Nh
dGlvbiBmb3IgY29tcGlsZXItaW5kZXBlbmRlbnQgWE1MIG91dHB1dC4KKy8vIEFsdGhvdWdoIHRo
aXMgZnVuY3Rpb24gaXMgbm90IHBsYXRmb3JtIGRlcGVuZGVudCwgd2UgcHV0IGl0IG5leHQgdG8K
Ky8vIEZvcm1hdEZpbGVMb2NhdGlvbiBpbiBvcmRlciB0byBjb250cmFzdCB0aGUgdHdvIGZ1bmN0
aW9ucy4KKy8vIE5vdGUgdGhhdCBGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9u
KCkgZG9lcyBOT1QgYXBwZW5kIGNvbG9uCisvLyB0byB0aGUgZmlsZSBsb2NhdGlvbiBpdCBwcm9k
dWNlcywgdW5saWtlIEZvcm1hdEZpbGVMb2NhdGlvbigpLgorR1RFU1RfQVBJXyA6OnN0ZDo6c3Ry
aW5nIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oCisgICAgY29uc3QgY2hh
ciogZmlsZSwgaW50IGxpbmUpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsZV9uYW1lKGZpbGUg
PT0gTlVMTCA/IGtVbmtub3duRmlsZSA6IGZpbGUpOworCisgIGlmIChsaW5lIDwgMCkKKyAgICBy
ZXR1cm4gZmlsZV9uYW1lOworICBlbHNlCisgICAgcmV0dXJuIGZpbGVfbmFtZSArICI6IiArIFN0
cmVhbWFibGVUb1N0cmluZyhsaW5lKTsKK30KIAogR1Rlc3RMb2c6OkdUZXN0TG9nKEdUZXN0TG9n
U2V2ZXJpdHkgc2V2ZXJpdHksIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKQogICAgIDogc2V2
ZXJpdHlfKHNldmVyaXR5KSB7CkBAIC00NDEsMjEgKzk4MCwxOSBAQCBHVGVzdExvZzo6fkdUZXN0
TG9nKCkgewogICAgIHBvc2l4OjpBYm9ydCgpOwogICB9CiB9CisKIC8vIERpc2FibGUgTWljcm9z
b2Z0IGRlcHJlY2F0aW9uIHdhcm5pbmdzIGZvciBQT1NJWCBmdW5jdGlvbnMgY2FsbGVkIGZyb20K
IC8vIHRoaXMgY2xhc3MgKGNyZWF0LCBkdXAsIGR1cDIsIGFuZCBjbG9zZSkKLSNpZmRlZiBfTVND
X1ZFUgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDk5
NikKLSNlbmRpZiAgLy8gX01TQ19WRVIKK0dURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVT
SF8oKQogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNpZiBHVEVTVF9IQVNf
U1RSRUFNX1JFRElSRUNUSU9OCiAKIC8vIE9iamVjdCB0aGF0IGNhcHR1cmVzIGFuIG91dHB1dCBz
dHJlYW0gKHN0ZG91dC9zdGRlcnIpLgogY2xhc3MgQ2FwdHVyZWRTdHJlYW0gewogIHB1YmxpYzoK
ICAgLy8gVGhlIGN0b3IgcmVkaXJlY3RzIHRoZSBzdHJlYW0gdG8gYSB0ZW1wb3JhcnkgZmlsZS4K
LSAgQ2FwdHVyZWRTdHJlYW0oaW50IGZkKSA6IGZkXyhmZCksIHVuY2FwdHVyZWRfZmRfKGR1cChm
ZCkpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisgIGV4cGxpY2l0IENhcHR1cmVkU3RyZWFtKGlu
dCBmZCkgOiBmZF8oZmQpLCB1bmNhcHR1cmVkX2ZkXyhkdXAoZmQpKSB7CisjIGlmIEdURVNUX09T
X1dJTkRPV1MKICAgICBjaGFyIHRlbXBfZGlyX3BhdGhbTUFYX1BBVEggKyAxXSA9IHsgJ1wwJyB9
OyAgLy8gTk9MSU5UCiAgICAgY2hhciB0ZW1wX2ZpbGVfcGF0aFtNQVhfUEFUSCArIDFdID0geyAn
XDAnIH07ICAvLyBOT0xJTlQKIApAQCAtNDcwLDE0ICsxMDA3LDMzIEBAIGNsYXNzIENhcHR1cmVk
U3RyZWFtIHsKICAgICBHVEVTVF9DSEVDS18oY2FwdHVyZWRfZmQgIT0gLTEpIDw8ICJVbmFibGUg
dG8gb3BlbiB0ZW1wb3JhcnkgZmlsZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8PCB0ZW1wX2ZpbGVfcGF0aDsKICAgICBmaWxlbmFtZV8gPSB0ZW1wX2ZpbGVfcGF0aDsK
LSNlbHNlCi0gICAgLy8gVGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCBhIHRlc3QgaGFzIHdyaXRl
IGFjY2VzcyB0byB0aGUKLSAgICAvLyBjdXJyZW50IGRpcmVjdG9yeSwgc28gd2UgY3JlYXRlIHRo
ZSB0ZW1wb3JhcnkgZmlsZSBpbiB0aGUgL3RtcAotICAgIC8vIGRpcmVjdG9yeSBpbnN0ZWFkLgor
IyBlbHNlCisgICAgLy8gVGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCBhIHRlc3QgaGFzIHdyaXRl
IGFjY2VzcyB0byB0aGUgY3VycmVudAorICAgIC8vIGRpcmVjdG9yeSwgc28gd2UgY3JlYXRlIHRo
ZSB0ZW1wb3JhcnkgZmlsZSBpbiB0aGUgL3RtcCBkaXJlY3RvcnkKKyAgICAvLyBpbnN0ZWFkLiBX
ZSB1c2UgL3RtcCBvbiBtb3N0IHN5c3RlbXMsIGFuZCAvc2RjYXJkIG9uIEFuZHJvaWQuCisgICAg
Ly8gVGhhdCdzIGJlY2F1c2UgQW5kcm9pZCBkb2Vzbid0IGhhdmUgL3RtcC4KKyMgIGlmIEdURVNU
X09TX0xJTlVYX0FORFJPSUQKKyAgICAvLyBOb3RlOiBBbmRyb2lkIGFwcGxpY2F0aW9ucyBhcmUg
ZXhwZWN0ZWQgdG8gY2FsbCB0aGUgZnJhbWV3b3JrJ3MKKyAgICAvLyBDb250ZXh0LmdldEV4dGVy
bmFsU3RvcmFnZURpcmVjdG9yeSgpIG1ldGhvZCB0aHJvdWdoIEpOSSB0byBnZXQKKyAgICAvLyB0
aGUgbG9jYXRpb24gb2YgdGhlIHdvcmxkLXdyaXRhYmxlIFNEIENhcmQgZGlyZWN0b3J5LiBIb3dl
dmVyLAorICAgIC8vIHRoaXMgcmVxdWlyZXMgYSBDb250ZXh0IGhhbmRsZSwgd2hpY2ggY2Fubm90
IGJlIHJldHJpZXZlZAorICAgIC8vIGdsb2JhbGx5IGZyb20gbmF0aXZlIGNvZGUuIERvaW5nIHNv
IGFsc28gcHJlY2x1ZGVzIHJ1bm5pbmcgdGhlCisgICAgLy8gY29kZSBhcyBwYXJ0IG9mIGEgcmVn
dWxhciBzdGFuZGFsb25lIGV4ZWN1dGFibGUsIHdoaWNoIGRvZXNuJ3QKKyAgICAvLyBydW4gaW4g
YSBEYWx2aWsgcHJvY2VzcyAoZS5nLiB3aGVuIHJ1bm5pbmcgaXQgdGhyb3VnaCAnYWRiIHNoZWxs
JykuCisgICAgLy8KKyAgICAvLyBUaGUgbG9jYXRpb24gL3NkY2FyZCBpcyBkaXJlY3RseSBhY2Nl
c3NpYmxlIGZyb20gbmF0aXZlIGNvZGUKKyAgICAvLyBhbmQgaXMgdGhlIG9ubHkgbG9jYXRpb24g
KHVub2ZmaWNpYWxseSkgc3VwcG9ydGVkIGJ5IHRoZSBBbmRyb2lkCisgICAgLy8gdGVhbS4gSXQn
cyBnZW5lcmFsbHkgYSBzeW1saW5rIHRvIHRoZSByZWFsIFNEIENhcmQgbW91bnQgcG9pbnQKKyAg
ICAvLyB3aGljaCBjYW4gYmUgL21udC9zZGNhcmQsIC9tbnQvc2RjYXJkMCwgL3N5c3RlbS9tZWRp
YS9zZGNhcmQsIG9yCisgICAgLy8gb3RoZXIgT0VNLWN1c3RvbWl6ZWQgbG9jYXRpb25zLiBOZXZl
ciByZWx5IG9uIHRoZXNlLCBhbmQgYWx3YXlzCisgICAgLy8gdXNlIC9zZGNhcmQuCisgICAgY2hh
ciBuYW1lX3RlbXBsYXRlW10gPSAiL3NkY2FyZC9ndGVzdF9jYXB0dXJlZF9zdHJlYW0uWFhYWFhY
IjsKKyMgIGVsc2UKICAgICBjaGFyIG5hbWVfdGVtcGxhdGVbXSA9ICIvdG1wL2NhcHR1cmVkX3N0
cmVhbS5YWFhYWFgiOworIyAgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYX0FORFJPSUQKICAgICBj
b25zdCBpbnQgY2FwdHVyZWRfZmQgPSBta3N0ZW1wKG5hbWVfdGVtcGxhdGUpOwogICAgIGZpbGVu
YW1lXyA9IG5hbWVfdGVtcGxhdGU7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1MKICAgICBmZmx1c2goTlVMTCk7CiAgICAgZHVwMihjYXB0
dXJlZF9mZCwgZmRfKTsKICAgICBjbG9zZShjYXB0dXJlZF9mZCk7CkBAIC00ODcsNyArMTA0Myw3
IEBAIGNsYXNzIENhcHR1cmVkU3RyZWFtIHsKICAgICByZW1vdmUoZmlsZW5hbWVfLmNfc3RyKCkp
OwogICB9CiAKLSAgU3RyaW5nIEdldENhcHR1cmVkU3RyaW5nKCkgeworICBzdGQ6OnN0cmluZyBH
ZXRDYXB0dXJlZFN0cmluZygpIHsKICAgICBpZiAodW5jYXB0dXJlZF9mZF8gIT0gLTEpIHsKICAg
ICAgIC8vIFJlc3RvcmVzIHRoZSBvcmlnaW5hbCBzdHJlYW0uCiAgICAgICBmZmx1c2goTlVMTCk7
CkBAIC00OTcsMTggKzEwNTMsMTIgQEAgY2xhc3MgQ2FwdHVyZWRTdHJlYW0gewogICAgIH0KIAog
ICAgIEZJTEUqIGNvbnN0IGZpbGUgPSBwb3NpeDo6Rk9wZW4oZmlsZW5hbWVfLmNfc3RyKCksICJy
Iik7Ci0gICAgY29uc3QgU3RyaW5nIGNvbnRlbnQgPSBSZWFkRW50aXJlRmlsZShmaWxlKTsKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyBjb250ZW50ID0gUmVhZEVudGlyZUZpbGUoZmlsZSk7CiAgICAg
cG9zaXg6OkZDbG9zZShmaWxlKTsKICAgICByZXR1cm4gY29udGVudDsKICAgfQogCiAgcHJpdmF0
ZToKLSAgLy8gUmVhZHMgdGhlIGVudGlyZSBjb250ZW50IG9mIGEgZmlsZSBhcyBhIFN0cmluZy4K
LSAgc3RhdGljIFN0cmluZyBSZWFkRW50aXJlRmlsZShGSUxFKiBmaWxlKTsKLQotICAvLyBSZXR1
cm5zIHRoZSBzaXplIChpbiBieXRlcykgb2YgYSBmaWxlLgotICBzdGF0aWMgc2l6ZV90IEdldEZp
bGVTaXplKEZJTEUqIGZpbGUpOwotCiAgIGNvbnN0IGludCBmZF87ICAvLyBBIHN0cmVhbSB0byBj
YXB0dXJlLgogICBpbnQgdW5jYXB0dXJlZF9mZF87CiAgIC8vIE5hbWUgb2YgdGhlIHRlbXBvcmFy
eSBmaWxlIGhvbGRpbmcgdGhlIHN0ZGVyciBvdXRwdXQuCkBAIC01MTcsNDQgKzEwNjcsMTQgQEAg
Y2xhc3MgQ2FwdHVyZWRTdHJlYW0gewogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05f
KENhcHR1cmVkU3RyZWFtKTsKIH07CiAKLS8vIFJldHVybnMgdGhlIHNpemUgKGluIGJ5dGVzKSBv
ZiBhIGZpbGUuCi1zaXplX3QgQ2FwdHVyZWRTdHJlYW06OkdldEZpbGVTaXplKEZJTEUqIGZpbGUp
IHsKLSAgZnNlZWsoZmlsZSwgMCwgU0VFS19FTkQpOwotICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6
ZV90PihmdGVsbChmaWxlKSk7Ci19Ci0KLS8vIFJlYWRzIHRoZSBlbnRpcmUgY29udGVudCBvZiBh
IGZpbGUgYXMgYSBzdHJpbmcuCi1TdHJpbmcgQ2FwdHVyZWRTdHJlYW06OlJlYWRFbnRpcmVGaWxl
KEZJTEUqIGZpbGUpIHsKLSAgY29uc3Qgc2l6ZV90IGZpbGVfc2l6ZSA9IEdldEZpbGVTaXplKGZp
bGUpOwotICBjaGFyKiBjb25zdCBidWZmZXIgPSBuZXcgY2hhcltmaWxlX3NpemVdOwotCi0gIHNp
emVfdCBieXRlc19sYXN0X3JlYWQgPSAwOyAgLy8gIyBvZiBieXRlcyByZWFkIGluIHRoZSBsYXN0
IGZyZWFkKCkKLSAgc2l6ZV90IGJ5dGVzX3JlYWQgPSAwOyAgICAgICAvLyAjIG9mIGJ5dGVzIHJl
YWQgc28gZmFyCi0KLSAgZnNlZWsoZmlsZSwgMCwgU0VFS19TRVQpOwotCi0gIC8vIEtlZXBzIHJl
YWRpbmcgdGhlIGZpbGUgdW50aWwgd2UgY2Fubm90IHJlYWQgZnVydGhlciBvciB0aGUKLSAgLy8g
cHJlLWRldGVybWluZWQgZmlsZSBzaXplIGlzIHJlYWNoZWQuCi0gIGRvIHsKLSAgICBieXRlc19s
YXN0X3JlYWQgPSBmcmVhZChidWZmZXIrYnl0ZXNfcmVhZCwgMSwgZmlsZV9zaXplLWJ5dGVzX3Jl
YWQsIGZpbGUpOwotICAgIGJ5dGVzX3JlYWQgKz0gYnl0ZXNfbGFzdF9yZWFkOwotICB9IHdoaWxl
IChieXRlc19sYXN0X3JlYWQgPiAwICYmIGJ5dGVzX3JlYWQgPCBmaWxlX3NpemUpOwotCi0gIGNv
bnN0IFN0cmluZyBjb250ZW50KGJ1ZmZlciwgYnl0ZXNfcmVhZCk7Ci0gIGRlbGV0ZVtdIGJ1ZmZl
cjsKLQotICByZXR1cm4gY29udGVudDsKLX0KLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdh
cm5pbmcocG9wKQotI2VuZGlmICAvLyBfTVNDX1ZFUgorR1RFU1RfRElTQUJMRV9NU0NfREVQUkVD
QVRFRF9QT1BfKCkKIAogc3RhdGljIENhcHR1cmVkU3RyZWFtKiBnX2NhcHR1cmVkX3N0ZGVyciA9
IE5VTEw7CiBzdGF0aWMgQ2FwdHVyZWRTdHJlYW0qIGdfY2FwdHVyZWRfc3Rkb3V0ID0gTlVMTDsK
IAogLy8gU3RhcnRzIGNhcHR1cmluZyBhbiBvdXRwdXQgc3RyZWFtIChzdGRvdXQvc3RkZXJyKS4K
LXZvaWQgQ2FwdHVyZVN0cmVhbShpbnQgZmQsIGNvbnN0IGNoYXIqIHN0cmVhbV9uYW1lLCBDYXB0
dXJlZFN0cmVhbSoqIHN0cmVhbSkgeworc3RhdGljIHZvaWQgQ2FwdHVyZVN0cmVhbShpbnQgZmQs
IGNvbnN0IGNoYXIqIHN0cmVhbV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICBDYXB0
dXJlZFN0cmVhbSoqIHN0cmVhbSkgewogICBpZiAoKnN0cmVhbSAhPSBOVUxMKSB7CiAgICAgR1RF
U1RfTE9HXyhGQVRBTCkgPDwgIk9ubHkgb25lICIgPDwgc3RyZWFtX25hbWUKICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiIGNhcHR1cmVyIGNhbiBleGlzdCBhdCBhIHRpbWUuIjsKQEAgLTU2Myw4
ICsxMDgzLDggQEAgdm9pZCBDYXB0dXJlU3RyZWFtKGludCBmZCwgY29uc3QgY2hhciogc3RyZWFt
X25hbWUsIENhcHR1cmVkU3RyZWFtKiogc3RyZWFtKSB7CiB9CiAKIC8vIFN0b3BzIGNhcHR1cmlu
ZyB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgcmV0dXJucyB0aGUgY2FwdHVyZWQgc3RyaW5nLgotU3Ry
aW5nIEdldENhcHR1cmVkU3RyZWFtKENhcHR1cmVkU3RyZWFtKiogY2FwdHVyZWRfc3RyZWFtKSB7
Ci0gIGNvbnN0IFN0cmluZyBjb250ZW50ID0gKCpjYXB0dXJlZF9zdHJlYW0pLT5HZXRDYXB0dXJl
ZFN0cmluZygpOworc3RhdGljIHN0ZDo6c3RyaW5nIEdldENhcHR1cmVkU3RyZWFtKENhcHR1cmVk
U3RyZWFtKiogY2FwdHVyZWRfc3RyZWFtKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvbnRlbnQg
PSAoKmNhcHR1cmVkX3N0cmVhbSktPkdldENhcHR1cmVkU3RyaW5nKCk7CiAKICAgZGVsZXRlICpj
YXB0dXJlZF9zdHJlYW07CiAgICpjYXB0dXJlZF9zdHJlYW0gPSBOVUxMOwpAQCAtNTgzLDIxICsx
MTAzLDc5IEBAIHZvaWQgQ2FwdHVyZVN0ZGVycigpIHsKIH0KIAogLy8gU3RvcHMgY2FwdHVyaW5n
IHN0ZG91dCBhbmQgcmV0dXJucyB0aGUgY2FwdHVyZWQgc3RyaW5nLgotU3RyaW5nIEdldENhcHR1
cmVkU3Rkb3V0KCkgeyByZXR1cm4gR2V0Q2FwdHVyZWRTdHJlYW0oJmdfY2FwdHVyZWRfc3Rkb3V0
KTsgfQorc3RkOjpzdHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKSB7CisgIHJldHVybiBHZXRDYXB0
dXJlZFN0cmVhbSgmZ19jYXB0dXJlZF9zdGRvdXQpOworfQogCiAvLyBTdG9wcyBjYXB0dXJpbmcg
c3RkZXJyIGFuZCByZXR1cm5zIHRoZSBjYXB0dXJlZCBzdHJpbmcuCi1TdHJpbmcgR2V0Q2FwdHVy
ZWRTdGRlcnIoKSB7IHJldHVybiBHZXRDYXB0dXJlZFN0cmVhbSgmZ19jYXB0dXJlZF9zdGRlcnIp
OyB9CitzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0ZGVycigpIHsKKyAgcmV0dXJuIEdldENhcHR1
cmVkU3RyZWFtKCZnX2NhcHR1cmVkX3N0ZGVycik7Cit9CiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X1NUUkVBTV9SRURJUkVDVElPTl8KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVD
VElPTgorCisKKworCisKK3NpemVfdCBHZXRGaWxlU2l6ZShGSUxFKiBmaWxlKSB7CisgIGZzZWVr
KGZpbGUsIDAsIFNFRUtfRU5EKTsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oZnRlbGwo
ZmlsZSkpOworfQorCitzdGQ6OnN0cmluZyBSZWFkRW50aXJlRmlsZShGSUxFKiBmaWxlKSB7Cisg
IGNvbnN0IHNpemVfdCBmaWxlX3NpemUgPSBHZXRGaWxlU2l6ZShmaWxlKTsKKyAgY2hhciogY29u
c3QgYnVmZmVyID0gbmV3IGNoYXJbZmlsZV9zaXplXTsKKworICBzaXplX3QgYnl0ZXNfbGFzdF9y
ZWFkID0gMDsgIC8vICMgb2YgYnl0ZXMgcmVhZCBpbiB0aGUgbGFzdCBmcmVhZCgpCisgIHNpemVf
dCBieXRlc19yZWFkID0gMDsgICAgICAgLy8gIyBvZiBieXRlcyByZWFkIHNvIGZhcgorCisgIGZz
ZWVrKGZpbGUsIDAsIFNFRUtfU0VUKTsKKworICAvLyBLZWVwcyByZWFkaW5nIHRoZSBmaWxlIHVu
dGlsIHdlIGNhbm5vdCByZWFkIGZ1cnRoZXIgb3IgdGhlCisgIC8vIHByZS1kZXRlcm1pbmVkIGZp
bGUgc2l6ZSBpcyByZWFjaGVkLgorICBkbyB7CisgICAgYnl0ZXNfbGFzdF9yZWFkID0gZnJlYWQo
YnVmZmVyK2J5dGVzX3JlYWQsIDEsIGZpbGVfc2l6ZS1ieXRlc19yZWFkLCBmaWxlKTsKKyAgICBi
eXRlc19yZWFkICs9IGJ5dGVzX2xhc3RfcmVhZDsKKyAgfSB3aGlsZSAoYnl0ZXNfbGFzdF9yZWFk
ID4gMCAmJiBieXRlc19yZWFkIDwgZmlsZV9zaXplKTsKKworICBjb25zdCBzdGQ6OnN0cmluZyBj
b250ZW50KGJ1ZmZlciwgYnl0ZXNfcmVhZCk7CisgIGRlbGV0ZVtdIGJ1ZmZlcjsKKworICByZXR1
cm4gY29udGVudDsKK30KIAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCitzdGF0aWMgY29uc3Qg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiBnX2luamVjdGVkX3Rlc3RfYXJndnMgPSBOVUxMOyAg
Ly8gT3duZWQuCiAKLS8vIEEgY29weSBvZiBhbGwgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4gIFNl
dCBieSBJbml0R29vZ2xlVGVzdCgpLgotOjpzdGQ6OnZlY3RvcjxTdHJpbmc+IGdfYXJndnM7Citz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0SW5qZWN0YWJsZUFyZ3ZzKCkgeworICBpZiAoZ19p
bmplY3RlZF90ZXN0X2FyZ3ZzICE9IE5VTEwpIHsKKyAgICByZXR1cm4gKmdfaW5qZWN0ZWRfdGVz
dF9hcmd2czsKKyAgfQorICByZXR1cm4gR2V0QXJndnMoKTsKK30KKwordm9pZCBTZXRJbmplY3Rh
YmxlQXJndnMoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiBuZXdfYXJndnMpIHsKKyAg
aWYgKGdfaW5qZWN0ZWRfdGVzdF9hcmd2cyAhPSBuZXdfYXJndnMpIGRlbGV0ZSBnX2luamVjdGVk
X3Rlc3RfYXJndnM7CisgIGdfaW5qZWN0ZWRfdGVzdF9hcmd2cyA9IG5ld19hcmd2czsKK30KIAot
Ly8gUmV0dXJucyB0aGUgY29tbWFuZCBsaW5lIGFzIGEgdmVjdG9yIG9mIHN0cmluZ3MuCi1jb25z
dCA6OnN0ZDo6dmVjdG9yPFN0cmluZz4mIEdldEFyZ3ZzKCkgeyByZXR1cm4gZ19hcmd2czsgfQor
dm9pZCBTZXRJbmplY3RhYmxlQXJndnMoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBu
ZXdfYXJndnMpIHsKKyAgU2V0SW5qZWN0YWJsZUFyZ3ZzKAorICAgICAgbmV3IHN0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPihuZXdfYXJndnMuYmVnaW4oKSwgbmV3X2FyZ3ZzLmVuZCgpKSk7Cit9CisK
KyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwordm9pZCBTZXRJbmplY3RhYmxlQXJndnMoY29u
c3Qgc3RkOjp2ZWN0b3I8IDo6c3RyaW5nPiYgbmV3X2FyZ3ZzKSB7CisgIFNldEluamVjdGFibGVB
cmd2cygKKyAgICAgIG5ldyBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4obmV3X2FyZ3ZzLmJlZ2lu
KCksIG5ld19hcmd2cy5lbmQoKSkpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NU
UklORwogCit2b2lkIENsZWFySW5qZWN0YWJsZUFyZ3ZzKCkgeworICBkZWxldGUgZ19pbmplY3Rl
ZF90ZXN0X2FyZ3ZzOworICBnX2luamVjdGVkX3Rlc3RfYXJndnMgPSBOVUxMOworfQogI2VuZGlm
ICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCiAjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
QEAgLTYxMiwxMyArMTE5MCwxMyBAQCB2b2lkIEFib3J0KCkgewogLy8gUmV0dXJucyB0aGUgbmFt
ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgY29ycmVzcG9uZGluZyB0byB0aGUKIC8vIGdp
dmVuIGZsYWcuICBGb3IgZXhhbXBsZSwgRmxhZ1RvRW52VmFyKCJmb28iKSB3aWxsIHJldHVybgog
Ly8gIkdURVNUX0ZPTyIgaW4gdGhlIG9wZW4tc291cmNlIHZlcnNpb24uCi1zdGF0aWMgU3RyaW5n
IEZsYWdUb0VudlZhcihjb25zdCBjaGFyKiBmbGFnKSB7Ci0gIGNvbnN0IFN0cmluZyBmdWxsX2Zs
YWcgPQorc3RhdGljIHN0ZDo6c3RyaW5nIEZsYWdUb0VudlZhcihjb25zdCBjaGFyKiBmbGFnKSB7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZ1bGxfZmxhZyA9CiAgICAgICAoTWVzc2FnZSgpIDw8IEdU
RVNUX0ZMQUdfUFJFRklYXyA8PCBmbGFnKS5HZXRTdHJpbmcoKTsKIAogICBNZXNzYWdlIGVudl92
YXI7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGZ1bGxfZmxhZy5sZW5ndGgoKTsgaSsrKSB7
Ci0gICAgZW52X3ZhciA8PCBzdGF0aWNfY2FzdDxjaGFyPih0b3VwcGVyKGZ1bGxfZmxhZy5jX3N0
cigpW2ldKSk7CisgICAgZW52X3ZhciA8PCBUb1VwcGVyKGZ1bGxfZmxhZy5jX3N0cigpW2ldKTsK
ICAgfQogCiAgIHJldHVybiBlbnZfdmFyLkdldFN0cmluZygpOwpAQCAtNjcwLDE3ICsxMjQ4LDI0
IEBAIGJvb2wgUGFyc2VJbnQzMihjb25zdCBNZXNzYWdlJiBzcmNfdGV4dCwgY29uc3QgY2hhciog
c3RyLCBJbnQzMiogdmFsdWUpIHsKIC8vCiAvLyBUaGUgdmFsdWUgaXMgY29uc2lkZXJlZCB0cnVl
IGlmZiBpdCdzIG5vdCAiMCIuCiBib29sIEJvb2xGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxh
ZywgYm9vbCBkZWZhdWx0X3ZhbHVlKSB7Ci0gIGNvbnN0IFN0cmluZyBlbnZfdmFyID0gRmxhZ1Rv
RW52VmFyKGZsYWcpOworI2lmIGRlZmluZWQoR1RFU1RfR0VUX0JPT0xfRlJPTV9FTlZfKQorICBy
ZXR1cm4gR1RFU1RfR0VUX0JPT0xfRlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOworI2Vs
c2UKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFnKTsKICAg
Y29uc3QgY2hhciogY29uc3Qgc3RyaW5nX3ZhbHVlID0gcG9zaXg6OkdldEVudihlbnZfdmFyLmNf
c3RyKCkpOwogICByZXR1cm4gc3RyaW5nX3ZhbHVlID09IE5VTEwgPwogICAgICAgZGVmYXVsdF92
YWx1ZSA6IHN0cmNtcChzdHJpbmdfdmFsdWUsICIwIikgIT0gMDsKKyNlbmRpZiAgLy8gZGVmaW5l
ZChHVEVTVF9HRVRfQk9PTF9GUk9NX0VOVl8pCiB9CiAKIC8vIFJlYWRzIGFuZCByZXR1cm5zIGEg
MzItYml0IGludGVnZXIgc3RvcmVkIGluIHRoZSBlbnZpcm9ubWVudAogLy8gdmFyaWFibGUgY29y
cmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gZmxhZzsgaWYgaXQgaXNuJ3Qgc2V0IG9yCiAvLyBkb2Vz
bid0IHJlcHJlc2VudCBhIHZhbGlkIDMyLWJpdCBpbnRlZ2VyLCByZXR1cm5zIGRlZmF1bHRfdmFs
dWUuCiBJbnQzMiBJbnQzMkZyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBJbnQzMiBkZWZh
dWx0X3ZhbHVlKSB7Ci0gIGNvbnN0IFN0cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52VmFyKGZsYWcp
OworI2lmIGRlZmluZWQoR1RFU1RfR0VUX0lOVDMyX0ZST01fRU5WXykKKyAgcmV0dXJuIEdURVNU
X0dFVF9JTlQzMl9GUk9NX0VOVl8oZmxhZywgZGVmYXVsdF92YWx1ZSk7CisjZWxzZQorICBjb25z
dCBzdGQ6OnN0cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52VmFyKGZsYWcpOwogICBjb25zdCBjaGFy
KiBjb25zdCBzdHJpbmdfdmFsdWUgPSBwb3NpeDo6R2V0RW52KGVudl92YXIuY19zdHIoKSk7CiAg
IGlmIChzdHJpbmdfdmFsdWUgPT0gTlVMTCkgewogICAgIC8vIFRoZSBlbnZpcm9ubWVudCB2YXJp
YWJsZSBpcyBub3Qgc2V0LgpAQCAtNjk3LDE0ICsxMjgyLDM2IEBAIEludDMyIEludDMyRnJvbUdU
ZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIEludDMyIGRlZmF1bHRfdmFsdWUpIHsKICAgfQogCiAg
IHJldHVybiByZXN1bHQ7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfR0VUX0lOVDMyX0ZST01f
RU5WXykKK30KKworLy8gQXMgYSBzcGVjaWFsIGNhc2UgZm9yIHRoZSAnb3V0cHV0JyBmbGFnLCBp
ZiBHVEVTVF9PVVRQVVQgaXMgbm90CisvLyBzZXQsIHdlIGxvb2sgZm9yIFhNTF9PVVRQVVRfRklM
RSwgd2hpY2ggaXMgc2V0IGJ5IHRoZSBCYXplbCBidWlsZAorLy8gc3lzdGVtLiAgVGhlIHZhbHVl
IG9mIFhNTF9PVVRQVVRfRklMRSBpcyBhIGZpbGVuYW1lIHdpdGhvdXQgdGhlCisvLyAieG1sOiIg
cHJlZml4IG9mIEdURVNUX09VVFBVVC4KKy8vIE5vdGUgdGhhdCB0aGlzIGlzIG1lYW50IHRvIGJl
IGNhbGxlZCBhdCB0aGUgY2FsbCBzaXRlIHNvIGl0IGRvZXMKKy8vIG5vdCBjaGVjayB0aGF0IHRo
ZSBmbGFnIGlzICdvdXRwdXQnCisvLyBJbiBlc3NlbmNlIHRoaXMgY2hlY2tzIGFuIGVudiB2YXJp
YWJsZSBjYWxsZWQgWE1MX09VVFBVVF9GSUxFCisvLyBhbmQgaWYgaXQgaXMgc2V0IHdlIHByZXBl
bmQgInhtbDoiIHRvIGl0cyB2YWx1ZSwgaWYgaXQgbm90IHNldCB3ZSByZXR1cm4gIiIKK3N0ZDo6
c3RyaW5nIE91dHB1dEZsYWdBbHNvQ2hlY2tFbnZWYXIoKXsKKyAgc3RkOjpzdHJpbmcgZGVmYXVs
dF92YWx1ZV9mb3Jfb3V0cHV0X2ZsYWcgPSAiIjsKKyAgY29uc3QgY2hhciogeG1sX291dHB1dF9m
aWxlX2VudiA9IHBvc2l4OjpHZXRFbnYoIlhNTF9PVVRQVVRfRklMRSIpOworICBpZiAoTlVMTCAh
PSB4bWxfb3V0cHV0X2ZpbGVfZW52KSB7CisgICAgZGVmYXVsdF92YWx1ZV9mb3Jfb3V0cHV0X2Zs
YWcgPSBzdGQ6OnN0cmluZygieG1sOiIpICsgeG1sX291dHB1dF9maWxlX2VudjsKKyAgfQorICBy
ZXR1cm4gZGVmYXVsdF92YWx1ZV9mb3Jfb3V0cHV0X2ZsYWc7CiB9CiAKIC8vIFJlYWRzIGFuZCBy
ZXR1cm5zIHRoZSBzdHJpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgY29ycmVzcG9uZGluZyB0bwog
Ly8gdGhlIGdpdmVuIGZsYWc7IGlmIGl0J3Mgbm90IHNldCwgcmV0dXJucyBkZWZhdWx0X3ZhbHVl
LgogY29uc3QgY2hhciogU3RyaW5nRnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIGNvbnN0
IGNoYXIqIGRlZmF1bHRfdmFsdWUpIHsKLSAgY29uc3QgU3RyaW5nIGVudl92YXIgPSBGbGFnVG9F
bnZWYXIoZmxhZyk7CisjaWYgZGVmaW5lZChHVEVTVF9HRVRfU1RSSU5HX0ZST01fRU5WXykKKyAg
cmV0dXJuIEdURVNUX0dFVF9TVFJJTkdfRlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOwor
I2Vsc2UKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFnKTsK
ICAgY29uc3QgY2hhciogY29uc3QgdmFsdWUgPSBwb3NpeDo6R2V0RW52KGVudl92YXIuY19zdHIo
KSk7CiAgIHJldHVybiB2YWx1ZSA9PSBOVUxMID8gZGVmYXVsdF92YWx1ZSA6IHZhbHVlOworI2Vu
ZGlmICAvLyBkZWZpbmVkKEdURVNUX0dFVF9TVFJJTkdfRlJPTV9FTlZfKQogfQogCiB9ICAvLyBu
YW1lc3BhY2UgaW50ZXJuYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Ny
Yy9ndGVzdC1wcmludGVycy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1w
cmludGVycy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTRkMjQ1ZTlmYzg4OTdhZjIxMzc2NzlkOTEzZDY2NWZk
ODQzNmUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0
ZXN0LXByaW50ZXJzLmNjCkBAIC0wLDAgKzEsNDU3IEBACisvLyBDb3B5cmlnaHQgMjAwNywgR29v
Z2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gR29vZ2xlIFRlc3QgLSBUaGUgR29vZ2xlIEMr
KyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yaworLy8KKy8vIFRoaXMgZmlsZSBpbXBsZW1l
bnRzIGEgdW5pdmVyc2FsIHZhbHVlIHByaW50ZXIgdGhhdCBjYW4gcHJpbnQgYQorLy8gdmFsdWUg
b2YgYW55IHR5cGUgVDoKKy8vCisvLyAgIHZvaWQgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVy
c2FsUHJpbnRlcjxUPjo6UHJpbnQodmFsdWUsIG9zdHJlYW1fcHRyKTsKKy8vCisvLyBJdCB1c2Vz
IHRoZSA8PCBvcGVyYXRvciB3aGVuIHBvc3NpYmxlLCBhbmQgcHJpbnRzIHRoZSBieXRlcyBpbiB0
aGUKKy8vIG9iamVjdCBvdGhlcndpc2UuICBBIHVzZXIgY2FuIG92ZXJyaWRlIGl0cyBiZWhhdmlv
ciBmb3IgYSBjbGFzcworLy8gdHlwZSBGb28gYnkgZGVmaW5pbmcgZWl0aGVyIG9wZXJhdG9yPDwo
OjpzdGQ6Om9zdHJlYW0mLCBjb25zdCBGb28mKQorLy8gb3Igdm9pZCBQcmludFRvKGNvbnN0IEZv
byYsIDo6c3RkOjpvc3RyZWFtKikgaW4gdGhlIG5hbWVzcGFjZSB0aGF0CisvLyBkZWZpbmVzIEZv
by4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXByaW50ZXJzLmgiCisjaW5jbHVkZSA8c3RkaW8u
aD4KKyNpbmNsdWRlIDxjY3R5cGU+CisjaW5jbHVkZSA8Y3djaGFyPgorI2luY2x1ZGUgPG9zdHJl
YW0+ICAvLyBOT0xJTlQKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcG9ydC5oIgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKwor
bmFtZXNwYWNlIHRlc3RpbmcgeworCituYW1lc3BhY2UgeworCit1c2luZyA6OnN0ZDo6b3N0cmVh
bTsKKworLy8gUHJpbnRzIGEgc2VnbWVudCBvZiBieXRlcyBpbiB0aGUgZ2l2ZW4gb2JqZWN0Lgor
R1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8KK0dURVNUX0FUVFJJQlVURV9OT19T
QU5JVElaRV9BRERSRVNTXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KK3Zv
aWQgUHJpbnRCeXRlU2VnbWVudEluT2JqZWN0VG8oY29uc3QgdW5zaWduZWQgY2hhciogb2JqX2J5
dGVzLCBzaXplX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBjb3VudCwgb3N0cmVhbSogb3MpIHsKKyAgY2hhciB0ZXh0WzVdID0gIiI7CisgIGZvciAoc2l6
ZV90IGkgPSAwOyBpICE9IGNvdW50OyBpKyspIHsKKyAgICBjb25zdCBzaXplX3QgaiA9IHN0YXJ0
ICsgaTsKKyAgICBpZiAoaSAhPSAwKSB7CisgICAgICAvLyBPcmdhbml6ZXMgdGhlIGJ5dGVzIGlu
dG8gZ3JvdXBzIG9mIDIgZm9yIGVhc3kgcGFyc2luZyBieQorICAgICAgLy8gaHVtYW4uCisgICAg
ICBpZiAoKGogJSAyKSA9PSAwKQorICAgICAgICAqb3MgPDwgJyAnOworICAgICAgZWxzZQorICAg
ICAgICAqb3MgPDwgJy0nOworICAgIH0KKyAgICBHVEVTVF9TTlBSSU5URl8odGV4dCwgc2l6ZW9m
KHRleHQpLCAiJTAyWCIsIG9ial9ieXRlc1tqXSk7CisgICAgKm9zIDw8IHRleHQ7CisgIH0KK30K
KworLy8gUHJpbnRzIHRoZSBieXRlcyBpbiB0aGUgZ2l2ZW4gdmFsdWUgdG8gdGhlIGdpdmVuIG9z
dHJlYW0uCit2b2lkIFByaW50Qnl0ZXNJbk9iamVjdFRvSW1wbChjb25zdCB1bnNpZ25lZCBjaGFy
KiBvYmpfYnl0ZXMsIHNpemVfdCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9zdHJlYW0qIG9zKSB7CisgIC8vIFRlbGxzIHRoZSB1c2VyIGhvdyBiaWcgdGhlIG9iamVjdCBp
cy4KKyAgKm9zIDw8IGNvdW50IDw8ICItYnl0ZSBvYmplY3QgPCI7CisKKyAgY29uc3Qgc2l6ZV90
IGtUaHJlc2hvbGQgPSAxMzI7CisgIGNvbnN0IHNpemVfdCBrQ2h1bmtTaXplID0gNjQ7CisgIC8v
IElmIHRoZSBvYmplY3Qgc2l6ZSBpcyBiaWdnZXIgdGhhbiBrVGhyZXNob2xkLCB3ZSdsbCBoYXZl
IHRvIG9taXQKKyAgLy8gc29tZSBkZXRhaWxzIGJ5IHByaW50aW5nIG9ubHkgdGhlIGZpcnN0IGFu
ZCB0aGUgbGFzdCBrQ2h1bmtTaXplCisgIC8vIGJ5dGVzLgorICAvLyBGSVhNRTogbGV0IHRoZSB1
c2VyIGNvbnRyb2wgdGhlIHRocmVzaG9sZCB1c2luZyBhIGZsYWcuCisgIGlmIChjb3VudCA8IGtU
aHJlc2hvbGQpIHsKKyAgICBQcmludEJ5dGVTZWdtZW50SW5PYmplY3RUbyhvYmpfYnl0ZXMsIDAs
IGNvdW50LCBvcyk7CisgIH0gZWxzZSB7CisgICAgUHJpbnRCeXRlU2VnbWVudEluT2JqZWN0VG8o
b2JqX2J5dGVzLCAwLCBrQ2h1bmtTaXplLCBvcyk7CisgICAgKm9zIDw8ICIgLi4uICI7CisgICAg
Ly8gUm91bmRzIHVwIHRvIDItYnl0ZSBib3VuZGFyeS4KKyAgICBjb25zdCBzaXplX3QgcmVzdW1l
X3BvcyA9IChjb3VudCAtIGtDaHVua1NpemUgKyAxKS8yKjI7CisgICAgUHJpbnRCeXRlU2VnbWVu
dEluT2JqZWN0VG8ob2JqX2J5dGVzLCByZXN1bWVfcG9zLCBjb3VudCAtIHJlc3VtZV9wb3MsIG9z
KTsKKyAgfQorICAqb3MgPDwgIj4iOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworbmFtZXNwYWNl
IGludGVybmFsMiB7CisKKy8vIERlbGVnYXRlcyB0byBQcmludEJ5dGVzSW5PYmplY3RUb0ltcGwo
KSB0byBwcmludCB0aGUgYnl0ZXMgaW4gdGhlCisvLyBnaXZlbiBvYmplY3QuICBUaGUgZGVsZWdh
dGlvbiBzaW1wbGlmaWVzIHRoZSBpbXBsZW1lbnRhdGlvbiwgd2hpY2gKKy8vIHVzZXMgdGhlIDw8
IG9wZXJhdG9yIGFuZCB0aHVzIGlzIGVhc2llciBkb25lIG91dHNpZGUgb2YgdGhlCisvLyA6OnRl
c3Rpbmc6OmludGVybmFsIG5hbWVzcGFjZSwgd2hpY2ggY29udGFpbnMgYSA8PCBvcGVyYXRvciB0
aGF0CisvLyBzb21ldGltZXMgY29uZmxpY3RzIHdpdGggdGhlIG9uZSBpbiBTVEwuCit2b2lkIFBy
aW50Qnl0ZXNJbk9iamVjdFRvKGNvbnN0IHVuc2lnbmVkIGNoYXIqIG9ial9ieXRlcywgc2l6ZV90
IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICBvc3RyZWFtKiBvcykgeworICBQcmlu
dEJ5dGVzSW5PYmplY3RUb0ltcGwob2JqX2J5dGVzLCBjb3VudCwgb3MpOworfQorCit9ICAvLyBu
YW1lc3BhY2UgaW50ZXJuYWwyCisKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIERlcGVuZGlu
ZyBvbiB0aGUgdmFsdWUgb2YgYSBjaGFyIChvciB3Y2hhcl90KSwgd2UgcHJpbnQgaXQgaW4gb25l
CisvLyBvZiB0aHJlZSBmb3JtYXRzOgorLy8gICAtIGFzIGlzIGlmIGl0J3MgYSBwcmludGFibGUg
QVNDSUkgKGUuZy4gJ2EnLCAnMicsICcgJyksCisvLyAgIC0gYXMgYSBoZXhhZGVjaW1hbCBlc2Nh
cGUgc2VxdWVuY2UgKGUuZy4gJ1x4N0YnKSwgb3IKKy8vICAgLSBhcyBhIHNwZWNpYWwgZXNjYXBl
IHNlcXVlbmNlIChlLmcuICdccicsICdcbicpLgorZW51bSBDaGFyRm9ybWF0IHsKKyAga0FzSXMs
CisgIGtIZXhFc2NhcGUsCisgIGtTcGVjaWFsRXNjYXBlCit9OworCisvLyBSZXR1cm5zIHRydWUg
aWYgYyBpcyBhIHByaW50YWJsZSBBU0NJSSBjaGFyYWN0ZXIuICBXZSB0ZXN0IHRoZQorLy8gdmFs
dWUgb2YgYyBkaXJlY3RseSBpbnN0ZWFkIG9mIGNhbGxpbmcgaXNwcmludCgpLCB3aGljaCBpcyBi
dWdneSBvbgorLy8gV2luZG93cyBNb2JpbGUuCitpbmxpbmUgYm9vbCBJc1ByaW50YWJsZUFzY2lp
KHdjaGFyX3QgYykgeworICByZXR1cm4gMHgyMCA8PSBjICYmIGMgPD0gMHg3RTsKK30KKworLy8g
UHJpbnRzIGEgd2lkZSBvciBuYXJyb3cgY2hhciBjIGFzIGEgY2hhcmFjdGVyIGxpdGVyYWwgd2l0
aG91dCB0aGUKKy8vIHF1b3RlcywgZXNjYXBpbmcgaXQgd2hlbiBuZWNlc3Nhcnk7IHJldHVybnMg
aG93IGMgd2FzIGZvcm1hdHRlZC4KKy8vIFRoZSB0ZW1wbGF0ZSBhcmd1bWVudCBVbnNpZ25lZENo
YXIgaXMgdGhlIHVuc2lnbmVkIHZlcnNpb24gb2YgQ2hhciwKKy8vIHdoaWNoIGlzIHRoZSB0eXBl
IG9mIGMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVW5zaWduZWRDaGFyLCB0eXBlbmFtZSBDaGFyPgor
c3RhdGljIENoYXJGb3JtYXQgUHJpbnRBc0NoYXJMaXRlcmFsVG8oQ2hhciBjLCBvc3RyZWFtKiBv
cykgeworICBzd2l0Y2ggKHN0YXRpY19jYXN0PHdjaGFyX3Q+KGMpKSB7CisgICAgY2FzZSBMJ1ww
JzoKKyAgICAgICpvcyA8PCAiXFwwIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTCdcJyc6Cisg
ICAgICAqb3MgPDwgIlxcJyI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwnXFwnOgorICAgICAg
Km9zIDw8ICJcXFxcIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTCdcYSc6CisgICAgICAqb3Mg
PDwgIlxcYSI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwnXGInOgorICAgICAgKm9zIDw8ICJc
XGIiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1xmJzoKKyAgICAgICpvcyA8PCAiXFxmIjsK
KyAgICAgIGJyZWFrOworICAgIGNhc2UgTCdcbic6CisgICAgICAqb3MgPDwgIlxcbiI7CisgICAg
ICBicmVhazsKKyAgICBjYXNlIEwnXHInOgorICAgICAgKm9zIDw8ICJcXHIiOworICAgICAgYnJl
YWs7CisgICAgY2FzZSBMJ1x0JzoKKyAgICAgICpvcyA8PCAiXFx0IjsKKyAgICAgIGJyZWFrOwor
ICAgIGNhc2UgTCdcdic6CisgICAgICAqb3MgPDwgIlxcdiI7CisgICAgICBicmVhazsKKyAgICBk
ZWZhdWx0OgorICAgICAgaWYgKElzUHJpbnRhYmxlQXNjaWkoYykpIHsKKyAgICAgICAgKm9zIDw8
IHN0YXRpY19jYXN0PGNoYXI+KGMpOworICAgICAgICByZXR1cm4ga0FzSXM7CisgICAgICB9IGVs
c2UgeworICAgICAgICBvc3RyZWFtOjpmbXRmbGFncyBmbGFncyA9IG9zLT5mbGFncygpOworICAg
ICAgICAqb3MgPDwgIlxceCIgPDwgc3RkOjpoZXggPDwgc3RkOjp1cHBlcmNhc2UKKyAgICAgICAg
ICAgIDw8IHN0YXRpY19jYXN0PGludD4oc3RhdGljX2Nhc3Q8VW5zaWduZWRDaGFyPihjKSk7Cisg
ICAgICAgIG9zLT5mbGFncyhmbGFncyk7CisgICAgICAgIHJldHVybiBrSGV4RXNjYXBlOworICAg
ICAgfQorICB9CisgIHJldHVybiBrU3BlY2lhbEVzY2FwZTsKK30KKworLy8gUHJpbnRzIGEgd2No
YXJfdCBjIGFzIGlmIGl0J3MgcGFydCBvZiBhIHN0cmluZyBsaXRlcmFsLCBlc2NhcGluZyBpdCB3
aGVuCisvLyBuZWNlc3Nhcnk7IHJldHVybnMgaG93IGMgd2FzIGZvcm1hdHRlZC4KK3N0YXRpYyBD
aGFyRm9ybWF0IFByaW50QXNTdHJpbmdMaXRlcmFsVG8od2NoYXJfdCBjLCBvc3RyZWFtKiBvcykg
eworICBzd2l0Y2ggKGMpIHsKKyAgICBjYXNlIEwnXCcnOgorICAgICAgKm9zIDw8ICInIjsKKyAg
ICAgIHJldHVybiBrQXNJczsKKyAgICBjYXNlIEwnIic6CisgICAgICAqb3MgPDwgIlxcXCIiOwor
ICAgICAgcmV0dXJuIGtTcGVjaWFsRXNjYXBlOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4g
UHJpbnRBc0NoYXJMaXRlcmFsVG88d2NoYXJfdD4oYywgb3MpOworICB9Cit9CisKKy8vIFByaW50
cyBhIGNoYXIgYyBhcyBpZiBpdCdzIHBhcnQgb2YgYSBzdHJpbmcgbGl0ZXJhbCwgZXNjYXBpbmcg
aXQgd2hlbgorLy8gbmVjZXNzYXJ5OyByZXR1cm5zIGhvdyBjIHdhcyBmb3JtYXR0ZWQuCitzdGF0
aWMgQ2hhckZvcm1hdCBQcmludEFzU3RyaW5nTGl0ZXJhbFRvKGNoYXIgYywgb3N0cmVhbSogb3Mp
IHsKKyAgcmV0dXJuIFByaW50QXNTdHJpbmdMaXRlcmFsVG8oCisgICAgICBzdGF0aWNfY2FzdDx3
Y2hhcl90PihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKSksIG9zKTsKK30KKworLy8gUHJp
bnRzIGEgd2lkZSBvciBuYXJyb3cgY2hhcmFjdGVyIGMgYW5kIGl0cyBjb2RlLiAgJ1wwJyBpcyBw
cmludGVkCisvLyBhcyAiJ1xcMCciLCBvdGhlciB1bnByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZSBh
bHNvIHByb3Blcmx5IGVzY2FwZWQKKy8vIHVzaW5nIHRoZSBzdGFuZGFyZCBDKysgZXNjYXBlIHNl
cXVlbmNlLiAgVGhlIHRlbXBsYXRlIGFyZ3VtZW50CisvLyBVbnNpZ25lZENoYXIgaXMgdGhlIHVu
c2lnbmVkIHZlcnNpb24gb2YgQ2hhciwgd2hpY2ggaXMgdGhlIHR5cGUgb2YgYy4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBVbnNpZ25lZENoYXIsIHR5cGVuYW1lIENoYXI+Cit2b2lkIFByaW50Q2hhckFu
ZENvZGVUbyhDaGFyIGMsIG9zdHJlYW0qIG9zKSB7CisgIC8vIEZpcnN0LCBwcmludCBjIGFzIGEg
bGl0ZXJhbCBpbiB0aGUgbW9zdCByZWFkYWJsZSBmb3JtIHdlIGNhbiBmaW5kLgorICAqb3MgPDwg
KChzaXplb2YoYykgPiAxKSA/ICJMJyIgOiAiJyIpOworICBjb25zdCBDaGFyRm9ybWF0IGZvcm1h
dCA9IFByaW50QXNDaGFyTGl0ZXJhbFRvPFVuc2lnbmVkQ2hhcj4oYywgb3MpOworICAqb3MgPDwg
IiciOworCisgIC8vIFRvIGFpZCB1c2VyIGRlYnVnZ2luZywgd2UgYWxzbyBwcmludCBjJ3MgY29k
ZSBpbiBkZWNpbWFsLCB1bmxlc3MKKyAgLy8gaXQncyAwIChpbiB3aGljaCBjYXNlIGMgd2FzIHBy
aW50ZWQgYXMgJ1xcMCcsIG1ha2luZyB0aGUgY29kZQorICAvLyBvYnZpb3VzKS4KKyAgaWYgKGMg
PT0gMCkKKyAgICByZXR1cm47CisgICpvcyA8PCAiICgiIDw8IHN0YXRpY19jYXN0PGludD4oYyk7
CisKKyAgLy8gRm9yIG1vcmUgY29udmVuaWVuY2UsIHdlIHByaW50IGMncyBjb2RlIGFnYWluIGlu
IGhleGFkZWNpbWFsLAorICAvLyB1bmxlc3MgYyB3YXMgYWxyZWFkeSBwcmludGVkIGluIHRoZSBm
b3JtICdceCMjJyBvciB0aGUgY29kZSBpcyBpbgorICAvLyBbMSwgOV0uCisgIGlmIChmb3JtYXQg
PT0ga0hleEVzY2FwZSB8fCAoMSA8PSBjICYmIGMgPD0gOSkpIHsKKyAgICAvLyBEbyBub3RoaW5n
LgorICB9IGVsc2UgeworICAgICpvcyA8PCAiLCAweCIgPDwgU3RyaW5nOjpGb3JtYXRIZXhJbnQo
c3RhdGljX2Nhc3Q8VW5zaWduZWRDaGFyPihjKSk7CisgIH0KKyAgKm9zIDw8ICIpIjsKK30KKwor
dm9pZCBQcmludFRvKHVuc2lnbmVkIGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFBy
aW50Q2hhckFuZENvZGVUbzx1bnNpZ25lZCBjaGFyPihjLCBvcyk7Cit9Cit2b2lkIFByaW50VG8o
c2lnbmVkIGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hhckFuZENvZGVU
bzx1bnNpZ25lZCBjaGFyPihjLCBvcyk7Cit9CisKKy8vIFByaW50cyBhIHdjaGFyX3QgYXMgYSBz
eW1ib2wgaWYgaXQgaXMgcHJpbnRhYmxlIG9yIGFzIGl0cyBpbnRlcm5hbAorLy8gY29kZSBvdGhl
cndpc2UgYW5kIGFsc28gYXMgaXRzIGNvZGUuICBMJ1wwJyBpcyBwcmludGVkIGFzICJMJ1xcMCci
Lgordm9pZCBQcmludFRvKHdjaGFyX3Qgd2MsIG9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hhckFu
ZENvZGVUbzx3Y2hhcl90Pih3Yywgb3MpOworfQorCisvLyBQcmludHMgdGhlIGdpdmVuIGFycmF5
IG9mIGNoYXJhY3RlcnMgdG8gdGhlIG9zdHJlYW0uICBDaGFyVHlwZSBtdXN0IGJlIGVpdGhlcgor
Ly8gY2hhciBvciB3Y2hhcl90LgorLy8gVGhlIGFycmF5IHN0YXJ0cyBhdCBiZWdpbiwgdGhlIGxl
bmd0aCBpcyBsZW4sIGl0IG1heSBpbmNsdWRlICdcMCcgY2hhcmFjdGVycworLy8gYW5kIG1heSBu
b3QgYmUgTlVMLXRlcm1pbmF0ZWQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CitHVEVT
VF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfTUVNT1JZXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklU
SVpFX0FERFJFU1NfCitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXworc3RhdGlj
IENoYXJGb3JtYXQgUHJpbnRDaGFyc0FzU3RyaW5nVG8oCisgICAgY29uc3QgQ2hhclR5cGUqIGJl
Z2luLCBzaXplX3QgbGVuLCBvc3RyZWFtKiBvcykgeworICBjb25zdCBjaGFyKiBjb25zdCBrUXVv
dGVCZWdpbiA9IHNpemVvZihDaGFyVHlwZSkgPT0gMSA/ICJcIiIgOiAiTFwiIjsKKyAgKm9zIDw8
IGtRdW90ZUJlZ2luOworICBib29sIGlzX3ByZXZpb3VzX2hleCA9IGZhbHNlOworICBDaGFyRm9y
bWF0IHByaW50X2Zvcm1hdCA9IGtBc0lzOworICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4
IDwgbGVuOyArK2luZGV4KSB7CisgICAgY29uc3QgQ2hhclR5cGUgY3VyID0gYmVnaW5baW5kZXhd
OworICAgIGlmIChpc19wcmV2aW91c19oZXggJiYgSXNYRGlnaXQoY3VyKSkgeworICAgICAgLy8g
UHJldmlvdXMgY2hhcmFjdGVyIGlzIG9mICdceC4uJyBmb3JtIGFuZCB0aGlzIGNoYXJhY3RlciBj
YW4gYmUKKyAgICAgIC8vIGludGVycHJldGVkIGFzIGFub3RoZXIgaGV4YWRlY2ltYWwgZGlnaXQg
aW4gaXRzIG51bWJlci4gQnJlYWsgc3RyaW5nIHRvCisgICAgICAvLyBkaXNhbWJpZ3VhdGUuCisg
ICAgICAqb3MgPDwgIlwiICIgPDwga1F1b3RlQmVnaW47CisgICAgfQorICAgIGlzX3ByZXZpb3Vz
X2hleCA9IFByaW50QXNTdHJpbmdMaXRlcmFsVG8oY3VyLCBvcykgPT0ga0hleEVzY2FwZTsKKyAg
ICAvLyBSZW1lbWJlciBpZiBhbnkgY2hhcmFjdGVycyByZXF1aXJlZCBoZXggZXNjYXBpbmcuCisg
ICAgaWYgKGlzX3ByZXZpb3VzX2hleCkgeworICAgICAgcHJpbnRfZm9ybWF0ID0ga0hleEVzY2Fw
ZTsKKyAgICB9CisgIH0KKyAgKm9zIDw8ICJcIiI7CisgIHJldHVybiBwcmludF9mb3JtYXQ7Cit9
CisKKy8vIFByaW50cyBhIChjb25zdCkgY2hhci93Y2hhcl90IGFycmF5IG9mICdsZW4nIGVsZW1l
bnRzLCBzdGFydGluZyBhdCBhZGRyZXNzCisvLyAnYmVnaW4nLiAgQ2hhclR5cGUgbXVzdCBiZSBl
aXRoZXIgY2hhciBvciB3Y2hhcl90LgordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorR1RF
U1RfQVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8KK0dURVNUX0FUVFJJQlVURV9OT19TQU5J
VElaRV9BRERSRVNTXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KK3N0YXRp
YyB2b2lkIFVuaXZlcnNhbFByaW50Q2hhckFycmF5KAorICAgIGNvbnN0IENoYXJUeXBlKiBiZWdp
biwgc2l6ZV90IGxlbiwgb3N0cmVhbSogb3MpIHsKKyAgLy8gVGhlIGNvZGUKKyAgLy8gICBjb25z
dCBjaGFyIGtGb29bXSA9ICJmb28iOworICAvLyBnZW5lcmF0ZXMgYW4gYXJyYXkgb2YgNCwgbm90
IDMsIGVsZW1lbnRzLCB3aXRoIHRoZSBsYXN0IG9uZSBiZWluZyAnXDAnLgorICAvLworICAvLyBU
aGVyZWZvcmUgd2hlbiBwcmludGluZyBhIGNoYXIgYXJyYXksIHdlIGRvbid0IHByaW50IHRoZSBs
YXN0IGVsZW1lbnQgaWYKKyAgLy8gaXQncyAnXDAnLCBzdWNoIHRoYXQgdGhlIG91dHB1dCBtYXRj
aGVzIHRoZSBzdHJpbmcgbGl0ZXJhbCBhcyBpdCdzCisgIC8vIHdyaXR0ZW4gaW4gdGhlIHNvdXJj
ZSBjb2RlLgorICBpZiAobGVuID4gMCAmJiBiZWdpbltsZW4gLSAxXSA9PSAnXDAnKSB7CisgICAg
UHJpbnRDaGFyc0FzU3RyaW5nVG8oYmVnaW4sIGxlbiAtIDEsIG9zKTsKKyAgICByZXR1cm47Cisg
IH0KKworICAvLyBJZiwgaG93ZXZlciwgdGhlIGxhc3QgZWxlbWVudCBpbiB0aGUgYXJyYXkgaXMg
bm90ICdcMCcsIGUuZy4KKyAgLy8gICAgY29uc3QgY2hhciBrRm9vW10gPSB7ICdmJywgJ28nLCAn
bycgfTsKKyAgLy8gd2UgbXVzdCBwcmludCB0aGUgZW50aXJlIGFycmF5LiAgV2UgYWxzbyBwcmlu
dCBhIG1lc3NhZ2UgdG8gaW5kaWNhdGUKKyAgLy8gdGhhdCB0aGUgYXJyYXkgaXMgbm90IE5VTC10
ZXJtaW5hdGVkLgorICBQcmludENoYXJzQXNTdHJpbmdUbyhiZWdpbiwgbGVuLCBvcyk7CisgICpv
cyA8PCAiIChubyB0ZXJtaW5hdGluZyBOVUwpIjsKK30KKworLy8gUHJpbnRzIGEgKGNvbnN0KSBj
aGFyIGFycmF5IG9mICdsZW4nIGVsZW1lbnRzLCBzdGFydGluZyBhdCBhZGRyZXNzICdiZWdpbicu
Cit2b2lkIFVuaXZlcnNhbFByaW50QXJyYXkoY29uc3QgY2hhciogYmVnaW4sIHNpemVfdCBsZW4s
IG9zdHJlYW0qIG9zKSB7CisgIFVuaXZlcnNhbFByaW50Q2hhckFycmF5KGJlZ2luLCBsZW4sIG9z
KTsKK30KKworLy8gUHJpbnRzIGEgKGNvbnN0KSB3Y2hhcl90IGFycmF5IG9mICdsZW4nIGVsZW1l
bnRzLCBzdGFydGluZyBhdCBhZGRyZXNzCisvLyAnYmVnaW4nLgordm9pZCBVbml2ZXJzYWxQcmlu
dEFycmF5KGNvbnN0IHdjaGFyX3QqIGJlZ2luLCBzaXplX3QgbGVuLCBvc3RyZWFtKiBvcykgewor
ICBVbml2ZXJzYWxQcmludENoYXJBcnJheShiZWdpbiwgbGVuLCBvcyk7Cit9CisKKy8vIFByaW50
cyB0aGUgZ2l2ZW4gQyBzdHJpbmcgdG8gdGhlIG9zdHJlYW0uCit2b2lkIFByaW50VG8oY29uc3Qg
Y2hhciogcywgb3N0cmVhbSogb3MpIHsKKyAgaWYgKHMgPT0gTlVMTCkgeworICAgICpvcyA8PCAi
TlVMTCI7CisgIH0gZWxzZSB7CisgICAgKm9zIDw8IEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+
KHMpIDw8ICIgcG9pbnRpbmcgdG8gIjsKKyAgICBQcmludENoYXJzQXNTdHJpbmdUbyhzLCBzdHJs
ZW4ocyksIG9zKTsKKyAgfQorfQorCisvLyBNU1ZDIGNvbXBpbGVyIGNhbiBiZSBjb25maWd1cmVk
IHRvIGRlZmluZSB3aGFyX3QgYXMgYSB0eXBlZGVmCisvLyBvZiB1bnNpZ25lZCBzaG9ydC4gRGVm
aW5pbmcgYW4gb3ZlcmxvYWQgZm9yIGNvbnN0IHdjaGFyX3QqIGluIHRoYXQgY2FzZQorLy8gd291
bGQgY2F1c2UgcG9pbnRlcnMgdG8gdW5zaWduZWQgc2hvcnRzIGJlIHByaW50ZWQgYXMgd2lkZSBz
dHJpbmdzLAorLy8gcG9zc2libHkgYWNjZXNzaW5nIG1vcmUgbWVtb3J5IHRoYW4gaW50ZW5kZWQg
YW5kIGNhdXNpbmcgaW52YWxpZAorLy8gbWVtb3J5IGFjY2Vzc2VzLiBNU1ZDIGRlZmluZXMgX05B
VElWRV9XQ0hBUl9UX0RFRklORUQgc3ltYm9sIHdoZW4KKy8vIHdjaGFyX3QgaXMgaW1wbGVtZW50
ZWQgYXMgYSBuYXRpdmUgdHlwZS4KKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChf
TkFUSVZFX1dDSEFSX1RfREVGSU5FRCkKKy8vIFByaW50cyB0aGUgZ2l2ZW4gd2lkZSBDIHN0cmlu
ZyB0byB0aGUgb3N0cmVhbS4KK3ZvaWQgUHJpbnRUbyhjb25zdCB3Y2hhcl90KiBzLCBvc3RyZWFt
KiBvcykgeworICBpZiAocyA9PSBOVUxMKSB7CisgICAgKm9zIDw8ICJOVUxMIjsKKyAgfSBlbHNl
IHsKKyAgICAqb3MgPDwgSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocykgPDwgIiBwb2ludGlu
ZyB0byAiOworICAgIFByaW50Q2hhcnNBc1N0cmluZ1RvKHMsIHN0ZDo6d2NzbGVuKHMpLCBvcyk7
CisgIH0KK30KKyNlbmRpZiAgLy8gd2NoYXJfdCBpcyBuYXRpdmUKKworbmFtZXNwYWNlIHsKKwor
Ym9vbCBDb250YWluc1VucHJpbnRhYmxlQ29udHJvbENvZGVzKGNvbnN0IGNoYXIqIHN0ciwgc2l6
ZV90IGxlbmd0aCkgeworICBjb25zdCB1bnNpZ25lZCBjaGFyICpzID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1bnNpZ25lZCBjaGFyICo+KHN0cik7CisKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsZW5ndGg7IGkrKykgeworICAgIHVuc2lnbmVkIGNoYXIgY2ggPSAqcysrOworICAgIGlmIChz
dGQ6OmlzY250cmwoY2gpKSB7CisgICAgICAgIHN3aXRjaCAoY2gpIHsKKyAgICAgICAgY2FzZSAn
XHQnOgorICAgICAgICBjYXNlICdcbic6CisgICAgICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgICBi
cmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgICAgfQorICB9CisgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBJc1VURjhUcmFpbEJ5
dGUodW5zaWduZWQgY2hhciB0KSB7IHJldHVybiAweDgwIDw9IHQgJiYgdDw9IDB4YmY7IH0KKwor
Ym9vbCBJc1ZhbGlkVVRGOChjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW5ndGgpIHsKKyAgY29u
c3QgdW5zaWduZWQgY2hhciAqcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hh
ciAqPihzdHIpOworCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOykgeworICAgIHVu
c2lnbmVkIGNoYXIgbGVhZCA9IHNbaSsrXTsKKworICAgIGlmIChsZWFkIDw9IDB4N2YpIHsKKyAg
ICAgIGNvbnRpbnVlOyAgLy8gc2luZ2xlLWJ5dGUgY2hhcmFjdGVyIChBU0NJSSkgMC4uN0YKKyAg
ICB9CisgICAgaWYgKGxlYWQgPCAweGMyKSB7CisgICAgICByZXR1cm4gZmFsc2U7ICAvLyB0cmFp
bCBieXRlIG9yIG5vbi1zaG9ydGVzdCBmb3JtCisgICAgfSBlbHNlIGlmIChsZWFkIDw9IDB4ZGYg
JiYgKGkgKyAxKSA8PSBsZW5ndGggJiYgSXNVVEY4VHJhaWxCeXRlKHNbaV0pKSB7CisgICAgICAr
K2k7ICAvLyAyLWJ5dGUgY2hhcmFjdGVyCisgICAgfSBlbHNlIGlmICgweGUwIDw9IGxlYWQgJiYg
bGVhZCA8PSAweGVmICYmIChpICsgMikgPD0gbGVuZ3RoICYmCisgICAgICAgICAgICAgICBJc1VU
RjhUcmFpbEJ5dGUoc1tpXSkgJiYKKyAgICAgICAgICAgICAgIElzVVRGOFRyYWlsQnl0ZShzW2kg
KyAxXSkgJiYKKyAgICAgICAgICAgICAgIC8vIGNoZWNrIGZvciBub24tc2hvcnRlc3QgZm9ybSBh
bmQgc3Vycm9nYXRlCisgICAgICAgICAgICAgICAobGVhZCAhPSAweGUwIHx8IHNbaV0gPj0gMHhh
MCkgJiYKKyAgICAgICAgICAgICAgIChsZWFkICE9IDB4ZWQgfHwgc1tpXSA8IDB4YTApKSB7Cisg
ICAgICBpICs9IDI7ICAvLyAzLWJ5dGUgY2hhcmFjdGVyCisgICAgfSBlbHNlIGlmICgweGYwIDw9
IGxlYWQgJiYgbGVhZCA8PSAweGY0ICYmIChpICsgMykgPD0gbGVuZ3RoICYmCisgICAgICAgICAg
ICAgICBJc1VURjhUcmFpbEJ5dGUoc1tpXSkgJiYKKyAgICAgICAgICAgICAgIElzVVRGOFRyYWls
Qnl0ZShzW2kgKyAxXSkgJiYKKyAgICAgICAgICAgICAgIElzVVRGOFRyYWlsQnl0ZShzW2kgKyAy
XSkgJiYKKyAgICAgICAgICAgICAgIC8vIGNoZWNrIGZvciBub24tc2hvcnRlc3QgZm9ybQorICAg
ICAgICAgICAgICAgKGxlYWQgIT0gMHhmMCB8fCBzW2ldID49IDB4OTApICYmCisgICAgICAgICAg
ICAgICAobGVhZCAhPSAweGY0IHx8IHNbaV0gPCAweDkwKSkgeworICAgICAgaSArPSAzOyAgLy8g
NC1ieXRlIGNoYXJhY3RlcgorICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICB9CisgIHJldHVybiB0cnVlOworfQorCit2b2lkIENvbmRpdGlvbmFsUHJpbnRBc1RleHQo
Y29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuZ3RoLCBvc3RyZWFtKiBvcykgeworICBpZiAoIUNv
bnRhaW5zVW5wcmludGFibGVDb250cm9sQ29kZXMoc3RyLCBsZW5ndGgpICYmCisgICAgICBJc1Zh
bGlkVVRGOChzdHIsIGxlbmd0aCkpIHsKKyAgICAqb3MgPDwgIlxuICAgIEFzIFRleHQ6IFwiIiA8
PCBzdHIgPDwgIlwiIjsKKyAgfQorfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKKy8v
IFByaW50cyBhIDo6c3RyaW5nIG9iamVjdC4KKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwor
dm9pZCBQcmludFN0cmluZ1RvKGNvbnN0IDo6c3RyaW5nJiBzLCBvc3RyZWFtKiBvcykgeworICBp
ZiAoUHJpbnRDaGFyc0FzU3RyaW5nVG8ocy5kYXRhKCksIHMuc2l6ZSgpLCBvcykgPT0ga0hleEVz
Y2FwZSkgeworICAgIGlmIChHVEVTVF9GTEFHKHByaW50X3V0ZjgpKSB7CisgICAgICBDb25kaXRp
b25hbFByaW50QXNUZXh0KHMuZGF0YSgpLCBzLnNpemUoKSwgb3MpOworICAgIH0KKyAgfQorfQor
I2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCit2b2lkIFByaW50U3RyaW5nVG8o
Y29uc3QgOjpzdGQ6OnN0cmluZyYgcywgb3N0cmVhbSogb3MpIHsKKyAgaWYgKFByaW50Q2hhcnNB
c1N0cmluZ1RvKHMuZGF0YSgpLCBzLnNpemUoKSwgb3MpID09IGtIZXhFc2NhcGUpIHsKKyAgICBp
ZiAoR1RFU1RfRkxBRyhwcmludF91dGY4KSkgeworICAgICAgQ29uZGl0aW9uYWxQcmludEFzVGV4
dChzLmRhdGEoKSwgcy5zaXplKCksIG9zKTsKKyAgICB9CisgIH0KK30KKworLy8gUHJpbnRzIGEg
Ojp3c3RyaW5nIG9iamVjdC4KKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKK3ZvaWQgUHJp
bnRXaWRlU3RyaW5nVG8oY29uc3QgOjp3c3RyaW5nJiBzLCBvc3RyZWFtKiBvcykgeworICBQcmlu
dENoYXJzQXNTdHJpbmdUbyhzLmRhdGEoKSwgcy5zaXplKCksIG9zKTsKK30KKyNlbmRpZiAgLy8g
R1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKK3Zv
aWQgUHJpbnRXaWRlU3RyaW5nVG8oY29uc3QgOjpzdGQ6OndzdHJpbmcmIHMsIG9zdHJlYW0qIG9z
KSB7CisgIFByaW50Q2hhcnNBc1N0cmluZ1RvKHMuZGF0YSgpLCBzLnNpemUoKSwgb3MpOworfQor
I2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKKworfSAgLy8gbmFtZXNwYWNlIGludGVy
bmFsCisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc3JjL2d0ZXN0LXRlc3QtcGFydC5jYwppbmRleCA1ZDE4M2E0NDZmMjk0Y2U5ZTFhODU4N2M4
YjkxMjBhOWJlYzg4N2RkLi5jODg4NjBkOTIzODU2MTllYTY3NjQ4ODQ1ODM5ZDE0NTgzZjExMTQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0
LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10ZXN0LXBhcnQuY2MK
QEAgLTI2LDIxICsyNiwxMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogbWhldWxlQGdvb2dsZS5jb20gKE1hcmt1cyBIZXVs
ZSkKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3Qp
CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC10ZXN0LXBhcnQuaD4KKy8vCisvLyBUaGUgR29vZ2xl
IEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAKLS8vIElu
ZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0
J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5h
bC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJv
ci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5
IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8gaGlzIGNvZGUuCi0jZGVmaW5l
IEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0
LmgiCiAjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lN
UExFTUVOVEFUSU9OXwogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKQEAgLTQ4LDEwICszOSwxMCBA
QCB1c2luZyBpbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsOwogCiAvLyBHZXRzIHRoZSBzdW1tYXJ5
IG9mIHRoZSBmYWlsdXJlIG1lc3NhZ2UgYnkgb21pdHRpbmcgdGhlIHN0YWNrIHRyYWNlCiAvLyBp
biBpdC4KLWludGVybmFsOjpTdHJpbmcgVGVzdFBhcnRSZXN1bHQ6OkV4dHJhY3RTdW1tYXJ5KGNv
bnN0IGNoYXIqIG1lc3NhZ2UpIHsKK3N0ZDo6c3RyaW5nIFRlc3RQYXJ0UmVzdWx0OjpFeHRyYWN0
U3VtbWFyeShjb25zdCBjaGFyKiBtZXNzYWdlKSB7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IHN0YWNr
X3RyYWNlID0gc3Ryc3RyKG1lc3NhZ2UsIGludGVybmFsOjprU3RhY2tUcmFjZU1hcmtlcik7Ci0g
IHJldHVybiBzdGFja190cmFjZSA9PSBOVUxMID8gaW50ZXJuYWw6OlN0cmluZyhtZXNzYWdlKSA6
Ci0gICAgICBpbnRlcm5hbDo6U3RyaW5nKG1lc3NhZ2UsIHN0YWNrX3RyYWNlIC0gbWVzc2FnZSk7
CisgIHJldHVybiBzdGFja190cmFjZSA9PSBOVUxMID8gbWVzc2FnZSA6CisgICAgICBzdGQ6OnN0
cmluZyhtZXNzYWdlLCBzdGFja190cmFjZSk7CiB9CiAKIC8vIFByaW50cyBhIFRlc3RQYXJ0UmVz
dWx0IG9iamVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVz
dC10eXBlZC10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXR5cGVk
LXRlc3QuY2MKaW5kZXggM2NjNGI1ZGUyYWFjYjc1OTg5MTE5YzVmOTZjN2Y0ZjgwZWFkNWNhZS4u
MWRjMmFkMzhiYWI5OGJjMTQ2YzE2MTU4YTQ3ZGExZTM5NGJmMzg1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKQEAgLTI2LDExICsyNiwx
MSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8K
LS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAotI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsKQEAgLTQwLDM4
ICs0MCw0NiBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogLy8gU2tpcHMgdG8gdGhlIGZpcnN0IG5v
bi1zcGFjZSBjaGFyIGluIHN0ci4gUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgc3RyCiAvLyBj
b250YWlucyBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycy4KIHN0YXRpYyBjb25zdCBjaGFyKiBT
a2lwU3BhY2VzKGNvbnN0IGNoYXIqIHN0cikgewotICB3aGlsZSAoaXNzcGFjZSgqc3RyKSkKKyAg
d2hpbGUgKElzU3BhY2UoKnN0cikpCiAgICAgc3RyKys7CiAgIHJldHVybiBzdHI7CiB9CiAKK3N0
YXRpYyBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gU3BsaXRJbnRvVGVzdE5hbWVzKGNvbnN0IGNo
YXIqIHNyYykgeworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbmFtZV92ZWM7CisgIHNyYyA9
IFNraXBTcGFjZXMoc3JjKTsKKyAgZm9yICg7IHNyYyAhPSBOVUxMOyBzcmMgPSBTa2lwQ29tbWEo
c3JjKSkgeworICAgIG5hbWVfdmVjLnB1c2hfYmFjayhTdHJpcFRyYWlsaW5nU3BhY2VzKEdldFBy
ZWZpeFVudGlsQ29tbWEoc3JjKSkpOworICB9CisgIHJldHVybiBuYW1lX3ZlYzsKK30KKwogLy8g
VmVyaWZpZXMgdGhhdCByZWdpc3RlcmVkX3Rlc3RzIG1hdGNoIHRoZSB0ZXN0IG5hbWVzIGluCi0v
LyBkZWZpbmVkX3Rlc3RfbmFtZXNfOyByZXR1cm5zIHJlZ2lzdGVyZWRfdGVzdHMgaWYgc3VjY2Vz
c2Z1bCwgb3IKKy8vIHJlZ2lzdGVyZWRfdGVzdHNfOyByZXR1cm5zIHJlZ2lzdGVyZWRfdGVzdHMg
aWYgc3VjY2Vzc2Z1bCwgb3IKIC8vIGFib3J0cyB0aGUgcHJvZ3JhbSBvdGhlcndpc2UuCiBjb25z
dCBjaGFyKiBUeXBlZFRlc3RDYXNlUFN0YXRlOjpWZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVzKAog
ICAgIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiByZWdpc3RlcmVkX3Rl
c3RzKSB7Ci0gIHR5cGVkZWYgOjpzdGQ6OnNldDxjb25zdCBjaGFyKj46OmNvbnN0X2l0ZXJhdG9y
IERlZmluZWRUZXN0SXRlcjsKKyAgdHlwZWRlZiBSZWdpc3RlcmVkVGVzdHNNYXA6OmNvbnN0X2l0
ZXJhdG9yIFJlZ2lzdGVyZWRUZXN0SXRlcjsKICAgcmVnaXN0ZXJlZF8gPSB0cnVlOwogCi0gIC8v
IFNraXAgaW5pdGlhbCB3aGl0ZXNwYWNlIGluIHJlZ2lzdGVyZWRfdGVzdHMgc2luY2Ugc29tZQot
ICAvLyBwcmVwcm9jZXNzb3JzIHByZWZpeCBzdHJpbmdpemllZCBsaXRlcmFscyB3aXRoIHdoaXRl
c3BhY2UuCi0gIHJlZ2lzdGVyZWRfdGVzdHMgPSBTa2lwU3BhY2VzKHJlZ2lzdGVyZWRfdGVzdHMp
OworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbmFtZV92ZWMgPSBTcGxpdEludG9UZXN0TmFt
ZXMocmVnaXN0ZXJlZF90ZXN0cyk7CiAKICAgTWVzc2FnZSBlcnJvcnM7Ci0gIDo6c3RkOjpzZXQ8
U3RyaW5nPiB0ZXN0czsKLSAgZm9yIChjb25zdCBjaGFyKiBuYW1lcyA9IHJlZ2lzdGVyZWRfdGVz
dHM7IG5hbWVzICE9IE5VTEw7Ci0gICAgICAgbmFtZXMgPSBTa2lwQ29tbWEobmFtZXMpKSB7Ci0g
ICAgY29uc3QgU3RyaW5nIG5hbWUgPSBHZXRQcmVmaXhVbnRpbENvbW1hKG5hbWVzKTsKKworICBz
dGQ6OnNldDxzdGQ6OnN0cmluZz4gdGVzdHM7CisgIGZvciAoc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+Ojpjb25zdF9pdGVyYXRvciBuYW1lX2l0ID0gbmFtZV92ZWMuYmVnaW4oKTsKKyAgICAgICBu
YW1lX2l0ICE9IG5hbWVfdmVjLmVuZCgpOyArK25hbWVfaXQpIHsKKyAgICBjb25zdCBzdGQ6OnN0
cmluZyYgbmFtZSA9ICpuYW1lX2l0OwogICAgIGlmICh0ZXN0cy5jb3VudChuYW1lKSAhPSAwKSB7
CiAgICAgICBlcnJvcnMgPDwgIlRlc3QgIiA8PCBuYW1lIDw8ICIgaXMgbGlzdGVkIG1vcmUgdGhh
biBvbmNlLlxuIjsKICAgICAgIGNvbnRpbnVlOwogICAgIH0KIAogICAgIGJvb2wgZm91bmQgPSBm
YWxzZTsKLSAgICBmb3IgKERlZmluZWRUZXN0SXRlciBpdCA9IGRlZmluZWRfdGVzdF9uYW1lc18u
YmVnaW4oKTsKLSAgICAgICAgIGl0ICE9IGRlZmluZWRfdGVzdF9uYW1lc18uZW5kKCk7CisgICAg
Zm9yIChSZWdpc3RlcmVkVGVzdEl0ZXIgaXQgPSByZWdpc3RlcmVkX3Rlc3RzXy5iZWdpbigpOwor
ICAgICAgICAgaXQgIT0gcmVnaXN0ZXJlZF90ZXN0c18uZW5kKCk7CiAgICAgICAgICArK2l0KSB7
Ci0gICAgICBpZiAobmFtZSA9PSAqaXQpIHsKKyAgICAgIGlmIChuYW1lID09IGl0LT5maXJzdCkg
ewogICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQpAQCAtODUs
MTUgKzkzLDE1IEBAIGNvbnN0IGNoYXIqIFR5cGVkVGVzdENhc2VQU3RhdGU6OlZlcmlmeVJlZ2lz
dGVyZWRUZXN0TmFtZXMoCiAgICAgfQogICB9CiAKLSAgZm9yIChEZWZpbmVkVGVzdEl0ZXIgaXQg
PSBkZWZpbmVkX3Rlc3RfbmFtZXNfLmJlZ2luKCk7Ci0gICAgICAgaXQgIT0gZGVmaW5lZF90ZXN0
X25hbWVzXy5lbmQoKTsKKyAgZm9yIChSZWdpc3RlcmVkVGVzdEl0ZXIgaXQgPSByZWdpc3RlcmVk
X3Rlc3RzXy5iZWdpbigpOworICAgICAgIGl0ICE9IHJlZ2lzdGVyZWRfdGVzdHNfLmVuZCgpOwog
ICAgICAgICsraXQpIHsKLSAgICBpZiAodGVzdHMuY291bnQoKml0KSA9PSAwKSB7Ci0gICAgICBl
cnJvcnMgPDwgIllvdSBmb3Jnb3QgdG8gbGlzdCB0ZXN0ICIgPDwgKml0IDw8ICIuXG4iOworICAg
IGlmICh0ZXN0cy5jb3VudChpdC0+Zmlyc3QpID09IDApIHsKKyAgICAgIGVycm9ycyA8PCAiWW91
IGZvcmdvdCB0byBsaXN0IHRlc3QgIiA8PCBpdC0+Zmlyc3QgPDwgIi5cbiI7CiAgICAgfQogICB9
CiAKLSAgY29uc3QgU3RyaW5nJiBlcnJvcnNfc3RyID0gZXJyb3JzLkdldFN0cmluZygpOworICBj
b25zdCBzdGQ6OnN0cmluZyYgZXJyb3JzX3N0ciA9IGVycm9ycy5HZXRTdHJpbmcoKTsKICAgaWYg
KGVycm9yc19zdHIgIT0gIiIpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzICVzIiwgRm9ybWF0
RmlsZUxvY2F0aW9uKGZpbGUsIGxpbmUpLmNfc3RyKCksCiAgICAgICAgICAgICBlcnJvcnNfc3Ry
LmNfc3RyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LmNjCmluZGV4IDViODcxYzBh
ZGIwYTFjNGNmYTIzNzU1NDA1N2Q1MTYwODQ2MTk1MGUuLjk3OTY2Mzc3NDlhN2FkYTk0MDNkNmFk
OGQ2NWMyYTY2NzU1ZDQxNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Ny
Yy9ndGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QuY2MKQEAg
LTI2LDExMiArMjYsMTMxIEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKIC8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4p
Ci0vLwotLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQor
Ly8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBU
ZXN0KQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1z
cGkuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFs
L2N1c3RvbS9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgogCiAjaW5jbHVk
ZSA8Y3R5cGUuaD4KICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5j
bHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CiAj
aW5jbHVkZSA8d2NoYXIuaD4KICNpbmNsdWRlIDx3Y3R5cGUuaD4KIAogI2luY2x1ZGUgPGFsZ29y
aXRobT4KLSNpbmNsdWRlIDxvc3RyZWFtPgorI2luY2x1ZGUgPGlvbWFuaXA+CisjaW5jbHVkZSA8
bGltaXRzPgorI2luY2x1ZGUgPGxpc3Q+CisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPG9zdHJl
YW0+ICAvLyBOT0xJTlQKICNpbmNsdWRlIDxzc3RyZWFtPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAog
I2lmIEdURVNUX09TX0xJTlVYCiAKLS8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBVc2UgYXV0
b2NvbmYgdG8gZGV0ZWN0IGF2YWlsYWJpbGl0eSBvZgorLy8gRklYTUU6IFVzZSBhdXRvY29uZiB0
byBkZXRlY3QgYXZhaWxhYmlsaXR5IG9mCiAvLyBnZXR0aW1lb2ZkYXkoKS4KLSNkZWZpbmUgR1RF
U1RfSEFTX0dFVFRJTUVPRkRBWV8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8g
MQogCi0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxz
Y2hlZC5oPgorIyBpbmNsdWRlIDxmY250bC5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPGxpbWl0
cy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHNjaGVkLmg+ICAvLyBOT0xJTlQKIC8vIERlY2xh
cmVzIHZzbnByaW50ZigpLiAgVGhpcyBoZWFkZXIgaXMgbm90IGF2YWlsYWJsZSBvbiBXaW5kb3dz
LgotI2luY2x1ZGUgPHN0cmluZ3MuaD4KLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgotI2luY2x1ZGUg
PHN5cy90aW1lLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2lu
Y2x1ZGUgPHZlY3Rvcj4KKyMgaW5jbHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5UCisjIGluY2x1
ZGUgPHN5cy9tbWFuLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5P
TElOVAorIyBpbmNsdWRlIDx1bmlzdGQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxzdHJpbmc+
CiAKICNlbGlmIEdURVNUX09TX1NZTUJJQU4KLSNkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRB
WV8gMQotI2luY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMgZGVmaW5lIEdURVNUX0hB
U19HRVRUSU1FT0ZEQVlfIDEKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAogCiAj
ZWxpZiBHVEVTVF9PU19aT1MKLSNkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQotI2lu
Y2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1F
T0ZEQVlfIDEKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAogCiAvLyBPbiB6L09T
IHdlIGFkZGl0aW9uYWxseSBuZWVkIHN0cmluZ3MuaCBmb3Igc3RyY2FzZWNtcC4KLSNpbmNsdWRl
IDxzdHJpbmdzLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5U
CiAKICNlbGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFICAvLyBXZSBhcmUgb24gV2luZG93cyBD
RS4KIAotI2luY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDx3aW5kb3dz
Lmg+ICAvLyBOT0xJTlQKKyMgdW5kZWYgbWluCiAKICNlbGlmIEdURVNUX09TX1dJTkRPV1MgIC8v
IFdlIGFyZSBvbiBXaW5kb3dzIHByb3Blci4KIAotI2luY2x1ZGUgPGlvLmg+ICAvLyBOT0xJTlQK
LSNpbmNsdWRlIDxzeXMvdGltZWIuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHN5cy90eXBlcy5o
PiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8c3lzL3N0YXQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRl
IDxpby5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy90aW1lYi5oPiAgLy8gTk9MSU5UCisj
IGluY2x1ZGUgPHN5cy90eXBlcy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+
ICAvLyBOT0xJTlQKIAotI2lmIEdURVNUX09TX1dJTkRPV1NfTUlOR1cKKyMgaWYgR1RFU1RfT1Nf
V0lORE9XU19NSU5HVwogLy8gTWluR1cgaGFzIGdldHRpbWVvZmRheSgpIGJ1dCBub3QgX2Z0aW1l
NjQoKS4KLS8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBVc2UgYXV0b2NvbmYgdG8gZGV0ZWN0
IGF2YWlsYWJpbGl0eSBvZgorLy8gRklYTUU6IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZhaWxh
YmlsaXR5IG9mCiAvLyAgIGdldHRpbWVvZmRheSgpLgotLy8gVE9ETyhrZW50b25AZ29vZ2xlLmNv
bSk6IFRoZXJlIGFyZSBvdGhlciB3YXlzIHRvIGdldCB0aGUgdGltZSBvbgorLy8gRklYTUU6IFRo
ZXJlIGFyZSBvdGhlciB3YXlzIHRvIGdldCB0aGUgdGltZSBvbgogLy8gICBXaW5kb3dzLCBsaWtl
IEdldFRpY2tDb3VudCgpIG9yIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCkuICBNaW5HVwogLy8g
ICBzdXBwb3J0cyB0aGVzZS4gIGNvbnNpZGVyIHVzaW5nIHRoZW0gaW5zdGVhZC4KLSNkZWZpbmUg
R1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQotI2luY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJ
TlQKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NSU5HVworIyAgZGVmaW5lIEdURVNUX0hB
U19HRVRUSU1FT0ZEQVlfIDEKKyMgIGluY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMg
ZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTUlOR1cKIAogLy8gY3BwbGludCB0aGlua3MgdGhh
dCB0aGUgaGVhZGVyIGlzIGFscmVhZHkgaW5jbHVkZWQsIHNvIHdlIHdhbnQgdG8KIC8vIHNpbGVu
Y2UgaXQuCi0jaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHdpbmRv
d3MuaD4gIC8vIE5PTElOVAorIyB1bmRlZiBtaW4KIAogI2Vsc2UKIAogLy8gQXNzdW1lIG90aGVy
IHBsYXRmb3JtcyBoYXZlIGdldHRpbWVvZmRheSgpLgotLy8gVE9ETyhrZW50b25AZ29vZ2xlLmNv
bSk6IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZhaWxhYmlsaXR5IG9mCisvLyBGSVhNRTogVXNl
IGF1dG9jb25mIHRvIGRldGVjdCBhdmFpbGFiaWxpdHkgb2YKIC8vICAgZ2V0dGltZW9mZGF5KCku
Ci0jZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKKyMgZGVmaW5lIEdURVNUX0hBU19H
RVRUSU1FT0ZEQVlfIDEKIAogLy8gY3BwbGludCB0aGlua3MgdGhhdCB0aGUgaGVhZGVyIGlzIGFs
cmVhZHkgaW5jbHVkZWQsIHNvIHdlIHdhbnQgdG8KIC8vIHNpbGVuY2UgaXQuCi0jaW5jbHVkZSA8
c3lzL3RpbWUuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHVuaXN0ZC5oPiAgLy8gTk9MSU5UCisj
IGluY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8dW5pc3RkLmg+ICAv
LyBOT0xJTlQKIAogI2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAogCiAjaWYgR1RFU1RfSEFTX0VY
Q0VQVElPTlMKLSNpbmNsdWRlIDxzdGRleGNlcHQ+CisjIGluY2x1ZGUgPHN0ZGV4Y2VwdD4KKyNl
bmRpZgorCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworIyBpbmNsdWRlIDxhcnBhL2lu
ZXQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxuZXRkYi5oPiAgLy8gTk9MSU5UCisjIGluY2x1
ZGUgPHN5cy9zb2NrZXQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4gIC8v
IE5PTElOVAogI2VuZGlmCiAKLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5p
dCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBj
b21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJl
IHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQg
YSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBp
bgotLy8gaGlzIGNvZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCiAjaW5jbHVk
ZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9O
XwogCiAjaWYgR1RFU1RfT1NfV0lORE9XUwotI2RlZmluZSB2c25wcmludGYgX3ZzbnByaW50Zgor
IyBkZWZpbmUgdnNucHJpbnRmIF92c25wcmludGYKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9X
UwogCisjaWYgR1RFU1RfT1NfTUFDCisjaWZuZGVmIEdURVNUX09TX0lPUworI2luY2x1ZGUgPGNy
dF9leHRlcm5zLmg+CisjZW5kaWYKKyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX0FCU0wKKyNpbmNs
dWRlICJhYnNsL2RlYnVnZ2luZy9mYWlsdXJlX3NpZ25hbF9oYW5kbGVyLmgiCisjaW5jbHVkZSAi
YWJzbC9kZWJ1Z2dpbmcvc3RhY2t0cmFjZS5oIgorI2luY2x1ZGUgImFic2wvZGVidWdnaW5nL3N5
bWJvbGl6ZS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCisjZW5kaWYgIC8v
IEdURVNUX0hBU19BQlNMCisKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIAogdXNpbmcgaW50ZXJuYWw6
OkNvdW50SWY7CkBAIC0xNTMsOCArMTcyLDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRl
c3RDYXNlRmlsdGVyW10gPSAiKkRlYXRoVGVzdDoqRGVhdGhUZXN0LyoiOwogLy8gQSB0ZXN0IGZp
bHRlciB0aGF0IG1hdGNoZXMgZXZlcnl0aGluZy4KIHN0YXRpYyBjb25zdCBjaGFyIGtVbml2ZXJz
YWxGaWx0ZXJbXSA9ICIqIjsKIAotLy8gVGhlIGRlZmF1bHQgb3V0cHV0IGZpbGUgZm9yIFhNTCBv
dXRwdXQuCi1zdGF0aWMgY29uc3QgY2hhciBrRGVmYXVsdE91dHB1dEZpbGVbXSA9ICJ0ZXN0X2Rl
dGFpbC54bWwiOworLy8gVGhlIGRlZmF1bHQgb3V0cHV0IGZvcm1hdC4KK3N0YXRpYyBjb25zdCBj
aGFyIGtEZWZhdWx0T3V0cHV0Rm9ybWF0W10gPSAieG1sIjsKKy8vIFRoZSBkZWZhdWx0IG91dHB1
dCBmaWxlLgorc3RhdGljIGNvbnN0IGNoYXIga0RlZmF1bHRPdXRwdXRGaWxlW10gPSAidGVzdF9k
ZXRhaWwiOwogCiAvLyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZSBmb3IgdGhlIHRlc3Qg
c2hhcmQgaW5kZXguCiBzdGF0aWMgY29uc3QgY2hhciBrVGVzdFNoYXJkSW5kZXhbXSA9ICJHVEVT
VF9TSEFSRF9JTkRFWCI7CkBAIC0xNzMsOCArMTk0LDM0IEBAIGNvbnN0IGNoYXIga1N0YWNrVHJh
Y2VNYXJrZXJbXSA9ICJcblN0YWNrIHRyYWNlOlxuIjsKIC8vIHNwZWNpZmllZCBvbiB0aGUgY29t
bWFuZCBsaW5lLgogYm9vbCBnX2hlbHBfZmxhZyA9IGZhbHNlOwogCisvLyBVdGlsdHkgZnVuY3Rp
b24gdG8gT3BlbiBGaWxlIGZvciBXcml0aW5nCitzdGF0aWMgRklMRSogT3BlbkZpbGVGb3JXcml0
aW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZmlsZSkgeworICBGSUxFKiBmaWxlb3V0ID0g
TlVMTDsKKyAgRmlsZVBhdGggb3V0cHV0X2ZpbGVfcGF0aChvdXRwdXRfZmlsZSk7CisgIEZpbGVQ
YXRoIG91dHB1dF9kaXIob3V0cHV0X2ZpbGVfcGF0aC5SZW1vdmVGaWxlTmFtZSgpKTsKKworICBp
ZiAob3V0cHV0X2Rpci5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpIHsKKyAgICBmaWxl
b3V0ID0gcG9zaXg6OkZPcGVuKG91dHB1dF9maWxlLmNfc3RyKCksICJ3Iik7CisgIH0KKyAgaWYg
KGZpbGVvdXQgPT0gTlVMTCkgeworICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICJVbmFibGUgdG8g
b3BlbiBmaWxlIFwiIiA8PCBvdXRwdXRfZmlsZSA8PCAiXCIiOworICB9CisgIHJldHVybiBmaWxl
b3V0OworfQorCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAorLy8gQmF6ZWwgcGFzc2VzIGlu
IHRoZSBhcmd1bWVudCB0byAnLS10ZXN0X2ZpbHRlcicgdmlhIHRoZSBURVNUQlJJREdFX1RFU1Rf
T05MWQorLy8gZW52aXJvbm1lbnQgdmFyaWFibGUuCitzdGF0aWMgY29uc3QgY2hhciogR2V0RGVm
YXVsdEZpbHRlcigpIHsKKyAgY29uc3QgY2hhciogY29uc3QgdGVzdGJyaWRnZV90ZXN0X29ubHkg
PQorICAgICAgaW50ZXJuYWw6OnBvc2l4OjpHZXRFbnYoIlRFU1RCUklER0VfVEVTVF9PTkxZIik7
CisgIGlmICh0ZXN0YnJpZGdlX3Rlc3Rfb25seSAhPSBOVUxMKSB7CisgICAgcmV0dXJuIHRlc3Ri
cmlkZ2VfdGVzdF9vbmx5OworICB9CisgIHJldHVybiBrVW5pdmVyc2FsRmlsdGVyOworfQorCiBH
VEVTVF9ERUZJTkVfYm9vbF8oCiAgICAgYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMsCiAgICAgaW50
ZXJuYWw6OkJvb2xGcm9tR1Rlc3RFbnYoImFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIiwgZmFsc2Up
LApAQCAtMTg3LDcgKzIzNCw3IEBAIEdURVNUX0RFRklORV9ib29sXygKIAogR1RFU1RfREVGSU5F
X2Jvb2xfKAogICAgIGNhdGNoX2V4Y2VwdGlvbnMsCi0gICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rl
c3RFbnYoImNhdGNoX2V4Y2VwdGlvbnMiLCBmYWxzZSksCisgICAgaW50ZXJuYWw6OkJvb2xGcm9t
R1Rlc3RFbnYoImNhdGNoX2V4Y2VwdGlvbnMiLCB0cnVlKSwKICAgICAiVHJ1ZSBpZmYgIiBHVEVT
VF9OQU1FXwogICAgICIgc2hvdWxkIGNhdGNoIGV4Y2VwdGlvbnMgYW5kIHRyZWF0IHRoZW0gYXMg
dGVzdCBmYWlsdXJlcy4iKTsKIApAQCAtMTk3LDI2ICsyNDQsMzkgQEAgR1RFU1RfREVGSU5FX3N0
cmluZ18oCiAgICAgIldoZXRoZXIgdG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0LiAgVmFsaWQg
dmFsdWVzOiB5ZXMsIG5vLCAiCiAgICAgImFuZCBhdXRvLiAgJ2F1dG8nIG1lYW5zIHRvIHVzZSBj
b2xvcnMgaWYgdGhlIG91dHB1dCBpcyAiCiAgICAgImJlaW5nIHNlbnQgdG8gYSB0ZXJtaW5hbCBh
bmQgdGhlIFRFUk0gZW52aXJvbm1lbnQgdmFyaWFibGUgIgotICAgICJpcyBzZXQgdG8geHRlcm0s
IHh0ZXJtLWNvbG9yLCB4dGVybS0yNTZjb2xvciwgbGludXggb3IgY3lnd2luLiIpOworICAgICJp
cyBzZXQgdG8gYSB0ZXJtaW5hbCB0eXBlIHRoYXQgc3VwcG9ydHMgY29sb3JzLiIpOwogCiBHVEVT
VF9ERUZJTkVfc3RyaW5nXygKICAgICBmaWx0ZXIsCi0gICAgaW50ZXJuYWw6OlN0cmluZ0Zyb21H
VGVzdEVudigiZmlsdGVyIiwga1VuaXZlcnNhbEZpbHRlciksCisgICAgaW50ZXJuYWw6OlN0cmlu
Z0Zyb21HVGVzdEVudigiZmlsdGVyIiwgR2V0RGVmYXVsdEZpbHRlcigpKSwKICAgICAiQSBjb2xv
bi1zZXBhcmF0ZWQgbGlzdCBvZiBnbG9iIChub3QgcmVnZXgpIHBhdHRlcm5zICIKICAgICAiZm9y
IGZpbHRlcmluZyB0aGUgdGVzdHMgdG8gcnVuLCBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgIgog
ICAgICInLScgYW5kIGEgOiBzZXBhcmF0ZWQgbGlzdCBvZiBuZWdhdGl2ZSBwYXR0ZXJucyAodGVz
dHMgdG8gIgogICAgICJleGNsdWRlKS4gIEEgdGVzdCBpcyBydW4gaWYgaXQgbWF0Y2hlcyBvbmUg
b2YgdGhlIHBvc2l0aXZlICIKICAgICAicGF0dGVybnMgYW5kIGRvZXMgbm90IG1hdGNoIGFueSBv
ZiB0aGUgbmVnYXRpdmUgcGF0dGVybnMuIik7CiAKK0dURVNUX0RFRklORV9ib29sXygKKyAgICBp
bnN0YWxsX2ZhaWx1cmVfc2lnbmFsX2hhbmRsZXIsCisgICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rl
c3RFbnYoImluc3RhbGxfZmFpbHVyZV9zaWduYWxfaGFuZGxlciIsIGZhbHNlKSwKKyAgICAiSWYg
dHJ1ZSBhbmQgc3VwcG9ydGVkIG9uIHRoZSBjdXJyZW50IHBsYXRmb3JtLCAiIEdURVNUX05BTUVf
ICIgc2hvdWxkICIKKyAgICAiaW5zdGFsbCBhIHNpZ25hbCBoYW5kbGVyIHRoYXQgZHVtcHMgZGVi
dWdnaW5nIGluZm9ybWF0aW9uIHdoZW4gZmF0YWwgIgorICAgICJzaWduYWxzIGFyZSByYWlzZWQu
Iik7CisKIEdURVNUX0RFRklORV9ib29sXyhsaXN0X3Rlc3RzLCBmYWxzZSwKICAgICAgICAgICAg
ICAgICAgICAiTGlzdCBhbGwgdGVzdHMgd2l0aG91dCBydW5uaW5nIHRoZW0uIik7CiAKKy8vIFRo
ZSBuZXQgcHJpb3JpdHkgb3JkZXIgYWZ0ZXIgZmxhZyBwcm9jZXNzaW5nIGlzIHRodXM6CisvLyAg
IC0tZ3Rlc3Rfb3V0cHV0IGNvbW1hbmQgbGluZSBmbGFnCisvLyAgIEdURVNUX09VVFBVVCBlbnZp
cm9ubWVudCB2YXJpYWJsZQorLy8gICBYTUxfT1VUUFVUX0ZJTEUgZW52aXJvbm1lbnQgdmFyaWFi
bGUKKy8vICAgJycKIEdURVNUX0RFRklORV9zdHJpbmdfKAogICAgIG91dHB1dCwKLSAgICBpbnRl
cm5hbDo6U3RyaW5nRnJvbUdUZXN0RW52KCJvdXRwdXQiLCAiIiksCi0gICAgIkEgZm9ybWF0IChj
dXJyZW50bHkgbXVzdCBiZSBcInhtbFwiKSwgb3B0aW9uYWxseSBmb2xsb3dlZCAiCi0gICAgImJ5
IGEgY29sb24gYW5kIGFuIG91dHB1dCBmaWxlIG5hbWUgb3IgZGlyZWN0b3J5LiBBIGRpcmVjdG9y
eSAiCi0gICAgImlzIGluZGljYXRlZCBieSBhIHRyYWlsaW5nIHBhdGhuYW1lIHNlcGFyYXRvci4g
IgorICAgIGludGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYoIm91dHB1dCIsCisgICAgICBpbnRl
cm5hbDo6T3V0cHV0RmxhZ0Fsc29DaGVja0VudlZhcigpLmNfc3RyKCkpLAorICAgICJBIGZvcm1h
dCAoZGVmYXVsdHMgdG8gXCJ4bWxcIiBidXQgY2FuIGJlIHNwZWNpZmllZCB0byBiZSBcImpzb25c
IiksICIKKyAgICAib3B0aW9uYWxseSBmb2xsb3dlZCBieSBhIGNvbG9uIGFuZCBhbiBvdXRwdXQg
ZmlsZSBuYW1lIG9yIGRpcmVjdG9yeS4gIgorICAgICJBIGRpcmVjdG9yeSBpcyBpbmRpY2F0ZWQg
YnkgYSB0cmFpbGluZyBwYXRobmFtZSBzZXBhcmF0b3IuICIKICAgICAiRXhhbXBsZXM6IFwieG1s
OmZpbGVuYW1lLnhtbFwiLCBcInhtbDo6ZGlyZWN0b3J5bmFtZS9cIi4gIgogICAgICJJZiBhIGRp
cmVjdG9yeSBpcyBzcGVjaWZpZWQsIG91dHB1dCBmaWxlcyB3aWxsIGJlIGNyZWF0ZWQgIgogICAg
ICJ3aXRoaW4gdGhhdCBkaXJlY3RvcnksIHdpdGggZmlsZS1uYW1lcyBiYXNlZCBvbiB0aGUgdGVz
dCAiCkBAIC0yMjksNiArMjg5LDEyIEBAIEdURVNUX0RFRklORV9ib29sXygKICAgICAiVHJ1ZSBp
ZmYgIiBHVEVTVF9OQU1FXwogICAgICIgc2hvdWxkIGRpc3BsYXkgZWxhcHNlZCB0aW1lIGluIHRl
eHQgb3V0cHV0LiIpOwogCitHVEVTVF9ERUZJTkVfYm9vbF8oCisgICAgcHJpbnRfdXRmOCwKKyAg
ICBpbnRlcm5hbDo6Qm9vbEZyb21HVGVzdEVudigicHJpbnRfdXRmOCIsIHRydWUpLAorICAgICJU
cnVlIGlmZiAiIEdURVNUX05BTUVfCisgICAgIiBwcmludHMgVVRGOCBjaGFyYWN0ZXJzIGFzIHRl
eHQuIik7CisKIEdURVNUX0RFRklORV9pbnQzMl8oCiAgICAgcmFuZG9tX3NlZWQsCiAgICAgaW50
ZXJuYWw6OkludDMyRnJvbUdUZXN0RW52KCJyYW5kb21fc2VlZCIsIDApLApAQCAtMjU4LDEyICsz
MjQsMjYgQEAgR1RFU1RfREVGSU5FX2ludDMyXygKICAgICAiVGhlIG1heGltdW0gbnVtYmVyIG9m
IHN0YWNrIGZyYW1lcyB0byBwcmludCB3aGVuIGFuICIKICAgICAiYXNzZXJ0aW9uIGZhaWxzLiAg
VGhlIHZhbGlkIHJhbmdlIGlzIDAgdGhyb3VnaCAxMDAsIGluY2x1c2l2ZS4iKTsKIAorR1RFU1Rf
REVGSU5FX3N0cmluZ18oCisgICAgc3RyZWFtX3Jlc3VsdF90bywKKyAgICBpbnRlcm5hbDo6U3Ry
aW5nRnJvbUdUZXN0RW52KCJzdHJlYW1fcmVzdWx0X3RvIiwgIiIpLAorICAgICJUaGlzIGZsYWcg
c3BlY2lmaWVzIHRoZSBob3N0IG5hbWUgYW5kIHRoZSBwb3J0IG51bWJlciBvbiB3aGljaCB0byBz
dHJlYW0gIgorICAgICJ0ZXN0IHJlc3VsdHMuIEV4YW1wbGU6IFwibG9jYWxob3N0OjU1NVwiLiBU
aGUgZmxhZyBpcyBlZmZlY3RpdmUgb25seSBvbiAiCisgICAgIkxpbnV4LiIpOworCiBHVEVTVF9E
RUZJTkVfYm9vbF8oCiAgICAgdGhyb3dfb25fZmFpbHVyZSwKICAgICBpbnRlcm5hbDo6Qm9vbEZy
b21HVGVzdEVudigidGhyb3dfb25fZmFpbHVyZSIsIGZhbHNlKSwKICAgICAiV2hlbiB0aGlzIGZs
YWcgaXMgc3BlY2lmaWVkLCBhIGZhaWxlZCBhc3NlcnRpb24gd2lsbCB0aHJvdyBhbiBleGNlcHRp
b24gIgogICAgICJpZiBleGNlcHRpb25zIGFyZSBlbmFibGVkIG9yIGV4aXQgdGhlIHByb2dyYW0g
d2l0aCBhIG5vbi16ZXJvIGNvZGUgIgotICAgICJvdGhlcndpc2UuIik7CisgICAgIm90aGVyd2lz
ZS4gRm9yIHVzZSB3aXRoIGFuIGV4dGVybmFsIHRlc3QgZnJhbWV3b3JrLiIpOworCisjaWYgR1RF
U1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXworR1RFU1RfREVGSU5FX3N0cmluZ18oCisgICAgZmxh
Z2ZpbGUsCisgICAgaW50ZXJuYWw6OlN0cmluZ0Zyb21HVGVzdEVudigiZmxhZ2ZpbGUiLCAiIiks
CisgICAgIlRoaXMgZmxhZyBzcGVjaWZpZXMgdGhlIGZsYWdmaWxlIHRvIHJlYWQgY29tbWFuZC1s
aW5lIGZsYWdzIGZyb20uIik7CisjZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxB
R18KIAogbmFtZXNwYWNlIGludGVybmFsIHsKIApAQCAtMjcyLDcgKzM1Miw4IEBAIG5hbWVzcGFj
ZSBpbnRlcm5hbCB7CiAvLyB0aGFuIGtNYXhSYW5nZS4KIFVJbnQzMiBSYW5kb206OkdlbmVyYXRl
KFVJbnQzMiByYW5nZSkgewogICAvLyBUaGVzZSBjb25zdGFudHMgYXJlIHRoZSBzYW1lIGFzIGFy
ZSB1c2VkIGluIGdsaWJjJ3MgcmFuZCgzKS4KLSAgc3RhdGVfID0gKDExMDM1MTUyNDVVKnN0YXRl
XyArIDEyMzQ1VSkgJSBrTWF4UmFuZ2U7CisgIC8vIFVzZSB3aWRlciB0eXBlcyB0aGFuIG5lY2Vz
c2FyeSB0byBwcmV2ZW50IHVuc2lnbmVkIG92ZXJmbG93IGRpYWdub3N0aWNzLgorICBzdGF0ZV8g
PSBzdGF0aWNfY2FzdDxVSW50MzI+KDExMDM1MTUyNDVVTEwqc3RhdGVfICsgMTIzNDVVKSAlIGtN
YXhSYW5nZTsKIAogICBHVEVTVF9DSEVDS18ocmFuZ2UgPiAwKQogICAgICAgPDwgIkNhbm5vdCBn
ZW5lcmF0ZSBhIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDApLiI7CkBAIC0yODksMTMgKzM3MCw3
IEBAIFVJbnQzMiBSYW5kb206OkdlbmVyYXRlKFVJbnQzMiByYW5nZSkgewogLy8gR1Rlc3RJc0lu
aXRpYWxpemVkKCkgcmV0dXJucyB0cnVlIGlmZiB0aGUgdXNlciBoYXMgaW5pdGlhbGl6ZWQKIC8v
IEdvb2dsZSBUZXN0LiAgVXNlZnVsIGZvciBjYXRjaGluZyB0aGUgdXNlciBtaXN0YWtlIG9mIG5v
dCBpbml0aWFsaXppbmcKIC8vIEdvb2dsZSBUZXN0IGJlZm9yZSBjYWxsaW5nIFJVTl9BTExfVEVT
VFMoKS4KLS8vCi0vLyBBIHVzZXIgbXVzdCBjYWxsIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCkg
dG8gaW5pdGlhbGl6ZSBHb29nbGUKLS8vIFRlc3QuICBnX2luaXRfZ3Rlc3RfY291bnQgaXMgc2V0
IHRvIHRoZSBudW1iZXIgb2YgdGltZXMKLS8vIEluaXRHb29nbGVUZXN0KCkgaGFzIGJlZW4gY2Fs
bGVkLiAgV2UgZG9uJ3QgcHJvdGVjdCB0aGlzIHZhcmlhYmxlCi0vLyB1bmRlciBhIG11dGV4IGFz
IGl0IGlzIG9ubHkgYWNjZXNzZWQgaW4gdGhlIG1haW4gdGhyZWFkLgotaW50IGdfaW5pdF9ndGVz
dF9jb3VudCA9IDA7Ci1zdGF0aWMgYm9vbCBHVGVzdElzSW5pdGlhbGl6ZWQoKSB7IHJldHVybiBn
X2luaXRfZ3Rlc3RfY291bnQgIT0gMDsgfQorc3RhdGljIGJvb2wgR1Rlc3RJc0luaXRpYWxpemVk
KCkgeyByZXR1cm4gR2V0QXJndnMoKS5zaXplKCkgPiAwOyB9CiAKIC8vIEl0ZXJhdGVzIG92ZXIg
YSB2ZWN0b3Igb2YgVGVzdENhc2VzLCBrZWVwaW5nIGEgcnVubmluZyBzdW0gb2YgdGhlCiAvLyBy
ZXN1bHRzIG9mIGNhbGxpbmcgYSBnaXZlbiBpbnQtcmV0dXJuaW5nIG1ldGhvZCBvbiBlYWNoLgpA
QCAtMzQ5LDEwICs0MjQsMjEgQEAgdm9pZCBBc3NlcnRIZWxwZXI6Om9wZXJhdG9yPShjb25zdCBN
ZXNzYWdlJiBtZXNzYWdlKSBjb25zdCB7CiB9CiAKIC8vIE11dGV4IGZvciBsaW5rZWQgcG9pbnRl
cnMuCi1HVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhnX2xpbmtlZF9wdHJfbXV0ZXgpOworR1RF
U1RfQVBJXyBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhnX2xpbmtlZF9wdHJfbXV0ZXgpOwog
Ci0vLyBBcHBsaWNhdGlvbiBwYXRobmFtZSBnb3R0ZW4gaW4gSW5pdEdvb2dsZVRlc3QuCi1TdHJp
bmcgZ19leGVjdXRhYmxlX3BhdGg7CisvLyBBIGNvcHkgb2YgYWxsIGNvbW1hbmQgbGluZSBhcmd1
bWVudHMuICBTZXQgYnkgSW5pdEdvb2dsZVRlc3QoKS4KKzo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+IGdfYXJndnM7CisKKzo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdldEFyZ3ZzKCkgewor
I2lmIGRlZmluZWQoR1RFU1RfQ1VTVE9NX0dFVF9BUkdWU18pCisgIC8vIEdURVNUX0NVU1RPTV9H
RVRfQVJHVlNfKCkgbWF5IHJldHVybiBhIGNvbnRhaW5lciBvZiBzdGQ6OnN0cmluZyBvcgorICAv
LyA6OnN0cmluZy4gVGhpcyBjb2RlIGNvbnZlcnRzIGl0IHRvIHRoZSBhcHByb3ByaWF0ZSB0eXBl
LgorICBjb25zdCBhdXRvJiBjdXN0b20gPSBHVEVTVF9DVVNUT01fR0VUX0FSR1ZTXygpOworICBy
ZXR1cm4gOjpzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oY3VzdG9tLmJlZ2luKCksIGN1c3RvbS5l
bmQoKSk7CisjZWxzZSAgIC8vIGRlZmluZWQoR1RFU1RfQ1VTVE9NX0dFVF9BUkdWU18pCisgIHJl
dHVybiBnX2FyZ3ZzOworI2VuZGlmICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9HRVRfQVJHVlNf
KQorfQogCiAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uJ3MgbmFtZSwgcmVtb3Zp
bmcgZGlyZWN0b3J5IHBhdGggaWYgdGhhdAogLy8gaXMgcHJlc2VudC4KQEAgLTM2MCw5ICs0NDYs
OSBAQCBGaWxlUGF0aCBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKSB7CiAgIEZpbGVQYXRoIHJl
c3VsdDsKIAogI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgcmVzdWx0LlNldChGaWxlUGF0aChnX2V4
ZWN1dGFibGVfcGF0aCkuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKSk7CisgIHJlc3VsdC5TZXQoRmls
ZVBhdGgoR2V0QXJndnMoKVswXSkuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKSk7CiAjZWxzZQotICBy
ZXN1bHQuU2V0KEZpbGVQYXRoKGdfZXhlY3V0YWJsZV9wYXRoKSk7CisgIHJlc3VsdC5TZXQoRmls
ZVBhdGgoR2V0QXJndnMoKVswXSkpOwogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKICAg
cmV0dXJuIHJlc3VsdC5SZW1vdmVEaXJlY3RvcnlOYW1lKCk7CkBAIC0zNzEsMzMgKzQ1NywzNCBA
QCBGaWxlUGF0aCBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKSB7CiAvLyBGdW5jdGlvbnMgZm9y
IHByb2Nlc3NpbmcgdGhlIGd0ZXN0X291dHB1dCBmbGFnLgogCiAvLyBSZXR1cm5zIHRoZSBvdXRw
dXQgZm9ybWF0LCBvciAiIiBmb3Igbm9ybWFsIHByaW50ZWQgb3V0cHV0LgotU3RyaW5nIFVuaXRU
ZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCkgeworc3RkOjpzdHJpbmcgVW5pdFRlc3RPcHRp
b25zOjpHZXRPdXRwdXRGb3JtYXQoKSB7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGd0ZXN0X291dHB1
dF9mbGFnID0gR1RFU1RfRkxBRyhvdXRwdXQpLmNfc3RyKCk7Ci0gIGlmIChndGVzdF9vdXRwdXRf
ZmxhZyA9PSBOVUxMKSByZXR1cm4gU3RyaW5nKCIiKTsKLQogICBjb25zdCBjaGFyKiBjb25zdCBj
b2xvbiA9IHN0cmNocihndGVzdF9vdXRwdXRfZmxhZywgJzonKTsKICAgcmV0dXJuIChjb2xvbiA9
PSBOVUxMKSA/Ci0gICAgICBTdHJpbmcoZ3Rlc3Rfb3V0cHV0X2ZsYWcpIDoKLSAgICAgIFN0cmlu
ZyhndGVzdF9vdXRwdXRfZmxhZywgY29sb24gLSBndGVzdF9vdXRwdXRfZmxhZyk7CisgICAgICBz
dGQ6OnN0cmluZyhndGVzdF9vdXRwdXRfZmxhZykgOgorICAgICAgc3RkOjpzdHJpbmcoZ3Rlc3Rf
b3V0cHV0X2ZsYWcsIGNvbG9uIC0gZ3Rlc3Rfb3V0cHV0X2ZsYWcpOwogfQogCiAvLyBSZXR1cm5z
IHRoZSBuYW1lIG9mIHRoZSByZXF1ZXN0ZWQgb3V0cHV0IGZpbGUsIG9yIHRoZSBkZWZhdWx0IGlm
IG5vbmUKIC8vIHdhcyBleHBsaWNpdGx5IHNwZWNpZmllZC4KLVN0cmluZyBVbml0VGVzdE9wdGlv
bnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpIHsKK3N0ZDo6c3RyaW5nIFVuaXRUZXN0
T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkgewogICBjb25zdCBjaGFyKiBj
b25zdCBndGVzdF9vdXRwdXRfZmxhZyA9IEdURVNUX0ZMQUcob3V0cHV0KS5jX3N0cigpOwotICBp
ZiAoZ3Rlc3Rfb3V0cHV0X2ZsYWcgPT0gTlVMTCkKLSAgICByZXR1cm4gU3RyaW5nKCIiKTsKKwor
ICBzdGQ6OnN0cmluZyBmb3JtYXQgPSBHZXRPdXRwdXRGb3JtYXQoKTsKKyAgaWYgKGZvcm1hdC5l
bXB0eSgpKQorICAgIGZvcm1hdCA9IHN0ZDo6c3RyaW5nKGtEZWZhdWx0T3V0cHV0Rm9ybWF0KTsK
IAogICBjb25zdCBjaGFyKiBjb25zdCBjb2xvbiA9IHN0cmNocihndGVzdF9vdXRwdXRfZmxhZywg
JzonKTsKICAgaWYgKGNvbG9uID09IE5VTEwpCi0gICAgcmV0dXJuIFN0cmluZyhpbnRlcm5hbDo6
RmlsZVBhdGg6OkNvbmNhdFBhdGhzKAotICAgICAgICAgICAgICAgaW50ZXJuYWw6OkZpbGVQYXRo
KAotICAgICAgICAgICAgICAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93
b3JraW5nX2RpcigpKSwKLSAgICAgICAgICAgICAgIGludGVybmFsOjpGaWxlUGF0aChrRGVmYXVs
dE91dHB1dEZpbGUpKS5Ub1N0cmluZygpICk7CisgICAgcmV0dXJuIGludGVybmFsOjpGaWxlUGF0
aDo6TWFrZUZpbGVOYW1lKAorICAgICAgICBpbnRlcm5hbDo6RmlsZVBhdGgoCisgICAgICAgICAg
ICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+b3JpZ2luYWxfd29ya2luZ19kaXIoKSksCisgICAg
ICAgIGludGVybmFsOjpGaWxlUGF0aChrRGVmYXVsdE91dHB1dEZpbGUpLCAwLAorICAgICAgICBm
b3JtYXQuY19zdHIoKSkuc3RyaW5nKCk7CiAKICAgaW50ZXJuYWw6OkZpbGVQYXRoIG91dHB1dF9u
YW1lKGNvbG9uICsgMSk7CiAgIGlmICghb3V0cHV0X25hbWUuSXNBYnNvbHV0ZVBhdGgoKSkKLSAg
ICAvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogb24gV2luZG93cyBcc29tZVxwYXRoIGlzIG5vdCBh
biBhYnNvbHV0ZQorICAgIC8vIEZJWE1FOiBvbiBXaW5kb3dzIFxzb21lXHBhdGggaXMgbm90IGFu
IGFic29sdXRlCiAgICAgLy8gcGF0aCAoYXMgaXRzIG1lYW5pbmcgZGVwZW5kcyBvbiB0aGUgY3Vy
cmVudCBkcml2ZSksIHlldCB0aGUKICAgICAvLyBmb2xsb3dpbmcgbG9naWMgZm9yIHR1cm5pbmcg
aXQgaW50byBhbiBhYnNvbHV0ZSBwYXRoIGlzIHdyb25nLgogICAgIC8vIEZpeCBpdC4KQEAgLTQw
NiwxMiArNDkzLDEyIEBAIFN0cmluZyBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRv
T3V0cHV0RmlsZSgpIHsKICAgICAgICAgaW50ZXJuYWw6OkZpbGVQYXRoKGNvbG9uICsgMSkpOwog
CiAgIGlmICghb3V0cHV0X25hbWUuSXNEaXJlY3RvcnkoKSkKLSAgICByZXR1cm4gb3V0cHV0X25h
bWUuVG9TdHJpbmcoKTsKKyAgICByZXR1cm4gb3V0cHV0X25hbWUuc3RyaW5nKCk7CiAKICAgaW50
ZXJuYWw6OkZpbGVQYXRoIHJlc3VsdChpbnRlcm5hbDo6RmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVl
RmlsZU5hbWUoCiAgICAgICBvdXRwdXRfbmFtZSwgaW50ZXJuYWw6OkdldEN1cnJlbnRFeGVjdXRh
YmxlTmFtZSgpLAogICAgICAgR2V0T3V0cHV0Rm9ybWF0KCkuY19zdHIoKSkpOwotICByZXR1cm4g
cmVzdWx0LlRvU3RyaW5nKCk7CisgIHJldHVybiByZXN1bHQuc3RyaW5nKCk7CiB9CiAKIC8vIFJl
dHVybnMgdHJ1ZSBpZmYgdGhlIHdpbGRjYXJkIHBhdHRlcm4gbWF0Y2hlcyB0aGUgc3RyaW5nLiAg
VGhlCkBAIC00MzYsNyArNTIzLDggQEAgYm9vbCBVbml0VGVzdE9wdGlvbnM6OlBhdHRlcm5NYXRj
aGVzU3RyaW5nKGNvbnN0IGNoYXIgKnBhdHRlcm4sCiAgIH0KIH0KIAotYm9vbCBVbml0VGVzdE9w
dGlvbnM6Ok1hdGNoZXNGaWx0ZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBjaGFyKiBmaWx0
ZXIpIHsKK2Jvb2wgVW5pdFRlc3RPcHRpb25zOjpNYXRjaGVzRmlsdGVyKAorICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBuYW1lLCBjb25zdCBjaGFyKiBmaWx0ZXIpIHsKICAgY29uc3QgY2hhciAqY3Vy
X3BhdHRlcm4gPSBmaWx0ZXI7CiAgIGZvciAoOzspIHsKICAgICBpZiAoUGF0dGVybk1hdGNoZXNT
dHJpbmcoY3VyX3BhdHRlcm4sIG5hbWUuY19zdHIoKSkpIHsKQEAgLTQ1NiwyOCArNTQ0LDI0IEBA
IGJvb2wgVW5pdFRlc3RPcHRpb25zOjpNYXRjaGVzRmlsdGVyKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgY2hhciogZmlsdGVyKSB7CiAgIH0KIH0KIAotLy8gVE9ETyhrZWl0aHJheSk6IG1vdmUg
U3RyaW5nIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9ucyB0byBndGVzdC1zdHJpbmcuY2MuCi0KIC8v
IFJldHVybnMgdHJ1ZSBpZmYgdGhlIHVzZXItc3BlY2lmaWVkIGZpbHRlciBtYXRjaGVzIHRoZSB0
ZXN0IGNhc2UKIC8vIG5hbWUgYW5kIHRoZSB0ZXN0IG5hbWUuCi1ib29sIFVuaXRUZXN0T3B0aW9u
czo6RmlsdGVyTWF0Y2hlc1Rlc3QoY29uc3QgU3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcgJnRlc3RfbmFt
ZSkgewotICBjb25zdCBTdHJpbmcmIGZ1bGxfbmFtZSA9IFN0cmluZzo6Rm9ybWF0KCIlcy4lcyIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jYXNlX25h
bWUuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0X25hbWUuY19zdHIoKSk7Citib29sIFVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0Y2hlc1Rl
c3QoY29uc3Qgc3RkOjpzdHJpbmcgJnRlc3RfY2FzZV9uYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0X25hbWUpIHsKKyAg
Y29uc3Qgc3RkOjpzdHJpbmcmIGZ1bGxfbmFtZSA9IHRlc3RfY2FzZV9uYW1lICsgIi4iICsgdGVz
dF9uYW1lLmNfc3RyKCk7CiAKICAgLy8gU3BsaXQgLS1ndGVzdF9maWx0ZXIgYXQgJy0nLCBpZiB0
aGVyZSBpcyBvbmUsIHRvIHNlcGFyYXRlIGludG8KICAgLy8gcG9zaXRpdmUgZmlsdGVyIGFuZCBu
ZWdhdGl2ZSBmaWx0ZXIgcG9ydGlvbnMKICAgY29uc3QgY2hhciogY29uc3QgcCA9IEdURVNUX0ZM
QUcoZmlsdGVyKS5jX3N0cigpOwogICBjb25zdCBjaGFyKiBjb25zdCBkYXNoID0gc3RyY2hyKHAs
ICctJyk7Ci0gIFN0cmluZyBwb3NpdGl2ZTsKLSAgU3RyaW5nIG5lZ2F0aXZlOworICBzdGQ6OnN0
cmluZyBwb3NpdGl2ZTsKKyAgc3RkOjpzdHJpbmcgbmVnYXRpdmU7CiAgIGlmIChkYXNoID09IE5V
TEwpIHsKICAgICBwb3NpdGl2ZSA9IEdURVNUX0ZMQUcoZmlsdGVyKS5jX3N0cigpOyAgLy8gV2hv
bGUgc3RyaW5nIGlzIGEgcG9zaXRpdmUgZmlsdGVyCi0gICAgbmVnYXRpdmUgPSBTdHJpbmcoIiIp
OworICAgIG5lZ2F0aXZlID0gIiI7CiAgIH0gZWxzZSB7Ci0gICAgcG9zaXRpdmUgPSBTdHJpbmco
cCwgZGFzaCAtIHApOyAgLy8gRXZlcnl0aGluZyB1cCB0byB0aGUgZGFzaAotICAgIG5lZ2F0aXZl
ID0gU3RyaW5nKGRhc2grMSk7ICAgICAgIC8vIEV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGRhc2gKKyAg
ICBwb3NpdGl2ZSA9IHN0ZDo6c3RyaW5nKHAsIGRhc2gpOyAgIC8vIEV2ZXJ5dGhpbmcgdXAgdG8g
dGhlIGRhc2gKKyAgICBuZWdhdGl2ZSA9IHN0ZDo6c3RyaW5nKGRhc2ggKyAxKTsgIC8vIEV2ZXJ5
dGhpbmcgYWZ0ZXIgdGhlIGRhc2gKICAgICBpZiAocG9zaXRpdmUuZW1wdHkoKSkgewogICAgICAg
Ly8gVHJlYXQgJy10ZXN0MScgYXMgdGhlIHNhbWUgYXMgJyotdGVzdDEnCiAgICAgICBwb3NpdGl2
ZSA9IGtVbml2ZXJzYWxGaWx0ZXI7CkBAIC00OTAsMjAgKzU3NCwzMyBAQCBib29sIFVuaXRUZXN0
T3B0aW9uczo6RmlsdGVyTWF0Y2hlc1Rlc3QoY29uc3QgU3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSwK
ICAgICAgICAgICAhTWF0Y2hlc0ZpbHRlcihmdWxsX25hbWUsIG5lZ2F0aXZlLmNfc3RyKCkpKTsK
IH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MKKyNpZiBHVEVTVF9IQVNfU0VICiAvLyBSZXR1cm5z
IEVYQ0VQVElPTl9FWEVDVVRFX0hBTkRMRVIgaWYgR29vZ2xlIFRlc3Qgc2hvdWxkIGhhbmRsZSB0
aGUKIC8vIGdpdmVuIFNFSCBleGNlcHRpb24sIG9yIEVYQ0VQVElPTl9DT05USU5VRV9TRUFSQ0gg
b3RoZXJ3aXNlLgogLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgYXMgYW4gX19leGNlcHQgY29u
ZGl0aW9uLgogaW50IFVuaXRUZXN0T3B0aW9uczo6R1Rlc3RTaG91bGRQcm9jZXNzU0VIKERXT1JE
IGV4Y2VwdGlvbl9jb2RlKSB7Ci0gIC8vIEdvb2dsZSBUZXN0IHNob3VsZCBoYW5kbGUgYW4gZXhj
ZXB0aW9uIGlmOgorICAvLyBHb29nbGUgVGVzdCBzaG91bGQgaGFuZGxlIGEgU0VIIGV4Y2VwdGlv
biBpZjoKICAgLy8gICAxLiB0aGUgdXNlciB3YW50cyBpdCB0bywgQU5ECi0gIC8vICAgMi4gdGhp
cyBpcyBub3QgYSBicmVha3BvaW50IGV4Y2VwdGlvbi4KLSAgcmV0dXJuIChHVEVTVF9GTEFHKGNh
dGNoX2V4Y2VwdGlvbnMpICYmCi0gICAgICAgICAgZXhjZXB0aW9uX2NvZGUgIT0gRVhDRVBUSU9O
X0JSRUFLUE9JTlQpID8KLSAgICAgIEVYQ0VQVElPTl9FWEVDVVRFX0hBTkRMRVIgOgotICAgICAg
RVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJDSDsKKyAgLy8gICAyLiB0aGlzIGlzIG5vdCBhIGJyZWFr
cG9pbnQgZXhjZXB0aW9uLCBBTkQKKyAgLy8gICAzLiB0aGlzIGlzIG5vdCBhIEMrKyBleGNlcHRp
b24gKFZDKysgaW1wbGVtZW50cyB0aGVtIHZpYSBTRUgsCisgIC8vICAgICAgYXBwYXJlbnRseSku
CisgIC8vCisgIC8vIFNFSCBleGNlcHRpb24gY29kZSBmb3IgQysrIGV4Y2VwdGlvbnMuCisgIC8v
IChzZWUgaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi8xODUyOTQgZm9yIG1vcmUgaW5m
b3JtYXRpb24pLgorICBjb25zdCBEV09SRCBrQ3h4RXhjZXB0aW9uQ29kZSA9IDB4ZTA2ZDczNjM7
CisKKyAgYm9vbCBzaG91bGRfaGFuZGxlID0gdHJ1ZTsKKworICBpZiAoIUdURVNUX0ZMQUcoY2F0
Y2hfZXhjZXB0aW9ucykpCisgICAgc2hvdWxkX2hhbmRsZSA9IGZhbHNlOworICBlbHNlIGlmIChl
eGNlcHRpb25fY29kZSA9PSBFWENFUFRJT05fQlJFQUtQT0lOVCkKKyAgICBzaG91bGRfaGFuZGxl
ID0gZmFsc2U7CisgIGVsc2UgaWYgKGV4Y2VwdGlvbl9jb2RlID09IGtDeHhFeGNlcHRpb25Db2Rl
KQorICAgIHNob3VsZF9oYW5kbGUgPSBmYWxzZTsKKworICByZXR1cm4gc2hvdWxkX2hhbmRsZSA/
IEVYQ0VQVElPTl9FWEVDVVRFX0hBTkRMRVIgOiBFWENFUFRJT05fQ09OVElOVUVfU0VBUkNIOwog
fQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisjZW5kaWYgIC8vIEdURVNUX0hBU19TRUgK
IAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiAKQEAgLTU3OCwxMyArNjc1LDEzIEBAIGV4dGVy
biBjb25zdCBUeXBlSWQga1Rlc3RUeXBlSWRJbkdvb2dsZVRlc3QgPSBHZXRUZXN0VHlwZUlkKCk7
CiAvLyBUaGlzIHByZWRpY2F0ZS1mb3JtYXR0ZXIgY2hlY2tzIHRoYXQgJ3Jlc3VsdHMnIGNvbnRh
aW5zIGEgdGVzdCBwYXJ0CiAvLyBmYWlsdXJlIG9mIHRoZSBnaXZlbiB0eXBlIGFuZCB0aGF0IHRo
ZSBmYWlsdXJlIG1lc3NhZ2UgY29udGFpbnMgdGhlCiAvLyBnaXZlbiBzdWJzdHJpbmcuCi1Bc3Nl
cnRpb25SZXN1bHQgSGFzT25lRmFpbHVyZShjb25zdCBjaGFyKiAvKiByZXN1bHRzX2V4cHIgKi8s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKiB0eXBlX2V4cHIg
Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKiBzdWJzdHJf
ZXhwciAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQYXJ0UmVz
dWx0QXJyYXkmIHJlc3VsdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0UGFy
dFJlc3VsdDo6VHlwZSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogc3Vic3RyKSB7Ci0gIGNvbnN0IFN0cmluZyBleHBlY3RlZCh0eXBlID09IFRlc3RQYXJ0
UmVzdWx0OjprRmF0YWxGYWlsdXJlID8KK3N0YXRpYyBBc3NlcnRpb25SZXN1bHQgSGFzT25lRmFp
bHVyZShjb25zdCBjaGFyKiAvKiByZXN1bHRzX2V4cHIgKi8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLyogdHlwZV9leHByICovLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qIHN1YnN0cl9leHByICov
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQYXJ0UmVz
dWx0QXJyYXkmIHJlc3VsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VGVzdFBhcnRSZXN1bHQ6OlR5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgc3Vic3RyKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5n
IGV4cGVjdGVkKHR5cGUgPT0gVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUgPwogICAgICAg
ICAgICAgICAgICAgICAgICAgIjEgZmF0YWwgZmFpbHVyZSIgOgogICAgICAgICAgICAgICAgICAg
ICAgICAgIjEgbm9uLWZhdGFsIGZhaWx1cmUiKTsKICAgTWVzc2FnZSBtc2c7CkBAIC01OTQsMjMg
KzY5MSwyMSBAQCBBc3NlcnRpb25SZXN1bHQgSGFzT25lRmFpbHVyZShjb25zdCBjaGFyKiAvKiBy
ZXN1bHRzX2V4cHIgKi8sCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsg
aSsrKSB7CiAgICAgICBtc2cgPDwgIlxuIiA8PCByZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KGkp
OwogICAgIH0KLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICAgIHJldHVybiBB
c3NlcnRpb25GYWlsdXJlKCkgPDwgbXNnOwogICB9CiAKICAgY29uc3QgVGVzdFBhcnRSZXN1bHQm
IHIgPSByZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDApOwogICBpZiAoci50eXBlKCkgIT0gdHlw
ZSkgewotICAgIG1zZyA8PCAiRXhwZWN0ZWQ6ICIgPDwgZXhwZWN0ZWQgPDwgIlxuIgotICAgICAg
ICA8PCAiICBBY3R1YWw6XG4iCi0gICAgICAgIDw8IHI7Ci0gICAgcmV0dXJuIEFzc2VydGlvbkZh
aWx1cmUobXNnKTsKKyAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJFeHBlY3RlZDog
IiA8PCBleHBlY3RlZCA8PCAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAi
ICBBY3R1YWw6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCByOwogICB9CiAK
LSAgaWYgKHN0cnN0cihyLm1lc3NhZ2UoKSwgc3Vic3RyKSA9PSBOVUxMKSB7Ci0gICAgbXNnIDw8
ICJFeHBlY3RlZDogIiA8PCBleHBlY3RlZCA8PCAiIGNvbnRhaW5pbmcgXCIiCi0gICAgICAgIDw8
IHN1YnN0ciA8PCAiXCJcbiIKLSAgICAgICAgPDwgIiAgQWN0dWFsOlxuIgotICAgICAgICA8PCBy
OwotICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIGlmIChzdHJzdHIoci5tZXNz
YWdlKCksIHN1YnN0ci5jX3N0cigpKSA9PSBOVUxMKSB7CisgICAgcmV0dXJuIEFzc2VydGlvbkZh
aWx1cmUoKSA8PCAiRXhwZWN0ZWQ6ICIgPDwgZXhwZWN0ZWQgPDwgIiBjb250YWluaW5nIFwiIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgc3Vic3RyIDw8ICJcIlxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiAgQWN0dWFsOlxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgcjsKICAgfQogCiAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7
CkBAIC02MTksMjAgKzcxNCwxNyBAQCBBc3NlcnRpb25SZXN1bHQgSGFzT25lRmFpbHVyZShjb25z
dCBjaGFyKiAvKiByZXN1bHRzX2V4cHIgKi8sCiAvLyBUaGUgY29uc3RydWN0b3Igb2YgU2luZ2xl
RmFpbHVyZUNoZWNrZXIgcmVtZW1iZXJzIHdoZXJlIHRvIGxvb2sgdXAKIC8vIHRlc3QgcGFydCBy
ZXN1bHRzLCB3aGF0IHR5cGUgb2YgZmFpbHVyZSB3ZSBleHBlY3QsIGFuZCB3aGF0CiAvLyBzdWJz
dHJpbmcgdGhlIGZhaWx1cmUgbWVzc2FnZSBzaG91bGQgY29udGFpbi4KLVNpbmdsZUZhaWx1cmVD
aGVja2VyOjogU2luZ2xlRmFpbHVyZUNoZWNrZXIoCi0gICAgY29uc3QgVGVzdFBhcnRSZXN1bHRB
cnJheSogcmVzdWx0cywKLSAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlLAotICAgIGNvbnN0
IGNoYXIqIHN1YnN0cikKLSAgICA6IHJlc3VsdHNfKHJlc3VsdHMpLAotICAgICAgdHlwZV8odHlw
ZSksCi0gICAgICBzdWJzdHJfKHN1YnN0cikge30KK1NpbmdsZUZhaWx1cmVDaGVja2VyOjpTaW5n
bGVGYWlsdXJlQ2hlY2tlcihjb25zdCBUZXN0UGFydFJlc3VsdEFycmF5KiByZXN1bHRzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0OjpU
eXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHN1YnN0cikKKyAgICA6IHJlc3VsdHNfKHJlc3VsdHMpLCB0eXBlXyh0
eXBlKSwgc3Vic3RyXyhzdWJzdHIpIHt9CiAKIC8vIFRoZSBkZXN0cnVjdG9yIG9mIFNpbmdsZUZh
aWx1cmVDaGVja2VyIHZlcmlmaWVzIHRoYXQgdGhlIGdpdmVuCiAvLyBUZXN0UGFydFJlc3VsdEFy
cmF5IGNvbnRhaW5zIGV4YWN0bHkgb25lIGZhaWx1cmUgdGhhdCBoYXMgdGhlIGdpdmVuCiAvLyB0
eXBlIGFuZCBjb250YWlucyB0aGUgZ2l2ZW4gc3Vic3RyaW5nLiAgSWYgdGhhdCdzIG5vdCB0aGUg
Y2FzZSwgYQogLy8gbm9uLWZhdGFsIGZhaWx1cmUgd2lsbCBiZSBnZW5lcmF0ZWQuCiBTaW5nbGVG
YWlsdXJlQ2hlY2tlcjo6flNpbmdsZUZhaWx1cmVDaGVja2VyKCkgewotICBFWFBFQ1RfUFJFRF9G
T1JNQVQzKEhhc09uZUZhaWx1cmUsICpyZXN1bHRzXywgdHlwZV8sIHN1YnN0cl8uY19zdHIoKSk7
CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDMoSGFzT25lRmFpbHVyZSwgKnJlc3VsdHNfLCB0eXBlXywg
c3Vic3RyXyk7CiB9CiAKIERlZmF1bHRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpEZWZh
dWx0R2xvYmFsVGVzdFBhcnRSZXN1bHRSZXBvcnRlcigKQEAgLTcwOSwxMSArODAxLDIyIEBAIGlu
dCBVbml0VGVzdEltcGw6OmZhaWxlZF90ZXN0X2NvdW50KCkgY29uc3QgewogICByZXR1cm4gU3Vt
T3ZlclRlc3RDYXNlTGlzdCh0ZXN0X2Nhc2VzXywgJlRlc3RDYXNlOjpmYWlsZWRfdGVzdF9jb3Vu
dCk7CiB9CiAKKy8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB0aGF0IHdpbGwg
YmUgcmVwb3J0ZWQgaW4gdGhlIFhNTCByZXBvcnQuCitpbnQgVW5pdFRlc3RJbXBsOjpyZXBvcnRh
YmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBTdW1PdmVyVGVzdENh
c2VMaXN0KHRlc3RfY2FzZXNfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmVGVzdENh
c2U6OnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCk7Cit9CisKIC8vIEdldHMgdGhlIG51
bWJlciBvZiBkaXNhYmxlZCB0ZXN0cy4KIGludCBVbml0VGVzdEltcGw6OmRpc2FibGVkX3Rlc3Rf
Y291bnQoKSBjb25zdCB7CiAgIHJldHVybiBTdW1PdmVyVGVzdENhc2VMaXN0KHRlc3RfY2FzZXNf
LCAmVGVzdENhc2U6OmRpc2FibGVkX3Rlc3RfY291bnQpOwogfQogCisvLyBHZXRzIHRoZSBudW1i
ZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KK2ludCBVbml0VGVz
dEltcGw6OnJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNvbnN0IHsKKyAgcmV0dXJuIFN1bU92ZXJU
ZXN0Q2FzZUxpc3QodGVzdF9jYXNlc18sICZUZXN0Q2FzZTo6cmVwb3J0YWJsZV90ZXN0X2NvdW50
KTsKK30KKwogLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0cy4KIGludCBVbml0VGVzdElt
cGw6OnRvdGFsX3Rlc3RfY291bnQoKSBjb25zdCB7CiAgIHJldHVybiBTdW1PdmVyVGVzdENhc2VM
aXN0KHRlc3RfY2FzZXNfLCAmVGVzdENhc2U6OnRvdGFsX3Rlc3RfY291bnQpOwpAQCAtNzI0LDcg
KzgyNyw3IEBAIGludCBVbml0VGVzdEltcGw6OnRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3Qgewog
ICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0ZXN0X2Nhc2VzXywgJlRlc3RDYXNlOjp0ZXN0
X3RvX3J1bl9jb3VudCk7CiB9CiAKLS8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJh
Y2UgYXMgYSBTdHJpbmcuCisvLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFz
IGFuIHN0ZDo6c3RyaW5nLgogLy8KIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFt
ZXMgdG8gYmUgaW5jbHVkZWQgaXMgc3BlY2lmaWVkIGJ5CiAvLyB0aGUgZ3Rlc3Rfc3RhY2tfdHJh
Y2VfZGVwdGggZmxhZy4gIFRoZSBza2lwX2NvdW50IHBhcmFtZXRlcgpAQCAtNzM0LDkgKzgzNywx
MyBAQCBpbnQgVW5pdFRlc3RJbXBsOjp0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0IHsKIC8vIEZv
ciBleGFtcGxlLCBpZiBGb28oKSBjYWxscyBCYXIoKSwgd2hpY2ggaW4gdHVybiBjYWxscwogLy8g
Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgxKSwgRm9vKCkgd2lsbCBiZSBpbmNsdWRlZCBp
biB0aGUKIC8vIHRyYWNlIGJ1dCBCYXIoKSBhbmQgQ3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRv
cCgpIHdvbid0LgotU3RyaW5nIFVuaXRUZXN0SW1wbDo6Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2Vw
dFRvcChpbnQgc2tpcF9jb3VudCkgewotICAodm9pZClza2lwX2NvdW50OwotICByZXR1cm4gU3Ry
aW5nKCIiKTsKK3N0ZDo6c3RyaW5nIFVuaXRUZXN0SW1wbDo6Q3VycmVudE9zU3RhY2tUcmFjZUV4
Y2VwdFRvcChpbnQgc2tpcF9jb3VudCkgeworICByZXR1cm4gb3Nfc3RhY2tfdHJhY2VfZ2V0dGVy
KCktPkN1cnJlbnRTdGFja1RyYWNlKAorICAgICAgc3RhdGljX2Nhc3Q8aW50PihHVEVTVF9GTEFH
KHN0YWNrX3RyYWNlX2RlcHRoKSksCisgICAgICBza2lwX2NvdW50ICsgMQorICAgICAgLy8gU2tp
cHMgdGhlIHVzZXItc3BlY2lmaWVkIG51bWJlciBvZiBmcmFtZXMgcGx1cyB0aGlzIGZ1bmN0aW9u
CisgICAgICAvLyBpdHNlbGYuCisgICAgICApOyAgLy8gTk9MSU5UCiB9CiAKIC8vIFJldHVybnMg
dGhlIGN1cnJlbnQgdGltZSBpbiBtaWxsaXNlY29uZHMuCkBAIC03NTEsNyArODU4LDcgQEAgVGlt
ZUluTWlsbGlzIEdldFRpbWVJbk1pbGxpcygpIHsKICAgU1lTVEVNVElNRSBub3dfc3lzdGltZTsK
ICAgRklMRVRJTUUgbm93X2ZpbGV0aW1lOwogICBVTEFSR0VfSU5URUdFUiBub3dfaW50NjQ7Ci0g
IC8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBTaG91bGRuJ3QgdGhpcyBqdXN0IHVzZQorICAv
LyBGSVhNRTogU2hvdWxkbid0IHRoaXMganVzdCB1c2UKICAgLy8gICBHZXRTeXN0ZW1UaW1lQXNG
aWxlVGltZSgpPwogICBHZXRTeXN0ZW1UaW1lKCZub3dfc3lzdGltZSk7CiAgIGlmIChTeXN0ZW1U
aW1lVG9GaWxlVGltZSgmbm93X3N5c3RpbWUsICZub3dfZmlsZXRpbWUpKSB7CkBAIC03NjQsNjUg
Kzg3MSwyOCBAQCBUaW1lSW5NaWxsaXMgR2V0VGltZUluTWlsbGlzKCkgewogICByZXR1cm4gMDsK
ICNlbGlmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX0hBU19HRVRUSU1FT0ZEQVlfCiAgIF9f
dGltZWI2NCBub3c7Ci0jaWZkZWYgX01TQ19WRVIKKwogICAvLyBNU1ZDIDggZGVwcmVjYXRlcyBf
ZnRpbWU2NCgpLCBzbyB3ZSB3YW50IHRvIHN1cHByZXNzIHdhcm5pbmcgNDk5NgogICAvLyAoZGVw
cmVjYXRlZCBmdW5jdGlvbikgdGhlcmUuCi0gIC8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBV
c2UgR2V0VGlja0NvdW50KCk/ICBPciB1c2UKKyAgLy8gRklYTUU6IFVzZSBHZXRUaWNrQ291bnQo
KT8gIE9yIHVzZQogICAvLyAgIFN5c3RlbVRpbWVUb0ZpbGVUaW1lKCkKLSNwcmFnbWEgd2Fybmlu
ZyhwdXNoKSAgICAgICAgICAvLyBTYXZlcyB0aGUgY3VycmVudCB3YXJuaW5nIHN0YXRlLgotI3By
YWdtYSB3YXJuaW5nKGRpc2FibGU6NDk5NikgIC8vIFRlbXBvcmFyaWx5IGRpc2FibGVzIHdhcm5p
bmcgNDk5Ni4KKyAgR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRFRF9QVVNIXygpCiAgIF9mdGlt
ZTY0KCZub3cpOwotI3ByYWdtYSB3YXJuaW5nKHBvcCkgICAgICAgICAgIC8vIFJlc3RvcmVzIHRo
ZSB3YXJuaW5nIHN0YXRlLgotI2Vsc2UKLSAgX2Z0aW1lNjQoJm5vdyk7Ci0jZW5kaWYgIC8vIF9N
U0NfVkVSCisgIEdURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUE9QXygpCisKICAgcmV0dXJu
IHN0YXRpY19jYXN0PFRpbWVJbk1pbGxpcz4obm93LnRpbWUpICogMTAwMCArIG5vdy5taWxsaXRt
OwogI2VsaWYgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8KICAgc3RydWN0IHRpbWV2YWwgbm93Owog
ICBnZXR0aW1lb2ZkYXkoJm5vdywgTlVMTCk7CiAgIHJldHVybiBzdGF0aWNfY2FzdDxUaW1lSW5N
aWxsaXM+KG5vdy50dl9zZWMpICogMTAwMCArIG5vdy50dl91c2VjIC8gMTAwMDsKICNlbHNlCi0j
ZXJyb3IgIkRvbid0IGtub3cgaG93IHRvIGdldCB0aGUgY3VycmVudCB0aW1lIG9uIHlvdXIgc3lz
dGVtLiIKKyMgZXJyb3IgIkRvbid0IGtub3cgaG93IHRvIGdldCB0aGUgY3VycmVudCB0aW1lIG9u
IHlvdXIgc3lzdGVtLiIKICNlbmRpZgogfQogCiAvLyBVdGlsaXRpZXMKIAotLy8gY2xhc3MgU3Ry
aW5nCi0KLS8vIFJldHVybnMgdGhlIGlucHV0IGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZXMgaWYg
aXQncyBub3QgTlVMTDsKLS8vIG90aGVyd2lzZSByZXR1cm5zICIobnVsbCkiLiAgRm9yIGV4YW1w
bGUsICJcIkhlbGxvXCIiIGlzIHJldHVybmVkCi0vLyBmb3IgaW5wdXQgIkhlbGxvIi4KLS8vCi0v
LyBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJpbnRpbmcgYSBDIHN0cmluZyBpbiB0aGUgc3ludGF4IG9m
IGEgbGl0ZXJhbC4KLS8vCi0vLyBLbm93biBpc3N1ZTogZXNjYXBlIHNlcXVlbmNlcyBhcmUgbm90
IGhhbmRsZWQgeWV0LgotU3RyaW5nIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQoY29uc3QgY2hh
ciogY19zdHIpIHsKLSAgcmV0dXJuIGNfc3RyID8gU3RyaW5nOjpGb3JtYXQoIlwiJXNcIiIsIGNf
c3RyKSA6IFN0cmluZygiKG51bGwpIik7Ci19Ci0KLS8vIENvcGllcyBhdCBtb3N0IGxlbmd0aCBj
aGFyYWN0ZXJzIGZyb20gc3RyIGludG8gYSBuZXdseS1hbGxvY2F0ZWQKLS8vIHBpZWNlIG9mIG1l
bW9yeSBvZiBzaXplIGxlbmd0aCsxLiAgVGhlIG1lbW9yeSBpcyBhbGxvY2F0ZWQgd2l0aCBuZXdb
XS4KLS8vIEEgdGVybWluYXRpbmcgbnVsbCBieXRlIGlzIHdyaXR0ZW4gdG8gdGhlIG1lbW9yeSwg
YW5kIGEgcG9pbnRlciB0byBpdAotLy8gaXMgcmV0dXJuZWQuICBJZiBzdHIgaXMgTlVMTCwgTlVM
TCBpcyByZXR1cm5lZC4KLXN0YXRpYyBjaGFyKiBDbG9uZVN0cmluZyhjb25zdCBjaGFyKiBzdHIs
IHNpemVfdCBsZW5ndGgpIHsKLSAgaWYgKHN0ciA9PSBOVUxMKSB7Ci0gICAgcmV0dXJuIE5VTEw7
Ci0gIH0gZWxzZSB7Ci0gICAgY2hhciogY29uc3QgY2xvbmUgPSBuZXcgY2hhcltsZW5ndGggKyAx
XTsKLSAgICBwb3NpeDo6U3RyTkNweShjbG9uZSwgc3RyLCBsZW5ndGgpOwotICAgIGNsb25lW2xl
bmd0aF0gPSAnXDAnOwotICAgIHJldHVybiBjbG9uZTsKLSAgfQotfQotCi0vLyBDbG9uZXMgYSAw
LXRlcm1pbmF0ZWQgQyBzdHJpbmcsIGFsbG9jYXRpbmcgbWVtb3J5IHVzaW5nIG5ldy4gIFRoZQot
Ly8gY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZ1tdIHRoZSByZXR1cm4gdmFsdWUu
ICBSZXR1cm5zIHRoZQotLy8gY2xvbmVkIHN0cmluZywgb3IgTlVMTCBpZiB0aGUgaW5wdXQgaXMg
TlVMTC4KLWNvbnN0IGNoYXIgKiBTdHJpbmc6OkNsb25lQ1N0cmluZyhjb25zdCBjaGFyKiBjX3N0
cikgewotICByZXR1cm4gKGNfc3RyID09IE5VTEwpID8KLSAgICAgICAgICAgICAgICAgICAgTlVM
TCA6IENsb25lU3RyaW5nKGNfc3RyLCBzdHJsZW4oY19zdHIpKTsKLX0KKy8vIGNsYXNzIFN0cmlu
Zy4KIAogI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAvLyBDcmVhdGVzIGEgVVRGLTE2IHdp
ZGUgc3RyaW5nIGZyb20gdGhlIGdpdmVuIEFOU0kgc3RyaW5nLCBhbGxvY2F0aW5nCkBAIC04Nzks
MTEgKzk0OSw2IEBAIGJvb2wgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKGNvbnN0IGNoYXIgKiBsaHMs
IGNvbnN0IGNoYXIgKiByaHMpIHsKIC8vIGVuY29kaW5nLCBhbmQgc3RyZWFtcyB0aGUgcmVzdWx0
IHRvIHRoZSBnaXZlbiBNZXNzYWdlIG9iamVjdC4KIHN0YXRpYyB2b2lkIFN0cmVhbVdpZGVDaGFy
c1RvTWVzc2FnZShjb25zdCB3Y2hhcl90KiB3c3RyLCBzaXplX3QgbGVuZ3RoLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UqIG1zZykgewotICAvLyBUT0RPKHdh
bik6IGNvbnNpZGVyIGFsbG93aW5nIGEgdGVzdGluZzo6U3RyaW5nIG9iamVjdCB0bwotICAvLyBj
b250YWluICdcMCcuICBUaGlzIHdpbGwgbWFrZSBpdCBiZWhhdmUgbW9yZSBsaWtlIHN0ZDo6c3Ry
aW5nLAotICAvLyBhbmQgd2lsbCBhbGxvdyBUb1V0ZjhTdHJpbmcoKSB0byByZXR1cm4gdGhlIGNv
cnJlY3QgZW5jb2RpbmcKLSAgLy8gZm9yICdcMCcgcy50LiB3ZSBjYW4gZ2V0IHJpZCBvZiB0aGUg
Y29uZGl0aW9uYWwgaGVyZSAoYW5kIGluCi0gIC8vIHNldmVyYWwgb3RoZXIgcGxhY2VzKS4KICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgIT0gbGVuZ3RoOyApIHsgIC8vIE5PTElOVAogICAgIGlmICh3
c3RyW2ldICE9IEwnXDAnKSB7CiAgICAgICAqbXNnIDw8IFdpZGVTdHJpbmdUb1V0Zjgod3N0ciAr
IGksIHN0YXRpY19jYXN0PGludD4obGVuZ3RoIC0gaSkpOwpAQCAtODk4LDggKzk2Myw0NSBAQCBz
dGF0aWMgdm9pZCBTdHJlYW1XaWRlQ2hhcnNUb01lc3NhZ2UoY29uc3Qgd2NoYXJfdCogd3N0ciwg
c2l6ZV90IGxlbmd0aCwKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcgfHwgR1RF
U1RfSEFTX0dMT0JBTF9XU1RSSU5HCiAKK3ZvaWQgU3BsaXRTdHJpbmcoY29uc3QgOjpzdGQ6OnN0
cmluZyYgc3RyLCBjaGFyIGRlbGltaXRlciwKKyAgICAgICAgICAgICAgICAgOjpzdGQ6OnZlY3Rv
cjwgOjpzdGQ6OnN0cmluZz4qIGRlc3QpIHsKKyAgOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmlu
Zz4gcGFyc2VkOworICA6OnN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgcG9zID0gMDsKKyAgd2hpbGUg
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeworICAgIGNvbnN0IDo6c3RkOjpz
dHJpbmc6OnNpemVfdHlwZSBjb2xvbiA9IHN0ci5maW5kKGRlbGltaXRlciwgcG9zKTsKKyAgICBp
ZiAoY29sb24gPT0gOjpzdGQ6OnN0cmluZzo6bnBvcykgeworICAgICAgcGFyc2VkLnB1c2hfYmFj
ayhzdHIuc3Vic3RyKHBvcykpOworICAgICAgYnJlYWs7CisgICAgfSBlbHNlIHsKKyAgICAgIHBh
cnNlZC5wdXNoX2JhY2soc3RyLnN1YnN0cihwb3MsIGNvbG9uIC0gcG9zKSk7CisgICAgICBwb3Mg
PSBjb2xvbiArIDE7CisgICAgfQorICB9CisgIGRlc3QtPnN3YXAocGFyc2VkKTsKK30KKwogfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCiAKKy8vIENvbnN0cnVjdHMgYW4gZW1wdHkgTWVzc2FnZS4K
Ky8vIFdlIGFsbG9jYXRlIHRoZSBzdHJpbmdzdHJlYW0gc2VwYXJhdGVseSBiZWNhdXNlIG90aGVy
d2lzZSBlYWNoIHVzZSBvZgorLy8gQVNTRVJUL0VYUEVDVCBpbiBhIHByb2NlZHVyZSBhZGRzIG92
ZXIgMjAwIGJ5dGVzIHRvIHRoZSBwcm9jZWR1cmUncworLy8gc3RhY2sgZnJhbWUgbGVhZGluZyB0
byBodWdlIHN0YWNrIGZyYW1lcyBpbiBzb21lIGNhc2VzOyBnY2MgZG9lcyBub3QgcmV1c2UKKy8v
IHRoZSBzdGFjayBzcGFjZS4KK01lc3NhZ2U6Ok1lc3NhZ2UoKSA6IHNzXyhuZXcgOjpzdGQ6OnN0
cmluZ3N0cmVhbSkgeworICAvLyBCeSBkZWZhdWx0LCB3ZSB3YW50IHRoZXJlIHRvIGJlIGVub3Vn
aCBwcmVjaXNpb24gd2hlbiBwcmludGluZworICAvLyBhIGRvdWJsZSB0byBhIE1lc3NhZ2UuCisg
ICpzc18gPDwgc3RkOjpzZXRwcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpk
aWdpdHMxMCArIDIpOworfQorCisvLyBUaGVzZSB0d28gb3ZlcmxvYWRzIGFsbG93IHN0cmVhbWlu
ZyBhIHdpZGUgQyBzdHJpbmcgdG8gYSBNZXNzYWdlCisvLyB1c2luZyB0aGUgVVRGLTggZW5jb2Rp
bmcuCitNZXNzYWdlJiBNZXNzYWdlOjpvcGVyYXRvciA8PChjb25zdCB3Y2hhcl90KiB3aWRlX2Nf
c3RyKSB7CisgIHJldHVybiAqdGhpcyA8PCBpbnRlcm5hbDo6U3RyaW5nOjpTaG93V2lkZUNTdHJp
bmcod2lkZV9jX3N0cik7Cit9CitNZXNzYWdlJiBNZXNzYWdlOjpvcGVyYXRvciA8PCh3Y2hhcl90
KiB3aWRlX2Nfc3RyKSB7CisgIHJldHVybiAqdGhpcyA8PCBpbnRlcm5hbDo6U3RyaW5nOjpTaG93
V2lkZUNTdHJpbmcod2lkZV9jX3N0cik7Cit9CisKICNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcK
IC8vIENvbnZlcnRzIHRoZSBnaXZlbiB3aWRlIHN0cmluZyB0byBhIG5hcnJvdyBzdHJpbmcgdXNp
bmcgdGhlIFVURi04CiAvLyBlbmNvZGluZywgYW5kIHN0cmVhbXMgdGhlIHJlc3VsdCB0byB0aGlz
IE1lc3NhZ2Ugb2JqZWN0LgpAQCAtOTE4LDU1ICsxMDIwLDI2IEBAIE1lc3NhZ2UmIE1lc3NhZ2U6
Om9wZXJhdG9yIDw8KGNvbnN0IDo6d3N0cmluZyYgd3N0cikgewogfQogI2VuZGlmICAvLyBHVEVT
VF9IQVNfR0xPQkFMX1dTVFJJTkcKIAotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8gRm9ybWF0
cyBhIHZhbHVlIHRvIGJlIHVzZWQgaW4gYSBmYWlsdXJlIG1lc3NhZ2UuCi0KLS8vIEZvciBhIGNo
YXIgdmFsdWUsIHdlIHByaW50IGl0IGFzIGEgQysrIGNoYXIgbGl0ZXJhbCBhbmQgYXMgYW4KLS8v
IHVuc2lnbmVkIGludGVnZXIgKGJvdGggaW4gZGVjaW1hbCBhbmQgaW4gaGV4YWRlY2ltYWwpLgot
U3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKGNoYXIgY2gpIHsKLSAgY29uc3QgdW5zaWdu
ZWQgaW50IGNoX2FzX3VpbnQgPSBjaDsKLSAgLy8gQSBTdHJpbmcgb2JqZWN0IGNhbm5vdCBjb250
YWluICdcMCcsIHNvIHdlIHByaW50ICJcXDAiIHdoZW4gY2ggaXMKLSAgLy8gJ1wwJy4KLSAgcmV0
dXJuIFN0cmluZzo6Rm9ybWF0KCInJXMnICgldSwgMHglWCkiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgY2ggPyBTdHJpbmc6OkZvcm1hdCgiJWMiLCBjaCkuY19zdHIoKSA6ICJcXDAiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgY2hfYXNfdWludCwgY2hfYXNfdWludCk7Ci19Ci0KLS8vIEZv
ciBhIHdjaGFyX3QgdmFsdWUsIHdlIHByaW50IGl0IGFzIGEgQysrIHdjaGFyX3QgbGl0ZXJhbCBh
bmQgYXMgYW4KLS8vIHVuc2lnbmVkIGludGVnZXIgKGJvdGggaW4gZGVjaW1hbCBhbmQgaW4gaGV4
aWRlY2ltYWwpLgotU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKHdjaGFyX3Qgd2NoYXIp
IHsKLSAgLy8gVGhlIEMrKyBzdGFuZGFyZCBkb2Vzbid0IHNwZWNpZnkgdGhlIGV4YWN0IHNpemUg
b2YgdGhlIHdjaGFyX3QKLSAgLy8gdHlwZS4gIEl0IGp1c3Qgc2F5cyB0aGF0IGl0IHNoYWxsIGhh
dmUgdGhlIHNhbWUgc2l6ZSBhcyBhbm90aGVyCi0gIC8vIGludGVncmFsIHR5cGUsIGNhbGxlZCBp
dHMgdW5kZXJseWluZyB0eXBlLgotICAvLwotICAvLyBUaGVyZWZvcmUsIGluIG9yZGVyIHRvIHBy
aW50IGEgd2NoYXJfdCB2YWx1ZSBpbiB0aGUgbnVtZXJpYyBmb3JtLAotICAvLyB3ZSBmaXJzdCBj
b252ZXJ0IGl0IHRvIHRoZSBsYXJnZXN0IGludGVncmFsIHR5cGUgKFVJbnQ2NCkgYW5kCi0gIC8v
IHRoZW4gcHJpbnQgdGhlIGNvbnZlcnRlZCB2YWx1ZS4KLSAgLy8KLSAgLy8gV2UgdXNlIHN0cmVh
bWluZyB0byBwcmludCB0aGUgdmFsdWUgYXMgIiVsbHUiIGRvZXNuJ3Qgd29yawotICAvLyBjb3Jy
ZWN0bHkgd2l0aCBNU1ZDIDcuMS4KLSAgY29uc3QgVUludDY0IHdjaGFyX2FzX3VpbnQ2NCA9IHdj
aGFyOwotICBNZXNzYWdlIG1zZzsKLSAgLy8gQSBTdHJpbmcgb2JqZWN0IGNhbm5vdCBjb250YWlu
ICdcMCcsIHNvIHdlIHByaW50ICJcXDAiIHdoZW4gd2NoYXIgaXMKLSAgLy8gTCdcMCcuCi0gIGNo
YXIgYnVmZmVyWzMyXTsgIC8vIENvZGVQb2ludFRvVXRmOCByZXF1aXJlcyBhIGJ1ZmZlciB0aGF0
IGJpZy4KLSAgbXNnIDw8ICJMJyIKLSAgICAgIDw8ICh3Y2hhciA/IENvZGVQb2ludFRvVXRmOChz
dGF0aWNfY2FzdDxVSW50MzI+KHdjaGFyKSwgYnVmZmVyKSA6ICJcXDAiKQotICAgICAgPDwgIicg
KCIgPDwgd2NoYXJfYXNfdWludDY0IDw8ICIsIDB4IiA8PCA6OnN0ZDo6c2V0YmFzZSgxNikKLSAg
ICAgIDw8IHdjaGFyX2FzX3VpbnQ2NCA8PCAiKSI7Ci0gIHJldHVybiBtc2cuR2V0U3RyaW5nKCk7
CisvLyBHZXRzIHRoZSB0ZXh0IHN0cmVhbWVkIHRvIHRoaXMgb2JqZWN0IHNvIGZhciBhcyBhbiBz
dGQ6OnN0cmluZy4KKy8vIEVhY2ggJ1wwJyBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlciBpcyByZXBs
YWNlZCB3aXRoICJcXDAiLgorc3RkOjpzdHJpbmcgTWVzc2FnZTo6R2V0U3RyaW5nKCkgY29uc3Qg
eworICByZXR1cm4gaW50ZXJuYWw6OlN0cmluZ1N0cmVhbVRvU3RyaW5nKHNzXy5nZXQoKSk7CiB9
CiAKLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCiAvLyBBc3NlcnRpb25SZXN1bHQgY29uc3Ry
dWN0b3JzLgogLy8gVXNlZCBpbiBFWFBFQ1RfVFJVRS9GQUxTRShhc3NlcnRpb25fcmVzdWx0KS4K
IEFzc2VydGlvblJlc3VsdDo6QXNzZXJ0aW9uUmVzdWx0KGNvbnN0IEFzc2VydGlvblJlc3VsdCYg
b3RoZXIpCiAgICAgOiBzdWNjZXNzXyhvdGhlci5zdWNjZXNzXyksCiAgICAgICBtZXNzYWdlXyhv
dGhlci5tZXNzYWdlXy5nZXQoKSAhPSBOVUxMID8KLSAgICAgICAgICAgICAgIG5ldyBpbnRlcm5h
bDo6U3RyaW5nKCpvdGhlci5tZXNzYWdlXykgOgotICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
aW50ZXJuYWw6OlN0cmluZyo+KE5VTEwpKSB7CisgICAgICAgICAgICAgICBuZXcgOjpzdGQ6OnN0
cmluZygqb3RoZXIubWVzc2FnZV8pIDoKKyAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PCA6OnN0
ZDo6c3RyaW5nKj4oTlVMTCkpIHsKK30KKworLy8gU3dhcHMgdHdvIEFzc2VydGlvblJlc3VsdHMu
Cit2b2lkIEFzc2VydGlvblJlc3VsdDo6c3dhcChBc3NlcnRpb25SZXN1bHQmIG90aGVyKSB7Cisg
IHVzaW5nIHN0ZDo6c3dhcDsKKyAgc3dhcChzdWNjZXNzXywgb3RoZXIuc3VjY2Vzc18pOworICBz
d2FwKG1lc3NhZ2VfLCBvdGhlci5tZXNzYWdlXyk7CiB9CiAKIC8vIFJldHVybnMgdGhlIGFzc2Vy
dGlvbidzIG5lZ2F0aW9uLiBVc2VkIHdpdGggRVhQRUNUL0FTU0VSVF9GQUxTRS4KQEAgLTk5NSw2
ICsxMDY4LDI3NiBAQCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uRmFpbHVyZShjb25zdCBNZXNz
YWdlJiBtZXNzYWdlKSB7CiAKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKK25hbWVzcGFjZSBlZGl0
X2Rpc3RhbmNlIHsKK3N0ZDo6dmVjdG9yPEVkaXRUeXBlPiBDYWxjdWxhdGVPcHRpbWFsRWRpdHMo
Y29uc3Qgc3RkOjp2ZWN0b3I8c2l6ZV90PiYgbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2l6ZV90PiYgcmlnaHQpIHsK
KyAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZG91YmxlPiA+IGNvc3RzKAorICAgICAgbGVmdC5z
aXplKCkgKyAxLCBzdGQ6OnZlY3Rvcjxkb3VibGU+KHJpZ2h0LnNpemUoKSArIDEpKTsKKyAgc3Rk
Ojp2ZWN0b3I8c3RkOjp2ZWN0b3I8RWRpdFR5cGU+ID4gYmVzdF9tb3ZlKAorICAgICAgbGVmdC5z
aXplKCkgKyAxLCBzdGQ6OnZlY3RvcjxFZGl0VHlwZT4ocmlnaHQuc2l6ZSgpICsgMSkpOworCisg
IC8vIFBvcHVsYXRlIGZvciBlbXB0eSByaWdodC4KKyAgZm9yIChzaXplX3QgbF9pID0gMDsgbF9p
IDwgY29zdHMuc2l6ZSgpOyArK2xfaSkgeworICAgIGNvc3RzW2xfaV1bMF0gPSBzdGF0aWNfY2Fz
dDxkb3VibGU+KGxfaSk7CisgICAgYmVzdF9tb3ZlW2xfaV1bMF0gPSBrUmVtb3ZlOworICB9Cisg
IC8vIFBvcHVsYXRlIGZvciBlbXB0eSBsZWZ0LgorICBmb3IgKHNpemVfdCByX2kgPSAxOyByX2kg
PCBjb3N0c1swXS5zaXplKCk7ICsrcl9pKSB7CisgICAgY29zdHNbMF1bcl9pXSA9IHN0YXRpY19j
YXN0PGRvdWJsZT4ocl9pKTsKKyAgICBiZXN0X21vdmVbMF1bcl9pXSA9IGtBZGQ7CisgIH0KKwor
ICBmb3IgKHNpemVfdCBsX2kgPSAwOyBsX2kgPCBsZWZ0LnNpemUoKTsgKytsX2kpIHsKKyAgICBm
b3IgKHNpemVfdCByX2kgPSAwOyByX2kgPCByaWdodC5zaXplKCk7ICsrcl9pKSB7CisgICAgICBp
ZiAobGVmdFtsX2ldID09IHJpZ2h0W3JfaV0pIHsKKyAgICAgICAgLy8gRm91bmQgYSBtYXRjaC4g
Q29uc3VtZSBpdC4KKyAgICAgICAgY29zdHNbbF9pICsgMV1bcl9pICsgMV0gPSBjb3N0c1tsX2ld
W3JfaV07CisgICAgICAgIGJlc3RfbW92ZVtsX2kgKyAxXVtyX2kgKyAxXSA9IGtNYXRjaDsKKyAg
ICAgICAgY29udGludWU7CisgICAgICB9CisKKyAgICAgIGNvbnN0IGRvdWJsZSBhZGQgPSBjb3N0
c1tsX2kgKyAxXVtyX2ldOworICAgICAgY29uc3QgZG91YmxlIHJlbW92ZSA9IGNvc3RzW2xfaV1b
cl9pICsgMV07CisgICAgICBjb25zdCBkb3VibGUgcmVwbGFjZSA9IGNvc3RzW2xfaV1bcl9pXTsK
KyAgICAgIGlmIChhZGQgPCByZW1vdmUgJiYgYWRkIDwgcmVwbGFjZSkgeworICAgICAgICBjb3N0
c1tsX2kgKyAxXVtyX2kgKyAxXSA9IGFkZCArIDE7CisgICAgICAgIGJlc3RfbW92ZVtsX2kgKyAx
XVtyX2kgKyAxXSA9IGtBZGQ7CisgICAgICB9IGVsc2UgaWYgKHJlbW92ZSA8IGFkZCAmJiByZW1v
dmUgPCByZXBsYWNlKSB7CisgICAgICAgIGNvc3RzW2xfaSArIDFdW3JfaSArIDFdID0gcmVtb3Zl
ICsgMTsKKyAgICAgICAgYmVzdF9tb3ZlW2xfaSArIDFdW3JfaSArIDFdID0ga1JlbW92ZTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFdlIG1ha2UgcmVwbGFjZSBhIGxpdHRsZSBtb3JlIGV4
cGVuc2l2ZSB0aGFuIGFkZC9yZW1vdmUgdG8gbG93ZXIKKyAgICAgICAgLy8gdGhlaXIgcHJpb3Jp
dHkuCisgICAgICAgIGNvc3RzW2xfaSArIDFdW3JfaSArIDFdID0gcmVwbGFjZSArIDEuMDAwMDE7
CisgICAgICAgIGJlc3RfbW92ZVtsX2kgKyAxXVtyX2kgKyAxXSA9IGtSZXBsYWNlOworICAgICAg
fQorICAgIH0KKyAgfQorCisgIC8vIFJlY29uc3RydWN0IHRoZSBiZXN0IHBhdGguIFdlIGRvIGl0
IGluIHJldmVyc2Ugb3JkZXIuCisgIHN0ZDo6dmVjdG9yPEVkaXRUeXBlPiBiZXN0X3BhdGg7Cisg
IGZvciAoc2l6ZV90IGxfaSA9IGxlZnQuc2l6ZSgpLCByX2kgPSByaWdodC5zaXplKCk7IGxfaSA+
IDAgfHwgcl9pID4gMDspIHsKKyAgICBFZGl0VHlwZSBtb3ZlID0gYmVzdF9tb3ZlW2xfaV1bcl9p
XTsKKyAgICBiZXN0X3BhdGgucHVzaF9iYWNrKG1vdmUpOworICAgIGxfaSAtPSBtb3ZlICE9IGtB
ZGQ7CisgICAgcl9pIC09IG1vdmUgIT0ga1JlbW92ZTsKKyAgfQorICBzdGQ6OnJldmVyc2UoYmVz
dF9wYXRoLmJlZ2luKCksIGJlc3RfcGF0aC5lbmQoKSk7CisgIHJldHVybiBiZXN0X3BhdGg7Cit9
CisKK25hbWVzcGFjZSB7CisKKy8vIEhlbHBlciBjbGFzcyB0byBjb252ZXJ0IHN0cmluZyBpbnRv
IGlkcyB3aXRoIGRlZHVwbGljYXRpb24uCitjbGFzcyBJbnRlcm5hbFN0cmluZ3MgeworIHB1Ymxp
YzoKKyAgc2l6ZV90IEdldElkKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKKyAgICBJZE1hcDo6
aXRlcmF0b3IgaXQgPSBpZHNfLmZpbmQoc3RyKTsKKyAgICBpZiAoaXQgIT0gaWRzXy5lbmQoKSkg
cmV0dXJuIGl0LT5zZWNvbmQ7CisgICAgc2l6ZV90IGlkID0gaWRzXy5zaXplKCk7CisgICAgcmV0
dXJuIGlkc19bc3RyXSA9IGlkOworICB9CisKKyBwcml2YXRlOgorICB0eXBlZGVmIHN0ZDo6bWFw
PHN0ZDo6c3RyaW5nLCBzaXplX3Q+IElkTWFwOworICBJZE1hcCBpZHNfOworfTsKKworfSAgLy8g
bmFtZXNwYWNlCisKK3N0ZDo6dmVjdG9yPEVkaXRUeXBlPiBDYWxjdWxhdGVPcHRpbWFsRWRpdHMo
CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBsZWZ0LAorICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgcmlnaHQpIHsKKyAgc3RkOjp2ZWN0b3I8c2l6ZV90PiBs
ZWZ0X2lkcywgcmlnaHRfaWRzOworICB7CisgICAgSW50ZXJuYWxTdHJpbmdzIGludGVybl90YWJs
ZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlZnQuc2l6ZSgpOyArK2kpIHsKKyAgICAg
IGxlZnRfaWRzLnB1c2hfYmFjayhpbnRlcm5fdGFibGUuR2V0SWQobGVmdFtpXSkpOworICAgIH0K
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJpZ2h0LnNpemUoKTsgKytpKSB7CisgICAgICBy
aWdodF9pZHMucHVzaF9iYWNrKGludGVybl90YWJsZS5HZXRJZChyaWdodFtpXSkpOworICAgIH0K
KyAgfQorICByZXR1cm4gQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKGxlZnRfaWRzLCByaWdodF9pZHMp
OworfQorCituYW1lc3BhY2UgeworCisvLyBIZWxwZXIgY2xhc3MgdGhhdCBob2xkcyB0aGUgc3Rh
dGUgZm9yIG9uZSBodW5rIGFuZCBwcmludHMgaXQgb3V0IHRvIHRoZQorLy8gc3RyZWFtLgorLy8g
SXQgcmVvcmRlcnMgYWRkcy9yZW1vdmVzIHdoZW4gcG9zc2libGUgdG8gZ3JvdXAgYWxsIHJlbW92
ZXMgYmVmb3JlIGFsbAorLy8gYWRkcy4gSXQgYWxzbyBhZGRzIHRoZSBodW5rIGhlYWRlciBiZWZv
cmUgcHJpbnRpbnQgaW50byB0aGUgc3RyZWFtLgorY2xhc3MgSHVuayB7CisgcHVibGljOgorICBI
dW5rKHNpemVfdCBsZWZ0X3N0YXJ0LCBzaXplX3QgcmlnaHRfc3RhcnQpCisgICAgICA6IGxlZnRf
c3RhcnRfKGxlZnRfc3RhcnQpLAorICAgICAgICByaWdodF9zdGFydF8ocmlnaHRfc3RhcnQpLAor
ICAgICAgICBhZGRzXygpLAorICAgICAgICByZW1vdmVzXygpLAorICAgICAgICBjb21tb25fKCkg
e30KKworICB2b2lkIFB1c2hMaW5lKGNoYXIgZWRpdCwgY29uc3QgY2hhciogbGluZSkgeworICAg
IHN3aXRjaCAoZWRpdCkgeworICAgICAgY2FzZSAnICc6CisgICAgICAgICsrY29tbW9uXzsKKyAg
ICAgICAgRmx1c2hFZGl0cygpOworICAgICAgICBodW5rXy5wdXNoX2JhY2soc3RkOjptYWtlX3Bh
aXIoJyAnLCBsaW5lKSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnLSc6CisgICAgICAg
ICsrcmVtb3Zlc187CisgICAgICAgIGh1bmtfcmVtb3Zlc18ucHVzaF9iYWNrKHN0ZDo6bWFrZV9w
YWlyKCctJywgbGluZSkpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJysnOgorICAgICAg
ICArK2FkZHNfOworICAgICAgICBodW5rX2FkZHNfLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcign
KycsIGxpbmUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICB9CisKKyAgdm9pZCBQcmludFRv
KHN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBQcmludEhlYWRlcihvcyk7CisgICAgRmx1c2hFZGl0
cygpOworICAgIGZvciAoc3RkOjpsaXN0PHN0ZDo6cGFpcjxjaGFyLCBjb25zdCBjaGFyKj4gPjo6
Y29uc3RfaXRlcmF0b3IgaXQgPQorICAgICAgICAgICAgIGh1bmtfLmJlZ2luKCk7CisgICAgICAg
ICBpdCAhPSBodW5rXy5lbmQoKTsgKytpdCkgeworICAgICAgKm9zIDw8IGl0LT5maXJzdCA8PCBp
dC0+c2Vjb25kIDw8ICJcbiI7CisgICAgfQorICB9CisKKyAgYm9vbCBoYXNfZWRpdHMoKSBjb25z
dCB7IHJldHVybiBhZGRzXyB8fCByZW1vdmVzXzsgfQorCisgcHJpdmF0ZToKKyAgdm9pZCBGbHVz
aEVkaXRzKCkgeworICAgIGh1bmtfLnNwbGljZShodW5rXy5lbmQoKSwgaHVua19yZW1vdmVzXyk7
CisgICAgaHVua18uc3BsaWNlKGh1bmtfLmVuZCgpLCBodW5rX2FkZHNfKTsKKyAgfQorCisgIC8v
IFByaW50IGEgdW5pZmllZCBkaWZmIGhlYWRlciBmb3Igb25lIGh1bmsuCisgIC8vIFRoZSBmb3Jt
YXQgaXMKKyAgLy8gICAiQEAgLTxsZWZ0X3N0YXJ0Piw8bGVmdF9sZW5ndGg+ICs8cmlnaHRfc3Rh
cnQ+LDxyaWdodF9sZW5ndGg+IEBAIgorICAvLyB3aGVyZSB0aGUgbGVmdC9yaWdodCBwYXJ0cyBh
cmUgb21pdHRlZCBpZiB1bm5lY2Vzc2FyeS4KKyAgdm9pZCBQcmludEhlYWRlcihzdGQ6Om9zdHJl
YW0qIHNzKSBjb25zdCB7CisgICAgKnNzIDw8ICJAQCAiOworICAgIGlmIChyZW1vdmVzXykgewor
ICAgICAgKnNzIDw8ICItIiA8PCBsZWZ0X3N0YXJ0XyA8PCAiLCIgPDwgKHJlbW92ZXNfICsgY29t
bW9uXyk7CisgICAgfQorICAgIGlmIChyZW1vdmVzXyAmJiBhZGRzXykgeworICAgICAgKnNzIDw8
ICIgIjsKKyAgICB9CisgICAgaWYgKGFkZHNfKSB7CisgICAgICAqc3MgPDwgIisiIDw8IHJpZ2h0
X3N0YXJ0XyA8PCAiLCIgPDwgKGFkZHNfICsgY29tbW9uXyk7CisgICAgfQorICAgICpzcyA8PCAi
IEBAXG4iOworICB9CisKKyAgc2l6ZV90IGxlZnRfc3RhcnRfLCByaWdodF9zdGFydF87CisgIHNp
emVfdCBhZGRzXywgcmVtb3Zlc18sIGNvbW1vbl87CisgIHN0ZDo6bGlzdDxzdGQ6OnBhaXI8Y2hh
ciwgY29uc3QgY2hhcio+ID4gaHVua18sIGh1bmtfYWRkc18sIGh1bmtfcmVtb3Zlc187Cit9Owor
Cit9ICAvLyBuYW1lc3BhY2UKKworLy8gQ3JlYXRlIGEgbGlzdCBvZiBkaWZmIGh1bmtzIGluIFVu
aWZpZWQgZGlmZiBmb3JtYXQuCisvLyBFYWNoIGh1bmsgaGFzIGEgaGVhZGVyIGdlbmVyYXRlZCBi
eSBQcmludEhlYWRlciBhYm92ZSBwbHVzIGEgYm9keSB3aXRoCisvLyBsaW5lcyBwcmVmaXhlZCB3
aXRoICcgJyBmb3Igbm8gY2hhbmdlLCAnLScgZm9yIGRlbGV0aW9uIGFuZCAnKycgZm9yCisvLyBh
ZGRpdGlvbi4KKy8vICdjb250ZXh0JyByZXByZXNlbnRzIHRoZSBkZXNpcmVkIHVuY2hhbmdlZCBw
cmVmaXgvc3VmZml4IGFyb3VuZCB0aGUgZGlmZi4KKy8vIElmIHR3byBodW5rcyBhcmUgY2xvc2Ug
ZW5vdWdoIHRoYXQgdGhlaXIgY29udGV4dHMgb3ZlcmxhcCwgdGhlbiB0aGV5IGFyZQorLy8gam9p
bmVkIGludG8gb25lIGh1bmsuCitzdGQ6OnN0cmluZyBDcmVhdGVVbmlmaWVkRGlmZihjb25zdCBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHJpZ2h0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvbnRleHQpIHsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8
RWRpdFR5cGU+IGVkaXRzID0gQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKGxlZnQsIHJpZ2h0KTsKKwor
ICBzaXplX3QgbF9pID0gMCwgcl9pID0gMCwgZWRpdF9pID0gMDsKKyAgc3RkOjpzdHJpbmdzdHJl
YW0gc3M7CisgIHdoaWxlIChlZGl0X2kgPCBlZGl0cy5zaXplKCkpIHsKKyAgICAvLyBGaW5kIGZp
cnN0IGVkaXQuCisgICAgd2hpbGUgKGVkaXRfaSA8IGVkaXRzLnNpemUoKSAmJiBlZGl0c1tlZGl0
X2ldID09IGtNYXRjaCkgeworICAgICAgKytsX2k7CisgICAgICArK3JfaTsKKyAgICAgICsrZWRp
dF9pOworICAgIH0KKworICAgIC8vIEZpbmQgdGhlIGZpcnN0IGxpbmUgdG8gaW5jbHVkZSBpbiB0
aGUgaHVuay4KKyAgICBjb25zdCBzaXplX3QgcHJlZml4X2NvbnRleHQgPSBzdGQ6Om1pbihsX2ks
IGNvbnRleHQpOworICAgIEh1bmsgaHVuayhsX2kgLSBwcmVmaXhfY29udGV4dCArIDEsIHJfaSAt
IHByZWZpeF9jb250ZXh0ICsgMSk7CisgICAgZm9yIChzaXplX3QgaSA9IHByZWZpeF9jb250ZXh0
OyBpID4gMDsgLS1pKSB7CisgICAgICBodW5rLlB1c2hMaW5lKCcgJywgbGVmdFtsX2kgLSBpXS5j
X3N0cigpKTsKKyAgICB9CisKKyAgICAvLyBJdGVyYXRlIHRoZSBlZGl0cyB1bnRpbCB3ZSBmb3Vu
ZCBlbm91Z2ggc3VmZml4IGZvciB0aGUgaHVuayBvciB0aGUgaW5wdXQKKyAgICAvLyBpcyBvdmVy
LgorICAgIHNpemVfdCBuX3N1ZmZpeCA9IDA7CisgICAgZm9yICg7IGVkaXRfaSA8IGVkaXRzLnNp
emUoKTsgKytlZGl0X2kpIHsKKyAgICAgIGlmIChuX3N1ZmZpeCA+PSBjb250ZXh0KSB7CisgICAg
ICAgIC8vIENvbnRpbnVlIG9ubHkgaWYgdGhlIG5leHQgaHVuayBpcyB2ZXJ5IGNsb3NlLgorICAg
ICAgICBzdGQ6OnZlY3RvcjxFZGl0VHlwZT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZWRpdHMuYmVn
aW4oKSArIGVkaXRfaTsKKyAgICAgICAgd2hpbGUgKGl0ICE9IGVkaXRzLmVuZCgpICYmICppdCA9
PSBrTWF0Y2gpICsraXQ7CisgICAgICAgIGlmIChpdCA9PSBlZGl0cy5lbmQoKSB8fCAoaXQgLSBl
ZGl0cy5iZWdpbigpKSAtIGVkaXRfaSA+PSBjb250ZXh0KSB7CisgICAgICAgICAgLy8gVGhlcmUg
aXMgbm8gbmV4dCBlZGl0IG9yIGl0IGlzIHRvbyBmYXIgYXdheS4KKyAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgfQorCisgICAgICBFZGl0VHlwZSBlZGl0ID0gZWRpdHNbZWRpdF9p
XTsKKyAgICAgIC8vIFJlc2V0IGNvdW50IHdoZW4gYSBub24gbWF0Y2ggaXMgZm91bmQuCisgICAg
ICBuX3N1ZmZpeCA9IGVkaXQgPT0ga01hdGNoID8gbl9zdWZmaXggKyAxIDogMDsKKworICAgICAg
aWYgKGVkaXQgPT0ga01hdGNoIHx8IGVkaXQgPT0ga1JlbW92ZSB8fCBlZGl0ID09IGtSZXBsYWNl
KSB7CisgICAgICAgIGh1bmsuUHVzaExpbmUoZWRpdCA9PSBrTWF0Y2ggPyAnICcgOiAnLScsIGxl
ZnRbbF9pXS5jX3N0cigpKTsKKyAgICAgIH0KKyAgICAgIGlmIChlZGl0ID09IGtBZGQgfHwgZWRp
dCA9PSBrUmVwbGFjZSkgeworICAgICAgICBodW5rLlB1c2hMaW5lKCcrJywgcmlnaHRbcl9pXS5j
X3N0cigpKTsKKyAgICAgIH0KKworICAgICAgLy8gQWR2YW5jZSBpbmRpY2VzLCBkZXBlbmRpbmcg
b24gZWRpdCB0eXBlLgorICAgICAgbF9pICs9IGVkaXQgIT0ga0FkZDsKKyAgICAgIHJfaSArPSBl
ZGl0ICE9IGtSZW1vdmU7CisgICAgfQorCisgICAgaWYgKCFodW5rLmhhc19lZGl0cygpKSB7Cisg
ICAgICAvLyBXZSBhcmUgZG9uZS4gV2UgZG9uJ3Qgd2FudCB0aGlzIGh1bmsuCisgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBodW5rLlByaW50VG8oJnNzKTsKKyAgfQorICByZXR1cm4gc3Muc3Ry
KCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBlZGl0X2Rpc3RhbmNlCisKK25hbWVzcGFjZSB7CisK
Ky8vIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZhbHVlcyByZWNlaXZlZCBpbiBF
cUZhaWx1cmUoKSBhcmUgYWxyZWFkeQorLy8gZXNjYXBlZC4gU3BsaXQgdGhlbSBvbiBlc2NhcGVk
ICdcbicgYm91bmRhcmllcy4gTGVhdmUgYWxsIG90aGVyIGVzY2FwZWQKKy8vIGNoYXJhY3RlcnMg
dGhlIHNhbWUuCitzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gU3BsaXRFc2NhcGVkU3RyaW5nKGNv
bnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGxpbmVz
OworICBzaXplX3Qgc3RhcnQgPSAwLCBlbmQgPSBzdHIuc2l6ZSgpOworICBpZiAoZW5kID4gMiAm
JiBzdHJbMF0gPT0gJyInICYmIHN0cltlbmQgLSAxXSA9PSAnIicpIHsKKyAgICArK3N0YXJ0Owor
ICAgIC0tZW5kOworICB9CisgIGJvb2wgZXNjYXBlZCA9IGZhbHNlOworICBmb3IgKHNpemVfdCBp
ID0gc3RhcnQ7IGkgKyAxIDwgZW5kOyArK2kpIHsKKyAgICBpZiAoZXNjYXBlZCkgeworICAgICAg
ZXNjYXBlZCA9IGZhbHNlOworICAgICAgaWYgKHN0cltpXSA9PSAnbicpIHsKKyAgICAgICAgbGlu
ZXMucHVzaF9iYWNrKHN0ci5zdWJzdHIoc3RhcnQsIGkgLSBzdGFydCAtIDEpKTsKKyAgICAgICAg
c3RhcnQgPSBpICsgMTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgZXNjYXBlZCA9IHN0
cltpXSA9PSAnXFwnOworICAgIH0KKyAgfQorICBsaW5lcy5wdXNoX2JhY2soc3RyLnN1YnN0cihz
dGFydCwgZW5kIC0gc3RhcnQpKTsKKyAgcmV0dXJuIGxpbmVzOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UKKwogLy8gQ29uc3RydWN0cyBhbmQgcmV0dXJucyB0aGUgbWVzc2FnZSBmb3IgYW4gZXF1YWxp
dHkgYXNzZXJ0aW9uCiAvLyAoZS5nLiBBU1NFUlRfRVEsIEVYUEVDVF9TVFJFUSwgZXRjKSBmYWls
dXJlLgogLy8KQEAgLTEwMDIsNDEgKzEzNDUsNTQgQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIC8v
IGFuZCB0aGVpciB2YWx1ZXMsIGFzIHN0cmluZ3MuICBGb3IgZXhhbXBsZSwgZm9yIEFTU0VSVF9F
UShmb28sIGJhcikKIC8vIHdoZXJlIGZvbyBpcyA1IGFuZCBiYXIgaXMgNiwgd2UgaGF2ZToKIC8v
Ci0vLyAgIGV4cGVjdGVkX2V4cHJlc3Npb246ICJmb28iCi0vLyAgIGFjdHVhbF9leHByZXNzaW9u
OiAgICJiYXIiCi0vLyAgIGV4cGVjdGVkX3ZhbHVlOiAgICAgICI1IgotLy8gICBhY3R1YWxfdmFs
dWU6ICAgICAgICAiNiIKKy8vICAgbGhzX2V4cHJlc3Npb246ICJmb28iCisvLyAgIHJoc19leHBy
ZXNzaW9uOiAiYmFyIgorLy8gICBsaHNfdmFsdWU6ICAgICAgIjUiCisvLyAgIHJoc192YWx1ZTog
ICAgICAiNiIKIC8vCiAvLyBUaGUgaWdub3JpbmdfY2FzZSBwYXJhbWV0ZXIgaXMgdHJ1ZSBpZmYg
dGhlIGFzc2VydGlvbiBpcyBhCi0vLyAqX1NUUkNBU0VFUSouICBXaGVuIGl0J3MgdHJ1ZSwgdGhl
IHN0cmluZyAiIChpZ25vcmluZyBjYXNlKSIgd2lsbAorLy8gKl9TVFJDQVNFRVEqLiAgV2hlbiBp
dCdzIHRydWUsIHRoZSBzdHJpbmcgIklnbm9yaW5nIGNhc2UiIHdpbGwKIC8vIGJlIGluc2VydGVk
IGludG8gdGhlIG1lc3NhZ2UuCi1Bc3NlcnRpb25SZXN1bHQgRXFGYWlsdXJlKGNvbnN0IGNoYXIq
IGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBT
dHJpbmcmIGV4cGVjdGVkX3ZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBT
dHJpbmcmIGFjdHVhbF92YWx1ZSwKK0Fzc2VydGlvblJlc3VsdCBFcUZhaWx1cmUoY29uc3QgY2hh
ciogbGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgbGhzX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgcmhzX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yaW5n
X2Nhc2UpIHsKICAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCAiVmFsdWUgb2Y6ICIgPDwgYWN0dWFs
X2V4cHJlc3Npb247Ci0gIGlmIChhY3R1YWxfdmFsdWUgIT0gYWN0dWFsX2V4cHJlc3Npb24pIHsK
LSAgICBtc2cgPDwgIlxuICBBY3R1YWw6ICIgPDwgYWN0dWFsX3ZhbHVlOworICBtc2cgPDwgIkV4
cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoiOworICBtc2cgPDwgIlxuICAiIDw8IGxo
c19leHByZXNzaW9uOworICBpZiAobGhzX3ZhbHVlICE9IGxoc19leHByZXNzaW9uKSB7CisgICAg
bXNnIDw8ICJcbiAgICBXaGljaCBpczogIiA8PCBsaHNfdmFsdWU7CisgIH0KKyAgbXNnIDw8ICJc
biAgIiA8PCByaHNfZXhwcmVzc2lvbjsKKyAgaWYgKHJoc192YWx1ZSAhPSByaHNfZXhwcmVzc2lv
bikgeworICAgIG1zZyA8PCAiXG4gICAgV2hpY2ggaXM6ICIgPDwgcmhzX3ZhbHVlOwogICB9CiAK
LSAgbXNnIDw8ICJcbkV4cGVjdGVkOiAiIDw8IGV4cGVjdGVkX2V4cHJlc3Npb247CiAgIGlmIChp
Z25vcmluZ19jYXNlKSB7Ci0gICAgbXNnIDw8ICIgKGlnbm9yaW5nIGNhc2UpIjsKKyAgICBtc2cg
PDwgIlxuSWdub3JpbmcgY2FzZSI7CiAgIH0KLSAgaWYgKGV4cGVjdGVkX3ZhbHVlICE9IGV4cGVj
dGVkX2V4cHJlc3Npb24pIHsKLSAgICBtc2cgPDwgIlxuV2hpY2ggaXM6ICIgPDwgZXhwZWN0ZWRf
dmFsdWU7CisKKyAgaWYgKCFsaHNfdmFsdWUuZW1wdHkoKSAmJiAhcmhzX3ZhbHVlLmVtcHR5KCkp
IHsKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbGhzX2xpbmVzID0KKyAgICAg
ICAgU3BsaXRFc2NhcGVkU3RyaW5nKGxoc192YWx1ZSk7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IHJoc19saW5lcyA9CisgICAgICAgIFNwbGl0RXNjYXBlZFN0cmluZyhyaHNf
dmFsdWUpOworICAgIGlmIChsaHNfbGluZXMuc2l6ZSgpID4gMSB8fCByaHNfbGluZXMuc2l6ZSgp
ID4gMSkgeworICAgICAgbXNnIDw8ICJcbldpdGggZGlmZjpcbiIKKyAgICAgICAgICA8PCBlZGl0
X2Rpc3RhbmNlOjpDcmVhdGVVbmlmaWVkRGlmZihsaHNfbGluZXMsIHJoc19saW5lcyk7CisgICAg
fQogICB9CiAKLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgcmV0dXJuIEFzc2Vy
dGlvbkZhaWx1cmUoKSA8PCBtc2c7CiB9CiAKIC8vIENvbnN0cnVjdHMgYSBmYWlsdXJlIG1lc3Nh
Z2UgZm9yIEJvb2xlYW4gYXNzZXJ0aW9ucyBzdWNoIGFzIEVYUEVDVF9UUlVFLgotU3RyaW5nIEdl
dEJvb2xBc3NlcnRpb25GYWlsdXJlTWVzc2FnZShjb25zdCBBc3NlcnRpb25SZXN1bHQmIGFzc2Vy
dGlvbl9yZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGV4cHJlc3Npb25fdGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogYWN0dWFsX3ByZWRpY2F0ZV92YWx1ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRfcHJlZGljYXRlX3Zh
bHVlKSB7CitzdGQ6OnN0cmluZyBHZXRCb29sQXNzZXJ0aW9uRmFpbHVyZU1lc3NhZ2UoCisgICAg
Y29uc3QgQXNzZXJ0aW9uUmVzdWx0JiBhc3NlcnRpb25fcmVzdWx0LAorICAgIGNvbnN0IGNoYXIq
IGV4cHJlc3Npb25fdGV4dCwKKyAgICBjb25zdCBjaGFyKiBhY3R1YWxfcHJlZGljYXRlX3ZhbHVl
LAorICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkX3ByZWRpY2F0ZV92YWx1ZSkgewogICBjb25zdCBj
aGFyKiBhY3R1YWxfbWVzc2FnZSA9IGFzc2VydGlvbl9yZXN1bHQubWVzc2FnZSgpOwogICBNZXNz
YWdlIG1zZzsKICAgbXNnIDw8ICJWYWx1ZSBvZjogIiA8PCBleHByZXNzaW9uX3RleHQKQEAgLTEw
NTcsMTUgKzE0MTMsMTQgQEAgQXNzZXJ0aW9uUmVzdWx0IERvdWJsZU5lYXJQcmVkRm9ybWF0KGNv
bnN0IGNoYXIqIGV4cHIxLAogICBjb25zdCBkb3VibGUgZGlmZiA9IGZhYnModmFsMSAtIHZhbDIp
OwogICBpZiAoZGlmZiA8PSBhYnNfZXJyb3IpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAK
LSAgLy8gVE9ETyh3YW4pOiBkbyBub3QgcHJpbnQgdGhlIHZhbHVlIG9mIGFuIGV4cHJlc3Npb24g
aWYgaXQncworICAvLyBGSVhNRTogZG8gbm90IHByaW50IHRoZSB2YWx1ZSBvZiBhbiBleHByZXNz
aW9uIGlmIGl0J3MKICAgLy8gYWxyZWFkeSBhIGxpdGVyYWwuCi0gIE1lc3NhZ2UgbXNnOwotICBt
c2cgPDwgIlRoZSBkaWZmZXJlbmNlIGJldHdlZW4gIiA8PCBleHByMSA8PCAiIGFuZCAiIDw8IGV4
cHIyCisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8ICJUaGUgZGlmZmVyZW5j
ZSBiZXR3ZWVuICIgPDwgZXhwcjEgPDwgIiBhbmQgIiA8PCBleHByMgogICAgICAgPDwgIiBpcyAi
IDw8IGRpZmYgPDwgIiwgd2hpY2ggZXhjZWVkcyAiIDw8IGFic19lcnJvcl9leHByIDw8ICIsIHdo
ZXJlXG4iCiAgICAgICA8PCBleHByMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHZhbDEgPDwgIixc
biIKICAgICAgIDw8IGV4cHIyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdmFsMiA8PCAiLCBhbmRc
biIKICAgICAgIDw8IGFic19lcnJvcl9leHByIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgYWJzX2Vy
cm9yIDw8ICIuIjsKLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKIH0KIAogCkBAIC0x
MDkwLDIwICsxNDQ1LDE4IEBAIEFzc2VydGlvblJlc3VsdCBGbG9hdGluZ1BvaW50TEUoY29uc3Qg
Y2hhciogZXhwcjEsCiAgIC8vIHZhbDIgaXMgTmFOLCBhcyB0aGUgSUVFRSBmbG9hdGluZy1wb2lu
dCBzdGFuZGFyZCByZXF1aXJlcyB0aGF0CiAgIC8vIGFueSBwcmVkaWNhdGUgaW52b2x2aW5nIGEg
TmFOIG11c3QgcmV0dXJuIGZhbHNlLgogCi0gIFN0clN0cmVhbSB2YWwxX3NzOworICA6OnN0ZDo6
c3RyaW5nc3RyZWFtIHZhbDFfc3M7CiAgIHZhbDFfc3MgPDwgc3RkOjpzZXRwcmVjaXNpb24oc3Rk
OjpudW1lcmljX2xpbWl0czxSYXdUeXBlPjo6ZGlnaXRzMTAgKyAyKQogICAgICAgICAgIDw8IHZh
bDE7CiAKLSAgU3RyU3RyZWFtIHZhbDJfc3M7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gdmFsMl9z
czsKICAgdmFsMl9zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPFJh
d1R5cGU+OjpkaWdpdHMxMCArIDIpCiAgICAgICAgICAgPDwgdmFsMjsKIAotICBNZXNzYWdlIG1z
ZzsKLSAgbXNnIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgPD0gKCIgPDwgZXhwcjIg
PDwgIilcbiIKLSAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBTdHJTdHJlYW1Ub1N0cmluZygmdmFs
MV9zcykgPDwgIiB2cyAiCi0gICAgICA8PCBTdHJTdHJlYW1Ub1N0cmluZygmdmFsMl9zcyk7Ci0K
LSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1
cmUoKQorICAgICAgPDwgIkV4cGVjdGVkOiAoIiA8PCBleHByMSA8PCAiKSA8PSAoIiA8PCBleHBy
MiA8PCAiKVxuIgorICAgICAgPDwgIiAgQWN0dWFsOiAiIDw8IFN0cmluZ1N0cmVhbVRvU3RyaW5n
KCZ2YWwxX3NzKSA8PCAiIHZzICIKKyAgICAgIDw8IFN0cmluZ1N0cmVhbVRvU3RyaW5nKCZ2YWwy
X3NzKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCkBAIC0xMTI2LDE4ICsxNDc5LDE4
IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIC8vIFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtB
U1NFUlR8RVhQRUNUfV9FUSB3aXRoIGludCBvciBlbnVtCiAvLyBhcmd1bWVudHMuCi1Bc3NlcnRp
b25SZXN1bHQgQ21wSGVscGVyRVEoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGV4cGVjdGVkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgYWN0dWFsKSB7Ci0gIGlmIChleHBlY3Rl
ZCA9PSBhY3R1YWwpIHsKK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJFUShjb25zdCBjaGFyKiBs
aHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBy
aHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGxo
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IHJocykgeworICBpZiAo
bGhzID09IHJocykgewogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAgIH0KIAotICBy
ZXR1cm4gRXFGYWlsdXJlKGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAg
YWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNv
bkZhaWx1cmVNZXNzYWdlKGV4cGVjdGVkLCBhY3R1YWwpLAotICAgICAgICAgICAgICAgICAgIEZv
cm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShhY3R1YWwsIGV4cGVjdGVkKSwKKyAgcmV0
dXJuIEVxRmFpbHVyZShsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICByaHNfZXhw
cmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2UobGhzLCByaHMpLAorICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZShyaHMsIGxocyksCiAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwogfQog
CkBAIC0xMTUwLDExICsxNTAzLDEwIEBAIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXIjI29wX25h
bWUoY29uc3QgY2hhciogZXhwcjEsIGNvbnN0IGNoYXIqIGV4cHIyLCBcCiAgIGlmICh2YWwxIG9w
IHZhbDIpIHtcCiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTtcCiAgIH0gZWxzZSB7XAot
ICAgIE1lc3NhZ2UgbXNnO1wKLSAgICBtc2cgPDwgIkV4cGVjdGVkOiAoIiA8PCBleHByMSA8PCAi
KSAiICNvcCAiICgiIDw8IGV4cHIyXAorICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgXAor
ICAgICAgICA8PCAiRXhwZWN0ZWQ6ICgiIDw8IGV4cHIxIDw8ICIpICIgI29wICIgKCIgPDwgZXhw
cjJcCiAgICAgICAgIDw8ICIpLCBhY3R1YWw6ICIgPDwgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1
cmVNZXNzYWdlKHZhbDEsIHZhbDIpXAogICAgICAgICA8PCAiIHZzICIgPDwgRm9ybWF0Rm9yQ29t
cGFyaXNvbkZhaWx1cmVNZXNzYWdlKHZhbDIsIHZhbDEpO1wKLSAgICByZXR1cm4gQXNzZXJ0aW9u
RmFpbHVyZShtc2cpO1wKICAgfVwKIH0KIApAQCAtMTE3NywzNCArMTUyOSwzNCBAQCBHVEVTVF9J
TVBMX0NNUF9IRUxQRVJfKEdULCA+ICkKICN1bmRlZiBHVEVTVF9JTVBMX0NNUF9IRUxQRVJfCiAK
IC8vIFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9TVFJFUS4KLUFzc2Vy
dGlvblJlc3VsdCBDbXBIZWxwZXJTVFJFUShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHBy
ZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVj
dGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbCkg
ewotICBpZiAoU3RyaW5nOjpDU3RyaW5nRXF1YWxzKGV4cGVjdGVkLCBhY3R1YWwpKSB7CitBc3Nl
cnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbGhzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJocykgeworICBpZiAoU3RyaW5n
OjpDU3RyaW5nRXF1YWxzKGxocywgcmhzKSkgewogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNz
KCk7CiAgIH0KIAotICByZXR1cm4gRXFGYWlsdXJlKGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAg
ICAgICAgICAgICAgICAgYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgU3Ry
aW5nOjpTaG93Q1N0cmluZ1F1b3RlZChleHBlY3RlZCksCi0gICAgICAgICAgICAgICAgICAgU3Ry
aW5nOjpTaG93Q1N0cmluZ1F1b3RlZChhY3R1YWwpLAorICByZXR1cm4gRXFGYWlsdXJlKGxoc19l
eHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIHJoc19leHByZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgIFByaW50VG9TdHJpbmcobGhzKSwKKyAgICAgICAgICAgICAgICAgICBQcmludFRv
U3RyaW5nKHJocyksCiAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwogfQogCiAvLyBUaGUgaGVs
cGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fU1RSQ0FTRUVRLgotQXNzZXJ0aW9uUmVz
dWx0IENtcEhlbHBlclNUUkNBU0VFUShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhw
cmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
ZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGFjdHVhbCkgewotICBpZiAoU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGV4
cGVjdGVkLCBhY3R1YWwpKSB7CitBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSQ0FTRUVRKGNv
bnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiByaHMpIHsKKyAgaWYgKFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZl
Q1N0cmluZ0VxdWFscyhsaHMsIHJocykpIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2Vzcygp
OwogICB9CiAKLSAgcmV0dXJuIEVxRmFpbHVyZShleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAg
ICAgICAgICAgICAgIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIFN0cmlu
Zzo6U2hvd0NTdHJpbmdRdW90ZWQoZXhwZWN0ZWQpLAotICAgICAgICAgICAgICAgICAgIFN0cmlu
Zzo6U2hvd0NTdHJpbmdRdW90ZWQoYWN0dWFsKSwKKyAgcmV0dXJuIEVxRmFpbHVyZShsaHNfZXhw
cmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICBQcmludFRvU3RyaW5nKGxocyksCisgICAgICAgICAgICAgICAgICAgUHJpbnRUb1N0
cmluZyhyaHMpLAogICAgICAgICAgICAgICAgICAgIHRydWUpOwogfQogCkBAIC0xMjE2LDExICsx
NTY4LDkgQEAgQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUk5FKGNvbnN0IGNoYXIqIHMxX2V4
cHJlc3Npb24sCiAgIGlmICghU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHMxLCBzMikpIHsKICAgICBy
ZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9IGVsc2UgewotICAgIE1lc3NhZ2UgbXNnOwot
ICAgIG1zZyA8PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4cHJlc3Npb24gPDwgIikgIT0gKCIKLSAg
ICAgICAgPDwgczJfZXhwcmVzc2lvbiA8PCAiKSwgYWN0dWFsOiBcIiIKLSAgICAgICAgPDwgczEg
PDwgIlwiIHZzIFwiIiA8PCBzMiA8PCAiXCIiOwotICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJl
KG1zZyk7CisgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiRXhwZWN0ZWQ6ICgiIDw8
IHMxX2V4cHJlc3Npb24gPDwgIikgIT0gKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDw8IHMyX2V4cHJlc3Npb24gPDwgIiksIGFjdHVhbDogXCIiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCBzMSA8PCAiXCIgdnMgXCIiIDw8IHMyIDw8ICJcIiI7CiAgIH0KIH0KIApA
QCAtMTIzMiwxMSArMTU4MiwxMCBAQCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSQ0FTRU5F
KGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24sCiAgIGlmICghU3RyaW5nOjpDYXNlSW5zZW5zaXRp
dmVDU3RyaW5nRXF1YWxzKHMxLCBzMikpIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2Vzcygp
OwogICB9IGVsc2UgewotICAgIE1lc3NhZ2UgbXNnOwotICAgIG1zZyA8PCAiRXhwZWN0ZWQ6ICgi
IDw8IHMxX2V4cHJlc3Npb24gPDwgIikgIT0gKCIKKyAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVy
ZSgpCisgICAgICAgIDw8ICJFeHBlY3RlZDogKCIgPDwgczFfZXhwcmVzc2lvbiA8PCAiKSAhPSAo
IgogICAgICAgICA8PCBzMl9leHByZXNzaW9uIDw8ICIpIChpZ25vcmluZyBjYXNlKSwgYWN0dWFs
OiBcIiIKICAgICAgICAgPDwgczEgPDwgIlwiIHZzIFwiIiA8PCBzMiA8PCAiXCIiOwotICAgIHJl
dHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiAgIH0KIH0KIApAQCAtMTI4NSwxMyArMTYzNCwx
MiBAQCBBc3NlcnRpb25SZXN1bHQgSXNTdWJzdHJpbmdJbXBsKAogCiAgIGNvbnN0IGJvb2wgaXNf
d2lkZV9zdHJpbmcgPSBzaXplb2YobmVlZGxlWzBdKSA+IDE7CiAgIGNvbnN0IGNoYXIqIGNvbnN0
IGJlZ2luX3N0cmluZ19xdW90ZSA9IGlzX3dpZGVfc3RyaW5nID8gIkxcIiIgOiAiXCIiOwotICBy
ZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgKLSAgICAgIE1lc3NhZ2UoKQorICByZXR1cm4gQXNzZXJ0
aW9uRmFpbHVyZSgpCiAgICAgICA8PCAiVmFsdWUgb2Y6ICIgPDwgbmVlZGxlX2V4cHIgPDwgIlxu
IgogICAgICAgPDwgIiAgQWN0dWFsOiAiIDw8IGJlZ2luX3N0cmluZ19xdW90ZSA8PCBuZWVkbGUg
PDwgIlwiXG4iCiAgICAgICA8PCAiRXhwZWN0ZWQ6ICIgPDwgKGV4cGVjdGVkX3RvX2JlX3N1YnN0
cmluZyA/ICIiIDogIm5vdCAiKQogICAgICAgPDwgImEgc3Vic3RyaW5nIG9mICIgPDwgaGF5c3Rh
Y2tfZXhwciA8PCAiXG4iCi0gICAgICA8PCAiV2hpY2ggaXM6ICIgPDwgYmVnaW5fc3RyaW5nX3F1
b3RlIDw8IGhheXN0YWNrIDw8ICJcIiIpOworICAgICAgPDwgIldoaWNoIGlzOiAiIDw8IGJlZ2lu
X3N0cmluZ19xdW90ZSA8PCBoYXlzdGFjayA8PCAiXCIiOwogfQogCiB9ICAvLyBuYW1lc3BhY2UK
QEAgLTEzNjAsMTYgKzE3MDgsMTkgQEAgbmFtZXNwYWNlIHsKIEFzc2VydGlvblJlc3VsdCBIUkVT
VUxURmFpbHVyZUhlbHBlcihjb25zdCBjaGFyKiBleHByLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvbmcgaHIpIHsgIC8vIE5PTElOVAotI2lmIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCisjIGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNUX09TX1dJ
TkRPV1NfVFZfVElUTEUKKwogICAvLyBXaW5kb3dzIENFIGRvZXNuJ3Qgc3VwcG9ydCBGb3JtYXRN
ZXNzYWdlLgogICBjb25zdCBjaGFyIGVycm9yX3RleHRbXSA9ICIiOwotI2Vsc2UKKworIyBlbHNl
CisKICAgLy8gTG9va3MgdXAgdGhlIGh1bWFuLXJlYWRhYmxlIHN5c3RlbSBtZXNzYWdlIGZvciB0
aGUgSFJFU1VMVCBjb2RlCiAgIC8vIGFuZCBzaW5jZSB3ZSdyZSBub3QgcGFzc2luZyBhbnkgcGFy
YW1zIHRvIEZvcm1hdE1lc3NhZ2UsIHdlIGRvbid0CiAgIC8vIHdhbnQgaW5zZXJ0cyBleHBhbmRl
ZC4KICAgY29uc3QgRFdPUkQga0ZsYWdzID0gRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0gfAog
ICAgICAgICAgICAgICAgICAgICAgICBGT1JNQVRfTUVTU0FHRV9JR05PUkVfSU5TRVJUUzsKLSAg
Y29uc3QgRFdPUkQga0J1ZlNpemUgPSA0MDk2OyAgLy8gU3RyaW5nOjpGb3JtYXQgY2FuJ3QgZXhj
ZWVkIHRoaXMgbGVuZ3RoLgorICBjb25zdCBEV09SRCBrQnVmU2l6ZSA9IDQwOTY7CiAgIC8vIEdl
dHMgdGhlIHN5c3RlbSdzIGh1bWFuIHJlYWRhYmxlIG1lc3NhZ2Ugc3RyaW5nIGZvciB0aGlzIEhS
RVNVTFQuCiAgIGNoYXIgZXJyb3JfdGV4dFtrQnVmU2l6ZV0gPSB7ICdcMCcgfTsKICAgRFdPUkQg
bWVzc2FnZV9sZW5ndGggPSA6OkZvcm1hdE1lc3NhZ2VBKGtGbGFncywKQEAgLTEzNzksMTkgKzE3
MzAsMTggQEAgQXNzZXJ0aW9uUmVzdWx0IEhSRVNVTFRGYWlsdXJlSGVscGVyKGNvbnN0IGNoYXIq
IGV4cHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl90
ZXh0LCAgLy8gb3V0cHV0IGJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga0J1ZlNpemUsICAvLyBidWYgc2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTlVMTCk7ICAvLyBubyBhcmd1bWVudHMgZm9yIGluc2VydHMKLSAg
Ly8gVHJpbXMgdGFpbGluZyB3aGl0ZSBzcGFjZSAoRm9ybWF0TWVzc2FnZSBsZWF2ZXMgYSB0cmFp
bGluZyBjci1sZikKLSAgZm9yICg7IG1lc3NhZ2VfbGVuZ3RoICYmIGlzc3BhY2UoZXJyb3JfdGV4
dFttZXNzYWdlX2xlbmd0aCAtIDFdKTsKKyAgLy8gVHJpbXMgdGFpbGluZyB3aGl0ZSBzcGFjZSAo
Rm9ybWF0TWVzc2FnZSBsZWF2ZXMgYSB0cmFpbGluZyBDUi1MRikKKyAgZm9yICg7IG1lc3NhZ2Vf
bGVuZ3RoICYmIElzU3BhY2UoZXJyb3JfdGV4dFttZXNzYWdlX2xlbmd0aCAtIDFdKTsKICAgICAg
ICAgICAtLW1lc3NhZ2VfbGVuZ3RoKSB7CiAgICAgZXJyb3JfdGV4dFttZXNzYWdlX2xlbmd0aCAt
IDFdID0gJ1wwJzsKICAgfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogCi0g
IGNvbnN0IFN0cmluZyBlcnJvcl9oZXgoU3RyaW5nOjpGb3JtYXQoIjB4JTA4WCAiLCBocikpOwot
ICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8ICJFeHBlY3RlZDogIiA8PCBleHByIDw8ICIgIiA8PCBl
eHBlY3RlZCA8PCAiLlxuIgotICAgICAgPDwgIiAgQWN0dWFsOiAiIDw8IGVycm9yX2hleCA8PCBl
cnJvcl90ZXh0IDw8ICJcbiI7CisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQog
Ci0gIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcgZXJyb3JfaGV4KCIweCIgKyBTdHJpbmc6OkZvcm1hdEhleEludChocikpOworICBy
ZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8ICJFeHBlY3RlZDog
IiA8PCBleHByIDw8ICIgIiA8PCBleHBlY3RlZCA8PCAiLlxuIgorICAgICAgPDwgIiAgQWN0dWFs
OiAiIDw8IGVycm9yX2hleCA8PCAiICIgPDwgZXJyb3JfdGV4dCA8PCAiXG4iOwogfQogCiB9ICAv
LyBuYW1lc3BhY2UKQEAgLTE0MTUsNyArMTc2NSw3IEBAIEFzc2VydGlvblJlc3VsdCBJc0hSRVNV
TFRGYWlsdXJlKGNvbnN0IGNoYXIqIGV4cHIsIGxvbmcgaHIpIHsgIC8vIE5PTElOVAogLy8gVXRp
bGl0eSBmdW5jdGlvbnMgZm9yIGVuY29kaW5nIFVuaWNvZGUgdGV4dCAod2lkZSBzdHJpbmdzKSBp
bgogLy8gVVRGLTguCiAKLS8vIEEgVW5pY29kZSBjb2RlLXBvaW50IGNhbiBoYXZlIHVwdG8gMjEg
Yml0cywgYW5kIGlzIGVuY29kZWQgaW4gVVRGLTgKKy8vIEEgVW5pY29kZSBjb2RlLXBvaW50IGNh
biBoYXZlIHVwIHRvIDIxIGJpdHMsIGFuZCBpcyBlbmNvZGVkIGluIFVURi04CiAvLyBsaWtlIHRo
aXM6CiAvLwogLy8gQ29kZS1wb2ludCBsZW5ndGggICBFbmNvZGluZwpAQCAtMTQ0OCwxMiArMTc5
OCwxNSBAQCBpbmxpbmUgVUludDMyIENob3BMb3dCaXRzKFVJbnQzMiogYml0cywgaW50IG4pIHsK
IC8vIENvbnZlcnRzIGEgVW5pY29kZSBjb2RlIHBvaW50IHRvIGEgbmFycm93IHN0cmluZyBpbiBV
VEYtOCBlbmNvZGluZy4KIC8vIGNvZGVfcG9pbnQgcGFyYW1ldGVyIGlzIG9mIHR5cGUgVUludDMy
IGJlY2F1c2Ugd2NoYXJfdCBtYXkgbm90IGJlCiAvLyB3aWRlIGVub3VnaCB0byBjb250YWluIGEg
Y29kZSBwb2ludC4KLS8vIFRoZSBvdXRwdXQgYnVmZmVyIHN0ciBtdXN0IGNvbnRhaW50IGF0IGxl
YXN0IDMyIGNoYXJhY3RlcnMuCi0vLyBUaGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgYWRkcmVzcyBv
ZiB0aGUgb3V0cHV0IGJ1ZmZlci4KIC8vIElmIHRoZSBjb2RlX3BvaW50IGlzIG5vdCBhIHZhbGlk
IFVuaWNvZGUgY29kZSBwb2ludAotLy8gKGkuZS4gb3V0c2lkZSBvZiBVbmljb2RlIHJhbmdlIFUr
MCB0byBVKzEwRkZGRikgaXQgd2lsbCBiZSBvdXRwdXQKLS8vIGFzICcoSW52YWxpZCBVbmljb2Rl
IDB4WFhYWFhYWFgpJy4KLWNoYXIqIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9wb2ludCwg
Y2hhciogc3RyKSB7CisvLyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNvZGUgcmFuZ2UgVSswIHRvIFUr
MTBGRkZGKSBpdCB3aWxsIGJlIGNvbnZlcnRlZAorLy8gdG8gIihJbnZhbGlkIFVuaWNvZGUgMHhY
WFhYWFhYWCkiLgorc3RkOjpzdHJpbmcgQ29kZVBvaW50VG9VdGY4KFVJbnQzMiBjb2RlX3BvaW50
KSB7CisgIGlmIChjb2RlX3BvaW50ID4ga01heENvZGVQb2ludDQpIHsKKyAgICByZXR1cm4gIihJ
bnZhbGlkIFVuaWNvZGUgMHgiICsgU3RyaW5nOjpGb3JtYXRIZXhJbnQoY29kZV9wb2ludCkgKyAi
KSI7CisgIH0KKworICBjaGFyIHN0cls1XTsgIC8vIEJpZyBlbm91Z2ggZm9yIHRoZSBsYXJnZXN0
IHZhbGlkIGNvZGUgcG9pbnQuCiAgIGlmIChjb2RlX3BvaW50IDw9IGtNYXhDb2RlUG9pbnQxKSB7
CiAgICAgc3RyWzFdID0gJ1wwJzsKICAgICBzdHJbMF0gPSBzdGF0aWNfY2FzdDxjaGFyPihjb2Rl
X3BvaW50KTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDB4eHh4eHh4CkBAIC0xNDY2LDI3
ICsxODE5LDE3IEBAIGNoYXIqIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9wb2ludCwgY2hh
ciogc3RyKSB7CiAgICAgc3RyWzJdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHg4MCB8IENob3BMb3dC
aXRzKCZjb2RlX3BvaW50LCA2KSk7ICAvLyAxMHh4eHh4eAogICAgIHN0clsxXSA9IHN0YXRpY19j
YXN0PGNoYXI+KDB4ODAgfCBDaG9wTG93Qml0cygmY29kZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4
eHgKICAgICBzdHJbMF0gPSBzdGF0aWNfY2FzdDxjaGFyPigweEUwIHwgY29kZV9wb2ludCk7ICAg
ICAgICAgICAgICAgICAgIC8vIDExMTB4eHh4Ci0gIH0gZWxzZSBpZiAoY29kZV9wb2ludCA8PSBr
TWF4Q29kZVBvaW50NCkgeworICB9IGVsc2UgeyAgLy8gY29kZV9wb2ludCA8PSBrTWF4Q29kZVBv
aW50NAogICAgIHN0cls0XSA9ICdcMCc7CiAgICAgc3RyWzNdID0gc3RhdGljX2Nhc3Q8Y2hhcj4o
MHg4MCB8IENob3BMb3dCaXRzKCZjb2RlX3BvaW50LCA2KSk7ICAvLyAxMHh4eHh4eAogICAgIHN0
clsyXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgfCBDaG9wTG93Qml0cygmY29kZV9wb2ludCwg
NikpOyAgLy8gMTB4eHh4eHgKICAgICBzdHJbMV0gPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwg
Q2hvcExvd0JpdHMoJmNvZGVfcG9pbnQsIDYpKTsgIC8vIDEweHh4eHh4CiAgICAgc3RyWzBdID0g
c3RhdGljX2Nhc3Q8Y2hhcj4oMHhGMCB8IGNvZGVfcG9pbnQpOyAgICAgICAgICAgICAgICAgICAv
LyAxMTExMHh4eAotICB9IGVsc2UgewotICAgIC8vIFRoZSBsb25nZXN0IHN0cmluZyBTdHJpbmc6
OkZvcm1hdCBjYW4gcHJvZHVjZSB3aGVuIGludm9rZWQKLSAgICAvLyB3aXRoIHRoZXNlIHBhcmFt
ZXRlcnMgaXMgMjggY2hhcmFjdGVyIGxvbmcgKG5vdCBpbmNsdWRpbmcKLSAgICAvLyB0aGUgdGVy
bWluYXRpbmcgbnVsIGNoYXJhY3RlcikuIFdlIGFyZSBhc2tpbmcgZm9yIDMyIGNoYXJhY3Rlcgot
ICAgIC8vIGJ1ZmZlciBqdXN0IGluIGNhc2UuIFRoaXMgaXMgYWxzbyBlbm91Z2ggZm9yIHN0cm5j
cHkgdG8KLSAgICAvLyBudWxsLXRlcm1pbmF0ZSB0aGUgZGVzdGluYXRpb24gc3RyaW5nLgotICAg
IHBvc2l4OjpTdHJOQ3B5KAotICAgICAgICBzdHIsIFN0cmluZzo6Rm9ybWF0KCIoSW52YWxpZCBV
bmljb2RlIDB4JVgpIiwgY29kZV9wb2ludCkuY19zdHIoKSwgMzIpOwotICAgIHN0clszMV0gPSAn
XDAnOyAgLy8gTWFrZXMgc3VyZSBubyBjaGFuZ2UgaW4gdGhlIGZvcm1hdCB0byBzdHJuY3B5IGxl
YXZlcwotICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHJlc3VsdCB1bnRlcm1pbmF0ZWQuCiAg
IH0KICAgcmV0dXJuIHN0cjsKIH0KIAotLy8gVGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIG9u
bHkgbWFrZSBzZW5zZSBpZiB0aGUgdGhlIHN5c3RlbQorLy8gVGhlIGZvbGxvd2luZyB0d28gZnVu
Y3Rpb25zIG9ubHkgbWFrZSBzZW5zZSBpZiB0aGUgc3lzdGVtCiAvLyB1c2VzIFVURi0xNiBmb3Ig
d2lkZSBzdHJpbmcgZW5jb2RpbmcuIEFsbCBzdXBwb3J0ZWQgc3lzdGVtcwogLy8gd2l0aCAxNiBi
aXQgd2NoYXJfdCAoV2luZG93cywgQ3lnd2luLCBTeW1iaWFuIE9TKSBkbyB1c2UgVVRGLTE2Lgog
CkBAIC0xNTIyLDExICsxODY1LDExIEBAIGlubGluZSBVSW50MzIgQ3JlYXRlQ29kZVBvaW50RnJv
bVV0ZjE2U3Vycm9nYXRlUGFpcih3Y2hhcl90IGZpcnN0LAogLy8gYXMgJyhJbnZhbGlkIFVuaWNv
ZGUgMHhYWFhYWFhYWCknLiBJZiB0aGUgc3RyaW5nIGlzIGluIFVURjE2IGVuY29kaW5nCiAvLyBh
bmQgY29udGFpbnMgaW52YWxpZCBVVEYtMTYgc3Vycm9nYXRlIHBhaXJzLCB2YWx1ZXMgaW4gdGhv
c2UgcGFpcnMKIC8vIHdpbGwgYmUgZW5jb2RlZCBhcyBpbmRpdmlkdWFsIFVuaWNvZGUgY2hhcmFj
dGVycyBmcm9tIEJhc2ljIE5vcm1hbCBQbGFuZS4KLVN0cmluZyBXaWRlU3RyaW5nVG9VdGY4KGNv
bnN0IHdjaGFyX3QqIHN0ciwgaW50IG51bV9jaGFycykgeworc3RkOjpzdHJpbmcgV2lkZVN0cmlu
Z1RvVXRmOChjb25zdCB3Y2hhcl90KiBzdHIsIGludCBudW1fY2hhcnMpIHsKICAgaWYgKG51bV9j
aGFycyA9PSAtMSkKICAgICBudW1fY2hhcnMgPSBzdGF0aWNfY2FzdDxpbnQ+KHdjc2xlbihzdHIp
KTsKIAotICBTdHJTdHJlYW0gc3RyZWFtOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsK
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fY2hhcnM7ICsraSkgewogICAgIFVJbnQzMiB1bmlj
b2RlX2NvZGVfcG9pbnQ7CiAKQEAgLTE1NDAsMjcgKzE4ODMsMTcgQEAgU3RyaW5nIFdpZGVTdHJp
bmdUb1V0ZjgoY29uc3Qgd2NoYXJfdCogc3RyLCBpbnQgbnVtX2NoYXJzKSB7CiAgICAgICB1bmlj
b2RlX2NvZGVfcG9pbnQgPSBzdGF0aWNfY2FzdDxVSW50MzI+KHN0cltpXSk7CiAgICAgfQogCi0g
ICAgY2hhciBidWZmZXJbMzJdOyAgLy8gQ29kZVBvaW50VG9VdGY4IHJlcXVpcmVzIGEgYnVmZmVy
IHRoaXMgYmlnLgotICAgIHN0cmVhbSA8PCBDb2RlUG9pbnRUb1V0ZjgodW5pY29kZV9jb2RlX3Bv
aW50LCBidWZmZXIpOworICAgIHN0cmVhbSA8PCBDb2RlUG9pbnRUb1V0ZjgodW5pY29kZV9jb2Rl
X3BvaW50KTsKICAgfQotICByZXR1cm4gU3RyU3RyZWFtVG9TdHJpbmcoJnN0cmVhbSk7CisgIHJl
dHVybiBTdHJpbmdTdHJlYW1Ub1N0cmluZygmc3RyZWFtKTsKIH0KIAotLy8gQ29udmVydHMgYSB3
aWRlIEMgc3RyaW5nIHRvIGEgU3RyaW5nIHVzaW5nIHRoZSBVVEYtOCBlbmNvZGluZy4KKy8vIENv
bnZlcnRzIGEgd2lkZSBDIHN0cmluZyB0byBhbiBzdGQ6OnN0cmluZyB1c2luZyB0aGUgVVRGLTgg
ZW5jb2RpbmcuCiAvLyBOVUxMIHdpbGwgYmUgY29udmVydGVkIHRvICIobnVsbCkiLgotU3RyaW5n
IFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKGNvbnN0IHdjaGFyX3QgKiB3aWRlX2Nfc3RyKSB7Ci0g
IGlmICh3aWRlX2Nfc3RyID09IE5VTEwpIHJldHVybiBTdHJpbmcoIihudWxsKSIpOwotCi0gIHJl
dHVybiBTdHJpbmcoaW50ZXJuYWw6OldpZGVTdHJpbmdUb1V0Zjgod2lkZV9jX3N0ciwgLTEpLmNf
c3RyKCkpOwotfQotCi0vLyBTaW1pbGFyIHRvIFNob3dXaWRlQ1N0cmluZygpLCBleGNlcHQgdGhh
dCB0aGlzIGZ1bmN0aW9uIGVuY2xvc2VzCi0vLyB0aGUgY29udmVydGVkIHN0cmluZyBpbiBkb3Vi
bGUgcXVvdGVzLgotU3RyaW5nIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVvdGVkKGNvbnN0IHdj
aGFyX3QqIHdpZGVfY19zdHIpIHsKLSAgaWYgKHdpZGVfY19zdHIgPT0gTlVMTCkgcmV0dXJuIFN0
cmluZygiKG51bGwpIik7CitzdGQ6OnN0cmluZyBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZyhjb25z
dCB3Y2hhcl90ICogd2lkZV9jX3N0cikgeworICBpZiAod2lkZV9jX3N0ciA9PSBOVUxMKSAgcmV0
dXJuICIobnVsbCkiOwogCi0gIHJldHVybiBTdHJpbmc6OkZvcm1hdCgiTFwiJXNcIiIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZyh3aWRlX2Nfc3RyKS5j
X3N0cigpKTsKKyAgcmV0dXJuIGludGVybmFsOjpXaWRlU3RyaW5nVG9VdGY4KHdpZGVfY19zdHIs
IC0xKTsKIH0KIAogLy8gQ29tcGFyZXMgdHdvIHdpZGUgQyBzdHJpbmdzLiAgUmV0dXJucyB0cnVl
IGlmZiB0aGV5IGhhdmUgdGhlIHNhbWUKQEAgLTE1NzgsMTggKzE5MTEsMTggQEAgYm9vbCBTdHJp
bmc6OldpZGVDU3RyaW5nRXF1YWxzKGNvbnN0IHdjaGFyX3QgKiBsaHMsIGNvbnN0IHdjaGFyX3Qg
KiByaHMpIHsKIH0KIAogLy8gSGVscGVyIGZ1bmN0aW9uIGZvciAqX1NUUkVRIG9uIHdpZGUgc3Ry
aW5ncy4KLUFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJFUShjb25zdCBjaGFyKiBleHBlY3Rl
ZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHdjaGFyX3QqIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHdjaGFyX3QqIGFjdHVhbCkgewotICBpZiAoU3RyaW5nOjpXaWRlQ1N0cmluZ0VxdWFscyhleHBl
Y3RlZCwgYWN0dWFsKSkgeworQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNo
YXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHdjaGFyX3QqIGxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3
Y2hhcl90KiByaHMpIHsKKyAgaWYgKFN0cmluZzo6V2lkZUNTdHJpbmdFcXVhbHMobGhzLCByaHMp
KSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQogCi0gIHJldHVybiBFcUZh
aWx1cmUoZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBhY3R1YWxfZXhw
cmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3Rl
ZChleHBlY3RlZCksCi0gICAgICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdR
dW90ZWQoYWN0dWFsKSwKKyAgcmV0dXJuIEVxRmFpbHVyZShsaHNfZXhwcmVzc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICBQcmludFRv
U3RyaW5nKGxocyksCisgICAgICAgICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhyaHMpLAogICAg
ICAgICAgICAgICAgICAgIGZhbHNlKTsKIH0KIApAQCAtMTYwMiwxMiArMTkzNSwxMCBAQCBBc3Nl
cnRpb25SZXN1bHQgQ21wSGVscGVyU1RSTkUoY29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKICAg
ICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1z
ZyA8PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4cHJlc3Npb24gPDwgIikgIT0gKCIKLSAgICAgIDw8
IHMyX2V4cHJlc3Npb24gPDwgIiksIGFjdHVhbDogIgotICAgICAgPDwgU3RyaW5nOjpTaG93V2lk
ZUNTdHJpbmdRdW90ZWQoczEpCi0gICAgICA8PCAiIHZzICIgPDwgU3RyaW5nOjpTaG93V2lkZUNT
dHJpbmdRdW90ZWQoczIpOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1
cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJFeHBlY3RlZDogKCIgPDwgczFfZXhwcmVzc2lvbiA8
PCAiKSAhPSAoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHMyX2V4cHJlc3Npb24g
PDwgIiksIGFjdHVhbDogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IFByaW50VG9T
dHJpbmcoczEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiB2cyAiIDw8IFByaW50
VG9TdHJpbmcoczIpOwogfQogCiAvLyBDb21wYXJlcyB0d28gQyBzdHJpbmdzLCBpZ25vcmluZyBj
YXNlLiAgUmV0dXJucyB0cnVlIGlmZiB0aGV5IGhhdmUKQEAgLTE2MzgsMTcgKzE5NjksMTcgQEAg
Ym9vbCBTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMoY29uc3QgY2hhciAqIGxo
cywgY29uc3QgY2hhciAqIHJocykgewogICAvLyBjdXJyZW50IGxvY2FsZS4KIGJvb2wgU3RyaW5n
OjpDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscyhjb25zdCB3Y2hhcl90KiBsaHMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJf
dCogcmhzKSB7Ci0gIGlmICggbGhzID09IE5VTEwgKSByZXR1cm4gcmhzID09IE5VTEw7CisgIGlm
IChsaHMgPT0gTlVMTCkgcmV0dXJuIHJocyA9PSBOVUxMOwogCi0gIGlmICggcmhzID09IE5VTEwg
KSByZXR1cm4gZmFsc2U7CisgIGlmIChyaHMgPT0gTlVMTCkgcmV0dXJuIGZhbHNlOwogCiAjaWYg
R1RFU1RfT1NfV0lORE9XUwogICByZXR1cm4gX3djc2ljbXAobGhzLCByaHMpID09IDA7Ci0jZWxp
ZiBHVEVTVF9PU19MSU5VWAorI2VsaWYgR1RFU1RfT1NfTElOVVggJiYgIUdURVNUX09TX0xJTlVY
X0FORFJPSUQKICAgcmV0dXJuIHdjc2Nhc2VjbXAobGhzLCByaHMpID09IDA7CiAjZWxzZQotICAv
LyBNYWMgT1MgWCBhbmQgQ3lnd2luIGRvbid0IGRlZmluZSB3Y3NjYXNlY21wLiAgT3RoZXIgdW5r
bm93biBPU2VzCi0gIC8vIG1heSBub3QgZGVmaW5lIGl0IGVpdGhlci4KKyAgLy8gQW5kcm9pZCwg
TWFjIE9TIFggYW5kIEN5Z3dpbiBkb24ndCBkZWZpbmUgd2NzY2FzZWNtcC4KKyAgLy8gT3RoZXIg
dW5rbm93biBPU2VzIG1heSBub3QgZGVmaW5lIGl0IGVpdGhlci4KICAgd2ludF90IGxlZnQsIHJp
Z2h0OwogICBkbyB7CiAgICAgbGVmdCA9IHRvd2xvd2VyKCpsaHMrKyk7CkBAIC0xNjU4LDEzMyAr
MTk4OSw2OSBAQCBib29sIFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMo
Y29uc3Qgd2NoYXJfdCogbGhzLAogI2VuZGlmICAvLyBPUyBzZWxlY3RvcgogfQogCi0vLyBDb21w
YXJlcyB0aGlzIHdpdGggYW5vdGhlciBTdHJpbmcuCi0vLyBSZXR1cm5zIDwgMCBpZiB0aGlzIGlz
IGxlc3MgdGhhbiByaHMsIDAgaWYgdGhpcyBpcyBlcXVhbCB0byByaHMsIG9yID4gMAotLy8gaWYg
dGhpcyBpcyBncmVhdGVyIHRoYW4gcmhzLgotaW50IFN0cmluZzo6Q29tcGFyZShjb25zdCBTdHJp
bmcgJiByaHMpIGNvbnN0IHsKLSAgY29uc3QgY2hhciogY29uc3QgbGhzX2Nfc3RyID0gY19zdHIo
KTsKLSAgY29uc3QgY2hhciogY29uc3QgcmhzX2Nfc3RyID0gcmhzLmNfc3RyKCk7Ci0KLSAgaWYg
KGxoc19jX3N0ciA9PSBOVUxMKSB7Ci0gICAgcmV0dXJuIHJoc19jX3N0ciA9PSBOVUxMID8gMCA6
IC0xOyAgLy8gTlVMTCA8IGFueXRoaW5nIGV4Y2VwdCBOVUxMCi0gIH0gZWxzZSBpZiAocmhzX2Nf
c3RyID09IE5VTEwpIHsKLSAgICByZXR1cm4gMTsKLSAgfQotCi0gIGNvbnN0IHNpemVfdCBzaG9y
dGVyX3N0cl9sZW4gPQotICAgICAgbGVuZ3RoKCkgPD0gcmhzLmxlbmd0aCgpID8gbGVuZ3RoKCkg
OiByaHMubGVuZ3RoKCk7Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHNob3J0ZXJfc3RyX2xl
bjsgaSsrKSB7Ci0gICAgaWYgKGxoc19jX3N0cltpXSA8IHJoc19jX3N0cltpXSkgewotICAgICAg
cmV0dXJuIC0xOwotICAgIH0gZWxzZSBpZiAobGhzX2Nfc3RyW2ldID4gcmhzX2Nfc3RyW2ldKSB7
Ci0gICAgICByZXR1cm4gMTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIChsZW5ndGgoKSA8IHJocy5s
ZW5ndGgoKSkgPyAtMSA6Ci0gICAgICAobGVuZ3RoKCkgPiByaHMubGVuZ3RoKCkpID8gMSA6IDA7
CisvLyBSZXR1cm5zIHRydWUgaWZmIHN0ciBlbmRzIHdpdGggdGhlIGdpdmVuIHN1ZmZpeCwgaWdu
b3JpbmcgY2FzZS4KKy8vIEFueSBzdHJpbmcgaXMgY29uc2lkZXJlZCB0byBlbmQgd2l0aCBhbiBl
bXB0eSBzdWZmaXguCitib29sIFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoCisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHN0ciwgY29uc3Qgc3RkOjpzdHJpbmcmIHN1ZmZpeCkgeworICBj
b25zdCBzaXplX3Qgc3RyX2xlbiA9IHN0ci5sZW5ndGgoKTsKKyAgY29uc3Qgc2l6ZV90IHN1ZmZp
eF9sZW4gPSBzdWZmaXgubGVuZ3RoKCk7CisgIHJldHVybiAoc3RyX2xlbiA+PSBzdWZmaXhfbGVu
KSAmJgorICAgICAgICAgQ2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFscyhzdHIuY19zdHIoKSAr
IHN0cl9sZW4gLSBzdWZmaXhfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdWZmaXguY19zdHIoKSk7CiB9CiAKLS8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBTdHJp
bmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXguICAqQW55KgotLy8gU3RyaW5nIGlzIGNvbnNp
ZGVyZWQgdG8gZW5kIHdpdGggYSBOVUxMIG9yIGVtcHR5IHN1ZmZpeC4KLWJvb2wgU3RyaW5nOjpF
bmRzV2l0aChjb25zdCBjaGFyKiBzdWZmaXgpIGNvbnN0IHsKLSAgaWYgKHN1ZmZpeCA9PSBOVUxM
IHx8IENTdHJpbmdFcXVhbHMoc3VmZml4LCAiIikpIHJldHVybiB0cnVlOwotCi0gIGlmIChjX3N0
cigpID09IE5VTEwpIHJldHVybiBmYWxzZTsKLQotICBjb25zdCBzaXplX3QgdGhpc19sZW4gPSBz
dHJsZW4oY19zdHIoKSk7Ci0gIGNvbnN0IHNpemVfdCBzdWZmaXhfbGVuID0gc3RybGVuKHN1ZmZp
eCk7Ci0gIHJldHVybiAodGhpc19sZW4gPj0gc3VmZml4X2xlbikgJiYKLSAgICAgICAgIENTdHJp
bmdFcXVhbHMoY19zdHIoKSArIHRoaXNfbGVuIC0gc3VmZml4X2xlbiwgc3VmZml4KTsKKy8vIEZv
cm1hdHMgYW4gaW50IHZhbHVlIGFzICIlMDJkIi4KK3N0ZDo6c3RyaW5nIFN0cmluZzo6Rm9ybWF0
SW50V2lkdGgyKGludCB2YWx1ZSkgeworICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgc3MgPDwg
c3RkOjpzZXRmaWxsKCcwJykgPDwgc3RkOjpzZXR3KDIpIDw8IHZhbHVlOworICByZXR1cm4gc3Mu
c3RyKCk7CiB9CiAKLS8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBTdHJpbmcgZW5kcyB3aXRoIHRo
ZSBnaXZlbiBzdWZmaXgsIGlnbm9yaW5nIGNhc2UuCi0vLyBBbnkgU3RyaW5nIGlzIGNvbnNpZGVy
ZWQgdG8gZW5kIHdpdGggYSBOVUxMIG9yIGVtcHR5IHN1ZmZpeC4KLWJvb2wgU3RyaW5nOjpFbmRz
V2l0aENhc2VJbnNlbnNpdGl2ZShjb25zdCBjaGFyKiBzdWZmaXgpIGNvbnN0IHsKLSAgaWYgKHN1
ZmZpeCA9PSBOVUxMIHx8IENTdHJpbmdFcXVhbHMoc3VmZml4LCAiIikpIHJldHVybiB0cnVlOwot
Ci0gIGlmIChjX3N0cigpID09IE5VTEwpIHJldHVybiBmYWxzZTsKLQotICBjb25zdCBzaXplX3Qg
dGhpc19sZW4gPSBzdHJsZW4oY19zdHIoKSk7Ci0gIGNvbnN0IHNpemVfdCBzdWZmaXhfbGVuID0g
c3RybGVuKHN1ZmZpeCk7Ci0gIHJldHVybiAodGhpc19sZW4gPj0gc3VmZml4X2xlbikgJiYKLSAg
ICAgICAgIENhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMoY19zdHIoKSArIHRoaXNfbGVuIC0g
c3VmZml4X2xlbiwgc3VmZml4KTsKKy8vIEZvcm1hdHMgYW4gaW50IHZhbHVlIGFzICIlWCIuCitz
dGQ6OnN0cmluZyBTdHJpbmc6OkZvcm1hdEhleEludChpbnQgdmFsdWUpIHsKKyAgc3RkOjpzdHJp
bmdzdHJlYW0gc3M7CisgIHNzIDw8IHN0ZDo6aGV4IDw8IHN0ZDo6dXBwZXJjYXNlIDw8IHZhbHVl
OworICByZXR1cm4gc3Muc3RyKCk7CiB9CiAKLS8vIEZvcm1hdHMgYSBsaXN0IG9mIGFyZ3VtZW50
cyB0byBhIFN0cmluZywgdXNpbmcgdGhlIHNhbWUgZm9ybWF0Ci0vLyBzcGVjIHN0cmluZyBhcyBm
b3IgcHJpbnRmLgotLy8KLS8vIFdlIGRvIG5vdCB1c2UgdGhlIFN0cmluZ1ByaW50ZiBjbGFzcyBh
cyBpdCBpcyBub3QgdW5pdmVyc2FsbHkKLS8vIGF2YWlsYWJsZS4KLS8vCi0vLyBUaGUgcmVzdWx0
IGlzIGxpbWl0ZWQgdG8gNDA5NiBjaGFyYWN0ZXJzIChpbmNsdWRpbmcgdGhlIHRhaWxpbmcgMCku
Ci0vLyBJZiA0MDk2IGNoYXJhY3RlcnMgYXJlIG5vdCBlbm91Z2ggdG8gZm9ybWF0IHRoZSBpbnB1
dCwgb3IgaWYKLS8vIHRoZXJlJ3MgYW4gZXJyb3IsICI8Zm9ybWF0dGluZyBlcnJvciBvciBidWZm
ZXIgZXhjZWVkZWQ+IiBpcwotLy8gcmV0dXJuZWQuCi1TdHJpbmcgU3RyaW5nOjpGb3JtYXQoY29u
c3QgY2hhciAqIGZvcm1hdCwgLi4uKSB7Ci0gIHZhX2xpc3QgYXJnczsKLSAgdmFfc3RhcnQoYXJn
cywgZm9ybWF0KTsKLQotICBjaGFyIGJ1ZmZlcls0MDk2XTsKLSAgY29uc3QgaW50IGtCdWZmZXJT
aXplID0gc2l6ZW9mKGJ1ZmZlcikvc2l6ZW9mKGJ1ZmZlclswXSk7Ci0KLSAgLy8gTVNWQyA4IGRl
cHJlY2F0ZXMgdnNucHJpbnRmKCksIHNvIHdlIHdhbnQgdG8gc3VwcHJlc3Mgd2FybmluZwotICAv
LyA0OTk2IChkZXByZWNhdGVkIGZ1bmN0aW9uKSB0aGVyZS4KLSNpZmRlZiBfTVNDX1ZFUiAgLy8g
V2UgYXJlIHVzaW5nIE1TVkMuCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkgICAgICAgICAgLy8gU2F2
ZXMgdGhlIGN1cnJlbnQgd2FybmluZyBzdGF0ZS4KLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5
OTYpICAvLyBUZW1wb3JhcmlseSBkaXNhYmxlcyB3YXJuaW5nIDQ5OTYuCi0gIGNvbnN0IGludCBz
aXplID0gdnNucHJpbnRmKGJ1ZmZlciwga0J1ZmZlclNpemUsIGZvcm1hdCwgYXJncyk7Ci0jcHJh
Z21hIHdhcm5pbmcocG9wKSAgICAgICAgICAgLy8gUmVzdG9yZXMgdGhlIHdhcm5pbmcgc3RhdGUu
Ci0jZWxzZSAgLy8gV2UgYXJlIG5vdCB1c2luZyBNU1ZDLgotICBjb25zdCBpbnQgc2l6ZSA9IHZz
bnByaW50ZihidWZmZXIsIGtCdWZmZXJTaXplLCBmb3JtYXQsIGFyZ3MpOwotI2VuZGlmICAvLyBf
TVNDX1ZFUgotICB2YV9lbmQoYXJncyk7Ci0KLSAgLy8gdnNucHJpbnRmKCkncyBiZWhhdmlvciBp
cyBub3QgcG9ydGFibGUuICBXaGVuIHRoZSBidWZmZXIgaXMgbm90Ci0gIC8vIGJpZyBlbm91Z2gs
IGl0IHJldHVybnMgYSBuZWdhdGl2ZSB2YWx1ZSBpbiBNU1ZDLCBhbmQgcmV0dXJucyB0aGUKLSAg
Ly8gbmVlZGVkIGJ1ZmZlciBzaXplIG9uIExpbnV4LiAgV2hlbiB0aGVyZSBpcyBhbiBvdXRwdXQg
ZXJyb3IsIGl0Ci0gIC8vIGFsd2F5cyByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUuICBGb3Igc2lt
cGxpY2l0eSwgd2UgbHVtcCB0aGUgdHdvCi0gIC8vIGVycm9yIGNhc2VzIHRvZ2V0aGVyLgotICBp
ZiAoc2l6ZSA8IDAgfHwgc2l6ZSA+PSBrQnVmZmVyU2l6ZSkgewotICAgIHJldHVybiBTdHJpbmco
Ijxmb3JtYXR0aW5nIGVycm9yIG9yIGJ1ZmZlciBleGNlZWRlZD4iKTsKLSAgfSBlbHNlIHsKLSAg
ICByZXR1cm4gU3RyaW5nKGJ1ZmZlciwgc2l6ZSk7Ci0gIH0KKy8vIEZvcm1hdHMgYSBieXRlIGFz
ICIlMDJYIi4KK3N0ZDo6c3RyaW5nIFN0cmluZzo6Rm9ybWF0Qnl0ZSh1bnNpZ25lZCBjaGFyIHZh
bHVlKSB7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICBzcyA8PCBzdGQ6OnNldGZpbGwoJzAn
KSA8PCBzdGQ6OnNldHcoMikgPDwgc3RkOjpoZXggPDwgc3RkOjp1cHBlcmNhc2UKKyAgICAgPDwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih2YWx1ZSk7CisgIHJldHVybiBzcy5zdHIoKTsKIH0K
IAotLy8gQ29udmVydHMgdGhlIGJ1ZmZlciBpbiBhIFN0clN0cmVhbSB0byBhIFN0cmluZywgY29u
dmVydGluZyBOVUwKKy8vIENvbnZlcnRzIHRoZSBidWZmZXIgaW4gYSBzdHJpbmdzdHJlYW0gdG8g
YW4gc3RkOjpzdHJpbmcsIGNvbnZlcnRpbmcgTlVMCiAvLyBieXRlcyB0byAiXFwwIiBhbG9uZyB0
aGUgd2F5LgotU3RyaW5nIFN0clN0cmVhbVRvU3RyaW5nKFN0clN0cmVhbSogc3MpIHsKK3N0ZDo6
c3RyaW5nIFN0cmluZ1N0cmVhbVRvU3RyaW5nKDo6c3RkOjpzdHJpbmdzdHJlYW0qIHNzKSB7CiAg
IGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciA9IHNzLT5zdHIoKTsKICAgY29uc3QgY2hhciogY29u
c3Qgc3RhcnQgPSBzdHIuY19zdHIoKTsKICAgY29uc3QgY2hhciogY29uc3QgZW5kID0gc3RhcnQg
KyBzdHIubGVuZ3RoKCk7CiAKLSAgLy8gV2UgbmVlZCB0byB1c2UgYSBoZWxwZXIgU3RyU3RyZWFt
IHRvIGRvIHRoaXMgdHJhbnNmb3JtYXRpb24KLSAgLy8gYmVjYXVzZSBTdHJpbmcgZG9lc24ndCBz
dXBwb3J0IHB1c2hfYmFjaygpLgotICBTdHJTdHJlYW0gaGVscGVyOworICBzdGQ6OnN0cmluZyBy
ZXN1bHQ7CisgIHJlc3VsdC5yZXNlcnZlKDIgKiAoZW5kIC0gc3RhcnQpKTsKICAgZm9yIChjb25z
dCBjaGFyKiBjaCA9IHN0YXJ0OyBjaCAhPSBlbmQ7ICsrY2gpIHsKICAgICBpZiAoKmNoID09ICdc
MCcpIHsKLSAgICAgIGhlbHBlciA8PCAiXFwwIjsgIC8vIFJlcGxhY2VzIE5VTCB3aXRoICJcXDAi
OworICAgICAgcmVzdWx0ICs9ICJcXDAiOyAgLy8gUmVwbGFjZXMgTlVMIHdpdGggIlxcMCI7CiAg
ICAgfSBlbHNlIHsKLSAgICAgIGhlbHBlci5wdXQoKmNoKTsKKyAgICAgIHJlc3VsdCArPSAqY2g7
CiAgICAgfQogICB9CiAKLSAgcmV0dXJuIFN0cmluZyhoZWxwZXIuc3RyKCkuY19zdHIoKSk7Cisg
IHJldHVybiByZXN1bHQ7CiB9CiAKIC8vIEFwcGVuZHMgdGhlIHVzZXItc3VwcGxpZWQgbWVzc2Fn
ZSB0byB0aGUgR29vZ2xlLVRlc3QtZ2VuZXJhdGVkIG1lc3NhZ2UuCi1TdHJpbmcgQXBwZW5kVXNl
ck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBndGVzdF9tc2csCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgTWVzc2FnZSYgdXNlcl9tc2cpIHsKK3N0ZDo6c3RyaW5nIEFwcGVuZFVzZXJNZXNz
YWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBndGVzdF9tc2csCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBNZXNzYWdlJiB1c2VyX21zZykgewogICAvLyBBcHBlbmRzIHRoZSB1c2Vy
IG1lc3NhZ2UgaWYgaXQncyBub24tZW1wdHkuCi0gIGNvbnN0IFN0cmluZyB1c2VyX21zZ19zdHJp
bmcgPSB1c2VyX21zZy5HZXRTdHJpbmcoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgdXNlcl9tc2df
c3RyaW5nID0gdXNlcl9tc2cuR2V0U3RyaW5nKCk7CiAgIGlmICh1c2VyX21zZ19zdHJpbmcuZW1w
dHkoKSkgewogICAgIHJldHVybiBndGVzdF9tc2c7CiAgIH0KIAotICBNZXNzYWdlIG1zZzsKLSAg
bXNnIDw8IGd0ZXN0X21zZyA8PCAiXG4iIDw8IHVzZXJfbXNnX3N0cmluZzsKLQotICByZXR1cm4g
bXNnLkdldFN0cmluZygpOworICByZXR1cm4gZ3Rlc3RfbXNnICsgIlxuIiArIHVzZXJfbXNnX3N0
cmluZzsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCkBAIC0xODMyLDggKzIwOTksOSBA
QCB2b2lkIFRlc3RSZXN1bHQ6OkFkZFRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0
JiB0ZXN0X3BhcnRfcmVzdWx0KSB7CiAvLyBBZGRzIGEgdGVzdCBwcm9wZXJ0eSB0byB0aGUgbGlz
dC4gSWYgYSBwcm9wZXJ0eSB3aXRoIHRoZSBzYW1lIGtleSBhcyB0aGUKIC8vIHN1cHBsaWVkIHBy
b3BlcnR5IGlzIGFscmVhZHkgcmVwcmVzZW50ZWQsIHRoZSB2YWx1ZSBvZiB0aGlzIHRlc3RfcHJv
cGVydHkKIC8vIHJlcGxhY2VzIHRoZSBvbGQgdmFsdWUgZm9yIHRoYXQga2V5Lgotdm9pZCBUZXN0
UmVzdWx0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkp
IHsKLSAgaWYgKCFWYWxpZGF0ZVRlc3RQcm9wZXJ0eSh0ZXN0X3Byb3BlcnR5KSkgewordm9pZCBU
ZXN0UmVzdWx0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgeG1sX2VsZW1lbnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVz
dF9wcm9wZXJ0eSkgeworICBpZiAoIVZhbGlkYXRlVGVzdFByb3BlcnR5KHhtbF9lbGVtZW50LCB0
ZXN0X3Byb3BlcnR5KSkgewogICAgIHJldHVybjsKICAgfQogICBpbnRlcm5hbDo6TXV0ZXhMb2Nr
IGxvY2soJnRlc3RfcHJvcGVyaXRlc19tdXRleF8pOwpAQCAtMTg0NywyMSArMjExNSw5MCBAQCB2
b2lkIFRlc3RSZXN1bHQ6OlJlY29yZFByb3BlcnR5KGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9w
cm9wZXJ0eSkgewogICBwcm9wZXJ0eV93aXRoX21hdGNoaW5nX2tleS0+U2V0VmFsdWUodGVzdF9w
cm9wZXJ0eS52YWx1ZSgpKTsKIH0KIAotLy8gQWRkcyBhIGZhaWx1cmUgaWYgdGhlIGtleSBpcyBh
IHJlc2VydmVkIGF0dHJpYnV0ZSBvZiBHb29nbGUgVGVzdAotLy8gdGVzdGNhc2UgdGFncy4gIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgcHJvcGVydHkgaXMgdmFsaWQuCi1ib29sIFRlc3RSZXN1bHQ6OlZh
bGlkYXRlVGVzdFByb3BlcnR5KGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgewot
ICBpbnRlcm5hbDo6U3RyaW5nIGtleSh0ZXN0X3Byb3BlcnR5LmtleSgpKTsKLSAgaWYgKGtleSA9
PSAibmFtZSIgfHwga2V5ID09ICJzdGF0dXMiIHx8IGtleSA9PSAidGltZSIgfHwga2V5ID09ICJj
bGFzc25hbWUiKSB7Ci0gICAgQUREX0ZBSUxVUkUoKQotICAgICAgICA8PCAiUmVzZXJ2ZWQga2V5
IHVzZWQgaW4gUmVjb3JkUHJvcGVydHkoKTogIgotICAgICAgICA8PCBrZXkKLSAgICAgICAgPDwg
IiAoJ25hbWUnLCAnc3RhdHVzJywgJ3RpbWUnLCBhbmQgJ2NsYXNzbmFtZScgYXJlIHJlc2VydmVk
IGJ5ICIKLSAgICAgICAgPDwgR1RFU1RfTkFNRV8gPDwgIikiOworLy8gVGhlIGxpc3Qgb2YgcmVz
ZXJ2ZWQgYXR0cmlidXRlcyB1c2VkIGluIHRoZSA8dGVzdHN1aXRlcz4gZWxlbWVudCBvZiBYTUwK
Ky8vIG91dHB1dC4KK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBrUmVzZXJ2ZWRUZXN0U3VpdGVz
QXR0cmlidXRlc1tdID0geworICAiZGlzYWJsZWQiLAorICAiZXJyb3JzIiwKKyAgImZhaWx1cmVz
IiwKKyAgIm5hbWUiLAorICAicmFuZG9tX3NlZWQiLAorICAidGVzdHMiLAorICAidGltZSIsCisg
ICJ0aW1lc3RhbXAiCit9OworCisvLyBUaGUgbGlzdCBvZiByZXNlcnZlZCBhdHRyaWJ1dGVzIHVz
ZWQgaW4gdGhlIDx0ZXN0c3VpdGU+IGVsZW1lbnQgb2YgWE1MCisvLyBvdXRwdXQuCitzdGF0aWMg
Y29uc3QgY2hhciogY29uc3Qga1Jlc2VydmVkVGVzdFN1aXRlQXR0cmlidXRlc1tdID0geworICAi
ZGlzYWJsZWQiLAorICAiZXJyb3JzIiwKKyAgImZhaWx1cmVzIiwKKyAgIm5hbWUiLAorICAidGVz
dHMiLAorICAidGltZSIKK307CisKKy8vIFRoZSBsaXN0IG9mIHJlc2VydmVkIGF0dHJpYnV0ZXMg
dXNlZCBpbiB0aGUgPHRlc3RjYXNlPiBlbGVtZW50IG9mIFhNTCBvdXRwdXQuCitzdGF0aWMgY29u
c3QgY2hhciogY29uc3Qga1Jlc2VydmVkVGVzdENhc2VBdHRyaWJ1dGVzW10gPSB7CisgICAgImNs
YXNzbmFtZSIsICAibmFtZSIsICAgICAgICAic3RhdHVzIiwgInRpbWUiLAorICAgICJ0eXBlX3Bh
cmFtIiwgInZhbHVlX3BhcmFtIiwgImZpbGUiLCAgICJsaW5lIn07CisKK3RlbXBsYXRlIDxpbnQg
a1NpemU+CitzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gQXJyYXlBc1ZlY3Rvcihjb25zdCBjaGFy
KiBjb25zdCAoJmFycmF5KVtrU2l6ZV0pIHsKKyAgcmV0dXJuIHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPihhcnJheSwgYXJyYXkgKyBrU2l6ZSk7Cit9CisKK3N0YXRpYyBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gR2V0UmVzZXJ2ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudCgKKyAgICBjb25zdCBzdGQ6
OnN0cmluZyYgeG1sX2VsZW1lbnQpIHsKKyAgaWYgKHhtbF9lbGVtZW50ID09ICJ0ZXN0c3VpdGVz
IikgeworICAgIHJldHVybiBBcnJheUFzVmVjdG9yKGtSZXNlcnZlZFRlc3RTdWl0ZXNBdHRyaWJ1
dGVzKTsKKyAgfSBlbHNlIGlmICh4bWxfZWxlbWVudCA9PSAidGVzdHN1aXRlIikgeworICAgIHJl
dHVybiBBcnJheUFzVmVjdG9yKGtSZXNlcnZlZFRlc3RTdWl0ZUF0dHJpYnV0ZXMpOworICB9IGVs
c2UgaWYgKHhtbF9lbGVtZW50ID09ICJ0ZXN0Y2FzZSIpIHsKKyAgICByZXR1cm4gQXJyYXlBc1Zl
Y3RvcihrUmVzZXJ2ZWRUZXN0Q2FzZUF0dHJpYnV0ZXMpOworICB9IGVsc2UgeworICAgIEdURVNU
X0NIRUNLXyhmYWxzZSkgPDwgIlVucmVjb2duaXplZCB4bWxfZWxlbWVudCBwcm92aWRlZDogIiA8
PCB4bWxfZWxlbWVudDsKKyAgfQorICAvLyBUaGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgYnV0IHNv
bWUgY29tcGlsZXJzIG1heSBub3QgcmVhbGl6ZXMgdGhhdC4KKyAgcmV0dXJuIHN0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPigpOworfQorCitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0V29yZExpc3Qo
Y29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiB3b3JkcykgeworICBNZXNzYWdlIHdvcmRf
bGlzdDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3Jkcy5zaXplKCk7ICsraSkgeworICAg
IGlmIChpID4gMCAmJiB3b3Jkcy5zaXplKCkgPiAyKSB7CisgICAgICB3b3JkX2xpc3QgPDwgIiwg
IjsKKyAgICB9CisgICAgaWYgKGkgPT0gd29yZHMuc2l6ZSgpIC0gMSkgeworICAgICAgd29yZF9s
aXN0IDw8ICJhbmQgIjsKKyAgICB9CisgICAgd29yZF9saXN0IDw8ICInIiA8PCB3b3Jkc1tpXSA8
PCAiJyI7CisgIH0KKyAgcmV0dXJuIHdvcmRfbGlzdC5HZXRTdHJpbmcoKTsKK30KKworc3RhdGlj
IGJvb2wgVmFsaWRhdGVUZXN0UHJvcGVydHlOYW1lKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBw
cm9wZXJ0eV9uYW1lLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgcmVzZXJ2
ZWRfbmFtZXMpIHsKKyAgaWYgKHN0ZDo6ZmluZChyZXNlcnZlZF9uYW1lcy5iZWdpbigpLCByZXNl
cnZlZF9uYW1lcy5lbmQoKSwgcHJvcGVydHlfbmFtZSkgIT0KKyAgICAgICAgICByZXNlcnZlZF9u
YW1lcy5lbmQoKSkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIlJlc2VydmVkIGtleSB1c2VkIGlu
IFJlY29yZFByb3BlcnR5KCk6ICIgPDwgcHJvcGVydHlfbmFtZQorICAgICAgICAgICAgICAgICAg
PDwgIiAoIiA8PCBGb3JtYXRXb3JkTGlzdChyZXNlcnZlZF9uYW1lcykKKyAgICAgICAgICAgICAg
ICAgIDw8ICIgYXJlIHJlc2VydmVkIGJ5ICIgPDwgR1RFU1RfTkFNRV8gPDwgIikiOwogICAgIHJl
dHVybiBmYWxzZTsKICAgfQogICByZXR1cm4gdHJ1ZTsKIH0KIAorLy8gQWRkcyBhIGZhaWx1cmUg
aWYgdGhlIGtleSBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBvZiB0aGUgZWxlbWVudCBuYW1lZAor
Ly8geG1sX2VsZW1lbnQuICBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3BlcnR5IGlzIHZhbGlkLgor
Ym9vbCBUZXN0UmVzdWx0OjpWYWxpZGF0ZVRlc3RQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYg
eG1sX2VsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgeworICByZXR1cm4gVmFsaWRhdGVUZXN0UHJv
cGVydHlOYW1lKHRlc3RfcHJvcGVydHkua2V5KCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR2V0UmVzZXJ2ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudCh4bWxfZWxlbWVudCkpOwor
fQorCiAvLyBDbGVhcnMgdGhlIG9iamVjdC4KIHZvaWQgVGVzdFJlc3VsdDo6Q2xlYXIoKSB7CiAg
IHRlc3RfcGFydF9yZXN1bHRzXy5jbGVhcigpOwpAQCAtMTkxNCwxNCArMjI1MSwxNSBAQCBpbnQg
VGVzdFJlc3VsdDo6dGVzdF9wcm9wZXJ0eV9jb3VudCgpIGNvbnN0IHsKIAogLy8gQ3JlYXRlcyBh
IFRlc3Qgb2JqZWN0LgogCi0vLyBUaGUgYyd0b3Igc2F2ZXMgdGhlIHZhbHVlcyBvZiBhbGwgR29v
Z2xlIFRlc3QgZmxhZ3MuCisvLyBUaGUgYyd0b3Igc2F2ZXMgdGhlIHN0YXRlcyBvZiBhbGwgZmxh
Z3MuCiBUZXN0OjpUZXN0KCkKLSAgICA6IGd0ZXN0X2ZsYWdfc2F2ZXJfKG5ldyBpbnRlcm5hbDo6
R1Rlc3RGbGFnU2F2ZXIpIHsKKyAgICA6IGd0ZXN0X2ZsYWdfc2F2ZXJfKG5ldyBHVEVTVF9GTEFH
X1NBVkVSXykgewogfQogCi0vLyBUaGUgZCd0b3IgcmVzdG9yZXMgdGhlIHZhbHVlcyBvZiBhbGwg
R29vZ2xlIFRlc3QgZmxhZ3MuCisvLyBUaGUgZCd0b3IgcmVzdG9yZXMgdGhlIHN0YXRlcyBvZiBh
bGwgZmxhZ3MuICBUaGUgYWN0dWFsIHdvcmsgaXMKKy8vIGRvbmUgYnkgdGhlIGQndG9yIG9mIHRo
ZSBndGVzdF9mbGFnX3NhdmVyXyBmaWVsZCwgYW5kIHRodXMgbm90CisvLyB2aXNpYmxlIGhlcmUu
CiBUZXN0Ojp+VGVzdCgpIHsKLSAgZGVsZXRlIGd0ZXN0X2ZsYWdfc2F2ZXJfOwogfQogCiAvLyBT
ZXRzIHVwIHRoZSB0ZXN0IGZpeHR1cmUuCkBAIC0xOTM3LDEyICsyMjc1LDEyIEBAIHZvaWQgVGVz
dDo6VGVhckRvd24oKSB7CiB9CiAKIC8vIEFsbG93cyB1c2VyIHN1cHBsaWVkIGtleSB2YWx1ZSBw
YWlycyB0byBiZSByZWNvcmRlZCBmb3IgbGF0ZXIgb3V0cHV0Lgotdm9pZCBUZXN0OjpSZWNvcmRQ
cm9wZXJ0eShjb25zdCBjaGFyKiBrZXksIGNvbnN0IGNoYXIqIHZhbHVlKSB7Ci0gIFVuaXRUZXN0
OjpHZXRJbnN0YW5jZSgpLT5SZWNvcmRQcm9wZXJ0eUZvckN1cnJlbnRUZXN0KGtleSwgdmFsdWUp
Owordm9pZCBUZXN0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYga2V5LCBjb25z
dCBzdGQ6OnN0cmluZyYgdmFsdWUpIHsKKyAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPlJlY29y
ZFByb3BlcnR5KGtleSwgdmFsdWUpOwogfQogCiAvLyBBbGxvd3MgdXNlciBzdXBwbGllZCBrZXkg
dmFsdWUgcGFpcnMgdG8gYmUgcmVjb3JkZWQgZm9yIGxhdGVyIG91dHB1dC4KLXZvaWQgVGVzdDo6
UmVjb3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBpbnQgdmFsdWUpIHsKK3ZvaWQgVGVzdDo6
UmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwgaW50IHZhbHVlKSB7CiAgIE1l
c3NhZ2UgdmFsdWVfbWVzc2FnZTsKICAgdmFsdWVfbWVzc2FnZSA8PCB2YWx1ZTsKICAgUmVjb3Jk
UHJvcGVydHkoa2V5LCB2YWx1ZV9tZXNzYWdlLkdldFN0cmluZygpLmNfc3RyKCkpOwpAQCAtMTk1
MSw3ICsyMjg5LDcgQEAgdm9pZCBUZXN0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBjaGFyKiBrZXks
IGludCB2YWx1ZSkgewogbmFtZXNwYWNlIGludGVybmFsIHsKIAogdm9pZCBSZXBvcnRGYWlsdXJl
SW5Vbmtub3duTG9jYXRpb24oVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBt
ZXNzYWdlKSB7CiAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgYSBmcmllbmQgb2YgVW5pdFRlc3QgYW5k
IGFzIHN1Y2ggaGFzIGFjY2VzcyB0bwogICAvLyBBZGRUZXN0UGFydFJlc3VsdC4KICAgVW5pdFRl
c3Q6OkdldEluc3RhbmNlKCktPkFkZFRlc3RQYXJ0UmVzdWx0KApAQCAtMTk1OSwyNyArMjI5Nywx
MSBAQCB2b2lkIFJlcG9ydEZhaWx1cmVJblVua25vd25Mb2NhdGlvbihUZXN0UGFydFJlc3VsdDo6
VHlwZSByZXN1bHRfdHlwZSwKICAgICAgIE5VTEwsICAvLyBObyBpbmZvIGFib3V0IHRoZSBzb3Vy
Y2UgZmlsZSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLgogICAgICAgLTEsICAgIC8vIFdl
IGhhdmUgbm8gaW5mbyBvbiB3aGljaCBsaW5lIGNhdXNlZCB0aGUgZXhjZXB0aW9uLgogICAgICAg
bWVzc2FnZSwKLSAgICAgIFN0cmluZygpKTsgIC8vIE5vIHN0YWNrIHRyYWNlLCBlaXRoZXIuCisg
ICAgICAiIik7ICAgLy8gTm8gc3RhY2sgdHJhY2UsIGVpdGhlci4KIH0KIAogfSAgLy8gbmFtZXNw
YWNlIGludGVybmFsCiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0vLyBXZSBhcmUgb24gV2luZG93
cy4KLQotLy8gQWRkcyBhbiAiZXhjZXB0aW9uIHRocm93biIgZmF0YWwgZmFpbHVyZSB0byB0aGUg
Y3VycmVudCB0ZXN0Lgotc3RhdGljIHZvaWQgQWRkRXhjZXB0aW9uVGhyb3duRmFpbHVyZShEV09S
RCBleGNlcHRpb25fY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogbG9jYXRpb24pIHsKLSAgTWVzc2FnZSBtZXNzYWdlOwotICBtZXNzYWdlIDw8
ICJFeGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAweCIgPDwgc3RkOjpzZXRiYXNlKDE2KSA8PAot
ICAgIGV4Y2VwdGlvbl9jb2RlIDw8IHN0ZDo6c2V0YmFzZSgxMCkgPDwgIiBpbiAiIDw8IGxvY2F0
aW9uIDw8ICIuIjsKLQotICBpbnRlcm5hbDo6UmVwb3J0RmFpbHVyZUluVW5rbm93bkxvY2F0aW9u
KFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UuR2V0U3RyaW5nKCkpOwotfQotCi0jZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1MKLQogLy8gR29vZ2xlIFRlc3QgcmVxdWlyZXMgYWxsIHRlc3RzIGlu
IHRoZSBzYW1lIHRlc3QgY2FzZSB0byB1c2UgdGhlIHNhbWUgdGVzdAogLy8gZml4dHVyZSBjbGFz
cy4gIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBjdXJyZW50IHRlc3QgaGFzIHRoZQogLy8g
c2FtZSBmaXh0dXJlIGNsYXNzIGFzIHRoZSBmaXJzdCB0ZXN0IGluIHRoZSBjdXJyZW50IHRlc3Qg
Y2FzZS4gIElmCkBAIC0xOTkwLDE1ICsyMzEyLDEzIEBAIGJvb2wgVGVzdDo6SGFzU2FtZUZpeHR1
cmVDbGFzcygpIHsKICAgY29uc3QgVGVzdENhc2UqIGNvbnN0IHRlc3RfY2FzZSA9IGltcGwtPmN1
cnJlbnRfdGVzdF9jYXNlKCk7CiAKICAgLy8gSW5mbyBhYm91dCB0aGUgZmlyc3QgdGVzdCBpbiB0
aGUgY3VycmVudCB0ZXN0IGNhc2UuCi0gIGNvbnN0IGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGNv
bnN0IGZpcnN0X3Rlc3RfaW5mbyA9Ci0gICAgICB0ZXN0X2Nhc2UtPnRlc3RfaW5mb19saXN0KClb
MF0tPmltcGwoKTsKLSAgY29uc3QgaW50ZXJuYWw6OlR5cGVJZCBmaXJzdF9maXh0dXJlX2lkID0g
Zmlyc3RfdGVzdF9pbmZvLT5maXh0dXJlX2NsYXNzX2lkKCk7CisgIGNvbnN0IFRlc3RJbmZvKiBj
b25zdCBmaXJzdF90ZXN0X2luZm8gPSB0ZXN0X2Nhc2UtPnRlc3RfaW5mb19saXN0KClbMF07Cisg
IGNvbnN0IGludGVybmFsOjpUeXBlSWQgZmlyc3RfZml4dHVyZV9pZCA9IGZpcnN0X3Rlc3RfaW5m
by0+Zml4dHVyZV9jbGFzc19pZF87CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGZpcnN0X3Rlc3RfbmFt
ZSA9IGZpcnN0X3Rlc3RfaW5mby0+bmFtZSgpOwogCiAgIC8vIEluZm8gYWJvdXQgdGhlIGN1cnJl
bnQgdGVzdC4KLSAgY29uc3QgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbCogY29uc3QgdGhpc190ZXN0
X2luZm8gPQotICAgICAgaW1wbC0+Y3VycmVudF90ZXN0X2luZm8oKS0+aW1wbCgpOwotICBjb25z
dCBpbnRlcm5hbDo6VHlwZUlkIHRoaXNfZml4dHVyZV9pZCA9IHRoaXNfdGVzdF9pbmZvLT5maXh0
dXJlX2NsYXNzX2lkKCk7CisgIGNvbnN0IFRlc3RJbmZvKiBjb25zdCB0aGlzX3Rlc3RfaW5mbyA9
IGltcGwtPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisgIGNvbnN0IGludGVybmFsOjpUeXBlSWQgdGhp
c19maXh0dXJlX2lkID0gdGhpc190ZXN0X2luZm8tPmZpeHR1cmVfY2xhc3NfaWRfOwogICBjb25z
dCBjaGFyKiBjb25zdCB0aGlzX3Rlc3RfbmFtZSA9IHRoaXNfdGVzdF9pbmZvLT5uYW1lKCk7CiAK
ICAgaWYgKHRoaXNfZml4dHVyZV9pZCAhPSBmaXJzdF9maXh0dXJlX2lkKSB7CkBAIC0yMDA4LDgg
KzIzMjgsOCBAQCBib29sIFRlc3Q6Okhhc1NhbWVGaXh0dXJlQ2xhc3MoKSB7CiAgICAgY29uc3Qg
Ym9vbCB0aGlzX2lzX1RFU1QgPSB0aGlzX2ZpeHR1cmVfaWQgPT0gaW50ZXJuYWw6OkdldFRlc3RU
eXBlSWQoKTsKIAogICAgIGlmIChmaXJzdF9pc19URVNUIHx8IHRoaXNfaXNfVEVTVCkgewotICAg
ICAgLy8gVGhlIHVzZXIgbWl4ZWQgVEVTVCBhbmQgVEVTVF9GIGluIHRoaXMgdGVzdCBjYXNlIC0g
d2UnbGwgdGVsbAotICAgICAgLy8gaGltL2hlciBob3cgdG8gZml4IGl0LgorICAgICAgLy8gQm90
aCBURVNUIGFuZCBURVNUX0YgYXBwZWFyIGluIHNhbWUgdGVzdCBjYXNlLCB3aGljaCBpcyBpbmNv
cnJlY3QuCisgICAgICAvLyBUZWxsIHRoZSB1c2VyIGhvdyB0byBmaXggdGhpcy4KIAogICAgICAg
Ly8gR2V0cyB0aGUgbmFtZSBvZiB0aGUgVEVTVCBhbmQgdGhlIG5hbWUgb2YgdGhlIFRFU1RfRi4g
IE5vdGUKICAgICAgIC8vIHRoYXQgZmlyc3RfaXNfVEVTVCBhbmQgdGhpc19pc19URVNUIGNhbm5v
dCBib3RoIGJlIHRydWUsIGFzCkBAIC0yMDI5LDggKzIzNDksOCBAQCBib29sIFRlc3Q6Okhhc1Nh
bWVGaXh0dXJlQ2xhc3MoKSB7CiAgICAgICAgICAgPDwgIndhbnQgdG8gY2hhbmdlIHRoZSBURVNU
IHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRvIGFub3RoZXIgdGVzdFxuIgogICAgICAgICAgIDw8ICJj
YXNlLiI7CiAgICAgfSBlbHNlIHsKLSAgICAgIC8vIFRoZSB1c2VyIGRlZmluZWQgdHdvIGZpeHR1
cmUgY2xhc3NlcyB3aXRoIHRoZSBzYW1lIG5hbWUgaW4KLSAgICAgIC8vIHR3byBuYW1lc3BhY2Vz
IC0gd2UnbGwgdGVsbCBoaW0vaGVyIGhvdyB0byBmaXggaXQuCisgICAgICAvLyBUd28gZml4dHVy
ZSBjbGFzc2VzIHdpdGggdGhlIHNhbWUgbmFtZSBhcHBlYXIgaW4gdHdvIGRpZmZlcmVudAorICAg
ICAgLy8gbmFtZXNwYWNlcywgd2hpY2ggaXMgbm90IGFsbG93ZWQuIFRlbGwgdGhlIHVzZXIgaG93
IHRvIGZpeCB0aGlzLgogICAgICAgQUREX0ZBSUxVUkUoKQogICAgICAgICAgIDw8ICJBbGwgdGVz
dHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZVxu
IgogICAgICAgICAgIDw8ICJjbGFzcy4gIEhvd2V2ZXIsIGluIHRlc3QgY2FzZSAiCkBAIC0yMDQ4
LDYyICsyMzY4LDE2NCBAQCBib29sIFRlc3Q6Okhhc1NhbWVGaXh0dXJlQ2xhc3MoKSB7CiAgIHJl
dHVybiB0cnVlOwogfQogCi0vLyBSdW5zIHRoZSB0ZXN0IGFuZCB1cGRhdGVzIHRoZSB0ZXN0IHJl
c3VsdC4KLXZvaWQgVGVzdDo6UnVuKCkgewotICBpZiAoIUhhc1NhbWVGaXh0dXJlQ2xhc3MoKSkg
cmV0dXJuOwotCi0gIGludGVybmFsOjpVbml0VGVzdEltcGwqIGNvbnN0IGltcGwgPSBpbnRlcm5h
bDo6R2V0VW5pdFRlc3RJbXBsKCk7CiAjaWYgR1RFU1RfSEFTX1NFSAotICAvLyBDYXRjaCBTRUgt
c3R5bGUgZXhjZXB0aW9ucy4KLSAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25M
ZWF2aW5nR1Rlc3QoKTsKLSAgX190cnkgewotICAgIFNldFVwKCk7Ci0gIH0gX19leGNlcHQoaW50
ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6R1Rlc3RTaG91bGRQcm9jZXNzU0VIKAotICAgICAgR2V0
RXhjZXB0aW9uQ29kZSgpKSkgewotICAgIEFkZEV4Y2VwdGlvblRocm93bkZhaWx1cmUoR2V0RXhj
ZXB0aW9uQ29kZSgpLCAiU2V0VXAoKSIpOwotICB9CiAKLSAgLy8gV2Ugd2lsbCBydW4gdGhlIHRl
c3Qgb25seSBpZiBTZXRVcCgpIGhhZCBubyBmYXRhbCBmYWlsdXJlLgotICBpZiAoIUhhc0ZhdGFs
RmFpbHVyZSgpKSB7Ci0gICAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2
aW5nR1Rlc3QoKTsKLSAgICBfX3RyeSB7Ci0gICAgICBUZXN0Qm9keSgpOwotICAgIH0gX19leGNl
cHQoaW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6R1Rlc3RTaG91bGRQcm9jZXNzU0VIKAotICAg
ICAgICBHZXRFeGNlcHRpb25Db2RlKCkpKSB7Ci0gICAgICBBZGRFeGNlcHRpb25UaHJvd25GYWls
dXJlKEdldEV4Y2VwdGlvbkNvZGUoKSwgInRoZSB0ZXN0IGJvZHkiKTsKLSAgICB9Ci0gIH0KKy8v
IEFkZHMgYW4gImV4Y2VwdGlvbiB0aHJvd24iIGZhdGFsIGZhaWx1cmUgdG8gdGhlIGN1cnJlbnQg
dGVzdC4gIFRoaXMKKy8vIGZ1bmN0aW9uIHJldHVybnMgaXRzIHJlc3VsdCB2aWEgYW4gb3V0cHV0
IHBhcmFtZXRlciBwb2ludGVyIGJlY2F1c2UgVkMrKworLy8gcHJvaGliaXRzIGNyZWF0aW9uIG9m
IG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycyBvbiBzdGFjayBpbiBmdW5jdGlvbnMKKy8vIHVzaW5n
IF9fdHJ5IChzZWUgZXJyb3IgQzI3MTIpLgorc3RhdGljIHN0ZDo6c3RyaW5nKiBGb3JtYXRTZWhF
eGNlcHRpb25NZXNzYWdlKERXT1JEIGV4Y2VwdGlvbl9jb2RlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7CisgIE1l
c3NhZ2UgbWVzc2FnZTsKKyAgbWVzc2FnZSA8PCAiU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgi
IDw8IHN0ZDo6c2V0YmFzZSgxNikgPDwKKyAgICBleGNlcHRpb25fY29kZSA8PCBzdGQ6OnNldGJh
c2UoMTApIDw8ICIgdGhyb3duIGluICIgPDwgbG9jYXRpb24gPDwgIi4iOwogCi0gIC8vIEhvd2V2
ZXIsIHdlIHdhbnQgdG8gY2xlYW4gdXAgYXMgbXVjaCBhcyBwb3NzaWJsZS4gIEhlbmNlIHdlIHdp
bGwKLSAgLy8gYWx3YXlzIGNhbGwgVGVhckRvd24oKSwgZXZlbiBpZiBTZXRVcCgpIG9yIHRoZSB0
ZXN0IGJvZHkgaGFzCi0gIC8vIGZhaWxlZC4KLSAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVy
KCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKKyAgcmV0dXJuIG5ldyBzdGQ6OnN0cmluZyhtZXNzYWdl
LkdldFN0cmluZygpKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICisKK25hbWVzcGFj
ZSBpbnRlcm5hbCB7CisKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBBZGRzIGFuICJl
eGNlcHRpb24gdGhyb3duIiBmYXRhbCBmYWlsdXJlIHRvIHRoZSBjdXJyZW50IHRlc3QuCitzdGF0
aWMgc3RkOjpzdHJpbmcgRm9ybWF0Q3h4RXhjZXB0aW9uTWVzc2FnZShjb25zdCBjaGFyKiBkZXNj
cmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGxvY2F0aW9uKSB7CisgIE1lc3NhZ2UgbWVzc2FnZTsKKyAgaWYgKGRlc2NyaXB0
aW9uICE9IE5VTEwpIHsKKyAgICBtZXNzYWdlIDw8ICJDKysgZXhjZXB0aW9uIHdpdGggZGVzY3Jp
cHRpb24gXCIiIDw8IGRlc2NyaXB0aW9uIDw8ICJcIiI7CisgIH0gZWxzZSB7CisgICAgbWVzc2Fn
ZSA8PCAiVW5rbm93biBDKysgZXhjZXB0aW9uIjsKKyAgfQorICBtZXNzYWdlIDw8ICIgdGhyb3du
IGluICIgPDwgbG9jYXRpb24gPDwgIi4iOworCisgIHJldHVybiBtZXNzYWdlLkdldFN0cmluZygp
OworfQorCitzdGF0aWMgc3RkOjpzdHJpbmcgUHJpbnRUZXN0UGFydFJlc3VsdFRvU3RyaW5nKAor
ICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KTsKKworR29vZ2xlVGVz
dEZhaWx1cmVFeGNlcHRpb246Okdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uKAorICAgIGNvbnN0
IFRlc3RQYXJ0UmVzdWx0JiBmYWlsdXJlKQorICAgIDogOjpzdGQ6OnJ1bnRpbWVfZXJyb3IoUHJp
bnRUZXN0UGFydFJlc3VsdFRvU3RyaW5nKGZhaWx1cmUpLmNfc3RyKCkpIHt9CisKKyNlbmRpZiAg
Ly8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworLy8gV2UgcHV0IHRoZXNlIGhlbHBlciBmdW5jdGlv
bnMgaW4gdGhlIGludGVybmFsIG5hbWVzcGFjZSBhcyBJQk0ncyB4bEMKKy8vIGNvbXBpbGVyIHJl
amVjdHMgdGhlIGNvZGUgaWYgdGhleSB3ZXJlIGRlY2xhcmVkIHN0YXRpYy4KKworLy8gUnVucyB0
aGUgZ2l2ZW4gbWV0aG9kIGFuZCBoYW5kbGVzIFNFSCBleGNlcHRpb25zIGl0IHRocm93cywgd2hl
bgorLy8gU0VIIGlzIHN1cHBvcnRlZDsgcmV0dXJucyB0aGUgMC12YWx1ZSBmb3IgdHlwZSBSZXN1
bHQgaW4gY2FzZSBvZiBhbgorLy8gU0VIIGV4Y2VwdGlvbi4gIChNaWNyb3NvZnQgY29tcGlsZXJz
IGNhbm5vdCBoYW5kbGUgU0VIIGFuZCBDKysKKy8vIGV4Y2VwdGlvbnMgaW4gdGhlIHNhbWUgZnVu
Y3Rpb24uICBUaGVyZWZvcmUsIHdlIHByb3ZpZGUgYSBzZXBhcmF0ZQorLy8gd3JhcHBlciBmdW5j
dGlvbiBmb3IgaGFuZGxpbmcgU0VIIGV4Y2VwdGlvbnMuKQordGVtcGxhdGUgPGNsYXNzIFQsIHR5
cGVuYW1lIFJlc3VsdD4KK1Jlc3VsdCBIYW5kbGVTZWhFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBv
cnRlZCgKKyAgICBUKiBvYmplY3QsIFJlc3VsdCAoVDo6Km1ldGhvZCkoKSwgY29uc3QgY2hhciog
bG9jYXRpb24pIHsKKyNpZiBHVEVTVF9IQVNfU0VICiAgIF9fdHJ5IHsKLSAgICBUZWFyRG93bigp
OwotICB9IF9fZXhjZXB0KGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJv
Y2Vzc1NFSCgKKyAgICByZXR1cm4gKG9iamVjdC0+Km1ldGhvZCkoKTsKKyAgfSBfX2V4Y2VwdCAo
aW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6R1Rlc3RTaG91bGRQcm9jZXNzU0VIKCAgLy8gTk9M
SU5UCiAgICAgICBHZXRFeGNlcHRpb25Db2RlKCkpKSB7Ci0gICAgQWRkRXhjZXB0aW9uVGhyb3du
RmFpbHVyZShHZXRFeGNlcHRpb25Db2RlKCksICJUZWFyRG93bigpIik7CisgICAgLy8gV2UgY3Jl
YXRlIHRoZSBleGNlcHRpb24gbWVzc2FnZSBvbiB0aGUgaGVhcCBiZWNhdXNlIFZDKysgcHJvaGli
aXRzCisgICAgLy8gY3JlYXRpb24gb2Ygb2JqZWN0cyB3aXRoIGRlc3RydWN0b3JzIG9uIHN0YWNr
IGluIGZ1bmN0aW9ucyB1c2luZyBfX3RyeQorICAgIC8vIChzZWUgZXJyb3IgQzI3MTIpLgorICAg
IHN0ZDo6c3RyaW5nKiBleGNlcHRpb25fbWVzc2FnZSA9IEZvcm1hdFNlaEV4Y2VwdGlvbk1lc3Nh
Z2UoCisgICAgICAgIEdldEV4Y2VwdGlvbkNvZGUoKSwgbG9jYXRpb24pOworICAgIGludGVybmFs
OjpSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZh
aWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXhj
ZXB0aW9uX21lc3NhZ2UpOworICAgIGRlbGV0ZSBleGNlcHRpb25fbWVzc2FnZTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8UmVzdWx0PigwKTsKICAgfQorI2Vsc2UKKyAgKHZvaWQpbG9jYXRpb247
CisgIHJldHVybiAob2JqZWN0LT4qbWV0aG9kKSgpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfU0VI
Cit9CiAKLSNlbHNlICAvLyBXZSBhcmUgb24gYSBjb21waWxlciBvciBwbGF0Zm9ybSB0aGF0IGRv
ZXNuJ3Qgc3VwcG9ydCBTRUguCi0gIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9u
TGVhdmluZ0dUZXN0KCk7Ci0gIFNldFVwKCk7CisvLyBSdW5zIHRoZSBnaXZlbiBtZXRob2QgYW5k
IGNhdGNoZXMgYW5kIHJlcG9ydHMgQysrIGFuZC9vciBTRUgtc3R5bGUKKy8vIGV4Y2VwdGlvbnMs
IGlmIHRoZXkgYXJlIHN1cHBvcnRlZDsgcmV0dXJucyB0aGUgMC12YWx1ZSBmb3IgdHlwZQorLy8g
UmVzdWx0IGluIGNhc2Ugb2YgYW4gU0VIIGV4Y2VwdGlvbi4KK3RlbXBsYXRlIDxjbGFzcyBULCB0
eXBlbmFtZSBSZXN1bHQ+CitSZXN1bHQgSGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0
ZWQoCisgICAgVCogb2JqZWN0LCBSZXN1bHQgKFQ6OiptZXRob2QpKCksIGNvbnN0IGNoYXIqIGxv
Y2F0aW9uKSB7CisgIC8vIE5PVEU6IFRoZSB1c2VyIGNvZGUgY2FuIGFmZmVjdCB0aGUgd2F5IGlu
IHdoaWNoIEdvb2dsZSBUZXN0IGhhbmRsZXMKKyAgLy8gZXhjZXB0aW9ucyBieSBzZXR0aW5nIEdU
RVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucyksIGJ1dCBvbmx5IGJlZm9yZQorICAvLyBSVU5fQUxM
X1RFU1RTKCkgc3RhcnRzLiBJdCBpcyB0ZWNobmljYWxseSBwb3NzaWJsZSB0byBjaGVjayB0aGUg
ZmxhZworICAvLyBhZnRlciB0aGUgZXhjZXB0aW9uIGlzIGNhdWdodCBhbmQgZWl0aGVyIHJlcG9y
dCBvciByZS10aHJvdyB0aGUKKyAgLy8gZXhjZXB0aW9uIGJhc2VkIG9uIHRoZSBmbGFnJ3MgdmFs
dWU6CisgIC8vCisgIC8vIHRyeSB7CisgIC8vICAgLy8gUGVyZm9ybSB0aGUgdGVzdCBtZXRob2Qu
CisgIC8vIH0gY2F0Y2ggKC4uLikgeworICAvLyAgIGlmIChHVEVTVF9GTEFHKGNhdGNoX2V4Y2Vw
dGlvbnMpKQorICAvLyAgICAgLy8gUmVwb3J0IHRoZSBleGNlcHRpb24gYXMgZmFpbHVyZS4KKyAg
Ly8gICBlbHNlCisgIC8vICAgICB0aHJvdzsgIC8vIFJlLXRocm93cyB0aGUgb3JpZ2luYWwgZXhj
ZXB0aW9uLgorICAvLyB9CisgIC8vCisgIC8vIEhvd2V2ZXIsIHRoZSBwdXJwb3NlIG9mIHRoaXMg
ZmxhZyBpcyB0byBhbGxvdyB0aGUgcHJvZ3JhbSB0byBkcm9wIGludG8KKyAgLy8gdGhlIGRlYnVn
Z2VyIHdoZW4gdGhlIGV4Y2VwdGlvbiBpcyB0aHJvd24uIE9uIG1vc3QgcGxhdGZvcm1zLCBvbmNl
IHRoZQorICAvLyBjb250cm9sIGVudGVycyB0aGUgY2F0Y2ggYmxvY2ssIHRoZSBleGNlcHRpb24g
b3JpZ2luIGluZm9ybWF0aW9uIGlzCisgIC8vIGxvc3QgYW5kIHRoZSBkZWJ1Z2dlciB3aWxsIHN0
b3AgdGhlIHByb2dyYW0gYXQgdGhlIHBvaW50IG9mIHRoZQorICAvLyByZS10aHJvdyBpbiB0aGlz
IGZ1bmN0aW9uIC0tIGluc3RlYWQgb2YgYXQgdGhlIHBvaW50IG9mIHRoZSBvcmlnaW5hbAorICAv
LyB0aHJvdyBzdGF0ZW1lbnQgaW4gdGhlIGNvZGUgdW5kZXIgdGVzdC4gIEZvciB0aGlzIHJlYXNv
biwgd2UgcGVyZm9ybQorICAvLyB0aGUgY2hlY2sgZWFybHksIHNhY3JpZmljaW5nIHRoZSBhYmls
aXR5IHRvIGFmZmVjdCBHb29nbGUgVGVzdCdzCisgIC8vIGV4Y2VwdGlvbiBoYW5kbGluZyBpbiB0
aGUgbWV0aG9kIHdoZXJlIHRoZSBleGNlcHRpb24gaXMgdGhyb3duLgorICBpZiAoaW50ZXJuYWw6
OkdldFVuaXRUZXN0SW1wbCgpLT5jYXRjaF9leGNlcHRpb25zKCkpIHsKKyNpZiBHVEVTVF9IQVNf
RVhDRVBUSU9OUworICAgIHRyeSB7CisgICAgICByZXR1cm4gSGFuZGxlU2VoRXhjZXB0aW9uc0lu
TWV0aG9kSWZTdXBwb3J0ZWQob2JqZWN0LCBtZXRob2QsIGxvY2F0aW9uKTsKKyAgICB9IGNhdGNo
IChjb25zdCBBc3NlcnRpb25FeGNlcHRpb24mKSB7ICAvLyBOT0xJTlQKKyAgICAgIC8vIFRoaXMg
ZmFpbHVyZSB3YXMgcmVwb3J0ZWQgYWxyZWFkeS4KKyAgICB9IGNhdGNoIChjb25zdCBpbnRlcm5h
bDo6R29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24mKSB7ICAvLyBOT0xJTlQKKyAgICAgIC8vIFRo
aXMgZXhjZXB0aW9uIHR5cGUgY2FuIG9ubHkgYmUgdGhyb3duIGJ5IGEgZmFpbGVkIEdvb2dsZQor
ICAgICAgLy8gVGVzdCBhc3NlcnRpb24gd2l0aCB0aGUgaW50ZW50aW9uIG9mIGxldHRpbmcgYW5v
dGhlciB0ZXN0aW5nCisgICAgICAvLyBmcmFtZXdvcmsgY2F0Y2ggaXQuICBUaGVyZWZvcmUgd2Ug
anVzdCByZS10aHJvdyBpdC4KKyAgICAgIHRocm93OworICAgIH0gY2F0Y2ggKGNvbnN0IHN0ZDo6
ZXhjZXB0aW9uJiBlKSB7ICAvLyBOT0xJTlQKKyAgICAgIGludGVybmFsOjpSZXBvcnRGYWlsdXJl
SW5Vbmtub3duTG9jYXRpb24oCisgICAgICAgICAgVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1
cmUsCisgICAgICAgICAgRm9ybWF0Q3h4RXhjZXB0aW9uTWVzc2FnZShlLndoYXQoKSwgbG9jYXRp
b24pKTsKKyAgICB9IGNhdGNoICguLi4pIHsgIC8vIE5PTElOVAorICAgICAgaW50ZXJuYWw6OlJl
cG9ydEZhaWx1cmVJblVua25vd25Mb2NhdGlvbigKKyAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6
a0ZhdGFsRmFpbHVyZSwKKyAgICAgICAgICBGb3JtYXRDeHhFeGNlcHRpb25NZXNzYWdlKE5VTEws
IGxvY2F0aW9uKSk7CisgICAgfQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZXN1bHQ+KDApOwor
I2Vsc2UKKyAgICByZXR1cm4gSGFuZGxlU2VoRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQo
b2JqZWN0LCBtZXRob2QsIGxvY2F0aW9uKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElP
TlMKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gKG9iamVjdC0+Km1ldGhvZCkoKTsKKyAgfQorfQor
Cit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAorLy8gUnVucyB0aGUgdGVzdCBhbmQgdXBkYXRl
cyB0aGUgdGVzdCByZXN1bHQuCit2b2lkIFRlc3Q6OlJ1bigpIHsKKyAgaWYgKCFIYXNTYW1lRml4
dHVyZUNsYXNzKCkpIHJldHVybjsKKworICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBjb25zdCBp
bXBsID0gaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpOworICBpbXBsLT5vc19zdGFja190cmFj
ZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOworICBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0
aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQodGhpcywgJlRlc3Q6OlNldFVwLCAiU2V0VXAoKSIpOwog
ICAvLyBXZSB3aWxsIHJ1biB0aGUgdGVzdCBvbmx5IGlmIFNldFVwKCkgd2FzIHN1Y2Nlc3NmdWwu
CiAgIGlmICghSGFzRmF0YWxGYWlsdXJlKCkpIHsKICAgICBpbXBsLT5vc19zdGFja190cmFjZV9n
ZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotICAgIFRlc3RCb2R5KCk7CisgICAgaW50ZXJu
YWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAorICAgICAgICB0aGlzLCAm
VGVzdDo6VGVzdEJvZHksICJ0aGUgdGVzdCBib2R5Iik7CiAgIH0KIAogICAvLyBIb3dldmVyLCB3
ZSB3YW50IHRvIGNsZWFuIHVwIGFzIG11Y2ggYXMgcG9zc2libGUuICBIZW5jZSB3ZSB3aWxsCiAg
IC8vIGFsd2F5cyBjYWxsIFRlYXJEb3duKCksIGV2ZW4gaWYgU2V0VXAoKSBvciB0aGUgdGVzdCBi
b2R5IGhhcwogICAvLyBmYWlsZWQuCiAgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5V
cG9uTGVhdmluZ0dUZXN0KCk7Ci0gIFRlYXJEb3duKCk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19T
RUgKKyAgaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAorICAg
ICAgdGhpcywgJlRlc3Q6OlRlYXJEb3duLCAiVGVhckRvd24oKSIpOwogfQogCi0KIC8vIFJldHVy
bnMgdHJ1ZSBpZmYgdGhlIGN1cnJlbnQgdGVzdCBoYXMgYSBmYXRhbCBmYWlsdXJlLgogYm9vbCBU
ZXN0OjpIYXNGYXRhbEZhaWx1cmUoKSB7CiAgIHJldHVybiBpbnRlcm5hbDo6R2V0VW5pdFRlc3RJ
bXBsKCktPmN1cnJlbnRfdGVzdF9yZXN1bHQoKS0+SGFzRmF0YWxGYWlsdXJlKCk7CkBAIC0yMTE4
LDIyICsyNTQwLDI4IEBAIGJvb2wgVGVzdDo6SGFzTm9uZmF0YWxGYWlsdXJlKCkgewogLy8gY2xh
c3MgVGVzdEluZm8KIAogLy8gQ29uc3RydWN0cyBhIFRlc3RJbmZvIG9iamVjdC4gSXQgYXNzdW1l
cyBvd25lcnNoaXAgb2YgdGhlIHRlc3QgZmFjdG9yeQotLy8gb2JqZWN0IHZpYSBpbXBsXy4KLVRl
c3RJbmZvOjpUZXN0SW5mbyhjb25zdCBjaGFyKiBhX3Rlc3RfY2FzZV9uYW1lLAotICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGFfbmFtZSwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBhX3Rlc3RfY2FzZV9jb21tZW50LAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGFfY29tbWVudCwKKy8vIG9iamVjdC4KK1Rlc3RJbmZvOjpUZXN0SW5mbyhjb25zdCBzdGQ6OnN0
cmluZyYgYV90ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgYV9uYW1lLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfdHlwZV9wYXJh
bSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX3ZhbHVlX3BhcmFtLAorICAgICAg
ICAgICAgICAgICAgIGludGVybmFsOjpDb2RlTG9jYXRpb24gYV9jb2RlX2xvY2F0aW9uLAogICAg
ICAgICAgICAgICAgICAgIGludGVybmFsOjpUeXBlSWQgZml4dHVyZV9jbGFzc19pZCwKLSAgICAg
ICAgICAgICAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5KSB7Ci0gIGlt
cGxfID0gbmV3IGludGVybmFsOjpUZXN0SW5mb0ltcGwodGhpcywgYV90ZXN0X2Nhc2VfbmFtZSwg
YV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFfdGVzdF9jYXNl
X2NvbW1lbnQsIGFfY29tbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmaXh0dXJlX2NsYXNzX2lkLCBmYWN0b3J5KTsKLX0KKyAgICAgICAgICAgICAgICAgICBpbnRl
cm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5KQorICAgIDogdGVzdF9jYXNlX25hbWVfKGFf
dGVzdF9jYXNlX25hbWUpLAorICAgICAgbmFtZV8oYV9uYW1lKSwKKyAgICAgIHR5cGVfcGFyYW1f
KGFfdHlwZV9wYXJhbSA/IG5ldyBzdGQ6OnN0cmluZyhhX3R5cGVfcGFyYW0pIDogTlVMTCksCisg
ICAgICB2YWx1ZV9wYXJhbV8oYV92YWx1ZV9wYXJhbSA/IG5ldyBzdGQ6OnN0cmluZyhhX3ZhbHVl
X3BhcmFtKSA6IE5VTEwpLAorICAgICAgbG9jYXRpb25fKGFfY29kZV9sb2NhdGlvbiksCisgICAg
ICBmaXh0dXJlX2NsYXNzX2lkXyhmaXh0dXJlX2NsYXNzX2lkKSwKKyAgICAgIHNob3VsZF9ydW5f
KGZhbHNlKSwKKyAgICAgIGlzX2Rpc2FibGVkXyhmYWxzZSksCisgICAgICBtYXRjaGVzX2ZpbHRl
cl8oZmFsc2UpLAorICAgICAgZmFjdG9yeV8oZmFjdG9yeSksCisgICAgICByZXN1bHRfKCkge30K
IAogLy8gRGVzdHJ1Y3RzIGEgVGVzdEluZm8gb2JqZWN0LgotVGVzdEluZm86On5UZXN0SW5mbygp
IHsKLSAgZGVsZXRlIGltcGxfOwotfQorVGVzdEluZm86On5UZXN0SW5mbygpIHsgZGVsZXRlIGZh
Y3RvcnlfOyB9CiAKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKQEAgLTIxNDQsMTAgKzI1NzIsMTEg
QEAgbmFtZXNwYWNlIGludGVybmFsIHsKIC8vCiAvLyAgIHRlc3RfY2FzZV9uYW1lOiAgIG5hbWUg
b2YgdGhlIHRlc3QgY2FzZQogLy8gICBuYW1lOiAgICAgICAgICAgICBuYW1lIG9mIHRoZSB0ZXN0
Ci0vLyAgIHRlc3RfY2FzZV9jb21tZW50OiBhIGNvbW1lbnQgb24gdGhlIHRlc3QgY2FzZSB0aGF0
IHdpbGwgYmUgaW5jbHVkZWQgaW4KLS8vICAgICAgICAgICAgICAgICAgICAgIHRoZSB0ZXN0IG91
dHB1dAotLy8gICBjb21tZW50OiAgICAgICAgICBhIGNvbW1lbnQgb24gdGhlIHRlc3QgdGhhdCB3
aWxsIGJlIGluY2x1ZGVkIGluIHRoZQotLy8gICAgICAgICAgICAgICAgICAgICB0ZXN0IG91dHB1
dAorLy8gICB0eXBlX3BhcmFtOiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdGVzdCdzIHR5cGUgcGFy
YW1ldGVyLCBvciBOVUxMIGlmCisvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMgaXMgbm90IGEg
dHlwZWQgb3IgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKy8vICAgdmFsdWVfcGFyYW06ICAg
ICAgdGV4dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGVzdCdzIHZhbHVlIHBhcmFtZXRlciwKKy8v
ICAgICAgICAgICAgICAgICAgICAgb3IgTlVMTCBpZiB0aGlzIGlzIG5vdCBhIHZhbHVlLXBhcmFt
ZXRlcml6ZWQgdGVzdC4KKy8vICAgY29kZV9sb2NhdGlvbjogICAgY29kZSBsb2NhdGlvbiB3aGVy
ZSB0aGUgdGVzdCBpcyBkZWZpbmVkCiAvLyAgIGZpeHR1cmVfY2xhc3NfaWQ6IElEIG9mIHRoZSB0
ZXN0IGZpeHR1cmUgY2xhc3MKIC8vICAgc2V0X3VwX3RjOiAgICAgICAgcG9pbnRlciB0byB0aGUg
ZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSB0ZXN0IGNhc2UKIC8vICAgdGVhcl9kb3duX3RjOiAg
ICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UK
QEAgLTIxNTUsMjIgKzI1ODQsMjQgQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIC8vICAgICAgICAg
ICAgICAgICAgICAgVGhlIG5ld2x5IGNyZWF0ZWQgVGVzdEluZm8gaW5zdGFuY2Ugd2lsbCBhc3N1
bWUKIC8vICAgICAgICAgICAgICAgICAgICAgb3duZXJzaGlwIG9mIHRoZSBmYWN0b3J5IG9iamVj
dC4KIFRlc3RJbmZvKiBNYWtlQW5kUmVnaXN0ZXJUZXN0SW5mbygKLSAgICBjb25zdCBjaGFyKiB0
ZXN0X2Nhc2VfbmFtZSwgY29uc3QgY2hhciogbmFtZSwKLSAgICBjb25zdCBjaGFyKiB0ZXN0X2Nh
c2VfY29tbWVudCwgY29uc3QgY2hhciogY29tbWVudCwKKyAgICBjb25zdCBjaGFyKiB0ZXN0X2Nh
c2VfbmFtZSwKKyAgICBjb25zdCBjaGFyKiBuYW1lLAorICAgIGNvbnN0IGNoYXIqIHR5cGVfcGFy
YW0sCisgICAgY29uc3QgY2hhciogdmFsdWVfcGFyYW0sCisgICAgQ29kZUxvY2F0aW9uIGNvZGVf
bG9jYXRpb24sCiAgICAgVHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCiAgICAgU2V0VXBUZXN0Q2Fz
ZUZ1bmMgc2V0X3VwX3RjLAogICAgIFRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YywK
ICAgICBUZXN0RmFjdG9yeUJhc2UqIGZhY3RvcnkpIHsKICAgVGVzdEluZm8qIGNvbnN0IHRlc3Rf
aW5mbyA9Ci0gICAgICBuZXcgVGVzdEluZm8odGVzdF9jYXNlX25hbWUsIG5hbWUsIHRlc3RfY2Fz
ZV9jb21tZW50LCBjb21tZW50LAotICAgICAgICAgICAgICAgICAgIGZpeHR1cmVfY2xhc3NfaWQs
IGZhY3RvcnkpOworICAgICAgbmV3IFRlc3RJbmZvKHRlc3RfY2FzZV9uYW1lLCBuYW1lLCB0eXBl
X3BhcmFtLCB2YWx1ZV9wYXJhbSwKKyAgICAgICAgICAgICAgICAgICBjb2RlX2xvY2F0aW9uLCBm
aXh0dXJlX2NsYXNzX2lkLCBmYWN0b3J5KTsKICAgR2V0VW5pdFRlc3RJbXBsKCktPkFkZFRlc3RJ
bmZvKHNldF91cF90YywgdGVhcl9kb3duX3RjLCB0ZXN0X2luZm8pOwogICByZXR1cm4gdGVzdF9p
bmZvOwogfQogCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKIHZvaWQgUmVwb3J0SW52YWxpZFRl
c3RDYXNlVHlwZShjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbiBjb2RlX2xvY2F0aW9uKSB7CiAgIE1lc3Nh
Z2UgZXJyb3JzOwogICBlcnJvcnMKICAgICAgIDw8ICJBdHRlbXB0ZWQgcmVkZWZpbml0aW9uIG9m
IHRlc3QgY2FzZSAiIDw8IHRlc3RfY2FzZV9uYW1lIDw8ICIuXG4iCkBAIC0yMTgyLDQ4ICsyNjEz
LDEyIEBAIHZvaWQgUmVwb3J0SW52YWxpZFRlc3RDYXNlVHlwZShjb25zdCBjaGFyKiB0ZXN0X2Nh
c2VfbmFtZSwKICAgICAgIDw8ICJwcm9iYWJseSByZW5hbWUgb25lIG9mIHRoZSBjbGFzc2VzIHRv
IHB1dCB0aGUgdGVzdHMgaW50byBkaWZmZXJlbnRcbiIKICAgICAgIDw8ICJ0ZXN0IGNhc2VzLiI7
CiAKLSAgZnByaW50ZihzdGRlcnIsICIlcyAlcyIsIEZvcm1hdEZpbGVMb2NhdGlvbihmaWxlLCBs
aW5lKS5jX3N0cigpLAotICAgICAgICAgIGVycm9ycy5HZXRTdHJpbmcoKS5jX3N0cigpKTsKKyAg
R1RFU1RfTE9HXyhFUlJPUikgPDwgRm9ybWF0RmlsZUxvY2F0aW9uKGNvZGVfbG9jYXRpb24uZmls
ZS5jX3N0cigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29k
ZV9sb2NhdGlvbi5saW5lKQorICAgICAgICAgICAgICAgICAgICA8PCAiICIgPDwgZXJyb3JzLkdl
dFN0cmluZygpOwogfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCiB9ICAvLyBu
YW1lc3BhY2UgaW50ZXJuYWwKIAotLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIG5hbWUuCi1jb25z
dCBjaGFyKiBUZXN0SW5mbzo6dGVzdF9jYXNlX25hbWUoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBs
Xy0+dGVzdF9jYXNlX25hbWUoKTsKLX0KLQotLy8gUmV0dXJucyB0aGUgdGVzdCBuYW1lLgotY29u
c3QgY2hhciogVGVzdEluZm86Om5hbWUoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBsXy0+bmFtZSgp
OwotfQotCi0vLyBSZXR1cm5zIHRoZSB0ZXN0IGNhc2UgY29tbWVudC4KLWNvbnN0IGNoYXIqIFRl
c3RJbmZvOjp0ZXN0X2Nhc2VfY29tbWVudCgpIGNvbnN0IHsKLSAgcmV0dXJuIGltcGxfLT50ZXN0
X2Nhc2VfY29tbWVudCgpOwotfQotCi0vLyBSZXR1cm5zIHRoZSB0ZXN0IGNvbW1lbnQuCi1jb25z
dCBjaGFyKiBUZXN0SW5mbzo6Y29tbWVudCgpIGNvbnN0IHsKLSAgcmV0dXJuIGltcGxfLT5jb21t
ZW50KCk7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRlc3Qgc2hvdWxkIHJ1bi4KLWJv
b2wgVGVzdEluZm86OnNob3VsZF9ydW4oKSBjb25zdCB7IHJldHVybiBpbXBsXy0+c2hvdWxkX3J1
bigpOyB9Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRlc3QgbWF0Y2hlcyB0aGUgdXNlci1z
cGVjaWZpZWQgZmlsdGVyLgotYm9vbCBUZXN0SW5mbzo6bWF0Y2hlc19maWx0ZXIoKSBjb25zdCB7
IHJldHVybiBpbXBsXy0+bWF0Y2hlc19maWx0ZXIoKTsgfQotCi0vLyBSZXR1cm5zIHRoZSByZXN1
bHQgb2YgdGhlIHRlc3QuCi1jb25zdCBUZXN0UmVzdWx0KiBUZXN0SW5mbzo6cmVzdWx0KCkgY29u
c3QgeyByZXR1cm4gaW1wbF8tPnJlc3VsdCgpOyB9Ci0KLS8vIEluY3JlbWVudHMgdGhlIG51bWJl
ciBvZiBkZWF0aCB0ZXN0cyBlbmNvdW50ZXJlZCBpbiB0aGlzIHRlc3Qgc28KLS8vIGZhci4KLWlu
dCBUZXN0SW5mbzo6aW5jcmVtZW50X2RlYXRoX3Rlc3RfY291bnQoKSB7Ci0gIHJldHVybiBpbXBs
Xy0+cmVzdWx0KCktPmluY3JlbWVudF9kZWF0aF90ZXN0X2NvdW50KCk7Ci19Ci0KIG5hbWVzcGFj
ZSB7CiAKIC8vIEEgcHJlZGljYXRlIHRoYXQgY2hlY2tzIHRoZSB0ZXN0IG5hbWUgb2YgYSBUZXN0
SW5mbyBhZ2FpbnN0IGEga25vd24KQEAgLTIyNDQsMTEgKzI2MzksMTEgQEAgY2xhc3MgVGVzdE5h
bWVJcyB7CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdGVzdCBuYW1lIG9mIHRlc3RfaW5m
byBtYXRjaGVzIG5hbWVfLgogICBib29sIG9wZXJhdG9yKCkoY29uc3QgVGVzdEluZm8gKiB0ZXN0
X2luZm8pIGNvbnN0IHsKLSAgICByZXR1cm4gdGVzdF9pbmZvICYmIGludGVybmFsOjpTdHJpbmco
dGVzdF9pbmZvLT5uYW1lKCkpLkNvbXBhcmUobmFtZV8pID09IDA7CisgICAgcmV0dXJuIHRlc3Rf
aW5mbyAmJiB0ZXN0X2luZm8tPm5hbWUoKSA9PSBuYW1lXzsKICAgfQogCiAgcHJpdmF0ZToKLSAg
aW50ZXJuYWw6OlN0cmluZyBuYW1lXzsKKyAgc3RkOjpzdHJpbmcgbmFtZV87CiB9OwogCiB9ICAv
LyBuYW1lc3BhY2UKQEAgLTIyNTksNzggKzI2NTQsNjAgQEAgbmFtZXNwYWNlIGludGVybmFsIHsK
IC8vIGFuZCBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBpbnRvIHJlZ3VsYXIgdGVzdHMgYW5kIHJl
Z2lzdGVycyB0aG9zZS4KIC8vIFRoaXMgd2lsbCBiZSBkb25lIGp1c3Qgb25jZSBkdXJpbmcgdGhl
IHByb2dyYW0gcnVudGltZS4KIHZvaWQgVW5pdFRlc3RJbXBsOjpSZWdpc3RlclBhcmFtZXRlcml6
ZWRUZXN0cygpIHsKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAogICBpZiAoIXBhcmFtZXRlcml6
ZWRfdGVzdHNfcmVnaXN0ZXJlZF8pIHsKICAgICBwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnlf
LlJlZ2lzdGVyVGVzdHMoKTsKICAgICBwYXJhbWV0ZXJpemVkX3Rlc3RzX3JlZ2lzdGVyZWRfID0g
dHJ1ZTsKICAgfQotI2VuZGlmCiB9CiAKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCiAvLyBD
cmVhdGVzIHRoZSB0ZXN0IG9iamVjdCwgcnVucyBpdCwgcmVjb3JkcyBpdHMgcmVzdWx0LCBhbmQg
dGhlbgogLy8gZGVsZXRlcyBpdC4KLXZvaWQgVGVzdEluZm9JbXBsOjpSdW4oKSB7Cit2b2lkIFRl
c3RJbmZvOjpSdW4oKSB7CiAgIGlmICghc2hvdWxkX3J1bl8pIHJldHVybjsKIAogICAvLyBUZWxs
cyBVbml0VGVzdCB3aGVyZSB0byBzdG9yZSB0ZXN0IHJlc3VsdC4KLSAgVW5pdFRlc3RJbXBsKiBj
b25zdCBpbXBsID0gaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpOwotICBpbXBsLT5zZXRfY3Vy
cmVudF90ZXN0X2luZm8ocGFyZW50Xyk7CisgIGludGVybmFsOjpVbml0VGVzdEltcGwqIGNvbnN0
IGltcGwgPSBpbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCk7CisgIGltcGwtPnNldF9jdXJyZW50
X3Rlc3RfaW5mbyh0aGlzKTsKIAogICBUZXN0RXZlbnRMaXN0ZW5lciogcmVwZWF0ZXIgPSBVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCkucmVwZWF0ZXIoKTsKIAogICAvLyBOb3Rp
ZmllcyB0aGUgdW5pdCB0ZXN0IGV2ZW50IGxpc3RlbmVycyB0aGF0IGEgdGVzdCBpcyBhYm91dCB0
byBzdGFydC4KLSAgcmVwZWF0ZXItPk9uVGVzdFN0YXJ0KCpwYXJlbnRfKTsKKyAgcmVwZWF0ZXIt
Pk9uVGVzdFN0YXJ0KCp0aGlzKTsKIAotICBjb25zdCBUaW1lSW5NaWxsaXMgc3RhcnQgPSBHZXRU
aW1lSW5NaWxsaXMoKTsKKyAgY29uc3QgVGltZUluTWlsbGlzIHN0YXJ0ID0gaW50ZXJuYWw6Okdl
dFRpbWVJbk1pbGxpcygpOwogCiAgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9u
TGVhdmluZ0dUZXN0KCk7Ci0jaWYgR1RFU1RfSEFTX1NFSAotICAvLyBDYXRjaCBTRUgtc3R5bGUg
ZXhjZXB0aW9ucy4KLSAgVGVzdCogdGVzdCA9IE5VTEw7Ci0KLSAgX190cnkgewotICAgIC8vIENy
ZWF0ZXMgdGhlIHRlc3Qgb2JqZWN0LgotICAgIHRlc3QgPSBmYWN0b3J5Xy0+Q3JlYXRlVGVzdCgp
OwotICB9IF9fZXhjZXB0KGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJv
Y2Vzc1NFSCgKLSAgICAgIEdldEV4Y2VwdGlvbkNvZGUoKSkpIHsKLSAgICBBZGRFeGNlcHRpb25U
aHJvd25GYWlsdXJlKEdldEV4Y2VwdGlvbkNvZGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ0aGUgdGVzdCBmaXh0dXJlJ3MgY29uc3RydWN0b3IiKTsKLSAgICByZXR1cm47Ci0g
IH0KLSNlbHNlICAvLyBXZSBhcmUgb24gYSBjb21waWxlciBvciBwbGF0Zm9ybSB0aGF0IGRvZXNu
J3Qgc3VwcG9ydCBTRUguCi0KLSAgLy8gVE9ETyh3YW4pOiBJZiB0ZXN0LT5SdW4oKSB0aHJvd3Ms
IHRlc3Qgd29uJ3QgYmUgZGVsZXRlZC4gIFRoaXMgaXMKLSAgLy8gbm90IGEgcHJvYmxlbSBub3cg
YXMgd2UgZG9uJ3QgdXNlIGV4Y2VwdGlvbnMuICBJZiB3ZSB3ZXJlIHRvCi0gIC8vIGVuYWJsZSBl
eGNlcHRpb25zLCB3ZSBzaG91bGQgcmV2aXNlIHRoZSBmb2xsb3dpbmcgdG8gYmUKLSAgLy8gZXhj
ZXB0aW9uLXNhZmUuCiAKICAgLy8gQ3JlYXRlcyB0aGUgdGVzdCBvYmplY3QuCi0gIFRlc3QqIHRl
c3QgPSBmYWN0b3J5Xy0+Q3JlYXRlVGVzdCgpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICisg
IFRlc3QqIGNvbnN0IHRlc3QgPSBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZT
dXBwb3J0ZWQoCisgICAgICBmYWN0b3J5XywgJmludGVybmFsOjpUZXN0RmFjdG9yeUJhc2U6OkNy
ZWF0ZVRlc3QsCisgICAgICAidGhlIHRlc3QgZml4dHVyZSdzIGNvbnN0cnVjdG9yIik7CiAKLSAg
Ly8gUnVucyB0aGUgdGVzdCBvbmx5IGlmIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgdGVzdCBmaXh0
dXJlIGRpZG4ndAotICAvLyBnZW5lcmF0ZSBhIGZhdGFsIGZhaWx1cmUuCisgIC8vIFJ1bnMgdGhl
IHRlc3QgaWYgdGhlIGNvbnN0cnVjdG9yIGRpZG4ndCBnZW5lcmF0ZSBhIGZhdGFsIGZhaWx1cmUu
CisgIC8vIE5vdGUgdGhhdCB0aGUgb2JqZWN0IHdpbGwgbm90IGJlIG51bGwKICAgaWYgKCFUZXN0
OjpIYXNGYXRhbEZhaWx1cmUoKSkgeworICAgIC8vIFRoaXMgZG9lc24ndCB0aHJvdyBhcyBhbGwg
dXNlciBjb2RlIHRoYXQgY2FuIHRocm93IGFyZSB3cmFwcGVkIGludG8KKyAgICAvLyBleGNlcHRp
b24gaGFuZGxpbmcgY29kZS4KICAgICB0ZXN0LT5SdW4oKTsKICAgfQogCi0gIC8vIERlbGV0ZXMg
dGhlIHRlc3Qgb2JqZWN0LgotICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxl
YXZpbmdHVGVzdCgpOwotICBkZWxldGUgdGVzdDsKLSAgdGVzdCA9IE5VTEw7CisgICAgLy8gRGVs
ZXRlcyB0aGUgdGVzdCBvYmplY3QuCisgICAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCkt
PlVwb25MZWF2aW5nR1Rlc3QoKTsKKyAgICBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0
aG9kSWZTdXBwb3J0ZWQoCisgICAgICAgIHRlc3QsICZUZXN0OjpEZWxldGVTZWxmXywgInRoZSB0
ZXN0IGZpeHR1cmUncyBkZXN0cnVjdG9yIik7CiAKLSAgcmVzdWx0Xy5zZXRfZWxhcHNlZF90aW1l
KEdldFRpbWVJbk1pbGxpcygpIC0gc3RhcnQpOworICByZXN1bHRfLnNldF9lbGFwc2VkX3RpbWUo
aW50ZXJuYWw6OkdldFRpbWVJbk1pbGxpcygpIC0gc3RhcnQpOwogCiAgIC8vIE5vdGlmaWVzIHRo
ZSB1bml0IHRlc3QgZXZlbnQgbGlzdGVuZXIgdGhhdCBhIHRlc3QgaGFzIGp1c3QgZmluaXNoZWQu
Ci0gIHJlcGVhdGVyLT5PblRlc3RFbmQoKnBhcmVudF8pOworICByZXBlYXRlci0+T25UZXN0RW5k
KCp0aGlzKTsKIAogICAvLyBUZWxscyBVbml0VGVzdCB0byBzdG9wIGFzc29jaWF0aW5nIGFzc2Vy
dGlvbiByZXN1bHRzIHRvIHRoaXMKICAgLy8gdGVzdC4KICAgaW1wbC0+c2V0X2N1cnJlbnRfdGVz
dF9pbmZvKE5VTEwpOwogfQogCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQogLy8gY2xhc3Mg
VGVzdENhc2UKIAogLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgdGVzdHMgaW4gdGhp
cyB0ZXN0IGNhc2UuCkBAIC0yMzQzLDEwICsyNzIwLDIxIEBAIGludCBUZXN0Q2FzZTo6ZmFpbGVk
X3Rlc3RfY291bnQoKSBjb25zdCB7CiAgIHJldHVybiBDb3VudElmKHRlc3RfaW5mb19saXN0Xywg
VGVzdEZhaWxlZCk7CiB9CiAKKy8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB0
aGF0IHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhNTCByZXBvcnQuCitpbnQgVGVzdENhc2U6OnJl
cG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKKyAgcmV0dXJuIENvdW50SWYo
dGVzdF9pbmZvX2xpc3RfLCBUZXN0UmVwb3J0YWJsZURpc2FibGVkKTsKK30KKworLy8gR2V0cyB0
aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlLgogaW50IFRlc3RD
YXNlOjpkaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3QgewogICByZXR1cm4gQ291bnRJZih0ZXN0
X2luZm9fbGlzdF8sIFRlc3REaXNhYmxlZCk7CiB9CiAKKy8vIEdldHMgdGhlIG51bWJlciBvZiB0
ZXN0cyB0byBiZSBwcmludGVkIGluIHRoZSBYTUwgcmVwb3J0LgoraW50IFRlc3RDYXNlOjpyZXBv
cnRhYmxlX3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBDb3VudElmKHRlc3RfaW5mb19s
aXN0XywgVGVzdFJlcG9ydGFibGUpOworfQorCiAvLyBHZXQgdGhlIG51bWJlciBvZiB0ZXN0cyBp
biB0aGlzIHRlc3QgY2FzZSB0aGF0IHNob3VsZCBydW4uCiBpbnQgVGVzdENhc2U6OnRlc3RfdG9f
cnVuX2NvdW50KCkgY29uc3QgewogICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlzdF8sIFNo
b3VsZFJ1blRlc3QpOwpAQCAtMjM2MiwxMyArMjc1MCwxNSBAQCBpbnQgVGVzdENhc2U6OnRvdGFs
X3Rlc3RfY291bnQoKSBjb25zdCB7CiAvLyBBcmd1bWVudHM6CiAvLwogLy8gICBuYW1lOiAgICAg
ICAgIG5hbWUgb2YgdGhlIHRlc3QgY2FzZQorLy8gICBhX3R5cGVfcGFyYW06IHRoZSBuYW1lIG9m
IHRoZSB0ZXN0IGNhc2UncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorLy8gICAgICAgICAg
ICAgICAgIHRoaXMgaXMgbm90IGEgdHlwZWQgb3IgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBj
YXNlLgogLy8gICBzZXRfdXBfdGM6ICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0
cyB1cCB0aGUgdGVzdCBjYXNlCiAvLyAgIHRlYXJfZG93bl90YzogcG9pbnRlciB0byB0aGUgZnVu
Y3Rpb24gdGhhdCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UKLVRlc3RDYXNlOjpUZXN0Q2FzZShj
b25zdCBjaGFyKiBhX25hbWUsIGNvbnN0IGNoYXIqIGFfY29tbWVudCwKK1Rlc3RDYXNlOjpUZXN0
Q2FzZShjb25zdCBjaGFyKiBhX25hbWUsIGNvbnN0IGNoYXIqIGFfdHlwZV9wYXJhbSwKICAgICAg
ICAgICAgICAgICAgICBUZXN0OjpTZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCiAgICAgICAg
ICAgICAgICAgICAgVGVzdDo6VGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3RjKQogICAg
IDogbmFtZV8oYV9uYW1lKSwKLSAgICAgIGNvbW1lbnRfKGFfY29tbWVudCksCisgICAgICB0eXBl
X3BhcmFtXyhhX3R5cGVfcGFyYW0gPyBuZXcgc3RkOjpzdHJpbmcoYV90eXBlX3BhcmFtKSA6IE5V
TEwpLAogICAgICAgc2V0X3VwX3RjXyhzZXRfdXBfdGMpLAogICAgICAgdGVhcl9kb3duX3RjXyh0
ZWFyX2Rvd25fdGMpLAogICAgICAgc2hvdWxkX3J1bl8oZmFsc2UpLApAQCAtMjQxMyw0NSArMjgw
MywyNyBAQCB2b2lkIFRlc3RDYXNlOjpSdW4oKSB7CiAKICAgcmVwZWF0ZXItPk9uVGVzdENhc2VT
dGFydCgqdGhpcyk7CiAgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmlu
Z0dUZXN0KCk7Ci0gIHNldF91cF90Y18oKTsKKyAgaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJ
bk1ldGhvZElmU3VwcG9ydGVkKAorICAgICAgdGhpcywgJlRlc3RDYXNlOjpSdW5TZXRVcFRlc3RD
YXNlLCAiU2V0VXBUZXN0Q2FzZSgpIik7CiAKICAgY29uc3QgaW50ZXJuYWw6OlRpbWVJbk1pbGxp
cyBzdGFydCA9IGludGVybmFsOjpHZXRUaW1lSW5NaWxsaXMoKTsKICAgZm9yIChpbnQgaSA9IDA7
IGkgPCB0b3RhbF90ZXN0X2NvdW50KCk7IGkrKykgewotICAgIEdldE11dGFibGVUZXN0SW5mbyhp
KS0+aW1wbCgpLT5SdW4oKTsKKyAgICBHZXRNdXRhYmxlVGVzdEluZm8oaSktPlJ1bigpOwogICB9
CiAgIGVsYXBzZWRfdGltZV8gPSBpbnRlcm5hbDo6R2V0VGltZUluTWlsbGlzKCkgLSBzdGFydDsK
IAogICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwot
ICB0ZWFyX2Rvd25fdGNfKCk7CisgIGludGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJ
ZlN1cHBvcnRlZCgKKyAgICAgIHRoaXMsICZUZXN0Q2FzZTo6UnVuVGVhckRvd25UZXN0Q2FzZSwg
IlRlYXJEb3duVGVzdENhc2UoKSIpOworCiAgIHJlcGVhdGVyLT5PblRlc3RDYXNlRW5kKCp0aGlz
KTsKICAgaW1wbC0+c2V0X2N1cnJlbnRfdGVzdF9jYXNlKE5VTEwpOwogfQogCiAvLyBDbGVhcnMg
dGhlIHJlc3VsdHMgb2YgYWxsIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlLgogdm9pZCBUZXN0Q2Fz
ZTo6Q2xlYXJSZXN1bHQoKSB7Ci0gIEZvckVhY2godGVzdF9pbmZvX2xpc3RfLCBpbnRlcm5hbDo6
VGVzdEluZm9JbXBsOjpDbGVhclRlc3RSZXN1bHQpOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZm
IHRlc3QgcGFzc2VkLgotYm9vbCBUZXN0Q2FzZTo6VGVzdFBhc3NlZChjb25zdCBUZXN0SW5mbyAq
IHRlc3RfaW5mbykgewotICBjb25zdCBpbnRlcm5hbDo6VGVzdEluZm9JbXBsKiBjb25zdCBpbXBs
ID0gdGVzdF9pbmZvLT5pbXBsKCk7Ci0gIHJldHVybiBpbXBsLT5zaG91bGRfcnVuKCkgJiYgaW1w
bC0+cmVzdWx0KCktPlBhc3NlZCgpOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRlc3QgZmFp
bGVkLgotYm9vbCBUZXN0Q2FzZTo6VGVzdEZhaWxlZChjb25zdCBUZXN0SW5mbyAqIHRlc3RfaW5m
bykgewotICBjb25zdCBpbnRlcm5hbDo6VGVzdEluZm9JbXBsKiBjb25zdCBpbXBsID0gdGVzdF9p
bmZvLT5pbXBsKCk7Ci0gIHJldHVybiBpbXBsLT5zaG91bGRfcnVuKCkgJiYgaW1wbC0+cmVzdWx0
KCktPkZhaWxlZCgpOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRlc3QgaXMgZGlzYWJsZWQu
Ci1ib29sIFRlc3RDYXNlOjpUZXN0RGlzYWJsZWQoY29uc3QgVGVzdEluZm8gKiB0ZXN0X2luZm8p
IHsKLSAgcmV0dXJuIHRlc3RfaW5mby0+aW1wbCgpLT5pc19kaXNhYmxlZCgpOwotfQotCi0vLyBS
ZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHRlc3Qgc2hvdWxkIHJ1bi4KLWJvb2wgVGVzdENhc2U6
OlNob3VsZFJ1blRlc3QoY29uc3QgVGVzdEluZm8gKnRlc3RfaW5mbykgewotICByZXR1cm4gdGVz
dF9pbmZvLT5pbXBsKCktPnNob3VsZF9ydW4oKTsKKyAgYWRfaG9jX3Rlc3RfcmVzdWx0Xy5DbGVh
cigpOworICBGb3JFYWNoKHRlc3RfaW5mb19saXN0XywgVGVzdEluZm86OkNsZWFyVGVzdFJlc3Vs
dCk7CiB9CiAKIC8vIFNodWZmbGVzIHRoZSB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KQEAgLTI0
NzEsMjAgKzI4NDMsMjAgQEAgdm9pZCBUZXN0Q2FzZTo6VW5zaHVmZmxlVGVzdHMoKSB7CiAvLwog
Ly8gRm9ybWF0Q291bnRhYmxlTm91bigxLCAiZm9ybXVsYSIsICJmb3JtdWxpIikgcmV0dXJucyAi
MSBmb3JtdWxhIi4KIC8vIEZvcm1hdENvdW50YWJsZU5vdW4oNSwgImJvb2siLCAiYm9va3MiKSBy
ZXR1cm5zICI1IGJvb2tzIi4KLXN0YXRpYyBpbnRlcm5hbDo6U3RyaW5nIEZvcm1hdENvdW50YWJs
ZU5vdW4oaW50IGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyICogc2luZ3VsYXJfZm9ybSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIHBsdXJhbF9mb3JtKSB7Ci0gIHJldHVy
biBpbnRlcm5hbDo6U3RyaW5nOjpGb3JtYXQoIiVkICVzIiwgY291bnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY291bnQgPT0gMSA/IHNpbmd1bGFyX2Zvcm0gOiBwbHVyYWxf
Zm9ybSk7CitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0Q291bnRhYmxlTm91bihpbnQgY291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogc2lu
Z3VsYXJfZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKiBwbHVyYWxfZm9ybSkgeworICByZXR1cm4gaW50ZXJuYWw6OlN0cmVhbWFibGVUb1N0
cmluZyhjb3VudCkgKyAiICIgKworICAgICAgKGNvdW50ID09IDEgPyBzaW5ndWxhcl9mb3JtIDog
cGx1cmFsX2Zvcm0pOwogfQogCiAvLyBGb3JtYXRzIHRoZSBjb3VudCBvZiB0ZXN0cy4KLXN0YXRp
YyBpbnRlcm5hbDo6U3RyaW5nIEZvcm1hdFRlc3RDb3VudChpbnQgdGVzdF9jb3VudCkgeworc3Rh
dGljIHN0ZDo6c3RyaW5nIEZvcm1hdFRlc3RDb3VudChpbnQgdGVzdF9jb3VudCkgewogICByZXR1
cm4gRm9ybWF0Q291bnRhYmxlTm91bih0ZXN0X2NvdW50LCAidGVzdCIsICJ0ZXN0cyIpOwogfQog
CiAvLyBGb3JtYXRzIHRoZSBjb3VudCBvZiB0ZXN0IGNhc2VzLgotc3RhdGljIGludGVybmFsOjpT
dHJpbmcgRm9ybWF0VGVzdENhc2VDb3VudChpbnQgdGVzdF9jYXNlX2NvdW50KSB7CitzdGF0aWMg
c3RkOjpzdHJpbmcgRm9ybWF0VGVzdENhc2VDb3VudChpbnQgdGVzdF9jYXNlX2NvdW50KSB7CiAg
IHJldHVybiBGb3JtYXRDb3VudGFibGVOb3VuKHRlc3RfY2FzZV9jb3VudCwgInRlc3QgY2FzZSIs
ICJ0ZXN0IGNhc2VzIik7CiB9CiAKQEAgLTI1MDQsMTMgKzI4NzYsMTUgQEAgc3RhdGljIGNvbnN0
IGNoYXIgKiBUZXN0UGFydFJlc3VsdFR5cGVUb1N0cmluZyhUZXN0UGFydFJlc3VsdDo6VHlwZSB0
eXBlKSB7CiAjZWxzZQogICAgICAgcmV0dXJuICJGYWlsdXJlXG4iOwogI2VuZGlmCisgICAgZGVm
YXVsdDoKKyAgICAgIHJldHVybiAiVW5rbm93biByZXN1bHQgdHlwZSI7CiAgIH0KLQotICByZXR1
cm4gIlVua25vd24gcmVzdWx0IHR5cGUiOwogfQogCi0vLyBQcmludHMgYSBUZXN0UGFydFJlc3Vs
dCB0byBhIFN0cmluZy4KLXN0YXRpYyBpbnRlcm5hbDo6U3RyaW5nIFByaW50VGVzdFBhcnRSZXN1
bHRUb1N0cmluZygKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIFByaW50cyBhIFRlc3RQYXJ0
UmVzdWx0IHRvIGFuIHN0ZDo6c3RyaW5nLgorc3RhdGljIHN0ZDo6c3RyaW5nIFByaW50VGVzdFBh
cnRSZXN1bHRUb1N0cmluZygKICAgICBjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jl
c3VsdCkgewogICByZXR1cm4gKE1lc3NhZ2UoKQogICAgICAgICAgIDw8IGludGVybmFsOjpGb3Jt
YXRGaWxlTG9jYXRpb24odGVzdF9wYXJ0X3Jlc3VsdC5maWxlX25hbWUoKSwKQEAgLTI1MjEsNyAr
Mjg5NSw3IEBAIHN0YXRpYyBpbnRlcm5hbDo6U3RyaW5nIFByaW50VGVzdFBhcnRSZXN1bHRUb1N0
cmluZygKIAogLy8gUHJpbnRzIGEgVGVzdFBhcnRSZXN1bHQuCiBzdGF0aWMgdm9pZCBQcmludFRl
c3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7Ci0g
IGNvbnN0IGludGVybmFsOjpTdHJpbmcmIHJlc3VsdCA9CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBy
ZXN1bHQgPQogICAgICAgUHJpbnRUZXN0UGFydFJlc3VsdFRvU3RyaW5nKHRlc3RfcGFydF9yZXN1
bHQpOwogICBwcmludGYoIiVzXG4iLCByZXN1bHQuY19zdHIoKSk7CiAgIGZmbHVzaChzdGRvdXQp
OwpAQCAtMjU0MCw4ICsyOTE0LDYgQEAgc3RhdGljIHZvaWQgUHJpbnRUZXN0UGFydFJlc3VsdChj
b25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgewogCiAvLyBjbGFzcyBQcmV0
dHlVbml0VGVzdFJlc3VsdFByaW50ZXIKIAotbmFtZXNwYWNlIGludGVybmFsIHsKLQogZW51bSBH
VGVzdENvbG9yIHsKICAgQ09MT1JfREVGQVVMVCwKICAgQ09MT1JfUkVELApAQCAtMjU0OSwxMCAr
MjkyMSwxMSBAQCBlbnVtIEdUZXN0Q29sb3IgewogICBDT0xPUl9ZRUxMT1cKIH07CiAKLSNpZiBH
VEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorI2lmIEdURVNUX09T
X1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFICYmIFwKKyAgICAhR1RFU1RfT1Nf
V0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lORE9XU19SVCAmJiAhR1RFU1RfT1NfV0lORE9X
U19NSU5HVwogCiAvLyBSZXR1cm5zIHRoZSBjaGFyYWN0ZXIgYXR0cmlidXRlIGZvciB0aGUgZ2l2
ZW4gY29sb3IuCi1XT1JEIEdldENvbG9yQXR0cmlidXRlKEdUZXN0Q29sb3IgY29sb3IpIHsKK3N0
YXRpYyBXT1JEIEdldENvbG9yQXR0cmlidXRlKEdUZXN0Q29sb3IgY29sb3IpIHsKICAgc3dpdGNo
IChjb2xvcikgewogICAgIGNhc2UgQ09MT1JfUkVEOiAgICByZXR1cm4gRk9SRUdST1VORF9SRUQ7
CiAgICAgY2FzZSBDT0xPUl9HUkVFTjogIHJldHVybiBGT1JFR1JPVU5EX0dSRUVOOwpAQCAtMjU2
MSwxMSArMjkzNCw0MiBAQCBXT1JEIEdldENvbG9yQXR0cmlidXRlKEdUZXN0Q29sb3IgY29sb3Ip
IHsKICAgfQogfQogCitzdGF0aWMgaW50IEdldEJpdE9mZnNldChXT1JEIGNvbG9yX21hc2spIHsK
KyAgaWYgKGNvbG9yX21hc2sgPT0gMCkgcmV0dXJuIDA7CisKKyAgaW50IGJpdE9mZnNldCA9IDA7
CisgIHdoaWxlICgoY29sb3JfbWFzayAmIDEpID09IDApIHsKKyAgICBjb2xvcl9tYXNrID4+PSAx
OworICAgICsrYml0T2Zmc2V0OworICB9CisgIHJldHVybiBiaXRPZmZzZXQ7Cit9CisKK3N0YXRp
YyBXT1JEIEdldE5ld0NvbG9yKEdUZXN0Q29sb3IgY29sb3IsIFdPUkQgb2xkX2NvbG9yX2F0dHJz
KSB7CisgIC8vIExldCdzIHJldXNlIHRoZSBCRworICBzdGF0aWMgY29uc3QgV09SRCBiYWNrZ3Jv
dW5kX21hc2sgPSBCQUNLR1JPVU5EX0JMVUUgfCBCQUNLR1JPVU5EX0dSRUVOIHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkFDS0dST1VORF9SRUQgfCBCQUNLR1JPVU5E
X0lOVEVOU0lUWTsKKyAgc3RhdGljIGNvbnN0IFdPUkQgZm9yZWdyb3VuZF9tYXNrID0gRk9SRUdS
T1VORF9CTFVFIHwgRk9SRUdST1VORF9HUkVFTiB8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZPUkVHUk9VTkRfUkVEIHwgRk9SRUdST1VORF9JTlRFTlNJVFk7CisgIGNv
bnN0IFdPUkQgZXhpc3RpbmdfYmcgPSBvbGRfY29sb3JfYXR0cnMgJiBiYWNrZ3JvdW5kX21hc2s7
CisKKyAgV09SRCBuZXdfY29sb3IgPQorICAgICAgR2V0Q29sb3JBdHRyaWJ1dGUoY29sb3IpIHwg
ZXhpc3RpbmdfYmcgfCBGT1JFR1JPVU5EX0lOVEVOU0lUWTsKKyAgc3RhdGljIGNvbnN0IGludCBi
Z19iaXRPZmZzZXQgPSBHZXRCaXRPZmZzZXQoYmFja2dyb3VuZF9tYXNrKTsKKyAgc3RhdGljIGNv
bnN0IGludCBmZ19iaXRPZmZzZXQgPSBHZXRCaXRPZmZzZXQoZm9yZWdyb3VuZF9tYXNrKTsKKwor
ICBpZiAoKChuZXdfY29sb3IgJiBiYWNrZ3JvdW5kX21hc2spID4+IGJnX2JpdE9mZnNldCkgPT0K
KyAgICAgICgobmV3X2NvbG9yICYgZm9yZWdyb3VuZF9tYXNrKSA+PiBmZ19iaXRPZmZzZXQpKSB7
CisgICAgbmV3X2NvbG9yIF49IEZPUkVHUk9VTkRfSU5URU5TSVRZOyAgLy8gaW52ZXJ0IGludGVu
c2l0eQorICB9CisgIHJldHVybiBuZXdfY29sb3I7Cit9CisKICNlbHNlCiAKIC8vIFJldHVybnMg
dGhlIEFOU0kgY29sb3IgY29kZSBmb3IgdGhlIGdpdmVuIGNvbG9yLiAgQ09MT1JfREVGQVVMVCBp
cwogLy8gYW4gaW52YWxpZCBpbnB1dC4KLWNvbnN0IGNoYXIqIEdldEFuc2lDb2xvckNvZGUoR1Rl
c3RDb2xvciBjb2xvcikgeworc3RhdGljIGNvbnN0IGNoYXIqIEdldEFuc2lDb2xvckNvZGUoR1Rl
c3RDb2xvciBjb2xvcikgewogICBzd2l0Y2ggKGNvbG9yKSB7CiAgICAgY2FzZSBDT0xPUl9SRUQ6
ICAgICByZXR1cm4gIjEiOwogICAgIGNhc2UgQ09MT1JfR1JFRU46ICAgcmV0dXJuICIyIjsKQEAg
LTI1ODEsNyArMjk4NSw3IEBAIGJvb2wgU2hvdWxkVXNlQ29sb3IoYm9vbCBzdGRvdXRfaXNfdHR5
KSB7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGd0ZXN0X2NvbG9yID0gR1RFU1RfRkxBRyhjb2xvciku
Y19zdHIoKTsKIAogICBpZiAoU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGd0
ZXN0X2NvbG9yLCAiYXV0byIpKSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUworI2lmIEdURVNUX09T
X1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfTUlOR1cKICAgICAvLyBPbiBXaW5kb3dzIHRo
ZSBURVJNIHZhcmlhYmxlIGlzIHVzdWFsbHkgbm90IHNldCwgYnV0IHRoZQogICAgIC8vIGNvbnNv
bGUgdGhlcmUgZG9lcyBzdXBwb3J0IGNvbG9ycy4KICAgICByZXR1cm4gc3Rkb3V0X2lzX3R0eTsK
QEAgLTI1OTIsNiArMjk5NiwxMiBAQCBib29sIFNob3VsZFVzZUNvbG9yKGJvb2wgc3Rkb3V0X2lz
X3R0eSkgewogICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgInh0ZXJtIikgfHwK
ICAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJ4dGVybS1jb2xvciIpIHx8CiAg
ICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAieHRlcm0tMjU2Y29sb3IiKSB8fAor
ICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgInNjcmVlbiIpIHx8CisgICAgICAg
IFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAic2NyZWVuLTI1NmNvbG9yIikgfHwKKyAgICAg
ICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJ0bXV4IikgfHwKKyAgICAgICAgU3RyaW5n
OjpDU3RyaW5nRXF1YWxzKHRlcm0sICJ0bXV4LTI1NmNvbG9yIikgfHwKKyAgICAgICAgU3RyaW5n
OjpDU3RyaW5nRXF1YWxzKHRlcm0sICJyeHZ0LXVuaWNvZGUiKSB8fAorICAgICAgICBTdHJpbmc6
OkNTdHJpbmdFcXVhbHModGVybSwgInJ4dnQtdW5pY29kZS0yNTZjb2xvciIpIHx8CiAgICAgICAg
IFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAibGludXgiKSB8fAogICAgICAgICBTdHJpbmc6
OkNTdHJpbmdFcXVhbHModGVybSwgImN5Z3dpbiIpOwogICAgIHJldHVybiBzdGRvdXRfaXNfdHR5
ICYmIHRlcm1fc3VwcG9ydHNfY29sb3I7CkBAIC0yNjExLDEyICszMDIxLDEzIEBAIGJvb2wgU2hv
dWxkVXNlQ29sb3IoYm9vbCBzdGRvdXRfaXNfdHR5KSB7CiAvLyBjYW5ub3Qgc2ltcGx5IGVtaXQg
c3BlY2lhbCBjaGFyYWN0ZXJzIGFuZCBoYXZlIHRoZSB0ZXJtaW5hbCBjaGFuZ2UgY29sb3JzLgog
Ly8gVGhpcyByb3V0aW5lIG11c3QgYWN0dWFsbHkgZW1pdCB0aGUgY2hhcmFjdGVycyByYXRoZXIg
dGhhbiByZXR1cm4gYSBzdHJpbmcKIC8vIHRoYXQgd291bGQgYmUgY29sb3JlZCB3aGVuIHByaW50
ZWQsIGFzIGNhbiBiZSBkb25lIG9uIExpbnV4Lgotdm9pZCBDb2xvcmVkUHJpbnRmKEdUZXN0Q29s
b3IgY29sb3IsIGNvbnN0IGNoYXIqIGZtdCwgLi4uKSB7CitzdGF0aWMgdm9pZCBDb2xvcmVkUHJp
bnRmKEdUZXN0Q29sb3IgY29sb3IsIGNvbnN0IGNoYXIqIGZtdCwgLi4uKSB7CiAgIHZhX2xpc3Qg
YXJnczsKICAgdmFfc3RhcnQoYXJncywgZm10KTsKIAotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9C
SUxFIHx8IEdURVNUX09TX1NZTUJJQU4gfHwgR1RFU1RfT1NfWk9TCi0gIGNvbnN0IGJvb2wgdXNl
X2NvbG9yID0gZmFsc2U7CisjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgfHwgR1RFU1RfT1Nf
U1lNQklBTiB8fCBHVEVTVF9PU19aT1MgfHwgXAorICAgIEdURVNUX09TX0lPUyB8fCBHVEVTVF9P
U19XSU5ET1dTX1BIT05FIHx8IEdURVNUX09TX1dJTkRPV1NfUlQKKyAgY29uc3QgYm9vbCB1c2Vf
Y29sb3IgPSBBbHdheXNGYWxzZSgpOwogI2Vsc2UKICAgc3RhdGljIGNvbnN0IGJvb2wgaW5fY29s
b3JfbW9kZSA9CiAgICAgICBTaG91bGRVc2VDb2xvcihwb3NpeDo6SXNBVFRZKHBvc2l4OjpGaWxl
Tm8oc3Rkb3V0KSkgIT0gMCk7CkBAIC0yNjMwLDIwICszMDQxLDIyIEBAIHZvaWQgQ29sb3JlZFBy
aW50ZihHVGVzdENvbG9yIGNvbG9yLCBjb25zdCBjaGFyKiBmbXQsIC4uLikgewogICAgIHJldHVy
bjsKICAgfQogCi0jaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKKyNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRSAmJiBc
CisgICAgIUdURVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQgJiYg
IUdURVNUX09TX1dJTkRPV1NfTUlOR1cKICAgY29uc3QgSEFORExFIHN0ZG91dF9oYW5kbGUgPSBH
ZXRTdGRIYW5kbGUoU1REX09VVFBVVF9IQU5ETEUpOwogCiAgIC8vIEdldHMgdGhlIGN1cnJlbnQg
dGV4dCBjb2xvci4KICAgQ09OU09MRV9TQ1JFRU5fQlVGRkVSX0lORk8gYnVmZmVyX2luZm87CiAg
IEdldENvbnNvbGVTY3JlZW5CdWZmZXJJbmZvKHN0ZG91dF9oYW5kbGUsICZidWZmZXJfaW5mbyk7
CiAgIGNvbnN0IFdPUkQgb2xkX2NvbG9yX2F0dHJzID0gYnVmZmVyX2luZm8ud0F0dHJpYnV0ZXM7
CisgIGNvbnN0IFdPUkQgbmV3X2NvbG9yID0gR2V0TmV3Q29sb3IoY29sb3IsIG9sZF9jb2xvcl9h
dHRycyk7CiAKICAgLy8gV2UgbmVlZCB0byBmbHVzaCB0aGUgc3RyZWFtIGJ1ZmZlcnMgaW50byB0
aGUgY29uc29sZSBiZWZvcmUgZWFjaAogICAvLyBTZXRDb25zb2xlVGV4dEF0dHJpYnV0ZSBjYWxs
IGxlc3QgaXQgYWZmZWN0IHRoZSB0ZXh0IHRoYXQgaXMgYWxyZWFkeQogICAvLyBwcmludGVkIGJ1
dCBoYXMgbm90IHlldCByZWFjaGVkIHRoZSBjb25zb2xlLgogICBmZmx1c2goc3Rkb3V0KTsKLSAg
U2V0Q29uc29sZVRleHRBdHRyaWJ1dGUoc3Rkb3V0X2hhbmRsZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgR2V0Q29sb3JBdHRyaWJ1dGUoY29sb3IpIHwgRk9SRUdST1VORF9JTlRFTlNJVFkp
OworICBTZXRDb25zb2xlVGV4dEF0dHJpYnV0ZShzdGRvdXRfaGFuZGxlLCBuZXdfY29sb3IpOwor
CiAgIHZwcmludGYoZm10LCBhcmdzKTsKIAogICBmZmx1c2goc3Rkb3V0KTsKQEAgLTI2NTcsNiAr
MzA3MCwyOCBAQCB2b2lkIENvbG9yZWRQcmludGYoR1Rlc3RDb2xvciBjb2xvciwgY29uc3QgY2hh
ciogZm10LCAuLi4pIHsKICAgdmFfZW5kKGFyZ3MpOwogfQogCisvLyBUZXh0IHByaW50ZWQgaW4g
R29vZ2xlIFRlc3QncyB0ZXh0IG91dHB1dCBhbmQgLS1ndGVzdF9saXN0X3Rlc3RzCisvLyBvdXRw
dXQgdG8gbGFiZWwgdGhlIHR5cGUgcGFyYW1ldGVyIGFuZCB2YWx1ZSBwYXJhbWV0ZXIgZm9yIGEg
dGVzdC4KK3N0YXRpYyBjb25zdCBjaGFyIGtUeXBlUGFyYW1MYWJlbFtdID0gIlR5cGVQYXJhbSI7
CitzdGF0aWMgY29uc3QgY2hhciBrVmFsdWVQYXJhbUxhYmVsW10gPSAiR2V0UGFyYW0oKSI7CisK
K3N0YXRpYyB2b2lkIFByaW50RnVsbFRlc3RDb21tZW50SWZQcmVzZW50KGNvbnN0IFRlc3RJbmZv
JiB0ZXN0X2luZm8pIHsKKyAgY29uc3QgY2hhciogY29uc3QgdHlwZV9wYXJhbSA9IHRlc3RfaW5m
by50eXBlX3BhcmFtKCk7CisgIGNvbnN0IGNoYXIqIGNvbnN0IHZhbHVlX3BhcmFtID0gdGVzdF9p
bmZvLnZhbHVlX3BhcmFtKCk7CisKKyAgaWYgKHR5cGVfcGFyYW0gIT0gTlVMTCB8fCB2YWx1ZV9w
YXJhbSAhPSBOVUxMKSB7CisgICAgcHJpbnRmKCIsIHdoZXJlICIpOworICAgIGlmICh0eXBlX3Bh
cmFtICE9IE5VTEwpIHsKKyAgICAgIHByaW50ZigiJXMgPSAlcyIsIGtUeXBlUGFyYW1MYWJlbCwg
dHlwZV9wYXJhbSk7CisgICAgICBpZiAodmFsdWVfcGFyYW0gIT0gTlVMTCkKKyAgICAgICAgcHJp
bnRmKCIgYW5kICIpOworICAgIH0KKyAgICBpZiAodmFsdWVfcGFyYW0gIT0gTlVMTCkgeworICAg
ICAgcHJpbnRmKCIlcyA9ICVzIiwga1ZhbHVlUGFyYW1MYWJlbCwgdmFsdWVfcGFyYW0pOworICAg
IH0KKyAgfQorfQorCiAvLyBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIFRlc3RFdmVudExpc3Rl
bmVyIGludGVyZmFjZS4KIC8vCiAvLyBDbGFzcyBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXIg
aXMgY29weWFibGUuCkBAIC0yNjg0LDggKzMxMTksNiBAQCBjbGFzcyBQcmV0dHlVbml0VGVzdFJl
c3VsdFByaW50ZXIgOiBwdWJsaWMgVGVzdEV2ZW50TGlzdGVuZXIgewogCiAgcHJpdmF0ZToKICAg
c3RhdGljIHZvaWQgUHJpbnRGYWlsZWRUZXN0cyhjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KTsK
LQotICBpbnRlcm5hbDo6U3RyaW5nIHRlc3RfY2FzZV9uYW1lXzsKIH07CiAKICAgLy8gRmlyZWQg
YmVmb3JlIGVhY2ggaXRlcmF0aW9uIG9mIHRlc3RzIHN0YXJ0cy4KQEAgLTI2OTgsMTUgKzMxMzEs
MTYgQEAgdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdEl0ZXJhdGlvblN0
YXJ0KAogCiAgIC8vIFByaW50cyB0aGUgZmlsdGVyIGlmIGl0J3Mgbm90ICouICBUaGlzIHJlbWlu
ZHMgdGhlIHVzZXIgdGhhdCBzb21lCiAgIC8vIHRlc3RzIG1heSBiZSBza2lwcGVkLgotICBpZiAo
IWludGVybmFsOjpTdHJpbmc6OkNTdHJpbmdFcXVhbHMoZmlsdGVyLCBrVW5pdmVyc2FsRmlsdGVy
KSkgeworICBpZiAoIVN0cmluZzo6Q1N0cmluZ0VxdWFscyhmaWx0ZXIsIGtVbml2ZXJzYWxGaWx0
ZXIpKSB7CiAgICAgQ29sb3JlZFByaW50ZihDT0xPUl9ZRUxMT1csCiAgICAgICAgICAgICAgICAg
ICAiTm90ZTogJXMgZmlsdGVyID0gJXNcbiIsIEdURVNUX05BTUVfLCBmaWx0ZXIpOwogICB9CiAK
ICAgaWYgKGludGVybmFsOjpTaG91bGRTaGFyZChrVGVzdFRvdGFsU2hhcmRzLCBrVGVzdFNoYXJk
SW5kZXgsIGZhbHNlKSkgeworICAgIGNvbnN0IEludDMyIHNoYXJkX2luZGV4ID0gSW50MzJGcm9t
RW52T3JEaWUoa1Rlc3RTaGFyZEluZGV4LCAtMSk7CiAgICAgQ29sb3JlZFByaW50ZihDT0xPUl9Z
RUxMT1csCi0gICAgICAgICAgICAgICAgICAiTm90ZTogVGhpcyBpcyB0ZXN0IHNoYXJkICVzIG9m
ICVzLlxuIiwKLSAgICAgICAgICAgICAgICAgIGludGVybmFsOjpwb3NpeDo6R2V0RW52KGtUZXN0
U2hhcmRJbmRleCksCisgICAgICAgICAgICAgICAgICAiTm90ZTogVGhpcyBpcyB0ZXN0IHNoYXJk
ICVkIG9mICVzLlxuIiwKKyAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oc2hhcmRf
aW5kZXgpICsgMSwKICAgICAgICAgICAgICAgICAgIGludGVybmFsOjpwb3NpeDo6R2V0RW52KGtU
ZXN0VG90YWxTaGFyZHMpKTsKICAgfQogCkBAIC0yNzMxLDI3ICszMTY1LDIyIEBAIHZvaWQgUHJl
dHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPbkVudmlyb25tZW50c1NldFVwU3RhcnQoCiB9CiAK
IHZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RDYXNlU3RhcnQoY29uc3Qg
VGVzdENhc2UmIHRlc3RfY2FzZSkgewotICB0ZXN0X2Nhc2VfbmFtZV8gPSB0ZXN0X2Nhc2UubmFt
ZSgpOwotICBjb25zdCBpbnRlcm5hbDo6U3RyaW5nIGNvdW50cyA9CisgIGNvbnN0IHN0ZDo6c3Ry
aW5nIGNvdW50cyA9CiAgICAgICBGb3JtYXRDb3VudGFibGVOb3VuKHRlc3RfY2FzZS50ZXN0X3Rv
X3J1bl9jb3VudCgpLCAidGVzdCIsICJ0ZXN0cyIpOwogICBDb2xvcmVkUHJpbnRmKENPTE9SX0dS
RUVOLCAiWy0tLS0tLS0tLS1dICIpOwotICBwcmludGYoIiVzIGZyb20gJXMiLCBjb3VudHMuY19z
dHIoKSwgdGVzdF9jYXNlX25hbWVfLmNfc3RyKCkpOwotICBpZiAodGVzdF9jYXNlLmNvbW1lbnQo
KVswXSA9PSAnXDAnKSB7CisgIHByaW50ZigiJXMgZnJvbSAlcyIsIGNvdW50cy5jX3N0cigpLCB0
ZXN0X2Nhc2UubmFtZSgpKTsKKyAgaWYgKHRlc3RfY2FzZS50eXBlX3BhcmFtKCkgPT0gTlVMTCkg
ewogICAgIHByaW50ZigiXG4iKTsKICAgfSBlbHNlIHsKLSAgICBwcmludGYoIiwgd2hlcmUgJXNc
biIsIHRlc3RfY2FzZS5jb21tZW50KCkpOworICAgIHByaW50ZigiLCB3aGVyZSAlcyA9ICVzXG4i
LCBrVHlwZVBhcmFtTGFiZWwsIHRlc3RfY2FzZS50eXBlX3BhcmFtKCkpOwogICB9CiAgIGZmbHVz
aChzdGRvdXQpOwogfQogCiB2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0
U3RhcnQoY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbykgewogICBDb2xvcmVkUHJpbnRmKENPTE9S
X0dSRUVOLCAgIlsgUlVOICAgICAgXSAiKTsKLSAgUHJpbnRUZXN0TmFtZSh0ZXN0X2Nhc2VfbmFt
ZV8uY19zdHIoKSwgdGVzdF9pbmZvLm5hbWUoKSk7Ci0gIGlmICh0ZXN0X2luZm8uY29tbWVudCgp
WzBdID09ICdcMCcpIHsKLSAgICBwcmludGYoIlxuIik7Ci0gIH0gZWxzZSB7Ci0gICAgcHJpbnRm
KCIsIHdoZXJlICVzXG4iLCB0ZXN0X2luZm8uY29tbWVudCgpKTsKLSAgfQorICBQcmludFRlc3RO
YW1lKHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgcHJp
bnRmKCJcbiIpOwogICBmZmx1c2goc3Rkb3V0KTsKIH0KIApAQCAtMjc3Myw3ICszMjAyLDEwIEBA
IHZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RFbmQoY29uc3QgVGVzdElu
Zm8mIHRlc3RfaW5mbykgewogICB9IGVsc2UgewogICAgIENvbG9yZWRQcmludGYoQ09MT1JfUkVE
LCAiWyAgRkFJTEVEICBdICIpOwogICB9Ci0gIFByaW50VGVzdE5hbWUodGVzdF9jYXNlX25hbWVf
LmNfc3RyKCksIHRlc3RfaW5mby5uYW1lKCkpOworICBQcmludFRlc3ROYW1lKHRlc3RfaW5mby50
ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgaWYgKHRlc3RfaW5mby5yZXN1
bHQoKS0+RmFpbGVkKCkpCisgICAgUHJpbnRGdWxsVGVzdENvbW1lbnRJZlByZXNlbnQodGVzdF9p
bmZvKTsKKwogICBpZiAoR1RFU1RfRkxBRyhwcmludF90aW1lKSkgewogICAgIHByaW50ZigiICgl
cyBtcylcbiIsIGludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcoCiAgICAgICAgICAgIHRlc3Rf
aW5mby5yZXN1bHQoKS0+ZWxhcHNlZF90aW1lKCkpLmNfc3RyKCkpOwpAQCAtMjc4NiwxMiArMzIx
OCwxMSBAQCB2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0RW5kKGNvbnN0
IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKIHZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVy
OjpPblRlc3RDYXNlRW5kKGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKICAgaWYgKCFHVEVT
VF9GTEFHKHByaW50X3RpbWUpKSByZXR1cm47CiAKLSAgdGVzdF9jYXNlX25hbWVfID0gdGVzdF9j
YXNlLm5hbWUoKTsKLSAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyBjb3VudHMgPQorICBjb25zdCBz
dGQ6OnN0cmluZyBjb3VudHMgPQogICAgICAgRm9ybWF0Q291bnRhYmxlTm91bih0ZXN0X2Nhc2Uu
dGVzdF90b19ydW5fY291bnQoKSwgInRlc3QiLCAidGVzdHMiKTsKICAgQ29sb3JlZFByaW50ZihD
T0xPUl9HUkVFTiwgIlstLS0tLS0tLS0tXSAiKTsKICAgcHJpbnRmKCIlcyBmcm9tICVzICglcyBt
cyB0b3RhbClcblxuIiwKLSAgICAgICAgIGNvdW50cy5jX3N0cigpLCB0ZXN0X2Nhc2VfbmFtZV8u
Y19zdHIoKSwKKyAgICAgICAgIGNvdW50cy5jX3N0cigpLCB0ZXN0X2Nhc2UubmFtZSgpLAogICAg
ICAgICAgaW50ZXJuYWw6OlN0cmVhbWFibGVUb1N0cmluZyh0ZXN0X2Nhc2UuZWxhcHNlZF90aW1l
KCkpLmNfc3RyKCkpOwogICBmZmx1c2goc3Rkb3V0KTsKIH0KQEAgLTI4MjIsMjEgKzMyNTMsMTQg
QEAgdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6OlByaW50RmFpbGVkVGVzdHMoY29u
c3QgVW5pdFRlc3QmIHVuaXRfdGVzdCkgewogICAgICAgfQogICAgICAgQ29sb3JlZFByaW50ZihD
T0xPUl9SRUQsICJbICBGQUlMRUQgIF0gIik7CiAgICAgICBwcmludGYoIiVzLiVzIiwgdGVzdF9j
YXNlLm5hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7Ci0gICAgICBpZiAodGVzdF9jYXNlLmNvbW1l
bnQoKVswXSAhPSAnXDAnIHx8Ci0gICAgICAgICAgdGVzdF9pbmZvLmNvbW1lbnQoKVswXSAhPSAn
XDAnKSB7Ci0gICAgICAgIHByaW50ZigiLCB3aGVyZSAlcyIsIHRlc3RfY2FzZS5jb21tZW50KCkp
OwotICAgICAgICBpZiAodGVzdF9jYXNlLmNvbW1lbnQoKVswXSAhPSAnXDAnICYmCi0gICAgICAg
ICAgICB0ZXN0X2luZm8uY29tbWVudCgpWzBdICE9ICdcMCcpIHsKLSAgICAgICAgICBwcmludGYo
IiBhbmQgIik7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHByaW50ZigiJXNcbiIsIHRlc3Rf
aW5mby5jb21tZW50KCkpOworICAgICAgUHJpbnRGdWxsVGVzdENvbW1lbnRJZlByZXNlbnQodGVz
dF9pbmZvKTsKKyAgICAgIHByaW50ZigiXG4iKTsKICAgICB9CiAgIH0KIH0KIAotIHZvaWQgUHJl
dHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRl
c3QmIHVuaXRfdGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCAvKml0ZXJhdGlvbiovKSB7Cit2b2lkIFByZXR0eVVuaXRUZXN0UmVz
dWx0UHJpbnRlcjo6T25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCAvKml0ZXJhdGlvbiovKSB7CiAgIENvbG9yZWRQcmludGYoQ09MT1JfR1JFRU4sICAiWz09PT09
PT09PT1dICIpOwogICBwcmludGYoIiVzIGZyb20gJXMgcmFuLiIsCiAgICAgICAgICBGb3JtYXRU
ZXN0Q291bnQodW5pdF90ZXN0LnRlc3RfdG9fcnVuX2NvdW50KCkpLmNfc3RyKCksCkBAIC0yODU5
LDcgKzMyODMsNyBAQCB2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRGYWls
ZWRUZXN0cyhjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBudW1fZmFpbHVyZXMgPT0gMSA/ICJURVNUIiA6ICJURVNUUyIpOwogICB9CiAKLSAgaW50
IG51bV9kaXNhYmxlZCA9IHVuaXRfdGVzdC5kaXNhYmxlZF90ZXN0X2NvdW50KCk7CisgIGludCBu
dW1fZGlzYWJsZWQgPSB1bml0X3Rlc3QucmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCk7
CiAgIGlmIChudW1fZGlzYWJsZWQgJiYgIUdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVz
dHMpKSB7CiAgICAgaWYgKCFudW1fZmFpbHVyZXMpIHsKICAgICAgIHByaW50ZigiXG4iKTsgIC8v
IEFkZCBhIHNwYWNlciBpZiBubyBGQUlMVVJFIGJhbm5lciBpcyBkaXNwbGF5ZWQuCkBAIC0yOTIy
LDcgKzMzNDYsNyBAQCB2b2lkIFRlc3RFdmVudFJlcGVhdGVyOjpBcHBlbmQoVGVzdEV2ZW50TGlz
dGVuZXIgKmxpc3RlbmVyKSB7CiAgIGxpc3RlbmVyc18ucHVzaF9iYWNrKGxpc3RlbmVyKTsKIH0K
IAotLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogRmFjdG9yIHRoZSBzZWFyY2ggZnVuY3Rpb25h
bGl0eSBpbnRvIFZlY3Rvcjo6RmluZC4KKy8vIEZJWE1FOiBGYWN0b3IgdGhlIHNlYXJjaCBmdW5j
dGlvbmFsaXR5IGludG8gVmVjdG9yOjpGaW5kLgogVGVzdEV2ZW50TGlzdGVuZXIqIFRlc3RFdmVu
dFJlcGVhdGVyOjpSZWxlYXNlKFRlc3RFdmVudExpc3RlbmVyICpsaXN0ZW5lcikgewogICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxpc3RlbmVyc18uc2l6ZSgpOyArK2kpIHsKICAgICBpZiAobGlz
dGVuZXJzX1tpXSA9PSBsaXN0ZW5lcikgewpAQCAtMjk5Niw2ICszNDIwLDExIEBAIGNsYXNzIFht
bFVuaXRUZXN0UmVzdWx0UHJpbnRlciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsK
ICAgZXhwbGljaXQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyKGNvbnN0IGNoYXIqIG91dHB1dF9m
aWxlKTsKIAogICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0
JiB1bml0X3Rlc3QsIGludCBpdGVyYXRpb24pOworICB2b2lkIExpc3RUZXN0c01hdGNoaW5nRmls
dGVyKGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMpOworCisgIC8vIFBy
aW50cyBhbiBYTUwgc3VtbWFyeSBvZiBhbGwgdW5pdCB0ZXN0cy4KKyAgc3RhdGljIHZvaWQgUHJp
bnRYbWxUZXN0c0xpc3Qoc3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMpOwog
CiAgcHJpdmF0ZToKICAgLy8gSXMgYyBhIHdoaXRlc3BhY2UgY2hhcmFjdGVyIHRoYXQgaXMgbm9y
bWFsaXplZCB0byBhIHNwYWNlIGNoYXJhY3RlcgpAQCAtMzAxMywxOCArMzQ0MiwyNyBAQCBjbGFz
cyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5l
ciB7CiAgIC8vIGlzX2F0dHJpYnV0ZSBpcyB0cnVlLCB0aGUgdGV4dCBpcyBtZWFudCB0byBhcHBl
YXIgYXMgYW4gYXR0cmlidXRlCiAgIC8vIHZhbHVlLCBhbmQgbm9ybWFsaXphYmxlIHdoaXRlc3Bh
Y2UgaXMgcHJlc2VydmVkIGJ5IHJlcGxhY2luZyBpdAogICAvLyB3aXRoIGNoYXJhY3RlciByZWZl
cmVuY2VzLgotICBzdGF0aWMgU3RyaW5nIEVzY2FwZVhtbChjb25zdCBjaGFyKiBzdHIsIGJvb2wg
aXNfYXR0cmlidXRlKTsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEVzY2FwZVhtbChjb25zdCBzdGQ6
OnN0cmluZyYgc3RyLCBib29sIGlzX2F0dHJpYnV0ZSk7CiAKICAgLy8gUmV0dXJucyB0aGUgZ2l2
ZW4gc3RyaW5nIHdpdGggYWxsIGNoYXJhY3RlcnMgaW52YWxpZCBpbiBYTUwgcmVtb3ZlZC4KLSAg
c3RhdGljIFN0cmluZyBSZW1vdmVJbnZhbGlkWG1sQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBzdHIp
OworICBzdGF0aWMgc3RkOjpzdHJpbmcgUmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoY29uc3Qg
c3RkOjpzdHJpbmcmIHN0cik7CiAKICAgLy8gQ29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgRXNj
YXBlWG1sIHdoZW4gc3RyIGlzIGFuIGF0dHJpYnV0ZSB2YWx1ZS4KLSAgc3RhdGljIFN0cmluZyBF
c2NhcGVYbWxBdHRyaWJ1dGUoY29uc3QgY2hhciogc3RyKSB7CisgIHN0YXRpYyBzdGQ6OnN0cmlu
ZyBFc2NhcGVYbWxBdHRyaWJ1dGUoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgewogICAgIHJldHVy
biBFc2NhcGVYbWwoc3RyLCB0cnVlKTsKICAgfQogCiAgIC8vIENvbnZlbmllbmNlIHdyYXBwZXIg
YXJvdW5kIEVzY2FwZVhtbCB3aGVuIHN0ciBpcyBub3QgYW4gYXR0cmlidXRlIHZhbHVlLgotICBz
dGF0aWMgU3RyaW5nIEVzY2FwZVhtbFRleHQoY29uc3QgY2hhciogc3RyKSB7IHJldHVybiBFc2Nh
cGVYbWwoc3RyLCBmYWxzZSk7IH0KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEVzY2FwZVhtbFRleHQo
Y29uc3QgY2hhciogc3RyKSB7CisgICAgcmV0dXJuIEVzY2FwZVhtbChzdHIsIGZhbHNlKTsKKyAg
fQorCisgIC8vIFZlcmlmaWVzIHRoYXQgdGhlIGdpdmVuIGF0dHJpYnV0ZSBiZWxvbmdzIHRvIHRo
ZSBnaXZlbiBlbGVtZW50IGFuZAorICAvLyBzdHJlYW1zIHRoZSBhdHRyaWJ1dGUgYXMgWE1MLgor
ICBzdGF0aWMgdm9pZCBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RkOjpvc3RyZWFtKiBzdHJlYW0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZWxlbWVu
dF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgdmFsdWUpOwogCiAgIC8vIFN0cmVhbXMgYW4gWE1MIENEQVRBIHNlY3Rpb24sIGVzY2Fw
aW5nIGludmFsaWQgQ0RBVEEgc2VxdWVuY2VzIGFzIG5lZWRlZC4KICAgc3RhdGljIHZvaWQgT3V0
cHV0WG1sQ0RhdGFTZWN0aW9uKDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sIGNvbnN0IGNoYXIqIGRh
dGEpOwpAQCAtMzAzNSwxOSArMzQ3MywyNiBAQCBjbGFzcyBYbWxVbml0VGVzdFJlc3VsdFByaW50
ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pOwogCiAgIC8vIFByaW50cyBh
biBYTUwgcmVwcmVzZW50YXRpb24gb2YgYSBUZXN0Q2FzZSBvYmplY3QKLSAgc3RhdGljIHZvaWQg
UHJpbnRYbWxUZXN0Q2FzZShGSUxFKiBvdXQsIGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpOwor
ICBzdGF0aWMgdm9pZCBQcmludFhtbFRlc3RDYXNlKDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSk7
CiAKICAgLy8gUHJpbnRzIGFuIFhNTCBzdW1tYXJ5IG9mIHVuaXRfdGVzdCB0byBvdXRwdXQgc3Ry
ZWFtIG91dC4KLSAgc3RhdGljIHZvaWQgUHJpbnRYbWxVbml0VGVzdChGSUxFKiBvdXQsIGNvbnN0
IFVuaXRUZXN0JiB1bml0X3Rlc3QpOworICBzdGF0aWMgdm9pZCBQcmludFhtbFVuaXRUZXN0KDo6
c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVW5pdFRlc3QmIHVuaXRfdGVzdCk7CiAKICAgLy8gUHJvZHVjZXMgYSBzdHJpbmcgcmVwcmVz
ZW50aW5nIHRoZSB0ZXN0IHByb3BlcnRpZXMgaW4gYSByZXN1bHQgYXMgc3BhY2UKICAgLy8gZGVs
aW1pdGVkIFhNTCBhdHRyaWJ1dGVzIGJhc2VkIG9uIHRoZSBwcm9wZXJ0eSBrZXk9InZhbHVlIiBw
YWlycy4KLSAgLy8gV2hlbiB0aGUgU3RyaW5nIGlzIG5vdCBlbXB0eSwgaXQgaW5jbHVkZXMgYSBz
cGFjZSBhdCB0aGUgYmVnaW5uaW5nLAorICAvLyBXaGVuIHRoZSBzdGQ6OnN0cmluZyBpcyBub3Qg
ZW1wdHksIGl0IGluY2x1ZGVzIGEgc3BhY2UgYXQgdGhlIGJlZ2lubmluZywKICAgLy8gdG8gZGVs
aW1pdCB0aGlzIGF0dHJpYnV0ZSBmcm9tIHByaW9yIGF0dHJpYnV0ZXMuCi0gIHN0YXRpYyBTdHJp
bmcgVGVzdFByb3BlcnRpZXNBc1htbEF0dHJpYnV0ZXMoY29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0
KTsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKGNv
bnN0IFRlc3RSZXN1bHQmIHJlc3VsdCk7CisKKyAgLy8gU3RyZWFtcyBhbiBYTUwgcmVwcmVzZW50
YXRpb24gb2YgdGhlIHRlc3QgcHJvcGVydGllcyBvZiBhIFRlc3RSZXN1bHQKKyAgLy8gb2JqZWN0
LgorICBzdGF0aWMgdm9pZCBPdXRwdXRYbWxUZXN0UHJvcGVydGllcyhzdGQ6Om9zdHJlYW0qIHN0
cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFJl
c3VsdCYgcmVzdWx0KTsKIAogICAvLyBUaGUgb3V0cHV0IGZpbGUuCi0gIGNvbnN0IFN0cmluZyBv
dXRwdXRfZmlsZV87CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG91dHB1dF9maWxlXzsKIAogICBHVEVT
VF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcik7CiB9
OwpAQCAtMzA1NSw0MSArMzUwMCwyNyBAQCBjbGFzcyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIg
OiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CiAvLyBDcmVhdGVzIGEgbmV3IFhtbFVu
aXRUZXN0UmVzdWx0UHJpbnRlci4KIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6WG1sVW5pdFRl
c3RSZXN1bHRQcmludGVyKGNvbnN0IGNoYXIqIG91dHB1dF9maWxlKQogICAgIDogb3V0cHV0X2Zp
bGVfKG91dHB1dF9maWxlKSB7Ci0gIGlmIChvdXRwdXRfZmlsZV8uY19zdHIoKSA9PSBOVUxMIHx8
IG91dHB1dF9maWxlXy5lbXB0eSgpKSB7Ci0gICAgZnByaW50ZihzdGRlcnIsICJYTUwgb3V0cHV0
IGZpbGUgbWF5IG5vdCBiZSBudWxsXG4iKTsKLSAgICBmZmx1c2goc3RkZXJyKTsKLSAgICBleGl0
KEVYSVRfRkFJTFVSRSk7CisgIGlmIChvdXRwdXRfZmlsZV8uZW1wdHkoKSkgeworICAgIEdURVNU
X0xPR18oRkFUQUwpIDw8ICJYTUwgb3V0cHV0IGZpbGUgbWF5IG5vdCBiZSBudWxsIjsKICAgfQog
fQogCiAvLyBDYWxsZWQgYWZ0ZXIgdGhlIHVuaXQgdGVzdCBlbmRzLgogdm9pZCBYbWxVbml0VGVz
dFJlc3VsdFByaW50ZXI6Ok9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90
ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgLyppdGVyYXRpb24qLykgewotICBGSUxFKiB4bWxvdXQgPSBOVUxMOwotICBGaWxlUGF0aCBv
dXRwdXRfZmlsZShvdXRwdXRfZmlsZV8pOwotICBGaWxlUGF0aCBvdXRwdXRfZGlyKG91dHB1dF9m
aWxlLlJlbW92ZUZpbGVOYW1lKCkpOworICBGSUxFKiB4bWxvdXQgPSBPcGVuRmlsZUZvcldyaXRp
bmcob3V0cHV0X2ZpbGVfKTsKKyAgc3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOworICBQcmludFht
bFVuaXRUZXN0KCZzdHJlYW0sIHVuaXRfdGVzdCk7CisgIGZwcmludGYoeG1sb3V0LCAiJXMiLCBT
dHJpbmdTdHJlYW1Ub1N0cmluZygmc3RyZWFtKS5jX3N0cigpKTsKKyAgZmNsb3NlKHhtbG91dCk7
Cit9CiAKLSAgaWYgKG91dHB1dF9kaXIuQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKSB7
Ci0gICAgeG1sb3V0ID0gcG9zaXg6OkZPcGVuKG91dHB1dF9maWxlXy5jX3N0cigpLCAidyIpOwot
ICB9Ci0gIGlmICh4bWxvdXQgPT0gTlVMTCkgewotICAgIC8vIFRPRE8od2FuKTogcmVwb3J0IHRo
ZSByZWFzb24gb2YgdGhlIGZhaWx1cmUuCi0gICAgLy8KLSAgICAvLyBXZSBkb24ndCBkbyBpdCBm
b3Igbm93IGFzOgotICAgIC8vCi0gICAgLy8gICAxLiBUaGVyZSBpcyBubyB1cmdlbnQgbmVlZCBm
b3IgaXQuCi0gICAgLy8gICAyLiBJdCdzIGEgYml0IGludm9sdmVkIHRvIG1ha2UgdGhlIGVycm5v
IHZhcmlhYmxlIHRocmVhZC1zYWZlIG9uCi0gICAgLy8gICAgICBhbGwgdGhyZWUgb3BlcmF0aW5n
IHN5c3RlbXMgKExpbnV4LCBXaW5kb3dzLCBhbmQgTWFjIE9TKS4KLSAgICAvLyAgIDMuIFRvIGlu
dGVycHJldCB0aGUgbWVhbmluZyBvZiBlcnJubyBpbiBhIHRocmVhZC1zYWZlIHdheSwKLSAgICAv
LyAgICAgIHdlIG5lZWQgdGhlIHN0cmVycm9yX3IoKSBmdW5jdGlvbiwgd2hpY2ggaXMgbm90IGF2
YWlsYWJsZSBvbgotICAgIC8vICAgICAgV2luZG93cy4KLSAgICBmcHJpbnRmKHN0ZGVyciwKLSAg
ICAgICAgICAgICJVbmFibGUgdG8gb3BlbiBmaWxlIFwiJXNcIlxuIiwKLSAgICAgICAgICAgIG91
dHB1dF9maWxlXy5jX3N0cigpKTsKLSAgICBmZmx1c2goc3RkZXJyKTsKLSAgICBleGl0KEVYSVRf
RkFJTFVSRSk7Ci0gIH0KLSAgUHJpbnRYbWxVbml0VGVzdCh4bWxvdXQsIHVuaXRfdGVzdCk7Cit2
b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6TGlzdFRlc3RzTWF0Y2hpbmdGaWx0ZXIoCisg
ICAgY29uc3Qgc3RkOjp2ZWN0b3I8VGVzdENhc2UqPiYgdGVzdF9jYXNlcykgeworICBGSUxFKiB4
bWxvdXQgPSBPcGVuRmlsZUZvcldyaXRpbmcob3V0cHV0X2ZpbGVfKTsKKyAgc3RkOjpzdHJpbmdz
dHJlYW0gc3RyZWFtOworICBQcmludFhtbFRlc3RzTGlzdCgmc3RyZWFtLCB0ZXN0X2Nhc2VzKTsK
KyAgZnByaW50Zih4bWxvdXQsICIlcyIsIFN0cmluZ1N0cmVhbVRvU3RyaW5nKCZzdHJlYW0pLmNf
c3RyKCkpOwogICBmY2xvc2UoeG1sb3V0KTsKIH0KIApAQCAtMzEwMyw0NCArMzUzNCw0NSBAQCB2
b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVu
aXRUZXN0JiB1bml0X3Rlc3QsCiAvLyBtb2R1bGUgd2lsbCBjb25zaXN0IG9mIG9yZGluYXJ5IEVu
Z2xpc2ggdGV4dC4KIC8vIElmIHRoaXMgbW9kdWxlIGlzIGV2ZXIgbW9kaWZpZWQgdG8gcHJvZHVj
ZSB2ZXJzaW9uIDEuMSBYTUwgb3V0cHV0LAogLy8gbW9zdCBpbnZhbGlkIGNoYXJhY3RlcnMgY2Fu
IGJlIHJldGFpbmVkIHVzaW5nIGNoYXJhY3RlciByZWZlcmVuY2VzLgotLy8gVE9ETyh3YW4pOiBJ
dCBtaWdodCBiZSBuaWNlIHRvIGhhdmUgYSBtaW5pbWFsbHkgaW52YXNpdmUsIGh1bWFuLXJlYWRh
YmxlCisvLyBGSVhNRTogSXQgbWlnaHQgYmUgbmljZSB0byBoYXZlIGEgbWluaW1hbGx5IGludmFz
aXZlLCBodW1hbi1yZWFkYWJsZQogLy8gZXNjYXBpbmcgc2NoZW1lIGZvciBpbnZhbGlkIGNoYXJh
Y3RlcnMsIHJhdGhlciB0aGFuIGRyb3BwaW5nIHRoZW0uCi1TdHJpbmcgWG1sVW5pdFRlc3RSZXN1
bHRQcmludGVyOjpFc2NhcGVYbWwoY29uc3QgY2hhciogc3RyLCBib29sIGlzX2F0dHJpYnV0ZSkg
eworc3RkOjpzdHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpFc2NhcGVYbWwoCisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHN0ciwgYm9vbCBpc19hdHRyaWJ1dGUpIHsKICAgTWVzc2FnZSBt
OwogCi0gIGlmIChzdHIgIT0gTlVMTCkgewotICAgIGZvciAoY29uc3QgY2hhciogc3JjID0gc3Ry
OyAqc3JjOyArK3NyYykgewotICAgICAgc3dpdGNoICgqc3JjKSB7Ci0gICAgICAgIGNhc2UgJzwn
OgotICAgICAgICAgIG0gPDwgIiZsdDsiOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
ICc+JzoKLSAgICAgICAgICBtIDw8ICImZ3Q7IjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSAnJic6Ci0gICAgICAgICAgbSA8PCAiJmFtcDsiOwotICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlICdcJyc6Ci0gICAgICAgICAgaWYgKGlzX2F0dHJpYnV0ZSkKLSAgICAgICAgICAg
IG0gPDwgIiZhcG9zOyI7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgbSA8PCAnXCcnOwot
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICciJzoKLSAgICAgICAgICBpZiAoaXNfYXR0
cmlidXRlKQotICAgICAgICAgICAgbSA8PCAiJnF1b3Q7IjsKKyAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzdHIuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBjaGFyIGNoID0gc3RyW2ldOworICAg
IHN3aXRjaCAoY2gpIHsKKyAgICAgIGNhc2UgJzwnOgorICAgICAgICBtIDw8ICImbHQ7IjsKKyAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlICc+JzoKKyAgICAgICAgbSA8PCAiJmd0OyI7CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSAnJic6CisgICAgICAgIG0gPDwgIiZhbXA7IjsKKyAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlICdcJyc6CisgICAgICAgIGlmIChpc19hdHRyaWJ1dGUpCisg
ICAgICAgICAgbSA8PCAiJmFwb3M7IjsKKyAgICAgICAgZWxzZQorICAgICAgICAgIG0gPDwgJ1wn
JzsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICciJzoKKyAgICAgICAgaWYgKGlzX2F0dHJp
YnV0ZSkKKyAgICAgICAgICBtIDw8ICImcXVvdDsiOworICAgICAgICBlbHNlCisgICAgICAgICAg
bSA8PCAnIic7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKElz
VmFsaWRYbWxDaGFyYWN0ZXIoY2gpKSB7CisgICAgICAgICAgaWYgKGlzX2F0dHJpYnV0ZSAmJiBJ
c05vcm1hbGl6YWJsZVdoaXRlc3BhY2UoY2gpKQorICAgICAgICAgICAgbSA8PCAiJiN4IiA8PCBT
dHJpbmc6OkZvcm1hdEJ5dGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKQorICAgICAg
ICAgICAgICA8PCAiOyI7CiAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgbSA8PCAnIic7Ci0g
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgaWYgKElzVmFsaWRY
bWxDaGFyYWN0ZXIoKnNyYykpIHsKLSAgICAgICAgICAgIGlmIChpc19hdHRyaWJ1dGUgJiYgSXNO
b3JtYWxpemFibGVXaGl0ZXNwYWNlKCpzcmMpKQotICAgICAgICAgICAgICBtIDw8IFN0cmluZzo6
Rm9ybWF0KCImI3glMDJYOyIsIHVuc2lnbmVkKCpzcmMpKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgbSA8PCAqc3JjOwotICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLSAg
ICAgIH0KKyAgICAgICAgICAgIG0gPDwgY2g7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAg
ICAgfQogICB9CiAKQEAgLTMxNTAsMjEgKzM1ODIsMjAgQEAgU3RyaW5nIFhtbFVuaXRUZXN0UmVz
dWx0UHJpbnRlcjo6RXNjYXBlWG1sKGNvbnN0IGNoYXIqIHN0ciwgYm9vbCBpc19hdHRyaWJ1dGUp
IHsKIC8vIFJldHVybnMgdGhlIGdpdmVuIHN0cmluZyB3aXRoIGFsbCBjaGFyYWN0ZXJzIGludmFs
aWQgaW4gWE1MIHJlbW92ZWQuCiAvLyBDdXJyZW50bHkgaW52YWxpZCBjaGFyYWN0ZXJzIGFyZSBk
cm9wcGVkIGZyb20gdGhlIHN0cmluZy4gQW4KIC8vIGFsdGVybmF0aXZlIGlzIHRvIHJlcGxhY2Ug
dGhlbSB3aXRoIGNlcnRhaW4gY2hhcmFjdGVycyBzdWNoIGFzIC4gb3IgPy4KLVN0cmluZyBYbWxV
bml0VGVzdFJlc3VsdFByaW50ZXI6OlJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGNvbnN0IGNo
YXIqIHN0cikgewotICBjaGFyKiBjb25zdCBvdXRwdXQgPSBuZXcgY2hhcltzdHJsZW4oc3RyKSAr
IDFdOwotICBjaGFyKiBhcHBlbmRlciA9IG91dHB1dDsKLSAgZm9yIChjaGFyIGNoID0gKnN0cjsg
Y2ggIT0gJ1wwJzsgY2ggPSAqKytzdHIpCi0gICAgaWYgKElzVmFsaWRYbWxDaGFyYWN0ZXIoY2gp
KQotICAgICAgKmFwcGVuZGVyKysgPSBjaDsKLSAgKmFwcGVuZGVyID0gJ1wwJzsKK3N0ZDo6c3Ry
aW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMo
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgeworICBzdGQ6OnN0cmluZyBvdXRwdXQ7Cisg
IG91dHB1dC5yZXNlcnZlKHN0ci5zaXplKCkpOworICBmb3IgKHN0ZDo6c3RyaW5nOjpjb25zdF9p
dGVyYXRvciBpdCA9IHN0ci5iZWdpbigpOyBpdCAhPSBzdHIuZW5kKCk7ICsraXQpCisgICAgaWYg
KElzVmFsaWRYbWxDaGFyYWN0ZXIoKml0KSkKKyAgICAgIG91dHB1dC5wdXNoX2JhY2soKml0KTsK
IAotICBTdHJpbmcgcmV0X3ZhbHVlKG91dHB1dCk7Ci0gIGRlbGV0ZVtdIG91dHB1dDsKLSAgcmV0
dXJuIHJldF92YWx1ZTsKKyAgcmV0dXJuIG91dHB1dDsKIH0KIAogLy8gVGhlIGZvbGxvd2luZyBy
b3V0aW5lcyBnZW5lcmF0ZSBhbiBYTUwgcmVwcmVzZW50YXRpb24gb2YgYSBVbml0VGVzdAogLy8g
b2JqZWN0LgorLy8gR09PR0xFVEVTVF9DTTAwMDkgRE8gTk9UIERFTEVURQogLy8KIC8vIFRoaXMg
aXMgaG93IEdvb2dsZSBUZXN0IGNvbmNlcHRzIG1hcCB0byB0aGUgRFREOgogLy8KQEAgLTMxODIs
MTAgKzM2MTMsNDEgQEAgU3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UmVtb3ZlSW52
YWxpZFhtbENoYXJhY3RlcnMoY29uc3QgY2hhciogc3RyKSB7CiAvLyBGb3JtYXRzIHRoZSBnaXZl
biB0aW1lIGluIG1pbGxpc2Vjb25kcyBhcyBzZWNvbmRzLgogc3RkOjpzdHJpbmcgRm9ybWF0VGlt
ZUluTWlsbGlzQXNTZWNvbmRzKFRpbWVJbk1pbGxpcyBtcykgewogICA6OnN0ZDo6c3RyaW5nc3Ry
ZWFtIHNzOwotICBzcyA8PCBtcy8xMDAwLjA7CisgIHNzIDw8IChzdGF0aWNfY2FzdDxkb3VibGU+
KG1zKSAqIDFlLTMpOwogICByZXR1cm4gc3Muc3RyKCk7CiB9CiAKK3N0YXRpYyBib29sIFBvcnRh
YmxlTG9jYWx0aW1lKHRpbWVfdCBzZWNvbmRzLCBzdHJ1Y3QgdG0qIG91dCkgeworI2lmIGRlZmlu
ZWQoX01TQ19WRVIpCisgIHJldHVybiBsb2NhbHRpbWVfcyhvdXQsICZzZWNvbmRzKSA9PSAwOwor
I2VsaWYgZGVmaW5lZChfX01JTkdXMzJfXykgfHwgZGVmaW5lZChfX01JTkdXNjRfXykKKyAgLy8g
TUlOR1cgPHRpbWUuaD4gcHJvdmlkZXMgbmVpdGhlciBsb2NhbHRpbWVfciBub3IgbG9jYWx0aW1l
X3MsIGJ1dCB1c2VzCisgIC8vIFdpbmRvd3MnIGxvY2FsdGltZSgpLCB3aGljaCBoYXMgYSB0aHJl
YWQtbG9jYWwgdG0gYnVmZmVyLgorICBzdHJ1Y3QgdG0qIHRtX3B0ciA9IGxvY2FsdGltZSgmc2Vj
b25kcyk7ICAvLyBOT0xJTlQKKyAgaWYgKHRtX3B0ciA9PSBOVUxMKQorICAgIHJldHVybiBmYWxz
ZTsKKyAgKm91dCA9ICp0bV9wdHI7CisgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgcmV0dXJuIGxv
Y2FsdGltZV9yKCZzZWNvbmRzLCBvdXQpICE9IE5VTEw7CisjZW5kaWYKK30KKworLy8gQ29udmVy
dHMgdGhlIGdpdmVuIGVwb2NoIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIGEgZGF0ZSBzdHJpbmcg
aW4gdGhlIElTTworLy8gODYwMSBmb3JtYXQsIHdpdGhvdXQgdGhlIHRpbWV6b25lIGluZm9ybWF0
aW9uLgorc3RkOjpzdHJpbmcgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoVGltZUlu
TWlsbGlzIG1zKSB7CisgIHN0cnVjdCB0bSB0aW1lX3N0cnVjdDsKKyAgaWYgKCFQb3J0YWJsZUxv
Y2FsdGltZShzdGF0aWNfY2FzdDx0aW1lX3Q+KG1zIC8gMTAwMCksICZ0aW1lX3N0cnVjdCkpCisg
ICAgcmV0dXJuICIiOworICAvLyBZWVlZLU1NLUREVGhoOm1tOnNzCisgIHJldHVybiBTdHJlYW1h
YmxlVG9TdHJpbmcodGltZV9zdHJ1Y3QudG1feWVhciArIDE5MDApICsgIi0iICsKKyAgICAgIFN0
cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX21vbiArIDEpICsgIi0iICsKKyAg
ICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX21kYXkpICsgIlQiICsK
KyAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX2hvdXIpICsgIjoi
ICsKKyAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX21pbikgKyAi
OiIgKworICAgICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1fc2VjKTsK
K30KKwogLy8gU3RyZWFtcyBhbiBYTUwgQ0RBVEEgc2VjdGlvbiwgZXNjYXBpbmcgaW52YWxpZCBD
REFUQSBzZXF1ZW5jZXMgYXMgbmVlZGVkLgogdm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6
Ok91dHB1dFhtbENEYXRhU2VjdGlvbig6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBk
YXRhKSB7CkBAIC0zMjA2LDg5ICszNjY4LDE3OSBAQCB2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJp
bnRlcjo6T3V0cHV0WG1sQ0RhdGFTZWN0aW9uKDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCiAgICpz
dHJlYW0gPDwgIl1dPiI7CiB9CiAKK3ZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPdXRw
dXRYbWxBdHRyaWJ1dGUoCisgICAgc3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIGVsZW1lbnRfbmFtZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpIHsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpz
dHJpbmc+JiBhbGxvd2VkX25hbWVzID0KKyAgICAgIEdldFJlc2VydmVkQXR0cmlidXRlc0ZvckVs
ZW1lbnQoZWxlbWVudF9uYW1lKTsKKworICBHVEVTVF9DSEVDS18oc3RkOjpmaW5kKGFsbG93ZWRf
bmFtZXMuYmVnaW4oKSwgYWxsb3dlZF9uYW1lcy5lbmQoKSwgbmFtZSkgIT0KKyAgICAgICAgICAg
ICAgICAgICBhbGxvd2VkX25hbWVzLmVuZCgpKQorICAgICAgPDwgIkF0dHJpYnV0ZSAiIDw8IG5h
bWUgPDwgIiBpcyBub3QgYWxsb3dlZCBmb3IgZWxlbWVudCA8IiA8PCBlbGVtZW50X25hbWUKKyAg
ICAgIDw8ICI+LiI7CisKKyAgKnN0cmVhbSA8PCAiICIgPDwgbmFtZSA8PCAiPVwiIiA8PCBFc2Nh
cGVYbWxBdHRyaWJ1dGUodmFsdWUpIDw8ICJcIiI7Cit9CisKIC8vIFByaW50cyBhbiBYTUwgcmVw
cmVzZW50YXRpb24gb2YgYSBUZXN0SW5mbyBvYmplY3QuCi0vLyBUT0RPKHdhbik6IFRoZXJlIGlz
IGFsc28gdmFsdWUgaW4gcHJpbnRpbmcgcHJvcGVydGllcyB3aXRoIHRoZSBwbGFpbiBwcmludGVy
LgorLy8gRklYTUU6IFRoZXJlIGlzIGFsc28gdmFsdWUgaW4gcHJpbnRpbmcgcHJvcGVydGllcyB3
aXRoIHRoZSBwbGFpbiBwcmludGVyLgogdm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91
dHB1dFhtbFRlc3RJbmZvKDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX25h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVGVzdEluZm8mIHRlc3RfaW5mbykgewogICBjb25zdCBUZXN0UmVzdWx0JiByZXN1bHQgPSAq
dGVzdF9pbmZvLnJlc3VsdCgpOwotICAqc3RyZWFtIDw8ICIgICAgPHRlc3RjYXNlIG5hbWU9XCIi
Ci0gICAgICAgICAgPDwgRXNjYXBlWG1sQXR0cmlidXRlKHRlc3RfaW5mby5uYW1lKCkpLmNfc3Ry
KCkKLSAgICAgICAgICA8PCAiXCIgc3RhdHVzPVwiIgotICAgICAgICAgIDw8ICh0ZXN0X2luZm8u
c2hvdWxkX3J1bigpID8gInJ1biIgOiAibm90cnVuIikKLSAgICAgICAgICA8PCAiXCIgdGltZT1c
IiIKLSAgICAgICAgICA8PCBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHMocmVzdWx0LmVsYXBz
ZWRfdGltZSgpKQotICAgICAgICAgIDw8ICJcIiBjbGFzc25hbWU9XCIiIDw8IEVzY2FwZVhtbEF0
dHJpYnV0ZSh0ZXN0X2Nhc2VfbmFtZSkuY19zdHIoKQotICAgICAgICAgIDw8ICJcIiIgPDwgVGVz
dFByb3BlcnRpZXNBc1htbEF0dHJpYnV0ZXMocmVzdWx0KS5jX3N0cigpOworICBjb25zdCBzdGQ6
OnN0cmluZyBrVGVzdGNhc2UgPSAidGVzdGNhc2UiOworCisgIGlmICh0ZXN0X2luZm8uaXNfaW5f
YW5vdGhlcl9zaGFyZCgpKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgKnN0cmVhbSA8PCAiICAg
IDx0ZXN0Y2FzZSI7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgIm5h
bWUiLCB0ZXN0X2luZm8ubmFtZSgpKTsKKworICBpZiAodGVzdF9pbmZvLnZhbHVlX3BhcmFtKCkg
IT0gTlVMTCkgeworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgInZh
bHVlX3BhcmFtIiwKKyAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9pbmZvLnZhbHVlX3BhcmFt
KCkpOworICB9CisgIGlmICh0ZXN0X2luZm8udHlwZV9wYXJhbSgpICE9IE5VTEwpIHsKKyAgICBP
dXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJ0eXBlX3BhcmFtIiwgdGVzdF9p
bmZvLnR5cGVfcGFyYW0oKSk7CisgIH0KKyAgaWYgKEdURVNUX0ZMQUcobGlzdF90ZXN0cykpIHsK
KyAgICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJmaWxlIiwgdGVzdF9p
bmZvLmZpbGUoKSk7CisgICAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNlLCAi
bGluZSIsCisgICAgICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh0ZXN0X2lu
Zm8ubGluZSgpKSk7CisgICAgKnN0cmVhbSA8PCAiIC8+XG4iOworICAgIHJldHVybjsKKyAgfQor
CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgInN0YXR1cyIsCisgICAg
ICAgICAgICAgICAgICAgICB0ZXN0X2luZm8uc2hvdWxkX3J1bigpID8gInJ1biIgOiAibm90cnVu
Iik7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgInRpbWUiLAorICAg
ICAgICAgICAgICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKHJlc3VsdC5lbGFw
c2VkX3RpbWUoKSkpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJj
bGFzc25hbWUiLCB0ZXN0X2Nhc2VfbmFtZSk7CiAKICAgaW50IGZhaWx1cmVzID0gMDsKICAgZm9y
IChpbnQgaSA9IDA7IGkgPCByZXN1bHQudG90YWxfcGFydF9jb3VudCgpOyArK2kpIHsKICAgICBj
b25zdCBUZXN0UGFydFJlc3VsdCYgcGFydCA9IHJlc3VsdC5HZXRUZXN0UGFydFJlc3VsdChpKTsK
ICAgICBpZiAocGFydC5mYWlsZWQoKSkgewotICAgICAgaWYgKCsrZmFpbHVyZXMgPT0gMSkKKyAg
ICAgIGlmICgrK2ZhaWx1cmVzID09IDEpIHsKICAgICAgICAgKnN0cmVhbSA8PCAiPlxuIjsKKyAg
ICAgIH0KKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGxvY2F0aW9uID0KKyAgICAgICAgICBpbnRl
cm5hbDo6Rm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvbihwYXJ0LmZpbGVfbmFt
ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcnQubGluZV9udW1iZXIoKSk7CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyBzdW1t
YXJ5ID0gbG9jYXRpb24gKyAiXG4iICsgcGFydC5zdW1tYXJ5KCk7CiAgICAgICAqc3RyZWFtIDw8
ICIgICAgICA8ZmFpbHVyZSBtZXNzYWdlPVwiIgotICAgICAgICAgICAgICA8PCBFc2NhcGVYbWxB
dHRyaWJ1dGUocGFydC5zdW1tYXJ5KCkpLmNfc3RyKCkKKyAgICAgICAgICAgICAgPDwgRXNjYXBl
WG1sQXR0cmlidXRlKHN1bW1hcnkuY19zdHIoKSkKICAgICAgICAgICAgICAgPDwgIlwiIHR5cGU9
XCJcIj4iOwotICAgICAgY29uc3QgU3RyaW5nIG1lc3NhZ2UgPSBSZW1vdmVJbnZhbGlkWG1sQ2hh
cmFjdGVycyhTdHJpbmc6OkZvcm1hdCgKLSAgICAgICAgICAiJXM6JWRcbiVzIiwKLSAgICAgICAg
ICBwYXJ0LmZpbGVfbmFtZSgpLCBwYXJ0LmxpbmVfbnVtYmVyKCksCi0gICAgICAgICAgcGFydC5t
ZXNzYWdlKCkpLmNfc3RyKCkpOwotICAgICAgT3V0cHV0WG1sQ0RhdGFTZWN0aW9uKHN0cmVhbSwg
bWVzc2FnZS5jX3N0cigpKTsKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGRldGFpbCA9IGxvY2F0
aW9uICsgIlxuIiArIHBhcnQubWVzc2FnZSgpOworICAgICAgT3V0cHV0WG1sQ0RhdGFTZWN0aW9u
KHN0cmVhbSwgUmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoZGV0YWlsKS5jX3N0cigpKTsKICAg
ICAgICpzdHJlYW0gPDwgIjwvZmFpbHVyZT5cbiI7CiAgICAgfQogICB9CiAKLSAgaWYgKGZhaWx1
cmVzID09IDApCisgIGlmIChmYWlsdXJlcyA9PSAwICYmIHJlc3VsdC50ZXN0X3Byb3BlcnR5X2Nv
dW50KCkgPT0gMCkgewogICAgICpzdHJlYW0gPDwgIiAvPlxuIjsKLSAgZWxzZQorICB9IGVsc2Ug
eworICAgIGlmIChmYWlsdXJlcyA9PSAwKSB7CisgICAgICAqc3RyZWFtIDw8ICI+XG4iOworICAg
IH0KKyAgICBPdXRwdXRYbWxUZXN0UHJvcGVydGllcyhzdHJlYW0sIHJlc3VsdCk7CiAgICAgKnN0
cmVhbSA8PCAiICAgIDwvdGVzdGNhc2U+XG4iOworICB9CiB9CiAKIC8vIFByaW50cyBhbiBYTUwg
cmVwcmVzZW50YXRpb24gb2YgYSBUZXN0Q2FzZSBvYmplY3QKLXZvaWQgWG1sVW5pdFRlc3RSZXN1
bHRQcmludGVyOjpQcmludFhtbFRlc3RDYXNlKEZJTEUqIG91dCwKK3ZvaWQgWG1sVW5pdFRlc3RS
ZXN1bHRQcmludGVyOjpQcmludFhtbFRlc3RDYXNlKHN0ZDo6b3N0cmVhbSogc3RyZWFtLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdENh
c2UmIHRlc3RfY2FzZSkgewotICBmcHJpbnRmKG91dCwKLSAgICAgICAgICAiICA8dGVzdHN1aXRl
IG5hbWU9XCIlc1wiIHRlc3RzPVwiJWRcIiBmYWlsdXJlcz1cIiVkXCIgIgotICAgICAgICAgICJk
aXNhYmxlZD1cIiVkXCIgIiwKLSAgICAgICAgICBFc2NhcGVYbWxBdHRyaWJ1dGUodGVzdF9jYXNl
Lm5hbWUoKSkuY19zdHIoKSwKLSAgICAgICAgICB0ZXN0X2Nhc2UudG90YWxfdGVzdF9jb3VudCgp
LAotICAgICAgICAgIHRlc3RfY2FzZS5mYWlsZWRfdGVzdF9jb3VudCgpLAotICAgICAgICAgIHRl
c3RfY2FzZS5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOwotICBmcHJpbnRmKG91dCwKLSAgICAgICAg
ICAiZXJyb3JzPVwiMFwiIHRpbWU9XCIlc1wiPlxuIiwKLSAgICAgICAgICBGb3JtYXRUaW1lSW5N
aWxsaXNBc1NlY29uZHModGVzdF9jYXNlLmVsYXBzZWRfdGltZSgpKS5jX3N0cigpKTsKKyAgY29u
c3Qgc3RkOjpzdHJpbmcga1Rlc3RzdWl0ZSA9ICJ0ZXN0c3VpdGUiOworICAqc3RyZWFtIDw8ICIg
IDwiIDw8IGtUZXN0c3VpdGU7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3Vp
dGUsICJuYW1lIiwgdGVzdF9jYXNlLm5hbWUoKSk7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJl
YW0sIGtUZXN0c3VpdGUsICJ0ZXN0cyIsCisgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxl
VG9TdHJpbmcodGVzdF9jYXNlLnJlcG9ydGFibGVfdGVzdF9jb3VudCgpKSk7CisgIGlmICghR1RF
U1RfRkxBRyhsaXN0X3Rlc3RzKSkgeworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtU
ZXN0c3VpdGUsICJmYWlsdXJlcyIsCisgICAgICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVU
b1N0cmluZyh0ZXN0X2Nhc2UuZmFpbGVkX3Rlc3RfY291bnQoKSkpOworICAgIE91dHB1dFhtbEF0
dHJpYnV0ZSgKKyAgICAgICAgc3RyZWFtLCBrVGVzdHN1aXRlLCAiZGlzYWJsZWQiLAorICAgICAg
ICBTdHJlYW1hYmxlVG9TdHJpbmcodGVzdF9jYXNlLnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9j
b3VudCgpKSk7CisgICAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZSwgImVy
cm9ycyIsICIwIik7CisgICAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZSwg
InRpbWUiLAorICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29u
ZHModGVzdF9jYXNlLmVsYXBzZWRfdGltZSgpKSk7CisgICAgKnN0cmVhbSA8PCBUZXN0UHJvcGVy
dGllc0FzWG1sQXR0cmlidXRlcyh0ZXN0X2Nhc2UuYWRfaG9jX3Rlc3RfcmVzdWx0KCkpOworICB9
CisgICpzdHJlYW0gPDwgIj5cbiI7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVzdF9jYXNlLnRv
dGFsX3Rlc3RfY291bnQoKTsgKytpKSB7Ci0gICAgU3RyU3RyZWFtIHN0cmVhbTsKLSAgICBPdXRw
dXRYbWxUZXN0SW5mbygmc3RyZWFtLCB0ZXN0X2Nhc2UubmFtZSgpLCAqdGVzdF9jYXNlLkdldFRl
c3RJbmZvKGkpKTsKLSAgICBmcHJpbnRmKG91dCwgIiVzIiwgU3RyU3RyZWFtVG9TdHJpbmcoJnN0
cmVhbSkuY19zdHIoKSk7CisgICAgaWYgKHRlc3RfY2FzZS5HZXRUZXN0SW5mbyhpKS0+aXNfcmVw
b3J0YWJsZSgpKQorICAgICAgT3V0cHV0WG1sVGVzdEluZm8oc3RyZWFtLCB0ZXN0X2Nhc2UubmFt
ZSgpLCAqdGVzdF9jYXNlLkdldFRlc3RJbmZvKGkpKTsKICAgfQotICBmcHJpbnRmKG91dCwgIiAg
PC90ZXN0c3VpdGU+XG4iKTsKKyAgKnN0cmVhbSA8PCAiICA8LyIgPDwga1Rlc3RzdWl0ZSA8PCAi
PlxuIjsKIH0KIAogLy8gUHJpbnRzIGFuIFhNTCBzdW1tYXJ5IG9mIHVuaXRfdGVzdCB0byBvdXRw
dXQgc3RyZWFtIG91dC4KLXZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludFhtbFVu
aXRUZXN0KEZJTEUqIG91dCwKK3ZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludFht
bFVuaXRUZXN0KHN0ZDo6b3N0cmVhbSogc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCkgewotICBm
cHJpbnRmKG91dCwgIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCI/Plxu
Iik7Ci0gIGZwcmludGYob3V0LAotICAgICAgICAgICI8dGVzdHN1aXRlcyB0ZXN0cz1cIiVkXCIg
ZmFpbHVyZXM9XCIlZFwiIGRpc2FibGVkPVwiJWRcIiAiCi0gICAgICAgICAgImVycm9ycz1cIjBc
IiB0aW1lPVwiJXNcIiAiLAotICAgICAgICAgIHVuaXRfdGVzdC50b3RhbF90ZXN0X2NvdW50KCks
Ci0gICAgICAgICAgdW5pdF90ZXN0LmZhaWxlZF90ZXN0X2NvdW50KCksCi0gICAgICAgICAgdW5p
dF90ZXN0LmRpc2FibGVkX3Rlc3RfY291bnQoKSwKLSAgICAgICAgICBGb3JtYXRUaW1lSW5NaWxs
aXNBc1NlY29uZHModW5pdF90ZXN0LmVsYXBzZWRfdGltZSgpKS5jX3N0cigpKTsKKyAgY29uc3Qg
c3RkOjpzdHJpbmcga1Rlc3RzdWl0ZXMgPSAidGVzdHN1aXRlcyI7CisKKyAgKnN0cmVhbSA8PCAi
PD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIj8+XG4iOworICAqc3RyZWFt
IDw8ICI8IiA8PCBrVGVzdHN1aXRlczsKKworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBr
VGVzdHN1aXRlcywgInRlc3RzIiwKKyAgICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0
cmluZyh1bml0X3Rlc3QucmVwb3J0YWJsZV90ZXN0X2NvdW50KCkpKTsKKyAgT3V0cHV0WG1sQXR0
cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJmYWlsdXJlcyIsCisgICAgICAgICAgICAgICAg
ICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodW5pdF90ZXN0LmZhaWxlZF90ZXN0X2NvdW50KCkpKTsK
KyAgT3V0cHV0WG1sQXR0cmlidXRlKAorICAgICAgc3RyZWFtLCBrVGVzdHN1aXRlcywgImRpc2Fi
bGVkIiwKKyAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh1bml0X3Rlc3QucmVwb3J0YWJsZV9kaXNh
YmxlZF90ZXN0X2NvdW50KCkpKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3Rz
dWl0ZXMsICJlcnJvcnMiLCAiMCIpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoCisgICAgICBzdHJl
YW0sIGtUZXN0c3VpdGVzLCAidGltZXN0YW1wIiwKKyAgICAgIEZvcm1hdEVwb2NoVGltZUluTWls
bGlzQXNJc284NjAxKHVuaXRfdGVzdC5zdGFydF90aW1lc3RhbXAoKSkpOworICBPdXRwdXRYbWxB
dHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlcywgInRpbWUiLAorICAgICAgICAgICAgICAgICAg
ICAgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKHVuaXRfdGVzdC5lbGFwc2VkX3RpbWUoKSkp
OworCiAgIGlmIChHVEVTVF9GTEFHKHNodWZmbGUpKSB7Ci0gICAgZnByaW50ZihvdXQsICJyYW5k
b21fc2VlZD1cIiVkXCIgIiwgdW5pdF90ZXN0LnJhbmRvbV9zZWVkKCkpOworICAgIE91dHB1dFht
bEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGVzLCAicmFuZG9tX3NlZWQiLAorICAgICAgICAg
ICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodW5pdF90ZXN0LnJhbmRvbV9zZWVkKCkp
KTsKKyAgfQorICAqc3RyZWFtIDw8IFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKHVuaXRf
dGVzdC5hZF9ob2NfdGVzdF9yZXN1bHQoKSk7CisKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVh
bSwga1Rlc3RzdWl0ZXMsICJuYW1lIiwgIkFsbFRlc3RzIik7CisgICpzdHJlYW0gPDwgIj5cbiI7
CisKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCB1bml0X3Rlc3QudG90YWxfdGVzdF9jYXNlX2NvdW50
KCk7ICsraSkgeworICAgIGlmICh1bml0X3Rlc3QuR2V0VGVzdENhc2UoaSktPnJlcG9ydGFibGVf
dGVzdF9jb3VudCgpID4gMCkKKyAgICAgIFByaW50WG1sVGVzdENhc2Uoc3RyZWFtLCAqdW5pdF90
ZXN0LkdldFRlc3RDYXNlKGkpKTsKICAgfQotICBmcHJpbnRmKG91dCwgIm5hbWU9XCJBbGxUZXN0
c1wiPlxuIik7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgdW5pdF90ZXN0LnRvdGFsX3Rlc3RfY2Fz
ZV9jb3VudCgpOyArK2kpCi0gICAgUHJpbnRYbWxUZXN0Q2FzZShvdXQsICp1bml0X3Rlc3QuR2V0
VGVzdENhc2UoaSkpOwotICBmcHJpbnRmKG91dCwgIjwvdGVzdHN1aXRlcz5cbiIpOworICAqc3Ry
ZWFtIDw8ICI8LyIgPDwga1Rlc3RzdWl0ZXMgPDwgIj5cbiI7Cit9CisKK3ZvaWQgWG1sVW5pdFRl
c3RSZXN1bHRQcmludGVyOjpQcmludFhtbFRlc3RzTGlzdCgKKyAgICBzdGQ6Om9zdHJlYW0qIHN0
cmVhbSwgY29uc3Qgc3RkOjp2ZWN0b3I8VGVzdENhc2UqPiYgdGVzdF9jYXNlcykgeworICBjb25z
dCBzdGQ6OnN0cmluZyBrVGVzdHN1aXRlcyA9ICJ0ZXN0c3VpdGVzIjsKKworICAqc3RyZWFtIDw8
ICI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz5cbiI7CisgICpzdHJl
YW0gPDwgIjwiIDw8IGtUZXN0c3VpdGVzOworCisgIGludCB0b3RhbF90ZXN0cyA9IDA7CisgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdGVzdF9jYXNlcy5zaXplKCk7ICsraSkgeworICAgIHRvdGFs
X3Rlc3RzICs9IHRlc3RfY2FzZXNbaV0tPnRvdGFsX3Rlc3RfY291bnQoKTsKKyAgfQorICBPdXRw
dXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlcywgInRlc3RzIiwKKyAgICAgICAgICAg
ICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh0b3RhbF90ZXN0cykpOworICBPdXRwdXRYbWxB
dHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlcywgIm5hbWUiLCAiQWxsVGVzdHMiKTsKKyAgKnN0
cmVhbSA8PCAiPlxuIjsKKworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXMuc2l6
ZSgpOyArK2kpIHsKKyAgICBQcmludFhtbFRlc3RDYXNlKHN0cmVhbSwgKnRlc3RfY2FzZXNbaV0p
OworICB9CisgICpzdHJlYW0gPDwgIjwvIiA8PCBrVGVzdHN1aXRlcyA8PCAiPlxuIjsKIH0KIAog
Ly8gUHJvZHVjZXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0ZXN0IHByb3BlcnRpZXMgaW4g
YSByZXN1bHQgYXMgc3BhY2UKIC8vIGRlbGltaXRlZCBYTUwgYXR0cmlidXRlcyBiYXNlZCBvbiB0
aGUgcHJvcGVydHkga2V5PSJ2YWx1ZSIgcGFpcnMuCi1TdHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQ
cmludGVyOjpUZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRlcygKK3N0ZDo6c3RyaW5nIFhtbFVu
aXRUZXN0UmVzdWx0UHJpbnRlcjo6VGVzdFByb3BlcnRpZXNBc1htbEF0dHJpYnV0ZXMoCiAgICAg
Y29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0KSB7CiAgIE1lc3NhZ2UgYXR0cmlidXRlczsKICAgZm9y
IChpbnQgaSA9IDA7IGkgPCByZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpOyArK2kpIHsKQEAg
LTMyOTksNTIgKzM4NTEsNTYyIEBAIFN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlRl
c3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKAogICByZXR1cm4gYXR0cmlidXRlcy5HZXRTdHJp
bmcoKTsKIH0KIAordm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dFhtbFRlc3RQ
cm9wZXJ0aWVzKAorICAgIHN0ZDo6b3N0cmVhbSogc3RyZWFtLCBjb25zdCBUZXN0UmVzdWx0JiBy
ZXN1bHQpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga1Byb3BlcnRpZXMgPSAicHJvcGVydGllcyI7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtQcm9wZXJ0eSA9ICJwcm9wZXJ0eSI7CisKKyAgaWYgKHJl
c3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCkgPD0gMCkgeworICAgIHJldHVybjsKKyAgfQorCisg
ICpzdHJlYW0gPDwgIjwiIDw8IGtQcm9wZXJ0aWVzIDw8ICI+XG4iOworICBmb3IgKGludCBpID0g
MDsgaSA8IHJlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCk7ICsraSkgeworICAgIGNvbnN0IFRl
c3RQcm9wZXJ0eSYgcHJvcGVydHkgPSByZXN1bHQuR2V0VGVzdFByb3BlcnR5KGkpOworICAgICpz
dHJlYW0gPDwgIjwiIDw8IGtQcm9wZXJ0eTsKKyAgICAqc3RyZWFtIDw8ICIgbmFtZT1cIiIgPDwg
RXNjYXBlWG1sQXR0cmlidXRlKHByb3BlcnR5LmtleSgpKSA8PCAiXCIiOworICAgICpzdHJlYW0g
PDwgIiB2YWx1ZT1cIiIgPDwgRXNjYXBlWG1sQXR0cmlidXRlKHByb3BlcnR5LnZhbHVlKCkpIDw8
ICJcIiI7CisgICAgKnN0cmVhbSA8PCAiLz5cbiI7CisgIH0KKyAgKnN0cmVhbSA8PCAiPC8iIDw8
IGtQcm9wZXJ0aWVzIDw8ICI+XG4iOworfQorCiAvLyBFbmQgWG1sVW5pdFRlc3RSZXN1bHRQcmlu
dGVyCiAKLS8vIENsYXNzIFNjb3BlZFRyYWNlCisvLyBUaGlzIGNsYXNzIGdlbmVyYXRlcyBhbiBK
U09OIG91dHB1dCBmaWxlLgorY2xhc3MgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlciA6IHB1Ymxp
YyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEpzb25Vbml0
VGVzdFJlc3VsdFByaW50ZXIoY29uc3QgY2hhciogb3V0cHV0X2ZpbGUpOwogCi0vLyBQdXNoZXMg
dGhlIGdpdmVuIHNvdXJjZSBmaWxlIGxvY2F0aW9uIGFuZCBtZXNzYWdlIG9udG8gYSBwZXItdGhy
ZWFkCi0vLyB0cmFjZSBzdGFjayBtYWludGFpbmVkIGJ5IEdvb2dsZSBUZXN0LgotLy8gTCA8IFVu
aXRUZXN0OjptdXRleF8KLVNjb3BlZFRyYWNlOjpTY29wZWRUcmFjZShjb25zdCBjaGFyKiBmaWxl
LCBpbnQgbGluZSwgY29uc3QgTWVzc2FnZSYgbWVzc2FnZSkgewotICBUcmFjZUluZm8gdHJhY2U7
Ci0gIHRyYWNlLmZpbGUgPSBmaWxlOwotICB0cmFjZS5saW5lID0gbGluZTsKLSAgdHJhY2UubWVz
c2FnZSA9IG1lc3NhZ2UuR2V0U3RyaW5nKCk7CisgIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRp
b25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwgaW50IGl0ZXJhdGlvbik7CiAKLSAgVW5p
dFRlc3Q6OkdldEluc3RhbmNlKCktPlB1c2hHVGVzdFRyYWNlKHRyYWNlKTsKKyAgLy8gUHJpbnRz
IGFuIEpTT04gc3VtbWFyeSBvZiBhbGwgdW5pdCB0ZXN0cy4KKyAgc3RhdGljIHZvaWQgUHJpbnRK
c29uVGVzdExpc3QoOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VGVzdENhc2UqPiYgdGVzdF9jYXNlcyk7CisK
KyBwcml2YXRlOgorICAvLyBSZXR1cm5zIGFuIEpTT04tZXNjYXBlZCBjb3B5IG9mIHRoZSBpbnB1
dCBzdHJpbmcgc3RyLgorICBzdGF0aWMgc3RkOjpzdHJpbmcgRXNjYXBlSnNvbihjb25zdCBzdGQ6
OnN0cmluZyYgc3RyKTsKKworICAvLy8vIFZlcmlmaWVzIHRoYXQgdGhlIGdpdmVuIGF0dHJpYnV0
ZSBiZWxvbmdzIHRvIHRoZSBnaXZlbiBlbGVtZW50IGFuZAorICAvLy8vIHN0cmVhbXMgdGhlIGF0
dHJpYnV0ZSBhcyBKU09OLgorICBzdGF0aWMgdm9pZCBPdXRwdXRKc29uS2V5KHN0ZDo6b3N0cmVh
bSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBlbGVtZW50X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBpbmRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjb21tYSA9IHRydWUp
OworICBzdGF0aWMgdm9pZCBPdXRwdXRKc29uS2V5KHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBlbGVtZW50X25hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbmRlbnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBjb21tYSA9IHRydWUpOworCisgIC8vIFN0cmVhbXMgYSBKU09OIHJlcHJl
c2VudGF0aW9uIG9mIGEgVGVzdEluZm8gb2JqZWN0LgorICBzdGF0aWMgdm9pZCBPdXRwdXRKc29u
VGVzdEluZm8oOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbyk7CisKKyAgLy8gUHJpbnRz
IGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiBhIFRlc3RDYXNlIG9iamVjdAorICBzdGF0aWMgdm9p
ZCBQcmludEpzb25UZXN0Q2FzZSg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKTsKKworICAvLyBQ
cmludHMgYSBKU09OIHN1bW1hcnkgb2YgdW5pdF90ZXN0IHRvIG91dHB1dCBzdHJlYW0gb3V0Lgor
ICBzdGF0aWMgdm9pZCBQcmludEpzb25Vbml0VGVzdCg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0
KTsKKworICAvLyBQcm9kdWNlcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHRlc3QgcHJvcGVy
dGllcyBpbiBhIHJlc3VsdCBhcworICAvLyBhIEpTT04gZGljdGlvbmFyeS4KKyAgc3RhdGljIHN0
ZDo6c3RyaW5nIFRlc3RQcm9wZXJ0aWVzQXNKc29uKGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBpbmRlbnQpOworCisgIC8vIFRoZSBvdXRwdXQgZmlsZS4KKyAgY29uc3Qgc3RkOjpzdHJp
bmcgb3V0cHV0X2ZpbGVfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oSnNv
blVuaXRUZXN0UmVzdWx0UHJpbnRlcik7Cit9OworCisvLyBDcmVhdGVzIGEgbmV3IEpzb25Vbml0
VGVzdFJlc3VsdFByaW50ZXIuCitKc29uVW5pdFRlc3RSZXN1bHRQcmludGVyOjpKc29uVW5pdFRl
c3RSZXN1bHRQcmludGVyKGNvbnN0IGNoYXIqIG91dHB1dF9maWxlKQorICAgIDogb3V0cHV0X2Zp
bGVfKG91dHB1dF9maWxlKSB7CisgIGlmIChvdXRwdXRfZmlsZV8uZW1wdHkoKSkgeworICAgIEdU
RVNUX0xPR18oRkFUQUwpIDw8ICJKU09OIG91dHB1dCBmaWxlIG1heSBub3QgYmUgbnVsbCI7Cisg
IH0KIH0KIAotLy8gUG9wcyB0aGUgaW5mbyBwdXNoZWQgYnkgdGhlIGMndG9yLgotLy8gTCA8IFVu
aXRUZXN0OjptdXRleF8KLVNjb3BlZFRyYWNlOjp+U2NvcGVkVHJhY2UoKSB7Ci0gIFVuaXRUZXN0
OjpHZXRJbnN0YW5jZSgpLT5Qb3BHVGVzdFRyYWNlKCk7Cit2b2lkIEpzb25Vbml0VGVzdFJlc3Vs
dFByaW50ZXI6Ok9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgLypp
dGVyYXRpb24qLykgeworICBGSUxFKiBqc29ub3V0ID0gT3BlbkZpbGVGb3JXcml0aW5nKG91dHB1
dF9maWxlXyk7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgUHJpbnRKc29uVW5pdFRl
c3QoJnN0cmVhbSwgdW5pdF90ZXN0KTsKKyAgZnByaW50Zihqc29ub3V0LCAiJXMiLCBTdHJpbmdT
dHJlYW1Ub1N0cmluZygmc3RyZWFtKS5jX3N0cigpKTsKKyAgZmNsb3NlKGpzb25vdXQpOwogfQog
CisvLyBSZXR1cm5zIGFuIEpTT04tZXNjYXBlZCBjb3B5IG9mIHRoZSBpbnB1dCBzdHJpbmcgc3Ry
Lgorc3RkOjpzdHJpbmcgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6RXNjYXBlSnNvbihjb25z
dCBzdGQ6OnN0cmluZyYgc3RyKSB7CisgIE1lc3NhZ2UgbTsKIAotLy8gY2xhc3MgT3NTdGFja1Ry
YWNlR2V0dGVyCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyLnNpemUoKTsgKytpKSB7Cisg
ICAgY29uc3QgY2hhciBjaCA9IHN0cltpXTsKKyAgICBzd2l0Y2ggKGNoKSB7CisgICAgICBjYXNl
ICdcXCc6CisgICAgICBjYXNlICciJzoKKyAgICAgIGNhc2UgJy8nOgorICAgICAgICBtIDw8ICdc
XCcgPDwgY2g7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnXGInOgorICAgICAgICBtIDw8
ICJcXGIiOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ1x0JzoKKyAgICAgICAgbSA8PCAi
XFx0IjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdcbic6CisgICAgICAgIG0gPDwgIlxc
biI7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnXGYnOgorICAgICAgICBtIDw8ICJcXGYi
OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgbSA8PCAiXFxyIjsK
KyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBpZiAoY2ggPCAnICcpIHsK
KyAgICAgICAgICBtIDw8ICJcXHUwMCIgPDwgU3RyaW5nOjpGb3JtYXRCeXRlKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXI+KGNoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgbSA8PCBj
aDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgIH0KIAotLy8gUmV0dXJucyB0
aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBhcyBhIFN0cmluZy4gIFBhcmFtZXRlcnM6Ci0vLwot
Ly8gICBtYXhfZGVwdGggIC0gdGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBi
ZSBpbmNsdWRlZAotLy8gICAgICAgICAgICAgICAgaW4gdGhlIHRyYWNlLgotLy8gICBza2lwX2Nv
dW50IC0gdGhlIG51bWJlciBvZiB0b3AgZnJhbWVzIHRvIGJlIHNraXBwZWQ7IGRvZXNuJ3QgY291
bnQKLS8vICAgICAgICAgICAgICAgIGFnYWluc3QgbWF4X2RlcHRoLgotLy8KLS8vIEwgPCBtdXRl
eF8KLS8vIFdlIHVzZSAiTCA8IG11dGV4XyIgdG8gZGVub3RlIHRoYXQgdGhlIGZ1bmN0aW9uIG1h
eSBhY3F1aXJlIG11dGV4Xy4KLVN0cmluZyBPc1N0YWNrVHJhY2VHZXR0ZXI6OkN1cnJlbnRTdGFj
a1RyYWNlKGludCwgaW50KSB7Ci0gIHJldHVybiBTdHJpbmcoIiIpOworICByZXR1cm4gbS5HZXRT
dHJpbmcoKTsKIH0KIAotLy8gTCA8IG11dGV4Xwotdm9pZCBPc1N0YWNrVHJhY2VHZXR0ZXI6OlVw
b25MZWF2aW5nR1Rlc3QoKSB7CisvLyBUaGUgZm9sbG93aW5nIHJvdXRpbmVzIGdlbmVyYXRlIGFu
IEpTT04gcmVwcmVzZW50YXRpb24gb2YgYSBVbml0VGVzdAorLy8gb2JqZWN0LgorCisvLyBGb3Jt
YXRzIHRoZSBnaXZlbiB0aW1lIGluIG1pbGxpc2Vjb25kcyBhcyBzZWNvbmRzLgorc3RhdGljIHN0
ZDo6c3RyaW5nIEZvcm1hdFRpbWVJbk1pbGxpc0FzRHVyYXRpb24oVGltZUluTWlsbGlzIG1zKSB7
CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIHNzIDw8IChzdGF0aWNfY2FzdDxkb3VibGU+
KG1zKSAqIDFlLTMpIDw8ICJzIjsKKyAgcmV0dXJuIHNzLnN0cigpOwogfQogCi1jb25zdCBjaGFy
KiBjb25zdAotT3NTdGFja1RyYWNlR2V0dGVyOjprRWxpZGVkRnJhbWVzTWFya2VyID0KKy8vIENv
bnZlcnRzIHRoZSBnaXZlbiBlcG9jaCB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byBhIGRhdGUgc3Ry
aW5nIGluIHRoZQorLy8gUkZDMzMzOSBmb3JtYXQsIHdpdGhvdXQgdGhlIHRpbWV6b25lIGluZm9y
bWF0aW9uLgorc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNSRkMz
MzM5KFRpbWVJbk1pbGxpcyBtcykgeworICBzdHJ1Y3QgdG0gdGltZV9zdHJ1Y3Q7CisgIGlmICgh
UG9ydGFibGVMb2NhbHRpbWUoc3RhdGljX2Nhc3Q8dGltZV90PihtcyAvIDEwMDApLCAmdGltZV9z
dHJ1Y3QpKQorICAgIHJldHVybiAiIjsKKyAgLy8gWVlZWS1NTS1ERFRoaDptbTpzcworICByZXR1
cm4gU3RyZWFtYWJsZVRvU3RyaW5nKHRpbWVfc3RydWN0LnRtX3llYXIgKyAxOTAwKSArICItIiAr
CisgICAgICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9tb24gKyAxKSAr
ICItIiArCisgICAgICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9tZGF5
KSArICJUIiArCisgICAgICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9o
b3VyKSArICI6IiArCisgICAgICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50
bV9taW4pICsgIjoiICsKKyAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0
LnRtX3NlYykgKyAiWiI7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RkOjpzdHJpbmcgSW5kZW50KGlu
dCB3aWR0aCkgeworICByZXR1cm4gc3RkOjpzdHJpbmcod2lkdGgsICcgJyk7Cit9CisKK3ZvaWQg
SnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T3V0cHV0SnNvbktleSgKKyAgICBzdGQ6Om9zdHJl
YW0qIHN0cmVhbSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZWxlbWVudF9uYW1lLAorICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSwKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgaW5kZW50LAorICAgIGJvb2wgY29tbWEpIHsKKyAgY29uc3Qg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBhbGxvd2VkX25hbWVzID0KKyAgICAgIEdldFJlc2Vy
dmVkQXR0cmlidXRlc0ZvckVsZW1lbnQoZWxlbWVudF9uYW1lKTsKKworICBHVEVTVF9DSEVDS18o
c3RkOjpmaW5kKGFsbG93ZWRfbmFtZXMuYmVnaW4oKSwgYWxsb3dlZF9uYW1lcy5lbmQoKSwgbmFt
ZSkgIT0KKyAgICAgICAgICAgICAgICAgICBhbGxvd2VkX25hbWVzLmVuZCgpKQorICAgICAgPDwg
IktleSBcIiIgPDwgbmFtZSA8PCAiXCIgaXMgbm90IGFsbG93ZWQgZm9yIHZhbHVlIFwiIiA8PCBl
bGVtZW50X25hbWUKKyAgICAgIDw8ICJcIi4iOworCisgICpzdHJlYW0gPDwgaW5kZW50IDw8ICJc
IiIgPDwgbmFtZSA8PCAiXCI6IFwiIiA8PCBFc2NhcGVKc29uKHZhbHVlKSA8PCAiXCIiOworICBp
ZiAoY29tbWEpCisgICAgKnN0cmVhbSA8PCAiLFxuIjsKK30KKwordm9pZCBKc29uVW5pdFRlc3RS
ZXN1bHRQcmludGVyOjpPdXRwdXRKc29uS2V5KAorICAgIHN0ZDo6b3N0cmVhbSogc3RyZWFtLAor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBlbGVtZW50X25hbWUsCisgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIG5hbWUsCisgICAgaW50IHZhbHVlLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbmRlbnQs
CisgICAgYm9vbCBjb21tYSkgeworICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGFs
bG93ZWRfbmFtZXMgPQorICAgICAgR2V0UmVzZXJ2ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudChlbGVt
ZW50X25hbWUpOworCisgIEdURVNUX0NIRUNLXyhzdGQ6OmZpbmQoYWxsb3dlZF9uYW1lcy5iZWdp
bigpLCBhbGxvd2VkX25hbWVzLmVuZCgpLCBuYW1lKSAhPQorICAgICAgICAgICAgICAgICAgIGFs
bG93ZWRfbmFtZXMuZW5kKCkpCisgICAgICA8PCAiS2V5IFwiIiA8PCBuYW1lIDw8ICJcIiBpcyBu
b3QgYWxsb3dlZCBmb3IgdmFsdWUgXCIiIDw8IGVsZW1lbnRfbmFtZQorICAgICAgPDwgIlwiLiI7
CisKKyAgKnN0cmVhbSA8PCBpbmRlbnQgPDwgIlwiIiA8PCBuYW1lIDw8ICJcIjogIiA8PCBTdHJl
YW1hYmxlVG9TdHJpbmcodmFsdWUpOworICBpZiAoY29tbWEpCisgICAgKnN0cmVhbSA8PCAiLFxu
IjsKK30KKworLy8gUHJpbnRzIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiBhIFRlc3RJbmZvIG9i
amVjdC4KK3ZvaWQgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T3V0cHV0SnNvblRlc3RJbmZv
KDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RJbmZv
JiB0ZXN0X2luZm8pIHsKKyAgY29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0ID0gKnRlc3RfaW5mby5y
ZXN1bHQoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RjYXNlID0gInRlc3RjYXNlIjsKKyAg
Y29uc3Qgc3RkOjpzdHJpbmcga0luZGVudCA9IEluZGVudCgxMCk7CisKKyAgKnN0cmVhbSA8PCBJ
bmRlbnQoOCkgPDwgIntcbiI7CisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdGNhc2UsICJu
YW1lIiwgdGVzdF9pbmZvLm5hbWUoKSwga0luZGVudCk7CisKKyAgaWYgKHRlc3RfaW5mby52YWx1
ZV9wYXJhbSgpICE9IE5VTEwpIHsKKyAgICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RjYXNl
LCAidmFsdWVfcGFyYW0iLAorICAgICAgICAgICAgICAgICAgdGVzdF9pbmZvLnZhbHVlX3BhcmFt
KCksIGtJbmRlbnQpOworICB9CisgIGlmICh0ZXN0X2luZm8udHlwZV9wYXJhbSgpICE9IE5VTEwp
IHsKKyAgICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RjYXNlLCAidHlwZV9wYXJhbSIsIHRl
c3RfaW5mby50eXBlX3BhcmFtKCksCisgICAgICAgICAgICAgICAgICBrSW5kZW50KTsKKyAgfQor
ICBpZiAoR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSkgeworICAgIE91dHB1dEpzb25LZXkoc3RyZWFt
LCBrVGVzdGNhc2UsICJmaWxlIiwgdGVzdF9pbmZvLmZpbGUoKSwga0luZGVudCk7CisgICAgT3V0
cHV0SnNvbktleShzdHJlYW0sIGtUZXN0Y2FzZSwgImxpbmUiLCB0ZXN0X2luZm8ubGluZSgpLCBr
SW5kZW50LCBmYWxzZSk7CisgICAgKnN0cmVhbSA8PCAiXG4iIDw8IEluZGVudCg4KSA8PCAifSI7
CisgICAgcmV0dXJuOworICB9CisKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0Y2FzZSwg
InN0YXR1cyIsCisgICAgICAgICAgICAgICAgdGVzdF9pbmZvLnNob3VsZF9ydW4oKSA/ICJSVU4i
IDogIk5PVFJVTiIsIGtJbmRlbnQpOworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RjYXNl
LCAidGltZSIsCisgICAgICAgICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNEdXJhdGlvbihy
ZXN1bHQuZWxhcHNlZF90aW1lKCkpLCBrSW5kZW50KTsKKyAgT3V0cHV0SnNvbktleShzdHJlYW0s
IGtUZXN0Y2FzZSwgImNsYXNzbmFtZSIsIHRlc3RfY2FzZV9uYW1lLCBrSW5kZW50LCBmYWxzZSk7
CisgICpzdHJlYW0gPDwgVGVzdFByb3BlcnRpZXNBc0pzb24ocmVzdWx0LCBrSW5kZW50KTsKKwor
ICBpbnQgZmFpbHVyZXMgPSAwOworICBmb3IgKGludCBpID0gMDsgaSA8IHJlc3VsdC50b3RhbF9w
YXJ0X2NvdW50KCk7ICsraSkgeworICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBwYXJ0ID0gcmVz
dWx0LkdldFRlc3RQYXJ0UmVzdWx0KGkpOworICAgIGlmIChwYXJ0LmZhaWxlZCgpKSB7CisgICAg
ICAqc3RyZWFtIDw8ICIsXG4iOworICAgICAgaWYgKCsrZmFpbHVyZXMgPT0gMSkgeworICAgICAg
ICAqc3RyZWFtIDw8IGtJbmRlbnQgPDwgIlwiIiA8PCAiZmFpbHVyZXMiIDw8ICJcIjogW1xuIjsK
KyAgICAgIH0KKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGxvY2F0aW9uID0KKyAgICAgICAgICBp
bnRlcm5hbDo6Rm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvbihwYXJ0LmZpbGVf
bmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcnQubGluZV9udW1iZXIoKSk7CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyBt
ZXNzYWdlID0gRXNjYXBlSnNvbihsb2NhdGlvbiArICJcbiIgKyBwYXJ0Lm1lc3NhZ2UoKSk7Cisg
ICAgICAqc3RyZWFtIDw8IGtJbmRlbnQgPDwgIiAge1xuIgorICAgICAgICAgICAgICA8PCBrSW5k
ZW50IDw8ICIgICAgXCJmYWlsdXJlXCI6IFwiIiA8PCBtZXNzYWdlIDw8ICJcIixcbiIKKyAgICAg
ICAgICAgICAgPDwga0luZGVudCA8PCAiICAgIFwidHlwZVwiOiBcIlwiXG4iCisgICAgICAgICAg
ICAgIDw8IGtJbmRlbnQgPDwgIiAgfSI7CisgICAgfQorICB9CisKKyAgaWYgKGZhaWx1cmVzID4g
MCkKKyAgICAqc3RyZWFtIDw8ICJcbiIgPDwga0luZGVudCA8PCAiXSI7CisgICpzdHJlYW0gPDwg
IlxuIiA8PCBJbmRlbnQoOCkgPDwgIn0iOworfQorCisvLyBQcmludHMgYW4gSlNPTiByZXByZXNl
bnRhdGlvbiBvZiBhIFRlc3RDYXNlIG9iamVjdAordm9pZCBKc29uVW5pdFRlc3RSZXN1bHRQcmlu
dGVyOjpQcmludEpzb25UZXN0Q2FzZShzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdENhc2UmIHRl
c3RfY2FzZSkgeworICBjb25zdCBzdGQ6OnN0cmluZyBrVGVzdHN1aXRlID0gInRlc3RzdWl0ZSI7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtJbmRlbnQgPSBJbmRlbnQoNik7CisKKyAgKnN0cmVhbSA8
PCBJbmRlbnQoNCkgPDwgIntcbiI7CisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRl
LCAibmFtZSIsIHRlc3RfY2FzZS5uYW1lKCksIGtJbmRlbnQpOworICBPdXRwdXRKc29uS2V5KHN0
cmVhbSwga1Rlc3RzdWl0ZSwgInRlc3RzIiwgdGVzdF9jYXNlLnJlcG9ydGFibGVfdGVzdF9jb3Vu
dCgpLAorICAgICAgICAgICAgICAgIGtJbmRlbnQpOworICBpZiAoIUdURVNUX0ZMQUcobGlzdF90
ZXN0cykpIHsKKyAgICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZSwgImZhaWx1cmVz
IiwgdGVzdF9jYXNlLmZhaWxlZF90ZXN0X2NvdW50KCksCisgICAgICAgICAgICAgICAgICBrSW5k
ZW50KTsKKyAgICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZSwgImRpc2FibGVkIiwK
KyAgICAgICAgICAgICAgICAgIHRlc3RfY2FzZS5yZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291
bnQoKSwga0luZGVudCk7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGUsICJl
cnJvcnMiLCAwLCBrSW5kZW50KTsKKyAgICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0
ZSwgInRpbWUiLAorICAgICAgICAgICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNEdXJhdGlv
bih0ZXN0X2Nhc2UuZWxhcHNlZF90aW1lKCkpLAorICAgICAgICAgICAgICAgICAga0luZGVudCwg
ZmFsc2UpOworICAgICpzdHJlYW0gPDwgVGVzdFByb3BlcnRpZXNBc0pzb24odGVzdF9jYXNlLmFk
X2hvY190ZXN0X3Jlc3VsdCgpLCBrSW5kZW50KQorICAgICAgICAgICAgPDwgIixcbiI7CisgIH0K
KworICAqc3RyZWFtIDw8IGtJbmRlbnQgPDwgIlwiIiA8PCBrVGVzdHN1aXRlIDw8ICJcIjogW1xu
IjsKKworICBib29sIGNvbW1hID0gZmFsc2U7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVzdF9j
YXNlLnRvdGFsX3Rlc3RfY291bnQoKTsgKytpKSB7CisgICAgaWYgKHRlc3RfY2FzZS5HZXRUZXN0
SW5mbyhpKS0+aXNfcmVwb3J0YWJsZSgpKSB7CisgICAgICBpZiAoY29tbWEpIHsKKyAgICAgICAg
KnN0cmVhbSA8PCAiLFxuIjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGNvbW1hID0gdHJ1ZTsK
KyAgICAgIH0KKyAgICAgIE91dHB1dEpzb25UZXN0SW5mbyhzdHJlYW0sIHRlc3RfY2FzZS5uYW1l
KCksICp0ZXN0X2Nhc2UuR2V0VGVzdEluZm8oaSkpOworICAgIH0KKyAgfQorICAqc3RyZWFtIDw8
ICJcbiIgPDwga0luZGVudCA8PCAiXVxuIiA8PCBJbmRlbnQoNCkgPDwgIn0iOworfQorCisvLyBQ
cmludHMgYSBKU09OIHN1bW1hcnkgb2YgdW5pdF90ZXN0IHRvIG91dHB1dCBzdHJlYW0gb3V0Lgor
dm9pZCBKc29uVW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludEpzb25Vbml0VGVzdChzdGQ6Om9z
dHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCkgeworICBjb25zdCBzdGQ6OnN0cmlu
ZyBrVGVzdHN1aXRlcyA9ICJ0ZXN0c3VpdGVzIjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga0luZGVu
dCA9IEluZGVudCgyKTsKKyAgKnN0cmVhbSA8PCAie1xuIjsKKworICBPdXRwdXRKc29uS2V5KHN0
cmVhbSwga1Rlc3RzdWl0ZXMsICJ0ZXN0cyIsIHVuaXRfdGVzdC5yZXBvcnRhYmxlX3Rlc3RfY291
bnQoKSwKKyAgICAgICAgICAgICAgICBrSW5kZW50KTsKKyAgT3V0cHV0SnNvbktleShzdHJlYW0s
IGtUZXN0c3VpdGVzLCAiZmFpbHVyZXMiLCB1bml0X3Rlc3QuZmFpbGVkX3Rlc3RfY291bnQoKSwK
KyAgICAgICAgICAgICAgICBrSW5kZW50KTsKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0
c3VpdGVzLCAiZGlzYWJsZWQiLAorICAgICAgICAgICAgICAgIHVuaXRfdGVzdC5yZXBvcnRhYmxl
X2Rpc2FibGVkX3Rlc3RfY291bnQoKSwga0luZGVudCk7CisgIE91dHB1dEpzb25LZXkoc3RyZWFt
LCBrVGVzdHN1aXRlcywgImVycm9ycyIsIDAsIGtJbmRlbnQpOworICBpZiAoR1RFU1RfRkxBRyhz
aHVmZmxlKSkgeworICAgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRlcywgInJhbmRv
bV9zZWVkIiwgdW5pdF90ZXN0LnJhbmRvbV9zZWVkKCksCisgICAgICAgICAgICAgICAgICBrSW5k
ZW50KTsKKyAgfQorICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0aW1lc3Rh
bXAiLAorICAgICAgICAgICAgICAgIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNSRkMzMzM5KHVu
aXRfdGVzdC5zdGFydF90aW1lc3RhbXAoKSksCisgICAgICAgICAgICAgICAga0luZGVudCk7Cisg
IE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRlcywgInRpbWUiLAorICAgICAgICAgICAg
ICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzRHVyYXRpb24odW5pdF90ZXN0LmVsYXBzZWRfdGltZSgp
KSwga0luZGVudCwKKyAgICAgICAgICAgICAgICBmYWxzZSk7CisKKyAgKnN0cmVhbSA8PCBUZXN0
UHJvcGVydGllc0FzSnNvbih1bml0X3Rlc3QuYWRfaG9jX3Rlc3RfcmVzdWx0KCksIGtJbmRlbnQp
CisgICAgICAgICAgPDwgIixcbiI7CisKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3Vp
dGVzLCAibmFtZSIsICJBbGxUZXN0cyIsIGtJbmRlbnQpOworICAqc3RyZWFtIDw8IGtJbmRlbnQg
PDwgIlwiIiA8PCBrVGVzdHN1aXRlcyA8PCAiXCI6IFtcbiI7CisKKyAgYm9vbCBjb21tYSA9IGZh
bHNlOworICBmb3IgKGludCBpID0gMDsgaSA8IHVuaXRfdGVzdC50b3RhbF90ZXN0X2Nhc2VfY291
bnQoKTsgKytpKSB7CisgICAgaWYgKHVuaXRfdGVzdC5HZXRUZXN0Q2FzZShpKS0+cmVwb3J0YWJs
ZV90ZXN0X2NvdW50KCkgPiAwKSB7CisgICAgICBpZiAoY29tbWEpIHsKKyAgICAgICAgKnN0cmVh
bSA8PCAiLFxuIjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGNvbW1hID0gdHJ1ZTsKKyAgICAg
IH0KKyAgICAgIFByaW50SnNvblRlc3RDYXNlKHN0cmVhbSwgKnVuaXRfdGVzdC5HZXRUZXN0Q2Fz
ZShpKSk7CisgICAgfQorICB9CisKKyAgKnN0cmVhbSA8PCAiXG4iIDw8IGtJbmRlbnQgPDwgIl1c
biIgPDwgIn1cbiI7Cit9CisKK3ZvaWQgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRK
c29uVGVzdExpc3QoCisgICAgc3RkOjpvc3RyZWFtKiBzdHJlYW0sIGNvbnN0IHN0ZDo6dmVjdG9y
PFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RzdWl0
ZXMgPSAidGVzdHN1aXRlcyI7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtJbmRlbnQgPSBJbmRlbnQo
Mik7CisgICpzdHJlYW0gPDwgIntcbiI7CisgIGludCB0b3RhbF90ZXN0cyA9IDA7CisgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdGVzdF9jYXNlcy5zaXplKCk7ICsraSkgeworICAgIHRvdGFsX3Rl
c3RzICs9IHRlc3RfY2FzZXNbaV0tPnRvdGFsX3Rlc3RfY291bnQoKTsKKyAgfQorICBPdXRwdXRK
c29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0ZXN0cyIsIHRvdGFsX3Rlc3RzLCBrSW5kZW50
KTsKKworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJuYW1lIiwgIkFsbFRl
c3RzIiwga0luZGVudCk7CisgICpzdHJlYW0gPDwga0luZGVudCA8PCAiXCIiIDw8IGtUZXN0c3Vp
dGVzIDw8ICJcIjogW1xuIjsKKworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXMu
c2l6ZSgpOyArK2kpIHsKKyAgICBpZiAoaSAhPSAwKSB7CisgICAgICAqc3RyZWFtIDw8ICIsXG4i
OworICAgIH0KKyAgICBQcmludEpzb25UZXN0Q2FzZShzdHJlYW0sICp0ZXN0X2Nhc2VzW2ldKTsK
KyAgfQorCisgICpzdHJlYW0gPDwgIlxuIgorICAgICAgICAgIDw8IGtJbmRlbnQgPDwgIl1cbiIK
KyAgICAgICAgICA8PCAifVxuIjsKK30KKy8vIFByb2R1Y2VzIGEgc3RyaW5nIHJlcHJlc2VudGlu
ZyB0aGUgdGVzdCBwcm9wZXJ0aWVzIGluIGEgcmVzdWx0IGFzCisvLyBhIEpTT04gZGljdGlvbmFy
eS4KK3N0ZDo6c3RyaW5nIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6OlRlc3RQcm9wZXJ0aWVz
QXNKc29uKAorICAgIGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3Qgc3RkOjpzdHJpbmcm
IGluZGVudCkgeworICBNZXNzYWdlIGF0dHJpYnV0ZXM7CisgIGZvciAoaW50IGkgPSAwOyBpIDwg
cmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKTsgKytpKSB7CisgICAgY29uc3QgVGVzdFByb3Bl
cnR5JiBwcm9wZXJ0eSA9IHJlc3VsdC5HZXRUZXN0UHJvcGVydHkoaSk7CisgICAgYXR0cmlidXRl
cyA8PCAiLFxuIiA8PCBpbmRlbnQgPDwgIlwiIiA8PCBwcm9wZXJ0eS5rZXkoKSA8PCAiXCI6ICIK
KyAgICAgICAgICAgICAgIDw8ICJcIiIgPDwgRXNjYXBlSnNvbihwcm9wZXJ0eS52YWx1ZSgpKSA8
PCAiXCIiOworICB9CisgIHJldHVybiBhdHRyaWJ1dGVzLkdldFN0cmluZygpOworfQorCisvLyBF
bmQgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcgorCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNV
TFRTXworCisvLyBDaGVja3MgaWYgc3RyIGNvbnRhaW5zICc9JywgJyYnLCAnJScgb3IgJ1xuJyBj
aGFyYWN0ZXJzLiBJZiB5ZXMsCisvLyByZXBsYWNlcyB0aGVtIGJ5ICIleHgiIHdoZXJlIHh4IGlz
IHRoZWlyIGhleGFkZWNpbWFsIHZhbHVlLiBGb3IKKy8vIGV4YW1wbGUsIHJlcGxhY2VzICI9IiB3
aXRoICIlM0QiLiAgVGhpcyBhbGdvcml0aG0gaXMgTyhzdHJsZW4oc3RyKSkKKy8vIGluIGJvdGgg
dGltZSBhbmQgc3BhY2UgLS0gaW1wb3J0YW50IGFzIHRoZSBpbnB1dCBzdHIgbWF5IGNvbnRhaW4g
YW4KKy8vIGFyYml0cmFyaWx5IGxvbmcgdGVzdCBmYWlsdXJlIG1lc3NhZ2UgYW5kIHN0YWNrIHRy
YWNlLgorc3RkOjpzdHJpbmcgU3RyZWFtaW5nTGlzdGVuZXI6OlVybEVuY29kZShjb25zdCBjaGFy
KiBzdHIpIHsKKyAgc3RkOjpzdHJpbmcgcmVzdWx0OworICByZXN1bHQucmVzZXJ2ZShzdHJsZW4o
c3RyKSArIDEpOworICBmb3IgKGNoYXIgY2ggPSAqc3RyOyBjaCAhPSAnXDAnOyBjaCA9ICorK3N0
cikgeworICAgIHN3aXRjaCAoY2gpIHsKKyAgICAgIGNhc2UgJyUnOgorICAgICAgY2FzZSAnPSc6
CisgICAgICBjYXNlICcmJzoKKyAgICAgIGNhc2UgJ1xuJzoKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiJSIgKyBTdHJpbmc6OkZvcm1hdEJ5dGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gp
KSk7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmVzdWx0LnB1c2hf
YmFjayhjaCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgfQorICByZXR1cm4gcmVzdWx0Owor
fQorCit2b2lkIFN0cmVhbWluZ0xpc3RlbmVyOjpTb2NrZXRXcml0ZXI6Ok1ha2VDb25uZWN0aW9u
KCkgeworICBHVEVTVF9DSEVDS18oc29ja2ZkXyA9PSAtMSkKKyAgICAgIDw8ICJNYWtlQ29ubmVj
dGlvbigpIGNhbid0IGJlIGNhbGxlZCB3aGVuIHRoZXJlIGlzIGFscmVhZHkgYSBjb25uZWN0aW9u
LiI7CisKKyAgYWRkcmluZm8gaGludHM7CisgIG1lbXNldCgmaGludHMsIDAsIHNpemVvZihoaW50
cykpOworICBoaW50cy5haV9mYW1pbHkgPSBBRl9VTlNQRUM7ICAgIC8vIFRvIGFsbG93IGJvdGgg
SVB2NCBhbmQgSVB2NiBhZGRyZXNzZXMuCisgIGhpbnRzLmFpX3NvY2t0eXBlID0gU09DS19TVFJF
QU07CisgIGFkZHJpbmZvKiBzZXJ2aW5mbyA9IE5VTEw7CisKKyAgLy8gVXNlIHRoZSBnZXRhZGRy
aW5mbygpIHRvIGdldCBhIGxpbmtlZCBsaXN0IG9mIElQIGFkZHJlc3NlcyBmb3IKKyAgLy8gdGhl
IGdpdmVuIGhvc3QgbmFtZS4KKyAgY29uc3QgaW50IGVycm9yX251bSA9IGdldGFkZHJpbmZvKAor
ICAgICAgaG9zdF9uYW1lXy5jX3N0cigpLCBwb3J0X251bV8uY19zdHIoKSwgJmhpbnRzLCAmc2Vy
dmluZm8pOworICBpZiAoZXJyb3JfbnVtICE9IDApIHsKKyAgICBHVEVTVF9MT0dfKFdBUk5JTkcp
IDw8ICJzdHJlYW1fcmVzdWx0X3RvOiBnZXRhZGRyaW5mbygpIGZhaWxlZDogIgorICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgZ2FpX3N0cmVycm9yKGVycm9yX251bSk7CisgIH0KKworICAvLyBM
b29wIHRocm91Z2ggYWxsIHRoZSByZXN1bHRzIGFuZCBjb25uZWN0IHRvIHRoZSBmaXJzdCB3ZSBj
YW4uCisgIGZvciAoYWRkcmluZm8qIGN1cl9hZGRyID0gc2VydmluZm87IHNvY2tmZF8gPT0gLTEg
JiYgY3VyX2FkZHIgIT0gTlVMTDsKKyAgICAgICBjdXJfYWRkciA9IGN1cl9hZGRyLT5haV9uZXh0
KSB7CisgICAgc29ja2ZkXyA9IHNvY2tldCgKKyAgICAgICAgY3VyX2FkZHItPmFpX2ZhbWlseSwg
Y3VyX2FkZHItPmFpX3NvY2t0eXBlLCBjdXJfYWRkci0+YWlfcHJvdG9jb2wpOworICAgIGlmIChz
b2NrZmRfICE9IC0xKSB7CisgICAgICAvLyBDb25uZWN0IHRoZSBjbGllbnQgc29ja2V0IHRvIHRo
ZSBzZXJ2ZXIgc29ja2V0LgorICAgICAgaWYgKGNvbm5lY3Qoc29ja2ZkXywgY3VyX2FkZHItPmFp
X2FkZHIsIGN1cl9hZGRyLT5haV9hZGRybGVuKSA9PSAtMSkgeworICAgICAgICBjbG9zZShzb2Nr
ZmRfKTsKKyAgICAgICAgc29ja2ZkXyA9IC0xOworICAgICAgfQorICAgIH0KKyAgfQorCisgIGZy
ZWVhZGRyaW5mbyhzZXJ2aW5mbyk7ICAvLyBhbGwgZG9uZSB3aXRoIHRoaXMgc3RydWN0dXJlCisK
KyAgaWYgKHNvY2tmZF8gPT0gLTEpIHsKKyAgICBHVEVTVF9MT0dfKFdBUk5JTkcpIDw8ICJzdHJl
YW1fcmVzdWx0X3RvOiBmYWlsZWQgdG8gY29ubmVjdCB0byAiCisgICAgICAgICAgICAgICAgICAg
ICAgICA8PCBob3N0X25hbWVfIDw8ICI6IiA8PCBwb3J0X251bV87CisgIH0KK30KKworLy8gRW5k
IG9mIGNsYXNzIFN0cmVhbWluZyBMaXN0ZW5lcgorI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFN
X1JFU1VMVFNfXworCisvLyBjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXIKKworY29uc3QgY2hhciog
Y29uc3QgT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlOjprRWxpZGVkRnJhbWVzTWFya2VyID0K
ICAgICAiLi4uICIgR1RFU1RfTkFNRV8gIiBpbnRlcm5hbCBmcmFtZXMgLi4uIjsKIAorc3RkOjpz
dHJpbmcgT3NTdGFja1RyYWNlR2V0dGVyOjpDdXJyZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRo
LCBpbnQgc2tpcF9jb3VudCkKKyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pIHsKKyNp
ZiBHVEVTVF9IQVNfQUJTTAorICBzdGQ6OnN0cmluZyByZXN1bHQ7CisKKyAgaWYgKG1heF9kZXB0
aCA8PSAwKSB7CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisgIG1heF9kZXB0aCA9IHN0ZDo6
bWluKG1heF9kZXB0aCwga01heFN0YWNrVHJhY2VEZXB0aCk7CisKKyAgc3RkOjp2ZWN0b3I8dm9p
ZCo+IHJhd19zdGFjayhtYXhfZGVwdGgpOworICAvLyBTa2lwcyB0aGUgZnJhbWVzIHJlcXVlc3Rl
ZCBieSB0aGUgY2FsbGVyLCBwbHVzIHRoaXMgZnVuY3Rpb24uCisgIGNvbnN0IGludCByYXdfc3Rh
Y2tfc2l6ZSA9CisgICAgICBhYnNsOjpHZXRTdGFja1RyYWNlKCZyYXdfc3RhY2tbMF0sIG1heF9k
ZXB0aCwgc2tpcF9jb3VudCArIDEpOworCisgIHZvaWQqIGNhbGxlcl9mcmFtZSA9IG51bGxwdHI7
CisgIHsKKyAgICBNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKKyAgICBjYWxsZXJfZnJhbWUgPSBj
YWxsZXJfZnJhbWVfOworICB9CisKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCByYXdfc3RhY2tfc2l6
ZTsgKytpKSB7CisgICAgaWYgKHJhd19zdGFja1tpXSA9PSBjYWxsZXJfZnJhbWUgJiYKKyAgICAg
ICAgIUdURVNUX0ZMQUcoc2hvd19pbnRlcm5hbF9zdGFja19mcmFtZXMpKSB7CisgICAgICAvLyBB
ZGQgYSBtYXJrZXIgdG8gdGhlIHRyYWNlIGFuZCBzdG9wIGFkZGluZyBmcmFtZXMuCisgICAgICBh
YnNsOjpTdHJBcHBlbmQoJnJlc3VsdCwga0VsaWRlZEZyYW1lc01hcmtlciwgIlxuIik7CisgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBjaGFyIHRtcFsxMDI0XTsKKyAgICBjb25zdCBjaGFyKiBz
eW1ib2wgPSAiKHVua25vd24pIjsKKyAgICBpZiAoYWJzbDo6U3ltYm9saXplKHJhd19zdGFja1tp
XSwgdG1wLCBzaXplb2YodG1wKSkpIHsKKyAgICAgIHN5bWJvbCA9IHRtcDsKKyAgICB9CisKKyAg
ICBjaGFyIGxpbmVbMTAyNF07CisgICAgc25wcmludGYobGluZSwgc2l6ZW9mKGxpbmUpLCAiICAl
cDogJXNcbiIsIHJhd19zdGFja1tpXSwgc3ltYm9sKTsKKyAgICByZXN1bHQgKz0gbGluZTsKKyAg
fQorCisgIHJldHVybiByZXN1bHQ7CisKKyNlbHNlICAvLyAhR1RFU1RfSEFTX0FCU0wKKyAgc3Rh
dGljX2Nhc3Q8dm9pZD4obWF4X2RlcHRoKTsKKyAgc3RhdGljX2Nhc3Q8dm9pZD4oc2tpcF9jb3Vu
dCk7CisgIHJldHVybiAiIjsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0FCU0wKK30KKwordm9pZCBP
c1N0YWNrVHJhY2VHZXR0ZXI6OlVwb25MZWF2aW5nR1Rlc3QoKSBHVEVTVF9MT0NLX0VYQ0xVREVE
XyhtdXRleF8pIHsKKyNpZiBHVEVTVF9IQVNfQUJTTAorICB2b2lkKiBjYWxsZXJfZnJhbWUgPSBu
dWxscHRyOworICBpZiAoYWJzbDo6R2V0U3RhY2tUcmFjZSgmY2FsbGVyX2ZyYW1lLCAxLCAzKSA8
PSAwKSB7CisgICAgY2FsbGVyX2ZyYW1lID0gbnVsbHB0cjsKKyAgfQorCisgIE11dGV4TG9jayBs
b2NrKCZtdXRleF8pOworICBjYWxsZXJfZnJhbWVfID0gY2FsbGVyX2ZyYW1lOworI2VuZGlmICAv
LyBHVEVTVF9IQVNfQUJTTAorfQorCisvLyBBIGhlbHBlciBjbGFzcyB0aGF0IGNyZWF0ZXMgdGhl
IHByZW1hdHVyZS1leGl0IGZpbGUgaW4gaXRzCisvLyBjb25zdHJ1Y3RvciBhbmQgZGVsZXRlcyB0
aGUgZmlsZSBpbiBpdHMgZGVzdHJ1Y3Rvci4KK2NsYXNzIFNjb3BlZFByZW1hdHVyZUV4aXRGaWxl
IHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFNjb3BlZFByZW1hdHVyZUV4aXRGaWxlKGNvbnN0IGNo
YXIqIHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoKQorICAgICAgOiBwcmVtYXR1cmVfZXhpdF9maWxl
cGF0aF8ocHJlbWF0dXJlX2V4aXRfZmlsZXBhdGggPworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJlbWF0dXJlX2V4aXRfZmlsZXBhdGggOiAiIikgeworICAgIC8vIElmIGEgcGF0
aCB0byB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZSBpcyBzcGVjaWZpZWQuLi4KKyAgICBpZiAoIXBy
ZW1hdHVyZV9leGl0X2ZpbGVwYXRoXy5lbXB0eSgpKSB7CisgICAgICAvLyBjcmVhdGUgdGhlIGZp
bGUgd2l0aCBhIHNpbmdsZSAiMCIgY2hhcmFjdGVyIGluIGl0LiAgSS9PCisgICAgICAvLyBlcnJv
cnMgYXJlIGlnbm9yZWQgYXMgdGhlcmUncyBub3RoaW5nIGJldHRlciB3ZSBjYW4gZG8gYW5kIHdl
CisgICAgICAvLyBkb24ndCB3YW50IHRvIGZhaWwgdGhlIHRlc3QgYmVjYXVzZSBvZiB0aGlzLgor
ICAgICAgRklMRSogcGZpbGUgPSBwb3NpeDo6Rk9wZW4ocHJlbWF0dXJlX2V4aXRfZmlsZXBhdGgs
ICJ3Iik7CisgICAgICBmd3JpdGUoIjAiLCAxLCAxLCBwZmlsZSk7CisgICAgICBmY2xvc2UocGZp
bGUpOworICAgIH0KKyAgfQorCisgIH5TY29wZWRQcmVtYXR1cmVFeGl0RmlsZSgpIHsKKyAgICBp
ZiAoIXByZW1hdHVyZV9leGl0X2ZpbGVwYXRoXy5lbXB0eSgpKSB7CisgICAgICBpbnQgcmV0dmFs
ID0gcmVtb3ZlKHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoXy5jX3N0cigpKTsKKyAgICAgIGlmIChy
ZXR2YWwpIHsKKyAgICAgICAgR1RFU1RfTE9HXyhFUlJPUikgPDwgIkZhaWxlZCB0byByZW1vdmUg
cHJlbWF0dXJlIGV4aXQgZmlsZXBhdGggXCIiCisgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
IHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoXyA8PCAiXCIgd2l0aCBlcnJvciAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8IHJldHZhbDsKKyAgICAgIH0KKyAgICB9CisgIH0KKworIHByaXZh
dGU6CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoXzsKKworICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNjb3BlZFByZW1hdHVyZUV4aXRGaWxlKTsK
K307CisKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogCiAvLyBjbGFzcyBUZXN0RXZlbnRMaXN0
ZW5lcnMKQEAgLTM0MzEsNyArNDQ5Myw3IEBAIHZvaWQgVGVzdEV2ZW50TGlzdGVuZXJzOjpTdXBw
cmVzc0V2ZW50Rm9yd2FyZGluZygpIHsKIC8vIFdlIGRvbid0IHByb3RlY3QgdGhpcyB1bmRlciBt
dXRleF8gYXMgYSB1c2VyIGlzIG5vdCBzdXBwb3NlZCB0bwogLy8gY2FsbCB0aGlzIGJlZm9yZSBt
YWluKCkgc3RhcnRzLCBmcm9tIHdoaWNoIHBvaW50IG9uIHRoZSByZXR1cm4KIC8vIHZhbHVlIHdp
bGwgbmV2ZXIgY2hhbmdlLgotVW5pdFRlc3QgKiBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKSB7CitV
bml0VGVzdCogVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkgewogICAvLyBXaGVuIGNvbXBpbGVkIHdp
dGggTVNWQyA3LjEgaW4gb3B0aW1pemVkIG1vZGUsIGRlc3Ryb3lpbmcgdGhlCiAgIC8vIFVuaXRU
ZXN0IG9iamVjdCB1cG9uIGV4aXRpbmcgdGhlIHByb2dyYW0gbWVzc2VzIHVwIHRoZSBleGl0IGNv
ZGUsCiAgIC8vIGNhdXNpbmcgc3VjY2Vzc2Z1bCB0ZXN0cyB0byBhcHBlYXIgZmFpbGVkLiAgV2Ug
aGF2ZSB0byB1c2UgYQpAQCAtMzQ4MSwxNyArNDU0MywzMyBAQCBpbnQgVW5pdFRlc3Q6OnN1Y2Nl
c3NmdWxfdGVzdF9jb3VudCgpIGNvbnN0IHsKIC8vIEdldHMgdGhlIG51bWJlciBvZiBmYWlsZWQg
dGVzdHMuCiBpbnQgVW5pdFRlc3Q6OmZhaWxlZF90ZXN0X2NvdW50KCkgY29uc3QgeyByZXR1cm4g
aW1wbCgpLT5mYWlsZWRfdGVzdF9jb3VudCgpOyB9CiAKKy8vIEdldHMgdGhlIG51bWJlciBvZiBk
aXNhYmxlZCB0ZXN0cyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhNTCByZXBvcnQuCitp
bnQgVW5pdFRlc3Q6OnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKKyAg
cmV0dXJuIGltcGwoKS0+cmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCk7Cit9CisKIC8v
IEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cy4KIGludCBVbml0VGVzdDo6ZGlzYWJs
ZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJuIGltcGwoKS0+ZGlzYWJsZWRfdGVzdF9j
b3VudCgpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBp
biB0aGUgWE1MIHJlcG9ydC4KK2ludCBVbml0VGVzdDo6cmVwb3J0YWJsZV90ZXN0X2NvdW50KCkg
Y29uc3QgeworICByZXR1cm4gaW1wbCgpLT5yZXBvcnRhYmxlX3Rlc3RfY291bnQoKTsKK30KKwog
Ly8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0cy4KIGludCBVbml0VGVzdDo6dG90YWxfdGVz
dF9jb3VudCgpIGNvbnN0IHsgcmV0dXJuIGltcGwoKS0+dG90YWxfdGVzdF9jb3VudCgpOyB9CiAK
IC8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0cyB0aGF0IHNob3VsZCBydW4uCiBpbnQgVW5pdFRl
c3Q6OnRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3QgeyByZXR1cm4gaW1wbCgpLT50ZXN0X3RvX3J1
bl9jb3VudCgpOyB9CiAKKy8vIEdldHMgdGhlIHRpbWUgb2YgdGhlIHRlc3QgcHJvZ3JhbSBzdGFy
dCwgaW4gbXMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlCisvLyBVTklYIGVwb2NoLgoraW50ZXJuYWw6
OlRpbWVJbk1pbGxpcyBVbml0VGVzdDo6c3RhcnRfdGltZXN0YW1wKCkgY29uc3QgeworICAgIHJl
dHVybiBpbXBsKCktPnN0YXJ0X3RpbWVzdGFtcCgpOworfQorCiAvLyBHZXRzIHRoZSBlbGFwc2Vk
IHRpbWUsIGluIG1pbGxpc2Vjb25kcy4KIGludGVybmFsOjpUaW1lSW5NaWxsaXMgVW5pdFRlc3Q6
OmVsYXBzZWRfdGltZSgpIGNvbnN0IHsKICAgcmV0dXJuIGltcGwoKS0+ZWxhcHNlZF90aW1lKCk7
CkBAIC0zNTEwLDYgKzQ1ODgsMTIgQEAgY29uc3QgVGVzdENhc2UqIFVuaXRUZXN0OjpHZXRUZXN0
Q2FzZShpbnQgaSkgY29uc3QgewogICByZXR1cm4gaW1wbCgpLT5HZXRUZXN0Q2FzZShpKTsKIH0K
IAorLy8gUmV0dXJucyB0aGUgVGVzdFJlc3VsdCBjb250YWluaW5nIGluZm9ybWF0aW9uIG9uIHRl
c3QgZmFpbHVyZXMgYW5kCisvLyBwcm9wZXJ0aWVzIGxvZ2dlZCBvdXRzaWRlIG9mIGluZGl2aWR1
YWwgdGVzdCBjYXNlcy4KK2NvbnN0IFRlc3RSZXN1bHQmIFVuaXRUZXN0OjphZF9ob2NfdGVzdF9y
ZXN1bHQoKSBjb25zdCB7CisgIHJldHVybiAqaW1wbCgpLT5hZF9ob2NfdGVzdF9yZXN1bHQoKTsK
K30KKwogLy8gR2V0cyB0aGUgaS10aCB0ZXN0IGNhc2UgYW1vbmcgYWxsIHRoZSB0ZXN0IGNhc2Vz
LiBpIGNhbiByYW5nZSBmcm9tIDAgdG8KIC8vIHRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpIC0gMS4g
SWYgaSBpcyBub3QgaW4gdGhhdCByYW5nZSwgcmV0dXJucyBOVUxMLgogVGVzdENhc2UqIFVuaXRU
ZXN0OjpHZXRNdXRhYmxlVGVzdENhc2UoaW50IGkpIHsKQEAgLTM1NDEsMjkgKzQ2MjUsMTYgQEAg
RW52aXJvbm1lbnQqIFVuaXRUZXN0OjpBZGRFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KSB7
CiAgIHJldHVybiBlbnY7CiB9CiAKLSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwotLy8gQSBmYWls
ZWQgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIG9mIHRoaXMg
dHlwZQotLy8gd2hlbiBleGNlcHRpb25zIGFyZSBlbmFibGVkLiAgV2UgZGVyaXZlIGl0IGZyb20g
c3RkOjpydW50aW1lX2Vycm9yLAotLy8gd2hpY2ggaXMgZm9yIGVycm9ycyBwcmVzdW1hYmx5IGRl
dGVjdGFibGUgb25seSBhdCBydW4gdGltZS4gIFNpbmNlCi0vLyBzdGQ6OnJ1bnRpbWVfZXJyb3Ig
aW5oZXJpdHMgZnJvbSBzdGQ6OmV4Y2VwdGlvbiwgbWFueSB0ZXN0aW5nCi0vLyBmcmFtZXdvcmtz
IGtub3cgaG93IHRvIGV4dHJhY3QgYW5kIHByaW50IHRoZSBtZXNzYWdlIGluc2lkZSBpdC4KLWNs
YXNzIEdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uIDogcHVibGljIDo6c3RkOjpydW50aW1lX2Vy
cm9yIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IEdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uKGNv
bnN0IFRlc3RQYXJ0UmVzdWx0JiBmYWlsdXJlKQotICAgICAgOiA6OnN0ZDo6cnVudGltZV9lcnJv
cihQcmludFRlc3RQYXJ0UmVzdWx0VG9TdHJpbmcoZmFpbHVyZSkuY19zdHIoKSkge30KLX07Ci0j
ZW5kaWYKLQogLy8gQWRkcyBhIFRlc3RQYXJ0UmVzdWx0IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1
bHQgb2JqZWN0LiAgQWxsIEdvb2dsZSBUZXN0CiAvLyBhc3NlcnRpb24gbWFjcm9zIChlLmcuIEFT
U0VSVF9UUlVFLCBFWFBFQ1RfRVEsIGV0YykgZXZlbnR1YWxseSBjYWxsCiAvLyB0aGlzIHRvIHJl
cG9ydCB0aGVpciByZXN1bHRzLiAgVGhlIHVzZXIgY29kZSBzaG91bGQgdXNlIHRoZQogLy8gYXNz
ZXJ0aW9uIG1hY3JvcyBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhpcyBkaXJlY3RseS4KLS8vIEwgPCBt
dXRleF8KLXZvaWQgVW5pdFRlc3Q6OkFkZFRlc3RQYXJ0UmVzdWx0KFRlc3RQYXJ0UmVzdWx0OjpU
eXBlIHJlc3VsdF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogZmlsZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxp
bmVfbnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJu
YWw6OlN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGludGVybmFsOjpTdHJpbmcmIG9zX3N0YWNrX3RyYWNlKSB7Cit2b2lkIFVuaXRUZXN0OjpB
ZGRUZXN0UGFydFJlc3VsdCgKKyAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwK
KyAgICBjb25zdCBjaGFyKiBmaWxlX25hbWUsCisgICAgaW50IGxpbmVfbnVtYmVyLAorICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvc19zdGFj
a190cmFjZSkgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7CiAgIE1lc3NhZ2UgbXNnOwog
ICBtc2cgPDwgbWVzc2FnZTsKIApAQCAtMzU5NiwxNyArNDY2NywyNiBAQCB2b2lkIFVuaXRUZXN0
OjpBZGRUZXN0UGFydFJlc3VsdChUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKICAg
ICAvLyB3aXRoIGFub3RoZXIgdGVzdGluZyBmcmFtZXdvcmspIGFuZCBzcGVjaWZ5IHRoZSBmb3Jt
ZXIgb24gdGhlCiAgICAgLy8gY29tbWFuZCBsaW5lIGZvciBkZWJ1Z2dpbmcuCiAgICAgaWYgKEdU
RVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSkpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjaWYg
R1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1Nf
V0lORE9XU19SVAogICAgICAgLy8gVXNpbmcgRGVidWdCcmVhayBvbiBXaW5kb3dzIGFsbG93cyBn
dGVzdCB0byBzdGlsbCBicmVhayBpbnRvIGEgZGVidWdnZXIKICAgICAgIC8vIHdoZW4gYSBmYWls
dXJlIGhhcHBlbnMgYW5kIGJvdGggdGhlIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBhbmQKICAg
ICAgIC8vIHRoZSAtLWd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnMgZmxhZ3MgYXJlIHNwZWNpZmllZC4K
ICAgICAgIERlYnVnQnJlYWsoKTsKKyNlbGlmICghZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykp
ICYmICAgICAgICAgICAgXAorICAgICgoZGVmaW5lZChfX2NsYW5nX18pIHx8IGRlZmluZWQoX19H
TlVDX18pKSAmJiBcCisgICAgIChkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19pMzg2
X18pKSkKKyAgICAgIC8vIHdpdGggY2xhbmcvZ2NjIHdlIGNhbiBhY2hpZXZlIHRoZSBzYW1lIGVm
ZmVjdCBvbiB4ODYgYnkgaW52b2tpbmcgaW50MworICAgICAgYXNtKCJpbnQzIik7CiAjZWxzZQor
ICAgICAgLy8gRGVyZWZlcmVuY2UgTlVMTCB0aHJvdWdoIGEgdm9sYXRpbGUgcG9pbnRlciB0byBw
cmV2ZW50IHRoZSBjb21waWxlcgorICAgICAgLy8gZnJvbSByZW1vdmluZy4gV2UgdXNlIHRoaXMg
cmF0aGVyIHRoYW4gYWJvcnQoKSBvciBfX2J1aWx0aW5fdHJhcCgpIGZvcgorICAgICAgLy8gcG9y
dGFiaWxpdHk6IFN5bWJpYW4gZG9lc24ndCBpbXBsZW1lbnQgYWJvcnQoKSB3ZWxsLCBhbmQgc29t
ZSBkZWJ1Z2dlcnMKKyAgICAgIC8vIGRvbid0IGNvcnJlY3RseSB0cmFwIGFib3J0KCkuCiAgICAg
ICAqc3RhdGljX2Nhc3Q8dm9sYXRpbGUgaW50Kj4oTlVMTCkgPSAxOwogI2VuZGlmICAvLyBHVEVT
VF9PU19XSU5ET1dTCiAgICAgfSBlbHNlIGlmIChHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUp
KSB7CiAjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLSAgICAgIHRocm93IEdvb2dsZVRlc3RGYWls
dXJlRXhjZXB0aW9uKHJlc3VsdCk7CisgICAgICB0aHJvdyBpbnRlcm5hbDo6R29vZ2xlVGVzdEZh
aWx1cmVFeGNlcHRpb24ocmVzdWx0KTsKICNlbHNlCiAgICAgICAvLyBXZSBjYW5ub3QgY2FsbCBh
Ym9ydCgpIGFzIGl0IGdlbmVyYXRlcyBhIHBvcC11cCBpbiBkZWJ1ZyBtb2RlCiAgICAgICAvLyB0
aGF0IGNhbm5vdCBiZSBzdXBwcmVzc2VkIGluIFZDIDcuMSBvciBiZWxvdy4KQEAgLTM2MTYsMTIg
KzQ2OTYsMTQgQEAgdm9pZCBVbml0VGVzdDo6QWRkVGVzdFBhcnRSZXN1bHQoVGVzdFBhcnRSZXN1
bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCiAgIH0KIH0KIAotLy8gQ3JlYXRlcyBhbmQgYWRkcyBhIHBy
b3BlcnR5IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQuIElmIGEgcHJvcGVydHkgbWF0Y2hpbmcK
LS8vIHRoZSBzdXBwbGllZCB2YWx1ZSBhbHJlYWR5IGV4aXN0cywgdXBkYXRlcyBpdHMgdmFsdWUg
aW5zdGVhZC4KLXZvaWQgVW5pdFRlc3Q6OlJlY29yZFByb3BlcnR5Rm9yQ3VycmVudFRlc3QoY29u
c3QgY2hhcioga2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiB2YWx1ZSkgewotICBjb25zdCBUZXN0UHJvcGVydHkgdGVzdF9wcm9wZXJ0
eShrZXksIHZhbHVlKTsKLSAgaW1wbF8tPmN1cnJlbnRfdGVzdF9yZXN1bHQoKS0+UmVjb3JkUHJv
cGVydHkodGVzdF9wcm9wZXJ0eSk7CisvLyBBZGRzIGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJy
ZW50IFRlc3RSZXN1bHQgb2JqZWN0IHdoZW4gaW52b2tlZCBmcm9tCisvLyBpbnNpZGUgYSB0ZXN0
LCB0byBjdXJyZW50IFRlc3RDYXNlJ3MgYWRfaG9jX3Rlc3RfcmVzdWx0XyB3aGVuIGludm9rZWQK
Ky8vIGZyb20gU2V0VXBUZXN0Q2FzZSBvciBUZWFyRG93blRlc3RDYXNlLCBvciB0byB0aGUgZ2xv
YmFsIHByb3BlcnR5IHNldAorLy8gd2hlbiBpbnZva2VkIGVsc2V3aGVyZS4gIElmIHRoZSByZXN1
bHQgYWxyZWFkeSBjb250YWlucyBhIHByb3BlcnR5IHdpdGgKKy8vIHRoZSBzYW1lIGtleSwgdGhl
IHZhbHVlIHdpbGwgYmUgdXBkYXRlZC4KK3ZvaWQgVW5pdFRlc3Q6OlJlY29yZFByb3BlcnR5KGNv
bnN0IHN0ZDo6c3RyaW5nJiBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgdmFsdWUpIHsKKyAgaW1wbF8tPlJlY29yZFByb3BlcnR5KFRlc3RQcm9w
ZXJ0eShrZXksIHZhbHVlKSk7CiB9CiAKIC8vIFJ1bnMgYWxsIHRlc3RzIGluIHRoaXMgVW5pdFRl
c3Qgb2JqZWN0IGFuZCBwcmludHMgdGhlIHJlc3VsdC4KQEAgLTM2MzAsMzEgKzQ3MTIsNTggQEAg
dm9pZCBVbml0VGVzdDo6UmVjb3JkUHJvcGVydHlGb3JDdXJyZW50VGVzdChjb25zdCBjaGFyKiBr
ZXksCiAvLyBXZSBkb24ndCBwcm90ZWN0IHRoaXMgdW5kZXIgbXV0ZXhfLCBhcyB3ZSBvbmx5IHN1
cHBvcnQgY2FsbGluZyBpdAogLy8gZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiBpbnQgVW5pdFRlc3Q6
OlJ1bigpIHsKLSNpZiBHVEVTVF9IQVNfU0VICi0gIC8vIENhdGNoIFNFSC1zdHlsZSBleGNlcHRp
b25zLgotCiAgIGNvbnN0IGJvb2wgaW5fZGVhdGhfdGVzdF9jaGlsZF9wcm9jZXNzID0KICAgICAg
IGludGVybmFsOjpHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KS5sZW5ndGgoKSA+
IDA7CiAKKyAgLy8gR29vZ2xlIFRlc3QgaW1wbGVtZW50cyB0aGlzIHByb3RvY29sIGZvciBjYXRj
aGluZyB0aGF0IGEgdGVzdAorICAvLyBwcm9ncmFtIGV4aXRzIGJlZm9yZSByZXR1cm5pbmcgY29u
dHJvbCB0byBHb29nbGUgVGVzdDoKKyAgLy8KKyAgLy8gICAxLiBVcG9uIHN0YXJ0LCBHb29nbGUg
VGVzdCBjcmVhdGVzIGEgZmlsZSB3aG9zZSBhYnNvbHV0ZSBwYXRoCisgIC8vICAgICAgaXMgc3Bl
Y2lmaWVkIGJ5IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAvLyAgICAgIFRFU1RfUFJFTUFU
VVJFX0VYSVRfRklMRS4KKyAgLy8gICAyLiBXaGVuIEdvb2dsZSBUZXN0IGhhcyBmaW5pc2hlZCBp
dHMgd29yaywgaXQgZGVsZXRlcyB0aGUgZmlsZS4KKyAgLy8KKyAgLy8gVGhpcyBhbGxvd3MgYSB0
ZXN0IHJ1bm5lciB0byBzZXQgVEVTVF9QUkVNQVRVUkVfRVhJVF9GSUxFIGJlZm9yZQorICAvLyBy
dW5uaW5nIGEgR29vZ2xlLVRlc3QtYmFzZWQgdGVzdCBwcm9ncmFtIGFuZCBjaGVjayB0aGUgZXhp
c3RlbmNlCisgIC8vIG9mIHRoZSBmaWxlIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QgZXhlY3V0aW9u
IHRvIHNlZSBpZiBpdCBoYXMKKyAgLy8gZXhpdGVkIHByZW1hdHVyZWx5LgorCisgIC8vIElmIHdl
IGFyZSBpbiB0aGUgY2hpbGQgcHJvY2VzcyBvZiBhIGRlYXRoIHRlc3QsIGRvbid0CisgIC8vIGNy
ZWF0ZS9kZWxldGUgdGhlIHByZW1hdHVyZSBleGl0IGZpbGUsIGFzIGRvaW5nIHNvIGlzIHVubmVj
ZXNzYXJ5CisgIC8vIGFuZCB3aWxsIGNvbmZ1c2UgdGhlIHBhcmVudCBwcm9jZXNzLiAgT3RoZXJ3
aXNlLCBjcmVhdGUvZGVsZXRlCisgIC8vIHRoZSBmaWxlIHVwb24gZW50ZXJpbmcvbGVhdmluZyB0
aGlzIGZ1bmN0aW9uLiAgSWYgdGhlIHByb2dyYW0KKyAgLy8gc29tZWhvdyBleGl0cyBiZWZvcmUg
dGhpcyBmdW5jdGlvbiBoYXMgYSBjaGFuY2UgdG8gcmV0dXJuLCB0aGUKKyAgLy8gcHJlbWF0dXJl
LWV4aXQgZmlsZSB3aWxsIGJlIGxlZnQgdW5kZWxldGVkLCBjYXVzaW5nIGEgdGVzdCBydW5uZXIK
KyAgLy8gdGhhdCB1bmRlcnN0YW5kcyB0aGUgcHJlbWF0dXJlLWV4aXQtZmlsZSBwcm90b2NvbCB0
byByZXBvcnQgdGhlCisgIC8vIHRlc3QgYXMgaGF2aW5nIGZhaWxlZC4KKyAgY29uc3QgaW50ZXJu
YWw6OlNjb3BlZFByZW1hdHVyZUV4aXRGaWxlIHByZW1hdHVyZV9leGl0X2ZpbGUoCisgICAgICBp
bl9kZWF0aF90ZXN0X2NoaWxkX3Byb2Nlc3MgPworICAgICAgTlVMTCA6IGludGVybmFsOjpwb3Np
eDo6R2V0RW52KCJURVNUX1BSRU1BVFVSRV9FWElUX0ZJTEUiKSk7CisKKyAgLy8gQ2FwdHVyZXMg
dGhlIHZhbHVlIG9mIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykuICBUaGlzIHZhbHVlIHdp
bGwgYmUKKyAgLy8gdXNlZCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBwcm9ncmFtLgorICBpbXBs
KCktPnNldF9jYXRjaF9leGNlcHRpb25zKEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykpOwor
CisjaWYgR1RFU1RfT1NfV0lORE9XUwogICAvLyBFaXRoZXIgdGhlIHVzZXIgd2FudHMgR29vZ2xl
IFRlc3QgdG8gY2F0Y2ggZXhjZXB0aW9ucyB0aHJvd24gYnkgdGhlCiAgIC8vIHRlc3RzIG9yIHRo
aXMgaXMgZXhlY3V0aW5nIGluIHRoZSBjb250ZXh0IG9mIGRlYXRoIHRlc3QgY2hpbGQKICAgLy8g
cHJvY2Vzcy4gSW4gZWl0aGVyIGNhc2UgdGhlIHVzZXIgZG9lcyBub3Qgd2FudCB0byBzZWUgcG9w
LXVwIGRpYWxvZ3MKLSAgLy8gYWJvdXQgY3Jhc2hlcyAtIHRoZXkgYXJlIGV4cGVjdGVkLi4KLSAg
aWYgKEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgfHwgaW5fZGVhdGhfdGVzdF9jaGlsZF9w
cm9jZXNzKSB7Ci0jaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisgIC8vIGFib3V0IGNyYXNo
ZXMgLSB0aGV5IGFyZSBleHBlY3RlZC4KKyAgaWYgKGltcGwoKS0+Y2F0Y2hfZXhjZXB0aW9ucygp
IHx8IGluX2RlYXRoX3Rlc3RfY2hpbGRfcHJvY2VzcykgeworIyBpZiAhR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUgJiYgIUdURVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1Nf
UlQKICAgICAvLyBTZXRFcnJvck1vZGUgZG9lc24ndCBleGlzdCBvbiBDRS4KICAgICBTZXRFcnJv
ck1vZGUoU0VNX0ZBSUxDUklUSUNBTEVSUk9SUyB8IFNFTV9OT0FMSUdOTUVOVEZBVUxURVhDRVBU
IHwKICAgICAgICAgICAgICAgICAgU0VNX05PR1BGQVVMVEVSUk9SQk9YIHwgU0VNX05PT1BFTkZJ
TEVFUlJPUkJPWCk7Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBlbmRp
ZiAgLy8gIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAKLSNpZiAoZGVmaW5lZChfTVNDX1ZFUikg
fHwgR1RFU1RfT1NfV0lORE9XU19NSU5HVykgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisj
IGlmIChkZWZpbmVkKF9NU0NfVkVSKSB8fCBHVEVTVF9PU19XSU5ET1dTX01JTkdXKSAmJiAhR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKICAgICAvLyBEZWF0aCB0ZXN0IGNoaWxkcmVuIGNhbiBiZSB0
ZXJtaW5hdGVkIHdpdGggX2Fib3J0KCkuICBPbiBXaW5kb3dzLAogICAgIC8vIF9hYm9ydCgpIGNh
biBzaG93IGEgZGlhbG9nIHdpdGggYSB3YXJuaW5nIG1lc3NhZ2UuICBUaGlzIGZvcmNlcyB0aGUK
ICAgICAvLyBhYm9ydCBtZXNzYWdlIHRvIGdvIHRvIHN0ZGVyciBpbnN0ZWFkLgogICAgIF9zZXRf
ZXJyb3JfbW9kZShfT1VUX1RPX1NUREVSUik7Ci0jZW5kaWYKKyMgZW5kaWYKIAotI2lmIF9NU0Nf
VkVSID49IDE0MDAgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGlmIF9NU0NfVkVSID49
IDE0MDAgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAgICAgLy8gSW4gdGhlIGRlYnVnIHZl
cnNpb24sIFZpc3VhbCBTdHVkaW8gcG9wcyB1cCBhIHNlcGFyYXRlIGRpYWxvZwogICAgIC8vIG9m
ZmVyaW5nIGEgY2hvaWNlIHRvIGRlYnVnIHRoZSBhYm9ydGVkIHByb2dyYW0uIFdlIG5lZWQgdG8g
c3VwcHJlc3MKICAgICAvLyB0aGlzIGRpYWxvZyBvciBpdCB3aWxsIHBvcCB1cCBmb3IgZXZlcnkg
RVhQRUNUL0FTU0VSVF9ERUFUSCBzdGF0ZW1lbnQKQEAgLTM2NjQsMjggKzQ3NzMsMjAgQEAgaW50
IFVuaXRUZXN0OjpSdW4oKSB7CiAgICAgLy8gVkMrKyBkb2Vzbid0IGRlZmluZSBfc2V0X2Fib3J0
X2JlaGF2aW9yKCkgcHJpb3IgdG8gdGhlIHZlcnNpb24gOC4wLgogICAgIC8vIFVzZXJzIG9mIHBy
aW9yIFZDIHZlcnNpb25zIHNoYWxsIHN1ZmZlciB0aGUgYWdvbnkgYW5kIHBhaW4gb2YKICAgICAv
LyBjbGlja2luZyB0aHJvdWdoIHRoZSBjb3VudGxlc3MgZGVidWcgZGlhbG9ncy4KLSAgICAvLyBU
T0RPKHZsYWRsQGdvb2dsZS5jb20pOiBmaW5kIGEgd2F5IHRvIHN1cHByZXNzIHRoZSBhYm9ydCBk
aWFsb2coKSBpbiB0aGUKKyAgICAvLyBGSVhNRTogZmluZCBhIHdheSB0byBzdXBwcmVzcyB0aGUg
YWJvcnQgZGlhbG9nKCkgaW4gdGhlCiAgICAgLy8gZGVidWcgbW9kZSB3aGVuIGNvbXBpbGVkIHdp
dGggVkMgNy4xIG9yIGxvd2VyLgogICAgIGlmICghR1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJl
KSkKICAgICAgIF9zZXRfYWJvcnRfYmVoYXZpb3IoCiAgICAgICAgICAgMHgwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsZWFyIHRoZSBmb2xsb3dpbmcgZmxhZ3M6CiAg
ICAgICAgICAgX1dSSVRFX0FCT1JUX01TRyB8IF9DQUxMX1JFUE9SVEZBVUxUKTsgIC8vIHBvcC11
cCB3aW5kb3csIGNvcmUgZHVtcC4KLSNlbmRpZgorIyBlbmRpZgogICB9CisjZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MKIAotICBfX3RyeSB7Ci0gICAgcmV0dXJuIGltcGxfLT5SdW5BbGxUZXN0
cygpOwotICB9IF9fZXhjZXB0KGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxk
UHJvY2Vzc1NFSCgKLSAgICAgIEdldEV4Y2VwdGlvbkNvZGUoKSkpIHsKLSAgICBwcmludGYoIkV4
Y2VwdGlvbiB0aHJvd24gd2l0aCBjb2RlIDB4JXguXG5GQUlMXG4iLCBHZXRFeGNlcHRpb25Db2Rl
KCkpOwotICAgIGZmbHVzaChzdGRvdXQpOwotICAgIHJldHVybiAxOwotICB9Ci0KLSNlbHNlICAv
LyBXZSBhcmUgb24gYSBjb21waWxlciBvciBwbGF0Zm9ybSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBT
RUguCi0KLSAgcmV0dXJuIGltcGxfLT5SdW5BbGxUZXN0cygpOwotI2VuZGlmICAvLyBHVEVTVF9I
QVNfU0VICisgIHJldHVybiBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBw
b3J0ZWQoCisgICAgICBpbXBsKCksCisgICAgICAmaW50ZXJuYWw6OlVuaXRUZXN0SW1wbDo6UnVu
QWxsVGVzdHMsCisgICAgICAiYXV4aWxpYXJ5IHRlc3QgY29kZSAoZW52aXJvbm1lbnRzIG9yIGV2
ZW50IGxpc3RlbmVycykiKSA/IDAgOiAxOwogfQogCiAvLyBSZXR1cm5zIHRoZSB3b3JraW5nIGRp
cmVjdG9yeSB3aGVuIHRoZSBmaXJzdCBURVNUKCkgb3IgVEVTVF9GKCkgd2FzCkBAIC0zNjk2LDE2
ICs0Nzk3LDE2IEBAIGNvbnN0IGNoYXIqIFVuaXRUZXN0OjpvcmlnaW5hbF93b3JraW5nX2Rpcigp
IGNvbnN0IHsKIAogLy8gUmV0dXJucyB0aGUgVGVzdENhc2Ugb2JqZWN0IGZvciB0aGUgdGVzdCB0
aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcsCiAvLyBvciBOVUxMIGlmIG5vIHRlc3QgaXMgcnVubmlu
Zy4KLS8vIEwgPCBtdXRleF8KLWNvbnN0IFRlc3RDYXNlKiBVbml0VGVzdDo6Y3VycmVudF90ZXN0
X2Nhc2UoKSBjb25zdCB7Citjb25zdCBUZXN0Q2FzZSogVW5pdFRlc3Q6OmN1cnJlbnRfdGVzdF9j
YXNlKCkgY29uc3QKKyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pIHsKICAgaW50ZXJu
YWw6Ok11dGV4TG9jayBsb2NrKCZtdXRleF8pOwogICByZXR1cm4gaW1wbF8tPmN1cnJlbnRfdGVz
dF9jYXNlKCk7CiB9CiAKIC8vIFJldHVybnMgdGhlIFRlc3RJbmZvIG9iamVjdCBmb3IgdGhlIHRl
c3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLAogLy8gb3IgTlVMTCBpZiBubyB0ZXN0IGlzIHJ1
bm5pbmcuCi0vLyBMIDwgbXV0ZXhfCi1jb25zdCBUZXN0SW5mbyogVW5pdFRlc3Q6OmN1cnJlbnRf
dGVzdF9pbmZvKCkgY29uc3QgeworY29uc3QgVGVzdEluZm8qIFVuaXRUZXN0OjpjdXJyZW50X3Rl
c3RfaW5mbygpIGNvbnN0CisgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7CiAgIGlu
dGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKICAgcmV0dXJuIGltcGxfLT5jdXJyZW50
X3Rlc3RfaW5mbygpOwogfQpAQCAtMzcxMywxNSArNDgxNCwxMyBAQCBjb25zdCBUZXN0SW5mbyog
VW5pdFRlc3Q6OmN1cnJlbnRfdGVzdF9pbmZvKCkgY29uc3QgewogLy8gUmV0dXJucyB0aGUgcmFu
ZG9tIHNlZWQgdXNlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQgdGVzdCBydW4uCiBpbnQg
VW5pdFRlc3Q6OnJhbmRvbV9zZWVkKCkgY29uc3QgeyByZXR1cm4gaW1wbF8tPnJhbmRvbV9zZWVk
KCk7IH0KIAotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiAvLyBSZXR1cm5zIFBhcmFtZXRlcml6
ZWRUZXN0Q2FzZVJlZ2lzdHJ5IG9iamVjdCB1c2VkIHRvIGtlZXAgdHJhY2sgb2YKIC8vIHZhbHVl
LXBhcmFtZXRlcml6ZWQgdGVzdHMgYW5kIGluc3RhbnRpYXRlIGFuZCByZWdpc3RlciB0aGVtLgot
Ly8gTCA8IG11dGV4XwogaW50ZXJuYWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5Jgot
ICAgIFVuaXRUZXN0OjpwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKSB7CisgICAgVW5pdFRl
c3Q6OnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpCisgICAgICAgIEdURVNUX0xPQ0tfRVhD
TFVERURfKG11dGV4XykgewogICByZXR1cm4gaW1wbF8tPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdp
c3RyeSgpOwogfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogCiAvLyBDcmVhdGVz
IGFuIGVtcHR5IFVuaXRUZXN0LgogVW5pdFRlc3Q6OlVuaXRUZXN0KCkgewpAQCAtMzczNSwxNSAr
NDgzNCwxNSBAQCBVbml0VGVzdDo6flVuaXRUZXN0KCkgewogCiAvLyBQdXNoZXMgYSB0cmFjZSBk
ZWZpbmVkIGJ5IFNDT1BFRF9UUkFDRSgpIG9uIHRvIHRoZSBwZXItdGhyZWFkCiAvLyBHb29nbGUg
VGVzdCB0cmFjZSBzdGFjay4KLS8vIEwgPCBtdXRleF8KLXZvaWQgVW5pdFRlc3Q6OlB1c2hHVGVz
dFRyYWNlKGNvbnN0IGludGVybmFsOjpUcmFjZUluZm8mIHRyYWNlKSB7Cit2b2lkIFVuaXRUZXN0
OjpQdXNoR1Rlc3RUcmFjZShjb25zdCBpbnRlcm5hbDo6VHJhY2VJbmZvJiB0cmFjZSkKKyAgICBH
VEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pIHsKICAgaW50ZXJuYWw6Ok11dGV4TG9jayBsb2Nr
KCZtdXRleF8pOwogICBpbXBsXy0+Z3Rlc3RfdHJhY2Vfc3RhY2soKS5wdXNoX2JhY2sodHJhY2Up
OwogfQogCiAvLyBQb3BzIGEgdHJhY2UgZnJvbSB0aGUgcGVyLXRocmVhZCBHb29nbGUgVGVzdCB0
cmFjZSBzdGFjay4KLS8vIEwgPCBtdXRleF8KLXZvaWQgVW5pdFRlc3Q6OlBvcEdUZXN0VHJhY2Uo
KSB7Cit2b2lkIFVuaXRUZXN0OjpQb3BHVGVzdFRyYWNlKCkKKyAgICBHVEVTVF9MT0NLX0VYQ0xV
REVEXyhtdXRleF8pIHsKICAgaW50ZXJuYWw6Ok11dGV4TG9jayBsb2NrKCZtdXRleF8pOwogICBp
bXBsXy0+Z3Rlc3RfdHJhY2Vfc3RhY2soKS5wb3BfYmFjaygpOwogfQpAQCAtMzc1MiwyNSArNDg1
MSwxNiBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogCiBVbml0VGVzdEltcGw6OlVuaXRUZXN0SW1w
bChVbml0VGVzdCogcGFyZW50KQogICAgIDogcGFyZW50XyhwYXJlbnQpLAotI2lmZGVmIF9NU0Nf
VkVSCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkgICAgICAgICAgICAgICAgICAgIC8vIFNhdmVzIHRo
ZSBjdXJyZW50IHdhcm5pbmcgc3RhdGUuCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MzU1KSAg
ICAgICAgICAgIC8vIFRlbXBvcmFyaWx5IGRpc2FibGVzIHdhcm5pbmcgNDM1NQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAodXNpbmcgdGhpcyBpbiBpbml0aWFs
aXplcikuCi0gICAgICBkZWZhdWx0X2dsb2JhbF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXyh0
aGlzKSwKLSAgICAgIGRlZmF1bHRfcGVyX3RocmVhZF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVy
Xyh0aGlzKSwKLSNwcmFnbWEgd2FybmluZyhwb3ApICAgICAgICAgICAgICAgICAgICAgLy8gUmVz
dG9yZXMgdGhlIHdhcm5pbmcgc3RhdGUgYWdhaW4uCi0jZWxzZQorICAgICAgR1RFU1RfRElTQUJM
RV9NU0NfV0FSTklOR1NfUFVTSF8oNDM1NSAvKiB1c2luZyB0aGlzIGluIGluaXRpYWxpemVyICov
KQogICAgICAgZGVmYXVsdF9nbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8odGhpcyks
CiAgICAgICBkZWZhdWx0X3Blcl90aHJlYWRfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8odGhp
cyksCi0jZW5kaWYgIC8vIF9NU0NfVkVSCisgICAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5H
U19QT1BfKCkKICAgICAgIGdsb2JhbF90ZXN0X3BhcnRfcmVzdWx0X3JlcG90ZXJfKAogICAgICAg
ICAgICZkZWZhdWx0X2dsb2JhbF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXyksCiAgICAgICBw
ZXJfdGhyZWFkX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfKAogICAgICAgICAgICZkZWZhdWx0
X3Blcl90aHJlYWRfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8pLAotI2lmIEdURVNUX0hBU19Q
QVJBTV9URVNUCiAgICAgICBwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnlfKCksCiAgICAgICBw
YXJhbWV0ZXJpemVkX3Rlc3RzX3JlZ2lzdGVyZWRfKGZhbHNlKSwKLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1BBUkFNX1RFU1QKICAgICAgIGxhc3RfZGVhdGhfdGVzdF9jYXNlXygtMSksCiAgICAgICBj
dXJyZW50X3Rlc3RfY2FzZV8oTlVMTCksCiAgICAgICBjdXJyZW50X3Rlc3RfaW5mb18oTlVMTCks
CkBAIC0zNzc5LDEzICs0ODY5LDEzIEBAIFVuaXRUZXN0SW1wbDo6VW5pdFRlc3RJbXBsKFVuaXRU
ZXN0KiBwYXJlbnQpCiAgICAgICBwb3N0X2ZsYWdfcGFyc2VfaW5pdF9wZXJmb3JtZWRfKGZhbHNl
KSwKICAgICAgIHJhbmRvbV9zZWVkXygwKSwgIC8vIFdpbGwgYmUgb3ZlcnJpZGRlbiBieSB0aGUg
ZmxhZyBiZWZvcmUgZmlyc3QgdXNlLgogICAgICAgcmFuZG9tXygwKSwgIC8vIFdpbGwgYmUgcmVz
ZWVkZWQgYmVmb3JlIGZpcnN0IHVzZS4KLSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorICAgICAg
c3RhcnRfdGltZXN0YW1wXygwKSwKICAgICAgIGVsYXBzZWRfdGltZV8oMCksCi0gICAgICBpbnRl
cm5hbF9ydW5fZGVhdGhfdGVzdF9mbGFnXyhOVUxMKSwKLSAgICAgIGRlYXRoX3Rlc3RfZmFjdG9y
eV8obmV3IERlZmF1bHREZWF0aFRlc3RGYWN0b3J5KSB7Ci0jZWxzZQotICAgICAgZWxhcHNlZF90
aW1lXygwKSB7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCisjaWYgR1RFU1RfSEFT
X0RFQVRIX1RFU1QKKyAgICAgIGRlYXRoX3Rlc3RfZmFjdG9yeV8obmV3IERlZmF1bHREZWF0aFRl
c3RGYWN0b3J5KSwKKyNlbmRpZgorICAgICAgLy8gV2lsbCBiZSBvdmVycmlkZGVuIGJ5IHRoZSBm
bGFnIGJlZm9yZSBmaXJzdCB1c2UuCisgICAgICBjYXRjaF9leGNlcHRpb25zXyhmYWxzZSkgewog
ICBsaXN0ZW5lcnMoKS0+U2V0RGVmYXVsdFJlc3VsdFByaW50ZXIobmV3IFByZXR0eVVuaXRUZXN0
UmVzdWx0UHJpbnRlcik7CiB9CiAKQEAgLTM3OTksNiArNDg4OSwyOCBAQCBVbml0VGVzdEltcGw6
On5Vbml0VGVzdEltcGwoKSB7CiAgIGRlbGV0ZSBvc19zdGFja190cmFjZV9nZXR0ZXJfOwogfQog
CisvLyBBZGRzIGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0
IHdoZW4gaW52b2tlZCBpbiBhCisvLyBjb250ZXh0IG9mIGEgdGVzdCwgdG8gY3VycmVudCB0ZXN0
IGNhc2UncyBhZF9ob2NfdGVzdF9yZXN1bHQgd2hlbiBpbnZva2UKKy8vIGZyb20gU2V0VXBUZXN0
Q2FzZS9UZWFyRG93blRlc3RDYXNlLCBvciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNldAorLy8g
b3RoZXJ3aXNlLiAgSWYgdGhlIHJlc3VsdCBhbHJlYWR5IGNvbnRhaW5zIGEgcHJvcGVydHkgd2l0
aCB0aGUgc2FtZSBrZXksCisvLyB0aGUgdmFsdWUgd2lsbCBiZSB1cGRhdGVkLgordm9pZCBVbml0
VGVzdEltcGw6OlJlY29yZFByb3BlcnR5KGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0
eSkgeworICBzdGQ6OnN0cmluZyB4bWxfZWxlbWVudDsKKyAgVGVzdFJlc3VsdCogdGVzdF9yZXN1
bHQ7ICAvLyBUZXN0UmVzdWx0IGFwcHJvcHJpYXRlIGZvciBwcm9wZXJ0eSByZWNvcmRpbmcuCisK
KyAgaWYgKGN1cnJlbnRfdGVzdF9pbmZvXyAhPSBOVUxMKSB7CisgICAgeG1sX2VsZW1lbnQgPSAi
dGVzdGNhc2UiOworICAgIHRlc3RfcmVzdWx0ID0gJihjdXJyZW50X3Rlc3RfaW5mb18tPnJlc3Vs
dF8pOworICB9IGVsc2UgaWYgKGN1cnJlbnRfdGVzdF9jYXNlXyAhPSBOVUxMKSB7CisgICAgeG1s
X2VsZW1lbnQgPSAidGVzdHN1aXRlIjsKKyAgICB0ZXN0X3Jlc3VsdCA9ICYoY3VycmVudF90ZXN0
X2Nhc2VfLT5hZF9ob2NfdGVzdF9yZXN1bHRfKTsKKyAgfSBlbHNlIHsKKyAgICB4bWxfZWxlbWVu
dCA9ICJ0ZXN0c3VpdGVzIjsKKyAgICB0ZXN0X3Jlc3VsdCA9ICZhZF9ob2NfdGVzdF9yZXN1bHRf
OworICB9CisgIHRlc3RfcmVzdWx0LT5SZWNvcmRQcm9wZXJ0eSh4bWxfZWxlbWVudCwgdGVzdF9w
cm9wZXJ0eSk7Cit9CisKICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogLy8gRGlzYWJsZXMgZXZl
bnQgZm9yd2FyZGluZyBpZiB0aGUgY29udHJvbCBpcyBjdXJyZW50bHkgaW4gYSBkZWF0aCB0ZXN0
CiAvLyBzdWJwcm9jZXNzLiBNdXN0IG5vdCBiZSBjYWxsZWQgYmVmb3JlIEluaXRHb29nbGVUZXN0
LgpAQCAtMzgxMSwxNyArNDkyMywzNyBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6U3VwcHJlc3NUZXN0
RXZlbnRzSWZJblN1YnByb2Nlc3MoKSB7CiAvLyBJbml0aWFsaXplcyBldmVudCBsaXN0ZW5lcnMg
cGVyZm9ybWluZyBYTUwgb3V0cHV0IGFzIHNwZWNpZmllZCBieQogLy8gVW5pdFRlc3RPcHRpb25z
LiBNdXN0IG5vdCBiZSBjYWxsZWQgYmVmb3JlIEluaXRHb29nbGVUZXN0Lgogdm9pZCBVbml0VGVz
dEltcGw6OkNvbmZpZ3VyZVhtbE91dHB1dCgpIHsKLSAgY29uc3QgU3RyaW5nJiBvdXRwdXRfZm9y
bWF0ID0gVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQoKTsKKyAgY29uc3Qgc3RkOjpz
dHJpbmcmIG91dHB1dF9mb3JtYXQgPSBVbml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdCgp
OwogICBpZiAob3V0cHV0X2Zvcm1hdCA9PSAieG1sIikgewogICAgIGxpc3RlbmVycygpLT5TZXRE
ZWZhdWx0WG1sR2VuZXJhdG9yKG5ldyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIoCiAgICAgICAg
IFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSkp
OworICB9IGVsc2UgaWYgKG91dHB1dF9mb3JtYXQgPT0gImpzb24iKSB7CisgICAgbGlzdGVuZXJz
KCktPlNldERlZmF1bHRYbWxHZW5lcmF0b3IobmV3IEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIo
CisgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCku
Y19zdHIoKSkpOwogICB9IGVsc2UgaWYgKG91dHB1dF9mb3JtYXQgIT0gIiIpIHsKLSAgICBwcmlu
dGYoIldBUk5JTkc6IHVucmVjb2duaXplZCBvdXRwdXQgZm9ybWF0IFwiJXNcIiBpZ25vcmVkLlxu
IiwKLSAgICAgICAgICAgb3V0cHV0X2Zvcm1hdC5jX3N0cigpKTsKLSAgICBmZmx1c2goc3Rkb3V0
KTsKKyAgICBHVEVTVF9MT0dfKFdBUk5JTkcpIDw8ICJXQVJOSU5HOiB1bnJlY29nbml6ZWQgb3V0
cHV0IGZvcm1hdCBcIiIKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8IG91dHB1dF9mb3JtYXQg
PDwgIlwiIGlnbm9yZWQuIjsKICAgfQogfQogCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRT
XworLy8gSW5pdGlhbGl6ZXMgZXZlbnQgbGlzdGVuZXJzIGZvciBzdHJlYW1pbmcgdGVzdCByZXN1
bHRzIGluIHN0cmluZyBmb3JtLgorLy8gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBJbml0R29v
Z2xlVGVzdC4KK3ZvaWQgVW5pdFRlc3RJbXBsOjpDb25maWd1cmVTdHJlYW1pbmdPdXRwdXQoKSB7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0YXJnZXQgPSBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRf
dG8pOworICBpZiAoIXRhcmdldC5lbXB0eSgpKSB7CisgICAgY29uc3Qgc2l6ZV90IHBvcyA9IHRh
cmdldC5maW5kKCc6Jyk7CisgICAgaWYgKHBvcyAhPSBzdGQ6OnN0cmluZzo6bnBvcykgeworICAg
ICAgbGlzdGVuZXJzKCktPkFwcGVuZChuZXcgU3RyZWFtaW5nTGlzdGVuZXIodGFyZ2V0LnN1YnN0
cigwLCBwb3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGFyZ2V0LnN1YnN0cihwb3MrMSkpKTsKKyAgICB9IGVsc2UgeworICAgICAgR1RFU1RfTE9H
XyhXQVJOSU5HKSA8PCAidW5yZWNvZ25pemVkIHN0cmVhbWluZyB0YXJnZXQgXCIiIDw8IHRhcmdl
dAorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXCIgaWdub3JlZC4iOworICAgIH0KKyAg
fQorfQorI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKIC8vIFBlcmZvcm1z
IGluaXRpYWxpemF0aW9uIGRlcGVuZGVudCB1cG9uIGZsYWcgdmFsdWVzIG9idGFpbmVkIGluCiAv
LyBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkuICBJcyBjYWxsZWQgZnJvbSBJbml0R29vZ2xlVGVz
dCBhZnRlciB0aGUgY2FsbCB0bwogLy8gUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5LiAgSW4gY2Fz
ZSBhIHVzZXIgbmVnbGVjdHMgdG8gY2FsbCBJbml0R29vZ2xlVGVzdApAQCAtMzgzMiw2ICs0OTY0
LDExIEBAIHZvaWQgVW5pdFRlc3RJbXBsOjpQb3N0RmxhZ1BhcnNpbmdJbml0KCkgewogICBpZiAo
IXBvc3RfZmxhZ19wYXJzZV9pbml0X3BlcmZvcm1lZF8pIHsKICAgICBwb3N0X2ZsYWdfcGFyc2Vf
aW5pdF9wZXJmb3JtZWRfID0gdHJ1ZTsKIAorI2lmIGRlZmluZWQoR1RFU1RfQ1VTVE9NX1RFU1Rf
RVZFTlRfTElTVEVORVJfKQorICAgIC8vIFJlZ2lzdGVyIHRvIHNlbmQgbm90aWZpY2F0aW9ucyBh
Ym91dCBrZXkgcHJvY2VzcyBzdGF0ZSBjaGFuZ2VzLgorICAgIGxpc3RlbmVycygpLT5BcHBlbmQo
bmV3IEdURVNUX0NVU1RPTV9URVNUX0VWRU5UX0xJU1RFTkVSXygpKTsKKyNlbmRpZiAgLy8gZGVm
aW5lZChHVEVTVF9DVVNUT01fVEVTVF9FVkVOVF9MSVNURU5FUl8pCisKICNpZiBHVEVTVF9IQVNf
REVBVEhfVEVTVAogICAgIEluaXREZWF0aFRlc3RTdWJwcm9jZXNzQ29udHJvbEluZm8oKTsKICAg
ICBTdXBwcmVzc1Rlc3RFdmVudHNJZkluU3VicHJvY2VzcygpOwpAQCAtMzg0NSw2ICs0OTgyLDE4
IEBAIHZvaWQgVW5pdFRlc3RJbXBsOjpQb3N0RmxhZ1BhcnNpbmdJbml0KCkgewogICAgIC8vIENv
bmZpZ3VyZXMgbGlzdGVuZXJzIGZvciBYTUwgb3V0cHV0LiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxl
IGZvciB1c2VycwogICAgIC8vIHRvIHNodXQgZG93biB0aGUgZGVmYXVsdCBYTUwgb3V0cHV0IGJl
Zm9yZSBpbnZva2luZyBSVU5fQUxMX1RFU1RTLgogICAgIENvbmZpZ3VyZVhtbE91dHB1dCgpOwor
CisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworICAgIC8vIENvbmZpZ3VyZXMgbGlzdGVu
ZXJzIGZvciBzdHJlYW1pbmcgdGVzdCByZXN1bHRzIHRvIHRoZSBzcGVjaWZpZWQgc2VydmVyLgor
ICAgIENvbmZpZ3VyZVN0cmVhbWluZ091dHB1dCgpOworI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RS
RUFNX1JFU1VMVFNfCisKKyNpZiBHVEVTVF9IQVNfQUJTTAorICAgIGlmIChHVEVTVF9GTEFHKGlu
c3RhbGxfZmFpbHVyZV9zaWduYWxfaGFuZGxlcikpIHsKKyAgICAgIGFic2w6OkZhaWx1cmVTaWdu
YWxIYW5kbGVyT3B0aW9ucyBvcHRpb25zOworICAgICAgYWJzbDo6SW5zdGFsbEZhaWx1cmVTaWdu
YWxIYW5kbGVyKG9wdGlvbnMpOworICAgIH0KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0FCU0wKICAg
fQogfQogCkBAIC0zODU5LDcgKzUwMDgsNyBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6UG9zdEZsYWdQ
YXJzaW5nSW5pdCgpIHsKIGNsYXNzIFRlc3RDYXNlTmFtZUlzIHsKICBwdWJsaWM6CiAgIC8vIENv
bnN0cnVjdG9yLgotICBleHBsaWNpdCBUZXN0Q2FzZU5hbWVJcyhjb25zdCBTdHJpbmcmIG5hbWUp
CisgIGV4cGxpY2l0IFRlc3RDYXNlTmFtZUlzKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKQogICAg
ICAgOiBuYW1lXyhuYW1lKSB7fQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIG5hbWUgb2Yg
dGVzdF9jYXNlIG1hdGNoZXMgbmFtZV8uCkBAIC0zODY4LDcgKzUwMTcsNyBAQCBjbGFzcyBUZXN0
Q2FzZU5hbWVJcyB7CiAgIH0KIAogIHByaXZhdGU6Ci0gIFN0cmluZyBuYW1lXzsKKyAgc3RkOjpz
dHJpbmcgbmFtZV87CiB9OwogCiAvLyBGaW5kcyBhbmQgcmV0dXJucyBhIFRlc3RDYXNlIHdpdGgg
dGhlIGdpdmVuIG5hbWUuICBJZiBvbmUgZG9lc24ndApAQCAtMzg3OSwyNiArNTAyOCwyOCBAQCBj
bGFzcyBUZXN0Q2FzZU5hbWVJcyB7CiAvLyBBcmd1bWVudHM6CiAvLwogLy8gICB0ZXN0X2Nhc2Vf
bmFtZTogbmFtZSBvZiB0aGUgdGVzdCBjYXNlCisvLyAgIHR5cGVfcGFyYW06ICAgICB0aGUgbmFt
ZSBvZiB0aGUgdGVzdCBjYXNlJ3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYKKy8vICAgICAg
ICAgICAgICAgICAgIHRoaXMgaXMgbm90IGEgdHlwZWQgb3IgYSB0eXBlLXBhcmFtZXRlcml6ZWQg
dGVzdCBjYXNlLgogLy8gICBzZXRfdXBfdGM6ICAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24g
dGhhdCBzZXRzIHVwIHRoZSB0ZXN0IGNhc2UKIC8vICAgdGVhcl9kb3duX3RjOiAgIHBvaW50ZXIg
dG8gdGhlIGZ1bmN0aW9uIHRoYXQgdGVhcnMgZG93biB0aGUgdGVzdCBjYXNlCiBUZXN0Q2FzZSog
VW5pdFRlc3RJbXBsOjpHZXRUZXN0Q2FzZShjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbW1lbnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0eXBlX3BhcmFt
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdDo6U2V0VXBUZXN0Q2Fz
ZUZ1bmMgc2V0X3VwX3RjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVz
dDo6VGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3RjKSB7CiAgIC8vIENhbiB3ZSBmaW5k
IGEgVGVzdENhc2Ugd2l0aCB0aGUgZ2l2ZW4gbmFtZT8KLSAgY29uc3Qgc3RkOjp2ZWN0b3I8VGVz
dENhc2UqPjo6Y29uc3RfaXRlcmF0b3IgdGVzdF9jYXNlID0KLSAgICAgIHN0ZDo6ZmluZF9pZih0
ZXN0X2Nhc2VzXy5iZWdpbigpLCB0ZXN0X2Nhc2VzXy5lbmQoKSwKKyAgY29uc3Qgc3RkOjp2ZWN0
b3I8VGVzdENhc2UqPjo6Y29uc3RfcmV2ZXJzZV9pdGVyYXRvciB0ZXN0X2Nhc2UgPQorICAgICAg
c3RkOjpmaW5kX2lmKHRlc3RfY2FzZXNfLnJiZWdpbigpLCB0ZXN0X2Nhc2VzXy5yZW5kKCksCiAg
ICAgICAgICAgICAgICAgICAgVGVzdENhc2VOYW1lSXModGVzdF9jYXNlX25hbWUpKTsKIAotICBp
ZiAodGVzdF9jYXNlICE9IHRlc3RfY2FzZXNfLmVuZCgpKQorICBpZiAodGVzdF9jYXNlICE9IHRl
c3RfY2FzZXNfLnJlbmQoKSkKICAgICByZXR1cm4gKnRlc3RfY2FzZTsKIAogICAvLyBOby4gIExl
dCdzIGNyZWF0ZSBvbmUuCiAgIFRlc3RDYXNlKiBjb25zdCBuZXdfdGVzdF9jYXNlID0KLSAgICAg
IG5ldyBUZXN0Q2FzZSh0ZXN0X2Nhc2VfbmFtZSwgY29tbWVudCwgc2V0X3VwX3RjLCB0ZWFyX2Rv
d25fdGMpOworICAgICAgbmV3IFRlc3RDYXNlKHRlc3RfY2FzZV9uYW1lLCB0eXBlX3BhcmFtLCBz
ZXRfdXBfdGMsIHRlYXJfZG93bl90Yyk7CiAKICAgLy8gSXMgdGhpcyBhIGRlYXRoIHRlc3QgY2Fz
ZT8KLSAgaWYgKGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6Ok1hdGNoZXNGaWx0ZXIoU3RyaW5n
KHRlc3RfY2FzZV9uYW1lKSwKKyAgaWYgKGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6Ok1hdGNo
ZXNGaWx0ZXIodGVzdF9jYXNlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtEZWF0aFRlc3RDYXNlRmlsdGVyKSkgewogICAgIC8vIFllcy4gIElu
c2VydHMgdGhlIHRlc3QgY2FzZSBhZnRlciB0aGUgbGFzdCBkZWF0aCB0ZXN0IGNhc2UKICAgICAv
LyBkZWZpbmVkIHNvIGZhci4gIFRoaXMgb25seSB3b3JrcyB3aGVuIHRoZSB0ZXN0IGNhc2VzIGhh
dmVuJ3QKQEAgLTM5MjIsMjcgKzUwNzMsMjEgQEAgc3RhdGljIHZvaWQgU2V0VXBFbnZpcm9ubWVu
dChFbnZpcm9ubWVudCogZW52KSB7IGVudi0+U2V0VXAoKTsgfQogc3RhdGljIHZvaWQgVGVhckRv
d25FbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KSB7IGVudi0+VGVhckRvd24oKTsgfQogCiAv
LyBSdW5zIGFsbCB0ZXN0cyBpbiB0aGlzIFVuaXRUZXN0IG9iamVjdCwgcHJpbnRzIHRoZSByZXN1
bHQsIGFuZAotLy8gcmV0dXJucyAwIGlmIGFsbCB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3IgMSBv
dGhlcndpc2UuICBJZiBhbnkKLS8vIGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIGEgdGVzdCBv
biBXaW5kb3dzLCB0aGlzIHRlc3QgaXMKLS8vIGNvbnNpZGVyZWQgdG8gYmUgZmFpbGVkLCBidXQg
dGhlIHJlc3Qgb2YgdGhlIHRlc3RzIHdpbGwgc3RpbGwgYmUKLS8vIHJ1bi4gIChXZSBkaXNhYmxl
IGV4Y2VwdGlvbnMgb24gTGludXggYW5kIE1hYyBPUyBYLCBzbyB0aGUgaXNzdWUKLS8vIGRvZXNu
J3QgYXBwbHkgdGhlcmUuKQorLy8gcmV0dXJucyB0cnVlIGlmIGFsbCB0ZXN0cyBhcmUgc3VjY2Vz
c2Z1bC4gIElmIGFueSBleGNlcHRpb24gaXMKKy8vIHRocm93biBkdXJpbmcgYSB0ZXN0LCB0aGUg
dGVzdCBpcyBjb25zaWRlcmVkIHRvIGJlIGZhaWxlZCwgYnV0IHRoZQorLy8gcmVzdCBvZiB0aGUg
dGVzdHMgd2lsbCBzdGlsbCBiZSBydW4uCisvLwogLy8gV2hlbiBwYXJhbWV0ZXJpemVkIHRlc3Rz
IGFyZSBlbmFibGVkLCBpdCBleHBhbmRzIGFuZCByZWdpc3RlcnMKIC8vIHBhcmFtZXRlcml6ZWQg
dGVzdHMgZmlyc3QgaW4gUmVnaXN0ZXJQYXJhbWV0ZXJpemVkVGVzdHMoKS4KIC8vIEFsbCBvdGhl
ciBmdW5jdGlvbnMgY2FsbGVkIGZyb20gUnVuQWxsVGVzdHMoKSBtYXkgc2FmZWx5IGFzc3VtZSB0
aGF0CiAvLyBwYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSByZWFkeSB0byBiZSBjb3VudGVkIGFuZCBy
dW4uCi1pbnQgVW5pdFRlc3RJbXBsOjpSdW5BbGxUZXN0cygpIHsKLSAgLy8gTWFrZXMgc3VyZSBJ
bml0R29vZ2xlVGVzdCgpIHdhcyBjYWxsZWQuCi0gIGlmICghR1Rlc3RJc0luaXRpYWxpemVkKCkp
IHsKLSAgICBwcmludGYoIiVzIiwKLSAgICAgICAgICAgIlxuVGhpcyB0ZXN0IHByb2dyYW0gZGlk
IE5PVCBjYWxsIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QgIgotICAgICAgICAgICAiYmVmb3Jl
IGNhbGxpbmcgUlVOX0FMTF9URVNUUygpLiAgUGxlYXNlIGZpeCBpdC5cbiIpOwotICAgIHJldHVy
biAxOwotICB9Citib29sIFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7CisgIC8vIFRydWUg
aWZmIEdvb2dsZSBUZXN0IGlzIGluaXRpYWxpemVkIGJlZm9yZSBSVU5fQUxMX1RFU1RTKCkgaXMg
Y2FsbGVkLgorICBjb25zdCBib29sIGd0ZXN0X2lzX2luaXRpYWxpemVkX2JlZm9yZV9ydW5fYWxs
X3Rlc3RzID0gR1Rlc3RJc0luaXRpYWxpemVkKCk7CiAKICAgLy8gRG8gbm90IHJ1biBhbnkgdGVz
dCBpZiB0aGUgLS1oZWxwIGZsYWcgd2FzIHNwZWNpZmllZC4KICAgaWYgKGdfaGVscF9mbGFnKQot
ICAgIHJldHVybiAwOworICAgIHJldHVybiB0cnVlOwogCiAgIC8vIFJlcGVhdHMgdGhlIGNhbGwg
dG8gdGhlIHBvc3QtZmxhZyBwYXJzaW5nIGluaXRpYWxpemF0aW9uIGluIGNhc2UgdGhlCiAgIC8v
IHVzZXIgZGlkbid0IGNhbGwgSW5pdEdvb2dsZVRlc3QuCkBAIC0zOTU5LDYgKzUxMDQsMTEgQEAg
aW50IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7CiAKICNpZiBHVEVTVF9IQVNfREVBVEhf
VEVTVAogICBpbl9zdWJwcm9jZXNzX2Zvcl9kZWF0aF90ZXN0ID0gKGludGVybmFsX3J1bl9kZWF0
aF90ZXN0X2ZsYWdfLmdldCgpICE9IE5VTEwpOworIyBpZiBkZWZpbmVkKEdURVNUX0VYVFJBX0RF
QVRIX1RFU1RfQ0hJTERfU0VUVVBfKQorICBpZiAoaW5fc3VicHJvY2Vzc19mb3JfZGVhdGhfdGVz
dCkgeworICAgIEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ0hJTERfU0VUVVBfKCk7CisgIH0KKyMg
ZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfRVhUUkFfREVBVEhfVEVTVF9DSElMRF9TRVRVUF8pCiAj
ZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCiAKICAgY29uc3QgYm9vbCBzaG91bGRfc2hh
cmQgPSBTaG91bGRTaGFyZChrVGVzdFRvdGFsU2hhcmRzLCBrVGVzdFNoYXJkSW5kZXgsCkBAIC0z
OTc0LDcgKzUxMjQsNyBAQCBpbnQgVW5pdFRlc3RJbXBsOjpSdW5BbGxUZXN0cygpIHsKICAgaWYg
KEdURVNUX0ZMQUcobGlzdF90ZXN0cykpIHsKICAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkICph
ZnRlciogRmlsdGVyVGVzdHMoKSBoYXMgYmVlbiBjYWxsZWQuCiAgICAgTGlzdFRlc3RzTWF0Y2hp
bmdGaWx0ZXIoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdHJ1ZTsKICAgfQogCiAgIHJh
bmRvbV9zZWVkXyA9IEdURVNUX0ZMQUcoc2h1ZmZsZSkgPwpAQCAtMzk4NSw2ICs1MTM1LDcgQEAg
aW50IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7CiAKICAgVGVzdEV2ZW50TGlzdGVuZXIq
IHJlcGVhdGVyID0gbGlzdGVuZXJzKCktPnJlcGVhdGVyKCk7CiAKKyAgc3RhcnRfdGltZXN0YW1w
XyA9IEdldFRpbWVJbk1pbGxpcygpOwogICByZXBlYXRlci0+T25UZXN0UHJvZ3JhbVN0YXJ0KCpw
YXJlbnRfKTsKIAogICAvLyBIb3cgbWFueSB0aW1lcyB0byByZXBlYXQgdGhlIHRlc3RzPyAgV2Ug
ZG9uJ3Qgd2FudCB0byByZXBlYXQgdGhlbQpAQCAtMzk5Myw3ICs1MTQ0LDkgQEAgaW50IFVuaXRU
ZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7CiAgIC8vIFJlcGVhdHMgZm9yZXZlciBpZiB0aGUgcmVw
ZWF0IGNvdW50IGlzIG5lZ2F0aXZlLgogICBjb25zdCBib29sIGZvcmV2ZXIgPSByZXBlYXQgPCAw
OwogICBmb3IgKGludCBpID0gMDsgZm9yZXZlciB8fCBpICE9IHJlcGVhdDsgaSsrKSB7Ci0gICAg
Q2xlYXJSZXN1bHQoKTsKKyAgICAvLyBXZSB3YW50IHRvIHByZXNlcnZlIGZhaWx1cmVzIGdlbmVy
YXRlZCBieSBhZC1ob2MgdGVzdAorICAgIC8vIGFzc2VydGlvbnMgZXhlY3V0ZWQgYmVmb3JlIFJV
Tl9BTExfVEVTVFMoKS4KKyAgICBDbGVhck5vbkFkSG9jVGVzdFJlc3VsdCgpOwogCiAgICAgY29u
c3QgVGltZUluTWlsbGlzIHN0YXJ0ID0gR2V0VGltZUluTWlsbGlzKCk7CiAKQEAgLTQwNTgsOCAr
NTIxMSwyMSBAQCBpbnQgVW5pdFRlc3RJbXBsOjpSdW5BbGxUZXN0cygpIHsKIAogICByZXBlYXRl
ci0+T25UZXN0UHJvZ3JhbUVuZCgqcGFyZW50Xyk7CiAKLSAgLy8gUmV0dXJucyAwIGlmIGFsbCB0
ZXN0cyBwYXNzZWQsIG9yIDEgb3RoZXIgd2lzZS4KLSAgcmV0dXJuIGZhaWxlZCA/IDEgOiAwOwor
ICBpZiAoIWd0ZXN0X2lzX2luaXRpYWxpemVkX2JlZm9yZV9ydW5fYWxsX3Rlc3RzKSB7CisgICAg
Q29sb3JlZFByaW50ZigKKyAgICAgICAgQ09MT1JfUkVELAorICAgICAgICAiXG5JTVBPUlRBTlQg
Tk9USUNFIC0gRE8gTk9UIElHTk9SRTpcbiIKKyAgICAgICAgIlRoaXMgdGVzdCBwcm9ncmFtIGRp
ZCBOT1QgY2FsbCAiIEdURVNUX0lOSVRfR09PR0xFX1RFU1RfTkFNRV8KKyAgICAgICAgIigpIGJl
Zm9yZSBjYWxsaW5nIFJVTl9BTExfVEVTVFMoKS4gVGhpcyBpcyBJTlZBTElELiBTb29uICIgR1RF
U1RfTkFNRV8KKyAgICAgICAgIiB3aWxsIHN0YXJ0IHRvIGVuZm9yY2UgdGhlIHZhbGlkIHVzYWdl
LiAiCisgICAgICAgICJQbGVhc2UgZml4IGl0IEFTQVAsIG9yIElUIFdJTEwgU1RBUlQgVE8gRkFJ
TC5cbiIpOyAgLy8gTk9MSU5UCisjaWYgR1RFU1RfRk9SX0dPT0dMRV8KKyAgICBDb2xvcmVkUHJp
bnRmKENPTE9SX1JFRCwKKyAgICAgICAgICAgICAgICAgICJGb3IgbW9yZSBkZXRhaWxzLCBzZWUg
aHR0cDovL3dpa2kvTWFpbi9WYWxpZEdVbml0TWFpbi5cbiIpOworI2VuZGlmICAvLyBHVEVTVF9G
T1JfR09PR0xFXworICB9CisKKyAgcmV0dXJuICFmYWlsZWQ7CiB9CiAKIC8vIFJlYWRzIHRoZSBH
VEVTVF9TSEFSRF9TVEFUVVNfRklMRSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYW5kIGNyZWF0ZXMg
dGhlIGZpbGUKQEAgLTQxMzMsNyArNTI5OSw3IEBAIGJvb2wgU2hvdWxkU2hhcmQoY29uc3QgY2hh
ciogdG90YWxfc2hhcmRzX2VudiwKIC8vIFBhcnNlcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUg
dmFyIGFzIGFuIEludDMyLiBJZiBpdCBpcyB1bnNldCwKIC8vIHJldHVybnMgZGVmYXVsdF92YWwu
IElmIGl0IGlzIG5vdCBhbiBJbnQzMiwgcHJpbnRzIGFuIGVycm9yCiAvLyBhbmQgYWJvcnRzLgot
SW50MzIgSW50MzJGcm9tRW52T3JEaWUoY29uc3QgY2hhciogY29uc3QgdmFyLCBJbnQzMiBkZWZh
dWx0X3ZhbCkgeworSW50MzIgSW50MzJGcm9tRW52T3JEaWUoY29uc3QgY2hhciogdmFyLCBJbnQz
MiBkZWZhdWx0X3ZhbCkgewogICBjb25zdCBjaGFyKiBzdHJfdmFsID0gcG9zaXg6OkdldEVudih2
YXIpOwogICBpZiAoc3RyX3ZhbCA9PSBOVUxMKSB7CiAgICAgcmV0dXJuIGRlZmF1bHRfdmFsOwpA
QCAtNDE2MCw4ICs1MzI2LDggQEAgYm9vbCBTaG91bGRSdW5UZXN0T25TaGFyZChpbnQgdG90YWxf
c2hhcmRzLCBpbnQgc2hhcmRfaW5kZXgsIGludCB0ZXN0X2lkKSB7CiAvLyBlYWNoIFRlc3RDYXNl
IGFuZCBUZXN0SW5mbyBvYmplY3QuCiAvLyBJZiBzaGFyZF90ZXN0cyA9PSB0cnVlLCBmdXJ0aGVy
IGZpbHRlcnMgdGVzdHMgYmFzZWQgb24gc2hhcmRpbmcKIC8vIHZhcmlhYmxlcyBpbiB0aGUgZW52
aXJvbm1lbnQgLSBzZWUKLS8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L3dp
a2kvR29vZ2xlVGVzdEFkdmFuY2VkR3VpZGUuCi0vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGVz
dHMgdGhhdCBzaG91bGQgcnVuLgorLy8gaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0
ZXN0L2Jsb2IvbWFzdGVyL2dvb2dsZXRlc3QvZG9jcy9hZHZhbmNlZC5tZAorLy8gLiBSZXR1cm5z
IHRoZSBudW1iZXIgb2YgdGVzdHMgdGhhdCBzaG91bGQgcnVuLgogaW50IFVuaXRUZXN0SW1wbDo6
RmlsdGVyVGVzdHMoUmVhY3Rpb25Ub1NoYXJkaW5nIHNoYXJkX3Rlc3RzKSB7CiAgIGNvbnN0IElu
dDMyIHRvdGFsX3NoYXJkcyA9IHNoYXJkX3Rlc3RzID09IEhPTk9SX1NIQVJESU5HX1BST1RPQ09M
ID8KICAgICAgIEludDMyRnJvbUVudk9yRGllKGtUZXN0VG90YWxTaGFyZHMsIC0xKSA6IC0xOwpA
QCAtNDE3NiwxMiArNTM0MiwxMiBAQCBpbnQgVW5pdFRlc3RJbXBsOjpGaWx0ZXJUZXN0cyhSZWFj
dGlvblRvU2hhcmRpbmcgc2hhcmRfdGVzdHMpIHsKICAgaW50IG51bV9zZWxlY3RlZF90ZXN0cyA9
IDA7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGVzdF9jYXNlc18uc2l6ZSgpOyBpKyspIHsK
ICAgICBUZXN0Q2FzZSogY29uc3QgdGVzdF9jYXNlID0gdGVzdF9jYXNlc19baV07Ci0gICAgY29u
c3QgU3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSA9IHRlc3RfY2FzZS0+bmFtZSgpOworICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSA9IHRlc3RfY2FzZS0+bmFtZSgpOwogICAgIHRl
c3RfY2FzZS0+c2V0X3Nob3VsZF9ydW4oZmFsc2UpOwogCiAgICAgZm9yIChzaXplX3QgaiA9IDA7
IGogPCB0ZXN0X2Nhc2UtPnRlc3RfaW5mb19saXN0KCkuc2l6ZSgpOyBqKyspIHsKICAgICAgIFRl
c3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPSB0ZXN0X2Nhc2UtPnRlc3RfaW5mb19saXN0KClbal07
Ci0gICAgICBjb25zdCBTdHJpbmcgdGVzdF9uYW1lKHRlc3RfaW5mby0+bmFtZSgpKTsKKyAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RfbmFtZSh0ZXN0X2luZm8tPm5hbWUoKSk7CiAgICAgICAv
LyBBIHRlc3QgaXMgZGlzYWJsZWQgaWYgdGVzdCBjYXNlIG5hbWUgb3IgdGVzdCBuYW1lIG1hdGNo
ZXMKICAgICAgIC8vIGtEaXNhYmxlVGVzdEZpbHRlci4KICAgICAgIGNvbnN0IGJvb2wgaXNfZGlz
YWJsZWQgPQpAQCAtNDE4OSwzNCArNTM1NSw2MCBAQCBpbnQgVW5pdFRlc3RJbXBsOjpGaWx0ZXJU
ZXN0cyhSZWFjdGlvblRvU2hhcmRpbmcgc2hhcmRfdGVzdHMpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtEaXNhYmxlVGVzdEZpbHRlcikgfHwK
ICAgICAgICAgICBpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpNYXRjaGVzRmlsdGVyKHRlc3Rf
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGtEaXNhYmxlVGVzdEZpbHRlcik7Ci0gICAgICB0ZXN0X2luZm8tPmltcGwoKS0+c2V0X2lzX2Rp
c2FibGVkKGlzX2Rpc2FibGVkKTsKKyAgICAgIHRlc3RfaW5mby0+aXNfZGlzYWJsZWRfID0gaXNf
ZGlzYWJsZWQ7CiAKICAgICAgIGNvbnN0IGJvb2wgbWF0Y2hlc19maWx0ZXIgPQogICAgICAgICAg
IGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KHRlc3RfY2FzZV9u
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RfbmFtZSk7Ci0gICAgICB0ZXN0X2luZm8tPmltcGwoKS0+c2V0X21hdGNoZXNfZmls
dGVyKG1hdGNoZXNfZmlsdGVyKTsKKyAgICAgIHRlc3RfaW5mby0+bWF0Y2hlc19maWx0ZXJfID0g
bWF0Y2hlc19maWx0ZXI7CiAKICAgICAgIGNvbnN0IGJvb2wgaXNfcnVubmFibGUgPQogICAgICAg
ICAgIChHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzKSB8fCAhaXNfZGlzYWJsZWQp
ICYmCiAgICAgICAgICAgbWF0Y2hlc19maWx0ZXI7CiAKLSAgICAgIGNvbnN0IGJvb2wgaXNfc2Vs
ZWN0ZWQgPSBpc19ydW5uYWJsZSAmJgotICAgICAgICAgIChzaGFyZF90ZXN0cyA9PSBJR05PUkVf
U0hBUkRJTkdfUFJPVE9DT0wgfHwKLSAgICAgICAgICAgU2hvdWxkUnVuVGVzdE9uU2hhcmQodG90
YWxfc2hhcmRzLCBzaGFyZF9pbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVtX3J1bm5hYmxlX3Rlc3RzKSk7CisgICAgICBjb25zdCBib29sIGlzX2luX2Fub3RoZXJfc2hh
cmQgPQorICAgICAgICAgIHNoYXJkX3Rlc3RzICE9IElHTk9SRV9TSEFSRElOR19QUk9UT0NPTCAm
JgorICAgICAgICAgICFTaG91bGRSdW5UZXN0T25TaGFyZCh0b3RhbF9zaGFyZHMsIHNoYXJkX2lu
ZGV4LCBudW1fcnVubmFibGVfdGVzdHMpOworICAgICAgdGVzdF9pbmZvLT5pc19pbl9hbm90aGVy
X3NoYXJkXyA9IGlzX2luX2Fub3RoZXJfc2hhcmQ7CisgICAgICBjb25zdCBib29sIGlzX3NlbGVj
dGVkID0gaXNfcnVubmFibGUgJiYgIWlzX2luX2Fub3RoZXJfc2hhcmQ7CiAKICAgICAgIG51bV9y
dW5uYWJsZV90ZXN0cyArPSBpc19ydW5uYWJsZTsKICAgICAgIG51bV9zZWxlY3RlZF90ZXN0cyAr
PSBpc19zZWxlY3RlZDsKIAotICAgICAgdGVzdF9pbmZvLT5pbXBsKCktPnNldF9zaG91bGRfcnVu
KGlzX3NlbGVjdGVkKTsKKyAgICAgIHRlc3RfaW5mby0+c2hvdWxkX3J1bl8gPSBpc19zZWxlY3Rl
ZDsKICAgICAgIHRlc3RfY2FzZS0+c2V0X3Nob3VsZF9ydW4odGVzdF9jYXNlLT5zaG91bGRfcnVu
KCkgfHwgaXNfc2VsZWN0ZWQpOwogICAgIH0KICAgfQogICByZXR1cm4gbnVtX3NlbGVjdGVkX3Rl
c3RzOwogfQogCisvLyBQcmludHMgdGhlIGdpdmVuIEMtc3RyaW5nIG9uIGEgc2luZ2xlIGxpbmUg
YnkgcmVwbGFjaW5nIGFsbCAnXG4nCisvLyBjaGFyYWN0ZXJzIHdpdGggc3RyaW5nICJcXG4iLiAg
SWYgdGhlIG91dHB1dCB0YWtlcyBtb3JlIHRoYW4KKy8vIG1heF9sZW5ndGggY2hhcmFjdGVycywg
b25seSBwcmludHMgdGhlIGZpcnN0IG1heF9sZW5ndGggY2hhcmFjdGVycworLy8gYW5kICIuLi4i
Lgorc3RhdGljIHZvaWQgUHJpbnRPbk9uZUxpbmUoY29uc3QgY2hhciogc3RyLCBpbnQgbWF4X2xl
bmd0aCkgeworICBpZiAoc3RyICE9IE5VTEwpIHsKKyAgICBmb3IgKGludCBpID0gMDsgKnN0ciAh
PSAnXDAnOyArK3N0cikgeworICAgICAgaWYgKGkgPj0gbWF4X2xlbmd0aCkgeworICAgICAgICBw
cmludGYoIi4uLiIpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmICgqc3RyID09
ICdcbicpIHsKKyAgICAgICAgcHJpbnRmKCJcXG4iKTsKKyAgICAgICAgaSArPSAyOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcHJpbnRmKCIlYyIsICpzdHIpOworICAgICAgICArK2k7CisgICAg
ICB9CisgICAgfQorICB9Cit9CisKIC8vIFByaW50cyB0aGUgbmFtZXMgb2YgdGhlIHRlc3RzIG1h
dGNoaW5nIHRoZSB1c2VyLXNwZWNpZmllZCBmaWx0ZXIgZmxhZy4KIHZvaWQgVW5pdFRlc3RJbXBs
OjpMaXN0VGVzdHNNYXRjaGluZ0ZpbHRlcigpIHsKKyAgLy8gUHJpbnQgYXQgbW9zdCB0aGlzIG1h
bnkgY2hhcmFjdGVycyBmb3IgZWFjaCB0eXBlL3ZhbHVlIHBhcmFtZXRlci4KKyAgY29uc3QgaW50
IGtNYXhQYXJhbUxlbmd0aCA9IDI1MDsKKwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3Rf
Y2FzZXNfLnNpemUoKTsgaSsrKSB7CiAgICAgY29uc3QgVGVzdENhc2UqIGNvbnN0IHRlc3RfY2Fz
ZSA9IHRlc3RfY2FzZXNfW2ldOwogICAgIGJvb2wgcHJpbnRlZF90ZXN0X2Nhc2VfbmFtZSA9IGZh
bHNlOwpAQCAtNDIyNCwxNiArNTQxNiw0NyBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6TGlzdFRlc3Rz
TWF0Y2hpbmdGaWx0ZXIoKSB7CiAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCB0ZXN0X2Nhc2Ut
PnRlc3RfaW5mb19saXN0KCkuc2l6ZSgpOyBqKyspIHsKICAgICAgIGNvbnN0IFRlc3RJbmZvKiBj
b25zdCB0ZXN0X2luZm8gPQogICAgICAgICAgIHRlc3RfY2FzZS0+dGVzdF9pbmZvX2xpc3QoKVtq
XTsKLSAgICAgIGlmICh0ZXN0X2luZm8tPm1hdGNoZXNfZmlsdGVyKCkpIHsKKyAgICAgIGlmICh0
ZXN0X2luZm8tPm1hdGNoZXNfZmlsdGVyXykgewogICAgICAgICBpZiAoIXByaW50ZWRfdGVzdF9j
YXNlX25hbWUpIHsKICAgICAgICAgICBwcmludGVkX3Rlc3RfY2FzZV9uYW1lID0gdHJ1ZTsKLSAg
ICAgICAgICBwcmludGYoIiVzLlxuIiwgdGVzdF9jYXNlLT5uYW1lKCkpOworICAgICAgICAgIHBy
aW50ZigiJXMuIiwgdGVzdF9jYXNlLT5uYW1lKCkpOworICAgICAgICAgIGlmICh0ZXN0X2Nhc2Ut
PnR5cGVfcGFyYW0oKSAhPSBOVUxMKSB7CisgICAgICAgICAgICBwcmludGYoIiAgIyAlcyA9ICIs
IGtUeXBlUGFyYW1MYWJlbCk7CisgICAgICAgICAgICAvLyBXZSBwcmludCB0aGUgdHlwZSBwYXJh
bWV0ZXIgb24gYSBzaW5nbGUgbGluZSB0byBtYWtlCisgICAgICAgICAgICAvLyB0aGUgb3V0cHV0
IGVhc3kgdG8gcGFyc2UgYnkgYSBwcm9ncmFtLgorICAgICAgICAgICAgUHJpbnRPbk9uZUxpbmUo
dGVzdF9jYXNlLT50eXBlX3BhcmFtKCksIGtNYXhQYXJhbUxlbmd0aCk7CisgICAgICAgICAgfQor
ICAgICAgICAgIHByaW50ZigiXG4iKTsKKyAgICAgICAgfQorICAgICAgICBwcmludGYoIiAgJXMi
LCB0ZXN0X2luZm8tPm5hbWUoKSk7CisgICAgICAgIGlmICh0ZXN0X2luZm8tPnZhbHVlX3BhcmFt
KCkgIT0gTlVMTCkgeworICAgICAgICAgIHByaW50ZigiICAjICVzID0gIiwga1ZhbHVlUGFyYW1M
YWJlbCk7CisgICAgICAgICAgLy8gV2UgcHJpbnQgdGhlIHZhbHVlIHBhcmFtZXRlciBvbiBhIHNp
bmdsZSBsaW5lIHRvIG1ha2UgdGhlCisgICAgICAgICAgLy8gb3V0cHV0IGVhc3kgdG8gcGFyc2Ug
YnkgYSBwcm9ncmFtLgorICAgICAgICAgIFByaW50T25PbmVMaW5lKHRlc3RfaW5mby0+dmFsdWVf
cGFyYW0oKSwga01heFBhcmFtTGVuZ3RoKTsKICAgICAgICAgfQotICAgICAgICBwcmludGYoIiAg
JXNcbiIsIHRlc3RfaW5mby0+bmFtZSgpKTsKKyAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgICAg
fQogICAgIH0KICAgfQogICBmZmx1c2goc3Rkb3V0KTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIG91
dHB1dF9mb3JtYXQgPSBVbml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdCgpOworICBpZiAo
b3V0cHV0X2Zvcm1hdCA9PSAieG1sIiB8fCBvdXRwdXRfZm9ybWF0ID09ICJqc29uIikgeworICAg
IEZJTEUqIGZpbGVvdXQgPSBPcGVuRmlsZUZvcldyaXRpbmcoCisgICAgICAgIFVuaXRUZXN0T3B0
aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSk7CisgICAgc3RkOjpz
dHJpbmdzdHJlYW0gc3RyZWFtOworICAgIGlmIChvdXRwdXRfZm9ybWF0ID09ICJ4bWwiKSB7Cisg
ICAgICBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIoCisgICAgICAgICAgVW5pdFRlc3RPcHRpb25z
OjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0cigpKQorICAgICAgICAgIC5Qcmlu
dFhtbFRlc3RzTGlzdCgmc3RyZWFtLCB0ZXN0X2Nhc2VzXyk7CisgICAgfSBlbHNlIGlmIChvdXRw
dXRfZm9ybWF0ID09ICJqc29uIikgeworICAgICAgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcigK
KyAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgp
LmNfc3RyKCkpCisgICAgICAgICAgLlByaW50SnNvblRlc3RMaXN0KCZzdHJlYW0sIHRlc3RfY2Fz
ZXNfKTsKKyAgICB9CisgICAgZnByaW50ZihmaWxlb3V0LCAiJXMiLCBTdHJpbmdTdHJlYW1Ub1N0
cmluZygmc3RyZWFtKS5jX3N0cigpKTsKKyAgICBmY2xvc2UoZmlsZW91dCk7CisgIH0KIH0KIAog
Ly8gU2V0cyB0aGUgT1Mgc3RhY2sgdHJhY2UgZ2V0dGVyLgpAQCAtNDI1NCwxNyArNTQ3NywyNSBA
QCB2b2lkIFVuaXRUZXN0SW1wbDo6c2V0X29zX3N0YWNrX3RyYWNlX2dldHRlcigKIC8vIGdldHRl
ciwgYW5kIHJldHVybnMgaXQuCiBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UqIFVuaXRUZXN0
SW1wbDo6b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCkgewogICBpZiAob3Nfc3RhY2tfdHJhY2VfZ2V0
dGVyXyA9PSBOVUxMKSB7CisjaWZkZWYgR1RFU1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVSXworICAg
IG9zX3N0YWNrX3RyYWNlX2dldHRlcl8gPSBuZXcgR1RFU1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVS
XzsKKyNlbHNlCiAgICAgb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXyA9IG5ldyBPc1N0YWNrVHJhY2VH
ZXR0ZXI7CisjZW5kaWYgIC8vIEdURVNUX09TX1NUQUNLX1RSQUNFX0dFVFRFUl8KICAgfQogCiAg
IHJldHVybiBvc19zdGFja190cmFjZV9nZXR0ZXJfOwogfQogCi0vLyBSZXR1cm5zIHRoZSBUZXN0
UmVzdWx0IGZvciB0aGUgdGVzdCB0aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcsIG9yCi0vLyB0aGUg
VGVzdFJlc3VsdCBmb3IgdGhlIGFkIGhvYyB0ZXN0IGlmIG5vIHRlc3QgaXMgcnVubmluZy4KKy8v
IFJldHVybnMgdGhlIG1vc3Qgc3BlY2lmaWMgVGVzdFJlc3VsdCBjdXJyZW50bHkgcnVubmluZy4K
IFRlc3RSZXN1bHQqIFVuaXRUZXN0SW1wbDo6Y3VycmVudF90ZXN0X3Jlc3VsdCgpIHsKLSAgcmV0
dXJuIGN1cnJlbnRfdGVzdF9pbmZvXyA/Ci0gICAgY3VycmVudF90ZXN0X2luZm9fLT5pbXBsKCkt
PnJlc3VsdCgpIDogJmFkX2hvY190ZXN0X3Jlc3VsdF87CisgIGlmIChjdXJyZW50X3Rlc3RfaW5m
b18gIT0gTlVMTCkgeworICAgIHJldHVybiAmY3VycmVudF90ZXN0X2luZm9fLT5yZXN1bHRfOwor
ICB9CisgIGlmIChjdXJyZW50X3Rlc3RfY2FzZV8gIT0gTlVMTCkgeworICAgIHJldHVybiAmY3Vy
cmVudF90ZXN0X2Nhc2VfLT5hZF9ob2NfdGVzdF9yZXN1bHRfOworICB9CisgIHJldHVybiAmYWRf
aG9jX3Rlc3RfcmVzdWx0XzsKIH0KIAogLy8gU2h1ZmZsZXMgYWxsIHRlc3QgY2FzZXMsIGFuZCB0
aGUgdGVzdHMgd2l0aGluIGVhY2ggdGVzdCBjYXNlLApAQCAtNDI5MywzMyArNTUyNCw3IEBAIHZv
aWQgVW5pdFRlc3RJbXBsOjpVbnNodWZmbGVUZXN0cygpIHsKICAgfQogfQogCi0vLyBUZXN0SW5m
b0ltcGwgY29uc3RydWN0b3IuIFRoZSBuZXcgaW5zdGFuY2UgYXNzdW1lcyBvd25lcnNoaXAgb2Yg
dGhlIHRlc3QKLS8vIGZhY3Rvcnkgb2JqZWN0LgotVGVzdEluZm9JbXBsOjpUZXN0SW5mb0ltcGwo
VGVzdEluZm8qIHBhcmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGFfdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBhX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX3Rlc3Rf
Y2FzZV9jb21tZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV9j
b21tZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZUlkIGFfZml4dHVyZV9jbGFz
c19pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsOjpUZXN0RmFjdG9yeUJh
c2UqIGZhY3RvcnkpIDoKLSAgICBwYXJlbnRfKHBhcmVudCksCi0gICAgdGVzdF9jYXNlX25hbWVf
KFN0cmluZyhhX3Rlc3RfY2FzZV9uYW1lKSksCi0gICAgbmFtZV8oU3RyaW5nKGFfbmFtZSkpLAot
ICAgIHRlc3RfY2FzZV9jb21tZW50XyhTdHJpbmcoYV90ZXN0X2Nhc2VfY29tbWVudCkpLAotICAg
IGNvbW1lbnRfKFN0cmluZyhhX2NvbW1lbnQpKSwKLSAgICBmaXh0dXJlX2NsYXNzX2lkXyhhX2Zp
eHR1cmVfY2xhc3NfaWQpLAotICAgIHNob3VsZF9ydW5fKGZhbHNlKSwKLSAgICBpc19kaXNhYmxl
ZF8oZmFsc2UpLAotICAgIG1hdGNoZXNfZmlsdGVyXyhmYWxzZSksCi0gICAgZmFjdG9yeV8oZmFj
dG9yeSkgewotfQotCi0vLyBUZXN0SW5mb0ltcGwgZGVzdHJ1Y3Rvci4KLVRlc3RJbmZvSW1wbDo6
flRlc3RJbmZvSW1wbCgpIHsKLSAgZGVsZXRlIGZhY3RvcnlfOwotfQotCi0vLyBSZXR1cm5zIHRo
ZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFzIGEgU3RyaW5nLgorLy8gUmV0dXJucyB0aGUgY3Vy
cmVudCBPUyBzdGFjayB0cmFjZSBhcyBhbiBzdGQ6OnN0cmluZy4KIC8vCiAvLyBUaGUgbWF4aW11
bSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIHRvIGJlIGluY2x1ZGVkIGlzIHNwZWNpZmllZCBieQog
Ly8gdGhlIGd0ZXN0X3N0YWNrX3RyYWNlX2RlcHRoIGZsYWcuICBUaGUgc2tpcF9jb3VudCBwYXJh
bWV0ZXIKQEAgLTQzMjksMTUgKzU1MzQsMTUgQEAgVGVzdEluZm9JbXBsOjp+VGVzdEluZm9JbXBs
KCkgewogLy8gRm9yIGV4YW1wbGUsIGlmIEZvbygpIGNhbGxzIEJhcigpLCB3aGljaCBpbiB0dXJu
IGNhbGxzCiAvLyBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKC4uLiwgMSksIEZvbygp
IHdpbGwgYmUgaW5jbHVkZWQgaW4KIC8vIHRoZSB0cmFjZSBidXQgQmFyKCkgYW5kIEdldEN1cnJl
bnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoKSB3b24ndC4KLVN0cmluZyBHZXRDdXJyZW50T3NTdGFj
a1RyYWNlRXhjZXB0VG9wKFVuaXRUZXN0KiAvKnVuaXRfdGVzdCovLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNraXBfY291bnQpIHsKK3N0ZDo6c3RyaW5nIEdl
dEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoVW5pdFRlc3QqIC8qdW5pdF90ZXN0Ki8sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBza2lwX2NvdW50
KSB7CiAgIC8vIFdlIHBhc3Mgc2tpcF9jb3VudCArIDEgdG8gc2tpcCB0aGlzIHdyYXBwZXIgZnVu
Y3Rpb24gaW4gYWRkaXRpb24KICAgLy8gdG8gd2hhdCB0aGUgdXNlciByZWFsbHkgd2FudHMgdG8g
c2tpcC4KICAgcmV0dXJuIEdldFVuaXRUZXN0SW1wbCgpLT5DdXJyZW50T3NTdGFja1RyYWNlRXhj
ZXB0VG9wKHNraXBfY291bnQgKyAxKTsKIH0KIAotLy8gVXNlZCBieSB0aGUgR1RFU1RfSElERV9V
TlJFQUNIQUJMRV9DT0RFXyBtYWNybyB0byBzdXBwcmVzcyB1bnJlYWNoYWJsZQotLy8gY29kZSB3
YXJuaW5ncy4KKy8vIFVzZWQgYnkgdGhlIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVf
V0FSTklOR19CRUxPV18gbWFjcm8gdG8KKy8vIHN1cHByZXNzIHVucmVhY2hhYmxlIGNvZGUgd2Fy
bmluZ3MuCiBuYW1lc3BhY2UgewogY2xhc3MgQ2xhc3NVbmlxdWVUb0Fsd2F5c1RydWUge307CiB9
CkBAIC00MzcxLDE0ICs1NTc2LDEzIEBAIGJvb2wgU2tpcFByZWZpeChjb25zdCBjaGFyKiBwcmVm
aXgsIGNvbnN0IGNoYXIqKiBwc3RyKSB7CiAvLyBwYXJ0IGNhbiBiZSBvbWl0dGVkLgogLy8KIC8v
IFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnLCBvciBOVUxMIGlmIHRoZSBwYXJzaW5nIGZh
aWxlZC4KLWNvbnN0IGNoYXIqIFBhcnNlRmxhZ1ZhbHVlKGNvbnN0IGNoYXIqIHN0ciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZsYWcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGRlZl9vcHRpb25hbCkgeworc3RhdGljIGNvbnN0IGNoYXIqIFBhcnNl
RmxhZ1ZhbHVlKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgY2hhciogZmxhZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlZl9vcHRpb25hbCkgewogICAvLyBzdHIgYW5k
IGZsYWcgbXVzdCBub3QgYmUgTlVMTC4KICAgaWYgKHN0ciA9PSBOVUxMIHx8IGZsYWcgPT0gTlVM
TCkgcmV0dXJuIE5VTEw7CiAKICAgLy8gVGhlIGZsYWcgbXVzdCBzdGFydCB3aXRoICItLSIgZm9s
bG93ZWQgYnkgR1RFU1RfRkxBR19QUkVGSVhfLgotICBjb25zdCBTdHJpbmcgZmxhZ19zdHIgPSBT
dHJpbmc6OkZvcm1hdCgiLS0lcyVzIiwgR1RFU1RfRkxBR19QUkVGSVhfLCBmbGFnKTsKKyAgY29u
c3Qgc3RkOjpzdHJpbmcgZmxhZ19zdHIgPSBzdGQ6OnN0cmluZygiLS0iKSArIEdURVNUX0ZMQUdf
UFJFRklYXyArIGZsYWc7CiAgIGNvbnN0IHNpemVfdCBmbGFnX2xlbiA9IGZsYWdfc3RyLmxlbmd0
aCgpOwogICBpZiAoc3RybmNtcChzdHIsIGZsYWdfc3RyLmNfc3RyKCksIGZsYWdfbGVuKSAhPSAw
KSByZXR1cm4gTlVMTDsKIApAQCAtNDQwOSw3ICs1NjEzLDcgQEAgY29uc3QgY2hhciogUGFyc2VG
bGFnVmFsdWUoY29uc3QgY2hhciogc3RyLAogLy8KIC8vIE9uIHN1Y2Nlc3MsIHN0b3JlcyB0aGUg
dmFsdWUgb2YgdGhlIGZsYWcgaW4gKnZhbHVlLCBhbmQgcmV0dXJucwogLy8gdHJ1ZS4gIE9uIGZh
aWx1cmUsIHJldHVybnMgZmFsc2Ugd2l0aG91dCBjaGFuZ2luZyAqdmFsdWUuCi1ib29sIFBhcnNl
Qm9vbEZsYWcoY29uc3QgY2hhciogc3RyLCBjb25zdCBjaGFyKiBmbGFnLCBib29sKiB2YWx1ZSkg
eworc3RhdGljIGJvb2wgUGFyc2VCb29sRmxhZyhjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIq
IGZsYWcsIGJvb2wqIHZhbHVlKSB7CiAgIC8vIEdldHMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIGFz
IGEgc3RyaW5nLgogICBjb25zdCBjaGFyKiBjb25zdCB2YWx1ZV9zdHIgPSBQYXJzZUZsYWdWYWx1
ZShzdHIsIGZsYWcsIHRydWUpOwogCkBAIC00NDQzLDcgKzU2NDcsOCBAQCBib29sIFBhcnNlSW50
MzJGbGFnKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgY2hhciogZmxhZywgSW50MzIqIHZhbHVlKSB7
CiAvLwogLy8gT24gc3VjY2Vzcywgc3RvcmVzIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyBpbiAqdmFs
dWUsIGFuZCByZXR1cm5zCiAvLyB0cnVlLiAgT24gZmFpbHVyZSwgcmV0dXJucyBmYWxzZSB3aXRo
b3V0IGNoYW5naW5nICp2YWx1ZS4KLWJvb2wgUGFyc2VTdHJpbmdGbGFnKGNvbnN0IGNoYXIqIHN0
ciwgY29uc3QgY2hhciogZmxhZywgU3RyaW5nKiB2YWx1ZSkgewordGVtcGxhdGUgPHR5cGVuYW1l
IFN0cmluZz4KK3N0YXRpYyBib29sIFBhcnNlU3RyaW5nRmxhZyhjb25zdCBjaGFyKiBzdHIsIGNv
bnN0IGNoYXIqIGZsYWcsIFN0cmluZyogdmFsdWUpIHsKICAgLy8gR2V0cyB0aGUgdmFsdWUgb2Yg
dGhlIGZsYWcgYXMgYSBzdHJpbmcuCiAgIGNvbnN0IGNoYXIqIGNvbnN0IHZhbHVlX3N0ciA9IFBh
cnNlRmxhZ1ZhbHVlKHN0ciwgZmxhZywgZmFsc2UpOwogCkBAIC00NDc5LDcgKzU2ODQsNyBAQCBz
dGF0aWMgYm9vbCBIYXNHb29nbGVUZXN0RmxhZ1ByZWZpeChjb25zdCBjaGFyKiBzdHIpIHsKIC8v
ICAgQFkgICAgY2hhbmdlcyB0aGUgY29sb3IgdG8geWVsbG93LgogLy8gICBARCAgICBjaGFuZ2Vz
IHRvIHRoZSBkZWZhdWx0IHRlcm1pbmFsIHRleHQgY29sb3IuCiAvLwotLy8gVE9ETyh3YW5AZ29v
Z2xlLmNvbSk6IFdyaXRlIHRlc3RzIGZvciB0aGlzIG9uY2Ugd2UgYWRkIHN0ZG91dAorLy8gRklY
TUU6IFdyaXRlIHRlc3RzIGZvciB0aGlzIG9uY2Ugd2UgYWRkIHN0ZG91dAogLy8gY2FwdHVyaW5n
IHRvIEdvb2dsZSBUZXN0Lgogc3RhdGljIHZvaWQgUHJpbnRDb2xvckVuY29kZWQoY29uc3QgY2hh
ciogc3RyKSB7CiAgIEdUZXN0Q29sb3IgY29sb3IgPSBDT0xPUl9ERUZBVUxUOyAgLy8gVGhlIGN1
cnJlbnQgY29sb3IuCkBAIC00NDk1LDcgKzU3MDAsNyBAQCBzdGF0aWMgdm9pZCBQcmludENvbG9y
RW5jb2RlZChjb25zdCBjaGFyKiBzdHIpIHsKICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBD
b2xvcmVkUHJpbnRmKGNvbG9yLCAiJXMiLCBTdHJpbmcoc3RyLCBwIC0gc3RyKS5jX3N0cigpKTsK
KyAgICBDb2xvcmVkUHJpbnRmKGNvbG9yLCAiJXMiLCBzdGQ6OnN0cmluZyhzdHIsIHApLmNfc3Ry
KCkpOwogCiAgICAgY29uc3QgY2hhciBjaCA9IHBbMV07CiAgICAgc3RyID0gcCArIDI7CkBAIC00
NTQ1LDI0ICs1NzUwLDI4IEBAIHN0YXRpYyBjb25zdCBjaGFyIGtDb2xvckVuY29kZWRIZWxwTWVz
c2FnZVtdID0KICIgICAgICBFbmFibGUvZGlzYWJsZSBjb2xvcmVkIG91dHB1dC4gVGhlIGRlZmF1
bHQgaXMgQEdhdXRvQEQuXG4iCiAiICAtQEctIiBHVEVTVF9GTEFHX1BSRUZJWF8gInByaW50X3Rp
bWU9MEBEXG4iCiAiICAgICAgRG9uJ3QgcHJpbnQgdGhlIGVsYXBzZWQgdGltZSBvZiBlYWNoIHRl
c3QuXG4iCi0iICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gIm91dHB1dD14bWxAWVtARzpAWURJ
UkVDVE9SWV9QQVRIQEciCisiICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gIm91dHB1dD1AWShA
R2pzb25AWXxAR3htbEBZKVtARzpAWURJUkVDVE9SWV9QQVRIQEciCiAgICAgR1RFU1RfUEFUSF9T
RVBfICJAWXxARzpAWUZJTEVfUEFUSF1ARFxuIgotIiAgICAgIEdlbmVyYXRlIGFuIFhNTCByZXBv
cnQgaW4gdGhlIGdpdmVuIGRpcmVjdG9yeSBvciB3aXRoIHRoZSBnaXZlbiBmaWxlXG4iCi0iICAg
ICAgbmFtZS4gQFlGSUxFX1BBVEhARCBkZWZhdWx0cyB0byBAR3Rlc3RfZGV0YWlscy54bWxARC5c
biIKKyIgICAgICBHZW5lcmF0ZSBhIEpTT04gb3IgWE1MIHJlcG9ydCBpbiB0aGUgZ2l2ZW4gZGly
ZWN0b3J5IG9yIHdpdGggdGhlIGdpdmVuXG4iCisiICAgICAgZmlsZSBuYW1lLiBAWUZJTEVfUEFU
SEBEIGRlZmF1bHRzIHRvIEBHdGVzdF9kZXRhaWxzLnhtbEBELlxuIgorIyBpZiBHVEVTVF9DQU5f
U1RSRUFNX1JFU1VMVFNfCisiICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gInN0cmVhbV9yZXN1
bHRfdG89QFlIT1NUQEc6QFlQT1JUQERcbiIKKyIgICAgICBTdHJlYW0gdGVzdCByZXN1bHRzIHRv
IHRoZSBnaXZlbiBzZXJ2ZXIuXG4iCisjIGVuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VM
VFNfCiAiXG4iCiAiQXNzZXJ0aW9uIEJlaGF2aW9yOlxuIgotI2lmIEdURVNUX0hBU19ERUFUSF9U
RVNUICYmICFHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX0hBU19ERUFUSF9URVNUICYmICFH
VEVTVF9PU19XSU5ET1dTCiAiICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImRlYXRoX3Rlc3Rf
c3R5bGU9QFkoQEdmYXN0QFl8QEd0aHJlYWRzYWZlQFkpQERcbiIKICIgICAgICBTZXQgdGhlIGRl
ZmF1bHQgZGVhdGggdGVzdCBzdHlsZS5cbiIKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RF
U1QgJiYgIUdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNU
ICYmICFHVEVTVF9PU19XSU5ET1dTCiAiICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImJyZWFr
X29uX2ZhaWx1cmVARFxuIgogIiAgICAgIFR1cm4gYXNzZXJ0aW9uIGZhaWx1cmVzIGludG8gZGVi
dWdnZXIgYnJlYWstcG9pbnRzLlxuIgogIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJ0aHJv
d19vbl9mYWlsdXJlQERcbiIKLSIgICAgICBUdXJuIGFzc2VydGlvbiBmYWlsdXJlcyBpbnRvIEMr
KyBleGNlcHRpb25zLlxuIgotI2lmIEdURVNUX09TX1dJTkRPV1MKLSIgIEBHLS0iIEdURVNUX0ZM
QUdfUFJFRklYXyAiY2F0Y2hfZXhjZXB0aW9uc0BEXG4iCi0iICAgICAgU3VwcHJlc3MgcG9wLXVw
cyBjYXVzZWQgYnkgZXhjZXB0aW9ucy5cbiIKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwor
IiAgICAgIFR1cm4gYXNzZXJ0aW9uIGZhaWx1cmVzIGludG8gQysrIGV4Y2VwdGlvbnMgZm9yIHVz
ZSBieSBhbiBleHRlcm5hbFxuIgorIiAgICAgIHRlc3QgZnJhbWV3b3JrLlxuIgorIiAgQEctLSIg
R1RFU1RfRkxBR19QUkVGSVhfICJjYXRjaF9leGNlcHRpb25zPTBARFxuIgorIiAgICAgIERvIG5v
dCByZXBvcnQgZXhjZXB0aW9ucyBhcyB0ZXN0IGZhaWx1cmVzLiBJbnN0ZWFkLCBhbGxvdyB0aGVt
XG4iCisiICAgICAgdG8gY3Jhc2ggdGhlIHByb2dyYW0gb3IgdGhyb3cgYSBwb3AtdXAgKG9uIFdp
bmRvd3MpLlxuIgogIlxuIgogIkV4Y2VwdCBmb3IgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJs
aXN0X3Rlc3RzQEQsIHlvdSBjYW4gYWx0ZXJuYXRpdmVseSBzZXQgIgogICAgICJ0aGUgY29ycmVz
cG9uZGluZ1xuIgpAQCAtNDU3Niw0NSArNTc4NSw4NyBAQCBzdGF0aWMgY29uc3QgY2hhciBrQ29s
b3JFbmNvZGVkSGVscE1lc3NhZ2VbXSA9CiAiKG5vdCBvbmUgaW4geW91ciBvd24gY29kZSBvciB0
ZXN0cyksIHBsZWFzZSByZXBvcnQgaXQgdG9cbiIKICJARzwiIEdURVNUX0RFVl9FTUFJTF8gIj5A
RC5cbiI7CiAKK3N0YXRpYyBib29sIFBhcnNlR29vZ2xlVGVzdEZsYWcoY29uc3QgY2hhciogY29u
c3QgYXJnKSB7CisgIHJldHVybiBQYXJzZUJvb2xGbGFnKGFyZywga0Fsc29SdW5EaXNhYmxlZFRl
c3RzRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoYWxzb19ydW5fZGlz
YWJsZWRfdGVzdHMpKSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtCcmVha09uRmFpbHVy
ZUZsYWcsCisgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUp
KSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtDYXRjaEV4Y2VwdGlvbnNGbGFnLAorICAg
ICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSkgfHwKKyAgICAg
IFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtDb2xvckZsYWcsICZHVEVTVF9GTEFHKGNvbG9yKSkgfHwK
KyAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtEZWF0aFRlc3RTdHlsZUZsYWcsCisgICAgICAg
ICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkpIHx8CisgICAgICBQ
YXJzZUJvb2xGbGFnKGFyZywga0RlYXRoVGVzdFVzZUZvcmssCisgICAgICAgICAgICAgICAgICAg
ICZHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspKSB8fAorICAgICAgUGFyc2VTdHJpbmdG
bGFnKGFyZywga0ZpbHRlckZsYWcsICZHVEVTVF9GTEFHKGZpbHRlcikpIHx8CisgICAgICBQYXJz
ZVN0cmluZ0ZsYWcoYXJnLCBrSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnLAorICAgICAgICAgICAg
ICAgICAgICAgICZHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KSkgfHwKKyAgICAg
IFBhcnNlQm9vbEZsYWcoYXJnLCBrTGlzdFRlc3RzRmxhZywgJkdURVNUX0ZMQUcobGlzdF90ZXN0
cykpIHx8CisgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrT3V0cHV0RmxhZywgJkdURVNUX0ZM
QUcob3V0cHV0KSkgfHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrUHJpbnRUaW1lRmxhZywg
JkdURVNUX0ZMQUcocHJpbnRfdGltZSkpIHx8CisgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga1By
aW50VVRGOEZsYWcsICZHVEVTVF9GTEFHKHByaW50X3V0ZjgpKSB8fAorICAgICAgUGFyc2VJbnQz
MkZsYWcoYXJnLCBrUmFuZG9tU2VlZEZsYWcsICZHVEVTVF9GTEFHKHJhbmRvbV9zZWVkKSkgfHwK
KyAgICAgIFBhcnNlSW50MzJGbGFnKGFyZywga1JlcGVhdEZsYWcsICZHVEVTVF9GTEFHKHJlcGVh
dCkpIHx8CisgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga1NodWZmbGVGbGFnLCAmR1RFU1RfRkxB
RyhzaHVmZmxlKSkgfHwKKyAgICAgIFBhcnNlSW50MzJGbGFnKGFyZywga1N0YWNrVHJhY2VEZXB0
aEZsYWcsCisgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0
aCkpIHx8CisgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrU3RyZWFtUmVzdWx0VG9GbGFnLAor
ICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pKSB8fAor
ICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtUaHJvd09uRmFpbHVyZUZsYWcsCisgICAgICAgICAg
ICAgICAgICAgICZHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpKTsKK30KKworI2lmIEdURVNU
X1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KK3N0YXRpYyB2b2lkIExvYWRGbGFnc0Zyb21GaWxlKGNv
bnN0IHN0ZDo6c3RyaW5nJiBwYXRoKSB7CisgIEZJTEUqIGZsYWdmaWxlID0gcG9zaXg6OkZPcGVu
KHBhdGguY19zdHIoKSwgInIiKTsKKyAgaWYgKCFmbGFnZmlsZSkgeworICAgIEdURVNUX0xPR18o
RkFUQUwpIDw8ICJVbmFibGUgdG8gb3BlbiBmaWxlIFwiIiA8PCBHVEVTVF9GTEFHKGZsYWdmaWxl
KQorICAgICAgICAgICAgICAgICAgICAgIDw8ICJcIiI7CisgIH0KKyAgc3RkOjpzdHJpbmcgY29u
dGVudHMoUmVhZEVudGlyZUZpbGUoZmxhZ2ZpbGUpKTsKKyAgcG9zaXg6OkZDbG9zZShmbGFnZmls
ZSk7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBsaW5lczsKKyAgU3BsaXRTdHJpbmcoY29u
dGVudHMsICdcbicsICZsaW5lcyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGluZXMuc2l6
ZSgpOyArK2kpIHsKKyAgICBpZiAobGluZXNbaV0uZW1wdHkoKSkKKyAgICAgIGNvbnRpbnVlOwor
ICAgIGlmICghUGFyc2VHb29nbGVUZXN0RmxhZyhsaW5lc1tpXS5jX3N0cigpKSkKKyAgICAgIGdf
aGVscF9mbGFnID0gdHJ1ZTsKKyAgfQorfQorI2VuZGlmICAvLyBHVEVTVF9VU0VfT1dOX0ZMQUdG
SUxFX0ZMQUdfCisKIC8vIFBhcnNlcyB0aGUgY29tbWFuZCBsaW5lIGZvciBHb29nbGUgVGVzdCBm
bGFncywgd2l0aG91dCBpbml0aWFsaXppbmcKIC8vIG90aGVyIHBhcnRzIG9mIEdvb2dsZSBUZXN0
LiAgVGhlIHR5cGUgcGFyYW1ldGVyIENoYXJUeXBlIGNhbiBiZQogLy8gaW5zdGFudGlhdGVkIHRv
IGVpdGhlciBjaGFyIG9yIHdjaGFyX3QuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiB2
b2lkIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seUltcGwoaW50KiBhcmdjLCBDaGFyVHlwZSoqIGFy
Z3YpIHsKICAgZm9yIChpbnQgaSA9IDE7IGkgPCAqYXJnYzsgaSsrKSB7Ci0gICAgY29uc3QgU3Ry
aW5nIGFyZ19zdHJpbmcgPSBTdHJlYW1hYmxlVG9TdHJpbmcoYXJndltpXSk7CisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgYXJnX3N0cmluZyA9IFN0cmVhbWFibGVUb1N0cmluZyhhcmd2W2ldKTsKICAg
ICBjb25zdCBjaGFyKiBjb25zdCBhcmcgPSBhcmdfc3RyaW5nLmNfc3RyKCk7CiAKICAgICB1c2lu
ZyBpbnRlcm5hbDo6UGFyc2VCb29sRmxhZzsKICAgICB1c2luZyBpbnRlcm5hbDo6UGFyc2VJbnQz
MkZsYWc7CiAgICAgdXNpbmcgaW50ZXJuYWw6OlBhcnNlU3RyaW5nRmxhZzsKIAotICAgIC8vIERv
IHdlIHNlZSBhIEdvb2dsZSBUZXN0IGZsYWc/Ci0gICAgaWYgKFBhcnNlQm9vbEZsYWcoYXJnLCBr
QWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnLAotICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9G
TEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzKSkgfHwKLSAgICAgICAgUGFyc2VCb29sRmxhZyhh
cmcsIGtCcmVha09uRmFpbHVyZUZsYWcsCi0gICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZM
QUcoYnJlYWtfb25fZmFpbHVyZSkpIHx8Ci0gICAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrQ2F0
Y2hFeGNlcHRpb25zRmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhjYXRj
aF9leGNlcHRpb25zKSkgfHwKLSAgICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga0NvbG9yRmxh
ZywgJkdURVNUX0ZMQUcoY29sb3IpKSB8fAotICAgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBr
RGVhdGhUZXN0U3R5bGVGbGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUco
ZGVhdGhfdGVzdF9zdHlsZSkpIHx8Ci0gICAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrRGVhdGhU
ZXN0VXNlRm9yaywKLSAgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhkZWF0aF90ZXN0
X3VzZV9mb3JrKSkgfHwKLSAgICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga0ZpbHRlckZsYWcs
ICZHVEVTVF9GTEFHKGZpbHRlcikpIHx8Ci0gICAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtJ
bnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAmR1RFU1Rf
RkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkpIHx8Ci0gICAgICAgIFBhcnNlQm9vbEZsYWco
YXJnLCBrTGlzdFRlc3RzRmxhZywgJkdURVNUX0ZMQUcobGlzdF90ZXN0cykpIHx8Ci0gICAgICAg
IFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtPdXRwdXRGbGFnLCAmR1RFU1RfRkxBRyhvdXRwdXQpKSB8
fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga1ByaW50VGltZUZsYWcsICZHVEVTVF9GTEFH
KHByaW50X3RpbWUpKSB8fAotICAgICAgICBQYXJzZUludDMyRmxhZyhhcmcsIGtSYW5kb21TZWVk
RmxhZywgJkdURVNUX0ZMQUcocmFuZG9tX3NlZWQpKSB8fAotICAgICAgICBQYXJzZUludDMyRmxh
ZyhhcmcsIGtSZXBlYXRGbGFnLCAmR1RFU1RfRkxBRyhyZXBlYXQpKSB8fAotICAgICAgICBQYXJz
ZUJvb2xGbGFnKGFyZywga1NodWZmbGVGbGFnLCAmR1RFU1RfRkxBRyhzaHVmZmxlKSkgfHwKLSAg
ICAgICAgUGFyc2VJbnQzMkZsYWcoYXJnLCBrU3RhY2tUcmFjZURlcHRoRmxhZywKLSAgICAgICAg
ICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpKSB8fAotICAgICAg
ICBQYXJzZUJvb2xGbGFnKGFyZywga1Rocm93T25GYWlsdXJlRmxhZywgJkdURVNUX0ZMQUcodGhy
b3dfb25fZmFpbHVyZSkpCi0gICAgICAgICkgewotICAgICAgLy8gWWVzLiAgU2hpZnQgdGhlIHJl
bWFpbmRlciBvZiB0aGUgYXJndiBsaXN0IGxlZnQgYnkgb25lLiAgTm90ZQorICAgIGJvb2wgcmVt
b3ZlX2ZsYWcgPSBmYWxzZTsKKyAgICBpZiAoUGFyc2VHb29nbGVUZXN0RmxhZyhhcmcpKSB7Cisg
ICAgICByZW1vdmVfZmxhZyA9IHRydWU7CisjaWYgR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFH
XworICAgIH0gZWxzZSBpZiAoUGFyc2VTdHJpbmdGbGFnKGFyZywga0ZsYWdmaWxlRmxhZywgJkdU
RVNUX0ZMQUcoZmxhZ2ZpbGUpKSkgeworICAgICAgTG9hZEZsYWdzRnJvbUZpbGUoR1RFU1RfRkxB
RyhmbGFnZmlsZSkpOworICAgICAgcmVtb3ZlX2ZsYWcgPSB0cnVlOworI2VuZGlmICAvLyBHVEVT
VF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCisgICAgfSBlbHNlIGlmIChhcmdfc3RyaW5nID09ICIt
LWhlbHAiIHx8IGFyZ19zdHJpbmcgPT0gIi1oIiB8fAorICAgICAgICAgICAgICAgYXJnX3N0cmlu
ZyA9PSAiLT8iIHx8IGFyZ19zdHJpbmcgPT0gIi8/IiB8fAorICAgICAgICAgICAgICAgSGFzR29v
Z2xlVGVzdEZsYWdQcmVmaXgoYXJnKSkgeworICAgICAgLy8gQm90aCBoZWxwIGZsYWcgYW5kIHVu
cmVjb2duaXplZCBHb29nbGUgVGVzdCBmbGFncyAoZXhjbHVkaW5nCisgICAgICAvLyBpbnRlcm5h
bCBvbmVzKSB0cmlnZ2VyIGhlbHAgZGlzcGxheS4KKyAgICAgIGdfaGVscF9mbGFnID0gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAocmVtb3ZlX2ZsYWcpIHsKKyAgICAgIC8vIFNoaWZ0IHRoZSByZW1h
aW5kZXIgb2YgdGhlIGFyZ3YgbGlzdCBsZWZ0IGJ5IG9uZS4gIE5vdGUKICAgICAgIC8vIHRoYXQg
YXJndiBoYXMgKCphcmdjICsgMSkgZWxlbWVudHMsIHRoZSBsYXN0IG9uZSBhbHdheXMgYmVpbmcK
ICAgICAgIC8vIE5VTEwuICBUaGUgZm9sbG93aW5nIGxvb3AgbW92ZXMgdGhlIHRyYWlsaW5nIE5V
TEwgZWxlbWVudCBhcwogICAgICAgLy8gd2VsbC4KQEAgLTQ2MjgsMTIgKzU4NzksNiBAQCB2b2lk
IFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seUltcGwoaW50KiBhcmdjLCBDaGFyVHlwZSoqIGFyZ3Yp
IHsKICAgICAgIC8vIFdlIGFsc28gbmVlZCB0byBkZWNyZW1lbnQgdGhlIGl0ZXJhdG9yIGFzIHdl
IGp1c3QgcmVtb3ZlZAogICAgICAgLy8gYW4gZWxlbWVudC4KICAgICAgIGktLTsKLSAgICB9IGVs
c2UgaWYgKGFyZ19zdHJpbmcgPT0gIi0taGVscCIgfHwgYXJnX3N0cmluZyA9PSAiLWgiIHx8Ci0g
ICAgICAgICAgICAgICBhcmdfc3RyaW5nID09ICItPyIgfHwgYXJnX3N0cmluZyA9PSAiLz8iIHx8
Ci0gICAgICAgICAgICAgICBIYXNHb29nbGVUZXN0RmxhZ1ByZWZpeChhcmcpKSB7Ci0gICAgICAv
LyBCb3RoIGhlbHAgZmxhZyBhbmQgdW5yZWNvZ25pemVkIEdvb2dsZSBUZXN0IGZsYWdzIChleGNs
dWRpbmcKLSAgICAgIC8vIGludGVybmFsIG9uZXMpIHRyaWdnZXIgaGVscCBkaXNwbGF5LgotICAg
ICAgZ19oZWxwX2ZsYWcgPSB0cnVlOwogICAgIH0KICAgfQogCkBAIC00NjQ5LDYgKzU4OTQsMTcg
QEAgdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHlJbXBsKGludCogYXJnYywgQ2hhclR5cGUq
KiBhcmd2KSB7CiAvLyBvdGhlciBwYXJ0cyBvZiBHb29nbGUgVGVzdC4KIHZvaWQgUGFyc2VHb29n
bGVUZXN0RmxhZ3NPbmx5KGludCogYXJnYywgY2hhcioqIGFyZ3YpIHsKICAgUGFyc2VHb29nbGVU
ZXN0RmxhZ3NPbmx5SW1wbChhcmdjLCBhcmd2KTsKKworICAvLyBGaXggdGhlIHZhbHVlIG9mICpf
TlNHZXRBcmdjKCkgb24gbWFjT1MsIGJ1dCBpZmYKKyAgLy8gKl9OU0dldEFyZ3YoKSA9PSBhcmd2
CisgIC8vIE9ubHkgYXBwbGljYWJsZSB0byBjaGFyKiogdmVyc2lvbiBvZiBhcmd2CisjaWYgR1RF
U1RfT1NfTUFDCisjaWZuZGVmIEdURVNUX09TX0lPUworICBpZiAoKl9OU0dldEFyZ3YoKSA9PSBh
cmd2KSB7CisgICAgKl9OU0dldEFyZ2MoKSA9ICphcmdjOworICB9CisjZW5kaWYKKyNlbmRpZgog
fQogdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoaW50KiBhcmdjLCB3Y2hhcl90KiogYXJn
dikgewogICBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHlJbXBsKGFyZ2MsIGFyZ3YpOwpAQCAtNDY2
MCwyMSArNTkxNiwxOSBAQCB2b2lkIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seShpbnQqIGFyZ2Ms
IHdjaGFyX3QqKiBhcmd2KSB7CiAvLyB3Y2hhcl90LgogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJU
eXBlPgogdm9pZCBJbml0R29vZ2xlVGVzdEltcGwoaW50KiBhcmdjLCBDaGFyVHlwZSoqIGFyZ3Yp
IHsKLSAgZ19pbml0X2d0ZXN0X2NvdW50Kys7Ci0KICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBydW4g
dGhlIGluaXRpYWxpemF0aW9uIGNvZGUgdHdpY2UuCi0gIGlmIChnX2luaXRfZ3Rlc3RfY291bnQg
IT0gMSkgcmV0dXJuOworICBpZiAoR1Rlc3RJc0luaXRpYWxpemVkKCkpIHJldHVybjsKIAogICBp
ZiAoKmFyZ2MgPD0gMCkgcmV0dXJuOwogCi0gIGludGVybmFsOjpnX2V4ZWN1dGFibGVfcGF0aCA9
IGludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcoYXJndlswXSk7Ci0KLSNpZiBHVEVTVF9IQVNf
REVBVEhfVEVTVAogICBnX2FyZ3ZzLmNsZWFyKCk7CiAgIGZvciAoaW50IGkgPSAwOyBpICE9ICph
cmdjOyBpKyspIHsKICAgICBnX2FyZ3ZzLnB1c2hfYmFjayhTdHJlYW1hYmxlVG9TdHJpbmcoYXJn
dltpXSkpOwogICB9Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCisKKyNpZiBHVEVT
VF9IQVNfQUJTTAorICBhYnNsOjpJbml0aWFsaXplU3ltYm9saXplcihnX2FyZ3ZzWzBdLmNfc3Ry
KCkpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfQUJTTAogCiAgIFBhcnNlR29vZ2xlVGVzdEZsYWdz
T25seShhcmdjLCBhcmd2KTsKICAgR2V0VW5pdFRlc3RJbXBsKCktPlBvc3RGbGFnUGFyc2luZ0lu
aXQoKTsKQEAgLTQ2OTIsMTMgKzU5NDYsNjIgQEAgdm9pZCBJbml0R29vZ2xlVGVzdEltcGwoaW50
KiBhcmdjLCBDaGFyVHlwZSoqIGFyZ3YpIHsKIC8vCiAvLyBDYWxsaW5nIHRoZSBmdW5jdGlvbiBm
b3IgdGhlIHNlY29uZCB0aW1lIGhhcyBubyB1c2VyLXZpc2libGUgZWZmZWN0Lgogdm9pZCBJbml0
R29vZ2xlVGVzdChpbnQqIGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisjaWYgZGVmaW5lZChHVEVTVF9D
VVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8pCisgIEdURVNUX0NVU1RPTV9JTklUX0dP
T0dMRV9URVNUX0ZVTkNUSU9OXyhhcmdjLCBhcmd2KTsKKyNlbHNlICAvLyBkZWZpbmVkKEdURVNU
X0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9OXykKICAgaW50ZXJuYWw6OkluaXRHb29n
bGVUZXN0SW1wbChhcmdjLCBhcmd2KTsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01f
SU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8pCiB9CiAKIC8vIFRoaXMgb3ZlcmxvYWRlZCB2ZXJz
aW9uIGNhbiBiZSB1c2VkIGluIFdpbmRvd3MgcHJvZ3JhbXMgY29tcGlsZWQgaW4KIC8vIFVOSUNP
REUgbW9kZS4KIHZvaWQgSW5pdEdvb2dsZVRlc3QoaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndikg
eworI2lmIGRlZmluZWQoR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQor
ICBHVEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8oYXJnYywgYXJndik7Cisj
ZWxzZSAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8p
CiAgIGludGVybmFsOjpJbml0R29vZ2xlVGVzdEltcGwoYXJnYywgYXJndik7CisjZW5kaWYgIC8v
IGRlZmluZWQoR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQorfQorCitz
dGQ6OnN0cmluZyBUZW1wRGlyKCkgeworI2lmIGRlZmluZWQoR1RFU1RfQ1VTVE9NX1RFTVBESVJf
RlVOQ1RJT05fKQorICByZXR1cm4gR1RFU1RfQ1VTVE9NX1RFTVBESVJfRlVOQ1RJT05fKCk7Cisj
ZW5kaWYKKworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisgIHJldHVybiAiXFx0ZW1wXFwi
OworI2VsaWYgR1RFU1RfT1NfV0lORE9XUworICBjb25zdCBjaGFyKiB0ZW1wX2RpciA9IGludGVy
bmFsOjpwb3NpeDo6R2V0RW52KCJURU1QIik7CisgIGlmICh0ZW1wX2RpciA9PSBOVUxMIHx8IHRl
bXBfZGlyWzBdID09ICdcMCcpCisgICAgcmV0dXJuICJcXHRlbXBcXCI7CisgIGVsc2UgaWYgKHRl
bXBfZGlyW3N0cmxlbih0ZW1wX2RpcikgLSAxXSA9PSAnXFwnKQorICAgIHJldHVybiB0ZW1wX2Rp
cjsKKyAgZWxzZQorICAgIHJldHVybiBzdGQ6OnN0cmluZyh0ZW1wX2RpcikgKyAiXFwiOworI2Vs
aWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRAorICByZXR1cm4gIi9zZGNhcmQvIjsKKyNlbHNlCisg
IHJldHVybiAiL3RtcC8iOworI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorfQor
CisvLyBDbGFzcyBTY29wZWRUcmFjZQorCisvLyBQdXNoZXMgdGhlIGdpdmVuIHNvdXJjZSBmaWxl
IGxvY2F0aW9uIGFuZCBtZXNzYWdlIG9udG8gYSBwZXItdGhyZWFkCisvLyB0cmFjZSBzdGFjayBt
YWludGFpbmVkIGJ5IEdvb2dsZSBUZXN0Lgordm9pZCBTY29wZWRUcmFjZTo6UHVzaFRyYWNlKGNv
bnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBzdGQ6OnN0cmluZyBtZXNzYWdlKSB7CisgIGludGVy
bmFsOjpUcmFjZUluZm8gdHJhY2U7CisgIHRyYWNlLmZpbGUgPSBmaWxlOworICB0cmFjZS5saW5l
ID0gbGluZTsKKyAgdHJhY2UubWVzc2FnZS5zd2FwKG1lc3NhZ2UpOworCisgIFVuaXRUZXN0OjpH
ZXRJbnN0YW5jZSgpLT5QdXNoR1Rlc3RUcmFjZSh0cmFjZSk7Cit9CisKKy8vIFBvcHMgdGhlIGlu
Zm8gcHVzaGVkIGJ5IHRoZSBjJ3Rvci4KK1Njb3BlZFRyYWNlOjp+U2NvcGVkVHJhY2UoKQorICAg
IEdURVNUX0xPQ0tfRVhDTFVERURfKCZVbml0VGVzdDo6bXV0ZXhfKSB7CisgIFVuaXRUZXN0OjpH
ZXRJbnN0YW5jZSgpLT5Qb3BHVGVzdFRyYWNlKCk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0
aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3RfbWFpbi5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdF9tYWluLmNjCmluZGV4IGQyMGMw
MmZkZmIwYTk0NjFkY2MyYTI3ODljNDkyMmI1YjMwNTYzNTIuLjIxMTNmNjIxZTY1NDMwZTU1NzBk
ZmIyMDE1ODg0YTJkNGY0Y2YwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NyYy9ndGVzdF9tYWluLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVz
dF9tYWluLmNjCkBAIC0yNywxMyArMjcsMTEgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIAotI2luY2x1ZGUgPGlvc3RyZWFtPgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
LQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7Ci0gIHN0ZDo6Y291dCA8PCAiUnVu
bmluZyBtYWluKCkgZnJvbSBndGVzdF9tYWluLmNjXG4iOworI2luY2x1ZGUgPHN0ZGlvLmg+Cisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAorR1RFU1RfQVBJXyBpbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqKmFyZ3YpIHsKKyAgcHJpbnRmKCJSdW5uaW5nIG1haW4oKSBmcm9tICVzXG4iLCBfX0ZJ
TEVfXyk7CiAgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKICAgcmV0dXJu
IFJVTl9BTExfVEVTVFMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvQlVJTEQuYmF6ZWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L0JVSUxELmJh
emVsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE5MzBkNjVlMDQ0MDE0NDQxNmFlODhhYjI3NThmZDkzNDBhMDkzN2IK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L0JVSUxELmJh
emVsCkBAIC0wLDAgKzEsNTI3IEBACisjIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuCisjIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisjCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisj
IG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIworIyBBdXRob3I6IG1p
c3RlcmdAZ29vZ2xlLmNvbSAoR2VubmFkaXkgQ2l2aWwpCisjCisjIEJhemVsIEJVSUxEIGZvciBU
aGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisKK2xpY2Vuc2Vz
KFsibm90aWNlIl0pCisKK2NvbmZpZ19zZXR0aW5nKAorICAgIG5hbWUgPSAid2luZG93cyIsCisg
ICAgdmFsdWVzID0geyJjcHUiOiAieDY0X3dpbmRvd3MifSwKKykKKworY29uZmlnX3NldHRpbmco
CisgICAgbmFtZSA9ICJ3aW5kb3dzX21zdmMiLAorICAgIHZhbHVlcyA9IHsiY3B1IjogIng2NF93
aW5kb3dzX21zdmMifSwKKykKKworY29uZmlnX3NldHRpbmcoCisgICAgbmFtZSA9ICJoYXNfYWJz
bCIsCisgICAgdmFsdWVzID0geyJkZWZpbmUiOiAiYWJzbD0xIn0sCispCisKKyNvbiB3aW5kb3dz
IGV4Y2x1ZGUgZ3Rlc3QtdHVwbGUuaCBhbmQgZ29vZ2xldGVzdC10dXBsZS10ZXN0LmNjCitjY190
ZXN0KAorICAgIG5hbWUgPSAiZ3Rlc3RfYWxsX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAor
ICAgIHNyY3MgPSBnbG9iKAorICAgICAgICBpbmNsdWRlID0gWworICAgICAgICAgICAgImd0ZXN0
LSouY2MiLAorICAgICAgICAgICAgImdvb2dsZXRlc3QtKi5jYyIsCisgICAgICAgICAgICAiKi5o
IiwKKyAgICAgICAgICAgICJnb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvKiovKi5oIiwKKyAgICAg
ICAgXSwKKyAgICAgICAgZXhjbHVkZSA9IFsKKyAgICAgICAgICAgICJndGVzdC11bml0dGVzdC1h
cGlfdGVzdC5jYyIsCisgICAgICAgICAgICAiZ29vZ2xldGVzdC10dXBsZS10ZXN0LmNjIiwKKyAg
ICAgICAgICAgICJnb29nbGV0ZXN0L3NyYy9ndGVzdC1hbGwuY2MiLAorICAgICAgICAgICAgImd0
ZXN0X2FsbF90ZXN0LmNjIiwKKyAgICAgICAgICAgICJndGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3Qu
Y2MiLAorICAgICAgICAgICAgImd0ZXN0LWxpc3RlbmVyX3Rlc3QuY2MiLAorICAgICAgICAgICAg
Imd0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjIiwKKyAgICAgICAgICAgICJnb29nbGV0ZXN0LXBh
cmFtLXRlc3QtdGVzdC5jYyIsCisgICAgICAgICAgICAiZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRp
b25zLXRlc3RfLmNjIiwKKyAgICAgICAgICAgICJnb29nbGV0ZXN0LWNvbG9yLXRlc3RfLmNjIiwK
KyAgICAgICAgICAgICJnb29nbGV0ZXN0LWVudi12YXItdGVzdF8uY2MiLAorICAgICAgICAgICAg
Imdvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0Xy5jYyIsCisgICAgICAgICAgICAiZ29vZ2xldGVz
dC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0Xy5jYyIsCisgICAgICAgICAgICAgImdvb2dsZXRl
c3QtbGlzdGVuZXItdGVzdC5jYyIsCisgICAgICAgICAgICAgImdvb2dsZXRlc3Qtb3V0cHV0LXRl
c3RfLmNjIiwKKyAgICAgICAgICAgICAiZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0Xy5j
YyIsCisgICAgICAgICAgICAgImdvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0Xy5jYyIsCisgICAgICAg
ICAgICAgImdvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0Xy5jYyIsCisgICAgICAgICAgICAg
Imdvb2dsZXRlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNjIiwKKyAgICAgICAgICAgICAiZ29vZ2xl
dGVzdC1wYXJhbS10ZXN0LXRlc3QiLAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LXRocm93LW9u
LWZhaWx1cmUtdGVzdF8uY2MiLAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LXBhcmFtLXRlc3Qt
aW52YWxpZC1uYW1lMS10ZXN0Xy5jYyIsCisgICAgICAgICAgICAgImdvb2dsZXRlc3QtcGFyYW0t
dGVzdC1pbnZhbGlkLW5hbWUyLXRlc3RfLmNjIiwKKworICAgICAgICBdLAorICAgICkgKyBzZWxl
Y3QoeworICAgICAgICAiLy86d2luZG93cyI6IFtdLAorICAgICAgICAiLy86d2luZG93c19tc3Zj
IjogW10sCisgICAgICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsKKyAgICAgICAgICAgICJn
b29nbGV0ZXN0LXR1cGxlLXRlc3QuY2MiLAorICAgICAgICBdLAorICAgIH0pLAorICAgIGNvcHRz
ID0gc2VsZWN0KHsKKyAgICAgICAgIi8vOndpbmRvd3MiOiBbIi1ER1RFU1RfVVNFX09XTl9UUjFf
VFVQTEU9MCJdLAorICAgICAgICAiLy86d2luZG93c19tc3ZjIjogWyItREdURVNUX1VTRV9PV05f
VFIxX1RVUExFPTAiXSwKKyAgICAgICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogWyItREdURVNU
X1VTRV9PV05fVFIxX1RVUExFPTEiXSwKKyAgICB9KSwKKyAgICBpbmNsdWRlcyA9IFsKKyAgICAg
ICAgImdvb2dsZXRlc3QiLAorICAgICAgICAiZ29vZ2xldGVzdC9pbmNsdWRlIiwKKyAgICAgICAg
Imdvb2dsZXRlc3QvaW5jbHVkZS9pbnRlcm5hbCIsCisgICAgICAgICJnb29nbGV0ZXN0L3Rlc3Qi
LAorICAgIF0sCisgICAgbGlua29wdHMgPSBzZWxlY3QoeworICAgICAgICAiLy86d2luZG93cyI6
IFtdLAorICAgICAgICAiLy86d2luZG93c19tc3ZjIjogW10sCisgICAgICAgICIvL2NvbmRpdGlv
bnM6ZGVmYXVsdCI6IFsKKyAgICAgICAgICAgICItcHRocmVhZCIsCisgICAgICAgIF0sCisgICAg
fSksCisgICAgZGVwcyA9IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQorCisKKyMgVGVzdHMgZGVhdGgg
dGVzdHMuCitjY190ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1kZWF0aC10ZXN0LXRlc3Qi
LAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWRlYXRoLXRl
c3QtdGVzdC5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0X21haW4iXSwKKykKKworY2NfdGVz
dCgKKyAgICBuYW1lID0gImd0ZXN0X3Rlc3RfbWFjcm9fc3RhY2tfZm9vdHByaW50X3Rlc3QiLAor
ICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImd0ZXN0X3Rlc3RfbWFjcm9fc3RhY2tf
Zm9vdHByaW50X3Rlc3QuY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCisjVGhl
c2UgZ29vZ2xldGVzdCB0ZXN0cyBoYXZlIHRoZWlyIG93biBtYWluKCkKK2NjX3Rlc3QoCisgICAg
bmFtZSA9ICJnb29nbGV0ZXN0LWxpc3RlbmVyLXRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAor
ICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtbGlzdGVuZXItdGVzdC5jYyJdLAorICAgIGRlcHMgPSBb
Ii8vOmd0ZXN0X21haW4iXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0LXVuaXR0
ZXN0LWFwaV90ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWworICAgICAg
ICAiZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2MiLAorICAgIF0sCisgICAgZGVwcyA9IFsKKyAg
ICAgICAgIi8vOmd0ZXN0IiwKKyAgICBdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiZ29v
Z2xldGVzdC1wYXJhbS10ZXN0LXRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3Mg
PSBbCisgICAgICAgICJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYyIsCisgICAgICAgICJn
b29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5oIiwKKyAgICAgICAgImdvb2dsZXRlc3QtcGFyYW0t
dGVzdDItdGVzdC5jYyIsCisgICAgXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitj
Y190ZXN0KAorICAgIG5hbWUgPSAiZ3Rlc3RfdW5pdHRlc3QiLAorICAgIHNpemUgPSAic21hbGwi
LAorICAgIHNyY3MgPSBbImd0ZXN0X3VuaXR0ZXN0LmNjIl0sCisgICAgYXJncyA9IFsiLS1oZWFw
X2NoZWNrPXN0cmljdCJdLAorICAgIHNoYXJkX2NvdW50ID0gMiwKKyAgICBkZXBzID0gWyIvLzpn
dGVzdF9tYWluIl0sCispCisKKyMgIFB5IHRlc3RzCisKK3B5X2xpYnJhcnkoCisgICAgbmFtZSA9
ICJndGVzdF90ZXN0X3V0aWxzIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ3Rl
c3RfdGVzdF91dGlscy5weSJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJndGVzdF9o
ZWxwX3Rlc3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ3Rlc3RfaGVscF90
ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0X21haW4iXSwKKykKKworcHlfdGVzdCgK
KyAgICBuYW1lID0gImd0ZXN0X2hlbHBfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAg
c3JjcyA9IFsiZ3Rlc3RfaGVscF90ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmd0ZXN0X2hlbHBf
dGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5h
cnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LW91dHB1dC10ZXN0XyIsCisgICAgdGVzdG9ubHkg
PSAxLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjIl0sCisgICAgZGVw
cyA9IFsiLy86Z3Rlc3QiXSwKKykKKworCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdC5weSJdLAorICAgIGFyZ3MgPSBzZWxlY3QoeworICAgICAgICAiOmhh
c19hYnNsIjogW10sCisgICAgICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsiLS1ub19zdGFj
a3RyYWNlX3N1cHBvcnQiXSwKKyAgICB9KSwKKyAgICBkYXRhID0gWworICAgICAgICAiZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdC1nb2xkZW4tbGluLnR4dCIsCisgICAgICAgICI6Z29vZ2xldGVzdC1v
dXRwdXQtdGVzdF8iLAorICAgIF0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwK
KykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1jb2xvci10ZXN0XyIsCisg
ICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtY29sb3ItdGVzdF8uY2Mi
XSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAi
Z29vZ2xldGVzdC1jb2xvci10ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0g
WyJnb29nbGV0ZXN0LWNvbG9yLXRlc3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z29vZ2xldGVzdC1j
b2xvci10ZXN0XyJdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK2Nj
X2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtZW52LXZhci10ZXN0XyIsCisgICAgdGVz
dG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtZW52LXZhci10ZXN0Xy5jYyJdLAor
ICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29n
bGV0ZXN0LWVudi12YXItdGVzdCIsCisgICAgc2l6ZSA9ICJtZWRpdW0iLAorICAgIHNyY3MgPSBb
Imdvb2dsZXRlc3QtZW52LXZhci10ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmdvb2dsZXRlc3Qt
ZW52LXZhci10ZXN0XyJdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisK
K2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0XyIsCisg
ICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0
Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisKK3B5X3Rlc3QoCisgICAgbmFt
ZSA9ICJnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdCIsCisgICAgc2l6ZSA9ICJtZWRpdW0iLAor
ICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0LnB5Il0sCisgICAgZGF0YSA9
IFsiOmdvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0XyJdLAorICAgIGRlcHMgPSBbIjpndGVzdF90
ZXN0X3V0aWxzIl0sCispCisKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1i
cmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3Mg
PSBbImdvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8uY2MiXSwKKyAgICBkZXBz
ID0gWyIvLzpndGVzdCJdLAorKQorCisKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRl
c3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAg
c3JjcyA9IFsiZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0LnB5Il0sCisgICAg
ZGF0YSA9IFsiOmdvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8iXSwKKyAgICBk
ZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9
ICJndGVzdF9hc3NlcnRfYnlfZXhjZXB0aW9uX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAor
ICAgIHNyY3MgPSBbImd0ZXN0X2Fzc2VydF9ieV9leGNlcHRpb25fdGVzdC5jYyJdLAorICAgIGRl
cHMgPSBbIi8vOmd0ZXN0Il0sCispCisKKworCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29n
bGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBz
cmNzID0gWyJnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8uY2MiXSwKKyAgICBkZXBz
ID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC10
aHJvdy1vbi1mYWlsdXJlLXRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBb
Imdvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmdv
b2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0XyJdLAorICAgIGRlcHMgPSBbIjpndGVzdF90
ZXN0X3V0aWxzIl0sCispCisKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1s
aXN0LXRlc3RzLXVuaXR0ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImdv
b2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVz
dCJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVu
aXR0ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWxp
c3QtdGVzdHMtdW5pdHRlc3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z29vZ2xldGVzdC1saXN0LXRl
c3RzLXVuaXR0ZXN0XyJdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisK
K2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0XyIsCisgICAg
c3JjcyA9IFsiZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86
Z3Rlc3QiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3Qtc2h1ZmZsZS10
ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LXNodWZm
bGUtdGVzdC5weSJdLAorICAgIGRhdGEgPSBbIjpnb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8iXSwK
KyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAg
bmFtZSA9ICJnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtbm8tZXgtdGVzdF8iLAorICAgIHRl
c3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVz
dF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdF9tYWluIl0sCispCisKK2NjX2JpbmFyeSgK
KyAgICBuYW1lID0gImdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy1leC10ZXN0XyIsCisgICAg
dGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10
ZXN0Xy5jYyJdLAorICAgIGNvcHRzID0gWyItZmV4Y2VwdGlvbnMiXSwKKyAgICBkZXBzID0gWyIv
LzpndGVzdF9tYWluIl0sCispCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWNh
dGNoLWV4Y2VwdGlvbnMtdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsi
Z29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3QucHkiXSwKKyAgICBkYXRhID0gWworICAg
ICAgICAiOmdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy1leC10ZXN0XyIsCisgICAgICAgICI6
Z29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLW5vLWV4LXRlc3RfIiwKKyAgICBdLAorICAgIGRl
cHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0g
Imd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3Jj
cyA9IFsiZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpn
dGVzdCJdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiZ3Rlc3Rfbm9fdGVzdF91bml0dGVz
dCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ3Rlc3Rfbm9fdGVzdF91bml0
dGVzdC5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisKK3B5X3Rlc3QoCisgICAg
bmFtZSA9ICJndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwK
KyAgICBzcmNzID0gWworICAgICAgICAiZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdC5weSIsCisg
ICAgICAgICJndGVzdF94bWxfdGVzdF91dGlscy5weSIsCisgICAgXSwKKyAgICBhcmdzID0gc2Vs
ZWN0KHsKKyAgICAgICAgIjpoYXNfYWJzbCI6IFtdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRl
ZmF1bHQiOiBbIi0tbm9fc3RhY2t0cmFjZV9zdXBwb3J0Il0sCisgICAgfSksCisgICAgZGF0YSA9
IFsKKyAgICAgICAgIyBXZSBpbnZva2UgZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCB0byB2ZXJpZnkg
dGhlIFhNTCBvdXRwdXQKKyAgICAgICAgIyB3aGVuIHRoZSB0ZXN0IHByb2dyYW0gY29udGFpbnMg
bm8gdGVzdCBkZWZpbml0aW9uLgorICAgICAgICAiOmd0ZXN0X25vX3Rlc3RfdW5pdHRlc3QiLAor
ICAgICAgICAiOmd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfIiwKKyAgICBdLAorICAgIGRlcHMg
PSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImd0
ZXN0X3htbF9vdXRmaWxlMV90ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBb
Imd0ZXN0X3htbF9vdXRmaWxlMV90ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0X21h
aW4iXSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ3Rlc3RfeG1sX291dGZpbGUyX3Rl
c3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ3Rlc3RfeG1sX291dGZpbGUy
X3Rlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQorCitweV90ZXN0
KAorICAgIG5hbWUgPSAiZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QiLAorICAgIHNpemUgPSAic21h
bGwiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weSIs
CisgICAgICAgICJndGVzdF94bWxfdGVzdF91dGlscy5weSIsCisgICAgXSwKKyAgICBkYXRhID0g
WworICAgICAgICAiOmd0ZXN0X3htbF9vdXRmaWxlMV90ZXN0XyIsCisgICAgICAgICI6Z3Rlc3Rf
eG1sX291dGZpbGUyX3Rlc3RfIiwKKyAgICBdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0
aWxzIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtdW5pbml0aWFs
aXplZC10ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3Qt
dW5pbml0aWFsaXplZC10ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisK
K3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdCIsCisg
ICAgc2l6ZSA9ICJtZWRpdW0iLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtdW5pbml0aWFsaXpl
ZC10ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3Rf
Il0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworY2NfYmluYXJ5KAor
ICAgIG5hbWUgPSAiZ3Rlc3RfdGVzdGJyaWRnZV90ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAor
ICAgIHNyY3MgPSBbImd0ZXN0X3Rlc3RicmlkZ2VfdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIv
LzpndGVzdF9tYWluIl0sCispCisKKyMgVGVzdHMgdGhhdCBmaWx0ZXJpbmcgdmlhIHRlc3Ricmlk
Z2Ugd29ya3MKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJndGVzdF90ZXN0YnJpZGdlX3Rlc3QiLAor
ICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImd0ZXN0X3Rlc3RicmlkZ2VfdGVzdC5w
eSJdLAorICAgIGRhdGEgPSBbIjpndGVzdF90ZXN0YnJpZGdlX3Rlc3RfIl0sCisgICAgZGVwcyA9
IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29v
Z2xldGVzdC1qc29uLW91dGZpbGVzLXRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNy
Y3MgPSBbCisgICAgICAgICJnb29nbGV0ZXN0LWpzb24tb3V0ZmlsZXMtdGVzdC5weSIsCisgICAg
ICAgICJndGVzdF9qc29uX3Rlc3RfdXRpbHMucHkiLAorICAgIF0sCisgICAgZGF0YSA9IFsKKyAg
ICAgICAgIjpndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8iLAorICAgICAgICAiOmd0ZXN0X3htbF9v
dXRmaWxlMl90ZXN0XyIsCisgICAgXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJd
LAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1qc29uLW91dHB1dC11bml0
dGVzdCIsCisgICAgc2l6ZSA9ICJtZWRpdW0iLAorICAgIHNyY3MgPSBbCisgICAgICAgICJnb29n
bGV0ZXN0LWpzb24tb3V0cHV0LXVuaXR0ZXN0LnB5IiwKKyAgICAgICAgImd0ZXN0X2pzb25fdGVz
dF91dGlscy5weSIsCisgICAgXSwKKyAgICBkYXRhID0gWworICAgICAgICAjIFdlIGludm9rZSBn
dGVzdF9ub190ZXN0X3VuaXR0ZXN0IHRvIHZlcmlmeSB0aGUgSlNPTiBvdXRwdXQKKyAgICAgICAg
IyB3aGVuIHRoZSB0ZXN0IHByb2dyYW0gY29udGFpbnMgbm8gdGVzdCBkZWZpbml0aW9uLgorICAg
ICAgICAiOmd0ZXN0X25vX3Rlc3RfdW5pdHRlc3QiLAorICAgICAgICAiOmd0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3RfIiwKKyAgICBdLAorICAgIGFyZ3MgPSBzZWxlY3QoeworICAgICAgICAiOmhh
c19hYnNsIjogW10sCisgICAgICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsiLS1ub19zdGFj
a3RyYWNlX3N1cHBvcnQiXSwKKyAgICB9KSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGls
cyJdLAorKQorIyBWZXJpZmllcyBpbnRlcmFjdGlvbiBvZiBkZWF0aCB0ZXN0cyBhbmQgZXhjZXB0
aW9ucy4KK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWRlYXRoLXRlc3RfZXhfY2F0
Y2hfdGVzdCIsCisgICAgc2l6ZSA9ICJtZWRpdW0iLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3Qt
ZGVhdGgtdGVzdF9leF90ZXN0LmNjIl0sCisgICAgY29wdHMgPSBbIi1mZXhjZXB0aW9ucyJdLAor
ICAgIGRlZmluZXMgPSBbIkdURVNUX0VOQUJMRV9DQVRDSF9FWENFUFRJT05TXz0xIl0sCisgICAg
ZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ29vZ2xl
dGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwK
KyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMS10ZXN0Xy5j
YyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1l
ID0gImdvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRlc3RfIiwKKyAgICB0ZXN0
b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFt
ZTItdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAor
ICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdCIsCisg
ICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWlu
dmFsaWQtbmFtZTEtdGVzdC5weSJdLAorICAgIGRhdGEgPSBbIjpnb29nbGV0ZXN0LXBhcmFtLXRl
c3QtaW52YWxpZC1uYW1lMS10ZXN0XyJdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxz
Il0sCispCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52
YWxpZC1uYW1lMi10ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJnb29n
bGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsi
Omdvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRlc3RfIl0sCisgICAgZGVwcyA9
IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0LnB5IGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5p
dHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTVkZmJjNjkzYjQzYTFiMTllMzg0N2RjYmNhYjg4NmQyZjRk
MjhlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMjA4IEBACisj
IS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCisj
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisj
IG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJVbml0IHRlc3Qg
Zm9yIEdvb2dsZSBUZXN0J3MgYnJlYWstb24tZmFpbHVyZSBtb2RlLgorCitBIHVzZXIgY2FuIGFz
ayBHb29nbGUgVGVzdCB0byBzZWctZmF1bHQgd2hlbiBhbiBhc3NlcnRpb24gZmFpbHMsIHVzaW5n
CitlaXRoZXIgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFyaWFibGUg
b3IgdGhlCistLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZy4gIFRoaXMgc2NyaXB0IHRlc3Rz
IHN1Y2ggZnVuY3Rpb25hbGl0eQorYnkgaW52b2tpbmcgZ29vZ2xldGVzdC1icmVhay1vbi1mYWls
dXJlLXVuaXR0ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aAorR29vZ2xlIFRlc3QpIHdpdGgg
ZGlmZmVyZW50IGVudmlyb25tZW50cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdzLgorIiIiCisKK2lt
cG9ydCBvcworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworIyBDb25zdGFudHMuCisKK0lTX1dJ
TkRPV1MgPSBvcy5uYW1lID09ICdudCcKKworIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9y
IGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgYnJlYWstb24tZmFpbHVyZSBtb2RlLgorQlJFQUtfT05f
RkFJTFVSRV9FTlZfVkFSID0gJ0dURVNUX0JSRUFLX09OX0ZBSUxVUkUnCisKKyMgVGhlIGNvbW1h
bmQgbGluZSBmbGFnIGZvciBlbmFibGluZy9kaXNhYmxpbmcgdGhlIGJyZWFrLW9uLWZhaWx1cmUg
bW9kZS4KK0JSRUFLX09OX0ZBSUxVUkVfRkxBRyA9ICdndGVzdF9icmVha19vbl9mYWlsdXJlJwor
CisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSB0
aHJvdy1vbi1mYWlsdXJlIG1vZGUuCitUSFJPV19PTl9GQUlMVVJFX0VOVl9WQVIgPSAnR1RFU1Rf
VEhST1dfT05fRkFJTFVSRScKKworIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIGVuYWJs
aW5nL2Rpc2FibGluZyB0aGUgY2F0Y2gtZXhjZXB0aW9ucyBtb2RlLgorQ0FUQ0hfRVhDRVBUSU9O
U19FTlZfVkFSID0gJ0dURVNUX0NBVENIX0VYQ0VQVElPTlMnCisKKyMgUGF0aCB0byB0aGUgZ29v
Z2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0XyBwcm9ncmFtLgorRVhFX1BBVEggPSBn
dGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKKyAgICAnZ29vZ2xldGVzdC1i
cmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0XycpCisKKworZW52aXJvbiA9IGd0ZXN0X3Rlc3RfdXRp
bHMuZW52aXJvbgorU2V0RW52VmFyID0gZ3Rlc3RfdGVzdF91dGlscy5TZXRFbnZWYXIKKworIyBU
ZXN0cyBpbiB0aGlzIGZpbGUgcnVuIGEgR29vZ2xlLVRlc3QtYmFzZWQgdGVzdCBwcm9ncmFtIGFu
ZCBleHBlY3QgaXQKKyMgdG8gdGVybWluYXRlIHByZW1hdHVyZWx5LiAgVGhlcmVmb3JlIHRoZXkg
YXJlIGluY29tcGF0aWJsZSB3aXRoCisjIHRoZSBwcmVtYXR1cmUtZXhpdC1maWxlIHByb3RvY29s
IGJ5IGRlc2lnbi4gIFVuc2V0IHRoZQorIyBwcmVtYXR1cmUtZXhpdCBmaWxlcGF0aCB0byBwcmV2
ZW50IEdvb2dsZSBUZXN0IGZyb20gY3JlYXRpbmcKKyMgdGhlIGZpbGUuCitTZXRFbnZWYXIoZ3Rl
c3RfdGVzdF91dGlscy5QUkVNQVRVUkVfRVhJVF9GSUxFX0VOVl9WQVIsIE5vbmUpCisKKworZGVm
IFJ1bihjb21tYW5kKToKKyAgIiIiUnVucyBhIGNvbW1hbmQ7IHJldHVybnMgMSBpZiBpdCB3YXMg
a2lsbGVkIGJ5IGEgc2lnbmFsLCBvciAwIG90aGVyd2lzZS4iIiIKKworICBwID0gZ3Rlc3RfdGVz
dF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQsIGVudj1lbnZpcm9uKQorICBpZiBwLnRlcm1pbmF0
ZWRfYnlfc2lnbmFsOgorICAgIHJldHVybiAxCisgIGVsc2U6CisgICAgcmV0dXJuIDAKKworCisj
IFRoZSB0ZXN0cy4KKworCitjbGFzcyBHVGVzdEJyZWFrT25GYWlsdXJlVW5pdFRlc3QoZ3Rlc3Rf
dGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICIiIlRlc3RzIHVzaW5nIHRoZSBHVEVTVF9CUkVBS19P
Tl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlhYmxlIG9yCisgIHRoZSAtLWd0ZXN0X2JyZWFrX29u
X2ZhaWx1cmUgZmxhZyB0byB0dXJuIGFzc2VydGlvbiBmYWlsdXJlcyBpbnRvCisgIHNlZ21lbnRh
dGlvbiBmYXVsdHMuCisgICIiIgorCisgIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwgZW52X3Zhcl92
YWx1ZSwgZmxhZ192YWx1ZSwgZXhwZWN0X3NlZ19mYXVsdCk6CisgICAgIiIiUnVucyBnb29nbGV0
ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3RfIGFuZCB2ZXJpZmllcyB0aGF0IGl0IGRvZXMK
KyAgICAob3IgZG9lcyBub3QpIGhhdmUgYSBzZWctZmF1bHQuCisKKyAgICBBcmdzOgorICAgICAg
ZW52X3Zhcl92YWx1ZTogICAgdmFsdWUgb2YgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52
aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlOyBOb25lIGlmIHRoZSB2
YXJpYWJsZSBzaG91bGQgYmUgdW5zZXQuCisgICAgICBmbGFnX3ZhbHVlOiAgICAgICB2YWx1ZSBv
ZiB0aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWc7CisgICAgICAgICAgICAgICAgICAg
ICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBub3QgYmUgcHJlc2VudC4KKyAgICAgIGV4cGVj
dF9zZWdfZmF1bHQ6IDEgaWYgdGhlIHByb2dyYW0gaXMgZXhwZWN0ZWQgdG8gZ2VuZXJhdGUgYSBz
ZWctZmF1bHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAwIG90aGVyd2lzZS4KKyAgICAiIiIK
KworICAgIFNldEVudlZhcihCUkVBS19PTl9GQUlMVVJFX0VOVl9WQVIsIGVudl92YXJfdmFsdWUp
CisKKyAgICBpZiBlbnZfdmFyX3ZhbHVlIGlzIE5vbmU6CisgICAgICBlbnZfdmFyX3ZhbHVlX21z
ZyA9ICcgaXMgbm90IHNldCcKKyAgICBlbHNlOgorICAgICAgZW52X3Zhcl92YWx1ZV9tc2cgPSAn
PScgKyBlbnZfdmFyX3ZhbHVlCisKKyAgICBpZiBmbGFnX3ZhbHVlIGlzIE5vbmU6CisgICAgICBm
bGFnID0gJycKKyAgICBlbGlmIGZsYWdfdmFsdWUgPT0gJzAnOgorICAgICAgZmxhZyA9ICctLSVz
PTAnICUgQlJFQUtfT05fRkFJTFVSRV9GTEFHCisgICAgZWxzZToKKyAgICAgIGZsYWcgPSAnLS0l
cycgJSBCUkVBS19PTl9GQUlMVVJFX0ZMQUcKKworICAgIGNvbW1hbmQgPSBbRVhFX1BBVEhdCisg
ICAgaWYgZmxhZzoKKyAgICAgIGNvbW1hbmQuYXBwZW5kKGZsYWcpCisKKyAgICBpZiBleHBlY3Rf
c2VnX2ZhdWx0OgorICAgICAgc2hvdWxkX29yX25vdCA9ICdzaG91bGQnCisgICAgZWxzZToKKyAg
ICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxkIG5vdCcKKworICAgIGhhc19zZWdfZmF1bHQgPSBS
dW4oY29tbWFuZCkKKworICAgIFNldEVudlZhcihCUkVBS19PTl9GQUlMVVJFX0VOVl9WQVIsIE5v
bmUpCisKKyAgICBtc2cgPSAoJ3doZW4gJXMlcywgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4gIiVz
IiAlcyBjYXVzZSBhIHNlZy1mYXVsdC4nICUKKyAgICAgICAgICAgKEJSRUFLX09OX0ZBSUxVUkVf
RU5WX1ZBUiwgZW52X3Zhcl92YWx1ZV9tc2csICcgJy5qb2luKGNvbW1hbmQpLAorICAgICAgICAg
ICAgc2hvdWxkX29yX25vdCkpCisgICAgc2VsZi5hc3NlcnRfKGhhc19zZWdfZmF1bHQgPT0gZXhw
ZWN0X3NlZ19mYXVsdCwgbXNnKQorCisgIGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9yKHNlbGYpOgor
ICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBtb2RlLiIiIgorCisgICAg
c2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAg
ICAgIGZsYWdfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2Zh
dWx0PTApCisKKyAgZGVmIHRlc3RFbnZWYXIoc2VsZik6CisgICAgIiIiVGVzdHMgdXNpbmcgdGhl
IEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFyaWFibGUuIiIiCisKKyAgICBz
ZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAg
ICBmbGFnX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVs
dD0wKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAorICAgICAgICAg
ICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBleHBl
Y3Rfc2VnX2ZhdWx0PTEpCisKKyAgZGVmIHRlc3RGbGFnKHNlbGYpOgorICAgICIiIlRlc3RzIHVz
aW5nIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZy4iIiIKKworICAgIHNlbGYuUnVu
QW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBmbGFn
X3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCisg
ICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAg
ICAgICAgIGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdf
ZmF1bHQ9MSkKKworICBkZWYgdGVzdEZsYWdPdmVycmlkZXNFbnZWYXIoc2VsZik6CisgICAgIiIi
VGVzdHMgdGhhdCB0aGUgZmxhZyBvdmVycmlkZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLiIi
IgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCisgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
X3NlZ19mYXVsdD0wKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAor
ICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3Zh
bHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKKyAgICAgICAg
ICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCisgICAgc2VsZi5SdW5BbmRWZXJpZnko
ZW52X3Zhcl92YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScs
CisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0xKQorCisgIGRlZiB0ZXN0
QnJlYWtPbkZhaWx1cmVPdmVycmlkZXNUaHJvd09uRmFpbHVyZShzZWxmKToKKyAgICAiIiJUZXN0
cyB0aGF0IGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgb3ZlcnJpZGVzIGd0ZXN0X3Rocm93X29uX2Zh
aWx1cmUuIiIiCisKKyAgICBTZXRFbnZWYXIoVEhST1dfT05fRkFJTFVSRV9FTlZfVkFSLCAnMScp
CisgICAgdHJ5OgorICAgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAg
ICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCisgICAgZmluYWxseToKKyAgICAgIFNldEVudlZh
cihUSFJPV19PTl9GQUlMVVJFX0VOVl9WQVIsIE5vbmUpCisKKyAgaWYgSVNfV0lORE9XUzoKKyAg
ICBkZWYgdGVzdENhdGNoRXhjZXB0aW9uc0RvZXNOb3RJbnRlcmZlcmUoc2VsZik6CisgICAgICAi
IiJUZXN0cyB0aGF0IGd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnMgZG9lc24ndCBpbnRlcmZlcmUuIiIi
CisKKyAgICAgIFNldEVudlZhcihDQVRDSF9FWENFUFRJT05TX0VOVl9WQVIsICcxJykKKyAgICAg
IHRyeToKKyAgICAgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCisgICAgICBmaW5hbGx5OgorICAgICAgICBTZXRF
bnZWYXIoQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSLCBOb25lKQorCisKK2lmIF9fbmFtZV9fID09
ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0
dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtYnJlYWst
b24tZmFpbHVyZS11bml0dGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjg0OTU3YTJkMDNiNTYyNjBjOGUy
YzBhZThmNWEyN2JlYjZmNjM3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0Xy5jYwpAQCAt
MCwwICsxLDg2IEBACisvLyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKworLy8gVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIGJyZWFrLW9uLWZhaWx1cmUgbW9k
ZS4KKy8vCisvLyBBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBzZWctZmF1bHQgd2hlbiBh
biBhc3NlcnRpb24gZmFpbHMsIHVzaW5nCisvLyBlaXRoZXIgdGhlIEdURVNUX0JSRUFLX09OX0ZB
SUxVUkUgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCisvLyAtLWd0ZXN0X2JyZWFrX29uX2Zh
aWx1cmUgZmxhZy4gIFRoaXMgZmlsZSBpcyB1c2VkIGZvciB0ZXN0aW5nIHN1Y2gKKy8vIGZ1bmN0
aW9uYWxpdHkuCisvLworLy8gVGhpcyBwcm9ncmFtIHdpbGwgYmUgaW52b2tlZCBmcm9tIGEgUHl0
aG9uIHVuaXQgdGVzdC4gIEl0IGlzCisvLyBleHBlY3RlZCB0byBmYWlsLiAgRG9uJ3QgcnVuIGl0
IGRpcmVjdGx5LgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lmIEdURVNUX09TX1dJ
TkRPV1MKKyMgaW5jbHVkZSA8d2luZG93cy5oPgorIyBpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRp
ZgorCituYW1lc3BhY2UgeworCisvLyBBIHRlc3QgdGhhdCdzIGV4cGVjdGVkIHRvIGZhaWwuCitU
RVNUKEZvbywgQmFyKSB7CisgIEVYUEVDVF9FUSgyLCAzKTsKK30KKworI2lmIEdURVNUX0hBU19T
RUggJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisvLyBPbiBXaW5kb3dzIE1vYmlsZSBnbG9i
YWwgZXhjZXB0aW9uIGhhbmRsZXJzIGFyZSBub3Qgc3VwcG9ydGVkLgorTE9ORyBXSU5BUEkgRXhp
dFdpdGhFeGNlcHRpb25Db2RlKAorICAgIHN0cnVjdCBfRVhDRVBUSU9OX1BPSU5URVJTKiBleGNl
cHRpb25fcG9pbnRlcnMpIHsKKyAgZXhpdChleGNlcHRpb25fcG9pbnRlcnMtPkV4Y2VwdGlvblJl
Y29yZC0+RXhjZXB0aW9uQ29kZSk7Cit9CisjZW5kaWYKKworfSAgLy8gbmFtZXNwYWNlCisKK2lu
dCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAg
Ly8gU3VwcHJlc3NlcyBkaXNwbGF5IG9mIHRoZSBXaW5kb3dzIGVycm9yIGRpYWxvZyB1cG9uIGVu
Y291bnRlcmluZworICAvLyBhIGdlbmVyYWwgcHJvdGVjdGlvbiBmYXVsdCAoc2VnbWVudCB2aW9s
YXRpb24pLgorICBTZXRFcnJvck1vZGUoU0VNX05PR1BGQVVMVEVSUk9SQk9YIHwgU0VNX0ZBSUxD
UklUSUNBTEVSUk9SUyk7CisKKyMgaWYgR1RFU1RfSEFTX1NFSCAmJiAhR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKKworICAvLyBUaGUgZGVmYXVsdCB1bmhhbmRsZWQgZXhjZXB0aW9uIGZpbHRlciBk
b2VzIG5vdCBhbHdheXMgZXhpdAorICAvLyB3aXRoIHRoZSBleGNlcHRpb24gY29kZSBhcyBleGl0
IGNvZGUgLSBmb3IgZXhhbXBsZSBpdCBleGl0cyB3aXRoCisgIC8vIDAgZm9yIEVYQ0VQVElPTl9B
Q0NFU1NfVklPTEFUSU9OIGFuZCAxIGZvciBFWENFUFRJT05fQlJFQUtQT0lOVAorICAvLyBpZiB0
aGUgYXBwbGljYXRpb24gaXMgY29tcGlsZWQgaW4gZGVidWcgbW9kZS4gVGh1cyB3ZSB1c2Ugb3Vy
IG93bgorICAvLyBmaWx0ZXIgd2hpY2ggYWx3YXlzIGV4aXRzIHdpdGggdGhlIGV4Y2VwdGlvbiBj
b2RlIGZvciB1bmhhbmRsZWQKKyAgLy8gZXhjZXB0aW9ucy4KKyAgU2V0VW5oYW5kbGVkRXhjZXB0
aW9uRmlsdGVyKEV4aXRXaXRoRXhjZXB0aW9uQ29kZSk7CisKKyMgZW5kaWYKKyNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUworICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7
CisKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3QucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10
ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVkNDljMTAyM2M1MGVmMTY4MzNlNmI4ZTJhOGU2MjAyNDg0MzJh
YzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0LnB5CkBAIC0wLDAgKzEsMjMzIEBACisjIS91c3Iv
YmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMTAgR29vZ2xlIEluYy4gIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMK
KyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
IyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJUZXN0cyBHb29nbGUgVGVzdCdz
IGV4Y2VwdGlvbiBjYXRjaGluZyBiZWhhdmlvci4KKworVGhpcyBzY3JpcHQgaW52b2tlcyBnb29n
bGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdF8gYW5kCitnb29nbGV0ZXN0LWNhdGNoLWV4Y2Vw
dGlvbnMtZXgtdGVzdF8gKHByb2dyYW1zIHdyaXR0ZW4gd2l0aAorR29vZ2xlIFRlc3QpIGFuZCB2
ZXJpZmllcyB0aGVpciBvdXRwdXQuCisiIiIKKworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKwor
IyBDb25zdGFudHMuCitGTEFHX1BSRUZJWCA9ICctLWd0ZXN0XycKK0xJU1RfVEVTVFNfRkxBRyA9
IEZMQUdfUFJFRklYICsgJ2xpc3RfdGVzdHMnCitOT19DQVRDSF9FWENFUFRJT05TX0ZMQUcgPSBG
TEFHX1BSRUZJWCArICdjYXRjaF9leGNlcHRpb25zPTAnCitGSUxURVJfRkxBRyA9IEZMQUdfUFJF
RklYICsgJ2ZpbHRlcicKKworIyBQYXRoIHRvIHRoZSBnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlv
bnMtZXgtdGVzdF8gYmluYXJ5LCBjb21waWxlZCB3aXRoCisjIGV4Y2VwdGlvbnMgZW5hYmxlZC4K
K0VYX0VYRV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisg
ICAgJ2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy1leC10ZXN0XycpCisKKyMgUGF0aCB0byB0
aGUgZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3RfIGJpbmFyeSwgY29tcGlsZWQgd2l0
aAorIyBleGNlcHRpb25zIGRpc2FibGVkLgorRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdl
dFRlc3RFeGVjdXRhYmxlUGF0aCgKKyAgICAnZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLW5v
LWV4LXRlc3RfJykKKworZW52aXJvbiA9IGd0ZXN0X3Rlc3RfdXRpbHMuZW52aXJvbgorU2V0RW52
VmFyID0gZ3Rlc3RfdGVzdF91dGlscy5TZXRFbnZWYXIKKworIyBUZXN0cyBpbiB0aGlzIGZpbGUg
cnVuIGEgR29vZ2xlLVRlc3QtYmFzZWQgdGVzdCBwcm9ncmFtIGFuZCBleHBlY3QgaXQKKyMgdG8g
dGVybWluYXRlIHByZW1hdHVyZWx5LiAgVGhlcmVmb3JlIHRoZXkgYXJlIGluY29tcGF0aWJsZSB3
aXRoCisjIHRoZSBwcmVtYXR1cmUtZXhpdC1maWxlIHByb3RvY29sIGJ5IGRlc2lnbi4gIFVuc2V0
IHRoZQorIyBwcmVtYXR1cmUtZXhpdCBmaWxlcGF0aCB0byBwcmV2ZW50IEdvb2dsZSBUZXN0IGZy
b20gY3JlYXRpbmcKKyMgdGhlIGZpbGUuCitTZXRFbnZWYXIoZ3Rlc3RfdGVzdF91dGlscy5QUkVN
QVRVUkVfRVhJVF9GSUxFX0VOVl9WQVIsIE5vbmUpCisKK1RFU1RfTElTVCA9IGd0ZXN0X3Rlc3Rf
dXRpbHMuU3VicHJvY2VzcygKKyAgICBbRVhFX1BBVEgsIExJU1RfVEVTVFNfRkxBR10sIGVudj1l
bnZpcm9uKS5vdXRwdXQKKworU1VQUE9SVFNfU0VIX0VYQ0VQVElPTlMgPSAnVGhyb3dzU2VoRXhj
ZXB0aW9uJyBpbiBURVNUX0xJU1QKKworaWYgU1VQUE9SVFNfU0VIX0VYQ0VQVElPTlM6CisgIEJJ
TkFSWV9PVVRQVVQgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0VYRV9QQVRIXSwgZW52
PWVudmlyb24pLm91dHB1dAorCitFWF9CSU5BUllfT1VUUFVUID0gZ3Rlc3RfdGVzdF91dGlscy5T
dWJwcm9jZXNzKAorICAgIFtFWF9FWEVfUEFUSF0sIGVudj1lbnZpcm9uKS5vdXRwdXQKKworCisj
IFRoZSB0ZXN0cy4KK2lmIFNVUFBPUlRTX1NFSF9FWENFUFRJT05TOgorICAjIHB5bGludDpkaXNh
YmxlLW1zZz1DNjMwMgorICBjbGFzcyBDYXRjaFNlaEV4Y2VwdGlvbnNUZXN0KGd0ZXN0X3Rlc3Rf
dXRpbHMuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIGV4Y2VwdGlvbi1jYXRjaGluZyBiZWhhdmlv
ci4iIiIKKworCisgICAgZGVmIFRlc3RTZWhFeGNlcHRpb25zKHNlbGYsIHRlc3Rfb3V0cHV0KToK
KyAgICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24g
JworICAgICAgICAgICAgICAgICAgICdpbiB0aGUgdGVzdCBmaXh0dXJlXCdzIGNvbnN0cnVjdG9y
JworICAgICAgICAgICAgICAgICAgIGluIHRlc3Rfb3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRf
KCdTRUggZXhjZXB0aW9uIHdpdGggY29kZSAweDJhIHRocm93biAnCisgICAgICAgICAgICAgICAg
ICAgJ2luIHRoZSB0ZXN0IGZpeHR1cmVcJ3MgZGVzdHJ1Y3RvcicKKyAgICAgICAgICAgICAgICAg
ICBpbiB0ZXN0X291dHB1dCkKKyAgICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3aXRo
IGNvZGUgMHgyYSB0aHJvd24gaW4gU2V0VXBUZXN0Q2FzZSgpJworICAgICAgICAgICAgICAgICAg
IGluIHRlc3Rfb3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGgg
Y29kZSAweDJhIHRocm93biBpbiBUZWFyRG93blRlc3RDYXNlKCknCisgICAgICAgICAgICAgICAg
ICAgaW4gdGVzdF9vdXRwdXQpCisgICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0
aCBjb2RlIDB4MmEgdGhyb3duIGluIFNldFVwKCknCisgICAgICAgICAgICAgICAgICAgaW4gdGVz
dF9vdXRwdXQpCisgICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4
MmEgdGhyb3duIGluIFRlYXJEb3duKCknCisgICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRw
dXQpCisgICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhy
b3duIGluIHRoZSB0ZXN0IGJvZHknCisgICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQp
CisKKyAgICBkZWYgdGVzdENhdGNoZXNTZWhFeGNlcHRpb25zV2l0aEN4eEV4Y2VwdGlvbnNFbmFi
bGVkKHNlbGYpOgorICAgICAgc2VsZi5UZXN0U2VoRXhjZXB0aW9ucyhFWF9CSU5BUllfT1VUUFVU
KQorCisgICAgZGVmIHRlc3RDYXRjaGVzU2VoRXhjZXB0aW9uc1dpdGhDeHhFeGNlcHRpb25zRGlz
YWJsZWQoc2VsZik6CisgICAgICBzZWxmLlRlc3RTZWhFeGNlcHRpb25zKEJJTkFSWV9PVVRQVVQp
CisKKworY2xhc3MgQ2F0Y2hDeHhFeGNlcHRpb25zVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RD
YXNlKToKKyAgIiIiVGVzdHMgQysrIGV4Y2VwdGlvbi1jYXRjaGluZyBiZWhhdmlvci4KKworICAg
ICBUZXN0cyBpbiB0aGlzIHRlc3QgY2FzZSB2ZXJpZnkgdGhhdDoKKyAgICAgKiBDKysgZXhjZXB0
aW9ucyBhcmUgY2F1Z2h0IGFuZCBsb2dnZWQgYXMgQysrIChub3QgU0VIKSBleGNlcHRpb25zCisg
ICAgICogRXhjZXB0aW9uIHRocm93biBhZmZlY3QgdGhlIHJlbWFpbmRlciBvZiB0aGUgdGVzdCB3
b3JrIGZsb3cgaW4gdGhlCisgICAgICAgZXhwZWN0ZWQgbWFubmVyLgorICAiIiIKKworICBkZWYg
dGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5GaXh0dXJlQ29uc3RydWN0b3Ioc2VsZik6CisgICAg
c2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gJworICAgICAgICAg
ICAgICAgICAnIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iIHRocm93biAnCisgICAgICAgICAgICAg
ICAgICdpbiB0aGUgdGVzdCBmaXh0dXJlXCdzIGNvbnN0cnVjdG9yJworICAgICAgICAgICAgICAg
ICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygndW5leHBlY3RlZCcgbm90
IGluIEVYX0JJTkFSWV9PVVRQVVQsCisgICAgICAgICAgICAgICAgICdUaGlzIGZhaWx1cmUgYmVs
b25ncyBpbiB0aGlzIHRlc3Qgb25seSBpZiAnCisgICAgICAgICAgICAgICAgICciQ3h4RXhjZXB0
aW9uSW5Db25zdHJ1Y3RvclRlc3QiIChubyBxdW90ZXMpICcKKyAgICAgICAgICAgICAgICAgJ2Fw
cGVhcnMgb24gdGhlIHNhbWUgbGluZSBhcyB3b3JkcyAiY2FsbGVkIHVuZXhwZWN0ZWRseSInKQor
CisgIGlmICgnQ3h4RXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdC5UaHJvd3NFeGNlcHRpb25JbkRl
c3RydWN0b3InIGluCisgICAgICBFWF9CSU5BUllfT1VUUFVUKToKKworICAgIGRlZiB0ZXN0Q2F0
Y2hlc0N4eEV4Y2VwdGlvbnNJbkZpeHR1cmVEZXN0cnVjdG9yKHNlbGYpOgorICAgICAgc2VsZi5h
c3NlcnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gJworICAgICAgICAgICAgICAg
ICAgICciU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIgdGhyb3duICcKKyAgICAgICAgICAgICAgICAg
ICAnaW4gdGhlIHRlc3QgZml4dHVyZVwncyBkZXN0cnVjdG9yJworICAgICAgICAgICAgICAgICAg
IGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbklu
RGVzdHJ1Y3RvclRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAnCisgICAgICAgICAgICAgICAgICAg
J2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09V
VFBVVCkKKworICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5TZXRVcFRlc3RDYXNlKHNl
bGYpOgorICAgIHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICJT
dGFuZGFyZCBDKysgZXhjZXB0aW9uIicKKyAgICAgICAgICAgICAgICAgJyB0aHJvd24gaW4gU2V0
VXBUZXN0Q2FzZSgpJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAg
IHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Q6OlRlYXJEb3duVGVz
dENhc2UoKSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAg
ICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhj
ZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCBjb25zdHJ1Y3RvciAnCisgICAgICAgICAgICAgICAg
ICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VU
UFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCBk
ZXN0cnVjdG9yICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAg
ICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhF
eGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0OjpTZXRVcCgpICcKKyAgICAgICAgICAgICAgICAg
J2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQ
VVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0OjpU
ZWFyRG93bigpICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAg
ICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhF
eGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0IHRlc3QgYm9keSAnCisgICAgICAgICAgICAgICAg
ICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VU
UFVUKQorCisgIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJblRlYXJEb3duVGVzdENhc2Uo
c2VsZik6CisgICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24g
IlN0YW5kYXJkIEMrKyBleGNlcHRpb24iJworICAgICAgICAgICAgICAgICAnIHRocm93biBpbiBU
ZWFyRG93blRlc3RDYXNlKCknCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQp
CisKKyAgZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luU2V0VXAoc2VsZik6CisgICAgc2Vs
Zi5hc3NlcnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gIlN0YW5kYXJkIEMrKyBl
eGNlcHRpb24iJworICAgICAgICAgICAgICAgICAnIHRocm93biBpbiBTZXRVcCgpJworICAgICAg
ICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhj
ZXB0aW9uSW5TZXRVcFRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAnCisgICAgICAgICAgICAgICAg
ICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VU
UFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QgZGVzdHJ1Y3Rv
ciAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAg
ICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9u
SW5TZXRVcFRlc3Q6OlRlYXJEb3duKCkgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4
cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxm
LmFzc2VydF8oJ3VuZXhwZWN0ZWQnIG5vdCBpbiBFWF9CSU5BUllfT1VUUFVULAorICAgICAgICAg
ICAgICAgICAnVGhpcyBmYWlsdXJlIGJlbG9uZ3MgaW4gdGhpcyB0ZXN0IG9ubHkgaWYgJworICAg
ICAgICAgICAgICAgICAnIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0IiAobm8gcXVvdGVzKSAnCisg
ICAgICAgICAgICAgICAgICdhcHBlYXJzIG9uIHRoZSBzYW1lIGxpbmUgYXMgd29yZHMgImNhbGxl
ZCB1bmV4cGVjdGVkbHkiJykKKworICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5UZWFy
RG93bihzZWxmKToKKyAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlw
dGlvbiAiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiInCisgICAgICAgICAgICAgICAgICcgdGhyb3du
IGluIFRlYXJEb3duKCknCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisg
ICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdDo6VGVhckRvd25UZXN0
Q2FzZSgpICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAg
ICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNl
cHRpb25JblRlYXJEb3duVGVzdCBkZXN0cnVjdG9yICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxl
ZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisK
KyAgZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luVGVzdEJvZHkoc2VsZik6CisgICAgc2Vs
Zi5hc3NlcnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gIlN0YW5kYXJkIEMrKyBl
eGNlcHRpb24iJworICAgICAgICAgICAgICAgICAnIHRocm93biBpbiB0aGUgdGVzdCBib2R5Jwor
ICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0Xygn
Q3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAnCisgICAgICAg
ICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9C
SU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRl
c3QgZGVzdHJ1Y3RvciAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJwor
ICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0Xygn
Q3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duKCkgJworICAgICAgICAgICAgICAg
ICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09V
VFBVVCkKKworICBkZWYgdGVzdENhdGNoZXNOb25TdGRDeHhFeGNlcHRpb25zKHNlbGYpOgorICAg
IHNlbGYuYXNzZXJ0XygnVW5rbm93biBDKysgZXhjZXB0aW9uIHRocm93biBpbiB0aGUgdGVzdCBi
b2R5JworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorCisgIGRlZiB0ZXN0
VW5oYW5kbGVkQ3h4RXhjZXB0aW9uc0Fib3J0VGhlUHJvZ3JhbShzZWxmKToKKyAgICAjIEZpbHRl
cnMgb3V0IFNFSCBleGNlcHRpb24gdGVzdHMgb24gV2luZG93cy4gVW5oYW5kbGVkIFNFSCBleGNl
cHRpb25zCisgICAgIyBjYXVzZSB0ZXN0cyB0byBzaG93IHBvcC11cCB3aW5kb3dzIHRoZXJlLgor
ICAgIEZJVExFUl9PVVRfU0VIX1RFU1RTX0ZMQUcgPSBGSUxURVJfRkxBRyArICc9LSpTZWgqJwor
ICAgICMgQnkgZGVmYXVsdCwgR29vZ2xlIFRlc3QgZG9lc24ndCBjYXRjaCB0aGUgZXhjZXB0aW9u
cy4KKyAgICB1bmNhdWdodF9leGNlcHRpb25zX2V4X2JpbmFyeV9vdXRwdXQgPSBndGVzdF90ZXN0
X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgICAgIFtFWF9FWEVfUEFUSCwKKyAgICAgICAgIE5PX0NB
VENIX0VYQ0VQVElPTlNfRkxBRywKKyAgICAgICAgIEZJVExFUl9PVVRfU0VIX1RFU1RTX0ZMQUdd
LAorICAgICAgICBlbnY9ZW52aXJvbikub3V0cHV0CisKKyAgICBzZWxmLmFzc2VydF8oJ1VuaGFu
ZGxlZCBDKysgZXhjZXB0aW9uIHRlcm1pbmF0aW5nIHRoZSBwcm9ncmFtJworICAgICAgICAgICAg
ICAgICBpbiB1bmNhdWdodF9leGNlcHRpb25zX2V4X2JpbmFyeV9vdXRwdXQpCisgICAgc2VsZi5h
c3NlcnRfKCd1bmV4cGVjdGVkJyBub3QgaW4gdW5jYXVnaHRfZXhjZXB0aW9uc19leF9iaW5hcnlf
b3V0cHV0KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRp
bHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5
ZGFlNzAwMzBhMzNhZWFiYTA2MGFhZWY5N2E5NzlhOGY1ODA0YWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9u
cy10ZXN0Xy5jYwpAQCAtMCwwICsxLDMxMSBAQAorLy8gQ29weXJpZ2h0IDIwMTAsIEdvb2dsZSBJ
bmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gVGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZi4g
VGVzdHMgaW4gdGhpcyBmaWxlIHRocm93IEMrKyBvciBTRUgKKy8vIGV4Y2VwdGlvbnMsIGFuZCB0
aGUgb3V0cHV0IGlzIHZlcmlmaWVkIGJ5CisvLyBnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMt
dGVzdC5weS4KKworI2luY2x1ZGUgPHN0ZGlvLmg+ICAvLyBOT0xJTlQKKyNpbmNsdWRlIDxzdGRs
aWIuaD4gIC8vIEZvciBleGl0KCkuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisjaWYg
R1RFU1RfSEFTX1NFSAorIyBpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKworI2lmIEdURVNU
X0hBU19FWENFUFRJT05TCisjIGluY2x1ZGUgPGV4Y2VwdGlvbj4gIC8vIEZvciBzZXRfdGVybWlu
YXRlKCkuCisjIGluY2x1ZGUgPHN0ZGV4Y2VwdD4KKyNlbmRpZgorCit1c2luZyB0ZXN0aW5nOjpU
ZXN0OworCisjaWYgR1RFU1RfSEFTX1NFSAorCitjbGFzcyBTZWhFeGNlcHRpb25JbkNvbnN0cnVj
dG9yVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIFNlaEV4Y2VwdGlvbkluQ29uc3Ry
dWN0b3JUZXN0KCkgeyBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7IH0KK307CisKK1RF
U1RfRihTZWhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5Db25z
dHJ1Y3Rvcikge30KKworY2xhc3MgU2VoRXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCA6IHB1Ymxp
YyBUZXN0IHsKKyBwdWJsaWM6CisgIH5TZWhFeGNlcHRpb25JbkRlc3RydWN0b3JUZXN0KCkgeyBS
YWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7IH0KK307CisKK1RFU1RfRihTZWhFeGNlcHRp
b25JbkRlc3RydWN0b3JUZXN0LCBUaHJvd3NFeGNlcHRpb25JbkRlc3RydWN0b3IpIHt9CisKK2Ns
YXNzIFNlaEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVi
bGljOgorICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgeyBSYWlzZUV4Y2VwdGlvbig0Miwg
MCwgMCwgTlVMTCk7IH0KK307CisKK1RFU1RfRihTZWhFeGNlcHRpb25JblNldFVwVGVzdENhc2VU
ZXN0LCBUaHJvd3NFeGNlcHRpb25JblNldFVwVGVzdENhc2UpIHt9CisKK2NsYXNzIFNlaEV4Y2Vw
dGlvbkluVGVhckRvd25UZXN0Q2FzZVRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBz
dGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeyBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwg
TlVMTCk7IH0KK307CisKK1RFU1RfRihTZWhFeGNlcHRpb25JblRlYXJEb3duVGVzdENhc2VUZXN0
LCBUaHJvd3NFeGNlcHRpb25JblRlYXJEb3duVGVzdENhc2UpIHt9CisKK2NsYXNzIFNlaEV4Y2Vw
dGlvbkluU2V0VXBUZXN0IDogcHVibGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB2
b2lkIFNldFVwKCkgeyBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7IH0KK307CisKK1RF
U1RfRihTZWhFeGNlcHRpb25JblNldFVwVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5TZXRVcCkge30K
KworY2xhc3MgU2VoRXhjZXB0aW9uSW5UZWFyRG93blRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHJv
dGVjdGVkOgorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7IFJhaXNlRXhjZXB0aW9uKDQyLCAw
LCAwLCBOVUxMKTsgfQorfTsKKworVEVTVF9GKFNlaEV4Y2VwdGlvbkluVGVhckRvd25UZXN0LCBU
aHJvd3NFeGNlcHRpb25JblRlYXJEb3duKSB7fQorCitURVNUKFNlaEV4Y2VwdGlvblRlc3QsIFRo
cm93c1NlaEV4Y2VwdGlvbikgeworICBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7Cit9
CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAorCisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMK
KworY2xhc3MgQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgVGVzdCB7Cisg
cHVibGljOgorICBDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCgpIHsKKyAgICAvLyBXaXRo
b3V0IHRoaXMgbWFjcm8gVkMrKyBjb21wbGFpbnMgYWJvdXQgdW5yZWFjaGFibGUgY29kZSBhdCB0
aGUgZW5kIG9mCisgICAgLy8gdGhlIGNvbnN0cnVjdG9yLgorICAgIEdURVNUX1NVUFBSRVNTX1VO
UkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oCisgICAgICAgIHRocm93IHN0ZDo6cnVudGlt
ZV9lcnJvcigiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIpKTsKKyAgfQorCisgIHN0YXRpYyB2b2lk
IFRlYXJEb3duVGVzdENhc2UoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhF
eGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIKKyAgICAgICAg
ICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIH5DeHhF
eGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCgpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJDeHhF
eGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCBkZXN0cnVjdG9yICIKKyAgICAgICAgICAgICAgICAg
IDw8ICJjYWxsZWQgdW5leHBlY3RlZGx5LiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgU2V0VXAo
KSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Q6
OlNldFVwKCkgIgorICAgICAgICAgICAgICAgICAgPDwgImNhbGxlZCB1bmV4cGVjdGVkbHkuIjsK
KyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8
ICJDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdDo6VGVhckRvd24oKSAiCisgICAgICAgICAg
ICAgICAgICA8PCAiY2FsbGVkIHVuZXhwZWN0ZWRseS4iOworICB9Cit9OworCitURVNUX0YoQ3h4
RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QsIFRocm93c0V4Y2VwdGlvbkluQ29uc3RydWN0b3Ip
IHsKKyAgQUREX0ZBSUxVUkUoKSA8PCAiQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QgdGVz
dCBib2R5ICIKKyAgICAgICAgICAgICAgICA8PCAiY2FsbGVkIHVuZXhwZWN0ZWRseS4iOworfQor
CisvLyBFeGNlcHRpb25zIGluIGRlc3RydWN0b3JzIGFyZSBub3Qgc3VwcG9ydGVkIGluIEMrKzEx
LgorI2lmICFHVEVTVF9MQU5HX0NYWDExCitjbGFzcyBDeHhFeGNlcHRpb25JbkRlc3RydWN0b3JU
ZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0
Q2FzZSgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluRGVz
dHJ1Y3RvclRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMg
ZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICB+Q3h4RXhjZXB0aW9uSW5EZXN0
cnVjdG9yVGVzdCgpIHsKKyAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5J
TkdfQkVMT1dfKAorICAgICAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMr
KyBleGNlcHRpb24iKSk7CisgIH0KK307CisKK1RFU1RfRihDeHhFeGNlcHRpb25JbkRlc3RydWN0
b3JUZXN0LCBUaHJvd3NFeGNlcHRpb25JbkRlc3RydWN0b3IpIHt9CisjZW5kaWYgIC8vIEMrKzEx
IG1vZGUKKworY2xhc3MgQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCA6IHB1YmxpYyBU
ZXN0IHsKKyBwdWJsaWM6CisgIEN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QoKSB7Cisg
ICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VU
ZXN0IGNvbnN0cnVjdG9yICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOwor
ICB9CisKKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKKyAgICB0aHJvdyBzdGQ6OnJ1
bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iKTsKKyAgfQorCisgIHN0YXRpYyB2
b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJD
eHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgIgorICAg
ICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworIHByb3RlY3RlZDoKKyAg
fkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QoKSB7CisgICAgcHJpbnRmKCIlcyIsCisg
ICAgICAgICAgICJDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0IGRlc3RydWN0b3IgIgor
ICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25J
blNldFVwVGVzdENhc2VUZXN0OjpTZXRVcCgpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBl
Y3RlZC5cbiIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIHByaW50
ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6VGVh
ckRvd24oKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorfTsK
KworVEVTVF9GKEN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QsIFRocm93c0V4Y2VwdGlv
bkluU2V0VXBUZXN0Q2FzZSkgeworICBwcmludGYoIiVzIiwKKyAgICAgICAgICJDeHhFeGNlcHRp
b25JblNldFVwVGVzdENhc2VUZXN0IHRlc3QgYm9keSAiCisgICAgICAgICAiY2FsbGVkIGFzIGV4
cGVjdGVkLlxuIik7Cit9CisKK2NsYXNzIEN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0Q2FzZVRl
c3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RD
YXNlKCkgeworICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcigiU3RhbmRhcmQgQysrIGV4Y2Vw
dGlvbiIpOworICB9Cit9OworCitURVNUX0YoQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNl
VGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNlKSB7fQorCitjbGFzcyBDeHhF
eGNlcHRpb25JblNldFVwVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2
b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJD
eHhFeGNlcHRpb25JblNldFVwVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIKKyAgICAgICAgICAg
ImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIH5DeHhFeGNl
cHRpb25JblNldFVwVGVzdCgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4
Y2VwdGlvbkluU2V0VXBUZXN0IGRlc3RydWN0b3IgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4
cGVjdGVkLlxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IHRocm93IHN0ZDo6
cnVudGltZV9lcnJvcigiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIpOyB9CisKKyAgdmlydHVhbCB2
b2lkIFRlYXJEb3duKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0
aW9uSW5TZXRVcFRlc3Q6OlRlYXJEb3duKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVj
dGVkLlxuIik7CisgIH0KK307CisKK1RFU1RfRihDeHhFeGNlcHRpb25JblNldFVwVGVzdCwgVGhy
b3dzRXhjZXB0aW9uSW5TZXRVcCkgeworICBBRERfRkFJTFVSRSgpIDw8ICJDeHhFeGNlcHRpb25J
blNldFVwVGVzdCB0ZXN0IGJvZHkgIgorICAgICAgICAgICAgICAgIDw8ICJjYWxsZWQgdW5leHBl
Y3RlZGx5LiI7Cit9CisKK2NsYXNzIEN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0IDogcHVibGlj
IFRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAg
ICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0OjpU
ZWFyRG93blRlc3RDYXNlKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7
CisgIH0KKworIHByb3RlY3RlZDoKKyAgfkN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0KCkgewor
ICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3Qg
ZGVzdHJ1Y3RvciAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQor
CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJy
b3IoIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iKTsKKyAgfQorfTsKKworVEVTVF9GKEN4eEV4Y2Vw
dGlvbkluVGVhckRvd25UZXN0LCBUaHJvd3NFeGNlcHRpb25JblRlYXJEb3duKSB7fQorCitjbGFz
cyBDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6Cisg
IHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAg
ICAgICAgICJDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIK
KyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyBwcm90ZWN0ZWQ6
CisgIH5DeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdCgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAg
ICAgICAgICAgIkN4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0IGRlc3RydWN0b3IgIgorICAgICAg
ICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVh
ckRvd24oKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblRl
c3RCb2R5VGVzdDo6VGVhckRvd24oKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQu
XG4iKTsKKyAgfQorfTsKKworVEVTVF9GKEN4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0LCBUaHJv
d3NTdGRDeHhFeGNlcHRpb24pIHsKKyAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFy
ZCBDKysgZXhjZXB0aW9uIik7Cit9CisKK1RFU1QoQ3h4RXhjZXB0aW9uVGVzdCwgVGhyb3dzTm9u
U3RkQ3h4RXhjZXB0aW9uKSB7CisgIHRocm93ICJDLXN0cmluZyI7Cit9CisKKy8vIFRoaXMgdGVy
bWluYXRlIGhhbmRsZXIgYWJvcnRzIHRoZSBwcm9ncmFtIHVzaW5nIGV4aXQoKSByYXRoZXIgdGhh
biBhYm9ydCgpLgorLy8gVGhpcyBhdm9pZHMgc2hvd2luZyBwb3AtdXBzIG9uIFdpbmRvd3Mgc3lz
dGVtcyBhbmQgY29yZSBkdW1wcyBvbiBVbml4LWxpa2UKKy8vIG9uZXMuCit2b2lkIFRlcm1pbmF0
ZUhhbmRsZXIoKSB7CisgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsICJVbmhhbmRsZWQgQysrIGV4
Y2VwdGlvbiB0ZXJtaW5hdGluZyB0aGUgcHJvZ3JhbS4iKTsKKyAgZmZsdXNoKE5VTEwpOworICBl
eGl0KDMpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCisKK2ludCBtYWlu
KGludCBhcmdjLCBjaGFyKiogYXJndikgeworI2lmIEdURVNUX0hBU19FWENFUFRJT05TCisgIHN0
ZDo6c2V0X3Rlcm1pbmF0ZSgmVGVybWluYXRlSGFuZGxlcik7CisjZW5kaWYKKyAgdGVzdGluZzo6
SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNv
bG9yLXRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY29s
b3ItdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2I3Yzk5OTBiY2Y0NGE2NTAzNmMyNTNlN2EwMTg0NWFm
OWMzNzE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
b29nbGV0ZXN0LWNvbG9yLXRlc3QucHkKQEAgLTAsMCArMSwxMjcgQEAKKyMhL3Vzci9iaW4vZW52
IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRp
c3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRl
c3QgY29ycmVjdGx5IGRldGVybWluZXMgd2hldGhlciB0byB1c2UgY29sb3JzLiIiIgorCitpbXBv
cnQgb3MKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKK0lTX1dJTkRPV1MgPSBvcy5uYW1lID09
ICdudCcKKworQ09MT1JfRU5WX1ZBUiA9ICdHVEVTVF9DT0xPUicKK0NPTE9SX0ZMQUcgPSAnZ3Rl
c3RfY29sb3InCitDT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBh
dGgoJ2dvb2dsZXRlc3QtY29sb3ItdGVzdF8nKQorCisKK2RlZiBTZXRFbnZWYXIoZW52X3Zhciwg
dmFsdWUpOgorICAiIiJTZXRzIHRoZSBlbnYgdmFyaWFibGUgdG8gJ3ZhbHVlJzsgdW5zZXRzIGl0
IHdoZW4gJ3ZhbHVlJyBpcyBOb25lLiIiIgorCisgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAg
IG9zLmVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQorICBlbGlmIGVudl92YXIgaW4gb3MuZW52aXJv
bjoKKyAgICBkZWwgb3MuZW52aXJvbltlbnZfdmFyXQorCisKK2RlZiBVc2VzQ29sb3IodGVybSwg
Y29sb3JfZW52X3ZhciwgY29sb3JfZmxhZyk6CisgICIiIlJ1bnMgZ29vZ2xldGVzdC1jb2xvci10
ZXN0XyBhbmQgcmV0dXJucyBpdHMgZXhpdCBjb2RlLiIiIgorCisgIFNldEVudlZhcignVEVSTScs
IHRlcm0pCisgIFNldEVudlZhcihDT0xPUl9FTlZfVkFSLCBjb2xvcl9lbnZfdmFyKQorCisgIGlm
IGNvbG9yX2ZsYWcgaXMgTm9uZToKKyAgICBhcmdzID0gW10KKyAgZWxzZToKKyAgICBhcmdzID0g
WyctLSVzPSVzJyAlIChDT0xPUl9GTEFHLCBjb2xvcl9mbGFnKV0KKyAgcCA9IGd0ZXN0X3Rlc3Rf
dXRpbHMuU3VicHJvY2VzcyhbQ09NTUFORF0gKyBhcmdzKQorICByZXR1cm4gbm90IHAuZXhpdGVk
IG9yIHAuZXhpdF9jb2RlCisKKworY2xhc3MgR1Rlc3RDb2xvclRlc3QoZ3Rlc3RfdGVzdF91dGls
cy5UZXN0Q2FzZSk6CisgIGRlZiB0ZXN0Tm9FbnZWYXJOb0ZsYWcoc2VsZik6CisgICAgIiIiVGVz
dHMgdGhlIGNhc2Ugd2hlbiB0aGVyZSdzIG5laXRoZXIgR1RFU1RfQ09MT1Igbm9yIC0tZ3Rlc3Rf
Y29sb3IuIiIiCisKKyAgICBpZiBub3QgSVNfV0lORE9XUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyhu
b3QgVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgTm9uZSkpCisgICAgICBzZWxmLmFzc2VydF8obm90
IFVzZXNDb2xvcignZW1hY3MnLCBOb25lLCBOb25lKSkKKyAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qg
VXNlc0NvbG9yKCd4dGVybS1tb25vJywgTm9uZSwgTm9uZSkpCisgICAgICBzZWxmLmFzc2VydF8o
bm90IFVzZXNDb2xvcigndW5rbm93bicsIE5vbmUsIE5vbmUpKQorICAgICAgc2VsZi5hc3NlcnRf
KG5vdCBVc2VzQ29sb3IoTm9uZSwgTm9uZSwgTm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKFVzZXND
b2xvcignbGludXgnLCBOb25lLCBOb25lKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdj
eWd3aW4nLCBOb25lLCBOb25lKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybScs
IE5vbmUsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywg
Tm9uZSwgTm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tMjU2Y29sb3In
LCBOb25lLCBOb25lKSkKKworICBkZWYgdGVzdEZsYWdPbmx5KHNlbGYpOgorICAgICIiIlRlc3Rz
IHRoZSBjYXNlIHdoZW4gdGhlcmUncyAtLWd0ZXN0X2NvbG9yIGJ1dCBub3QgR1RFU1RfQ09MT1Iu
IiIiCisKKyAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcignZHVtYicsIE5vbmUsICdubycp
KQorICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsIE5vbmUsICdu
bycpKQorICAgIGlmIG5vdCBJU19XSU5ET1dTOgorICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2Vz
Q29sb3IoJ2VtYWNzJywgTm9uZSwgJ2F1dG8nKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9y
KCd4dGVybScsIE5vbmUsICdhdXRvJykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVt
YicsIE5vbmUsICd5ZXMnKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybScsIE5v
bmUsICd5ZXMnKSkKKworICBkZWYgdGVzdEVudlZhck9ubHkoc2VsZik6CisgICAgIiIiVGVzdHMg
dGhlIGNhc2Ugd2hlbiB0aGVyZSdzIEdURVNUX0NPTE9SIGJ1dCBub3QgLS1ndGVzdF9jb2xvci4i
IiIKKworICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdkdW1iJywgJ25vJywgTm9uZSkp
CisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywgJ25vJywgTm9u
ZSkpCisgICAgaWYgbm90IElTX1dJTkRPV1M6CisgICAgICBzZWxmLmFzc2VydF8obm90IFVzZXND
b2xvcignZHVtYicsICdhdXRvJywgTm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcign
eHRlcm0tY29sb3InLCAnYXV0bycsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3Io
J2R1bWInLCAneWVzJywgTm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0t
Y29sb3InLCAneWVzJywgTm9uZSkpCisKKyAgZGVmIHRlc3RFbnZWYXJBbmRGbGFnKHNlbGYpOgor
ICAgICIiIlRlc3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUgYXJlIGJvdGggR1RFU1RfQ09MT1IgYW5k
IC0tZ3Rlc3RfY29sb3IuIiIiCisKKyAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRl
cm0tY29sb3InLCAnbm8nLCAnbm8nKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1i
JywgJ25vJywgJ3llcycpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9y
JywgJ25vJywgJ2F1dG8nKSkKKworICBkZWYgdGVzdEFsaWFzZXNPZlllc0FuZE5vKHNlbGYpOgor
ICAgICIiIlRlc3RzIHVzaW5nIGFsaWFzZXMgaW4gc3BlY2lmeWluZyAtLWd0ZXN0X2NvbG9yLiIi
IgorCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUsICd0cnVlJykpCisg
ICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUsICdZRVMnKSkKKyAgICBzZWxm
LmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ1QnKSkKKyAgICBzZWxmLmFzc2VydF8o
VXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJzEnKSkKKworICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNl
c0NvbG9yKCd4dGVybScsIE5vbmUsICdmJykpCisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29s
b3IoJ3h0ZXJtJywgTm9uZSwgJ2ZhbHNlJykpCisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29s
b3IoJ3h0ZXJtJywgTm9uZSwgJzAnKSkKKyAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcign
eHRlcm0nLCBOb25lLCAndW5rbm93bicpKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY29sb3ItdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY29sb3ItdGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjIwYTNh
MDA1NDhmZGIxZTkzNWEzZGExNmRmNTYzYTUwZTE3OWE4YQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1jb2xvci10ZXN0Xy5jYwpAQCAt
MCwwICsxLDYyIEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKworLy8gQSBoZWxwZXIgcHJvZ3JhbSBmb3IgdGVzdGluZyBob3cgR29vZ2xlIFRlc3QgZGV0
ZXJtaW5lcyB3aGV0aGVyIHRvIHVzZQorLy8gY29sb3JzIGluIHRoZSBvdXRwdXQuICBJdCBwcmlu
dHMgIllFUyIgYW5kIHJldHVybnMgMSBpZiBHb29nbGUgVGVzdAorLy8gZGVjaWRlcyB0byB1c2Ug
Y29sb3JzLCBhbmQgcHJpbnRzICJOTyIgYW5kIHJldHVybnMgMCBvdGhlcndpc2UuCisKKyNpbmNs
dWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJzcmMv
Z3Rlc3QtaW50ZXJuYWwtaW5sLmgiCisKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaG91bGRV
c2VDb2xvcjsKKworLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUg
VW5pdFRlc3Qgc2luZ2xldG9uIGlzCisvLyBjcmVhdGVkIGJlZm9yZSBtYWluKCkgaXMgZW50ZXJl
ZCwgYW5kIHRodXMgdGhhdCBTaG91bGRVc2VDb2xvcigpCisvLyB3b3JrcyB0aGUgc2FtZSB3YXkg
YXMgaW4gYSByZWFsIEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QuICBXZSBkb24ndCBhY3R1YWwKKy8v
IHJ1biB0aGUgVEVTVCBpdHNlbGYuCitURVNUKEdUZXN0Q29sb3JUZXN0LCBEdW1teSkgeworfQor
CitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgdGVzdGluZzo6SW5pdEdvb2ds
ZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIGlmIChTaG91bGRVc2VDb2xvcih0cnVlKSkgeworICAg
IC8vIEdvb2dsZSBUZXN0IGRlY2lkZXMgdG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0IChhc3N1
bWluZyBpdAorICAgIC8vIGdvZXMgdG8gYSBUVFkpLgorICAgIHByaW50ZigiWUVTXG4iKTsKKyAg
ICByZXR1cm4gMTsKKyAgfSBlbHNlIHsKKyAgICAvLyBHb29nbGUgVGVzdCBkZWNpZGVzIG5vdCB0
byB1c2UgY29sb3JzIGluIHRoZSBvdXRwdXQuCisgICAgcHJpbnRmKCJOT1xuIik7CisgICAgcmV0
dXJuIDA7CisgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z29vZ2xldGVzdC1kZWF0aC10ZXN0LXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3QtZGVhdGgtdGVzdC10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwYzMwMjZmYjU4
OTU2NjBhZDJjOWQ2NWZiZDk5YjVmYWY5YWQ0OGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZGVhdGgtdGVzdC10ZXN0LmNjCkBAIC0w
LDAgKzEsMTQyMyBAQAorLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0
OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8v
CisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisvLworLy8gVGVzdHMgZm9yIGRlYXRoIHRlc3RzLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QtZGVhdGgtdGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCIKKwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OkFsd2F5c0ZhbHNlOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWU7CisKKyNp
ZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKyMgIGluY2x1
ZGUgPGRpcmVjdC5oPiAgICAgICAgICAvLyBGb3IgY2hkaXIoKS4KKyMgZWxzZQorIyAgaW5jbHVk
ZSA8dW5pc3RkLmg+CisjICBpbmNsdWRlIDxzeXMvd2FpdC5oPiAgICAgICAgLy8gRm9yIHdhaXRw
aWQuCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKyMgaW5jbHVkZSA8bGltaXRzLmg+
CisjIGluY2x1ZGUgPHNpZ25hbC5oPgorIyBpbmNsdWRlIDxzdGRpby5oPgorCisjIGlmIEdURVNU
X09TX0xJTlVYCisjICBpbmNsdWRlIDxzeXMvdGltZS5oPgorIyBlbmRpZiAgLy8gR1RFU1RfT1Nf
TElOVVgKKworIyBpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKyMgaW5jbHVkZSAic3JjL2d0
ZXN0LWludGVybmFsLWlubC5oIgorCituYW1lc3BhY2UgcG9zaXggPSA6OnRlc3Rpbmc6OmludGVy
bmFsOjpwb3NpeDsKKwordXNpbmcgdGVzdGluZzo6TWVzc2FnZTsKK3VzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpEZWF0aFRlc3Q7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0RmFj
dG9yeTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpGaWxlUGF0aDsKK3VzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpHZXRMYXN0RXJybm9EZXNjcmlwdGlvbjsKK3VzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpHZXRVbml0VGVzdEltcGw7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SW5EZWF0aFRl
c3RDaGlsZDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpQYXJzZU5hdHVyYWxOdW1iZXI7CisK
K25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIEEgaGVscGVy
IGNsYXNzIHdob3NlIG9iamVjdHMgcmVwbGFjZSB0aGUgZGVhdGggdGVzdCBmYWN0b3J5IGZvciBh
CisvLyBzaW5nbGUgVW5pdFRlc3Qgb2JqZWN0IGR1cmluZyB0aGVpciBsaWZldGltZXMuCitjbGFz
cyBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSB7CisgcHVibGljOgorICBleHBsaWNpdCBSZXBsYWNl
RGVhdGhUZXN0RmFjdG9yeShEZWF0aFRlc3RGYWN0b3J5KiBuZXdfZmFjdG9yeSkKKyAgICAgIDog
dW5pdF90ZXN0X2ltcGxfKEdldFVuaXRUZXN0SW1wbCgpKSB7CisgICAgb2xkX2ZhY3RvcnlfID0g
dW5pdF90ZXN0X2ltcGxfLT5kZWF0aF90ZXN0X2ZhY3RvcnlfLnJlbGVhc2UoKTsKKyAgICB1bml0
X3Rlc3RfaW1wbF8tPmRlYXRoX3Rlc3RfZmFjdG9yeV8ucmVzZXQobmV3X2ZhY3RvcnkpOworICB9
CisKKyAgflJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KCkgeworICAgIHVuaXRfdGVzdF9pbXBsXy0+
ZGVhdGhfdGVzdF9mYWN0b3J5Xy5yZWxlYXNlKCk7CisgICAgdW5pdF90ZXN0X2ltcGxfLT5kZWF0
aF90ZXN0X2ZhY3RvcnlfLnJlc2V0KG9sZF9mYWN0b3J5Xyk7CisgIH0KKyBwcml2YXRlOgorICAv
LyBQcmV2ZW50cyBjb3B5aW5nIFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5IG9iamVjdHMuCisgIFJl
cGxhY2VEZWF0aFRlc3RGYWN0b3J5KGNvbnN0IFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5Jik7Cisg
IHZvaWQgb3BlcmF0b3I9KGNvbnN0IFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5Jik7CisKKyAgVW5p
dFRlc3RJbXBsKiB1bml0X3Rlc3RfaW1wbF87CisgIERlYXRoVGVzdEZhY3RvcnkqIG9sZF9mYWN0
b3J5XzsKK307CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIHRl
c3RpbmcKKwordm9pZCBEaWVXaXRoTWVzc2FnZShjb25zdCA6OnN0ZDo6c3RyaW5nJiBtZXNzYWdl
KSB7CisgIGZwcmludGYoc3RkZXJyLCAiJXMiLCBtZXNzYWdlLmNfc3RyKCkpOworICBmZmx1c2go
c3RkZXJyKTsgIC8vIE1ha2Ugc3VyZSB0aGUgdGV4dCBpcyBwcmludGVkIGJlZm9yZSB0aGUgcHJv
Y2VzcyBleGl0cy4KKworICAvLyBXZSBjYWxsIF9leGl0KCkgaW5zdGVhZCBvZiBleGl0KCksIGFz
IHRoZSBmb3JtZXIgaXMgYSBkaXJlY3QKKyAgLy8gc3lzdGVtIGNhbGwgYW5kIHRodXMgc2FmZXIg
aW4gdGhlIHByZXNlbmNlIG9mIHRocmVhZHMuICBleGl0KCkKKyAgLy8gd2lsbCBpbnZva2UgdXNl
ci1kZWZpbmVkIGV4aXQtaG9va3MsIHdoaWNoIG1heSBkbyBkYW5nZXJvdXMKKyAgLy8gdGhpbmdz
IHRoYXQgY29uZmxpY3Qgd2l0aCBkZWF0aCB0ZXN0cy4KKyAgLy8KKyAgLy8gU29tZSBjb21waWxl
cnMgY2FuIHJlY29nbml6ZSB0aGF0IF9leGl0KCkgbmV2ZXIgcmV0dXJucyBhbmQgaXNzdWUgdGhl
CisgIC8vICd1bnJlYWNoYWJsZSBjb2RlJyB3YXJuaW5nIGZvciBjb2RlIGZvbGxvd2luZyB0aGlz
IGZ1bmN0aW9uLCB1bmxlc3MKKyAgLy8gZm9vbGVkIGJ5IGEgZmFrZSBjb25kaXRpb24uCisgIGlm
IChBbHdheXNUcnVlKCkpCisgICAgX2V4aXQoMSk7Cit9CisKK3ZvaWQgRGllSW5zaWRlKGNvbnN0
IDo6c3RkOjpzdHJpbmcmIGZ1bmN0aW9uKSB7CisgIERpZVdpdGhNZXNzYWdlKCJkZWF0aCBpbnNp
ZGUgIiArIGZ1bmN0aW9uICsgIigpLiIpOworfQorCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3Rz
IHdvcmsuCisKK2NsYXNzIFRlc3RGb3JEZWF0aFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
CisgcHJvdGVjdGVkOgorICBUZXN0Rm9yRGVhdGhUZXN0KCkgOiBvcmlnaW5hbF9kaXJfKEZpbGVQ
YXRoOjpHZXRDdXJyZW50RGlyKCkpIHt9CisKKyAgdmlydHVhbCB+VGVzdEZvckRlYXRoVGVzdCgp
IHsKKyAgICBwb3NpeDo6Q2hEaXIob3JpZ2luYWxfZGlyXy5jX3N0cigpKTsKKyAgfQorCisgIC8v
IEEgc3RhdGljIG1lbWJlciBmdW5jdGlvbiB0aGF0J3MgZXhwZWN0ZWQgdG8gZGllLgorICBzdGF0
aWMgdm9pZCBTdGF0aWNNZW1iZXJGdW5jdGlvbigpIHsgRGllSW5zaWRlKCJTdGF0aWNNZW1iZXJG
dW5jdGlvbiIpOyB9CisKKyAgLy8gQSBtZXRob2Qgb2YgdGhlIHRlc3QgZml4dHVyZSB0aGF0IG1h
eSBkaWUuCisgIHZvaWQgTWVtYmVyRnVuY3Rpb24oKSB7CisgICAgaWYgKHNob3VsZF9kaWVfKQor
ICAgICAgRGllSW5zaWRlKCJNZW1iZXJGdW5jdGlvbiIpOworICB9CisKKyAgLy8gVHJ1ZSBpZmYg
TWVtYmVyRnVuY3Rpb24oKSBzaG91bGQgZGllLgorICBib29sIHNob3VsZF9kaWVfOworICBjb25z
dCBGaWxlUGF0aCBvcmlnaW5hbF9kaXJfOworfTsKKworLy8gQSBjbGFzcyB3aXRoIGEgbWVtYmVy
IGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KK2NsYXNzIE1heURpZSB7CisgcHVibGljOgorICBleHBs
aWNpdCBNYXlEaWUoYm9vbCBzaG91bGRfZGllKSA6IHNob3VsZF9kaWVfKHNob3VsZF9kaWUpIHt9
CisKKyAgLy8gQSBtZW1iZXIgZnVuY3Rpb24gdGhhdCBtYXkgZGllLgorICB2b2lkIE1lbWJlckZ1
bmN0aW9uKCkgY29uc3QgeworICAgIGlmIChzaG91bGRfZGllXykKKyAgICAgIERpZUluc2lkZSgi
TWF5RGllOjpNZW1iZXJGdW5jdGlvbiIpOworICB9CisKKyBwcml2YXRlOgorICAvLyBUcnVlIGlm
ZiBNZW1iZXJGdW5jdGlvbigpIHNob3VsZCBkaWUuCisgIGJvb2wgc2hvdWxkX2RpZV87Cit9Owor
CisvLyBBIGdsb2JhbCBmdW5jdGlvbiB0aGF0J3MgZXhwZWN0ZWQgdG8gZGllLgordm9pZCBHbG9i
YWxGdW5jdGlvbigpIHsgRGllSW5zaWRlKCJHbG9iYWxGdW5jdGlvbiIpOyB9CisKKy8vIEEgbm9u
LXZvaWQgZnVuY3Rpb24gdGhhdCdzIGV4cGVjdGVkIHRvIGRpZS4KK2ludCBOb25Wb2lkRnVuY3Rp
b24oKSB7CisgIERpZUluc2lkZSgiTm9uVm9pZEZ1bmN0aW9uIik7CisgIHJldHVybiAxOworfQor
CisvLyBBIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KK3ZvaWQgRGllSWYoYm9vbCBzaG91
bGRfZGllKSB7CisgIGlmIChzaG91bGRfZGllKQorICAgIERpZUluc2lkZSgiRGllSWYiKTsKK30K
KworLy8gQSBiaW5hcnkgZnVuY3Rpb24gdGhhdCBtYXkgZGllLgorYm9vbCBEaWVJZkxlc3NUaGFu
KGludCB4LCBpbnQgeSkgeworICBpZiAoeCA8IHkpIHsKKyAgICBEaWVJbnNpZGUoIkRpZUlmTGVz
c1RoYW4iKTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworLy8gVGVzdHMgdGhhdCBBU1NFUlRf
REVBVEggY2FuIGJlIHVzZWQgb3V0c2lkZSBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdCBmaXh0dXJl
Lgordm9pZCBEZWF0aFRlc3RTdWJyb3V0aW5lKCkgeworICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVu
Y3Rpb24oKSwgImRlYXRoLipHbG9iYWxGdW5jdGlvbiIpOworICBBU1NFUlRfREVBVEgoR2xvYmFs
RnVuY3Rpb24oKSwgImRlYXRoLipHbG9iYWxGdW5jdGlvbiIpOworfQorCisvLyBEZWF0aCBpbiBk
YmcsIG5vdCBvcHQuCitpbnQgRGllSW5EZWJ1Z0Vsc2UxMihpbnQqIHNpZGVlZmZlY3QpIHsKKyAg
aWYgKHNpZGVlZmZlY3QpICpzaWRlZWZmZWN0ID0gMTI7CisKKyMgaWZuZGVmIE5ERUJVRworCisg
IERpZUluc2lkZSgiRGllSW5EZWJ1Z0Vsc2UxMiIpOworCisjIGVuZGlmICAvLyBOREVCVUcKKwor
ICByZXR1cm4gMTI7Cit9CisKKyMgaWYgR1RFU1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19GVUNI
U0lBCisKKy8vIFRlc3RzIHRoZSBFeGl0ZWRXaXRoQ29kZSBwcmVkaWNhdGUuCitURVNUKEV4aXRT
dGF0dXNQcmVkaWNhdGVUZXN0LCBFeGl0ZWRXaXRoQ29kZSkgeworICAvLyBPbiBXaW5kb3dzLCB0
aGUgcHJvY2VzcydzIGV4aXQgY29kZSBpcyB0aGUgc2FtZSBhcyBpdHMgZXhpdCBzdGF0dXMsCisg
IC8vIHNvIHRoZSBwcmVkaWNhdGUganVzdCBjb21wYXJlcyB0aGUgaXRzIGlucHV0IHdpdGggaXRz
IHBhcmFtZXRlci4KKyAgRVhQRUNUX1RSVUUodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCkoMCkp
OworICBFWFBFQ1RfVFJVRSh0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSgxKSk7CisgIEVYUEVD
VF9UUlVFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDQyKSg0MikpOworICBFWFBFQ1RfRkFMU0Uo
dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCkoMSkpOworICBFWFBFQ1RfRkFMU0UodGVzdGluZzo6
RXhpdGVkV2l0aENvZGUoMSkoMCkpOworfQorCisjIGVsc2UKKworLy8gUmV0dXJucyB0aGUgZXhp
dCBzdGF0dXMgb2YgYSBwcm9jZXNzIHRoYXQgY2FsbHMgX2V4aXQoMikgd2l0aCBhCisvLyBnaXZl
biBleGl0IGNvZGUuICBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGUKKy8vIEV4aXRT
dGF0dXNQcmVkaWNhdGVUZXN0IHRlc3Qgc3VpdGUuCitzdGF0aWMgaW50IE5vcm1hbEV4aXRTdGF0
dXMoaW50IGV4aXRfY29kZSkgeworICBwaWRfdCBjaGlsZF9waWQgPSBmb3JrKCk7CisgIGlmIChj
aGlsZF9waWQgPT0gMCkgeworICAgIF9leGl0KGV4aXRfY29kZSk7CisgIH0KKyAgaW50IHN0YXR1
czsKKyAgd2FpdHBpZChjaGlsZF9waWQsICZzdGF0dXMsIDApOworICByZXR1cm4gc3RhdHVzOwor
fQorCisvLyBSZXR1cm5zIHRoZSBleGl0IHN0YXR1cyBvZiBhIHByb2Nlc3MgdGhhdCByYWlzZXMg
YSBnaXZlbiBzaWduYWwuCisvLyBJZiB0aGUgc2lnbmFsIGRvZXMgbm90IGNhdXNlIHRoZSBwcm9j
ZXNzIHRvIGRpZSwgdGhlbiBpdCByZXR1cm5zCisvLyBpbnN0ZWFkIHRoZSBleGl0IHN0YXR1cyBv
ZiBhIHByb2Nlc3MgdGhhdCBleGl0cyBub3JtYWxseSB3aXRoIGV4aXQKKy8vIGNvZGUgMS4gIFRo
aXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIHRoZSBFeGl0U3RhdHVzUHJlZGljYXRlVGVzdAor
Ly8gdGVzdCBzdWl0ZS4KK3N0YXRpYyBpbnQgS2lsbGVkRXhpdFN0YXR1cyhpbnQgc2lnbnVtKSB7
CisgIHBpZF90IGNoaWxkX3BpZCA9IGZvcmsoKTsKKyAgaWYgKGNoaWxkX3BpZCA9PSAwKSB7Cisg
ICAgcmFpc2Uoc2lnbnVtKTsKKyAgICBfZXhpdCgxKTsKKyAgfQorICBpbnQgc3RhdHVzOworICB3
YWl0cGlkKGNoaWxkX3BpZCwgJnN0YXR1cywgMCk7CisgIHJldHVybiBzdGF0dXM7Cit9CisKKy8v
IFRlc3RzIHRoZSBFeGl0ZWRXaXRoQ29kZSBwcmVkaWNhdGUuCitURVNUKEV4aXRTdGF0dXNQcmVk
aWNhdGVUZXN0LCBFeGl0ZWRXaXRoQ29kZSkgeworICBjb25zdCBpbnQgc3RhdHVzMCAgPSBOb3Jt
YWxFeGl0U3RhdHVzKDApOworICBjb25zdCBpbnQgc3RhdHVzMSAgPSBOb3JtYWxFeGl0U3RhdHVz
KDEpOworICBjb25zdCBpbnQgc3RhdHVzNDIgPSBOb3JtYWxFeGl0U3RhdHVzKDQyKTsKKyAgY29u
c3QgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUgcHJlZDAoMCk7CisgIGNvbnN0IHRlc3Rpbmc6OkV4
aXRlZFdpdGhDb2RlIHByZWQxKDEpOworICBjb25zdCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSBw
cmVkNDIoNDIpOworICBFWFBFQ1RfUFJFRDEocHJlZDAsICBzdGF0dXMwKTsKKyAgRVhQRUNUX1BS
RUQxKHByZWQxLCAgc3RhdHVzMSk7CisgIEVYUEVDVF9QUkVEMShwcmVkNDIsIHN0YXR1czQyKTsK
KyAgRVhQRUNUX0ZBTFNFKHByZWQwKHN0YXR1czEpKTsKKyAgRVhQRUNUX0ZBTFNFKHByZWQ0Mihz
dGF0dXMwKSk7CisgIEVYUEVDVF9GQUxTRShwcmVkMShzdGF0dXM0MikpOworfQorCisvLyBUZXN0
cyB0aGUgS2lsbGVkQnlTaWduYWwgcHJlZGljYXRlLgorVEVTVChFeGl0U3RhdHVzUHJlZGljYXRl
VGVzdCwgS2lsbGVkQnlTaWduYWwpIHsKKyAgY29uc3QgaW50IHN0YXR1c19zZWd2ID0gS2lsbGVk
RXhpdFN0YXR1cyhTSUdTRUdWKTsKKyAgY29uc3QgaW50IHN0YXR1c19raWxsID0gS2lsbGVkRXhp
dFN0YXR1cyhTSUdLSUxMKTsKKyAgY29uc3QgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwgcHJlZF9z
ZWd2KFNJR1NFR1YpOworICBjb25zdCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbCBwcmVkX2tpbGwo
U0lHS0lMTCk7CisgIEVYUEVDVF9QUkVEMShwcmVkX3NlZ3YsIHN0YXR1c19zZWd2KTsKKyAgRVhQ
RUNUX1BSRUQxKHByZWRfa2lsbCwgc3RhdHVzX2tpbGwpOworICBFWFBFQ1RfRkFMU0UocHJlZF9z
ZWd2KHN0YXR1c19raWxsKSk7CisgIEVYUEVDVF9GQUxTRShwcmVkX2tpbGwoc3RhdHVzX3NlZ3Yp
KTsKK30KKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19GVUNIU0lB
CisKKy8vIFRlc3RzIHRoYXQgdGhlIGRlYXRoIHRlc3QgbWFjcm9zIGV4cGFuZCB0byBjb2RlIHdo
aWNoIG1heSBvciBtYXkgbm90CisvLyBiZSBmb2xsb3dlZCBieSBvcGVyYXRvcjw8LCBhbmQgdGhh
dCBpbiBlaXRoZXIgY2FzZSB0aGUgY29tcGxldGUgdGV4dAorLy8gY29tcHJpc2VzIG9ubHkgYSBz
aW5nbGUgQysrIHN0YXRlbWVudC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTaW5nbGVTdGF0
ZW1lbnQpIHsKKyAgaWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgLy8gVGhpcyB3b3VsZCBmYWlsIGlm
IGV4ZWN1dGVkOyB0aGlzIGlzIGEgY29tcGlsYXRpb24gdGVzdCBvbmx5CisgICAgQVNTRVJUX0RF
QVRIKHJldHVybiwgIiIpOworCisgIGlmIChBbHdheXNUcnVlKCkpCisgICAgRVhQRUNUX0RFQVRI
KF9leGl0KDEpLCAiIik7CisgIGVsc2UKKyAgICAvLyBUaGlzIGVtcHR5ICJlbHNlIiBicmFuY2gg
aXMgbWVhbnQgdG8gZW5zdXJlIHRoYXQgRVhQRUNUX0RFQVRICisgICAgLy8gZG9lc24ndCBleHBh
bmQgaW50byBhbiAiaWYiIHN0YXRlbWVudCB3aXRob3V0IGFuICJlbHNlIgorICAgIDsKKworICBp
ZiAoQWx3YXlzRmFsc2UoKSkKKyAgICBBU1NFUlRfREVBVEgocmV0dXJuLCAiIikgPDwgImRpZCBu
b3QgZGllIjsKKworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICA7CisgIGVsc2UKKyAgICBFWFBF
Q1RfREVBVEgoX2V4aXQoMSksICIiKSA8PCAxIDw8IDIgPDwgMzsKK30KKwordm9pZCBEaWVXaXRo
RW1iZWRkZWROdWwoKSB7CisgIGZwcmludGYoc3RkZXJyLCAiSGVsbG8lY215IG51bGwgd29ybGQu
XG4iLCAnXDAnKTsKKyAgZmZsdXNoKHN0ZGVycik7CisgIF9leGl0KDEpOworfQorCisjIGlmIEdU
RVNUX1VTRVNfUENSRQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSCBhbmQgQVNTRVJUX0RF
QVRIIHdvcmsgd2hlbiB0aGUgZXJyb3IKKy8vIG1lc3NhZ2UgaGFzIGEgTlVMIGNoYXJhY3RlciBp
biBpdC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFbWJlZGRlZE51bEluTWVzc2FnZSkgewor
ICBFWFBFQ1RfREVBVEgoRGllV2l0aEVtYmVkZGVkTnVsKCksICJteSBudWxsIHdvcmxkIik7Cisg
IEFTU0VSVF9ERUFUSChEaWVXaXRoRW1iZWRkZWROdWwoKSwgIm15IG51bGwgd29ybGQiKTsKK30K
KworIyBlbmRpZiAgLy8gR1RFU1RfVVNFU19QQ1JFCisKKy8vIFRlc3RzIHRoYXQgZGVhdGggdGVz
dCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUgd2hpY2ggaW50ZXJhY3RzIHdlbGwgd2l0aCBzd2l0Y2gK
Ky8vIHN0YXRlbWVudHMuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU3dpdGNoU3RhdGVtZW50
KSB7CisgIC8vIE1pY3Jvc29mdCBjb21waWxlciB1c3VhbGx5IGNvbXBsYWlucyBhYm91dCBzd2l0
Y2ggc3RhdGVtZW50cyB3aXRob3V0CisgIC8vIGNhc2UgbGFiZWxzLiBXZSBzdXBwcmVzcyB0aGF0
IHdhcm5pbmcgZm9yIHRoaXMgdGVzdC4KKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVT
SF8oNDA2NSkKKworICBzd2l0Y2ggKDApCisgICAgZGVmYXVsdDoKKyAgICAgIEFTU0VSVF9ERUFU
SChfZXhpdCgxKSwgIiIpIDw8ICJleGl0IGluIGRlZmF1bHQgc3dpdGNoIGhhbmRsZXIiOworCisg
IHN3aXRjaCAoMCkKKyAgICBjYXNlIDA6CisgICAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIi
KSA8PCAiZXhpdCBpbiBzd2l0Y2ggY2FzZSI7CisKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklO
R1NfUE9QXygpCit9CisKKy8vIFRlc3RzIHRoYXQgYSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uIGNh
biBiZSB1c2VkIGluIGEgImZhc3QiIHN0eWxlCisvLyBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RG
b3JEZWF0aFRlc3QsIFN0YXRpY01lbWJlckZ1bmN0aW9uRmFzdFN0eWxlKSB7CisgIHRlc3Rpbmc6
OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEFTU0VSVF9ERUFUSChT
dGF0aWNNZW1iZXJGdW5jdGlvbigpLCAiZGVhdGguKlN0YXRpY01lbWJlciIpOworfQorCisvLyBU
ZXN0cyB0aGF0IGEgbWV0aG9kIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2FuIGJlIHVzZWQgaW4gYSAi
ZmFzdCIKKy8vIHN0eWxlIGRlYXRoIHRlc3QuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgTWVt
YmVyRnVuY3Rpb25GYXN0U3R5bGUpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0
X3N0eWxlKSA9ICJmYXN0IjsKKyAgc2hvdWxkX2RpZV8gPSB0cnVlOworICBFWFBFQ1RfREVBVEgo
TWVtYmVyRnVuY3Rpb24oKSwgImluc2lkZS4qTWVtYmVyRnVuY3Rpb24iKTsKK30KKwordm9pZCBD
aGFuZ2VUb1Jvb3REaXIoKSB7IHBvc2l4OjpDaERpcihHVEVTVF9QQVRIX1NFUF8pOyB9CisKKy8v
IFRlc3RzIHRoYXQgZGVhdGggdGVzdHMgd29yayBldmVuIGlmIHRoZSBjdXJyZW50IGRpcmVjdG9y
eSBoYXMgYmVlbgorLy8gY2hhbmdlZC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBGYXN0RGVh
dGhUZXN0SW5DaGFuZ2VkRGlyKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9z
dHlsZSkgPSAiZmFzdCI7CisKKyAgQ2hhbmdlVG9Sb290RGlyKCk7CisgIEVYUEVDVF9FWElUKF9l
eGl0KDEpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSwgIiIpOworCisgIENoYW5nZVRvUm9v
dERpcigpOworICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIiKTsKK30KKworIyBpZiBHVEVTVF9P
U19MSU5VWAordm9pZCBTaWdwcm9mQWN0aW9uKGludCwgc2lnaW5mb190Kiwgdm9pZCopIHsgLyog
bm8gb3AgKi8gfQorCisvLyBTZXRzIFNJR1BST0YgYWN0aW9uIGFuZCBJVElNRVJfUFJPRiB0aW1l
ciAoaW50ZXJ2YWw6IDFtcykuCit2b2lkIFNldFNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigpIHsKKyAg
c3RydWN0IGl0aW1lcnZhbCB0aW1lcjsKKyAgdGltZXIuaXRfaW50ZXJ2YWwudHZfc2VjID0gMDsK
KyAgdGltZXIuaXRfaW50ZXJ2YWwudHZfdXNlYyA9IDE7CisgIHRpbWVyLml0X3ZhbHVlID0gdGlt
ZXIuaXRfaW50ZXJ2YWw7CisgIEFTU0VSVF9FUSgwLCBzZXRpdGltZXIoSVRJTUVSX1BST0YsICZ0
aW1lciwgTlVMTCkpOworICBzdHJ1Y3Qgc2lnYWN0aW9uIHNpZ25hbF9hY3Rpb247CisgIG1lbXNl
dCgmc2lnbmFsX2FjdGlvbiwgMCwgc2l6ZW9mKHNpZ25hbF9hY3Rpb24pKTsKKyAgc2lnZW1wdHlz
ZXQoJnNpZ25hbF9hY3Rpb24uc2FfbWFzayk7CisgIHNpZ25hbF9hY3Rpb24uc2Ffc2lnYWN0aW9u
ID0gU2lncHJvZkFjdGlvbjsKKyAgc2lnbmFsX2FjdGlvbi5zYV9mbGFncyA9IFNBX1JFU1RBUlQg
fCBTQV9TSUdJTkZPOworICBBU1NFUlRfRVEoMCwgc2lnYWN0aW9uKFNJR1BST0YsICZzaWduYWxf
YWN0aW9uLCBOVUxMKSk7Cit9CisKKy8vIERpc2FibGVzIElUSU1FUl9QUk9GIHRpbWVyIGFuZCBp
Z25vcmVzIFNJR1BST0Ygc2lnbmFsLgordm9pZCBEaXNhYmxlU2lncHJvZkFjdGlvbkFuZFRpbWVy
KHN0cnVjdCBzaWdhY3Rpb24qIG9sZF9zaWduYWxfYWN0aW9uKSB7CisgIHN0cnVjdCBpdGltZXJ2
YWwgdGltZXI7CisgIHRpbWVyLml0X2ludGVydmFsLnR2X3NlYyA9IDA7CisgIHRpbWVyLml0X2lu
dGVydmFsLnR2X3VzZWMgPSAwOworICB0aW1lci5pdF92YWx1ZSA9IHRpbWVyLml0X2ludGVydmFs
OworICBBU1NFUlRfRVEoMCwgc2V0aXRpbWVyKElUSU1FUl9QUk9GLCAmdGltZXIsIE5VTEwpKTsK
KyAgc3RydWN0IHNpZ2FjdGlvbiBzaWduYWxfYWN0aW9uOworICBtZW1zZXQoJnNpZ25hbF9hY3Rp
b24sIDAsIHNpemVvZihzaWduYWxfYWN0aW9uKSk7CisgIHNpZ2VtcHR5c2V0KCZzaWduYWxfYWN0
aW9uLnNhX21hc2spOworICBzaWduYWxfYWN0aW9uLnNhX2hhbmRsZXIgPSBTSUdfSUdOOworICBB
U1NFUlRfRVEoMCwgc2lnYWN0aW9uKFNJR1BST0YsICZzaWduYWxfYWN0aW9uLCBvbGRfc2lnbmFs
X2FjdGlvbikpOworfQorCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHdvcmsgd2hlbiBTSUdQ
Uk9GIGhhbmRsZXIgYW5kIHRpbWVyIGFyZSBzZXQuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
RmFzdFNpZ3Byb2ZBY3Rpb25TZXQpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0
X3N0eWxlKSA9ICJmYXN0IjsKKyAgU2V0U2lncHJvZkFjdGlvbkFuZFRpbWVyKCk7CisgIEVYUEVD
VF9ERUFUSChfZXhpdCgxKSwgIiIpOworICBzdHJ1Y3Qgc2lnYWN0aW9uIG9sZF9zaWduYWxfYWN0
aW9uOworICBEaXNhYmxlU2lncHJvZkFjdGlvbkFuZFRpbWVyKCZvbGRfc2lnbmFsX2FjdGlvbik7
CisgIEVYUEVDVF9UUlVFKG9sZF9zaWduYWxfYWN0aW9uLnNhX3NpZ2FjdGlvbiA9PSBTaWdwcm9m
QWN0aW9uKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRocmVhZFNhZmVTaWdwcm9m
QWN0aW9uU2V0KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAi
dGhyZWFkc2FmZSI7CisgIFNldFNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigpOworICBFWFBFQ1RfREVB
VEgoX2V4aXQoMSksICIiKTsKKyAgc3RydWN0IHNpZ2FjdGlvbiBvbGRfc2lnbmFsX2FjdGlvbjsK
KyAgRGlzYWJsZVNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigmb2xkX3NpZ25hbF9hY3Rpb24pOworICBF
WFBFQ1RfVFJVRShvbGRfc2lnbmFsX2FjdGlvbi5zYV9zaWdhY3Rpb24gPT0gU2lncHJvZkFjdGlv
bik7Cit9CisjIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCisvLyBSZXBlYXRzIGEgcmVwcmVz
ZW50YXRpdmUgc2FtcGxlIG9mIGRlYXRoIHRlc3RzIGluIHRoZSAidGhyZWFkc2FmZSIgc3R5bGU6
CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTdGF0aWNNZW1iZXJGdW5jdGlvblRocmVhZHNh
ZmVTdHlsZSkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRo
cmVhZHNhZmUiOworICBBU1NFUlRfREVBVEgoU3RhdGljTWVtYmVyRnVuY3Rpb24oKSwgImRlYXRo
LipTdGF0aWNNZW1iZXIiKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE1lbWJlckZ1
bmN0aW9uVGhyZWFkc2FmZVN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVz
dF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7CisgIHNob3VsZF9kaWVfID0gdHJ1ZTsKKyAgRVhQRUNU
X0RFQVRIKE1lbWJlckZ1bmN0aW9uKCksICJpbnNpZGUuKk1lbWJlckZ1bmN0aW9uIik7Cit9CisK
K1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUaHJlYWRzYWZlRGVhdGhUZXN0SW5Mb29wKSB7Cisg
IHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7CisK
KyAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpCisgICAgRVhQRUNUX0VYSVQoX2V4aXQoaSks
IHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKGkpLCAiIikgPDwgIjogaSA9ICIgPDwgaTsKK30KKwor
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRocmVhZHNhZmVEZWF0aFRlc3RJbkNoYW5nZWREaXIp
IHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZl
IjsKKworICBDaGFuZ2VUb1Jvb3REaXIoKTsKKyAgRVhQRUNUX0VYSVQoX2V4aXQoMSksIHRlc3Rp
bmc6OkV4aXRlZFdpdGhDb2RlKDEpLCAiIik7CisKKyAgQ2hhbmdlVG9Sb290RGlyKCk7CisgIEFT
U0VSVF9ERUFUSChfZXhpdCgxKSwgIiIpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
TWl4ZWRTdHlsZXMpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9
ICJ0aHJlYWRzYWZlIjsKKyAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIik7CisgIHRlc3Rpbmc6
OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9ERUFUSChf
ZXhpdCgxKSwgIiIpOworfQorCisjIGlmIEdURVNUX0hBU19DTE9ORSAmJiBHVEVTVF9IQVNfUFRI
UkVBRAorCituYW1lc3BhY2UgeworCitib29sIHB0aHJlYWRfZmxhZzsKKwordm9pZCBTZXRQdGhy
ZWFkRmxhZygpIHsKKyAgcHRocmVhZF9mbGFnID0gdHJ1ZTsKK30KKworfSAgLy8gbmFtZXNwYWNl
CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEb2VzTm90RXhlY3V0ZUF0Zm9ya0hvb2tzKSB7
CisgIGlmICghdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKSkgeworICAg
IHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7Cisg
ICAgcHRocmVhZF9mbGFnID0gZmFsc2U7CisgICAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXRmb3Jr
KCZTZXRQdGhyZWFkRmxhZywgTlVMTCwgTlVMTCkpOworICAgIEFTU0VSVF9ERUFUSChfZXhpdCgx
KSwgIiIpOworICAgIEFTU0VSVF9GQUxTRShwdGhyZWFkX2ZsYWcpOworICB9Cit9CisKKyMgZW5k
aWYgIC8vIEdURVNUX0hBU19DTE9ORSAmJiBHVEVTVF9IQVNfUFRIUkVBRAorCisvLyBUZXN0cyB0
aGF0IGEgbWV0aG9kIG9mIGFub3RoZXIgY2xhc3MgY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0
LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE1ldGhvZE9mQW5vdGhlckNsYXNzKSB7CisgIGNv
bnN0IE1heURpZSB4KHRydWUpOworICBBU1NFUlRfREVBVEgoeC5NZW1iZXJGdW5jdGlvbigpLCAi
TWF5RGllXFw6XFw6TWVtYmVyRnVuY3Rpb24iKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIGdsb2Jh
bCBmdW5jdGlvbiBjYW4gYmUgdXNlZCBpbiBhIGRlYXRoIHRlc3QuCitURVNUX0YoVGVzdEZvckRl
YXRoVGVzdCwgR2xvYmFsRnVuY3Rpb24pIHsKKyAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9u
KCksICJHbG9iYWxGdW5jdGlvbiIpOworfQorCisvLyBUZXN0cyB0aGF0IGFueSB2YWx1ZSBjb252
ZXJ0aWJsZSB0byBhbiBSRSB3b3JrcyBhcyBhIHNlY29uZAorLy8gYXJndW1lbnQgdG8gRVhQRUNU
X0RFQVRILgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFjY2VwdHNBbnl0aGluZ0NvbnZlcnRp
YmxlVG9SRSkgeworICBzdGF0aWMgY29uc3QgY2hhciByZWdleF9jX3N0cltdID0gIkdsb2JhbEZ1
bmN0aW9uIjsKKyAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksIHJlZ2V4X2Nfc3RyKTsK
KworICBjb25zdCB0ZXN0aW5nOjppbnRlcm5hbDo6UkUgcmVnZXgocmVnZXhfY19zdHIpOworICBF
WFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXgpOworCisjIGlmIEdURVNUX0hBU19H
TE9CQUxfU1RSSU5HCisKKyAgY29uc3QgOjpzdHJpbmcgcmVnZXhfc3RyKHJlZ2V4X2Nfc3RyKTsK
KyAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksIHJlZ2V4X3N0cik7CisKKyMgZW5kaWYg
IC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKKyMgaWYgIUdURVNUX1VTRVNfUENSRQorCisg
IGNvbnN0IDo6c3RkOjpzdHJpbmcgcmVnZXhfc3RkX3N0cihyZWdleF9jX3N0cik7CisgIEVYUEVD
VF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleF9zdGRfc3RyKTsKKworIyBlbmRpZiAgLy8g
IUdURVNUX1VTRVNfUENSRQorfQorCisvLyBUZXN0cyB0aGF0IGEgbm9uLXZvaWQgZnVuY3Rpb24g
Y2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE5v
blZvaWRGdW5jdGlvbikgeworICBBU1NFUlRfREVBVEgoTm9uVm9pZEZ1bmN0aW9uKCksICJOb25W
b2lkRnVuY3Rpb24iKTsKK30KKworLy8gVGVzdHMgdGhhdCBmdW5jdGlvbnMgdGhhdCB0YWtlIHBh
cmFtZXRlcihzKSBjYW4gYmUgdXNlZCBpbiBhIGRlYXRoIHRlc3QuCitURVNUX0YoVGVzdEZvckRl
YXRoVGVzdCwgRnVuY3Rpb25XaXRoUGFyYW1ldGVyKSB7CisgIEVYUEVDVF9ERUFUSChEaWVJZih0
cnVlKSwgIkRpZUlmXFwoXFwpIik7CisgIEVYUEVDVF9ERUFUSChEaWVJZkxlc3NUaGFuKDIsIDMp
LCAiRGllSWZMZXNzVGhhbiIpOworfQorCisvLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUFUSCBjYW4g
YmUgdXNlZCBvdXRzaWRlIGEgVEVTVCwgVEVTVF9GLCBvciB0ZXN0IGZpeHR1cmUuCitURVNUX0Yo
VGVzdEZvckRlYXRoVGVzdCwgT3V0c2lkZUZpeHR1cmUpIHsKKyAgRGVhdGhUZXN0U3Vicm91dGlu
ZSgpOworfQorCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIGNhbiBiZSBkb25lIGluc2lkZSBh
IGxvb3AuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgSW5zaWRlTG9vcCkgeworICBmb3IgKGlu
dCBpID0gMDsgaSA8IDU7IGkrKykgeworICAgIEVYUEVDVF9ERUFUSChEaWVJZkxlc3NUaGFuKC0x
LCBpKSwgIkRpZUlmTGVzc1RoYW4iKSA8PCAid2hlcmUgaSA9PSAiIDw8IGk7CisgIH0KK30KKwor
Ly8gVGVzdHMgdGhhdCBhIGNvbXBvdW5kIHN0YXRlbWVudCBjYW4gYmUgdXNlZCBpbiBhIGRlYXRo
IHRlc3QuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQ29tcG91bmRTdGF0ZW1lbnQpIHsKKyAg
RVhQRUNUX0RFQVRIKHsgIC8vIE5PTElOVAorICAgIGNvbnN0IGludCB4ID0gMjsKKyAgICBjb25z
dCBpbnQgeSA9IHggKyAxOworICAgIERpZUlmTGVzc1RoYW4oeCwgeSk7CisgIH0sCisgICJEaWVJ
Zkxlc3NUaGFuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgY29kZSB0aGF0IGRvZXNuJ3QgZGllIGNh
dXNlcyBhIGRlYXRoIHRlc3QgdG8gZmFpbC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEb2Vz
Tm90RGllKSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ERUFUSChEaWVJZihm
YWxzZSksICJEaWVJZiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGRp
ZSIpOworfQorCisvLyBUZXN0cyB0aGF0IGEgZGVhdGggdGVzdCBmYWlscyB3aGVuIHRoZSBlcnJv
ciBtZXNzYWdlIGlzbid0IGV4cGVjdGVkLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEVycm9y
TWVzc2FnZU1pc21hdGNoKSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElO
VAorICAgIEVYUEVDVF9ERUFUSChEaWVJZih0cnVlKSwgIkRpZUlmTGVzc1RoYW4iKSA8PCAiRW5k
IG9mIGRlYXRoIHRlc3QgbWVzc2FnZS4iOworICB9LCAiZGllZCBidXQgbm90IHdpdGggZXhwZWN0
ZWQgZXJyb3IiKTsKK30KKworLy8gT24gZXhpdCwgKmFib3J0ZWQgd2lsbCBiZSB0cnVlIGlmZiB0
aGUgRVhQRUNUX0RFQVRIKCkgc3RhdGVtZW50CisvLyBhYm9ydGVkIHRoZSBmdW5jdGlvbi4KK3Zv
aWQgRXhwZWN0RGVhdGhUZXN0SGVscGVyKGJvb2wqIGFib3J0ZWQpIHsKKyAgKmFib3J0ZWQgPSB0
cnVlOworICBFWFBFQ1RfREVBVEgoRGllSWYoZmFsc2UpLCAiRGllSWYiKTsgIC8vIFRoaXMgYXNz
ZXJ0aW9uIHNob3VsZCBmYWlsLgorICAqYWJvcnRlZCA9IGZhbHNlOworfQorCisvLyBUZXN0cyB0
aGF0IEVYUEVDVF9ERUFUSCBkb2Vzbid0IGFib3J0IHRoZSB0ZXN0IG9uIGZhaWx1cmUuCitURVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgRVhQRUNUX0RFQVRIKSB7CisgIGJvb2wgYWJvcnRlZCA9IHRy
dWU7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEV4cGVjdERlYXRoVGVzdEhlbHBlcigmYWJv
cnRlZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZGllIik7CisgIEVY
UEVDVF9GQUxTRShhYm9ydGVkKTsKK30KKworLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVBVEggZG9l
cyBhYm9ydCB0aGUgdGVzdCBvbiBmYWlsdXJlLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFT
U0VSVF9ERUFUSCkgeworICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRSh7ICAvLyBOT0xJTlQKKyAgICBhYm9ydGVkID0gdHJ1ZTsKKyAgICBBU1NFUlRfREVBVEgo
RGllSWYoZmFsc2UpLCAiRGllSWYiKTsgIC8vIFRoaXMgYXNzZXJ0aW9uIHNob3VsZCBmYWlsLgor
ICAgIGFib3J0ZWQgPSBmYWxzZTsKKyAgfSwgImZhaWxlZCB0byBkaWUiKTsKKyAgRVhQRUNUX1RS
VUUoYWJvcnRlZCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRIIGV2YWx1YXRlcyB0
aGUgYXJndW1lbnRzIGV4YWN0bHkgb25jZS4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTaW5n
bGVFdmFsdWF0aW9uKSB7CisgIGludCB4ID0gMzsKKyAgRVhQRUNUX0RFQVRIKERpZUlmKCgrK3gp
ID09IDQpLCAiRGllSWYiKTsKKworICBjb25zdCBjaGFyKiByZWdleCA9ICJEaWVJZiI7CisgIGNv
bnN0IGNoYXIqIHJlZ2V4X3NhdmUgPSByZWdleDsKKyAgRVhQRUNUX0RFQVRIKERpZUlmTGVzc1Ro
YW4oMywgNCksIHJlZ2V4KyspOworICBFWFBFQ1RfRVEocmVnZXhfc2F2ZSArIDEsIHJlZ2V4KTsK
K30KKworLy8gVGVzdHMgdGhhdCBydW4tYXdheSBkZWF0aCB0ZXN0cyBhcmUgcmVwb3J0ZWQgYXMg
ZmFpbHVyZXMuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgUnVuYXdheUlzRmFpbHVyZSkgewor
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgoc3RhdGljX2Nhc3Q8dm9pZD4o
MCksICJGb28iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBkaWUuIik7
Cit9CisKKy8vIFRlc3RzIHRoYXQgZGVhdGggdGVzdHMgcmVwb3J0IGV4ZWN1dGluZyAncmV0dXJu
JyBpbiB0aGUgc3RhdGVtZW50IGFzCisvLyBmYWlsdXJlLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIFJldHVybklzRmFpbHVyZSkgeworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfREVB
VEgocmV0dXJuLCAiQmFyIiksCisgICAgICAgICAgICAgICAgICAgICAgICJpbGxlZ2FsIHJldHVy
biBpbiB0ZXN0IHN0YXRlbWVudC4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVCVUdf
REVBVEggd29ya3MgYXMgZXhwZWN0ZWQsIHRoYXQgaXMsIHlvdSBjYW4gc3RyZWFtIGEKKy8vIG1l
c3NhZ2UgdG8gaXQsIGFuZCBpbiBkZWJ1ZyBtb2RlIGl0OgorLy8gMS4gQXNzZXJ0cyBvbiBkZWF0
aC4KKy8vIDIuIEhhcyBubyBzaWRlIGVmZmVjdC4KKy8vCisvLyBBbmQgaW4gb3B0IG1vZGUsIGl0
OgorLy8gMS4gIEhhcyBzaWRlIGVmZmVjdHMgYnV0IGRvZXMgbm90IGFzc2VydC4KK1RFU1RfRihU
ZXN0Rm9yRGVhdGhUZXN0LCBUZXN0RXhwZWN0RGVidWdEZWF0aCkgeworICBpbnQgc2lkZWVmZmVj
dCA9IDA7CisKKyAgLy8gUHV0IHRoZSByZWdleCBpbiBhIGxvY2FsIHZhcmlhYmxlIHRvIG1ha2Ug
c3VyZSB3ZSBkb24ndCBnZXQgYW4gInVudXNlZCIKKyAgLy8gd2FybmluZyBpbiBvcHQgbW9kZS4K
KyAgY29uc3QgY2hhciogcmVnZXggPSAiZGVhdGguKkRpZUluRGVidWdFbHNlMTIiOworCisgIEVY
UEVDVF9ERUJVR19ERUFUSChEaWVJbkRlYnVnRWxzZTEyKCZzaWRlZWZmZWN0KSwgcmVnZXgpCisg
ICAgICA8PCAiTXVzdCBhY2NlcHQgYSBzdHJlYW1lZCBtZXNzYWdlIjsKKworIyBpZmRlZiBOREVC
VUcKKworICAvLyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBvY2N1cnMgaW4gb3B0IG1vZGUg
KHNpZGVlZmZlY3QpLgorICBFWFBFQ1RfRVEoMTIsIHNpZGVlZmZlY3QpOworCisjIGVsc2UKKwor
ICAvLyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBkb2VzIG5vdCBvY2N1ciBpbiBkYmcgbW9k
ZSAobm8gc2lkZWVmZmVjdCkuCisgIEVYUEVDVF9FUSgwLCBzaWRlZWZmZWN0KTsKKworIyBlbmRp
ZgorfQorCisvLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUJVR19ERUFUSCB3b3JrcyBhcyBleHBlY3Rl
ZCwgdGhhdCBpcywgeW91IGNhbiBzdHJlYW0gYQorLy8gbWVzc2FnZSB0byBpdCwgYW5kIGluIGRl
YnVnIG1vZGUgaXQ6CisvLyAxLiBBc3NlcnRzIG9uIGRlYXRoLgorLy8gMi4gSGFzIG5vIHNpZGUg
ZWZmZWN0LgorLy8KKy8vIEFuZCBpbiBvcHQgbW9kZSwgaXQ6CisvLyAxLiAgSGFzIHNpZGUgZWZm
ZWN0cyBidXQgZG9lcyBub3QgYXNzZXJ0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRlc3RB
c3NlcnREZWJ1Z0RlYXRoKSB7CisgIGludCBzaWRlZWZmZWN0ID0gMDsKKworICBBU1NFUlRfREVC
VUdfREVBVEgoRGllSW5EZWJ1Z0Vsc2UxMigmc2lkZWVmZmVjdCksICJkZWF0aC4qRGllSW5EZWJ1
Z0Vsc2UxMiIpCisgICAgICA8PCAiTXVzdCBhY2NlcHQgYSBzdHJlYW1lZCBtZXNzYWdlIjsKKwor
IyBpZmRlZiBOREVCVUcKKworICAvLyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBvY2N1cnMg
aW4gb3B0IG1vZGUgKHNpZGVlZmZlY3QpLgorICBFWFBFQ1RfRVEoMTIsIHNpZGVlZmZlY3QpOwor
CisjIGVsc2UKKworICAvLyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBkb2VzIG5vdCBvY2N1
ciBpbiBkYmcgbW9kZSAobm8gc2lkZWVmZmVjdCkuCisgIEVYUEVDVF9FUSgwLCBzaWRlZWZmZWN0
KTsKKworIyBlbmRpZgorfQorCisjIGlmbmRlZiBOREVCVUcKKwordm9pZCBFeHBlY3REZWJ1Z0Rl
YXRoSGVscGVyKGJvb2wqIGFib3J0ZWQpIHsKKyAgKmFib3J0ZWQgPSB0cnVlOworICBFWFBFQ1Rf
REVCVUdfREVBVEgocmV0dXJuLCAiIikgPDwgIlRoaXMgaXMgZXhwZWN0ZWQgdG8gZmFpbC4iOwor
ICAqYWJvcnRlZCA9IGZhbHNlOworfQorCisjICBpZiBHVEVTVF9PU19XSU5ET1dTCitURVNUKFBv
cFVwRGVhdGhUZXN0LCBEb2VzTm90U2hvd1BvcFVwT25BYm9ydCkgeworICBwcmludGYoIlRoaXMg
dGVzdCBzaG91bGQgYmUgY29uc2lkZXJlZCBmYWlsaW5nIGlmIGl0IHNob3dzICIKKyAgICAgICAg
ICJhbnkgcG9wLXVwIGRpYWxvZ3MuXG4iKTsKKyAgZmZsdXNoKHN0ZG91dCk7CisKKyAgRVhQRUNU
X0RFQVRIKHsKKyAgICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpID0gZmFs
c2U7CisgICAgYWJvcnQoKTsKKyAgfSwgIiIpOworfQorIyAgZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1MKKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVCVUdfREVBVEggaW4gZGVidWcgbW9kZSBk
b2VzIG5vdCBhYm9ydAorLy8gdGhlIGZ1bmN0aW9uLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3Qs
IEV4cGVjdERlYnVnRGVhdGhEb2VzTm90QWJvcnQpIHsKKyAgYm9vbCBhYm9ydGVkID0gdHJ1ZTsK
KyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRXhwZWN0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRl
ZCksICIiKTsKKyAgRVhQRUNUX0ZBTFNFKGFib3J0ZWQpOworfQorCit2b2lkIEFzc2VydERlYnVn
RGVhdGhIZWxwZXIoYm9vbCogYWJvcnRlZCkgeworICAqYWJvcnRlZCA9IHRydWU7CisgIEdURVNU
X0xPR18oSU5GTykgPDwgIkJlZm9yZSBBU1NFUlRfREVCVUdfREVBVEgiOworICBBU1NFUlRfREVC
VUdfREVBVEgoR1RFU1RfTE9HXyhJTkZPKSA8PCAiSW4gQVNTRVJUX0RFQlVHX0RFQVRIIjsgcmV0
dXJuLCAiIikKKyAgICAgIDw8ICJUaGlzIGlzIGV4cGVjdGVkIHRvIGZhaWwuIjsKKyAgR1RFU1Rf
TE9HXyhJTkZPKSA8PCAiQWZ0ZXIgQVNTRVJUX0RFQlVHX0RFQVRIIjsKKyAgKmFib3J0ZWQgPSBm
YWxzZTsKK30KKworLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVCVUdfREVBVEggaW4gZGVidWcgbW9k
ZSBhYm9ydHMgdGhlIGZ1bmN0aW9uIG9uCisvLyBmYWlsdXJlLgorVEVTVF9GKFRlc3RGb3JEZWF0
aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHMpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsK
KyAgYWJvcnRlZCA9IGZhbHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0Rl
YXRoSGVscGVyKCZhYm9ydGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKwor
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHMyKSB7CisgIHN0
YXRpYyBib29sIGFib3J0ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RS
VUUoYWJvcnRlZCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0Rl
YXRoQWJvcnRzMykgeworICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7
CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQp
LCAiIik7CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0czQpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsK
KyAgYWJvcnRlZCA9IGZhbHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0Rl
YXRoSGVscGVyKCZhYm9ydGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKwor
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM1KSB7CisgIHN0
YXRpYyBib29sIGFib3J0ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RS
VUUoYWJvcnRlZCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0Rl
YXRoQWJvcnRzNikgeworICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7
CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQp
LCAiIik7CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0czcpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsK
KyAgYWJvcnRlZCA9IGZhbHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0Rl
YXRoSGVscGVyKCZhYm9ydGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKwor
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM4KSB7CisgIHN0
YXRpYyBib29sIGFib3J0ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RS
VUUoYWJvcnRlZCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0Rl
YXRoQWJvcnRzOSkgeworICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7
CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQp
LCAiIik7CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0czEwKSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7
CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdE
ZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisK
KyMgZW5kaWYgIC8vIF9OREVCVUcKKworLy8gVGVzdHMgdGhlICpfRVhJVCBmYW1pbHkgb2YgbWFj
cm9zLCB1c2luZyBhIHZhcmlldHkgb2YgcHJlZGljYXRlcy4KK3N0YXRpYyB2b2lkIFRlc3RFeGl0
TWFjcm9zKCkgeworICBFWFBFQ1RfRVhJVChfZXhpdCgxKSwgIHRlc3Rpbmc6OkV4aXRlZFdpdGhD
b2RlKDEpLCAgIiIpOworICBBU1NFUlRfRVhJVChfZXhpdCg0MiksIHRlc3Rpbmc6OkV4aXRlZFdp
dGhDb2RlKDQyKSwgIiIpOworCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKworICAvLyBPZiBhbGwg
c2lnbmFscyBlZmZlY3RzIG9uIHRoZSBwcm9jZXNzIGV4aXQgY29kZSwgb25seSB0aG9zZSBvZiBT
SUdBQlJUCisgIC8vIGFyZSBkb2N1bWVudGVkIG9uIFdpbmRvd3MuCisgIC8vIFNlZSBodHRwczov
L21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9xdWVyeS1iaS9tL2R3d3prdDRjLgorICBFWFBFQ1Rf
RVhJVChyYWlzZShTSUdBQlJUKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMyksICIiKSA8PCAi
Yl9hciI7CisKKyMgZWxpZiAhR1RFU1RfT1NfRlVDSFNJQQorCisgIC8vIEZ1Y2hzaWEgaGFzIG5v
IHVuaXggc2lnbmFscy4KKyAgRVhQRUNUX0VYSVQocmFpc2UoU0lHS0lMTCksIHRlc3Rpbmc6Oktp
bGxlZEJ5U2lnbmFsKFNJR0tJTEwpLCAiIikgPDwgImZvbyI7CisgIEFTU0VSVF9FWElUKHJhaXNl
KFNJR1VTUjIpLCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChTSUdVU1IyKSwgIiIpIDw8ICJiYXIi
OworCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9FWElU
KF9leGl0KDApLCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChTSUdTRUdWKSwgIiIpCisgICAgICA8
PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCB0b28uIjsKKyAgfSwgIlRoaXMgZmFpbHVyZSBp
cyBleHBlY3RlZCwgdG9vLiIpOworCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX0VYSVQocmFp
c2UoU0lHU0VHViksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApLCAiIikKKyAgICAgIDw8ICJU
aGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIjsKKyAgfSwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZC4iKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEV4aXRNYWNyb3MpIHsKKyAgVGVz
dEV4aXRNYWNyb3MoKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEV4aXRNYWNyb3NV
c2luZ0ZvcmspIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKSA9
IHRydWU7CisgIFRlc3RFeGl0TWFjcm9zKCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0
LCBJbnZhbGlkU3R5bGUpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxl
KSA9ICJyb2NvY28iOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAg
ICBFWFBFQ1RfREVBVEgoX2V4aXQoMCksICIiKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVk
LiI7CisgIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIik7Cit9CisKK1RFU1RfRihUZXN0
Rm9yRGVhdGhUZXN0LCBEZWF0aFRlc3RGYWlsZWRPdXRwdXQpIHsKKyAgdGVzdGluZzo6R1RFU1Rf
RkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoCisgICAgICBFWFBFQ1RfREVBVEgoRGllV2l0aE1lc3NhZ2UoImRlYXRoXG4iKSwKKyAgICAg
ICAgICAgICAgICAgICAiZXhwZWN0ZWQgbWVzc2FnZSIpLAorICAgICAgIkFjdHVhbCBtc2c6XG4i
CisgICAgICAiWyAgREVBVEggICBdIGRlYXRoXG4iKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0
aFRlc3QsIERlYXRoVGVzdFVuZXhwZWN0ZWRSZXR1cm5PdXRwdXQpIHsKKyAgdGVzdGluZzo6R1RF
U1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoCisgICAgICBFWFBFQ1RfREVBVEgoeworICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
cmV0dXJuaW5nXG4iKTsKKyAgICAgICAgICBmZmx1c2goc3RkZXJyKTsKKyAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0sICIiKSwKKyAgICAgICIgICAgUmVzdWx0OiBpbGxlZ2FsIHJldHVybiBp
biB0ZXN0IHN0YXRlbWVudC5cbiIKKyAgICAgICIgRXJyb3IgbXNnOlxuIgorICAgICAgIlsgIERF
QVRIICAgXSByZXR1cm5pbmdcbiIpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRGVh
dGhUZXN0QmFkRXhpdENvZGVPdXRwdXQpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90
ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBF
WFBFQ1RfRVhJVChEaWVXaXRoTWVzc2FnZSgiZXhpdGluZyB3aXRoIHJjIDFcbiIpLAorICAgICAg
ICAgICAgICAgICAgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMyksCisgICAgICAgICAgICAgICAg
ICAiZXhwZWN0ZWQgbWVzc2FnZSIpLAorICAgICAgIiAgICBSZXN1bHQ6IGRpZWQgYnV0IG5vdCB3
aXRoIGV4cGVjdGVkIGV4aXQgY29kZTpcbiIKKyAgICAgICIgICAgICAgICAgICBFeGl0ZWQgd2l0
aCBleGl0IHN0YXR1cyAxXG4iCisgICAgICAiQWN0dWFsIG1zZzpcbiIKKyAgICAgICJbICBERUFU
SCAgIF0gZXhpdGluZyB3aXRoIHJjIDFcbiIpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVz
dCwgRGVhdGhUZXN0TXVsdGlMaW5lTWF0Y2hGYWlsKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUco
ZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAor
ICAgICAgRVhQRUNUX0RFQVRIKERpZVdpdGhNZXNzYWdlKCJsaW5lIDFcbmxpbmUgMlxubGluZSAz
XG4iKSwKKyAgICAgICAgICAgICAgICAgICAibGluZSAxXG54eXpcbmxpbmUgM1xuIiksCisgICAg
ICAiQWN0dWFsIG1zZzpcbiIKKyAgICAgICJbICBERUFUSCAgIF0gbGluZSAxXG4iCisgICAgICAi
WyAgREVBVEggICBdIGxpbmUgMlxuIgorICAgICAgIlsgIERFQVRIICAgXSBsaW5lIDNcbiIpOwor
fQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRGVhdGhUZXN0TXVsdGlMaW5lTWF0Y2hQYXNz
KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7Cisg
IEVYUEVDVF9ERUFUSChEaWVXaXRoTWVzc2FnZSgibGluZSAxXG5saW5lIDJcbmxpbmUgM1xuIiks
CisgICAgICAgICAgICAgICAibGluZSAxXG5saW5lIDJcbmxpbmUgM1xuIik7Cit9CisKKy8vIEEg
RGVhdGhUZXN0RmFjdG9yeSB0aGF0IHJldHVybnMgTW9ja0RlYXRoVGVzdHMuCitjbGFzcyBNb2Nr
RGVhdGhUZXN0RmFjdG9yeSA6IHB1YmxpYyBEZWF0aFRlc3RGYWN0b3J5IHsKKyBwdWJsaWM6Cisg
IE1vY2tEZWF0aFRlc3RGYWN0b3J5KCk7CisgIHZpcnR1YWwgYm9vbCBDcmVhdGUoY29uc3QgY2hh
ciogc3RhdGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IDo6dGVzdGluZzo6aW50
ZXJuYWw6OlJFKiByZWdleCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxl
LCBpbnQgbGluZSwgRGVhdGhUZXN0KiogdGVzdCk7CisKKyAgLy8gU2V0cyB0aGUgcGFyYW1ldGVy
cyBmb3Igc3Vic2VxdWVudCBjYWxscyB0byBDcmVhdGUuCisgIHZvaWQgU2V0UGFyYW1ldGVycyhi
b29sIGNyZWF0ZSwgRGVhdGhUZXN0OjpUZXN0Um9sZSByb2xlLAorICAgICAgICAgICAgICAgICAg
ICAgaW50IHN0YXR1cywgYm9vbCBwYXNzZWQpOworCisgIC8vIEFjY2Vzc29ycy4KKyAgaW50IEFz
c3VtZVJvbGVDYWxscygpIGNvbnN0IHsgcmV0dXJuIGFzc3VtZV9yb2xlX2NhbGxzXzsgfQorICBp
bnQgV2FpdENhbGxzKCkgY29uc3QgeyByZXR1cm4gd2FpdF9jYWxsc187IH0KKyAgc2l6ZV90IFBh
c3NlZENhbGxzKCkgY29uc3QgeyByZXR1cm4gcGFzc2VkX2FyZ3NfLnNpemUoKTsgfQorICBib29s
IFBhc3NlZEFyZ3VtZW50KGludCBuKSBjb25zdCB7IHJldHVybiBwYXNzZWRfYXJnc19bbl07IH0K
KyAgc2l6ZV90IEFib3J0Q2FsbHMoKSBjb25zdCB7IHJldHVybiBhYm9ydF9hcmdzXy5zaXplKCk7
IH0KKyAgRGVhdGhUZXN0OjpBYm9ydFJlYXNvbiBBYm9ydEFyZ3VtZW50KGludCBuKSBjb25zdCB7
CisgICAgcmV0dXJuIGFib3J0X2FyZ3NfW25dOworICB9CisgIGJvb2wgVGVzdERlbGV0ZWQoKSBj
b25zdCB7IHJldHVybiB0ZXN0X2RlbGV0ZWRfOyB9CisKKyBwcml2YXRlOgorICBmcmllbmQgY2xh
c3MgTW9ja0RlYXRoVGVzdDsKKyAgLy8gSWYgdHJ1ZSwgQ3JlYXRlIHdpbGwgcmV0dXJuIGEgTW9j
a0RlYXRoVGVzdDsgb3RoZXJ3aXNlIGl0IHJldHVybnMKKyAgLy8gTlVMTC4KKyAgYm9vbCBjcmVh
dGVfOworICAvLyBUaGUgdmFsdWUgYSBNb2NrRGVhdGhUZXN0IHdpbGwgcmV0dXJuIGZyb20gaXRz
IEFzc3VtZVJvbGUgbWV0aG9kLgorICBEZWF0aFRlc3Q6OlRlc3RSb2xlIHJvbGVfOworICAvLyBU
aGUgdmFsdWUgYSBNb2NrRGVhdGhUZXN0IHdpbGwgcmV0dXJuIGZyb20gaXRzIFdhaXQgbWV0aG9k
LgorICBpbnQgc3RhdHVzXzsKKyAgLy8gVGhlIHZhbHVlIGEgTW9ja0RlYXRoVGVzdCB3aWxsIHJl
dHVybiBmcm9tIGl0cyBQYXNzZWQgbWV0aG9kLgorICBib29sIHBhc3NlZF87CisKKyAgLy8gTnVt
YmVyIG9mIHRpbWVzIEFzc3VtZVJvbGUgd2FzIGNhbGxlZC4KKyAgaW50IGFzc3VtZV9yb2xlX2Nh
bGxzXzsKKyAgLy8gTnVtYmVyIG9mIHRpbWVzIFdhaXQgd2FzIGNhbGxlZC4KKyAgaW50IHdhaXRf
Y2FsbHNfOworICAvLyBUaGUgYXJndW1lbnRzIHRvIHRoZSBjYWxscyB0byBQYXNzZWQgc2luY2Ug
dGhlIGxhc3QgY2FsbCB0bworICAvLyBTZXRQYXJhbWV0ZXJzLgorICBzdGQ6OnZlY3Rvcjxib29s
PiBwYXNzZWRfYXJnc187CisgIC8vIFRoZSBhcmd1bWVudHMgdG8gdGhlIGNhbGxzIHRvIEFib3J0
IHNpbmNlIHRoZSBsYXN0IGNhbGwgdG8KKyAgLy8gU2V0UGFyYW1ldGVycy4KKyAgc3RkOjp2ZWN0
b3I8RGVhdGhUZXN0OjpBYm9ydFJlYXNvbj4gYWJvcnRfYXJnc187CisgIC8vIFRydWUgaWYgdGhl
IGxhc3QgTW9ja0RlYXRoVGVzdCByZXR1cm5lZCBieSBDcmVhdGUgaGFzIGJlZW4KKyAgLy8gZGVs
ZXRlZC4KKyAgYm9vbCB0ZXN0X2RlbGV0ZWRfOworfTsKKworCisvLyBBIERlYXRoVGVzdCBpbXBs
ZW1lbnRhdGlvbiB1c2VmdWwgaW4gdGVzdGluZy4gIEl0IHJldHVybnMgdmFsdWVzIHNldAorLy8g
YXQgaXRzIGNyZWF0aW9uIGZyb20gaXRzIHZhcmlvdXMgaW5oZXJpdGVkIERlYXRoVGVzdCBtZXRo
b2RzLCBhbmQKKy8vIHJlcG9ydHMgY2FsbHMgdG8gdGhvc2UgbWV0aG9kcyB0byBpdHMgcGFyZW50
IE1vY2tEZWF0aFRlc3RGYWN0b3J5CisvLyBvYmplY3QuCitjbGFzcyBNb2NrRGVhdGhUZXN0IDog
cHVibGljIERlYXRoVGVzdCB7CisgcHVibGljOgorICBNb2NrRGVhdGhUZXN0KE1vY2tEZWF0aFRl
c3RGYWN0b3J5ICpwYXJlbnQsCisgICAgICAgICAgICAgICAgVGVzdFJvbGUgcm9sZSwgaW50IHN0
YXR1cywgYm9vbCBwYXNzZWQpIDoKKyAgICAgIHBhcmVudF8ocGFyZW50KSwgcm9sZV8ocm9sZSks
IHN0YXR1c18oc3RhdHVzKSwgcGFzc2VkXyhwYXNzZWQpIHsKKyAgfQorICB2aXJ0dWFsIH5Nb2Nr
RGVhdGhUZXN0KCkgeworICAgIHBhcmVudF8tPnRlc3RfZGVsZXRlZF8gPSB0cnVlOworICB9Cisg
IHZpcnR1YWwgVGVzdFJvbGUgQXNzdW1lUm9sZSgpIHsKKyAgICArK3BhcmVudF8tPmFzc3VtZV9y
b2xlX2NhbGxzXzsKKyAgICByZXR1cm4gcm9sZV87CisgIH0KKyAgdmlydHVhbCBpbnQgV2FpdCgp
IHsKKyAgICArK3BhcmVudF8tPndhaXRfY2FsbHNfOworICAgIHJldHVybiBzdGF0dXNfOworICB9
CisgIHZpcnR1YWwgYm9vbCBQYXNzZWQoYm9vbCBleGl0X3N0YXR1c19vaykgeworICAgIHBhcmVu
dF8tPnBhc3NlZF9hcmdzXy5wdXNoX2JhY2soZXhpdF9zdGF0dXNfb2spOworICAgIHJldHVybiBw
YXNzZWRfOworICB9CisgIHZpcnR1YWwgdm9pZCBBYm9ydChBYm9ydFJlYXNvbiByZWFzb24pIHsK
KyAgICBwYXJlbnRfLT5hYm9ydF9hcmdzXy5wdXNoX2JhY2socmVhc29uKTsKKyAgfQorCisgcHJp
dmF0ZToKKyAgTW9ja0RlYXRoVGVzdEZhY3RvcnkqIGNvbnN0IHBhcmVudF87CisgIGNvbnN0IFRl
c3RSb2xlIHJvbGVfOworICBjb25zdCBpbnQgc3RhdHVzXzsKKyAgY29uc3QgYm9vbCBwYXNzZWRf
OworfTsKKworCisvLyBNb2NrRGVhdGhUZXN0RmFjdG9yeSBjb25zdHJ1Y3Rvci4KK01vY2tEZWF0
aFRlc3RGYWN0b3J5OjpNb2NrRGVhdGhUZXN0RmFjdG9yeSgpCisgICAgOiBjcmVhdGVfKHRydWUp
LAorICAgICAgcm9sZV8oRGVhdGhUZXN0OjpPVkVSU0VFX1RFU1QpLAorICAgICAgc3RhdHVzXygw
KSwKKyAgICAgIHBhc3NlZF8odHJ1ZSksCisgICAgICBhc3N1bWVfcm9sZV9jYWxsc18oMCksCisg
ICAgICB3YWl0X2NhbGxzXygwKSwKKyAgICAgIHBhc3NlZF9hcmdzXygpLAorICAgICAgYWJvcnRf
YXJnc18oKSB7Cit9CisKKworLy8gU2V0cyB0aGUgcGFyYW1ldGVycyBmb3Igc3Vic2VxdWVudCBj
YWxscyB0byBDcmVhdGUuCit2b2lkIE1vY2tEZWF0aFRlc3RGYWN0b3J5OjpTZXRQYXJhbWV0ZXJz
KGJvb2wgY3JlYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
ZWF0aFRlc3Q6OlRlc3RSb2xlIHJvbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBzdGF0dXMsIGJvb2wgcGFzc2VkKSB7CisgIGNyZWF0ZV8gPSBjcmVhdGU7
CisgIHJvbGVfID0gcm9sZTsKKyAgc3RhdHVzXyA9IHN0YXR1czsKKyAgcGFzc2VkXyA9IHBhc3Nl
ZDsKKworICBhc3N1bWVfcm9sZV9jYWxsc18gPSAwOworICB3YWl0X2NhbGxzXyA9IDA7CisgIHBh
c3NlZF9hcmdzXy5jbGVhcigpOworICBhYm9ydF9hcmdzXy5jbGVhcigpOworfQorCisKKy8vIFNl
dHMgdGVzdCB0byBOVUxMIChpZiBjcmVhdGVfIGlzIGZhbHNlKSBvciB0byB0aGUgYWRkcmVzcyBv
ZiBhIG5ldworLy8gTW9ja0RlYXRoVGVzdCBvYmplY3Qgd2l0aCBwYXJhbWV0ZXJzIHRha2VuIGZy
b20gdGhlIGxhc3QgY2FsbAorLy8gdG8gU2V0UGFyYW1ldGVycyAoaWYgY3JlYXRlXyBpcyB0cnVl
KS4gIEFsd2F5cyByZXR1cm5zIHRydWUuCitib29sIE1vY2tEZWF0aFRlc3RGYWN0b3J5OjpDcmVh
dGUoY29uc3QgY2hhciogLypzdGF0ZW1lbnQqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpSRSogLypyZWdleCovLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qZmlsZSovLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKmxpbmUqLywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEZWF0aFRlc3QqKiB0ZXN0KSB7CisgIHRlc3RfZGVsZXRlZF8g
PSBmYWxzZTsKKyAgaWYgKGNyZWF0ZV8pIHsKKyAgICAqdGVzdCA9IG5ldyBNb2NrRGVhdGhUZXN0
KHRoaXMsIHJvbGVfLCBzdGF0dXNfLCBwYXNzZWRfKTsKKyAgfSBlbHNlIHsKKyAgICAqdGVzdCA9
IE5VTEw7CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisKKy8vIEEgdGVzdCBmaXh0dXJlIGZvciB0
ZXN0aW5nIHRoZSBsb2dpYyBvZiB0aGUgR1RFU1RfREVBVEhfVEVTVF8gbWFjcm8uCisvLyBJdCBp
bnN0YWxscyBhIE1vY2tEZWF0aFRlc3RGYWN0b3J5IHRoYXQgaXMgdXNlZCBmb3IgdGhlIGR1cmF0
aW9uCisvLyBvZiB0aGUgdGVzdCBjYXNlLgorY2xhc3MgTWFjcm9Mb2dpY0RlYXRoVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHN0YXRpYyB0ZXN0aW5nOjppbnRl
cm5hbDo6UmVwbGFjZURlYXRoVGVzdEZhY3RvcnkqIHJlcGxhY2VyXzsKKyAgc3RhdGljIE1vY2tE
ZWF0aFRlc3RGYWN0b3J5KiBmYWN0b3J5XzsKKworICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNl
KCkgeworICAgIGZhY3RvcnlfID0gbmV3IE1vY2tEZWF0aFRlc3RGYWN0b3J5OworICAgIHJlcGxh
Y2VyXyA9IG5ldyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVwbGFjZURlYXRoVGVzdEZhY3RvcnkoZmFj
dG9yeV8pOworICB9CisKKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBk
ZWxldGUgcmVwbGFjZXJfOworICAgIHJlcGxhY2VyXyA9IE5VTEw7CisgICAgZGVsZXRlIGZhY3Rv
cnlfOworICAgIGZhY3RvcnlfID0gTlVMTDsKKyAgfQorCisgIC8vIFJ1bnMgYSBkZWF0aCB0ZXN0
IHRoYXQgYnJlYWtzIHRoZSBydWxlcyBieSByZXR1cm5pbmcuICBTdWNoIGEgZGVhdGgKKyAgLy8g
dGVzdCBjYW5ub3QgYmUgcnVuIGRpcmVjdGx5IGZyb20gYSB0ZXN0IHJvdXRpbmUgdGhhdCB1c2Vz
IGEKKyAgLy8gTW9ja0RlYXRoVGVzdCwgb3IgdGhlIHJlbWFpbmRlciBvZiB0aGUgcm91dGluZSB3
aWxsIG5vdCBiZSBleGVjdXRlZC4KKyAgc3RhdGljIHZvaWQgUnVuUmV0dXJuaW5nRGVhdGhUZXN0
KGJvb2wqIGZsYWcpIHsKKyAgICBBU1NFUlRfREVBVEgoeyAgLy8gTk9MSU5UCisgICAgICAqZmxh
ZyA9IHRydWU7CisgICAgICByZXR1cm47CisgICAgfSwgIiIpOworICB9Cit9OworCit0ZXN0aW5n
OjppbnRlcm5hbDo6UmVwbGFjZURlYXRoVGVzdEZhY3RvcnkqIE1hY3JvTG9naWNEZWF0aFRlc3Q6
OnJlcGxhY2VyXworICAgID0gTlVMTDsKK01vY2tEZWF0aFRlc3RGYWN0b3J5KiBNYWNyb0xvZ2lj
RGVhdGhUZXN0OjpmYWN0b3J5XyA9IE5VTEw7CisKKworLy8gVGVzdCB0aGF0IG5vdGhpbmcgaGFw
cGVucyB3aGVuIHRoZSBmYWN0b3J5IGRvZXNuJ3QgcmV0dXJuIGEgRGVhdGhUZXN0OgorVEVTVF9G
KE1hY3JvTG9naWNEZWF0aFRlc3QsIE5vdGhpbmdIYXBwZW5zKSB7CisgIGJvb2wgZmxhZyA9IGZh
bHNlOworICBmYWN0b3J5Xy0+U2V0UGFyYW1ldGVycyhmYWxzZSwgRGVhdGhUZXN0OjpPVkVSU0VF
X1RFU1QsIDAsIHRydWUpOworICBFWFBFQ1RfREVBVEgoZmxhZyA9IHRydWUsICIiKTsKKyAgRVhQ
RUNUX0ZBTFNFKGZsYWcpOworICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxs
cygpKTsKKyAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7CisgIEVYUEVDVF9F
USgwVSwgZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOworICBFWFBFQ1RfRVEoMFUsIGZhY3Rvcnlf
LT5BYm9ydENhbGxzKCkpOworICBFWFBFQ1RfRkFMU0UoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkp
OworfQorCisvLyBUZXN0IHRoYXQgdGhlIHBhcmVudCBwcm9jZXNzIGRvZXNuJ3QgcnVuIHRoZSBk
ZWF0aCB0ZXN0IGNvZGUsCisvLyBhbmQgdGhhdCB0aGUgUGFzc2VkIG1ldGhvZCByZXR1cm5zIGZh
bHNlIHdoZW4gdGhlIChzaW11bGF0ZWQpCisvLyBjaGlsZCBwcm9jZXNzIGV4aXRzIHdpdGggc3Rh
dHVzIDA6CitURVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwgQ2hpbGRFeGl0c1N1Y2Nlc3NmdWxs
eSkgeworICBib29sIGZsYWcgPSBmYWxzZTsKKyAgZmFjdG9yeV8tPlNldFBhcmFtZXRlcnModHJ1
ZSwgRGVhdGhUZXN0OjpPVkVSU0VFX1RFU1QsIDAsIHRydWUpOworICBFWFBFQ1RfREVBVEgoZmxh
ZyA9IHRydWUsICIiKTsKKyAgRVhQRUNUX0ZBTFNFKGZsYWcpOworICBFWFBFQ1RfRVEoMSwgZmFj
dG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKKyAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5XYWl0
Q2FsbHMoKSk7CisgIEFTU0VSVF9FUSgxVSwgZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOworICBF
WFBFQ1RfRkFMU0UoZmFjdG9yeV8tPlBhc3NlZEFyZ3VtZW50KDApKTsKKyAgRVhQRUNUX0VRKDBV
LCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKKyAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3RE
ZWxldGVkKCkpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBQYXNzZWQgbWV0aG9kIHdhcyBnaXZl
biB0aGUgYXJndW1lbnQgInRydWUiIHdoZW4KKy8vIHRoZSAoc2ltdWxhdGVkKSBjaGlsZCBwcm9j
ZXNzIGV4aXRzIHdpdGggc3RhdHVzIDE6CitURVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwgQ2hp
bGRFeGl0c1Vuc3VjY2Vzc2Z1bGx5KSB7CisgIGJvb2wgZmxhZyA9IGZhbHNlOworICBmYWN0b3J5
Xy0+U2V0UGFyYW1ldGVycyh0cnVlLCBEZWF0aFRlc3Q6Ok9WRVJTRUVfVEVTVCwgMSwgdHJ1ZSk7
CisgIEVYUEVDVF9ERUFUSChmbGFnID0gdHJ1ZSwgIiIpOworICBFWFBFQ1RfRkFMU0UoZmxhZyk7
CisgIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOworICBFWFBFQ1Rf
RVEoMSwgZmFjdG9yeV8tPldhaXRDYWxscygpKTsKKyAgQVNTRVJUX0VRKDFVLCBmYWN0b3J5Xy0+
UGFzc2VkQ2FsbHMoKSk7CisgIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5QYXNzZWRBcmd1bWVudCgw
KSk7CisgIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7CisgIEVYUEVDVF9U
UlVFKGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgKHNp
bXVsYXRlZCkgY2hpbGQgcHJvY2VzcyBleGVjdXRlcyB0aGUgZGVhdGggdGVzdAorLy8gY29kZSwg
YW5kIGlzIGFib3J0ZWQgd2l0aCB0aGUgY29ycmVjdCBBYm9ydFJlYXNvbiBpZiBpdAorLy8gZXhl
Y3V0ZXMgYSByZXR1cm4gc3RhdGVtZW50LgorVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENo
aWxkUGVyZm9ybXNSZXR1cm4pIHsKKyAgYm9vbCBmbGFnID0gZmFsc2U7CisgIGZhY3RvcnlfLT5T
ZXRQYXJhbWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6RVhFQ1VURV9URVNULCAwLCB0cnVlKTsKKyAg
UnVuUmV0dXJuaW5nRGVhdGhUZXN0KCZmbGFnKTsKKyAgRVhQRUNUX1RSVUUoZmxhZyk7CisgIEVY
UEVDVF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOworICBFWFBFQ1RfRVEoMCwg
ZmFjdG9yeV8tPldhaXRDYWxscygpKTsKKyAgRVhQRUNUX0VRKDBVLCBmYWN0b3J5Xy0+UGFzc2Vk
Q2FsbHMoKSk7CisgIEVYUEVDVF9FUSgxVSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7CisgIEVY
UEVDVF9FUShEZWF0aFRlc3Q6OlRFU1RfRU5DT1VOVEVSRURfUkVUVVJOX1NUQVRFTUVOVCwKKyAg
ICAgICAgICAgIGZhY3RvcnlfLT5BYm9ydEFyZ3VtZW50KDApKTsKKyAgRVhQRUNUX1RSVUUoZmFj
dG9yeV8tPlRlc3REZWxldGVkKCkpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSAoc2ltdWxhdGVk
KSBjaGlsZCBwcm9jZXNzIGlzIGFib3J0ZWQgd2l0aCB0aGUKKy8vIGNvcnJlY3QgQWJvcnRSZWFz
b24gaWYgaXQgZG9lcyBub3QgZGllLgorVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxk
RG9lc05vdERpZSkgeworICBib29sIGZsYWcgPSBmYWxzZTsKKyAgZmFjdG9yeV8tPlNldFBhcmFt
ZXRlcnModHJ1ZSwgRGVhdGhUZXN0OjpFWEVDVVRFX1RFU1QsIDAsIHRydWUpOworICBFWFBFQ1Rf
REVBVEgoZmxhZyA9IHRydWUsICIiKTsKKyAgRVhQRUNUX1RSVUUoZmxhZyk7CisgIEVYUEVDVF9F
USgxLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOworICBFWFBFQ1RfRVEoMCwgZmFjdG9y
eV8tPldhaXRDYWxscygpKTsKKyAgRVhQRUNUX0VRKDBVLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMo
KSk7CisgIC8vIFRoaXMgdGltZSB0aGVyZSBhcmUgdHdvIGNhbGxzIHRvIEFib3J0OiBvbmUgc2lu
Y2UgdGhlIHRlc3QgZGlkbid0CisgIC8vIGRpZSwgYW5kIGFub3RoZXIgZnJvbSB0aGUgUmV0dXJu
U2VudGluZWwgd2hlbiBpdCdzIGRlc3Ryb3llZC4gIFRoZQorICAvLyBzZW50aW5lbCBub3JtYWxs
eSBpc24ndCBkZXN0cm95ZWQgaWYgYSB0ZXN0IGRvZXNuJ3QgZGllLCBzaW5jZQorICAvLyBfZXhp
dCgyKSBpcyBjYWxsZWQgaW4gdGhhdCBjYXNlIGJ5IEZvcmtpbmdEZWF0aFRlc3QsIGJ1dCBub3Qg
YnkKKyAgLy8gb3VyIE1vY2tEZWF0aFRlc3QuCisgIEFTU0VSVF9FUSgyVSwgZmFjdG9yeV8tPkFi
b3J0Q2FsbHMoKSk7CisgIEVYUEVDVF9FUShEZWF0aFRlc3Q6OlRFU1RfRElEX05PVF9ESUUsCisg
ICAgICAgICAgICBmYWN0b3J5Xy0+QWJvcnRBcmd1bWVudCgwKSk7CisgIEVYUEVDVF9FUShEZWF0
aFRlc3Q6OlRFU1RfRU5DT1VOVEVSRURfUkVUVVJOX1NUQVRFTUVOVCwKKyAgICAgICAgICAgIGZh
Y3RvcnlfLT5BYm9ydEFyZ3VtZW50KDEpKTsKKyAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3RE
ZWxldGVkKCkpOworfQorCisvLyBUZXN0cyB0aGF0IGEgc3VjY2Vzc2Z1bCBkZWF0aCB0ZXN0IGRv
ZXMgbm90IHJlZ2lzdGVyIGEgc3VjY2Vzc2Z1bAorLy8gdGVzdCBwYXJ0LgorVEVTVChTdWNjZXNz
UmVnaXN0cmF0aW9uRGVhdGhUZXN0LCBOb1N1Y2Nlc3NQYXJ0KSB7CisgIEVYUEVDVF9ERUFUSChf
ZXhpdCgxKSwgIiIpOworICBFWFBFQ1RfRVEoMCwgR2V0VW5pdFRlc3RJbXBsKCktPmN1cnJlbnRf
dGVzdF9yZXN1bHQoKS0+dG90YWxfcGFydF9jb3VudCgpKTsKK30KKworVEVTVChTdHJlYW1pbmdB
c3NlcnRpb25zRGVhdGhUZXN0LCBEZWF0aFRlc3QpIHsKKyAgRVhQRUNUX0RFQVRIKF9leGl0KDEp
LCAiIikgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7CisgIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwg
IiIpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7
ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMCksICIiKSA8PCAiZXhwZWN0ZWQg
ZmFpbHVyZSI7CisgIH0sICJleHBlY3RlZCBmYWlsdXJlIik7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9ERUFUSChfZXhpdCgwKSwgIiIpIDw8ICJleHBl
Y3RlZCBmYWlsdXJlIjsKKyAgfSwgImV4cGVjdGVkIGZhaWx1cmUiKTsKK30KKworLy8gVGVzdHMg
dGhhdCBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbiByZXR1cm5zIGFuIGVtcHR5IHN0cmluZyB3aGVu
IHRoZQorLy8gbGFzdCBlcnJvciBpcyAwIGFuZCBub24tZW1wdHkgc3RyaW5nIHdoZW4gaXQgaXMg
bm9uLXplcm8uCitURVNUKEdldExhc3RFcnJub0Rlc2NyaXB0aW9uLCBHZXRMYXN0RXJybm9EZXNj
cmlwdGlvbldvcmtzKSB7CisgIGVycm5vID0gRU5PRU5UOworICBFWFBFQ1RfU1RSTkUoIiIsIEdl
dExhc3RFcnJub0Rlc2NyaXB0aW9uKCkuY19zdHIoKSk7CisgIGVycm5vID0gMDsKKyAgRVhQRUNU
X1NUUkVRKCIiLCBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpLmNfc3RyKCkpOworfQorCisjIGlm
IEdURVNUX09TX1dJTkRPV1MKK1RFU1QoQXV0b0hhbmRsZVRlc3QsIEF1dG9IYW5kbGVXb3Jrcykg
eworICBIQU5ETEUgaGFuZGxlID0gOjpDcmVhdGVFdmVudChOVUxMLCBGQUxTRSwgRkFMU0UsIE5V
TEwpOworICBBU1NFUlRfTkUoSU5WQUxJRF9IQU5ETEVfVkFMVUUsIGhhbmRsZSk7CisKKyAgLy8g
VGVzdHMgdGhhdCB0aGUgQXV0b0hhbmRsZSBpcyBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgd2l0aCBh
IGhhbmRsZS4KKyAgdGVzdGluZzo6aW50ZXJuYWw6OkF1dG9IYW5kbGUgYXV0b19oYW5kbGUoaGFu
ZGxlKTsKKyAgRVhQRUNUX0VRKGhhbmRsZSwgYXV0b19oYW5kbGUuR2V0KCkpOworCisgIC8vIFRl
c3RzIHRoYXQgUmVzZXQgYXNzaWducyBJTlZBTElEX0hBTkRMRV9WQUxVRS4KKyAgLy8gTm90ZSB0
aGF0IHRoaXMgY2Fubm90IHZlcmlmeSB3aGV0aGVyIHRoZSBvcmlnaW5hbCBoYW5kbGUgaXMgY2xv
c2VkLgorICBhdXRvX2hhbmRsZS5SZXNldCgpOworICBFWFBFQ1RfRVEoSU5WQUxJRF9IQU5ETEVf
VkFMVUUsIGF1dG9faGFuZGxlLkdldCgpKTsKKworICAvLyBUZXN0cyB0aGF0IFJlc2V0IGFzc2ln
bnMgdGhlIG5ldyBoYW5kbGUuCisgIC8vIE5vdGUgdGhhdCB0aGlzIGNhbm5vdCB2ZXJpZnkgd2hl
dGhlciB0aGUgb3JpZ2luYWwgaGFuZGxlIGlzIGNsb3NlZC4KKyAgaGFuZGxlID0gOjpDcmVhdGVF
dmVudChOVUxMLCBGQUxTRSwgRkFMU0UsIE5VTEwpOworICBBU1NFUlRfTkUoSU5WQUxJRF9IQU5E
TEVfVkFMVUUsIGhhbmRsZSk7CisgIGF1dG9faGFuZGxlLlJlc2V0KGhhbmRsZSk7CisgIEVYUEVD
VF9FUShoYW5kbGUsIGF1dG9faGFuZGxlLkdldCgpKTsKKworICAvLyBUZXN0cyB0aGF0IEF1dG9I
YW5kbGUgY29udGFpbnMgSU5WQUxJRF9IQU5ETEVfVkFMVUUgYnkgZGVmYXVsdC4KKyAgdGVzdGlu
Zzo6aW50ZXJuYWw6OkF1dG9IYW5kbGUgYXV0b19oYW5kbGUyOworICBFWFBFQ1RfRVEoSU5WQUxJ
RF9IQU5ETEVfVkFMVUUsIGF1dG9faGFuZGxlMi5HZXQoKSk7Cit9CisjIGVuZGlmICAvLyBHVEVT
VF9PU19XSU5ET1dTCisKKyMgaWYgR1RFU1RfT1NfV0lORE9XUwordHlwZWRlZiB1bnNpZ25lZCBf
X2ludDY0IEJpZ2dlc3RQYXJzYWJsZTsKK3R5cGVkZWYgc2lnbmVkIF9faW50NjQgQmlnZ2VzdFNp
Z25lZFBhcnNhYmxlOworIyBlbHNlCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBCaWdnZXN0
UGFyc2FibGU7Cit0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgQmlnZ2VzdFNpZ25lZFBhcnNhYmxl
OworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisvLyBXZSBjYW5ub3QgdXNlIHN0ZDo6
bnVtZXJpY19saW1pdHM8VD46Om1heCgpIGFzIGl0IGNsYXNoZXMgd2l0aCB0aGUKKy8vIG1heCgp
IG1hY3JvIGRlZmluZWQgYnkgPHdpbmRvd3MuaD4uCitjb25zdCBCaWdnZXN0UGFyc2FibGUga0Jp
Z2dlc3RQYXJzYWJsZU1heCA9IFVMTE9OR19NQVg7Citjb25zdCBCaWdnZXN0U2lnbmVkUGFyc2Fi
bGUga0JpZ2dlc3RTaWduZWRQYXJzYWJsZU1heCA9IExMT05HX01BWDsKKworVEVTVChQYXJzZU5h
dHVyYWxOdW1iZXJUZXN0LCBSZWplY3RzSW52YWxpZEZvcm1hdCkgeworICBCaWdnZXN0UGFyc2Fi
bGUgcmVzdWx0ID0gMDsKKworICAvLyBSZWplY3RzIG5vbi1udW1iZXJzLgorICBFWFBFQ1RfRkFM
U0UoUGFyc2VOYXR1cmFsTnVtYmVyKCJub24tbnVtYmVyIHN0cmluZyIsICZyZXN1bHQpKTsKKwor
ICAvLyBSZWplY3RzIG51bWJlcnMgd2l0aCB3aGl0ZXNwYWNlIHByZWZpeC4KKyAgRVhQRUNUX0ZB
TFNFKFBhcnNlTmF0dXJhbE51bWJlcigiIDEyMyIsICZyZXN1bHQpKTsKKworICAvLyBSZWplY3Rz
IG5lZ2F0aXZlIG51bWJlcnMuCisgIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoIi0x
MjMiLCAmcmVzdWx0KSk7CisKKyAgLy8gUmVqZWN0cyBudW1iZXJzIHN0YXJ0aW5nIHdpdGggYSBw
bHVzIHNpZ24uCisgIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoIisxMjMiLCAmcmVz
dWx0KSk7CisgIGVycm5vID0gMDsKK30KKworVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBS
ZWplY3RzT3ZlcmZsb3duTnVtYmVycykgeworICBCaWdnZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsK
KworICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCI5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OSIsICZyZXN1bHQpKTsKKworICBzaWduZWQgY2hhciBjaGFyX3Jlc3VsdCA9IDA7CisgIEVY
UEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoIjIwMCIsICZjaGFyX3Jlc3VsdCkpOworICBl
cnJubyA9IDA7Cit9CisKK1RFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgQWNjZXB0c1ZhbGlk
TnVtYmVycykgeworICBCaWdnZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsKKworICByZXN1bHQgPSAw
OworICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjEyMyIsICZyZXN1bHQpKTsKKyAg
RVhQRUNUX0VRKDEyM1UsIHJlc3VsdCk7CisKKyAgLy8gQ2hlY2sgMCBhcyBhbiBlZGdlIGNhc2Uu
CisgIHJlc3VsdCA9IDE7CisgIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcigiMCIsICZy
ZXN1bHQpKTsKKyAgRVhQRUNUX0VRKDBVLCByZXN1bHQpOworCisgIHJlc3VsdCA9IDE7CisgIEFT
U0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcigiMDAwMDAiLCAmcmVzdWx0KSk7CisgIEVYUEVD
VF9FUSgwVSwgcmVzdWx0KTsKK30KKworVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBBY2Nl
cHRzVHlwZUxpbWl0cykgeworICBNZXNzYWdlIG1zZzsKKyAgbXNnIDw8IGtCaWdnZXN0UGFyc2Fi
bGVNYXg7CisKKyAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7CisgIEVYUEVDVF9UUlVFKFBh
cnNlTmF0dXJhbE51bWJlcihtc2cuR2V0U3RyaW5nKCksICZyZXN1bHQpKTsKKyAgRVhQRUNUX0VR
KGtCaWdnZXN0UGFyc2FibGVNYXgsIHJlc3VsdCk7CisKKyAgTWVzc2FnZSBtc2cyOworICBtc2cy
IDw8IGtCaWdnZXN0U2lnbmVkUGFyc2FibGVNYXg7CisKKyAgQmlnZ2VzdFNpZ25lZFBhcnNhYmxl
IHNpZ25lZF9yZXN1bHQgPSAwOworICBFWFBFQ1RfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIobXNn
Mi5HZXRTdHJpbmcoKSwgJnNpZ25lZF9yZXN1bHQpKTsKKyAgRVhQRUNUX0VRKGtCaWdnZXN0U2ln
bmVkUGFyc2FibGVNYXgsIHNpZ25lZF9yZXN1bHQpOworCisgIE1lc3NhZ2UgbXNnMzsKKyAgbXNn
MyA8PCBJTlRfTUFYOworCisgIGludCBpbnRfcmVzdWx0ID0gMDsKKyAgRVhQRUNUX1RSVUUoUGFy
c2VOYXR1cmFsTnVtYmVyKG1zZzMuR2V0U3RyaW5nKCksICZpbnRfcmVzdWx0KSk7CisgIEVYUEVD
VF9FUShJTlRfTUFYLCBpbnRfcmVzdWx0KTsKKworICBNZXNzYWdlIG1zZzQ7CisgIG1zZzQgPDwg
VUlOVF9NQVg7CisKKyAgdW5zaWduZWQgaW50IHVpbnRfcmVzdWx0ID0gMDsKKyAgRVhQRUNUX1RS
VUUoUGFyc2VOYXR1cmFsTnVtYmVyKG1zZzQuR2V0U3RyaW5nKCksICZ1aW50X3Jlc3VsdCkpOwor
ICBFWFBFQ1RfRVEoVUlOVF9NQVgsIHVpbnRfcmVzdWx0KTsKK30KKworVEVTVChQYXJzZU5hdHVy
YWxOdW1iZXJUZXN0LCBXb3Jrc0ZvclNob3J0ZXJJbnRlZ2VycykgeworICBzaG9ydCBzaG9ydF9y
ZXN1bHQgPSAwOworICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjEyMyIsICZzaG9y
dF9yZXN1bHQpKTsKKyAgRVhQRUNUX0VRKDEyMywgc2hvcnRfcmVzdWx0KTsKKworICBzaWduZWQg
Y2hhciBjaGFyX3Jlc3VsdCA9IDA7CisgIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcigi
MTIzIiwgJmNoYXJfcmVzdWx0KSk7CisgIEVYUEVDVF9FUSgxMjMsIGNoYXJfcmVzdWx0KTsKK30K
KworIyBpZiBHVEVTVF9PU19XSU5ET1dTCitURVNUKEVudmlyb25tZW50VGVzdCwgSGFuZGxlRml0
c0ludG9TaXplVCkgeworICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgdGVzdCBhZnRlciB0aGlzIGNv
bmRpdGlvbiBpcyB2ZXJpZmllZAorICAvLyBpbiBhIHN0YXRpYyBhc3NlcnRpb24gaW4gZ3Rlc3Qt
ZGVhdGgtdGVzdC5jYyBpbiB0aGUgZnVuY3Rpb24KKyAgLy8gR2V0U3RhdHVzRmlsZURlc2NyaXB0
b3IuCisgIEFTU0VSVF9UUlVFKHNpemVvZihIQU5ETEUpIDw9IHNpemVvZihzaXplX3QpKTsKK30K
KyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVB
VEhfSUZfU1VQUE9SVEVEL0FTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgdHJpZ2dlcgorLy8gZmFp
bHVyZXMgd2hlbiBkZWF0aCB0ZXN0cyBhcmUgYXZhaWxhYmxlIG9uIHRoZSBzeXN0ZW0uCitURVNU
KENvbmRpdGlvbmFsRGVhdGhNYWNyb3NEZWF0aFRlc3QsIEV4cGVjdHNEZWF0aFdoZW5EZWF0aFRl
c3RzQXZhaWxhYmxlKSB7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoRGllSW5zaWRlKCJD
b25kRGVhdGhUZXN0RXhwZWN0TWFjcm8iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZGVhdGggaW5zaWRlIENvbmREZWF0aFRlc3RFeHBlY3RNYWNybyIpOworICBBU1NFUlRfREVBVEhf
SUZfU1VQUE9SVEVEKERpZUluc2lkZSgiQ29uZERlYXRoVGVzdEFzc2VydE1hY3JvIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImRlYXRoIGluc2lkZSBDb25kRGVhdGhUZXN0QXNzZXJ0
TWFjcm8iKTsKKworICAvLyBFbXB0eSBzdGF0ZW1lbnQgd2lsbCBub3QgY3Jhc2gsIHdoaWNoIG11
c3QgdHJpZ2dlciBhIGZhaWx1cmUuCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9E
RUFUSF9JRl9TVVBQT1JURUQoOywgIiIpLCAiIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFT
U0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIpLCAiIik7Cit9CisKK1RFU1QoSW5EZWF0aFRl
c3RDaGlsZERlYXRoVGVzdCwgUmVwb3J0c0RlYXRoVGVzdENvcnJlY3RseUluRmFzdFN0eWxlKSB7
CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVY
UEVDVF9GQUxTRShJbkRlYXRoVGVzdENoaWxkKCkpOworICBFWFBFQ1RfREVBVEgoeworICAgIGZw
cmludGYoc3RkZXJyLCBJbkRlYXRoVGVzdENoaWxkKCkgPyAiSW5zaWRlIiA6ICJPdXRzaWRlIik7
CisgICAgZmZsdXNoKHN0ZGVycik7CisgICAgX2V4aXQoMSk7CisgIH0sICJJbnNpZGUiKTsKK30K
KworVEVTVChJbkRlYXRoVGVzdENoaWxkRGVhdGhUZXN0LCBSZXBvcnRzRGVhdGhUZXN0Q29ycmVj
dGx5SW5UaHJlYWRTYWZlU3R5bGUpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0
X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKKyAgRVhQRUNUX0ZBTFNFKEluRGVhdGhUZXN0Q2hpbGQo
KSk7CisgIEVYUEVDVF9ERUFUSCh7CisgICAgZnByaW50ZihzdGRlcnIsIEluRGVhdGhUZXN0Q2hp
bGQoKSA/ICJJbnNpZGUiIDogIk91dHNpZGUiKTsKKyAgICBmZmx1c2goc3RkZXJyKTsKKyAgICBf
ZXhpdCgxKTsKKyAgfSwgIkluc2lkZSIpOworfQorCisjZWxzZSAgLy8gIUdURVNUX0hBU19ERUFU
SF9URVNUIGZvbGxvd3MKKwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkNhcHR1cmVTdGRlcnI7
Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0Q2FwdHVyZWRTdGRlcnI7CisKKy8vIFRlc3Rz
IHRoYXQgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRC9BU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVE
IGFyZSBzdGlsbAorLy8gZGVmaW5lZCBidXQgZG8gbm90IHRyaWdnZXIgZmFpbHVyZXMgd2hlbiBk
ZWF0aCB0ZXN0cyBhcmUgbm90IGF2YWlsYWJsZSBvbgorLy8gdGhlIHN5c3RlbS4KK1RFU1QoQ29u
ZGl0aW9uYWxEZWF0aE1hY3Jvc1Rlc3QsIFdhcm5zV2hlbkRlYXRoVGVzdHNOb3RBdmFpbGFibGUp
IHsKKyAgLy8gRW1wdHkgc3RhdGVtZW50IHdpbGwgbm90IGNyYXNoLCBidXQgdGhhdCBzaG91bGQg
bm90IHRyaWdnZXIgYSBmYWlsdXJlCisgIC8vIHdoZW4gZGVhdGggdGVzdHMgYXJlIG5vdCBzdXBw
b3J0ZWQuCisgIENhcHR1cmVTdGRlcnIoKTsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg7
LCAiIik7CisgIHN0ZDo6c3RyaW5nIG91dHB1dCA9IEdldENhcHR1cmVkU3RkZXJyKCk7CisgIEFT
U0VSVF9UUlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0
Zm9ybSIpKTsKKyAgQVNTRVJUX1RSVUUoTlVMTCAhPSBzdHJzdHIob3V0cHV0LmNfc3RyKCksICI7
IikpOworCisgIC8vIFRoZSBzdHJlYW1lZCBtZXNzYWdlIHNob3VsZCBub3QgYmUgcHJpbnRlZCBh
cyB0aGVyZSBpcyBubyB0ZXN0IGZhaWx1cmUuCisgIENhcHR1cmVTdGRlcnIoKTsKKyAgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIikgPDwgInN0cmVhbWVkIG1lc3NhZ2UiOworICBvdXRw
dXQgPSBHZXRDYXB0dXJlZFN0ZGVycigpOworICBBU1NFUlRfVFJVRShOVUxMID09IHN0cnN0cihv
dXRwdXQuY19zdHIoKSwgInN0cmVhbWVkIG1lc3NhZ2UiKSk7CisKKyAgQ2FwdHVyZVN0ZGVycigp
OworICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKTsgIC8vIE5PTElOVAorICBvdXRw
dXQgPSBHZXRDYXB0dXJlZFN0ZGVycigpOworICBBU1NFUlRfVFJVRShOVUxMICE9IHN0cnN0cihv
dXRwdXQuY19zdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlYXRoIHRlc3Rz
IGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKSk7CisgIEFTU0VSVF9UUlVFKE5V
TEwgIT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLCAiOyIpKTsKKworICBDYXB0dXJlU3RkZXJyKCk7
CisgIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIpIDw8ICJzdHJlYW1lZCBtZXNzYWdl
IjsgIC8vIE5PTElOVAorICBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVycigpOworICBBU1NFUlRf
VFJVRShOVUxMID09IHN0cnN0cihvdXRwdXQuY19zdHIoKSwgInN0cmVhbWVkIG1lc3NhZ2UiKSk7
Cit9CisKK3ZvaWQgRnVuY1dpdGhBc3NlcnQoaW50KiBuKSB7CisgIEFTU0VSVF9ERUFUSF9JRl9T
VVBQT1JURUQocmV0dXJuOywgIiIpOworICAoKm4pKys7Cit9CisKKy8vIFRlc3RzIHRoYXQgQVNT
RVJUX0RFQVRIX0lGX1NVUFBPUlRFRCBkb2VzIG5vdCByZXR1cm4gZnJvbSB0aGUgY3VycmVudAor
Ly8gZnVuY3Rpb24gKGFzIEFTU0VSVF9ERUFUSCBkb2VzKSBpZiBkZWF0aCB0ZXN0cyBhcmUgbm90
IHN1cHBvcnRlZC4KK1RFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc1Rlc3QsIEFzc2VydERlYXRE
b2VzTm90UmV0dXJuaElmVW5zdXBwb3J0ZWQpIHsKKyAgaW50IG4gPSAwOworICBGdW5jV2l0aEFz
c2VydCgmbik7CisgIEVYUEVDVF9FUSgxLCBuKTsKK30KKworI2VuZGlmICAvLyAhR1RFU1RfSEFT
X0RFQVRIX1RFU1QKKworLy8gVGVzdHMgdGhhdCB0aGUgZGVhdGggdGVzdCBtYWNyb3MgZXhwYW5k
IHRvIGNvZGUgd2hpY2ggbWF5IG9yIG1heSBub3QKKy8vIGJlIGZvbGxvd2VkIGJ5IG9wZXJhdG9y
PDwsIGFuZCB0aGF0IGluIGVpdGhlciBjYXNlIHRoZSBjb21wbGV0ZSB0ZXh0CisvLyBjb21wcmlz
ZXMgb25seSBhIHNpbmdsZSBDKysgc3RhdGVtZW50LgorLy8KKy8vIFRoZSBzeW50YXggc2hvdWxk
IHdvcmsgd2hldGhlciBkZWF0aCB0ZXN0cyBhcmUgYXZhaWxhYmxlIG9yIG5vdC4KK1RFU1QoQ29u
ZGl0aW9uYWxEZWF0aE1hY3Jvc1N5bnRheERlYXRoVGVzdCwgU2luZ2xlU3RhdGVtZW50KSB7Cisg
IGlmIChBbHdheXNGYWxzZSgpKQorICAgIC8vIFRoaXMgd291bGQgZmFpbCBpZiBleGVjdXRlZDsg
dGhpcyBpcyBhIGNvbXBpbGF0aW9uIHRlc3Qgb25seQorICAgIEFTU0VSVF9ERUFUSF9JRl9TVVBQ
T1JURUQocmV0dXJuLCAiIik7CisKKyAgaWYgKEFsd2F5c1RydWUoKSkKKyAgICBFWFBFQ1RfREVB
VEhfSUZfU1VQUE9SVEVEKF9leGl0KDEpLCAiIik7CisgIGVsc2UKKyAgICAvLyBUaGlzIGVtcHR5
ICJlbHNlIiBicmFuY2ggaXMgbWVhbnQgdG8gZW5zdXJlIHRoYXQgRVhQRUNUX0RFQVRICisgICAg
Ly8gZG9lc24ndCBleHBhbmQgaW50byBhbiAiaWYiIHN0YXRlbWVudCB3aXRob3V0IGFuICJlbHNl
IgorICAgIDsgIC8vIE5PTElOVAorCisgIGlmIChBbHdheXNGYWxzZSgpKQorICAgIEFTU0VSVF9E
RUFUSF9JRl9TVVBQT1JURUQocmV0dXJuLCAiIikgPDwgImRpZCBub3QgZGllIjsKKworICBpZiAo
QWx3YXlzRmFsc2UoKSkKKyAgICA7ICAvLyBOT0xJTlQKKyAgZWxzZQorICAgIEVYUEVDVF9ERUFU
SF9JRl9TVVBQT1JURUQoX2V4aXQoMSksICIiKSA8PCAxIDw8IDIgPDwgMzsKK30KKworLy8gVGVz
dHMgdGhhdCBjb25kaXRpb25hbCBkZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29kZSB3aGlj
aCBpbnRlcmFjdHMKKy8vIHdlbGwgd2l0aCBzd2l0Y2ggc3RhdGVtZW50cy4KK1RFU1QoQ29uZGl0
aW9uYWxEZWF0aE1hY3Jvc1N5bnRheERlYXRoVGVzdCwgU3dpdGNoU3RhdGVtZW50KSB7CisgIC8v
IE1pY3Jvc29mdCBjb21waWxlciB1c3VhbGx5IGNvbXBsYWlucyBhYm91dCBzd2l0Y2ggc3RhdGVt
ZW50cyB3aXRob3V0CisgIC8vIGNhc2UgbGFiZWxzLiBXZSBzdXBwcmVzcyB0aGF0IHdhcm5pbmcg
Zm9yIHRoaXMgdGVzdC4KKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDA2NSkK
KworICBzd2l0Y2ggKDApCisgICAgZGVmYXVsdDoKKyAgICAgIEFTU0VSVF9ERUFUSF9JRl9TVVBQ
T1JURUQoX2V4aXQoMSksICIiKQorICAgICAgICAgIDw8ICJleGl0IGluIGRlZmF1bHQgc3dpdGNo
IGhhbmRsZXIiOworCisgIHN3aXRjaCAoMCkKKyAgICBjYXNlIDA6CisgICAgICBFWFBFQ1RfREVB
VEhfSUZfU1VQUE9SVEVEKF9leGl0KDEpLCAiIikgPDwgImV4aXQgaW4gc3dpdGNoIGNhc2UiOwor
CisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQorfQorCisvLyBUZXN0cyB0aGF0
IGEgdGVzdCBjYXNlIHdob3NlIG5hbWUgZW5kcyB3aXRoICJEZWF0aFRlc3QiIHdvcmtzIGZpbmUK
Ky8vIG9uIFdpbmRvd3MuCitURVNUKE5vdEFEZWF0aFRlc3QsIFRlc3QpIHsKKyAgU1VDQ0VFRCgp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0
LWRlYXRoLXRlc3RfZXhfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhiOTQ3MGZjODhhZDE3
YWFlYjY2NGQ0N2MyNzBjZmNhYTczMWJlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MKQEAgLTAs
MCArMSw5MiBAQAorLy8gQ29weXJpZ2h0IDIwMTAsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0Ogor
Ly8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisv
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisvLworLy8gVGVzdHMgdGhhdCB2ZXJpZnkgaW50ZXJhY3Rpb24gb2YgZXhjZXB0aW9ucyBhbmQg
ZGVhdGggdGVzdHMuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgiCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCisKKyMgaWYg
R1RFU1RfSEFTX1NFSAorIyAgaW5jbHVkZSA8d2luZG93cy5oPiAgICAgICAgICAvLyBGb3IgUmFp
c2VFeGNlcHRpb24oKS4KKyMgZW5kaWYKKworIyBpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIK
KworIyBpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisjICBpbmNsdWRlIDxleGNlcHRpb24+ICAv
LyBGb3Igc3RkOjpleGNlcHRpb24uCisKKy8vIFRlc3RzIHRoYXQgZGVhdGggdGVzdHMgcmVwb3J0
IHRocm93biBleGNlcHRpb25zIGFzIGZhaWx1cmVzIGFuZCB0aGF0IHRoZQorLy8gZXhjZXB0aW9u
cyBkbyBub3QgZXNjYXBlIGRlYXRoIHRlc3QgbWFjcm9zLgorVEVTVChDeHhFeGNlcHRpb25EZWF0
aFRlc3QsIEV4Y2VwdGlvbklzRmFpbHVyZSkgeworICB0cnkgeworICAgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9ERUFUSCh0aHJvdyAxLCAiIiksICJ0aHJldyBhbiBleGNlcHRpb24i
KTsKKyAgfSBjYXRjaCAoLi4uKSB7ICAvLyBOT0xJTlQKKyAgICBGQUlMKCkgPDwgIkFuIGV4Y2Vw
dGlvbiBlc2NhcGVkIGEgZGVhdGggdGVzdCBtYWNybyBpbnZvY2F0aW9uICIKKyAgICAgICAgICAg
PDwgIndpdGggY2F0Y2hfZXhjZXB0aW9ucyAiCisgICAgICAgICAgIDw8ICh0ZXN0aW5nOjpHVEVT
VF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpID8gImVuYWJsZWQiIDogImRpc2FibGVkIik7CisgIH0K
K30KKworY2xhc3MgVGVzdEV4Y2VwdGlvbiA6IHB1YmxpYyBzdGQ6OmV4Y2VwdGlvbiB7CisgcHVi
bGljOgorICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHdoYXQoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJu
ICJleGNlcHRpb25hbCBtZXNzYWdlIjsgfQorfTsKKworVEVTVChDeHhFeGNlcHRpb25EZWF0aFRl
c3QsIFByaW50c01lc3NhZ2VGb3JTdGRFeGNlcHRpb25zKSB7CisgIC8vIFZlcmlmaWVzIHRoYXQg
dGhlIGV4Y2VwdGlvbiBtZXNzYWdlIGlzIHF1b3RlZCBpbiB0aGUgZmFpbHVyZSB0ZXh0LgorICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgodGhyb3cgVGVzdEV4Y2VwdGlvbigp
LCAiIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNlcHRpb25hbCBtZXNzYWdlIik7
CisgIC8vIFZlcmlmaWVzIHRoYXQgdGhlIGxvY2F0aW9uIGlzIG1lbnRpb25lZCBpbiB0aGUgZmFp
bHVyZSB0ZXh0LgorICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgodGhyb3cg
VGVzdEV4Y2VwdGlvbigpLCAiIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJnb29nbGV0
ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYyIpOworfQorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0VY
Q0VQVElPTlMKKworIyBpZiBHVEVTVF9IQVNfU0VICisvLyBUZXN0cyB0aGF0IGVuYWJsaW5nIGlu
dGVyY2VwdGlvbiBvZiBTRUggZXhjZXB0aW9ucyB3aXRoIHRoZQorLy8gY2F0Y2hfZXhjZXB0aW9u
cyBmbGFnIGRvZXMgbm90IGludGVyZmVyZSB3aXRoIFNFSCBleGNlcHRpb25zIGJlaW5nCisvLyB0
cmVhdGVkIGFzIGRlYXRoIGJ5IGRlYXRoIHRlc3RzLgorVEVTVChTZWhFeGNlcHRpb25EZWFzVGVz
dCwgQ2F0Y2hFeGNlcHRpb25zRG9lc05vdEludGVyZmVyZSkgeworICBFWFBFQ1RfREVBVEgoUmFp
c2VFeGNlcHRpb24oNDIsIDB4MCwgMCwgTlVMTCksICIiKQorICAgICAgPDwgIndpdGggY2F0Y2hf
ZXhjZXB0aW9ucyAiCisgICAgICA8PCAodGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRp
b25zKSA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpOworfQorIyBlbmRpZgorCisjZW5kaWYgIC8v
IEdURVNUX0hBU19ERUFUSF9URVNUCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikg
eworICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIHRlc3Rpbmc6OkdU
RVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgPSBHVEVTVF9FTkFCTEVfQ0FUQ0hfRVhDRVBUSU9O
U18gIT0gMDsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3QucHkgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0LnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmUxZWZlZWUxZWFiOGM2ZGFjYjVkMjkyNmY0YjVjOTA4MDkzOGRiMTMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZW52LXZh
ci10ZXN0LnB5CkBAIC0wLDAgKzEsMTE3IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMg
Q29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisiIiJWZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IGNvcnJlY3RseSBw
YXJzZXMgZW52aXJvbm1lbnQgdmFyaWFibGVzLiIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBndGVz
dF90ZXN0X3V0aWxzCisKKworSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250JworSVNfTElOVVgg
PSBvcy5uYW1lID09ICdwb3NpeCcgYW5kIG9zLnVuYW1lKClbMF0gPT0gJ0xpbnV4JworCitDT01N
QU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2dvb2dsZXRlc3Qt
ZW52LXZhci10ZXN0XycpCisKK2Vudmlyb24gPSBvcy5lbnZpcm9uLmNvcHkoKQorCisKK2RlZiBB
c3NlcnRFcShleHBlY3RlZCwgYWN0dWFsKToKKyAgaWYgZXhwZWN0ZWQgIT0gYWN0dWFsOgorICAg
IHByaW50ICdFeHBlY3RlZDogJXMnICUgKGV4cGVjdGVkLCkKKyAgICBwcmludCAnICBBY3R1YWw6
ICVzJyAlIChhY3R1YWwsKQorICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisKKworZGVmIFNldEVu
dlZhcihlbnZfdmFyLCB2YWx1ZSk6CisgICIiIlNldHMgdGhlIGVudiB2YXJpYWJsZSB0byAndmFs
dWUnOyB1bnNldHMgaXQgd2hlbiAndmFsdWUnIGlzIE5vbmUuIiIiCisKKyAgaWYgdmFsdWUgaXMg
bm90IE5vbmU6CisgICAgZW52aXJvbltlbnZfdmFyXSA9IHZhbHVlCisgIGVsaWYgZW52X3ZhciBp
biBlbnZpcm9uOgorICAgIGRlbCBlbnZpcm9uW2Vudl92YXJdCisKKworZGVmIEdldEZsYWcoZmxh
Zyk6CisgICIiIlJ1bnMgZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3RfIGFuZCByZXR1cm5zIGl0cyBv
dXRwdXQuIiIiCisKKyAgYXJncyA9IFtDT01NQU5EXQorICBpZiBmbGFnIGlzIG5vdCBOb25lOgor
ICAgIGFyZ3MgKz0gW2ZsYWddCisgIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3Mo
YXJncywgZW52PWVudmlyb24pLm91dHB1dAorCisKK2RlZiBUZXN0RmxhZyhmbGFnLCB0ZXN0X3Zh
bCwgZGVmYXVsdF92YWwpOgorICAiIiJWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBmbGFnIGlzIGFm
ZmVjdGVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGVudiB2YXIuIiIiCisKKyAgZW52X3ZhciA9ICdH
VEVTVF8nICsgZmxhZy51cHBlcigpCisgIFNldEVudlZhcihlbnZfdmFyLCB0ZXN0X3ZhbCkKKyAg
QXNzZXJ0RXEodGVzdF92YWwsIEdldEZsYWcoZmxhZykpCisgIFNldEVudlZhcihlbnZfdmFyLCBO
b25lKQorICBBc3NlcnRFcShkZWZhdWx0X3ZhbCwgR2V0RmxhZyhmbGFnKSkKKworCitjbGFzcyBH
VGVzdEVudlZhclRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisKKyAgZGVmIHRlc3RF
bnZWYXJBZmZlY3RzRmxhZyhzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0IGVudmlyb25tZW50IHZh
cmlhYmxlIHNob3VsZCBhZmZlY3QgdGhlIGNvcnJlc3BvbmRpbmcgZmxhZy4iIiIKKworICAgIFRl
c3RGbGFnKCdicmVha19vbl9mYWlsdXJlJywgJzEnLCAnMCcpCisgICAgVGVzdEZsYWcoJ2NvbG9y
JywgJ3llcycsICdhdXRvJykKKyAgICBUZXN0RmxhZygnZmlsdGVyJywgJ0Zvb1Rlc3QuQmFyJywg
JyonKQorICAgIFNldEVudlZhcignWE1MX09VVFBVVF9GSUxFJywgTm9uZSkgICMgRm9yICdvdXRw
dXQnIHRlc3QKKyAgICBUZXN0RmxhZygnb3V0cHV0JywgJ3htbDp0bXAvZm9vLnhtbCcsICcnKQor
ICAgIFRlc3RGbGFnKCdwcmludF90aW1lJywgJzAnLCAnMScpCisgICAgVGVzdEZsYWcoJ3JlcGVh
dCcsICc5OTknLCAnMScpCisgICAgVGVzdEZsYWcoJ3Rocm93X29uX2ZhaWx1cmUnLCAnMScsICcw
JykKKyAgICBUZXN0RmxhZygnZGVhdGhfdGVzdF9zdHlsZScsICd0aHJlYWRzYWZlJywgJ2Zhc3Qn
KQorICAgIFRlc3RGbGFnKCdjYXRjaF9leGNlcHRpb25zJywgJzAnLCAnMScpCisKKyAgICBpZiBJ
U19MSU5VWDoKKyAgICAgIFRlc3RGbGFnKCdkZWF0aF90ZXN0X3VzZV9mb3JrJywgJzEnLCAnMCcp
CisgICAgICBUZXN0RmxhZygnc3RhY2tfdHJhY2VfZGVwdGgnLCAnMCcsICcxMDAnKQorCisKKyAg
ZGVmIHRlc3RYbWxPdXRwdXRGaWxlKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgJFhNTF9PVVRQ
VVRfRklMRSBhZmZlY3RzIHRoZSBvdXRwdXQgZmxhZy4iIiIKKworICAgIFNldEVudlZhcignR1RF
U1RfT1VUUFVUJywgTm9uZSkKKyAgICBTZXRFbnZWYXIoJ1hNTF9PVVRQVVRfRklMRScsICd0bXAv
YmFyLnhtbCcpCisgICAgQXNzZXJ0RXEoJ3htbDp0bXAvYmFyLnhtbCcsIEdldEZsYWcoJ291dHB1
dCcpKQorCisgIGRlZiB0ZXN0WG1sT3V0cHV0RmlsZU92ZXJyaWRlKHNlbGYpOgorICAgICIiIlRl
c3RzIHRoYXQgJFhNTF9PVVRQVVRfRklMRSBpcyBvdmVycmlkZGVuIGJ5ICRHVEVTVF9PVVRQVVQu
IiIiCisKKyAgICBTZXRFbnZWYXIoJ0dURVNUX09VVFBVVCcsICd4bWw6dG1wL2Zvby54bWwnKQor
ICAgIFNldEVudlZhcignWE1MX09VVFBVVF9GSUxFJywgJ3RtcC9iYXIueG1sJykKKyAgICBBc3Nl
cnRFcSgneG1sOnRtcC9mb28ueG1sJywgR2V0RmxhZygnb3V0cHV0JykpCisKK2lmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0Xy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3RfLmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZkMmFhODJmNzRmYWEyMTIwMWU3OWFlMGU1YzNiNTY4NTUzZGYzMzcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qt
ZW52LXZhci10ZXN0Xy5jYwpAQCAtMCwwICsxLDEyMiBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdv
b2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisv
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIEEgaGVscGVyIHByb2dyYW0gZm9yIHRlc3Rp
bmcgdGhhdCBHb29nbGUgVGVzdCBwYXJzZXMgdGhlIGVudmlyb25tZW50CisvLyB2YXJpYWJsZXMg
Y29ycmVjdGx5LgorCisjaW5jbHVkZSA8aW9zdHJlYW0+CisKKyNpbmNsdWRlICJndGVzdC9ndGVz
dC5oIgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKwordXNpbmcgOjpzdGQ6
OmNvdXQ7CisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBp
cyB0byBtYWtlIHRoZSB0ZXN0IG1vcmUgcmVhbGlzdGljIGJ5IGVuc3VyaW5nCisvLyB0aGF0IHRo
ZSBVbml0VGVzdCBzaW5nbGV0b24gaXMgY3JlYXRlZCBiZWZvcmUgbWFpbigpIGlzIGVudGVyZWQu
CisvLyBXZSBkb24ndCBhY3R1YWwgcnVuIHRoZSBURVNUIGl0c2VsZi4KK1RFU1QoR1Rlc3RFbnZW
YXJUZXN0LCBEdW1teSkgeworfQorCit2b2lkIFByaW50RmxhZyhjb25zdCBjaGFyKiBmbGFnKSB7
CisgIGlmIChzdHJjbXAoZmxhZywgImJyZWFrX29uX2ZhaWx1cmUiKSA9PSAwKSB7CisgICAgY291
dCA8PCBHVEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpOworICAgIHJldHVybjsKKyAgfQorCisg
IGlmIChzdHJjbXAoZmxhZywgImNhdGNoX2V4Y2VwdGlvbnMiKSA9PSAwKSB7CisgICAgY291dCA8
PCBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpOworICAgIHJldHVybjsKKyAgfQorCisgIGlm
IChzdHJjbXAoZmxhZywgImNvbG9yIikgPT0gMCkgeworICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhj
b2xvcik7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChmbGFnLCAiZGVhdGhfdGVz
dF9zdHlsZSIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHls
ZSk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChmbGFnLCAiZGVhdGhfdGVzdF91
c2VfZm9yayIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2Vf
Zm9yayk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChmbGFnLCAiZmlsdGVyIikg
PT0gMCkgeworICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhmaWx0ZXIpOworICAgIHJldHVybjsKKyAg
fQorCisgIGlmIChzdHJjbXAoZmxhZywgIm91dHB1dCIpID09IDApIHsKKyAgICBjb3V0IDw8IEdU
RVNUX0ZMQUcob3V0cHV0KTsKKyAgICByZXR1cm47CisgIH0KKworICBpZiAoc3RyY21wKGZsYWcs
ICJwcmludF90aW1lIikgPT0gMCkgeworICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhwcmludF90aW1l
KTsKKyAgICByZXR1cm47CisgIH0KKworICBpZiAoc3RyY21wKGZsYWcsICJyZXBlYXQiKSA9PSAw
KSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKHJlcGVhdCk7CisgICAgcmV0dXJuOworICB9CisK
KyAgaWYgKHN0cmNtcChmbGFnLCAic3RhY2tfdHJhY2VfZGVwdGgiKSA9PSAwKSB7CisgICAgY291
dCA8PCBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKTsKKyAgICByZXR1cm47CisgIH0KKwor
ICBpZiAoc3RyY21wKGZsYWcsICJ0aHJvd19vbl9mYWlsdXJlIikgPT0gMCkgeworICAgIGNvdXQg
PDwgR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKKyAgICByZXR1cm47CisgIH0KKworICBj
b3V0IDw8ICJJbnZhbGlkIGZsYWcgbmFtZSAiIDw8IGZsYWcKKyAgICAgICA8PCAiLiAgVmFsaWQg
bmFtZXMgYXJlIGJyZWFrX29uX2ZhaWx1cmUsIGNvbG9yLCBmaWx0ZXIsIGV0Yy5cbiI7CisgIGV4
aXQoMSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKK2ludCBtYWluKGludCBhcmdj
LCBjaGFyKiogYXJndikgeworICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7
CisKKyAgaWYgKGFyZ2MgIT0gMikgeworICAgIGNvdXQgPDwgIlVzYWdlOiBnb29nbGV0ZXN0LWVu
di12YXItdGVzdF8gTkFNRV9PRl9GTEFHXG4iOworICAgIHJldHVybiAxOworICB9CisKKyAgdGVz
dGluZzo6UHJpbnRGbGFnKGFyZ3ZbMV0pOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1maWxlcGF0aC10ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWZpbGVwYXRoLXRlc3QuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzdmMDJmYjRiZDc3OTdkMTRkMzgzYTA1ZmExOTdjMzZiMzE4MjVmMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1m
aWxlcGF0aC10ZXN0LmNjCkBAIC0wLDAgKzEsNjUxIEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29v
Z2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gR29vZ2xlIFRlc3QgZmlsZXBhdGggdXRpbGl0
aWVzCisvLworLy8gVGhpcyBmaWxlIHRlc3RzIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyB1c2VkIGlu
dGVybmFsbHkgYnkKKy8vIEdvb2dsZSBUZXN0LiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ug
d2l0aG91dCBub3RpY2UuCisvLworLy8gVGhpcyBmaWxlIGlzICNpbmNsdWRlZCBmcm9tIGd0ZXN0
LWludGVybmFsLmguCisvLyBEbyBub3QgI2luY2x1ZGUgdGhpcyBmaWxlIGFueXdoZXJlIGVsc2Uh
CisKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oIgorI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgorCisj
aWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gTk9M
SU5UCisjZWxpZiBHVEVTVF9PU19XSU5ET1dTCisjIGluY2x1ZGUgPGRpcmVjdC5oPiAgLy8gTk9M
SU5UCisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisKK25hbWVzcGFjZSB0ZXN0
aW5nIHsKK25hbWVzcGFjZSBpbnRlcm5hbCB7CituYW1lc3BhY2UgeworCisjaWYgR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUKKy8vIEZJWE1FOiBNb3ZlIHRoZXNlIHRvIHRoZSBQT1NJWCBhZGFwdGVy
IHNlY3Rpb24gaW4KKy8vIGd0ZXN0LXBvcnQuaC4KKworLy8gV2luZG93cyBDRSBkb2Vzbid0IGhh
dmUgdGhlIHJlbW92ZSBDIGZ1bmN0aW9uLgoraW50IHJlbW92ZShjb25zdCBjaGFyKiBwYXRoKSB7
CisgIExQQ1dTVFIgd3BhdGggPSBTdHJpbmc6OkFuc2lUb1V0ZjE2KHBhdGgpOworICBpbnQgcmV0
ID0gRGVsZXRlRmlsZSh3cGF0aCkgPyAwIDogLTE7CisgIGRlbGV0ZSBbXSB3cGF0aDsKKyAgcmV0
dXJuIHJldDsKK30KKy8vIFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlIHRoZSBfcm1kaXIgQyBmdW5j
dGlvbi4KK2ludCBfcm1kaXIoY29uc3QgY2hhciogcGF0aCkgeworICBGaWxlUGF0aCBmaWxlcGF0
aChwYXRoKTsKKyAgTFBDV1NUUiB3cGF0aCA9IFN0cmluZzo6QW5zaVRvVXRmMTYoCisgICAgICBm
aWxlcGF0aC5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKKyAgaW50IHJl
dCA9IFJlbW92ZURpcmVjdG9yeSh3cGF0aCkgPyAwIDogLTE7CisgIGRlbGV0ZSBbXSB3cGF0aDsK
KyAgcmV0dXJuIHJldDsKK30KKworI2Vsc2UKKworVEVTVChHZXRDdXJyZW50RGlyVGVzdCwgUmV0
dXJuc0N1cnJlbnREaXIpIHsKKyAgY29uc3QgRmlsZVBhdGggb3JpZ2luYWxfZGlyID0gRmlsZVBh
dGg6OkdldEN1cnJlbnREaXIoKTsKKyAgRVhQRUNUX0ZBTFNFKG9yaWdpbmFsX2Rpci5Jc0VtcHR5
KCkpOworCisgIHBvc2l4OjpDaERpcihHVEVTVF9QQVRIX1NFUF8pOworICBjb25zdCBGaWxlUGF0
aCBjd2QgPSBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpOworICBwb3NpeDo6Q2hEaXIob3JpZ2lu
YWxfZGlyLmNfc3RyKCkpOworCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKworICAvLyBTa2lwcyB0
aGUgIjoiLgorICBjb25zdCBjaGFyKiBjb25zdCBjd2Rfd2l0aG91dF9kcml2ZSA9IHN0cmNocihj
d2QuY19zdHIoKSwgJzonKTsKKyAgQVNTRVJUX1RSVUUoY3dkX3dpdGhvdXRfZHJpdmUgIT0gTlVM
TCk7CisgIEVYUEVDVF9TVFJFUShHVEVTVF9QQVRIX1NFUF8sIGN3ZF93aXRob3V0X2RyaXZlICsg
MSk7CisKKyMgZWxzZQorCisgIEVYUEVDVF9FUShHVEVTVF9QQVRIX1NFUF8sIGN3ZC5zdHJpbmco
KSk7CisKKyMgZW5kaWYKK30KKworI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQor
CitURVNUKElzRW1wdHlUZXN0LCBSZXR1cm5zVHJ1ZUZvckVtcHR5UGF0aCkgeworICBFWFBFQ1Rf
VFJVRShGaWxlUGF0aCgiIikuSXNFbXB0eSgpKTsKK30KKworVEVTVChJc0VtcHR5VGVzdCwgUmV0
dXJuc0ZhbHNlRm9yTm9uRW1wdHlQYXRoKSB7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYSIp
LklzRW1wdHkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiLiIpLklzRW1wdHkoKSk7Cisg
IEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYS9iIikuSXNFbXB0eSgpKTsKKyAgRVhQRUNUX0ZBTFNF
KEZpbGVQYXRoKCJhXFxiXFwiKS5Jc0VtcHR5KCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlO
YW1lICIiIC0+ICIiCitURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBXaGVuRW1wdHlOYW1l
KSB7CisgIEVYUEVDVF9FUSgiIiwgRmlsZVBhdGgoIiIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5z
dHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZURpcmVjdG9yeU5hbWUgImFmaWxlIiAtPiAiYWZpbGUi
CitURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBCdXROb0RpcmVjdG9yeSkgeworICBFWFBF
Q1RfRVEoImFmaWxlIiwKKyAgICAgIEZpbGVQYXRoKCJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5h
bWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZURpcmVjdG9yeU5hbWUgIi9hZmlsZSIgLT4g
ImFmaWxlIgorVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgUm9vdEZpbGVTaG91bGRHaXZl
RmlsZU5hbWUpIHsKKyAgRVhQRUNUX0VRKCJhZmlsZSIsCisgICAgICBGaWxlUGF0aChHVEVTVF9Q
QVRIX1NFUF8gImFmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKK30KKwor
Ly8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiYWRpci8iIC0+ICIiCitURVNUKFJlbW92ZURpcmVjdG9y
eU5hbWVUZXN0LCBXaGVyZVRoZXJlSXNOb0ZpbGVOYW1lKSB7CisgIEVYUEVDVF9FUSgiIiwKKyAg
ICAgIEZpbGVQYXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8pLlJlbW92ZURpcmVjdG9yeU5hbWUo
KS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZURpcmVjdG9yeU5hbWUgImFkaXIvYWZpbGUiIC0+
ICJhZmlsZSIKK1RFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEdpdmVGaWxlTmFt
ZSkgeworICBFWFBFQ1RfRVEoImFmaWxlIiwKKyAgICAgIEZpbGVQYXRoKCJhZGlyIiBHVEVTVF9Q
QVRIX1NFUF8gImFmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKK30KKwor
Ly8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiYWRpci9zdWJkaXIvYWZpbGUiIC0+ICJhZmlsZSIKK1RF
U1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEFsc29HaXZlRmlsZU5hbWUpIHsKKyAg
RVhQRUNUX0VRKCJhZmlsZSIsCisgICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBf
ICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKQorICAgICAgLlJlbW92ZURpcmVjdG9y
eU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXworCisv
LyBUZXN0cyB0aGF0IFJlbW92ZURpcmVjdG9yeU5hbWUoKSB3b3JrcyB3aXRoIHRoZSBhbHRlcm5h
dGUgc2VwYXJhdG9yCisvLyBvbiBXaW5kb3dzLgorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCIv
YWZpbGUiKSAtPiAiYWZpbGUiCitURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBSb290Rmls
ZVNob3VsZEdpdmVGaWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEo
ImFmaWxlIiwgRmlsZVBhdGgoIi9hZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmco
KSk7Cit9CisKKy8vIFJlbW92ZURpcmVjdG9yeU5hbWUoImFkaXIvIikgLT4gIiIKK1RFU1QoUmVt
b3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFdoZXJlVGhlcmVJc05vRmlsZU5hbWVGb3JBbHRlcm5hdGVT
ZXBhcmF0b3IpIHsKKyAgRVhQRUNUX0VRKCIiLCBGaWxlUGF0aCgiYWRpci8iKS5SZW1vdmVEaXJl
Y3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCJhZGly
L2FmaWxlIikgLT4gImFmaWxlIgorVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgU2hvdWxk
R2l2ZUZpbGVOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7CisgIEVYUEVDVF9FUSgiYWZpbGUi
LCBGaWxlUGF0aCgiYWRpci9hZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7
Cit9CisKKy8vIFJlbW92ZURpcmVjdG9yeU5hbWUoImFkaXIvc3ViZGlyL2FmaWxlIikgLT4gImFm
aWxlIgorVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgU2hvdWxkQWxzb0dpdmVGaWxlTmFt
ZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEoImFmaWxlIiwKKyAgICAgICAg
ICAgIEZpbGVQYXRoKCJhZGlyL3N1YmRpci9hZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5z
dHJpbmcoKSk7Cit9CisKKyNlbmRpZgorCisvLyBSZW1vdmVGaWxlTmFtZSAiIiAtPiAiLi8iCitU
RVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgRW1wdHlOYW1lKSB7CisjaWYgR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKKyAgLy8gT24gV2luZG93cyBDRSwgd2UgdXNlIHRoZSByb290IGFzIHRoZSBjdXJy
ZW50IGRpcmVjdG9yeS4KKyAgRVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQXywgRmlsZVBhdGgoIiIp
LlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOworI2Vsc2UKKyAgRVhQRUNUX0VRKCIuIiBHVEVT
VF9QQVRIX1NFUF8sIEZpbGVQYXRoKCIiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKKyNl
bmRpZgorfQorCisvLyBSZW1vdmVGaWxlTmFtZSAiYWRpci8iIC0+ICJhZGlyLyIKK1RFU1QoUmVt
b3ZlRmlsZU5hbWVUZXN0LCBCdXROb0ZpbGUpIHsKKyAgRVhQRUNUX0VRKCJhZGlyIiBHVEVTVF9Q
QVRIX1NFUF8sCisgICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfKS5SZW1vdmVG
aWxlTmFtZSgpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvYWZpbGUi
IC0+ICJhZGlyLyIKK1RFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc0Rpck5hbWUpIHsKKyAg
RVhQRUNUX0VRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8sCisgICAgICAgICAgICBGaWxlUGF0aCgi
YWRpciIgR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkp
OworfQorCisvLyBSZW1vdmVGaWxlTmFtZSAiYWRpci9zdWJkaXIvYWZpbGUiIC0+ICJhZGlyL3N1
YmRpci8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNEaXJBbmRTdWJEaXJOYW1lKSB7
CisgIEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhf
U0VQXywKKyAgICAgIEZpbGVQYXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gInN1YmRpciIgR1RF
U1RfUEFUSF9TRVBfICJhZmlsZSIpCisgICAgICAuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7
Cit9CisKKy8vIFJlbW92ZUZpbGVOYW1lICIvYWZpbGUiIC0+ICIvIgorVEVTVChSZW1vdmVGaWxl
TmFtZVRlc3QsIEdpdmVzUm9vdERpcikgeworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfLAor
ICAgICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCku
c3RyaW5nKCkpOworfQorCisjaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KKworLy8gVGVzdHMg
dGhhdCBSZW1vdmVGaWxlTmFtZSgpIHdvcmtzIHdpdGggdGhlIGFsdGVybmF0ZSBzZXBhcmF0b3Ig
b24KKy8vIFdpbmRvd3MuCisKKy8vIFJlbW92ZUZpbGVOYW1lKCJhZGlyLyIpIC0+ICJhZGlyLyIK
K1RFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBCdXROb0ZpbGVGb3JBbHRlcm5hdGVTZXBhcmF0b3Ip
IHsKKyAgRVhQRUNUX0VRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8sCisgICAgICAgICAgICBGaWxl
UGF0aCgiYWRpci8iKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3Zl
RmlsZU5hbWUoImFkaXIvYWZpbGUiKSAtPiAiYWRpci8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVz
dCwgR2l2ZXNEaXJOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7CisgIEVYUEVDVF9FUSgiYWRp
ciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvYWZpbGUiKS5S
ZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlRmlsZU5hbWUoImFkaXIv
c3ViZGlyL2FmaWxlIikgLT4gImFkaXIvc3ViZGlyLyIKK1RFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0
LCBHaXZlc0RpckFuZFN1YkRpck5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNU
X0VRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAg
ICAgICAgICAgRmlsZVBhdGgoImFkaXIvc3ViZGlyL2FmaWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5z
dHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZUZpbGVOYW1lKCIvYWZpbGUiKSAtPiAiXCIKK1RFU1Qo
UmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc1Jvb3REaXJGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsK
KyAgRVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQXywgRmlsZVBhdGgoIi9hZmlsZSIpLlJlbW92ZUZp
bGVOYW1lKCkuc3RyaW5nKCkpOworfQorCisjZW5kaWYKKworVEVTVChNYWtlRmlsZU5hbWVUZXN0
LCBHZW5lcmF0ZVdoZW5OdW1iZXJJc1plcm8pIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBh
dGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiksIEZpbGVQYXRoKCJiYXIiKSwKKyAgICAg
IDAsICJ4bWwiKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIs
IGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVG
aWxlTmFtZU51bWJlckd0WmVybykgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFr
ZUZpbGVOYW1lKEZpbGVQYXRoKCJmb28iKSwgRmlsZVBhdGgoImJhciIpLAorICAgICAgMTIsICJ4
bWwiKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyXzEyLnhtbCIsIGFj
dHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVGaWxl
TmFtZVdpdGhTbGFzaE51bWJlcklzWmVybykgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0
aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyksCisgICAgICBG
aWxlUGF0aCgiYmFyIiksIDAsICJ4bWwiKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhf
U0VQXyAiYmFyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoTWFrZUZpbGVOYW1l
VGVzdCwgR2VuZXJhdGVGaWxlTmFtZVdpdGhTbGFzaE51bWJlckd0WmVybykgeworICBGaWxlUGF0
aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCJmb28iIEdURVNUX1BB
VEhfU0VQXyksCisgICAgICBGaWxlUGF0aCgiYmFyIiksIDEyLCAieG1sIik7CisgIEVYUEVDVF9F
USgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhcl8xMi54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOwor
fQorCitURVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlV2hlbk51bWJlcklzWmVyb0FuZERp
cklzRW1wdHkpIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShG
aWxlUGF0aCgiIiksIEZpbGVQYXRoKCJiYXIiKSwKKyAgICAgIDAsICJ4bWwiKTsKKyAgRVhQRUNU
X0VRKCJiYXIueG1sIiwgYWN0dWFsLnN0cmluZygpKTsKK30KKworVEVTVChNYWtlRmlsZU5hbWVU
ZXN0LCBHZW5lcmF0ZVdoZW5OdW1iZXJJc05vdFplcm9BbmREaXJJc0VtcHR5KSB7CisgIEZpbGVQ
YXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoIiIpLCBGaWxlUGF0
aCgiYmFyIiksCisgICAgICAxNCwgInhtbCIpOworICBFWFBFQ1RfRVEoImJhcl8xNC54bWwiLCBh
Y3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKENvbmNhdFBhdGhzVGVzdCwgV29ya3NXaGVuRGly
RG9lc05vdEVuZFdpdGhQYXRoU2VwKSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpD
b25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGaWxlUGF0aCgiYmFyLnhtbCIpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdU
RVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoQ29u
Y2F0UGF0aHNUZXN0LCBXb3Jrc1doZW5QYXRoMUVuZHNXaXRoUGF0aFNlcCkgeworICBGaWxlUGF0
aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFU
SF9TRVBfKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQ
YXRoKCJiYXIueG1sIikpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIu
eG1sIiwgYWN0dWFsLnN0cmluZygpKTsKK30KKworVEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgx
QmVpbmdFbXB0eSkgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMo
RmlsZVBhdGgoIiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RmlsZVBhdGgoImJhci54bWwiKSk7CisgIEVYUEVDVF9FUSgiYmFyLnhtbCIsIGFjdHVhbC5zdHJp
bmcoKSk7Cit9CisKK1RFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMkJlaW5nRW1wdHkpIHsKKyAg
RmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iKSwg
RmlsZVBhdGgoIiIpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywgYWN0dWFs
LnN0cmluZygpKTsKK30KKworVEVTVChDb25jYXRQYXRoc1Rlc3QsIEJvdGhQYXRoQmVpbmdFbXB0
eSkgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgo
IiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgo
IiIpKTsKKyAgRVhQRUNUX0VRKCIiLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKENvbmNh
dFBhdGhzVGVzdCwgUGF0aDFDb250YWluc1BhdGhTZXApIHsKKyAgRmlsZVBhdGggYWN0dWFsID0g
RmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFy
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgi
Zm9vYmFyLnhtbCIpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBH
VEVTVF9QQVRIX1NFUF8gImZvb2Jhci54bWwiLAorICAgICAgICAgICAgYWN0dWFsLnN0cmluZygp
KTsKK30KKworVEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgyQ29udGFpbnNQYXRoU2VwKSB7Cisg
IEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocygKKyAgICAgIEZpbGVQYXRo
KCJmb28iIEdURVNUX1BBVEhfU0VQXyksCisgICAgICBGaWxlUGF0aCgiYmFyIiBHVEVTVF9QQVRI
X1NFUF8gImJhci54bWwiKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJh
ciIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwKKyAgICAgICAgICAgIGFjdHVhbC5zdHJpbmco
KSk7Cit9CisKK1RFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMkVuZHNXaXRoUGF0aFNlcCkgewor
ICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJh
ciIgR1RFU1RfUEFUSF9TRVBfKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8g
ImJhciIgR1RFU1RfUEFUSF9TRVBfLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVU
cmFpbGluZ1BhdGhTZXBhcmF0b3IgIiIgLT4gIiIKK1RFU1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2Vw
YXJhdG9yVGVzdCwgRW1wdHlTdHJpbmcpIHsKKyAgRVhQRUNUX0VRKCIiLCBGaWxlUGF0aCgiIiku
UmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVU
cmFpbGluZ1BhdGhTZXBhcmF0b3IgImZvbyIgLT4gImZvbyIKK1RFU1QoUmVtb3ZlVHJhaWxpbmdQ
YXRoU2VwYXJhdG9yVGVzdCwgRmlsZU5vU2xhc2hTdHJpbmcpIHsKKyAgRVhQRUNUX0VRKCJmb28i
LCBGaWxlUGF0aCgiZm9vIikuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuc3RyaW5nKCkp
OworfQorCisvLyBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IgImZvby8iIC0+ICJmb28iCitU
RVNUKFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvclRlc3QsIFNob3VsZFJlbW92ZVRyYWlsaW5n
U2VwYXJhdG9yKSB7CisgIEVYUEVDVF9FUSgiZm9vIiwKKyAgICAgIEZpbGVQYXRoKCJmb28iIEdU
RVNUX1BBVEhfU0VQXykuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuc3RyaW5nKCkpOwor
I2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCisgIEVYUEVDVF9FUSgiZm9vIiwgRmlsZVBhdGgo
ImZvby8iKS5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5zdHJpbmcoKSk7CisjZW5kaWYK
K30KKworLy8gUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28vYmFyLyIgLT4gImZvby9i
YXIvIgorVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBTaG91bGRSZW1vdmVM
YXN0U2VwYXJhdG9yKSB7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIs
CisgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1Rf
UEFUSF9TRVBfKQorICAgICAgICAgICAgICAgIC5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3Io
KS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiZm9vL2Jh
ciIgLT4gImZvby9iYXIiCitURVNUKFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvclRlc3QsIFNo
b3VsZFJldHVyblVubW9kaWZpZWQpIHsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQ
XyAiYmFyIiwKKyAgICAgICAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFy
IikKKyAgICAgICAgICAgICAgICAuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuc3RyaW5n
KCkpOworfQorCitURVNUKERpcmVjdG9yeVRlc3QsIFJvb3REaXJlY3RvcnlFeGlzdHMpIHsKKyNp
ZiBHVEVTVF9PU19XSU5ET1dTICAvLyBXZSBhcmUgb24gV2luZG93cy4KKyAgY2hhciBjdXJyZW50
X2RyaXZlW19NQVhfUEFUSF07ICAvLyBOT0xJTlQKKyAgY3VycmVudF9kcml2ZVswXSA9IHN0YXRp
Y19jYXN0PGNoYXI+KF9nZXRkcml2ZSgpICsgJ0EnIC0gMSk7CisgIGN1cnJlbnRfZHJpdmVbMV0g
PSAnOic7CisgIGN1cnJlbnRfZHJpdmVbMl0gPSAnXFwnOworICBjdXJyZW50X2RyaXZlWzNdID0g
J1wwJzsKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoY3VycmVudF9kcml2ZSkuRGlyZWN0b3J5RXhp
c3RzKCkpOworI2Vsc2UKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi8iKS5EaXJlY3RvcnlFeGlz
dHMoKSk7CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKK30KKworI2lmIEdURVNUX09TX1dJ
TkRPV1MKK1RFU1QoRGlyZWN0b3J5VGVzdCwgUm9vdE9mV3JvbmdEcml2ZURvZXNOb3RFeGlzdHMp
IHsKKyAgY29uc3QgaW50IHNhdmVkX2RyaXZlXyA9IF9nZXRkcml2ZSgpOworICAvLyBGaW5kIGEg
ZHJpdmUgdGhhdCBkb2Vzbid0IGV4aXN0LiBTdGFydCB3aXRoICdaJyB0byBhdm9pZCBjb21tb24g
b25lcy4KKyAgZm9yIChjaGFyIGRyaXZlID0gJ1onOyBkcml2ZSA+PSAnQSc7IGRyaXZlLS0pCisg
ICAgaWYgKF9jaGRyaXZlKGRyaXZlIC0gJ0EnICsgMSkgPT0gLTEpIHsKKyAgICAgIGNoYXIgbm9u
X2RyaXZlW19NQVhfUEFUSF07ICAvLyBOT0xJTlQKKyAgICAgIG5vbl9kcml2ZVswXSA9IGRyaXZl
OworICAgICAgbm9uX2RyaXZlWzFdID0gJzonOworICAgICAgbm9uX2RyaXZlWzJdID0gJ1xcJzsK
KyAgICAgIG5vbl9kcml2ZVszXSA9ICdcMCc7CisgICAgICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgo
bm9uX2RyaXZlKS5EaXJlY3RvcnlFeGlzdHMoKSk7CisgICAgICBicmVhazsKKyAgICB9CisgIF9j
aGRyaXZlKHNhdmVkX2RyaXZlXyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKwor
I2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorLy8gV2luZG93cyBDRSBfZG9lc18gY29uc2lk
ZXIgYW4gZW1wdHkgZGlyZWN0b3J5IHRvIGV4aXN0LgorVEVTVChEaXJlY3RvcnlUZXN0LCBFbXB0
eVBhdGhEaXJlY3RvcnlEb2VzTm90RXhpc3QpIHsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIi
KS5EaXJlY3RvcnlFeGlzdHMoKSk7Cit9CisjZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTX01P
QklMRQorCitURVNUKERpcmVjdG9yeVRlc3QsIEN1cnJlbnREaXJlY3RvcnlFeGlzdHMpIHsKKyNp
ZiBHVEVTVF9PU19XSU5ET1dTICAvLyBXZSBhcmUgb24gV2luZG93cy4KKyMgaWZuZGVmIF9XSU4z
Ml9DRSAgLy8gV2luZG93cyBDRSBkb2Vzbid0IGhhdmUgYSBjdXJyZW50IGRpcmVjdG9yeS4KKwor
ICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiLiIpLkRpcmVjdG9yeUV4aXN0cygpKTsKKyAgRVhQRUNU
X1RSVUUoRmlsZVBhdGgoIi5cXCIpLkRpcmVjdG9yeUV4aXN0cygpKTsKKworIyBlbmRpZiAgLy8g
X1dJTjMyX0NFCisjZWxzZQorICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiLiIpLkRpcmVjdG9yeUV4
aXN0cygpKTsKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi4vIikuRGlyZWN0b3J5RXhpc3RzKCkp
OworI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCit9CisKKy8vICJmb28vYmFyIiA9PSBmb28v
L2JhciIgPT0gImZvby8vL2JhciIKK1RFU1QoTm9ybWFsaXplVGVzdCwgTXVsdGlwbGVDb25zZWN1
dGl2ZVNlcGFwYXJhdG9yc0luTWlkc3RyaW5nKSB7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8gImJhciIsCisgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8gImJhciIpLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAi
YmFyIiwKKyAgICAgICAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9Q
QVRIX1NFUF8gImJhciIpLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhf
U0VQXyAiYmFyIiwKKyAgICAgICAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyBH
VEVTVF9QQVRIX1NFUF8KKyAgICAgICAgICAgICAgICAgICAgIEdURVNUX1BBVEhfU0VQXyAiYmFy
Iikuc3RyaW5nKCkpOworfQorCisvLyAiL2JhciIgPT0gLy9iYXIiID09ICIvLy9iYXIiCitURVNU
KE5vcm1hbGl6ZVRlc3QsIE11bHRpcGxlQ29uc2VjdXRpdmVTZXBhcGFyYXRvcnNBdFN0cmluZ1N0
YXJ0KSB7CisgIEVYUEVDVF9FUShHVEVTVF9QQVRIX1NFUF8gImJhciIsCisgICAgRmlsZVBhdGgo
R1RFU1RfUEFUSF9TRVBfICJiYXIiKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUShHVEVTVF9QQVRI
X1NFUF8gImJhciIsCisgICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQ
XyAiYmFyIikuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAor
ICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9T
RVBfICJiYXIiKS5zdHJpbmcoKSk7Cit9CisKKy8vICJmb28vIiA9PSBmb28vLyIgPT0gImZvby8v
LyIKK1RFU1QoTm9ybWFsaXplVGVzdCwgTXVsdGlwbGVDb25zZWN1dGl2ZVNlcGFwYXJhdG9yc0F0
U3RyaW5nRW5kKSB7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCisgICAgRmls
ZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8sCisgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfIEdU
RVNUX1BBVEhfU0VQXykuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9T
RVBfLAorICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8g
R1RFU1RfUEFUSF9TRVBfKS5zdHJpbmcoKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfQUxUX1BBVEhf
U0VQXworCisvLyBUZXN0cyB0aGF0IHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5n
IGFyZSBub3JtYWxpemVkCisvLyByZWdhcmRsZXNzIG9mIHRoZWlyIGNvbWJpbmF0aW9uIChlLmcu
ICJmb29cIiA9PSJmb28vXCIgPT0KKy8vICJmb29cXC8iKS4KK1RFU1QoTm9ybWFsaXplVGVzdCwg
TWl4QWx0ZXJuYXRlU2VwYXJhdG9yQXRTdHJpbmdFbmQpIHsKKyAgRVhQRUNUX0VRKCJmb28iIEdU
RVNUX1BBVEhfU0VQXywKKyAgICAgICAgICAgIEZpbGVQYXRoKCJmb28vIikuc3RyaW5nKCkpOwor
ICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgo
ImZvbyIgR1RFU1RfUEFUSF9TRVBfICIvIikuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoImZvbyIg
R1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgoImZvby8vIiBHVEVTVF9QQVRI
X1NFUF8pLnN0cmluZygpKTsKK30KKworI2VuZGlmCisKK1RFU1QoQXNzaWdubWVudE9wZXJhdG9y
VGVzdCwgRGVmYXVsdEFzc2lnbmVkVG9Ob25EZWZhdWx0KSB7CisgIEZpbGVQYXRoIGRlZmF1bHRf
cGF0aDsKKyAgRmlsZVBhdGggbm9uX2RlZmF1bHRfcGF0aCgicGF0aCIpOworICBub25fZGVmYXVs
dF9wYXRoID0gZGVmYXVsdF9wYXRoOworICBFWFBFQ1RfRVEoIiIsIG5vbl9kZWZhdWx0X3BhdGgu
c3RyaW5nKCkpOworICBFWFBFQ1RfRVEoIiIsIGRlZmF1bHRfcGF0aC5zdHJpbmcoKSk7ICAvLyBS
SFMgdmFyIGlzIHVuY2hhbmdlZC4KK30KKworVEVTVChBc3NpZ25tZW50T3BlcmF0b3JUZXN0LCBO
b25EZWZhdWx0QXNzaWduZWRUb0RlZmF1bHQpIHsKKyAgRmlsZVBhdGggbm9uX2RlZmF1bHRfcGF0
aCgicGF0aCIpOworICBGaWxlUGF0aCBkZWZhdWx0X3BhdGg7CisgIGRlZmF1bHRfcGF0aCA9IG5v
bl9kZWZhdWx0X3BhdGg7CisgIEVYUEVDVF9FUSgicGF0aCIsIGRlZmF1bHRfcGF0aC5zdHJpbmco
KSk7CisgIEVYUEVDVF9FUSgicGF0aCIsIG5vbl9kZWZhdWx0X3BhdGguc3RyaW5nKCkpOyAgLy8g
UkhTIHZhciBpcyB1bmNoYW5nZWQuCit9CisKK1RFU1QoQXNzaWdubWVudE9wZXJhdG9yVGVzdCwg
Q29uc3RBc3NpZ25lZFRvTm9uQ29uc3QpIHsKKyAgY29uc3QgRmlsZVBhdGggY29uc3RfZGVmYXVs
dF9wYXRoKCJjb25zdF9wYXRoIik7CisgIEZpbGVQYXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgi
KTsKKyAgbm9uX2RlZmF1bHRfcGF0aCA9IGNvbnN0X2RlZmF1bHRfcGF0aDsKKyAgRVhQRUNUX0VR
KCJjb25zdF9wYXRoIiwgbm9uX2RlZmF1bHRfcGF0aC5zdHJpbmcoKSk7Cit9CisKK2NsYXNzIERp
cmVjdG9yeUNyZWF0aW9uVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKKyAgICB0ZXN0ZGF0YV9wYXRoXy5TZXQoRmlsZVBhdGgoCisgICAg
ICAgIFRlbXBEaXIoKSArIEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLnN0cmluZygpICsKKyAg
ICAgICAgIl9kaXJlY3RvcnlfY3JlYXRpb24iIEdURVNUX1BBVEhfU0VQXyAidGVzdCIgR1RFU1Rf
UEFUSF9TRVBfKSk7CisgICAgdGVzdGRhdGFfZmlsZV8uU2V0KHRlc3RkYXRhX3BhdGhfLlJlbW92
ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpKTsKKworICAgIHVuaXF1ZV9maWxlMF8uU2V0KEZpbGVQ
YXRoOjpNYWtlRmlsZU5hbWUodGVzdGRhdGFfcGF0aF8sIEZpbGVQYXRoKCJ1bmlxdWUiKSwKKyAg
ICAgICAgMCwgInR4dCIpKTsKKyAgICB1bmlxdWVfZmlsZTFfLlNldChGaWxlUGF0aDo6TWFrZUZp
bGVOYW1lKHRlc3RkYXRhX3BhdGhfLCBGaWxlUGF0aCgidW5pcXVlIiksCisgICAgICAgIDEsICJ0
eHQiKSk7CisKKyAgICByZW1vdmUodGVzdGRhdGFfZmlsZV8uY19zdHIoKSk7CisgICAgcmVtb3Zl
KHVuaXF1ZV9maWxlMF8uY19zdHIoKSk7CisgICAgcmVtb3ZlKHVuaXF1ZV9maWxlMV8uY19zdHIo
KSk7CisgICAgcG9zaXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhfLmNfc3RyKCkpOworICB9CisKKyAg
dmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIHJlbW92ZSh0ZXN0ZGF0YV9maWxlXy5jX3N0
cigpKTsKKyAgICByZW1vdmUodW5pcXVlX2ZpbGUwXy5jX3N0cigpKTsKKyAgICByZW1vdmUodW5p
cXVlX2ZpbGUxXy5jX3N0cigpKTsKKyAgICBwb3NpeDo6Um1EaXIodGVzdGRhdGFfcGF0aF8uY19z
dHIoKSk7CisgIH0KKworICB2b2lkIENyZWF0ZVRleHRGaWxlKGNvbnN0IGNoYXIqIGZpbGVuYW1l
KSB7CisgICAgRklMRSogZiA9IHBvc2l4OjpGT3BlbihmaWxlbmFtZSwgInciKTsKKyAgICBmcHJp
bnRmKGYsICJ0ZXh0XG4iKTsKKyAgICBmY2xvc2UoZik7CisgIH0KKworICAvLyBTdHJpbmdzIHJl
cHJlc2VudGluZyBhIGRpcmVjdG9yeSBhbmQgYSBmaWxlLCB3aXRoIGlkZW50aWNhbCBwYXRocwor
ICAvLyBleGNlcHQgZm9yIHRoZSB0cmFpbGluZyBzZXBhcmF0b3IgY2hhcmFjdGVyIHRoYXQgZGlz
dGlucXVpc2hlcworICAvLyBhIGRpcmVjdG9yeSBuYW1lZCAndGVzdCcgZnJvbSBhIGZpbGUgbmFt
ZWQgJ3Rlc3QnLiBFeGFtcGxlIG5hbWVzOgorICBGaWxlUGF0aCB0ZXN0ZGF0YV9wYXRoXzsgIC8v
ICIvdG1wL2RpcmVjdG9yeV9jcmVhdGlvbi90ZXN0LyIKKyAgRmlsZVBhdGggdGVzdGRhdGFfZmls
ZV87ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRpb24vdGVzdCIKKyAgRmlsZVBhdGggdW5pcXVl
X2ZpbGUwXzsgIC8vICIvdG1wL2RpcmVjdG9yeV9jcmVhdGlvbi90ZXN0L3VuaXF1ZS50eHQiCisg
IEZpbGVQYXRoIHVuaXF1ZV9maWxlMV87ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRpb24vdGVz
dC91bmlxdWVfMS50eHQiCit9OworCitURVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVh
dGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KSB7CisgIEVYUEVDVF9GQUxTRSh0ZXN0ZGF0YV9wYXRo
Xy5EaXJlY3RvcnlFeGlzdHMoKSkgPDwgdGVzdGRhdGFfcGF0aF8uc3RyaW5nKCk7CisgIEVYUEVD
VF9UUlVFKHRlc3RkYXRhX3BhdGhfLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKSk7Cisg
IEVYUEVDVF9UUlVFKHRlc3RkYXRhX3BhdGhfLkRpcmVjdG9yeUV4aXN0cygpKTsKK30KKworVEVT
VF9GKERpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlRGlyZWN0b3JpZXNGb3JBbHJlYWR5RXhp
c3RpbmdQYXRoKSB7CisgIEVYUEVDVF9GQUxTRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlz
dHMoKSkgPDwgdGVzdGRhdGFfcGF0aF8uc3RyaW5nKCk7CisgIEVYUEVDVF9UUlVFKHRlc3RkYXRh
X3BhdGhfLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKSk7CisgIC8vIENhbGwgJ2NyZWF0
ZScgYWdhaW4uLi4gc2hvdWxkIHN0aWxsIHN1Y2NlZWQuCisgIEVYUEVDVF9UUlVFKHRlc3RkYXRh
X3BhdGhfLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKSk7Cit9CisKK1RFU1RfRihEaXJl
Y3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURpcmVjdG9yaWVzQW5kVW5pcXVlRmlsZW5hbWUpIHsK
KyAgRmlsZVBhdGggZmlsZV9wYXRoKEZpbGVQYXRoOjpHZW5lcmF0ZVVuaXF1ZUZpbGVOYW1lKHRl
c3RkYXRhX3BhdGhfLAorICAgICAgRmlsZVBhdGgoInVuaXF1ZSIpLCAidHh0IikpOworICBFWFBF
Q1RfRVEodW5pcXVlX2ZpbGUwXy5zdHJpbmcoKSwgZmlsZV9wYXRoLnN0cmluZygpKTsKKyAgRVhQ
RUNUX0ZBTFNFKGZpbGVfcGF0aC5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAvLyBmaWxlIG5v
dCB0aGVyZQorCisgIHRlc3RkYXRhX3BhdGhfLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHko
KTsKKyAgRVhQRUNUX0ZBTFNFKGZpbGVfcGF0aC5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAv
LyBmaWxlIHN0aWxsIG5vdCB0aGVyZQorICBDcmVhdGVUZXh0RmlsZShmaWxlX3BhdGguY19zdHIo
KSk7CisgIEVYUEVDVF9UUlVFKGZpbGVfcGF0aC5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7CisK
KyAgRmlsZVBhdGggZmlsZV9wYXRoMihGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFtZSh0
ZXN0ZGF0YV9wYXRoXywKKyAgICAgIEZpbGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIpKTsKKyAgRVhQ
RUNUX0VRKHVuaXF1ZV9maWxlMV8uc3RyaW5nKCksIGZpbGVfcGF0aDIuc3RyaW5nKCkpOworICBF
WFBFQ1RfRkFMU0UoZmlsZV9wYXRoMi5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAvLyBmaWxl
IG5vdCB0aGVyZQorICBDcmVhdGVUZXh0RmlsZShmaWxlX3BhdGgyLmNfc3RyKCkpOworICBFWFBF
Q1RfVFJVRShmaWxlX3BhdGgyLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsKK30KKworVEVTVF9G
KERpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlRGlyZWN0b3JpZXNGYWlsKSB7CisgIC8vIGZv
cmNlIGEgZmFpbHVyZSBieSBwdXR0aW5nIGEgZmlsZSB3aGVyZSB3ZSB3aWxsIHRyeSB0byBjcmVh
dGUgYSBkaXJlY3RvcnkuCisgIENyZWF0ZVRleHRGaWxlKHRlc3RkYXRhX2ZpbGVfLmNfc3RyKCkp
OworICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9maWxlXy5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7
CisgIEVYUEVDVF9GQUxTRSh0ZXN0ZGF0YV9maWxlXy5EaXJlY3RvcnlFeGlzdHMoKSk7CisgIEVY
UEVDVF9GQUxTRSh0ZXN0ZGF0YV9maWxlXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkp
OworfQorCitURVNUKE5vRGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVOb0RpcmVjdG9yaWVz
Rm9yRGVmYXVsdFhtbEZpbGUpIHsKKyAgY29uc3QgRmlsZVBhdGggdGVzdF9kZXRhaWxfeG1sKCJ0
ZXN0X2RldGFpbC54bWwiKTsKKyAgRVhQRUNUX0ZBTFNFKHRlc3RfZGV0YWlsX3htbC5DcmVhdGVE
aXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOworfQorCitURVNUKEZpbGVQYXRoVGVzdCwgRGVmYXVs
dENvbnN0cnVjdG9yKSB7CisgIEZpbGVQYXRoIGZwOworICBFWFBFQ1RfRVEoIiIsIGZwLnN0cmlu
ZygpKTsKK30KKworVEVTVChGaWxlUGF0aFRlc3QsIENoYXJBbmRDb3B5Q29uc3RydWN0b3JzKSB7
CisgIGNvbnN0IEZpbGVQYXRoIGZwKCJzcGljeSIpOworICBFWFBFQ1RfRVEoInNwaWN5IiwgZnAu
c3RyaW5nKCkpOworCisgIGNvbnN0IEZpbGVQYXRoIGZwX2NvcHkoZnApOworICBFWFBFQ1RfRVEo
InNwaWN5IiwgZnBfY29weS5zdHJpbmcoKSk7Cit9CisKK1RFU1QoRmlsZVBhdGhUZXN0LCBTdHJp
bmdDb25zdHJ1Y3RvcikgeworICBjb25zdCBGaWxlUGF0aCBmcChzdGQ6OnN0cmluZygiY2lkZXIi
KSk7CisgIEVYUEVDVF9FUSgiY2lkZXIiLCBmcC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoRmlsZVBh
dGhUZXN0LCBTZXQpIHsKKyAgY29uc3QgRmlsZVBhdGggYXBwbGUoImFwcGxlIik7CisgIEZpbGVQ
YXRoIG1hYygibWFjIik7CisgIG1hYy5TZXQoYXBwbGUpOyAgLy8gSW1wbGVtZW50IFNldCgpIHNp
bmNlIG92ZXJsb2FkaW5nIG9wZXJhdG9yPSBpcyBmb3JiaWRkZW4uCisgIEVYUEVDVF9FUSgiYXBw
bGUiLCBtYWMuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoImFwcGxlIiwgYXBwbGUuc3RyaW5nKCkp
OworfQorCitURVNUKEZpbGVQYXRoVGVzdCwgVG9TdHJpbmcpIHsKKyAgY29uc3QgRmlsZVBhdGgg
ZmlsZSgiZHJpbmsiKTsKKyAgRVhQRUNUX0VRKCJkcmluayIsIGZpbGUuc3RyaW5nKCkpOworfQor
CitURVNUKEZpbGVQYXRoVGVzdCwgUmVtb3ZlRXh0ZW5zaW9uKSB7CisgIEVYUEVDVF9FUSgiYXBw
IiwgRmlsZVBhdGgoImFwcC5jYyIpLlJlbW92ZUV4dGVuc2lvbigiY2MiKS5zdHJpbmcoKSk7Cisg
IEVYUEVDVF9FUSgiYXBwIiwgRmlsZVBhdGgoImFwcC5leGUiKS5SZW1vdmVFeHRlbnNpb24oImV4
ZSIpLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJBUFAiLCBGaWxlUGF0aCgiQVBQLkVYRSIpLlJl
bW92ZUV4dGVuc2lvbigiZXhlIikuc3RyaW5nKCkpOworfQorCitURVNUKEZpbGVQYXRoVGVzdCwg
UmVtb3ZlRXh0ZW5zaW9uV2hlblRoZXJlSXNOb0V4dGVuc2lvbikgeworICBFWFBFQ1RfRVEoImFw
cCIsIEZpbGVQYXRoKCJhcHAiKS5SZW1vdmVFeHRlbnNpb24oImV4ZSIpLnN0cmluZygpKTsKK30K
KworVEVTVChGaWxlUGF0aFRlc3QsIElzRGlyZWN0b3J5KSB7CisgIEVYUEVDVF9GQUxTRShGaWxl
UGF0aCgiY29sYSIpLklzRGlyZWN0b3J5KCkpOworICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgia29h
bGEiIEdURVNUX1BBVEhfU0VQXykuSXNEaXJlY3RvcnkoKSk7CisjaWYgR1RFU1RfSEFTX0FMVF9Q
QVRIX1NFUF8KKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImtvYWxhLyIpLklzRGlyZWN0b3J5KCkp
OworI2VuZGlmCit9CisKK1RFU1QoRmlsZVBhdGhUZXN0LCBJc0Fic29sdXRlUGF0aCkgeworICBF
WFBFQ1RfRkFMU0UoRmlsZVBhdGgoImlzIiBHVEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIikuSXNB
YnNvbHV0ZVBhdGgoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiIikuSXNBYnNvbHV0ZVBh
dGgoKSk7CisjaWYgR1RFU1RfT1NfV0lORE9XUworICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiYzpc
XCIgR1RFU1RfUEFUSF9TRVBfICJpc19ub3QiCisgICAgICAgICAgICAgICAgICAgICAgIEdURVNU
X1BBVEhfU0VQXyAicmVsYXRpdmUiKS5Jc0Fic29sdXRlUGF0aCgpKTsKKyAgRVhQRUNUX0ZBTFNF
KEZpbGVQYXRoKCJjOmZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5Jc0Fic29sdXRlUGF0aCgp
KTsKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImM6LyIgR1RFU1RfUEFUSF9TRVBfICJpc19ub3Qi
CisgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1BBVEhfU0VQXyAicmVsYXRpdmUiKS5Jc0Fi
c29sdXRlUGF0aCgpKTsKKyNlbHNlCisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKEdURVNUX1BBVEhf
U0VQXyAiaXNfbm90IiBHVEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIikKKyAgICAgICAgICAgICAg
LklzQWJzb2x1dGVQYXRoKCkpOworI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCit9CisKK1RF
U1QoRmlsZVBhdGhUZXN0LCBJc1Jvb3REaXJlY3RvcnkpIHsKKyNpZiBHVEVTVF9PU19XSU5ET1dT
CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJhOlxcIikuSXNSb290RGlyZWN0b3J5KCkpOworICBF
WFBFQ1RfVFJVRShGaWxlUGF0aCgiWjovIikuSXNSb290RGlyZWN0b3J5KCkpOworICBFWFBFQ1Rf
VFJVRShGaWxlUGF0aCgiZTovLyIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX0ZBTFNF
KEZpbGVQYXRoKCIiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0
aCgiYjoiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYjph
IikuSXNSb290RGlyZWN0b3J5KCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIjg6LyIpLklz
Um9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJjfC8iKS5Jc1Jvb3RE
aXJlY3RvcnkoKSk7CisjZWxzZQorICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiLyIpLklzUm9vdERp
cmVjdG9yeSgpKTsKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi8vIikuSXNSb290RGlyZWN0b3J5
KCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIiIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAg
RVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJcXCIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNU
X0ZBTFNFKEZpbGVQYXRoKCIveCIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyNlbmRpZgorfQorCit9
ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNl
IHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xl
dGVzdC1maWx0ZXItdW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjMGI1YmQ5YTVjZmM1YmZl
OGM2OGFmMWI2NDc4OTllMWZlYmRhNjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0LnB5CkBAIC0wLDAgKzEs
NjM2IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDUgR29vZ2xl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQg
dGVzdCBmb3IgR29vZ2xlIFRlc3QgdGVzdCBmaWx0ZXJzLgorCitBIHVzZXIgY2FuIHNwZWNpZnkg
d2hpY2ggdGVzdChzKSBpbiBhIEdvb2dsZSBUZXN0IHByb2dyYW0gdG8gcnVuIHZpYSBlaXRoZXIK
K3RoZSBHVEVTVF9GSUxURVIgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlIC0tZ3Rlc3RfZmls
dGVyIGZsYWcuCitUaGlzIHNjcmlwdCB0ZXN0cyBzdWNoIGZ1bmN0aW9uYWxpdHkgYnkgaW52b2tp
bmcKK2dvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aCBH
b29nbGUgVGVzdCkgd2l0aCBkaWZmZXJlbnQKK2Vudmlyb25tZW50cyBhbmQgY29tbWFuZCBsaW5l
IGZsYWdzLgorCitOb3RlIHRoYXQgdGVzdCBzaGFyZGluZyBtYXkgYWxzbyBpbmZsdWVuY2Ugd2hp
Y2ggdGVzdHMgYXJlIGZpbHRlcmVkLiBUaGVyZWZvcmUsCit3ZSB0ZXN0IHRoYXQgaGVyZSBhbHNv
LgorIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc2V0cworaW1wb3J0IHN5cwor
aW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworIyBDb25zdGFudHMuCisKKyMgQ2hlY2tzIGlmIHRo
aXMgcGxhdGZvcm0gY2FuIHBhc3MgZW1wdHkgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGNoaWxk
CisjIHByb2Nlc3Nlcy4gIFdlIHNldCBhbiBlbnYgdmFyaWFibGUgdG8gYW4gZW1wdHkgc3RyaW5n
IGFuZCBpbnZva2UgYSBweXRob24KKyMgc2NyaXB0IGluIGEgc3VicHJvY2VzcyB0byBwcmludCB3
aGV0aGVyIHRoZSB2YXJpYWJsZSBpcyBTVElMTCBpbgorIyBvcy5lbnZpcm9uLiAgV2UgdGhlbiB1
c2UgJ2V2YWwnIHRvIHBhcnNlIHRoZSBjaGlsZCdzIG91dHB1dCBzbyB0aGF0IGFuCisjIGV4Y2Vw
dGlvbiBpcyB0aHJvd24gaWYgdGhlIGlucHV0IGlzIGFueXRoaW5nIG90aGVyIHRoYW4gJ1RydWUn
IG5vciAnRmFsc2UnLgorQ0FOX1BBU1NfRU1QVFlfRU5WID0gRmFsc2UKK2lmIHN5cy5leGVjdXRh
YmxlOgorICBvcy5lbnZpcm9uWydFTVBUWV9WQVInXSA9ICcnCisgIGNoaWxkID0gZ3Rlc3RfdGVz
dF91dGlscy5TdWJwcm9jZXNzKAorICAgICAgW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAnaW1wb3J0
IG9zOyBwcmludCBcJ0VNUFRZX1ZBUlwnIGluIG9zLmVudmlyb24nXSkKKyAgQ0FOX1BBU1NfRU1Q
VFlfRU5WID0gZXZhbChjaGlsZC5vdXRwdXQpCisKKworIyBDaGVjayBpZiB0aGlzIHBsYXRmb3Jt
IGNhbiB1bnNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW4gY2hpbGQgcHJvY2Vzc2VzLgorIyBX
ZSBzZXQgYW4gZW52IHZhcmlhYmxlIHRvIGEgbm9uLWVtcHR5IHN0cmluZywgdW5zZXQgaXQsIGFu
ZCBpbnZva2UKKyMgYSBweXRob24gc2NyaXB0IGluIGEgc3VicHJvY2VzcyB0byBwcmludCB3aGV0
aGVyIHRoZSB2YXJpYWJsZQorIyBpcyBOTyBMT05HRVIgaW4gb3MuZW52aXJvbi4KKyMgV2UgdXNl
ICdldmFsJyB0byBwYXJzZSB0aGUgY2hpbGQncyBvdXRwdXQgc28gdGhhdCBhbiBleGNlcHRpb24K
KyMgaXMgdGhyb3duIGlmIHRoZSBpbnB1dCBpcyBuZWl0aGVyICdUcnVlJyBub3IgJ0ZhbHNlJy4K
K0NBTl9VTlNFVF9FTlYgPSBGYWxzZQoraWYgc3lzLmV4ZWN1dGFibGU6CisgIG9zLmVudmlyb25b
J1VOU0VUX1ZBUiddID0gJ1gnCisgIGRlbCBvcy5lbnZpcm9uWydVTlNFVF9WQVInXQorICBjaGls
ZCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKKyAgICAgIFtzeXMuZXhlY3V0YWJsZSwg
Jy1jJywgJ2ltcG9ydCBvczsgcHJpbnQgXCdVTlNFVF9WQVJcJyBub3QgaW4gb3MuZW52aXJvbicK
KyAgICAgIF0pCisgIENBTl9VTlNFVF9FTlYgPSBldmFsKGNoaWxkLm91dHB1dCkKKworCisjIENo
ZWNrcyBpZiB3ZSBzaG91bGQgdGVzdCB3aXRoIGFuIGVtcHR5IGZpbHRlci4gVGhpcyBkb2Vzbid0
CisjIG1ha2Ugc2Vuc2Ugb24gcGxhdGZvcm1zIHRoYXQgY2Fubm90IHBhc3MgZW1wdHkgZW52IHZh
cmlhYmxlcyAoV2luMzIpCisjIGFuZCBvbiBwbGF0Zm9ybXMgdGhhdCBjYW5ub3QgdW5zZXQgdmFy
aWFibGVzIChzaW5jZSB3ZSBjYW5ub3QgdGVsbAorIyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuICIi
IGFuZCBOVUxMIC0tIEJvcmxhbmQgYW5kIFNvbGFyaXMgPCA1LjEwKQorQ0FOX1RFU1RfRU1QVFlf
RklMVEVSID0gKENBTl9QQVNTX0VNUFRZX0VOViBhbmQgQ0FOX1VOU0VUX0VOVikKKworCisjIFRo
ZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3Igc3BlY2lmeWluZyB0aGUgdGVzdCBmaWx0ZXJzLgor
RklMVEVSX0VOVl9WQVIgPSAnR1RFU1RfRklMVEVSJworCisjIFRoZSBlbnZpcm9ubWVudCB2YXJp
YWJsZXMgZm9yIHRlc3Qgc2hhcmRpbmcuCitUT1RBTF9TSEFSRFNfRU5WX1ZBUiA9ICdHVEVTVF9U
T1RBTF9TSEFSRFMnCitTSEFSRF9JTkRFWF9FTlZfVkFSID0gJ0dURVNUX1NIQVJEX0lOREVYJwor
U0hBUkRfU1RBVFVTX0ZJTEVfRU5WX1ZBUiA9ICdHVEVTVF9TSEFSRF9TVEFUVVNfRklMRScKKwor
IyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgZm9yIHNwZWNpZnlpbmcgdGhlIHRlc3QgZmlsdGVycy4K
K0ZJTFRFUl9GTEFHID0gJ2d0ZXN0X2ZpbHRlcicKKworIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcg
Zm9yIGluY2x1ZGluZyBkaXNhYmxlZCB0ZXN0cy4KK0FMU09fUlVOX0RJU0FCTEVEX1RFU1RTX0ZM
QUcgPSAnZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMnCisKKyMgQ29tbWFuZCB0byBydW4g
dGhlIGdvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0XyBwcm9ncmFtLgorQ09NTUFORCA9IGd0ZXN0
X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdnb29nbGV0ZXN0LWZpbHRlci11bml0
dGVzdF8nKQorCisjIFJlZ2V4IGZvciBkZXRlcm1pbmluZyB3aGV0aGVyIHBhcmFtZXRlcml6ZWQg
dGVzdHMgYXJlIGVuYWJsZWQgaW4gdGhlIGJpbmFyeS4KK1BBUkFNX1RFU1RfUkVHRVggPSByZS5j
b21waWxlKHInL1BhcmFtVGVzdCcpCisKKyMgUmVnZXggZm9yIHBhcnNpbmcgdGVzdCBjYXNlIG5h
bWVzIGZyb20gR29vZ2xlIFRlc3QncyBvdXRwdXQuCitURVNUX0NBU0VfUkVHRVggPSByZS5jb21w
aWxlKHInXlxbXC0rXF0gXGQrIHRlc3RzPyBmcm9tIChcdysoL1x3Kyk/KScpCisKKyMgUmVnZXgg
Zm9yIHBhcnNpbmcgdGVzdCBuYW1lcyBmcm9tIEdvb2dsZSBUZXN0J3Mgb3V0cHV0LgorVEVTVF9S
RUdFWCA9IHJlLmNvbXBpbGUocideXFtccypSVU5ccypcXS4qXC4oXHcrKC9cdyspPyknKQorCisj
IFRoZSBjb21tYW5kIGxpbmUgZmxhZyB0byB0ZWxsIEdvb2dsZSBUZXN0IHRvIG91dHB1dCB0aGUg
bGlzdCBvZiB0ZXN0cyBpdAorIyB3aWxsIHJ1bi4KK0xJU1RfVEVTVFNfRkxBRyA9ICctLWd0ZXN0
X2xpc3RfdGVzdHMnCisKKyMgSW5kaWNhdGVzIHdoZXRoZXIgR29vZ2xlIFRlc3Qgc3VwcG9ydHMg
ZGVhdGggdGVzdHMuCitTVVBQT1JUU19ERUFUSF9URVNUUyA9ICdIYXNEZWF0aFRlc3QnIGluIGd0
ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKKyAgICBbQ09NTUFORCwgTElTVF9URVNUU19GTEFH
XSkub3V0cHV0CisKKyMgRnVsbCBuYW1lcyBvZiBhbGwgdGVzdHMgaW4gZ29vZ2xldGVzdC1maWx0
ZXItdW5pdHRlc3RzXy4KK1BBUkFNX1RFU1RTID0gWworICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0
WC8wJywKKyAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMScsCisgICAgJ1NlcVAvUGFyYW1UZXN0
LlRlc3RZLzAnLAorICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8xJywKKyAgICAnU2VxUS9QYXJh
bVRlc3QuVGVzdFgvMCcsCisgICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RYLzEnLAorICAgICdTZXFR
L1BhcmFtVGVzdC5UZXN0WS8wJywKKyAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFkvMScsCisgICAg
XQorCitESVNBQkxFRF9URVNUUyA9IFsKKyAgICAnQmFyVGVzdC5ESVNBQkxFRF9UZXN0Rm91cics
CisgICAgJ0JhclRlc3QuRElTQUJMRURfVGVzdEZpdmUnLAorICAgICdCYXpUZXN0LkRJU0FCTEVE
X1Rlc3RDJywKKyAgICAnRElTQUJMRURfRm9vYmFyVGVzdC5UZXN0MScsCisgICAgJ0RJU0FCTEVE
X0Zvb2JhclRlc3QuRElTQUJMRURfVGVzdDInLAorICAgICdESVNBQkxFRF9Gb29iYXJiYXpUZXN0
LlRlc3RBJywKKyAgICBdCisKK2lmIFNVUFBPUlRTX0RFQVRIX1RFU1RTOgorICBERUFUSF9URVNU
UyA9IFsKKyAgICAnSGFzRGVhdGhUZXN0LlRlc3QxJywKKyAgICAnSGFzRGVhdGhUZXN0LlRlc3Qy
JywKKyAgICBdCitlbHNlOgorICBERUFUSF9URVNUUyA9IFtdCisKKyMgQWxsIHRoZSBub24tZGlz
YWJsZWQgdGVzdHMuCitBQ1RJVkVfVEVTVFMgPSBbCisgICAgJ0Zvb1Rlc3QuQWJjJywKKyAgICAn
Rm9vVGVzdC5YeXonLAorCisgICAgJ0JhclRlc3QuVGVzdE9uZScsCisgICAgJ0JhclRlc3QuVGVz
dFR3bycsCisgICAgJ0JhclRlc3QuVGVzdFRocmVlJywKKworICAgICdCYXpUZXN0LlRlc3RPbmUn
LAorICAgICdCYXpUZXN0LlRlc3RBJywKKyAgICAnQmF6VGVzdC5UZXN0QicsCisgICAgXSArIERF
QVRIX1RFU1RTICsgUEFSQU1fVEVTVFMKKworcGFyYW1fdGVzdHNfcHJlc2VudCA9IE5vbmUKKwor
IyBVdGlsaXRpZXMuCisKK2Vudmlyb24gPSBvcy5lbnZpcm9uLmNvcHkoKQorCisKK2RlZiBTZXRF
bnZWYXIoZW52X3ZhciwgdmFsdWUpOgorICAiIiJTZXRzIHRoZSBlbnYgdmFyaWFibGUgdG8gJ3Zh
bHVlJzsgdW5zZXRzIGl0IHdoZW4gJ3ZhbHVlJyBpcyBOb25lLiIiIgorCisgIGlmIHZhbHVlIGlz
IG5vdCBOb25lOgorICAgIGVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQorICBlbGlmIGVudl92YXIg
aW4gZW52aXJvbjoKKyAgICBkZWwgZW52aXJvbltlbnZfdmFyXQorCisKK2RlZiBSdW5BbmRSZXR1
cm5PdXRwdXQoYXJncyA9IE5vbmUpOgorICAiIiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0gYW5kIHJl
dHVybnMgaXRzIG91dHB1dC4iIiIKKworICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9j
ZXNzKFtDT01NQU5EXSArIChhcmdzIG9yIFtdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbnY9ZW52aXJvbikub3V0cHV0CisKKworZGVmIFJ1bkFuZEV4dHJhY3RUZXN0
TGlzdChhcmdzID0gTm9uZSk6CisgICIiIlJ1bnMgdGhlIHRlc3QgcHJvZ3JhbSBhbmQgcmV0dXJu
cyBpdHMgZXhpdCBjb2RlIGFuZCBhIGxpc3Qgb2YgdGVzdHMgcnVuLiIiIgorCisgIHAgPSBndGVz
dF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0NPTU1BTkRdICsgKGFyZ3Mgb3IgW10pLCBlbnY9ZW52
aXJvbikKKyAgdGVzdHNfcnVuID0gW10KKyAgdGVzdF9jYXNlID0gJycKKyAgdGVzdCA9ICcnCisg
IGZvciBsaW5lIGluIHAub3V0cHV0LnNwbGl0KCdcbicpOgorICAgIG1hdGNoID0gVEVTVF9DQVNF
X1JFR0VYLm1hdGNoKGxpbmUpCisgICAgaWYgbWF0Y2ggaXMgbm90IE5vbmU6CisgICAgICB0ZXN0
X2Nhc2UgPSBtYXRjaC5ncm91cCgxKQorICAgIGVsc2U6CisgICAgICBtYXRjaCA9IFRFU1RfUkVH
RVgubWF0Y2gobGluZSkKKyAgICAgIGlmIG1hdGNoIGlzIG5vdCBOb25lOgorICAgICAgICB0ZXN0
ID0gbWF0Y2guZ3JvdXAoMSkKKyAgICAgICAgdGVzdHNfcnVuLmFwcGVuZCh0ZXN0X2Nhc2UgKyAn
LicgKyB0ZXN0KQorICByZXR1cm4gKHRlc3RzX3J1biwgcC5leGl0X2NvZGUpCisKKworZGVmIElu
dm9rZVdpdGhNb2RpZmllZEVudihleHRyYV9lbnYsIGZ1bmN0aW9uLCAqYXJncywgKiprd2FyZ3Mp
OgorICAiIiJSdW5zIHRoZSBnaXZlbiBmdW5jdGlvbiBhbmQgYXJndW1lbnRzIGluIGEgbW9kaWZp
ZWQgZW52aXJvbm1lbnQuIiIiCisgIHRyeToKKyAgICBvcmlnaW5hbF9lbnYgPSBlbnZpcm9uLmNv
cHkoKQorICAgIGVudmlyb24udXBkYXRlKGV4dHJhX2VudikKKyAgICByZXR1cm4gZnVuY3Rpb24o
KmFyZ3MsICoqa3dhcmdzKQorICBmaW5hbGx5OgorICAgIGVudmlyb24uY2xlYXIoKQorICAgIGVu
dmlyb24udXBkYXRlKG9yaWdpbmFsX2VudikKKworCitkZWYgUnVuV2l0aFNoYXJkaW5nKHRvdGFs
X3NoYXJkcywgc2hhcmRfaW5kZXgsIGNvbW1hbmQpOgorICAiIiJSdW5zIGEgdGVzdCBwcm9ncmFt
IHNoYXJkIGFuZCByZXR1cm5zIGV4aXQgY29kZSBhbmQgYSBsaXN0IG9mIHRlc3RzIHJ1bi4iIiIK
KworICBleHRyYV9lbnYgPSB7U0hBUkRfSU5ERVhfRU5WX1ZBUjogc3RyKHNoYXJkX2luZGV4KSwK
KyAgICAgICAgICAgICAgIFRPVEFMX1NIQVJEU19FTlZfVkFSOiBzdHIodG90YWxfc2hhcmRzKX0K
KyAgcmV0dXJuIEludm9rZVdpdGhNb2RpZmllZEVudihleHRyYV9lbnYsIFJ1bkFuZEV4dHJhY3RU
ZXN0TGlzdCwgY29tbWFuZCkKKworIyBUaGUgdW5pdCB0ZXN0LgorCisKK2NsYXNzIEdUZXN0Rmls
dGVyVW5pdFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICIiIlRlc3RzIHRoZSBl
bnYgdmFyaWFibGUgb3IgdGhlIGNvbW1hbmQgbGluZSBmbGFnIHRvIGZpbHRlciB0ZXN0cy4iIiIK
KworICAjIFV0aWxpdGllcy4KKworICBkZWYgQXNzZXJ0U2V0RXF1YWwoc2VsZiwgbGhzLCByaHMp
OgorICAgICIiIkFzc2VydHMgdGhhdCB0d28gc2V0cyBhcmUgZXF1YWwuIiIiCisKKyAgICBmb3Ig
ZWxlbSBpbiBsaHM6CisgICAgICBzZWxmLmFzc2VydF8oZWxlbSBpbiByaHMsICclcyBpbiAlcycg
JSAoZWxlbSwgcmhzKSkKKworICAgIGZvciBlbGVtIGluIHJoczoKKyAgICAgIHNlbGYuYXNzZXJ0
XyhlbGVtIGluIGxocywgJyVzIGluICVzJyAlIChlbGVtLCBsaHMpKQorCisgIGRlZiBBc3NlcnRQ
YXJ0aXRpb25Jc1ZhbGlkKHNlbGYsIHNldF92YXIsIGxpc3Rfb2Zfc2V0cyk6CisgICAgIiIiQXNz
ZXJ0cyB0aGF0IGxpc3Rfb2Zfc2V0cyBpcyBhIHZhbGlkIHBhcnRpdGlvbiBvZiBzZXRfdmFyLiIi
IgorCisgICAgZnVsbF9wYXJ0aXRpb24gPSBbXQorICAgIGZvciBzbGljZV92YXIgaW4gbGlzdF9v
Zl9zZXRzOgorICAgICAgZnVsbF9wYXJ0aXRpb24uZXh0ZW5kKHNsaWNlX3ZhcikKKyAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihzZXRfdmFyKSwgbGVuKGZ1bGxfcGFydGl0aW9uKSkKKyAgICBzZWxm
LmFzc2VydEVxdWFsKHNldHMuU2V0KHNldF92YXIpLCBzZXRzLlNldChmdWxsX3BhcnRpdGlvbikp
CisKKyAgZGVmIEFkanVzdEZvclBhcmFtZXRlcml6ZWRUZXN0cyhzZWxmLCB0ZXN0c190b19ydW4p
OgorICAgICIiIkFkanVzdCB0ZXN0c190b19ydW4gaW4gY2FzZSB2YWx1ZSBwYXJhbWV0ZXJpemVk
IHRlc3RzIGFyZSBkaXNhYmxlZC4iIiIKKworICAgIGdsb2JhbCBwYXJhbV90ZXN0c19wcmVzZW50
CisgICAgaWYgbm90IHBhcmFtX3Rlc3RzX3ByZXNlbnQ6CisgICAgICByZXR1cm4gbGlzdChzZXRz
LlNldCh0ZXN0c190b19ydW4pIC0gc2V0cy5TZXQoUEFSQU1fVEVTVFMpKQorICAgIGVsc2U6Cisg
ICAgICByZXR1cm4gdGVzdHNfdG9fcnVuCisKKyAgZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBndGVz
dF9maWx0ZXIsIHRlc3RzX3RvX3J1bik6CisgICAgIiIiQ2hlY2tzIHRoYXQgdGhlIGJpbmFyeSBy
dW5zIGNvcnJlY3Qgc2V0IG9mIHRlc3RzIGZvciBhIGdpdmVuIGZpbHRlci4iIiIKKworICAgIHRl
c3RzX3RvX3J1biA9IHNlbGYuQWRqdXN0Rm9yUGFyYW1ldGVyaXplZFRlc3RzKHRlc3RzX3RvX3J1
bikKKworICAgICMgRmlyc3QsIHRlc3RzIHVzaW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS4K
KworICAgICMgV2luZG93cyByZW1vdmVzIGVtcHR5IHZhcmlhYmxlcyBmcm9tIHRoZSBlbnZpcm9u
bWVudCB3aGVuIHBhc3NpbmcgaXQKKyAgICAjIHRvIGEgbmV3IHByb2Nlc3MuICBUaGlzIG1lYW5z
IGl0IGlzIGltcG9zc2libGUgdG8gcGFzcyBhbiBlbXB0eSBmaWx0ZXIKKyAgICAjIGludG8gYSBw
cm9jZXNzIHVzaW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS4gIEhvd2V2ZXIsIHdlIGNhbiBz
dGlsbAorICAgICMgdGVzdCB0aGUgY2FzZSB3aGVuIHRoZSB2YXJpYWJsZSBpcyBub3Qgc3VwcGxp
ZWQgKGkuZS4sIGd0ZXN0X2ZpbHRlciBpcworICAgICMgTm9uZSkuCisgICAgIyBweWxpbnQ6IGRp
c2FibGUtbXNnPUM2NDAzCisgICAgaWYgQ0FOX1RFU1RfRU1QVFlfRklMVEVSIG9yIGd0ZXN0X2Zp
bHRlciAhPSAnJzoKKyAgICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgZ3Rlc3RfZmlsdGVy
KQorICAgICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KClbMF0KKyAgICAgIFNl
dEVudlZhcihGSUxURVJfRU5WX1ZBUiwgTm9uZSkKKyAgICAgIHNlbGYuQXNzZXJ0U2V0RXF1YWwo
dGVzdHNfcnVuLCB0ZXN0c190b19ydW4pCisgICAgIyBweWxpbnQ6IGVuYWJsZS1tc2c9QzY0MDMK
KworICAgICMgTmV4dCwgdGVzdHMgdXNpbmcgdGhlIGNvbW1hbmQgbGluZSBmbGFnLgorCisgICAg
aWYgZ3Rlc3RfZmlsdGVyIGlzIE5vbmU6CisgICAgICBhcmdzID0gW10KKyAgICBlbHNlOgorICAg
ICAgYXJncyA9IFsnLS0lcz0lcycgJSAoRklMVEVSX0ZMQUcsIGd0ZXN0X2ZpbHRlcildCisKKyAg
ICB0ZXN0c19ydW4gPSBSdW5BbmRFeHRyYWN0VGVzdExpc3QoYXJncylbMF0KKyAgICBzZWxmLkFz
c2VydFNldEVxdWFsKHRlc3RzX3J1biwgdGVzdHNfdG9fcnVuKQorCisgIGRlZiBSdW5BbmRWZXJp
ZnlXaXRoU2hhcmRpbmcoc2VsZiwgZ3Rlc3RfZmlsdGVyLCB0b3RhbF9zaGFyZHMsIHRlc3RzX3Rv
X3J1biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPU5vbmUsIGNoZWNrX2V4
aXRfMD1GYWxzZSk6CisgICAgIiIiQ2hlY2tzIHRoYXQgYmluYXJ5IHJ1bnMgY29ycmVjdCB0ZXN0
cyBmb3IgdGhlIGdpdmVuIGZpbHRlciBhbmQgc2hhcmQuCisKKyAgICBSdW5zIGFsbCBzaGFyZHMg
b2YgZ29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3RfIHdpdGggdGhlIGdpdmVuIGZpbHRlciwgYW5k
CisgICAgdmVyaWZpZXMgdGhhdCB0aGUgcmlnaHQgc2V0IG9mIHRlc3RzIHdlcmUgcnVuLiBUaGUg
dW5pb24gb2YgdGVzdHMgcnVuCisgICAgb24gZWFjaCBzaGFyZCBzaG91bGQgYmUgaWRlbnRpY2Fs
IHRvIHRlc3RzX3RvX3J1biwgd2l0aG91dCBkdXBsaWNhdGVzLgorICAgIElmIGNoZWNrX2V4aXRf
MCwgLgorCisgICAgQXJnczoKKyAgICAgIGd0ZXN0X2ZpbHRlcjogQSBmaWx0ZXIgdG8gYXBwbHkg
dG8gdGhlIHRlc3RzLgorICAgICAgdG90YWxfc2hhcmRzOiBBIHRvdGFsIG51bWJlciBvZiBzaGFy
ZHMgdG8gc3BsaXQgdGVzdCBydW4gaW50by4KKyAgICAgIHRlc3RzX3RvX3J1bjogQSBzZXQgb2Yg
dGVzdHMgZXhwZWN0ZWQgdG8gcnVuLgorICAgICAgYXJncyAgIDogICAgICBBcmd1bWVudHMgdG8g
cGFzcyB0byB0aGUgdG8gdGhlIHRlc3QgYmluYXJ5LgorICAgICAgY2hlY2tfZXhpdF8wOiBXaGVu
IHNldCB0byBhIHRydWUgdmFsdWUsIG1ha2Ugc3VyZSB0aGF0IGFsbCBzaGFyZHMKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIDAuCisgICAgIiIiCisKKyAgICB0ZXN0c190b19ydW4gPSBzZWxm
LkFkanVzdEZvclBhcmFtZXRlcml6ZWRUZXN0cyh0ZXN0c190b19ydW4pCisKKyAgICAjIFdpbmRv
d3MgcmVtb3ZlcyBlbXB0eSB2YXJpYWJsZXMgZnJvbSB0aGUgZW52aXJvbm1lbnQgd2hlbiBwYXNz
aW5nIGl0CisgICAgIyB0byBhIG5ldyBwcm9jZXNzLiAgVGhpcyBtZWFucyBpdCBpcyBpbXBvc3Np
YmxlIHRvIHBhc3MgYW4gZW1wdHkgZmlsdGVyCisgICAgIyBpbnRvIGEgcHJvY2VzcyB1c2luZyB0
aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuICBIb3dldmVyLCB3ZSBjYW4gc3RpbGwKKyAgICAjIHRl
c3QgdGhlIGNhc2Ugd2hlbiB0aGUgdmFyaWFibGUgaXMgbm90IHN1cHBsaWVkIChpLmUuLCBndGVz
dF9maWx0ZXIgaXMKKyAgICAjIE5vbmUpLgorICAgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQw
MworICAgIGlmIENBTl9URVNUX0VNUFRZX0ZJTFRFUiBvciBndGVzdF9maWx0ZXIgIT0gJyc6Cisg
ICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIGd0ZXN0X2ZpbHRlcikKKyAgICAgIHBhcnRp
dGlvbiA9IFtdCisgICAgICBmb3IgaSBpbiByYW5nZSgwLCB0b3RhbF9zaGFyZHMpOgorICAgICAg
ICAodGVzdHNfcnVuLCBleGl0X2NvZGUpID0gUnVuV2l0aFNoYXJkaW5nKHRvdGFsX3NoYXJkcywg
aSwgYXJncykKKyAgICAgICAgaWYgY2hlY2tfZXhpdF8wOgorICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoMCwgZXhpdF9jb2RlKQorICAgICAgICBwYXJ0aXRpb24uYXBwZW5kKHRlc3RzX3J1bikK
KworICAgICAgc2VsZi5Bc3NlcnRQYXJ0aXRpb25Jc1ZhbGlkKHRlc3RzX3RvX3J1biwgcGFydGl0
aW9uKQorICAgICAgU2V0RW52VmFyKEZJTFRFUl9FTlZfVkFSLCBOb25lKQorICAgICMgcHlsaW50
OiBlbmFibGUtbXNnPUM2NDAzCisKKyAgZGVmIFJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQo
c2VsZiwgZ3Rlc3RfZmlsdGVyLCB0ZXN0c190b19ydW4pOgorICAgICIiIkNoZWNrcyB0aGF0IHRo
ZSBiaW5hcnkgcnVucyBjb3JyZWN0IHNldCBvZiB0ZXN0cyBmb3IgdGhlIGdpdmVuIGZpbHRlci4K
KworICAgIFJ1bnMgZ29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3RfIHdpdGggdGhlIGdpdmVuIGZp
bHRlciwgYW5kIGVuYWJsZXMKKyAgICBkaXNhYmxlZCB0ZXN0cy4gVmVyaWZpZXMgdGhhdCB0aGUg
cmlnaHQgc2V0IG9mIHRlc3RzIHdlcmUgcnVuLgorCisgICAgQXJnczoKKyAgICAgIGd0ZXN0X2Zp
bHRlcjogQSBmaWx0ZXIgdG8gYXBwbHkgdG8gdGhlIHRlc3RzLgorICAgICAgdGVzdHNfdG9fcnVu
OiBBIHNldCBvZiB0ZXN0cyBleHBlY3RlZCB0byBydW4uCisgICAgIiIiCisKKyAgICB0ZXN0c190
b19ydW4gPSBzZWxmLkFkanVzdEZvclBhcmFtZXRlcml6ZWRUZXN0cyh0ZXN0c190b19ydW4pCisK
KyAgICAjIENvbnN0cnVjdCB0aGUgY29tbWFuZCBsaW5lLgorICAgIGFyZ3MgPSBbJy0tJXMnICUg
QUxTT19SVU5fRElTQUJMRURfVEVTVFNfRkxBR10KKyAgICBpZiBndGVzdF9maWx0ZXIgaXMgbm90
IE5vbmU6CisgICAgICBhcmdzLmFwcGVuZCgnLS0lcz0lcycgJSAoRklMVEVSX0ZMQUcsIGd0ZXN0
X2ZpbHRlcikpCisKKyAgICB0ZXN0c19ydW4gPSBSdW5BbmRFeHRyYWN0VGVzdExpc3QoYXJncylb
MF0KKyAgICBzZWxmLkFzc2VydFNldEVxdWFsKHRlc3RzX3J1biwgdGVzdHNfdG9fcnVuKQorCisg
IGRlZiBzZXRVcChzZWxmKToKKyAgICAiIiJTZXRzIHVwIHRlc3QgY2FzZS4KKworICAgIERldGVy
bWluZXMgd2hldGhlciB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBlbmFibGVkIGluIHRo
ZSBiaW5hcnkgYW5kCisgICAgc2V0cyB0aGUgZmxhZ3MgYWNjb3JkaW5nbHkuCisgICAgIiIiCisK
KyAgICBnbG9iYWwgcGFyYW1fdGVzdHNfcHJlc2VudAorICAgIGlmIHBhcmFtX3Rlc3RzX3ByZXNl
bnQgaXMgTm9uZToKKyAgICAgIHBhcmFtX3Rlc3RzX3ByZXNlbnQgPSBQQVJBTV9URVNUX1JFR0VY
LnNlYXJjaCgKKyAgICAgICAgICBSdW5BbmRSZXR1cm5PdXRwdXQoKSkgaXMgbm90IE5vbmUKKwor
ICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcihzZWxmKToKKyAgICAiIiJUZXN0cyB0aGUgYmVoYXZp
b3Igb2Ygbm90IHNwZWNpZnlpbmcgdGhlIGZpbHRlci4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVy
aWZ5KE5vbmUsIEFDVElWRV9URVNUUykKKworICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcldpdGhT
aGFyZHMoc2VsZik6CisgICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9yIHdpdGhvdXQgdGhlIGZpbHRl
ciwgd2l0aCBzaGFyZGluZyBlbmFibGVkLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRo
U2hhcmRpbmcoTm9uZSwgMSwgQUNUSVZFX1RFU1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0
aFNoYXJkaW5nKE5vbmUsIDIsIEFDVElWRV9URVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdp
dGhTaGFyZGluZyhOb25lLCBsZW4oQUNUSVZFX1RFU1RTKSAtIDEsIEFDVElWRV9URVNUUykKKyAg
ICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhOb25lLCBsZW4oQUNUSVZFX1RFU1RTKSwg
QUNUSVZFX1RFU1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKE5vbmUsIGxl
bihBQ1RJVkVfVEVTVFMpICsgMSwgQUNUSVZFX1RFU1RTKQorCisgIGRlZiB0ZXN0RW1wdHlGaWx0
ZXIoc2VsZik6CisgICAgIiIiVGVzdHMgYW4gZW1wdHkgZmlsdGVyLiIiIgorCisgICAgc2VsZi5S
dW5BbmRWZXJpZnkoJycsIFtdKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKCcn
LCAxLCBbXSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZygnJywgMiwgW10pCisK
KyAgZGVmIHRlc3RCYWRGaWx0ZXIoc2VsZik6CisgICAgIiIiVGVzdHMgYSBmaWx0ZXIgdGhhdCBt
YXRjaGVzIG5vdGhpbmcuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnQmFkRmlsdGVyJywg
W10pCisgICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdCYWRGaWx0ZXInLCBb
XSkKKworICBkZWYgdGVzdEZ1bGxOYW1lKHNlbGYpOgorICAgICIiIlRlc3RzIGZpbHRlcmluZyBi
eSBmdWxsIG5hbWUuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnRm9vVGVzdC5YeXonLCBb
J0Zvb1Rlc3QuWHl6J10pCisgICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdG
b29UZXN0Llh5eicsIFsnRm9vVGVzdC5YeXonXSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhT
aGFyZGluZygnRm9vVGVzdC5YeXonLCA1LCBbJ0Zvb1Rlc3QuWHl6J10pCisKKyAgZGVmIHRlc3RV
bml2ZXJzYWxGaWx0ZXJzKHNlbGYpOgorICAgICIiIlRlc3RzIGZpbHRlcnMgdGhhdCBtYXRjaCBl
dmVyeXRoaW5nLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyonLCBBQ1RJVkVfVEVTVFMp
CisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyouKicsIEFDVElWRV9URVNUUykKKyAgICBzZWxmLlJ1
bkFuZFZlcmlmeVdpdGhTaGFyZGluZygnKi4qJywgbGVuKEFDVElWRV9URVNUUykgLSAzLCBBQ1RJ
VkVfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCcqJywgQUNU
SVZFX1RFU1RTICsgRElTQUJMRURfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2lu
Z0Rpc2FibGVkKCcqLionLCBBQ1RJVkVfVEVTVFMgKyBESVNBQkxFRF9URVNUUykKKworICBkZWYg
dGVzdEZpbHRlckJ5VGVzdENhc2Uoc2VsZik6CisgICAgIiIiVGVzdHMgZmlsdGVyaW5nIGJ5IHRl
c3QgY2FzZSBuYW1lLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0Zvb1Rlc3QuKicsIFsn
Rm9vVGVzdC5BYmMnLCAnRm9vVGVzdC5YeXonXSkKKworICAgIEJBWl9URVNUUyA9IFsnQmF6VGVz
dC5UZXN0T25lJywgJ0JhelRlc3QuVGVzdEEnLCAnQmF6VGVzdC5UZXN0QiddCisgICAgc2VsZi5S
dW5BbmRWZXJpZnkoJ0JhelRlc3QuKicsIEJBWl9URVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlm
eUFsbG93aW5nRGlzYWJsZWQoJ0JhelRlc3QuKicsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJBWl9URVNUUyArIFsnQmF6VGVzdC5ESVNBQkxFRF9UZXN0QyddKQorCisg
IGRlZiB0ZXN0RmlsdGVyQnlUZXN0KHNlbGYpOgorICAgICIiIlRlc3RzIGZpbHRlcmluZyBieSB0
ZXN0IG5hbWUuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi5UZXN0T25lJywgWydCYXJU
ZXN0LlRlc3RPbmUnLCAnQmF6VGVzdC5UZXN0T25lJ10pCisKKyAgZGVmIHRlc3RGaWx0ZXJEaXNh
YmxlZFRlc3RzKHNlbGYpOgorICAgICIiIlNlbGVjdCBvbmx5IHRoZSBkaXNhYmxlZCB0ZXN0cyB0
byBydW4uIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnRElTQUJMRURfRm9vYmFyVGVzdC5U
ZXN0MScsIFtdKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnRElTQUJM
RURfRm9vYmFyVGVzdC5UZXN0MScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsnRElTQUJMRURfRm9vYmFyVGVzdC5UZXN0MSddKQorCisgICAgc2VsZi5SdW5BbmRWZXJp
ZnkoJypESVNBQkxFRF8qJywgW10pCisgICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2Fi
bGVkKCcqRElTQUJMRURfKicsIERJU0FCTEVEX1RFU1RTKQorCisgICAgc2VsZi5SdW5BbmRWZXJp
ZnkoJyouRElTQUJMRURfKicsIFtdKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNh
YmxlZCgnKi5ESVNBQkxFRF8qJywgWworICAgICAgICAnQmFyVGVzdC5ESVNBQkxFRF9UZXN0Rm91
cicsCisgICAgICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rlc3RGaXZlJywKKyAgICAgICAgJ0JhelRl
c3QuRElTQUJMRURfVGVzdEMnLAorICAgICAgICAnRElTQUJMRURfRm9vYmFyVGVzdC5ESVNBQkxF
RF9UZXN0MicsCisgICAgICAgIF0pCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnRElTQUJMRURf
KicsIFtdKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnRElTQUJMRURf
KicsIFsKKyAgICAgICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnLAorICAgICAgICAnRElT
QUJMRURfRm9vYmFyVGVzdC5ESVNBQkxFRF9UZXN0MicsCisgICAgICAgICdESVNBQkxFRF9Gb29i
YXJiYXpUZXN0LlRlc3RBJywKKyAgICAgICAgXSkKKworICBkZWYgdGVzdFdpbGRjYXJkSW5UZXN0
Q2FzZU5hbWUoc2VsZik6CisgICAgIiIiVGVzdHMgdXNpbmcgd2lsZGNhcmQgaW4gdGhlIHRlc3Qg
Y2FzZSBuYW1lLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyphKi4qJywgWworICAgICAg
ICAnQmFyVGVzdC5UZXN0T25lJywKKyAgICAgICAgJ0JhclRlc3QuVGVzdFR3bycsCisgICAgICAg
ICdCYXJUZXN0LlRlc3RUaHJlZScsCisKKyAgICAgICAgJ0JhelRlc3QuVGVzdE9uZScsCisgICAg
ICAgICdCYXpUZXN0LlRlc3RBJywKKyAgICAgICAgJ0JhelRlc3QuVGVzdEInLCBdICsgREVBVEhf
VEVTVFMgKyBQQVJBTV9URVNUUykKKworICBkZWYgdGVzdFdpbGRjYXJkSW5UZXN0TmFtZShzZWxm
KToKKyAgICAiIiJUZXN0cyB1c2luZyB3aWxkY2FyZCBpbiB0aGUgdGVzdCBuYW1lLiIiIgorCisg
ICAgc2VsZi5SdW5BbmRWZXJpZnkoJyouKkEqJywgWydGb29UZXN0LkFiYycsICdCYXpUZXN0LlRl
c3RBJ10pCisKKyAgZGVmIHRlc3RGaWx0ZXJXaXRob3V0RG90KHNlbGYpOgorICAgICIiIlRlc3Rz
IGEgZmlsdGVyIHRoYXQgaGFzIG5vICcuJyBpbiBpdC4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVy
aWZ5KCcqeionLCBbCisgICAgICAgICdGb29UZXN0Llh5eicsCisKKyAgICAgICAgJ0JhelRlc3Qu
VGVzdE9uZScsCisgICAgICAgICdCYXpUZXN0LlRlc3RBJywKKyAgICAgICAgJ0JhelRlc3QuVGVz
dEInLAorICAgICAgICBdKQorCisgIGRlZiB0ZXN0VHdvUGF0dGVybnMoc2VsZik6CisgICAgIiIi
VGVzdHMgZmlsdGVycyB0aGF0IGNvbnNpc3Qgb2YgdHdvIHBhdHRlcm5zLiIiIgorCisgICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoJ0ZvbyouKjoqQSonLCBbCisgICAgICAgICdGb29UZXN0LkFiYycsCisg
ICAgICAgICdGb29UZXN0Llh5eicsCisKKyAgICAgICAgJ0JhelRlc3QuVGVzdEEnLAorICAgICAg
ICBdKQorCisgICAgIyBBbiBlbXB0eSBwYXR0ZXJuICsgYSBub24tZW1wdHkgb25lCisgICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoJzoqQSonLCBbJ0Zvb1Rlc3QuQWJjJywgJ0JhelRlc3QuVGVzdEEnXSkK
KworICBkZWYgdGVzdFRocmVlUGF0dGVybnMoc2VsZik6CisgICAgIiIiVGVzdHMgZmlsdGVycyB0
aGF0IGNvbnNpc3Qgb2YgdGhyZWUgcGF0dGVybnMuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlm
eSgnKm9vKjoqQSo6Kk9uZScsIFsKKyAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKKyAgICAgICAgJ0Zv
b1Rlc3QuWHl6JywKKworICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKKworICAgICAgICAnQmF6
VGVzdC5UZXN0T25lJywKKyAgICAgICAgJ0JhelRlc3QuVGVzdEEnLAorICAgICAgICBdKQorCisg
ICAgIyBUaGUgMm5kIHBhdHRlcm4gaXMgZW1wdHkuCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJypv
byo6OipPbmUnLCBbCisgICAgICAgICdGb29UZXN0LkFiYycsCisgICAgICAgICdGb29UZXN0Llh5
eicsCisKKyAgICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCisKKyAgICAgICAgJ0JhelRlc3QuVGVz
dE9uZScsCisgICAgICAgIF0pCisKKyAgICAjIFRoZSBsYXN0IDIgcGF0dGVybnMgYXJlIGVtcHR5
LgorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqb28qOjonLCBbCisgICAgICAgICdGb29UZXN0LkFi
YycsCisgICAgICAgICdGb29UZXN0Llh5eicsCisgICAgICAgIF0pCisKKyAgZGVmIHRlc3ROZWdh
dGl2ZUZpbHRlcnMoc2VsZik6CisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyotQmF6VGVzdC5UZXN0
T25lJywgWworICAgICAgICAnRm9vVGVzdC5BYmMnLAorICAgICAgICAnRm9vVGVzdC5YeXonLAor
CisgICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAorICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywK
KyAgICAgICAgJ0JhclRlc3QuVGVzdFRocmVlJywKKworICAgICAgICAnQmF6VGVzdC5UZXN0QScs
CisgICAgICAgICdCYXpUZXN0LlRlc3RCJywKKyAgICAgICAgXSArIERFQVRIX1RFU1RTICsgUEFS
QU1fVEVTVFMpCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi1Gb29UZXN0LkFiYzpCYXpUZXN0
LionLCBbCisgICAgICAgICdGb29UZXN0Llh5eicsCisKKyAgICAgICAgJ0JhclRlc3QuVGVzdE9u
ZScsCisgICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAorICAgICAgICAnQmFyVGVzdC5UZXN0VGhy
ZWUnLAorICAgICAgICBdICsgREVBVEhfVEVTVFMgKyBQQVJBTV9URVNUUykKKworICAgIHNlbGYu
UnVuQW5kVmVyaWZ5KCdCYXJUZXN0LiotQmFyVGVzdC5UZXN0T25lJywgWworICAgICAgICAnQmFy
VGVzdC5UZXN0VHdvJywKKyAgICAgICAgJ0JhclRlc3QuVGVzdFRocmVlJywKKyAgICAgICAgXSkK
KworICAgICMgVGVzdHMgd2l0aG91dCBsZWFkaW5nICcqJy4KKyAgICBzZWxmLlJ1bkFuZFZlcmlm
eSgnLUZvb1Rlc3QuQWJjOkZvb1Rlc3QuWHl6OkJhelRlc3QuKicsIFsKKyAgICAgICAgJ0JhclRl
c3QuVGVzdE9uZScsCisgICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAorICAgICAgICAnQmFyVGVz
dC5UZXN0VGhyZWUnLAorICAgICAgICBdICsgREVBVEhfVEVTVFMgKyBQQVJBTV9URVNUUykKKwor
ICAgICMgVmFsdWUgcGFyYW1ldGVyaXplZCB0ZXN0cy4KKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgn
Ki8qJywgUEFSQU1fVEVTVFMpCisKKyAgICAjIFZhbHVlIHBhcmFtZXRlcml6ZWQgdGVzdHMgZmls
dGVyaW5nIGJ5IHRoZSBzZXF1ZW5jZSBuYW1lLgorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdTZXFQ
LyonLCBbCisgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywKKyAgICAgICAgJ1NlcVAv
UGFyYW1UZXN0LlRlc3RYLzEnLAorICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMCcsCisg
ICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8xJywKKyAgICAgICAgXSkKKworICAgICMgVmFs
dWUgcGFyYW1ldGVyaXplZCB0ZXN0cyBmaWx0ZXJpbmcgYnkgdGhlIHRlc3QgbmFtZS4KKyAgICBz
ZWxmLlJ1bkFuZFZlcmlmeSgnKi8wJywgWworICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgv
MCcsCisgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8wJywKKyAgICAgICAgJ1NlcVEvUGFy
YW1UZXN0LlRlc3RYLzAnLAorICAgICAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFkvMCcsCisgICAg
ICAgIF0pCisKKyAgZGVmIHRlc3RGbGFnT3ZlcnJpZGVzRW52VmFyKHNlbGYpOgorICAgICIiIlRl
c3RzIHRoYXQgdGhlIGZpbHRlciBmbGFnIG92ZXJyaWRlcyB0aGUgZmlsdGVyaW5nIGVudi4gdmFy
aWFibGUuIiIiCisKKyAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsICdGb28qJykKKyAgICBh
cmdzID0gWyctLSVzPSVzJyAlIChGSUxURVJfRkxBRywgJypPbmUnKV0KKyAgICB0ZXN0c19ydW4g
PSBSdW5BbmRFeHRyYWN0VGVzdExpc3QoYXJncylbMF0KKyAgICBTZXRFbnZWYXIoRklMVEVSX0VO
Vl9WQVIsIE5vbmUpCisKKyAgICBzZWxmLkFzc2VydFNldEVxdWFsKHRlc3RzX3J1biwgWydCYXJU
ZXN0LlRlc3RPbmUnLCAnQmF6VGVzdC5UZXN0T25lJ10pCisKKyAgZGVmIHRlc3RTaGFyZFN0YXR1
c0ZpbGVJc0NyZWF0ZWQoc2VsZik6CisgICAgIiIiVGVzdHMgdGhhdCB0aGUgc2hhcmQgZmlsZSBp
cyBjcmVhdGVkIGlmIHNwZWNpZmllZCBpbiB0aGUgZW52aXJvbm1lbnQuIiIiCisKKyAgICBzaGFy
ZF9zdGF0dXNfZmlsZSA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hhcmRfc3RhdHVzX2Zp
bGUnKQorICAgIHNlbGYuYXNzZXJ0Xyhub3Qgb3MucGF0aC5leGlzdHMoc2hhcmRfc3RhdHVzX2Zp
bGUpKQorCisgICAgZXh0cmFfZW52ID0ge1NIQVJEX1NUQVRVU19GSUxFX0VOVl9WQVI6IHNoYXJk
X3N0YXR1c19maWxlfQorICAgIHRyeToKKyAgICAgIEludm9rZVdpdGhNb2RpZmllZEVudihleHRy
YV9lbnYsIFJ1bkFuZFJldHVybk91dHB1dCkKKyAgICBmaW5hbGx5OgorICAgICAgc2VsZi5hc3Nl
cnRfKG9zLnBhdGguZXhpc3RzKHNoYXJkX3N0YXR1c19maWxlKSkKKyAgICAgIG9zLnJlbW92ZShz
aGFyZF9zdGF0dXNfZmlsZSkKKworICBkZWYgdGVzdFNoYXJkU3RhdHVzRmlsZUlzQ3JlYXRlZFdp
dGhMaXN0VGVzdHMoc2VsZik6CisgICAgIiIiVGVzdHMgdGhhdCB0aGUgc2hhcmQgZmlsZSBpcyBj
cmVhdGVkIHdpdGggdGhlICJsaXN0X3Rlc3RzIiBmbGFnLiIiIgorCisgICAgc2hhcmRfc3RhdHVz
X2ZpbGUgPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYXJkX3N0YXR1c19maWxlMicpCisg
ICAgc2VsZi5hc3NlcnRfKG5vdCBvcy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkpCisK
KyAgICBleHRyYV9lbnYgPSB7U0hBUkRfU1RBVFVTX0ZJTEVfRU5WX1ZBUjogc2hhcmRfc3RhdHVz
X2ZpbGV9CisgICAgdHJ5OgorICAgICAgb3V0cHV0ID0gSW52b2tlV2l0aE1vZGlmaWVkRW52KGV4
dHJhX2VudiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW5BbmRSZXR1
cm5PdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0xJU1RfVEVT
VFNfRkxBR10pCisgICAgZmluYWxseToKKyAgICAgICMgVGhpcyBhc3NlcnRpb24gZW5zdXJlcyB0
aGF0IEdvb2dsZSBUZXN0IGVudW1lcmF0ZWQgdGhlIHRlc3RzIGFzCisgICAgICAjIG9wcG9zZWQg
dG8gcnVubmluZyB0aGVtLgorICAgICAgc2VsZi5hc3NlcnRfKCdbPT09PT09PT09PV0nIG5vdCBp
biBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgb3V0cHV0IGR1cmluZyB0
ZXN0IGVudW1lcmF0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICdQbGVhc2UgZW5zdXJlIHRo
YXQgTElTVF9URVNUU19GTEFHIGlzIGFzc2lnbmVkIHRoZVxuJworICAgICAgICAgICAgICAgICAg
ICdjb3JyZWN0IGZsYWcgdmFsdWUgZm9yIGxpc3RpbmcgR29vZ2xlIFRlc3QgdGVzdHMuJykKKwor
ICAgICAgc2VsZi5hc3NlcnRfKG9zLnBhdGguZXhpc3RzKHNoYXJkX3N0YXR1c19maWxlKSkKKyAg
ICAgIG9zLnJlbW92ZShzaGFyZF9zdGF0dXNfZmlsZSkKKworICBpZiBTVVBQT1JUU19ERUFUSF9U
RVNUUzoKKyAgICBkZWYgdGVzdFNoYXJkaW5nV29ya3NXaXRoRGVhdGhUZXN0cyhzZWxmKToKKyAg
ICAgICIiIlRlc3RzIGludGVncmF0aW9uIHdpdGggZGVhdGggdGVzdHMgYW5kIHNoYXJkaW5nLiIi
IgorCisgICAgICBndGVzdF9maWx0ZXIgPSAnSGFzRGVhdGhUZXN0Lio6U2VxUC8qJworICAgICAg
ZXhwZWN0ZWRfdGVzdHMgPSBbCisgICAgICAgICAgJ0hhc0RlYXRoVGVzdC5UZXN0MScsCisgICAg
ICAgICAgJ0hhc0RlYXRoVGVzdC5UZXN0MicsCisKKyAgICAgICAgICAnU2VxUC9QYXJhbVRlc3Qu
VGVzdFgvMCcsCisgICAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzEnLAorICAgICAgICAg
ICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8wJywKKyAgICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVz
dFkvMScsCisgICAgICAgICAgXQorCisgICAgICBmb3IgZmxhZyBpbiBbJy0tZ3Rlc3RfZGVhdGhf
dGVzdF9zdHlsZT10aHJlYWRzYWZlJywKKyAgICAgICAgICAgICAgICAgICAnLS1ndGVzdF9kZWF0
aF90ZXN0X3N0eWxlPWZhc3QnXToKKyAgICAgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRp
bmcoZ3Rlc3RfZmlsdGVyLCAzLCBleHBlY3RlZF90ZXN0cywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hlY2tfZXhpdF8wPVRydWUsIGFyZ3M9W2ZsYWddKQorICAgICAg
ICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhndGVzdF9maWx0ZXIsIDUsIGV4cGVjdGVk
X3Rlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19leGl0
XzA9VHJ1ZSwgYXJncz1bZmxhZ10pCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0
ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2dvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3RfLmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQz
MzViNjAzOTFkMWQ0NjhhNDExNjFiMzhjMTRlY2NiZjFkMTM4MDUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0
Xy5jYwpAQCAtMCwwICsxLDEzNyBAQAorLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCisv
LyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisv
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisKKy8vIFVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QgdGVzdCBmaWx0ZXJz
LgorLy8KKy8vIEEgdXNlciBjYW4gc3BlY2lmeSB3aGljaCB0ZXN0KHMpIGluIGEgR29vZ2xlIFRl
c3QgcHJvZ3JhbSB0byBydW4gdmlhCisvLyBlaXRoZXIgdGhlIEdURVNUX0ZJTFRFUiBlbnZpcm9u
bWVudCB2YXJpYWJsZSBvciB0aGUgLS1ndGVzdF9maWx0ZXIKKy8vIGZsYWcuICBUaGlzIGlzIHVz
ZWQgZm9yIHRlc3Rpbmcgc3VjaCBmdW5jdGlvbmFsaXR5LgorLy8KKy8vIFRoZSBwcm9ncmFtIHdp
bGwgYmUgaW52b2tlZCBmcm9tIGEgUHl0aG9uIHVuaXQgdGVzdC4gIERvbid0IHJ1biBpdAorLy8g
ZGlyZWN0bHkuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCisv
LyBUZXN0IGNhc2UgRm9vVGVzdC4KKworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKK307CisKK1RFU1RfRihGb29UZXN0LCBBYmMpIHsKK30KKworVEVTVF9GKEZvb1Rlc3Qs
IFh5eikgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKK30KKworLy8gVGVzdCBj
YXNlIEJhclRlc3QuCisKK1RFU1QoQmFyVGVzdCwgVGVzdE9uZSkgeworfQorCitURVNUKEJhclRl
c3QsIFRlc3RUd28pIHsKK30KKworVEVTVChCYXJUZXN0LCBUZXN0VGhyZWUpIHsKK30KKworVEVT
VChCYXJUZXN0LCBESVNBQkxFRF9UZXN0Rm91cikgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZh
aWx1cmUuIjsKK30KKworVEVTVChCYXJUZXN0LCBESVNBQkxFRF9UZXN0Rml2ZSkgeworICBGQUlM
KCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKK30KKworLy8gVGVzdCBjYXNlIEJhelRlc3QuCisK
K1RFU1QoQmF6VGVzdCwgVGVzdE9uZSkgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUu
IjsKK30KKworVEVTVChCYXpUZXN0LCBUZXN0QSkgeworfQorCitURVNUKEJhelRlc3QsIFRlc3RC
KSB7Cit9CisKK1RFU1QoQmF6VGVzdCwgRElTQUJMRURfVGVzdEMpIHsKKyAgRkFJTCgpIDw8ICJF
eHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKKy8vIFRlc3QgY2FzZSBIYXNEZWF0aFRlc3QKKworVEVT
VChIYXNEZWF0aFRlc3QsIFRlc3QxKSB7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoZXhp
dCgxKSwgIi4qIik7Cit9CisKKy8vIFdlIG5lZWQgYXQgbGVhc3QgdHdvIGRlYXRoIHRlc3RzIHRv
IG1ha2Ugc3VyZSB0aGF0IHRoZSBhbGwgZGVhdGggdGVzdHMKKy8vIGFyZW4ndCBvbiB0aGUgZmly
c3Qgc2hhcmQuCitURVNUKEhhc0RlYXRoVGVzdCwgVGVzdDIpIHsKKyAgRVhQRUNUX0RFQVRIX0lG
X1NVUFBPUlRFRChleGl0KDEpLCAiLioiKTsKK30KKworLy8gVGVzdCBjYXNlIEZvb2JhclRlc3QK
KworVEVTVChESVNBQkxFRF9Gb29iYXJUZXN0LCBUZXN0MSkgeworICBGQUlMKCkgPDwgIkV4cGVj
dGVkIGZhaWx1cmUuIjsKK30KKworVEVTVChESVNBQkxFRF9Gb29iYXJUZXN0LCBESVNBQkxFRF9U
ZXN0MikgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKK30KKworLy8gVGVzdCBj
YXNlIEZvb2JhcmJhelRlc3QKKworVEVTVChESVNBQkxFRF9Gb29iYXJiYXpUZXN0LCBUZXN0QSkg
eworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKK30KKworY2xhc3MgUGFyYW1UZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7Cit9OworCitURVNUX1AoUGFy
YW1UZXN0LCBUZXN0WCkgeworfQorCitURVNUX1AoUGFyYW1UZXN0LCBUZXN0WSkgeworfQorCitJ
TlNUQU5USUFURV9URVNUX0NBU0VfUChTZXFQLCBQYXJhbVRlc3QsIHRlc3Rpbmc6OlZhbHVlcygx
LCAyKSk7CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXFRLCBQYXJhbVRlc3QsIHRlc3Rpbmc6
OlZhbHVlcyg1LCA2KSk7CisKK30gIC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqKmFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7
CisKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1qc29uLW91dGZpbGVzLXRlc3QucHkgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtanNvbi1vdXRmaWxlcy10ZXN0LnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM5OWJlNDhlOGFjMzY1MDllZDMyZWEyZmI4ZTRmYTFlYTdmYzgzNjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qt
anNvbi1vdXRmaWxlcy10ZXN0LnB5CkBAIC0wLDAgKzEsMTYyIEBACisjIS91c3IvYmluL2VudiBw
eXRob24KKyMgQ29weXJpZ2h0IDIwMTgsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmli
dXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJVbml0IHRlc3QgZm9yIHRoZSBndGVzdF9qc29u
X291dHB1dCBtb2R1bGUuIiIiCisKK2ltcG9ydCBqc29uCitpbXBvcnQgb3MKK2ltcG9ydCBndGVz
dF9qc29uX3Rlc3RfdXRpbHMKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKK0dURVNUX09VVFBV
VF9TVUJESVIgPSAnanNvbl9vdXRmaWxlcycKK0dURVNUX09VVFBVVF8xX1RFU1QgPSAnZ3Rlc3Rf
eG1sX291dGZpbGUxX3Rlc3RfJworR1RFU1RfT1VUUFVUXzJfVEVTVCA9ICdndGVzdF94bWxfb3V0
ZmlsZTJfdGVzdF8nCisKK0VYUEVDVEVEXzEgPSB7CisgICAgdSd0ZXN0cyc6IDEsCisgICAgdSdm
YWlsdXJlcyc6IDAsCisgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgdSdlcnJvcnMnOiAwLAorICAg
IHUndGltZSc6IHUnKicsCisgICAgdSd0aW1lc3RhbXAnOiB1JyonLAorICAgIHUnbmFtZSc6IHUn
QWxsVGVzdHMnLAorICAgIHUndGVzdHN1aXRlcyc6IFt7CisgICAgICAgIHUnbmFtZSc6IHUnUHJv
cGVydHlPbmUnLAorICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgdSdmYWlsdXJlcyc6IDAs
CisgICAgICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAg
IHUndGltZSc6IHUnKicsCisgICAgICAgIHUndGVzdHN1aXRlJzogW3sKKyAgICAgICAgICAgIHUn
bmFtZSc6IHUnVGVzdFNvbWVQcm9wZXJ0aWVzJywKKyAgICAgICAgICAgIHUnc3RhdHVzJzogdSdS
VU4nLAorICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgIHUnY2xhc3NuYW1l
JzogdSdQcm9wZXJ0eU9uZScsCisgICAgICAgICAgICB1J1NldFVwUHJvcCc6IHUnMScsCisgICAg
ICAgICAgICB1J1Rlc3RTb21lUHJvcGVydHknOiB1JzEnLAorICAgICAgICAgICAgdSdUZWFyRG93
blByb3AnOiB1JzEnLAorICAgICAgICB9XSwKKyAgICB9XSwKK30KKworRVhQRUNURURfMiA9IHsK
KyAgICB1J3Rlc3RzJzogMSwKKyAgICB1J2ZhaWx1cmVzJzogMCwKKyAgICB1J2Rpc2FibGVkJzog
MCwKKyAgICB1J2Vycm9ycyc6IDAsCisgICAgdSd0aW1lJzogdScqJywKKyAgICB1J3RpbWVzdGFt
cCc6IHUnKicsCisgICAgdSduYW1lJzogdSdBbGxUZXN0cycsCisgICAgdSd0ZXN0c3VpdGVzJzog
W3sKKyAgICAgICAgdSduYW1lJzogdSdQcm9wZXJ0eVR3bycsCisgICAgICAgIHUndGVzdHMnOiAx
LAorICAgICAgICB1J2ZhaWx1cmVzJzogMCwKKyAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAg
ICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgdSd0ZXN0
c3VpdGUnOiBbeworICAgICAgICAgICAgdSduYW1lJzogdSdUZXN0U29tZVByb3BlcnRpZXMnLAor
ICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICB1J3RpbWUnOiB1Jyon
LAorICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1Byb3BlcnR5VHdvJywKKyAgICAgICAgICAg
IHUnU2V0VXBQcm9wJzogdScyJywKKyAgICAgICAgICAgIHUnVGVzdFNvbWVQcm9wZXJ0eSc6IHUn
MicsCisgICAgICAgICAgICB1J1RlYXJEb3duUHJvcCc6IHUnMicsCisgICAgICAgIH1dLAorICAg
IH1dLAorfQorCisKK2NsYXNzIEdUZXN0SnNvbk91dEZpbGVzVGVzdChndGVzdF90ZXN0X3V0aWxz
LlRlc3RDYXNlKToKKyAgIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIEpTT04gb3V0cHV0
IGZ1bmN0aW9uYWxpdHkuIiIiCisKKyAgZGVmIHNldFVwKHNlbGYpOgorICAgICMgV2Ugd2FudCB0
aGUgdHJhaWxpbmcgJy8nIHRoYXQgdGhlIGxhc3QgIiIgcHJvdmlkZXMgaW4gb3MucGF0aC5qb2lu
LCBmb3IKKyAgICAjIHRlbGxpbmcgR29vZ2xlIFRlc3QgdG8gY3JlYXRlIGFuIG91dHB1dCBkaXJl
Y3RvcnkgaW5zdGVhZCBvZiBhIHNpbmdsZSBmaWxlCisgICAgIyBmb3IgeG1sIG91dHB1dC4KKyAg
ICBzZWxmLm91dHB1dF9kaXJfID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVt
cERpcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfT1VUUFVU
X1NVQkRJUiwgJycpCisgICAgc2VsZi5EZWxldGVGaWxlc0FuZERpcigpCisKKyAgZGVmIHRlYXJE
b3duKHNlbGYpOgorICAgIHNlbGYuRGVsZXRlRmlsZXNBbmREaXIoKQorCisgIGRlZiBEZWxldGVG
aWxlc0FuZERpcihzZWxmKToKKyAgICB0cnk6CisgICAgICBvcy5yZW1vdmUob3MucGF0aC5qb2lu
KHNlbGYub3V0cHV0X2Rpcl8sIEdURVNUX09VVFBVVF8xX1RFU1QgKyAnLmpzb24nKSkKKyAgICBl
eGNlcHQgb3MuZXJyb3I6CisgICAgICBwYXNzCisgICAgdHJ5OgorICAgICAgb3MucmVtb3ZlKG9z
LnBhdGguam9pbihzZWxmLm91dHB1dF9kaXJfLCBHVEVTVF9PVVRQVVRfMl9URVNUICsgJy5qc29u
JykpCisgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgcGFzcworICAgIHRyeToKKyAgICAgIG9z
LnJtZGlyKHNlbGYub3V0cHV0X2Rpcl8pCisgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgcGFz
cworCisgIGRlZiB0ZXN0T3V0ZmlsZTEoc2VsZik6CisgICAgc2VsZi5fVGVzdE91dEZpbGUoR1RF
U1RfT1VUUFVUXzFfVEVTVCwgRVhQRUNURURfMSkKKworICBkZWYgdGVzdE91dGZpbGUyKHNlbGYp
OgorICAgIHNlbGYuX1Rlc3RPdXRGaWxlKEdURVNUX09VVFBVVF8yX1RFU1QsIEVYUEVDVEVEXzIp
CisKKyAgZGVmIF9UZXN0T3V0RmlsZShzZWxmLCB0ZXN0X25hbWUsIGV4cGVjdGVkKToKKyAgICBn
dGVzdF9wcm9nX3BhdGggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCh0
ZXN0X25hbWUpCisgICAgY29tbWFuZCA9IFtndGVzdF9wcm9nX3BhdGgsICctLWd0ZXN0X291dHB1
dD1qc29uOiVzJyAlIHNlbGYub3V0cHV0X2Rpcl9dCisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
U3VicHJvY2Vzcyhjb21tYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d29ya2luZ19kaXI9Z3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCkpCisgICAgc2VsZi5hc3Nl
cnRfKHAuZXhpdGVkKQorICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIHAuZXhpdF9jb2RlKQorCisg
ICAgIyBGSVhNRTogbGlidG9vbCBjYXVzZXMgdGhlIGJ1aWx0IHRlc3QgYmluYXJ5IHRvIGJlCisg
ICAgIyAgIG5hbWVkIGx0LWd0ZXN0X3htbF9vdXRmaWxlc190ZXN0XyBpbnN0ZWFkIG9mCisgICAg
IyAgIGd0ZXN0X3htbF9vdXRmaWxlc190ZXN0Xy4gIFRvIGFjY291bnQgZm9yIHRoaXMgcG9zc2li
aWxpdHksIHdlCisgICAgIyAgIGFsbG93IGJvdGggbmFtZXMgaW4gdGhlIGZvbGxvd2luZyBjb2Rl
LiAgV2Ugc2hvdWxkIHJlbW92ZSB0aGlzCisgICAgIyAgIHdoZW4gbGlidG9vbCByZXBsYWNlbWVu
dCB0b29sIGlzIHJlYWR5LgorICAgIG91dHB1dF9maWxlX25hbWUxID0gdGVzdF9uYW1lICsgJy5q
c29uJworICAgIG91dHB1dF9maWxlMSA9IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXJfLCBv
dXRwdXRfZmlsZV9uYW1lMSkKKyAgICBvdXRwdXRfZmlsZV9uYW1lMiA9ICdsdC0nICsgb3V0cHV0
X2ZpbGVfbmFtZTEKKyAgICBvdXRwdXRfZmlsZTIgPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRf
ZGlyXywgb3V0cHV0X2ZpbGVfbmFtZTIpCisgICAgc2VsZi5hc3NlcnRfKG9zLnBhdGguaXNmaWxl
KG91dHB1dF9maWxlMSkgb3Igb3MucGF0aC5pc2ZpbGUob3V0cHV0X2ZpbGUyKSwKKyAgICAgICAg
ICAgICAgICAgb3V0cHV0X2ZpbGUxKQorCisgICAgaWYgb3MucGF0aC5pc2ZpbGUob3V0cHV0X2Zp
bGUxKToKKyAgICAgIHdpdGggb3BlbihvdXRwdXRfZmlsZTEpIGFzIGY6CisgICAgICAgIGFjdHVh
bCA9IGpzb24ubG9hZChmKQorICAgIGVsc2U6CisgICAgICB3aXRoIG9wZW4ob3V0cHV0X2ZpbGUy
KSBhcyBmOgorICAgICAgICBhY3R1YWwgPSBqc29uLmxvYWQoZikKKyAgICBzZWxmLmFzc2VydEVx
dWFsKGV4cGVjdGVkLCBndGVzdF9qc29uX3Rlc3RfdXRpbHMubm9ybWFsaXplKGFjdHVhbCkpCisK
KworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgb3MuZW52aXJvblsnR1RFU1RfU1RBQ0tf
VFJBQ0VfREVQVEgnXSA9ICcwJworICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWpzb24tb3V0cHV0LXVu
aXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWpzb24t
b3V0cHV0LXVuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3ZGNkNWZhMWM0NjM5ZjE1MmZiNTRlNTBm
YjljMDU5OGEwZTQ2YTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2dvb2dsZXRlc3QtanNvbi1vdXRwdXQtdW5pdHRlc3QucHkKQEAgLTAsMCArMSw2MTgg
QEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgMjAxOCwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVz
dCBmb3IgdGhlIGd0ZXN0X2pzb25fb3V0cHV0IG1vZHVsZS4iIiIKKworaW1wb3J0IGRhdGV0aW1l
CitpbXBvcnQgZXJybm8KK2ltcG9ydCBqc29uCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0
IHN5cworCitpbXBvcnQgZ3Rlc3RfanNvbl90ZXN0X3V0aWxzCitpbXBvcnQgZ3Rlc3RfdGVzdF91
dGlscworCitHVEVTVF9GSUxURVJfRkxBRyA9ICctLWd0ZXN0X2ZpbHRlcicKK0dURVNUX0xJU1Rf
VEVTVFNfRkxBRyA9ICctLWd0ZXN0X2xpc3RfdGVzdHMnCitHVEVTVF9PVVRQVVRfRkxBRyA9ICct
LWd0ZXN0X291dHB1dCcKK0dURVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUgPSAndGVzdF9kZXRhaWwu
anNvbicKK0dURVNUX1BST0dSQU1fTkFNRSA9ICdndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0XycK
KworIyBUaGUgZmxhZyBpbmRpY2F0aW5nIHN0YWNrdHJhY2VzIGFyZSBub3Qgc3VwcG9ydGVkCitO
T19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRyA9ICctLW5vX3N0YWNrdHJhY2Vfc3VwcG9ydCcKKwor
U1VQUE9SVFNfU1RBQ0tfVFJBQ0VTID0gTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZMQUcgbm90IGlu
IHN5cy5hcmd2CisKK2lmIFNVUFBPUlRTX1NUQUNLX1RSQUNFUzoKKyAgU1RBQ0tfVFJBQ0VfVEVN
UExBVEUgPSAnXG5TdGFjayB0cmFjZTpcbionCitlbHNlOgorICBTVEFDS19UUkFDRV9URU1QTEFU
RSA9ICcnCisKK0VYUEVDVEVEX05PTl9FTVBUWSA9IHsKKyAgICB1J3Rlc3RzJzogMjMsCisgICAg
dSdmYWlsdXJlcyc6IDQsCisgICAgdSdkaXNhYmxlZCc6IDIsCisgICAgdSdlcnJvcnMnOiAwLAor
ICAgIHUndGltZXN0YW1wJzogdScqJywKKyAgICB1J3RpbWUnOiB1JyonLAorICAgIHUnYWRfaG9j
X3Byb3BlcnR5JzogdSc0MicsCisgICAgdSduYW1lJzogdSdBbGxUZXN0cycsCisgICAgdSd0ZXN0
c3VpdGVzJzogWworICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1J1N1Y2Nlc3NmdWxU
ZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6
IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzog
MCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6
IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnU3Vj
Y2VlZHMnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAg
ICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25h
bWUnOiB1J1N1Y2Nlc3NmdWxUZXN0JworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0K
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdGYWlsZWRUZXN0
JywKKyAgICAgICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDEs
CisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwK
KyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnRmFpbHMn
LAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAg
ICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1
J0ZhaWxlZFRlc3QnLAorICAgICAgICAgICAgICAgICAgICB1J2ZhaWx1cmVzJzogWworICAgICAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnZmFpbHVy
ZSc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnZ3Rlc3RfeG1sX291dHB1dF91
bml0dGVzdF8uY2M6KlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J0V4cGVj
dGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbicKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdScgIDFcbiAgMicgKyBTVEFDS19UUkFDRV9URU1QTEFURSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1J3R5cGUnOiB1JycKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0K
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdEaXNhYmxlZFRl
c3QnLAorICAgICAgICAgICAgdSd0ZXN0cyc6IDEsCisgICAgICAgICAgICB1J2ZhaWx1cmVzJzog
MCwKKyAgICAgICAgICAgIHUnZGlzYWJsZWQnOiAxLAorICAgICAgICAgICAgdSdlcnJvcnMnOiAw
LAorICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRlJzog
WworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdESVNB
QkxFRF90ZXN0X25vdF9ydW4nLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnTk9U
UlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAg
ICAgICAgdSdjbGFzc25hbWUnOiB1J0Rpc2FibGVkVGVzdCcKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6
IHUnTWl4ZWRSZXN1bHRUZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiAzLAorICAgICAgICAg
ICAgdSdmYWlsdXJlcyc6IDEsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMSwKKyAgICAgICAg
ICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAg
ICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHUnbmFtZSc6IHUnU3VjY2VlZHMnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUn
UlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAg
ICAgICAgdSdjbGFzc25hbWUnOiB1J01peGVkUmVzdWx0VGVzdCcKKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdGYWls
cycsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAg
ICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6
IHUnTWl4ZWRSZXN1bHRUZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdmYWlsdXJlcyc6IFsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
J2ZhaWx1cmUnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2d0ZXN0X3htbF9v
dXRwdXRfdW5pdHRlc3RfLmNjOipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dSdFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4nCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHUnICAxXG4gIDInICsgU1RBQ0tfVFJBQ0VfVEVNUExBVEUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdSd0eXBlJzogdScnCisgICAgICAgICAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHUnZmFpbHVyZSc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnZ3Rl
c3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KlxuJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1J0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbicKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdScgIDJcbiAgMycgKyBTVEFDS19UUkFDRV9URU1QTEFU
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J3R5cGUnOiB1JycKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0RJU0FC
TEVEX3Rlc3QnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnTk9UUlVOJywKKyAg
ICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdj
bGFzc25hbWUnOiB1J01peGVkUmVzdWx0VGVzdCcKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnWG1s
UXVvdGluZ1Rlc3QnLAorICAgICAgICAgICAgdSd0ZXN0cyc6IDEsCisgICAgICAgICAgICB1J2Zh
aWx1cmVzJzogMSwKKyAgICAgICAgICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAgICAgICAgdSdl
cnJvcnMnOiAwLAorICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgIHUndGVz
dHN1aXRlJzogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1l
JzogdSdPdXRwdXRzQ0RhdGEnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVO
JywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAg
ICAgdSdjbGFzc25hbWUnOiB1J1htbFF1b3RpbmdUZXN0JywKKyAgICAgICAgICAgICAgICAgICAg
dSdmYWlsdXJlcyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1J2ZhaWx1cmUnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1J2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOipcbicKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdSdGYWlsZWRcblhNTCBvdXRwdXQ6IDw/eG1sIGVuY29kaW5nPSJ1dGYt
OCI+JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Jzx0b3A+PCFbQ0RBVEFbY2Rh
dGEgdGV4dF1dPjwvdG9wPicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFD
S19UUkFDRV9URU1QTEFURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J3R5cGUnOiB1
JycKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgXQorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgdSduYW1lJzogdSdJbnZhbGlkQ2hhcmFjdGVyc1Rlc3QnLAorICAgICAgICAgICAg
dSd0ZXN0cyc6IDEsCisgICAgICAgICAgICB1J2ZhaWx1cmVzJzogMSwKKyAgICAgICAgICAgIHUn
ZGlzYWJsZWQnOiAwLAorICAgICAgICAgICAgdSdlcnJvcnMnOiAwLAorICAgICAgICAgICAgdSd0
aW1lJzogdScqJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRlJzogWworICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdJbnZhbGlkQ2hhcmFjdGVyc0luTWVz
c2FnZScsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAg
ICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFt
ZSc6IHUnSW52YWxpZENoYXJhY3RlcnNUZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdmYWls
dXJlcyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1J2ZhaWx1cmUnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2d0
ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOipcbicKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdSdGYWlsZWRcbkludmFsaWQgY2hhcmFjdGVycyBpbiBicmFja2V0cycKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdScgW1x4MDFceDAyXScgKyBTVEFDS19UUkFDRV9U
RU1QTEFURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J3R5cGUnOiB1JycKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
dSduYW1lJzogdSdQcm9wZXJ0eVJlY29yZGluZ1Rlc3QnLAorICAgICAgICAgICAgdSd0ZXN0cyc6
IDQsCisgICAgICAgICAgICB1J2ZhaWx1cmVzJzogMCwKKyAgICAgICAgICAgIHUnZGlzYWJsZWQn
OiAwLAorICAgICAgICAgICAgdSdlcnJvcnMnOiAwLAorICAgICAgICAgICAgdSd0aW1lJzogdScq
JywKKyAgICAgICAgICAgIHUnU2V0VXBUZXN0Q2FzZSc6IHUneWVzJywKKyAgICAgICAgICAgIHUn
VGVhckRvd25UZXN0Q2FzZSc6IHUnYXllJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRlJzogWwor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdPbmVQcm9w
ZXJ0eScsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAg
ICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFt
ZSc6IHUnUHJvcGVydHlSZWNvcmRpbmdUZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdrZXlf
MSc6IHUnMScKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgdSduYW1lJzogdSdJbnRWYWx1ZWRQcm9wZXJ0eScsCisgICAgICAgICAgICAg
ICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1
JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnUHJvcGVydHlSZWNvcmRp
bmdUZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdrZXlfaW50JzogdScxJworICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUn
OiB1J1RocmVlUHJvcGVydGllcycsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdS
VU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAg
ICAgICB1J2NsYXNzbmFtZSc6IHUnUHJvcGVydHlSZWNvcmRpbmdUZXN0JywKKyAgICAgICAgICAg
ICAgICAgICAgdSdrZXlfMSc6IHUnMScsCisgICAgICAgICAgICAgICAgICAgIHUna2V5XzInOiB1
JzInLAorICAgICAgICAgICAgICAgICAgICB1J2tleV8zJzogdSczJworICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J1R3
b1ZhbHVlc0Zvck9uZUtleVVzZXNMYXN0VmFsdWUnLAorICAgICAgICAgICAgICAgICAgICB1J3N0
YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAg
ICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1Byb3BlcnR5UmVjb3JkaW5nVGVzdCcsCisg
ICAgICAgICAgICAgICAgICAgIHUna2V5XzEnOiB1JzInCisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1
J05vRml4dHVyZVRlc3QnLAorICAgICAgICAgICAgdSd0ZXN0cyc6IDMsCisgICAgICAgICAgICB1
J2ZhaWx1cmVzJzogMCwKKyAgICAgICAgICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAgICAgICAg
dSdlcnJvcnMnOiAwLAorICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgIHUn
dGVzdHN1aXRlJzogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSdu
YW1lJzogdSdSZWNvcmRQcm9wZXJ0eScsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzog
dSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAg
ICAgICAgICB1J2NsYXNzbmFtZSc6IHUnTm9GaXh0dXJlVGVzdCcsCisgICAgICAgICAgICAgICAg
ICAgIHUna2V5JzogdScxJworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0V4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1Jl
Y29yZEludFZhbHVlZFByb3BlcnR5JywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1
J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAg
ICAgICAgIHUnY2xhc3NuYW1lJzogdSdOb0ZpeHR1cmVUZXN0JywKKyAgICAgICAgICAgICAgICAg
ICAgdSdrZXlfZm9yX3V0aWxpdHlfaW50JzogdScxJworICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOgorICAgICAgICAgICAg
ICAgICAgICAgICAgdSdFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRTdHJpbmdWYWx1ZWRQ
cm9wZXJ0eScsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAg
ICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNz
bmFtZSc6IHUnTm9GaXh0dXJlVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUna2V5X2Zvcl91
dGlsaXR5X3N0cmluZyc6IHUnMScKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnVHlwZWRUZXN0LzAn
LAorICAgICAgICAgICAgdSd0ZXN0cyc6IDEsCisgICAgICAgICAgICB1J2ZhaWx1cmVzJzogMCwK
KyAgICAgICAgICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAgICAgICAgdSdlcnJvcnMnOiAwLAor
ICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRlJzogWwor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdIYXNUeXBl
UGFyYW1BdHRyaWJ1dGUnLAorICAgICAgICAgICAgICAgICAgICB1J3R5cGVfcGFyYW0nOiB1J2lu
dCcsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAg
ICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6
IHUnVHlwZWRUZXN0LzAnCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAg
ICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1J1R5cGVkVGVzdC8xJywKKyAg
ICAgICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAg
ICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAg
ICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnSGFzVHlwZVBhcmFt
QXR0cmlidXRlJywKKyAgICAgICAgICAgICAgICAgICAgdSd0eXBlX3BhcmFtJzogdSdsb25nJywK
KyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAg
ICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdU
eXBlZFRlc3QvMScKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnU2luZ2xlL1R5cGVQYXJhbWV0ZXJp
emVkVGVzdENhc2UvMCcsCisgICAgICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgICAgIHUn
ZmFpbHVyZXMnOiAwLAorICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1
J2Vycm9ycyc6IDAsCisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0
ZXN0c3VpdGUnOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25h
bWUnOiB1J0hhc1R5cGVQYXJhbUF0dHJpYnV0ZScsCisgICAgICAgICAgICAgICAgICAgIHUndHlw
ZV9wYXJhbSc6IHUnaW50JywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTics
CisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAg
IHUnY2xhc3NuYW1lJzogdSdTaW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8wJworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgdSduYW1lJzogdSdTaW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8xJywK
KyAgICAgICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisg
ICAgICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAg
ICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnSGFzVHlwZVBh
cmFtQXR0cmlidXRlJywKKyAgICAgICAgICAgICAgICAgICAgdSd0eXBlX3BhcmFtJzogdSdsb25n
JywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAg
ICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzog
dSdTaW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8xJworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1l
JzogdSdTaW5nbGUvVmFsdWVQYXJhbVRlc3QnLAorICAgICAgICAgICAgdSd0ZXN0cyc6IDQsCisg
ICAgICAgICAgICB1J2ZhaWx1cmVzJzogMCwKKyAgICAgICAgICAgIHUnZGlzYWJsZWQnOiAwLAor
ICAgICAgICAgICAgdSdlcnJvcnMnOiAwLAorICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAg
ICAgICAgICAgIHUndGVzdHN1aXRlJzogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgdSduYW1lJzogdSdIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzAnLAorICAgICAgICAg
ICAgICAgICAgICB1J3ZhbHVlX3BhcmFtJzogdSczMycsCisgICAgICAgICAgICAgICAgICAgIHUn
c3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAg
ICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnU2luZ2xlL1ZhbHVlUGFyYW1UZXN0Jwor
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICB1J25hbWUnOiB1J0hhc1ZhbHVlUGFyYW1BdHRyaWJ1dGUvMScsCisgICAgICAgICAgICAgICAg
ICAgIHUndmFsdWVfcGFyYW0nOiB1JzQyJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMn
OiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAg
ICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdTaW5nbGUvVmFsdWVQYXJhbVRlc3QnCisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFt
ZSc6IHUnQW5vdGhlclRlc3RUaGF0SGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8wJywKKyAgICAgICAg
ICAgICAgICAgICAgdSd2YWx1ZV9wYXJhbSc6IHUnMzMnLAorICAgICAgICAgICAgICAgICAgICB1
J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAg
ICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1NpbmdsZS9WYWx1ZVBhcmFtVGVzdCcK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgdSduYW1lJzogdSdBbm90aGVyVGVzdFRoYXRIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzEnLAor
ICAgICAgICAgICAgICAgICAgICB1J3ZhbHVlX3BhcmFtJzogdSc0MicsCisgICAgICAgICAgICAg
ICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1
JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnU2luZ2xlL1ZhbHVlUGFy
YW1UZXN0JworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAg
IF0KK30KKworRVhQRUNURURfRklMVEVSRUQgPSB7CisgICAgdSd0ZXN0cyc6IDEsCisgICAgdSdm
YWlsdXJlcyc6IDAsCisgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgdSdlcnJvcnMnOiAwLAorICAg
IHUndGltZSc6IHUnKicsCisgICAgdSd0aW1lc3RhbXAnOiB1JyonLAorICAgIHUnbmFtZSc6IHUn
QWxsVGVzdHMnLAorICAgIHUnYWRfaG9jX3Byb3BlcnR5JzogdSc0MicsCisgICAgdSd0ZXN0c3Vp
dGVzJzogW3sKKyAgICAgICAgdSduYW1lJzogdSdTdWNjZXNzZnVsVGVzdCcsCisgICAgICAgIHUn
dGVzdHMnOiAxLAorICAgICAgICB1J2ZhaWx1cmVzJzogMCwKKyAgICAgICAgdSdkaXNhYmxlZCc6
IDAsCisgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAg
ICAgdSd0ZXN0c3VpdGUnOiBbeworICAgICAgICAgICAgdSduYW1lJzogdSdTdWNjZWVkcycsCisg
ICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgIHUndGltZSc6IHUnKics
CisgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnU3VjY2Vzc2Z1bFRlc3QnLAorICAgICAgICB9
XQorICAgIH1dLAorfQorCitFWFBFQ1RFRF9FTVBUWSA9IHsKKyAgICB1J3Rlc3RzJzogMCwKKyAg
ICB1J2ZhaWx1cmVzJzogMCwKKyAgICB1J2Rpc2FibGVkJzogMCwKKyAgICB1J2Vycm9ycyc6IDAs
CisgICAgdSd0aW1lJzogdScqJywKKyAgICB1J3RpbWVzdGFtcCc6IHUnKicsCisgICAgdSduYW1l
JzogdSdBbGxUZXN0cycsCisgICAgdSd0ZXN0c3VpdGVzJzogW10sCit9CisKK0dURVNUX1BST0dS
QU1fUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKEdURVNUX1BS
T0dSQU1fTkFNRSkKKworU1VQUE9SVFNfVFlQRURfVEVTVFMgPSAnVHlwZWRUZXN0JyBpbiBndGVz
dF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgW0dURVNUX1BST0dSQU1fUEFUSCwgR1RFU1Rf
TElTVF9URVNUU19GTEFHXSwgY2FwdHVyZV9zdGRlcnI9RmFsc2UpLm91dHB1dAorCisKK2NsYXNz
IEdUZXN0SnNvbk91dHB1dFVuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAi
IiJVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgSlNPTiBvdXRwdXQgZnVuY3Rpb25hbGl0eS4K
KyAgIiIiCisKKyAgIyBUaGlzIHRlc3QgY3VycmVudGx5IGJyZWFrcyBvbiBwbGF0Zm9ybXMgdGhh
dCBkbyBub3Qgc3VwcG9ydCB0eXBlZCBhbmQKKyAgIyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMs
IHNvIHdlIGRvbid0IHJ1biBpdCB1bmRlciB0aGVtLgorICBpZiBTVVBQT1JUU19UWVBFRF9URVNU
UzoKKworICAgIGRlZiB0ZXN0Tm9uRW1wdHlKc29uT3V0cHV0KHNlbGYpOgorICAgICAgIiIiVmVy
aWZpZXMgSlNPTiBvdXRwdXQgZm9yIGEgR29vZ2xlIFRlc3QgYmluYXJ5IHdpdGggbm9uLWVtcHR5
IG91dHB1dC4KKworICAgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBhIG5v
bi1lbXB0eSBKU09OIG91dHB1dCwgYW5kCisgICAgICB0ZXN0cyB0aGF0IHRoZSBKU09OIG91dHB1
dCBpcyBleHBlY3RlZC4KKyAgICAgICIiIgorICAgICAgc2VsZi5fVGVzdEpzb25PdXRwdXQoR1RF
U1RfUFJPR1JBTV9OQU1FLCBFWFBFQ1RFRF9OT05fRU1QVFksIDEpCisKKyAgZGVmIHRlc3RFbXB0
eUpzb25PdXRwdXQoc2VsZik6CisgICAgIiIiVmVyaWZpZXMgSlNPTiBvdXRwdXQgZm9yIGEgR29v
Z2xlIFRlc3QgYmluYXJ5IHdpdGhvdXQgYWN0dWFsIHRlc3RzLgorCisgICAgUnVucyBhIHRlc3Qg
cHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBhbiBlbXB0eSBKU09OIG91dHB1dCwgYW5kCisgICAgdGVz
dHMgdGhhdCB0aGUgSlNPTiBvdXRwdXQgaXMgZXhwZWN0ZWQuCisgICAgIiIiCisKKyAgICBzZWxm
Ll9UZXN0SnNvbk91dHB1dCgnZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCcsIEVYUEVDVEVEX0VNUFRZ
LCAwKQorCisgIGRlZiB0ZXN0VGltZXN0YW1wVmFsdWUoc2VsZik6CisgICAgIiIiQ2hlY2tzIHdo
ZXRoZXIgdGhlIHRpbWVzdGFtcCBhdHRyaWJ1dGUgaW4gdGhlIEpTT04gb3V0cHV0IGlzIHZhbGlk
LgorCisgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBhbiBlbXB0eSBKU09O
IG91dHB1dCwgYW5kIGNoZWNrcyBpZgorICAgIHRoZSB0aW1lc3RhbXAgYXR0cmlidXRlIGluIHRo
ZSB0ZXN0c3VpdGVzIHRhZyBpcyB2YWxpZC4KKyAgICAiIiIKKyAgICBhY3R1YWwgPSBzZWxmLl9H
ZXRKc29uT3V0cHV0KCdndGVzdF9ub190ZXN0X3VuaXR0ZXN0JywgW10sIDApCisgICAgZGF0ZV90
aW1lX3N0ciA9IGFjdHVhbFsndGltZXN0YW1wJ10KKyAgICAjIGRhdGV0aW1lLnN0cnB0aW1lKCkg
aXMgb25seSBhdmFpbGFibGUgaW4gUHl0aG9uIDIuNSsgc28gd2UgaGF2ZSB0bworICAgICMgcGFy
c2UgdGhlIGV4cGVjdGVkIGRhdGV0aW1lIG1hbnVhbGx5LgorICAgIG1hdGNoID0gcmUubWF0Y2go
cicoXGQrKS0oXGRcZCktKFxkXGQpVChcZFxkKTooXGRcZCk6KFxkXGQpJywgZGF0ZV90aW1lX3N0
cikKKyAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgIHJlLm1hdGNoLAorICAgICAgICAnSlNP
TiBkYXRldHRpbWUgc3RyaW5nICVzIGhhcyBpbmNvcnJlY3QgZm9ybWF0JyAlIGRhdGVfdGltZV9z
dHIpCisgICAgZGF0ZV90aW1lX2Zyb21fanNvbiA9IGRhdGV0aW1lLmRhdGV0aW1lKAorICAgICAg
ICB5ZWFyPWludChtYXRjaC5ncm91cCgxKSksIG1vbnRoPWludChtYXRjaC5ncm91cCgyKSksCisg
ICAgICAgIGRheT1pbnQobWF0Y2guZ3JvdXAoMykpLCBob3VyPWludChtYXRjaC5ncm91cCg0KSks
CisgICAgICAgIG1pbnV0ZT1pbnQobWF0Y2guZ3JvdXAoNSkpLCBzZWNvbmQ9aW50KG1hdGNoLmdy
b3VwKDYpKSkKKworICAgIHRpbWVfZGVsdGEgPSBhYnMoZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkg
LSBkYXRlX3RpbWVfZnJvbV9qc29uKQorICAgICMgdGltZXN0YW1wIHZhbHVlIHNob3VsZCBiZSBu
ZWFyIHRoZSBjdXJyZW50IGxvY2FsIHRpbWUKKyAgICBzZWxmLmFzc2VydFRydWUodGltZV9kZWx0
YSA8IGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPTYwMCksCisgICAgICAgICAgICAgICAgICAg
ICd0aW1lX2RlbHRhIGlzICVzJyAlIHRpbWVfZGVsdGEpCisKKyAgZGVmIHRlc3REZWZhdWx0T3V0
cHV0RmlsZShzZWxmKToKKyAgICAiIiJWZXJpZmllcyB0aGUgZGVmYXVsdCBvdXRwdXQgZmlsZSBu
YW1lLgorCisgICAgQ29uZmlybXMgdGhhdCBHb29nbGUgVGVzdCBwcm9kdWNlcyBhbiBKU09OIG91
dHB1dCBmaWxlIHdpdGggdGhlIGV4cGVjdGVkCisgICAgZGVmYXVsdCBuYW1lIGlmIG5vIG5hbWUg
aXMgZXhwbGljaXRseSBzcGVjaWZpZWQuCisgICAgIiIiCisgICAgb3V0cHV0X2ZpbGUgPSBvcy5w
YXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR1RFU1RfREVGQVVMVF9PVVRQVVRfRklMRSkKKyAgICBndGVzdF9wcm9n
X3BhdGggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKKyAgICAgICAg
J2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnKQorICAgIHRyeToKKyAgICAgIG9zLnJlbW92ZShvdXRw
dXRfZmlsZSkKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgIGUgPSBzeXMuZXhjX2luZm8oKVsx
XQorICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6CisgICAgICAgIHJhaXNlCisKKyAg
ICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAorICAgICAgICBbZ3Rlc3RfcHJvZ19w
YXRoLCAnJXM9anNvbicgJSBHVEVTVF9PVVRQVVRfRkxBR10sCisgICAgICAgIHdvcmtpbmdfZGly
PWd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpKQorICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRl
ZCkKKyAgICBzZWxmLmFzc2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkKKyAgICBzZWxmLmFzc2Vy
dF8ob3MucGF0aC5pc2ZpbGUob3V0cHV0X2ZpbGUpKQorCisgIGRlZiB0ZXN0U3VwcHJlc3NlZEpz
b25PdXRwdXQoc2VsZik6CisgICAgIiIiVmVyaWZpZXMgdGhhdCBubyBKU09OIG91dHB1dCBpcyBn
ZW5lcmF0ZWQuCisKKyAgICBUZXN0cyB0aGF0IG5vIEpTT04gZmlsZSBpcyBnZW5lcmF0ZWQgaWYg
dGhlIGRlZmF1bHQgSlNPTiBsaXN0ZW5lciBpcworICAgIHNodXQgZG93biBiZWZvcmUgUlVOX0FM
TF9URVNUUyBpcyBpbnZva2VkLgorICAgICIiIgorCisgICAganNvbl9wYXRoID0gb3MucGF0aC5q
b2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHVEVTVF9QUk9HUkFNX05BTUUgKyAnb3V0Lmpzb24nKQorICAgIGlmIG9zLnBhdGgu
aXNmaWxlKGpzb25fcGF0aCk6CisgICAgICBvcy5yZW1vdmUoanNvbl9wYXRoKQorCisgICAgY29t
bWFuZCA9IFtHVEVTVF9QUk9HUkFNX1BBVEgsCisgICAgICAgICAgICAgICAnJXM9anNvbjolcycg
JSAoR1RFU1RfT1VUUFVUX0ZMQUcsIGpzb25fcGF0aCksCisgICAgICAgICAgICAgICAnLS1zaHV0
X2Rvd25feG1sJ10KKyAgICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQp
CisgICAgaWYgcC50ZXJtaW5hdGVkX2J5X3NpZ25hbDoKKyAgICAgICMgcC5zaWduYWwgaXMgYXZh
aWxhYmxlIG9ubHkgaWYgcC50ZXJtaW5hdGVkX2J5X3NpZ25hbCBpcyBUcnVlLgorICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZSgKKyAgICAgICAgICBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsLAorICAgICAg
ICAgICclcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAlZCcgJSAoR1RFU1RfUFJPR1JBTV9OQU1FLCBw
LnNpZ25hbCkpCisgICAgZWxzZToKKyAgICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKKyAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKDEsIHAuZXhpdF9jb2RlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIiclcycgZXhpdGVkIHdpdGggY29kZSAlcywgd2hpY2ggZG9lc24ndCBtYXRjaCAiCisgICAg
ICAgICAgICAgICAgICAgICAgICAndGhlIGV4cGVjdGVkIGV4aXQgY29kZSAlcy4nCisgICAgICAg
ICAgICAgICAgICAgICAgICAlIChjb21tYW5kLCBwLmV4aXRfY29kZSwgMSkpCisKKyAgICBzZWxm
LmFzc2VydF8obm90IG9zLnBhdGguaXNmaWxlKGpzb25fcGF0aCkpCisKKyAgZGVmIHRlc3RGaWx0
ZXJlZFRlc3RKc29uT3V0cHV0KHNlbGYpOgorICAgICIiIlZlcmlmaWVzIEpTT04gb3V0cHV0IHdo
ZW4gYSBmaWx0ZXIgaXMgYXBwbGllZC4KKworICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBl
eGVjdXRlcyBvbmx5IHNvbWUgdGVzdHMgYW5kIHZlcmlmaWVzIHRoYXQKKyAgICBub24tc2VsZWN0
ZWQgdGVzdHMgZG8gbm90IHNob3cgdXAgaW4gdGhlIEpTT04gb3V0cHV0LgorICAgICIiIgorCisg
ICAgc2VsZi5fVGVzdEpzb25PdXRwdXQoR1RFU1RfUFJPR1JBTV9OQU1FLCBFWFBFQ1RFRF9GSUxU
RVJFRCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9hcmdzPVsnJXM9U3VjY2Vz
c2Z1bFRlc3QuKicgJSBHVEVTVF9GSUxURVJfRkxBR10pCisKKyAgZGVmIF9HZXRKc29uT3V0cHV0
KHNlbGYsIGd0ZXN0X3Byb2dfbmFtZSwgZXh0cmFfYXJncywgZXhwZWN0ZWRfZXhpdF9jb2RlKToK
KyAgICAiIiJSZXR1cm5zIHRoZSBKU09OIG91dHB1dCBnZW5lcmF0ZWQgYnkgcnVubmluZyB0aGUg
cHJvZ3JhbSBndGVzdF9wcm9nX25hbWUuCisKKyAgICBGdXJ0aGVybW9yZSwgdGhlIHByb2dyYW0n
cyBleGl0IGNvZGUgbXVzdCBiZSBleHBlY3RlZF9leGl0X2NvZGUuCisKKyAgICBBcmdzOgorICAg
ICAgZ3Rlc3RfcHJvZ19uYW1lOiBHb29nbGUgVGVzdCBiaW5hcnkgbmFtZS4KKyAgICAgIGV4dHJh
X2FyZ3M6IGV4dHJhIGFyZ3VtZW50cyB0byBiaW5hcnkgaW52b2NhdGlvbi4KKyAgICAgIGV4cGVj
dGVkX2V4aXRfY29kZTogcHJvZ3JhbSdzIGV4aXQgY29kZS4KKyAgICAiIiIKKyAgICBqc29uX3Bh
dGggPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGd0ZXN0X3Byb2dfbmFtZSArICdvdXQuanNvbicpCisgICAg
Z3Rlc3RfcHJvZ19wYXRoID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgo
Z3Rlc3RfcHJvZ19uYW1lKQorCisgICAgY29tbWFuZCA9ICgKKyAgICAgICAgW2d0ZXN0X3Byb2df
cGF0aCwgJyVzPWpzb246JXMnICUgKEdURVNUX09VVFBVVF9GTEFHLCBqc29uX3BhdGgpXSArCisg
ICAgICAgIGV4dHJhX2FyZ3MKKyAgICApCisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJv
Y2Vzcyhjb21tYW5kKQorICAgIGlmIHAudGVybWluYXRlZF9ieV9zaWduYWw6CisgICAgICBzZWxm
LmFzc2VydF8oRmFsc2UsCisgICAgICAgICAgICAgICAgICAgJyVzIHdhcyBraWxsZWQgYnkgc2ln
bmFsICVkJyAlIChndGVzdF9wcm9nX25hbWUsIHAuc2lnbmFsKSkKKyAgICBlbHNlOgorICAgICAg
c2VsZi5hc3NlcnRfKHAuZXhpdGVkKQorICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRf
ZXhpdF9jb2RlLCBwLmV4aXRfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIGV4
aXRlZCB3aXRoIGNvZGUgJXMsIHdoaWNoIGRvZXNuJ3QgbWF0Y2ggIgorICAgICAgICAgICAgICAg
ICAgICAgICAgJ3RoZSBleHBlY3RlZCBleGl0IGNvZGUgJXMuJworICAgICAgICAgICAgICAgICAg
ICAgICAgJSAoY29tbWFuZCwgcC5leGl0X2NvZGUsIGV4cGVjdGVkX2V4aXRfY29kZSkpCisgICAg
d2l0aCBvcGVuKGpzb25fcGF0aCkgYXMgZjoKKyAgICAgIGFjdHVhbCA9IGpzb24ubG9hZChmKQor
ICAgIHJldHVybiBhY3R1YWwKKworICBkZWYgX1Rlc3RKc29uT3V0cHV0KHNlbGYsIGd0ZXN0X3By
b2dfbmFtZSwgZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9j
b2RlLCBleHRyYV9hcmdzPU5vbmUpOgorICAgICIiIkNoZWNrcyB0aGUgSlNPTiBvdXRwdXQgZ2Vu
ZXJhdGVkIGJ5IHRoZSBHb29nbGUgVGVzdCBiaW5hcnkuCisKKyAgICBBc3NlcnRzIHRoYXQgdGhl
IEpTT04gZG9jdW1lbnQgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgdGhlIHByb2dyYW0KKyAgICBndGVz
dF9wcm9nX25hbWUgbWF0Y2hlcyBleHBlY3RlZF9qc29uLCBhIHN0cmluZyBjb250YWluaW5nIGFu
b3RoZXIKKyAgICBKU09OIGRvY3VtZW50LiAgRnVydGhlcm1vcmUsIHRoZSBwcm9ncmFtJ3MgZXhp
dCBjb2RlIG11c3QgYmUKKyAgICBleHBlY3RlZF9leGl0X2NvZGUuCisKKyAgICBBcmdzOgorICAg
ICAgZ3Rlc3RfcHJvZ19uYW1lOiBHb29nbGUgVGVzdCBiaW5hcnkgbmFtZS4KKyAgICAgIGV4cGVj
dGVkOiBleHBlY3RlZCBvdXRwdXQuCisgICAgICBleHBlY3RlZF9leGl0X2NvZGU6IHByb2dyYW0n
cyBleGl0IGNvZGUuCisgICAgICBleHRyYV9hcmdzOiBleHRyYSBhcmd1bWVudHMgdG8gYmluYXJ5
IGludm9jYXRpb24uCisgICAgIiIiCisKKyAgICBhY3R1YWwgPSBzZWxmLl9HZXRKc29uT3V0cHV0
KGd0ZXN0X3Byb2dfbmFtZSwgZXh0cmFfYXJncyBvciBbXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZSkKKyAgICBzZWxmLmFzc2VydEVxdWFsKGV4
cGVjdGVkLCBndGVzdF9qc29uX3Rlc3RfdXRpbHMubm9ybWFsaXplKGFjdHVhbCkpCisKKworaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgaWYgTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZMQUcg
aW4gc3lzLmFyZ3Y6CisgICAgIyB1bml0dGVzdC5tYWluKCkgY2FuJ3QgaGFuZGxlIHVua25vd24g
ZmxhZ3MKKyAgICBzeXMuYXJndi5yZW1vdmUoTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZMQUcpCisK
KyAgb3MuZW52aXJvblsnR1RFU1RfU1RBQ0tfVFJBQ0VfREVQVEgnXSA9ICcxJworICBndGVzdF90
ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9nb29nbGV0ZXN0LWxpbmtlZC1wdHItdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1saW5rZWQtcHRyLXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmEwMGYzNDI5
NmJkNTc5NGMxNjQ0NzlmMjJhODhkZDRmNzM2MDAxZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1saW5rZWQtcHRyLXRlc3QuY2MKQEAg
LTAsMCArMSwxNTEgQEAKKy8vIENvcHlyaWdodCAyMDAzLCBHb29nbGUgSW5jLgorLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtbGlua2VkX3B0ci5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7
CisKK3VzaW5nIHRlc3Rpbmc6Ok1lc3NhZ2U7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6bGlu
a2VkX3B0cjsKKworaW50IG51bTsKK01lc3NhZ2UqIGhpc3RvcnkgPSBOVUxMOworCisvLyBDbGFz
cyB3aGljaCB0cmFja3MgYWxsb2NhdGlvbi9kZWFsbG9jYXRpb24KK2NsYXNzIEEgeworIHB1Ymxp
YzoKKyAgQSgpOiBteW51bShudW0rKykgeyAqaGlzdG9yeSA8PCAiQSIgPDwgbXludW0gPDwgIiBj
dG9yXG4iOyB9CisgIHZpcnR1YWwgfkEoKSB7ICpoaXN0b3J5IDw8ICJBIiA8PCBteW51bSA8PCAi
IGR0b3JcbiI7IH0KKyAgdmlydHVhbCB2b2lkIFVzZSgpIHsgKmhpc3RvcnkgPDwgIkEiIDw8IG15
bnVtIDw8ICIgdXNlXG4iOyB9CisgcHJvdGVjdGVkOgorICBpbnQgbXludW07Cit9OworCisvLyBT
dWJjbGFzcworY2xhc3MgQiA6IHB1YmxpYyBBIHsKKyBwdWJsaWM6CisgIEIoKSB7ICpoaXN0b3J5
IDw8ICJCIiA8PCBteW51bSA8PCAiIGN0b3JcbiI7IH0KKyAgfkIoKSB7ICpoaXN0b3J5IDw8ICJC
IiA8PCBteW51bSA8PCAiIGR0b3JcbiI7IH0KKyAgdmlydHVhbCB2b2lkIFVzZSgpIHsgKmhpc3Rv
cnkgPDwgIkIiIDw8IG15bnVtIDw8ICIgdXNlXG4iOyB9Cit9OworCitjbGFzcyBMaW5rZWRQdHJU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHB1YmxpYzoKKyAgTGlua2VkUHRyVGVzdCgp
IHsKKyAgICBudW0gPSAwOworICAgIGhpc3RvcnkgPSBuZXcgTWVzc2FnZTsKKyAgfQorCisgIHZp
cnR1YWwgfkxpbmtlZFB0clRlc3QoKSB7CisgICAgZGVsZXRlIGhpc3Rvcnk7CisgICAgaGlzdG9y
eSA9IE5VTEw7CisgIH0KK307CisKK1RFU1RfRihMaW5rZWRQdHJUZXN0LCBHZW5lcmFsVGVzdCkg
eworICB7CisgICAgbGlua2VkX3B0cjxBPiBhMCwgYTEsIGEyOworICAgIC8vIFVzZSBleHBsaWNp
dCBmdW5jdGlvbiBjYWxsIG5vdGF0aW9uIGhlcmUgdG8gc3VwcHJlc3Mgc2VsZi1hc3NpZ24gd2Fy
bmluZy4KKyAgICBhMC5vcGVyYXRvcj0oYTApOworICAgIGExID0gYTI7CisgICAgQVNTRVJUX0VR
KGEwLmdldCgpLCBzdGF0aWNfY2FzdDxBKj4oTlVMTCkpOworICAgIEFTU0VSVF9FUShhMS5nZXQo
KSwgc3RhdGljX2Nhc3Q8QSo+KE5VTEwpKTsKKyAgICBBU1NFUlRfRVEoYTIuZ2V0KCksIHN0YXRp
Y19jYXN0PEEqPihOVUxMKSk7CisgICAgQVNTRVJUX1RSVUUoYTAgPT0gTlVMTCk7CisgICAgQVNT
RVJUX1RSVUUoYTEgPT0gTlVMTCk7CisgICAgQVNTRVJUX1RSVUUoYTIgPT0gTlVMTCk7CisKKyAg
ICB7CisgICAgICBsaW5rZWRfcHRyPEE+IGEzKG5ldyBBKTsKKyAgICAgIGEwID0gYTM7CisgICAg
ICBBU1NFUlRfVFJVRShhMCA9PSBhMyk7CisgICAgICBBU1NFUlRfVFJVRShhMCAhPSBOVUxMKTsK
KyAgICAgIEFTU0VSVF9UUlVFKGEwLmdldCgpID09IGEzKTsKKyAgICAgIEFTU0VSVF9UUlVFKGEw
ID09IGEzLmdldCgpKTsKKyAgICAgIGxpbmtlZF9wdHI8QT4gYTQoYTApOworICAgICAgYTEgPSBh
NDsKKyAgICAgIGxpbmtlZF9wdHI8QT4gYTUobmV3IEEpOworICAgICAgQVNTRVJUX1RSVUUoYTUu
Z2V0KCkgIT0gYTMpOworICAgICAgQVNTRVJUX1RSVUUoYTUgIT0gYTMuZ2V0KCkpOworICAgICAg
YTIgPSBhNTsKKyAgICAgIGxpbmtlZF9wdHI8Qj4gYjAobmV3IEIpOworICAgICAgbGlua2VkX3B0
cjxBPiBhNihiMCk7CisgICAgICBBU1NFUlRfVFJVRShiMCA9PSBhNik7CisgICAgICBBU1NFUlRf
VFJVRShhNiA9PSBiMCk7CisgICAgICBBU1NFUlRfVFJVRShiMCAhPSBOVUxMKTsKKyAgICAgIGE1
ID0gYjA7CisgICAgICBhNSA9IGIwOworICAgICAgYTMtPlVzZSgpOworICAgICAgYTQtPlVzZSgp
OworICAgICAgYTUtPlVzZSgpOworICAgICAgYTYtPlVzZSgpOworICAgICAgYjAtPlVzZSgpOwor
ICAgICAgKCpiMCkuVXNlKCk7CisgICAgICBiMC5nZXQoKS0+VXNlKCk7CisgICAgfQorCisgICAg
YTAtPlVzZSgpOworICAgIGExLT5Vc2UoKTsKKyAgICBhMi0+VXNlKCk7CisKKyAgICBhMSA9IGEy
OworICAgIGEyLnJlc2V0KG5ldyBBKTsKKyAgICBhMC5yZXNldCgpOworCisgICAgbGlua2VkX3B0
cjxBPiBhNzsKKyAgfQorCisgIEFTU0VSVF9TVFJFUSgKKyAgICAiQTAgY3RvclxuIgorICAgICJB
MSBjdG9yXG4iCisgICAgIkEyIGN0b3JcbiIKKyAgICAiQjIgY3RvclxuIgorICAgICJBMCB1c2Vc
biIKKyAgICAiQTAgdXNlXG4iCisgICAgIkIyIHVzZVxuIgorICAgICJCMiB1c2VcbiIKKyAgICAi
QjIgdXNlXG4iCisgICAgIkIyIHVzZVxuIgorICAgICJCMiB1c2VcbiIKKyAgICAiQjIgZHRvclxu
IgorICAgICJBMiBkdG9yXG4iCisgICAgIkEwIHVzZVxuIgorICAgICJBMCB1c2VcbiIKKyAgICAi
QTEgdXNlXG4iCisgICAgIkEzIGN0b3JcbiIKKyAgICAiQTAgZHRvclxuIgorICAgICJBMyBkdG9y
XG4iCisgICAgIkExIGR0b3JcbiIsCisgICAgaGlzdG9yeS0+R2V0U3RyaW5nKCkuY19zdHIoKSk7
Cit9CisKK30gIC8vIFVubmFtZWQgbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdC5weSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0LnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjgxNDIzYTMzOWU4ZmQyOGFhMmI0MjUzMDEzYjNjMjNjZTM1MzM3NDkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qt
bGlzdC10ZXN0cy11bml0dGVzdC5weQpAQCAtMCwwICsxLDIwNSBAQAorIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVz
dCdzIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLgorCitBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVz
dCB0byBsaXN0IGFsbCB0ZXN0cyBieSBzcGVjaWZ5aW5nIHRoZQorLS1ndGVzdF9saXN0X3Rlc3Rz
IGZsYWcuICBUaGlzIHNjcmlwdCB0ZXN0cyBzdWNoIGZ1bmN0aW9uYWxpdHkKK2J5IGludm9raW5n
IGdvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdF8gKGEgcHJvZ3JhbSB3cml0dGVuIHdpdGgK
K0dvb2dsZSBUZXN0KSB0aGUgY29tbWFuZCBsaW5lIGZsYWdzLgorIiIiCisKK2ltcG9ydCByZQor
aW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworIyBDb25zdGFudHMuCisKKyMgVGhlIGNvbW1hbmQg
bGluZSBmbGFnIGZvciBlbmFibGluZy9kaXNhYmxpbmcgbGlzdGluZyBhbGwgdGVzdHMuCitMSVNU
X1RFU1RTX0ZMQUcgPSAnZ3Rlc3RfbGlzdF90ZXN0cycKKworIyBQYXRoIHRvIHRoZSBnb29nbGV0
ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfIHByb2dyYW0uCitFWEVfUEFUSCA9IGd0ZXN0X3Rlc3Rf
dXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRl
c3RfJykKKworIyBUaGUgZXhwZWN0ZWQgb3V0cHV0IHdoZW4gcnVubmluZyBnb29nbGV0ZXN0LWxp
c3QtdGVzdHMtdW5pdHRlc3RfIHdpdGgKKyMgLS1ndGVzdF9saXN0X3Rlc3RzCitFWFBFQ1RFRF9P
VVRQVVRfTk9fRklMVEVSX1JFID0gcmUuY29tcGlsZShyIiIiRm9vRGVhdGhUZXN0XC4KKyAgVGVz
dDEKK0Zvb1wuCisgIEJhcjEKKyAgQmFyMgorICBESVNBQkxFRF9CYXIzCitBYmNcLgorICBYeXoK
KyAgRGVmCitGb29CYXJcLgorICBCYXoKK0Zvb1Rlc3RcLgorICBUZXN0MQorICBESVNBQkxFRF9U
ZXN0MgorICBUZXN0MworVHlwZWRUZXN0LzBcLiAgIyBUeXBlUGFyYW0gPSAoVmVyeUxvezI0NX18
Y2xhc3MgVmVyeUxvezIzOX0pXC5cLlwuCisgIFRlc3RBCisgIFRlc3RCCitUeXBlZFRlc3QvMVwu
ICAjIFR5cGVQYXJhbSA9IGludFxzKlwqKCBfX3B0cjY0KT8KKyAgVGVzdEEKKyAgVGVzdEIKK1R5
cGVkVGVzdC8yXC4gICMgVHlwZVBhcmFtID0gLipNeUFycmF5PGJvb2wsXHMqNDI+CisgIFRlc3RB
CisgIFRlc3RCCitNeS9UeXBlUGFyYW1UZXN0LzBcLiAgIyBUeXBlUGFyYW0gPSAoVmVyeUxvezI0
NX18Y2xhc3MgVmVyeUxvezIzOX0pXC5cLlwuCisgIFRlc3RBCisgIFRlc3RCCitNeS9UeXBlUGFy
YW1UZXN0LzFcLiAgIyBUeXBlUGFyYW0gPSBpbnRccypcKiggX19wdHI2NCk/CisgIFRlc3RBCisg
IFRlc3RCCitNeS9UeXBlUGFyYW1UZXN0LzJcLiAgIyBUeXBlUGFyYW0gPSAuKk15QXJyYXk8Ym9v
bCxccyo0Mj4KKyAgVGVzdEEKKyAgVGVzdEIKK015SW5zdGFudGlhdGlvbi9WYWx1ZVBhcmFtVGVz
dFwuCisgIFRlc3RBLzAgICMgR2V0UGFyYW1cKFwpID0gb25lIGxpbmUKKyAgVGVzdEEvMSAgIyBH
ZXRQYXJhbVwoXCkgPSB0d29cXG5saW5lcworICBUZXN0QS8yICAjIEdldFBhcmFtXChcKSA9IGEg
dmVyeVxcbmxvezI0MX1cLlwuXC4KKyAgVGVzdEIvMCAgIyBHZXRQYXJhbVwoXCkgPSBvbmUgbGlu
ZQorICBUZXN0Qi8xICAjIEdldFBhcmFtXChcKSA9IHR3b1xcbmxpbmVzCisgIFRlc3RCLzIgICMg
R2V0UGFyYW1cKFwpID0gYSB2ZXJ5XFxubG97MjQxfVwuXC5cLgorIiIiKQorCisjIFRoZSBleHBl
Y3RlZCBvdXRwdXQgd2hlbiBydW5uaW5nIGdvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdF8g
d2l0aAorIyAtLWd0ZXN0X2xpc3RfdGVzdHMgYW5kIC0tZ3Rlc3RfZmlsdGVyPUZvbyouCitFWFBF
Q1RFRF9PVVRQVVRfRklMVEVSX0ZPT19SRSA9IHJlLmNvbXBpbGUociIiIkZvb0RlYXRoVGVzdFwu
CisgIFRlc3QxCitGb29cLgorICBCYXIxCisgIEJhcjIKKyAgRElTQUJMRURfQmFyMworRm9vQmFy
XC4KKyAgQmF6CitGb29UZXN0XC4KKyAgVGVzdDEKKyAgRElTQUJMRURfVGVzdDIKKyAgVGVzdDMK
KyIiIikKKworIyBVdGlsaXRpZXMuCisKKworZGVmIFJ1bihhcmdzKToKKyAgIiIiUnVucyBnb29n
bGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfIGFuZCByZXR1cm5zIHRoZSBsaXN0IG9mIHRlc3Rz
IHByaW50ZWQuIiIiCisKKyAgcmV0dXJuIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhbRVhF
X1BBVEhdICsgYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXB0
dXJlX3N0ZGVycj1GYWxzZSkub3V0cHV0CisKKworIyBUaGUgdW5pdCB0ZXN0LgorCisKK2NsYXNz
IEdUZXN0TGlzdFRlc3RzVW5pdFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICIi
IlRlc3RzIHVzaW5nIHRoZSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZyB0byBsaXN0IGFsbCB0ZXN0
cy4iIiIKKworICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGZsYWdfdmFsdWUsIGV4cGVjdGVkX291
dHB1dF9yZSwgb3RoZXJfZmxhZyk6CisgICAgIiIiUnVucyBnb29nbGV0ZXN0LWxpc3QtdGVzdHMt
dW5pdHRlc3RfIGFuZCB2ZXJpZmllcyB0aGF0IGl0IHByaW50cworICAgIHRoZSBjb3JyZWN0IHRl
c3RzLgorCisgICAgQXJnczoKKyAgICAgIGZsYWdfdmFsdWU6ICAgICAgICAgdmFsdWUgb2YgdGhl
IC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnOworICAgICAgICAgICAgICAgICAgICAgICAgICBOb25l
IGlmIHRoZSBmbGFnIHNob3VsZCBub3QgYmUgcHJlc2VudC4KKyAgICAgIGV4cGVjdGVkX291dHB1
dF9yZTogcmVndWxhciBleHByZXNzaW9uIHRoYXQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGFmdGVyIHJ1bm5pbmcgY29tbWFuZDsKKyAgICAg
IG90aGVyX2ZsYWc6ICAgICAgICAgYSBkaWZmZXJlbnQgZmxhZyB0byBiZSBwYXNzZWQgdG8gY29t
bWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICBhbG9uZyB3aXRoIGd0ZXN0X2xpc3RfdGVz
dHM7CisgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5v
dCBiZSBwcmVzZW50LgorICAgICIiIgorCisgICAgaWYgZmxhZ192YWx1ZSBpcyBOb25lOgorICAg
ICAgZmxhZyA9ICcnCisgICAgICBmbGFnX2V4cHJlc3Npb24gPSAnbm90IHNldCcKKyAgICBlbGlm
IGZsYWdfdmFsdWUgPT0gJzAnOgorICAgICAgZmxhZyA9ICctLSVzPTAnICUgTElTVF9URVNUU19G
TEFHCisgICAgICBmbGFnX2V4cHJlc3Npb24gPSAnMCcKKyAgICBlbHNlOgorICAgICAgZmxhZyA9
ICctLSVzJyAlIExJU1RfVEVTVFNfRkxBRworICAgICAgZmxhZ19leHByZXNzaW9uID0gJzEnCisK
KyAgICBhcmdzID0gW2ZsYWddCisKKyAgICBpZiBvdGhlcl9mbGFnIGlzIG5vdCBOb25lOgorICAg
ICAgYXJncyArPSBbb3RoZXJfZmxhZ10KKworICAgIG91dHB1dCA9IFJ1bihhcmdzKQorCisgICAg
aWYgZXhwZWN0ZWRfb3V0cHV0X3JlOgorICAgICAgc2VsZi5hc3NlcnRfKAorICAgICAgICAgIGV4
cGVjdGVkX291dHB1dF9yZS5tYXRjaChvdXRwdXQpLAorICAgICAgICAgICgnd2hlbiAlcyBpcyAl
cywgdGhlIG91dHB1dCBvZiAiJXMiIGlzICIlcyIsXG4nCisgICAgICAgICAgICd3aGljaCBkb2Vz
IG5vdCBtYXRjaCByZWdleCAiJXMiJyAlCisgICAgICAgICAgIChMSVNUX1RFU1RTX0ZMQUcsIGZs
YWdfZXhwcmVzc2lvbiwgJyAnLmpvaW4oYXJncyksIG91dHB1dCwKKyAgICAgICAgICAgIGV4cGVj
dGVkX291dHB1dF9yZS5wYXR0ZXJuKSkpCisgICAgZWxzZToKKyAgICAgIHNlbGYuYXNzZXJ0XygK
KyAgICAgICAgICBub3QgRVhQRUNURURfT1VUUFVUX05PX0ZJTFRFUl9SRS5tYXRjaChvdXRwdXQp
LAorICAgICAgICAgICgnd2hlbiAlcyBpcyAlcywgdGhlIG91dHB1dCBvZiAiJXMiIGlzICIlcyIn
JQorICAgICAgICAgICAoTElTVF9URVNUU19GTEFHLCBmbGFnX2V4cHJlc3Npb24sICcgJy5qb2lu
KGFyZ3MpLCBvdXRwdXQpKSkKKworICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcihzZWxmKToKKyAg
ICAiIiJUZXN0cyB0aGUgYmVoYXZpb3Igb2YgdGhlIGRlZmF1bHQgbW9kZS4iIiIKKworICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBl
eHBlY3RlZF9vdXRwdXRfcmU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFn
PU5vbmUpCisKKyAgZGVmIHRlc3RGbGFnKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5nIHRoZSAt
LWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdf
dmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dF9yZT1Ob25l
LAorICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2ZsYWc9Tm9uZSkKKyAgICBzZWxmLlJ1bkFu
ZFZlcmlmeShmbGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9v
dXRwdXRfcmU9RVhQRUNURURfT1VUUFVUX05PX0ZJTFRFUl9SRSwKKyAgICAgICAgICAgICAgICAg
ICAgICBvdGhlcl9mbGFnPU5vbmUpCisKKyAgZGVmIHRlc3RPdmVycmlkZU5vbkZpbHRlckZsYWdz
KHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgLS1ndGVzdF9saXN0X3Rlc3RzIG92ZXJyaWRlcyB0
aGUgbm9uLWZpbHRlciBmbGFncy4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFs
dWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dF9yZT1FWFBFQ1RF
RF9PVVRQVVRfTk9fRklMVEVSX1JFLAorICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2ZsYWc9
Jy0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZScpCisKKyAgZGVmIHRlc3RXaXRoRmlsdGVyRmxhZ3Mo
c2VsZik6CisgICAgIiIiVGVzdHMgdGhhdCAtLWd0ZXN0X2xpc3RfdGVzdHMgdGFrZXMgaW50byBh
Y2NvdW50IHRoZQorICAgIC0tZ3Rlc3RfZmlsdGVyIGZsYWcuIiIiCisKKyAgICBzZWxmLlJ1bkFu
ZFZlcmlmeShmbGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9v
dXRwdXRfcmU9RVhQRUNURURfT1VUUFVUX0ZJTFRFUl9GT09fUkUsCisgICAgICAgICAgICAgICAg
ICAgICAgb3RoZXJfZmxhZz0nLS1ndGVzdF9maWx0ZXI9Rm9vKicpCisKKworaWYgX19uYW1lX18g
PT0gJ19fbWFpbl9fJzoKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0
Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1saXN0LXRlc3Rz
LXVuaXR0ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDczYzdkMWE0NWYxZjE5NmIxMzc0ODNiMDUzY2E1
OTgwMDdkMjg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9nb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfLmNjCkBAIC0wLDAgKzEsMTU2IEBACisv
LyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRp
c3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
Ky8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gVW5pdCB0
ZXN0IGZvciBHb29nbGUgVGVzdCdzIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLgorLy8KKy8vIEEg
dXNlciBjYW4gYXNrIEdvb2dsZSBUZXN0IHRvIGxpc3QgYWxsIHRlc3RzIHRoYXQgd2lsbCBydW4K
Ky8vIHNvIHRoYXQgd2hlbiB1c2luZyBhIGZpbHRlciwgYSB1c2VyIHdpbGwga25vdyB3aGF0Cisv
LyB0ZXN0cyB0byBsb29rIGZvci4gVGhlIHRlc3RzIHdpbGwgbm90IGJlIHJ1biBhZnRlciBsaXN0
aW5nLgorLy8KKy8vIFRoaXMgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1
bml0IHRlc3QuCisvLyBEb24ndCBydW4gaXQgZGlyZWN0bHkuCisKKyNpbmNsdWRlICJndGVzdC9n
dGVzdC5oIgorCisvLyBTZXZlcmFsIGRpZmZlcmVudCB0ZXN0IGNhc2VzIGFuZCB0ZXN0cyB0aGF0
IHdpbGwgYmUgbGlzdGVkLgorVEVTVChGb28sIEJhcjEpIHsKK30KKworVEVTVChGb28sIEJhcjIp
IHsKK30KKworVEVTVChGb28sIERJU0FCTEVEX0JhcjMpIHsKK30KKworVEVTVChBYmMsIFh5eikg
eworfQorCitURVNUKEFiYywgRGVmKSB7Cit9CisKK1RFU1QoRm9vQmFyLCBCYXopIHsKK30KKwor
Y2xhc3MgRm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK1RFU1RfRihGb29U
ZXN0LCBUZXN0MSkgeworfQorCitURVNUX0YoRm9vVGVzdCwgRElTQUJMRURfVGVzdDIpIHsKK30K
KworVEVTVF9GKEZvb1Rlc3QsIFRlc3QzKSB7Cit9CisKK1RFU1QoRm9vRGVhdGhUZXN0LCBUZXN0
MSkgeworfQorCisvLyBBIGdyb3VwIG9mIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCisKK2Ns
YXNzIE15VHlwZSB7CisgcHVibGljOgorICBleHBsaWNpdCBNeVR5cGUoY29uc3Qgc3RkOjpzdHJp
bmcmIGFfdmFsdWUpIDogdmFsdWVfKGFfdmFsdWUpIHt9CisKKyAgY29uc3Qgc3RkOjpzdHJpbmcm
IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CisKKyBwcml2YXRlOgorICBzdGQ6OnN0
cmluZyB2YWx1ZV87Cit9OworCisvLyBUZWFjaGVzIEdvb2dsZSBUZXN0IGhvdyB0byBwcmludCBh
IE15VHlwZS4KK3ZvaWQgUHJpbnRUbyhjb25zdCBNeVR5cGUmIHgsIHN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgKm9zIDw8IHgudmFsdWUoKTsKK30KKworY2xhc3MgVmFsdWVQYXJhbVRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxNeVR5cGU+IHsKK307CisKK1RFU1RfUChWYWx1ZVBh
cmFtVGVzdCwgVGVzdEEpIHsKK30KKworVEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBUZXN0Qikgewor
fQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUCgKKyAgICBNeUluc3RhbnRpYXRpb24sIFZhbHVl
UGFyYW1UZXN0LAorICAgIHRlc3Rpbmc6OlZhbHVlcyhNeVR5cGUoIm9uZSBsaW5lIiksCisgICAg
ICAgICAgICAgICAgICAgIE15VHlwZSgidHdvXG5saW5lcyIpLAorICAgICAgICAgICAgICAgICAg
ICBNeVR5cGUoImEgdmVyeVxubG9vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29uZyBsaW5lIikpKTsgIC8v
IE5PTElOVAorCisvLyBBIGdyb3VwIG9mIHR5cGVkIHRlc3RzLgorCisvLyBBIGRlbGliZXJhdGVs
eSBsb25nIHR5cGUgbmFtZSBmb3IgdGVzdGluZyB0aGUgbGluZS10cnVuY2F0aW5nCisvLyBiZWhh
dmlvciB3aGVuIHByaW50aW5nIGEgdHlwZSBwYXJhbWV0ZXIuCitjbGFzcyBWZXJ5TG9vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29nTmFtZSB7ICAvLyBOT0xJTlQKK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgVHlwZWRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQsIGludCBrU2l6ZT4KK2NsYXNzIE15QXJyYXkgeworfTsKKwordHlw
ZWRlZiB0ZXN0aW5nOjpUeXBlczxWZXJ5TG9vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29nTmFtZSwgIC8v
IE5PTElOVAorICAgICAgICAgICAgICAgICAgICAgICBpbnQqLCBNeUFycmF5PGJvb2wsIDQyPiA+
IE15VHlwZXM7CisKK1RZUEVEX1RFU1RfQ0FTRShUeXBlZFRlc3QsIE15VHlwZXMpOworCitUWVBF
RF9URVNUKFR5cGVkVGVzdCwgVGVzdEEpIHsKK30KKworVFlQRURfVEVTVChUeXBlZFRlc3QsIFRl
c3RCKSB7Cit9CisKKy8vIEEgZ3JvdXAgb2YgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVQYXJhbVRlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7Cit9OworCitUWVBFRF9URVNUX0NBU0VfUChUeXBlUGFyYW1UZXN0KTsKKworVFlQ
RURfVEVTVF9QKFR5cGVQYXJhbVRlc3QsIFRlc3RBKSB7Cit9CisKK1RZUEVEX1RFU1RfUChUeXBl
UGFyYW1UZXN0LCBUZXN0QikgeworfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChUeXBl
UGFyYW1UZXN0LCBUZXN0QSwgVGVzdEIpOworCitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0Vf
UChNeSwgVHlwZVBhcmFtVGVzdCwgTXlUeXBlcyk7CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFy
ICoqYXJndikgeworICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKwor
ICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWxpc3RlbmVyLXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlzdGVuZXItdGVzdC5jYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
MzU1NTk3MTUxZDA5ZDZjMzE1NjcxZjQyZGI2NmNjNGJkNDg1MGZkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWxpc3RlbmVyLXRlc3Qu
Y2MKQEAgLTAsMCArMSwzMTEgQEAKKy8vIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBt
ZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKy8vCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29y
ayAoR29vZ2xlIFRlc3QpCisvLworLy8gVGhpcyBmaWxlIHZlcmlmaWVzIEdvb2dsZSBUZXN0IGV2
ZW50IGxpc3RlbmVycyByZWNlaXZlIGV2ZW50cyBhdCB0aGUKKy8vIHJpZ2h0IHRpbWVzLgorCisj
aW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKwordXNpbmcgOjp0
ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQ7Cit1c2luZyA6OnRlc3Rpbmc6OkVudmly
b25tZW50OwordXNpbmcgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdDsKK3VzaW5nIDo6dGVzdGlu
Zzo6VGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdENhc2U7Cit1c2luZyA6OnRlc3Rpbmc6OlRl
c3RFdmVudExpc3RlbmVyOwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0SW5mbzsKK3VzaW5nIDo6dGVz
dGluZzo6VGVzdFBhcnRSZXN1bHQ7Cit1c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OworCisvLyBV
c2VkIGJ5IHRlc3RzIHRvIHJlZ2lzdGVyIHRoZWlyIGV2ZW50cy4KK3N0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiogZ19ldmVudHMgPSBOVUxMOworCituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3Bh
Y2UgaW50ZXJuYWwgeworCitjbGFzcyBFdmVudFJlY29yZGluZ0xpc3RlbmVyIDogcHVibGljIFRl
c3RFdmVudExpc3RlbmVyIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEV2ZW50UmVjb3JkaW5nTGlz
dGVuZXIoY29uc3QgY2hhciogbmFtZSkgOiBuYW1lXyhuYW1lKSB7fQorCisgcHJvdGVjdGVkOgor
ICB2aXJ0dWFsIHZvaWQgT25UZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRf
dGVzdCovKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25U
ZXN0UHJvZ3JhbVN0YXJ0IikpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlv
blN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGl0ZXJhdGlvbikgeworICAgIE1lc3NhZ2UgbWVzc2FnZTsK
KyAgICBtZXNzYWdlIDw8IEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RJdGVyYXRpb25TdGFydCIp
CisgICAgICAgICAgICA8PCAiKCIgPDwgaXRlcmF0aW9uIDw8ICIpIjsKKyAgICBnX2V2ZW50cy0+
cHVzaF9iYWNrKG1lc3NhZ2UuR2V0U3RyaW5nKCkpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9u
RW52aXJvbm1lbnRzU2V0VXBTdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewor
ICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRz
U2V0VXBTdGFydCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1NldFVw
RW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7CisgICAgZ19ldmVudHMtPnB1c2hf
YmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25FbnZpcm9ubWVudHNTZXRVcEVuZCIpKTsKKyAgfQor
CisgIHZpcnR1YWwgdm9pZCBPblRlc3RDYXNlU3RhcnQoY29uc3QgVGVzdENhc2UmIC8qdGVzdF9j
YXNlKi8pIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRl
c3RDYXNlU3RhcnQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3Qg
VGVzdEluZm8mIC8qdGVzdF9pbmZvKi8pIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1
bGxNZXRob2ROYW1lKCJPblRlc3RTdGFydCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPblRl
c3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiAvKnRlc3RfcGFydF9yZXN1bHQqLykg
eworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdFBhcnRS
ZXN1bHQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0RW5kKGNvbnN0IFRlc3RJbmZv
JiAvKnRlc3RfaW5mbyovKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9k
TmFtZSgiT25UZXN0RW5kIikpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdENhc2VFbmQo
Y29uc3QgVGVzdENhc2UmIC8qdGVzdF9jYXNlKi8pIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNr
KEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RDYXNlRW5kIikpOworICB9CisKKyAgdmlydHVhbCB2
b2lkIE9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rl
c3QqLykgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52
aXJvbm1lbnRzVGVhckRvd25TdGFydCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPbkVudmly
b25tZW50c1RlYXJEb3duRW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7CisgICAg
Z19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25FbnZpcm9ubWVudHNUZWFy
RG93bkVuZCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25FbmQoY29u
c3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGl0ZXJhdGlvbikgeworICAgIE1lc3NhZ2UgbWVzc2FnZTsKKyAgICBtZXNzYWdl
IDw8IEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RJdGVyYXRpb25FbmQiKQorICAgICAgICAgICAg
PDwgIigiICA8PCBpdGVyYXRpb24gPDwgIikiOworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2sobWVz
c2FnZS5HZXRTdHJpbmcoKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0UHJvZ3JhbUVu
ZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgeworICAgIGdfZXZlbnRzLT5wdXNoX2Jh
Y2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdFByb2dyYW1FbmQiKSk7CisgIH0KKworIHByaXZh
dGU6CisgIHN0ZDo6c3RyaW5nIEdldEZ1bGxNZXRob2ROYW1lKGNvbnN0IGNoYXIqIG5hbWUpIHsK
KyAgICByZXR1cm4gbmFtZV8gKyAiLiIgKyBuYW1lOworICB9CisKKyAgc3RkOjpzdHJpbmcgbmFt
ZV87Cit9OworCitjbGFzcyBFbnZpcm9ubWVudEludm9jYXRpb25DYXRjaGVyIDogcHVibGljIEVu
dmlyb25tZW50IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBn
X2V2ZW50cy0+cHVzaF9iYWNrKCJFbnZpcm9ubWVudDo6U2V0VXAiKTsKKyAgfQorCisgIHZpcnR1
YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKCJFbnZpcm9ubWVu
dDo6VGVhckRvd24iKTsKKyAgfQorfTsKKworY2xhc3MgTGlzdGVuZXJUZXN0IDogcHVibGljIFRl
c3QgeworIHByb3RlY3RlZDoKKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKKyAgICBn
X2V2ZW50cy0+cHVzaF9iYWNrKCJMaXN0ZW5lclRlc3Q6OlNldFVwVGVzdENhc2UiKTsKKyAgfQor
CisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7CisgICAgZ19ldmVudHMtPnB1c2hf
YmFjaygiTGlzdGVuZXJUZXN0OjpUZWFyRG93blRlc3RDYXNlIik7CisgIH0KKworICB2aXJ0dWFs
IHZvaWQgU2V0VXAoKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0OjpT
ZXRVcCIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIGdfZXZlbnRz
LT5wdXNoX2JhY2soIkxpc3RlbmVyVGVzdDo6VGVhckRvd24iKTsKKyAgfQorfTsKKworVEVTVF9G
KExpc3RlbmVyVGVzdCwgRG9lc0ZvbykgeworICAvLyBUZXN0IGV4ZWN1dGlvbiBvcmRlciB3aXRo
aW4gYSB0ZXN0IGNhc2UgaXMgbm90IGd1YXJhbnRlZWQgc28gd2UgYXJlIG5vdAorICAvLyByZWNv
cmRpbmcgdGhlIHRlc3QgbmFtZS4KKyAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0
OjoqIFRlc3QgQm9keSIpOworICBTVUNDRUVEKCk7ICAvLyBUcmlnZ2VycyBPblRlc3RQYXJ0UmVz
dWx0LgorfQorCitURVNUX0YoTGlzdGVuZXJUZXN0LCBEb2VzQmFyKSB7CisgIGdfZXZlbnRzLT5w
dXNoX2JhY2soIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHkiKTsKKyAgU1VDQ0VFRCgpOyAgLy8g
VHJpZ2dlcnMgT25UZXN0UGFydFJlc3VsdC4KK30KKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6
OkVudmlyb25tZW50SW52b2NhdGlvbkNhdGNoZXI7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFs
OjpFdmVudFJlY29yZGluZ0xpc3RlbmVyOworCit2b2lkIFZlcmlmeVJlc3VsdHMoY29uc3Qgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBkYXRhLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGNvbnN0KiBleHBlY3RlZF9kYXRhLAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBleHBl
Y3RlZF9kYXRhX3NpemUpIHsKKyAgY29uc3Qgc2l6ZV90IGFjdHVhbF9zaXplID0gZGF0YS5zaXpl
KCk7CisgIC8vIElmIHRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9uIGZhaWxzLCBhIG5ldyBlbnRyeSB3
aWxsIGJlIGFwcGVuZGVkIHRvCisgIC8vIGRhdGEuICBIZW5jZSB3ZSBzYXZlIGRhdGEuc2l6ZSgp
IGZpcnN0LgorICBFWFBFQ1RfRVEoZXhwZWN0ZWRfZGF0YV9zaXplLCBhY3R1YWxfc2l6ZSk7CisK
KyAgLy8gQ29tcGFyZXMgdGhlIGNvbW1vbiBwcmVmaXguCisgIGNvbnN0IHNpemVfdCBzaG9ydGVy
X3NpemUgPSBleHBlY3RlZF9kYXRhX3NpemUgPD0gYWN0dWFsX3NpemUgPworICAgICAgZXhwZWN0
ZWRfZGF0YV9zaXplIDogYWN0dWFsX3NpemU7CisgIHNpemVfdCBpID0gMDsKKyAgZm9yICg7IGkg
PCBzaG9ydGVyX3NpemU7ICsraSkgeworICAgIEFTU0VSVF9TVFJFUShleHBlY3RlZF9kYXRhW2ld
LCBkYXRhW2ldLmNfc3RyKCkpCisgICAgICAgIDw8ICJhdCBwb3NpdGlvbiAiIDw8IGk7CisgIH0K
KworICAvLyBQcmludHMgZXh0cmEgZWxlbWVudHMgaW4gdGhlIGFjdHVhbCBkYXRhLgorICBmb3Ig
KDsgaSA8IGFjdHVhbF9zaXplOyArK2kpIHsKKyAgICBwcmludGYoIiAgQWN0dWFsIGV2ZW50ICMl
bHU6ICVzXG4iLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpKSwgZGF0YVtp
XS5jX3N0cigpKTsKKyAgfQorfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsK
KyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGV2ZW50czsKKyAgZ19ldmVudHMgPSAmZXZlbnRz
OworICBJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgVW5pdFRlc3Q6OkdldEluc3Rh
bmNlKCktPmxpc3RlbmVycygpLkFwcGVuZCgKKyAgICAgIG5ldyBFdmVudFJlY29yZGluZ0xpc3Rl
bmVyKCIxc3QiKSk7CisgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKS5BcHBl
bmQoCisgICAgICBuZXcgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lcigiMm5kIikpOworCisgIEFkZEds
b2JhbFRlc3RFbnZpcm9ubWVudChuZXcgRW52aXJvbm1lbnRJbnZvY2F0aW9uQ2F0Y2hlcik7CisK
KyAgR1RFU1RfQ0hFQ0tfKGV2ZW50cy5zaXplKCkgPT0gMCkKKyAgICAgIDw8ICJBZGRHbG9iYWxU
ZXN0RW52aXJvbm1lbnQgc2hvdWxkIG5vdCBnZW5lcmF0ZSBhbnkgZXZlbnRzIGl0c2VsZi4iOwor
CisgIDo6dGVzdGluZzo6R1RFU1RfRkxBRyhyZXBlYXQpID0gMjsKKyAgaW50IHJldF92YWwgPSBS
VU5fQUxMX1RFU1RTKCk7CisKKyAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRfZXZlbnRzW10g
PSB7CisgICAgIjFzdC5PblRlc3RQcm9ncmFtU3RhcnQiLAorICAgICIybmQuT25UZXN0UHJvZ3Jh
bVN0YXJ0IiwKKyAgICAiMXN0Lk9uVGVzdEl0ZXJhdGlvblN0YXJ0KDApIiwKKyAgICAiMm5kLk9u
VGVzdEl0ZXJhdGlvblN0YXJ0KDApIiwKKyAgICAiMXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBTdGFy
dCIsCisgICAgIjJuZC5PbkVudmlyb25tZW50c1NldFVwU3RhcnQiLAorICAgICJFbnZpcm9ubWVu
dDo6U2V0VXAiLAorICAgICIybmQuT25FbnZpcm9ubWVudHNTZXRVcEVuZCIsCisgICAgIjFzdC5P
bkVudmlyb25tZW50c1NldFVwRW5kIiwKKyAgICAiMXN0Lk9uVGVzdENhc2VTdGFydCIsCisgICAg
IjJuZC5PblRlc3RDYXNlU3RhcnQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwVGVzdENhc2Ui
LAorICAgICIxc3QuT25UZXN0U3RhcnQiLAorICAgICIybmQuT25UZXN0U3RhcnQiLAorICAgICJM
aXN0ZW5lclRlc3Q6OlNldFVwIiwKKyAgICAiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCisg
ICAgIjFzdC5PblRlc3RQYXJ0UmVzdWx0IiwKKyAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAor
ICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duIiwKKyAgICAiMm5kLk9uVGVzdEVuZCIsCisgICAg
IjFzdC5PblRlc3RFbmQiLAorICAgICIxc3QuT25UZXN0U3RhcnQiLAorICAgICIybmQuT25UZXN0
U3RhcnQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwKKyAgICAiTGlzdGVuZXJUZXN0Ojoq
IFRlc3QgQm9keSIsCisgICAgIjFzdC5PblRlc3RQYXJ0UmVzdWx0IiwKKyAgICAiMm5kLk9uVGVz
dFBhcnRSZXN1bHQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duIiwKKyAgICAiMm5kLk9u
VGVzdEVuZCIsCisgICAgIjFzdC5PblRlc3RFbmQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJE
b3duVGVzdENhc2UiLAorICAgICIybmQuT25UZXN0Q2FzZUVuZCIsCisgICAgIjFzdC5PblRlc3RD
YXNlRW5kIiwKKyAgICAiMXN0Lk9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydCIsCisgICAgIjJu
ZC5PbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiLAorICAgICJFbnZpcm9ubWVudDo6VGVhckRv
d24iLAorICAgICIybmQuT25FbnZpcm9ubWVudHNUZWFyRG93bkVuZCIsCisgICAgIjFzdC5PbkVu
dmlyb25tZW50c1RlYXJEb3duRW5kIiwKKyAgICAiMm5kLk9uVGVzdEl0ZXJhdGlvbkVuZCgwKSIs
CisgICAgIjFzdC5PblRlc3RJdGVyYXRpb25FbmQoMCkiLAorICAgICIxc3QuT25UZXN0SXRlcmF0
aW9uU3RhcnQoMSkiLAorICAgICIybmQuT25UZXN0SXRlcmF0aW9uU3RhcnQoMSkiLAorICAgICIx
c3QuT25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0IiwKKyAgICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0
VXBTdGFydCIsCisgICAgIkVudmlyb25tZW50OjpTZXRVcCIsCisgICAgIjJuZC5PbkVudmlyb25t
ZW50c1NldFVwRW5kIiwKKyAgICAiMXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiLAorICAgICIx
c3QuT25UZXN0Q2FzZVN0YXJ0IiwKKyAgICAiMm5kLk9uVGVzdENhc2VTdGFydCIsCisgICAgIkxp
c3RlbmVyVGVzdDo6U2V0VXBUZXN0Q2FzZSIsCisgICAgIjFzdC5PblRlc3RTdGFydCIsCisgICAg
IjJuZC5PblRlc3RTdGFydCIsCisgICAgIkxpc3RlbmVyVGVzdDo6U2V0VXAiLAorICAgICJMaXN0
ZW5lclRlc3Q6OiogVGVzdCBCb2R5IiwKKyAgICAiMXN0Lk9uVGVzdFBhcnRSZXN1bHQiLAorICAg
ICIybmQuT25UZXN0UGFydFJlc3VsdCIsCisgICAgIkxpc3RlbmVyVGVzdDo6VGVhckRvd24iLAor
ICAgICIybmQuT25UZXN0RW5kIiwKKyAgICAiMXN0Lk9uVGVzdEVuZCIsCisgICAgIjFzdC5PblRl
c3RTdGFydCIsCisgICAgIjJuZC5PblRlc3RTdGFydCIsCisgICAgIkxpc3RlbmVyVGVzdDo6U2V0
VXAiLAorICAgICJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5IiwKKyAgICAiMXN0Lk9uVGVzdFBh
cnRSZXN1bHQiLAorICAgICIybmQuT25UZXN0UGFydFJlc3VsdCIsCisgICAgIkxpc3RlbmVyVGVz
dDo6VGVhckRvd24iLAorICAgICIybmQuT25UZXN0RW5kIiwKKyAgICAiMXN0Lk9uVGVzdEVuZCIs
CisgICAgIkxpc3RlbmVyVGVzdDo6VGVhckRvd25UZXN0Q2FzZSIsCisgICAgIjJuZC5PblRlc3RD
YXNlRW5kIiwKKyAgICAiMXN0Lk9uVGVzdENhc2VFbmQiLAorICAgICIxc3QuT25FbnZpcm9ubWVu
dHNUZWFyRG93blN0YXJ0IiwKKyAgICAiMm5kLk9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydCIs
CisgICAgIkVudmlyb25tZW50OjpUZWFyRG93biIsCisgICAgIjJuZC5PbkVudmlyb25tZW50c1Rl
YXJEb3duRW5kIiwKKyAgICAiMXN0Lk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiLAorICAgICIy
bmQuT25UZXN0SXRlcmF0aW9uRW5kKDEpIiwKKyAgICAiMXN0Lk9uVGVzdEl0ZXJhdGlvbkVuZCgx
KSIsCisgICAgIjJuZC5PblRlc3RQcm9ncmFtRW5kIiwKKyAgICAiMXN0Lk9uVGVzdFByb2dyYW1F
bmQiCisgIH07CisgIFZlcmlmeVJlc3VsdHMoZXZlbnRzLAorICAgICAgICAgICAgICAgIGV4cGVj
dGVkX2V2ZW50cywKKyAgICAgICAgICAgICAgICBzaXplb2YoZXhwZWN0ZWRfZXZlbnRzKS9zaXpl
b2YoZXhwZWN0ZWRfZXZlbnRzWzBdKSk7CisKKyAgLy8gV2UgbmVlZCB0byBjaGVjayBtYW51YWxs
eSBmb3IgYWQgaG9jIHRlc3QgZmFpbHVyZXMgdGhhdCBoYXBwZW4gYWZ0ZXIKKyAgLy8gUlVOX0FM
TF9URVNUUyBmaW5pc2hlcy4KKyAgaWYgKFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5GYWlsZWQo
KSkKKyAgICByZXRfdmFsID0gMTsKKworICByZXR1cm4gcmV0X3ZhbDsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1tZXNzYWdlLXRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbWVzc2FnZS10ZXN0LmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM2NDQ1ODUzZTQzM2QzYzE0MzQ1MjU3MzkxYTZiOTg4YTlkMzgwZWYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qt
bWVzc2FnZS10ZXN0LmNjCkBAIC0wLDAgKzEsMTU4IEBACisvLyBDb3B5cmlnaHQgMjAwNSwgR29v
Z2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vCisvLyBUZXN0cyBmb3IgdGhlIE1lc3NhZ2UgY2xh
c3MuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1tZXNzYWdlLmgiCisKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCit1c2luZyA6OnRlc3Rpbmc6Ok1lc3NhZ2U7CisK
Ky8vIFRlc3RzIHRoZSB0ZXN0aW5nOjpNZXNzYWdlIGNsYXNzCisKKy8vIFRlc3RzIHRoZSBkZWZh
dWx0IGNvbnN0cnVjdG9yLgorVEVTVChNZXNzYWdlVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yKSB7
CisgIGNvbnN0IE1lc3NhZ2UgbXNnOworICBFWFBFQ1RfRVEoIiIsIG1zZy5HZXRTdHJpbmcoKSk7
Cit9CisKKy8vIFRlc3RzIHRoZSBjb3B5IGNvbnN0cnVjdG9yLgorVEVTVChNZXNzYWdlVGVzdCwg
Q29weUNvbnN0cnVjdG9yKSB7CisgIGNvbnN0IE1lc3NhZ2UgbXNnMSgiSGVsbG8iKTsKKyAgY29u
c3QgTWVzc2FnZSBtc2cyKG1zZzEpOworICBFWFBFQ1RfRVEoIkhlbGxvIiwgbXNnMi5HZXRTdHJp
bmcoKSk7Cit9CisKKy8vIFRlc3RzIGNvbnN0cnVjdGluZyBhIE1lc3NhZ2UgZnJvbSBhIEMtc3Ry
aW5nLgorVEVTVChNZXNzYWdlVGVzdCwgQ29uc3RydWN0c0Zyb21DU3RyaW5nKSB7CisgIE1lc3Nh
Z2UgbXNnKCJIZWxsbyIpOworICBFWFBFQ1RfRVEoIkhlbGxvIiwgbXNnLkdldFN0cmluZygpKTsK
K30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGEgZmxvYXQuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJl
YW1zRmxvYXQpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgcyA9IChNZXNzYWdlKCkgPDwgMS4yMzQ1
NkYgPDwgIiAiIDw8IDIuMzQ1NjdGKS5HZXRTdHJpbmcoKTsKKyAgLy8gQm90aCBudW1iZXJzIHNo
b3VsZCBiZSBwcmludGVkIHdpdGggZW5vdWdoIHByZWNpc2lvbi4KKyAgRVhQRUNUX1BSRURfRk9S
TUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIjEuMjM0NTYwIiwgcy5jX3N0cigpKTsKKyAgRVhQ
RUNUX1BSRURfRk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIiAyLjM0NTY2OSIsIHMuY19z
dHIoKSk7Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIGRvdWJsZS4KK1RFU1QoTWVzc2FnZVRl
c3QsIFN0cmVhbXNEb3VibGUpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgcyA9IChNZXNzYWdlKCkg
PDwgMTI2MDU3MDg4MC40NTU1NDk3IDw8ICIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8IDEyNjA1NzIyNjUuMTk1NDUzNCkuR2V0U3RyaW5nKCk7CisgIC8vIEJvdGggbnVt
YmVycyBzaG91bGQgYmUgcHJpbnRlZCB3aXRoIGVub3VnaCBwcmVjaXNpb24uCisgIEVYUEVDVF9Q
UkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIxMjYwNTcwODgwLjQ1Iiwgcy5jX3N0
cigpKTsKKyAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIiAxMjYw
NTcyMjY1LjE5Iiwgcy5jX3N0cigpKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGEgbm9uLWNo
YXIgcG9pbnRlci4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNQb2ludGVyKSB7CisgIGludCBu
ID0gMDsKKyAgaW50KiBwID0gJm47CisgIEVYUEVDVF9ORSgiKG51bGwpIiwgKE1lc3NhZ2UoKSA8
PCBwKS5HZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIE5VTEwgbm9uLWNo
YXIgcG9pbnRlci4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNOdWxsUG9pbnRlcikgeworICBp
bnQqIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIihudWxsKSIsIChNZXNzYWdlKCkgPDwgcCkuR2V0
U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyBzdHJlYW1pbmcgYSBDIHN0cmluZy4KK1RFU1QoTWVz
c2FnZVRlc3QsIFN0cmVhbXNDU3RyaW5nKSB7CisgIEVYUEVDVF9FUSgiRm9vIiwgKE1lc3NhZ2Uo
KSA8PCAiRm9vIikuR2V0U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyBzdHJlYW1pbmcgYSBOVUxM
IEMgc3RyaW5nLgorVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc051bGxDU3RyaW5nKSB7CisgIGNo
YXIqIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIihudWxsKSIsIChNZXNzYWdlKCkgPDwgcCkuR2V0
U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyBzdHJlYW1pbmcgc3RkOjpzdHJpbmcuCitURVNUKE1l
c3NhZ2VUZXN0LCBTdHJlYW1zU3RyaW5nKSB7CisgIGNvbnN0IDo6c3RkOjpzdHJpbmcgc3RyKCJI
ZWxsbyIpOworICBFWFBFQ1RfRVEoIkhlbGxvIiwgKE1lc3NhZ2UoKSA8PCBzdHIpLkdldFN0cmlu
ZygpKTsKK30KKworLy8gVGVzdHMgdGhhdCB3ZSBjYW4gb3V0cHV0IHN0cmluZ3MgY29udGFpbmlu
ZyBlbWJlZGRlZCBOVUxzLgorVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc1N0cmluZ1dpdGhFbWJl
ZGRlZE5VTCkgeworICBjb25zdCBjaGFyIGNoYXJfYXJyYXlfd2l0aF9udWxbXSA9CisgICAgICAi
SGVyZSdzIGEgTlVMXDAgYW5kIHNvbWUgbW9yZSBzdHJpbmciOworICBjb25zdCA6OnN0ZDo6c3Ry
aW5nIHN0cmluZ193aXRoX251bChjaGFyX2FycmF5X3dpdGhfbnVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoY2hhcl9hcnJheV93aXRoX251bCkgLSAxKTsK
KyAgRVhQRUNUX0VRKCJIZXJlJ3MgYSBOVUxcXDAgYW5kIHNvbWUgbW9yZSBzdHJpbmciLAorICAg
ICAgICAgICAgKE1lc3NhZ2UoKSA8PCBzdHJpbmdfd2l0aF9udWwpLkdldFN0cmluZygpKTsKK30K
KworLy8gVGVzdHMgc3RyZWFtaW5nIGEgTlVMIGNoYXIuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJl
YW1zTlVMQ2hhcikgeworICBFWFBFQ1RfRVEoIlxcMCIsIChNZXNzYWdlKCkgPDwgJ1wwJykuR2V0
U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyBzdHJlYW1pbmcgaW50LgorVEVTVChNZXNzYWdlVGVz
dCwgU3RyZWFtc0ludCkgeworICBFWFBFQ1RfRVEoIjEyMyIsIChNZXNzYWdlKCkgPDwgMTIzKS5H
ZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgYmFzaWMgSU8gbWFuaXB1bGF0b3JzIChl
bmRsLCBlbmRzLCBhbmQgZmx1c2gpIGNhbiBiZQorLy8gc3RyZWFtZWQgdG8gTWVzc2FnZS4KK1RF
U1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNCYXNpY0lvTWFuaXApIHsKKyAgRVhQRUNUX0VRKCJMaW5l
IDEuXG5BIE5VTCBjaGFyIFxcMCBpbiBsaW5lIDIuIiwKKyAgICAgICAgICAgICAgIChNZXNzYWdl
KCkgPDwgIkxpbmUgMS4iIDw8IHN0ZDo6ZW5kbAorICAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICJBIE5VTCBjaGFyICIgPDwgc3RkOjplbmRzIDw8IHN0ZDo6Zmx1c2gKKyAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiIGluIGxpbmUgMi4iKS5HZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRlc3Rz
IE1lc3NhZ2U6OkdldFN0cmluZygpCitURVNUKE1lc3NhZ2VUZXN0LCBHZXRTdHJpbmcpIHsKKyAg
TWVzc2FnZSBtc2c7CisgIG1zZyA8PCAxIDw8ICIgbGFtYiI7CisgIEVYUEVDVF9FUSgiMSBsYW1i
IiwgbXNnLkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGEgTWVzc2FnZSBv
YmplY3QgdG8gYW4gb3N0cmVhbS4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNUb09TdHJlYW0p
IHsKKyAgTWVzc2FnZSBtc2coIkhlbGxvIik7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7Cisg
IHNzIDw8IG1zZzsKKyAgRVhQRUNUX0VRKCJIZWxsbyIsIHRlc3Rpbmc6OmludGVybmFsOjpTdHJp
bmdTdHJlYW1Ub1N0cmluZygmc3MpKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIE1lc3NhZ2Ugb2Jq
ZWN0IGRvZXNuJ3QgdGFrZSB1cCB0b28gbXVjaCBzdGFjayBzcGFjZS4KK1RFU1QoTWVzc2FnZVRl
c3QsIERvZXNOb3RUYWtlVXBNdWNoU3RhY2tTcGFjZSkgeworICBFWFBFQ1RfTEUoc2l6ZW9mKE1l
c3NhZ2UpLCAxNlUpOworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1vcHRpb25zLXRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3B0aW9ucy10ZXN0LmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVkZDRlYmEzYmQzMTA5NTk1MGE4ZDk4Y2YzZGFmNmYzNGQ2NDk2OWYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3B0aW9ucy10
ZXN0LmNjCkBAIC0wLDAgKzEsMjExIEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4K
Ky8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
Ky8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisvLworLy8gR29vZ2xlIFRlc3QgVW5pdFRlc3RPcHRpb25zIHRlc3RzCisv
LworLy8gVGhpcyBmaWxlIHRlc3RzIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyB1c2VkIGludGVybmFs
bHkgYnkKKy8vIEdvb2dsZSBUZXN0LiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91
dCBub3RpY2UuCisvLworLy8gVGhpcyBmaWxlIGlzICNpbmNsdWRlZCBmcm9tIGd0ZXN0LmNjLCB0
byBhdm9pZCBjaGFuZ2luZyBidWlsZCBvcgorLy8gbWFrZS1maWxlcyBvbiBXaW5kb3dzIGFuZCBv
dGhlciBwbGF0Zm9ybXMuIERvIG5vdCAjaW5jbHVkZSB0aGlzIGZpbGUKKy8vIGFueXdoZXJlIGVs
c2UhCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisjaWYgR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKKyMgaW5jbHVkZSA8d2luZG93cy5oPgorI2VsaWYgR1RFU1RfT1NfV0lORE9XUworIyBp
bmNsdWRlIDxkaXJlY3QuaD4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKwor
I2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKworbmFtZXNwYWNlIHRlc3Rpbmcg
eworbmFtZXNwYWNlIGludGVybmFsIHsKK25hbWVzcGFjZSB7CisKKy8vIFR1cm5zIHRoZSBnaXZl
biByZWxhdGl2ZSBwYXRoIGludG8gYW4gYWJzb2x1dGUgcGF0aC4KK0ZpbGVQYXRoIEdldEFic29s
dXRlUGF0aE9mKGNvbnN0IEZpbGVQYXRoJiByZWxhdGl2ZV9wYXRoKSB7CisgIHJldHVybiBGaWxl
UGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKSwgcmVsYXRpdmVfcGF0
aCk7Cit9CisKKy8vIFRlc3RpbmcgVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQvR2V0
T3V0cHV0RmlsZS4KKworVEVTVChYbWxPdXRwdXRUZXN0LCBHZXRPdXRwdXRGb3JtYXREZWZhdWx0
KSB7CisgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICIiOworICBFWFBFQ1RfU1RSRVEoIiIsIFVuaXRU
ZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCkuY19zdHIoKSk7Cit9CisKK1RFU1QoWG1sT3V0
cHV0VGVzdCwgR2V0T3V0cHV0Rm9ybWF0KSB7CisgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6
ZmlsZW5hbWUiOworICBFWFBFQ1RfU1RSRVEoInhtbCIsIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0
cHV0Rm9ybWF0KCkuY19zdHIoKSk7Cit9CisKK1RFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0
RmlsZURlZmF1bHQpIHsKKyAgR1RFU1RfRkxBRyhvdXRwdXQpID0gIiI7CisgIEVYUEVDVF9FUShH
ZXRBYnNvbHV0ZVBhdGhPZihGaWxlUGF0aCgidGVzdF9kZXRhaWwueG1sIikpLnN0cmluZygpLAor
ICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUo
KSk7Cit9CisKK1RFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0RmlsZVNpbmdsZUZpbGUpIHsK
KyAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbDpmaWxlbmFtZS5hYmMiOworICBFWFBFQ1RfRVEo
R2V0QWJzb2x1dGVQYXRoT2YoRmlsZVBhdGgoImZpbGVuYW1lLmFiYyIpKS5zdHJpbmcoKSwKKyAg
ICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkp
OworfQorCitURVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZpbGVGcm9tRGlyZWN0b3J5UGF0
aCkgeworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOnBhdGgiIEdURVNUX1BBVEhfU0VQXzsK
KyAgY29uc3Qgc3RkOjpzdHJpbmcgZXhwZWN0ZWRfb3V0cHV0X2ZpbGUgPQorICAgICAgR2V0QWJz
b2x1dGVQYXRoT2YoCisgICAgICAgICAgRmlsZVBhdGgoc3RkOjpzdHJpbmcoInBhdGgiKSArIEdU
RVNUX1BBVEhfU0VQXyArCisgICAgICAgICAgICAgICAgICAgR2V0Q3VycmVudEV4ZWN1dGFibGVO
YW1lKCkuc3RyaW5nKCkgKyAiLnhtbCIpKS5zdHJpbmcoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcm
IG91dHB1dF9maWxlID0KKyAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9P
dXRwdXRGaWxlKCk7CisjaWYgR1RFU1RfT1NfV0lORE9XUworICBFWFBFQ1RfU1RSQ0FTRUVRKGV4
cGVjdGVkX291dHB1dF9maWxlLmNfc3RyKCksIG91dHB1dF9maWxlLmNfc3RyKCkpOworI2Vsc2UK
KyAgRVhQRUNUX0VRKGV4cGVjdGVkX291dHB1dF9maWxlLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsK
KyNlbmRpZgorfQorCitURVNUKE91dHB1dEZpbGVIZWxwZXJzVGVzdCwgR2V0Q3VycmVudEV4ZWN1
dGFibGVOYW1lKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGV4ZV9zdHIgPSBHZXRDdXJyZW50RXhl
Y3V0YWJsZU5hbWUoKS5zdHJpbmcoKTsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIGNvbnN0IGJv
b2wgc3VjY2VzcyA9CisgICAgICBfc3RyY21waSgiZ29vZ2xldGVzdC1vcHRpb25zLXRlc3QiLCBl
eGVfc3RyLmNfc3RyKCkpID09IDAgfHwKKyAgICAgIF9zdHJjbXBpKCJndGVzdC1vcHRpb25zLWV4
X3Rlc3QiLCBleGVfc3RyLmNfc3RyKCkpID09IDAgfHwKKyAgICAgIF9zdHJjbXBpKCJndGVzdF9h
bGxfdGVzdCIsIGV4ZV9zdHIuY19zdHIoKSkgPT0gMCB8fAorICAgICAgX3N0cmNtcGkoImd0ZXN0
X2RsbF90ZXN0IiwgZXhlX3N0ci5jX3N0cigpKSA9PSAwOworI2VsaWYgR1RFU1RfT1NfRlVDSFNJ
QQorICBjb25zdCBib29sIHN1Y2Nlc3MgPSBleGVfc3RyID09ICJhcHAiOworI2Vsc2UKKyAgLy8g
RklYTUU6IHJlbW92ZSB0aGUgaGFyZC1jb2RlZCAibHQtIiBwcmVmaXggd2hlbiBsaWJ0b29sIHJl
cGxhY2VtZW50IGlzIHJlYWR5CisgIGNvbnN0IGJvb2wgc3VjY2VzcyA9CisgICAgICBleGVfc3Ry
ID09ICJnb29nbGV0ZXN0LW9wdGlvbnMtdGVzdCIgfHwKKyAgICAgIGV4ZV9zdHIgPT0gImd0ZXN0
X2FsbF90ZXN0IiB8fAorICAgICAgZXhlX3N0ciA9PSAibHQtZ3Rlc3RfYWxsX3Rlc3QiIHx8Cisg
ICAgICBleGVfc3RyID09ICJndGVzdF9kbGxfdGVzdCI7CisjZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1MKKyAgaWYgKCFzdWNjZXNzKQorICAgIEZBSUwoKSA8PCAiR2V0Q3VycmVudEV4ZWN1dGFi
bGVOYW1lKCkgcmV0dXJucyAiIDw8IGV4ZV9zdHI7Cit9CisKKyNpZiAhR1RFU1RfT1NfRlVDSFNJ
QQorCitjbGFzcyBYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0IDogcHVibGljIFRlc3QgeworIHByb3Rl
Y3RlZDoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIG9yaWdpbmFsX3dvcmtpbmdfZGly
XyA9IEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCk7CisgICAgcG9zaXg6OkNoRGlyKCIuLiIpOwor
ICAgIC8vIFRoaXMgd2lsbCBtYWtlIHRoZSB0ZXN0IGZhaWwgaWYgcnVuIGZyb20gdGhlIHJvb3Qg
ZGlyZWN0b3J5LgorICAgIEVYUEVDVF9ORShvcmlnaW5hbF93b3JraW5nX2Rpcl8uc3RyaW5nKCks
CisgICAgICAgICAgICAgIEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkuc3RyaW5nKCkpOworICB9
CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIHBvc2l4OjpDaERpcihvcmlnaW5h
bF93b3JraW5nX2Rpcl8uc3RyaW5nKCkuY19zdHIoKSk7CisgIH0KKworICBGaWxlUGF0aCBvcmln
aW5hbF93b3JraW5nX2Rpcl87Cit9OworCitURVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwg
UHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoRGVmYXVsdCkgeworICBHVEVTVF9GTEFHKG91
dHB1dCkgPSAiIjsKKyAgRVhQRUNUX0VRKEZpbGVQYXRoOjpDb25jYXRQYXRocyhvcmlnaW5hbF93
b3JraW5nX2Rpcl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgo
InRlc3RfZGV0YWlsLnhtbCIpKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9u
czo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOworfQorCitURVNUX0YoWG1sT3V0cHV0
Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoRGVmYXVsdFhNTCkg
eworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sIjsKKyAgRVhQRUNUX0VRKEZpbGVQYXRoOjpD
b25jYXRQYXRocyhvcmlnaW5hbF93b3JraW5nX2Rpcl8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRmlsZVBhdGgoInRlc3RfZGV0YWlsLnhtbCIpKS5zdHJpbmcoKSwKKyAgICAg
ICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOwor
fQorCitURVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtp
bmdEaXJXaXRoUmVsYXRpdmVGaWxlKSB7CisgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6Zmls
ZW5hbWUuYWJjIjsKKyAgRVhQRUNUX0VRKEZpbGVQYXRoOjpDb25jYXRQYXRocyhvcmlnaW5hbF93
b3JraW5nX2Rpcl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgo
ImZpbGVuYW1lLmFiYyIpKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6
R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOworfQorCitURVNUX0YoWG1sT3V0cHV0Q2hh
bmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoUmVsYXRpdmVQYXRoKSB7
CisgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6cGF0aCIgR1RFU1RfUEFUSF9TRVBfOworICBj
b25zdCBzdGQ6OnN0cmluZyBleHBlY3RlZF9vdXRwdXRfZmlsZSA9CisgICAgICBGaWxlUGF0aDo6
Q29uY2F0UGF0aHMoCisgICAgICAgICAgb3JpZ2luYWxfd29ya2luZ19kaXJfLAorICAgICAgICAg
IEZpbGVQYXRoKHN0ZDo6c3RyaW5nKCJwYXRoIikgKyBHVEVTVF9QQVRIX1NFUF8gKworICAgICAg
ICAgICAgICAgICAgIEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLnN0cmluZygpICsgIi54bWwi
KSkuc3RyaW5nKCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZmlsZSA9CisgICAgICBV
bml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpOworI2lmIEdURVNU
X09TX1dJTkRPV1MKKyAgRVhQRUNUX1NUUkNBU0VFUShleHBlY3RlZF9vdXRwdXRfZmlsZS5jX3N0
cigpLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKKyNlbHNlCisgIEVYUEVDVF9FUShleHBlY3RlZF9v
dXRwdXRfZmlsZSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7CisjZW5kaWYKK30KKworVEVTVF9GKFht
bE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aEFic29s
dXRlRmlsZSkgeworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgR1RFU1RfRkxBRyhvdXRwdXQpID0g
InhtbDpjOlxcdG1wXFxmaWxlbmFtZS5hYmMiOworICBFWFBFQ1RfRVEoRmlsZVBhdGgoImM6XFx0
bXBcXGZpbGVuYW1lLmFiYyIpLnN0cmluZygpLAorICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25z
OjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSk7CisjZWxzZQorICBHVEVTVF9GTEFHKG91
dHB1dCkgPSJ4bWw6L3RtcC9maWxlbmFtZS5hYmMiOworICBFWFBFQ1RfRVEoRmlsZVBhdGgoIi90
bXAvZmlsZW5hbWUuYWJjIikuc3RyaW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6
OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKKyNlbmRpZgorfQorCitURVNUX0YoWG1s
T3V0cHV0Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoQWJzb2x1
dGVQYXRoKSB7CisjaWYgR1RFU1RfT1NfV0lORE9XUworICBjb25zdCBzdGQ6OnN0cmluZyBwYXRo
ID0gImM6XFx0bXBcXCI7CisjZWxzZQorICBjb25zdCBzdGQ6OnN0cmluZyBwYXRoID0gIi90bXAv
IjsKKyNlbmRpZgorCisgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6IiArIHBhdGg7CisgIGNv
bnN0IHN0ZDo6c3RyaW5nIGV4cGVjdGVkX291dHB1dF9maWxlID0KKyAgICAgIHBhdGggKyBHZXRD
dXJyZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmcoKSArICIueG1sIjsKKyAgY29uc3Qgc3RkOjpz
dHJpbmcmIG91dHB1dF9maWxlID0KKyAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQ
YXRoVG9PdXRwdXRGaWxlKCk7CisKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIEVYUEVDVF9TVFJD
QVNFRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUuY19zdHIoKSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7
CisjZWxzZQorICBFWFBFQ1RfRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUsIG91dHB1dF9maWxlLmNf
c3RyKCkpOworI2VuZGlmCit9CisKKyNlbmRpZiAgLy8gIUdURVNUX09TX0ZVQ0hTSUEKKworfSAg
Ly8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSB0
ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3Qtb3V0cHV0LXRlc3QtZ29sZGVuLWxpbi50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3QtZ29sZGVuLWxpbi50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzcx
MWNkYzY4YWU1MzhjY2U5ZTM5ODRiY2UxYjdhYjY1YWE2MmE1MwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1vdXRwdXQtdGVzdC1nb2xk
ZW4tbGluLnR4dApAQCAtMCwwICsxLDEwNDcgQEAKK1RoZSBub24tdGVzdCBwYXJ0IG9mIHRoZSBj
b2RlIGlzIGV4cGVjdGVkIHRvIGhhdmUgMiBmYWlsdXJlcy4KKworZ29vZ2xldGVzdC1vdXRwdXQt
dGVzdF8uY2M6IzogRmFpbHVyZQorVmFsdWUgb2Y6IGZhbHNlCisgIEFjdHVhbDogZmFsc2UKK0V4
cGVjdGVkOiB0cnVlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0
LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoK
KyAgMgorICAzCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMm1bPT09PT09PT09PV0g
G1ttUnVubmluZyA3NiB0ZXN0cyBmcm9tIDM0IHRlc3QgY2FzZXMuCisbWzA7MzJtWy0tLS0tLS0t
LS1dIBtbbUdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KK0Zvb0Vudmlyb25tZW50OjpT
ZXRVcCgpIGNhbGxlZC4KK0JhckVudmlyb25tZW50OjpTZXRVcCgpIGNhbGxlZC4KKxtbMDszMm1b
LS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gQURlYXRoVGVzdAorG1swOzMybVsgUlVOICAgICAg
XSAbW21BRGVhdGhUZXN0LlNob3VsZFJ1bkZpcnN0CisbWzA7MzJtWyAgICAgICBPSyBdIBtbbUFE
ZWF0aFRlc3QuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZy
b20gQVR5cGVkRGVhdGhUZXN0LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGludAorG1swOzMybVsgUlVO
ICAgICAgXSAbW21BVHlwZWREZWF0aFRlc3QvMC5TaG91bGRSdW5GaXJzdAorG1swOzMybVsgICAg
ICAgT0sgXSAbW21BVHlwZWREZWF0aFRlc3QvMC5TaG91bGRSdW5GaXJzdAorG1swOzMybVstLS0t
LS0tLS0tXSAbW20xIHRlc3QgZnJvbSBBVHlwZWREZWF0aFRlc3QvMSwgd2hlcmUgVHlwZVBhcmFt
ID0gZG91YmxlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUFUeXBlZERlYXRoVGVzdC8xLlNob3Vs
ZFJ1bkZpcnN0CisbWzA7MzJtWyAgICAgICBPSyBdIBtbbUFUeXBlZERlYXRoVGVzdC8xLlNob3Vs
ZFJ1bkZpcnN0CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIE15L0FUeXBlUGFy
YW1EZWF0aFRlc3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50CisbWzA7MzJtWyBSVU4gICAgICBd
IBtbbU15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMC5TaG91bGRSdW5GaXJzdAorG1swOzMybVsgICAg
ICAgT0sgXSAbW21NeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKKxtbMDsz
Mm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8xLCB3
aGVyZSBUeXBlUGFyYW0gPSBkb3VibGUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttTXkvQVR5cGVQ
YXJhbURlYXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0CisbWzA7MzJtWyAgICAgICBPSyBdIBtbbU15
L0FUeXBlUGFyYW1EZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAorG1swOzMybVstLS0tLS0tLS0t
XSAbW20yIHRlc3RzIGZyb20gUGFzc2luZ1Rlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttUGFz
c2luZ1Rlc3QuUGFzc2luZ1Rlc3QxCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbVBhc3NpbmdUZXN0
LlBhc3NpbmdUZXN0MQorG1swOzMybVsgUlVOICAgICAgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5n
VGVzdDIKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCisb
WzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBOb25mYXRhbEZhaWx1cmVUZXN0Cisb
WzA7MzJtWyBSVU4gICAgICBdIBtbbU5vbmZhdGFsRmFpbHVyZVRlc3QuRXNjYXBlc1N0cmluZ09w
ZXJhbmRzCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBl
cXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIGtHb2xkZW5TdHJpbmcKKyAgICBXaGljaCBpczog
IlwiTGluZSIKKyAgYWN0dWFsCisgICAgV2hpY2ggaXM6ICJhY3R1YWwgXCJzdHJpbmdcIiIKK1N0
YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFp
bHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICBnb2xkZW4KKyAgICBX
aGljaCBpczogIlwiTGluZSIKKyAgYWN0dWFsCisgICAgV2hpY2ggaXM6ICJhY3R1YWwgXCJzdHJp
bmdcIiIKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21O
b25mYXRhbEZhaWx1cmVUZXN0LkVzY2FwZXNTdHJpbmdPcGVyYW5kcworG1swOzMybVsgUlVOICAg
ICAgXSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkRpZmZGb3JMb25nU3RyaW5ncworZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2Ug
dmFsdWVzOgorICBnb2xkZW5fc3RyCisgICAgV2hpY2ggaXM6ICJcIkxpbmVcMCAxXCJcbkxpbmUg
MiIKKyAgIkxpbmUgMiIKK1dpdGggZGlmZjoKK0BAIC0xLDIgQEAKKy1cIkxpbmVcMCAxXCIKKyBM
aW5lIDIKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bU5vbmZhdGFsRmFpbHVyZVRlc3QuRGlmZkZvckxvbmdTdHJpbmdzCisbWzA7MzJtWy0tLS0tLS0t
LS1dIBtbbTMgdGVzdHMgZnJvbSBGYXRhbEZhaWx1cmVUZXN0CisbWzA7MzJtWyBSVU4gICAgICBd
IBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCisoZXhwZWN0aW5n
IGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5j
YzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAg
eAorICAgIFdoaWNoIGlzOiAyCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKKxtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3Rl
ZFN1YnJvdXRpbmUKKyhleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKK2dv
b2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9m
IHRoZXNlIHZhbHVlczoKKyAgMQorICB4CisgICAgV2hpY2ggaXM6IDIKK1N0YWNrIHRyYWNlOiAo
b21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFs
RmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQorG1swOzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZh
aWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZQorKGV4cGVjdGluZyBhIGZhaWx1
cmUgb24gZmFsc2UpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitWYWx1
ZSBvZjogZmFsc2UKKyAgQWN0dWFsOiBmYWxzZQorRXhwZWN0ZWQ6IHRydWUKK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0Lk5v
bmZhdGFsRmFpbHVyZUluU3Vicm91dGluZQorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3Qg
ZnJvbSBMb2dnaW5nVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21Mb2dnaW5nVGVzdC5JbnRl
cmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucworKGV4cGVjdGluZyAyIGZhaWx1cmVzIG9uICgz
KSA+PSAoYVtpXSkpCitpID09IDAKK2kgPT0gMQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6
IzogRmFpbHVyZQorRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA5CitTdGFj
ayB0cmFjZTogKG9taXR0ZWQpCisKK2kgPT0gMgoraSA9PSAzCitnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZz
IDYKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Mb2dn
aW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucworG1swOzMybVstLS0tLS0t
LS0tXSAbW203IHRlc3RzIGZyb20gU0NPUEVEX1RSQUNFVGVzdAorG1swOzMybVsgUlVOICAgICAg
XSAbW21TQ09QRURfVFJBQ0VUZXN0LkFjY2VwdGVkVmFsdWVzCitnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0p1c3QgY2hlY2tpbmcgdGhhdCBhbGwgdGhlc2Ug
dmFsdWVzIHdvcmsgZmluZS4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQt
dGVzdF8uY2M6IzogKG51bGwpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiAxMzM3Citn
b29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBzdGQ6OnN0cmluZworZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogbGl0ZXJhbCBzdHJpbmcKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKwor
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkFjY2VwdGVkVmFsdWVzCisb
WzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMKKyhleHBl
Y3RlZCB0byBmYWlsKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFp
bGVkCitUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNl
LgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzoj
OiBGYWlsdXJlCitGYWlsZWQKK1RoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBo
YXZlIGEgdHJhY2UuCitHb29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
LmNjOiM6IEV4cGVjdGVkIHRyYWNlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRl
c3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlzIGV4
cGVjdGVkLCBhbmQgc2hvdWxkbid0IGhhdmUgYSB0cmFjZS4KK1N0YWNrIHRyYWNlOiAob21pdHRl
ZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lk9iZXlzU2NvcGVz
CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJbkxvb3AKKyhl
eHBlY3RlZCB0byBmYWlsKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQor
RXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAyCisgIG4KKyAgICBXaGljaCBp
czogMQorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBp
ID0gMQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5j
YzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAg
bgorICAgIFdoaWNoIGlzOiAyCitHb29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0
LXRlc3RfLmNjOiM6IGkgPSAyCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAorG1swOzMybVsgUlVOICAg
ICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJyb3V0aW5lCisoZXhwZWN0ZWQgdG8g
ZmFpbCkKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVx
dWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMgorICBuCisgICAgV2hpY2ggaXM6IDEKK0dvb2ds
ZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogbiA9IDEKK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVy
ZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxCisgIG4KKyAgICBXaGlj
aCBpczogMgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzoj
OiBuID0gMgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJblN1YnJvdXRpbmUKKxtbMDszMm1bIFJVTiAgICAgIF0g
G1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZU5lc3RlZAorKGV4cGVjdGVkIHRvIGZhaWwpCitnb29n
bGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0
aGVzZSB2YWx1ZXM6CisgIDEKKyAgbgorICAgIFdoaWNoIGlzOiAyCitHb29nbGUgVGVzdCB0cmFj
ZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IG4gPSAyCitnb29nbGV0ZXN0LW91dHB1
dC10ZXN0Xy5jYzojOiAKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlTmVzdGVkCisbWzA7MzJtWyBSVU4gICAgICBd
IBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVSZXBlYXRlZAorKGV4cGVjdGVkIHRvIGZhaWwpCitn
b29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK1RoaXMgZmFpbHVy
ZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEuCitHb29nbGUg
VGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEEKK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFp
bGVkCitUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBw
b2ludCBBIGFuZCBCLgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0
Xy5jYzojOiBCCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBBCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxl
ZAorVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9p
bnQgQSwgQiwgYW5kIEMuCitHb29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRl
c3RfLmNjOiM6IEMKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEIKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IEEKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitUaGlzIGZhaWx1cmUgaXMgZXhw
ZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQgRC4KK0dvb2ds
ZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRAorZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogQgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogQQor
U3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9U
UkFDRVRlc3QuQ2FuQmVSZXBlYXRlZAorG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJB
Q0VUZXN0LldvcmtzQ29uY3VycmVudGx5CisoZXhwZWN0aW5nIDYgZmFpbHVyZXMpCitnb29nbGV0
ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUg
IzEgKGluIHRocmVhZCBCLCBvbmx5IHRyYWNlIEIgYWxpdmUpLgorR29vZ2xlIFRlc3QgdHJhY2U6
Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBUcmFjZSBCCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAor
RXhwZWN0ZWQgZmFpbHVyZSAjMiAoaW4gdGhyZWFkIEEsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUp
LgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBUcmFj
ZSBBCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNj
OiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMyAoaW4gdGhyZWFkIEIsIHRy
YWNlIEEgJiBCIGJvdGggYWxpdmUpLgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91
dHB1dC10ZXN0Xy5jYzojOiBUcmFjZSBCCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVy
ZSAjNCAoaW4gdGhyZWFkIEIsIG9ubHkgdHJhY2UgQSBhbGl2ZSkuCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAor
RXhwZWN0ZWQgZmFpbHVyZSAjNSAoaW4gdGhyZWFkIEEsIG9ubHkgdHJhY2UgQSBhbGl2ZSkuCitH
b29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IFRyYWNlIEEK
K1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izog
RmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICM2IChpbiB0aHJlYWQgQSwgbm8gdHJh
Y2UgYWxpdmUpLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBd
IBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NDb25jdXJyZW50bHkKKxtbMDszMm1bLS0tLS0tLS0t
LV0gG1ttMSB0ZXN0IGZyb20gU2NvcGVkVHJhY2VUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtb
bVNjb3BlZFRyYWNlVGVzdC5XaXRoRXhwbGljaXRGaWxlQW5kTGluZQorZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitDaGVjayB0aGF0IHRoZSB0cmFjZSBpcyBh
dHRhY2hlZCB0byBhIHBhcnRpY3VsYXIgbG9jYXRpb24uCitHb29nbGUgVGVzdCB0cmFjZToKK2V4
cGxpY2l0X2ZpbGUuY2M6MTIzOiBleHBlY3RlZCB0cmFjZSBtZXNzYWdlCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU2NvcGVkVHJhY2VUZXN0LldpdGhF
eHBsaWNpdEZpbGVBbmRMaW5lCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIE5v
bkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdAorG1swOzMybVsgUlVOICAgICAg
XSAbW21Ob25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29u
c3RydWN0b3IKKyhleHBlY3RpbmcgNSBmYWlsdXJlcykKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3Qg
Zml4dHVyZSBjJ3Rvci4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBT
ZXRVcCgpLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0
Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0
IGJvZHkuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gVGVhckRvd24u
CitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6
IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjNSwgaW4gdGhlIHRlc3QgZml4dHVy
ZSBkJ3Rvci4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21Ob25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3Ry
dWN0b3IKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gRmF0YWxGYWlsdXJlSW5G
aXh0dXJlQ29uc3RydWN0b3JUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVy
ZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgorKGV4cGVjdGlu
ZyAyIGZhaWx1cmVzKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFp
bGVkCitFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGMndG9yLgorU3Rh
Y2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWls
dXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0
b3IuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0
YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCisb
WzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBU
ZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZh
aWx1cmVJblNldFVwCisoZXhwZWN0aW5nIDQgZmFpbHVyZXMpCitnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVw
KCkuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNj
OiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZnVu
Y3Rpb24uCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gVGVhckRvd24o
KS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6
IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICM0LCBpbiB0aGUgdGVzdCBmaXh0
dXJlIGQndG9yLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBd
IBtbbU5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCisbWzA7MzJtWy0t
LS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0CisbWzA7MzJt
WyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCiso
ZXhwZWN0aW5nIDMgZmFpbHVyZXMpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWls
dXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCkuCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0Zh
aWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4KK1N0YWNrIHRyYWNlOiAo
b21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVk
CitFeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgorU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUlu
U2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBm
cm9tIEFkZEZhaWx1cmVBdFRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttQWRkRmFpbHVyZUF0
VGVzdC5NZXNzYWdlQ29udGFpbnNTcGVjaWZpZWRGaWxlQW5kTGluZU51bWJlcgorZm9vLmNjOjQy
OiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgaW4gZm9vLmNjCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttQWRkRmFpbHVyZUF0VGVzdC5N
ZXNzYWdlQ29udGFpbnNTcGVjaWZpZWRGaWxlQW5kTGluZU51bWJlcgorG1swOzMybVstLS0tLS0t
LS0tXSAbW200IHRlc3RzIGZyb20gTWl4ZWRVcFRlc3RDYXNlVGVzdAorG1swOzMybVsgUlVOICAg
ICAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LkZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28KKxtb
MDszMm1bICAgICAgIE9LIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5GaXJzdFRlc3RGcm9tTmFt
ZXNwYWNlRm9vCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuU2Vj
b25kVGVzdEZyb21OYW1lc3BhY2VGb28KKxtbMDszMm1bICAgICAgIE9LIF0gG1ttTWl4ZWRVcFRl
c3RDYXNlVGVzdC5TZWNvbmRUZXN0RnJvbU5hbWVzcGFjZUZvbworG1swOzMybVsgUlVOICAgICAg
XSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsCitndGVzdC5jYzojOiBGYWls
dXJlCitGYWlsZWQKK0FsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhl
IHNhbWUgdGVzdCBmaXh0dXJlCitjbGFzcy4gIEhvd2V2ZXIsIGluIHRlc3QgY2FzZSBNaXhlZFVw
VGVzdENhc2VUZXN0LAoreW91IGRlZmluZWQgdGVzdCBGaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9v
IGFuZCB0ZXN0IFRoaXNTaG91bGRGYWlsCit1c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVy
ZSBjbGFzc2VzLiAgVGhpcyBjYW4gaGFwcGVuIGlmCit0aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20g
ZGlmZmVyZW50IG5hbWVzcGFjZXMgb3IgdHJhbnNsYXRpb24KK3VuaXRzIGFuZCBoYXZlIHRoZSBz
YW1lIG5hbWUuICBZb3Ugc2hvdWxkIHByb2JhYmx5IHJlbmFtZSBvbmUKK29mIHRoZSBjbGFzc2Vz
IHRvIHB1dCB0aGUgdGVzdHMgaW50byBkaWZmZXJlbnQgdGVzdCBjYXNlcy4KK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0
LlRoaXNTaG91bGRGYWlsCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRl
c3QuVGhpc1Nob3VsZEZhaWxUb28KK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorQWxsIHRl
c3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUK
K2NsYXNzLiAgSG93ZXZlciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVRlc3QsCit5b3Ug
ZGVmaW5lZCB0ZXN0IEZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28gYW5kIHRlc3QgVGhpc1Nob3Vs
ZEZhaWxUb28KK3VzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlz
IGNhbiBoYXBwZW4gaWYKK3RoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNw
YWNlcyBvciB0cmFuc2xhdGlvbgordW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBz
aG91bGQgcHJvYmFibHkgcmVuYW1lIG9uZQorb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0
cyBpbnRvIGRpZmZlcmVudCB0ZXN0IGNhc2VzLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisb
WzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWxU
b28KKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIE1peGVkVXBUZXN0Q2FzZVdp
dGhTYW1lVGVzdE5hbWVUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2Fz
ZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWls
CisbWzA7MzJtWyAgICAgICBPSyBdIBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVU
ZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCisbWzA7MzJtWyBSVU4gICAg
ICBdIBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RX
aXRoVGhpc05hbWVTaG91bGRGYWlsCitndGVzdC5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0FsbCB0
ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJl
CitjbGFzcy4gIEhvd2V2ZXIsIGluIHRlc3QgY2FzZSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRl
c3ROYW1lVGVzdCwKK3lvdSBkZWZpbmVkIHRlc3QgVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNo
b3VsZEZhaWwgYW5kIHRlc3QgVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKK3Vz
aW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4g
aWYKK3RoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFu
c2xhdGlvbgordW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFi
bHkgcmVuYW1lIG9uZQorb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZl
cmVudCB0ZXN0IGNhc2VzLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRl
c3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMg
ZnJvbSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UKKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2lu
Z1RFU1RfRgorG1swOzMybVsgICAgICAgT0sgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2Ft
ZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVRF
U1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUQW5kU2hv
dWxkRmFpbAorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRmFpbGVkCitBbGwgdGVzdHMgaW4gdGhlIHNh
bWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQorY2xhc3MsIHNvIG1p
eGluZyBURVNUX0YgYW5kIFRFU1QgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIGlzCitpbGxlZ2FsLiAg
SW4gdGVzdCBjYXNlIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSwKK3Rlc3Qg
RGVmaW5lZFVzaW5nVEVTVF9GIGlzIGRlZmluZWQgdXNpbmcgVEVTVF9GIGJ1dAordGVzdCBEZWZp
bmVkVXNpbmdURVNUQW5kU2hvdWxkRmFpbCBpcyBkZWZpbmVkIHVzaW5nIFRFU1QuICBZb3UgcHJv
YmFibHkKK3dhbnQgdG8gY2hhbmdlIHRoZSBURVNUIHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRvIGFu
b3RoZXIgdGVzdAorY2FzZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVz
aW5nVEVTVEFuZFNob3VsZEZhaWwKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9t
IFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZQorG1swOzMybVsgUlVOICAgICAg
XSAbW21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVT
VAorG1swOzMybVsgICAgICAgT0sgXSAbW21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0
X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVAorG1swOzMybVsgUlVOICAgICAgXSAbW21URVNUX2JlZm9y
ZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFp
bAorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRmFpbGVkCitBbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVz
dCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQorY2xhc3MsIHNvIG1peGluZyBU
RVNUX0YgYW5kIFRFU1QgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIGlzCitpbGxlZ2FsLiAgSW4gdGVz
dCBjYXNlIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZSwKK3Rlc3QgRGVmaW5l
ZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbCBpcyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKK3Rl
c3QgRGVmaW5lZFVzaW5nVEVTVCBpcyBkZWZpbmVkIHVzaW5nIFRFU1QuICBZb3UgcHJvYmFibHkK
K3dhbnQgdG8gY2hhbmdlIHRoZSBURVNUIHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRvIGFub3RoZXIg
dGVzdAorY2FzZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVT
VF9GQW5kU2hvdWxkRmFpbAorG1swOzMybVstLS0tLS0tLS0tXSAbW204IHRlc3RzIGZyb20gRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcworG1swOzMybVsgICAg
ICAgT0sgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZh
cmlhYmxlcworG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LkNhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVzCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVj
dE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxWYXJpYWJsZXMKKxtbMDszMm1b
IFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1doZW5UaGVy
ZUlzT25lTm9uZmF0YWxGYWlsdXJlCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdE5vbmZh
dGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQorG1sw
OzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRo
ZXJlSXNOb05vbmZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyBhIGZhaWx1cmUpCitndGVzdC5jYzoj
OiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDAgZmFp
bHVyZXMKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21F
eHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb05vbmZhdGFsRmFpbHVy
ZQorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxz
V2hlblRoZXJlQXJlVHdvTm9uZmF0YWxGYWlsdXJlcworKGV4cGVjdGluZyBhIGZhaWx1cmUpCitn
dGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1
YWw6IDIgZmFpbHVyZXMKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IE5vbi1mYXRhbCBm
YWlsdXJlOgorRmFpbGVkCitFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSAxLgorU3RhY2sgdHJh
Y2U6IChvbWl0dGVkKQorCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IE5vbi1mYXRh
bCBmYWlsdXJlOgorRmFpbGVkCitFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSAyLgorU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJl
VHdvTm9uZmF0YWxGYWlsdXJlcworG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRh
bEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKKyhleHBlY3Rpbmcg
YSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZh
aWx1cmUKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmF0YWwgZmFp
bHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21p
dHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWls
dXJlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFp
bHNXaGVuU3RhdGVtZW50UmV0dXJucworKGV4cGVjdGluZyBhIGZhaWx1cmUpCitndGVzdC5jYzoj
OiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDAgZmFp
bHVyZXMKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21F
eHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKKxtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0
ZW1lbnRUaHJvd3MKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQor
RXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZhaWx1cmVzCitTdGFj
ayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKKxtbMDszMm1bLS0tLS0tLS0t
LV0gG1ttOCB0ZXN0cyBmcm9tIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QKKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJs
ZXMKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZl
cmVuY2VHbG9iYWxWYXJpYWJsZXMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFN0YXRpY1ZhcmlhYmxlcworG1swOzMybVsgICAg
ICAgT0sgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsU3RhdGlj
VmFyaWFibGVzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qu
U3VjY2VlZHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQorG1swOzMybVsgICAgICAgT0sgXSAb
W21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1
cmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1do
ZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6
IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDAgZmFpbHVy
ZXMKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBl
Y3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZQorG1swOzMy
bVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJl
VHdvRmF0YWxGYWlsdXJlcworKGV4cGVjdGluZyBhIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWls
dXJlCitFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCisgIEFjdHVhbDogMiBmYWlsdXJlcworZ29v
Z2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0
ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitnb29nbGV0ZXN0
LW91dHB1dC10ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgorRmFpbGVkCitFeHBlY3RlZCBmYXRh
bCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21p
dHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZh
aWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcworG1swOzMybVsgUlVOICAgICAgXSAbW21F
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUK
KyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEg
ZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBO
b24tZmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCitT
dGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJ
c09uZU5vbmZhdGFsRmFpbHVyZQorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKKyhleHBlY3RpbmcgYSBmYWlsdXJl
KQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1
YWw6IDAgZmFpbHVyZXMKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMK
KxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5T
dGF0ZW1lbnRUaHJvd3MKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVy
ZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDAgZmFpbHVyZXMKK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cworG1swOzMybVstLS0tLS0tLS0tXSAb
W20yIHRlc3RzIGZyb20gVHlwZWRUZXN0LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGludAorG1swOzMy
bVsgUlVOICAgICAgXSAbW21UeXBlZFRlc3QvMC5TdWNjZXNzCisbWzA7MzJtWyAgICAgICBPSyBd
IBtbbVR5cGVkVGVzdC8wLlN1Y2Nlc3MKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVHlwZWRUZXN0
LzAuRmFpbHVyZQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0
ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxCisgIFR5cGVQYXJhbSgpCisgICAgV2hp
Y2ggaXM6IDAKK0V4cGVjdGVkIGZhaWx1cmUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1sw
OzMxbVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3QvMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0g
PSBpbnQKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFR5cGVkVGVzdFdpdGhO
YW1lcy9jaGFyXzAsIHdoZXJlIFR5cGVQYXJhbSA9IGNoYXIKKxtbMDszMm1bIFJVTiAgICAgIF0g
G1ttVHlwZWRUZXN0V2l0aE5hbWVzL2NoYXJfMC5TdWNjZXNzCisbWzA7MzJtWyAgICAgICBPSyBd
IBtbbVR5cGVkVGVzdFdpdGhOYW1lcy9jaGFyXzAuU3VjY2VzcworG1swOzMybVsgUlVOICAgICAg
XSAbW21UeXBlZFRlc3RXaXRoTmFtZXMvY2hhcl8wLkZhaWx1cmUKK2dvb2dsZXRlc3Qtb3V0cHV0
LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisb
WzA7MzFtWyAgRkFJTEVEICBdIBtbbVR5cGVkVGVzdFdpdGhOYW1lcy9jaGFyXzAuRmFpbHVyZSwg
d2hlcmUgVHlwZVBhcmFtID0gY2hhcgorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZy
b20gVHlwZWRUZXN0V2l0aE5hbWVzL2ludF8xLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVzL2ludF8xLlN1Y2Nlc3MKKxtbMDsz
Mm1bICAgICAgIE9LIF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVzL2ludF8xLlN1Y2Nlc3MKKxtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVzL2ludF8xLkZhaWx1cmUKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorU3RhY2sgdHJhY2U6IChv
bWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVR5cGVkVGVzdFdpdGhOYW1lcy9pbnRf
MS5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1tt
MiB0ZXN0cyBmcm9tIFVuc2lnbmVkL1R5cGVkVGVzdFAvMCwgd2hlcmUgVHlwZVBhcmFtID0gdW5z
aWduZWQgY2hhcgorG1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAu
U3VjY2VzcworG1swOzMybVsgICAgICAgT0sgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuU3Vj
Y2VzcworG1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVy
ZQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxp
dHkgb2YgdGhlc2UgdmFsdWVzOgorICAxVQorICAgIFdoaWNoIGlzOiAxCisgIFR5cGVQYXJhbSgp
CisgICAgV2hpY2ggaXM6ICdcMCcKK0V4cGVjdGVkIGZhaWx1cmUKK1N0YWNrIHRyYWNlOiAob21p
dHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFp
bHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgorG1swOzMybVstLS0tLS0tLS0t
XSAbW20yIHRlc3RzIGZyb20gVW5zaWduZWQvVHlwZWRUZXN0UC8xLCB3aGVyZSBUeXBlUGFyYW0g
PSB1bnNpZ25lZCBpbnQKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0
UC8xLlN1Y2Nlc3MKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8x
LlN1Y2Nlc3MKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZh
aWx1cmUKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVx
dWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMVUKKyAgICBXaGljaCBpczogMQorICBUeXBlUGFy
YW0oKQorICAgIFdoaWNoIGlzOiAwCitFeHBlY3RlZCBmYWlsdXJlCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZh
aWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAorG1swOzMybVstLS0tLS0tLS0t
XSAbW20yIHRlc3RzIGZyb20gVW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRf
Y2hhcl8wLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBjaGFyCisbWzA7MzJtWyBSVU4gICAg
ICBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkX2NoYXJfMC5TdWNj
ZXNzCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQ
L3Vuc2lnbmVkX2NoYXJfMC5TdWNjZXNzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVk
Q3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkX2NoYXJfMC5GYWlsdXJlCitnb29nbGV0ZXN0
LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2
YWx1ZXM6CisgIDFVCisgICAgV2hpY2ggaXM6IDEKKyAgVHlwZVBhcmFtKCkKKyAgICBXaGljaCBp
czogJ1wwJworRXhwZWN0ZWQgZmFpbHVyZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVk
X2NoYXJfMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBjaGFyCisbWzA7MzJt
Wy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBVbnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0
UC91bnNpZ25lZF9pbnRfMSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50CisbWzA7MzJt
WyBSVU4gICAgICBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkX2lu
dF8xLlN1Y2Nlc3MKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttVW5zaWduZWRDdXN0b21OYW1lL1R5
cGVkVGVzdFAvdW5zaWduZWRfaW50XzEuU3VjY2VzcworG1swOzMybVsgUlVOICAgICAgXSAbW21V
bnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZF9pbnRfMS5GYWlsdXJlCitnb29n
bGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0
aGVzZSB2YWx1ZXM6CisgIDFVCisgICAgV2hpY2ggaXM6IDEKKyAgVHlwZVBhcmFtKCkKKyAgICBX
aGljaCBpczogMAorRXhwZWN0ZWQgZmFpbHVyZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisb
WzA7MzFtWyAgRkFJTEVEICBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2ln
bmVkX2ludF8xLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAorG1swOzMy
bVstLS0tLS0tLS0tXSAbW200IHRlc3RzIGZyb20gRXhwZWN0RmFpbHVyZVRlc3QKKxtbMDszMm1b
IFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCisoZXhw
ZWN0aW5nIDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFs
IGZhaWx1cmUKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogU3VjY2Vz
czoKK1N1Y2NlZWRlZAorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAo
b21pdHRlZCkKKworKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitF
eHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRl
c3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgorRmFpbGVkCitFeHBlY3RlZCBub24tZmF0YWwg
ZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0
ZWQpCisKKyhleHBlY3RpbmcgMSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0
ZWQ6IDEgZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUg
ZXhwZWN0ZWQuIgorICBBY3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYXRh
bCBmYWlsdXJlOgorRmFpbGVkCitFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKKxtbMDszMm1bIFJV
TiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCisoZXhw
ZWN0aW5nIDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1m
YXRhbCBmYWlsdXJlCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IFN1
Y2Nlc3M6CitTdWNjZWVkZWQKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKKyhleHBlY3RpbmcgMSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVy
ZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1v
dXRwdXQtdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwg
ZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0
ZWQpCisKKyhleHBlY3RpbmcgMSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0
ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBub24tZmF0YWwg
ZmFpbHVyZS4iCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IE5vbi1m
YXRhbCBmYWlsdXJlOgorRmFpbGVkCitFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCisb
WzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVy
ZU9uQWxsVGhyZWFkcworKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJl
CitFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0
LXRlc3RfLmNjOiM6IFN1Y2Nlc3M6CitTdWNjZWVkZWQKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkK
KworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKyhleHBlY3RpbmcgMSBmYWlsdXJlKQorZ3Rl
c3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6Citn
b29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKK0ZhaWxlZAor
RXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKwor
U3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisoZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0ZXN0LmNj
OiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBv
dGhlciBmYXRhbCBmYWlsdXJlIGV4cGVjdGVkLiIKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwgZmFp
bHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQp
CisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxG
YWlsdXJlT25BbGxUaHJlYWRzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVU
ZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcworKGV4cGVjdGluZyAxIGZhaWx1
cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQor
ICBBY3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBTdWNjZXNzOgorU3VjY2Vl
ZGVkCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQor
CisoZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAx
IG5vbi1mYXRhbCBmYWlsdXJlCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNj
OiM6IEZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFj
ayB0cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisoZXhwZWN0
aW5nIDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRh
bCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1cmUuIgorICBB
Y3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToK
K0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0
ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcworG1sw
OzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRz
VGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0
LkV4cGVjdEZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyAyIGZhaWx1cmVzKQorZ29vZ2xldGVzdC1v
dXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYXRhbCBmYWlsdXJl
LgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3Rl
ZDogMSBmYXRhbCBmYWlsdXJlCisgIEFjdHVhbDogMCBmYWlsdXJlcworU3RhY2sgdHJhY2U6IChv
bWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFk
c1Rlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZh
aWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCisoZXhwZWN0aW5nIDIg
ZmFpbHVyZXMpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQK
K0V4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitn
dGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1
YWw6IDAgZmFpbHVyZXMKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVy
ZQorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBTY29wZWRGYWtlVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlclRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttU2NvcGVkRmFrZVRlc3RQ
YXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCisoZXhwZWN0
aW5nIDIgZmFpbHVyZXMpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitG
YWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisK
K2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQg
bm9uLWZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LkludGVyY2Vw
dE9ubHlDdXJyZW50VGhyZWFkCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIFBy
aW50aW5nRmFpbGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1UZXN0CisbWzA7MzJtWyBSVU4gICAgICBd
IBtbbVByaW50aW5nRmFpbGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1UZXN0LkZhaWxzLzAKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRo
ZXNlIHZhbHVlczoKKyAgMQorICBHZXRQYXJhbSgpCisgICAgV2hpY2ggaXM6IDIKK1N0YWNrIHRy
YWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21QcmludGluZ0ZhaWxpbmdQ
YXJhbXMvRmFpbGluZ1BhcmFtVGVzdC5GYWlscy8wLCB3aGVyZSBHZXRQYXJhbSgpID0gMgorG1sw
OzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gUHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVz
dAorG1swOzMybVsgUlVOICAgICAgXSAbW21QcmludGluZ1N0cmluZ3MvUGFyYW1UZXN0LlN1Y2Nl
c3MvYQorG1swOzMybVsgICAgICAgT0sgXSAbW21QcmludGluZ1N0cmluZ3MvUGFyYW1UZXN0LlN1
Y2Nlc3MvYQorG1swOzMybVsgUlVOICAgICAgXSAbW21QcmludGluZ1N0cmluZ3MvUGFyYW1UZXN0
LkZhaWx1cmUvYQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0
ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAiYiIKKyAgR2V0UGFyYW0oKQorICAgIFdo
aWNoIGlzOiAiYSIKK0V4cGVjdGVkIGZhaWx1cmUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKwor
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21QcmludGluZ1N0cmluZ3MvUGFyYW1UZXN0LkZhaWx1cmUv
YSwgd2hlcmUgR2V0UGFyYW0oKSA9ICJhIgorG1swOzMybVstLS0tLS0tLS0tXSAbW21HbG9iYWwg
dGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KK0JhckVudmlyb25tZW50OjpUZWFyRG93bigpIGNh
bGxlZC4KK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhw
ZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK0Zvb0Vu
dmlyb25tZW50OjpUZWFyRG93bigpIGNhbGxlZC4KK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNj
OiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworG1swOzMybVs9PT09PT09PT09XSAbW203NiB0ZXN0cyBmcm9tIDM0IHRl
c3QgY2FzZXMgcmFuLgorG1swOzMybVsgIFBBU1NFRCAgXSAbW20yNiB0ZXN0cy4KKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttNTAgdGVzdHMsIGxpc3RlZCBiZWxvdzoKKxtbMDszMW1bICBGQUlMRUQg
IF0gG1ttTm9uZmF0YWxGYWlsdXJlVGVzdC5Fc2NhcGVzU3RyaW5nT3BlcmFuZHMKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttTm9uZmF0YWxGYWlsdXJlVGVzdC5EaWZmRm9yTG9uZ1N0cmluZ3MKKxtb
MDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJv
dXRpbmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1
cmVJbk5lc3RlZFN1YnJvdXRpbmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJl
VGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
TG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5BY2NlcHRlZFZhbHVlcworG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lk9iZXlzU2NvcGVzCisbWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJbkxvb3AKKxtbMDszMW1bICBGQUlMRUQgIF0g
G1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGluZQorG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlTmVzdGVkCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVSZXBlYXRlZAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21T
Q09QRURfVFJBQ0VUZXN0LldvcmtzQ29uY3VycmVudGx5CisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bVNjb3BlZFRyYWNlVGVzdC5XaXRoRXhwbGljaXRGaWxlQW5kTGluZQorG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUlu
Q29uc3RydWN0b3IKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlSW5GaXh0dXJl
Q29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCisbWzA7MzFtWyAgRkFJTEVEICBd
IBtbbU5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbUFkZEZhaWx1cmVBdFRlc3QuTWVzc2FnZUNvbnRhaW5zU3BlY2lm
aWVkRmlsZUFuZExpbmVOdW1iZXIKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RD
YXNlVGVzdC5UaGlzU2hvdWxkRmFpbAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVz
dENhc2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVk
VXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVT
aG91bGRGYWlsCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9z
YW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxkRmFpbAorG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVz
aW5nVEVTVF9GQW5kU2hvdWxkRmFpbAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb05vbmZhdGFsRmFpbHVyZQorG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJl
QXJlVHdvTm9uZmF0YWxGYWlsdXJlcworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1l
bnRSZXR1cm5zCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRl
c3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVj
dEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlCisbWzA7MzFt
WyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVU
d29GYXRhbEZhaWx1cmVzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVy
ZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQorG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5T
dGF0ZW1lbnRUaHJvd3MKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVHlwZWRUZXN0LzAuRmFpbHVy
ZSwgd2hlcmUgVHlwZVBhcmFtID0gaW50CisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVR5cGVkVGVz
dFdpdGhOYW1lcy9jaGFyXzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gY2hhcgorG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3RXaXRoTmFtZXMvaW50XzEuRmFpbHVyZSwgd2hlcmUg
VHlwZVBhcmFtID0gaW50CisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVz
dFAvMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBjaGFyCisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlLCB3aGVyZSBUeXBlUGFy
YW0gPSB1bnNpZ25lZCBpbnQKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWRDdXN0b21O
YW1lL1R5cGVkVGVzdFAvdW5zaWduZWRfY2hhcl8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9
IHVuc2lnbmVkIGNoYXIKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWRDdXN0b21OYW1l
L1R5cGVkVGVzdFAvdW5zaWduZWRfaW50XzEuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gdW5z
aWduZWQgaW50CisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVj
dEZhdGFsRmFpbHVyZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5F
eHBlY3ROb25GYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVy
ZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCisbWzA7MzFtWyAgRkFJTEVEICBd
IBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwor
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVj
dEZhdGFsRmFpbHVyZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRo
cmVhZHNUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21T
Y29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3QuSW50ZXJjZXB0T25seUN1cnJlbnRU
aHJlYWQKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttUHJpbnRpbmdGYWlsaW5nUGFyYW1zL0ZhaWxp
bmdQYXJhbVRlc3QuRmFpbHMvMCwgd2hlcmUgR2V0UGFyYW0oKSA9IDIKKxtbMDszMW1bICBGQUlM
RUQgIF0gG1ttUHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5GYWlsdXJlL2EsIHdoZXJlIEdldFBh
cmFtKCkgPSAiYSIKKworNTAgRkFJTEVEIFRFU1RTCisbWzA7MzNtICBZT1UgSEFWRSAxIERJU0FC
TEVEIFRFU1QKKworG1ttTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gRmF0YWxGYWlsdXJlVGVz
dC4qOkxvZ2dpbmdUZXN0LioKK1s9PT09PT09PT09XSBSdW5uaW5nIDQgdGVzdHMgZnJvbSAyIHRl
c3QgY2FzZXMuCitbLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgor
Wy0tLS0tLS0tLS1dIDMgdGVzdHMgZnJvbSBGYXRhbEZhaWx1cmVUZXN0CitbIFJVTiAgICAgIF0g
RmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKKyhleHBlY3RpbmcgYSBm
YWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6
IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICB4Cisg
ICAgV2hpY2ggaXM6IDIKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworWyAgRkFJTEVEICBdIEZh
dGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lICg/IG1zKQorWyBSVU4gICAg
ICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCisoZXhw
ZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCitnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6Cisg
IDEKKyAgeAorICAgIFdoaWNoIGlzOiAyCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK1sgIEZB
SUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZSAo
PyBtcykKK1sgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vi
cm91dGluZQorKGV4cGVjdGluZyBhIGZhaWx1cmUgb24gZmFsc2UpCitnb29nbGV0ZXN0LW91dHB1
dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitWYWx1ZSBvZjogZmFsc2UKKyAgQWN0dWFsOiBmYWxzZQor
RXhwZWN0ZWQ6IHRydWUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworWyAgRkFJTEVEICBdIEZh
dGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lICg/IG1zKQorWy0tLS0t
LS0tLS1dIDMgdGVzdHMgZnJvbSBGYXRhbEZhaWx1cmVUZXN0ICg/IG1zIHRvdGFsKQorCitbLS0t
LS0tLS0tLV0gMSB0ZXN0IGZyb20gTG9nZ2luZ1Rlc3QKK1sgUlVOICAgICAgXSBMb2dnaW5nVGVz
dC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucworKGV4cGVjdGluZyAyIGZhaWx1cmVz
IG9uICgzKSA+PSAoYVtpXSkpCitpID09IDAKK2kgPT0gMQorZ29vZ2xldGVzdC1vdXRwdXQtdGVz
dF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA5
CitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2kgPT0gMgoraSA9PSAzCitnb29nbGV0ZXN0LW91
dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFs
OiAzIHZzIDYKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworWyAgRkFJTEVEICBdIExvZ2dpbmdU
ZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zICg/IG1zKQorWy0tLS0tLS0tLS1d
IDEgdGVzdCBmcm9tIExvZ2dpbmdUZXN0ICg/IG1zIHRvdGFsKQorCitbLS0tLS0tLS0tLV0gR2xv
YmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCitbPT09PT09PT09PV0gNCB0ZXN0cyBmcm9t
IDIgdGVzdCBjYXNlcyByYW4uICg/IG1zIHRvdGFsKQorWyAgUEFTU0VEICBdIDAgdGVzdHMuCitb
ICBGQUlMRUQgIF0gNCB0ZXN0cywgbGlzdGVkIGJlbG93OgorWyAgRkFJTEVEICBdIEZhdGFsRmFp
bHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCitbICBGQUlMRUQgIF0gRmF0YWxGYWls
dXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKK1sgIEZBSUxFRCAgXSBGYXRh
bEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZQorWyAgRkFJTEVEICBdIExv
Z2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCisKKyA0IEZBSUxFRCBU
RVNUUworTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gKkRJU0FCTEVEXyoKK1s9PT09PT09PT09
XSBSdW5uaW5nIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlLgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0
ZXN0IGVudmlyb25tZW50IHNldC11cC4KK1stLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBEaXNhYmxl
ZFRlc3RzV2FybmluZ1Rlc3QKK1sgUlVOICAgICAgXSBEaXNhYmxlZFRlc3RzV2FybmluZ1Rlc3Qu
RElTQUJMRURfQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnU3VwcHJlc3Nlc1dhcm5pbmcKK1sgICAg
ICAgT0sgXSBEaXNhYmxlZFRlc3RzV2FybmluZ1Rlc3QuRElTQUJMRURfQWxzb1J1bkRpc2FibGVk
VGVzdHNGbGFnU3VwcHJlc3Nlc1dhcm5pbmcKK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZp
cm9ubWVudCB0ZWFyLWRvd24KK1s9PT09PT09PT09XSAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZSBy
YW4uCitbICBQQVNTRUQgIF0gMSB0ZXN0LgorTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gUGFz
c2luZ1Rlc3QuKgorTm90ZTogVGhpcyBpcyB0ZXN0IHNoYXJkIDIgb2YgMi4KK1s9PT09PT09PT09
XSBSdW5uaW5nIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlLgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0
ZXN0IGVudmlyb25tZW50IHNldC11cC4KK1stLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBQYXNzaW5n
VGVzdAorWyBSVU4gICAgICBdIFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgorWyAgICAgICBPSyBd
IFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmly
b25tZW50IHRlYXItZG93bgorWz09PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlIHJh
bi4KK1sgIFBBU1NFRCAgXSAxIHRlc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQ2OWUzNTNh
MTllMzY5NDY1MzNiZjVmN2UwYTJjOTI0NmY3ZGNlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1vdXRwdXQtdGVzdC5weQpAQCAtMCww
ICsxLDM0NyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA4LCBH
b29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
IiIiVGVzdHMgdGhlIHRleHQgb3V0cHV0IG9mIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2lu
ZyBGcmFtZXdvcmsuCisKK1RvIHVwZGF0ZSB0aGUgZ29sZGVuIGZpbGU6Citnb29nbGV0ZXN0X291
dHB1dF90ZXN0LnB5IC0tYnVpbGRfZGlyPUJVSUxEL0RJUiAtLWdlbmdvbGRlbgord2hlcmUgQlVJ
TEQvRElSIGNvbnRhaW5zIHRoZSBidWlsdCBnb29nbGV0ZXN0LW91dHB1dC10ZXN0XyBmaWxlLgor
Z29vZ2xldGVzdF9vdXRwdXRfdGVzdC5weSAtLWdlbmdvbGRlbgorZ29vZ2xldGVzdF9vdXRwdXRf
dGVzdC5weQorIiIiCisKK2ltcG9ydCBkaWZmbGliCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1w
b3J0IHN5cworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworCisjIFRoZSBmbGFnIGZvciBnZW5l
cmF0aW5nIHRoZSBnb2xkZW4gZmlsZQorR0VOR09MREVOX0ZMQUcgPSAnLS1nZW5nb2xkZW4nCitD
QVRDSF9FWENFUFRJT05TX0VOVl9WQVJfTkFNRSA9ICdHVEVTVF9DQVRDSF9FWENFUFRJT05TJwor
CisjIFRoZSBmbGFnIGluZGljYXRpbmcgc3RhY2t0cmFjZXMgYXJlIG5vdCBzdXBwb3J0ZWQKK05P
X1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFHID0gJy0tbm9fc3RhY2t0cmFjZV9zdXBwb3J0JworCitJ
U19MSU5VWCA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBhbmQgb3MudW5hbWUoKVswXSA9PSAnTGludXgn
CitJU19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCisKKyMgRklYTUU6IHJlbW92ZSB0aGUgX2xp
biBzdWZmaXguCitHT0xERU5fTkFNRSA9ICdnb29nbGV0ZXN0LW91dHB1dC10ZXN0LWdvbGRlbi1s
aW4udHh0JworCitQUk9HUkFNX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRh
YmxlUGF0aCgnZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8nKQorCisjIEF0IGxlYXN0IG9uZSBjb21t
YW5kIHdlIGV4ZXJjaXNlIG11c3Qgbm90IGhhdmUgdGhlCisjICdpbnRlcm5hbF9za2lwX2Vudmly
b25tZW50X2FuZF9hZF9ob2NfdGVzdHMnIGFyZ3VtZW50LgorQ09NTUFORF9MSVNUX1RFU1RTID0g
KHt9LCBbUFJPR1JBTV9QQVRILCAnLS1ndGVzdF9saXN0X3Rlc3RzJ10pCitDT01NQU5EX1dJVEhf
Q09MT1IgPSAoe30sIFtQUk9HUkFNX1BBVEgsICctLWd0ZXN0X2NvbG9yPXllcyddKQorQ09NTUFO
RF9XSVRIX1RJTUUgPSAoe30sIFtQUk9HUkFNX1BBVEgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICctLWd0ZXN0X3ByaW50X3RpbWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50
ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgJy0tZ3Rlc3RfZmlsdGVyPUZhdGFsRmFpbHVyZVRlc3QuKjpMb2dnaW5nVGVz
dC4qJ10pCitDT01NQU5EX1dJVEhfRElTQUJMRUQgPSAoCisgICAge30sIFtQUk9HUkFNX1BBVEgs
CisgICAgICAgICAnLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cycsCisgICAgICAgICAn
aW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzJywKKyAgICAgICAgICct
LWd0ZXN0X2ZpbHRlcj0qRElTQUJMRURfKiddKQorQ09NTUFORF9XSVRIX1NIQVJESU5HID0gKAor
ICAgIHsnR1RFU1RfU0hBUkRfSU5ERVgnOiAnMScsICdHVEVTVF9UT1RBTF9TSEFSRFMnOiAnMid9
LAorICAgIFtQUk9HUkFNX1BBVEgsCisgICAgICdpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2Fu
ZF9hZF9ob2NfdGVzdHMnLAorICAgICAnLS1ndGVzdF9maWx0ZXI9UGFzc2luZ1Rlc3QuKiddKQor
CitHT0xERU5fUEFUSCA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFNvdXJjZURp
cigpLCBHT0xERU5fTkFNRSkKKworCitkZWYgVG9Vbml4TGluZUVuZGluZyhzKToKKyAgIiIiQ2hh
bmdlcyBhbGwgV2luZG93cy9NYWMgbGluZSBlbmRpbmdzIGluIHMgdG8gVU5JWCBsaW5lIGVuZGlu
Z3MuIiIiCisKKyAgcmV0dXJuIHMucmVwbGFjZSgnXHJcbicsICdcbicpLnJlcGxhY2UoJ1xyJywg
J1xuJykKKworCitkZWYgUmVtb3ZlTG9jYXRpb25zKHRlc3Rfb3V0cHV0KToKKyAgIiIiUmVtb3Zl
cyBhbGwgZmlsZSBsb2NhdGlvbiBpbmZvIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0
cHV0LgorCisgIEFyZ3M6CisgICAgICAgdGVzdF9vdXRwdXQ6ICB0aGUgb3V0cHV0IG9mIGEgR29v
Z2xlIFRlc3QgcHJvZ3JhbS4KKworICBSZXR1cm5zOgorICAgICAgIG91dHB1dCB3aXRoIGFsbCBm
aWxlIGxvY2F0aW9uIGluZm8gKGluIHRoZSBmb3JtIG9mCisgICAgICAgJ0RJUkVDVE9SWS9GSUxF
X05BTUU6TElORV9OVU1CRVI6ICdvcgorICAgICAgICdESVJFQ1RPUllcXEZJTEVfTkFNRShMSU5F
X05VTUJFUik6ICcpIHJlcGxhY2VkIGJ5CisgICAgICAgJ0ZJTEVfTkFNRTojOiAnLgorICAiIiIK
KworICByZXR1cm4gcmUuc3ViKHInLipbL1xcXSgoZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF98Z3Rl
c3QpLmNjKShcOlxkK3xcKFxkK1wpKVw6ICcsCisgICAgICAgICAgICAgICAgcidcMTojOiAnLCB0
ZXN0X291dHB1dCkKKworCitkZWYgUmVtb3ZlU3RhY2tUcmFjZURldGFpbHMob3V0cHV0KToKKyAg
IiIiUmVtb3ZlcyBhbGwgc3RhY2sgdHJhY2VzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mg
b3V0cHV0LiIiIgorCisgICMgKj8gbWVhbnMgImZpbmQgdGhlIHNob3J0ZXN0IHN0cmluZyB0aGF0
IG1hdGNoZXMiLgorICByZXR1cm4gcmUuc3ViKHInU3RhY2sgdHJhY2U6KC58XG4pKj9cblxuJywK
KyAgICAgICAgICAgICAgICAnU3RhY2sgdHJhY2U6IChvbWl0dGVkKVxuXG4nLCBvdXRwdXQpCisK
KworZGVmIFJlbW92ZVN0YWNrVHJhY2VzKG91dHB1dCk6CisgICIiIlJlbW92ZXMgYWxsIHRyYWNl
cyBvZiBzdGFjayB0cmFjZXMgZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIi
CisKKyAgIyAqPyBtZWFucyAiZmluZCB0aGUgc2hvcnRlc3Qgc3RyaW5nIHRoYXQgbWF0Y2hlcyIu
CisgIHJldHVybiByZS5zdWIocidTdGFjayB0cmFjZTooLnxcbikqP1xuXG4nLCAnJywgb3V0cHV0
KQorCisKK2RlZiBSZW1vdmVUaW1lKG91dHB1dCk6CisgICIiIlJlbW92ZXMgYWxsIHRpbWUgaW5m
b3JtYXRpb24gZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCisKKyAgcmV0
dXJuIHJlLnN1YihyJ1woXGQrIG1zJywgJyg/IG1zJywgb3V0cHV0KQorCisKK2RlZiBSZW1vdmVU
eXBlSW5mb0RldGFpbHModGVzdF9vdXRwdXQpOgorICAiIiJSZW1vdmVzIGNvbXBpbGVyLXNwZWNp
ZmljIHR5cGUgaW5mbyBmcm9tIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuCisKKyAgQXJn
czoKKyAgICAgICB0ZXN0X291dHB1dDogIHRoZSBvdXRwdXQgb2YgYSBHb29nbGUgVGVzdCBwcm9n
cmFtLgorCisgIFJldHVybnM6CisgICAgICAgb3V0cHV0IHdpdGggdHlwZSBpbmZvcm1hdGlvbiBu
b3JtYWxpemVkIHRvIGNhbm9uaWNhbCBmb3JtLgorICAiIiIKKworICAjIHNvbWUgY29tcGlsZXJz
IG91dHB1dCB0aGUgbmFtZSBvZiB0eXBlICd1bnNpZ25lZCBpbnQnIGFzICd1bnNpZ25lZCcKKyAg
cmV0dXJuIHJlLnN1YihyJ3Vuc2lnbmVkIGludCcsICd1bnNpZ25lZCcsIHRlc3Rfb3V0cHV0KQor
CisKK2RlZiBOb3JtYWxpemVUb0N1cnJlbnRQbGF0Zm9ybSh0ZXN0X291dHB1dCk6CisgICIiIk5v
cm1hbGl6ZXMgcGxhdGZvcm0gc3BlY2lmaWMgb3V0cHV0IGRldGFpbHMgZm9yIGVhc2llciBjb21w
YXJpc29uLiIiIgorCisgIGlmIElTX1dJTkRPV1M6CisgICAgIyBSZW1vdmVzIHRoZSBjb2xvciBp
bmZvcm1hdGlvbiB0aGF0IGlzIG5vdCBwcmVzZW50IG9uIFdpbmRvd3MuCisgICAgdGVzdF9vdXRw
dXQgPSByZS5zdWIoJ1x4MWJcXFsoMDszXGQpP20nLCAnJywgdGVzdF9vdXRwdXQpCisgICAgIyBD
aGFuZ2VzIGZhaWx1cmUgbWVzc2FnZSBoZWFkZXJzIGludG8gdGhlIFdpbmRvd3MgZm9ybWF0Lgor
ICAgIHRlc3Rfb3V0cHV0ID0gcmUuc3ViKHInOiBGYWlsdXJlXG4nLCByJzogZXJyb3I6ICcsIHRl
c3Rfb3V0cHV0KQorICAgICMgQ2hhbmdlcyBmaWxlKGxpbmVfbnVtYmVyKSB0byBmaWxlOmxpbmVf
bnVtYmVyLgorICAgIHRlc3Rfb3V0cHV0ID0gcmUuc3ViKHInKChcd3xcLikrKVwoKFxkKylcKTon
LCByJ1wxOlwzOicsIHRlc3Rfb3V0cHV0KQorCisgIHJldHVybiB0ZXN0X291dHB1dAorCisKK2Rl
ZiBSZW1vdmVUZXN0Q291bnRzKG91dHB1dCk6CisgICIiIlJlbW92ZXMgdGVzdCBjb3VudHMgZnJv
bSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCisKKyAgb3V0cHV0ID0gcmUuc3Vi
KHInXGQrIHRlc3RzPywgbGlzdGVkIGJlbG93JywKKyAgICAgICAgICAgICAgICAgICc/IHRlc3Rz
LCBsaXN0ZWQgYmVsb3cnLCBvdXRwdXQpCisgIG91dHB1dCA9IHJlLnN1YihyJ1xkKyBGQUlMRUQg
VEVTVFMnLAorICAgICAgICAgICAgICAgICAgJz8gRkFJTEVEIFRFU1RTJywgb3V0cHV0KQorICBv
dXRwdXQgPSByZS5zdWIocidcZCsgdGVzdHM/IGZyb20gXGQrIHRlc3QgY2FzZXM/JywKKyAgICAg
ICAgICAgICAgICAgICc/IHRlc3RzIGZyb20gPyB0ZXN0IGNhc2VzJywgb3V0cHV0KQorICBvdXRw
dXQgPSByZS5zdWIocidcZCsgdGVzdHM/IGZyb20gKFthLXpBLVpfXSknLAorICAgICAgICAgICAg
ICAgICAgcic/IHRlc3RzIGZyb20gXDEnLCBvdXRwdXQpCisgIHJldHVybiByZS5zdWIocidcZCsg
dGVzdHM/XC4nLCAnPyB0ZXN0cy4nLCBvdXRwdXQpCisKKworZGVmIFJlbW92ZU1hdGNoaW5nVGVz
dHModGVzdF9vdXRwdXQsIHBhdHRlcm4pOgorICAiIiJSZW1vdmVzIG91dHB1dCBvZiBzcGVjaWZp
ZWQgdGVzdHMgZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuCisKKyAgVGhpcyBm
dW5jdGlvbiBzdHJpcHMgbm90IG9ubHkgdGhlIGJlZ2lubmluZyBhbmQgdGhlIGVuZCBvZiBhIHRl
c3QgYnV0IGFsc28KKyAgYWxsIG91dHB1dCBpbiBiZXR3ZWVuLgorCisgIEFyZ3M6CisgICAgdGVz
dF9vdXRwdXQ6ICAgICAgIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHRlc3Qgb3V0cHV0LgorICAg
IHBhdHRlcm46ICAgICAgICAgICBBIHJlZ2V4IHN0cmluZyB0aGF0IG1hdGNoZXMgbmFtZXMgb2Yg
dGVzdCBjYXNlcyBvcgorICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cyB0byByZW1vdmUuCisK
KyAgUmV0dXJuczoKKyAgICBDb250ZW50cyBvZiB0ZXN0X291dHB1dCB3aXRoIHRlc3RzIHdob3Nl
IG5hbWVzIG1hdGNoIHBhdHRlcm4gcmVtb3ZlZC4KKyAgIiIiCisKKyAgdGVzdF9vdXRwdXQgPSBy
ZS5zdWIoCisgICAgICByJy4qXFsgUlVOICAgICAgXF0gLiolcygufFxuKSo/XFsoICBGQUlMRUQg
IHwgICAgICAgT0sgKVxdIC4qJXMuKlxuJyAlICgKKyAgICAgICAgICBwYXR0ZXJuLCBwYXR0ZXJu
KSwKKyAgICAgICcnLAorICAgICAgdGVzdF9vdXRwdXQpCisgIHJldHVybiByZS5zdWIocicuKiVz
LipcbicgJSBwYXR0ZXJuLCAnJywgdGVzdF9vdXRwdXQpCisKKworZGVmIE5vcm1hbGl6ZU91dHB1
dChvdXRwdXQpOgorICAiIiJOb3JtYWxpemVzIG91dHB1dCAodGhlIG91dHB1dCBvZiBnb29nbGV0
ZXN0LW91dHB1dC10ZXN0Xy5leGUpLiIiIgorCisgIG91dHB1dCA9IFRvVW5peExpbmVFbmRpbmco
b3V0cHV0KQorICBvdXRwdXQgPSBSZW1vdmVMb2NhdGlvbnMob3V0cHV0KQorICBvdXRwdXQgPSBS
ZW1vdmVTdGFja1RyYWNlRGV0YWlscyhvdXRwdXQpCisgIG91dHB1dCA9IFJlbW92ZVRpbWUob3V0
cHV0KQorICByZXR1cm4gb3V0cHV0CisKKworZGVmIEdldFNoZWxsQ29tbWFuZE91dHB1dChlbnZf
Y21kKToKKyAgIiIiUnVucyBhIGNvbW1hbmQgaW4gYSBzdWItcHJvY2VzcywgYW5kIHJldHVybnMg
aXRzIG91dHB1dCBpbiBhIHN0cmluZy4KKworICBBcmdzOgorICAgIGVudl9jbWQ6IFRoZSBzaGVs
bCBjb21tYW5kLiBBIDItdHVwbGUgd2hlcmUgZWxlbWVudCAwIGlzIGEgZGljdCBvZiBleHRyYQor
ICAgICAgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQsIGFuZCBlbGVtZW50IDEg
aXMgYSBzdHJpbmcgd2l0aAorICAgICAgICAgICAgIHRoZSBjb21tYW5kIGFuZCBhbnkgZmxhZ3Mu
CisKKyAgUmV0dXJuczoKKyAgICBBIHN0cmluZyB3aXRoIHRoZSBjb21tYW5kJ3MgY29tYmluZWQg
c3RhbmRhcmQgYW5kIGRpYWdub3N0aWMgb3V0cHV0LgorICAiIiIKKworICAjIFNwYXducyBjbWQg
aW4gYSBzdWItcHJvY2VzcywgYW5kIGdldHMgaXRzIHN0YW5kYXJkIEkvTyBmaWxlIG9iamVjdHMu
CisgICMgU2V0IGFuZCBzYXZlIHRoZSBlbnZpcm9ubWVudCBwcm9wZXJseS4KKyAgZW52aXJvbiA9
IG9zLmVudmlyb24uY29weSgpCisgIGVudmlyb24udXBkYXRlKGVudl9jbWRbMF0pCisgIHAgPSBn
dGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoZW52X2NtZFsxXSwgZW52PWVudmlyb24pCisKKyAg
cmV0dXJuIHAub3V0cHV0CisKKworZGVmIEdldENvbW1hbmRPdXRwdXQoZW52X2NtZCk6CisgICIi
IlJ1bnMgYSBjb21tYW5kIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQgd2l0aCBhbGwgZmlsZSBsb2Nh
dGlvbgorICBpbmZvIHN0cmlwcGVkIG9mZi4KKworICBBcmdzOgorICAgIGVudl9jbWQ6ICBUaGUg
c2hlbGwgY29tbWFuZC4gQSAyLXR1cGxlIHdoZXJlIGVsZW1lbnQgMCBpcyBhIGRpY3Qgb2YgZXh0
cmEKKyAgICAgICAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCwgYW5kIGVsZW1l
bnQgMSBpcyBhIHN0cmluZyB3aXRoCisgICAgICAgICAgICAgIHRoZSBjb21tYW5kIGFuZCBhbnkg
ZmxhZ3MuCisgICIiIgorCisgICMgRGlzYWJsZXMgZXhjZXB0aW9uIHBvcC11cHMgb24gV2luZG93
cy4KKyAgZW52aXJvbiwgY21kbGluZSA9IGVudl9jbWQKKyAgZW52aXJvbiA9IGRpY3QoZW52aXJv
bikgICMgRW5zdXJlcyB3ZSBhcmUgbW9kaWZ5aW5nIGEgY29weS4KKyAgZW52aXJvbltDQVRDSF9F
WENFUFRJT05TX0VOVl9WQVJfTkFNRV0gPSAnMScKKyAgcmV0dXJuIE5vcm1hbGl6ZU91dHB1dChH
ZXRTaGVsbENvbW1hbmRPdXRwdXQoKGVudmlyb24sIGNtZGxpbmUpKSkKKworCitkZWYgR2V0T3V0
cHV0T2ZBbGxDb21tYW5kcygpOgorICAiIiJSZXR1cm5zIGNvbmNhdGVuYXRlZCBvdXRwdXQgZnJv
bSBzZXZlcmFsIHJlcHJlc2VudGF0aXZlIGNvbW1hbmRzLiIiIgorCisgIHJldHVybiAoR2V0Q29t
bWFuZE91dHB1dChDT01NQU5EX1dJVEhfQ09MT1IpICsKKyAgICAgICAgICBHZXRDb21tYW5kT3V0
cHV0KENPTU1BTkRfV0lUSF9USU1FKSArCisgICAgICAgICAgR2V0Q29tbWFuZE91dHB1dChDT01N
QU5EX1dJVEhfRElTQUJMRUQpICsKKyAgICAgICAgICBHZXRDb21tYW5kT3V0cHV0KENPTU1BTkRf
V0lUSF9TSEFSRElORykpCisKKwordGVzdF9saXN0ID0gR2V0U2hlbGxDb21tYW5kT3V0cHV0KENP
TU1BTkRfTElTVF9URVNUUykKK1NVUFBPUlRTX0RFQVRIX1RFU1RTID0gJ0RlYXRoVGVzdCcgaW4g
dGVzdF9saXN0CitTVVBQT1JUU19UWVBFRF9URVNUUyA9ICdUeXBlZFRlc3QnIGluIHRlc3RfbGlz
dAorU1VQUE9SVFNfVEhSRUFEUyA9ICdFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0JyBpbiB0
ZXN0X2xpc3QKK1NVUFBPUlRTX1NUQUNLX1RSQUNFUyA9IE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9G
TEFHIG5vdCBpbiBzeXMuYXJndgorCitDQU5fR0VORVJBVEVfR09MREVOX0ZJTEUgPSAoU1VQUE9S
VFNfREVBVEhfVEVTVFMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VQUE9SVFNf
VFlQRURfVEVTVFMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VQUE9SVFNfVEhS
RUFEUyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVVBQT1JUU19TVEFDS19UUkFD
RVMpCisKK2NsYXNzIEdUZXN0T3V0cHV0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToK
KyAgZGVmIFJlbW92ZVVuc3VwcG9ydGVkVGVzdHMoc2VsZiwgdGVzdF9vdXRwdXQpOgorICAgIGlm
IG5vdCBTVVBQT1JUU19ERUFUSF9URVNUUzoKKyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0
Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwgJ0RlYXRoVGVzdCcpCisgICAgaWYgbm90IFNVUFBPUlRT
X1RZUEVEX1RFU1RTOgorICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRl
c3Rfb3V0cHV0LCAnVHlwZWRUZXN0JykKKyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hp
bmdUZXN0cyh0ZXN0X291dHB1dCwgJ1R5cGVkRGVhdGhUZXN0JykKKyAgICAgIHRlc3Rfb3V0cHV0
ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwgJ1R5cGVQYXJhbURlYXRoVGVzdCcp
CisgICAgaWYgbm90IFNVUFBPUlRTX1RIUkVBRFM6CisgICAgICB0ZXN0X291dHB1dCA9IFJlbW92
ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0V4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QnKQorICAgICAgdGVzdF9v
dXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRl
clRlc3QnKQorICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0
cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdXb3Jrc0NvbmN1
cnJlbnRseScpCisgICAgaWYgbm90IFNVUFBPUlRTX1NUQUNLX1RSQUNFUzoKKyAgICAgIHRlc3Rf
b3V0cHV0ID0gUmVtb3ZlU3RhY2tUcmFjZXModGVzdF9vdXRwdXQpCisKKyAgICByZXR1cm4gdGVz
dF9vdXRwdXQKKworICBkZWYgdGVzdE91dHB1dChzZWxmKToKKyAgICBvdXRwdXQgPSBHZXRPdXRw
dXRPZkFsbENvbW1hbmRzKCkKKworICAgIGdvbGRlbl9maWxlID0gb3BlbihHT0xERU5fUEFUSCwg
J3JiJykKKyAgICAjIEEgbWlzLWNvbmZpZ3VyZWQgc291cmNlIGNvbnRyb2wgc3lzdGVtIGNhbiBj
YXVzZSBcciBhcHBlYXIgaW4gRU9MCisgICAgIyBzZXF1ZW5jZXMgd2hlbiB3ZSByZWFkIHRoZSBn
b2xkZW4gZmlsZSBpcnJlc3BlY3RpdmUgb2YgYW4gb3BlcmF0aW5nCisgICAgIyBzeXN0ZW0gdXNl
ZC4gVGhlcmVmb3JlLCB3ZSBuZWVkIHRvIHN0cmlwIHRob3NlIFxyJ3MgZnJvbSBuZXdsaW5lcwor
ICAgICMgdW5jb25kaXRpb25hbGx5LgorICAgIGdvbGRlbiA9IFRvVW5peExpbmVFbmRpbmcoZ29s
ZGVuX2ZpbGUucmVhZCgpKQorICAgIGdvbGRlbl9maWxlLmNsb3NlKCkKKworICAgICMgV2Ugd2Fu
dCB0aGUgdGVzdCB0byBwYXNzIHJlZ2FyZGxlc3Mgb2YgY2VydGFpbiBmZWF0dXJlcyBiZWluZwor
ICAgICMgc3VwcG9ydGVkIG9yIG5vdC4KKworICAgICMgV2Ugc3RpbGwgaGF2ZSB0byByZW1vdmUg
dHlwZSBuYW1lIHNwZWNpZmljcyBpbiBhbGwgY2FzZXMuCisgICAgbm9ybWFsaXplZF9hY3R1YWwg
PSBSZW1vdmVUeXBlSW5mb0RldGFpbHMob3V0cHV0KQorICAgIG5vcm1hbGl6ZWRfZ29sZGVuID0g
UmVtb3ZlVHlwZUluZm9EZXRhaWxzKGdvbGRlbikKKworICAgIGlmIENBTl9HRU5FUkFURV9HT0xE
RU5fRklMRToKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWFsaXplZF9nb2xkZW4sIG5vcm1h
bGl6ZWRfYWN0dWFsLAorICAgICAgICAgICAgICAgICAgICAgICAnXG4nLmpvaW4oZGlmZmxpYi51
bmlmaWVkX2RpZmYoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkX2dvbGRl
bi5zcGxpdCgnXG4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRfYWN0
dWFsLnNwbGl0KCdcbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dvbGRlbicsICdh
Y3R1YWwnKSkpCisgICAgZWxzZToKKyAgICAgIG5vcm1hbGl6ZWRfYWN0dWFsID0gTm9ybWFsaXpl
VG9DdXJyZW50UGxhdGZvcm0oCisgICAgICAgICAgUmVtb3ZlVGVzdENvdW50cyhub3JtYWxpemVk
X2FjdHVhbCkpCisgICAgICBub3JtYWxpemVkX2dvbGRlbiA9IE5vcm1hbGl6ZVRvQ3VycmVudFBs
YXRmb3JtKAorICAgICAgICAgIFJlbW92ZVRlc3RDb3VudHMoc2VsZi5SZW1vdmVVbnN1cHBvcnRl
ZFRlc3RzKG5vcm1hbGl6ZWRfZ29sZGVuKSkpCisKKyAgICAgICMgVGhpcyBjb2RlIGlzIHZlcnkg
aGFuZHkgd2hlbiBkZWJ1Z2dpbmcgZ29sZGVuIGZpbGUgZGlmZmVyZW5jZXM6CisgICAgICBpZiBv
cy5nZXRlbnYoJ0RFQlVHX0dURVNUX09VVFBVVF9URVNUJyk6CisgICAgICAgIG9wZW4ob3MucGF0
aC5qb2luKAorICAgICAgICAgICAgZ3Rlc3RfdGVzdF91dGlscy5HZXRTb3VyY2VEaXIoKSwKKyAg
ICAgICAgICAgICdfZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF9ub3JtYWxpemVkX2FjdHVhbC50eHQn
KSwgJ3diJykud3JpdGUoCisgICAgICAgICAgICAgICAgbm9ybWFsaXplZF9hY3R1YWwpCisgICAg
ICAgIG9wZW4ob3MucGF0aC5qb2luKAorICAgICAgICAgICAgZ3Rlc3RfdGVzdF91dGlscy5HZXRT
b3VyY2VEaXIoKSwKKyAgICAgICAgICAgICdfZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF9ub3JtYWxp
emVkX2dvbGRlbi50eHQnKSwgJ3diJykud3JpdGUoCisgICAgICAgICAgICAgICAgbm9ybWFsaXpl
ZF9nb2xkZW4pCisKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWFsaXplZF9nb2xkZW4sIG5v
cm1hbGl6ZWRfYWN0dWFsKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGlmIE5P
X1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFHIGluIHN5cy5hcmd2OgorICAgICMgdW5pdHRlc3QubWFp
bigpIGNhbid0IGhhbmRsZSB1bmtub3duIGZsYWdzCisgICAgc3lzLmFyZ3YucmVtb3ZlKE5PX1NU
QUNLVFJBQ0VfU1VQUE9SVF9GTEFHKQorCisgIGlmIEdFTkdPTERFTl9GTEFHIGluIHN5cy5hcmd2
OgorICAgIGlmIENBTl9HRU5FUkFURV9HT0xERU5fRklMRToKKyAgICAgIG91dHB1dCA9IEdldE91
dHB1dE9mQWxsQ29tbWFuZHMoKQorICAgICAgZ29sZGVuX2ZpbGUgPSBvcGVuKEdPTERFTl9QQVRI
LCAnd2InKQorICAgICAgZ29sZGVuX2ZpbGUud3JpdGUob3V0cHV0KQorICAgICAgZ29sZGVuX2Zp
bGUuY2xvc2UoKQorICAgIGVsc2U6CisgICAgICBtZXNzYWdlID0gKAorICAgICAgICAgICIiIlVu
YWJsZSB0byB3cml0ZSBhIGdvbGRlbiBmaWxlIHdoZW4gY29tcGlsZWQgaW4gYW4gZW52aXJvbm1l
bnQKK3RoYXQgZG9lcyBub3Qgc3VwcG9ydCBhbGwgdGhlIHJlcXVpcmVkIGZlYXR1cmVzIChkZWF0
aCB0ZXN0cywKK3R5cGVkIHRlc3RzLCBzdGFjayB0cmFjZXMsIGFuZCBtdWx0aXBsZSB0aHJlYWRz
KS4KK1BsZWFzZSBidWlsZCB0aGlzIHRlc3QgYW5kIGdlbmVyYXRlIHRoZSBnb2xkZW4gZmlsZSB1
c2luZyBCbGF6ZSBvbiBMaW51eC4iIiIpCisKKyAgICAgIHN5cy5zdGRlcnIud3JpdGUobWVzc2Fn
ZSkKKyAgICAgIHN5cy5leGl0KDEpCisgIGVsc2U6CisgICAgZ3Rlc3RfdGVzdF91dGlscy5NYWlu
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1v
dXRwdXQtdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MDYzMGUyODJiMDM4YTdlOTljNmYyMzE1MjM2
ZjEzODNkYTkxYTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjCkBAIC0wLDAgKzEsMTEwOSBAQAorLy8gQ29w
eXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmli
dXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIFRoZSBwdXJwb3Nl
IG9mIHRoaXMgZmlsZSBpcyB0byBnZW5lcmF0ZSBHb29nbGUgVGVzdCBvdXRwdXQgdW5kZXIKKy8v
IHZhcmlvdXMgY29uZGl0aW9ucy4gIFRoZSBvdXRwdXQgd2lsbCB0aGVuIGJlIHZlcmlmaWVkIGJ5
CisvLyBnb29nbGV0ZXN0LW91dHB1dC10ZXN0LnB5IHRvIGVuc3VyZSB0aGF0IEdvb2dsZSBUZXN0
IGdlbmVyYXRlcyB0aGUKKy8vIGRlc2lyZWQgbWVzc2FnZXMuICBUaGVyZWZvcmUsIG1vc3QgdGVz
dHMgaW4gdGhpcyBmaWxlIGFyZSBNRUFOVCBUTworLy8gRkFJTC4KKworI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LXNwaS5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAic3JjL2d0
ZXN0LWludGVybmFsLWlubC5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpZiBfTVNDX1ZF
UgorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MTI3IC8qIGNvbmRpdGlvbmFs
IGV4cHJlc3Npb24gaXMgY29uc3RhbnQgKi8pCisjZW5kaWYgIC8vIC4gX01TQ19WRVIgICAgCisK
KyNpZiBHVEVTVF9JU19USFJFQURTQUZFCit1c2luZyB0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBh
cnRSZXN1bHRSZXBvcnRlcjsKK3VzaW5nIHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0QXJyYXk7CisK
K3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpOb3RpZmljYXRpb247Cit1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6VGhyZWFkV2l0aFBhcmFtOworI2VuZGlmCisKK25hbWVzcGFjZSBwb3NpeCA9IDo6
dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OworCisvLyBUZXN0cyBjYXRjaGluZyBmYXRhbCBmYWls
dXJlcy4KKworLy8gQSBzdWJyb3V0aW5lIHVzZWQgYnkgdGhlIGZvbGxvd2luZyB0ZXN0Lgordm9p
ZCBUZXN0RXExKGludCB4KSB7CisgIEFTU0VSVF9FUSgxLCB4KTsKK30KKworLy8gVGhpcyBmdW5j
dGlvbiBjYWxscyBhIHRlc3Qgc3Vicm91dGluZSwgY2F0Y2hlcyB0aGUgZmF0YWwgZmFpbHVyZSBp
dAorLy8gZ2VuZXJhdGVzLCBhbmQgdGhlbiByZXR1cm5zIGVhcmx5Lgordm9pZCBUcnlUZXN0U3Vi
cm91dGluZSgpIHsKKyAgLy8gQ2FsbHMgYSBzdWJyb3VudGluZSB0aGF0IHlpZWxkcyBhIGZhdGFs
IGZhaWx1cmUuCisgIFRlc3RFcTEoMik7CisKKyAgLy8gQ2F0Y2hlcyB0aGUgZmF0YWwgZmFpbHVy
ZSBhbmQgYWJvcnRzIHRoZSB0ZXN0LgorICAvLworICAvLyBUaGUgdGVzdGluZzo6VGVzdDo6IHBy
ZWZpeCBpcyBuZWNlc3Nhcnkgd2hlbiBjYWxsaW5nCisgIC8vIEhhc0ZhdGFsRmFpbHVyZSgpIG91
dHNpZGUgb2YgYSBURVNULCBURVNUX0YsIG9yIHRlc3QgZml4dHVyZS4KKyAgaWYgKHRlc3Rpbmc6
OlRlc3Q6Okhhc0ZhdGFsRmFpbHVyZSgpKSByZXR1cm47CisKKyAgLy8gSWYgd2UgZ2V0IGhlcmUs
IHNvbWV0aGluZyBpcyB3cm9uZy4KKyAgRkFJTCgpIDw8ICJUaGlzIHNob3VsZCBuZXZlciBiZSBy
ZWFjaGVkLiI7Cit9CisKK1RFU1QoUGFzc2luZ1Rlc3QsIFBhc3NpbmdUZXN0MSkgeworfQorCitU
RVNUKFBhc3NpbmdUZXN0LCBQYXNzaW5nVGVzdDIpIHsKK30KKworLy8gVGVzdHMgdGhhdCBwYXJh
bWV0ZXJzIG9mIGZhaWxpbmcgcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgcHJpbnRlZCBpbiB0aGUK
Ky8vIGZhaWxpbmcgdGVzdCBzdW1tYXJ5LgorY2xhc3MgRmFpbGluZ1BhcmFtVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4ge307CisKK1RFU1RfUChGYWlsaW5nUGFyYW1U
ZXN0LCBGYWlscykgeworICBFWFBFQ1RfRVEoMSwgR2V0UGFyYW0oKSk7Cit9CisKKy8vIFRoaXMg
Z2VuZXJhdGVzIGEgdGVzdCB3aGljaCB3aWxsIGZhaWwuIEdvb2dsZSBUZXN0IGlzIGV4cGVjdGVk
IHRvIHByaW50CisvLyBpdHMgcGFyYW1ldGVyIHdoZW4gaXQgb3V0cHV0cyB0aGUgbGlzdCBvZiBh
bGwgZmFpbGVkIHRlc3RzLgorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoUHJpbnRpbmdGYWlsaW5n
UGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgRmFpbGluZ1BhcmFtVGVzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlcygyKSk7CisKK3N0YXRpYyBjb25zdCBj
aGFyIGtHb2xkZW5TdHJpbmdbXSA9ICJcIkxpbmVcMCAxXCJcbkxpbmUgMiI7CisKK1RFU1QoTm9u
ZmF0YWxGYWlsdXJlVGVzdCwgRXNjYXBlc1N0cmluZ09wZXJhbmRzKSB7CisgIHN0ZDo6c3RyaW5n
IGFjdHVhbCA9ICJhY3R1YWwgXCJzdHJpbmdcIiI7CisgIEVYUEVDVF9FUShrR29sZGVuU3RyaW5n
LCBhY3R1YWwpOworCisgIGNvbnN0IGNoYXIqIGdvbGRlbiA9IGtHb2xkZW5TdHJpbmc7CisgIEVY
UEVDVF9FUShnb2xkZW4sIGFjdHVhbCk7Cit9CisKK1RFU1QoTm9uZmF0YWxGYWlsdXJlVGVzdCwg
RGlmZkZvckxvbmdTdHJpbmdzKSB7CisgIHN0ZDo6c3RyaW5nIGdvbGRlbl9zdHIoa0dvbGRlblN0
cmluZywgc2l6ZW9mKGtHb2xkZW5TdHJpbmcpIC0gMSk7CisgIEVYUEVDVF9FUShnb2xkZW5fc3Ry
LCAiTGluZSAyIik7Cit9CisKKy8vIFRlc3RzIGNhdGNoaW5nIGEgZmF0YWwgZmFpbHVyZSBpbiBh
IHN1YnJvdXRpbmUuCitURVNUKEZhdGFsRmFpbHVyZVRlc3QsIEZhdGFsRmFpbHVyZUluU3Vicm91
dGluZSkgeworICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUg
MSlcbiIpOworCisgIFRyeVRlc3RTdWJyb3V0aW5lKCk7Cit9CisKKy8vIFRlc3RzIGNhdGNoaW5n
IGEgZmF0YWwgZmFpbHVyZSBpbiBhIG5lc3RlZCBzdWJyb3V0aW5lLgorVEVTVChGYXRhbEZhaWx1
cmVUZXN0LCBGYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUpIHsKKyAgcHJpbnRmKCIoZXhw
ZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpXG4iKTsKKworICAvLyBDYWxscyBh
IHN1YnJvdW50aW5lIHRoYXQgeWllbGRzIGEgZmF0YWwgZmFpbHVyZS4KKyAgVHJ5VGVzdFN1YnJv
dXRpbmUoKTsKKworICAvLyBDYXRjaGVzIHRoZSBmYXRhbCBmYWlsdXJlIGFuZCBhYm9ydHMgdGhl
IHRlc3QuCisgIC8vCisgIC8vIFdoZW4gY2FsbGluZyBIYXNGYXRhbEZhaWx1cmUoKSBpbnNpZGUg
YSBURVNULCBURVNUX0YsIG9yIHRlc3QKKyAgLy8gZml4dHVyZSwgdGhlIHRlc3Rpbmc6OlRlc3Q6
OiBwcmVmaXggaXMgbm90IG5lZWRlZC4KKyAgaWYgKEhhc0ZhdGFsRmFpbHVyZSgpKSByZXR1cm47
CisKKyAgLy8gSWYgd2UgZ2V0IGhlcmUsIHNvbWV0aGluZyBpcyB3cm9uZy4KKyAgRkFJTCgpIDw8
ICJUaGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkLiI7Cit9CisKKy8vIFRlc3RzIEhhc0ZhdGFs
RmFpbHVyZSgpIGFmdGVyIGEgZmFpbGVkIEVYUEVDVCBjaGVjay4KK1RFU1QoRmF0YWxGYWlsdXJl
VGVzdCwgTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lKSB7CisgIHByaW50ZigiKGV4cGVjdGlu
ZyBhIGZhaWx1cmUgb24gZmFsc2UpXG4iKTsKKyAgRVhQRUNUX1RSVUUoZmFsc2UpOyAgLy8gR2Vu
ZXJhdGVzIGEgbm9uZmF0YWwgZmFpbHVyZQorICBBU1NFUlRfRkFMU0UoSGFzRmF0YWxGYWlsdXJl
KCkpOyAgLy8gVGhpcyBzaG91bGQgc3VjY2VlZC4KK30KKworLy8gVGVzdHMgaW50ZXJsZWF2aW5n
IHVzZXIgbG9nZ2luZyBhbmQgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucy4KK1RFU1QoTG9nZ2luZ1Rl
c3QsIEludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zKSB7CisgIHN0YXRpYyBjb25zdCBp
bnQgYVs0XSA9IHsKKyAgICAzLCA5LCAyLCA2CisgIH07CisKKyAgcHJpbnRmKCIoZXhwZWN0aW5n
IDIgZmFpbHVyZXMgb24gKDMpID49IChhW2ldKSlcbiIpOworICBmb3IgKGludCBpID0gMDsgaSA8
IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKGEpL3NpemVvZigqYSkpOyBpKyspIHsKKyAgICBwcmlu
dGYoImkgPT0gJWRcbiIsIGkpOworICAgIEVYUEVDVF9HRSgzLCBhW2ldKTsKKyAgfQorfQorCisv
LyBUZXN0cyB0aGUgU0NPUEVEX1RSQUNFIG1hY3JvLgorCisvLyBBIGhlbHBlciBmdW5jdGlvbiBm
b3IgdGVzdGluZyBTQ09QRURfVFJBQ0UuCit2b2lkIFN1YldpdGhvdXRUcmFjZShpbnQgbikgewor
ICBFWFBFQ1RfRVEoMSwgbik7CisgIEFTU0VSVF9FUSgyLCBuKTsKK30KKworLy8gQW5vdGhlciBo
ZWxwZXIgZnVuY3Rpb24gZm9yIHRlc3RpbmcgU0NPUEVEX1RSQUNFLgordm9pZCBTdWJXaXRoVHJh
Y2UoaW50IG4pIHsKKyAgU0NPUEVEX1RSQUNFKHRlc3Rpbmc6Ok1lc3NhZ2UoKSA8PCAibiA9ICIg
PDwgbik7CisKKyAgU3ViV2l0aG91dFRyYWNlKG4pOworfQorCitURVNUKFNDT1BFRF9UUkFDRVRl
c3QsIEFjY2VwdGVkVmFsdWVzKSB7CisgIFNDT1BFRF9UUkFDRSgibGl0ZXJhbCBzdHJpbmciKTsK
KyAgU0NPUEVEX1RSQUNFKHN0ZDo6c3RyaW5nKCJzdGQ6OnN0cmluZyIpKTsKKyAgU0NPUEVEX1RS
QUNFKDEzMzcpOyAgLy8gc3RyZWFtYWJsZSB0eXBlCisgIGNvbnN0IGNoYXIqIG51bGxfdmFsdWUg
PSBOVUxMOworICBTQ09QRURfVFJBQ0UobnVsbF92YWx1ZSk7CisKKyAgQUREX0ZBSUxVUkUoKSA8
PCAiSnVzdCBjaGVja2luZyB0aGF0IGFsbCB0aGVzZSB2YWx1ZXMgd29yayBmaW5lLiI7Cit9CisK
Ky8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFKCkgb2JleXMgbGV4aWNhbCBzY29wZXMuCitURVNU
KFNDT1BFRF9UUkFDRVRlc3QsIE9iZXlzU2NvcGVzKSB7CisgIHByaW50ZigiKGV4cGVjdGVkIHRv
IGZhaWwpXG4iKTsKKworICAvLyBUaGVyZSBzaG91bGQgYmUgbm8gdHJhY2UgYmVmb3JlIFNDT1BF
RF9UUkFDRSgpIGlzIGludm9rZWQuCisgIEFERF9GQUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBp
cyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuIjsKKworICB7CisgICAgU0NP
UEVEX1RSQUNFKCJFeHBlY3RlZCB0cmFjZSIpOworICAgIC8vIEFmdGVyIFNDT1BFRF9UUkFDRSgp
LCBhIGZhaWx1cmUgaW4gdGhlIGN1cnJlbnQgc2NvcGUgc2hvdWxkIGNvbnRhaW4KKyAgICAvLyB0
aGUgdHJhY2UuCisgICAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVk
LCBhbmQgc2hvdWxkIGhhdmUgYSB0cmFjZS4iOworICB9CisKKyAgLy8gT25jZSB0aGUgY29udHJv
bCBsZWF2ZXMgdGhlIHNjb3BlIG9mIHRoZSBTQ09QRURfVFJBQ0UoKSwgdGhlcmUKKyAgLy8gc2hv
dWxkIGJlIG5vIHRyYWNlIGFnYWluLgorICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUg
aXMgZXhwZWN0ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNlLiI7Cit9CisKKy8vIFRlc3Rz
IHRoYXQgU0NPUEVEX1RSQUNFIHdvcmtzIGluc2lkZSBhIGxvb3AuCitURVNUKFNDT1BFRF9UUkFD
RVRlc3QsIFdvcmtzSW5Mb29wKSB7CisgIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsK
KworICBmb3IgKGludCBpID0gMTsgaSA8PSAyOyBpKyspIHsKKyAgICBTQ09QRURfVFJBQ0UodGVz
dGluZzo6TWVzc2FnZSgpIDw8ICJpID0gIiA8PCBpKTsKKworICAgIFN1YldpdGhvdXRUcmFjZShp
KTsKKyAgfQorfQorCisvLyBUZXN0cyB0aGF0IFNDT1BFRF9UUkFDRSB3b3JrcyBpbiBhIHN1YnJv
dXRpbmUuCitURVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtzSW5TdWJyb3V0aW5lKSB7CisgIHBy
aW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKKworICBTdWJXaXRoVHJhY2UoMSk7CisgIFN1
YldpdGhUcmFjZSgyKTsKK30KKworLy8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0UgY2FuIGJlIG5l
c3RlZC4KK1RFU1QoU0NPUEVEX1RSQUNFVGVzdCwgQ2FuQmVOZXN0ZWQpIHsKKyAgcHJpbnRmKCIo
ZXhwZWN0ZWQgdG8gZmFpbClcbiIpOworCisgIFNDT1BFRF9UUkFDRSgiIik7ICAvLyBBIHRyYWNl
IHdpdGhvdXQgYSBtZXNzYWdlLgorCisgIFN1YldpdGhUcmFjZSgyKTsKK30KKworLy8gVGVzdHMg
dGhhdCBtdWx0aXBsZSBTQ09QRURfVFJBQ0VzIGNhbiBiZSB1c2VkIGluIHRoZSBzYW1lIHNjb3Bl
LgorVEVTVChTQ09QRURfVFJBQ0VUZXN0LCBDYW5CZVJlcGVhdGVkKSB7CisgIHByaW50ZigiKGV4
cGVjdGVkIHRvIGZhaWwpXG4iKTsKKworICBTQ09QRURfVFJBQ0UoIkEiKTsKKyAgQUREX0ZBSUxV
UkUoKQorICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250
YWluIHRyYWNlIHBvaW50IEEuIjsKKworICBTQ09QRURfVFJBQ0UoIkIiKTsKKyAgQUREX0ZBSUxV
UkUoKQorICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250
YWluIHRyYWNlIHBvaW50IEEgYW5kIEIuIjsKKworICB7CisgICAgU0NPUEVEX1RSQUNFKCJDIik7
CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hv
dWxkICIKKyAgICAgICAgICAgICAgICAgIDw8ICJjb250YWluIHRyYWNlIHBvaW50IEEsIEIsIGFu
ZCBDLiI7CisgIH0KKworICBTQ09QRURfVFJBQ0UoIkQiKTsKKyAgQUREX0ZBSUxVUkUoKSA8PCAi
VGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkICIKKyAgICAgICAgICAgICAgICA8
PCAiY29udGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQgRC4iOworfQorCisjaWYgR1RFU1RfSVNf
VEhSRUFEU0FGRQorLy8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0UoKXMgY2FuIGJlIHVzZWQgY29u
Y3VycmVudGx5IGZyb20gbXVsdGlwbGUKKy8vIHRocmVhZHMuICBOYW1lbHksIGFuIGFzc2VydGlv
biBzaG91bGQgYmUgYWZmZWN0ZWQgYnkKKy8vIFNDT1BFRF9UUkFDRSgpcyBpbiBpdHMgb3duIHRo
cmVhZCBvbmx5LgorCisvLyBIZXJlJ3MgdGhlIHNlcXVlbmNlIG9mIGFjdGlvbnMgdGhhdCBoYXBw
ZW4gaW4gdGhlIHRlc3Q6CisvLworLy8gICBUaHJlYWQgQSAobWFpbikgICAgICAgICAgICAgICAg
fCBUaHJlYWQgQiAoc3Bhd25lZCkKKy8vICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PXw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gICBzcGF3bnMgdGhyZWFkIEIg
ICAgICAgICAgICAgICAgfAorLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIHdhaXRzIGZvciBuMSAgICAgICAg
ICAgICAgICAgICB8IFNDT1BFRF9UUkFDRSgiVHJhY2UgQiIpOworLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCBnZW5lcmF0ZXMgZmFpbHVyZSAjMQorLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCBub3RpZmllcyBuMQorLy8gICAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIFND
T1BFRF9UUkFDRSgiVHJhY2UgQSIpOyAgICAgICB8IHdhaXRzIGZvciBuMgorLy8gICBnZW5lcmF0
ZXMgZmFpbHVyZSAjMiAgICAgICAgICAgfAorLy8gICBub3RpZmllcyBuMiAgICAgICAgICAgICAg
ICAgICAgfAorLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIHdhaXRzIGZvciBuMyAgICAgICAgICAgICAgICAg
ICB8IGdlbmVyYXRlcyBmYWlsdXJlICMzCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IHRyYWNlIEIgZGllcworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCBnZW5lcmF0ZXMgZmFpbHVyZSAjNAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCBub3RpZmllcyBuMworLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIGdlbmVyYXRlcyBmYWlsdXJlICM1
ICAgICAgICAgICB8IGZpbmlzaGVzCisvLyAgIHRyYWNlIEEgZGllcyAgICAgICAgICAgICAgICAg
ICB8CisvLyAgIGdlbmVyYXRlcyBmYWlsdXJlICM2ICAgICAgICAgICB8CisvLyAgIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vICAgd2FpdHMgZm9yIHRocmVhZCBCIHRvIGZpbmlzaCAgIHwKKworc3RydWN0IENoZWNrUG9p
bnRzIHsKKyAgTm90aWZpY2F0aW9uIG4xOworICBOb3RpZmljYXRpb24gbjI7CisgIE5vdGlmaWNh
dGlvbiBuMzsKK307CisKK3N0YXRpYyB2b2lkIFRocmVhZFdpdGhTY29wZWRUcmFjZShDaGVja1Bv
aW50cyogY2hlY2tfcG9pbnRzKSB7CisgIHsKKyAgICBTQ09QRURfVFJBQ0UoIlRyYWNlIEIiKTsK
KyAgICBBRERfRkFJTFVSRSgpCisgICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxIChpbiB0
aHJlYWQgQiwgb25seSB0cmFjZSBCIGFsaXZlKS4iOworICAgIGNoZWNrX3BvaW50cy0+bjEuTm90
aWZ5KCk7CisgICAgY2hlY2tfcG9pbnRzLT5uMi5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7CisKKyAg
ICBBRERfRkFJTFVSRSgpCisgICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzIChpbiB0aHJl
YWQgQiwgdHJhY2UgQSAmIEIgYm90aCBhbGl2ZSkuIjsKKyAgfSAgLy8gVHJhY2UgQiBkaWVzIGhl
cmUuCisgIEFERF9GQUlMVVJFKCkKKyAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM0IChpbiB0
aHJlYWQgQiwgb25seSB0cmFjZSBBIGFsaXZlKS4iOworICBjaGVja19wb2ludHMtPm4zLk5vdGlm
eSgpOworfQorCitURVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtzQ29uY3VycmVudGx5KSB7Cisg
IHByaW50ZigiKGV4cGVjdGluZyA2IGZhaWx1cmVzKVxuIik7CisKKyAgQ2hlY2tQb2ludHMgY2hl
Y2tfcG9pbnRzOworICBUaHJlYWRXaXRoUGFyYW08Q2hlY2tQb2ludHMqPiB0aHJlYWQoJlRocmVh
ZFdpdGhTY29wZWRUcmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZjaGVja19wb2ludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
VUxMKTsKKyAgY2hlY2tfcG9pbnRzLm4xLldhaXRGb3JOb3RpZmljYXRpb24oKTsKKworICB7Cisg
ICAgU0NPUEVEX1RSQUNFKCJUcmFjZSBBIik7CisgICAgQUREX0ZBSUxVUkUoKQorICAgICAgICA8
PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiAoaW4gdGhyZWFkIEEsIHRyYWNlIEEgJiBCIGJvdGggYWxp
dmUpLiI7CisgICAgY2hlY2tfcG9pbnRzLm4yLk5vdGlmeSgpOworICAgIGNoZWNrX3BvaW50cy5u
My5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7CisKKyAgICBBRERfRkFJTFVSRSgpCisgICAgICAgIDw8
ICJFeHBlY3RlZCBmYWlsdXJlICM1IChpbiB0aHJlYWQgQSwgb25seSB0cmFjZSBBIGFsaXZlKS4i
OworICB9ICAvLyBUcmFjZSBBIGRpZXMgaGVyZS4KKyAgQUREX0ZBSUxVUkUoKQorICAgICAgPDwg
IkV4cGVjdGVkIGZhaWx1cmUgIzYgKGluIHRocmVhZCBBLCBubyB0cmFjZSBhbGl2ZSkuIjsKKyAg
dGhyZWFkLkpvaW4oKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFEU0FGRQorCisvLyBU
ZXN0cyBiYXNpYyBmdW5jdGlvbmFsaXR5IG9mIHRoZSBTY29wZWRUcmFjZSB1dGlsaXR5IChtb3N0
IG9mIGl0cyBmZWF0dXJlcworLy8gYXJlIGFscmVhZHkgdGVzdGVkIGluIFNDT1BFRF9UUkFDRVRl
c3QpLgorVEVTVChTY29wZWRUcmFjZVRlc3QsIFdpdGhFeHBsaWNpdEZpbGVBbmRMaW5lKSB7Cisg
IHRlc3Rpbmc6OlNjb3BlZFRyYWNlIHRyYWNlKCJleHBsaWNpdF9maWxlLmNjIiwgMTIzLCAiZXhw
ZWN0ZWQgdHJhY2UgbWVzc2FnZSIpOworICBBRERfRkFJTFVSRSgpIDw8ICJDaGVjayB0aGF0IHRo
ZSB0cmFjZSBpcyBhdHRhY2hlZCB0byBhIHBhcnRpY3VsYXIgbG9jYXRpb24uIjsKK30KKworVEVT
VChEaXNhYmxlZFRlc3RzV2FybmluZ1Rlc3QsCisgICAgIERJU0FCTEVEX0Fsc29SdW5EaXNhYmxl
ZFRlc3RzRmxhZ1N1cHByZXNzZXNXYXJuaW5nKSB7CisgIC8vIFRoaXMgdGVzdCBib2R5IGlzIGlu
dGVudGlvbmFsbHkgZW1wdHkuICBJdHMgc29sZSBwdXJwb3NlIGlzIGZvcgorICAvLyB2ZXJpZnlp
bmcgdGhhdCB0aGUgLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnCisgIC8vIHN1
cHByZXNzZXMgdGhlICJZT1UgSEFWRSAxMiBESVNBQkxFRCBURVNUUyIgd2FybmluZyBhdCB0aGUg
ZW5kIG9mCisgIC8vIHRoZSB0ZXN0IG91dHB1dC4KK30KKworLy8gVGVzdHMgdXNpbmcgYXNzZXJ0
aW9ucyBvdXRzaWRlIG9mIFRFU1QgYW5kIFRFU1RfRi4KKy8vCisvLyBUaGlzIGZ1bmN0aW9uIGNy
ZWF0ZXMgdHdvIGZhaWx1cmVzIGludGVudGlvbmFsbHkuCit2b2lkIEFkSG9jVGVzdCgpIHsKKyAg
cHJpbnRmKCJUaGUgbm9uLXRlc3QgcGFydCBvZiB0aGUgY29kZSBpcyBleHBlY3RlZCB0byBoYXZl
IDIgZmFpbHVyZXMuXG5cbiIpOworICBFWFBFQ1RfVFJVRShmYWxzZSk7CisgIEVYUEVDVF9FUSgy
LCAzKTsKK30KKworLy8gUnVucyBhbGwgVEVTVHMsIGFsbCBURVNUX0ZzLCBhbmQgdGhlIGFkIGhv
YyB0ZXN0LgoraW50IFJ1bkFsbFRlc3RzKCkgeworICBBZEhvY1Rlc3QoKTsKKyAgcmV0dXJuIFJV
Tl9BTExfVEVTVFMoKTsKK30KKworLy8gVGVzdHMgbm9uLWZhdGFsIGZhaWx1cmVzIGluIHRoZSBm
aXh0dXJlIGNvbnN0cnVjdG9yLgorY2xhc3MgTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3Ry
dWN0b3JUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgTm9uRmF0
YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0KCkgeworICAgIHByaW50ZigiKGV4cGVj
dGluZyA1IGZhaWx1cmVzKVxuIik7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFp
bHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4iOworICB9CisKKyAgfk5vbkZhdGFs
RmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCgpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8
ICJFeHBlY3RlZCBmYWlsdXJlICM1LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLiI7CisgIH0K
KworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0
ZWQgZmFpbHVyZSAjMiwgaW4gU2V0VXAoKS4iOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJE
b3duKCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIFRl
YXJEb3duLiI7CisgIH0KK307CisKK1RFU1RfRihOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25z
dHJ1Y3RvclRlc3QsIEZhaWx1cmVJbkNvbnN0cnVjdG9yKSB7CisgIEFERF9GQUlMVVJFKCkgPDwg
IkV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGJvZHkuIjsKK30KKworLy8gVGVzdHMg
ZmF0YWwgZmFpbHVyZXMgaW4gdGhlIGZpeHR1cmUgY29uc3RydWN0b3IuCitjbGFzcyBGYXRhbEZh
aWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cisg
cHJvdGVjdGVkOgorICBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QoKSB7Cisg
ICAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMpXG4iKTsKKyAgICBJbml0KCk7CisgIH0K
KworICB+RmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0KCkgeworICAgIEFERF9G
QUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0
b3IuIjsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBBRERfRkFJTFVSRSgp
IDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gU2V0VXAoKS4gICIKKyAgICAgICAgICAgICAgICAg
IDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3Ig
IgorICAgICAgICAgICAgICAgICAgPDwgImhhZCBhIGZhdGFsIGZhaWx1cmUuIjsKKyAgfQorCisg
IHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVD
VEVEIGZhaWx1cmUgaW4gVGVhckRvd24oKS4gICIKKyAgICAgICAgICAgICAgICAgIDw8ICJXZSBz
aG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgIgorICAgICAg
ICAgICAgICAgICAgPDwgImhhZCBhIGZhdGFsIGZhaWx1cmUuIjsKKyAgfQorCisgcHJpdmF0ZToK
KyAgdm9pZCBJbml0KCkgeworICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4g
dGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4iOworICB9Cit9OworCitURVNUX0YoRmF0YWxGYWlsdXJl
SW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LCBGYWlsdXJlSW5Db25zdHJ1Y3RvcikgeworICBBRERf
RkFJTFVSRSgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gdGhlIHRlc3QgYm9keS4gICIKKyAg
ICAgICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBm
aXh0dXJlIGMndG9yICIKKyAgICAgICAgICAgICAgICA8PCAiaGFkIGEgZmF0YWwgZmFpbHVyZS4i
OworfQorCisvLyBUZXN0cyBub24tZmF0YWwgZmFpbHVyZXMgaW4gU2V0VXAoKS4KK2NsYXNzIE5v
bkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHByb3Rl
Y3RlZDoKKyAgdmlydHVhbCB+Tm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QoKSB7CisgICAgRGVp
bml0KCk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgcHJpbnRmKCIoZXhw
ZWN0aW5nIDQgZmFpbHVyZXMpXG4iKTsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBm
YWlsdXJlICMxLCBpbiBTZXRVcCgpLiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24o
KSB7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzLCBpbiBUZWFyRG93bigpLiI7
CisgIH0KKyBwcml2YXRlOgorICB2b2lkIERlaW5pdCgpIHsKKyAgICBGQUlMKCkgPDwgIkV4cGVj
dGVkIGZhaWx1cmUgIzQsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKKyAgfQorfTsKKwor
VEVTVF9GKE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LCBGYWlsdXJlSW5TZXRVcCkgeworICBG
QUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLiI7Cit9
CisKKy8vIFRlc3RzIGZhdGFsIGZhaWx1cmVzIGluIFNldFVwKCkuCitjbGFzcyBGYXRhbEZhaWx1
cmVJblNldFVwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZp
cnR1YWwgfkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0KCkgeworICAgIERlaW5pdCgpOworICB9CisK
KyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIHByaW50ZigiKGV4cGVjdGluZyAzIGZhaWx1
cmVzKVxuIik7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgp
LiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgRkFJTCgpIDw8ICJF
eHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLiI7CisgIH0KKyBwcml2YXRlOgorICB2
b2lkIERlaW5pdCgpIHsKKyAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRo
ZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKKyAgfQorfTsKKworVEVTVF9GKEZhdGFsRmFpbHVyZUlu
U2V0VXBUZXN0LCBGYWlsdXJlSW5TZXRVcCkgeworICBGQUlMKCkgPDwgIlVORVhQRUNURUQgZmFp
bHVyZSBpbiB0aGUgdGVzdCBmdW5jdGlvbi4gICIKKyAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2
ZXIgZ2V0IGhlcmUsIGFzIFNldFVwKCkgZmFpbGVkLiI7Cit9CisKK1RFU1QoQWRkRmFpbHVyZUF0
VGVzdCwgTWVzc2FnZUNvbnRhaW5zU3BlY2lmaWVkRmlsZUFuZExpbmVOdW1iZXIpIHsKKyAgQURE
X0ZBSUxVUkVfQVQoImZvby5jYyIsIDQyKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSBpbiBmb28uY2Mi
OworfQorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorCisvLyBBIHVuYXJ5IGZ1bmN0aW9uIHRo
YXQgbWF5IGRpZS4KK3ZvaWQgRGllSWYoYm9vbCBzaG91bGRfZGllKSB7CisgIEdURVNUX0NIRUNL
Xyghc2hvdWxkX2RpZSkgPDwgIiAtIGRlYXRoIGluc2lkZSBEaWVJZigpLiI7Cit9CisKKy8vIFRl
c3RzIHJ1bm5pbmcgZGVhdGggdGVzdHMgaW4gYSBtdWx0aS10aHJlYWRlZCBjb250ZXh0LgorCisv
LyBVc2VkIGZvciBjb29yZGluYXRpb24gYmV0d2VlbiB0aGUgbWFpbiBhbmQgdGhlIHNwYXduIHRo
cmVhZC4KK3N0cnVjdCBTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMgeworICBTcGF3blRocmVhZE5v
dGlmaWNhdGlvbnMoKSB7fQorCisgIE5vdGlmaWNhdGlvbiBzcGF3bl90aHJlYWRfc3RhcnRlZDsK
KyAgTm90aWZpY2F0aW9uIHNwYXduX3RocmVhZF9va190b190ZXJtaW5hdGU7CisKKyBwcml2YXRl
OgorICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNwYXduVGhyZWFkTm90aWZpY2F0
aW9ucyk7Cit9OworCisvLyBUaGUgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgaW4gdGhlIHRocmVh
ZCBzcGF3biBieSB0aGUKKy8vIE11bHRpcGxlVGhyZWFkcyB0ZXN0IChiZWxvdykuCitzdGF0aWMg
dm9pZCBUaHJlYWRSb3V0aW5lKFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyogbm90aWZpY2F0aW9u
cykgeworICAvLyBTaWduYWxzIHRoZSBtYWluIHRocmVhZCB0aGF0IHRoaXMgdGhyZWFkIGhhcyBz
dGFydGVkLgorICBub3RpZmljYXRpb25zLT5zcGF3bl90aHJlYWRfc3RhcnRlZC5Ob3RpZnkoKTsK
KworICAvLyBXYWl0cyBmb3IgcGVybWlzc2lvbiB0byBmaW5pc2ggZnJvbSB0aGUgbWFpbiB0aHJl
YWQuCisgIG5vdGlmaWNhdGlvbnMtPnNwYXduX3RocmVhZF9va190b190ZXJtaW5hdGUuV2FpdEZv
ck5vdGlmaWNhdGlvbigpOworfQorCisvLyBUaGlzIGlzIGEgZGVhdGgtdGVzdCB0ZXN0LCBidXQg
aXQncyBub3QgbmFtZWQgd2l0aCBhIERlYXRoVGVzdAorLy8gc3VmZml4LiAgSXQgc3RhcnRzIHRo
cmVhZHMgd2hpY2ggbWlnaHQgaW50ZXJmZXJlIHdpdGggbGF0ZXIKKy8vIGRlYXRoIHRlc3RzLCBz
byBpdCBtdXN0IHJ1biBhZnRlciBhbGwgb3RoZXIgZGVhdGggdGVzdHMuCitjbGFzcyBEZWF0aFRl
c3RBbmRNdWx0aVRocmVhZHNUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3Rl
ZDoKKyAgLy8gU3RhcnRzIGEgdGhyZWFkIGFuZCB3YWl0cyBmb3IgaXQgdG8gYmVnaW4uCisgIHZp
cnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICB0aHJlYWRfLnJlc2V0KG5ldyBUaHJlYWRXaXRoUGFy
YW08U3Bhd25UaHJlYWROb3RpZmljYXRpb25zKj4oCisgICAgICAgICZUaHJlYWRSb3V0aW5lLCAm
bm90aWZpY2F0aW9uc18sIE5VTEwpKTsKKyAgICBub3RpZmljYXRpb25zXy5zcGF3bl90aHJlYWRf
c3RhcnRlZC5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7CisgIH0KKyAgLy8gVGVsbHMgdGhlIHRocmVh
ZCB0byBmaW5pc2gsIGFuZCByZWFwcyBpdC4KKyAgLy8gRGVwZW5kaW5nIG9uIHRoZSB2ZXJzaW9u
IG9mIHRoZSB0aHJlYWQgbGlicmFyeSBpbiB1c2UsCisgIC8vIGEgbWFuYWdlciB0aHJlYWQgbWln
aHQgc3RpbGwgYmUgbGVmdCBydW5uaW5nIHRoYXQgd2lsbCBpbnRlcmZlcmUKKyAgLy8gd2l0aCBs
YXRlciBkZWF0aCB0ZXN0cy4gIFRoaXMgaXMgdW5mb3J0dW5hdGUsIGJ1dCB0aGlzIGNsYXNzCisg
IC8vIGNsZWFucyB1cCBhZnRlciBpdHNlbGYgYXMgYmVzdCBpdCBjYW4uCisgIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsKKyAgICBub3RpZmljYXRpb25zXy5zcGF3bl90aHJlYWRfb2tfdG9fdGVy
bWluYXRlLk5vdGlmeSgpOworICB9CisKKyBwcml2YXRlOgorICBTcGF3blRocmVhZE5vdGlmaWNh
dGlvbnMgbm90aWZpY2F0aW9uc187CisgIHRlc3Rpbmc6OmludGVybmFsOjpzY29wZWRfcHRyPFRo
cmVhZFdpdGhQYXJhbTxTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMqPiA+CisgICAgICB0aHJlYWRf
OworfTsKKworI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCisKKy8vIFRoZSBNaXhlZFVw
VGVzdENhc2VUZXN0IHRlc3QgY2FzZSB2ZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IHdpbGwgZmFp
bCBhCisvLyB0ZXN0IGlmIGl0IHVzZXMgYSBkaWZmZXJlbnQgZml4dHVyZSBjbGFzcyB0aGFuIHdo
YXQgb3RoZXIgdGVzdHMgaW4KKy8vIHRoZSBzYW1lIHRlc3QgY2FzZSB1c2UuICBJdCBkZWxpYmVy
YXRlbHkgY29udGFpbnMgdHdvIGZpeHR1cmUKKy8vIGNsYXNzZXMgd2l0aCB0aGUgc2FtZSBuYW1l
IGJ1dCBkZWZpbmVkIGluIGRpZmZlcmVudCBuYW1lc3BhY2VzLgorCisvLyBUaGUgTWl4ZWRVcFRl
c3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QgdGVzdCBjYXNlIHZlcmlmaWVzIHRoYXQKKy8vIHdo
ZW4gdGhlIHVzZXIgZGVmaW5lcyB0d28gdGVzdHMgd2l0aCB0aGUgc2FtZSB0ZXN0IGNhc2UgbmFt
ZSBBTkQKKy8vIHNhbWUgdGVzdCBuYW1lIChidXQgaW4gZGlmZmVyZW50IG5hbWVzcGFjZXMpLCB0
aGUgc2Vjb25kIHRlc3Qgd2lsbAorLy8gZmFpbC4KKworbmFtZXNwYWNlIGZvbyB7CisKK2NsYXNz
IE1peGVkVXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitURVNU
X0YoTWl4ZWRVcFRlc3RDYXNlVGVzdCwgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbykge30KK1RF
U1RfRihNaXhlZFVwVGVzdENhc2VUZXN0LCBTZWNvbmRUZXN0RnJvbU5hbWVzcGFjZUZvbykge30K
KworY2xhc3MgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7Cit9OworCitURVNUX0YoTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFt
ZVRlc3QsCisgICAgICAgVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwpIHt9CisK
K30gIC8vIG5hbWVzcGFjZSBmb28KKworbmFtZXNwYWNlIGJhciB7CisKK2NsYXNzIE1peGVkVXBU
ZXN0Q2FzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCisvLyBUaGUgZm9sbG93
aW5nIHR3byB0ZXN0cyBhcmUgZXhwZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24gdGhlCisvLyBn
b2xkZW4gZmlsZSB0byBjaGVjayB0aGF0IEdvb2dsZSBUZXN0IGdlbmVyYXRlcyB0aGUgcmlnaHQg
ZXJyb3IgbWVzc2FnZS4KK1RFU1RfRihNaXhlZFVwVGVzdENhc2VUZXN0LCBUaGlzU2hvdWxkRmFp
bCkge30KK1RFU1RfRihNaXhlZFVwVGVzdENhc2VUZXN0LCBUaGlzU2hvdWxkRmFpbFRvbykge30K
KworY2xhc3MgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7Cit9OworCisvLyBFeHBlY3RlZCB0byBmYWlsLiAgV2UgcmVseSBvbiB0aGUg
Z29sZGVuIGZpbGUgdG8gY2hlY2sgdGhhdCBHb29nbGUgVGVzdAorLy8gZ2VuZXJhdGVzIHRoZSBy
aWdodCBlcnJvciBtZXNzYWdlLgorVEVTVF9GKE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5h
bWVUZXN0LAorICAgICAgIFRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsKSB7fQor
Cit9ICAvLyBuYW1lc3BhY2UgYmFyCisKKy8vIFRoZSBmb2xsb3dpbmcgdHdvIHRlc3QgY2FzZXMg
dmVyaWZ5IHRoYXQgR29vZ2xlIFRlc3QgY2F0Y2hlcyB0aGUgdXNlcgorLy8gZXJyb3Igb2YgbWl4
aW5nIFRFU1QgYW5kIFRFU1RfRiBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UuICBUaGUgZmlyc3QKKy8v
IHRlc3QgY2FzZSBjaGVja3MgdGhlIHNjZW5hcmlvIHdoZXJlIFRFU1RfRiBhcHBlYXJzIGJlZm9y
ZSBURVNULCBhbmQKKy8vIHRoZSBzZWNvbmQgb25lIGNoZWNrcyB3aGVyZSBURVNUIGFwcGVhcnMg
YmVmb3JlIFRFU1RfRi4KKworY2xhc3MgVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9j
YXNlIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKworVEVTVF9GKFRFU1RfRl9iZWZvcmVf
VEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSwgRGVmaW5lZFVzaW5nVEVTVF9GKSB7fQorCisvLyBFeHBl
Y3RlZCB0byBmYWlsLiAgV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gY2hlY2sgdGhhdCBH
b29nbGUgVGVzdAorLy8gZ2VuZXJhdGVzIHRoZSByaWdodCBlcnJvciBtZXNzYWdlLgorVEVTVChU
RVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UsIERlZmluZWRVc2luZ1RFU1RBbmRT
aG91bGRGYWlsKSB7fQorCitjbGFzcyBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nh
c2UgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitURVNUKFRFU1RfYmVmb3JlX1RFU1Rf
Rl9pbl9zYW1lX3Rlc3RfY2FzZSwgRGVmaW5lZFVzaW5nVEVTVCkge30KKworLy8gRXhwZWN0ZWQg
dG8gZmFpbC4gIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIGNoZWNrIHRoYXQgR29vZ2xl
IFRlc3QKKy8vIGdlbmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KK1RFU1RfRihURVNU
X2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UsIERlZmluZWRVc2luZ1RFU1RfRkFuZFNo
b3VsZEZhaWwpIHsKK30KKworLy8gVXNlZCBmb3IgdGVzdGluZyBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSgpIGFuZCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpLgoraW50IGdsb2JhbF9pbnRlZ2VyID0g
MDsKKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVu
Y2UgZ2xvYmFsIHZhcmlhYmxlcy4KK1RFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQ2Fu
UmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzKSB7CisgIGdsb2JhbF9pbnRlZ2VyID0gMDsKKyAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIEVYUEVDVF9FUSgxLCBnbG9iYWxfaW50ZWdlcikg
PDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7CisgIH0sICJFeHBlY3RlZCBub24tZmF0
YWwgZmFpbHVyZS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RSgpIGNhbiByZWZlcmVuY2UgbG9jYWwgdmFyaWFibGVzCisvLyAoc3RhdGljIG9yIG5vdCkuCitU
RVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIENhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVz
KSB7CisgIGludCBtID0gMDsKKyAgc3RhdGljIGludCBuOworICBuID0gMTsKKyAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoeworICAgIEVYUEVDVF9FUShtLCBuKSA8PCAiRXhwZWN0ZWQgbm9uLWZh
dGFsIGZhaWx1cmUuIjsKKyAgfSwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOworfQor
CisvLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgc3VjY2VlZHMgd2hlbiB0
aGVyZSBpcyBleGFjdGx5CisvLyBvbmUgbm9uLWZhdGFsIGZhaWx1cmUgYW5kIG5vIGZhdGFsIGZh
aWx1cmUuCitURVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIFN1Y2NlZWRzV2hlblRoZXJl
SXNPbmVOb25mYXRhbEZhaWx1cmUpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAg
IEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7CisgIH0sICJF
eHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgaXMgbm8KKy8vIG5vbi1mYXRhbCBm
YWlsdXJlLgorVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUlz
Tm9Ob25mYXRhbEZhaWx1cmUpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIp
OworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMg
dGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgYXJlIHR3bwor
Ly8gbm9uLWZhdGFsIGZhaWx1cmVzLgorVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBG
YWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMpIHsKKyAgcHJpbnRmKCIoZXhwZWN0
aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAgQURE
X0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMS4iOworICAgIEFERF9G
QUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDIuIjsKKyAgfSwgIiIpOwor
fQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0
aGVyZSBpcyBvbmUgZmF0YWwKKy8vIGZhaWx1cmUuCitURVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVy
ZVRlc3QsIEZhaWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUpIHsKKyAgcHJpbnRmKCIoZXhw
ZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAg
RkFJTCgpIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7CisgIH0sICIiKTsKK30KKworLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRl
bWVudCBiZWluZworLy8gdGVzdGVkIHJldHVybnMuCitURVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVy
ZVRlc3QsIEZhaWxzV2hlblN0YXRlbWVudFJldHVybnMpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5n
IGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAgcmV0dXJu
OworICB9LCAiIik7Cit9CisKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBUZXN0cyB0
aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGUgc3RhdGVtZW50IGJl
aW5nCisvLyB0ZXN0ZWQgdGhyb3dzLgorVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBG
YWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVy
ZSlcbiIpOworICB0cnkgeworICAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKKyAgICAgIHRo
cm93IDA7CisgICAgfSwgIiIpOworICB9IGNhdGNoKGludCkgeyAgLy8gTk9MSU5UCisgIH0KK30K
KworI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBUZXN0cyB0aGF0IEVYUEVD
VF9GQVRBTF9GQUlMVVJFKCkgY2FuIHJlZmVyZW5jZSBnbG9iYWwgdmFyaWFibGVzLgorVEVTVChF
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBDYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMpIHsKKyAg
Z2xvYmFsX2ludGVnZXIgPSAwOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CisgICAgQVNTRVJU
X0VRKDEsIGdsb2JhbF9pbnRlZ2VyKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOworICB9
LCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVuY2UgbG9jYWwgc3RhdGljCisvLyB2YXJpYWJsZXMu
CitURVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIENhblJlZmVyZW5jZUxvY2FsU3RhdGljVmFy
aWFibGVzKSB7CisgIHN0YXRpYyBpbnQgbjsKKyAgbiA9IDE7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKHsKKyAgICBBU1NFUlRfRVEoMCwgbikgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsK
KyAgfSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoKSBzdWNjZWVkcyB3aGVuIHRoZXJlIGlzIGV4YWN0bHkKKy8vIG9u
ZSBmYXRhbCBmYWlsdXJlIGFuZCBubyBub24tZmF0YWwgZmFpbHVyZS4KK1RFU1QoRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdCwgU3VjY2VlZHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZSkgeworICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRSh7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWls
dXJlLiI7CisgIH0sICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOworfQorCisvLyBUZXN0cyB0
aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBubyBmYXRhbAor
Ly8gZmFpbHVyZS4KK1RFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVJ
c05vRmF0YWxGYWlsdXJlKSB7CisgIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsK
KyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeworICB9LCAiIik7Cit9CisKKy8vIEEgaGVscGVyIGZv
ciBnZW5lcmF0aW5nIGEgZmF0YWwgZmFpbHVyZS4KK3ZvaWQgRmF0YWxGYWlsdXJlKCkgeworICBG
QUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKK30KKworLy8gVGVzdHMgdGhhdCBF
WFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgYXJlIHR3bworLy8gZmF0YWwg
ZmFpbHVyZXMuCitURVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlQXJl
VHdvRmF0YWxGYWlsdXJlcykgeworICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7
CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKKyAgICBGYXRhbEZhaWx1cmUoKTsKKyAgICBGYXRh
bEZhaWx1cmUoKTsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9G
QUlMVVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBvbmUgbm9uLWZhdGFsCisvLyBmYWlsdXJlLgor
VEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxG
YWlsdXJlKSB7CisgIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRh
bCBmYWlsdXJlLiI7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxf
RkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWluZworLy8gdGVzdGVkIHJldHVy
bnMuCitURVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblN0YXRlbWVudFJldHVy
bnMpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRSh7CisgICAgcmV0dXJuOworICB9LCAiIik7Cit9CisKKyNpZiBHVEVTVF9IQVNf
RVhDRVBUSU9OUworCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMg
d2hlbiB0aGUgc3RhdGVtZW50IGJlaW5nCisvLyB0ZXN0ZWQgdGhyb3dzLgorVEVTVChFeHBlY3RG
YXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MpIHsKKyAgcHJpbnRmKCIo
ZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICB0cnkgeworICAgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKHsKKyAgICAgIHRocm93IDA7CisgICAgfSwgIiIpOworICB9IGNhdGNoKGludCkgeyAgLy8g
Tk9MSU5UCisgIH0KK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBU
aGlzICNpZmRlZiBibG9jayB0ZXN0cyB0aGUgb3V0cHV0IG9mIHZhbHVlLXBhcmFtZXRlcml6ZWQg
dGVzdHMuCisKK3N0ZDo6c3RyaW5nIFBhcmFtTmFtZUZ1bmMoY29uc3QgdGVzdGluZzo6VGVzdFBh
cmFtSW5mbzxzdGQ6OnN0cmluZz4mIGluZm8pIHsKKyAgcmV0dXJuIGluZm8ucGFyYW07Cit9CisK
K2NsYXNzIFBhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHN0ZDo6c3Ry
aW5nPiB7Cit9OworCitURVNUX1AoUGFyYW1UZXN0LCBTdWNjZXNzKSB7CisgIEVYUEVDVF9FUSgi
YSIsIEdldFBhcmFtKCkpOworfQorCitURVNUX1AoUGFyYW1UZXN0LCBGYWlsdXJlKSB7CisgIEVY
UEVDVF9FUSgiYiIsIEdldFBhcmFtKCkpIDw8ICJFeHBlY3RlZCBmYWlsdXJlIjsKK30KKworSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoUHJpbnRpbmdTdHJpbmdzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgUGFyYW1UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6VmFsdWVz
KHN0ZDo6c3RyaW5nKCJhIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1OYW1lRnVu
Yyk7CisKKy8vIFRoaXMgI2lmZGVmIGJsb2NrIHRlc3RzIHRoZSBvdXRwdXQgb2YgdHlwZWQgdGVz
dHMuCisjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citj
bGFzcyBUeXBlZFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitUWVBFRF9URVNU
X0NBU0UoVHlwZWRUZXN0LCB0ZXN0aW5nOjpUeXBlczxpbnQ+KTsKKworVFlQRURfVEVTVChUeXBl
ZFRlc3QsIFN1Y2Nlc3MpIHsKKyAgRVhQRUNUX0VRKDAsIFR5cGVQYXJhbSgpKTsKK30KKworVFlQ
RURfVEVTVChUeXBlZFRlc3QsIEZhaWx1cmUpIHsKKyAgRVhQRUNUX0VRKDEsIFR5cGVQYXJhbSgp
KSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7Cit9CisKK3R5cGVkZWYgdGVzdGluZzo6VHlwZXM8Y2hh
ciwgaW50PiBUeXBlc0ZvclRlc3RXaXRoTmFtZXM7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
Y2xhc3MgVHlwZWRUZXN0V2l0aE5hbWVzIDogcHVibGljIHRlc3Rpbmc6OlRlc3Qge307CisKK2Ns
YXNzIFR5cGVkVGVzdE5hbWVzIHsKKyBwdWJsaWM6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgor
ICBzdGF0aWMgc3RkOjpzdHJpbmcgR2V0TmFtZShpbnQgaSkgeworICAgIGlmICh0ZXN0aW5nOjpp
bnRlcm5hbDo6SXNTYW1lPFQsIGNoYXI+Ojp2YWx1ZSkKKyAgICAgIHJldHVybiBzdGQ6OnN0cmlu
ZygiY2hhcl8iKSArIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhpKTsKKyAgICBpZiAodGVzdGlu
Zzo6aW50ZXJuYWw6OklzU2FtZTxULCBpbnQ+Ojp2YWx1ZSkKKyAgICAgIHJldHVybiBzdGQ6OnN0
cmluZygiaW50XyIpICsgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGkpOworICB9Cit9OworCitU
WVBFRF9URVNUX0NBU0UoVHlwZWRUZXN0V2l0aE5hbWVzLCBUeXBlc0ZvclRlc3RXaXRoTmFtZXMs
IFR5cGVkVGVzdE5hbWVzKTsKKworVFlQRURfVEVTVChUeXBlZFRlc3RXaXRoTmFtZXMsIFN1Y2Nl
c3MpIHt9CisKK1RZUEVEX1RFU1QoVHlwZWRUZXN0V2l0aE5hbWVzLCBGYWlsdXJlKSB7IEZBSUwo
KTsgfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUCisKKy8vIFRoaXMgI2lmZGVm
IGJsb2NrIHRlc3RzIHRoZSBvdXRwdXQgb2YgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorI2lm
IEdURVNUX0hBU19UWVBFRF9URVNUX1AKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBU
eXBlZFRlc3RQIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKworVFlQRURfVEVTVF9DQVNF
X1AoVHlwZWRUZXN0UCk7CisKK1RZUEVEX1RFU1RfUChUeXBlZFRlc3RQLCBTdWNjZXNzKSB7Cisg
IEVYUEVDVF9FUSgwVSwgVHlwZVBhcmFtKCkpOworfQorCitUWVBFRF9URVNUX1AoVHlwZWRUZXN0
UCwgRmFpbHVyZSkgeworICBFWFBFQ1RfRVEoMVUsIFR5cGVQYXJhbSgpKSA8PCAiRXhwZWN0ZWQg
ZmFpbHVyZSI7Cit9CisKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKFR5cGVkVGVzdFAsIFN1
Y2Nlc3MsIEZhaWx1cmUpOworCit0eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPHVuc2lnbmVkIGNoYXIs
IHVuc2lnbmVkIGludD4gVW5zaWduZWRUeXBlczsKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FT
RV9QKFVuc2lnbmVkLCBUeXBlZFRlc3RQLCBVbnNpZ25lZFR5cGVzKTsKKworY2xhc3MgVHlwZWRU
ZXN0UE5hbWVzIHsKKyBwdWJsaWM6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGF0aWMg
c3RkOjpzdHJpbmcgR2V0TmFtZShpbnQgaSkgeworICAgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6
SXNTYW1lPFQsIHVuc2lnbmVkIGNoYXI+Ojp2YWx1ZSkgeworICAgICAgcmV0dXJuIHN0ZDo6c3Ry
aW5nKCJ1bnNpZ25lZF9jaGFyXyIpICsgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGkpOworICAg
IH0KKyAgICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxULCB1bnNpZ25lZCBpbnQ+Ojp2
YWx1ZSkgeworICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCJ1bnNpZ25lZF9pbnRfIikgKyA6OnRl
c3Rpbmc6OlByaW50VG9TdHJpbmcoaSk7CisgICAgfQorICB9Cit9OworCitJTlNUQU5USUFURV9U
WVBFRF9URVNUX0NBU0VfUChVbnNpZ25lZEN1c3RvbU5hbWUsIFR5cGVkVGVzdFAsIFVuc2lnbmVk
VHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlZFRlc3RQTmFtZXMpOwor
CisjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUX1AKKworI2lmIEdURVNUX0hBU19ERUFU
SF9URVNUCisKKy8vIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIHZlcmlmeSB0aGF0IHRl
c3RzIHdob3NlIHRlc3QgY2FzZQorLy8gbmFtZSBlbmRzIHdpdGggRGVhdGhUZXN0IGFyZSBydW4g
Zmlyc3QuCisKK1RFU1QoQURlYXRoVGVzdCwgU2hvdWxkUnVuRmlyc3QpIHsKK30KKworIyBpZiBH
VEVTVF9IQVNfVFlQRURfVEVTVAorCisvLyBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmlsZSB0byB2
ZXJpZnkgdGhhdCB0eXBlZCB0ZXN0cyB3aG9zZSB0ZXN0CisvLyBjYXNlIG5hbWUgZW5kcyB3aXRo
IERlYXRoVGVzdCBhcmUgcnVuIGZpcnN0LgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNz
IEFUeXBlZERlYXRoVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK3R5cGVkZWYg
dGVzdGluZzo6VHlwZXM8aW50LCBkb3VibGU+IE51bWVyaWNUeXBlczsKK1RZUEVEX1RFU1RfQ0FT
RShBVHlwZWREZWF0aFRlc3QsIE51bWVyaWNUeXBlcyk7CisKK1RZUEVEX1RFU1QoQVR5cGVkRGVh
dGhUZXN0LCBTaG91bGRSdW5GaXJzdCkgeworfQorCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfVFlQ
RURfVEVTVAorCisjIGlmIEdURVNUX0hBU19UWVBFRF9URVNUX1AKKworCisvLyBXZSByZWx5IG9u
IHRoZSBnb2xkZW4gZmlsZSB0byB2ZXJpZnkgdGhhdCB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMK
Ky8vIHdob3NlIHRlc3QgY2FzZSBuYW1lIGVuZHMgd2l0aCBEZWF0aFRlc3QgYXJlIHJ1biBmaXJz
dC4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBBVHlwZVBhcmFtRGVhdGhUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKworVFlQRURfVEVTVF9DQVNFX1AoQVR5cGVQYXJh
bURlYXRoVGVzdCk7CisKK1RZUEVEX1RFU1RfUChBVHlwZVBhcmFtRGVhdGhUZXN0LCBTaG91bGRS
dW5GaXJzdCkgeworfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChBVHlwZVBhcmFtRGVh
dGhUZXN0LCBTaG91bGRSdW5GaXJzdCk7CisKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9Q
KE15LCBBVHlwZVBhcmFtRGVhdGhUZXN0LCBOdW1lcmljVHlwZXMpOworCisjIGVuZGlmICAvLyBH
VEVTVF9IQVNfVFlQRURfVEVTVF9QCisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QK
KworLy8gVGVzdHMgdmFyaW91cyBmYWlsdXJlIGNvbmRpdGlvbnMgb2YKKy8vIEVYUEVDVF97LE5P
Tn1GQVRBTF9GQUlMVVJFeyxfT05fQUxMX1RIUkVBRFN9LgorY2xhc3MgRXhwZWN0RmFpbHVyZVRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHVibGljOiAgLy8gTXVzdCBiZSBwdWJsaWMg
YW5kIG5vdCBwcm90ZWN0ZWQgZHVlIHRvIGEgYnVnIGluIGcrKyAzLjQuMi4KKyAgZW51bSBGYWls
dXJlTW9kZSB7CisgICAgRkFUQUxfRkFJTFVSRSwKKyAgICBOT05GQVRBTF9GQUlMVVJFCisgIH07
CisgIHN0YXRpYyB2b2lkIEFkZEZhaWx1cmUoRmFpbHVyZU1vZGUgZmFpbHVyZSkgeworICAgIGlm
IChmYWlsdXJlID09IEZBVEFMX0ZBSUxVUkUpIHsKKyAgICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQg
ZmF0YWwgZmFpbHVyZS4iOworICAgIH0gZWxzZSB7CisgICAgICBBRERfRkFJTFVSRSgpIDw8ICJF
eHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOworICAgIH0KKyAgfQorfTsKKworVEVTVF9GKEV4
cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3RGYXRhbEZhaWx1cmUpIHsKKyAgLy8gRXhwZWN0ZWQgZmF0
YWwgZmFpbHVyZSwgYnV0IHN1Y2NlZWRzLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJl
KVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKFNVQ0NFRUQoKSwgIkV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuIik7CisgIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBub24t
ZmF0YWwgZmFpbHVyZS4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpLCAiRXhwZWN0
ZWQgbm9uLWZhdGFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgImZhaWx1cmUuIik7CisgIC8v
IFdyb25nIG1lc3NhZ2UuCisgIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKKyAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJFKSwgIlNvbWUgb3Ro
ZXIgZmF0YWwgZmFpbHVyZSAiCisgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZC4iKTsK
K30KKworVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3ROb25GYXRhbEZhaWx1cmUpIHsK
KyAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4KKyAgcHJpbnRm
KCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShT
VUNDRUVEKCksICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKKyAgLy8gRXhwZWN0ZWQg
bm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBmYXRhbCBmYWlsdXJlLgorICBwcmludGYoIihl
eHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZh
aWx1cmUoRkFUQUxfRkFJTFVSRSksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOworICAvLyBX
cm9uZyBtZXNzYWdlLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJTFVSRSksICJTb21l
IG90aGVyIG5vbi1mYXRhbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsdXJlLiIp
OworfQorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorCitjbGFzcyBFeHBlY3RGYWlsdXJlV2l0
aFRocmVhZHNUZXN0IDogcHVibGljIEV4cGVjdEZhaWx1cmVUZXN0IHsKKyBwcm90ZWN0ZWQ6Cisg
IHN0YXRpYyB2b2lkIEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZhaWx1cmVNb2RlIGZhaWx1cmUp
IHsKKyAgICBUaHJlYWRXaXRoUGFyYW08RmFpbHVyZU1vZGU+IHRocmVhZCgmQWRkRmFpbHVyZSwg
ZmFpbHVyZSwgTlVMTCk7CisgICAgdGhyZWFkLkpvaW4oKTsKKyAgfQorfTsKKworVEVTVF9GKEV4
cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QsIEV4cGVjdEZhdGFsRmFpbHVyZSkgeworICAvLyBX
ZSBvbmx5IGludGVyY2VwdCB0aGUgY3VycmVudCB0aHJlYWQuCisgIHByaW50ZigiKGV4cGVjdGlu
ZyAyIGZhaWx1cmVzKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmVJbk90
aGVyVGhyZWFkKEZBVEFMX0ZBSUxVUkUpLAorICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0
ZWQgZmF0YWwgZmFpbHVyZS4iKTsKK30KKworVEVTVF9GKEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFk
c1Rlc3QsIEV4cGVjdE5vbkZhdGFsRmFpbHVyZSkgeworICAvLyBXZSBvbmx5IGludGVyY2VwdCB0
aGUgY3VycmVudCB0aHJlYWQuCisgIHByaW50ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKE5PTkZB
VEFMX0ZBSUxVUkUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgbm9uLWZh
dGFsIGZhaWx1cmUuIik7Cit9CisKK3R5cGVkZWYgRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVz
dCBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3Q7CisKKy8vIFRlc3RzIHRoYXQg
dGhlIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyIG9ubHkgY2F0Y2hlcyBmYWlsdXJl
cyBmcm9tCisvLyB0aGUgY3VycmVudCB0aHJlYWQgaWYgaXQgaXMgaW5zdGFudGlhdGVkIHdpdGgg
SU5URVJDRVBUX09OTFlfQ1VSUkVOVF9USFJFQUQuCitURVNUX0YoU2NvcGVkRmFrZVRlc3RQYXJ0
UmVzdWx0UmVwb3J0ZXJUZXN0LCBJbnRlcmNlcHRPbmx5Q3VycmVudFRocmVhZCkgeworICBwcmlu
dGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOworICBUZXN0UGFydFJlc3VsdEFycmF5IHJl
c3VsdHM7CisgIHsKKyAgICBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlciByZXBvcnRl
cigKKyAgICAgICAgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6OklOVEVSQ0VQVF9P
TkxZX0NVUlJFTlRfVEhSRUFELAorICAgICAgICAmcmVzdWx0cyk7CisgICAgQWRkRmFpbHVyZUlu
T3RoZXJUaHJlYWQoRkFUQUxfRkFJTFVSRSk7CisgICAgQWRkRmFpbHVyZUluT3RoZXJUaHJlYWQo
Tk9ORkFUQUxfRkFJTFVSRSk7CisgIH0KKyAgLy8gVGhlIHR3byBmYWlsdXJlcyBzaG91bGQgbm90
IGhhdmUgYmVlbiBpbnRlcmNlcHRlZC4KKyAgRVhQRUNUX0VRKDAsIHJlc3VsdHMuc2l6ZSgpKSA8
PCAiVGhpcyBzaG91bGRuJ3QgZmFpbC4iOworfQorCisjZW5kaWYgIC8vIEdURVNUX0lTX1RIUkVB
RFNBRkUKKworVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3RGYXRhbEZhaWx1cmVPbkFs
bFRocmVhZHMpIHsKKyAgLy8gRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0IHN1Y2NlZWRzLgor
ICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFX09OX0FMTF9USFJFQURTKFNVQ0NFRUQoKSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7
CisgIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBub24tZmF0YWwgZmFpbHVy
ZS4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRV9PTl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZh
aWx1cmUuIik7CisgIC8vIFdyb25nIG1lc3NhZ2UuCisgIHByaW50ZigiKGV4cGVjdGluZyAxIGZh
aWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoQWRkRmFp
bHVyZShGQVRBTF9GQUlMVVJFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBlY3RlZC4iKTsKK30KKworVEVTVF9GKEV4
cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKKyAg
Ly8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4KKyAgcHJpbnRmKCIo
ZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9B
TExfVEhSRUFEUyhTVUNDRUVEKCksICJFeHBlY3RlZCBub24tZmF0YWwgIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbHVyZS4iKTsKKyAgLy8gRXhwZWN0ZWQg
bm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBmYXRhbCBmYWlsdXJlLgorICBwcmludGYoIihl
eHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FM
TF9USFJFQURTKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOworICAvLyBX
cm9uZyBtZXNzYWdlLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUoTk9ORkFUQUxf
RkFJTFVSRSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb21l
IG90aGVyIG5vbi1mYXRhbCBmYWlsdXJlLiIpOworfQorCisKKy8vIFR3byB0ZXN0IGVudmlyb25t
ZW50cyBmb3IgdGVzdGluZyB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKS4KKwor
Y2xhc3MgRm9vRW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6RW52aXJvbm1lbnQgeworIHB1
YmxpYzoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIHByaW50ZigiJXMiLCAiRm9vRW52
aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLlxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVh
ckRvd24oKSB7CisgICAgcHJpbnRmKCIlcyIsICJGb29FbnZpcm9ubWVudDo6VGVhckRvd24oKSBj
YWxsZWQuXG4iKTsKKyAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKKyAg
fQorfTsKKworY2xhc3MgQmFyRW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6RW52aXJvbm1l
bnQgeworIHB1YmxpYzoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIHByaW50ZigiJXMi
LCAiQmFyRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLlxuIik7CisgIH0KKworICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7CisgICAgcHJpbnRmKCIlcyIsICJCYXJFbnZpcm9ubWVudDo6VGVh
ckRvd24oKSBjYWxsZWQuXG4iKTsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24t
ZmF0YWwgZmFpbHVyZS4iOworICB9Cit9OworCisvLyBUaGUgbWFpbiBmdW5jdGlvbi4KKy8vCisv
LyBUaGUgaWRlYSBpcyB0byB1c2UgR29vZ2xlIFRlc3QgdG8gcnVuIGFsbCB0aGUgdGVzdHMgd2Ug
aGF2ZSBkZWZpbmVkIChzb21lCisvLyBvZiB0aGVtIGFyZSBpbnRlbmRlZCB0byBmYWlsKSwgYW5k
IHRoZW4gY29tcGFyZSB0aGUgdGVzdCByZXN1bHRzCisvLyB3aXRoIHRoZSAiZ29sZGVuIiBmaWxl
LgoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZM
QUcocHJpbnRfdGltZSkgPSBmYWxzZTsKKworICAvLyBXZSBqdXN0IHJ1biB0aGUgdGVzdHMsIGtu
b3dpbmcgc29tZSBvZiB0aGVtIGFyZSBpbnRlbmRlZCB0byBmYWlsLgorICAvLyBXZSB3aWxsIHVz
ZSBhIHNlcGFyYXRlIFB5dGhvbiBzY3JpcHQgdG8gY29tcGFyZSB0aGUgb3V0cHV0IG9mCisgIC8v
IHRoaXMgcHJvZ3JhbSB3aXRoIHRoZSBnb2xkZW4gZmlsZS4KKworICAvLyBJdCdzIGhhcmQgdG8g
dGVzdCBJbml0R29vZ2xlVGVzdCgpIGRpcmVjdGx5LCBhcyBpdCBoYXMgbWFueQorICAvLyBnbG9i
YWwgc2lkZSBlZmZlY3RzLiAgVGhlIGZvbGxvd2luZyBsaW5lIHNlcnZlcyBhcyBhIHNhbml0eSB0
ZXN0CisgIC8vIGZvciBpdC4KKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3Yp
OworICBib29sIGludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cyA9Cisg
ICAgICBzdGQ6OmNvdW50KGFyZ3YsIGFyZ3YgKyBhcmdjLAorICAgICAgICAgICAgICAgICBzdGQ6
OnN0cmluZygiaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzIikpID4g
MDsKKworI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCisgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6
R1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkgIT0gIiIpIHsKKyAgICAvLyBTa2lw
IHRoZSB1c3VhbCBvdXRwdXQgY2FwdHVyaW5nIGlmIHdlJ3JlIHJ1bm5pbmcgYXMgdGhlIGNoaWxk
CisgICAgLy8gcHJvY2VzcyBvZiBhbiB0aHJlYWRzYWZlLXN0eWxlIGRlYXRoIHRlc3QuCisjIGlm
IEdURVNUX09TX1dJTkRPV1MKKyAgICBwb3NpeDo6RlJlb3BlbigibnVsOiIsICJ3Iiwgc3Rkb3V0
KTsKKyMgZWxzZQorICAgIHBvc2l4OjpGUmVvcGVuKCIvZGV2L251bGwiLCAidyIsIHN0ZG91dCk7
CisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisgICAgcmV0dXJuIFJVTl9BTExfVEVTVFMo
KTsKKyAgfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisgIGlmIChpbnRlcm5h
bF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMpCisgICAgcmV0dXJuIFJVTl9BTExf
VEVTVFMoKTsKKworICAvLyBSZWdpc3RlcnMgdHdvIGdsb2JhbCB0ZXN0IGVudmlyb25tZW50cy4K
KyAgLy8gVGhlIGdvbGRlbiBmaWxlIHZlcmlmaWVzIHRoYXQgdGhleSBhcmUgc2V0IHVwIGluIHRo
ZSBvcmRlciB0aGV5CisgIC8vIGFyZSByZWdpc3RlcmVkLCBhbmQgdG9ybiBkb3duIGluIHRoZSBy
ZXZlcnNlIG9yZGVyLgorICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEZv
b0Vudmlyb25tZW50KTsKKyAgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBC
YXJFbnZpcm9ubWVudCk7CisjaWYgX01TQ19WRVIKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklO
R1NfUE9QXygpICAvLyAgNDEyNworI2VuZGlmICAvLyAuIF9NU0NfVkVSICAgIAorICByZXR1cm4g
UnVuQWxsVGVzdHMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdC5weSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEt
dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yYTA4NDc3YTc3ZWJkZjBhYTU1ZjIzNDQ0YWJkNmI4MzlkOTBi
YTQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMS10ZXN0LnB5CkBAIC0wLDAgKzEsNjMgQEAK
KyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBt
ZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisj
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVmVyaWZpZXMgdGhh
dCBHb29nbGUgVGVzdCB3YXJucyB0aGUgdXNlciB3aGVuIG5vdCBpbml0aWFsaXplZCBwcm9wZXJs
eS4iIiIKKworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworYmluYXJ5X25hbWUgPSAnZ29vZ2xl
dGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdF8nCitDT01NQU5EID0gZ3Rlc3RfdGVz
dF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoYmluYXJ5X25hbWUpCisKKworZGVmIEFzc2Vy
dChjb25kaXRpb24pOgorICBpZiBub3QgY29uZGl0aW9uOgorICAgIHJhaXNlIEFzc2VydGlvbkVy
cm9yCisKKworZGVmIFRlc3RFeGl0Q29kZUFuZE91dHB1dChjb21tYW5kKToKKyAgIiIiUnVucyB0
aGUgZ2l2ZW4gY29tbWFuZCBhbmQgdmVyaWZpZXMgaXRzIGV4aXQgY29kZSBhbmQgb3V0cHV0LiIi
IgorCisgIGVyciA9ICgnUGFyYW1ldGVyaXplZCB0ZXN0IG5hbWUgXCciSW52YWxpZFdpdGhRdW90
ZXMiXCcgaXMgaW52YWxpZCcpCisKKyAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhj
b21tYW5kKQorICBBc3NlcnQocC50ZXJtaW5hdGVkX2J5X3NpZ25hbCkKKworICAjIFZlcmlmeSB0
aGUgb3V0cHV0IG1lc3NhZ2UgY29udGFpbnMgYXBwcm9wcmlhdGUgb3V0cHV0CisgIEFzc2VydChl
cnIgaW4gcC5vdXRwdXQpCisKKworY2xhc3MgR1Rlc3RQYXJhbVRlc3RJbnZhbGlkTmFtZTFUZXN0
KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorCisgIGRlZiB0ZXN0RXhpdENvZGVBbmRPdXRw
dXQoc2VsZik6CisgICAgVGVzdEV4aXRDb2RlQW5kT3V0cHV0KENPTU1BTkQpCisKKworaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWlu
dmFsaWQtbmFtZTEtdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhOTUx
NTViMjNhNzg3MWRiNWQyNTQ5YTBlOWY5MDUwNzVhOTM5OTQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlk
LW5hbWUxLXRlc3RfLmNjCkBAIC0wLDAgKzEsNTAgQEAKKy8vIENvcHlyaWdodCAyMDE1LCBHb29n
bGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFt
ZXNwYWNlIHsKK2NsYXNzIER1bW15VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08Y29uc3QgY2hhciAqPiB7fTsKKworVEVTVF9QKER1bW15VGVzdCwgRHVtbXkpIHsKK30KKwor
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSW52YWxpZFRlc3ROYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgRHVtbXlUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpW
YWx1ZXMoIkludmFsaWRXaXRoUXVvdGVzIiksCisgICAgICAgICAgICAgICAgICAgICAgICA6OnRl
c3Rpbmc6OlByaW50VG9TdHJpbmdQYXJhbU5hbWUoKSk7CisKK30gIC8vIG5hbWVzcGFjZQorCitp
bnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CisgIHRlc3Rpbmc6OkluaXRHb29nbGVU
ZXN0KCZhcmdjLCBhcmd2KTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3Qt
aW52YWxpZC1uYW1lMi10ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiODM4
ZjQ2MzIyOTFkMWNiNzhlNGExMWVjM2FiMGM3NzNiOTRkNWMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlk
LW5hbWUyLXRlc3QucHkKQEAgLTAsMCArMSw2MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
CisjIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisiIiJWZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IHdhcm5zIHRoZSB1
c2VyIHdoZW4gbm90IGluaXRpYWxpemVkIHByb3Blcmx5LiIiIgorCitpbXBvcnQgZ3Rlc3RfdGVz
dF91dGlscworCitiaW5hcnlfbmFtZSA9ICdnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1u
YW1lMi10ZXN0XycKK0NPTU1BTkQgPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxl
UGF0aChiaW5hcnlfbmFtZSkKKworCitkZWYgQXNzZXJ0KGNvbmRpdGlvbik6CisgIGlmIG5vdCBj
b25kaXRpb246CisgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKKworCitkZWYgVGVzdEV4aXRDb2Rl
QW5kT3V0cHV0KGNvbW1hbmQpOgorICAiIiJSdW5zIHRoZSBnaXZlbiBjb21tYW5kIGFuZCB2ZXJp
ZmllcyBpdHMgZXhpdCBjb2RlIGFuZCBvdXRwdXQuIiIiCisKKyAgZXJyID0gKCdEdXBsaWNhdGUg
cGFyYW1ldGVyaXplZCB0ZXN0IG5hbWUgXCdhXCcnKQorCisgIHAgPSBndGVzdF90ZXN0X3V0aWxz
LlN1YnByb2Nlc3MoY29tbWFuZCkKKyAgQXNzZXJ0KHAudGVybWluYXRlZF9ieV9zaWduYWwpCisK
KyAgIyBDaGVjayBmb3IgYXBwcm9wcmlhdGUgb3V0cHV0CisgIEFzc2VydChlcnIgaW4gcC5vdXRw
dXQpCisKKworY2xhc3MgR1Rlc3RQYXJhbVRlc3RJbnZhbGlkTmFtZTJUZXN0KGd0ZXN0X3Rlc3Rf
dXRpbHMuVGVzdENhc2UpOgorCisgIGRlZiB0ZXN0RXhpdENvZGVBbmRPdXRwdXQoc2VsZik6Cisg
ICAgVGVzdEV4aXRDb2RlQW5kT3V0cHV0KENPTU1BTkQpCisKK2lmIF9fbmFtZV9fID09ICdfX21h
aW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRl
c3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRl
c3QtaW52YWxpZC1uYW1lMi10ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjA5MzQ5MGU5ZGEyZjAyZWQy
OGEyZDA3MTI0NDVlMjQxN2NiZGEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0Xy5j
YwpAQCAtMCwwICsxLDU1IEBACisvLyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4KKy8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisv
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CitjbGFz
cyBEdW1teVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGNvbnN0IGNoYXIg
Kj4ge307CisKK3N0ZDo6c3RyaW5nIFN0cmluZ1BhcmFtVGVzdFN1ZmZpeCgKKyAgICBjb25zdCB0
ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPGNvbnN0IGNoYXIqPiYgaW5mbykgeworICByZXR1cm4gc3Rk
OjpzdHJpbmcoaW5mby5wYXJhbSk7Cit9CisKK1RFU1RfUChEdW1teVRlc3QsIER1bW15KSB7Cit9
CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKER1cGxpY2F0ZVRlc3ROYW1lcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIER1bW15VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVz
dGluZzo6VmFsdWVzKCJhIiwgImIiLCAiYSIsICJjIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICBTdHJpbmdQYXJhbVRlc3RTdWZmaXgpOworfSAgLy8gbmFtZXNwYWNlCisKK2ludCBtYWluKGlu
dCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2Ms
IGFyZ3YpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQorCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY3ODljYWIyNzA3NDE0YzQ2NDg0OTZkN2I5ZmJhYjRmZTUzMWYwYjcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtcGFyYW0tdGVzdC10ZXN0LmNjCkBAIC0wLDAgKzEsMTEwOSBAQAorLy8gQ29weXJpZ2h0IDIw
MDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisv
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gVGVzdHMgZm9yIEdvb2dsZSBU
ZXN0IGl0c2VsZi4gVGhpcyBmaWxlIHZlcmlmaWVzIHRoYXQgdGhlIHBhcmFtZXRlcgorLy8gZ2Vu
ZXJhdG9ycyBvYmplY3RzIHByb2R1Y2UgY29ycmVjdCBwYXJhbWV0ZXIgc2VxdWVuY2VzIGFuZCB0
aGF0CisvLyBHb29nbGUgVGVzdCBydW50aW1lIGluc3RhbnRpYXRlcyBjb3JyZWN0IHRlc3RzIGZy
b20gdGhvc2Ugc2VxdWVuY2VzLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworIyBpbmNs
dWRlIDxhbGdvcml0aG0+CisjIGluY2x1ZGUgPGlvc3RyZWFtPgorIyBpbmNsdWRlIDxsaXN0Pgor
IyBpbmNsdWRlIDxzc3RyZWFtPgorIyBpbmNsdWRlIDxzdHJpbmc+CisjIGluY2x1ZGUgPHZlY3Rv
cj4KKworIyBpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiICAvLyBmb3IgVW5pdFRl
c3RPcHRpb25zCisjIGluY2x1ZGUgInRlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuaCIK
KwordXNpbmcgOjpzdGQ6OnZlY3RvcjsKK3VzaW5nIDo6c3RkOjpzb3J0OworCit1c2luZyA6OnRl
c3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudDsKK3VzaW5nIDo6dGVzdGluZzo6Qm9vbDsK
K3VzaW5nIDo6dGVzdGluZzo6TWVzc2FnZTsKK3VzaW5nIDo6dGVzdGluZzo6UmFuZ2U7Cit1c2lu
ZyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW07Cit1c2luZyA6OnRlc3Rpbmc6OlZhbHVlczsKK3Vz
aW5nIDo6dGVzdGluZzo6VmFsdWVzSW47CisKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKK3VzaW5n
IDo6dGVzdGluZzo6Q29tYmluZTsKK3VzaW5nIDo6dGVzdGluZzo6Z2V0OwordXNpbmcgOjp0ZXN0
aW5nOjptYWtlX3R1cGxlOwordXNpbmcgOjp0ZXN0aW5nOjp0dXBsZTsKKyMgZW5kaWYgIC8vIEdU
RVNUX0hBU19DT01CSU5FCisKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJh
dG9yOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOworCisvLyBQ
cmludHMgYSB2YWx1ZSB0byBhIHN0cmluZy4KKy8vCisvLyBGSVhNRTogcmVtb3ZlIFByaW50VmFs
dWUoKSB3aGVuIHdlIG1vdmUgbWF0Y2hlcnMgYW5kCisvLyBFWFBFQ1RfVEhBVCgpIGZyb20gR29v
Z2xlIE1vY2sgdG8gR29vZ2xlIFRlc3QuICBBdCB0aGF0IHRpbWUsIHdlCisvLyBjYW4gd3JpdGUg
RVhQRUNUX1RIQVQoeCwgRXEoeSkpIHRvIGNvbXBhcmUgdHdvIHR1cGxlcyB4IGFuZCB5LCBhcwor
Ly8gRVhQRUNUX1RIQVQoKSBhbmQgdGhlIG1hdGNoZXJzIGtub3cgaG93IHRvIHByaW50IHR1cGxl
cy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKGNvbnN0
IFQmIHZhbHVlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOworICBzdHJlYW0gPDwg
dmFsdWU7CisgIHJldHVybiBzdHJlYW0uc3RyKCk7Cit9CisKKyMgaWYgR1RFU1RfSEFTX0NPTUJJ
TkUKKworLy8gVGhlc2Ugb3ZlcmxvYWRzIGFsbG93IHByaW50aW5nIHR1cGxlcyBpbiBvdXIgdGVz
dHMuICBXZSBjYW5ub3QKKy8vIGRlZmluZSBhbiBvcGVyYXRvcjw8IGZvciB0dXBsZXMsIGFzIHRo
YXQgZGVmaW5pdGlvbiBuZWVkcyB0byBiZSBpbgorLy8gdGhlIHN0ZCBuYW1lc3BhY2UgaW4gb3Jk
ZXIgdG8gYmUgcGlja2VkIHVwIGJ5IEdvb2dsZSBUZXN0IHZpYQorLy8gQXJndW1lbnQtRGVwZW5k
ZW50IExvb2t1cCwgeWV0IGRlZmluaW5nIGFueXRoaW5nIGluIHRoZSBzdGQKKy8vIG5hbWVzcGFj
ZSBpbiBub24tU1RMIGNvZGUgaXMgdW5kZWZpbmVkIGJlaGF2aW9yLgorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKGNvbnN0IHR1
cGxlPFQxLCBUMj4mIHZhbHVlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOworICBz
dHJlYW0gPDwgIigiIDw8IGdldDwwPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8MT4odmFsdWUpIDw8
ICIpIjsKKyAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Cis6OnN0ZDo6c3RyaW5nIFByaW50VmFsdWUoY29u
c3QgdHVwbGU8VDEsIFQyLCBUMz4mIHZhbHVlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3Ry
ZWFtOworICBzdHJlYW0gPDwgIigiIDw8IGdldDwwPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8MT4o
dmFsdWUpCisgICAgICAgICA8PCAiLCAiPDwgZ2V0PDI+KHZhbHVlKSA8PCAiKSI7CisgIHJldHVy
biBzdHJlYW0uc3RyKCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIs
IHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgICAgICAgdHlwZW5h
bWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQx
MD4KKzo6c3RkOjpzdHJpbmcgUHJpbnRWYWx1ZSgKKyAgICBjb25zdCB0dXBsZTxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTA+JiB2YWx1ZSkgeworICA6OnN0ZDo6c3RyaW5n
c3RyZWFtIHN0cmVhbTsKKyAgc3RyZWFtIDw8ICIoIiA8PCBnZXQ8MD4odmFsdWUpIDw8ICIsICIg
PDwgZ2V0PDE+KHZhbHVlKQorICAgICAgICAgPDwgIiwgIjw8IGdldDwyPih2YWx1ZSkgPDwgIiwg
IiA8PCBnZXQ8Mz4odmFsdWUpCisgICAgICAgICA8PCAiLCAiPDwgZ2V0PDQ+KHZhbHVlKSA8PCAi
LCAiIDw8IGdldDw1Pih2YWx1ZSkKKyAgICAgICAgIDw8ICIsICI8PCBnZXQ8Nj4odmFsdWUpIDw8
ICIsICIgPDwgZ2V0PDc+KHZhbHVlKQorICAgICAgICAgPDwgIiwgIjw8IGdldDw4Pih2YWx1ZSkg
PDwgIiwgIiA8PCBnZXQ8OT4odmFsdWUpIDw8ICIpIjsKKyAgcmV0dXJuIHN0cmVhbS5zdHIoKTsK
K30KKworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKKworLy8gVmVyaWZpZXMgdGhhdCBh
IHNlcXVlbmNlIGdlbmVyYXRlZCBieSB0aGUgZ2VuZXJhdG9yIGFuZCBhY2Nlc3NlZAorLy8gdmlh
IHRoZSBpdGVyYXRvciBvYmplY3QgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgb25lIHVzaW5nIEdvb2ds
ZSBUZXN0CisvLyBhc3NlcnRpb25zLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgor
dm9pZCBWZXJpZnlHZW5lcmF0b3IoY29uc3QgUGFyYW1HZW5lcmF0b3I8VD4mIGdlbmVyYXRvciwK
KyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQgKCZleHBlY3RlZF92YWx1ZXMpW05dKSB7Cisg
IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ+OjppdGVyYXRvciBpdCA9IGdlbmVyYXRvci5iZWdp
bigpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IE47ICsraSkgeworICAgIEFTU0VSVF9GQUxT
RShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpCisgICAgICAgIDw8ICJBdCBlbGVtZW50ICIgPDwgaSA8
PCAiIHdoZW4gYWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRvciAiCisgICAgICAgIDw8ICJjcmVhdGVk
IHdpdGggdGhlIGNvcHkgY29uc3RydWN0b3IuXG4iOworICAgIC8vIFdlIGNhbm5vdCB1c2UgRVhQ
RUNUX0VRKCkgaGVyZSBhcyB0aGUgdmFsdWVzIG1heSBiZSB0dXBsZXMsCisgICAgLy8gd2hpY2gg
ZG9uJ3Qgc3VwcG9ydCA8PC4KKyAgICBFWFBFQ1RfVFJVRShleHBlY3RlZF92YWx1ZXNbaV0gPT0g
Kml0KQorICAgICAgICA8PCAid2hlcmUgaSBpcyAiIDw8IGkKKyAgICAgICAgPDwgIiwgZXhwZWN0
ZWRfdmFsdWVzW2ldIGlzICIgPDwgUHJpbnRWYWx1ZShleHBlY3RlZF92YWx1ZXNbaV0pCisgICAg
ICAgIDw8ICIsICppdCBpcyAiIDw8IFByaW50VmFsdWUoKml0KQorICAgICAgICA8PCAiLCBhbmQg
J2l0JyBpcyBhbiBpdGVyYXRvciBjcmVhdGVkIHdpdGggdGhlIGNvcHkgY29uc3RydWN0b3IuXG4i
OworICAgICsraXQ7CisgIH0KKyAgRVhQRUNUX1RSVUUoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKQor
ICAgICAgICA8PCAiQXQgdGhlIHByZXN1bWVkIGVuZCBvZiBzZXF1ZW5jZSB3aGVuIGFjY2Vzc2lu
ZyB2aWEgYW4gaXRlcmF0b3IgIgorICAgICAgICA8PCAiY3JlYXRlZCB3aXRoIHRoZSBjb3B5IGNv
bnN0cnVjdG9yLlxuIjsKKworICAvLyBUZXN0IHRoZSBpdGVyYXRvciBhc3NpZ25tZW50LiBUaGUg
Zm9sbG93aW5nIGxpbmVzIHZlcmlmeSB0aGF0CisgIC8vIHRoZSBzZXF1ZW5jZSBhY2Nlc3NlZCB2
aWEgYW4gaXRlcmF0b3IgaW5pdGlhbGl6ZWQgdmlhIHRoZQorICAvLyBhc3NpZ25tZW50IG9wZXJh
dG9yIChhcyBvcHBvc2VkIHRvIGEgY29weSBjb25zdHJ1Y3RvcikgbWF0Y2hlcworICAvLyBqdXN0
IHRoZSBzYW1lLgorICBpdCA9IGdlbmVyYXRvci5iZWdpbigpOworICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IE47ICsraSkgeworICAgIEFTU0VSVF9GQUxTRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkp
CisgICAgICAgIDw8ICJBdCBlbGVtZW50ICIgPDwgaSA8PCAiIHdoZW4gYWNjZXNzaW5nIHZpYSBh
biBpdGVyYXRvciAiCisgICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhlIGFzc2lnbm1lbnQgb3Bl
cmF0b3IuXG4iOworICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkX3ZhbHVlc1tpXSA9PSAqaXQpCisg
ICAgICAgIDw8ICJ3aGVyZSBpIGlzICIgPDwgaQorICAgICAgICA8PCAiLCBleHBlY3RlZF92YWx1
ZXNbaV0gaXMgIiA8PCBQcmludFZhbHVlKGV4cGVjdGVkX3ZhbHVlc1tpXSkKKyAgICAgICAgPDwg
IiwgKml0IGlzICIgPDwgUHJpbnRWYWx1ZSgqaXQpCisgICAgICAgIDw8ICIsIGFuZCAnaXQnIGlz
IGFuIGl0ZXJhdG9yIGNyZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rvci5cbiI7CisgICAg
KytpdDsKKyAgfQorICBFWFBFQ1RfVFJVRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpCisgICAgICAg
IDw8ICJBdCB0aGUgcHJlc3VtZWQgZW5kIG9mIHNlcXVlbmNlIHdoZW4gYWNjZXNzaW5nIHZpYSBh
biBpdGVyYXRvciAiCisgICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhlIGFzc2lnbm1lbnQgb3Bl
cmF0b3IuXG4iOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVmVyaWZ5R2VuZXJh
dG9ySXNFbXB0eShjb25zdCBQYXJhbUdlbmVyYXRvcjxUPiYgZ2VuZXJhdG9yKSB7CisgIHR5cGVu
YW1lIFBhcmFtR2VuZXJhdG9yPFQ+OjppdGVyYXRvciBpdCA9IGdlbmVyYXRvci5iZWdpbigpOwor
ICBFWFBFQ1RfVFJVRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpOworCisgIGl0ID0gZ2VuZXJhdG9y
LmJlZ2luKCk7CisgIEVYUEVDVF9UUlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSk7Cit9CisKKy8v
IEdlbmVyYXRvciB0ZXN0cy4gVGhleSB0ZXN0IHRoYXQgZWFjaCBvZiB0aGUgcHJvdmlkZWQgZ2Vu
ZXJhdG9yIGZ1bmN0aW9ucworLy8gZ2VuZXJhdGVzIGFuIGV4cGVjdGVkIHNlcXVlbmNlIG9mIHZh
bHVlcy4gVGhlIGdlbmVyYWwgdGVzdCBwYXR0ZXJuCisvLyBpbnN0YW50aWF0ZXMgYSBnZW5lcmF0
b3IgdXNpbmcgb25lIG9mIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb25zLAorLy8gY2hlY2tzIHRoZSBz
ZXF1ZW5jZSBwcm9kdWNlZCBieSB0aGUgZ2VuZXJhdG9yIHVzaW5nIGl0cyBpdGVyYXRvciBBUEks
CisvLyBhbmQgdGhlbiByZXNldHMgdGhlIGl0ZXJhdG9yIGJhY2sgdG8gdGhlIGJlZ2lubmluZyBv
ZiB0aGUgc2VxdWVuY2UKKy8vIGFuZCBjaGVja3MgdGhlIHNlcXVlbmNlIGFnYWluLgorCisvLyBU
ZXN0cyB0aGF0IGl0ZXJhdG9ycyBwcm9kdWNlZCBieSBnZW5lcmF0b3IgZnVuY3Rpb25zIGNvbmZv
cm0gdG8gdGhlCisvLyBGb3J3YXJkSXRlcmF0b3IgY29uY2VwdC4KK1RFU1QoSXRlcmF0b3JUZXN0
LCBQYXJhbUl0ZXJhdG9yQ29uZm9ybXNUb0ZvcndhcmRJdGVyYXRvckNvbmNlcHQpIHsKKyAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAxMCk7CisgIFBhcmFtR2VuZXJh
dG9yPGludD46Oml0ZXJhdG9yIGl0ID0gZ2VuLmJlZ2luKCk7CisKKyAgLy8gVmVyaWZpZXMgdGhh
dCBpdGVyYXRvciBpbml0aWFsaXphdGlvbiB3b3JrcyBhcyBleHBlY3RlZC4KKyAgUGFyYW1HZW5l
cmF0b3I8aW50Pjo6aXRlcmF0b3IgaXQyID0gaXQ7CisgIEVYUEVDVF9UUlVFKCppdCA9PSAqaXQy
KSA8PCAiSW5pdGlhbGl6ZWQgaXRlcmF0b3JzIG11c3QgcG9pbnQgdG8gdGhlICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8ICJlbGVtZW50IHNhbWUgYXMgaXRzIHNvdXJjZSBwb2ludHMg
dG8iOworCisgIC8vIFZlcmlmaWVzIHRoYXQgaXRlcmF0b3IgYXNzaWdubWVudCB3b3JrcyBhcyBl
eHBlY3RlZC4KKyAgKytpdDsKKyAgRVhQRUNUX0ZBTFNFKCppdCA9PSAqaXQyKTsKKyAgaXQyID0g
aXQ7CisgIEVYUEVDVF9UUlVFKCppdCA9PSAqaXQyKSA8PCAiQXNzaWduZWQgaXRlcmF0b3JzIG11
c3QgcG9pbnQgdG8gdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJlbGVtZW50
IHNhbWUgYXMgaXRzIHNvdXJjZSBwb2ludHMgdG8iOworCisgIC8vIFZlcmlmaWVzIHRoYXQgcHJl
Zml4IG9wZXJhdG9yKysoKSByZXR1cm5zICp0aGlzLgorICBFWFBFQ1RfRVEoJml0LCAmKCsraXQp
KSA8PCAiUmVzdWx0IG9mIHRoZSBwcmVmaXggb3BlcmF0b3IrKyBtdXN0IGJlICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgInJlZmVyIHRvIHRoZSBvcmlnaW5hbCBvYmplY3QiOworCisg
IC8vIFZlcmlmaWVzIHRoYXQgdGhlIHJlc3VsdCBvZiB0aGUgcG9zdGZpeCBvcGVyYXRvcisrIHBv
aW50cyB0byB0aGUgdmFsdWUKKyAgLy8gcG9pbnRlZCB0byBieSB0aGUgb3JpZ2luYWwgaXRlcmF0
b3IuCisgIGludCBvcmlnaW5hbF92YWx1ZSA9ICppdDsgIC8vIEhhdmUgdG8gY29tcHV0ZSBpdCBv
dXRzaWRlIG9mIG1hY3JvIGNhbGwgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gdW5hZmZlY3RlZCBieSB0aGUgcGFyYW1ldGVyIGV2YWx1YXRpb24gb3JkZXIuCisgIEVYUEVD
VF9FUShvcmlnaW5hbF92YWx1ZSwgKihpdCsrKSk7CisKKyAgLy8gVmVyaWZpZXMgdGhhdCBwcmVm
aXggYW5kIHBvc3RmaXggb3BlcmF0b3IrKygpIGFkdmFuY2UgYW4gaXRlcmF0b3IKKyAgLy8gYWxs
IHRoZSBzYW1lLgorICBpdDIgPSBpdDsKKyAgKytpdDsKKyAgKytpdDI7CisgIEVYUEVDVF9UUlVF
KCppdCA9PSAqaXQyKTsKK30KKworLy8gVGVzdHMgdGhhdCBSYW5nZSgpIGdlbmVyYXRlcyB0aGUg
ZXhwZWN0ZWQgc2VxdWVuY2UuCitURVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VXaXRoRGVmYXVsdFN0
ZXApIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAzKTsKKyAg
Y29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezAsIDEsIDJ9OworICBWZXJpZnlHZW5lcmF0
b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQg
UmFuZ2UoKSBnZW5lcmF0ZXMgdGhlIHNpbmdsZSBlbGVtZW50IHNlcXVlbmNlCisvLyBhcyBleHBl
Y3RlZCB3aGVuIHByb3ZpZGVkIHdpdGggcmFuZ2UgbGltaXRzIHRoYXQgYXJlIGVxdWFsLgorVEVT
VChSYW5nZVRlc3QsIEludFJhbmdlU2luZ2xlVmFsdWUpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0
b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAxKTsKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1td
ID0gezB9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisv
LyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgUmFuZ2UoKSB3aXRoIGdlbmVyYXRlcyBlbXB0eSBzZXF1
ZW5jZSB3aGVuCisvLyBzdXBwbGllZCB3aXRoIGFuIGVtcHR5IHJhbmdlLgorVEVTVChSYW5nZVRl
c3QsIEludFJhbmdlRW1wdHkpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBS
YW5nZSgwLCAwKTsKKyAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShnZW4pOworfQorCisvLyBUZXN0
cyB0aGF0IFJhbmdlKCkgd2l0aCBjdXN0b20gc3RlcCAoZ3JlYXRlciB0aGVuIG9uZSkgZ2VuZXJh
dGVzCisvLyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCitURVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VX
aXRoQ3VzdG9tU3RlcCkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdl
KDAsIDksIDMpOworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MCwgMywgNn07Cisg
IFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgUmFuZ2UoKSB3aXRoIGN1c3RvbSBzdGVwIChncmVhdGVyIHRoZW4gb25lKSBnZW5lcmF0ZXMK
Ky8vIHRoZSBleHBlY3RlZCBzZXF1ZW5jZSB3aGVuIHRoZSBsYXN0IGVsZW1lbnQgZG9lcyBub3Qg
ZmFsbCBvbiB0aGUKKy8vIHVwcGVyIHJhbmdlIGxpbWl0LiBTZXF1ZW5jZXMgZ2VuZXJhdGVkIGJ5
IFJhbmdlKCkgbXVzdCBub3QgaGF2ZQorLy8gZWxlbWVudHMgYmV5b25kIHRoZSByYW5nZSBsaW1p
dHMuCitURVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VXaXRoQ3VzdG9tU3RlcE92ZXJVcHBlckJvdW5k
KSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgNCwgMyk7Cisg
IGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHswLCAzfTsKKyAgVmVyaWZ5R2VuZXJhdG9y
KGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gVmVyaWZpZXMgdGhhdCBSYW5nZSB3b3Jr
cyB3aXRoIHVzZXItZGVmaW5lZCB0eXBlcyB0aGF0IGRlZmluZQorLy8gY29weSBjb25zdHJ1Y3Rv
ciwgb3BlcmF0b3I9KCksIG9wZXJhdG9yKygpLCBhbmQgb3BlcmF0b3I8KCkuCitjbGFzcyBEb2dB
ZGRlciB7CisgcHVibGljOgorICBleHBsaWNpdCBEb2dBZGRlcihjb25zdCBjaGFyKiBhX3ZhbHVl
KSA6IHZhbHVlXyhhX3ZhbHVlKSB7fQorICBEb2dBZGRlcihjb25zdCBEb2dBZGRlciYgb3RoZXIp
IDogdmFsdWVfKG90aGVyLnZhbHVlXy5jX3N0cigpKSB7fQorCisgIERvZ0FkZGVyIG9wZXJhdG9y
PShjb25zdCBEb2dBZGRlciYgb3RoZXIpIHsKKyAgICBpZiAodGhpcyAhPSAmb3RoZXIpCisgICAg
ICB2YWx1ZV8gPSBvdGhlci52YWx1ZV87CisgICAgcmV0dXJuICp0aGlzOworICB9CisgIERvZ0Fk
ZGVyIG9wZXJhdG9yKyhjb25zdCBEb2dBZGRlciYgb3RoZXIpIGNvbnN0IHsKKyAgICBNZXNzYWdl
IG1zZzsKKyAgICBtc2cgPDwgdmFsdWVfLmNfc3RyKCkgPDwgb3RoZXIudmFsdWVfLmNfc3RyKCk7
CisgICAgcmV0dXJuIERvZ0FkZGVyKG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKTsKKyAgfQorICBi
b29sIG9wZXJhdG9yPChjb25zdCBEb2dBZGRlciYgb3RoZXIpIGNvbnN0IHsKKyAgICByZXR1cm4g
dmFsdWVfIDwgb3RoZXIudmFsdWVfOworICB9CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQorCisgcHJpdmF0ZToKKyAgc3RkOjpzdHJpbmcgdmFs
dWVfOworfTsKKworVEVTVChSYW5nZVRlc3QsIFdvcmtzV2l0aEFDdXN0b21UeXBlKSB7CisgIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPERvZ0FkZGVyPiBnZW4gPQorICAgICAgUmFuZ2UoRG9nQWRkZXIo
ImNhdCIpLCBEb2dBZGRlcigiY2F0ZG9nZG9nIiksIERvZ0FkZGVyKCJkb2ciKSk7CisgIFBhcmFt
R2VuZXJhdG9yPERvZ0FkZGVyPjo6aXRlcmF0b3IgaXQgPSBnZW4uYmVnaW4oKTsKKworICBBU1NF
UlRfRkFMU0UoaXQgPT0gZ2VuLmVuZCgpKTsKKyAgRVhQRUNUX1NUUkVRKCJjYXQiLCBpdC0+dmFs
dWUoKS5jX3N0cigpKTsKKworICBBU1NFUlRfRkFMU0UoKytpdCA9PSBnZW4uZW5kKCkpOworICBF
WFBFQ1RfU1RSRVEoImNhdGRvZyIsIGl0LT52YWx1ZSgpLmNfc3RyKCkpOworCisgIEVYUEVDVF9U
UlVFKCsraXQgPT0gZ2VuLmVuZCgpKTsKK30KKworY2xhc3MgSW50V3JhcHBlciB7CisgcHVibGlj
OgorICBleHBsaWNpdCBJbnRXcmFwcGVyKGludCBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7
fQorICBJbnRXcmFwcGVyKGNvbnN0IEludFdyYXBwZXImIG90aGVyKSA6IHZhbHVlXyhvdGhlci52
YWx1ZV8pIHt9CisKKyAgSW50V3JhcHBlciBvcGVyYXRvcj0oY29uc3QgSW50V3JhcHBlciYgb3Ro
ZXIpIHsKKyAgICB2YWx1ZV8gPSBvdGhlci52YWx1ZV87CisgICAgcmV0dXJuICp0aGlzOworICB9
CisgIC8vIG9wZXJhdG9yKygpIGFkZHMgYSBkaWZmZXJlbnQgdHlwZS4KKyAgSW50V3JhcHBlciBv
cGVyYXRvcisoaW50IG90aGVyKSBjb25zdCB7IHJldHVybiBJbnRXcmFwcGVyKHZhbHVlXyArIG90
aGVyKTsgfQorICBib29sIG9wZXJhdG9yPChjb25zdCBJbnRXcmFwcGVyJiBvdGhlcikgY29uc3Qg
eworICAgIHJldHVybiB2YWx1ZV8gPCBvdGhlci52YWx1ZV87CisgIH0KKyAgaW50IHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CisKKyBwcml2YXRlOgorICBpbnQgdmFsdWVfOworfTsK
KworVEVTVChSYW5nZVRlc3QsIFdvcmtzV2l0aEFDdXN0b21UeXBlV2l0aERpZmZlcmVudEluY3Jl
bWVudFR5cGUpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8SW50V3JhcHBlcj4gZ2VuID0gUmFu
Z2UoSW50V3JhcHBlcigwKSwgSW50V3JhcHBlcigyKSk7CisgIFBhcmFtR2VuZXJhdG9yPEludFdy
YXBwZXI+OjppdGVyYXRvciBpdCA9IGdlbi5iZWdpbigpOworCisgIEFTU0VSVF9GQUxTRShpdCA9
PSBnZW4uZW5kKCkpOworICBFWFBFQ1RfRVEoMCwgaXQtPnZhbHVlKCkpOworCisgIEFTU0VSVF9G
QUxTRSgrK2l0ID09IGdlbi5lbmQoKSk7CisgIEVYUEVDVF9FUSgxLCBpdC0+dmFsdWUoKSk7CisK
KyAgRVhQRUNUX1RSVUUoKytpdCA9PSBnZW4uZW5kKCkpOworfQorCisvLyBUZXN0cyB0aGF0IFZh
bHVlc0luKCkgd2l0aCBhbiBhcnJheSBwYXJhbWV0ZXIgZ2VuZXJhdGVzCisvLyB0aGUgZXhwZWN0
ZWQgc2VxdWVuY2UuCitURVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5BcnJheSkgeworICBpbnQg
YXJyYXlbXSA9IHszLCA1LCA4fTsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBW
YWx1ZXNJbihhcnJheSk7CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGFycmF5KTsKK30KKworLy8g
VGVzdHMgdGhhdCBWYWx1ZXNJbigpIHdpdGggYSBjb25zdCBhcnJheSBwYXJhbWV0ZXIgZ2VuZXJh
dGVzCisvLyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCitURVNUKFZhbHVlc0luVGVzdCwgVmFsdWVz
SW5Db25zdEFycmF5KSB7CisgIGNvbnN0IGludCBhcnJheVtdID0gezMsIDUsIDh9OworICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKGFycmF5KTsKKyAgVmVyaWZ5R2Vu
ZXJhdG9yKGdlbiwgYXJyYXkpOworfQorCisvLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgVmFsdWVz
SW4oKSB3aXRoIGFuIGFycmF5IHBhcmFtZXRlciBjb250YWluaW5nIGEKKy8vIHNpbmdsZSBlbGVt
ZW50IGdlbmVyYXRlcyB0aGUgc2luZ2xlIGVsZW1lbnQgc2VxdWVuY2UuCitURVNUKFZhbHVlc0lu
VGVzdCwgVmFsdWVzSW5TaW5nbGVFbGVtZW50QXJyYXkpIHsKKyAgaW50IGFycmF5W10gPSB7NDJ9
OworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKGFycmF5KTsKKyAg
VmVyaWZ5R2VuZXJhdG9yKGdlbiwgYXJyYXkpOworfQorCisvLyBUZXN0cyB0aGF0IFZhbHVlc0lu
KCkgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZSBmb3IgYW4gU1RMCisvLyBjb250YWlu
ZXIgKHZlY3RvcikuCitURVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5WZWN0b3IpIHsKKyAgdHlw
ZWRlZiA6OnN0ZDo6dmVjdG9yPGludD4gQ29udGFpbmVyVHlwZTsKKyAgQ29udGFpbmVyVHlwZSB2
YWx1ZXM7CisgIHZhbHVlcy5wdXNoX2JhY2soMyk7CisgIHZhbHVlcy5wdXNoX2JhY2soNSk7Cisg
IHZhbHVlcy5wdXNoX2JhY2soOCk7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0g
VmFsdWVzSW4odmFsdWVzKTsKKworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7Mywg
NSwgOH07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgVmFsdWVzSW4oKSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgor
VEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luSXRlcmF0b3JSYW5nZSkgeworICB0eXBlZGVmIDo6
c3RkOjp2ZWN0b3I8aW50PiBDb250YWluZXJUeXBlOworICBDb250YWluZXJUeXBlIHZhbHVlczsK
KyAgdmFsdWVzLnB1c2hfYmFjaygzKTsKKyAgdmFsdWVzLnB1c2hfYmFjayg1KTsKKyAgdmFsdWVz
LnB1c2hfYmFjayg4KTsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJ
bih2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKworICBjb25zdCBpbnQgZXhwZWN0ZWRf
dmFsdWVzW10gPSB7MywgNSwgOH07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3Zh
bHVlcyk7Cit9CisKKy8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIHByb3ZpZGVk
IHdpdGggYW4gaXRlcmF0b3IgcmFuZ2Ugc3BlY2lmeWluZyBhCisvLyBzaW5nbGUgdmFsdWUgZ2Vu
ZXJhdGVzIGEgc2luZ2xlLWVsZW1lbnQgc2VxdWVuY2UuCitURVNUKFZhbHVlc0luVGVzdCwgVmFs
dWVzSW5TaW5nbGVFbGVtZW50SXRlcmF0b3JSYW5nZSkgeworICB0eXBlZGVmIDo6c3RkOjp2ZWN0
b3I8aW50PiBDb250YWluZXJUeXBlOworICBDb250YWluZXJUeXBlIHZhbHVlczsKKyAgdmFsdWVz
LnB1c2hfYmFjayg0Mik7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVz
SW4odmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7CisKKyAgY29uc3QgaW50IGV4cGVjdGVk
X3ZhbHVlc1tdID0gezQyfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVz
KTsKK30KKworLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFZhbHVlc0luKCkgcHJvdmlkZWQgd2l0
aCBhbiBlbXB0eSBpdGVyYXRvciByYW5nZQorLy8gZ2VuZXJhdGVzIGFuIGVtcHR5IHNlcXVlbmNl
LgorVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luRW1wdHlJdGVyYXRvclJhbmdlKSB7CisgIHR5
cGVkZWYgOjpzdGQ6OnZlY3RvcjxpbnQ+IENvbnRhaW5lclR5cGU7CisgIENvbnRhaW5lclR5cGUg
dmFsdWVzOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVl
cy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworCisgIFZlcmlmeUdlbmVyYXRvcklzRW1wdHkoZ2Vu
KTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgVmFsdWVzKCkgZ2VuZXJhdGVzIHRoZSBleHBlY3Rl
ZCBzZXF1ZW5jZS4KK1RFU1QoVmFsdWVzVGVzdCwgVmFsdWVzV29ya3MpIHsKKyAgY29uc3QgUGFy
YW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXMoMywgNSwgOCk7CisKKyAgY29uc3QgaW50IGV4
cGVjdGVkX3ZhbHVlc1tdID0gezMsIDUsIDh9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBl
Y3RlZF92YWx1ZXMpOworfQorCisvLyBUZXN0cyB0aGF0IFZhbHVlcygpIGdlbmVyYXRlcyB0aGUg
ZXhwZWN0ZWQgc2VxdWVuY2VzIGZyb20gZWxlbWVudHMgb2YKKy8vIGRpZmZlcmVudCB0eXBlcyBj
b252ZXJ0aWJsZSB0byBQYXJhbUdlbmVyYXRvcidzIHBhcmFtZXRlciB0eXBlLgorVEVTVChWYWx1
ZXNUZXN0LCBWYWx1ZXNXb3Jrc0ZvclZhbHVlc09mQ29tcGF0aWJsZVR5cGVzKSB7CisgIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPGRvdWJsZT4gZ2VuID0gVmFsdWVzKDMsIDUuMGYsIDguMCk7CisKKyAg
Y29uc3QgZG91YmxlIGV4cGVjdGVkX3ZhbHVlc1tdID0gezMuMCwgNS4wLCA4LjB9OworICBWZXJp
ZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCitURVNUKFZhbHVlc1Rlc3Qs
IFZhbHVlc1dvcmtzRm9yTWF4TGVuZ3RoTGlzdCkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxp
bnQ+IGdlbiA9IFZhbHVlcygKKyAgICAgIDEwLCAyMCwgMzAsIDQwLCA1MCwgNjAsIDcwLCA4MCwg
OTAsIDEwMCwKKyAgICAgIDExMCwgMTIwLCAxMzAsIDE0MCwgMTUwLCAxNjAsIDE3MCwgMTgwLCAx
OTAsIDIwMCwKKyAgICAgIDIxMCwgMjIwLCAyMzAsIDI0MCwgMjUwLCAyNjAsIDI3MCwgMjgwLCAy
OTAsIDMwMCwKKyAgICAgIDMxMCwgMzIwLCAzMzAsIDM0MCwgMzUwLCAzNjAsIDM3MCwgMzgwLCAz
OTAsIDQwMCwKKyAgICAgIDQxMCwgNDIwLCA0MzAsIDQ0MCwgNDUwLCA0NjAsIDQ3MCwgNDgwLCA0
OTAsIDUwMCk7CisKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0geworICAgICAgMTAs
IDIwLCAzMCwgNDAsIDUwLCA2MCwgNzAsIDgwLCA5MCwgMTAwLAorICAgICAgMTEwLCAxMjAsIDEz
MCwgMTQwLCAxNTAsIDE2MCwgMTcwLCAxODAsIDE5MCwgMjAwLAorICAgICAgMjEwLCAyMjAsIDIz
MCwgMjQwLCAyNTAsIDI2MCwgMjcwLCAyODAsIDI5MCwgMzAwLAorICAgICAgMzEwLCAzMjAsIDMz
MCwgMzQwLCAzNTAsIDM2MCwgMzcwLCAzODAsIDM5MCwgNDAwLAorICAgICAgNDEwLCA0MjAsIDQz
MCwgNDQwLCA0NTAsIDQ2MCwgNDcwLCA0ODAsIDQ5MCwgNTAwfTsKKyAgVmVyaWZ5R2VuZXJhdG9y
KGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gRWRnZSBjYXNlIHRlc3QuIFRlc3RzIHRo
YXQgc2luZ2xlLXBhcmFtZXRlciBWYWx1ZXMoKSBnZW5lcmF0ZXMgdGhlIHNlcXVlbmNlCisvLyB3
aXRoIHRoZSBzaW5nbGUgdmFsdWUuCitURVNUKFZhbHVlc1Rlc3QsIFZhbHVlc1dpdGhTaW5nbGVQ
YXJhbWV0ZXIpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXMoNDIp
OworCisgIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHs0Mn07CisgIFZlcmlmeUdlbmVy
YXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQm9vbCgpIGdl
bmVyYXRlcyBzZXF1ZW5jZSAoZmFsc2UsIHRydWUpLgorVEVTVChCb29sVGVzdCwgQm9vbFdvcmtz
KSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGJvb2w+IGdlbiA9IEJvb2woKTsKKworICBjb25z
dCBib29sIGV4cGVjdGVkX3ZhbHVlc1tdID0ge2ZhbHNlLCB0cnVlfTsKKyAgVmVyaWZ5R2VuZXJh
dG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworIyBpZiBHVEVTVF9IQVNfQ09NQklORQor
CisvLyBUZXN0cyB0aGF0IENvbWJpbmUoKSB3aXRoIHR3byBwYXJhbWV0ZXJzIGdlbmVyYXRlcyB0
aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCitURVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFR3b1Bh
cmFtZXRlcnMpIHsKKyAgY29uc3QgY2hhciogZm9vID0gImZvbyI7CisgIGNvbnN0IGNoYXIqIGJh
ciA9ICJiYXIiOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxjb25zdCBjaGFyKiwgaW50
PiA+IGdlbiA9CisgICAgICBDb21iaW5lKFZhbHVlcyhmb28sIGJhciksIFZhbHVlcygzLCA0KSk7
CisKKyAgdHVwbGU8Y29uc3QgY2hhciosIGludD4gZXhwZWN0ZWRfdmFsdWVzW10gPSB7CisgICAg
bWFrZV90dXBsZShmb28sIDMpLCBtYWtlX3R1cGxlKGZvbywgNCksCisgICAgbWFrZV90dXBsZShi
YXIsIDMpLCBtYWtlX3R1cGxlKGJhciwgNCl9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBl
Y3RlZF92YWx1ZXMpOworfQorCisvLyBUZXN0cyB0aGF0IENvbWJpbmUoKSB3aXRoIHRocmVlIHBh
cmFtZXRlcnMgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoQ29tYmluZVRl
c3QsIENvbWJpbmVXaXRoVGhyZWVQYXJhbWV0ZXJzKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9y
PHR1cGxlPGludCwgaW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoMCwgMSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWx1ZXMoMywgNCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWx1ZXMoNSwgNikpOworICB0dXBsZTxpbnQsIGludCwgaW50PiBl
eHBlY3RlZF92YWx1ZXNbXSA9IHsKKyAgICBtYWtlX3R1cGxlKDAsIDMsIDUpLCBtYWtlX3R1cGxl
KDAsIDMsIDYpLAorICAgIG1ha2VfdHVwbGUoMCwgNCwgNSksIG1ha2VfdHVwbGUoMCwgNCwgNiks
CisgICAgbWFrZV90dXBsZSgxLCAzLCA1KSwgbWFrZV90dXBsZSgxLCAzLCA2KSwKKyAgICBtYWtl
X3R1cGxlKDEsIDQsIDUpLCBtYWtlX3R1cGxlKDEsIDQsIDYpfTsKKyAgVmVyaWZ5R2VuZXJhdG9y
KGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgQ29tYmluZSgp
IHdpdGggdGhlIGZpcnN0IHBhcmFtZXRlciBnZW5lcmF0aW5nIGEgc2luZ2xlIHZhbHVlCisvLyBz
ZXF1ZW5jZSBnZW5lcmF0ZXMgYSBzZXF1ZW5jZSB3aXRoIHRoZSBudW1iZXIgb2YgZWxlbWVudHMg
ZXF1YWwgdG8gdGhlCisvLyBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHNlcXVlbmNlIGdlbmVy
YXRlZCBieSB0aGUgc2Vjb25kIHBhcmFtZXRlci4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVX
aXRoRmlyc3RQYXJhbWV0ZXJTaW5nbGVWYWx1ZSkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0
dXBsZTxpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcyg0MiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDAsIDEpKTsK
KworICB0dXBsZTxpbnQsIGludD4gZXhwZWN0ZWRfdmFsdWVzW10gPSB7bWFrZV90dXBsZSg0Miwg
MCksIG1ha2VfdHVwbGUoNDIsIDEpfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRf
dmFsdWVzKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgQ29tYmluZSgpIHdpdGggdGhlIHNlY29u
ZCBwYXJhbWV0ZXIgZ2VuZXJhdGluZyBhIHNpbmdsZSB2YWx1ZQorLy8gc2VxdWVuY2UgZ2VuZXJh
dGVzIGEgc2VxdWVuY2Ugd2l0aCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGVxdWFsIHRvIHRoZQor
Ly8gbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBzZXF1ZW5jZSBnZW5lcmF0ZWQgYnkgdGhlIGZp
cnN0IHBhcmFtZXRlci4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoU2Vjb25kUGFyYW1l
dGVyU2luZ2xlVmFsdWUpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBpbnQ+
ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoMCwgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDQyKSk7CisKKyAgdHVwbGU8aW50
LCBpbnQ+IGV4cGVjdGVkX3ZhbHVlc1tdID0ge21ha2VfdHVwbGUoMCwgNDIpLCBtYWtlX3R1cGxl
KDEsIDQyKX07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisK
Ky8vIFRlc3RzIHRoYXQgd2hlbiB0aGUgZmlyc3QgcGFyYW1ldGVyIHByb2R1Y2VzIGFuIGVtcHR5
IHNlcXVlbmNlLAorLy8gQ29tYmluZSgpIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLCB0b28u
CitURVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aEZpcnN0UGFyYW1ldGVyRW1wdHlSYW5nZSkg
eworICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludD4gPiBnZW4gPSBDb21iaW5l
KFJhbmdlKDAsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbHVlcygwLCAxKSk7CisgIFZlcmlmeUdlbmVyYXRvcklzRW1wdHkoZ2Vu
KTsKK30KKworLy8gVGVzdHMgdGhhdCB3aGVuIHRoZSBzZWNvbmQgcGFyYW1ldGVyIHByb2R1Y2Vz
IGFuIGVtcHR5IHNlcXVlbmNlLAorLy8gQ29tYmluZSgpIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVl
bmNlLCB0b28uCitURVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFNlY29uZFBhcmFtZXRlckVt
cHR5UmFuZ2UpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBpbnQ+ID4gZ2Vu
ID0gQ29tYmluZShWYWx1ZXMoMCwgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2UoMSwgMSkpOworICBWZXJpZnlHZW5lcmF0b3JJ
c0VtcHR5KGdlbik7Cit9CisKKy8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBjb21iaW5lIHdvcmtz
IHdpdGggdGhlIG1heGltdW0gbnVtYmVyCisvLyBvZiBwYXJhbWV0ZXJzIHN1cHBvcnRlZCBieSBH
b29nbGUgVGVzdCAoY3VycmVudGx5IDEwKS4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRo
TWF4TnVtYmVyT2ZQYXJhbWV0ZXJzKSB7CisgIGNvbnN0IGNoYXIqIGZvbyA9ICJmb28iOworICBj
b25zdCBjaGFyKiBiYXIgPSAiYmFyIjsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8Y29u
c3QgY2hhciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoZm9vLCBi
YXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcygxKSwgVmFsdWVzKDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygzKSwgVmFsdWVzKDQpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg1KSwg
VmFsdWVzKDYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbHVlcyg3KSwgVmFsdWVzKDgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg5KSk7CisKKyAgdHVwbGU8Y29u
c3QgY2hhciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQ+Cisg
ICAgICBleHBlY3RlZF92YWx1ZXNbXSA9IHttYWtlX3R1cGxlKGZvbywgMSwgMiwgMywgNCwgNSwg
NiwgNywgOCwgOSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3R1cGxlKGJhciwg
MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSl9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBl
Y3RlZF92YWx1ZXMpOworfQorCisjaWYgR1RFU1RfTEFOR19DWFgxMQorCitjbGFzcyBOb25EZWZh
dWx0Q29uc3RydWN0QXNzaWduU3RyaW5nIHsKKyBwdWJsaWM6CisgIE5vbkRlZmF1bHRDb25zdHJ1
Y3RBc3NpZ25TdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHMpIDogc3RyXyhzKSB7fQorCisgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBzdHIoKSBjb25zdCB7IHJldHVybiBzdHJfOyB9CisKKyBwcml2YXRl
OgorICBzdGQ6OnN0cmluZyBzdHJfOworCisgIC8vIE5vdCBkZWZhdWx0IGNvbnN0cnVjdGlibGUK
KyAgTm9uRGVmYXVsdENvbnN0cnVjdEFzc2lnblN0cmluZygpOworICAvLyBOb3QgYXNzaWduYWJs
ZQorICB2b2lkIG9wZXJhdG9yPShjb25zdCBOb25EZWZhdWx0Q29uc3RydWN0QXNzaWduU3RyaW5n
Jik7Cit9OworCitURVNUKENvbWJpbmVUZXN0LCBOb25EZWZhdWx0Q29uc3RydWN0QXNzaWduKSB7
CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgTm9uRGVmYXVsdENvbnN0cnVjdEFz
c2lnblN0cmluZz4gPiBnZW4gPQorICAgICAgQ29tYmluZShWYWx1ZXMoMCwgMSksIFZhbHVlcyhO
b25EZWZhdWx0Q29uc3RydWN0QXNzaWduU3RyaW5nKCJBIiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5vbkRlZmF1bHRDb25zdHJ1Y3RBc3NpZ25TdHJpbmcoIkIiKSkpOwor
CisgIFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgTm9uRGVmYXVsdENvbnN0cnVjdEFzc2lnblN0
cmluZz4gPjo6aXRlcmF0b3IgaXQgPQorICAgICAgZ2VuLmJlZ2luKCk7CisKKyAgRVhQRUNUX0VR
KDAsIHN0ZDo6Z2V0PDA+KCppdCkpOworICBFWFBFQ1RfRVEoIkEiLCBzdGQ6OmdldDwxPigqaXQp
LnN0cigpKTsKKyAgKytpdDsKKworICBFWFBFQ1RfRVEoMCwgc3RkOjpnZXQ8MD4oKml0KSk7Cisg
IEVYUEVDVF9FUSgiQiIsIHN0ZDo6Z2V0PDE+KCppdCkuc3RyKCkpOworICArK2l0OworCisgIEVY
UEVDVF9FUSgxLCBzdGQ6OmdldDwwPigqaXQpKTsKKyAgRVhQRUNUX0VRKCJBIiwgc3RkOjpnZXQ8
MT4oKml0KS5zdHIoKSk7CisgICsraXQ7CisKKyAgRVhQRUNUX0VRKDEsIHN0ZDo6Z2V0PDA+KCpp
dCkpOworICBFWFBFQ1RfRVEoIkIiLCBzdGQ6OmdldDwxPigqaXQpLnN0cigpKTsKKyAgKytpdDsK
KworICBFWFBFQ1RfVFJVRShpdCA9PSBnZW4uZW5kKCkpOworfQorCisjZW5kaWYgICAvLyBHVEVT
VF9MQU5HX0NYWDExCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQorCisvLyBUZXN0cyB0
aGF0IGFuIGdlbmVyYXRvciBwcm9kdWNlcyBjb3JyZWN0IHNlcXVlbmNlIGFmdGVyIGJlaW5nCisv
LyBhc3NpZ25lZCBmcm9tIGFub3RoZXIgZ2VuZXJhdG9yLgorVEVTVChQYXJhbUdlbmVyYXRvclRl
c3QsIEFzc2lnbm1lbnRXb3JrcykgeworICBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVl
cygxLCAyKTsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4yID0gVmFsdWVzKDMsIDQp
OworICBnZW4gPSBnZW4yOworCisgIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHszLCA0
fTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gVGhp
cyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIHRlc3RzIGFyZSBleHBhbmRlZCBhbmQgcnVuIGFzIHNw
ZWNpZmllZDoKKy8vIG9uZSB0ZXN0IHBlciBlbGVtZW50IGZyb20gdGhlIHNlcXVlbmNlIHByb2R1
Y2VkIGJ5IHRoZSBnZW5lcmF0b3IKKy8vIHNwZWNpZmllZCBpbiBJTlNUQU5USUFURV9URVNUX0NB
U0VfUC4gSXQgYWxzbyB2ZXJpZmllcyB0aGF0IHRoZSB0ZXN0J3MKKy8vIGZpeHR1cmUgY29uc3Ry
dWN0b3IsIFNldFVwKCksIGFuZCBUZWFyRG93bigpIGhhdmUgcnVuIGFuZCBoYXZlIGJlZW4KKy8v
IHN1cHBsaWVkIHdpdGggdGhlIGNvcnJlY3QgcGFyYW1ldGVycy4KKworLy8gVGhlIHVzZSBvZiBl
bnZpcm9ubWVudCBvYmplY3QgYWxsb3dzIGRldGVjdGlvbiBvZiB0aGUgY2FzZSB3aGVyZSBubyB0
ZXN0CisvLyBjYXNlIGZ1bmN0aW9uYWxpdHkgaXMgcnVuIGF0IGFsbC4gSW4gdGhpcyBjYXNlIFRl
c3RDYXNlVGVhckRvd24gd2lsbCBub3QKKy8vIGJlIGFibGUgdG8gZGV0ZWN0IG1pc3NpbmcgdGVz
dHMsIG5hdHVyYWxseS4KK3RlbXBsYXRlIDxpbnQga0V4cGVjdGVkQ2FsbHM+CitjbGFzcyBUZXN0
R2VuZXJhdGlvbkVudmlyb25tZW50IDogcHVibGljIDo6dGVzdGluZzo6RW52aXJvbm1lbnQgewor
IHB1YmxpYzoKKyAgc3RhdGljIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQqIEluc3RhbmNlKCkg
eworICAgIHN0YXRpYyBUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50KiBpbnN0YW5jZSA9IG5ldyBU
ZXN0R2VuZXJhdGlvbkVudmlyb25tZW50OworICAgIHJldHVybiBpbnN0YW5jZTsKKyAgfQorCisg
IHZvaWQgRml4dHVyZUNvbnN0cnVjdG9yRXhlY3V0ZWQoKSB7IGZpeHR1cmVfY29uc3RydWN0b3Jf
Y291bnRfKys7IH0KKyAgdm9pZCBTZXRVcEV4ZWN1dGVkKCkgeyBzZXRfdXBfY291bnRfKys7IH0K
KyAgdm9pZCBUZWFyRG93bkV4ZWN1dGVkKCkgeyB0ZWFyX2Rvd25fY291bnRfKys7IH0KKyAgdm9p
ZCBUZXN0Qm9keUV4ZWN1dGVkKCkgeyB0ZXN0X2JvZHlfY291bnRfKys7IH0KKworICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7CisgICAgLy8gSWYgYWxsIE11bHRpcGxlVGVzdEdlbmVyYXRpb25U
ZXN0IHRlc3RzIGhhdmUgYmVlbiBkZS1zZWxlY3RlZAorICAgIC8vIGJ5IHRoZSBmaWx0ZXIgZmxh
ZywgdGhlIGZvbGxvd2luZyBjaGVja3MgbWFrZSBubyBzZW5zZS4KKyAgICBib29sIHBlcmZvcm1f
Y2hlY2sgPSBmYWxzZTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwga0V4cGVjdGVkQ2FsbHM7
ICsraSkgeworICAgICAgTWVzc2FnZSBtc2c7CisgICAgICBtc2cgPDwgIlRlc3RzRXhwYW5kZWRB
bmRSdW4vIiA8PCBpOworICAgICAgaWYgKFVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0Y2hlc1Rl
c3QoCisgICAgICAgICAgICAgIlRlc3RFeHBhbnNpb25Nb2R1bGUvTXVsdGlwbGVUZXN0R2VuZXJh
dGlvblRlc3QiLAorICAgICAgICAgICAgICBtc2cuR2V0U3RyaW5nKCkuY19zdHIoKSkpIHsKKyAg
ICAgICAgcGVyZm9ybV9jaGVjayA9IHRydWU7CisgICAgICB9CisgICAgfQorICAgIGlmIChwZXJm
b3JtX2NoZWNrKSB7CisgICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2FsbHMsIGZpeHR1cmVfY29u
c3RydWN0b3JfY291bnRfKQorICAgICAgICAgIDw8ICJGaXh0dXJlIGNvbnN0cnVjdG9yIG9mIFBh
cmFtVGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZSAiCisgICAgICAgICAgPDwgImhhcyBub3Qg
YmVlbiBydW4gYXMgZXhwZWN0ZWQuIjsKKyAgICAgIEVYUEVDVF9FUShrRXhwZWN0ZWRDYWxscywg
c2V0X3VwX2NvdW50XykKKyAgICAgICAgICA8PCAiRml4dHVyZSBTZXRVcCBtZXRob2Qgb2YgUGFy
YW1UZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlICIKKyAgICAgICAgICA8PCAiaGFzIG5vdCBi
ZWVuIHJ1biBhcyBleHBlY3RlZC4iOworICAgICAgRVhQRUNUX0VRKGtFeHBlY3RlZENhbGxzLCB0
ZWFyX2Rvd25fY291bnRfKQorICAgICAgICAgIDw8ICJGaXh0dXJlIFRlYXJEb3duIG1ldGhvZCBv
ZiBQYXJhbVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgorICAgICAgICAgIDw8ICJoYXMg
bm90IGJlZW4gcnVuIGFzIGV4cGVjdGVkLiI7CisgICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2Fs
bHMsIHRlc3RfYm9keV9jb3VudF8pCisgICAgICAgICAgPDwgIlRlc3QgaW4gUGFyYW1UZXN0R2Vu
ZXJhdGlvblRlc3QgdGVzdCBjYXNlICIKKyAgICAgICAgICA8PCAiaGFzIG5vdCBiZWVuIHJ1biBh
cyBleHBlY3RlZC4iOworICAgIH0KKyAgfQorCisgcHJpdmF0ZToKKyAgVGVzdEdlbmVyYXRpb25F
bnZpcm9ubWVudCgpIDogZml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3VudF8oMCksIHNldF91cF9jb3Vu
dF8oMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlYXJfZG93bl9jb3VudF8o
MCksIHRlc3RfYm9keV9jb3VudF8oMCkge30KKworICBpbnQgZml4dHVyZV9jb25zdHJ1Y3Rvcl9j
b3VudF87CisgIGludCBzZXRfdXBfY291bnRfOworICBpbnQgdGVhcl9kb3duX2NvdW50XzsKKyAg
aW50IHRlc3RfYm9keV9jb3VudF87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdO
XyhUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50KTsKK307CisKK2NvbnN0IGludCB0ZXN0X2dlbmVy
YXRpb25fcGFyYW1zW10gPSB7MzYsIDQyLCA3Mn07CisKK2NsYXNzIFRlc3RHZW5lcmF0aW9uVGVz
dCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4geworIHB1YmxpYzoKKyAgZW51bSB7CisgICAg
UEFSQU1FVEVSX0NPVU5UID0KKyAgICAgICAgc2l6ZW9mKHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMp
L3NpemVvZih0ZXN0X2dlbmVyYXRpb25fcGFyYW1zWzBdKQorICB9OworCisgIHR5cGVkZWYgVGVz
dEdlbmVyYXRpb25FbnZpcm9ubWVudDxQQVJBTUVURVJfQ09VTlQ+IEVudmlyb25tZW50OworCisg
IFRlc3RHZW5lcmF0aW9uVGVzdCgpIHsKKyAgICBFbnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+Rml4
dHVyZUNvbnN0cnVjdG9yRXhlY3V0ZWQoKTsKKyAgICBjdXJyZW50X3BhcmFtZXRlcl8gPSBHZXRQ
YXJhbSgpOworICB9CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBFbnZpcm9ubWVudDo6
SW5zdGFuY2UoKS0+U2V0VXBFeGVjdXRlZCgpOworICAgIEVYUEVDVF9FUShjdXJyZW50X3BhcmFt
ZXRlcl8sIEdldFBhcmFtKCkpOworICB9CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAg
ICBFbnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+VGVhckRvd25FeGVjdXRlZCgpOworICAgIEVYUEVD
VF9FUShjdXJyZW50X3BhcmFtZXRlcl8sIEdldFBhcmFtKCkpOworICB9CisKKyAgc3RhdGljIHZv
aWQgU2V0VXBUZXN0Q2FzZSgpIHsKKyAgICBib29sIGFsbF90ZXN0c19pbl90ZXN0X2Nhc2Vfc2Vs
ZWN0ZWQgPSB0cnVlOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBQQVJBTUVURVJfQ09VTlQ7
ICsraSkgeworICAgICAgTWVzc2FnZSB0ZXN0X25hbWU7CisgICAgICB0ZXN0X25hbWUgPDwgIlRl
c3RzRXhwYW5kZWRBbmRSdW4vIiA8PCBpOworICAgICAgaWYgKCAhVW5pdFRlc3RPcHRpb25zOjpG
aWx0ZXJNYXRjaGVzVGVzdCgKKyAgICAgICAgICAgICAgICAiVGVzdEV4cGFuc2lvbk1vZHVsZS9N
dWx0aXBsZVRlc3RHZW5lcmF0aW9uVGVzdCIsCisgICAgICAgICAgICAgICAgdGVzdF9uYW1lLkdl
dFN0cmluZygpKSkgeworICAgICAgICBhbGxfdGVzdHNfaW5fdGVzdF9jYXNlX3NlbGVjdGVkID0g
ZmFsc2U7CisgICAgICB9CisgICAgfQorICAgIEVYUEVDVF9UUlVFKGFsbF90ZXN0c19pbl90ZXN0
X2Nhc2Vfc2VsZWN0ZWQpCisgICAgICAgIDw8ICJXaGVuIHJ1bm5pbmcgdGhlIFRlc3RHZW5lcmF0
aW9uVGVzdCB0ZXN0IGNhc2UgYWxsIG9mIGl0cyB0ZXN0c1xuIgorICAgICAgICA8PCAibXVzdCBi
ZSBzZWxlY3RlZCBieSB0aGUgZmlsdGVyIGZsYWcgZm9yIHRoZSB0ZXN0IGNhc2UgdG8gcGFzcy5c
biIKKyAgICAgICAgPDwgIklmIG5vdCBhbGwgb2YgdGhlbSBhcmUgZW5hYmxlZCwgd2UgY2FuJ3Qg
cmVsaWFibHkgY29uY2x1ZGVcbiIKKyAgICAgICAgPDwgInRoYXQgdGhlIGNvcnJlY3QgbnVtYmVy
IG9mIHRlc3RzIGhhdmUgYmVlbiBnZW5lcmF0ZWQuIjsKKworICAgIGNvbGxlY3RlZF9wYXJhbWV0
ZXJzXy5jbGVhcigpOworICB9CisKKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsK
KyAgICB2ZWN0b3I8aW50PiBleHBlY3RlZF92YWx1ZXModGVzdF9nZW5lcmF0aW9uX3BhcmFtcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9nZW5lcmF0aW9uX3BhcmFtcyAr
IFBBUkFNRVRFUl9DT1VOVCk7CisgICAgLy8gVGVzdCBleGVjdXRpb24gb3JkZXIgaXMgbm90IGd1
YXJhbnRlZWQgYnkgR29vZ2xlIFRlc3QsCisgICAgLy8gc28gdGhlIG9yZGVyIG9mIHZhbHVlcyBp
biBjb2xsZWN0ZWRfcGFyYW1ldGVyc18gY2FuIGJlCisgICAgLy8gZGlmZmVyZW50IGFuZCB3ZSBo
YXZlIHRvIHNvcnQgdG8gY29tcGFyZS4KKyAgICBzb3J0KGV4cGVjdGVkX3ZhbHVlcy5iZWdpbigp
LCBleHBlY3RlZF92YWx1ZXMuZW5kKCkpOworICAgIHNvcnQoY29sbGVjdGVkX3BhcmFtZXRlcnNf
LmJlZ2luKCksIGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5lbmQoKSk7CisKKyAgICBFWFBFQ1RfVFJV
RShjb2xsZWN0ZWRfcGFyYW1ldGVyc18gPT0gZXhwZWN0ZWRfdmFsdWVzKTsKKyAgfQorCisgcHJv
dGVjdGVkOgorICBpbnQgY3VycmVudF9wYXJhbWV0ZXJfOworICBzdGF0aWMgdmVjdG9yPGludD4g
Y29sbGVjdGVkX3BhcmFtZXRlcnNfOworCisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOXyhUZXN0R2VuZXJhdGlvblRlc3QpOworfTsKK3ZlY3RvcjxpbnQ+IFRlc3RH
ZW5lcmF0aW9uVGVzdDo6Y29sbGVjdGVkX3BhcmFtZXRlcnNfOworCitURVNUX1AoVGVzdEdlbmVy
YXRpb25UZXN0LCBUZXN0c0V4cGFuZGVkQW5kUnVuKSB7CisgIEVudmlyb25tZW50OjpJbnN0YW5j
ZSgpLT5UZXN0Qm9keUV4ZWN1dGVkKCk7CisgIEVYUEVDVF9FUShjdXJyZW50X3BhcmFtZXRlcl8s
IEdldFBhcmFtKCkpOworICBjb2xsZWN0ZWRfcGFyYW1ldGVyc18ucHVzaF9iYWNrKEdldFBhcmFt
KCkpOworfQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoVGVzdEV4cGFuc2lvbk1vZHVsZSwgVGVz
dEdlbmVyYXRpb25UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzSW4odGVzdF9n
ZW5lcmF0aW9uX3BhcmFtcykpOworCisvLyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgZWxl
bWVudCBzZXF1ZW5jZSAodGhpcmQgcGFyYW1ldGVyIG9mCisvLyBJTlNUQU5USUFURV9URVNUX0NB
U0VfUCkgaXMgZXZhbHVhdGVkIGluIEluaXRHb29nbGVUZXN0KCkgYW5kIG5laXRoZXIgYXQKKy8v
IHRoZSBjYWxsIHNpdGUgb2YgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Agbm9yIGluIFJVTl9BTExf
VEVTVFMoKS4gIEZvcgorLy8gdGhhdCwgd2UgZGVjbGFyZSBwYXJhbV92YWx1ZV8gdG8gYmUgYSBz
dGF0aWMgbWVtYmVyIG9mCisvLyBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCBhbmQgaW5pdGlhbGl6
ZSBpdCB0byAwLiAgV2Ugc2V0IGl0IHRvIDEgaW4KKy8vIG1haW4oKSwganVzdCBiZWZvcmUgaW52
b2NhdGlvbiBvZiBJbml0R29vZ2xlVGVzdCgpLiAgQWZ0ZXIgY2FsbGluZworLy8gSW5pdEdvb2ds
ZVRlc3QoKSwgd2Ugc2V0IHRoZSB2YWx1ZSB0byAyLiAgSWYgdGhlIHNlcXVlbmNlIGlzIGV2YWx1
YXRlZAorLy8gYmVmb3JlIG9yIGFmdGVyIEluaXRHb29nbGVUZXN0LCBJTlNUQU5USUFURV9URVNU
X0NBU0VfUCB3aWxsIGNyZWF0ZSBhCisvLyB0ZXN0IHdpdGggcGFyYW1ldGVyIG90aGVyIHRoYW4g
MSwgYW5kIHRoZSB0ZXN0IGJvZHkgd2lsbCBmYWlsIHRoZQorLy8gYXNzZXJ0aW9uLgorY2xhc3Mg
R2VuZXJhdG9yRXZhbHVhdGlvblRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsKKyBw
dWJsaWM6CisgIHN0YXRpYyBpbnQgcGFyYW1fdmFsdWUoKSB7IHJldHVybiBwYXJhbV92YWx1ZV87
IH0KKyAgc3RhdGljIHZvaWQgc2V0X3BhcmFtX3ZhbHVlKGludCBwYXJhbV92YWx1ZSkgeyBwYXJh
bV92YWx1ZV8gPSBwYXJhbV92YWx1ZTsgfQorCisgcHJpdmF0ZToKKyAgc3RhdGljIGludCBwYXJh
bV92YWx1ZV87Cit9OworaW50IEdlbmVyYXRvckV2YWx1YXRpb25UZXN0OjpwYXJhbV92YWx1ZV8g
PSAwOworCitURVNUX1AoR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QsIEdlbmVyYXRvcnNFdmFsdWF0
ZWRJbk1haW4pIHsKKyAgRVhQRUNUX0VRKDEsIEdldFBhcmFtKCkpOworfQorSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoR2VuRXZhbE1vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVy
YXRvckV2YWx1YXRpb25UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEdlbmVy
YXRvckV2YWx1YXRpb25UZXN0OjpwYXJhbV92YWx1ZSgpKSk7CisKKy8vIFRlc3RzIHRoYXQgZ2Vu
ZXJhdG9ycyBkZWZpbmVkIGluIGEgZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXQgYXJlCisvLyBm
dW5jdGlvbmFsLiBHZW5lcmF0b3IgZXh0ZXJuX2dlbiBpcyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFt
LXRlc3RfdGVzdDIuY2MuCitleHRlcm4gUGFyYW1HZW5lcmF0b3I8aW50PiBleHRlcm5fZ2VuOwor
Y2xhc3MgRXh0ZXJuYWxHZW5lcmF0b3JUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7
fTsKK1RFU1RfUChFeHRlcm5hbEdlbmVyYXRvclRlc3QsIEV4dGVybmFsR2VuZXJhdG9yKSB7Cisg
IC8vIFNlcXVlbmNlIHByb2R1Y2VkIGJ5IGV4dGVybl9nZW4gY29udGFpbnMgb25seSBhIHNpbmds
ZSB2YWx1ZQorICAvLyB3aGljaCB3ZSB2ZXJpZnkgaGVyZS4KKyAgRVhQRUNUX0VRKEdldFBhcmFt
KCksIDMzKTsKK30KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEV4dGVybmFsR2VuZXJhdG9yTW9k
dWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxHZW5lcmF0b3JUZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgZXh0ZXJuX2dlbik7CisKKy8vIFRlc3RzIHRoYXQgYSBwYXJh
bWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgdHJhbnNsYXRpb24KKy8v
IHVuaXQgYW5kIGluc3RhbnRpYXRlZCBpbiBhbm90aGVyLiBUaGlzIHRlc3Qgd2lsbCBiZSBpbnN0
YW50aWF0ZWQgaW4KKy8vIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdDIuY2MuIEV4dGVybmFsSW5zdGFu
dGlhdGlvblRlc3QgZml4dHVyZSBjbGFzcyBpcworLy8gZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10
ZXN0X3Rlc3QuaC4KK1RFU1RfUChFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0LCBJc011bHRpcGxl
T2YzMykgeworICBFWFBFQ1RfRVEoMCwgR2V0UGFyYW0oKSAlIDMzKTsKK30KKworLy8gVGVzdHMg
dGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBpbnN0YW50aWF0ZWQgd2l0aCBt
dWx0aXBsZQorLy8gZ2VuZXJhdG9ycy4KK2NsYXNzIE11bHRpcGxlSW5zdGFudGlhdGlvblRlc3Qg
OiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHt9OworVEVTVF9QKE11bHRpcGxlSW5zdGFudGlh
dGlvblRlc3QsIEFsbG93c011bHRpcGxlSW5zdGFuY2VzKSB7Cit9CitJTlNUQU5USUFURV9URVNU
X0NBU0VfUChTZXF1ZW5jZTEsIE11bHRpcGxlSW5zdGFudGlhdGlvblRlc3QsIFZhbHVlcygxLCAy
KSk7CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5jZTIsIE11bHRpcGxlSW5zdGFudGlh
dGlvblRlc3QsIFJhbmdlKDMsIDUpKTsKKworLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQg
dGVzdCBjYXNlIGNhbiBiZSBpbnN0YW50aWF0ZWQKKy8vIGluIG11bHRpcGxlIHRyYW5zbGF0aW9u
IHVuaXRzLiBUaGlzIHRlc3Qgd2lsbCBiZSBpbnN0YW50aWF0ZWQKKy8vIGhlcmUgYW5kIGluIGd0
ZXN0LXBhcmFtLXRlc3RfdGVzdDIuY2MuCisvLyBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5z
bGF0aW9uVW5pdHNUZXN0IGZpeHR1cmUgY2xhc3MKKy8vIGlzIGRlZmluZWQgaW4gZ3Rlc3QtcGFy
YW0tdGVzdF90ZXN0LmguCitURVNUX1AoSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9u
VW5pdHNUZXN0LCBJc011bHRpcGxlT2Y0MikgeworICBFWFBFQ1RfRVEoMCwgR2V0UGFyYW0oKSAl
IDQyKTsKK30KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg0MiwgNDIqMikpOworCisvLyBUZXN0cyB0
aGF0IGVhY2ggaXRlcmF0aW9uIG9mIHBhcmFtZXRlcml6ZWQgdGVzdCBydW5zIGluIGEgc2VwYXJh
dGUgdGVzdAorLy8gb2JqZWN0LgorY2xhc3MgU2VwYXJhdGVJbnN0YW5jZVRlc3QgOiBwdWJsaWMg
VGVzdFdpdGhQYXJhbTxpbnQ+IHsKKyBwdWJsaWM6CisgIFNlcGFyYXRlSW5zdGFuY2VUZXN0KCkg
OiBjb3VudF8oMCkge30KKworICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAg
IEVYUEVDVF9HRShnbG9iYWxfY291bnRfLCAyKQorICAgICAgICA8PCAiSWYgc29tZSAoYnV0IG5v
dCBhbGwpIFNlcGFyYXRlSW5zdGFuY2VUZXN0IHRlc3RzIGhhdmUgYmVlbiAiCisgICAgICAgIDw8
ICJmaWx0ZXJlZCBvdXQgdGhpcyB0ZXN0IHdpbGwgZmFpbC4gTWFrZSBzdXJlIHRoYXQgYWxsICIK
KyAgICAgICAgPDwgIkdlbmVyYXRvckV2YWx1YXRpb25UZXN0IGFyZSBzZWxlY3RlZCBvciBkZS1z
ZWxlY3RlZCB0b2dldGhlciAiCisgICAgICAgIDw8ICJieSB0aGUgdGVzdCBmaWx0ZXIuIjsKKyAg
fQorCisgcHJvdGVjdGVkOgorICBpbnQgY291bnRfOworICBzdGF0aWMgaW50IGdsb2JhbF9jb3Vu
dF87Cit9OworaW50IFNlcGFyYXRlSW5zdGFuY2VUZXN0OjpnbG9iYWxfY291bnRfID0gMDsKKwor
VEVTVF9QKFNlcGFyYXRlSW5zdGFuY2VUZXN0LCBUZXN0c1J1bkluU2VwYXJhdGVJbnN0YW5jZXMp
IHsKKyAgRVhQRUNUX0VRKDAsIGNvdW50XysrKTsKKyAgZ2xvYmFsX2NvdW50XysrOworfQorSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoRm91ckVsZW1TZXF1ZW5jZSwgU2VwYXJhdGVJbnN0YW5jZVRl
c3QsIFJhbmdlKDEsIDQpKTsKKworLy8gVGVzdHMgdGhhdCBhbGwgaW5zdGFudGlhdGlvbnMgb2Yg
YSB0ZXN0IGhhdmUgbmFtZWQgYXBwcm9wcmlhdGVseS4gVGVzdAorLy8gZGVmaW5lZCB3aXRoIFRF
U1RfUChUZXN0Q2FzZU5hbWUsIFRlc3ROYW1lKSBhbmQgaW5zdGFudGlhdGVkIHdpdGgKKy8vIElO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlTmFtZSwgVGVzdENhc2VOYW1lLCBnZW5lcmF0
b3IpIG11c3QgYmUgbmFtZWQKKy8vIFNlcXVlbmNlTmFtZS9UZXN0Q2FzZU5hbWUuVGVzdE5hbWUv
aSwgd2hlcmUgaSBpcyB0aGUgMC1iYXNlZCBpbmRleCBvZiB0aGUKKy8vIHNlcXVlbmNlIGVsZW1l
bnQgdXNlZCB0byBpbnN0YW50aWF0ZSB0aGUgdGVzdC4KK2NsYXNzIE5hbWluZ1Rlc3QgOiBwdWJs
aWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHt9OworCitURVNUX1AoTmFtaW5nVGVzdCwgVGVzdHNSZXBv
cnRDb3JyZWN0TmFtZXNBbmRQYXJhbWV0ZXJzKSB7CisgIGNvbnN0IDo6dGVzdGluZzo6VGVzdElu
Zm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3Rh
bmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisKKyAgRVhQRUNUX1NUUkVRKCJaZXJvVG9GaXZl
U2VxdWVuY2UvTmFtaW5nVGVzdCIsIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7CisKKyAg
TWVzc2FnZSBpbmRleF9zdHJlYW07CisgIGluZGV4X3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3Jy
ZWN0TmFtZXNBbmRQYXJhbWV0ZXJzLyIgPDwgR2V0UGFyYW0oKTsKKyAgRVhQRUNUX1NUUkVRKGlu
ZGV4X3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0cigpLCB0ZXN0X2luZm8tPm5hbWUoKSk7CisKKyAg
RVhQRUNUX0VRKDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgpKSwgdGVzdF9pbmZv
LT52YWx1ZV9wYXJhbSgpKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoWmVyb1RvRml2
ZVNlcXVlbmNlLCBOYW1pbmdUZXN0LCBSYW5nZSgwLCA1KSk7CisKKy8vIFRlc3RzIHRoYXQgbWFj
cm9zIGluIHRlc3QgbmFtZXMgYXJlIGV4cGFuZGVkIGNvcnJlY3RseS4KK2NsYXNzIE1hY3JvTmFt
aW5nVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4ge307CisKKyNkZWZpbmUgUFJFRklY
X1dJVEhfRk9PKHRlc3RfbmFtZSkgRm9vIyN0ZXN0X25hbWUKKyNkZWZpbmUgUFJFRklYX1dJVEhf
TUFDUk8odGVzdF9uYW1lKSBNYWNybyMjdGVzdF9uYW1lCisKK1RFU1RfUChQUkVGSVhfV0lUSF9N
QUNSTyhOYW1pbmdUZXN0KSwgUFJFRklYX1dJVEhfRk9PKFNvbWVUZXN0TmFtZSkpIHsKKyAgY29u
c3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0aW5n
OjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKworICBFWFBF
Q1RfU1RSRVEoIkZvcnR5VHdvL01hY3JvTmFtaW5nVGVzdCIsIHRlc3RfaW5mby0+dGVzdF9jYXNl
X25hbWUoKSk7CisgIEVYUEVDVF9TVFJFUSgiRm9vU29tZVRlc3ROYW1lIiwgdGVzdF9pbmZvLT5u
YW1lKCkpOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChGb3J0eVR3bywgTWFjcm9OYW1p
bmdUZXN0LCBWYWx1ZXMoNDIpKTsKKworLy8gVGVzdHMgdGhlIHNhbWUgdGhpbmcgZm9yIG5vbi1w
YXJhbWV0cml6ZWQgdGVzdHMuCitjbGFzcyBNYWNyb05hbWluZ1Rlc3ROb25QYXJhbWV0cml6ZWQg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OworCitURVNUX0YoUFJFRklYX1dJVEhfTUFDUk8o
TmFtaW5nVGVzdE5vblBhcmFtZXRyaXplZCksCisgICAgICAgUFJFRklYX1dJVEhfRk9PKFNvbWVU
ZXN0TmFtZSkpIHsKKyAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZv
ID0KKyAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0
X2luZm8oKTsKKworICBFWFBFQ1RfU1RSRVEoIk1hY3JvTmFtaW5nVGVzdE5vblBhcmFtZXRyaXpl
ZCIsIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7CisgIEVYUEVDVF9TVFJFUSgiRm9vU29t
ZVRlc3ROYW1lIiwgdGVzdF9pbmZvLT5uYW1lKCkpOworfQorCisvLyBUZXN0cyB0aGF0IHVzZXIg
c3VwcGxpZWQgY3VzdG9tIHBhcmFtZXRlciBuYW1lcyBhcmUgd29ya2luZyBjb3JyZWN0bHkuCisv
LyBSdW5zIHRoZSB0ZXN0IHdpdGggYSBidWlsdGluIGhlbHBlciBtZXRob2Qgd2hpY2ggdXNlcyBQ
cmludFRvU3RyaW5nLAorLy8gYXMgd2VsbCBhcyBhIGN1c3RvbSBmdW5jdGlvbiBhbmQgY3VzdG9t
IGZ1bmN0b3IgdG8gZW5zdXJlIGFsbCBwb3NzaWJsZQorLy8gdXNlcyB3b3JrIGNvcnJlY3RseS4K
K2NsYXNzIEN1c3RvbUZ1bmN0b3JOYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08c3Rk
OjpzdHJpbmc+IHt9OworVEVTVF9QKEN1c3RvbUZ1bmN0b3JOYW1pbmdUZXN0LCBDdXN0b21UZXN0
TmFtZXMpIHt9CisKK3N0cnVjdCBDdXN0b21QYXJhbU5hbWVGdW5jdG9yIHsKKyAgc3RkOjpzdHJp
bmcgb3BlcmF0b3IoKShjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88c3RkOjpzdHJpbmc+
JiBpbmYpIHsKKyAgICByZXR1cm4gaW5mLnBhcmFtOworICB9Cit9OworCitJTlNUQU5USUFURV9U
RVNUX0NBU0VfUChDdXN0b21QYXJhbU5hbWVGdW5jdG9yLAorICAgICAgICAgICAgICAgICAgICAg
ICAgQ3VzdG9tRnVuY3Rvck5hbWluZ1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1
ZXMoc3RkOjpzdHJpbmcoIkZ1bmN0b3JOYW1lIikpLAorICAgICAgICAgICAgICAgICAgICAgICAg
Q3VzdG9tUGFyYW1OYW1lRnVuY3RvcigpKTsKKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQWxs
QWxsb3dlZENoYXJhY3RlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GdW5jdG9y
TmFtaW5nVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygiYWJjZGVmZ2hpamts
bW5vcHFyc3R1dnd4eXoiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBQkNERUZH
SElKS0xNTk9QUVJTVFVWV1hZWiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjAx
MjM0NTY3ODkwXyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tUGFyYW1OYW1lRnVu
Y3RvcigpKTsKKworaW5saW5lIHN0ZDo6c3RyaW5nIEN1c3RvbVBhcmFtTmFtZUZ1bmN0aW9uKAor
ICAgIGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzxzdGQ6OnN0cmluZz4mIGluZikgewor
ICByZXR1cm4gaW5mLnBhcmFtOworfQorCitjbGFzcyBDdXN0b21GdW5jdGlvbk5hbWluZ1Rlc3Qg
OiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxzdGQ6OnN0cmluZz4ge307CitURVNUX1AoQ3VzdG9tRnVu
Y3Rpb25OYW1pbmdUZXN0LCBDdXN0b21UZXN0TmFtZXMpIHt9CisKK0lOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QKEN1c3RvbVBhcmFtTmFtZUZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
Q3VzdG9tRnVuY3Rpb25OYW1pbmdUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVz
KHN0ZDo6c3RyaW5nKCJGdW5jdGlvbk5hbWUiKSksCisgICAgICAgICAgICAgICAgICAgICAgICBD
dXN0b21QYXJhbU5hbWVGdW5jdGlvbik7CisKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisKKy8vIFRl
c3QgY3VzdG9tIG5hbWluZyB3aXRoIGEgbGFtYmRhCisKK2NsYXNzIEN1c3RvbUxhbWJkYU5hbWlu
Z1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxzdGQ6OnN0cmluZz4ge307CitURVNUX1AoQ3Vz
dG9tTGFtYmRhTmFtaW5nVGVzdCwgQ3VzdG9tVGVzdE5hbWVzKSB7fQorCitJTlNUQU5USUFURV9U
RVNUX0NBU0VfUChDdXN0b21QYXJhbU5hbWVMYW1iZGEsIEN1c3RvbUxhbWJkYU5hbWluZ1Rlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoc3RkOjpzdHJpbmcoIkxhbWJkYU5hbWUi
KSksCisgICAgICAgICAgICAgICAgICAgICAgICBbXShjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJh
bUluZm88c3RkOjpzdHJpbmc+JiBpbmYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGluZi5wYXJhbTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworCisjZW5kaWYgIC8v
IEdURVNUX0xBTkdfQ1hYMTEKKworVEVTVChDdXN0b21OYW1pbmdUZXN0LCBDaGVja05hbWVSZWdp
c3RyeSkgeworICA6OnRlc3Rpbmc6OlVuaXRUZXN0KiB1bml0X3Rlc3QgPSA6OnRlc3Rpbmc6OlVu
aXRUZXN0OjpHZXRJbnN0YW5jZSgpOworICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gdGVzdF9uYW1l
czsKKyAgZm9yIChpbnQgY2FzZV9udW0gPSAwOworICAgICAgIGNhc2VfbnVtIDwgdW5pdF90ZXN0
LT50b3RhbF90ZXN0X2Nhc2VfY291bnQoKTsKKyAgICAgICArK2Nhc2VfbnVtKSB7CisgICAgY29u
c3QgOjp0ZXN0aW5nOjpUZXN0Q2FzZSogdGVzdF9jYXNlID0gdW5pdF90ZXN0LT5HZXRUZXN0Q2Fz
ZShjYXNlX251bSk7CisgICAgZm9yIChpbnQgdGVzdF9udW0gPSAwOworICAgICAgICAgdGVzdF9u
dW0gPCB0ZXN0X2Nhc2UtPnRvdGFsX3Rlc3RfY291bnQoKTsKKyAgICAgICAgICsrdGVzdF9udW0p
IHsKKyAgICAgIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIHRlc3RfaW5mbyA9IHRlc3RfY2Fz
ZS0+R2V0VGVzdEluZm8odGVzdF9udW0pOworICAgICAgdGVzdF9uYW1lcy5pbnNlcnQoc3RkOjpz
dHJpbmcodGVzdF9pbmZvLT5uYW1lKCkpKTsKKyAgICB9CisgIH0KKyAgRVhQRUNUX0VRKDF1LCB0
ZXN0X25hbWVzLmNvdW50KCJDdXN0b21UZXN0TmFtZXMvRnVuY3Rvck5hbWUiKSk7CisgIEVYUEVD
VF9FUSgxdSwgdGVzdF9uYW1lcy5jb3VudCgiQ3VzdG9tVGVzdE5hbWVzL0Z1bmN0aW9uTmFtZSIp
KTsKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisgIEVYUEVDVF9FUSgxdSwgdGVzdF9uYW1lcy5jb3Vu
dCgiQ3VzdG9tVGVzdE5hbWVzL0xhbWJkYU5hbWUiKSk7CisjZW5kaWYgIC8vIEdURVNUX0xBTkdf
Q1hYMTEKK30KKworLy8gVGVzdCBhIG51bWVyaWMgbmFtZSB0byBlbnN1cmUgUHJpbnRUb1N0cmlu
Z1BhcmFtTmFtZSB3b3JrcyBjb3JyZWN0bHkuCisKK2NsYXNzIEN1c3RvbUludGVnZXJOYW1pbmdU
ZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7fTsKKworVEVTVF9QKEN1c3RvbUludGVn
ZXJOYW1pbmdUZXN0LCBUZXN0c1JlcG9ydENvcnJlY3ROYW1lcykgeworICBjb25zdCA6OnRlc3Rp
bmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQorICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0
OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOworICBNZXNzYWdlIHRlc3RfbmFt
ZV9zdHJlYW07CisgIHRlc3RfbmFtZV9zdHJlYW0gPDwgIlRlc3RzUmVwb3J0Q29ycmVjdE5hbWVz
LyIgPDwgR2V0UGFyYW0oKTsKKyAgRVhQRUNUX1NUUkVRKHRlc3RfbmFtZV9zdHJlYW0uR2V0U3Ry
aW5nKCkuY19zdHIoKSwgdGVzdF9pbmZvLT5uYW1lKCkpOworfQorCitJTlNUQU5USUFURV9URVNU
X0NBU0VfUChQcmludFRvU3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tSW50
ZWdlck5hbWluZ1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBSYW5nZSgwLCA1KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgp
KTsKKworLy8gVGVzdCBhIGN1c3RvbSBzdHJ1Y3Qgd2l0aCBQcmludFRvU3RyaW5nLgorCitzdHJ1
Y3QgQ3VzdG9tU3RydWN0IHsKKyAgZXhwbGljaXQgQ3VzdG9tU3RydWN0KGludCB2YWx1ZSkgOiB4
KHZhbHVlKSB7fQorICBpbnQgeDsKK307CisKK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6
Om9zdHJlYW0mIHN0cmVhbSwgY29uc3QgQ3VzdG9tU3RydWN0JiB2YWwpIHsKKyAgc3RyZWFtIDw8
IHZhbC54OworICByZXR1cm4gc3RyZWFtOworfQorCitjbGFzcyBDdXN0b21TdHJ1Y3ROYW1pbmdU
ZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08Q3VzdG9tU3RydWN0PiB7fTsKKworVEVTVF9QKEN1
c3RvbVN0cnVjdE5hbWluZ1Rlc3QsIFRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzKSB7CisgIGNvbnN0
IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGluZzo6
VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisgIE1lc3NhZ2Ug
dGVzdF9uYW1lX3N0cmVhbTsKKyAgdGVzdF9uYW1lX3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3Jy
ZWN0TmFtZXMvIiA8PCBHZXRQYXJhbSgpOworICBFWFBFQ1RfU1RSRVEodGVzdF9uYW1lX3N0cmVh
bS5HZXRTdHJpbmcoKS5jX3N0cigpLCB0ZXN0X2luZm8tPm5hbWUoKSk7Cit9CisKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKFByaW50VG9TdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBD
dXN0b21TdHJ1Y3ROYW1pbmdUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEN1
c3RvbVN0cnVjdCgwKSwgQ3VzdG9tU3RydWN0KDEpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgpKTsKKworLy8gVGVzdCB0aGF0IHVz
aW5nIGEgc3RhdGVmdWwgcGFyYW1ldGVyIG5hbWluZyBmdW5jdGlvbiB3b3JrcyBhcyBleHBlY3Rl
ZC4KKworc3RydWN0IFN0YXRlZnVsTmFtaW5nRnVuY3RvciB7CisgIFN0YXRlZnVsTmFtaW5nRnVu
Y3RvcigpIDogc3VtKDApIHt9CisgIHN0ZDo6c3RyaW5nIG9wZXJhdG9yKCkoY29uc3QgOjp0ZXN0
aW5nOjpUZXN0UGFyYW1JbmZvPGludD4mIGluZm8pIHsKKyAgICBpbnQgdmFsdWUgPSBpbmZvLnBh
cmFtICsgc3VtOworICAgIHN1bSArPSBpbmZvLnBhcmFtOworICAgIHJldHVybiA6OnRlc3Rpbmc6
OlByaW50VG9TdHJpbmcodmFsdWUpOworICB9CisgIGludCBzdW07Cit9OworCitjbGFzcyBTdGF0
ZWZ1bE5hbWluZ1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4gewor
IHByb3RlY3RlZDoKKyAgU3RhdGVmdWxOYW1pbmdUZXN0KCkgOiBzdW1fKDApIHt9CisgIGludCBz
dW1fOworfTsKKworVEVTVF9QKFN0YXRlZnVsTmFtaW5nVGVzdCwgVGVzdHNSZXBvcnRDb3JyZWN0
TmFtZXMpIHsKKyAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0K
KyAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2lu
Zm8oKTsKKyAgc3VtXyArPSBHZXRQYXJhbSgpOworICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07
CisgIHRlc3RfbmFtZV9zdHJlYW0gPDwgIlRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzLyIgPDwgc3Vt
XzsKKyAgRVhQRUNUX1NUUkVRKHRlc3RfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19zdHIoKSwg
dGVzdF9pbmZvLT5uYW1lKCkpOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChTdGF0ZWZ1
bE5hbWluZ0Z1bmN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZWZ1bE5hbWluZ1Rl
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICBSYW5nZSgwLCA1KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFN0YXRlZnVsTmFtaW5nRnVuY3RvcigpKTsKKworLy8gQ2xhc3MgdGhhdCBjYW5u
b3QgYmUgc3RyZWFtZWQgaW50byBhbiBvc3RyZWFtLiAgSXQgbmVlZHMgdG8gYmUgY29weWFibGUK
Ky8vIChhbmQsIGluIGNhc2Ugb2YgTVNWQywgYWxzbyBhc3NpZ25hYmxlKSBpbiBvcmRlciB0byBi
ZSBhIHRlc3QgcGFyYW1ldGVyCisvLyB0eXBlLiAgSXRzIGRlZmF1bHQgY29weSBjb25zdHJ1Y3Rv
ciBhbmQgYXNzaWdubWVudCBvcGVyYXRvciBkbyBleGFjdGx5CisvLyB3aGF0IHdlIG5lZWQuCitj
bGFzcyBVbnN0cmVhbWFibGUgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgVW5zdHJlYW1hYmxlKGlu
dCB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9CisKKyBwcml2YXRlOgorICBpbnQgdmFsdWVfOwor
fTsKKworY2xhc3MgQ29tbWVudFRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxVbnN0cmVhbWFi
bGU+IHt9OworCitURVNUX1AoQ29tbWVudFRlc3QsIFRlc3RzQ29ycmVjdGx5UmVwb3J0VW5zdHJl
YW1hYmxlUGFyYW1zKSB7CisgIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3Rf
aW5mbyA9CisgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRf
dGVzdF9pbmZvKCk7CisKKyAgRVhQRUNUX0VRKDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhHZXRQ
YXJhbSgpKSwgdGVzdF9pbmZvLT52YWx1ZV9wYXJhbSgpKTsKK30KKworSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1AoSW5zdGFudGlhdGlvbldpdGhDb21tZW50cywKKyAgICAgICAgICAgICAgICAgICAg
ICAgIENvbW1lbnRUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKFVuc3RyZWFt
YWJsZSgxKSkpOworCisvLyBWZXJpZnkgdGhhdCB3ZSBjYW4gY3JlYXRlIGEgaGllcmFyY2h5IG9m
IHRlc3QgZml4dHVyZXMsIHdoZXJlIHRoZSBiYXNlCisvLyBjbGFzcyBmaXh0dXJlIGlzIG5vdCBw
YXJhbWV0ZXJpemVkIGFuZCB0aGUgZGVyaXZlZCBjbGFzcyBpcy4gSW4gdGhpcyBjYXNlCisvLyBQ
YXJhbWV0ZXJpemVkRGVyaXZlZFRlc3QgaW5oZXJpdHMgZnJvbSBOb25QYXJhbWV0ZXJpemVkQmFz
ZVRlc3QuICBXZQorLy8gcGVyZm9ybSBzaW1wbGUgdGVzdHMgb24gYm90aC4KK2NsYXNzIE5vblBh
cmFtZXRlcml6ZWRCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHB1YmxpYzoK
KyAgTm9uUGFyYW1ldGVyaXplZEJhc2VUZXN0KCkgOiBuXygxNykgeyB9CisgcHJvdGVjdGVkOgor
ICBpbnQgbl87Cit9OworCitjbGFzcyBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3QgOiBwdWJsaWMg
Tm9uUGFyYW1ldGVyaXplZEJhc2VUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPGludD4geworIHByb3RlY3Rl
ZDoKKyAgUGFyYW1ldGVyaXplZERlcml2ZWRUZXN0KCkgOiBjb3VudF8oMCkgeyB9CisgIGludCBj
b3VudF87CisgIHN0YXRpYyBpbnQgZ2xvYmFsX2NvdW50XzsKK307CisKK2ludCBQYXJhbWV0ZXJp
emVkRGVyaXZlZFRlc3Q6Omdsb2JhbF9jb3VudF8gPSAwOworCitURVNUX0YoTm9uUGFyYW1ldGVy
aXplZEJhc2VUZXN0LCBGaXh0dXJlSXNJbml0aWFsaXplZCkgeworICBFWFBFQ1RfRVEoMTcsIG5f
KTsKK30KKworVEVTVF9QKFBhcmFtZXRlcml6ZWREZXJpdmVkVGVzdCwgU2Vlc1NlcXVlbmNlKSB7
CisgIEVYUEVDVF9FUSgxNywgbl8pOworICBFWFBFQ1RfRVEoMCwgY291bnRfKyspOworICBFWFBF
Q1RfRVEoR2V0UGFyYW0oKSwgZ2xvYmFsX2NvdW50XysrKTsKK30KKworY2xhc3MgUGFyYW1ldGVy
aXplZERlYXRoVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7IH07
CisKK1RFU1RfRihQYXJhbWV0ZXJpemVkRGVhdGhUZXN0LCBHZXRQYXJhbURpZXNGcm9tVGVzdEYp
IHsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChHZXRQYXJhbSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIuKiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QgLioiKTsKK30KKwor
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoUmFuZ2VaZXJvVG9GaXZlLCBQYXJhbWV0ZXJpemVkRGVy
aXZlZFRlc3QsIFJhbmdlKDAsIDUpKTsKKworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy
Z3YpIHsKKyAgLy8gVXNlZCBpbiBUZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlLgorICBBZGRH
bG9iYWxUZXN0RW52aXJvbm1lbnQoVGVzdEdlbmVyYXRpb25UZXN0OjpFbnZpcm9ubWVudDo6SW5z
dGFuY2UoKSk7CisgIC8vIFVzZWQgaW4gR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QgdGVzdCBjYXNl
LiBUZXN0cyB0aGF0IHRoZSB1cGRhdGVkIHZhbHVlCisgIC8vIHdpbGwgYmUgcGlja2VkIHVwIGZv
ciBpbnN0YW50aWF0aW5nIHRlc3RzIGluIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0LgorICBHZW5l
cmF0b3JFdmFsdWF0aW9uVGVzdDo6c2V0X3BhcmFtX3ZhbHVlKDEpOworCisgIDo6dGVzdGluZzo6
SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIC8vIFVzZWQgaW4gR2VuZXJhdG9yRXZh
bHVhdGlvblRlc3QgdGVzdCBjYXNlLiBUZXN0cyB0aGF0IHZhbHVlIHVwZGF0ZWQKKyAgLy8gaGVy
ZSB3aWxsIE5PVCBiZSB1c2VkIGZvciBpbnN0YW50aWF0aW5nIHRlc3RzIGluCisgIC8vIEdlbmVy
YXRvckV2YWx1YXRpb25UZXN0LgorICBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6c2V0X3BhcmFt
X3ZhbHVlKDIpOworCisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjMyYTYxZjQ5MjZiYTkyMjUxNTlkYjQ2OTgxMGU0MWNhYzBkMjBjNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVz
dC1wYXJhbS10ZXN0LXRlc3QuaApAQCAtMCwwICsxLDUxIEBACisvLyBDb3B5cmlnaHQgMjAwOCwg
R29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
Ky8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBh
bmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8KKy8vIFRoaXMgaGVhZGVyIGZp
bGUgcHJvdmlkZXMgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIHVzZWQgaW50ZXJuYWxseQorLy8gZm9y
IHRlc3RpbmcgR29vZ2xlIFRlc3QgaXRzZWxmLgorCisjaWZuZGVmIEdURVNUX1RFU1RfR1RFU1Rf
UEFSQU1fVEVTVF9URVNUX0hfCisjZGVmaW5lIEdURVNUX1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9U
RVNUX0hfCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisvLyBUZXN0IGZpeHR1cmUgZm9y
IHRlc3RpbmcgZGVmaW5pdGlvbiBhbmQgaW5zdGFudGlhdGlvbiBvZiBhIHRlc3QKKy8vIGluIHNl
cGFyYXRlIHRyYW5zbGF0aW9uIHVuaXRzLgorY2xhc3MgRXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7Cit9OworCisvLyBUZXN0
IGZpeHR1cmUgZm9yIHRlc3RpbmcgaW5zdGFudGlhdGlvbiBvZiBhIHRlc3QgaW4gbXVsdGlwbGUK
Ky8vIHRyYW5zbGF0aW9uIHVuaXRzLgorY2xhc3MgSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFu
c2xhaW9uVW5pdHNUZXN0CisgICAgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGlu
dD4geworfTsKKworI2VuZGlmICAvLyBHVEVTVF9URVNUX0dURVNUX1BBUkFNX1RFU1RfVEVTVF9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBh
cmFtLXRlc3QyLXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtcGFyYW0tdGVzdDItdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWJiOTQ1YzJmOGVkMjlmZDkwODU2
YjIzZTAzYzAxZTJhODQzMDYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QyLXRlc3QuY2MKQEAgLTAsMCArMSw2MSBA
QAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisv
LyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8g
VGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZi4gIFRoaXMgdmVyaWZpZXMgdGhhdCB0aGUgYmFz
aWMgY29uc3RydWN0cyBvZgorLy8gR29vZ2xlIFRlc3Qgd29yay4KKworI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCisjaW5jbHVkZSAidGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5oIgor
Cit1c2luZyA6OnRlc3Rpbmc6OlZhbHVlczsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBh
cmFtR2VuZXJhdG9yOworCisvLyBUZXN0cyB0aGF0IGdlbmVyYXRvcnMgZGVmaW5lZCBpbiBhIGRp
ZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0CisvLyBhcmUgZnVuY3Rpb25hbC4gVGhlIHRlc3QgdXNp
bmcgZXh0ZXJuX2dlbiBpcyBkZWZpbmVkCisvLyBpbiBnb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVz
dC5jYy4KK1BhcmFtR2VuZXJhdG9yPGludD4gZXh0ZXJuX2dlbiA9IFZhbHVlcygzMyk7CisKKy8v
IFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgZGVmaW5lZCBpbiBv
bmUgdHJhbnNsYXRpb24gdW5pdAorLy8gYW5kIGluc3RhbnRpYXRlZCBpbiBhbm90aGVyLiBUaGUg
dGVzdCBpcyBkZWZpbmVkIGluCisvLyBnb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYyBhbmQg
RXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCBmaXh0dXJlIGNsYXNzIGlzCisvLyBkZWZpbmVkIGlu
IGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oLgorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoTXVsdGlw
bGVzT2YzMywKKyAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVybmFsSW5zdGFudGlhdGlvblRl
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMzMsIDY2KSk7CisKKy8vIFRlc3Rz
IHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgaW5zdGFudGlhdGVkCisvLyBp
biBtdWx0aXBsZSB0cmFuc2xhdGlvbiB1bml0cy4gQW5vdGhlciBpbnN0YW50aWF0aW9uIGlzIGRl
ZmluZWQKKy8vIGluIGdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmNjIGFuZAorLy8gSW5zdGFu
dGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0IGZpeHR1cmUgaXMgZGVmaW5lZCBp
bgorLy8gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmgKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNl
cXVlbmNlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb25Jbk11bHRpcGxl
VHJhbnNsYWlvblVuaXRzVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg0Mioz
LCA0Mio0LCA0Mio1KSk7CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ29vZ2xldGVzdC1wb3J0LXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtcG9ydC10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5OTMxNmY5NWI2MzdhY2E5MmZi
NWExNTQ0ZWM3ZmMyN2MyZWZiMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcG9ydC10ZXN0LmNjCkBAIC0wLDAgKzEsMTMwMCBAQAor
Ly8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBk
aXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIFRoaXMg
ZmlsZSB0ZXN0cyB0aGUgaW50ZXJuYWwgY3Jvc3MtcGxhdGZvcm0gc3VwcG9ydCB1dGlsaXRpZXMu
CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaCIKKworI2lmIEdURVNUX09TX01BQworIyBpbmNsdWRlIDx0aW1lLmg+CisjZW5kaWYgIC8v
IEdURVNUX09TX01BQworCisjaW5jbHVkZSA8bGlzdD4KKyNpbmNsdWRlIDx1dGlsaXR5PiAgLy8g
Rm9yIHN0ZDo6cGFpciBhbmQgc3RkOjptYWtlX3BhaXIuCisjaW5jbHVkZSA8dmVjdG9yPgorCisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKyNp
bmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCisKK3VzaW5nIHN0ZDo6bWFrZV9wYWly
OwordXNpbmcgc3RkOjpwYWlyOworCituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50
ZXJuYWwgeworCitURVNUKElzWERpZ2l0VGVzdCwgV29ya3NGb3JOYXJyb3dBc2NpaSkgeworICBF
WFBFQ1RfVFJVRShJc1hEaWdpdCgnMCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoJzknKSk7
CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KCdBJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgn
RicpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoJ2EnKSk7CisgIEVYUEVDVF9UUlVFKElzWERp
Z2l0KCdmJykpOworCisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdCgnLScpKTsKKyAgRVhQRUNUX0ZB
TFNFKElzWERpZ2l0KCdnJykpOworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoJ0cnKSk7Cit9CisK
K1RFU1QoSXNYRGlnaXRUZXN0LCBSZXR1cm5zRmFsc2VGb3JOYXJyb3dOb25Bc2NpaSkgeworICBF
WFBFQ1RfRkFMU0UoSXNYRGlnaXQoc3RhdGljX2Nhc3Q8Y2hhcj4oJ1x4ODAnKSkpOworICBFWFBF
Q1RfRkFMU0UoSXNYRGlnaXQoc3RhdGljX2Nhc3Q8Y2hhcj4oJzAnIHwgJ1x4ODAnKSkpOworfQor
CitURVNUKElzWERpZ2l0VGVzdCwgV29ya3NGb3JXaWRlQXNjaWkpIHsKKyAgRVhQRUNUX1RSVUUo
SXNYRGlnaXQoTCcwJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdChMJzknKSk7CisgIEVYUEVD
VF9UUlVFKElzWERpZ2l0KEwnQScpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoTCdGJykpOwor
ICBFWFBFQ1RfVFJVRShJc1hEaWdpdChMJ2EnKSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwn
ZicpKTsKKworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoTCctJykpOworICBFWFBFQ1RfRkFMU0Uo
SXNYRGlnaXQoTCdnJykpOworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoTCdHJykpOworfQorCitU
RVNUKElzWERpZ2l0VGVzdCwgUmV0dXJuc0ZhbHNlRm9yV2lkZU5vbkFzY2lpKSB7CisgIEVYUEVD
VF9GQUxTRShJc1hEaWdpdChzdGF0aWNfY2FzdDx3Y2hhcl90PigweDgwKSkpOworICBFWFBFQ1Rf
RkFMU0UoSXNYRGlnaXQoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oTCcwJyB8IDB4ODApKSk7CisgIEVY
UEVDVF9GQUxTRShJc1hEaWdpdChzdGF0aWNfY2FzdDx3Y2hhcl90PihMJzAnIHwgMHgxMDApKSk7
Cit9CisKK2NsYXNzIEJhc2UgeworIHB1YmxpYzoKKyAgLy8gQ29weSBjb25zdHJ1Y3RvciBhbmQg
YXNzaWdubWVudCBvcGVyYXRvciBkbyBleGFjdGx5IHdoYXQgd2UgbmVlZCwgc28gd2UKKyAgLy8g
dXNlIHRoZW0uCisgIEJhc2UoKSA6IG1lbWJlcl8oMCkge30KKyAgZXhwbGljaXQgQmFzZShpbnQg
bikgOiBtZW1iZXJfKG4pIHt9CisgIHZpcnR1YWwgfkJhc2UoKSB7fQorICBpbnQgbWVtYmVyKCkg
eyByZXR1cm4gbWVtYmVyXzsgfQorCisgcHJpdmF0ZToKKyAgaW50IG1lbWJlcl87Cit9OworCitj
bGFzcyBEZXJpdmVkIDogcHVibGljIEJhc2UgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgRGVyaXZl
ZChpbnQgbikgOiBCYXNlKG4pIHt9Cit9OworCitURVNUKEltcGxpY2l0Q2FzdFRlc3QsIENvbnZl
cnRzUG9pbnRlcnMpIHsKKyAgRGVyaXZlZCBkZXJpdmVkKDApOworICBFWFBFQ1RfVFJVRSgmZGVy
aXZlZCA9PSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2UqPigmZGVyaXZl
ZCkpOworfQorCitURVNUKEltcGxpY2l0Q2FzdFRlc3QsIENhblVzZUluaGVyaXRhbmNlKSB7Cisg
IERlcml2ZWQgZGVyaXZlZCgxKTsKKyAgQmFzZSBiYXNlID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6
SW1wbGljaXRDYXN0XzxCYXNlPihkZXJpdmVkKTsKKyAgRVhQRUNUX0VRKGRlcml2ZWQubWVtYmVy
KCksIGJhc2UubWVtYmVyKCkpOworfQorCitjbGFzcyBDYXN0YWJsZSB7CisgcHVibGljOgorICBl
eHBsaWNpdCBDYXN0YWJsZShib29sKiBjb252ZXJ0ZWQpIDogY29udmVydGVkXyhjb252ZXJ0ZWQp
IHt9CisgIG9wZXJhdG9yIEJhc2UoKSB7CisgICAgKmNvbnZlcnRlZF8gPSB0cnVlOworICAgIHJl
dHVybiBCYXNlKCk7CisgIH0KKworIHByaXZhdGU6CisgIGJvb2wqIGNvbnZlcnRlZF87Cit9Owor
CitURVNUKEltcGxpY2l0Q2FzdFRlc3QsIENhblVzZU5vbkNvbnN0Q2FzdE9wZXJhdG9yKSB7Cisg
IGJvb2wgY29udmVydGVkID0gZmFsc2U7CisgIENhc3RhYmxlIGNhc3RhYmxlKCZjb252ZXJ0ZWQp
OworICBCYXNlIGJhc2UgPSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+
KGNhc3RhYmxlKTsKKyAgRVhQRUNUX1RSVUUoY29udmVydGVkKTsKK30KKworY2xhc3MgQ29uc3RD
YXN0YWJsZSB7CisgcHVibGljOgorICBleHBsaWNpdCBDb25zdENhc3RhYmxlKGJvb2wqIGNvbnZl
cnRlZCkgOiBjb252ZXJ0ZWRfKGNvbnZlcnRlZCkge30KKyAgb3BlcmF0b3IgQmFzZSgpIGNvbnN0
IHsKKyAgICAqY29udmVydGVkXyA9IHRydWU7CisgICAgcmV0dXJuIEJhc2UoKTsKKyAgfQorCisg
cHJpdmF0ZToKKyAgYm9vbCogY29udmVydGVkXzsKK307CisKK1RFU1QoSW1wbGljaXRDYXN0VGVz
dCwgQ2FuVXNlQ29uc3RDYXN0T3BlcmF0b3JPbkNvbnN0VmFsdWVzKSB7CisgIGJvb2wgY29udmVy
dGVkID0gZmFsc2U7CisgIGNvbnN0IENvbnN0Q2FzdGFibGUgY29uc3RfY2FzdGFibGUoJmNvbnZl
cnRlZCk7CisgIEJhc2UgYmFzZSA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88
QmFzZT4oY29uc3RfY2FzdGFibGUpOworICBFWFBFQ1RfVFJVRShjb252ZXJ0ZWQpOworfQorCitj
bGFzcyBDb25zdEFuZE5vbkNvbnN0Q2FzdGFibGUgeworIHB1YmxpYzoKKyAgQ29uc3RBbmROb25D
b25zdENhc3RhYmxlKGJvb2wqIGNvbnZlcnRlZCwgYm9vbCogY29uc3RfY29udmVydGVkKQorICAg
ICAgOiBjb252ZXJ0ZWRfKGNvbnZlcnRlZCksIGNvbnN0X2NvbnZlcnRlZF8oY29uc3RfY29udmVy
dGVkKSB7fQorICBvcGVyYXRvciBCYXNlKCkgeworICAgICpjb252ZXJ0ZWRfID0gdHJ1ZTsKKyAg
ICByZXR1cm4gQmFzZSgpOworICB9CisgIG9wZXJhdG9yIEJhc2UoKSBjb25zdCB7CisgICAgKmNv
bnN0X2NvbnZlcnRlZF8gPSB0cnVlOworICAgIHJldHVybiBCYXNlKCk7CisgIH0KKworIHByaXZh
dGU6CisgIGJvb2wqIGNvbnZlcnRlZF87CisgIGJvb2wqIGNvbnN0X2NvbnZlcnRlZF87Cit9Owor
CitURVNUKEltcGxpY2l0Q2FzdFRlc3QsIENhblNlbGVjdEJldHdlZW5Db25zdEFuZE5vbkNvbnN0
Q2FzckFwcHJvcHJpYXRlbHkpIHsKKyAgYm9vbCBjb252ZXJ0ZWQgPSBmYWxzZTsKKyAgYm9vbCBj
b25zdF9jb252ZXJ0ZWQgPSBmYWxzZTsKKyAgQ29uc3RBbmROb25Db25zdENhc3RhYmxlIGNhc3Rh
YmxlKCZjb252ZXJ0ZWQsICZjb25zdF9jb252ZXJ0ZWQpOworICBCYXNlIGJhc2UgPSA6OnRlc3Rp
bmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+KGNhc3RhYmxlKTsKKyAgRVhQRUNUX1RS
VUUoY29udmVydGVkKTsKKyAgRVhQRUNUX0ZBTFNFKGNvbnN0X2NvbnZlcnRlZCk7CisKKyAgY29u
dmVydGVkID0gZmFsc2U7CisgIGNvbnN0X2NvbnZlcnRlZCA9IGZhbHNlOworICBjb25zdCBDb25z
dEFuZE5vbkNvbnN0Q2FzdGFibGUgY29uc3RfY2FzdGFibGUoJmNvbnZlcnRlZCwgJmNvbnN0X2Nv
bnZlcnRlZCk7CisgIGJhc2UgPSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEJh
c2U+KGNvbnN0X2Nhc3RhYmxlKTsKKyAgRVhQRUNUX0ZBTFNFKGNvbnZlcnRlZCk7CisgIEVYUEVD
VF9UUlVFKGNvbnN0X2NvbnZlcnRlZCk7Cit9CisKK2NsYXNzIFRvIHsKKyBwdWJsaWM6CisgIFRv
KGJvb2wqIGNvbnZlcnRlZCkgeyAqY29udmVydGVkID0gdHJ1ZTsgfSAgLy8gTk9MSU5UCit9Owor
CitURVNUKEltcGxpY2l0Q2FzdFRlc3QsIENhblVzZUltcGxpY2l0Q29uc3RydWN0b3IpIHsKKyAg
Ym9vbCBjb252ZXJ0ZWQgPSBmYWxzZTsKKyAgVG8gdG8gPSA6OnRlc3Rpbmc6OmludGVybmFsOjpJ
bXBsaWNpdENhc3RfPFRvPigmY29udmVydGVkKTsKKyAgKHZvaWQpdG87CisgIEVYUEVDVF9UUlVF
KGNvbnZlcnRlZCk7Cit9CisKK1RFU1QoSXRlcmF0b3JUcmFpdHNUZXN0LCBXb3Jrc0ZvclNUTENv
bnRhaW5lckl0ZXJhdG9ycykgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50LAorICAgICAgSXRl
cmF0b3JUcmFpdHM8IDo6c3RkOjp2ZWN0b3I8aW50Pjo6Y29uc3RfaXRlcmF0b3I+Ojp2YWx1ZV90
eXBlPigpOworICBTdGF0aWNBc3NlcnRUeXBlRXE8Ym9vbCwKKyAgICAgIEl0ZXJhdG9yVHJhaXRz
PCA6OnN0ZDo6bGlzdDxib29sPjo6aXRlcmF0b3I+Ojp2YWx1ZV90eXBlPigpOworfQorCitURVNU
KEl0ZXJhdG9yVHJhaXRzVGVzdCwgV29ya3NGb3JQb2ludGVyVG9Ob25Db25zdCkgeworICBTdGF0
aWNBc3NlcnRUeXBlRXE8Y2hhciwgSXRlcmF0b3JUcmFpdHM8Y2hhcio+Ojp2YWx1ZV90eXBlPigp
OworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3Qgdm9pZCosIEl0ZXJhdG9yVHJhaXRzPGNvbnN0
IHZvaWQqKj46OnZhbHVlX3R5cGU+KCk7Cit9CisKK1RFU1QoSXRlcmF0b3JUcmFpdHNUZXN0LCBX
b3Jrc0ZvclBvaW50ZXJUb0NvbnN0KSB7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxjaGFyLCBJdGVy
YXRvclRyYWl0czxjb25zdCBjaGFyKj46OnZhbHVlX3R5cGU+KCk7CisgIFN0YXRpY0Fzc2VydFR5
cGVFcTxjb25zdCB2b2lkKiwKKyAgICAgIEl0ZXJhdG9yVHJhaXRzPGNvbnN0IHZvaWQqIGNvbnN0
Kj46OnZhbHVlX3R5cGU+KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIGVsZW1lbnRfdHlwZSB0
eXBlZGVmIGlzIGF2YWlsYWJsZSBpbiBzY29wZWRfcHRyIGFuZCByZWZlcnMKKy8vIHRvIHRoZSBw
YXJhbWV0ZXIgdHlwZS4KK1RFU1QoU2NvcGVkUHRyVGVzdCwgRGVmaW5lc0VsZW1lbnRUeXBlKSB7
CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIDo6dGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9w
dHI8aW50Pjo6ZWxlbWVudF90eXBlPigpOworfQorCisvLyBGSVhNRTogSW1wbGVtZW50IFRIRSBS
RVNUIG9mIHNjb3BlZF9wdHIgdGVzdHMuCisKK1RFU1QoR3Rlc3RDaGVja1N5bnRheFRlc3QsIEJl
aGF2ZXNMaWtlQVNpbmdsZVN0YXRlbWVudCkgeworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICBH
VEVTVF9DSEVDS18oZmFsc2UpIDw8ICJUaGlzIHNob3VsZCBuZXZlciBiZSBleGVjdXRlZDsgIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkl0J3MgYSBjb21waWxhdGlvbiB0ZXN0IG9ubHku
IjsKKworICBpZiAoQWx3YXlzVHJ1ZSgpKQorICAgIEdURVNUX0NIRUNLXyh0cnVlKTsKKyAgZWxz
ZQorICAgIDsgIC8vIE5PTElOVAorCisgIGlmIChBbHdheXNGYWxzZSgpKQorICAgIDsgIC8vIE5P
TElOVAorICBlbHNlCisgICAgR1RFU1RfQ0hFQ0tfKHRydWUpIDw8ICIiOworfQorCitURVNUKEd0
ZXN0Q2hlY2tTeW50YXhUZXN0LCBXb3Jrc1dpdGhTd2l0Y2gpIHsKKyAgc3dpdGNoICgwKSB7Cisg
ICAgY2FzZSAxOgorICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdURVNUX0NIRUNL
Xyh0cnVlKTsKKyAgfQorCisgIHN3aXRjaCAoMCkKKyAgICBjYXNlIDA6CisgICAgICBHVEVTVF9D
SEVDS18odHJ1ZSkgPDwgIkNoZWNrIGZhaWxlZCBpbiBzd2l0Y2ggY2FzZSI7Cit9CisKKy8vIFZl
cmlmaWVzIGJlaGF2aW9yIG9mIEZvcm1hdEZpbGVMb2NhdGlvbi4KK1RFU1QoRm9ybWF0RmlsZUxv
Y2F0aW9uVGVzdCwgRm9ybWF0c0ZpbGVMb2NhdGlvbikgeworICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KElzU3Vic3RyaW5nLCAiZm9vLmNjIiwgRm9ybWF0RmlsZUxvY2F0aW9uKCJmb28uY2MiLCA0Mikp
OworICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzU3Vic3RyaW5nLCAiNDIiLCBGb3JtYXRGaWxlTG9j
YXRpb24oImZvby5jYyIsIDQyKSk7Cit9CisKK1RFU1QoRm9ybWF0RmlsZUxvY2F0aW9uVGVzdCwg
Rm9ybWF0c1Vua25vd25GaWxlKSB7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoCisgICAgICBJc1N1
YnN0cmluZywgInVua25vd24gZmlsZSIsIEZvcm1hdEZpbGVMb2NhdGlvbihOVUxMLCA0MikpOwor
ICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzU3Vic3RyaW5nLCAiNDIiLCBGb3JtYXRGaWxlTG9jYXRp
b24oTlVMTCwgNDIpKTsKK30KKworVEVTVChGb3JtYXRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRz
VWtub3duTGluZSkgeworICBFWFBFQ1RfRVEoImZvby5jYzoiLCBGb3JtYXRGaWxlTG9jYXRpb24o
ImZvby5jYyIsIC0xKSk7Cit9CisKK1RFU1QoRm9ybWF0RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0
c1Vrbm93bkZpbGVBbmRMaW5lKSB7CisgIEVYUEVDVF9FUSgidW5rbm93biBmaWxlOiIsIEZvcm1h
dEZpbGVMb2NhdGlvbihOVUxMLCAtMSkpOworfQorCisvLyBWZXJpZmllcyBiZWhhdmlvciBvZiBG
b3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uLgorVEVTVChGb3JtYXRDb21waWxl
ckluZGVwZW5kZW50RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c0ZpbGVMb2NhdGlvbikgeworICBF
WFBFQ1RfRVEoImZvby5jYzo0MiIsIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRp
b24oImZvby5jYyIsIDQyKSk7Cit9CisKK1RFU1QoRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZp
bGVMb2NhdGlvblRlc3QsIEZvcm1hdHNVa25vd25GaWxlKSB7CisgIEVYUEVDVF9FUSgidW5rbm93
biBmaWxlOjQyIiwKKyAgICAgICAgICAgIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9j
YXRpb24oTlVMTCwgNDIpKTsKK30KKworVEVTVChGb3JtYXRDb21waWxlckluZGVwZW5kZW50Rmls
ZUxvY2F0aW9uVGVzdCwgRm9ybWF0c1Vrbm93bkxpbmUpIHsKKyAgRVhQRUNUX0VRKCJmb28uY2Mi
LCBGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uKCJmb28uY2MiLCAtMSkpOwor
fQorCitURVNUKEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb25UZXN0LCBGb3Jt
YXRzVWtub3duRmlsZUFuZExpbmUpIHsKKyAgRVhQRUNUX0VRKCJ1bmtub3duIGZpbGUiLCBGb3Jt
YXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uKE5VTEwsIC0xKSk7Cit9CisKKyNpZiBH
VEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19NQUMgfHwgR1RFU1RfT1NfUU5YIHx8IEdURVNUX09T
X0ZVQ0hTSUEKK3ZvaWQqIFRocmVhZEZ1bmModm9pZCogZGF0YSkgeworICBpbnRlcm5hbDo6TXV0
ZXgqIG11dGV4ID0gc3RhdGljX2Nhc3Q8aW50ZXJuYWw6Ok11dGV4Kj4oZGF0YSk7CisgIG11dGV4
LT5Mb2NrKCk7CisgIG11dGV4LT5VbmxvY2soKTsKKyAgcmV0dXJuIE5VTEw7Cit9CisKK1RFU1Qo
R2V0VGhyZWFkQ291bnRUZXN0LCBSZXR1cm5zQ29ycmVjdFZhbHVlKSB7CisgIGNvbnN0IHNpemVf
dCBzdGFydGluZ19jb3VudCA9IEdldFRocmVhZENvdW50KCk7CisgIHB0aHJlYWRfdCAgICAgICB0
aHJlYWRfaWQ7CisKKyAgaW50ZXJuYWw6Ok11dGV4IG11dGV4OworICB7CisgICAgaW50ZXJuYWw6
Ok11dGV4TG9jayBsb2NrKCZtdXRleCk7CisgICAgcHRocmVhZF9hdHRyX3QgIGF0dHI7CisgICAg
QVNTRVJUX0VRKDAsIHB0aHJlYWRfYXR0cl9pbml0KCZhdHRyKSk7CisgICAgQVNTRVJUX0VRKDAs
IHB0aHJlYWRfYXR0cl9zZXRkZXRhY2hzdGF0ZSgmYXR0ciwgUFRIUkVBRF9DUkVBVEVfSk9JTkFC
TEUpKTsKKworICAgIGNvbnN0IGludCBzdGF0dXMgPSBwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkX2lk
LCAmYXR0ciwgJlRocmVhZEZ1bmMsICZtdXRleCk7CisgICAgQVNTRVJUX0VRKDAsIHB0aHJlYWRf
YXR0cl9kZXN0cm95KCZhdHRyKSk7CisgICAgQVNTRVJUX0VRKDAsIHN0YXR1cyk7CisgICAgRVhQ
RUNUX0VRKHN0YXJ0aW5nX2NvdW50ICsgMSwgR2V0VGhyZWFkQ291bnQoKSk7CisgIH0KKworICB2
b2lkKiBkdW1teTsKKyAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfam9pbih0aHJlYWRfaWQsICZkdW1t
eSkpOworCisgIC8vIFRoZSBPUyBtYXkgbm90IGltbWVkaWF0ZWx5IHJlcG9ydCB0aGUgdXBkYXRl
ZCB0aHJlYWQgY291bnQgYWZ0ZXIKKyAgLy8gam9pbmluZyBhIHRocmVhZCwgY2F1c2luZyBmbGFr
aW5lc3MgaW4gdGhpcyB0ZXN0LiBUbyBjb3VudGVyIHRoYXQsIHdlCisgIC8vIHdhaXQgZm9yIHVw
IHRvIC41IHNlY29uZHMgZm9yIHRoZSBPUyB0byByZXBvcnQgdGhlIGNvcnJlY3QgdmFsdWUuCisg
IGZvciAoaW50IGkgPSAwOyBpIDwgNTsgKytpKSB7CisgICAgaWYgKEdldFRocmVhZENvdW50KCkg
PT0gc3RhcnRpbmdfY291bnQpCisgICAgICBicmVhazsKKworICAgIFNsZWVwTWlsbGlzZWNvbmRz
KDEwMCk7CisgIH0KKworICBFWFBFQ1RfRVEoc3RhcnRpbmdfY291bnQsIEdldFRocmVhZENvdW50
KCkpOworfQorI2Vsc2UKK1RFU1QoR2V0VGhyZWFkQ291bnRUZXN0LCBSZXR1cm5zWmVyb1doZW5V
bmFibGVUb0NvdW50VGhyZWFkcykgeworICBFWFBFQ1RfRVEoMFUsIEdldFRocmVhZENvdW50KCkp
OworfQorI2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19NQUMgfHwgR1RFU1Rf
T1NfUU5YIHx8IEdURVNUX09TX0ZVQ0hTSUEKKworVEVTVChHdGVzdENoZWNrRGVhdGhUZXN0LCBE
aWVzV2l0aENvcnJlY3RPdXRwdXRPbkZhaWx1cmUpIHsKKyAgY29uc3QgYm9vbCBhX2ZhbHNlX2Nv
bmRpdGlvbiA9IGZhbHNlOworICBjb25zdCBjaGFyIHJlZ2V4W10gPQorI2lmZGVmIF9NU0NfVkVS
CisgICAgICJnb29nbGV0ZXN0LXBvcnQtdGVzdFxcLmNjXFwoXFxkK1xcKToiCisjZWxpZiBHVEVT
VF9VU0VTX1BPU0lYX1JFCisgICAgICJnb29nbGV0ZXN0LXBvcnQtdGVzdFxcLmNjOlswLTldKyIK
KyNlbHNlCisgICAgICJnb29nbGV0ZXN0LXBvcnQtdGVzdFxcLmNjOlxcZCsiCisjZW5kaWYgIC8v
IF9NU0NfVkVSCisgICAgICIuKmFfZmFsc2VfY29uZGl0aW9uLipFeHRyYSBpbmZvLioiOworCisg
IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoR1RFU1RfQ0hFQ0tfKGFfZmFsc2VfY29uZGl0aW9u
KSA8PCAiRXh0cmEgaW5mbyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXgpOwor
fQorCisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworVEVTVChHdGVzdENoZWNrRGVhdGhUZXN0
LCBMaXZlc1NpbGVudGx5T25TdWNjZXNzKSB7CisgIEVYUEVDVF9FWElUKHsKKyAgICAgIEdURVNU
X0NIRUNLXyh0cnVlKSA8PCAiRXh0cmEgaW5mbyI7CisgICAgICA6OnN0ZDo6Y2VyciA8PCAiU3Vj
Y2Vzc1xuIjsKKyAgICAgIGV4aXQoMCk7IH0sCisgICAgICA6OnRlc3Rpbmc6OkV4aXRlZFdpdGhD
b2RlKDApLCAiU3VjY2VzcyIpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNU
CisKKy8vIFZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3QgY2hvb3NlIHJlZ3VsYXIgZXhwcmVzc2lv
biBlbmdpbmUgYXBwcm9wcmlhdGUgdG8KKy8vIHRoZSBwbGF0Zm9ybS4gVGhlIHRlc3Qgd2lsbCBw
cm9kdWNlIGNvbXBpbGVyIGVycm9ycyBpbiBjYXNlIG9mIGZhaWx1cmUuCisvLyBGb3Igc2ltcGxp
Y2l0eSwgd2Ugb25seSBjb3ZlciB0aGUgbW9zdCBpbXBvcnRhbnQgcGxhdGZvcm1zIGhlcmUuCitU
RVNUKFJlZ2V4RW5naW5lU2VsZWN0aW9uVGVzdCwgU2VsZWN0c0NvcnJlY3RSZWdleEVuZ2luZSkg
eworI2lmICFHVEVTVF9VU0VTX1BDUkUKKyMgaWYgR1RFU1RfSEFTX1BPU0lYX1JFCisKKyAgRVhQ
RUNUX1RSVUUoR1RFU1RfVVNFU19QT1NJWF9SRSk7CisKKyMgZWxzZQorCisgIEVYUEVDVF9UUlVF
KEdURVNUX1VTRVNfU0lNUExFX1JFKTsKKworIyBlbmRpZgorI2VuZGlmICAvLyAhR1RFU1RfVVNF
U19QQ1JFCit9CisKKyNpZiBHVEVTVF9VU0VTX1BPU0lYX1JFCisKKyMgaWYgR1RFU1RfSEFTX1RZ
UEVEX1RFU1QKKwordGVtcGxhdGUgPHR5cGVuYW1lIFN0cj4KK2NsYXNzIFJFVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3Qge307CisKKy8vIERlZmluZXMgU3RyaW5nVHlwZXMgYXMgdGhlIGxp
c3Qgb2YgYWxsIHN0cmluZyB0eXBlcyB0aGF0IGNsYXNzIFJFCisvLyBzdXBwb3J0cy4KK3R5cGVk
ZWYgdGVzdGluZzo6VHlwZXM8CisgICAgOjpzdGQ6OnN0cmluZywKKyMgIGlmIEdURVNUX0hBU19H
TE9CQUxfU1RSSU5HCisgICAgOjpzdHJpbmcsCisjICBlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JB
TF9TVFJJTkcKKyAgICBjb25zdCBjaGFyKj4gU3RyaW5nVHlwZXM7CisKK1RZUEVEX1RFU1RfQ0FT
RShSRVRlc3QsIFN0cmluZ1R5cGVzKTsKKworLy8gVGVzdHMgUkUncyBpbXBsaWNpdCBjb25zdHJ1
Y3RvcnMuCitUWVBFRF9URVNUKFJFVGVzdCwgSW1wbGljaXRDb25zdHJ1Y3RvcldvcmtzKSB7Cisg
IGNvbnN0IFJFIGVtcHR5KFR5cGVQYXJhbSgiIikpOworICBFWFBFQ1RfU1RSRVEoIiIsIGVtcHR5
LnBhdHRlcm4oKSk7CisKKyAgY29uc3QgUkUgc2ltcGxlKFR5cGVQYXJhbSgiaGVsbG8iKSk7Cisg
IEVYUEVDVF9TVFJFUSgiaGVsbG8iLCBzaW1wbGUucGF0dGVybigpKTsKKworICBjb25zdCBSRSBu
b3JtYWwoVHlwZVBhcmFtKCIuKihcXHcrKSIpKTsKKyAgRVhQRUNUX1NUUkVRKCIuKihcXHcrKSIs
IG5vcm1hbC5wYXR0ZXJuKCkpOworfQorCisvLyBUZXN0cyB0aGF0IFJFJ3MgY29uc3RydWN0b3Jz
IHJlamVjdCBpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCitUWVBFRF9URVNUKFJFVGVzdCwg
UmVqZWN0c0ludmFsaWRSZWdleCkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAg
Y29uc3QgUkUgaW52YWxpZChUeXBlUGFyYW0oIj8iKSk7CisgIH0sICJcIj9cIiBpcyBub3QgYSB2
YWxpZCBQT1NJWCBFeHRlbmRlZCByZWd1bGFyIGV4cHJlc3Npb24uIik7Cit9CisKKy8vIFRlc3Rz
IFJFOjpGdWxsTWF0Y2goKS4KK1RZUEVEX1RFU1QoUkVUZXN0LCBGdWxsTWF0Y2hXb3Jrcykgewor
ICBjb25zdCBSRSBlbXB0eShUeXBlUGFyYW0oIiIpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxN
YXRjaChUeXBlUGFyYW0oIiIpLCBlbXB0eSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRj
aChUeXBlUGFyYW0oImEiKSwgZW1wdHkpKTsKKworICBjb25zdCBSRSByZShUeXBlUGFyYW0oImEu
KnoiKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJheiIpLCByZSkp
OworICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYXh5eiIpLCByZSkpOwor
ICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oImJheiIpLCByZSkpOworICBF
WFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oImF6eSIpLCByZSkpOworfQorCisv
LyBUZXN0cyBSRTo6UGFydGlhbE1hdGNoKCkuCitUWVBFRF9URVNUKFJFVGVzdCwgUGFydGlhbE1h
dGNoV29ya3MpIHsKKyAgY29uc3QgUkUgZW1wdHkoVHlwZVBhcmFtKCIiKSk7CisgIEVYUEVDVF9U
UlVFKFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCIiKSwgZW1wdHkpKTsKKyAgRVhQRUNUX1RS
VUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oImEiKSwgZW1wdHkpKTsKKworICBjb25zdCBS
RSByZShUeXBlUGFyYW0oImEuKnoiKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2go
VHlwZVBhcmFtKCJheiIpLCByZSkpOworICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5
cGVQYXJhbSgiYXh5eiIpLCByZSkpOworICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5
cGVQYXJhbSgiYmF6IiksIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goVHlw
ZVBhcmFtKCJhenkiKSwgcmUpKTsKKyAgRVhQRUNUX0ZBTFNFKFJFOjpQYXJ0aWFsTWF0Y2goVHlw
ZVBhcmFtKCJ6emEiKSwgcmUpKTsKK30KKworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RF
U1QKKworI2VsaWYgR1RFU1RfVVNFU19TSU1QTEVfUkUKKworVEVTVChJc0luU2V0VGVzdCwgTnVs
Q2hhcklzTm90SW5BbnlTZXQpIHsKKyAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ1wwJywgIiIpKTsK
KyAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ1wwJywgIlwwIikpOworICBFWFBFQ1RfRkFMU0UoSXNJ
blNldCgnXDAnLCAiYSIpKTsKK30KKworVEVTVChJc0luU2V0VGVzdCwgV29ya3NGb3JOb25OdWxD
aGFycykgeworICBFWFBFQ1RfRkFMU0UoSXNJblNldCgnYScsICJBYiIpKTsKKyAgRVhQRUNUX0ZB
TFNFKElzSW5TZXQoJ2MnLCAiIikpOworCisgIEVYUEVDVF9UUlVFKElzSW5TZXQoJ2InLCAiYmNk
IikpOworICBFWFBFQ1RfVFJVRShJc0luU2V0KCdiJywgImFiIikpOworfQorCitURVNUKElzQXNj
aWlEaWdpdFRlc3QsIElzRmFsc2VGb3JOb25EaWdpdCkgeworICBFWFBFQ1RfRkFMU0UoSXNBc2Np
aURpZ2l0KCdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlEaWdpdCgnICcpKTsKKyAgRVhQ
RUNUX0ZBTFNFKElzQXNjaWlEaWdpdCgnKycpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlEaWdp
dCgnLScpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlEaWdpdCgnLicpKTsKKyAgRVhQRUNUX0ZB
TFNFKElzQXNjaWlEaWdpdCgnYScpKTsKK30KKworVEVTVChJc0FzY2lpRGlnaXRUZXN0LCBJc1Ry
dWVGb3JEaWdpdCkgeworICBFWFBFQ1RfVFJVRShJc0FzY2lpRGlnaXQoJzAnKSk7CisgIEVYUEVD
VF9UUlVFKElzQXNjaWlEaWdpdCgnMScpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaURpZ2l0KCc1
JykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpRGlnaXQoJzknKSk7Cit9CisKK1RFU1QoSXNBc2Np
aVB1bmN0VGVzdCwgSXNGYWxzZUZvck5vblB1bmN0KSB7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lp
UHVuY3QoJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVB1bmN0KCcgJykpOworICBFWFBF
Q1RfRkFMU0UoSXNBc2NpaVB1bmN0KCdcbicpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlQdW5j
dCgnYScpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlQdW5jdCgnMCcpKTsKK30KKworVEVTVChJ
c0FzY2lpUHVuY3RUZXN0LCBJc1RydWVGb3JQdW5jdCkgeworICBmb3IgKGNvbnN0IGNoYXIqIHAg
PSAiXi0hXCIjJCUmJygpKissLi86Ozw9Pj9AW1xcXV9ge3x9fiI7ICpwOyBwKyspIHsKKyAgICBF
WFBFQ1RfUFJFRDEoSXNBc2NpaVB1bmN0LCAqcCk7CisgIH0KK30KKworVEVTVChJc1JlcGVhdFRl
c3QsIElzRmFsc2VGb3JOb25SZXBlYXRDaGFyKSB7CisgIEVYUEVDVF9GQUxTRShJc1JlcGVhdCgn
XDAnKSk7CisgIEVYUEVDVF9GQUxTRShJc1JlcGVhdCgnICcpKTsKKyAgRVhQRUNUX0ZBTFNFKElz
UmVwZWF0KCdhJykpOworICBFWFBFQ1RfRkFMU0UoSXNSZXBlYXQoJzEnKSk7CisgIEVYUEVDVF9G
QUxTRShJc1JlcGVhdCgnLScpKTsKK30KKworVEVTVChJc1JlcGVhdFRlc3QsIElzVHJ1ZUZvclJl
cGVhdENoYXIpIHsKKyAgRVhQRUNUX1RSVUUoSXNSZXBlYXQoJz8nKSk7CisgIEVYUEVDVF9UUlVF
KElzUmVwZWF0KCcqJykpOworICBFWFBFQ1RfVFJVRShJc1JlcGVhdCgnKycpKTsKK30KKworVEVT
VChJc0FzY2lpV2hpdGVTcGFjZVRlc3QsIElzRmFsc2VGb3JOb25XaGl0ZVNwYWNlKSB7CisgIEVY
UEVDVF9GQUxTRShJc0FzY2lpV2hpdGVTcGFjZSgnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShJc0Fz
Y2lpV2hpdGVTcGFjZSgnYScpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXaGl0ZVNwYWNlKCcx
JykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdoaXRlU3BhY2UoJysnKSk7CisgIEVYUEVDVF9G
QUxTRShJc0FzY2lpV2hpdGVTcGFjZSgnXycpKTsKK30KKworVEVTVChJc0FzY2lpV2hpdGVTcGFj
ZVRlc3QsIElzVHJ1ZUZvcldoaXRlU3BhY2UpIHsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdoaXRl
U3BhY2UoJyAnKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXaGl0ZVNwYWNlKCdcbicpKTsKKyAg
RVhQRUNUX1RSVUUoSXNBc2NpaVdoaXRlU3BhY2UoJ1xyJykpOworICBFWFBFQ1RfVFJVRShJc0Fz
Y2lpV2hpdGVTcGFjZSgnXHQnKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXaGl0ZVNwYWNlKCdc
dicpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdoaXRlU3BhY2UoJ1xmJykpOworfQorCitURVNU
KElzQXNjaWlXb3JkQ2hhclRlc3QsIElzRmFsc2VGb3JOb25Xb3JkQ2hhcikgeworICBFWFBFQ1Rf
RkFMU0UoSXNBc2NpaVdvcmRDaGFyKCdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXb3Jk
Q2hhcignKycpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXb3JkQ2hhcignLicpKTsKKyAgRVhQ
RUNUX0ZBTFNFKElzQXNjaWlXb3JkQ2hhcignICcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlX
b3JkQ2hhcignXG4nKSk7Cit9CisKK1RFU1QoSXNBc2NpaVdvcmRDaGFyVGVzdCwgSXNUcnVlRm9y
TGV0dGVyKSB7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignYScpKTsKKyAgRVhQRUNU
X1RSVUUoSXNBc2NpaVdvcmRDaGFyKCdiJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENo
YXIoJ0EnKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignWicpKTsKK30KKworVEVT
VChJc0FzY2lpV29yZENoYXJUZXN0LCBJc1RydWVGb3JEaWdpdCkgeworICBFWFBFQ1RfVFJVRShJ
c0FzY2lpV29yZENoYXIoJzAnKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignMScp
KTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCc3JykpOworICBFWFBFQ1RfVFJVRShJ
c0FzY2lpV29yZENoYXIoJzknKSk7Cit9CisKK1RFU1QoSXNBc2NpaVdvcmRDaGFyVGVzdCwgSXNU
cnVlRm9yVW5kZXJzY29yZSkgeworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJ18nKSk7
Cit9CisKK1RFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzRmFsc2VGb3JOb25QcmludGFibGUpIHsK
KyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoSXNW
YWxpZEVzY2FwZSgnXDAwNycpKTsKK30KKworVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNGYWxz
ZUZvckRpZ2l0KSB7CisgIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCcwJykpOworICBFWFBF
Q1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnOScpKTsKK30KKworVEVTVChJc1ZhbGlkRXNjYXBlVGVz
dCwgSXNGYWxzZUZvcldoaXRlU3BhY2UpIHsKKyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUo
JyAnKSk7CisgIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdcbicpKTsKK30KKworVEVTVChJ
c1ZhbGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZvclNvbWVMZXR0ZXIpIHsKKyAgRVhQRUNUX0ZBTFNF
KElzVmFsaWRFc2NhcGUoJ2EnKSk7CisgIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdaJykp
OworfQorCitURVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc1RydWVGb3JQdW5jdCkgeworICBFWFBF
Q1RfVFJVRShJc1ZhbGlkRXNjYXBlKCcuJykpOworICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBl
KCctJykpOworICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdeJykpOworICBFWFBFQ1RfVFJV
RShJc1ZhbGlkRXNjYXBlKCckJykpOworICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCcoJykp
OworICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCddJykpOworICBFWFBFQ1RfVFJVRShJc1Zh
bGlkRXNjYXBlKCd7JykpOworICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCd8JykpOworfQor
CitURVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc1RydWVGb3JTb21lTGV0dGVyKSB7CisgIEVYUEVD
VF9UUlVFKElzVmFsaWRFc2NhcGUoJ2QnKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUo
J0QnKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ3MnKSk7CisgIEVYUEVDVF9UUlVF
KElzVmFsaWRFc2NhcGUoJ1MnKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ3cnKSk7
CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ1cnKSk7Cit9CisKK1RFU1QoQXRvbU1hdGNo
ZXNDaGFyVGVzdCwgRXNjYXBlZFB1bmN0KSB7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ1xcJywgJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICdcXCcsICcgJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdf
JywgJy4nKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJy4nLCAnYScp
KTsKKworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1xcJywgJ1xcJykpOwor
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ18nLCAnXycpKTsKKyAgRVhQRUNU
X1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICcrJywgJysnKSk7CisgIEVYUEVDVF9UUlVFKEF0
b21NYXRjaGVzQ2hhcih0cnVlLCAnLicsICcuJykpOworfQorCitURVNUKEF0b21NYXRjaGVzQ2hh
clRlc3QsIEVzY2FwZWRfZCkgeworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICdkJywgJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywg
J2EnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnLicpKTsK
KworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnMCcpKTsKKyAgRVhQ
RUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywgJzknKSk7Cit9CisKK1RFU1QoQXRv
bU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF9EKSB7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ0QnLCAnMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAnRCcsICc5JykpOworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
RCcsICdcMCcpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJ2En
KSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcsICctJykpOworfQor
CitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfcykgeworICBFWFBFQ1RfRkFMU0Uo
QXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICdzJywgJ2EnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ3MnLCAnLicpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVl
LCAncycsICc5JykpOworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycs
ICcgJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnXG4nKSk7
CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICdcdCcpKTsKK30KKwor
VEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX1MpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0
b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICcgJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNo
ZXNDaGFyKHRydWUsICdTJywgJ1xyJykpOworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hh
cih0cnVlLCAnUycsICdcMCcpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICdTJywgJ2EnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICc5
JykpOworfQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfdykgeworICBFWFBF
Q1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJ1wwJykpOworICBFWFBFQ1RfRkFM
U0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJysnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnICcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAndycsICdcbicpKTsKKworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ3cnLCAnMCcpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3
JywgJ2InKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdDJykp
OworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnXycpKTsKK30KKwor
VEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX1cpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0
b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICdBJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNo
ZXNDaGFyKHRydWUsICdXJywgJ2InKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ1cnLCAnOScpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
VycsICdfJykpOworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICdc
MCcpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJyonKSk7Cisg
IEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICdcbicpKTsKK30KKworVEVT
VChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkV2hpdGVTcGFjZSkgeworICBFWFBFQ1RfRkFM
U0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdmJywgJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoQXRv
bU1hdGNoZXNDaGFyKHRydWUsICdmJywgJ1xuJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNo
ZXNDaGFyKHRydWUsICduJywgJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFy
KHRydWUsICduJywgJ1xyJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICdyJywgJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdyJywg
J2EnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3QnLCAnXDAnKSk7
CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3QnLCAndCcpKTsKKyAgRVhQ
RUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndicsICdcMCcpKTsKKyAgRVhQRUNUX0ZB
TFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndicsICdcZicpKTsKKworICBFWFBFQ1RfVFJVRShB
dG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2YnLCAnXGYnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAnbicsICdcbicpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFy
KHRydWUsICdyJywgJ1xyJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwg
J3QnLCAnXHQnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndicsICdc
dicpKTsKK30KKworVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBVbmVzY2FwZWREb3QpIHsKKyAg
RVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4nLCAnXG4nKSk7CisKKyAgRVhQ
RUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnLicsICdcMCcpKTsKKyAgRVhQRUNUX1RS
VUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnLicsICcuJykpOworICBFWFBFQ1RfVFJVRShBdG9t
TWF0Y2hlc0NoYXIoZmFsc2UsICcuJywgJ2EnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVz
Q2hhcihmYWxzZSwgJy4nLCAnICcpKTsKK30KKworVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBV
bmVzY2FwZWRDaGFyKSB7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICdh
JywgJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnYScsICdi
JykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnJCcsICdhJykpOwor
CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJyQnLCAnJCcpKTsKKyAgRVhQ
RUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnNScsICc1JykpOworICBFWFBFQ1RfVFJV
RShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICdaJywgJ1onKSk7Cit9CisKK1RFU1QoVmFsaWRhdGVS
ZWdleFRlc3QsIEdlbmVyYXRlc0ZhaWx1cmVBbmRSZXR1cm5zRmFsc2VGb3JJbnZhbGlkKSB7Cisg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KE5VTEwp
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIk5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxl
IHJlZ3VsYXIgZXhwcmVzc2lvbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKKyAgICAg
IEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJhXFwiKSksCisgICAgICAiU3ludGF4IGVycm9y
IGF0IGluZGV4IDEgaW4gc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiBcImFcXFwiOiAiKTsKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImFcXCIp
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIidcXCcgY2Fubm90IGFwcGVhciBhdCB0aGUg
ZW5kIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJl
Z2V4KCJcXG5cXCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIidcXCcgY2Fubm90IGFw
cGVhciBhdCB0aGUgZW5kIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxT
RShWYWxpZGF0ZVJlZ2V4KCJcXHNcXGhiIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAi
aW52YWxpZCBlc2NhcGUgc2VxdWVuY2UgXCJcXGhcIiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiXl4iKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICInXicgY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBiZWdpbm5pbmciKTsKKyAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIi4qXmIiKSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICInXicgY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBi
ZWdpbm5pbmciKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlk
YXRlUmVnZXgoIiQkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJyQnIGNhbiBvbmx5
IGFwcGVhciBhdCB0aGUgZW5kIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9G
QUxTRShWYWxpZGF0ZVJlZ2V4KCJeJGEiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICIn
JCcgY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBlbmQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImEoYiIpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIicoJyBpcyB1bnN1cHBvcnRlZCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiYWIpIikpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAiJyknIGlzIHVuc3VwcG9ydGVkIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJbYWIiKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICInWycgaXMgdW5zdXBwb3J0ZWQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
QVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImF7MiIpKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIid7JyBpcyB1bnN1cHBvcnRlZCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShB
U1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiPyIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIic/JyBjYW4gb25seSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2VuIik7CisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJeKiIpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIicqJyBjYW4gb25seSBmb2xsb3cgYSByZXBlYXRhYmxlIHRv
a2VuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJl
Z2V4KCI1KisiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICInKycgY2FuIG9ubHkgZm9s
bG93IGEgcmVwZWF0YWJsZSB0b2tlbiIpOworfQorCitURVNUKFZhbGlkYXRlUmVnZXhUZXN0LCBS
ZXR1cm5zVHJ1ZUZvclZhbGlkKSB7CisgIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIiIpKTsK
KyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiYSIpKTsKKyAgRVhQRUNUX1RSVUUoVmFsaWRh
dGVSZWdleCgiLioiKSk7CisgIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIl5hXysiKSk7Cisg
IEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIl5hXFx0XFwmPyIpKTsKKyAgRVhQRUNUX1RSVUUo
VmFsaWRhdGVSZWdleCgiMDkqJCIpKTsKKyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiXlok
IikpOworICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCJhXFxeWlxcJFxcKFxcKVxcfFxcW1xc
XVxce1xcfSIpKTsKK30KKworVEVTVChNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZFRlc3Qs
IFdvcmtzRm9yWmVyb09yT25lKSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRS
ZWdleEF0SGVhZChmYWxzZSwgJ2EnLCAnPycsICJhIiwgImJhIikpOworICAvLyBSZXBlYXRpbmcg
bW9yZSB0aGFuIG9uY2UuCisgIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0
SGVhZChmYWxzZSwgJ2EnLCAnPycsICJiIiwgImFhYiIpKTsKKworICAvLyBSZXBlYXRpbmcgemVy
byB0aW1lcy4KKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFs
c2UsICdhJywgJz8nLCAiYiIsICJiYSIpKTsKKyAgLy8gUmVwZWF0aW5nIG9uY2UuCisgIEVYUEVD
VF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImIi
LCAiYWIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZh
bHNlLCAnIycsICc/JywgIi4iLCAiIyMiKSk7Cit9CisKK1RFU1QoTWF0Y2hSZXBldGl0aW9uQW5k
UmVnZXhBdEhlYWRUZXN0LCBXb3Jrc0Zvclplcm9Pck1hbnkpIHsKKyAgRVhQRUNUX0ZBTFNFKE1h
dGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcqJywgImEkIiwgImJhYWIi
KSk7CisKKyAgLy8gUmVwZWF0aW5nIHplcm8gdGltZXMuCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVw
ZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcqJywgImIiLCAiYmMiKSk7CisgIC8v
IFJlcGVhdGluZyBvbmNlLgorICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0
SGVhZChmYWxzZSwgJy4nLCAnKicsICJiIiwgImFiYyIpKTsKKyAgLy8gUmVwZWF0aW5nIG1vcmUg
dGhhbiBvbmNlLgorICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZCh0
cnVlLCAndycsICcqJywgIi0iLCAiYWJfMS1nIikpOworfQorCitURVNUKE1hdGNoUmVwZXRpdGlv
bkFuZFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NGb3JPbmVPck1hbnkpIHsKKyAgRVhQRUNUX0ZBTFNF
KE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcrJywgImEkIiwgImJh
YWIiKSk7CisgIC8vIFJlcGVhdGluZyB6ZXJvIHRpbWVzLgorICBFWFBFQ1RfRkFMU0UoTWF0Y2hS
ZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJysnLCAiYiIsICJiYyIpKTsKKwor
ICAvLyBSZXBlYXRpbmcgb25jZS4KKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVn
ZXhBdEhlYWQoZmFsc2UsICcuJywgJysnLCAiYiIsICJhYmMiKSk7CisgIC8vIFJlcGVhdGluZyBt
b3JlIHRoYW4gb25jZS4KKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhl
YWQodHJ1ZSwgJ3cnLCAnKycsICItIiwgImFiXzEtZyIpKTsKK30KKworVEVTVChNYXRjaFJlZ2V4
QXRIZWFkVGVzdCwgUmV0dXJuc1RydWVGb3JFbXB0eVJlZ2V4KSB7CisgIEVYUEVDVF9UUlVFKE1h
dGNoUmVnZXhBdEhlYWQoIiIsICIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQo
IiIsICJhYiIpKTsKK30KKworVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NXaGVuRG9s
bGFySXNJblJlZ2V4KSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCIkIiwgImEi
KSk7CisKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiJCIsICIiKSk7CisgIEVYUEVD
VF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoImEkIiwgImEiKSk7Cit9CisKK1RFU1QoTWF0Y2hSZWdl
eEF0SGVhZFRlc3QsIFdvcmtzV2hlblJlZ2V4U3RhcnRzV2l0aEVzY2FwZVNlcXVlbmNlKSB7Cisg
IEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJcXHciLCAiKyIpKTsKKyAgRVhQRUNUX0ZB
TFNFKE1hdGNoUmVnZXhBdEhlYWQoIlxcVyIsICJhYiIpKTsKKworICBFWFBFQ1RfVFJVRShNYXRj
aFJlZ2V4QXRIZWFkKCJcXHNhIiwgIlxuYWIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhB
dEhlYWQoIlxcZCIsICIxYSIpKTsKK30KKworVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgV29y
a3NXaGVuUmVnZXhTdGFydHNXaXRoUmVwZXRpdGlvbikgeworICBFWFBFQ1RfRkFMU0UoTWF0Y2hS
ZWdleEF0SGVhZCgiLithIiwgImFiYyIpKTsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhl
YWQoImE/YiIsICJhYWIiKSk7CisKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiLiph
IiwgImJjMTItYWIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoImE/YiIsICJi
IikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJhP2IiLCAiYWIiKSk7Cit9CisK
K1RFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsCisgICAgIFdvcmtzV2hlblJlZ2V4U3RhcnRzV2l0
aFJlcGV0aW9uT2ZFc2NhcGVTZXF1ZW5jZSkgeworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0
SGVhZCgiXFwuK2EiLCAiYWJjIikpOworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgi
XFxzP2IiLCAiICBiIikpOworCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcKCph
IiwgIigoKChhYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxeP2IiLCAi
XmIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcXFw/YiIsICJiIikpOwor
ICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXFxcP2IiLCAiXFxiIikpOworfQorCitU
RVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBNYXRjaGVzU2VxdWVudGlhbGx5KSB7CisgIEVYUEVD
VF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJhYi4qYyIsICJhY2FiYyIpKTsKKworICBFWFBFQ1Rf
VFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJhYi4qYyIsICJhYi1mc2MiKSk7Cit9CisKK1RFU1QoTWF0
Y2hSZWdleEFueXdoZXJlVGVzdCwgUmV0dXJuc0ZhbHNlV2hlblN0cmluZ0lzTnVsbCkgeworICBF
WFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJlKCIiLCBOVUxMKSk7Cit9CisKK1RFU1QoTWF0
Y2hSZWdleEFueXdoZXJlVGVzdCwgV29ya3NXaGVuUmVnZXhTdGFydHNXaXRoQ2FyZXQpIHsKKyAg
RVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXmEiLCAiYmEiKSk7CisgIEVYUEVDVF9G
QUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoIl4kIiwgImEiKSk7CisKKyAgRVhQRUNUX1RSVUUoTWF0
Y2hSZWdleEFueXdoZXJlKCJeYSIsICJhYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFu
eXdoZXJlKCJeIiwgImFiIikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIl4k
IiwgIiIpKTsKK30KKworVEVTVChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5zRmFsc2VX
aGVuTm9NYXRjaCkgeworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJlKCJhIiwgImJj
ZGUxMjMiKSk7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoImEuK2EiLCAiLS1h
YTg4ODg4ODg4IikpOworfQorCitURVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFJldHVybnNU
cnVlV2hlbk1hdGNoaW5nUHJlZml4KSB7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVy
ZSgiXFx3KyIsICJhYjFfIC0gNSIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJl
KCIuKj0iLCAiPSIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJ4LiphYj8u
KmJjIiwgInhhYWFiYyIpKTsKK30KKworVEVTVChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1
cm5zVHJ1ZVdoZW5NYXRjaGluZ05vblByZWZpeCkgeworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4
QW55d2hlcmUoIlxcdysiLCAiJCQkIGFiMV8gLSA1IikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJl
Z2V4QW55d2hlcmUoIlxcLis9IiwgIj0gIC4uLj0iKSk7Cit9CisKKy8vIFRlc3RzIFJFJ3MgaW1w
bGljaXQgY29uc3RydWN0b3JzLgorVEVTVChSRVRlc3QsIEltcGxpY2l0Q29uc3RydWN0b3JXb3Jr
cykgeworICBjb25zdCBSRSBlbXB0eSgiIik7CisgIEVYUEVDVF9TVFJFUSgiIiwgZW1wdHkucGF0
dGVybigpKTsKKworICBjb25zdCBSRSBzaW1wbGUoImhlbGxvIik7CisgIEVYUEVDVF9TVFJFUSgi
aGVsbG8iLCBzaW1wbGUucGF0dGVybigpKTsKK30KKworLy8gVGVzdHMgdGhhdCBSRSdzIGNvbnN0
cnVjdG9ycyByZWplY3QgaW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb25zLgorVEVTVChSRVRlc3Qs
IFJlamVjdHNJbnZhbGlkUmVnZXgpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAg
IGNvbnN0IFJFIG5vcm1hbChOVUxMKTsKKyAgfSwgIk5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxl
IHJlZ3VsYXIgZXhwcmVzc2lvbiIpOworCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKKyAg
ICBjb25zdCBSRSBub3JtYWwoIi4qKFxcdysiKTsKKyAgfSwgIicoJyBpcyB1bnN1cHBvcnRlZCIp
OworCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKKyAgICBjb25zdCBSRSBpbnZhbGlkKCJe
PyIpOworICB9LCAiJz8nIGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVhdGFibGUgdG9rZW4iKTsKK30K
KworLy8gVGVzdHMgUkU6OkZ1bGxNYXRjaCgpLgorVEVTVChSRVRlc3QsIEZ1bGxNYXRjaFdvcmtz
KSB7CisgIGNvbnN0IFJFIGVtcHR5KCIiKTsKKyAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaCgi
IiwgZW1wdHkpKTsKKyAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goImEiLCBlbXB0eSkpOwor
CisgIGNvbnN0IFJFIHJlMSgiYSIpOworICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKCJhIiwg
cmUxKSk7CisKKyAgY29uc3QgUkUgcmUoImEuKnoiKTsKKyAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxN
YXRjaCgiYXoiLCByZSkpOworICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKCJheHl6IiwgcmUp
KTsKKyAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goImJheiIsIHJlKSk7CisgIEVYUEVDVF9G
QUxTRShSRTo6RnVsbE1hdGNoKCJhenkiLCByZSkpOworfQorCisvLyBUZXN0cyBSRTo6UGFydGlh
bE1hdGNoKCkuCitURVNUKFJFVGVzdCwgUGFydGlhbE1hdGNoV29ya3MpIHsKKyAgY29uc3QgUkUg
ZW1wdHkoIiIpOworICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCIiLCBlbXB0eSkpOwor
ICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCJhIiwgZW1wdHkpKTsKKworICBjb25zdCBS
RSByZSgiYS4qeiIpOworICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCJheiIsIHJlKSk7
CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImF4eXoiLCByZSkpOworICBFWFBFQ1Rf
VFJVRShSRTo6UGFydGlhbE1hdGNoKCJiYXoiLCByZSkpOworICBFWFBFQ1RfVFJVRShSRTo6UGFy
dGlhbE1hdGNoKCJhenkiLCByZSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OlBhcnRpYWxNYXRjaCgi
enphIiwgcmUpKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9VU0VTX1BPU0lYX1JFCisKKyNpZiAh
R1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKworVEVTVChDYXB0dXJlVGVzdCwgQ2FwdHVyZXNTdGRv
dXQpIHsKKyAgQ2FwdHVyZVN0ZG91dCgpOworICBmcHJpbnRmKHN0ZG91dCwgImFiYyIpOworICBF
WFBFQ1RfU1RSRVEoImFiYyIsIEdldENhcHR1cmVkU3Rkb3V0KCkuY19zdHIoKSk7CisKKyAgQ2Fw
dHVyZVN0ZG91dCgpOworICBmcHJpbnRmKHN0ZG91dCwgImRlZiVjZ2hpIiwgJ1wwJyk7CisgIEVY
UEVDVF9FUSg6OnN0ZDo6c3RyaW5nKCJkZWZcMGdoaSIsIDcpLCA6OnN0ZDo6c3RyaW5nKEdldENh
cHR1cmVkU3Rkb3V0KCkpKTsKK30KKworVEVTVChDYXB0dXJlVGVzdCwgQ2FwdHVyZXNTdGRlcnIp
IHsKKyAgQ2FwdHVyZVN0ZGVycigpOworICBmcHJpbnRmKHN0ZGVyciwgImprbCIpOworICBFWFBF
Q1RfU1RSRVEoImprbCIsIEdldENhcHR1cmVkU3RkZXJyKCkuY19zdHIoKSk7CisKKyAgQ2FwdHVy
ZVN0ZGVycigpOworICBmcHJpbnRmKHN0ZGVyciwgImprbCVjbW5vIiwgJ1wwJyk7CisgIEVYUEVD
VF9FUSg6OnN0ZDo6c3RyaW5nKCJqa2xcMG1ubyIsIDcpLCA6OnN0ZDo6c3RyaW5nKEdldENhcHR1
cmVkU3RkZXJyKCkpKTsKK30KKworLy8gVGVzdHMgdGhhdCBzdGRvdXQgYW5kIHN0ZGVyciBjYXB0
dXJlIGRvbid0IGludGVyZmVyZSB3aXRoIGVhY2ggb3RoZXIuCitURVNUKENhcHR1cmVUZXN0LCBD
YXB0dXJlc1N0ZG91dEFuZFN0ZGVycikgeworICBDYXB0dXJlU3Rkb3V0KCk7CisgIENhcHR1cmVT
dGRlcnIoKTsKKyAgZnByaW50ZihzdGRvdXQsICJwcXIiKTsKKyAgZnByaW50ZihzdGRlcnIsICJz
dHUiKTsKKyAgRVhQRUNUX1NUUkVRKCJwcXIiLCBHZXRDYXB0dXJlZFN0ZG91dCgpLmNfc3RyKCkp
OworICBFWFBFQ1RfU1RSRVEoInN0dSIsIEdldENhcHR1cmVkU3RkZXJyKCkuY19zdHIoKSk7Cit9
CisKK1RFU1QoQ2FwdHVyZURlYXRoVGVzdCwgQ2Fubm90UmVlbnRlclN0ZG91dENhcHR1cmUpIHsK
KyAgQ2FwdHVyZVN0ZG91dCgpOworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKENhcHR1cmVT
dGRvdXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT25seSBvbmUgc3Rkb3V0IGNh
cHR1cmVyIGNhbiBleGlzdCBhdCBhIHRpbWUiKTsKKyAgR2V0Q2FwdHVyZWRTdGRvdXQoKTsKKwor
ICAvLyBXZSBjYW5ub3QgdGVzdCBzdGRlcnIgY2FwdHVyaW5nIHVzaW5nIGRlYXRoIHRlc3RzIGFz
IHRoZXkgdXNlIGl0CisgIC8vIHRoZW1zZWx2ZXMuCit9CisKKyNlbmRpZiAgLy8gIUdURVNUX09T
X1dJTkRPV1NfTU9CSUxFCisKK1RFU1QoVGhyZWFkTG9jYWxUZXN0LCBEZWZhdWx0Q29uc3RydWN0
b3JJbml0aWFsaXplc1RvRGVmYXVsdFZhbHVlcykgeworICBUaHJlYWRMb2NhbDxpbnQ+IHQxOwor
ICBFWFBFQ1RfRVEoMCwgdDEuZ2V0KCkpOworCisgIFRocmVhZExvY2FsPHZvaWQqPiB0MjsKKyAg
RVhQRUNUX1RSVUUodDIuZ2V0KCkgPT0gTlVMTCk7Cit9CisKK1RFU1QoVGhyZWFkTG9jYWxUZXN0
LCBTaW5nbGVQYXJhbUNvbnN0cnVjdG9ySW5pdGlhbGl6ZXNUb1BhcmFtKSB7CisgIFRocmVhZExv
Y2FsPGludD4gdDEoMTIzKTsKKyAgRVhQRUNUX0VRKDEyMywgdDEuZ2V0KCkpOworCisgIGludCBp
ID0gMDsKKyAgVGhyZWFkTG9jYWw8aW50Kj4gdDIoJmkpOworICBFWFBFQ1RfRVEoJmksIHQyLmdl
dCgpKTsKK30KKworY2xhc3MgTm9EZWZhdWx0Q29udHJ1Y3RvciB7CisgcHVibGljOgorICBleHBs
aWNpdCBOb0RlZmF1bHRDb250cnVjdG9yKGNvbnN0IGNoYXIqKSB7fQorICBOb0RlZmF1bHRDb250
cnVjdG9yKGNvbnN0IE5vRGVmYXVsdENvbnRydWN0b3ImKSB7fQorfTsKKworVEVTVChUaHJlYWRM
b2NhbFRlc3QsIFZhbHVlRGVmYXVsdENvbnRydWN0b3JJc05vdFJlcXVpcmVkRm9yUGFyYW1WZXJz
aW9uKSB7CisgIFRocmVhZExvY2FsPE5vRGVmYXVsdENvbnRydWN0b3I+IGJhcihOb0RlZmF1bHRD
b250cnVjdG9yKCJmb28iKSk7CisgIGJhci5wb2ludGVyKCk7Cit9CisKK1RFU1QoVGhyZWFkTG9j
YWxUZXN0LCBHZXRBbmRQb2ludGVyUmV0dXJuU2FtZVZhbHVlKSB7CisgIFRocmVhZExvY2FsPHN0
ZDo6c3RyaW5nPiB0aHJlYWRfbG9jYWxfc3RyaW5nOworCisgIEVYUEVDVF9FUSh0aHJlYWRfbG9j
YWxfc3RyaW5nLnBvaW50ZXIoKSwgJih0aHJlYWRfbG9jYWxfc3RyaW5nLmdldCgpKSk7CisKKyAg
Ly8gVmVyaWZpZXMgdGhlIGNvbmRpdGlvbiBzdGlsbCBob2xkcyBhZnRlciBjYWxsaW5nIHNldC4K
KyAgdGhyZWFkX2xvY2FsX3N0cmluZy5zZXQoImZvbyIpOworICBFWFBFQ1RfRVEodGhyZWFkX2xv
Y2FsX3N0cmluZy5wb2ludGVyKCksICYodGhyZWFkX2xvY2FsX3N0cmluZy5nZXQoKSkpOworfQor
CitURVNUKFRocmVhZExvY2FsVGVzdCwgUG9pbnRlckFuZENvbnN0UG9pbnRlclJldHVyblNhbWVW
YWx1ZSkgeworICBUaHJlYWRMb2NhbDxzdGQ6OnN0cmluZz4gdGhyZWFkX2xvY2FsX3N0cmluZzsK
KyAgY29uc3QgVGhyZWFkTG9jYWw8c3RkOjpzdHJpbmc+JiBjb25zdF90aHJlYWRfbG9jYWxfc3Ry
aW5nID0KKyAgICAgIHRocmVhZF9sb2NhbF9zdHJpbmc7CisKKyAgRVhQRUNUX0VRKHRocmVhZF9s
b2NhbF9zdHJpbmcucG9pbnRlcigpLCBjb25zdF90aHJlYWRfbG9jYWxfc3RyaW5nLnBvaW50ZXIo
KSk7CisKKyAgdGhyZWFkX2xvY2FsX3N0cmluZy5zZXQoImZvbyIpOworICBFWFBFQ1RfRVEodGhy
ZWFkX2xvY2FsX3N0cmluZy5wb2ludGVyKCksIGNvbnN0X3RocmVhZF9sb2NhbF9zdHJpbmcucG9p
bnRlcigpKTsKK30KKworI2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKKwordm9pZCBBZGRUd28oaW50
KiBwYXJhbSkgeyAqcGFyYW0gKz0gMjsgfQorCitURVNUKFRocmVhZFdpdGhQYXJhbVRlc3QsIENv
bnN0cnVjdG9yRXhlY3V0ZXNUaHJlYWRGdW5jKSB7CisgIGludCBpID0gNDA7CisgIFRocmVhZFdp
dGhQYXJhbTxpbnQqPiB0aHJlYWQoJkFkZFR3bywgJmksIE5VTEwpOworICB0aHJlYWQuSm9pbigp
OworICBFWFBFQ1RfRVEoNDIsIGkpOworfQorCitURVNUKE11dGV4RGVhdGhUZXN0LCBBc3NlcnRI
ZWxkU2hvdWxkQXNzZXJ0V2hlbk5vdExvY2tlZCkgeworICAvLyBBc3NlcnRIZWxkKCkgaXMgZmxh
a3kgb25seSBpbiB0aGUgcHJlc2VuY2Ugb2YgbXVsdGlwbGUgdGhyZWFkcyBhY2Nlc3NpbmcKKyAg
Ly8gdGhlIGxvY2suIEluIHRoaXMgY2FzZSwgdGhlIHRlc3QgaXMgcm9idXN0LgorICBFWFBFQ1Rf
REVBVEhfSUZfU1VQUE9SVEVEKHsKKyAgICBNdXRleCBtOworICAgIHsgTXV0ZXhMb2NrIGxvY2so
Jm0pOyB9CisgICAgbS5Bc3NlcnRIZWxkKCk7CisgIH0sCisgICJ0aHJlYWQgLipob2xkIik7Cit9
CisKK1RFU1QoTXV0ZXhUZXN0LCBBc3NlcnRIZWxkU2hvdWxkTm90QXNzZXJ0V2hlbkxvY2tlZCkg
eworICBNdXRleCBtOworICBNdXRleExvY2sgbG9jaygmbSk7CisgIG0uQXNzZXJ0SGVsZCgpOwor
fQorCitjbGFzcyBBdG9taWNDb3VudGVyV2l0aE11dGV4IHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0
IEF0b21pY0NvdW50ZXJXaXRoTXV0ZXgoTXV0ZXgqIG11dGV4KSA6CisgICAgdmFsdWVfKDApLCBt
dXRleF8obXV0ZXgpLCByYW5kb21fKDQyKSB7fQorCisgIHZvaWQgSW5jcmVtZW50KCkgeworICAg
IE11dGV4TG9jayBsb2NrKG11dGV4Xyk7CisgICAgaW50IHRlbXAgPSB2YWx1ZV87CisgICAgewor
ICAgICAgLy8gV2UgbmVlZCB0byBwdXQgdXAgYSBtZW1vcnkgYmFycmllciB0byBwcmV2ZW50IHJl
YWRzIGFuZCB3cml0ZXMgdG8KKyAgICAgIC8vIHZhbHVlXyByZWFycmFuZ2VkIHdpdGggdGhlIGNh
bGwgdG8gU2xlZXBNaWxsaXNlY29uZHMgd2hlbiBvYnNlcnZlZAorICAgICAgLy8gZnJvbSBvdGhl
ciB0aHJlYWRzLgorI2lmIEdURVNUX0hBU19QVEhSRUFECisgICAgICAvLyBPbiBQT1NJWCwgbG9j
a2luZyBhIG11dGV4IHB1dHMgdXAgYSBtZW1vcnkgYmFycmllci4gIFdlIGNhbm5vdCB1c2UKKyAg
ICAgIC8vIE11dGV4IGFuZCBNdXRleExvY2sgaGVyZSBvciByZWx5IG9uIHRoZWlyIG1lbW9yeSBi
YXJyaWVyCisgICAgICAvLyBmdW5jdGlvbmFsaXR5IGFzIHdlIGFyZSB0ZXN0aW5nIHRoZW0gaGVy
ZS4KKyAgICAgIHB0aHJlYWRfbXV0ZXhfdCBtZW1vcnlfYmFycmllcl9tdXRleDsKKyAgICAgIEdU
RVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKAorICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgm
bWVtb3J5X2JhcnJpZXJfbXV0ZXgsIE5VTEwpKTsKKyAgICAgIEdURVNUX0NIRUNLX1BPU0lYX1NV
Q0NFU1NfKHB0aHJlYWRfbXV0ZXhfbG9jaygmbWVtb3J5X2JhcnJpZXJfbXV0ZXgpKTsKKworICAg
ICAgU2xlZXBNaWxsaXNlY29uZHMocmFuZG9tXy5HZW5lcmF0ZSgzMCkpOworCisgICAgICBHVEVT
VF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4X3VubG9jaygmbWVtb3J5X2JhcnJp
ZXJfbXV0ZXgpKTsKKyAgICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0
ZXhfZGVzdHJveSgmbWVtb3J5X2JhcnJpZXJfbXV0ZXgpKTsKKyNlbGlmIEdURVNUX09TX1dJTkRP
V1MKKyAgICAgIC8vIE9uIFdpbmRvd3MsIHBlcmZvcm1pbmcgYW4gaW50ZXJsb2NrZWQgYWNjZXNz
IHB1dHMgdXAgYSBtZW1vcnkgYmFycmllci4KKyAgICAgIHZvbGF0aWxlIExPTkcgZHVtbXkgPSAw
OworICAgICAgOjpJbnRlcmxvY2tlZEluY3JlbWVudCgmZHVtbXkpOworICAgICAgU2xlZXBNaWxs
aXNlY29uZHMocmFuZG9tXy5HZW5lcmF0ZSgzMCkpOworICAgICAgOjpJbnRlcmxvY2tlZEluY3Jl
bWVudCgmZHVtbXkpOworI2Vsc2UKKyMgZXJyb3IgIk1lbW9yeSBiYXJyaWVyIG5vdCBpbXBsZW1l
bnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1BUSFJFQUQKKyAg
ICB9CisgICAgdmFsdWVfID0gdGVtcCArIDE7CisgIH0KKyAgaW50IHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gdmFsdWVfOyB9CisKKyBwcml2YXRlOgorICB2b2xhdGlsZSBpbnQgdmFsdWVfOworICBN
dXRleCogY29uc3QgbXV0ZXhfOyAgLy8gUHJvdGVjdHMgdmFsdWVfLgorICBSYW5kb20gICAgICAg
cmFuZG9tXzsKK307CisKK3ZvaWQgQ291bnRpbmdUaHJlYWRGdW5jKHBhaXI8QXRvbWljQ291bnRl
cldpdGhNdXRleCosIGludD4gcGFyYW0pIHsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbS5z
ZWNvbmQ7ICsraSkKKyAgICAgIHBhcmFtLmZpcnN0LT5JbmNyZW1lbnQoKTsKK30KKworLy8gVGVz
dHMgdGhhdCB0aGUgbXV0ZXggb25seSBsZXRzIG9uZSB0aHJlYWQgYXQgYSB0aW1lIHRvIGxvY2sg
aXQuCitURVNUKE11dGV4VGVzdCwgT25seU9uZVRocmVhZENhbkxvY2tBdEFUaW1lKSB7CisgIE11
dGV4IG11dGV4OworICBBdG9taWNDb3VudGVyV2l0aE11dGV4IGxvY2tlZF9jb3VudGVyKCZtdXRl
eCk7CisKKyAgdHlwZWRlZiBUaHJlYWRXaXRoUGFyYW08cGFpcjxBdG9taWNDb3VudGVyV2l0aE11
dGV4KiwgaW50PiA+IFRocmVhZFR5cGU7CisgIGNvbnN0IGludCBrQ3ljbGVDb3VudCA9IDIwOwor
ICBjb25zdCBpbnQga1RocmVhZENvdW50ID0gNzsKKyAgc2NvcGVkX3B0cjxUaHJlYWRUeXBlPiBj
b3VudGluZ190aHJlYWRzW2tUaHJlYWRDb3VudF07CisgIE5vdGlmaWNhdGlvbiB0aHJlYWRzX2Nh
bl9zdGFydDsKKyAgLy8gQ3JlYXRlcyBhbmQgcnVucyBrVGhyZWFkQ291bnQgdGhyZWFkcyB0aGF0
IGluY3JlbWVudCBsb2NrZWRfY291bnRlcgorICAvLyBrQ3ljbGVDb3VudCB0aW1lcyBlYWNoLgor
ICBmb3IgKGludCBpID0gMDsgaSA8IGtUaHJlYWRDb3VudDsgKytpKSB7CisgICAgY291bnRpbmdf
dGhyZWFkc1tpXS5yZXNldChuZXcgVGhyZWFkVHlwZSgmQ291bnRpbmdUaHJlYWRGdW5jLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZV9wYWlyKCZsb2Nr
ZWRfY291bnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBrQ3ljbGVDb3VudCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmdGhyZWFkc19jYW5fc3RhcnQpKTsKKyAgfQorICB0aHJlYWRzX2Nhbl9z
dGFydC5Ob3RpZnkoKTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVGhyZWFkQ291bnQ7ICsraSkK
KyAgICBjb3VudGluZ190aHJlYWRzW2ldLT5Kb2luKCk7CisKKyAgLy8gSWYgdGhlIG11dGV4IGxl
dHMgbW9yZSB0aGFuIG9uZSB0aHJlYWQgdG8gaW5jcmVtZW50IHRoZSBjb3VudGVyIGF0IGEKKyAg
Ly8gdGltZSwgdGhleSBhcmUgbGlrZWx5IHRvIGVuY291bnRlciBhIHJhY2UgY29uZGl0aW9uIGFu
ZCBoYXZlIHNvbWUKKyAgLy8gaW5jcmVtZW50cyBvdmVyd3JpdHRlbiwgcmVzdWx0aW5nIGluIHRo
ZSBsb3dlciB0aGVuIGV4cGVjdGVkIGNvdW50ZXIKKyAgLy8gdmFsdWUuCisgIEVYUEVDVF9FUShr
Q3ljbGVDb3VudCAqIGtUaHJlYWRDb3VudCwgbG9ja2VkX2NvdW50ZXIudmFsdWUoKSk7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBSdW5Gcm9tVGhyZWFkKHZvaWQgKGZ1bmMpKFQp
LCBUIHBhcmFtKSB7CisgIFRocmVhZFdpdGhQYXJhbTxUPiB0aHJlYWQoZnVuYywgcGFyYW0sIE5V
TEwpOworICB0aHJlYWQuSm9pbigpOworfQorCit2b2lkIFJldHJpZXZlVGhyZWFkTG9jYWxWYWx1
ZSgKKyAgICBwYWlyPFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiosIHN0ZDo6c3RyaW5nKj4gcGFy
YW0pIHsKKyAgKnBhcmFtLnNlY29uZCA9IHBhcmFtLmZpcnN0LT5nZXQoKTsKK30KKworVEVTVChU
aHJlYWRMb2NhbFRlc3QsIFBhcmFtZXRlcml6ZWRDb25zdHJ1Y3RvclNldHNEZWZhdWx0KSB7Cisg
IFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiB0aHJlYWRfbG9jYWxfc3RyaW5nKCJmb28iKTsKKyAg
RVhQRUNUX1NUUkVRKCJmb28iLCB0aHJlYWRfbG9jYWxfc3RyaW5nLmdldCgpLmNfc3RyKCkpOwor
CisgIHRocmVhZF9sb2NhbF9zdHJpbmcuc2V0KCJiYXIiKTsKKyAgRVhQRUNUX1NUUkVRKCJiYXIi
LCB0aHJlYWRfbG9jYWxfc3RyaW5nLmdldCgpLmNfc3RyKCkpOworCisgIHN0ZDo6c3RyaW5nIHJl
c3VsdDsKKyAgUnVuRnJvbVRocmVhZCgmUmV0cmlldmVUaHJlYWRMb2NhbFZhbHVlLAorICAgICAg
ICAgICAgICAgIG1ha2VfcGFpcigmdGhyZWFkX2xvY2FsX3N0cmluZywgJnJlc3VsdCkpOworICBF
WFBFQ1RfU1RSRVEoImZvbyIsIHJlc3VsdC5jX3N0cigpKTsKK30KKworLy8gS2VlcHMgdHJhY2sg
b2Ygd2hldGhlciBvZiBkZXN0cnVjdG9ycyBiZWluZyBjYWxsZWQgb24gaW5zdGFuY2VzIG9mCisv
LyBEZXN0cnVjdG9yVHJhY2tlci4gIE9uIFdpbmRvd3MsIHdhaXRzIGZvciB0aGUgZGVzdHJ1Y3Rv
ciBjYWxsIHJlcG9ydHMuCitjbGFzcyBEZXN0cnVjdG9yQ2FsbCB7CisgcHVibGljOgorICBEZXN0
cnVjdG9yQ2FsbCgpIHsKKyAgICBpbnZva2VkXyA9IGZhbHNlOworI2lmIEdURVNUX09TX1dJTkRP
V1MKKyAgICB3YWl0X2V2ZW50Xy5SZXNldCg6OkNyZWF0ZUV2ZW50KE5VTEwsIFRSVUUsIEZBTFNF
LCBOVUxMKSk7CisgICAgR1RFU1RfQ0hFQ0tfKHdhaXRfZXZlbnRfLkdldCgpICE9IE5VTEwpOwor
I2VuZGlmCisgIH0KKworICBib29sIENoZWNrRGVzdHJveWVkKCkgY29uc3QgeworI2lmIEdURVNU
X09TX1dJTkRPV1MKKyAgICBpZiAoOjpXYWl0Rm9yU2luZ2xlT2JqZWN0KHdhaXRfZXZlbnRfLkdl
dCgpLCAxMDAwKSAhPSBXQUlUX09CSkVDVF8wKQorICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlm
CisgICAgcmV0dXJuIGludm9rZWRfOworICB9CisKKyAgdm9pZCBSZXBvcnREZXN0cm95ZWQoKSB7
CisgICAgaW52b2tlZF8gPSB0cnVlOworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgICA6OlNldEV2
ZW50KHdhaXRfZXZlbnRfLkdldCgpKTsKKyNlbmRpZgorICB9CisKKyAgc3RhdGljIHN0ZDo6dmVj
dG9yPERlc3RydWN0b3JDYWxsKj4mIExpc3QoKSB7IHJldHVybiAqbGlzdF87IH0KKworICBzdGF0
aWMgdm9pZCBSZXNldExpc3QoKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0Xy0+
c2l6ZSgpOyArK2kpIHsKKyAgICAgIGRlbGV0ZSBsaXN0Xy0+YXQoaSk7CisgICAgfQorICAgIGxp
c3RfLT5jbGVhcigpOworICB9CisKKyBwcml2YXRlOgorICBib29sIGludm9rZWRfOworI2lmIEdU
RVNUX09TX1dJTkRPV1MKKyAgQXV0b0hhbmRsZSB3YWl0X2V2ZW50XzsKKyNlbmRpZgorICBzdGF0
aWMgc3RkOjp2ZWN0b3I8RGVzdHJ1Y3RvckNhbGwqPiogY29uc3QgbGlzdF87CisKKyAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhEZXN0cnVjdG9yQ2FsbCk7Cit9OworCitzdGQ6OnZl
Y3RvcjxEZXN0cnVjdG9yQ2FsbCo+KiBjb25zdCBEZXN0cnVjdG9yQ2FsbDo6bGlzdF8gPQorICAg
IG5ldyBzdGQ6OnZlY3RvcjxEZXN0cnVjdG9yQ2FsbCo+OworCisvLyBEZXN0cnVjdG9yVHJhY2tl
ciBrZWVwcyB0cmFjayBvZiB3aGV0aGVyIGl0cyBpbnN0YW5jZXMgaGF2ZSBiZWVuCisvLyBkZXN0
cm95ZWQuCitjbGFzcyBEZXN0cnVjdG9yVHJhY2tlciB7CisgcHVibGljOgorICBEZXN0cnVjdG9y
VHJhY2tlcigpIDogaW5kZXhfKEdldE5ld0luZGV4KCkpIHt9CisgIERlc3RydWN0b3JUcmFja2Vy
KGNvbnN0IERlc3RydWN0b3JUcmFja2VyJiAvKiByaHMgKi8pCisgICAgICA6IGluZGV4XyhHZXRO
ZXdJbmRleCgpKSB7fQorICB+RGVzdHJ1Y3RvclRyYWNrZXIoKSB7CisgICAgLy8gV2UgbmV2ZXIg
YWNjZXNzIERlc3RydWN0b3JDYWxsOjpMaXN0KCkgY29uY3VycmVudGx5LCBzbyB3ZSBkb24ndCBu
ZWVkCisgICAgLy8gdG8gcHJvdGVjdCB0aGlzIGFjY2VzcyB3aXRoIGEgbXV0ZXguCisgICAgRGVz
dHJ1Y3RvckNhbGw6Okxpc3QoKVtpbmRleF9dLT5SZXBvcnREZXN0cm95ZWQoKTsKKyAgfQorCisg
cHJpdmF0ZToKKyAgc3RhdGljIHNpemVfdCBHZXROZXdJbmRleCgpIHsKKyAgICBEZXN0cnVjdG9y
Q2FsbDo6TGlzdCgpLnB1c2hfYmFjayhuZXcgRGVzdHJ1Y3RvckNhbGwpOworICAgIHJldHVybiBE
ZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnNpemUoKSAtIDE7CisgIH0KKyAgY29uc3Qgc2l6ZV90IGlu
ZGV4XzsKKworICBHVEVTVF9ESVNBTExPV19BU1NJR05fKERlc3RydWN0b3JUcmFja2VyKTsKK307
CisKK3R5cGVkZWYgVGhyZWFkTG9jYWw8RGVzdHJ1Y3RvclRyYWNrZXI+KiBUaHJlYWRQYXJhbTsK
Kwordm9pZCBDYWxsVGhyZWFkTG9jYWxHZXQoVGhyZWFkUGFyYW0gdGhyZWFkX2xvY2FsX3BhcmFt
KSB7CisgIHRocmVhZF9sb2NhbF9wYXJhbS0+Z2V0KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgd2hl
biBhIFRocmVhZExvY2FsIG9iamVjdCBkaWVzIGluIGEgdGhyZWFkLCBpdCBkZXN0cm95cworLy8g
dGhlIG1hbmFnZWQgb2JqZWN0IGZvciB0aGF0IHRocmVhZC4KK1RFU1QoVGhyZWFkTG9jYWxUZXN0
LCBEZXN0cm95c01hbmFnZWRPYmplY3RGb3JPd25UaHJlYWRXaGVuRHlpbmcpIHsKKyAgRGVzdHJ1
Y3RvckNhbGw6OlJlc2V0TGlzdCgpOworCisgIHsKKyAgICBUaHJlYWRMb2NhbDxEZXN0cnVjdG9y
VHJhY2tlcj4gdGhyZWFkX2xvY2FsX3RyYWNrZXI7CisgICAgQVNTRVJUX0VRKDBVLCBEZXN0cnVj
dG9yQ2FsbDo6TGlzdCgpLnNpemUoKSk7CisKKyAgICAvLyBUaGlzIGNyZWF0ZXMgYW5vdGhlciBE
ZXN0cnVjdG9yVHJhY2tlciBvYmplY3QgZm9yIHRoZSBtYWluIHRocmVhZC4KKyAgICB0aHJlYWRf
bG9jYWxfdHJhY2tlci5nZXQoKTsKKyAgICBBU1NFUlRfRVEoMVUsIERlc3RydWN0b3JDYWxsOjpM
aXN0KCkuc2l6ZSgpKTsKKyAgICBBU1NFUlRfRkFMU0UoRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKVsw
XS0+Q2hlY2tEZXN0cm95ZWQoKSk7CisgIH0KKworICAvLyBOb3cgdGhyZWFkX2xvY2FsX3RyYWNr
ZXIgaGFzIGRpZWQuCisgIEFTU0VSVF9FUSgxVSwgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKS5zaXpl
KCkpOworICBFWFBFQ1RfVFJVRShEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpWzBdLT5DaGVja0Rlc3Ry
b3llZCgpKTsKKworICBEZXN0cnVjdG9yQ2FsbDo6UmVzZXRMaXN0KCk7Cit9CisKKy8vIFRlc3Rz
IHRoYXQgd2hlbiBhIHRocmVhZCBleGl0cywgdGhlIHRocmVhZC1sb2NhbCBvYmplY3QgZm9yIHRo
YXQKKy8vIHRocmVhZCBpcyBkZXN0cm95ZWQuCitURVNUKFRocmVhZExvY2FsVGVzdCwgRGVzdHJv
eXNNYW5hZ2VkT2JqZWN0QXRUaHJlYWRFeGl0KSB7CisgIERlc3RydWN0b3JDYWxsOjpSZXNldExp
c3QoKTsKKworICB7CisgICAgVGhyZWFkTG9jYWw8RGVzdHJ1Y3RvclRyYWNrZXI+IHRocmVhZF9s
b2NhbF90cmFja2VyOworICAgIEFTU0VSVF9FUSgwVSwgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKS5z
aXplKCkpOworCisgICAgLy8gVGhpcyBjcmVhdGVzIGFub3RoZXIgRGVzdHJ1Y3RvclRyYWNrZXIg
b2JqZWN0IGluIHRoZSBuZXcgdGhyZWFkLgorICAgIFRocmVhZFdpdGhQYXJhbTxUaHJlYWRQYXJh
bT4gdGhyZWFkKAorICAgICAgICAmQ2FsbFRocmVhZExvY2FsR2V0LCAmdGhyZWFkX2xvY2FsX3Ry
YWNrZXIsIE5VTEwpOworICAgIHRocmVhZC5Kb2luKCk7CisKKyAgICAvLyBUaGUgdGhyZWFkIGhh
cyBleGl0ZWQsIGFuZCB3ZSBzaG91bGQgaGF2ZSBhIERlc3Ryb3llZFRyYWNrZXIKKyAgICAvLyBp
bnN0YW5jZSBjcmVhdGVkIGZvciBpdC4gQnV0IGl0IG1heSBub3QgaGF2ZSBiZWVuIGRlc3Ryb3ll
ZCB5ZXQuCisgICAgQVNTRVJUX0VRKDFVLCBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnNpemUoKSk7
CisgIH0KKworICAvLyBUaGUgdGhyZWFkIGhhcyBleGl0ZWQgYW5kIHRocmVhZF9sb2NhbF90cmFj
a2VyIGhhcyBkaWVkLgorICBBU1NFUlRfRVEoMVUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6
ZSgpKTsKKyAgRVhQRUNUX1RSVUUoRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKVswXS0+Q2hlY2tEZXN0
cm95ZWQoKSk7CisKKyAgRGVzdHJ1Y3RvckNhbGw6OlJlc2V0TGlzdCgpOworfQorCitURVNUKFRo
cmVhZExvY2FsVGVzdCwgVGhyZWFkTG9jYWxNdXRhdGlvbnNBZmZlY3RPbmx5Q3VycmVudFRocmVh
ZCkgeworICBUaHJlYWRMb2NhbDxzdGQ6OnN0cmluZz4gdGhyZWFkX2xvY2FsX3N0cmluZzsKKyAg
dGhyZWFkX2xvY2FsX3N0cmluZy5zZXQoIkZvbyIpOworICBFWFBFQ1RfU1RSRVEoIkZvbyIsIHRo
cmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkuY19zdHIoKSk7CisKKyAgc3RkOjpzdHJpbmcgcmVzdWx0
OworICBSdW5Gcm9tVGhyZWFkKCZSZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUsCisgICAgICAgICAg
ICAgICAgbWFrZV9wYWlyKCZ0aHJlYWRfbG9jYWxfc3RyaW5nLCAmcmVzdWx0KSk7CisgIEVYUEVD
VF9UUlVFKHJlc3VsdC5lbXB0eSgpKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURT
QUZFCisKKyNpZiBHVEVTVF9PU19XSU5ET1dTCitURVNUKFdpbmRvd3NUeXBlc1Rlc3QsIEhBTkRM
RUlzVm9pZFN0YXIpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPEhBTkRMRSwgdm9pZCo+KCk7Cit9
CisKKyNpZiBHVEVTVF9PU19XSU5ET1dTX01JTkdXICYmICFkZWZpbmVkKF9fTUlOR1c2NF9WRVJT
SU9OX01BSk9SKQorVEVTVChXaW5kb3dzVHlwZXNUZXN0LCBfQ1JJVElDQUxfU0VDVElPTklzX0NS
SVRJQ0FMX1NFQ1RJT04pIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPENSSVRJQ0FMX1NFQ1RJT04s
IF9DUklUSUNBTF9TRUNUSU9OPigpOworfQorI2Vsc2UKK1RFU1QoV2luZG93c1R5cGVzVGVzdCwg
Q1JJVElDQUxfU0VDVElPTklzX1JUTF9DUklUSUNBTF9TRUNUSU9OKSB7CisgIFN0YXRpY0Fzc2Vy
dFR5cGVFcTxDUklUSUNBTF9TRUNUSU9OLCBfUlRMX0NSSVRJQ0FMX1NFQ1RJT04+KCk7Cit9Cisj
ZW5kaWYKKworI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKK30gIC8vIG5hbWVzcGFjZSBp
bnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wcmludGVycy10ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXByaW50ZXJzLXRlc3QuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWE4MzY5ZDI3ZTUwNDcwZjFlYWJlM2FmMjgwNGQzNDU0OTNhZGVkOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wcmludGVycy10
ZXN0LmNjCkBAIC0wLDAgKzEsMTc0OCBAQAorLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMu
CisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisKKy8vIEdvb2dsZSBUZXN0IC0gVGhlIEdvb2dsZSBDKysgVGVzdGlu
ZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsKKy8vCisvLyBUaGlzIGZpbGUgdGVzdHMgdGhlIHVuaXZl
cnNhbCB2YWx1ZSBwcmludGVyLgorCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxsaW1p
dHMuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVk
ZSA8ZGVxdWU+CisjaW5jbHVkZSA8bGlzdD4KKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8c2V0
PgorI2luY2x1ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHV0aWxp
dHk+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMu
aCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisjaWYgR1RFU1RfSEFTX1VOT1JERVJFRF9N
QVBfCisjIGluY2x1ZGUgPHVub3JkZXJlZF9tYXA+ICAvLyBOT0xJTlQKKyNlbmRpZiAgLy8gR1RF
U1RfSEFTX1VOT1JERVJFRF9NQVBfCisKKyNpZiBHVEVTVF9IQVNfVU5PUkRFUkVEX1NFVF8KKyMg
aW5jbHVkZSA8dW5vcmRlcmVkX3NldD4gIC8vIE5PTElOVAorI2VuZGlmICAvLyBHVEVTVF9IQVNf
VU5PUkRFUkVEX1NFVF8KKworI2lmIEdURVNUX0hBU19TVERfRk9SV0FSRF9MSVNUXworIyBpbmNs
dWRlIDxmb3J3YXJkX2xpc3Q+IC8vIE5PTElOVAorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0ZP
UldBUkRfTElTVF8KKworLy8gU29tZSB1c2VyLWRlZmluZWQgdHlwZXMgZm9yIHRlc3RpbmcgdGhl
IHVuaXZlcnNhbCB2YWx1ZSBwcmludGVyLgorCisvLyBBbiBhbm9ueW1vdXMgZW51bSB0eXBlLgor
ZW51bSBBbm9ueW1vdXNFbnVtIHsKKyAga0FFMSA9IC0xLAorICBrQUUyID0gMQorfTsKKworLy8g
QW4gZW51bSB3aXRob3V0IGEgdXNlci1kZWZpbmVkIHByaW50ZXIuCitlbnVtIEVudW1XaXRob3V0
UHJpbnRlciB7CisgIGtFV1AxID0gLTIsCisgIGtFV1AyID0gNDIKK307CisKKy8vIEFuIGVudW0g
d2l0aCBhIDw8IG9wZXJhdG9yLgorZW51bSBFbnVtV2l0aFN0cmVhbWluZyB7CisgIGtFV1MxID0g
MTAKK307CisKK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBFbnVt
V2l0aFN0cmVhbWluZyBlKSB7CisgIHJldHVybiBvcyA8PCAoZSA9PSBrRVdTMSA/ICJrRVdTMSIg
OiAiaW52YWxpZCIpOworfQorCisvLyBBbiBlbnVtIHdpdGggYSBQcmludFRvKCkgZnVuY3Rpb24u
CitlbnVtIEVudW1XaXRoUHJpbnRUbyB7CisgIGtFV1BUMSA9IDEKK307CisKK3ZvaWQgUHJpbnRU
byhFbnVtV2l0aFByaW50VG8gZSwgc3RkOjpvc3RyZWFtKiBvcykgeworICAqb3MgPDwgKGUgPT0g
a0VXUFQxID8gImtFV1BUMSIgOiAiaW52YWxpZCIpOworfQorCisvLyBBIGNsYXNzIGltcGxpY2l0
bHkgY29udmVydGlibGUgdG8gQmlnZ2VzdEludC4KK2NsYXNzIEJpZ2dlc3RJbnRDb252ZXJ0aWJs
ZSB7CisgcHVibGljOgorICBvcGVyYXRvciA6OnRlc3Rpbmc6OmludGVybmFsOjpCaWdnZXN0SW50
KCkgY29uc3QgeyByZXR1cm4gNDI7IH0KK307CisKKy8vIEEgdXNlci1kZWZpbmVkIHVucHJpbnRh
YmxlIGNsYXNzIHRlbXBsYXRlIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitjbGFzcyBVbnByaW50YWJsZVRlbXBsYXRlSW5HbG9iYWwgeworIHB1YmxpYzoK
KyAgVW5wcmludGFibGVUZW1wbGF0ZUluR2xvYmFsKCkgOiB2YWx1ZV8oKSB7fQorIHByaXZhdGU6
CisgIFQgdmFsdWVfOworfTsKKworLy8gQSB1c2VyLWRlZmluZWQgc3RyZWFtYWJsZSB0eXBlIGlu
IHRoZSBnbG9iYWwgbmFtZXNwYWNlLgorY2xhc3MgU3RyZWFtYWJsZUluR2xvYmFsIHsKKyBwdWJs
aWM6CisgIHZpcnR1YWwgflN0cmVhbWFibGVJbkdsb2JhbCgpIHt9Cit9OworCitpbmxpbmUgdm9p
ZCBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBvcywgY29uc3QgU3RyZWFtYWJsZUluR2xvYmFs
JiAvKiB4ICovKSB7CisgIG9zIDw8ICJTdHJlYW1hYmxlSW5HbG9iYWwiOworfQorCit2b2lkIG9w
ZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBTdHJlYW1hYmxlSW5HbG9iYWwqIC8q
IHggKi8pIHsKKyAgb3MgPDwgIlN0cmVhbWFibGVJbkdsb2JhbCoiOworfQorCituYW1lc3BhY2Ug
Zm9vIHsKKworLy8gQSB1c2VyLWRlZmluZWQgdW5wcmludGFibGUgdHlwZSBpbiBhIHVzZXIgbmFt
ZXNwYWNlLgorY2xhc3MgVW5wcmludGFibGVJbkZvbyB7CisgcHVibGljOgorICBVbnByaW50YWJs
ZUluRm9vKCkgOiB6XygwKSB7IG1lbWNweSh4eV8sICJceEVGXHgxMlx4MFx4MFx4MzRceEFCXHgw
XHgwIiwgOCk7IH0KKyAgZG91YmxlIHooKSBjb25zdCB7IHJldHVybiB6XzsgfQorIHByaXZhdGU6
CisgIGNoYXIgeHlfWzhdOworICBkb3VibGUgel87Cit9OworCisvLyBBIHVzZXItZGVmaW5lZCBw
cmludGFibGUgdHlwZSBpbiBhIHVzZXItY2hvc2VuIG5hbWVzcGFjZS4KK3N0cnVjdCBQcmludGFi
bGVWaWFQcmludFRvIHsKKyAgUHJpbnRhYmxlVmlhUHJpbnRUbygpIDogdmFsdWUoKSB7fQorICBp
bnQgdmFsdWU7Cit9OworCit2b2lkIFByaW50VG8oY29uc3QgUHJpbnRhYmxlVmlhUHJpbnRUbyYg
eCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCAiUHJpbnRhYmxlVmlhUHJpbnRUbzog
IiA8PCB4LnZhbHVlOworfQorCisvLyBBIHR5cGUgd2l0aCBhIHVzZXItZGVmaW5lZCA8PCBmb3Ig
cHJpbnRpbmcgaXRzIHBvaW50ZXIuCitzdHJ1Y3QgUG9pbnRlclByaW50YWJsZSB7Cit9OworCis6
OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBQb2ludGVyUHJpbnRhYmxlKiAvKiB4ICovKSB7CisgIHJl
dHVybiBvcyA8PCAiUG9pbnRlclByaW50YWJsZSoiOworfQorCisvLyBBIHVzZXItZGVmaW5lZCBw
cmludGFibGUgY2xhc3MgdGVtcGxhdGUgaW4gYSB1c2VyLWNob3NlbiBuYW1lc3BhY2UuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFByaW50YWJsZVZpYVByaW50VG9UZW1wbGF0ZSB7Cisg
cHVibGljOgorICBleHBsaWNpdCBQcmludGFibGVWaWFQcmludFRvVGVtcGxhdGUoY29uc3QgVCYg
YV92YWx1ZSkgOiB2YWx1ZV8oYV92YWx1ZSkge30KKworICBjb25zdCBUJiB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIHZhbHVlXzsgfQorIHByaXZhdGU6CisgIFQgdmFsdWVfOworfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFByaW50VG8oY29uc3QgUHJpbnRhYmxlVmlhUHJpbnRUb1Rl
bXBsYXRlPFQ+JiB4LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8ICJQcmludGFibGVW
aWFQcmludFRvVGVtcGxhdGU6ICIgPDwgeC52YWx1ZSgpOworfQorCisvLyBBIHVzZXItZGVmaW5l
ZCBzdHJlYW1hYmxlIGNsYXNzIHRlbXBsYXRlIGluIGEgdXNlciBuYW1lc3BhY2UuCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFN0cmVhbWFibGVUZW1wbGF0ZUluRm9vIHsKKyBwdWJsaWM6
CisgIFN0cmVhbWFibGVUZW1wbGF0ZUluRm9vKCkgOiB2YWx1ZV8oKSB7fQorCisgIGNvbnN0IFQm
IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CisgcHJpdmF0ZToKKyAgVCB2YWx1ZV87
Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2lubGluZSA6OnN0ZDo6b3N0cmVhbSYgb3Bl
cmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgU3RyZWFtYWJsZVRlbXBsYXRlSW5Gb288VD4mIHgpIHsKKyAgcmV0dXJuIG9z
IDw8ICJTdHJlYW1hYmxlVGVtcGxhdGVJbkZvbzogIiA8PCB4LnZhbHVlKCk7Cit9CisKKy8vIEEg
dXNlci1kZWZpbmVkIHN0cmVhbWFibGUgYnV0IHJlY3Vyc2l2bHktZGVmaW5lZCBjb250YWluZXIg
dHlwZSBpbgorLy8gYSB1c2VyIG5hbWVzcGFjZSwgaXQgbWltaWNzIHRoZXJlZm9yZSBzdGQ6OmZp
bGVzeXN0ZW06OnBhdGggb3IKKy8vIGJvb3N0OjpmaWxlc3lzdGVtOjpwYXRoLgorY2xhc3MgUGF0
aExpa2UgeworIHB1YmxpYzoKKyAgc3RydWN0IGl0ZXJhdG9yIHsKKyAgICB0eXBlZGVmIFBhdGhM
aWtlIHZhbHVlX3R5cGU7CisgIH07CisKKyAgUGF0aExpa2UoKSB7fQorCisgIGl0ZXJhdG9yIGJl
Z2luKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKTsgfQorICBpdGVyYXRvciBlbmQoKSBjb25z
dCB7IHJldHVybiBpdGVyYXRvcigpOyB9CisKKyAgZnJpZW5kIDo6c3RkOjpvc3RyZWFtJiBvcGVy
YXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBvcywgY29uc3QgUGF0aExpa2UmKSB7CisgICAgcmV0dXJu
IG9zIDw8ICJTdHJlYW1hYmxlLVBhdGhMaWtlIjsKKyAgfQorfTsKKworfSAgLy8gbmFtZXNwYWNl
IGZvbworCituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3BhY2UgZ3Rlc3RfcHJpbnRlcnNfdGVz
dCB7CisKK3VzaW5nIDo6c3RkOjpkZXF1ZTsKK3VzaW5nIDo6c3RkOjpsaXN0OwordXNpbmcgOjpz
dGQ6Om1ha2VfcGFpcjsKK3VzaW5nIDo6c3RkOjptYXA7Cit1c2luZyA6OnN0ZDo6bXVsdGltYXA7
Cit1c2luZyA6OnN0ZDo6bXVsdGlzZXQ7Cit1c2luZyA6OnN0ZDo6cGFpcjsKK3VzaW5nIDo6c3Rk
OjpzZXQ7Cit1c2luZyA6OnN0ZDo6dmVjdG9yOwordXNpbmcgOjp0ZXN0aW5nOjpQcmludFRvU3Ry
aW5nOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1
cmVNZXNzYWdlOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzsKK3Vz
aW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok5hdGl2ZUFycmF5OwordXNpbmcgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6UkU7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpSZWxhdGlvblRvU291cmNl
UmVmZXJlbmNlOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nczsKK3VzaW5nIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFByaW50OwordXNpbmcgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6VW5pdmVyc2FsUHJpbnRlcjsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZl
cnNhbFRlcnNlUHJpbnQ7CisjaWYgR1RFU1RfSEFTX1RSMV9UVVBMRSB8fCBHVEVTVF9IQVNfU1RE
X1RVUExFXwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludFR1
cGxlRmllbGRzVG9TdHJpbmdzOworI2VuZGlmCisKKy8vIFByaW50cyBhIHZhbHVlIHRvIGEgc3Ry
aW5nIHVzaW5nIHRoZSB1bml2ZXJzYWwgdmFsdWUgcHJpbnRlci4gIFRoaXMKKy8vIGlzIGEgaGVs
cGVyIGZvciB0ZXN0aW5nIFVuaXZlcnNhbFByaW50ZXI8VD46OlByaW50KCkgZm9yIHZhcmlvdXMg
dHlwZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0ZDo6c3RyaW5nIFByaW50KGNvbnN0IFQm
IHZhbHVlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIFVuaXZlcnNhbFByaW50ZXI8
VD46OlByaW50KHZhbHVlLCAmc3MpOworICByZXR1cm4gc3Muc3RyKCk7Cit9CisKKy8vIFByaW50
cyBhIHZhbHVlIHBhc3NlZCBieSByZWZlcmVuY2UgdG8gYSBzdHJpbmcsIHVzaW5nIHRoZSB1bml2
ZXJzYWwKKy8vIHZhbHVlIHByaW50ZXIuICBUaGlzIGlzIGEgaGVscGVyIGZvciB0ZXN0aW5nCisv
LyBVbml2ZXJzYWxQcmludGVyPFQmPjo6UHJpbnQoKSBmb3IgdmFyaW91cyB0eXBlcy4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorc3RkOjpzdHJpbmcgUHJpbnRCeVJlZihjb25zdCBUJiB2YWx1ZSkg
eworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICBVbml2ZXJzYWxQcmludGVyPFQmPjo6UHJp
bnQodmFsdWUsICZzcyk7CisgIHJldHVybiBzcy5zdHIoKTsKK30KKworLy8gVGVzdHMgcHJpbnRp
bmcgdmFyaW91cyBlbnVtIHR5cGVzLgorCitURVNUKFByaW50RW51bVRlc3QsIEFub255bW91c0Vu
dW0pIHsKKyAgRVhQRUNUX0VRKCItMSIsIFByaW50KGtBRTEpKTsKKyAgRVhQRUNUX0VRKCIxIiwg
UHJpbnQoa0FFMikpOworfQorCitURVNUKFByaW50RW51bVRlc3QsIEVudW1XaXRob3V0UHJpbnRl
cikgeworICBFWFBFQ1RfRVEoIi0yIiwgUHJpbnQoa0VXUDEpKTsKKyAgRVhQRUNUX0VRKCI0MiIs
IFByaW50KGtFV1AyKSk7Cit9CisKK1RFU1QoUHJpbnRFbnVtVGVzdCwgRW51bVdpdGhTdHJlYW1p
bmcpIHsKKyAgRVhQRUNUX0VRKCJrRVdTMSIsIFByaW50KGtFV1MxKSk7CisgIEVYUEVDVF9FUSgi
aW52YWxpZCIsIFByaW50KHN0YXRpY19jYXN0PEVudW1XaXRoU3RyZWFtaW5nPigwKSkpOworfQor
CitURVNUKFByaW50RW51bVRlc3QsIEVudW1XaXRoUHJpbnRUbykgeworICBFWFBFQ1RfRVEoImtF
V1BUMSIsIFByaW50KGtFV1BUMSkpOworICBFWFBFQ1RfRVEoImludmFsaWQiLCBQcmludChzdGF0
aWNfY2FzdDxFbnVtV2l0aFByaW50VG8+KDApKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIGEg
Y2xhc3MgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0byBCaWdnZXN0SW50LgorCitURVNUKFByaW50
Q2xhc3NUZXN0LCBCaWdnZXN0SW50Q29udmVydGlibGUpIHsKKyAgRVhQRUNUX0VRKCI0MiIsIFBy
aW50KEJpZ2dlc3RJbnRDb252ZXJ0aWJsZSgpKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIHZh
cmlvdXMgY2hhciB0eXBlcy4KKworLy8gY2hhci4KK1RFU1QoUHJpbnRDaGFyVGVzdCwgUGxhaW5D
aGFyKSB7CisgIEVYUEVDVF9FUSgiJ1xcMCciLCBQcmludCgnXDAnKSk7CisgIEVYUEVDVF9FUSgi
J1xcJycgKDM5LCAweDI3KSIsIFByaW50KCdcJycpKTsKKyAgRVhQRUNUX0VRKCInXCInICgzNCwg
MHgyMikiLCBQcmludCgnIicpKTsKKyAgRVhQRUNUX0VRKCInPycgKDYzLCAweDNGKSIsIFByaW50
KCc/JykpOworICBFWFBFQ1RfRVEoIidcXFxcJyAoOTIsIDB4NUMpIiwgUHJpbnQoJ1xcJykpOwor
ICBFWFBFQ1RfRVEoIidcXGEnICg3KSIsIFByaW50KCdcYScpKTsKKyAgRVhQRUNUX0VRKCInXFxi
JyAoOCkiLCBQcmludCgnXGInKSk7CisgIEVYUEVDVF9FUSgiJ1xcZicgKDEyLCAweEMpIiwgUHJp
bnQoJ1xmJykpOworICBFWFBFQ1RfRVEoIidcXG4nICgxMCwgMHhBKSIsIFByaW50KCdcbicpKTsK
KyAgRVhQRUNUX0VRKCInXFxyJyAoMTMsIDB4RCkiLCBQcmludCgnXHInKSk7CisgIEVYUEVDVF9F
USgiJ1xcdCcgKDkpIiwgUHJpbnQoJ1x0JykpOworICBFWFBFQ1RfRVEoIidcXHYnICgxMSwgMHhC
KSIsIFByaW50KCdcdicpKTsKKyAgRVhQRUNUX0VRKCInXFx4N0YnICgxMjcpIiwgUHJpbnQoJ1x4
N0YnKSk7CisgIEVYUEVDVF9FUSgiJ1xceEZGJyAoMjU1KSIsIFByaW50KCdceEZGJykpOworICBF
WFBFQ1RfRVEoIicgJyAoMzIsIDB4MjApIiwgUHJpbnQoJyAnKSk7CisgIEVYUEVDVF9FUSgiJ2En
ICg5NywgMHg2MSkiLCBQcmludCgnYScpKTsKK30KKworLy8gc2lnbmVkIGNoYXIuCitURVNUKFBy
aW50Q2hhclRlc3QsIFNpZ25lZENoYXIpIHsKKyAgRVhQRUNUX0VRKCInXFwwJyIsIFByaW50KHN0
YXRpY19jYXN0PHNpZ25lZCBjaGFyPignXDAnKSkpOworICBFWFBFQ1RfRVEoIidcXHhDRScgKC01
MCkiLAorICAgICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+KC01MCkpKTsK
K30KKworLy8gdW5zaWduZWQgY2hhci4KK1RFU1QoUHJpbnRDaGFyVGVzdCwgVW5zaWduZWRDaGFy
KSB7CisgIEVYUEVDVF9FUSgiJ1xcMCciLCBQcmludChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PignXDAnKSkpOworICBFWFBFQ1RfRVEoIidiJyAoOTgsIDB4NjIpIiwKKyAgICAgICAgICAgIFBy
aW50KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCdiJykpKTsKK30KKworLy8gVGVzdHMgcHJp
bnRpbmcgb3RoZXIgc2ltcGxlLCBidWlsdC1pbiB0eXBlcy4KKworLy8gYm9vbC4KK1RFU1QoUHJp
bnRCdWlsdEluVHlwZVRlc3QsIEJvb2wpIHsKKyAgRVhQRUNUX0VRKCJmYWxzZSIsIFByaW50KGZh
bHNlKSk7CisgIEVYUEVDVF9FUSgidHJ1ZSIsIFByaW50KHRydWUpKTsKK30KKworLy8gd2NoYXJf
dC4KK1RFU1QoUHJpbnRCdWlsdEluVHlwZVRlc3QsIFdjaGFyX3QpIHsKKyAgRVhQRUNUX0VRKCJM
J1xcMCciLCBQcmludChMJ1wwJykpOworICBFWFBFQ1RfRVEoIkwnXFwnJyAoMzksIDB4MjcpIiwg
UHJpbnQoTCdcJycpKTsKKyAgRVhQRUNUX0VRKCJMJ1wiJyAoMzQsIDB4MjIpIiwgUHJpbnQoTCci
JykpOworICBFWFBFQ1RfRVEoIkwnPycgKDYzLCAweDNGKSIsIFByaW50KEwnPycpKTsKKyAgRVhQ
RUNUX0VRKCJMJ1xcXFwnICg5MiwgMHg1QykiLCBQcmludChMJ1xcJykpOworICBFWFBFQ1RfRVEo
IkwnXFxhJyAoNykiLCBQcmludChMJ1xhJykpOworICBFWFBFQ1RfRVEoIkwnXFxiJyAoOCkiLCBQ
cmludChMJ1xiJykpOworICBFWFBFQ1RfRVEoIkwnXFxmJyAoMTIsIDB4QykiLCBQcmludChMJ1xm
JykpOworICBFWFBFQ1RfRVEoIkwnXFxuJyAoMTAsIDB4QSkiLCBQcmludChMJ1xuJykpOworICBF
WFBFQ1RfRVEoIkwnXFxyJyAoMTMsIDB4RCkiLCBQcmludChMJ1xyJykpOworICBFWFBFQ1RfRVEo
IkwnXFx0JyAoOSkiLCBQcmludChMJ1x0JykpOworICBFWFBFQ1RfRVEoIkwnXFx2JyAoMTEsIDB4
QikiLCBQcmludChMJ1x2JykpOworICBFWFBFQ1RfRVEoIkwnXFx4N0YnICgxMjcpIiwgUHJpbnQo
TCdceDdGJykpOworICBFWFBFQ1RfRVEoIkwnXFx4RkYnICgyNTUpIiwgUHJpbnQoTCdceEZGJykp
OworICBFWFBFQ1RfRVEoIkwnICcgKDMyLCAweDIwKSIsIFByaW50KEwnICcpKTsKKyAgRVhQRUNU
X0VRKCJMJ2EnICg5NywgMHg2MSkiLCBQcmludChMJ2EnKSk7CisgIEVYUEVDVF9FUSgiTCdcXHg1
NzYnICgxMzk4KSIsIFByaW50KHN0YXRpY19jYXN0PHdjaGFyX3Q+KDB4NTc2KSkpOworICBFWFBF
Q1RfRVEoIkwnXFx4Qzc0RCcgKDUxMDIxKSIsIFByaW50KHN0YXRpY19jYXN0PHdjaGFyX3Q+KDB4
Qzc0RCkpKTsKK30KKworLy8gVGVzdCB0aGF0IEludDY0IHByb3ZpZGVzIG1vcmUgc3RvcmFnZSB0
aGFuIHdjaGFyX3QuCitURVNUKFByaW50VHlwZVNpemVUZXN0LCBXY2hhcl90KSB7CisgIEVYUEVD
VF9MVChzaXplb2Yod2NoYXJfdCksIHNpemVvZih0ZXN0aW5nOjppbnRlcm5hbDo6SW50NjQpKTsK
K30KKworLy8gVmFyaW91cyBpbnRlZ2VyIHR5cGVzLgorVEVTVChQcmludEJ1aWx0SW5UeXBlVGVz
dCwgSW50ZWdlcikgeworICBFWFBFQ1RfRVEoIidcXHhGRicgKDI1NSkiLCBQcmludChzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPigyNTUpKSk7ICAvLyB1aW50OAorICBFWFBFQ1RfRVEoIidcXHg4
MCcgKC0xMjgpIiwgUHJpbnQoc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+KC0xMjgpKSk7ICAvLyBp
bnQ4CisgIEVYUEVDVF9FUSgiNjU1MzUiLCBQcmludChVU0hSVF9NQVgpKTsgIC8vIHVpbnQxNgor
ICBFWFBFQ1RfRVEoIi0zMjc2OCIsIFByaW50KFNIUlRfTUlOKSk7ICAvLyBpbnQxNgorICBFWFBF
Q1RfRVEoIjQyOTQ5NjcyOTUiLCBQcmludChVSU5UX01BWCkpOyAgLy8gdWludDMyCisgIEVYUEVD
VF9FUSgiLTIxNDc0ODM2NDgiLCBQcmludChJTlRfTUlOKSk7ICAvLyBpbnQzMgorICBFWFBFQ1Rf
RVEoIjE4NDQ2NzQ0MDczNzA5NTUxNjE1IiwKKyAgICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0
PHRlc3Rpbmc6OmludGVybmFsOjpVSW50NjQ+KC0xKSkpOyAgLy8gdWludDY0CisgIEVYUEVDVF9F
USgiLTkyMjMzNzIwMzY4NTQ3NzU4MDgiLAorICAgICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8
dGVzdGluZzo6aW50ZXJuYWw6OkludDY0PigxKSA8PCA2MykpOyAgLy8gaW50NjQKK30KKworLy8g
U2l6ZSB0eXBlcy4KK1RFU1QoUHJpbnRCdWlsdEluVHlwZVRlc3QsIFNpemVfdCkgeworICBFWFBF
Q1RfRVEoIjEiLCBQcmludChzaXplb2YoJ2EnKSkpOyAgLy8gc2l6ZV90LgorI2lmICFHVEVTVF9P
U19XSU5ET1dTCisgIC8vIFdpbmRvd3MgaGFzIG5vIHNzaXplX3QgdHlwZS4KKyAgRVhQRUNUX0VR
KCItMiIsIFByaW50KHN0YXRpY19jYXN0PHNzaXplX3Q+KC0yKSkpOyAgLy8gc3NpemVfdC4KKyNl
bmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1MKK30KKworLy8gRmxvYXRpbmctcG9pbnRzLgorVEVT
VChQcmludEJ1aWx0SW5UeXBlVGVzdCwgRmxvYXRpbmdQb2ludHMpIHsKKyAgRVhQRUNUX0VRKCIx
LjUiLCBQcmludCgxLjVmKSk7ICAgLy8gZmxvYXQKKyAgRVhQRUNUX0VRKCItMi41IiwgUHJpbnQo
LTIuNSkpOyAgLy8gZG91YmxlCit9CisKKy8vIFNpbmNlIDo6c3RkOjpzdHJpbmdzdHJlYW06Om9w
ZXJhdG9yPDwoY29uc3Qgdm9pZCAqKSBmb3JtYXRzIHRoZSBwb2ludGVyCisvLyBvdXRwdXQgZGlm
ZmVyZW50bHkgd2l0aCBkaWZmZXJlbnQgY29tcGlsZXJzLCB3ZSBoYXZlIHRvIGNyZWF0ZSB0aGUg
ZXhwZWN0ZWQKKy8vIG91dHB1dCBmaXJzdCBhbmQgdXNlIGl0IGFzIG91ciBleHBlY3RhdGlvbi4K
K3N0YXRpYyBzdGQ6OnN0cmluZyBQcmludFBvaW50ZXIoY29uc3Qgdm9pZCogcCkgeworICA6OnN0
ZDo6c3RyaW5nc3RyZWFtIGV4cGVjdGVkX3Jlc3VsdF9zdHJlYW07CisgIGV4cGVjdGVkX3Jlc3Vs
dF9zdHJlYW0gPDwgcDsKKyAgcmV0dXJuIGV4cGVjdGVkX3Jlc3VsdF9zdHJlYW0uc3RyKCk7Cit9
CisKKy8vIFRlc3RzIHByaW50aW5nIEMgc3RyaW5ncy4KKworLy8gY29uc3QgY2hhciouCitURVNU
KFByaW50Q1N0cmluZ1Rlc3QsIENvbnN0KSB7CisgIGNvbnN0IGNoYXIqIHAgPSAiV29ybGQiOwor
ICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApICsgIiBwb2ludGluZyB0byBcIldvcmxkXCIiLCBQ
cmludChwKSk7Cit9CisKKy8vIGNoYXIqLgorVEVTVChQcmludENTdHJpbmdUZXN0LCBOb25Db25z
dCkgeworICBjaGFyIHBbXSA9ICJIaSI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCkgKyAi
IHBvaW50aW5nIHRvIFwiSGlcIiIsCisgICAgICAgICAgICBQcmludChzdGF0aWNfY2FzdDxjaGFy
Kj4ocCkpKTsKK30KKworLy8gTlVMTCBDIHN0cmluZy4KK1RFU1QoUHJpbnRDU3RyaW5nVGVzdCwg
TnVsbCkgeworICBjb25zdCBjaGFyKiBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJp
bnQocCkpOworfQorCisvLyBUZXN0cyB0aGF0IEMgc3RyaW5ncyBhcmUgZXNjYXBlZCBwcm9wZXJs
eS4KK1RFU1QoUHJpbnRDU3RyaW5nVGVzdCwgRXNjYXBlc1Byb3Blcmx5KSB7CisgIGNvbnN0IGNo
YXIqIHAgPSAiJ1wiP1xcXGFcYlxmXG5cclx0XHZceDdGXHhGRiBhIjsKKyAgRVhQRUNUX0VRKFBy
aW50UG9pbnRlcihwKSArICIgcG9pbnRpbmcgdG8gXCInXFxcIj9cXFxcXFxhXFxiXFxmIgorICAg
ICAgICAgICAgIlxcblxcclxcdFxcdlxceDdGXFx4RkYgYVwiIiwKKyAgICAgICAgICAgIFByaW50
KHApKTsKK30KKworLy8gTVNWQyBjb21waWxlciBjYW4gYmUgY29uZmlndXJlZCB0byBkZWZpbmUg
d2hhcl90IGFzIGEgdHlwZWRlZgorLy8gb2YgdW5zaWduZWQgc2hvcnQuIERlZmluaW5nIGFuIG92
ZXJsb2FkIGZvciBjb25zdCB3Y2hhcl90KiBpbiB0aGF0IGNhc2UKKy8vIHdvdWxkIGNhdXNlIHBv
aW50ZXJzIHRvIHVuc2lnbmVkIHNob3J0cyBiZSBwcmludGVkIGFzIHdpZGUgc3RyaW5ncywKKy8v
IHBvc3NpYmx5IGFjY2Vzc2luZyBtb3JlIG1lbW9yeSB0aGFuIGludGVuZGVkIGFuZCBjYXVzaW5n
IGludmFsaWQKKy8vIG1lbW9yeSBhY2Nlc3Nlcy4gTVNWQyBkZWZpbmVzIF9OQVRJVkVfV0NIQVJf
VF9ERUZJTkVEIHN5bWJvbCB3aGVuCisvLyB3Y2hhcl90IGlzIGltcGxlbWVudGVkIGFzIGEgbmF0
aXZlIHR5cGUuCisjaWYgIWRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX05BVElWRV9XQ0hB
Ul9UX0RFRklORUQpCisKKy8vIGNvbnN0IHdjaGFyX3QqLgorVEVTVChQcmludFdpZGVDU3RyaW5n
VGVzdCwgQ29uc3QpIHsKKyAgY29uc3Qgd2NoYXJfdCogcCA9IEwiV29ybGQiOworICBFWFBFQ1Rf
RVEoUHJpbnRQb2ludGVyKHApICsgIiBwb2ludGluZyB0byBMXCJXb3JsZFwiIiwgUHJpbnQocCkp
OworfQorCisvLyB3Y2hhcl90Ki4KK1RFU1QoUHJpbnRXaWRlQ1N0cmluZ1Rlc3QsIE5vbkNvbnN0
KSB7CisgIHdjaGFyX3QgcFtdID0gTCJIaSI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCkg
KyAiIHBvaW50aW5nIHRvIExcIkhpXCIiLAorICAgICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8
d2NoYXJfdCo+KHApKSk7Cit9CisKKy8vIE5VTEwgd2lkZSBDIHN0cmluZy4KK1RFU1QoUHJpbnRX
aWRlQ1N0cmluZ1Rlc3QsIE51bGwpIHsKKyAgY29uc3Qgd2NoYXJfdCogcCA9IE5VTEw7CisgIEVY
UEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gVGVzdHMgdGhhdCB3aWRlIEMgc3Ry
aW5ncyBhcmUgZXNjYXBlZCBwcm9wZXJseS4KK1RFU1QoUHJpbnRXaWRlQ1N0cmluZ1Rlc3QsIEVz
Y2FwZXNQcm9wZXJseSkgeworICBjb25zdCB3Y2hhcl90IHNbXSA9IHsnXCcnLCAnIicsICc/Jywg
J1xcJywgJ1xhJywgJ1xiJywgJ1xmJywgJ1xuJywgJ1xyJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgJ1x0JywgJ1x2JywgMHhEMywgMHg1NzYsIDB4OEQzLCAweEM3NEQsICcgJywgJ2EnLCAnXDAn
fTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihzKSArICIgcG9pbnRpbmcgdG8gTFwiJ1xcXCI/
XFxcXFxcYVxcYlxcZiIKKyAgICAgICAgICAgICJcXG5cXHJcXHRcXHZcXHhEM1xceDU3NlxceDhE
M1xceEM3NEQgYVwiIiwKKyAgICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0PGNvbnN0IHdjaGFy
X3QqPihzKSkpOworfQorI2VuZGlmICAvLyBuYXRpdmUgd2NoYXJfdAorCisvLyBUZXN0cyBwcmlu
dGluZyBwb2ludGVycyB0byBvdGhlciBjaGFyIHR5cGVzLgorCisvLyBzaWduZWQgY2hhciouCitU
RVNUKFByaW50Q2hhclBvaW50ZXJUZXN0LCBTaWduZWRDaGFyKSB7CisgIHNpZ25lZCBjaGFyKiBw
ID0gcmVpbnRlcnByZXRfY2FzdDxzaWduZWQgY2hhcio+KDB4MTIzNCk7CisgIEVYUEVDVF9FUShQ
cmludFBvaW50ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVM
TCIsIFByaW50KHApKTsKK30KKworLy8gY29uc3Qgc2lnbmVkIGNoYXIqLgorVEVTVChQcmludENo
YXJQb2ludGVyVGVzdCwgQ29uc3RTaWduZWRDaGFyKSB7CisgIHNpZ25lZCBjaGFyKiBwID0gcmVp
bnRlcnByZXRfY2FzdDxzaWduZWQgY2hhcio+KDB4MTIzNCk7CisgIEVYUEVDVF9FUShQcmludFBv
aW50ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFBy
aW50KHApKTsKK30KKworLy8gdW5zaWduZWQgY2hhciouCitURVNUKFByaW50Q2hhclBvaW50ZXJU
ZXN0LCBVbnNpZ25lZENoYXIpIHsKKyAgdW5zaWduZWQgY2hhciogcCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dW5zaWduZWQgY2hhcio+KDB4MTIzNCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCks
IFByaW50KHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsK
K30KKworLy8gY29uc3QgdW5zaWduZWQgY2hhciouCitURVNUKFByaW50Q2hhclBvaW50ZXJUZXN0
LCBDb25zdFVuc2lnbmVkQ2hhcikgeworICBjb25zdCB1bnNpZ25lZCBjaGFyKiBwID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oMHgxMjM0KTsKKyAgRVhQRUNUX0VRKFBy
aW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxM
IiwgUHJpbnQocCkpOworfQorCisvLyBUZXN0cyBwcmludGluZyBwb2ludGVycyB0byBzaW1wbGUs
IGJ1aWx0LWluIHR5cGVzLgorCisvLyBib29sKi4KK1RFU1QoUHJpbnRQb2ludGVyVG9CdWlsdElu
VHlwZVRlc3QsIEJvb2wpIHsKKyAgYm9vbCogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Ym9vbCo+KDB4
QUJDRCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5V
TEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gdm9pZCouCitURVNU
KFByaW50UG9pbnRlclRvQnVpbHRJblR5cGVUZXN0LCBWb2lkKSB7CisgIHZvaWQqIHAgPSByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigweEFCQ0QpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHAp
LCBQcmludChwKSk7CisgIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7
Cit9CisKKy8vIGNvbnN0IHZvaWQqLgorVEVTVChQcmludFBvaW50ZXJUb0J1aWx0SW5UeXBlVGVz
dCwgQ29uc3RWb2lkKSB7CisgIGNvbnN0IHZvaWQqIHAgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IHZvaWQqPigweEFCQ0QpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7
CisgIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9CisKKy8vIFRl
c3RzIHByaW50aW5nIHBvaW50ZXJzIHRvIHBvaW50ZXJzLgorVEVTVChQcmludFBvaW50ZXJUb1Bv
aW50ZXJUZXN0LCBJbnRQb2ludGVyUG9pbnRlcikgeworICBpbnQqKiBwID0gcmVpbnRlcnByZXRf
Y2FzdDxpbnQqKj4oMHhBQkNEKTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQo
cCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisv
LyBUZXN0cyBwcmludGluZyAobm9uLW1lbWJlcikgZnVuY3Rpb24gcG9pbnRlcnMuCisKK3ZvaWQg
TXlGdW5jdGlvbihpbnQgLyogbiAqLykge30KKworVEVTVChQcmludFBvaW50ZXJUZXN0LCBOb25N
ZW1iZXJGdW5jdGlvblBvaW50ZXIpIHsKKyAgLy8gV2UgY2Fubm90IGRpcmVjdGx5IGNhc3QgJk15
RnVuY3Rpb24gdG8gY29uc3Qgdm9pZCogYmVjYXVzZSB0aGUKKyAgLy8gc3RhbmRhcmQgZGlzYWxs
b3dzIGNhc3RpbmcgYmV0d2VlbiBwb2ludGVycyB0byBmdW5jdGlvbnMgYW5kCisgIC8vIHBvaW50
ZXJzIHRvIG9iamVjdHMsIGFuZCBzb21lIGNvbXBpbGVycyAoZS5nLiBHQ0MgMy40KSBlbmZvcmNl
CisgIC8vIHRoaXMgbGltaXRhdGlvbi4KKyAgRVhQRUNUX0VRKAorICAgICAgUHJpbnRQb2ludGVy
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KAorICAgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8aW50ZXJuYWw6OkJpZ2dlc3RJbnQ+KCZNeUZ1bmN0aW9uKSkpLAorICAgICAgUHJpbnQoJk15
RnVuY3Rpb24pKTsKKyAgaW50ICgqcCkoYm9vbCkgPSBOVUxMOyAgLy8gTk9MSU5UCisgIEVYUEVD
VF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gQW4gYXNzZXJ0aW9uIHByZWRpY2F0ZSBk
ZXRlcm1pbmluZyB3aGV0aGVyIGEgb25lIHN0cmluZyBpcyBhIHByZWZpeCBmb3IKKy8vIGFub3Ro
ZXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyaW5nVHlwZT4KK0Fzc2VydGlvblJlc3VsdCBIYXNQ
cmVmaXgoY29uc3QgU3RyaW5nVHlwZSYgc3RyLCBjb25zdCBTdHJpbmdUeXBlJiBwcmVmaXgpIHsK
KyAgaWYgKHN0ci5maW5kKHByZWZpeCwgMCkgPT0gMCkKKyAgICByZXR1cm4gQXNzZXJ0aW9uU3Vj
Y2VzcygpOworCisgIGNvbnN0IGJvb2wgaXNfd2lkZV9zdHJpbmcgPSBzaXplb2YocHJlZml4WzBd
KSA+IDE7CisgIGNvbnN0IGNoYXIqIGNvbnN0IGJlZ2luX3N0cmluZ19xdW90ZSA9IGlzX3dpZGVf
c3RyaW5nID8gIkxcIiIgOiAiXCIiOworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpCisgICAg
ICA8PCBiZWdpbl9zdHJpbmdfcXVvdGUgPDwgcHJlZml4IDw8ICJcIiBpcyBub3QgYSBwcmVmaXgg
b2YgIgorICAgICAgPDwgYmVnaW5fc3RyaW5nX3F1b3RlIDw8IHN0ciA8PCAiXCJcbiI7Cit9CisK
Ky8vIFRlc3RzIHByaW50aW5nIG1lbWJlciB2YXJpYWJsZSBwb2ludGVycy4gIEFsdGhvdWdoIHRo
ZXkgYXJlIGNhbGxlZAorLy8gcG9pbnRlcnMsIHRoZXkgZG9uJ3QgcG9pbnQgdG8gYSBsb2NhdGlv
biBpbiB0aGUgYWRkcmVzcyBzcGFjZS4KKy8vIFRoZWlyIHJlcHJlc2VudGF0aW9uIGlzIGltcGxl
bWVudGF0aW9uLWRlZmluZWQuICBUaHVzIHRoZXkgd2lsbCBiZQorLy8gcHJpbnRlZCBhcyByYXcg
Ynl0ZXMuCisKK3N0cnVjdCBGb28geworIHB1YmxpYzoKKyAgdmlydHVhbCB+Rm9vKCkge30KKyAg
aW50IE15TWV0aG9kKGNoYXIgeCkgeyByZXR1cm4geCArIDE7IH0KKyAgdmlydHVhbCBjaGFyIE15
VmlydHVhbE1ldGhvZChpbnQgLyogbiAqLykgeyByZXR1cm4gJ2EnOyB9CisKKyAgaW50IHZhbHVl
OworfTsKKworVEVTVChQcmludFBvaW50ZXJUZXN0LCBNZW1iZXJWYXJpYWJsZVBvaW50ZXIpIHsK
KyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KFByaW50KCZGb286OnZhbHVlKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFByaW50KHNpemVvZigmRm9vOjp2YWx1ZSkpICsgIi1ieXRlIG9iamVjdCAi
KSk7CisgIGludCBGb286OipwID0gTlVMTDsgIC8vIE5PTElOVAorICBFWFBFQ1RfVFJVRShIYXNQ
cmVmaXgoUHJpbnQocCksCisgICAgICAgICAgICAgICAgICAgICAgICBQcmludChzaXplb2YocCkp
ICsgIi1ieXRlIG9iamVjdCAiKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIG1lbWJlciBmdW5j
dGlvbiBwb2ludGVycy4gIEFsdGhvdWdoIHRoZXkgYXJlIGNhbGxlZAorLy8gcG9pbnRlcnMsIHRo
ZXkgZG9uJ3QgcG9pbnQgdG8gYSBsb2NhdGlvbiBpbiB0aGUgYWRkcmVzcyBzcGFjZS4KKy8vIFRo
ZWlyIHJlcHJlc2VudGF0aW9uIGlzIGltcGxlbWVudGF0aW9uLWRlZmluZWQuICBUaHVzIHRoZXkg
d2lsbCBiZQorLy8gcHJpbnRlZCBhcyByYXcgYnl0ZXMuCitURVNUKFByaW50UG9pbnRlclRlc3Qs
IE1lbWJlckZ1bmN0aW9uUG9pbnRlcikgeworICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoUHJpbnQo
JkZvbzo6TXlNZXRob2QpLAorICAgICAgICAgICAgICAgICAgICAgICAgUHJpbnQoc2l6ZW9mKCZG
b286Ok15TWV0aG9kKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKKyAgRVhQRUNUX1RSVUUoCisgICAg
ICBIYXNQcmVmaXgoUHJpbnQoJkZvbzo6TXlWaXJ0dWFsTWV0aG9kKSwKKyAgICAgICAgICAgICAg
ICBQcmludChzaXplb2YoKCZGb286Ok15VmlydHVhbE1ldGhvZCkpKSArICItYnl0ZSBvYmplY3Qg
IikpOworICBpbnQgKEZvbzo6KnApKGNoYXIpID0gTlVMTDsgIC8vIE5PTElOVAorICBFWFBFQ1Rf
VFJVRShIYXNQcmVmaXgoUHJpbnQocCksCisgICAgICAgICAgICAgICAgICAgICAgICBQcmludChz
aXplb2YocCkpICsgIi1ieXRlIG9iamVjdCAiKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIEMg
YXJyYXlzLgorCisvLyBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIFByaW50KCkgaXMg
dGhhdCBpdCBlbnN1cmVzIHRoYXQgdGhlCisvLyBhcmd1bWVudCBpcyBhIHJlZmVyZW5jZSB0byBh
biBhcnJheS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KK3N0ZDo6c3RyaW5nIFBy
aW50QXJyYXlIZWxwZXIoVCAoJmEpW05dKSB7CisgIHJldHVybiBQcmludChhKTsKK30KKworLy8g
T25lLWRpbWVuc2lvbmFsIGFycmF5LgorVEVTVChQcmludEFycmF5VGVzdCwgT25lRGltZW5zaW9u
YWxBcnJheSkgeworICBpbnQgYVs1XSA9IHsgMSwgMiwgMywgNCwgNSB9OworICBFWFBFQ1RfRVEo
InsgMSwgMiwgMywgNCwgNSB9IiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIFR3by1k
aW1lbnNpb25hbCBhcnJheS4KK1RFU1QoUHJpbnRBcnJheVRlc3QsIFR3b0RpbWVuc2lvbmFsQXJy
YXkpIHsKKyAgaW50IGFbMl1bNV0gPSB7CisgICAgeyAxLCAyLCAzLCA0LCA1IH0sCisgICAgeyA2
LCA3LCA4LCA5LCAwIH0KKyAgfTsKKyAgRVhQRUNUX0VRKCJ7IHsgMSwgMiwgMywgNCwgNSB9LCB7
IDYsIDcsIDgsIDksIDAgfSB9IiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIEFycmF5
IG9mIGNvbnN0IGVsZW1lbnRzLgorVEVTVChQcmludEFycmF5VGVzdCwgQ29uc3RBcnJheSkgewor
ICBjb25zdCBib29sIGFbMV0gPSB7IGZhbHNlIH07CisgIEVYUEVDVF9FUSgieyBmYWxzZSB9Iiwg
UHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIGNoYXIgYXJyYXkgd2l0aG91dCB0ZXJtaW5h
dGluZyBOVUwuCitURVNUKFByaW50QXJyYXlUZXN0LCBDaGFyQXJyYXlXaXRoTm9UZXJtaW5hdGlu
Z051bCkgeworICAvLyBBcnJheSBhIGNvbnRhaW5zICdcMCcgaW4gdGhlIG1pZGRsZSBhbmQgZG9l
c24ndCBlbmQgd2l0aCAnXDAnLgorICBjaGFyIGFbXSA9IHsgJ0gnLCAnXDAnLCAnaScgfTsKKyAg
RVhQRUNUX0VRKCJcIkhcXDBpXCIgKG5vIHRlcm1pbmF0aW5nIE5VTCkiLCBQcmludEFycmF5SGVs
cGVyKGEpKTsKK30KKworLy8gY29uc3QgY2hhciBhcnJheSB3aXRoIHRlcm1pbmF0aW5nIE5VTC4K
K1RFU1QoUHJpbnRBcnJheVRlc3QsIENvbnN0Q2hhckFycmF5V2l0aFRlcm1pbmF0aW5nTnVsKSB7
CisgIGNvbnN0IGNoYXIgYVtdID0gIlwwSGkiOworICBFWFBFQ1RfRVEoIlwiXFwwSGlcIiIsIFBy
aW50QXJyYXlIZWxwZXIoYSkpOworfQorCisvLyBjb25zdCB3Y2hhcl90IGFycmF5IHdpdGhvdXQg
dGVybWluYXRpbmcgTlVMLgorVEVTVChQcmludEFycmF5VGVzdCwgV0NoYXJBcnJheVdpdGhOb1Rl
cm1pbmF0aW5nTnVsKSB7CisgIC8vIEFycmF5IGEgY29udGFpbnMgJ1wwJyBpbiB0aGUgbWlkZGxl
IGFuZCBkb2Vzbid0IGVuZCB3aXRoICdcMCcuCisgIGNvbnN0IHdjaGFyX3QgYVtdID0geyBMJ0gn
LCBMJ1wwJywgTCdpJyB9OworICBFWFBFQ1RfRVEoIkxcIkhcXDBpXCIgKG5vIHRlcm1pbmF0aW5n
IE5VTCkiLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8gd2NoYXJfdCBhcnJheSB3aXRo
IHRlcm1pbmF0aW5nIE5VTC4KK1RFU1QoUHJpbnRBcnJheVRlc3QsIFdDb25zdENoYXJBcnJheVdp
dGhUZXJtaW5hdGluZ051bCkgeworICBjb25zdCB3Y2hhcl90IGFbXSA9IEwiXDBIaSI7CisgIEVY
UEVDVF9FUSgiTFwiXFwwSGlcIiIsIFByaW50QXJyYXlIZWxwZXIoYSkpOworfQorCisvLyBBcnJh
eSBvZiBvYmplY3RzLgorVEVTVChQcmludEFycmF5VGVzdCwgT2JqZWN0QXJyYXkpIHsKKyAgc3Rk
OjpzdHJpbmcgYVszXSA9IHsiSGkiLCAiSGVsbG8iLCAiTmkgaGFvIn07CisgIEVYUEVDVF9FUSgi
eyBcIkhpXCIsIFwiSGVsbG9cIiwgXCJOaSBoYW9cIiB9IiwgUHJpbnRBcnJheUhlbHBlcihhKSk7
Cit9CisKKy8vIEFycmF5IHdpdGggbWFueSBlbGVtZW50cy4KK1RFU1QoUHJpbnRBcnJheVRlc3Qs
IEJpZ0FycmF5KSB7CisgIGludCBhWzEwMF0gPSB7IDEsIDIsIDMgfTsKKyAgRVhQRUNUX0VRKCJ7
IDEsIDIsIDMsIDAsIDAsIDAsIDAsIDAsIC4uLiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9IiwK
KyAgICAgICAgICAgIFByaW50QXJyYXlIZWxwZXIoYSkpOworfQorCisvLyBUZXN0cyBwcmludGlu
ZyA6OnN0cmluZyBhbmQgOjpzdGQ6OnN0cmluZy4KKworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RS
SU5HCisvLyA6OnN0cmluZy4KK1RFU1QoUHJpbnRTdHJpbmdUZXN0LCBTdHJpbmdJbkdsb2JhbE5h
bWVzcGFjZSkgeworICBjb25zdCBjaGFyIHNbXSA9ICInXCI/XFxcYVxiXGZcblwwXHJcdFx2XHg3
Rlx4RkYgYSI7CisgIGNvbnN0IDo6c3RyaW5nIHN0cihzLCBzaXplb2YocykpOworICBFWFBFQ1Rf
RVEoIlwiJ1xcXCI/XFxcXFxcYVxcYlxcZlxcblxcMFxcclxcdFxcdlxceDdGXFx4RkYgYVxcMFwi
IiwKKyAgICAgICAgICAgIFByaW50KHN0cikpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xP
QkFMX1NUUklORworCisvLyA6OnN0ZDo6c3RyaW5nLgorVEVTVChQcmludFN0cmluZ1Rlc3QsIFN0
cmluZ0luU3RkTmFtZXNwYWNlKSB7CisgIGNvbnN0IGNoYXIgc1tdID0gIidcIj9cXFxhXGJcZlxu
XDBcclx0XHZceDdGXHhGRiBhIjsKKyAgY29uc3QgOjpzdGQ6OnN0cmluZyBzdHIocywgc2l6ZW9m
KHMpKTsKKyAgRVhQRUNUX0VRKCJcIidcXFwiP1xcXFxcXGFcXGJcXGZcXG5cXDBcXHJcXHRcXHZc
XHg3RlxceEZGIGFcXDBcIiIsCisgICAgICAgICAgICBQcmludChzdHIpKTsKK30KKworVEVTVChQ
cmludFN0cmluZ1Rlc3QsIFN0cmluZ0FtYmlndW91c0hleCkgeworICAvLyAiXHg2QkFOQU5BIiBp
cyBhbWJpZ3VvdXMsIGl0IGNhbiBiZSBpbnRlcnByZXRlZCBhcyBzdGFydGluZyB3aXRoIGVpdGhl
ciBvZjoKKyAgLy8gJ1x4NicsICdceDZCJywgb3IgJ1x4NkJBJy4KKworICAvLyBhIGhleCBlc2Nh
cGluZyBzZXF1ZW5jZSBmb2xsb3dpbmcgYnkgYSBkZWNpbWFsIGRpZ2l0CisgIEVYUEVDVF9FUSgi
XCIwXFx4MTJcIiBcIjNcIiIsIFByaW50KDo6c3RkOjpzdHJpbmcoIjBceDEyIiAiMyIpKSk7Cisg
IC8vIGEgaGV4IGVzY2FwaW5nIHNlcXVlbmNlIGZvbGxvd2luZyBieSBhIGhleCBkaWdpdCAobG93
ZXItY2FzZSkKKyAgRVhQRUNUX0VRKCJcIm1tXFx4NlwiIFwiYmFuYW5hc1wiIiwgUHJpbnQoOjpz
dGQ6OnN0cmluZygibW1ceDYiICJiYW5hbmFzIikpKTsKKyAgLy8gYSBoZXggZXNjYXBpbmcgc2Vx
dWVuY2UgZm9sbG93aW5nIGJ5IGEgaGV4IGRpZ2l0ICh1cHBlci1jYXNlKQorICBFWFBFQ1RfRVEo
IlwiTk9NXFx4NlwiIFwiQkFOQU5BXCIiLCBQcmludCg6OnN0ZDo6c3RyaW5nKCJOT01ceDYiICJC
QU5BTkEiKSkpOworICAvLyBhIGhleCBlc2NhcGluZyBzZXF1ZW5jZSBmb2xsb3dpbmcgYnkgYSBu
b24teGRpZ2l0CisgIEVYUEVDVF9FUSgiXCIhXFx4NS0hXCIiLCBQcmludCg6OnN0ZDo6c3RyaW5n
KCIhXHg1LSEiKSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyA6OndzdHJpbmcgYW5kIDo6c3Rk
Ojp3c3RyaW5nLgorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCisvLyA6OndzdHJpbmcu
CitURVNUKFByaW50V2lkZVN0cmluZ1Rlc3QsIFN0cmluZ0luR2xvYmFsTmFtZXNwYWNlKSB7Cisg
IGNvbnN0IHdjaGFyX3Qgc1tdID0gTCInXCI/XFxcYVxiXGZcblwwXHJcdFx2XHhEM1x4NTc2XHg4
RDNceEM3NEQgYSI7CisgIGNvbnN0IDo6d3N0cmluZyBzdHIocywgc2l6ZW9mKHMpL3NpemVvZih3
Y2hhcl90KSk7CisgIEVYUEVDVF9FUSgiTFwiJ1xcXCI/XFxcXFxcYVxcYlxcZlxcblxcMFxcclxc
dFxcdiIKKyAgICAgICAgICAgICJcXHhEM1xceDU3NlxceDhEM1xceEM3NEQgYVxcMFwiIiwKKyAg
ICAgICAgICAgIFByaW50KHN0cikpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dT
VFJJTkcKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORworLy8gOjpzdGQ6OndzdHJpbmcuCitU
RVNUKFByaW50V2lkZVN0cmluZ1Rlc3QsIFN0cmluZ0luU3RkTmFtZXNwYWNlKSB7CisgIGNvbnN0
IHdjaGFyX3Qgc1tdID0gTCInXCI/XFxcYVxiXGZcblwwXHJcdFx2XHhEM1x4NTc2XHg4RDNceEM3
NEQgYSI7CisgIGNvbnN0IDo6c3RkOjp3c3RyaW5nIHN0cihzLCBzaXplb2Yocykvc2l6ZW9mKHdj
aGFyX3QpKTsKKyAgRVhQRUNUX0VRKCJMXCInXFxcIj9cXFxcXFxhXFxiXFxmXFxuXFwwXFxyXFx0
XFx2IgorICAgICAgICAgICAgIlxceEQzXFx4NTc2XFx4OEQzXFx4Qzc0RCBhXFwwXCIiLAorICAg
ICAgICAgICAgUHJpbnQoc3RyKSk7Cit9CisKK1RFU1QoUHJpbnRXaWRlU3RyaW5nVGVzdCwgU3Ry
aW5nQW1iaWd1b3VzSGV4KSB7CisgIC8vIHNhbWUgZm9yIHdpZGUgc3RyaW5ncy4KKyAgRVhQRUNU
X0VRKCJMXCIwXFx4MTJcIiBMXCIzXCIiLCBQcmludCg6OnN0ZDo6d3N0cmluZyhMIjBceDEyIiBM
IjMiKSkpOworICBFWFBFQ1RfRVEoIkxcIm1tXFx4NlwiIExcImJhbmFuYXNcIiIsCisgICAgICAg
ICAgICBQcmludCg6OnN0ZDo6d3N0cmluZyhMIm1tXHg2IiBMImJhbmFuYXMiKSkpOworICBFWFBF
Q1RfRVEoIkxcIk5PTVxceDZcIiBMXCJCQU5BTkFcIiIsCisgICAgICAgICAgICBQcmludCg6OnN0
ZDo6d3N0cmluZyhMIk5PTVx4NiIgTCJCQU5BTkEiKSkpOworICBFWFBFQ1RfRVEoIkxcIiFcXHg1
LSFcIiIsIFByaW50KDo6c3RkOjp3c3RyaW5nKEwiIVx4NS0hIikpKTsKK30KKyNlbmRpZiAgLy8g
R1RFU1RfSEFTX1NURF9XU1RSSU5HCisKKy8vIFRlc3RzIHByaW50aW5nIHR5cGVzIHRoYXQgc3Vw
cG9ydCBnZW5lcmljIHN0cmVhbWluZyAoaS5lLiBzdHJlYW1pbmcKKy8vIHRvIHN0ZDo6YmFzaWNf
b3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiBmb3IgYW55IHZhbGlkIENoYXIgYW5kCisvLyBDaGFy
VHJhaXRzIHR5cGVzKS4KKworLy8gVGVzdHMgcHJpbnRpbmcgYSBub24tdGVtcGxhdGUgdHlwZSB0
aGF0IHN1cHBvcnRzIGdlbmVyaWMgc3RyZWFtaW5nLgorCitjbGFzcyBBbGxvd3NHZW5lcmljU3Ry
ZWFtaW5nIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhciwgdHlwZW5hbWUgQ2hhclRyYWl0
cz4KK3N0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAg
ICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9zLAorICAgIGNvbnN0IEFs
bG93c0dlbmVyaWNTdHJlYW1pbmcmIC8qIGEgKi8pIHsKKyAgcmV0dXJuIG9zIDw8ICJBbGxvd3NH
ZW5lcmljU3RyZWFtaW5nIjsKK30KKworVEVTVChQcmludFR5cGVXaXRoR2VuZXJpY1N0cmVhbWlu
Z1Rlc3QsIE5vblRlbXBsYXRlVHlwZSkgeworICBBbGxvd3NHZW5lcmljU3RyZWFtaW5nIGE7Cisg
IEVYUEVDVF9FUSgiQWxsb3dzR2VuZXJpY1N0cmVhbWluZyIsIFByaW50KGEpKTsKK30KKworLy8g
VGVzdHMgcHJpbnRpbmcgYSB0ZW1wbGF0ZSB0eXBlIHRoYXQgc3VwcG9ydHMgZ2VuZXJpYyBzdHJl
YW1pbmcuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQWxsb3dzR2VuZXJpY1N0cmVh
bWluZ1RlbXBsYXRlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhciwgdHlwZW5hbWUgQ2hh
clRyYWl0cywgdHlwZW5hbWUgVD4KK3N0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRz
PiYgb3BlcmF0b3I8PCgKKyAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4m
IG9zLAorICAgIGNvbnN0IEFsbG93c0dlbmVyaWNTdHJlYW1pbmdUZW1wbGF0ZTxUPiYgLyogYSAq
LykgeworICByZXR1cm4gb3MgPDwgIkFsbG93c0dlbmVyaWNTdHJlYW1pbmdUZW1wbGF0ZSI7Cit9
CisKK1RFU1QoUHJpbnRUeXBlV2l0aEdlbmVyaWNTdHJlYW1pbmdUZXN0LCBUZW1wbGF0ZVR5cGUp
IHsKKyAgQWxsb3dzR2VuZXJpY1N0cmVhbWluZ1RlbXBsYXRlPGludD4gYTsKKyAgRVhQRUNUX0VR
KCJBbGxvd3NHZW5lcmljU3RyZWFtaW5nVGVtcGxhdGUiLCBQcmludChhKSk7Cit9CisKKy8vIFRl
c3RzIHByaW50aW5nIGEgdHlwZSB0aGF0IHN1cHBvcnRzIGdlbmVyaWMgc3RyZWFtaW5nIGFuZCBj
YW4gYmUKKy8vIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGFub3RoZXIgcHJpbnRhYmxlIHR5cGUu
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQWxsb3dzR2VuZXJpY1N0cmVhbWluZ0Fu
ZEltcGxpY2l0Q29udmVyc2lvblRlbXBsYXRlIHsKKyBwdWJsaWM6CisgIG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXIs
IHR5cGVuYW1lIENoYXJUcmFpdHMsIHR5cGVuYW1lIFQ+CitzdGQ6OmJhc2ljX29zdHJlYW08Q2hh
ciwgQ2hhclRyYWl0cz4mIG9wZXJhdG9yPDwoCisgICAgc3RkOjpiYXNpY19vc3RyZWFtPENoYXIs
IENoYXJUcmFpdHM+JiBvcywKKyAgICBjb25zdCBBbGxvd3NHZW5lcmljU3RyZWFtaW5nQW5kSW1w
bGljaXRDb252ZXJzaW9uVGVtcGxhdGU8VD4mIC8qIGEgKi8pIHsKKyAgcmV0dXJuIG9zIDw8ICJB
bGxvd3NHZW5lcmljU3RyZWFtaW5nQW5kSW1wbGljaXRDb252ZXJzaW9uVGVtcGxhdGUiOworfQor
CitURVNUKFByaW50VHlwZVdpdGhHZW5lcmljU3RyZWFtaW5nVGVzdCwgVHlwZUltcGxpY2l0bHlD
b252ZXJ0aWJsZSkgeworICBBbGxvd3NHZW5lcmljU3RyZWFtaW5nQW5kSW1wbGljaXRDb252ZXJz
aW9uVGVtcGxhdGU8aW50PiBhOworICBFWFBFQ1RfRVEoIkFsbG93c0dlbmVyaWNTdHJlYW1pbmdB
bmRJbXBsaWNpdENvbnZlcnNpb25UZW1wbGF0ZSIsIFByaW50KGEpKTsKK30KKworI2lmIEdURVNU
X0hBU19BQlNMCisKKy8vIFRlc3RzIHByaW50aW5nIDo6YWJzbDo6c3RyaW5nX3ZpZXcuCisKK1RF
U1QoUHJpbnRTdHJpbmdWaWV3VGVzdCwgU2ltcGxlU3RyaW5nVmlldykgeworICBjb25zdCA6OmFi
c2w6OnN0cmluZ192aWV3IHNwID0gIkhlbGxvIjsKKyAgRVhQRUNUX0VRKCJcIkhlbGxvXCIiLCBQ
cmludChzcCkpOworfQorCitURVNUKFByaW50U3RyaW5nVmlld1Rlc3QsIFVucHJpbnRhYmxlQ2hh
cmFjdGVycykgeworICBjb25zdCBjaGFyIHN0cltdID0gIk5VTCAoXDApIGFuZCBcclx0IjsKKyAg
Y29uc3QgOjphYnNsOjpzdHJpbmdfdmlldyBzcChzdHIsIHNpemVvZihzdHIpIC0gMSk7CisgIEVY
UEVDVF9FUSgiXCJOVUwgKFxcMCkgYW5kIFxcclxcdFwiIiwgUHJpbnQoc3ApKTsKK30KKworI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfQUJTTAorCisvLyBUZXN0cyBwcmludGluZyBTVEwgY29udGFpbmVy
cy4KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIEVtcHR5RGVxdWUpIHsKKyAgZGVxdWU8
Y2hhcj4gZW1wdHk7CisgIEVYUEVDVF9FUSgie30iLCBQcmludChlbXB0eSkpOworfQorCitURVNU
KFByaW50U3RsQ29udGFpbmVyVGVzdCwgTm9uRW1wdHlEZXF1ZSkgeworICBkZXF1ZTxpbnQ+IG5v
bl9lbXB0eTsKKyAgbm9uX2VtcHR5LnB1c2hfYmFjaygxKTsKKyAgbm9uX2VtcHR5LnB1c2hfYmFj
aygzKTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDMgfSIsIFByaW50KG5vbl9lbXB0eSkpOworfQorCisj
aWYgR1RFU1RfSEFTX1VOT1JERVJFRF9NQVBfCisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0
LCBPbmVFbGVtZW50SGFzaE1hcCkgeworICA6OnN0ZDo6dW5vcmRlcmVkX21hcDxpbnQsIGNoYXI+
IG1hcDE7CisgIG1hcDFbMV0gPSAnYSc7CisgIEVYUEVDVF9FUSgieyAoMSwgJ2EnICg5NywgMHg2
MSkpIH0iLCBQcmludChtYXAxKSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBI
YXNoTXVsdGlNYXApIHsKKyAgOjpzdGQ6OnVub3JkZXJlZF9tdWx0aW1hcDxpbnQsIGJvb2w+IG1h
cDE7CisgIG1hcDEuaW5zZXJ0KG1ha2VfcGFpcig1LCB0cnVlKSk7CisgIG1hcDEuaW5zZXJ0KG1h
a2VfcGFpcig1LCBmYWxzZSkpOworCisgIC8vIEVsZW1lbnRzIG9mIGhhc2hfbXVsdGltYXAgY2Fu
IGJlIHByaW50ZWQgaW4gYW55IG9yZGVyLgorICBjb25zdCBzdGQ6OnN0cmluZyByZXN1bHQgPSBQ
cmludChtYXAxKTsKKyAgRVhQRUNUX1RSVUUocmVzdWx0ID09ICJ7ICg1LCB0cnVlKSwgKDUsIGZh
bHNlKSB9IiB8fAorICAgICAgICAgICAgICByZXN1bHQgPT0gInsgKDUsIGZhbHNlKSwgKDUsIHRy
dWUpIH0iKQorICAgICAgICAgICAgICAgICAgPDwgIiB3aGVyZSBQcmludChtYXAxKSByZXR1cm5z
IFwiIiA8PCByZXN1bHQgPDwgIlwiLiI7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1VOT1JE
RVJFRF9NQVBfCisKKyNpZiBHVEVTVF9IQVNfVU5PUkRFUkVEX1NFVF8KKworVEVTVChQcmludFN0
bENvbnRhaW5lclRlc3QsIEhhc2hTZXQpIHsKKyAgOjpzdGQ6OnVub3JkZXJlZF9zZXQ8aW50PiBz
ZXQxOworICBzZXQxLmluc2VydCgxKTsKKyAgRVhQRUNUX0VRKCJ7IDEgfSIsIFByaW50KHNldDEp
KTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIEhhc2hNdWx0aVNldCkgeworICBj
b25zdCBpbnQga1NpemUgPSA1OworICBpbnQgYVtrU2l6ZV0gPSB7IDEsIDEsIDIsIDUsIDEgfTsK
KyAgOjpzdGQ6OnVub3JkZXJlZF9tdWx0aXNldDxpbnQ+IHNldDEoYSwgYSArIGtTaXplKTsKKwor
ICAvLyBFbGVtZW50cyBvZiBoYXNoX211bHRpc2V0IGNhbiBiZSBwcmludGVkIGluIGFueSBvcmRl
ci4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgcmVzdWx0ID0gUHJpbnQoc2V0MSk7CisgIGNvbnN0IHN0
ZDo6c3RyaW5nIGV4cGVjdGVkX3BhdHRlcm4gPSAieyBkLCBkLCBkLCBkLCBkIH0iOyAgLy8gZCBt
ZWFucyBhIGRpZ2l0LgorCisgIC8vIFZlcmlmaWVzIHRoZSByZXN1bHQgbWF0Y2hlcyB0aGUgZXhw
ZWN0ZWQgcGF0dGVybjsgYWxzbyBleHRyYWN0cworICAvLyB0aGUgbnVtYmVycyBpbiB0aGUgcmVz
dWx0LgorICBBU1NFUlRfRVEoZXhwZWN0ZWRfcGF0dGVybi5sZW5ndGgoKSwgcmVzdWx0Lmxlbmd0
aCgpKTsKKyAgc3RkOjp2ZWN0b3I8aW50PiBudW1iZXJzOworICBmb3IgKHNpemVfdCBpID0gMDsg
aSAhPSByZXN1bHQubGVuZ3RoKCk7IGkrKykgeworICAgIGlmIChleHBlY3RlZF9wYXR0ZXJuW2ld
ID09ICdkJykgeworICAgICAgQVNTRVJUX05FKGlzZGlnaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4ocmVzdWx0W2ldKSksIDApOworICAgICAgbnVtYmVycy5wdXNoX2JhY2socmVzdWx0W2ld
IC0gJzAnKTsKKyAgICB9IGVsc2UgeworICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkX3BhdHRlcm5b
aV0sIHJlc3VsdFtpXSkgPDwgIiB3aGVyZSByZXN1bHQgaXMgIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcmVzdWx0OworICAgIH0KKyAgfQorCisg
IC8vIE1ha2VzIHN1cmUgdGhlIHJlc3VsdCBjb250YWlucyB0aGUgcmlnaHQgbnVtYmVycy4KKyAg
c3RkOjpzb3J0KG51bWJlcnMuYmVnaW4oKSwgbnVtYmVycy5lbmQoKSk7CisgIHN0ZDo6c29ydChh
LCBhICsga1NpemUpOworICBFWFBFQ1RfVFJVRShzdGQ6OmVxdWFsKGEsIGEgKyBrU2l6ZSwgbnVt
YmVycy5iZWdpbigpKSk7Cit9CisKKyNlbmRpZiAgLy8gIEdURVNUX0hBU19VTk9SREVSRURfU0VU
XworCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgTGlzdCkgeworICBjb25zdCBzdGQ6OnN0
cmluZyBhW10gPSB7ImhlbGxvIiwgIndvcmxkIn07CisgIGNvbnN0IGxpc3Q8c3RkOjpzdHJpbmc+
IHN0cmluZ3MoYSwgYSArIDIpOworICBFWFBFQ1RfRVEoInsgXCJoZWxsb1wiLCBcIndvcmxkXCIg
fSIsIFByaW50KHN0cmluZ3MpKTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIE1h
cCkgeworICBtYXA8aW50LCBib29sPiBtYXAxOworICBtYXAxWzFdID0gdHJ1ZTsKKyAgbWFwMVs1
XSA9IGZhbHNlOworICBtYXAxWzNdID0gdHJ1ZTsKKyAgRVhQRUNUX0VRKCJ7ICgxLCB0cnVlKSwg
KDMsIHRydWUpLCAoNSwgZmFsc2UpIH0iLCBQcmludChtYXAxKSk7Cit9CisKK1RFU1QoUHJpbnRT
dGxDb250YWluZXJUZXN0LCBNdWx0aU1hcCkgeworICBtdWx0aW1hcDxib29sLCBpbnQ+IG1hcDE7
CisgIC8vIFRoZSBtYWtlX3BhaXIgdGVtcGxhdGUgZnVuY3Rpb24gd291bGQgZGVkdWNlIHRoZSB0
eXBlIGFzCisgIC8vIHBhaXI8Ym9vbCwgaW50PiBoZXJlLCBhbmQgc2luY2UgdGhlIGtleSBwYXJ0
IGluIGEgbXVsdGltYXAgaGFzIHRvCisgIC8vIGJlIGNvbnN0YW50LCB3aXRob3V0IGEgdGVtcGxh
dGVkIGN0b3IgaW4gdGhlIHBhaXIgY2xhc3MgKGFzIGluCisgIC8vIGxpYkNzdGQgb24gU29sYXJp
cyksIG1ha2VfcGFpciBjYWxsIHdvdWxkIGZhaWwgdG8gY29tcGlsZSBhcyBubworICAvLyBpbXBs
aWNpdCBjb252ZXJzaW9uIGlzIGZvdW5kLiAgVGh1cyBleHBsaWNpdCB0eXBlbmFtZSBpcyB1c2Vk
CisgIC8vIGhlcmUgaW5zdGVhZC4KKyAgbWFwMS5pbnNlcnQocGFpcjxjb25zdCBib29sLCBpbnQ+
KHRydWUsIDApKTsKKyAgbWFwMS5pbnNlcnQocGFpcjxjb25zdCBib29sLCBpbnQ+KHRydWUsIDEp
KTsKKyAgbWFwMS5pbnNlcnQocGFpcjxjb25zdCBib29sLCBpbnQ+KGZhbHNlLCAyKSk7CisgIEVY
UEVDVF9FUSgieyAoZmFsc2UsIDIpLCAodHJ1ZSwgMCksICh0cnVlLCAxKSB9IiwgUHJpbnQobWFw
MSkpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgU2V0KSB7CisgIGNvbnN0IHVu
c2lnbmVkIGludCBhW10gPSB7IDMsIDAsIDUgfTsKKyAgc2V0PHVuc2lnbmVkIGludD4gc2V0MShh
LCBhICsgMyk7CisgIEVYUEVDVF9FUSgieyAwLCAzLCA1IH0iLCBQcmludChzZXQxKSk7Cit9CisK
K1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBNdWx0aVNldCkgeworICBjb25zdCBpbnQgYVtd
ID0geyAxLCAxLCAyLCA1LCAxIH07CisgIG11bHRpc2V0PGludD4gc2V0MShhLCBhICsgNSk7Cisg
IEVYUEVDVF9FUSgieyAxLCAxLCAxLCAyLCA1IH0iLCBQcmludChzZXQxKSk7Cit9CisKKyNpZiBH
VEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3Qs
IFNpbmdseUxpbmtlZExpc3QpIHsKKyAgaW50IGFbXSA9IHsgOSwgMiwgOCB9OworICBjb25zdCBz
dGQ6OmZvcndhcmRfbGlzdDxpbnQ+IGludHMoYSwgYSArIDMpOworICBFWFBFQ1RfRVEoInsgOSwg
MiwgOCB9IiwgUHJpbnQoaW50cykpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0ZPUldB
UkRfTElTVF8KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIFBhaXIpIHsKKyAgcGFpcjxj
b25zdCBib29sLCBpbnQ+IHAodHJ1ZSwgNSk7CisgIEVYUEVDVF9FUSgiKHRydWUsIDUpIiwgUHJp
bnQocCkpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgVmVjdG9yKSB7CisgIHZl
Y3RvcjxpbnQ+IHY7CisgIHYucHVzaF9iYWNrKDEpOworICB2LnB1c2hfYmFjaygyKTsKKyAgRVhQ
RUNUX0VRKCJ7IDEsIDIgfSIsIFByaW50KHYpKTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5l
clRlc3QsIExvbmdTZXF1ZW5jZSkgeworICBjb25zdCBpbnQgYVsxMDBdID0geyAxLCAyLCAzIH07
CisgIGNvbnN0IHZlY3RvcjxpbnQ+IHYoYSwgYSArIDEwMCk7CisgIEVYUEVDVF9FUSgieyAxLCAy
LCAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAiCisgICAgICAg
ICAgICAiMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgLi4uIH0i
LCBQcmludCh2KSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBOZXN0ZWRDb250
YWluZXIpIHsKKyAgY29uc3QgaW50IGExW10gPSB7IDEsIDIgfTsKKyAgY29uc3QgaW50IGEyW10g
PSB7IDMsIDQsIDUgfTsKKyAgY29uc3QgbGlzdDxpbnQ+IGwxKGExLCBhMSArIDIpOworICBjb25z
dCBsaXN0PGludD4gbDIoYTIsIGEyICsgMyk7CisKKyAgdmVjdG9yPGxpc3Q8aW50PiA+IHY7Cisg
IHYucHVzaF9iYWNrKGwxKTsKKyAgdi5wdXNoX2JhY2sobDIpOworICBFWFBFQ1RfRVEoInsgeyAx
LCAyIH0sIHsgMywgNCwgNSB9IH0iLCBQcmludCh2KSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250
YWluZXJUZXN0LCBPbmVEaW1lbnNpb25hbE5hdGl2ZUFycmF5KSB7CisgIGNvbnN0IGludCBhWzNd
ID0geyAxLCAyLCAzIH07CisgIE5hdGl2ZUFycmF5PGludD4gYihhLCAzLCBSZWxhdGlvblRvU291
cmNlUmVmZXJlbmNlKCkpOworICBFWFBFQ1RfRVEoInsgMSwgMiwgMyB9IiwgUHJpbnQoYikpOwor
fQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgVHdvRGltZW5zaW9uYWxOYXRpdmVBcnJh
eSkgeworICBjb25zdCBpbnQgYVsyXVszXSA9IHsgeyAxLCAyLCAzIH0sIHsgNCwgNSwgNiB9IH07
CisgIE5hdGl2ZUFycmF5PGludFszXT4gYihhLCAyLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNl
KCkpOworICBFWFBFQ1RfRVEoInsgeyAxLCAyLCAzIH0sIHsgNCwgNSwgNiB9IH0iLCBQcmludChi
KSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBjbGFzcyBuYW1lZCBpdGVyYXRvciBpc24ndCB0cmVh
dGVkIGFzIGEgY29udGFpbmVyLgorCitzdHJ1Y3QgaXRlcmF0b3IgeworICBjaGFyIHg7Cit9Owor
CitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgSXRlcmF0b3IpIHsKKyAgaXRlcmF0b3IgaXQg
PSB7fTsKKyAgRVhQRUNUX0VRKCIxLWJ5dGUgb2JqZWN0IDwwMD4iLCBQcmludChpdCkpOworfQor
CisvLyBUZXN0cyB0aGF0IGEgY2xhc3MgbmFtZWQgY29uc3RfaXRlcmF0b3IgaXNuJ3QgdHJlYXRl
ZCBhcyBhIGNvbnRhaW5lci4KKworc3RydWN0IGNvbnN0X2l0ZXJhdG9yIHsKKyAgY2hhciB4Owor
fTsKKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIENvbnN0SXRlcmF0b3IpIHsKKyAgY29u
c3RfaXRlcmF0b3IgaXQgPSB7fTsKKyAgRVhQRUNUX0VRKCIxLWJ5dGUgb2JqZWN0IDwwMD4iLCBQ
cmludChpdCkpOworfQorCisjaWYgR1RFU1RfSEFTX1RSMV9UVVBMRQorLy8gVGVzdHMgcHJpbnRp
bmcgOjpzdGQ6OnRyMTo6dHVwbGVzLgorCisvLyBUdXBsZXMgb2YgdmFyaW91cyBhcml0aWVzLgor
VEVTVChQcmludFRyMVR1cGxlVGVzdCwgVmFyaW91c1NpemVzKSB7CisgIDo6c3RkOjp0cjE6OnR1
cGxlPD4gdDA7CisgIEVYUEVDVF9FUSgiKCkiLCBQcmludCh0MCkpOworCisgIDo6c3RkOjp0cjE6
OnR1cGxlPGludD4gdDEoNSk7CisgIEVYUEVDVF9FUSgiKDUpIiwgUHJpbnQodDEpKTsKKworICA6
OnN0ZDo6dHIxOjp0dXBsZTxjaGFyLCBib29sPiB0MignYScsIHRydWUpOworICBFWFBFQ1RfRVEo
IignYScgKDk3LCAweDYxKSwgdHJ1ZSkiLCBQcmludCh0MikpOworCisgIDo6c3RkOjp0cjE6OnR1
cGxlPGJvb2wsIGludCwgaW50PiB0MyhmYWxzZSwgMiwgMyk7CisgIEVYUEVDVF9FUSgiKGZhbHNl
LCAyLCAzKSIsIFByaW50KHQzKSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBp
bnQsIGludD4gdDQoZmFsc2UsIDIsIDMsIDQpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywg
NCkiLCBQcmludCh0NCkpOworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludCwgaW50LCBp
bnQsIGJvb2w+IHQ1KGZhbHNlLCAyLCAzLCA0LCB0cnVlKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2Us
IDIsIDMsIDQsIHRydWUpIiwgUHJpbnQodDUpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxib29s
LCBpbnQsIGludCwgaW50LCBib29sLCBpbnQ+IHQ2KGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2KTsK
KyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYpIiwgUHJpbnQodDYpKTsKKwor
ICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGludD4g
dDcoCisgICAgICBmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNyk7CisgIEVYUEVDVF9FUSgiKGZh
bHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3KSIsIFByaW50KHQ3KSk7CisKKyAgOjpzdGQ6OnRyMTo6
dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGJvb2w+IHQ4KAorICAg
ICAgZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUpOworICBFWFBFQ1RfRVEoIihmYWxz
ZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSkiLCBQcmludCh0OCkpOworCisgIDo6c3RkOjp0
cjE6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBib29sLCBpbnQ+
IHQ5KAorICAgICAgZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUsIDkpOworICBFWFBF
Q1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSwgOSkiLCBQcmludCh0OSkp
OworCisgIGNvbnN0IGNoYXIqIGNvbnN0IHN0ciA9ICI4IjsKKyAgLy8gVkMrKyAyMDEwJ3MgaW1w
bGVtZW50YXRpb24gb2YgdHVwbGUgb2YgQysrMHggaXMgZGVmaWNpZW50LCByZXF1aXJpbmcKKyAg
Ly8gYW4gZXhwbGljaXQgdHlwZSBjYXN0IG9mIE5VTEwgdG8gYmUgdXNlZC4KKyAgOjpzdGQ6OnRy
MTo6dHVwbGU8Ym9vbCwgY2hhciwgc2hvcnQsIHRlc3Rpbmc6OmludGVybmFsOjpJbnQzMiwgIC8v
IE5PTElOVAorICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjppbnRlcm5hbDo6SW50NjQsIGZs
b2F0LCBkb3VibGUsIGNvbnN0IGNoYXIqLCB2b2lkKiwKKyAgICAgICAgICAgICAgICAgICAgc3Rk
OjpzdHJpbmc+CisgICAgICB0MTAoZmFsc2UsICdhJywgc3RhdGljX2Nhc3Q8c2hvcnQ+KDMpLCA0
LCA1LCAxLjVGLCAtMi41LCBzdHIsICAvLyBOT0xJTlQKKyAgICAgICAgICBJbXBsaWNpdENhc3Rf
PHZvaWQqPihOVUxMKSwgIjEwIik7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAnYScgKDk3LCAweDYx
KSwgMywgNCwgNSwgMS41LCAtMi41LCAiICsgUHJpbnRQb2ludGVyKHN0cikgKworICAgICAgICAg
ICAgIiBwb2ludGluZyB0byBcIjhcIiwgTlVMTCwgXCIxMFwiKSIsCisgICAgICAgICAgICBQcmlu
dCh0MTApKTsKK30KKworLy8gTmVzdGVkIHR1cGxlcy4KK1RFU1QoUHJpbnRUcjFUdXBsZVRlc3Qs
IE5lc3RlZFR1cGxlKSB7CisgIDo6c3RkOjp0cjE6OnR1cGxlPCA6OnN0ZDo6dHIxOjp0dXBsZTxp
bnQsIGJvb2w+LCBjaGFyPiBuZXN0ZWQoCisgICAgICA6OnN0ZDo6dHIxOjptYWtlX3R1cGxlKDUs
IHRydWUpLCAnYScpOworICBFWFBFQ1RfRVEoIigoNSwgdHJ1ZSksICdhJyAoOTcsIDB4NjEpKSIs
IFByaW50KG5lc3RlZCkpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUKKwor
I2lmIEdURVNUX0hBU19TVERfVFVQTEVfCisvLyBUZXN0cyBwcmludGluZyA6OnN0ZDo6dHVwbGVz
LgorCisvLyBUdXBsZXMgb2YgdmFyaW91cyBhcml0aWVzLgorVEVTVChQcmludFN0ZFR1cGxlVGVz
dCwgVmFyaW91c1NpemVzKSB7CisgIDo6c3RkOjp0dXBsZTw+IHQwOworICBFWFBFQ1RfRVEoIigp
IiwgUHJpbnQodDApKTsKKworICA6OnN0ZDo6dHVwbGU8aW50PiB0MSg1KTsKKyAgRVhQRUNUX0VR
KCIoNSkiLCBQcmludCh0MSkpOworCisgIDo6c3RkOjp0dXBsZTxjaGFyLCBib29sPiB0MignYScs
IHRydWUpOworICBFWFBFQ1RfRVEoIignYScgKDk3LCAweDYxKSwgdHJ1ZSkiLCBQcmludCh0Mikp
OworCisgIDo6c3RkOjp0dXBsZTxib29sLCBpbnQsIGludD4gdDMoZmFsc2UsIDIsIDMpOworICBF
WFBFQ1RfRVEoIihmYWxzZSwgMiwgMykiLCBQcmludCh0MykpOworCisgIDo6c3RkOjp0dXBsZTxi
b29sLCBpbnQsIGludCwgaW50PiB0NChmYWxzZSwgMiwgMywgNCk7CisgIEVYUEVDVF9FUSgiKGZh
bHNlLCAyLCAzLCA0KSIsIFByaW50KHQ0KSk7CisKKyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwg
aW50LCBpbnQsIGJvb2w+IHQ1KGZhbHNlLCAyLCAzLCA0LCB0cnVlKTsKKyAgRVhQRUNUX0VRKCIo
ZmFsc2UsIDIsIDMsIDQsIHRydWUpIiwgUHJpbnQodDUpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9v
bCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50PiB0NihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNik7
CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2KSIsIFByaW50KHQ2KSk7CisK
KyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50PiB0NygK
KyAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2Us
IDIsIDMsIDQsIHRydWUsIDYsIDcpIiwgUHJpbnQodDcpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9v
bCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGJvb2w+IHQ4KAorICAgICAgZmFsc2Us
IDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywg
NCwgdHJ1ZSwgNiwgNywgdHJ1ZSkiLCBQcmludCh0OCkpOworCisgIDo6c3RkOjp0dXBsZTxib29s
LCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgYm9vbCwgaW50PiB0OSgKKyAgICAgIGZh
bHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlLCA5KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2Us
IDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUsIDkpIiwgUHJpbnQodDkpKTsKKworICBjb25zdCBj
aGFyKiBjb25zdCBzdHIgPSAiOCI7CisgIC8vIFZDKysgMjAxMCdzIGltcGxlbWVudGF0aW9uIG9m
IHR1cGxlIG9mIEMrKzB4IGlzIGRlZmljaWVudCwgcmVxdWlyaW5nCisgIC8vIGFuIGV4cGxpY2l0
IHR5cGUgY2FzdCBvZiBOVUxMIHRvIGJlIHVzZWQuCisgIDo6c3RkOjp0dXBsZTxib29sLCBjaGFy
LCBzaG9ydCwgdGVzdGluZzo6aW50ZXJuYWw6OkludDMyLCAgLy8gTk9MSU5UCisgICAgICAgICAg
ICAgICB0ZXN0aW5nOjppbnRlcm5hbDo6SW50NjQsIGZsb2F0LCBkb3VibGUsIGNvbnN0IGNoYXIq
LCB2b2lkKiwKKyAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nPgorICAgICAgdDEwKGZhbHNlLCAn
YScsIHN0YXRpY19jYXN0PHNob3J0PigzKSwgNCwgNSwgMS41RiwgLTIuNSwgc3RyLCAgLy8gTk9M
SU5UCisgICAgICAgICAgSW1wbGljaXRDYXN0Xzx2b2lkKj4oTlVMTCksICIxMCIpOworICBFWFBF
Q1RfRVEoIihmYWxzZSwgJ2EnICg5NywgMHg2MSksIDMsIDQsIDUsIDEuNSwgLTIuNSwgIiArIFBy
aW50UG9pbnRlcihzdHIpICsKKyAgICAgICAgICAgICIgcG9pbnRpbmcgdG8gXCI4XCIsIE5VTEws
IFwiMTBcIikiLAorICAgICAgICAgICAgUHJpbnQodDEwKSk7Cit9CisKKy8vIE5lc3RlZCB0dXBs
ZXMuCitURVNUKFByaW50U3RkVHVwbGVUZXN0LCBOZXN0ZWRUdXBsZSkgeworICA6OnN0ZDo6dHVw
bGU8IDo6c3RkOjp0dXBsZTxpbnQsIGJvb2w+LCBjaGFyPiBuZXN0ZWQoCisgICAgICA6OnN0ZDo6
bWFrZV90dXBsZSg1LCB0cnVlKSwgJ2EnKTsKKyAgRVhQRUNUX0VRKCIoKDUsIHRydWUpLCAnYScg
KDk3LCAweDYxKSkiLCBQcmludChuZXN0ZWQpKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9MQU5H
X0NYWDExCisKKyNpZiBHVEVTVF9MQU5HX0NYWDExCitURVNUKFByaW50TnVsbHB0clQsIEJhc2lj
KSB7CisgIEVYUEVDVF9FUSgiKG51bGxwdHIpIiwgUHJpbnQobnVsbHB0cikpOworfQorI2VuZGlm
ICAvLyBHVEVTVF9MQU5HX0NYWDExCisKKy8vIFRlc3RzIHByaW50aW5nIHVzZXItZGVmaW5lZCB1
bnByaW50YWJsZSB0eXBlcy4KKworLy8gVW5wcmludGFibGUgdHlwZXMgaW4gdGhlIGdsb2JhbCBu
YW1lc3BhY2UuCitURVNUKFByaW50VW5wcmludGFibGVUeXBlVGVzdCwgSW5HbG9iYWxOYW1lc3Bh
Y2UpIHsKKyAgRVhQRUNUX0VRKCIxLWJ5dGUgb2JqZWN0IDwwMD4iLAorICAgICAgICAgICAgUHJp
bnQoVW5wcmludGFibGVUZW1wbGF0ZUluR2xvYmFsPGNoYXI+KCkpKTsKK30KKworLy8gVW5wcmlu
dGFibGUgdHlwZXMgaW4gYSB1c2VyIG5hbWVzcGFjZS4KK1RFU1QoUHJpbnRVbnByaW50YWJsZVR5
cGVUZXN0LCBJblVzZXJOYW1lc3BhY2UpIHsKKyAgRVhQRUNUX0VRKCIxNi1ieXRlIG9iamVjdCA8
RUYtMTIgMDAtMDAgMzQtQUIgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDA+IiwKKyAgICAg
ICAgICAgIFByaW50KDo6Zm9vOjpVbnByaW50YWJsZUluRm9vKCkpKTsKK30KKworLy8gVW5wcmlu
dGFibGUgdHlwZXMgYXJlIHRoYXQgdG9vIGJpZyB0byBiZSBwcmludGVkIGNvbXBsZXRlbHkuCisK
K3N0cnVjdCBCaWcgeworICBCaWcoKSB7IG1lbXNldChhcnJheSwgMCwgc2l6ZW9mKGFycmF5KSk7
IH0KKyAgY2hhciBhcnJheVsyNTddOworfTsKKworVEVTVChQcmludFVucHJpdGFibGVUeXBlVGVz
dCwgQmlnT2JqZWN0KSB7CisgIEVYUEVDVF9FUSgiMjU3LWJ5dGUgb2JqZWN0IDwwMC0wMCAwMC0w
MCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAiCisgICAgICAgICAgICAiMDAtMDAgMDAtMDAgMDAt
MDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgIgorICAgICAgICAg
ICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAw
IDAwLTAwICIKKyAgICAgICAgICAgICIwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0w
MCAuLi4gMDAtMDAgMDAtMDAgMDAtMDAgIgorICAgICAgICAgICAgIjAwLTAwIDAwLTAwIDAwLTAw
IDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwICIKKyAgICAgICAgICAg
ICIwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAw
MC0wMCAiCisgICAgICAgICAgICAiMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAg
MDAtMDAgMDAtMDAgMDA+IiwKKyAgICAgICAgICAgIFByaW50KEJpZygpKSk7Cit9CisKKy8vIFRl
c3RzIHByaW50aW5nIHVzZXItZGVmaW5lZCBzdHJlYW1hYmxlIHR5cGVzLgorCisvLyBTdHJlYW1h
YmxlIHR5cGVzIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgorVEVTVChQcmludFN0cmVhbWFibGVU
eXBlVGVzdCwgSW5HbG9iYWxOYW1lc3BhY2UpIHsKKyAgU3RyZWFtYWJsZUluR2xvYmFsIHg7Cisg
IEVYUEVDVF9FUSgiU3RyZWFtYWJsZUluR2xvYmFsIiwgUHJpbnQoeCkpOworICBFWFBFQ1RfRVEo
IlN0cmVhbWFibGVJbkdsb2JhbCoiLCBQcmludCgmeCkpOworfQorCisvLyBQcmludGFibGUgdGVt
cGxhdGUgdHlwZXMgaW4gYSB1c2VyIG5hbWVzcGFjZS4KK1RFU1QoUHJpbnRTdHJlYW1hYmxlVHlw
ZVRlc3QsIFRlbXBsYXRlVHlwZUluVXNlck5hbWVzcGFjZSkgeworICBFWFBFQ1RfRVEoIlN0cmVh
bWFibGVUZW1wbGF0ZUluRm9vOiAwIiwKKyAgICAgICAgICAgIFByaW50KDo6Zm9vOjpTdHJlYW1h
YmxlVGVtcGxhdGVJbkZvbzxpbnQ+KCkpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgYSB1c2Vy
LWRlZmluZWQgcmVjdXJzaXZlIGNvbnRhaW5lciB0eXBlIHRoYXQgaGFzIGEgPDwKKy8vIG9wZXJh
dG9yLgorVEVTVChQcmludFN0cmVhbWFibGVUeXBlVGVzdCwgUGF0aExpa2VJblVzZXJOYW1lc3Bh
Y2UpIHsKKyAgOjpmb286OlBhdGhMaWtlIHg7CisgIEVYUEVDVF9FUSgiU3RyZWFtYWJsZS1QYXRo
TGlrZSIsIFByaW50KHgpKTsKKyAgY29uc3QgOjpmb286OlBhdGhMaWtlIGN4OworICBFWFBFQ1Rf
RVEoIlN0cmVhbWFibGUtUGF0aExpa2UiLCBQcmludChjeCkpOworfQorCisvLyBUZXN0cyBwcmlu
dGluZyB1c2VyLWRlZmluZWQgdHlwZXMgdGhhdCBoYXZlIGEgUHJpbnRUbygpIGZ1bmN0aW9uLgor
VEVTVChQcmludFByaW50YWJsZVR5cGVUZXN0LCBJblVzZXJOYW1lc3BhY2UpIHsKKyAgRVhQRUNU
X0VRKCJQcmludGFibGVWaWFQcmludFRvOiAwIiwKKyAgICAgICAgICAgIFByaW50KDo6Zm9vOjpQ
cmludGFibGVWaWFQcmludFRvKCkpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgYSBwb2ludGVy
IHRvIGEgdXNlci1kZWZpbmVkIHR5cGUgdGhhdCBoYXMgYSA8PAorLy8gb3BlcmF0b3IgZm9yIGl0
cyBwb2ludGVyLgorVEVTVChQcmludFByaW50YWJsZVR5cGVUZXN0LCBQb2ludGVySW5Vc2VyTmFt
ZXNwYWNlKSB7CisgIDo6Zm9vOjpQb2ludGVyUHJpbnRhYmxlIHg7CisgIEVYUEVDVF9FUSgiUG9p
bnRlclByaW50YWJsZSoiLCBQcmludCgmeCkpOworfQorCisvLyBUZXN0cyBwcmludGluZyB1c2Vy
LWRlZmluZWQgY2xhc3MgdGVtcGxhdGUgdGhhdCBoYXZlIGEgUHJpbnRUbygpIGZ1bmN0aW9uLgor
VEVTVChQcmludFByaW50YWJsZVR5cGVUZXN0LCBUZW1wbGF0ZUluVXNlck5hbWVzcGFjZSkgewor
ICBFWFBFQ1RfRVEoIlByaW50YWJsZVZpYVByaW50VG9UZW1wbGF0ZTogNSIsCisgICAgICAgICAg
ICBQcmludCg6OmZvbzo6UHJpbnRhYmxlVmlhUHJpbnRUb1RlbXBsYXRlPGludD4oNSkpKTsKK30K
KworLy8gVGVzdHMgdGhhdCB0aGUgdW5pdmVyc2FsIHByaW50ZXIgcHJpbnRzIGJvdGggdGhlIGFk
ZHJlc3MgYW5kIHRoZQorLy8gdmFsdWUgb2YgYSByZWZlcmVuY2UuCitURVNUKFByaW50UmVmZXJl
bmNlVGVzdCwgUHJpbnRzQWRkcmVzc0FuZFZhbHVlKSB7CisgIGludCBuID0gNTsKKyAgRVhQRUNU
X0VRKCJAIiArIFByaW50UG9pbnRlcigmbikgKyAiIDUiLCBQcmludEJ5UmVmKG4pKTsKKworICBp
bnQgYVsyXVszXSA9IHsKKyAgICB7IDAsIDEsIDIgfSwKKyAgICB7IDMsIDQsIDUgfQorICB9Owor
ICBFWFBFQ1RfRVEoIkAiICsgUHJpbnRQb2ludGVyKGEpICsgIiB7IHsgMCwgMSwgMiB9LCB7IDMs
IDQsIDUgfSB9IiwKKyAgICAgICAgICAgIFByaW50QnlSZWYoYSkpOworCisgIGNvbnN0IDo6Zm9v
OjpVbnByaW50YWJsZUluRm9vIHg7CisgIEVYUEVDVF9FUSgiQCIgKyBQcmludFBvaW50ZXIoJngp
ICsgIiAxNi1ieXRlIG9iamVjdCAiCisgICAgICAgICAgICAiPEVGLTEyIDAwLTAwIDM0LUFCIDAw
LTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwPiIsCisgICAgICAgICAgICBQcmludEJ5UmVmKHgp
KTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgdW5pdmVyc2FsIHByaW50ZXIgcHJpbnRzIGEgZnVu
Y3Rpb24gcG9pbnRlciBwYXNzZWQgYnkKKy8vIHJlZmVyZW5jZS4KK1RFU1QoUHJpbnRSZWZlcmVu
Y2VUZXN0LCBIYW5kbGVzRnVuY3Rpb25Qb2ludGVyKSB7CisgIHZvaWQgKCpmcCkoaW50IG4pID0g
Jk15RnVuY3Rpb247CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZwX3BvaW50ZXJfc3RyaW5nID0KKyAg
ICAgIFByaW50UG9pbnRlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigmZnApKTsKKyAg
Ly8gV2UgY2Fubm90IGRpcmVjdGx5IGNhc3QgJk15RnVuY3Rpb24gdG8gY29uc3Qgdm9pZCogYmVj
YXVzZSB0aGUKKyAgLy8gc3RhbmRhcmQgZGlzYWxsb3dzIGNhc3RpbmcgYmV0d2VlbiBwb2ludGVy
cyB0byBmdW5jdGlvbnMgYW5kCisgIC8vIHBvaW50ZXJzIHRvIG9iamVjdHMsIGFuZCBzb21lIGNv
bXBpbGVycyAoZS5nLiBHQ0MgMy40KSBlbmZvcmNlCisgIC8vIHRoaXMgbGltaXRhdGlvbi4KKyAg
Y29uc3Qgc3RkOjpzdHJpbmcgZnBfc3RyaW5nID0gUHJpbnRQb2ludGVyKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgdm9pZCo+KAorICAgICAgcmVpbnRlcnByZXRfY2FzdDxpbnRlcm5hbDo6QmlnZ2Vz
dEludD4oZnApKSk7CisgIEVYUEVDVF9FUSgiQCIgKyBmcF9wb2ludGVyX3N0cmluZyArICIgIiAr
IGZwX3N0cmluZywKKyAgICAgICAgICAgIFByaW50QnlSZWYoZnApKTsKK30KKworLy8gVGVzdHMg
dGhhdCB0aGUgdW5pdmVyc2FsIHByaW50ZXIgcHJpbnRzIGEgbWVtYmVyIGZ1bmN0aW9uIHBvaW50
ZXIKKy8vIHBhc3NlZCBieSByZWZlcmVuY2UuCitURVNUKFByaW50UmVmZXJlbmNlVGVzdCwgSGFu
ZGxlc01lbWJlckZ1bmN0aW9uUG9pbnRlcikgeworICBpbnQgKEZvbzo6KnApKGNoYXIgY2gpID0g
JkZvbzo6TXlNZXRob2Q7CisgIEVYUEVDVF9UUlVFKEhhc1ByZWZpeCgKKyAgICAgIFByaW50QnlS
ZWYocCksCisgICAgICAiQCIgKyBQcmludFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2
b2lkKj4oJnApKSArICIgIiArCisgICAgICAgICAgUHJpbnQoc2l6ZW9mKHApKSArICItYnl0ZSBv
YmplY3QgIikpOworCisgIGNoYXIgKEZvbzo6KnAyKShpbnQgbikgPSAmRm9vOjpNeVZpcnR1YWxN
ZXRob2Q7CisgIEVYUEVDVF9UUlVFKEhhc1ByZWZpeCgKKyAgICAgIFByaW50QnlSZWYocDIpLAor
ICAgICAgIkAiICsgUHJpbnRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KCZw
MikpICsgIiAiICsKKyAgICAgICAgICBQcmludChzaXplb2YocDIpKSArICItYnl0ZSBvYmplY3Qg
IikpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSB1bml2ZXJzYWwgcHJpbnRlciBwcmludHMgYSBt
ZW1iZXIgdmFyaWFibGUgcG9pbnRlcgorLy8gcGFzc2VkIGJ5IHJlZmVyZW5jZS4KK1RFU1QoUHJp
bnRSZWZlcmVuY2VUZXN0LCBIYW5kbGVzTWVtYmVyVmFyaWFibGVQb2ludGVyKSB7CisgIGludCBG
b286OipwID0gJkZvbzo6dmFsdWU7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4
KAorICAgICAgUHJpbnRCeVJlZihwKSwKKyAgICAgICJAIiArIFByaW50UG9pbnRlcigmcCkgKyAi
ICIgKyBQcmludChzaXplb2YocCkpICsgIi1ieXRlIG9iamVjdCAiKSk7Cit9CisKKy8vIFRlc3Rz
IHRoYXQgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKCksIHdoaWNoIGlzIHVzZWQg
dG8gcHJpbnQKKy8vIGFuIG9wZXJhbmQgaW4gYSBjb21wYXJpc29uIGFzc2VydGlvbiAoZS5nLiBB
U1NFUlRfRVEpIHdoZW4gdGhlIGFzc2VydGlvbgorLy8gZmFpbHMsIGZvcm1hdHMgdGhlIG9wZXJh
bmQgaW4gdGhlIGRlc2lyZWQgd2F5LgorCisvLyBzY2FsYXIKK1RFU1QoRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JTY2FsYXIpIHsKKyAgRVhQRUNUX1NUUkVR
KCIxMjMiLAorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdl
KDEyMywgMTI0KS5jX3N0cigpKTsKK30KKworLy8gbm9uLWNoYXIgcG9pbnRlcgorVEVTVChGb3Jt
YXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0Zvck5vbkNoYXJQb2ludGVy
KSB7CisgIGludCBuID0gMDsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcigmbiksCisgICAgICAg
ICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoJm4sICZuKS5jX3N0cigpKTsK
K30KKworLy8gbm9uLWNoYXIgYXJyYXkKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVN
ZXNzYWdlVGVzdCwgRm9ybWF0c05vbkNoYXJBcnJheUFzUG9pbnRlcikgeworICAvLyBJbiBleHBy
ZXNzaW9uICdhcnJheSA9PSB4JywgJ2FycmF5JyBpcyBjb21wYXJlZCBieSBwb2ludGVyLgorICAv
LyBUaGVyZWZvcmUgd2Ugd2FudCB0byBwcmludCBhbiBhcnJheSBvcGVyYW5kIGFzIGEgcG9pbnRl
ci4KKyAgaW50IG5bXSA9IHsgMSwgMiwgMyB9OworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKG4p
LAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKG4sIG4pLmNf
c3RyKCkpOworfQorCisvLyBUZXN0cyBmb3JtYXR0aW5nIGEgY2hhciBwb2ludGVyIHdoZW4gaXQn
cyBjb21wYXJlZCB3aXRoIGFub3RoZXIgcG9pbnRlci4KKy8vIEluIHRoaXMgY2FzZSB3ZSB3YW50
IHRvIHByaW50IGl0IGFzIGEgcmF3IHBvaW50ZXIsIGFzIHRoZSBjb21wYXJpc29uIGlzIGJ5Cisv
LyBwb2ludGVyLgorCisvLyBjaGFyIHBvaW50ZXIgdnMgcG9pbnRlcgorVEVTVChGb3JtYXRGb3JD
b21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJQb2ludGVyVnNQb2ludGVy
KSB7CisgIC8vIEluIGV4cHJlc3Npb24gJ3AgPT0geCcsIHdoZXJlICdwJyBhbmQgJ3gnIGFyZSAo
Y29uc3Qgb3Igbm90KSBjaGFyCisgIC8vIHBvaW50ZXJzLCB0aGUgb3BlcmFuZHMgYXJlIGNvbXBh
cmVkIGJ5IHBvaW50ZXIuICBUaGVyZWZvcmUgd2UKKyAgLy8gd2FudCB0byBwcmludCAncCcgYXMg
YSBwb2ludGVyIGluc3RlYWQgb2YgYSBDIHN0cmluZyAod2UgZG9uJ3QKKyAgLy8gZXZlbiBrbm93
IGlmIGl0J3Mgc3VwcG9zZWQgdG8gcG9pbnQgdG8gYSB2YWxpZCBDIHN0cmluZykuCisKKyAgLy8g
Y29uc3QgY2hhcioKKyAgY29uc3QgY2hhciogcyA9ICJoZWxsbyI7CisgIEVYUEVDVF9FUShQcmlu
dFBvaW50ZXIocyksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2UocywgcykuY19zdHIoKSk7CisKKyAgLy8gY2hhcioKKyAgY2hhciBjaCA9ICdhJzsKKyAgRVhQ
RUNUX0VRKFByaW50UG9pbnRlcigmY2gpLAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNv
bkZhaWx1cmVNZXNzYWdlKCZjaCwgJmNoKS5jX3N0cigpKTsKK30KKworLy8gd2NoYXJfdCBwb2lu
dGVyIHZzIHBvaW50ZXIKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVz
dCwgV29ya3NGb3JXQ2hhclBvaW50ZXJWc1BvaW50ZXIpIHsKKyAgLy8gSW4gZXhwcmVzc2lvbiAn
cCA9PSB4Jywgd2hlcmUgJ3AnIGFuZCAneCcgYXJlIChjb25zdCBvciBub3QpIGNoYXIKKyAgLy8g
cG9pbnRlcnMsIHRoZSBvcGVyYW5kcyBhcmUgY29tcGFyZWQgYnkgcG9pbnRlci4gIFRoZXJlZm9y
ZSB3ZQorICAvLyB3YW50IHRvIHByaW50ICdwJyBhcyBhIHBvaW50ZXIgaW5zdGVhZCBvZiBhIHdp
ZGUgQyBzdHJpbmcgKHdlIGRvbid0CisgIC8vIGV2ZW4ga25vdyBpZiBpdCdzIHN1cHBvc2VkIHRv
IHBvaW50IHRvIGEgdmFsaWQgd2lkZSBDIHN0cmluZykuCisKKyAgLy8gY29uc3Qgd2NoYXJfdCoK
KyAgY29uc3Qgd2NoYXJfdCogcyA9IEwiaGVsbG8iOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVy
KHMpLAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHMsIHMp
LmNfc3RyKCkpOworCisgIC8vIHdjaGFyX3QqCisgIHdjaGFyX3QgY2ggPSBMJ2EnOworICBFWFBF
Q1RfRVEoUHJpbnRQb2ludGVyKCZjaCksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29u
RmFpbHVyZU1lc3NhZ2UoJmNoLCAmY2gpLmNfc3RyKCkpOworfQorCisvLyBUZXN0cyBmb3JtYXR0
aW5nIGEgY2hhciBwb2ludGVyIHdoZW4gaXQncyBjb21wYXJlZCB0byBhIHN0cmluZyBvYmplY3Qu
CisvLyBJbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBwcmludCB0aGUgY2hhciBwb2ludGVyIGFzIGEg
QyBzdHJpbmcuCisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworLy8gY2hhciBwb2ludGVy
IHZzIDo6c3RyaW5nCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3Qs
IFdvcmtzRm9yQ2hhclBvaW50ZXJWc1N0cmluZykgeworICBjb25zdCBjaGFyKiBzID0gImhlbGxv
IFwid29ybGQiOworICBFWFBFQ1RfU1RSRVEoIlwiaGVsbG8gXFxcIndvcmxkXCIiLCAgLy8gVGhl
IHN0cmluZyBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0
Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHMsIDo6c3RyaW5nKCkpLmNfc3RyKCkpOworCisg
IC8vIGNoYXIqCisgIGNoYXIgc3RyW10gPSAiaGlcMSI7CisgIGNoYXIqIHAgPSBzdHI7CisgIEVY
UEVDVF9TVFJFUSgiXCJoaVxceDFcIiIsICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJl
IGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2UocCwgOjpzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisjZW5kaWYKKworLy8gY2hhciBwb2ludGVy
IHZzIHN0ZDo6c3RyaW5nCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRl
c3QsIFdvcmtzRm9yQ2hhclBvaW50ZXJWc1N0ZFN0cmluZykgeworICBjb25zdCBjaGFyKiBzID0g
ImhlbGxvIFwid29ybGQiOworICBFWFBFQ1RfU1RSRVEoIlwiaGVsbG8gXFxcIndvcmxkXCIiLCAg
Ly8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAg
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHMsIDo6c3RkOjpzdHJpbmcoKSkuY19z
dHIoKSk7CisKKyAgLy8gY2hhcioKKyAgY2hhciBzdHJbXSA9ICJoaVwxIjsKKyAgY2hhciogcCA9
IHN0cjsKKyAgRVhQRUNUX1NUUkVRKCJcImhpXFx4MVwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVu
dCBzaG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZShwLCA6OnN0ZDo6c3RyaW5nKCkpLmNfc3RyKCkpOworfQorCisjaWYgR1RF
U1RfSEFTX0dMT0JBTF9XU1RSSU5HCisvLyB3Y2hhcl90IHBvaW50ZXIgdnMgOjp3c3RyaW5nCitU
RVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJQ
b2ludGVyVnNXU3RyaW5nKSB7CisgIGNvbnN0IHdjaGFyX3QqIHMgPSBMImhpIFwid29ybGQiOwor
ICBFWFBFQ1RfU1RSRVEoIkxcImhpIFxcXCJ3b3JsZFwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVu
dCBzaG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZShzLCA6OndzdHJpbmcoKSkuY19zdHIoKSk7CisKKyAgLy8gd2NoYXJfdCoK
KyAgd2NoYXJfdCBzdHJbXSA9IEwiaGlcMSI7CisgIHdjaGFyX3QqIHAgPSBzdHI7CisgIEVYUEVD
VF9TVFJFUSgiTFwiaGlcXHgxXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBiZSBl
c2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdl
KHAsIDo6d3N0cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX1NU
RF9XU1RSSU5HCisvLyB3Y2hhcl90IHBvaW50ZXIgdnMgc3RkOjp3c3RyaW5nCitURVNUKEZvcm1h
dEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJQb2ludGVyVnNT
dGRXU3RyaW5nKSB7CisgIGNvbnN0IHdjaGFyX3QqIHMgPSBMImhpIFwid29ybGQiOworICBFWFBF
Q1RfU1RSRVEoIkxcImhpIFxcXCJ3b3JsZFwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91
bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJl
TWVzc2FnZShzLCA6OnN0ZDo6d3N0cmluZygpKS5jX3N0cigpKTsKKworICAvLyB3Y2hhcl90Kgor
ICB3Y2hhcl90IHN0cltdID0gTCJoaVwxIjsKKyAgd2NoYXJfdCogcCA9IHN0cjsKKyAgRVhQRUNU
X1NUUkVRKCJMXCJoaVxceDFcIiIsICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVz
Y2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uo
cCwgOjpzdGQ6OndzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisjZW5kaWYKKworLy8gVGVzdHMgZm9y
bWF0dGluZyBhIGNoYXIgYXJyYXkgd2hlbiBpdCdzIGNvbXBhcmVkIHdpdGggYSBwb2ludGVyIG9y
IGFycmF5LgorLy8gSW4gdGhpcyBjYXNlIHdlIHdhbnQgdG8gcHJpbnQgdGhlIGFycmF5IGFzIGEg
cm93IHBvaW50ZXIsIGFzIHRoZSBjb21wYXJpc29uCisvLyBpcyBieSBwb2ludGVyLgorCisvLyBj
aGFyIGFycmF5IHZzIHBvaW50ZXIKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNz
YWdlVGVzdCwgV29ya3NGb3JDaGFyQXJyYXlWc1BvaW50ZXIpIHsKKyAgY2hhciBzdHJbXSA9ICJo
aSBcIndvcmxkXCIiOworICBjaGFyKiBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRl
cihzdHIpLAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0
ciwgcCkuY19zdHIoKSk7Cit9CisKKy8vIGNoYXIgYXJyYXkgdnMgY2hhciBhcnJheQorVEVTVChG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVZz
Q2hhckFycmF5KSB7CisgIGNvbnN0IGNoYXIgc3RyW10gPSAiaGkgXCJ3b3JsZFwiIjsKKyAgRVhQ
RUNUX0VRKFByaW50UG9pbnRlcihzdHIpLAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNv
bkZhaWx1cmVNZXNzYWdlKHN0ciwgc3RyKS5jX3N0cigpKTsKK30KKworLy8gd2NoYXJfdCBhcnJh
eSB2cyBwb2ludGVyCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3Qs
IFdvcmtzRm9yV0NoYXJBcnJheVZzUG9pbnRlcikgeworICB3Y2hhcl90IHN0cltdID0gTCJoaSBc
IndvcmxkXCIiOworICB3Y2hhcl90KiBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRl
cihzdHIpLAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0
ciwgcCkuY19zdHIoKSk7Cit9CisKKy8vIHdjaGFyX3QgYXJyYXkgdnMgd2NoYXJfdCBhcnJheQor
VEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvcldDaGFy
QXJyYXlWc1dDaGFyQXJyYXkpIHsKKyAgY29uc3Qgd2NoYXJfdCBzdHJbXSA9IEwiaGkgXCJ3b3Js
ZFwiIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihzdHIpLAorICAgICAgICAgICAgRm9ybWF0
Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgc3RyKS5jX3N0cigpKTsKK30KKworLy8g
VGVzdHMgZm9ybWF0dGluZyBhIGNoYXIgYXJyYXkgd2hlbiBpdCdzIGNvbXBhcmVkIHdpdGggYSBz
dHJpbmcgb2JqZWN0LgorLy8gSW4gdGhpcyBjYXNlIHdlIHdhbnQgdG8gcHJpbnQgdGhlIGFycmF5
IGFzIGEgQyBzdHJpbmcuCisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworLy8gY2hhciBh
cnJheSB2cyBzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVz
dCwgV29ya3NGb3JDaGFyQXJyYXlWc1N0cmluZykgeworICBjb25zdCBjaGFyIHN0cltdID0gImhp
IFwid1wwcmxkXCIiOworICBFWFBFQ1RfU1RSRVEoIlwiaGkgXFxcIndcIiIsICAvLyBUaGUgY29u
dGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gRW1iZWRkZWQgTlVMIHRlcm1pbmF0ZXMgdGhlIHN0cmluZy4KKyAgICAgICAgICAgICAgIEZv
cm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzdHIsIDo6c3RyaW5nKCkpLmNfc3RyKCkp
OworfQorI2VuZGlmCisKKy8vIGNoYXIgYXJyYXkgdnMgc3RkOjpzdHJpbmcKK1RFU1QoRm9ybWF0
Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JDaGFyQXJyYXlWc1N0ZFN0
cmluZykgeworICBjb25zdCBjaGFyIHN0cltdID0gImhpIFwid29ybGRcIiI7CisgIEVYUEVDVF9T
VFJFUSgiXCJoaSBcXFwid29ybGRcXFwiXCIiLCAgLy8gVGhlIGNvbnRlbnQgc2hvdWxkIGJlIGVz
Y2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uo
c3RyLCA6OnN0ZDo6c3RyaW5nKCkpLmNfc3RyKCkpOworfQorCisjaWYgR1RFU1RfSEFTX0dMT0JB
TF9XU1RSSU5HCisvLyB3Y2hhcl90IGFycmF5IHZzIHdzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29t
cGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhckFycmF5VnNXU3RyaW5nKSB7
CisgIGNvbnN0IHdjaGFyX3Qgc3RyW10gPSBMImhpIFwid29ybGRcIiI7CisgIEVYUEVDVF9TVFJF
USgiTFwiaGkgXFxcIndvcmxkXFxcIlwiIiwgIC8vIFRoZSBjb250ZW50IHNob3VsZCBiZSBlc2Nh
cGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0
ciwgOjp3c3RyaW5nKCkpLmNfc3RyKCkpOworfQorI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfU1RE
X1dTVFJJTkcKKy8vIHdjaGFyX3QgYXJyYXkgdnMgc3RkOjp3c3RyaW5nCitURVNUKEZvcm1hdEZv
ckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJBcnJheVZzU3RkV1N0
cmluZykgeworICBjb25zdCB3Y2hhcl90IHN0cltdID0gTCJoaSBcIndcMHJsZFwiIjsKKyAgRVhQ
RUNUX1NUUkVRKAorICAgICAgIkxcImhpIFxcXCJ3XCIiLCAgLy8gVGhlIGNvbnRlbnQgc2hvdWxk
IGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBFbWJlZGRlZCBOVUwgdGVy
bWluYXRlcyB0aGUgc3RyaW5nLgorICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNz
YWdlKHN0ciwgOjpzdGQ6OndzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisjZW5kaWYKKworLy8gVXNl
ZnVsIGZvciB0ZXN0aW5nIFByaW50VG9TdHJpbmcoKS4gIFdlIGNhbm5vdCB1c2UgRVhQRUNUX0VR
KCkKKy8vIHRoZXJlIGFzIGl0cyBpbXBsZW1lbnRhdGlvbiB1c2VzIFByaW50VG9TdHJpbmcoKS4g
IFRoZSBjYWxsZXIgbXVzdAorLy8gZW5zdXJlIHRoYXQgJ3ZhbHVlJyBoYXMgbm8gc2lkZSBlZmZl
Y3QuCisjZGVmaW5lIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKHZhbHVlLCBleHBlY3RlZF9zdHJp
bmcpICAgICAgICAgXAorICBFWFBFQ1RfVFJVRShQcmludFRvU3RyaW5nKHZhbHVlKSA9PSAoZXhw
ZWN0ZWRfc3RyaW5nKSkgICAgICAgIFwKKyAgICAgIDw8ICIgd2hlcmUgIiAjdmFsdWUgIiBwcmlu
dHMgYXMgIiA8PCAoUHJpbnRUb1N0cmluZyh2YWx1ZSkpCisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rl
c3QsIFdvcmtzRm9yU2NhbGFyKSB7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKDEyMywgIjEy
MyIpOworfQorCitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvclBvaW50ZXJUb0NvbnN0
Q2hhcikgeworICBjb25zdCBjaGFyKiBwID0gImhlbGxvIjsKKyAgRVhQRUNUX1BSSU5UX1RPX1NU
UklOR18ocCwgIlwiaGVsbG9cIiIpOworfQorCitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBXb3Jr
c0ZvclBvaW50ZXJUb05vbkNvbnN0Q2hhcikgeworICBjaGFyIHNbXSA9ICJoZWxsbyI7CisgIGNo
YXIqIHAgPSBzOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhwLCAiXCJoZWxsb1wiIik7Cit9
CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIEVzY2FwZXNGb3JQb2ludGVyVG9Db25zdENoYXIp
IHsKKyAgY29uc3QgY2hhciogcCA9ICJoZWxsb1xuIjsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklO
R18ocCwgIlwiaGVsbG9cXG5cIiIpOworfQorCitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBFc2Nh
cGVzRm9yUG9pbnRlclRvTm9uQ29uc3RDaGFyKSB7CisgIGNoYXIgc1tdID0gImhlbGxvXDEiOwor
ICBjaGFyKiBwID0gczsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18ocCwgIlwiaGVsbG9cXHgx
XCIiKTsKK30KKworVEVTVChQcmludFRvU3RyaW5nVGVzdCwgV29ya3NGb3JBcnJheSkgeworICBp
bnQgblszXSA9IHsgMSwgMiwgMyB9OworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhuLCAieyAx
LCAyLCAzIH0iKTsKK30KKworVEVTVChQcmludFRvU3RyaW5nVGVzdCwgV29ya3NGb3JDaGFyQXJy
YXkpIHsKKyAgY2hhciBzW10gPSAiaGVsbG8iOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhz
LCAiXCJoZWxsb1wiIik7Cit9CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIFdvcmtzRm9yQ2hh
ckFycmF5V2l0aEVtYmVkZGVkTnVsKSB7CisgIGNvbnN0IGNoYXIgc3RyX3dpdGhfbnVsW10gPSAi
aGVsbG9cMCB3b3JsZCI7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKHN0cl93aXRoX251bCwg
IlwiaGVsbG9cXDAgd29ybGRcIiIpOworCisgIGNoYXIgbXV0YWJsZV9zdHJfd2l0aF9udWxbXSA9
ICJoZWxsb1wwIHdvcmxkIjsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18obXV0YWJsZV9zdHJf
d2l0aF9udWwsICJcImhlbGxvXFwwIHdvcmxkXCIiKTsKK30KKworICBURVNUKFByaW50VG9TdHJp
bmdUZXN0LCBDb250YWluc05vbkxhdGluKSB7CisgIC8vIFNhbml0eSB0ZXN0IHdpdGggdmFsaWQg
VVRGLTguIFByaW50cyBib3RoIGluIGhleCBhbmQgYXMgdGV4dC4KKyAgc3RkOjpzdHJpbmcgbm9u
X2FzY2lpX3N0ciA9IDo6c3RkOjpzdHJpbmcoIuyYpOyghCA0OjMwIik7CisgIEVYUEVDVF9QUklO
VF9UT19TVFJJTkdfKG5vbl9hc2NpaV9zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJc
IlxceEVDXFx4OThcXHhBNFxceEVDXFx4QTBcXHg4NCA0OjMwXCJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiAgICBBcyBUZXh0OiBcIuyYpOyghCA0OjMwXCIiKTsKKyAgbm9uX2FzY2lp
X3N0ciA9IDo6c3RkOjpzdHJpbmcoIkZyb20gw6Qg4oCUIOG6kSIpOworICBFWFBFQ1RfUFJJTlRf
VE9fU1RSSU5HXyhub25fYXNjaWlfc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiXCJG
cm9tIFxceEMzXFx4QTQgXFx4RTJcXHg4MFxceDk0IFxceEUxXFx4QkFcXHg5MVwiIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiXG4gICAgQXMgVGV4dDogXCJGcm9tIMOkIOKAlCDhupFcIiIp
OworfQorCitURVNUKElzVmFsaWRVVEY4VGVzdCwgSWxsRm9ybWVkVVRGOCkgeworICAvLyBUaGUg
Zm9sbG93aW5nIHRlc3Qgc3RyaW5ncyBhcmUgaWxsLWZvcm1lZCBVVEYtOCBhbmQgYXJlIHByaW50
ZWQKKyAgLy8gYXMgaGV4IG9ubHkgKG9yIEFTQ0lJLCBpbiBjYXNlIG9mIEFTQ0lJIGJ5dGVzKSBi
ZWNhdXNlIElzVmFsaWRVVEY4KCkgaXMKKyAgLy8gZXhwZWN0ZWQgdG8gZmFpbCwgdGh1cyBvdXRw
dXQgZG9lcyBub3QgY29udGFpbiAiQXMgVGV4dDoiLgorCisgIHN0YXRpYyBjb25zdCBjaGFyICpj
b25zdCBrVGVzdGRhdGFbXVsyXSA9IHsKKyAgICAvLyAyLWJ5dGUgbGVhZCBieXRlIGZvbGxvd2Vk
IGJ5IGEgc2luZ2xlLWJ5dGUgY2hhcmFjdGVyLgorICAgIHsiXHhDM1x4NzQiLCAiXCJcXHhDM3Rc
IiJ9LAorICAgIC8vIFZhbGlkIDItYnl0ZSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkgYW4gb3JwaGFu
IHRyYWlsIGJ5dGUuCisgICAgeyJceEMzXHg4NFx4QTQiLCAiXCJcXHhDM1xceDg0XFx4QTRcIiJ9
LAorICAgIC8vIExlYWQgYnl0ZSB3aXRob3V0IHRyYWlsIGJ5dGUuCisgICAgeyJhYmNceEMzIiwg
IlwiYWJjXFx4QzNcIiJ9LAorICAgIC8vIDMtYnl0ZSBsZWFkIGJ5dGUsIHNpbmdsZS1ieXRlIGNo
YXJhY3Rlciwgb3JwaGFuIHRyYWlsIGJ5dGUuCisgICAgeyJ4XHhFMlx4NzBceDk0IiwgIlwieFxc
eEUycFxceDk0XCIifSwKKyAgICAvLyBUcnVuY2F0ZWQgMy1ieXRlIGNoYXJhY3Rlci4KKyAgICB7
Ilx4RTJceDgwIiwgIlwiXFx4RTJcXHg4MFwiIn0sCisgICAgLy8gVHJ1bmNhdGVkIDMtYnl0ZSBj
aGFyYWN0ZXIgZm9sbG93ZWQgYnkgdmFsaWQgMi1ieXRlIGNoYXIuCisgICAgeyJceEUyXHg4MFx4
QzNceDg0IiwgIlwiXFx4RTJcXHg4MFxceEMzXFx4ODRcIiJ9LAorICAgIC8vIFRydW5jYXRlZCAz
LWJ5dGUgY2hhcmFjdGVyIGZvbGxvd2VkIGJ5IGEgc2luZ2xlLWJ5dGUgY2hhcmFjdGVyLgorICAg
IHsiXHhFMlx4ODBceDdBIiwgIlwiXFx4RTJcXHg4MHpcIiJ9LAorICAgIC8vIDMtYnl0ZSBsZWFk
IGJ5dGUgZm9sbG93ZWQgYnkgdmFsaWQgMy1ieXRlIGNoYXJhY3Rlci4KKyAgICB7Ilx4RTJceEUy
XHg4MFx4OTQiLCAiXCJcXHhFMlxceEUyXFx4ODBcXHg5NFwiIn0sCisgICAgLy8gNC1ieXRlIGxl
YWQgYnl0ZSBmb2xsb3dlZCBieSB2YWxpZCAzLWJ5dGUgY2hhcmFjdGVyLgorICAgIHsiXHhGMFx4
RTJceDgwXHg5NCIsICJcIlxceEYwXFx4RTJcXHg4MFxceDk0XCIifSwKKyAgICAvLyBUcnVuY2F0
ZWQgNC1ieXRlIGNoYXJhY3Rlci4KKyAgICB7Ilx4RjBceEUyXHg4MCIsICJcIlxceEYwXFx4RTJc
XHg4MFwiIn0sCisgICAgIC8vIEludmFsaWQgVVRGLTggYnl0ZSBzZXF1ZW5jZXMgZW1iZWRkZWQg
aW4gb3RoZXIgY2hhcnMuCisgICAgeyJhYmNceEUyXHg4MFx4OTRceEMzXHg3NHh5YyIsICJcImFi
Y1xceEUyXFx4ODBcXHg5NFxceEMzdHh5Y1wiIn0sCisgICAgeyJhYmNceEMzXHg4NFx4RTJceDgw
XHhDM1x4ODR4eXoiLAorICAgICAiXCJhYmNcXHhDM1xceDg0XFx4RTJcXHg4MFxceEMzXFx4ODR4
eXpcIiJ9LAorICAgIC8vIE5vbi1zaG9ydGVzdCBVVEYtOCBieXRlIHNlcXVlbmNlcyBhcmUgYWxz
byBpbGwtZm9ybWVkLgorICAgIC8vIFRoZSBjbGFzc2ljczogeEMwLCB4QzEgbGVhZCBieXRlLgor
ICAgIHsiXHhDMFx4ODAiLCAiXCJcXHhDMFxceDgwXCIifSwKKyAgICB7Ilx4QzFceDgxIiwgIlwi
XFx4QzFcXHg4MVwiIn0sCisgICAgLy8gTm9uLXNob3J0ZXN0IHNlcXVlbmNlcy4KKyAgICB7Ilx4
RTBceDgwXHg4MCIsICJcIlxceEUwXFx4ODBcXHg4MFwiIn0sCisgICAgeyJceGYwXHg4MFx4ODBc
eDgwIiwgIlwiXFx4RjBcXHg4MFxceDgwXFx4ODBcIiJ9LAorICAgIC8vIExhc3QgdmFsaWQgY29k
ZSBwb2ludCBiZWZvcmUgc3Vycm9nYXRlIHJhbmdlLCBzaG91bGQgYmUgcHJpbnRlZCBhcyB0ZXh0
LAorICAgIC8vIHRvby4KKyAgICB7Ilx4RURceDlGXHhCRiIsICJcIlxceEVEXFx4OUZcXHhCRlwi
XG4gICAgQXMgVGV4dDogXCLtn79cIiJ9LAorICAgIC8vIFN0YXJ0IG9mIHN1cnJvZ2F0ZSBsZWFk
LiBTdXJyb2dhdGVzIGFyZSBub3QgcHJpbnRlZCBhcyB0ZXh0LgorICAgIHsiXHhFRFx4QTBceDgw
IiwgIlwiXFx4RURcXHhBMFxceDgwXCIifSwKKyAgICAvLyBMYXN0IG5vbi1wcml2YXRlIHN1cnJv
Z2F0ZSBsZWFkLgorICAgIHsiXHhFRFx4QURceEJGIiwgIlwiXFx4RURcXHhBRFxceEJGXCIifSwK
KyAgICAvLyBGaXJzdCBwcml2YXRlLXVzZSBzdXJyb2dhdGUgbGVhZC4KKyAgICB7Ilx4RURceEFF
XHg4MCIsICJcIlxceEVEXFx4QUVcXHg4MFwiIn0sCisgICAgLy8gTGFzdCBwcml2YXRlLXVzZSBz
dXJyb2dhdGUgbGVhZC4KKyAgICB7Ilx4RURceEFGXHhCRiIsICJcIlxceEVEXFx4QUZcXHhCRlwi
In0sCisgICAgLy8gTWlkLXBvaW50IG9mIHN1cnJvZ2F0ZSB0cmFpbC4KKyAgICB7Ilx4RURceEIz
XHhCRiIsICJcIlxceEVEXFx4QjNcXHhCRlwiIn0sCisgICAgLy8gRmlyc3QgdmFsaWQgY29kZSBw
b2ludCBhZnRlciBzdXJyb2dhdGUgcmFuZ2UsIHNob3VsZCBiZSBwcmludGVkIGFzIHRleHQsCisg
ICAgLy8gdG9vLgorICAgIHsiXHhFRVx4ODBceDgwIiwgIlwiXFx4RUVcXHg4MFxceDgwXCJcbiAg
ICBBcyBUZXh0OiBcIu6AgFwiIn0KKyAgfTsKKworICBmb3IgKGludCBpID0gMDsgaSA8IGludChz
aXplb2Yoa1Rlc3RkYXRhKS9zaXplb2Yoa1Rlc3RkYXRhWzBdKSk7ICsraSkgeworICAgIEVYUEVD
VF9QUklOVF9UT19TVFJJTkdfKGtUZXN0ZGF0YVtpXVswXSwga1Rlc3RkYXRhW2ldWzFdKTsKKyAg
fQorfQorCisjdW5kZWYgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18KKworVEVTVChVbml2ZXJzYWxU
ZXJzZVByaW50VGVzdCwgV29ya3NGb3JOb25SZWZlcmVuY2UpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0
cmVhbSBzczsKKyAgVW5pdmVyc2FsVGVyc2VQcmludCgxMjMsICZzcyk7CisgIEVYUEVDVF9FUSgi
MTIzIiwgc3Muc3RyKCkpOworfQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUZXN0LCBXb3Jr
c0ZvclJlZmVyZW5jZSkgeworICBjb25zdCBpbnQmIG4gPSAxMjM7CisgIDo6c3RkOjpzdHJpbmdz
dHJlYW0gc3M7CisgIFVuaXZlcnNhbFRlcnNlUHJpbnQobiwgJnNzKTsKKyAgRVhQRUNUX0VRKCIx
MjMiLCBzcy5zdHIoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFRlc3QsIFdvcmtz
Rm9yQ1N0cmluZykgeworICBjb25zdCBjaGFyKiBzMSA9ICJhYmMiOworICA6OnN0ZDo6c3RyaW5n
c3RyZWFtIHNzMTsKKyAgVW5pdmVyc2FsVGVyc2VQcmludChzMSwgJnNzMSk7CisgIEVYUEVDVF9F
USgiXCJhYmNcIiIsIHNzMS5zdHIoKSk7CisKKyAgY2hhciogczIgPSBjb25zdF9jYXN0PGNoYXIq
PihzMSk7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3MyOworICBVbml2ZXJzYWxUZXJzZVByaW50
KHMyLCAmc3MyKTsKKyAgRVhQRUNUX0VRKCJcImFiY1wiIiwgc3MyLnN0cigpKTsKKworICBjb25z
dCBjaGFyKiBzMyA9IE5VTEw7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3MzOworICBVbml2ZXJz
YWxUZXJzZVByaW50KHMzLCAmc3MzKTsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgc3MzLnN0cigpKTsK
K30KKworVEVTVChVbml2ZXJzYWxQcmludFRlc3QsIFdvcmtzRm9yTm9uUmVmZXJlbmNlKSB7Cisg
IDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIFVuaXZlcnNhbFByaW50KDEyMywgJnNzKTsKKyAg
RVhQRUNUX0VRKCIxMjMiLCBzcy5zdHIoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsUHJpbnRUZXN0
LCBXb3Jrc0ZvclJlZmVyZW5jZSkgeworICBjb25zdCBpbnQmIG4gPSAxMjM7CisgIDo6c3RkOjpz
dHJpbmdzdHJlYW0gc3M7CisgIFVuaXZlcnNhbFByaW50KG4sICZzcyk7CisgIEVYUEVDVF9FUSgi
MTIzIiwgc3Muc3RyKCkpOworfQorCitURVNUKFVuaXZlcnNhbFByaW50VGVzdCwgV29ya3NGb3JD
U3RyaW5nKSB7CisgIGNvbnN0IGNoYXIqIHMxID0gImFiYyI7CisgIDo6c3RkOjpzdHJpbmdzdHJl
YW0gc3MxOworICBVbml2ZXJzYWxQcmludChzMSwgJnNzMSk7CisgIEVYUEVDVF9FUShQcmludFBv
aW50ZXIoczEpICsgIiBwb2ludGluZyB0byBcImFiY1wiIiwgc3RkOjpzdHJpbmcoc3MxLnN0cigp
KSk7CisKKyAgY2hhciogczIgPSBjb25zdF9jYXN0PGNoYXIqPihzMSk7CisgIDo6c3RkOjpzdHJp
bmdzdHJlYW0gc3MyOworICBVbml2ZXJzYWxQcmludChzMiwgJnNzMik7CisgIEVYUEVDVF9FUShQ
cmludFBvaW50ZXIoczIpICsgIiBwb2ludGluZyB0byBcImFiY1wiIiwgc3RkOjpzdHJpbmcoc3My
LnN0cigpKSk7CisKKyAgY29uc3QgY2hhciogczMgPSBOVUxMOworICA6OnN0ZDo6c3RyaW5nc3Ry
ZWFtIHNzMzsKKyAgVW5pdmVyc2FsUHJpbnQoczMsICZzczMpOworICBFWFBFQ1RfRVEoIk5VTEwi
LCBzczMuc3RyKCkpOworfQorCitURVNUKFVuaXZlcnNhbFByaW50VGVzdCwgV29ya3NGb3JDaGFy
QXJyYXkpIHsKKyAgY29uc3QgY2hhciBzdHJbXSA9ICJcIkxpbmVcMCAxXCJcbkxpbmUgMiI7Cisg
IDo6c3RkOjpzdHJpbmdzdHJlYW0gc3MxOworICBVbml2ZXJzYWxQcmludChzdHIsICZzczEpOwor
ICBFWFBFQ1RfRVEoIlwiXFxcIkxpbmVcXDAgMVxcXCJcXG5MaW5lIDJcIiIsIHNzMS5zdHIoKSk7
CisKKyAgY29uc3QgY2hhciBtdXRhYmxlX3N0cltdID0gIlwiTGluZVwwIDFcIlxuTGluZSAyIjsK
KyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczI7CisgIFVuaXZlcnNhbFByaW50KG11dGFibGVfc3Ry
LCAmc3MyKTsKKyAgRVhQRUNUX0VRKCJcIlxcXCJMaW5lXFwwIDFcXFwiXFxuTGluZSAyXCIiLCBz
czIuc3RyKCkpOworfQorCisjaWYgR1RFU1RfSEFTX1RSMV9UVVBMRQorCitURVNUKFVuaXZlcnNh
bFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmludHNFbXB0eVR1
cGxlKSB7CisgIFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRz
VG9TdHJpbmdzKAorICAgICAgOjpzdGQ6OnRyMTo6bWFrZV90dXBsZSgpKTsKKyAgRVhQRUNUX0VR
KDB1LCByZXN1bHQuc2l6ZSgpKTsKK30KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVG
aWVsZHNUb1N0cmluZ3NUZXN0V2l0aFRyMSwgUHJpbnRzT25lVHVwbGUpIHsKKyAgU3RyaW5ncyBy
ZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoCisgICAgICA6
OnN0ZDo6dHIxOjptYWtlX3R1cGxlKDEpKTsKKyAgQVNTRVJUX0VRKDF1LCByZXN1bHQuc2l6ZSgp
KTsKKyAgRVhQRUNUX0VRKCIxIiwgcmVzdWx0WzBdKTsKK30KKworVEVTVChVbml2ZXJzYWxUZXJz
ZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0aFRyMSwgUHJpbnRzVHdvVHVwbGUpIHsK
KyAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmlu
Z3MoCisgICAgICA6OnN0ZDo6dHIxOjptYWtlX3R1cGxlKDEsICdhJykpOworICBBU1NFUlRfRVEo
MnUsIHJlc3VsdC5zaXplKCkpOworICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRbMF0pOworICBFWFBF
Q1RfRVEoIidhJyAoOTcsIDB4NjEpIiwgcmVzdWx0WzFdKTsKK30KKworVEVTVChVbml2ZXJzYWxU
ZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0aFRyMSwgUHJpbnRzVGVyc2VseSkg
eworICBjb25zdCBpbnQgbiA9IDE7CisgIFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQ
cmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAorICAgICAgOjpzdGQ6OnRyMTo6dHVwbGU8Y29uc3Qg
aW50JiwgY29uc3QgY2hhcio+KG4sICJhIikpOworICBBU1NFUlRfRVEoMnUsIHJlc3VsdC5zaXpl
KCkpOworICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRbMF0pOworICBFWFBFQ1RfRVEoIlwiYVwiIiwg
cmVzdWx0WzFdKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfVFIxX1RVUExFCisKKyNpZiBH
VEVTVF9IQVNfU1REX1RVUExFXworCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxk
c1RvU3RyaW5nc1Rlc3RXaXRoU3RkLCBQcmludHNFbXB0eVR1cGxlKSB7CisgIFN0cmluZ3MgcmVz
dWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKDo6c3RkOjptYWtl
X3R1cGxlKCkpOworICBFWFBFQ1RfRVEoMHUsIHJlc3VsdC5zaXplKCkpOworfQorCitURVNUKFVu
aXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoU3RkLCBQcmludHNP
bmVUdXBsZSkgeworICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZp
ZWxkc1RvU3RyaW5ncygKKyAgICAgIDo6c3RkOjptYWtlX3R1cGxlKDEpKTsKKyAgQVNTRVJUX0VR
KDF1LCByZXN1bHQuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKCIxIiwgcmVzdWx0WzBdKTsKK30KKwor
VEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0aFN0ZCwg
UHJpbnRzVHdvVHVwbGUpIHsKKyAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50
VHVwbGVGaWVsZHNUb1N0cmluZ3MoCisgICAgICA6OnN0ZDo6bWFrZV90dXBsZSgxLCAnYScpKTsK
KyAgQVNTRVJUX0VRKDJ1LCByZXN1bHQuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKCIxIiwgcmVzdWx0
WzBdKTsKKyAgRVhQRUNUX0VRKCInYScgKDk3LCAweDYxKSIsIHJlc3VsdFsxXSk7Cit9CisKK1RF
U1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhTdGQsIFBy
aW50c1RlcnNlbHkpIHsKKyAgY29uc3QgaW50IG4gPSAxOworICBTdHJpbmdzIHJlc3VsdCA9IFVu
aXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKKyAgICAgIDo6c3RkOjp0dXBs
ZTxjb25zdCBpbnQmLCBjb25zdCBjaGFyKj4obiwgImEiKSk7CisgIEFTU0VSVF9FUSgydSwgcmVz
dWx0LnNpemUoKSk7CisgIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7CisgIEVYUEVDVF9FUSgi
XCJhXCIiLCByZXN1bHRbMV0pOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfVFVQTEVf
CisKKyNpZiBHVEVTVF9IQVNfQUJTTAorCitURVNUKFByaW50T3B0aW9uYWxUZXN0LCBCYXNpYykg
eworICBhYnNsOjpvcHRpb25hbDxpbnQ+IHZhbHVlOworICBFWFBFQ1RfRVEoIihudWxsb3B0KSIs
IFByaW50VG9TdHJpbmcodmFsdWUpKTsKKyAgdmFsdWUgPSB7N307CisgIEVYUEVDVF9FUSgiKDcp
IiwgUHJpbnRUb1N0cmluZyh2YWx1ZSkpOworICBFWFBFQ1RfRVEoIigxLjEpIiwgUHJpbnRUb1N0
cmluZyhhYnNsOjpvcHRpb25hbDxkb3VibGU+ezEuMX0pKTsKKyAgRVhQRUNUX0VRKCIoXCJBXCIp
IiwgUHJpbnRUb1N0cmluZyhhYnNsOjpvcHRpb25hbDxzdGQ6OnN0cmluZz57IkEifSkpOworfQor
CitzdHJ1Y3QgTm9uUHJpbnRhYmxlIHsKKyAgdW5zaWduZWQgY2hhciBjb250ZW50cyA9IDE3Owor
fTsKKworVEVTVChQcmludE9uZW9mVGVzdCwgQmFzaWMpIHsKKyAgdXNpbmcgVHlwZSA9IGFic2w6
OnZhcmlhbnQ8aW50LCBTdHJlYW1hYmxlSW5HbG9iYWwsIE5vblByaW50YWJsZT47CisgIEVYUEVD
VF9FUSgiKCdpbnQnIHdpdGggdmFsdWUgNykiLCBQcmludFRvU3RyaW5nKFR5cGUoNykpKTsKKyAg
RVhQRUNUX0VRKCIoJ1N0cmVhbWFibGVJbkdsb2JhbCcgd2l0aCB2YWx1ZSBTdHJlYW1hYmxlSW5H
bG9iYWwpIiwKKyAgICAgICAgICAgIFByaW50VG9TdHJpbmcoVHlwZShTdHJlYW1hYmxlSW5HbG9i
YWx7fSkpKTsKKyAgRVhQRUNUX0VRKAorICAgICAgIigndGVzdGluZzo6Z3Rlc3RfcHJpbnRlcnNf
dGVzdDo6Tm9uUHJpbnRhYmxlJyB3aXRoIHZhbHVlIDEtYnl0ZSBvYmplY3QgIgorICAgICAgIjwx
MT4pIiwKKyAgICAgIFByaW50VG9TdHJpbmcoVHlwZShOb25QcmludGFibGV7fSkpKTsKK30KKyNl
bmRpZiAgLy8gR1RFU1RfSEFTX0FCU0wKKworfSAgLy8gbmFtZXNwYWNlIGd0ZXN0X3ByaW50ZXJz
X3Rlc3QKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0LnB5IGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXNodWZmbGUtdGVzdC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
NzNjYzVlY2EzZmNlNDU4YWEzYWMzZTM5ODUwZjQ3YmIzODJlNTViCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXNodWZmbGUtdGVzdC5w
eQpAQCAtMCwwICsxLDMyMyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdo
dCAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisj
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisiIiJWZXJpZmllcyB0aGF0IHRlc3Qgc2h1ZmZsaW5nIHdvcmtzLiIiIgorCitpbXBvcnQg
b3MKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKKyMgQ29tbWFuZCB0byBydW4gdGhlIGdvb2ds
ZXRlc3Qtc2h1ZmZsZS10ZXN0XyBwcm9ncmFtLgorQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
R2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdnb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8nKQorCisjIFRo
ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRlc3Qgc2hhcmRpbmcuCitUT1RBTF9TSEFSRFNf
RU5WX1ZBUiA9ICdHVEVTVF9UT1RBTF9TSEFSRFMnCitTSEFSRF9JTkRFWF9FTlZfVkFSID0gJ0dU
RVNUX1NIQVJEX0lOREVYJworCitURVNUX0ZJTFRFUiA9ICdBKi5BOkEqLkI6QyonCisKK0FMTF9U
RVNUUyA9IFtdCitBQ1RJVkVfVEVTVFMgPSBbXQorRklMVEVSRURfVEVTVFMgPSBbXQorU0hBUkRF
RF9URVNUUyA9IFtdCisKK1NIVUZGTEVEX0FMTF9URVNUUyA9IFtdCitTSFVGRkxFRF9BQ1RJVkVf
VEVTVFMgPSBbXQorU0hVRkZMRURfRklMVEVSRURfVEVTVFMgPSBbXQorU0hVRkZMRURfU0hBUkRF
RF9URVNUUyA9IFtdCisKKworZGVmIEFsc29SdW5EaXNhYmxlZFRlc3RzRmxhZygpOgorICByZXR1
cm4gJy0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMnCisKKworZGVmIEZpbHRlckZsYWco
dGVzdF9maWx0ZXIpOgorICByZXR1cm4gJy0tZ3Rlc3RfZmlsdGVyPSVzJyAlICh0ZXN0X2ZpbHRl
ciwpCisKKworZGVmIFJlcGVhdEZsYWcobik6CisgIHJldHVybiAnLS1ndGVzdF9yZXBlYXQ9JXMn
ICUgKG4sKQorCisKK2RlZiBTaHVmZmxlRmxhZygpOgorICByZXR1cm4gJy0tZ3Rlc3Rfc2h1ZmZs
ZScKKworCitkZWYgUmFuZG9tU2VlZEZsYWcobik6CisgIHJldHVybiAnLS1ndGVzdF9yYW5kb21f
c2VlZD0lcycgJSAobiwpCisKKworZGVmIFJ1bkFuZFJldHVybk91dHB1dChleHRyYV9lbnYsIGFy
Z3MpOgorICAiIiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0gYW5kIHJldHVybnMgaXRzIG91dHB1dC4i
IiIKKworICBlbnZpcm9uX2NvcHkgPSBvcy5lbnZpcm9uLmNvcHkoKQorICBlbnZpcm9uX2NvcHku
dXBkYXRlKGV4dHJhX2VudikKKworICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNz
KFtDT01NQU5EXSArIGFyZ3MsIGVudj1lbnZpcm9uX2NvcHkpLm91dHB1dAorCisKK2RlZiBHZXRU
ZXN0c0ZvckFsbEl0ZXJhdGlvbnMoZXh0cmFfZW52LCBhcmdzKToKKyAgIiIiUnVucyB0aGUgdGVz
dCBwcm9ncmFtIGFuZCByZXR1cm5zIGEgbGlzdCBvZiB0ZXN0IGxpc3RzLgorCisgIEFyZ3M6Cisg
ICAgZXh0cmFfZW52OiBhIG1hcCBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byB0aGVpciB2
YWx1ZXMKKyAgICBhcmdzOiBjb21tYW5kIGxpbmUgZmxhZ3MgdG8gcGFzcyB0byBnb29nbGV0ZXN0
LXNodWZmbGUtdGVzdF8KKworICBSZXR1cm5zOgorICAgIEEgbGlzdCB3aGVyZSB0aGUgaS10aCBl
bGVtZW50IGlzIHRoZSBsaXN0IG9mIHRlc3RzIHJ1biBpbiB0aGUgaS10aAorICAgIHRlc3QgaXRl
cmF0aW9uLgorICAiIiIKKworICB0ZXN0X2l0ZXJhdGlvbnMgPSBbXQorICBmb3IgbGluZSBpbiBS
dW5BbmRSZXR1cm5PdXRwdXQoZXh0cmFfZW52LCBhcmdzKS5zcGxpdCgnXG4nKToKKyAgICBpZiBs
aW5lLnN0YXJ0c3dpdGgoJy0tLS0nKToKKyAgICAgIHRlc3RzID0gW10KKyAgICAgIHRlc3RfaXRl
cmF0aW9ucy5hcHBlbmQodGVzdHMpCisgICAgZWxpZiBsaW5lLnN0cmlwKCk6CisgICAgICB0ZXN0
cy5hcHBlbmQobGluZS5zdHJpcCgpKSAgIyAnVGVzdENhc2VOYW1lLlRlc3ROYW1lJworCisgIHJl
dHVybiB0ZXN0X2l0ZXJhdGlvbnMKKworCitkZWYgR2V0VGVzdENhc2VzKHRlc3RzKToKKyAgIiIi
UmV0dXJucyBhIGxpc3Qgb2YgdGVzdCBjYXNlcyBpbiB0aGUgZ2l2ZW4gZnVsbCB0ZXN0IG5hbWVz
LgorCisgIEFyZ3M6CisgICAgdGVzdHM6IGEgbGlzdCBvZiBmdWxsIHRlc3QgbmFtZXMKKworICBS
ZXR1cm5zOgorICAgIEEgbGlzdCBvZiB0ZXN0IGNhc2VzIGZyb20gJ3Rlc3RzJywgaW4gdGhlaXIg
b3JpZ2luYWwgb3JkZXIuCisgICAgQ29uc2VjdXRpdmUgZHVwbGljYXRlcyBhcmUgcmVtb3ZlZC4K
KyAgIiIiCisKKyAgdGVzdF9jYXNlcyA9IFtdCisgIGZvciB0ZXN0IGluIHRlc3RzOgorICAgIHRl
c3RfY2FzZSA9IHRlc3Quc3BsaXQoJy4nKVswXQorICAgIGlmIG5vdCB0ZXN0X2Nhc2UgaW4gdGVz
dF9jYXNlczoKKyAgICAgIHRlc3RfY2FzZXMuYXBwZW5kKHRlc3RfY2FzZSkKKworICByZXR1cm4g
dGVzdF9jYXNlcworCisKK2RlZiBDYWxjdWxhdGVUZXN0TGlzdHMoKToKKyAgIiIiQ2FsY3VsYXRl
cyB0aGUgbGlzdCBvZiB0ZXN0cyBydW4gdW5kZXIgZGlmZmVyZW50IGZsYWdzLiIiIgorCisgIGlm
IG5vdCBBTExfVEVTVFM6CisgICAgQUxMX1RFU1RTLmV4dGVuZCgKKyAgICAgICAgR2V0VGVzdHNG
b3JBbGxJdGVyYXRpb25zKHt9LCBbQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKCldKVswXSkKKwor
ICBpZiBub3QgQUNUSVZFX1RFU1RTOgorICAgIEFDVElWRV9URVNUUy5leHRlbmQoR2V0VGVzdHNG
b3JBbGxJdGVyYXRpb25zKHt9LCBbXSlbMF0pCisKKyAgaWYgbm90IEZJTFRFUkVEX1RFU1RTOgor
ICAgIEZJTFRFUkVEX1RFU1RTLmV4dGVuZCgKKyAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRp
b25zKHt9LCBbRmlsdGVyRmxhZyhURVNUX0ZJTFRFUildKVswXSkKKworICBpZiBub3QgU0hBUkRF
RF9URVNUUzoKKyAgICBTSEFSREVEX1RFU1RTLmV4dGVuZCgKKyAgICAgICAgR2V0VGVzdHNGb3JB
bGxJdGVyYXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcxJ30sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbXSlbMF0pCisKKyAgaWYgbm90IFNIVUZGTEVEX0FMTF9U
RVNUUzoKKyAgICBTSFVGRkxFRF9BTExfVEVTVFMuZXh0ZW5kKEdldFRlc3RzRm9yQWxsSXRlcmF0
aW9ucygKKyAgICAgICAge30sIFtBbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcoKSwgU2h1ZmZsZUZs
YWcoKSwgUmFuZG9tU2VlZEZsYWcoMSldKVswXSkKKworICBpZiBub3QgU0hVRkZMRURfQUNUSVZF
X1RFU1RTOgorICAgIFNIVUZGTEVEX0FDVElWRV9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJ
dGVyYXRpb25zKAorICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEp
XSlbMF0pCisKKyAgaWYgbm90IFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTOgorICAgIFNIVUZGTEVE
X0ZJTFRFUkVEX1RFU1RTLmV4dGVuZChHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisgICAgICAg
IHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSksIEZpbHRlckZsYWcoVEVTVF9G
SUxURVIpXSlbMF0pCisKKyAgaWYgbm90IFNIVUZGTEVEX1NIQVJERURfVEVTVFM6CisgICAgU0hV
RkZMRURfU0hBUkRFRF9URVNUUy5leHRlbmQoCisgICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0
aW9ucyh7VE9UQUxfU0hBUkRTX0VOVl9WQVI6ICczJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMSd9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSlbMF0pCisK
KworY2xhc3MgR1Rlc3RTaHVmZmxlVW5pdFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6
CisgICIiIlRlc3RzIHRlc3Qgc2h1ZmZsaW5nLiIiIgorCisgIGRlZiBzZXRVcChzZWxmKToKKyAg
ICBDYWxjdWxhdGVUZXN0TGlzdHMoKQorCisgIGRlZiB0ZXN0U2h1ZmZsZVByZXNlcnZlc051bWJl
ck9mVGVzdHMoc2VsZik6CisgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oQUxMX1RFU1RTKSwgbGVu
KFNIVUZGTEVEX0FMTF9URVNUUykpCisgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oQUNUSVZFX1RF
U1RTKSwgbGVuKFNIVUZGTEVEX0FDVElWRV9URVNUUykpCisgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oRklMVEVSRURfVEVTVFMpLCBsZW4oU0hVRkZMRURfRklMVEVSRURfVEVTVFMpKQorICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGVuKFNIQVJERURfVEVTVFMpLCBsZW4oU0hVRkZMRURfU0hBUkRFRF9U
RVNUUykpCisKKyAgZGVmIHRlc3RTaHVmZmxlQ2hhbmdlc1Rlc3RPcmRlcihzZWxmKToKKyAgICBz
ZWxmLmFzc2VydF8oU0hVRkZMRURfQUxMX1RFU1RTICE9IEFMTF9URVNUUywgU0hVRkZMRURfQUxM
X1RFU1RTKQorICAgIHNlbGYuYXNzZXJ0XyhTSFVGRkxFRF9BQ1RJVkVfVEVTVFMgIT0gQUNUSVZF
X1RFU1RTLCBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMpCisgICAgc2VsZi5hc3NlcnRfKFNIVUZGTEVE
X0ZJTFRFUkVEX1RFU1RTICE9IEZJTFRFUkVEX1RFU1RTLAorICAgICAgICAgICAgICAgICBTSFVG
RkxFRF9GSUxURVJFRF9URVNUUykKKyAgICBzZWxmLmFzc2VydF8oU0hVRkZMRURfU0hBUkRFRF9U
RVNUUyAhPSBTSEFSREVEX1RFU1RTLAorICAgICAgICAgICAgICAgICBTSFVGRkxFRF9TSEFSREVE
X1RFU1RTKQorCisgIGRlZiB0ZXN0U2h1ZmZsZUNoYW5nZXNUZXN0Q2FzZU9yZGVyKHNlbGYpOgor
ICAgIHNlbGYuYXNzZXJ0XyhHZXRUZXN0Q2FzZXMoU0hVRkZMRURfQUxMX1RFU1RTKSAhPSBHZXRU
ZXN0Q2FzZXMoQUxMX1RFU1RTKSwKKyAgICAgICAgICAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZG
TEVEX0FMTF9URVNUUykpCisgICAgc2VsZi5hc3NlcnRfKAorICAgICAgICBHZXRUZXN0Q2FzZXMo
U0hVRkZMRURfQUNUSVZFX1RFU1RTKSAhPSBHZXRUZXN0Q2FzZXMoQUNUSVZFX1RFU1RTKSwKKyAg
ICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX0FDVElWRV9URVNUUykpCisgICAgc2VsZi5hc3Nl
cnRfKAorICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfRklMVEVSRURfVEVTVFMpICE9IEdl
dFRlc3RDYXNlcyhGSUxURVJFRF9URVNUUyksCisgICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxF
RF9GSUxURVJFRF9URVNUUykpCisgICAgc2VsZi5hc3NlcnRfKAorICAgICAgICBHZXRUZXN0Q2Fz
ZXMoU0hVRkZMRURfU0hBUkRFRF9URVNUUykgIT0gR2V0VGVzdENhc2VzKFNIQVJERURfVEVTVFMp
LAorICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfU0hBUkRFRF9URVNUUykpCisKKyAgZGVm
IHRlc3RTaHVmZmxlRG9lc05vdFJlcGVhdFRlc3Qoc2VsZik6CisgICAgZm9yIHRlc3QgaW4gU0hV
RkZMRURfQUxMX1RFU1RTOgorICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9BTExf
VEVTVFMuY291bnQodGVzdCksCisgICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1v
cmUgdGhhbiBvbmNlJyAlICh0ZXN0LCkpCisgICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUNUSVZF
X1RFU1RTOgorICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMu
Y291bnQodGVzdCksCisgICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhh
biBvbmNlJyAlICh0ZXN0LCkpCisgICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVT
VFM6CisgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTLmNv
dW50KHRlc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAnJXMgYXBwZWFycyBtb3JlIHRoYW4g
b25jZScgJSAodGVzdCwpKQorICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFM6
CisgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIFNIVUZGTEVEX1NIQVJERURfVEVTVFMuY291bnQo
dGVzdCksCisgICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNl
JyAlICh0ZXN0LCkpCisKKyAgZGVmIHRlc3RTaHVmZmxlRG9lc05vdENyZWF0ZU5ld1Rlc3Qoc2Vs
Zik6CisgICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUxMX1RFU1RTOgorICAgICAgc2VsZi5hc3Nl
cnRfKHRlc3QgaW4gQUxMX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkp
CisgICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTOgorICAgICAgc2VsZi5hc3Nl
cnRfKHRlc3QgaW4gQUNUSVZFX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0
LCkpCisgICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFM6CisgICAgICBzZWxm
LmFzc2VydF8odGVzdCBpbiBGSUxURVJFRF9URVNUUywgJyVzIGlzIGFuIGludmFsaWQgdGVzdCcg
JSAodGVzdCwpKQorICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFM6CisgICAg
ICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSEFSREVEX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0
ZXN0JyAlICh0ZXN0LCkpCisKKyAgZGVmIHRlc3RTaHVmZmxlSW5jbHVkZXNBbGxUZXN0cyhzZWxm
KToKKyAgICBmb3IgdGVzdCBpbiBBTExfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydF8odGVzdCBp
biBTSFVGRkxFRF9BTExfVEVTVFMsICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCisgICAgZm9y
IHRlc3QgaW4gQUNUSVZFX1RFU1RTOgorICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZM
RURfQUNUSVZFX1RFU1RTLCAnJXMgaXMgbWlzc2luZycgJSAodGVzdCwpKQorICAgIGZvciB0ZXN0
IGluIEZJTFRFUkVEX1RFU1RTOgorICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURf
RklMVEVSRURfVEVTVFMsICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCisgICAgZm9yIHRlc3Qg
aW4gU0hBUkRFRF9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIVUZGTEVEX1NI
QVJERURfVEVTVFMsICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCisKKyAgZGVmIHRlc3RTaHVm
ZmxlTGVhdmVzRGVhdGhUZXN0c0F0RnJvbnQoc2VsZik6CisgICAgbm9uX2RlYXRoX3Rlc3RfZm91
bmQgPSBGYWxzZQorICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX0FDVElWRV9URVNUUzoKKyAgICAg
IGlmICdEZWF0aFRlc3QuJyBpbiB0ZXN0OgorICAgICAgICBzZWxmLmFzc2VydF8obm90IG5vbl9k
ZWF0aF90ZXN0X2ZvdW5kLAorICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgYWZ0ZXIg
YSBub24tZGVhdGggdGVzdCcgJSAodGVzdCwpKQorICAgICAgZWxzZToKKyAgICAgICAgbm9uX2Rl
YXRoX3Rlc3RfZm91bmQgPSBUcnVlCisKKyAgZGVmIF9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVy
bGVhdmUoc2VsZiwgdGVzdHMpOgorICAgIHRlc3RfY2FzZXMgPSBbXQorICAgIGZvciB0ZXN0IGlu
IHRlc3RzOgorICAgICAgW3Rlc3RfY2FzZSwgX10gPSB0ZXN0LnNwbGl0KCcuJykKKyAgICAgIGlm
IHRlc3RfY2FzZXMgYW5kIHRlc3RfY2FzZXNbLTFdICE9IHRlc3RfY2FzZToKKyAgICAgICAgdGVz
dF9jYXNlcy5hcHBlbmQodGVzdF9jYXNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHRl
c3RfY2FzZXMuY291bnQodGVzdF9jYXNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnVGVz
dCBjYXNlICVzIGlzIG5vdCBncm91cGVkIHRvZ2V0aGVyIGluICVzJyAlCisgICAgICAgICAgICAg
ICAgICAgICAgICAgKHRlc3RfY2FzZSwgdGVzdHMpKQorCisgIGRlZiB0ZXN0U2h1ZmZsZURvZXNO
b3RJbnRlcmxlYXZlVGVzdENhc2VzKHNlbGYpOgorICAgIHNlbGYuX1ZlcmlmeVRlc3RDYXNlc0Rv
Tm90SW50ZXJsZWF2ZShTSFVGRkxFRF9BTExfVEVTVFMpCisgICAgc2VsZi5fVmVyaWZ5VGVzdENh
c2VzRG9Ob3RJbnRlcmxlYXZlKFNIVUZGTEVEX0FDVElWRV9URVNUUykKKyAgICBzZWxmLl9WZXJp
ZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUoU0hVRkZMRURfRklMVEVSRURfVEVTVFMpCisgICAg
c2VsZi5fVmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRlcmxlYXZlKFNIVUZGTEVEX1NIQVJERURfVEVT
VFMpCisKKyAgZGVmIHRlc3RTaHVmZmxlUmVzdG9yZXNPcmRlckFmdGVyRWFjaEl0ZXJhdGlvbihz
ZWxmKToKKyAgICAjIEdldCB0aGUgdGVzdCBsaXN0cyBpbiBhbGwgMyBpdGVyYXRpb25zLCB1c2lu
ZyByYW5kb20gc2VlZCAxLCAyLAorICAgICMgYW5kIDMgcmVzcGVjdGl2ZWx5LiAgR29vZ2xlIFRl
c3QgcGlja3MgYSBkaWZmZXJlbnQgc2VlZCBpbiBlYWNoCisgICAgIyBpdGVyYXRpb24sIGFuZCB0
aGlzIHRlc3QgZGVwZW5kcyBvbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbgorICAgICMgcGlj
a2luZyBzdWNjZXNzaXZlIG51bWJlcnMuICBUaGlzIGRlcGVuZGVuY3kgaXMgbm90IGlkZWFsLCBi
dXQKKyAgICAjIG1ha2VzIHRoZSB0ZXN0IG11Y2ggZWFzaWVyIHRvIHdyaXRlLgorICAgIFt0ZXN0
c19pbl9pdGVyYXRpb24xLCB0ZXN0c19pbl9pdGVyYXRpb24yLCB0ZXN0c19pbl9pdGVyYXRpb24z
XSA9ICgKKyAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICAgICAge30s
IFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKSwgUmVwZWF0RmxhZygzKV0pKQorCisg
ICAgIyBNYWtlIHN1cmUgcnVubmluZyB0aGUgdGVzdHMgd2l0aCByYW5kb20gc2VlZCAxIGdldHMg
dGhlIHNhbWUKKyAgICAjIG9yZGVyIGFzIGluIGl0ZXJhdGlvbiAxIGFib3ZlLgorICAgIFt0ZXN0
c193aXRoX3NlZWQxXSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKKyAgICAgICAge30sIFtT
aHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0pCisgICAgc2VsZi5hc3NlcnRFcXVhbCh0
ZXN0c19pbl9pdGVyYXRpb24xLCB0ZXN0c193aXRoX3NlZWQxKQorCisgICAgIyBNYWtlIHN1cmUg
cnVubmluZyB0aGUgdGVzdHMgd2l0aCByYW5kb20gc2VlZCAyIGdldHMgdGhlIHNhbWUKKyAgICAj
IG9yZGVyIGFzIGluIGl0ZXJhdGlvbiAyIGFib3ZlLiAgU3VjY2VzcyBtZWFucyB0aGF0IEdvb2ds
ZSBUZXN0CisgICAgIyBjb3JyZWN0bHkgcmVzdG9yZXMgdGhlIHRlc3Qgb3JkZXIgYmVmb3JlIHJl
LXNodWZmbGluZyBhdCB0aGUKKyAgICAjIGJlZ2lubmluZyBvZiBpdGVyYXRpb24gMi4KKyAgICBb
dGVzdHNfd2l0aF9zZWVkMl0gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisgICAgICAgIHt9
LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMildKQorICAgIHNlbGYuYXNzZXJ0RXF1
YWwodGVzdHNfaW5faXRlcmF0aW9uMiwgdGVzdHNfd2l0aF9zZWVkMikKKworICAgICMgTWFrZSBz
dXJlIHJ1bm5pbmcgdGhlIHRlc3RzIHdpdGggcmFuZG9tIHNlZWQgMyBnZXRzIHRoZSBzYW1lCisg
ICAgIyBvcmRlciBhcyBpbiBpdGVyYXRpb24gMyBhYm92ZS4gIFN1Y2Nlc3MgbWVhbnMgdGhhdCBH
b29nbGUgVGVzdAorICAgICMgY29ycmVjdGx5IHJlc3RvcmVzIHRoZSB0ZXN0IG9yZGVyIGJlZm9y
ZSByZS1zaHVmZmxpbmcgYXQgdGhlCisgICAgIyBiZWdpbm5pbmcgb2YgaXRlcmF0aW9uIDMuCisg
ICAgW3Rlc3RzX3dpdGhfc2VlZDNdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAg
ICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDMpXSkKKyAgICBzZWxmLmFzc2Vy
dEVxdWFsKHRlc3RzX2luX2l0ZXJhdGlvbjMsIHRlc3RzX3dpdGhfc2VlZDMpCisKKyAgZGVmIHRl
c3RTaHVmZmxlR2VuZXJhdGVzTmV3T3JkZXJJbkVhY2hJdGVyYXRpb24oc2VsZik6CisgICAgW3Rl
c3RzX2luX2l0ZXJhdGlvbjEsIHRlc3RzX2luX2l0ZXJhdGlvbjIsIHRlc3RzX2luX2l0ZXJhdGlv
bjNdID0gKAorICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisgICAgICAgICAgICB7
fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpLCBSZXBlYXRGbGFnKDMpXSkpCisK
KyAgICBzZWxmLmFzc2VydF8odGVzdHNfaW5faXRlcmF0aW9uMSAhPSB0ZXN0c19pbl9pdGVyYXRp
b24yLAorICAgICAgICAgICAgICAgICB0ZXN0c19pbl9pdGVyYXRpb24xKQorICAgIHNlbGYuYXNz
ZXJ0Xyh0ZXN0c19pbl9pdGVyYXRpb24xICE9IHRlc3RzX2luX2l0ZXJhdGlvbjMsCisgICAgICAg
ICAgICAgICAgIHRlc3RzX2luX2l0ZXJhdGlvbjEpCisgICAgc2VsZi5hc3NlcnRfKHRlc3RzX2lu
X2l0ZXJhdGlvbjIgIT0gdGVzdHNfaW5faXRlcmF0aW9uMywKKyAgICAgICAgICAgICAgICAgdGVz
dHNfaW5faXRlcmF0aW9uMikKKworICBkZWYgdGVzdFNodWZmbGVTaGFyZGVkVGVzdHNQcmVzZXJ2
ZXNQYXJ0aXRpb24oc2VsZik6CisgICAgIyBJZiB3ZSBydW4gTSB0ZXN0cyBvbiBOIHNoYXJkcywg
dGhlIHNhbWUgTSB0ZXN0cyBzaG91bGQgYmUgcnVuIGluCisgICAgIyB0b3RhbCwgcmVnYXJkbGVz
cyBvZiB0aGUgcmFuZG9tIHNlZWRzIHVzZWQgYnkgdGhlIHNoYXJkcy4KKyAgICBbdGVzdHMxXSA9
IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7VE9UQUxfU0hBUkRTX0VOVl9WQVI6ICczJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBUkRfSU5ERVhfRU5WX1ZB
UjogJzAnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU2h1ZmZs
ZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSldKQorICAgIFt0ZXN0czJdID0gR2V0VGVzdHNGb3JB
bGxJdGVyYXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMSd9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTaHVmZmxlRmxhZygpLCBSYW5k
b21TZWVkRmxhZygyMCldKQorICAgIFt0ZXN0czNdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25z
KHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMid9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygy
NSldKQorICAgIHNvcnRlZF9zaGFyZGVkX3Rlc3RzID0gdGVzdHMxICsgdGVzdHMyICsgdGVzdHMz
CisgICAgc29ydGVkX3NoYXJkZWRfdGVzdHMuc29ydCgpCisgICAgc29ydGVkX2FjdGl2ZV90ZXN0
cyA9IFtdCisgICAgc29ydGVkX2FjdGl2ZV90ZXN0cy5leHRlbmQoQUNUSVZFX1RFU1RTKQorICAg
IHNvcnRlZF9hY3RpdmVfdGVzdHMuc29ydCgpCisgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWRf
YWN0aXZlX3Rlc3RzLCBzb3J0ZWRfc2hhcmRlZF90ZXN0cykKKworaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8uY2MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWZlNWY2YWJhMmE1ZTBmZmNhYjkxNWU0NjM4ZDIzZjU4Y2Y0OGZmMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1zaHVmZmxl
LXRlc3RfLmNjCkBAIC0wLDAgKzEsMTAyIEBACisvLyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIElu
Yy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8v
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
Ky8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKworLy8gVmVyaWZpZXMgdGhhdCB0ZXN0IHNodWZmbGluZyB3b3Jr
cy4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CisKK3VzaW5nIDo6
dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lcjsKK3VzaW5nIDo6dGVzdGluZzo6SW5pdEdv
b2dsZVRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6Ok1lc3NhZ2U7Cit1c2luZyA6OnRlc3Rpbmc6OlRl
c3Q7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyczsKK3VzaW5nIDo6dGVzdGlu
Zzo6VGVzdEluZm87Cit1c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OwordXNpbmcgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6c2NvcGVkX3B0cjsKKworLy8gVGhlIHRlc3QgbWV0aG9kcyBhcmUgZW1wdHks
IGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgdGhpcyBwcm9ncmFtIGlzCisvLyB0byBwcmludCB0aGUg
dGVzdCBuYW1lcyBiZWZvcmUvYWZ0ZXIgc2h1ZmZsaW5nLgorCitjbGFzcyBBIDogcHVibGljIFRl
c3Qge307CitURVNUX0YoQSwgQSkge30KK1RFU1RfRihBLCBCKSB7fQorCitURVNUKEFEZWF0aFRl
c3QsIEEpIHt9CitURVNUKEFEZWF0aFRlc3QsIEIpIHt9CitURVNUKEFEZWF0aFRlc3QsIEMpIHt9
CisKK1RFU1QoQiwgQSkge30KK1RFU1QoQiwgQikge30KK1RFU1QoQiwgQykge30KK1RFU1QoQiwg
RElTQUJMRURfRCkge30KK1RFU1QoQiwgRElTQUJMRURfRSkge30KKworVEVTVChCRGVhdGhUZXN0
LCBBKSB7fQorVEVTVChCRGVhdGhUZXN0LCBCKSB7fQorCitURVNUKEMsIEEpIHt9CitURVNUKEMs
IEIpIHt9CitURVNUKEMsIEMpIHt9CitURVNUKEMsIERJU0FCTEVEX0QpIHt9CisKK1RFU1QoQ0Rl
YXRoVGVzdCwgQSkge30KKworVEVTVChESVNBQkxFRF9ELCBBKSB7fQorVEVTVChESVNBQkxFRF9E
LCBESVNBQkxFRF9CKSB7fQorCisvLyBUaGlzIHByaW50ZXIgcHJpbnRzIHRoZSBmdWxsIHRlc3Qg
bmFtZXMgb25seSwgc3RhcnRpbmcgZWFjaCB0ZXN0CisvLyBpdGVyYXRpb24gd2l0aCBhICItLS0t
IiBtYXJrZXIuCitjbGFzcyBUZXN0TmFtZVByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRM
aXN0ZW5lciB7CisgcHVibGljOgorICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uU3RhcnQo
Y29uc3QgVW5pdFRlc3QmIC8qIHVuaXRfdGVzdCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCAvKiBpdGVyYXRpb24gKi8pIHsKKyAgICBwcmludGYoIi0tLS1cbiIp
OworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZvJiB0ZXN0
X2luZm8pIHsKKyAgICBwcmludGYoIiVzLiVzXG4iLCB0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUo
KSwgdGVzdF9pbmZvLm5hbWUoKSk7CisgIH0KK307CisKK30gIC8vIG5hbWVzcGFjZQorCitpbnQg
bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgSW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFy
Z3YpOworCisgIC8vIFJlcGxhY2VzIHRoZSBkZWZhdWx0IHByaW50ZXIgd2l0aCBUZXN0TmFtZVBy
aW50ZXIsIHdoaWNoIHByaW50cworICAvLyB0aGUgdGVzdCBuYW1lIG9ubHkuCisgIFRlc3RFdmVu
dExpc3RlbmVycyYgbGlzdGVuZXJzID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVy
cygpOworICBkZWxldGUgbGlzdGVuZXJzLlJlbGVhc2UobGlzdGVuZXJzLmRlZmF1bHRfcmVzdWx0
X3ByaW50ZXIoKSk7CisgIGxpc3RlbmVycy5BcHBlbmQobmV3IFRlc3ROYW1lUHJpbnRlcik7CisK
KyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10ZXN0LXBhcnQtdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10ZXN0LXBhcnQtdGVzdC5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jZDJkNmY5ZTg1OGY1Mjc5YmE1YTE2YTVkMWE2ZTM3YWZmZTkxMGFkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRlc3QtcGFydC10
ZXN0LmNjCkBAIC0wLDAgKzEsMjA1IEBACisvLyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLgor
Ly8gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oIgorCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKwordXNpbmcgdGVzdGluZzo6TWVzc2FnZTsKK3VzaW5nIHRl
c3Rpbmc6OlRlc3Q7Cit1c2luZyB0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDsKK3VzaW5nIHRlc3Rp
bmc6OlRlc3RQYXJ0UmVzdWx0QXJyYXk7CisKK25hbWVzcGFjZSB7CisKKy8vIFRlc3RzIHRoZSBU
ZXN0UGFydFJlc3VsdCBjbGFzcy4KKworLy8gVGhlIHRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyBU
ZXN0UGFydFJlc3VsdC4KK2NsYXNzIFRlc3RQYXJ0UmVzdWx0VGVzdCA6IHB1YmxpYyBUZXN0IHsK
KyBwcm90ZWN0ZWQ6CisgIFRlc3RQYXJ0UmVzdWx0VGVzdCgpCisgICAgICA6IHIxXyhUZXN0UGFy
dFJlc3VsdDo6a1N1Y2Nlc3MsICJmb28vYmFyLmNjIiwgMTAsICJTdWNjZXNzISIpLAorICAgICAg
ICByMl8oVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsICJmb28vYmFyLmNjIiwgLTEs
ICJGYWlsdXJlISIpLAorICAgICAgICByM18oVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUs
IE5VTEwsIC0xLCAiRmFpbHVyZSEiKSB7fQorCisgIFRlc3RQYXJ0UmVzdWx0IHIxXywgcjJfLCBy
M187Cit9OworCisKK1RFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIENvbnN0cnVjdG9yV29ya3Mp
IHsKKyAgTWVzc2FnZSBtZXNzYWdlOworICBtZXNzYWdlIDw8ICJzb21ldGhpbmcgaXMgdGVycmli
bHkgd3JvbmciOworICBtZXNzYWdlIDw8IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPih0ZXN0aW5n
OjppbnRlcm5hbDo6a1N0YWNrVHJhY2VNYXJrZXIpOworICBtZXNzYWdlIDw8ICJzb21lIHVuaW1w
b3J0YW50IHN0YWNrIHRyYWNlIjsKKworICBjb25zdCBUZXN0UGFydFJlc3VsdCByZXN1bHQoVGVz
dFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAic29tZV9maWxlLmNjIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0cigp
KTsKKworICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsIHJlc3Vs
dC50eXBlKCkpOworICBFWFBFQ1RfU1RSRVEoInNvbWVfZmlsZS5jYyIsIHJlc3VsdC5maWxlX25h
bWUoKSk7CisgIEVYUEVDVF9FUSg0MiwgcmVzdWx0LmxpbmVfbnVtYmVyKCkpOworICBFWFBFQ1Rf
U1RSRVEobWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0cigpLCByZXN1bHQubWVzc2FnZSgpKTsKKyAg
RVhQRUNUX1NUUkVRKCJzb21ldGhpbmcgaXMgdGVycmlibHkgd3JvbmciLCByZXN1bHQuc3VtbWFy
eSgpKTsKK30KKworVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgUmVzdWx0QWNjZXNzb3JzV29y
aykgeworICBjb25zdCBUZXN0UGFydFJlc3VsdCBzdWNjZXNzKFRlc3RQYXJ0UmVzdWx0OjprU3Vj
Y2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5jYyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIm1lc3NhZ2UiKTsKKyAgRVhQRUNUX1RSVUUoc3VjY2Vzcy5wYXNzZWQoKSk7CisgIEVYUEVD
VF9GQUxTRShzdWNjZXNzLmZhaWxlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3Mubm9uZmF0
YWxseV9mYWlsZWQoKSk7CisgIEVYUEVDVF9GQUxTRShzdWNjZXNzLmZhdGFsbHlfZmFpbGVkKCkp
OworCisgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IG5vbmZhdGFsX2ZhaWx1cmUoVGVzdFBhcnRSZXN1
bHQ6OmtOb25GYXRhbEZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImZpbGUuY2MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIik7
CisgIEVYUEVDVF9GQUxTRShub25mYXRhbF9mYWlsdXJlLnBhc3NlZCgpKTsKKyAgRVhQRUNUX1RS
VUUobm9uZmF0YWxfZmFpbHVyZS5mYWlsZWQoKSk7CisgIEVYUEVDVF9UUlVFKG5vbmZhdGFsX2Zh
aWx1cmUubm9uZmF0YWxseV9mYWlsZWQoKSk7CisgIEVYUEVDVF9GQUxTRShub25mYXRhbF9mYWls
dXJlLmZhdGFsbHlfZmFpbGVkKCkpOworCisgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IGZhdGFsX2Zh
aWx1cmUoVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImZpbGUuY2MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXNz
YWdlIik7CisgIEVYUEVDVF9GQUxTRShmYXRhbF9mYWlsdXJlLnBhc3NlZCgpKTsKKyAgRVhQRUNU
X1RSVUUoZmF0YWxfZmFpbHVyZS5mYWlsZWQoKSk7CisgIEVYUEVDVF9GQUxTRShmYXRhbF9mYWls
dXJlLm5vbmZhdGFsbHlfZmFpbGVkKCkpOworICBFWFBFQ1RfVFJVRShmYXRhbF9mYWlsdXJlLmZh
dGFsbHlfZmFpbGVkKCkpOworfQorCisvLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6dHlwZSgpLgor
VEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgdHlwZSkgeworICBFWFBFQ1RfRVEoVGVzdFBhcnRS
ZXN1bHQ6OmtTdWNjZXNzLCByMV8udHlwZSgpKTsKKyAgRVhQRUNUX0VRKFRlc3RQYXJ0UmVzdWx0
OjprTm9uRmF0YWxGYWlsdXJlLCByMl8udHlwZSgpKTsKKyAgRVhQRUNUX0VRKFRlc3RQYXJ0UmVz
dWx0OjprRmF0YWxGYWlsdXJlLCByM18udHlwZSgpKTsKK30KKworLy8gVGVzdHMgVGVzdFBhcnRS
ZXN1bHQ6OmZpbGVfbmFtZSgpLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgZmlsZV9uYW1l
KSB7CisgIEVYUEVDVF9TVFJFUSgiZm9vL2Jhci5jYyIsIHIxXy5maWxlX25hbWUoKSk7CisgIEVY
UEVDVF9TVFJFUShOVUxMLCByM18uZmlsZV9uYW1lKCkpOworfQorCisvLyBUZXN0cyBUZXN0UGFy
dFJlc3VsdDo6bGluZV9udW1iZXIoKS4KK1RFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIGxpbmVf
bnVtYmVyKSB7CisgIEVYUEVDVF9FUSgxMCwgcjFfLmxpbmVfbnVtYmVyKCkpOworICBFWFBFQ1Rf
RVEoLTEsIHIyXy5saW5lX251bWJlcigpKTsKK30KKworLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6
Om1lc3NhZ2UoKS4KK1RFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIG1lc3NhZ2UpIHsKKyAgRVhQ
RUNUX1NUUkVRKCJTdWNjZXNzISIsIHIxXy5tZXNzYWdlKCkpOworfQorCisvLyBUZXN0cyBUZXN0
UGFydFJlc3VsdDo6cGFzc2VkKCkuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBQYXNzZWQp
IHsKKyAgRVhQRUNUX1RSVUUocjFfLnBhc3NlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHIyXy5wYXNz
ZWQoKSk7CisgIEVYUEVDVF9GQUxTRShyM18ucGFzc2VkKCkpOworfQorCisvLyBUZXN0cyBUZXN0
UGFydFJlc3VsdDo6ZmFpbGVkKCkuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBGYWlsZWQp
IHsKKyAgRVhQRUNUX0ZBTFNFKHIxXy5mYWlsZWQoKSk7CisgIEVYUEVDVF9UUlVFKHIyXy5mYWls
ZWQoKSk7CisgIEVYUEVDVF9UUlVFKHIzXy5mYWlsZWQoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RQ
YXJ0UmVzdWx0OjpmYXRhbGx5X2ZhaWxlZCgpLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwg
RmF0YWxseUZhaWxlZCkgeworICBFWFBFQ1RfRkFMU0UocjFfLmZhdGFsbHlfZmFpbGVkKCkpOwor
ICBFWFBFQ1RfRkFMU0UocjJfLmZhdGFsbHlfZmFpbGVkKCkpOworICBFWFBFQ1RfVFJVRShyM18u
ZmF0YWxseV9mYWlsZWQoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0Ojpub25mYXRh
bGx5X2ZhaWxlZCgpLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgTm9uZmF0YWxseUZhaWxl
ZCkgeworICBFWFBFQ1RfRkFMU0UocjFfLm5vbmZhdGFsbHlfZmFpbGVkKCkpOworICBFWFBFQ1Rf
VFJVRShyMl8ubm9uZmF0YWxseV9mYWlsZWQoKSk7CisgIEVYUEVDVF9GQUxTRShyM18ubm9uZmF0
YWxseV9mYWlsZWQoKSk7Cit9CisKKy8vIFRlc3RzIHRoZSBUZXN0UGFydFJlc3VsdEFycmF5IGNs
YXNzLgorCitjbGFzcyBUZXN0UGFydFJlc3VsdEFycmF5VGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBw
cm90ZWN0ZWQ6CisgIFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0KCkKKyAgICAgIDogcjFfKFRlc3RQ
YXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlLCAiZm9vL2Jhci5jYyIsIC0xLCAiRmFpbHVyZSAx
IiksCisgICAgICAgIHIyXyhUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwgImZvby9iYXIu
Y2MiLCAtMSwgIkZhaWx1cmUgMiIpIHt9CisKKyAgY29uc3QgVGVzdFBhcnRSZXN1bHQgcjFfLCBy
Ml87Cit9OworCisvLyBUZXN0cyB0aGF0IFRlc3RQYXJ0UmVzdWx0QXJyYXkgaW5pdGlhbGx5IGhh
cyBzaXplIDAuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRBcnJheVRlc3QsIEluaXRpYWxTaXplSXNa
ZXJvKSB7CisgIFRlc3RQYXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsKKyAgRVhQRUNUX0VRKDAsIHJl
c3VsdHMuc2l6ZSgpKTsKK30KKworLy8gVGVzdHMgdGhhdCBUZXN0UGFydFJlc3VsdEFycmF5IGNv
bnRhaW5zIHRoZSBnaXZlbiBUZXN0UGFydFJlc3VsdAorLy8gYWZ0ZXIgb25lIEFwcGVuZCgpIG9w
ZXJhdGlvbi4KK1RFU1RfRihUZXN0UGFydFJlc3VsdEFycmF5VGVzdCwgQ29udGFpbnNHaXZlblJl
c3VsdEFmdGVyQXBwZW5kKSB7CisgIFRlc3RQYXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsKKyAgcmVz
dWx0cy5BcHBlbmQocjFfKTsKKyAgRVhQRUNUX0VRKDEsIHJlc3VsdHMuc2l6ZSgpKTsKKyAgRVhQ
RUNUX1NUUkVRKCJGYWlsdXJlIDEiLCByZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDApLm1lc3Nh
Z2UoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgVGVzdFBhcnRSZXN1bHRBcnJheSBjb250YWlucyB0
aGUgZ2l2ZW4gVGVzdFBhcnRSZXN1bHRzCisvLyBhZnRlciB0d28gQXBwZW5kKCkgb3BlcmF0aW9u
cy4KK1RFU1RfRihUZXN0UGFydFJlc3VsdEFycmF5VGVzdCwgQ29udGFpbnNHaXZlblJlc3VsdHNB
ZnRlclR3b0FwcGVuZHMpIHsKKyAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOworICByZXN1
bHRzLkFwcGVuZChyMV8pOworICByZXN1bHRzLkFwcGVuZChyMl8pOworICBFWFBFQ1RfRVEoMiwg
cmVzdWx0cy5zaXplKCkpOworICBFWFBFQ1RfU1RSRVEoIkZhaWx1cmUgMSIsIHJlc3VsdHMuR2V0
VGVzdFBhcnRSZXN1bHQoMCkubWVzc2FnZSgpKTsKKyAgRVhQRUNUX1NUUkVRKCJGYWlsdXJlIDIi
LCByZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDEpLm1lc3NhZ2UoKSk7Cit9CisKK3R5cGVkZWYg
VGVzdFBhcnRSZXN1bHRBcnJheVRlc3QgVGVzdFBhcnRSZXN1bHRBcnJheURlYXRoVGVzdDsKKwor
Ly8gVGVzdHMgdGhhdCB0aGUgcHJvZ3JhbSBkaWVzIHdoZW4gR2V0VGVzdFBhcnRSZXN1bHQoKSBp
cyBjYWxsZWQgd2l0aAorLy8gYW4gaW52YWxpZCBpbmRleC4KK1RFU1RfRihUZXN0UGFydFJlc3Vs
dEFycmF5RGVhdGhUZXN0LCBEaWVzV2hlbkluZGV4SXNPdXRPZkJvdW5kKSB7CisgIFRlc3RQYXJ0
UmVzdWx0QXJyYXkgcmVzdWx0czsKKyAgcmVzdWx0cy5BcHBlbmQocjFfKTsKKworICBFWFBFQ1Rf
REVBVEhfSUZfU1VQUE9SVEVEKHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoLTEpLCAiIik7Cisg
IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQocmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgxKSwg
IiIpOworfQorCisvLyBGSVhNRTogQWRkIGEgdGVzdCBmb3IgdGhlIGNsYXNzIEhhc05ld0ZhdGFs
RmFpbHVyZUhlbHBlci4KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdGVzdDJfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10ZXN0Ml90ZXN0LmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMy
Zjk4ZGM3ZDFjM2U5MDk3NThiYTYwNzcyZTk3NzQ5OGNlODFmZjIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdGVzdDJfdGVzdC5jYwpA
QCAtMCwwICsxLDYxIEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBt
ZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKy8vCisvLyBUZXN0cyBmb3IgR29vZ2xlIFRlc3QgaXRzZWxmLiAgVGhpcyB2ZXJpZmll
cyB0aGF0IHRoZSBiYXNpYyBjb25zdHJ1Y3RzIG9mCisvLyBHb29nbGUgVGVzdCB3b3JrLgorCisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJnb29nbGV0ZXN0LXBhcmFtLXRlc3Qt
dGVzdC5oIgorCit1c2luZyA6OnRlc3Rpbmc6OlZhbHVlczsKK3VzaW5nIDo6dGVzdGluZzo6aW50
ZXJuYWw6OlBhcmFtR2VuZXJhdG9yOworCisvLyBUZXN0cyB0aGF0IGdlbmVyYXRvcnMgZGVmaW5l
ZCBpbiBhIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0CisvLyBhcmUgZnVuY3Rpb25hbC4gVGhl
IHRlc3QgdXNpbmcgZXh0ZXJuX2dlbl8yIGlzIGRlZmluZWQKKy8vIGluIGdvb2dsZXRlc3QtcGFy
YW0tdGVzdC10ZXN0LmNjLgorUGFyYW1HZW5lcmF0b3I8aW50PiBleHRlcm5fZ2VuXzIgPSBWYWx1
ZXMoMzMpOworCisvLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJl
IGRlZmluZWQgaW4gb25lIHRyYW5zbGF0aW9uIHVuaXQKKy8vIGFuZCBpbnN0YW50aWF0ZWQgaW4g
YW5vdGhlci4gVGhlIHRlc3QgaXMgZGVmaW5lZCBpbgorLy8gZ29vZ2xldGVzdC1wYXJhbS10ZXN0
LXRlc3QuY2MgYW5kIEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3QgZml4dHVyZSBjbGFzcyBpcwor
Ly8gZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaC4KK0lOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QKE11bHRpcGxlc09mMzMsCisgICAgICAgICAgICAgICAgICAgICAgICBFeHRlcm5hbElu
c3RhbnRpYXRpb25UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDMzLCA2Nikp
OworCisvLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGluc3Rh
bnRpYXRlZAorLy8gaW4gbXVsdGlwbGUgdHJhbnNsYXRpb24gdW5pdHMuIEFub3RoZXIgaW5zdGFu
dGlhdGlvbiBpcyBkZWZpbmVkCisvLyBpbiBnb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYyBh
bmQKKy8vIEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCBmaXh0dXJl
IGlzIGRlZmluZWQgaW4KKy8vIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oCitJTlNUQU5USUFURV9U
RVNUX0NBU0VfUChTZXF1ZW5jZTIsCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0
aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICBWYWx1ZXMoNDIqMywgNDIqNCwgNDIqNSkpOworCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0LnB5IGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVz
dC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NmNiOWY2ZGEzMWRlYWRmZDdlZWZkMjM1ZTliMzdkZjI5ZmIzYmFm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdC5weQpAQCAtMCwwICsxLDE2OSBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVGVzdHMgR29vZ2xlIFRlc3Qn
cyB0aHJvdy1vbi1mYWlsdXJlIG1vZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLgorCitUaGlz
IHNjcmlwdCBpbnZva2VzIGdvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0XyAoYSBwcm9n
cmFtIHdyaXR0ZW4gd2l0aAorR29vZ2xlIFRlc3QpIHdpdGggZGlmZmVyZW50IGVudmlyb25tZW50
cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdzLgorIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IGd0ZXN0
X3Rlc3RfdXRpbHMKKworCisjIENvbnN0YW50cy4KKworIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcg
Zm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLgorVEhST1df
T05fRkFJTFVSRSA9ICdndGVzdF90aHJvd19vbl9mYWlsdXJlJworCisjIFBhdGggdG8gdGhlIGdv
b2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0XyBwcm9ncmFtLCBjb21waWxlZCB3aXRoCisj
IGV4Y2VwdGlvbnMgZGlzYWJsZWQuCitFWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVz
dEV4ZWN1dGFibGVQYXRoKAorICAgICdnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8n
KQorCisKKyMgVXRpbGl0aWVzLgorCisKK2RlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgor
ICAiIiJTZXRzIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEgZ2l2ZW4gdmFsdWU7IHVuc2V0
cyBpdCB3aGVuIHRoZQorICBnaXZlbiB2YWx1ZSBpcyBOb25lLgorICAiIiIKKworICBlbnZfdmFy
ID0gZW52X3Zhci51cHBlcigpCisgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAgIG9zLmVudmly
b25bZW52X3Zhcl0gPSB2YWx1ZQorICBlbGlmIGVudl92YXIgaW4gb3MuZW52aXJvbjoKKyAgICBk
ZWwgb3MuZW52aXJvbltlbnZfdmFyXQorCisKK2RlZiBSdW4oY29tbWFuZCk6CisgICIiIlJ1bnMg
YSBjb21tYW5kOyByZXR1cm5zIFRydWUvRmFsc2UgaWYgaXRzIGV4aXQgY29kZSBpcy9pc24ndCAw
LiIiIgorCisgIHByaW50ICdSdW5uaW5nICIlcyIuIC4gLicgJSAnICcuam9pbihjb21tYW5kKQor
ICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCisgIHJldHVybiBwLmV4
aXRlZCBhbmQgcC5leGl0X2NvZGUgPT0gMAorCisKKyMgVGhlIHRlc3RzLiAgRklYTUU6IHJlZmFj
dG9yIHRoZSBjbGFzcyB0byBzaGFyZSBjb21tb24KKyMgbG9naWMgd2l0aCBjb2RlIGluIGdvb2ds
ZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdC5weS4KK2NsYXNzIFRocm93T25GYWlsdXJl
VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgIiIiVGVzdHMgdGhlIHRocm93LW9u
LWZhaWx1cmUgbW9kZS4iIiIKKworICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGVudl92YXJfdmFs
dWUsIGZsYWdfdmFsdWUsIHNob3VsZF9mYWlsKToKKyAgICAiIiJSdW5zIGdvb2dsZXRlc3QtdGhy
b3ctb24tZmFpbHVyZS10ZXN0XyBhbmQgdmVyaWZpZXMgdGhhdCBpdCBkb2VzCisgICAgKG9yIGRv
ZXMgbm90KSBleGl0IHdpdGggYSBub24temVybyBjb2RlLgorCisgICAgQXJnczoKKyAgICAgIGVu
dl92YXJfdmFsdWU6ICAgIHZhbHVlIG9mIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVudmly
b25tZW50CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZTsgTm9uZSBpZiB0aGUgdmFy
aWFibGUgc2hvdWxkIGJlIHVuc2V0LgorICAgICAgZmxhZ192YWx1ZTogICAgICAgdmFsdWUgb2Yg
dGhlIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnOworICAgICAgICAgICAgICAgICAgICAg
ICAgTm9uZSBpZiB0aGUgZmxhZyBzaG91bGQgbm90IGJlIHByZXNlbnQuCisgICAgICBzaG91bGRf
ZmFpbDogICAgICBUcnVlIGlmZiB0aGUgcHJvZ3JhbSBpcyBleHBlY3RlZCB0byBmYWlsLgorICAg
ICIiIgorCisgICAgU2V0RW52VmFyKFRIUk9XX09OX0ZBSUxVUkUsIGVudl92YXJfdmFsdWUpCisK
KyAgICBpZiBlbnZfdmFyX3ZhbHVlIGlzIE5vbmU6CisgICAgICBlbnZfdmFyX3ZhbHVlX21zZyA9
ICcgaXMgbm90IHNldCcKKyAgICBlbHNlOgorICAgICAgZW52X3Zhcl92YWx1ZV9tc2cgPSAnPScg
KyBlbnZfdmFyX3ZhbHVlCisKKyAgICBpZiBmbGFnX3ZhbHVlIGlzIE5vbmU6CisgICAgICBmbGFn
ID0gJycKKyAgICBlbGlmIGZsYWdfdmFsdWUgPT0gJzAnOgorICAgICAgZmxhZyA9ICctLSVzPTAn
ICUgVEhST1dfT05fRkFJTFVSRQorICAgIGVsc2U6CisgICAgICBmbGFnID0gJy0tJXMnICUgVEhS
T1dfT05fRkFJTFVSRQorCisgICAgY29tbWFuZCA9IFtFWEVfUEFUSF0KKyAgICBpZiBmbGFnOgor
ICAgICAgY29tbWFuZC5hcHBlbmQoZmxhZykKKworICAgIGlmIHNob3VsZF9mYWlsOgorICAgICAg
c2hvdWxkX29yX25vdCA9ICdzaG91bGQnCisgICAgZWxzZToKKyAgICAgIHNob3VsZF9vcl9ub3Qg
PSAnc2hvdWxkIG5vdCcKKworICAgIGZhaWxlZCA9IG5vdCBSdW4oY29tbWFuZCkKKworICAgIFNl
dEVudlZhcihUSFJPV19PTl9GQUlMVVJFLCBOb25lKQorCisgICAgbXNnID0gKCd3aGVuICVzJXMs
IGFuIGFzc2VydGlvbiBmYWlsdXJlIGluICIlcyIgJXMgY2F1c2UgYSBub24temVybyAnCisgICAg
ICAgICAgICdleGl0IGNvZGUuJyAlCisgICAgICAgICAgIChUSFJPV19PTl9GQUlMVVJFLCBlbnZf
dmFyX3ZhbHVlX21zZywgJyAnLmpvaW4oY29tbWFuZCksCisgICAgICAgICAgICBzaG91bGRfb3Jf
bm90KSkKKyAgICBzZWxmLmFzc2VydF8oZmFpbGVkID09IHNob3VsZF9mYWlsLCBtc2cpCisKKyAg
ZGVmIHRlc3REZWZhdWx0QmVoYXZpb3Ioc2VsZik6CisgICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9y
IG9mIHRoZSBkZWZhdWx0IG1vZGUuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFy
X3ZhbHVlPU5vbmUsIGZsYWdfdmFsdWU9Tm9uZSwgc2hvdWxkX2ZhaWw9RmFsc2UpCisKKyAgZGVm
IHRlc3RUaHJvd09uRmFpbHVyZUVudlZhcihzZWxmKToKKyAgICAiIiJUZXN0cyB1c2luZyB0aGUg
R1RFU1RfVEhST1dfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZS4iIiIKKworICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAg
IGZsYWdfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1GYWxz
ZSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKKyAgICAgICAgICAg
ICAgICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgc2hvdWxk
X2ZhaWw9VHJ1ZSkKKworICBkZWYgdGVzdFRocm93T25GYWlsdXJlRmxhZyhzZWxmKToKKyAgICAi
IiJUZXN0cyB1c2luZyB0aGUgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlIGZsYWcuIiIiCisKKyAg
ICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ192YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9
RmFsc2UpCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAorICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIHNo
b3VsZF9mYWlsPVRydWUpCisKKyAgZGVmIHRlc3RUaHJvd09uRmFpbHVyZUZsYWdPdmVycmlkZXNF
bnZWYXIoc2VsZik6CisgICAgIiIiVGVzdHMgdGhhdCAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmUg
b3ZlcnJpZGVzIEdURVNUX1RIUk9XX09OX0ZBSUxVUkUuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZl
cmlmeShlbnZfdmFyX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVl
PScwJywKKyAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1GYWxzZSkKKyAgICBzZWxm
LlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBm
bGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1UcnVlKQor
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAg
ICAgICAgIGZsYWdfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWls
PUZhbHNlKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAorICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIHNo
b3VsZF9mYWlsPVRydWUpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rlc3Rf
dGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8uY2MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjlhMmM2NDQ4YTI5Y2EyOTY0OWExMjQ4MDU5YTk4NWE1MWFmODYzNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10aHJvdy1v
bi1mYWlsdXJlLXRlc3RfLmNjCkBAIC0wLDAgKzEsNzEgQEAKKy8vIENvcHlyaWdodCAyMDA5LCBH
b29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
Ly8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBUZXN0cyBHb29nbGUgVGVzdCdzIHRocm93
LW9uLWZhaWx1cmUgbW9kZSB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQuCisvLworLy8gVGhpcyBw
cm9ncmFtIG11c3QgYmUgY29tcGlsZWQgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLiAgSXQgd2ls
bCBiZQorLy8gaW52b2tlZCBieSBnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdC5weSwg
YW5kIGlzIGV4cGVjdGVkIHRvIGV4aXQKKy8vIHdpdGggbm9uLXplcm8gaW4gdGhlIHRocm93LW9u
LWZhaWx1cmUgbW9kZSBvciAwIG90aGVyd2lzZS4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CisKKyNpbmNsdWRlIDxzdGRpby5oPiAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgZmZsdXNo
LCBmcHJpbnRmLCBOVUxMLCBldGMuCisjaW5jbHVkZSA8c3RkbGliLmg+ICAgICAgICAgICAgICAg
ICAgICAgLy8gZm9yIGV4aXQKKyNpbmNsdWRlIDxleGNlcHRpb24+ICAgICAgICAgICAgICAgICAg
ICAvLyBmb3Igc2V0X3Rlcm1pbmF0ZQorCisvLyBUaGlzIHRlcm1pbmF0ZSBoYW5kbGVyIGFib3J0
cyB0aGUgcHJvZ3JhbSB1c2luZyBleGl0KCkgcmF0aGVyIHRoYW4gYWJvcnQoKS4KKy8vIFRoaXMg
YXZvaWRzIHNob3dpbmcgcG9wLXVwcyBvbiBXaW5kb3dzIHN5c3RlbXMgYW5kIGNvcmUgZHVtcHMg
b24gVW5peC1saWtlCisvLyBvbmVzLgordm9pZCBUZXJtaW5hdGVIYW5kbGVyKCkgeworICBmcHJp
bnRmKHN0ZGVyciwgIiVzXG4iLCAiVW5oYW5kbGVkIEMrKyBleGNlcHRpb24gdGVybWluYXRpbmcg
dGhlIHByb2dyYW0uIik7CisgIGZmbHVzaChOVUxMKTsKKyAgZXhpdCgxKTsKK30KKworaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKyAg
c3RkOjpzZXRfdGVybWluYXRlKCZUZXJtaW5hdGVIYW5kbGVyKTsKKyNlbmRpZgorICB0ZXN0aW5n
OjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgLy8gV2Ugd2FudCB0byBlbnN1cmUg
dGhhdCBwZW9wbGUgY2FuIHVzZSBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGluCisgIC8vIG90aGVy
IHRlc3RpbmcgZnJhbWV3b3JrcywgYXMgbG9uZyBhcyB0aGV5IGluaXRpYWxpemUgR29vZ2xlIFRl
c3QKKyAgLy8gcHJvcGVybHkgYW5kIHNldCB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLiAgVGhl
cmVmb3JlLCB3ZSBkb24ndAorICAvLyB1c2UgR29vZ2xlIFRlc3QncyBjb25zdHJ1Y3RzIGZvciBk
ZWZpbmluZyBhbmQgcnVubmluZyB0ZXN0cworICAvLyAoZS5nLiBURVNUIGFuZCBSVU5fQUxMX1RF
U1RTKSBoZXJlLgorCisgIC8vIEluIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUgd2l0aCBleGNl
cHRpb25zIGRpc2FibGVkLCB0aGlzCisgIC8vIGFzc2VydGlvbiB3aWxsIGNhdXNlIHRoZSBwcm9n
cmFtIHRvIGV4aXQgd2l0aCBhIG5vbi16ZXJvIGNvZGUuCisgIEVYUEVDVF9FUSgyLCAzKTsKKwor
ICAvLyBXaGVuIG5vdCBpbiB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLCB0aGUgY29udHJvbCB3
aWxsIHJlYWNoCisgIC8vIGhlcmUuCisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXR1cGxlLXRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdHVwbGUtdGVzdC5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kZDgyYzE2MGYxNzdkNmYzYmFkZDc3MDY0YWI4YzdlOThiZDI5NzY3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXR1cGxlLXRlc3Qu
Y2MKQEAgLTAsMCArMSwzMTkgQEAKKy8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgorLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
Ky8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
Ky8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaCIKKyNp
bmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7
CisKK3VzaW5nIDo6c3RkOjp0cjE6OmdldDsKK3VzaW5nIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGU7
Cit1c2luZyA6OnN0ZDo6dHIxOjp0dXBsZTsKK3VzaW5nIDo6c3RkOjp0cjE6OnR1cGxlX2VsZW1l
bnQ7Cit1c2luZyA6OnN0ZDo6dHIxOjp0dXBsZV9zaXplOwordXNpbmcgOjp0ZXN0aW5nOjpTdGF0
aWNBc3NlcnRUeXBlRXE7CisKKy8vIFRlc3RzIHRoYXQgdHVwbGVfZWxlbWVudDxLLCB0dXBsZTxU
MCwgVDEsIC4uLiwgVE4+ID46OnR5cGUgcmV0dXJucyBUSy4KK1RFU1QodHVwbGVfZWxlbWVudF9U
ZXN0LCBSZXR1cm5zRWxlbWVudFR5cGUpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCwgdHVw
bGVfZWxlbWVudDwwLCB0dXBsZTxpbnQsIGNoYXI+ID46OnR5cGU+KCk7CisgIFN0YXRpY0Fzc2Vy
dFR5cGVFcTxpbnQmLCB0dXBsZV9lbGVtZW50PDEsIHR1cGxlPGRvdWJsZSwgaW50Jj4gPjo6dHlw
ZT4oKTsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGJvb2wsIHR1cGxlX2VsZW1lbnQ8MiwgdHVwbGU8
ZG91YmxlLCBpbnQsIGJvb2w+ID46OnR5cGU+KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdHVwbGVf
c2l6ZTxUPjo6dmFsdWUgZ2l2ZXMgdGhlIG51bWJlciBvZiBmaWVsZHMgaW4gdHVwbGUKKy8vIHR5
cGUgVC4KK1RFU1QodHVwbGVfc2l6ZV9UZXN0LCBSZXR1cm5zTnVtYmVyT2ZGaWVsZHMpIHsKKyAg
RVhQRUNUX0VRKDAsICt0dXBsZV9zaXplPHR1cGxlPD4gPjo6dmFsdWUpOworICBFWFBFQ1RfRVEo
MSwgK3R1cGxlX3NpemU8dHVwbGU8dm9pZCo+ID46OnZhbHVlKTsKKyAgRVhQRUNUX0VRKDEsICt0
dXBsZV9zaXplPHR1cGxlPGNoYXI+ID46OnZhbHVlKTsKKyAgRVhQRUNUX0VRKDEsICsodHVwbGVf
c2l6ZTx0dXBsZTx0dXBsZTxpbnQsIGRvdWJsZT4gPiA+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRVEo
MiwgKyh0dXBsZV9zaXplPHR1cGxlPGludCYsIGNvbnN0IGNoYXI+ID46OnZhbHVlKSk7CisgIEVY
UEVDVF9FUSgzLCArKHR1cGxlX3NpemU8dHVwbGU8Y2hhciosIHZvaWQsIGNvbnN0IGJvb2wmPiA+
Ojp2YWx1ZSkpOworfQorCisvLyBUZXN0cyBjb21wYXJpbmcgYSB0dXBsZSB3aXRoIGl0c2VsZi4K
K1RFU1QoQ29tcGFyaXNvblRlc3QsIENvbXBhcmVzV2l0aFNlbGYpIHsKKyAgY29uc3QgdHVwbGU8
aW50LCBjaGFyLCBib29sPiBhKDUsICdhJywgZmFsc2UpOworCisgIEVYUEVDVF9UUlVFKGEgPT0g
YSk7CisgIEVYUEVDVF9GQUxTRShhICE9IGEpOworfQorCisvLyBUZXN0cyBjb21wYXJpbmcgdHdv
IHR1cGxlcyB3aXRoIHRoZSBzYW1lIHZhbHVlLgorVEVTVChDb21wYXJpc29uVGVzdCwgQ29tcGFy
ZXNFcXVhbFR1cGxlcykgeworICBjb25zdCB0dXBsZTxpbnQsIGJvb2w+IGEoNSwgdHJ1ZSksIGIo
NSwgdHJ1ZSk7CisKKyAgRVhQRUNUX1RSVUUoYSA9PSBiKTsKKyAgRVhQRUNUX0ZBTFNFKGEgIT0g
Yik7Cit9CisKKy8vIFRlc3RzIGNvbXBhcmluZyB0d28gZGlmZmVyZW50IHR1cGxlcyB0aGF0IGhh
dmUgbm8gcmVmZXJlbmNlIGZpZWxkcy4KK1RFU1QoQ29tcGFyaXNvblRlc3QsIENvbXBhcmVzVW5l
cXVhbFR1cGxlc1dpdGhvdXRSZWZlcmVuY2VGaWVsZHMpIHsKKyAgdHlwZWRlZiB0dXBsZTxjb25z
dCBpbnQsIGNoYXI+IEZvb1R1cGxlOworCisgIGNvbnN0IEZvb1R1cGxlIGEoMCwgJ3gnKTsKKyAg
Y29uc3QgRm9vVHVwbGUgYigxLCAnYScpOworCisgIEVYUEVDVF9UUlVFKGEgIT0gYik7CisgIEVY
UEVDVF9GQUxTRShhID09IGIpOworCisgIGNvbnN0IEZvb1R1cGxlIGMoMSwgJ2InKTsKKworICBF
WFBFQ1RfVFJVRShiICE9IGMpOworICBFWFBFQ1RfRkFMU0UoYiA9PSBjKTsKK30KKworLy8gVGVz
dHMgY29tcGFyaW5nIHR3byBkaWZmZXJlbnQgdHVwbGVzIHRoYXQgaGF2ZSByZWZlcmVuY2UgZmll
bGRzLgorVEVTVChDb21wYXJpc29uVGVzdCwgQ29tcGFyZXNVbmVxdWFsVHVwbGVzV2l0aFJlZmVy
ZW5jZUZpZWxkcykgeworICB0eXBlZGVmIHR1cGxlPGludCYsIGNvbnN0IGNoYXImPiBGb29UdXBs
ZTsKKworICBpbnQgaSA9IDU7CisgIGNvbnN0IGNoYXIgY2ggPSAnYSc7CisgIGNvbnN0IEZvb1R1
cGxlIGEoaSwgY2gpOworCisgIGludCBqID0gNjsKKyAgY29uc3QgRm9vVHVwbGUgYihqLCBjaCk7
CisKKyAgRVhQRUNUX1RSVUUoYSAhPSBiKTsKKyAgRVhQRUNUX0ZBTFNFKGEgPT0gYik7CisKKyAg
aiA9IDU7CisgIGNvbnN0IGNoYXIgY2gyID0gJ2InOworICBjb25zdCBGb29UdXBsZSBjKGosIGNo
Mik7CisKKyAgRVhQRUNUX1RSVUUoYiAhPSBjKTsKKyAgRVhQRUNUX0ZBTFNFKGIgPT0gYyk7Cit9
CisKKy8vIFRlc3RzIHRoYXQgYSB0dXBsZSBmaWVsZCB3aXRoIGEgcmVmZXJlbmNlIHR5cGUgaXMg
YW4gYWxpYXMgb2YgdGhlCisvLyB2YXJpYWJsZSBpdCdzIHN1cHBvc2VkIHRvIHJlZmVyZW5jZS4K
K1RFU1QoUmVmZXJlbmNlRmllbGRUZXN0LCBJc0FsaWFzT2ZSZWZlcmVuY2VkVmFyaWFibGUpIHsK
KyAgaW50IG4gPSAwOworICB0dXBsZTxib29sLCBpbnQmPiB0KHRydWUsIG4pOworCisgIG4gPSAx
OworICBFWFBFQ1RfRVEobiwgZ2V0PDE+KHQpKQorICAgICAgPDwgIkNoYW5naW5nIGEgdW5kZXJs
eWluZyB2YXJpYWJsZSBzaG91bGQgdXBkYXRlIHRoZSByZWZlcmVuY2UgZmllbGQuIjsKKworICAv
LyBNYWtlcyBzdXJlIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgZG8gYW55dGhpbmcg
ZnVubnkgd2l0aAorICAvLyB0aGUgJiBvcGVyYXRvciBmb3IgdGhlIHJldHVybiB0eXBlIG9mIGdl
dDw+KCkuCisgIEVYUEVDVF9FUSgmbiwgJihnZXQ8MT4odCkpKQorICAgICAgPDwgIlRoZSBhZGRy
ZXNzIG9mIGEgcmVmZXJlbmNlIGZpZWxkIHNob3VsZCBlcXVhbCB0aGUgYWRkcmVzcyBvZiAiCisg
ICAgICA8PCAidGhlIHVuZGVybHlpbmcgdmFyaWFibGUuIjsKKworICBnZXQ8MT4odCkgPSAyOwor
ICBFWFBFQ1RfRVEoMiwgbikKKyAgICAgIDw8ICJDaGFuZ2luZyBhIHJlZmVyZW5jZSBmaWVsZCBz
aG91bGQgdXBkYXRlIHRoZSB1bmRlcmx5aW5nIHZhcmlhYmxlLiI7Cit9CisKKy8vIFRlc3RzIHRo
YXQgdHVwbGUncyBkZWZhdWx0IGNvbnN0cnVjdG9yIGRlZmF1bHQgaW5pdGlhbGl6ZXMgZWFjaCBm
aWVsZC4KKy8vIFRoaXMgdGVzdCBuZWVkcyB0byBjb21waWxlIHdpdGhvdXQgZ2VuZXJhdGluZyB3
YXJuaW5ncy4KK1RFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvckRl
ZmF1bHRJbml0aWFsaXplc0VhY2hGaWVsZCkgeworICAvLyBUaGUgVFIxIHJlcG9ydCByZXF1aXJl
cyB0aGF0IHR1cGxlJ3MgZGVmYXVsdCBjb25zdHJ1Y3RvciBkZWZhdWx0CisgIC8vIGluaXRpYWxp
emVzIGVhY2ggZmllbGQsIGV2ZW4gaWYgaXQncyBhIHByaW1pdGl2ZSB0eXBlLiAgSWYgdGhlCisg
IC8vIGltcGxlbWVudGF0aW9uIGZvcmdldHMgdG8gZG8gdGhpcywgdGhpcyB0ZXN0IHdpbGwgY2F0
Y2ggaXQgYnkKKyAgLy8gZ2VuZXJhdGluZyB3YXJuaW5ncyBhYm91dCB1c2luZyB1bmluaXRpYWxp
emVkIHZhcmlhYmxlcyAoYXNzdW1pbmcKKyAgLy8gYSBkZWNlbnQgY29tcGlsZXIpLgorCisgIHR1
cGxlPD4gZW1wdHk7CisKKyAgdHVwbGU8aW50PiBhMSwgYjE7CisgIGIxID0gYTE7CisgIEVYUEVD
VF9FUSgwLCBnZXQ8MD4oYjEpKTsKKworICB0dXBsZTxpbnQsIGRvdWJsZT4gYTIsIGIyOworICBi
MiA9IGEyOworICBFWFBFQ1RfRVEoMCwgZ2V0PDA+KGIyKSk7CisgIEVYUEVDVF9FUSgwLjAsIGdl
dDwxPihiMikpOworCisgIHR1cGxlPGRvdWJsZSwgY2hhciwgYm9vbCo+IGEzLCBiMzsKKyAgYjMg
PSBhMzsKKyAgRVhQRUNUX0VRKDAuMCwgZ2V0PDA+KGIzKSk7CisgIEVYUEVDVF9FUSgnXDAnLCBn
ZXQ8MT4oYjMpKTsKKyAgRVhQRUNUX1RSVUUoZ2V0PDI+KGIzKSA9PSBOVUxMKTsKKworICB0dXBs
ZTxpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQ+IGExMCwg
YjEwOworICBiMTAgPSBhMTA7CisgIEVYUEVDVF9FUSgwLCBnZXQ8MD4oYjEwKSk7CisgIEVYUEVD
VF9FUSgwLCBnZXQ8MT4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8Mj4oYjEwKSk7CisgIEVY
UEVDVF9FUSgwLCBnZXQ8Mz4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8ND4oYjEwKSk7Cisg
IEVYUEVDVF9FUSgwLCBnZXQ8NT4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8Nj4oYjEwKSk7
CisgIEVYUEVDVF9FUSgwLCBnZXQ8Nz4oYjEwKSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8OD4oYjEw
KSk7CisgIEVYUEVDVF9FUSgwLCBnZXQ8OT4oYjEwKSk7Cit9CisKKy8vIFRlc3RzIGNvbnN0cnVj
dGluZyBhIHR1cGxlIGZyb20gaXRzIGZpZWxkcy4KK1RFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3Qs
IENvbnN0cnVjdHNGcm9tRmllbGRzKSB7CisgIGludCBuID0gMTsKKyAgLy8gUmVmZXJlbmNlIGZp
ZWxkLgorICB0dXBsZTxpbnQmPiBhKG4pOworICBFWFBFQ1RfRVEoJm4sICYoZ2V0PDA+KGEpKSk7
CisKKyAgLy8gTm9uLXJlZmVyZW5jZSBmaWVsZHMuCisgIHR1cGxlPGludCwgY2hhcj4gYig1LCAn
YScpOworICBFWFBFQ1RfRVEoNSwgZ2V0PDA+KGIpKTsKKyAgRVhQRUNUX0VRKCdhJywgZ2V0PDE+
KGIpKTsKKworICAvLyBDb25zdCByZWZlcmVuY2UgZmllbGQuCisgIGNvbnN0IGludCBtID0gMjsK
KyAgdHVwbGU8Ym9vbCwgY29uc3QgaW50Jj4gYyh0cnVlLCBtKTsKKyAgRVhQRUNUX1RSVUUoZ2V0
PDA+KGMpKTsKKyAgRVhQRUNUX0VRKCZtLCAmKGdldDwxPihjKSkpOworfQorCisvLyBUZXN0cyB0
dXBsZSdzIGNvcHkgY29uc3RydWN0b3IuCitURVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBDb3B5
Q29uc3RydWN0b3IpIHsKKyAgdHVwbGU8ZG91YmxlLCBib29sPiBhKDAuMCwgdHJ1ZSk7CisgIHR1
cGxlPGRvdWJsZSwgYm9vbD4gYihhKTsKKworICBFWFBFQ1RfRE9VQkxFX0VRKDAuMCwgZ2V0PDA+
KGIpKTsKKyAgRVhQRUNUX1RSVUUoZ2V0PDE+KGIpKTsKK30KKworLy8gVGVzdHMgY29uc3RydWN0
aW5nIGEgdHVwbGUgZnJvbSBhbm90aGVyIHR1cGxlIHRoYXQgaGFzIGEgY29tcGF0aWJsZQorLy8g
YnV0IGRpZmZlcmVudCB0eXBlLgorVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgQ29uc3RydWN0
c0Zyb21EaWZmZXJlbnRUdXBsZVR5cGUpIHsKKyAgdHVwbGU8aW50LCBpbnQsIGNoYXI+IGEoMCwg
MSwgJ2EnKTsKKyAgdHVwbGU8ZG91YmxlLCBsb25nLCBpbnQ+IGIoYSk7CisKKyAgRVhQRUNUX0RP
VUJMRV9FUSgwLjAsIGdldDwwPihiKSk7CisgIEVYUEVDVF9FUSgxLCBnZXQ8MT4oYikpOworICBF
WFBFQ1RfRVEoJ2EnLCBnZXQ8Mj4oYikpOworfQorCisvLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSAy
LXR1cGxlIGZyb20gYW4gc3RkOjpwYWlyLgorVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgQ29u
c3RydWN0c0Zyb21QYWlyKSB7CisgIDo6c3RkOjpwYWlyPGludCwgY2hhcj4gYSgxLCAnYScpOwor
ICB0dXBsZTxpbnQsIGNoYXI+IGIoYSk7CisgIHR1cGxlPGludCwgY29uc3QgY2hhciY+IGMoYSk7
Cit9CisKKy8vIFRlc3RzIGFzc2lnbmluZyBhIHR1cGxlIHRvIGFub3RoZXIgdHVwbGUgd2l0aCB0
aGUgc2FtZSB0eXBlLgorVEVTVChUdXBsZUFzc2lnbm1lbnRUZXN0LCBBc3NpZ25zVG9TYW1lVHVw
bGVUeXBlKSB7CisgIGNvbnN0IHR1cGxlPGludCwgbG9uZz4gYSg1LCA3TCk7CisgIHR1cGxlPGlu
dCwgbG9uZz4gYjsKKyAgYiA9IGE7CisgIEVYUEVDVF9FUSg1LCBnZXQ8MD4oYikpOworICBFWFBF
Q1RfRVEoN0wsIGdldDwxPihiKSk7Cit9CisKKy8vIFRlc3RzIGFzc2lnbmluZyBhIHR1cGxlIHRv
IGFub3RoZXIgdHVwbGUgd2l0aCBhIGRpZmZlcmVudCBidXQKKy8vIGNvbXBhdGlibGUgdHlwZS4K
K1RFU1QoVHVwbGVBc3NpZ25tZW50VGVzdCwgQXNzaWduc1RvRGlmZmVyZW50VHVwbGVUeXBlKSB7
CisgIGNvbnN0IHR1cGxlPGludCwgbG9uZywgYm9vbD4gYSgxLCA3TCwgdHJ1ZSk7CisgIHR1cGxl
PGxvbmcsIGludCwgYm9vbD4gYjsKKyAgYiA9IGE7CisgIEVYUEVDVF9FUSgxTCwgZ2V0PDA+KGIp
KTsKKyAgRVhQRUNUX0VRKDcsIGdldDwxPihiKSk7CisgIEVYUEVDVF9UUlVFKGdldDwyPihiKSk7
Cit9CisKKy8vIFRlc3RzIGFzc2lnbmluZyBhbiBzdGQ6OnBhaXIgdG8gYSAyLXR1cGxlLgorVEVT
VChUdXBsZUFzc2lnbm1lbnRUZXN0LCBBc3NpZ25zRnJvbVBhaXIpIHsKKyAgY29uc3QgOjpzdGQ6
OnBhaXI8aW50LCBib29sPiBhKDUsIHRydWUpOworICB0dXBsZTxpbnQsIGJvb2w+IGI7CisgIGIg
PSBhOworICBFWFBFQ1RfRVEoNSwgZ2V0PDA+KGIpKTsKKyAgRVhQRUNUX1RSVUUoZ2V0PDE+KGIp
KTsKKworICB0dXBsZTxsb25nLCBib29sPiBjOworICBjID0gYTsKKyAgRVhQRUNUX0VRKDVMLCBn
ZXQ8MD4oYykpOworICBFWFBFQ1RfVFJVRShnZXQ8MT4oYykpOworfQorCisvLyBBIGZpeHR1cmUg
Zm9yIHRlc3RpbmcgYmlnIHR1cGxlcy4KK2NsYXNzIEJpZ1R1cGxlVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHR5cGVkZWYgdHVwbGU8aW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50PiBCaWdUdXBsZTsKKworICBCaWdUdXBs
ZVRlc3QoKSA6CisgICAgICBhXygxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyKSwKKyAgICAg
IGJfKDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMpIHt9CisKKyAgQmlnVHVwbGUgYV8sIGJf
OworfTsKKworLy8gVGVzdHMgY29uc3RydWN0aW5nIGJpZyB0dXBsZXMuCitURVNUX0YoQmlnVHVw
bGVUZXN0LCBDb25zdHJ1Y3Rpb24pIHsKKyAgQmlnVHVwbGUgYTsKKyAgQmlnVHVwbGUgYihiXyk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgZ2V0PE4+KHQpIHJldHVybnMgdGhlIE4tdGggKDAtYmFzZWQp
IGZpZWxkIG9mIHR1cGxlIHQuCitURVNUX0YoQmlnVHVwbGVUZXN0LCBnZXQpIHsKKyAgRVhQRUNU
X0VRKDEsIGdldDwwPihhXykpOworICBFWFBFQ1RfRVEoMiwgZ2V0PDk+KGFfKSk7CisKKyAgLy8g
VGVzdHMgdGhhdCBnZXQoKSB3b3JrcyBvbiBhIGNvbnN0IHR1cGxlIHRvby4KKyAgY29uc3QgQmln
VHVwbGUgYShhXyk7CisgIEVYUEVDVF9FUSgxLCBnZXQ8MD4oYSkpOworICBFWFBFQ1RfRVEoMiwg
Z2V0PDk+KGEpKTsKK30KKworLy8gVGVzdHMgY29tcGFyaW5nIGJpZyB0dXBsZXMuCitURVNUX0Yo
QmlnVHVwbGVUZXN0LCBDb21wYXJpc29ucykgeworICBFWFBFQ1RfVFJVRShhXyA9PSBhXyk7Cisg
IEVYUEVDVF9GQUxTRShhXyAhPSBhXyk7CisKKyAgRVhQRUNUX1RSVUUoYV8gIT0gYl8pOworICBF
WFBFQ1RfRkFMU0UoYV8gPT0gYl8pOworfQorCitURVNUKE1ha2VUdXBsZVRlc3QsIFdvcmtzRm9y
U2NhbGFyVHlwZXMpIHsKKyAgdHVwbGU8Ym9vbCwgaW50PiBhOworICBhID0gbWFrZV90dXBsZSh0
cnVlLCA1KTsKKyAgRVhQRUNUX1RSVUUoZ2V0PDA+KGEpKTsKKyAgRVhQRUNUX0VRKDUsIGdldDwx
PihhKSk7CisKKyAgdHVwbGU8Y2hhciwgaW50LCBsb25nPiBiOworICBiID0gbWFrZV90dXBsZSgn
YScsICdiJywgNSk7CisgIEVYUEVDVF9FUSgnYScsIGdldDwwPihiKSk7CisgIEVYUEVDVF9FUSgn
YicsIGdldDwxPihiKSk7CisgIEVYUEVDVF9FUSg1LCBnZXQ8Mj4oYikpOworfQorCitURVNUKE1h
a2VUdXBsZVRlc3QsIFdvcmtzRm9yUG9pbnRlcnMpIHsKKyAgaW50IGFbXSA9IHsgMSwgMiwgMywg
NCB9OworICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAiaGkiOworICBpbnQqIGNvbnN0IHAgPSBh
OworCisgIHR1cGxlPGNvbnN0IGNoYXIqLCBpbnQqPiB0OworICB0ID0gbWFrZV90dXBsZShzdHIs
IHApOworICBFWFBFQ1RfRVEoc3RyLCBnZXQ8MD4odCkpOworICBFWFBFQ1RfRVEocCwgZ2V0PDE+
KHQpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0LnB5IGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41YjdkMWU3NGY2N2ZjYjAwY2I4NDg1NTc5NjdkZWY0ZjZhNTZjYzhmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXVuaW5p
dGlhbGl6ZWQtdGVzdC5weQpAQCAtMCwwICsxLDY3IEBACisjIS91c3IvYmluL2VudiBweXRob24K
KyMKKyMgQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJWZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IHdhcm5z
IHRoZSB1c2VyIHdoZW4gbm90IGluaXRpYWxpemVkIHByb3Blcmx5LiIiIgorCitpbXBvcnQgZ3Rl
c3RfdGVzdF91dGlscworCitDT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0
YWJsZVBhdGgoJ2dvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0XycpCisKKworZGVmIEFzc2Vy
dChjb25kaXRpb24pOgorICBpZiBub3QgY29uZGl0aW9uOgorICAgIHJhaXNlIEFzc2VydGlvbkVy
cm9yCisKKworZGVmIEFzc2VydEVxKGV4cGVjdGVkLCBhY3R1YWwpOgorICBpZiBleHBlY3RlZCAh
PSBhY3R1YWw6CisgICAgcHJpbnQgJ0V4cGVjdGVkOiAlcycgJSAoZXhwZWN0ZWQsKQorICAgIHBy
aW50ICcgIEFjdHVhbDogJXMnICUgKGFjdHVhbCwpCisgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IK
KworCitkZWYgVGVzdEV4aXRDb2RlQW5kT3V0cHV0KGNvbW1hbmQpOgorICAiIiJSdW5zIHRoZSBn
aXZlbiBjb21tYW5kIGFuZCB2ZXJpZmllcyBpdHMgZXhpdCBjb2RlIGFuZCBvdXRwdXQuIiIiCisK
KyAgIyBWZXJpZmllcyB0aGF0ICdjb21tYW5kJyBleGl0cyB3aXRoIGNvZGUgMS4KKyAgcCA9IGd0
ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kKQorICBpZiBwLmV4aXRlZCBhbmQgcC5l
eGl0X2NvZGUgPT0gMDoKKyAgICBBc3NlcnQoJ0lNUE9SVEFOVCBOT1RJQ0UnIGluIHAub3V0cHV0
KTsKKyAgQXNzZXJ0KCdJbml0R29vZ2xlVGVzdCcgaW4gcC5vdXRwdXQpCisKKworY2xhc3MgR1Rl
c3RVbmluaXRpYWxpemVkVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgZGVmIHRl
c3RFeGl0Q29kZUFuZE91dHB1dChzZWxmKToKKyAgICBUZXN0RXhpdENvZGVBbmRPdXRwdXQoQ09N
TUFORCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxz
Lk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDQzNGQ1MWVl
YmZkODcyNmJkM2YwNGMyZDA0MjZiYmE5NjAyOThjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdF8uY2MK
QEAgLTAsMCArMSw0MiBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8g
bWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCitURVNUKER1bW15VGVzdCwgRHVt
bXkpIHsKKyAgLy8gVGhpcyB0ZXN0IGRvZXNuJ3QgdmVyaWZ5IGFueXRoaW5nLiAgV2UganVzdCBu
ZWVkIGl0IHRvIGNyZWF0ZSBhCisgIC8vIHJlYWxpc3RpYyBzdGFnZSBmb3IgdGVzdGluZyB0aGUg
YmVoYXZpb3Igb2YgR29vZ2xlIFRlc3Qgd2hlbgorICAvLyBSVU5fQUxMX1RFU1RTKCkgaXMgY2Fs
bGVkIHdpdGhvdXQKKyAgLy8gdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKSBiZWluZyBjYWxsZWQg
Zmlyc3QuCit9CisKK2ludCBtYWluKCkgeworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWRlYXRoLXRlc3Rf
dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ1YjUzYjcxYWYyZjc5NTYw
ZDcxNzJhYTY3Y2M3NDBiYTcwNDAxMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWRlYXRoLXRl
c3RfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDEyMzAgKzAsMCBAQAotLy8gQ29weXJpZ2h0
IDIwMDUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24u
Ci0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBUZXN0cyBmb3IgZGVhdGggdGVzdHMuCi0KLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC1kZWF0aC10ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oPgotCi11c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2U7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6
QWx3YXlzVHJ1ZTsKLQotI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLSNpZiBHVEVTVF9PU19X
SU5ET1dTCi0jaW5jbHVkZSA8ZGlyZWN0Lmg+ICAgICAgICAgIC8vIEZvciBjaGRpcigpLgotI2Vs
c2UKLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDxzeXMvd2FpdC5oPiAgICAgICAgLy8g
Rm9yIHdhaXRwaWQuCi0jaW5jbHVkZSA8bGltaXRzPiAgICAgICAgICAgIC8vIEZvciBzdGQ6Om51
bWVyaWNfbGltaXRzLgotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSNpbmNsdWRlIDxs
aW1pdHMuaD4KLSNpbmNsdWRlIDxzaWduYWwuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+Ci0KLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNs
YXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAg
SXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQs
IG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8v
IHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5h
bC1pbmwuaCBpbgotLy8gaGlzIGNvZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAx
Ci0jaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExF
TUVOVEFUSU9OXwotCi1uYW1lc3BhY2UgcG9zaXggPSA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3Np
eDsKLQotdXNpbmcgdGVzdGluZzo6TWVzc2FnZTsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpE
ZWF0aFRlc3Q7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0RmFjdG9yeTsKLXVz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpGaWxlUGF0aDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjpHZXRMYXN0RXJybm9EZXNjcmlwdGlvbjsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRV
bml0VGVzdEltcGw7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UGFyc2VOYXR1cmFsTnVtYmVy
OwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZzsKLQotbmFtZXNwYWNlIHRlc3Rpbmcg
ewotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8gQSBoZWxwZXIgY2xhc3Mgd2hvc2Ugb2JqZWN0
cyByZXBsYWNlIHRoZSBkZWF0aCB0ZXN0IGZhY3RvcnkgZm9yIGEKLS8vIHNpbmdsZSBVbml0VGVz
dCBvYmplY3QgZHVyaW5nIHRoZWlyIGxpZmV0aW1lcy4KLWNsYXNzIFJlcGxhY2VEZWF0aFRlc3RG
YWN0b3J5IHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KERl
YXRoVGVzdEZhY3RvcnkqIG5ld19mYWN0b3J5KQotICAgICAgOiB1bml0X3Rlc3RfaW1wbF8oR2V0
VW5pdFRlc3RJbXBsKCkpIHsKLSAgICBvbGRfZmFjdG9yeV8gPSB1bml0X3Rlc3RfaW1wbF8tPmRl
YXRoX3Rlc3RfZmFjdG9yeV8ucmVsZWFzZSgpOwotICAgIHVuaXRfdGVzdF9pbXBsXy0+ZGVhdGhf
dGVzdF9mYWN0b3J5Xy5yZXNldChuZXdfZmFjdG9yeSk7Ci0gIH0KLQotICB+UmVwbGFjZURlYXRo
VGVzdEZhY3RvcnkoKSB7Ci0gICAgdW5pdF90ZXN0X2ltcGxfLT5kZWF0aF90ZXN0X2ZhY3Rvcnlf
LnJlbGVhc2UoKTsKLSAgICB1bml0X3Rlc3RfaW1wbF8tPmRlYXRoX3Rlc3RfZmFjdG9yeV8ucmVz
ZXQob2xkX2ZhY3RvcnlfKTsKLSAgfQotIHByaXZhdGU6Ci0gIC8vIFByZXZlbnRzIGNvcHlpbmcg
UmVwbGFjZURlYXRoVGVzdEZhY3Rvcnkgb2JqZWN0cy4KLSAgUmVwbGFjZURlYXRoVGVzdEZhY3Rv
cnkoY29uc3QgUmVwbGFjZURlYXRoVGVzdEZhY3RvcnkmKTsKLSAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgUmVwbGFjZURlYXRoVGVzdEZhY3RvcnkmKTsKLQotICBVbml0VGVzdEltcGwqIHVuaXRfdGVz
dF9pbXBsXzsKLSAgRGVhdGhUZXN0RmFjdG9yeSogb2xkX2ZhY3RvcnlfOwotfTsKLQotfSAgLy8g
bmFtZXNwYWNlIGludGVybmFsCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi12b2lkIERpZUlu
c2lkZShjb25zdCBjaGFyKiBmdW5jdGlvbikgewotICBmcHJpbnRmKHN0ZGVyciwgImRlYXRoIGlu
c2lkZSAlcygpLiIsIGZ1bmN0aW9uKTsKLSAgZmZsdXNoKHN0ZGVycik7Ci0gIC8vIFdlIGNhbGwg
X2V4aXQoKSBpbnN0ZWFkIG9mIGV4aXQoKSwgYXMgdGhlIGZvcm1lciBpcyBhIGRpcmVjdAotICAv
LyBzeXN0ZW0gY2FsbCBhbmQgdGh1cyBzYWZlciBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhyZWFkcy4g
IGV4aXQoKQotICAvLyB3aWxsIGludm9rZSB1c2VyLWRlZmluZWQgZXhpdC1ob29rcywgd2hpY2gg
bWF5IGRvIGRhbmdlcm91cwotICAvLyB0aGluZ3MgdGhhdCBjb25mbGljdCB3aXRoIGRlYXRoIHRl
c3RzLgotICAvLwotICAvLyBTb21lIGNvbXBpbGVycyBjYW4gcmVjb2duaXplIHRoYXQgX2V4aXQo
KSBuZXZlciByZXR1cm5zIGFuZCBpc3N1ZSB0aGUKLSAgLy8gJ3VucmVhY2hhYmxlIGNvZGUnIHdh
cm5pbmcgZm9yIGNvZGUgZm9sbG93aW5nIHRoaXMgZnVuY3Rpb24sIHVubGVzcwotICAvLyBmb29s
ZWQgYnkgYSBmYWtlIGNvbmRpdGlvbi4KLSAgaWYgKEFsd2F5c1RydWUoKSkKLSAgICBfZXhpdCgx
KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyB3b3JrLgotCi1jbGFzcyBUZXN0Rm9y
RGVhdGhUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgVGVzdEZv
ckRlYXRoVGVzdCgpIDogb3JpZ2luYWxfZGlyXyhGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpKSB7
fQotCi0gIHZpcnR1YWwgflRlc3RGb3JEZWF0aFRlc3QoKSB7Ci0gICAgcG9zaXg6OkNoRGlyKG9y
aWdpbmFsX2Rpcl8uY19zdHIoKSk7Ci0gIH0KLQotICAvLyBBIHN0YXRpYyBtZW1iZXIgZnVuY3Rp
b24gdGhhdCdzIGV4cGVjdGVkIHRvIGRpZS4KLSAgc3RhdGljIHZvaWQgU3RhdGljTWVtYmVyRnVu
Y3Rpb24oKSB7IERpZUluc2lkZSgiU3RhdGljTWVtYmVyRnVuY3Rpb24iKTsgfQotCi0gIC8vIEEg
bWV0aG9kIG9mIHRoZSB0ZXN0IGZpeHR1cmUgdGhhdCBtYXkgZGllLgotICB2b2lkIE1lbWJlckZ1
bmN0aW9uKCkgewotICAgIGlmIChzaG91bGRfZGllXykKLSAgICAgIERpZUluc2lkZSgiTWVtYmVy
RnVuY3Rpb24iKTsKLSAgfQotCi0gIC8vIFRydWUgaWZmIE1lbWJlckZ1bmN0aW9uKCkgc2hvdWxk
IGRpZS4KLSAgYm9vbCBzaG91bGRfZGllXzsKLSAgY29uc3QgRmlsZVBhdGggb3JpZ2luYWxfZGly
XzsKLX07Ci0KLS8vIEEgY2xhc3Mgd2l0aCBhIG1lbWJlciBmdW5jdGlvbiB0aGF0IG1heSBkaWUu
Ci1jbGFzcyBNYXlEaWUgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgTWF5RGllKGJvb2wgc2hvdWxk
X2RpZSkgOiBzaG91bGRfZGllXyhzaG91bGRfZGllKSB7fQotCi0gIC8vIEEgbWVtYmVyIGZ1bmN0
aW9uIHRoYXQgbWF5IGRpZS4KLSAgdm9pZCBNZW1iZXJGdW5jdGlvbigpIGNvbnN0IHsKLSAgICBp
ZiAoc2hvdWxkX2RpZV8pCi0gICAgICBEaWVJbnNpZGUoIk1heURpZTo6TWVtYmVyRnVuY3Rpb24i
KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gVHJ1ZSBpZmYgTWVtYmVyRnVuY3Rpb24oKSBzaG91
bGQgZGllLgotICBib29sIHNob3VsZF9kaWVfOwotfTsKLQotLy8gQSBnbG9iYWwgZnVuY3Rpb24g
dGhhdCdzIGV4cGVjdGVkIHRvIGRpZS4KLXZvaWQgR2xvYmFsRnVuY3Rpb24oKSB7IERpZUluc2lk
ZSgiR2xvYmFsRnVuY3Rpb24iKTsgfQotCi0vLyBBIG5vbi12b2lkIGZ1bmN0aW9uIHRoYXQncyBl
eHBlY3RlZCB0byBkaWUuCi1pbnQgTm9uVm9pZEZ1bmN0aW9uKCkgewotICBEaWVJbnNpZGUoIk5v
blZvaWRGdW5jdGlvbiIpOwotICByZXR1cm4gMTsKLX0KLQotLy8gQSB1bmFyeSBmdW5jdGlvbiB0
aGF0IG1heSBkaWUuCi12b2lkIERpZUlmKGJvb2wgc2hvdWxkX2RpZSkgewotICBpZiAoc2hvdWxk
X2RpZSkKLSAgICBEaWVJbnNpZGUoIkRpZUlmIik7Ci19Ci0KLS8vIEEgYmluYXJ5IGZ1bmN0aW9u
IHRoYXQgbWF5IGRpZS4KLWJvb2wgRGllSWZMZXNzVGhhbihpbnQgeCwgaW50IHkpIHsKLSAgaWYg
KHggPCB5KSB7Ci0gICAgRGllSW5zaWRlKCJEaWVJZkxlc3NUaGFuIik7Ci0gIH0KLSAgcmV0dXJu
IHRydWU7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQVRIIGNhbiBiZSB1c2VkIG91dHNp
ZGUgYSBURVNULCBURVNUX0YsIG9yIHRlc3QgZml4dHVyZS4KLXZvaWQgRGVhdGhUZXN0U3Vicm91
dGluZSgpIHsKLSAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksICJkZWF0aC4qR2xvYmFs
RnVuY3Rpb24iKTsKLSAgQVNTRVJUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksICJkZWF0aC4qR2xv
YmFsRnVuY3Rpb24iKTsKLX0KLQotLy8gRGVhdGggaW4gZGJnLCBub3Qgb3B0LgotaW50IERpZUlu
RGVidWdFbHNlMTIoaW50KiBzaWRlZWZmZWN0KSB7Ci0gIGlmIChzaWRlZWZmZWN0KSAqc2lkZWVm
ZmVjdCA9IDEyOwotI2lmbmRlZiBOREVCVUcKLSAgRGllSW5zaWRlKCJEaWVJbkRlYnVnRWxzZTEy
Iik7Ci0jZW5kaWYgIC8vIE5ERUJVRwotICByZXR1cm4gMTI7Ci19Ci0KLSNpZiBHVEVTVF9PU19X
SU5ET1dTCi0KLS8vIFRlc3RzIHRoZSBFeGl0ZWRXaXRoQ29kZSBwcmVkaWNhdGUuCi1URVNUKEV4
aXRTdGF0dXNQcmVkaWNhdGVUZXN0LCBFeGl0ZWRXaXRoQ29kZSkgewotICAvLyBPbiBXaW5kb3dz
LCB0aGUgcHJvY2VzcydzIGV4aXQgY29kZSBpcyB0aGUgc2FtZSBhcyBpdHMgZXhpdCBzdGF0dXMs
Ci0gIC8vIHNvIHRoZSBwcmVkaWNhdGUganVzdCBjb21wYXJlcyB0aGUgaXRzIGlucHV0IHdpdGgg
aXRzIHBhcmFtZXRlci4KLSAgRVhQRUNUX1RSVUUodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCko
MCkpOwotICBFWFBFQ1RfVFJVRSh0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSgxKSk7Ci0gIEVY
UEVDVF9UUlVFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDQyKSg0MikpOwotICBFWFBFQ1RfRkFM
U0UodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCkoMSkpOwotICBFWFBFQ1RfRkFMU0UodGVzdGlu
Zzo6RXhpdGVkV2l0aENvZGUoMSkoMCkpOwotfQotCi0jZWxzZQotCi0vLyBSZXR1cm5zIHRoZSBl
eGl0IHN0YXR1cyBvZiBhIHByb2Nlc3MgdGhhdCBjYWxscyBfZXhpdCgyKSB3aXRoIGEKLS8vIGdp
dmVuIGV4aXQgY29kZS4gIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIHRoZQotLy8gRXhp
dFN0YXR1c1ByZWRpY2F0ZVRlc3QgdGVzdCBzdWl0ZS4KLXN0YXRpYyBpbnQgTm9ybWFsRXhpdFN0
YXR1cyhpbnQgZXhpdF9jb2RlKSB7Ci0gIHBpZF90IGNoaWxkX3BpZCA9IGZvcmsoKTsKLSAgaWYg
KGNoaWxkX3BpZCA9PSAwKSB7Ci0gICAgX2V4aXQoZXhpdF9jb2RlKTsKLSAgfQotICBpbnQgc3Rh
dHVzOwotICB3YWl0cGlkKGNoaWxkX3BpZCwgJnN0YXR1cywgMCk7Ci0gIHJldHVybiBzdGF0dXM7
Ci19Ci0KLS8vIFJldHVybnMgdGhlIGV4aXQgc3RhdHVzIG9mIGEgcHJvY2VzcyB0aGF0IHJhaXNl
cyBhIGdpdmVuIHNpZ25hbC4KLS8vIElmIHRoZSBzaWduYWwgZG9lcyBub3QgY2F1c2UgdGhlIHBy
b2Nlc3MgdG8gZGllLCB0aGVuIGl0IHJldHVybnMKLS8vIGluc3RlYWQgdGhlIGV4aXQgc3RhdHVz
IG9mIGEgcHJvY2VzcyB0aGF0IGV4aXRzIG5vcm1hbGx5IHdpdGggZXhpdAotLy8gY29kZSAxLiAg
VGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgdGhlIEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0
Ci0vLyB0ZXN0IHN1aXRlLgotc3RhdGljIGludCBLaWxsZWRFeGl0U3RhdHVzKGludCBzaWdudW0p
IHsKLSAgcGlkX3QgY2hpbGRfcGlkID0gZm9yaygpOwotICBpZiAoY2hpbGRfcGlkID09IDApIHsK
LSAgICByYWlzZShzaWdudW0pOwotICAgIF9leGl0KDEpOwotICB9Ci0gIGludCBzdGF0dXM7Ci0g
IHdhaXRwaWQoY2hpbGRfcGlkLCAmc3RhdHVzLCAwKTsKLSAgcmV0dXJuIHN0YXR1czsKLX0KLQot
Ly8gVGVzdHMgdGhlIEV4aXRlZFdpdGhDb2RlIHByZWRpY2F0ZS4KLVRFU1QoRXhpdFN0YXR1c1By
ZWRpY2F0ZVRlc3QsIEV4aXRlZFdpdGhDb2RlKSB7Ci0gIGNvbnN0IGludCBzdGF0dXMwICA9IE5v
cm1hbEV4aXRTdGF0dXMoMCk7Ci0gIGNvbnN0IGludCBzdGF0dXMxICA9IE5vcm1hbEV4aXRTdGF0
dXMoMSk7Ci0gIGNvbnN0IGludCBzdGF0dXM0MiA9IE5vcm1hbEV4aXRTdGF0dXMoNDIpOwotICBj
b25zdCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSBwcmVkMCgwKTsKLSAgY29uc3QgdGVzdGluZzo6
RXhpdGVkV2l0aENvZGUgcHJlZDEoMSk7Ci0gIGNvbnN0IHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2Rl
IHByZWQ0Mig0Mik7Ci0gIEVYUEVDVF9QUkVEMShwcmVkMCwgIHN0YXR1czApOwotICBFWFBFQ1Rf
UFJFRDEocHJlZDEsICBzdGF0dXMxKTsKLSAgRVhQRUNUX1BSRUQxKHByZWQ0Miwgc3RhdHVzNDIp
OwotICBFWFBFQ1RfRkFMU0UocHJlZDAoc3RhdHVzMSkpOwotICBFWFBFQ1RfRkFMU0UocHJlZDQy
KHN0YXR1czApKTsKLSAgRVhQRUNUX0ZBTFNFKHByZWQxKHN0YXR1czQyKSk7Ci19Ci0KLS8vIFRl
c3RzIHRoZSBLaWxsZWRCeVNpZ25hbCBwcmVkaWNhdGUuCi1URVNUKEV4aXRTdGF0dXNQcmVkaWNh
dGVUZXN0LCBLaWxsZWRCeVNpZ25hbCkgewotICBjb25zdCBpbnQgc3RhdHVzX3NlZ3YgPSBLaWxs
ZWRFeGl0U3RhdHVzKFNJR1NFR1YpOwotICBjb25zdCBpbnQgc3RhdHVzX2tpbGwgPSBLaWxsZWRF
eGl0U3RhdHVzKFNJR0tJTEwpOwotICBjb25zdCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbCBwcmVk
X3NlZ3YoU0lHU0VHVik7Ci0gIGNvbnN0IHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsIHByZWRfa2ls
bChTSUdLSUxMKTsKLSAgRVhQRUNUX1BSRUQxKHByZWRfc2Vndiwgc3RhdHVzX3NlZ3YpOwotICBF
WFBFQ1RfUFJFRDEocHJlZF9raWxsLCBzdGF0dXNfa2lsbCk7Ci0gIEVYUEVDVF9GQUxTRShwcmVk
X3NlZ3Yoc3RhdHVzX2tpbGwpKTsKLSAgRVhQRUNUX0ZBTFNFKHByZWRfa2lsbChzdGF0dXNfc2Vn
dikpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotLy8gVGVzdHMgdGhhdCB0
aGUgZGVhdGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUgd2hpY2ggbWF5IG9yIG1heSBub3QK
LS8vIGJlIGZvbGxvd2VkIGJ5IG9wZXJhdG9yPDwsIGFuZCB0aGF0IGluIGVpdGhlciBjYXNlIHRo
ZSBjb21wbGV0ZSB0ZXh0Ci0vLyBjb21wcmlzZXMgb25seSBhIHNpbmdsZSBDKysgc3RhdGVtZW50
LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFNpbmdsZVN0YXRlbWVudCkgewotICBpZiAoQWx3
YXlzRmFsc2UoKSkKLSAgICAvLyBUaGlzIHdvdWxkIGZhaWwgaWYgZXhlY3V0ZWQ7IHRoaXMgaXMg
YSBjb21waWxhdGlvbiB0ZXN0IG9ubHkKLSAgICBBU1NFUlRfREVBVEgocmV0dXJuLCAiIik7Ci0K
LSAgaWYgKEFsd2F5c1RydWUoKSkKLSAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKTsKLSAg
ZWxzZQotICAgIC8vIFRoaXMgZW1wdHkgImVsc2UiIGJyYW5jaCBpcyBtZWFudCB0byBlbnN1cmUg
dGhhdCBFWFBFQ1RfREVBVEgKLSAgICAvLyBkb2Vzbid0IGV4cGFuZCBpbnRvIGFuICJpZiIgc3Rh
dGVtZW50IHdpdGhvdXQgYW4gImVsc2UiCi0gICAgOwotCi0gIGlmIChBbHdheXNGYWxzZSgpKQot
ICAgIEFTU0VSVF9ERUFUSChyZXR1cm4sICIiKSA8PCAiZGlkIG5vdCBkaWUiOwotCi0gIGlmIChB
bHdheXNGYWxzZSgpKQotICAgIDsKLSAgZWxzZQotICAgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwg
IiIpIDw8IDEgPDwgMiA8PCAzOwotfQotCi12b2lkIERpZVdpdGhFbWJlZGRlZE51bCgpIHsKLSAg
ZnByaW50ZihzdGRlcnIsICJIZWxsbyVjbXkgbnVsbCB3b3JsZC5cbiIsICdcMCcpOwotICBmZmx1
c2goc3RkZXJyKTsKLSAgX2V4aXQoMSk7Ci19Ci0KLSNpZiBHVEVTVF9VU0VTX1BDUkUKLS8vIFRl
c3RzIHRoYXQgRVhQRUNUX0RFQVRIIGFuZCBBU1NFUlRfREVBVEggd29yayB3aGVuIHRoZSBlcnJv
cgotLy8gbWVzc2FnZSBoYXMgYSBOVUwgY2hhcmFjdGVyIGluIGl0LgotVEVTVF9GKFRlc3RGb3JE
ZWF0aFRlc3QsIEVtYmVkZGVkTnVsSW5NZXNzYWdlKSB7Ci0gIC8vIFRPRE8od2FuQGdvb2dsZS5j
b20pOiA8cmVnZXguaD4gZG9lc24ndCBzdXBwb3J0IG1hdGNoaW5nIHN0cmluZ3MKLSAgLy8gd2l0
aCBlbWJlZGRlZCBOVUwgY2hhcmFjdGVycyAtIGZpbmQgYSB3YXkgdG8gd29ya2Fyb3VuZCBpdC4K
LSAgRVhQRUNUX0RFQVRIKERpZVdpdGhFbWJlZGRlZE51bCgpLCAibXkgbnVsbCB3b3JsZCIpOwot
ICBBU1NFUlRfREVBVEgoRGllV2l0aEVtYmVkZGVkTnVsKCksICJteSBudWxsIHdvcmxkIik7Ci19
Ci0jZW5kaWYgIC8vIEdURVNUX1VTRVNfUENSRQotCi0vLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3Qg
bWFjcm9zIGV4cGFuZCB0byBjb2RlIHdoaWNoIGludGVyYWN0cyB3ZWxsIHdpdGggc3dpdGNoCi0v
LyBzdGF0ZW1lbnRzLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFN3aXRjaFN0YXRlbWVudCkg
ewotLy8gTWljcm9zb2Z0IGNvbXBpbGVyIHVzdWFsbHkgY29tcGxhaW5zIGFib3V0IHN3aXRjaCBz
dGF0ZW1lbnRzIHdpdGhvdXQKLS8vIGNhc2UgbGFiZWxzLiBXZSBzdXBwcmVzcyB0aGF0IHdhcm5p
bmcgZm9yIHRoaXMgdGVzdC4KLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHB1c2gp
Ci0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDA2NSkKLSNlbmRpZiAgLy8gX01TQ19WRVIKLQot
ICBzd2l0Y2ggKDApCi0gICAgZGVmYXVsdDoKLSAgICAgIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwg
IiIpIDw8ICJleGl0IGluIGRlZmF1bHQgc3dpdGNoIGhhbmRsZXIiOwotCi0gIHN3aXRjaCAoMCkK
LSAgICBjYXNlIDA6Ci0gICAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKSA8PCAiZXhpdCBp
biBzd2l0Y2ggY2FzZSI7Ci0KLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHBvcCkK
LSNlbmRpZiAgLy8gX01TQ19WRVIKLX0KLQotLy8gVGVzdHMgdGhhdCBhIHN0YXRpYyBtZW1iZXIg
ZnVuY3Rpb24gY2FuIGJlIHVzZWQgaW4gYSAiZmFzdCIgc3R5bGUKLS8vIGRlYXRoIHRlc3QuCi1U
RVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU3RhdGljTWVtYmVyRnVuY3Rpb25GYXN0U3R5bGUpIHsK
LSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKLSAgQVNT
RVJUX0RFQVRIKFN0YXRpY01lbWJlckZ1bmN0aW9uKCksICJkZWF0aC4qU3RhdGljTWVtYmVyIik7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBtZXRob2Qgb2YgdGhlIHRlc3QgZml4dHVyZSBjYW4gYmUg
dXNlZCBpbiBhICJmYXN0IgotLy8gc3R5bGUgZGVhdGggdGVzdC4KLVRFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBNZW1iZXJGdW5jdGlvbkZhc3RTdHlsZSkgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFH
KGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOwotICBzaG91bGRfZGllXyA9IHRydWU7Ci0gIEVY
UEVDVF9ERUFUSChNZW1iZXJGdW5jdGlvbigpLCAiaW5zaWRlLipNZW1iZXJGdW5jdGlvbiIpOwot
fQotCi12b2lkIENoYW5nZVRvUm9vdERpcigpIHsgcG9zaXg6OkNoRGlyKEdURVNUX1BBVEhfU0VQ
Xyk7IH0KLQotLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyB3b3JrIGV2ZW4gaWYgdGhlIGN1cnJl
bnQgZGlyZWN0b3J5IGhhcyBiZWVuCi0vLyBjaGFuZ2VkLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIEZhc3REZWF0aFRlc3RJbkNoYW5nZWREaXIpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhk
ZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKLQotICBDaGFuZ2VUb1Jvb3REaXIoKTsKLSAgRVhQ
RUNUX0VYSVQoX2V4aXQoMSksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEpLCAiIik7Ci0KLSAg
Q2hhbmdlVG9Sb290RGlyKCk7Ci0gIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwgIiIpOwotfQotCi0v
LyBSZXBlYXRzIGEgcmVwcmVzZW50YXRpdmUgc2FtcGxlIG9mIGRlYXRoIHRlc3RzIGluIHRoZSAi
dGhyZWFkc2FmZSIgc3R5bGU6Ci0KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTdGF0aWNNZW1i
ZXJGdW5jdGlvblRocmVhZHNhZmVTdHlsZSkgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRo
X3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOwotICBBU1NFUlRfREVBVEgoU3RhdGljTWVtYmVy
RnVuY3Rpb24oKSwgImRlYXRoLipTdGF0aWNNZW1iZXIiKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JE
ZWF0aFRlc3QsIE1lbWJlckZ1bmN0aW9uVGhyZWFkc2FmZVN0eWxlKSB7Ci0gIHRlc3Rpbmc6OkdU
RVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7Ci0gIHNob3VsZF9kaWVf
ID0gdHJ1ZTsKLSAgRVhQRUNUX0RFQVRIKE1lbWJlckZ1bmN0aW9uKCksICJpbnNpZGUuKk1lbWJl
ckZ1bmN0aW9uIik7Ci19Ci0KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUaHJlYWRzYWZlRGVh
dGhUZXN0SW5Mb29wKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkg
PSAidGhyZWFkc2FmZSI7Ci0KLSAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpCi0gICAgRVhQ
RUNUX0VYSVQoX2V4aXQoaSksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKGkpLCAiIikgPDwgIjog
aSA9ICIgPDwgaTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRocmVhZHNhZmVEZWF0
aFRlc3RJbkNoYW5nZWREaXIpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0
eWxlKSA9ICJ0aHJlYWRzYWZlIjsKLQotICBDaGFuZ2VUb1Jvb3REaXIoKTsKLSAgRVhQRUNUX0VY
SVQoX2V4aXQoMSksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEpLCAiIik7Ci0KLSAgQ2hhbmdl
VG9Sb290RGlyKCk7Ci0gIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwgIiIpOwotfQotCi1URVNUX0Yo
VGVzdEZvckRlYXRoVGVzdCwgTWl4ZWRTdHlsZXMpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhk
ZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKLSAgRVhQRUNUX0RFQVRIKF9leGl0KDEp
LCAiIik7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7
Ci0gIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOwotfQotCi1uYW1lc3BhY2UgewotCi1ib29s
IHB0aHJlYWRfZmxhZzsKLQotdm9pZCBTZXRQdGhyZWFkRmxhZygpIHsKLSAgcHRocmVhZF9mbGFn
ID0gdHJ1ZTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlCi0KLSNpZiBHVEVTVF9IQVNfQ0xPTkUgJiYg
R1RFU1RfSEFTX1BUSFJFQUQKLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERvZXNOb3RFeGVj
dXRlQXRmb3JrSG9va3MpIHsKLSAgaWYgKCF0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rf
dXNlX2ZvcmspKSB7Ci0gICAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9
ICJ0aHJlYWRzYWZlIjsKLSAgICBwdGhyZWFkX2ZsYWcgPSBmYWxzZTsKLSAgICBBU1NFUlRfRVEo
MCwgcHRocmVhZF9hdGZvcmsoJlNldFB0aHJlYWRGbGFnLCBOVUxMLCBOVUxMKSk7Ci0gICAgQVNT
RVJUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci0gICAgQVNTRVJUX0ZBTFNFKHB0aHJlYWRfZmxhZyk7
Ci0gIH0KLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUgJiYgR1RFU1RfSEFTX1BUSFJF
QUQKLQotLy8gVGVzdHMgdGhhdCBhIG1ldGhvZCBvZiBhbm90aGVyIGNsYXNzIGNhbiBiZSB1c2Vk
IGluIGEgZGVhdGggdGVzdC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNZXRob2RPZkFub3Ro
ZXJDbGFzcykgewotICBjb25zdCBNYXlEaWUgeCh0cnVlKTsKLSAgQVNTRVJUX0RFQVRIKHguTWVt
YmVyRnVuY3Rpb24oKSwgIk1heURpZVxcOlxcOk1lbWJlckZ1bmN0aW9uIik7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgYSBnbG9iYWwgZnVuY3Rpb24gY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0Lgot
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEdsb2JhbEZ1bmN0aW9uKSB7Ci0gIEVYUEVDVF9ERUFU
SChHbG9iYWxGdW5jdGlvbigpLCAiR2xvYmFsRnVuY3Rpb24iKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBhbnkgdmFsdWUgY29udmVydGlibGUgdG8gYW4gUkUgd29ya3MgYXMgYSBzZWNvbmQKLS8vIGFy
Z3VtZW50IHRvIEVYUEVDVF9ERUFUSC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBY2NlcHRz
QW55dGhpbmdDb252ZXJ0aWJsZVRvUkUpIHsKLSAgc3RhdGljIGNvbnN0IGNoYXIgcmVnZXhfY19z
dHJbXSA9ICJHbG9iYWxGdW5jdGlvbiI7Ci0gIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigp
LCByZWdleF9jX3N0cik7Ci0KLSAgY29uc3QgdGVzdGluZzo6aW50ZXJuYWw6OlJFIHJlZ2V4KHJl
Z2V4X2Nfc3RyKTsKLSAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksIHJlZ2V4KTsKLQot
I2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0gIGNvbnN0IHN0cmluZyByZWdleF9zdHIocmVn
ZXhfY19zdHIpOwotICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXhfc3RyKTsK
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLQotICBjb25zdCA6OnN0ZDo6c3Ry
aW5nIHJlZ2V4X3N0ZF9zdHIocmVnZXhfY19zdHIpOwotICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVu
Y3Rpb24oKSwgcmVnZXhfc3RkX3N0cik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBub24tdm9pZCBm
dW5jdGlvbiBjYW4gYmUgdXNlZCBpbiBhIGRlYXRoIHRlc3QuCi1URVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgTm9uVm9pZEZ1bmN0aW9uKSB7Ci0gIEFTU0VSVF9ERUFUSChOb25Wb2lkRnVuY3Rpb24o
KSwgIk5vblZvaWRGdW5jdGlvbiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IGZ1bmN0aW9ucyB0aGF0
IHRha2UgcGFyYW1ldGVyKHMpIGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KLVRFU1RfRihU
ZXN0Rm9yRGVhdGhUZXN0LCBGdW5jdGlvbldpdGhQYXJhbWV0ZXIpIHsKLSAgRVhQRUNUX0RFQVRI
KERpZUlmKHRydWUpLCAiRGllSWZcXChcXCkiKTsKLSAgRVhQRUNUX0RFQVRIKERpZUlmTGVzc1Ro
YW4oMiwgMyksICJEaWVJZkxlc3NUaGFuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQVNTRVJUX0RF
QVRIIGNhbiBiZSB1c2VkIG91dHNpZGUgYSBURVNULCBURVNUX0YsIG9yIHRlc3QgZml4dHVyZS4K
LVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBPdXRzaWRlRml4dHVyZSkgewotICBEZWF0aFRlc3RT
dWJyb3V0aW5lKCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgZGVhdGggdGVzdHMgY2FuIGJlIGRvbmUg
aW5zaWRlIGEgbG9vcC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBJbnNpZGVMb29wKSB7Ci0g
IGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7Ci0gICAgRVhQRUNUX0RFQVRIKERpZUlmTGVz
c1RoYW4oLTEsIGkpLCAiRGllSWZMZXNzVGhhbiIpIDw8ICJ3aGVyZSBpID09ICIgPDwgaTsKLSAg
fQotfQotCi0vLyBUZXN0cyB0aGF0IGEgY29tcG91bmQgc3RhdGVtZW50IGNhbiBiZSB1c2VkIGlu
IGEgZGVhdGggdGVzdC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBDb21wb3VuZFN0YXRlbWVu
dCkgewotICBFWFBFQ1RfREVBVEgoeyAgLy8gTk9MSU5UCi0gICAgY29uc3QgaW50IHggPSAyOwot
ICAgIGNvbnN0IGludCB5ID0geCArIDE7Ci0gICAgRGllSWZMZXNzVGhhbih4LCB5KTsKLSAgfSwK
LSAgIkRpZUlmTGVzc1RoYW4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBjb2RlIHRoYXQgZG9lc24n
dCBkaWUgY2F1c2VzIGEgZGVhdGggdGVzdCB0byBmYWlsLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIERvZXNOb3REaWUpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRI
KERpZUlmKGZhbHNlKSwgIkRpZUlmIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJmYWls
ZWQgdG8gZGllIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBkZWF0aCB0ZXN0IGZhaWxzIHdoZW4g
dGhlIGVycm9yIG1lc3NhZ2UgaXNuJ3QgZXhwZWN0ZWQuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVz
dCwgRXJyb3JNZXNzYWdlTWlzbWF0Y2gpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAg
Ly8gTk9MSU5UCi0gICAgRVhQRUNUX0RFQVRIKERpZUlmKHRydWUpLCAiRGllSWZMZXNzVGhhbiIp
IDw8ICJFbmQgb2YgZGVhdGggdGVzdCBtZXNzYWdlLiI7Ci0gIH0sICJkaWVkIGJ1dCBub3Qgd2l0
aCBleHBlY3RlZCBlcnJvciIpOwotfQotCi0vLyBPbiBleGl0LCAqYWJvcnRlZCB3aWxsIGJlIHRy
dWUgaWZmIHRoZSBFWFBFQ1RfREVBVEgoKSBzdGF0ZW1lbnQKLS8vIGFib3J0ZWQgdGhlIGZ1bmN0
aW9uLgotdm9pZCBFeHBlY3REZWF0aFRlc3RIZWxwZXIoYm9vbCogYWJvcnRlZCkgewotICAqYWJv
cnRlZCA9IHRydWU7Ci0gIEVYUEVDVF9ERUFUSChEaWVJZihmYWxzZSksICJEaWVJZiIpOyAgLy8g
VGhpcyBhc3NlcnRpb24gc2hvdWxkIGZhaWwuCi0gICphYm9ydGVkID0gZmFsc2U7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRIIGRvZXNuJ3QgYWJvcnQgdGhlIHRlc3Qgb24gZmFpbHVy
ZS4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFWFBFQ1RfREVBVEgpIHsKLSAgYm9vbCBhYm9y
dGVkID0gdHJ1ZTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRXhwZWN0RGVhdGhUZXN0SGVs
cGVyKCZhYm9ydGVkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBkaWUi
KTsKLSAgRVhQRUNUX0ZBTFNFKGFib3J0ZWQpOwotfQotCi0vLyBUZXN0cyB0aGF0IEFTU0VSVF9E
RUFUSCBkb2VzIGFib3J0IHRoZSB0ZXN0IG9uIGZhaWx1cmUuCi1URVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgQVNTRVJUX0RFQVRIKSB7Ci0gIHN0YXRpYyBib29sIGFib3J0ZWQ7Ci0gIEVYUEVDVF9G
QVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIGFib3J0ZWQgPSB0cnVlOwotICAgIEFTU0VS
VF9ERUFUSChEaWVJZihmYWxzZSksICJEaWVJZiIpOyAgLy8gVGhpcyBhc3NlcnRpb24gc2hvdWxk
IGZhaWwuCi0gICAgYWJvcnRlZCA9IGZhbHNlOwotICB9LCAiZmFpbGVkIHRvIGRpZSIpOwotICBF
WFBFQ1RfVFJVRShhYm9ydGVkKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEggZXZh
bHVhdGVzIHRoZSBhcmd1bWVudHMgZXhhY3RseSBvbmNlLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIFNpbmdsZUV2YWx1YXRpb24pIHsKLSAgaW50IHggPSAzOwotICBFWFBFQ1RfREVBVEgoRGll
SWYoKCsreCkgPT0gNCksICJEaWVJZiIpOwotCi0gIGNvbnN0IGNoYXIqIHJlZ2V4ID0gIkRpZUlm
IjsKLSAgY29uc3QgY2hhciogcmVnZXhfc2F2ZSA9IHJlZ2V4OwotICBFWFBFQ1RfREVBVEgoRGll
SWZMZXNzVGhhbigzLCA0KSwgcmVnZXgrKyk7Ci0gIEVYUEVDVF9FUShyZWdleF9zYXZlICsgMSwg
cmVnZXgpOwotfQotCi0vLyBUZXN0cyB0aGF0IHJ1bi1hd2F5IGRlYXRoIHRlc3RzIGFyZSByZXBv
cnRlZCBhcyBmYWlsdXJlcy4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBSdW5hd2F5KSB7Ci0g
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ERUFUSChzdGF0aWNfY2FzdDx2b2lkPigw
KSwgIkZvbyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGRpZS4iKTsK
LQotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfREVBVEgocmV0dXJuLCAiQmFyIiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICJpbGxlZ2FsIHJldHVybiBpbiB0ZXN0IHN0YXRlbWVudC4i
KTsKLX0KLQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUJVR19ERUFUSCB3b3JrcyBhcyBleHBl
Y3RlZCwKLS8vIHRoYXQgaXMsIGluIGRlYnVnIG1vZGUsIGl0OgotLy8gMS4gQXNzZXJ0cyBvbiBk
ZWF0aC4KLS8vIDIuIEhhcyBubyBzaWRlIGVmZmVjdC4KLS8vCi0vLyBBbmQgaW4gb3B0IG1vZGUs
IGl0OgotLy8gMS4gIEhhcyBzaWRlIGVmZmVjdHMgYnV0IGRvZXMgbm90IGFzc2VydC4KLVRFU1Rf
RihUZXN0Rm9yRGVhdGhUZXN0LCBUZXN0RXhwZWN0RGVidWdEZWF0aCkgewotICBpbnQgc2lkZWVm
ZmVjdCA9IDA7Ci0KLSAgRVhQRUNUX0RFQlVHX0RFQVRIKERpZUluRGVidWdFbHNlMTIoJnNpZGVl
ZmZlY3QpLAotICAgICAgICAgICAgICAgICAgICAgImRlYXRoLipEaWVJbkRlYnVnRWxzZTEyIik7
Ci0KLSNpZmRlZiBOREVCVUcKLSAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgb2NjdXJz
IGluIG9wdCBtb2RlIChzaWRlZWZmZWN0KS4KLSAgRVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0KTsK
LSNlbHNlCi0gIC8vIENoZWNrcyB0aGF0IHRoZSBhc3NpZ25tZW50IGRvZXMgbm90IG9jY3VyIGlu
IGRiZyBtb2RlIChubyBzaWRlZWZmZWN0KS4KLSAgRVhQRUNUX0VRKDAsIHNpZGVlZmZlY3QpOwot
I2VuZGlmCi19Ci0KLS8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQlVHX0RFQVRIIHdvcmtzIGFzIGV4
cGVjdGVkCi0vLyBJbiBkZWJ1ZyBtb2RlOgotLy8gMS4gQXNzZXJ0cyBvbiBkZWJ1ZyBkZWF0aC4K
LS8vIDIuIEhhcyBubyBzaWRlIGVmZmVjdC4KLS8vCi0vLyBJbiBvcHQgbW9kZToKLS8vIDEuIEhh
cyBzaWRlIGVmZmVjdHMgYW5kIHJldHVybnMgdGhlIGV4cGVjdGVkIHZhbHVlICgxMikuCi1URVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgVGVzdEFzc2VydERlYnVnRGVhdGgpIHsKLSAgaW50IHNpZGVl
ZmZlY3QgPSAwOwotCi0gIEFTU0VSVF9ERUJVR19ERUFUSCh7ICAvLyBOT0xJTlQKLSAgICAvLyBU
ZXN0cyB0aGF0IHRoZSByZXR1cm4gdmFsdWUgaXMgMTIgaW4gb3B0IG1vZGUuCi0gICAgRVhQRUNU
X0VRKDEyLCBEaWVJbkRlYnVnRWxzZTEyKCZzaWRlZWZmZWN0KSk7Ci0gICAgLy8gVGVzdHMgdGhh
dCB0aGUgc2lkZSBlZmZlY3Qgb2NjdXJyZWQgaW4gb3B0IG1vZGUuCi0gICAgRVhQRUNUX0VRKDEy
LCBzaWRlZWZmZWN0KTsKLSAgfSwgImRlYXRoLipEaWVJbkRlYnVnRWxzZTEyIik7Ci0KLSNpZmRl
ZiBOREVCVUcKLSAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgb2NjdXJzIGluIG9wdCBt
b2RlIChzaWRlZWZmZWN0KS4KLSAgRVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0KTsKLSNlbHNlCi0g
IC8vIENoZWNrcyB0aGF0IHRoZSBhc3NpZ25tZW50IGRvZXMgbm90IG9jY3VyIGluIGRiZyBtb2Rl
IChubyBzaWRlZWZmZWN0KS4KLSAgRVhQRUNUX0VRKDAsIHNpZGVlZmZlY3QpOwotI2VuZGlmCi19
Ci0KLSNpZm5kZWYgTkRFQlVHCi0KLXZvaWQgRXhwZWN0RGVidWdEZWF0aEhlbHBlcihib29sKiBh
Ym9ydGVkKSB7Ci0gICphYm9ydGVkID0gdHJ1ZTsKLSAgRVhQRUNUX0RFQlVHX0RFQVRIKHJldHVy
biwgIiIpIDw8ICJUaGlzIGlzIGV4cGVjdGVkIHRvIGZhaWwuIjsKLSAgKmFib3J0ZWQgPSBmYWxz
ZTsKLX0KLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLVRFU1QoUG9wVXBEZWF0aFRlc3QsIERvZXNO
b3RTaG93UG9wVXBPbkFib3J0KSB7Ci0gIHByaW50ZigiVGhpcyB0ZXN0IHNob3VsZCBiZSBjb25z
aWRlcmVkIGZhaWxpbmcgaWYgaXQgc2hvd3MgIgotICAgICAgICAgImFueSBwb3AtdXAgZGlhbG9n
cy5cbiIpOwotICBmZmx1c2goc3Rkb3V0KTsKLQotICBFWFBFQ1RfREVBVEgoewotICAgIHRlc3Rp
bmc6OkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgPSBmYWxzZTsKLSAgICBhYm9ydCgpOwot
ICB9LCAiIik7Ci19Ci0KLVRFU1QoUG9wVXBEZWF0aFRlc3QsIERvZXNOb3RTaG93UG9wVXBPblRo
cm93KSB7Ci0gIHByaW50ZigiVGhpcyB0ZXN0IHNob3VsZCBiZSBjb25zaWRlcmVkIGZhaWxpbmcg
aWYgaXQgc2hvd3MgIgotICAgICAgICAgImFueSBwb3AtdXAgZGlhbG9ncy5cbiIpOwotICBmZmx1
c2goc3Rkb3V0KTsKLQotICBFWFBFQ1RfREVBVEgoewotICAgIHRlc3Rpbmc6OkdURVNUX0ZMQUco
Y2F0Y2hfZXhjZXB0aW9ucykgPSBmYWxzZTsKLSAgICB0aHJvdyAxOwotICB9LCAiIik7Ci19Ci0j
ZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVCVUdf
REVBVEggaW4gZGVidWcgbW9kZSBkb2VzIG5vdCBhYm9ydAotLy8gdGhlIGZ1bmN0aW9uLgotVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIEV4cGVjdERlYnVnRGVhdGhEb2VzTm90QWJvcnQpIHsKLSAg
Ym9vbCBhYm9ydGVkID0gdHJ1ZTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRXhwZWN0RGVi
dWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKLSAgRVhQRUNUX0ZBTFNFKGFib3J0ZWQpOwot
fQotCi12b2lkIEFzc2VydERlYnVnRGVhdGhIZWxwZXIoYm9vbCogYWJvcnRlZCkgewotICAqYWJv
cnRlZCA9IHRydWU7Ci0gIEFTU0VSVF9ERUJVR19ERUFUSChyZXR1cm4sICIiKSA8PCAiVGhpcyBp
cyBleHBlY3RlZCB0byBmYWlsLiI7Ci0gICphYm9ydGVkID0gZmFsc2U7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgQVNTRVJUX0RFQlVHX0RFQVRIIGluIGRlYnVnIG1vZGUgYWJvcnRzIHRoZSBmdW5jdGlv
biBvbgotLy8gZmFpbHVyZS4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0Rl
YXRoQWJvcnRzKSB7Ci0gIHN0YXRpYyBib29sIGFib3J0ZWQ7Ci0gIGFib3J0ZWQgPSBmYWxzZTsK
LSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCks
ICIiKTsKLSAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Ci19Ci0KLSNlbmRpZiAgLy8gX05ERUJVRwot
Ci0vLyBUZXN0cyB0aGUgKl9FWElUIGZhbWlseSBvZiBtYWNyb3MsIHVzaW5nIGEgdmFyaWV0eSBv
ZiBwcmVkaWNhdGVzLgotc3RhdGljIHZvaWQgVGVzdEV4aXRNYWNyb3MoKSB7Ci0gIEVYUEVDVF9F
WElUKF9leGl0KDEpLCAgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSksICAiIik7Ci0gIEFTU0VS
VF9FWElUKF9leGl0KDQyKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoNDIpLCAiIik7Ci0KLSNp
ZiBHVEVTVF9PU19XSU5ET1dTCi0gIC8vIE9mIGFsbCBzaWduYWxzIGVmZmVjdHMgb24gdGhlIHBy
b2Nlc3MgZXhpdCBjb2RlLCBvbmx5IHRob3NlIG9mIFNJR0FCUlQKLSAgLy8gYXJlIGRvY3VtZW50
ZWQgb24gV2luZG93cy4KLSAgLy8gU2VlIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMv
bGlicmFyeS9kd3d6a3Q0YyhWUy43MSkuYXNweC4KLSAgRVhQRUNUX0VYSVQocmFpc2UoU0lHQUJS
VCksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDMpLCAiIik7Ci0jZWxzZQotICBFWFBFQ1RfRVhJ
VChyYWlzZShTSUdLSUxMKSwgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHS0lMTCksICIiKSA8
PCAiZm9vIjsKLSAgQVNTRVJUX0VYSVQocmFpc2UoU0lHVVNSMiksIHRlc3Rpbmc6OktpbGxlZEJ5
U2lnbmFsKFNJR1VTUjIpLCAiIikgPDwgImJhciI7Ci0KLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCi0gICAgQVNTRVJUX0VYSVQoX2V4aXQoMCksIHRlc3Rpbmc6OktpbGxlZEJ5
U2lnbmFsKFNJR1NFR1YpLCAiIikKLSAgICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZCwgdG9vLiI7Ci0gIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIHRvby4iKTsKLSNlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8v
IE5PTElOVAotICAgIEVYUEVDVF9FWElUKHJhaXNlKFNJR1NFR1YpLCB0ZXN0aW5nOjpFeGl0ZWRX
aXRoQ29kZSgwKSwgIiIpCi0gICAgICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIjsK
LSAgfSwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4iKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JE
ZWF0aFRlc3QsIEV4aXRNYWNyb3MpIHsKLSAgVGVzdEV4aXRNYWNyb3MoKTsKLX0KLQotVEVTVF9G
KFRlc3RGb3JEZWF0aFRlc3QsIEV4aXRNYWNyb3NVc2luZ0ZvcmspIHsKLSAgdGVzdGluZzo6R1RF
U1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKSA9IHRydWU7Ci0gIFRlc3RFeGl0TWFjcm9zKCk7
Ci19Ci0KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBJbnZhbGlkU3R5bGUpIHsKLSAgdGVzdGlu
Zzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJyb2NvY28iOwotICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMCksICIi
KSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiI7Ci0gIH0sICJUaGlzIGZhaWx1cmUgaXMg
ZXhwZWN0ZWQuIik7Ci19Ci0KLS8vIEEgRGVhdGhUZXN0RmFjdG9yeSB0aGF0IHJldHVybnMgTW9j
a0RlYXRoVGVzdHMuCi1jbGFzcyBNb2NrRGVhdGhUZXN0RmFjdG9yeSA6IHB1YmxpYyBEZWF0aFRl
c3RGYWN0b3J5IHsKLSBwdWJsaWM6Ci0gIE1vY2tEZWF0aFRlc3RGYWN0b3J5KCk7Ci0gIHZpcnR1
YWwgYm9vbCBDcmVhdGUoY29uc3QgY2hhciogc3RhdGVtZW50LAotICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6OlJFKiByZWdleCwKLSAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgRGVhdGhUZXN0KiogdGVzdCk7Ci0K
LSAgLy8gU2V0cyB0aGUgcGFyYW1ldGVycyBmb3Igc3Vic2VxdWVudCBjYWxscyB0byBDcmVhdGUu
Ci0gIHZvaWQgU2V0UGFyYW1ldGVycyhib29sIGNyZWF0ZSwgRGVhdGhUZXN0OjpUZXN0Um9sZSBy
b2xlLAotICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXR1cywgYm9vbCBwYXNzZWQpOwotCi0g
IC8vIEFjY2Vzc29ycy4KLSAgaW50IEFzc3VtZVJvbGVDYWxscygpIGNvbnN0IHsgcmV0dXJuIGFz
c3VtZV9yb2xlX2NhbGxzXzsgfQotICBpbnQgV2FpdENhbGxzKCkgY29uc3QgeyByZXR1cm4gd2Fp
dF9jYWxsc187IH0KLSAgaW50IFBhc3NlZENhbGxzKCkgY29uc3QgeyByZXR1cm4gcGFzc2VkX2Fy
Z3NfLnNpemUoKTsgfQotICBib29sIFBhc3NlZEFyZ3VtZW50KGludCBuKSBjb25zdCB7IHJldHVy
biBwYXNzZWRfYXJnc19bbl07IH0KLSAgaW50IEFib3J0Q2FsbHMoKSBjb25zdCB7IHJldHVybiBh
Ym9ydF9hcmdzXy5zaXplKCk7IH0KLSAgRGVhdGhUZXN0OjpBYm9ydFJlYXNvbiBBYm9ydEFyZ3Vt
ZW50KGludCBuKSBjb25zdCB7Ci0gICAgcmV0dXJuIGFib3J0X2FyZ3NfW25dOwotICB9Ci0gIGJv
b2wgVGVzdERlbGV0ZWQoKSBjb25zdCB7IHJldHVybiB0ZXN0X2RlbGV0ZWRfOyB9Ci0KLSBwcml2
YXRlOgotICBmcmllbmQgY2xhc3MgTW9ja0RlYXRoVGVzdDsKLSAgLy8gSWYgdHJ1ZSwgQ3JlYXRl
IHdpbGwgcmV0dXJuIGEgTW9ja0RlYXRoVGVzdDsgb3RoZXJ3aXNlIGl0IHJldHVybnMKLSAgLy8g
TlVMTC4KLSAgYm9vbCBjcmVhdGVfOwotICAvLyBUaGUgdmFsdWUgYSBNb2NrRGVhdGhUZXN0IHdp
bGwgcmV0dXJuIGZyb20gaXRzIEFzc3VtZVJvbGUgbWV0aG9kLgotICBEZWF0aFRlc3Q6OlRlc3RS
b2xlIHJvbGVfOwotICAvLyBUaGUgdmFsdWUgYSBNb2NrRGVhdGhUZXN0IHdpbGwgcmV0dXJuIGZy
b20gaXRzIFdhaXQgbWV0aG9kLgotICBpbnQgc3RhdHVzXzsKLSAgLy8gVGhlIHZhbHVlIGEgTW9j
a0RlYXRoVGVzdCB3aWxsIHJldHVybiBmcm9tIGl0cyBQYXNzZWQgbWV0aG9kLgotICBib29sIHBh
c3NlZF87Ci0KLSAgLy8gTnVtYmVyIG9mIHRpbWVzIEFzc3VtZVJvbGUgd2FzIGNhbGxlZC4KLSAg
aW50IGFzc3VtZV9yb2xlX2NhbGxzXzsKLSAgLy8gTnVtYmVyIG9mIHRpbWVzIFdhaXQgd2FzIGNh
bGxlZC4KLSAgaW50IHdhaXRfY2FsbHNfOwotICAvLyBUaGUgYXJndW1lbnRzIHRvIHRoZSBjYWxs
cyB0byBQYXNzZWQgc2luY2UgdGhlIGxhc3QgY2FsbCB0bwotICAvLyBTZXRQYXJhbWV0ZXJzLgot
ICBzdGQ6OnZlY3Rvcjxib29sPiBwYXNzZWRfYXJnc187Ci0gIC8vIFRoZSBhcmd1bWVudHMgdG8g
dGhlIGNhbGxzIHRvIEFib3J0IHNpbmNlIHRoZSBsYXN0IGNhbGwgdG8KLSAgLy8gU2V0UGFyYW1l
dGVycy4KLSAgc3RkOjp2ZWN0b3I8RGVhdGhUZXN0OjpBYm9ydFJlYXNvbj4gYWJvcnRfYXJnc187
Ci0gIC8vIFRydWUgaWYgdGhlIGxhc3QgTW9ja0RlYXRoVGVzdCByZXR1cm5lZCBieSBDcmVhdGUg
aGFzIGJlZW4KLSAgLy8gZGVsZXRlZC4KLSAgYm9vbCB0ZXN0X2RlbGV0ZWRfOwotfTsKLQotCi0v
LyBBIERlYXRoVGVzdCBpbXBsZW1lbnRhdGlvbiB1c2VmdWwgaW4gdGVzdGluZy4gIEl0IHJldHVy
bnMgdmFsdWVzIHNldAotLy8gYXQgaXRzIGNyZWF0aW9uIGZyb20gaXRzIHZhcmlvdXMgaW5oZXJp
dGVkIERlYXRoVGVzdCBtZXRob2RzLCBhbmQKLS8vIHJlcG9ydHMgY2FsbHMgdG8gdGhvc2UgbWV0
aG9kcyB0byBpdHMgcGFyZW50IE1vY2tEZWF0aFRlc3RGYWN0b3J5Ci0vLyBvYmplY3QuCi1jbGFz
cyBNb2NrRGVhdGhUZXN0IDogcHVibGljIERlYXRoVGVzdCB7Ci0gcHVibGljOgotICBNb2NrRGVh
dGhUZXN0KE1vY2tEZWF0aFRlc3RGYWN0b3J5ICpwYXJlbnQsCi0gICAgICAgICAgICAgICAgVGVz
dFJvbGUgcm9sZSwgaW50IHN0YXR1cywgYm9vbCBwYXNzZWQpIDoKLSAgICAgIHBhcmVudF8ocGFy
ZW50KSwgcm9sZV8ocm9sZSksIHN0YXR1c18oc3RhdHVzKSwgcGFzc2VkXyhwYXNzZWQpIHsKLSAg
fQotICB2aXJ0dWFsIH5Nb2NrRGVhdGhUZXN0KCkgewotICAgIHBhcmVudF8tPnRlc3RfZGVsZXRl
ZF8gPSB0cnVlOwotICB9Ci0gIHZpcnR1YWwgVGVzdFJvbGUgQXNzdW1lUm9sZSgpIHsKLSAgICAr
K3BhcmVudF8tPmFzc3VtZV9yb2xlX2NhbGxzXzsKLSAgICByZXR1cm4gcm9sZV87Ci0gIH0KLSAg
dmlydHVhbCBpbnQgV2FpdCgpIHsKLSAgICArK3BhcmVudF8tPndhaXRfY2FsbHNfOwotICAgIHJl
dHVybiBzdGF0dXNfOwotICB9Ci0gIHZpcnR1YWwgYm9vbCBQYXNzZWQoYm9vbCBleGl0X3N0YXR1
c19vaykgewotICAgIHBhcmVudF8tPnBhc3NlZF9hcmdzXy5wdXNoX2JhY2soZXhpdF9zdGF0dXNf
b2spOwotICAgIHJldHVybiBwYXNzZWRfOwotICB9Ci0gIHZpcnR1YWwgdm9pZCBBYm9ydChBYm9y
dFJlYXNvbiByZWFzb24pIHsKLSAgICBwYXJlbnRfLT5hYm9ydF9hcmdzXy5wdXNoX2JhY2socmVh
c29uKTsKLSAgfQotIHByaXZhdGU6Ci0gIE1vY2tEZWF0aFRlc3RGYWN0b3J5KiBjb25zdCBwYXJl
bnRfOwotICBjb25zdCBUZXN0Um9sZSByb2xlXzsKLSAgY29uc3QgaW50IHN0YXR1c187Ci0gIGNv
bnN0IGJvb2wgcGFzc2VkXzsKLX07Ci0KLQotLy8gTW9ja0RlYXRoVGVzdEZhY3RvcnkgY29uc3Ry
dWN0b3IuCi1Nb2NrRGVhdGhUZXN0RmFjdG9yeTo6TW9ja0RlYXRoVGVzdEZhY3RvcnkoKQotICAg
IDogY3JlYXRlXyh0cnVlKSwKLSAgICAgIHJvbGVfKERlYXRoVGVzdDo6T1ZFUlNFRV9URVNUKSwK
LSAgICAgIHN0YXR1c18oMCksCi0gICAgICBwYXNzZWRfKHRydWUpLAotICAgICAgYXNzdW1lX3Jv
bGVfY2FsbHNfKDApLAotICAgICAgd2FpdF9jYWxsc18oMCksCi0gICAgICBwYXNzZWRfYXJnc18o
KSwKLSAgICAgIGFib3J0X2FyZ3NfKCkgewotfQotCi0KLS8vIFNldHMgdGhlIHBhcmFtZXRlcnMg
Zm9yIHN1YnNlcXVlbnQgY2FsbHMgdG8gQ3JlYXRlLgotdm9pZCBNb2NrRGVhdGhUZXN0RmFjdG9y
eTo6U2V0UGFyYW1ldGVycyhib29sIGNyZWF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRGVhdGhUZXN0OjpUZXN0Um9sZSByb2xlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdHVzLCBib29sIHBhc3NlZCkgewotICBj
cmVhdGVfID0gY3JlYXRlOwotICByb2xlXyA9IHJvbGU7Ci0gIHN0YXR1c18gPSBzdGF0dXM7Ci0g
IHBhc3NlZF8gPSBwYXNzZWQ7Ci0KLSAgYXNzdW1lX3JvbGVfY2FsbHNfID0gMDsKLSAgd2FpdF9j
YWxsc18gPSAwOwotICBwYXNzZWRfYXJnc18uY2xlYXIoKTsKLSAgYWJvcnRfYXJnc18uY2xlYXIo
KTsKLX0KLQotCi0vLyBTZXRzIHRlc3QgdG8gTlVMTCAoaWYgY3JlYXRlXyBpcyBmYWxzZSkgb3Ig
dG8gdGhlIGFkZHJlc3Mgb2YgYSBuZXcKLS8vIE1vY2tEZWF0aFRlc3Qgb2JqZWN0IHdpdGggcGFy
YW1ldGVycyB0YWtlbiBmcm9tIHRoZSBsYXN0IGNhbGwKLS8vIHRvIFNldFBhcmFtZXRlcnMgKGlm
IGNyZWF0ZV8gaXMgdHJ1ZSkuICBBbHdheXMgcmV0dXJucyB0cnVlLgotYm9vbCBNb2NrRGVhdGhU
ZXN0RmFjdG9yeTo6Q3JlYXRlKGNvbnN0IGNoYXIqIC8qc3RhdGVtZW50Ki8sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UkUqIC8q
cmVnZXgqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAv
KmZpbGUqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgLypsaW5lKi8s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVhdGhUZXN0KiogdGVzdCkgewot
ICB0ZXN0X2RlbGV0ZWRfID0gZmFsc2U7Ci0gIGlmIChjcmVhdGVfKSB7Ci0gICAgKnRlc3QgPSBu
ZXcgTW9ja0RlYXRoVGVzdCh0aGlzLCByb2xlXywgc3RhdHVzXywgcGFzc2VkXyk7Ci0gIH0gZWxz
ZSB7Ci0gICAgKnRlc3QgPSBOVUxMOwotICB9Ci0gIHJldHVybiB0cnVlOwotfQotCi0vLyBBIHRl
c3QgZml4dHVyZSBmb3IgdGVzdGluZyB0aGUgbG9naWMgb2YgdGhlIEdURVNUX0RFQVRIX1RFU1Rf
IG1hY3JvLgotLy8gSXQgaW5zdGFsbHMgYSBNb2NrRGVhdGhUZXN0RmFjdG9yeSB0aGF0IGlzIHVz
ZWQgZm9yIHRoZSBkdXJhdGlvbgotLy8gb2YgdGhlIHRlc3QgY2FzZS4KLWNsYXNzIE1hY3JvTG9n
aWNEZWF0aFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICBzdGF0
aWMgdGVzdGluZzo6aW50ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KiByZXBsYWNlcl87
Ci0gIHN0YXRpYyBNb2NrRGVhdGhUZXN0RmFjdG9yeSogZmFjdG9yeV87Ci0KLSAgc3RhdGljIHZv
aWQgU2V0VXBUZXN0Q2FzZSgpIHsKLSAgICBmYWN0b3J5XyA9IG5ldyBNb2NrRGVhdGhUZXN0RmFj
dG9yeTsKLSAgICByZXBsYWNlcl8gPSBuZXcgdGVzdGluZzo6aW50ZXJuYWw6OlJlcGxhY2VEZWF0
aFRlc3RGYWN0b3J5KGZhY3RvcnlfKTsKLSAgfQotCi0gIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVz
dENhc2UoKSB7Ci0gICAgZGVsZXRlIHJlcGxhY2VyXzsKLSAgICByZXBsYWNlcl8gPSBOVUxMOwot
ICAgIGRlbGV0ZSBmYWN0b3J5XzsKLSAgICBmYWN0b3J5XyA9IE5VTEw7Ci0gIH0KLQotICAvLyBS
dW5zIGEgZGVhdGggdGVzdCB0aGF0IGJyZWFrcyB0aGUgcnVsZXMgYnkgcmV0dXJuaW5nLiAgU3Vj
aCBhIGRlYXRoCi0gIC8vIHRlc3QgY2Fubm90IGJlIHJ1biBkaXJlY3RseSBmcm9tIGEgdGVzdCBy
b3V0aW5lIHRoYXQgdXNlcyBhCi0gIC8vIE1vY2tEZWF0aFRlc3QsIG9yIHRoZSByZW1haW5kZXIg
b2YgdGhlIHJvdXRpbmUgd2lsbCBub3QgYmUgZXhlY3V0ZWQuCi0gIHN0YXRpYyB2b2lkIFJ1blJl
dHVybmluZ0RlYXRoVGVzdChib29sKiBmbGFnKSB7Ci0gICAgQVNTRVJUX0RFQVRIKHsgIC8vIE5P
TElOVAotICAgICAgKmZsYWcgPSB0cnVlOwotICAgICAgcmV0dXJuOwotICAgIH0sICIiKTsKLSAg
fQotfTsKLQotdGVzdGluZzo6aW50ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KiBNYWNy
b0xvZ2ljRGVhdGhUZXN0OjpyZXBsYWNlcl8KLSAgICA9IE5VTEw7Ci1Nb2NrRGVhdGhUZXN0RmFj
dG9yeSogTWFjcm9Mb2dpY0RlYXRoVGVzdDo6ZmFjdG9yeV8gPSBOVUxMOwotCi0KLS8vIFRlc3Qg
dGhhdCBub3RoaW5nIGhhcHBlbnMgd2hlbiB0aGUgZmFjdG9yeSBkb2Vzbid0IHJldHVybiBhIERl
YXRoVGVzdDoKLVRFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBOb3RoaW5nSGFwcGVucykgewot
ICBib29sIGZsYWcgPSBmYWxzZTsKLSAgZmFjdG9yeV8tPlNldFBhcmFtZXRlcnMoZmFsc2UsIERl
YXRoVGVzdDo6T1ZFUlNFRV9URVNULCAwLCB0cnVlKTsKLSAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0
cnVlLCAiIik7Ci0gIEVYUEVDVF9GQUxTRShmbGFnKTsKLSAgRVhQRUNUX0VRKDAsIGZhY3Rvcnlf
LT5Bc3N1bWVSb2xlQ2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+V2FpdENhbGxz
KCkpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOwotICBFWFBFQ1Rf
RVEoMCwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7Ci0gIEVYUEVDVF9GQUxTRShmYWN0b3J5Xy0+
VGVzdERlbGV0ZWQoKSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCB0aGUgcGFyZW50IHByb2Nlc3MgZG9l
c24ndCBydW4gdGhlIGRlYXRoIHRlc3QgY29kZSwKLS8vIGFuZCB0aGF0IHRoZSBQYXNzZWQgbWV0
aG9kIHJldHVybnMgZmFsc2Ugd2hlbiB0aGUgKHNpbXVsYXRlZCkKLS8vIGNoaWxkIHByb2Nlc3Mg
ZXhpdHMgd2l0aCBzdGF0dXMgMDoKLVRFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBDaGlsZEV4
aXRzU3VjY2Vzc2Z1bGx5KSB7Ci0gIGJvb2wgZmxhZyA9IGZhbHNlOwotICBmYWN0b3J5Xy0+U2V0
UGFyYW1ldGVycyh0cnVlLCBEZWF0aFRlc3Q6Ok9WRVJTRUVfVEVTVCwgMCwgdHJ1ZSk7Ci0gIEVY
UEVDVF9ERUFUSChmbGFnID0gdHJ1ZSwgIiIpOwotICBFWFBFQ1RfRkFMU0UoZmxhZyk7Ci0gIEVY
UEVDVF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOwotICBFWFBFQ1RfRVEoMSwg
ZmFjdG9yeV8tPldhaXRDYWxscygpKTsKLSAgQVNTRVJUX0VRKDEsIGZhY3RvcnlfLT5QYXNzZWRD
YWxscygpKTsKLSAgRVhQRUNUX0ZBTFNFKGZhY3RvcnlfLT5QYXNzZWRBcmd1bWVudCgwKSk7Ci0g
IEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKLSAgRVhQRUNUX1RSVUUoZmFj
dG9yeV8tPlRlc3REZWxldGVkKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBQYXNzZWQgbWV0
aG9kIHdhcyBnaXZlbiB0aGUgYXJndW1lbnQgInRydWUiIHdoZW4KLS8vIHRoZSAoc2ltdWxhdGVk
KSBjaGlsZCBwcm9jZXNzIGV4aXRzIHdpdGggc3RhdHVzIDE6Ci1URVNUX0YoTWFjcm9Mb2dpY0Rl
YXRoVGVzdCwgQ2hpbGRFeGl0c1Vuc3VjY2Vzc2Z1bGx5KSB7Ci0gIGJvb2wgZmxhZyA9IGZhbHNl
OwotICBmYWN0b3J5Xy0+U2V0UGFyYW1ldGVycyh0cnVlLCBEZWF0aFRlc3Q6Ok9WRVJTRUVfVEVT
VCwgMSwgdHJ1ZSk7Ci0gIEVYUEVDVF9ERUFUSChmbGFnID0gdHJ1ZSwgIiIpOwotICBFWFBFQ1Rf
RkFMU0UoZmxhZyk7Ci0gIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkp
OwotICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPldhaXRDYWxscygpKTsKLSAgQVNTRVJUX0VRKDEs
IGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKLSAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlBhc3Nl
ZEFyZ3VtZW50KDApKTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOwot
ICBFWFBFQ1RfVFJVRShmYWN0b3J5Xy0+VGVzdERlbGV0ZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgdGhlIChzaW11bGF0ZWQpIGNoaWxkIHByb2Nlc3MgZXhlY3V0ZXMgdGhlIGRlYXRoIHRlc3QK
LS8vIGNvZGUsIGFuZCBpcyBhYm9ydGVkIHdpdGggdGhlIGNvcnJlY3QgQWJvcnRSZWFzb24gaWYg
aXQKLS8vIGV4ZWN1dGVzIGEgcmV0dXJuIHN0YXRlbWVudC4KLVRFU1RfRihNYWNyb0xvZ2ljRGVh
dGhUZXN0LCBDaGlsZFBlcmZvcm1zUmV0dXJuKSB7Ci0gIGJvb2wgZmxhZyA9IGZhbHNlOwotICBm
YWN0b3J5Xy0+U2V0UGFyYW1ldGVycyh0cnVlLCBEZWF0aFRlc3Q6OkVYRUNVVEVfVEVTVCwgMCwg
dHJ1ZSk7Ci0gIFJ1blJldHVybmluZ0RlYXRoVGVzdCgmZmxhZyk7Ci0gIEVYUEVDVF9UUlVFKGZs
YWcpOwotICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKLSAgRVhQ
RUNUX0VRKDAsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5
Xy0+UGFzc2VkQ2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygp
KTsKLSAgRVhQRUNUX0VRKERlYXRoVGVzdDo6VEVTVF9FTkNPVU5URVJFRF9SRVRVUk5fU1RBVEVN
RU5ULAotICAgICAgICAgICAgZmFjdG9yeV8tPkFib3J0QXJndW1lbnQoMCkpOwotICBFWFBFQ1Rf
VFJVRShmYWN0b3J5Xy0+VGVzdERlbGV0ZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIChz
aW11bGF0ZWQpIGNoaWxkIHByb2Nlc3MgaXMgYWJvcnRlZCB3aXRoIHRoZQotLy8gY29ycmVjdCBB
Ym9ydFJlYXNvbiBpZiBpdCBkb2VzIG5vdCBkaWUuCi1URVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVz
dCwgQ2hpbGREb2VzTm90RGllKSB7Ci0gIGJvb2wgZmxhZyA9IGZhbHNlOwotICBmYWN0b3J5Xy0+
U2V0UGFyYW1ldGVycyh0cnVlLCBEZWF0aFRlc3Q6OkVYRUNVVEVfVEVTVCwgMCwgdHJ1ZSk7Ci0g
IEVYUEVDVF9ERUFUSChmbGFnID0gdHJ1ZSwgIiIpOwotICBFWFBFQ1RfVFJVRShmbGFnKTsKLSAg
RVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5Bc3N1bWVSb2xlQ2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgw
LCBmYWN0b3J5Xy0+V2FpdENhbGxzKCkpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPlBhc3Nl
ZENhbGxzKCkpOwotICAvLyBUaGlzIHRpbWUgdGhlcmUgYXJlIHR3byBjYWxscyB0byBBYm9ydDog
b25lIHNpbmNlIHRoZSB0ZXN0IGRpZG4ndAotICAvLyBkaWUsIGFuZCBhbm90aGVyIGZyb20gdGhl
IFJldHVyblNlbnRpbmVsIHdoZW4gaXQncyBkZXN0cm95ZWQuICBUaGUKLSAgLy8gc2VudGluZWwg
bm9ybWFsbHkgaXNuJ3QgZGVzdHJveWVkIGlmIGEgdGVzdCBkb2Vzbid0IGRpZSwgc2luY2UKLSAg
Ly8gX2V4aXQoMikgaXMgY2FsbGVkIGluIHRoYXQgY2FzZSBieSBGb3JraW5nRGVhdGhUZXN0LCBi
dXQgbm90IGJ5Ci0gIC8vIG91ciBNb2NrRGVhdGhUZXN0LgotICBBU1NFUlRfRVEoMiwgZmFjdG9y
eV8tPkFib3J0Q2FsbHMoKSk7Ci0gIEVYUEVDVF9FUShEZWF0aFRlc3Q6OlRFU1RfRElEX05PVF9E
SUUsCi0gICAgICAgICAgICBmYWN0b3J5Xy0+QWJvcnRBcmd1bWVudCgwKSk7Ci0gIEVYUEVDVF9F
UShEZWF0aFRlc3Q6OlRFU1RfRU5DT1VOVEVSRURfUkVUVVJOX1NUQVRFTUVOVCwKLSAgICAgICAg
ICAgIGZhY3RvcnlfLT5BYm9ydEFyZ3VtZW50KDEpKTsKLSAgRVhQRUNUX1RSVUUoZmFjdG9yeV8t
PlRlc3REZWxldGVkKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgc3VjY2Vzc2Z1bCBkZWF0aCB0
ZXN0IGRvZXMgbm90IHJlZ2lzdGVyIGEgc3VjY2Vzc2Z1bAotLy8gdGVzdCBwYXJ0LgotVEVTVChT
dWNjZXNzUmVnaXN0cmF0aW9uRGVhdGhUZXN0LCBOb1N1Y2Nlc3NQYXJ0KSB7Ci0gIEVYUEVDVF9E
RUFUSChfZXhpdCgxKSwgIiIpOwotICBFWFBFQ1RfRVEoMCwgR2V0VW5pdFRlc3RJbXBsKCktPmN1
cnJlbnRfdGVzdF9yZXN1bHQoKS0+dG90YWxfcGFydF9jb3VudCgpKTsKLX0KLQotVEVTVChTdHJl
YW1pbmdBc3NlcnRpb25zRGVhdGhUZXN0LCBEZWF0aFRlc3QpIHsKLSAgRVhQRUNUX0RFQVRIKF9l
eGl0KDEpLCAiIikgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIEFTU0VSVF9ERUFUSChfZXhp
dCgxKSwgIiIpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMCksICIiKSA8PCAiZXhw
ZWN0ZWQgZmFpbHVyZSI7Ci0gIH0sICJleHBlY3RlZCBmYWlsdXJlIik7Ci0gIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9ERUFUSChfZXhpdCgwKSwgIiIpIDw8
ICJleHBlY3RlZCBmYWlsdXJlIjsKLSAgfSwgImV4cGVjdGVkIGZhaWx1cmUiKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbiByZXR1cm5zIGFuIGVtcHR5IHN0cmlu
ZyB3aGVuIHRoZQotLy8gbGFzdCBlcnJvciBpcyAwIGFuZCBub24tZW1wdHkgc3RyaW5nIHdoZW4g
aXQgaXMgbm9uLXplcm8uCi1URVNUKEdldExhc3RFcnJub0Rlc2NyaXB0aW9uLCBHZXRMYXN0RXJy
bm9EZXNjcmlwdGlvbldvcmtzKSB7Ci0gIGVycm5vID0gRU5PRU5UOwotICBFWFBFQ1RfU1RSTkUo
IiIsIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkuY19zdHIoKSk7Ci0gIGVycm5vID0gMDsKLSAg
RVhQRUNUX1NUUkVRKCIiLCBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpLmNfc3RyKCkpOwotfQot
Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotVEVTVChBdXRvSGFuZGxlVGVzdCwgQXV0b0hhbmRsZVdv
cmtzKSB7Ci0gIEhBTkRMRSBoYW5kbGUgPSA6OkNyZWF0ZUV2ZW50KE5VTEwsIEZBTFNFLCBGQUxT
RSwgTlVMTCk7Ci0gIEFTU0VSVF9ORShJTlZBTElEX0hBTkRMRV9WQUxVRSwgaGFuZGxlKTsKLQot
ICAvLyBUZXN0cyB0aGF0IHRoZSBBdXRvSGFuZGxlIGlzIGNvcnJlY3RseSBpbml0aWFsaXplZCB3
aXRoIGEgaGFuZGxlLgotICB0ZXN0aW5nOjppbnRlcm5hbDo6QXV0b0hhbmRsZSBhdXRvX2hhbmRs
ZShoYW5kbGUpOwotICBFWFBFQ1RfRVEoaGFuZGxlLCBhdXRvX2hhbmRsZS5HZXQoKSk7Ci0KLSAg
Ly8gVGVzdHMgdGhhdCBSZXNldCBhc3NpZ25zIElOVkFMSURfSEFORExFX1ZBTFVFLgotICAvLyBO
b3RlIHRoYXQgdGhpcyBjYW5ub3QgdmVyaWZ5IHdoZXRoZXIgdGhlIG9yaWdpbmFsIGhhbmRsZSBp
cyBjbG9zZWQuCi0gIGF1dG9faGFuZGxlLlJlc2V0KCk7Ci0gIEVYUEVDVF9FUShJTlZBTElEX0hB
TkRMRV9WQUxVRSwgYXV0b19oYW5kbGUuR2V0KCkpOwotCi0gIC8vIFRlc3RzIHRoYXQgUmVzZXQg
YXNzaWducyB0aGUgbmV3IGhhbmRsZS4KLSAgLy8gTm90ZSB0aGF0IHRoaXMgY2Fubm90IHZlcmlm
eSB3aGV0aGVyIHRoZSBvcmlnaW5hbCBoYW5kbGUgaXMgY2xvc2VkLgotICBoYW5kbGUgPSA6OkNy
ZWF0ZUV2ZW50KE5VTEwsIEZBTFNFLCBGQUxTRSwgTlVMTCk7Ci0gIEFTU0VSVF9ORShJTlZBTElE
X0hBTkRMRV9WQUxVRSwgaGFuZGxlKTsKLSAgYXV0b19oYW5kbGUuUmVzZXQoaGFuZGxlKTsKLSAg
RVhQRUNUX0VRKGhhbmRsZSwgYXV0b19oYW5kbGUuR2V0KCkpOwotCi0gIC8vIFRlc3RzIHRoYXQg
QXV0b0hhbmRsZSBjb250YWlucyBJTlZBTElEX0hBTkRMRV9WQUxVRSBieSBkZWZhdWx0LgotICB0
ZXN0aW5nOjppbnRlcm5hbDo6QXV0b0hhbmRsZSBhdXRvX2hhbmRsZTI7Ci0gIEVYUEVDVF9FUShJ
TlZBTElEX0hBTkRMRV9WQUxVRSwgYXV0b19oYW5kbGUyLkdldCgpKTsKLX0KLSNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUwotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotdHlwZWRlZiB1bnNpZ25l
ZCBfX2ludDY0IEJpZ2dlc3RQYXJzYWJsZTsKLXR5cGVkZWYgc2lnbmVkIF9faW50NjQgQmlnZ2Vz
dFNpZ25lZFBhcnNhYmxlOwotY29uc3QgQmlnZ2VzdFBhcnNhYmxlIGtCaWdnZXN0UGFyc2FibGVN
YXggPSBVTExPTkdfTUFYOwotY29uc3QgQmlnZ2VzdFBhcnNhYmxlIGtCaWdnZXN0U2lnbmVkUGFy
c2FibGVNYXggPSBMTE9OR19NQVg7Ci0jZWxzZQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcg
QmlnZ2VzdFBhcnNhYmxlOwotdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIEJpZ2dlc3RTaWduZWRQ
YXJzYWJsZTsKLWNvbnN0IEJpZ2dlc3RQYXJzYWJsZSBrQmlnZ2VzdFBhcnNhYmxlTWF4ID0KLSAg
ICA6OnN0ZDo6bnVtZXJpY19saW1pdHM8QmlnZ2VzdFBhcnNhYmxlPjo6bWF4KCk7Ci1jb25zdCBC
aWdnZXN0U2lnbmVkUGFyc2FibGUga0JpZ2dlc3RTaWduZWRQYXJzYWJsZU1heCA9Ci0gICAgOjpz
dGQ6Om51bWVyaWNfbGltaXRzPEJpZ2dlc3RTaWduZWRQYXJzYWJsZT46Om1heCgpOwotI2VuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLVRFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgUmVq
ZWN0c0ludmFsaWRGb3JtYXQpIHsKLSAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7Ci0KLSAg
Ly8gUmVqZWN0cyBub24tbnVtYmVycy4KLSAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJl
cihTdHJpbmcoIm5vbi1udW1iZXIgc3RyaW5nIiksICZyZXN1bHQpKTsKLQotICAvLyBSZWplY3Rz
IG51bWJlcnMgd2l0aCB3aGl0ZXNwYWNlIHByZWZpeC4KLSAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0
dXJhbE51bWJlcihTdHJpbmcoIiAxMjMiKSwgJnJlc3VsdCkpOwotCi0gIC8vIFJlamVjdHMgbmVn
YXRpdmUgbnVtYmVycy4KLSAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmco
Ii0xMjMiKSwgJnJlc3VsdCkpOwotCi0gIC8vIFJlamVjdHMgbnVtYmVycyBzdGFydGluZyB3aXRo
IGEgcGx1cyBzaWduLgotICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygi
KzEyMyIpLCAmcmVzdWx0KSk7Ci0gIGVycm5vID0gMDsKLX0KLQotVEVTVChQYXJzZU5hdHVyYWxO
dW1iZXJUZXN0LCBSZWplY3RzT3ZlcmZsb3duTnVtYmVycykgewotICBCaWdnZXN0UGFyc2FibGUg
cmVzdWx0ID0gMDsKLQotICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygi
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkiKSwgJnJlc3VsdCkpOwotCi0gIHNpZ25lZCBjaGFyIGNo
YXJfcmVzdWx0ID0gMDsKLSAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmco
IjIwMCIpLCAmY2hhcl9yZXN1bHQpKTsKLSAgZXJybm8gPSAwOwotfQotCi1URVNUKFBhcnNlTmF0
dXJhbE51bWJlclRlc3QsIEFjY2VwdHNWYWxpZE51bWJlcnMpIHsKLSAgQmlnZ2VzdFBhcnNhYmxl
IHJlc3VsdCA9IDA7Ci0KLSAgcmVzdWx0ID0gMDsKLSAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFs
TnVtYmVyKFN0cmluZygiMTIzIiksICZyZXN1bHQpKTsKLSAgRVhQRUNUX0VRKDEyM1UsIHJlc3Vs
dCk7Ci0KLSAgLy8gQ2hlY2sgMCBhcyBhbiBlZGdlIGNhc2UuCi0gIHJlc3VsdCA9IDE7Ci0gIEFT
U0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIjAiKSwgJnJlc3VsdCkpOwotICBF
WFBFQ1RfRVEoMFUsIHJlc3VsdCk7Ci0KLSAgcmVzdWx0ID0gMTsKLSAgQVNTRVJUX1RSVUUoUGFy
c2VOYXR1cmFsTnVtYmVyKFN0cmluZygiMDAwMDAiKSwgJnJlc3VsdCkpOwotICBFWFBFQ1RfRVEo
MFUsIHJlc3VsdCk7Ci19Ci0KLVRFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgQWNjZXB0c1R5
cGVMaW1pdHMpIHsKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBrQmlnZ2VzdFBhcnNhYmxlTWF4
OwotCi0gIEJpZ2dlc3RQYXJzYWJsZSByZXN1bHQgPSAwOwotICBFWFBFQ1RfVFJVRShQYXJzZU5h
dHVyYWxOdW1iZXIobXNnLkdldFN0cmluZygpLCAmcmVzdWx0KSk7Ci0gIEVYUEVDVF9FUShrQmln
Z2VzdFBhcnNhYmxlTWF4LCByZXN1bHQpOwotCi0gIE1lc3NhZ2UgbXNnMjsKLSAgbXNnMiA8PCBr
QmlnZ2VzdFNpZ25lZFBhcnNhYmxlTWF4OwotCi0gIEJpZ2dlc3RTaWduZWRQYXJzYWJsZSBzaWdu
ZWRfcmVzdWx0ID0gMDsKLSAgRVhQRUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKG1zZzIuR2V0
U3RyaW5nKCksICZzaWduZWRfcmVzdWx0KSk7Ci0gIEVYUEVDVF9FUShrQmlnZ2VzdFNpZ25lZFBh
cnNhYmxlTWF4LCBzaWduZWRfcmVzdWx0KTsKLQotICBNZXNzYWdlIG1zZzM7Ci0gIG1zZzMgPDwg
SU5UX01BWDsKLQotICBpbnQgaW50X3Jlc3VsdCA9IDA7Ci0gIEVYUEVDVF9UUlVFKFBhcnNlTmF0
dXJhbE51bWJlcihtc2czLkdldFN0cmluZygpLCAmaW50X3Jlc3VsdCkpOwotICBFWFBFQ1RfRVEo
SU5UX01BWCwgaW50X3Jlc3VsdCk7Ci0KLSAgTWVzc2FnZSBtc2c0OwotICBtc2c0IDw8IFVJTlRf
TUFYOwotCi0gIHVuc2lnbmVkIGludCB1aW50X3Jlc3VsdCA9IDA7Ci0gIEVYUEVDVF9UUlVFKFBh
cnNlTmF0dXJhbE51bWJlcihtc2c0LkdldFN0cmluZygpLCAmdWludF9yZXN1bHQpKTsKLSAgRVhQ
RUNUX0VRKFVJTlRfTUFYLCB1aW50X3Jlc3VsdCk7Ci19Ci0KLVRFU1QoUGFyc2VOYXR1cmFsTnVt
YmVyVGVzdCwgV29ya3NGb3JTaG9ydGVySW50ZWdlcnMpIHsKLSAgc2hvcnQgc2hvcnRfcmVzdWx0
ID0gMDsKLSAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygiMTIzIiksICZz
aG9ydF9yZXN1bHQpKTsKLSAgRVhQRUNUX0VRKDEyMywgc2hvcnRfcmVzdWx0KTsKLQotICBzaWdu
ZWQgY2hhciBjaGFyX3Jlc3VsdCA9IDA7Ci0gIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJl
cihTdHJpbmcoIjEyMyIpLCAmY2hhcl9yZXN1bHQpKTsKLSAgRVhQRUNUX0VRKDEyMywgY2hhcl9y
ZXN1bHQpOwotfQotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotVEVTVChFbnZpcm9ubWVudFRlc3Qs
IEhhbmRsZUZpdHNJbnRvU2l6ZVQpIHsKLSAgLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogUmVt
b3ZlIHRoaXMgdGVzdCBhZnRlciB0aGlzIGNvbmRpdGlvbiBpcyB2ZXJpZmllZAotICAvLyBpbiBh
IHN0YXRpYyBhc3NlcnRpb24gaW4gZ3Rlc3QtZGVhdGgtdGVzdC5jYyBpbiB0aGUgZnVuY3Rpb24K
LSAgLy8gR2V0U3RhdHVzRmlsZURlc2NyaXB0b3IuCi0gIEFTU0VSVF9UUlVFKHNpemVvZihIQU5E
TEUpIDw9IHNpemVvZihzaXplX3QpKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwot
Ci0vLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQvQVNTRVJUX0RFQVRIX0lG
X1NVUFBPUlRFRCB0cmlnZ2VyCi0vLyBmYWlsdXJlcyB3aGVuIGRlYXRoIHRlc3RzIGFyZSBhdmFp
bGFibGUgb24gdGhlIHN5c3RlbS4KLVRFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc0RlYXRoVGVz
dCwgRXhwZWN0c0RlYXRoV2hlbkRlYXRoVGVzdHNBdmFpbGFibGUpIHsKLSAgRVhQRUNUX0RFQVRI
X0lGX1NVUFBPUlRFRChEaWVJbnNpZGUoIkNvbmREZWF0aFRlc3RFeHBlY3RNYWNybyIpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJkZWF0aCBpbnNpZGUgQ29uZERlYXRoVGVzdEV4cGVj
dE1hY3JvIik7Ci0gIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoRGllSW5zaWRlKCJDb25kRGVh
dGhUZXN0QXNzZXJ0TWFjcm8iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVhdGgg
aW5zaWRlIENvbmREZWF0aFRlc3RBc3NlcnRNYWNybyIpOwotCi0gIC8vIEVtcHR5IHN0YXRlbWVu
dCB3aWxsIG5vdCBjcmFzaCwgd2hpY2ggbXVzdCB0cmlnZ2VyIGEgZmFpbHVyZS4KLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIiksICIiKTsK
LSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIiks
ICIiKTsKLX0KLQotI2Vsc2UKLQotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkNhcHR1cmVTdGRl
cnI7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0Q2FwdHVyZWRTdGRlcnI7Ci11c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOwotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSF9J
Rl9TVVBQT1JURUQvQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCBhcmUgc3RpbGwKLS8vIGRlZmlu
ZWQgYnV0IGRvIG5vdCB0cmlnZ2VyIGZhaWx1cmVzIHdoZW4gZGVhdGggdGVzdHMgYXJlIG5vdCBh
dmFpbGFibGUgb24KLS8vIHRoZSBzeXN0ZW0uCi1URVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NU
ZXN0LCBXYXJuc1doZW5EZWF0aFRlc3RzTm90QXZhaWxhYmxlKSB7Ci0gIC8vIEVtcHR5IHN0YXRl
bWVudCB3aWxsIG5vdCBjcmFzaCwgYnV0IHRoYXQgc2hvdWxkIG5vdCB0cmlnZ2VyIGEgZmFpbHVy
ZQotICAvLyB3aGVuIGRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkLgotICBDYXB0dXJlU3Rk
ZXJyKCk7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIpOwotICBTdHJpbmcgb3V0
cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCAhPSBzdHJzdHIo
b3V0cHV0LmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWF0aCB0ZXN0
cyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikpOwotICBBU1NFUlRfVFJVRShO
VUxMICE9IHN0cnN0cihvdXRwdXQuY19zdHIoKSwgIjsiKSk7Ci0KLSAgLy8gVGhlIHN0cmVhbWVk
IG1lc3NhZ2Ugc2hvdWxkIG5vdCBiZSBwcmludGVkIGFzIHRoZXJlIGlzIG5vIHRlc3QgZmFpbHVy
ZS4KLSAgQ2FwdHVyZVN0ZGVycigpOwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDssICIi
KSA8PCAic3RyZWFtZWQgbWVzc2FnZSI7Ci0gIG91dHB1dCA9IEdldENhcHR1cmVkU3RkZXJyKCk7
Ci0gIEFTU0VSVF9UUlVFKE5VTEwgPT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLCAic3RyZWFtZWQg
bWVzc2FnZSIpKTsKLQotICBDYXB0dXJlU3RkZXJyKCk7Ci0gIEFTU0VSVF9ERUFUSF9JRl9TVVBQ
T1JURUQoOywgIiIpOyAgLy8gTk9MSU5UCi0gIG91dHB1dCA9IEdldENhcHR1cmVkU3RkZXJyKCk7
Ci0gIEFTU0VSVF9UUlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhp
cyBwbGF0Zm9ybSIpKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCAhPSBzdHJzdHIob3V0cHV0LmNfc3Ry
KCksICI7IikpOwotCi0gIENhcHR1cmVTdGRlcnIoKTsKLSAgQVNTRVJUX0RFQVRIX0lGX1NVUFBP
UlRFRCg7LCAiIikgPDwgInN0cmVhbWVkIG1lc3NhZ2UiOyAgLy8gTk9MSU5UCi0gIG91dHB1dCA9
IEdldENhcHR1cmVkU3RkZXJyKCk7Ci0gIEFTU0VSVF9UUlVFKE5VTEwgPT0gc3Ryc3RyKG91dHB1
dC5jX3N0cigpLCAic3RyZWFtZWQgbWVzc2FnZSIpKTsKLX0KLQotdm9pZCBGdW5jV2l0aEFzc2Vy
dChpbnQqIG4pIHsKLSAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChyZXR1cm47LCAiIik7Ci0g
ICgqbikrKzsKLX0KLQotLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEIGRv
ZXMgbm90IHJldHVybiBmcm9tIHRoZSBjdXJyZW50Ci0vLyBmdW5jdGlvbiAoYXMgQVNTRVJUX0RF
QVRIIGRvZXMpIGlmIGRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkLgotVEVTVChDb25kaXRp
b25hbERlYXRoTWFjcm9zVGVzdCwgQXNzZXJ0RGVhdERvZXNOb3RSZXR1cm5oSWZVbnN1cHBvcnRl
ZCkgewotICBpbnQgbiA9IDA7Ci0gIEZ1bmNXaXRoQXNzZXJ0KCZuKTsKLSAgRVhQRUNUX0VRKDEs
IG4pOwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi0vLyBUZXN0cyB0aGF0
IHRoZSBkZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29kZSB3aGljaCBtYXkgb3IgbWF5IG5v
dAotLy8gYmUgZm9sbG93ZWQgYnkgb3BlcmF0b3I8PCwgYW5kIHRoYXQgaW4gZWl0aGVyIGNhc2Ug
dGhlIGNvbXBsZXRlIHRleHQKLS8vIGNvbXByaXNlcyBvbmx5IGEgc2luZ2xlIEMrKyBzdGF0ZW1l
bnQuCi0vLwotLy8gVGhlIHN5bnRheCBzaG91bGQgd29yayB3aGV0aGVyIGRlYXRoIHRlc3RzIGFy
ZSBhdmFpbGFibGUgb3Igbm90LgotVEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zU3ludGF4RGVh
dGhUZXN0LCBTaW5nbGVTdGF0ZW1lbnQpIHsKLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgLy8g
VGhpcyB3b3VsZCBmYWlsIGlmIGV4ZWN1dGVkOyB0aGlzIGlzIGEgY29tcGlsYXRpb24gdGVzdCBv
bmx5Ci0gICAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChyZXR1cm4sICIiKTsKLQotICBpZiAo
QWx3YXlzVHJ1ZSgpKQotICAgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQoMSksICIi
KTsKLSAgZWxzZQotICAgIC8vIFRoaXMgZW1wdHkgImVsc2UiIGJyYW5jaCBpcyBtZWFudCB0byBl
bnN1cmUgdGhhdCBFWFBFQ1RfREVBVEgKLSAgICAvLyBkb2Vzbid0IGV4cGFuZCBpbnRvIGFuICJp
ZiIgc3RhdGVtZW50IHdpdGhvdXQgYW4gImVsc2UiCi0gICAgOyAgLy8gTk9MSU5UCi0KLSAgaWYg
KEFsd2F5c0ZhbHNlKCkpCi0gICAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChyZXR1cm4sICIi
KSA8PCAiZGlkIG5vdCBkaWUiOwotCi0gIGlmIChBbHdheXNGYWxzZSgpKQotICAgIDsgIC8vIE5P
TElOVAotICBlbHNlCi0gICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChfZXhpdCgxKSwgIiIp
IDw8IDEgPDwgMiA8PCAzOwotfQotCi0vLyBUZXN0cyB0aGF0IGNvbmRpdGlvbmFsIGRlYXRoIHRl
c3QgbWFjcm9zIGV4cGFuZCB0byBjb2RlIHdoaWNoIGludGVyYWN0cwotLy8gd2VsbCB3aXRoIHN3
aXRjaCBzdGF0ZW1lbnRzLgotVEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zU3ludGF4RGVhdGhU
ZXN0LCBTd2l0Y2hTdGF0ZW1lbnQpIHsKLS8vIE1pY3Jvc29mdCBjb21waWxlciB1c3VhbGx5IGNv
bXBsYWlucyBhYm91dCBzd2l0Y2ggc3RhdGVtZW50cyB3aXRob3V0Ci0vLyBjYXNlIGxhYmVscy4g
V2Ugc3VwcHJlc3MgdGhhdCB3YXJuaW5nIGZvciB0aGlzIHRlc3QuCi0jaWZkZWYgX01TQ19WRVIK
LSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQwNjUpCi0j
ZW5kaWYgIC8vIF9NU0NfVkVSCi0KLSAgc3dpdGNoICgwKQotICAgIGRlZmF1bHQ6Ci0gICAgICBB
U1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKF9leGl0KDEpLCAiIikKLSAgICAgICAgICA8PCAiZXhp
dCBpbiBkZWZhdWx0IHN3aXRjaCBoYW5kbGVyIjsKLQotICBzd2l0Y2ggKDApCi0gICAgY2FzZSAw
OgotICAgICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChfZXhpdCgxKSwgIiIpIDw8ICJleGl0
IGluIHN3aXRjaCBjYXNlIjsKLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmcocG9w
KQotI2VuZGlmICAvLyBfTVNDX1ZFUgotfQotCi0vLyBUZXN0cyB0aGF0IGEgdGVzdCBjYXNlIHdo
b3NlIG5hbWUgZW5kcyB3aXRoICJEZWF0aFRlc3QiIHdvcmtzIGZpbmUKLS8vIG9uIFdpbmRvd3Mu
Ci1URVNUKE5vdEFEZWF0aFRlc3QsIFRlc3QpIHsKLSAgU1VDQ0VFRCgpOwotfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1maWxlcGF0aF90ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1maWxlcGF0aF90ZXN0LmNjCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjUwMjgyNzU4ZGZiM2M5M2Y0N2YwOTFjNTJhMmRi
ZjkyY2FjZWViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtZmlsZXBhdGhfdGVzdC5jYworKysg
L2Rldi9udWxsCkBAIC0xLDY5MCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIElu
Yy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8v
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczoga2VpdGgucmF5QGdtYWlsLmNvbSAoS2Vp
dGggUmF5KQotLy8KLS8vIEdvb2dsZSBUZXN0IGZpbGVwYXRoIHV0aWxpdGllcwotLy8KLS8vIFRo
aXMgZmlsZSB0ZXN0cyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5IGJ5Ci0v
LyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNl
LgotLy8KLS8vIFRoaXMgZmlsZSBpcyAjaW5jbHVkZWQgZnJvbSBndGVzdF91bml0dGVzdC5jYywg
dG8gYXZvaWQgY2hhbmdpbmcKLS8vIGJ1aWxkIG9yIG1ha2UtZmlsZXMgZm9yIHNvbWUgZXhpc3Rp
bmcgR29vZ2xlIFRlc3QgY2xpZW50cy4gRG8gbm90Ci0vLyAjaW5jbHVkZSB0aGlzIGZpbGUgYW55
d2hlcmUgZWxzZSEKLQotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmg+
Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFu
c2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24u
ICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRl
ZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwot
Ly8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVy
bmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05f
IDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1Q
TEVNRU5UQVRJT05fCi0KLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotI2luY2x1ZGUgPHdp
bmRvd3MuaD4gIC8vIE5PTElOVAotI2VsaWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1ZGUgPGRp
cmVjdC5oPiAgLy8gTk9MSU5UCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0K
LW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci1uYW1lc3BhY2Ugewot
Ci0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLS8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBN
b3ZlIHRoZXNlIHRvIHRoZSBQT1NJWCBhZGFwdGVyIHNlY3Rpb24gaW4KLS8vIGd0ZXN0LXBvcnQu
aC4KLQotLy8gV2luZG93cyBDRSBkb2Vzbid0IGhhdmUgdGhlIHJlbW92ZSBDIGZ1bmN0aW9uLgot
aW50IHJlbW92ZShjb25zdCBjaGFyKiBwYXRoKSB7Ci0gIExQQ1dTVFIgd3BhdGggPSBTdHJpbmc6
OkFuc2lUb1V0ZjE2KHBhdGgpOwotICBpbnQgcmV0ID0gRGVsZXRlRmlsZSh3cGF0aCkgPyAwIDog
LTE7Ci0gIGRlbGV0ZSBbXSB3cGF0aDsKLSAgcmV0dXJuIHJldDsKLX0KLS8vIFdpbmRvd3MgQ0Ug
ZG9lc24ndCBoYXZlIHRoZSBfcm1kaXIgQyBmdW5jdGlvbi4KLWludCBfcm1kaXIoY29uc3QgY2hh
ciogcGF0aCkgewotICBGaWxlUGF0aCBmaWxlcGF0aChwYXRoKTsKLSAgTFBDV1NUUiB3cGF0aCA9
IFN0cmluZzo6QW5zaVRvVXRmMTYoCi0gICAgICBmaWxlcGF0aC5SZW1vdmVUcmFpbGluZ1BhdGhT
ZXBhcmF0b3IoKS5jX3N0cigpKTsKLSAgaW50IHJldCA9IFJlbW92ZURpcmVjdG9yeSh3cGF0aCkg
PyAwIDogLTE7Ci0gIGRlbGV0ZSBbXSB3cGF0aDsKLSAgcmV0dXJuIHJldDsKLX0KLQotI2Vsc2UK
LQotVEVTVChHZXRDdXJyZW50RGlyVGVzdCwgUmV0dXJuc0N1cnJlbnREaXIpIHsKLSAgY29uc3Qg
RmlsZVBhdGggb3JpZ2luYWxfZGlyID0gRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKTsKLSAgRVhQ
RUNUX0ZBTFNFKG9yaWdpbmFsX2Rpci5Jc0VtcHR5KCkpOwotCi0gIHBvc2l4OjpDaERpcihHVEVT
VF9QQVRIX1NFUF8pOwotICBjb25zdCBGaWxlUGF0aCBjd2QgPSBGaWxlUGF0aDo6R2V0Q3VycmVu
dERpcigpOwotICBwb3NpeDo6Q2hEaXIob3JpZ2luYWxfZGlyLmNfc3RyKCkpOwotCi0jaWYgR1RF
U1RfT1NfV0lORE9XUwotICAvLyBTa2lwcyB0aGUgIjoiLgotICBjb25zdCBjaGFyKiBjb25zdCBj
d2Rfd2l0aG91dF9kcml2ZSA9IHN0cmNocihjd2QuY19zdHIoKSwgJzonKTsKLSAgQVNTRVJUX1RS
VUUoY3dkX3dpdGhvdXRfZHJpdmUgIT0gTlVMTCk7Ci0gIEVYUEVDVF9TVFJFUShHVEVTVF9QQVRI
X1NFUF8sIGN3ZF93aXRob3V0X2RyaXZlICsgMSk7Ci0jZWxzZQotICBFWFBFQ1RfU1RSRVEoR1RF
U1RfUEFUSF9TRVBfLCBjd2QuY19zdHIoKSk7Ci0jZW5kaWYKLX0KLQotI2VuZGlmICAvLyBHVEVT
VF9PU19XSU5ET1dTX01PQklMRQotCi1URVNUKElzRW1wdHlUZXN0LCBSZXR1cm5zVHJ1ZUZvckVt
cHR5UGF0aCkgewotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiIikuSXNFbXB0eSgpKTsKLSAgRVhQ
RUNUX1RSVUUoRmlsZVBhdGgoTlVMTCkuSXNFbXB0eSgpKTsKLX0KLQotVEVTVChJc0VtcHR5VGVz
dCwgUmV0dXJuc0ZhbHNlRm9yTm9uRW1wdHlQYXRoKSB7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0
aCgiYSIpLklzRW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiLiIpLklzRW1wdHko
KSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYS9iIikuSXNFbXB0eSgpKTsKLSAgRVhQRUNU
X0ZBTFNFKEZpbGVQYXRoKCJhXFxiXFwiKS5Jc0VtcHR5KCkpOwotfQotCi0vLyBSZW1vdmVEaXJl
Y3RvcnlOYW1lICIiIC0+ICIiCi1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBXaGVuRW1w
dHlOYW1lKSB7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgRmlsZVBhdGgoIiIpLlJlbW92ZURpcmVjdG9y
eU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiYWZpbGUiIC0+
ICJhZmlsZSIKLVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIEJ1dE5vRGlyZWN0b3J5KSB7
Ci0gIEVYUEVDVF9TVFJFUSgiYWZpbGUiLAotICAgICAgRmlsZVBhdGgoImFmaWxlIikuUmVtb3Zl
RGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lICIv
YWZpbGUiIC0+ICJhZmlsZSIKLVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFJvb3RGaWxl
U2hvdWxkR2l2ZUZpbGVOYW1lKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWZpbGUiLAotICAgICAgRmls
ZVBhdGgoR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0
cigpKTsKLX0KLQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiYWRpci8iIC0+ICIiCi1URVNUKFJl
bW92ZURpcmVjdG9yeU5hbWVUZXN0LCBXaGVyZVRoZXJlSXNOb0ZpbGVOYW1lKSB7Ci0gIEVYUEVD
VF9TVFJFUSgiIiwKLSAgICAgIEZpbGVQYXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8pLlJlbW92
ZURpcmVjdG9yeU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAi
YWRpci9hZmlsZSIgLT4gImFmaWxlIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgU2hv
dWxkR2l2ZUZpbGVOYW1lKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWZpbGUiLAotICAgICAgRmlsZVBh
dGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCku
Y19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5hbWUgImFkaXIvc3ViZGlyL2FmaWxl
IiAtPiAiYWZpbGUiCi1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRBbHNvR2l2
ZUZpbGVOYW1lKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWZpbGUiLAotICAgICAgRmlsZVBhdGgoImFk
aXIiIEdURVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikKLSAg
ICAgIC5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNf
QUxUX1BBVEhfU0VQXwotCi0vLyBUZXN0cyB0aGF0IFJlbW92ZURpcmVjdG9yeU5hbWUoKSB3b3Jr
cyB3aXRoIHRoZSBhbHRlcm5hdGUgc2VwYXJhdG9yCi0vLyBvbiBXaW5kb3dzLgotCi0vLyBSZW1v
dmVEaXJlY3RvcnlOYW1lKCIvYWZpbGUiKSAtPiAiYWZpbGUiCi1URVNUKFJlbW92ZURpcmVjdG9y
eU5hbWVUZXN0LCBSb290RmlsZVNob3VsZEdpdmVGaWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRv
cikgewotICBFWFBFQ1RfU1RSRVEoImFmaWxlIiwKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCIv
YWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZURp
cmVjdG9yeU5hbWUoImFkaXIvIikgLT4gIiIKLVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3Qs
IFdoZXJlVGhlcmVJc05vRmlsZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNU
X1NUUkVRKCIiLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvIikuUmVtb3ZlRGlyZWN0
b3J5TmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCJhZGlyL2Fm
aWxlIikgLT4gImFmaWxlIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgU2hvdWxkR2l2
ZUZpbGVOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWZpbGUi
LAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlO
YW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5hbWUoImFkaXIvc3ViZGly
L2FmaWxlIikgLT4gImFmaWxlIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgU2hvdWxk
QWxzb0dpdmVGaWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEo
ImFmaWxlIiwKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL3N1YmRpci9hZmlsZSIpLlJl
bW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0cigpKTsKLX0KLQotI2VuZGlmCi0KLS8vIFJlbW92ZUZp
bGVOYW1lICIiIC0+ICIuLyIKLVRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBFbXB0eU5hbWUpIHsK
LSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotICAvLyBPbiBXaW5kb3dzIENFLCB3ZSB1c2Ug
dGhlIHJvb3QgYXMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgotICBFWFBFQ1RfU1RSRVEoR1RFU1Rf
UEFUSF9TRVBfLAotICAgICAgRmlsZVBhdGgoIiIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7
Ci0jZWxzZQotICBFWFBFQ1RfU1RSRVEoIi4iIEdURVNUX1BBVEhfU0VQXywKLSAgICAgIEZpbGVQ
YXRoKCIiKS5SZW1vdmVGaWxlTmFtZSgpLmNfc3RyKCkpOwotI2VuZGlmCi19Ci0KLS8vIFJlbW92
ZUZpbGVOYW1lICJhZGlyLyIgLT4gImFkaXIvIgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEJ1
dE5vRmlsZSkgewotICBFWFBFQ1RfU1RSRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXywKLSAgICAg
IEZpbGVQYXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8pLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIo
KSk7Ci19Ci0KLS8vIFJlbW92ZUZpbGVOYW1lICJhZGlyL2FmaWxlIiAtPiAiYWRpci8iCi1URVNU
KFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNEaXJOYW1lKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWRp
ciIgR1RFU1RfUEFUSF9TRVBfLAotICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQ
XyAiYWZpbGUiKQotICAgICAgLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJl
bW92ZUZpbGVOYW1lICJhZGlyL3N1YmRpci9hZmlsZSIgLT4gImFkaXIvc3ViZGlyLyIKLVRFU1Qo
UmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc0RpckFuZFN1YkRpck5hbWUpIHsKLSAgRVhQRUNUX1NU
UkVRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9TRVBfLAotICAg
ICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NF
UF8gImFmaWxlIikKLSAgICAgIC5SZW1vdmVGaWxlTmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBS
ZW1vdmVGaWxlTmFtZSAiL2FmaWxlIiAtPiAiLyIKLVRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBH
aXZlc1Jvb3REaXIpIHsKLSAgRVhQRUNUX1NUUkVRKEdURVNUX1BBVEhfU0VQXywKLSAgICAgIEZp
bGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLmNfc3RyKCkp
OwotfQotCi0jaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KLQotLy8gVGVzdHMgdGhhdCBSZW1v
dmVGaWxlTmFtZSgpIHdvcmtzIHdpdGggdGhlIGFsdGVybmF0ZSBzZXBhcmF0b3Igb24KLS8vIFdp
bmRvd3MuCi0KLS8vIFJlbW92ZUZpbGVOYW1lKCJhZGlyLyIpIC0+ICJhZGlyLyIKLVRFU1QoUmVt
b3ZlRmlsZU5hbWVUZXN0LCBCdXROb0ZpbGVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQ
RUNUX1NUUkVRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICAgICAgICAgICBGaWxlUGF0
aCgiYWRpci8iKS5SZW1vdmVGaWxlTmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVGaWxl
TmFtZSgiYWRpci9hZmlsZSIpIC0+ICJhZGlyLyIKLVRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBH
aXZlc0Rpck5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZGly
IiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci9hZmlsZSIp
LlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZUZpbGVOYW1lKCJhZGly
L3N1YmRpci9hZmlsZSIpIC0+ICJhZGlyL3N1YmRpci8iCi1URVNUKFJlbW92ZUZpbGVOYW1lVGVz
dCwgR2l2ZXNEaXJBbmRTdWJEaXJOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7Ci0gIEVYUEVD
VF9TVFJFUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXywK
LSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL3N1YmRpci9hZmlsZSIpLlJlbW92ZUZpbGVO
YW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZUZpbGVOYW1lKCIvYWZpbGUiKSAtPiAiXCIK
LVRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc1Jvb3REaXJGb3JBbHRlcm5hdGVTZXBhcmF0
b3IpIHsKLSAgRVhQRUNUX1NUUkVRKEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZp
bGVQYXRoKCIvYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLmNfc3RyKCkpOwotfQotCi0jZW5kaWYK
LQotVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZVdoZW5OdW1iZXJJc1plcm8pIHsKLSAg
RmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiks
IEZpbGVQYXRoKCJiYXIiKSwKLSAgICAgIDAsICJ4bWwiKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28i
IEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChN
YWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZUZpbGVOYW1lTnVtYmVyR3RaZXJvKSB7Ci0gIEZpbGVQ
YXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoImZvbyIpLCBGaWxl
UGF0aCgiYmFyIiksCi0gICAgICAxMiwgInhtbCIpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RF
U1RfUEFUSF9TRVBfICJiYXJfMTIueG1sIiwgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNUKE1h
a2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlRmlsZU5hbWVXaXRoU2xhc2hOdW1iZXJJc1plcm8pIHsK
LSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8pLAotICAgICAgRmlsZVBhdGgoImJhciIpLCAwLCAieG1sIik7Ci0g
IEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuY19z
dHIoKSk7Ci19Ci0KLVRFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVGaWxlTmFtZVdpdGhT
bGFzaE51bWJlckd0WmVybykgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZp
bGVOYW1lKEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyksCi0gICAgICBGaWxlUGF0aCgi
YmFyIiksIDEyLCAieG1sIik7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8g
ImJhcl8xMi54bWwiLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1QoTWFrZUZpbGVOYW1lVGVz
dCwgR2VuZXJhdGVXaGVuTnVtYmVySXNaZXJvQW5kRGlySXNFbXB0eSkgewotICBGaWxlUGF0aCBh
Y3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCIiKSwgRmlsZVBhdGgoImJh
ciIpLAotICAgICAgMCwgInhtbCIpOwotICBFWFBFQ1RfU1RSRVEoImJhci54bWwiLCBhY3R1YWwu
Y19zdHIoKSk7Ci19Ci0KLVRFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVy
SXNOb3RaZXJvQW5kRGlySXNFbXB0eSkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6
TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCIiKSwgRmlsZVBhdGgoImJhciIpLAotICAgICAgMTQsICJ4
bWwiKTsKLSAgRVhQRUNUX1NUUkVRKCJiYXJfMTQueG1sIiwgYWN0dWFsLmNfc3RyKCkpOwotfQot
Ci1URVNUKENvbmNhdFBhdGhzVGVzdCwgV29ya3NXaGVuRGlyRG9lc05vdEVuZFdpdGhQYXRoU2Vw
KSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgi
Zm9vIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0
aCgiYmFyLnhtbCIpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFy
LnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChDb25jYXRQYXRoc1Rlc3QsIFdvcmtz
V2hlblBhdGgxRW5kc1dpdGhQYXRoU2VwKSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRo
OjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJhci54bWwiKSk7Ci0g
IEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuY19z
dHIoKSk7Ci19Ci0KLVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMUJlaW5nRW1wdHkpIHsKLSAg
RmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCIiKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJiYXIueG1s
IikpOwotICBFWFBFQ1RfU1RSRVEoImJhci54bWwiLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRF
U1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMkJlaW5nRW1wdHkpIHsKLSAgRmlsZVBhdGggYWN0dWFs
ID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCIiKSk7Ci0gIEVYUEVDVF9TVFJF
USgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChDb25j
YXRQYXRoc1Rlc3QsIEJvdGhQYXRoQmVpbmdFbXB0eSkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBG
aWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoIiIpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoIiIpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCBh
Y3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMUNvbnRhaW5z
UGF0aFNlcCkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmls
ZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb29iYXIueG1sIikpOwotICBFWFBFQ1Rf
U1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXyAiZm9vYmFy
LnhtbCIsCi0gICAgICAgICAgICAgICBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1QoQ29uY2F0
UGF0aHNUZXN0LCBQYXRoMkNvbnRhaW5zUGF0aFNlcCkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBG
aWxlUGF0aDo6Q29uY2F0UGF0aHMoCi0gICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8pLAotICAgICAgRmlsZVBhdGgoImJhciIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIikpOwot
ICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQ
XyAiYmFyLnhtbCIsCi0gICAgICAgICAgICAgICBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1Qo
Q29uY2F0UGF0aHNUZXN0LCBQYXRoMkVuZHNXaXRoUGF0aFNlcCkgewotICBGaWxlUGF0aCBhY3R1
YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJhciIgR1RFU1RfUEFUSF9T
RVBfKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1Rf
UEFUSF9TRVBfLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZVRyYWlsaW5nUGF0aFNl
cGFyYXRvciAiIiAtPiAiIgotVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBF
bXB0eVN0cmluZykgewotICBFWFBFQ1RfU1RSRVEoIiIsCi0gICAgICBGaWxlUGF0aCgiIikuUmVt
b3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZVRyYWls
aW5nUGF0aFNlcGFyYXRvciAiZm9vIiAtPiAiZm9vIgotVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhT
ZXBhcmF0b3JUZXN0LCBGaWxlTm9TbGFzaFN0cmluZykgewotICBFWFBFQ1RfU1RSRVEoImZvbyIs
Ci0gICAgICBGaWxlUGF0aCgiZm9vIikuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuY19z
dHIoKSk7Ci19Ci0KLS8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiZm9vLyIgLT4gImZv
byIKLVRFU1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgU2hvdWxkUmVtb3ZlVHJh
aWxpbmdTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKAotICAgICAgImZvbyIsCi0gICAgICBG
aWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRv
cigpLmNfc3RyKCkpOwotI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCi0gIEVYUEVDVF9TVFJF
USgiZm9vIiwKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28vIikuUmVtb3ZlVHJhaWxpbmdQ
YXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7Ci0jZW5kaWYKLX0KLQotLy8gUmVtb3ZlVHJhaWxpbmdQ
YXRoU2VwYXJhdG9yICJmb28vYmFyLyIgLT4gImZvby9iYXIvIgotVEVTVChSZW1vdmVUcmFpbGlu
Z1BhdGhTZXBhcmF0b3JUZXN0LCBTaG91bGRSZW1vdmVMYXN0U2VwYXJhdG9yKSB7Ci0gIEVYUEVD
VF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAgICAgICAgICAgICBGaWxl
UGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBfKQotICAgICAg
ICAgICAgICAgLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLmNfc3RyKCkpOwotfQotCi0v
LyBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IgImZvby9iYXIiIC0+ICJmb28vYmFyIgotVEVT
VChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBTaG91bGRSZXR1cm5Vbm1vZGlmaWVk
KSB7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAgICAg
ICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIpCi0gICAgICAgICAg
ICAgICAuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7Ci19Ci0KLVRFU1Qo
RGlyZWN0b3J5VGVzdCwgUm9vdERpcmVjdG9yeUV4aXN0cykgewotI2lmIEdURVNUX09TX1dJTkRP
V1MgIC8vIFdlIGFyZSBvbiBXaW5kb3dzLgotICBjaGFyIGN1cnJlbnRfZHJpdmVbX01BWF9QQVRI
XTsgIC8vIE5PTElOVAotICBjdXJyZW50X2RyaXZlWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oX2dl
dGRyaXZlKCkgKyAnQScgLSAxKTsKLSAgY3VycmVudF9kcml2ZVsxXSA9ICc6JzsKLSAgY3VycmVu
dF9kcml2ZVsyXSA9ICdcXCc7Ci0gIGN1cnJlbnRfZHJpdmVbM10gPSAnXDAnOwotICBFWFBFQ1Rf
VFJVRShGaWxlUGF0aChjdXJyZW50X2RyaXZlKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0jZWxzZQot
ICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiLyIpLkRpcmVjdG9yeUV4aXN0cygpKTsKLSNlbmRpZiAg
Ly8gR1RFU1RfT1NfV0lORE9XUwotfQotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotVEVTVChEaXJl
Y3RvcnlUZXN0LCBSb290T2ZXcm9uZ0RyaXZlRG9lc05vdEV4aXN0cykgewotICBjb25zdCBpbnQg
c2F2ZWRfZHJpdmVfID0gX2dldGRyaXZlKCk7Ci0gIC8vIEZpbmQgYSBkcml2ZSB0aGF0IGRvZXNu
J3QgZXhpc3QuIFN0YXJ0IHdpdGggJ1onIHRvIGF2b2lkIGNvbW1vbiBvbmVzLgotICBmb3IgKGNo
YXIgZHJpdmUgPSAnWic7IGRyaXZlID49ICdBJzsgZHJpdmUtLSkKLSAgICBpZiAoX2NoZHJpdmUo
ZHJpdmUgLSAnQScgKyAxKSA9PSAtMSkgewotICAgICAgY2hhciBub25fZHJpdmVbX01BWF9QQVRI
XTsgIC8vIE5PTElOVAotICAgICAgbm9uX2RyaXZlWzBdID0gZHJpdmU7Ci0gICAgICBub25fZHJp
dmVbMV0gPSAnOic7Ci0gICAgICBub25fZHJpdmVbMl0gPSAnXFwnOwotICAgICAgbm9uX2RyaXZl
WzNdID0gJ1wwJzsKLSAgICAgIEVYUEVDVF9GQUxTRShGaWxlUGF0aChub25fZHJpdmUpLkRpcmVj
dG9yeUV4aXN0cygpKTsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgX2NoZHJpdmUoc2F2ZWRfZHJp
dmVfKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0jaWYgIUdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCi0vLyBXaW5kb3dzIENFIF9kb2VzXyBjb25zaWRlciBhbiBlbXB0eSBkaXJl
Y3RvcnkgdG8gZXhpc3QuCi1URVNUKERpcmVjdG9yeVRlc3QsIEVtcHR5UGF0aERpcmVjdG9yeURv
ZXNOb3RFeGlzdCkgewotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIiIpLkRpcmVjdG9yeUV4aXN0
cygpKTsKLX0KLSNlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLVRFU1QoRGly
ZWN0b3J5VGVzdCwgQ3VycmVudERpcmVjdG9yeUV4aXN0cykgewotI2lmIEdURVNUX09TX1dJTkRP
V1MgIC8vIFdlIGFyZSBvbiBXaW5kb3dzLgotI2lmbmRlZiBfV0lOMzJfQ0UgIC8vIFdpbmRvd3Mg
Q0UgZG9lc24ndCBoYXZlIGEgY3VycmVudCBkaXJlY3RvcnkuCi0gIEVYUEVDVF9UUlVFKEZpbGVQ
YXRoKCIuIikuRGlyZWN0b3J5RXhpc3RzKCkpOwotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiLlxc
IikuRGlyZWN0b3J5RXhpc3RzKCkpOwotI2VuZGlmICAvLyBfV0lOMzJfQ0UKLSNlbHNlCi0gIEVY
UEVDVF9UUlVFKEZpbGVQYXRoKCIuIikuRGlyZWN0b3J5RXhpc3RzKCkpOwotICBFWFBFQ1RfVFJV
RShGaWxlUGF0aCgiLi8iKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0jZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKLX0KLQotVEVTVChOb3JtYWxpemVUZXN0LCBOdWxsU3RyaW5nc0VxdWFsRW1wdHlE
aXJlY3RvcnkpIHsKLSAgRVhQRUNUX1NUUkVRKCIiLCBGaWxlUGF0aChOVUxMKS5jX3N0cigpKTsK
LSAgRVhQRUNUX1NUUkVRKCIiLCBGaWxlUGF0aChTdHJpbmcoTlVMTCkpLmNfc3RyKCkpOwotfQot
Ci0vLyAiZm9vL2JhciIgPT0gZm9vLy9iYXIiID09ICJmb28vLy9iYXIiCi1URVNUKE5vcm1hbGl6
ZVRlc3QsIE11bHRpcGxlQ29uc2VjdXRpdmVTZXBhcGFyYXRvcnNJbk1pZHN0cmluZykgewotICBF
WFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgICAgICAgICAgICAg
RmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5jX3N0cigpKTsKLSAgRVhQRUNU
X1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICAgICAgICAgICAgIEZpbGVQ
YXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gImJhciIpLmNfc3RyKCkp
OwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgICAgICAg
ICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXwotICAg
ICAgICAgICAgICAgICAgICAgICAgR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5jX3N0cigpKTsKLX0K
LQotLy8gIi9iYXIiID09IC8vYmFyIiA9PSAiLy8vYmFyIgotVEVTVChOb3JtYWxpemVUZXN0LCBN
dWx0aXBsZUNvbnNlY3V0aXZlU2VwYXBhcmF0b3JzQXRTdHJpbmdTdGFydCkgewotICBFWFBFQ1Rf
U1RSRVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQ
XyAiYmFyIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUShHVEVTVF9QQVRIX1NFUF8gImJhciIs
Ci0gICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuY19z
dHIoKSk7Ci0gIEVYUEVDVF9TVFJFUShHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAgRmlsZVBh
dGgoR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gImJhciIp
LmNfc3RyKCkpOwotfQotCi0vLyAiZm9vLyIgPT0gZm9vLy8iID09ICJmb28vLy8iCi1URVNUKE5v
cm1hbGl6ZVRlc3QsIE11bHRpcGxlQ29uc2VjdXRpdmVTZXBhcGFyYXRvcnNBdFN0cmluZ0VuZCkg
ewotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAotICAgIEZpbGVQYXRoKCJm
b28iIEdURVNUX1BBVEhfU0VQXykuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVT
VF9QQVRIX1NFUF8sCi0gICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BB
VEhfU0VQXykuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8s
Ci0gICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyBHVEVT
VF9QQVRIX1NFUF8pLmNfc3RyKCkpOwotfQotCi0jaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8K
LQotLy8gVGVzdHMgdGhhdCBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBhcmUg
bm9ybWFsaXplZAotLy8gcmVnYXJkbGVzcyBvZiB0aGVpciBjb21iaW5hdGlvbiAoZS5nLiAiZm9v
XCIgPT0iZm9vL1wiID09Ci0vLyAiZm9vXFwvIikuCi1URVNUKE5vcm1hbGl6ZVRlc3QsIE1peEFs
dGVybmF0ZVNlcGFyYXRvckF0U3RyaW5nRW5kKSB7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVT
VF9QQVRIX1NFUF8sCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9vLyIpLmNfc3RyKCkpOwot
ICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAotICAgICAgICAgICAgICAgRmls
ZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICIvIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJF
USgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9vLy8i
IEdURVNUX1BBVEhfU0VQXykuY19zdHIoKSk7Ci19Ci0KLSNlbmRpZgotCi1URVNUKEFzc2lnbm1l
bnRPcGVyYXRvclRlc3QsIERlZmF1bHRBc3NpZ25lZFRvTm9uRGVmYXVsdCkgewotICBGaWxlUGF0
aCBkZWZhdWx0X3BhdGg7Ci0gIEZpbGVQYXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgiKTsKLSAg
bm9uX2RlZmF1bHRfcGF0aCA9IGRlZmF1bHRfcGF0aDsKLSAgRVhQRUNUX1NUUkVRKCIiLCBub25f
ZGVmYXVsdF9wYXRoLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIGRlZmF1bHRfcGF0aC5j
X3N0cigpKTsgIC8vIFJIUyB2YXIgaXMgdW5jaGFuZ2VkLgotfQotCi1URVNUKEFzc2lnbm1lbnRP
cGVyYXRvclRlc3QsIE5vbkRlZmF1bHRBc3NpZ25lZFRvRGVmYXVsdCkgewotICBGaWxlUGF0aCBu
b25fZGVmYXVsdF9wYXRoKCJwYXRoIik7Ci0gIEZpbGVQYXRoIGRlZmF1bHRfcGF0aDsKLSAgZGVm
YXVsdF9wYXRoID0gbm9uX2RlZmF1bHRfcGF0aDsKLSAgRVhQRUNUX1NUUkVRKCJwYXRoIiwgZGVm
YXVsdF9wYXRoLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoInBhdGgiLCBub25fZGVmYXVsdF9w
YXRoLmNfc3RyKCkpOyAgLy8gUkhTIHZhciBpcyB1bmNoYW5nZWQuCi19Ci0KLVRFU1QoQXNzaWdu
bWVudE9wZXJhdG9yVGVzdCwgQ29uc3RBc3NpZ25lZFRvTm9uQ29uc3QpIHsKLSAgY29uc3QgRmls
ZVBhdGggY29uc3RfZGVmYXVsdF9wYXRoKCJjb25zdF9wYXRoIik7Ci0gIEZpbGVQYXRoIG5vbl9k
ZWZhdWx0X3BhdGgoInBhdGgiKTsKLSAgbm9uX2RlZmF1bHRfcGF0aCA9IGNvbnN0X2RlZmF1bHRf
cGF0aDsKLSAgRVhQRUNUX1NUUkVRKCJjb25zdF9wYXRoIiwgbm9uX2RlZmF1bHRfcGF0aC5jX3N0
cigpKTsKLX0KLQotY2xhc3MgRGlyZWN0b3J5Q3JlYXRpb25UZXN0IDogcHVibGljIFRlc3Qgewot
IHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIHRlc3RkYXRhX3BhdGhf
LlNldChGaWxlUGF0aChTdHJpbmc6OkZvcm1hdCgiJXMlcyVzIiwKLSAgICAgICAgVGVtcERpcigp
LmNfc3RyKCksIEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLmNfc3RyKCksCi0gICAgICAgICJf
ZGlyZWN0b3J5X2NyZWF0aW9uIiBHVEVTVF9QQVRIX1NFUF8gInRlc3QiIEdURVNUX1BBVEhfU0VQ
XykpKTsKLSAgICB0ZXN0ZGF0YV9maWxlXy5TZXQodGVzdGRhdGFfcGF0aF8uUmVtb3ZlVHJhaWxp
bmdQYXRoU2VwYXJhdG9yKCkpOwotCi0gICAgdW5pcXVlX2ZpbGUwXy5TZXQoRmlsZVBhdGg6Ok1h
a2VGaWxlTmFtZSh0ZXN0ZGF0YV9wYXRoXywgRmlsZVBhdGgoInVuaXF1ZSIpLAotICAgICAgICAw
LCAidHh0IikpOwotICAgIHVuaXF1ZV9maWxlMV8uU2V0KEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUo
dGVzdGRhdGFfcGF0aF8sIEZpbGVQYXRoKCJ1bmlxdWUiKSwKLSAgICAgICAgMSwgInR4dCIpKTsK
LQotICAgIHJlbW92ZSh0ZXN0ZGF0YV9maWxlXy5jX3N0cigpKTsKLSAgICByZW1vdmUodW5pcXVl
X2ZpbGUwXy5jX3N0cigpKTsKLSAgICByZW1vdmUodW5pcXVlX2ZpbGUxXy5jX3N0cigpKTsKLSAg
ICBwb3NpeDo6Um1EaXIodGVzdGRhdGFfcGF0aF8uY19zdHIoKSk7Ci0gIH0KLQotICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7Ci0gICAgcmVtb3ZlKHRlc3RkYXRhX2ZpbGVfLmNfc3RyKCkpOwot
ICAgIHJlbW92ZSh1bmlxdWVfZmlsZTBfLmNfc3RyKCkpOwotICAgIHJlbW92ZSh1bmlxdWVfZmls
ZTFfLmNfc3RyKCkpOwotICAgIHBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsK
LSAgfQotCi0gIFN0cmluZyBUZW1wRGlyKCkgY29uc3QgewotI2lmIEdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFCi0gICAgcmV0dXJuIFN0cmluZygiXFx0ZW1wXFwiKTsKLSNlbGlmIEdURVNUX09TX1dJ
TkRPV1MKLSAgICBjb25zdCBjaGFyKiB0ZW1wX2RpciA9IHBvc2l4OjpHZXRFbnYoIlRFTVAiKTsK
LSAgICBpZiAodGVtcF9kaXIgPT0gTlVMTCB8fCB0ZW1wX2RpclswXSA9PSAnXDAnKQotICAgICAg
cmV0dXJuIFN0cmluZygiXFx0ZW1wXFwiKTsKLSAgICBlbHNlIGlmIChTdHJpbmcodGVtcF9kaXIp
LkVuZHNXaXRoKCJcXCIpKQotICAgICAgcmV0dXJuIFN0cmluZyh0ZW1wX2Rpcik7Ci0gICAgZWxz
ZQotICAgICAgcmV0dXJuIFN0cmluZzo6Rm9ybWF0KCIlc1xcIiwgdGVtcF9kaXIpOwotI2Vsc2UK
LSAgICByZXR1cm4gU3RyaW5nKCIvdG1wLyIpOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dT
X01PQklMRQotICB9Ci0KLSAgdm9pZCBDcmVhdGVUZXh0RmlsZShjb25zdCBjaGFyKiBmaWxlbmFt
ZSkgewotICAgIEZJTEUqIGYgPSBwb3NpeDo6Rk9wZW4oZmlsZW5hbWUsICJ3Iik7Ci0gICAgZnBy
aW50ZihmLCAidGV4dFxuIik7Ci0gICAgZmNsb3NlKGYpOwotICB9Ci0KLSAgLy8gU3RyaW5ncyBy
ZXByZXNlbnRpbmcgYSBkaXJlY3RvcnkgYW5kIGEgZmlsZSwgd2l0aCBpZGVudGljYWwgcGF0aHMK
LSAgLy8gZXhjZXB0IGZvciB0aGUgdHJhaWxpbmcgc2VwYXJhdG9yIGNoYXJhY3RlciB0aGF0IGRp
c3RpbnF1aXNoZXMKLSAgLy8gYSBkaXJlY3RvcnkgbmFtZWQgJ3Rlc3QnIGZyb20gYSBmaWxlIG5h
bWVkICd0ZXN0Jy4gRXhhbXBsZSBuYW1lczoKLSAgRmlsZVBhdGggdGVzdGRhdGFfcGF0aF87ICAv
LyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRpb24vdGVzdC8iCi0gIEZpbGVQYXRoIHRlc3RkYXRhX2Zp
bGVfOyAgLy8gIi90bXAvZGlyZWN0b3J5X2NyZWF0aW9uL3Rlc3QiCi0gIEZpbGVQYXRoIHVuaXF1
ZV9maWxlMF87ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRpb24vdGVzdC91bmlxdWUudHh0Igot
ICBGaWxlUGF0aCB1bmlxdWVfZmlsZTFfOyAgLy8gIi90bXAvZGlyZWN0b3J5X2NyZWF0aW9uL3Rl
c3QvdW5pcXVlXzEudHh0IgotfTsKLQotVEVTVF9GKERpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3Jl
YXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSkgewotICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfcGF0
aF8uRGlyZWN0b3J5RXhpc3RzKCkpIDw8IHRlc3RkYXRhX3BhdGhfLmNfc3RyKCk7Ci0gIEVYUEVD
VF9UUlVFKHRlc3RkYXRhX3BhdGhfLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKSk7Ci0g
IEVYUEVDVF9UUlVFKHRlc3RkYXRhX3BhdGhfLkRpcmVjdG9yeUV4aXN0cygpKTsKLX0KLQotVEVT
VF9GKERpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlRGlyZWN0b3JpZXNGb3JBbHJlYWR5RXhp
c3RpbmdQYXRoKSB7Ci0gIEVYUEVDVF9GQUxTRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlz
dHMoKSkgPDwgdGVzdGRhdGFfcGF0aF8uY19zdHIoKTsKLSAgRVhQRUNUX1RSVUUodGVzdGRhdGFf
cGF0aF8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKTsKLSAgLy8gQ2FsbCAnY3JlYXRl
JyBhZ2Fpbi4uLiBzaG91bGQgc3RpbGwgc3VjY2VlZC4KLSAgRVhQRUNUX1RSVUUodGVzdGRhdGFf
cGF0aF8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKTsKLX0KLQotVEVTVF9GKERpcmVj
dG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlRGlyZWN0b3JpZXNBbmRVbmlxdWVGaWxlbmFtZSkgewot
ICBGaWxlUGF0aCBmaWxlX3BhdGgoRmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5hbWUodGVz
dGRhdGFfcGF0aF8sCi0gICAgICBGaWxlUGF0aCgidW5pcXVlIiksICJ0eHQiKSk7Ci0gIEVYUEVD
VF9TVFJFUSh1bmlxdWVfZmlsZTBfLmNfc3RyKCksIGZpbGVfcGF0aC5jX3N0cigpKTsKLSAgRVhQ
RUNUX0ZBTFNFKGZpbGVfcGF0aC5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAvLyBmaWxlIG5v
dCB0aGVyZQotCi0gIHRlc3RkYXRhX3BhdGhfLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHko
KTsKLSAgRVhQRUNUX0ZBTFNFKGZpbGVfcGF0aC5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAv
LyBmaWxlIHN0aWxsIG5vdCB0aGVyZQotICBDcmVhdGVUZXh0RmlsZShmaWxlX3BhdGguY19zdHIo
KSk7Ci0gIEVYUEVDVF9UUlVFKGZpbGVfcGF0aC5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7Ci0K
LSAgRmlsZVBhdGggZmlsZV9wYXRoMihGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFtZSh0
ZXN0ZGF0YV9wYXRoXywKLSAgICAgIEZpbGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIpKTsKLSAgRVhQ
RUNUX1NUUkVRKHVuaXF1ZV9maWxlMV8uY19zdHIoKSwgZmlsZV9wYXRoMi5jX3N0cigpKTsKLSAg
RVhQRUNUX0ZBTFNFKGZpbGVfcGF0aDIuRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8gZmls
ZSBub3QgdGhlcmUKLSAgQ3JlYXRlVGV4dEZpbGUoZmlsZV9wYXRoMi5jX3N0cigpKTsKLSAgRVhQ
RUNUX1RSVUUoZmlsZV9wYXRoMi5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7Ci19Ci0KLVRFU1Rf
RihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURpcmVjdG9yaWVzRmFpbCkgewotICAvLyBm
b3JjZSBhIGZhaWx1cmUgYnkgcHV0dGluZyBhIGZpbGUgd2hlcmUgd2Ugd2lsbCB0cnkgdG8gY3Jl
YXRlIGEgZGlyZWN0b3J5LgotICBDcmVhdGVUZXh0RmlsZSh0ZXN0ZGF0YV9maWxlXy5jX3N0cigp
KTsKLSAgRVhQRUNUX1RSVUUodGVzdGRhdGFfZmlsZV8uRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkp
OwotICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfZmlsZV8uRGlyZWN0b3J5RXhpc3RzKCkpOwotICBF
WFBFQ1RfRkFMU0UodGVzdGRhdGFfZmlsZV8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgp
KTsKLX0KLQotVEVTVChOb0RpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlTm9EaXJlY3Rvcmll
c0ZvckRlZmF1bHRYbWxGaWxlKSB7Ci0gIGNvbnN0IEZpbGVQYXRoIHRlc3RfZGV0YWlsX3htbCgi
dGVzdF9kZXRhaWwueG1sIik7Ci0gIEVYUEVDVF9GQUxTRSh0ZXN0X2RldGFpbF94bWwuQ3JlYXRl
RGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKTsKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIERlZmF1
bHRDb25zdHJ1Y3RvcikgewotICBGaWxlUGF0aCBmcDsKLSAgRVhQRUNUX1NUUkVRKCIiLCBmcC5j
X3N0cigpKTsKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIENoYXJBbmRDb3B5Q29uc3RydWN0b3Jz
KSB7Ci0gIGNvbnN0IEZpbGVQYXRoIGZwKCJzcGljeSIpOwotICBFWFBFQ1RfU1RSRVEoInNwaWN5
IiwgZnAuY19zdHIoKSk7Ci0KLSAgY29uc3QgRmlsZVBhdGggZnBfY29weShmcCk7Ci0gIEVYUEVD
VF9TVFJFUSgic3BpY3kiLCBmcF9jb3B5LmNfc3RyKCkpOwotfQotCi1URVNUKEZpbGVQYXRoVGVz
dCwgU3RyaW5nQ29uc3RydWN0b3IpIHsKLSAgY29uc3QgRmlsZVBhdGggZnAoU3RyaW5nKCJjaWRl
ciIpKTsKLSAgRVhQRUNUX1NUUkVRKCJjaWRlciIsIGZwLmNfc3RyKCkpOwotfQotCi1URVNUKEZp
bGVQYXRoVGVzdCwgU2V0KSB7Ci0gIGNvbnN0IEZpbGVQYXRoIGFwcGxlKCJhcHBsZSIpOwotICBG
aWxlUGF0aCBtYWMoIm1hYyIpOwotICBtYWMuU2V0KGFwcGxlKTsgIC8vIEltcGxlbWVudCBTZXQo
KSBzaW5jZSBvdmVybG9hZGluZyBvcGVyYXRvcj0gaXMgZm9yYmlkZGVuLgotICBFWFBFQ1RfU1RS
RVEoImFwcGxlIiwgbWFjLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoImFwcGxlIiwgYXBwbGUu
Y19zdHIoKSk7Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0LCBUb1N0cmluZykgewotICBjb25zdCBG
aWxlUGF0aCBmaWxlKCJkcmluayIpOwotICBTdHJpbmcgc3RyKGZpbGUuVG9TdHJpbmcoKSk7Ci0g
IEVYUEVDVF9TVFJFUSgiZHJpbmsiLCBzdHIuY19zdHIoKSk7Ci19Ci0KLVRFU1QoRmlsZVBhdGhU
ZXN0LCBSZW1vdmVFeHRlbnNpb24pIHsKLSAgRVhQRUNUX1NUUkVRKCJhcHAiLCBGaWxlUGF0aCgi
YXBwLmV4ZSIpLlJlbW92ZUV4dGVuc2lvbigiZXhlIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJF
USgiQVBQIiwgRmlsZVBhdGgoIkFQUC5FWEUiKS5SZW1vdmVFeHRlbnNpb24oImV4ZSIpLmNfc3Ry
KCkpOwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgUmVtb3ZlRXh0ZW5zaW9uV2hlblRoZXJlSXNO
b0V4dGVuc2lvbikgewotICBFWFBFQ1RfU1RSRVEoImFwcCIsIEZpbGVQYXRoKCJhcHAiKS5SZW1v
dmVFeHRlbnNpb24oImV4ZSIpLmNfc3RyKCkpOwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgSXNE
aXJlY3RvcnkpIHsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJjb2xhIikuSXNEaXJlY3Rvcnko
KSk7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJrb2FsYSIgR1RFU1RfUEFUSF9TRVBfKS5Jc0Rp
cmVjdG9yeSgpKTsKLSNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXwotICBFWFBFQ1RfVFJVRShG
aWxlUGF0aCgia29hbGEvIikuSXNEaXJlY3RvcnkoKSk7Ci0jZW5kaWYKLX0KLQotVEVTVChGaWxl
UGF0aFRlc3QsIElzQWJzb2x1dGVQYXRoKSB7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiaXMi
IEdURVNUX1BBVEhfU0VQXyAicmVsYXRpdmUiKS5Jc0Fic29sdXRlUGF0aCgpKTsKLSAgRVhQRUNU
X0ZBTFNFKEZpbGVQYXRoKCIiKS5Jc0Fic29sdXRlUGF0aCgpKTsKLSNpZiBHVEVTVF9PU19XSU5E
T1dTCi0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJjOlxcIiBHVEVTVF9QQVRIX1NFUF8gImlzX25v
dCIKLSAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIpLklz
QWJzb2x1dGVQYXRoKCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImM6Zm9vIiBHVEVTVF9Q
QVRIX1NFUF8gImJhciIpLklzQWJzb2x1dGVQYXRoKCkpOwotICBFWFBFQ1RfVFJVRShGaWxlUGF0
aCgiYzovIiBHVEVTVF9QQVRIX1NFUF8gImlzX25vdCIKLSAgICAgICAgICAgICAgICAgICAgICAg
R1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIpLklzQWJzb2x1dGVQYXRoKCkpOwotI2Vsc2UKLSAg
RVhQRUNUX1RSVUUoRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfICJpc19ub3QiIEdURVNUX1BBVEhf
U0VQXyAicmVsYXRpdmUiKQotICAgICAgICAgICAgICAuSXNBYnNvbHV0ZVBhdGgoKSk7Ci0jZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIElzUm9vdERp
cmVjdG9yeSkgewotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgo
ImE6XFwiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJaOi8i
KS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJlOi8vIikuSXNS
b290RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIiIpLklzUm9vdERpcmVj
dG9yeSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJiOiIpLklzUm9vdERpcmVjdG9yeSgp
KTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJiOmEiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0g
IEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiODovIikuSXNSb290RGlyZWN0b3J5KCkpOwotICBFWFBF
Q1RfRkFMU0UoRmlsZVBhdGgoImN8LyIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSNlbHNlCi0gIEVY
UEVDVF9UUlVFKEZpbGVQYXRoKCIvIikuSXNSb290RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfVFJV
RShGaWxlUGF0aCgiLy8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxl
UGF0aCgiIikuSXNSb290RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIlxc
IikuSXNSb290RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIi94IikuSXNS
b290RGlyZWN0b3J5KCkpOwotI2VuZGlmCi19Ci0KLX0gIC8vIG5hbWVzcGFjZQotfSAgLy8gbmFt
ZXNwYWNlIGludGVybmFsCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saW5rZWRfcHRyX3Rlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWFlODIyOTZjOTIxZjBhZmU0MmZjMjMzNTc0OTcwZWU3
NzA5ZTViZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYworKysg
L2Rldi9udWxsCkBAIC0xLDE1NCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwMywgR29vZ2xlIElu
Yy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8v
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczogRGFuIEVnbm9yIChlZ25vckBnb29nbGUu
Y29tKQotLy8gUG9ydGVkIHRvIFdpbmRvd3M6IFZhZGltIEJlcm1hbiAodmFkaW1iQGdvb2dsZS5j
b20pCi0KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRyLmg+Ci0KLSNp
bmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1uYW1lc3BhY2Ug
ewotCi11c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6Omxp
bmtlZF9wdHI7Ci0KLWludCBudW07Ci1NZXNzYWdlKiBoaXN0b3J5ID0gTlVMTDsKLQotLy8gQ2xh
c3Mgd2hpY2ggdHJhY2tzIGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uCi1jbGFzcyBBIHsKLSBwdWJs
aWM6Ci0gIEEoKTogbXludW0obnVtKyspIHsgKmhpc3RvcnkgPDwgIkEiIDw8IG15bnVtIDw8ICIg
Y3RvclxuIjsgfQotICB2aXJ0dWFsIH5BKCkgeyAqaGlzdG9yeSA8PCAiQSIgPDwgbXludW0gPDwg
IiBkdG9yXG4iOyB9Ci0gIHZpcnR1YWwgdm9pZCBVc2UoKSB7ICpoaXN0b3J5IDw8ICJBIiA8PCBt
eW51bSA8PCAiIHVzZVxuIjsgfQotIHByb3RlY3RlZDoKLSAgaW50IG15bnVtOwotfTsKLQotLy8g
U3ViY2xhc3MKLWNsYXNzIEIgOiBwdWJsaWMgQSB7Ci0gcHVibGljOgotICBCKCkgeyAqaGlzdG9y
eSA8PCAiQiIgPDwgbXludW0gPDwgIiBjdG9yXG4iOyB9Ci0gIH5CKCkgeyAqaGlzdG9yeSA8PCAi
QiIgPDwgbXludW0gPDwgIiBkdG9yXG4iOyB9Ci0gIHZpcnR1YWwgdm9pZCBVc2UoKSB7ICpoaXN0
b3J5IDw8ICJCIiA8PCBteW51bSA8PCAiIHVzZVxuIjsgfQotfTsKLQotY2xhc3MgTGlua2VkUHRy
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwdWJsaWM6Ci0gIExpbmtlZFB0clRlc3Qo
KSB7Ci0gICAgbnVtID0gMDsKLSAgICBoaXN0b3J5ID0gbmV3IE1lc3NhZ2U7Ci0gIH0KLQotICB2
aXJ0dWFsIH5MaW5rZWRQdHJUZXN0KCkgewotICAgIGRlbGV0ZSBoaXN0b3J5OwotICAgIGhpc3Rv
cnkgPSBOVUxMOwotICB9Ci19OwotCi1URVNUX0YoTGlua2VkUHRyVGVzdCwgR2VuZXJhbFRlc3Qp
IHsKLSAgewotICAgIGxpbmtlZF9wdHI8QT4gYTAsIGExLCBhMjsKLSAgICBhMCA9IGEwOwotICAg
IGExID0gYTI7Ci0gICAgQVNTRVJUX0VRKGEwLmdldCgpLCBzdGF0aWNfY2FzdDxBKj4oTlVMTCkp
OwotICAgIEFTU0VSVF9FUShhMS5nZXQoKSwgc3RhdGljX2Nhc3Q8QSo+KE5VTEwpKTsKLSAgICBB
U1NFUlRfRVEoYTIuZ2V0KCksIHN0YXRpY19jYXN0PEEqPihOVUxMKSk7Ci0gICAgQVNTRVJUX1RS
VUUoYTAgPT0gTlVMTCk7Ci0gICAgQVNTRVJUX1RSVUUoYTEgPT0gTlVMTCk7Ci0gICAgQVNTRVJU
X1RSVUUoYTIgPT0gTlVMTCk7Ci0KLSAgICB7Ci0gICAgICBsaW5rZWRfcHRyPEE+IGEzKG5ldyBB
KTsKLSAgICAgIGEwID0gYTM7Ci0gICAgICBBU1NFUlRfVFJVRShhMCA9PSBhMyk7Ci0gICAgICBB
U1NFUlRfVFJVRShhMCAhPSBOVUxMKTsKLSAgICAgIEFTU0VSVF9UUlVFKGEwLmdldCgpID09IGEz
KTsKLSAgICAgIEFTU0VSVF9UUlVFKGEwID09IGEzLmdldCgpKTsKLSAgICAgIGxpbmtlZF9wdHI8
QT4gYTQoYTApOwotICAgICAgYTEgPSBhNDsKLSAgICAgIGxpbmtlZF9wdHI8QT4gYTUobmV3IEEp
OwotICAgICAgQVNTRVJUX1RSVUUoYTUuZ2V0KCkgIT0gYTMpOwotICAgICAgQVNTRVJUX1RSVUUo
YTUgIT0gYTMuZ2V0KCkpOwotICAgICAgYTIgPSBhNTsKLSAgICAgIGxpbmtlZF9wdHI8Qj4gYjAo
bmV3IEIpOwotICAgICAgbGlua2VkX3B0cjxBPiBhNihiMCk7Ci0gICAgICBBU1NFUlRfVFJVRShi
MCA9PSBhNik7Ci0gICAgICBBU1NFUlRfVFJVRShhNiA9PSBiMCk7Ci0gICAgICBBU1NFUlRfVFJV
RShiMCAhPSBOVUxMKTsKLSAgICAgIGE1ID0gYjA7Ci0gICAgICBhNSA9IGIwOwotICAgICAgYTMt
PlVzZSgpOwotICAgICAgYTQtPlVzZSgpOwotICAgICAgYTUtPlVzZSgpOwotICAgICAgYTYtPlVz
ZSgpOwotICAgICAgYjAtPlVzZSgpOwotICAgICAgKCpiMCkuVXNlKCk7Ci0gICAgICBiMC5nZXQo
KS0+VXNlKCk7Ci0gICAgfQotCi0gICAgYTAtPlVzZSgpOwotICAgIGExLT5Vc2UoKTsKLSAgICBh
Mi0+VXNlKCk7Ci0KLSAgICBhMSA9IGEyOwotICAgIGEyLnJlc2V0KG5ldyBBKTsKLSAgICBhMC5y
ZXNldCgpOwotCi0gICAgbGlua2VkX3B0cjxBPiBhNzsKLSAgfQotCi0gIEFTU0VSVF9TVFJFUSgK
LSAgICAiQTAgY3RvclxuIgotICAgICJBMSBjdG9yXG4iCi0gICAgIkEyIGN0b3JcbiIKLSAgICAi
QjIgY3RvclxuIgotICAgICJBMCB1c2VcbiIKLSAgICAiQTAgdXNlXG4iCi0gICAgIkIyIHVzZVxu
IgotICAgICJCMiB1c2VcbiIKLSAgICAiQjIgdXNlXG4iCi0gICAgIkIyIHVzZVxuIgotICAgICJC
MiB1c2VcbiIKLSAgICAiQjIgZHRvclxuIgotICAgICJBMiBkdG9yXG4iCi0gICAgIkEwIHVzZVxu
IgotICAgICJBMCB1c2VcbiIKLSAgICAiQTEgdXNlXG4iCi0gICAgIkEzIGN0b3JcbiIKLSAgICAi
QTAgZHRvclxuIgotICAgICJBMyBkdG9yXG4iCi0gICAgIkExIGR0b3JcbiIsCi0gICAgaGlzdG9y
eS0+R2V0U3RyaW5nKCkuY19zdHIoKQotICApOwotfQotCi19ICAvLyBVbm5hbWVkIG5hbWVzcGFj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saXN0ZW5l
cl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saXN0ZW5lcl90
ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWJlMzlhODdlODhkODk2MDFi
OWJjOTM3MmExNGVkYWFmNjEyOTQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbGlzdGVuZXJf
dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDMxMyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0v
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAo
VmxhZCBMb3NldikKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29v
Z2xlIFRlc3QpCi0vLwotLy8gVGhpcyBmaWxlIHZlcmlmaWVzIEdvb2dsZSBUZXN0IGV2ZW50IGxp
c3RlbmVycyByZWNlaXZlIGV2ZW50cyBhdCB0aGUKLS8vIHJpZ2h0IHRpbWVzLgotCi0jaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLXVzaW5nIDo6dGVzdGluZzo6
QWRkR2xvYmFsVGVzdEVudmlyb25tZW50OwotdXNpbmcgOjp0ZXN0aW5nOjpFbnZpcm9ubWVudDsK
LXVzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3Q7
Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RDYXNlOwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0RXZlbnRM
aXN0ZW5lcjsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdEluZm87Ci11c2luZyA6OnRlc3Rpbmc6OlRl
c3RQYXJ0UmVzdWx0OwotdXNpbmcgOjp0ZXN0aW5nOjpVbml0VGVzdDsKLXVzaW5nIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OlN0cmluZzsKLQotLy8gVXNlZCBieSB0ZXN0cyB0byByZWdpc3RlciB0aGVp
ciBldmVudHMuCi1zdGQ6OnZlY3RvcjxTdHJpbmc+KiBnX2V2ZW50cyA9IE5VTEw7Ci0KLW5hbWVz
cGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLWNsYXNzIEV2ZW50UmVjb3Jk
aW5nTGlzdGVuZXIgOiBwdWJsaWMgVGVzdEV2ZW50TGlzdGVuZXIgewotIHB1YmxpYzoKLSAgRXZl
bnRSZWNvcmRpbmdMaXN0ZW5lcihjb25zdCBjaGFyKiBuYW1lKSA6IG5hbWVfKG5hbWUpIHt9Ci0K
LSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBPblRlc3RQcm9ncmFtU3RhcnQoY29uc3QgVW5p
dFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxN
ZXRob2ROYW1lKCJPblRlc3RQcm9ncmFtU3RhcnQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQg
T25UZXN0SXRlcmF0aW9uU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaXRlcmF0aW9uKSB7Ci0gICAgTWVz
c2FnZSBtZXNzYWdlOwotICAgIG1lc3NhZ2UgPDwgR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdEl0
ZXJhdGlvblN0YXJ0IikKLSAgICAgICAgICAgIDw8ICIoIiA8PCBpdGVyYXRpb24gPDwgIikiOwot
ICAgIGdfZXZlbnRzLT5wdXNoX2JhY2sobWVzc2FnZS5HZXRTdHJpbmcoKSk7Ci0gIH0KLQotICB2
aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVu
aXRfdGVzdCovKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgi
T25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0IikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uRW52
aXJvbm1lbnRzU2V0VXBFbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKLSAgICBn
X2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPbkVudmlyb25tZW50c1NldFVw
RW5kIikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdENhc2VTdGFydChjb25zdCBUZXN0
Q2FzZSYgLyp0ZXN0X2Nhc2UqLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1l
dGhvZE5hbWUoIk9uVGVzdENhc2VTdGFydCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPblRl
c3RTdGFydChjb25zdCBUZXN0SW5mbyYgLyp0ZXN0X2luZm8qLykgewotICAgIGdfZXZlbnRzLT5w
dXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdFN0YXJ0IikpOwotICB9Ci0KLSAgdmly
dHVhbCB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIC8qdGVzdF9w
YXJ0X3Jlc3VsdCovKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFt
ZSgiT25UZXN0UGFydFJlc3VsdCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RFbmQo
Y29uc3QgVGVzdEluZm8mIC8qdGVzdF9pbmZvKi8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNr
KEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RFbmQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQg
T25UZXN0Q2FzZUVuZChjb25zdCBUZXN0Q2FzZSYgLyp0ZXN0X2Nhc2UqLykgewotICAgIGdfZXZl
bnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdENhc2VFbmQiKSk7Ci0gIH0K
LQotICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0KGNvbnN0IFVuaXRU
ZXN0JiAvKnVuaXRfdGVzdCovKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0
aG9kTmFtZSgiT25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0IikpOwotICB9Ci0KLSAgdmlydHVh
bCB2b2lkIE9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90
ZXN0Ki8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPbkVu
dmlyb25tZW50c1RlYXJEb3duRW5kIikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdEl0
ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgaXRlcmF0aW9uKSB7Ci0gICAgTWVzc2FnZSBtZXNzYWdl
OwotICAgIG1lc3NhZ2UgPDwgR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdEl0ZXJhdGlvbkVuZCIp
Ci0gICAgICAgICAgICA8PCAiKCIgIDw8IGl0ZXJhdGlvbiA8PCAiKSI7Ci0gICAgZ19ldmVudHMt
PnB1c2hfYmFjayhtZXNzYWdlLkdldFN0cmluZygpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBP
blRlc3RQcm9ncmFtRW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7Ci0gICAgZ19l
dmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0UHJvZ3JhbUVuZCIpKTsK
LSAgfQotCi0gcHJpdmF0ZToKLSAgU3RyaW5nIEdldEZ1bGxNZXRob2ROYW1lKGNvbnN0IGNoYXIq
IG5hbWUpIHsKLSAgICBNZXNzYWdlIG1lc3NhZ2U7Ci0gICAgbWVzc2FnZSA8PCBuYW1lXyA8PCAi
LiIgPDwgbmFtZTsKLSAgICByZXR1cm4gbWVzc2FnZS5HZXRTdHJpbmcoKTsKLSAgfQotCi0gIFN0
cmluZyBuYW1lXzsKLX07Ci0KLWNsYXNzIEVudmlyb25tZW50SW52b2NhdGlvbkNhdGNoZXIgOiBw
dWJsaWMgRW52aXJvbm1lbnQgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIFNldFVwKCkg
ewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJFbnZpcm9ubWVudDo6U2V0VXAiKSk7
Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hf
YmFjayhTdHJpbmcoIkVudmlyb25tZW50OjpUZWFyRG93biIpKTsKLSAgfQotfTsKLQotY2xhc3Mg
TGlzdGVuZXJUZXN0IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgc3RhdGljIHZvaWQg
U2V0VXBUZXN0Q2FzZSgpIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKFN0cmluZygiTGlzdGVu
ZXJUZXN0OjpTZXRVcFRlc3RDYXNlIikpOwotICB9Ci0KLSAgc3RhdGljIHZvaWQgVGVhckRvd25U
ZXN0Q2FzZSgpIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKFN0cmluZygiTGlzdGVuZXJUZXN0
OjpUZWFyRG93blRlc3RDYXNlIikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewot
ICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJMaXN0ZW5lclRlc3Q6OlNldFVwIikpOwot
ICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2Jh
Y2soU3RyaW5nKCJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duIikpOwotICB9Ci19OwotCi1URVNUX0Yo
TGlzdGVuZXJUZXN0LCBEb2VzRm9vKSB7Ci0gIC8vIFRlc3QgZXhlY3V0aW9uIG9yZGVyIHdpdGhp
biBhIHRlc3QgY2FzZSBpcyBub3QgZ3VhcmFudGVlZCBzbyB3ZSBhcmUgbm90Ci0gIC8vIHJlY29y
ZGluZyB0aGUgdGVzdCBuYW1lLgotICBnX2V2ZW50cy0+cHVzaF9iYWNrKFN0cmluZygiTGlzdGVu
ZXJUZXN0OjoqIFRlc3QgQm9keSIpKTsKLSAgU1VDQ0VFRCgpOyAgLy8gVHJpZ2dlcnMgT25UZXN0
UGFydFJlc3VsdC4KLX0KLQotVEVTVF9GKExpc3RlbmVyVGVzdCwgRG9lc0JhcikgewotICBnX2V2
ZW50cy0+cHVzaF9iYWNrKFN0cmluZygiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIpKTsKLSAg
U1VDQ0VFRCgpOyAgLy8gVHJpZ2dlcnMgT25UZXN0UGFydFJlc3VsdC4KLX0KLQotfSAgLy8gbmFt
ZXNwYWNlIGludGVybmFsCi0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLXVzaW5nIDo6dGVz
dGluZzo6aW50ZXJuYWw6OkVudmlyb25tZW50SW52b2NhdGlvbkNhdGNoZXI7Ci11c2luZyA6OnRl
c3Rpbmc6OmludGVybmFsOjpFdmVudFJlY29yZGluZ0xpc3RlbmVyOwotCi12b2lkIFZlcmlmeVJl
c3VsdHMoY29uc3Qgc3RkOjp2ZWN0b3I8U3RyaW5nPiYgZGF0YSwKLSAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBjb25zdCogZXhwZWN0ZWRfZGF0YSwKLSAgICAgICAgICAgICAgICAgICBp
bnQgZXhwZWN0ZWRfZGF0YV9zaXplKSB7Ci0gIGNvbnN0IGludCBhY3R1YWxfc2l6ZSA9IGRhdGEu
c2l6ZSgpOwotICAvLyBJZiB0aGUgZm9sbG93aW5nIGFzc2VydGlvbiBmYWlscywgYSBuZXcgZW50
cnkgd2lsbCBiZSBhcHBlbmRlZCB0bwotICAvLyBkYXRhLiAgSGVuY2Ugd2Ugc2F2ZSBkYXRhLnNp
emUoKSBmaXJzdC4KLSAgRVhQRUNUX0VRKGV4cGVjdGVkX2RhdGFfc2l6ZSwgYWN0dWFsX3NpemUp
OwotCi0gIC8vIENvbXBhcmVzIHRoZSBjb21tb24gcHJlZml4LgotICBjb25zdCBpbnQgc2hvcnRl
cl9zaXplID0gZXhwZWN0ZWRfZGF0YV9zaXplIDw9IGFjdHVhbF9zaXplID8KLSAgICAgIGV4cGVj
dGVkX2RhdGFfc2l6ZSA6IGFjdHVhbF9zaXplOwotICBpbnQgaSA9IDA7Ci0gIGZvciAoOyBpIDwg
c2hvcnRlcl9zaXplOyArK2kpIHsKLSAgICBBU1NFUlRfU1RSRVEoZXhwZWN0ZWRfZGF0YVtpXSwg
ZGF0YVtpXS5jX3N0cigpKQotICAgICAgICA8PCAiYXQgcG9zaXRpb24gIiA8PCBpOwotICB9Ci0K
LSAgLy8gUHJpbnRzIGV4dHJhIGVsZW1lbnRzIGluIHRoZSBhY3R1YWwgZGF0YS4KLSAgZm9yICg7
IGkgPCBhY3R1YWxfc2l6ZTsgKytpKSB7Ci0gICAgcHJpbnRmKCIgIEFjdHVhbCBldmVudCAjJWQ6
ICVzXG4iLCBpLCBkYXRhW2ldLmNfc3RyKCkpOwotICB9Ci19Ci0KLWludCBtYWluKGludCBhcmdj
LCBjaGFyICoqYXJndikgewotICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGV2ZW50czsKLSAgZ19ldmVu
dHMgPSAmZXZlbnRzOwotICBJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgVW5pdFRl
c3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpLkFwcGVuZCgKLSAgICAgIG5ldyBFdmVudFJl
Y29yZGluZ0xpc3RlbmVyKCIxc3QiKSk7Ci0gIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0
ZW5lcnMoKS5BcHBlbmQoCi0gICAgICBuZXcgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lcigiMm5kIikp
OwotCi0gIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgRW52aXJvbm1lbnRJbnZvY2F0aW9u
Q2F0Y2hlcik7Ci0KLSAgR1RFU1RfQ0hFQ0tfKGV2ZW50cy5zaXplKCkgPT0gMCkKLSAgICAgIDw8
ICJBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQgc2hvdWxkIG5vdCBnZW5lcmF0ZSBhbnkgZXZlbnRz
IGl0c2VsZi4iOwotCi0gIDo6dGVzdGluZzo6R1RFU1RfRkxBRyhyZXBlYXQpID0gMjsKLSAgaW50
IHJldF92YWwgPSBSVU5fQUxMX1RFU1RTKCk7Ci0KLSAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0
ZWRfZXZlbnRzW10gPSB7Ci0gICAgIjFzdC5PblRlc3RQcm9ncmFtU3RhcnQiLAotICAgICIybmQu
T25UZXN0UHJvZ3JhbVN0YXJ0IiwKLSAgICAiMXN0Lk9uVGVzdEl0ZXJhdGlvblN0YXJ0KDApIiwK
LSAgICAiMm5kLk9uVGVzdEl0ZXJhdGlvblN0YXJ0KDApIiwKLSAgICAiMXN0Lk9uRW52aXJvbm1l
bnRzU2V0VXBTdGFydCIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50c1NldFVwU3RhcnQiLAotICAg
ICJFbnZpcm9ubWVudDo6U2V0VXAiLAotICAgICIybmQuT25FbnZpcm9ubWVudHNTZXRVcEVuZCIs
Ci0gICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVwRW5kIiwKLSAgICAiMXN0Lk9uVGVzdENhc2VT
dGFydCIsCi0gICAgIjJuZC5PblRlc3RDYXNlU3RhcnQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlNl
dFVwVGVzdENhc2UiLAotICAgICIxc3QuT25UZXN0U3RhcnQiLAotICAgICIybmQuT25UZXN0U3Rh
cnQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwKLSAgICAiTGlzdGVuZXJUZXN0OjoqIFRl
c3QgQm9keSIsCi0gICAgIjFzdC5PblRlc3RQYXJ0UmVzdWx0IiwKLSAgICAiMm5kLk9uVGVzdFBh
cnRSZXN1bHQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duIiwKLSAgICAiMm5kLk9uVGVz
dEVuZCIsCi0gICAgIjFzdC5PblRlc3RFbmQiLAotICAgICIxc3QuT25UZXN0U3RhcnQiLAotICAg
ICIybmQuT25UZXN0U3RhcnQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwKLSAgICAiTGlz
dGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCi0gICAgIjFzdC5PblRlc3RQYXJ0UmVzdWx0IiwKLSAg
ICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duIiwK
LSAgICAiMm5kLk9uVGVzdEVuZCIsCi0gICAgIjFzdC5PblRlc3RFbmQiLAotICAgICJMaXN0ZW5l
clRlc3Q6OlRlYXJEb3duVGVzdENhc2UiLAotICAgICIybmQuT25UZXN0Q2FzZUVuZCIsCi0gICAg
IjFzdC5PblRlc3RDYXNlRW5kIiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFy
dCIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiLAotICAgICJFbnZpcm9u
bWVudDo6VGVhckRvd24iLAotICAgICIybmQuT25FbnZpcm9ubWVudHNUZWFyRG93bkVuZCIsCi0g
ICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5kIiwKLSAgICAiMm5kLk9uVGVzdEl0ZXJh
dGlvbkVuZCgwKSIsCi0gICAgIjFzdC5PblRlc3RJdGVyYXRpb25FbmQoMCkiLAotICAgICIxc3Qu
T25UZXN0SXRlcmF0aW9uU3RhcnQoMSkiLAotICAgICIybmQuT25UZXN0SXRlcmF0aW9uU3RhcnQo
MSkiLAotICAgICIxc3QuT25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0IiwKLSAgICAiMm5kLk9uRW52
aXJvbm1lbnRzU2V0VXBTdGFydCIsCi0gICAgIkVudmlyb25tZW50OjpTZXRVcCIsCi0gICAgIjJu
ZC5PbkVudmlyb25tZW50c1NldFVwRW5kIiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBF
bmQiLAotICAgICIxc3QuT25UZXN0Q2FzZVN0YXJ0IiwKLSAgICAiMm5kLk9uVGVzdENhc2VTdGFy
dCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6U2V0VXBUZXN0Q2FzZSIsCi0gICAgIjFzdC5PblRlc3RT
dGFydCIsCi0gICAgIjJuZC5PblRlc3RTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6U2V0VXAi
LAotICAgICJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5IiwKLSAgICAiMXN0Lk9uVGVzdFBhcnRS
ZXN1bHQiLAotICAgICIybmQuT25UZXN0UGFydFJlc3VsdCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6
VGVhckRvd24iLAotICAgICIybmQuT25UZXN0RW5kIiwKLSAgICAiMXN0Lk9uVGVzdEVuZCIsCi0g
ICAgIjFzdC5PblRlc3RTdGFydCIsCi0gICAgIjJuZC5PblRlc3RTdGFydCIsCi0gICAgIkxpc3Rl
bmVyVGVzdDo6U2V0VXAiLAotICAgICJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5IiwKLSAgICAi
MXN0Lk9uVGVzdFBhcnRSZXN1bHQiLAotICAgICIybmQuT25UZXN0UGFydFJlc3VsdCIsCi0gICAg
Ikxpc3RlbmVyVGVzdDo6VGVhckRvd24iLAotICAgICIybmQuT25UZXN0RW5kIiwKLSAgICAiMXN0
Lk9uVGVzdEVuZCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6VGVhckRvd25UZXN0Q2FzZSIsCi0gICAg
IjJuZC5PblRlc3RDYXNlRW5kIiwKLSAgICAiMXN0Lk9uVGVzdENhc2VFbmQiLAotICAgICIxc3Qu
T25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0IiwKLSAgICAiMm5kLk9uRW52aXJvbm1lbnRzVGVh
ckRvd25TdGFydCIsCi0gICAgIkVudmlyb25tZW50OjpUZWFyRG93biIsCi0gICAgIjJuZC5PbkVu
dmlyb25tZW50c1RlYXJEb3duRW5kIiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzVGVhckRvd25F
bmQiLAotICAgICIybmQuT25UZXN0SXRlcmF0aW9uRW5kKDEpIiwKLSAgICAiMXN0Lk9uVGVzdEl0
ZXJhdGlvbkVuZCgxKSIsCi0gICAgIjJuZC5PblRlc3RQcm9ncmFtRW5kIiwKLSAgICAiMXN0Lk9u
VGVzdFByb2dyYW1FbmQiCi0gIH07Ci0gIFZlcmlmeVJlc3VsdHMoZXZlbnRzLAotICAgICAgICAg
ICAgICAgIGV4cGVjdGVkX2V2ZW50cywKLSAgICAgICAgICAgICAgICBzaXplb2YoZXhwZWN0ZWRf
ZXZlbnRzKS9zaXplb2YoZXhwZWN0ZWRfZXZlbnRzWzBdKSk7Ci0KLSAgLy8gV2UgbmVlZCB0byBj
aGVjayBtYW51YWxseSBmb3IgYWQgaG9jIHRlc3QgZmFpbHVyZXMgdGhhdCBoYXBwZW4gYWZ0ZXIK
LSAgLy8gUlVOX0FMTF9URVNUUyBmaW5pc2hlcy4KLSAgaWYgKFVuaXRUZXN0OjpHZXRJbnN0YW5j
ZSgpLT5GYWlsZWQoKSkKLSAgICByZXRfdmFsID0gMTsKLQotICByZXR1cm4gcmV0X3ZhbDsKLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbWVzc2FnZV90
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1tZXNzYWdlX3Rlc3Qu
Y2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0MmIwMzQ0Nzg3MmUzZThmMDdhOWE0
YWRkMmJlNWRkNDY5ODBiNTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1tZXNzYWdlX3Rlc3Qu
Y2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNjcgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdv
b2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0v
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbikKLS8vCi0vLyBUZXN0cyBmb3IgdGhlIE1lc3NhZ2UgY2xhc3MuCi0KLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC1tZXNzYWdlLmg+Ci0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgot
Ci1uYW1lc3BhY2UgewotCi11c2luZyA6OnRlc3Rpbmc6Ok1lc3NhZ2U7Ci11c2luZyA6OnRlc3Rp
bmc6OmludGVybmFsOjpTdHJTdHJlYW07Ci0KLS8vIEEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgdHVy
bnMgYSBNZXNzYWdlIGludG8gYSBDIHN0cmluZy4KLWNvbnN0IGNoYXIqIFRvQ1N0cmluZyhjb25z
dCBNZXNzYWdlJiBtc2cpIHsKLSAgc3RhdGljIHRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmcgcmVz
dWx0OwotICByZXN1bHQgPSBtc2cuR2V0U3RyaW5nKCk7Ci0gIHJldHVybiByZXN1bHQuY19zdHIo
KTsKLX0KLQotLy8gVGVzdHMgdGhlIHRlc3Rpbmc6Ok1lc3NhZ2UgY2xhc3MKLQotLy8gVGVzdHMg
dGhlIGRlZmF1bHQgY29uc3RydWN0b3IuCi1URVNUKE1lc3NhZ2VUZXN0LCBEZWZhdWx0Q29uc3Ry
dWN0b3IpIHsKLSAgY29uc3QgTWVzc2FnZSBtc2c7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgVG9DU3Ry
aW5nKG1zZykpOwotfQotCi0vLyBUZXN0cyB0aGUgY29weSBjb25zdHJ1Y3Rvci4KLVRFU1QoTWVz
c2FnZVRlc3QsIENvcHlDb25zdHJ1Y3RvcikgewotICBjb25zdCBNZXNzYWdlIG1zZzEoIkhlbGxv
Iik7Ci0gIGNvbnN0IE1lc3NhZ2UgbXNnMihtc2cxKTsKLSAgRVhQRUNUX1NUUkVRKCJIZWxsbyIs
IFRvQ1N0cmluZyhtc2cyKSk7Ci19Ci0KLS8vIFRlc3RzIGNvbnN0cnVjdGluZyBhIE1lc3NhZ2Ug
ZnJvbSBhIEMtc3RyaW5nLgotVEVTVChNZXNzYWdlVGVzdCwgQ29uc3RydWN0c0Zyb21DU3RyaW5n
KSB7Ci0gIE1lc3NhZ2UgbXNnKCJIZWxsbyIpOwotICBFWFBFQ1RfU1RSRVEoIkhlbGxvIiwgVG9D
U3RyaW5nKG1zZykpOwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcgYSBmbG9hdC4KLVRFU1QoTWVz
c2FnZVRlc3QsIFN0cmVhbXNGbG9hdCkgewotICBjb25zdCBjaGFyKiBjb25zdCBzID0gVG9DU3Ry
aW5nKE1lc3NhZ2UoKSA8PCAxLjIzNDU2RiA8PCAiICIgPDwgMi4zNDU2N0YpOwotICAvLyBCb3Ro
IG51bWJlcnMgc2hvdWxkIGJlIHByaW50ZWQgd2l0aCBlbm91Z2ggcHJlY2lzaW9uLgotICBFWFBF
Q1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6OklzU3Vic3RyaW5nLCAiMS4yMzQ1NjAiLCBzKTsKLSAg
RVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIiAyLjM0NTY2OSIsIHMp
OwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcgYSBkb3VibGUuCi1URVNUKE1lc3NhZ2VUZXN0LCBT
dHJlYW1zRG91YmxlKSB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IHMgPSBUb0NTdHJpbmcoTWVzc2Fn
ZSgpIDw8IDEyNjA1NzA4ODAuNDU1NTQ5NyA8PCAiICIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAxMjYwNTcyMjY1LjE5NTQ1MzQpOwotICAvLyBCb3RoIG51bWJlcnMgc2hv
dWxkIGJlIHByaW50ZWQgd2l0aCBlbm91Z2ggcHJlY2lzaW9uLgotICBFWFBFQ1RfUFJFRF9GT1JN
QVQyKHRlc3Rpbmc6OklzU3Vic3RyaW5nLCAiMTI2MDU3MDg4MC40NSIsIHMpOwotICBFWFBFQ1Rf
UFJFRF9GT1JNQVQyKHRlc3Rpbmc6OklzU3Vic3RyaW5nLCAiIDEyNjA1NzIyNjUuMTkiLCBzKTsK
LX0KLQotLy8gVGVzdHMgc3RyZWFtaW5nIGEgbm9uLWNoYXIgcG9pbnRlci4KLVRFU1QoTWVzc2Fn
ZVRlc3QsIFN0cmVhbXNQb2ludGVyKSB7Ci0gIGludCBuID0gMDsKLSAgaW50KiBwID0gJm47Ci0g
IEVYUEVDVF9TVFJORSgiKG51bGwpIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCBwKSk7Ci19Ci0K
LS8vIFRlc3RzIHN0cmVhbWluZyBhIE5VTEwgbm9uLWNoYXIgcG9pbnRlci4KLVRFU1QoTWVzc2Fn
ZVRlc3QsIFN0cmVhbXNOdWxsUG9pbnRlcikgewotICBpbnQqIHAgPSBOVUxMOwotICBFWFBFQ1Rf
U1RSRVEoIihudWxsKSIsIFRvQ1N0cmluZyhNZXNzYWdlKCkgPDwgcCkpOwotfQotCi0vLyBUZXN0
cyBzdHJlYW1pbmcgYSBDIHN0cmluZy4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNDU3RyaW5n
KSB7Ci0gIEVYUEVDVF9TVFJFUSgiRm9vIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCAiRm9vIikp
OwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcgYSBOVUxMIEMgc3RyaW5nLgotVEVTVChNZXNzYWdl
VGVzdCwgU3RyZWFtc051bGxDU3RyaW5nKSB7Ci0gIGNoYXIqIHAgPSBOVUxMOwotICBFWFBFQ1Rf
U1RSRVEoIihudWxsKSIsIFRvQ1N0cmluZyhNZXNzYWdlKCkgPDwgcCkpOwotfQotCi0vLyBUZXN0
cyBzdHJlYW1pbmcgc3RkOjpzdHJpbmcuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zU3RyaW5n
KSB7Ci0gIGNvbnN0IDo6c3RkOjpzdHJpbmcgc3RyKCJIZWxsbyIpOwotICBFWFBFQ1RfU1RSRVEo
IkhlbGxvIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCBzdHIpKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCB3ZSBjYW4gb3V0cHV0IHN0cmluZ3MgY29udGFpbmluZyBlbWJlZGRlZCBOVUxzLgotVEVTVChN
ZXNzYWdlVGVzdCwgU3RyZWFtc1N0cmluZ1dpdGhFbWJlZGRlZE5VTCkgewotICBjb25zdCBjaGFy
IGNoYXJfYXJyYXlfd2l0aF9udWxbXSA9Ci0gICAgICAiSGVyZSdzIGEgTlVMXDAgYW5kIHNvbWUg
bW9yZSBzdHJpbmciOwotICBjb25zdCA6OnN0ZDo6c3RyaW5nIHN0cmluZ193aXRoX251bChjaGFy
X2FycmF5X3dpdGhfbnVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplb2YoY2hhcl9hcnJheV93aXRoX251bCkgLSAxKTsKLSAgRVhQRUNUX1NUUkVRKCJIZXJlJ3Mg
YSBOVUxcXDAgYW5kIHNvbWUgbW9yZSBzdHJpbmciLAotICAgICAgICAgICAgICAgVG9DU3RyaW5n
KE1lc3NhZ2UoKSA8PCBzdHJpbmdfd2l0aF9udWwpKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFtaW5n
IGEgTlVMIGNoYXIuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zTlVMQ2hhcikgewotICBFWFBF
Q1RfU1RSRVEoIlxcMCIsIFRvQ1N0cmluZyhNZXNzYWdlKCkgPDwgJ1wwJykpOwotfQotCi0vLyBU
ZXN0cyBzdHJlYW1pbmcgaW50LgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc0ludCkgewotICBF
WFBFQ1RfU1RSRVEoIjEyMyIsIFRvQ1N0cmluZyhNZXNzYWdlKCkgPDwgMTIzKSk7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgYmFzaWMgSU8gbWFuaXB1bGF0b3JzIChlbmRsLCBlbmRzLCBhbmQgZmx1c2gp
IGNhbiBiZQotLy8gc3RyZWFtZWQgdG8gTWVzc2FnZS4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVh
bXNCYXNpY0lvTWFuaXApIHsKLSAgRVhQRUNUX1NUUkVRKCJMaW5lIDEuXG5BIE5VTCBjaGFyIFxc
MCBpbiBsaW5lIDIuIiwKLSAgICAgICAgICAgICAgIFRvQ1N0cmluZyhNZXNzYWdlKCkgPDwgIkxp
bmUgMS4iIDw8IHN0ZDo6ZW5kbAotICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJBIE5VTCBj
aGFyICIgPDwgc3RkOjplbmRzIDw8IHN0ZDo6Zmx1c2gKLSAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCAiIGluIGxpbmUgMi4iKSk7Ci19Ci0KLS8vIFRlc3RzIE1lc3NhZ2U6OkdldFN0cmluZygp
Ci1URVNUKE1lc3NhZ2VUZXN0LCBHZXRTdHJpbmcpIHsKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8
PCAxIDw8ICIgbGFtYiI7Ci0gIEVYUEVDVF9TVFJFUSgiMSBsYW1iIiwgbXNnLkdldFN0cmluZygp
LmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcgYSBNZXNzYWdlIG9iamVjdCB0byBh
biBvc3RyZWFtLgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc1RvT1N0cmVhbSkgewotICBNZXNz
YWdlIG1zZygiSGVsbG8iKTsKLSAgU3RyU3RyZWFtIHNzOwotICBzcyA8PCBtc2c7Ci0gIEVYUEVD
VF9TVFJFUSgiSGVsbG8iLCB0ZXN0aW5nOjppbnRlcm5hbDo6U3RyU3RyZWFtVG9TdHJpbmcoJnNz
KS5jX3N0cigpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIE1lc3NhZ2Ugb2JqZWN0IGRvZXNuJ3Qg
dGFrZSB1cCB0b28gbXVjaCBzdGFjayBzcGFjZS4KLVRFU1QoTWVzc2FnZVRlc3QsIERvZXNOb3RU
YWtlVXBNdWNoU3RhY2tTcGFjZSkgewotICBFWFBFQ1RfTEUoc2l6ZW9mKE1lc3NhZ2UpLCAxNlUp
OwotfQotCi19ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3Qtb3B0aW9uc190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdC1vcHRpb25zX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDJlMmNiYzkyZTVlMDI4Yzc0YzgyZjA3NTBmZGQ4YmRmYjRlODgzMWUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdC1vcHRpb25zX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyMTIgKzAsMCBA
QAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0v
LyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcnM6IGtlaXRoLnJheUBnbWFpbC5jb20gKEtlaXRoIFJheSkKLS8vCi0vLyBHb29nbGUgVGVz
dCBVbml0VGVzdE9wdGlvbnMgdGVzdHMKLS8vCi0vLyBUaGlzIGZpbGUgdGVzdHMgY2xhc3NlcyBh
bmQgZnVuY3Rpb25zIHVzZWQgaW50ZXJuYWxseSBieQotLy8gR29vZ2xlIFRlc3QuICBUaGV5IGFy
ZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4KLS8vCi0vLyBUaGlzIGZpbGUgaXMg
I2luY2x1ZGVkIGZyb20gZ3Rlc3QuY2MsIHRvIGF2b2lkIGNoYW5naW5nIGJ1aWxkIG9yCi0vLyBt
YWtlLWZpbGVzIG9uIFdpbmRvd3MgYW5kIG90aGVyIHBsYXRmb3Jtcy4gRG8gbm90ICNpbmNsdWRl
IHRoaXMgZmlsZQotLy8gYW55d2hlcmUgZWxzZSEKLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNl
bGlmIEdURVNUX09TX1dJTkRPV1MKLSNpbmNsdWRlIDxkaXJlY3QuaD4KLSNlbmRpZiAgLy8gR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlv
biB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBt
dXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3Ig
dGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJl
dmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlu
bC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNp
bmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5U
QVRJT05fCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci1uYW1l
c3BhY2UgewotCi0vLyBUdXJucyB0aGUgZ2l2ZW4gcmVsYXRpdmUgcGF0aCBpbnRvIGFuIGFic29s
dXRlIHBhdGguCi1GaWxlUGF0aCBHZXRBYnNvbHV0ZVBhdGhPZihjb25zdCBGaWxlUGF0aCYgcmVs
YXRpdmVfcGF0aCkgewotICByZXR1cm4gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoOjpH
ZXRDdXJyZW50RGlyKCksIHJlbGF0aXZlX3BhdGgpOwotfQotCi0vLyBUZXN0aW5nIFVuaXRUZXN0
T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0L0dldE91dHB1dEZpbGUuCi0KLVRFU1QoWG1sT3V0cHV0
VGVzdCwgR2V0T3V0cHV0Rm9ybWF0RGVmYXVsdCkgewotICBHVEVTVF9GTEFHKG91dHB1dCkgPSAi
IjsKLSAgRVhQRUNUX1NUUkVRKCIiLCBVbml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdCgp
LmNfc3RyKCkpOwotfQotCi1URVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZvcm1hdCkgewot
ICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOmZpbGVuYW1lIjsKLSAgRVhQRUNUX1NUUkVRKCJ4
bWwiLCBVbml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdCgpLmNfc3RyKCkpOwotfQotCi1U
RVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZpbGVEZWZhdWx0KSB7Ci0gIEdURVNUX0ZMQUco
b3V0cHV0KSA9ICIiOwotICBFWFBFQ1RfU1RSRVEoR2V0QWJzb2x1dGVQYXRoT2YoRmlsZVBhdGgo
InRlc3RfZGV0YWlsLnhtbCIpKS5jX3N0cigpLAotICAgICAgICAgICAgICAgVW5pdFRlc3RPcHRp
b25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0cigpKTsKLX0KLQotVEVTVChY
bWxPdXRwdXRUZXN0LCBHZXRPdXRwdXRGaWxlU2luZ2xlRmlsZSkgewotICBHVEVTVF9GTEFHKG91
dHB1dCkgPSAieG1sOmZpbGVuYW1lLmFiYyI7Ci0gIEVYUEVDVF9TVFJFUShHZXRBYnNvbHV0ZVBh
dGhPZihGaWxlUGF0aCgiZmlsZW5hbWUuYWJjIikpLmNfc3RyKCksCi0gICAgICAgICAgICAgICBV
bml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOwot
fQotCi1URVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZpbGVGcm9tRGlyZWN0b3J5UGF0aCkg
ewotICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOnBhdGgiIEdURVNUX1BBVEhfU0VQXzsKLSAg
Y29uc3Qgc3RkOjpzdHJpbmcgZXhwZWN0ZWRfb3V0cHV0X2ZpbGUgPQotICAgICAgR2V0QWJzb2x1
dGVQYXRoT2YoCi0gICAgICAgICAgRmlsZVBhdGgoc3RkOjpzdHJpbmcoInBhdGgiKSArIEdURVNU
X1BBVEhfU0VQXyArCi0gICAgICAgICAgICAgICAgICAgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1l
KCkuY19zdHIoKSArICIueG1sIikpLmNfc3RyKCk7Ci0gIGNvbnN0IFN0cmluZyYgb3V0cHV0X2Zp
bGUgPSBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpOwotI2lm
IEdURVNUX09TX1dJTkRPV1MKLSAgRVhQRUNUX1NUUkNBU0VFUShleHBlY3RlZF9vdXRwdXRfZmls
ZS5jX3N0cigpLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKLSNlbHNlCi0gIEVYUEVDVF9FUShleHBl
Y3RlZF9vdXRwdXRfZmlsZSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7Ci0jZW5kaWYKLX0KLQotVEVT
VChPdXRwdXRGaWxlSGVscGVyc1Rlc3QsIEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSkgewotICBj
b25zdCBzdGQ6OnN0cmluZyBleGVfc3RyID0gR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuY19z
dHIoKTsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIGNvbnN0IGJvb2wgc3VjY2VzcyA9Ci0gICAg
ICBfc3RyY21waSgiZ3Rlc3Qtb3B0aW9uc190ZXN0IiwgZXhlX3N0ci5jX3N0cigpKSA9PSAwIHx8
Ci0gICAgICBfc3RyY21waSgiZ3Rlc3Qtb3B0aW9ucy1leF90ZXN0IiwgZXhlX3N0ci5jX3N0cigp
KSA9PSAwIHx8Ci0gICAgICBfc3RyY21waSgiZ3Rlc3RfYWxsX3Rlc3QiLCBleGVfc3RyLmNfc3Ry
KCkpID09IDAgfHwKLSAgICAgIF9zdHJjbXBpKCJndGVzdF9kbGxfdGVzdCIsIGV4ZV9zdHIuY19z
dHIoKSkgPT0gMDsKLSNlbHNlCi0gIC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiByZW1vdmUgdGhl
IGhhcmQtY29kZWQgImx0LSIgcHJlZml4IHdoZW4KLSAgLy8gICBDaGFuZGxlciBDYXJydXRoJ3Mg
bGlidG9vbCByZXBsYWNlbWVudCBpcyByZWFkeS4KLSAgY29uc3QgYm9vbCBzdWNjZXNzID0KLSAg
ICAgIGV4ZV9zdHIgPT0gImd0ZXN0LW9wdGlvbnNfdGVzdCIgfHwKLSAgICAgIGV4ZV9zdHIgPT0g
Imd0ZXN0X2FsbF90ZXN0IiB8fAotICAgICAgZXhlX3N0ciA9PSAibHQtZ3Rlc3RfYWxsX3Rlc3Qi
IHx8Ci0gICAgICBleGVfc3RyID09ICJndGVzdF9kbGxfdGVzdCI7Ci0jZW5kaWYgIC8vIEdURVNU
X09TX1dJTkRPV1MKLSAgaWYgKCFzdWNjZXNzKQotICAgIEZBSUwoKSA8PCAiR2V0Q3VycmVudEV4
ZWN1dGFibGVOYW1lKCkgcmV0dXJucyAiIDw8IGV4ZV9zdHI7Ci19Ci0KLWNsYXNzIFhtbE91dHB1
dENoYW5nZURpclRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKSB7Ci0gICAgb3JpZ2luYWxfd29ya2luZ19kaXJfID0gRmlsZVBhdGg6OkdldEN1
cnJlbnREaXIoKTsKLSAgICBwb3NpeDo6Q2hEaXIoIi4uIik7Ci0gICAgLy8gVGhpcyB3aWxsIG1h
a2UgdGhlIHRlc3QgZmFpbCBpZiBydW4gZnJvbSB0aGUgcm9vdCBkaXJlY3RvcnkuCi0gICAgRVhQ
RUNUX1NUUk5FKG9yaWdpbmFsX3dvcmtpbmdfZGlyXy5jX3N0cigpLAotICAgICAgICAgICAgICAg
ICBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpLmNfc3RyKCkpOwotICB9Ci0KLSAgdmlydHVhbCB2
b2lkIFRlYXJEb3duKCkgewotICAgIHBvc2l4OjpDaERpcihvcmlnaW5hbF93b3JraW5nX2Rpcl8u
Y19zdHIoKSk7Ci0gIH0KLQotICBGaWxlUGF0aCBvcmlnaW5hbF93b3JraW5nX2Rpcl87Ci19Owot
Ci1URVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdE
aXJXaXRoRGVmYXVsdCkgewotICBHVEVTVF9GTEFHKG91dHB1dCkgPSAiIjsKLSAgRVhQRUNUX1NU
UkVRKEZpbGVQYXRoOjpDb25jYXRQYXRocyhvcmlnaW5hbF93b3JraW5nX2Rpcl8sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoInRlc3RfZGV0YWlsLnhtbCIp
KS5jX3N0cigpLAotICAgICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBh
dGhUb091dHB1dEZpbGUoKS5jX3N0cigpKTsKLX0KLQotVEVTVF9GKFhtbE91dHB1dENoYW5nZURp
clRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aERlZmF1bHRYTUwpIHsKLSAgR1RF
U1RfRkxBRyhvdXRwdXQpID0gInhtbCI7Ci0gIEVYUEVDVF9TVFJFUShGaWxlUGF0aDo6Q29uY2F0
UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZpbGVQYXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuY19zdHIoKSwKLSAgICAgICAg
ICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19z
dHIoKSk7Ci19Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdp
bmFsV29ya2luZ0RpcldpdGhSZWxhdGl2ZUZpbGUpIHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0g
InhtbDpmaWxlbmFtZS5hYmMiOwotICBFWFBFQ1RfU1RSRVEoRmlsZVBhdGg6OkNvbmNhdFBhdGhz
KG9yaWdpbmFsX3dvcmtpbmdfZGlyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGaWxlUGF0aCgiZmlsZW5hbWUuYWJjIikpLmNfc3RyKCksCi0gICAgICAgICAgICAgICBV
bml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOwot
fQotCi1URVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtp
bmdEaXJXaXRoUmVsYXRpdmVQYXRoKSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6cGF0
aCIgR1RFU1RfUEFUSF9TRVBfOwotICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3RlZF9vdXRwdXRf
ZmlsZSA9Ci0gICAgICBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoCi0gICAgICAgICAgb3JpZ2luYWxf
d29ya2luZ19kaXJfLAotICAgICAgICAgIEZpbGVQYXRoKHN0ZDo6c3RyaW5nKCJwYXRoIikgKyBH
VEVTVF9QQVRIX1NFUF8gKwotICAgICAgICAgICAgICAgICAgIEdldEN1cnJlbnRFeGVjdXRhYmxl
TmFtZSgpLmNfc3RyKCkgKyAiLnhtbCIpKS5jX3N0cigpOwotICBjb25zdCBTdHJpbmcmIG91dHB1
dF9maWxlID0gVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKTsK
LSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIEVYUEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWRfb3V0cHV0
X2ZpbGUuY19zdHIoKSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7Ci0jZWxzZQotICBFWFBFQ1RfRVEo
ZXhwZWN0ZWRfb3V0cHV0X2ZpbGUsIG91dHB1dF9maWxlLmNfc3RyKCkpOwotI2VuZGlmCi19Ci0K
LVRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0Rp
cldpdGhBYnNvbHV0ZUZpbGUpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIEdURVNUX0ZMQUco
b3V0cHV0KSA9ICJ4bWw6YzpcXHRtcFxcZmlsZW5hbWUuYWJjIjsKLSAgRVhQRUNUX1NUUkVRKEZp
bGVQYXRoKCJjOlxcdG1wXFxmaWxlbmFtZS5hYmMiKS5jX3N0cigpLAotICAgICAgICAgICAgICAg
VW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0cigpKTsK
LSNlbHNlCi0gIEdURVNUX0ZMQUcob3V0cHV0KSA9InhtbDovdG1wL2ZpbGVuYW1lLmFiYyI7Ci0g
IEVYUEVDVF9TVFJFUShGaWxlUGF0aCgiL3RtcC9maWxlbmFtZS5hYmMiKS5jX3N0cigpLAotICAg
ICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUo
KS5jX3N0cigpKTsKLSNlbmRpZgotfQotCi1URVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwg
UHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoQWJzb2x1dGVQYXRoKSB7Ci0jaWYgR1RFU1Rf
T1NfV0lORE9XUwotICBjb25zdCBzdGQ6OnN0cmluZyBwYXRoID0gImM6XFx0bXBcXCI7Ci0jZWxz
ZQotICBjb25zdCBzdGQ6OnN0cmluZyBwYXRoID0gIi90bXAvIjsKLSNlbmRpZgotCi0gIEdURVNU
X0ZMQUcob3V0cHV0KSA9ICJ4bWw6IiArIHBhdGg7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVj
dGVkX291dHB1dF9maWxlID0KLSAgICAgIHBhdGggKyBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUo
KS5jX3N0cigpICsgIi54bWwiOwotICBjb25zdCBTdHJpbmcmIG91dHB1dF9maWxlID0gVW5pdFRl
c3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKTsKLQotI2lmIEdURVNUX09T
X1dJTkRPV1MKLSAgRVhQRUNUX1NUUkNBU0VFUShleHBlY3RlZF9vdXRwdXRfZmlsZS5jX3N0cigp
LCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKLSNlbHNlCi0gIEVYUEVDVF9FUShleHBlY3RlZF9vdXRw
dXRfZmlsZSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7Ci0jZW5kaWYKLX0KLQotfSAgLy8gbmFtZXNw
YWNlCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3Qy
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3Qy
X3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjYjZjZmFjOWU3NmI4Mjdm
MTdhZTExODI5ZTIzNmQ2Zjk3ZWU2NDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10
ZXN0Ml90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLy8gQ29weXJpZ2h0
IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24u
Ci0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29v
Z2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCi0vLyBUZXN0cyBmb3IgR29vZ2xlIFRlc3QgaXRzZWxm
LiAgVGhpcyB2ZXJpZmllcyB0aGF0IHRoZSBiYXNpYyBjb25zdHJ1Y3RzIG9mCi0vLyBHb29nbGUg
VGVzdCB3b3JrLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2luY2x1ZGUgInRlc3Qv
Z3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmgiCi0KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi11
c2luZyA6OnRlc3Rpbmc6OlZhbHVlczsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFt
R2VuZXJhdG9yOwotCi0vLyBUZXN0cyB0aGF0IGdlbmVyYXRvcnMgZGVmaW5lZCBpbiBhIGRpZmZl
cmVudCB0cmFuc2xhdGlvbiB1bml0Ci0vLyBhcmUgZnVuY3Rpb25hbC4gVGhlIHRlc3QgdXNpbmcg
ZXh0ZXJuX2dlbiBpcyBkZWZpbmVkCi0vLyBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MuCi1Q
YXJhbUdlbmVyYXRvcjxpbnQ+IGV4dGVybl9nZW4gPSBWYWx1ZXMoMzMpOwotCi0vLyBUZXN0cyB0
aGF0IGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGRlZmluZWQgaW4gb25lIHRyYW5z
bGF0aW9uIHVuaXQKLS8vIGFuZCBpbnN0YW50aWF0ZWQgaW4gYW5vdGhlci4gVGhlIHRlc3QgaXMg
ZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MKLS8vIGFuZCBFeHRlcm5hbEluc3Rh
bnRpYXRpb25UZXN0IGZpeHR1cmUgY2xhc3MgaXMgZGVmaW5lZCBpbgotLy8gZ3Rlc3QtcGFyYW0t
dGVzdF90ZXN0LmguCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChNdWx0aXBsZXNPZjMzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbHVlcygzMywgNjYpKTsKLQotLy8gVGVzdHMgdGhhdCBhIHBhcmFt
ZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBpbnN0YW50aWF0ZWQKLS8vIGluIG11bHRpcGxlIHRy
YW5zbGF0aW9uIHVuaXRzLiBBbm90aGVyIGluc3RhbnRpYXRpb24gaXMgZGVmaW5lZAotLy8gaW4g
Z3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmNjIGFuZCBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5z
bGFpb25Vbml0c1Rlc3QKLS8vIGZpeHR1cmUgaXMgZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10ZXN0
X3Rlc3QuaAotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2UyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDQyKjMsIDQyKjQsIDQyKjUpKTsKLQotI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDBhMGU3MzVjMGI5ODhlZjFhMjJiN2Q3YWU2OTAyNzAxOGJkYjhjYi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYworKysgL2Rldi9udWxsCkBA
IC0xLDgzNSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBt
ZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
Ly8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQotLy8KLS8v
IFRlc3RzIGZvciBHb29nbGUgVGVzdCBpdHNlbGYuIFRoaXMgZmlsZSB2ZXJpZmllcyB0aGF0IHRo
ZSBwYXJhbWV0ZXIKLS8vIGdlbmVyYXRvcnMgb2JqZWN0cyBwcm9kdWNlIGNvcnJlY3QgcGFyYW1l
dGVyIHNlcXVlbmNlcyBhbmQgdGhhdAotLy8gR29vZ2xlIFRlc3QgcnVudGltZSBpbnN0YW50aWF0
ZXMgY29ycmVjdCB0ZXN0cyBmcm9tIHRob3NlIHNlcXVlbmNlcy4KLQotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+Ci0KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi0jaW5jbHVkZSA8YWxnb3Jp
dGhtPgotI2luY2x1ZGUgPGlvc3RyZWFtPgotI2luY2x1ZGUgPGxpc3Q+Ci0jaW5jbHVkZSA8c3N0
cmVhbT4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0vLyBUbyBpbmNs
dWRlIGd0ZXN0LWludGVybmFsLWlubC5oLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8g
MQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIgIC8vIGZvciBVbml0VGVzdE9w
dGlvbnMKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KLQotI2luY2x1ZGUgInRlc3QvZ3Rl
c3QtcGFyYW0tdGVzdF90ZXN0LmgiCi0KLXVzaW5nIDo6c3RkOjp2ZWN0b3I7Ci11c2luZyA6OnN0
ZDo6c29ydDsKLQotdXNpbmcgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQ7Ci11
c2luZyA6OnRlc3Rpbmc6OkJvb2w7Ci11c2luZyA6OnRlc3Rpbmc6Ok1lc3NhZ2U7Ci11c2luZyA6
OnRlc3Rpbmc6OlJhbmdlOwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtOwotdXNpbmcg
Ojp0ZXN0aW5nOjpWYWx1ZXM7Ci11c2luZyA6OnRlc3Rpbmc6OlZhbHVlc0luOwotCi0jaWYgR1RF
U1RfSEFTX0NPTUJJTkUKLXVzaW5nIDo6dGVzdGluZzo6Q29tYmluZTsKLXVzaW5nIDo6c3RkOjp0
cjE6OmdldDsKLXVzaW5nIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGU7Ci11c2luZyA6OnN0ZDo6dHIx
Ojp0dXBsZTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKLQotdXNpbmcgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpV
bml0VGVzdE9wdGlvbnM7Ci0KLS8vIFByaW50cyBhIHZhbHVlIHRvIGEgc3RyaW5nLgotLy8KLS8v
IFRPRE8od2FuQGdvb2dsZS5jb20pOiByZW1vdmUgUHJpbnRWYWx1ZSgpIHdoZW4gd2UgbW92ZSBt
YXRjaGVycyBhbmQKLS8vIEVYUEVDVF9USEFUKCkgZnJvbSBHb29nbGUgTW9jayB0byBHb29nbGUg
VGVzdC4gIEF0IHRoYXQgdGltZSwgd2UKLS8vIGNhbiB3cml0ZSBFWFBFQ1RfVEhBVCh4LCBFcSh5
KSkgdG8gY29tcGFyZSB0d28gdHVwbGVzIHggYW5kIHksIGFzCi0vLyBFWFBFQ1RfVEhBVCgpIGFu
ZCB0aGUgbWF0Y2hlcnMga25vdyBob3cgdG8gcHJpbnQgdHVwbGVzLgotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci06OnN0ZDo6c3RyaW5nIFByaW50VmFsdWUoY29uc3QgVCYgdmFsdWUpIHsKLSAgOjpz
dGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07Ci0gIHN0cmVhbSA8PCB2YWx1ZTsKLSAgcmV0dXJuIHN0
cmVhbS5zdHIoKTsKLX0KLQotI2lmIEdURVNUX0hBU19DT01CSU5FCi0KLS8vIFRoZXNlIG92ZXJs
b2FkcyBhbGxvdyBwcmludGluZyB0dXBsZXMgaW4gb3VyIHRlc3RzLiAgV2UgY2Fubm90Ci0vLyBk
ZWZpbmUgYW4gb3BlcmF0b3I8PCBmb3IgdHVwbGVzLCBhcyB0aGF0IGRlZmluaXRpb24gbmVlZHMg
dG8gYmUgaW4KLS8vIHRoZSBzdGQgbmFtZXNwYWNlIGluIG9yZGVyIHRvIGJlIHBpY2tlZCB1cCBi
eSBHb29nbGUgVGVzdCB2aWEKLS8vIEFyZ3VtZW50LURlcGVuZGVudCBMb29rdXAsIHlldCBkZWZp
bmluZyBhbnl0aGluZyBpbiB0aGUgc3RkCi0vLyBuYW1lc3BhY2UgaW4gbm9uLVNUTCBjb2RlIGlz
IHVuZGVmaW5lZCBiZWhhdmlvci4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
Mj4KLTo6c3RkOjpzdHJpbmcgUHJpbnRWYWx1ZShjb25zdCB0dXBsZTxUMSwgVDI+JiB2YWx1ZSkg
ewotICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKLSAgc3RyZWFtIDw8ICIoIiA8PCBnZXQ8
MD4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDE+KHZhbHVlKSA8PCAiKSI7Ci0gIHJldHVybiBzdHJl
YW0uc3RyKCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVu
YW1lIFQzPgotOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKGNvbnN0IHR1cGxlPFQxLCBUMiwgVDM+
JiB2YWx1ZSkgewotICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKLSAgc3RyZWFtIDw8ICIo
IiA8PCBnZXQ8MD4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDE+KHZhbHVlKQotICAgICAgICAgPDwg
IiwgIjw8IGdldDwyPih2YWx1ZSkgPDwgIikiOwotICByZXR1cm4gc3RyZWFtLnN0cigpOwotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywg
dHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTA+Ci06OnN0ZDo6c3RyaW5nIFBy
aW50VmFsdWUoCi0gICAgY29uc3QgdHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LCBUOSwgVDEwPiYgdmFsdWUpIHsKLSAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07Ci0gIHN0
cmVhbSA8PCAiKCIgPDwgZ2V0PDA+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDwxPih2YWx1ZSkKLSAg
ICAgICAgIDw8ICIsICI8PCBnZXQ8Mj4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDM+KHZhbHVlKQot
ICAgICAgICAgPDwgIiwgIjw8IGdldDw0Pih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8NT4odmFsdWUp
Ci0gICAgICAgICA8PCAiLCAiPDwgZ2V0PDY+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDw3Pih2YWx1
ZSkKLSAgICAgICAgIDw8ICIsICI8PCBnZXQ8OD4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDk+KHZh
bHVlKSA8PCAiKSI7Ci0gIHJldHVybiBzdHJlYW0uc3RyKCk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX0NPTUJJTkUKLQotLy8gVmVyaWZpZXMgdGhhdCBhIHNlcXVlbmNlIGdlbmVyYXRlZCBi
eSB0aGUgZ2VuZXJhdG9yIGFuZCBhY2Nlc3NlZAotLy8gdmlhIHRoZSBpdGVyYXRvciBvYmplY3Qg
bWF0Y2hlcyB0aGUgZXhwZWN0ZWQgb25lIHVzaW5nIEdvb2dsZSBUZXN0Ci0vLyBhc3NlcnRpb25z
LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgotdm9pZCBWZXJpZnlHZW5lcmF0b3Io
Y29uc3QgUGFyYW1HZW5lcmF0b3I8VD4mIGdlbmVyYXRvciwKLSAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFQgKCZleHBlY3RlZF92YWx1ZXMpW05dKSB7Ci0gIHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFQ+OjppdGVyYXRvciBpdCA9IGdlbmVyYXRvci5iZWdpbigpOwotICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IE47ICsraSkgewotICAgIEFTU0VSVF9GQUxTRShpdCA9PSBnZW5lcmF0b3IuZW5k
KCkpCi0gICAgICAgIDw8ICJBdCBlbGVtZW50ICIgPDwgaSA8PCAiIHdoZW4gYWNjZXNzaW5nIHZp
YSBhbiBpdGVyYXRvciAiCi0gICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhlIGNvcHkgY29uc3Ry
dWN0b3IuXG4iOwotICAgIC8vIFdlIGNhbm5vdCB1c2UgRVhQRUNUX0VRKCkgaGVyZSBhcyB0aGUg
dmFsdWVzIG1heSBiZSB0dXBsZXMsCi0gICAgLy8gd2hpY2ggZG9uJ3Qgc3VwcG9ydCA8PC4KLSAg
ICBFWFBFQ1RfVFJVRShleHBlY3RlZF92YWx1ZXNbaV0gPT0gKml0KQotICAgICAgICA8PCAid2hl
cmUgaSBpcyAiIDw8IGkKLSAgICAgICAgPDwgIiwgZXhwZWN0ZWRfdmFsdWVzW2ldIGlzICIgPDwg
UHJpbnRWYWx1ZShleHBlY3RlZF92YWx1ZXNbaV0pCi0gICAgICAgIDw8ICIsICppdCBpcyAiIDw8
IFByaW50VmFsdWUoKml0KQotICAgICAgICA8PCAiLCBhbmQgJ2l0JyBpcyBhbiBpdGVyYXRvciBj
cmVhdGVkIHdpdGggdGhlIGNvcHkgY29uc3RydWN0b3IuXG4iOwotICAgIGl0Kys7Ci0gIH0KLSAg
RVhQRUNUX1RSVUUoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKQotICAgICAgICA8PCAiQXQgdGhlIHBy
ZXN1bWVkIGVuZCBvZiBzZXF1ZW5jZSB3aGVuIGFjY2Vzc2luZyB2aWEgYW4gaXRlcmF0b3IgIgot
ICAgICAgICA8PCAiY3JlYXRlZCB3aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9yLlxuIjsKLQotICAv
LyBUZXN0IHRoZSBpdGVyYXRvciBhc3NpZ25tZW50LiBUaGUgZm9sbG93aW5nIGxpbmVzIHZlcmlm
eSB0aGF0Ci0gIC8vIHRoZSBzZXF1ZW5jZSBhY2Nlc3NlZCB2aWEgYW4gaXRlcmF0b3IgaW5pdGlh
bGl6ZWQgdmlhIHRoZQotICAvLyBhc3NpZ25tZW50IG9wZXJhdG9yIChhcyBvcHBvc2VkIHRvIGEg
Y29weSBjb25zdHJ1Y3RvcikgbWF0Y2hlcwotICAvLyBqdXN0IHRoZSBzYW1lLgotICBpdCA9IGdl
bmVyYXRvci5iZWdpbigpOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IE47ICsraSkgewotICAg
IEFTU0VSVF9GQUxTRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpCi0gICAgICAgIDw8ICJBdCBlbGVt
ZW50ICIgPDwgaSA8PCAiIHdoZW4gYWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRvciAiCi0gICAgICAg
IDw8ICJjcmVhdGVkIHdpdGggdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuXG4iOwotICAgIEVYUEVD
VF9UUlVFKGV4cGVjdGVkX3ZhbHVlc1tpXSA9PSAqaXQpCi0gICAgICAgIDw8ICJ3aGVyZSBpIGlz
ICIgPDwgaQotICAgICAgICA8PCAiLCBleHBlY3RlZF92YWx1ZXNbaV0gaXMgIiA8PCBQcmludFZh
bHVlKGV4cGVjdGVkX3ZhbHVlc1tpXSkKLSAgICAgICAgPDwgIiwgKml0IGlzICIgPDwgUHJpbnRW
YWx1ZSgqaXQpCi0gICAgICAgIDw8ICIsIGFuZCAnaXQnIGlzIGFuIGl0ZXJhdG9yIGNyZWF0ZWQg
d2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rvci5cbiI7Ci0gICAgaXQrKzsKLSAgfQotICBFWFBFQ1Rf
VFJVRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpCi0gICAgICAgIDw8ICJBdCB0aGUgcHJlc3VtZWQg
ZW5kIG9mIHNlcXVlbmNlIHdoZW4gYWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRvciAiCi0gICAgICAg
IDw8ICJjcmVhdGVkIHdpdGggdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuXG4iOwotfQotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShjb25zdCBQYXJh
bUdlbmVyYXRvcjxUPiYgZ2VuZXJhdG9yKSB7Ci0gIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ+
OjppdGVyYXRvciBpdCA9IGdlbmVyYXRvci5iZWdpbigpOwotICBFWFBFQ1RfVFJVRShpdCA9PSBn
ZW5lcmF0b3IuZW5kKCkpOwotCi0gIGl0ID0gZ2VuZXJhdG9yLmJlZ2luKCk7Ci0gIEVYUEVDVF9U
UlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSk7Ci19Ci0KLS8vIEdlbmVyYXRvciB0ZXN0cy4gVGhl
eSB0ZXN0IHRoYXQgZWFjaCBvZiB0aGUgcHJvdmlkZWQgZ2VuZXJhdG9yIGZ1bmN0aW9ucwotLy8g
Z2VuZXJhdGVzIGFuIGV4cGVjdGVkIHNlcXVlbmNlIG9mIHZhbHVlcy4gVGhlIGdlbmVyYWwgdGVz
dCBwYXR0ZXJuCi0vLyBpbnN0YW50aWF0ZXMgYSBnZW5lcmF0b3IgdXNpbmcgb25lIG9mIHRoZSBn
ZW5lcmF0b3IgZnVuY3Rpb25zLAotLy8gY2hlY2tzIHRoZSBzZXF1ZW5jZSBwcm9kdWNlZCBieSB0
aGUgZ2VuZXJhdG9yIHVzaW5nIGl0cyBpdGVyYXRvciBBUEksCi0vLyBhbmQgdGhlbiByZXNldHMg
dGhlIGl0ZXJhdG9yIGJhY2sgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VxdWVuY2UKLS8vIGFu
ZCBjaGVja3MgdGhlIHNlcXVlbmNlIGFnYWluLgotCi0vLyBUZXN0cyB0aGF0IGl0ZXJhdG9ycyBw
cm9kdWNlZCBieSBnZW5lcmF0b3IgZnVuY3Rpb25zIGNvbmZvcm0gdG8gdGhlCi0vLyBGb3J3YXJk
SXRlcmF0b3IgY29uY2VwdC4KLVRFU1QoSXRlcmF0b3JUZXN0LCBQYXJhbUl0ZXJhdG9yQ29uZm9y
bXNUb0ZvcndhcmRJdGVyYXRvckNvbmNlcHQpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50
PiBnZW4gPSBSYW5nZSgwLCAxMCk7Ci0gIFBhcmFtR2VuZXJhdG9yPGludD46Oml0ZXJhdG9yIGl0
ID0gZ2VuLmJlZ2luKCk7Ci0KLSAgLy8gVmVyaWZpZXMgdGhhdCBpdGVyYXRvciBpbml0aWFsaXph
dGlvbiB3b3JrcyBhcyBleHBlY3RlZC4KLSAgUGFyYW1HZW5lcmF0b3I8aW50Pjo6aXRlcmF0b3Ig
aXQyID0gaXQ7Ci0gIEVYUEVDVF9UUlVFKCppdCA9PSAqaXQyKSA8PCAiSW5pdGlhbGl6ZWQgaXRl
cmF0b3JzIG11c3QgcG9pbnQgdG8gdGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICJlbGVtZW50IHNhbWUgYXMgaXRzIHNvdXJjZSBwb2ludHMgdG8iOwotCi0gIC8vIFZlcmlmaWVz
IHRoYXQgaXRlcmF0b3IgYXNzaWdubWVudCB3b3JrcyBhcyBleHBlY3RlZC4KLSAgaXQrKzsKLSAg
RVhQRUNUX0ZBTFNFKCppdCA9PSAqaXQyKTsKLSAgaXQyID0gaXQ7Ci0gIEVYUEVDVF9UUlVFKCpp
dCA9PSAqaXQyKSA8PCAiQXNzaWduZWQgaXRlcmF0b3JzIG11c3QgcG9pbnQgdG8gdGhlICIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJlbGVtZW50IHNhbWUgYXMgaXRzIHNvdXJjZSBw
b2ludHMgdG8iOwotCi0gIC8vIFZlcmlmaWVzIHRoYXQgcHJlZml4IG9wZXJhdG9yKysoKSByZXR1
cm5zICp0aGlzLgotICBFWFBFQ1RfRVEoJml0LCAmKCsraXQpKSA8PCAiUmVzdWx0IG9mIHRoZSBw
cmVmaXggb3BlcmF0b3IrKyBtdXN0IGJlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
InJlZmVyIHRvIHRoZSBvcmlnaW5hbCBvYmplY3QiOwotCi0gIC8vIFZlcmlmaWVzIHRoYXQgdGhl
IHJlc3VsdCBvZiB0aGUgcG9zdGZpeCBvcGVyYXRvcisrIHBvaW50cyB0byB0aGUgdmFsdWUKLSAg
Ly8gcG9pbnRlZCB0byBieSB0aGUgb3JpZ2luYWwgaXRlcmF0b3IuCi0gIGludCBvcmlnaW5hbF92
YWx1ZSA9ICppdDsgIC8vIEhhdmUgdG8gY29tcHV0ZSBpdCBvdXRzaWRlIG9mIG1hY3JvIGNhbGwg
dG8gYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5hZmZlY3RlZCBieSB0aGUg
cGFyYW1ldGVyIGV2YWx1YXRpb24gb3JkZXIuCi0gIEVYUEVDVF9FUShvcmlnaW5hbF92YWx1ZSwg
KihpdCsrKSk7Ci0KLSAgLy8gVmVyaWZpZXMgdGhhdCBwcmVmaXggYW5kIHBvc3RmaXggb3BlcmF0
b3IrKygpIGFkdmFuY2UgYW4gaXRlcmF0b3IKLSAgLy8gYWxsIHRoZSBzYW1lLgotICBpdDIgPSBp
dDsKLSAgaXQrKzsKLSAgKytpdDI7Ci0gIEVYUEVDVF9UUlVFKCppdCA9PSAqaXQyKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBSYW5nZSgpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCi1U
RVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VXaXRoRGVmYXVsdFN0ZXApIHsKLSAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAzKTsKLSAgY29uc3QgaW50IGV4cGVjdGVkX3Zh
bHVlc1tdID0gezAsIDEsIDJ9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1
ZXMpOwotfQotCi0vLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgUmFuZ2UoKSBnZW5lcmF0ZXMgdGhl
IHNpbmdsZSBlbGVtZW50IHNlcXVlbmNlCi0vLyBhcyBleHBlY3RlZCB3aGVuIHByb3ZpZGVkIHdp
dGggcmFuZ2UgbGltaXRzIHRoYXQgYXJlIGVxdWFsLgotVEVTVChSYW5nZVRlc3QsIEludFJhbmdl
U2luZ2xlVmFsdWUpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgw
LCAxKTsKLSAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezB9OwotICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBFZGdlIGNhc2UuIFRlc3RzIHRo
YXQgUmFuZ2UoKSB3aXRoIGdlbmVyYXRlcyBlbXB0eSBzZXF1ZW5jZSB3aGVuCi0vLyBzdXBwbGll
ZCB3aXRoIGFuIGVtcHR5IHJhbmdlLgotVEVTVChSYW5nZVRlc3QsIEludFJhbmdlRW1wdHkpIHsK
LSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAwKTsKLSAgVmVyaWZ5
R2VuZXJhdG9ySXNFbXB0eShnZW4pOwotfQotCi0vLyBUZXN0cyB0aGF0IFJhbmdlKCkgd2l0aCBj
dXN0b20gc3RlcCAoZ3JlYXRlciB0aGVuIG9uZSkgZ2VuZXJhdGVzCi0vLyB0aGUgZXhwZWN0ZWQg
c2VxdWVuY2UuCi1URVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VXaXRoQ3VzdG9tU3RlcCkgewotICBj
b25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDksIDMpOwotICBjb25zdCBp
bnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MCwgMywgNn07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4s
IGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUmFuZ2UoKSB3aXRoIGN1c3Rv
bSBzdGVwIChncmVhdGVyIHRoZW4gb25lKSBnZW5lcmF0ZXMKLS8vIHRoZSBleHBlY3RlZCBzZXF1
ZW5jZSB3aGVuIHRoZSBsYXN0IGVsZW1lbnQgZG9lcyBub3QgZmFsbCBvbiB0aGUKLS8vIHVwcGVy
IHJhbmdlIGxpbWl0LiBTZXF1ZW5jZXMgZ2VuZXJhdGVkIGJ5IFJhbmdlKCkgbXVzdCBub3QgaGF2
ZQotLy8gZWxlbWVudHMgYmV5b25kIHRoZSByYW5nZSBsaW1pdHMuCi1URVNUKFJhbmdlVGVzdCwg
SW50UmFuZ2VXaXRoQ3VzdG9tU3RlcE92ZXJVcHBlckJvdW5kKSB7Ci0gIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgNCwgMyk7Ci0gIGNvbnN0IGludCBleHBlY3RlZF92
YWx1ZXNbXSA9IHswLCAzfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVz
KTsKLX0KLQotLy8gVmVyaWZpZXMgdGhhdCBSYW5nZSB3b3JrcyB3aXRoIHVzZXItZGVmaW5lZCB0
eXBlcyB0aGF0IGRlZmluZQotLy8gY29weSBjb25zdHJ1Y3Rvciwgb3BlcmF0b3I9KCksIG9wZXJh
dG9yKygpLCBhbmQgb3BlcmF0b3I8KCkuCi1jbGFzcyBEb2dBZGRlciB7Ci0gcHVibGljOgotICBl
eHBsaWNpdCBEb2dBZGRlcihjb25zdCBjaGFyKiBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7
fQotICBEb2dBZGRlcihjb25zdCBEb2dBZGRlciYgb3RoZXIpIDogdmFsdWVfKG90aGVyLnZhbHVl
Xy5jX3N0cigpKSB7fQotCi0gIERvZ0FkZGVyIG9wZXJhdG9yPShjb25zdCBEb2dBZGRlciYgb3Ro
ZXIpIHsKLSAgICBpZiAodGhpcyAhPSAmb3RoZXIpCi0gICAgICB2YWx1ZV8gPSBvdGhlci52YWx1
ZV87Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0gIERvZ0FkZGVyIG9wZXJhdG9yKyhjb25zdCBE
b2dBZGRlciYgb3RoZXIpIGNvbnN0IHsKLSAgICBNZXNzYWdlIG1zZzsKLSAgICBtc2cgPDwgdmFs
dWVfLmNfc3RyKCkgPDwgb3RoZXIudmFsdWVfLmNfc3RyKCk7Ci0gICAgcmV0dXJuIERvZ0FkZGVy
KG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKTsKLSAgfQotICBib29sIG9wZXJhdG9yPChjb25zdCBE
b2dBZGRlciYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gdmFsdWVfIDwgb3RoZXIudmFsdWVf
OwotICB9Ci0gIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZyYgdmFsdWUoKSBjb25z
dCB7IHJldHVybiB2YWx1ZV87IH0KLQotIHByaXZhdGU6Ci0gIDo6dGVzdGluZzo6aW50ZXJuYWw6
OlN0cmluZyB2YWx1ZV87Ci19OwotCi1URVNUKFJhbmdlVGVzdCwgV29ya3NXaXRoQUN1c3RvbVR5
cGUpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8RG9nQWRkZXI+IGdlbiA9Ci0gICAgICBSYW5n
ZShEb2dBZGRlcigiY2F0IiksIERvZ0FkZGVyKCJjYXRkb2dkb2ciKSwgRG9nQWRkZXIoImRvZyIp
KTsKLSAgUGFyYW1HZW5lcmF0b3I8RG9nQWRkZXI+OjppdGVyYXRvciBpdCA9IGdlbi5iZWdpbigp
OwotCi0gIEFTU0VSVF9GQUxTRShpdCA9PSBnZW4uZW5kKCkpOwotICBFWFBFQ1RfU1RSRVEoImNh
dCIsIGl0LT52YWx1ZSgpLmNfc3RyKCkpOwotCi0gIEFTU0VSVF9GQUxTRSgrK2l0ID09IGdlbi5l
bmQoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiY2F0ZG9nIiwgaXQtPnZhbHVlKCkuY19zdHIoKSk7Ci0K
LSAgRVhQRUNUX1RSVUUoKytpdCA9PSBnZW4uZW5kKCkpOwotfQotCi1jbGFzcyBJbnRXcmFwcGVy
IHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IEludFdyYXBwZXIoaW50IGFfdmFsdWUpIDogdmFsdWVf
KGFfdmFsdWUpIHt9Ci0gIEludFdyYXBwZXIoY29uc3QgSW50V3JhcHBlciYgb3RoZXIpIDogdmFs
dWVfKG90aGVyLnZhbHVlXykge30KLQotICBJbnRXcmFwcGVyIG9wZXJhdG9yPShjb25zdCBJbnRX
cmFwcGVyJiBvdGhlcikgewotICAgIHZhbHVlXyA9IG90aGVyLnZhbHVlXzsKLSAgICByZXR1cm4g
KnRoaXM7Ci0gIH0KLSAgLy8gb3BlcmF0b3IrKCkgYWRkcyBhIGRpZmZlcmVudCB0eXBlLgotICBJ
bnRXcmFwcGVyIG9wZXJhdG9yKyhpbnQgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIEludFdyYXBwZXIo
dmFsdWVfICsgb3RoZXIpOyB9Ci0gIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEludFdyYXBwZXImIG90
aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIHZhbHVlXyA8IG90aGVyLnZhbHVlXzsKLSAgfQotICBp
bnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KLQotIHByaXZhdGU6Ci0gIGludCB2
YWx1ZV87Ci19OwotCi1URVNUKFJhbmdlVGVzdCwgV29ya3NXaXRoQUN1c3RvbVR5cGVXaXRoRGlm
ZmVyZW50SW5jcmVtZW50VHlwZSkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxJbnRXcmFwcGVy
PiBnZW4gPSBSYW5nZShJbnRXcmFwcGVyKDApLCBJbnRXcmFwcGVyKDIpKTsKLSAgUGFyYW1HZW5l
cmF0b3I8SW50V3JhcHBlcj46Oml0ZXJhdG9yIGl0ID0gZ2VuLmJlZ2luKCk7Ci0KLSAgQVNTRVJU
X0ZBTFNFKGl0ID09IGdlbi5lbmQoKSk7Ci0gIEVYUEVDVF9FUSgwLCBpdC0+dmFsdWUoKSk7Ci0K
LSAgQVNTRVJUX0ZBTFNFKCsraXQgPT0gZ2VuLmVuZCgpKTsKLSAgRVhQRUNUX0VRKDEsIGl0LT52
YWx1ZSgpKTsKLQotICBFWFBFQ1RfVFJVRSgrK2l0ID09IGdlbi5lbmQoKSk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgVmFsdWVzSW4oKSB3aXRoIGFuIGFycmF5IHBhcmFtZXRlciBnZW5lcmF0ZXMKLS8v
IHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KLVRFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJbkFycmF5
KSB7Ci0gIGludCBhcnJheVtdID0gezMsIDUsIDh9OwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxp
bnQ+IGdlbiA9IFZhbHVlc0luKGFycmF5KTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgYXJyYXkp
OwotfQotCi0vLyBUZXN0cyB0aGF0IFZhbHVlc0luKCkgd2l0aCBhIGNvbnN0IGFycmF5IHBhcmFt
ZXRlciBnZW5lcmF0ZXMKLS8vIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KLVRFU1QoVmFsdWVzSW5U
ZXN0LCBWYWx1ZXNJbkNvbnN0QXJyYXkpIHsKLSAgY29uc3QgaW50IGFycmF5W10gPSB7MywgNSwg
OH07Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4oYXJyYXkpOwot
ICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBhcnJheSk7Ci19Ci0KLS8vIEVkZ2UgY2FzZS4gVGVzdHMg
dGhhdCBWYWx1ZXNJbigpIHdpdGggYW4gYXJyYXkgcGFyYW1ldGVyIGNvbnRhaW5pbmcgYQotLy8g
c2luZ2xlIGVsZW1lbnQgZ2VuZXJhdGVzIHRoZSBzaW5nbGUgZWxlbWVudCBzZXF1ZW5jZS4KLVRF
U1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJblNpbmdsZUVsZW1lbnRBcnJheSkgewotICBpbnQgYXJy
YXlbXSA9IHs0Mn07Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4o
YXJyYXkpOwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBhcnJheSk7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgVmFsdWVzSW4oKSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlIGZvciBhbiBTVEwK
LS8vIGNvbnRhaW5lciAodmVjdG9yKS4KLVRFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJblZlY3Rv
cikgewotICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8aW50PiBDb250YWluZXJUeXBlOwotICBDb250
YWluZXJUeXBlIHZhbHVlczsKLSAgdmFsdWVzLnB1c2hfYmFjaygzKTsKLSAgdmFsdWVzLnB1c2hf
YmFjayg1KTsKLSAgdmFsdWVzLnB1c2hfYmFjayg4KTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8
aW50PiBnZW4gPSBWYWx1ZXNJbih2YWx1ZXMpOwotCi0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1
ZXNbXSA9IHszLCA1LCA4fTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVz
KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQg
c2VxdWVuY2UuCi1URVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5JdGVyYXRvclJhbmdlKSB7Ci0g
IHR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxpbnQ+IENvbnRhaW5lclR5cGU7Ci0gIENvbnRhaW5lclR5
cGUgdmFsdWVzOwotICB2YWx1ZXMucHVzaF9iYWNrKDMpOwotICB2YWx1ZXMucHVzaF9iYWNrKDUp
OwotICB2YWx1ZXMucHVzaF9iYWNrKDgpOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdl
biA9IFZhbHVlc0luKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOwotCi0gIGNvbnN0IGlu
dCBleHBlY3RlZF92YWx1ZXNbXSA9IHszLCA1LCA4fTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwg
ZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFZhbHVlc0lu
KCkgcHJvdmlkZWQgd2l0aCBhbiBpdGVyYXRvciByYW5nZSBzcGVjaWZ5aW5nIGEKLS8vIHNpbmds
ZSB2YWx1ZSBnZW5lcmF0ZXMgYSBzaW5nbGUtZWxlbWVudCBzZXF1ZW5jZS4KLVRFU1QoVmFsdWVz
SW5UZXN0LCBWYWx1ZXNJblNpbmdsZUVsZW1lbnRJdGVyYXRvclJhbmdlKSB7Ci0gIHR5cGVkZWYg
OjpzdGQ6OnZlY3RvcjxpbnQ+IENvbnRhaW5lclR5cGU7Ci0gIENvbnRhaW5lclR5cGUgdmFsdWVz
OwotICB2YWx1ZXMucHVzaF9iYWNrKDQyKTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBn
ZW4gPSBWYWx1ZXNJbih2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKLQotICBjb25zdCBp
bnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7NDJ9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBl
Y3RlZF92YWx1ZXMpOwotfQotCi0vLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSBw
cm92aWRlZCB3aXRoIGFuIGVtcHR5IGl0ZXJhdG9yIHJhbmdlCi0vLyBnZW5lcmF0ZXMgYW4gZW1w
dHkgc2VxdWVuY2UuCi1URVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5FbXB0eUl0ZXJhdG9yUmFu
Z2UpIHsKLSAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGludD4gQ29udGFpbmVyVHlwZTsKLSAgQ29u
dGFpbmVyVHlwZSB2YWx1ZXM7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFs
dWVzSW4odmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7Ci0KLSAgVmVyaWZ5R2VuZXJhdG9y
SXNFbXB0eShnZW4pOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBWYWx1ZXMoKSBnZW5lcmF0ZXMg
dGhlIGV4cGVjdGVkIHNlcXVlbmNlLgotVEVTVChWYWx1ZXNUZXN0LCBWYWx1ZXNXb3Jrcykgewot
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlcygzLCA1LCA4KTsKLQotICBj
b25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MywgNSwgOH07Ci0gIFZlcmlmeUdlbmVyYXRv
cihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVmFsdWVzKCkgZ2Vu
ZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZXMgZnJvbSBlbGVtZW50cyBvZgotLy8gZGlmZmVy
ZW50IHR5cGVzIGNvbnZlcnRpYmxlIHRvIFBhcmFtR2VuZXJhdG9yJ3MgcGFyYW1ldGVyIHR5cGUu
Ci1URVNUKFZhbHVlc1Rlc3QsIFZhbHVlc1dvcmtzRm9yVmFsdWVzT2ZDb21wYXRpYmxlVHlwZXMp
IHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8ZG91YmxlPiBnZW4gPSBWYWx1ZXMoMywgNS4wZiwg
OC4wKTsKLQotICBjb25zdCBkb3VibGUgZXhwZWN0ZWRfdmFsdWVzW10gPSB7My4wLCA1LjAsIDgu
MH07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLVRFU1Qo
VmFsdWVzVGVzdCwgVmFsdWVzV29ya3NGb3JNYXhMZW5ndGhMaXN0KSB7Ci0gIGNvbnN0IFBhcmFt
R2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzKAotICAgICAgMTAsIDIwLCAzMCwgNDAsIDUwLCA2
MCwgNzAsIDgwLCA5MCwgMTAwLAotICAgICAgMTEwLCAxMjAsIDEzMCwgMTQwLCAxNTAsIDE2MCwg
MTcwLCAxODAsIDE5MCwgMjAwLAotICAgICAgMjEwLCAyMjAsIDIzMCwgMjQwLCAyNTAsIDI2MCwg
MjcwLCAyODAsIDI5MCwgMzAwLAotICAgICAgMzEwLCAzMjAsIDMzMCwgMzQwLCAzNTAsIDM2MCwg
MzcwLCAzODAsIDM5MCwgNDAwLAotICAgICAgNDEwLCA0MjAsIDQzMCwgNDQwLCA0NTAsIDQ2MCwg
NDcwLCA0ODAsIDQ5MCwgNTAwKTsKLQotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7
Ci0gICAgICAxMCwgMjAsIDMwLCA0MCwgNTAsIDYwLCA3MCwgODAsIDkwLCAxMDAsCi0gICAgICAx
MTAsIDEyMCwgMTMwLCAxNDAsIDE1MCwgMTYwLCAxNzAsIDE4MCwgMTkwLCAyMDAsCi0gICAgICAy
MTAsIDIyMCwgMjMwLCAyNDAsIDI1MCwgMjYwLCAyNzAsIDI4MCwgMjkwLCAzMDAsCi0gICAgICAz
MTAsIDMyMCwgMzMwLCAzNDAsIDM1MCwgMzYwLCAzNzAsIDM4MCwgMzkwLCA0MDAsCi0gICAgICA0
MTAsIDQyMCwgNDMwLCA0NDAsIDQ1MCwgNDYwLCA0NzAsIDQ4MCwgNDkwLCA1MDB9OwotICBWZXJp
ZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBFZGdlIGNhc2UgdGVz
dC4gVGVzdHMgdGhhdCBzaW5nbGUtcGFyYW1ldGVyIFZhbHVlcygpIGdlbmVyYXRlcyB0aGUgc2Vx
dWVuY2UKLS8vIHdpdGggdGhlIHNpbmdsZSB2YWx1ZS4KLVRFU1QoVmFsdWVzVGVzdCwgVmFsdWVz
V2l0aFNpbmdsZVBhcmFtZXRlcikgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9
IFZhbHVlcyg0Mik7Ci0KLSAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezQyfTsKLSAg
VmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBCb29sKCkgZ2VuZXJhdGVzIHNlcXVlbmNlIChmYWxzZSwgdHJ1ZSkuCi1URVNUKEJvb2xUZXN0
LCBCb29sV29ya3MpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8Ym9vbD4gZ2VuID0gQm9vbCgp
OwotCi0gIGNvbnN0IGJvb2wgZXhwZWN0ZWRfdmFsdWVzW10gPSB7ZmFsc2UsIHRydWV9OwotICBW
ZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0jaWYgR1RFU1RfSEFT
X0NPTUJJTkUKLQotLy8gVGVzdHMgdGhhdCBDb21iaW5lKCkgd2l0aCB0d28gcGFyYW1ldGVycyBn
ZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgotVEVTVChDb21iaW5lVGVzdCwgQ29tYmlu
ZVdpdGhUd29QYXJhbWV0ZXJzKSB7Ci0gIGNvbnN0IGNoYXIqIGZvbyA9ICJmb28iOwotICBjb25z
dCBjaGFyKiBiYXIgPSAiYmFyIjsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8Y29uc3Qg
Y2hhciosIGludD4gPiBnZW4gPQotICAgICAgQ29tYmluZShWYWx1ZXMoZm9vLCBiYXIpLCBWYWx1
ZXMoMywgNCkpOwotCi0gIHR1cGxlPGNvbnN0IGNoYXIqLCBpbnQ+IGV4cGVjdGVkX3ZhbHVlc1td
ID0gewotICAgIG1ha2VfdHVwbGUoZm9vLCAzKSwgbWFrZV90dXBsZShmb28sIDQpLAotICAgIG1h
a2VfdHVwbGUoYmFyLCAzKSwgbWFrZV90dXBsZShiYXIsIDQpfTsKLSAgVmVyaWZ5R2VuZXJhdG9y
KGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBDb21iaW5lKCkgd2l0
aCB0aHJlZSBwYXJhbWV0ZXJzIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCi1URVNU
KENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFRocmVlUGFyYW1ldGVycykgewotICBjb25zdCBQYXJh
bUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUoVmFsdWVzKDAs
IDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsdWVzKDMsIDQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDUsIDYpKTsKLSAgdHVwbGU8aW50LCBp
bnQsIGludD4gZXhwZWN0ZWRfdmFsdWVzW10gPSB7Ci0gICAgbWFrZV90dXBsZSgwLCAzLCA1KSwg
bWFrZV90dXBsZSgwLCAzLCA2KSwKLSAgICBtYWtlX3R1cGxlKDAsIDQsIDUpLCBtYWtlX3R1cGxl
KDAsIDQsIDYpLAotICAgIG1ha2VfdHVwbGUoMSwgMywgNSksIG1ha2VfdHVwbGUoMSwgMywgNiks
Ci0gICAgbWFrZV90dXBsZSgxLCA0LCA1KSwgbWFrZV90dXBsZSgxLCA0LCA2KX07Ci0gIFZlcmlm
eUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhl
IENvbWJpbmUoKSB3aXRoIHRoZSBmaXJzdCBwYXJhbWV0ZXIgZ2VuZXJhdGluZyBhIHNpbmdsZSB2
YWx1ZQotLy8gc2VxdWVuY2UgZ2VuZXJhdGVzIGEgc2VxdWVuY2Ugd2l0aCB0aGUgbnVtYmVyIG9m
IGVsZW1lbnRzIGVxdWFsIHRvIHRoZQotLy8gbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBzZXF1
ZW5jZSBnZW5lcmF0ZWQgYnkgdGhlIHNlY29uZCBwYXJhbWV0ZXIuCi1URVNUKENvbWJpbmVUZXN0
LCBDb21iaW5lV2l0aEZpcnN0UGFyYW1ldGVyU2luZ2xlVmFsdWUpIHsKLSAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoNDIpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVl
cygwLCAxKSk7Ci0KLSAgdHVwbGU8aW50LCBpbnQ+IGV4cGVjdGVkX3ZhbHVlc1tdID0ge21ha2Vf
dHVwbGUoNDIsIDApLCBtYWtlX3R1cGxlKDQyLCAxKX07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4s
IGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIENvbWJpbmUoKSB3aXRo
IHRoZSBzZWNvbmQgcGFyYW1ldGVyIGdlbmVyYXRpbmcgYSBzaW5nbGUgdmFsdWUKLS8vIHNlcXVl
bmNlIGdlbmVyYXRlcyBhIHNlcXVlbmNlIHdpdGggdGhlIG51bWJlciBvZiBlbGVtZW50cyBlcXVh
bCB0byB0aGUKLS8vIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgc2VxdWVuY2UgZ2VuZXJhdGVk
IGJ5IHRoZSBmaXJzdCBwYXJhbWV0ZXIuCi1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFNl
Y29uZFBhcmFtZXRlclNpbmdsZVZhbHVlKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxl
PGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUoVmFsdWVzKDAsIDEpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg0MikpOwotCi0g
IHR1cGxlPGludCwgaW50PiBleHBlY3RlZF92YWx1ZXNbXSA9IHttYWtlX3R1cGxlKDAsIDQyKSwg
bWFrZV90dXBsZSgxLCA0Mil9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1
ZXMpOwotfQotCi0vLyBUZXN0cyB0aGF0IHdoZW4gdGhlIGZpcnN0IHBhcmFtZXRlciBwcm9kdWNl
cyBhbiBlbXB0eSBzZXF1ZW5jZSwKLS8vIENvbWJpbmUoKSBwcm9kdWNlcyBhbiBlbXB0eSBzZXF1
ZW5jZSwgdG9vLgotVEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdpdGhGaXJzdFBhcmFtZXRlckVt
cHR5UmFuZ2UpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBpbnQ+ID4gZ2Vu
ID0gQ29tYmluZShSYW5nZSgwLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMCwgMSkpOwotICBWZXJpZnlHZW5lcmF0b3JJ
c0VtcHR5KGdlbik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgd2hlbiB0aGUgc2Vjb25kIHBhcmFtZXRl
ciBwcm9kdWNlcyBhbiBlbXB0eSBzZXF1ZW5jZSwKLS8vIENvbWJpbmUoKSBwcm9kdWNlcyBhbiBl
bXB0eSBzZXF1ZW5jZSwgdG9vLgotVEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdpdGhTZWNvbmRQ
YXJhbWV0ZXJFbXB0eVJhbmdlKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwg
aW50PiA+IGdlbiA9IENvbWJpbmUoVmFsdWVzKDAsIDEpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlKDEsIDEpKTsKLSAgVmVyaWZ5
R2VuZXJhdG9ySXNFbXB0eShnZW4pOwotfQotCi0vLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgY29t
YmluZSB3b3JrcyB3aXRoIHRoZSBtYXhpbXVtIG51bWJlcgotLy8gb2YgcGFyYW1ldGVycyBzdXBw
b3J0ZWQgYnkgR29vZ2xlIFRlc3QgKGN1cnJlbnRseSAxMCkuCi1URVNUKENvbWJpbmVUZXN0LCBD
b21iaW5lV2l0aE1heE51bWJlck9mUGFyYW1ldGVycykgewotICBjb25zdCBjaGFyKiBmb28gPSAi
Zm9vIjsKLSAgY29uc3QgY2hhciogYmFyID0gImJhciI7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9y
PHR1cGxlPGNvbnN0IGNoYXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUoVmFs
dWVzKGZvbywgYmFyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWx1ZXMoMSksIFZhbHVlcygyKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMyksIFZhbHVlcyg0KSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWx1ZXMoNSksIFZhbHVlcyg2KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNyksIFZhbHVlcyg4KSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoOSkpOwotCi0g
IHR1cGxlPGNvbnN0IGNoYXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50PgotICAgICAgZXhwZWN0ZWRfdmFsdWVzW10gPSB7bWFrZV90dXBsZShmb28sIDEsIDIs
IDMsIDQsIDUsIDYsIDcsIDgsIDkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZV90
dXBsZShiYXIsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkpfTsKLSAgVmVyaWZ5R2VuZXJhdG9y
KGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklO
RQotCi0vLyBUZXN0cyB0aGF0IGFuIGdlbmVyYXRvciBwcm9kdWNlcyBjb3JyZWN0IHNlcXVlbmNl
IGFmdGVyIGJlaW5nCi0vLyBhc3NpZ25lZCBmcm9tIGFub3RoZXIgZ2VuZXJhdG9yLgotVEVTVChQ
YXJhbUdlbmVyYXRvclRlc3QsIEFzc2lnbm1lbnRXb3JrcykgewotICBQYXJhbUdlbmVyYXRvcjxp
bnQ+IGdlbiA9IFZhbHVlcygxLCAyKTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4y
ID0gVmFsdWVzKDMsIDQpOwotICBnZW4gPSBnZW4yOwotCi0gIGNvbnN0IGludCBleHBlY3RlZF92
YWx1ZXNbXSA9IHszLCA0fTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVz
KTsKLX0KLQotLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIHRlc3RzIGFyZSBleHBhbmRl
ZCBhbmQgcnVuIGFzIHNwZWNpZmllZDoKLS8vIG9uZSB0ZXN0IHBlciBlbGVtZW50IGZyb20gdGhl
IHNlcXVlbmNlIHByb2R1Y2VkIGJ5IHRoZSBnZW5lcmF0b3IKLS8vIHNwZWNpZmllZCBpbiBJTlNU
QU5USUFURV9URVNUX0NBU0VfUC4gSXQgYWxzbyB2ZXJpZmllcyB0aGF0IHRoZSB0ZXN0J3MKLS8v
IGZpeHR1cmUgY29uc3RydWN0b3IsIFNldFVwKCksIGFuZCBUZWFyRG93bigpIGhhdmUgcnVuIGFu
ZCBoYXZlIGJlZW4KLS8vIHN1cHBsaWVkIHdpdGggdGhlIGNvcnJlY3QgcGFyYW1ldGVycy4KLQot
Ly8gVGhlIHVzZSBvZiBlbnZpcm9ubWVudCBvYmplY3QgYWxsb3dzIGRldGVjdGlvbiBvZiB0aGUg
Y2FzZSB3aGVyZSBubyB0ZXN0Ci0vLyBjYXNlIGZ1bmN0aW9uYWxpdHkgaXMgcnVuIGF0IGFsbC4g
SW4gdGhpcyBjYXNlIFRlc3RDYXNlVGVhckRvd24gd2lsbCBub3QKLS8vIGJlIGFibGUgdG8gZGV0
ZWN0IG1pc3NpbmcgdGVzdHMsIG5hdHVyYWxseS4KLXRlbXBsYXRlIDxpbnQga0V4cGVjdGVkQ2Fs
bHM+Ci1jbGFzcyBUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50IDogcHVibGljIDo6dGVzdGluZzo6
RW52aXJvbm1lbnQgewotIHB1YmxpYzoKLSAgc3RhdGljIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1l
bnQqIEluc3RhbmNlKCkgewotICAgIHN0YXRpYyBUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50KiBp
bnN0YW5jZSA9IG5ldyBUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50OwotICAgIHJldHVybiBpbnN0
YW5jZTsKLSAgfQotCi0gIHZvaWQgRml4dHVyZUNvbnN0cnVjdG9yRXhlY3V0ZWQoKSB7IGZpeHR1
cmVfY29uc3RydWN0b3JfY291bnRfKys7IH0KLSAgdm9pZCBTZXRVcEV4ZWN1dGVkKCkgeyBzZXRf
dXBfY291bnRfKys7IH0KLSAgdm9pZCBUZWFyRG93bkV4ZWN1dGVkKCkgeyB0ZWFyX2Rvd25fY291
bnRfKys7IH0KLSAgdm9pZCBUZXN0Qm9keUV4ZWN1dGVkKCkgeyB0ZXN0X2JvZHlfY291bnRfKys7
IH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgLy8gSWYgYWxsIE11bHRpcGxl
VGVzdEdlbmVyYXRpb25UZXN0IHRlc3RzIGhhdmUgYmVlbiBkZS1zZWxlY3RlZAotICAgIC8vIGJ5
IHRoZSBmaWx0ZXIgZmxhZywgdGhlIGZvbGxvd2luZyBjaGVja3MgbWFrZSBubyBzZW5zZS4KLSAg
ICBib29sIHBlcmZvcm1fY2hlY2sgPSBmYWxzZTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
a0V4cGVjdGVkQ2FsbHM7ICsraSkgewotICAgICAgTWVzc2FnZSBtc2c7Ci0gICAgICBtc2cgPDwg
IlRlc3RzRXhwYW5kZWRBbmRSdW4vIiA8PCBpOwotICAgICAgaWYgKFVuaXRUZXN0T3B0aW9uczo6
RmlsdGVyTWF0Y2hlc1Rlc3QoCi0gICAgICAgICAgICAgIlRlc3RFeHBhbnNpb25Nb2R1bGUvTXVs
dGlwbGVUZXN0R2VuZXJhdGlvblRlc3QiLAotICAgICAgICAgICAgICBtc2cuR2V0U3RyaW5nKCku
Y19zdHIoKSkpIHsKLSAgICAgICAgcGVyZm9ybV9jaGVjayA9IHRydWU7Ci0gICAgICB9Ci0gICAg
fQotICAgIGlmIChwZXJmb3JtX2NoZWNrKSB7Ci0gICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2Fs
bHMsIGZpeHR1cmVfY29uc3RydWN0b3JfY291bnRfKQotICAgICAgICAgIDw8ICJGaXh0dXJlIGNv
bnN0cnVjdG9yIG9mIFBhcmFtVGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZSAiCi0gICAgICAg
ICAgPDwgImhhcyBub3QgYmVlbiBydW4gYXMgZXhwZWN0ZWQuIjsKLSAgICAgIEVYUEVDVF9FUShr
RXhwZWN0ZWRDYWxscywgc2V0X3VwX2NvdW50XykKLSAgICAgICAgICA8PCAiRml4dHVyZSBTZXRV
cCBtZXRob2Qgb2YgUGFyYW1UZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlICIKLSAgICAgICAg
ICA8PCAiaGFzIG5vdCBiZWVuIHJ1biBhcyBleHBlY3RlZC4iOwotICAgICAgRVhQRUNUX0VRKGtF
eHBlY3RlZENhbGxzLCB0ZWFyX2Rvd25fY291bnRfKQotICAgICAgICAgIDw8ICJGaXh0dXJlIFRl
YXJEb3duIG1ldGhvZCBvZiBQYXJhbVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgotICAg
ICAgICAgIDw8ICJoYXMgbm90IGJlZW4gcnVuIGFzIGV4cGVjdGVkLiI7Ci0gICAgICBFWFBFQ1Rf
RVEoa0V4cGVjdGVkQ2FsbHMsIHRlc3RfYm9keV9jb3VudF8pCi0gICAgICAgICAgPDwgIlRlc3Qg
aW4gUGFyYW1UZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlICIKLSAgICAgICAgICA8PCAiaGFz
IG5vdCBiZWVuIHJ1biBhcyBleHBlY3RlZC4iOwotICAgIH0KLSAgfQotIHByaXZhdGU6Ci0gIFRl
c3RHZW5lcmF0aW9uRW52aXJvbm1lbnQoKSA6IGZpeHR1cmVfY29uc3RydWN0b3JfY291bnRfKDAp
LCBzZXRfdXBfY291bnRfKDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWFy
X2Rvd25fY291bnRfKDApLCB0ZXN0X2JvZHlfY291bnRfKDApIHt9Ci0KLSAgaW50IGZpeHR1cmVf
Y29uc3RydWN0b3JfY291bnRfOwotICBpbnQgc2V0X3VwX2NvdW50XzsKLSAgaW50IHRlYXJfZG93
bl9jb3VudF87Ci0gIGludCB0ZXN0X2JvZHlfY291bnRfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTl8oVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudCk7Ci19OwotCi1jb25zdCBp
bnQgdGVzdF9nZW5lcmF0aW9uX3BhcmFtc1tdID0gezM2LCA0MiwgNzJ9OwotCi1jbGFzcyBUZXN0
R2VuZXJhdGlvblRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsKLSBwdWJsaWM6Ci0g
IGVudW0gewotICAgIFBBUkFNRVRFUl9DT1VOVCA9Ci0gICAgICAgIHNpemVvZih0ZXN0X2dlbmVy
YXRpb25fcGFyYW1zKS9zaXplb2YodGVzdF9nZW5lcmF0aW9uX3BhcmFtc1swXSkKLSAgfTsKLQot
ICB0eXBlZGVmIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQ8UEFSQU1FVEVSX0NPVU5UPiBFbnZp
cm9ubWVudDsKLQotICBUZXN0R2VuZXJhdGlvblRlc3QoKSB7Ci0gICAgRW52aXJvbm1lbnQ6Oklu
c3RhbmNlKCktPkZpeHR1cmVDb25zdHJ1Y3RvckV4ZWN1dGVkKCk7Ci0gICAgY3VycmVudF9wYXJh
bWV0ZXJfID0gR2V0UGFyYW0oKTsKLSAgfQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAg
RW52aXJvbm1lbnQ6Okluc3RhbmNlKCktPlNldFVwRXhlY3V0ZWQoKTsKLSAgICBFWFBFQ1RfRVEo
Y3VycmVudF9wYXJhbWV0ZXJfLCBHZXRQYXJhbSgpKTsKLSAgfQotICB2aXJ0dWFsIHZvaWQgVGVh
ckRvd24oKSB7Ci0gICAgRW52aXJvbm1lbnQ6Okluc3RhbmNlKCktPlRlYXJEb3duRXhlY3V0ZWQo
KTsKLSAgICBFWFBFQ1RfRVEoY3VycmVudF9wYXJhbWV0ZXJfLCBHZXRQYXJhbSgpKTsKLSAgfQot
Ci0gIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7Ci0gICAgYm9vbCBhbGxfdGVzdHNfaW5f
dGVzdF9jYXNlX3NlbGVjdGVkID0gdHJ1ZTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgUEFS
QU1FVEVSX0NPVU5UOyArK2kpIHsKLSAgICAgIE1lc3NhZ2UgdGVzdF9uYW1lOwotICAgICAgdGVz
dF9uYW1lIDw8ICJUZXN0c0V4cGFuZGVkQW5kUnVuLyIgPDwgaTsKLSAgICAgIGlmICggIVVuaXRU
ZXN0T3B0aW9uczo6RmlsdGVyTWF0Y2hlc1Rlc3QoCi0gICAgICAgICAgICAgICAgIlRlc3RFeHBh
bnNpb25Nb2R1bGUvTXVsdGlwbGVUZXN0R2VuZXJhdGlvblRlc3QiLAotICAgICAgICAgICAgICAg
IHRlc3RfbmFtZS5HZXRTdHJpbmcoKSkpIHsKLSAgICAgICAgYWxsX3Rlc3RzX2luX3Rlc3RfY2Fz
ZV9zZWxlY3RlZCA9IGZhbHNlOwotICAgICAgfQotICAgIH0KLSAgICBFWFBFQ1RfVFJVRShhbGxf
dGVzdHNfaW5fdGVzdF9jYXNlX3NlbGVjdGVkKQotICAgICAgICA8PCAiV2hlbiBydW5uaW5nIHRo
ZSBUZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlIGFsbCBvZiBpdHMgdGVzdHNcbiIKLSAgICAg
ICAgPDwgIm11c3QgYmUgc2VsZWN0ZWQgYnkgdGhlIGZpbHRlciBmbGFnIGZvciB0aGUgdGVzdCBj
YXNlIHRvIHBhc3MuXG4iCi0gICAgICAgIDw8ICJJZiBub3QgYWxsIG9mIHRoZW0gYXJlIGVuYWJs
ZWQsIHdlIGNhbid0IHJlbGlhYmx5IGNvbmNsdWRlXG4iCi0gICAgICAgIDw8ICJ0aGF0IHRoZSBj
b3JyZWN0IG51bWJlciBvZiB0ZXN0cyBoYXZlIGJlZW4gZ2VuZXJhdGVkLiI7Ci0KLSAgICBjb2xs
ZWN0ZWRfcGFyYW1ldGVyc18uY2xlYXIoKTsKLSAgfQotCi0gIHN0YXRpYyB2b2lkIFRlYXJEb3du
VGVzdENhc2UoKSB7Ci0gICAgdmVjdG9yPGludD4gZXhwZWN0ZWRfdmFsdWVzKHRlc3RfZ2VuZXJh
dGlvbl9wYXJhbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZ2VuZXJh
dGlvbl9wYXJhbXMgKyBQQVJBTUVURVJfQ09VTlQpOwotICAgIC8vIFRlc3QgZXhlY3V0aW9uIG9y
ZGVyIGlzIG5vdCBndWFyYW50ZWVkIGJ5IEdvb2dsZSBUZXN0LAotICAgIC8vIHNvIHRoZSBvcmRl
ciBvZiB2YWx1ZXMgaW4gY29sbGVjdGVkX3BhcmFtZXRlcnNfIGNhbiBiZQotICAgIC8vIGRpZmZl
cmVudCBhbmQgd2UgaGF2ZSB0byBzb3J0IHRvIGNvbXBhcmUuCi0gICAgc29ydChleHBlY3RlZF92
YWx1ZXMuYmVnaW4oKSwgZXhwZWN0ZWRfdmFsdWVzLmVuZCgpKTsKLSAgICBzb3J0KGNvbGxlY3Rl
ZF9wYXJhbWV0ZXJzXy5iZWdpbigpLCBjb2xsZWN0ZWRfcGFyYW1ldGVyc18uZW5kKCkpOwotCi0g
ICAgRVhQRUNUX1RSVUUoY29sbGVjdGVkX3BhcmFtZXRlcnNfID09IGV4cGVjdGVkX3ZhbHVlcyk7
Ci0gIH0KLSBwcm90ZWN0ZWQ6Ci0gIGludCBjdXJyZW50X3BhcmFtZXRlcl87Ci0gIHN0YXRpYyB2
ZWN0b3I8aW50PiBjb2xsZWN0ZWRfcGFyYW1ldGVyc187Ci0KLSBwcml2YXRlOgotICBHVEVTVF9E
SVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRlc3RHZW5lcmF0aW9uVGVzdCk7Ci19OwotdmVjdG9y
PGludD4gVGVzdEdlbmVyYXRpb25UZXN0Ojpjb2xsZWN0ZWRfcGFyYW1ldGVyc187Ci0KLVRFU1Rf
UChUZXN0R2VuZXJhdGlvblRlc3QsIFRlc3RzRXhwYW5kZWRBbmRSdW4pIHsKLSAgRW52aXJvbm1l
bnQ6Okluc3RhbmNlKCktPlRlc3RCb2R5RXhlY3V0ZWQoKTsKLSAgRVhQRUNUX0VRKGN1cnJlbnRf
cGFyYW1ldGVyXywgR2V0UGFyYW0oKSk7Ci0gIGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5wdXNoX2Jh
Y2soR2V0UGFyYW0oKSk7Ci19Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUChUZXN0RXhwYW5zaW9u
TW9kdWxlLCBUZXN0R2VuZXJhdGlvblRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1
ZXNJbih0ZXN0X2dlbmVyYXRpb25fcGFyYW1zKSk7Ci0KLS8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0
aGF0IHRoZSBlbGVtZW50IHNlcXVlbmNlICh0aGlyZCBwYXJhbWV0ZXIgb2YKLS8vIElOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKSBpcyBldmFsdWF0ZWQgaW4gSW5pdEdvb2dsZVRlc3QoKSBhbmQgbmVp
dGhlciBhdAotLy8gdGhlIGNhbGwgc2l0ZSBvZiBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBub3Ig
aW4gUlVOX0FMTF9URVNUUygpLiAgRm9yCi0vLyB0aGF0LCB3ZSBkZWNsYXJlIHBhcmFtX3ZhbHVl
XyB0byBiZSBhIHN0YXRpYyBtZW1iZXIgb2YKLS8vIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0IGFu
ZCBpbml0aWFsaXplIGl0IHRvIDAuICBXZSBzZXQgaXQgdG8gMSBpbgotLy8gbWFpbigpLCBqdXN0
IGJlZm9yZSBpbnZvY2F0aW9uIG9mIEluaXRHb29nbGVUZXN0KCkuICBBZnRlciBjYWxsaW5nCi0v
LyBJbml0R29vZ2xlVGVzdCgpLCB3ZSBzZXQgdGhlIHZhbHVlIHRvIDIuICBJZiB0aGUgc2VxdWVu
Y2UgaXMgZXZhbHVhdGVkCi0vLyBiZWZvcmUgb3IgYWZ0ZXIgSW5pdEdvb2dsZVRlc3QsIElOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QIHdpbGwgY3JlYXRlIGEKLS8vIHRlc3Qgd2l0aCBwYXJhbWV0ZXIg
b3RoZXIgdGhhbiAxLCBhbmQgdGhlIHRlc3QgYm9keSB3aWxsIGZhaWwgdGhlCi0vLyBhc3NlcnRp
b24uCi1jbGFzcyBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFt
PGludD4gewotIHB1YmxpYzoKLSAgc3RhdGljIGludCBwYXJhbV92YWx1ZSgpIHsgcmV0dXJuIHBh
cmFtX3ZhbHVlXzsgfQotICBzdGF0aWMgdm9pZCBzZXRfcGFyYW1fdmFsdWUoaW50IHBhcmFtX3Zh
bHVlKSB7IHBhcmFtX3ZhbHVlXyA9IHBhcmFtX3ZhbHVlOyB9Ci0KLSBwcml2YXRlOgotICBzdGF0
aWMgaW50IHBhcmFtX3ZhbHVlXzsKLX07Ci1pbnQgR2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnBh
cmFtX3ZhbHVlXyA9IDA7Ci0KLVRFU1RfUChHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCwgR2VuZXJh
dG9yc0V2YWx1YXRlZEluTWFpbikgewotICBFWFBFQ1RfRVEoMSwgR2V0UGFyYW0oKSk7Ci19Ci1J
TlNUQU5USUFURV9URVNUX0NBU0VfUChHZW5FdmFsTW9kdWxlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBW
YWx1ZXMoR2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnBhcmFtX3ZhbHVlKCkpKTsKLQotLy8gVGVz
dHMgdGhhdCBnZW5lcmF0b3JzIGRlZmluZWQgaW4gYSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5p
dCBhcmUKLS8vIGZ1bmN0aW9uYWwuIEdlbmVyYXRvciBleHRlcm5fZ2VuIGlzIGRlZmluZWQgaW4g
Z3Rlc3QtcGFyYW0tdGVzdF90ZXN0Mi5jYy4KLWV4dGVybiBQYXJhbUdlbmVyYXRvcjxpbnQ+IGV4
dGVybl9nZW47Ci1jbGFzcyBFeHRlcm5hbEdlbmVyYXRvclRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQ
YXJhbTxpbnQ+IHt9OwotVEVTVF9QKEV4dGVybmFsR2VuZXJhdG9yVGVzdCwgRXh0ZXJuYWxHZW5l
cmF0b3IpIHsKLSAgLy8gU2VxdWVuY2UgcHJvZHVjZWQgYnkgZXh0ZXJuX2dlbiBjb250YWlucyBv
bmx5IGEgc2luZ2xlIHZhbHVlCi0gIC8vIHdoaWNoIHdlIHZlcmlmeSBoZXJlLgotICBFWFBFQ1Rf
RVEoR2V0UGFyYW0oKSwgMzMpOwotfQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoRXh0ZXJuYWxH
ZW5lcmF0b3JNb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBFeHRlcm5hbEdlbmVyYXRv
clRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5fZ2VuKTsKLQotLy8gVGVzdHMg
dGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBkZWZpbmVkIGluIG9uZSB0cmFu
c2xhdGlvbgotLy8gdW5pdCBhbmQgaW5zdGFudGlhdGVkIGluIGFub3RoZXIuIFRoaXMgdGVzdCB3
aWxsIGJlIGluc3RhbnRpYXRlZCBpbgotLy8gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0Mi5jYy4gRXh0
ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCBmaXh0dXJlIGNsYXNzIGlzCi0vLyBkZWZpbmVkIGluIGd0
ZXN0LXBhcmFtLXRlc3RfdGVzdC5oLgotVEVTVF9QKEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3Qs
IElzTXVsdGlwbGVPZjMzKSB7Ci0gIEVYUEVDVF9FUSgwLCBHZXRQYXJhbSgpICUgMzMpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGluc3RhbnRp
YXRlZCB3aXRoIG11bHRpcGxlCi0vLyBnZW5lcmF0b3JzLgotY2xhc3MgTXVsdGlwbGVJbnN0YW50
aWF0aW9uVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4ge307Ci1URVNUX1AoTXVsdGlw
bGVJbnN0YW50aWF0aW9uVGVzdCwgQWxsb3dzTXVsdGlwbGVJbnN0YW5jZXMpIHsKLX0KLUlOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMSwgTXVsdGlwbGVJbnN0YW50aWF0aW9uVGVzdCwg
VmFsdWVzKDEsIDIpKTsKLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMiwgTXVsdGlw
bGVJbnN0YW50aWF0aW9uVGVzdCwgUmFuZ2UoMywgNSkpOwotCi0vLyBUZXN0cyB0aGF0IGEgcGFy
YW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGluc3RhbnRpYXRlZAotLy8gaW4gbXVsdGlwbGUg
dHJhbnNsYXRpb24gdW5pdHMuIFRoaXMgdGVzdCB3aWxsIGJlIGluc3RhbnRpYXRlZAotLy8gaGVy
ZSBhbmQgaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0Mi5jYy4KLS8vIEluc3RhbnRpYXRpb25Jbk11
bHRpcGxlVHJhbnNsYXRpb25Vbml0c1Rlc3QgZml4dHVyZSBjbGFzcwotLy8gaXMgZGVmaW5lZCBp
biBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaC4KLVRFU1RfUChJbnN0YW50aWF0aW9uSW5NdWx0aXBs
ZVRyYW5zbGFpb25Vbml0c1Rlc3QsIElzTXVsdGlwbGVPZjQyKSB7Ci0gIEVYUEVDVF9FUSgwLCBH
ZXRQYXJhbSgpICUgNDIpOwotfQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2UxLAot
ICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9u
VW5pdHNUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDQyLCA0MioyKSk7Ci0K
LS8vIFRlc3RzIHRoYXQgZWFjaCBpdGVyYXRpb24gb2YgcGFyYW1ldGVyaXplZCB0ZXN0IHJ1bnMg
aW4gYSBzZXBhcmF0ZSB0ZXN0Ci0vLyBvYmplY3QuCi1jbGFzcyBTZXBhcmF0ZUluc3RhbmNlVGVz
dCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4gewotIHB1YmxpYzoKLSAgU2VwYXJhdGVJbnN0
YW5jZVRlc3QoKSA6IGNvdW50XygwKSB7fQotCi0gIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENh
c2UoKSB7Ci0gICAgRVhQRUNUX0dFKGdsb2JhbF9jb3VudF8sIDIpCi0gICAgICAgIDw8ICJJZiBz
b21lIChidXQgbm90IGFsbCkgU2VwYXJhdGVJbnN0YW5jZVRlc3QgdGVzdHMgaGF2ZSBiZWVuICIK
LSAgICAgICAgPDwgImZpbHRlcmVkIG91dCB0aGlzIHRlc3Qgd2lsbCBmYWlsLiBNYWtlIHN1cmUg
dGhhdCBhbGwgIgotICAgICAgICA8PCAiR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QgYXJlIHNlbGVj
dGVkIG9yIGRlLXNlbGVjdGVkIHRvZ2V0aGVyICIKLSAgICAgICAgPDwgImJ5IHRoZSB0ZXN0IGZp
bHRlci4iOwotICB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIGludCBjb3VudF87Ci0gIHN0YXRpYyBpbnQg
Z2xvYmFsX2NvdW50XzsKLX07Ci1pbnQgU2VwYXJhdGVJbnN0YW5jZVRlc3Q6Omdsb2JhbF9jb3Vu
dF8gPSAwOwotCi1URVNUX1AoU2VwYXJhdGVJbnN0YW5jZVRlc3QsIFRlc3RzUnVuSW5TZXBhcmF0
ZUluc3RhbmNlcykgewotICBFWFBFQ1RfRVEoMCwgY291bnRfKyspOwotICBnbG9iYWxfY291bnRf
Kys7Ci19Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUChGb3VyRWxlbVNlcXVlbmNlLCBTZXBhcmF0
ZUluc3RhbmNlVGVzdCwgUmFuZ2UoMSwgNCkpOwotCi0vLyBUZXN0cyB0aGF0IGFsbCBpbnN0YW50
aWF0aW9ucyBvZiBhIHRlc3QgaGF2ZSBuYW1lZCBhcHByb3ByaWF0ZWx5LiBUZXN0Ci0vLyBkZWZp
bmVkIHdpdGggVEVTVF9QKFRlc3RDYXNlTmFtZSwgVGVzdE5hbWUpIGFuZCBpbnN0YW50aWF0ZWQg
d2l0aAotLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2VOYW1lLCBUZXN0Q2FzZU5h
bWUsIGdlbmVyYXRvcikgbXVzdCBiZSBuYW1lZAotLy8gU2VxdWVuY2VOYW1lL1Rlc3RDYXNlTmFt
ZS5UZXN0TmFtZS9pLCB3aGVyZSBpIGlzIHRoZSAwLWJhc2VkIGluZGV4IG9mIHRoZQotLy8gc2Vx
dWVuY2UgZWxlbWVudCB1c2VkIHRvIGluc3RhbnRpYXRlIHRoZSB0ZXN0LgotY2xhc3MgTmFtaW5n
VGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4ge307Ci0KLVRFU1RfUChOYW1pbmdUZXN0
LCBUZXN0c0FyZU5hbWVkQXBwcm9wcmlhdGVseSkgewotICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJ
bmZvKiBjb25zdCB0ZXN0X2luZm8gPQotICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0
YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOwotCi0gIEVYUEVDVF9TVFJFUSgiWmVyb1RvRml2
ZVNlcXVlbmNlL05hbWluZ1Rlc3QiLCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOwotCi0g
IE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgIlRlc3RzQXJlTmFtZWRBcHByb3ByaWF0ZWx5LyIgPDwg
R2V0UGFyYW0oKTsKLSAgRVhQRUNUX1NUUkVRKG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpLCB0ZXN0
X2luZm8tPm5hbWUoKSk7Ci19Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFplcm9Ub0ZpdmVT
ZXF1ZW5jZSwgTmFtaW5nVGVzdCwgUmFuZ2UoMCwgNSkpOwotCi0jZW5kaWYgIC8vIEdURVNUX0hB
U19QQVJBTV9URVNUCi0KLVRFU1QoQ29tcGlsZVRlc3QsIENvbWJpbmVJc0RlZmluZWRPbmx5V2hl
bkd0ZXN0SGFzUGFyYW1UZXN0SXNEZWZpbmVkKSB7Ci0jaWYgR1RFU1RfSEFTX0NPTUJJTkUgJiYg
IUdURVNUX0hBU19QQVJBTV9URVNUCi0gIEZBSUwoKSA8PCAiR1RFU1RfSEFTX0NPTUJJTkUgaXMg
ZGVmaW5lZCB3aGlsZSBHVEVTVF9IQVNfUEFSQU1fVEVTVCBpcyBub3RcbiIKLSNlbmRpZgotfQot
Ci1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSNpZiBHVEVTVF9IQVNfUEFSQU1f
VEVTVAotICAvLyBVc2VkIGluIFRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UuCi0gIEFkZEds
b2JhbFRlc3RFbnZpcm9ubWVudChUZXN0R2VuZXJhdGlvblRlc3Q6OkVudmlyb25tZW50OjpJbnN0
YW5jZSgpKTsKLSAgLy8gVXNlZCBpbiBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCB0ZXN0IGNhc2Uu
IFRlc3RzIHRoYXQgdGhlIHVwZGF0ZWQgdmFsdWUKLSAgLy8gd2lsbCBiZSBwaWNrZWQgdXAgZm9y
IGluc3RhbnRpYXRpbmcgdGVzdHMgaW4gR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QuCi0gIEdlbmVy
YXRvckV2YWx1YXRpb25UZXN0OjpzZXRfcGFyYW1fdmFsdWUoMSk7Ci0jZW5kaWYgIC8vIEdURVNU
X0hBU19QQVJBTV9URVNUCi0KLSAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJn
dik7Ci0KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotICAvLyBVc2VkIGluIEdlbmVyYXRvckV2
YWx1YXRpb25UZXN0IHRlc3QgY2FzZS4gVGVzdHMgdGhhdCB2YWx1ZSB1cGRhdGVkCi0gIC8vIGhl
cmUgd2lsbCBOT1QgYmUgdXNlZCBmb3IgaW5zdGFudGlhdGluZyB0ZXN0cyBpbgotICAvLyBHZW5l
cmF0b3JFdmFsdWF0aW9uVGVzdC4KLSAgR2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnNldF9wYXJh
bV92YWx1ZSgyKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotICByZXR1cm4g
UlVOX0FMTF9URVNUUygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGI3Zjk0OTM2MTM3ZGZjNWYzZjJkNTdmYTQwZGNhZjdhMTVjYjZiNWUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAg
QEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
Ly8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBB
dXRob3JzOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQotLy8KLS8vIFRoZSBHb29nbGUg
QysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKLS8vCi0vLyBUaGlzIGhlYWRlciBm
aWxlIHByb3ZpZGVzIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkKLS8vIGZv
ciB0ZXN0aW5nIEdvb2dsZSBUZXN0IGl0c2VsZi4KLQotI2lmbmRlZiBHVEVTVF9URVNUX0dURVNU
X1BBUkFNX1RFU1RfVEVTVF9IXwotI2RlZmluZSBHVEVTVF9URVNUX0dURVNUX1BBUkFNX1RFU1Rf
VEVTVF9IXwotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2lmIEdURVNUX0hBU19QQVJB
TV9URVNUCi0KLS8vIFRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyBkZWZpbml0aW9uIGFuZCBpbnN0
YW50aWF0aW9uIG9mIGEgdGVzdAotLy8gaW4gc2VwYXJhdGUgdHJhbnNsYXRpb24gdW5pdHMuCi1j
bGFzcyBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdp
dGhQYXJhbTxpbnQ+IHt9OwotCi0vLyBUZXN0IGZpeHR1cmUgZm9yIHRlc3RpbmcgaW5zdGFudGlh
dGlvbiBvZiBhIHRlc3QgaW4gbXVsdGlwbGUKLS8vIHRyYW5zbGF0aW9uIHVuaXRzLgotY2xhc3Mg
SW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0Ci0gICAgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4ge307Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X1BBUkFNX1RFU1QKLQotI2VuZGlmICAvLyBHVEVTVF9URVNUX0dURVNUX1BBUkFNX1RFU1RfVEVT
VF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wb3J0
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBvcnRfdGVzdC5j
YwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzcyNTg2MDJmYTVjZjVhNzc5OTQ3Y2Q0
MjdlMjBlOTA5ZmM5MjU4ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYwor
KysgL2Rldi9udWxsCkBAIC0xLDEwMTggKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2ds
ZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcnM6IHZsYWRsQGdvb2dsZS5jb20gKFZs
YWQgTG9zZXYpLCB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRoaXMgZmls
ZSB0ZXN0cyB0aGUgaW50ZXJuYWwgY3Jvc3MtcGxhdGZvcm0gc3VwcG9ydCB1dGlsaXRpZXMuCi0K
LSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+Ci0KLSNpbmNsdWRlIDxzdGRp
by5oPgotCi0jaWYgR1RFU1RfT1NfTUFDCi0jaW5jbHVkZSA8dGltZS5oPgotI2VuZGlmICAvLyBH
VEVTVF9PU19NQUMKLQotI2luY2x1ZGUgPHV0aWxpdHk+ICAvLyBGb3Igc3RkOjpwYWlyIGFuZCBz
dGQ6Om1ha2VfcGFpci4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3Qtc3BpLmg+Ci0KLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5p
dCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBj
b21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJl
IHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQg
YSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBp
bgotLy8gaGlzIGNvZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVk
ZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9O
XwotCi11c2luZyBzdGQ6Om1ha2VfcGFpcjsKLXVzaW5nIHN0ZDo6cGFpcjsKLQotbmFtZXNwYWNl
IHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8gVGVzdHMgdGhhdCB0aGUgZWxl
bWVudF90eXBlIHR5cGVkZWYgaXMgYXZhaWxhYmxlIGluIHNjb3BlZF9wdHIgYW5kIHJlZmVycwot
Ly8gdG8gdGhlIHBhcmFtZXRlciB0eXBlLgotVEVTVChTY29wZWRQdHJUZXN0LCBEZWZpbmVzRWxl
bWVudFR5cGUpIHsKLSAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCwgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6c2NvcGVkX3B0cjxpbnQ+OjplbGVtZW50X3R5cGU+KCk7Ci19Ci0KLS8vIFRPRE8odmxhZGxA
Z29vZ2xlLmNvbSk6IEltcGxlbWVudCBUSEUgUkVTVCBvZiBzY29wZWRfcHRyIHRlc3RzLgotCi1U
RVNUKEd0ZXN0Q2hlY2tTeW50YXhUZXN0LCBCZWhhdmVzTGlrZUFTaW5nbGVTdGF0ZW1lbnQpIHsK
LSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgR1RFU1RfQ0hFQ0tfKGZhbHNlKSA8PCAiVGhpcyBz
aG91bGQgbmV2ZXIgYmUgZXhlY3V0ZWQ7ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJJ
dCdzIGEgY29tcGlsYXRpb24gdGVzdCBvbmx5LiI7Ci0KLSAgaWYgKEFsd2F5c1RydWUoKSkKLSAg
ICBHVEVTVF9DSEVDS18odHJ1ZSk7Ci0gIGVsc2UKLSAgICA7ICAvLyBOT0xJTlQKLQotICBpZiAo
QWx3YXlzRmFsc2UoKSkKLSAgICA7ICAvLyBOT0xJTlQKLSAgZWxzZQotICAgIEdURVNUX0NIRUNL
Xyh0cnVlKSA8PCAiIjsKLX0KLQotVEVTVChHdGVzdENoZWNrU3ludGF4VGVzdCwgV29ya3NXaXRo
U3dpdGNoKSB7Ci0gIHN3aXRjaCAoMCkgewotICAgIGNhc2UgMToKLSAgICAgIGJyZWFrOwotICAg
IGRlZmF1bHQ6Ci0gICAgICBHVEVTVF9DSEVDS18odHJ1ZSk7Ci0gIH0KLQotICBzd2l0Y2goMCkK
LSAgICBjYXNlIDA6Ci0gICAgICBHVEVTVF9DSEVDS18odHJ1ZSkgPDwgIkNoZWNrIGZhaWxlZCBp
biBzd2l0Y2ggY2FzZSI7Ci19Ci0KLSNpZiBHVEVTVF9PU19NQUMKLXZvaWQqIFRocmVhZEZ1bmMo
dm9pZCogZGF0YSkgewotICBwdGhyZWFkX211dGV4X3QqIG11dGV4ID0gc3RhdGljX2Nhc3Q8cHRo
cmVhZF9tdXRleF90Kj4oZGF0YSk7Ci0gIHB0aHJlYWRfbXV0ZXhfbG9jayhtdXRleCk7Ci0gIHB0
aHJlYWRfbXV0ZXhfdW5sb2NrKG11dGV4KTsKLSAgcmV0dXJuIE5VTEw7Ci19Ci0KLVRFU1QoR2V0
VGhyZWFkQ291bnRUZXN0LCBSZXR1cm5zQ29ycmVjdFZhbHVlKSB7Ci0gIEVYUEVDVF9FUSgxVSwg
R2V0VGhyZWFkQ291bnQoKSk7Ci0gIHB0aHJlYWRfbXV0ZXhfdCBtdXRleDsKLSAgcHRocmVhZF9h
dHRyX3QgIGF0dHI7Ci0gIHB0aHJlYWRfdCAgICAgICB0aHJlYWRfaWQ7Ci0KLSAgLy8gVE9ETyh2
bGFkbEBnb29nbGUuY29tKTogdHVybiBtdXRleCBpbnRvIGludGVybmFsOjpNdXRleCBmb3IgYXV0
b21hdGljCi0gIC8vIGRlc3RydWN0aW9uLgotICBwdGhyZWFkX211dGV4X2luaXQoJm11dGV4LCBO
VUxMKTsKLSAgcHRocmVhZF9tdXRleF9sb2NrKCZtdXRleCk7Ci0gIEFTU0VSVF9FUSgwLCBwdGhy
ZWFkX2F0dHJfaW5pdCgmYXR0cikpOwotICBBU1NFUlRfRVEoMCwgcHRocmVhZF9hdHRyX3NldGRl
dGFjaHN0YXRlKCZhdHRyLCBQVEhSRUFEX0NSRUFURV9KT0lOQUJMRSkpOwotCi0gIGNvbnN0IGlu
dCBzdGF0dXMgPSBwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkX2lkLCAmYXR0ciwgJlRocmVhZEZ1bmMs
ICZtdXRleCk7Ci0gIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0dHJfZGVzdHJveSgmYXR0cikpOwot
ICBBU1NFUlRfRVEoMCwgc3RhdHVzKTsKLSAgRVhQRUNUX0VRKDJVLCBHZXRUaHJlYWRDb3VudCgp
KTsKLSAgcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4KTsKLQotICB2b2lkKiBkdW1teTsKLSAg
QVNTRVJUX0VRKDAsIHB0aHJlYWRfam9pbih0aHJlYWRfaWQsICZkdW1teSkpOwotCi0gIC8vIE1h
Y09TIFggbWF5IG5vdCBpbW1lZGlhdGVseSByZXBvcnQgdGhlIHVwZGF0ZWQgdGhyZWFkIGNvdW50
IGFmdGVyCi0gIC8vIGpvaW5pbmcgYSB0aHJlYWQsIGNhdXNpbmcgZmxha2luZXNzIGluIHRoaXMg
dGVzdC4gVG8gY291bnRlciB0aGF0LCB3ZQotICAvLyB3YWl0IGZvciB1cCB0byAuNSBzZWNvbmRz
IGZvciB0aGUgT1MgdG8gcmVwb3J0IHRoZSBjb3JyZWN0IHZhbHVlLgotICBmb3IgKGludCBpID0g
MDsgaSA8IDU7ICsraSkgewotICAgIGlmIChHZXRUaHJlYWRDb3VudCgpID09IDEpCi0gICAgICBi
cmVhazsKLQotICAgIFNsZWVwTWlsbGlzZWNvbmRzKDEwMCk7Ci0gIH0KLSAgRVhQRUNUX0VRKDFV
LCBHZXRUaHJlYWRDb3VudCgpKTsKLSAgcHRocmVhZF9tdXRleF9kZXN0cm95KCZtdXRleCk7Ci19
Ci0jZWxzZQotVEVTVChHZXRUaHJlYWRDb3VudFRlc3QsIFJldHVybnNaZXJvV2hlblVuYWJsZVRv
Q291bnRUaHJlYWRzKSB7Ci0gIEVYUEVDVF9FUSgwVSwgR2V0VGhyZWFkQ291bnQoKSk7Ci19Ci0j
ZW5kaWYgIC8vIEdURVNUX09TX01BQwotCi1URVNUKEd0ZXN0Q2hlY2tEZWF0aFRlc3QsIERpZXNX
aXRoQ29ycmVjdE91dHB1dE9uRmFpbHVyZSkgewotICBjb25zdCBib29sIGFfZmFsc2VfY29uZGl0
aW9uID0gZmFsc2U7Ci0gIGNvbnN0IGNoYXIgcmVnZXhbXSA9Ci0jaWZkZWYgX01TQ19WRVIKLSAg
ICAgImd0ZXN0LXBvcnRfdGVzdFxcLmNjXFwoXFxkK1xcKToiCi0jZWxzZQotICAgICAiZ3Rlc3Qt
cG9ydF90ZXN0XFwuY2M6WzAtOV0rIgotI2VuZGlmICAvLyBfTVNDX1ZFUgotICAgICAiLiphX2Zh
bHNlX2NvbmRpdGlvbi4qRXh0cmEgaW5mby4qIjsKLQotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9S
VEVEKEdURVNUX0NIRUNLXyhhX2ZhbHNlX2NvbmRpdGlvbikgPDwgIkV4dHJhIGluZm8iLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2V4KTsKLX0KLQotI2lmIEdURVNUX0hBU19ERUFU
SF9URVNUCi0KLVRFU1QoR3Rlc3RDaGVja0RlYXRoVGVzdCwgTGl2ZXNTaWxlbnRseU9uU3VjY2Vz
cykgewotICBFWFBFQ1RfRVhJVCh7Ci0gICAgICBHVEVTVF9DSEVDS18odHJ1ZSkgPDwgIkV4dHJh
IGluZm8iOwotICAgICAgOjpzdGQ6OmNlcnIgPDwgIlN1Y2Nlc3NcbiI7Ci0gICAgICBleGl0KDAp
OyB9LAotICAgICAgOjp0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgwKSwgIlN1Y2Nlc3MiKTsKLX0K
LQotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi0jaWYgR1RFU1RfVVNFU19QT1NJ
WF9SRQotCi0jaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFN0
cj4KLWNsYXNzIFJFVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307Ci0KLS8vIERlZmlu
ZXMgU3RyaW5nVHlwZXMgYXMgdGhlIGxpc3Qgb2YgYWxsIHN0cmluZyB0eXBlcyB0aGF0IGNsYXNz
IFJFCi0vLyBzdXBwb3J0cy4KLXR5cGVkZWYgdGVzdGluZzo6VHlwZXM8Ci0gICAgOjpzdGQ6OnN0
cmluZywKLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotICAgIDo6c3RyaW5nLAotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotICAgIGNvbnN0IGNoYXIqPiBTdHJpbmdUeXBl
czsKLQotVFlQRURfVEVTVF9DQVNFKFJFVGVzdCwgU3RyaW5nVHlwZXMpOwotCi0vLyBUZXN0cyBS
RSdzIGltcGxpY2l0IGNvbnN0cnVjdG9ycy4KLVRZUEVEX1RFU1QoUkVUZXN0LCBJbXBsaWNpdENv
bnN0cnVjdG9yV29ya3MpIHsKLSAgY29uc3QgUkUgZW1wdHkoVHlwZVBhcmFtKCIiKSk7Ci0gIEVY
UEVDVF9TVFJFUSgiIiwgZW1wdHkucGF0dGVybigpKTsKLQotICBjb25zdCBSRSBzaW1wbGUoVHlw
ZVBhcmFtKCJoZWxsbyIpKTsKLSAgRVhQRUNUX1NUUkVRKCJoZWxsbyIsIHNpbXBsZS5wYXR0ZXJu
KCkpOwotCi0gIGNvbnN0IFJFIG5vcm1hbChUeXBlUGFyYW0oIi4qKFxcdyspIikpOwotICBFWFBF
Q1RfU1RSRVEoIi4qKFxcdyspIiwgbm9ybWFsLnBhdHRlcm4oKSk7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgUkUncyBjb25zdHJ1Y3RvcnMgcmVqZWN0IGludmFsaWQgcmVndWxhciBleHByZXNzaW9ucy4K
LVRZUEVEX1RFU1QoUkVUZXN0LCBSZWplY3RzSW52YWxpZFJlZ2V4KSB7Ci0gIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKHsKLSAgICBjb25zdCBSRSBpbnZhbGlkKFR5cGVQYXJhbSgiPyIpKTsKLSAg
fSwgIlwiP1wiIGlzIG5vdCBhIHZhbGlkIFBPU0lYIEV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lv
bi4iKTsKLX0KLQotLy8gVGVzdHMgUkU6OkZ1bGxNYXRjaCgpLgotVFlQRURfVEVTVChSRVRlc3Qs
IEZ1bGxNYXRjaFdvcmtzKSB7Ci0gIGNvbnN0IFJFIGVtcHR5KFR5cGVQYXJhbSgiIikpOwotICBF
WFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiIiksIGVtcHR5KSk7Ci0gIEVYUEVD
VF9GQUxTRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYSIpLCBlbXB0eSkpOwotCi0gIGNvbnN0
IFJFIHJlKFR5cGVQYXJhbSgiYS4qeiIpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaChU
eXBlUGFyYW0oImF6IiksIHJlKSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goVHlwZVBh
cmFtKCJheHl6IiksIHJlKSk7Ci0gIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJh
bSgiYmF6IiksIHJlKSk7Ci0gIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgi
YXp5IiksIHJlKSk7Ci19Ci0KLS8vIFRlc3RzIFJFOjpQYXJ0aWFsTWF0Y2goKS4KLVRZUEVEX1RF
U1QoUkVUZXN0LCBQYXJ0aWFsTWF0Y2hXb3JrcykgewotICBjb25zdCBSRSBlbXB0eShUeXBlUGFy
YW0oIiIpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oIiIpLCBl
bXB0eSkpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiYSIpLCBl
bXB0eSkpOwotCi0gIGNvbnN0IFJFIHJlKFR5cGVQYXJhbSgiYS4qeiIpKTsKLSAgRVhQRUNUX1RS
VUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oImF6IiksIHJlKSk7Ci0gIEVYUEVDVF9UUlVF
KFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCJheHl6IiksIHJlKSk7Ci0gIEVYUEVDVF9UUlVF
KFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCJiYXoiKSwgcmUpKTsKLSAgRVhQRUNUX1RSVUUo
UkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oImF6eSIpLCByZSkpOwotICBFWFBFQ1RfRkFMU0Uo
UkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oInp6YSIpLCByZSkpOwotfQotCi0jZW5kaWYgIC8v
IEdURVNUX0hBU19UWVBFRF9URVNUCi0KLSNlbGlmIEdURVNUX1VTRVNfU0lNUExFX1JFCi0KLVRF
U1QoSXNJblNldFRlc3QsIE51bENoYXJJc05vdEluQW55U2V0KSB7Ci0gIEVYUEVDVF9GQUxTRShJ
c0luU2V0KCdcMCcsICIiKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0luU2V0KCdcMCcsICJcMCIpKTsK
LSAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ1wwJywgImEiKSk7Ci19Ci0KLVRFU1QoSXNJblNldFRl
c3QsIFdvcmtzRm9yTm9uTnVsQ2hhcnMpIHsKLSAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ2EnLCAi
QWIiKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0luU2V0KCdjJywgIiIpKTsKLQotICBFWFBFQ1RfVFJV
RShJc0luU2V0KCdiJywgImJjZCIpKTsKLSAgRVhQRUNUX1RSVUUoSXNJblNldCgnYicsICJhYiIp
KTsKLX0KLQotVEVTVChJc0RpZ2l0VGVzdCwgSXNGYWxzZUZvck5vbkRpZ2l0KSB7Ci0gIEVYUEVD
VF9GQUxTRShJc0RpZ2l0KCdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzRGlnaXQoJyAnKSk7Ci0g
IEVYUEVDVF9GQUxTRShJc0RpZ2l0KCcrJykpOwotICBFWFBFQ1RfRkFMU0UoSXNEaWdpdCgnLScp
KTsKLSAgRVhQRUNUX0ZBTFNFKElzRGlnaXQoJy4nKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0RpZ2l0
KCdhJykpOwotfQotCi1URVNUKElzRGlnaXRUZXN0LCBJc1RydWVGb3JEaWdpdCkgewotICBFWFBF
Q1RfVFJVRShJc0RpZ2l0KCcwJykpOwotICBFWFBFQ1RfVFJVRShJc0RpZ2l0KCcxJykpOwotICBF
WFBFQ1RfVFJVRShJc0RpZ2l0KCc1JykpOwotICBFWFBFQ1RfVFJVRShJc0RpZ2l0KCc5JykpOwot
fQotCi1URVNUKElzUHVuY3RUZXN0LCBJc0ZhbHNlRm9yTm9uUHVuY3QpIHsKLSAgRVhQRUNUX0ZB
TFNFKElzUHVuY3QoJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNQdW5jdCgnICcpKTsKLSAgRVhQ
RUNUX0ZBTFNFKElzUHVuY3QoJ1xuJykpOwotICBFWFBFQ1RfRkFMU0UoSXNQdW5jdCgnYScpKTsK
LSAgRVhQRUNUX0ZBTFNFKElzUHVuY3QoJzAnKSk7Ci19Ci0KLVRFU1QoSXNQdW5jdFRlc3QsIElz
VHJ1ZUZvclB1bmN0KSB7Ci0gIGZvciAoY29uc3QgY2hhciogcCA9ICJeLSFcIiMkJSYnKCkqKywu
Lzo7PD0+P0BbXFxdX2B7fH1+IjsgKnA7IHArKykgewotICAgIEVYUEVDVF9QUkVEMShJc1B1bmN0
LCAqcCk7Ci0gIH0KLX0KLQotVEVTVChJc1JlcGVhdFRlc3QsIElzRmFsc2VGb3JOb25SZXBlYXRD
aGFyKSB7Ci0gIEVYUEVDVF9GQUxTRShJc1JlcGVhdCgnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJ
c1JlcGVhdCgnICcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCdhJykpOwotICBFWFBFQ1Rf
RkFMU0UoSXNSZXBlYXQoJzEnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1JlcGVhdCgnLScpKTsKLX0K
LQotVEVTVChJc1JlcGVhdFRlc3QsIElzVHJ1ZUZvclJlcGVhdENoYXIpIHsKLSAgRVhQRUNUX1RS
VUUoSXNSZXBlYXQoJz8nKSk7Ci0gIEVYUEVDVF9UUlVFKElzUmVwZWF0KCcqJykpOwotICBFWFBF
Q1RfVFJVRShJc1JlcGVhdCgnKycpKTsKLX0KLQotVEVTVChJc1doaXRlU3BhY2VUZXN0LCBJc0Zh
bHNlRm9yTm9uV2hpdGVTcGFjZSkgewotICBFWFBFQ1RfRkFMU0UoSXNXaGl0ZVNwYWNlKCdcMCcp
KTsKLSAgRVhQRUNUX0ZBTFNFKElzV2hpdGVTcGFjZSgnYScpKTsKLSAgRVhQRUNUX0ZBTFNFKElz
V2hpdGVTcGFjZSgnMScpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV2hpdGVTcGFjZSgnKycpKTsKLSAg
RVhQRUNUX0ZBTFNFKElzV2hpdGVTcGFjZSgnXycpKTsKLX0KLQotVEVTVChJc1doaXRlU3BhY2VU
ZXN0LCBJc1RydWVGb3JXaGl0ZVNwYWNlKSB7Ci0gIEVYUEVDVF9UUlVFKElzV2hpdGVTcGFjZSgn
ICcpKTsKLSAgRVhQRUNUX1RSVUUoSXNXaGl0ZVNwYWNlKCdcbicpKTsKLSAgRVhQRUNUX1RSVUUo
SXNXaGl0ZVNwYWNlKCdccicpKTsKLSAgRVhQRUNUX1RSVUUoSXNXaGl0ZVNwYWNlKCdcdCcpKTsK
LSAgRVhQRUNUX1RSVUUoSXNXaGl0ZVNwYWNlKCdcdicpKTsKLSAgRVhQRUNUX1RSVUUoSXNXaGl0
ZVNwYWNlKCdcZicpKTsKLX0KLQotVEVTVChJc1dvcmRDaGFyVGVzdCwgSXNGYWxzZUZvck5vbldv
cmRDaGFyKSB7Ci0gIEVYUEVDVF9GQUxTRShJc1dvcmRDaGFyKCdcMCcpKTsKLSAgRVhQRUNUX0ZB
TFNFKElzV29yZENoYXIoJysnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1dvcmRDaGFyKCcuJykpOwot
ICBFWFBFQ1RfRkFMU0UoSXNXb3JkQ2hhcignICcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV29yZENo
YXIoJ1xuJykpOwotfQotCi1URVNUKElzV29yZENoYXJUZXN0LCBJc1RydWVGb3JMZXR0ZXIpIHsK
LSAgRVhQRUNUX1RSVUUoSXNXb3JkQ2hhcignYScpKTsKLSAgRVhQRUNUX1RSVUUoSXNXb3JkQ2hh
cignYicpKTsKLSAgRVhQRUNUX1RSVUUoSXNXb3JkQ2hhcignQScpKTsKLSAgRVhQRUNUX1RSVUUo
SXNXb3JkQ2hhcignWicpKTsKLX0KLQotVEVTVChJc1dvcmRDaGFyVGVzdCwgSXNUcnVlRm9yRGln
aXQpIHsKLSAgRVhQRUNUX1RSVUUoSXNXb3JkQ2hhcignMCcpKTsKLSAgRVhQRUNUX1RSVUUoSXNX
b3JkQ2hhcignMScpKTsKLSAgRVhQRUNUX1RSVUUoSXNXb3JkQ2hhcignNycpKTsKLSAgRVhQRUNU
X1RSVUUoSXNXb3JkQ2hhcignOScpKTsKLX0KLQotVEVTVChJc1dvcmRDaGFyVGVzdCwgSXNUcnVl
Rm9yVW5kZXJzY29yZSkgewotICBFWFBFQ1RfVFJVRShJc1dvcmRDaGFyKCdfJykpOwotfQotCi1U
RVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc0ZhbHNlRm9yTm9uUHJpbnRhYmxlKSB7Ci0gIEVYUEVD
VF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2Nh
cGUoJ1wwMDcnKSk7Ci19Ci0KLVRFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzRmFsc2VGb3JEaWdp
dCkgewotICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnMCcpKTsKLSAgRVhQRUNUX0ZBTFNF
KElzVmFsaWRFc2NhcGUoJzknKSk7Ci19Ci0KLVRFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzRmFs
c2VGb3JXaGl0ZVNwYWNlKSB7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCcgJykpOwot
ICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnXG4nKSk7Ci19Ci0KLVRFU1QoSXNWYWxpZEVz
Y2FwZVRlc3QsIElzRmFsc2VGb3JTb21lTGV0dGVyKSB7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlk
RXNjYXBlKCdhJykpOwotICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnWicpKTsKLX0KLQot
VEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNUcnVlRm9yUHVuY3QpIHsKLSAgRVhQRUNUX1RSVUUo
SXNWYWxpZEVzY2FwZSgnLicpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnLScpKTsK
LSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnXicpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxp
ZEVzY2FwZSgnJCcpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnKCcpKTsKLSAgRVhQ
RUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnXScpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2Fw
ZSgneycpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnfCcpKTsKLX0KLQotVEVTVChJ
c1ZhbGlkRXNjYXBlVGVzdCwgSXNUcnVlRm9yU29tZUxldHRlcikgewotICBFWFBFQ1RfVFJVRShJ
c1ZhbGlkRXNjYXBlKCdkJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdEJykpOwot
ICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdzJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlk
RXNjYXBlKCdTJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCd3JykpOwotICBFWFBF
Q1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdXJykpOwotfQotCi1URVNUKEF0b21NYXRjaGVzQ2hhclRl
c3QsIEVzY2FwZWRQdW5jdCkgewotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICdcXCcsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXFwn
LCAnICcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXycsICcuJykp
OwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICcuJywgJ2EnKSk7Ci0KLSAg
RVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdcXCcsICdcXCcpKTsKLSAgRVhQRUNU
X1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdfJywgJ18nKSk7Ci0gIEVYUEVDVF9UUlVFKEF0
b21NYXRjaGVzQ2hhcih0cnVlLCAnKycsICcrJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJy4nLCAnLicpKTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBF
c2NhcGVkX2QpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICdc
MCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICdhJykpOwot
ICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywgJy4nKSk7Ci0KLSAgRVhQ
RUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywgJzAnKSk7Ci0gIEVYUEVDVF9UUlVF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICc5JykpOwotfQotCi1URVNUKEF0b21NYXRjaGVz
Q2hhclRlc3QsIEVzY2FwZWRfRCkgewotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICdEJywgJzAnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0Qn
LCAnOScpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0QnLCAnXDAn
KSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcsICdhJykpOwotICBF
WFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0QnLCAnLScpKTsKLX0KLQotVEVTVChB
dG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX3MpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAncycsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hh
cih0cnVlLCAncycsICdhJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICdzJywgJy4nKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAn
OScpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnICcpKTsK
LSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJ1xuJykpOwotICBFWFBF
Q1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnXHQnKSk7Ci19Ci0KLVRFU1QoQXRv
bU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF9TKSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ1MnLCAnICcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAnUycsICdccicpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwg
J1MnLCAnXDAnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICdh
JykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnOScpKTsKLX0K
LQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX3cpIHsKLSAgRVhQRUNUX0ZBTFNF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAndycsICcrJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICd3JywgJyAnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ3cnLCAnXG4nKSk7Ci0KLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3
JywgJzAnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdiJykp
OwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnQycpKTsKLSAgRVhQ
RUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJ18nKSk7Ci19Ci0KLVRFU1QoQXRv
bU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF9XKSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ1cnLCAnQScpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAnVycsICdiJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdX
JywgJzknKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnXycp
KTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnXDAnKSk7Ci0g
IEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICcqJykpOwotICBFWFBFQ1Rf
VFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnXG4nKSk7Ci19Ci0KLVRFU1QoQXRvbU1h
dGNoZXNDaGFyVGVzdCwgRXNjYXBlZFdoaXRlU3BhY2UpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAnZicsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAnZicsICdcbicpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAnbicsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
bicsICdccicpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncicsICdc
MCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncicsICdhJykpOwot
ICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd0JywgJ1wwJykpOwotICBFWFBF
Q1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd0JywgJ3QnKSk7Ci0gIEVYUEVDVF9GQUxT
RShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3YnLCAnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ3YnLCAnXGYnKSk7Ci0KLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNo
ZXNDaGFyKHRydWUsICdmJywgJ1xmJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ24nLCAnXG4nKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
cicsICdccicpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd0JywgJ1x0
JykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3YnLCAnXHYnKSk7Ci19
Ci0KLVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgVW5lc2NhcGVkRG90KSB7Ci0gIEVYUEVDVF9G
QUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICcuJywgJ1xuJykpOwotCi0gIEVYUEVDVF9UUlVF
KEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4nLCAnXDAnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21N
YXRjaGVzQ2hhcihmYWxzZSwgJy4nLCAnLicpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXND
aGFyKGZhbHNlLCAnLicsICdhJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFs
c2UsICcuJywgJyAnKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgVW5lc2NhcGVk
Q2hhcikgewotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnYScsICdcMCcp
KTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJ2EnLCAnYicpKTsKLSAg
RVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJyQnLCAnYScpKTsKLQotICBFWFBF
Q1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICckJywgJyQnKSk7Ci0gIEVYUEVDVF9UUlVF
KEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJzUnLCAnNScpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1h
dGNoZXNDaGFyKGZhbHNlLCAnWicsICdaJykpOwotfQotCi1URVNUKFZhbGlkYXRlUmVnZXhUZXN0
LCBHZW5lcmF0ZXNGYWlsdXJlQW5kUmV0dXJuc0ZhbHNlRm9ySW52YWxpZCkgewotICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleChOVUxMKSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICJOVUxMIGlzIG5vdCBhIHZhbGlkIHNpbXBsZSByZWd1bGFy
IGV4cHJlc3Npb24iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCi0gICAgICBBU1NFUlRf
RkFMU0UoVmFsaWRhdGVSZWdleCgiYVxcIikpLAotICAgICAgIlN5bnRheCBlcnJvciBhdCBpbmRl
eCAxIGluIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24gXCJhXFxcIjogIik7Ci0gIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJhXFwiKSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICInXFwnIGNhbm5vdCBhcHBlYXIgYXQgdGhlIGVuZCIpOwot
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiXFxu
XFwiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInXFwnIGNhbm5vdCBhcHBlYXIgYXQg
dGhlIGVuZCIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRh
dGVSZWdleCgiXFxzXFxoYiIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQg
ZXNjYXBlIHNlcXVlbmNlIFwiXFxoXCIiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNT
RVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIl5eIikpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAiJ14nIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgYmVnaW5uaW5nIik7Ci0gIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCIuKl5iIikpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAiJ14nIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgYmVnaW5uaW5n
Iik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4
KCIkJCIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIickJyBjYW4gb25seSBhcHBlYXIg
YXQgdGhlIGVuZCIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFs
aWRhdGVSZWdleCgiXiRhIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJyQnIGNhbiBv
bmx5IGFwcGVhciBhdCB0aGUgZW5kIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VS
VF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJhKGIiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICInKCcgaXMgdW5zdXBwb3J0ZWQiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJU
X0ZBTFNFKFZhbGlkYXRlUmVnZXgoImFiKSIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IicpJyBpcyB1bnN1cHBvcnRlZCIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRf
RkFMU0UoVmFsaWRhdGVSZWdleCgiW2FiIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAi
J1snIGlzIHVuc3VwcG9ydGVkIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9G
QUxTRShWYWxpZGF0ZVJlZ2V4KCJhezIiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIn
eycgaXMgdW5zdXBwb3J0ZWQiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZB
TFNFKFZhbGlkYXRlUmVnZXgoIj8iKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInPycg
Y2FuIG9ubHkgZm9sbG93IGEgcmVwZWF0YWJsZSB0b2tlbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiXioiKSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICInKicgY2FuIG9ubHkgZm9sbG93IGEgcmVwZWF0YWJsZSB0b2tlbiIpOwot
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiNSor
IikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJysnIGNhbiBvbmx5IGZvbGxvdyBhIHJl
cGVhdGFibGUgdG9rZW4iKTsKLX0KLQotVEVTVChWYWxpZGF0ZVJlZ2V4VGVzdCwgUmV0dXJuc1Ry
dWVGb3JWYWxpZCkgewotICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCIiKSk7Ci0gIEVYUEVD
VF9UUlVFKFZhbGlkYXRlUmVnZXgoImEiKSk7Ci0gIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgo
Ii4qIikpOwotICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCJeYV8rIikpOwotICBFWFBFQ1Rf
VFJVRShWYWxpZGF0ZVJlZ2V4KCJeYVxcdFxcJj8iKSk7Ci0gIEVYUEVDVF9UUlVFKFZhbGlkYXRl
UmVnZXgoIjA5KiQiKSk7Ci0gIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIl5aJCIpKTsKLSAg
RVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiYVxcXlpcXCRcXChcXClcXHxcXFtcXF1cXHtcXH0i
KSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc0Zv
clplcm9Pck9uZSkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhl
YWQoZmFsc2UsICdhJywgJz8nLCAiYSIsICJiYSIpKTsKLSAgLy8gUmVwZWF0aW5nIG1vcmUgdGhh
biBvbmNlLgotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFs
c2UsICdhJywgJz8nLCAiYiIsICJhYWIiKSk7Ci0KLSAgLy8gUmVwZWF0aW5nIHplcm8gdGltZXMu
Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnYScs
ICc/JywgImIiLCAiYmEiKSk7Ci0gIC8vIFJlcGVhdGluZyBvbmNlLgotICBFWFBFQ1RfVFJVRShN
YXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJ2EnLCAnPycsICJiIiwgImFiIikp
OwotICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJyMn
LCAnPycsICIuIiwgIiMjIikpOwotfQotCi1URVNUKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRI
ZWFkVGVzdCwgV29ya3NGb3JaZXJvT3JNYW55KSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0
aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKicsICJhJCIsICJiYWFiIikpOwotCi0g
IC8vIFJlcGVhdGluZyB6ZXJvIHRpbWVzLgotICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25B
bmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKicsICJiIiwgImJjIikpOwotICAvLyBSZXBlYXRp
bmcgb25jZS4KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFs
c2UsICcuJywgJyonLCAiYiIsICJhYmMiKSk7Ci0gIC8vIFJlcGVhdGluZyBtb3JlIHRoYW4gb25j
ZS4KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQodHJ1ZSwgJ3cn
LCAnKicsICItIiwgImFiXzEtZyIpKTsKLX0KLQotVEVTVChNYXRjaFJlcGV0aXRpb25BbmRSZWdl
eEF0SGVhZFRlc3QsIFdvcmtzRm9yT25lT3JNYW55KSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJl
cGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKycsICJhJCIsICJiYWFiIikpOwot
ICAvLyBSZXBlYXRpbmcgemVybyB0aW1lcy4KLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlv
bkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcrJywgImIiLCAiYmMiKSk7Ci0KLSAgLy8gUmVw
ZWF0aW5nIG9uY2UuCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFk
KGZhbHNlLCAnLicsICcrJywgImIiLCAiYWJjIikpOwotICAvLyBSZXBlYXRpbmcgbW9yZSB0aGFu
IG9uY2UuCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKHRydWUs
ICd3JywgJysnLCAiLSIsICJhYl8xLWciKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEF0SGVhZFRl
c3QsIFJldHVybnNUcnVlRm9yRW1wdHlSZWdleCkgewotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4
QXRIZWFkKCIiLCAiIikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCIiLCAiYWIi
KSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIFdvcmtzV2hlbkRvbGxhcklzSW5S
ZWdleCkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiJCIsICJhIikpOwotCi0g
IEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIiQiLCAiIikpOwotICBFWFBFQ1RfVFJVRShN
YXRjaFJlZ2V4QXRIZWFkKCJhJCIsICJhIikpOwotfQotCi1URVNUKE1hdGNoUmVnZXhBdEhlYWRU
ZXN0LCBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhFc2NhcGVTZXF1ZW5jZSkgewotICBFWFBFQ1Rf
RkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiXFx3IiwgIisiKSk7Ci0gIEVYUEVDVF9GQUxTRShNYXRj
aFJlZ2V4QXRIZWFkKCJcXFciLCAiYWIiKSk7Ci0KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0
SGVhZCgiXFxzYSIsICJcbmFiIikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJc
XGQiLCAiMWEiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIFdvcmtzV2hlblJl
Z2V4U3RhcnRzV2l0aFJlcGV0aXRpb24pIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhl
YWQoIi4rYSIsICJhYmMiKSk7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJhP2Ii
LCAiYWFiIikpOwotCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIi4qYSIsICJiYzEy
LWFiIikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJhP2IiLCAiYiIpKTsKLSAg
RVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiYT9iIiwgImFiIikpOwotfQotCi1URVNUKE1h
dGNoUmVnZXhBdEhlYWRUZXN0LAotICAgICBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhSZXBldGlv
bk9mRXNjYXBlU2VxdWVuY2UpIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIlxc
LithIiwgImFiYyIpKTsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIlxccz9iIiwg
IiAgYiIpKTsKLQotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXCgqYSIsICIoKCgo
YWIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcXj9iIiwgIl5iIikpOwot
ICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXFxcP2IiLCAiYiIpKTsKLSAgRVhQRUNU
X1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxcXD9iIiwgIlxcYiIpKTsKLX0KLQotVEVTVChNYXRj
aFJlZ2V4QXRIZWFkVGVzdCwgTWF0Y2hlc1NlcXVlbnRpYWxseSkgewotICBFWFBFQ1RfRkFMU0Uo
TWF0Y2hSZWdleEF0SGVhZCgiYWIuKmMiLCAiYWNhYmMiKSk7Ci0KLSAgRVhQRUNUX1RSVUUoTWF0
Y2hSZWdleEF0SGVhZCgiYWIuKmMiLCAiYWItZnNjIikpOwotfQotCi1URVNUKE1hdGNoUmVnZXhB
bnl3aGVyZVRlc3QsIFJldHVybnNGYWxzZVdoZW5TdHJpbmdJc051bGwpIHsKLSAgRVhQRUNUX0ZB
TFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiIiwgTlVMTCkpOwotfQotCi1URVNUKE1hdGNoUmVnZXhB
bnl3aGVyZVRlc3QsIFdvcmtzV2hlblJlZ2V4U3RhcnRzV2l0aENhcmV0KSB7Ci0gIEVYUEVDVF9G
QUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoIl5hIiwgImJhIikpOwotICBFWFBFQ1RfRkFMU0UoTWF0
Y2hSZWdleEFueXdoZXJlKCJeJCIsICJhIikpOwotCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhB
bnl3aGVyZSgiXmEiLCAiYWIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgi
XiIsICJhYiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJeJCIsICIiKSk7
Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEFueXdoZXJlVGVzdCwgUmV0dXJuc0ZhbHNlV2hlbk5vTWF0
Y2gpIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiYSIsICJiY2RlMTIzIikp
OwotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJlKCJhLithIiwgIi0tYWE4ODg4ODg4
OCIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5zVHJ1ZVdoZW5N
YXRjaGluZ1ByZWZpeCkgewotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIlxcdysi
LCAiYWIxXyAtIDUiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiLio9Iiwg
Ij0iKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgieC4qYWI/LipiYyIsICJ4
YWFhYmMiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEFueXdoZXJlVGVzdCwgUmV0dXJuc1RydWVX
aGVuTWF0Y2hpbmdOb25QcmVmaXgpIHsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJl
KCJcXHcrIiwgIiQkJCBhYjFfIC0gNSIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdo
ZXJlKCJcXC4rPSIsICI9ICAuLi49IikpOwotfQotCi0vLyBUZXN0cyBSRSdzIGltcGxpY2l0IGNv
bnN0cnVjdG9ycy4KLVRFU1QoUkVUZXN0LCBJbXBsaWNpdENvbnN0cnVjdG9yV29ya3MpIHsKLSAg
Y29uc3QgUkUgZW1wdHkoIiIpOwotICBFWFBFQ1RfU1RSRVEoIiIsIGVtcHR5LnBhdHRlcm4oKSk7
Ci0KLSAgY29uc3QgUkUgc2ltcGxlKCJoZWxsbyIpOwotICBFWFBFQ1RfU1RSRVEoImhlbGxvIiwg
c2ltcGxlLnBhdHRlcm4oKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUkUncyBjb25zdHJ1Y3RvcnMg
cmVqZWN0IGludmFsaWQgcmVndWxhciBleHByZXNzaW9ucy4KLVRFU1QoUkVUZXN0LCBSZWplY3Rz
SW52YWxpZFJlZ2V4KSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBjb25zdCBS
RSBub3JtYWwoTlVMTCk7Ci0gIH0sICJOVUxMIGlzIG5vdCBhIHZhbGlkIHNpbXBsZSByZWd1bGFy
IGV4cHJlc3Npb24iKTsKLQotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAgY29uc3Qg
UkUgbm9ybWFsKCIuKihcXHcrIik7Ci0gIH0sICInKCcgaXMgdW5zdXBwb3J0ZWQiKTsKLQotICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAgY29uc3QgUkUgaW52YWxpZCgiXj8iKTsKLSAg
fSwgIic/JyBjYW4gb25seSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2VuIik7Ci19Ci0KLS8vIFRl
c3RzIFJFOjpGdWxsTWF0Y2goKS4KLVRFU1QoUkVUZXN0LCBGdWxsTWF0Y2hXb3JrcykgewotICBj
b25zdCBSRSBlbXB0eSgiIik7Ci0gIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goIiIsIGVtcHR5
KSk7Ci0gIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKCJhIiwgZW1wdHkpKTsKLQotICBjb25z
dCBSRSByZTEoImEiKTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaCgiYSIsIHJlMSkpOwot
Ci0gIGNvbnN0IFJFIHJlKCJhLip6Iik7Ci0gIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goImF6
IiwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaCgiYXh5eiIsIHJlKSk7Ci0gIEVY
UEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKCJiYXoiLCByZSkpOwotICBFWFBFQ1RfRkFMU0UoUkU6
OkZ1bGxNYXRjaCgiYXp5IiwgcmUpKTsKLX0KLQotLy8gVGVzdHMgUkU6OlBhcnRpYWxNYXRjaCgp
LgotVEVTVChSRVRlc3QsIFBhcnRpYWxNYXRjaFdvcmtzKSB7Ci0gIGNvbnN0IFJFIGVtcHR5KCIi
KTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiIiwgZW1wdHkpKTsKLSAgRVhQRUNU
X1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiYSIsIGVtcHR5KSk7Ci0KLSAgY29uc3QgUkUgcmUoImEu
KnoiKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiYXoiLCByZSkpOwotICBFWFBF
Q1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCJheHl6IiwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6
OlBhcnRpYWxNYXRjaCgiYmF6IiwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRj
aCgiYXp5IiwgcmUpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpQYXJ0aWFsTWF0Y2goInp6YSIsIHJl
KSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfVVNFU19QT1NJWF9SRQotCi0jaWYgIUdURVNUX09T
X1dJTkRPV1NfTU9CSUxFCi0KLVRFU1QoQ2FwdHVyZVRlc3QsIENhcHR1cmVzU3Rkb3V0KSB7Ci0g
IENhcHR1cmVTdGRvdXQoKTsKLSAgZnByaW50ZihzdGRvdXQsICJhYmMiKTsKLSAgRVhQRUNUX1NU
UkVRKCJhYmMiLCBHZXRDYXB0dXJlZFN0ZG91dCgpLmNfc3RyKCkpOwotCi0gIENhcHR1cmVTdGRv
dXQoKTsKLSAgZnByaW50ZihzdGRvdXQsICJkZWYlY2doaSIsICdcMCcpOwotICBFWFBFQ1RfRVEo
OjpzdGQ6OnN0cmluZygiZGVmXDBnaGkiLCA3KSwgOjpzdGQ6OnN0cmluZyhHZXRDYXB0dXJlZFN0
ZG91dCgpKSk7Ci19Ci0KLVRFU1QoQ2FwdHVyZVRlc3QsIENhcHR1cmVzU3RkZXJyKSB7Ci0gIENh
cHR1cmVTdGRlcnIoKTsKLSAgZnByaW50ZihzdGRlcnIsICJqa2wiKTsKLSAgRVhQRUNUX1NUUkVR
KCJqa2wiLCBHZXRDYXB0dXJlZFN0ZGVycigpLmNfc3RyKCkpOwotCi0gIENhcHR1cmVTdGRlcnIo
KTsKLSAgZnByaW50ZihzdGRlcnIsICJqa2wlY21ubyIsICdcMCcpOwotICBFWFBFQ1RfRVEoOjpz
dGQ6OnN0cmluZygiamtsXDBtbm8iLCA3KSwgOjpzdGQ6OnN0cmluZyhHZXRDYXB0dXJlZFN0ZGVy
cigpKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgc3Rkb3V0IGFuZCBzdGRlcnIgY2FwdHVyZSBkb24n
dCBpbnRlcmZlcmUgd2l0aCBlYWNoIG90aGVyLgotVEVTVChDYXB0dXJlVGVzdCwgQ2FwdHVyZXNT
dGRvdXRBbmRTdGRlcnIpIHsKLSAgQ2FwdHVyZVN0ZG91dCgpOwotICBDYXB0dXJlU3RkZXJyKCk7
Ci0gIGZwcmludGYoc3Rkb3V0LCAicHFyIik7Ci0gIGZwcmludGYoc3RkZXJyLCAic3R1Iik7Ci0g
IEVYUEVDVF9TVFJFUSgicHFyIiwgR2V0Q2FwdHVyZWRTdGRvdXQoKS5jX3N0cigpKTsKLSAgRVhQ
RUNUX1NUUkVRKCJzdHUiLCBHZXRDYXB0dXJlZFN0ZGVycigpLmNfc3RyKCkpOwotfQotCi1URVNU
KENhcHR1cmVEZWF0aFRlc3QsIENhbm5vdFJlZW50ZXJTdGRvdXRDYXB0dXJlKSB7Ci0gIENhcHR1
cmVTdGRvdXQoKTsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChDYXB0dXJlU3Rkb3V0KCk7
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPbmx5IG9uZSBzdGRvdXQgY2FwdHVyZXIg
Y2FuIGV4aXN0IGF0IGEgdGltZSIpOwotICBHZXRDYXB0dXJlZFN0ZG91dCgpOwotCi0gIC8vIFdl
IGNhbm5vdCB0ZXN0IHN0ZGVyciBjYXB0dXJpbmcgdXNpbmcgZGVhdGggdGVzdHMgYXMgdGhleSB1
c2UgaXQKLSAgLy8gdGhlbXNlbHZlcy4KLX0KLQotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKLQotVEVTVChUaHJlYWRMb2NhbFRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvckluaXRp
YWxpemVzVG9EZWZhdWx0VmFsdWVzKSB7Ci0gIFRocmVhZExvY2FsPGludD4gdDE7Ci0gIEVYUEVD
VF9FUSgwLCB0MS5nZXQoKSk7Ci0KLSAgVGhyZWFkTG9jYWw8dm9pZCo+IHQyOwotICBFWFBFQ1Rf
VFJVRSh0Mi5nZXQoKSA9PSBOVUxMKTsKLX0KLQotVEVTVChUaHJlYWRMb2NhbFRlc3QsIFNpbmds
ZVBhcmFtQ29uc3RydWN0b3JJbml0aWFsaXplc1RvUGFyYW0pIHsKLSAgVGhyZWFkTG9jYWw8aW50
PiB0MSgxMjMpOwotICBFWFBFQ1RfRVEoMTIzLCB0MS5nZXQoKSk7Ci0KLSAgaW50IGkgPSAwOwot
ICBUaHJlYWRMb2NhbDxpbnQqPiB0MigmaSk7Ci0gIEVYUEVDVF9FUSgmaSwgdDIuZ2V0KCkpOwot
fQotCi1jbGFzcyBOb0RlZmF1bHRDb250cnVjdG9yIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IE5v
RGVmYXVsdENvbnRydWN0b3IoY29uc3QgY2hhciopIHt9Ci0gIE5vRGVmYXVsdENvbnRydWN0b3Io
Y29uc3QgTm9EZWZhdWx0Q29udHJ1Y3RvciYpIHt9Ci19OwotCi1URVNUKFRocmVhZExvY2FsVGVz
dCwgVmFsdWVEZWZhdWx0Q29udHJ1Y3RvcklzTm90UmVxdWlyZWRGb3JQYXJhbVZlcnNpb24pIHsK
LSAgVGhyZWFkTG9jYWw8Tm9EZWZhdWx0Q29udHJ1Y3Rvcj4gYmFyKE5vRGVmYXVsdENvbnRydWN0
b3IoImZvbyIpKTsKLSAgYmFyLnBvaW50ZXIoKTsKLX0KLQotVEVTVChUaHJlYWRMb2NhbFRlc3Qs
IEdldEFuZFBvaW50ZXJSZXR1cm5TYW1lVmFsdWUpIHsKLSAgVGhyZWFkTG9jYWw8U3RyaW5nPiB0
aHJlYWRfbG9jYWw7Ci0KLSAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbC5wb2ludGVyKCksICYodGhy
ZWFkX2xvY2FsLmdldCgpKSk7Ci0KLSAgLy8gVmVyaWZpZXMgdGhlIGNvbmRpdGlvbiBzdGlsbCBo
b2xkcyBhZnRlciBjYWxsaW5nIHNldC4KLSAgdGhyZWFkX2xvY2FsLnNldCgiZm9vIik7Ci0gIEVY
UEVDVF9FUSh0aHJlYWRfbG9jYWwucG9pbnRlcigpLCAmKHRocmVhZF9sb2NhbC5nZXQoKSkpOwot
fQotCi1URVNUKFRocmVhZExvY2FsVGVzdCwgUG9pbnRlckFuZENvbnN0UG9pbnRlclJldHVyblNh
bWVWYWx1ZSkgewotICBUaHJlYWRMb2NhbDxTdHJpbmc+IHRocmVhZF9sb2NhbDsKLSAgY29uc3Qg
VGhyZWFkTG9jYWw8U3RyaW5nPiYgY29uc3RfdGhyZWFkX2xvY2FsID0gdGhyZWFkX2xvY2FsOwot
Ci0gIEVYUEVDVF9FUSh0aHJlYWRfbG9jYWwucG9pbnRlcigpLCBjb25zdF90aHJlYWRfbG9jYWwu
cG9pbnRlcigpKTsKLQotICB0aHJlYWRfbG9jYWwuc2V0KCJmb28iKTsKLSAgRVhQRUNUX0VRKHRo
cmVhZF9sb2NhbC5wb2ludGVyKCksIGNvbnN0X3RocmVhZF9sb2NhbC5wb2ludGVyKCkpOwotfQot
Ci0jaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQotCi12b2lkIEFkZFR3byhpbnQqIHBhcmFtKSB7ICpw
YXJhbSArPSAyOyB9Ci0KLVRFU1QoVGhyZWFkV2l0aFBhcmFtVGVzdCwgQ29uc3RydWN0b3JFeGVj
dXRlc1RocmVhZEZ1bmMpIHsKLSAgaW50IGkgPSA0MDsKLSAgVGhyZWFkV2l0aFBhcmFtPGludCo+
IHRocmVhZCgmQWRkVHdvLCAmaSwgTlVMTCk7Ci0gIHRocmVhZC5Kb2luKCk7Ci0gIEVYUEVDVF9F
USg0MiwgaSk7Ci19Ci0KLVRFU1QoTXV0ZXhEZWF0aFRlc3QsIEFzc2VydEhlbGRTaG91bGRBc3Nl
cnRXaGVuTm90TG9ja2VkKSB7Ci0gIC8vIEFzc2VydEhlbGQoKSBpcyBmbGFreSBvbmx5IGluIHRo
ZSBwcmVzZW5jZSBvZiBtdWx0aXBsZSB0aHJlYWRzIGFjY2Vzc2luZwotICAvLyB0aGUgbG9jay4g
SW4gdGhpcyBjYXNlLCB0aGUgdGVzdCBpcyByb2J1c3QuCi0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQ
T1JURUQoewotICAgIE11dGV4IG07Ci0gICAgeyBNdXRleExvY2sgbG9jaygmbSk7IH0KLSAgICBt
LkFzc2VydEhlbGQoKTsKLSAgfSwKLSAgInRocmVhZCAuKmhvbGQiKTsKLX0KLQotVEVTVChNdXRl
eFRlc3QsIEFzc2VydEhlbGRTaG91bGROb3RBc3NlcnRXaGVuTG9ja2VkKSB7Ci0gIE11dGV4IG07
Ci0gIE11dGV4TG9jayBsb2NrKCZtKTsKLSAgbS5Bc3NlcnRIZWxkKCk7Ci19Ci0KLWNsYXNzIEF0
b21pY0NvdW50ZXJXaXRoTXV0ZXggewotIHB1YmxpYzoKLSAgZXhwbGljaXQgQXRvbWljQ291bnRl
cldpdGhNdXRleChNdXRleCogbXV0ZXgpIDoKLSAgICB2YWx1ZV8oMCksIG11dGV4XyhtdXRleCks
IHJhbmRvbV8oNDIpIHt9Ci0KLSAgdm9pZCBJbmNyZW1lbnQoKSB7Ci0gICAgTXV0ZXhMb2NrIGxv
Y2sobXV0ZXhfKTsKLSAgICBpbnQgdGVtcCA9IHZhbHVlXzsKLSAgICB7Ci0gICAgICAvLyBMb2Nr
aW5nIGEgbXV0ZXggcHV0cyB1cCBhIG1lbW9yeSBiYXJyaWVyLCBwcmV2ZW50aW5nIHJlYWRzIGFu
ZAotICAgICAgLy8gd3JpdGVzIHRvIHZhbHVlXyByZWFycmFuZ2VkIHdoZW4gb2JzZXJ2ZWQgZnJv
bSBvdGhlciB0aHJlYWRzLgotICAgICAgLy8KLSAgICAgIC8vIFdlIGNhbm5vdCB1c2UgTXV0ZXgg
YW5kIE11dGV4TG9jayBoZXJlIG9yIHJlbHkgb24gdGhlaXIgbWVtb3J5Ci0gICAgICAvLyBiYXJy
aWVyIGZ1bmN0aW9uYWxpdHkgYXMgd2UgYXJlIHRlc3RpbmcgdGhlbSBoZXJlLgotICAgICAgcHRo
cmVhZF9tdXRleF90IG1lbW9yeV9iYXJyaWVyX211dGV4OwotICAgICAgR1RFU1RfQ0hFQ0tfUE9T
SVhfU1VDQ0VTU18oCi0gICAgICAgICAgcHRocmVhZF9tdXRleF9pbml0KCZtZW1vcnlfYmFycmll
cl9tdXRleCwgTlVMTCkpOwotICAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVh
ZF9tdXRleF9sb2NrKCZtZW1vcnlfYmFycmllcl9tdXRleCkpOwotCi0gICAgICBTbGVlcE1pbGxp
c2Vjb25kcyhyYW5kb21fLkdlbmVyYXRlKDMwKSk7Ci0KLSAgICAgIEdURVNUX0NIRUNLX1BPU0lY
X1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtZW1vcnlfYmFycmllcl9tdXRleCkpOwot
ICAgIH0KLSAgICB2YWx1ZV8gPSB0ZW1wICsgMTsKLSAgfQotICBpbnQgdmFsdWUoKSBjb25zdCB7
IHJldHVybiB2YWx1ZV87IH0KLQotIHByaXZhdGU6Ci0gIHZvbGF0aWxlIGludCB2YWx1ZV87Ci0g
IE11dGV4KiBjb25zdCBtdXRleF87ICAvLyBQcm90ZWN0cyB2YWx1ZV8uCi0gIFJhbmRvbSAgICAg
ICByYW5kb21fOwotfTsKLQotdm9pZCBDb3VudGluZ1RocmVhZEZ1bmMocGFpcjxBdG9taWNDb3Vu
dGVyV2l0aE11dGV4KiwgaW50PiBwYXJhbSkgewotICBmb3IgKGludCBpID0gMDsgaSA8IHBhcmFt
LnNlY29uZDsgKytpKQotICAgICAgcGFyYW0uZmlyc3QtPkluY3JlbWVudCgpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IHRoZSBtdXRleCBvbmx5IGxldHMgb25lIHRocmVhZCBhdCBhIHRpbWUgdG8gbG9j
ayBpdC4KLVRFU1QoTXV0ZXhUZXN0LCBPbmx5T25lVGhyZWFkQ2FuTG9ja0F0QVRpbWUpIHsKLSAg
TXV0ZXggbXV0ZXg7Ci0gIEF0b21pY0NvdW50ZXJXaXRoTXV0ZXggbG9ja2VkX2NvdW50ZXIoJm11
dGV4KTsKLQotICB0eXBlZGVmIFRocmVhZFdpdGhQYXJhbTxwYWlyPEF0b21pY0NvdW50ZXJXaXRo
TXV0ZXgqLCBpbnQ+ID4gVGhyZWFkVHlwZTsKLSAgY29uc3QgaW50IGtDeWNsZUNvdW50ID0gMjA7
Ci0gIGNvbnN0IGludCBrVGhyZWFkQ291bnQgPSA3OwotICBzY29wZWRfcHRyPFRocmVhZFR5cGU+
IGNvdW50aW5nX3RocmVhZHNba1RocmVhZENvdW50XTsKLSAgTm90aWZpY2F0aW9uIHRocmVhZHNf
Y2FuX3N0YXJ0OwotICAvLyBDcmVhdGVzIGFuZCBydW5zIGtUaHJlYWRDb3VudCB0aHJlYWRzIHRo
YXQgaW5jcmVtZW50IGxvY2tlZF9jb3VudGVyCi0gIC8vIGtDeWNsZUNvdW50IHRpbWVzIGVhY2gu
Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwga1RocmVhZENvdW50OyArK2kpIHsKLSAgICBjb3VudGlu
Z190aHJlYWRzW2ldLnJlc2V0KG5ldyBUaHJlYWRUeXBlKCZDb3VudGluZ1RocmVhZEZ1bmMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3BhaXIoJmxv
Y2tlZF9jb3VudGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtDeWNsZUNvdW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZ0aHJlYWRzX2Nhbl9zdGFydCkpOwotICB9Ci0gIHRocmVhZHNfY2Fu
X3N0YXJ0Lk5vdGlmeSgpOwotICBmb3IgKGludCBpID0gMDsgaSA8IGtUaHJlYWRDb3VudDsgKytp
KQotICAgIGNvdW50aW5nX3RocmVhZHNbaV0tPkpvaW4oKTsKLQotICAvLyBJZiB0aGUgbXV0ZXgg
bGV0cyBtb3JlIHRoYW4gb25lIHRocmVhZCB0byBpbmNyZW1lbnQgdGhlIGNvdW50ZXIgYXQgYQot
ICAvLyB0aW1lLCB0aGV5IGFyZSBsaWtlbHkgdG8gZW5jb3VudGVyIGEgcmFjZSBjb25kaXRpb24g
YW5kIGhhdmUgc29tZQotICAvLyBpbmNyZW1lbnRzIG92ZXJ3cml0dGVuLCByZXN1bHRpbmcgaW4g
dGhlIGxvd2VyIHRoZW4gZXhwZWN0ZWQgY291bnRlcgotICAvLyB2YWx1ZS4KLSAgRVhQRUNUX0VR
KGtDeWNsZUNvdW50ICoga1RocmVhZENvdW50LCBsb2NrZWRfY291bnRlci52YWx1ZSgpKTsKLX0K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIFJ1bkZyb21UaHJlYWQodm9pZCAoZnVuYyko
VCksIFQgcGFyYW0pIHsKLSAgVGhyZWFkV2l0aFBhcmFtPFQ+IHRocmVhZChmdW5jLCBwYXJhbSwg
TlVMTCk7Ci0gIHRocmVhZC5Kb2luKCk7Ci19Ci0KLXZvaWQgUmV0cmlldmVUaHJlYWRMb2NhbFZh
bHVlKHBhaXI8VGhyZWFkTG9jYWw8U3RyaW5nPiosIFN0cmluZyo+IHBhcmFtKSB7Ci0gICpwYXJh
bS5zZWNvbmQgPSBwYXJhbS5maXJzdC0+Z2V0KCk7Ci19Ci0KLVRFU1QoVGhyZWFkTG9jYWxUZXN0
LCBQYXJhbWV0ZXJpemVkQ29uc3RydWN0b3JTZXRzRGVmYXVsdCkgewotICBUaHJlYWRMb2NhbDxT
dHJpbmc+IHRocmVhZF9sb2NhbCgiZm9vIik7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiwgdGhyZWFk
X2xvY2FsLmdldCgpLmNfc3RyKCkpOwotCi0gIHRocmVhZF9sb2NhbC5zZXQoImJhciIpOwotICBF
WFBFQ1RfU1RSRVEoImJhciIsIHRocmVhZF9sb2NhbC5nZXQoKS5jX3N0cigpKTsKLQotICBTdHJp
bmcgcmVzdWx0OwotICBSdW5Gcm9tVGhyZWFkKCZSZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUsIG1h
a2VfcGFpcigmdGhyZWFkX2xvY2FsLCAmcmVzdWx0KSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiwg
cmVzdWx0LmNfc3RyKCkpOwotfQotCi0vLyBEZXN0cnVjdG9yVHJhY2tlciBrZWVwcyB0cmFjayBv
ZiB3aGV0aGVyIGl0cyBpbnN0YW5jZXMgaGF2ZSBiZWVuCi0vLyBkZXN0cm95ZWQuCi1zdGF0aWMg
c3RkOjp2ZWN0b3I8Ym9vbD4gZ19kZXN0cm95ZWQ7Ci0KLWNsYXNzIERlc3RydWN0b3JUcmFja2Vy
IHsKLSBwdWJsaWM6Ci0gIERlc3RydWN0b3JUcmFja2VyKCkgOiBpbmRleF8oR2V0TmV3SW5kZXgo
KSkge30KLSAgRGVzdHJ1Y3RvclRyYWNrZXIoY29uc3QgRGVzdHJ1Y3RvclRyYWNrZXImIC8qIHJo
cyAqLykKLSAgICAgIDogaW5kZXhfKEdldE5ld0luZGV4KCkpIHt9Ci0gIH5EZXN0cnVjdG9yVHJh
Y2tlcigpIHsKLSAgICAvLyBXZSBuZXZlciBhY2Nlc3MgZ19kZXN0cm95ZWQgY29uY3VycmVudGx5
LCBzbyB3ZSBkb24ndCBuZWVkIHRvCi0gICAgLy8gcHJvdGVjdCB0aGUgd3JpdGUgb3BlcmF0aW9u
IHVuZGVyIGEgbXV0ZXguCi0gICAgZ19kZXN0cm95ZWRbaW5kZXhfXSA9IHRydWU7Ci0gIH0KLQot
IHByaXZhdGU6Ci0gIHN0YXRpYyBpbnQgR2V0TmV3SW5kZXgoKSB7Ci0gICAgZ19kZXN0cm95ZWQu
cHVzaF9iYWNrKGZhbHNlKTsKLSAgICByZXR1cm4gZ19kZXN0cm95ZWQuc2l6ZSgpIC0gMTsKLSAg
fQotICBjb25zdCBpbnQgaW5kZXhfOwotfTsKLQotdHlwZWRlZiBUaHJlYWRMb2NhbDxEZXN0cnVj
dG9yVHJhY2tlcj4qIFRocmVhZFBhcmFtOwotCi12b2lkIENhbGxUaHJlYWRMb2NhbEdldChUaHJl
YWRQYXJhbSB0aHJlYWRfbG9jYWwpIHsKLSAgdGhyZWFkX2xvY2FsLT5nZXQoKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCB3aGVuIGEgVGhyZWFkTG9jYWwgb2JqZWN0IGRpZXMgaW4gYSB0aHJlYWQsIGl0
IGRlc3Ryb3lzCi0vLyB0aGUgbWFuYWdlZCBvYmplY3QgZm9yIHRoYXQgdGhyZWFkLgotVEVTVChU
aHJlYWRMb2NhbFRlc3QsIERlc3Ryb3lzTWFuYWdlZE9iamVjdEZvck93blRocmVhZFdoZW5EeWlu
ZykgewotICBnX2Rlc3Ryb3llZC5jbGVhcigpOwotCi0gIHsKLSAgICAvLyBUaGUgbmV4dCBsaW5l
IGRlZmF1bHQgY29uc3RydWN0cyBhIERlc3RydWN0b3JUcmFja2VyIG9iamVjdCBhcwotICAgIC8v
IHRoZSBkZWZhdWx0IHZhbHVlIG9mIG9iamVjdHMgbWFuYWdlZCBieSB0aHJlYWRfbG9jYWwuCi0g
ICAgVGhyZWFkTG9jYWw8RGVzdHJ1Y3RvclRyYWNrZXI+IHRocmVhZF9sb2NhbDsKLSAgICBBU1NF
UlRfRVEoMVUsIGdfZGVzdHJveWVkLnNpemUoKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdfZGVzdHJv
eWVkWzBdKTsKLQotICAgIC8vIFRoaXMgY3JlYXRlcyBhbm90aGVyIERlc3RydWN0b3JUcmFja2Vy
IG9iamVjdCBmb3IgdGhlIG1haW4gdGhyZWFkLgotICAgIHRocmVhZF9sb2NhbC5nZXQoKTsKLSAg
ICBBU1NFUlRfRVEoMlUsIGdfZGVzdHJveWVkLnNpemUoKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdf
ZGVzdHJveWVkWzBdKTsKLSAgICBBU1NFUlRfRkFMU0UoZ19kZXN0cm95ZWRbMV0pOwotICB9Ci0K
LSAgLy8gTm93IHRocmVhZF9sb2NhbCBoYXMgZGllZC4gIEl0IHNob3VsZCBoYXZlIGRlc3Ryb3ll
ZCBib3RoIHRoZQotICAvLyBkZWZhdWx0IHZhbHVlIHNoYXJlZCBieSBhbGwgdGhyZWFkcyBhbmQg
dGhlIHZhbHVlIGZvciB0aGUgbWFpbgotICAvLyB0aHJlYWQuCi0gIEFTU0VSVF9FUSgyVSwgZ19k
ZXN0cm95ZWQuc2l6ZSgpKTsKLSAgRVhQRUNUX1RSVUUoZ19kZXN0cm95ZWRbMF0pOwotICBFWFBF
Q1RfVFJVRShnX2Rlc3Ryb3llZFsxXSk7Ci0KLSAgZ19kZXN0cm95ZWQuY2xlYXIoKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCB3aGVuIGEgdGhyZWFkIGV4aXRzLCB0aGUgdGhyZWFkLWxvY2FsIG9iamVj
dCBmb3IgdGhhdAotLy8gdGhyZWFkIGlzIGRlc3Ryb3llZC4KLVRFU1QoVGhyZWFkTG9jYWxUZXN0
LCBEZXN0cm95c01hbmFnZWRPYmplY3RBdFRocmVhZEV4aXQpIHsKLSAgZ19kZXN0cm95ZWQuY2xl
YXIoKTsKLQotICB7Ci0gICAgLy8gVGhlIG5leHQgbGluZSBkZWZhdWx0IGNvbnN0cnVjdHMgYSBE
ZXN0cnVjdG9yVHJhY2tlciBvYmplY3QgYXMKLSAgICAvLyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBv
YmplY3RzIG1hbmFnZWQgYnkgdGhyZWFkX2xvY2FsLgotICAgIFRocmVhZExvY2FsPERlc3RydWN0
b3JUcmFja2VyPiB0aHJlYWRfbG9jYWw7Ci0gICAgQVNTRVJUX0VRKDFVLCBnX2Rlc3Ryb3llZC5z
aXplKCkpOwotICAgIEFTU0VSVF9GQUxTRShnX2Rlc3Ryb3llZFswXSk7Ci0KLSAgICAvLyBUaGlz
IGNyZWF0ZXMgYW5vdGhlciBEZXN0cnVjdG9yVHJhY2tlciBvYmplY3QgaW4gdGhlIG5ldyB0aHJl
YWQuCi0gICAgVGhyZWFkV2l0aFBhcmFtPFRocmVhZFBhcmFtPiB0aHJlYWQoCi0gICAgICAgICZD
YWxsVGhyZWFkTG9jYWxHZXQsICZ0aHJlYWRfbG9jYWwsIE5VTEwpOwotICAgIHRocmVhZC5Kb2lu
KCk7Ci0KLSAgICAvLyBOb3cgdGhlIG5ldyB0aHJlYWQgaGFzIGV4aXRlZC4gIFRoZSBwZXItdGhy
ZWFkIG9iamVjdCBmb3IgaXQKLSAgICAvLyBzaG91bGQgaGF2ZSBiZWVuIGRlc3Ryb3llZC4KLSAg
ICBBU1NFUlRfRVEoMlUsIGdfZGVzdHJveWVkLnNpemUoKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdf
ZGVzdHJveWVkWzBdKTsKLSAgICBBU1NFUlRfVFJVRShnX2Rlc3Ryb3llZFsxXSk7Ci0gIH0KLQot
ICAvLyBOb3cgdGhyZWFkX2xvY2FsIGhhcyBkaWVkLiAgVGhlIGRlZmF1bHQgdmFsdWUgc2hvdWxk
IGhhdmUgYmVlbgotICAvLyBkZXN0cm95ZWQgdG9vLgotICBBU1NFUlRfRVEoMlUsIGdfZGVzdHJv
eWVkLnNpemUoKSk7Ci0gIEVYUEVDVF9UUlVFKGdfZGVzdHJveWVkWzBdKTsKLSAgRVhQRUNUX1RS
VUUoZ19kZXN0cm95ZWRbMV0pOwotCi0gIGdfZGVzdHJveWVkLmNsZWFyKCk7Ci19Ci0KLVRFU1Qo
VGhyZWFkTG9jYWxUZXN0LCBUaHJlYWRMb2NhbE11dGF0aW9uc0FmZmVjdE9ubHlDdXJyZW50VGhy
ZWFkKSB7Ci0gIFRocmVhZExvY2FsPFN0cmluZz4gdGhyZWFkX2xvY2FsOwotICB0aHJlYWRfbG9j
YWwuc2V0KCJGb28iKTsKLSAgRVhQRUNUX1NUUkVRKCJGb28iLCB0aHJlYWRfbG9jYWwuZ2V0KCku
Y19zdHIoKSk7Ci0KLSAgU3RyaW5nIHJlc3VsdDsKLSAgUnVuRnJvbVRocmVhZCgmUmV0cmlldmVU
aHJlYWRMb2NhbFZhbHVlLCBtYWtlX3BhaXIoJnRocmVhZF9sb2NhbCwgJnJlc3VsdCkpOwotICBF
WFBFQ1RfVFJVRShyZXN1bHQuY19zdHIoKSA9PSBOVUxMKTsKLX0KLQotI2VuZGlmICAvLyBHVEVT
VF9JU19USFJFQURTQUZFCi0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAgLy8gbmFtZXNw
YWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3QtdGVzdC1wYXJ0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
LXRlc3QtcGFydF90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTNlOTE5
NmFiOTZlNDEzZmVmMzMwNzUyNGIxOGM5MmY1ZWRhZGIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3QtdGVzdC1wYXJ0X3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyMDggKzAsMCBAQAotLy8g
Q29weXJpZ2h0IDIwMDggR29vZ2xlIEluYy4KLS8vIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0vLwot
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3Ry
aWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiBt
aGV1bGVAZ29vZ2xlLmNvbSAoTWFya3VzIEhldWxlKQotLy8KLQotI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0LXRlc3QtcGFydC5oPgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdXNpbmcgdGVz
dGluZzo6TWVzc2FnZTsKLXVzaW5nIHRlc3Rpbmc6OlRlc3Q7Ci11c2luZyB0ZXN0aW5nOjpUZXN0
UGFydFJlc3VsdDsKLXVzaW5nIHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0QXJyYXk7Ci0KLW5hbWVz
cGFjZSB7Ci0KLS8vIFRlc3RzIHRoZSBUZXN0UGFydFJlc3VsdCBjbGFzcy4KLQotLy8gVGhlIHRl
c3QgZml4dHVyZSBmb3IgdGVzdGluZyBUZXN0UGFydFJlc3VsdC4KLWNsYXNzIFRlc3RQYXJ0UmVz
dWx0VGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIFRlc3RQYXJ0UmVzdWx0VGVz
dCgpCi0gICAgICA6IHIxXyhUZXN0UGFydFJlc3VsdDo6a1N1Y2Nlc3MsICJmb28vYmFyLmNjIiwg
MTAsICJTdWNjZXNzISIpLAotICAgICAgICByMl8oVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZh
aWx1cmUsICJmb28vYmFyLmNjIiwgLTEsICJGYWlsdXJlISIpLAotICAgICAgICByM18oVGVzdFBh
cnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsIE5VTEwsIC0xLCAiRmFpbHVyZSEiKSB7fQotCi0gIFRl
c3RQYXJ0UmVzdWx0IHIxXywgcjJfLCByM187Ci19OwotCi0KLVRFU1RfRihUZXN0UGFydFJlc3Vs
dFRlc3QsIENvbnN0cnVjdG9yV29ya3MpIHsKLSAgTWVzc2FnZSBtZXNzYWdlOwotICBtZXNzYWdl
IDw8ICJzb21ldGhpbmcgaXMgdGVycmlibHkgd3JvbmciOwotICBtZXNzYWdlIDw8IHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPih0ZXN0aW5nOjppbnRlcm5hbDo6a1N0YWNrVHJhY2VNYXJrZXIpOwot
ICBtZXNzYWdlIDw8ICJzb21lIHVuaW1wb3J0YW50IHN0YWNrIHRyYWNlIjsKLQotICBjb25zdCBU
ZXN0UGFydFJlc3VsdCByZXN1bHQoVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic29tZV9maWxlLmNjIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVz
c2FnZS5HZXRTdHJpbmcoKS5jX3N0cigpKTsKLQotICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6
OmtOb25GYXRhbEZhaWx1cmUsIHJlc3VsdC50eXBlKCkpOwotICBFWFBFQ1RfU1RSRVEoInNvbWVf
ZmlsZS5jYyIsIHJlc3VsdC5maWxlX25hbWUoKSk7Ci0gIEVYUEVDVF9FUSg0MiwgcmVzdWx0Lmxp
bmVfbnVtYmVyKCkpOwotICBFWFBFQ1RfU1RSRVEobWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0cigp
LCByZXN1bHQubWVzc2FnZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCJzb21ldGhpbmcgaXMgdGVycmli
bHkgd3JvbmciLCByZXN1bHQuc3VtbWFyeSgpKTsKLX0KLQotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0
VGVzdCwgUmVzdWx0QWNjZXNzb3JzV29yaykgewotICBjb25zdCBUZXN0UGFydFJlc3VsdCBzdWNj
ZXNzKFRlc3RQYXJ0UmVzdWx0OjprU3VjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZmlsZS5jYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UiKTsKLSAgRVhQRUNUX1RSVUUoc3Vj
Y2Vzcy5wYXNzZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShzdWNjZXNzLmZhaWxlZCgpKTsKLSAgRVhQ
RUNUX0ZBTFNFKHN1Y2Nlc3Mubm9uZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShz
dWNjZXNzLmZhdGFsbHlfZmFpbGVkKCkpOwotCi0gIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IG5vbmZh
dGFsX2ZhaWx1cmUoVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUuY2MiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJtZXNzYWdlIik7Ci0gIEVYUEVDVF9GQUxTRShub25mYXRhbF9mYWlsdXJl
LnBhc3NlZCgpKTsKLSAgRVhQRUNUX1RSVUUobm9uZmF0YWxfZmFpbHVyZS5mYWlsZWQoKSk7Ci0g
IEVYUEVDVF9UUlVFKG5vbmZhdGFsX2ZhaWx1cmUubm9uZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVY
UEVDVF9GQUxTRShub25mYXRhbF9mYWlsdXJlLmZhdGFsbHlfZmFpbGVkKCkpOwotCi0gIGNvbnN0
IFRlc3RQYXJ0UmVzdWx0IGZhdGFsX2ZhaWx1cmUoVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1
cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUuY2MiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIik7Ci0gIEVYUEVDVF9GQUxTRShmYXRhbF9mYWls
dXJlLnBhc3NlZCgpKTsKLSAgRVhQRUNUX1RSVUUoZmF0YWxfZmFpbHVyZS5mYWlsZWQoKSk7Ci0g
IEVYUEVDVF9GQUxTRShmYXRhbF9mYWlsdXJlLm5vbmZhdGFsbHlfZmFpbGVkKCkpOwotICBFWFBF
Q1RfVFJVRShmYXRhbF9mYWlsdXJlLmZhdGFsbHlfZmFpbGVkKCkpOwotfQotCi0vLyBUZXN0cyBU
ZXN0UGFydFJlc3VsdDo6dHlwZSgpLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgdHlwZSkg
ewotICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNzLCByMV8udHlwZSgpKTsKLSAg
RVhQRUNUX0VRKFRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlLCByMl8udHlwZSgpKTsK
LSAgRVhQRUNUX0VRKFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLCByM18udHlwZSgpKTsK
LX0KLQotLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6OmZpbGVfbmFtZSgpLgotVEVTVF9GKFRlc3RQ
YXJ0UmVzdWx0VGVzdCwgZmlsZV9uYW1lKSB7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vL2Jhci5jYyIs
IHIxXy5maWxlX25hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUShOVUxMLCByM18uZmlsZV9uYW1lKCkp
OwotfQotCi0vLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6bGluZV9udW1iZXIoKS4KLVRFU1RfRihU
ZXN0UGFydFJlc3VsdFRlc3QsIGxpbmVfbnVtYmVyKSB7Ci0gIEVYUEVDVF9FUSgxMCwgcjFfLmxp
bmVfbnVtYmVyKCkpOwotICBFWFBFQ1RfRVEoLTEsIHIyXy5saW5lX251bWJlcigpKTsKLX0KLQot
Ly8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6Om1lc3NhZ2UoKS4KLVRFU1RfRihUZXN0UGFydFJlc3Vs
dFRlc3QsIG1lc3NhZ2UpIHsKLSAgRVhQRUNUX1NUUkVRKCJTdWNjZXNzISIsIHIxXy5tZXNzYWdl
KCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6cGFzc2VkKCkuCi1URVNUX0YoVGVz
dFBhcnRSZXN1bHRUZXN0LCBQYXNzZWQpIHsKLSAgRVhQRUNUX1RSVUUocjFfLnBhc3NlZCgpKTsK
LSAgRVhQRUNUX0ZBTFNFKHIyXy5wYXNzZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShyM18ucGFzc2Vk
KCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6ZmFpbGVkKCkuCi1URVNUX0YoVGVz
dFBhcnRSZXN1bHRUZXN0LCBGYWlsZWQpIHsKLSAgRVhQRUNUX0ZBTFNFKHIxXy5mYWlsZWQoKSk7
Ci0gIEVYUEVDVF9UUlVFKHIyXy5mYWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHIzXy5mYWlsZWQo
KSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpmYXRhbGx5X2ZhaWxlZCgpLgotVEVT
VF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgRmF0YWxseUZhaWxlZCkgewotICBFWFBFQ1RfRkFMU0Uo
cjFfLmZhdGFsbHlfZmFpbGVkKCkpOwotICBFWFBFQ1RfRkFMU0UocjJfLmZhdGFsbHlfZmFpbGVk
KCkpOwotICBFWFBFQ1RfVFJVRShyM18uZmF0YWxseV9mYWlsZWQoKSk7Ci19Ci0KLS8vIFRlc3Rz
IFRlc3RQYXJ0UmVzdWx0Ojpub25mYXRhbGx5X2ZhaWxlZCgpLgotVEVTVF9GKFRlc3RQYXJ0UmVz
dWx0VGVzdCwgTm9uZmF0YWxseUZhaWxlZCkgewotICBFWFBFQ1RfRkFMU0UocjFfLm5vbmZhdGFs
bHlfZmFpbGVkKCkpOwotICBFWFBFQ1RfVFJVRShyMl8ubm9uZmF0YWxseV9mYWlsZWQoKSk7Ci0g
IEVYUEVDVF9GQUxTRShyM18ubm9uZmF0YWxseV9mYWlsZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRo
ZSBUZXN0UGFydFJlc3VsdEFycmF5IGNsYXNzLgotCi1jbGFzcyBUZXN0UGFydFJlc3VsdEFycmF5
VGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIFRlc3RQYXJ0UmVzdWx0QXJyYXlU
ZXN0KCkKLSAgICAgIDogcjFfKFRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlLCAiZm9v
L2Jhci5jYyIsIC0xLCAiRmFpbHVyZSAxIiksCi0gICAgICAgIHIyXyhUZXN0UGFydFJlc3VsdDo6
a0ZhdGFsRmFpbHVyZSwgImZvby9iYXIuY2MiLCAtMSwgIkZhaWx1cmUgMiIpIHt9Ci0KLSAgY29u
c3QgVGVzdFBhcnRSZXN1bHQgcjFfLCByMl87Ci19OwotCi0vLyBUZXN0cyB0aGF0IFRlc3RQYXJ0
UmVzdWx0QXJyYXkgaW5pdGlhbGx5IGhhcyBzaXplIDAuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRB
cnJheVRlc3QsIEluaXRpYWxTaXplSXNaZXJvKSB7Ci0gIFRlc3RQYXJ0UmVzdWx0QXJyYXkgcmVz
dWx0czsKLSAgRVhQRUNUX0VRKDAsIHJlc3VsdHMuc2l6ZSgpKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBUZXN0UGFydFJlc3VsdEFycmF5IGNvbnRhaW5zIHRoZSBnaXZlbiBUZXN0UGFydFJlc3VsdAot
Ly8gYWZ0ZXIgb25lIEFwcGVuZCgpIG9wZXJhdGlvbi4KLVRFU1RfRihUZXN0UGFydFJlc3VsdEFy
cmF5VGVzdCwgQ29udGFpbnNHaXZlblJlc3VsdEFmdGVyQXBwZW5kKSB7Ci0gIFRlc3RQYXJ0UmVz
dWx0QXJyYXkgcmVzdWx0czsKLSAgcmVzdWx0cy5BcHBlbmQocjFfKTsKLSAgRVhQRUNUX0VRKDEs
IHJlc3VsdHMuc2l6ZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCJGYWlsdXJlIDEiLCByZXN1bHRzLkdl
dFRlc3RQYXJ0UmVzdWx0KDApLm1lc3NhZ2UoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVGVzdFBh
cnRSZXN1bHRBcnJheSBjb250YWlucyB0aGUgZ2l2ZW4gVGVzdFBhcnRSZXN1bHRzCi0vLyBhZnRl
ciB0d28gQXBwZW5kKCkgb3BlcmF0aW9ucy4KLVRFU1RfRihUZXN0UGFydFJlc3VsdEFycmF5VGVz
dCwgQ29udGFpbnNHaXZlblJlc3VsdHNBZnRlclR3b0FwcGVuZHMpIHsKLSAgVGVzdFBhcnRSZXN1
bHRBcnJheSByZXN1bHRzOwotICByZXN1bHRzLkFwcGVuZChyMV8pOwotICByZXN1bHRzLkFwcGVu
ZChyMl8pOwotICBFWFBFQ1RfRVEoMiwgcmVzdWx0cy5zaXplKCkpOwotICBFWFBFQ1RfU1RSRVEo
IkZhaWx1cmUgMSIsIHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMCkubWVzc2FnZSgpKTsKLSAg
RVhQRUNUX1NUUkVRKCJGYWlsdXJlIDIiLCByZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDEpLm1l
c3NhZ2UoKSk7Ci19Ci0KLXR5cGVkZWYgVGVzdFBhcnRSZXN1bHRBcnJheVRlc3QgVGVzdFBhcnRS
ZXN1bHRBcnJheURlYXRoVGVzdDsKLQotLy8gVGVzdHMgdGhhdCB0aGUgcHJvZ3JhbSBkaWVzIHdo
ZW4gR2V0VGVzdFBhcnRSZXN1bHQoKSBpcyBjYWxsZWQgd2l0aAotLy8gYW4gaW52YWxpZCBpbmRl
eC4KLVRFU1RfRihUZXN0UGFydFJlc3VsdEFycmF5RGVhdGhUZXN0LCBEaWVzV2hlbkluZGV4SXNP
dXRPZkJvdW5kKSB7Ci0gIFRlc3RQYXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsKLSAgcmVzdWx0cy5B
cHBlbmQocjFfKTsKLQotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHJlc3VsdHMuR2V0VGVz
dFBhcnRSZXN1bHQoLTEpLCAiIik7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQocmVzdWx0
cy5HZXRUZXN0UGFydFJlc3VsdCgxKSwgIiIpOwotfQotCi0vLyBUT0RPKG1oZXVsZUBnb29nbGUu
Y29tKTogQWRkIGEgdGVzdCBmb3IgdGhlIGNsYXNzIEhhc05ld0ZhdGFsRmFpbHVyZUhlbHBlci4K
LQotfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0LXR1cGxlX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0LXR1cGxlX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMmY3MGIz
ZDRlOTA3MGY0NTk2ODYyNWIzZmY5N2MzOTg0NzU3ZDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dC10dXBsZV90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMzIwICswLDAgQEAKLS8vIENvcHly
aWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
Ly8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0
aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
Ly8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBn
b29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVz
dC10dXBsZS5oPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
LQotbmFtZXNwYWNlIHsKLQotdXNpbmcgOjpzdGQ6OnRyMTo6Z2V0OwotdXNpbmcgOjpzdGQ6OnRy
MTo6bWFrZV90dXBsZTsKLXVzaW5nIDo6c3RkOjp0cjE6OnR1cGxlOwotdXNpbmcgOjpzdGQ6OnRy
MTo6dHVwbGVfZWxlbWVudDsKLXVzaW5nIDo6c3RkOjp0cjE6OnR1cGxlX3NpemU7Ci11c2luZyA6
OnRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTsKLQotLy8gVGVzdHMgdGhhdCB0dXBsZV9lbGVt
ZW50PEssIHR1cGxlPFQwLCBUMSwgLi4uLCBUTj4gPjo6dHlwZSByZXR1cm5zIFRLLgotVEVTVCh0
dXBsZV9lbGVtZW50X1Rlc3QsIFJldHVybnNFbGVtZW50VHlwZSkgewotICBTdGF0aWNBc3NlcnRU
eXBlRXE8aW50LCB0dXBsZV9lbGVtZW50PDAsIHR1cGxlPGludCwgY2hhcj4gPjo6dHlwZT4oKTsK
LSAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCYsIHR1cGxlX2VsZW1lbnQ8MSwgdHVwbGU8ZG91Ymxl
LCBpbnQmPiA+Ojp0eXBlPigpOwotICBTdGF0aWNBc3NlcnRUeXBlRXE8Ym9vbCwgdHVwbGVfZWxl
bWVudDwyLCB0dXBsZTxkb3VibGUsIGludCwgYm9vbD4gPjo6dHlwZT4oKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCB0dXBsZV9zaXplPFQ+Ojp2YWx1ZSBnaXZlcyB0aGUgbnVtYmVyIG9mIGZpZWxkcyBp
biB0dXBsZQotLy8gdHlwZSBULgotVEVTVCh0dXBsZV9zaXplX1Rlc3QsIFJldHVybnNOdW1iZXJP
ZkZpZWxkcykgewotICBFWFBFQ1RfRVEoMCwgK3R1cGxlX3NpemU8dHVwbGU8PiA+Ojp2YWx1ZSk7
Ci0gIEVYUEVDVF9FUSgxLCArdHVwbGVfc2l6ZTx0dXBsZTx2b2lkKj4gPjo6dmFsdWUpOwotICBF
WFBFQ1RfRVEoMSwgK3R1cGxlX3NpemU8dHVwbGU8Y2hhcj4gPjo6dmFsdWUpOwotICBFWFBFQ1Rf
RVEoMSwgKyh0dXBsZV9zaXplPHR1cGxlPHR1cGxlPGludCwgZG91YmxlPiA+ID46OnZhbHVlKSk7
Ci0gIEVYUEVDVF9FUSgyLCArKHR1cGxlX3NpemU8dHVwbGU8aW50JiwgY29uc3QgY2hhcj4gPjo6
dmFsdWUpKTsKLSAgRVhQRUNUX0VRKDMsICsodHVwbGVfc2l6ZTx0dXBsZTxjaGFyKiwgdm9pZCwg
Y29uc3QgYm9vbCY+ID46OnZhbHVlKSk7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyBhIHR1cGxl
IHdpdGggaXRzZWxmLgotVEVTVChDb21wYXJpc29uVGVzdCwgQ29tcGFyZXNXaXRoU2VsZikgewot
ICBjb25zdCB0dXBsZTxpbnQsIGNoYXIsIGJvb2w+IGEoNSwgJ2EnLCBmYWxzZSk7Ci0KLSAgRVhQ
RUNUX1RSVUUoYSA9PSBhKTsKLSAgRVhQRUNUX0ZBTFNFKGEgIT0gYSk7Ci19Ci0KLS8vIFRlc3Rz
IGNvbXBhcmluZyB0d28gdHVwbGVzIHdpdGggdGhlIHNhbWUgdmFsdWUuCi1URVNUKENvbXBhcmlz
b25UZXN0LCBDb21wYXJlc0VxdWFsVHVwbGVzKSB7Ci0gIGNvbnN0IHR1cGxlPGludCwgYm9vbD4g
YSg1LCB0cnVlKSwgYig1LCB0cnVlKTsKLQotICBFWFBFQ1RfVFJVRShhID09IGIpOwotICBFWFBF
Q1RfRkFMU0UoYSAhPSBiKTsKLX0KLQotLy8gVGVzdHMgY29tcGFyaW5nIHR3byBkaWZmZXJlbnQg
dHVwbGVzIHRoYXQgaGF2ZSBubyByZWZlcmVuY2UgZmllbGRzLgotVEVTVChDb21wYXJpc29uVGVz
dCwgQ29tcGFyZXNVbmVxdWFsVHVwbGVzV2l0aG91dFJlZmVyZW5jZUZpZWxkcykgewotICB0eXBl
ZGVmIHR1cGxlPGNvbnN0IGludCwgY2hhcj4gRm9vVHVwbGU7Ci0KLSAgY29uc3QgRm9vVHVwbGUg
YSgwLCAneCcpOwotICBjb25zdCBGb29UdXBsZSBiKDEsICdhJyk7Ci0KLSAgRVhQRUNUX1RSVUUo
YSAhPSBiKTsKLSAgRVhQRUNUX0ZBTFNFKGEgPT0gYik7Ci0KLSAgY29uc3QgRm9vVHVwbGUgYygx
LCAnYicpOwotCi0gIEVYUEVDVF9UUlVFKGIgIT0gYyk7Ci0gIEVYUEVDVF9GQUxTRShiID09IGMp
OwotfQotCi0vLyBUZXN0cyBjb21wYXJpbmcgdHdvIGRpZmZlcmVudCB0dXBsZXMgdGhhdCBoYXZl
IHJlZmVyZW5jZSBmaWVsZHMuCi1URVNUKENvbXBhcmlzb25UZXN0LCBDb21wYXJlc1VuZXF1YWxU
dXBsZXNXaXRoUmVmZXJlbmNlRmllbGRzKSB7Ci0gIHR5cGVkZWYgdHVwbGU8aW50JiwgY29uc3Qg
Y2hhciY+IEZvb1R1cGxlOwotCi0gIGludCBpID0gNTsKLSAgY29uc3QgY2hhciBjaCA9ICdhJzsK
LSAgY29uc3QgRm9vVHVwbGUgYShpLCBjaCk7Ci0KLSAgaW50IGogPSA2OwotICBjb25zdCBGb29U
dXBsZSBiKGosIGNoKTsKLQotICBFWFBFQ1RfVFJVRShhICE9IGIpOwotICBFWFBFQ1RfRkFMU0Uo
YSA9PSBiKTsKLQotICBqID0gNTsKLSAgY29uc3QgY2hhciBjaDIgPSAnYic7Ci0gIGNvbnN0IEZv
b1R1cGxlIGMoaiwgY2gyKTsKLQotICBFWFBFQ1RfVFJVRShiICE9IGMpOwotICBFWFBFQ1RfRkFM
U0UoYiA9PSBjKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIHR1cGxlIGZpZWxkIHdpdGggYSByZWZl
cmVuY2UgdHlwZSBpcyBhbiBhbGlhcyBvZiB0aGUKLS8vIHZhcmlhYmxlIGl0J3Mgc3VwcG9zZWQg
dG8gcmVmZXJlbmNlLgotVEVTVChSZWZlcmVuY2VGaWVsZFRlc3QsIElzQWxpYXNPZlJlZmVyZW5j
ZWRWYXJpYWJsZSkgewotICBpbnQgbiA9IDA7Ci0gIHR1cGxlPGJvb2wsIGludCY+IHQodHJ1ZSwg
bik7Ci0KLSAgbiA9IDE7Ci0gIEVYUEVDVF9FUShuLCBnZXQ8MT4odCkpCi0gICAgICA8PCAiQ2hh
bmdpbmcgYSB1bmRlcmx5aW5nIHZhcmlhYmxlIHNob3VsZCB1cGRhdGUgdGhlIHJlZmVyZW5jZSBm
aWVsZC4iOwotCi0gIC8vIE1ha2VzIHN1cmUgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gZG9lc24n
dCBkbyBhbnl0aGluZyBmdW5ueSB3aXRoCi0gIC8vIHRoZSAmIG9wZXJhdG9yIGZvciB0aGUgcmV0
dXJuIHR5cGUgb2YgZ2V0PD4oKS4KLSAgRVhQRUNUX0VRKCZuLCAmKGdldDwxPih0KSkpCi0gICAg
ICA8PCAiVGhlIGFkZHJlc3Mgb2YgYSByZWZlcmVuY2UgZmllbGQgc2hvdWxkIGVxdWFsIHRoZSBh
ZGRyZXNzIG9mICIKLSAgICAgIDw8ICJ0aGUgdW5kZXJseWluZyB2YXJpYWJsZS4iOwotCi0gIGdl
dDwxPih0KSA9IDI7Ci0gIEVYUEVDVF9FUSgyLCBuKQotICAgICAgPDwgIkNoYW5naW5nIGEgcmVm
ZXJlbmNlIGZpZWxkIHNob3VsZCB1cGRhdGUgdGhlIHVuZGVybHlpbmcgdmFyaWFibGUuIjsKLX0K
LQotLy8gVGVzdHMgdGhhdCB0dXBsZSdzIGRlZmF1bHQgY29uc3RydWN0b3IgZGVmYXVsdCBpbml0
aWFsaXplcyBlYWNoIGZpZWxkLgotLy8gVGhpcyB0ZXN0IG5lZWRzIHRvIGNvbXBpbGUgd2l0aG91
dCBnZW5lcmF0aW5nIHdhcm5pbmdzLgotVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgRGVmYXVs
dENvbnN0cnVjdG9yRGVmYXVsdEluaXRpYWxpemVzRWFjaEZpZWxkKSB7Ci0gIC8vIFRoZSBUUjEg
cmVwb3J0IHJlcXVpcmVzIHRoYXQgdHVwbGUncyBkZWZhdWx0IGNvbnN0cnVjdG9yIGRlZmF1bHQK
LSAgLy8gaW5pdGlhbGl6ZXMgZWFjaCBmaWVsZCwgZXZlbiBpZiBpdCdzIGEgcHJpbWl0aXZlIHR5
cGUuICBJZiB0aGUKLSAgLy8gaW1wbGVtZW50YXRpb24gZm9yZ2V0cyB0byBkbyB0aGlzLCB0aGlz
IHRlc3Qgd2lsbCBjYXRjaCBpdCBieQotICAvLyBnZW5lcmF0aW5nIHdhcm5pbmdzIGFib3V0IHVz
aW5nIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIChhc3N1bWluZwotICAvLyBhIGRlY2VudCBjb21w
aWxlcikuCi0KLSAgdHVwbGU8PiBlbXB0eTsKLQotICB0dXBsZTxpbnQ+IGExLCBiMTsKLSAgYjEg
PSBhMTsKLSAgRVhQRUNUX0VRKDAsIGdldDwwPihiMSkpOwotCi0gIHR1cGxlPGludCwgZG91Ymxl
PiBhMiwgYjI7Ci0gIGIyID0gYTI7Ci0gIEVYUEVDVF9FUSgwLCBnZXQ8MD4oYjIpKTsKLSAgRVhQ
RUNUX0VRKDAuMCwgZ2V0PDE+KGIyKSk7Ci0KLSAgdHVwbGU8ZG91YmxlLCBjaGFyLCBib29sKj4g
YTMsIGIzOwotICBiMyA9IGEzOwotICBFWFBFQ1RfRVEoMC4wLCBnZXQ8MD4oYjMpKTsKLSAgRVhQ
RUNUX0VRKCdcMCcsIGdldDwxPihiMykpOwotICBFWFBFQ1RfVFJVRShnZXQ8Mj4oYjMpID09IE5V
TEwpOwotCi0gIHR1cGxlPGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludD4gYTEwLCBiMTA7Ci0gIGIxMCA9IGExMDsKLSAgRVhQRUNUX0VRKDAsIGdldDwwPihi
MTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDwxPihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDwy
PihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDwzPihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdl
dDw0PihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDw1PihiMTApKTsKLSAgRVhQRUNUX0VRKDAs
IGdldDw2PihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDw3PihiMTApKTsKLSAgRVhQRUNUX0VR
KDAsIGdldDw4PihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDw5PihiMTApKTsKLX0KLQotLy8g
VGVzdHMgY29uc3RydWN0aW5nIGEgdHVwbGUgZnJvbSBpdHMgZmllbGRzLgotVEVTVChUdXBsZUNv
bnN0cnVjdG9yVGVzdCwgQ29uc3RydWN0c0Zyb21GaWVsZHMpIHsKLSAgaW50IG4gPSAxOwotICAv
LyBSZWZlcmVuY2UgZmllbGQuCi0gIHR1cGxlPGludCY+IGEobik7Ci0gIEVYUEVDVF9FUSgmbiwg
JihnZXQ8MD4oYSkpKTsKLQotICAvLyBOb24tcmVmZXJlbmNlIGZpZWxkcy4KLSAgdHVwbGU8aW50
LCBjaGFyPiBiKDUsICdhJyk7Ci0gIEVYUEVDVF9FUSg1LCBnZXQ8MD4oYikpOwotICBFWFBFQ1Rf
RVEoJ2EnLCBnZXQ8MT4oYikpOwotCi0gIC8vIENvbnN0IHJlZmVyZW5jZSBmaWVsZC4KLSAgY29u
c3QgaW50IG0gPSAyOwotICB0dXBsZTxib29sLCBjb25zdCBpbnQmPiBjKHRydWUsIG0pOwotICBF
WFBFQ1RfVFJVRShnZXQ8MD4oYykpOwotICBFWFBFQ1RfRVEoJm0sICYoZ2V0PDE+KGMpKSk7Ci19
Ci0KLS8vIFRlc3RzIHR1cGxlJ3MgY29weSBjb25zdHJ1Y3Rvci4KLVRFU1QoVHVwbGVDb25zdHJ1
Y3RvclRlc3QsIENvcHlDb25zdHJ1Y3RvcikgewotICB0dXBsZTxkb3VibGUsIGJvb2w+IGEoMC4w
LCB0cnVlKTsKLSAgdHVwbGU8ZG91YmxlLCBib29sPiBiKGEpOwotCi0gIEVYUEVDVF9ET1VCTEVf
RVEoMC4wLCBnZXQ8MD4oYikpOwotICBFWFBFQ1RfVFJVRShnZXQ8MT4oYikpOwotfQotCi0vLyBU
ZXN0cyBjb25zdHJ1Y3RpbmcgYSB0dXBsZSBmcm9tIGFub3RoZXIgdHVwbGUgdGhhdCBoYXMgYSBj
b21wYXRpYmxlCi0vLyBidXQgZGlmZmVyZW50IHR5cGUuCi1URVNUKFR1cGxlQ29uc3RydWN0b3JU
ZXN0LCBDb25zdHJ1Y3RzRnJvbURpZmZlcmVudFR1cGxlVHlwZSkgewotICB0dXBsZTxpbnQsIGlu
dCwgY2hhcj4gYSgwLCAxLCAnYScpOwotICB0dXBsZTxkb3VibGUsIGxvbmcsIGludD4gYihhKTsK
LQotICBFWFBFQ1RfRE9VQkxFX0VRKDAuMCwgZ2V0PDA+KGIpKTsKLSAgRVhQRUNUX0VRKDEsIGdl
dDwxPihiKSk7Ci0gIEVYUEVDVF9FUSgnYScsIGdldDwyPihiKSk7Ci19Ci0KLS8vIFRlc3RzIGNv
bnN0cnVjdGluZyBhIDItdHVwbGUgZnJvbSBhbiBzdGQ6OnBhaXIuCi1URVNUKFR1cGxlQ29uc3Ry
dWN0b3JUZXN0LCBDb25zdHJ1Y3RzRnJvbVBhaXIpIHsKLSAgOjpzdGQ6OnBhaXI8aW50LCBjaGFy
PiBhKDEsICdhJyk7Ci0gIHR1cGxlPGludCwgY2hhcj4gYihhKTsKLSAgdHVwbGU8aW50LCBjb25z
dCBjaGFyJj4gYyhhKTsKLX0KLQotLy8gVGVzdHMgYXNzaWduaW5nIGEgdHVwbGUgdG8gYW5vdGhl
ciB0dXBsZSB3aXRoIHRoZSBzYW1lIHR5cGUuCi1URVNUKFR1cGxlQXNzaWdubWVudFRlc3QsIEFz
c2lnbnNUb1NhbWVUdXBsZVR5cGUpIHsKLSAgY29uc3QgdHVwbGU8aW50LCBsb25nPiBhKDUsIDdM
KTsKLSAgdHVwbGU8aW50LCBsb25nPiBiOwotICBiID0gYTsKLSAgRVhQRUNUX0VRKDUsIGdldDww
PihiKSk7Ci0gIEVYUEVDVF9FUSg3TCwgZ2V0PDE+KGIpKTsKLX0KLQotLy8gVGVzdHMgYXNzaWdu
aW5nIGEgdHVwbGUgdG8gYW5vdGhlciB0dXBsZSB3aXRoIGEgZGlmZmVyZW50IGJ1dAotLy8gY29t
cGF0aWJsZSB0eXBlLgotVEVTVChUdXBsZUFzc2lnbm1lbnRUZXN0LCBBc3NpZ25zVG9EaWZmZXJl
bnRUdXBsZVR5cGUpIHsKLSAgY29uc3QgdHVwbGU8aW50LCBsb25nLCBib29sPiBhKDEsIDdMLCB0
cnVlKTsKLSAgdHVwbGU8bG9uZywgaW50LCBib29sPiBiOwotICBiID0gYTsKLSAgRVhQRUNUX0VR
KDFMLCBnZXQ8MD4oYikpOwotICBFWFBFQ1RfRVEoNywgZ2V0PDE+KGIpKTsKLSAgRVhQRUNUX1RS
VUUoZ2V0PDI+KGIpKTsKLX0KLQotLy8gVGVzdHMgYXNzaWduaW5nIGFuIHN0ZDo6cGFpciB0byBh
IDItdHVwbGUuCi1URVNUKFR1cGxlQXNzaWdubWVudFRlc3QsIEFzc2lnbnNGcm9tUGFpcikgewot
ICBjb25zdCA6OnN0ZDo6cGFpcjxpbnQsIGJvb2w+IGEoNSwgdHJ1ZSk7Ci0gIHR1cGxlPGludCwg
Ym9vbD4gYjsKLSAgYiA9IGE7Ci0gIEVYUEVDVF9FUSg1LCBnZXQ8MD4oYikpOwotICBFWFBFQ1Rf
VFJVRShnZXQ8MT4oYikpOwotCi0gIHR1cGxlPGxvbmcsIGJvb2w+IGM7Ci0gIGMgPSBhOwotICBF
WFBFQ1RfRVEoNUwsIGdldDwwPihjKSk7Ci0gIEVYUEVDVF9UUlVFKGdldDwxPihjKSk7Ci19Ci0K
LS8vIEEgZml4dHVyZSBmb3IgdGVzdGluZyBiaWcgdHVwbGVzLgotY2xhc3MgQmlnVHVwbGVUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdHlwZWRlZiB0dXBsZTxp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQ+IEJpZ1R1cGxl
OwotCi0gIEJpZ1R1cGxlVGVzdCgpIDoKLSAgICAgIGFfKDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDIpLAotICAgICAgYl8oMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMykge30KLQotICBC
aWdUdXBsZSBhXywgYl87Ci19OwotCi0vLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYmlnIHR1cGxlcy4K
LVRFU1RfRihCaWdUdXBsZVRlc3QsIENvbnN0cnVjdGlvbikgewotICBCaWdUdXBsZSBhOwotICBC
aWdUdXBsZSBiKGJfKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBnZXQ8Tj4odCkgcmV0dXJucyB0aGUg
Ti10aCAoMC1iYXNlZCkgZmllbGQgb2YgdHVwbGUgdC4KLVRFU1RfRihCaWdUdXBsZVRlc3QsIGdl
dCkgewotICBFWFBFQ1RfRVEoMSwgZ2V0PDA+KGFfKSk7Ci0gIEVYUEVDVF9FUSgyLCBnZXQ8OT4o
YV8pKTsKLQotICAvLyBUZXN0cyB0aGF0IGdldCgpIHdvcmtzIG9uIGEgY29uc3QgdHVwbGUgdG9v
LgotICBjb25zdCBCaWdUdXBsZSBhKGFfKTsKLSAgRVhQRUNUX0VRKDEsIGdldDwwPihhKSk7Ci0g
IEVYUEVDVF9FUSgyLCBnZXQ8OT4oYSkpOwotfQotCi0vLyBUZXN0cyBjb21wYXJpbmcgYmlnIHR1
cGxlcy4KLVRFU1RfRihCaWdUdXBsZVRlc3QsIENvbXBhcmlzb25zKSB7Ci0gIEVYUEVDVF9UUlVF
KGFfID09IGFfKTsKLSAgRVhQRUNUX0ZBTFNFKGFfICE9IGFfKTsKLQotICBFWFBFQ1RfVFJVRShh
XyAhPSBiXyk7Ci0gIEVYUEVDVF9GQUxTRShhXyA9PSBiXyk7Ci19Ci0KLVRFU1QoTWFrZVR1cGxl
VGVzdCwgV29ya3NGb3JTY2FsYXJUeXBlcykgewotICB0dXBsZTxib29sLCBpbnQ+IGE7Ci0gIGEg
PSBtYWtlX3R1cGxlKHRydWUsIDUpOwotICBFWFBFQ1RfVFJVRShnZXQ8MD4oYSkpOwotICBFWFBF
Q1RfRVEoNSwgZ2V0PDE+KGEpKTsKLQotICB0dXBsZTxjaGFyLCBpbnQsIGxvbmc+IGI7Ci0gIGIg
PSBtYWtlX3R1cGxlKCdhJywgJ2InLCA1KTsKLSAgRVhQRUNUX0VRKCdhJywgZ2V0PDA+KGIpKTsK
LSAgRVhQRUNUX0VRKCdiJywgZ2V0PDE+KGIpKTsKLSAgRVhQRUNUX0VRKDUsIGdldDwyPihiKSk7
Ci19Ci0KLVRFU1QoTWFrZVR1cGxlVGVzdCwgV29ya3NGb3JQb2ludGVycykgewotICBpbnQgYVtd
ID0geyAxLCAyLCAzLCA0IH07Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IHN0ciA9ICJoaSI7Ci0gIGlu
dCogY29uc3QgcCA9IGE7Ci0KLSAgdHVwbGU8Y29uc3QgY2hhciosIGludCo+IHQ7Ci0gIHQgPSBt
YWtlX3R1cGxlKHN0ciwgcCk7Ci0gIEVYUEVDVF9FUShzdHIsIGdldDwwPih0KSk7Ci0gIEVYUEVD
VF9FUShwLCBnZXQ8MT4odCkpOwotfQotCi19ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYwppbmRl
eCA3OWE4YTg3ZGNmZGJkZTUzYzFlMGQ4YzZkMTFhOTg2OTIyYjAyZmY4Li5lZDk2NDIxYzY3Y2E4
YTJmYjM4ZjNkODg5NjAyMzFlZjIyYmVhNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0Ml90ZXN0LmNjCkBAIC0yNiwxMyArMjYs
MTIgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8v
Ci0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogI2luY2x1ZGUg
PHZlY3Rvcj4KIAogI2luY2x1ZGUgInRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgiCi0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAjaWYgR1RF
U1RfSEFTX1RZUEVEX1RFU1RfUAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNjCmluZGV4IGYyYzM5NzIzMTAxNzc5ZTc3MTg0
N2Q1OTJkOWZhYmI1NmYzYjQ1YzYuLmMzOGJiOTRhMjkwZDkxNDAzMjI5MTE5ZTMwYjlmZGM1NTg5
NmE0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlw
ZWQtdGVzdF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Qt
dHlwZWQtdGVzdF90ZXN0LmNjCkBAIC0yNiwxNCArMjYsMTggQEAKIC8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUu
Y29tIChaaGFueW9uZyBXYW4pCisKKworI2luY2x1ZGUgInRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90
ZXN0LmgiCiAKICNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSAi
dGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuaCIKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpZiBfTVNDX1ZFUgorR1RFU1RfRElTQUJMRV9N
U0NfV0FSTklOR1NfUFVTSF8oNDEyNyAvKiBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0
YW50ICovKQorI2VuZGlmICAvLyAgX01TQ19WRVIKIAogdXNpbmcgdGVzdGluZzo6VGVzdDsKIApA
QCAtMTY1LDYgKzE2OSw0MCBAQCBUWVBFRF9URVNUKE51bWVyaWNUZXN0LCBEZWZhdWx0SXNaZXJv
KSB7CiAKIH0gIC8vIG5hbWVzcGFjZSBsaWJyYXJ5MQogCisvLyBUZXN0cyB0aGF0IGN1c3RvbSBu
YW1lcyB3b3JrLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlZFRlc3RXaXRoTmFt
ZXMgOiBwdWJsaWMgVGVzdCB7fTsKKworY2xhc3MgVHlwZWRUZXN0TmFtZXMgeworIHB1YmxpYzoK
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBHZXROYW1lKGlu
dCBpKSB7CisgICAgaWYgKHRlc3Rpbmc6OmludGVybmFsOjpJc1NhbWU8VCwgY2hhcj46OnZhbHVl
KSB7CisgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoImNoYXJfIikgKyA6OnRlc3Rpbmc6OlByaW50
VG9TdHJpbmcoaSk7CisgICAgfQorICAgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFQs
IGludD46OnZhbHVlKSB7CisgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoImludF8iKSArIDo6dGVz
dGluZzo6UHJpbnRUb1N0cmluZyhpKTsKKyAgICB9CisgIH0KK307CisKK1RZUEVEX1RFU1RfQ0FT
RShUeXBlZFRlc3RXaXRoTmFtZXMsIFR3b1R5cGVzLCBUeXBlZFRlc3ROYW1lcyk7CisKK1RZUEVE
X1RFU1QoVHlwZWRUZXN0V2l0aE5hbWVzLCBUZXN0Q2FzZU5hbWUpIHsKKyAgaWYgKHRlc3Rpbmc6
OmludGVybmFsOjpJc1NhbWU8VHlwZVBhcmFtLCBjaGFyPjo6dmFsdWUpIHsKKyAgICBFWFBFQ1Rf
U1RSRVEoOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKQorICAgICAgICAgICAgICAg
ICAgICAgLT5jdXJyZW50X3Rlc3RfaW5mbygpCisgICAgICAgICAgICAgICAgICAgICAtPnRlc3Rf
Y2FzZV9uYW1lKCksCisgICAgICAgICAgICAgICAgICJUeXBlZFRlc3RXaXRoTmFtZXMvY2hhcl8w
Iik7CisgIH0KKyAgaWYgKHRlc3Rpbmc6OmludGVybmFsOjpJc1NhbWU8VHlwZVBhcmFtLCBpbnQ+
Ojp2YWx1ZSkgeworICAgIEVYUEVDVF9TVFJFUSg6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0
YW5jZSgpCisgICAgICAgICAgICAgICAgICAgICAtPmN1cnJlbnRfdGVzdF9pbmZvKCkKKyAgICAg
ICAgICAgICAgICAgICAgIC0+dGVzdF9jYXNlX25hbWUoKSwKKyAgICAgICAgICAgICAgICAgIlR5
cGVkVGVzdFdpdGhOYW1lcy9pbnRfMSIpOworICB9Cit9CisKICNlbmRpZiAgLy8gR1RFU1RfSEFT
X1RZUEVEX1RFU1QKIAogLy8gVGhpcyAjaWZkZWYgYmxvY2sgdGVzdHMgdHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3RzLgpAQCAtMjY1LDYgKzMwMyw0NiBAQCBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0Vf
UChEZXJpdmVkVGVzdCwKIHR5cGVkZWYgVHlwZXM8c2hvcnQsIGxvbmc+IE15VHdvVHlwZXM7CiBJ
TlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRGVyaXZlZFRlc3QsIE15VHdvVHlwZXMp
OwogCisvLyBUZXN0cyB0aGF0IGN1c3RvbSBuYW1lcyB3b3JrIHdpdGggdHlwZSBwYXJhbWV0cml6
ZWQgdGVzdHMuIFdlIHJldXNlIHRoZQorLy8gVHdvVHlwZXMgZnJvbSBhYm92ZSBoZXJlLgordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlUGFyYW1ldHJpemVkVGVzdFdpdGhOYW1lcyA6
IHB1YmxpYyBUZXN0IHt9OworCitUWVBFRF9URVNUX0NBU0VfUChUeXBlUGFyYW1ldHJpemVkVGVz
dFdpdGhOYW1lcyk7CisKK1RZUEVEX1RFU1RfUChUeXBlUGFyYW1ldHJpemVkVGVzdFdpdGhOYW1l
cywgVGVzdENhc2VOYW1lKSB7CisgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFR5cGVQ
YXJhbSwgY2hhcj46OnZhbHVlKSB7CisgICAgRVhQRUNUX1NUUkVRKDo6dGVzdGluZzo6VW5pdFRl
c3Q6OkdldEluc3RhbmNlKCkKKyAgICAgICAgICAgICAgICAgICAgIC0+Y3VycmVudF90ZXN0X2lu
Zm8oKQorICAgICAgICAgICAgICAgICAgICAgLT50ZXN0X2Nhc2VfbmFtZSgpLAorICAgICAgICAg
ICAgICAgICAiQ3VzdG9tTmFtZS9UeXBlUGFyYW1ldHJpemVkVGVzdFdpdGhOYW1lcy9wX2NoYXJf
MCIpOworICB9CisgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFR5cGVQYXJhbSwgaW50
Pjo6dmFsdWUpIHsKKyAgICBFWFBFQ1RfU1RSRVEoOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5z
dGFuY2UoKQorICAgICAgICAgICAgICAgICAgICAgLT5jdXJyZW50X3Rlc3RfaW5mbygpCisgICAg
ICAgICAgICAgICAgICAgICAtPnRlc3RfY2FzZV9uYW1lKCksCisgICAgICAgICAgICAgICAgICJD
dXN0b21OYW1lL1R5cGVQYXJhbWV0cml6ZWRUZXN0V2l0aE5hbWVzL3BfaW50XzEiKTsKKyAgfQor
fQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChUeXBlUGFyYW1ldHJpemVkVGVzdFdpdGhO
YW1lcywgVGVzdENhc2VOYW1lKTsKKworY2xhc3MgVHlwZVBhcmFtZXRyaXplZFRlc3ROYW1lcyB7
CisgcHVibGljOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIHN0ZDo6c3RyaW5n
IEdldE5hbWUoaW50IGkpIHsKKyAgICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxULCBj
aGFyPjo6dmFsdWUpIHsKKyAgICAgIHJldHVybiBzdGQ6OnN0cmluZygicF9jaGFyXyIpICsgOjp0
ZXN0aW5nOjpQcmludFRvU3RyaW5nKGkpOworICAgIH0KKyAgICBpZiAodGVzdGluZzo6aW50ZXJu
YWw6OklzU2FtZTxULCBpbnQ+Ojp2YWx1ZSkgeworICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCJw
X2ludF8iKSArIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhpKTsKKyAgICB9CisgIH0KK307CisK
K0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKEN1c3RvbU5hbWUsIFR5cGVQYXJhbWV0cml6
ZWRUZXN0V2l0aE5hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHdvVHlwZXMs
IFR5cGVQYXJhbWV0cml6ZWRUZXN0TmFtZXMpOworCiAvLyBUZXN0cyB0aGF0IG11bHRpcGxlIFRZ
UEVEX1RFU1RfQ0FTRV9QJ3MgY2FuIGJlIGRlZmluZWQgaW4gdGhlIHNhbWUKIC8vIHRyYW5zbGF0
aW9uIHVuaXQuCiAKQEAgLTM0Myw2ICs0MjEsMjUgQEAgUkVHSVNURVJfVFlQRURfVEVTVF9DQVNF
X1AoTnVtZXJpY1Rlc3QsCiB0eXBlZGVmIFR5cGVzPGludCwgZG91YmxlPiBOdW1lcmljVHlwZXM7
CiBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgTnVtZXJpY1Rlc3QsIE51bWVyaWNU
eXBlcyk7CiAKK3N0YXRpYyBjb25zdCBjaGFyKiBHZXRUZXN0TmFtZSgpIHsKKyAgcmV0dXJuIHRl
c3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpLT5uYW1l
KCk7Cit9CisvLyBUZXN0IHRoZSBzdHJpcHBpbmcgb2Ygc3BhY2UgZnJvbSB0ZXN0IG5hbWVzCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgVHJpbW1lZFRlc3QgOiBwdWJsaWMgVGVzdCB7IH07
CitUWVBFRF9URVNUX0NBU0VfUChUcmltbWVkVGVzdCk7CitUWVBFRF9URVNUX1AoVHJpbW1lZFRl
c3QsIFRlc3QxKSB7IEVYUEVDVF9TVFJFUSgiVGVzdDEiLCBHZXRUZXN0TmFtZSgpKTsgfQorVFlQ
RURfVEVTVF9QKFRyaW1tZWRUZXN0LCBUZXN0MikgeyBFWFBFQ1RfU1RSRVEoIlRlc3QyIiwgR2V0
VGVzdE5hbWUoKSk7IH0KK1RZUEVEX1RFU1RfUChUcmltbWVkVGVzdCwgVGVzdDMpIHsgRVhQRUNU
X1NUUkVRKCJUZXN0MyIsIEdldFRlc3ROYW1lKCkpOyB9CitUWVBFRF9URVNUX1AoVHJpbW1lZFRl
c3QsIFRlc3Q0KSB7IEVYUEVDVF9TVFJFUSgiVGVzdDQiLCBHZXRUZXN0TmFtZSgpKTsgfQorVFlQ
RURfVEVTVF9QKFRyaW1tZWRUZXN0LCBUZXN0NSkgeyBFWFBFQ1RfU1RSRVEoIlRlc3Q1IiwgR2V0
VGVzdE5hbWUoKSk7IH0KK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKAorICAgIFRyaW1tZWRU
ZXN0LAorICAgIFRlc3QxLCBUZXN0MixUZXN0MyAsIFRlc3Q0ICxUZXN0NSApOyAgLy8gTk9MSU5U
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPiBzdHJ1Y3QgTXlQYWlyIHt9Owor
Ly8gQmUgc3VyZSB0byB0cnkgYSB0eXBlIHdpdGggYSBjb21tYSBpbiBpdHMgbmFtZSBqdXN0IGlu
IGNhc2UgaXQgbWF0dGVycy4KK3R5cGVkZWYgVHlwZXM8aW50LCBkb3VibGUsIE15UGFpcjxpbnQs
IGludD4gPiBUcmltVHlwZXM7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgVHJp
bW1lZFRlc3QsIFRyaW1UeXBlcyk7CisKIH0gIC8vIG5hbWVzcGFjZSBsaWJyYXJ5MgogCiAjZW5k
aWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUX1AKQEAgLTM1Nyw0ICs0NTQsOCBAQCBJTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgTnVtZXJpY1Rlc3QsIE51bWVyaWNUeXBlcyk7CiAv
LyBtdXN0IGJlIGRlZmluZWQpLiBUaGlzIGR1bW15IHRlc3Qga2VlcHMgZ3Rlc3RfbWFpbiBsaW5r
ZWQgaW4uCiBURVNUKER1bW15VGVzdCwgVHlwZWRUZXN0c0FyZU5vdFN1cHBvcnRlZE9uVGhpc1Bs
YXRmb3JtKSB7fQogCisjaWYgX01TQ19WRVIKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BP
UF8oKSAgLy8gIDQxMjcKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIF9N
U0NfVkVSCisKICNlbmRpZiAgLy8gI2lmICFkZWZpbmVkKEdURVNUX0hBU19UWVBFRF9URVNUKSAm
JiAhZGVmaW5lZChHVEVTVF9IQVNfVFlQRURfVEVTVF9QKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgKaW5kZXggNDBkZmVhYzZl
MDFkOTdlY2Y3ZmViYjg2NWZjZTY2ODQ4YmE4ZThkYi4uMmNjZTY3YzgyNWE2Y2FiZGI5YTU0Yjkx
OTI5YzAwYzk5MmEwZDQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oCkBAIC0yNiwxMyArMjYsMTIgQEAKIC8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdh
bkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogI2lmbmRlZiBHVEVTVF9URVNUX0dURVNU
X1RZUEVEX1RFU1RfVEVTVF9IXwogI2RlZmluZSBHVEVTVF9URVNUX0dURVNUX1RZUEVEX1RFU1Rf
VEVTVF9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVz
dC5oIgogCiAjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYwppbmRleCA3
ZTBmOGY4MDQ1ZDcxYzAxNWQxMjk0ZmZlZjRjYTU0NWRkYzU1MWY5Li5mM2VhMDNhNTk2ZDBmOTlh
MzkxMjUyNjMwZGNhMTA2MjI5MzExMmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2MKQEAgLTI1LDE1ICsyNSwx
NCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAv
LwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQotLy8KLS8vIFRoZSBH
b29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIFRoZSBHb29nbGUg
QysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAvLyBU
aGlzIGZpbGUgY29udGFpbnMgdGVzdHMgdmVyaWZ5aW5nIGNvcnJlY3RuZXNzIG9mIGRhdGEgcHJv
dmlkZWQgdmlhCiAvLyBVbml0VGVzdCdzIHB1YmxpYyBtZXRob2RzLgogCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAjaW5jbHVkZSA8c3RyaW5n
Lmg+ICAvLyBGb3Igc3RyY21wLgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTU0LDcgKzUzLDcg
QEAgY2xhc3MgVW5pdFRlc3RIZWxwZXIgewogIHB1YmxpYzoKICAgLy8gUmV0dXJucyB0aGUgYXJy
YXkgb2YgcG9pbnRlcnMgdG8gYWxsIHRlc3QgY2FzZXMgc29ydGVkIGJ5IHRoZSB0ZXN0IGNhc2UK
ICAgLy8gbmFtZS4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZSBh
cnJheS4KLSAgc3RhdGljIFRlc3RDYXNlIGNvbnN0KiogY29uc3QgR2V0U29ydGVkVGVzdENhc2Vz
KCkgeworICBzdGF0aWMgVGVzdENhc2UgY29uc3QqKiBHZXRTb3J0ZWRUZXN0Q2FzZXMoKSB7CiAg
ICAgVW5pdFRlc3QmIHVuaXRfdGVzdCA9ICpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKTsKICAgICBU
ZXN0Q2FzZSBjb25zdCoqIGNvbnN0IHRlc3RfY2FzZXMgPQogICAgICAgICBuZXcgY29uc3QgVGVz
dENhc2UqW3VuaXRfdGVzdC50b3RhbF90ZXN0X2Nhc2VfY291bnQoKV07CkBAIC04Myw3ICs4Miw3
IEBAIGNsYXNzIFVuaXRUZXN0SGVscGVyIHsKICAgLy8gUmV0dXJucyB0aGUgYXJyYXkgb2YgcG9p
bnRlcnMgdG8gYWxsIHRlc3RzIGluIGEgcGFydGljdWxhciB0ZXN0IGNhc2UKICAgLy8gc29ydGVk
IGJ5IHRoZSB0ZXN0IG5hbWUuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGlu
ZyB0aGUKICAgLy8gYXJyYXkuCi0gIHN0YXRpYyBUZXN0SW5mbyBjb25zdCoqIGNvbnN0IEdldFNv
cnRlZFRlc3RzKGNvbnN0IFRlc3RDYXNlKiB0ZXN0X2Nhc2UpIHsKKyAgc3RhdGljIFRlc3RJbmZv
IGNvbnN0KiogR2V0U29ydGVkVGVzdHMoY29uc3QgVGVzdENhc2UqIHRlc3RfY2FzZSkgewogICAg
IFRlc3RJbmZvIGNvbnN0KiogY29uc3QgdGVzdHMgPQogICAgICAgICBuZXcgY29uc3QgVGVzdElu
Zm8qW3Rlc3RfY2FzZS0+dG90YWxfdGVzdF9jb3VudCgpXTsKIApAQCAtMTAzLDEyICsxMDIsNiBA
QCBUWVBFRF9URVNUKFRlc3RDYXNlV2l0aENvbW1lbnRUZXN0LCBEdW1teSkge30KIAogY29uc3Qg
aW50IGtUeXBlZFRlc3RDYXNlcyA9IDE7CiBjb25zdCBpbnQga1R5cGVkVGVzdHMgPSAxOwotCi1T
dHJpbmcgR2V0RXhwZWN0ZWRUZXN0Q2FzZUNvbW1lbnQoKSB7Ci0gIE1lc3NhZ2UgY29tbWVudDsK
LSAgY29tbWVudCA8PCAiVHlwZVBhcmFtID0gIiA8PCBHZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIo
KTsKLSAgcmV0dXJuIGNvbW1lbnQuR2V0U3RyaW5nKCk7Ci19CiAjZWxzZQogY29uc3QgaW50IGtU
eXBlZFRlc3RDYXNlcyA9IDA7CiBjb25zdCBpbnQga1R5cGVkVGVzdHMgPSAwOwpAQCAtMTQzLDEy
ICsxMzYsMTkgQEAgVEVTVChBcGlUZXN0LCBVbml0VGVzdEltbXV0YWJsZUFjY2Vzc29yc1dvcmsp
IHsKICAgUmVjb3JkUHJvcGVydHkoImtleSIsICJ2YWx1ZSIpOwogfQogCitBc3NlcnRpb25SZXN1
bHQgSXNOdWxsKGNvbnN0IGNoYXIqIHN0cikgeworICBpZiAoc3RyICE9IE5VTEwpIHsKKyAgICBy
ZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJhcmd1bWVudCBpcyAiIDw8IHN0
cjsKKyAgfQorICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOworfQorCiBURVNUKEFwaVRlc3Qs
IFRlc3RDYXNlSW1tdXRhYmxlQWNjZXNzb3JzV29yaykgewogICBjb25zdCBUZXN0Q2FzZSogdGVz
dF9jYXNlID0gVW5pdFRlc3RIZWxwZXI6OkZpbmRUZXN0Q2FzZSgiQXBpVGVzdCIpOwogICBBU1NF
UlRfVFJVRSh0ZXN0X2Nhc2UgIT0gTlVMTCk7CiAKICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0Iiwg
dGVzdF9jYXNlLT5uYW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RfY2FzZS0+Y29tbWVu
dCgpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgpKSk7CiAg
IEVYUEVDVF9UUlVFKHRlc3RfY2FzZS0+c2hvdWxkX3J1bigpKTsKICAgRVhQRUNUX0VRKDEsIHRl
c3RfY2FzZS0+ZGlzYWJsZWRfdGVzdF9jb3VudCgpKTsKICAgRVhQRUNUX0VRKDMsIHRlc3RfY2Fz
ZS0+dGVzdF90b19ydW5fY291bnQoKSk7CkBAIC0xNTgsMjYgKzE1OCwyNiBAQCBURVNUKEFwaVRl
c3QsIFRlc3RDYXNlSW1tdXRhYmxlQWNjZXNzb3JzV29yaykgewogCiAgIEVYUEVDVF9TVFJFUSgi
RElTQUJMRURfRHVtbXkxIiwgdGVzdHNbMF0tPm5hbWUoKSk7CiAgIEVYUEVDVF9TVFJFUSgiQXBp
VGVzdCIsIHRlc3RzWzBdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0
ZXN0c1swXS0+Y29tbWVudCgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1swXS0+dGVzdF9j
YXNlX2NvbW1lbnQoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1swXS0+dmFsdWVfcGFy
YW0oKSkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMF0tPnR5cGVfcGFyYW0oKSkpOwog
ICBFWFBFQ1RfRkFMU0UodGVzdHNbMF0tPnNob3VsZF9ydW4oKSk7CiAKICAgRVhQRUNUX1NUUkVR
KCJUZXN0Q2FzZURpc2FibGVkQWNjZXNzb3JzV29yayIsIHRlc3RzWzFdLT5uYW1lKCkpOwogICBF
WFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1sxXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVY
UEVDVF9TVFJFUSgiIiwgdGVzdHNbMV0tPmNvbW1lbnQoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwg
dGVzdHNbMV0tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVz
dHNbMV0tPnZhbHVlX3BhcmFtKCkpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzFdLT50
eXBlX3BhcmFtKCkpKTsKICAgRVhQRUNUX1RSVUUodGVzdHNbMV0tPnNob3VsZF9ydW4oKSk7CiAK
ICAgRVhQRUNUX1NUUkVRKCJUZXN0Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dvcmsiLCB0ZXN0c1sy
XS0+bmFtZSgpKTsKICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbMl0tPnRlc3RfY2Fz
ZV9uYW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzJdLT5jb21tZW50KCkpOwotICBF
WFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzJdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgRVhQRUNU
X1RSVUUoSXNOdWxsKHRlc3RzWzJdLT52YWx1ZV9wYXJhbSgpKSk7CisgIEVYUEVDVF9UUlVFKElz
TnVsbCh0ZXN0c1syXS0+dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVDVF9UUlVFKHRlc3RzWzJdLT5z
aG91bGRfcnVuKCkpOwogCiAgIEVYUEVDVF9TVFJFUSgiVW5pdFRlc3RJbW11dGFibGVBY2Nlc3Nv
cnNXb3JrIiwgdGVzdHNbM10tPm5hbWUoKSk7CiAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRl
c3RzWzNdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1szXS0+
Y29tbWVudCgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1szXS0+dGVzdF9jYXNlX2NvbW1l
bnQoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1szXS0+dmFsdWVfcGFyYW0oKSkpOwor
ICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbM10tPnR5cGVfcGFyYW0oKSkpOwogICBFWFBFQ1Rf
VFJVRSh0ZXN0c1szXS0+c2hvdWxkX3J1bigpKTsKIAogICBkZWxldGVbXSB0ZXN0czsKQEAgLTE4
OCw3ICsxODgsNyBAQCBURVNUKEFwaVRlc3QsIFRlc3RDYXNlSW1tdXRhYmxlQWNjZXNzb3JzV29y
aykgewogICBBU1NFUlRfVFJVRSh0ZXN0X2Nhc2UgIT0gTlVMTCk7CiAKICAgRVhQRUNUX1NUUkVR
KCJUZXN0Q2FzZVdpdGhDb21tZW50VGVzdC8wIiwgdGVzdF9jYXNlLT5uYW1lKCkpOwotICBFWFBF
Q1RfU1RSRVEoR2V0RXhwZWN0ZWRUZXN0Q2FzZUNvbW1lbnQoKS5jX3N0cigpLCB0ZXN0X2Nhc2Ut
PmNvbW1lbnQoKSk7CisgIEVYUEVDVF9TVFJFUShHZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIoKSwg
dGVzdF9jYXNlLT50eXBlX3BhcmFtKCkpOwogICBFWFBFQ1RfVFJVRSh0ZXN0X2Nhc2UtPnNob3Vs
ZF9ydW4oKSk7CiAgIEVYUEVDVF9FUSgwLCB0ZXN0X2Nhc2UtPmRpc2FibGVkX3Rlc3RfY291bnQo
KSk7CiAgIEVYUEVDVF9FUSgxLCB0ZXN0X2Nhc2UtPnRlc3RfdG9fcnVuX2NvdW50KCkpOwpAQCAt
MTk4LDkgKzE5OCw4IEBAIFRFU1QoQXBpVGVzdCwgVGVzdENhc2VJbW11dGFibGVBY2Nlc3NvcnNX
b3JrKSB7CiAKICAgRVhQRUNUX1NUUkVRKCJEdW1teSIsIHRlc3RzWzBdLT5uYW1lKCkpOwogICBF
WFBFQ1RfU1RSRVEoIlRlc3RDYXNlV2l0aENvbW1lbnRUZXN0LzAiLCB0ZXN0c1swXS0+dGVzdF9j
YXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMF0tPmNvbW1lbnQoKSk7Ci0g
IEVYUEVDVF9TVFJFUShHZXRFeHBlY3RlZFRlc3RDYXNlQ29tbWVudCgpLmNfc3RyKCksCi0gICAg
ICAgICAgICAgICB0ZXN0c1swXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgIEVYUEVDVF9UUlVF
KElzTnVsbCh0ZXN0c1swXS0+dmFsdWVfcGFyYW0oKSkpOworICBFWFBFQ1RfU1RSRVEoR2V0VHlw
ZU5hbWU8aW50PigpLmNfc3RyKCksIHRlc3RzWzBdLT50eXBlX3BhcmFtKCkpOwogICBFWFBFQ1Rf
VFJVRSh0ZXN0c1swXS0+c2hvdWxkX3J1bigpKTsKIAogICBkZWxldGVbXSB0ZXN0czsKQEAgLTIx
Miw3ICsyMTEsNyBAQCBURVNUKEFwaVRlc3QsIFRlc3RDYXNlRGlzYWJsZWRBY2Nlc3NvcnNXb3Jr
KSB7CiAgIEFTU0VSVF9UUlVFKHRlc3RfY2FzZSAhPSBOVUxMKTsKIAogICBFWFBFQ1RfU1RSRVEo
IkRJU0FCTEVEX1Rlc3QiLCB0ZXN0X2Nhc2UtPm5hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwg
dGVzdF9jYXNlLT5jb21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdF9jYXNlLT50
eXBlX3BhcmFtKCkpKTsKICAgRVhQRUNUX0ZBTFNFKHRlc3RfY2FzZS0+c2hvdWxkX3J1bigpKTsK
ICAgRVhQRUNUX0VRKDEsIHRlc3RfY2FzZS0+ZGlzYWJsZWRfdGVzdF9jb3VudCgpKTsKICAgRVhQ
RUNUX0VRKDAsIHRlc3RfY2FzZS0+dGVzdF90b19ydW5fY291bnQoKSk7CkBAIC0yMjEsOCArMjIw
LDggQEAgVEVTVChBcGlUZXN0LCBUZXN0Q2FzZURpc2FibGVkQWNjZXNzb3JzV29yaykgewogICBj
b25zdCBUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0gdGVzdF9jYXNlLT5HZXRUZXN0SW5mbygw
KTsKICAgRVhQRUNUX1NUUkVRKCJEdW1teTIiLCB0ZXN0X2luZm8tPm5hbWUoKSk7CiAgIEVYUEVD
VF9TVFJFUSgiRElTQUJMRURfVGVzdCIsIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7Ci0g
IEVYUEVDVF9TVFJFUSgiIiwgdGVzdF9pbmZvLT5jb21tZW50KCkpOwotICBFWFBFQ1RfU1RSRVEo
IiIsIHRlc3RfaW5mby0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVs
bCh0ZXN0X2luZm8tPnZhbHVlX3BhcmFtKCkpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3Rf
aW5mby0+dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVDVF9GQUxTRSh0ZXN0X2luZm8tPnNob3VsZF9y
dW4oKSk7CiB9CiAKQEAgLTI0Nyw3ICsyNDYsNyBAQCBjbGFzcyBGaW5hbFN1Y2Nlc3NDaGVja2Vy
IDogcHVibGljIEVudmlyb25tZW50IHsKICAgICBjb25zdCBUZXN0Q2FzZSoqIGNvbnN0IHRlc3Rf
Y2FzZXMgPSBVbml0VGVzdEhlbHBlcjo6R2V0U29ydGVkVGVzdENhc2VzKCk7CiAKICAgICBFWFBF
Q1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0X2Nhc2VzWzBdLT5uYW1lKCkpOwotICAgIEVYUEVDVF9T
VFJFUSgiIiwgdGVzdF9jYXNlc1swXS0+Y29tbWVudCgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051
bGwodGVzdF9jYXNlc1swXS0+dHlwZV9wYXJhbSgpKSk7CiAgICAgRVhQRUNUX1RSVUUodGVzdF9j
YXNlc1swXS0+c2hvdWxkX3J1bigpKTsKICAgICBFWFBFQ1RfRVEoMSwgdGVzdF9jYXNlc1swXS0+
ZGlzYWJsZWRfdGVzdF9jb3VudCgpKTsKICAgICBBU1NFUlRfRVEoNCwgdGVzdF9jYXNlc1swXS0+
dG90YWxfdGVzdF9jb3VudCgpKTsKQEAgLTI1Nyw3ICsyNTYsNyBAQCBjbGFzcyBGaW5hbFN1Y2Nl
c3NDaGVja2VyIDogcHVibGljIEVudmlyb25tZW50IHsKICAgICBFWFBFQ1RfRkFMU0UodGVzdF9j
YXNlc1swXS0+RmFpbGVkKCkpOwogCiAgICAgRVhQRUNUX1NUUkVRKCJESVNBQkxFRF9UZXN0Iiwg
dGVzdF9jYXNlc1sxXS0+bmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RfY2FzZXNb
MV0tPmNvbW1lbnQoKSk7CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfY2FzZXNbMV0tPnR5
cGVfcGFyYW0oKSkpOwogICAgIEVYUEVDVF9GQUxTRSh0ZXN0X2Nhc2VzWzFdLT5zaG91bGRfcnVu
KCkpOwogICAgIEVYUEVDVF9FUSgxLCB0ZXN0X2Nhc2VzWzFdLT5kaXNhYmxlZF90ZXN0X2NvdW50
KCkpOwogICAgIEFTU0VSVF9FUSgxLCB0ZXN0X2Nhc2VzWzFdLT50b3RhbF90ZXN0X2NvdW50KCkp
OwpAQCAtMjY2LDggKzI2NSw3IEBAIGNsYXNzIEZpbmFsU3VjY2Vzc0NoZWNrZXIgOiBwdWJsaWMg
RW52aXJvbm1lbnQgewogCiAjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKICAgICBFWFBFQ1RfU1RS
RVEoIlRlc3RDYXNlV2l0aENvbW1lbnRUZXN0LzAiLCB0ZXN0X2Nhc2VzWzJdLT5uYW1lKCkpOwot
ICAgIEVYUEVDVF9TVFJFUShHZXRFeHBlY3RlZFRlc3RDYXNlQ29tbWVudCgpLmNfc3RyKCksCi0g
ICAgICAgICAgICAgICAgIHRlc3RfY2FzZXNbMl0tPmNvbW1lbnQoKSk7CisgICAgRVhQRUNUX1NU
UkVRKEdldFR5cGVOYW1lPGludD4oKS5jX3N0cigpLCB0ZXN0X2Nhc2VzWzJdLT50eXBlX3BhcmFt
KCkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RfY2FzZXNbMl0tPnNob3VsZF9ydW4oKSk7CiAgICAg
RVhQRUNUX0VRKDAsIHRlc3RfY2FzZXNbMl0tPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgICAg
QVNTRVJUX0VRKDEsIHRlc3RfY2FzZXNbMl0tPnRvdGFsX3Rlc3RfY291bnQoKSk7CkBAIC0yODUs
MjQgKzI4MywyNCBAQCBjbGFzcyBGaW5hbFN1Y2Nlc3NDaGVja2VyIDogcHVibGljIEVudmlyb25t
ZW50IHsKIAogICAgIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VEaXNhYmxlZEFjY2Vzc29yc1dvcmsi
LCB0ZXN0c1sxXS0+bmFtZSgpKTsKICAgICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1sx
XS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1sxXS0+Y29t
bWVudCgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzFdLT50ZXN0X2Nhc2VfY29tbWVu
dCgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMV0tPnZhbHVlX3BhcmFtKCkpKTsK
KyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMV0tPnR5cGVfcGFyYW0oKSkpOwogICAgIEVY
UEVDVF9UUlVFKHRlc3RzWzFdLT5zaG91bGRfcnVuKCkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3Rz
WzFdLT5yZXN1bHQoKS0+UGFzc2VkKCkpOwogICAgIEVYUEVDVF9FUSgwLCB0ZXN0c1sxXS0+cmVz
dWx0KCktPnRlc3RfcHJvcGVydHlfY291bnQoKSk7CiAKICAgICBFWFBFQ1RfU1RSRVEoIlRlc3RD
YXNlSW1tdXRhYmxlQWNjZXNzb3JzV29yayIsIHRlc3RzWzJdLT5uYW1lKCkpOwogICAgIEVYUEVD
VF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzJdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgICBFWFBF
Q1RfU1RSRVEoIiIsIHRlc3RzWzJdLT5jb21tZW50KCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwg
dGVzdHNbMl0tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0
ZXN0c1syXS0+dmFsdWVfcGFyYW0oKSkpOworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1sy
XS0+dHlwZV9wYXJhbSgpKSk7CiAgICAgRVhQRUNUX1RSVUUodGVzdHNbMl0tPnNob3VsZF9ydW4o
KSk7CiAgICAgRVhQRUNUX1RSVUUodGVzdHNbMl0tPnJlc3VsdCgpLT5QYXNzZWQoKSk7CiAgICAg
RVhQRUNUX0VRKDAsIHRlc3RzWzJdLT5yZXN1bHQoKS0+dGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsK
IAogICAgIEVYUEVDVF9TVFJFUSgiVW5pdFRlc3RJbW11dGFibGVBY2Nlc3NvcnNXb3JrIiwgdGVz
dHNbM10tPm5hbWUoKSk7CiAgICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbM10tPnRl
c3RfY2FzZV9uYW1lKCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbM10tPmNvbW1lbnQo
KSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1szXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7
CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzNdLT52YWx1ZV9wYXJhbSgpKSk7CisgICAg
RVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzNdLT50eXBlX3BhcmFtKCkpKTsKICAgICBFWFBFQ1Rf
VFJVRSh0ZXN0c1szXS0+c2hvdWxkX3J1bigpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0c1szXS0+
cmVzdWx0KCktPlBhc3NlZCgpKTsKICAgICBFWFBFQ1RfRVEoMSwgdGVzdHNbM10tPnJlc3VsdCgp
LT50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwpAQCAtMzE4LDkgKzMxNiw4IEBAIGNsYXNzIEZpbmFs
U3VjY2Vzc0NoZWNrZXIgOiBwdWJsaWMgRW52aXJvbm1lbnQgewogCiAgICAgRVhQRUNUX1NUUkVR
KCJEdW1teSIsIHRlc3RzWzBdLT5uYW1lKCkpOwogICAgIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VX
aXRoQ29tbWVudFRlc3QvMCIsIHRlc3RzWzBdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgICBFWFBF
Q1RfU1RSRVEoIiIsIHRlc3RzWzBdLT5jb21tZW50KCkpOwotICAgIEVYUEVDVF9TVFJFUShHZXRF
eHBlY3RlZFRlc3RDYXNlQ29tbWVudCgpLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgIHRlc3Rz
WzBdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNb
MF0tPnZhbHVlX3BhcmFtKCkpKTsKKyAgICBFWFBFQ1RfU1RSRVEoR2V0VHlwZU5hbWU8aW50Pigp
LmNfc3RyKCksIHRlc3RzWzBdLT50eXBlX3BhcmFtKCkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3Rz
WzBdLT5zaG91bGRfcnVuKCkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzBdLT5yZXN1bHQoKS0+
UGFzc2VkKCkpOwogICAgIEVYUEVDVF9FUSgwLCB0ZXN0c1swXS0+cmVzdWx0KCktPnRlc3RfcHJv
cGVydHlfY291bnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X2FsbF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9h
bGxfdGVzdC5jYwppbmRleCBlMWVkYjA4ZTMzYTE4YzIzOTExNWRhZDVlNGEwZDZmYjYzMmRiYjE3
Li5lNjFlMzZiMWRmZThkYTAzMDE2YWY1Nzg1NWIyYzc4MWVlN2Q5MWU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2FsbF90ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYWxsX3Rlc3QuY2MKQEAgLTI2LDIzICsyNiwy
MSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAv
LwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRlc3Rz
IGZvciBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIFRlc3Rz
IGZvciBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVz
dCkKIC8vCiAvLyBTb21ldGltZXMgaXQncyBkZXNpcmFibGUgdG8gYnVpbGQgbW9zdCBvZiBHb29n
bGUgVGVzdCdzIG93biB0ZXN0cwogLy8gYnkgY29tcGlsaW5nIGEgc2luZ2xlIGZpbGUuICBUaGlz
IGZpbGUgc2VydmVzIHRoaXMgcHVycG9zZS4KLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LWZpbGVwYXRo
X3Rlc3QuY2MiCi0jaW5jbHVkZSAidGVzdC9ndGVzdC1saW5rZWRfcHRyX3Rlc3QuY2MiCi0jaW5j
bHVkZSAidGVzdC9ndGVzdC1tZXNzYWdlX3Rlc3QuY2MiCi0jaW5jbHVkZSAidGVzdC9ndGVzdC1v
cHRpb25zX3Rlc3QuY2MiCi0jaW5jbHVkZSAidGVzdC9ndGVzdC1wb3J0X3Rlc3QuY2MiCisjaW5j
bHVkZSAidGVzdC9nb29nbGV0ZXN0LWZpbGVwYXRoLXRlc3QuY2MiCisjaW5jbHVkZSAidGVzdC9n
b29nbGV0ZXN0LWxpbmtlZC1wdHItdGVzdC5jYyIKKyNpbmNsdWRlICJ0ZXN0L2dvb2dsZXRlc3Qt
bWVzc2FnZS10ZXN0LmNjIgorI2luY2x1ZGUgInRlc3QvZ29vZ2xldGVzdC1vcHRpb25zLXRlc3Qu
Y2MiCisjaW5jbHVkZSAidGVzdC9nb29nbGV0ZXN0LXBvcnQtdGVzdC5jYyIKICNpbmNsdWRlICJ0
ZXN0L2d0ZXN0X3ByZWRfaW1wbF91bml0dGVzdC5jYyIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0X3By
b2RfdGVzdC5jYyIKLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0LmNjIgorI2lu
Y2x1ZGUgInRlc3QvZ29vZ2xldGVzdC10ZXN0LXBhcnQtdGVzdC5jYyIKICNpbmNsdWRlICJ0ZXN0
L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYyIKICNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXR5cGVkLXRl
c3QyX3Rlc3QuY2MiCiAjaW5jbHVkZSAidGVzdC9ndGVzdF91bml0dGVzdC5jYyIKICNpbmNsdWRl
ICJ0ZXN0L3Byb2R1Y3Rpb24uY2MiCi0jaW5jbHVkZSAic3JjL2d0ZXN0X21haW4uY2MiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Fzc2VydF9ieV9leGNl
cHRpb25fdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYXNzZXJ0
X2J5X2V4Y2VwdGlvbl90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlYWU4NTc1ZjNmZWUzMGJhYzY0MmJh
MTU4OWZmMjM0ZDA3Zjk0NTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X2Fzc2VydF9ieV9leGNlcHRpb25fdGVzdC5jYwpAQCAtMCwwICsxLDEx
OCBAQAorLy8gQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8v
IFRlc3RzIEdvb2dsZSBUZXN0J3MgYXNzZXJ0LWJ5LWV4Y2VwdGlvbiBtb2RlIHdpdGggZXhjZXB0
aW9ucyBlbmFibGVkLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2luY2x1ZGUgPHN0
ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVk
ZSA8c3RkZXhjZXB0PgorCitjbGFzcyBUaHJvd0xpc3RlbmVyIDogcHVibGljIHRlc3Rpbmc6OkVt
cHR5VGVzdEV2ZW50TGlzdGVuZXIgeworICB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgdGVz
dGluZzo6VGVzdFBhcnRSZXN1bHQmIHJlc3VsdCkgb3ZlcnJpZGUgeworICAgIGlmIChyZXN1bHQu
dHlwZSgpID09IHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlKSB7CisgICAg
ICB0aHJvdyB0ZXN0aW5nOjpBc3NlcnRpb25FeGNlcHRpb24ocmVzdWx0KTsKKyAgICB9CisgIH0K
K307CisKKy8vIFByaW50cyB0aGUgZ2l2ZW4gZmFpbHVyZSBtZXNzYWdlIGFuZCBleGl0cyB0aGUg
cHJvZ3JhbSB3aXRoCisvLyBub24temVyby4gIFdlIHVzZSB0aGlzIGluc3RlYWQgb2YgYSBHb29n
bGUgVGVzdCBhc3NlcnRpb24gdG8KKy8vIGluZGljYXRlIGEgZmFpbHVyZSwgYXMgdGhlIGxhdHRl
ciBpcyBiZWVuIHRlc3RlZCBhbmQgY2Fubm90IGJlCisvLyByZWxpZWQgb24uCit2b2lkIEZhaWwo
Y29uc3QgY2hhciogbXNnKSB7CisgIHByaW50ZigiRkFJTFVSRTogJXNcbiIsIG1zZyk7CisgIGZm
bHVzaChzdGRvdXQpOworICBleGl0KDEpOworfQorCitzdGF0aWMgdm9pZCBBc3NlcnRGYWxzZSgp
IHsKKyAgQVNTRVJUX0VRKDIsIDMpIDw8ICJFeHBlY3RlZCBmYWlsdXJlIjsKK30KKworLy8gVGVz
dHMgdGhhdCBhbiBhc3NlcnRpb24gZmFpbHVyZSB0aHJvd3MgYSBzdWJjbGFzcyBvZgorLy8gc3Rk
OjpydW50aW1lX2Vycm9yLgorVEVTVChUZXN0LCBUZXN0KSB7CisgIC8vIEEgc3VjY2Vzc2Z1bCBh
c3NlcnRpb24gc2hvdWxkbid0IHRocm93LgorICB0cnkgeworICAgIEVYUEVDVF9FUSgzLCAzKTsK
KyAgfSBjYXRjaCguLi4pIHsKKyAgICBGYWlsKCJBIHN1Y2Nlc3NmdWwgYXNzZXJ0aW9uIHdyb25n
ZnVsbHkgdGhyZXcuIik7CisgIH0KKworICAvLyBBIHN1Y2Nlc3NmdWwgYXNzZXJ0aW9uIHNob3Vs
ZG4ndCB0aHJvdy4KKyAgdHJ5IHsKKyAgICBFWFBFQ1RfRVEoMywgNCk7CisgIH0gY2F0Y2goLi4u
KSB7CisgICAgRmFpbCgiQSBmYWlsZWQgbm9uLWZhdGFsIGFzc2VydGlvbiB3cm9uZ2Z1bGx5IHRo
cmV3LiIpOworICB9CisKKyAgLy8gQSBmYWlsZWQgYXNzZXJ0aW9uIHNob3VsZCB0aHJvdy4KKyAg
dHJ5IHsKKyAgICBBc3NlcnRGYWxzZSgpOworICB9IGNhdGNoKGNvbnN0IHRlc3Rpbmc6OkFzc2Vy
dGlvbkV4Y2VwdGlvbiYgZSkgeworICAgIGlmIChzdHJzdHIoZS53aGF0KCksICJFeHBlY3RlZCBm
YWlsdXJlIikgIT0gTlVMTCkKKyAgICAgIHRocm93OworCisgICAgcHJpbnRmKCIlcyIsCisgICAg
ICAgICAgICJBIGZhaWxlZCBhc3NlcnRpb24gZGlkIHRocm93IGFuIGV4Y2VwdGlvbiBvZiB0aGUg
cmlnaHQgdHlwZSwgIgorICAgICAgICAgICAiYnV0IHRoZSBtZXNzYWdlIGlzIGluY29ycmVjdC4g
IEluc3RlYWQgb2YgY29udGFpbmluZyBcIkV4cGVjdGVkICIKKyAgICAgICAgICAgImZhaWx1cmVc
IiwgaXQgaXM6XG4iKTsKKyAgICBGYWlsKGUud2hhdCgpKTsKKyAgfSBjYXRjaCguLi4pIHsKKyAg
ICBGYWlsKCJBIGZhaWxlZCBhc3NlcnRpb24gdGhyZXcgdGhlIHdyb25nIHR5cGUgb2YgZXhjZXB0
aW9uLiIpOworICB9CisgIEZhaWwoIkEgZmFpbGVkIGFzc2VydGlvbiBzaG91bGQndmUgdGhyb3du
IGJ1dCBkaWRuJ3QuIik7Cit9CisKK2ludCBrVGVzdEZvckNvbnRpbnVpbmdUZXN0ID0gMDsKKwor
VEVTVChUZXN0LCBUZXN0MikgeworICAvLyBGSVhNRTogaG93IHRvIGZvcmNlIFRlc3QyIHRvIGJl
IGFmdGVyIFRlc3Q/CisgIGtUZXN0Rm9yQ29udGludWluZ1Rlc3QgPSAxOworfQorCitpbnQgbWFp
bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOworICB0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJz
KCkuQXBwZW5kKG5ldyBUaHJvd0xpc3RlbmVyKTsKKworICBpbnQgcmVzdWx0ID0gUlVOX0FMTF9U
RVNUUygpOworICBpZiAocmVzdWx0ID09IDApIHsKKyAgICBwcmludGYoIlJVTl9BTExfVEVTVFMg
cmV0dXJuZWQgJWRcbiIsIHJlc3VsdCk7CisgICAgRmFpbCgiRXhwZWN0ZWQgZmFpbHVyZSBpbnN0
ZWFkLiIpOworICB9CisKKyAgaWYgKGtUZXN0Rm9yQ29udGludWluZ1Rlc3QgPT0gMCkgeworICAg
IEZhaWwoIlNob3VsZCBoYXZlIGNvbnRpbnVlZCB3aXRoIG90aGVyIHRlc3RzLCBidXQgZGlkIG5v
dC4iKTsKKyAgfQorICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdC5weSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdC5weQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzgxOTE4MzMxMjI3NWRlY2EwNWM3NjMxODYw
NDA0NzFiZmY0OWYzMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVf
dW5pdHRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMTggKzAsMCBAQAotIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMg
ZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUg
VGVzdCdzIGJyZWFrLW9uLWZhaWx1cmUgbW9kZS4KLQotQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRl
c3QgdG8gc2VnLWZhdWx0IHdoZW4gYW4gYXNzZXJ0aW9uIGZhaWxzLCB1c2luZwotZWl0aGVyIHRo
ZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQotLS1n
dGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWcuICBUaGlzIHNjcmlwdCB0ZXN0cyBzdWNoIGZ1bmN0
aW9uYWxpdHkKLWJ5IGludm9raW5nIGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfIChh
IHByb2dyYW0gd3JpdHRlbiB3aXRoCi1Hb29nbGUgVGVzdCkgd2l0aCBkaWZmZXJlbnQgZW52aXJv
bm1lbnRzIGFuZCBjb21tYW5kIGxpbmUgZmxhZ3MuCi0iIiIKLQotX19hdXRob3JfXyA9ICd3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLWlt
cG9ydCBvcwotaW1wb3J0IHN5cwotCi0KLSMgQ29uc3RhbnRzLgotCi1JU19XSU5ET1dTID0gb3Mu
bmFtZSA9PSAnbnQnCi0KLSMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciBlbmFibGluZy9k
aXNhYmxpbmcgdGhlIGJyZWFrLW9uLWZhaWx1cmUgbW9kZS4KLUJSRUFLX09OX0ZBSUxVUkVfRU5W
X1ZBUiA9ICdHVEVTVF9CUkVBS19PTl9GQUlMVVJFJwotCi0jIFRoZSBjb21tYW5kIGxpbmUgZmxh
ZyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBicmVhay1vbi1mYWlsdXJlIG1vZGUuCi1CUkVB
S19PTl9GQUlMVVJFX0ZMQUcgPSAnZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZScKLQotIyBUaGUgZW52
aXJvbm1lbnQgdmFyaWFibGUgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgdGhyb3ctb24tZmFp
bHVyZSBtb2RlLgotVEhST1dfT05fRkFJTFVSRV9FTlZfVkFSID0gJ0dURVNUX1RIUk9XX09OX0ZB
SUxVUkUnCi0KLSMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciBlbmFibGluZy9kaXNhYmxp
bmcgdGhlIGNhdGNoLWV4Y2VwdGlvbnMgbW9kZS4KLUNBVENIX0VYQ0VQVElPTlNfRU5WX1ZBUiA9
ICdHVEVTVF9DQVRDSF9FWENFUFRJT05TJwotCi0jIFBhdGggdG8gdGhlIGd0ZXN0X2JyZWFrX29u
X2ZhaWx1cmVfdW5pdHRlc3RfIHByb2dyYW0uCi1FWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
R2V0VGVzdEV4ZWN1dGFibGVQYXRoKAotICAgICdndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0
ZXN0XycpCi0KLQotIyBVdGlsaXRpZXMuCi0KLQotZW52aXJvbiA9IG9zLmVudmlyb24uY29weSgp
Ci0KLQotZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6Ci0gICIiIlNldHMgYW4gZW52aXJv
bm1lbnQgdmFyaWFibGUgdG8gYSBnaXZlbiB2YWx1ZTsgdW5zZXRzIGl0IHdoZW4gdGhlCi0gIGdp
dmVuIHZhbHVlIGlzIE5vbmUuCi0gICIiIgotCi0gIGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAg
IGVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQotICBlbGlmIGVudl92YXIgaW4gZW52aXJvbjoKLSAg
ICBkZWwgZW52aXJvbltlbnZfdmFyXQotCi0KLWRlZiBSdW4oY29tbWFuZCk6Ci0gICIiIlJ1bnMg
YSBjb21tYW5kOyByZXR1cm5zIDEgaWYgaXQgd2FzIGtpbGxlZCBieSBhIHNpZ25hbCwgb3IgMCBv
dGhlcndpc2UuIiIiCi0KLSAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5k
LCBlbnY9ZW52aXJvbikKLSAgaWYgcC50ZXJtaW5hdGVkX2J5X3NpZ25hbDoKLSAgICByZXR1cm4g
MQotICBlbHNlOgotICAgIHJldHVybiAwCi0KLQotIyBUaGUgdGVzdHMuCi0KLQotY2xhc3MgR1Rl
c3RCcmVha09uRmFpbHVyZVVuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgotICAi
IiJUZXN0cyB1c2luZyB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2YXJp
YWJsZSBvcgotICB0aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWcgdG8gdHVybiBhc3Nl
cnRpb24gZmFpbHVyZXMgaW50bwotICBzZWdtZW50YXRpb24gZmF1bHRzLgotICAiIiIKLQotICBk
ZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGVudl92YXJfdmFsdWUsIGZsYWdfdmFsdWUsIGV4cGVjdF9z
ZWdfZmF1bHQpOgotICAgICIiIlJ1bnMgZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8g
YW5kIHZlcmlmaWVzIHRoYXQgaXQgZG9lcwotICAgIChvciBkb2VzIG5vdCkgaGF2ZSBhIHNlZy1m
YXVsdC4KLQotICAgIEFyZ3M6Ci0gICAgICBlbnZfdmFyX3ZhbHVlOiAgICB2YWx1ZSBvZiB0aGUg
R1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudAotICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyaWFibGU7IE5vbmUgaWYgdGhlIHZhcmlhYmxlIHNob3VsZCBiZSB1bnNldC4KLSAgICAg
IGZsYWdfdmFsdWU6ICAgICAgIHZhbHVlIG9mIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUg
ZmxhZzsKLSAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5v
dCBiZSBwcmVzZW50LgotICAgICAgZXhwZWN0X3NlZ19mYXVsdDogMSBpZiB0aGUgcHJvZ3JhbSBp
cyBleHBlY3RlZCB0byBnZW5lcmF0ZSBhIHNlZy1mYXVsdDsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIDAgb3RoZXJ3aXNlLgotICAgICIiIgotCi0gICAgU2V0RW52VmFyKEJSRUFLX09OX0ZBSUxV
UkVfRU5WX1ZBUiwgZW52X3Zhcl92YWx1ZSkKLQotICAgIGlmIGVudl92YXJfdmFsdWUgaXMgTm9u
ZToKLSAgICAgIGVudl92YXJfdmFsdWVfbXNnID0gJyBpcyBub3Qgc2V0JwotICAgIGVsc2U6Ci0g
ICAgICBlbnZfdmFyX3ZhbHVlX21zZyA9ICc9JyArIGVudl92YXJfdmFsdWUKLQotICAgIGlmIGZs
YWdfdmFsdWUgaXMgTm9uZToKLSAgICAgIGZsYWcgPSAnJwotICAgIGVsaWYgZmxhZ192YWx1ZSA9
PSAnMCc6Ci0gICAgICBmbGFnID0gJy0tJXM9MCcgJSBCUkVBS19PTl9GQUlMVVJFX0ZMQUcKLSAg
ICBlbHNlOgotICAgICAgZmxhZyA9ICctLSVzJyAlIEJSRUFLX09OX0ZBSUxVUkVfRkxBRwotCi0g
ICAgY29tbWFuZCA9IFtFWEVfUEFUSF0KLSAgICBpZiBmbGFnOgotICAgICAgY29tbWFuZC5hcHBl
bmQoZmxhZykKLQotICAgIGlmIGV4cGVjdF9zZWdfZmF1bHQ6Ci0gICAgICBzaG91bGRfb3Jfbm90
ID0gJ3Nob3VsZCcKLSAgICBlbHNlOgotICAgICAgc2hvdWxkX29yX25vdCA9ICdzaG91bGQgbm90
JwotCi0gICAgaGFzX3NlZ19mYXVsdCA9IFJ1bihjb21tYW5kKQotCi0gICAgU2V0RW52VmFyKEJS
RUFLX09OX0ZBSUxVUkVfRU5WX1ZBUiwgTm9uZSkKLQotICAgIG1zZyA9ICgnd2hlbiAlcyVzLCBh
biBhc3NlcnRpb24gZmFpbHVyZSBpbiAiJXMiICVzIGNhdXNlIGEgc2VnLWZhdWx0LicgJQotICAg
ICAgICAgICAoQlJFQUtfT05fRkFJTFVSRV9FTlZfVkFSLCBlbnZfdmFyX3ZhbHVlX21zZywgJyAn
LmpvaW4oY29tbWFuZCksCi0gICAgICAgICAgICBzaG91bGRfb3Jfbm90KSkKLSAgICBzZWxmLmFz
c2VydF8oaGFzX3NlZ19mYXVsdCA9PSBleHBlY3Rfc2VnX2ZhdWx0LCBtc2cpCi0KLSAgZGVmIHRl
c3REZWZhdWx0QmVoYXZpb3Ioc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9yIG9mIHRo
ZSBkZWZhdWx0IG1vZGUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVl
PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT1Ob25lLAotICAgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MCkKLQotICBkZWYgdGVzdEVudlZhcihzZWxm
KToKLSAgICAiIiJUZXN0cyB1c2luZyB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9u
bWVudCB2YXJpYWJsZS4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9
JzAnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKLSAgICAgICAgICAg
ICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52
X3Zhcl92YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT1Ob25lLAot
ICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKLQotICBkZWYgdGVzdEZs
YWcoc2VsZik6Ci0gICAgIiIiVGVzdHMgdXNpbmcgdGhlIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVy
ZSBmbGFnLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAot
ICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdF9zZWdfZmF1bHQ9MCkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3Zh
bHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCi0gICAgICAg
ICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0xKQotCi0gIGRlZiB0ZXN0RmxhZ092ZXJy
aWRlc0VudlZhcihzZWxmKToKLSAgICAiIiJUZXN0cyB0aGF0IHRoZSBmbGFnIG92ZXJyaWRlcyB0
aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZf
dmFyX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKLSAg
ICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCi0gICAgc2VsZi5SdW5BbmRW
ZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1
ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0xKQotICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAg
IGZsYWdfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9
MCkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAgICAg
ICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rf
c2VnX2ZhdWx0PTEpCi0KLSAgZGVmIHRlc3RCcmVha09uRmFpbHVyZU92ZXJyaWRlc1Rocm93T25G
YWlsdXJlKHNlbGYpOgotICAgICIiIlRlc3RzIHRoYXQgZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBv
dmVycmlkZXMgZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZS4iIiIKLQotICAgIFNldEVudlZhcihUSFJP
V19PTl9GQUlMVVJFX0VOVl9WQVIsICcxJykKLSAgICB0cnk6Ci0gICAgICBzZWxmLlJ1bkFuZFZl
cmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3Zh
bHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKLSAg
ICBmaW5hbGx5OgotICAgICAgU2V0RW52VmFyKFRIUk9XX09OX0ZBSUxVUkVfRU5WX1ZBUiwgTm9u
ZSkKLQotICBpZiBJU19XSU5ET1dTOgotICAgIGRlZiB0ZXN0Q2F0Y2hFeGNlcHRpb25zRG9lc05v
dEludGVyZmVyZShzZWxmKToKLSAgICAgICIiIlRlc3RzIHRoYXQgZ3Rlc3RfY2F0Y2hfZXhjZXB0
aW9ucyBkb2Vzbid0IGludGVyZmVyZS4iIiIKLQotICAgICAgU2V0RW52VmFyKENBVENIX0VYQ0VQ
VElPTlNfRU5WX1ZBUiwgJzEnKQotICAgICAgdHJ5OgotICAgICAgICBzZWxmLlJ1bkFuZFZlcmlm
eShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1
ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKLSAg
ICAgIGZpbmFsbHk6Ci0gICAgICAgIFNldEVudlZhcihDQVRDSF9FWENFUFRJT05TX0VOVl9WQVIs
IE5vbmUpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGls
cy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
YnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfLmNjCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkMjhkMWQzZGFkNDZiOGZkZjNjMzQwOTY3ZGJmY2E4NTJmNTllNGExLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8uY2MKKysr
IC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIElu
Yy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8v
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcg
V2FuKQotCi0vLyBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgYnJlYWstb24tZmFpbHVyZSBt
b2RlLgotLy8KLS8vIEEgdXNlciBjYW4gYXNrIEdvb2dsZSBUZXN0IHRvIHNlZy1mYXVsdCB3aGVu
IGFuIGFzc2VydGlvbiBmYWlscywgdXNpbmcKLS8vIGVpdGhlciB0aGUgR1RFU1RfQlJFQUtfT05f
RkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUKLS8vIC0tZ3Rlc3RfYnJlYWtfb25f
ZmFpbHVyZSBmbGFnLiAgVGhpcyBmaWxlIGlzIHVzZWQgZm9yIHRlc3Rpbmcgc3VjaAotLy8gZnVu
Y3Rpb25hbGl0eS4KLS8vCi0vLyBUaGlzIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQ
eXRob24gdW5pdCB0ZXN0LiAgSXQgaXMKLS8vIGV4cGVjdGVkIHRvIGZhaWwuICBEb24ndCBydW4g
aXQgZGlyZWN0bHkuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0jaWYgR1RFU1RfT1Nf
V0lORE9XUwotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNlbmRp
ZgotCi1uYW1lc3BhY2UgewotCi0vLyBBIHRlc3QgdGhhdCdzIGV4cGVjdGVkIHRvIGZhaWwuCi1U
RVNUKEZvbywgQmFyKSB7Ci0gIEVYUEVDVF9FUSgyLCAzKTsKLX0KLQotI2lmIEdURVNUX0hBU19T
RUggJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0vLyBPbiBXaW5kb3dzIE1vYmlsZSBnbG9i
YWwgZXhjZXB0aW9uIGhhbmRsZXJzIGFyZSBub3Qgc3VwcG9ydGVkLgotTE9ORyBXSU5BUEkgRXhp
dFdpdGhFeGNlcHRpb25Db2RlKAotICAgIHN0cnVjdCBfRVhDRVBUSU9OX1BPSU5URVJTKiBleGNl
cHRpb25fcG9pbnRlcnMpIHsKLSAgZXhpdChleGNlcHRpb25fcG9pbnRlcnMtPkV4Y2VwdGlvblJl
Y29yZC0+RXhjZXB0aW9uQ29kZSk7Ci19Ci0jZW5kaWYKLQotfSAgLy8gbmFtZXNwYWNlCi0KLWlu
dCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAg
Ly8gU3VwcHJlc3NlcyBkaXNwbGF5IG9mIHRoZSBXaW5kb3dzIGVycm9yIGRpYWxvZyB1cG9uIGVu
Y291bnRlcmluZwotICAvLyBhIGdlbmVyYWwgcHJvdGVjdGlvbiBmYXVsdCAoc2VnbWVudCB2aW9s
YXRpb24pLgotICBTZXRFcnJvck1vZGUoU0VNX05PR1BGQVVMVEVSUk9SQk9YIHwgU0VNX0ZBSUxD
UklUSUNBTEVSUk9SUyk7Ci0KLSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSAgLy8gVGhl
IGRlZmF1bHQgdW5oYW5kbGVkIGV4Y2VwdGlvbiBmaWx0ZXIgZG9lcyBub3QgYWx3YXlzIGV4aXQK
LSAgLy8gd2l0aCB0aGUgZXhjZXB0aW9uIGNvZGUgYXMgZXhpdCBjb2RlIC0gZm9yIGV4YW1wbGUg
aXQgZXhpdHMgd2l0aAotICAvLyAwIGZvciBFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTiBhbmQg
MSBmb3IgRVhDRVBUSU9OX0JSRUFLUE9JTlQKLSAgLy8gaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGNv
bXBpbGVkIGluIGRlYnVnIG1vZGUuIFRodXMgd2UgdXNlIG91ciBvd24KLSAgLy8gZmlsdGVyIHdo
aWNoIGFsd2F5cyBleGl0cyB3aXRoIHRoZSBleGNlcHRpb24gY29kZSBmb3IgdW5oYW5kbGVkCi0g
IC8vIGV4Y2VwdGlvbnMuCi0gIFNldFVuaGFuZGxlZEV4Y2VwdGlvbkZpbHRlcihFeGl0V2l0aEV4
Y2VwdGlvbkNvZGUpOwotI2VuZGlmCi0jZW5kaWYKLQotICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVz
dCgmYXJnYywgYXJndik7Ci0KLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA3NTUKaW5kZXggZDAyYTUzZWQ4NTdjNzRjODAwYmNjZDY3YmM0MThhNTFhMDlk
NjkzNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkKKysrIC9kZXYvbnVs
bApAQCAtMSwxMzAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdo
dCAyMDA4LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotIiIiVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCBjb3JyZWN0bHkgZGV0ZXJtaW5l
cyB3aGV0aGVyIHRvIHVzZSBjb2xvcnMuIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBvcwotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMK
LQotCi1JU19XSU5ET1dTID0gb3MubmFtZSA9ICdudCcKLQotQ09MT1JfRU5WX1ZBUiA9ICdHVEVT
VF9DT0xPUicKLUNPTE9SX0ZMQUcgPSAnZ3Rlc3RfY29sb3InCi1DT01NQU5EID0gZ3Rlc3RfdGVz
dF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2d0ZXN0X2NvbG9yX3Rlc3RfJykKLQotCi1k
ZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToKLSAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxl
IHRvICd2YWx1ZSc7IHVuc2V0cyBpdCB3aGVuICd2YWx1ZScgaXMgTm9uZS4iIiIKLQotICBpZiB2
YWx1ZSBpcyBub3QgTm9uZToKLSAgICBvcy5lbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKLSAgZWxp
ZiBlbnZfdmFyIGluIG9zLmVudmlyb246Ci0gICAgZGVsIG9zLmVudmlyb25bZW52X3Zhcl0KLQot
Ci1kZWYgVXNlc0NvbG9yKHRlcm0sIGNvbG9yX2Vudl92YXIsIGNvbG9yX2ZsYWcpOgotICAiIiJS
dW5zIGd0ZXN0X2NvbG9yX3Rlc3RfIGFuZCByZXR1cm5zIGl0cyBleGl0IGNvZGUuIiIiCi0KLSAg
U2V0RW52VmFyKCdURVJNJywgdGVybSkKLSAgU2V0RW52VmFyKENPTE9SX0VOVl9WQVIsIGNvbG9y
X2Vudl92YXIpCi0KLSAgaWYgY29sb3JfZmxhZyBpcyBOb25lOgotICAgIGFyZ3MgPSBbXQotICBl
bHNlOgotICAgIGFyZ3MgPSBbJy0tJXM9JXMnICUgKENPTE9SX0ZMQUcsIGNvbG9yX2ZsYWcpXQot
ICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtDT01NQU5EXSArIGFyZ3MpCi0gIHJl
dHVybiBub3QgcC5leGl0ZWQgb3IgcC5leGl0X2NvZGUKLQotCi1jbGFzcyBHVGVzdENvbG9yVGVz
dChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAgZGVmIHRlc3ROb0VudlZhck5vRmxhZyhz
ZWxmKToKLSAgICAiIiJUZXN0cyB0aGUgY2FzZSB3aGVuIHRoZXJlJ3MgbmVpdGhlciBHVEVTVF9D
T0xPUiBub3IgLS1ndGVzdF9jb2xvci4iIiIKLQotICAgIGlmIG5vdCBJU19XSU5ET1dTOgotICAg
ICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCBOb25lKSkKLSAgICAg
IHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdlbWFjcycsIE5vbmUsIE5vbmUpKQotICAgICAg
c2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtLW1vbm8nLCBOb25lLCBOb25lKSkKLSAg
ICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd1bmtub3duJywgTm9uZSwgTm9uZSkpCi0g
ICAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcihOb25lLCBOb25lLCBOb25lKSkKLSAgICBz
ZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdsaW51eCcsIE5vbmUsIE5vbmUpKQotICAgIHNlbGYuYXNz
ZXJ0XyhVc2VzQ29sb3IoJ2N5Z3dpbicsIE5vbmUsIE5vbmUpKQotICAgIHNlbGYuYXNzZXJ0XyhV
c2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xv
cigneHRlcm0tY29sb3InLCBOb25lLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9y
KCd4dGVybS0yNTZjb2xvcicsIE5vbmUsIE5vbmUpKQotCi0gIGRlZiB0ZXN0RmxhZ09ubHkoc2Vs
Zik6Ci0gICAgIiIiVGVzdHMgdGhlIGNhc2Ugd2hlbiB0aGVyZSdzIC0tZ3Rlc3RfY29sb3IgYnV0
IG5vdCBHVEVTVF9DT0xPUi4iIiIKLQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdk
dW1iJywgTm9uZSwgJ25vJykpCi0gICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJt
LWNvbG9yJywgTm9uZSwgJ25vJykpCi0gICAgaWYgbm90IElTX1dJTkRPV1M6Ci0gICAgICBzZWxm
LmFzc2VydF8obm90IFVzZXNDb2xvcignZW1hY3MnLCBOb25lLCAnYXV0bycpKQotICAgIHNlbGYu
YXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwgJ2F1dG8nKSkKLSAgICBzZWxmLmFzc2Vy
dF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ3llcycpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2Vz
Q29sb3IoJ3h0ZXJtJywgTm9uZSwgJ3llcycpKQotCi0gIGRlZiB0ZXN0RW52VmFyT25seShzZWxm
KToKLSAgICAiIiJUZXN0cyB0aGUgY2FzZSB3aGVuIHRoZXJlJ3MgR1RFU1RfQ09MT1IgYnV0IG5v
dCAtLWd0ZXN0X2NvbG9yLiIiIgotCi0gICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ2R1
bWInLCAnbm8nLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0t
Y29sb3InLCAnbm8nLCBOb25lKSkKLSAgICBpZiBub3QgSVNfV0lORE9XUzoKLSAgICAgIHNlbGYu
YXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdkdW1iJywgJ2F1dG8nLCBOb25lKSkKLSAgICBzZWxmLmFz
c2VydF8oVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsICdhdXRvJywgTm9uZSkpCi0gICAgc2VsZi5h
c3NlcnRfKFVzZXNDb2xvcignZHVtYicsICd5ZXMnLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8o
VXNlc0NvbG9yKCd4dGVybS1jb2xvcicsICd5ZXMnLCBOb25lKSkKLQotICBkZWYgdGVzdEVudlZh
ckFuZEZsYWcoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhlIGNhc2Ugd2hlbiB0aGVyZSBhcmUgYm90
aCBHVEVTVF9DT0xPUiBhbmQgLS1ndGVzdF9jb2xvci4iIiIKLQotICAgIHNlbGYuYXNzZXJ0Xyhu
b3QgVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsICdubycsICdubycpKQotICAgIHNlbGYuYXNzZXJ0
XyhVc2VzQ29sb3IoJ2R1bWInLCAnbm8nLCAneWVzJykpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXND
b2xvcigneHRlcm0tY29sb3InLCAnbm8nLCAnYXV0bycpKQotCi0gIGRlZiB0ZXN0QWxpYXNlc09m
WWVzQW5kTm8oc2VsZik6Ci0gICAgIiIiVGVzdHMgdXNpbmcgYWxpYXNlcyBpbiBzcGVjaWZ5aW5n
IC0tZ3Rlc3RfY29sb3IuIiIiCi0KLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywg
Tm9uZSwgJ3RydWUnKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwg
J1lFUycpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAnVCcpKQot
ICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAnMScpKQotCi0gICAgc2Vs
Zi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwgJ2YnKSkKLSAgICBzZWxmLmFz
c2VydF8obm90IFVzZXNDb2xvcigneHRlcm0nLCBOb25lLCAnZmFsc2UnKSkKLSAgICBzZWxmLmFz
c2VydF8obm90IFVzZXNDb2xvcigneHRlcm0nLCBOb25lLCAnMCcpKQotICAgIHNlbGYuYXNzZXJ0
Xyhub3QgVXNlc0NvbG9yKCd4dGVybScsIE5vbmUsICd1bmtub3duJykpCi0KLQotaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdF8uY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1OGQzNzdjOWIyYWYwYmZlODE5NWNhMmMwYTkwMjEzOWQ5MTEw
NjQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdF8uY2MKKysrIC9kZXYvbnVs
bApAQCAtMSw3MSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0v
LyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0v
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0v
LyBBIGhlbHBlciBwcm9ncmFtIGZvciB0ZXN0aW5nIGhvdyBHb29nbGUgVGVzdCBkZXRlcm1pbmVz
IHdoZXRoZXIgdG8gdXNlCi0vLyBjb2xvcnMgaW4gdGhlIG91dHB1dC4gIEl0IHByaW50cyAiWUVT
IiBhbmQgcmV0dXJucyAxIGlmIEdvb2dsZSBUZXN0Ci0vLyBkZWNpZGVzIHRvIHVzZSBjb2xvcnMs
IGFuZCBwcmludHMgIk5PIiBhbmQgcmV0dXJucyAwIG90aGVyd2lzZS4KLQotI2luY2x1ZGUgPHN0
ZGlvLmg+Ci0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0
aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1l
bnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8v
IGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNr
IGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rl
c3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1F
TlRBVElPTl8gMQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBH
VEVTVF9JTVBMRU1FTlRBVElPTl8KLQotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlNob3VsZFVz
ZUNvbG9yOwotCi0vLyBUaGUgcHVycG9zZSBvZiB0aGlzIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSBV
bml0VGVzdCBzaW5nbGV0b24gaXMKLS8vIGNyZWF0ZWQgYmVmb3JlIG1haW4oKSBpcyBlbnRlcmVk
LCBhbmQgdGh1cyB0aGF0IFNob3VsZFVzZUNvbG9yKCkKLS8vIHdvcmtzIHRoZSBzYW1lIHdheSBh
cyBpbiBhIHJlYWwgR29vZ2xlLVRlc3QtYmFzZWQgdGVzdC4gIFdlIGRvbid0IGFjdHVhbAotLy8g
cnVuIHRoZSBURVNUIGl0c2VsZi4KLVRFU1QoR1Rlc3RDb2xvclRlc3QsIER1bW15KSB7Ci19Ci0K
LWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewotICB0ZXN0aW5nOjpJbml0R29vZ2xl
VGVzdCgmYXJnYywgYXJndik7Ci0KLSAgaWYgKFNob3VsZFVzZUNvbG9yKHRydWUpKSB7Ci0gICAg
Ly8gR29vZ2xlIFRlc3QgZGVjaWRlcyB0byB1c2UgY29sb3JzIGluIHRoZSBvdXRwdXQgKGFzc3Vt
aW5nIGl0Ci0gICAgLy8gZ29lcyB0byBhIFRUWSkuCi0gICAgcHJpbnRmKCJZRVNcbiIpOwotICAg
IHJldHVybiAxOwotICB9IGVsc2UgewotICAgIC8vIEdvb2dsZSBUZXN0IGRlY2lkZXMgbm90IHRv
IHVzZSBjb2xvcnMgaW4gdGhlIG91dHB1dC4KLSAgICBwcmludGYoIk5PXG4iKTsKLSAgICByZXR1
cm4gMDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9lbnZfdmFyX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X2Vudl92YXJfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYmNjMGJmZDU1
MzI5NzI2ODA3NjE1NzczNmM4M2U0YTg0Y2FlMDU2Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X2Vudl92YXJfdGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0jIS91c3Iv
YmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0jIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoK
LSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJWZXJpZmllcyB0aGF0IEdv
b2dsZSBUZXN0IGNvcnJlY3RseSBwYXJzZXMgZW52aXJvbm1lbnQgdmFyaWFibGVzLiIiIgotCi1f
X2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgb3MK
LWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi0KLQotSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250
JwotSVNfTElOVVggPSBvcy5uYW1lID09ICdwb3NpeCcgYW5kIG9zLnVuYW1lKClbMF0gPT0gJ0xp
bnV4JwotCi1DT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgo
J2d0ZXN0X2Vudl92YXJfdGVzdF8nKQotCi1lbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkKLQot
Ci1kZWYgQXNzZXJ0RXEoZXhwZWN0ZWQsIGFjdHVhbCk6Ci0gIGlmIGV4cGVjdGVkICE9IGFjdHVh
bDoKLSAgICBwcmludCAnRXhwZWN0ZWQ6ICVzJyAlIChleHBlY3RlZCwpCi0gICAgcHJpbnQgJyAg
QWN0dWFsOiAlcycgJSAoYWN0dWFsLCkKLSAgICByYWlzZSBBc3NlcnRpb25FcnJvcgotCi0KLWRl
ZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgotICAiIiJTZXRzIHRoZSBlbnYgdmFyaWFibGUg
dG8gJ3ZhbHVlJzsgdW5zZXRzIGl0IHdoZW4gJ3ZhbHVlJyBpcyBOb25lLiIiIgotCi0gIGlmIHZh
bHVlIGlzIG5vdCBOb25lOgotICAgIGVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQotICBlbGlmIGVu
dl92YXIgaW4gZW52aXJvbjoKLSAgICBkZWwgZW52aXJvbltlbnZfdmFyXQotCi0KLWRlZiBHZXRG
bGFnKGZsYWcpOgotICAiIiJSdW5zIGd0ZXN0X2Vudl92YXJfdGVzdF8gYW5kIHJldHVybnMgaXRz
IG91dHB1dC4iIiIKLQotICBhcmdzID0gW0NPTU1BTkRdCi0gIGlmIGZsYWcgaXMgbm90IE5vbmU6
Ci0gICAgYXJncyArPSBbZmxhZ10KLSAgcmV0dXJuIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vz
cyhhcmdzLCBlbnY9ZW52aXJvbikub3V0cHV0Ci0KLQotZGVmIFRlc3RGbGFnKGZsYWcsIHRlc3Rf
dmFsLCBkZWZhdWx0X3ZhbCk6Ci0gICIiIlZlcmlmaWVzIHRoYXQgdGhlIGdpdmVuIGZsYWcgaXMg
YWZmZWN0ZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgZW52IHZhci4iIiIKLQotICBlbnZfdmFyID0g
J0dURVNUXycgKyBmbGFnLnVwcGVyKCkKLSAgU2V0RW52VmFyKGVudl92YXIsIHRlc3RfdmFsKQot
ICBBc3NlcnRFcSh0ZXN0X3ZhbCwgR2V0RmxhZyhmbGFnKSkKLSAgU2V0RW52VmFyKGVudl92YXIs
IE5vbmUpCi0gIEFzc2VydEVxKGRlZmF1bHRfdmFsLCBHZXRGbGFnKGZsYWcpKQotCi0KLWNsYXNz
IEdUZXN0RW52VmFyVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAgZGVmIHRlc3RF
bnZWYXJBZmZlY3RzRmxhZyhzZWxmKToKLSAgICAiIiJUZXN0cyB0aGF0IGVudmlyb25tZW50IHZh
cmlhYmxlIHNob3VsZCBhZmZlY3QgdGhlIGNvcnJlc3BvbmRpbmcgZmxhZy4iIiIKLQotICAgIFRl
c3RGbGFnKCdicmVha19vbl9mYWlsdXJlJywgJzEnLCAnMCcpCi0gICAgVGVzdEZsYWcoJ2NvbG9y
JywgJ3llcycsICdhdXRvJykKLSAgICBUZXN0RmxhZygnZmlsdGVyJywgJ0Zvb1Rlc3QuQmFyJywg
JyonKQotICAgIFRlc3RGbGFnKCdvdXRwdXQnLCAneG1sOnRtcC9mb28ueG1sJywgJycpCi0gICAg
VGVzdEZsYWcoJ3ByaW50X3RpbWUnLCAnMCcsICcxJykKLSAgICBUZXN0RmxhZygncmVwZWF0Jywg
Jzk5OScsICcxJykKLSAgICBUZXN0RmxhZygndGhyb3dfb25fZmFpbHVyZScsICcxJywgJzAnKQot
ICAgIFRlc3RGbGFnKCdkZWF0aF90ZXN0X3N0eWxlJywgJ3RocmVhZHNhZmUnLCAnZmFzdCcpCi0K
LSAgICBpZiBJU19XSU5ET1dTOgotICAgICAgVGVzdEZsYWcoJ2NhdGNoX2V4Y2VwdGlvbnMnLCAn
MScsICcwJykKLQotICAgIGlmIElTX0xJTlVYOgotICAgICAgVGVzdEZsYWcoJ2RlYXRoX3Rlc3Rf
dXNlX2ZvcmsnLCAnMScsICcwJykKLSAgICAgIFRlc3RGbGFnKCdzdGFja190cmFjZV9kZXB0aCcs
ICcwJywgJzEwMCcpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVz
dF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfZW52X3Zhcl90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfZW52X3Zhcl90ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdjNzhm
Y2YzMDUzMTJhNjZjMjY1YjE4MTBhNjkxMDc3ZGI3NzFmNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X2Vudl92YXJfdGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotLy8g
Q29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8K
LS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0
cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0v
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gQSBoZWxwZXIgcHJvZ3JhbSBmb3Ig
dGVzdGluZyB0aGF0IEdvb2dsZSBUZXN0IHBhcnNlcyB0aGUgZW52aXJvbm1lbnQKLS8vIHZhcmlh
YmxlcyBjb3JyZWN0bHkuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0jaW5jbHVkZSA8
aW9zdHJlYW0+Ci0KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJz
cmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0K
LXVzaW5nIDo6c3RkOjpjb3V0OwotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLS8vIFRoZSBwdXJw
b3NlIG9mIHRoaXMgaXMgdG8gbWFrZSB0aGUgdGVzdCBtb3JlIHJlYWxpc3RpYyBieSBlbnN1cmlu
ZwotLy8gdGhhdCB0aGUgVW5pdFRlc3Qgc2luZ2xldG9uIGlzIGNyZWF0ZWQgYmVmb3JlIG1haW4o
KSBpcyBlbnRlcmVkLgotLy8gV2UgZG9uJ3QgYWN0dWFsIHJ1biB0aGUgVEVTVCBpdHNlbGYuCi1U
RVNUKEdUZXN0RW52VmFyVGVzdCwgRHVtbXkpIHsKLX0KLQotdm9pZCBQcmludEZsYWcoY29uc3Qg
Y2hhciogZmxhZykgewotICBpZiAoc3RyY21wKGZsYWcsICJicmVha19vbl9mYWlsdXJlIikgPT0g
MCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJlKTsKLSAgICByZXR1
cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcsICJjYXRjaF9leGNlcHRpb25zIikgPT0gMCkg
ewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKTsKLSAgICByZXR1cm47
Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcsICJjb2xvciIpID09IDApIHsKLSAgICBjb3V0IDw8
IEdURVNUX0ZMQUcoY29sb3IpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxh
ZywgImRlYXRoX3Rlc3Rfc3R5bGUiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKGRl
YXRoX3Rlc3Rfc3R5bGUpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywg
ImRlYXRoX3Rlc3RfdXNlX2ZvcmsiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKGRl
YXRoX3Rlc3RfdXNlX2ZvcmspOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxh
ZywgImZpbHRlciIpID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcoZmlsdGVyKTsKLSAg
ICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcsICJvdXRwdXQiKSA9PSAwKSB7Ci0g
ICAgY291dCA8PCBHVEVTVF9GTEFHKG91dHB1dCk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaWYg
KHN0cmNtcChmbGFnLCAicHJpbnRfdGltZSIpID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZM
QUcocHJpbnRfdGltZSk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAi
cmVwZWF0IikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhyZXBlYXQpOwotICAgIHJl
dHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywgInN0YWNrX3RyYWNlX2RlcHRoIikgPT0g
MCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCk7Ci0gICAgcmV0
dXJuOwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAidGhyb3dfb25fZmFpbHVyZSIpID09IDAp
IHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSk7Ci0gICAgcmV0dXJu
OwotICB9Ci0KLSAgY291dCA8PCAiSW52YWxpZCBmbGFnIG5hbWUgIiA8PCBmbGFnCi0gICAgICAg
PDwgIi4gIFZhbGlkIG5hbWVzIGFyZSBicmVha19vbl9mYWlsdXJlLCBjb2xvciwgZmlsdGVyLCBl
dGMuXG4iOwotICBleGl0KDEpOwotfQotCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi1pbnQg
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3Qo
JmFyZ2MsIGFyZ3YpOwotCi0gIGlmIChhcmdjICE9IDIpIHsKLSAgICBjb3V0IDw8ICJVc2FnZTog
Z3Rlc3RfZW52X3Zhcl90ZXN0XyBOQU1FX09GX0ZMQUdcbiI7Ci0gICAgcmV0dXJuIDE7Ci0gIH0K
LQotICB0ZXN0aW5nOjpQcmludEZsYWcoYXJndlsxXSk7Ci0gIHJldHVybiAwOwotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0
LmNjCmluZGV4IGM5MzkyNjE0ZDc0ZDdmYzIzMmU4NmIyYzNkNmNkYjFiMWUyYjYxMzEuLmJjOTUy
NGQ2NjM3M2U3MTk1MWNhY2NkOTA2YzA2NmVmNGFmOTRiNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudmlyb25tZW50X3Rlc3QuY2MKQEAgLTI2
LDE0ICsyNiwxNCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogLy8K
IC8vIFRlc3RzIHVzaW5nIGdsb2JhbCB0ZXN0IGVudmlyb25tZW50cy4KIAogI2luY2x1ZGUgPHN0
ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNp
bmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwu
aCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogR1RFU1RfREVDTEFSRV9zdHJpbmdfKGZpbHRlcik7
CkBAIC05Miw2ICs5Miw3IEBAIGNsYXNzIE15RW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6
RW52aXJvbm1lbnQgewogCiAgIC8vIFdhcyBUZWFyRG93bigpIHJ1bj8KICAgYm9vbCB0ZWFyX2Rv
d25fd2FzX3J1bigpIGNvbnN0IHsgcmV0dXJuIHRlYXJfZG93bl93YXNfcnVuXzsgfQorCiAgcHJp
dmF0ZToKICAgRmFpbHVyZVR5cGUgZmFpbHVyZV9pbl9zZXRfdXBfOwogICBib29sIHNldF91cF93
YXNfcnVuXzsKQEAgLTExMSw3ICsxMTIsNyBAQCBURVNUKEZvb1Rlc3QsIEJhcikgewogdm9pZCBD
aGVjayhib29sIGNvbmRpdGlvbiwgY29uc3QgY2hhciogbXNnKSB7CiAgIGlmICghY29uZGl0aW9u
KSB7CiAgICAgcHJpbnRmKCJGQUlMRUQ6ICVzXG4iLCBtc2cpOwotICAgIGFib3J0KCk7CisgICAg
dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpBYm9ydCgpOwogICB9CiB9CiAKQEAgLTEyMyw2ICsx
MjQsNyBAQCBpbnQgUnVuQWxsVGVzdHMoTXlFbnZpcm9ubWVudCogZW52LCBGYWlsdXJlVHlwZSBm
YWlsdXJlKSB7CiAgIGVudi0+UmVzZXQoKTsKICAgZW52LT5zZXRfZmFpbHVyZV9pbl9zZXRfdXAo
ZmFpbHVyZSk7CiAgIHRlc3Rfd2FzX3J1biA9IGZhbHNlOworICB0ZXN0aW5nOjppbnRlcm5hbDo6
R2V0VW5pdFRlc3RJbXBsKCktPkNsZWFyQWRIb2NUZXN0UmVzdWx0KCk7CiAgIHJldHVybiBSVU5f
QUxMX1RFU1RTKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF9maWx0ZXJfdW5pdHRlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDBkMWE3NzAwNThjY2I5MDExNTQ2ODA5MjRjYmQzYzY0ZDhjOGQxNzkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2MzMgKzAs
MCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA1IEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJVbml0IHRl
c3QgZm9yIEdvb2dsZSBUZXN0IHRlc3QgZmlsdGVycy4KLQotQSB1c2VyIGNhbiBzcGVjaWZ5IHdo
aWNoIHRlc3QocykgaW4gYSBHb29nbGUgVGVzdCBwcm9ncmFtIHRvIHJ1biB2aWEgZWl0aGVyCi10
aGUgR1RFU1RfRklMVEVSIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZSAtLWd0ZXN0X2ZpbHRl
ciBmbGFnLgotVGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5IGJ5IGludm9raW5n
Ci1ndGVzdF9maWx0ZXJfdW5pdHRlc3RfIChhIHByb2dyYW0gd3JpdHRlbiB3aXRoIEdvb2dsZSBU
ZXN0KSB3aXRoIGRpZmZlcmVudAotZW52aXJvbm1lbnRzIGFuZCBjb21tYW5kIGxpbmUgZmxhZ3Mu
Ci0KLU5vdGUgdGhhdCB0ZXN0IHNoYXJkaW5nIG1heSBhbHNvIGluZmx1ZW5jZSB3aGljaCB0ZXN0
cyBhcmUgZmlsdGVyZWQuIFRoZXJlZm9yZSwKLXdlIHRlc3QgdGhhdCBoZXJlIGFsc28uCi0iIiIK
LQotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0
IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzZXRzCi1pbXBvcnQgc3lzCi0KLWltcG9ydCBndGVzdF90
ZXN0X3V0aWxzCi0KLSMgQ29uc3RhbnRzLgotCi0jIENoZWNrcyBpZiB0aGlzIHBsYXRmb3JtIGNh
biBwYXNzIGVtcHR5IGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBjaGlsZAotIyBwcm9jZXNzZXMu
ICBXZSBzZXQgYW4gZW52IHZhcmlhYmxlIHRvIGFuIGVtcHR5IHN0cmluZyBhbmQgaW52b2tlIGEg
cHl0aG9uCi0jIHNjcmlwdCBpbiBhIHN1YnByb2Nlc3MgdG8gcHJpbnQgd2hldGhlciB0aGUgdmFy
aWFibGUgaXMgU1RJTEwgaW4KLSMgb3MuZW52aXJvbi4gIFdlIHRoZW4gdXNlICdldmFsJyB0byBw
YXJzZSB0aGUgY2hpbGQncyBvdXRwdXQgc28gdGhhdCBhbgotIyBleGNlcHRpb24gaXMgdGhyb3du
IGlmIHRoZSBpbnB1dCBpcyBhbnl0aGluZyBvdGhlciB0aGFuICdUcnVlJyBub3IgJ0ZhbHNlJy4K
LW9zLmVudmlyb25bJ0VNUFRZX1ZBUiddID0gJycKLWNoaWxkID0gZ3Rlc3RfdGVzdF91dGlscy5T
dWJwcm9jZXNzKAotICAgIFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgJ2ltcG9ydCBvczsgcHJpbnQg
XCdFTVBUWV9WQVJcJyBpbiBvcy5lbnZpcm9uJ10pCi1DQU5fUEFTU19FTVBUWV9FTlYgPSBldmFs
KGNoaWxkLm91dHB1dCkKLQotCi0jIENoZWNrIGlmIHRoaXMgcGxhdGZvcm0gY2FuIHVuc2V0IGVu
dmlyb25tZW50IHZhcmlhYmxlcyBpbiBjaGlsZCBwcm9jZXNzZXMuCi0jIFdlIHNldCBhbiBlbnYg
dmFyaWFibGUgdG8gYSBub24tZW1wdHkgc3RyaW5nLCB1bnNldCBpdCwgYW5kIGludm9rZQotIyBh
IHB5dGhvbiBzY3JpcHQgaW4gYSBzdWJwcm9jZXNzIHRvIHByaW50IHdoZXRoZXIgdGhlIHZhcmlh
YmxlCi0jIGlzIE5PIExPTkdFUiBpbiBvcy5lbnZpcm9uLgotIyBXZSB1c2UgJ2V2YWwnIHRvIHBh
cnNlIHRoZSBjaGlsZCdzIG91dHB1dCBzbyB0aGF0IGFuIGV4Y2VwdGlvbgotIyBpcyB0aHJvd24g
aWYgdGhlIGlucHV0IGlzIG5laXRoZXIgJ1RydWUnIG5vciAnRmFsc2UnLgotb3MuZW52aXJvblsn
VU5TRVRfVkFSJ10gPSAnWCcKLWRlbCBvcy5lbnZpcm9uWydVTlNFVF9WQVInXQotY2hpbGQgPSBn
dGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCi0gICAgW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAn
aW1wb3J0IG9zOyBwcmludCBcJ1VOU0VUX1ZBUlwnIG5vdCBpbiBvcy5lbnZpcm9uJ10pCi1DQU5f
VU5TRVRfRU5WID0gZXZhbChjaGlsZC5vdXRwdXQpCi0KLQotIyBDaGVja3MgaWYgd2Ugc2hvdWxk
IHRlc3Qgd2l0aCBhbiBlbXB0eSBmaWx0ZXIuIFRoaXMgZG9lc24ndAotIyBtYWtlIHNlbnNlIG9u
IHBsYXRmb3JtcyB0aGF0IGNhbm5vdCBwYXNzIGVtcHR5IGVudiB2YXJpYWJsZXMgKFdpbjMyKQot
IyBhbmQgb24gcGxhdGZvcm1zIHRoYXQgY2Fubm90IHVuc2V0IHZhcmlhYmxlcyAoc2luY2Ugd2Ug
Y2Fubm90IHRlbGwKLSMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAiIiBhbmQgTlVMTCAtLSBCb3Js
YW5kIGFuZCBTb2xhcmlzIDwgNS4xMCkKLUNBTl9URVNUX0VNUFRZX0ZJTFRFUiA9IChDQU5fUEFT
U19FTVBUWV9FTlYgYW5kIENBTl9VTlNFVF9FTlYpCi0KLQotIyBUaGUgZW52aXJvbm1lbnQgdmFy
aWFibGUgZm9yIHNwZWNpZnlpbmcgdGhlIHRlc3QgZmlsdGVycy4KLUZJTFRFUl9FTlZfVkFSID0g
J0dURVNUX0ZJTFRFUicKLQotIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0ZXN0IHNo
YXJkaW5nLgotVE9UQUxfU0hBUkRTX0VOVl9WQVIgPSAnR1RFU1RfVE9UQUxfU0hBUkRTJwotU0hB
UkRfSU5ERVhfRU5WX1ZBUiA9ICdHVEVTVF9TSEFSRF9JTkRFWCcKLVNIQVJEX1NUQVRVU19GSUxF
X0VOVl9WQVIgPSAnR1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEUnCi0KLSMgVGhlIGNvbW1hbmQgbGlu
ZSBmbGFnIGZvciBzcGVjaWZ5aW5nIHRoZSB0ZXN0IGZpbHRlcnMuCi1GSUxURVJfRkxBRyA9ICdn
dGVzdF9maWx0ZXInCi0KLSMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciBpbmNsdWRpbmcgZGlz
YWJsZWQgdGVzdHMuCi1BTFNPX1JVTl9ESVNBQkVEX1RFU1RTX0ZMQUcgPSAnZ3Rlc3RfYWxzb19y
dW5fZGlzYWJsZWRfdGVzdHMnCi0KLSMgQ29tbWFuZCB0byBydW4gdGhlIGd0ZXN0X2ZpbHRlcl91
bml0dGVzdF8gcHJvZ3JhbS4KLUNPTU1BTkQgPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVj
dXRhYmxlUGF0aCgnZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0XycpCi0KLSMgUmVnZXggZm9yIGRldGVy
bWluaW5nIHdoZXRoZXIgcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZW5hYmxlZCBpbiB0aGUgYmlu
YXJ5LgotUEFSQU1fVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocicvUGFyYW1UZXN0JykKLQotIyBS
ZWdleCBmb3IgcGFyc2luZyB0ZXN0IGNhc2UgbmFtZXMgZnJvbSBHb29nbGUgVGVzdCdzIG91dHB1
dC4KLVRFU1RfQ0FTRV9SRUdFWCA9IHJlLmNvbXBpbGUocideXFtcLStcXSBcZCsgdGVzdHM/IGZy
b20gKFx3KygvXHcrKT8pJykKLQotIyBSZWdleCBmb3IgcGFyc2luZyB0ZXN0IG5hbWVzIGZyb20g
R29vZ2xlIFRlc3QncyBvdXRwdXQuCi1URVNUX1JFR0VYID0gcmUuY29tcGlsZShyJ15cW1xzKlJV
TlxzKlxdLipcLihcdysoL1x3Kyk/KScpCi0KLSMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIHRvIHRl
bGwgR29vZ2xlIFRlc3QgdG8gb3V0cHV0IHRoZSBsaXN0IG9mIHRlc3RzIGl0Ci0jIHdpbGwgcnVu
LgotTElTVF9URVNUU19GTEFHID0gJy0tZ3Rlc3RfbGlzdF90ZXN0cycKLQotIyBJbmRpY2F0ZXMg
d2hldGhlciBHb29nbGUgVGVzdCBzdXBwb3J0cyBkZWF0aCB0ZXN0cy4KLVNVUFBPUlRTX0RFQVRI
X1RFU1RTID0gJ0hhc0RlYXRoVGVzdCcgaW4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAot
ICAgIFtDT01NQU5ELCBMSVNUX1RFU1RTX0ZMQUddKS5vdXRwdXQKLQotIyBGdWxsIG5hbWVzIG9m
IGFsbCB0ZXN0cyBpbiBndGVzdF9maWx0ZXJfdW5pdHRlc3RzXy4KLVBBUkFNX1RFU1RTID0gWwot
ICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywKLSAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgv
MScsCi0gICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzAnLAotICAgICdTZXFQL1BhcmFtVGVzdC5U
ZXN0WS8xJywKLSAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFgvMCcsCi0gICAgJ1NlcVEvUGFyYW1U
ZXN0LlRlc3RYLzEnLAotICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAnU2VxUS9Q
YXJhbVRlc3QuVGVzdFkvMScsCi0gICAgXQotCi1ESVNBQkxFRF9URVNUUyA9IFsKLSAgICAnQmFy
VGVzdC5ESVNBQkxFRF9UZXN0Rm91cicsCi0gICAgJ0JhclRlc3QuRElTQUJMRURfVGVzdEZpdmUn
LAotICAgICdCYXpUZXN0LkRJU0FCTEVEX1Rlc3RDJywKLSAgICAnRElTQUJMRURfRm9vYmFyVGVz
dC5UZXN0MScsCi0gICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuRElTQUJMRURfVGVzdDInLAotICAg
ICdESVNBQkxFRF9Gb29iYXJiYXpUZXN0LlRlc3RBJywKLSAgICBdCi0KLWlmIFNVUFBPUlRTX0RF
QVRIX1RFU1RTOgotICBERUFUSF9URVNUUyA9IFsKLSAgICAnSGFzRGVhdGhUZXN0LlRlc3QxJywK
LSAgICAnSGFzRGVhdGhUZXN0LlRlc3QyJywKLSAgICBdCi1lbHNlOgotICBERUFUSF9URVNUUyA9
IFtdCi0KLSMgQWxsIHRoZSBub24tZGlzYWJsZWQgdGVzdHMuCi1BQ1RJVkVfVEVTVFMgPSBbCi0g
ICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAnRm9vVGVzdC5YeXonLAotCi0gICAgJ0JhclRlc3QuVGVz
dE9uZScsCi0gICAgJ0JhclRlc3QuVGVzdFR3bycsCi0gICAgJ0JhclRlc3QuVGVzdFRocmVlJywK
LQotICAgICdCYXpUZXN0LlRlc3RPbmUnLAotICAgICdCYXpUZXN0LlRlc3RBJywKLSAgICAnQmF6
VGVzdC5UZXN0QicsCi0gICAgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMKLQotcGFyYW1f
dGVzdHNfcHJlc2VudCA9IE5vbmUKLQotIyBVdGlsaXRpZXMuCi0KLWVudmlyb24gPSBvcy5lbnZp
cm9uLmNvcHkoKQotCi0KLWRlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgotICAiIiJTZXRz
IHRoZSBlbnYgdmFyaWFibGUgdG8gJ3ZhbHVlJzsgdW5zZXRzIGl0IHdoZW4gJ3ZhbHVlJyBpcyBO
b25lLiIiIgotCi0gIGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAgIGVudmlyb25bZW52X3Zhcl0g
PSB2YWx1ZQotICBlbGlmIGVudl92YXIgaW4gZW52aXJvbjoKLSAgICBkZWwgZW52aXJvbltlbnZf
dmFyXQotCi0KLWRlZiBSdW5BbmRSZXR1cm5PdXRwdXQoYXJncyA9IE5vbmUpOgotICAiIiJSdW5z
IHRoZSB0ZXN0IHByb2dyYW0gYW5kIHJldHVybnMgaXRzIG91dHB1dC4iIiIKLQotICByZXR1cm4g
Z3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtDT01NQU5EXSArIChhcmdzIG9yIFtdKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52aXJvbikub3V0cHV0Ci0K
LQotZGVmIFJ1bkFuZEV4dHJhY3RUZXN0TGlzdChhcmdzID0gTm9uZSk6Ci0gICIiIlJ1bnMgdGhl
IHRlc3QgcHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgZXhpdCBjb2RlIGFuZCBhIGxpc3Qgb2YgdGVz
dHMgcnVuLiIiIgotCi0gIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0NPTU1BTkRd
ICsgKGFyZ3Mgb3IgW10pLCBlbnY9ZW52aXJvbikKLSAgdGVzdHNfcnVuID0gW10KLSAgdGVzdF9j
YXNlID0gJycKLSAgdGVzdCA9ICcnCi0gIGZvciBsaW5lIGluIHAub3V0cHV0LnNwbGl0KCdcbicp
OgotICAgIG1hdGNoID0gVEVTVF9DQVNFX1JFR0VYLm1hdGNoKGxpbmUpCi0gICAgaWYgbWF0Y2gg
aXMgbm90IE5vbmU6Ci0gICAgICB0ZXN0X2Nhc2UgPSBtYXRjaC5ncm91cCgxKQotICAgIGVsc2U6
Ci0gICAgICBtYXRjaCA9IFRFU1RfUkVHRVgubWF0Y2gobGluZSkKLSAgICAgIGlmIG1hdGNoIGlz
IG5vdCBOb25lOgotICAgICAgICB0ZXN0ID0gbWF0Y2guZ3JvdXAoMSkKLSAgICAgICAgdGVzdHNf
cnVuLmFwcGVuZCh0ZXN0X2Nhc2UgKyAnLicgKyB0ZXN0KQotICByZXR1cm4gKHRlc3RzX3J1biwg
cC5leGl0X2NvZGUpCi0KLQotZGVmIEludm9rZVdpdGhNb2RpZmllZEVudihleHRyYV9lbnYsIGZ1
bmN0aW9uLCAqYXJncywgKiprd2FyZ3MpOgotICAiIiJSdW5zIHRoZSBnaXZlbiBmdW5jdGlvbiBh
bmQgYXJndW1lbnRzIGluIGEgbW9kaWZpZWQgZW52aXJvbm1lbnQuIiIiCi0gIHRyeToKLSAgICBv
cmlnaW5hbF9lbnYgPSBlbnZpcm9uLmNvcHkoKQotICAgIGVudmlyb24udXBkYXRlKGV4dHJhX2Vu
dikKLSAgICByZXR1cm4gZnVuY3Rpb24oKmFyZ3MsICoqa3dhcmdzKQotICBmaW5hbGx5OgotICAg
IGVudmlyb24uY2xlYXIoKQotICAgIGVudmlyb24udXBkYXRlKG9yaWdpbmFsX2VudikKLQotCi1k
ZWYgUnVuV2l0aFNoYXJkaW5nKHRvdGFsX3NoYXJkcywgc2hhcmRfaW5kZXgsIGNvbW1hbmQpOgot
ICAiIiJSdW5zIGEgdGVzdCBwcm9ncmFtIHNoYXJkIGFuZCByZXR1cm5zIGV4aXQgY29kZSBhbmQg
YSBsaXN0IG9mIHRlc3RzIHJ1bi4iIiIKLQotICBleHRyYV9lbnYgPSB7U0hBUkRfSU5ERVhfRU5W
X1ZBUjogc3RyKHNoYXJkX2luZGV4KSwKLSAgICAgICAgICAgICAgIFRPVEFMX1NIQVJEU19FTlZf
VkFSOiBzdHIodG90YWxfc2hhcmRzKX0KLSAgcmV0dXJuIEludm9rZVdpdGhNb2RpZmllZEVudihl
eHRyYV9lbnYsIFJ1bkFuZEV4dHJhY3RUZXN0TGlzdCwgY29tbWFuZCkKLQotIyBUaGUgdW5pdCB0
ZXN0LgotCi0KLWNsYXNzIEdUZXN0RmlsdGVyVW5pdFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0
Q2FzZSk6Ci0gICIiIlRlc3RzIHRoZSBlbnYgdmFyaWFibGUgb3IgdGhlIGNvbW1hbmQgbGluZSBm
bGFnIHRvIGZpbHRlciB0ZXN0cy4iIiIKLQotICAjIFV0aWxpdGllcy4KLQotICBkZWYgQXNzZXJ0
U2V0RXF1YWwoc2VsZiwgbGhzLCByaHMpOgotICAgICIiIkFzc2VydHMgdGhhdCB0d28gc2V0cyBh
cmUgZXF1YWwuIiIiCi0KLSAgICBmb3IgZWxlbSBpbiBsaHM6Ci0gICAgICBzZWxmLmFzc2VydF8o
ZWxlbSBpbiByaHMsICclcyBpbiAlcycgJSAoZWxlbSwgcmhzKSkKLQotICAgIGZvciBlbGVtIGlu
IHJoczoKLSAgICAgIHNlbGYuYXNzZXJ0XyhlbGVtIGluIGxocywgJyVzIGluICVzJyAlIChlbGVt
LCBsaHMpKQotCi0gIGRlZiBBc3NlcnRQYXJ0aXRpb25Jc1ZhbGlkKHNlbGYsIHNldF92YXIsIGxp
c3Rfb2Zfc2V0cyk6Ci0gICAgIiIiQXNzZXJ0cyB0aGF0IGxpc3Rfb2Zfc2V0cyBpcyBhIHZhbGlk
IHBhcnRpdGlvbiBvZiBzZXRfdmFyLiIiIgotCi0gICAgZnVsbF9wYXJ0aXRpb24gPSBbXQotICAg
IGZvciBzbGljZV92YXIgaW4gbGlzdF9vZl9zZXRzOgotICAgICAgZnVsbF9wYXJ0aXRpb24uZXh0
ZW5kKHNsaWNlX3ZhcikKLSAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXRfdmFyKSwgbGVuKGZ1
bGxfcGFydGl0aW9uKSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHNldHMuU2V0KHNldF92YXIpLCBz
ZXRzLlNldChmdWxsX3BhcnRpdGlvbikpCi0KLSAgZGVmIEFkanVzdEZvclBhcmFtZXRlcml6ZWRU
ZXN0cyhzZWxmLCB0ZXN0c190b19ydW4pOgotICAgICIiIkFkanVzdCB0ZXN0c190b19ydW4gaW4g
Y2FzZSB2YWx1ZSBwYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBkaXNhYmxlZC4iIiIKLQotICAgIGds
b2JhbCBwYXJhbV90ZXN0c19wcmVzZW50Ci0gICAgaWYgbm90IHBhcmFtX3Rlc3RzX3ByZXNlbnQ6
Ci0gICAgICByZXR1cm4gbGlzdChzZXRzLlNldCh0ZXN0c190b19ydW4pIC0gc2V0cy5TZXQoUEFS
QU1fVEVTVFMpKQotICAgIGVsc2U6Ci0gICAgICByZXR1cm4gdGVzdHNfdG9fcnVuCi0KLSAgZGVm
IFJ1bkFuZFZlcmlmeShzZWxmLCBndGVzdF9maWx0ZXIsIHRlc3RzX3RvX3J1bik6Ci0gICAgIiIi
Q2hlY2tzIHRoYXQgdGhlIGJpbmFyeSBydW5zIGNvcnJlY3Qgc2V0IG9mIHRlc3RzIGZvciBhIGdp
dmVuIGZpbHRlci4iIiIKLQotICAgIHRlc3RzX3RvX3J1biA9IHNlbGYuQWRqdXN0Rm9yUGFyYW1l
dGVyaXplZFRlc3RzKHRlc3RzX3RvX3J1bikKLQotICAgICMgRmlyc3QsIHRlc3RzIHVzaW5nIHRo
ZSBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLQotICAgICMgV2luZG93cyByZW1vdmVzIGVtcHR5IHZh
cmlhYmxlcyBmcm9tIHRoZSBlbnZpcm9ubWVudCB3aGVuIHBhc3NpbmcgaXQKLSAgICAjIHRvIGEg
bmV3IHByb2Nlc3MuICBUaGlzIG1lYW5zIGl0IGlzIGltcG9zc2libGUgdG8gcGFzcyBhbiBlbXB0
eSBmaWx0ZXIKLSAgICAjIGludG8gYSBwcm9jZXNzIHVzaW5nIHRoZSBlbnZpcm9ubWVudCB2YXJp
YWJsZS4gIEhvd2V2ZXIsIHdlIGNhbiBzdGlsbAotICAgICMgdGVzdCB0aGUgY2FzZSB3aGVuIHRo
ZSB2YXJpYWJsZSBpcyBub3Qgc3VwcGxpZWQgKGkuZS4sIGd0ZXN0X2ZpbHRlciBpcwotICAgICMg
Tm9uZSkuCi0gICAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2NDAzCi0gICAgaWYgQ0FOX1RFU1Rf
RU1QVFlfRklMVEVSIG9yIGd0ZXN0X2ZpbHRlciAhPSAnJzoKLSAgICAgIFNldEVudlZhcihGSUxU
RVJfRU5WX1ZBUiwgZ3Rlc3RfZmlsdGVyKQotICAgICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFj
dFRlc3RMaXN0KClbMF0KLSAgICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgTm9uZSkKLSAg
ICAgIHNlbGYuQXNzZXJ0U2V0RXF1YWwodGVzdHNfcnVuLCB0ZXN0c190b19ydW4pCi0gICAgIyBw
eWxpbnQ6IGVuYWJsZS1tc2c9QzY0MDMKLQotICAgICMgTmV4dCwgdGVzdHMgdXNpbmcgdGhlIGNv
bW1hbmQgbGluZSBmbGFnLgotCi0gICAgaWYgZ3Rlc3RfZmlsdGVyIGlzIE5vbmU6Ci0gICAgICBh
cmdzID0gW10KLSAgICBlbHNlOgotICAgICAgYXJncyA9IFsnLS0lcz0lcycgJSAoRklMVEVSX0ZM
QUcsIGd0ZXN0X2ZpbHRlcildCi0KLSAgICB0ZXN0c19ydW4gPSBSdW5BbmRFeHRyYWN0VGVzdExp
c3QoYXJncylbMF0KLSAgICBzZWxmLkFzc2VydFNldEVxdWFsKHRlc3RzX3J1biwgdGVzdHNfdG9f
cnVuKQotCi0gIGRlZiBSdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoc2VsZiwgZ3Rlc3RfZmlsdGVy
LCB0b3RhbF9zaGFyZHMsIHRlc3RzX3RvX3J1biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcmdzPU5vbmUsIGNoZWNrX2V4aXRfMD1GYWxzZSk6Ci0gICAgIiIiQ2hlY2tzIHRoYXQg
YmluYXJ5IHJ1bnMgY29ycmVjdCB0ZXN0cyBmb3IgdGhlIGdpdmVuIGZpbHRlciBhbmQgc2hhcmQu
Ci0KLSAgICBSdW5zIGFsbCBzaGFyZHMgb2YgZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0XyB3aXRoIHRo
ZSBnaXZlbiBmaWx0ZXIsIGFuZAotICAgIHZlcmlmaWVzIHRoYXQgdGhlIHJpZ2h0IHNldCBvZiB0
ZXN0cyB3ZXJlIHJ1bi4gVGhlIHVuaW9uIG9mIHRlc3RzIHJ1bgotICAgIG9uIGVhY2ggc2hhcmQg
c2hvdWxkIGJlIGlkZW50aWNhbCB0byB0ZXN0c190b19ydW4sIHdpdGhvdXQgZHVwbGljYXRlcy4K
LQotICAgIEFyZ3M6Ci0gICAgICBndGVzdF9maWx0ZXI6IEEgZmlsdGVyIHRvIGFwcGx5IHRvIHRo
ZSB0ZXN0cy4KLSAgICAgIHRvdGFsX3NoYXJkczogQSB0b3RhbCBudW1iZXIgb2Ygc2hhcmRzIHRv
IHNwbGl0IHRlc3QgcnVuIGludG8uCi0gICAgICB0ZXN0c190b19ydW46IEEgc2V0IG9mIHRlc3Rz
IGV4cGVjdGVkIHRvIHJ1bi4KLSAgICAgIGFyZ3MgICA6ICAgICAgQXJndW1lbnRzIHRvIHBhc3Mg
dG8gdGhlIHRvIHRoZSB0ZXN0IGJpbmFyeS4KLSAgICAgIGNoZWNrX2V4aXRfMDogV2hlbiBzZXQg
dG8gYSB0cnVlIHZhbHVlLCBtYWtlIHN1cmUgdGhhdCBhbGwgc2hhcmRzCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiAwLgotICAgICIiIgotCi0gICAgdGVzdHNfdG9fcnVuID0gc2VsZi5BZGp1
c3RGb3JQYXJhbWV0ZXJpemVkVGVzdHModGVzdHNfdG9fcnVuKQotCi0gICAgIyBXaW5kb3dzIHJl
bW92ZXMgZW1wdHkgdmFyaWFibGVzIGZyb20gdGhlIGVudmlyb25tZW50IHdoZW4gcGFzc2luZyBp
dAotICAgICMgdG8gYSBuZXcgcHJvY2Vzcy4gIFRoaXMgbWVhbnMgaXQgaXMgaW1wb3NzaWJsZSB0
byBwYXNzIGFuIGVtcHR5IGZpbHRlcgotICAgICMgaW50byBhIHByb2Nlc3MgdXNpbmcgdGhlIGVu
dmlyb25tZW50IHZhcmlhYmxlLiAgSG93ZXZlciwgd2UgY2FuIHN0aWxsCi0gICAgIyB0ZXN0IHRo
ZSBjYXNlIHdoZW4gdGhlIHZhcmlhYmxlIGlzIG5vdCBzdXBwbGllZCAoaS5lLiwgZ3Rlc3RfZmls
dGVyIGlzCi0gICAgIyBOb25lKS4KLSAgICAjIHB5bGludDogZGlzYWJsZS1tc2c9QzY0MDMKLSAg
ICBpZiBDQU5fVEVTVF9FTVBUWV9GSUxURVIgb3IgZ3Rlc3RfZmlsdGVyICE9ICcnOgotICAgICAg
U2V0RW52VmFyKEZJTFRFUl9FTlZfVkFSLCBndGVzdF9maWx0ZXIpCi0gICAgICBwYXJ0aXRpb24g
PSBbXQotICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgdG90YWxfc2hhcmRzKToKLSAgICAgICAgKHRl
c3RzX3J1biwgZXhpdF9jb2RlKSA9IFJ1bldpdGhTaGFyZGluZyh0b3RhbF9zaGFyZHMsIGksIGFy
Z3MpCi0gICAgICAgIGlmIGNoZWNrX2V4aXRfMDoKLSAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDAsIGV4aXRfY29kZSkKLSAgICAgICAgcGFydGl0aW9uLmFwcGVuZCh0ZXN0c19ydW4pCi0KLSAg
ICAgIHNlbGYuQXNzZXJ0UGFydGl0aW9uSXNWYWxpZCh0ZXN0c190b19ydW4sIHBhcnRpdGlvbikK
LSAgICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgTm9uZSkKLSAgICAjIHB5bGludDogZW5h
YmxlLW1zZz1DNjQwMwotCi0gIGRlZiBSdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKHNlbGYs
IGd0ZXN0X2ZpbHRlciwgdGVzdHNfdG9fcnVuKToKLSAgICAiIiJDaGVja3MgdGhhdCB0aGUgYmlu
YXJ5IHJ1bnMgY29ycmVjdCBzZXQgb2YgdGVzdHMgZm9yIHRoZSBnaXZlbiBmaWx0ZXIuCi0KLSAg
ICBSdW5zIGd0ZXN0X2ZpbHRlcl91bml0dGVzdF8gd2l0aCB0aGUgZ2l2ZW4gZmlsdGVyLCBhbmQg
ZW5hYmxlcwotICAgIGRpc2FibGVkIHRlc3RzLiBWZXJpZmllcyB0aGF0IHRoZSByaWdodCBzZXQg
b2YgdGVzdHMgd2VyZSBydW4uCi0KLSAgICBBcmdzOgotICAgICAgZ3Rlc3RfZmlsdGVyOiBBIGZp
bHRlciB0byBhcHBseSB0byB0aGUgdGVzdHMuCi0gICAgICB0ZXN0c190b19ydW46IEEgc2V0IG9m
IHRlc3RzIGV4cGVjdGVkIHRvIHJ1bi4KLSAgICAiIiIKLQotICAgIHRlc3RzX3RvX3J1biA9IHNl
bGYuQWRqdXN0Rm9yUGFyYW1ldGVyaXplZFRlc3RzKHRlc3RzX3RvX3J1bikKLQotICAgICMgQ29u
c3RydWN0IHRoZSBjb21tYW5kIGxpbmUuCi0gICAgYXJncyA9IFsnLS0lcycgJSBBTFNPX1JVTl9E
SVNBQkVEX1RFU1RTX0ZMQUddCi0gICAgaWYgZ3Rlc3RfZmlsdGVyIGlzIG5vdCBOb25lOgotICAg
ICAgYXJncy5hcHBlbmQoJy0tJXM9JXMnICUgKEZJTFRFUl9GTEFHLCBndGVzdF9maWx0ZXIpKQot
Ci0gICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KGFyZ3MpWzBdCi0gICAgc2Vs
Zi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIHRlc3RzX3RvX3J1bikKLQotICBkZWYgc2V0VXAo
c2VsZik6Ci0gICAgIiIiU2V0cyB1cCB0ZXN0IGNhc2UuCi0KLSAgICBEZXRlcm1pbmVzIHdoZXRo
ZXIgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZW5hYmxlZCBpbiB0aGUgYmluYXJ5IGFu
ZAotICAgIHNldHMgdGhlIGZsYWdzIGFjY29yZGluZ2x5LgotICAgICIiIgotCi0gICAgZ2xvYmFs
IHBhcmFtX3Rlc3RzX3ByZXNlbnQKLSAgICBpZiBwYXJhbV90ZXN0c19wcmVzZW50IGlzIE5vbmU6
Ci0gICAgICBwYXJhbV90ZXN0c19wcmVzZW50ID0gUEFSQU1fVEVTVF9SRUdFWC5zZWFyY2goCi0g
ICAgICAgICAgUnVuQW5kUmV0dXJuT3V0cHV0KCkpIGlzIG5vdCBOb25lCi0KLSAgZGVmIHRlc3RE
ZWZhdWx0QmVoYXZpb3Ioc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9yIG9mIG5vdCBz
cGVjaWZ5aW5nIHRoZSBmaWx0ZXIuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShOb25lLCBB
Q1RJVkVfVEVTVFMpCi0KLSAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3JXaXRoU2hhcmRzKHNlbGYp
OgotICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciB3aXRob3V0IHRoZSBmaWx0ZXIsIHdpdGggc2hh
cmRpbmcgZW5hYmxlZC4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKE5v
bmUsIDEsIEFDVElWRV9URVNUUykKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhO
b25lLCAyLCBBQ1RJVkVfVEVTVFMpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmco
Tm9uZSwgbGVuKEFDVElWRV9URVNUUykgLSAxLCBBQ1RJVkVfVEVTVFMpCi0gICAgc2VsZi5SdW5B
bmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgbGVuKEFDVElWRV9URVNUUyksIEFDVElWRV9URVNU
UykKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhOb25lLCBsZW4oQUNUSVZFX1RF
U1RTKSArIDEsIEFDVElWRV9URVNUUykKLQotICBkZWYgdGVzdEVtcHR5RmlsdGVyKHNlbGYpOgot
ICAgICIiIlRlc3RzIGFuIGVtcHR5IGZpbHRlci4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5
KCcnLCBbXSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZygnJywgMSwgW10pCi0g
ICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJycsIDIsIFtdKQotCi0gIGRlZiB0ZXN0
QmFkRmlsdGVyKHNlbGYpOgotICAgICIiIlRlc3RzIGEgZmlsdGVyIHRoYXQgbWF0Y2hlcyBub3Ro
aW5nLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0JhZEZpbHRlcicsIFtdKQotICAgIHNl
bGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnQmFkRmlsdGVyJywgW10pCi0KLSAgZGVm
IHRlc3RGdWxsTmFtZShzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0ZXJpbmcgYnkgZnVsbCBuYW1l
LiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0Zvb1Rlc3QuWHl6JywgWydGb29UZXN0Llh5
eiddKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnRm9vVGVzdC5YeXon
LCBbJ0Zvb1Rlc3QuWHl6J10pCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJ0Zv
b1Rlc3QuWHl6JywgNSwgWydGb29UZXN0Llh5eiddKQotCi0gIGRlZiB0ZXN0VW5pdmVyc2FsRmls
dGVycyhzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0ZXJzIHRoYXQgbWF0Y2ggZXZlcnl0aGluZy4i
IiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqJywgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYu
UnVuQW5kVmVyaWZ5KCcqLionLCBBQ1RJVkVfVEVTVFMpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlX
aXRoU2hhcmRpbmcoJyouKicsIGxlbihBQ1RJVkVfVEVTVFMpIC0gMywgQUNUSVZFX1RFU1RTKQot
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnKicsIEFDVElWRV9URVNUUyAr
IERJU0FCTEVEX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgn
Ki4qJywgQUNUSVZFX1RFU1RTICsgRElTQUJMRURfVEVTVFMpCi0KLSAgZGVmIHRlc3RGaWx0ZXJC
eVRlc3RDYXNlKHNlbGYpOgotICAgICIiIlRlc3RzIGZpbHRlcmluZyBieSB0ZXN0IGNhc2UgbmFt
ZS4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdGb29UZXN0LionLCBbJ0Zvb1Rlc3QuQWJj
JywgJ0Zvb1Rlc3QuWHl6J10pCi0KLSAgICBCQVpfVEVTVFMgPSBbJ0JhelRlc3QuVGVzdE9uZScs
ICdCYXpUZXN0LlRlc3RBJywgJ0JhelRlc3QuVGVzdEInXQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5
KCdCYXpUZXN0LionLCBCQVpfVEVTVFMpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rp
c2FibGVkKCdCYXpUZXN0LionLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCQVpfVEVTVFMgKyBbJ0JhelRlc3QuRElTQUJMRURfVGVzdEMnXSkKLQotICBkZWYgdGVzdEZp
bHRlckJ5VGVzdChzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0ZXJpbmcgYnkgdGVzdCBuYW1lLiIi
IgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJyouVGVzdE9uZScsIFsnQmFyVGVzdC5UZXN0T25l
JywgJ0JhelRlc3QuVGVzdE9uZSddKQotCi0gIGRlZiB0ZXN0RmlsdGVyRGlzYWJsZWRUZXN0cyhz
ZWxmKToKLSAgICAiIiJTZWxlY3Qgb25seSB0aGUgZGlzYWJsZWQgdGVzdHMgdG8gcnVuLiIiIgot
Ci0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnLCBbXSkK
LSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0RJU0FCTEVEX0Zvb2JhclRl
c3QuVGVzdDEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0RJU0FC
TEVEX0Zvb2JhclRlc3QuVGVzdDEnXSkKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqRElTQUJM
RURfKicsIFtdKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnKkRJU0FC
TEVEXyonLCBESVNBQkxFRF9URVNUUykKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLkRJU0FC
TEVEXyonLCBbXSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJyouRElT
QUJMRURfKicsIFsKLSAgICAgICAgJ0JhclRlc3QuRElTQUJMRURfVGVzdEZvdXInLAotICAgICAg
ICAnQmFyVGVzdC5ESVNBQkxFRF9UZXN0Rml2ZScsCi0gICAgICAgICdCYXpUZXN0LkRJU0FCTEVE
X1Rlc3RDJywKLSAgICAgICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuRElTQUJMRURfVGVzdDInLAot
ICAgICAgICBdKQotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0RJU0FCTEVEXyonLCBbXSkKLSAg
ICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0RJU0FCTEVEXyonLCBbCi0gICAg
ICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LlRlc3QxJywKLSAgICAgICAgJ0RJU0FCTEVEX0Zvb2Jh
clRlc3QuRElTQUJMRURfVGVzdDInLAotICAgICAgICAnRElTQUJMRURfRm9vYmFyYmF6VGVzdC5U
ZXN0QScsCi0gICAgICAgIF0pCi0KLSAgZGVmIHRlc3RXaWxkY2FyZEluVGVzdENhc2VOYW1lKHNl
bGYpOgotICAgICIiIlRlc3RzIHVzaW5nIHdpbGRjYXJkIGluIHRoZSB0ZXN0IGNhc2UgbmFtZS4i
IiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqYSouKicsIFsKLSAgICAgICAgJ0JhclRlc3Qu
VGVzdE9uZScsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAotICAgICAgICAnQmFyVGVzdC5U
ZXN0VGhyZWUnLAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RPbmUnLAotICAgICAgICAnQmF6VGVz
dC5UZXN0QScsCi0gICAgICAgICdCYXpUZXN0LlRlc3RCJywgXSArIERFQVRIX1RFU1RTICsgUEFS
QU1fVEVTVFMpCi0KLSAgZGVmIHRlc3RXaWxkY2FyZEluVGVzdE5hbWUoc2VsZik6Ci0gICAgIiIi
VGVzdHMgdXNpbmcgd2lsZGNhcmQgaW4gdGhlIHRlc3QgbmFtZS4iIiIKLQotICAgIHNlbGYuUnVu
QW5kVmVyaWZ5KCcqLipBKicsIFsnRm9vVGVzdC5BYmMnLCAnQmF6VGVzdC5UZXN0QSddKQotCi0g
IGRlZiB0ZXN0RmlsdGVyV2l0aG91dERvdChzZWxmKToKLSAgICAiIiJUZXN0cyBhIGZpbHRlciB0
aGF0IGhhcyBubyAnLicgaW4gaXQuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKnoqJywg
WwotICAgICAgICAnRm9vVGVzdC5YeXonLAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RPbmUnLAot
ICAgICAgICAnQmF6VGVzdC5UZXN0QScsCi0gICAgICAgICdCYXpUZXN0LlRlc3RCJywKLSAgICAg
ICAgXSkKLQotICBkZWYgdGVzdFR3b1BhdHRlcm5zKHNlbGYpOgotICAgICIiIlRlc3RzIGZpbHRl
cnMgdGhhdCBjb25zaXN0IG9mIHR3byBwYXR0ZXJucy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVy
aWZ5KCdGb28qLio6KkEqJywgWwotICAgICAgICAnRm9vVGVzdC5BYmMnLAotICAgICAgICAnRm9v
VGVzdC5YeXonLAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RBJywKLSAgICAgICAgXSkKLQotICAg
ICMgQW4gZW1wdHkgcGF0dGVybiArIGEgbm9uLWVtcHR5IG9uZQotICAgIHNlbGYuUnVuQW5kVmVy
aWZ5KCc6KkEqJywgWydGb29UZXN0LkFiYycsICdCYXpUZXN0LlRlc3RBJ10pCi0KLSAgZGVmIHRl
c3RUaHJlZVBhdHRlcm5zKHNlbGYpOgotICAgICIiIlRlc3RzIGZpbHRlcnMgdGhhdCBjb25zaXN0
IG9mIHRocmVlIHBhdHRlcm5zLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJypvbyo6KkEq
OipPbmUnLCBbCi0gICAgICAgICdGb29UZXN0LkFiYycsCi0gICAgICAgICdGb29UZXN0Llh5eics
Ci0KLSAgICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCi0KLSAgICAgICAgJ0JhelRlc3QuVGVzdE9u
ZScsCi0gICAgICAgICdCYXpUZXN0LlRlc3RBJywKLSAgICAgICAgXSkKLQotICAgICMgVGhlIDJu
ZCBwYXR0ZXJuIGlzIGVtcHR5LgotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqb28qOjoqT25lJywg
WwotICAgICAgICAnRm9vVGVzdC5BYmMnLAotICAgICAgICAnRm9vVGVzdC5YeXonLAotCi0gICAg
ICAgICdCYXJUZXN0LlRlc3RPbmUnLAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RPbmUnLAotICAg
ICAgICBdKQotCi0gICAgIyBUaGUgbGFzdCAyIHBhdHRlcm5zIGFyZSBlbXB0eS4KLSAgICBzZWxm
LlJ1bkFuZFZlcmlmeSgnKm9vKjo6JywgWwotICAgICAgICAnRm9vVGVzdC5BYmMnLAotICAgICAg
ICAnRm9vVGVzdC5YeXonLAotICAgICAgICBdKQotCi0gIGRlZiB0ZXN0TmVnYXRpdmVGaWx0ZXJz
KHNlbGYpOgotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLUJhelRlc3QuVGVzdE9uZScsIFsKLSAg
ICAgICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICAgICAn
QmFyVGVzdC5UZXN0T25lJywKLSAgICAgICAgJ0JhclRlc3QuVGVzdFR3bycsCi0gICAgICAgICdC
YXJUZXN0LlRlc3RUaHJlZScsCi0KLSAgICAgICAgJ0JhelRlc3QuVGVzdEEnLAotICAgICAgICAn
QmF6VGVzdC5UZXN0QicsCi0gICAgICAgIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTKQot
Ci0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJyotRm9vVGVzdC5BYmM6QmF6VGVzdC4qJywgWwotICAg
ICAgICAnRm9vVGVzdC5YeXonLAotCi0gICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAotICAgICAg
ICAnQmFyVGVzdC5UZXN0VHdvJywKLSAgICAgICAgJ0JhclRlc3QuVGVzdFRocmVlJywKLSAgICAg
ICAgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMpCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlm
eSgnQmFyVGVzdC4qLUJhclRlc3QuVGVzdE9uZScsIFsKLSAgICAgICAgJ0JhclRlc3QuVGVzdFR3
bycsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCi0gICAgICAgIF0pCi0KLSAgICAjIFRl
c3RzIHdpdGhvdXQgbGVhZGluZyAnKicuCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJy1Gb29UZXN0
LkFiYzpGb29UZXN0Llh5ejpCYXpUZXN0LionLCBbCi0gICAgICAgICdCYXJUZXN0LlRlc3RPbmUn
LAotICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKLSAgICAgICAgJ0JhclRlc3QuVGVzdFRocmVl
JywKLSAgICAgICAgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMpCi0KLSAgICAjIFZhbHVl
IHBhcmFtZXRlcml6ZWQgdGVzdHMuCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJyovKicsIFBBUkFN
X1RFU1RTKQotCi0gICAgIyBWYWx1ZSBwYXJhbWV0ZXJpemVkIHRlc3RzIGZpbHRlcmluZyBieSB0
aGUgc2VxdWVuY2UgbmFtZS4KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnU2VxUC8qJywgWwotICAg
ICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMCcsCi0gICAgICAgICdTZXFQL1BhcmFtVGVzdC5U
ZXN0WC8xJywKLSAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzAnLAotICAgICAgICAnU2Vx
UC9QYXJhbVRlc3QuVGVzdFkvMScsCi0gICAgICAgIF0pCi0KLSAgICAjIFZhbHVlIHBhcmFtZXRl
cml6ZWQgdGVzdHMgZmlsdGVyaW5nIGJ5IHRoZSB0ZXN0IG5hbWUuCi0gICAgc2VsZi5SdW5BbmRW
ZXJpZnkoJyovMCcsIFsKLSAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzAnLAotICAgICAg
ICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMCcsCi0gICAgICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0
WC8wJywKLSAgICAgICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RZLzAnLAotICAgICAgICBdKQotCi0g
IGRlZiB0ZXN0RmxhZ092ZXJyaWRlc0VudlZhcihzZWxmKToKLSAgICAiIiJUZXN0cyB0aGF0IHRo
ZSBmaWx0ZXIgZmxhZyBvdmVycmlkZXMgdGhlIGZpbHRlcmluZyBlbnYuIHZhcmlhYmxlLiIiIgot
Ci0gICAgU2V0RW52VmFyKEZJTFRFUl9FTlZfVkFSLCAnRm9vKicpCi0gICAgYXJncyA9IFsnLS0l
cz0lcycgJSAoRklMVEVSX0ZMQUcsICcqT25lJyldCi0gICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0
cmFjdFRlc3RMaXN0KGFyZ3MpWzBdCi0gICAgU2V0RW52VmFyKEZJTFRFUl9FTlZfVkFSLCBOb25l
KQotCi0gICAgc2VsZi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIFsnQmFyVGVzdC5UZXN0T25l
JywgJ0JhelRlc3QuVGVzdE9uZSddKQotCi0gIGRlZiB0ZXN0U2hhcmRTdGF0dXNGaWxlSXNDcmVh
dGVkKHNlbGYpOgotICAgICIiIlRlc3RzIHRoYXQgdGhlIHNoYXJkIGZpbGUgaXMgY3JlYXRlZCBp
ZiBzcGVjaWZpZWQgaW4gdGhlIGVudmlyb25tZW50LiIiIgotCi0gICAgc2hhcmRfc3RhdHVzX2Zp
bGUgPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYXJkX3N0YXR1c19maWxlJykKLSAgICBz
ZWxmLmFzc2VydF8obm90IG9zLnBhdGguZXhpc3RzKHNoYXJkX3N0YXR1c19maWxlKSkKLQotICAg
IGV4dHJhX2VudiA9IHtTSEFSRF9TVEFUVVNfRklMRV9FTlZfVkFSOiBzaGFyZF9zdGF0dXNfZmls
ZX0KLSAgICB0cnk6Ci0gICAgICBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LCBSdW5B
bmRSZXR1cm5PdXRwdXQpCi0gICAgZmluYWxseToKLSAgICAgIHNlbGYuYXNzZXJ0Xyhvcy5wYXRo
LmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkpCi0gICAgICBvcy5yZW1vdmUoc2hhcmRfc3RhdHVz
X2ZpbGUpCi0KLSAgZGVmIHRlc3RTaGFyZFN0YXR1c0ZpbGVJc0NyZWF0ZWRXaXRoTGlzdFRlc3Rz
KHNlbGYpOgotICAgICIiIlRlc3RzIHRoYXQgdGhlIHNoYXJkIGZpbGUgaXMgY3JlYXRlZCB3aXRo
IHRoZSAibGlzdF90ZXN0cyIgZmxhZy4iIiIKLQotICAgIHNoYXJkX3N0YXR1c19maWxlID0gb3Mu
cGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdzaGFyZF9zdGF0dXNfZmlsZTInKQotICAgIHNlbGYuYXNz
ZXJ0Xyhub3Qgb3MucGF0aC5leGlzdHMoc2hhcmRfc3RhdHVzX2ZpbGUpKQotCi0gICAgZXh0cmFf
ZW52ID0ge1NIQVJEX1NUQVRVU19GSUxFX0VOVl9WQVI6IHNoYXJkX3N0YXR1c19maWxlfQotICAg
IHRyeToKLSAgICAgIG91dHB1dCA9IEludm9rZVdpdGhNb2RpZmllZEVudihleHRyYV9lbnYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVuQW5kUmV0dXJuT3V0cHV0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtMSVNUX1RFU1RTX0ZMQUddKQot
ICAgIGZpbmFsbHk6Ci0gICAgICAjIFRoaXMgYXNzZXJ0aW9uIGVuc3VyZXMgdGhhdCBHb29nbGUg
VGVzdCBlbnVtZXJhdGVkIHRoZSB0ZXN0cyBhcwotICAgICAgIyBvcHBvc2VkIHRvIHJ1bm5pbmcg
dGhlbS4KLSAgICAgIHNlbGYuYXNzZXJ0XygnWz09PT09PT09PT1dJyBub3QgaW4gb3V0cHV0LAot
ICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIG91dHB1dCBkdXJpbmcgdGVzdCBlbnVtZXJh
dGlvbi5cbicKLSAgICAgICAgICAgICAgICAgICAnUGxlYXNlIGVuc3VyZSB0aGF0IExJU1RfVEVT
VFNfRkxBRyBpcyBhc3NpZ25lZCB0aGVcbicKLSAgICAgICAgICAgICAgICAgICAnY29ycmVjdCBm
bGFnIHZhbHVlIGZvciBsaXN0aW5nIEdvb2dsZSBUZXN0IHRlc3RzLicpCi0KLSAgICAgIHNlbGYu
YXNzZXJ0Xyhvcy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkpCi0gICAgICBvcy5yZW1v
dmUoc2hhcmRfc3RhdHVzX2ZpbGUpCi0KLSAgaWYgU1VQUE9SVFNfREVBVEhfVEVTVFM6Ci0gICAg
ZGVmIHRlc3RTaGFyZGluZ1dvcmtzV2l0aERlYXRoVGVzdHMoc2VsZik6Ci0gICAgICAiIiJUZXN0
cyBpbnRlZ3JhdGlvbiB3aXRoIGRlYXRoIHRlc3RzIGFuZCBzaGFyZGluZy4iIiIKLQotICAgICAg
Z3Rlc3RfZmlsdGVyID0gJ0hhc0RlYXRoVGVzdC4qOlNlcVAvKicKLSAgICAgIGV4cGVjdGVkX3Rl
c3RzID0gWwotICAgICAgICAgICdIYXNEZWF0aFRlc3QuVGVzdDEnLAotICAgICAgICAgICdIYXNE
ZWF0aFRlc3QuVGVzdDInLAotCi0gICAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzAnLAot
ICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8xJywKLSAgICAgICAgICAnU2VxUC9QYXJh
bVRlc3QuVGVzdFkvMCcsCi0gICAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzEnLAotICAg
ICAgICAgIF0KLQotICAgICAgZm9yIGZsYWcgaW4gWyctLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGU9
dGhyZWFkc2FmZScsCi0gICAgICAgICAgICAgICAgICAgJy0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHls
ZT1mYXN0J106Ci0gICAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKGd0ZXN0X2Zp
bHRlciwgMywgZXhwZWN0ZWRfdGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoZWNrX2V4aXRfMD1UcnVlLCBhcmdzPVtmbGFnXSkKLSAgICAgICAgc2VsZi5SdW5B
bmRWZXJpZnlXaXRoU2hhcmRpbmcoZ3Rlc3RfZmlsdGVyLCA1LCBleHBlY3RlZF90ZXN0cywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfZXhpdF8wPVRydWUsIGFy
Z3M9W2ZsYWddKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBndGVzdF90ZXN0X3V0
aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9maWx0ZXJfdW5pdHRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9maWx0ZXJfdW5pdHRlc3RfLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjU1
MDRmZTk0YWZjMTc3YzQ2Y2JjMTM1ZmVjNjc1YzU1NGQyZTBkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfZmlsdGVyX3VuaXR0ZXN0Xy5jYworKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBA
Ci0vLyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8v
IGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0v
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0
aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBVbml0IHRlc3QgZm9yIEdv
b2dsZSBUZXN0IHRlc3QgZmlsdGVycy4KLS8vCi0vLyBBIHVzZXIgY2FuIHNwZWNpZnkgd2hpY2gg
dGVzdChzKSBpbiBhIEdvb2dsZSBUZXN0IHByb2dyYW0gdG8gcnVuIHZpYQotLy8gZWl0aGVyIHRo
ZSBHVEVTVF9GSUxURVIgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlIC0tZ3Rlc3RfZmlsdGVy
Ci0vLyBmbGFnLiAgVGhpcyBpcyB1c2VkIGZvciB0ZXN0aW5nIHN1Y2ggZnVuY3Rpb25hbGl0eS4K
LS8vCi0vLyBUaGUgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRl
c3QuICBEb24ndCBydW4gaXQKLS8vIGRpcmVjdGx5LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KLQotbmFtZXNwYWNlIHsKLQotLy8gVGVzdCBjYXNlIEZvb1Rlc3QuCi0KLWNsYXNzIEZvb1Rl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1URVNUX0YoRm9vVGVzdCwgQWJjKSB7
Ci19Ci0KLVRFU1RfRihGb29UZXN0LCBYeXopIHsKLSAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWls
dXJlLiI7Ci19Ci0KLS8vIFRlc3QgY2FzZSBCYXJUZXN0LgotCi1URVNUKEJhclRlc3QsIFRlc3RP
bmUpIHsKLX0KLQotVEVTVChCYXJUZXN0LCBUZXN0VHdvKSB7Ci19Ci0KLVRFU1QoQmFyVGVzdCwg
VGVzdFRocmVlKSB7Ci19Ci0KLVRFU1QoQmFyVGVzdCwgRElTQUJMRURfVGVzdEZvdXIpIHsKLSAg
RkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Ci19Ci0KLVRFU1QoQmFyVGVzdCwgRElTQUJM
RURfVGVzdEZpdmUpIHsKLSAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Ci19Ci0KLS8v
IFRlc3QgY2FzZSBCYXpUZXN0LgotCi1URVNUKEJhelRlc3QsIFRlc3RPbmUpIHsKLSAgRkFJTCgp
IDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Ci19Ci0KLVRFU1QoQmF6VGVzdCwgVGVzdEEpIHsKLX0K
LQotVEVTVChCYXpUZXN0LCBUZXN0QikgewotfQotCi1URVNUKEJhelRlc3QsIERJU0FCTEVEX1Rl
c3RDKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi0vLyBUZXN0IGNh
c2UgSGFzRGVhdGhUZXN0Ci0KLVRFU1QoSGFzRGVhdGhUZXN0LCBUZXN0MSkgewotICBFWFBFQ1Rf
REVBVEhfSUZfU1VQUE9SVEVEKGV4aXQoMSksICIuKiIpOwotfQotCi0vLyBXZSBuZWVkIGF0IGxl
YXN0IHR3byBkZWF0aCB0ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgYWxsIGRlYXRoIHRlc3Rz
Ci0vLyBhcmVuJ3Qgb24gdGhlIGZpcnN0IHNoYXJkLgotVEVTVChIYXNEZWF0aFRlc3QsIFRlc3Qy
KSB7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoZXhpdCgxKSwgIi4qIik7Ci19Ci0KLS8v
IFRlc3QgY2FzZSBGb29iYXJUZXN0Ci0KLVRFU1QoRElTQUJMRURfRm9vYmFyVGVzdCwgVGVzdDEp
IHsKLSAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Ci19Ci0KLVRFU1QoRElTQUJMRURf
Rm9vYmFyVGVzdCwgRElTQUJMRURfVGVzdDIpIHsKLSAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWls
dXJlLiI7Ci19Ci0KLS8vIFRlc3QgY2FzZSBGb29iYXJiYXpUZXN0Ci0KLVRFU1QoRElTQUJMRURf
Rm9vYmFyYmF6VGVzdCwgVGVzdEEpIHsKLSAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7
Ci19Ci0KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotY2xhc3MgUGFyYW1UZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7Ci19OwotCi1URVNUX1AoUGFyYW1UZXN0LCBU
ZXN0WCkgewotfQotCi1URVNUX1AoUGFyYW1UZXN0LCBUZXN0WSkgewotfQotCi1JTlNUQU5USUFU
RV9URVNUX0NBU0VfUChTZXFQLCBQYXJhbVRlc3QsIHRlc3Rpbmc6OlZhbHVlcygxLCAyKSk7Ci1J
TlNUQU5USUFURV9URVNUX0NBU0VfUChTZXFRLCBQYXJhbVRlc3QsIHRlc3Rpbmc6OlZhbHVlcyg1
LCA2KSk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLX0gIC8vIG5hbWVzcGFj
ZQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgOjp0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0
LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3QucHkKaW5k
ZXggM2NiNGM0OGUwYjQ2MjhkOWFhN2M2ZjMyMDdhYjdlZTEwY2QyMmJhMy4uNTgyZDI0YzJkY2Nl
ODk0NTM4YWE2M2NjYmQ2MTIwYmRkNGIzNTBhMCAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3QucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3QucHkKQEAgLTI5LDI3ICsyOSwyNiBAQAogIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotIiIiVGVzdHMgdGhlIC0taGVscCBmbGFnIG9mIEdv
b2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsuCisiIiJUZXN0cyB0aGUgLS1oZWxwIGZsYWcgb2Yg
R29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yay4KIAogU1lOT1BTSVMKLSAg
ICAgICBndGVzdF9oZWxwX3Rlc3QucHkgLS1ndGVzdF9idWlsZF9kaXI9QlVJTEQvRElSCisgICAg
ICAgZ3Rlc3RfaGVscF90ZXN0LnB5IC0tYnVpbGRfZGlyPUJVSUxEL0RJUgogICAgICAgICAgIyB3
aGVyZSBCVUlMRC9ESVIgY29udGFpbnMgdGhlIGJ1aWx0IGd0ZXN0X2hlbHBfdGVzdF8gZmlsZS4K
ICAgICAgICBndGVzdF9oZWxwX3Rlc3QucHkKICIiIgogCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pJwotCiBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IGd0
ZXN0X3Rlc3RfdXRpbHMKIAogCitJU19MSU5VWCA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBhbmQgb3Mu
dW5hbWUoKVswXSA9PSAnTGludXgnCiBJU19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCiAKIFBS
T0dSQU1fUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVz
dF9oZWxwX3Rlc3RfJykKIEZMQUdfUFJFRklYID0gJy0tZ3Rlc3RfJwotQ0FUQ0hfRVhDRVBUSU9O
U19GTEFHID0gRkxBR19QUkVGSVggKyAnY2F0Y2hfZXhjZXB0aW9ucycKIERFQVRIX1RFU1RfU1RZ
TEVfRkxBRyA9IEZMQUdfUFJFRklYICsgJ2RlYXRoX3Rlc3Rfc3R5bGUnCitTVFJFQU1fUkVTVUxU
X1RPX0ZMQUcgPSBGTEFHX1BSRUZJWCArICdzdHJlYW1fcmVzdWx0X3RvJwogVU5LTk9XTl9GTEFH
ID0gRkxBR19QUkVGSVggKyAndW5rbm93bl9mbGFnX2Zvcl90ZXN0aW5nJwogTElTVF9URVNUU19G
TEFHID0gRkxBR19QUkVGSVggKyAnbGlzdF90ZXN0cycKIElOQ09SUkVDVF9GTEFHX1ZBUklBTlRT
ID0gW3JlLnN1YignXi0tJywgJy0nLCBMSVNUX1RFU1RTX0ZMQUcpLApAQCAtNzIsNyArNzEsOCBA
QCBIRUxQX1JFR0VYID0gcmUuY29tcGlsZSgKICAgICBGTEFHX1BSRUZJWCArIHIncHJpbnRfdGlt
ZS4qJyArCiAgICAgRkxBR19QUkVGSVggKyByJ291dHB1dD0uKicgKwogICAgIEZMQUdfUFJFRklY
ICsgcidicmVha19vbl9mYWlsdXJlLionICsKLSAgICBGTEFHX1BSRUZJWCArIHIndGhyb3dfb25f
ZmFpbHVyZS4qJywKKyAgICBGTEFHX1BSRUZJWCArIHIndGhyb3dfb25fZmFpbHVyZS4qJyArCisg
ICAgRkxBR19QUkVGSVggKyByJ2NhdGNoX2V4Y2VwdGlvbnM9MC4qJywKICAgICByZS5ET1RBTEwp
CiAKIApAQCAtMTA5LDEwICsxMDksMTEgQEAgY2xhc3MgR1Rlc3RIZWxwVGVzdChndGVzdF90ZXN0
X3V0aWxzLlRlc3RDYXNlKToKICAgICBleGl0X2NvZGUsIG91dHB1dCA9IFJ1bldpdGhGbGFnKGZs
YWcpCiAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwgZXhpdF9jb2RlKQogICAgIHNlbGYuYXNzZXJ0
XyhIRUxQX1JFR0VYLnNlYXJjaChvdXRwdXQpLCBvdXRwdXQpCi0gICAgaWYgSVNfV0lORE9XUzoK
LSAgICAgIHNlbGYuYXNzZXJ0XyhDQVRDSF9FWENFUFRJT05TX0ZMQUcgaW4gb3V0cHV0LCBvdXRw
dXQpCisKKyAgICBpZiBJU19MSU5VWDoKKyAgICAgIHNlbGYuYXNzZXJ0XyhTVFJFQU1fUkVTVUxU
X1RPX0ZMQUcgaW4gb3V0cHV0LCBvdXRwdXQpCiAgICAgZWxzZToKLSAgICAgIHNlbGYuYXNzZXJ0
XyhDQVRDSF9FWENFUFRJT05TX0ZMQUcgbm90IGluIG91dHB1dCwgb3V0cHV0KQorICAgICAgc2Vs
Zi5hc3NlcnRfKFNUUkVBTV9SRVNVTFRfVE9fRkxBRyBub3QgaW4gb3V0cHV0LCBvdXRwdXQpCiAK
ICAgICBpZiBTVVBQT1JUU19ERUFUSF9URVNUUyBhbmQgbm90IElTX1dJTkRPV1M6CiAgICAgICBz
ZWxmLmFzc2VydF8oREVBVEhfVEVTVF9TVFlMRV9GTEFHIGluIG91dHB1dCwgb3V0cHV0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3RfLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3RfLmNjCmluZGV4
IGFhZDBkNzJkNzY3NTM1ZTFiN2E3MjIyNDc3NTQzMDEwMzNlNzEwNmYuLjc1MGFlNmNlOTVmY2Jj
YjMzOGVkNWRiMmI1ODhmMTVjZGQ1YzJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0Xy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVzdF8uY2MKQEAgLTI2LDEzICsyNiwxMiBAQAogLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUaGlzIHByb2dyYW0gaXMgbWVh
bnQgdG8gYmUgcnVuIGJ5IGd0ZXN0X2hlbHBfdGVzdC5weS4gIERvIG5vdCBydW4KIC8vIGl0IGRp
cmVjdGx5LgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVz
dC5oIgogCiAvLyBXaGVuIGEgaGVscCBmbGFnIGlzIHNwZWNpZmllZCwgdGhpcyBwcm9ncmFtIHNo
b3VsZCBza2lwIHRoZSB0ZXN0cwogLy8gYW5kIGV4aXQgd2l0aCAwOyBvdGhlcndpc2UgdGhlIGZv
bGxvd2luZyB0ZXN0IHdpbGwgYmUgZXhlY3V0ZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2pzb25fdGVzdF91dGlscy5weSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfanNvbl90ZXN0X3V0aWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyYmJm
YzI4OGY4MmIzODdjZDgzNDQ2YzBhMDViYTE2N2IxYWE3NTQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2pzb25fdGVzdF91dGlscy5weQpAQCAt
MCwwICsxLDYwIEBACisjIENvcHlyaWdodCAyMDE4LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMg
ZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVW5pdCB0ZXN0IHV0aWxpdGllcyBm
b3IgZ3Rlc3RfanNvbl9vdXRwdXQuIiIiCisKK2ltcG9ydCByZQorCisKK2RlZiBub3JtYWxpemUo
b2JqKToKKyAgIiIiTm9ybWFsaXplIG91dHB1dCBvYmplY3QuCisKKyAgQXJnczoKKyAgICAgb2Jq
OiBHb29nbGUgVGVzdCdzIEpTT04gb3V0cHV0IG9iamVjdCB0byBub3JtYWxpemUuCisKKyAgUmV0
dXJuczoKKyAgICAgTm9ybWFsaXplZCBvdXRwdXQgd2l0aG91dCBhbnkgcmVmZXJlbmNlcyB0byB0
cmFuc2llbnQgaW5mb3JtYXRpb24gdGhhdCBtYXkKKyAgICAgY2hhbmdlIGZyb20gcnVuIHRvIHJ1
bi4KKyAgIiIiCisgIGRlZiBfbm9ybWFsaXplKGtleSwgdmFsdWUpOgorICAgIGlmIGtleSA9PSAn
dGltZSc6CisgICAgICByZXR1cm4gcmUuc3ViKHInXlxkKyhcLlxkKyk/cyQnLCAnKicsIHZhbHVl
KQorICAgIGVsaWYga2V5ID09ICd0aW1lc3RhbXAnOgorICAgICAgcmV0dXJuIHJlLnN1YihyJ15c
ZHs0fS1cZFxkLVxkXGRUXGRcZDpcZFxkOlxkXGRaJCcsICcqJywgdmFsdWUpCisgICAgZWxpZiBr
ZXkgPT0gJ2ZhaWx1cmUnOgorICAgICAgdmFsdWUgPSByZS5zdWIocideLipbL1xcXSguKjopXGQr
XG4nLCAnXFwxKlxuJywgdmFsdWUpCisgICAgICByZXR1cm4gcmUuc3ViKHInU3RhY2sgdHJhY2U6
XG4oLnxcbikqJywgJ1N0YWNrIHRyYWNlOlxuKicsIHZhbHVlKQorICAgIGVsc2U6CisgICAgICBy
ZXR1cm4gbm9ybWFsaXplKHZhbHVlKQorICBpZiBpc2luc3RhbmNlKG9iaiwgZGljdCk6CisgICAg
cmV0dXJuIHtrOiBfbm9ybWFsaXplKGssIHYpIGZvciBrLCB2IGluIG9iai5pdGVtcygpfQorICBp
ZiBpc2luc3RhbmNlKG9iaiwgbGlzdCk6CisgICAgcmV0dXJuIFtub3JtYWxpemUoeCkgZm9yIHgg
aW4gb2JqXQorICBlbHNlOgorICAgIHJldHVybiBvYmoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3QucHkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0LnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjNiYmE3ZWEyY2ZkMzdjYWQ1NTA5ZjQwZjhlOGIwMDIyNzA2YmU3ODQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3Rfb3V0cHV0
X3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMTQxIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMK
KyMgQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24u
CisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIC0tZ3Rlc3Rf
bGlzdF90ZXN0cyBmbGFnLgorCitBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBsaXN0IGFs
bCB0ZXN0cyBieSBzcGVjaWZ5aW5nIHRoZQorLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuIElmIG91
dHB1dCBpcyByZXF1ZXN0ZWQsIHZpYSAtLWd0ZXN0X291dHB1dD14bWwKK29yIC0tZ3Rlc3Rfb3V0
cHV0PWpzb24sIHRoZSB0ZXN0cyBhcmUgbGlzdGVkLCB3aXRoIGV4dHJhIGluZm9ybWF0aW9uIGlu
IHRoZQorb3V0cHV0IGZpbGUuCitUaGlzIHNjcmlwdCB0ZXN0cyBzdWNoIGZ1bmN0aW9uYWxpdHkg
YnkgaW52b2tpbmcgZ3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3RfCisgKGEgcHJvZ3JhbSB3cml0
dGVuIHdpdGggR29vZ2xlIFRlc3QpIHRoZSBjb21tYW5kIGxpbmUgZmxhZ3MuCisiIiIKKworaW1w
b3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKK0dURVNUX0xJU1Rf
VEVTVFNfRkxBRyA9ICctLWd0ZXN0X2xpc3RfdGVzdHMnCitHVEVTVF9PVVRQVVRfRkxBRyA9ICct
LWd0ZXN0X291dHB1dCcKKworRVhQRUNURURfWE1MID0gIiIiPFw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9IlVURi04Ilw/PgorPHRlc3RzdWl0ZXMgdGVzdHM9IjIiIG5hbWU9IkFsbFRlc3Rz
Ij4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJGb29UZXN0IiB0ZXN0cz0iMiI+CisgICAgPHRlc3RjYXNl
IG5hbWU9IlRlc3QxIiBmaWxlPSIuKmd0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0Xy5jYyIgbGlu
ZT0iNDMiIC8+CisgICAgPHRlc3RjYXNlIG5hbWU9IlRlc3QyIiBmaWxlPSIuKmd0ZXN0X2xpc3Rf
b3V0cHV0X3VuaXR0ZXN0Xy5jYyIgbGluZT0iNDUiIC8+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0
c3VpdGVzPgorIiIiCisKK0VYUEVDVEVEX0pTT04gPSAiIiJ7CisgICJ0ZXN0cyI6IDIsCisgICJu
YW1lIjogIkFsbFRlc3RzIiwKKyAgInRlc3RzdWl0ZXMiOiBcWworICAgIHsKKyAgICAgICJuYW1l
IjogIkZvb1Rlc3QiLAorICAgICAgInRlc3RzIjogMiwKKyAgICAgICJ0ZXN0c3VpdGUiOiBcWwor
ICAgICAgICB7CisgICAgICAgICAgIm5hbWUiOiAiVGVzdDEiLAorICAgICAgICAgICJmaWxlIjog
Ii4qZ3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3RfLmNjIiwKKyAgICAgICAgICAibGluZSI6IDQz
CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAibmFtZSI6ICJUZXN0MiIsCisgICAg
ICAgICAgImZpbGUiOiAiLipndGVzdF9saXN0X291dHB1dF91bml0dGVzdF8uY2MiLAorICAgICAg
ICAgICJsaW5lIjogNDUKKyAgICAgICAgfQorICAgICAgXF0KKyAgICB9CisgIFxdCit9CisiIiIK
KworCitjbGFzcyBHVGVzdExpc3RUZXN0c091dHB1dFVuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMu
VGVzdENhc2UpOgorICAiIiJVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgbGlzdCB0ZXN0cyB3
aXRoIG91dHB1dCB0byBmaWxlIGZ1bmN0aW9uYWxpdHkuCisgICIiIgorCisgIGRlZiB0ZXN0WG1s
KHNlbGYpOgorICAgICIiIlZlcmlmaWVzIFhNTCBvdXRwdXQgZm9yIGxpc3RpbmcgdGVzdHMgaW4g
YSBHb29nbGUgVGVzdCBiaW5hcnkuCisKKyAgICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRoYXQgZ2Vu
ZXJhdGVzIGFuIGVtcHR5IFhNTCBvdXRwdXQsIGFuZAorICAgIHRlc3RzIHRoYXQgdGhlIFhNTCBv
dXRwdXQgaXMgZXhwZWN0ZWQuCisgICAgIiIiCisgICAgc2VsZi5fVGVzdE91dHB1dCgneG1sJywg
RVhQRUNURURfWE1MKQorCisgIGRlZiB0ZXN0SlNPTihzZWxmKToKKyAgICAiIiJWZXJpZmllcyBY
TUwgb3V0cHV0IGZvciBsaXN0aW5nIHRlc3RzIGluIGEgR29vZ2xlIFRlc3QgYmluYXJ5LgorCisg
ICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBhbiBlbXB0eSBYTUwgb3V0cHV0
LCBhbmQKKyAgICB0ZXN0cyB0aGF0IHRoZSBYTUwgb3V0cHV0IGlzIGV4cGVjdGVkLgorICAgICIi
IgorICAgIHNlbGYuX1Rlc3RPdXRwdXQoJ2pzb24nLCBFWFBFQ1RFRF9KU09OKQorCisgIGRlZiBf
R2V0T3V0cHV0KHNlbGYsIG91dF9mb3JtYXQpOgorICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9p
bihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3Rlc3Rfb3V0LicgKyBvdXRfZm9ybWF0KQorICAgIGd0ZXN0X3Byb2dfcGF0aCA9IGd0
ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKAorICAgICAgICAnZ3Rlc3RfbGlz
dF9vdXRwdXRfdW5pdHRlc3RfJykKKworICAgIGNvbW1hbmQgPSAoWworICAgICAgICBndGVzdF9w
cm9nX3BhdGgsCisgICAgICAgICclcz0lczolcycgJSAoR1RFU1RfT1VUUFVUX0ZMQUcsIG91dF9m
b3JtYXQsIGZpbGVfcGF0aCksCisgICAgICAgICctLWd0ZXN0X2xpc3RfdGVzdHMnCisgICAgXSkK
KyAgICBlbnZpcm9uX2NvcHkgPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgIHAgPSBndGVzdF90ZXN0
X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgICAgIGNvbW1hbmQsIGVudj1lbnZpcm9uX2NvcHksIHdv
cmtpbmdfZGlyPWd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpKQorCisgICAgc2VsZi5hc3Nl
cnRfKHAuZXhpdGVkKQorICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIHAuZXhpdF9jb2RlKQorICAg
IHdpdGggb3BlbihmaWxlX3BhdGgpIGFzIGY6CisgICAgICByZXN1bHQgPSBmLnJlYWQoKQorICAg
IHJldHVybiByZXN1bHQKKworICBkZWYgX1Rlc3RPdXRwdXQoc2VsZiwgdGVzdF9mb3JtYXQsIGV4
cGVjdGVkX291dHB1dCk6CisgICAgYWN0dWFsID0gc2VsZi5fR2V0T3V0cHV0KHRlc3RfZm9ybWF0
KQorICAgIGFjdHVhbF9saW5lcyA9IGFjdHVhbC5zcGxpdGxpbmVzKCkKKyAgICBleHBlY3RlZF9s
aW5lcyA9IGV4cGVjdGVkX291dHB1dC5zcGxpdGxpbmVzKCkKKyAgICBsaW5lX2NvdW50ID0gMAor
ICAgIGZvciBhY3R1YWxfbGluZSBpbiBhY3R1YWxfbGluZXM6CisgICAgICBleHBlY3RlZF9saW5l
ID0gZXhwZWN0ZWRfbGluZXNbbGluZV9jb3VudF0KKyAgICAgIGV4cGVjdGVkX2xpbmVfcmUgPSBy
ZS5jb21waWxlKGV4cGVjdGVkX2xpbmUuc3RyaXAoKSkKKyAgICAgIHNlbGYuYXNzZXJ0XygKKyAg
ICAgICAgICBleHBlY3RlZF9saW5lX3JlLm1hdGNoKGFjdHVhbF9saW5lLnN0cmlwKCkpLAorICAg
ICAgICAgICgnYWN0dWFsIG91dHB1dCBvZiAiJXMiLFxuJworICAgICAgICAgICAnd2hpY2ggZG9l
cyBub3QgbWF0Y2ggZXhwZWN0ZWQgcmVnZXggb2YgIiVzIlxuJworICAgICAgICAgICAnb24gbGlu
ZSAlZCcgJSAoYWN0dWFsLCBleHBlY3RlZF9vdXRwdXQsIGxpbmVfY291bnQpKSkKKyAgICAgIGxp
bmVfY291bnQgPSBsaW5lX2NvdW50ICsgMQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
CisgIG9zLmVudmlyb25bJ0dURVNUX1NUQUNLX1RSQUNFX0RFUFRIJ10gPSAnMScKKyAgZ3Rlc3Rf
dGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF9saXN0X291dHB1dF91bml0dGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFjN2I0
ZGUzNDYxZmMxNjQ1ZjQxMWI3MWY5ZTM3ZjgyMjRmZDhhNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3RfLmNj
CkBAIC0wLDAgKzEsNTEgQEAKKy8vIENvcHlyaWdodCAyMDE4LCBHb29nbGUgSW5jLgorLy8gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8v
IG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisv
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKy8vCisvLyBBdXRob3I6IGRhdmlkLnNjaHVsZGVuZnJlaUBnbWFpbC5jb20gKERhdmlk
IFNjaHVsZGVuZnJlaSkKKworLy8gVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIC0tZ3Rlc3Rf
bGlzdF90ZXN0cyBhbmQgLS1ndGVzdF9vdXRwdXQgZmxhZy4KKy8vCisvLyBBIHVzZXIgY2FuIGFz
ayBHb29nbGUgVGVzdCB0byBsaXN0IGFsbCB0ZXN0cyB0aGF0IHdpbGwgcnVuLAorLy8gYW5kIGhh
dmUgdGhlIG91dHB1dCBzYXZlZCBpbiBhIEpzb24vWG1sIGZpbGUuCisvLyBUaGUgdGVzdHMgd2ls
bCBub3QgYmUgcnVuIGFmdGVyIGxpc3RpbmcuCisvLworLy8gVGhpcyBwcm9ncmFtIHdpbGwgYmUg
aW52b2tlZCBmcm9tIGEgUHl0aG9uIHVuaXQgdGVzdC4KKy8vIERvbid0IHJ1biBpdCBkaXJlY3Rs
eS4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK1RFU1QoRm9vVGVzdCwgVGVzdDEpIHt9
CisKK1RFU1QoRm9vVGVzdCwgVGVzdDIpIHt9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoq
YXJndikgeworICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICBy
ZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCBjZThjM2VmMDVmNjYwMGU4NzIxNGE2ZDQwMTYyOGVkOTIzYTE1MmRh
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdC5weQorKysgL2Rl
di9udWxsCkBAIC0xLDE3NyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29w
eXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotCi0iIiJVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgLS1ndGVzdF9saXN0
X3Rlc3RzIGZsYWcuCi0KLUEgdXNlciBjYW4gYXNrIEdvb2dsZSBUZXN0IHRvIGxpc3QgYWxsIHRl
c3RzIGJ5IHNwZWNpZnlpbmcgdGhlCi0tLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4gIFRoaXMgc2Ny
aXB0IHRlc3RzIHN1Y2ggZnVuY3Rpb25hbGl0eQotYnkgaW52b2tpbmcgZ3Rlc3RfbGlzdF90ZXN0
c191bml0dGVzdF8gKGEgcHJvZ3JhbSB3cml0dGVuIHdpdGgKLUdvb2dsZSBUZXN0KSB0aGUgY29t
bWFuZCBsaW5lIGZsYWdzLgotIiIiCi0KLV9fYXV0aG9yX18gPSAncGhhbm5hQGdvb2dsZS5jb20g
KFBhdHJpY2sgSGFubmEpJwotCi1pbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwotCi0KLSMgQ29uc3Rh
bnRzLgotCi0jIFRoZSBjb21tYW5kIGxpbmUgZmxhZyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIGxp
c3RpbmcgYWxsIHRlc3RzLgotTElTVF9URVNUU19GTEFHID0gJ2d0ZXN0X2xpc3RfdGVzdHMnCi0K
LSMgUGF0aCB0byB0aGUgZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8gcHJvZ3JhbS4KLUVYRV9Q
QVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2d0ZXN0X2xpc3Rf
dGVzdHNfdW5pdHRlc3RfJykKLQotIyBUaGUgZXhwZWN0ZWQgb3V0cHV0IHdoZW4gcnVubmluZyBn
dGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0XyB3aXRoCi0jIC0tZ3Rlc3RfbGlzdF90ZXN0cwotRVhQ
RUNURURfT1VUUFVUX05PX0ZJTFRFUiA9ICIiIkZvb0RlYXRoVGVzdC4KLSAgVGVzdDEKLUZvby4K
LSAgQmFyMQotICBCYXIyCi0gIERJU0FCTEVEX0JhcjMKLUFiYy4KLSAgWHl6Ci0gIERlZgotRm9v
QmFyLgotICBCYXoKLUZvb1Rlc3QuCi0gIFRlc3QxCi0gIERJU0FCTEVEX1Rlc3QyCi0gIFRlc3Qz
Ci0iIiIKLQotIyBUaGUgZXhwZWN0ZWQgb3V0cHV0IHdoZW4gcnVubmluZyBndGVzdF9saXN0X3Rl
c3RzX3VuaXR0ZXN0XyB3aXRoCi0jIC0tZ3Rlc3RfbGlzdF90ZXN0cyBhbmQgLS1ndGVzdF9maWx0
ZXI9Rm9vKi4KLUVYUEVDVEVEX09VVFBVVF9GSUxURVJfRk9PID0gIiIiRm9vRGVhdGhUZXN0Lgot
ICBUZXN0MQotRm9vLgotICBCYXIxCi0gIEJhcjIKLSAgRElTQUJMRURfQmFyMwotRm9vQmFyLgot
ICBCYXoKLUZvb1Rlc3QuCi0gIFRlc3QxCi0gIERJU0FCTEVEX1Rlc3QyCi0gIFRlc3QzCi0iIiIK
LQotIyBVdGlsaXRpZXMuCi0KLQotZGVmIFJ1bihhcmdzKToKLSAgIiIiUnVucyBndGVzdF9saXN0
X3Rlc3RzX3VuaXR0ZXN0XyBhbmQgcmV0dXJucyB0aGUgbGlzdCBvZiB0ZXN0cyBwcmludGVkLiIi
IgotCi0gIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0VYRV9QQVRIXSArIGFy
Z3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZV9zdGRlcnI9
RmFsc2UpLm91dHB1dAotCi0KLSMgVGhlIHVuaXQgdGVzdC4KLQotY2xhc3MgR1Rlc3RMaXN0VGVz
dHNVbml0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAgIiIiVGVzdHMgdXNpbmcg
dGhlIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnIHRvIGxpc3QgYWxsIHRlc3RzLiIiIgotCi0gIGRl
ZiBSdW5BbmRWZXJpZnkoc2VsZiwgZmxhZ192YWx1ZSwgZXhwZWN0ZWRfb3V0cHV0LCBvdGhlcl9m
bGFnKToKLSAgICAiIiJSdW5zIGd0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfIGFuZCB2ZXJpZmll
cyB0aGF0IGl0IHByaW50cwotICAgIHRoZSBjb3JyZWN0IHRlc3RzLgotCi0gICAgQXJnczoKLSAg
ICAgIGZsYWdfdmFsdWU6ICAgICAgIHZhbHVlIG9mIHRoZSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxh
ZzsKLSAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5vdCBi
ZSBwcmVzZW50LgotCi0gICAgICBleHBlY3RlZF9vdXRwdXQ6ICB0aGUgZXhwZWN0ZWQgb3V0cHV0
IGFmdGVyIHJ1bm5pbmcgY29tbWFuZDsKLQotICAgICAgb3RoZXJfZmxhZzogICAgICAgYSBkaWZm
ZXJlbnQgZmxhZyB0byBiZSBwYXNzZWQgdG8gY29tbWFuZAotICAgICAgICAgICAgICAgICAgICAg
ICAgYWxvbmcgd2l0aCBndGVzdF9saXN0X3Rlc3RzOwotICAgICAgICAgICAgICAgICAgICAgICAg
Tm9uZSBpZiB0aGUgZmxhZyBzaG91bGQgbm90IGJlIHByZXNlbnQuCi0gICAgIiIiCi0KLSAgICBp
ZiBmbGFnX3ZhbHVlIGlzIE5vbmU6Ci0gICAgICBmbGFnID0gJycKLSAgICAgIGZsYWdfZXhwcmVz
c2lvbiA9ICdub3Qgc2V0JwotICAgIGVsaWYgZmxhZ192YWx1ZSA9PSAnMCc6Ci0gICAgICBmbGFn
ID0gJy0tJXM9MCcgJSBMSVNUX1RFU1RTX0ZMQUcKLSAgICAgIGZsYWdfZXhwcmVzc2lvbiA9ICcw
JwotICAgIGVsc2U6Ci0gICAgICBmbGFnID0gJy0tJXMnICUgTElTVF9URVNUU19GTEFHCi0gICAg
ICBmbGFnX2V4cHJlc3Npb24gPSAnMScKLQotICAgIGFyZ3MgPSBbZmxhZ10KLQotICAgIGlmIG90
aGVyX2ZsYWcgaXMgbm90IE5vbmU6Ci0gICAgICBhcmdzICs9IFtvdGhlcl9mbGFnXQotCi0gICAg
b3V0cHV0ID0gUnVuKGFyZ3MpCi0KLSAgICBtc2cgPSAoJ3doZW4gJXMgaXMgJXMsIHRoZSBvdXRw
dXQgb2YgIiVzIiBpcyAiJXMiLicgJQotICAgICAgICAgICAoTElTVF9URVNUU19GTEFHLCBmbGFn
X2V4cHJlc3Npb24sICcgJy5qb2luKGFyZ3MpLCBvdXRwdXQpKQotCi0gICAgaWYgZXhwZWN0ZWRf
b3V0cHV0IGlzIG5vdCBOb25lOgotICAgICAgc2VsZi5hc3NlcnRfKG91dHB1dCA9PSBleHBlY3Rl
ZF9vdXRwdXQsIG1zZykKLSAgICBlbHNlOgotICAgICAgc2VsZi5hc3NlcnRfKG91dHB1dCAhPSBF
WFBFQ1RFRF9PVVRQVVRfTk9fRklMVEVSLCBtc2cpCi0KLSAgZGVmIHRlc3REZWZhdWx0QmVoYXZp
b3Ioc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0IG1vZGUu
IiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPU5vbmUsCi0gICAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAg
b3RoZXJfZmxhZz1Ob25lKQotCi0gIGRlZiB0ZXN0RmxhZyhzZWxmKToKLSAgICAiIiJUZXN0cyB1
c2luZyB0aGUgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeShmbGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRw
dXQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPU5vbmUpCi0gICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRfb3V0cHV0PUVYUEVDVEVEX09VVFBVVF9OT19GSUxURVIsCi0gICAgICAgICAgICAgICAg
ICAgICAgb3RoZXJfZmxhZz1Ob25lKQotCi0gIGRlZiB0ZXN0T3ZlcnJpZGVOb25GaWx0ZXJGbGFn
cyhzZWxmKToKLSAgICAiIiJUZXN0cyB0aGF0IC0tZ3Rlc3RfbGlzdF90ZXN0cyBvdmVycmlkZXMg
dGhlIG5vbi1maWx0ZXIgZmxhZ3MuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3Zh
bHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXQ9RVhQRUNURURf
T1VUUFVUX05PX0ZJTFRFUiwKLSAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPSctLWd0
ZXN0X2JyZWFrX29uX2ZhaWx1cmUnKQotCi0gIGRlZiB0ZXN0V2l0aEZpbHRlckZsYWdzKHNlbGYp
OgotICAgICIiIlRlc3RzIHRoYXQgLS1ndGVzdF9saXN0X3Rlc3RzIHRha2VzIGludG8gYWNjb3Vu
dCB0aGUKLSAgICAtLWd0ZXN0X2ZpbHRlciBmbGFnLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJp
ZnkoZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0
PUVYUEVDVEVEX09VVFBVVF9GSUxURVJfRk9PLAotICAgICAgICAgICAgICAgICAgICAgIG90aGVy
X2ZsYWc9Jy0tZ3Rlc3RfZmlsdGVyPUZvbyonKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5f
Xyc6Ci0gIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBlZDA4MjViNWQ4ODk2OTIzMDFjNWE0ZDRmMGViNzVi
YWJjNWJjOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfLmNj
CisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2ds
ZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogcGhhbm5hQGdvb2dsZS5jb20gKFBh
dHJpY2sgSGFubmEpCi0KLS8vIFVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0ZXN0X2xp
c3RfdGVzdHMgZmxhZy4KLS8vCi0vLyBBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBsaXN0
IGFsbCB0ZXN0cyB0aGF0IHdpbGwgcnVuCi0vLyBzbyB0aGF0IHdoZW4gdXNpbmcgYSBmaWx0ZXIs
IGEgdXNlciB3aWxsIGtub3cgd2hhdAotLy8gdGVzdHMgdG8gbG9vayBmb3IuIFRoZSB0ZXN0cyB3
aWxsIG5vdCBiZSBydW4gYWZ0ZXIgbGlzdGluZy4KLS8vCi0vLyBUaGlzIHByb2dyYW0gd2lsbCBi
ZSBpbnZva2VkIGZyb20gYSBQeXRob24gdW5pdCB0ZXN0LgotLy8gRG9uJ3QgcnVuIGl0IGRpcmVj
dGx5LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotbmFtZXNwYWNlIHsKLQotLy8gU2V2
ZXJhbCBkaWZmZXJlbnQgdGVzdCBjYXNlcyBhbmQgdGVzdHMgdGhhdCB3aWxsIGJlIGxpc3RlZC4K
LVRFU1QoRm9vLCBCYXIxKSB7Ci19Ci0KLVRFU1QoRm9vLCBCYXIyKSB7Ci19Ci0KLVRFU1QoRm9v
LCBESVNBQkxFRF9CYXIzKSB7Ci19Ci0KLVRFU1QoQWJjLCBYeXopIHsKLX0KLQotVEVTVChBYmMs
IERlZikgewotfQotCi1URVNUKEZvb0JhciwgQmF6KSB7Ci19Ci0KLWNsYXNzIEZvb1Rlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1URVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKLX0K
LQotVEVTVF9GKEZvb1Rlc3QsIERJU0FCTEVEX1Rlc3QyKSB7Ci19Ci0KLVRFU1RfRihGb29UZXN0
LCBUZXN0MykgewotfQotCi1URVNUKEZvb0RlYXRoVGVzdCwgVGVzdDEpIHsKLX0KLQotfSAgLy8g
bmFtZXNwYWNlCi0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotICA6OnRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICByZXR1cm4gUlVOX0FMTF9URVNU
UygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9t
YWluX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9tYWlu
X3VuaXR0ZXN0LmNjCmluZGV4IDdhM2YwYWRmYWRmNmQ3ZTVjMTk1YjMxOTQ0NzE0ZDVhYzQxYmI4
ZTMuLmVkZGVkZWFiZThmM2JiMDgzZGFiY2E2MDBlNzJmNDUxYjhkOTRjZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbWFpbl91bml0dGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X21haW5fdW5pdHRlc3QuY2MKQEAg
LTI2LDEwICsyNiw5IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCi0j
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIC8v
IFRlc3RzIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBkZWZpbmUgbWFpbigpIHdoZW4gd2UgbGluayB0
bwogLy8gZ3Rlc3RfbWFpbiBpbnN0ZWFkIG9mIGd0ZXN0LgpAQCAtNDEsNSArNDAsNSBAQCBURVNU
KEdUZXN0TWFpblRlc3QsIFNob3VsZFN1Y2NlZWQpIHsKIAogfSAgLy8gbmFtZXNwYWNlCiAKLS8v
IFdlIGFyZSB1c2luZyB0aGUgbWFpbigpIGZ1bmN0aW9uIGRlZmluZWQgaW4gc3JjL2d0ZXN0X21h
aW4uY2MsIHNvCi0vLyB3ZSBkb24ndCBkZWZpbmUgaXQgaGVyZS4KKy8vIFdlIGFyZSB1c2luZyB0
aGUgbWFpbigpIGZ1bmN0aW9uIGRlZmluZWQgaW4gZ3Rlc3RfbWFpbi5jYywgc28gd2UKKy8vIGRv
bid0IGRlZmluZSBpdCBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF9uYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbmMu
Y2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczYjVkYjZkNDE4MzA5YTQ3YTIzZGZm
MTgwMDUzYjc1ZDMyMDEyNGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9uYy5jYworKysgL2Rl
di9udWxsCkBAIC0xLDIzNCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4K
LS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KQotCi0vLyBUaGlzIGZpbGUgaXMgdGhlIGlucHV0IHRvIGEgbmVnYXRpdmUtY29tcGlsYXRpb24g
dGVzdCBmb3IgR29vZ2xlCi0vLyBUZXN0LiAgQ29kZSBoZXJlIGlzIE5PVCBzdXBwb3NlZCB0byBj
b21waWxlLiAgSXRzIHB1cnBvc2UgaXMgdG8KLS8vIHZlcmlmeSB0aGF0IGNlcnRhaW4gaW5jb3Jy
ZWN0IHVzYWdlcyBvZiB0aGUgR29vZ2xlIFRlc3QgQVBJIGFyZQotLy8gaW5kZWVkIHJlamVjdGVk
IGJ5IHRoZSBjb21waWxlci4KLS8vCi0vLyBXZSBzdGlsbCBuZWVkIHRvIHdyaXRlIHRoZSBuZWdh
dGl2ZS1jb21waWxhdGlvbiB0ZXN0IGl0c2VsZiwgd2hpY2gKLS8vIHdpbGwgYmUgdGlnaHRseSBj
b3VwbGVkIHdpdGggdGhlIGJ1aWxkIGVudmlyb25tZW50LgotLy8KLS8vIFRPRE8od2FuQGdvb2ds
ZS5jb20pOiBmaW5pc2ggdGhlIG5lZ2F0aXZlLWNvbXBpbGF0aW9uIHRlc3QuCi0KLSNpZmRlZiBU
RVNUX0NBTk5PVF9JR05PUkVfUlVOX0FMTF9URVNUU19SRVNVTFQKLS8vIFRlc3RzIHRoYXQgdGhl
IHJlc3VsdCBvZiBSVU5fQUxMX1RFU1RTKCkgY2Fubm90IGJlIGlnbm9yZWQuCi0KLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAg
dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotICBSVU5fQUxMX1RFU1RTKCk7
ICAvLyBUaGlzIGxpbmUgc2hvdWxkbid0IGNvbXBpbGUuCi19Ci0KLSNlbGlmIGRlZmluZWQoVEVT
VF9VU0VSX0NBTk5PVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0lOTF9IKQotLy8gVGVzdHMgdGhh
dCBhIHVzZXIgY2Fubm90IGluY2x1ZGUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4gaGlzIGNvZGUu
Ci0KLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0KLSNlbGlmIGRlZmluZWQo
VEVTVF9DQVRDSEVTX0RFQ0xBUklOR19TRVRVUF9JTl9URVNUX0ZJWFRVUkVfV0lUSF9UWVBPKQot
Ly8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0Y2hlcyB0aGUgdHlwbyB3aGVuIGEgdXNlciBk
ZWNsYXJlcyBhCi0vLyBTZXR1cCgpIG1ldGhvZCBpbiBhIHRlc3QgZml4dHVyZS4KLQotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLWNsYXNzIE15VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZvaWQgU2V0dXAoKSB7fQotfTsKLQotI2VsaWYgZGVmaW5lZChU
RVNUX0NBVENIRVNfQ0FMTElOR19TRVRVUF9JTl9URVNUX1dJVEhfVFlQTykKLS8vIFRlc3RzIHRo
YXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgdGhlIHR5cG8gd2hlbiBhIHVzZXIgY2FsbHMgU2V0dXAo
KQotLy8gZnJvbSBhIHRlc3QgZml4dHVyZS4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0K
LWNsYXNzIE15VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZp
cnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICB0ZXN0aW5nOjpUZXN0OjpTZXR1cCgpOyAgLy8gVHJp
ZXMgdG8gY2FsbCBTZXRVcCgpIGluIHRoZSBwYXJlbnQgY2xhc3MuCi0gIH0KLX07Ci0KLSNlbGlm
IGRlZmluZWQoVEVTVF9DQVRDSEVTX0RFQ0xBUklOR19TRVRVUF9JTl9FTlZJUk9OTUVOVF9XSVRI
X1RZUE8pCi0vLyBUZXN0cyB0aGF0IHRoZSBjb21waWxlciBjYXRjaGVzIHRoZSB0eXBvIHdoZW4g
YSB1c2VyIGRlY2xhcmVzIGEKLS8vIFNldHVwKCkgbWV0aG9kIGluIGEgc3ViY2xhc3Mgb2YgRW52
aXJvbm1lbnQuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1jbGFzcyBNeUVudmlyb25t
ZW50IDogcHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50IHsKLSBwdWJsaWM6Ci0gIHZvaWQgU2V0
dXAoKSB7fQotfTsKLQotI2VsaWYgZGVmaW5lZChURVNUX0NBVENIRVNfQ0FMTElOR19TRVRVUF9J
Tl9FTlZJUk9OTUVOVF9XSVRIX1RZUE8pCi0vLyBUZXN0cyB0aGF0IHRoZSBjb21waWxlciBjYXRj
aGVzIHRoZSB0eXBvIHdoZW4gYSB1c2VyIGNhbGxzIFNldHVwKCkKLS8vIGluIGFuIEVudmlyb25t
ZW50LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotY2xhc3MgTXlFbnZpcm9ubWVudCA6
IHB1YmxpYyB0ZXN0aW5nOjpFbnZpcm9ubWVudCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKSB7Ci0gICAgLy8gVHJpZXMgdG8gY2FsbCBTZXRVcCgpIGluIHRoZSBwYXJlbnQg
Y2xhc3MuCi0gICAgdGVzdGluZzo6RW52aXJvbm1lbnQ6OlNldHVwKCk7Ci0gIH0KLX07Ci0KLSNl
bGlmIGRlZmluZWQoVEVTVF9DQVRDSEVTX1dST05HX0NBU0VfSU5fVFlQRURfVEVTVF9QKQotLy8g
VGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0Y2hlcyB1c2luZyB0aGUgd3JvbmcgdGVzdCBjYXNl
IG5hbWUgaW4KLS8vIFRZUEVEX1RFU1RfUC4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgQmFyVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QpOwotVFlQ
RURfVEVTVF9QKEJhclRlc3QsIEEpIHt9ICAvLyBXcm9uZyB0ZXN0IGNhc2UgbmFtZS4KLVJFR0lT
VEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsIEEpOwotSU5TVEFOVElBVEVfVFlQRURfVEVT
VF9DQVNFX1AoTXksIEZvb1Rlc3QsIHRlc3Rpbmc6OlR5cGVzPGludD4pOwotCi0jZWxpZiBkZWZp
bmVkKFRFU1RfQ0FUQ0hFU19XUk9OR19DQVNFX0lOX1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9Q
KQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0Y2hlcyB1c2luZyB0aGUgd3JvbmcgdGVz
dCBjYXNlIG5hbWUgaW4KLS8vIFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QLgotCi0jaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBGb29UZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1j
bGFzcyBCYXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVFlQRURfVEVTVF9D
QVNFX1AoRm9vVGVzdCk7Ci1UWVBFRF9URVNUX1AoRm9vVGVzdCwgQSkge30KLVJFR0lTVEVSX1RZ
UEVEX1RFU1RfQ0FTRV9QKEJhclRlc3QsIEEpOyAgLy8gV3JvbmcgdGVzdCBjYXNlIG5hbWUuCi1J
TlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgdGVzdGluZzo6VHlwZXM8
aW50Pik7Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRDSEVTX1dST05HX0NBU0VfSU5fSU5TVEFO
VElBVEVfVFlQRURfVEVTVF9DQVNFX1ApCi0vLyBUZXN0cyB0aGF0IHRoZSBjb21waWxlciBjYXRj
aGVzIHVzaW5nIHRoZSB3cm9uZyB0ZXN0IGNhc2UgbmFtZSBpbgotLy8gSU5TVEFOVElBVEVfVFlQ
RURfVEVTVF9DQVNFX1AuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19Owot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEJhclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0KTsKLVRZUEVEX1RFU1RfUChG
b29UZXN0LCBBKSB7fQotUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCwgQSk7Ci0K
LS8vIFdyb25nIHRlc3QgY2FzZSBuYW1lLgotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1Ao
TXksIEJhclRlc3QsIHRlc3Rpbmc6OlR5cGVzPGludD4pOwotCi0jZWxpZiBkZWZpbmVkKFRFU1Rf
Q0FUQ0hFU19JTlNUQU5USUFURV9UWVBFRF9URVNFVF9DQVNFX1BfV0lUSF9TQU1FX05BTUVfUFJF
RklYKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0Y2hlcyBpbnN0YW50aWF0aW5nIFRZ
UEVEX1RFU1RfQ0FTRV9QCi0vLyB0d2ljZSB3aXRoIHRoZSBzYW1lIG5hbWUgcHJlZml4LgotCi0j
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBG
b29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVFlQRURfVEVTVF9DQVNFX1Ao
Rm9vVGVzdCk7Ci1UWVBFRF9URVNUX1AoRm9vVGVzdCwgQSkge30KLVJFR0lTVEVSX1RZUEVEX1RF
U1RfQ0FTRV9QKEZvb1Rlc3QsIEEpOwotCi1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChN
eSwgRm9vVGVzdCwgdGVzdGluZzo6VHlwZXM8aW50Pik7Ci0KLS8vIFdyb25nIG5hbWUgcHJlZml4
OiAiTXkiIGhhcyBiZWVuIHVzZWQuCi1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwg
Rm9vVGVzdCwgdGVzdGluZzo6VHlwZXM8ZG91YmxlPik7Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9T
VEFUSUNfQVNTRVJUX1RZUEVfRVFfSVNfTk9UX0FfVFlQRSkKLQotI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0Lmg+Ci0KLS8vIFRlc3RzIHRoYXQgU3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4gY2Fubm90
IGJlIHVzZWQgYXMgYSB0eXBlLgotdGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGludCwgaW50
PiBkdW1teTsKLQotI2VsaWYgZGVmaW5lZChURVNUX1NUQVRJQ19BU1NFUlRfVFlQRV9FUV9XT1JL
U19JTl9OQU1FU1BBQ0UpCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0vLyBUZXN0cyB0
aGF0IFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+IHdvcmtzIGluIGEgbmFtZXNwYWNlIHNjb3Bl
Lgotc3RhdGljIGJvb2wgZHVtbXkgPSB0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8aW50LCBj
b25zdCBpbnQ+KCk7Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9TVEFUSUNfQVNTRVJUX1RZUEVfRVFf
V09SS1NfSU5fQ0xBU1MpCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLWNsYXNzIEhlbHBlciB7Ci0gcHVibGljOgotICAvLyBUZXN0cyB0aGF0IFN0
YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+IHdvcmtzIGluIGEgY2xhc3MuCi0gIEhlbHBlcigpIHsg
dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGludCwgVD4oKTsgfQotCi0gIHZvaWQgRG9Tb21l
dGhpbmcoKSB7fQotfTsKLQotdm9pZCBUZXN0KCkgewotICBIZWxwZXI8Ym9vbD4gaDsKLSAgaC5E
b1NvbWV0aGluZygpOyAgLy8gVG8gYXZvaWQgdGhlICJ1bnVzZWQgdmFyaWFibGUiIHdhcm5pbmcu
Ci19Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9TVEFUSUNfQVNTRVJUX1RZUEVfRVFfV09SS1NfSU5f
RlVOQ1RJT04pCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi12b2lkIFRlc3QoKSB7Ci0g
IC8vIFRlc3RzIHRoYXQgU3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4gd29ya3MgaW5zaWRlIGEg
ZnVuY3Rpb24uCi0gIHRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCBpbnQsIGludD4o
KTsKLX0KLQotI2Vsc2UKLS8vIEEgc2FuaXR5IHRlc3QuICBUaGlzIHNob3VsZCBjb21waWxlLgot
Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotaW50IG1haW4oKSB7Ci0gIHJldHVybiBSVU5f
QUxMX1RFU1RTKCk7Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9uY190ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF9uY190ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwNmZmYjNm
ODAzOGYwYTU3OTZlNGI2ZDYyOWQwMmU4MDU2NWEyNDM4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfbmNfdGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0jIS91c3IvYmlu
L2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMK
LSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
IyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJOZWdhdGl2ZSBjb21waWxhdGlv
biB0ZXN0IGZvciBHb29nbGUgVGVzdC4iIiIKLQotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNv
bSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRl
c3QKLQotCi1JU19MSU5VWCA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBhbmQgb3MudW5hbWUoKVswXSA9
PSAnTGludXgnCi1pZiBub3QgSVNfTElOVVg6Ci0gIHN5cy5leGl0KDApICAjIE5lZ2F0aXZlIGNv
bXBpbGF0aW9uIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MgJiBNYWMuCi0KLQot
Y2xhc3MgR1Rlc3ROQ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAiIiJOZWdhdGl2ZSBjb21w
aWxhdGlvbiB0ZXN0IGZvciBHb29nbGUgVGVzdC4iIiIKLQotICBkZWYgdGVzdENvbXBpbGVyRXJy
b3Ioc2VsZik6Ci0gICAgIiIiVmVyaWZpZXMgdGhhdCBlcnJvbmVvdXMgY29kZSBsZWFkcyB0byBl
eHBlY3RlZCBjb21waWxlcgotICAgIG1lc3NhZ2VzLiIiIgotCi0gICAgIyBEZWZpbmVzIGEgbGlz
dCBvZiB0ZXN0IHNwZWNzLCB3aGVyZSBlYWNoIGVsZW1lbnQgaXMgYSB0dXBsZQotICAgICMgKHRl
c3QgbmFtZSwgbGlzdCBvZiByZWdleGVzIGZvciBtYXRjaGluZyB0aGUgY29tcGlsZXIgZXJyb3Jz
KS4KLSAgICB0ZXN0X3NwZWNzID0gWwotICAgICAgKCdDQU5OT1RfSUdOT1JFX1JVTl9BTExfVEVT
VFNfUkVTVUxUJywKLSAgICAgICBbcidpZ25vcmluZyByZXR1cm4gdmFsdWUnXSksCi0KLSAgICAg
ICgnVVNFUl9DQU5OT1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9JTkxfSCcsCi0gICAgICAgW3In
bXVzdCBub3QgYmUgaW5jbHVkZWQgZXhjZXB0IGJ5IEdvb2dsZSBUZXN0IGl0c2VsZiddKSwKLQot
ICAgICAgKCdDQVRDSEVTX0RFQ0xBUklOR19TRVRVUF9JTl9URVNUX0ZJWFRVUkVfV0lUSF9UWVBP
JywKLSAgICAgICBbcidTZXR1cF9zaG91bGRfYmVfc3BlbGxlZF9TZXRVcCddKSwKLQotICAgICAg
KCdDQVRDSEVTX0NBTExJTkdfU0VUVVBfSU5fVEVTVF9XSVRIX1RZUE8nLAotICAgICAgIFtyJ1Nl
dHVwX3Nob3VsZF9iZV9zcGVsbGVkX1NldFVwJ10pLAotCi0gICAgICAoJ0NBVENIRVNfREVDTEFS
SU5HX1NFVFVQX0lOX0VOVklST05NRU5UX1dJVEhfVFlQTycsCi0gICAgICAgW3InU2V0dXBfc2hv
dWxkX2JlX3NwZWxsZWRfU2V0VXAnXSksCi0KLSAgICAgICgnQ0FUQ0hFU19DQUxMSU5HX1NFVFVQ
X0lOX0VOVklST05NRU5UX1dJVEhfVFlQTycsCi0gICAgICAgW3InU2V0dXBfc2hvdWxkX2JlX3Nw
ZWxsZWRfU2V0VXAnXSksCi0KLSAgICAgICgnQ0FUQ0hFU19XUk9OR19DQVNFX0lOX1RZUEVEX1RF
U1RfUCcsCi0gICAgICAgW3InQmFyVGVzdC4qd2FzIG5vdCBkZWNsYXJlZCddKSwKLQotICAgICAg
KCdDQVRDSEVTX1dST05HX0NBU0VfSU5fUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AnLAotICAg
ICAgIFtyJ0JhclRlc3QuKndhcyBub3QgZGVjbGFyZWQnXSksCi0KLSAgICAgICgnQ0FUQ0hFU19X
Uk9OR19DQVNFX0lOX0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QJywKLSAgICAgICBbcidC
YXJUZXN0Lipub3QgZGVjbGFyZWQnXSksCi0KLSAgICAgICgnQ0FUQ0hFU19JTlNUQU5USUFURV9U
WVBFRF9URVNFVF9DQVNFX1BfV0lUSF9TQU1FX05BTUVfUFJFRklYJywKLSAgICAgICBbcidyZWRl
ZmluaXRpb24gb2YuKk15LipGb29UZXN0J10pLAotCi0gICAgICAoJ1NUQVRJQ19BU1NFUlRfVFlQ
RV9FUV9JU19OT1RfQV9UWVBFJywKLSAgICAgICBbcidTdGF0aWNBc3NlcnRUeXBlRXEuKiBkb2Vz
IG5vdCBuYW1lIGEgdHlwZSddKSwKLQotICAgICAgKCdTVEFUSUNfQVNTRVJUX1RZUEVfRVFfV09S
S1NfSU5fTkFNRVNQQUNFJywKLSAgICAgICBbcidTdGF0aWNBc3NlcnRUeXBlRXEuKmludC4qY29u
c3QgaW50J10pLAotCi0gICAgICAoJ1NUQVRJQ19BU1NFUlRfVFlQRV9FUV9XT1JLU19JTl9DTEFT
UycsCi0gICAgICAgW3InU3RhdGljQXNzZXJ0VHlwZUVxLippbnQuKmJvb2wnXSksCi0KLSAgICAg
ICgnU1RBVElDX0FTU0VSVF9UWVBFX0VRX1dPUktTX0lOX0ZVTkNUSU9OJywKLSAgICAgICBbcidT
dGF0aWNBc3NlcnRUeXBlRXEuKmNvbnN0IGludC4qaW50J10pLAotCi0gICAgICAoJ1NBTklUWScs
Ci0gICAgICAgTm9uZSkKLSAgICAgIF0KLQotICAgICMgVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHZl
cmlmeSB0aGF0IHRoZSB0ZXN0IHNwZWNzIGFyZSBzYXRpc2ZpZWQuCi0KLQotaWYgX19uYW1lX18g
PT0gJ19fbWFpbl9fJzoKLSAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QuY2MKaW5kZXggYWZlMmRj
MGM5MmZlNDNhZTkzNWIyMmNlZjMxNzdlNTE4NGI3ZmZhMS4uZDRmODhkYmZkZmE2OGU2YTBjNDBi
Yjk5ZmFjNmU0ZGJjY2ZmOGYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF9ub190ZXN0X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdC5jYwpAQCAtMjksMjYgKzI5LDI2IEBACiAK
IC8vIFRlc3RzIHRoYXQgYSBHb29nbGUgVGVzdCBwcm9ncmFtIHRoYXQgaGFzIG5vIHRlc3QgZGVm
aW5lZCBjYW4gcnVuCiAvLyBzdWNjZXNzZnVsbHkuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KIAorI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewog
ICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CiAKICAgLy8gQW4gYWQtaG9j
IGFzc2VydGlvbiBvdXRzaWRlIG9mIGFsbCB0ZXN0cy4KICAgLy8KLSAgLy8gVGhpcyBzZXJ2ZXMg
dHdvIHB1cnBvc2VzOgorICAvLyBUaGlzIHNlcnZlcyB0aHJlZSBwdXJwb3NlczoKICAgLy8KICAg
Ly8gMS4gSXQgdmVyaWZpZXMgdGhhdCBhbiBhZC1ob2MgYXNzZXJ0aW9uIGNhbiBiZSBleGVjdXRl
ZCBldmVuIGlmCiAgIC8vICAgIG5vIHRlc3QgaXMgZGVmaW5lZC4KLSAgLy8gMi4gV2UgaGFkIGEg
YnVnIHdoZXJlIHRoZSBYTUwgb3V0cHV0IHdvbid0IGJlIGdlbmVyYXRlZCBpZiBhbgorICAvLyAy
LiBJdCB2ZXJpZmllcyB0aGF0IGEgZmFpbGVkIGFkLWhvYyBhc3NlcnRpb24gY2F1c2VzIHRoZSB0
ZXN0CisgIC8vICAgIHByb2dyYW0gdG8gZmFpbC4KKyAgLy8gMy4gV2UgaGFkIGEgYnVnIHdoZXJl
IHRoZSBYTUwgb3V0cHV0IHdvbid0IGJlIGdlbmVyYXRlZCBpZiBhbgogICAvLyAgICBhc3NlcnRp
b24gaXMgZXhlY3V0ZWQgYmVmb3JlIFJVTl9BTExfVEVTVFMoKSBpcyBjYWxsZWQsIGV2ZW4KICAg
Ly8gICAgdGhvdWdoIC0tZ3Rlc3Rfb3V0cHV0PXhtbCBpcyBzcGVjaWZpZWQuICBUaGlzIG1ha2Vz
IHN1cmUgdGhlCiAgIC8vICAgIGJ1ZyBpcyBmaXhlZCBhbmQgZG9lc24ndCByZWdyZXNzLgotICBF
WFBFQ1RfRVEoMSwgMSk7CisgIEVYUEVDVF9FUSgxLCAyKTsKIAotICByZXR1cm4gUlVOX0FMTF9U
RVNUUygpOworICAvLyBUaGUgYWJvdmUgRVhQRUNUX0VRKCkgc2hvdWxkIGNhdXNlIFJVTl9BTExf
VEVTVFMoKSB0byByZXR1cm4gbm9uLXplcm8uCisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCkgPyAw
IDogMTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
b3V0cHV0X3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1
dF90ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxOTIwMzBhMjAyMGJmZDQx
ZTk0YzRlNDkxNGNhYmEzOGRiNzRmMmZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0
X3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMjcgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlz
dHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVGVzdHMgdGhlIHRleHQgb3V0cHV0IG9m
IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsuCi0KLVNZTk9QU0lTCi0gICAgICAgZ3Rlc3Rf
b3V0cHV0X3Rlc3QucHkgLS1ndGVzdF9idWlsZF9kaXI9QlVJTEQvRElSIC0tZ2VuZ29sZGVuCi0g
ICAgICAgICAjIHdoZXJlIEJVSUxEL0RJUiBjb250YWlucyB0aGUgYnVpbHQgZ3Rlc3Rfb3V0cHV0
X3Rlc3RfIGZpbGUuCi0gICAgICAgZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkgLS1nZW5nb2xkZW4KLSAg
ICAgICBndGVzdF9vdXRwdXRfdGVzdC5weQotIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc3lz
Ci1pbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwotCi0KLSMgVGhlIGZsYWcgZm9yIGdlbmVyYXRpbmcg
dGhlIGdvbGRlbiBmaWxlCi1HRU5HT0xERU5fRkxBRyA9ICctLWdlbmdvbGRlbicKLUNBVENIX0VY
Q0VQVElPTlNfRU5WX1ZBUl9OQU1FID0gJ0dURVNUX0NBVENIX0VYQ0VQVElPTlMnCi0KLUlTX1dJ
TkRPV1MgPSBvcy5uYW1lID09ICdudCcKLQotaWYgSVNfV0lORE9XUzoKLSAgR09MREVOX05BTUUg
PSAnZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX3dpbi50eHQnCi1lbHNlOgotICBHT0xERU5fTkFN
RSA9ICdndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fbGluLnR4dCcKLQotUFJPR1JBTV9QQVRIID0g
Z3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2d0ZXN0X291dHB1dF90ZXN0
XycpCi0KLSMgQXQgbGVhc3Qgb25lIGNvbW1hbmQgd2UgZXhlcmNpc2UgbXVzdCBub3QgaGF2ZSB0
aGUKLSMgLS1ndGVzdF9pbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMg
ZmxhZy4KLUNPTU1BTkRfTElTVF9URVNUUyA9ICh7fSwgW1BST0dSQU1fUEFUSCwgJy0tZ3Rlc3Rf
bGlzdF90ZXN0cyddKQotQ09NTUFORF9XSVRIX0NPTE9SID0gKHt9LCBbUFJPR1JBTV9QQVRILCAn
LS1ndGVzdF9jb2xvcj15ZXMnXSkKLUNPTU1BTkRfV0lUSF9USU1FID0gKHt9LCBbUFJPR1JBTV9Q
QVRILAotICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ndGVzdF9wcmludF90aW1lJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgJy0tZ3Rlc3RfaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVu
dF9hbmRfYWRfaG9jX3Rlc3RzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZ3Rlc3Rf
ZmlsdGVyPUZhdGFsRmFpbHVyZVRlc3QuKjpMb2dnaW5nVGVzdC4qJ10pCi1DT01NQU5EX1dJVEhf
RElTQUJMRUQgPSAoCi0gICAge30sIFtQUk9HUkFNX1BBVEgsCi0gICAgICAgICAnLS1ndGVzdF9h
bHNvX3J1bl9kaXNhYmxlZF90ZXN0cycsCi0gICAgICAgICAnLS1ndGVzdF9pbnRlcm5hbF9za2lw
X2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMnLAotICAgICAgICAgJy0tZ3Rlc3RfZmlsdGVy
PSpESVNBQkxFRF8qJ10pCi1DT01NQU5EX1dJVEhfU0hBUkRJTkcgPSAoCi0gICAgeydHVEVTVF9T
SEFSRF9JTkRFWCc6ICcxJywgJ0dURVNUX1RPVEFMX1NIQVJEUyc6ICcyJ30sCi0gICAgW1BST0dS
QU1fUEFUSCwKLSAgICAgJy0tZ3Rlc3RfaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRf
aG9jX3Rlc3RzJywKLSAgICAgJy0tZ3Rlc3RfZmlsdGVyPVBhc3NpbmdUZXN0LionXSkKLQotR09M
REVOX1BBVEggPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRTb3VyY2VEaXIoKSwg
R09MREVOX05BTUUpCi0KLQotZGVmIFRvVW5peExpbmVFbmRpbmcocyk6Ci0gICIiIkNoYW5nZXMg
YWxsIFdpbmRvd3MvTWFjIGxpbmUgZW5kaW5ncyBpbiBzIHRvIFVOSVggbGluZSBlbmRpbmdzLiIi
IgotCi0gIHJldHVybiBzLnJlcGxhY2UoJ1xyXG4nLCAnXG4nKS5yZXBsYWNlKCdccicsICdcbicp
Ci0KLQotZGVmIFJlbW92ZUxvY2F0aW9ucyh0ZXN0X291dHB1dCk6Ci0gICIiIlJlbW92ZXMgYWxs
IGZpbGUgbG9jYXRpb24gaW5mbyBmcm9tIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4K
LQotICBBcmdzOgotICAgICAgIHRlc3Rfb3V0cHV0OiAgdGhlIG91dHB1dCBvZiBhIEdvb2dsZSBU
ZXN0IHByb2dyYW0uCi0KLSAgUmV0dXJuczoKLSAgICAgICBvdXRwdXQgd2l0aCBhbGwgZmlsZSBs
b2NhdGlvbiBpbmZvIChpbiB0aGUgZm9ybSBvZgotICAgICAgICdESVJFQ1RPUlkvRklMRV9OQU1F
OkxJTkVfTlVNQkVSOiAnb3IKLSAgICAgICAnRElSRUNUT1JZXFxGSUxFX05BTUUoTElORV9OVU1C
RVIpOiAnKSByZXBsYWNlZCBieQotICAgICAgICdGSUxFX05BTUU6IzogJy4KLSAgIiIiCi0KLSAg
cmV0dXJuIHJlLnN1YihyJy4qWy9cXF0oLispKFw6XGQrfFwoXGQrXCkpXDogJywgcidcMTojOiAn
LCB0ZXN0X291dHB1dCkKLQotCi1kZWYgUmVtb3ZlU3RhY2tUcmFjZURldGFpbHMob3V0cHV0KToK
LSAgIiIiUmVtb3ZlcyBhbGwgc3RhY2sgdHJhY2VzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFt
J3Mgb3V0cHV0LiIiIgotCi0gICMgKj8gbWVhbnMgImZpbmQgdGhlIHNob3J0ZXN0IHN0cmluZyB0
aGF0IG1hdGNoZXMiLgotICByZXR1cm4gcmUuc3ViKHInU3RhY2sgdHJhY2U6KC58XG4pKj9cblxu
JywKLSAgICAgICAgICAgICAgICAnU3RhY2sgdHJhY2U6IChvbWl0dGVkKVxuXG4nLCBvdXRwdXQp
Ci0KLQotZGVmIFJlbW92ZVN0YWNrVHJhY2VzKG91dHB1dCk6Ci0gICIiIlJlbW92ZXMgYWxsIHRy
YWNlcyBvZiBzdGFjayB0cmFjZXMgZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQu
IiIiCi0KLSAgIyAqPyBtZWFucyAiZmluZCB0aGUgc2hvcnRlc3Qgc3RyaW5nIHRoYXQgbWF0Y2hl
cyIuCi0gIHJldHVybiByZS5zdWIocidTdGFjayB0cmFjZTooLnxcbikqP1xuXG4nLCAnJywgb3V0
cHV0KQotCi0KLWRlZiBSZW1vdmVUaW1lKG91dHB1dCk6Ci0gICIiIlJlbW92ZXMgYWxsIHRpbWUg
aW5mb3JtYXRpb24gZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCi0KLSAg
cmV0dXJuIHJlLnN1YihyJ1woXGQrIG1zJywgJyg/IG1zJywgb3V0cHV0KQotCi0KLWRlZiBSZW1v
dmVUeXBlSW5mb0RldGFpbHModGVzdF9vdXRwdXQpOgotICAiIiJSZW1vdmVzIGNvbXBpbGVyLXNw
ZWNpZmljIHR5cGUgaW5mbyBmcm9tIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuCi0KLSAg
QXJnczoKLSAgICAgICB0ZXN0X291dHB1dDogIHRoZSBvdXRwdXQgb2YgYSBHb29nbGUgVGVzdCBw
cm9ncmFtLgotCi0gIFJldHVybnM6Ci0gICAgICAgb3V0cHV0IHdpdGggdHlwZSBpbmZvcm1hdGlv
biBub3JtYWxpemVkIHRvIGNhbm9uaWNhbCBmb3JtLgotICAiIiIKLQotICAjIHNvbWUgY29tcGls
ZXJzIG91dHB1dCB0aGUgbmFtZSBvZiB0eXBlICd1bnNpZ25lZCBpbnQnIGFzICd1bnNpZ25lZCcK
LSAgcmV0dXJuIHJlLnN1YihyJ3Vuc2lnbmVkIGludCcsICd1bnNpZ25lZCcsIHRlc3Rfb3V0cHV0
KQotCi0KLWRlZiBSZW1vdmVUZXN0Q291bnRzKG91dHB1dCk6Ci0gICIiIlJlbW92ZXMgdGVzdCBj
b3VudHMgZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCi0KLSAgb3V0cHV0
ID0gcmUuc3ViKHInXGQrIHRlc3RzPywgbGlzdGVkIGJlbG93JywKLSAgICAgICAgICAgICAgICAg
ICc/IHRlc3RzLCBsaXN0ZWQgYmVsb3cnLCBvdXRwdXQpCi0gIG91dHB1dCA9IHJlLnN1YihyJ1xk
KyBGQUlMRUQgVEVTVFMnLAotICAgICAgICAgICAgICAgICAgJz8gRkFJTEVEIFRFU1RTJywgb3V0
cHV0KQotICBvdXRwdXQgPSByZS5zdWIocidcZCsgdGVzdHM/IGZyb20gXGQrIHRlc3QgY2FzZXM/
JywKLSAgICAgICAgICAgICAgICAgICc/IHRlc3RzIGZyb20gPyB0ZXN0IGNhc2VzJywgb3V0cHV0
KQotICBvdXRwdXQgPSByZS5zdWIocidcZCsgdGVzdHM/IGZyb20gKFthLXpBLVpfXSknLAotICAg
ICAgICAgICAgICAgICAgcic/IHRlc3RzIGZyb20gXDEnLCBvdXRwdXQpCi0gIHJldHVybiByZS5z
dWIocidcZCsgdGVzdHM/XC4nLCAnPyB0ZXN0cy4nLCBvdXRwdXQpCi0KLQotZGVmIFJlbW92ZU1h
dGNoaW5nVGVzdHModGVzdF9vdXRwdXQsIHBhdHRlcm4pOgotICAiIiJSZW1vdmVzIG91dHB1dCBv
ZiBzcGVjaWZpZWQgdGVzdHMgZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuCi0K
LSAgVGhpcyBmdW5jdGlvbiBzdHJpcHMgbm90IG9ubHkgdGhlIGJlZ2lubmluZyBhbmQgdGhlIGVu
ZCBvZiBhIHRlc3QgYnV0IGFsc28KLSAgYWxsIG91dHB1dCBpbiBiZXR3ZWVuLgotCi0gIEFyZ3M6
Ci0gICAgdGVzdF9vdXRwdXQ6ICAgICAgIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHRlc3Qgb3V0
cHV0LgotICAgIHBhdHRlcm46ICAgICAgICAgICBBIHJlZ2V4IHN0cmluZyB0aGF0IG1hdGNoZXMg
bmFtZXMgb2YgdGVzdCBjYXNlcyBvcgotICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cyB0byBy
ZW1vdmUuCi0KLSAgUmV0dXJuczoKLSAgICBDb250ZW50cyBvZiB0ZXN0X291dHB1dCB3aXRoIHRl
c3RzIHdob3NlIG5hbWVzIG1hdGNoIHBhdHRlcm4gcmVtb3ZlZC4KLSAgIiIiCi0KLSAgdGVzdF9v
dXRwdXQgPSByZS5zdWIoCi0gICAgICByJy4qXFsgUlVOICAgICAgXF0gLiolcygufFxuKSo/XFso
ICBGQUlMRUQgIHwgICAgICAgT0sgKVxdIC4qJXMuKlxuJyAlICgKLSAgICAgICAgICBwYXR0ZXJu
LCBwYXR0ZXJuKSwKLSAgICAgICcnLAotICAgICAgdGVzdF9vdXRwdXQpCi0gIHJldHVybiByZS5z
dWIocicuKiVzLipcbicgJSBwYXR0ZXJuLCAnJywgdGVzdF9vdXRwdXQpCi0KLQotZGVmIE5vcm1h
bGl6ZU91dHB1dChvdXRwdXQpOgotICAiIiJOb3JtYWxpemVzIG91dHB1dCAodGhlIG91dHB1dCBv
ZiBndGVzdF9vdXRwdXRfdGVzdF8uZXhlKS4iIiIKLQotICBvdXRwdXQgPSBUb1VuaXhMaW5lRW5k
aW5nKG91dHB1dCkKLSAgb3V0cHV0ID0gUmVtb3ZlTG9jYXRpb25zKG91dHB1dCkKLSAgb3V0cHV0
ID0gUmVtb3ZlU3RhY2tUcmFjZURldGFpbHMob3V0cHV0KQotICBvdXRwdXQgPSBSZW1vdmVUaW1l
KG91dHB1dCkKLSAgcmV0dXJuIG91dHB1dAotCi0KLWRlZiBHZXRTaGVsbENvbW1hbmRPdXRwdXQo
ZW52X2NtZCk6Ci0gICIiIlJ1bnMgYSBjb21tYW5kIGluIGEgc3ViLXByb2Nlc3MsIGFuZCByZXR1
cm5zIGl0cyBvdXRwdXQgaW4gYSBzdHJpbmcuCi0KLSAgQXJnczoKLSAgICBlbnZfY21kOiBUaGUg
c2hlbGwgY29tbWFuZC4gQSAyLXR1cGxlIHdoZXJlIGVsZW1lbnQgMCBpcyBhIGRpY3Qgb2YgZXh0
cmEKLSAgICAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0LCBhbmQgZWxlbWVu
dCAxIGlzIGEgc3RyaW5nIHdpdGgKLSAgICAgICAgICAgICB0aGUgY29tbWFuZCBhbmQgYW55IGZs
YWdzLgotCi0gIFJldHVybnM6Ci0gICAgQSBzdHJpbmcgd2l0aCB0aGUgY29tbWFuZCdzIGNvbWJp
bmVkIHN0YW5kYXJkIGFuZCBkaWFnbm9zdGljIG91dHB1dC4KLSAgIiIiCi0KLSAgIyBTcGF3bnMg
Y21kIGluIGEgc3ViLXByb2Nlc3MsIGFuZCBnZXRzIGl0cyBzdGFuZGFyZCBJL08gZmlsZSBvYmpl
Y3RzLgotICAjIFNldCBhbmQgc2F2ZSB0aGUgZW52aXJvbm1lbnQgcHJvcGVybHkuCi0gIGVudmly
b24gPSBvcy5lbnZpcm9uLmNvcHkoKQotICBlbnZpcm9uLnVwZGF0ZShlbnZfY21kWzBdKQotICBw
ID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGVudl9jbWRbMV0sIGVudj1lbnZpcm9uKQot
Ci0gIHJldHVybiBwLm91dHB1dAotCi0KLWRlZiBHZXRDb21tYW5kT3V0cHV0KGVudl9jbWQpOgot
ICAiIiJSdW5zIGEgY29tbWFuZCBhbmQgcmV0dXJucyBpdHMgb3V0cHV0IHdpdGggYWxsIGZpbGUg
bG9jYXRpb24KLSAgaW5mbyBzdHJpcHBlZCBvZmYuCi0KLSAgQXJnczoKLSAgICBlbnZfY21kOiAg
VGhlIHNoZWxsIGNvbW1hbmQuIEEgMi10dXBsZSB3aGVyZSBlbGVtZW50IDAgaXMgYSBkaWN0IG9m
IGV4dHJhCi0gICAgICAgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQsIGFuZCBl
bGVtZW50IDEgaXMgYSBzdHJpbmcgd2l0aAotICAgICAgICAgICAgICB0aGUgY29tbWFuZCBhbmQg
YW55IGZsYWdzLgotICAiIiIKLQotICAjIERpc2FibGVzIGV4Y2VwdGlvbiBwb3AtdXBzIG9uIFdp
bmRvd3MuCi0gIGVudmlyb24sIGNtZGxpbmUgPSBlbnZfY21kCi0gIGVudmlyb24gPSBkaWN0KGVu
dmlyb24pICAjIEVuc3VyZXMgd2UgYXJlIG1vZGlmeWluZyBhIGNvcHkuCi0gIGVudmlyb25bQ0FU
Q0hfRVhDRVBUSU9OU19FTlZfVkFSX05BTUVdID0gJzEnCi0gIHJldHVybiBOb3JtYWxpemVPdXRw
dXQoR2V0U2hlbGxDb21tYW5kT3V0cHV0KChlbnZpcm9uLCBjbWRsaW5lKSkpCi0KLQotZGVmIEdl
dE91dHB1dE9mQWxsQ29tbWFuZHMoKToKLSAgIiIiUmV0dXJucyBjb25jYXRlbmF0ZWQgb3V0cHV0
IGZyb20gc2V2ZXJhbCByZXByZXNlbnRhdGl2ZSBjb21tYW5kcy4iIiIKLQotICByZXR1cm4gKEdl
dENvbW1hbmRPdXRwdXQoQ09NTUFORF9XSVRIX0NPTE9SKSArCi0gICAgICAgICAgR2V0Q29tbWFu
ZE91dHB1dChDT01NQU5EX1dJVEhfVElNRSkgKwotICAgICAgICAgIEdldENvbW1hbmRPdXRwdXQo
Q09NTUFORF9XSVRIX0RJU0FCTEVEKSArCi0gICAgICAgICAgR2V0Q29tbWFuZE91dHB1dChDT01N
QU5EX1dJVEhfU0hBUkRJTkcpKQotCi0KLXRlc3RfbGlzdCA9IEdldFNoZWxsQ29tbWFuZE91dHB1
dChDT01NQU5EX0xJU1RfVEVTVFMpCi1TVVBQT1JUU19ERUFUSF9URVNUUyA9ICdEZWF0aFRlc3Qn
IGluIHRlc3RfbGlzdAotU1VQUE9SVFNfVFlQRURfVEVTVFMgPSAnVHlwZWRUZXN0JyBpbiB0ZXN0
X2xpc3QKLVNVUFBPUlRTX1RIUkVBRFMgPSAnRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCcg
aW4gdGVzdF9saXN0Ci1TVVBQT1JUU19TVEFDS19UUkFDRVMgPSBGYWxzZQotCi1DQU5fR0VORVJB
VEVfR09MREVOX0ZJTEUgPSAoU1VQUE9SVFNfREVBVEhfVEVTVFMgYW5kCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU1VQUE9SVFNfVFlQRURfVEVTVFMgYW5kCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU1VQUE9SVFNfVEhSRUFEUykKLQotCi1jbGFzcyBHVGVzdE91dHB1dFRlc3Qo
Z3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gIGRlZiBSZW1vdmVVbnN1cHBvcnRlZFRlc3Rz
KHNlbGYsIHRlc3Rfb3V0cHV0KToKLSAgICBpZiBub3QgU1VQUE9SVFNfREVBVEhfVEVTVFM6Ci0g
ICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdEZWF0
aFRlc3QnKQotICAgIGlmIG5vdCBTVVBQT1JUU19UWVBFRF9URVNUUzoKLSAgICAgIHRlc3Rfb3V0
cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwgJ1R5cGVkVGVzdCcpCi0gICAg
ICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdUeXBlZERl
YXRoVGVzdCcpCi0gICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9v
dXRwdXQsICdUeXBlUGFyYW1EZWF0aFRlc3QnKQotICAgIGlmIG5vdCBTVVBQT1JUU19USFJFQURT
OgotICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFeHBlY3RGYWlsdXJlV2l0
aFRocmVhZHNUZXN0JykKLSAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0
ZXN0X291dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU2Nv
cGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0JykKLSAgICAgIHRlc3Rfb3V0cHV0ID0g
UmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnV29ya3NDb25jdXJyZW50bHknKQotICAgIGlmIG5vdCBTVVBQT1JU
U19TVEFDS19UUkFDRVM6Ci0gICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZVN0YWNrVHJhY2VzKHRl
c3Rfb3V0cHV0KQotCi0gICAgcmV0dXJuIHRlc3Rfb3V0cHV0Ci0KLSAgZGVmIHRlc3RPdXRwdXQo
c2VsZik6Ci0gICAgb3V0cHV0ID0gR2V0T3V0cHV0T2ZBbGxDb21tYW5kcygpCi0KLSAgICBnb2xk
ZW5fZmlsZSA9IG9wZW4oR09MREVOX1BBVEgsICdyYicpCi0gICAgIyBBIG1pcy1jb25maWd1cmVk
IHNvdXJjZSBjb250cm9sIHN5c3RlbSBjYW4gY2F1c2UgXHIgYXBwZWFyIGluIEVPTAotICAgICMg
c2VxdWVuY2VzIHdoZW4gd2UgcmVhZCB0aGUgZ29sZGVuIGZpbGUgaXJyZXNwZWN0aXZlIG9mIGFu
IG9wZXJhdGluZwotICAgICMgc3lzdGVtIHVzZWQuIFRoZXJlZm9yZSwgd2UgbmVlZCB0byBzdHJp
cCB0aG9zZSBccidzIGZyb20gbmV3bGluZXMKLSAgICAjIHVuY29uZGl0aW9uYWxseS4KLSAgICBn
b2xkZW4gPSBUb1VuaXhMaW5lRW5kaW5nKGdvbGRlbl9maWxlLnJlYWQoKSkKLSAgICBnb2xkZW5f
ZmlsZS5jbG9zZSgpCi0KLSAgICAjIFdlIHdhbnQgdGhlIHRlc3QgdG8gcGFzcyByZWdhcmRsZXNz
IG9mIGNlcnRhaW4gZmVhdHVyZXMgYmVpbmcKLSAgICAjIHN1cHBvcnRlZCBvciBub3QuCi0KLSAg
ICAjIFdlIHN0aWxsIGhhdmUgdG8gcmVtb3ZlIHR5cGUgbmFtZSBzcGVjaWZpY3MgaW4gYWxsIGNh
c2VzLgotICAgIG5vcm1hbGl6ZWRfYWN0dWFsID0gUmVtb3ZlVHlwZUluZm9EZXRhaWxzKG91dHB1
dCkKLSAgICBub3JtYWxpemVkX2dvbGRlbiA9IFJlbW92ZVR5cGVJbmZvRGV0YWlscyhnb2xkZW4p
Ci0KLSAgICBpZiBDQU5fR0VORVJBVEVfR09MREVOX0ZJTEU6Ci0gICAgICBzZWxmLmFzc2VydEVx
dWFsKG5vcm1hbGl6ZWRfZ29sZGVuLCBub3JtYWxpemVkX2FjdHVhbCkKLSAgICBlbHNlOgotICAg
ICAgbm9ybWFsaXplZF9hY3R1YWwgPSBSZW1vdmVUZXN0Q291bnRzKG5vcm1hbGl6ZWRfYWN0dWFs
KQotICAgICAgbm9ybWFsaXplZF9nb2xkZW4gPSBSZW1vdmVUZXN0Q291bnRzKHNlbGYuUmVtb3Zl
VW5zdXBwb3J0ZWRUZXN0cygKLSAgICAgICAgICBub3JtYWxpemVkX2dvbGRlbikpCi0KLSAgICAg
ICMgVGhpcyBjb2RlIGlzIHZlcnkgaGFuZHkgd2hlbiBkZWJ1Z2dpbmcgZ29sZGVuIGZpbGUgZGlm
ZmVyZW5jZXM6Ci0gICAgICBpZiBvcy5nZXRlbnYoJ0RFQlVHX0dURVNUX09VVFBVVF9URVNUJyk6
Ci0gICAgICAgIG9wZW4ob3MucGF0aC5qb2luKAotICAgICAgICAgICAgZ3Rlc3RfdGVzdF91dGls
cy5HZXRTb3VyY2VEaXIoKSwKLSAgICAgICAgICAgICdfZ3Rlc3Rfb3V0cHV0X3Rlc3Rfbm9ybWFs
aXplZF9hY3R1YWwudHh0JyksICd3YicpLndyaXRlKAotICAgICAgICAgICAgICAgIG5vcm1hbGl6
ZWRfYWN0dWFsKQotICAgICAgICBvcGVuKG9zLnBhdGguam9pbigKLSAgICAgICAgICAgIGd0ZXN0
X3Rlc3RfdXRpbHMuR2V0U291cmNlRGlyKCksCi0gICAgICAgICAgICAnX2d0ZXN0X291dHB1dF90
ZXN0X25vcm1hbGl6ZWRfZ29sZGVuLnR4dCcpLCAnd2InKS53cml0ZSgKLSAgICAgICAgICAgICAg
ICBub3JtYWxpemVkX2dvbGRlbikKLQotICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtYWxpemVk
X2dvbGRlbiwgbm9ybWFsaXplZF9hY3R1YWwpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9f
JzoKLSAgaWYgc3lzLmFyZ3ZbMTpdID09IFtHRU5HT0xERU5fRkxBR106Ci0gICAgaWYgQ0FOX0dF
TkVSQVRFX0dPTERFTl9GSUxFOgotICAgICAgb3V0cHV0ID0gR2V0T3V0cHV0T2ZBbGxDb21tYW5k
cygpCi0gICAgICBnb2xkZW5fZmlsZSA9IG9wZW4oR09MREVOX1BBVEgsICd3YicpCi0gICAgICBn
b2xkZW5fZmlsZS53cml0ZShvdXRwdXQpCi0gICAgICBnb2xkZW5fZmlsZS5jbG9zZSgpCi0gICAg
ZWxzZToKLSAgICAgIG1lc3NhZ2UgPSAoCi0gICAgICAgICAgIiIiVW5hYmxlIHRvIHdyaXRlIGEg
Z29sZGVuIGZpbGUgd2hlbiBjb21waWxlZCBpbiBhbiBlbnZpcm9ubWVudAotdGhhdCBkb2VzIG5v
dCBzdXBwb3J0IGFsbCB0aGUgcmVxdWlyZWQgZmVhdHVyZXMgKGRlYXRoIHRlc3RzIiIiKQotICAg
ICAgaWYgSVNfV0lORE9XUzoKLSAgICAgICAgbWVzc2FnZSArPSAoCi0gICAgICAgICAgICAiIiJc
bmFuZCB0eXBlZCB0ZXN0cykuIFBsZWFzZSBjaGVjayB0aGF0IHlvdSBhcmUgdXNpbmcgVkMrKyA4
LjAgU1AxCi1vciBoaWdoZXIgYXMgeW91ciBjb21waWxlci4iIiIpCi0gICAgICBlbHNlOgotICAg
ICAgICBtZXNzYWdlICs9ICIiIlxudHlwZWQgdGVzdHMsIGFuZCB0aHJlYWRzKS4gIFBsZWFzZSBn
ZW5lcmF0ZSB0aGUKLWdvbGRlbiBmaWxlIHVzaW5nIGEgYmluYXJ5IGJ1aWx0IHdpdGggdGhvc2Ug
ZmVhdHVyZXMgZW5hYmxlZC4iIiIKLQotICAgICAgc3lzLnN0ZGVyci53cml0ZShtZXNzYWdlKQot
ICAgICAgc3lzLmV4aXQoMSkKLSAgZWxzZToKLSAgICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVz
dF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0Xy5j
YwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjczZThlOTNlYjA1OWY1ZGI2OTM3Yzhj
N2Q3Nzc2NmY4NzgwNTI3MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0Xy5j
YworKysgL2Rldi9udWxsCkBAIC0xLDExMzUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdv
b2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0v
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEEgdW5pdCB0ZXN0IGZvciBHb29nbGUgVGVz
dCBpdHNlbGYuICBUaGlzIHZlcmlmaWVzIHRoYXQgdGhlIGJhc2ljCi0vLyBjb25zdHJ1Y3RzIG9m
IEdvb2dsZSBUZXN0IHdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlv
bmcgV2FuKQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+Ci0jaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QuaD4KLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBh
cnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVm
b3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBi
ZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIg
ZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBo
aXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMv
Z3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLSNp
bmNsdWRlIDxzdGRsaWIuaD4KLQotI2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKLXVzaW5nIHRlc3Rp
bmc6OlNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOwotdXNpbmcgdGVzdGluZzo6VGVz
dFBhcnRSZXN1bHRBcnJheTsKLQotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6Ok5vdGlmaWNhdGlv
bjsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpUaHJlYWRXaXRoUGFyYW07Ci0jZW5kaWYKLQot
bmFtZXNwYWNlIHBvc2l4ID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg7Ci11c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6U3RyaW5nOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9w
dHI7Ci0KLS8vIFRlc3RzIGNhdGNoaW5nIGZhdGFsIGZhaWx1cmVzLgotCi0vLyBBIHN1YnJvdXRp
bmUgdXNlZCBieSB0aGUgZm9sbG93aW5nIHRlc3QuCi12b2lkIFRlc3RFcTEoaW50IHgpIHsKLSAg
QVNTRVJUX0VRKDEsIHgpOwotfQotCi0vLyBUaGlzIGZ1bmN0aW9uIGNhbGxzIGEgdGVzdCBzdWJy
b3V0aW5lLCBjYXRjaGVzIHRoZSBmYXRhbCBmYWlsdXJlIGl0Ci0vLyBnZW5lcmF0ZXMsIGFuZCB0
aGVuIHJldHVybnMgZWFybHkuCi12b2lkIFRyeVRlc3RTdWJyb3V0aW5lKCkgewotICAvLyBDYWxs
cyBhIHN1YnJvdW50aW5lIHRoYXQgeWllbGRzIGEgZmF0YWwgZmFpbHVyZS4KLSAgVGVzdEVxMSgy
KTsKLQotICAvLyBDYXRjaGVzIHRoZSBmYXRhbCBmYWlsdXJlIGFuZCBhYm9ydHMgdGhlIHRlc3Qu
Ci0gIC8vCi0gIC8vIFRoZSB0ZXN0aW5nOjpUZXN0OjogcHJlZml4IGlzIG5lY2Vzc2FyeSB3aGVu
IGNhbGxpbmcKLSAgLy8gSGFzRmF0YWxGYWlsdXJlKCkgb3V0c2lkZSBvZiBhIFRFU1QsIFRFU1Rf
Riwgb3IgdGVzdCBmaXh0dXJlLgotICBpZiAodGVzdGluZzo6VGVzdDo6SGFzRmF0YWxGYWlsdXJl
KCkpIHJldHVybjsKLQotICAvLyBJZiB3ZSBnZXQgaGVyZSwgc29tZXRoaW5nIGlzIHdyb25nLgot
ICBGQUlMKCkgPDwgIlRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQuIjsKLX0KLQotVEVTVChQ
YXNzaW5nVGVzdCwgUGFzc2luZ1Rlc3QxKSB7Ci19Ci0KLVRFU1QoUGFzc2luZ1Rlc3QsIFBhc3Np
bmdUZXN0MikgewotfQotCi0vLyBUZXN0cyBjYXRjaGluZyBhIGZhdGFsIGZhaWx1cmUgaW4gYSBz
dWJyb3V0aW5lLgotVEVTVChGYXRhbEZhaWx1cmVUZXN0LCBGYXRhbEZhaWx1cmVJblN1YnJvdXRp
bmUpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEp
XG4iKTsKLQotICBUcnlUZXN0U3Vicm91dGluZSgpOwotfQotCi0vLyBUZXN0cyBjYXRjaGluZyBh
IGZhdGFsIGZhaWx1cmUgaW4gYSBuZXN0ZWQgc3Vicm91dGluZS4KLVRFU1QoRmF0YWxGYWlsdXJl
VGVzdCwgRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lKSB7Ci0gIHByaW50ZigiKGV4cGVj
dGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKVxuIik7Ci0KLSAgLy8gQ2FsbHMgYSBz
dWJyb3VudGluZSB0aGF0IHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUuCi0gIFRyeVRlc3RTdWJyb3V0
aW5lKCk7Ci0KLSAgLy8gQ2F0Y2hlcyB0aGUgZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSB0
ZXN0LgotICAvLwotICAvLyBXaGVuIGNhbGxpbmcgSGFzRmF0YWxGYWlsdXJlKCkgaW5zaWRlIGEg
VEVTVCwgVEVTVF9GLCBvciB0ZXN0Ci0gIC8vIGZpeHR1cmUsIHRoZSB0ZXN0aW5nOjpUZXN0Ojog
cHJlZml4IGlzIG5vdCBuZWVkZWQuCi0gIGlmIChIYXNGYXRhbEZhaWx1cmUoKSkgcmV0dXJuOwot
Ci0gIC8vIElmIHdlIGdldCBoZXJlLCBzb21ldGhpbmcgaXMgd3JvbmcuCi0gIEZBSUwoKSA8PCAi
VGhpcyBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC4iOwotfQotCi0vLyBUZXN0cyBIYXNGYXRhbEZh
aWx1cmUoKSBhZnRlciBhIGZhaWxlZCBFWFBFQ1QgY2hlY2suCi1URVNUKEZhdGFsRmFpbHVyZVRl
c3QsIE5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZSkgewotICBwcmludGYoIihleHBlY3Rpbmcg
YSBmYWlsdXJlIG9uIGZhbHNlKVxuIik7Ci0gIEVYUEVDVF9UUlVFKGZhbHNlKTsgIC8vIEdlbmVy
YXRlcyBhIG5vbmZhdGFsIGZhaWx1cmUKLSAgQVNTRVJUX0ZBTFNFKEhhc0ZhdGFsRmFpbHVyZSgp
KTsgIC8vIFRoaXMgc2hvdWxkIHN1Y2NlZWQuCi19Ci0KLS8vIFRlc3RzIGludGVybGVhdmluZyB1
c2VyIGxvZ2dpbmcgYW5kIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMuCi1URVNUKExvZ2dpbmdUZXN0
LCBJbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucykgewotICBzdGF0aWMgY29uc3QgaW50
IGFbNF0gPSB7Ci0gICAgMywgOSwgMiwgNgotICB9OwotCi0gIHByaW50ZigiKGV4cGVjdGluZyAy
IGZhaWx1cmVzIG9uICgzKSA+PSAoYVtpXSkpXG4iKTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihhKS9zaXplb2YoKmEpKTsgaSsrKSB7Ci0gICAgcHJpbnRm
KCJpID09ICVkXG4iLCBpKTsKLSAgICBFWFBFQ1RfR0UoMywgYVtpXSk7Ci0gIH0KLX0KLQotLy8g
VGVzdHMgdGhlIFNDT1BFRF9UUkFDRSBtYWNyby4KLQotLy8gQSBoZWxwZXIgZnVuY3Rpb24gZm9y
IHRlc3RpbmcgU0NPUEVEX1RSQUNFLgotdm9pZCBTdWJXaXRob3V0VHJhY2UoaW50IG4pIHsKLSAg
RVhQRUNUX0VRKDEsIG4pOwotICBBU1NFUlRfRVEoMiwgbik7Ci19Ci0KLS8vIEFub3RoZXIgaGVs
cGVyIGZ1bmN0aW9uIGZvciB0ZXN0aW5nIFNDT1BFRF9UUkFDRS4KLXZvaWQgU3ViV2l0aFRyYWNl
KGludCBuKSB7Ci0gIFNDT1BFRF9UUkFDRSh0ZXN0aW5nOjpNZXNzYWdlKCkgPDwgIm4gPSAiIDw8
IG4pOwotCi0gIFN1YldpdGhvdXRUcmFjZShuKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBTQ09QRURf
VFJBQ0UoKSBvYmV5cyBsZXhpY2FsIHNjb3Blcy4KLVRFU1QoU0NPUEVEX1RSQUNFVGVzdCwgT2Jl
eXNTY29wZXMpIHsKLSAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIpOwotCi0gIC8vIFRo
ZXJlIHNob3VsZCBiZSBubyB0cmFjZSBiZWZvcmUgU0NPUEVEX1RSQUNFKCkgaXMgaW52b2tlZC4K
LSAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxk
bid0IGhhdmUgYSB0cmFjZS4iOwotCi0gIHsKLSAgICBTQ09QRURfVFJBQ0UoIkV4cGVjdGVkIHRy
YWNlIik7Ci0gICAgLy8gQWZ0ZXIgU0NPUEVEX1RSQUNFKCksIGEgZmFpbHVyZSBpbiB0aGUgY3Vy
cmVudCBzY29wZSBzaG91bGQgY29udGFpbgotICAgIC8vIHRoZSB0cmFjZS4KLSAgICBBRERfRkFJ
TFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgaGF2ZSBhIHRy
YWNlLiI7Ci0gIH0KLQotICAvLyBPbmNlIHRoZSBjb250cm9sIGxlYXZlcyB0aGUgc2NvcGUgb2Yg
dGhlIFNDT1BFRF9UUkFDRSgpLCB0aGVyZQotICAvLyBzaG91bGQgYmUgbm8gdHJhY2UgYWdhaW4u
Ci0gIEFERF9GQUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3Vs
ZG4ndCBoYXZlIGEgdHJhY2UuIjsKLX0KLQotLy8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0Ugd29y
a3MgaW5zaWRlIGEgbG9vcC4KLVRFU1QoU0NPUEVEX1RSQUNFVGVzdCwgV29ya3NJbkxvb3ApIHsK
LSAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIpOwotCi0gIGZvciAoaW50IGkgPSAxOyBp
IDw9IDI7IGkrKykgewotICAgIFNDT1BFRF9UUkFDRSh0ZXN0aW5nOjpNZXNzYWdlKCkgPDwgImkg
PSAiIDw8IGkpOwotCi0gICAgU3ViV2l0aG91dFRyYWNlKGkpOwotICB9Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgU0NPUEVEX1RSQUNFIHdvcmtzIGluIGEgc3Vicm91dGluZS4KLVRFU1QoU0NPUEVEX1RS
QUNFVGVzdCwgV29ya3NJblN1YnJvdXRpbmUpIHsKLSAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFp
bClcbiIpOwotCi0gIFN1YldpdGhUcmFjZSgxKTsKLSAgU3ViV2l0aFRyYWNlKDIpOwotfQotCi0v
LyBUZXN0cyB0aGF0IFNDT1BFRF9UUkFDRSBjYW4gYmUgbmVzdGVkLgotVEVTVChTQ09QRURfVFJB
Q0VUZXN0LCBDYW5CZU5lc3RlZCkgewotICBwcmludGYoIihleHBlY3RlZCB0byBmYWlsKVxuIik7
Ci0KLSAgU0NPUEVEX1RSQUNFKCIiKTsgIC8vIEEgdHJhY2Ugd2l0aG91dCBhIG1lc3NhZ2UuCi0K
LSAgU3ViV2l0aFRyYWNlKDIpOwotfQotCi0vLyBUZXN0cyB0aGF0IG11bHRpcGxlIFNDT1BFRF9U
UkFDRXMgY2FuIGJlIHVzZWQgaW4gdGhlIHNhbWUgc2NvcGUuCi1URVNUKFNDT1BFRF9UUkFDRVRl
c3QsIENhbkJlUmVwZWF0ZWQpIHsKLSAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIpOwot
Ci0gIFNDT1BFRF9UUkFDRSgiQSIpOwotICBBRERfRkFJTFVSRSgpCi0gICAgICA8PCAiVGhpcyBm
YWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQS4iOwot
Ci0gIFNDT1BFRF9UUkFDRSgiQiIpOwotICBBRERfRkFJTFVSRSgpCi0gICAgICA8PCAiVGhpcyBm
YWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSBhbmQg
Qi4iOwotCi0gIHsKLSAgICBTQ09QRURfVFJBQ0UoIkMiKTsKLSAgICBBRERfRkFJTFVSRSgpIDw8
ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiAiCi0gICAgICAg
ICAgICAgICAgICA8PCAidHJhY2UgcG9pbnQgQSwgQiwgYW5kIEMuIjsKLSAgfQotCi0gIFNDT1BF
RF9UUkFDRSgiRCIpOwotICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0
ZWQsIGFuZCBzaG91bGQgY29udGFpbiAiCi0gICAgICAgICAgICAgICAgPDwgInRyYWNlIHBvaW50
IEEsIEIsIGFuZCBELiI7Ci19Ci0KLSNpZiBHVEVTVF9JU19USFJFQURTQUZFCi0vLyBUZXN0cyB0
aGF0IFNDT1BFRF9UUkFDRSgpcyBjYW4gYmUgdXNlZCBjb25jdXJyZW50bHkgZnJvbSBtdWx0aXBs
ZQotLy8gdGhyZWFkcy4gIE5hbWVseSwgYW4gYXNzZXJ0aW9uIHNob3VsZCBiZSBhZmZlY3RlZCBi
eQotLy8gU0NPUEVEX1RSQUNFKClzIGluIGl0cyBvd24gdGhyZWFkIG9ubHkuCi0KLS8vIEhlcmUn
cyB0aGUgc2VxdWVuY2Ugb2YgYWN0aW9ucyB0aGF0IGhhcHBlbiBpbiB0aGUgdGVzdDoKLS8vCi0v
LyAgIFRocmVhZCBBIChtYWluKSAgICAgICAgICAgICAgICB8IFRocmVhZCBCIChzcGF3bmVkKQot
Ly8gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09fD09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0vLyAgIHNwYXducyB0aHJlYWQgQiAgICAgICAgICAgICAgICB8Ci0vLyAg
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS8vICAgd2FpdHMgZm9yIG4xICAgICAgICAgICAgICAgICAgIHwgU0NPUEVEX1RS
QUNFKCJUcmFjZSBCIik7Ci0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdl
bmVyYXRlcyBmYWlsdXJlICMxCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IG5vdGlmaWVzIG4xCi0vLyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vICAgU0NPUEVEX1RSQUNFKCJUcmFjZSBBIik7
ICAgICAgIHwgd2FpdHMgZm9yIG4yCi0vLyAgIGdlbmVyYXRlcyBmYWlsdXJlICMyICAgICAgICAg
ICB8Ci0vLyAgIG5vdGlmaWVzIG4yICAgICAgICAgICAgICAgICAgICB8Ci0vLyAgIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LS8vICAgd2FpdHMgZm9yIG4zICAgICAgICAgICAgICAgICAgIHwgZ2VuZXJhdGVzIGZhaWx1cmUg
IzMKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhY2UgQiBkaWVzCi0v
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdlbmVyYXRlcyBmYWlsdXJlICM0
Ci0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG5vdGlmaWVzIG4zCi0vLyAg
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS8vICAgZ2VuZXJhdGVzIGZhaWx1cmUgIzUgICAgICAgICAgIHwgZmluaXNoZXMK
LS8vICAgdHJhY2UgQSBkaWVzICAgICAgICAgICAgICAgICAgIHwKLS8vICAgZ2VuZXJhdGVzIGZh
aWx1cmUgIzYgICAgICAgICAgIHwKLS8vICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gICB3YWl0cyBmb3IgdGhyZWFk
IEIgdG8gZmluaXNoICAgfAotCi1zdHJ1Y3QgQ2hlY2tQb2ludHMgewotICBOb3RpZmljYXRpb24g
bjE7Ci0gIE5vdGlmaWNhdGlvbiBuMjsKLSAgTm90aWZpY2F0aW9uIG4zOwotfTsKLQotc3RhdGlj
IHZvaWQgVGhyZWFkV2l0aFNjb3BlZFRyYWNlKENoZWNrUG9pbnRzKiBjaGVja19wb2ludHMpIHsK
LSAgewotICAgIFNDT1BFRF9UUkFDRSgiVHJhY2UgQiIpOwotICAgIEFERF9GQUlMVVJFKCkKLSAg
ICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzEgKGluIHRocmVhZCBCLCBvbmx5IHRyYWNlIEIg
YWxpdmUpLiI7Ci0gICAgY2hlY2tfcG9pbnRzLT5uMS5Ob3RpZnkoKTsKLSAgICBjaGVja19wb2lu
dHMtPm4yLldhaXRGb3JOb3RpZmljYXRpb24oKTsKLQotICAgIEFERF9GQUlMVVJFKCkKLSAgICAg
ICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMgKGluIHRocmVhZCBCLCB0cmFjZSBBICYgQiBib3Ro
IGFsaXZlKS4iOwotICB9ICAvLyBUcmFjZSBCIGRpZXMgaGVyZS4KLSAgQUREX0ZBSUxVUkUoKQot
ICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzQgKGluIHRocmVhZCBCLCBvbmx5IHRyYWNlIEEg
YWxpdmUpLiI7Ci0gIGNoZWNrX3BvaW50cy0+bjMuTm90aWZ5KCk7Ci19Ci0KLVRFU1QoU0NPUEVE
X1RSQUNFVGVzdCwgV29ya3NDb25jdXJyZW50bHkpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDYg
ZmFpbHVyZXMpXG4iKTsKLQotICBDaGVja1BvaW50cyBjaGVja19wb2ludHM7Ci0gIFRocmVhZFdp
dGhQYXJhbTxDaGVja1BvaW50cyo+IHRocmVhZCgmVGhyZWFkV2l0aFNjb3BlZFRyYWNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNoZWNrX3BvaW50cywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICBjaGVja19wb2ludHMu
bjEuV2FpdEZvck5vdGlmaWNhdGlvbigpOwotCi0gIHsKLSAgICBTQ09QRURfVFJBQ0UoIlRyYWNl
IEEiKTsKLSAgICBBRERfRkFJTFVSRSgpCi0gICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMy
IChpbiB0aHJlYWQgQSwgdHJhY2UgQSAmIEIgYm90aCBhbGl2ZSkuIjsKLSAgICBjaGVja19wb2lu
dHMubjIuTm90aWZ5KCk7Ci0gICAgY2hlY2tfcG9pbnRzLm4zLldhaXRGb3JOb3RpZmljYXRpb24o
KTsKLQotICAgIEFERF9GQUlMVVJFKCkKLSAgICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzUg
KGluIHRocmVhZCBBLCBvbmx5IHRyYWNlIEEgYWxpdmUpLiI7Ci0gIH0gIC8vIFRyYWNlIEEgZGll
cyBoZXJlLgotICBBRERfRkFJTFVSRSgpCi0gICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNiAo
aW4gdGhyZWFkIEEsIG5vIHRyYWNlIGFsaXZlKS4iOwotICB0aHJlYWQuSm9pbigpOwotfQotI2Vu
ZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCi0KLVRFU1QoRGlzYWJsZWRUZXN0c1dhcm5pbmdU
ZXN0LAotICAgICBESVNBQkxFRF9BbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2Fy
bmluZykgewotICAvLyBUaGlzIHRlc3QgYm9keSBpcyBpbnRlbnRpb25hbGx5IGVtcHR5LiAgSXRz
IHNvbGUgcHVycG9zZSBpcyBmb3IKLSAgLy8gdmVyaWZ5aW5nIHRoYXQgdGhlIC0tZ3Rlc3RfYWxz
b19ydW5fZGlzYWJsZWRfdGVzdHMgZmxhZwotICAvLyBzdXBwcmVzc2VzIHRoZSAiWU9VIEhBVkUg
MTIgRElTQUJMRUQgVEVTVFMiIHdhcm5pbmcgYXQgdGhlIGVuZCBvZgotICAvLyB0aGUgdGVzdCBv
dXRwdXQuCi19Ci0KLS8vIFRlc3RzIHVzaW5nIGFzc2VydGlvbnMgb3V0c2lkZSBvZiBURVNUIGFu
ZCBURVNUX0YuCi0vLwotLy8gVGhpcyBmdW5jdGlvbiBjcmVhdGVzIHR3byBmYWlsdXJlcyBpbnRl
bnRpb25hbGx5Lgotdm9pZCBBZEhvY1Rlc3QoKSB7Ci0gIHByaW50ZigiVGhlIG5vbi10ZXN0IHBh
cnQgb2YgdGhlIGNvZGUgaXMgZXhwZWN0ZWQgdG8gaGF2ZSAyIGZhaWx1cmVzLlxuXG4iKTsKLSAg
RVhQRUNUX1RSVUUoZmFsc2UpOwotICBFWFBFQ1RfRVEoMiwgMyk7Ci19Ci0KLS8vIFJ1bnMgYWxs
IFRFU1RzLCBhbGwgVEVTVF9GcywgYW5kIHRoZSBhZCBob2MgdGVzdC4KLWludCBSdW5BbGxUZXN0
cygpIHsKLSAgQWRIb2NUZXN0KCk7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19Ci0KLS8v
IFRlc3RzIG5vbi1mYXRhbCBmYWlsdXJlcyBpbiB0aGUgZml4dHVyZSBjb25zdHJ1Y3Rvci4KLWNs
YXNzIE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0
cnVjdG9yVGVzdCgpIHsKLSAgICBwcmludGYoIihleHBlY3RpbmcgNSBmYWlsdXJlcylcbiIpOwot
ICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0IGZp
eHR1cmUgYyd0b3IuIjsKLSAgfQotCi0gIH5Ob25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1
Y3RvclRlc3QoKSB7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNSwg
aW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4iOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVw
KCkgewotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFNldFVw
KCkuIjsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBBRERfRkFJTFVS
RSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM0LCBpbiBUZWFyRG93bi4iOwotICB9Ci19OwotCi1U
RVNUX0YoTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LCBGYWlsdXJlSW5D
b25zdHJ1Y3RvcikgewotICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzLCBp
biB0aGUgdGVzdCBib2R5LiI7Ci19Ci0KLS8vIFRlc3RzIGZhdGFsIGZhaWx1cmVzIGluIHRoZSBm
aXh0dXJlIGNvbnN0cnVjdG9yLgotY2xhc3MgRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0
b3JUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgRmF0YWxGYWls
dXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0KCkgewotICAgIHByaW50ZigiKGV4cGVjdGluZyAy
IGZhaWx1cmVzKVxuIik7Ci0gICAgSW5pdCgpOwotICB9Ci0KLSAgfkZhdGFsRmFpbHVyZUluRml4
dHVyZUNvbnN0cnVjdG9yVGVzdCgpIHsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBm
YWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLiI7Ci0gIH0KLQotICB2aXJ0dWFs
IHZvaWQgU2V0VXAoKSB7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJl
IGluIFNldFVwKCkuICAiCi0gICAgICAgICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdl
dCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yICIKLSAgICAgICAgICAgICAgICAgIDw8
ICJoYWQgYSBmYXRhbCBmYWlsdXJlLiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24o
KSB7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIFRlYXJEb3du
KCkuICAiCi0gICAgICAgICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBh
cyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yICIKLSAgICAgICAgICAgICAgICAgIDw8ICJoYWQgYSBm
YXRhbCBmYWlsdXJlLiI7Ci0gIH0KLSBwcml2YXRlOgotICB2b2lkIEluaXQoKSB7Ci0gICAgRkFJ
TCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGMndG9yLiI7
Ci0gIH0KLX07Ci0KLVRFU1RfRihGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3Qs
IEZhaWx1cmVJbkNvbnN0cnVjdG9yKSB7Ci0gIEFERF9GQUlMVVJFKCkgPDwgIlVORVhQRUNURUQg
ZmFpbHVyZSBpbiB0aGUgdGVzdCBib2R5LiAgIgotICAgICAgICAgICAgICAgIDw8ICJXZSBzaG91
bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgIgotICAgICAgICAg
ICAgICAgIDw8ICJoYWQgYSBmYXRhbCBmYWlsdXJlLiI7Ci19Ci0KLS8vIFRlc3RzIG5vbi1mYXRh
bCBmYWlsdXJlcyBpbiBTZXRVcCgpLgotY2xhc3MgTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIH5Ob25GYXRh
bEZhaWx1cmVJblNldFVwVGVzdCgpIHsKLSAgICBEZWluaXQoKTsKLSAgfQotCi0gIHZpcnR1YWwg
dm9pZCBTZXRVcCgpIHsKLSAgICBwcmludGYoIihleHBlY3RpbmcgNCBmYWlsdXJlcylcbiIpOwot
ICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCkuIjsK
LSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVj
dGVkIGZhaWx1cmUgIzMsIGluIFRlYXJEb3duKCkuIjsKLSAgfQotIHByaXZhdGU6Ci0gIHZvaWQg
RGVpbml0KCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gdGhlIHRl
c3QgZml4dHVyZSBkJ3Rvci4iOwotICB9Ci19OwotCi1URVNUX0YoTm9uRmF0YWxGYWlsdXJlSW5T
ZXRVcFRlc3QsIEZhaWx1cmVJblNldFVwKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVy
ZSAjMiwgaW4gdGhlIHRlc3QgZnVuY3Rpb24uIjsKLX0KLQotLy8gVGVzdHMgZmF0YWwgZmFpbHVy
ZXMgaW4gU2V0VXAoKS4KLWNsYXNzIEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB+RmF0YWxGYWlsdXJlSW5TZXRV
cFRlc3QoKSB7Ci0gICAgRGVpbml0KCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7
Ci0gICAgcHJpbnRmKCIoZXhwZWN0aW5nIDMgZmFpbHVyZXMpXG4iKTsKLSAgICBGQUlMKCkgPDwg
IkV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCkuIjsKLSAgfQotCi0gIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRl
YXJEb3duKCkuIjsKLSAgfQotIHByaXZhdGU6Ci0gIHZvaWQgRGVpbml0KCkgewotICAgIEZBSUwo
KSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4iOwot
ICB9Ci19OwotCi1URVNUX0YoRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QsIEZhaWx1cmVJblNldFVw
KSB7Ci0gIEZBSUwoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIHRoZSB0ZXN0IGZ1bmN0aW9u
LiAgIgotICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgU2V0VXAoKSBm
YWlsZWQuIjsKLX0KLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLQotLy8gVGhpcyBncm91cCBvZiB0
ZXN0cyB2ZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IGhhbmRsZXMgU0VIIGFuZCBDKysKLS8vIGV4
Y2VwdGlvbnMgY29ycmVjdGx5LgotCi0vLyBBIGZ1bmN0aW9uIHRoYXQgdGhyb3dzIGFuIFNFSCBl
eGNlcHRpb24uCi1zdGF0aWMgdm9pZCBUaHJvd1NFSCgpIHsKLSAgaW50KiBwID0gTlVMTDsKLSAg
KnAgPSAwOyAgLy8gUmFpc2VzIGFuIGFjY2VzcyB2aW9sYXRpb24uCi19Ci0KLS8vIFRlc3RzIGV4
Y2VwdGlvbnMgdGhyb3duIGluIHRoZSB0ZXN0IGZpeHR1cmUgY29uc3RydWN0b3IuCi1jbGFzcyBF
eGNlcHRpb25JbkZpeHR1cmVDdG9yVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90
ZWN0ZWQ6Ci0gIEV4Y2VwdGlvbkluRml4dHVyZUN0b3JUZXN0KCkgewotICAgIHByaW50ZigiKGV4
cGVjdGluZyBhIGZhaWx1cmUgb24gdGhyb3duIGV4Y2VwdGlvbiAiCi0gICAgICAgICAgICJpbiB0
aGUgdGVzdCBmaXh0dXJlJ3MgY29uc3RydWN0b3IpXG4iKTsKLQotICAgIFRocm93U0VIKCk7Ci0g
IH0KLQotICB2aXJ0dWFsIH5FeGNlcHRpb25JbkZpeHR1cmVDdG9yVGVzdCgpIHsKLSAgICBEZWlu
aXQoKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBGQUlMKCkgPDwgIlVO
RVhQRUNURUQgZmFpbHVyZSBpbiBTZXRVcCgpLiAgIgotICAgICAgICAgICA8PCAiV2Ugc2hvdWxk
IG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yIHRocmV3LiI7Ci0gIH0K
LQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgRkFJTCgpIDw8ICJVTkVYUEVDVEVE
IGZhaWx1cmUgaW4gVGVhckRvd24oKS4gICIKLSAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZl
ciBnZXQgaGVyZSwgYXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciB0aHJldy4iOwotICB9Ci0gcHJp
dmF0ZToKLSAgdm9pZCBEZWluaXQoKSB7Ci0gICAgRkFJTCgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1
cmUgaW4gdGhlIGQndG9yLiAgIgotICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBo
ZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yIHRocmV3LiI7Ci0gIH0KLX07Ci0KLVRFU1Rf
RihFeGNlcHRpb25JbkZpeHR1cmVDdG9yVGVzdCwgRXhjZXB0aW9uSW5GaXh0dXJlQ3Rvcikgewot
ICBGQUlMKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBmdW5jdGlvbi4gICIK
LSAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1
cmUgYyd0b3IgdGhyZXcuIjsKLX0KLQotLy8gVGVzdHMgZXhjZXB0aW9ucyB0aHJvd24gaW4gU2V0
VXAoKS4KLWNsYXNzIEV4Y2VwdGlvbkluU2V0VXBUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qg
ewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB+RXhjZXB0aW9uSW5TZXRVcFRlc3QoKSB7Ci0gICAg
RGVpbml0KCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgcHJpbnRmKCIo
ZXhwZWN0aW5nIDMgZmFpbHVyZXMpXG4iKTsKLQotICAgIFRocm93U0VIKCk7Ci0gIH0KLQotICB2
aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJl
ICMyLCBpbiBUZWFyRG93bigpLiI7Ci0gIH0KLSBwcml2YXRlOgotICB2b2lkIERlaW5pdCgpIHsK
LSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUg
ZCd0b3IuIjsKLSAgfQotfTsKLQotVEVTVF9GKEV4Y2VwdGlvbkluU2V0VXBUZXN0LCBFeGNlcHRp
b25JblNldFVwKSB7Ci0gIEZBSUwoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIHRoZSB0ZXN0
IGZ1bmN0aW9uLiAgIgotICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMg
U2V0VXAoKSB0aHJldy4iOwotfQotCi0vLyBUZXN0cyB0aGF0IFRlYXJEb3duKCkgYW5kIHRoZSB0
ZXN0IGZpeHR1cmUgZCd0b3IgYXJlIGFsd2F5cyBjYWxsZWQsCi0vLyBldmVuIHdoZW4gdGhlIHRl
c3QgZnVuY3Rpb24gdGhyb3dzIGFuIGV4Y2VwdGlvbi4KLWNsYXNzIEV4Y2VwdGlvbkluVGVzdEZ1
bmN0aW9uVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1
YWwgfkV4Y2VwdGlvbkluVGVzdEZ1bmN0aW9uVGVzdCgpIHsKLSAgICBEZWluaXQoKTsKLSAgfQot
Ci0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZh
aWx1cmUgIzIsIGluIFRlYXJEb3duKCkuIjsKLSAgfQotIHByaXZhdGU6Ci0gIHZvaWQgRGVpbml0
KCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4
dHVyZSBkJ3Rvci4iOwotICB9Ci19OwotCi0vLyBUZXN0cyB0aGF0IHRoZSB0ZXN0IGZpeHR1cmUg
ZCd0b3IgaXMgYWx3YXlzIGNhbGxlZCwgZXZlbiB3aGVuIHRoZQotLy8gdGVzdCBmdW5jdGlvbiB0
aHJvd3MgYW4gU0VIIGV4Y2VwdGlvbi4KLVRFU1RfRihFeGNlcHRpb25JblRlc3RGdW5jdGlvblRl
c3QsIFNFSCkgewotICBwcmludGYoIihleHBlY3RpbmcgMyBmYWlsdXJlcylcbiIpOwotCi0gIFRo
cm93U0VIKCk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwotCi0vLyBUZXN0cyB0aGF0
IHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IgaXMgYWx3YXlzIGNhbGxlZCwgZXZlbiB3aGVuIHRoZQot
Ly8gdGVzdCBmdW5jdGlvbiB0aHJvd3MgYSBDKysgZXhjZXB0aW9uLiAgV2UgZG8gdGhpcyBvbmx5
IHdoZW4KLS8vIEdURVNUX0hBU19FWENFUFRJT05TIGlzIG5vbi16ZXJvLCBpLmUuIEMrKyBleGNl
cHRpb25zIGFyZSBlbmFibGVkLgotVEVTVF9GKEV4Y2VwdGlvbkluVGVzdEZ1bmN0aW9uVGVzdCwg
Q3BwRXhjZXB0aW9uKSB7Ci0gIHRocm93IDE7Ci19Ci0KLS8vIFRlc3RzIGV4Y2VwdGlvbnMgdGhy
b3duIGluIFRlYXJEb3duKCkuCi1jbGFzcyBFeGNlcHRpb25JblRlYXJEb3duVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgfkV4Y2VwdGlvbkluVGVh
ckRvd25UZXN0KCkgewotICAgIERlaW5pdCgpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJE
b3duKCkgewotICAgIHRocm93IDE7Ci0gIH0KLSBwcml2YXRlOgotICB2b2lkIERlaW5pdCgpIHsK
LSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZpeHR1cmUg
ZCd0b3IuIjsKLSAgfQotfTsKLQotVEVTVF9GKEV4Y2VwdGlvbkluVGVhckRvd25UZXN0LCBFeGNl
cHRpb25JblRlYXJEb3duKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7
Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotI2VuZGlmICAvLyBHVEVT
VF9PU19XSU5ET1dTCi0KLSNpZiBHVEVTVF9JU19USFJFQURTQUZFCi0KLS8vIEEgdW5hcnkgZnVu
Y3Rpb24gdGhhdCBtYXkgZGllLgotdm9pZCBEaWVJZihib29sIHNob3VsZF9kaWUpIHsKLSAgR1RF
U1RfQ0hFQ0tfKCFzaG91bGRfZGllKSA8PCAiIC0gZGVhdGggaW5zaWRlIERpZUlmKCkuIjsKLX0K
LQotLy8gVGVzdHMgcnVubmluZyBkZWF0aCB0ZXN0cyBpbiBhIG11bHRpLXRocmVhZGVkIGNvbnRl
eHQuCi0KLS8vIFVzZWQgZm9yIGNvb3JkaW5hdGlvbiBiZXR3ZWVuIHRoZSBtYWluIGFuZCB0aGUg
c3Bhd24gdGhyZWFkLgotc3RydWN0IFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyB7Ci0gIFNwYXdu
VGhyZWFkTm90aWZpY2F0aW9ucygpIHt9Ci0KLSAgTm90aWZpY2F0aW9uIHNwYXduX3RocmVhZF9z
dGFydGVkOwotICBOb3RpZmljYXRpb24gc3Bhd25fdGhyZWFkX29rX3RvX3Rlcm1pbmF0ZTsKLQot
IHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oU3Bhd25UaHJlYWRO
b3RpZmljYXRpb25zKTsKLX07Ci0KLS8vIFRoZSBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCBpbiB0
aGUgdGhyZWFkIHNwYXduIGJ5IHRoZQotLy8gTXVsdGlwbGVUaHJlYWRzIHRlc3QgKGJlbG93KS4K
LXN0YXRpYyB2b2lkIFRocmVhZFJvdXRpbmUoU3Bhd25UaHJlYWROb3RpZmljYXRpb25zKiBub3Rp
ZmljYXRpb25zKSB7Ci0gIC8vIFNpZ25hbHMgdGhlIG1haW4gdGhyZWFkIHRoYXQgdGhpcyB0aHJl
YWQgaGFzIHN0YXJ0ZWQuCi0gIG5vdGlmaWNhdGlvbnMtPnNwYXduX3RocmVhZF9zdGFydGVkLk5v
dGlmeSgpOwotCi0gIC8vIFdhaXRzIGZvciBwZXJtaXNzaW9uIHRvIGZpbmlzaCBmcm9tIHRoZSBt
YWluIHRocmVhZC4KLSAgbm90aWZpY2F0aW9ucy0+c3Bhd25fdGhyZWFkX29rX3RvX3Rlcm1pbmF0
ZS5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7Ci19Ci0KLS8vIFRoaXMgaXMgYSBkZWF0aC10ZXN0IHRl
c3QsIGJ1dCBpdCdzIG5vdCBuYW1lZCB3aXRoIGEgRGVhdGhUZXN0Ci0vLyBzdWZmaXguICBJdCBz
dGFydHMgdGhyZWFkcyB3aGljaCBtaWdodCBpbnRlcmZlcmUgd2l0aCBsYXRlcgotLy8gZGVhdGgg
dGVzdHMsIHNvIGl0IG11c3QgcnVuIGFmdGVyIGFsbCBvdGhlciBkZWF0aCB0ZXN0cy4KLWNsYXNz
IERlYXRoVGVzdEFuZE11bHRpVGhyZWFkc1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0g
cHJvdGVjdGVkOgotICAvLyBTdGFydHMgYSB0aHJlYWQgYW5kIHdhaXRzIGZvciBpdCB0byBiZWdp
bi4KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIHRocmVhZF8ucmVzZXQobmV3IFRocmVh
ZFdpdGhQYXJhbTxTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMqPigKLSAgICAgICAgJlRocmVhZFJv
dXRpbmUsICZub3RpZmljYXRpb25zXywgTlVMTCkpOwotICAgIG5vdGlmaWNhdGlvbnNfLnNwYXdu
X3RocmVhZF9zdGFydGVkLldhaXRGb3JOb3RpZmljYXRpb24oKTsKLSAgfQotICAvLyBUZWxscyB0
aGUgdGhyZWFkIHRvIGZpbmlzaCwgYW5kIHJlYXBzIGl0LgotICAvLyBEZXBlbmRpbmcgb24gdGhl
IHZlcnNpb24gb2YgdGhlIHRocmVhZCBsaWJyYXJ5IGluIHVzZSwKLSAgLy8gYSBtYW5hZ2VyIHRo
cmVhZCBtaWdodCBzdGlsbCBiZSBsZWZ0IHJ1bm5pbmcgdGhhdCB3aWxsIGludGVyZmVyZQotICAv
LyB3aXRoIGxhdGVyIGRlYXRoIHRlc3RzLiAgVGhpcyBpcyB1bmZvcnR1bmF0ZSwgYnV0IHRoaXMg
Y2xhc3MKLSAgLy8gY2xlYW5zIHVwIGFmdGVyIGl0c2VsZiBhcyBiZXN0IGl0IGNhbi4KLSAgdmly
dHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIG5vdGlmaWNhdGlvbnNfLnNwYXduX3RocmVhZF9v
a190b190ZXJtaW5hdGUuTm90aWZ5KCk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIFNwYXduVGhyZWFk
Tm90aWZpY2F0aW9ucyBub3RpZmljYXRpb25zXzsKLSAgc2NvcGVkX3B0cjxUaHJlYWRXaXRoUGFy
YW08U3Bhd25UaHJlYWROb3RpZmljYXRpb25zKj4gPiB0aHJlYWRfOwotfTsKLQotI2VuZGlmICAv
LyBHVEVTVF9JU19USFJFQURTQUZFCi0KLS8vIFRoZSBNaXhlZFVwVGVzdENhc2VUZXN0IHRlc3Qg
Y2FzZSB2ZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IHdpbGwgZmFpbCBhCi0vLyB0ZXN0IGlmIGl0
IHVzZXMgYSBkaWZmZXJlbnQgZml4dHVyZSBjbGFzcyB0aGFuIHdoYXQgb3RoZXIgdGVzdHMgaW4K
LS8vIHRoZSBzYW1lIHRlc3QgY2FzZSB1c2UuICBJdCBkZWxpYmVyYXRlbHkgY29udGFpbnMgdHdv
IGZpeHR1cmUKLS8vIGNsYXNzZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGJ1dCBkZWZpbmVkIGluIGRp
ZmZlcmVudCBuYW1lc3BhY2VzLgotCi0vLyBUaGUgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0
TmFtZVRlc3QgdGVzdCBjYXNlIHZlcmlmaWVzIHRoYXQKLS8vIHdoZW4gdGhlIHVzZXIgZGVmaW5l
cyB0d28gdGVzdHMgd2l0aCB0aGUgc2FtZSB0ZXN0IGNhc2UgbmFtZSBBTkQKLS8vIHNhbWUgdGVz
dCBuYW1lIChidXQgaW4gZGlmZmVyZW50IG5hbWVzcGFjZXMpLCB0aGUgc2Vjb25kIHRlc3Qgd2ls
bAotLy8gZmFpbC4KLQotbmFtZXNwYWNlIGZvbyB7Ci0KLWNsYXNzIE1peGVkVXBUZXN0Q2FzZVRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1URVNUX0YoTWl4ZWRVcFRlc3RDYXNl
VGVzdCwgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbykge30KLVRFU1RfRihNaXhlZFVwVGVzdENh
c2VUZXN0LCBTZWNvbmRUZXN0RnJvbU5hbWVzcGFjZUZvbykge30KLQotY2xhc3MgTWl4ZWRVcFRl
c3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19Owot
Ci1URVNUX0YoTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCi0gICAgICAgVGhl
U2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwpIHt9Ci0KLX0gIC8vIG5hbWVzcGFjZSBm
b28KLQotbmFtZXNwYWNlIGJhciB7Ci0KLWNsYXNzIE1peGVkVXBUZXN0Q2FzZVRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi0vLyBUaGUgZm9sbG93aW5nIHR3byB0ZXN0cyBhcmUg
ZXhwZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24gdGhlCi0vLyBnb2xkZW4gZmlsZSB0byBjaGVj
ayB0aGF0IEdvb2dsZSBUZXN0IGdlbmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KLVRF
U1RfRihNaXhlZFVwVGVzdENhc2VUZXN0LCBUaGlzU2hvdWxkRmFpbCkge30KLVRFU1RfRihNaXhl
ZFVwVGVzdENhc2VUZXN0LCBUaGlzU2hvdWxkRmFpbFRvbykge30KLQotY2xhc3MgTWl4ZWRVcFRl
c3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19Owot
Ci0vLyBFeHBlY3RlZCB0byBmYWlsLiAgV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gY2hl
Y2sgdGhhdCBHb29nbGUgVGVzdAotLy8gZ2VuZXJhdGVzIHRoZSByaWdodCBlcnJvciBtZXNzYWdl
LgotVEVTVF9GKE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAotICAgICAgIFRo
ZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsKSB7fQotCi19ICAvLyBuYW1lc3BhY2Ug
YmFyCi0KLS8vIFRoZSBmb2xsb3dpbmcgdHdvIHRlc3QgY2FzZXMgdmVyaWZ5IHRoYXQgR29vZ2xl
IFRlc3QgY2F0Y2hlcyB0aGUgdXNlcgotLy8gZXJyb3Igb2YgbWl4aW5nIFRFU1QgYW5kIFRFU1Rf
RiBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UuICBUaGUgZmlyc3QKLS8vIHRlc3QgY2FzZSBjaGVja3Mg
dGhlIHNjZW5hcmlvIHdoZXJlIFRFU1RfRiBhcHBlYXJzIGJlZm9yZSBURVNULCBhbmQKLS8vIHRo
ZSBzZWNvbmQgb25lIGNoZWNrcyB3aGVyZSBURVNUIGFwcGVhcnMgYmVmb3JlIFRFU1RfRi4KLQot
Y2xhc3MgVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlIDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgewotfTsKLQotVEVTVF9GKFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3Rf
Y2FzZSwgRGVmaW5lZFVzaW5nVEVTVF9GKSB7fQotCi0vLyBFeHBlY3RlZCB0byBmYWlsLiAgV2Ug
cmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gY2hlY2sgdGhhdCBHb29nbGUgVGVzdAotLy8gZ2Vu
ZXJhdGVzIHRoZSByaWdodCBlcnJvciBtZXNzYWdlLgotVEVTVChURVNUX0ZfYmVmb3JlX1RFU1Rf
aW5fc2FtZV90ZXN0X2Nhc2UsIERlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsKSB7fQotCi1j
bGFzcyBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7Ci19OwotCi1URVNUKFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2Fz
ZSwgRGVmaW5lZFVzaW5nVEVTVCkge30KLQotLy8gRXhwZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkg
b24gdGhlIGdvbGRlbiBmaWxlIHRvIGNoZWNrIHRoYXQgR29vZ2xlIFRlc3QKLS8vIGdlbmVyYXRl
cyB0aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KLVRFU1RfRihURVNUX2JlZm9yZV9URVNUX0ZfaW5f
c2FtZV90ZXN0X2Nhc2UsIERlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwpIHsKLX0KLQot
Ly8gVXNlZCBmb3IgdGVzdGluZyBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGFuZCBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRSgpLgotaW50IGdsb2JhbF9pbnRlZ2VyID0gMDsKLQotLy8gVGVzdHMgdGhh
dCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVuY2UgZ2xvYmFsIHZhcmlhYmxl
cy4KLVRFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQ2FuUmVmZXJlbmNlR2xvYmFsVmFy
aWFibGVzKSB7Ci0gIGdsb2JhbF9pbnRlZ2VyID0gMDsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoewotICAgIEVYUEVDVF9FUSgxLCBnbG9iYWxfaW50ZWdlcikgPDwgIkV4cGVjdGVkIG5vbi1m
YXRhbCBmYWlsdXJlLiI7Ci0gIH0sICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVuY2Ug
bG9jYWwgdmFyaWFibGVzCi0vLyAoc3RhdGljIG9yIG5vdCkuCi1URVNUKEV4cGVjdE5vbmZhdGFs
RmFpbHVyZVRlc3QsIENhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVzKSB7Ci0gIGludCBtID0gMDsK
LSAgc3RhdGljIGludCBuOwotICBuID0gMTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewot
ICAgIEVYUEVDVF9FUShtLCBuKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKLSAg
fSwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgc3VjY2VlZHMgd2hlbiB0aGVyZSBpcyBleGFjdGx5Ci0v
LyBvbmUgbm9uLWZhdGFsIGZhaWx1cmUgYW5kIG5vIGZhdGFsIGZhaWx1cmUuCi1URVNUKEV4cGVj
dE5vbmZhdGFsRmFpbHVyZVRlc3QsIFN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1
cmUpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIEFERF9GQUlMVVJFKCkgPDwg
IkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7Ci0gIH0sICJFeHBlY3RlZCBub24tZmF0YWwg
ZmFpbHVyZS4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgp
IGZhaWxzIHdoZW4gdGhlcmUgaXMgbm8KLS8vIG5vbi1mYXRhbCBmYWlsdXJlLgotVEVTVChFeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUp
IHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSh7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgYXJlIHR3bwotLy8gbm9uLWZhdGFsIGZhaWx1
cmVzLgotVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUFyZVR3
b05vbmZhdGFsRmFpbHVyZXMpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIp
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhw
ZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMS4iOwotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVj
dGVkIG5vbi1mYXRhbCBmYWlsdXJlIDIuIjsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyB0aGF0
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBvbmUgZmF0YWwK
LS8vIGZhaWx1cmUuCi1URVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRo
ZXJlSXNPbmVGYXRhbEZhaWx1cmUpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlc
biIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3Rl
ZCBmYXRhbCBmYWlsdXJlLiI7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWluZwotLy8gdGVz
dGVkIHJldHVybnMuCi1URVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblN0
YXRlbWVudFJldHVybnMpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwot
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAgcmV0dXJuOwotICB9LCAiIik7Ci19Ci0K
LSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGUgc3RhdGVtZW50IGJlaW5nCi0vLyB0ZXN0ZWQgdGhy
b3dzLgotVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRU
aHJvd3MpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICB0cnkgewot
ICAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICAgIHRocm93IDA7Ci0gICAgfSwgIiIp
OwotICB9IGNhdGNoKGludCkgeyAgLy8gTk9MSU5UCi0gIH0KLX0KLQotI2VuZGlmICAvLyBHVEVT
VF9IQVNfRVhDRVBUSU9OUwotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkg
Y2FuIHJlZmVyZW5jZSBnbG9iYWwgdmFyaWFibGVzLgotVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LCBDYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMpIHsKLSAgZ2xvYmFsX2ludGVnZXIgPSAw
OwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0gICAgQVNTRVJUX0VRKDEsIGdsb2JhbF9pbnRl
Z2VyKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiRXhwZWN0ZWQgZmF0YWwg
ZmFpbHVyZS4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGNh
biByZWZlcmVuY2UgbG9jYWwgc3RhdGljCi0vLyB2YXJpYWJsZXMuCi1URVNUKEV4cGVjdEZhdGFs
RmFpbHVyZVRlc3QsIENhblJlZmVyZW5jZUxvY2FsU3RhdGljVmFyaWFibGVzKSB7Ci0gIHN0YXRp
YyBpbnQgbjsKLSAgbiA9IDE7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKLSAgICBBU1NFUlRf
RVEoMCwgbikgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKLSAgfSwgIkV4cGVjdGVkIGZh
dGFsIGZhaWx1cmUuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
KSBzdWNjZWVkcyB3aGVuIHRoZXJlIGlzIGV4YWN0bHkKLS8vIG9uZSBmYXRhbCBmYWlsdXJlIGFu
ZCBubyBub24tZmF0YWwgZmFpbHVyZS4KLVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgU3Vj
Y2VlZHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZSkgewotICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RSh7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7Ci0gIH0sICJFeHBl
Y3RlZCBmYXRhbCBmYWlsdXJlLiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9G
QUlMVVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBubyBmYXRhbAotLy8gZmFpbHVyZS4KLVRFU1Qo
RXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlKSB7
Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoewotICB9LCAiIik7Ci19Ci0KLS8vIEEgaGVscGVyIGZvciBnZW5lcmF0aW5nIGEgZmF0
YWwgZmFpbHVyZS4KLXZvaWQgRmF0YWxGYWlsdXJlKCkgewotICBGQUlMKCkgPDwgIkV4cGVjdGVk
IGZhdGFsIGZhaWx1cmUuIjsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVS
RSgpIGZhaWxzIHdoZW4gdGhlcmUgYXJlIHR3bwotLy8gZmF0YWwgZmFpbHVyZXMuCi1URVNUKEV4
cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcykg
ewotICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKHsKLSAgICBGYXRhbEZhaWx1cmUoKTsKLSAgICBGYXRhbEZhaWx1cmUoKTsKLSAgfSwg
IiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hl
biB0aGVyZSBpcyBvbmUgbm9uLWZhdGFsCi0vLyBmYWlsdXJlLgotVEVTVChFeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlKSB7Ci0gIHByaW50
ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewot
ICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7Ci0gIH0s
ICIiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdo
ZW4gdGhlIHN0YXRlbWVudCBiZWluZwotLy8gdGVzdGVkIHJldHVybnMuCi1URVNUKEV4cGVjdEZh
dGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblN0YXRlbWVudFJldHVybnMpIHsKLSAgcHJpbnRmKCIo
ZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0gICAg
cmV0dXJuOwotICB9LCAiIik7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwotCi0vLyBU
ZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGUgc3RhdGVtZW50
IGJlaW5nCi0vLyB0ZXN0ZWQgdGhyb3dzLgotVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBG
YWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVy
ZSlcbiIpOwotICB0cnkgewotICAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKLSAgICAgIHRocm93
IDA7Ci0gICAgfSwgIiIpOwotICB9IGNhdGNoKGludCkgeyAgLy8gTk9MSU5UCi0gIH0KLX0KLQot
I2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUwotCi0vLyBUaGlzICNpZmRlZiBibG9jayB0
ZXN0cyB0aGUgb3V0cHV0IG9mIHR5cGVkIHRlc3RzLgotI2lmIEdURVNUX0hBU19UWVBFRF9URVNU
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgVHlwZWRUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgewotfTsKLQotVFlQRURfVEVTVF9DQVNFKFR5cGVkVGVzdCwgdGVzdGluZzo6VHlw
ZXM8aW50Pik7Ci0KLVRZUEVEX1RFU1QoVHlwZWRUZXN0LCBTdWNjZXNzKSB7Ci0gIEVYUEVDVF9F
USgwLCBUeXBlUGFyYW0oKSk7Ci19Ci0KLVRZUEVEX1RFU1QoVHlwZWRUZXN0LCBGYWlsdXJlKSB7
Ci0gIEVYUEVDVF9FUSgxLCBUeXBlUGFyYW0oKSkgPDwgIkV4cGVjdGVkIGZhaWx1cmUiOwotfQot
Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUCi0KLS8vIFRoaXMgI2lmZGVmIGJsb2Nr
IHRlc3RzIHRoZSBvdXRwdXQgb2YgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgotI2lmIEdURVNU
X0hBU19UWVBFRF9URVNUX1AKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBUeXBlZFRl
c3RQIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVFlQRURfVEVTVF9DQVNFX1AoVHlw
ZWRUZXN0UCk7Ci0KLVRZUEVEX1RFU1RfUChUeXBlZFRlc3RQLCBTdWNjZXNzKSB7Ci0gIEVYUEVD
VF9FUSgwVSwgVHlwZVBhcmFtKCkpOwotfQotCi1UWVBFRF9URVNUX1AoVHlwZWRUZXN0UCwgRmFp
bHVyZSkgewotICBFWFBFQ1RfRVEoMVUsIFR5cGVQYXJhbSgpKSA8PCAiRXhwZWN0ZWQgZmFpbHVy
ZSI7Ci19Ci0KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKFR5cGVkVGVzdFAsIFN1Y2Nlc3Ms
IEZhaWx1cmUpOwotCi10eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPHVuc2lnbmVkIGNoYXIsIHVuc2ln
bmVkIGludD4gVW5zaWduZWRUeXBlczsKLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFVu
c2lnbmVkLCBUeXBlZFRlc3RQLCBVbnNpZ25lZFR5cGVzKTsKLQotI2VuZGlmICAvLyBHVEVTVF9I
QVNfVFlQRURfVEVTVF9QCi0KLSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi0vLyBXZSByZWx5
IG9uIHRoZSBnb2xkZW4gZmlsZSB0byB2ZXJpZnkgdGhhdCB0ZXN0cyB3aG9zZSB0ZXN0IGNhc2UK
LS8vIG5hbWUgZW5kcyB3aXRoIERlYXRoVGVzdCBhcmUgcnVuIGZpcnN0LgotCi1URVNUKEFEZWF0
aFRlc3QsIFNob3VsZFJ1bkZpcnN0KSB7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAot
Ci0vLyBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmlsZSB0byB2ZXJpZnkgdGhhdCB0eXBlZCB0ZXN0
cyB3aG9zZSB0ZXN0Ci0vLyBjYXNlIG5hbWUgZW5kcyB3aXRoIERlYXRoVGVzdCBhcmUgcnVuIGZp
cnN0LgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEFUeXBlZERlYXRoVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLXR5cGVkZWYgdGVzdGluZzo6VHlwZXM8aW50LCBk
b3VibGU+IE51bWVyaWNUeXBlczsKLVRZUEVEX1RFU1RfQ0FTRShBVHlwZWREZWF0aFRlc3QsIE51
bWVyaWNUeXBlcyk7Ci0KLVRZUEVEX1RFU1QoQVR5cGVkRGVhdGhUZXN0LCBTaG91bGRSdW5GaXJz
dCkgewotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUCi0KLSNpZiBHVEVTVF9I
QVNfVFlQRURfVEVTVF9QCi0KLQotLy8gV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gdmVy
aWZ5IHRoYXQgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzCi0vLyB3aG9zZSB0ZXN0IGNhc2UgbmFt
ZSBlbmRzIHdpdGggRGVhdGhUZXN0IGFyZSBydW4gZmlyc3QuCi0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotY2xhc3MgQVR5cGVQYXJhbURlYXRoVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
LX07Ci0KLVRZUEVEX1RFU1RfQ0FTRV9QKEFUeXBlUGFyYW1EZWF0aFRlc3QpOwotCi1UWVBFRF9U
RVNUX1AoQVR5cGVQYXJhbURlYXRoVGVzdCwgU2hvdWxkUnVuRmlyc3QpIHsKLX0KLQotUkVHSVNU
RVJfVFlQRURfVEVTVF9DQVNFX1AoQVR5cGVQYXJhbURlYXRoVGVzdCwgU2hvdWxkUnVuRmlyc3Qp
OwotCi1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgQVR5cGVQYXJhbURlYXRoVGVz
dCwgTnVtZXJpY1R5cGVzKTsKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCi0K
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotLy8gVGVzdHMgdmFyaW91cyBmYWls
dXJlIGNvbmRpdGlvbnMgb2YKLS8vIEVYUEVDVF97LE5PTn1GQVRBTF9GQUlMVVJFeyxfT05fQUxM
X1RIUkVBRFN9LgotY2xhc3MgRXhwZWN0RmFpbHVyZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7Ci0gcHVibGljOiAgLy8gTXVzdCBiZSBwdWJsaWMgYW5kIG5vdCBwcm90ZWN0ZWQgZHVlIHRv
IGEgYnVnIGluIGcrKyAzLjQuMi4KLSAgZW51bSBGYWlsdXJlTW9kZSB7Ci0gICAgRkFUQUxfRkFJ
TFVSRSwKLSAgICBOT05GQVRBTF9GQUlMVVJFCi0gIH07Ci0gIHN0YXRpYyB2b2lkIEFkZEZhaWx1
cmUoRmFpbHVyZU1vZGUgZmFpbHVyZSkgewotICAgIGlmIChmYWlsdXJlID09IEZBVEFMX0ZBSUxV
UkUpIHsKLSAgICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOwotICAgIH0g
ZWxzZSB7Ci0gICAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVy
ZS4iOwotICAgIH0KLSAgfQotfTsKLQotVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3RG
YXRhbEZhaWx1cmUpIHsKLSAgLy8gRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0IHN1Y2NlZWRz
LgotICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKFNVQ0NFRUQoKSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Ci0gIC8vIEV4cGVj
dGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBub24tZmF0YWwgZmFpbHVyZS4KLSAgcHJpbnRm
KCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRG
YWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpLCAiRXhwZWN0ZWQgbm9uLWZhdGFsICIKLSAgICAgICAg
ICAgICAgICAgICAgICAgImZhaWx1cmUuIik7Ci0gIC8vIFdyb25nIG1lc3NhZ2UuCi0gIHByaW50
ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRk
RmFpbHVyZShGQVRBTF9GQUlMVVJFKSwgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSAiCi0gICAg
ICAgICAgICAgICAgICAgICAgICJleHBlY3RlZC4iKTsKLX0KLQotVEVTVF9GKEV4cGVjdEZhaWx1
cmVUZXN0LCBFeHBlY3ROb25GYXRhbEZhaWx1cmUpIHsKLSAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFs
IGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlc
biIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShTVUNDRUVEKCksICJFeHBlY3RlZCBub24t
ZmF0YWwgZmFpbHVyZS4iKTsKLSAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBn
b3QgYSBmYXRhbCBmYWlsdXJlLgotICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksICJF
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOwotICAvLyBXcm9uZyBtZXNzYWdlLgotICBwcmludGYo
IihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFk
ZEZhaWx1cmUoTk9ORkFUQUxfRkFJTFVSRSksICJTb21lIG90aGVyIG5vbi1mYXRhbCAiCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICJmYWlsdXJlLiIpOwotfQotCi0jaWYgR1RFU1RfSVNfVEhS
RUFEU0FGRQotCi1jbGFzcyBFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0IDogcHVibGljIEV4
cGVjdEZhaWx1cmVUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHN0YXRpYyB2b2lkIEFkZEZhaWx1cmVJ
bk90aGVyVGhyZWFkKEZhaWx1cmVNb2RlIGZhaWx1cmUpIHsKLSAgICBUaHJlYWRXaXRoUGFyYW08
RmFpbHVyZU1vZGU+IHRocmVhZCgmQWRkRmFpbHVyZSwgZmFpbHVyZSwgTlVMTCk7Ci0gICAgdGhy
ZWFkLkpvaW4oKTsKLSAgfQotfTsKLQotVEVTVF9GKEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rl
c3QsIEV4cGVjdEZhdGFsRmFpbHVyZSkgewotICAvLyBXZSBvbmx5IGludGVyY2VwdCB0aGUgY3Vy
cmVudCB0aHJlYWQuCi0gIHByaW50ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7Ci0gIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZBVEFMX0ZBSUxVUkUp
LAotICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKLX0K
LQotVEVTVF9GKEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QsIEV4cGVjdE5vbkZhdGFsRmFp
bHVyZSkgewotICAvLyBXZSBvbmx5IGludGVyY2VwdCB0aGUgY3VycmVudCB0aHJlYWQuCi0gIHBy
aW50ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKE5PTkZBVEFMX0ZBSUxVUkUpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7Ci19Ci0KLXR5
cGVkZWYgRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCBTY29wZWRGYWtlVGVzdFBhcnRSZXN1
bHRSZXBvcnRlclRlc3Q7Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIFNjb3BlZEZha2VUZXN0UGFydFJl
c3VsdFJlcG9ydGVyIG9ubHkgY2F0Y2hlcyBmYWlsdXJlcyBmcm9tCi0vLyB0aGUgY3VycmVudCB0
aHJlYWQgaWYgaXQgaXMgaW5zdGFudGlhdGVkIHdpdGggSU5URVJDRVBUX09OTFlfQ1VSUkVOVF9U
SFJFQUQuCi1URVNUX0YoU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LCBJbnRl
cmNlcHRPbmx5Q3VycmVudFRocmVhZCkgewotICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJl
cylcbiIpOwotICBUZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7Ci0gIHsKLSAgICBTY29wZWRG
YWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlciByZXBvcnRlcigKLSAgICAgICAgU2NvcGVkRmFrZVRl
c3RQYXJ0UmVzdWx0UmVwb3J0ZXI6OklOVEVSQ0VQVF9PTkxZX0NVUlJFTlRfVEhSRUFELAotICAg
ICAgICAmcmVzdWx0cyk7Ci0gICAgQWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoRkFUQUxfRkFJTFVS
RSk7Ci0gICAgQWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoTk9ORkFUQUxfRkFJTFVSRSk7Ci0gIH0K
LSAgLy8gVGhlIHR3byBmYWlsdXJlcyBzaG91bGQgbm90IGhhdmUgYmVlbiBpbnRlcmNlcHRlZC4K
LSAgRVhQRUNUX0VRKDAsIHJlc3VsdHMuc2l6ZSgpKSA8PCAiVGhpcyBzaG91bGRuJ3QgZmFpbC4i
OwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUKLQotVEVTVF9GKEV4cGVjdEZh
aWx1cmVUZXN0LCBFeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKLSAgLy8gRXhwZWN0
ZWQgZmF0YWwgZmFpbHVyZSwgYnV0IHN1Y2NlZWRzLgotICBwcmludGYoIihleHBlY3RpbmcgMSBm
YWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKFNVQ0NF
RUQoKSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Ci0gIC8vIEV4cGVjdGVkIGZhdGFsIGZh
aWx1cmUsIGJ1dCBnb3QgYSBub24tZmF0YWwgZmFpbHVyZS4KLSAgcHJpbnRmKCIoZXhwZWN0aW5n
IDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhB
ZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7Ci0gIC8vIFdyb25nIG1l
c3NhZ2UuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJFKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNvbWUgb3RoZXIgZmF0YWwgZmFp
bHVyZSBleHBlY3RlZC4iKTsKLX0KLQotVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3RO
b25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKLSAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZh
aWx1cmUsIGJ1dCBzdWNjZWVkcy4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIp
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhTVUNDRUVEKCksICJF
eHBlY3RlZCBub24tZmF0YWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZmFpbHVyZS4iKTsKLSAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBn
b3QgYSBmYXRhbCBmYWlsdXJlLgotICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUoRkFU
QUxfRkFJTFVSRSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJF
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOwotICAvLyBXcm9uZyBtZXNzYWdlLgotICBwcmludGYo
IihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09O
X0FMTF9USFJFQURTKEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJTFVSRSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb21lIG90aGVyIG5vbi1mYXRhbCBmYWlsdXJl
LiIpOwotfQotCi0KLS8vIFR3byB0ZXN0IGVudmlyb25tZW50cyBmb3IgdGVzdGluZyB0ZXN0aW5n
OjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKS4KLQotY2xhc3MgRm9vRW52aXJvbm1lbnQgOiBw
dWJsaWMgdGVzdGluZzo6RW52aXJvbm1lbnQgewotIHB1YmxpYzoKLSAgdmlydHVhbCB2b2lkIFNl
dFVwKCkgewotICAgIHByaW50ZigiJXMiLCAiRm9vRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVk
LlxuIik7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgcHJpbnRmKCIl
cyIsICJGb29FbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuXG4iKTsKLSAgICBGQUlMKCkg
PDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKLSAgfQotfTsKLQotY2xhc3MgQmFyRW52aXJv
bm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6RW52aXJvbm1lbnQgewotIHB1YmxpYzoKLSAgdmlydHVh
bCB2b2lkIFNldFVwKCkgewotICAgIHByaW50ZigiJXMiLCAiQmFyRW52aXJvbm1lbnQ6OlNldFVw
KCkgY2FsbGVkLlxuIik7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAg
cHJpbnRmKCIlcyIsICJCYXJFbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuXG4iKTsKLSAg
ICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOwotICB9Ci19
OwotCi1HVEVTVF9ERUZJTkVfYm9vbF8oaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRf
aG9jX3Rlc3RzLCBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAiVGhpcyBmbGFnIGNhdXNlcyB0
aGUgcHJvZ3JhbSB0byBza2lwIHRlc3QgZW52aXJvbm1lbnQgIgotICAgICAgICAgICAgICAgICAg
ICJ0ZXN0cyBhbmQgYWQgaG9jIHRlc3RzLiIpOwotCi0vLyBUaGUgbWFpbiBmdW5jdGlvbi4KLS8v
Ci0vLyBUaGUgaWRlYSBpcyB0byB1c2UgR29vZ2xlIFRlc3QgdG8gcnVuIGFsbCB0aGUgdGVzdHMg
d2UgaGF2ZSBkZWZpbmVkIChzb21lCi0vLyBvZiB0aGVtIGFyZSBpbnRlbmRlZCB0byBmYWlsKSwg
YW5kIHRoZW4gY29tcGFyZSB0aGUgdGVzdCByZXN1bHRzCi0vLyB3aXRoIHRoZSAiZ29sZGVuIiBm
aWxlLgotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7Ci0gIHRlc3Rpbmc6OkdURVNU
X0ZMQUcocHJpbnRfdGltZSkgPSBmYWxzZTsKLQotICAvLyBXZSBqdXN0IHJ1biB0aGUgdGVzdHMs
IGtub3dpbmcgc29tZSBvZiB0aGVtIGFyZSBpbnRlbmRlZCB0byBmYWlsLgotICAvLyBXZSB3aWxs
IHVzZSBhIHNlcGFyYXRlIFB5dGhvbiBzY3JpcHQgdG8gY29tcGFyZSB0aGUgb3V0cHV0IG9mCi0g
IC8vIHRoaXMgcHJvZ3JhbSB3aXRoIHRoZSBnb2xkZW4gZmlsZS4KLQotICAvLyBJdCdzIGhhcmQg
dG8gdGVzdCBJbml0R29vZ2xlVGVzdCgpIGRpcmVjdGx5LCBhcyBpdCBoYXMgbWFueQotICAvLyBn
bG9iYWwgc2lkZSBlZmZlY3RzLiAgVGhlIGZvbGxvd2luZyBsaW5lIHNlcnZlcyBhcyBhIHNhbml0
eSB0ZXN0Ci0gIC8vIGZvciBpdC4KLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFy
Z3YpOwotICBpZiAoYXJnYyA+PSAyICYmCi0gICAgICBTdHJpbmcoYXJndlsxXSkgPT0gIi0tZ3Rl
c3RfaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzIikKLSAgICBHVEVT
VF9GTEFHKGludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cykgPSB0cnVl
OwotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLSAgaWYgKHRlc3Rpbmc6OmludGVybmFsOjpH
VEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KSAhPSAiIikgewotICAgIC8vIFNraXAg
dGhlIHVzdWFsIG91dHB1dCBjYXB0dXJpbmcgaWYgd2UncmUgcnVubmluZyBhcyB0aGUgY2hpbGQK
LSAgICAvLyBwcm9jZXNzIG9mIGFuIHRocmVhZHNhZmUtc3R5bGUgZGVhdGggdGVzdC4KLSNpZiBH
VEVTVF9PU19XSU5ET1dTCi0gICAgcG9zaXg6OkZSZW9wZW4oIm51bDoiLCAidyIsIHN0ZG91dCk7
Ci0jZWxzZQotICAgIHBvc2l4OjpGUmVvcGVuKCIvZGV2L251bGwiLCAidyIsIHN0ZG91dCk7Ci0j
ZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLSAgICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwot
ICB9Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLSAgaWYgKEdURVNUX0ZMQUco
aW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzKSkKLSAgICByZXR1cm4g
UlVOX0FMTF9URVNUUygpOwotCi0gIC8vIFJlZ2lzdGVycyB0d28gZ2xvYmFsIHRlc3QgZW52aXJv
bm1lbnRzLgotICAvLyBUaGUgZ29sZGVuIGZpbGUgdmVyaWZpZXMgdGhhdCB0aGV5IGFyZSBzZXQg
dXAgaW4gdGhlIG9yZGVyIHRoZXkKLSAgLy8gYXJlIHJlZ2lzdGVyZWQsIGFuZCB0b3JuIGRvd24g
aW4gdGhlIHJldmVyc2Ugb3JkZXIuCi0gIHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVu
dChuZXcgRm9vRW52aXJvbm1lbnQpOwotICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1l
bnQobmV3IEJhckVudmlyb25tZW50KTsKLQotICByZXR1cm4gUnVuQWxsVGVzdHMoKTsKLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
Z29sZGVuX2xpbi50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1
dF90ZXN0X2dvbGRlbl9saW4udHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzYw
NDM3YWNhYTc2NDBkZmJmM2RiMjgzY2YxZDE1MDM0YzA2MjJlLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2OTYg
KzAsMCBAQAotVGhlIG5vbi10ZXN0IHBhcnQgb2YgdGhlIGNvZGUgaXMgZXhwZWN0ZWQgdG8gaGF2
ZSAyIGZhaWx1cmVzLgotCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUg
b2Y6IGZhbHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4cGVjdGVkOiB0cnVlCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IDMKLUV4cGVjdGVkOiAyCi0bWzA7MzJtWz09
PT09PT09PT1dIBtbbVJ1bm5pbmcgNjAgdGVzdHMgZnJvbSAyNSB0ZXN0IGNhc2VzLgotG1swOzMy
bVstLS0tLS0tLS0tXSAbW21HbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCi1Gb29FbnZp
cm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuCi1CYXJFbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxsZWQu
Ci0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEFEZWF0aFRlc3QKLRtbMDszMm1b
IFJVTiAgICAgIF0gG1ttQURlYXRoVGVzdC5TaG91bGRSdW5GaXJzdAotG1swOzMybVsgICAgICAg
T0sgXSAbW21BRGVhdGhUZXN0LlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJtWy0tLS0tLS0tLS1dIBtb
bTEgdGVzdCBmcm9tIEFUeXBlZERlYXRoVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLRtb
MDszMm1bIFJVTiAgICAgIF0gG1ttQVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLRtb
MDszMm1bICAgICAgIE9LIF0gG1ttQVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLRtb
MDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gQVR5cGVkRGVhdGhUZXN0LzEsIHdoZXJl
IFR5cGVQYXJhbSA9IGRvdWJsZQotG1swOzMybVsgUlVOICAgICAgXSAbW21BVHlwZWREZWF0aFRl
c3QvMS5TaG91bGRSdW5GaXJzdAotG1swOzMybVsgICAgICAgT0sgXSAbW21BVHlwZWREZWF0aFRl
c3QvMS5TaG91bGRSdW5GaXJzdAotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBN
eS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGludAotG1swOzMybVsg
UlVOICAgICAgXSAbW21NeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLRtb
MDszMm1bICAgICAgIE9LIF0gG1ttTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8wLlNob3VsZFJ1bkZp
cnN0Ci0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIE15L0FUeXBlUGFyYW1EZWF0
aFRlc3QvMSwgd2hlcmUgVHlwZVBhcmFtID0gZG91YmxlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtb
bU15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAotG1swOzMybVsgICAgICAg
T0sgXSAbW21NeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1b
LS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFBhc3NpbmdUZXN0Ci0bWzA7MzJtWyBSVU4gICAg
ICBdIBtbbVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MQotG1swOzMybVsgICAgICAgT0sgXSAbW21Q
YXNzaW5nVGVzdC5QYXNzaW5nVGVzdDEKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttUGFzc2luZ1Rl
c3QuUGFzc2luZ1Rlc3QyCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbVBhc3NpbmdUZXN0LlBhc3Np
bmdUZXN0MgotG1swOzMybVstLS0tLS0tLS0tXSAbW20zIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJl
VGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVy
ZUluU3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiB4Ci0gIEFjdHVhbDog
MgotRXhwZWN0ZWQ6IDEKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5G
YXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxGYWls
dXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWls
dXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1WYWx1ZSBvZjogeAotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi0bWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5T
dWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiBmYWxzZSkKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogZmFsc2UKLSAgQWN0dWFsOiBmYWxzZQotRXhw
ZWN0ZWQ6IHRydWUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5Ob25m
YXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZy
b20gTG9nZ2luZ1Rlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttTG9nZ2luZ1Rlc3QuSW50ZXJs
ZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLShleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykg
Pj0gKGFbaV0pKQotaSA9PSAwCi1pID09IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWls
dXJlCi1FeHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDkKLWkgPT0gMgotaSA9
PSAzCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6ICgzKSA+PSAo
YVtpXSksIGFjdHVhbDogMyB2cyA2Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUxvZ2dpbmdUZXN0
LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtb
bTYgdGVzdHMgZnJvbSBTQ09QRURfVFJBQ0VUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVND
T1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVk
LCBhbmQgc2hvdWxkbid0IGhhdmUgYSB0cmFjZS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBG
YWlsdXJlCi1GYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBoYXZl
IGEgdHJhY2UuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBF
eHBlY3RlZCB0cmFjZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAot
VGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkbid0IGhhdmUgYSB0cmFjZS4KLRtb
MDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5PYmV5c1Njb3BlcwotG1swOzMy
bVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCi0oZXhwZWN0ZWQg
dG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogbgot
ICBBY3R1YWw6IDEKLUV4cGVjdGVkOiAyCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBpID0gMQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZh
bHVlIG9mOiBuCi0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLUdvb2dsZSBUZXN0IHRyYWNlOgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGkgPSAyCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVND
T1BFRF9UUkFDRVRlc3QuV29ya3NJbkxvb3AKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttU0NPUEVE
X1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGluZQotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAxCi1FeHBl
Y3RlZDogMgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogbiA9
IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogbgotICBBY3R1
YWw6IDIKLUV4cGVjdGVkOiAxCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBuID0gMgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lldv
cmtzSW5TdWJyb3V0aW5lCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3Qu
Q2FuQmVOZXN0ZWQKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IEZhaWx1cmUKLVZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLUdvb2dsZSBU
ZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4gPSAyCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2Fu
QmVOZXN0ZWQKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZVJl
cGVhdGVkCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWls
dXJlCi1GYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWlu
IHRyYWNlIHBvaW50IEEuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBBCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1UaGlzIGZh
aWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBIGFuZCBC
LgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQgotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1G
YWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNl
IHBvaW50IEEsIEIsIGFuZCBDLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogQwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEIKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBBCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1UaGlz
IGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLCBC
LCBhbmQgRC4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEQK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBCCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQQot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKLRtb
MDszMm1bIFJVTiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0NvbmN1cnJlbnRseQot
KGV4cGVjdGluZyA2IGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUK
LUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSAoaW4gdGhyZWFkIEIsIG9ubHkgdHJhY2UgQiBh
bGl2ZSkuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBUcmFj
ZSBCCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBm
YWlsdXJlICMyIChpbiB0aHJlYWQgQSwgdHJhY2UgQSAmIEIgYm90aCBhbGl2ZSkuCi1Hb29nbGUg
VGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBUcmFjZSBBCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzIChpbiB0
aHJlYWQgQiwgdHJhY2UgQSAmIEIgYm90aCBhbGl2ZSkuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBUcmFjZSBCCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICM0IChpbiB0aHJlYWQgQiwgb25seSB0
cmFjZSBBIGFsaXZlKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQK
LUV4cGVjdGVkIGZhaWx1cmUgIzUgKGluIHRocmVhZCBBLCBvbmx5IHRyYWNlIEEgYWxpdmUpLgot
R29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogVHJhY2UgQQotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAj
NiAoaW4gdGhyZWFkIEEsIG5vIHRyYWNlIGFsaXZlKS4KLRtbMDszMW1bICBGQUlMRUQgIF0gG1tt
U0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0NvbmN1cnJlbnRseQotG1swOzMybVstLS0tLS0tLS0tXSAb
W20xIHRlc3QgZnJvbSBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QKLRtb
MDszMm1bIFJVTiAgICAgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JU
ZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi0oZXhwZWN0aW5nIDUgZmFpbHVyZXMpCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBp
biB0aGUgdGVzdCBmaXh0dXJlIGMndG9yLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1
cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRo
ZSB0ZXN0IGJvZHkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1F
eHBlY3RlZCBmYWlsdXJlICM0LCBpbiBUZWFyRG93bi4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzUsIGluIHRoZSB0ZXN0IGZpeHR1
cmUgZCd0b3IuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluRml4dHVy
ZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotG1swOzMybVstLS0tLS0tLS0t
XSAbW20xIHRlc3QgZnJvbSBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QKLRtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0
LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMpCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0
aGUgdGVzdCBmaXh0dXJlIGMndG9yLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUK
LUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4K
LRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JU
ZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBm
cm9tIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU5v
bkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi0oZXhwZWN0aW5nIDQgZmFp
bHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3Rl
ZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1
cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZnVuY3Rpb24uCi1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJl
ICMzLCBpbiBUZWFyRG93bigpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZh
aWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLRtb
MDszMW1bICBGQUlMRUQgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUlu
U2V0VXAKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gRmF0YWxGYWlsdXJlSW5T
ZXRVcFRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3Qu
RmFpbHVyZUluU2V0VXAKLShleHBlY3RpbmcgMyBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCku
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWls
dXJlICMyLCBpbiBUZWFyRG93bigpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUK
LUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4K
LRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUlu
U2V0VXAKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttNCB0ZXN0cyBmcm9tIE1peGVkVXBUZXN0Q2Fz
ZVRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5GaXJzdFRl
c3RGcm9tTmFtZXNwYWNlRm9vCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbU1peGVkVXBUZXN0Q2Fz
ZVRlc3QuRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbwotG1swOzMybVsgUlVOICAgICAgXSAbW21N
aXhlZFVwVGVzdENhc2VUZXN0LlNlY29uZFRlc3RGcm9tTmFtZXNwYWNlRm9vCi0bWzA7MzJtWyAg
ICAgICBPSyBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuU2Vjb25kVGVzdEZyb21OYW1lc3BhY2VG
b28KLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxk
RmFpbAotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUg
dGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3MuICBIb3dldmVy
LCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlVGVzdCwKLXlvdSBkZWZpbmVkIHRlc3QgRmly
c3RUZXN0RnJvbU5hbWVzcGFjZUZvbyBhbmQgdGVzdCBUaGlzU2hvdWxkRmFpbAotdXNpbmcgdHdv
IGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBlbiBpZgotdGhl
IHR3byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9u
Ci11bml0cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAgWW91IHNob3VsZCBwcm9iYWJseSByZW5h
bWUgb25lCi1vZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50IHRl
c3QgY2FzZXMuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhp
c1Nob3VsZEZhaWwKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5U
aGlzU2hvdWxkRmFpbFRvbwotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRmFpbGVkCi1BbGwgdGVzdHMg
aW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xh
c3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlVGVzdCwKLXlvdSBkZWZp
bmVkIHRlc3QgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbyBhbmQgdGVzdCBUaGlzU2hvdWxkRmFp
bFRvbwotdXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2Fu
IGhhcHBlbiBpZgotdGhlIHR3byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVudCBuYW1lc3BhY2Vz
IG9yIHRyYW5zbGF0aW9uCi11bml0cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAgWW91IHNob3Vs
ZCBwcm9iYWJseSByZW5hbWUgb25lCi1vZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRlc3RzIGlu
dG8gZGlmZmVyZW50IHRlc3QgY2FzZXMuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBU
ZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWxUb28KLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0
ZXN0cyBmcm9tIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0Ci0bWzA7MzJtWyBS
VU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29u
ZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbU1peGVk
VXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVT
aG91bGRGYWlsCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1l
VGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCi1ndGVzdC5j
YzojOiBGYWlsdXJlCi1GYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVz
dCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcy4gIEhvd2V2ZXIsIGluIHRlc3QgY2Fz
ZSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdCwKLXlvdSBkZWZpbmVkIHRlc3Qg
VGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwgYW5kIHRlc3QgVGhlU2Vjb25kVGVz
dFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLXVzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJl
IGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKLXRoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBk
aWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlvbgotdW5pdHMgYW5kIGhhdmUgdGhlIHNh
bWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVuYW1lIG9uZQotb2YgdGhlIGNsYXNzZXMg
dG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0ZXN0IGNhc2VzLgotG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRU
ZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3Rz
IGZyb20gVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlCi0bWzA7MzJtWyBSVU4g
ICAgICBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNp
bmdURVNUX0YKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2luX3Nh
bWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRgotG1swOzMybVsgUlVOICAgICAgXSAbW21U
RVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFuZFNo
b3VsZEZhaWwKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBz
YW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLCBzbyBt
aXhpbmcgVEVTVF9GIGFuZCBURVNUIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBpcwotaWxsZWdhbC4g
IEluIHRlc3QgY2FzZSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UsCi10ZXN0
IERlZmluZWRVc2luZ1RFU1RfRiBpcyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKLXRlc3QgRGVm
aW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwgaXMgZGVmaW5lZCB1c2luZyBURVNULiAgWW91IHBy
b2JhYmx5Ci13YW50IHRvIGNoYW5nZSB0aGUgVEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0byBh
bm90aGVyIHRlc3QKLWNhc2UuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVRFU1RfRl9iZWZvcmVf
VEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxkRmFpbAotG1sw
OzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVEVTVF9iZWZvcmVfVEVTVF9GX2luX3Nh
bWVfdGVzdF9jYXNlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVRFU1RfYmVmb3JlX1RFU1RfRl9p
bl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUCi0bWzA7MzJtWyAgICAgICBPSyBdIBtb
bVRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUCi0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbVRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2Fz
ZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1G
YWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUg
dGVzdCBmaXh0dXJlCi1jbGFzcywgc28gbWl4aW5nIFRFU1RfRiBhbmQgVEVTVCBpbiB0aGUgc2Ft
ZSB0ZXN0IGNhc2UgaXMKLWlsbGVnYWwuICBJbiB0ZXN0IGNhc2UgVEVTVF9iZWZvcmVfVEVTVF9G
X2luX3NhbWVfdGVzdF9jYXNlLAotdGVzdCBEZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWls
IGlzIGRlZmluZWQgdXNpbmcgVEVTVF9GIGJ1dAotdGVzdCBEZWZpbmVkVXNpbmdURVNUIGlzIGRl
ZmluZWQgdXNpbmcgVEVTVC4gIFlvdSBwcm9iYWJseQotd2FudCB0byBjaGFuZ2UgdGhlIFRFU1Qg
dG8gVEVTVF9GIG9yIG1vdmUgaXQgdG8gYW5vdGhlciB0ZXN0Ci1jYXNlLgotG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVz
aW5nVEVTVF9GQW5kU2hvdWxkRmFpbAotG1swOzMybVstLS0tLS0tLS0tXSAbW204IHRlc3RzIGZy
b20gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotG1swOzMy
bVsgICAgICAgT0sgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUds
b2JhbFZhcmlhYmxlcwotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1
cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVzCi0bWzA7MzJtWyAgICAgICBPSyBdIBtb
bUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxWYXJpYWJsZXMKLRtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1do
ZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVj
dE5vbmZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVy
ZQotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxz
V2hlblRoZXJlSXNOb05vbmZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVz
dC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6
IDAgZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJl
VGVzdC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAg
IF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b05vbmZh
dGFsRmFpbHVyZXMKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQot
RXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAyIGZhaWx1cmVzCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVk
IG5vbi1mYXRhbCBmYWlsdXJlIDEuCi0KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0
YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMi4KLQotG1sw
OzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRo
ZXJlQXJlVHdvTm9uZmF0YWxGYWlsdXJlcwotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLShleHBl
Y3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZh
dGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZh
aWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLRtbMDszMW1bICBGQUlM
RUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0
YWxGYWlsdXJlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRl
c3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVz
dC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6
IDAgZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJl
VGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi0oZXhwZWN0
aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRh
bCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21F
eHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotG1swOzMy
bVstLS0tLS0tLS0tXSAbW204IHRlc3RzIGZyb20gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdAotG1sw
OzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUds
b2JhbFZhcmlhYmxlcwotG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotG1swOzMybVsgUlVOICAgICAgXSAbW21F
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsU3RhdGljVmFyaWFibGVzCi0b
WzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNl
TG9jYWxTdGF0aWNWYXJpYWJsZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdC5TdWNjZWVkc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi0bWzA7MzJtWyAg
ICAgICBPSyBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09u
ZUZhdGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LkZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUp
Ci1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVh
bDogMCBmYWlsdXJlcwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LkZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAgICAgXSAb
W21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJl
cwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDog
MSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMiBmYWlsdXJlcwotZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0K
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3Rl
ZCBmYXRhbCBmYWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFp
bHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzCi0bWzA7MzJtWyBSVU4g
ICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZh
dGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1F
eHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUuCi0KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWls
c1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4
cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotKGV4cGVjdGlu
ZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBmYXRhbCBmYWls
dXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RG
YXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLRtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MK
LShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEg
ZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLRtbMDsz
Mm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFR5cGVkVGVzdC8wLCB3aGVyZSBUeXBlUGFy
YW0gPSBpbnQKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttVHlwZWRUZXN0LzAuU3VjY2VzcwotG1sw
OzMybVsgICAgICAgT0sgXSAbW21UeXBlZFRlc3QvMC5TdWNjZXNzCi0bWzA7MzJtWyBSVU4gICAg
ICBdIBtbbVR5cGVkVGVzdC8wLkZhaWx1cmUKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWls
dXJlCi1WYWx1ZSBvZjogVHlwZVBhcmFtKCkKLSAgQWN0dWFsOiAwCi1FeHBlY3RlZDogMQotRXhw
ZWN0ZWQgZmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3QvMC5GYWlsdXJl
Ci0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBVbnNpZ25lZC9UeXBlZFRlc3RQ
LzAsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKLRtbMDszMm1bIFJVTiAgICAgIF0g
G1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLlN1Y2Nlc3MKLRtbMDszMm1bICAgICAgIE9LIF0gG1tt
VW5zaWduZWQvVHlwZWRUZXN0UC8wLlN1Y2Nlc3MKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5z
aWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWls
dXJlCi1WYWx1ZSBvZjogVHlwZVBhcmFtKCkKLSAgQWN0dWFsOiBcMAotRXhwZWN0ZWQ6IDFVCi1X
aGljaCBpczogMQotRXhwZWN0ZWQgZmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21VbnNp
Z25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZQotG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3Rz
IGZyb20gVW5zaWduZWQvVHlwZWRUZXN0UC8xLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBp
bnQKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1Y2Nlc3MK
LRtbMDszMm1bICAgICAgIE9LIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1Y2Nlc3MKLRtb
MDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogVHlwZVBhcmFtKCkKLSAgQWN0
dWFsOiAwCi1FeHBlY3RlZDogMVUKLVdoaWNoIGlzOiAxCi1FeHBlY3RlZCBmYWlsdXJlCi0bWzA7
MzFtWyAgRkFJTEVEICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlCi0bWzA7MzJt
Wy0tLS0tLS0tLS1dIBtbbTQgdGVzdHMgZnJvbSBFeHBlY3RGYWlsdXJlVGVzdAotG1swOzMybVsg
UlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLShleHBl
Y3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwg
ZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogU3VjY2VzczoKLVN1
Y2NlZWRlZAotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4
cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVy
ZS4KLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3Rl
ZDogMSBmYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBl
eHBlY3RlZC4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWls
dXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQotG1swOzMybVsgUlVO
ICAgICAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLShleHBl
Y3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZh
dGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6
Ci1TdWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJl
Ci1FeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVy
ZS4KLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3Rl
ZDogMSBub24tZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIG5vbi1mYXRhbCBm
YWlsdXJlLiIKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBm
YWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQotG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLRtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJl
T25BbGxUaHJlYWRzCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUK
LUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IFN1Y2Nlc3M6Ci1TdWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVz
dC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0
ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6
IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90
aGVyIGZhdGFsIGZhaWx1cmUgZXhwZWN0ZWQuIgotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4K
LQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZh
aWx1cmVPbkFsbFRocmVhZHMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVRl
c3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0oZXhwZWN0aW5nIDEgZmFpbHVy
ZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0g
IEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBTdWNjZXNzOgotU3VjY2VlZGVkCi0K
LShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEg
bm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZh
dGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLShleHBlY3Rp
bmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFs
IGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBub24tZmF0YWwgZmFpbHVyZS4iCi0gIEFj
dHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxl
ZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLRtbMDszMW1bICBGQUlMRUQgIF0gG1tt
RXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0bWzA7
MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNU
ZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3Qu
RXhwZWN0RmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotZ3Rl
c3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAg
ZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRz
VGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFp
bHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgMiBm
YWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVj
dGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEg
bm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJl
Ci0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIFNjb3BlZEZha2VUZXN0UGFydFJl
c3VsdFJlcG9ydGVyVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21TY29wZWRGYWtlVGVzdFBh
cnRSZXN1bHRSZXBvcnRlclRlc3QuSW50ZXJjZXB0T25seUN1cnJlbnRUaHJlYWQKLShleHBlY3Rp
bmcgMiBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQK
LUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVy
ZQotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLRtbMDszMW1bICBGQUlMRUQg
IF0gG1ttU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9ubHlD
dXJyZW50VGhyZWFkCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbUdsb2JhbCB0ZXN0IGVudmlyb25t
ZW50IHRlYXItZG93bgotQmFyRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLgotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZh
aWx1cmUuCi1Gb29FbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotG1sw
OzMybVs9PT09PT09PT09XSAbW202MCB0ZXN0cyBmcm9tIDI1IHRlc3QgY2FzZXMgcmFuLgotG1sw
OzMybVsgIFBBU1NFRCAgXSAbW20yMSB0ZXN0cy4KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttMzkg
dGVzdHMsIGxpc3RlZCBiZWxvdzoKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJl
VGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0
YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKLRtbMDszMW1bICBG
QUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUK
LRtbMDszMW1bICBGQUlMRUQgIF0gG1ttTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0Fu
ZEFzc2VydGlvbnMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5PYmV5
c1Njb3BlcwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5M
b29wCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJblN1YnJv
dXRpbmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZU5lc3Rl
ZAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQK
LRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0NvbmN1cnJlbnRs
eQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1
Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0
YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi0b
WzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJ
blNldFVwCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZh
aWx1cmVJblNldFVwCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3Qu
VGhpc1Nob3VsZEZhaWwKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVz
dC5UaGlzU2hvdWxkRmFpbFRvbwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENh
c2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFp
bAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0
X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwKLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1Rf
RkFuZFNob3VsZEZhaWwKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWls
dXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlM
RUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b05v
bmZhdGFsRmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWls
dXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJu
cwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxz
V2hlblN0YXRlbWVudFRocm93cwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZQotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxG
YWlsdXJlcwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZh
aWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1tt
RXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi0bWzA7MzFt
WyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50
VGhyb3dzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVR5cGVkVGVzdC8wLkZhaWx1cmUsIHdoZXJl
IFR5cGVQYXJhbSA9IGludAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRl
c3RQLzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgotG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZSwgd2hlcmUgVHlwZVBh
cmFtID0gdW5zaWduZWQgaW50Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVU
ZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWls
dXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhw
ZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0bWzA7MzFtWyAg
RkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxs
VGhyZWFkcwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNU
ZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWls
dXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21TY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3QuSW50ZXJjZXB0T25s
eUN1cnJlbnRUaHJlYWQKLQotMzkgRkFJTEVEIFRFU1RTCi0bWzA7MzNtICBZT1UgSEFWRSAxIERJ
U0FCTEVEIFRFU1QKLQotG1ttTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gRmF0YWxGYWlsdXJl
VGVzdC4qOkxvZ2dpbmdUZXN0LioKLVs9PT09PT09PT09XSBSdW5uaW5nIDQgdGVzdHMgZnJvbSAy
IHRlc3QgY2FzZXMuCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVw
LgotWy0tLS0tLS0tLS1dIDMgdGVzdHMgZnJvbSBGYXRhbEZhaWx1cmVUZXN0Ci1bIFJVTiAgICAg
IF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLShleHBlY3Rpbmcg
YSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBG
YWlsdXJlCi1WYWx1ZSBvZjogeAotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1bICBGQUlMRUQg
IF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUgKD8gbXMpCi1bIFJV
TiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUK
LShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogeAotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAx
Ci1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJv
dXRpbmUgKD8gbXMpCi1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1
cmVJblN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIG9uIGZhbHNlKQotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiBmYWxzZQotICBBY3R1YWw6IGZhbHNl
Ci1FeHBlY3RlZDogdHJ1ZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxG
YWlsdXJlSW5TdWJyb3V0aW5lICg/IG1zKQotWy0tLS0tLS0tLS1dIDMgdGVzdHMgZnJvbSBGYXRh
bEZhaWx1cmVUZXN0ICg/IG1zIHRvdGFsKQotCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTG9n
Z2luZ1Rlc3QKLVsgUlVOICAgICAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5k
QXNzZXJ0aW9ucwotKGV4cGVjdGluZyAyIGZhaWx1cmVzIG9uICgzKSA+PSAoYVtpXSkpCi1pID09
IDAKLWkgPT0gMQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAo
MykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgOQotaSA9PSAyCi1pID09IDMKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAz
IHZzIDYKLVsgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNz
ZXJ0aW9ucyAoPyBtcykKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBMb2dnaW5nVGVzdCAoPyBt
cyB0b3RhbCkKLQotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93
bgotWz09PT09PT09PT1dIDQgdGVzdHMgZnJvbSAyIHRlc3QgY2FzZXMgcmFuLiAoPyBtcyB0b3Rh
bCkKLVsgIFBBU1NFRCAgXSAwIHRlc3RzLgotWyAgRkFJTEVEICBdIDQgdGVzdHMsIGxpc3RlZCBi
ZWxvdzoKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91
dGluZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRT
dWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJ
blN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5n
QW5kQXNzZXJ0aW9ucwotCi0gNCBGQUlMRUQgVEVTVFMKLSAgWU9VIEhBVkUgMSBESVNBQkxFRCBU
RVNUCi0KLU5vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9ICpESVNBQkxFRF8qCi1bPT09PT09PT09
PV0gUnVubmluZyAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZS4KLVstLS0tLS0tLS0tXSBHbG9iYWwg
dGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRGlzYWJs
ZWRUZXN0c1dhcm5pbmdUZXN0Ci1bIFJVTiAgICAgIF0gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0
LkRJU0FCTEVEX0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZ1N1cHByZXNzZXNXYXJuaW5nCi1bICAg
ICAgIE9LIF0gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0LkRJU0FCTEVEX0Fsc29SdW5EaXNhYmxl
ZFRlc3RzRmxhZ1N1cHByZXNzZXNXYXJuaW5nCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52
aXJvbm1lbnQgdGVhci1kb3duCi1bPT09PT09PT09PV0gMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2Ug
cmFuLgotWyAgUEFTU0VEICBdIDEgdGVzdC4KLU5vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9IFBh
c3NpbmdUZXN0LioKLU5vdGU6IFRoaXMgaXMgdGVzdCBzaGFyZCAxIG9mIDIuCi1bPT09PT09PT09
PV0gUnVubmluZyAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZS4KLVstLS0tLS0tLS0tXSBHbG9iYWwg
dGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gUGFzc2lu
Z1Rlc3QKLVsgUlVOICAgICAgXSBQYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDIKLVsgICAgICAgT0sg
XSBQYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDIKLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZp
cm9ubWVudCB0ZWFyLWRvd24KLVs9PT09PT09PT09XSAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZSBy
YW4uCi1bICBQQVNTRUQgIF0gMSB0ZXN0LgotCi0gIFlPVSBIQVZFIDEgRElTQUJMRUQgVEVTVAot
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90
ZXN0X2dvbGRlbl93aW4udHh0IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9v
dXRwdXRfdGVzdF9nb2xkZW5fd2luLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MzEzYzNhYWZjMzFmNWYxMDA1Yzc3NDI4M2UwMGJkYjA5ZGU4MWY2OS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl93aW4udHh0CisrKyAvZGV2L251bGwKQEAgLTEs
NjA1ICswLDAgQEAKLVRoZSBub24tdGVzdCBwYXJ0IG9mIHRoZSBjb2RlIGlzIGV4cGVjdGVkIHRv
IGhhdmUgMiBmYWlsdXJlcy4KLQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1
ZSBvZjogZmFsc2UKLSAgQWN0dWFsOiBmYWxzZQotRXhwZWN0ZWQ6IHRydWUKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IDMKLUV4cGVjdGVkOiAyCi1bPT09PT09PT09
PV0gUnVubmluZyA2MSB0ZXN0cyBmcm9tIDI3IHRlc3QgY2FzZXMuCi1bLS0tLS0tLS0tLV0gR2xv
YmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotRm9vRW52aXJvbm1lbnQ6OlNldFVwKCkgY2Fs
bGVkLgotQmFyRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLgotWy0tLS0tLS0tLS1dIDEgdGVz
dCBmcm9tIEFEZWF0aFRlc3QKLVsgUlVOICAgICAgXSBBRGVhdGhUZXN0LlNob3VsZFJ1bkZpcnN0
Ci1bICAgICAgIE9LIF0gQURlYXRoVGVzdC5TaG91bGRSdW5GaXJzdAotWy0tLS0tLS0tLS1dIDEg
dGVzdCBmcm9tIEFUeXBlZERlYXRoVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLVsgUlVO
ICAgICAgXSBBVHlwZWREZWF0aFRlc3QvMC5TaG91bGRSdW5GaXJzdAotWyAgICAgICBPSyBdIEFU
eXBlZERlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20g
QVR5cGVkRGVhdGhUZXN0LzEsIHdoZXJlIFR5cGVQYXJhbSA9IGRvdWJsZQotWyBSVU4gICAgICBd
IEFUeXBlZERlYXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0Ci1bICAgICAgIE9LIF0gQVR5cGVkRGVh
dGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBNeS9BVHlw
ZVBhcmFtRGVhdGhUZXN0LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGludAotWyBSVU4gICAgICBdIE15
L0FUeXBlUGFyYW1EZWF0aFRlc3QvMC5TaG91bGRSdW5GaXJzdAotWyAgICAgICBPSyBdIE15L0FU
eXBlUGFyYW1EZWF0aFRlc3QvMC5TaG91bGRSdW5GaXJzdAotWy0tLS0tLS0tLS1dIDEgdGVzdCBm
cm9tIE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMSwgd2hlcmUgVHlwZVBhcmFtID0gZG91YmxlCi1b
IFJVTiAgICAgIF0gTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0Ci1bICAg
ICAgIE9LIF0gTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0Ci1bLS0tLS0t
LS0tLV0gMiB0ZXN0cyBmcm9tIFBhc3NpbmdUZXN0Ci1bIFJVTiAgICAgIF0gUGFzc2luZ1Rlc3Qu
UGFzc2luZ1Rlc3QxCi1bICAgICAgIE9LIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QxCi1bIFJV
TiAgICAgIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi1bICAgICAgIE9LIF0gUGFzc2luZ1Rl
c3QuUGFzc2luZ1Rlc3QyCi1bLS0tLS0tLS0tLV0gMyB0ZXN0cyBmcm9tIEZhdGFsRmFpbHVyZVRl
c3QKLVsgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGlu
ZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogeAotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAx
Ci1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUK
LVsgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91
dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogeAotICBBY3R1YWw6IDIKLUV4cGVjdGVk
OiAxCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1
YnJvdXRpbmUKLVsgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUlu
U3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgb24gZmFsc2UpCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBmYWxzZQotICBBY3R1YWw6IGZhbHNlCi1FeHBl
Y3RlZDogdHJ1ZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJl
SW5TdWJyb3V0aW5lCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTG9nZ2luZ1Rlc3QKLVsgUlVO
ICAgICAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotKGV4
cGVjdGluZyAyIGZhaWx1cmVzIG9uICgzKSA+PSAoYVtpXSkpCi1pID09IDAKLWkgPT0gMQotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBFeHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0
dWFsOiAzIHZzIDkKLWkgPT0gMgotaSA9PSAzCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJy
b3I6IEV4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgNgotWyAgRkFJTEVEICBd
IExvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCi1bLS0tLS0tLS0t
LV0gNSB0ZXN0cyBmcm9tIFNDT1BFRF9UUkFDRVRlc3QKLVsgUlVOICAgICAgXSBTQ09QRURfVFJB
Q0VUZXN0Lk9iZXlzU2NvcGVzCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91
bGRuJ3QgaGF2ZSBhIHRyYWNlLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWls
ZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBoYXZlIGEgdHJhY2UuCi1H
b29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBFeHBlY3RlZCB0cmFj
ZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLVRoaXMgZmFpbHVyZSBp
cyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuCi1bICBGQUlMRUQgIF0gU0NP
UEVEX1RSQUNFVGVzdC5PYmV5c1Njb3BlcwotWyBSVU4gICAgICBdIFNDT1BFRF9UUkFDRVRlc3Qu
V29ya3NJbkxvb3AKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IGVycm9yOiBWYWx1ZSBvZjogbgotICBBY3R1YWw6IDEKLUV4cGVjdGVkOiAyCi1Hb29nbGUgVGVz
dCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBpID0gMQotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogbgotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1H
b29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBpID0gMgotWyAgRkFJ
TEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuV29ya3NJbkxvb3AKLVsgUlVOICAgICAgXSBTQ09QRURf
VFJBQ0VUZXN0LldvcmtzSW5TdWJyb3V0aW5lCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAxCi1FeHBlY3Rl
ZDogMgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogbiA9IDEK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAy
Ci1FeHBlY3RlZDogMQotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogbiA9IDIKLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJyb3V0aW5l
Ci1bIFJVTiAgICAgIF0gU0NPUEVEX1RSQUNFVGVzdC5DYW5CZU5lc3RlZAotKGV4cGVjdGVkIHRv
IGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBuCi0gIEFj
dHVhbDogMgotRXhwZWN0ZWQ6IDEKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IG4gPSAyCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogCi1bICBGQUlMRUQgIF0g
U0NPUEVEX1RSQUNFVGVzdC5DYW5CZU5lc3RlZAotWyBSVU4gICAgICBdIFNDT1BFRF9UUkFDRVRl
c3QuQ2FuQmVSZXBlYXRlZAotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogZXJyb3I6IEZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxk
IGNvbnRhaW4gdHJhY2UgcG9pbnQgQS4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1U
aGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBB
IGFuZCBCLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJv
cjogRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0
cmFjZSBwb2ludCBBLCBCLCBhbmQgQy4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBCCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogQQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLVRo
aXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEs
IEIsIGFuZCBELgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RAotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEIKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBB
Ci1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5DYW5CZVJlcGVhdGVkCi1bLS0tLS0tLS0t
LV0gMSB0ZXN0IGZyb20gTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0Ci1b
IFJVTiAgICAgIF0gTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1
cmVJbkNvbnN0cnVjdG9yCi0oZXhwZWN0aW5nIDUgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3Qg
Zml4dHVyZSBjJ3Rvci4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1F
eHBlY3RlZCBmYWlsdXJlICMyLCBpbiBTZXRVcCgpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGJvZHkuCi1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAj
NCwgaW4gVGVhckRvd24uCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAot
RXhwZWN0ZWQgZmFpbHVyZSAjNSwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxF
RCAgXSBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29u
c3RydWN0b3IKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBGYXRhbEZhaWx1cmVJbkZpeHR1cmVD
b25zdHJ1Y3RvclRlc3QKLVsgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1
Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKLShleHBlY3RpbmcgMiBmYWlsdXJlcykKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMx
LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGMndG9yLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVy
cm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0
b3IuCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZh
aWx1cmVJbkNvbnN0cnVjdG9yCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTm9uRmF0YWxGYWls
dXJlSW5TZXRVcFRlc3QKLVsgUlVOICAgICAgXSBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5G
YWlsdXJlSW5TZXRVcAotKGV4cGVjdGluZyA0IGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCkuCi1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAj
MiwgaW4gdGhlIHRlc3QgZnVuY3Rpb24uCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6
IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICM0LCBpbiB0aGUg
dGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBU
ZXN0LkZhaWx1cmVJblNldFVwCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRmF0YWxGYWlsdXJl
SW5TZXRVcFRlc3QKLVsgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJl
SW5TZXRVcAotKGV4cGVjdGluZyAzIGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCkuCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4g
VGVhckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBl
Y3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBd
IEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi1bLS0tLS0tLS0tLV0gMSB0
ZXN0IGZyb20gRXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3QKLVsgUlVOICAgICAgXSBFeGNlcHRp
b25JbkZpeHR1cmVDdG9yVGVzdC5FeGNlcHRpb25JbkZpeHR1cmVDdG9yCi0oZXhwZWN0aW5nIGEg
ZmFpbHVyZSBvbiB0aHJvd24gZXhjZXB0aW9uIGluIHRoZSB0ZXN0IGZpeHR1cmUncyBjb25zdHJ1
Y3RvcikKLXVua25vd24gZmlsZTogZXJyb3I6IEV4Y2VwdGlvbiB0aHJvd24gd2l0aCBjb2RlIDB4
YzAwMDAwMDUgaW4gdGhlIHRlc3QgZml4dHVyZSdzIGNvbnN0cnVjdG9yLgotWy0tLS0tLS0tLS1d
IDEgdGVzdCBmcm9tIEV4Y2VwdGlvbkluU2V0VXBUZXN0Ci1bIFJVTiAgICAgIF0gRXhjZXB0aW9u
SW5TZXRVcFRlc3QuRXhjZXB0aW9uSW5TZXRVcAotKGV4cGVjdGluZyAzIGZhaWx1cmVzKQotdW5r
bm93biBmaWxlOiBlcnJvcjogRXhjZXB0aW9uIHRocm93biB3aXRoIGNvZGUgMHhjMDAwMDAwNSBp
biBTZXRVcCgpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVj
dGVkIGZhaWx1cmUgIzIsIGluIFRlYXJEb3duKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
ZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBk
J3Rvci4KLVsgIEZBSUxFRCAgXSBFeGNlcHRpb25JblNldFVwVGVzdC5FeGNlcHRpb25JblNldFVw
Ci1bLS0tLS0tLS0tLV0gMiB0ZXN0cyBmcm9tIEV4Y2VwdGlvbkluVGVzdEZ1bmN0aW9uVGVzdAot
WyBSVU4gICAgICBdIEV4Y2VwdGlvbkluVGVzdEZ1bmN0aW9uVGVzdC5TRUgKLShleHBlY3Rpbmcg
MyBmYWlsdXJlcykKLXVua25vd24gZmlsZTogZXJyb3I6IEV4Y2VwdGlvbiB0aHJvd24gd2l0aCBj
b2RlIDB4YzAwMDAwMDUgaW4gdGhlIHRlc3QgYm9keS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLgotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMs
IGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5UZXN0
RnVuY3Rpb25UZXN0LlNFSAotWyBSVU4gICAgICBdIEV4Y2VwdGlvbkluVGVzdEZ1bmN0aW9uVGVz
dC5DcHBFeGNlcHRpb24KLXVua25vd24gZmlsZTogZXJyb3I6IEV4Y2VwdGlvbiB0aHJvd24gd2l0
aCBjb2RlIDB4ZTA2ZDczNjMgaW4gdGhlIHRlc3QgYm9keS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUg
IzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5U
ZXN0RnVuY3Rpb25UZXN0LkNwcEV4Y2VwdGlvbgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIEV4
Y2VwdGlvbkluVGVhckRvd25UZXN0Ci1bIFJVTiAgICAgIF0gRXhjZXB0aW9uSW5UZWFyRG93blRl
c3QuRXhjZXB0aW9uSW5UZWFyRG93bgotKGV4cGVjdGluZyAyIGZhaWx1cmVzKQotdW5rbm93biBm
aWxlOiBlcnJvcjogRXhjZXB0aW9uIHRocm93biB3aXRoIGNvZGUgMHhlMDZkNzM2MyBpbiBUZWFy
RG93bigpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVk
IGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi1bICBGQUlMRUQgIF0gRXhj
ZXB0aW9uSW5UZWFyRG93blRlc3QuRXhjZXB0aW9uSW5UZWFyRG93bgotWy0tLS0tLS0tLS1dIDQg
dGVzdHMgZnJvbSBNaXhlZFVwVGVzdENhc2VUZXN0Ci1bIFJVTiAgICAgIF0gTWl4ZWRVcFRlc3RD
YXNlVGVzdC5GaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vCi1bICAgICAgIE9LIF0gTWl4ZWRVcFRl
c3RDYXNlVGVzdC5GaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vCi1bIFJVTiAgICAgIF0gTWl4ZWRV
cFRlc3RDYXNlVGVzdC5TZWNvbmRUZXN0RnJvbU5hbWVzcGFjZUZvbwotWyAgICAgICBPSyBdIE1p
eGVkVXBUZXN0Q2FzZVRlc3QuU2Vjb25kVGVzdEZyb21OYW1lc3BhY2VGb28KLVsgUlVOICAgICAg
XSBNaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsCi1ndGVzdC5jYzojOiBlcnJvcjog
RmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1l
IHRlc3QgZml4dHVyZQotY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RD
YXNlVGVzdCwKLXlvdSBkZWZpbmVkIHRlc3QgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbyBhbmQg
dGVzdCBUaGlzU2hvdWxkRmFpbAotdXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xh
c3Nlcy4gIFRoaXMgY2FuIGhhcHBlbiBpZgotdGhlIHR3byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZl
cmVudCBuYW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCi11bml0cyBhbmQgaGF2ZSB0aGUgc2FtZSBu
YW1lLiAgWW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25lCi1vZiB0aGUgY2xhc3NlcyB0byBw
dXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMuCi1bICBGQUlMRUQgIF0gTWl4
ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbAotWyBSVU4gICAgICBdIE1peGVkVXBUZXN0
Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWxUb28KLWd0ZXN0LmNjOiM6IGVycm9yOiBGYWlsZWQKLUFs
bCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0
dXJlCi1jbGFzcy4gIEhvd2V2ZXIsIGluIHRlc3QgY2FzZSBNaXhlZFVwVGVzdENhc2VUZXN0LAot
eW91IGRlZmluZWQgdGVzdCBGaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vIGFuZCB0ZXN0IFRoaXNT
aG91bGRGYWlsVG9vCi11c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAg
VGhpcyBjYW4gaGFwcGVuIGlmCi10aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5h
bWVzcGFjZXMgb3IgdHJhbnNsYXRpb24KLXVuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZ
b3Ugc2hvdWxkIHByb2JhYmx5IHJlbmFtZSBvbmUKLW9mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUg
dGVzdHMgaW50byBkaWZmZXJlbnQgdGVzdCBjYXNlcy4KLVsgIEZBSUxFRCAgXSBNaXhlZFVwVGVz
dENhc2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCi1bLS0tLS0tLS0tLV0gMiB0ZXN0cyBmcm9tIE1p
eGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0Ci1bIFJVTiAgICAgIF0gTWl4ZWRVcFRl
c3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3Vs
ZEZhaWwKLVsgICAgICAgT0sgXSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5U
aGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotWyBSVU4gICAgICBdIE1peGVkVXBU
ZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91
bGRGYWlsCi1ndGVzdC5jYzojOiBlcnJvcjogRmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUg
dGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3MuICBIb3dldmVy
LCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCi15b3Ug
ZGVmaW5lZCB0ZXN0IFRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsIGFuZCB0ZXN0
IFRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCi11c2luZyB0d28gZGlmZmVyZW50
IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAgVGhpcyBjYW4gaGFwcGVuIGlmCi10aGUgdHdvIGNsYXNz
ZXMgYXJlIGZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMgb3IgdHJhbnNsYXRpb24KLXVuaXRzIGFu
ZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZb3Ugc2hvdWxkIHByb2JhYmx5IHJlbmFtZSBvbmUKLW9m
IHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50byBkaWZmZXJlbnQgdGVzdCBjYXNlcy4K
LVsgIEZBSUxFRCAgXSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNv
bmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBU
RVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UKLVsgUlVOICAgICAgXSBURVNUX0Zf
YmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GCi1bICAgICAg
IE9LIF0gVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RF
U1RfRgotWyBSVU4gICAgICBdIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5E
ZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogZXJyb3I6IEZhaWxlZAot
QWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZp
eHR1cmUKLWNsYXNzLCBzbyBtaXhpbmcgVEVTVF9GIGFuZCBURVNUIGluIHRoZSBzYW1lIHRlc3Qg
Y2FzZSBpcwotaWxsZWdhbC4gIEluIHRlc3QgY2FzZSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2Ft
ZV90ZXN0X2Nhc2UsCi10ZXN0IERlZmluZWRVc2luZ1RFU1RfRiBpcyBkZWZpbmVkIHVzaW5nIFRF
U1RfRiBidXQKLXRlc3QgRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwgaXMgZGVmaW5lZCB1
c2luZyBURVNULiAgWW91IHByb2JhYmx5Ci13YW50IHRvIGNoYW5nZSB0aGUgVEVTVCB0byBURVNU
X0Ygb3IgbW92ZSBpdCB0byBhbm90aGVyIHRlc3QKLWNhc2UuCi1bICBGQUlMRUQgIF0gVEVTVF9G
X2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRG
YWlsCi1bLS0tLS0tLS0tLV0gMiB0ZXN0cyBmcm9tIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1l
X3Rlc3RfY2FzZQotWyBSVU4gICAgICBdIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3Rf
Y2FzZS5EZWZpbmVkVXNpbmdURVNUCi1bICAgICAgIE9LIF0gVEVTVF9iZWZvcmVfVEVTVF9GX2lu
X3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1QKLVsgUlVOICAgICAgXSBURVNUX2JlZm9y
ZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFp
bAotZ3Rlc3QuY2M6IzogZXJyb3I6IEZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3Qg
Y2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLCBzbyBtaXhpbmcgVEVT
VF9GIGFuZCBURVNUIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBpcwotaWxsZWdhbC4gIEluIHRlc3Qg
Y2FzZSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UsCi10ZXN0IERlZmluZWRV
c2luZ1RFU1RfRkFuZFNob3VsZEZhaWwgaXMgZGVmaW5lZCB1c2luZyBURVNUX0YgYnV0Ci10ZXN0
IERlZmluZWRVc2luZ1RFU1QgaXMgZGVmaW5lZCB1c2luZyBURVNULiAgWW91IHByb2JhYmx5Ci13
YW50IHRvIGNoYW5nZSB0aGUgVEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0byBhbm90aGVyIHRl
c3QKLWNhc2UuCi1bICBGQUlMRUQgIF0gVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9j
YXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwKLVstLS0tLS0tLS0tXSA4IHRlc3Rz
IGZyb20gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdAotWyBSVU4gICAgICBdIEV4cGVjdE5vbmZh
dGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCi1bICAgICAgIE9LIF0g
RXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLVsg
UlVOICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsVmFy
aWFibGVzCi1bICAgICAgIE9LIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVu
Y2VMb2NhbFZhcmlhYmxlcwotWyBSVU4gICAgICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qu
U3VjY2VlZHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotWyAgICAgICBPSyBdIEV4cGVj
dE5vbmZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVy
ZQotWyBSVU4gICAgICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJ
c05vTm9uZmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVy
cm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMK
LVsgIEZBSUxFRCAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNO
b05vbmZhdGFsRmFpbHVyZQotWyBSVU4gICAgICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qu
RmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1cmVzCi0oZXhwZWN0aW5nIGEgZmFpbHVy
ZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBB
Y3R1YWw6IDIgZmFpbHVyZXMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFp
bHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMS4KLQotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24t
ZmF0YWwgZmFpbHVyZSAyLgotCi1bICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVz
dC5GYWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKLVsgUlVOICAgICAgXSBFeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLShl
eHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5vbi1m
YXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBm
YWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQgIF0g
RXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJl
Ci1bIFJVTiAgICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1l
bnRSZXR1cm5zCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBl
Y3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsgIEZBSUxF
RCAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMK
LVsgUlVOICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVu
dFRocm93cwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0
ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi1bICBGQUlMRUQg
IF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLVst
LS0tLS0tLS0tXSA4IHRlc3RzIGZyb20gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdAotWyBSVU4gICAg
ICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCi1b
ICAgICAgIE9LIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJp
YWJsZXMKLVsgUlVOICAgICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxv
Y2FsU3RhdGljVmFyaWFibGVzCi1bICAgICAgIE9LIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5D
YW5SZWZlcmVuY2VMb2NhbFN0YXRpY1ZhcmlhYmxlcwotWyBSVU4gICAgICBdIEV4cGVjdEZhdGFs
RmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotWyAgICAgICBP
SyBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09uZUZhdGFsRmFp
bHVyZQotWyBSVU4gICAgICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJ
c05vRmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9y
OiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotWyAgRkFJ
TEVEICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vRmF0YWxGYWls
dXJlCi1bIFJVTiAgICAgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFy
ZVR3b0ZhdGFsRmFpbHVyZXMKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJy
b3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAyIGZhaWx1cmVzCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0
YWwgZmFpbHVyZS4KLQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1G
YWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRh
bEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcwotWyBSVU4gICAg
ICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFp
bHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6
IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9u
LWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi1b
ICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9u
ZmF0YWxGYWlsdXJlCi1bIFJVTiAgICAgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1do
ZW5TdGF0ZW1lbnRSZXR1cm5zCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVy
cm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotWyAg
RkFJTEVEICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJu
cwotWyBSVU4gICAgICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50
VGhyb3dzCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3Rl
ZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotWyAgRkFJTEVEICBdIEV4
cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi1bLS0tLS0tLS0t
LV0gMiB0ZXN0cyBmcm9tIFR5cGVkVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLVsgUlVO
ICAgICAgXSBUeXBlZFRlc3QvMC5TdWNjZXNzCi1bICAgICAgIE9LIF0gVHlwZWRUZXN0LzAuU3Vj
Y2VzcwotWyBSVU4gICAgICBdIFR5cGVkVGVzdC8wLkZhaWx1cmUKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogMAotRXhwZWN0
ZWQ6IDEKLUV4cGVjdGVkIGZhaWx1cmUKLVsgIEZBSUxFRCAgXSBUeXBlZFRlc3QvMC5GYWlsdXJl
Ci1bLS0tLS0tLS0tLV0gMiB0ZXN0cyBmcm9tIFVuc2lnbmVkL1R5cGVkVGVzdFAvMCwgd2hlcmUg
VHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgotWyBSVU4gICAgICBdIFVuc2lnbmVkL1R5cGVkVGVz
dFAvMC5TdWNjZXNzCi1bICAgICAgIE9LIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8wLlN1Y2Nlc3MK
LVsgUlVOICAgICAgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZQotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogVHlwZVBhcmFtKCkKLSAgQWN0dWFsOiBcMAot
RXhwZWN0ZWQ6IDFVCi1XaGljaCBpczogMQotRXhwZWN0ZWQgZmFpbHVyZQotWyAgRkFJTEVEICBd
IFVuc2lnbmVkL1R5cGVkVGVzdFAvMC5GYWlsdXJlCi1bLS0tLS0tLS0tLV0gMiB0ZXN0cyBmcm9t
IFVuc2lnbmVkL1R5cGVkVGVzdFAvMSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50Ci1b
IFJVTiAgICAgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1Y2Nlc3MKLVsgICAgICAgT0sgXSBV
bnNpZ25lZC9UeXBlZFRlc3RQLzEuU3VjY2VzcwotWyBSVU4gICAgICBdIFVuc2lnbmVkL1R5cGVk
VGVzdFAvMS5GYWlsdXJlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9m
OiBUeXBlUGFyYW0oKQotICBBY3R1YWw6IDAKLUV4cGVjdGVkOiAxVQotV2hpY2ggaXM6IDEKLUV4
cGVjdGVkIGZhaWx1cmUKLVsgIEZBSUxFRCAgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVy
ZQotWy0tLS0tLS0tLS1dIDQgdGVzdHMgZnJvbSBFeHBlY3RGYWlsdXJlVGVzdAotWyBSVU4gICAg
ICBdIEV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyAxIGZh
aWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBB
Y3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2NlZWRlZAotCi0o
ZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRh
bCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwg
ZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLShleHBlY3Rp
bmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1
cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBmYXRhbCBmYWlsdXJlIGV4cGVjdGVkLiIKLSAgQWN0
dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4
cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLVsgIEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5F
eHBlY3RGYXRhbEZhaWx1cmUKLVsgUlVOICAgICAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RO
b25GYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6
IEV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBTdWNjZXNzOgotU3VjY2VlZGVkCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQot
Z3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVh
bDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBl
Y3RlZCBmYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6
IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90
aGVyIG5vbi1mYXRhbCBmYWlsdXJlLiIKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVy
ZS4KLQotWyAgRkFJTEVEICBdIEV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVy
ZQotWyBSVU4gICAgICBdIEV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxs
VGhyZWFkcwotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0
ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
U3VjY2VzczoKLVN1Y2NlZWRlZAotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6
IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZh
dGFsIGZhaWx1cmUuCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6
IEV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBmYXRhbCBm
YWlsdXJlIGV4cGVjdGVkLiIKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZh
dGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLVsgIEZBSUxF
RCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLVsg
UlVOICAgICAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRo
cmVhZHMKLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVk
OiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBTdWNjZXNzOgotU3VjY2VlZGVkCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6
IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRh
bCBmYWlsdXJlLgotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBF
eHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIG5vbi1m
YXRhbCBmYWlsdXJlLiIKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1m
YXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQotWyAg
RkFJTEVEICBdIEV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhy
ZWFkcwotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgotQmFy
RW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotRm9vRW52aXJvbm1l
bnQ6OlRlYXJEb3duKCkgY2FsbGVkLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBG
YWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi1bPT09PT09PT09PV0gNjEgdGVzdHMgZnJv
bSAyNyB0ZXN0IGNhc2VzIHJhbi4KLVsgIFBBU1NFRCAgXSAyMSB0ZXN0cy4KLVsgIEZBSUxFRCAg
XSA0MCB0ZXN0cywgbGlzdGVkIGJlbG93OgotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3Qu
RmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5G
YXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVU
ZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotWyAgRkFJTEVEICBdIExvZ2dpbmdUZXN0
LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RS
QUNFVGVzdC5PYmV5c1Njb3BlcwotWyAgRkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuV29ya3NJ
bkxvb3AKLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJyb3V0aW5lCi1b
ICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5DYW5CZU5lc3RlZAotWyAgRkFJTEVEICBdIFND
T1BFRF9UUkFDRVRlc3QuQ2FuQmVSZXBlYXRlZAotWyAgRkFJTEVEICBdIE5vbkZhdGFsRmFpbHVy
ZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotWyAgRkFJTEVE
ICBdIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1
Y3RvcgotWyAgRkFJTEVEICBdIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNl
dFVwCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAK
LVsgIEZBSUxFRCAgXSBFeGNlcHRpb25JbkZpeHR1cmVDdG9yVGVzdC5FeGNlcHRpb25JbkZpeHR1
cmVDdG9yCi1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5TZXRVcFRlc3QuRXhjZXB0aW9uSW5TZXRV
cAotWyAgRkFJTEVEICBdIEV4Y2VwdGlvbkluVGVzdEZ1bmN0aW9uVGVzdC5TRUgKLVsgIEZBSUxF
RCAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QuQ3BwRXhjZXB0aW9uCi1bICBGQUlMRUQg
IF0gRXhjZXB0aW9uSW5UZWFyRG93blRlc3QuRXhjZXB0aW9uSW5UZWFyRG93bgotWyAgRkFJTEVE
ICBdIE1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwKLVsgIEZBSUxFRCAgXSBNaXhl
ZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCi1bICBGQUlMRUQgIF0gTWl4ZWRVcFRl
c3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3Vs
ZEZhaWwKLVsgIEZBSUxFRCAgXSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2Uu
RGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwKLVsgIEZBSUxFRCAgXSBURVNUX2JlZm9yZV9U
RVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbAot
WyAgRkFJTEVEICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05v
Tm9uZmF0YWxGYWlsdXJlCi1bICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5G
YWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBFeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLVsgIEZB
SUxFRCAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVy
bnMKLVsgIEZBSUxFRCAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRl
bWVudFRocm93cwotWyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVu
VGhlcmVJc05vRmF0YWxGYWlsdXJlCi1bICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVz
dC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBFeHBlY3RG
YXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKLVsgIEZB
SUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMK
LVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRo
cm93cwotWyAgRkFJTEVEICBdIFR5cGVkVGVzdC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9
IGludAotWyAgRkFJTEVEICBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMC5GYWlsdXJlLCB3aGVyZSBU
eXBlUGFyYW0gPSB1bnNpZ25lZCBjaGFyCi1bICBGQUlMRUQgIF0gVW5zaWduZWQvVHlwZWRUZXN0
UC8xLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAotWyAgRkFJTEVEICBd
IEV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVj
dEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVjdEZh
aWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotWyAgRkFJTEVEICBdIEV4
cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotCi00MCBG
QUlMRUQgVEVTVFMKLSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNUCi0KLU5vdGU6IEdvb2dsZSBU
ZXN0IGZpbHRlciA9IEZhdGFsRmFpbHVyZVRlc3QuKjpMb2dnaW5nVGVzdC4qCi1bPT09PT09PT09
PV0gUnVubmluZyA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2VzLgotWy0tLS0tLS0tLS1dIEdsb2Jh
bCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KLVstLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0
YWxGYWlsdXJlVGVzdAotWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJl
SW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiB4Ci0gIEFjdHVhbDogMgot
RXhwZWN0ZWQ6IDEKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUlu
U3Vicm91dGluZSAoPyBtcykKLVsgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFp
bHVyZUluTmVzdGVkU3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3Vs
ZCBiZSAxKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogeAotICBB
Y3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRh
bEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUgKD8gbXMpCi1bIFJVTiAgICAgIF0gRmF0YWxGYWls
dXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJl
IG9uIGZhbHNlKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogZmFs
c2UKLSAgQWN0dWFsOiBmYWxzZQotRXhwZWN0ZWQ6IHRydWUKLVsgIEZBSUxFRCAgXSBGYXRhbEZh
aWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZSAoPyBtcykKLVstLS0tLS0tLS0t
XSAzIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdCAoPyBtcyB0b3RhbCkKLQotWy0tLS0tLS0t
LS1dIDEgdGVzdCBmcm9tIExvZ2dpbmdUZXN0Ci1bIFJVTiAgICAgIF0gTG9nZ2luZ1Rlc3QuSW50
ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLShleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAo
MykgPj0gKGFbaV0pKQotaSA9PSAwCi1pID09IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBl
cnJvcjogRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA5Ci1pID09IDIKLWkg
PT0gMwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBFeHBlY3RlZDogKDMpID49IChh
W2ldKSwgYWN0dWFsOiAzIHZzIDYKLVsgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZp
bmdMb2dnaW5nQW5kQXNzZXJ0aW9ucyAoPyBtcykKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBM
b2dnaW5nVGVzdCAoPyBtcyB0b3RhbCkKLQotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmly
b25tZW50IHRlYXItZG93bgotWz09PT09PT09PT1dIDQgdGVzdHMgZnJvbSAyIHRlc3QgY2FzZXMg
cmFuLiAoPyBtcyB0b3RhbCkKLVsgIFBBU1NFRCAgXSAwIHRlc3RzLgotWyAgRkFJTEVEICBdIDQg
dGVzdHMsIGxpc3RlZCBiZWxvdzoKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFs
RmFpbHVyZUluU3Vicm91dGluZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxG
YWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5O
b25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRl
cmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotCi0gNCBGQUlMRUQgVEVTVFMKLSAgWU9VIEhB
VkUgMSBESVNBQkxFRCBURVNUCi0KLU5vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9ICpESVNBQkxF
RF8qCi1bPT09PT09PT09PV0gUnVubmluZyAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZS4KLVstLS0t
LS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCi1bLS0tLS0tLS0tLV0gMSB0
ZXN0IGZyb20gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0Ci1bIFJVTiAgICAgIF0gRGlzYWJsZWRU
ZXN0c1dhcm5pbmdUZXN0LkRJU0FCTEVEX0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZ1N1cHByZXNz
ZXNXYXJuaW5nCi1bICAgICAgIE9LIF0gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0LkRJU0FCTEVE
X0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZ1N1cHByZXNzZXNXYXJuaW5nCi1bLS0tLS0tLS0tLV0g
R2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCi1bPT09PT09PT09PV0gMSB0ZXN0IGZy
b20gMSB0ZXN0IGNhc2UgcmFuLgotWyAgUEFTU0VEICBdIDEgdGVzdC4KLU5vdGU6IEdvb2dsZSBU
ZXN0IGZpbHRlciA9IFBhc3NpbmdUZXN0LioKLU5vdGU6IFRoaXMgaXMgdGVzdCBzaGFyZCAxIG9m
IDIuCi1bPT09PT09PT09PV0gUnVubmluZyAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZS4KLVstLS0t
LS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCi1bLS0tLS0tLS0tLV0gMSB0
ZXN0IGZyb20gUGFzc2luZ1Rlc3QKLVsgUlVOICAgICAgXSBQYXNzaW5nVGVzdC5QYXNzaW5nVGVz
dDIKLVsgICAgICAgT0sgXSBQYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDIKLVstLS0tLS0tLS0tXSBH
bG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KLVs9PT09PT09PT09XSAxIHRlc3QgZnJv
bSAxIHRlc3QgY2FzZSByYW4uCi1bICBQQVNTRUQgIF0gMSB0ZXN0LgotCi0gIFlPVSBIQVZFIDEg
RElTQUJMRUQgVEVTVAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X3ByZWRfaW1wbF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfcHJlZF9pbXBsX3VuaXR0ZXN0LmNjCmluZGV4IGU3ZWU1NGI1NmQ4NmI5ZWE1NGI3
MTYxMjU4NjlhYTI4N2QxMjZiZTcuLmI0NjZjMTUwYWVkYzQzZmRiMTAzNzNiN2E4MDJjY2JlNzc1
NzkwZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJl
ZF9pbXBsX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfcHJlZF9pbXBsX3VuaXR0ZXN0LmNjCkBAIC0yNyw3ICsyNyw3IEBACiAvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAKLS8vIFRoaXMgZmlsZSBpcyBBVVRPTUFUSUNBTExZIEdFTkVS
QVRFRCBvbiAxMC8wMi8yMDA4IGJ5IGNvbW1hbmQKKy8vIFRoaXMgZmlsZSBpcyBBVVRPTUFUSUNB
TExZIEdFTkVSQVRFRCBvbiAwMS8wMi8yMDE4IGJ5IGNvbW1hbmQKIC8vICdnZW5fZ3Rlc3RfcHJl
ZF9pbXBsLnB5IDUnLiAgRE8gTk9UIEVESVQgQlkgSEFORCEKIAogLy8gUmVncmVzc2lvbiB0ZXN0
IGZvciBndGVzdF9wcmVkX2ltcGwuaApAQCAtNDksOCArNDksOCBAQAogCiAjaW5jbHVkZSA8aW9z
dHJlYW0+CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
LXNwaS5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qt
c3BpLmgiCiAKIC8vIEEgdXNlci1kZWZpbmVkIGRhdGEgdHlwZS4KIHN0cnVjdCBCb29sIHsKQEAg
LTEwMywxMSArMTAzLDEwIEBAIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVu
Y3Rpb24xKGNvbnN0IGNoYXIqIGUxLAogICBpZiAoUHJlZEZ1bmN0aW9uMSh2MSkpCiAgICAgcmV0
dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5nOjpNZXNzYWdlIG1z
ZzsKLSAgbXNnIDw8IGUxCisgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAg
ICAgIDw8IGUxCiAgICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlLCBidXQgZXZh
bHVhdGVzIHRvICIKICAgICAgIDw8IHYxIDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2Vy
dGlvbkZhaWx1cmUobXNnKTsKIH0KIAogLy8gQSB1bmFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1
bmN0b3IuCkBAIC00OTQsMTEgKzQ5MywxMCBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJl
ZEZvcm1hdEZ1bmN0aW9uMihjb25zdCBjaGFyKiBlMSwKICAgaWYgKFByZWRGdW5jdGlvbjIodjEs
IHYyKSkKICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIHRlc3Rp
bmc6Ok1lc3NhZ2UgbXNnOwotICBtc2cgPDwgZTEgPDwgIiArICIgPDwgZTIKKyAgcmV0dXJuIHRl
c3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwgZTEgPDwgIiArICIgPDwgZTIKICAg
ICAgIDw8ICIgaXMgZXhwZWN0ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgog
ICAgICAgPDwgdjEgKyB2MiA8PCAiLiI7Ci0gIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWls
dXJlKG1zZyk7CiB9CiAKIC8vIEEgYmluYXJ5IHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rvci4K
QEAgLTkyNywxMSArOTI1LDEwIEBAIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0
RnVuY3Rpb24zKGNvbnN0IGNoYXIqIGUxLAogICBpZiAoUHJlZEZ1bmN0aW9uMyh2MSwgdjIsIHYz
KSkKICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIHRlc3Rpbmc6
Ok1lc3NhZ2UgbXNnOwotICBtc2cgPDwgZTEgPDwgIiArICIgPDwgZTIgPDwgIiArICIgPDwgZTMK
KyAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwgZTEgPDwgIiAr
ICIgPDwgZTIgPDwgIiArICIgPDwgZTMKICAgICAgIDw8ICIgaXMgZXhwZWN0ZWQgdG8gYmUgcG9z
aXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgogICAgICAgPDwgdjEgKyB2MiArIHYzIDw8ICIuIjsK
LSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNnKTsKIH0KIAogLy8gQSB0ZXJu
YXJ5IHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rvci4KQEAgLTE0MDIsMTEgKzEzOTksMTAgQEAg
dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRGb3JtYXRGdW5jdGlvbjQoY29uc3QgY2hhciog
ZTEsCiAgIGlmIChQcmVkRnVuY3Rpb240KHYxLCB2MiwgdjMsIHY0KSkKICAgICByZXR1cm4gdGVz
dGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIHRlc3Rpbmc6Ok1lc3NhZ2UgbXNnOwotICBt
c2cgPDwgZTEgPDwgIiArICIgPDwgZTIgPDwgIiArICIgPDwgZTMgPDwgIiArICIgPDwgZTQKKyAg
cmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwgZTEgPDwgIiArICIg
PDwgZTIgPDwgIiArICIgPDwgZTMgPDwgIiArICIgPDwgZTQKICAgICAgIDw8ICIgaXMgZXhwZWN0
ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgogICAgICAgPDwgdjEgKyB2MiAr
IHYzICsgdjQgPDwgIi4iOwotICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZShtc2cp
OwogfQogCiAvLyBBIDQtYXJ5IHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rvci4KQEAgLTE5MTks
MTEgKzE5MTUsMTAgQEAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRGb3JtYXRGdW5jdGlv
bjUoY29uc3QgY2hhciogZTEsCiAgIGlmIChQcmVkRnVuY3Rpb241KHYxLCB2MiwgdjMsIHY0LCB2
NSkpCiAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5n
OjpNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUz
IDw8ICIgKyAiIDw8IGU0IDw8ICIgKyAiIDw8IGU1CisgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRp
b25GYWlsdXJlKCkKKyAgICAgIDw8IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUzIDw8
ICIgKyAiIDw8IGU0IDw8ICIgKyAiIDw8IGU1CiAgICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJl
IHBvc2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKICAgICAgIDw8IHYxICsgdjIgKyB2MyArIHY0
ICsgdjUgPDwgIi4iOwotICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZShtc2cpOwog
fQogCiAvLyBBIDUtYXJ5IHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rvci4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJlbWF0dXJlX2V4aXRfdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJlbWF0dXJlX2V4aXRfdGVz
dC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jMWU5MzA1NmQ4YjU2MmM1OWZlYmE4Mjc4ZTIwYzI5ZGYxM2UxOTE1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9w
cmVtYXR1cmVfZXhpdF90ZXN0LmNjCkBAIC0wLDAgKzEsMTI2IEBACisvLyBDb3B5cmlnaHQgMjAx
MywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vCisvLyBUZXN0cyB0aGF0IEdvb2dsZSBU
ZXN0IG1hbmlwdWxhdGVzIHRoZSBwcmVtYXR1cmUtZXhpdC1kZXRlY3Rpb24KKy8vIGZpbGUgY29y
cmVjdGx5LgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CisKK3VzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6OlRl
c3Q7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6R2V0RW52OwordXNpbmcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OlN0YXQ7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFs
Ojpwb3NpeDo6U3RhdFN0cnVjdDsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgUHJlbWF0dXJlRXhp
dFRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICAvLyBSZXR1cm5zIHRydWUgaWZmIHRo
ZSBnaXZlbiBmaWxlIGV4aXN0cy4KKyAgc3RhdGljIGJvb2wgRmlsZUV4aXN0cyhjb25zdCBjaGFy
KiBmaWxlcGF0aCkgeworICAgIFN0YXRTdHJ1Y3Qgc3RhdDsKKyAgICByZXR1cm4gU3RhdChmaWxl
cGF0aCwgJnN0YXQpID09IDA7CisgIH0KKworIHByb3RlY3RlZDoKKyAgUHJlbWF0dXJlRXhpdFRl
c3QoKSB7CisgICAgcHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXyA9IEdldEVudigiVEVTVF9QUkVN
QVRVUkVfRVhJVF9GSUxFIik7CisKKyAgICAvLyBOb3JtYWxpemUgTlVMTCB0byAiIiBmb3IgZWFz
ZSBvZiBoYW5kbGluZy4KKyAgICBpZiAocHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXyA9PSBOVUxM
KSB7CisgICAgICBwcmVtYXR1cmVfZXhpdF9maWxlX3BhdGhfID0gIiI7CisgICAgfQorICB9CisK
KyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZSBleGlzdHMuCisg
IGJvb2wgUHJlbWF0dXJlRXhpdEZpbGVFeGlzdHMoKSBjb25zdCB7CisgICAgcmV0dXJuIEZpbGVF
eGlzdHMocHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXyk7CisgIH0KKworICBjb25zdCBjaGFyKiBw
cmVtYXR1cmVfZXhpdF9maWxlX3BhdGhfOworfTsKKwordHlwZWRlZiBQcmVtYXR1cmVFeGl0VGVz
dCBQcmVtYXR1cmVFeGl0RGVhdGhUZXN0OworCisvLyBUZXN0cyB0aGF0OgorLy8gICAtIHRoZSBw
cmVtYXR1cmUtZXhpdCBmaWxlIGV4aXN0cyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiBhCisvLyAg
ICAgZGVhdGggdGVzdCAoRVhQRUNUX0RFQVRIKiksIGFuZAorLy8gICAtIGEgZGVhdGggdGVzdCBk
b2Vzbid0IGludGVyZmVyZSB3aXRoIHRoZSBtYWluIHRlc3QgcHJvY2VzcydzCisvLyAgICAgaGFu
ZGxpbmcgb2YgdGhlIHByZW1hdHVyZS1leGl0IGZpbGUuCitURVNUX0YoUHJlbWF0dXJlRXhpdERl
YXRoVGVzdCwgRmlsZUV4aXN0c0R1cmluZ0V4ZWN1dGlvbk9mRGVhdGhUZXN0KSB7CisgIGlmICgq
cHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXyA9PSAnXDAnKSB7CisgICAgcmV0dXJuOworICB9CisK
KyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh7CisgICAgICAvLyBJZiB0aGUgZmlsZSBleGlz
dHMsIGNyYXNoIHRoZSBwcm9jZXNzIHN1Y2ggdGhhdCB0aGUgbWFpbiB0ZXN0CisgICAgICAvLyBw
cm9jZXNzIHdpbGwgY2F0Y2ggdGhlIChleHBlY3RlZCkgY3Jhc2ggYW5kIHJlcG9ydCBhIHN1Y2Nl
c3M7CisgICAgICAvLyBvdGhlcndpc2UgZG9uJ3QgY3Jhc2gsIHdoaWNoIHdpbGwgY2F1c2UgdGhl
IG1haW4gdGVzdCBwcm9jZXNzCisgICAgICAvLyB0byByZXBvcnQgdGhhdCB0aGUgZGVhdGggdGVz
dCBoYXMgZmFpbGVkLgorICAgICAgaWYgKFByZW1hdHVyZUV4aXRGaWxlRXhpc3RzKCkpIHsKKyAg
ICAgICAgZXhpdCgxKTsKKyAgICAgIH0KKyAgICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIHRoYXQg
dGhlIHByZW1hdHVyZS1leGl0IGZpbGUgZXhpc3RzIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIGEK
Ky8vIG5vcm1hbCAobm9uLWRlYXRoKSB0ZXN0LgorVEVTVF9GKFByZW1hdHVyZUV4aXRUZXN0LCBQ
cmVtYXR1cmVFeGl0RmlsZUV4aXN0c0R1cmluZ1Rlc3RFeGVjdXRpb24pIHsKKyAgaWYgKCpwcmVt
YXR1cmVfZXhpdF9maWxlX3BhdGhfID09ICdcMCcpIHsKKyAgICByZXR1cm47CisgIH0KKworICBF
WFBFQ1RfVFJVRShQcmVtYXR1cmVFeGl0RmlsZUV4aXN0cygpKQorICAgICAgPDwgIiBmaWxlICIg
PDwgcHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXworICAgICAgPDwgIiBzaG91bGQgZXhpc3QgZHVy
aW5nIHRlc3QgZXhlY3V0aW9uLCBidXQgZG9lc24ndC4iOworfQorCit9ICAvLyBuYW1lc3BhY2UK
KworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIEluaXRHb29nbGVUZXN0KCZh
cmdjLCBhcmd2KTsKKyAgY29uc3QgaW50IGV4aXRfY29kZSA9IFJVTl9BTExfVEVTVFMoKTsKKwor
ICAvLyBUZXN0IHRoYXQgdGhlIHByZW1hdHVyZS1leGl0IGZpbGUgaXMgZGVsZXRlZCB1cG9uIHJl
dHVybiBmcm9tCisgIC8vIFJVTl9BTExfVEVTVFMoKS4KKyAgY29uc3QgY2hhciogY29uc3QgZmls
ZXBhdGggPSBHZXRFbnYoIlRFU1RfUFJFTUFUVVJFX0VYSVRfRklMRSIpOworICBpZiAoZmlsZXBh
dGggIT0gTlVMTCAmJiAqZmlsZXBhdGggIT0gJ1wwJykgeworICAgIGlmIChQcmVtYXR1cmVFeGl0
VGVzdDo6RmlsZUV4aXN0cyhmaWxlcGF0aCkpIHsKKyAgICAgIHByaW50ZigKKyAgICAgICAgICAi
RmlsZSAlcyBzaG91bGRuJ3QgZXhpc3QgYWZ0ZXIgdGhlIHRlc3QgcHJvZ3JhbSBmaW5pc2hlcywg
YnV0IGRvZXMuIiwKKyAgICAgICAgICBmaWxlcGF0aCk7CisgICAgICByZXR1cm4gMTsKKyAgICB9
CisgIH0KKworICByZXR1cm4gZXhpdF9jb2RlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3Byb2RfdGVzdC5jYwppbmRleCBiYzMyMDFkMGYyNGFlOThlZDA2MmM3
YjhjOWY0NGQ3ZGZlNmQ3Yzk2Li5lZGU4MWEwZDE3YTAyYzg1M2VkMjIzNGVjODhmZTgyNzcxODBh
MzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Byb2Rf
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Byb2RfdGVz
dC5jYwpAQCAtMjYsMTMgKzI2LDEyIEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
IC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKIC8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9u
ZyBXYW4pCi0vLwotLy8gVW5pdCB0ZXN0IGZvciBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaC4K
Ky8vIFVuaXQgdGVzdCBmb3IgZ3Rlc3RfcHJvZC5oLgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KLSNpbmNsdWRlICJ0ZXN0L3Byb2R1Y3Rpb24uaCIKKyNpbmNsdWRlICJwcm9kdWN0aW9uLmgi
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogLy8gVGVzdHMgdGhhdCBwcml2YXRlIG1lbWJl
cnMgY2FuIGJlIGFjY2Vzc2VkIGZyb20gYSBURVNUIGRlY2xhcmVkIGFzCiAvLyBhIGZyaWVuZCBv
ZiB0aGUgY2xhc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X3JlcGVhdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9y
ZXBlYXRfdGVzdC5jYwppbmRleCBkZjY4NjhiODMwMjk2MTI1YTI3YzdmMzdmOTMxNmNlZDRlZDgy
ZDU0Li4xZThmNDk5YmI5ZGUzZDE0YmNiM2JiMWE2NDFjMDZkN2ExMjUwYWQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3JlcGVhdF90ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcmVwZWF0X3Rlc3QuY2MKQEAgLTI2
LDIzICsyNiwxNCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAv
LyBUZXN0cyB0aGUgLS1ndGVzdF9yZXBlYXQ9bnVtYmVyIGZsYWcuCiAKICNpbmNsdWRlIDxzdGRs
aWIuaD4KICNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0v
LyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUg
VGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50
ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIg
ZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50
YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2Rl
ZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAj
aW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVO
VEFUSU9OXwogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKQEAgLTY5LDEzICs2MCwxMyBAQCBuYW1l
c3BhY2UgewogICAgICAgICAgICAgICAgICAgPDwgIiAgQWN0dWFsOiAiIDw8IGFjdHVhbF92YWwg
PDwgIlxuIlwKICAgICAgICAgICAgICAgICAgIDw8ICJFeHBlY3RlZDogIiAjZXhwZWN0ZWQgIlxu
IlwKICAgICAgICAgICAgICAgICAgIDw8ICJXaGljaCBpczogIiA8PCBleHBlY3RlZF92YWwgPDwg
IlxuIjtcCi0gICAgICBhYm9ydCgpO1wKKyAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4
OjpBYm9ydCgpO1wKICAgICB9XAotICB9IHdoaWxlKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5
c0ZhbHNlKCkpCisgIH0gd2hpbGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkp
CiAKIAogLy8gVXNlZCBmb3IgdmVyaWZ5aW5nIHRoYXQgZ2xvYmFsIGVudmlyb25tZW50IHNldC11
cCBhbmQgdGVhci1kb3duIGFyZQotLy8gaW5zaWRlIHRoZSBndGVzdF9yZXBlYXQgbG9vcC4KKy8v
IGluc2lkZSB0aGUgLS1ndGVzdF9yZXBlYXQgbG9vcC4KIAogaW50IGdfZW52aXJvbm1lbnRfc2V0
X3VwX2NvdW50ID0gMDsKIGludCBnX2Vudmlyb25tZW50X3RlYXJfZG93bl9jb3VudCA9IDA7CkBA
IC0xMTMsMTMgKzEwNCwxMiBAQCBURVNUKEJhckRlYXRoVGVzdCwgVGhyZWFkU2FmZUFuZEZhc3Qp
IHsKICAgZ19kZWF0aF90ZXN0X2NvdW50Kys7CiAKICAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0
eWxlKSA9ICJ0aHJlYWRzYWZlIjsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChhYm9ydCgp
LCAiIik7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
cG9zaXg6OkFib3J0KCksICIiKTsKIAogICBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0g
ImZhc3QiOwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKGFib3J0KCksICIiKTsKKyAgRVhQ
RUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6QWJvcnQo
KSwgIiIpOwogfQogCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKIGludCBnX3BhcmFtX3Rlc3Rf
Y291bnQgPSAwOwogCiBjb25zdCBpbnQga051bWJlck9mUGFyYW1UZXN0cyA9IDEwOwpAQCAtMTI3
LDE1ICsxMTcsMTMgQEAgY29uc3QgaW50IGtOdW1iZXJPZlBhcmFtVGVzdHMgPSAxMDsKIGNsYXNz
IE15UGFyYW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7fTsKIAog
VEVTVF9QKE15UGFyYW1UZXN0LCBTaG91bGRQYXNzKSB7Ci0gIC8vIFRPRE8odmxhZGxAZ29vZ2xl
LmNvbSk6IE1ha2UgcGFyYW1ldGVyIHZhbHVlIGNoZWNraW5nIHJvYnVzdAotICAvLyAgICAgICAg
ICAgICAgICAgICAgICAgICBXUlQgb3JkZXIgb2YgdGVzdHMuCisgIC8vIEZJWE1FOiBNYWtlIHBh
cmFtZXRlciB2YWx1ZSBjaGVja2luZyByb2J1c3QgV1JUIG9yZGVyIG9mIHRlc3RzLgogICBHVEVT
VF9DSEVDS19JTlRfRVFfKGdfcGFyYW1fdGVzdF9jb3VudCAlIGtOdW1iZXJPZlBhcmFtVGVzdHMs
IEdldFBhcmFtKCkpOwogICBnX3BhcmFtX3Rlc3RfY291bnQrKzsKIH0KIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKE15UGFyYW1TZXF1ZW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgIE15UGFy
YW1UZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6UmFuZ2UoMCwga051bWJl
ck9mUGFyYW1UZXN0cykpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogCiAvLyBS
ZXNldHMgdGhlIGNvdW50IGZvciBlYWNoIHRlc3QuCiB2b2lkIFJlc2V0Q291bnRzKCkgewpAQCAt
MTQ0LDkgKzEzMiw3IEBAIHZvaWQgUmVzZXRDb3VudHMoKSB7CiAgIGdfc2hvdWxkX2ZhaWxfY291
bnQgPSAwOwogICBnX3Nob3VsZF9wYXNzX2NvdW50ID0gMDsKICAgZ19kZWF0aF90ZXN0X2NvdW50
ID0gMDsKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAogICBnX3BhcmFtX3Rlc3RfY291bnQgPSAw
OwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogfQogCiAvLyBDaGVja3MgdGhhdCB0
aGUgY291bnQgZm9yIGVhY2ggdGVzdCBpcyBleHBlY3RlZC4KQEAgLTE1Niw5ICsxNDIsNyBAQCB2
b2lkIENoZWNrQ291bnRzKGludCBleHBlY3RlZCkgewogICBHVEVTVF9DSEVDS19JTlRfRVFfKGV4
cGVjdGVkLCBnX3Nob3VsZF9mYWlsX2NvdW50KTsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhleHBl
Y3RlZCwgZ19zaG91bGRfcGFzc19jb3VudCk7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8oZXhwZWN0
ZWQsIGdfZGVhdGhfdGVzdF9jb3VudCk7Ci0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgR1RF
U1RfQ0hFQ0tfSU5UX0VRXyhleHBlY3RlZCAqIGtOdW1iZXJPZlBhcmFtVGVzdHMsIGdfcGFyYW1f
dGVzdF9jb3VudCk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCiB9CiAKIC8vIFRl
c3RzIHRoZSBiZWhhdmlvciBvZiBHb29nbGUgVGVzdCB3aGVuIC0tZ3Rlc3RfcmVwZWF0IGlzIG5v
dCBzcGVjaWZpZWQuCkBAIC0yMDEsOSArMTg1LDcgQEAgdm9pZCBUZXN0UmVwZWF0V2l0aEZpbHRl
ckZvclN1Y2Nlc3NmdWxUZXN0cyhpbnQgcmVwZWF0KSB7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8o
MCwgZ19zaG91bGRfZmFpbF9jb3VudCk7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0LCBn
X3Nob3VsZF9wYXNzX2NvdW50KTsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhyZXBlYXQsIGdfZGVh
dGhfdGVzdF9jb3VudCk7Ci0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgR1RFU1RfQ0hFQ0tf
SU5UX0VRXyhyZXBlYXQgKiBrTnVtYmVyT2ZQYXJhbVRlc3RzLCBnX3BhcmFtX3Rlc3RfY291bnQp
OwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogfQogCiAvLyBUZXN0cyB1c2luZyAt
LWd0ZXN0X3JlcGVhdCB3aGVuIC0tZ3Rlc3RfZmlsdGVyIHNwZWNpZmllcyBhIHNldCBvZgpAQCAt
MjE5LDE1ICsyMDEsMTQgQEAgdm9pZCBUZXN0UmVwZWF0V2l0aEZpbHRlckZvckZhaWxlZFRlc3Rz
KGludCByZXBlYXQpIHsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhyZXBlYXQsIGdfc2hvdWxkX2Zh
aWxfY291bnQpOwogICBHVEVTVF9DSEVDS19JTlRfRVFfKDAsIGdfc2hvdWxkX3Bhc3NfY291bnQp
OwogICBHVEVTVF9DSEVDS19JTlRfRVFfKDAsIGdfZGVhdGhfdGVzdF9jb3VudCk7Ci0jaWYgR1RF
U1RfSEFTX1BBUkFNX1RFU1QKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXygwLCBnX3BhcmFtX3Rlc3Rf
Y291bnQpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogfQogCiB9ICAvLyBuYW1l
c3BhY2UKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CiAgIHRlc3Rpbmc6Oklu
aXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKwogICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52
aXJvbm1lbnQobmV3IE15RW52aXJvbm1lbnQpOwogCiAgIFRlc3RSZXBlYXRVbnNwZWNpZmllZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxl
X3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3NodWZmbGVfdGVz
dC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzBkMDMwM2QxOTM1NTRhNWZkMGI5
YjFmNmE1MWVmN2QwOWYzMDYxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3NodWZmbGVfdGVz
dC5weQorKysgL2Rldi9udWxsCkBAIC0xLDMyNSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRo
b24KLSMKLSMgQ29weXJpZ2h0IDIwMDkgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlv
bi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlZlcmlmaWVzIHRoYXQgdGVzdCBzaHVmZmxpbmcgd29y
a3MuIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0K
LWltcG9ydCBvcwotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLQotIyBDb21tYW5kIHRvIHJ1biB0
aGUgZ3Rlc3Rfc2h1ZmZsZV90ZXN0XyBwcm9ncmFtLgotQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRp
bHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9zaHVmZmxlX3Rlc3RfJykKLQotIyBUaGUg
ZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0ZXN0IHNoYXJkaW5nLgotVE9UQUxfU0hBUkRTX0VO
Vl9WQVIgPSAnR1RFU1RfVE9UQUxfU0hBUkRTJwotU0hBUkRfSU5ERVhfRU5WX1ZBUiA9ICdHVEVT
VF9TSEFSRF9JTkRFWCcKLQotVEVTVF9GSUxURVIgPSAnQSouQTpBKi5COkMqJwotCi1BTExfVEVT
VFMgPSBbXQotQUNUSVZFX1RFU1RTID0gW10KLUZJTFRFUkVEX1RFU1RTID0gW10KLVNIQVJERURf
VEVTVFMgPSBbXQotCi1TSFVGRkxFRF9BTExfVEVTVFMgPSBbXQotU0hVRkZMRURfQUNUSVZFX1RF
U1RTID0gW10KLVNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTID0gW10KLVNIVUZGTEVEX1NIQVJERURf
VEVTVFMgPSBbXQotCi0KLWRlZiBBbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcoKToKLSAgcmV0dXJu
ICctLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzJwotCi0KLWRlZiBGaWx0ZXJGbGFnKHRl
c3RfZmlsdGVyKToKLSAgcmV0dXJuICctLWd0ZXN0X2ZpbHRlcj0lcycgJSAodGVzdF9maWx0ZXIs
KQotCi0KLWRlZiBSZXBlYXRGbGFnKG4pOgotICByZXR1cm4gJy0tZ3Rlc3RfcmVwZWF0PSVzJyAl
IChuLCkKLQotCi1kZWYgU2h1ZmZsZUZsYWcoKToKLSAgcmV0dXJuICctLWd0ZXN0X3NodWZmbGUn
Ci0KLQotZGVmIFJhbmRvbVNlZWRGbGFnKG4pOgotICByZXR1cm4gJy0tZ3Rlc3RfcmFuZG9tX3Nl
ZWQ9JXMnICUgKG4sKQotCi0KLWRlZiBSdW5BbmRSZXR1cm5PdXRwdXQoZXh0cmFfZW52LCBhcmdz
KToKLSAgIiIiUnVucyB0aGUgdGVzdCBwcm9ncmFtIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQuIiIi
Ci0KLSAgZW52aXJvbl9jb3B5ID0gb3MuZW52aXJvbi5jb3B5KCkKLSAgZW52aXJvbl9jb3B5LnVw
ZGF0ZShleHRyYV9lbnYpCi0KLSAgcmV0dXJuIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhb
Q09NTUFORF0gKyBhcmdzLCBlbnY9ZW52aXJvbl9jb3B5KS5vdXRwdXQKLQotCi1kZWYgR2V0VGVz
dHNGb3JBbGxJdGVyYXRpb25zKGV4dHJhX2VudiwgYXJncyk6Ci0gICIiIlJ1bnMgdGhlIHRlc3Qg
cHJvZ3JhbSBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgdGVzdCBsaXN0cy4KLQotICBBcmdzOgotICAg
IGV4dHJhX2VudjogYSBtYXAgZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gdGhlaXIgdmFs
dWVzCi0gICAgYXJnczogY29tbWFuZCBsaW5lIGZsYWdzIHRvIHBhc3MgdG8gZ3Rlc3Rfc2h1ZmZs
ZV90ZXN0XwotCi0gIFJldHVybnM6Ci0gICAgQSBsaXN0IHdoZXJlIHRoZSBpLXRoIGVsZW1lbnQg
aXMgdGhlIGxpc3Qgb2YgdGVzdHMgcnVuIGluIHRoZSBpLXRoCi0gICAgdGVzdCBpdGVyYXRpb24u
Ci0gICIiIgotCi0gIHRlc3RfaXRlcmF0aW9ucyA9IFtdCi0gIGZvciBsaW5lIGluIFJ1bkFuZFJl
dHVybk91dHB1dChleHRyYV9lbnYsIGFyZ3MpLnNwbGl0KCdcbicpOgotICAgIGlmIGxpbmUuc3Rh
cnRzd2l0aCgnLS0tLScpOgotICAgICAgdGVzdHMgPSBbXQotICAgICAgdGVzdF9pdGVyYXRpb25z
LmFwcGVuZCh0ZXN0cykKLSAgICBlbGlmIGxpbmUuc3RyaXAoKToKLSAgICAgIHRlc3RzLmFwcGVu
ZChsaW5lLnN0cmlwKCkpICAjICdUZXN0Q2FzZU5hbWUuVGVzdE5hbWUnCi0KLSAgcmV0dXJuIHRl
c3RfaXRlcmF0aW9ucwotCi0KLWRlZiBHZXRUZXN0Q2FzZXModGVzdHMpOgotICAiIiJSZXR1cm5z
IGEgbGlzdCBvZiB0ZXN0IGNhc2VzIGluIHRoZSBnaXZlbiBmdWxsIHRlc3QgbmFtZXMuCi0KLSAg
QXJnczoKLSAgICB0ZXN0czogYSBsaXN0IG9mIGZ1bGwgdGVzdCBuYW1lcwotCi0gIFJldHVybnM6
Ci0gICAgQSBsaXN0IG9mIHRlc3QgY2FzZXMgZnJvbSAndGVzdHMnLCBpbiB0aGVpciBvcmlnaW5h
bCBvcmRlci4KLSAgICBDb25zZWN1dGl2ZSBkdXBsaWNhdGVzIGFyZSByZW1vdmVkLgotICAiIiIK
LQotICB0ZXN0X2Nhc2VzID0gW10KLSAgZm9yIHRlc3QgaW4gdGVzdHM6Ci0gICAgdGVzdF9jYXNl
ID0gdGVzdC5zcGxpdCgnLicpWzBdCi0gICAgaWYgbm90IHRlc3RfY2FzZSBpbiB0ZXN0X2Nhc2Vz
OgotICAgICAgdGVzdF9jYXNlcy5hcHBlbmQodGVzdF9jYXNlKQotCi0gIHJldHVybiB0ZXN0X2Nh
c2VzCi0KLQotZGVmIENhbGN1bGF0ZVRlc3RMaXN0cygpOgotICAiIiJDYWxjdWxhdGVzIHRoZSBs
aXN0IG9mIHRlc3RzIHJ1biB1bmRlciBkaWZmZXJlbnQgZmxhZ3MuIiIiCi0KLSAgaWYgbm90IEFM
TF9URVNUUzoKLSAgICBBTExfVEVTVFMuZXh0ZW5kKAotICAgICAgICBHZXRUZXN0c0ZvckFsbEl0
ZXJhdGlvbnMoe30sIFtBbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcoKV0pWzBdKQotCi0gIGlmIG5v
dCBBQ1RJVkVfVEVTVFM6Ci0gICAgQUNUSVZFX1RFU1RTLmV4dGVuZChHZXRUZXN0c0ZvckFsbEl0
ZXJhdGlvbnMoe30sIFtdKVswXSkKLQotICBpZiBub3QgRklMVEVSRURfVEVTVFM6Ci0gICAgRklM
VEVSRURfVEVTVFMuZXh0ZW5kKAotICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe30s
IFtGaWx0ZXJGbGFnKFRFU1RfRklMVEVSKV0pWzBdKQotCi0gIGlmIG5vdCBTSEFSREVEX1RFU1RT
OgotICAgIFNIQVJERURfVEVTVFMuZXh0ZW5kKAotICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJh
dGlvbnMoe1RPVEFMX1NIQVJEU19FTlZfVkFSOiAnMycsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU0hBUkRfSU5ERVhfRU5WX1ZBUjogJzEnfSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtdKVswXSkKLQotICBpZiBub3QgU0hVRkZMRURfQUxMX1RFU1RTOgot
ICAgIFNIVUZGTEVEX0FMTF9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAot
ICAgICAgICB7fSwgW0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZygpLCBTaHVmZmxlRmxhZygpLCBS
YW5kb21TZWVkRmxhZygxKV0pWzBdKQotCi0gIGlmIG5vdCBTSFVGRkxFRF9BQ1RJVkVfVEVTVFM6
Ci0gICAgU0hVRkZMRURfQUNUSVZFX1RFU1RTLmV4dGVuZChHZXRUZXN0c0ZvckFsbEl0ZXJhdGlv
bnMoCi0gICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSldKVswXSkK
LQotICBpZiBub3QgU0hVRkZMRURfRklMVEVSRURfVEVTVFM6Ci0gICAgU0hVRkZMRURfRklMVEVS
RURfVEVTVFMuZXh0ZW5kKEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKLSAgICAgICAge30sIFtT
aHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKSwgRmlsdGVyRmxhZyhURVNUX0ZJTFRFUild
KVswXSkKLQotICBpZiBub3QgU0hVRkZMRURfU0hBUkRFRF9URVNUUzoKLSAgICBTSFVGRkxFRF9T
SEFSREVEX1RFU1RTLmV4dGVuZCgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtU
T1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcxJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSldKVswXSkKLQotCi1jbGFz
cyBHVGVzdFNodWZmbGVVbml0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAgIiIi
VGVzdHMgdGVzdCBzaHVmZmxpbmcuIiIiCi0KLSAgZGVmIHNldFVwKHNlbGYpOgotICAgIENhbGN1
bGF0ZVRlc3RMaXN0cygpCi0KLSAgZGVmIHRlc3RTaHVmZmxlUHJlc2VydmVzTnVtYmVyT2ZUZXN0
cyhzZWxmKToKLSAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihBTExfVEVTVFMpLCBsZW4oU0hVRkZM
RURfQUxMX1RFU1RTKSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihBQ1RJVkVfVEVTVFMpLCBs
ZW4oU0hVRkZMRURfQUNUSVZFX1RFU1RTKSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihGSUxU
RVJFRF9URVNUUyksIGxlbihTSFVGRkxFRF9GSUxURVJFRF9URVNUUykpCi0gICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oU0hBUkRFRF9URVNUUyksIGxlbihTSFVGRkxFRF9TSEFSREVEX1RFU1RTKSkK
LQotICBkZWYgdGVzdFNodWZmbGVDaGFuZ2VzVGVzdE9yZGVyKHNlbGYpOgotICAgIHNlbGYuYXNz
ZXJ0XyhTSFVGRkxFRF9BTExfVEVTVFMgIT0gQUxMX1RFU1RTLCBTSFVGRkxFRF9BTExfVEVTVFMp
Ci0gICAgc2VsZi5hc3NlcnRfKFNIVUZGTEVEX0FDVElWRV9URVNUUyAhPSBBQ1RJVkVfVEVTVFMs
IFNIVUZGTEVEX0FDVElWRV9URVNUUykKLSAgICBzZWxmLmFzc2VydF8oU0hVRkZMRURfRklMVEVS
RURfVEVTVFMgIT0gRklMVEVSRURfVEVTVFMsCi0gICAgICAgICAgICAgICAgIFNIVUZGTEVEX0ZJ
TFRFUkVEX1RFU1RTKQotICAgIHNlbGYuYXNzZXJ0XyhTSFVGRkxFRF9TSEFSREVEX1RFU1RTICE9
IFNIQVJERURfVEVTVFMsCi0gICAgICAgICAgICAgICAgIFNIVUZGTEVEX1NIQVJERURfVEVTVFMp
Ci0KLSAgZGVmIHRlc3RTaHVmZmxlQ2hhbmdlc1Rlc3RDYXNlT3JkZXIoc2VsZik6Ci0gICAgc2Vs
Zi5hc3NlcnRfKEdldFRlc3RDYXNlcyhTSFVGRkxFRF9BTExfVEVTVFMpICE9IEdldFRlc3RDYXNl
cyhBTExfVEVTVFMpLAotICAgICAgICAgICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfQUxM
X1RFU1RTKSkKLSAgICBzZWxmLmFzc2VydF8oCi0gICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxF
RF9BQ1RJVkVfVEVTVFMpICE9IEdldFRlc3RDYXNlcyhBQ1RJVkVfVEVTVFMpLAotICAgICAgICBH
ZXRUZXN0Q2FzZXMoU0hVRkZMRURfQUNUSVZFX1RFU1RTKSkKLSAgICBzZWxmLmFzc2VydF8oCi0g
ICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9GSUxURVJFRF9URVNUUykgIT0gR2V0VGVzdENh
c2VzKEZJTFRFUkVEX1RFU1RTKSwKLSAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX0ZJTFRF
UkVEX1RFU1RTKSkKLSAgICBzZWxmLmFzc2VydF8oCi0gICAgICAgIEdldFRlc3RDYXNlcyhTSFVG
RkxFRF9TSEFSREVEX1RFU1RTKSAhPSBHZXRUZXN0Q2FzZXMoU0hBUkRFRF9URVNUUyksCi0gICAg
ICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9TSEFSREVEX1RFU1RTKSkKLQotICBkZWYgdGVzdFNo
dWZmbGVEb2VzTm90UmVwZWF0VGVzdChzZWxmKToKLSAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9B
TExfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIFNIVUZGTEVEX0FMTF9URVNUUy5j
b3VudCh0ZXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgbW9yZSB0aGFu
IG9uY2UnICUgKHRlc3QsKSkKLSAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9BQ1RJVkVfVEVTVFM6
Ci0gICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIFNIVUZGTEVEX0FDVElWRV9URVNUUy5jb3VudCh0
ZXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2Un
ICUgKHRlc3QsKSkKLSAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9GSUxURVJFRF9URVNUUzoKLSAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgU0hVRkZMRURfRklMVEVSRURfVEVTVFMuY291bnQodGVz
dCksCi0gICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAl
ICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfU0hBUkRFRF9URVNUUzoKLSAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoMSwgU0hVRkZMRURfU0hBUkRFRF9URVNUUy5jb3VudCh0ZXN0KSwK
LSAgICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UnICUgKHRl
c3QsKSkKLQotICBkZWYgdGVzdFNodWZmbGVEb2VzTm90Q3JlYXRlTmV3VGVzdChzZWxmKToKLSAg
ICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9BTExfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8odGVz
dCBpbiBBTExfVEVTVFMsICclcyBpcyBhbiBpbnZhbGlkIHRlc3QnICUgKHRlc3QsKSkKLSAgICBm
b3IgdGVzdCBpbiBTSFVGRkxFRF9BQ1RJVkVfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8odGVz
dCBpbiBBQ1RJVkVfVEVTVFMsICclcyBpcyBhbiBpbnZhbGlkIHRlc3QnICUgKHRlc3QsKSkKLSAg
ICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9GSUxURVJFRF9URVNUUzoKLSAgICAgIHNlbGYuYXNzZXJ0
Xyh0ZXN0IGluIEZJTFRFUkVEX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0
LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfU0hBUkRFRF9URVNUUzoKLSAgICAgIHNlbGYu
YXNzZXJ0Xyh0ZXN0IGluIFNIQVJERURfVEVTVFMsICclcyBpcyBhbiBpbnZhbGlkIHRlc3QnICUg
KHRlc3QsKSkKLQotICBkZWYgdGVzdFNodWZmbGVJbmNsdWRlc0FsbFRlc3RzKHNlbGYpOgotICAg
IGZvciB0ZXN0IGluIEFMTF9URVNUUzoKLSAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIVUZG
TEVEX0FMTF9URVNUUywgJyVzIGlzIG1pc3NpbmcnICUgKHRlc3QsKSkKLSAgICBmb3IgdGVzdCBp
biBBQ1RJVkVfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVGRkxFRF9BQ1RJ
VkVfVEVTVFMsICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gRklM
VEVSRURfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVGRkxFRF9GSUxURVJF
RF9URVNUUywgJyVzIGlzIG1pc3NpbmcnICUgKHRlc3QsKSkKLSAgICBmb3IgdGVzdCBpbiBTSEFS
REVEX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfU0hBUkRFRF9U
RVNUUywgJyVzIGlzIG1pc3NpbmcnICUgKHRlc3QsKSkKLQotICBkZWYgdGVzdFNodWZmbGVMZWF2
ZXNEZWF0aFRlc3RzQXRGcm9udChzZWxmKToKLSAgICBub25fZGVhdGhfdGVzdF9mb3VuZCA9IEZh
bHNlCi0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTOgotICAgICAgaWYgJ0Rl
YXRoVGVzdC4nIGluIHRlc3Q6Ci0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qgbm9uX2RlYXRoX3Rl
c3RfZm91bmQsCi0gICAgICAgICAgICAgICAgICAgICAnJXMgYXBwZWFycyBhZnRlciBhIG5vbi1k
ZWF0aCB0ZXN0JyAlICh0ZXN0LCkpCi0gICAgICBlbHNlOgotICAgICAgICBub25fZGVhdGhfdGVz
dF9mb3VuZCA9IFRydWUKLQotICBkZWYgX1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50ZXJsZWF2ZShz
ZWxmLCB0ZXN0cyk6Ci0gICAgdGVzdF9jYXNlcyA9IFtdCi0gICAgZm9yIHRlc3QgaW4gdGVzdHM6
Ci0gICAgICBbdGVzdF9jYXNlLCBfXSA9IHRlc3Quc3BsaXQoJy4nKQotICAgICAgaWYgdGVzdF9j
YXNlcyBhbmQgdGVzdF9jYXNlc1stMV0gIT0gdGVzdF9jYXNlOgotICAgICAgICB0ZXN0X2Nhc2Vz
LmFwcGVuZCh0ZXN0X2Nhc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgdGVzdF9jYXNl
cy5jb3VudCh0ZXN0X2Nhc2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICdUZXN0IGNhc2Ug
JXMgaXMgbm90IGdyb3VwZWQgdG9nZXRoZXIgaW4gJXMnICUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAodGVzdF9jYXNlLCB0ZXN0cykpCi0KLSAgZGVmIHRlc3RTaHVmZmxlRG9lc05vdEludGVy
bGVhdmVUZXN0Q2FzZXMoc2VsZik6Ci0gICAgc2VsZi5fVmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRl
cmxlYXZlKFNIVUZGTEVEX0FMTF9URVNUUykKLSAgICBzZWxmLl9WZXJpZnlUZXN0Q2FzZXNEb05v
dEludGVybGVhdmUoU0hVRkZMRURfQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuX1ZlcmlmeVRlc3RD
YXNlc0RvTm90SW50ZXJsZWF2ZShTSFVGRkxFRF9GSUxURVJFRF9URVNUUykKLSAgICBzZWxmLl9W
ZXJpZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUoU0hVRkZMRURfU0hBUkRFRF9URVNUUykKLQot
ICBkZWYgdGVzdFNodWZmbGVSZXN0b3Jlc09yZGVyQWZ0ZXJFYWNoSXRlcmF0aW9uKHNlbGYpOgot
ICAgICMgR2V0IHRoZSB0ZXN0IGxpc3RzIGluIGFsbCAzIGl0ZXJhdGlvbnMsIHVzaW5nIHJhbmRv
bSBzZWVkIDEsIDIsCi0gICAgIyBhbmQgMyByZXNwZWN0aXZlbHkuICBHb29nbGUgVGVzdCBwaWNr
cyBhIGRpZmZlcmVudCBzZWVkIGluIGVhY2gKLSAgICAjIGl0ZXJhdGlvbiwgYW5kIHRoaXMgdGVz
dCBkZXBlbmRzIG9uIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uCi0gICAgIyBwaWNraW5nIHN1
Y2Nlc3NpdmUgbnVtYmVycy4gIFRoaXMgZGVwZW5kZW5jeSBpcyBub3QgaWRlYWwsIGJ1dAotICAg
ICMgbWFrZXMgdGhlIHRlc3QgbXVjaCBlYXNpZXIgdG8gd3JpdGUuCi0gICAgW3Rlc3RzX2luX2l0
ZXJhdGlvbjEsIHRlc3RzX2luX2l0ZXJhdGlvbjIsIHRlc3RzX2luX2l0ZXJhdGlvbjNdID0gKAot
ICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgICAgICB7fSwgW1NodWZm
bGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpLCBSZXBlYXRGbGFnKDMpXSkpCi0KLSAgICAjIE1h
a2Ugc3VyZSBydW5uaW5nIHRoZSB0ZXN0cyB3aXRoIHJhbmRvbSBzZWVkIDEgZ2V0cyB0aGUgc2Ft
ZQotICAgICMgb3JkZXIgYXMgaW4gaXRlcmF0aW9uIDEgYWJvdmUuCi0gICAgW3Rlc3RzX3dpdGhf
c2VlZDFdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAotICAgICAgICB7fSwgW1NodWZmbGVG
bGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzX2lu
X2l0ZXJhdGlvbjEsIHRlc3RzX3dpdGhfc2VlZDEpCi0KLSAgICAjIE1ha2Ugc3VyZSBydW5uaW5n
IHRoZSB0ZXN0cyB3aXRoIHJhbmRvbSBzZWVkIDIgZ2V0cyB0aGUgc2FtZQotICAgICMgb3JkZXIg
YXMgaW4gaXRlcmF0aW9uIDIgYWJvdmUuICBTdWNjZXNzIG1lYW5zIHRoYXQgR29vZ2xlIFRlc3QK
LSAgICAjIGNvcnJlY3RseSByZXN0b3JlcyB0aGUgdGVzdCBvcmRlciBiZWZvcmUgcmUtc2h1ZmZs
aW5nIGF0IHRoZQotICAgICMgYmVnaW5uaW5nIG9mIGl0ZXJhdGlvbiAyLgotICAgIFt0ZXN0c193
aXRoX3NlZWQyXSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKLSAgICAgICAge30sIFtTaHVm
ZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygyKV0pCi0gICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0
c19pbl9pdGVyYXRpb24yLCB0ZXN0c193aXRoX3NlZWQyKQotCi0gICAgIyBNYWtlIHN1cmUgcnVu
bmluZyB0aGUgdGVzdHMgd2l0aCByYW5kb20gc2VlZCAzIGdldHMgdGhlIHNhbWUKLSAgICAjIG9y
ZGVyIGFzIGluIGl0ZXJhdGlvbiAzIGFib3ZlLiAgU3VjY2VzcyBtZWFucyB0aGF0IEdvb2dsZSBU
ZXN0Ci0gICAgIyBjb3JyZWN0bHkgcmVzdG9yZXMgdGhlIHRlc3Qgb3JkZXIgYmVmb3JlIHJlLXNo
dWZmbGluZyBhdCB0aGUKLSAgICAjIGJlZ2lubmluZyBvZiBpdGVyYXRpb24gMy4KLSAgICBbdGVz
dHNfd2l0aF9zZWVkM10gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBb
U2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMyldKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwo
dGVzdHNfaW5faXRlcmF0aW9uMywgdGVzdHNfd2l0aF9zZWVkMykKLQotICBkZWYgdGVzdFNodWZm
bGVHZW5lcmF0ZXNOZXdPcmRlckluRWFjaEl0ZXJhdGlvbihzZWxmKToKLSAgICBbdGVzdHNfaW5f
aXRlcmF0aW9uMSwgdGVzdHNfaW5faXRlcmF0aW9uMiwgdGVzdHNfaW5faXRlcmF0aW9uM10gPSAo
Ci0gICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKLSAgICAgICAgICAgIHt9LCBbU2h1
ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSksIFJlcGVhdEZsYWcoMyldKSkKLQotICAgIHNl
bGYuYXNzZXJ0Xyh0ZXN0c19pbl9pdGVyYXRpb24xICE9IHRlc3RzX2luX2l0ZXJhdGlvbjIsCi0g
ICAgICAgICAgICAgICAgIHRlc3RzX2luX2l0ZXJhdGlvbjEpCi0gICAgc2VsZi5hc3NlcnRfKHRl
c3RzX2luX2l0ZXJhdGlvbjEgIT0gdGVzdHNfaW5faXRlcmF0aW9uMywKLSAgICAgICAgICAgICAg
ICAgdGVzdHNfaW5faXRlcmF0aW9uMSkKLSAgICBzZWxmLmFzc2VydF8odGVzdHNfaW5faXRlcmF0
aW9uMiAhPSB0ZXN0c19pbl9pdGVyYXRpb24zLAotICAgICAgICAgICAgICAgICB0ZXN0c19pbl9p
dGVyYXRpb24yKQotCi0gIGRlZiB0ZXN0U2h1ZmZsZVNoYXJkZWRUZXN0c1ByZXNlcnZlc1BhcnRp
dGlvbihzZWxmKToKLSAgICAjIElmIHdlIHJ1biBNIHRlc3RzIG9uIE4gc2hhcmRzLCB0aGUgc2Ft
ZSBNIHRlc3RzIHNob3VsZCBiZSBydW4gaW4KLSAgICAjIHRvdGFsLCByZWdhcmRsZXNzIG9mIHRo
ZSByYW5kb20gc2VlZHMgdXNlZCBieSB0aGUgc2hhcmRzLgotICAgIFt0ZXN0czFdID0gR2V0VGVz
dHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMCd9
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTaHVmZmxlRmxhZygp
LCBSYW5kb21TZWVkRmxhZygxKV0pCi0gICAgW3Rlc3RzMl0gPSBHZXRUZXN0c0ZvckFsbEl0ZXJh
dGlvbnMoe1RPVEFMX1NIQVJEU19FTlZfVkFSOiAnMycsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcxJ30sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRG
bGFnKDIwKV0pCi0gICAgW3Rlc3RzM10gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe1RPVEFM
X1NIQVJEU19FTlZfVkFSOiAnMycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcyJ30sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDI1KV0pCi0g
ICAgc29ydGVkX3NoYXJkZWRfdGVzdHMgPSB0ZXN0czEgKyB0ZXN0czIgKyB0ZXN0czMKLSAgICBz
b3J0ZWRfc2hhcmRlZF90ZXN0cy5zb3J0KCkKLSAgICBzb3J0ZWRfYWN0aXZlX3Rlc3RzID0gW10K
LSAgICBzb3J0ZWRfYWN0aXZlX3Rlc3RzLmV4dGVuZChBQ1RJVkVfVEVTVFMpCi0gICAgc29ydGVk
X2FjdGl2ZV90ZXN0cy5zb3J0KCkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZF9hY3RpdmVf
dGVzdHMsIHNvcnRlZF9zaGFyZGVkX3Rlc3RzKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgotICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3RfLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1M2VjZjc3NzBhMTQxMTc2NjhiNGFkZWE2ZmI2ZjUwMjY2NzE3ZGU3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0Xy5jYworKysgL2Rldi9udWxsCkBAIC0xLDEw
NCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0v
LwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0v
LwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBWZXJpZmll
cyB0aGF0IHRlc3Qgc2h1ZmZsaW5nIHdvcmtzLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
LQotbmFtZXNwYWNlIHsKLQotdXNpbmcgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVy
OwotdXNpbmcgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6TWVz
c2FnZTsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50
TGlzdGVuZXJzOwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0SW5mbzsKLXVzaW5nIDo6dGVzdGluZzo6
VW5pdFRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmc7Ci11c2luZyA6OnRl
c3Rpbmc6OmludGVybmFsOjpzY29wZWRfcHRyOwotCi0vLyBUaGUgdGVzdCBtZXRob2RzIGFyZSBl
bXB0eSwgYXMgdGhlIHNvbGUgcHVycG9zZSBvZiB0aGlzIHByb2dyYW0gaXMKLS8vIHRvIHByaW50
IHRoZSB0ZXN0IG5hbWVzIGJlZm9yZS9hZnRlciBzaHVmZmxpbmcuCi0KLWNsYXNzIEEgOiBwdWJs
aWMgVGVzdCB7fTsKLVRFU1RfRihBLCBBKSB7fQotVEVTVF9GKEEsIEIpIHt9Ci0KLVRFU1QoQURl
YXRoVGVzdCwgQSkge30KLVRFU1QoQURlYXRoVGVzdCwgQikge30KLVRFU1QoQURlYXRoVGVzdCwg
Qykge30KLQotVEVTVChCLCBBKSB7fQotVEVTVChCLCBCKSB7fQotVEVTVChCLCBDKSB7fQotVEVT
VChCLCBESVNBQkxFRF9EKSB7fQotVEVTVChCLCBESVNBQkxFRF9FKSB7fQotCi1URVNUKEJEZWF0
aFRlc3QsIEEpIHt9Ci1URVNUKEJEZWF0aFRlc3QsIEIpIHt9Ci0KLVRFU1QoQywgQSkge30KLVRF
U1QoQywgQikge30KLVRFU1QoQywgQykge30KLVRFU1QoQywgRElTQUJMRURfRCkge30KLQotVEVT
VChDRGVhdGhUZXN0LCBBKSB7fQotCi1URVNUKERJU0FCTEVEX0QsIEEpIHt9Ci1URVNUKERJU0FC
TEVEX0QsIERJU0FCTEVEX0IpIHt9Ci0KLS8vIFRoaXMgcHJpbnRlciBwcmludHMgdGhlIGZ1bGwg
dGVzdCBuYW1lcyBvbmx5LCBzdGFydGluZyBlYWNoIHRlc3QKLS8vIGl0ZXJhdGlvbiB3aXRoIGEg
Ii0tLS0iIG1hcmtlci4KLWNsYXNzIFRlc3ROYW1lUHJpbnRlciA6IHB1YmxpYyBFbXB0eVRlc3RF
dmVudExpc3RlbmVyIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25T
dGFydChjb25zdCBVbml0VGVzdCYgLyogdW5pdF90ZXN0ICovLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IC8qIGl0ZXJhdGlvbiAqLykgewotICAgIHByaW50ZigiLS0t
LVxuIik7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8m
IHRlc3RfaW5mbykgewotICAgIHByaW50ZigiJXMuJXNcbiIsIHRlc3RfaW5mby50ZXN0X2Nhc2Vf
bmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKLSAgfQotfTsKLQotfSAgLy8gbmFtZXNwYWNlCi0K
LWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotICBJbml0R29vZ2xlVGVzdCgmYXJn
YywgYXJndik7Ci0KLSAgLy8gUmVwbGFjZXMgdGhlIGRlZmF1bHQgcHJpbnRlciB3aXRoIFRlc3RO
YW1lUHJpbnRlciwgd2hpY2ggcHJpbnRzCi0gIC8vIHRoZSB0ZXN0IG5hbWUgb25seS4KLSAgVGVz
dEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMgPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlz
dGVuZXJzKCk7Ci0gIGRlbGV0ZSBsaXN0ZW5lcnMuUmVsZWFzZShsaXN0ZW5lcnMuZGVmYXVsdF9y
ZXN1bHRfcHJpbnRlcigpKTsKLSAgbGlzdGVuZXJzLkFwcGVuZChuZXcgVGVzdE5hbWVQcmludGVy
KTsKLQotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zb2xlX2hlYWRlcl90ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zb2xlX2hlYWRlcl90ZXN0LmNjCmluZGV4IGRlOTFl
ODAwZjVhMTM4Mjk5OWZjMjAxZjVjZjNjZTA0NjRjYWExY2UuLjFkOTRhYzZiM2FkOWY5ZjdkYmFk
YmZiMmJmNzQ5YjgyNzE1NjBkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3NvbGVfaGVhZGVyX3Rlc3QuY2MKQEAgLTI2LDEzICsyNiwxMiBAQAog
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcjogbWhldWxlQGdvb2dsZS5jb20gKE1hcmt1cyBIZXVsZSkKKwogLy8KIC8vIFRoaXMgdGVz
dCB2ZXJpZmllcyB0aGF0IGl0J3MgcG9zc2libGUgdG8gdXNlIEdvb2dsZSBUZXN0IGJ5IGluY2x1
ZGluZwogLy8gdGhlIGd0ZXN0LmggaGVhZGVyIGZpbGUgYWxvbmUuCiAKLSNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIG5hbWVzcGFjZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc3RyZXNzX3Rlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3N0cmVzc190ZXN0LmNjCmlu
ZGV4IGY1YWY3OGNjNmQzZjM5NWEwMGQ0ZDFjZTg1OTlmYTVmMWRmYTc2MjYuLjk1YWRhMzljMzM3
ZDBkNGVjZTZmZjViMzIzMmRlOTZjM2Q1OTg2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc3RyZXNzX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF9zdHJlc3NfdGVzdC5jYwpAQCAtMjYsMjMgKzI2LDE2IEBACiAv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0
aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCiAKIC8vIFRlc3RzIHRoYXQgU0NP
UEVEX1RSQUNFKCkgYW5kIHZhcmlvdXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBjYW4gYmUKIC8v
IHVzZWQgaW4gYSBsYXJnZSBudW1iZXIgb2YgdGhyZWFkcyBjb25jdXJyZW50bHkuCiAKLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKLSNpbmNsdWRl
IDxpb3N0cmVhbT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLS8vIFdlIG11c3QgZGVmaW5lIHRoaXMg
bWFjcm8gaW4gb3JkZXIgdG8gI2luY2x1ZGUKLS8vIGd0ZXN0LWludGVybmFsLWlubC5oLiAgVGhp
cyBpcyBob3cgR29vZ2xlIFRlc3QgcHJldmVudHMgYSB1c2VyIGZyb20KLS8vIGFjY2lkZW50YWxs
eSBkZXBlbmRpbmcgb24gaXRzIGludGVybmFsIGltcGxlbWVudGF0aW9uLgotI2RlZmluZSBHVEVT
VF9JTVBMRU1FTlRBVElPTl8gMQogI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIK
LSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KIAogI2lmIEdURVNUX0lTX1RIUkVBRFNBRkUK
IApAQCAtNTAsNyArNDMsNiBAQCBuYW1lc3BhY2UgdGVzdGluZyB7CiBuYW1lc3BhY2UgewogCiB1
c2luZyBpbnRlcm5hbDo6Tm90aWZpY2F0aW9uOwotdXNpbmcgaW50ZXJuYWw6OlN0cmluZzsKIHVz
aW5nIGludGVybmFsOjpUZXN0UHJvcGVydHlLZXlJczsKIHVzaW5nIGludGVybmFsOjpUaHJlYWRX
aXRoUGFyYW07CiB1c2luZyBpbnRlcm5hbDo6c2NvcGVkX3B0cjsKQEAgLTYyLDEzICs1NCwxMyBA
QCB1c2luZyBpbnRlcm5hbDo6c2NvcGVkX3B0cjsKIC8vIEhvdyBtYW55IHRocmVhZHMgdG8gY3Jl
YXRlPwogY29uc3QgaW50IGtUaHJlYWRDb3VudCA9IDUwOwogCi1TdHJpbmcgSWRUb0tleShpbnQg
aWQsIGNvbnN0IGNoYXIqIHN1ZmZpeCkgeworc3RkOjpzdHJpbmcgSWRUb0tleShpbnQgaWQsIGNv
bnN0IGNoYXIqIHN1ZmZpeCkgewogICBNZXNzYWdlIGtleTsKICAga2V5IDw8ICJrZXlfIiA8PCBp
ZCA8PCAiXyIgPDwgc3VmZml4OwogICByZXR1cm4ga2V5LkdldFN0cmluZygpOwogfQogCi1TdHJp
bmcgSWRUb1N0cmluZyhpbnQgaWQpIHsKK3N0ZDo6c3RyaW5nIElkVG9TdHJpbmcoaW50IGlkKSB7
CiAgIE1lc3NhZ2UgaWRfbWVzc2FnZTsKICAgaWRfbWVzc2FnZSA8PCBpZDsKICAgcmV0dXJuIGlk
X21lc3NhZ2UuR2V0U3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X3Rlc3RfbWFjcm9fc3RhY2tfZm9vdHByaW50X3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RfbWFjcm9fc3RhY2tfZm9vdHByaW50X3Rl
c3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTQ4ZGIwNTAxMmNjMzBlMGVkZjRhMTM1NGZmMzkyYzkyZDAwMGJm
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
dGVzdF9tYWNyb19zdGFja19mb290cHJpbnRfdGVzdC5jYwpAQCAtMCwwICsxLDg5IEBACisvLyBD
b3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3Ry
aWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vCisvLyBFYWNoIFRF
U1QoKSBleHBhbmRzIHRvIHNvbWUgc3RhdGljIHJlZ2lzdHJhdGlvbiBsb2dpYy4gIEdDQyBwdXRz
IGFsbAorLy8gc3VjaCBzdGF0aWMgaW5pdGlhbGl6YXRpb24gbG9naWMgZm9yIGEgdHJhbnNsYXRp
b24gdW5pdCBpbiBhIGNvbW1vbiwKKy8vIGludGVybmFsIGZ1bmN0aW9uLiAgU2luY2UgR29vZ2xl
J3MgYnVpbGQgc3lzdGVtIHJlc3RyaWN0cyBob3cgbXVjaAorLy8gc3RhY2sgc3BhY2UgYSBmdW5j
dGlvbiBjYW4gdXNlLCB0aGVyZSdzIGEgbGltaXQgb24gaG93IG1hbnkgVEVTVCgpcworLy8gb25l
IGNhbiBwdXQgaW4gYSBzaW5nbGUgQysrIHRlc3QgZmlsZS4gIFRoaXMgdGVzdCBlbnN1cmVzIHRo
YXQgYSBsYXJnZQorLy8gbnVtYmVyIG9mIFRFU1QoKXMgY2FuIGJlIGRlZmluZWQgaW4gdGhlIHNh
bWUgdHJhbnNsYXRpb24gdW5pdC4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKy8vIFRo
aXMgbWFjcm8gZGVmaW5lcyAxMCBkdW1teSB0ZXN0cy4KKyNkZWZpbmUgVEVOX1RFU1RTXyh0ZXN0
X2Nhc2VfbmFtZSkgXAorICBURVNUKHRlc3RfY2FzZV9uYW1lLCBUMCkge30gXAorICBURVNUKHRl
c3RfY2FzZV9uYW1lLCBUMSkge30gXAorICBURVNUKHRlc3RfY2FzZV9uYW1lLCBUMikge30gXAor
ICBURVNUKHRlc3RfY2FzZV9uYW1lLCBUMykge30gXAorICBURVNUKHRlc3RfY2FzZV9uYW1lLCBU
NCkge30gXAorICBURVNUKHRlc3RfY2FzZV9uYW1lLCBUNSkge30gXAorICBURVNUKHRlc3RfY2Fz
ZV9uYW1lLCBUNikge30gXAorICBURVNUKHRlc3RfY2FzZV9uYW1lLCBUNykge30gXAorICBURVNU
KHRlc3RfY2FzZV9uYW1lLCBUOCkge30gXAorICBURVNUKHRlc3RfY2FzZV9uYW1lLCBUOSkge30K
KworLy8gVGhpcyBtYWNybyBkZWZpbmVzIDEwMCBkdW1teSB0ZXN0cy4KKyNkZWZpbmUgSFVORFJF
RF9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4KSBcCisgIFRFTl9URVNUU18odGVzdF9jYXNl
X25hbWVfcHJlZml4ICMjIDApIFwKKyAgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXgg
IyMgMSkgXAorICBURU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyAyKSBcCisgIFRF
Tl9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDMpIFwKKyAgVEVOX1RFU1RTXyh0ZXN0
X2Nhc2VfbmFtZV9wcmVmaXggIyMgNCkgXAorICBURU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3By
ZWZpeCAjIyA1KSBcCisgIFRFTl9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDYpIFwK
KyAgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgNykgXAorICBURU5fVEVTVFNf
KHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyA4KSBcCisgIFRFTl9URVNUU18odGVzdF9jYXNlX25h
bWVfcHJlZml4ICMjIDkpCisKKy8vIFRoaXMgbWFjcm8gZGVmaW5lcyAxMDAwIGR1bW15IHRlc3Rz
LgorI2RlZmluZSBUSE9VU0FORF9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4KSBcCisgIEhV
TkRSRURfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyAwKSBcCisgIEhVTkRSRURfVEVT
VFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyAxKSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3Rf
Y2FzZV9uYW1lX3ByZWZpeCAjIyAyKSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3RfY2FzZV9uYW1l
X3ByZWZpeCAjIyAzKSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAj
IyA0KSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyA1KSBcCisg
IEhVTkRSRURfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyA2KSBcCisgIEhVTkRSRURf
VEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyA3KSBcCisgIEhVTkRSRURfVEVTVFNfKHRl
c3RfY2FzZV9uYW1lX3ByZWZpeCAjIyA4KSBcCisgIEhVTkRSRURfVEVTVFNfKHRlc3RfY2FzZV9u
YW1lX3ByZWZpeCAjIyA5KQorCisvLyBFbnN1cmVzIHRoYXQgd2UgY2FuIGRlZmluZSAxMDAwIFRF
U1QoKXMgaW4gdGhlIHNhbWUgdHJhbnNsYXRpb24KKy8vIHVuaXQuCitUSE9VU0FORF9URVNUU18o
VCkKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIHRlc3Rpbmc6OkluaXRH
b29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICAvLyBXZSBkb24ndCBhY3R1YWxseSBuZWVkIHRv
IHJ1biB0aGUgZHVtbXkgdGVzdHMgLSB0aGUgcHVycG9zZSBpcyB0bworICAvLyBlbnN1cmUgdGhh
dCB0aGV5IGNvbXBpbGUuCisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5IGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5CmluZGV4IGUwZjU5NzNlN2VhNmY4MWU2NjZj
MzEyMWMzYzhmYTg0M2Y0MzRmNjEuLjQzY2JhOGY0Y2Q2MWRmZmYzYTFhNTIxMDFiZWQzZTczNGE1
ZTFiNTQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGVz
dF91dGlscy5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3Rf
dXRpbHMucHkKQEAgLTEsNSArMSwzIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKICMgQ29w
eXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCiAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCkBAIC0y
OSwyMCArMjcsMjEgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSIiIlVuaXQg
dGVzdCB1dGlsaXRpZXMgZm9yIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsuIiIiCisiIiJV
bml0IHRlc3QgdXRpbGl0aWVzIGZvciBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJh
bWV3b3JrLiIiIgorIyBTdXBwcmVzc2VzIHRoZSAnSW1wb3J0IG5vdCBhdCB0aGUgdG9wIG9mIHRo
ZSBmaWxlJyBsaW50IGNvbXBsYWludC4KKyMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjIwNAorCitp
bXBvcnQgb3MKK2ltcG9ydCBzeXMKIAotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhh
bnlvbmcgV2FuKScKK0lTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdudCcKK0lTX0NZR1dJTiA9IG9z
Lm5hbWUgPT0gJ3Bvc2l4JyBhbmQgJ0NZR1dJTicgaW4gb3MudW5hbWUoKVswXQogCiBpbXBvcnQg
YXRleGl0Ci1pbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKLWltcG9ydCBzeXMKIGltcG9ydCB0ZW1w
ZmlsZQotaW1wb3J0IHVuaXR0ZXN0Ci1fdGVzdF9tb2R1bGUgPSB1bml0dGVzdAoraW1wb3J0IHVu
aXR0ZXN0IGFzIF90ZXN0X21vZHVsZQogCi0jIFN1cHByZXNzZXMgdGhlICdJbXBvcnQgbm90IGF0
IHRoZSB0b3Agb2YgdGhlIGZpbGUnIGxpbnQgY29tcGxhaW50LgotIyBweWxpbnQ6IGRpc2FibGUt
bXNnPUM2MjA0CiB0cnk6CiAgIGltcG9ydCBzdWJwcm9jZXNzCiAgIF9TVUJQUk9DRVNTX01PRFVM
RV9BVkFJTEFCTEUgPSBUcnVlCkBAIC01MywxOCArNTIsMzAgQEAgZXhjZXB0OgogCiBHVEVTVF9P
VVRQVVRfVkFSX05BTUUgPSAnR1RFU1RfT1VUUFVUJwogCi1JU19XSU5ET1dTID0gb3MubmFtZSA9
PSAnbnQnCi1JU19DWUdXSU4gPSBvcy5uYW1lID09ICdwb3NpeCcgYW5kICdDWUdXSU4nIGluIG9z
LnVuYW1lKClbMF0KKyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciBzcGVjaWZ5aW5nIHRo
ZSBwYXRoIHRvIHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlLgorUFJFTUFUVVJFX0VYSVRfRklMRV9F
TlZfVkFSID0gJ1RFU1RfUFJFTUFUVVJFX0VYSVRfRklMRScKKworZW52aXJvbiA9IG9zLmVudmly
b24uY29weSgpCisKKworZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6CisgICIiIlNldHMv
dW5zZXRzIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEgZ2l2ZW4gdmFsdWUuIiIiCisKKyAg
aWYgdmFsdWUgaXMgbm90IE5vbmU6CisgICAgZW52aXJvbltlbnZfdmFyXSA9IHZhbHVlCisgIGVs
aWYgZW52X3ZhciBpbiBlbnZpcm9uOgorICAgIGRlbCBlbnZpcm9uW2Vudl92YXJdCisKIAogIyBI
ZXJlIHdlIGV4cG9zZSBhIGNsYXNzIGZyb20gYSBwYXJ0aWN1bGFyIG1vZHVsZSwgZGVwZW5kaW5n
IG9uIHRoZQogIyBlbnZpcm9ubWVudC4gVGhlIGNvbW1lbnQgc3VwcHJlc3NlcyB0aGUgJ0ludmFs
aWQgdmFyaWFibGUgbmFtZScgbGludAogIyBjb21wbGFpbnQuCi1UZXN0Q2FzZSA9IF90ZXN0X21v
ZHVsZS5UZXN0Q2FzZSAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2NDA5CitUZXN0Q2FzZSA9IF90
ZXN0X21vZHVsZS5UZXN0Q2FzZSAgIyBweWxpbnQ6IGRpc2FibGU9QzY0MDkKIAogIyBJbml0aWFs
bHkgbWFwcyBhIGZsYWcgdG8gaXRzIGRlZmF1bHQgdmFsdWUuIEFmdGVyCiAjIF9QYXJzZUFuZFN0
cmlwR1Rlc3RGbGFncygpIGlzIGNhbGxlZCwgbWFwcyBhIGZsYWcgdG8gaXRzIGFjdHVhbCB2YWx1
ZS4KLV9mbGFnX21hcCA9IHsnZ3Rlc3Rfc291cmNlX2Rpcic6IG9zLnBhdGguZGlybmFtZShzeXMu
YXJndlswXSksCi0gICAgICAgICAgICAgJ2d0ZXN0X2J1aWxkX2Rpcic6IG9zLnBhdGguZGlybmFt
ZShzeXMuYXJndlswXSl9CitfZmxhZ19tYXAgPSB7J3NvdXJjZV9kaXInOiBvcy5wYXRoLmRpcm5h
bWUoc3lzLmFyZ3ZbMF0pLAorICAgICAgICAgICAgICdidWlsZF9kaXInOiBvcy5wYXRoLmRpcm5h
bWUoc3lzLmFyZ3ZbMF0pfQogX2d0ZXN0X2ZsYWdzX2FyZV9wYXJzZWQgPSBGYWxzZQogCiAKQEAg
LTczLDcgKzg0LDcgQEAgZGVmIF9QYXJzZUFuZFN0cmlwR1Rlc3RGbGFncyhhcmd2KToKIAogICAj
IFN1cHByZXNzZXMgdGhlIGxpbnQgY29tcGxhaW50IGFib3V0IGEgZ2xvYmFsIHZhcmlhYmxlIHNp
bmNlIHdlIG5lZWQgaXQKICAgIyBoZXJlIHRvIG1haW50YWluIG1vZHVsZS13aWRlIHN0YXRlLgot
ICBnbG9iYWwgX2d0ZXN0X2ZsYWdzX2FyZV9wYXJzZWQgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1X
MDYwMworICBnbG9iYWwgX2d0ZXN0X2ZsYWdzX2FyZV9wYXJzZWQgICMgcHlsaW50OiBkaXNhYmxl
PVcwNjAzCiAgIGlmIF9ndGVzdF9mbGFnc19hcmVfcGFyc2VkOgogICAgIHJldHVybgogCkBAIC0x
MTEsMTMgKzEyMiwxMyBAQCBkZWYgR2V0RmxhZyhmbGFnKToKIGRlZiBHZXRTb3VyY2VEaXIoKToK
ICAgIiIiUmV0dXJucyB0aGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgZGlyZWN0b3J5IHdoZXJlIHRo
ZSAucHkgZmlsZXMgYXJlLiIiIgogCi0gIHJldHVybiBvcy5wYXRoLmFic3BhdGgoR2V0RmxhZygn
Z3Rlc3Rfc291cmNlX2RpcicpKQorICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKEdldEZsYWcoJ3Nv
dXJjZV9kaXInKSkKIAogCiBkZWYgR2V0QnVpbGREaXIoKToKICAgIiIiUmV0dXJucyB0aGUgYWJz
b2x1dGUgcGF0aCBvZiB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSB0ZXN0IGJpbmFyaWVzIGFyZS4i
IiIKIAotICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKEdldEZsYWcoJ2d0ZXN0X2J1aWxkX2Rpcicp
KQorICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKEdldEZsYWcoJ2J1aWxkX2RpcicpKQogCiAKIF90
ZW1wX2RpciA9IE5vbmUKQEAgLTEzMCw4ICsxNDEsNiBAQCBhdGV4aXQucmVnaXN0ZXIoX1JlbW92
ZVRlbXBEaXIpCiAKIAogZGVmIEdldFRlbXBEaXIoKToKLSAgIiIiUmV0dXJucyBhIGRpcmVjdG9y
eSBmb3IgdGVtcG9yYXJ5IGZpbGVzLiIiIgotCiAgIGdsb2JhbCBfdGVtcF9kaXIKICAgaWYgbm90
IF90ZW1wX2RpcjoKICAgICBfdGVtcF9kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKQEAgLTE2MCwx
MyArMTY5LDkgQEAgZGVmIEdldFRlc3RFeGVjdXRhYmxlUGF0aChleGVjdXRhYmxlX25hbWUsIGJ1
aWxkX2Rpcj1Ob25lKToKIAogICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aCk6CiAgICAgbWVz
c2FnZSA9ICgKLSAgICAgICAgJ1VuYWJsZSB0byBmaW5kIHRoZSB0ZXN0IGJpbmFyeS4gUGxlYXNl
IG1ha2Ugc3VyZSB0byBwcm92aWRlIHBhdGhcbicKLSAgICAgICAgJ3RvIHRoZSBiaW5hcnkgdmlh
IHRoZSAtLWd0ZXN0X2J1aWxkX2RpciBmbGFnIG9yIHRoZSBHVEVTVF9CVUlMRF9ESVJcbicKLSAg
ICAgICAgJ2Vudmlyb25tZW50IHZhcmlhYmxlLiBGb3IgY29udmVuaWVudCB1c2UsIGludm9rZSB0
aGlzIHNjcmlwdCB2aWFcbicKLSAgICAgICAgJ21rX3Rlc3QucHkuXG4nCi0gICAgICAgICMgVE9E
Tyh2bGFkbEBnb29nbGUuY29tKTogY2hhbmdlIG1rX3Rlc3QucHkgdG8gdGVzdC5weSBhZnRlciBy
ZW5hbWluZwotICAgICAgICAjIHRoZSBmaWxlLgotICAgICAgICAnUGxlYXNlIHJ1biBta190ZXN0
LnB5IC1oIGZvciBoZWxwLicpCisgICAgICAgICdVbmFibGUgdG8gZmluZCB0aGUgdGVzdCBiaW5h
cnkgIiVzIi4gUGxlYXNlIG1ha2Ugc3VyZSB0byBwcm92aWRlXG4nCisgICAgICAgICdhIHBhdGgg
dG8gdGhlIGJpbmFyeSB2aWEgdGhlIC0tYnVpbGRfZGlyIGZsYWcgb3IgdGhlIEJVSUxEX0RJUlxu
JworICAgICAgICAnZW52aXJvbm1lbnQgdmFyaWFibGUuJyAlIHBhdGgpCiAgICAgcHJpbnQgPj4g
c3lzLnN0ZGVyciwgbWVzc2FnZQogICAgIHN5cy5leGl0KDEpCiAKQEAgLTIzNCw3ICsyMzksNyBA
QCBjbGFzcyBTdWJwcm9jZXNzOgogICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVy
cj1zdGRlcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9d29ya2luZ19kaXIsIHVu
aXZlcnNhbF9uZXdsaW5lcz1UcnVlLCBlbnY9ZW52KQotICAgICAgIyBjb21tdW5pY2F0ZSByZXR1
cm5zIGEgdHVwbGUgd2l0aCB0aGUgZmlsZSBvYmVjdCBmb3IgdGhlIGNoaWxkJ3MKKyAgICAgICMg
Y29tbXVuaWNhdGUgcmV0dXJucyBhIHR1cGxlIHdpdGggdGhlIGZpbGUgb2JqZWN0IGZvciB0aGUg
Y2hpbGQncwogICAgICAgIyBvdXRwdXQuCiAgICAgICBzZWxmLm91dHB1dCA9IHAuY29tbXVuaWNh
dGUoKVswXQogICAgICAgc2VsZi5fcmV0dXJuX2NvZGUgPSBwLnJldHVybmNvZGUKQEAgLTI0NSw3
ICsyNTAsNyBAQCBjbGFzcyBTdWJwcm9jZXNzOgogICAgICAgICAjIENoYW5nZXMgbWFkZSBieSBv
cy5lbnZpcm9uLmNsZWFyIGFyZSBub3QgaW5oZXJpdGFibGUgYnkgY2hpbGQKICAgICAgICAgIyBw
cm9jZXNzZXMgdW50aWwgUHl0aG9uIDIuNi4gVG8gcHJvZHVjZSBpbmhlcml0YWJsZSBjaGFuZ2Vz
IHdlIGhhdmUKICAgICAgICAgIyB0byBkZWxldGUgZW52aXJvbm1lbnQgaXRlbXMgd2l0aCB0aGUg
ZGVsIHN0YXRlbWVudC4KLSAgICAgICAgZm9yIGtleSBpbiBkZXN0OgorICAgICAgICBmb3Iga2V5
IGluIGRlc3Qua2V5cygpOgogICAgICAgICAgIGRlbCBkZXN0W2tleV0KICAgICAgICAgZGVzdC51
cGRhdGUoc3JjKQogCkBAIC0zMDEsNyArMzA2LDcgQEAgZGVmIE1haW4oKToKICAgX1BhcnNlQW5k
U3RyaXBHVGVzdEZsYWdzKHN5cy5hcmd2KQogICAjIFRoZSB0ZXN0ZWQgYmluYXJpZXMgc2hvdWxk
IG5vdCBiZSB3cml0aW5nIFhNTCBvdXRwdXQgZmlsZXMgdW5sZXNzIHRoZQogICAjIHNjcmlwdCBl
eHBsaWNpdGx5IGluc3RydWN0cyB0aGVtIHRvLgotICAjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6
IE1vdmUgdGhpcyBpbnRvIFN1YnByb2Nlc3Mgd2hlbiB3ZSBpbXBsZW1lbnQKKyAgIyBGSVhNRTog
TW92ZSB0aGlzIGludG8gU3VicHJvY2VzcyB3aGVuIHdlIGltcGxlbWVudAogICAjIHBhc3Npbmcg
ZW52aXJvbm1lbnQgaW50byBpdCBhcyBhIHBhcmFtZXRlci4KICAgaWYgR1RFU1RfT1VUUFVUX1ZB
Ul9OQU1FIGluIG9zLmVudmlyb246CiAgICAgZGVsIG9zLmVudmlyb25bR1RFU1RfT1VUUFVUX1ZB
Ul9OQU1FXQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90
ZXN0YnJpZGdlX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rl
c3RicmlkZ2VfdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2ZmYWQ3M2Q0MDA2NTI5OGYzMDUwMGRlODI0
ZDgwOGI2NTcxZDhkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF90ZXN0YnJpZGdlX3Rlc3QucHkKQEAgLTAsMCArMSw2MyBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDE4IEdvb2dsZSBMTEMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVz
dCB1c2VzIGZpbHRlciBwcm92aWRlZCB2aWEgdGVzdGJyaWRnZS4iIiIKKworaW1wb3J0IG9zCisK
K2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKK2JpbmFyeV9uYW1lID0gJ2d0ZXN0X3Rlc3Ricmlk
Z2VfdGVzdF8nCitDT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBh
dGgoYmluYXJ5X25hbWUpCitURVNUQlJJREdFX05BTUUgPSAnVEVTVEJSSURHRV9URVNUX09OTFkn
CisKKworZGVmIEFzc2VydChjb25kaXRpb24pOgorICBpZiBub3QgY29uZGl0aW9uOgorICAgIHJh
aXNlIEFzc2VydGlvbkVycm9yCisKKworY2xhc3MgR1Rlc3RUZXN0RmlsdGVyVGVzdChndGVzdF90
ZXN0X3V0aWxzLlRlc3RDYXNlKToKKworICBkZWYgdGVzdFRlc3RFeGVjdXRpb25Jc0ZpbHRlcmVk
KHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgdGhlIHRlc3QgZmlsdGVyIGlzIHBpY2tlZCB1cCBm
cm9tIHRoZSB0ZXN0YnJpZGdlIGVudiB2YXIuIiIiCisgICAgc3VicHJvY2Vzc19lbnYgPSBvcy5l
bnZpcm9uLmNvcHkoKQorCisgICAgc3VicHJvY2Vzc19lbnZbVEVTVEJSSURHRV9OQU1FXSA9ICcq
LlRlc3RUaGF0U3VjY2VlZHMnCisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhD
T01NQU5ELCBlbnY9c3VicHJvY2Vzc19lbnYpCisKKyAgICBzZWxmLmFzc2VydEVxdWFscygwLCBw
LmV4aXRfY29kZSkKKworICAgIEFzc2VydCgnZmlsdGVyID0gKi5UZXN0VGhhdFN1Y2NlZWRzJyBp
biBwLm91dHB1dCkKKyAgICBBc3NlcnQoJ1sgICAgICAgT0sgXSBUZXN0RmlsdGVyVGVzdC5UZXN0
VGhhdFN1Y2NlZWRzJyBpbiBwLm91dHB1dCkKKyAgICBBc3NlcnQoJ1sgIFBBU1NFRCAgXSAxIHRl
c3QuJyBpbiBwLm91dHB1dCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVz
dF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF90ZXN0YnJpZGdlX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF90ZXN0YnJpZGdlX3Rlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0NjE3YjIwOWUxMGE5
ZDE3OTgzNjhlMjY0NjVhYWE2MjcxNWYwZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RicmlkZ2VfdGVzdF8uY2MKQEAgLTAsMCArMSw0
MyBAQAorLy8gQ29weXJpZ2h0IDIwMTgsIEdvb2dsZSBMTEMuCisvLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8v
IFRoaXMgcHJvZ3JhbSBpcyBtZWFudCB0byBiZSBydW4gYnkgZ3Rlc3RfdGVzdF9maWx0ZXJfdGVz
dC5weS4gIERvIG5vdCBydW4KKy8vIGl0IGRpcmVjdGx5LgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKKworLy8gVGhlc2UgdGVzdHMgYXJlIHVzZWQgdG8gZGV0ZWN0IGlmIGZpbHRlcmluZyBp
cyB3b3JraW5nLiBPbmx5CisvLyAnVGVzdFRoYXRTdWNjZWVkcycgc2hvdWxkIGV2ZXIgcnVuLgor
CitURVNUKFRlc3RGaWx0ZXJUZXN0LCBUZXN0VGhhdFN1Y2NlZWRzKSB7fQorCitURVNUKFRlc3RG
aWx0ZXJUZXN0LCBUZXN0VGhhdEZhaWxzKSB7CisgIEFTU0VSVF9UUlVFKGZhbHNlKSA8PCAiVGhp
cyB0ZXN0IHNob3VsZCBuZXZlciBiZSBydW4uIjsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9leF90ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3Qu
Y2MKaW5kZXggOGJmOWRjOTA1YjVmZjgzYWMwMjEwNDEzNDM1ODBmOTA5NzU0ODNjZS4uOTNmNTlk
NDljZmRiOTQ3NGRjYTYyMmMxN2EyYzk2NGFiMGJkNThmNCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX2V4
X3Rlc3QuY2MKQEAgLTI2LDEyICsyNiwxMSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKKwogCiAvLyBUZXN0cyBHb29nbGUgVGVzdCdzIHRocm93LW9uLWZhaWx1cmUgbW9k
ZSB3aXRoIGV4Y2VwdGlvbnMgZW5hYmxlZC4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Cisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUg
PHN0ZGlvLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X3Rocm93X29uX2ZhaWx1cmVfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCA1Njc4ZmZlYWY2ZmE2MWVmN2RjYjQ1YjhmMzRhMDM0MTE5MWFiZjZlLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0LnB5CisrKyAvZGV2L251bGwKQEAg
LTEsMTcxICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAw
OSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLSIiIlRlc3RzIEdvb2dsZSBUZXN0J3MgdGhyb3ctb24tZmFpbHVyZSBtb2RlIHdpdGggZXhj
ZXB0aW9ucyBkaXNhYmxlZC4KLQotVGhpcyBzY3JpcHQgaW52b2tlcyBndGVzdF90aHJvd19vbl9m
YWlsdXJlX3Rlc3RfIChhIHByb2dyYW0gd3JpdHRlbiB3aXRoCi1Hb29nbGUgVGVzdCkgd2l0aCBk
aWZmZXJlbnQgZW52aXJvbm1lbnRzIGFuZCBjb21tYW5kIGxpbmUgZmxhZ3MuCi0iIiIKLQotX19h
dXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IG9zCi1p
bXBvcnQgZ3Rlc3RfdGVzdF91dGlscwotCi0KLSMgQ29uc3RhbnRzLgotCi0jIFRoZSBjb21tYW5k
IGxpbmUgZmxhZyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1v
ZGUuCi1USFJPV19PTl9GQUlMVVJFID0gJ2d0ZXN0X3Rocm93X29uX2ZhaWx1cmUnCi0KLSMgUGF0
aCB0byB0aGUgZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0XyBwcm9ncmFtLCBjb21waWxlZCB3
aXRoCi0jIGV4Y2VwdGlvbnMgZGlzYWJsZWQuCi1FWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
R2V0VGVzdEV4ZWN1dGFibGVQYXRoKAotICAgICdndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3Rf
JykKLQotCi0jIFV0aWxpdGllcy4KLQotCi1kZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToK
LSAgIiIiU2V0cyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIGdpdmVuIHZhbHVlOyB1bnNl
dHMgaXQgd2hlbiB0aGUKLSAgZ2l2ZW4gdmFsdWUgaXMgTm9uZS4KLSAgIiIiCi0KLSAgZW52X3Zh
ciA9IGVudl92YXIudXBwZXIoKQotICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICBvcy5lbnZp
cm9uW2Vudl92YXJdID0gdmFsdWUKLSAgZWxpZiBlbnZfdmFyIGluIG9zLmVudmlyb246Ci0gICAg
ZGVsIG9zLmVudmlyb25bZW52X3Zhcl0KLQotCi1kZWYgUnVuKGNvbW1hbmQpOgotICAiIiJSdW5z
IGEgY29tbWFuZDsgcmV0dXJucyBUcnVlL0ZhbHNlIGlmIGl0cyBleGl0IGNvZGUgaXMvaXNuJ3Qg
MC4iIiIKLQotICBwcmludCAnUnVubmluZyAiJXMiLiAuIC4nICUgJyAnLmpvaW4oY29tbWFuZCkK
LSAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kKQotICByZXR1cm4gcC5l
eGl0ZWQgYW5kIHAuZXhpdF9jb2RlID09IDAKLQotCi0jIFRoZSB0ZXN0cy4gIFRPRE8od2FuQGdv
b2dsZS5jb20pOiByZWZhY3RvciB0aGUgY2xhc3MgdG8gc2hhcmUgY29tbW9uCi0jIGxvZ2ljIHdp
dGggY29kZSBpbiBndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0LnB5LgotY2xhc3MgVGhy
b3dPbkZhaWx1cmVUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgotICAiIiJUZXN0cyB0
aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLiIiIgotCi0gIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwg
ZW52X3Zhcl92YWx1ZSwgZmxhZ192YWx1ZSwgc2hvdWxkX2ZhaWwpOgotICAgICIiIlJ1bnMgZ3Rl
c3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0XyBhbmQgdmVyaWZpZXMgdGhhdCBpdCBkb2VzCi0gICAg
KG9yIGRvZXMgbm90KSBleGl0IHdpdGggYSBub24temVybyBjb2RlLgotCi0gICAgQXJnczoKLSAg
ICAgIGVudl92YXJfdmFsdWU6ICAgIHZhbHVlIG9mIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJF
IGVudmlyb25tZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZTsgTm9uZSBpZiB0
aGUgdmFyaWFibGUgc2hvdWxkIGJlIHVuc2V0LgotICAgICAgZmxhZ192YWx1ZTogICAgICAgdmFs
dWUgb2YgdGhlIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnOwotICAgICAgICAgICAgICAg
ICAgICAgICAgTm9uZSBpZiB0aGUgZmxhZyBzaG91bGQgbm90IGJlIHByZXNlbnQuCi0gICAgICBz
aG91bGRfZmFpbDogICAgICBUcnVlIGlmZiB0aGUgcHJvZ3JhbSBpcyBleHBlY3RlZCB0byBmYWls
LgotICAgICIiIgotCi0gICAgU2V0RW52VmFyKFRIUk9XX09OX0ZBSUxVUkUsIGVudl92YXJfdmFs
dWUpCi0KLSAgICBpZiBlbnZfdmFyX3ZhbHVlIGlzIE5vbmU6Ci0gICAgICBlbnZfdmFyX3ZhbHVl
X21zZyA9ICcgaXMgbm90IHNldCcKLSAgICBlbHNlOgotICAgICAgZW52X3Zhcl92YWx1ZV9tc2cg
PSAnPScgKyBlbnZfdmFyX3ZhbHVlCi0KLSAgICBpZiBmbGFnX3ZhbHVlIGlzIE5vbmU6Ci0gICAg
ICBmbGFnID0gJycKLSAgICBlbGlmIGZsYWdfdmFsdWUgPT0gJzAnOgotICAgICAgZmxhZyA9ICct
LSVzPTAnICUgVEhST1dfT05fRkFJTFVSRQotICAgIGVsc2U6Ci0gICAgICBmbGFnID0gJy0tJXMn
ICUgVEhST1dfT05fRkFJTFVSRQotCi0gICAgY29tbWFuZCA9IFtFWEVfUEFUSF0KLSAgICBpZiBm
bGFnOgotICAgICAgY29tbWFuZC5hcHBlbmQoZmxhZykKLQotICAgIGlmIHNob3VsZF9mYWlsOgot
ICAgICAgc2hvdWxkX29yX25vdCA9ICdzaG91bGQnCi0gICAgZWxzZToKLSAgICAgIHNob3VsZF9v
cl9ub3QgPSAnc2hvdWxkIG5vdCcKLQotICAgIGZhaWxlZCA9IG5vdCBSdW4oY29tbWFuZCkKLQot
ICAgIFNldEVudlZhcihUSFJPV19PTl9GQUlMVVJFLCBOb25lKQotCi0gICAgbXNnID0gKCd3aGVu
ICVzJXMsIGFuIGFzc2VydGlvbiBmYWlsdXJlIGluICIlcyIgJXMgY2F1c2UgYSBub24temVybyAn
Ci0gICAgICAgICAgICdleGl0IGNvZGUuJyAlCi0gICAgICAgICAgIChUSFJPV19PTl9GQUlMVVJF
LCBlbnZfdmFyX3ZhbHVlX21zZywgJyAnLmpvaW4oY29tbWFuZCksCi0gICAgICAgICAgICBzaG91
bGRfb3Jfbm90KSkKLSAgICBzZWxmLmFzc2VydF8oZmFpbGVkID09IHNob3VsZF9mYWlsLCBtc2cp
Ci0KLSAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3Ioc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhlIGJl
aGF2aW9yIG9mIHRoZSBkZWZhdWx0IG1vZGUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShl
bnZfdmFyX3ZhbHVlPU5vbmUsIGZsYWdfdmFsdWU9Tm9uZSwgc2hvdWxkX2ZhaWw9RmFsc2UpCi0K
LSAgZGVmIHRlc3RUaHJvd09uRmFpbHVyZUVudlZhcihzZWxmKToKLSAgICAiIiJUZXN0cyB1c2lu
ZyB0aGUgR1RFU1RfVEhST1dfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZS4iIiIKLQot
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAg
ICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFp
bD1GYWxzZSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAg
ICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAg
c2hvdWxkX2ZhaWw9VHJ1ZSkKLQotICBkZWYgdGVzdFRocm93T25GYWlsdXJlRmxhZyhzZWxmKToK
LSAgICAiIiJUZXN0cyB1c2luZyB0aGUgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlIGZsYWcuIiIi
Ci0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCi0gICAgICAgICAg
ICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxk
X2ZhaWw9RmFsc2UpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAot
ICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAg
ICAgIHNob3VsZF9mYWlsPVRydWUpCi0KLSAgZGVmIHRlc3RUaHJvd09uRmFpbHVyZUZsYWdPdmVy
cmlkZXNFbnZWYXIoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCAtLWd0ZXN0X3Rocm93X29uX2Zh
aWx1cmUgb3ZlcnJpZGVzIEdURVNUX1RIUk9XX09OX0ZBSUxVUkUuIiIiCi0KLSAgICBzZWxmLlJ1
bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFn
X3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1GYWxzZSkKLSAg
ICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAg
ICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1U
cnVlKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAotICAgICAgICAg
ICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIHNob3Vs
ZF9mYWlsPUZhbHNlKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAot
ICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAg
ICAgIHNob3VsZF9mYWlsPVRydWUpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAg
Z3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0Xy5jYwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggODhmYmQ1YTc2ZGM5MjA2ZjRhMDI5NTE0Yjg3NmRjMDE0MWUz
NmJmYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2MK
KysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xl
IEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlv
bmcgV2FuKQotCi0vLyBUZXN0cyBHb29nbGUgVGVzdCdzIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3
aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQuCi0vLwotLy8gVGhpcyBwcm9ncmFtIG11c3QgYmUgY29t
cGlsZWQgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLiAgSXQgd2lsbCBiZQotLy8gaW52b2tlZCBi
eSBndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3QucHksIGFuZCBpcyBleHBlY3RlZCB0byBleGl0
Ci0vLyB3aXRoIG5vbi16ZXJvIGluIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUgb3IgMCBvdGhl
cndpc2UuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1pbnQgbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpIHsKLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwot
Ci0gIC8vIFdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgcGVvcGxlIGNhbiB1c2UgR29vZ2xlIFRlc3Qg
YXNzZXJ0aW9ucyBpbgotICAvLyBvdGhlciB0ZXN0aW5nIGZyYW1ld29ya3MsIGFzIGxvbmcgYXMg
dGhleSBpbml0aWFsaXplIEdvb2dsZSBUZXN0Ci0gIC8vIHByb3Blcmx5IGFuZCBzZXQgdGhlIHRo
cm93bi1vbi1mYWlsdXJlIG1vZGUuICBUaGVyZWZvcmUsIHdlIGRvbid0Ci0gIC8vIHVzZSBHb29n
bGUgVGVzdCdzIGNvbnN0cnVjdHMgZm9yIGRlZmluaW5nIGFuZCBydW5uaW5nIHRlc3RzCi0gIC8v
IChlLmcuIFRFU1QgYW5kIFJVTl9BTExfVEVTVFMpIGhlcmUuCi0KLSAgLy8gSW4gdGhlIHRocm93
LW9uLWZhaWx1cmUgbW9kZSB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQsIHRoaXMKLSAgLy8gYXNz
ZXJ0aW9uIHdpbGwgY2F1c2UgdGhlIHByb2dyYW0gdG8gZXhpdCB3aXRoIGEgbm9uLXplcm8gY29k
ZS4KLSAgRVhQRUNUX0VRKDIsIDMpOwotCi0gIC8vIFdoZW4gbm90IGluIHRoZSB0aHJvdy1vbi1m
YWlsdXJlIG1vZGUsIHRoZSBjb250cm9sIHdpbGwgcmVhY2gKLSAgLy8gaGVyZS4KLSAgcmV0dXJu
IDA7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Vu
aW5pdGlhbGl6ZWRfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
dW5pbml0aWFsaXplZF90ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2YWU1
N2VlZWRhZmNmMDc1MDRkZDhkNWQ3YThiNWE3ZjgzODEzZjI3Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBA
QAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5j
LgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0j
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVmVyaWZp
ZXMgdGhhdCBHb29nbGUgVGVzdCB3YXJucyB0aGUgdXNlciB3aGVuIG5vdCBpbml0aWFsaXplZCBw
cm9wZXJseS4iIiIKLQotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KScKLQotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLQotCi1DT01NQU5EID0gZ3Rlc3RfdGVzdF91
dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdF8nKQot
Ci0KLWRlZiBBc3NlcnQoY29uZGl0aW9uKToKLSAgaWYgbm90IGNvbmRpdGlvbjoKLSAgICByYWlz
ZSBBc3NlcnRpb25FcnJvcgotCi0KLWRlZiBBc3NlcnRFcShleHBlY3RlZCwgYWN0dWFsKToKLSAg
aWYgZXhwZWN0ZWQgIT0gYWN0dWFsOgotICAgIHByaW50ICdFeHBlY3RlZDogJXMnICUgKGV4cGVj
dGVkLCkKLSAgICBwcmludCAnICBBY3R1YWw6ICVzJyAlIChhY3R1YWwsKQotICAgIHJhaXNlIEFz
c2VydGlvbkVycm9yCi0KLQotZGVmIFRlc3RFeGl0Q29kZUFuZE91dHB1dChjb21tYW5kKToKLSAg
IiIiUnVucyB0aGUgZ2l2ZW4gY29tbWFuZCBhbmQgdmVyaWZpZXMgaXRzIGV4aXQgY29kZSBhbmQg
b3V0cHV0LiIiIgotCi0gICMgVmVyaWZpZXMgdGhhdCAnY29tbWFuZCcgZXhpdHMgd2l0aCBjb2Rl
IDEuCi0gIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKLSAgQXNzZXJ0
KHAuZXhpdGVkKQotICBBc3NlcnRFcSgxLCBwLmV4aXRfY29kZSkKLSAgQXNzZXJ0KCdJbml0R29v
Z2xlVGVzdCcgaW4gcC5vdXRwdXQpCi0KLQotY2xhc3MgR1Rlc3RVbmluaXRpYWxpemVkVGVzdChn
dGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAgZGVmIHRlc3RFeGl0Q29kZUFuZE91dHB1dChz
ZWxmKToKLSAgICBUZXN0RXhpdENvZGVBbmRPdXRwdXQoQ09NTUFORCkKLQotCi1pZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgotICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3RfLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3Rf
LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOGIyYWE4MWRkNTRkOWM2NDNhNThk
ZTVlNDRkNmNjYjUyMGE3NzY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXpl
ZF90ZXN0Xy5jYworKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8vIENvcHlyaWdodCAy
MDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgot
Ly8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUu
Y29tIChaaGFueW9uZyBXYW4pCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1URVNUKER1
bW15VGVzdCwgRHVtbXkpIHsKLSAgLy8gVGhpcyB0ZXN0IGRvZXNuJ3QgdmVyaWZ5IGFueXRoaW5n
LiAgV2UganVzdCBuZWVkIGl0IHRvIGNyZWF0ZSBhCi0gIC8vIHJlYWxpc3RpYyBzdGFnZSBmb3Ig
dGVzdGluZyB0aGUgYmVoYXZpb3Igb2YgR29vZ2xlIFRlc3Qgd2hlbgotICAvLyBSVU5fQUxMX1RF
U1RTKCkgaXMgY2FsbGVkIHdpdGhvdXQgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKSBiZWluZwot
ICAvLyBjYWxsZWQgZmlyc3QuCi19Ci0KLWludCBtYWluKCkgewotICByZXR1cm4gUlVOX0FMTF9U
RVNUUygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pdHRl
c3QuY2MKaW5kZXggYTE0ZjA2NWEyY2NkODYzNzlhMDE0OWEzM2ZjNTY0NWMwZWM4YjE4MS4uZjcy
MTNmYmYzZTVlODcyMDg5YmZiOTg1NTFhYzNiYTNlM2E2N2JmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjCkBAIC0yNiwxOCArMjYsMTYgQEAK
IC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBB
dXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIC8vCiAvLyBUZXN0cyBmb3Ig
R29vZ2xlIFRlc3QgaXRzZWxmLiAgVGhpcyB2ZXJpZmllcyB0aGF0IHRoZSBiYXNpYyBjb25zdHJ1
Y3RzIG9mCiAvLyBHb29nbGUgVGVzdCB3b3JrLgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
LSNpbmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAotLy8gVmVyaWZp
ZXMgdGhhdCB0aGUgY29tbWFuZCBsaW5lIGZsYWcgdmFyaWFibGVzIGNhbiBiZSBhY2Nlc3NlZAot
Ly8gaW4gY29kZSBvbmNlIDxndGVzdC9ndGVzdC5oPiBoYXMgYmVlbiAjaW5jbHVkZWQuCi0vLyBE
byBub3QgbW92ZSBpdCBhZnRlciBvdGhlciAjaW5jbHVkZXMuCisvLyBWZXJpZmllcyB0aGF0IHRo
ZSBjb21tYW5kIGxpbmUgZmxhZyB2YXJpYWJsZXMgY2FuIGJlIGFjY2Vzc2VkIGluCisvLyBjb2Rl
IG9uY2UgImd0ZXN0LmgiIGhhcyBiZWVuICNpbmNsdWRlZC4KKy8vIERvIG5vdCBtb3ZlIGl0IGFm
dGVyIG90aGVyIGd0ZXN0ICNpbmNsdWRlcy4KIFRFU1QoQ29tbWFuZExpbmVGbGFnc1Rlc3QsIENh
bkJlQWNjZXNzZWRJbkNvZGVPbmNlR1Rlc3RISXNJbmNsdWRlZCkgewogICBib29sIGR1bW15ID0g
dGVzdGluZzo6R1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cykKICAgICAgIHx8IHRl
c3Rpbmc6OkdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSkKQEAgLTUyLDMwICs1MCwxMDUgQEAg
VEVTVChDb21tYW5kTGluZUZsYWdzVGVzdCwgQ2FuQmVBY2Nlc3NlZEluQ29kZU9uY2VHVGVzdEhJ
c0luY2x1ZGVkKSB7CiAgICAgICB8fCB0ZXN0aW5nOjpHVEVTVF9GTEFHKHNob3dfaW50ZXJuYWxf
c3RhY2tfZnJhbWVzKQogICAgICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyhzaHVmZmxlKQogICAg
ICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkgPiAwCisgICAgICB8
fCB0ZXN0aW5nOjpHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pICE9ICJ1bmtub3duIgogICAg
ICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKICAgRVhQRUNUX1RS
VUUoZHVtbXkgfHwgIWR1bW15KTsgIC8vIFN1cHByZXNzZXMgd2FybmluZyB0aGF0IGR1bW15IGlz
IHVudXNlZC4KIH0KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgotCi0vLyBJbmRpY2F0
ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0v
LyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5s
LmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBU
aGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNs
dWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVT
VF9JTVBMRU1FTlRBVElPTl8gMQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIK
LSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KLQogI2luY2x1ZGUgPGxpbWl0cy5oPiAgLy8g
Rm9yIElOVF9NQVguCiAjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAj
aW5jbHVkZSA8dGltZS5oPgogCiAjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHZlY3Rvcj4KKyNp
bmNsdWRlIDxvc3RyZWFtPgorI2lmIEdURVNUX0xBTkdfQ1hYMTEKKyNpbmNsdWRlIDx1bm9yZGVy
ZWRfc2V0PgorI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisKKyNpbmNsdWRlICJndGVzdC9n
dGVzdC1zcGkuaCIKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCiAKIG5hbWVz
cGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKKyNpZiBHVEVTVF9DQU5fU1RS
RUFNX1JFU1VMVFNfCisKK2NsYXNzIFN0cmVhbWluZ0xpc3RlbmVyVGVzdCA6IHB1YmxpYyBUZXN0
IHsKKyBwdWJsaWM6CisgIGNsYXNzIEZha2VTb2NrZXRXcml0ZXIgOiBwdWJsaWMgU3RyZWFtaW5n
TGlzdGVuZXI6OkFic3RyYWN0U29ja2V0V3JpdGVyIHsKKyAgIHB1YmxpYzoKKyAgICAvLyBTZW5k
cyBhIHN0cmluZyB0byB0aGUgc29ja2V0LgorICAgIHZpcnR1YWwgdm9pZCBTZW5kKGNvbnN0IHN0
ZDo6c3RyaW5nJiBtZXNzYWdlKSB7IG91dHB1dF8gKz0gbWVzc2FnZTsgfQorCisgICAgc3RkOjpz
dHJpbmcgb3V0cHV0XzsKKyAgfTsKKworICBTdHJlYW1pbmdMaXN0ZW5lclRlc3QoKQorICAgICAg
OiBmYWtlX3NvY2tfd3JpdGVyXyhuZXcgRmFrZVNvY2tldFdyaXRlciksCisgICAgICAgIHN0cmVh
bWVyXyhmYWtlX3NvY2tfd3JpdGVyXyksCisgICAgICAgIHRlc3RfaW5mb19vYmpfKCJGb29UZXN0
IiwgIkJhciIsIE5VTEwsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlv
bihfX0ZJTEVfXywgX19MSU5FX18pLCAwLCBOVUxMKSB7fQorCisgcHJvdGVjdGVkOgorICBzdGQ6
OnN0cmluZyogb3V0cHV0KCkgeyByZXR1cm4gJihmYWtlX3NvY2tfd3JpdGVyXy0+b3V0cHV0Xyk7
IH0KKworICBGYWtlU29ja2V0V3JpdGVyKiBjb25zdCBmYWtlX3NvY2tfd3JpdGVyXzsKKyAgU3Ry
ZWFtaW5nTGlzdGVuZXIgc3RyZWFtZXJfOworICBVbml0VGVzdCB1bml0X3Rlc3RfOworICBUZXN0
SW5mbyB0ZXN0X2luZm9fb2JqXzsgIC8vIFRoZSBuYW1lIHRlc3RfaW5mb18gd2FzIHRha2VuIGJ5
IHRlc3Rpbmc6OlRlc3QuCit9OworCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRl
c3RQcm9ncmFtRW5kKSB7CisgICpvdXRwdXQoKSA9ICIiOworICBzdHJlYW1lcl8uT25UZXN0UHJv
Z3JhbUVuZCh1bml0X3Rlc3RfKTsKKyAgRVhQRUNUX0VRKCJldmVudD1UZXN0UHJvZ3JhbUVuZCZw
YXNzZWQ9MVxuIiwgKm91dHB1dCgpKTsKK30KKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVz
dCwgT25UZXN0SXRlcmF0aW9uRW5kKSB7CisgICpvdXRwdXQoKSA9ICIiOworICBzdHJlYW1lcl8u
T25UZXN0SXRlcmF0aW9uRW5kKHVuaXRfdGVzdF8sIDQyKTsKKyAgRVhQRUNUX0VRKCJldmVudD1U
ZXN0SXRlcmF0aW9uRW5kJnBhc3NlZD0xJmVsYXBzZWRfdGltZT0wbXNcbiIsICpvdXRwdXQoKSk7
Cit9CisKK1RFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRlc3QsIE9uVGVzdENhc2VTdGFydCkgewor
ICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdENhc2VTdGFydChUZXN0Q2FzZSgi
Rm9vVGVzdCIsICJCYXIiLCBOVUxMLCBOVUxMKSk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdENh
c2VTdGFydCZuYW1lPUZvb1Rlc3RcbiIsICpvdXRwdXQoKSk7Cit9CisKK1RFU1RfRihTdHJlYW1p
bmdMaXN0ZW5lclRlc3QsIE9uVGVzdENhc2VFbmQpIHsKKyAgKm91dHB1dCgpID0gIiI7CisgIHN0
cmVhbWVyXy5PblRlc3RDYXNlRW5kKFRlc3RDYXNlKCJGb29UZXN0IiwgIkJhciIsIE5VTEwsIE5V
TEwpKTsKKyAgRVhQRUNUX0VRKCJldmVudD1UZXN0Q2FzZUVuZCZwYXNzZWQ9MSZlbGFwc2VkX3Rp
bWU9MG1zXG4iLCAqb3V0cHV0KCkpOworfQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0
LCBPblRlc3RTdGFydCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdFN0
YXJ0KHRlc3RfaW5mb19vYmpfKTsKKyAgRVhQRUNUX0VRKCJldmVudD1UZXN0U3RhcnQmbmFtZT1C
YXJcbiIsICpvdXRwdXQoKSk7Cit9CisKK1RFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRlc3QsIE9u
VGVzdEVuZCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdEVuZCh0ZXN0
X2luZm9fb2JqXyk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdEVuZCZwYXNzZWQ9MSZlbGFwc2Vk
X3RpbWU9MG1zXG4iLCAqb3V0cHV0KCkpOworfQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJU
ZXN0LCBPblRlc3RQYXJ0UmVzdWx0KSB7CisgICpvdXRwdXQoKSA9ICIiOworICBzdHJlYW1lcl8u
T25UZXN0UGFydFJlc3VsdChUZXN0UGFydFJlc3VsdCgKKyAgICAgIFRlc3RQYXJ0UmVzdWx0Ojpr
RmF0YWxGYWlsdXJlLCAiZm9vLmNjIiwgNDIsICJmYWlsZWQ9XG4mJSIpKTsKKworICAvLyBNZXRh
IGNoYXJhY3RlcnMgaW4gdGhlIGZhaWx1cmUgbWVzc2FnZSBzaG91bGQgYmUgcHJvcGVybHkgZXNj
YXBlZC4KKyAgRVhQRUNUX0VRKAorICAgICAgImV2ZW50PVRlc3RQYXJ0UmVzdWx0JmZpbGU9Zm9v
LmNjJmxpbmU9NDImbWVzc2FnZT1mYWlsZWQlM0QlMEElMjYlMjVcbiIsCisgICAgICAqb3V0cHV0
KCkpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKwogLy8gUHJv
dmlkZXMgYWNjZXNzIHRvIG90aGVyd2lzZSBwcml2YXRlIHBhcnRzIG9mIHRoZSBUZXN0RXZlbnRM
aXN0ZW5lcnMgY2xhc3MKIC8vIHRoYXQgYXJlIG5lZWRlZCB0byB0ZXN0IGl0LgogY2xhc3MgVGVz
dEV2ZW50TGlzdGVuZXJzQWNjZXNzb3IgewpAQCAtMTAyLDYgKzE3NSwxOCBAQCBjbGFzcyBUZXN0
RXZlbnRMaXN0ZW5lcnNBY2Nlc3NvciB7CiAgIH0KIH07CiAKK2NsYXNzIFVuaXRUZXN0UmVjb3Jk
UHJvcGVydHlUZXN0SGVscGVyIDogcHVibGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAgVW5pdFRl
c3RSZWNvcmRQcm9wZXJ0eVRlc3RIZWxwZXIoKSB7fQorCisgIC8vIEZvcndhcmRzIHRvIFVuaXRU
ZXN0OjpSZWNvcmRQcm9wZXJ0eSgpIHRvIGJ5cGFzcyBhY2Nlc3MgY29udHJvbHMuCisgIHZvaWQg
VW5pdFRlc3RSZWNvcmRQcm9wZXJ0eShjb25zdCBjaGFyKiBrZXksIGNvbnN0IHN0ZDo6c3RyaW5n
JiB2YWx1ZSkgeworICAgIHVuaXRfdGVzdF8uUmVjb3JkUHJvcGVydHkoa2V5LCB2YWx1ZSk7Cisg
IH0KKworICBVbml0VGVzdCB1bml0X3Rlc3RfOworfTsKKwogfSAgLy8gbmFtZXNwYWNlIGludGVy
bmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCkBAIC0xMTAsNiArMTk1LDcgQEAgdXNpbmcg
dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0OwogdXNpbmcgdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2Vz
czsKIHVzaW5nIHRlc3Rpbmc6OkRvdWJsZUxFOwogdXNpbmcgdGVzdGluZzo6RW1wdHlUZXN0RXZl
bnRMaXN0ZW5lcjsKK3VzaW5nIHRlc3Rpbmc6OkVudmlyb25tZW50OwogdXNpbmcgdGVzdGluZzo6
RmxvYXRMRTsKIHVzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVz
dHMpOwogdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJlKTsKQEAgLTEy
NSw2ICsyMTEsNyBAQCB1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHJlcGVhdCk7CiB1c2luZyB0
ZXN0aW5nOjpHVEVTVF9GTEFHKHNob3dfaW50ZXJuYWxfc3RhY2tfZnJhbWVzKTsKIHVzaW5nIHRl
c3Rpbmc6OkdURVNUX0ZMQUcoc2h1ZmZsZSk7CiB1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHN0
YWNrX3RyYWNlX2RlcHRoKTsKK3VzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcoc3RyZWFtX3Jlc3Vs
dF90byk7CiB1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpOwogdXNp
bmcgdGVzdGluZzo6SXNOb3RTdWJzdHJpbmc7CiB1c2luZyB0ZXN0aW5nOjpJc1N1YnN0cmluZzsK
QEAgLTEzMiw1MyArMjE5LDc4IEBAIHVzaW5nIHRlc3Rpbmc6Ok1lc3NhZ2U7CiB1c2luZyB0ZXN0
aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjsKIHVzaW5nIHRlc3Rpbmc6OlN0
YXRpY0Fzc2VydFR5cGVFcTsKIHVzaW5nIHRlc3Rpbmc6OlRlc3Q7Ci11c2luZyB0ZXN0aW5nOjpU
ZXN0RXZlbnRMaXN0ZW5lcnM7CiB1c2luZyB0ZXN0aW5nOjpUZXN0Q2FzZTsKK3VzaW5nIHRlc3Rp
bmc6OlRlc3RFdmVudExpc3RlbmVyczsKK3VzaW5nIHRlc3Rpbmc6OlRlc3RJbmZvOwogdXNpbmcg
dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ7CiB1c2luZyB0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdEFy
cmF5OwogdXNpbmcgdGVzdGluZzo6VGVzdFByb3BlcnR5OwogdXNpbmcgdGVzdGluZzo6VGVzdFJl
c3VsdDsKK3VzaW5nIHRlc3Rpbmc6OlRpbWVJbk1pbGxpczsKIHVzaW5nIHRlc3Rpbmc6OlVuaXRU
ZXN0OwotdXNpbmcgdGVzdGluZzo6a01heFN0YWNrVHJhY2VEZXB0aDsKK3VzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpBZGRSZWZlcmVuY2U7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlz
RmFsc2U7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZTsKIHVzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpBcHBlbmRVc2VyTWVzc2FnZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjpBcnJheUF3YXJlRmluZDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBcnJheUVxOwogdXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OkNvZGVQb2ludFRvVXRmODsKK3VzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjpDb3B5QXJyYXk7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q291bnRJZjsKIHVzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpFcUZhaWx1cmU7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Rmxv
YXRpbmdQb2ludDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRUaW1lSW5NaWxsaXNB
c1NlY29uZHM7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Rm9yRWFjaDsKK3VzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMTsKK3VzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHM7CiB1c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6R1Rlc3RGbGFnU2F2ZXI7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6
R2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcDsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjpHZXRFbGVtZW50T3I7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0TmV4dFJhbmRvbVNl
ZWQ7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0UmFuZG9tU2VlZEZyb21GbGFnOwogdXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldFRlc3RUeXBlSWQ7Cit1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6R2V0VGltZUluTWlsbGlzOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldFR5cGVJ
ZDsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRVbml0VGVzdEltcGw7Cit1c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6SW1wbGljaXRseUNvbnZlcnRpYmxlOwogdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OkludDMyOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkludDMyRnJvbUVudk9yRGll
OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OklzQVByb3RvY29sTWVzc2FnZTsKK3VzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpJc0NvbnRhaW5lcjsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJ
c0NvbnRhaW5lclRlc3Q7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SXNOb3RDb250YWluZXI7
Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6TmF0aXZlQXJyYXk7Cit1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6T3NTdGFja1RyYWNlR2V0dGVyOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6Ok9z
U3RhY2tUcmFjZUdldHRlckludGVyZmFjZTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpQYXJz
ZUludDMyRmxhZzsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpSZWxhdGlvblRvU291cmNlQ29w
eTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlOwor
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlJlbW92ZUNvbnN0OwordXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OlJlbW92ZVJlZmVyZW5jZTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaG91bGRS
dW5UZXN0T25TaGFyZDsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaG91bGRTaGFyZDsKIHVz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaG91bGRVc2VDb2xvcjsKIHVzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpTaHVmZmxlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlNodWZmbGVSYW5nZTsK
K3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTa2lwUHJlZml4OwogdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OlN0cmVhbWFibGVUb1N0cmluZzsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTdHJp
bmc7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I7
CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdFJlc3VsdEFjY2Vzc29yOwogdXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OlVJbnQzMjsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpVbml0VGVz
dEltcGw7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6V2lkZVN0cmluZ1RvVXRmODsKK3VzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjplZGl0X2Rpc3RhbmNlOjpDYWxjdWxhdGVPcHRpbWFsRWRpdHM7
Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6ZWRpdF9kaXN0YW5jZTo6Q3JlYXRlVW5pZmllZERp
ZmY7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6ZWRpdF9kaXN0YW5jZTo6RWRpdFR5cGU7CiB1
c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6a01heFJhbmRvbVNlZWQ7CiB1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6a1Rlc3RUeXBlSWRJbkdvb2dsZVRlc3Q7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6c2NvcGVkX3B0cjsKK3VzaW5nIHRlc3Rpbmc6OmtNYXhTdGFja1RyYWNlRGVwdGg7CiAKLSNp
ZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXworI2lmIEdURVNUX0hBU19TVFJFQU1fUkVE
SVJFQ1RJT04KIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpDYXB0dXJlU3Rkb3V0OwogdXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OkdldENhcHR1cmVkU3Rkb3V0OwotI2VuZGlmICAvLyBHVEVTVF9I
QVNfU1RSRUFNX1JFRElSRUNUSU9OXworI2VuZGlmCiAKICNpZiBHVEVTVF9JU19USFJFQURTQUZF
CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkV2l0aFBhcmFtOwpAQCAtMjY3LDYgKzM3
OSwzMSBAQCBURVNUKEdldFRlc3RUeXBlSWRUZXN0LCBSZXR1cm5zVGhlU2FtZVZhbHVlSW5zaWRl
T3JPdXRzaWRlT2ZHb29nbGVUZXN0KSB7CiAgIEVYUEVDVF9FUShrVGVzdFR5cGVJZEluR29vZ2xl
VGVzdCwgR2V0VGVzdFR5cGVJZCgpKTsKIH0KIAorLy8gVGVzdHMgQ2Fub25pY2FsaXplRm9yU3Rk
TGliVmVyc2lvbmluZy4KKwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q2Fub25pY2FsaXpl
Rm9yU3RkTGliVmVyc2lvbmluZzsKKworVEVTVChDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9u
aW5nLCBMZWF2ZXNVbnZlcnNpb25lZE5hbWVzVW5jaGFuZ2VkKSB7CisgIEVYUEVDVF9FUSgic3Rk
OjpiaW5kIiwgQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZygic3RkOjpiaW5kIikpOwor
ICBFWFBFQ1RfRVEoInN0ZDo6XyIsIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoInN0
ZDo6XyIpKTsKKyAgRVhQRUNUX0VRKCJzdGQ6Ol9fZm9vIiwgQ2Fub25pY2FsaXplRm9yU3RkTGli
VmVyc2lvbmluZygic3RkOjpfX2ZvbyIpKTsKKyAgRVhQRUNUX0VRKCJndGw6Ol9fMTo6eCIsIENh
bm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoImd0bDo6X18xOjp4IikpOworICBFWFBFQ1Rf
RVEoIl9fMTo6eCIsIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoIl9fMTo6eCIpKTsK
KyAgRVhQRUNUX0VRKCI6Ol9fMTo6eCIsIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmco
Ijo6X18xOjp4IikpOworfQorCitURVNUKENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcs
IEVsaWRlc0RvdWJsZVVuZGVyTmFtZXMpIHsKKyAgRVhQRUNUX0VRKCJzdGQ6OmJpbmQiLCBDYW5v
bmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJzdGQ6Ol9fMTo6YmluZCIpKTsKKyAgRVhQRUNU
X0VRKCJzdGQ6Ol8iLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJzdGQ6Ol9fMTo6
XyIpKTsKKworICBFWFBFQ1RfRVEoInN0ZDo6YmluZCIsIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZl
cnNpb25pbmcoInN0ZDo6X19nOjpiaW5kIikpOworICBFWFBFQ1RfRVEoInN0ZDo6XyIsIENhbm9u
aWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoInN0ZDo6X19nOjpfIikpOworCisgIEVYUEVDVF9F
USgic3RkOjpiaW5kIiwKKyAgICAgICAgICAgIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25p
bmcoInN0ZDo6X19nb29nbGU6OmJpbmQiKSk7CisgIEVYUEVDVF9FUSgic3RkOjpfIiwgQ2Fub25p
Y2FsaXplRm9yU3RkTGliVmVyc2lvbmluZygic3RkOjpfX2dvb2dsZTo6XyIpKTsKK30KKwogLy8g
VGVzdHMgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKCkuCiAKIFRFU1QoRm9ybWF0VGltZUlu
TWlsbGlzQXNTZWNvbmRzVGVzdCwgRm9ybWF0c1plcm8pIHsKQEAgLTI4OSwxMiArNDI2LDk5IEBA
IFRFU1QoRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzVGVzdCwgRm9ybWF0c05lZ2F0aXZlTnVt
YmVyKSB7CiAgIEVYUEVDVF9FUSgiLTMiLCBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHMoLTMw
MDApKTsKIH0KIAorLy8gVGVzdHMgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoKS4g
IFRoZSBjb3JyZWN0bmVzcyBvZiBjb252ZXJzaW9uCisvLyBmb3IgcGFydGljdWxhciBkYXRlcyBi
ZWxvdyB3YXMgdmVyaWZpZWQgaW4gUHl0aG9uIHVzaW5nCisvLyBkYXRldGltZS5kYXRldGltZS5m
cm9tdXRjdGltZXN0YW1wKDx0aW1ldGFtcD4vMTAwMCkuCisKKy8vIEZvcm1hdEVwb2NoVGltZUlu
TWlsbGlzQXNJc284NjAxIGRlcGVuZHMgb24gdGhlIGN1cnJlbnQgdGltZXpvbmUsIHNvIHdlCisv
LyBoYXZlIHRvIHNldCB1cCBhIHBhcnRpY3VsYXIgdGltZXpvbmUgdG8gb2J0YWluIHByZWRpY3Rh
YmxlIHJlc3VsdHMuCitjbGFzcyBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3Qg
OiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICAvLyBPbiBDeWd3aW4sIEdDQyBkb2Vzbid0IGFs
bG93IHVucXVhbGlmaWVkIGludGVnZXIgbGl0ZXJhbHMgdG8gZXhjZWVkCisgIC8vIDMyIGJpdHMs
IGV2ZW4gd2hlbiA2NC1iaXQgaW50ZWdlciB0eXBlcyBhcmUgYXZhaWxhYmxlLiAgV2UgaGF2ZSB0
bworICAvLyBmb3JjZSB0aGUgY29uc3RhbnRzIHRvIGhhdmUgYSA2NC1iaXQgdHlwZSBoZXJlLgor
ICBzdGF0aWMgY29uc3QgVGltZUluTWlsbGlzIGtNaWxsaXNQZXJTZWMgPSAxMDAwOworCisgcHJp
dmF0ZToKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIHNhdmVkX3R6XyA9IE5VTEw7CisK
KyAgICBHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BVU0hfKC8qIGdldGVudiwgc3RyZHVw
OiBkZXByZWNhdGVkICovKQorICAgIGlmIChnZXRlbnYoIlRaIikpCisgICAgICBzYXZlZF90el8g
PSBzdHJkdXAoZ2V0ZW52KCJUWiIpKTsKKyAgICBHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVE
X1BPUF8oKQorCisgICAgLy8gU2V0IHVwIHRoZSB0aW1lIHpvbmUgZm9yIEZvcm1hdEVwb2NoVGlt
ZUluTWlsbGlzQXNJc284NjAxIHRvIHVzZS4gIFdlCisgICAgLy8gY2Fubm90IHVzZSB0aGUgbG9j
YWwgdGltZSB6b25lIGJlY2F1c2UgdGhlIGZ1bmN0aW9uJ3Mgb3V0cHV0IGRlcGVuZHMKKyAgICAv
LyBvbiB0aGUgdGltZSB6b25lLgorICAgIFNldFRpbWVab25lKCJVVEMrMDAiKTsKKyAgfQorCisg
IHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBTZXRUaW1lWm9uZShzYXZlZF90el8pOwor
ICAgIGZyZWUoY29uc3RfY2FzdDxjaGFyKj4oc2F2ZWRfdHpfKSk7CisgICAgc2F2ZWRfdHpfID0g
TlVMTDsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFNldFRpbWVab25lKGNvbnN0IGNoYXIqIHRpbWVf
em9uZSkgeworICAgIC8vIHR6c2V0KCkgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIHRoZSBUWiB2YXJp
YWJsZSBiZWluZyBwcmVzZW50IGFuZCBlbXB0eQorICAgIC8vIGFuZCBub3QgYmVpbmcgcHJlc2Vu
dCwgc28gd2UgaGF2ZSB0byBjb25zaWRlciB0aGUgY2FzZSBvZiB0aW1lX3pvbmUKKyAgICAvLyBi
ZWluZyBOVUxMLgorI2lmIF9NU0NfVkVSIHx8IEdURVNUX09TX1dJTkRPV1NfTUlOR1cKKyAgICAv
LyAuLi5Vbmxlc3MgaXQncyBNU1ZDLCB3aG9zZSBzdGFuZGFyZCBsaWJyYXJ5J3MgX3B1dGVudiBk
b2Vzbid0CisgICAgLy8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhbiBlbXB0eSBhbmQgYSBtaXNzaW5n
IHZhcmlhYmxlLgorICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGVudl92YXIgPQorICAgICAgICBzdGQ6
OnN0cmluZygiVFo9IikgKyAodGltZV96b25lID8gdGltZV96b25lIDogIiIpOworICAgIF9wdXRl
bnYoZW52X3Zhci5jX3N0cigpKTsKKyAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNI
Xyg0OTk2IC8qIGRlcHJlY2F0ZWQgZnVuY3Rpb24gKi8pCisgICAgdHpzZXQoKTsKKyAgICBHVEVT
VF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKyNlbHNlCisgICAgaWYgKHRpbWVfem9uZSkg
eworICAgICAgc2V0ZW52KCgiVFoiKSwgdGltZV96b25lLCAxKTsKKyAgICB9IGVsc2UgeworICAg
ICAgdW5zZXRlbnYoIlRaIik7CisgICAgfQorICAgIHR6c2V0KCk7CisjZW5kaWYKKyAgfQorCisg
IGNvbnN0IGNoYXIqIHNhdmVkX3R6XzsKK307CisKK2NvbnN0IFRpbWVJbk1pbGxpcyBGb3JtYXRF
cG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3Q6OmtNaWxsaXNQZXJTZWM7CisKK1RFU1RfRihG
b3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QsIFByaW50c1R3b0RpZ2l0U2VnbWVu
dHMpIHsKKyAgRVhQRUNUX0VRKCIyMDExLTEwLTMxVDE4OjUyOjQyIiwKKyAgICAgICAgICAgIEZv
cm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKDEzMjAwODcxNjIgKiBrTWlsbGlzUGVyU2Vj
KSk7Cit9CisKK1RFU1RfRihGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QsIE1p
bGxpc2Vjb25kc0RvTm90QWZmZWN0UmVzdWx0KSB7CisgIEVYUEVDVF9FUSgKKyAgICAgICIyMDEx
LTEwLTMxVDE4OjUyOjQyIiwKKyAgICAgIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAx
KDEzMjAwODcxNjIgKiBrTWlsbGlzUGVyU2VjICsgMjM0KSk7Cit9CisKK1RFU1RfRihGb3JtYXRF
cG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QsIFByaW50c0xlYWRpbmdaZXJvZXMpIHsKKyAg
RVhQRUNUX0VRKCIyMDExLTA5LTAzVDA1OjA3OjAyIiwKKyAgICAgICAgICAgIEZvcm1hdEVwb2No
VGltZUluTWlsbGlzQXNJc284NjAxKDEzMTUwMjY0MjIgKiBrTWlsbGlzUGVyU2VjKSk7Cit9CisK
K1RFU1RfRihGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QsIFByaW50czI0SG91
clRpbWUpIHsKKyAgRVhQRUNUX0VRKCIyMDExLTA5LTI4VDE3OjA4OjIyIiwKKyAgICAgICAgICAg
IEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKDEzMTcyMjk3MDIgKiBrTWlsbGlzUGVy
U2VjKSk7Cit9CisKK1RFU1RfRihGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3Qs
IFByaW50c0Vwb2NoU3RhcnQpIHsKKyAgRVhQRUNUX0VRKCIxOTcwLTAxLTAxVDAwOjAwOjAwIiwg
Rm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoMCkpOworfQorCiAjaWYgR1RFU1RfQ0FO
X0NPTVBBUkVfTlVMTAogCi0jaWZkZWYgX19CT1JMQU5EQ19fCisjIGlmZGVmIF9fQk9STEFORENf
XwogLy8gU2lsZW5jZXMgd2FybmluZ3M6ICJDb25kaXRpb24gaXMgYWx3YXlzIHRydWUiLCAiVW5y
ZWFjaGFibGUgY29kZSIKLSNwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAotI2VuZGlm
CisjICBwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAorIyBlbmRpZgogCiAvLyBUZXN0
cyB0aGF0IEdURVNUX0lTX05VTExfTElURVJBTF8oeCkgaXMgdHJ1ZSB3aGVuIHggaXMgYSBudWxs
CiAvLyBwb2ludGVyIGxpdGVyYWwuCkBAIC0zMDMsMTQgKzUyNyw2IEBAIFRFU1QoTnVsbExpdGVy
YWxUZXN0LCBJc1RydWVGb3JOdWxsTGl0ZXJhbHMpIHsKICAgRVhQRUNUX1RSVUUoR1RFU1RfSVNf
TlVMTF9MSVRFUkFMXygwKSk7CiAgIEVYUEVDVF9UUlVFKEdURVNUX0lTX05VTExfTElURVJBTF8o
MFUpKTsKICAgRVhQRUNUX1RSVUUoR1RFU1RfSVNfTlVMTF9MSVRFUkFMXygwTCkpOwotICBFWFBF
Q1RfVFJVRShHVEVTVF9JU19OVUxMX0xJVEVSQUxfKGZhbHNlKSk7Ci0jaWZuZGVmIF9fQk9STEFO
RENfXwotICAvLyBTb21lIGNvbXBpbGVycyBtYXkgZmFpbCB0byBkZXRlY3Qgc29tZSBudWxsIHBv
aW50ZXIgbGl0ZXJhbHM7Ci0gIC8vIGFzIGxvbmcgYXMgdXNlcnMgb2YgdGhlIGZyYW1ld29yayBk
b24ndCB1c2Ugc3VjaCBsaXRlcmFscywgdGhpcwotICAvLyBpcyBoYXJtbGVzcy4KLSAgRVhQRUNU
X1RSVUUoR1RFU1RfSVNfTlVMTF9MSVRFUkFMXygxIC0gMSkpOwotICBFWFBFQ1RfVFJVRShHVEVT
VF9JU19OVUxMX0xJVEVSQUxfKHRydWUgJiYgZmFsc2UpKTsKLSNlbmRpZgogfQogCiAvLyBUZXN0
cyB0aGF0IEdURVNUX0lTX05VTExfTElURVJBTF8oeCkgaXMgZmFsc2Ugd2hlbiB4IGlzIG5vdCBh
IG51bGwKQEAgLTMyMiwxMCArNTM4LDEwIEBAIFRFU1QoTnVsbExpdGVyYWxUZXN0LCBJc0ZhbHNl
Rm9yTm9uTnVsbExpdGVyYWxzKSB7CiAgIEVYUEVDVF9GQUxTRShHVEVTVF9JU19OVUxMX0xJVEVS
QUxfKHN0YXRpY19jYXN0PHZvaWQqPihOVUxMKSkpOwogfQogCi0jaWZkZWYgX19CT1JMQU5EQ19f
CisjIGlmZGVmIF9fQk9STEFORENfXwogLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0ZXIgcHJldmlv
dXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHByZXNzZWQgdGhlbS4KLSNwcmFnbWEgb3B0aW9u
IHBvcAotI2VuZGlmCisjICBwcmFnbWEgb3B0aW9uIHBvcAorIyBlbmRpZgogCiAjZW5kaWYgIC8v
IEdURVNUX0NBTl9DT01QQVJFX05VTEwKIC8vCkBAIC0zMzMsMzkgKzU0OSw0MSBAQCBURVNUKE51
bGxMaXRlcmFsVGVzdCwgSXNGYWxzZUZvck5vbk51bGxMaXRlcmFscykgewogCiAvLyBUZXN0cyB0
aGF0IHRoZSBOVUwgY2hhcmFjdGVyIEwnXDAnIGlzIGVuY29kZWQgY29ycmVjdGx5LgogVEVTVChD
b2RlUG9pbnRUb1V0ZjhUZXN0LCBDYW5FbmNvZGVOdWwpIHsKLSAgY2hhciBidWZmZXJbMzJdOwot
ICBFWFBFQ1RfU1RSRVEoIiIsIENvZGVQb2ludFRvVXRmOChMJ1wwJywgYnVmZmVyKSk7CisgIEVY
UEVDVF9FUSgiIiwgQ29kZVBvaW50VG9VdGY4KEwnXDAnKSk7CiB9CiAKIC8vIFRlc3RzIHRoYXQg
QVNDSUkgY2hhcmFjdGVycyBhcmUgZW5jb2RlZCBjb3JyZWN0bHkuCiBURVNUKENvZGVQb2ludFRv
VXRmOFRlc3QsIENhbkVuY29kZUFzY2lpKSB7Ci0gIGNoYXIgYnVmZmVyWzMyXTsKLSAgRVhQRUNU
X1NUUkVRKCJhIiwgQ29kZVBvaW50VG9VdGY4KEwnYScsIGJ1ZmZlcikpOwotICBFWFBFQ1RfU1RS
RVEoIloiLCBDb2RlUG9pbnRUb1V0ZjgoTCdaJywgYnVmZmVyKSk7Ci0gIEVYUEVDVF9TVFJFUSgi
JiIsIENvZGVQb2ludFRvVXRmOChMJyYnLCBidWZmZXIpKTsKLSAgRVhQRUNUX1NUUkVRKCJceDdG
IiwgQ29kZVBvaW50VG9VdGY4KEwnXHg3RicsIGJ1ZmZlcikpOworICBFWFBFQ1RfRVEoImEiLCBD
b2RlUG9pbnRUb1V0ZjgoTCdhJykpOworICBFWFBFQ1RfRVEoIloiLCBDb2RlUG9pbnRUb1V0Zjgo
TCdaJykpOworICBFWFBFQ1RfRVEoIiYiLCBDb2RlUG9pbnRUb1V0ZjgoTCcmJykpOworICBFWFBF
Q1RfRVEoIlx4N0YiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDdGJykpOwogfQogCiAvLyBUZXN0cyB0
aGF0IFVuaWNvZGUgY29kZS1wb2ludHMgdGhhdCBoYXZlIDggdG8gMTEgYml0cyBhcmUgZW5jb2Rl
ZAogLy8gYXMgMTEweHh4eHggMTB4eHh4eHguCiBURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENh
bkVuY29kZThUbzExQml0cykgewotICBjaGFyIGJ1ZmZlclszMl07CiAgIC8vIDAwMCAxMTAxIDAw
MTEgPT4gMTEwLTAwMDExIDEwLTAxMDAxMQotICBFWFBFQ1RfU1RSRVEoIlx4QzNceDkzIiwgQ29k
ZVBvaW50VG9VdGY4KEwnXHhEMycsIGJ1ZmZlcikpOworICBFWFBFQ1RfRVEoIlx4QzNceDkzIiwg
Q29kZVBvaW50VG9VdGY4KEwnXHhEMycpKTsKIAogICAvLyAxMDEgMDExMSAwMTEwID0+IDExMC0x
MDEwMSAxMC0xMTAxMTAKLSAgRVhQRUNUX1NUUkVRKCJceEQ1XHhCNiIsIENvZGVQb2ludFRvVXRm
OChMJ1x4NTc2JywgYnVmZmVyKSk7CisgIC8vIFNvbWUgY29tcGlsZXJzIChlLmcuLCBHQ0Mgb24g
TWluR1cpIGNhbm5vdCBoYW5kbGUgbm9uLUFTQ0lJIGNvZGVwb2ludHMKKyAgLy8gaW4gd2lkZSBz
dHJpbmdzIGFuZCB3aWRlIGNoYXJzLiBJbiBvcmRlciB0byBhY2NvbW1vZGF0ZSB0aGVtLCB3ZSBo
YXZlIHRvCisgIC8vIGludHJvZHVjZSBzdWNoIGNoYXJhY3RlciBjb25zdGFudHMgYXMgaW50ZWdl
cnMuCisgIEVYUEVDVF9FUSgiXHhENVx4QjYiLAorICAgICAgICAgICAgQ29kZVBvaW50VG9VdGY4
KHN0YXRpY19jYXN0PHdjaGFyX3Q+KDB4NTc2KSkpOwogfQogCiAvLyBUZXN0cyB0aGF0IFVuaWNv
ZGUgY29kZS1wb2ludHMgdGhhdCBoYXZlIDEyIHRvIDE2IGJpdHMgYXJlIGVuY29kZWQKIC8vIGFz
IDExMTB4eHh4IDEweHh4eHh4IDEweHh4eHh4LgogVEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBD
YW5FbmNvZGUxMlRvMTZCaXRzKSB7Ci0gIGNoYXIgYnVmZmVyWzMyXTsKICAgLy8gMDAwMCAxMDAw
IDExMDEgMDAxMSA9PiAxMTEwLTAwMDAgMTAtMTAwMDExIDEwLTAxMDAxMQotICBFWFBFQ1RfU1RS
RVEoIlx4RTBceEEzXHg5MyIsIENvZGVQb2ludFRvVXRmOChMJ1x4OEQzJywgYnVmZmVyKSk7Cisg
IEVYUEVDVF9FUSgiXHhFMFx4QTNceDkzIiwKKyAgICAgICAgICAgIENvZGVQb2ludFRvVXRmOChz
dGF0aWNfY2FzdDx3Y2hhcl90PigweDhEMykpKTsKIAogICAvLyAxMTAwIDAxMTEgMDEwMCAxMTAx
ID0+IDExMTAtMTEwMCAxMC0wMTExMDEgMTAtMDAxMTAxCi0gIEVYUEVDVF9TVFJFUSgiXHhFQ1x4
OURceDhEIiwgQ29kZVBvaW50VG9VdGY4KEwnXHhDNzREJywgYnVmZmVyKSk7CisgIEVYUEVDVF9F
USgiXHhFQ1x4OURceDhEIiwKKyAgICAgICAgICAgIENvZGVQb2ludFRvVXRmOChzdGF0aWNfY2Fz
dDx3Y2hhcl90PigweEM3NEQpKSk7CiB9CiAKICNpZiAhR1RFU1RfV0lERV9TVFJJTkdfVVNFU19V
VEYxNl8KQEAgLTM3NiwyMiArNTk0LDE5IEBAIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2Fu
RW5jb2RlMTJUbzE2Qml0cykgewogLy8gVGVzdHMgdGhhdCBVbmljb2RlIGNvZGUtcG9pbnRzIHRo
YXQgaGF2ZSAxNyB0byAyMSBiaXRzIGFyZSBlbmNvZGVkCiAvLyBhcyAxMTExMHh4eCAxMHh4eHh4
eCAxMHh4eHh4eCAxMHh4eHh4eC4KIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2Rl
MTdUbzIxQml0cykgewotICBjaGFyIGJ1ZmZlclszMl07CiAgIC8vIDAgMDAwMSAwMDAwIDEwMDAg
MTEwMSAwMDExID0+IDExMTEwLTAwMCAxMC0wMTAwMDAgMTAtMTAwMDExIDEwLTAxMDAxMQotICBF
WFBFQ1RfU1RSRVEoIlx4RjBceDkwXHhBM1x4OTMiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDEwOEQz
JywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiXHhGMFx4OTBceEEzXHg5MyIsIENvZGVQb2ludFRv
VXRmOChMJ1x4MTA4RDMnKSk7CiAKICAgLy8gMCAwMDAxIDAwMDAgMDEwMCAwMDAwIDAwMDAgPT4g
MTExMTAtMDAwIDEwLTAxMDAwMCAxMC0wMTAwMDAgMTAtMDAwMDAwCi0gIEVYUEVDVF9TVFJFUSgi
XHhGMFx4OTBceDkwXHg4MCIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA0MDAnLCBidWZmZXIpKTsK
KyAgRVhQRUNUX0VRKCJceEYwXHg5MFx4OTBceDgwIiwgQ29kZVBvaW50VG9VdGY4KEwnXHgxMDQw
MCcpKTsKIAogICAvLyAxIDAwMDAgMTAwMCAwMTEwIDAwMTEgMDEwMCA9PiAxMTExMC0xMDAgMTAt
MDAxMDAwIDEwLTAxMTAwMCAxMC0xMTAxMDAKLSAgRVhQRUNUX1NUUkVRKCJceEY0XHg4OFx4OThc
eEI0IiwgQ29kZVBvaW50VG9VdGY4KEwnXHgxMDg2MzQnLCBidWZmZXIpKTsKKyAgRVhQRUNUX0VR
KCJceEY0XHg4OFx4OThceEI0IiwgQ29kZVBvaW50VG9VdGY4KEwnXHgxMDg2MzQnKSk7CiB9CiAK
IC8vIFRlc3RzIHRoYXQgZW5jb2RpbmcgYW4gaW52YWxpZCBjb2RlLXBvaW50IGdlbmVyYXRlcyB0
aGUgZXhwZWN0ZWQgcmVzdWx0LgogVEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBDYW5FbmNvZGVJ
bnZhbGlkQ29kZVBvaW50KSB7Ci0gIGNoYXIgYnVmZmVyWzMyXTsKLSAgRVhQRUNUX1NUUkVRKCIo
SW52YWxpZCBVbmljb2RlIDB4MTIzNEFCQ0QpIiwKLSAgICAgICAgICAgICAgIENvZGVQb2ludFRv
VXRmOChMJ1x4MTIzNEFCQ0QnLCBidWZmZXIpKTsKKyAgRVhQRUNUX0VRKCIoSW52YWxpZCBVbmlj
b2RlIDB4MTIzNEFCQ0QpIiwgQ29kZVBvaW50VG9VdGY4KEwnXHgxMjM0QUJDRCcpKTsKIH0KIAog
I2VuZGlmICAvLyAhR1RFU1RfV0lERV9TVFJJTkdfVVNFU19VVEYxNl8KQEAgLTQyMCwyMCArNjM1
LDIzIEBAIFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENhbkVuY29kZThUbzExQml0cykgewog
ICBFWFBFQ1RfU1RSRVEoIlx4QzNceDkzIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4RDMiLCAtMSku
Y19zdHIoKSk7CiAKICAgLy8gMTAxIDAxMTEgMDExMCA9PiAxMTAtMTAxMDEgMTAtMTEwMTEwCi0g
IEVYUEVDVF9TVFJFUSgiXHhENVx4QjYiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHg1NzYiLCAxKS5j
X3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJceEQ1XHhCNiIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJc
eDU3NiIsIC0xKS5jX3N0cigpKTsKKyAgY29uc3Qgd2NoYXJfdCBzW10gPSB7IDB4NTc2LCAnXDAn
IH07CisgIEVYUEVDVF9TVFJFUSgiXHhENVx4QjYiLCBXaWRlU3RyaW5nVG9VdGY4KHMsIDEpLmNf
c3RyKCkpOworICBFWFBFQ1RfU1RSRVEoIlx4RDVceEI2IiwgV2lkZVN0cmluZ1RvVXRmOChzLCAt
MSkuY19zdHIoKSk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0aGF0
IGhhdmUgMTIgdG8gMTYgYml0cyBhcmUgZW5jb2RlZAogLy8gYXMgMTExMHh4eHggMTB4eHh4eHgg
MTB4eHh4eHguCiBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGUxMlRvMTZCaXRz
KSB7CiAgIC8vIDAwMDAgMTAwMCAxMTAxIDAwMTEgPT4gMTExMC0wMDAwIDEwLTEwMDAxMSAxMC0w
MTAwMTEKLSAgRVhQRUNUX1NUUkVRKCJceEUwXHhBM1x4OTMiLCBXaWRlU3RyaW5nVG9VdGY4KEwi
XHg4RDMiLCAxKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJceEUwXHhBM1x4OTMiLCBXaWRl
U3RyaW5nVG9VdGY4KEwiXHg4RDMiLCAtMSkuY19zdHIoKSk7CisgIGNvbnN0IHdjaGFyX3QgczFb
XSA9IHsgMHg4RDMsICdcMCcgfTsKKyAgRVhQRUNUX1NUUkVRKCJceEUwXHhBM1x4OTMiLCBXaWRl
U3RyaW5nVG9VdGY4KHMxLCAxKS5jX3N0cigpKTsKKyAgRVhQRUNUX1NUUkVRKCJceEUwXHhBM1x4
OTMiLCBXaWRlU3RyaW5nVG9VdGY4KHMxLCAtMSkuY19zdHIoKSk7CiAKICAgLy8gMTEwMCAwMTEx
IDAxMDAgMTEwMSA9PiAxMTEwLTExMDAgMTAtMDExMTAxIDEwLTAwMTEwMQotICBFWFBFQ1RfU1RS
RVEoIlx4RUNceDlEXHg4RCIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEM3NEQiLCAxKS5jX3N0cigp
KTsKLSAgRVhQRUNUX1NUUkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhD
NzREIiwgLTEpLmNfc3RyKCkpOworICBjb25zdCB3Y2hhcl90IHMyW10gPSB7IDB4Qzc0RCwgJ1ww
JyB9OworICBFWFBFQ1RfU1RSRVEoIlx4RUNceDlEXHg4RCIsIFdpZGVTdHJpbmdUb1V0ZjgoczIs
IDEpLmNfc3RyKCkpOworICBFWFBFQ1RfU1RSRVEoIlx4RUNceDlEXHg4RCIsIFdpZGVTdHJpbmdU
b1V0ZjgoczIsIC0xKS5jX3N0cigpKTsKIH0KIAogLy8gVGVzdHMgdGhhdCB0aGUgY29udmVyc2lv
biBzdG9wcyB3aGVuIHRoZSBmdW5jdGlvbiBlbmNvdW50ZXJzIFwwIGNoYXJhY3Rlci4KQEAgLTQ0
Nyw3ICs2NjUsNiBAQCBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBTdG9wc1doZW5MZW5ndGhM
aW1pdFJlYWNoZWQpIHsKICAgRVhQRUNUX1NUUkVRKCJBQkMiLCBXaWRlU3RyaW5nVG9VdGY4KEwi
QUJDREVGIiwgMykuY19zdHIoKSk7CiB9CiAKLQogI2lmICFHVEVTVF9XSURFX1NUUklOR19VU0VT
X1VURjE2XwogLy8gVGVzdHMgdGhhdCBVbmljb2RlIGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSAxNyB0
byAyMSBiaXRzIGFyZSBlbmNvZGVkCiAvLyBhcyAxMTExMHh4eCAxMHh4eHh4eCAxMHh4eHh4eCAx
MHh4eHh4eC4gVGhpcyBjb2RlIG1heSBub3QgY29tcGlsZQpAQCAtNDcxLDI1ICs2ODgsMjkgQEAg
VEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgQ2FuRW5jb2RlSW52YWxpZENvZGVQb2ludCkgewog
Ly8gVGVzdHMgdGhhdCBzdXJyb2dhdGUgcGFpcnMgYXJlIGVuY29kZWQgY29ycmVjdGx5IG9uIHRo
ZSBzeXN0ZW1zIHVzaW5nCiAvLyBVVEYtMTYgZW5jb2RpbmcgaW4gdGhlIHdpZGUgc3RyaW5ncy4K
IFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENhbkVuY29kZVZhbGlkVXRmMTZTVXJyb2dhdGVQ
YWlycykgewotICBFWFBFQ1RfU1RSRVEoIlx4RjBceDkwXHg5MFx4ODAiLAotICAgICAgICAgICAg
ICAgV2lkZVN0cmluZ1RvVXRmOChMIlx4RDgwMVx4REMwMCIsIC0xKS5jX3N0cigpKTsKKyAgY29u
c3Qgd2NoYXJfdCBzW10gPSB7IDB4RDgwMSwgMHhEQzAwLCAnXDAnIH07CisgIEVYUEVDVF9TVFJF
USgiXHhGMFx4OTBceDkwXHg4MCIsIFdpZGVTdHJpbmdUb1V0ZjgocywgLTEpLmNfc3RyKCkpOwog
fQogCiAvLyBUZXN0cyB0aGF0IGVuY29kaW5nIGFuIGludmFsaWQgVVRGLTE2IHN1cnJvZ2F0ZSBw
YWlyCiAvLyBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHJlc3VsdC4KIFRFU1QoV2lkZVN0cmluZ1Rv
VXRmOFRlc3QsIENhbkVuY29kZUludmFsaWRVdGYxNlN1cnJvZ2F0ZVBhaXIpIHsKICAgLy8gTGVh
ZGluZyBzdXJyb2dhdGUgaXMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLgotICBFWFBFQ1RfU1RS
RVEoIlx4RURceEEwXHg4MCIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEQ4MDAiLCAtMSkuY19zdHIo
KSk7CisgIGNvbnN0IHdjaGFyX3QgczFbXSA9IHsgMHhEODAwLCAnXDAnIH07CisgIEVYUEVDVF9T
VFJFUSgiXHhFRFx4QTBceDgwIiwgV2lkZVN0cmluZ1RvVXRmOChzMSwgLTEpLmNfc3RyKCkpOwog
ICAvLyBMZWFkaW5nIHN1cnJvZ2F0ZSBpcyBub3QgZm9sbG93ZWQgYnkgdGhlIHRyYWlsaW5nIHN1
cnJvZ2F0ZS4KLSAgRVhQRUNUX1NUUkVRKCJceEVEXHhBMFx4ODAkIiwgV2lkZVN0cmluZ1RvVXRm
OChMIlx4RDgwMCQiLCAtMSkuY19zdHIoKSk7CisgIGNvbnN0IHdjaGFyX3QgczJbXSA9IHsgMHhE
ODAwLCAnTScsICdcMCcgfTsKKyAgRVhQRUNUX1NUUkVRKCJceEVEXHhBMFx4ODBNIiwgV2lkZVN0
cmluZ1RvVXRmOChzMiwgLTEpLmNfc3RyKCkpOwogICAvLyBUcmFpbGluZyBzdXJyb2dhdGUgYXBw
ZWFyYXMgd2l0aG91dCBhIGxlYWRpbmcgc3Vycm9nYXRlLgotICBFWFBFQ1RfU1RSRVEoIlx4RURc
eEIwXHg4MFBRUiIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceERDMDBQUVIiLCAtMSkuY19zdHIoKSk7
CisgIGNvbnN0IHdjaGFyX3QgczNbXSA9IHsgMHhEQzAwLCAnUCcsICdRJywgJ1InLCAnXDAnIH07
CisgIEVYUEVDVF9TVFJFUSgiXHhFRFx4QjBceDgwUFFSIiwgV2lkZVN0cmluZ1RvVXRmOChzMywg
LTEpLmNfc3RyKCkpOwogfQogI2VuZGlmICAvLyAhR1RFU1RfV0lERV9TVFJJTkdfVVNFU19VVEYx
Nl8KIAogLy8gVGVzdHMgdGhhdCBjb2RlcG9pbnQgY29uY2F0ZW5hdGlvbiB3b3JrcyBjb3JyZWN0
bHkuCiAjaWYgIUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCiBURVNUKFdpZGVTdHJpbmdU
b1V0ZjhUZXN0LCBDb25jYXRlbmF0ZXNDb2RlcG9pbnRzQ29ycmVjdGx5KSB7CisgIGNvbnN0IHdj
aGFyX3Qgc1tdID0geyAweDEwODYzNCwgMHhDNzRELCAnXG4nLCAweDU3NiwgMHg4RDMsIDB4MTA4
NjM0LCAnXDAnfTsKICAgRVhQRUNUX1NUUkVRKAogICAgICAgIlx4RjRceDg4XHg5OFx4QjQiCiAg
ICAgICAgICAgIlx4RUNceDlEXHg4RCIKQEAgLTQ5NywxMyArNzE4LDE0IEBAIFRFU1QoV2lkZVN0
cmluZ1RvVXRmOFRlc3QsIENvbmNhdGVuYXRlc0NvZGVwb2ludHNDb3JyZWN0bHkpIHsKICAgICAg
ICAgICAiXHhENVx4QjYiCiAgICAgICAgICAgIlx4RTBceEEzXHg5MyIKICAgICAgICAgICAiXHhG
NFx4ODhceDk4XHhCNCIsCi0gICAgICBXaWRlU3RyaW5nVG9VdGY4KEwiXHgxMDg2MzRceEM3NERc
blx4NTc2XHg4RDNceDEwODYzNCIsIC0xKS5jX3N0cigpKTsKKyAgICAgIFdpZGVTdHJpbmdUb1V0
ZjgocywgLTEpLmNfc3RyKCkpOwogfQogI2Vsc2UKIFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3Qs
IENvbmNhdGVuYXRlc0NvZGVwb2ludHNDb3JyZWN0bHkpIHsKKyAgY29uc3Qgd2NoYXJfdCBzW10g
PSB7IDB4Qzc0RCwgJ1xuJywgMHg1NzYsIDB4OEQzLCAnXDAnfTsKICAgRVhQRUNUX1NUUkVRKAog
ICAgICAgIlx4RUNceDlEXHg4RCIgIlxuIiAiXHhENVx4QjYiICJceEUwXHhBM1x4OTMiLAotICAg
ICAgV2lkZVN0cmluZ1RvVXRmOChMIlx4Qzc0RFxuXHg1NzZceDhEMyIsIC0xKS5jX3N0cigpKTsK
KyAgICAgIFdpZGVTdHJpbmdUb1V0ZjgocywgLTEpLmNfc3RyKCkpOwogfQogI2VuZGlmICAvLyAh
R1RFU1RfV0lERV9TVFJJTkdfVVNFU19VVEYxNl8KIApAQCAtNzk3LDI2OSArMTAxOSwxNiBAQCBU
RVNUKEFzc2VydEhlbHBlclRlc3QsIEFzc2VydEhlbHBlcklzU21hbGwpIHsKICAgRVhQRUNUX0xF
KHNpemVvZih0ZXN0aW5nOjppbnRlcm5hbDo6QXNzZXJ0SGVscGVyKSwgc2l6ZW9mKHZvaWQqKSk7
CiB9CiAKLS8vIFRlc3RzIHRoZSBTdHJpbmcgY2xhc3MuCi0KLS8vIFRlc3RzIFN0cmluZydzIGNv
bnN0cnVjdG9ycy4KLVRFU1QoU3RyaW5nVGVzdCwgQ29uc3RydWN0b3JzKSB7Ci0gIC8vIERlZmF1
bHQgY3Rvci4KLSAgU3RyaW5nIHMxOwotICAvLyBXZSBhcmVuJ3QgdXNpbmcgRVhQRUNUX0VRKE5V
TEwsIHMxLmNfc3RyKCkpIGJlY2F1c2UgY29tcGFyaW5nCi0gIC8vIHBvaW50ZXJzIHdpdGggTlVM
TCBpc24ndCBzdXBwb3J0ZWQgb24gYWxsIHBsYXRmb3Jtcy4KLSAgRVhQRUNUX0VRKDBVLCBzMS5s
ZW5ndGgoKSk7Ci0gIEVYUEVDVF9UUlVFKE5VTEwgPT0gczEuY19zdHIoKSk7Ci0KLSAgLy8gSW1w
bGljaXRseSBjb25zdHJ1Y3RzIGZyb20gYSBDLXN0cmluZy4KLSAgU3RyaW5nIHMyID0gIkhpIjsK
LSAgRVhQRUNUX0VRKDJVLCBzMi5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiSGkiLCBzMi5j
X3N0cigpKTsKLQotICAvLyBDb25zdHJ1Y3RzIGZyb20gYSBDLXN0cmluZyBhbmQgYSBsZW5ndGgu
Ci0gIFN0cmluZyBzMygiaGVsbG8iLCAzKTsKLSAgRVhQRUNUX0VRKDNVLCBzMy5sZW5ndGgoKSk7
Ci0gIEVYUEVDVF9TVFJFUSgiaGVsIiwgczMuY19zdHIoKSk7Ci0KLSAgLy8gVGhlIGVtcHR5IFN0
cmluZyBzaG91bGQgYmUgY3JlYXRlZCB3aGVuIFN0cmluZyBpcyBjb25zdHJ1Y3RlZCB3aXRoCi0g
IC8vIGEgTlVMTCBwb2ludGVyIGFuZCBsZW5ndGggMC4KLSAgRVhQRUNUX0VRKDBVLCBTdHJpbmco
TlVMTCwgMCkubGVuZ3RoKCkpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKE5VTEwsIDApLmNfc3Ry
KCkgPT0gTlVMTCk7Ci0KLSAgLy8gQ29uc3RydWN0cyBhIFN0cmluZyB0aGF0IGNvbnRhaW5zICdc
MCcuCi0gIFN0cmluZyBzNCgiYVwwYmNkIiwgNCk7Ci0gIEVYUEVDVF9FUSg0VSwgczQubGVuZ3Ro
KCkpOwotICBFWFBFQ1RfRVEoJ2EnLCBzNC5jX3N0cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdcMCcs
IHM0LmNfc3RyKClbMV0pOwotICBFWFBFQ1RfRVEoJ2InLCBzNC5jX3N0cigpWzJdKTsKLSAgRVhQ
RUNUX0VRKCdjJywgczQuY19zdHIoKVszXSk7Ci0KLSAgLy8gQ29weSBjdG9yIHdoZXJlIHRoZSBz
b3VyY2UgaXMgTlVMTC4KLSAgY29uc3QgU3RyaW5nIG51bGxfc3RyOwotICBTdHJpbmcgczUgPSBu
dWxsX3N0cjsKLSAgRVhQRUNUX1RSVUUoczUuY19zdHIoKSA9PSBOVUxMKTsKLQotICAvLyBDb3B5
IGN0b3Igd2hlcmUgdGhlIHNvdXJjZSBpc24ndCBOVUxMLgotICBTdHJpbmcgczYgPSBzMzsKLSAg
RVhQRUNUX0VRKDNVLCBzNi5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiaGVsIiwgczYuY19z
dHIoKSk7Ci0KLSAgLy8gQ29weSBjdG9yIHdoZXJlIHRoZSBzb3VyY2UgY29udGFpbnMgJ1wwJy4K
LSAgU3RyaW5nIHM3ID0gczQ7Ci0gIEVYUEVDVF9FUSg0VSwgczcubGVuZ3RoKCkpOwotICBFWFBF
Q1RfRVEoJ2EnLCBzNy5jX3N0cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdcMCcsIHM3LmNfc3RyKClb
MV0pOwotICBFWFBFQ1RfRVEoJ2InLCBzNy5jX3N0cigpWzJdKTsKLSAgRVhQRUNUX0VRKCdjJywg
czcuY19zdHIoKVszXSk7Ci19Ci0KLVRFU1QoU3RyaW5nVGVzdCwgQ29udmVydHNGcm9tU3RkU3Ry
aW5nKSB7Ci0gIC8vIEFuIGVtcHR5IHN0ZDo6c3RyaW5nLgotICBjb25zdCBzdGQ6OnN0cmluZyBz
cmMxKCIiKTsKLSAgY29uc3QgU3RyaW5nIGRlc3QxID0gc3JjMTsKLSAgRVhQRUNUX0VRKDBVLCBk
ZXN0MS5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgZGVzdDEuY19zdHIoKSk7Ci0KLSAg
Ly8gQSBub3JtYWwgc3RkOjpzdHJpbmcuCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIHNyYzIoIkhpIik7
Ci0gIGNvbnN0IFN0cmluZyBkZXN0MiA9IHNyYzI7Ci0gIEVYUEVDVF9FUSgyVSwgZGVzdDIubGVu
Z3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoIkhpIiwgZGVzdDIuY19zdHIoKSk7Ci0KLSAgLy8gQW4g
c3RkOjpzdHJpbmcgd2l0aCBhbiBlbWJlZGRlZCBOVUwgY2hhcmFjdGVyLgotICBjb25zdCBjaGFy
IHNyYzNbXSA9ICJhXDBiIjsKLSAgY29uc3QgU3RyaW5nIGRlc3QzID0gc3RkOjpzdHJpbmcoc3Jj
Mywgc2l6ZW9mKHNyYzMpKTsKLSAgRVhQRUNUX0VRKHNpemVvZihzcmMzKSwgZGVzdDMubGVuZ3Ro
KCkpOwotICBFWFBFQ1RfRVEoJ2EnLCBkZXN0My5jX3N0cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdc
MCcsIGRlc3QzLmNfc3RyKClbMV0pOwotICBFWFBFQ1RfRVEoJ2InLCBkZXN0My5jX3N0cigpWzJd
KTsKLX0KLQotVEVTVChTdHJpbmdUZXN0LCBDb252ZXJ0c1RvU3RkU3RyaW5nKSB7Ci0gIC8vIEFu
IGVtcHR5IFN0cmluZy4KLSAgY29uc3QgU3RyaW5nIHNyYzEoIiIpOwotICBjb25zdCBzdGQ6OnN0
cmluZyBkZXN0MSA9IHNyYzE7Ci0gIEVYUEVDVF9FUSgiIiwgZGVzdDEpOwotCi0gIC8vIEEgbm9y
bWFsIFN0cmluZy4KLSAgY29uc3QgU3RyaW5nIHNyYzIoIkhpIik7Ci0gIGNvbnN0IHN0ZDo6c3Ry
aW5nIGRlc3QyID0gc3JjMjsKLSAgRVhQRUNUX0VRKCJIaSIsIGRlc3QyKTsKLQotICAvLyBBIFN0
cmluZyBjb250YWluaW5nIGEgJ1wwJy4KLSAgY29uc3QgU3RyaW5nIHNyYzMoInhcMHkiLCAzKTsK
LSAgY29uc3Qgc3RkOjpzdHJpbmcgZGVzdDMgPSBzcmMzOwotICBFWFBFQ1RfRVEoc3RkOjpzdHJp
bmcoInhcMHkiLCAzKSwgZGVzdDMpOwotfQotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcK
LQotVEVTVChTdHJpbmdUZXN0LCBDb252ZXJ0c0Zyb21HbG9iYWxTdHJpbmcpIHsKLSAgLy8gQW4g
ZW1wdHkgOjpzdHJpbmcuCi0gIGNvbnN0IDo6c3RyaW5nIHNyYzEoIiIpOwotICBjb25zdCBTdHJp
bmcgZGVzdDEgPSBzcmMxOwotICBFWFBFQ1RfRVEoMFUsIGRlc3QxLmxlbmd0aCgpKTsKLSAgRVhQ
RUNUX1NUUkVRKCIiLCBkZXN0MS5jX3N0cigpKTsKLQotICAvLyBBIG5vcm1hbCA6OnN0cmluZy4K
LSAgY29uc3QgOjpzdHJpbmcgc3JjMigiSGkiKTsKLSAgY29uc3QgU3RyaW5nIGRlc3QyID0gc3Jj
MjsKLSAgRVhQRUNUX0VRKDJVLCBkZXN0Mi5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiSGki
LCBkZXN0Mi5jX3N0cigpKTsKLQotICAvLyBBbiA6OnN0cmluZyB3aXRoIGFuIGVtYmVkZGVkIE5V
TCBjaGFyYWN0ZXIuCi0gIGNvbnN0IGNoYXIgc3JjM1tdID0gInhcMHkiOwotICBjb25zdCBTdHJp
bmcgZGVzdDMgPSA6OnN0cmluZyhzcmMzLCBzaXplb2Yoc3JjMykpOwotICBFWFBFQ1RfRVEoc2l6
ZW9mKHNyYzMpLCBkZXN0My5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgneCcsIGRlc3QzLmNfc3Ry
KClbMF0pOwotICBFWFBFQ1RfRVEoJ1wwJywgZGVzdDMuY19zdHIoKVsxXSk7Ci0gIEVYUEVDVF9F
USgneScsIGRlc3QzLmNfc3RyKClbMl0pOwotfQotCi1URVNUKFN0cmluZ1Rlc3QsIENvbnZlcnRz
VG9HbG9iYWxTdHJpbmcpIHsKLSAgLy8gQW4gZW1wdHkgU3RyaW5nLgotICBjb25zdCBTdHJpbmcg
c3JjMSgiIik7Ci0gIGNvbnN0IDo6c3RyaW5nIGRlc3QxID0gc3JjMTsKLSAgRVhQRUNUX0VRKCIi
LCBkZXN0MSk7Ci0KLSAgLy8gQSBub3JtYWwgU3RyaW5nLgotICBjb25zdCBTdHJpbmcgc3JjMigi
SGkiKTsKLSAgY29uc3QgOjpzdHJpbmcgZGVzdDIgPSBzcmMyOwotICBFWFBFQ1RfRVEoIkhpIiwg
ZGVzdDIpOwotCi0gIGNvbnN0IFN0cmluZyBzcmMzKCJ4XDB5IiwgMyk7Ci0gIGNvbnN0IDo6c3Ry
aW5nIGRlc3QzID0gc3JjMzsKLSAgRVhQRUNUX0VRKDo6c3RyaW5nKCJ4XDB5IiwgMyksIGRlc3Qz
KTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotCi0vLyBUZXN0cyBT
dHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKCkuCi1URVNUKFN0cmluZ1Rlc3QsIFNob3dDU3RyaW5n
UXVvdGVkKSB7Ci0gIEVYUEVDVF9TVFJFUSgiKG51bGwpIiwKLSAgICAgICAgICAgICAgIFN0cmlu
Zzo6U2hvd0NTdHJpbmdRdW90ZWQoTlVMTCkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXCJc
IiIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKCIiKS5jX3N0cigp
KTsKLSAgRVhQRUNUX1NUUkVRKCJcImZvb1wiIiwKLSAgICAgICAgICAgICAgIFN0cmluZzo6U2hv
d0NTdHJpbmdRdW90ZWQoImZvbyIpLmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6OmVt
cHR5KCkuCi1URVNUKFN0cmluZ1Rlc3QsIEVtcHR5KSB7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygi
IikuZW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShTdHJpbmcoKS5lbXB0eSgpKTsKLSAgRVhQRUNU
X0ZBTFNFKFN0cmluZyhOVUxMKS5lbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiYSIp
LmVtcHR5KCkpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCJcMCIsIDEpLmVtcHR5KCkpOwotfQot
Ci0vLyBUZXN0cyBTdHJpbmc6OkNvbXBhcmUoKS4KLVRFU1QoU3RyaW5nVGVzdCwgQ29tcGFyZSkg
ewotICAvLyBOVUxMIHZzIE5VTEwuCi0gIEVYUEVDVF9FUSgwLCBTdHJpbmcoKS5Db21wYXJlKFN0
cmluZygpKSk7Ci0KLSAgLy8gTlVMTCB2cyBub24tTlVMTC4KLSAgRVhQRUNUX0VRKC0xLCBTdHJp
bmcoKS5Db21wYXJlKFN0cmluZygiIikpKTsKLQotICAvLyBOb24tTlVMTCB2cyBOVUxMLgotICBF
WFBFQ1RfRVEoMSwgU3RyaW5nKCIiKS5Db21wYXJlKFN0cmluZygpKSk7Ci0KLSAgLy8gVGhlIGZv
bGxvd2luZyBjb3ZlcnMgbm9uLU5VTEwgdnMgbm9uLU5VTEwuCi0KLSAgLy8gIiIgdnMgIiIuCi0g
IEVYUEVDVF9FUSgwLCBTdHJpbmcoIiIpLkNvbXBhcmUoU3RyaW5nKCIiKSkpOwotCi0gIC8vICIi
IHZzIG5vbi0iIi4KLSAgRVhQRUNUX0VRKC0xLCBTdHJpbmcoIiIpLkNvbXBhcmUoU3RyaW5nKCJc
MCIsIDEpKSk7Ci0gIEVYUEVDVF9FUSgtMSwgU3RyaW5nKCIiKS5Db21wYXJlKCIgIikpOwotCi0g
IC8vIE5vbi0iIiB2cyAiIi4KLSAgRVhQRUNUX0VRKDEsIFN0cmluZygiYSIpLkNvbXBhcmUoU3Ry
aW5nKCIiKSkpOwotCi0gIC8vIFRoZSBmb2xsb3dpbmcgY292ZXJzIG5vbi0iIiB2cyBub24tIiIu
Ci0KLSAgLy8gU2FtZSBsZW5ndGggYW5kIGVxdWFsLgotICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCJh
IikuQ29tcGFyZShTdHJpbmcoImEiKSkpOwotCi0gIC8vIFNhbWUgbGVuZ3RoIGFuZCBkaWZmZXJl
bnQuCi0gIEVYUEVDVF9FUSgtMSwgU3RyaW5nKCJhXDBiIiwgMykuQ29tcGFyZShTdHJpbmcoImFc
MGMiLCAzKSkpOwotICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCJiIikuQ29tcGFyZShTdHJpbmcoImEi
KSkpOwotCi0gIC8vIERpZmZlcmVudCBsZW5ndGhzLgotICBFWFBFQ1RfRVEoLTEsIFN0cmluZygi
YSIpLkNvbXBhcmUoU3RyaW5nKCJhYiIpKSk7Ci0gIEVYUEVDVF9FUSgtMSwgU3RyaW5nKCJhIiku
Q29tcGFyZShTdHJpbmcoImFcMCIsIDIpKSk7Ci0gIEVYUEVDVF9FUSgxLCBTdHJpbmcoImFiYyIp
LkNvbXBhcmUoU3RyaW5nKCJhYWNkIikpKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpvcGVyYXRv
cj09KCkuCi1URVNUKFN0cmluZ1Rlc3QsIEVxdWFscykgewotICBjb25zdCBTdHJpbmcgbnVsbChO
VUxMKTsKLSAgRVhQRUNUX1RSVUUobnVsbCA9PSBOVUxMKTsgIC8vIE5PTElOVAotICBFWFBFQ1Rf
RkFMU0UobnVsbCA9PSAiIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKG51bGwgPT0gImJh
ciIpOyAgLy8gTk9MSU5UCi0KLSAgY29uc3QgU3RyaW5nIGVtcHR5KCIiKTsKLSAgRVhQRUNUX0ZB
TFNFKGVtcHR5ID09IE5VTEwpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKGVtcHR5ID09ICIi
KTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRkFMU0UoZW1wdHkgPT0gImJhciIpOyAgLy8gTk9MSU5U
Ci0KLSAgY29uc3QgU3RyaW5nIGZvbygiZm9vIik7Ci0gIEVYUEVDVF9GQUxTRShmb28gPT0gTlVM
TCk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKGZvbyA9PSAiIik7ICAvLyBOT0xJTlQKLSAg
RVhQRUNUX0ZBTFNFKGZvbyA9PSAiYmFyIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUoZm9v
ID09ICJmb28iKTsgIC8vIE5PTElOVAotCi0gIGNvbnN0IFN0cmluZyBiYXIoInhcMHkiLCAzKTsK
LSAgRVhQRUNUX0ZBTFNFKGJhciA9PSAieCIpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6Om9wZXJh
dG9yIT0oKS4KLVRFU1QoU3RyaW5nVGVzdCwgTm90RXF1YWxzKSB7Ci0gIGNvbnN0IFN0cmluZyBu
dWxsKE5VTEwpOwotICBFWFBFQ1RfRkFMU0UobnVsbCAhPSBOVUxMKTsgIC8vIE5PTElOVAotICBF
WFBFQ1RfVFJVRShudWxsICE9ICIiKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShudWxsICE9
ICJiYXIiKTsgIC8vIE5PTElOVAotCi0gIGNvbnN0IFN0cmluZyBlbXB0eSgiIik7Ci0gIEVYUEVD
VF9UUlVFKGVtcHR5ICE9IE5VTEwpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShlbXB0eSAh
PSAiIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUoZW1wdHkgIT0gImJhciIpOyAgLy8gTk9M
SU5UCi0KLSAgY29uc3QgU3RyaW5nIGZvbygiZm9vIik7Ci0gIEVYUEVDVF9UUlVFKGZvbyAhPSBO
VUxMKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShmb28gIT0gIiIpOyAgLy8gTk9MSU5UCi0g
IEVYUEVDVF9UUlVFKGZvbyAhPSAiYmFyIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKGZv
byAhPSAiZm9vIik7ICAvLyBOT0xJTlQKLQotICBjb25zdCBTdHJpbmcgYmFyKCJ4XDB5IiwgMyk7
Ci0gIEVYUEVDVF9UUlVFKGJhciAhPSAieCIpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6Omxlbmd0
aCgpLgotVEVTVChTdHJpbmdUZXN0LCBMZW5ndGgpIHsKLSAgRVhQRUNUX0VRKDBVLCBTdHJpbmco
KS5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgwVSwgU3RyaW5nKCIiKS5sZW5ndGgoKSk7Ci0gIEVY
UEVDVF9FUSgyVSwgU3RyaW5nKCJhYiIpLmxlbmd0aCgpKTsKLSAgRVhQRUNUX0VRKDNVLCBTdHJp
bmcoImFcMGIiLCAzKS5sZW5ndGgoKSk7Ci19Ci0KLS8vIFRlc3RzIFN0cmluZzo6RW5kc1dpdGgo
KS4KLVRFU1QoU3RyaW5nVGVzdCwgRW5kc1dpdGgpIHsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCJm
b29iYXIiKS5FbmRzV2l0aCgiYmFyIikpOwotICBFWFBFQ1RfVFJVRShTdHJpbmcoImZvb2JhciIp
LkVuZHNXaXRoKCIiKSk7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiIikuRW5kc1dpdGgoIiIpKTsK
LQotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCJmb29iYXIiKS5FbmRzV2l0aCgiZm9vIikpOwotICBF
WFBFQ1RfRkFMU0UoU3RyaW5nKCIiKS5FbmRzV2l0aCgiZm9vIikpOwotfQotCiAvLyBUZXN0cyBT
dHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCkuCiBURVNUKFN0cmluZ1Rlc3QsIEVuZHNX
aXRoQ2FzZUluc2Vuc2l0aXZlKSB7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiZm9vYmFyIikuRW5k
c1dpdGhDYXNlSW5zZW5zaXRpdmUoIkJBUiIpKTsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCJmb29i
YVIiKS5FbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiYmFyIikpOwotICBFWFBFQ1RfVFJVRShTdHJp
bmcoImZvb2JhciIpLkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCIiKSk7Ci0gIEVYUEVDVF9UUlVF
KFN0cmluZygiIikuRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoIiIpKTsKKyAgRVhQRUNUX1RSVUUo
U3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vYmFyIiwgIkJBUiIpKTsKKyAgRVhQ
RUNUX1RSVUUoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vYmFSIiwgImJhciIp
KTsKKyAgRVhQRUNUX1RSVUUoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vYmFy
IiwgIiIpKTsKKyAgRVhQRUNUX1RSVUUoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgi
IiwgIiIpKTsKIAotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCJGb29iYXIiKS5FbmRzV2l0aENhc2VJ
bnNlbnNpdGl2ZSgiZm9vIikpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCJmb29iYXIiKS5FbmRz
V2l0aENhc2VJbnNlbnNpdGl2ZSgiRm9vIikpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCIiKS5F
bmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vIikpOworICBFWFBFQ1RfRkFMU0UoU3RyaW5nOjpF
bmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiRm9vYmFyIiwgImZvbyIpKTsKKyAgRVhQRUNUX0ZBTFNF
KFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImZvb2JhciIsICJGb28iKSk7CisgIEVY
UEVDVF9GQUxTRShTdHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCIiLCAiZm9vIikpOwog
fQogCiAvLyBDKytCdWlsZGVyJ3MgcHJlcHJvY2Vzc29yIGlzIGJ1Z2d5OyBpdCBmYWlscyB0byBl
eHBhbmQgbWFjcm9zIHRoYXQKQEAgLTEwNzksODcgKzEwNDgsNiBAQCBURVNUKFN0cmluZ1Rlc3Qs
IENhc2VJbnNlbnNpdGl2ZVdpZGVDU3RyaW5nRXF1YWxzKSB7CiAgIEVYUEVDVF9UUlVFKFN0cmlu
Zzo6Q2FzZUluc2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMoTCJGT09CQVIiLCBMImZvb2JhciIp
KTsKIH0KIAotLy8gVGVzdHMgdGhhdCBOVUxMIGNhbiBiZSBhc3NpZ25lZCB0byBhIFN0cmluZy4K
LVRFU1QoU3RyaW5nVGVzdCwgQ2FuQmVBc3NpZ25lZE5VTEwpIHsKLSAgY29uc3QgU3RyaW5nIHNy
YyhOVUxMKTsKLSAgU3RyaW5nIGRlc3Q7Ci0KLSAgZGVzdCA9IHNyYzsKLSAgRVhQRUNUX1NUUkVR
KE5VTEwsIGRlc3QuY19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIGVtcHR5IHN0cmlu
ZyAiIiBjYW4gYmUgYXNzaWduZWQgdG8gYSBTdHJpbmcuCi1URVNUKFN0cmluZ1Rlc3QsIENhbkJl
QXNzaWduZWRFbXB0eSkgewotICBjb25zdCBTdHJpbmcgc3JjKCIiKTsKLSAgU3RyaW5nIGRlc3Q7
Ci0KLSAgZGVzdCA9IHNyYzsKLSAgRVhQRUNUX1NUUkVRKCIiLCBkZXN0LmNfc3RyKCkpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IGEgbm9uLWVtcHR5IHN0cmluZyBjYW4gYmUgYXNzaWduZWQgdG8gYSBT
dHJpbmcuCi1URVNUKFN0cmluZ1Rlc3QsIENhbkJlQXNzaWduZWROb25FbXB0eSkgewotICBjb25z
dCBTdHJpbmcgc3JjKCJoZWxsbyIpOwotICBTdHJpbmcgZGVzdDsKLSAgZGVzdCA9IHNyYzsKLSAg
RVhQRUNUX0VRKDVVLCBkZXN0Lmxlbmd0aCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJoZWxsbyIsIGRl
c3QuY19zdHIoKSk7Ci0KLSAgY29uc3QgU3RyaW5nIHNyYzIoInhcMHkiLCAzKTsKLSAgU3RyaW5n
IGRlc3QyOwotICBkZXN0MiA9IHNyYzI7Ci0gIEVYUEVDVF9FUSgzVSwgZGVzdDIubGVuZ3RoKCkp
OwotICBFWFBFQ1RfRVEoJ3gnLCBkZXN0Mi5jX3N0cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdcMCcs
IGRlc3QyLmNfc3RyKClbMV0pOwotICBFWFBFQ1RfRVEoJ3knLCBkZXN0Mi5jX3N0cigpWzJdKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBhIFN0cmluZyBjYW4gYmUgYXNzaWduZWQgdG8gaXRzZWxmLgot
VEVTVChTdHJpbmdUZXN0LCBDYW5CZUFzc2lnbmVkU2VsZikgewotICBTdHJpbmcgZGVzdCgiaGVs
bG8iKTsKLQotICBkZXN0ID0gZGVzdDsKLSAgRVhQRUNUX1NUUkVRKCJoZWxsbyIsIGRlc3QuY19z
dHIoKSk7Ci19Ci0KLS8vIFN1biBTdHVkaW8gPCAxMiBpbmNvcnJlY3RseSByZWplY3RzIHRoaXMg
Y29kZSBkdWUgdG8gYW4gb3ZlcmxvYWRpbmcKLS8vIGFtYmlndWl0eS4KLSNpZiAhKGRlZmluZWQo
X19TVU5QUk9fQ0MpICYmIF9fU1VOUFJPX0NDIDwgMHg1OTApCi0vLyBUZXN0cyBzdHJlYW1pbmcg
YSBTdHJpbmcuCi1URVNUKFN0cmluZ1Rlc3QsIFN0cmVhbXMpIHsKLSAgRVhQRUNUX0VRKFN0cmVh
bWFibGVUb1N0cmluZyhTdHJpbmcoKSksICIobnVsbCkiKTsKLSAgRVhQRUNUX0VRKFN0cmVhbWFi
bGVUb1N0cmluZyhTdHJpbmcoIiIpKSwgIiIpOwotICBFWFBFQ1RfRVEoU3RyZWFtYWJsZVRvU3Ry
aW5nKFN0cmluZygiYVwwYiIsIDMpKSwgImFcXDBiIik7Ci19Ci0jZW5kaWYKLQotLy8gVGVzdHMg
dGhhdCBTdHJpbmc6OkZvcm1hdCgpIHdvcmtzLgotVEVTVChTdHJpbmdUZXN0LCBGb3JtYXRXb3Jr
cykgewotICAvLyBOb3JtYWwgY2FzZTogdGhlIGZvcm1hdCBzcGVjIGlzIHZhbGlkLCB0aGUgYXJn
dW1lbnRzIG1hdGNoIHRoZQotICAvLyBzcGVjLCBhbmQgdGhlIHJlc3VsdCBpcyA8IDQwOTUgY2hh
cmFjdGVycy4KLSAgRVhQRUNUX1NUUkVRKCJIZWxsbywgNDIiLCBTdHJpbmc6OkZvcm1hdCgiJXMs
ICVkIiwgIkhlbGxvIiwgNDIpLmNfc3RyKCkpOwotCi0gIC8vIEVkZ2UgY2FzZTogdGhlIHJlc3Vs
dCBpcyA0MDk1IGNoYXJhY3RlcnMuCi0gIGNoYXIgYnVmZmVyWzQwOTZdOwotICBjb25zdCBzaXpl
X3Qga1NpemUgPSBzaXplb2YoYnVmZmVyKTsKLSAgbWVtc2V0KGJ1ZmZlciwgJ2EnLCBrU2l6ZSAt
IDEpOwotICBidWZmZXJba1NpemUgLSAxXSA9ICdcMCc7Ci0gIEVYUEVDVF9TVFJFUShidWZmZXIs
IFN0cmluZzo6Rm9ybWF0KCIlcyIsIGJ1ZmZlcikuY19zdHIoKSk7Ci0KLSAgLy8gVGhlIHJlc3Vs
dCBuZWVkcyB0byBiZSA0MDk2IGNoYXJhY3RlcnMsIGV4Y2VlZGluZyBGb3JtYXQoKSdzIGxpbWl0
LgotICBFWFBFQ1RfU1RSRVEoIjxmb3JtYXR0aW5nIGVycm9yIG9yIGJ1ZmZlciBleGNlZWRlZD4i
LAotICAgICAgICAgICAgICAgU3RyaW5nOjpGb3JtYXQoInglcyIsIGJ1ZmZlcikuY19zdHIoKSk7
Ci0KLSNpZiBHVEVTVF9PU19MSU5VWAotICAvLyBPbiBMaW51eCwgaW52YWxpZCBmb3JtYXQgc3Bl
YyBzaG91bGQgbGVhZCB0byBhbiBlcnJvciBtZXNzYWdlLgotICAvLyBJbiBvdGhlciBlbnZpcm9u
bWVudCAoZS5nLiBNU1ZDIG9uIFdpbmRvd3MpLCBTdHJpbmc6OkZvcm1hdCgpIG1heQotICAvLyBz
aW1wbHkgaWdub3JlIGEgYmFkIGZvcm1hdCBzcGVjLCBzbyB0aGlzIGFzc2VydGlvbiBpcyBydW4g
b24KLSAgLy8gTGludXggb25seS4KLSAgRVhQRUNUX1NUUkVRKCI8Zm9ybWF0dGluZyBlcnJvciBv
ciBidWZmZXIgZXhjZWVkZWQ+IiwKLSAgICAgICAgICAgICAgIFN0cmluZzo6Rm9ybWF0KCIlIiku
Y19zdHIoKSk7Ci0jZW5kaWYKLX0KLQogI2lmIEdURVNUX09TX1dJTkRPV1MKIAogLy8gVGVzdHMg
U3RyaW5nOjpTaG93V2lkZUNTdHJpbmcoKS4KQEAgLTExNzAsMTcgKzEwNTgsNyBAQCBURVNUKFN0
cmluZ1Rlc3QsIFNob3dXaWRlQ1N0cmluZykgewogICBFWFBFQ1RfU1RSRVEoImZvbyIsIFN0cmlu
Zzo6U2hvd1dpZGVDU3RyaW5nKEwiZm9vIikuY19zdHIoKSk7CiB9CiAKLS8vIFRlc3RzIFN0cmlu
Zzo6U2hvd1dpZGVDU3RyaW5nUXVvdGVkKCkuCi1URVNUKFN0cmluZ1Rlc3QsIFNob3dXaWRlQ1N0
cmluZ1F1b3RlZCkgewotICBFWFBFQ1RfU1RSRVEoIihudWxsKSIsCi0gICAgICAgICAgICAgICBT
dHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChOVUxMKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NU
UkVRKCJMXCJcIiIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3Rl
ZChMIiIpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIkxcImZvb1wiIiwKLSAgICAgICAgICAg
ICAgIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVvdGVkKEwiZm9vIikuY19zdHIoKSk7Ci19Ci0K
LSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklM
RQogVEVTVChTdHJpbmdUZXN0LCBBbnNpQW5kVXRmMTZOdWxsKSB7CiAgIEVYUEVDVF9FUShOVUxM
LCBTdHJpbmc6OkFuc2lUb1V0ZjE2KE5VTEwpKTsKICAgRVhQRUNUX0VRKE5VTEwsIFN0cmluZzo6
VXRmMTZUb0Fuc2koTlVMTCkpOwpAQCAtMTIwMyw3ICsxMDgxLDcgQEAgVEVTVChTdHJpbmdUZXN0
LCBBbnNpQW5kVXRmMTZDb252ZXJ0UGF0aENoYXJzKSB7CiAgIEVYUEVDVF9FUSgwLCB3Y3NuY21w
KEwiLjpcXCBcIio/IiwgdXRmMTYsIDMpKTsKICAgZGVsZXRlIFtdIHV0ZjE2OwogfQotI2VuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKIAogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKQEAgLTEzMTcsNiArMTE5
NSwxNyBAQCBURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc0ZhdGFsRmFsaXVy
ZSkgewogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRGYXRhbEZhaWx1cmUoKSwgIkV4cGVjdGVk
IGZhdGFsIGZhaWx1cmUuIik7CiB9CiAKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworVEVT
VF9GKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEFjY2VwdHNTdHJpbmdPYmplY3QpIHsKKyAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmF0YWxGYWlsdXJlKCksIDo6c3RyaW5nKCJFeHBlY3RlZCBm
YXRhbCBmYWlsdXJlLiIpKTsKK30KKyNlbmRpZgorCitURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdCwgQWNjZXB0c1N0ZFN0cmluZ09iamVjdCkgeworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShB
ZGRGYXRhbEZhaWx1cmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6OnN0cmluZygi
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKSk7Cit9CisKIFRFU1RfRihFeHBlY3RGYXRhbEZhaWx1
cmVUZXN0LCBDYXRjaGVzRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzKSB7CiAgIC8vIFdlIGhhdmUg
YW5vdGhlciB0ZXN0IGJlbG93IHRvIHZlcmlmeSB0aGF0IHRoZSBtYWNybyBjYXRjaGVzIGZhdGFs
CiAgIC8vIGZhaWx1cmVzIGdlbmVyYXRlZCBvbiBhbm90aGVyIHRocmVhZC4KQEAgLTEzMjYsNyAr
MTIxNSw3IEBAIFRFU1RfRihFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBDYXRjaGVzRmF0YWxGYWls
dXJlT25BbGxUaHJlYWRzKSB7CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFNpbGVuY2VzIHdh
cm5pbmdzOiAiQ29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlIgotI3ByYWdtYSBvcHRpb24gcHVzaCAt
dy1jY2MKKyMgcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYwogI2VuZGlmCiAKIC8vIFRlc3RzIHRo
YXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBjYW4gYmUgdXNlZCBpbiBhIG5vbi12b2lkCkBAIC0x
MzU0LDcgKzEyNDMsNyBAQCB2b2lkIERvZXNOb3RBYm9ydEhlbHBlcihib29sKiBhYm9ydGVkKSB7
CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZp
b3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXBwcmVzc2VkIHRoZW0uCi0jcHJhZ21hIG9wdGlv
biBwb3AKKyMgcHJhZ21hIG9wdGlvbiBwb3AKICNlbmRpZgogCiBURVNUX0YoRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdCwgRG9lc05vdEFib3J0KSB7CkBAIC0xMzcxLDggKzEyNjAsOCBAQCBzdGF0aWMg
aW50IGdsb2JhbF92YXIgPSAwOwogI2RlZmluZSBHVEVTVF9VU0VfVU5QUk9URUNURURfQ09NTUFf
IGdsb2JhbF92YXIrKywgZ2xvYmFsX3ZhcisrCiAKIFRFU1RfRihFeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LCBBY2NlcHRzTWFjcm9UaGF0RXhwYW5kc1RvVW5wcm90ZWN0ZWRDb21tYSkgewotI2lmICFk
ZWZpbmVkKF9fQk9STEFORENfXykgfHwgX19CT1JMQU5EQ19fID49IDB4NjAwCi0gIC8vIElDRSdz
IGluIEMrK0J1aWxkZXIgMjAwNy4KKyNpZm5kZWYgX19CT1JMQU5EQ19fCisgIC8vIElDRSdzIGlu
IEMrK0J1aWxkZXIuCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKICAgICBHVEVTVF9VU0VfVU5Q
Uk9URUNURURfQ09NTUFfOwogICAgIEFkZEZhdGFsRmFpbHVyZSgpOwpAQCAtMTM5NCw2ICsxMjgz
LDE4IEBAIFRFU1RfRihFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBDYXRjaGVzTm9uZmF0YWxG
YWlsdXJlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBub24tZmF0YWwg
ZmFpbHVyZS4iKTsKIH0KIAorI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCitURVNUX0YoRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQWNjZXB0c1N0cmluZ09iamVjdCkgeworICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShBZGROb25mYXRhbEZhaWx1cmUoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgOjpzdHJpbmcoIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpKTsKK30KKyNl
bmRpZgorCitURVNUX0YoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQWNjZXB0c1N0ZFN0cmlu
Z09iamVjdCkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBZGROb25mYXRhbEZhaWx1cmUo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6OnN0cmluZygiRXhwZWN0ZWQgbm9u
LWZhdGFsIGZhaWx1cmUuIikpOworfQorCiBURVNUX0YoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVz
dCwgQ2F0Y2hlc05vbmZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcykgewogICAvLyBXZSBoYXZlIGFu
b3RoZXIgdGVzdCBiZWxvdyB0byB2ZXJpZnkgdGhhdCB0aGUgbWFjcm8gY2F0Y2hlcwogICAvLyBu
b24tZmF0YWwgZmFpbHVyZXMgZ2VuZXJhdGVkIG9uIGFub3RoZXIgdGhyZWFkLgpAQCAtMTQ4Myw4
ICsxMzg0LDcgQEAgY2xhc3MgVGVzdFJlc3VsdFRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgLy8g
SW4gb3JkZXIgdG8gdGVzdCBUZXN0UmVzdWx0LCB3ZSBuZWVkIHRvIG1vZGlmeSBpdHMgaW50ZXJu
YWwKICAgICAvLyBzdGF0ZSwgaW4gcGFydGljdWxhciB0aGUgVGVzdFBhcnRSZXN1bHQgdmVjdG9y
IGl0IGhvbGRzLgogICAgIC8vIHRlc3RfcGFydF9yZXN1bHRzKCkgcmV0dXJucyBhIGNvbnN0IHJl
ZmVyZW5jZSB0byB0aGlzIHZlY3Rvci4KLSAgICAvLyBXZSBjYXN0IGl0IHRvIGEgbm9uLWNvbnN0
IG9iamVjdCBzLnQuIGl0IGNhbiBiZSBtb2RpZmllZCAoeWVzLAotICAgIC8vIHRoaXMgaXMgYSBo
YWNrKS4KKyAgICAvLyBXZSBjYXN0IGl0IHRvIGEgbm9uLWNvbnN0IG9iamVjdCBzLnQuIGl0IGNh
biBiZSBtb2RpZmllZAogICAgIFRQUlZlY3RvciogcmVzdWx0czEgPSBjb25zdF9jYXN0PFRQUlZl
Y3Rvcio+KAogICAgICAgICAmVGVzdFJlc3VsdEFjY2Vzc29yOjp0ZXN0X3BhcnRfcmVzdWx0cygq
cjEpKTsKICAgICBUUFJWZWN0b3IqIHJlc3VsdHMyID0gY29uc3RfY2FzdDxUUFJWZWN0b3IqPigK
QEAgLTE1MDksNyArMTQwOSw3IEBAIGNsYXNzIFRlc3RSZXN1bHRUZXN0IDogcHVibGljIFRlc3Qg
ewogICAgIGRlbGV0ZSByMjsKICAgfQogCi0gIC8vIEhlbHBlciB0aGF0IGNvbXBhcmVzIHR3byB0
d28gVGVzdFBhcnRSZXN1bHRzLgorICAvLyBIZWxwZXIgdGhhdCBjb21wYXJlcyB0d28gVGVzdFBh
cnRSZXN1bHRzLgogICBzdGF0aWMgdm9pZCBDb21wYXJlVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVz
dFBhcnRSZXN1bHQmIGV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIGFjdHVhbCkgewogICAgIEVYUEVDVF9FUShleHBlY3Rl
ZC50eXBlKCksIGFjdHVhbC50eXBlKCkpOwpAQCAtMTU2Niw3ICsxNDY2LDcgQEAgVEVTVChUZXN0
UmVzdWx0UHJvcGVydHlUZXN0LCBOb1Byb3BlcnRpZXNGb3VuZFdoZW5Ob25lQXJlQWRkZWQpIHsK
IFRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgT25lUHJvcGVydHlGb3VuZFdoZW5BZGRlZCkg
ewogICBUZXN0UmVzdWx0IHRlc3RfcmVzdWx0OwogICBUZXN0UHJvcGVydHkgcHJvcGVydHkoImtl
eV8xIiwgIjEiKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9y
ZXN1bHQsIHByb3BlcnR5KTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgm
dGVzdF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5KTsKICAgQVNTRVJUX0VRKDEsIHRlc3Rf
cmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKSk7CiAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgYWN0
dWFsX3Byb3BlcnR5ID0gdGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KDApOwogICBFWFBFQ1Rf
U1RSRVEoImtleV8xIiwgYWN0dWFsX3Byb3BlcnR5LmtleSgpKTsKQEAgLTE1NzgsOCArMTQ3OCw4
IEBAIFRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgTXVsdGlwbGVQcm9wZXJ0aWVzRm91bmRX
aGVuQWRkZWQpIHsKICAgVGVzdFJlc3VsdCB0ZXN0X3Jlc3VsdDsKICAgVGVzdFByb3BlcnR5IHBy
b3BlcnR5XzEoImtleV8xIiwgIjEiKTsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzIoImtleV8y
IiwgIjIiKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1
bHQsIHByb3BlcnR5XzEpOwotICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0
ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMik7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJv
cGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8xKTsKKyAgVGVzdFJlc3Vs
dEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3Bl
cnR5XzIpOwogICBBU1NFUlRfRVEoMiwgdGVzdF9yZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgp
KTsKICAgY29uc3QgVGVzdFByb3BlcnR5JiBhY3R1YWxfcHJvcGVydHlfMSA9IHRlc3RfcmVzdWx0
LkdldFRlc3RQcm9wZXJ0eSgwKTsKICAgRVhQRUNUX1NUUkVRKCJrZXlfMSIsIGFjdHVhbF9wcm9w
ZXJ0eV8xLmtleSgpKTsKQEAgLTE1OTcsMTAgKzE0OTcsMTAgQEAgVEVTVChUZXN0UmVzdWx0UHJv
cGVydHlUZXN0LCBPdmVycmlkZXNWYWx1ZXNGb3JEdXBsaWNhdGVLZXlzKSB7CiAgIFRlc3RQcm9w
ZXJ0eSBwcm9wZXJ0eV8yXzEoImtleV8yIiwgIjIiKTsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5
XzFfMigia2V5XzEiLCAiMTIiKTsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzJfMigia2V5XzIi
LCAiMjIiKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1
bHQsIHByb3BlcnR5XzFfMSk7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHko
JnRlc3RfcmVzdWx0LCBwcm9wZXJ0eV8yXzEpOwotICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29y
ZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMV8yKTsKLSAgVGVzdFJlc3VsdEFjY2Vz
c29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzJfMik7CisgIFRlc3RS
ZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBw
cm9wZXJ0eV8xXzEpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0
X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMl8xKTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29y
OjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzFfMik7
CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVz
dGNhc2UiLCBwcm9wZXJ0eV8yXzIpOwogCiAgIEFTU0VSVF9FUSgyLCB0ZXN0X3Jlc3VsdC50ZXN0
X3Byb3BlcnR5X2NvdW50KCkpOwogICBjb25zdCBUZXN0UHJvcGVydHkmIGFjdHVhbF9wcm9wZXJ0
eV8xID0gdGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KDApOwpAQCAtMTYxMywxNCArMTUxMywx
NCBAQCBURVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIE92ZXJyaWRlc1ZhbHVlc0ZvckR1cGxp
Y2F0ZUtleXMpIHsKIH0KIAogLy8gVGVzdHMgVGVzdFJlc3VsdDo6R2V0VGVzdFByb3BlcnR5KCku
Ci1URVNUKFRlc3RSZXN1bHRQcm9wZXJ0eURlYXRoVGVzdCwgR2V0VGVzdFByb3BlcnR5KSB7CitU
RVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIEdldFRlc3RQcm9wZXJ0eSkgewogICBUZXN0UmVz
dWx0IHRlc3RfcmVzdWx0OwogICBUZXN0UHJvcGVydHkgcHJvcGVydHlfMSgia2V5XzEiLCAiMSIp
OwogICBUZXN0UHJvcGVydHkgcHJvcGVydHlfMigia2V5XzIiLCAiMiIpOwogICBUZXN0UHJvcGVy
dHkgcHJvcGVydHlfMygia2V5XzMiLCAiMyIpOwotICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29y
ZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMSk7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nv
cjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9wZXJ0eV8yKTsKLSAgVGVzdFJlc3Vs
dEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzMpOworICBU
ZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNl
IiwgcHJvcGVydHlfMSk7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRl
c3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8yKTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29y
OjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzMpOwog
CiAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgZmV0Y2hlZF9wcm9wZXJ0eV8xID0gdGVzdF9yZXN1bHQu
R2V0VGVzdFByb3BlcnR5KDApOwogICBjb25zdCBUZXN0UHJvcGVydHkmIGZldGNoZWRfcHJvcGVy
dHlfMiA9IHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgxKTsKQEAgLTE2MzksNDEgKzE1Mzks
MTUgQEAgVEVTVChUZXN0UmVzdWx0UHJvcGVydHlEZWF0aFRlc3QsIEdldFRlc3RQcm9wZXJ0eSkg
ewogICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0
eSgtMSksICIiKTsKIH0KIAotLy8gV2hlbiBhIHByb3BlcnR5IHVzaW5nIGEgcmVzZXJ2ZWQga2V5
IGlzIHN1cHBsaWVkIHRvIHRoaXMgZnVuY3Rpb24sIGl0IHRlc3RzCi0vLyB0aGF0IGEgbm9uLWZh
dGFsIGZhaWx1cmUgaXMgYWRkZWQsIGEgZmF0YWwgZmFpbHVyZSBpcyBub3QgYWRkZWQsIGFuZCB0
aGF0IHRoZQotLy8gcHJvcGVydHkgaXMgbm90IHJlY29yZGVkLgotdm9pZCBFeHBlY3ROb25GYXRh
bEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleShjb25zdCBjaGFyKiBrZXkp
IHsKLSAgVGVzdFJlc3VsdCB0ZXN0X3Jlc3VsdDsKLSAgVGVzdFByb3BlcnR5IHByb3BlcnR5KGtl
eSwgIjEiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCi0gICAgICBUZXN0UmVzdWx0QWNj
ZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHkpLAotICAgICAgIlJl
c2VydmVkIGtleSIpOwotICBBU1NFUlRfRVEoMCwgdGVzdF9yZXN1bHQudGVzdF9wcm9wZXJ0eV9j
b3VudCgpKSA8PCAiTm90IHJlY29yZGVkIjsKLX0KLQotLy8gQXR0ZW1wdGluZyB0byByZWNvcmRp
bmcgYSBwcm9wZXJ0eSB3aXRoIHRoZSBSZXNlcnZlZCBsaXRlcmFsICJuYW1lIgotLy8gc2hvdWxk
IGFkZCBhIG5vbi1mYXRhbCBmYWlsdXJlIGFuZCB0aGUgcHJvcGVydHkgc2hvdWxkIG5vdCBiZSBy
ZWNvcmRlZC4KLVRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgQWRkRmFpbHVyZVdoZW5Vc2lu
Z1Jlc2VydmVkS2V5Q2FsbGVkTmFtZSkgewotICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRp
bmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgibmFtZSIpOwotfQotCi0vLyBBdHRlbXB0aW5nIHRv
IHJlY29yZGluZyBhIHByb3BlcnR5IHdpdGggdGhlIFJlc2VydmVkIGxpdGVyYWwgInN0YXR1cyIK
LS8vIHNob3VsZCBhZGQgYSBub24tZmF0YWwgZmFpbHVyZSBhbmQgdGhlIHByb3BlcnR5IHNob3Vs
ZCBub3QgYmUgcmVjb3JkZWQuCi1URVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIEFkZEZhaWx1
cmVXaGVuVXNpbmdSZXNlcnZlZEtleUNhbGxlZFN0YXR1cykgewotICBFeHBlY3ROb25GYXRhbEZh
aWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgic3RhdHVzIik7Ci19Ci0KLS8v
IEF0dGVtcHRpbmcgdG8gcmVjb3JkaW5nIGEgcHJvcGVydHkgd2l0aCB0aGUgUmVzZXJ2ZWQgbGl0
ZXJhbCAidGltZSIKLS8vIHNob3VsZCBhZGQgYSBub24tZmF0YWwgZmFpbHVyZSBhbmQgdGhlIHBy
b3BlcnR5IHNob3VsZCBub3QgYmUgcmVjb3JkZWQuCi1URVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRl
c3QsIEFkZEZhaWx1cmVXaGVuVXNpbmdSZXNlcnZlZEtleUNhbGxlZFRpbWUpIHsKLSAgRXhwZWN0
Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoInRpbWUiKTsK
LX0KLQotLy8gQXR0ZW1wdGluZyB0byByZWNvcmRpbmcgYSBwcm9wZXJ0eSB3aXRoIHRoZSBSZXNl
cnZlZCBsaXRlcmFsICJjbGFzc25hbWUiCi0vLyBzaG91bGQgYWRkIGEgbm9uLWZhdGFsIGZhaWx1
cmUgYW5kIHRoZSBwcm9wZXJ0eSBzaG91bGQgbm90IGJlIHJlY29yZGVkLgotVEVTVChUZXN0UmVz
dWx0UHJvcGVydHlUZXN0LCBBZGRGYWlsdXJlV2hlblVzaW5nUmVzZXJ2ZWRLZXlDYWxsZWRDbGFz
c25hbWUpIHsKLSAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVz
ZXJ2ZWRLZXkoImNsYXNzbmFtZSIpOwotfQorLy8gVGVzdHMgdGhlIFRlc3QgY2xhc3MuCisvLwor
Ly8gSXQncyBkaWZmaWN1bHQgdG8gdGVzdCBldmVyeSBwdWJsaWMgbWV0aG9kIG9mIHRoaXMgY2xh
c3MgKHdlIGFyZQorLy8gYWxyZWFkeSBzdHJldGNoaW5nIHRoZSBsaW1pdCBvZiBHb29nbGUgVGVz
dCBieSB1c2luZyBpdCB0byB0ZXN0IGl0c2VsZiEpLgorLy8gRm9ydHVuYXRlbHksIHdlIGRvbid0
IGhhdmUgdG8gZG8gdGhhdCwgYXMgd2UgYXJlIGFscmVhZHkgdGVzdGluZworLy8gdGhlIGZ1bmN0
aW9uYWxpdGllcyBvZiB0aGUgVGVzdCBjbGFzcyBleHRlbnNpdmVseSBieSB1c2luZyBHb29nbGUg
VGVzdAorLy8gYWxvbmUuCisvLworLy8gVGhlcmVmb3JlLCB0aGlzIHNlY3Rpb24gb25seSBjb250
YWlucyBvbmUgdGVzdC4KIAogLy8gVGVzdHMgdGhhdCBHVGVzdEZsYWdTYXZlciB3b3JrcyBvbiBX
aW5kb3dzIGFuZCBNYWMuCiAKQEAgLTE2OTgsNiArMTU3Miw3IEBAIGNsYXNzIEdUZXN0RmxhZ1Nh
dmVyVGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICBHVEVTVF9GTEFHKHJlcGVhdCkgPSAxOwogICAg
IEdURVNUX0ZMQUcoc2h1ZmZsZSkgPSBmYWxzZTsKICAgICBHVEVTVF9GTEFHKHN0YWNrX3RyYWNl
X2RlcHRoKSA9IGtNYXhTdGFja1RyYWNlRGVwdGg7CisgICAgR1RFU1RfRkxBRyhzdHJlYW1fcmVz
dWx0X3RvKSA9ICIiOwogICAgIEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSBmYWxzZTsK
ICAgfQogCkBAIC0xNzI0LDYgKzE1OTksNyBAQCBjbGFzcyBHVGVzdEZsYWdTYXZlclRlc3QgOiBw
dWJsaWMgVGVzdCB7CiAgICAgRVhQRUNUX0VRKDEsIEdURVNUX0ZMQUcocmVwZWF0KSk7CiAgICAg
RVhQRUNUX0ZBTFNFKEdURVNUX0ZMQUcoc2h1ZmZsZSkpOwogICAgIEVYUEVDVF9FUShrTWF4U3Rh
Y2tUcmFjZURlcHRoLCBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSk7CisgICAgRVhQRUNU
X1NUUkVRKCIiLCBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pLmNfc3RyKCkpOwogICAgIEVY
UEVDVF9GQUxTRShHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpKTsKIAogICAgIEdURVNUX0ZM
QUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpID0gdHJ1ZTsKQEAgLTE3MzksOCArMTYxNSwxMCBA
QCBjbGFzcyBHVGVzdEZsYWdTYXZlclRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgR1RFU1RfRkxB
RyhyZXBlYXQpID0gMTAwOwogICAgIEdURVNUX0ZMQUcoc2h1ZmZsZSkgPSB0cnVlOwogICAgIEdU
RVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpID0gMTsKKyAgICBHVEVTVF9GTEFHKHN0cmVhbV9y
ZXN1bHRfdG8pID0gImxvY2FsaG9zdDoxMjM0IjsKICAgICBHVEVTVF9GTEFHKHRocm93X29uX2Zh
aWx1cmUpID0gdHJ1ZTsKICAgfQorCiAgcHJpdmF0ZToKICAgLy8gRm9yIHNhdmluZyBHb29nbGUg
VGVzdCBmbGFncyBkdXJpbmcgdGhpcyB0ZXN0IGNhc2UuCiAgIHN0YXRpYyBHVGVzdEZsYWdTYXZl
ciogc2F2ZXJfOwpAQCAtMTc3MywxNSArMTY1MSwxNiBAQCBzdGF0aWMgdm9pZCBTZXRFbnYoY29u
c3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogdmFsdWUpIHsKICAgLy8gQysrQnVpbGRlcidzIHB1
dGVudiBvbmx5IHN0b3JlcyBhIHBvaW50ZXIgdG8gaXRzIHBhcmFtZXRlcjsgd2UgaGF2ZSB0bwog
ICAvLyBlbnN1cmUgdGhhdCB0aGUgc3RyaW5nIHJlbWFpbnMgdmFsaWQgYXMgbG9uZyBhcyBpdCBt
aWdodCBiZSBuZWVkZWQuCiAgIC8vIFdlIHVzZSBhbiBzdGQ6Om1hcCB0byBkbyBzby4KLSAgc3Rh
dGljIHN0ZDo6bWFwPFN0cmluZywgU3RyaW5nKj4gYWRkZWRfZW52OworICBzdGF0aWMgc3RkOjpt
YXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nKj4gYWRkZWRfZW52OwogCiAgIC8vIEJlY2F1c2Ug
cHV0ZW52IHN0b3JlcyBhIHBvaW50ZXIgdG8gdGhlIHN0cmluZyBidWZmZXIsIHdlIGNhbid0IGRl
bGV0ZSB0aGUKICAgLy8gcHJldmlvdXMgc3RyaW5nIChpZiBwcmVzZW50KSB1bnRpbCBhZnRlciBp
dCdzIHJlcGxhY2VkLgotICBTdHJpbmcgKnByZXZfZW52ID0gTlVMTDsKKyAgc3RkOjpzdHJpbmcg
KnByZXZfZW52ID0gTlVMTDsKICAgaWYgKGFkZGVkX2Vudi5maW5kKG5hbWUpICE9IGFkZGVkX2Vu
di5lbmQoKSkgewogICAgIHByZXZfZW52ID0gYWRkZWRfZW52W25hbWVdOwogICB9Ci0gIGFkZGVk
X2VudltuYW1lXSA9IG5ldyBTdHJpbmcoKE1lc3NhZ2UoKSA8PCBuYW1lIDw8ICI9IiA8PCB2YWx1
ZSkuR2V0U3RyaW5nKCkpOworICBhZGRlZF9lbnZbbmFtZV0gPSBuZXcgc3RkOjpzdHJpbmcoCisg
ICAgICAoTWVzc2FnZSgpIDw8IG5hbWUgPDwgIj0iIDw8IHZhbHVlKS5HZXRTdHJpbmcoKSk7CiAK
ICAgLy8gVGhlIHN0YW5kYXJkIHNpZ25hdHVyZSBvZiBwdXRlbnYgYWNjZXB0cyBhICdjaGFyKicg
YXJndW1lbnQuIE90aGVyCiAgIC8vIGltcGxlbWVudGF0aW9ucywgbGlrZSBDKytCdWlsZGVyJ3Ms
IGFjY2VwdCBhICdjb25zdCBjaGFyKicuCkBAIC0xODEzLDYgKzE2OTIsOCBAQCBURVNUKEludDMy
RnJvbUdUZXN0RW52VGVzdCwgUmV0dXJuc0RlZmF1bHRXaGVuVmFyaWFibGVJc05vdFNldCkgewog
ICBFWFBFQ1RfRVEoMTAsIEludDMyRnJvbUdUZXN0RW52KCJ0ZW1wIiwgMTApKTsKIH0KIAorIyBp
ZiAhZGVmaW5lZChHVEVTVF9HRVRfSU5UMzJfRlJPTV9FTlZfKQorCiAvLyBUZXN0cyB0aGF0IElu
dDMyRnJvbUdUZXN0RW52KCkgcmV0dXJucyB0aGUgZGVmYXVsdCB2YWx1ZSB3aGVuIHRoZQogLy8g
ZW52aXJvbm1lbnQgdmFyaWFibGUgb3ZlcmZsb3dzIGFzIGFuIEludDMyLgogVEVTVChJbnQzMkZy
b21HVGVzdEVudlRlc3QsIFJldHVybnNEZWZhdWx0V2hlblZhbHVlT3ZlcmZsb3dzKSB7CkBAIC0x
ODM3LDYgKzE3MTgsOCBAQCBURVNUKEludDMyRnJvbUdUZXN0RW52VGVzdCwgUmV0dXJuc0RlZmF1
bHRXaGVuVmFsdWVJc0ludmFsaWQpIHsKICAgRVhQRUNUX0VRKDUwLCBJbnQzMkZyb21HVGVzdEVu
digidGVtcCIsIDUwKSk7CiB9CiAKKyMgZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0dFVF9JTlQz
Ml9GUk9NX0VOVl8pCisKIC8vIFRlc3RzIHRoYXQgSW50MzJGcm9tR1Rlc3RFbnYoKSBwYXJzZXMg
YW5kIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZQogLy8gZW52aXJvbm1lbnQgdmFyaWFibGUgd2hl
biBpdCByZXByZXNlbnRzIGEgdmFsaWQgZGVjaW1hbCBpbnRlZ2VyIGluCiAvLyB0aGUgcmFuZ2Ug
b2YgYW4gSW50MzIuCkBAIC0xOTI1LDcgKzE4MDgsNyBAQCBURVNUKEludDMyRnJvbUVudk9yRGll
RGVhdGhUZXN0LCBBYm9ydHNPbkZhaWx1cmUpIHsKIH0KIAogLy8gVGVzdHMgdGhhdCBJbnQzMkZy
b21FbnZPckRpZSgpIGFib3J0cyB3aXRoIGFuIGVycm9yIG1lc3NhZ2UKLS8vIGlmIHRoZSB2YXJp
YWJsZSBjYW5ub3QgYmUgcmVwcmVzbnRlZCBieSBhbiBJbnQzMi4KKy8vIGlmIHRoZSB2YXJpYWJs
ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgYW4gSW50MzIuCiBURVNUKEludDMyRnJvbUVudk9y
RGllRGVhdGhUZXN0LCBBYm9ydHNPbkludDMyT3ZlcmZsb3cpIHsKICAgU2V0RW52KEdURVNUX0ZM
QUdfUFJFRklYX1VQUEVSXyAiVkFSIiwgIjEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQiKTsKICAgRVhQ
RUNUX0RFQVRIX0lGX1NVUFBPUlRFRCgKQEAgLTIwNzAsNiArMTk1MywxNzMgQEAgVEVTVChVbml0
VGVzdFRlc3QsIENhbkdldE9yaWdpbmFsV29ya2luZ0RpcikgewogICBFWFBFQ1RfU1RSTkUoVW5p
dFRlc3Q6OkdldEluc3RhbmNlKCktPm9yaWdpbmFsX3dvcmtpbmdfZGlyKCksICIiKTsKIH0KIAor
VEVTVChVbml0VGVzdFRlc3QsIFJldHVybnNQbGF1c2libGVUaW1lc3RhbXApIHsKKyAgRVhQRUNU
X0xUKDAsIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5zdGFydF90aW1lc3RhbXAoKSk7CisgIEVY
UEVDVF9MRShVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+c3RhcnRfdGltZXN0YW1wKCksIEdldFRp
bWVJbk1pbGxpcygpKTsKK30KKworLy8gV2hlbiBhIHByb3BlcnR5IHVzaW5nIGEgcmVzZXJ2ZWQg
a2V5IGlzIHN1cHBsaWVkIHRvIHRoaXMgZnVuY3Rpb24sIGl0CisvLyB0ZXN0cyB0aGF0IGEgbm9u
LWZhdGFsIGZhaWx1cmUgaXMgYWRkZWQsIGEgZmF0YWwgZmFpbHVyZSBpcyBub3QgYWRkZWQsCisv
LyBhbmQgdGhhdCB0aGUgcHJvcGVydHkgaXMgbm90IHJlY29yZGVkLgordm9pZCBFeHBlY3ROb25G
YXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgKKyAgICBjb25zdCBU
ZXN0UmVzdWx0JiB0ZXN0X3Jlc3VsdCwgY29uc3QgY2hhcioga2V5KSB7CisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKFRlc3Q6OlJlY29yZFByb3BlcnR5KGtleSwgIjEiKSwgIlJlc2VydmVkIGtl
eSIpOworICBBU1NFUlRfRVEoMCwgdGVzdF9yZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpKSA8
PCAiUHJvcGVydHkgZm9yIGtleSAnIiA8PCBrZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgIicgcmVjb3JkZWQgdW5leHBlY3RlZGx5LiI7Cit9
CisKK3ZvaWQgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2
ZWRLZXlGb3JDdXJyZW50VGVzdCgKKyAgICBjb25zdCBjaGFyKiBrZXkpIHsKKyAgY29uc3QgVGVz
dEluZm8qIHRlc3RfaW5mbyA9IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3Rf
aW5mbygpOworICBBU1NFUlRfVFJVRSh0ZXN0X2luZm8gIT0gTlVMTCk7CisgIEV4cGVjdE5vbkZh
dGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5KCp0ZXN0X2luZm8tPnJl
c3VsdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrZXkpOworfQorCit2b2lkIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1By
b3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAorICAgIGNvbnN0IGNoYXIq
IGtleSkgeworICBjb25zdCBUZXN0Q2FzZSogdGVzdF9jYXNlID0gVW5pdFRlc3Q6OkdldEluc3Rh
bmNlKCktPmN1cnJlbnRfdGVzdF9jYXNlKCk7CisgIEFTU0VSVF9UUlVFKHRlc3RfY2FzZSAhPSBO
VUxMKTsKKyAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2
ZWRLZXkoCisgICAgICB0ZXN0X2Nhc2UtPmFkX2hvY190ZXN0X3Jlc3VsdCgpLCBrZXkpOworfQor
Cit2b2lkIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVk
S2V5T3V0c2lkZU9mVGVzdENhc2UoCisgICAgY29uc3QgY2hhcioga2V5KSB7CisgIEV4cGVjdE5v
bkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5KAorICAgICAgVW5p
dFRlc3Q6OkdldEluc3RhbmNlKCktPmFkX2hvY190ZXN0X3Jlc3VsdCgpLCBrZXkpOworfQorCisv
LyBUZXN0cyB0aGF0IHByb3BlcnR5IHJlY29yZGluZyBmdW5jdGlvbnMgaW4gVW5pdFRlc3Qgb3V0
c2lkZSBvZiB0ZXN0cworLy8gZnVuY3Rpb25zIGNvcnJlY2x5LiAgQ3JlYXRpbmcgYSBzZXBhcmF0
ZSBpbnN0YW5jZSBvZiBVbml0VGVzdCBlbnN1cmVzIGl0CisvLyBpcyBpbiBhIHN0YXRlIHNpbWls
YXIgdG8gdGhlIFVuaXRUZXN0J3Mgc2luZ2xldG9uJ3MgYmV0d2VlbiB0ZXN0cy4KK2NsYXNzIFVu
aXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0IDoKKyAgICBwdWJsaWMgdGVzdGluZzo6aW50ZXJuYWw6
OlVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0SGVscGVyIHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2
b2lkIFNldFVwVGVzdENhc2UoKSB7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5n
UHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdENhc2UoCisgICAgICAgICJkaXNh
YmxlZCIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJl
c2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAorICAgICAgICAiZXJyb3JzIik7CisgICAgRXhw
ZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJy
ZW50VGVzdENhc2UoCisgICAgICAgICJmYWlsdXJlcyIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFp
bHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAor
ICAgICAgICAibmFtZSIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3Bl
cnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAorICAgICAgICAidGVzdHMiKTsK
KyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtl
eUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICAgICAgInRpbWUiKTsKKworICAgIFRlc3Q6OlJlY29y
ZFByb3BlcnR5KCJ0ZXN0X2Nhc2Vfa2V5XzEiLCAiMSIpOworICAgIGNvbnN0IFRlc3RDYXNlKiB0
ZXN0X2Nhc2UgPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2Nhc2UoKTsK
KyAgICBBU1NFUlRfVFJVRSh0ZXN0X2Nhc2UgIT0gTlVMTCk7CisKKyAgICBBU1NFUlRfRVEoMSwg
dGVzdF9jYXNlLT5hZF9ob2NfdGVzdF9yZXN1bHQoKS50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwor
ICAgIEVYUEVDVF9TVFJFUSgidGVzdF9jYXNlX2tleV8xIiwKKyAgICAgICAgICAgICAgICAgdGVz
dF9jYXNlLT5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMCkua2V5KCkpOwor
ICAgIEVYUEVDVF9TVFJFUSgiMSIsCisgICAgICAgICAgICAgICAgIHRlc3RfY2FzZS0+YWRfaG9j
X3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLnZhbHVlKCkpOworICB9Cit9OworCisv
LyBUZXN0cyBUZXN0UmVzdWx0IGhhcyB0aGUgZXhwZWN0ZWQgcHJvcGVydHkgd2hlbiBhZGRlZC4K
K1RFU1RfRihVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdCwgT25lUHJvcGVydHlGb3VuZFdoZW5B
ZGRlZCkgeworICBVbml0VGVzdFJlY29yZFByb3BlcnR5KCJrZXlfMSIsICIxIik7CisKKyAgQVNT
RVJUX0VRKDEsIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkudGVzdF9wcm9wZXJ0eV9j
b3VudCgpKTsKKworICBFWFBFQ1RfU1RSRVEoImtleV8xIiwKKyAgICAgICAgICAgICAgIHVuaXRf
dGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLmtleSgpKTsKKyAg
RVhQRUNUX1NUUkVRKCIxIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3Rf
cmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLnZhbHVlKCkpOworfQorCisvLyBUZXN0cyBUZXN0
UmVzdWx0IGhhcyBtdWx0aXBsZSBwcm9wZXJ0aWVzIHdoZW4gYWRkZWQuCitURVNUX0YoVW5pdFRl
c3RSZWNvcmRQcm9wZXJ0eVRlc3QsIE11bHRpcGxlUHJvcGVydGllc0ZvdW5kV2hlbkFkZGVkKSB7
CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8xIiwgIjEiKTsKKyAgVW5pdFRlc3RSZWNv
cmRQcm9wZXJ0eSgia2V5XzIiLCAiMiIpOworCisgIEFTU0VSVF9FUSgyLCB1bml0X3Rlc3RfLmFk
X2hvY190ZXN0X3Jlc3VsdCgpLnRlc3RfcHJvcGVydHlfY291bnQoKSk7CisKKyAgRVhQRUNUX1NU
UkVRKCJrZXlfMSIsCisgICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3Vs
dCgpLkdldFRlc3RQcm9wZXJ0eSgwKS5rZXkoKSk7CisgIEVYUEVDVF9TVFJFUSgiMSIsIHVuaXRf
dGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLnZhbHVlKCkpOwor
CisgIEVYUEVDVF9TVFJFUSgia2V5XzIiLAorICAgICAgICAgICAgICAgdW5pdF90ZXN0Xy5hZF9o
b2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMSkua2V5KCkpOworICBFWFBFQ1RfU1RS
RVEoIjIiLCB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgx
KS52YWx1ZSgpKTsKK30KKworLy8gVGVzdHMgVGVzdFJlc3VsdDo6UmVjb3JkUHJvcGVydHkoKSBv
dmVycmlkZXMgdmFsdWVzIGZvciBkdXBsaWNhdGUga2V5cy4KK1RFU1RfRihVbml0VGVzdFJlY29y
ZFByb3BlcnR5VGVzdCwgT3ZlcnJpZGVzVmFsdWVzRm9yRHVwbGljYXRlS2V5cykgeworICBVbml0
VGVzdFJlY29yZFByb3BlcnR5KCJrZXlfMSIsICIxIik7CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVy
dHkoImtleV8yIiwgIjIiKTsKKyAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzEiLCAiMTIi
KTsKKyAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzIiLCAiMjIiKTsKKworICBBU1NFUlRf
RVEoMiwgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS50ZXN0X3Byb3BlcnR5X2NvdW50
KCkpOworCisgIEVYUEVDVF9TVFJFUSgia2V5XzEiLAorICAgICAgICAgICAgICAgdW5pdF90ZXN0
Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMCkua2V5KCkpOworICBFWFBF
Q1RfU1RSRVEoIjEyIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVz
dWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLnZhbHVlKCkpOworCisgIEVYUEVDVF9TVFJFUSgia2V5
XzIiLAorICAgICAgICAgICAgICAgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRU
ZXN0UHJvcGVydHkoMSkua2V5KCkpOworICBFWFBFQ1RfU1RSRVEoIjIyIiwKKyAgICAgICAgICAg
ICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDEpLnZh
bHVlKCkpOworfQorCitURVNUX0YoVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3QsCisgICAgICAg
QWRkRmFpbHVyZUluc2lkZVRlc3RzV2hlblVzaW5nVGVzdENhc2VSZXNlcnZlZEtleXMpIHsKKyAg
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JD
dXJyZW50VGVzdCgKKyAgICAgICJuYW1lIik7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29y
ZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgICAidmFsdWVf
cGFyYW0iKTsKKyAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVz
ZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdCgKKyAgICAgICJ0eXBlX3BhcmFtIik7CisgIEV4cGVjdE5v
bkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRl
c3QoCisgICAgICAic3RhdHVzIik7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1By
b3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgICAidGltZSIpOworICBF
eHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1
cnJlbnRUZXN0KAorICAgICAgImNsYXNzbmFtZSIpOworfQorCitURVNUX0YoVW5pdFRlc3RSZWNv
cmRQcm9wZXJ0eVRlc3QsCisgICAgICAgQWRkUmVjb3JkV2l0aFJlc2VydmVkS2V5c0dlbmVyYXRl
c0NvcnJlY3RQcm9wZXJ0eUxpc3QpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAg
ICBUZXN0OjpSZWNvcmRQcm9wZXJ0eSgibmFtZSIsICIxIiksCisgICAgICAiJ2NsYXNzbmFtZScs
ICduYW1lJywgJ3N0YXR1cycsICd0aW1lJywgJ3R5cGVfcGFyYW0nLCAndmFsdWVfcGFyYW0nLCIK
KyAgICAgICIgJ2ZpbGUnLCBhbmQgJ2xpbmUnIGFyZSByZXNlcnZlZCIpOworfQorCitjbGFzcyBV
bml0VGVzdFJlY29yZFByb3BlcnR5VGVzdEVudmlyb25tZW50IDogcHVibGljIEVudmlyb25tZW50
IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBFeHBlY3ROb25G
YXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RD
YXNlKAorICAgICAgICAidGVzdHMiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRp
bmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgICAgICAiZmFp
bHVyZXMiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhS
ZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgICAgICAiZGlzYWJsZWQiKTsKKyAgICBF
eHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNp
ZGVPZlRlc3RDYXNlKAorICAgICAgICAiZXJyb3JzIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWls
dXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAg
ICAgICAgIm5hbWUiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0
eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgICAgICAidGltZXN0YW1wIik7
CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRL
ZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgInRpbWUiKTsKKyAgICBFeHBlY3ROb25GYXRh
bEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNl
KAorICAgICAgICAicmFuZG9tX3NlZWQiKTsKKyAgfQorfTsKKworLy8gVGhpcyB3aWxsIHRlc3Qg
cHJvcGVydHkgcmVjb3JkaW5nIG91dHNpZGUgb2YgYW55IHRlc3Qgb3IgdGVzdCBjYXNlLgorc3Rh
dGljIEVudmlyb25tZW50KiByZWNvcmRfcHJvcGVydHlfZW52ID0KKyAgICBBZGRHbG9iYWxUZXN0
RW52aXJvbm1lbnQobmV3IFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0RW52aXJvbm1lbnQpOwor
CiAvLyBUaGlzIGdyb3VwIG9mIHRlc3RzIGlzIGZvciBwcmVkaWNhdGUgYXNzZXJ0aW9ucyAoQVNT
RVJUX1BSRUQqLCBldGMpCiAvLyBvZiB2YXJpb3VzIGFyaXRpZXMuICBUaGV5IGRvIG5vdCBhdHRl
bXB0IHRvIGJlIGV4aGF1c3RpdmUuICBSYXRoZXIsCiAvLyB2aWV3IHRoZW0gYXMgc21va2UgdGVz
dHMgdGhhdCBjYW4gYmUgZWFzaWx5IHJldmlld2VkIGFuZCB2ZXJpZmllZC4KQEAgLTI0MDEsNyAr
MjQ1MSw3IEBAIFRFU1QoU3RyaW5nQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1NUUkVRKSB7CiAgIEFT
U0VSVF9TVFJFUShwMSwgcDIpOwogCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9TVFJF
USgiYmFkIiwgImdvb2QiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiBcImJh
ZFwiIik7CisgICAgICAgICAgICAgICAgICAgICAgICIgIFwiYmFkXCJcbiAgXCJnb29kXCIiKTsK
IH0KIAogLy8gVGVzdHMgQVNTRVJUX1NUUkVRIHdpdGggTlVMTCBhcmd1bWVudHMuCkBAIC0yNDM3
LDcgKzI0ODcsNyBAQCBURVNUKFN0cmluZ0Fzc2VydGlvblRlc3QsIEFTU0VSVF9TVFJDQVNFRVEp
IHsKIAogICBBU1NFUlRfU1RSQ0FTRUVRKCIiLCAiIik7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJF
KEFTU0VSVF9TVFJDQVNFRVEoIkhpIiwgImhpMiIpLAotICAgICAgICAgICAgICAgICAgICAgICAi
KGlnbm9yaW5nIGNhc2UpIik7CisgICAgICAgICAgICAgICAgICAgICAgICJJZ25vcmluZyBjYXNl
Iik7CiB9CiAKIC8vIFRlc3RzIEFTU0VSVF9TVFJDQVNFTkUuCkBAIC0yNDc1LDYgKzI1MjUsMTEg
QEAgVEVTVChTdHJpbmdBc3NlcnRpb25UZXN0LCBTVFJFUV9XaWRlKSB7CiAgIC8vIFN0cmluZ3Mg
Y29udGFpbmluZyB3aWRlIGNoYXJhY3RlcnMuCiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVY
UEVDVF9TVFJFUShMImFiY1x4ODExOSIsIEwiYWJjXHg4MTIwIiksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJhYmMiKTsKKworICAvLyBUaGUgc3RyZWFtaW5nIHZhcmlhdGlvbi4KKyAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX1NUUkVRKEwiYWJj
XHg4MTE5IiwgTCJhYmNceDgxMjEiKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7CisgIH0sICJFeHBl
Y3RlZCBmYWlsdXJlIik7CiB9CiAKIC8vIFRlc3RzICpfU1RSTkUgb24gd2lkZSBzdHJpbmdzLgpA
QCAtMjUwMSw2ICsyNTU2LDkgQEAgVEVTVChTdHJpbmdBc3NlcnRpb25UZXN0LCBTVFJORV9XaWRl
KSB7CiAgIC8vIFN0cmluZ3MgY29udGFpbmluZyB3aWRlIGNoYXJhY3RlcnMuCiAgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEVYUEVDVF9TVFJORShMImFiY1x4ODExOSIsIEwiYWJjXHg4MTE5Iiks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJhYmMiKTsKKworICAvLyBUaGUgc3RyZWFtaW5n
IHZhcmlhdGlvbi4KKyAgQVNTRVJUX1NUUk5FKEwiYWJjXHg4MTE5IiwgTCJhYmNceDgxMjAiKSA8
PCAiVGhpcyBzaG91bGRuJ3QgaGFwcGVuIjsKIH0KIAogLy8gVGVzdHMgZm9yIDo6dGVzdGluZzo6
SXNTdWJzdHJpbmcoKS4KQEAgLTI2MzEsNyArMjY4OSw2IEBAIFRFU1QoSXNOb3RTdWJzdHJpbmdU
ZXN0LCBSZXR1cm5zQ29ycmVjdFJlc3VsdEZvclN0ZFdzdHJpbmcpIHsKIHRlbXBsYXRlIDx0eXBl
bmFtZSBSYXdUeXBlPgogY2xhc3MgRmxvYXRpbmdQb2ludFRlc3QgOiBwdWJsaWMgVGVzdCB7CiAg
cHJvdGVjdGVkOgotCiAgIC8vIFByZS1jYWxjdWxhdGVkIG51bWJlcnMgdG8gYmUgdXNlZCBieSB0
aGUgdGVzdHMuCiAgIHN0cnVjdCBUZXN0VmFsdWVzIHsKICAgICBSYXdUeXBlIGNsb3NlX3RvX3Bv
c2l0aXZlX3plcm87CkBAIC0zMDc5LDEzICszMTM2LDEzIEBAIFRFU1QoRElTQUJMRURfVGVzdENh
c2UsIERJU0FCTEVEX1Rlc3RTaG91bGROb3RSdW4pIHsKICAgRkFJTCgpIDw8ICJVbmV4cGVjdGVk
IGZhaWx1cmU6IFRlc3QgaW4gZGlzYWJsZWQgdGVzdCBjYXNlIHNob3VsZCBub3QgYmUgcnVuLiI7
CiB9CiAKLS8vIENoZWNrIHRoYXQgd2hlbiBhbGwgdGVzdHMgaW4gYSB0ZXN0IGNhc2UgYXJlIGRp
c2FibGVkLCBTZXR1cFRlc3RDYXNlKCkgYW5kCisvLyBDaGVjayB0aGF0IHdoZW4gYWxsIHRlc3Rz
IGluIGEgdGVzdCBjYXNlIGFyZSBkaXNhYmxlZCwgU2V0VXBUZXN0Q2FzZSgpIGFuZAogLy8gVGVh
ckRvd25UZXN0Q2FzZSgpIGFyZSBub3QgY2FsbGVkLgogY2xhc3MgRGlzYWJsZWRUZXN0c1Rlc3Qg
OiBwdWJsaWMgVGVzdCB7CiAgcHJvdGVjdGVkOgogICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNl
KCkgewogICAgIEZBSUwoKSA8PCAiVW5leHBlY3RlZCBmYWlsdXJlOiBBbGwgdGVzdHMgZGlzYWJs
ZWQgaW4gdGVzdCBjYXNlLiAiCi0gICAgICAgICAgICAgICJTZXR1cFRlc3RDYXNlKCkgc2hvdWxk
IG5vdCBiZSBjYWxsZWQuIjsKKyAgICAgICAgICAgICAgIlNldFVwVGVzdENhc2UoKSBzaG91bGQg
bm90IGJlIGNhbGxlZC4iOwogICB9CiAKICAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgp
IHsKQEAgLTMyMjQsNyArMzI4MSw3IEBAIFRFU1RfRihTaW5nbGVFdmFsdWF0aW9uVGVzdCwgQVNT
RVJUX1NUUikgewogCiAgIC8vIGZhaWxlZCBFWFBFQ1RfU1RSQ0FTRUVRCiAgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9TVFJDQVNFRVEocDFfKyssIHAyXysrKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgImlnbm9yaW5nIGNhc2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIklnbm9yaW5nIGNhc2UiKTsKICAgRVhQRUNUX0VRKHMxXyArIDIsIHAxXyk7CiAgIEVYUEVD
VF9FUShzMl8gKyAyLCBwMl8pOwogfQpAQCAtMzMzMiw3ICszMzg5LDcgQEAgY2xhc3MgTm9GYXRh
bEZhaWx1cmVUZXN0IDogcHVibGljIFRlc3QgewogCiAgIHZvaWQgRG9Bc3NlcnROb0ZhdGFsRmFp
bHVyZU9uRmFpbHMoKSB7CiAgICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoRmFpbHMoKSk7Ci0g
ICAgQUREX0ZBSUxVUkUoKSA8PCAic2hvbGQgbm90IHJlYWNoIGhlcmUuIjsKKyAgICBBRERfRkFJ
TFVSRSgpIDw8ICJzaG91bGQgbm90IHJlYWNoIGhlcmUuIjsKICAgfQogCiAgIHZvaWQgRG9FeHBl
Y3ROb0ZhdGFsRmFpbHVyZU9uRmFpbHMoKSB7CkBAIC0zNDEyLDU5ICszNDY5LDE1NyBAQCBURVNU
X0YoTm9GYXRhbEZhaWx1cmVUZXN0LCBNZXNzYWdlSXNTdHJlYW1hYmxlKSB7CiAKIC8vIFRlc3Rz
IG5vbi1zdHJpbmcgYXNzZXJ0aW9ucy4KIAorc3RkOjpzdHJpbmcgRWRpdHNUb1N0cmluZyhjb25z
dCBzdGQ6OnZlY3RvcjxFZGl0VHlwZT4mIGVkaXRzKSB7CisgIHN0ZDo6c3RyaW5nIG91dDsKKyAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBlZGl0cy5zaXplKCk7ICsraSkgeworICAgIHN0YXRpYyBj
b25zdCBjaGFyIGtFZGl0c1tdID0gIiArLS8iOworICAgIG91dC5hcHBlbmQoMSwga0VkaXRzW2Vk
aXRzW2ldXSk7CisgIH0KKyAgcmV0dXJuIG91dDsKK30KKworc3RkOjp2ZWN0b3I8c2l6ZV90PiBD
aGFyc1RvSW5kaWNlcyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7CisgIHN0ZDo6dmVjdG9yPHNp
emVfdD4gb3V0OworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ci5zaXplKCk7ICsraSkgewor
ICAgIG91dC5wdXNoX2JhY2soc3RyW2ldKTsKKyAgfQorICByZXR1cm4gb3V0OworfQorCitzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4gQ2hhcnNUb0xpbmVzKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIp
IHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG91dDsKKyAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzdHIuc2l6ZSgpOyArK2kpIHsKKyAgICBvdXQucHVzaF9iYWNrKHN0ci5zdWJzdHIoaSwg
MSkpOworICB9CisgIHJldHVybiBvdXQ7Cit9CisKK1RFU1QoRWRpdERpc3RhbmNlLCBUZXN0Q2Fz
ZXMpIHsKKyAgc3RydWN0IENhc2UgeworICAgIGludCBsaW5lOworICAgIGNvbnN0IGNoYXIqIGxl
ZnQ7CisgICAgY29uc3QgY2hhciogcmlnaHQ7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWRfZWRp
dHM7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWRfZGlmZjsKKyAgfTsKKyAgc3RhdGljIGNvbnN0
IENhc2Uga0Nhc2VzW10gPSB7CisgICAgICAvLyBObyBjaGFuZ2UuCisgICAgICB7X19MSU5FX18s
ICJBIiwgIkEiLCAiICIsICIifSwKKyAgICAgIHtfX0xJTkVfXywgIkFCQ0RFIiwgIkFCQ0RFIiwg
IiAgICAgIiwgIiJ9LAorICAgICAgLy8gU2ltcGxlIGFkZHMuCisgICAgICB7X19MSU5FX18sICJY
IiwgIlhBIiwgIiArIiwgIkBAICsxLDIgQEBcbiBYXG4rQVxuIn0sCisgICAgICB7X19MSU5FX18s
ICJYIiwgIlhBQkNEIiwgIiArKysrIiwgIkBAICsxLDUgQEBcbiBYXG4rQVxuK0JcbitDXG4rRFxu
In0sCisgICAgICAvLyBTaW1wbGUgcmVtb3Zlcy4KKyAgICAgIHtfX0xJTkVfXywgIlhBIiwgIlgi
LCAiIC0iLCAiQEAgLTEsMiBAQFxuIFhcbi1BXG4ifSwKKyAgICAgIHtfX0xJTkVfXywgIlhBQkNE
IiwgIlgiLCAiIC0tLS0iLCAiQEAgLTEsNSBAQFxuIFhcbi1BXG4tQlxuLUNcbi1EXG4ifSwKKyAg
ICAgIC8vIFNpbXBsZSByZXBsYWNlcy4KKyAgICAgIHtfX0xJTkVfXywgIkEiLCAiYSIsICIvIiwg
IkBAIC0xLDEgKzEsMSBAQFxuLUFcbithXG4ifSwKKyAgICAgIHtfX0xJTkVfXywgIkFCQ0QiLCAi
YWJjZCIsICIvLy8vIiwKKyAgICAgICAiQEAgLTEsNCArMSw0IEBAXG4tQVxuLUJcbi1DXG4tRFxu
K2FcbitiXG4rY1xuK2RcbiJ9LAorICAgICAgLy8gUGF0aCBmaW5kaW5nLgorICAgICAge19fTElO
RV9fLCAiQUJDREVGR0giLCAiQUJYRUdIMSIsICIgIC0vIC0gICsiLAorICAgICAgICJAQCAtMSw4
ICsxLDcgQEBcbiBBXG4gQlxuLUNcbi1EXG4rWFxuIEVcbi1GXG4gR1xuIEhcbisxXG4ifSwKKyAg
ICAgIHtfX0xJTkVfXywgIkFBQUFCQ0NDQyIsICJBQkFCQ0RDREMiLCAiLSAvICAgKyAvICIsCisg
ICAgICAgIkBAIC0xLDkgKzEsOSBAQFxuLUFcbiBBXG4tQVxuK0JcbiBBXG4gQlxuIENcbitEXG4g
Q1xuLUNcbitEXG4gQ1xuIn0sCisgICAgICB7X19MSU5FX18sICJBQkNERSIsICJCQ0RDRCIsICIt
ICAgKy8iLAorICAgICAgICJAQCAtMSw1ICsxLDUgQEBcbi1BXG4gQlxuIENcbiBEXG4tRVxuK0Nc
bitEXG4ifSwKKyAgICAgIHtfX0xJTkVfXywgIkFCQ0RFRkdISUpLTCIsICJCQ0RDREVGR0pLTEpL
IiwgIi0gKysgICAgIC0tICAgKysiLAorICAgICAgICJAQCAtMSw0ICsxLDUgQEBcbi1BXG4gQlxu
K0NcbitEXG4gQ1xuIERcbiIKKyAgICAgICAiQEAgLTYsNyArNyw3IEBAXG4gRlxuIEdcbi1IXG4t
SVxuIEpcbiBLXG4gTFxuK0pcbitLXG4ifSwKKyAgICAgIHt9fTsKKyAgZm9yIChjb25zdCBDYXNl
KiBjID0ga0Nhc2VzOyBjLT5sZWZ0OyArK2MpIHsKKyAgICBFWFBFQ1RfVFJVRShjLT5leHBlY3Rl
ZF9lZGl0cyA9PQorICAgICAgICAgICAgICAgIEVkaXRzVG9TdHJpbmcoQ2FsY3VsYXRlT3B0aW1h
bEVkaXRzKENoYXJzVG9JbmRpY2VzKGMtPmxlZnQpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJzVG9JbmRpY2VzKGMtPnJpZ2h0KSkpKQor
ICAgICAgICA8PCAiTGVmdCA8IiA8PCBjLT5sZWZ0IDw8ICI+IFJpZ2h0IDwiIDw8IGMtPnJpZ2h0
IDw8ICI+IEVkaXRzIDwiCisgICAgICAgIDw8IEVkaXRzVG9TdHJpbmcoQ2FsY3VsYXRlT3B0aW1h
bEVkaXRzKAorICAgICAgICAgICAgICAgQ2hhcnNUb0luZGljZXMoYy0+bGVmdCksIENoYXJzVG9J
bmRpY2VzKGMtPnJpZ2h0KSkpIDw8ICI+IjsKKyAgICBFWFBFQ1RfVFJVRShjLT5leHBlY3RlZF9k
aWZmID09IENyZWF0ZVVuaWZpZWREaWZmKENoYXJzVG9MaW5lcyhjLT5sZWZ0KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJzVG9MaW5l
cyhjLT5yaWdodCkpKQorICAgICAgICA8PCAiTGVmdCA8IiA8PCBjLT5sZWZ0IDw8ICI+IFJpZ2h0
IDwiIDw8IGMtPnJpZ2h0IDw8ICI+IERpZmYgPCIKKyAgICAgICAgPDwgQ3JlYXRlVW5pZmllZERp
ZmYoQ2hhcnNUb0xpbmVzKGMtPmxlZnQpLCBDaGFyc1RvTGluZXMoYy0+cmlnaHQpKQorICAgICAg
ICA8PCAiPiI7CisgIH0KK30KKwogLy8gVGVzdHMgRXFGYWlsdXJlKCksIHVzZWQgZm9yIGltcGxl
bWVudGluZyAqRVEqIGFzc2VydGlvbnMuCiBURVNUKEFzc2VydGlvblRlc3QsIEVxRmFpbHVyZSkg
ewotICBjb25zdCBTdHJpbmcgZm9vX3ZhbCgiNSIpLCBiYXJfdmFsKCI2Iik7Ci0gIGNvbnN0IFN0
cmluZyBtc2cxKAorICBjb25zdCBzdGQ6OnN0cmluZyBmb29fdmFsKCI1IiksIGJhcl92YWwoIjYi
KTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbXNnMSgKICAgICAgIEVxRmFpbHVyZSgiZm9vIiwgImJh
ciIsIGZvb192YWwsIGJhcl92YWwsIGZhbHNlKQogICAgICAgLmZhaWx1cmVfbWVzc2FnZSgpKTsK
ICAgRVhQRUNUX1NUUkVRKAotICAgICAgIlZhbHVlIG9mOiBiYXJcbiIKLSAgICAgICIgIEFjdHVh
bDogNlxuIgotICAgICAgIkV4cGVjdGVkOiBmb29cbiIKLSAgICAgICJXaGljaCBpczogNSIsCisg
ICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgIiAgZm9v
XG4iCisgICAgICAiICAgIFdoaWNoIGlzOiA1XG4iCisgICAgICAiICBiYXJcbiIKKyAgICAgICIg
ICAgV2hpY2ggaXM6IDYiLAogICAgICAgbXNnMS5jX3N0cigpKTsKIAotICBjb25zdCBTdHJpbmcg
bXNnMigKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbXNnMigKICAgICAgIEVxRmFpbHVyZSgiZm9vIiwg
IjYiLCBmb29fdmFsLCBiYXJfdmFsLCBmYWxzZSkKICAgICAgIC5mYWlsdXJlX21lc3NhZ2UoKSk7
CiAgIEVYUEVDVF9TVFJFUSgKLSAgICAgICJWYWx1ZSBvZjogNlxuIgotICAgICAgIkV4cGVjdGVk
OiBmb29cbiIKLSAgICAgICJXaGljaCBpczogNSIsCisgICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkg
b2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgIiAgZm9vXG4iCisgICAgICAiICAgIFdoaWNoIGlz
OiA1XG4iCisgICAgICAiICA2IiwKICAgICAgIG1zZzIuY19zdHIoKSk7CiAKLSAgY29uc3QgU3Ry
aW5nIG1zZzMoCisgIGNvbnN0IHN0ZDo6c3RyaW5nIG1zZzMoCiAgICAgICBFcUZhaWx1cmUoIjUi
LCAiYmFyIiwgZm9vX3ZhbCwgYmFyX3ZhbCwgZmFsc2UpCiAgICAgICAuZmFpbHVyZV9tZXNzYWdl
KCkpOwogICBFWFBFQ1RfU1RSRVEoCi0gICAgICAiVmFsdWUgb2Y6IGJhclxuIgotICAgICAgIiAg
QWN0dWFsOiA2XG4iCi0gICAgICAiRXhwZWN0ZWQ6IDUiLAorICAgICAgIkV4cGVjdGVkIGVxdWFs
aXR5IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICIgIDVcbiIKKyAgICAgICIgIGJhclxuIgor
ICAgICAgIiAgICBXaGljaCBpczogNiIsCiAgICAgICBtc2czLmNfc3RyKCkpOwogCi0gIGNvbnN0
IFN0cmluZyBtc2c0KAorICBjb25zdCBzdGQ6OnN0cmluZyBtc2c0KAogICAgICAgRXFGYWlsdXJl
KCI1IiwgIjYiLCBmb29fdmFsLCBiYXJfdmFsLCBmYWxzZSkuZmFpbHVyZV9tZXNzYWdlKCkpOwog
ICBFWFBFQ1RfU1RSRVEoCi0gICAgICAiVmFsdWUgb2Y6IDZcbiIKLSAgICAgICJFeHBlY3RlZDog
NSIsCisgICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAg
IiAgNVxuIgorICAgICAgIiAgNiIsCiAgICAgICBtc2c0LmNfc3RyKCkpOwogCi0gIGNvbnN0IFN0
cmluZyBtc2c1KAorICBjb25zdCBzdGQ6OnN0cmluZyBtc2c1KAogICAgICAgRXFGYWlsdXJlKCJm
b28iLCAiYmFyIiwKLSAgICAgICAgICAgICAgICBTdHJpbmcoIlwieFwiIiksIFN0cmluZygiXCJ5
XCIiKSwKKyAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZygiXCJ4XCIiKSwgc3RkOjpzdHJpbmco
IlwieVwiIiksCiAgICAgICAgICAgICAgICAgdHJ1ZSkuZmFpbHVyZV9tZXNzYWdlKCkpOwogICBF
WFBFQ1RfU1RSRVEoCi0gICAgICAiVmFsdWUgb2Y6IGJhclxuIgotICAgICAgIiAgQWN0dWFsOiBc
InlcIlxuIgotICAgICAgIkV4cGVjdGVkOiBmb28gKGlnbm9yaW5nIGNhc2UpXG4iCi0gICAgICAi
V2hpY2ggaXM6IFwieFwiIiwKKyAgICAgICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1
ZXM6XG4iCisgICAgICAiICBmb29cbiIKKyAgICAgICIgICAgV2hpY2ggaXM6IFwieFwiXG4iCisg
ICAgICAiICBiYXJcbiIKKyAgICAgICIgICAgV2hpY2ggaXM6IFwieVwiXG4iCisgICAgICAiSWdu
b3JpbmcgY2FzZSIsCiAgICAgICBtc2c1LmNfc3RyKCkpOwogfQogCitURVNUKEFzc2VydGlvblRl
c3QsIEVxRmFpbHVyZVdpdGhEaWZmKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGxlZnQoCisgICAg
ICAiMVxcbjJYWFhcXG4zXFxuNVxcbjZcXG43XFxuOFxcbjlcXG4xMFxcbjExXFxuMTJYWFhcXG4x
M1xcbjE0XFxuMTUiKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgcmlnaHQoCisgICAgICAiMVxcbjJc
XG4zXFxuNFxcbjVcXG42XFxuN1xcbjhcXG45XFxuMTFcXG4xMlxcbjEzXFxuMTQiKTsKKyAgY29u
c3Qgc3RkOjpzdHJpbmcgbXNnMSgKKyAgICAgIEVxRmFpbHVyZSgibGVmdCIsICJyaWdodCIsIGxl
ZnQsIHJpZ2h0LCBmYWxzZSkuZmFpbHVyZV9tZXNzYWdlKCkpOworICBFWFBFQ1RfU1RSRVEoCisg
ICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgIiAgbGVm
dFxuIgorICAgICAgIiAgICBXaGljaCBpczogIgorICAgICAgIjFcXG4yWFhYXFxuM1xcbjVcXG42
XFxuN1xcbjhcXG45XFxuMTBcXG4xMVxcbjEyWFhYXFxuMTNcXG4xNFxcbjE1XG4iCisgICAgICAi
ICByaWdodFxuIgorICAgICAgIiAgICBXaGljaCBpczogMVxcbjJcXG4zXFxuNFxcbjVcXG42XFxu
N1xcbjhcXG45XFxuMTFcXG4xMlxcbjEzXFxuMTRcbiIKKyAgICAgICJXaXRoIGRpZmY6XG5AQCAt
MSw1ICsxLDYgQEBcbiAxXG4tMlhYWFxuKzJcbiAzXG4rNFxuIDVcbiA2XG4iCisgICAgICAiQEAg
LTcsOCArOCw2IEBAXG4gOFxuIDlcbi0xMFxuIDExXG4tMTJYWFhcbisxMlxuIDEzXG4gMTRcbi0x
NVxuIiwKKyAgICAgIG1zZzEuY19zdHIoKSk7Cit9CisKIC8vIFRlc3RzIEFwcGVuZFVzZXJNZXNz
YWdlKCksIHVzZWQgZm9yIGltcGxlbWVudGluZyB0aGUgKkVRKiBtYWNyb3MuCiBURVNUKEFzc2Vy
dGlvblRlc3QsIEFwcGVuZFVzZXJNZXNzYWdlKSB7Ci0gIGNvbnN0IFN0cmluZyBmb28oImZvbyIp
OworICBjb25zdCBzdGQ6OnN0cmluZyBmb28oImZvbyIpOwogCiAgIE1lc3NhZ2UgbXNnOwogICBF
WFBFQ1RfU1RSRVEoImZvbyIsCkBAIC0zNDc3LDcgKzM2MzIsNyBAQCBURVNUKEFzc2VydGlvblRl
c3QsIEFwcGVuZFVzZXJNZXNzYWdlKSB7CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFNpbGVu
Y2VzIHdhcm5pbmdzOiAiQ29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlIiwgIlVucmVhY2hhYmxlIGNv
ZGUiCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gKKyMgcHJhZ21hIG9wdGlvbiBw
dXNoIC13LWNjYyAtdy1yY2gKICNlbmRpZgogCiAvLyBUZXN0cyBBU1NFUlRfVFJVRS4KQEAgLTM0
OTAsOCArMzY0NSw4IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1RSVUUpIHsKIC8vIFRl
c3RzIEFTU0VSVF9UUlVFKHByZWRpY2F0ZSkgZm9yIHByZWRpY2F0ZXMgcmV0dXJuaW5nIEFzc2Vy
dGlvblJlc3VsdC4KIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0VHJ1ZVdpdGhBc3NlcnRpb25S
ZXN1bHQpIHsKICAgQVNTRVJUX1RSVUUoUmVzdWx0SXNFdmVuKDIpKTsKLSNpZiAhZGVmaW5lZChf
X0JPUkxBTkRDX18pIHx8IF9fQk9STEFORENfXyA+PSAweDYwMAotICAvLyBJQ0UncyBpbiBDKytC
dWlsZGVyIDIwMDcuCisjaWZuZGVmIF9fQk9STEFORENfXworICAvLyBJQ0UncyBpbiBDKytCdWls
ZGVyLgogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfVFJVRShSZXN1bHRJc0V2ZW4oMykp
LAogICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IFJlc3VsdElzRXZlbigzKVxuIgog
ICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IGZhbHNlICgzIGlzIG9kZClcbiIKQEAg
LTM1MTYsOCArMzY3MSw4IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0ZBTFNFKSB7CiAv
LyBUZXN0cyBBU1NFUlRfRkFMU0UocHJlZGljYXRlKSBmb3IgcHJlZGljYXRlcyByZXR1cm5pbmcg
QXNzZXJ0aW9uUmVzdWx0LgogVEVTVChBc3NlcnRpb25UZXN0LCBBc3NlcnRGYWxzZVdpdGhBc3Nl
cnRpb25SZXN1bHQpIHsKICAgQVNTRVJUX0ZBTFNFKFJlc3VsdElzRXZlbigzKSk7Ci0jaWYgIWRl
ZmluZWQoX19CT1JMQU5EQ19fKSB8fCBfX0JPUkxBTkRDX18gPj0gMHg2MDAKLSAgLy8gSUNFJ3Mg
aW4gQysrQnVpbGRlciAyMDA3LgorI2lmbmRlZiBfX0JPUkxBTkRDX18KKyAgLy8gSUNFJ3MgaW4g
QysrQnVpbGRlci4KICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFJlc3VsdElz
RXZlbigyKSksCiAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogUmVzdWx0SXNFdmVu
KDIpXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogdHJ1ZSAoMiBpcyBldmVu
KVxuIgpAQCAtMzUzMSw4ICszNjg2LDggQEAgVEVTVChBc3NlcnRpb25UZXN0LCBBc3NlcnRGYWxz
ZVdpdGhBc3NlcnRpb25SZXN1bHQpIHsKIH0KIAogI2lmZGVmIF9fQk9STEFORENfXwotLy8gUmVz
dG9yZXMgd2FybmluZ3MgYWZ0ZXIgcHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHJl
c3NlZCB0aGVtCi0jcHJhZ21hIG9wdGlvbiBwb3AKKy8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVy
IHByZXZpb3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXBwcmVzc2VkIHRoZW0KKyMgcHJhZ21h
IG9wdGlvbiBwb3AKICNlbmRpZgogCiAvLyBUZXN0cyB1c2luZyBBU1NFUlRfRVEgb24gZG91Ymxl
IHZhbHVlcy4gIFRoZSBwdXJwb3NlIGlzIHRvIG1ha2UKQEAgLTM1NTEsOSArMzcwNiwxMCBAQCBU
RVNUKEV4cGVjdFRlc3QsIEFTU0VSVF9FUV9Eb3VibGUpIHsKIFRFU1QoQXNzZXJ0aW9uVGVzdCwg
QVNTRVJUX0VRKSB7CiAgIEFTU0VSVF9FUSg1LCAyICsgMyk7CiAgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEFTU0VSVF9FUSg1LCAyKjMpLAotICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6
IDIqM1xuIgotICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IDZcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgIkV4cGVjdGVkOiA1Iik7CisgICAgICAgICAgICAgICAgICAgICAgICJF
eHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICIgIDVcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgMiozXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICIgICAgV2hpY2ggaXM6IDYiKTsKIH0KIAogLy8gVGVzdHMgQVNTRVJUX0VR
KE5VTEwsIHBvaW50ZXIpLgpAQCAtMzU2MSw3ICszNzE3LDcgQEAgVEVTVChBc3NlcnRpb25UZXN0
LCBBU1NFUlRfRVEpIHsKIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0VRX05VTEwpIHsKICAg
Ly8gQSBzdWNjZXNzLgogICBjb25zdCBjaGFyKiBwID0gTlVMTDsKLSAgLy8gU29tZSBvbGRlciBH
Q0MgdmVyc2lvbnMgbWF5IGlzc3VlIGEgc3B1cmlvdXMgd2FyaW5nIGluIHRoaXMgb3IgdGhlIG5l
eHQKKyAgLy8gU29tZSBvbGRlciBHQ0MgdmVyc2lvbnMgbWF5IGlzc3VlIGEgc3B1cmlvdXMgd2Fy
bmluZyBpbiB0aGlzIG9yIHRoZSBuZXh0CiAgIC8vIGFzc2VydGlvbiBzdGF0ZW1lbnQuIFRoaXMg
d2FybmluZyBzaG91bGQgbm90IGJlIHN1cHByZXNzZWQgd2l0aAogICAvLyBzdGF0aWNfY2FzdCBz
aW5jZSB0aGUgdGVzdCB2ZXJpZmllcyB0aGUgYWJpbGl0eSB0byB1c2UgYmFyZSBOVUxMIGFzIHRo
ZQogICAvLyBleHBlY3RlZCBwYXJhbWV0ZXIgdG8gdGhlIG1hY3JvLgpAQCAtMzU3MCw3ICszNzI2
LDcgQEAgVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfRVFfTlVMTCkgewogICAvLyBBIGZhaWx1
cmUuCiAgIHN0YXRpYyBpbnQgbiA9IDA7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9F
UShOVUxMLCAmbiksCi0gICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogJm5cbiIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAiICAmblxuICAgIFdoaWNoIGlzOiIpOwogfQogI2VuZGlm
ICAvLyBHVEVTVF9DQU5fQ09NUEFSRV9OVUxMCiAKQEAgLTM1ODYsNyArMzc0Miw3IEBAIFRFU1Qo
RXhwZWN0VGVzdCwgQVNTRVJUX0VRXzApIHsKIAogICAvLyBBIGZhaWx1cmUuCiAgIEVYUEVDVF9G
QVRBTF9GQUlMVVJFKEFTU0VSVF9FUSgwLCA1LjYpLAotICAgICAgICAgICAgICAgICAgICAgICAi
RXhwZWN0ZWQ6IDAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgMFxuICA1LjYiKTsKIH0K
IAogLy8gVGVzdHMgQVNTRVJUX05FLgpAQCAtMzYzNSwxMyArMzc5MSwxNCBAQCB2b2lkIFRocm93
Tm90aGluZygpIHt9CiBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9USFJPVykgewogICBBU1NF
UlRfVEhST1coVGhyb3dBbkludGVnZXIoKSwgaW50KTsKIAotI2lmbmRlZiBfX0JPUkxBTkRDX18K
KyMgaWZuZGVmIF9fQk9STEFORENfXworCiAgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAwNyBh
bmQgMjAwOS4KICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoCiAgICAgICBBU1NFUlRfVEhST1coVGhy
b3dBbkludGVnZXIoKSwgYm9vbCksCiAgICAgICAiRXhwZWN0ZWQ6IFRocm93QW5JbnRlZ2VyKCkg
dGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiB0eXBlIGJvb2wuXG4iCiAgICAgICAiICBBY3R1YWw6IGl0
IHRocm93cyBhIGRpZmZlcmVudCB0eXBlLiIpOwotI2VuZGlmCisjIGVuZGlmCiAKICAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoCiAgICAgICBBU1NFUlRfVEhST1coVGhyb3dOb3RoaW5nKCksIGJvb2wp
LApAQCAtMzY3Miw3ICszODI5LDggQEAgVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfQU5ZX1RI
Uk9XKSB7CiAvLyBjb21waWxlLgogVEVTVChBc3NlcnRpb25UZXN0LCBBc3NlcnRQcmVjZWRlbmNl
KSB7CiAgIEFTU0VSVF9FUSgxIDwgMiwgdHJ1ZSk7Ci0gIEFTU0VSVF9FUSh0cnVlICYmIGZhbHNl
LCBmYWxzZSk7CisgIGJvb2wgZmFsc2VfdmFsdWUgPSBmYWxzZTsKKyAgQVNTRVJUX0VRKHRydWUg
JiYgZmFsc2VfdmFsdWUsIGZhbHNlKTsKIH0KIAogLy8gQSBzdWJyb3V0aW5lIHVzZWQgYnkgdGhl
IGZvbGxvd2luZyB0ZXN0LgpAQCAtMzY4Myw3ICszODQxLDcgQEAgdm9pZCBUZXN0RXExKGludCB4
KSB7CiAvLyBUZXN0cyBjYWxsaW5nIGEgdGVzdCBzdWJyb3V0aW5lIHRoYXQncyBub3QgcGFydCBv
ZiBhIGZpeHR1cmUuCiBURVNUKEFzc2VydGlvblRlc3QsIE5vbkZpeHR1cmVTdWJyb3V0aW5lKSB7
CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKFRlc3RFcTEoMiksCi0gICAgICAgICAgICAgICAgICAg
ICAgICJWYWx1ZSBvZjogeCIpOworICAgICAgICAgICAgICAgICAgICAgICAiICB4XG4gICAgV2hp
Y2ggaXM6IDIiKTsKIH0KIAogLy8gQW4gdW5jb3B5YWJsZSBjbGFzcy4KQEAgLTM3MzIsNyArMzg5
MCw4IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0V29ya3NXaXRoVW5jb3B5YWJsZU9iamVj
dCkgewogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShUZXN0QXNzZXJ0Tm9uUG9zaXRpdmUoKSwKICAg
ICAiSXNQb3NpdGl2ZVVuY29weWFibGUoeSkgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZVxueSBl
dmFsdWF0ZXMgdG8gLTEiKTsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoVGVzdEFzc2VydEVxdWFs
c1VuY29weWFibGUoKSwKLSAgICAiVmFsdWUgb2Y6IHlcbiAgQWN0dWFsOiAtMVxuRXhwZWN0ZWQ6
IHhcbldoaWNoIGlzOiA1Iik7CisgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBlcXVh
bGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgIHhcbiAg
ICBXaGljaCBpczogNVxuICB5XG4gICAgV2hpY2ggaXM6IC0xIik7CiB9CiAKIC8vIFRlc3RzIHRo
YXQgdW5jb3B5YWJsZSBvYmplY3RzIGNhbiBiZSB1c2VkIGluIGV4cGVjdHMuCkBAIC0zNzQ0LDU3
ICszOTAzLDkwIEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgRXhwZWN0V29ya3NXaXRoVW5jb3B5YWJs
ZU9iamVjdCkgewogICAgICJJc1Bvc2l0aXZlVW5jb3B5YWJsZSh5KSBldmFsdWF0ZXMgdG8gZmFs
c2UsIHdoZXJlXG55IGV2YWx1YXRlcyB0byAtMSIpOwogICBFWFBFQ1RfRVEoeCwgeCk7CiAgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSh4LCB5KSwKLSAgICAiVmFsdWUgb2Y6IHlc
biAgQWN0dWFsOiAtMVxuRXhwZWN0ZWQ6IHhcbldoaWNoIGlzOiA1Iik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICIgIHhcbiAgICBXaGljaCBpczogNVxuICB5XG4gICAgV2hp
Y2ggaXM6IC0xIik7CiB9CiAKK2VudW0gTmFtZWRFbnVtIHsKKyAga0UxID0gMCwKKyAga0UyID0g
MQorfTsKKworVEVTVChBc3NlcnRpb25UZXN0LCBOYW1lZEVudW0pIHsKKyAgRVhQRUNUX0VRKGtF
MSwga0UxKTsKKyAgRVhQRUNUX0xUKGtFMSwga0UyKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoRVhQRUNUX0VRKGtFMSwga0UyKSwgIldoaWNoIGlzOiAwIik7CisgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9FUShrRTEsIGtFMiksICJXaGljaCBpczogMSIpOworfQogCiAvLyBU
aGUgdmVyc2lvbiBvZiBnY2MgdXNlZCBpbiBYQ29kZSAyLjIgaGFzIGEgYnVnIGFuZCBkb2Vzbid0
IGFsbG93CiAvLyBhbm9ueW1vdXMgZW51bXMgaW4gYXNzZXJ0aW9ucy4gIFRoZXJlZm9yZSB0aGUg
Zm9sbG93aW5nIHRlc3QgaXMgbm90CiAvLyBkb25lIG9uIE1hYy4KLS8vIFN1biBTdHVkaW8gYWxz
byByZWplY3RzIHRoaXMgY29kZS4KLSNpZiAhR1RFU1RfT1NfTUFDICYmICFkZWZpbmVkKF9fU1VO
UFJPX0NDKQorLy8gU3VuIFN0dWRpbyBhbmQgSFAgYUNDIGFsc28gcmVqZWN0IHRoaXMgY29kZS4K
KyNpZiAhR1RFU1RfT1NfTUFDICYmICFkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiAhZGVmaW5lZChf
X0hQX2FDQykKIAogLy8gVGVzdHMgdXNpbmcgYXNzZXJ0aW9ucyB3aXRoIGFub255bW91cyBlbnVt
cy4KIGVudW0gewotICBDQVNFX0EgPSAtMSwKLSNpZiBHVEVTVF9PU19MSU5VWAorICBrQ2FzZUEg
PSAtMSwKKworIyBpZiBHVEVTVF9PU19MSU5VWAorCiAgIC8vIFdlIHdhbnQgdG8gdGVzdCB0aGUg
Y2FzZSB3aGVyZSB0aGUgc2l6ZSBvZiB0aGUgYW5vbnltb3VzIGVudW0gaXMKICAgLy8gbGFyZ2Vy
IHRoYW4gc2l6ZW9mKGludCksIHRvIG1ha2Ugc3VyZSBvdXIgaW1wbGVtZW50YXRpb24gb2YgdGhl
CiAgIC8vIGFzc2VydGlvbnMgZG9lc24ndCB0cnVuY2F0ZSB0aGUgZW51bXMuICBIb3dldmVyLCBN
U1ZDCiAgIC8vIChpbmNvcnJlY3RseSkgZG9lc24ndCBhbGxvdyBhbiBlbnVtIHZhbHVlIHRvIGV4
Y2VlZCB0aGUgcmFuZ2Ugb2YKICAgLy8gYW4gaW50LCBzbyB0aGlzIGhhcyB0byBiZSBjb25kaXRp
b25hbGx5IGNvbXBpbGVkLgogICAvLwotICAvLyBPbiBMaW51eCwgQ0FTRV9CIGFuZCBDQVNFX0Eg
aGF2ZSB0aGUgc2FtZSB2YWx1ZSB3aGVuIHRydW5jYXRlZCB0bworICAvLyBPbiBMaW51eCwga0Nh
c2VCIGFuZCBrQ2FzZUEgaGF2ZSB0aGUgc2FtZSB2YWx1ZSB3aGVuIHRydW5jYXRlZCB0bwogICAv
LyBpbnQgc2l6ZS4gIFdlIHdhbnQgdG8gdGVzdCB3aGV0aGVyIHRoaXMgd2lsbCBjb25mdXNlIHRo
ZQogICAvLyBhc3NlcnRpb25zLgotICBDQVNFX0IgPSB0ZXN0aW5nOjppbnRlcm5hbDo6a01heEJp
Z2dlc3RJbnQsCi0jZWxzZQotICBDQVNFX0IgPSBJTlRfTUFYLAotI2VuZGlmICAvLyBHVEVTVF9P
U19MSU5VWAorICBrQ2FzZUIgPSB0ZXN0aW5nOjppbnRlcm5hbDo6a01heEJpZ2dlc3RJbnQsCisK
KyMgZWxzZQorCisgIGtDYXNlQiA9IElOVF9NQVgsCisKKyMgZW5kaWYgIC8vIEdURVNUX09TX0xJ
TlVYCisKKyAga0Nhc2VDID0gNDIKIH07CiAKIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQW5vbnltb3Vz
RW51bSkgewotI2lmIEdURVNUX09TX0xJTlVYCi0gIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxpbnQ+
KENBU0VfQSksIHN0YXRpY19jYXN0PGludD4oQ0FTRV9CKSk7Ci0jZW5kaWYgIC8vIEdURVNUX09T
X0xJTlVYCi0KLSAgRVhQRUNUX0VRKENBU0VfQSwgQ0FTRV9BKTsKLSAgRVhQRUNUX05FKENBU0Vf
QSwgQ0FTRV9CKTsKLSAgRVhQRUNUX0xUKENBU0VfQSwgQ0FTRV9CKTsKLSAgRVhQRUNUX0xFKENB
U0VfQSwgQ0FTRV9CKTsKLSAgRVhQRUNUX0dUKENBU0VfQiwgQ0FTRV9BKTsKLSAgRVhQRUNUX0dF
KENBU0VfQSwgQ0FTRV9BKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dFKENB
U0VfQSwgQ0FTRV9CKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIihDQVNFX0EpID49IChD
QVNFX0IpIik7Ci0KLSAgQVNTRVJUX0VRKENBU0VfQSwgQ0FTRV9BKTsKLSAgQVNTRVJUX05FKENB
U0VfQSwgQ0FTRV9CKTsKLSAgQVNTRVJUX0xUKENBU0VfQSwgQ0FTRV9CKTsKLSAgQVNTRVJUX0xF
KENBU0VfQSwgQ0FTRV9CKTsKLSAgQVNTRVJUX0dUKENBU0VfQiwgQ0FTRV9BKTsKLSAgQVNTRVJU
X0dFKENBU0VfQSwgQ0FTRV9BKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKENB
U0VfQSwgQ0FTRV9CKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBDQVNFX0Ii
KTsKKyMgaWYgR1RFU1RfT1NfTElOVVgKKworICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50Pihr
Q2FzZUEpLCBzdGF0aWNfY2FzdDxpbnQ+KGtDYXNlQikpOworCisjIGVuZGlmICAvLyBHVEVTVF9P
U19MSU5VWAorCisgIEVYUEVDVF9FUShrQ2FzZUEsIGtDYXNlQSk7CisgIEVYUEVDVF9ORShrQ2Fz
ZUEsIGtDYXNlQik7CisgIEVYUEVDVF9MVChrQ2FzZUEsIGtDYXNlQik7CisgIEVYUEVDVF9MRShr
Q2FzZUEsIGtDYXNlQik7CisgIEVYUEVDVF9HVChrQ2FzZUIsIGtDYXNlQSk7CisgIEVYUEVDVF9H
RShrQ2FzZUEsIGtDYXNlQSk7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HRShr
Q2FzZUEsIGtDYXNlQiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICIoa0Nhc2VBKSA+PSAo
a0Nhc2VCKSIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR0Uoa0Nhc2VBLCBr
Q2FzZUMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiLTEgdnMgNDIiKTsKKworICBBU1NF
UlRfRVEoa0Nhc2VBLCBrQ2FzZUEpOworICBBU1NFUlRfTkUoa0Nhc2VBLCBrQ2FzZUIpOworICBB
U1NFUlRfTFQoa0Nhc2VBLCBrQ2FzZUIpOworICBBU1NFUlRfTEUoa0Nhc2VBLCBrQ2FzZUIpOwor
ICBBU1NFUlRfR1Qoa0Nhc2VCLCBrQ2FzZUEpOworICBBU1NFUlRfR0Uoa0Nhc2VBLCBrQ2FzZUEp
OworCisjIGlmbmRlZiBfX0JPUkxBTkRDX18KKworICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyLgor
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoa0Nhc2VBLCBrQ2FzZUIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAiICBrQ2FzZUJcbiAgICBXaGljaCBpczogIik7CisgIEVYUEVDVF9G
QVRBTF9GQUlMVVJFKEFTU0VSVF9FUShrQ2FzZUEsIGtDYXNlQyksCisgICAgICAgICAgICAgICAg
ICAgICAgICJcbiAgICBXaGljaCBpczogNDIiKTsKKyMgZW5kaWYKKworICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShBU1NFUlRfRVEoa0Nhc2VBLCBrQ2FzZUMpLAorICAgICAgICAgICAgICAgICAgICAg
ICAiXG4gICAgV2hpY2ggaXM6IC0xIik7CiB9CiAKICNlbmRpZiAgLy8gIUdURVNUX09TX01BQyAm
JiAhZGVmaW5lZChfX1NVTlBST19DQykKQEAgLTM4NDAsMjQgKzQwMzIsMjYgQEAgVEVTVChIUkVT
VUxUQXNzZXJ0aW9uVGVzdCwgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKSB7CiAKICAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0hSRVNVTFRfRkFJTEVEKE9rSFJFU1VMVFN1Y2Nlc3MoKSks
CiAgICAgIkV4cGVjdGVkOiAoT2tIUkVTVUxUU3VjY2VzcygpKSBmYWlscy5cbiIKLSAgICAiICBB
Y3R1YWw6IDB4MDAwMDAwMDAiKTsKKyAgICAiICBBY3R1YWw6IDB4MCIpOwogICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfSFJFU1VMVF9GQUlMRUQoRmFsc2VIUkVTVUxUU3VjY2Vzcygp
KSwKICAgICAiRXhwZWN0ZWQ6IChGYWxzZUhSRVNVTFRTdWNjZXNzKCkpIGZhaWxzLlxuIgotICAg
ICIgIEFjdHVhbDogMHgwMDAwMDAwMSIpOworICAgICIgIEFjdHVhbDogMHgxIik7CiB9CiAKIFRF
U1QoSFJFU1VMVEFzc2VydGlvblRlc3QsIEFTU0VSVF9IUkVTVUxUX0ZBSUxFRCkgewogICBBU1NF
UlRfSFJFU1VMVF9GQUlMRUQoRV9VTkVYUEVDVEVEKTsKIAotI2lmbmRlZiBfX0JPUkxBTkRDX18K
KyMgaWZuZGVmIF9fQk9STEFORENfXworCiAgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAwNyBh
bmQgMjAwOS4KICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0hSRVNVTFRfRkFJTEVEKE9r
SFJFU1VMVFN1Y2Nlc3MoKSksCiAgICAgIkV4cGVjdGVkOiAoT2tIUkVTVUxUU3VjY2VzcygpKSBm
YWlscy5cbiIKLSAgICAiICBBY3R1YWw6IDB4MDAwMDAwMDAiKTsKLSNlbmRpZgorICAgICIgIEFj
dHVhbDogMHgwIik7CisjIGVuZGlmCisKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0hS
RVNVTFRfRkFJTEVEKEZhbHNlSFJFU1VMVFN1Y2Nlc3MoKSksCiAgICAgIkV4cGVjdGVkOiAoRmFs
c2VIUkVTVUxUU3VjY2VzcygpKSBmYWlscy5cbiIKLSAgICAiICBBY3R1YWw6IDB4MDAwMDAwMDEi
KTsKKyAgICAiICBBY3R1YWw6IDB4MSIpOwogfQogCiAvLyBUZXN0cyB0aGF0IHN0cmVhbWluZyB0
byB0aGUgSFJFU1VMVCBtYWNyb3Mgd29ya3MuCkBAIC0zODcxLDEyICs0MDY1LDEzIEBAIFRFU1Qo
SFJFU1VMVEFzc2VydGlvblRlc3QsIFN0cmVhbWluZykgewogICAgICAgRVhQRUNUX0hSRVNVTFRf
U1VDQ0VFREVEKEVfVU5FWFBFQ1RFRCkgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAogICAgICAgImV4
cGVjdGVkIGZhaWx1cmUiKTsKIAotI2lmbmRlZiBfX0JPUkxBTkRDX18KKyMgaWZuZGVmIF9fQk9S
TEFORENfXworCiAgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAwNyBhbmQgMjAwOS4KICAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoCiAgICAgICBBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoRV9VTkVY
UEVDVEVEKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCiAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIp
OwotI2VuZGlmCisjIGVuZGlmCiAKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCiAgICAgICBF
WFBFQ1RfSFJFU1VMVF9GQUlMRUQoU19PSykgPDwgImV4cGVjdGVkIGZhaWx1cmUiLApAQCAtMzg5
MSw3ICs0MDg2LDcgQEAgVEVTVChIUkVTVUxUQXNzZXJ0aW9uVGVzdCwgU3RyZWFtaW5nKSB7CiAK
ICNpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFNpbGVuY2VzIHdhcm5pbmdzOiAiQ29uZGl0aW9uIGlz
IGFsd2F5cyB0cnVlIiwgIlVucmVhY2hhYmxlIGNvZGUiCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13
LWNjYyAtdy1yY2gKKyMgcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gKICNlbmRpZgog
CiAvLyBUZXN0cyB0aGF0IHRoZSBhc3NlcnRpb24gbWFjcm9zIGJlaGF2ZSBsaWtlIHNpbmdsZSBz
dGF0ZW1lbnRzLgpAQCAtNDAwOCw3ICs0MjAzLDcgQEAgVEVTVChBc3NlcnRpb25TeW50YXhUZXN0
LCBXb3Jrc1dpdGhTd2l0Y2gpIHsKICNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwogCiB2b2lkIFRo
cm93QVN0cmluZygpIHsKLSAgICB0aHJvdyAiU3RyaW5nIjsKKyAgICB0aHJvdyAic3RkOjpzdHJp
bmciOwogfQogCiAvLyBUZXN0IHRoYXQgdGhlIGV4Y2VwdGlvbiBhc3NlcnRpb24gbWFjcm9zIGNv
bXBpbGUgYW5kIHdvcmsgd2l0aCBjb25zdApAQCAtNDA2MCw4ICs0MjU1LDEwOSBAQCBURVNUKFN1
Y2Nlc3NmdWxBc3NlcnRpb25UZXN0LCBBU1NFUlRfU1RSKSB7CiAKIG5hbWVzcGFjZSB7CiAKKy8v
IFRlc3RzIHRoZSBtZXNzYWdlIHN0cmVhbWluZyB2YXJpYXRpb24gb2YgYXNzZXJ0aW9ucy4KKwor
VEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEVYUEVDVCkgeworICBFWFBFQ1RfRVEoMSwg
MSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX05FKDEsIDEpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJlICMxIik7CisgIEVYUEVDVF9MRSgxLCAyKSA8
PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBF
Q1RfTFQoMSwgMCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIuIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkV4cGVjdGVkIGZhaWx1cmUgIzIuIik7CisgIEVYUEVDVF9HRSgxLCAwKSA8PCAi
VGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1Rf
R1QoMSwgMikgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMuIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkV4cGVjdGVkIGZhaWx1cmUgIzMuIik7CisKKyAgRVhQRUNUX1NUUkVRKCIxIiwgIjEi
KSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShF
WFBFQ1RfU1RSTkUoIjEiLCAiMSIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM0LiIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJlICM0LiIpOworICBFWFBFQ1RfU1RS
Q0FTRUVRKCJhIiwgIkEiKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSQ0FTRU5FKCJhIiwgIkEiKSA8PCAiRXhwZWN0ZWQgZmFp
bHVyZSAjNS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZSAj
NS4iKTsKKworICBFWFBFQ1RfRkxPQVRfRVEoMSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQu
IjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RPVUJMRV9FUSgxLCAxLjIpIDw8
ICJFeHBlY3RlZCBmYWlsdXJlICM2LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBl
Y3RlZCBmYWlsdXJlICM2LiIpOworICBFWFBFQ1RfTkVBUigxLCAxLjEsIDAuMikgPDwgIlRoaXMg
c2hvdWxkIHN1Y2NlZWQuIjsKK30KKworVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEFT
U0VSVCkgeworICBBU1NFUlRfRVEoMSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAg
QVNTRVJUX05FKDEsIDIpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9MRSgx
LCAyKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfTFQoMSwgMikgPDwgIlRo
aXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJUX0dFKDEsIDApIDw8ICJUaGlzIHNob3VsZCBz
dWNjZWVkLiI7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9HVCgxLCAyKSA8PCAiRXhw
ZWN0ZWQgZmFpbHVyZS4iLAorICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVy
ZS4iKTsKK30KKworVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVF9TVFIpIHsK
KyAgQVNTRVJUX1NUUkVRKCIxIiwgIjEiKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBB
U1NFUlRfU1RSTkUoIjEiLCAiMiIpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEFTU0VS
VF9TVFJDQVNFRVEoImEiLCAiQSIpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9TVFJDQVNFTkUoImEiLCAiQSIpIDw8ICJFeHBlY3RlZCBm
YWlsdXJlLiIsCisgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJlLiIpOwor
fQorCitURVNUKEFzc2VydGlvbldpdGhNZXNzYWdlVGVzdCwgQVNTRVJUX0ZMT0FUSU5HKSB7Cisg
IEFTU0VSVF9GTE9BVF9FUSgxLCAxKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NF
UlRfRE9VQkxFX0VRKDEsIDEpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9G
QVRBTF9GQUlMVVJFKEFTU0VSVF9ORUFSKDEsMS4yLCAwLjEpIDw8ICJFeHBlY3QgZmFpbHVyZS4i
LCAgLy8gTk9MSU5UCisgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3QgZmFpbHVyZS4iKTsK
KyAgLy8gVG8gd29yayBhcm91bmQgYSBidWcgaW4gZ2NjIDIuOTUuMCwgdGhlcmUgaXMgaW50ZW50
aW9uYWxseSBubworICAvLyBzcGFjZSBhZnRlciB0aGUgZmlyc3QgY29tbWEgaW4gdGhlIHByZXZp
b3VzIHN0YXRlbWVudC4KK30KKworLy8gVGVzdHMgdXNpbmcgQVNTRVJUX0ZBTFNFIHdpdGggYSBz
dHJlYW1lZCBtZXNzYWdlLgorVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVF9G
QUxTRSkgeworICBBU1NFUlRfRkFMU0UoZmFsc2UpIDw8ICJUaGlzIHNob3VsZG4ndCBmYWlsLiI7
CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9GQUxTRSh0
cnVlKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZTogIiA8PCAyIDw8ICIgPiAiIDw8IDEKKyAgICAgICAg
ICAgICAgICAgICAgICAgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB0cnVlOworICB9LCAiRXhwZWN0
ZWQgZmFpbHVyZSIpOworfQorCisvLyBUZXN0cyB1c2luZyBGQUlMIHdpdGggYSBzdHJlYW1lZCBt
ZXNzYWdlLgorVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEZBSUwpIHsKKyAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoRkFJTCgpIDw8IDAsCisgICAgICAgICAgICAgICAgICAgICAgICIwIik7
Cit9CisKKy8vIFRlc3RzIHVzaW5nIFNVQ0NFRUQgd2l0aCBhIHN0cmVhbWVkIG1lc3NhZ2UuCitU
RVNUKEFzc2VydGlvbldpdGhNZXNzYWdlVGVzdCwgU1VDQ0VFRCkgeworICBTVUNDRUVEKCkgPDwg
IlN1Y2Nlc3MgPT0gIiA8PCAxOworfQorCisvLyBUZXN0cyB1c2luZyBBU1NFUlRfVFJVRSB3aXRo
IGEgc3RyZWFtZWQgbWVzc2FnZS4KK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBBU1NF
UlRfVFJVRSkgeworICBBU1NFUlRfVFJVRSh0cnVlKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4i
OworICBBU1NFUlRfVFJVRSh0cnVlKSA8PCB0cnVlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7
ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfVFJVRShmYWxzZSkgPDwgc3RhdGljX2Nhc3Q8Y29uc3Qg
Y2hhciAqPihOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxjaGFy
ICo+KE5VTEwpOworICB9LCAiKG51bGwpKG51bGwpIik7Cit9CisKKyNpZiBHVEVTVF9PU19XSU5E
T1dTCisvLyBUZXN0cyB1c2luZyB3aWRlIHN0cmluZ3MgaW4gYXNzZXJ0aW9uIG1lc3NhZ2VzLgor
VEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIFdpZGVTdHJpbmdNZXNzYWdlKSB7CisgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9UUlVFKGZhbHNl
KSA8PCBMIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC5ceDgxMTkiOworICB9LCAiVGhpcyBmYWls
dXJlIGlzIGV4cGVjdGVkLiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQK
KyAgICBBU1NFUlRfRVEoMSwgMikgPDwgIlRoaXMgZmFpbHVyZSBpcyAiCisgICAgICAgICAgICAg
ICAgICAgIDw8IEwiZXhwZWN0ZWQgdG9vLlx4ODEyMCI7CisgIH0sICJUaGlzIGZhaWx1cmUgaXMg
ZXhwZWN0ZWQgdG9vLiIpOworfQorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKIC8vIFRl
c3RzIEVYUEVDVF9UUlVFLgogVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfVFJVRSkgeworICBFWFBF
Q1RfVFJVRSh0cnVlKSA8PCAiSW50ZW50aW9uYWwgc3VjY2VzcyI7CisgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9UUlVFKGZhbHNlKSA8PCAiSW50ZW50aW9uYWwgZmFpbHVyZSAjMS4i
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9uYWwgZmFpbHVyZSAjMS4iKTsK
KyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1RSVUUoZmFsc2UpIDw8ICJJbnRlbnRp
b25hbCBmYWlsdXJlICMyLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlbnRpb25h
bCBmYWlsdXJlICMyLiIpOwogICBFWFBFQ1RfVFJVRSgyID4gMSk7ICAvLyBOT0xJTlQKICAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1RSVUUoMiA8IDEpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAiVmFsdWUgb2Y6IDIgPCAxXG4iCkBAIC00MDg1LDkgKzQzODEsMTQgQEAgVEVT
VChFeHBlY3RUZXN0LCBFeHBlY3RUcnVlV2l0aEFzc2VydGlvblJlc3VsdCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IHRydWUiKTsKIH0KIAotLy8gVGVzdHMgRVhQRUNU
X0ZBTFNFLgorLy8gVGVzdHMgRVhQRUNUX0ZBTFNFIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgog
VEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRkFMU0UpIHsKICAgRVhQRUNUX0ZBTFNFKDIgPCAxKTsg
IC8vIE5PTElOVAorICBFWFBFQ1RfRkFMU0UoZmFsc2UpIDw8ICJJbnRlbnRpb25hbCBzdWNjZXNz
IjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0ZBTFNFKHRydWUpIDw8ICJJbnRl
bnRpb25hbCBmYWlsdXJlICMxLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlbnRp
b25hbCBmYWlsdXJlICMxLiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRkFM
U0UodHJ1ZSkgPDwgIkludGVudGlvbmFsIGZhaWx1cmUgIzIuIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkludGVudGlvbmFsIGZhaWx1cmUgIzIuIik7CiAgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEVYUEVDVF9GQUxTRSgyID4gMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJW
YWx1ZSBvZjogMiA+IDFcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiB0
cnVlXG4iCkBAIC00MTExLDE3ICs0NDEyLDE4IEBAIFRFU1QoRXhwZWN0VGVzdCwgRXhwZWN0RmFs
c2VXaXRoQXNzZXJ0aW9uUmVzdWx0KSB7CiB9CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KLS8vIFJl
c3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXBy
ZXNzZWQgdGhlbQotI3ByYWdtYSBvcHRpb24gcG9wCisvLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRl
ciBwcmV2aW91cyAiI3ByYWdtYSBvcHRpb24gcHVzaCIgc3VwcHJlc3NlZCB0aGVtCisjIHByYWdt
YSBvcHRpb24gcG9wCiAjZW5kaWYKIAogLy8gVGVzdHMgRVhQRUNUX0VRLgogVEVTVChFeHBlY3RU
ZXN0LCBFWFBFQ1RfRVEpIHsKICAgRVhQRUNUX0VRKDUsIDIgKyAzKTsKICAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDUsIDIqMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICJWYWx1ZSBvZjogMiozXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDog
NlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IDUiKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgNVxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICAyKjNcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBXaGljaCBpczog
NiIpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoNSwgMiAtIDMpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAiMiAtIDMiKTsKIH0KQEAgLTQxNDMsNyArNDQ0NSw3IEBA
IFRFU1QoRXhwZWN0VGVzdCwgRVhQRUNUX0VRX0RvdWJsZSkgewogVEVTVChFeHBlY3RUZXN0LCBF
WFBFQ1RfRVFfTlVMTCkgewogICAvLyBBIHN1Y2Nlc3MuCiAgIGNvbnN0IGNoYXIqIHAgPSBOVUxM
OwotICAvLyBTb21lIG9sZGVyIEdDQyB2ZXJzaW9ucyBtYXkgaXNzdWUgYSBzcHVyaW91cyB3YXJp
bmcgaW4gdGhpcyBvciB0aGUgbmV4dAorICAvLyBTb21lIG9sZGVyIEdDQyB2ZXJzaW9ucyBtYXkg
aXNzdWUgYSBzcHVyaW91cyB3YXJuaW5nIGluIHRoaXMgb3IgdGhlIG5leHQKICAgLy8gYXNzZXJ0
aW9uIHN0YXRlbWVudC4gVGhpcyB3YXJuaW5nIHNob3VsZCBub3QgYmUgc3VwcHJlc3NlZCB3aXRo
CiAgIC8vIHN0YXRpY19jYXN0IHNpbmNlIHRoZSB0ZXN0IHZlcmlmaWVzIHRoZSBhYmlsaXR5IHRv
IHVzZSBiYXJlIE5VTEwgYXMgdGhlCiAgIC8vIGV4cGVjdGVkIHBhcmFtZXRlciB0byB0aGUgbWFj
cm8uCkBAIC00MTUyLDcgKzQ0NTQsNyBAQCBURVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9FUV9OVUxM
KSB7CiAgIC8vIEEgZmFpbHVyZS4KICAgaW50IG4gPSAwOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShFWFBFQ1RfRVEoTlVMTCwgJm4pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFs
dWUgb2Y6ICZuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgJm5cbiAgICBXaGlj
aCBpczoiKTsKIH0KICNlbmRpZiAgLy8gR1RFU1RfQ0FOX0NPTVBBUkVfTlVMTAogCkBAIC00MTY4
LDcgKzQ0NzAsNyBAQCBURVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9FUV8wKSB7CiAKICAgLy8gQSBm
YWlsdXJlLgogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoMCwgNS42KSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiAwIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgIDBcbiAgNS42Iik7CiB9CiAKIC8vIFRlc3RzIEVYUEVDVF9ORS4KQEAgLTQy
NjgsNyArNDU3MCw3IEBAIFRFU1QoRXhwZWN0VGVzdCwgRVhQRUNUX0FOWV9USFJPVykgewogVEVT
VChFeHBlY3RUZXN0LCBFeHBlY3RQcmVjZWRlbmNlKSB7CiAgIEVYUEVDVF9FUSgxIDwgMiwgdHJ1
ZSk7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSh0cnVlLCB0cnVlICYmIGZh
bHNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiB0cnVlICYmIGZhbHNl
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgIHRydWUgJiYgZmFsc2VcbiAgICBXaGlj
aCBpczogZmFsc2UiKTsKIH0KIAogCkBAIC00MzYxLDcgKzQ2NjMsNyBAQCBURVNUKFN0cmVhbWFi
bGVUZXN0LCBCYXNpY0lvTWFuaXApIHsKIAogdm9pZCBBZGRGYWlsdXJlSGVscGVyKGJvb2wqIGFi
b3J0ZWQpIHsKICAgKmFib3J0ZWQgPSB0cnVlOwotICBBRERfRkFJTFVSRSgpIDw8ICJGYWlsdXJl
IjsKKyAgQUREX0ZBSUxVUkUoKSA8PCAiSW50ZW50aW9uYWwgZmFpbHVyZS4iOwogICAqYWJvcnRl
ZCA9IGZhbHNlOwogfQogCkBAIC00MzY5LDEwICs0NjcxLDI1IEBAIHZvaWQgQWRkRmFpbHVyZUhl
bHBlcihib29sKiBhYm9ydGVkKSB7CiBURVNUKE1hY3JvVGVzdCwgQUREX0ZBSUxVUkUpIHsKICAg
Ym9vbCBhYm9ydGVkID0gdHJ1ZTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVy
ZUhlbHBlcigmYWJvcnRlZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsdXJlIik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlbnRpb25hbCBmYWlsdXJlLiIpOwogICBF
WFBFQ1RfRkFMU0UoYWJvcnRlZCk7CiB9CiAKKy8vIFRlc3RzIEFERF9GQUlMVVJFX0FULgorVEVT
VChNYWNyb1Rlc3QsIEFERF9GQUlMVVJFX0FUKSB7CisgIC8vIFZlcmlmaWVzIHRoYXQgQUREX0ZB
SUxVUkVfQVQgZG9lcyBnZW5lcmF0ZSBhIG5vbmZhdGFsIGZhaWx1cmUgYW5kCisgIC8vIHRoZSBm
YWlsdXJlIG1lc3NhZ2UgY29udGFpbnMgdGhlIHVzZXItc3RyZWFtZWQgcGFydC4KKyAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoQUREX0ZBSUxVUkVfQVQoImZvby5jYyIsIDQyKSA8PCAiV3Jvbmch
IiwgIldyb25nISIpOworCisgIC8vIFZlcmlmaWVzIHRoYXQgdGhlIHVzZXItc3RyZWFtZWQgcGFy
dCBpcyBvcHRpb25hbC4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQUREX0ZBSUxVUkVfQVQo
ImZvby5jYyIsIDQyKSwgIkZhaWxlZCIpOworCisgIC8vIFVuZm9ydHVuYXRlbHksIHdlIGNhbm5v
dCB2ZXJpZnkgdGhhdCB0aGUgZmFpbHVyZSBtZXNzYWdlIGNvbnRhaW5zCisgIC8vIHRoZSByaWdo
dCBmaWxlIHBhdGggYW5kIGxpbmUgbnVtYmVyIHRoZSBzYW1lIHdheSwgYXMKKyAgLy8gRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoKSBkb2Vzbid0IGdldCB0byBzZWUgdGhlIGZpbGUgcGF0aCBhbmQK
KyAgLy8gbGluZSBudW1iZXIuICBJbnN0ZWFkLCB3ZSBkbyB0aGF0IGluIGdvb2dsZXRlc3Qtb3V0
cHV0LXRlc3RfLmNjLgorfQorCiAvLyBUZXN0cyBGQUlMLgogVEVTVChNYWNyb1Rlc3QsIEZBSUwp
IHsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoRkFJTCgpLApAQCAtNDM4Nyw3ICs0NzA0LDYgQEAg
VEVTVChNYWNyb1Rlc3QsIFNVQ0NFRUQpIHsKICAgU1VDQ0VFRCgpIDw8ICJFeHBsaWNpdCBzdWNj
ZXNzLiI7CiB9CiAKLQogLy8gVGVzdHMgZm9yIEVYUEVDVF9FUSgpIGFuZCBBU1NFUlRfRVEoKS4K
IC8vCiAvLyBUaGVzZSB0ZXN0cyBmYWlsICppbnRlbnRpb25hbGx5Kiwgcy50LiB0aGUgZmFpbHVy
ZSBtZXNzYWdlcyBjYW4gYmUKQEAgLTQzOTgsMTUgKzQ3MTQsMTcgQEAgVEVTVChNYWNyb1Rlc3Qs
IFNVQ0NFRUQpIHsKIC8vIFRlc3RzIHVzaW5nIGJvb2wgdmFsdWVzIGluIHtFWFBFQ1R8QVNTRVJU
fV9FUS4KIFRFU1QoRXFBc3NlcnRpb25UZXN0LCBCb29sKSB7CiAgIEVYUEVDVF9FUSh0cnVlLCAg
dHJ1ZSk7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShmYWxzZSwgdHJ1ZSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogdHJ1ZSIpOworICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRSh7CisgICAgICBib29sIGZhbHNlX3ZhbHVlID0gZmFsc2U7CisgICAgICBBU1NFUlRf
RVEoZmFsc2VfdmFsdWUsIHRydWUpOworICAgIH0sICIgIGZhbHNlX3ZhbHVlXG4gICAgV2hpY2gg
aXM6IGZhbHNlXG4gIHRydWUiKTsKIH0KIAogLy8gVGVzdHMgdXNpbmcgaW50IHZhbHVlcyBpbiB7
RVhQRUNUfEFTU0VSVH1fRVEuCiBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgSW50KSB7CiAgIEFTU0VS
VF9FUSgzMiwgMzIpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoMzIsIDMz
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIjMzIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICIgIDMyXG4gIDMzIik7CiB9CiAKIC8vIFRlc3RzIHVzaW5nIHRpbWVfdCB2YWx1ZXMg
aW4ge0VYUEVDVHxBU1NFUlR9X0VRLgpAQCAtNDQyMyw5ICs0NzQxLDkgQEAgVEVTVChFcUFzc2Vy
dGlvblRlc3QsIENoYXIpIHsKICAgQVNTRVJUX0VRKCd6JywgJ3onKTsKICAgY29uc3QgY2hhciBj
aCA9ICdiJzsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKCdcMCcsIGNoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgImNoIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICIgIGNoXG4gICAgV2hpY2ggaXM6ICdiJyIpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShFWFBFQ1RfRVEoJ2EnLCBjaCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJjaCIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAiICBjaFxuICAgIFdoaWNoIGlzOiAnYiciKTsKIH0K
IAogLy8gVGVzdHMgdXNpbmcgd2NoYXJfdCB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgpA
QCAtNDQzMywxOCArNDc1MSwxOSBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgV2lkZUNoYXIpIHsK
ICAgRVhQRUNUX0VRKEwnYicsIEwnYicpOwogCiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVY
UEVDVF9FUShMJ1wwJywgTCd4JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBv
ZjogTCd4J1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IEwneCcgKDEy
MCwgMHg3OClcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiBMJ1wwJ1xu
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAiV2hpY2ggaXM6IEwnXDAnICgwLCAweDApIik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2
YWx1ZXM6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgIEwnXDAnXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICIgICAgV2hpY2ggaXM6IEwnXDAnICgwLCAweDApXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICIgIEwneCdcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiAgICBXaGljaCBpczogTCd4JyAoMTIwLCAweDc4KSIpOwogCiAgIHN0YXRpYyB3Y2hhcl90
IHdjaGFyOwogICB3Y2hhciA9IEwnYic7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVD
VF9FUShMJ2EnLCB3Y2hhciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3Y2hhciIpOwot
ICB3Y2hhciA9IEwnXHg4MTE5JzsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKEwn
XHg4MTIwJywgd2NoYXIpLAotICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IHdjaGFy
Iik7CisgIHdjaGFyID0gMHg4MTE5OworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEo
c3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHg4MTIwKSwgd2NoYXIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAiICB3Y2hhclxuICAgIFdoaWNoIGlzOiBMJyIpOwogfQogCiAvLyBUZXN0cyB1c2luZyA6
OnN0ZDo6c3RyaW5nIHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCkBAIC00NDYxLDcgKzQ3
ODAsNyBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgU3RkU3RyaW5nKSB7CiAgIC8vIENvbXBhcmVz
IGEgY29uc3QgY2hhciogdG8gYW4gc3RkOjpzdHJpbmcgdGhhdCBoYXMgZGlmZmVyZW50CiAgIC8v
IGNvbnRlbnQKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKCJUZXN0IiwgOjpz
dGQ6OnN0cmluZygidGVzdCIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIjo6c3RkOjpz
dHJpbmcoXCJ0ZXN0XCIpIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICJcInRlc3RcIiIp
OwogCiAgIC8vIENvbXBhcmVzIGFuIHN0ZDo6c3RyaW5nIHRvIGEgY2hhciogdGhhdCBoYXMgZGlm
ZmVyZW50IGNvbnRlbnQuCiAgIGNoYXIqIGNvbnN0IHAxID0gY29uc3RfY2FzdDxjaGFyKj4oImZv
byIpOwpAQCAtNDQ3MywyOCArNDc5MiwyOSBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgU3RkU3Ry
aW5nKSB7CiAgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIHN0cjMoc3RyMSk7CiAgIHN0cjMuYXQoMikg
PSAnXDAnOwogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoc3RyMSwgc3RyMyksCi0g
ICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogc3RyM1xuIgotICAgICAgICAgICAgICAg
ICAgICAgICAiICBBY3R1YWw6IFwiQSBcXDAgaW4gdGhlIG1pZGRsZVwiIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICIgIHN0cjNcbiAgICBXaGljaCBpczogXCJBIFxcMCBpbiB0aGUgbWlkZGxl
XCIiKTsKIH0KIAogI2lmIEdURVNUX0hBU19TVERfV1NUUklORwogCiAvLyBUZXN0cyB1c2luZyA6
OnN0ZDo6d3N0cmluZyB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgogVEVTVChFcUFzc2Vy
dGlvblRlc3QsIFN0ZFdpZGVTdHJpbmcpIHsKLSAgLy8gQ29tcGFyZXMgYW4gc3RkOjp3c3RyaW5n
IHRvIGEgY29uc3Qgd2NoYXJfdCogdGhhdCBoYXMgaWRlbnRpY2FsCi0gIC8vIGNvbnRlbnQuCi0g
IEVYUEVDVF9FUSg6OnN0ZDo6d3N0cmluZyhMIlRlc3RceDgxMTkiKSwgTCJUZXN0XHg4MTE5Iik7
Ci0KICAgLy8gQ29tcGFyZXMgdHdvIGlkZW50aWNhbCBzdGQ6OndzdHJpbmdzLgogICBjb25zdCA6
OnN0ZDo6d3N0cmluZyB3c3RyMShMIkEgKiBpbiB0aGUgbWlkZGxlIik7CiAgIGNvbnN0IDo6c3Rk
Ojp3c3RyaW5nIHdzdHIyKHdzdHIxKTsKICAgQVNTRVJUX0VRKHdzdHIxLCB3c3RyMik7CiAKKyAg
Ly8gQ29tcGFyZXMgYW4gc3RkOjp3c3RyaW5nIHRvIGEgY29uc3Qgd2NoYXJfdCogdGhhdCBoYXMg
aWRlbnRpY2FsCisgIC8vIGNvbnRlbnQuCisgIGNvbnN0IHdjaGFyX3Qga1Rlc3RYODExOVtdID0g
eyAnVCcsICdlJywgJ3MnLCAndCcsIDB4ODExOSwgJ1wwJyB9OworICBFWFBFQ1RfRVEoOjpzdGQ6
OndzdHJpbmcoa1Rlc3RYODExOSksIGtUZXN0WDgxMTkpOworCiAgIC8vIENvbXBhcmVzIGFuIHN0
ZDo6d3N0cmluZyB0byBhIGNvbnN0IHdjaGFyX3QqIHRoYXQgaGFzIGRpZmZlcmVudAogICAvLyBj
b250ZW50LgorICBjb25zdCB3Y2hhcl90IGtUZXN0WDgxMjBbXSA9IHsgJ1QnLCAnZScsICdzJywg
J3QnLCAweDgxMjAsICdcMCcgfTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9M
SU5UCi0gICAgRVhQRUNUX0VRKDo6c3RkOjp3c3RyaW5nKEwiVGVzdFx4ODExOSIpLCBMIlRlc3Rc
eDgxMjAiKTsKLSAgfSwgIkxcIlRlc3RcXHg4MTIwXCIiKTsKKyAgICBFWFBFQ1RfRVEoOjpzdGQ6
OndzdHJpbmcoa1Rlc3RYODExOSksIGtUZXN0WDgxMjApOworICB9LCAia1Rlc3RYODEyMCIpOwog
CiAgIC8vIENvbXBhcmVzIHR3byBzdGQ6OndzdHJpbmdzIHRoYXQgaGF2ZSBkaWZmZXJlbnQgY29u
dGVudHMsIG9uZSBvZgogICAvLyB3aGljaCBoYXZpbmcgYSBOVUwgY2hhcmFjdGVyIGluIHRoZSBt
aWRkbGUuCkBAIC00NTQ2LDE4ICs0ODY2LDIwIEBAIFRFU1QoRXFBc3NlcnRpb25UZXN0LCBHbG9i
YWxTdHJpbmcpIHsKIAogLy8gVGVzdHMgdXNpbmcgOjp3c3RyaW5nIHZhbHVlcyBpbiB7RVhQRUNU
fEFTU0VSVH1fRVEuCiBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgR2xvYmFsV2lkZVN0cmluZykgewot
ICAvLyBDb21wYXJlcyBhIGNvbnN0IHdjaGFyX3QqIHRvIGEgOjp3c3RyaW5nIHRoYXQgaGFzIGlk
ZW50aWNhbCBjb250ZW50LgotICBBU1NFUlRfRVEoTCJUZXN0XHg4MTE5IiwgOjp3c3RyaW5nKEwi
VGVzdFx4ODExOSIpKTsKLQogICAvLyBDb21wYXJlcyB0d28gaWRlbnRpY2FsIDo6d3N0cmluZ3Mu
CiAgIHN0YXRpYyBjb25zdCA6OndzdHJpbmcgd3N0cjEoTCJBICogaW4gdGhlIG1pZGRsZSIpOwog
ICBzdGF0aWMgY29uc3QgOjp3c3RyaW5nIHdzdHIyKHdzdHIxKTsKICAgRVhQRUNUX0VRKHdzdHIx
LCB3c3RyMik7CiAKKyAgLy8gQ29tcGFyZXMgYSBjb25zdCB3Y2hhcl90KiB0byBhIDo6d3N0cmlu
ZyB0aGF0IGhhcyBpZGVudGljYWwgY29udGVudC4KKyAgY29uc3Qgd2NoYXJfdCBrVGVzdFg4MTE5
W10gPSB7ICdUJywgJ2UnLCAncycsICd0JywgMHg4MTE5LCAnXDAnIH07CisgIEFTU0VSVF9FUShr
VGVzdFg4MTE5LCA6OndzdHJpbmcoa1Rlc3RYODExOSkpOworCiAgIC8vIENvbXBhcmVzIGEgY29u
c3Qgd2NoYXJfdCogdG8gYSA6OndzdHJpbmcgdGhhdCBoYXMgZGlmZmVyZW50CiAgIC8vIGNvbnRl
bnQuCisgIGNvbnN0IHdjaGFyX3Qga1Rlc3RYODEyMFtdID0geyAnVCcsICdlJywgJ3MnLCAndCcs
IDB4ODEyMCwgJ1wwJyB9OwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQK
LSAgICBFWFBFQ1RfRVEoTCJUZXN0XHg4MTIwIiwgOjp3c3RyaW5nKEwiVGVzdFx4ODExOSIpKTsK
KyAgICBFWFBFQ1RfRVEoa1Rlc3RYODEyMCwgOjp3c3RyaW5nKGtUZXN0WDgxMTkpKTsKICAgfSwg
IlRlc3RcXHg4MTE5Iik7CiAKICAgLy8gQ29tcGFyZXMgYSB3Y2hhcl90KiB0byBhIDo6d3N0cmlu
ZyB0aGF0IGhhcyBkaWZmZXJlbnQgY29udGVudC4KQEAgLTQ1OTAsOSArNDkxMiw5IEBAIFRFU1Qo
RXFBc3NlcnRpb25UZXN0LCBDaGFyUG9pbnRlcikgewogICBBU1NFUlRfRVEocDEsIHAxKTsKIAog
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEocDAsIHAyKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBwMiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICBwMlxuICAgIFdoaWNoIGlzOiIpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBF
Q1RfRVEocDEsIHAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInAyIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICIgIHAyXG4gICAgV2hpY2ggaXM6Iik7CiAgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFTU0VSVF9FUShyZWludGVycHJldF9jYXN0PGNoYXIqPigweDEyMzQpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oMHhB
QkMwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICJBQkMwIik7CkBAIC00NjEyLDkgKzQ5MzQs
OSBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgV2lkZUNoYXJQb2ludGVyKSB7CiAgIEVYUEVDVF9F
UShwMCwgcDApOwogCiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShwMCwgcDIp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IHAyIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgIHAyXG4gICAgV2hpY2ggaXM6Iik7CiAgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9FUShwMSwgcDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAi
cDIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgcDJcbiAgICBXaGljaCBpczoiKTsK
ICAgdm9pZCogcHYzID0gKHZvaWQqKTB4MTIzNDsgIC8vIE5PTElOVAogICB2b2lkKiBwdjQgPSAo
dm9pZCopMHhBQkMwOyAgLy8gTk9MSU5UCiAgIGNvbnN0IHdjaGFyX3QqIHAzID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB3Y2hhcl90Kj4ocHYzKTsKQEAgLTQ2MzIsNiArNDk1NCw2OCBAQCBURVNU
KEVxQXNzZXJ0aW9uVGVzdCwgT3RoZXJQb2ludGVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICIweDEyMzQiKTsKIH0KIAorLy8gQSBjbGFzcyB0aGF0IHN1cHBvcnRzIGJpbmFyeSBjb21wYXJp
c29uIG9wZXJhdG9ycyBidXQgbm90IHN0cmVhbWluZy4KK2NsYXNzIFVucHJpbnRhYmxlQ2hhciB7
CisgcHVibGljOgorICBleHBsaWNpdCBVbnByaW50YWJsZUNoYXIoY2hhciBjaCkgOiBjaGFyXyhj
aCkge30KKworICBib29sIG9wZXJhdG9yPT0oY29uc3QgVW5wcmludGFibGVDaGFyJiByaHMpIGNv
bnN0IHsKKyAgICByZXR1cm4gY2hhcl8gPT0gcmhzLmNoYXJfOworICB9CisgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBVbnByaW50YWJsZUNoYXImIHJocykgY29uc3QgeworICAgIHJldHVybiBjaGFy
XyAhPSByaHMuY2hhcl87CisgIH0KKyAgYm9vbCBvcGVyYXRvcjwoY29uc3QgVW5wcmludGFibGVD
aGFyJiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gY2hhcl8gPCByaHMuY2hhcl87CisgIH0KKyAg
Ym9vbCBvcGVyYXRvcjw9KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBjb25zdCB7CisgICAg
cmV0dXJuIGNoYXJfIDw9IHJocy5jaGFyXzsKKyAgfQorICBib29sIG9wZXJhdG9yPihjb25zdCBV
bnByaW50YWJsZUNoYXImIHJocykgY29uc3QgeworICAgIHJldHVybiBjaGFyXyA+IHJocy5jaGFy
XzsKKyAgfQorICBib29sIG9wZXJhdG9yPj0oY29uc3QgVW5wcmludGFibGVDaGFyJiByaHMpIGNv
bnN0IHsKKyAgICByZXR1cm4gY2hhcl8gPj0gcmhzLmNoYXJfOworICB9CisKKyBwcml2YXRlOgor
ICBjaGFyIGNoYXJfOworfTsKKworLy8gVGVzdHMgdGhhdCBBU1NFUlRfRVEoKSBhbmQgZnJpZW5k
cyBkb24ndCByZXF1aXJlIHRoZSBhcmd1bWVudHMgdG8KKy8vIGJlIHByaW50YWJsZS4KK1RFU1Qo
Q29tcGFyaXNvbkFzc2VydGlvblRlc3QsIEFjY2VwdHNVbnByaW50YWJsZUFyZ3MpIHsKKyAgY29u
c3QgVW5wcmludGFibGVDaGFyIHgoJ3gnKSwgeSgneScpOworICBBU1NFUlRfRVEoeCwgeCk7Cisg
IEVYUEVDVF9ORSh4LCB5KTsKKyAgQVNTRVJUX0xUKHgsIHkpOworICBFWFBFQ1RfTEUoeCwgeSk7
CisgIEFTU0VSVF9HVCh5LCB4KTsKKyAgRVhQRUNUX0dFKHgsIHgpOworCisgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9FUSh4LCB5KSwgIjEtYnl0ZSBvYmplY3QgPDc4PiIpOworICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoeCwgeSksICIxLWJ5dGUgb2JqZWN0IDw3
OT4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0xUKHksIHkpLCAiMS1ieXRl
IG9iamVjdCA8Nzk+Iik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HVCh4LCB5
KSwgIjEtYnl0ZSBvYmplY3QgPDc4PiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBF
Q1RfR1QoeCwgeSksICIxLWJ5dGUgb2JqZWN0IDw3OT4iKTsKKworICAvLyBDb2RlIHRlc3RlZCBi
eSBFWFBFQ1RfRkFUQUxfRkFJTFVSRSBjYW5ub3QgcmVmZXJlbmNlIGxvY2FsCisgIC8vIHZhcmlh
Ymxlcywgc28gd2UgaGF2ZSB0byB3cml0ZSBVbnByaW50YWJsZUNoYXIoJ3gnKSBpbnN0ZWFkIG9m
IHguCisjaWZuZGVmIF9fQk9STEFORENfXworICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyLgorICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfTkUoVW5wcmludGFibGVDaGFyKCd4JyksIFVucHJp
bnRhYmxlQ2hhcigneCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3Qg
PDc4PiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfTEUoVW5wcmludGFibGVDaGFy
KCd5JyksIFVucHJpbnRhYmxlQ2hhcigneCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIjEt
Ynl0ZSBvYmplY3QgPDc4PiIpOworI2VuZGlmCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VS
VF9MRShVbnByaW50YWJsZUNoYXIoJ3knKSwgVW5wcmludGFibGVDaGFyKCd4JykpLAorICAgICAg
ICAgICAgICAgICAgICAgICAiMS1ieXRlIG9iamVjdCA8Nzk+Iik7CisgIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKEFTU0VSVF9HRShVbnByaW50YWJsZUNoYXIoJ3gnKSwgVW5wcmludGFibGVDaGFyKCd5
JykpLAorICAgICAgICAgICAgICAgICAgICAgICAiMS1ieXRlIG9iamVjdCA8Nzg+Iik7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9HRShVbnByaW50YWJsZUNoYXIoJ3gnKSwgVW5wcmlu
dGFibGVDaGFyKCd5JykpLAorICAgICAgICAgICAgICAgICAgICAgICAiMS1ieXRlIG9iamVjdCA8
Nzk+Iik7Cit9CisKIC8vIFRlc3RzIHRoZSBGUklFTkRfVEVTVCBtYWNyby4KIAogLy8gVGhpcyBj
bGFzcyBoYXMgYSBwcml2YXRlIG1lbWJlciB3ZSB3YW50IHRvIHRlc3QuICBXZSB3aWxsIHRlc3Qg
aXQKQEAgLTQ3NDksNyArNTEzMyw3IEBAIFRFU1QoQXNzZXJ0aW9uUmVzdWx0VGVzdCwgQ29uc3Ry
dWN0aW9uV29ya3MpIHsKICAgRVhQRUNUX1NUUkVRKCJnaGkiLCByNS5tZXNzYWdlKCkpOwogfQog
Ci0vLyBUZXN0cyB0aGF0IHRoZSBuZWdhdGlvbiBmaXBzIHRoZSBwcmVkaWNhdGUgcmVzdWx0IGJ1
dCBrZWVwcyB0aGUgbWVzc2FnZS4KKy8vIFRlc3RzIHRoYXQgdGhlIG5lZ2F0aW9uIGZsaXBzIHRo
ZSBwcmVkaWNhdGUgcmVzdWx0IGJ1dCBrZWVwcyB0aGUgbWVzc2FnZS4KIFRFU1QoQXNzZXJ0aW9u
UmVzdWx0VGVzdCwgTmVnYXRpb25Xb3JrcykgewogICBBc3NlcnRpb25SZXN1bHQgcjEgPSBBc3Nl
cnRpb25TdWNjZXNzKCkgPDwgImFiYyI7CiAgIEVYUEVDVF9GQUxTRSghcjEpOwpAQCAtNDc2Niw2
ICs1MTUwLDM3IEBAIFRFU1QoQXNzZXJ0aW9uUmVzdWx0VGVzdCwgU3RyZWFtaW5nV29ya3MpIHsK
ICAgRVhQRUNUX1NUUkVRKCJhYmNkMHRydWUiLCByLm1lc3NhZ2UoKSk7CiB9CiAKK1RFU1QoQXNz
ZXJ0aW9uUmVzdWx0VGVzdCwgQ2FuU3RyZWFtT3N0cmVhbU1hbmlwdWxhdG9ycykgeworICBBc3Nl
cnRpb25SZXN1bHQgciA9IEFzc2VydGlvblN1Y2Nlc3MoKTsKKyAgciA8PCAiRGF0YSIgPDwgc3Rk
OjplbmRsIDw8IHN0ZDo6Zmx1c2ggPDwgc3RkOjplbmRzIDw8ICJXaWxsIGJlIHZpc2libGUiOwor
ICBFWFBFQ1RfU1RSRVEoIkRhdGFcblxcMFdpbGwgYmUgdmlzaWJsZSIsIHIubWVzc2FnZSgpKTsK
K30KKworLy8gVGhlIG5leHQgdGVzdCB1c2VzIGV4cGxpY2l0IGNvbnZlcnNpb24gb3BlcmF0b3Jz
IC0tIGEgQysrMTEgZmVhdHVyZS4KKyNpZiBHVEVTVF9MQU5HX0NYWDExCisKK1RFU1QoQXNzZXJ0
aW9uUmVzdWx0VGVzdCwgQ29uc3RydWN0aWJsZUZyb21Db250ZXh0dWFsbHlDb252ZXJ0aWJsZVRv
Qm9vbCkgeworICBzdHJ1Y3QgRXhwbGljaXRseUNvbnZlcnRpYmxlVG9Cb29sIHsKKyAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdmFsdWU7IH0KKyAgICBib29sIHZh
bHVlOworICB9OworICBFeHBsaWNpdGx5Q29udmVydGlibGVUb0Jvb2wgdjEgPSB7ZmFsc2V9Owor
ICBFeHBsaWNpdGx5Q29udmVydGlibGVUb0Jvb2wgdjIgPSB7dHJ1ZX07CisgIEVYUEVDVF9GQUxT
RSh2MSk7CisgIEVYUEVDVF9UUlVFKHYyKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NY
WDExCisKK3N0cnVjdCBDb252ZXJ0aWJsZVRvQXNzZXJ0aW9uUmVzdWx0IHsKKyAgb3BlcmF0b3Ig
QXNzZXJ0aW9uUmVzdWx0KCkgY29uc3QgeyByZXR1cm4gQXNzZXJ0aW9uUmVzdWx0KHRydWUpOyB9
Cit9OworCitURVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIENvbnN0cnVjdGlibGVGcm9tSW1wbGlj
aXRseUNvbnZlcnRpYmxlKSB7CisgIENvbnZlcnRpYmxlVG9Bc3NlcnRpb25SZXN1bHQgb2JqOwor
ICBFWFBFQ1RfVFJVRShvYmopOworfQorCiAvLyBUZXN0cyBzdHJlYW1pbmcgYSB1c2VyIHR5cGUg
d2hvc2UgZGVmaW5pdGlvbiBhbmQgb3BlcmF0b3IgPDwgYXJlCiAvLyBib3RoIGluIHRoZSBnbG9i
YWwgbmFtZXNwYWNlLgogY2xhc3MgQmFzZSB7CkBAIC00OTUwLDYgKzUzNjUsNTkgQEAgVEVTVF9G
KFRlc3RJbmZvVGVzdCwgcmVzdWx0KSB7CiAgIEFTU0VSVF9FUSgwLCBHZXRUZXN0UmVzdWx0KHRl
c3RfaW5mbyktPnRvdGFsX3BhcnRfY291bnQoKSk7CiB9CiAKKyNkZWZpbmUgVkVSSUZZX0NPREVf
TE9DQVRJT04gXAorICBjb25zdCBpbnQgZXhwZWN0ZWRfbGluZSA9IF9fTElORV9fIC0gMTsgXAor
ICBjb25zdCBUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0gR2V0VW5pdFRlc3RJbXBsKCktPmN1
cnJlbnRfdGVzdF9pbmZvKCk7IFwKKyAgQVNTRVJUX1RSVUUodGVzdF9pbmZvKTsgXAorICBFWFBF
Q1RfU1RSRVEoX19GSUxFX18sIHRlc3RfaW5mby0+ZmlsZSgpKTsgXAorICBFWFBFQ1RfRVEoZXhw
ZWN0ZWRfbGluZSwgdGVzdF9pbmZvLT5saW5lKCkpCisKK1RFU1QoQ29kZUxvY2F0aW9uRm9yVEVT
VCwgVmVyaWZ5KSB7CisgIFZFUklGWV9DT0RFX0xPQ0FUSU9OOworfQorCitjbGFzcyBDb2RlTG9j
YXRpb25Gb3JURVNURiA6IHB1YmxpYyBUZXN0IHsKK307CisKK1RFU1RfRihDb2RlTG9jYXRpb25G
b3JURVNURiwgVmVyaWZ5KSB7CisgIFZFUklGWV9DT0RFX0xPQ0FUSU9OOworfQorCitjbGFzcyBD
b2RlTG9jYXRpb25Gb3JURVNUUCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4geworfTsKKwor
VEVTVF9QKENvZGVMb2NhdGlvbkZvclRFU1RQLCBWZXJpZnkpIHsKKyAgVkVSSUZZX0NPREVfTE9D
QVRJT047Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKCwgQ29kZUxvY2F0aW9uRm9yVEVT
VFAsIFZhbHVlcygwKSk7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQ29kZUxvY2F0
aW9uRm9yVFlQRURURVNUIDogcHVibGljIFRlc3QgeworfTsKKworVFlQRURfVEVTVF9DQVNFKENv
ZGVMb2NhdGlvbkZvclRZUEVEVEVTVCwgaW50KTsKKworVFlQRURfVEVTVChDb2RlTG9jYXRpb25G
b3JUWVBFRFRFU1QsIFZlcmlmeSkgeworICBWRVJJRllfQ09ERV9MT0NBVElPTjsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1RQIDogcHVi
bGljIFRlc3QgeworfTsKKworVFlQRURfVEVTVF9DQVNFX1AoQ29kZUxvY2F0aW9uRm9yVFlQRURU
RVNUUCk7CisKK1RZUEVEX1RFU1RfUChDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1RQLCBWZXJpZnkp
IHsKKyAgVkVSSUZZX0NPREVfTE9DQVRJT047Cit9CisKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FT
RV9QKENvZGVMb2NhdGlvbkZvclRZUEVEVEVTVFAsIFZlcmlmeSk7CisKK0lOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QKE15LCBDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1RQLCBpbnQpOworCisj
dW5kZWYgVkVSSUZZX0NPREVfTE9DQVRJT04KKwogLy8gVGVzdHMgc2V0dGluZyB1cCBhbmQgdGVh
cmluZyBkb3duIGEgdGVzdCBjYXNlLgogCiBjbGFzcyBTZXRVcFRlc3RDYXNlVGVzdCA6IHB1Ymxp
YyBUZXN0IHsKQEAgLTUwMTMsNyArNTQ4MSw4IEBAIFRFU1RfRihTZXRVcFRlc3RDYXNlVGVzdCwg
VGVzdDIpIHsKICAgRVhQRUNUX1NUUkVRKCIxMjMiLCBzaGFyZWRfcmVzb3VyY2VfKTsKIH0KIAot
Ly8gVGhlIEluaXRHb29nbGVUZXN0VGVzdCB0ZXN0IGNhc2UgdGVzdHMgdGVzdGluZzo6SW5pdEdv
b2dsZVRlc3QoKS4KKworLy8gVGhlIFBhcnNlRmxhZ3NUZXN0IHRlc3QgY2FzZSB0ZXN0cyBQYXJz
ZUdvb2dsZVRlc3RGbGFnc09ubHkuCiAKIC8vIFRoZSBGbGFncyBzdHJ1Y3Qgc3RvcmVzIGEgY29w
eSBvZiBhbGwgR29vZ2xlIFRlc3QgZmxhZ3MuCiBzdHJ1Y3QgRmxhZ3MgewpAQCAtNTAzMCw2ICs1
NDk5LDcgQEAgc3RydWN0IEZsYWdzIHsKICAgICAgICAgICAgIHJlcGVhdCgxKSwKICAgICAgICAg
ICAgIHNodWZmbGUoZmFsc2UpLAogICAgICAgICAgICAgc3RhY2tfdHJhY2VfZGVwdGgoa01heFN0
YWNrVHJhY2VEZXB0aCksCisgICAgICAgICAgICBzdHJlYW1fcmVzdWx0X3RvKCIiKSwKICAgICAg
ICAgICAgIHRocm93X29uX2ZhaWx1cmUoZmFsc2UpIHt9CiAKICAgLy8gRmFjdG9yeSBtZXRob2Rz
LgpAQCAtNTA5OCw4ICs1NTY4LDggQEAgc3RydWN0IEZsYWdzIHsKICAgICByZXR1cm4gZmxhZ3M7
CiAgIH0KIAotICAvLyBDcmVhdGVzIGEgRmxhZ3Mgc3RydWN0IHdoZXJlIHRoZSBndGVzdF9yYW5k
b21fc2VlZCBmbGFnIGhhcwotICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCisgIC8vIENyZWF0ZXMgYSBG
bGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIGd0ZXN0X3JhbmRvbV9zZWVkIGZsYWcgaGFzIHRoZSBnaXZl
bgorICAvLyB2YWx1ZS4KICAgc3RhdGljIEZsYWdzIFJhbmRvbVNlZWQoSW50MzIgcmFuZG9tX3Nl
ZWQpIHsKICAgICBGbGFncyBmbGFnczsKICAgICBmbGFncy5yYW5kb21fc2VlZCA9IHJhbmRvbV9z
ZWVkOwpAQCAtNTExNCw4ICs1NTg0LDggQEAgc3RydWN0IEZsYWdzIHsKICAgICByZXR1cm4gZmxh
Z3M7CiAgIH0KIAotICAvLyBDcmVhdGVzIGEgRmxhZ3Mgc3RydWN0IHdoZXJlIHRoZSBndGVzdF9z
aHVmZmxlIGZsYWcgaGFzCi0gIC8vIHRoZSBnaXZlbiB2YWx1ZS4KKyAgLy8gQ3JlYXRlcyBhIEZs
YWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3Rfc2h1ZmZsZSBmbGFnIGhhcyB0aGUgZ2l2ZW4KKyAg
Ly8gdmFsdWUuCiAgIHN0YXRpYyBGbGFncyBTaHVmZmxlKGJvb2wgc2h1ZmZsZSkgewogICAgIEZs
YWdzIGZsYWdzOwogICAgIGZsYWdzLnNodWZmbGUgPSBzaHVmZmxlOwpAQCAtNTEzMCw2ICs1NjAw
LDE0IEBAIHN0cnVjdCBGbGFncyB7CiAgICAgcmV0dXJuIGZsYWdzOwogICB9CiAKKyAgLy8gQ3Jl
YXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3Rv
KSBmbGFnIGhhcworICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCisgIHN0YXRpYyBGbGFncyBTdHJlYW1S
ZXN1bHRUbyhjb25zdCBjaGFyKiBzdHJlYW1fcmVzdWx0X3RvKSB7CisgICAgRmxhZ3MgZmxhZ3M7
CisgICAgZmxhZ3Muc3RyZWFtX3Jlc3VsdF90byA9IHN0cmVhbV9yZXN1bHRfdG87CisgICAgcmV0
dXJuIGZsYWdzOworICB9CisKICAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUg
Z3Rlc3RfdGhyb3dfb25fZmFpbHVyZSBmbGFnIGhhcwogICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCiAg
IHN0YXRpYyBGbGFncyBUaHJvd09uRmFpbHVyZShib29sIHRocm93X29uX2ZhaWx1cmUpIHsKQEAg
LTUxNTEsMTEgKzU2MjksMTIgQEAgc3RydWN0IEZsYWdzIHsKICAgSW50MzIgcmVwZWF0OwogICBi
b29sIHNodWZmbGU7CiAgIEludDMyIHN0YWNrX3RyYWNlX2RlcHRoOworICBjb25zdCBjaGFyKiBz
dHJlYW1fcmVzdWx0X3RvOwogICBib29sIHRocm93X29uX2ZhaWx1cmU7CiB9OwogCi0vLyBGaXh0
dXJlIGZvciB0ZXN0aW5nIEluaXRHb29nbGVUZXN0KCkuCi1jbGFzcyBJbml0R29vZ2xlVGVzdFRl
c3QgOiBwdWJsaWMgVGVzdCB7CisvLyBGaXh0dXJlIGZvciB0ZXN0aW5nIFBhcnNlR29vZ2xlVGVz
dEZsYWdzT25seSgpLgorY2xhc3MgUGFyc2VGbGFnc1Rlc3QgOiBwdWJsaWMgVGVzdCB7CiAgcHJv
dGVjdGVkOgogICAvLyBDbGVhcnMgdGhlIGZsYWdzIGJlZm9yZSBlYWNoIHRlc3QuCiAgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKQEAgLTUxNzEsNiArNTY1MCw3IEBAIGNsYXNzIEluaXRHb29nbGVU
ZXN0VGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICBHVEVTVF9GTEFHKHJlcGVhdCkgPSAxOwogICAg
IEdURVNUX0ZMQUcoc2h1ZmZsZSkgPSBmYWxzZTsKICAgICBHVEVTVF9GTEFHKHN0YWNrX3RyYWNl
X2RlcHRoKSA9IGtNYXhTdGFja1RyYWNlRGVwdGg7CisgICAgR1RFU1RfRkxBRyhzdHJlYW1fcmVz
dWx0X3RvKSA9ICIiOwogICAgIEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSBmYWxzZTsK
ICAgfQogCkBAIC01MTk5LDggKzU2NzksMTAgQEAgY2xhc3MgSW5pdEdvb2dsZVRlc3RUZXN0IDog
cHVibGljIFRlc3QgewogICAgIEVYUEVDVF9FUShleHBlY3RlZC5yYW5kb21fc2VlZCwgR1RFU1Rf
RkxBRyhyYW5kb21fc2VlZCkpOwogICAgIEVYUEVDVF9FUShleHBlY3RlZC5yZXBlYXQsIEdURVNU
X0ZMQUcocmVwZWF0KSk7CiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkLnNodWZmbGUsIEdURVNUX0ZM
QUcoc2h1ZmZsZSkpOwotICAgIEVYUEVDVF9FUShleHBlY3RlZC50aHJvd19vbl9mYWlsdXJlLCBH
VEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpKTsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQuc3Rh
Y2tfdHJhY2VfZGVwdGgsIEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpKTsKKyAgICBFWFBF
Q1RfU1RSRVEoZXhwZWN0ZWQuc3RyZWFtX3Jlc3VsdF90bywKKyAgICAgICAgICAgICAgICAgR1RF
U1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKS5jX3N0cigpKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0
ZWQudGhyb3dfb25fZmFpbHVyZSwgR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSk7CiAgIH0K
IAogICAvLyBQYXJzZXMgYSBjb21tYW5kIGxpbmUgKHNwZWNpZmllZCBieSBhcmdjMSBhbmQgYXJn
djEpLCB0aGVuCkBAIC01MjEzLDE2ICs1Njk1LDE2IEBAIGNsYXNzIEluaXRHb29nbGVUZXN0VGVz
dCA6IHB1YmxpYyBUZXN0IHsKICAgICBjb25zdCBib29sIHNhdmVkX2hlbHBfZmxhZyA9IDo6dGVz
dGluZzo6aW50ZXJuYWw6OmdfaGVscF9mbGFnOwogICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6Omdf
aGVscF9mbGFnID0gZmFsc2U7CiAKLSNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXwor
IyBpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCiAgICAgQ2FwdHVyZVN0ZG91dCgpOwot
I2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXworIyBlbmRpZgogCiAgICAg
Ly8gUGFyc2VzIHRoZSBjb21tYW5kIGxpbmUuCiAgICAgaW50ZXJuYWw6OlBhcnNlR29vZ2xlVGVz
dEZsYWdzT25seSgmYXJnYzEsIGNvbnN0X2Nhc3Q8Q2hhclR5cGUqKj4oYXJndjEpKTsKIAotI2lm
IEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCi0gICAgY29uc3QgU3RyaW5nIGNhcHR1cmVk
X3N0ZG91dCA9IEdldENhcHR1cmVkU3Rkb3V0KCk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJF
QU1fUkVESVJFQ1RJT05fCisjIGlmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KKyAgICBj
b25zdCBzdGQ6OnN0cmluZyBjYXB0dXJlZF9zdGRvdXQgPSBHZXRDYXB0dXJlZFN0ZG91dCgpOwor
IyBlbmRpZgogCiAgICAgLy8gVmVyaWZpZXMgdGhlIGZsYWcgdmFsdWVzLgogICAgIENoZWNrRmxh
Z3MoZXhwZWN0ZWQpOwpAQCAtNTIzNSw3ICs1NzE3LDcgQEAgY2xhc3MgSW5pdEdvb2dsZVRlc3RU
ZXN0IDogcHVibGljIFRlc3QgewogICAgIC8vIGhlbHAgbWVzc2FnZSBmb3IgdGhlIGZsYWdzIGl0
IHJlY29nbml6ZXMuCiAgICAgRVhQRUNUX0VRKHNob3VsZF9wcmludF9oZWxwLCA6OnRlc3Rpbmc6
OmludGVybmFsOjpnX2hlbHBfZmxhZyk7CiAKLSNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNU
SU9OXworIyBpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCiAgICAgY29uc3QgY2hhciog
Y29uc3QgZXhwZWN0ZWRfaGVscF9mcmFnbWVudCA9CiAgICAgICAgICJUaGlzIHByb2dyYW0gY29u
dGFpbnMgdGVzdHMgd3JpdHRlbiB1c2luZyI7CiAgICAgaWYgKHNob3VsZF9wcmludF9oZWxwKSB7
CkBAIC01MjQ0LDIxICs1NzI2LDIyIEBAIGNsYXNzIEluaXRHb29nbGVUZXN0VGVzdCA6IHB1Ymxp
YyBUZXN0IHsKICAgICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNOb3RTdWJzdHJpbmcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2hlbHBfZnJhZ21lbnQsIGNhcHR1cmVkX3N0
ZG91dCk7CiAgICAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXwor
IyBlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgogCiAgICAgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6Z19oZWxwX2ZsYWcgPSBzYXZlZF9oZWxwX2ZsYWc7CiAgIH0KIAogICAvLyBU
aGlzIG1hY3JvIHdyYXBzIFRlc3RQYXJzaW5nRmxhZ3Mgcy50LiB0aGUgdXNlciBkb2Vzbid0IG5l
ZWQKICAgLy8gdG8gc3BlY2lmeSB0aGUgYXJyYXkgc2l6ZXMuCi0jZGVmaW5lIEdURVNUX1RFU1Rf
UEFSU0lOR19GTEFHU18oYXJndjEsIGFyZ3YyLCBleHBlY3RlZCwgc2hvdWxkX3ByaW50X2hlbHAp
IFwKKworIyBkZWZpbmUgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2MSwgYXJndjIsIGV4
cGVjdGVkLCBzaG91bGRfcHJpbnRfaGVscCkgXAogICBUZXN0UGFyc2luZ0ZsYWdzKHNpemVvZihh
cmd2MSkvc2l6ZW9mKCphcmd2MSkgLSAxLCBhcmd2MSwgXAogICAgICAgICAgICAgICAgICAgIHNp
emVvZihhcmd2Mikvc2l6ZW9mKCphcmd2MikgLSAxLCBhcmd2MiwgXAogICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGVkLCBzaG91bGRfcHJpbnRfaGVscCkKIH07CiAKIC8vIFRlc3RzIHBhcnNpbmcg
YW4gZW1wdHkgY29tbWFuZCBsaW5lLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRW1wdHkp
IHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgRW1wdHkpIHsKICAgY29uc3QgY2hhciogYXJndltd
ID0gewogICAgIE5VTEwKICAgfTsKQEAgLTUyNzEsNyArNTc1NCw3IEBAIFRFU1RfRihJbml0R29v
Z2xlVGVzdFRlc3QsIEVtcHR5KSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgYSBjb21tYW5kIGxp
bmUgdGhhdCBoYXMgbm8gZmxhZy4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE5vRmxhZykg
eworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBOb0ZsYWcpIHsKICAgY29uc3QgY2hhciogYXJndltd
ID0gewogICAgICJmb28uZXhlIiwKICAgICBOVUxMCkBAIC01Mjg2LDcgKzU3NjksNyBAQCBURVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBOb0ZsYWcpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyBh
IGJhZCAtLWd0ZXN0X2ZpbHRlciBmbGFnLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRmls
dGVyQmFkKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEZpbHRlckJhZCkgewogICBjb25zdCBj
aGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X2ZpbHRlciIsCkBA
IC01MzAzLDcgKzU3ODYsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBGaWx0ZXJCYWQp
IHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyBhbiBlbXB0eSAtLWd0ZXN0X2ZpbHRlciBmbGFnLgot
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRmlsdGVyRW1wdHkpIHsKK1RFU1RfRihQYXJzZUZs
YWdzVGVzdCwgRmlsdGVyRW1wdHkpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJm
b28uZXhlIiwKICAgICAiLS1ndGVzdF9maWx0ZXI9IiwKQEAgLTUzMTksNyArNTgwMiw3IEBAIFRF
U1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEZpbHRlckVtcHR5KSB7CiB9CiAKIC8vIFRlc3RzIHBh
cnNpbmcgYSBub24tZW1wdHkgLS1ndGVzdF9maWx0ZXIgZmxhZy4KLVRFU1RfRihJbml0R29vZ2xl
VGVzdFRlc3QsIEZpbHRlck5vbkVtcHR5KSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEZpbHRl
ck5vbkVtcHR5KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAg
ICAgIi0tZ3Rlc3RfZmlsdGVyPWFiYyIsCkBAIC01MzM1LDcgKzU4MTgsNyBAQCBURVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBGaWx0ZXJOb25FbXB0eSkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5n
IC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEJy
ZWFrT25GYWlsdXJlV2l0aG91dFZhbHVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEJyZWFr
T25GYWlsdXJlV2l0aG91dFZhbHVlKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAi
Zm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSIsCkBAIC01MzUxLDcgKzU4
MzQsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVyZVdpdGhvdXRW
YWx1ZSkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZT0w
LgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVGYWxzZV8wKSB7CitU
RVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEJyZWFrT25GYWlsdXJlRmFsc2VfMCkgewogICBjb25zdCBj
aGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X2JyZWFrX29uX2Zh
aWx1cmU9MCIsCkBAIC01MzY3LDcgKzU4NTAsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0
LCBCcmVha09uRmFpbHVyZUZhbHNlXzApIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0
X2JyZWFrX29uX2ZhaWx1cmU9Zi4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25G
YWlsdXJlRmFsc2VfZikgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBCcmVha09uRmFpbHVyZUZh
bHNlX2YpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAi
LS1ndGVzdF9icmVha19vbl9mYWlsdXJlPWYiLApAQCAtNTM4Myw3ICs1ODY2LDcgQEAgVEVTVF9G
KEluaXRHb29nbGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVGYWxzZV9mKSB7CiB9CiAKIC8vIFRl
c3RzIHBhcnNpbmcgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlPUYuCi1URVNUX0YoSW5pdEdvb2ds
ZVRlc3RUZXN0LCBCcmVha09uRmFpbHVyZUZhbHNlX0YpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVz
dCwgQnJlYWtPbkZhaWx1cmVGYWxzZV9GKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAg
ICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZT1GIiwKQEAgLTU0MDAs
NyArNTg4Myw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlRmFs
c2VfRikgewogCiAvLyBUZXN0cyBwYXJzaW5nIGEgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZs
YWcgdGhhdCBoYXMgYSAidHJ1ZSIKIC8vIGRlZmluaXRpb24uCi1URVNUX0YoSW5pdEdvb2dsZVRl
c3RUZXN0LCBCcmVha09uRmFpbHVyZVRydWUpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgQnJl
YWtPbkZhaWx1cmVUcnVlKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4
ZSIsCiAgICAgIi0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZT0xIiwKQEAgLTU0MTYsNyArNTg5OSw3
IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlVHJ1ZSkgewogfQog
CiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucy4KLVRFU1RfRihJbml0
R29vZ2xlVGVzdFRlc3QsIENhdGNoRXhjZXB0aW9ucykgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0
LCBDYXRjaEV4Y2VwdGlvbnMpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28u
ZXhlIiwKICAgICAiLS1ndGVzdF9jYXRjaF9leGNlcHRpb25zIiwKQEAgLTU0MzIsNyArNTkxNSw3
IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIENhdGNoRXhjZXB0aW9ucykgewogfQogCiAv
LyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfZGVhdGhfdGVzdF91c2VfZm9yay4KLVRFU1RfRihJbml0
R29vZ2xlVGVzdFRlc3QsIERlYXRoVGVzdFVzZUZvcmspIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVz
dCwgRGVhdGhUZXN0VXNlRm9yaykgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZv
by5leGUiLAogICAgICItLWd0ZXN0X2RlYXRoX3Rlc3RfdXNlX2ZvcmsiLApAQCAtNTQ0OSw3ICs1
OTMyLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRGVhdGhUZXN0VXNlRm9yaykgewog
CiAvLyBUZXN0cyBoYXZpbmcgdGhlIHNhbWUgZmxhZyB0d2ljZSB3aXRoIGRpZmZlcmVudCB2YWx1
ZXMuICBUaGUKIC8vIGV4cGVjdGVkIGJlaGF2aW9yIGlzIHRoYXQgdGhlIG9uZSBjb21pbmcgbGFz
dCB0YWtlcyBwcmVjZWRlbmNlLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRHVwbGljYXRl
ZEZsYWdzKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIER1cGxpY2F0ZWRGbGFncykgewogICBj
b25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X2ZpbHRl
cj1hIiwKQEAgLTU0NjYsNyArNTk0OSw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIER1
cGxpY2F0ZWRGbGFncykgewogfQogCiAvLyBUZXN0cyBoYXZpbmcgYW4gdW5yZWNvZ25pemVkIGZs
YWcgb24gdGhlIGNvbW1hbmQgbGluZS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFVucmVj
b2duaXplZEZsYWcpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgVW5yZWNvZ25pemVkRmxhZykg
ewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0
X2JyZWFrX29uX2ZhaWx1cmUiLApAQCAtNTQ4OCw3ICs1OTcxLDcgQEAgVEVTVF9GKEluaXRHb29n
bGVUZXN0VGVzdCwgVW5yZWNvZ25pemVkRmxhZykgewogfQogCiAvLyBUZXN0cyBoYXZpbmcgYSAt
LWd0ZXN0X2xpc3RfdGVzdHMgZmxhZwotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTGlzdFRl
c3RzRmxhZykgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBMaXN0VGVzdHNGbGFnKSB7CiAgICAg
Y29uc3QgY2hhciogYXJndltdID0gewogICAgICAgImZvby5leGUiLAogICAgICAgIi0tZ3Rlc3Rf
bGlzdF90ZXN0cyIsCkBAIC01NTA0LDcgKzU5ODcsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RU
ZXN0LCBMaXN0VGVzdHNGbGFnKSB7CiB9CiAKIC8vIFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3RfbGlz
dF90ZXN0cyBmbGFnIHdpdGggYSAidHJ1ZSIgdmFsdWUKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRl
c3QsIExpc3RUZXN0c1RydWUpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgTGlzdFRlc3RzVHJ1
ZSkgewogICAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAg
ICItLWd0ZXN0X2xpc3RfdGVzdHM9MSIsCkBAIC01NTIwLDcgKzYwMDMsNyBAQCBURVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBMaXN0VGVzdHNUcnVlKSB7CiB9CiAKIC8vIFRlc3RzIGhhdmluZyBh
IC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnIHdpdGggYSAiZmFsc2UiIHZhbHVlCi1URVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBMaXN0VGVzdHNGYWxzZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0
LCBMaXN0VGVzdHNGYWxzZSkgewogICAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAgICJm
b28uZXhlIiwKICAgICAgICItLWd0ZXN0X2xpc3RfdGVzdHM9MCIsCkBAIC01NTM2LDcgKzYwMTks
NyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0VGVzdHNGYWxzZSkgewogfQogCiAv
LyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfbGlzdF90ZXN0cz1mLgotVEVTVF9GKEluaXRHb29nbGVU
ZXN0VGVzdCwgTGlzdFRlc3RzRmFsc2VfZikgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBMaXN0
VGVzdHNGYWxzZV9mKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIs
CiAgICAgIi0tZ3Rlc3RfbGlzdF90ZXN0cz1mIiwKQEAgLTU1NTIsNyArNjAzNSw3IEBAIFRFU1Rf
RihJbml0R29vZ2xlVGVzdFRlc3QsIExpc3RUZXN0c0ZhbHNlX2YpIHsKIH0KIAogLy8gVGVzdHMg
cGFyc2luZyAtLWd0ZXN0X2xpc3RfdGVzdHM9Ri4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3Qs
IExpc3RUZXN0c0ZhbHNlX0YpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgTGlzdFRlc3RzRmFs
c2VfRikgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICIt
LWd0ZXN0X2xpc3RfdGVzdHM9RiIsCkBAIC01NTY4LDcgKzYwNTEsNyBAQCBURVNUX0YoSW5pdEdv
b2dsZVRlc3RUZXN0LCBMaXN0VGVzdHNGYWxzZV9GKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcg
LS1ndGVzdF9vdXRwdXQgKGludmFsaWQpLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgT3V0
cHV0RW1wdHkpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgT3V0cHV0RW1wdHkpIHsKICAgY29u
c3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9vdXRwdXQi
LApAQCAtNTU4NSw3ICs2MDY4LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgT3V0cHV0
RW1wdHkpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X291dHB1dD14bWwKLVRFU1Rf
RihJbml0R29vZ2xlVGVzdFRlc3QsIE91dHB1dFhtbCkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0
LCBPdXRwdXRYbWwpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwK
ICAgICAiLS1ndGVzdF9vdXRwdXQ9eG1sIiwKQEAgLTU2MDEsNyArNjA4NCw3IEBAIFRFU1RfRihJ
bml0R29vZ2xlVGVzdFRlc3QsIE91dHB1dFhtbCkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0t
Z3Rlc3Rfb3V0cHV0PXhtbDpmaWxlCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBPdXRwdXRY
bWxGaWxlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIE91dHB1dFhtbEZpbGUpIHsKICAgY29u
c3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9vdXRwdXQ9
eG1sOmZpbGUiLApAQCAtNTYxNyw3ICs2MTAwLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVz
dCwgT3V0cHV0WG1sRmlsZSkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3Rfb3V0cHV0
PXhtbDpkaXJlY3RvcnkvcGF0aC8KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91dHB1dFht
bERpcmVjdG9yeSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBPdXRwdXRYbWxEaXJlY3Rvcnkp
IHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVz
dF9vdXRwdXQ9eG1sOmRpcmVjdG9yeS9wYXRoLyIsCkBAIC01NjM0LDcgKzYxMTcsNyBAQCBURVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBPdXRwdXRYbWxEaXJlY3RvcnkpIHsKIH0KIAogLy8gVGVz
dHMgaGF2aW5nIGEgLS1ndGVzdF9wcmludF90aW1lIGZsYWcKLVRFU1RfRihJbml0R29vZ2xlVGVz
dFRlc3QsIFByaW50VGltZUZsYWcpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgUHJpbnRUaW1l
RmxhZykgewogICAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAg
ICAgICItLWd0ZXN0X3ByaW50X3RpbWUiLApAQCAtNTY1MCw3ICs2MTMzLDcgQEAgVEVTVF9GKElu
aXRHb29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lRmxhZykgewogfQogCiAvLyBUZXN0cyBoYXZpbmcg
YSAtLWd0ZXN0X3ByaW50X3RpbWUgZmxhZyB3aXRoIGEgInRydWUiIHZhbHVlCi1URVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBQcmludFRpbWVUcnVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3Qs
IFByaW50VGltZVRydWUpIHsKICAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAiZm9v
LmV4ZSIsCiAgICAgICAiLS1ndGVzdF9wcmludF90aW1lPTEiLApAQCAtNTY2Niw3ICs2MTQ5LDcg
QEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lVHJ1ZSkgewogfQogCiAvLyBU
ZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X3ByaW50X3RpbWUgZmxhZyB3aXRoIGEgImZhbHNlIiB2YWx1
ZQotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lRmFsc2UpIHsKK1RFU1RfRihQ
YXJzZUZsYWdzVGVzdCwgUHJpbnRUaW1lRmFsc2UpIHsKICAgICBjb25zdCBjaGFyKiBhcmd2W10g
PSB7CiAgICAgICAiZm9vLmV4ZSIsCiAgICAgICAiLS1ndGVzdF9wcmludF90aW1lPTAiLApAQCAt
NTY4Miw3ICs2MTY1LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lRmFs
c2UpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X3ByaW50X3RpbWU9Zi4KLVRFU1Rf
RihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZhbHNlX2YpIHsKK1RFU1RfRihQYXJzZUZs
YWdzVGVzdCwgUHJpbnRUaW1lRmFsc2VfZikgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAg
ICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X3ByaW50X3RpbWU9ZiIsCkBAIC01Njk4LDcgKzYx
ODEsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBQcmludFRpbWVGYWxzZV9mKSB7CiB9
CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9wcmludF90aW1lPUYuCi1URVNUX0YoSW5pdEdv
b2dsZVRlc3RUZXN0LCBQcmludFRpbWVGYWxzZV9GKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3Qs
IFByaW50VGltZUZhbHNlX0YpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28u
ZXhlIiwKICAgICAiLS1ndGVzdF9wcmludF90aW1lPUYiLApAQCAtNTcxNCw3ICs2MTk3LDcgQEAg
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lRmFsc2VfRikgewogfQogCiAvLyBU
ZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfcmFuZG9tX3NlZWQ9bnVtYmVyCi1URVNUX0YoSW5pdEdvb2ds
ZVRlc3RUZXN0LCBSYW5kb21TZWVkKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFJhbmRvbVNl
ZWQpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1n
dGVzdF9yYW5kb21fc2VlZD0xMDAwIiwKQEAgLTU3MzAsNyArNjIxMyw3IEBAIFRFU1RfRihJbml0
R29vZ2xlVGVzdFRlc3QsIFJhbmRvbVNlZWQpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0
ZXN0X3JlcGVhdD1udW1iZXIKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFJlcGVhdCkgewor
VEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBSZXBlYXQpIHsKICAgY29uc3QgY2hhciogYXJndltdID0g
ewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9yZXBlYXQ9MTAwMCIsCkBAIC01NzQ2LDcg
KzYyMjksNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBSZXBlYXQpIHsKIH0KIAogLy8g
VGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnCi1URVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBBbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcpIHsKK1RFU1Rf
RihQYXJzZUZsYWdzVGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKSB7CiAgICAgY29uc3Qg
Y2hhciogYXJndltdID0gewogICAgICAgImZvby5leGUiLAogICAgICAgIi0tZ3Rlc3RfYWxzb19y
dW5fZGlzYWJsZWRfdGVzdHMiLApAQCAtNTc2Myw3ICs2MjQ2LDcgQEAgVEVTVF9GKEluaXRHb29n
bGVUZXN0VGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKSB7CiB9CiAKIC8vIFRlc3RzIGhh
dmluZyBhIC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxhZyB3aXRoIGEgInRydWUi
IHZhbHVlCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBBbHNvUnVuRGlzYWJsZWRUZXN0c1Ry
dWUpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNUcnVlKSB7
CiAgICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICAgImZvby5leGUiLAogICAgICAgIi0t
Z3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHM9MSIsCkBAIC01NzgwLDcgKzYyNjMsNyBAQCBU
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBBbHNvUnVuRGlzYWJsZWRUZXN0c1RydWUpIHsKIH0K
IAogLy8gVGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFn
IHdpdGggYSAiZmFsc2UiIHZhbHVlCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBBbHNvUnVu
RGlzYWJsZWRUZXN0c0ZhbHNlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEFsc29SdW5EaXNh
YmxlZFRlc3RzRmFsc2UpIHsKICAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAiZm9v
LmV4ZSIsCiAgICAgICAiLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cz0wIiwKQEAgLTU3
OTcsNyArNjI4MCw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEFsc29SdW5EaXNhYmxl
ZFRlc3RzRmFsc2UpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X3NodWZmbGUuCi1U
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBTaHVmZmxlV2l0aG91dFZhbHVlKSB7CitURVNUX0Yo
UGFyc2VGbGFnc1Rlc3QsIFNodWZmbGVXaXRob3V0VmFsdWUpIHsKICAgY29uc3QgY2hhciogYXJn
dltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9zaHVmZmxlIiwKQEAgLTU4MTMs
NyArNjI5Niw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFNodWZmbGVXaXRob3V0VmFs
dWUpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X3NodWZmbGU9MC4KLVRFU1RfRihJ
bml0R29vZ2xlVGVzdFRlc3QsIFNodWZmbGVGYWxzZV8wKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rl
c3QsIFNodWZmbGVGYWxzZV8wKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9v
LmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfc2h1ZmZsZT0wIiwKQEAgLTU4MjgsOSArNjMxMSw4IEBAIFRF
U1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFNodWZmbGVGYWxzZV8wKSB7CiAgIEdURVNUX1RFU1Rf
UEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpTaHVmZmxlKGZhbHNlKSwgZmFsc2Up
OwogfQogCi0vLyBUZXN0cyBwYXJzaW5nIGEgLS1ndGVzdF9zaHVmZmxlIGZsYWcgdGhhdCBoYXMg
YSAidHJ1ZSIKLS8vIGRlZmluaXRpb24uCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBTaHVm
ZmxlVHJ1ZSkgeworLy8gVGVzdHMgcGFyc2luZyBhIC0tZ3Rlc3Rfc2h1ZmZsZSBmbGFnIHRoYXQg
aGFzIGEgInRydWUiIGRlZmluaXRpb24uCitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFNodWZmbGVU
cnVlKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0t
Z3Rlc3Rfc2h1ZmZsZT0xIiwKQEAgLTU4NDYsNyArNjMyOCw3IEBAIFRFU1RfRihJbml0R29vZ2xl
VGVzdFRlc3QsIFNodWZmbGVUcnVlKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9z
dGFja190cmFjZV9kZXB0aD1udW1iZXIuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBTdGFj
a1RyYWNlRGVwdGgpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgU3RhY2tUcmFjZURlcHRoKSB7
CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rf
c3RhY2tfdHJhY2VfZGVwdGg9NSIsCkBAIC01ODYxLDggKzYzNDMsMjQgQEAgVEVTVF9GKEluaXRH
b29nbGVUZXN0VGVzdCwgU3RhY2tUcmFjZURlcHRoKSB7CiAgIEdURVNUX1RFU1RfUEFSU0lOR19G
TEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpTdGFja1RyYWNlRGVwdGgoNSksIGZhbHNlKTsKIH0K
IAorVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBTdHJlYW1SZXN1bHRUbykgeworICBjb25zdCBjaGFy
KiBhcmd2W10gPSB7CisgICAgImZvby5leGUiLAorICAgICItLWd0ZXN0X3N0cmVhbV9yZXN1bHRf
dG89bG9jYWxob3N0OjEyMzQiLAorICAgIE5VTEwKKyAgfTsKKworICBjb25zdCBjaGFyKiBhcmd2
MltdID0geworICAgICJmb28uZXhlIiwKKyAgICBOVUxMCisgIH07CisKKyAgR1RFU1RfVEVTVF9Q
QVJTSU5HX0ZMQUdTXygKKyAgICAgIGFyZ3YsIGFyZ3YyLCBGbGFnczo6U3RyZWFtUmVzdWx0VG8o
ImxvY2FsaG9zdDoxMjM0IiksIGZhbHNlKTsKK30KKwogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0
X3Rocm93X29uX2ZhaWx1cmUuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBUaHJvd09uRmFp
bHVyZVdpdGhvdXRWYWx1ZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBUaHJvd09uRmFpbHVy
ZVdpdGhvdXRWYWx1ZSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUi
LAogICAgICItLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmUiLApAQCAtNTg3OCw3ICs2Mzc2LDcgQEAg
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgVGhyb3dPbkZhaWx1cmVXaXRob3V0VmFsdWUpIHsK
IH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmU9MC4KLVRFU1Rf
RihJbml0R29vZ2xlVGVzdFRlc3QsIFRocm93T25GYWlsdXJlRmFsc2VfMCkgeworVEVTVF9GKFBh
cnNlRmxhZ3NUZXN0LCBUaHJvd09uRmFpbHVyZUZhbHNlXzApIHsKICAgY29uc3QgY2hhciogYXJn
dltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlPTAi
LApAQCAtNTg5NSw3ICs2MzkzLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgVGhyb3dP
bkZhaWx1cmVGYWxzZV8wKSB7CiAKIC8vIFRlc3RzIHBhcnNpbmcgYSAtLWd0ZXN0X3Rocm93X29u
X2ZhaWx1cmUgZmxhZyB0aGF0IGhhcyBhICJ0cnVlIgogLy8gZGVmaW5pdGlvbi4KLVRFU1RfRihJ
bml0R29vZ2xlVGVzdFRlc3QsIFRocm93T25GYWlsdXJlVHJ1ZSkgeworVEVTVF9GKFBhcnNlRmxh
Z3NUZXN0LCBUaHJvd09uRmFpbHVyZVRydWUpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewog
ICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlPTEiLApAQCAtNTkx
MCw5ICs2NDA4LDkgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgVGhyb3dPbkZhaWx1cmVU
cnVlKSB7CiAgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpU
aHJvd09uRmFpbHVyZSh0cnVlKSwgZmFsc2UpOwogfQogCi0jaWYgR1RFU1RfT1NfV0lORE9XUwor
IyBpZiBHVEVTVF9PU19XSU5ET1dTCiAvLyBUZXN0cyBwYXJzaW5nIHdpZGUgc3RyaW5ncy4KLVRF
U1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFdpZGVTdHJpbmdzKSB7CitURVNUX0YoUGFyc2VGbGFn
c1Rlc3QsIFdpZGVTdHJpbmdzKSB7CiAgIGNvbnN0IHdjaGFyX3QqIGFyZ3ZbXSA9IHsKICAgICBM
ImZvby5leGUiLAogICAgIEwiLS1ndGVzdF9maWx0ZXI9Rm9vKiIsCkBAIC01OTM1LDcgKzY0MzMs
MTA4IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFdpZGVTdHJpbmdzKSB7CiAKICAgR1RF
U1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgZXhwZWN0ZWRfZmxhZ3MsIGZhbHNl
KTsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gR1RFU1RfT1Nf
V0lORE9XUworCisjaWYgR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXworY2xhc3MgRmxhZ2Zp
bGVUZXN0IDogcHVibGljIFBhcnNlRmxhZ3NUZXN0IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgdm9p
ZCBTZXRVcCgpIHsKKyAgICBQYXJzZUZsYWdzVGVzdDo6U2V0VXAoKTsKKworICAgIHRlc3RkYXRh
X3BhdGhfLlNldChpbnRlcm5hbDo6RmlsZVBhdGgoCisgICAgICAgIHRlc3Rpbmc6OlRlbXBEaXIo
KSArIGludGVybmFsOjpHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmcoKSArCisgICAg
ICAgICJfZmxhZ2ZpbGVfdGVzdCIpKTsKKyAgICB0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OlJt
RGlyKHRlc3RkYXRhX3BhdGhfLmNfc3RyKCkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RkYXRhX3Bh
dGhfLkNyZWF0ZUZvbGRlcigpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsK
KyAgICB0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhfLmNfc3Ry
KCkpOworICAgIFBhcnNlRmxhZ3NUZXN0OjpUZWFyRG93bigpOworICB9CisKKyAgaW50ZXJuYWw6
OkZpbGVQYXRoIENyZWF0ZUZsYWdmaWxlKGNvbnN0IGNoYXIqIGNvbnRlbnRzKSB7CisgICAgaW50
ZXJuYWw6OkZpbGVQYXRoIGZpbGVfcGF0aChpbnRlcm5hbDo6RmlsZVBhdGg6OkdlbmVyYXRlVW5p
cXVlRmlsZU5hbWUoCisgICAgICAgIHRlc3RkYXRhX3BhdGhfLCBpbnRlcm5hbDo6RmlsZVBhdGgo
InVuaXF1ZSIpLCAidHh0IikpOworICAgIEZJTEUqIGYgPSB0ZXN0aW5nOjppbnRlcm5hbDo6cG9z
aXg6OkZPcGVuKGZpbGVfcGF0aC5jX3N0cigpLCAidyIpOworICAgIGZwcmludGYoZiwgIiVzIiwg
Y29udGVudHMpOworICAgIGZjbG9zZShmKTsKKyAgICByZXR1cm4gZmlsZV9wYXRoOworICB9CisK
KyBwcml2YXRlOgorICBpbnRlcm5hbDo6RmlsZVBhdGggdGVzdGRhdGFfcGF0aF87Cit9OworCisv
LyBUZXN0cyBhbiBlbXB0eSBmbGFnZmlsZS4KK1RFU1RfRihGbGFnZmlsZVRlc3QsIEVtcHR5KSB7
CisgIGludGVybmFsOjpGaWxlUGF0aCBmbGFnZmlsZV9wYXRoKENyZWF0ZUZsYWdmaWxlKCIiKSk7
CisgIHN0ZDo6c3RyaW5nIGZsYWdmaWxlX2ZsYWcgPQorICAgICAgc3RkOjpzdHJpbmcoIi0tIiBH
VEVTVF9GTEFHX1BSRUZJWF8gImZsYWdmaWxlPSIpICsgZmxhZ2ZpbGVfcGF0aC5jX3N0cigpOwor
CisgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgZmxhZ2ZpbGVf
ZmxhZy5jX3N0cigpLAorICAgIE5VTEwKKyAgfTsKKworICBjb25zdCBjaGFyKiBhcmd2MltdID0g
eworICAgICJmb28uZXhlIiwKKyAgICBOVUxMCisgIH07CisKKyAgR1RFU1RfVEVTVF9QQVJTSU5H
X0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3MoKSwgZmFsc2UpOworfQorCisvLyBUZXN0cyBwYXNz
aW5nIGEgbm9uLWVtcHR5IC0tZ3Rlc3RfZmlsdGVyIGZsYWcgdmlhIC0tZ3Rlc3RfZmxhZ2ZpbGUu
CitURVNUX0YoRmxhZ2ZpbGVUZXN0LCBGaWx0ZXJOb25FbXB0eSkgeworICBpbnRlcm5hbDo6Rmls
ZVBhdGggZmxhZ2ZpbGVfcGF0aChDcmVhdGVGbGFnZmlsZSgKKyAgICAgICItLSIgIEdURVNUX0ZM
QUdfUFJFRklYXyAgImZpbHRlcj1hYmMiKSk7CisgIHN0ZDo6c3RyaW5nIGZsYWdmaWxlX2ZsYWcg
PQorICAgICAgc3RkOjpzdHJpbmcoIi0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImZsYWdmaWxlPSIp
ICsgZmxhZ2ZpbGVfcGF0aC5jX3N0cigpOworCisgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKKyAg
ICAiZm9vLmV4ZSIsCisgICAgZmxhZ2ZpbGVfZmxhZy5jX3N0cigpLAorICAgIE5VTEwKKyAgfTsK
KworICBjb25zdCBjaGFyKiBhcmd2MltdID0geworICAgICJmb28uZXhlIiwKKyAgICBOVUxMCisg
IH07CisKKyAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OkZp
bHRlcigiYWJjIiksIGZhbHNlKTsKK30KKworLy8gVGVzdHMgcGFzc2luZyBzZXZlcmFsIGZsYWdz
IHZpYSAtLWd0ZXN0X2ZsYWdmaWxlLgorVEVTVF9GKEZsYWdmaWxlVGVzdCwgU2V2ZXJhbEZsYWdz
KSB7CisgIGludGVybmFsOjpGaWxlUGF0aCBmbGFnZmlsZV9wYXRoKENyZWF0ZUZsYWdmaWxlKAor
ICAgICAgIi0tIiAgR1RFU1RfRkxBR19QUkVGSVhfICAiZmlsdGVyPWFiY1xuIgorICAgICAgIi0t
IiAgR1RFU1RfRkxBR19QUkVGSVhfICAiYnJlYWtfb25fZmFpbHVyZVxuIgorICAgICAgIi0tIiAg
R1RFU1RfRkxBR19QUkVGSVhfICAibGlzdF90ZXN0cyIpKTsKKyAgc3RkOjpzdHJpbmcgZmxhZ2Zp
bGVfZmxhZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiZmxh
Z2ZpbGU9IikgKyBmbGFnZmlsZV9wYXRoLmNfc3RyKCk7CisKKyAgY29uc3QgY2hhciogYXJndltd
ID0geworICAgICJmb28uZXhlIiwKKyAgICBmbGFnZmlsZV9mbGFnLmNfc3RyKCksCisgICAgTlVM
TAorICB9OworCisgIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7CisgICAgImZvby5leGUiLAorICAg
IE5VTEwKKyAgfTsKKworICBGbGFncyBleHBlY3RlZF9mbGFnczsKKyAgZXhwZWN0ZWRfZmxhZ3Mu
YnJlYWtfb25fZmFpbHVyZSA9IHRydWU7CisgIGV4cGVjdGVkX2ZsYWdzLmZpbHRlciA9ICJhYmMi
OworICBleHBlY3RlZF9mbGFncy5saXN0X3Rlc3RzID0gdHJ1ZTsKKworICBHVEVTVF9URVNUX1BB
UlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBleHBlY3RlZF9mbGFncywgZmFsc2UpOworfQorI2Vu
ZGlmICAvLyBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCiAKIC8vIFRlc3RzIGN1cnJlbnRf
dGVzdF9pbmZvKCkgaW4gVW5pdFRlc3QuCiBjbGFzcyBDdXJyZW50VGVzdEluZm9UZXN0IDogcHVi
bGljIFRlc3QgewpAQCAtNTk5MCw2ICs2NTg5LDcgQEAgVEVTVF9GKEN1cnJlbnRUZXN0SW5mb1Rl
c3QsIFdvcmtzRm9yU2Vjb25kVGVzdEluQVRlc3RDYXNlKSB7CiAKIH0gIC8vIG5hbWVzcGFjZSB0
ZXN0aW5nCiAKKwogLy8gVGhlc2UgdHdvIGxpbmVzIHRlc3QgdGhhdCB3ZSBjYW4gZGVmaW5lIHRl
c3RzIGluIGEgbmFtZXNwYWNlIHRoYXQKIC8vIGhhcyB0aGUgbmFtZSAidGVzdGluZyIgYW5kIGlz
IG5lc3RlZCBpbiBhbm90aGVyIG5hbWVzcGFjZS4KIG5hbWVzcGFjZSBteV9uYW1lc3BhY2UgewpA
QCAtNjA0OCw3ICs2NjQ4LDcgQEAgVEVTVChTdHJlYW1pbmdBc3NlcnRpb25zVGVzdCwgVW5jb25k
aXRpb25hbCkgewogCiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBTaWxlbmNlcyB3YXJuaW5nczog
IkNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZSIsICJVbnJlYWNoYWJsZSBjb2RlIgotI3ByYWdtYSBv
cHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCisjIHByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXct
cmNoCiAjZW5kaWYKIAogVEVTVChTdHJlYW1pbmdBc3NlcnRpb25zVGVzdCwgVHJ1dGgpIHsKQEAg
LTYwNzAsOCArNjY3MCw4IEBAIFRFU1QoU3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIFRydXRoMikg
ewogfQogCiAjaWZkZWYgX19CT1JMQU5EQ19fCi0vLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBw
cmV2aW91cyAiI3ByYWdtYSBvcHRpb24gcHVzaCIgc3VwcmVzc2VkIHRoZW0KLSNwcmFnbWEgb3B0
aW9uIHBvcAorLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0ZXIgcHJldmlvdXMgIiNwcmFnbWEgb3B0
aW9uIHB1c2giIHN1cHByZXNzZWQgdGhlbQorIyBwcmFnbWEgb3B0aW9uIHBvcAogI2VuZGlmCiAK
IFRFU1QoU3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIEludGVnZXJFcXVhbHMpIHsKQEAgLTYyNjQs
MTUgKzY4NjQsNDAgQEAgVEVTVChDb2xvcmVkT3V0cHV0VGVzdCwgVXNlc0NvbG9yc1doZW5UZXJt
U3VwcG9ydHNDb2xvcnMpIHsKICAgU2V0RW52KCJURVJNIiwgInh0ZXJtLWNvbG9yIik7ICAvLyBU
RVJNIHN1cHBvcnRzIGNvbG9ycy4KICAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkp
OyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgogCisgIFNldEVudigiVEVSTSIsICJ4dGVybS0yNTZjb2xv
ciIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNv
bG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAic2Ny
ZWVuIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxkVXNl
Q29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgorCisgIFNldEVudigiVEVSTSIsICJz
Y3JlZW4tMjU2Y29sb3IiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBFWFBFQ1RfVFJV
RShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52
KCJURVJNIiwgInRtdXgiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBFWFBFQ1RfVFJV
RShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52
KCJURVJNIiwgInRtdXgtMjU2Y29sb3IiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBF
WFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisK
KyAgU2V0RW52KCJURVJNIiwgInJ4dnQtdW5pY29kZSIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xv
cnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBh
IFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAicnh2dC11bmljb2RlLTI1NmNvbG9yIik7ICAvLyBU
RVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkp
OyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgorCiAgIFNldEVudigiVEVSTSIsICJsaW51eCIpOyAgLy8g
VEVSTSBzdXBwb3J0cyBjb2xvcnMuCiAgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUp
KTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAiY3lnd2luIik7ICAv
LyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1
ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiB9
CiAKIC8vIFZlcmlmaWVzIHRoYXQgU3RhdGljQXNzZXJ0VHlwZUVxIHdvcmtzIGluIGEgbmFtZXNw
YWNlIHNjb3BlLgogCi1zdGF0aWMgYm9vbCBkdW1teTEgPSBTdGF0aWNBc3NlcnRUeXBlRXE8Ym9v
bCwgYm9vbD4oKTsKLXN0YXRpYyBib29sIGR1bW15MiA9IFN0YXRpY0Fzc2VydFR5cGVFcTxjb25z
dCBpbnQsIGNvbnN0IGludD4oKTsKK3N0YXRpYyBib29sIGR1bW15MSBHVEVTVF9BVFRSSUJVVEVf
VU5VU0VEXyA9IFN0YXRpY0Fzc2VydFR5cGVFcTxib29sLCBib29sPigpOworc3RhdGljIGJvb2wg
ZHVtbXkyIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0KKyAgICBTdGF0aWNBc3NlcnRUeXBlRXE8
Y29uc3QgaW50LCBjb25zdCBpbnQ+KCk7CiAKIC8vIFZlcmlmaWVzIHRoYXQgU3RhdGljQXNzZXJ0
VHlwZUVxIHdvcmtzIGluIGEgY2xhc3MuCiAKQEAgLTYyOTUsMTQgKzY5MjAsNiBAQCBURVNUKFN0
YXRpY0Fzc2VydFR5cGVFcVRlc3QsIENvbXBpbGVzRm9yRXF1YWxUeXBlcykgewogICBTdGF0aWNB
c3NlcnRUeXBlRXE8aW50KiwgSW50QWxpYXMqPigpOwogfQogCi1URVNUKEdldEN1cnJlbnRPc1N0
YWNrVHJhY2VFeGNlcHRUb3BUZXN0LCBSZXR1cm5zVGhlU3RhY2tUcmFjZSkgewotICB0ZXN0aW5n
OjpVbml0VGVzdCogY29uc3QgdW5pdF90ZXN0ID0gdGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3Rh
bmNlKCk7Ci0KLSAgLy8gV2UgZG9uJ3QgaGF2ZSBhIHN0YWNrIHdhbGtlciBpbiBHb29nbGUgVGVz
dCB5ZXQuCi0gIEVYUEVDVF9TVFJFUSgiIiwgR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRv
cCh1bml0X3Rlc3QsIDApLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIEdldEN1cnJlbnRP
c1N0YWNrVHJhY2VFeGNlcHRUb3AodW5pdF90ZXN0LCAxKS5jX3N0cigpKTsKLX0KLQogVEVTVChI
YXNOb25mYXRhbEZhaWx1cmVUZXN0LCBSZXR1cm5zRmFsc2VXaGVuVGhlcmVJc05vRmFpbHVyZSkg
ewogICBFWFBFQ1RfRkFMU0UoSGFzTm9uZmF0YWxGYWlsdXJlKCkpOwogfQpAQCAtNjQ2Niw3ICs3
MDgzLDcgQEAgVEVTVChUZXN0RXZlbnRMaXN0ZW5lcnNUZXN0LCBBcHBlbmQpIHsKIC8vIG9yZGVy
LgogY2xhc3MgU2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRM
aXN0ZW5lciB7CiAgcHVibGljOgotICBTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lcihzdGQ6OnZlY3Rv
cjxTdHJpbmc+KiB2ZWN0b3IsIGNvbnN0IGNoYXIqIGlkKQorICBTZXF1ZW5jZVRlc3RpbmdMaXN0
ZW5lcihzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIHZlY3RvciwgY29uc3QgY2hhciogaWQpCiAg
ICAgICA6IHZlY3Rvcl8odmVjdG9yKSwgaWRfKGlkKSB7fQogCiAgcHJvdGVjdGVkOgpAQCAtNjQ4
OSwyMCArNzEwNiwyMCBAQCBjbGFzcyBTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lciA6IHB1YmxpYyBF
bXB0eVRlc3RFdmVudExpc3RlbmVyIHsKICAgfQogCiAgcHJpdmF0ZToKLSAgU3RyaW5nIEdldEV2
ZW50RGVzY3JpcHRpb24oY29uc3QgY2hhciogbWV0aG9kKSB7CisgIHN0ZDo6c3RyaW5nIEdldEV2
ZW50RGVzY3JpcHRpb24oY29uc3QgY2hhciogbWV0aG9kKSB7CiAgICAgTWVzc2FnZSBtZXNzYWdl
OwogICAgIG1lc3NhZ2UgPDwgaWRfIDw8ICIuIiA8PCBtZXRob2Q7CiAgICAgcmV0dXJuIG1lc3Nh
Z2UuR2V0U3RyaW5nKCk7CiAgIH0KIAotICBzdGQ6OnZlY3RvcjxTdHJpbmc+KiB2ZWN0b3JfOwor
ICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIHZlY3Rvcl87CiAgIGNvbnN0IGNoYXIqIGNvbnN0
IGlkXzsKIAogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNlcXVlbmNlVGVzdGlu
Z0xpc3RlbmVyKTsKIH07CiAKIFRFU1QoRXZlbnRMaXN0ZW5lclRlc3QsIEFwcGVuZEtlZXBzT3Jk
ZXIpIHsKLSAgc3RkOjp2ZWN0b3I8U3RyaW5nPiB2ZWM7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiB2ZWM7CiAgIFRlc3RFdmVudExpc3RlbmVycyBsaXN0ZW5lcnM7CiAgIGxpc3RlbmVycy5B
cHBlbmQobmV3IFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyKCZ2ZWMsICIxc3QiKSk7CiAgIGxpc3Rl
bmVycy5BcHBlbmQobmV3IFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyKCZ2ZWMsICIybmQiKSk7CkBA
IC02NzE1LDQgKzczMzIsNDY0IEBAIEdURVNUX1RFU1QoQWx0ZXJuYXRpdmVOYW1lVGVzdCwgV29y
a3MpIHsgIC8vIEdURVNUX1RFU1QgaXMgdGhlIHNhbWUgYXMgVEVTVC4KICAgLy8gR1RFU1RfRkFJ
TCBpcyB0aGUgc2FtZSBhcyBGQUlMLgogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9GQUlM
KCkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAogICAgICAgICAgICAgICAgICAgICAgICAiQW4g
ZXhwZWN0ZWQgZmFpbHVyZSIpOworCisgIC8vIEdURVNUX0FTU0VSVF9YWSBpcyB0aGUgc2FtZSBh
cyBBU1NFUlRfWFkuCisKKyAgR1RFU1RfQVNTRVJUX0VRKDAsIDApOworICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShHVEVTVF9BU1NFUlRfRVEoMCwgMSkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAor
ICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfRVEoMSwgMCkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1
cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworCisg
IEdURVNUX0FTU0VSVF9ORSgwLCAxKTsKKyAgR1RFU1RfQVNTRVJUX05FKDEsIDApOworICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfTkUoMCwgMCkgPDwgIkFuIGV4cGVjdGVkIGZh
aWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOwor
CisgIEdURVNUX0FTU0VSVF9MRSgwLCAwKTsKKyAgR1RFU1RfQVNTRVJUX0xFKDAsIDEpOworICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfTEUoMSwgMCkgPDwgIkFuIGV4cGVjdGVk
IGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIp
OworCisgIEdURVNUX0FTU0VSVF9MVCgwLCAxKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RF
U1RfQVNTRVJUX0xUKDAsIDApIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoR1RFU1RfQVNTRVJUX0xUKDEsIDApIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKworICBHVEVTVF9BU1NF
UlRfR0UoMCwgMCk7CisgIEdURVNUX0FTU0VSVF9HRSgxLCAwKTsKKyAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoR1RFU1RfQVNTRVJUX0dFKDAsIDEpIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKworICBHVEVTVF9B
U1NFUlRfR1QoMSwgMCk7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdURVNUX0FTU0VSVF9HVCgw
LCAxKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAgICAgICAgICAgICAgICJB
biBleHBlY3RlZCBmYWlsdXJlIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdURVNUX0FTU0VS
VF9HVCgxLCAxKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAgICAgICAgICAg
ICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7Cit9CisKKy8vIFRlc3RzIGZvciBpbnRlcm5hbCB1
dGlsaXRpZXMgbmVjZXNzYXJ5IGZvciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgdW5pdmVyc2FsCisv
LyBwcmludGluZy4KKy8vIEZJWE1FOiBGaW5kIGEgYmV0dGVyIGhvbWUgZm9yIHRoZW0uCisKK2Ns
YXNzIENvbnZlcnNpb25IZWxwZXJCYXNlIHt9OworY2xhc3MgQ29udmVyc2lvbkhlbHBlckRlcml2
ZWQgOiBwdWJsaWMgQ29udmVyc2lvbkhlbHBlckJhc2Uge307CisKKy8vIFRlc3RzIHRoYXQgSXNB
UHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZSBpcyBhIGNvbXBpbGUtdGltZSBjb25zdGFudC4KK1RF
U1QoSXNBUHJvdG9jb2xNZXNzYWdlVGVzdCwgVmFsdWVJc0NvbXBpbGVUaW1lQ29uc3RhbnQpIHsK
KyAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKElzQVByb3RvY29sTWVzc2FnZTxQcm90b2NvbE1lc3Nh
Z2U+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X3RydWUpOworICBHVEVT
VF9DT01QSUxFX0FTU0VSVF8oIUlzQVByb3RvY29sTWVzc2FnZTxpbnQ+Ojp2YWx1ZSwgY29uc3Rf
ZmFsc2UpOworfQorCisvLyBUZXN0cyB0aGF0IElzQVByb3RvY29sTWVzc2FnZTxUPjo6dmFsdWUg
aXMgdHJ1ZSB3aGVuIFQgaXMKKy8vIHByb3RvMjo6TWVzc2FnZSBvciBhIHN1Yi1jbGFzcyBvZiBp
dC4KK1RFU1QoSXNBUHJvdG9jb2xNZXNzYWdlVGVzdCwgVmFsdWVJc1RydWVXaGVuVHlwZUlzQVBy
b3RvY29sTWVzc2FnZSkgeworICBFWFBFQ1RfVFJVRShJc0FQcm90b2NvbE1lc3NhZ2U8IDo6cHJv
dG8yOjpNZXNzYWdlPjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRShJc0FQcm90b2NvbE1lc3NhZ2U8
UHJvdG9jb2xNZXNzYWdlPjo6dmFsdWUpOworfQorCisvLyBUZXN0cyB0aGF0IElzQVByb3RvY29s
TWVzc2FnZTxUPjo6dmFsdWUgaXMgZmFsc2Ugd2hlbiBUIGlzIG5laXRoZXIKKy8vIFByb3RvY29s
TWVzc2FnZSBub3IgYSBzdWItY2xhc3Mgb2YgaXQuCitURVNUKElzQVByb3RvY29sTWVzc2FnZVRl
c3QsIFZhbHVlSXNGYWxzZVdoZW5UeXBlSXNOb3RBUHJvdG9jb2xNZXNzYWdlKSB7CisgIEVYUEVD
VF9GQUxTRShJc0FQcm90b2NvbE1lc3NhZ2U8aW50Pjo6dmFsdWUpOworICBFWFBFQ1RfRkFMU0Uo
SXNBUHJvdG9jb2xNZXNzYWdlPGNvbnN0IENvbnZlcnNpb25IZWxwZXJCYXNlPjo6dmFsdWUpOwor
fQorCisvLyBUZXN0cyB0aGF0IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsIGNvbXBpbGVzIHdoZW4g
dGhlIHR5cGUgYXJndW1lbnRzIGFyZQorLy8gZXF1YWwuCitURVNUKENvbXBpbGVBc3NlcnRUeXBl
c0VxdWFsLCBDb21waWxlc1doZW5UeXBlc0FyZUVxdWFsKSB7CisgIENvbXBpbGVBc3NlcnRUeXBl
c0VxdWFsPHZvaWQsIHZvaWQ+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCosIGlu
dCo+KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUmVtb3ZlUmVmZXJlbmNlIGRvZXMgbm90IGFmZmVj
dCBub24tcmVmZXJlbmNlIHR5cGVzLgorVEVTVChSZW1vdmVSZWZlcmVuY2VUZXN0LCBEb2VzTm90
QWZmZWN0Tm9uUmVmZXJlbmNlVHlwZSkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQs
IFJlbW92ZVJlZmVyZW5jZTxpbnQ+Ojp0eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVh
bDxjb25zdCBjaGFyLCBSZW1vdmVSZWZlcmVuY2U8Y29uc3QgY2hhcj46OnR5cGU+KCk7Cit9CisK
Ky8vIFRlc3RzIHRoYXQgUmVtb3ZlUmVmZXJlbmNlIHJlbW92ZXMgcmVmZXJlbmNlIGZyb20gcmVm
ZXJlbmNlIHR5cGVzLgorVEVTVChSZW1vdmVSZWZlcmVuY2VUZXN0LCBSZW1vdmVzUmVmZXJlbmNl
KSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCwgUmVtb3ZlUmVmZXJlbmNlPGludCY+
Ojp0eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjb25zdCBjaGFyLCBSZW1vdmVS
ZWZlcmVuY2U8Y29uc3QgY2hhciY+Ojp0eXBlPigpOworfQorCisvLyBUZXN0cyBHVEVTVF9SRU1P
VkVfUkVGRVJFTkNFXy4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3Zv
aWQgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNlKCkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVh
bDxUMSwgR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV8oVDIpPigpOworfQorCitURVNUKFJlbW92ZVJl
ZmVyZW5jZVRlc3QsIE1hY3JvVmVyc2lvbikgeworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2U8
aW50LCBpbnQ+KCk7CisgIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZTxjb25zdCBjaGFyLCBjb25z
dCBjaGFyJj4oKTsKK30KKworCisvLyBUZXN0cyB0aGF0IFJlbW92ZUNvbnN0IGRvZXMgbm90IGFm
ZmVjdCBub24tY29uc3QgdHlwZXMuCitURVNUKFJlbW92ZUNvbnN0VGVzdCwgRG9lc05vdEFmZmVj
dE5vbkNvbnN0VHlwZSkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQsIFJlbW92ZUNv
bnN0PGludD46OnR5cGU+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNoYXImLCBSZW1v
dmVDb25zdDxjaGFyJj46OnR5cGU+KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUmVtb3ZlQ29uc3Qg
cmVtb3ZlcyBjb25zdCBmcm9tIGNvbnN0IHR5cGVzLgorVEVTVChSZW1vdmVDb25zdFRlc3QsIFJl
bW92ZXNDb25zdCkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQsIFJlbW92ZUNvbnN0
PGNvbnN0IGludD46OnR5cGU+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNoYXJbMl0s
IFJlbW92ZUNvbnN0PGNvbnN0IGNoYXJbMl0+Ojp0eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlw
ZXNFcXVhbDxjaGFyWzJdWzNdLCBSZW1vdmVDb25zdDxjb25zdCBjaGFyWzJdWzNdPjo6dHlwZT4o
KTsKK30KKworLy8gVGVzdHMgR1RFU1RfUkVNT1ZFX0NPTlNUXy4KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgVGVzdEdUZXN0UmVtb3ZlQ29uc3QoKSB7CisgIENv
bXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBHVEVTVF9SRU1PVkVfQ09OU1RfKFQyKT4oKTsKK30K
KworVEVTVChSZW1vdmVDb25zdFRlc3QsIE1hY3JvVmVyc2lvbikgeworICBUZXN0R1Rlc3RSZW1v
dmVDb25zdDxpbnQsIGludD4oKTsKKyAgVGVzdEdUZXN0UmVtb3ZlQ29uc3Q8ZG91YmxlJiwgZG91
YmxlJj4oKTsKKyAgVGVzdEdUZXN0UmVtb3ZlQ29uc3Q8Y2hhciwgY29uc3QgY2hhcj4oKTsKK30K
KworLy8gVGVzdHMgR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV9BTkRfQ09OU1RfLgorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgordm9pZCBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVu
Y2VBbmRDb25zdCgpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8VDEsIEdURVNUX1JFTU9W
RV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhUMik+KCk7Cit9CisKK1RFU1QoUmVtb3ZlUmVmZXJlbmNl
VG9Db25zdFRlc3QsIFdvcmtzKSB7CisgIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0
PGludCwgaW50PigpOworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxkb3VibGUs
IGRvdWJsZSY+KCk7CisgIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0PGNoYXIsIGNv
bnN0IGNoYXI+KCk7CisgIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0PGNoYXIsIGNv
bnN0IGNoYXImPigpOworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxjb25zdCBj
aGFyKiwgY29uc3QgY2hhcio+KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQWRkUmVmZXJlbmNlIGRv
ZXMgbm90IGFmZmVjdCByZWZlcmVuY2UgdHlwZXMuCitURVNUKEFkZFJlZmVyZW5jZVRlc3QsIERv
ZXNOb3RBZmZlY3RSZWZlcmVuY2VUeXBlKSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGlu
dCYsIEFkZFJlZmVyZW5jZTxpbnQmPjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1
YWw8Y29uc3QgY2hhciYsIEFkZFJlZmVyZW5jZTxjb25zdCBjaGFyJj46OnR5cGU+KCk7Cit9CisK
Ky8vIFRlc3RzIHRoYXQgQWRkUmVmZXJlbmNlIGFkZHMgcmVmZXJlbmNlIHRvIG5vbi1yZWZlcmVu
Y2UgdHlwZXMuCitURVNUKEFkZFJlZmVyZW5jZVRlc3QsIEFkZHNSZWZlcmVuY2UpIHsKKyAgQ29t
cGlsZUFzc2VydFR5cGVzRXF1YWw8aW50JiwgQWRkUmVmZXJlbmNlPGludD46OnR5cGU+KCk7Cisg
IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNvbnN0IGNoYXImLCBBZGRSZWZlcmVuY2U8Y29uc3Qg
Y2hhcj46OnR5cGU+KCk7Cit9CisKKy8vIFRlc3RzIEdURVNUX0FERF9SRUZFUkVOQ0VfLgorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgordm9pZCBUZXN0R1Rlc3RBZGRSZWZl
cmVuY2UoKSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBHVEVTVF9BRERfUkVGRVJF
TkNFXyhUMik+KCk7Cit9CisKK1RFU1QoQWRkUmVmZXJlbmNlVGVzdCwgTWFjcm9WZXJzaW9uKSB7
CisgIFRlc3RHVGVzdEFkZFJlZmVyZW5jZTxpbnQmLCBpbnQ+KCk7CisgIFRlc3RHVGVzdEFkZFJl
ZmVyZW5jZTxjb25zdCBjaGFyJiwgY29uc3QgY2hhciY+KCk7Cit9CisKKy8vIFRlc3RzIEdURVNU
X1JFRkVSRU5DRV9UT19DT05TVF8uCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDI+Cit2b2lkIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29uc3QoKSB7CisgIENvbXBpbGVBc3NlcnRU
eXBlc0VxdWFsPFQxLCBHVEVTVF9SRUZFUkVOQ0VfVE9fQ09OU1RfKFQyKT4oKTsKK30KKworVEVT
VChHVGVzdFJlZmVyZW5jZVRvQ29uc3RUZXN0LCBXb3JrcykgeworICBUZXN0R1Rlc3RSZWZlcmVu
Y2VUb0NvbnN0PGNvbnN0IGNoYXImLCBjaGFyPigpOworICBUZXN0R1Rlc3RSZWZlcmVuY2VUb0Nv
bnN0PGNvbnN0IGludCYsIGNvbnN0IGludD4oKTsKKyAgVGVzdEdUZXN0UmVmZXJlbmNlVG9Db25z
dDxjb25zdCBkb3VibGUmLCBkb3VibGU+KCk7CisgIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29uc3Q8
Y29uc3Qgc3RkOjpzdHJpbmcmLCBjb25zdCBzdGQ6OnN0cmluZyY+KCk7Cit9CisKKy8vIFRlc3Rz
IHRoYXQgSW1wbGljaXRseUNvbnZlcnRpYmxlPFQxLCBUMj46OnZhbHVlIGlzIGEgY29tcGlsZS10
aW1lIGNvbnN0YW50LgorVEVTVChJbXBsaWNpdGx5Q29udmVydGlibGVUZXN0LCBWYWx1ZUlzQ29t
cGlsZVRpbWVDb25zdGFudCkgeworICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oKEltcGxpY2l0bHlD
b252ZXJ0aWJsZTxpbnQsIGludD46OnZhbHVlKSwgY29uc3RfdHJ1ZSk7CisgIEdURVNUX0NPTVBJ
TEVfQVNTRVJUXygoIUltcGxpY2l0bHlDb252ZXJ0aWJsZTx2b2lkKiwgaW50Kj46OnZhbHVlKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2ZhbHNlKTsKK30KKworLy8gVGVzdHMgdGhh
dCBJbXBsaWNpdGx5Q29udmVydGlibGU8VDEsIFQyPjo6dmFsdWUgaXMgdHJ1ZSB3aGVuIFQxIGNh
bgorLy8gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gVDIuCitURVNUKEltcGxpY2l0bHlDb252
ZXJ0aWJsZVRlc3QsIFZhbHVlSXNUcnVlV2hlbkNvbnZlcnRpYmxlKSB7CisgIEVYUEVDVF9UUlVF
KChJbXBsaWNpdGx5Q29udmVydGlibGU8aW50LCBkb3VibGU+Ojp2YWx1ZSkpOworICBFWFBFQ1Rf
VFJVRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPGRvdWJsZSwgaW50Pjo6dmFsdWUpKTsKKyAgRVhQ
RUNUX1RSVUUoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxpbnQqLCB2b2lkKj46OnZhbHVlKSk7Cisg
IEVYUEVDVF9UUlVFKChJbXBsaWNpdGx5Q29udmVydGlibGU8aW50KiwgY29uc3QgaW50Kj46OnZh
bHVlKSk7CisgIEVYUEVDVF9UUlVFKChJbXBsaWNpdGx5Q29udmVydGlibGU8Q29udmVyc2lvbkhl
bHBlckRlcml2ZWQmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IENvbnZlcnNpb25IZWxwZXJCYXNlJj46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChJbXBsaWNp
dGx5Q29udmVydGlibGU8Y29uc3QgQ29udmVyc2lvbkhlbHBlckJhc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVyc2lvbkhlbHBlckJhc2U+Ojp2YWx1ZSkpOwor
fQorCisvLyBUZXN0cyB0aGF0IEltcGxpY2l0bHlDb252ZXJ0aWJsZTxUMSwgVDI+Ojp2YWx1ZSBp
cyBmYWxzZSB3aGVuIFQxCisvLyBjYW5ub3QgYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gVDIu
CitURVNUKEltcGxpY2l0bHlDb252ZXJ0aWJsZVRlc3QsIFZhbHVlSXNGYWxzZVdoZW5Ob3RDb252
ZXJ0aWJsZSkgeworICBFWFBFQ1RfRkFMU0UoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxkb3VibGUs
IGludCo+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTx2
b2lkKiwgaW50Kj46OnZhbHVlKSk7CisgIEVYUEVDVF9GQUxTRSgoSW1wbGljaXRseUNvbnZlcnRp
YmxlPGNvbnN0IGludCosIGludCo+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoKEltcGxpY2l0
bHlDb252ZXJ0aWJsZTxDb252ZXJzaW9uSGVscGVyQmFzZSYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENvbnZlcnNpb25IZWxwZXJEZXJpdmVkJj46OnZhbHVlKSk7Cit9
CisKKy8vIFRlc3RzIElzQ29udGFpbmVyVGVzdC4KKworY2xhc3MgTm9uQ29udGFpbmVyIHt9Owor
CitURVNUKElzQ29udGFpbmVyVGVzdFRlc3QsIFdvcmtzRm9yTm9uQ29udGFpbmVyKSB7CisgIEVY
UEVDVF9FUShzaXplb2YoSXNOb3RDb250YWluZXIpLCBzaXplb2YoSXNDb250YWluZXJUZXN0PGlu
dD4oMCkpKTsKKyAgRVhQRUNUX0VRKHNpemVvZihJc05vdENvbnRhaW5lciksIHNpemVvZihJc0Nv
bnRhaW5lclRlc3Q8Y2hhcls1XT4oMCkpKTsKKyAgRVhQRUNUX0VRKHNpemVvZihJc05vdENvbnRh
aW5lciksIHNpemVvZihJc0NvbnRhaW5lclRlc3Q8Tm9uQ29udGFpbmVyPigwKSkpOworfQorCitU
RVNUKElzQ29udGFpbmVyVGVzdFRlc3QsIFdvcmtzRm9yQ29udGFpbmVyKSB7CisgIEVYUEVDVF9F
UShzaXplb2YoSXNDb250YWluZXIpLAorICAgICAgICAgICAgc2l6ZW9mKElzQ29udGFpbmVyVGVz
dDxzdGQ6OnZlY3Rvcjxib29sPiA+KDApKSk7CisgIEVYUEVDVF9FUShzaXplb2YoSXNDb250YWlu
ZXIpLAorICAgICAgICAgICAgc2l6ZW9mKElzQ29udGFpbmVyVGVzdDxzdGQ6Om1hcDxpbnQsIGRv
dWJsZT4gPigwKSkpOworfQorCisjaWYgR1RFU1RfTEFOR19DWFgxMQorc3RydWN0IENvbnN0T25s
eUNvbnRhaW5lcldpdGhQb2ludGVySXRlcmF0b3IgeworICB1c2luZyBjb25zdF9pdGVyYXRvciA9
IGludCo7CisgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CisgIGNvbnN0X2l0ZXJhdG9y
IGVuZCgpIGNvbnN0OworfTsKKworc3RydWN0IENvbnN0T25seUNvbnRhaW5lcldpdGhDbGFzc0l0
ZXJhdG9yIHsKKyAgc3RydWN0IGNvbnN0X2l0ZXJhdG9yIHsKKyAgICBjb25zdCBpbnQmIG9wZXJh
dG9yKigpIGNvbnN0OworICAgIGNvbnN0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKC8qIHByZS1pbmNy
ZW1lbnQgKi8pOworICB9OworICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0OworICBjb25z
dF9pdGVyYXRvciBlbmQoKSBjb25zdDsKK307CisKK1RFU1QoSXNDb250YWluZXJUZXN0VGVzdCwg
Q29uc3RPbmx5Q29udGFpbmVyKSB7CisgIEVYUEVDVF9FUShzaXplb2YoSXNDb250YWluZXIpLAor
ICAgICAgICAgICAgc2l6ZW9mKElzQ29udGFpbmVyVGVzdDxDb25zdE9ubHlDb250YWluZXJXaXRo
UG9pbnRlckl0ZXJhdG9yPigwKSkpOworICBFWFBFQ1RfRVEoc2l6ZW9mKElzQ29udGFpbmVyKSwK
KyAgICAgICAgICAgIHNpemVvZihJc0NvbnRhaW5lclRlc3Q8Q29uc3RPbmx5Q29udGFpbmVyV2l0
aENsYXNzSXRlcmF0b3I+KDApKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKwor
Ly8gVGVzdHMgSXNIYXNoVGFibGUuCitzdHJ1Y3QgQUhhc2hUYWJsZSB7CisgIHR5cGVkZWYgdm9p
ZCBoYXNoZXI7Cit9Oworc3RydWN0IE5vdFJlYWxseUFIYXNoVGFibGUgeworICB0eXBlZGVmIHZv
aWQgaGFzaGVyOworICB0eXBlZGVmIHZvaWQgcmV2ZXJzZV9pdGVyYXRvcjsKK307CitURVNUKElz
SGFzaFRhYmxlLCBCYXNpYykgeworICBFWFBFQ1RfVFJVRSh0ZXN0aW5nOjppbnRlcm5hbDo6SXNI
YXNoVGFibGU8QUhhc2hUYWJsZT46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKHRlc3Rpbmc6Omlu
dGVybmFsOjpJc0hhc2hUYWJsZTxOb3RSZWFsbHlBSGFzaFRhYmxlPjo6dmFsdWUpOworI2lmIEdU
RVNUX0xBTkdfQ1hYMTEKKyAgRVhQRUNUX0ZBTFNFKHRlc3Rpbmc6OmludGVybmFsOjpJc0hhc2hU
YWJsZTxzdGQ6OnZlY3RvcjxpbnQ+Pjo6dmFsdWUpOworICBFWFBFQ1RfVFJVRSh0ZXN0aW5nOjpp
bnRlcm5hbDo6SXNIYXNoVGFibGU8c3RkOjp1bm9yZGVyZWRfc2V0PGludD4+Ojp2YWx1ZSk7Cisj
ZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKyNpZiBHVEVTVF9IQVNfSEFTSF9TRVRfCisgIEVY
UEVDVF9UUlVFKHRlc3Rpbmc6OmludGVybmFsOjpJc0hhc2hUYWJsZTxfX2dudV9jeHg6Omhhc2hf
c2V0PGludD4+Ojp2YWx1ZSk7CisjZW5kaWYgIC8vIEdURVNUX0hBU19IQVNIX1NFVF8KK30KKwor
Ly8gVGVzdHMgQXJyYXlFcSgpLgorCitURVNUKEFycmF5RXFUZXN0LCBXb3Jrc0ZvckRlZ2VuZXJh
dGVkQXJyYXlzKSB7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoNSwgNUwpKTsKKyAgRVhQRUNUX0ZB
TFNFKEFycmF5RXEoJ2EnLCAwKSk7Cit9CisKK1RFU1QoQXJyYXlFcVRlc3QsIFdvcmtzRm9yT25l
RGltZW5zaW9uYWxBcnJheXMpIHsKKyAgLy8gTm90ZSB0aGF0IGEgYW5kIGIgYXJlIGRpc3RpbmN0
IGJ1dCBjb21wYXRpYmxlIHR5cGVzLgorICBjb25zdCBpbnQgYVtdID0geyAwLCAxIH07CisgIGxv
bmcgYltdID0geyAwLCAxIH07CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYikpOworICBFWFBF
Q1RfVFJVRShBcnJheUVxKGEsIDIsIGIpKTsKKworICBiWzBdID0gMjsKKyAgRVhQRUNUX0ZBTFNF
KEFycmF5RXEoYSwgYikpOworICBFWFBFQ1RfRkFMU0UoQXJyYXlFcShhLCAxLCBiKSk7Cit9CisK
K1RFU1QoQXJyYXlFcVRlc3QsIFdvcmtzRm9yVHdvRGltZW5zaW9uYWxBcnJheXMpIHsKKyAgY29u
c3QgY2hhciBhW11bM10gPSB7ICJoaSIsICJsbyIgfTsKKyAgY29uc3QgY2hhciBiW11bM10gPSB7
ICJoaSIsICJsbyIgfTsKKyAgY29uc3QgY2hhciBjW11bM10gPSB7ICJoaSIsICJsaSIgfTsKKwor
ICBFWFBFQ1RfVFJVRShBcnJheUVxKGEsIGIpKTsKKyAgRVhQRUNUX1RSVUUoQXJyYXlFcShhLCAy
LCBiKSk7CisKKyAgRVhQRUNUX0ZBTFNFKEFycmF5RXEoYSwgYykpOworICBFWFBFQ1RfRkFMU0Uo
QXJyYXlFcShhLCAyLCBjKSk7Cit9CisKKy8vIFRlc3RzIEFycmF5QXdhcmVGaW5kKCkuCisKK1RF
U1QoQXJyYXlBd2FyZUZpbmRUZXN0LCBXb3Jrc0Zvck9uZURpbWVuc2lvbmFsQXJyYXkpIHsKKyAg
Y29uc3QgY2hhciBhW10gPSAiaGVsbG8iOworICBFWFBFQ1RfRVEoYSArIDQsIEFycmF5QXdhcmVG
aW5kKGEsIGEgKyA1LCAnbycpKTsKKyAgRVhQRUNUX0VRKGEgKyA1LCBBcnJheUF3YXJlRmluZChh
LCBhICsgNSwgJ3gnKSk7Cit9CisKK1RFU1QoQXJyYXlBd2FyZUZpbmRUZXN0LCBXb3Jrc0ZvclR3
b0RpbWVuc2lvbmFsQXJyYXkpIHsKKyAgaW50IGFbXVsyXSA9IHsgeyAwLCAxIH0sIHsgMiwgMyB9
LCB7IDQsIDUgfSB9OworICBjb25zdCBpbnQgYlsyXSA9IHsgMiwgMyB9OworICBFWFBFQ1RfRVEo
YSArIDEsIEFycmF5QXdhcmVGaW5kKGEsIGEgKyAzLCBiKSk7CisKKyAgY29uc3QgaW50IGNbMl0g
PSB7IDYsIDcgfTsKKyAgRVhQRUNUX0VRKGEgKyAzLCBBcnJheUF3YXJlRmluZChhLCBhICsgMywg
YykpOworfQorCisvLyBUZXN0cyBDb3B5QXJyYXkoKS4KKworVEVTVChDb3B5QXJyYXlUZXN0LCBX
b3Jrc0ZvckRlZ2VuZXJhdGVkQXJyYXlzKSB7CisgIGludCBuID0gMDsKKyAgQ29weUFycmF5KCdh
JywgJm4pOworICBFWFBFQ1RfRVEoJ2EnLCBuKTsKK30KKworVEVTVChDb3B5QXJyYXlUZXN0LCBX
b3Jrc0Zvck9uZURpbWVuc2lvbmFsQXJyYXlzKSB7CisgIGNvbnN0IGNoYXIgYVszXSA9ICJoaSI7
CisgIGludCBiWzNdOworI2lmbmRlZiBfX0JPUkxBTkRDX18gIC8vIEMrK0J1aWxkZXIgY2Fubm90
IGNvbXBpbGUgc29tZSBhcnJheSBzaXplIGRlZHVjdGlvbnMuCisgIENvcHlBcnJheShhLCAmYik7
CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYikpOworI2VuZGlmCisKKyAgaW50IGNbM107Cisg
IENvcHlBcnJheShhLCAzLCBjKTsKKyAgRVhQRUNUX1RSVUUoQXJyYXlFcShhLCBjKSk7Cit9CisK
K1RFU1QoQ29weUFycmF5VGVzdCwgV29ya3NGb3JUd29EaW1lbnNpb25hbEFycmF5cykgeworICBj
b25zdCBpbnQgYVsyXVszXSA9IHsgeyAwLCAxLCAyIH0sIHsgMywgNCwgNSB9IH07CisgIGludCBi
WzJdWzNdOworI2lmbmRlZiBfX0JPUkxBTkRDX18gIC8vIEMrK0J1aWxkZXIgY2Fubm90IGNvbXBp
bGUgc29tZSBhcnJheSBzaXplIGRlZHVjdGlvbnMuCisgIENvcHlBcnJheShhLCAmYik7CisgIEVY
UEVDVF9UUlVFKEFycmF5RXEoYSwgYikpOworI2VuZGlmCisKKyAgaW50IGNbMl1bM107CisgIENv
cHlBcnJheShhLCAyLCBjKTsKKyAgRVhQRUNUX1RSVUUoQXJyYXlFcShhLCBjKSk7Cit9CisKKy8v
IFRlc3RzIE5hdGl2ZUFycmF5LgorCitURVNUKE5hdGl2ZUFycmF5VGVzdCwgQ29uc3RydWN0b3JG
cm9tQXJyYXlXb3JrcykgeworICBjb25zdCBpbnQgYVszXSA9IHsgMCwgMSwgMiB9OworICBOYXRp
dmVBcnJheTxpbnQ+IG5hKGEsIDMsIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSk7CisgIEVY
UEVDVF9FUSgzVSwgbmEuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKGEsIG5hLmJlZ2luKCkpOworfQor
CitURVNUKE5hdGl2ZUFycmF5VGVzdCwgQ3JlYXRlc0FuZERlbGV0ZXNDb3B5T2ZBcnJheVdoZW5B
c2tlZFRvKSB7CisgIHR5cGVkZWYgaW50IEFycmF5WzJdOworICBBcnJheSogYSA9IG5ldyBBcnJh
eVsxXTsKKyAgKCphKVswXSA9IDA7CisgICgqYSlbMV0gPSAxOworICBOYXRpdmVBcnJheTxpbnQ+
IG5hKCphLCAyLCBSZWxhdGlvblRvU291cmNlQ29weSgpKTsKKyAgRVhQRUNUX05FKCphLCBuYS5i
ZWdpbigpKTsKKyAgZGVsZXRlW10gYTsKKyAgRVhQRUNUX0VRKDAsIG5hLmJlZ2luKClbMF0pOwor
ICBFWFBFQ1RfRVEoMSwgbmEuYmVnaW4oKVsxXSk7CisKKyAgLy8gV2UgcmVseSBvbiB0aGUgaGVh
cCBjaGVja2VyIHRvIHZlcmlmeSB0aGF0IG5hIGRlbGV0ZXMgdGhlIGNvcHkgb2YKKyAgLy8gYXJy
YXkuCit9CisKK1RFU1QoTmF0aXZlQXJyYXlUZXN0LCBUeXBlTWVtYmVyc0FyZUNvcnJlY3QpIHsK
KyAgU3RhdGljQXNzZXJ0VHlwZUVxPGNoYXIsIE5hdGl2ZUFycmF5PGNoYXI+Ojp2YWx1ZV90eXBl
PigpOworICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50WzJdLCBOYXRpdmVBcnJheTxpbnRbMl0+Ojp2
YWx1ZV90eXBlPigpOworCisgIFN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCBjaGFyKiwgTmF0aXZl
QXJyYXk8Y2hhcj46OmNvbnN0X2l0ZXJhdG9yPigpOworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y29u
c3QgYm9vbCgqKVsyXSwgTmF0aXZlQXJyYXk8Ym9vbFsyXT46OmNvbnN0X2l0ZXJhdG9yPigpOwor
fQorCitURVNUKE5hdGl2ZUFycmF5VGVzdCwgTWV0aG9kc1dvcmspIHsKKyAgY29uc3QgaW50IGFb
M10gPSB7IDAsIDEsIDIgfTsKKyAgTmF0aXZlQXJyYXk8aW50PiBuYShhLCAzLCBSZWxhdGlvblRv
U291cmNlQ29weSgpKTsKKyAgQVNTRVJUX0VRKDNVLCBuYS5zaXplKCkpOworICBFWFBFQ1RfRVEo
MywgbmEuZW5kKCkgLSBuYS5iZWdpbigpKTsKKworICBOYXRpdmVBcnJheTxpbnQ+Ojpjb25zdF9p
dGVyYXRvciBpdCA9IG5hLmJlZ2luKCk7CisgIEVYUEVDVF9FUSgwLCAqaXQpOworICArK2l0Owor
ICBFWFBFQ1RfRVEoMSwgKml0KTsKKyAgaXQrKzsKKyAgRVhQRUNUX0VRKDIsICppdCk7CisgICsr
aXQ7CisgIEVYUEVDVF9FUShuYS5lbmQoKSwgaXQpOworCisgIEVYUEVDVF9UUlVFKG5hID09IG5h
KTsKKworICBOYXRpdmVBcnJheTxpbnQ+IG5hMihhLCAzLCBSZWxhdGlvblRvU291cmNlUmVmZXJl
bmNlKCkpOworICBFWFBFQ1RfVFJVRShuYSA9PSBuYTIpOworCisgIGNvbnN0IGludCBiMVszXSA9
IHsgMCwgMSwgMSB9OworICBjb25zdCBpbnQgYjJbNF0gPSB7IDAsIDEsIDIsIDMgfTsKKyAgRVhQ
RUNUX0ZBTFNFKG5hID09IE5hdGl2ZUFycmF5PGludD4oYjEsIDMsIFJlbGF0aW9uVG9Tb3VyY2VS
ZWZlcmVuY2UoKSkpOworICBFWFBFQ1RfRkFMU0UobmEgPT0gTmF0aXZlQXJyYXk8aW50PihiMiwg
NCwgUmVsYXRpb25Ub1NvdXJjZUNvcHkoKSkpOworfQorCitURVNUKE5hdGl2ZUFycmF5VGVzdCwg
V29ya3NGb3JUd29EaW1lbnNpb25hbEFycmF5KSB7CisgIGNvbnN0IGNoYXIgYVsyXVszXSA9IHsg
ImhpIiwgImxvIiB9OworICBOYXRpdmVBcnJheTxjaGFyWzNdPiBuYShhLCAyLCBSZWxhdGlvblRv
U291cmNlUmVmZXJlbmNlKCkpOworICBBU1NFUlRfRVEoMlUsIG5hLnNpemUoKSk7CisgIEVYUEVD
VF9FUShhLCBuYS5iZWdpbigpKTsKK30KKworLy8gVGVzdHMgU2tpcFByZWZpeCgpLgorCitURVNU
KFNraXBQcmVmaXhUZXN0LCBTa2lwc1doZW5QcmVmaXhNYXRjaGVzKSB7CisgIGNvbnN0IGNoYXIq
IGNvbnN0IHN0ciA9ICJoZWxsbyI7CisKKyAgY29uc3QgY2hhciogcCA9IHN0cjsKKyAgRVhQRUNU
X1RSVUUoU2tpcFByZWZpeCgiIiwgJnApKTsKKyAgRVhQRUNUX0VRKHN0ciwgcCk7CisKKyAgcCA9
IHN0cjsKKyAgRVhQRUNUX1RSVUUoU2tpcFByZWZpeCgiaGVsbCIsICZwKSk7CisgIEVYUEVDVF9F
UShzdHIgKyA0LCBwKTsKK30KKworVEVTVChTa2lwUHJlZml4VGVzdCwgRG9lc05vdFNraXBXaGVu
UHJlZml4RG9lc05vdE1hdGNoKSB7CisgIGNvbnN0IGNoYXIqIGNvbnN0IHN0ciA9ICJ3b3JsZCI7
CisKKyAgY29uc3QgY2hhciogcCA9IHN0cjsKKyAgRVhQRUNUX0ZBTFNFKFNraXBQcmVmaXgoIlci
LCAmcCkpOworICBFWFBFQ1RfRVEoc3RyLCBwKTsKKworICBwID0gc3RyOworICBFWFBFQ1RfRkFM
U0UoU2tpcFByZWZpeCgid29ybGQhIiwgJnApKTsKKyAgRVhQRUNUX0VRKHN0ciwgcCk7Cit9CisK
Ky8vIFRlc3RzIGFkX2hvY190ZXN0X3Jlc3VsdCgpLgorCitjbGFzcyBBZEhvY1Rlc3RSZXN1bHRU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgc3RhdGljIHZvaWQg
U2V0VXBUZXN0Q2FzZSgpIHsKKyAgICBGQUlMKCkgPDwgIkEgZmFpbHVyZSBoYXBwZW5lZCBpbnNp
ZGUgU2V0VXBUZXN0Q2FzZSgpLiI7CisgIH0KK307CisKK1RFU1RfRihBZEhvY1Rlc3RSZXN1bHRU
ZXN0LCBBZEhvY1Rlc3RSZXN1bHRGb3JUZXN0Q2FzZVNob3dzRmFpbHVyZSkgeworICBjb25zdCB0
ZXN0aW5nOjpUZXN0UmVzdWx0JiB0ZXN0X3Jlc3VsdCA9IHRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC0+Y3VycmVudF90ZXN0X2Nhc2UoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtPmFkX2hvY190ZXN0X3Jlc3VsdCgpOworICBFWFBFQ1RfVFJVRSh0ZXN0
X3Jlc3VsdC5GYWlsZWQoKSk7Cit9CisKK1RFU1RfRihBZEhvY1Rlc3RSZXN1bHRUZXN0LCBBZEhv
Y1Rlc3RSZXN1bHRUZXN0Rm9yVW5pdFRlc3REb2VzTm90U2hvd0ZhaWx1cmUpIHsKKyAgY29uc3Qg
dGVzdGluZzo6VGVzdFJlc3VsdCYgdGVzdF9yZXN1bHQgPQorICAgICAgdGVzdGluZzo6VW5pdFRl
c3Q6OkdldEluc3RhbmNlKCktPmFkX2hvY190ZXN0X3Jlc3VsdCgpOworICBFWFBFQ1RfRkFMU0Uo
dGVzdF9yZXN1bHQuRmFpbGVkKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMV90ZXN0Xy5jYwppbmRleCA2NjRiYWFkMmFi
ODczYmEzODgxOTNhNjVkMmI3OWZkODNkYjJlNzc1Li5hMzhlYmFjODM5ZjdiNGZjZjcxMDkzNTFj
NGQzZmVjZGUyNzE1YjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X3htbF9vdXRmaWxlMV90ZXN0Xy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMV90ZXN0Xy5jYwpAQCAtMjcsMTIgKzI3LDEwIEBACiAv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQXV0aG9yOiBrZWl0aC5yYXlA
Z21haWwuY29tIChLZWl0aCBSYXkpCi0vLwogLy8gZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfIHdy
aXRlcyBzb21lIHhtbCB2aWEgVGVzdFByb3BlcnR5IHVzZWQgYnkKIC8vIGd0ZXN0X3htbF9vdXRm
aWxlc190ZXN0LnB5CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCiAKIGNsYXNzIFByb3BlcnR5T25lIDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewog
IHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfeG1sX291dGZpbGUyX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8uY2MKaW5kZXggMzQxMWEzZDM4Yjg2MTA0YzZhNjBjNjBk
MTEzMWNiNjZhYTU0YzE5Mi4uYWZhZjE1YTVkYzMyMzE1ZDUxYWM3YTBhNTU1ZjgzY2FiNDFlZjc0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0
ZmlsZTJfdGVzdF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94
bWxfb3V0ZmlsZTJfdGVzdF8uY2MKQEAgLTI3LDEyICsyNywxMCBAQAogLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogLy8KLS8vIEF1dGhvcjoga2VpdGgucmF5QGdtYWlsLmNvbSAoS2Vp
dGggUmF5KQotLy8KIC8vIGd0ZXN0X3htbF9vdXRmaWxlMl90ZXN0XyB3cml0ZXMgc29tZSB4bWwg
dmlhIFRlc3RQcm9wZXJ0eSB1c2VkIGJ5CiAvLyBndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weQog
Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiBj
bGFzcyBQcm9wZXJ0eVR3byA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxl
c190ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0Zmls
ZXNfdGVzdC5weQppbmRleCAwZmU5NDdmMDg0YzhmNTZmNGFkZjVkMGM5ZmEwMjZjZTI5OTc1ZDJj
Li4yYzAzMWZmOGRiYTUxMmMyZTA0ZTI3MDUzNGUyOWZjZWJlODg2Y2Y5IDEwMDc1NQotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5Cisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3Qu
cHkKQEAgLTMxLDMxICszMSwzOSBAQAogCiAiIiJVbml0IHRlc3QgZm9yIHRoZSBndGVzdF94bWxf
b3V0cHV0IG1vZHVsZS4iIiIKIAotX19hdXRob3JfXyA9ICJrZWl0aC5yYXlAZ21haWwuY29tIChL
ZWl0aCBSYXkpIgotCiBpbXBvcnQgb3MKIGZyb20geG1sLmRvbSBpbXBvcnQgbWluaWRvbSwgTm9k
ZQotCiBpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwogaW1wb3J0IGd0ZXN0X3htbF90ZXN0X3V0aWxz
CiAKLQogR1RFU1RfT1VUUFVUX1NVQkRJUiA9ICJ4bWxfb3V0ZmlsZXMiCiBHVEVTVF9PVVRQVVRf
MV9URVNUID0gImd0ZXN0X3htbF9vdXRmaWxlMV90ZXN0XyIKIEdURVNUX09VVFBVVF8yX1RFU1Qg
PSAiZ3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfIgogCiBFWFBFQ1RFRF9YTUxfMSA9ICIiIjw/eG1s
IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08dGVzdHN1aXRlcyB0ZXN0cz0iMSIg
ZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiIG5hbWU9IkFsbFRl
c3RzIj4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVy
cm9ycz0iMCIgdGltZT0iKiIgdGltZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0cyI+CiAgIDx0ZXN0
c3VpdGUgbmFtZT0iUHJvcGVydHlPbmUiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9
IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IlRlc3RTb21lUHJv
cGVydGllcyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlPbmUiIFNl
dFVwUHJvcD0iMSIgVGVzdFNvbWVQcm9wZXJ0eT0iMSIgVGVhckRvd25Qcm9wPSIxIiAvPgorICAg
IDx0ZXN0Y2FzZSBuYW1lPSJUZXN0U29tZVByb3BlcnRpZXMiIHN0YXR1cz0icnVuIiB0aW1lPSIq
IiBjbGFzc25hbWU9IlByb3BlcnR5T25lIj4KKyAgICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICA8
cHJvcGVydHkgbmFtZT0iU2V0VXBQcm9wIiB2YWx1ZT0iMSIvPgorICAgICAgICA8cHJvcGVydHkg
bmFtZT0iVGVzdFNvbWVQcm9wZXJ0eSIgdmFsdWU9IjEiLz4KKyAgICAgICAgPHByb3BlcnR5IG5h
bWU9IlRlYXJEb3duUHJvcCIgdmFsdWU9IjEiLz4KKyAgICAgIDwvcHJvcGVydGllcz4KKyAgICA8
L3Rlc3RjYXNlPgogICA8L3Rlc3RzdWl0ZT4KIDwvdGVzdHN1aXRlcz4KICIiIgogCiBFWFBFQ1RF
RF9YTUxfMiA9ICIiIjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08dGVz
dHN1aXRlcyB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRp
bWU9IioiIG5hbWU9IkFsbFRlc3RzIj4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIxIiBmYWlsdXJlcz0i
MCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIgdGltZXN0YW1wPSIqIiBuYW1lPSJB
bGxUZXN0cyI+CiAgIDx0ZXN0c3VpdGUgbmFtZT0iUHJvcGVydHlUd28iIHRlc3RzPSIxIiBmYWls
dXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+Ci0gICAgPHRlc3RjYXNl
IG5hbWU9IlRlc3RTb21lUHJvcGVydGllcyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFt
ZT0iUHJvcGVydHlUd28iIFNldFVwUHJvcD0iMiIgVGVzdFNvbWVQcm9wZXJ0eT0iMiIgVGVhckRv
d25Qcm9wPSIyIiAvPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJUZXN0U29tZVByb3BlcnRpZXMiIHN0
YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlByb3BlcnR5VHdvIj4KKyAgICAgIDxwcm9w
ZXJ0aWVzPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0iU2V0VXBQcm9wIiB2YWx1ZT0iMiIvPgor
ICAgICAgICA8cHJvcGVydHkgbmFtZT0iVGVzdFNvbWVQcm9wZXJ0eSIgdmFsdWU9IjIiLz4KKyAg
ICAgICAgPHByb3BlcnR5IG5hbWU9IlRlYXJEb3duUHJvcCIgdmFsdWU9IjIiLz4KKyAgICAgIDwv
cHJvcGVydGllcz4KKyAgICA8L3Rlc3RjYXNlPgogICA8L3Rlc3RzdWl0ZT4KIDwvdGVzdHN1aXRl
cz4KICIiIgpAQCAtMTAzLDExICsxMTEsMTEgQEAgY2xhc3MgR1Rlc3RYTUxPdXRGaWxlc1Rlc3Qo
Z3Rlc3RfeG1sX3Rlc3RfdXRpbHMuR1Rlc3RYTUxUZXN0Q2FzZSk6CiAgICAgc2VsZi5hc3NlcnRf
KHAuZXhpdGVkKQogICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIHAuZXhpdF9jb2RlKQogCi0gICAg
IyBUT0RPKHdhbkBnb29nbGUuY29tKTogbGlidG9vbCBjYXVzZXMgdGhlIGJ1aWx0IHRlc3QgYmlu
YXJ5IHRvIGJlCisgICAgIyBGSVhNRTogbGlidG9vbCBjYXVzZXMgdGhlIGJ1aWx0IHRlc3QgYmlu
YXJ5IHRvIGJlCiAgICAgIyAgIG5hbWVkIGx0LWd0ZXN0X3htbF9vdXRmaWxlc190ZXN0XyBpbnN0
ZWFkIG9mCi0gICAgIyAgIGd0ZXN0X3htbF9vdXRmaWxlc190ZXN0Xy4gIFRvIGFjY291bnQgZm9y
IHRoaXMgcG9zc2liaWxsaXR5LCB3ZQorICAgICMgICBndGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8u
ICBUbyBhY2NvdW50IGZvciB0aGlzIHBvc3NpYmlsaXR5LCB3ZQogICAgICMgICBhbGxvdyBib3Ro
IG5hbWVzIGluIHRoZSBmb2xsb3dpbmcgY29kZS4gIFdlIHNob3VsZCByZW1vdmUgdGhpcwotICAg
ICMgICBoYWNrIHdoZW4gQ2hhbmRsZXIgQ2FycnV0aCdzIGxpYnRvb2wgcmVwbGFjZW1lbnQgdG9v
bCBpcyByZWFkeS4KKyAgICAjICAgd2hlbiBsaWJ0b29sIHJlcGxhY2VtZW50IHRvb2wgaXMgcmVh
ZHkuCiAgICAgb3V0cHV0X2ZpbGVfbmFtZTEgPSB0ZXN0X25hbWUgKyAiLnhtbCIKICAgICBvdXRw
dXRfZmlsZTEgPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGlyXywgb3V0cHV0X2ZpbGVfbmFt
ZTEpCiAgICAgb3V0cHV0X2ZpbGVfbmFtZTIgPSAnbHQtJyArIG91dHB1dF9maWxlX25hbWUxCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRf
dW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3QucHkKaW5kZXggNmQ0NDkyOWNhY2EwM2VjNmZhZTQ0NzFlZDFiYTFkNDE2YTVk
ZmNlMC4uZmFlZGQ0ZTZjZTcyZGFiZWY3ODZhMzEyZWY0YWVjYTVjNWQyOWJmYSAxMDA3NTUKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0
LnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91
bml0dGVzdC5weQpAQCAtMzEsNjIgKzMxLDc2IEBACiAKICIiIlVuaXQgdGVzdCBmb3IgdGhlIGd0
ZXN0X3htbF9vdXRwdXQgbW9kdWxlIiIiCiAKLV9fYXV0aG9yX18gPSAnZWVmYWNtQGdtYWlsLmNv
bSAoU2VhbiBNY2FmZWUpJwotCitpbXBvcnQgZGF0ZXRpbWUKIGltcG9ydCBlcnJubwogaW1wb3J0
IG9zCitpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGZyb20geG1sLmRvbSBpbXBvcnQgbWluaWRvbSwg
Tm9kZQogCiBpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwogaW1wb3J0IGd0ZXN0X3htbF90ZXN0X3V0
aWxzCiAKK0dURVNUX0ZJTFRFUl9GTEFHID0gJy0tZ3Rlc3RfZmlsdGVyJworR1RFU1RfTElTVF9U
RVNUU19GTEFHID0gJy0tZ3Rlc3RfbGlzdF90ZXN0cycKK0dURVNUX09VVFBVVF9GTEFHID0gJy0t
Z3Rlc3Rfb3V0cHV0JworR1RFU1RfREVGQVVMVF9PVVRQVVRfRklMRSA9ICd0ZXN0X2RldGFpbC54
bWwnCitHVEVTVF9QUk9HUkFNX05BTUUgPSAnZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8nCisK
KyMgVGhlIGZsYWcgaW5kaWNhdGluZyBzdGFja3RyYWNlcyBhcmUgbm90IHN1cHBvcnRlZAorTk9f
U1RBQ0tUUkFDRV9TVVBQT1JUX0ZMQUcgPSAnLS1ub19zdGFja3RyYWNlX3N1cHBvcnQnCiAKLUdU
RVNUX09VVFBVVF9GTEFHICAgICAgICAgPSAiLS1ndGVzdF9vdXRwdXQiCi1HVEVTVF9ERUZBVUxU
X09VVFBVVF9GSUxFID0gInRlc3RfZGV0YWlsLnhtbCIKLUdURVNUX1BST0dSQU1fTkFNRSA9ICJn
dGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0XyIKKyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBm
b3IgdGVzdCBzaGFyZGluZy4KK1RPVEFMX1NIQVJEU19FTlZfVkFSID0gJ0dURVNUX1RPVEFMX1NI
QVJEUycKK1NIQVJEX0lOREVYX0VOVl9WQVIgPSAnR1RFU1RfU0hBUkRfSU5ERVgnCitTSEFSRF9T
VEFUVVNfRklMRV9FTlZfVkFSID0gJ0dURVNUX1NIQVJEX1NUQVRVU19GSUxFJwogCi1TVVBQT1JU
U19TVEFDS19UUkFDRVMgPSBGYWxzZQorU1VQUE9SVFNfU1RBQ0tfVFJBQ0VTID0gTk9fU1RBQ0tU
UkFDRV9TVVBQT1JUX0ZMQUcgbm90IGluIHN5cy5hcmd2CiAKIGlmIFNVUFBPUlRTX1NUQUNLX1RS
QUNFUzoKLSAgU1RBQ0tfVFJBQ0VfVEVNUExBVEUgPSAiXG5TdGFjayB0cmFjZTpcbioiCisgIFNU
QUNLX1RSQUNFX1RFTVBMQVRFID0gJ1xuU3RhY2sgdHJhY2U6XG4qJwogZWxzZToKLSAgU1RBQ0tf
VFJBQ0VfVEVNUExBVEUgPSAiIgorICBTVEFDS19UUkFDRV9URU1QTEFURSA9ICcnCisgICMgdW5p
dHRlc3QubWFpbigpIGNhbid0IGhhbmRsZSB1bmtub3duIGZsYWdzCisgIHN5cy5hcmd2LnJlbW92
ZShOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRykKIAogRVhQRUNURURfTk9OX0VNUFRZX1hNTCA9
ICIiIjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08dGVzdHN1aXRlcyB0
ZXN0cz0iMTUiIGZhaWx1cmVzPSI0IiBkaXNhYmxlZD0iMiIgZXJyb3JzPSIwIiB0aW1lPSIqIiBu
YW1lPSJBbGxUZXN0cyI+Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMjMiIGZhaWx1cmVzPSI0IiBkaXNh
YmxlZD0iMiIgZXJyb3JzPSIwIiB0aW1lPSIqIiB0aW1lc3RhbXA9IioiIG5hbWU9IkFsbFRlc3Rz
IiBhZF9ob2NfcHJvcGVydHk9IjQyIj4KICAgPHRlc3RzdWl0ZSBuYW1lPSJTdWNjZXNzZnVsVGVz
dCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIq
Ij4KICAgICA8dGVzdGNhc2UgbmFtZT0iU3VjY2VlZHMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBj
bGFzc25hbWU9IlN1Y2Nlc3NmdWxUZXN0Ii8+CiAgIDwvdGVzdHN1aXRlPgogICA8dGVzdHN1aXRl
IG5hbWU9IkZhaWxlZFRlc3QiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMSIgZGlzYWJsZWQ9IjAiIGVy
cm9ycz0iMCIgdGltZT0iKiI+CiAgICAgPHRlc3RjYXNlIG5hbWU9IkZhaWxzIiBzdGF0dXM9InJ1
biIgdGltZT0iKiIgY2xhc3NuYW1lPSJGYWlsZWRUZXN0Ij4KLSAgICAgIDxmYWlsdXJlIG1lc3Nh
Z2U9IlZhbHVlIG9mOiAyJiN4MEE7RXhwZWN0ZWQ6IDEiIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3Rf
eG1sX291dHB1dF91bml0dGVzdF8uY2M6KgotVmFsdWUgb2Y6IDIKLUV4cGVjdGVkOiAxJShzdGFj
aylzXV0+PC9mYWlsdXJlPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iZ3Rlc3RfeG1sX291dHB1
dF91bml0dGVzdF8uY2M6KiYjeDBBO0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczom
I3gwQTsgIDEmI3gwQTsgIDIiIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0
dGVzdF8uY2M6KgorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxCisgIDIl
KHN0YWNrKXNdXT48L2ZhaWx1cmU+CiAgICAgPC90ZXN0Y2FzZT4KICAgPC90ZXN0c3VpdGU+CiAg
IDx0ZXN0c3VpdGUgbmFtZT0iTWl4ZWRSZXN1bHRUZXN0IiB0ZXN0cz0iMyIgZmFpbHVyZXM9IjEi
IGRpc2FibGVkPSIxIiBlcnJvcnM9IjAiIHRpbWU9IioiPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJT
dWNjZWVkcyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTWl4ZWRSZXN1bHRUZXN0
Ii8+CiAgICAgPHRlc3RjYXNlIG5hbWU9IkZhaWxzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xh
c3NuYW1lPSJNaXhlZFJlc3VsdFRlc3QiPgotICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUg
b2Y6IDImI3gwQTtFeHBlY3RlZDogMSIgdHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0
X3VuaXR0ZXN0Xy5jYzoqCi1WYWx1ZSBvZjogMgotRXhwZWN0ZWQ6IDElKHN0YWNrKXNdXT48L2Zh
aWx1cmU+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogMyYjeDBBO0V4cGVjdGVk
OiAyIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioKLVZh
bHVlIG9mOiAzCi1FeHBlY3RlZDogMiUoc3RhY2spc11dPjwvZmFpbHVyZT4KKyAgICAgIDxmYWls
dXJlIG1lc3NhZ2U9Imd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOiomI3gwQTtFeHBlY3Rl
ZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6JiN4MEE7ICAxJiN4MEE7ICAyIiB0eXBlPSIiPjwh
W0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioKK0V4cGVjdGVkIGVxdWFsaXR5
IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICAyJShzdGFjaylzXV0+PC9mYWlsdXJlPgorICAgICAg
PGZhaWx1cmUgbWVzc2FnZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBBO0V4
cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczomI3gwQTsgIDImI3gwQTsgIDMiIHR5cGU9
IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgorRXhwZWN0ZWQgZXF1
YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAyCisgIDMlKHN0YWNrKXNdXT48L2ZhaWx1cmU+CiAg
ICAgPC90ZXN0Y2FzZT4KICAgICA8dGVzdGNhc2UgbmFtZT0iRElTQUJMRURfdGVzdCIgc3RhdHVz
PSJub3RydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTWl4ZWRSZXN1bHRUZXN0Ii8+CiAgIDwvdGVz
dHN1aXRlPgogICA8dGVzdHN1aXRlIG5hbWU9IlhtbFF1b3RpbmdUZXN0IiB0ZXN0cz0iMSIgZmFp
bHVyZXM9IjEiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgogICAgIDx0ZXN0Y2Fz
ZSBuYW1lPSJPdXRwdXRzQ0RhdGEiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ilht
bFF1b3RpbmdUZXN0Ij4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IkZhaWxlZCYjeDBBO1hNTCBv
dXRwdXQ6ICZsdDs/eG1sIGVuY29kaW5nPSZxdW90O3V0Zi04JnF1b3Q7Jmd0OyZsdDt0b3AmZ3Q7
Jmx0OyFbQ0RBVEFbY2RhdGEgdGV4dF1dJmd0OyZsdDsvdG9wJmd0OyIgdHlwZT0iIj48IVtDREFU
QVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCisgICAgICA8ZmFpbHVyZSBtZXNzYWdl
PSJndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqJiN4MEE7RmFpbGVkJiN4MEE7WE1MIG91
dHB1dDogJmx0Oz94bWwgZW5jb2Rpbmc9JnF1b3Q7dXRmLTgmcXVvdDsmZ3Q7Jmx0O3RvcCZndDsm
bHQ7IVtDREFUQVtjZGF0YSB0ZXh0XV0mZ3Q7Jmx0Oy90b3AmZ3Q7IiB0eXBlPSIiPjwhW0NEQVRB
W2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioKIEZhaWxlZAogWE1MIG91dHB1dDogPD94
bWwgZW5jb2Rpbmc9InV0Zi04Ij48dG9wPjwhW0NEQVRBW2NkYXRhIHRleHRdXT5dXSZndDs8IVtD
REFUQVs8L3RvcD4lKHN0YWNrKXNdXT48L2ZhaWx1cmU+CiAgICAgPC90ZXN0Y2FzZT4KICAgPC90
ZXN0c3VpdGU+CiAgIDx0ZXN0c3VpdGUgbmFtZT0iSW52YWxpZENoYXJhY3RlcnNUZXN0IiB0ZXN0
cz0iMSIgZmFpbHVyZXM9IjEiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgogICAg
IDx0ZXN0Y2FzZSBuYW1lPSJJbnZhbGlkQ2hhcmFjdGVyc0luTWVzc2FnZSIgc3RhdHVzPSJydW4i
IHRpbWU9IioiIGNsYXNzbmFtZT0iSW52YWxpZENoYXJhY3RlcnNUZXN0Ij4KLSAgICAgIDxmYWls
dXJlIG1lc3NhZ2U9IkZhaWxlZCYjeDBBO0ludmFsaWQgY2hhcmFjdGVycyBpbiBicmFja2V0cyBb
XSIgdHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCisgICAg
ICA8ZmFpbHVyZSBtZXNzYWdlPSJndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqJiN4MEE7
RmFpbGVkJiN4MEE7SW52YWxpZCBjaGFyYWN0ZXJzIGluIGJyYWNrZXRzIFtdIiB0eXBlPSIiPjwh
W0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioKIEZhaWxlZAogSW52YWxpZCBj
aGFyYWN0ZXJzIGluIGJyYWNrZXRzIFtdJShzdGFjaylzXV0+PC9mYWlsdXJlPgogICAgIDwvdGVz
dGNhc2U+CkBAIC05NCw0NSArMTA4LDE1MiBAQCBJbnZhbGlkIGNoYXJhY3RlcnMgaW4gYnJhY2tl
dHMgW10lKHN0YWNrKXNdXT48L2ZhaWx1cmU+CiAgIDx0ZXN0c3VpdGUgbmFtZT0iRGlzYWJsZWRU
ZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIxIiBlcnJvcnM9IjAiIHRpbWU9
IioiPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJESVNBQkxFRF90ZXN0X25vdF9ydW4iIHN0YXR1cz0i
bm90cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IkRpc2FibGVkVGVzdCIvPgogICA8L3Rlc3RzdWl0
ZT4KLSAgPHRlc3RzdWl0ZSBuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiIHRlc3RzPSI0IiBm
YWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+Ci0gICAgPHRlc3Rj
YXNlIG5hbWU9Ik9uZVByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQ
cm9wZXJ0eVJlY29yZGluZ1Rlc3QiIGtleV8xPSIxIi8+Ci0gICAgPHRlc3RjYXNlIG5hbWU9Iklu
dFZhbHVlZFByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0
eVJlY29yZGluZ1Rlc3QiIGtleV9pbnQ9IjEiLz4KLSAgICA8dGVzdGNhc2UgbmFtZT0iVGhyZWVQ
cm9wZXJ0aWVzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29y
ZGluZ1Rlc3QiIGtleV8xPSIxIiBrZXlfMj0iMiIga2V5XzM9IjMiLz4KLSAgICA8dGVzdGNhc2Ug
bmFtZT0iVHdvVmFsdWVzRm9yT25lS2V5VXNlc0xhc3RWYWx1ZSIgc3RhdHVzPSJydW4iIHRpbWU9
IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0IiBrZXlfMT0iMiIvPgorICA8dGVz
dHN1aXRlIG5hbWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCIgdGVzdHM9IjQiIGZhaWx1cmVzPSIw
IiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiBTZXRVcFRlc3RDYXNlPSJ5ZXMiIFRl
YXJEb3duVGVzdENhc2U9ImF5ZSI+CisgICAgPHRlc3RjYXNlIG5hbWU9Ik9uZVByb3BlcnR5IiBz
dGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiPgor
ICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJrZXlfMSIgdmFsdWU9
IjEiLz4KKyAgICAgIDwvcHJvcGVydGllcz4KKyAgICA8L3Rlc3RjYXNlPgorICAgIDx0ZXN0Y2Fz
ZSBuYW1lPSJJbnRWYWx1ZWRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFt
ZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0Ij4KKyAgICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICA8
cHJvcGVydHkgbmFtZT0ia2V5X2ludCIgdmFsdWU9IjEiLz4KKyAgICAgIDwvcHJvcGVydGllcz4K
KyAgICA8L3Rlc3RjYXNlPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJUaHJlZVByb3BlcnRpZXMiIHN0
YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCI+Cisg
ICAgICA8cHJvcGVydGllcz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImtleV8xIiB2YWx1ZT0i
MSIvPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ia2V5XzIiIHZhbHVlPSIyIi8+CisgICAgICAg
IDxwcm9wZXJ0eSBuYW1lPSJrZXlfMyIgdmFsdWU9IjMiLz4KKyAgICAgIDwvcHJvcGVydGllcz4K
KyAgICA8L3Rlc3RjYXNlPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJUd29WYWx1ZXNGb3JPbmVLZXlV
c2VzTGFzdFZhbHVlIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJl
Y29yZGluZ1Rlc3QiPgorICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1l
PSJrZXlfMSIgdmFsdWU9IjIiLz4KKyAgICAgIDwvcHJvcGVydGllcz4KKyAgICA8L3Rlc3RjYXNl
PgogICA8L3Rlc3RzdWl0ZT4KICAgPHRlc3RzdWl0ZSBuYW1lPSJOb0ZpeHR1cmVUZXN0IiB0ZXN0
cz0iMyIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgotICAg
ICA8dGVzdGNhc2UgbmFtZT0iUmVjb3JkUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBj
bGFzc25hbWU9Ik5vRml4dHVyZVRlc3QiIGtleT0iMSIvPgotICAgICA8dGVzdGNhc2UgbmFtZT0i
RXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkSW50VmFsdWVkUHJvcGVydHkiIHN0YXR1cz0i
cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ik5vRml4dHVyZVRlc3QiIGtleV9mb3JfdXRpbGl0eV9p
bnQ9IjEiLz4KLSAgICAgPHRlc3RjYXNlIG5hbWU9IkV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1Jl
Y29yZFN0cmluZ1ZhbHVlZFByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1l
PSJOb0ZpeHR1cmVUZXN0IiBrZXlfZm9yX3V0aWxpdHlfc3RyaW5nPSIxIi8+CisgICAgIDx0ZXN0
Y2FzZSBuYW1lPSJSZWNvcmRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFt
ZT0iTm9GaXh0dXJlVGVzdCI+CisgICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgICA8cHJvcGVy
dHkgbmFtZT0ia2V5IiB2YWx1ZT0iMSIvPgorICAgICAgIDwvcHJvcGVydGllcz4KKyAgICAgPC90
ZXN0Y2FzZT4KKyAgICAgPHRlc3RjYXNlIG5hbWU9IkV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1Jl
Y29yZEludFZhbHVlZFByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJO
b0ZpeHR1cmVUZXN0Ij4KKyAgICAgICA8cHJvcGVydGllcz4KKyAgICAgICAgIDxwcm9wZXJ0eSBu
YW1lPSJrZXlfZm9yX3V0aWxpdHlfaW50IiB2YWx1ZT0iMSIvPgorICAgICAgIDwvcHJvcGVydGll
cz4KKyAgICAgPC90ZXN0Y2FzZT4KKyAgICAgPHRlc3RjYXNlIG5hbWU9IkV4dGVybmFsVXRpbGl0
eVRoYXRDYWxsc1JlY29yZFN0cmluZ1ZhbHVlZFByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0i
KiIgY2xhc3NuYW1lPSJOb0ZpeHR1cmVUZXN0Ij4KKyAgICAgICA8cHJvcGVydGllcz4KKyAgICAg
ICAgIDxwcm9wZXJ0eSBuYW1lPSJrZXlfZm9yX3V0aWxpdHlfc3RyaW5nIiB2YWx1ZT0iMSIvPgor
ICAgICAgIDwvcHJvcGVydGllcz4KKyAgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+Cisg
IDx0ZXN0c3VpdGUgbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiB0ZXN0cz0iNCIgZmFpbHVy
ZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBu
YW1lPSJIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzAiIHZhbHVlX3BhcmFtPSIzMyIgc3RhdHVzPSJy
dW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiAvPgorICAgIDx0
ZXN0Y2FzZSBuYW1lPSJIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzEiIHZhbHVlX3BhcmFtPSI0MiIg
c3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiAv
PgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJBbm90aGVyVGVzdFRoYXRIYXNWYWx1ZVBhcmFtQXR0cmli
dXRlLzAiIHZhbHVlX3BhcmFtPSIzMyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0i
U2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiAvPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJBbm90aGVyVGVz
dFRoYXRIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzEiIHZhbHVlX3BhcmFtPSI0MiIgc3RhdHVzPSJy
dW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiAvPgorICA8L3Rl
c3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJUeXBlZFRlc3QvMCIgdGVzdHM9IjEiIGZhaWx1
cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2Ug
bmFtZT0iSGFzVHlwZVBhcmFtQXR0cmlidXRlIiB0eXBlX3BhcmFtPSIqIiBzdGF0dXM9InJ1biIg
dGltZT0iKiIgY2xhc3NuYW1lPSJUeXBlZFRlc3QvMCIgLz4KKyAgPC90ZXN0c3VpdGU+CisgIDx0
ZXN0c3VpdGUgbmFtZT0iVHlwZWRUZXN0LzEiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJs
ZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNlIG5hbWU9Ikhhc1R5cGVQ
YXJhbUF0dHJpYnV0ZSIgdHlwZV9wYXJhbT0iKiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNz
bmFtZT0iVHlwZWRUZXN0LzEiIC8+CisgIDwvdGVzdHN1aXRlPgorICA8dGVzdHN1aXRlIG5hbWU9
IlNpbmdsZS9UeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLzAiIHRlc3RzPSIxIiBmYWlsdXJlcz0i
MCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNlIG5hbWU9
Ikhhc1R5cGVQYXJhbUF0dHJpYnV0ZSIgdHlwZV9wYXJhbT0iKiIgc3RhdHVzPSJydW4iIHRpbWU9
IioiIGNsYXNzbmFtZT0iU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMCIgLz4KKyAg
PC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVk
VGVzdENhc2UvMSIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIw
IiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iSGFzVHlwZVBhcmFtQXR0cmlidXRlIiB0
eXBlX3BhcmFtPSIqIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJTaW5nbGUvVHlw
ZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8xIiAvPgogICA8L3Rlc3RzdWl0ZT4KIDwvdGVzdHN1aXRl
cz4iIiIgJSB7J3N0YWNrJzogU1RBQ0tfVFJBQ0VfVEVNUExBVEV9CiAKK0VYUEVDVEVEX0ZJTFRF
UkVEX1RFU1RfWE1MID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4K
Kzx0ZXN0c3VpdGVzIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0i
MCIgdGltZT0iKiIKKyAgICAgICAgICAgIHRpbWVzdGFtcD0iKiIgbmFtZT0iQWxsVGVzdHMiIGFk
X2hvY19wcm9wZXJ0eT0iNDIiPgorICA8dGVzdHN1aXRlIG5hbWU9IlN1Y2Nlc3NmdWxUZXN0IiB0
ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIgorICAgICAgICAgICAgIGVycm9ycz0i
MCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNlIG5hbWU9IlN1Y2NlZWRzIiBzdGF0dXM9InJ1biIg
dGltZT0iKiIgY2xhc3NuYW1lPSJTdWNjZXNzZnVsVGVzdCIvPgorICA8L3Rlc3RzdWl0ZT4KKzwv
dGVzdHN1aXRlcz4iIiIKKworRVhQRUNURURfU0hBUkRFRF9URVNUX1hNTCA9ICIiIjw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMyIgZmFp
bHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiIHRpbWVzdGFtcD0iKiIg
bmFtZT0iQWxsVGVzdHMiIGFkX2hvY19wcm9wZXJ0eT0iNDIiPgorICA8dGVzdHN1aXRlIG5hbWU9
IlN1Y2Nlc3NmdWxUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJv
cnM9IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJTdWNjZWVkcyIgc3RhdHVzPSJy
dW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU3VjY2Vzc2Z1bFRlc3QiLz4KKyAgPC90ZXN0c3VpdGU+
CisgIDx0ZXN0c3VpdGUgbmFtZT0iTm9GaXh0dXJlVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIw
IiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAgICAgPHRlc3RjYXNlIG5hbWU9
IlJlY29yZFByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJOb0ZpeHR1
cmVUZXN0Ij4KKyAgICAgICA8cHJvcGVydGllcz4KKyAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJr
ZXkiIHZhbHVlPSIxIi8+CisgICAgICAgPC9wcm9wZXJ0aWVzPgorICAgICA8L3Rlc3RjYXNlPgor
ICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJTaW5nbGUvVmFsdWVQYXJhbVRlc3Qi
IHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+
CisgICAgPHRlc3RjYXNlIG5hbWU9IkFub3RoZXJUZXN0VGhhdEhhc1ZhbHVlUGFyYW1BdHRyaWJ1
dGUvMSIgdmFsdWVfcGFyYW09IjQyIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJT
aW5nbGUvVmFsdWVQYXJhbVRlc3QiIC8+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPiIi
IgogCiBFWFBFQ1RFRF9FTVBUWV9YTUwgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMgdGVzdHM9IjAiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0i
MCIgZXJyb3JzPSIwIiB0aW1lPSIqIiBuYW1lPSJBbGxUZXN0cyI+Cis8dGVzdHN1aXRlcyB0ZXN0
cz0iMCIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiCisgICAg
ICAgICAgICB0aW1lc3RhbXA9IioiIG5hbWU9IkFsbFRlc3RzIj4KIDwvdGVzdHN1aXRlcz4iIiIK
IAorR1RFU1RfUFJPR1JBTV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJs
ZVBhdGgoR1RFU1RfUFJPR1JBTV9OQU1FKQorCitTVVBQT1JUU19UWVBFRF9URVNUUyA9ICdUeXBl
ZFRlc3QnIGluIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKKyAgICBbR1RFU1RfUFJPR1JB
TV9QQVRILCBHVEVTVF9MSVNUX1RFU1RTX0ZMQUddLCBjYXB0dXJlX3N0ZGVycj1GYWxzZSkub3V0
cHV0CisKIAogY2xhc3MgR1Rlc3RYTUxPdXRwdXRVbml0VGVzdChndGVzdF94bWxfdGVzdF91dGls
cy5HVGVzdFhNTFRlc3RDYXNlKToKICAgIiIiCiAgIFVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3Qn
cyBYTUwgb3V0cHV0IGZ1bmN0aW9uYWxpdHkuCiAgICIiIgogCi0gIGRlZiB0ZXN0Tm9uRW1wdHlY
bWxPdXRwdXQoc2VsZik6Ci0gICAgIiIiCi0gICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdl
bmVyYXRlcyBhIG5vbi1lbXB0eSBYTUwgb3V0cHV0LCBhbmQKLSAgICB0ZXN0cyB0aGF0IHRoZSBY
TUwgb3V0cHV0IGlzIGV4cGVjdGVkLgotICAgICIiIgotICAgIHNlbGYuX1Rlc3RYbWxPdXRwdXQo
R1RFU1RfUFJPR1JBTV9OQU1FLCBFWFBFQ1RFRF9OT05fRU1QVFlfWE1MLCAxKQorICAjIFRoaXMg
dGVzdCBjdXJyZW50bHkgYnJlYWtzIG9uIHBsYXRmb3JtcyB0aGF0IGRvIG5vdCBzdXBwb3J0IHR5
cGVkIGFuZAorICAjIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cywgc28gd2UgZG9uJ3QgcnVuIGl0
IHVuZGVyIHRoZW0uCisgIGlmIFNVUFBPUlRTX1RZUEVEX1RFU1RTOgorICAgIGRlZiB0ZXN0Tm9u
RW1wdHlYbWxPdXRwdXQoc2VsZik6CisgICAgICAiIiIKKyAgICAgIFJ1bnMgYSB0ZXN0IHByb2dy
YW0gdGhhdCBnZW5lcmF0ZXMgYSBub24tZW1wdHkgWE1MIG91dHB1dCwgYW5kCisgICAgICB0ZXN0
cyB0aGF0IHRoZSBYTUwgb3V0cHV0IGlzIGV4cGVjdGVkLgorICAgICAgIiIiCisgICAgICBzZWxm
Ll9UZXN0WG1sT3V0cHV0KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQRUNURURfTk9OX0VNUFRZX1hN
TCwgMSkKIAogICBkZWYgdGVzdEVtcHR5WG1sT3V0cHV0KHNlbGYpOgotICAgICIiIgorICAgICIi
IlZlcmlmaWVzIFhNTCBvdXRwdXQgZm9yIGEgR29vZ2xlIFRlc3QgYmluYXJ5IHdpdGhvdXQgYWN0
dWFsIHRlc3RzLgorCiAgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBhbiBl
bXB0eSBYTUwgb3V0cHV0LCBhbmQKICAgICB0ZXN0cyB0aGF0IHRoZSBYTUwgb3V0cHV0IGlzIGV4
cGVjdGVkLgogICAgICIiIgogCi0gICAgc2VsZi5fVGVzdFhtbE91dHB1dCgiZ3Rlc3Rfbm9fdGVz
dF91bml0dGVzdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1RFRF9FTVBUWV9YTUws
IDApCisgICAgc2VsZi5fVGVzdFhtbE91dHB1dCgnZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCcsIEVY
UEVDVEVEX0VNUFRZX1hNTCwgMCkKKworICBkZWYgdGVzdFRpbWVzdGFtcFZhbHVlKHNlbGYpOgor
ICAgICIiIkNoZWNrcyB3aGV0aGVyIHRoZSB0aW1lc3RhbXAgYXR0cmlidXRlIGluIHRoZSBYTUwg
b3V0cHV0IGlzIHZhbGlkLgorCisgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRl
cyBhbiBlbXB0eSBYTUwgb3V0cHV0LCBhbmQgY2hlY2tzIGlmCisgICAgdGhlIHRpbWVzdGFtcCBh
dHRyaWJ1dGUgaW4gdGhlIHRlc3RzdWl0ZXMgdGFnIGlzIHZhbGlkLgorICAgICIiIgorICAgIGFj
dHVhbCA9IHNlbGYuX0dldFhtbE91dHB1dCgnZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCcsIFtdLCB7
fSwgMCkKKyAgICBkYXRlX3RpbWVfc3RyID0gYWN0dWFsLmRvY3VtZW50RWxlbWVudC5nZXRBdHRy
aWJ1dGVOb2RlKCd0aW1lc3RhbXAnKS52YWx1ZQorICAgICMgZGF0ZXRpbWUuc3RycHRpbWUoKSBp
cyBvbmx5IGF2YWlsYWJsZSBpbiBQeXRob24gMi41KyBzbyB3ZSBoYXZlIHRvCisgICAgIyBwYXJz
ZSB0aGUgZXhwZWN0ZWQgZGF0ZXRpbWUgbWFudWFsbHkuCisgICAgbWF0Y2ggPSByZS5tYXRjaChy
JyhcZCspLShcZFxkKS0oXGRcZClUKFxkXGQpOihcZFxkKTooXGRcZCknLCBkYXRlX3RpbWVfc3Ry
KQorICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKKyAgICAgICAgcmUubWF0Y2gsCisgICAgICAgICdYTUwg
ZGF0ZXR0aW1lIHN0cmluZyAlcyBoYXMgaW5jb3JyZWN0IGZvcm1hdCcgJSBkYXRlX3RpbWVfc3Ry
KQorICAgIGRhdGVfdGltZV9mcm9tX3htbCA9IGRhdGV0aW1lLmRhdGV0aW1lKAorICAgICAgICB5
ZWFyPWludChtYXRjaC5ncm91cCgxKSksIG1vbnRoPWludChtYXRjaC5ncm91cCgyKSksCisgICAg
ICAgIGRheT1pbnQobWF0Y2guZ3JvdXAoMykpLCBob3VyPWludChtYXRjaC5ncm91cCg0KSksCisg
ICAgICAgIG1pbnV0ZT1pbnQobWF0Y2guZ3JvdXAoNSkpLCBzZWNvbmQ9aW50KG1hdGNoLmdyb3Vw
KDYpKSkKKworICAgIHRpbWVfZGVsdGEgPSBhYnMoZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkgLSBk
YXRlX3RpbWVfZnJvbV94bWwpCisgICAgIyB0aW1lc3RhbXAgdmFsdWUgc2hvdWxkIGJlIG5lYXIg
dGhlIGN1cnJlbnQgbG9jYWwgdGltZQorICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0aW1lX2RlbHRhIDwg
ZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9NjAwKSwKKyAgICAgICAgICAgICAgICAgICAgJ3Rp
bWVfZGVsdGEgaXMgJXMnICUgdGltZV9kZWx0YSkKKyAgICBhY3R1YWwudW5saW5rKCkKIAogICBk
ZWYgdGVzdERlZmF1bHRPdXRwdXRGaWxlKHNlbGYpOgogICAgICIiIgpAQCAtMTQyLDcgKzI2Myw3
IEBAIGNsYXNzIEdUZXN0WE1MT3V0cHV0VW5pdFRlc3QoZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMuR1Rl
c3RYTUxUZXN0Q2FzZSk6CiAgICAgb3V0cHV0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVz
dF91dGlscy5HZXRUZW1wRGlyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RF
U1RfREVGQVVMVF9PVVRQVVRfRklMRSkKICAgICBndGVzdF9wcm9nX3BhdGggPSBndGVzdF90ZXN0
X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKLSAgICAgICAgImd0ZXN0X25vX3Rlc3RfdW5p
dHRlc3QiKQorICAgICAgICAnZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCcpCiAgICAgdHJ5OgogICAg
ICAgb3MucmVtb3ZlKG91dHB1dF9maWxlKQogICAgIGV4Y2VwdCBPU0Vycm9yLCBlOgpAQCAtMTUw
LDcgKzI3MSw3IEBAIGNsYXNzIEdUZXN0WE1MT3V0cHV0VW5pdFRlc3QoZ3Rlc3RfeG1sX3Rlc3Rf
dXRpbHMuR1Rlc3RYTUxUZXN0Q2FzZSk6CiAgICAgICAgIHJhaXNlCiAKICAgICBwID0gZ3Rlc3Rf
dGVzdF91dGlscy5TdWJwcm9jZXNzKAotICAgICAgICBbZ3Rlc3RfcHJvZ19wYXRoLCAiJXM9eG1s
IiAlIEdURVNUX09VVFBVVF9GTEFHXSwKKyAgICAgICAgW2d0ZXN0X3Byb2dfcGF0aCwgJyVzPXht
bCcgJSBHVEVTVF9PVVRQVVRfRkxBR10sCiAgICAgICAgIHdvcmtpbmdfZGlyPWd0ZXN0X3Rlc3Rf
dXRpbHMuR2V0VGVtcERpcigpKQogICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKICAgICBzZWxm
LmFzc2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkKQEAgLTE2Myw2MCArMjg0LDk4IEBAIGNsYXNz
IEdUZXN0WE1MT3V0cHV0VW5pdFRlc3QoZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMuR1Rlc3RYTUxUZXN0
Q2FzZSk6CiAgICAgIiIiCiAKICAgICB4bWxfcGF0aCA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0
X3V0aWxzLkdldFRlbXBEaXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9Q
Uk9HUkFNX05BTUUgKyAib3V0LnhtbCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RF
U1RfUFJPR1JBTV9OQU1FICsgJ291dC54bWwnKQogICAgIGlmIG9zLnBhdGguaXNmaWxlKHhtbF9w
YXRoKToKICAgICAgIG9zLnJlbW92ZSh4bWxfcGF0aCkKIAotICAgIGd0ZXN0X3Byb2dfcGF0aCA9
IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKEdURVNUX1BST0dSQU1fTkFN
RSkKLQotICAgIGNvbW1hbmQgPSBbZ3Rlc3RfcHJvZ19wYXRoLAotICAgICAgICAgICAgICAgIiVz
PXhtbDolcyIgJSAoR1RFU1RfT1VUUFVUX0ZMQUcsIHhtbF9wYXRoKSwKLSAgICAgICAgICAgICAg
ICItLXNodXRfZG93bl94bWwiXQorICAgIGNvbW1hbmQgPSBbR1RFU1RfUFJPR1JBTV9QQVRILAor
ICAgICAgICAgICAgICAgJyVzPXhtbDolcycgJSAoR1RFU1RfT1VUUFVUX0ZMQUcsIHhtbF9wYXRo
KSwKKyAgICAgICAgICAgICAgICctLXNodXRfZG93bl94bWwnXQogICAgIHAgPSBndGVzdF90ZXN0
X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKICAgICBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFs
OgotICAgICAgc2VsZi5hc3NlcnRfKEZhbHNlLAotICAgICAgICAgICAgICAgICAgICIlcyB3YXMg
a2lsbGVkIGJ5IHNpZ25hbCAlZCIgJSAoZ3Rlc3RfcHJvZ19uYW1lLCBwLnNpZ25hbCkpCisgICAg
ICAjIHAuc2lnbmFsIGlzIGF2YWlsYWJsZSBvbmx5IGlmIHAudGVybWluYXRlZF9ieV9zaWduYWwg
aXMgVHJ1ZS4KKyAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoCisgICAgICAgICAgcC50ZXJtaW5hdGVk
X2J5X3NpZ25hbCwKKyAgICAgICAgICAnJXMgd2FzIGtpbGxlZCBieSBzaWduYWwgJWQnICUgKEdU
RVNUX1BST0dSQU1fTkFNRSwgcC5zaWduYWwpKQogICAgIGVsc2U6CiAgICAgICBzZWxmLmFzc2Vy
dF8ocC5leGl0ZWQpCiAgICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBwLmV4aXRfY29kZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICInJXMnIGV4aXRlZCB3aXRoIGNvZGUgJXMsIHdoaWNoIGRv
ZXNuJ3QgbWF0Y2ggIgotICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBleHBlY3RlZCBleGl0
IGNvZGUgJXMuIgorICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBleHBlY3RlZCBleGl0IGNv
ZGUgJXMuJwogICAgICAgICAgICAgICAgICAgICAgICAgJSAoY29tbWFuZCwgcC5leGl0X2NvZGUs
IDEpKQogCiAgICAgc2VsZi5hc3NlcnRfKG5vdCBvcy5wYXRoLmlzZmlsZSh4bWxfcGF0aCkpCiAK
KyAgZGVmIHRlc3RGaWx0ZXJlZFRlc3RYbWxPdXRwdXQoc2VsZik6CisgICAgIiIiVmVyaWZpZXMg
WE1MIG91dHB1dCB3aGVuIGEgZmlsdGVyIGlzIGFwcGxpZWQuCiAKLSAgZGVmIF9UZXN0WG1sT3V0
cHV0KHNlbGYsIGd0ZXN0X3Byb2dfbmFtZSwgZXhwZWN0ZWRfeG1sLCBleHBlY3RlZF9leGl0X2Nv
ZGUpOgorICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBleGVjdXRlcyBvbmx5IHNvbWUgdGVz
dHMgYW5kIHZlcmlmaWVzIHRoYXQKKyAgICBub24tc2VsZWN0ZWQgdGVzdHMgZG8gbm90IHNob3cg
dXAgaW4gdGhlIFhNTCBvdXRwdXQuCiAgICAgIiIiCi0gICAgQXNzZXJ0cyB0aGF0IHRoZSBYTUwg
ZG9jdW1lbnQgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgdGhlIHByb2dyYW0KLSAgICBndGVzdF9wcm9n
X25hbWUgbWF0Y2hlcyBleHBlY3RlZF94bWwsIGEgc3RyaW5nIGNvbnRhaW5pbmcgYW5vdGhlcgot
ICAgIFhNTCBkb2N1bWVudC4gIEZ1cnRoZXJtb3JlLCB0aGUgcHJvZ3JhbSdzIGV4aXQgY29kZSBt
dXN0IGJlCi0gICAgZXhwZWN0ZWRfZXhpdF9jb2RlLgorCisgICAgc2VsZi5fVGVzdFhtbE91dHB1
dChHVEVTVF9QUk9HUkFNX05BTUUsIEVYUEVDVEVEX0ZJTFRFUkVEX1RFU1RfWE1MLCAwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgZXh0cmFfYXJncz1bJyVzPVN1Y2Nlc3NmdWxUZXN0LionICUg
R1RFU1RfRklMVEVSX0ZMQUddKQorCisgIGRlZiB0ZXN0U2hhcmRlZFRlc3RYbWxPdXRwdXQoc2Vs
Zik6CisgICAgIiIiVmVyaWZpZXMgWE1MIG91dHB1dCB3aGVuIHJ1biB1c2luZyBtdWx0aXBsZSBz
aGFyZHMuCisKKyAgICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRoYXQgZXhlY3V0ZXMgb25seSBvbmUg
c2hhcmQgYW5kIHZlcmlmaWVzIHRoYXQgdGVzdHMKKyAgICBmcm9tIG90aGVyIHNoYXJkcyBkbyBu
b3Qgc2hvdyB1cCBpbiB0aGUgWE1MIG91dHB1dC4KKyAgICAiIiIKKworICAgIHNlbGYuX1Rlc3RY
bWxPdXRwdXQoCisgICAgICAgIEdURVNUX1BST0dSQU1fTkFNRSwKKyAgICAgICAgRVhQRUNURURf
U0hBUkRFRF9URVNUX1hNTCwKKyAgICAgICAgMCwKKyAgICAgICAgZXh0cmFfZW52PXtTSEFSRF9J
TkRFWF9FTlZfVkFSOiAnMCcsCisgICAgICAgICAgICAgICAgICAgVE9UQUxfU0hBUkRTX0VOVl9W
QVI6ICcxMCd9KQorCisgIGRlZiBfR2V0WG1sT3V0cHV0KHNlbGYsIGd0ZXN0X3Byb2dfbmFtZSwg
ZXh0cmFfYXJncywgZXh0cmFfZW52LAorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9leGl0
X2NvZGUpOgorICAgICIiIgorICAgIFJldHVybnMgdGhlIHhtbCBvdXRwdXQgZ2VuZXJhdGVkIGJ5
IHJ1bm5pbmcgdGhlIHByb2dyYW0gZ3Rlc3RfcHJvZ19uYW1lLgorICAgIEZ1cnRoZXJtb3JlLCB0
aGUgcHJvZ3JhbSdzIGV4aXQgY29kZSBtdXN0IGJlIGV4cGVjdGVkX2V4aXRfY29kZS4KICAgICAi
IiIKICAgICB4bWxfcGF0aCA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBE
aXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGVzdF9wcm9nX25hbWUgKyAib3V0
LnhtbCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Rlc3RfcHJvZ19uYW1lICsgJ291
dC54bWwnKQogICAgIGd0ZXN0X3Byb2dfcGF0aCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4
ZWN1dGFibGVQYXRoKGd0ZXN0X3Byb2dfbmFtZSkKIAotICAgIGNvbW1hbmQgPSBbZ3Rlc3RfcHJv
Z19wYXRoLCAiJXM9eG1sOiVzIiAlIChHVEVTVF9PVVRQVVRfRkxBRywgeG1sX3BhdGgpXQotICAg
IHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKKyAgICBjb21tYW5kID0g
KFtndGVzdF9wcm9nX3BhdGgsICclcz14bWw6JXMnICUgKEdURVNUX09VVFBVVF9GTEFHLCB4bWxf
cGF0aCldICsKKyAgICAgICAgICAgICAgIGV4dHJhX2FyZ3MpCisgICAgZW52aXJvbl9jb3B5ID0g
b3MuZW52aXJvbi5jb3B5KCkKKyAgICBpZiBleHRyYV9lbnY6CisgICAgICBlbnZpcm9uX2NvcHku
dXBkYXRlKGV4dHJhX2VudikKKyAgICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNv
bW1hbmQsIGVudj1lbnZpcm9uX2NvcHkpCisKICAgICBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFs
OgogICAgICAgc2VsZi5hc3NlcnRfKEZhbHNlLAotICAgICAgICAgICAgICAgICAgICIlcyB3YXMg
a2lsbGVkIGJ5IHNpZ25hbCAlZCIgJSAoZ3Rlc3RfcHJvZ19uYW1lLCBwLnNpZ25hbCkpCisgICAg
ICAgICAgICAgICAgICAgJyVzIHdhcyBraWxsZWQgYnkgc2lnbmFsICVkJyAlIChndGVzdF9wcm9n
X25hbWUsIHAuc2lnbmFsKSkKICAgICBlbHNlOgogICAgICAgc2VsZi5hc3NlcnRfKHAuZXhpdGVk
KQogICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfZXhpdF9jb2RlLCBwLmV4aXRfY29k
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIGV4aXRlZCB3aXRoIGNvZGUgJXMsIHdo
aWNoIGRvZXNuJ3QgbWF0Y2ggIgotICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBleHBlY3Rl
ZCBleGl0IGNvZGUgJXMuIgorICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBleHBlY3RlZCBl
eGl0IGNvZGUgJXMuJwogICAgICAgICAgICAgICAgICAgICAgICAgJSAoY29tbWFuZCwgcC5leGl0
X2NvZGUsIGV4cGVjdGVkX2V4aXRfY29kZSkpCisgICAgYWN0dWFsID0gbWluaWRvbS5wYXJzZSh4
bWxfcGF0aCkKKyAgICByZXR1cm4gYWN0dWFsCiAKKyAgZGVmIF9UZXN0WG1sT3V0cHV0KHNlbGYs
IGd0ZXN0X3Byb2dfbmFtZSwgZXhwZWN0ZWRfeG1sLAorICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRfZXhpdF9jb2RlLCBleHRyYV9hcmdzPU5vbmUsIGV4dHJhX2Vudj1Ob25lKToKKyAgICAi
IiIKKyAgICBBc3NlcnRzIHRoYXQgdGhlIFhNTCBkb2N1bWVudCBnZW5lcmF0ZWQgYnkgcnVubmlu
ZyB0aGUgcHJvZ3JhbQorICAgIGd0ZXN0X3Byb2dfbmFtZSBtYXRjaGVzIGV4cGVjdGVkX3htbCwg
YSBzdHJpbmcgY29udGFpbmluZyBhbm90aGVyCisgICAgWE1MIGRvY3VtZW50LiAgRnVydGhlcm1v
cmUsIHRoZSBwcm9ncmFtJ3MgZXhpdCBjb2RlIG11c3QgYmUKKyAgICBleHBlY3RlZF9leGl0X2Nv
ZGUuCisgICAgIiIiCisKKyAgICBhY3R1YWwgPSBzZWxmLl9HZXRYbWxPdXRwdXQoZ3Rlc3RfcHJv
Z19uYW1lLCBleHRyYV9hcmdzIG9yIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleHRyYV9lbnYgb3Ige30sIGV4cGVjdGVkX2V4aXRfY29kZSkKICAgICBleHBlY3RlZCA9IG1p
bmlkb20ucGFyc2VTdHJpbmcoZXhwZWN0ZWRfeG1sKQotICAgIGFjdHVhbCAgID0gbWluaWRvbS5w
YXJzZSh4bWxfcGF0aCkKICAgICBzZWxmLk5vcm1hbGl6ZVhtbChhY3R1YWwuZG9jdW1lbnRFbGVt
ZW50KQogICAgIHNlbGYuQXNzZXJ0RXF1aXZhbGVudE5vZGVzKGV4cGVjdGVkLmRvY3VtZW50RWxl
bWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWwuZG9jdW1lbnRFbGVt
ZW50KQogICAgIGV4cGVjdGVkLnVubGluaygpCi0gICAgYWN0dWFsICAudW5saW5rKCkKLQorICAg
IGFjdHVhbC51bmxpbmsoKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRl
c3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3Vu
aXR0ZXN0Xy5jYwppbmRleCBmYzA3ZWY0NmJkNjY3YWE5MmU1ZGFmN2YyMDJlZmNkNzYzNjZiZjhh
Li4yZWU4ODM4MDA1ZWVlYzIzNTcxYmFlMzg5Yzc5MjY5OGMzMGM0ZDUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0
dGVzdF8uY2MKQEAgLTI3LDggKzI3LDYgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAotLy8gQXV0aG9yOiBlZWZhY21AZ21haWwuY29tIChTZWFuIE1jYWZlZSkKLQogLy8gVW5p
dCB0ZXN0IGZvciBHb29nbGUgVGVzdCBYTUwgb3V0cHV0LgogLy8KIC8vIEEgdXNlciBjYW4gc3Bl
Y2lmeSBYTUwgb3V0cHV0IGluIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSB0byBydW4gdmlhCkBAIC0z
OCwxMyArMzYsMTYgQEAKIC8vIFRoaXMgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5
dGhvbiB1bml0IHRlc3QuICBEb24ndCBydW4gaXQKIC8vIGRpcmVjdGx5LgogCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiB1c2luZyA6OnRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0OwogdXNpbmcgOjp0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7
Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW07CiB1c2luZyA6OnRlc3Rpbmc6OlVuaXRU
ZXN0OwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0OwordXNpbmcgOjp0ZXN0aW5nOjpWYWx1ZXM7CiAK
LWNsYXNzIFN1Y2Nlc3NmdWxUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgU3Vj
Y2Vzc2Z1bFRlc3QgOiBwdWJsaWMgVGVzdCB7CiB9OwogCiBURVNUX0YoU3VjY2Vzc2Z1bFRlc3Qs
IFN1Y2NlZWRzKSB7CkBAIC01MiwxNCArNTMsMTQgQEAgVEVTVF9GKFN1Y2Nlc3NmdWxUZXN0LCBT
dWNjZWVkcykgewogICBBU1NFUlRfRVEoMSwgMSk7CiB9CiAKLWNsYXNzIEZhaWxlZFRlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7CitjbGFzcyBGYWlsZWRUZXN0IDogcHVibGljIFRlc3Qgewog
fTsKIAogVEVTVF9GKEZhaWxlZFRlc3QsIEZhaWxzKSB7CiAgIEFTU0VSVF9FUSgxLCAyKTsKIH0K
IAotY2xhc3MgRGlzYWJsZWRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgRGlz
YWJsZWRUZXN0IDogcHVibGljIFRlc3QgewogfTsKIAogVEVTVF9GKERpc2FibGVkVGVzdCwgRElT
QUJMRURfdGVzdF9ub3RfcnVuKSB7CkBAIC05MSw3ICs5MiwxMCBAQCBURVNUKEludmFsaWRDaGFy
YWN0ZXJzVGVzdCwgSW52YWxpZENoYXJhY3RlcnNJbk1lc3NhZ2UpIHsKICAgRkFJTCgpIDw8ICJJ
bnZhbGlkIGNoYXJhY3RlcnMgaW4gYnJhY2tldHMgW1x4MVx4Ml0iOwogfQogCi1jbGFzcyBQcm9w
ZXJ0eVJlY29yZGluZ1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitjbGFzcyBQcm9wZXJ0
eVJlY29yZGluZ1Rlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBT
ZXRVcFRlc3RDYXNlKCkgeyBSZWNvcmRQcm9wZXJ0eSgiU2V0VXBUZXN0Q2FzZSIsICJ5ZXMiKTsg
fQorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeyBSZWNvcmRQcm9wZXJ0eSgiVGVh
ckRvd25UZXN0Q2FzZSIsICJheWUiKTsgfQogfTsKIAogVEVTVF9GKFByb3BlcnR5UmVjb3JkaW5n
VGVzdCwgT25lUHJvcGVydHkpIHsKQEAgLTExNywxMiArMTIxLDEyIEBAIFRFU1QoTm9GaXh0dXJl
VGVzdCwgUmVjb3JkUHJvcGVydHkpIHsKICAgUmVjb3JkUHJvcGVydHkoImtleSIsICIxIik7CiB9
CiAKLXZvaWQgRXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkUHJvcGVydHkoY29uc3QgY2hh
cioga2V5LCBpbnQgdmFsdWUpIHsKK3ZvaWQgRXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3Jk
UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwgaW50IHZhbHVlKSB7CiAgIHRlc3Rpbmc6
OlRlc3Q6OlJlY29yZFByb3BlcnR5KGtleSwgdmFsdWUpOwogfQogCi12b2lkIEV4dGVybmFsVXRp
bGl0eVRoYXRDYWxsc1JlY29yZFByb3BlcnR5KGNvbnN0IGNoYXIqIGtleSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdmFsdWUpIHsKK3Zv
aWQgRXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJp
bmcmIGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSB7CiAgIHRlc3Rpbmc6OlRlc3Q6OlJlY29yZFByb3BlcnR5
KGtleSwgdmFsdWUpOwogfQogCkBAIC0xMzQsNiArMTM4LDM1IEBAIFRFU1QoTm9GaXh0dXJlVGVz
dCwgRXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkU3RyaW5nVmFsdWVkUHJvcGVydHkpIHsK
ICAgRXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkUHJvcGVydHkoImtleV9mb3JfdXRpbGl0
eV9zdHJpbmciLCAiMSIpOwogfQogCisvLyBWZXJpZmllcyB0aGF0IHRoZSB0ZXN0IHBhcmFtZXRl
ciB2YWx1ZSBpcyBvdXRwdXQgaW4gdGhlICd2YWx1ZV9wYXJhbScKKy8vIFhNTCBhdHRyaWJ1dGUg
Zm9yIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCitjbGFzcyBWYWx1ZVBhcmFtVGVzdCA6IHB1
YmxpYyBUZXN0V2l0aFBhcmFtPGludD4ge307CitURVNUX1AoVmFsdWVQYXJhbVRlc3QsIEhhc1Zh
bHVlUGFyYW1BdHRyaWJ1dGUpIHt9CitURVNUX1AoVmFsdWVQYXJhbVRlc3QsIEFub3RoZXJUZXN0
VGhhdEhhc1ZhbHVlUGFyYW1BdHRyaWJ1dGUpIHt9CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChT
aW5nbGUsIFZhbHVlUGFyYW1UZXN0LCBWYWx1ZXMoMzMsIDQyKSk7CisKKyNpZiBHVEVTVF9IQVNf
VFlQRURfVEVTVAorLy8gVmVyaWZpZXMgdGhhdCB0aGUgdHlwZSBwYXJhbWV0ZXIgbmFtZSBpcyBv
dXRwdXQgaW4gdGhlICd0eXBlX3BhcmFtJworLy8gWE1MIGF0dHJpYnV0ZSBmb3IgdHlwZWQgdGVz
dHMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgVHlwZWRUZXN0IDogcHVibGljIFRlc3Qg
e307Cit0eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPGludCwgbG9uZz4gVHlwZWRUZXN0VHlwZXM7CitU
WVBFRF9URVNUX0NBU0UoVHlwZWRUZXN0LCBUeXBlZFRlc3RUeXBlcyk7CitUWVBFRF9URVNUKFR5
cGVkVGVzdCwgSGFzVHlwZVBhcmFtQXR0cmlidXRlKSB7fQorI2VuZGlmCisKKyNpZiBHVEVTVF9I
QVNfVFlQRURfVEVTVF9QCisvLyBWZXJpZmllcyB0aGF0IHRoZSB0eXBlIHBhcmFtZXRlciBuYW1l
IGlzIG91dHB1dCBpbiB0aGUgJ3R5cGVfcGFyYW0nCisvLyBYTUwgYXR0cmlidXRlIGZvciB0eXBl
LXBhcmFtZXRlcml6ZWQgdGVzdHMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgVHlwZVBh
cmFtZXRlcml6ZWRUZXN0Q2FzZSA6IHB1YmxpYyBUZXN0IHt9OworVFlQRURfVEVTVF9DQVNFX1Ao
VHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSk7CitUWVBFRF9URVNUX1AoVHlwZVBhcmFtZXRlcml6
ZWRUZXN0Q2FzZSwgSGFzVHlwZVBhcmFtQXR0cmlidXRlKSB7fQorUkVHSVNURVJfVFlQRURfVEVT
VF9DQVNFX1AoVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSwgSGFzVHlwZVBhcmFtQXR0cmlidXRl
KTsKK3R5cGVkZWYgdGVzdGluZzo6VHlwZXM8aW50LCBsb25nPiBUeXBlUGFyYW1ldGVyaXplZFRl
c3RDYXNlVHlwZXM7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChTaW5nbGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZVR5cGVz
KTsKKyNlbmRpZgorCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKICAgSW5pdEdv
b2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwogCkBAIC0xNDEsNSArMTc0LDYgQEAgaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CiAgICAgVGVzdEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMg
PSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCk7CiAgICAgZGVsZXRlIGxpc3Rl
bmVycy5SZWxlYXNlKGxpc3RlbmVycy5kZWZhdWx0X3htbF9nZW5lcmF0b3IoKSk7CiAgIH0KKyAg
dGVzdGluZzo6VGVzdDo6UmVjb3JkUHJvcGVydHkoImFkX2hvY19wcm9wZXJ0eSIsICI0MiIpOwog
ICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfdGVzdF91dGlscy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkKaW5kZXggYzgzYzNiN2VhNzliMmQ3
NjJlZWQ2NjVlMmQ2MWRmOGI5ZWEwODQ0My4uMWUwMzU4NTkyZmIwMDg0ZjBhODljMzQzNmZmNzUx
NzQ4NjgyN2FjZCAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF94bWxfdGVzdF91dGlscy5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X3htbF90ZXN0X3V0aWxzLnB5CkBAIC0xLDUgKzEsMyBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCi0jCiAjIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgogIyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogIwpAQCAtMzEsMTYgKzI5LDExIEBACiAKICIiIlVuaXQgdGVzdCB1dGlsaXRpZXMgZm9y
IGd0ZXN0X3htbF9vdXRwdXQiIiIKIAotX19hdXRob3JfXyA9ICdlZWZhY21AZ21haWwuY29tIChT
ZWFuIE1jYWZlZSknCi0KIGltcG9ydCByZQogZnJvbSB4bWwuZG9tIGltcG9ydCBtaW5pZG9tLCBO
b2RlCi0KIGltcG9ydCBndGVzdF90ZXN0X3V0aWxzCiAKLQotR1RFU1RfT1VUUFVUX0ZMQUcgICAg
ICAgICA9ICItLWd0ZXN0X291dHB1dCIKLUdURVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUgPSAidGVz
dF9kZXRhaWwueG1sIgorR1RFU1RfREVGQVVMVF9PVVRQVVRfRklMRSA9ICd0ZXN0X2RldGFpbC54
bWwnCiAKIGNsYXNzIEdUZXN0WE1MVGVzdENhc2UoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6
CiAgICIiIgpAQCAtNTgsOCArNTEsOSBAQCBjbGFzcyBHVGVzdFhNTFRlc3RDYXNlKGd0ZXN0X3Rl
c3RfdXRpbHMuVGVzdENhc2UpOgogICAgICogIEl0IGhhcyB0aGUgc2FtZSB0YWcgbmFtZSBhcyBl
eHBlY3RlZF9ub2RlLgogICAgICogIEl0IGhhcyB0aGUgc2FtZSBzZXQgb2YgYXR0cmlidXRlcyBh
cyBleHBlY3RlZF9ub2RlLCBlYWNoIHdpdGgKICAgICAgICB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUg
Y29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgb2YgZXhwZWN0ZWRfbm9kZS4KLSAgICAgICBBbiBleGNl
cHRpb24gaXMgYW55IGF0dHJpYnV0ZSBuYW1lZCAidGltZSIsIHdoaWNoIG5lZWRzIG9ubHkgYmUK
LSAgICAgICBjb252ZXJ0aWJsZSB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4KKyAgICAgICBF
eGNlcHRpb25zIGFyZSBhbnkgYXR0cmlidXRlIG5hbWVkICJ0aW1lIiwgd2hpY2ggbmVlZHMgb25s
eSBiZQorICAgICAgIGNvbnZlcnRpYmxlIHRvIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGFuZCBh
bnkgYXR0cmlidXRlIG5hbWVkCisgICAgICAgInR5cGVfcGFyYW0iIHdoaWNoIG9ubHkgaGFzIHRv
IGJlIG5vbi1lbXB0eS4KICAgICAqICBJdCBoYXMgYW4gZXF1aXZhbGVudCBzZXQgb2YgY2hpbGQg
bm9kZXMgKGluY2x1ZGluZyBlbGVtZW50cyBhbmQKICAgICAgICBDREFUQSBzZWN0aW9ucykgYXMg
ZXhwZWN0ZWRfbm9kZS4gIE5vdGUgdGhhdCB3ZSBpZ25vcmUgdGhlCiAgICAgICAgb3JkZXIgb2Yg
dGhlIGNoaWxkcmVuIGFzIHRoZXkgYXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlIGluIGFueQpAQCAt
NzksMjMgKzczLDI3IEBAIGNsYXNzIEdUZXN0WE1MVGVzdENhc2UoZ3Rlc3RfdGVzdF91dGlscy5U
ZXN0Q2FzZSk6CiAgICAgYWN0dWFsX2F0dHJpYnV0ZXMgICA9IGFjdHVhbF9ub2RlICAuYXR0cmli
dXRlcwogICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAogICAgICAgICBleHBlY3RlZF9hdHRyaWJ1dGVz
Lmxlbmd0aCwgYWN0dWFsX2F0dHJpYnV0ZXMubGVuZ3RoLAotICAgICAgICAiYXR0cmlidXRlIG51
bWJlcnMgZGlmZmVyIGluIGVsZW1lbnQgIiArIGFjdHVhbF9ub2RlLnRhZ05hbWUpCisgICAgICAg
ICdhdHRyaWJ1dGUgbnVtYmVycyBkaWZmZXIgaW4gZWxlbWVudCAlczpcbkV4cGVjdGVkOiAlclxu
QWN0dWFsOiAlcicgJSAoCisgICAgICAgICAgICBhY3R1YWxfbm9kZS50YWdOYW1lLCBleHBlY3Rl
ZF9hdHRyaWJ1dGVzLmtleXMoKSwKKyAgICAgICAgICAgIGFjdHVhbF9hdHRyaWJ1dGVzLmtleXMo
KSkpCiAgICAgZm9yIGkgaW4gcmFuZ2UoZXhwZWN0ZWRfYXR0cmlidXRlcy5sZW5ndGgpOgogICAg
ICAgZXhwZWN0ZWRfYXR0ciA9IGV4cGVjdGVkX2F0dHJpYnV0ZXMuaXRlbShpKQogICAgICAgYWN0
dWFsX2F0dHIgICA9IGFjdHVhbF9hdHRyaWJ1dGVzLmdldChleHBlY3RlZF9hdHRyLm5hbWUpCiAg
ICAgICBzZWxmLmFzc2VydF8oCiAgICAgICAgICAgYWN0dWFsX2F0dHIgaXMgbm90IE5vbmUsCi0g
ICAgICAgICAgImV4cGVjdGVkIGF0dHJpYnV0ZSAlcyBub3QgZm91bmQgaW4gZWxlbWVudCAlcyIg
JQorICAgICAgICAgICdleHBlY3RlZCBhdHRyaWJ1dGUgJXMgbm90IGZvdW5kIGluIGVsZW1lbnQg
JXMnICUKICAgICAgICAgICAoZXhwZWN0ZWRfYXR0ci5uYW1lLCBhY3R1YWxfbm9kZS50YWdOYW1l
KSkKLSAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX2F0dHIudmFsdWUsIGFjdHVhbF9h
dHRyLnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgIiB2YWx1ZXMgb2YgYXR0cmlidXRl
ICVzIGluIGVsZW1lbnQgJXMgZGlmZmVyIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAoZXhw
ZWN0ZWRfYXR0ci5uYW1lLCBhY3R1YWxfbm9kZS50YWdOYW1lKSkKKyAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKAorICAgICAgICAgIGV4cGVjdGVkX2F0dHIudmFsdWUsIGFjdHVhbF9hdHRyLnZhbHVl
LAorICAgICAgICAgICcgdmFsdWVzIG9mIGF0dHJpYnV0ZSAlcyBpbiBlbGVtZW50ICVzIGRpZmZl
cjogJXMgdnMgJXMnICUKKyAgICAgICAgICAoZXhwZWN0ZWRfYXR0ci5uYW1lLCBhY3R1YWxfbm9k
ZS50YWdOYW1lLAorICAgICAgICAgICBleHBlY3RlZF9hdHRyLnZhbHVlLCBhY3R1YWxfYXR0ci52
YWx1ZSkpCiAKICAgICBleHBlY3RlZF9jaGlsZHJlbiA9IHNlbGYuX0dldENoaWxkcmVuKGV4cGVj
dGVkX25vZGUpCiAgICAgYWN0dWFsX2NoaWxkcmVuID0gc2VsZi5fR2V0Q2hpbGRyZW4oYWN0dWFs
X25vZGUpCiAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCiAgICAgICAgIGxlbihleHBlY3RlZF9jaGls
ZHJlbiksIGxlbihhY3R1YWxfY2hpbGRyZW4pLAotICAgICAgICAibnVtYmVyIG9mIGNoaWxkIGVs
ZW1lbnRzIGRpZmZlciBpbiBlbGVtZW50ICIgKyBhY3R1YWxfbm9kZS50YWdOYW1lKQorICAgICAg
ICAnbnVtYmVyIG9mIGNoaWxkIGVsZW1lbnRzIGRpZmZlciBpbiBlbGVtZW50ICcgKyBhY3R1YWxf
bm9kZS50YWdOYW1lKQogICAgIGZvciBjaGlsZF9pZCwgY2hpbGQgaW4gZXhwZWN0ZWRfY2hpbGRy
ZW4uaXRlcml0ZW1zKCk6CiAgICAgICBzZWxmLmFzc2VydF8oY2hpbGRfaWQgaW4gYWN0dWFsX2No
aWxkcmVuLAogICAgICAgICAgICAgICAgICAgICc8JXM+IGlzIG5vdCBpbiA8JXM+IChpbiBlbGVt
ZW50ICVzKScgJQpAQCAtMTAzLDE5ICsxMDEsMjIgQEAgY2xhc3MgR1Rlc3RYTUxUZXN0Q2FzZShn
dGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKICAgICAgIHNlbGYuQXNzZXJ0RXF1aXZhbGVudE5v
ZGVzKGNoaWxkLCBhY3R1YWxfY2hpbGRyZW5bY2hpbGRfaWRdKQogCiAgIGlkZW50aWZ5aW5nX2F0
dHJpYnV0ZSA9IHsKLSAgICAidGVzdHN1aXRlcyI6ICJuYW1lIiwKLSAgICAidGVzdHN1aXRlIjog
Im5hbWUiLAotICAgICJ0ZXN0Y2FzZSI6ICAibmFtZSIsCi0gICAgImZhaWx1cmUiOiAgICJtZXNz
YWdlIiwKLSAgICB9CisgICAgICAndGVzdHN1aXRlcyc6ICduYW1lJywKKyAgICAgICd0ZXN0c3Vp
dGUnOiAnbmFtZScsCisgICAgICAndGVzdGNhc2UnOiAnbmFtZScsCisgICAgICAnZmFpbHVyZSc6
ICdtZXNzYWdlJywKKyAgICAgICdwcm9wZXJ0eSc6ICduYW1lJywKKyAgfQogCiAgIGRlZiBfR2V0
Q2hpbGRyZW4oc2VsZiwgZWxlbWVudCk6CiAgICAgIiIiCiAgICAgRmV0Y2hlcyBhbGwgb2YgdGhl
IGNoaWxkIG5vZGVzIG9mIGVsZW1lbnQsIGEgRE9NIEVsZW1lbnQgb2JqZWN0LgogICAgIFJldHVy
bnMgdGhlbSBhcyB0aGUgdmFsdWVzIG9mIGEgZGljdGlvbmFyeSBrZXllZCBieSB0aGUgSURzIG9m
IHRoZQotICAgIGNoaWxkcmVuLiAgRm9yIDx0ZXN0c3VpdGVzPiwgPHRlc3RzdWl0ZT4gYW5kIDx0
ZXN0Y2FzZT4gZWxlbWVudHMsIHRoZSBJRAotICAgIGlzIHRoZSB2YWx1ZSBvZiB0aGVpciAibmFt
ZSIgYXR0cmlidXRlOyBmb3IgPGZhaWx1cmU+IGVsZW1lbnRzLCBpdCBpcwotICAgIHRoZSB2YWx1
ZSBvZiB0aGUgIm1lc3NhZ2UiIGF0dHJpYnV0ZTsgQ0RBVEEgc2VjdGlvbnMgYW5kIG5vbi13aGl0
ZXNwYWNlCisgICAgY2hpbGRyZW4uICBGb3IgPHRlc3RzdWl0ZXM+LCA8dGVzdHN1aXRlPiwgPHRl
c3RjYXNlPiwgYW5kIDxwcm9wZXJ0eT4KKyAgICBlbGVtZW50cywgdGhlIElEIGlzIHRoZSB2YWx1
ZSBvZiB0aGVpciAibmFtZSIgYXR0cmlidXRlOyBmb3IgPGZhaWx1cmU+CisgICAgZWxlbWVudHMs
IGl0IGlzIHRoZSB2YWx1ZSBvZiB0aGUgIm1lc3NhZ2UiIGF0dHJpYnV0ZTsgZm9yIDxwcm9wZXJ0
aWVzPgorICAgIGVsZW1lbnRzLCBpdCBpcyB0aGUgdmFsdWUgb2YgdGhlaXIgcGFyZW50J3MgIm5h
bWUiIGF0dHJpYnV0ZSBwbHVzIHRoZQorICAgIGxpdGVyYWwgc3RyaW5nICJwcm9wZXJ0aWVzIjsg
Q0RBVEEgc2VjdGlvbnMgYW5kIG5vbi13aGl0ZXNwYWNlCiAgICAgdGV4dCBub2RlcyBhcmUgY29u
Y2F0ZW5hdGVkIGludG8gYSBzaW5nbGUgQ0RBVEEgc2VjdGlvbiB3aXRoIElECiAgICAgImRldGFp
bCIuICBBbiBleGNlcHRpb24gaXMgcmFpc2VkIGlmIGFueSBlbGVtZW50IG90aGVyIHRoYW4gdGhl
IGFib3ZlCiAgICAgZm91ciBpcyBlbmNvdW50ZXJlZCwgaWYgdHdvIGNoaWxkIGVsZW1lbnRzIHdp
dGggdGhlIHNhbWUgaWRlbnRpZnlpbmcKQEAgLTEyNSwyMSArMTI2LDI3IEBAIGNsYXNzIEdUZXN0
WE1MVGVzdENhc2UoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CiAgICAgY2hpbGRyZW4gPSB7
fQogICAgIGZvciBjaGlsZCBpbiBlbGVtZW50LmNoaWxkTm9kZXM6CiAgICAgICBpZiBjaGlsZC5u
b2RlVHlwZSA9PSBOb2RlLkVMRU1FTlRfTk9ERToKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNoaWxk
LnRhZ05hbWUgaW4gc2VsZi5pZGVudGlmeWluZ19hdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAg
ICAgICAiRW5jb3VudGVyZWQgdW5rbm93biBlbGVtZW50IDwlcz4iICUgY2hpbGQudGFnTmFtZSkK
LSAgICAgICAgY2hpbGRJRCA9IGNoaWxkLmdldEF0dHJpYnV0ZShzZWxmLmlkZW50aWZ5aW5nX2F0
dHJpYnV0ZVtjaGlsZC50YWdOYW1lXSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNoaWxkSUQgbm90
IGluIGNoaWxkcmVuKQotICAgICAgICBjaGlsZHJlbltjaGlsZElEXSA9IGNoaWxkCisgICAgICAg
IGlmIGNoaWxkLnRhZ05hbWUgPT0gJ3Byb3BlcnRpZXMnOgorICAgICAgICAgIHNlbGYuYXNzZXJ0
XyhjaGlsZC5wYXJlbnROb2RlIGlzIG5vdCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAn
RW5jb3VudGVyZWQgPHByb3BlcnRpZXM+IGVsZW1lbnQgd2l0aG91dCBhIHBhcmVudCcpCisgICAg
ICAgICAgY2hpbGRfaWQgPSBjaGlsZC5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZSgnbmFtZScpICsg
Jy1wcm9wZXJ0aWVzJworICAgICAgICBlbHNlOgorICAgICAgICAgIHNlbGYuYXNzZXJ0XyhjaGls
ZC50YWdOYW1lIGluIHNlbGYuaWRlbnRpZnlpbmdfYXR0cmlidXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAnRW5jb3VudGVyZWQgdW5rbm93biBlbGVtZW50IDwlcz4nICUgY2hpbGQudGFnTmFt
ZSkKKyAgICAgICAgICBjaGlsZF9pZCA9IGNoaWxkLmdldEF0dHJpYnV0ZSgKKyAgICAgICAgICAg
ICAgc2VsZi5pZGVudGlmeWluZ19hdHRyaWJ1dGVbY2hpbGQudGFnTmFtZV0pCisgICAgICAgIHNl
bGYuYXNzZXJ0XyhjaGlsZF9pZCBub3QgaW4gY2hpbGRyZW4pCisgICAgICAgIGNoaWxkcmVuW2No
aWxkX2lkXSA9IGNoaWxkCiAgICAgICBlbGlmIGNoaWxkLm5vZGVUeXBlIGluIFtOb2RlLlRFWFRf
Tk9ERSwgTm9kZS5DREFUQV9TRUNUSU9OX05PREVdOgotICAgICAgICBpZiAiZGV0YWlsIiBub3Qg
aW4gY2hpbGRyZW46CisgICAgICAgIGlmICdkZXRhaWwnIG5vdCBpbiBjaGlsZHJlbjoKICAgICAg
ICAgICBpZiAoY2hpbGQubm9kZVR5cGUgPT0gTm9kZS5DREFUQV9TRUNUSU9OX05PREUgb3IKICAg
ICAgICAgICAgICAgbm90IGNoaWxkLm5vZGVWYWx1ZS5pc3NwYWNlKCkpOgotICAgICAgICAgICAg
Y2hpbGRyZW5bImRldGFpbCJdID0gY2hpbGQub3duZXJEb2N1bWVudC5jcmVhdGVDREFUQVNlY3Rp
b24oCisgICAgICAgICAgICBjaGlsZHJlblsnZGV0YWlsJ10gPSBjaGlsZC5vd25lckRvY3VtZW50
LmNyZWF0ZUNEQVRBU2VjdGlvbigKICAgICAgICAgICAgICAgICBjaGlsZC5ub2RlVmFsdWUpCiAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgY2hpbGRyZW5bImRldGFpbCJdLm5vZGVWYWx1ZSArPSBj
aGlsZC5ub2RlVmFsdWUKKyAgICAgICAgICBjaGlsZHJlblsnZGV0YWlsJ10ubm9kZVZhbHVlICs9
IGNoaWxkLm5vZGVWYWx1ZQogICAgICAgZWxzZToKLSAgICAgICAgc2VsZi5mYWlsKCJFbmNvdW50
ZXJlZCB1bmV4cGVjdGVkIG5vZGUgdHlwZSAlZCIgJSBjaGlsZC5ub2RlVHlwZSkKKyAgICAgICAg
c2VsZi5mYWlsKCdFbmNvdW50ZXJlZCB1bmV4cGVjdGVkIG5vZGUgdHlwZSAlZCcgJSBjaGlsZC5u
b2RlVHlwZSkKICAgICByZXR1cm4gY2hpbGRyZW4KIAogICBkZWYgTm9ybWFsaXplWG1sKHNlbGYs
IGVsZW1lbnQpOgpAQCAtMTUwLDIzICsxNTcsNDAgQEAgY2xhc3MgR1Rlc3RYTUxUZXN0Q2FzZShn
dGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKICAgICAqICBUaGUgInRpbWUiIGF0dHJpYnV0ZSBv
ZiA8dGVzdHN1aXRlcz4sIDx0ZXN0c3VpdGU+IGFuZCA8dGVzdGNhc2U+CiAgICAgICAgZWxlbWVu
dHMgaXMgcmVwbGFjZWQgd2l0aCBhIHNpbmdsZSBhc3RlcmlzaywgaWYgaXQgY29udGFpbnMKICAg
ICAgICBvbmx5IGRpZ2l0IGNoYXJhY3RlcnMuCi0gICAgKiAgVGhlIGxpbmUgbnVtYmVyIHJlcG9y
dGVkIGluIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSAibWVzc2FnZSIKLSAgICAgICBhdHRyaWJ1dGUg
b2YgPGZhaWx1cmU+IGVsZW1lbnRzIGlzIHJlcGxhY2VkIHdpdGggYSBzaW5nbGUgYXN0ZXJpc2su
CisgICAgKiAgVGhlICJ0aW1lc3RhbXAiIGF0dHJpYnV0ZSBvZiA8dGVzdHN1aXRlcz4gZWxlbWVu
dHMgaXMgcmVwbGFjZWQgd2l0aCBhCisgICAgICAgc2luZ2xlIGFzdGVyaXNrLCBpZiBpdCBjb250
YWlucyBhIHZhbGlkIElTTzg2MDEgZGF0ZXRpbWUgdmFsdWUuCisgICAgKiAgVGhlICJ0eXBlX3Bh
cmFtIiBhdHRyaWJ1dGUgb2YgPHRlc3RjYXNlPiBlbGVtZW50cyBpcyByZXBsYWNlZCB3aXRoIGEK
KyAgICAgICBzaW5nbGUgYXN0ZXJpc2sgKGlmIGl0IHNuIG5vbi1lbXB0eSkgYXMgaXQgaXMgdGhl
IHR5cGUgbmFtZSByZXR1cm5lZAorICAgICAgIGJ5IHRoZSBjb21waWxlciBhbmQgaXMgcGxhdGZv
cm0gZGVwZW5kZW50LgorICAgICogIFRoZSBsaW5lIGluZm8gcmVwb3J0ZWQgaW4gdGhlIGZpcnN0
IGxpbmUgb2YgdGhlICJtZXNzYWdlIgorICAgICAgIGF0dHJpYnV0ZSBhbmQgQ0RBVEEgc2VjdGlv
biBvZiA8ZmFpbHVyZT4gZWxlbWVudHMgaXMgcmVwbGFjZWQgd2l0aCB0aGUKKyAgICAgICBmaWxl
J3MgYmFzZW5hbWUgYW5kIGEgc2luZ2xlIGFzdGVyaXNrIGZvciB0aGUgbGluZSBudW1iZXIuCiAg
ICAgKiAgVGhlIGRpcmVjdG9yeSBuYW1lcyBpbiBmaWxlIHBhdGhzIGFyZSByZW1vdmVkLgogICAg
ICogIFRoZSBzdGFjayB0cmFjZXMgYXJlIHJlbW92ZWQuCiAgICAgIiIiCiAKLSAgICBpZiBlbGVt
ZW50LnRhZ05hbWUgaW4gKCJ0ZXN0c3VpdGVzIiwgInRlc3RzdWl0ZSIsICJ0ZXN0Y2FzZSIpOgot
ICAgICAgdGltZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlTm9kZSgidGltZSIpCi0gICAgICB0aW1l
LnZhbHVlID0gcmUuc3ViKHIiXlxkKyhcLlxkKyk/JCIsICIqIiwgdGltZS52YWx1ZSkKLSAgICBl
bGlmIGVsZW1lbnQudGFnTmFtZSA9PSAiZmFpbHVyZSI6CisgICAgaWYgZWxlbWVudC50YWdOYW1l
ID09ICd0ZXN0c3VpdGVzJzoKKyAgICAgIHRpbWVzdGFtcCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRl
Tm9kZSgndGltZXN0YW1wJykKKyAgICAgIHRpbWVzdGFtcC52YWx1ZSA9IHJlLnN1YihyJ15cZHs0
fS1cZFxkLVxkXGRUXGRcZDpcZFxkOlxkXGQkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnKicsIHRpbWVzdGFtcC52YWx1ZSkKKyAgICBpZiBlbGVtZW50LnRhZ05hbWUgaW4gKCd0
ZXN0c3VpdGVzJywgJ3Rlc3RzdWl0ZScsICd0ZXN0Y2FzZScpOgorICAgICAgdGltZSA9IGVsZW1l
bnQuZ2V0QXR0cmlidXRlTm9kZSgndGltZScpCisgICAgICB0aW1lLnZhbHVlID0gcmUuc3ViKHIn
XlxkKyhcLlxkKyk/JCcsICcqJywgdGltZS52YWx1ZSkKKyAgICAgIHR5cGVfcGFyYW0gPSBlbGVt
ZW50LmdldEF0dHJpYnV0ZU5vZGUoJ3R5cGVfcGFyYW0nKQorICAgICAgaWYgdHlwZV9wYXJhbSBh
bmQgdHlwZV9wYXJhbS52YWx1ZToKKyAgICAgICAgdHlwZV9wYXJhbS52YWx1ZSA9ICcqJworICAg
IGVsaWYgZWxlbWVudC50YWdOYW1lID09ICdmYWlsdXJlJzoKKyAgICAgIHNvdXJjZV9saW5lX3Bh
dCA9IHInXi4qWy9cXF0oLio6KVxkK1xuJworICAgICAgIyBSZXBsYWNlcyB0aGUgc291cmNlIGxp
bmUgaW5mb3JtYXRpb24gd2l0aCBhIG5vcm1hbGl6ZWQgZm9ybS4KKyAgICAgIG1lc3NhZ2UgPSBl
bGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoJ21lc3NhZ2UnKQorICAgICAgbWVzc2FnZS52YWx1ZSA9
IHJlLnN1Yihzb3VyY2VfbGluZV9wYXQsICdcXDEqXG4nLCBtZXNzYWdlLnZhbHVlKQogICAgICAg
Zm9yIGNoaWxkIGluIGVsZW1lbnQuY2hpbGROb2RlczoKICAgICAgICAgaWYgY2hpbGQubm9kZVR5
cGUgPT0gTm9kZS5DREFUQV9TRUNUSU9OX05PREU6Ci0gICAgICAgICAgIyBSZW1vdmVzIHRoZSBz
b3VyY2UgbGluZSBudW1iZXIuCi0gICAgICAgICAgY2RhdGEgPSByZS5zdWIociJeLipbL1xcXSgu
KjopXGQrXG4iLCAiXFwxKlxuIiwgY2hpbGQubm9kZVZhbHVlKQorICAgICAgICAgICMgUmVwbGFj
ZXMgdGhlIHNvdXJjZSBsaW5lIGluZm9ybWF0aW9uIHdpdGggYSBub3JtYWxpemVkIGZvcm0uCisg
ICAgICAgICAgY2RhdGEgPSByZS5zdWIoc291cmNlX2xpbmVfcGF0LCAnXFwxKlxuJywgY2hpbGQu
bm9kZVZhbHVlKQogICAgICAgICAgICMgUmVtb3ZlcyB0aGUgYWN0dWFsIHN0YWNrIHRyYWNlLgot
ICAgICAgICAgIGNoaWxkLm5vZGVWYWx1ZSA9IHJlLnN1YihyIlxuU3RhY2sgdHJhY2U6XG4oLnxc
bikqIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsIGNkYXRhKQorICAg
ICAgICAgIGNoaWxkLm5vZGVWYWx1ZSA9IHJlLnN1YihyJ1N0YWNrIHRyYWNlOlxuKC58XG4pKics
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTdGFjayB0cmFjZTpcbionLCBj
ZGF0YSkKICAgICBmb3IgY2hpbGQgaW4gZWxlbWVudC5jaGlsZE5vZGVzOgogICAgICAgaWYgY2hp
bGQubm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05PREU6CiAgICAgICAgIHNlbGYuTm9ybWFsaXpl
WG1sKGNoaWxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9k
dWN0aW9uLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9kdWN0aW9uLmNjCmlu
ZGV4IDhiOGE0MGI0NGU5YjQxZjRjMjlkNzU1MjY5MDg1NjhhZjIzNzkxMmQuLjBmNjlmNmRiZDJl
MjZhM2E5YmRmNzU2YjQ4MDczN2E0ZWY0MjE4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L3Byb2R1Y3Rpb24uY2MKQEAgLTI2LDEwICsyNiw5IEBACiAvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKIC8vCi0vLyBBdXRob3I6IHdhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGhpcyBpcyBwYXJ0IG9mIHRoZSB1bml0IHRl
c3QgZm9yIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oLgorLy8gVGhpcyBpcyBwYXJ0IG9mIHRo
ZSB1bml0IHRlc3QgZm9yIGd0ZXN0X3Byb2QuaC4KIAogI2luY2x1ZGUgInByb2R1Y3Rpb24uaCIK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9kdWN0aW9uLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3Byb2R1Y3Rpb24uaAppbmRleCA4ZjE2ZmZm
YTI0MTZjNTcxNTNmYWIzZTA5N2QxMzRhZjFmYjRhOWJjLi41NDI3MjNiNzA4NzM4N2Q0ZmI1Mjlm
YzA3YTY4OGJjMWM4ZDc4YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L3Byb2R1Y3Rpb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3Byb2R1
Y3Rpb24uaApAQCAtMjYsMTUgKzI2LDE0IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKIC8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFu
eW9uZyBXYW4pCi0vLwotLy8gVGhpcyBpcyBwYXJ0IG9mIHRoZSB1bml0IHRlc3QgZm9yIGluY2x1
ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oLgorLy8gVGhpcyBpcyBwYXJ0IG9mIHRoZSB1bml0IHRlc3Qg
Zm9yIGd0ZXN0X3Byb2QuaC4KIAogI2lmbmRlZiBHVEVTVF9URVNUX1BST0RVQ1RJT05fSF8KICNk
ZWZpbmUgR1RFU1RfVEVTVF9QUk9EVUNUSU9OX0hfCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdF9w
cm9kLmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3RfcHJvZC5oIgogCiBjbGFzcyBQcml2YXRlQ29k
ZSB7CiAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9y
dW5fdGVzdHNfdXRpbC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3Rz
X3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDllNTc5MzFlYmEyYzYxMWUw
YTFmNjBmZmY0ZjA5NTM5ZTEwNzY3YWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ydW5fdGVzdHNfdXRp
bC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ2NiArMCwwIEBACi0jIENvcHlyaWdodCAyMDA4IEdv
b2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJQ
cm92aWRlcyBmYWNpbGl0aWVzIGZvciBydW5uaW5nIFNDb25zLWJ1aWx0IEdvb2dsZSBUZXN0L01v
Y2sgdGVzdHMuIiIiCi0KLQotaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQgb3MKLWltcG9ydCByZQot
aW1wb3J0IHNldHMKLWltcG9ydCBzeXMKLQotdHJ5OgotICAjIHN1YnJvY2VzcyBtb2R1bGUgaXMg
YSBwcmVmZXJhYmxlIHdheSB0byBpbnZva2Ugc3VicHJvY2Vzc2VzIGJ1dCBpdCBtYXkKLSAgIyBu
b3QgYmUgYXZhaWxhYmxlIG9uIE1hY09TIFggMTAuNC4KLSAgIyBTdXBwcmVzc2VzIHRoZSAnSW1w
b3J0IG5vdCBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlJyBsaW50IGNvbXBsYWludC4KLSAgIyBweWxp
bnQ6IGRpc2FibGUtbXNnPUM2MjA0Ci0gIGltcG9ydCBzdWJwcm9jZXNzCi1leGNlcHQgSW1wb3J0
RXJyb3I6Ci0gIHN1YnByb2Nlc3MgPSBOb25lCi0KLUhFTFBfTVNHID0gIiIiUnVucyB0aGUgc3Bl
Y2lmaWVkIHRlc3RzIGZvciAlKHByb2opcy4KLQotU1lOT1BTSVMKLSAgICAgICBydW5fdGVzdHMu
cHkgW09QVElPTl0uLi4gW0JVSUxEX0RJUl0uLi4gW1RFU1RdLi4uCi0KLURFU0NSSVBUSU9OCi0g
ICAgICAgUnVucyB0aGUgc3BlY2lmaWVkIHRlc3RzIChlaXRoZXIgYmluYXJ5IG9yIFB5dGhvbiks
IGFuZCBwcmludHMgYQotICAgICAgIHN1bW1hcnkgb2YgdGhlIHJlc3VsdHMuIEJVSUxEX0RJUlMg
d2lsbCBiZSB1c2VkIHRvIHNlYXJjaCBmb3IgdGhlCi0gICAgICAgYmluYXJpZXMuIElmIG5vIFRF
U1RzIGFyZSBzcGVjaWZpZWQsIGFsbCBiaW5hcnkgdGVzdHMgZm91bmQgaW4KLSAgICAgICBCVUlM
RF9ESVJzIGFuZCBhbGwgUHl0aG9uIHRlc3RzIGZvdW5kIGluIHRoZSBkaXJlY3RvcnkgdGVzdC8g
KGluIHRoZQotICAgICAgICUocHJvailzIHJvb3QpIGFyZSBydW4uCi0KLSAgICAgICBURVNUIGlz
IGEgbmFtZSBvZiBlaXRoZXIgYSBiaW5hcnkgb3IgYSBQeXRob24gdGVzdC4gQSBiaW5hcnkgdGVz
dCBpcwotICAgICAgIGFuIGV4ZWN1dGFibGUgZmlsZSBuYW1lZCAqX3Rlc3Qgb3IgKl91bml0dGVz
dCAod2l0aCB0aGUgLmV4ZQotICAgICAgIGV4dGVuc2lvbiBvbiBXaW5kb3dzKSBBIFB5dGhvbiB0
ZXN0IGlzIGEgc2NyaXB0IG5hbWVkICpfdGVzdC5weSBvcgotICAgICAgICpfdW5pdHRlc3QucHku
Ci0KLU9QVElPTlMKLSAgICAgICAtaCwgLS1oZWxwCi0gICAgICAgICAgICAgIFByaW50IHRoaXMg
aGVscCBtZXNzYWdlLgotICAgICAgIC1jIENPTkZJR1VSQVRJT05TCi0gICAgICAgICAgICAgIFNw
ZWNpZnkgYnVpbGQgZGlyZWN0b3JpZXMgdmlhIGJ1aWxkIGNvbmZpZ3VyYXRpb25zLgotICAgICAg
ICAgICAgICBDT05GSUdVUkFUSU9OUyBpcyBlaXRoZXIgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBv
ZiBidWlsZAotICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucyBvciAnYWxsJy4gRWFjaCBjb25m
aWd1cmF0aW9uIGlzIGVxdWl2YWxlbnQgdG8KLSAgICAgICAgICAgICAgYWRkaW5nICdzY29ucy9i
dWlsZC88Y29uZmlndXJhdGlvbj4vJShwcm9qKXMvc2NvbnMnIHRvIEJVSUxEX0RJUnMuCi0gICAg
ICAgICAgICAgIFNwZWNpZnlpbmcgLWM9YWxsIGlzIGVxdWl2YWxlbnQgdG8gcHJvdmlkaW5nIGFs
bCBkaXJlY3RvcmllcwotICAgICAgICAgICAgICBsaXN0ZWQgaW4gS05PV04gQlVJTEQgRElSRUNU
T1JJRVMgc2VjdGlvbiBiZWxvdy4KLSAgICAgICAtYQotICAgICAgICAgICAgICBFcXVpdmFsZW50
IHRvIC1jPWFsbAotICAgICAgIC1iCi0gICAgICAgICAgICAgIEVxdWl2YWxlbnQgdG8gLWM9YWxs
IHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IHRoZSBzY3JpcHQgd2lsbCBub3QKLSAgICAgICAgICAg
ICAgZmFpbCBpZiBzb21lIG9mIHRoZSBLTk9XTiBCVUlMRCBESVJFQ1RPUklFUyBkbyBub3QgZXhp
c3RzOyB0aGUKLSAgICAgICAgICAgICAgc2NyaXB0IHdpbGwgc2ltcGx5IG5vdCBydW4gdGhlIHRl
c3RzIHRoZXJlLiAnYicgc3RhbmRzIGZvcgotICAgICAgICAgICAgICAnYnVpbHQgZGlyZWN0b3Jp
ZXMnLgotCi1SRVRVUk4gVkFMVUUKLSAgICAgICBSZXR1cm5zIDAgaWYgYWxsIHRlc3RzIGFyZSBz
dWNjZXNzZnVsOyBvdGhlcndpc2UgcmV0dXJucyAxLgotCi1FWEFNUExFUwotICAgICAgIHJ1bl90
ZXN0cy5weQotICAgICAgICAgICAgICBSdW5zIGFsbCB0ZXN0cyBmb3IgdGhlIGRlZmF1bHQgYnVp
bGQgY29uZmlndXJhdGlvbi4KLSAgICAgICBydW5fdGVzdHMucHkgLWEKLSAgICAgICAgICAgICAg
UnVucyBhbGwgdGVzdHMgd2l0aCBiaW5hcmllcyBpbiBLTk9XTiBCVUlMRCBESVJFQ1RPUklFUy4K
LSAgICAgICBydW5fdGVzdHMucHkgLWIKLSAgICAgICAgICAgICAgUnVucyBhbGwgdGVzdHMgaW4g
S05PV04gQlVJTEQgRElSRUNUT1JJRVMgdGhhdCBoYXZlIGJlZW4KLSAgICAgICAgICAgICAgYnVp
bHQuCi0gICAgICAgcnVuX3Rlc3RzLnB5IGZvby8KLSAgICAgICAgICAgICAgUnVucyBhbGwgdGVz
dHMgaW4gdGhlIGZvby8gZGlyZWN0b3J5IGFuZCBhbGwgUHl0aG9uIHRlc3RzIGluCi0gICAgICAg
ICAgICAgIHRoZSBkaXJlY3RvcnkgdGVzdC4gVGhlIFB5dGhvbiB0ZXN0cyBhcmUgaW5zdHJ1Y3Rl
ZCB0byBsb29rCi0gICAgICAgICAgICAgIGZvciBiaW5hcmllcyBpbiBmb28vLgotICAgICAgIHJ1
bl90ZXN0cy5weSBiYXJfdGVzdC5leGUgdGVzdC9iYXpfdGVzdC5leGUgZm9vLyBiYXIvCi0gICAg
ICAgICAgICAgIFJ1bnMgZm9vL2Jhcl90ZXN0LmV4ZSwgYmFyL2Jhcl90ZXN0LmV4ZSwgZm9vL2Jh
el90ZXN0LmV4ZSwgYW5kCi0gICAgICAgICAgICAgIGJhci9iYXpfdGVzdC5leGUuCi0gICAgICAg
cnVuX3Rlc3RzLnB5IGZvbyBiYXIgdGVzdC9mb29fdGVzdC5weQotICAgICAgICAgICAgICBSdW5z
IHRlc3QvZm9vX3Rlc3QucHkgdHdpY2UgaW5zdHJ1Y3RpbmcgaXQgdG8gbG9vayBmb3IgaXRzCi0g
ICAgICAgICAgICAgIHRlc3QgYmluYXJpZXMgaW4gdGhlIGRpcmVjdG9yaWVzIGZvbyBhbmQgYmFy
LAotICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nbHkuCi0KLUtOT1dOIEJVSUxEIERJUkVDVE9S
SUVTCi0gICAgICBydW5fdGVzdHMucHkga25vd3MgYWJvdXQgZGlyZWN0b3JpZXMgd2hlcmUgdGhl
IFNDb25zIGJ1aWxkIHNjcmlwdAotICAgICAgZGVwb3NpdHMgaXRzIHByb2R1Y3RzLiBUaGVzZSBh
cmUgdGhlIGRpcmVjdG9yaWVzIHdoZXJlIHJ1bl90ZXN0cy5weQotICAgICAgd2lsbCBiZSBsb29r
aW5nIGZvciBpdHMgYmluYXJpZXMuIEN1cnJlbnRseSwgJShwcm9qKXMncyBTQ29uc3RydWN0IGZp
bGUKLSAgICAgIGRlZmluZXMgdGhlbSBhcyBmb2xsb3dzICh0aGUgZGVmYXVsdCBidWlsZCBkaXJl
Y3RvcnkgaXMgdGhlIGZpcnN0IG9uZQotICAgICAgbGlzdGVkIGluIGVhY2ggZ3JvdXApOgotICAg
ICAgT24gV2luZG93czoKLSAgICAgICAgICAgICAgPCUocHJvailzIHJvb3Q+L3Njb25zL2J1aWxk
L3dpbi1kYmc4LyUocHJvailzL3Njb25zLwotICAgICAgICAgICAgICA8JShwcm9qKXMgcm9vdD4v
c2NvbnMvYnVpbGQvd2luLW9wdDgvJShwcm9qKXMvc2NvbnMvCi0gICAgICBPbiBNYWM6Ci0gICAg
ICAgICAgICAgIDwlKHByb2opcyByb290Pi9zY29ucy9idWlsZC9tYWMtZGJnLyUocHJvailzL3Nj
b25zLwotICAgICAgICAgICAgICA8JShwcm9qKXMgcm9vdD4vc2NvbnMvYnVpbGQvbWFjLW9wdC8l
KHByb2opcy9zY29ucy8KLSAgICAgIE9uIG90aGVyIHBsYXRmb3JtczoKLSAgICAgICAgICAgICAg
PCUocHJvailzIHJvb3Q+L3Njb25zL2J1aWxkL2RiZy8lKHByb2opcy9zY29ucy8KLSAgICAgICAg
ICAgICAgPCUocHJvailzIHJvb3Q+L3Njb25zL2J1aWxkL29wdC8lKHByb2opcy9zY29ucy8iIiIK
LQotSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250JwotSVNfTUFDID0gb3MubmFtZSA9PSAncG9z
aXgnIGFuZCBvcy51bmFtZSgpWzBdID09ICdEYXJ3aW4nCi1JU19DWUdXSU4gPSBvcy5uYW1lID09
ICdwb3NpeCcgYW5kICdDWUdXSU4nIGluIG9zLnVuYW1lKClbMF0KLQotIyBEZWZpbml0aW9uIG9m
IENPTkZJR1MgbXVzdCBtYXRjaCB0aGF0IG9mIHRoZSBidWlsZCBkaXJlY3RvcnkgbmFtZXMgaW4g
dGhlCi0jIFNDb25zdHJ1Y3Qgc2NyaXB0LiBUaGUgZmlyc3QgbGlzdCBpdGVtIGlzIHRoZSBkZWZh
dWx0IGJ1aWxkIGNvbmZpZ3VyYXRpb24uCi1pZiBJU19XSU5ET1dTOgotICBDT05GSUdTID0gKCd3
aW4tZGJnOCcsICd3aW4tb3B0OCcpCi1lbGlmIElTX01BQzoKLSAgQ09ORklHUyA9ICgnbWFjLWRi
ZycsICdtYWMtb3B0JykKLWVsc2U6Ci0gIENPTkZJR1MgPSAoJ2RiZycsICdvcHQnKQotCi1pZiBJ
U19XSU5ET1dTIG9yIElTX0NZR1dJTjoKLSAgUFlUSE9OX1RFU1RfUkVHRVggPSByZS5jb21waWxl
KHInXyh1bml0KT90ZXN0XC5weSQnLCByZS5JR05PUkVDQVNFKQotICBCSU5BUllfVEVTVF9SRUdF
WCA9IHJlLmNvbXBpbGUocidfKHVuaXQpP3Rlc3QoXC5leGUpPyQnLCByZS5JR05PUkVDQVNFKQot
ICBCSU5BUllfVEVTVF9TRUFSQ0hfUkVHRVggPSByZS5jb21waWxlKHInXyh1bml0KT90ZXN0XC5l
eGUkJywgcmUuSUdOT1JFQ0FTRSkKLWVsc2U6Ci0gIFBZVEhPTl9URVNUX1JFR0VYID0gcmUuY29t
cGlsZShyJ18odW5pdCk/dGVzdFwucHkkJykKLSAgQklOQVJZX1RFU1RfUkVHRVggPSByZS5jb21w
aWxlKHInXyh1bml0KT90ZXN0JCcpCi0gIEJJTkFSWV9URVNUX1NFQVJDSF9SRUdFWCA9IEJJTkFS
WV9URVNUX1JFR0VYCi0KLQotZGVmIF9HZXRHdGVzdEJ1aWxkRGlyKGluamVjdGVkX29zLCBzY3Jp
cHRfZGlyLCBjb25maWcpOgotICAiIiJDYWxjdWxhdGVzIHBhdGggdG8gdGhlIEdvb2dsZSBUZXN0
IFNDb25zIGJ1aWxkIGRpcmVjdG9yeS4iIiIKLQotICByZXR1cm4gaW5qZWN0ZWRfb3MucGF0aC5u
b3JtcGF0aChpbmplY3RlZF9vcy5wYXRoLmpvaW4oc2NyaXB0X2RpciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY29ucy9idWlsZCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnZ3Rlc3Qvc2NvbnMnKSkKLQotCi1kZWYgX0dldENvbmZpZ0Zyb21CdWlsZERp
cihidWlsZF9kaXIpOgotICAiIiJFeHRyYWN0cyB0aGUgY29uZmlndXJhdGlvbiBuYW1lIGZyb20g
dGhlIGJ1aWxkIGRpcmVjdG9yeS4iIiIKLQotICAjIFdlIGRvbid0IHdhbnQgdG8gZGVwZW5kIG9u
IGJ1aWxkX2RpciBjb250YWluaW5nIHRoZSBjb3JyZWN0IHBhdGgKLSAgIyBzZXBhcmF0b3JzLgot
ICBtID0gcmUubWF0Y2gocicuKltcXC9dKFteXFwvXSspW1xcL11bXlxcL10rW1xcL11zY29uc1tc
XC9dPyQnLCBidWlsZF9kaXIpCi0gIGlmIG06Ci0gICAgcmV0dXJuIG0uZ3JvdXAoMSkKLSAgZWxz
ZToKLSAgICBwcmludCA+PnN5cy5zdGRlcnIsICgnJXMgaXMgYW4gaW52YWxpZCBidWlsZCBkaXJl
Y3RvcnkgdGhhdCBkb2VzIG5vdCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcnJlc3Bv
bmQgdG8gYW55IGNvbmZpZ3VyYXRpb24uJyAlIChidWlsZF9kaXIsKSkKLSAgICByZXR1cm4gJycK
LQotCi0jIEFsbCBwYXRocyBpbiB0aGlzIHNjcmlwdCBhcmUgZWl0aGVyIGFic29sdXRlIG9yIHJl
bGF0aXZlIHRvIHRoZSBjdXJyZW50Ci0jIHdvcmtpbmcgZGlyZWN0b3J5LCB1bmxlc3Mgb3RoZXJ3
aXNlIHNwZWNpZmllZC4KLWNsYXNzIFRlc3RSdW5uZXIob2JqZWN0KToKLSAgIiIiUHJvdmlkZXMg
ZmFjaWxpdGllcyBmb3IgcnVubmluZyBQeXRob24gYW5kIGJpbmFyeSB0ZXN0cyBmb3IgR29vZ2xl
IFRlc3QuIiIiCi0KLSAgZGVmIF9faW5pdF9fKHNlbGYsCi0gICAgICAgICAgICAgICBzY3JpcHRf
ZGlyLAotICAgICAgICAgICAgICAgYnVpbGRfZGlyX3Zhcl9uYW1lPSdHVEVTVF9CVUlMRF9ESVIn
LAotICAgICAgICAgICAgICAgaW5qZWN0ZWRfb3M9b3MsCi0gICAgICAgICAgICAgICBpbmplY3Rl
ZF9zdWJwcm9jZXNzPXN1YnByb2Nlc3MsCi0gICAgICAgICAgICAgICBpbmplY3RlZF9idWlsZF9k
aXJfZmluZGVyPV9HZXRHdGVzdEJ1aWxkRGlyKToKLSAgICAiIiJJbml0aWFsaXplcyBhIFRlc3RS
dW5uZXIgaW5zdGFuY2UuCi0KLSAgICBBcmdzOgotICAgICAgc2NyaXB0X2RpcjogICAgICAgICAg
ICAgICAgRmlsZSBwYXRoIHRvIHRoZSBjYWxsaW5nIHNjcmlwdC4KLSAgICAgIGJ1aWxkX2Rpcl92
YXJfbmFtZTogICAgICAgIE5hbWUgb2YgdGhlIGVudiB2YXJpYWJsZSB1c2VkIHRvIHBhc3MgdGhl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgZGlyZWN0b3J5IHBh
dGggdG8gdGhlIGludm9rZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rz
LgotICAgICAgaW5qZWN0ZWRfb3M6ICAgICAgICAgICAgICAgc3RhbmRhcmQgb3MgbW9kdWxlIG9y
IGEgbW9jay9zdHViIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGlu
Zy4KLSAgICAgIGluamVjdGVkX3N1YnByb2Nlc3M6ICAgICAgIHN0YW5kYXJkIHN1YnByb2Nlc3Mg
bW9kdWxlIG9yIGEgbW9jay9zdHViCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
b3IgdGVzdGluZwotICAgICAgaW5qZWN0ZWRfYnVpbGRfZGlyX2ZpbmRlcjogZnVuY3Rpb24gdGhh
dCBkZXRlcm1pbmVzIHRoZSBwYXRoIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGUgYnVpbGQgZGlyZWN0b3J5LgotICAgICIiIgotCi0gICAgc2VsZi5vcyA9IGluamVjdGVk
X29zCi0gICAgc2VsZi5zdWJwcm9jZXNzID0gaW5qZWN0ZWRfc3VicHJvY2VzcwotICAgIHNlbGYu
YnVpbGRfZGlyX2ZpbmRlciA9IGluamVjdGVkX2J1aWxkX2Rpcl9maW5kZXIKLSAgICBzZWxmLmJ1
aWxkX2Rpcl92YXJfbmFtZSA9IGJ1aWxkX2Rpcl92YXJfbmFtZQotICAgIHNlbGYuc2NyaXB0X2Rp
ciA9IHNjcmlwdF9kaXIKLQotICBkZWYgX0dldEJ1aWxkRGlyRm9yQ29uZmlnKHNlbGYsIGNvbmZp
Zyk6Ci0gICAgIiIiUmV0dXJucyB0aGUgYnVpbGQgZGlyZWN0b3J5IGZvciBhIGdpdmVuIGNvbmZp
Z3VyYXRpb24uIiIiCi0KLSAgICByZXR1cm4gc2VsZi5idWlsZF9kaXJfZmluZGVyKHNlbGYub3Ms
IHNlbGYuc2NyaXB0X2RpciwgY29uZmlnKQotCi0gIGRlZiBfUnVuKHNlbGYsIGFyZ3MpOgotICAg
ICIiIlJ1bnMgdGhlIGV4ZWN1dGFibGUgd2l0aCBnaXZlbiBhcmdzIChhcmdzWzBdIGlzIHRoZSBl
eGVjdXRhYmxlIG5hbWUpLgotCi0gICAgQXJnczoKLSAgICAgIGFyZ3M6IENvbW1hbmQgbGluZSBh
cmd1bWVudHMgZm9yIHRoZSBwcm9jZXNzLgotCi0gICAgUmV0dXJuczoKLSAgICAgIFByb2Nlc3Mn
cyBleGl0IGNvZGUgaWYgaXQgZXhpdHMgbm9ybWFsbHksIG9yIC1zaWduYWwgaWYgdGhlIHByb2Nl
c3MgaXMKLSAgICAgIGtpbGxlZCBieSBhIHNpZ25hbC4KLSAgICAiIiIKLQotICAgIGlmIHNlbGYu
c3VicHJvY2VzczoKLSAgICAgIHJldHVybiBzZWxmLnN1YnByb2Nlc3MuUG9wZW4oYXJncykud2Fp
dCgpCi0gICAgZWxzZToKLSAgICAgIHJldHVybiBzZWxmLm9zLnNwYXdudihzZWxmLm9zLlBfV0FJ
VCwgYXJnc1swXSwgYXJncykKLQotICBkZWYgX1J1bkJpbmFyeVRlc3Qoc2VsZiwgdGVzdCk6Ci0g
ICAgIiIiUnVucyB0aGUgYmluYXJ5IHRlc3QgZ2l2ZW4gaXRzIHBhdGguCi0KLSAgICBBcmdzOgot
ICAgICAgdGVzdDogUGF0aCB0byB0aGUgdGVzdCBiaW5hcnkuCi0KLSAgICBSZXR1cm5zOgotICAg
ICAgUHJvY2VzcydzIGV4aXQgY29kZSBpZiBpdCBleGl0cyBub3JtYWxseSwgb3IgLXNpZ25hbCBp
ZiB0aGUgcHJvY2VzcyBpcwotICAgICAga2lsbGVkIGJ5IGEgc2lnbmFsLgotICAgICIiIgotCi0g
ICAgcmV0dXJuIHNlbGYuX1J1bihbdGVzdF0pCi0KLSAgZGVmIF9SdW5QeXRob25UZXN0KHNlbGYs
IHRlc3QsIGJ1aWxkX2Rpcik6Ci0gICAgIiIiUnVucyB0aGUgUHl0aG9uIHRlc3Qgc2NyaXB0IHdp
dGggdGhlIHNwZWNpZmllZCBidWlsZCBkaXJlY3RvcnkuCi0KLSAgICBBcmdzOgotICAgICAgdGVz
dDogUGF0aCB0byB0aGUgdGVzdCdzIFB5dGhvbiBzY3JpcHQuCi0gICAgICBidWlsZF9kaXI6IFBh
dGggdG8gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgdGVzdCBiaW5hcnkgaXMgdG8gYmUgZm91bmQu
Ci0KLSAgICBSZXR1cm5zOgotICAgICAgUHJvY2VzcydzIGV4aXQgY29kZSBpZiBpdCBleGl0cyBu
b3JtYWxseSwgb3IgLXNpZ25hbCBpZiB0aGUgcHJvY2VzcyBpcwotICAgICAga2lsbGVkIGJ5IGEg
c2lnbmFsLgotICAgICIiIgotCi0gICAgb2xkX2J1aWxkX2RpciA9IHNlbGYub3MuZW52aXJvbi5n
ZXQoc2VsZi5idWlsZF9kaXJfdmFyX25hbWUpCi0KLSAgICB0cnk6Ci0gICAgICBzZWxmLm9zLmVu
dmlyb25bc2VsZi5idWlsZF9kaXJfdmFyX25hbWVdID0gYnVpbGRfZGlyCi0KLSAgICAgICMgSWYg
dGhpcyBzY3JpcHQgaXMgcnVuIG9uIGEgV2luZG93cyBtYWNoaW5lIHRoYXQgaGFzIG5vIGFzc29j
aWF0aW9uCi0gICAgICAjIGJldHdlZW4gdGhlIC5weSBleHRlbnNpb24gYW5kIGEgcHl0aG9uIGlu
dGVycHJldGVyLCBzaW1wbHkgcGFzc2luZwotICAgICAgIyB0aGUgc2NyaXB0IG5hbWUgaW50byBz
dWJwcm9jZXNzLlBvcGVuL29zLnNwYXduIHdpbGwgbm90IHdvcmsuCi0gICAgICBwcmludCAnUnVu
bmluZyAlcyAuIC4gLicgJSAodGVzdCwpCi0gICAgICByZXR1cm4gc2VsZi5fUnVuKFtzeXMuZXhl
Y3V0YWJsZSwgdGVzdF0pCi0KLSAgICBmaW5hbGx5OgotICAgICAgaWYgb2xkX2J1aWxkX2RpciBp
cyBOb25lOgotICAgICAgICBkZWwgc2VsZi5vcy5lbnZpcm9uW3NlbGYuYnVpbGRfZGlyX3Zhcl9u
YW1lXQotICAgICAgZWxzZToKLSAgICAgICAgc2VsZi5vcy5lbnZpcm9uW3NlbGYuYnVpbGRfZGly
X3Zhcl9uYW1lXSA9IG9sZF9idWlsZF9kaXIKLQotICBkZWYgX0ZpbmRGaWxlc0J5UmVnZXgoc2Vs
ZiwgZGlyZWN0b3J5LCByZWdleCk6Ci0gICAgIiIiUmV0dXJucyBmaWxlcyBpbiBhIGRpcmVjdG9y
eSB3aG9zZSBuYW1lcyBtYXRjaCBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4KLQotICAgIEFyZ3M6Ci0g
ICAgICBkaXJlY3Rvcnk6IFBhdGggdG8gdGhlIGRpcmVjdG9yeSB0byBzZWFyY2ggZm9yIGZpbGVz
LgotICAgICAgcmVnZXg6IFJlZ3VsYXIgZXhwcmVzc2lvbiB0byBmaWx0ZXIgZmlsZSBuYW1lcy4K
LQotICAgIFJldHVybnM6Ci0gICAgICBUaGUgbGlzdCBvZiB0aGUgcGF0aHMgdG8gdGhlIGZpbGVz
IGluIHRoZSBkaXJlY3RvcnkuCi0gICAgIiIiCi0KLSAgICByZXR1cm4gW3NlbGYub3MucGF0aC5q
b2luKGRpcmVjdG9yeSwgZmlsZV9uYW1lKQotICAgICAgICAgICAgZm9yIGZpbGVfbmFtZSBpbiBz
ZWxmLm9zLmxpc3RkaXIoZGlyZWN0b3J5KQotICAgICAgICAgICAgaWYgcmUuc2VhcmNoKHJlZ2V4
LCBmaWxlX25hbWUpXQotCi0gICMgVE9ETyh2bGFkbEBnb29nbGUuY29tKTogSW1wbGVtZW50IHBh
cnNpbmcgb2Ygc2NvbnMvU0NvbnNjcmlwdCB0byBydW4gYWxsCi0gICMgdGVzdHMgZGVmaW5lZCB0
aGVyZSB3aGVuIG5vIHRlc3RzIGFyZSBzcGVjaWZpZWQuCi0gICMgVE9ETyh2bGFkbEBnb29nbGUu
Y29tKTogVXBkYXRlIHRoZSBkb2NzdHJpbmcgYWZ0ZXIgdGhlIGNvZGUgaXMgY2hhbmdlZCB0bwot
ICAjIHRyeSB0byB0ZXN0IGFsbCBidWlsZHMgZGVmaW5lZCBpbiBzY29ucy9TQ29uc2NyaXB0Lgot
ICBkZWYgR2V0VGVzdHNUb1J1bihzZWxmLAotICAgICAgICAgICAgICAgICAgICBhcmdzLAotICAg
ICAgICAgICAgICAgICAgICBuYW1lZF9jb25maWd1cmF0aW9ucywKLSAgICAgICAgICAgICAgICAg
ICAgYnVpbHRfY29uZmlndXJhdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZV9j
b25maWd1cmF0aW9ucz1DT05GSUdTLAotICAgICAgICAgICAgICAgICAgICBweXRob25fdGVzdHNf
dG9fc2tpcD1Ob25lKToKLSAgICAiIiJEZXRlcm1pbmVzIHdoYXQgdGVzdHMgc2hvdWxkIGJlIHJ1
bi4KLQotICAgIEFyZ3M6Ci0gICAgICBhcmdzOiBUaGUgbGlzdCBvZiBub24tb3B0aW9uIGFyZ3Vt
ZW50cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCi0gICAgICBuYW1lZF9jb25maWd1cmF0aW9uczog
VGhlIGxpc3Qgb2YgY29uZmlndXJhdGlvbnMgc3BlY2lmaWVkIHZpYSAtYyBvciAtYS4KLSAgICAg
IGJ1aWx0X2NvbmZpZ3VyYXRpb25zOiBUcnVlIGlmIC1iIGhhcyBiZWVuIHNwZWNpZmllZC4KLSAg
ICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9uczogYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIGF2
YWlsYWJsZSBvbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50IHBsYXRm
b3JtLCBpbmplY3RhYmxlIGZvciB0ZXN0aW5nLgotICAgICAgcHl0aG9uX3Rlc3RzX3RvX3NraXA6
IGEgY29sbGVjdGlvbiBvZiAoY29uZmlndXJhdGlvbiwgcHl0aG9uIHRlc3QgbmFtZSlzCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBuZWVkIHRvIGJlIHNraXBwZWQuCi0KLSAgICBS
ZXR1cm5zOgotICAgICAgQSB0dXBsZSB3aXRoIDIgZWxlbWVudHM6IHRoZSBsaXN0IG9mIFB5dGhv
biB0ZXN0cyB0byBydW4gYW5kIHRoZSBsaXN0IG9mCi0gICAgICBiaW5hcnkgdGVzdHMgdG8gcnVu
LgotICAgICIiIgotCi0gICAgaWYgbmFtZWRfY29uZmlndXJhdGlvbnMgPT0gJ2FsbCc6Ci0gICAg
ICBuYW1lZF9jb25maWd1cmF0aW9ucyA9ICcsJy5qb2luKGF2YWlsYWJsZV9jb25maWd1cmF0aW9u
cykKLQotICAgIG5vcm1hbGl6ZWRfYXJncyA9IFtzZWxmLm9zLnBhdGgubm9ybXBhdGgoYXJnKSBm
b3IgYXJnIGluIGFyZ3NdCi0KLSAgICAjIEEgZmluYWwgbGlzdCBvZiBidWlsZCBkaXJlY3Rvcmll
cyB3aGljaCB3aWxsIGJlIHNlYXJjaGVkIGZvciB0aGUgdGVzdAotICAgICMgYmluYXJpZXMuIEZp
cnN0LCBhZGQgZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGRpcmVjdGx5IG9uIHRoZSBjb21tYW5kCi0g
ICAgIyBsaW5lLgotICAgIGJ1aWxkX2RpcnMgPSBmaWx0ZXIoc2VsZi5vcy5wYXRoLmlzZGlyLCBu
b3JtYWxpemVkX2FyZ3MpCi0KLSAgICAjIEFkZHMgYnVpbGQgZGlyZWN0b3JpZXMgc3BlY2lmaWVk
IHZpYSB0aGVpciBidWlsZCBjb25maWd1cmF0aW9ucyB1c2luZwotICAgICMgdGhlIC1jIG9yIC1h
IG9wdGlvbnMuCi0gICAgaWYgbmFtZWRfY29uZmlndXJhdGlvbnM6Ci0gICAgICBidWlsZF9kaXJz
ICs9IFtzZWxmLl9HZXRCdWlsZERpckZvckNvbmZpZyhjb25maWcpCi0gICAgICAgICAgICAgICAg
ICAgICBmb3IgY29uZmlnIGluIG5hbWVkX2NvbmZpZ3VyYXRpb25zLnNwbGl0KCcsJyldCi0KLSAg
ICAjIEFkZHMgS05PV04gQlVJTEQgRElSRUNUT1JJRVMgaWYgLWIgaXMgc3BlY2lmaWVkLgotICAg
IGlmIGJ1aWx0X2NvbmZpZ3VyYXRpb25zOgotICAgICAgYnVpbGRfZGlycyArPSBbc2VsZi5fR2V0
QnVpbGREaXJGb3JDb25maWcoY29uZmlnKQotICAgICAgICAgICAgICAgICAgICAgZm9yIGNvbmZp
ZyBpbiBhdmFpbGFibGVfY29uZmlndXJhdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgIGlmIHNl
bGYub3MucGF0aC5pc2RpcihzZWxmLl9HZXRCdWlsZERpckZvckNvbmZpZyhjb25maWcpKV0KLQot
ICAgICMgSWYgbm8gZGlyZWN0b3JpZXMgd2VyZSBzcGVjaWZpZWQgZWl0aGVyIHZpYSAtYSwgLWIs
IC1jLCBvciBkaXJlY3RseSwgdXNlCi0gICAgIyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uLgot
ICAgIGVsaWYgbm90IGJ1aWxkX2RpcnM6Ci0gICAgICBidWlsZF9kaXJzID0gW3NlbGYuX0dldEJ1
aWxkRGlyRm9yQ29uZmlnKGF2YWlsYWJsZV9jb25maWd1cmF0aW9uc1swXSldCi0KLSAgICAjIE1h
a2VzIHN1cmUgdGhlcmUgYXJlIG5vIGR1cGxpY2F0aW9ucy4KLSAgICBidWlsZF9kaXJzID0gc2V0
cy5TZXQoYnVpbGRfZGlycykKLQotICAgIGVycm9yc19mb3VuZCA9IEZhbHNlCi0gICAgbGlzdGVk
X3B5dGhvbl90ZXN0cyA9IFtdICAjIEFsbCBQeXRob24gdGVzdHMgbGlzdGVkIG9uIHRoZSBjb21t
YW5kIGxpbmUuCi0gICAgbGlzdGVkX2JpbmFyeV90ZXN0cyA9IFtdICAjIEFsbCBiaW5hcnkgdGVz
dHMgbGlzdGVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCi0KLSAgICB0ZXN0X2RpciA9IHNlbGYub3Mu
cGF0aC5ub3JtcGF0aChzZWxmLm9zLnBhdGguam9pbihzZWxmLnNjcmlwdF9kaXIsICd0ZXN0Jykp
Ci0KLSAgICAjIFNpZnRzIHRocm91Z2ggbm9uLWRpcmVjdG9yeSBhcmd1bWVudHMgZmlzaGluZyBm
b3IgYW55IFB5dGhvbiBvciBiaW5hcnkKLSAgICAjIHRlc3RzIGFuZCBkZXRlY3RpbmcgZXJyb3Jz
LgotICAgIGZvciBhcmd1bWVudCBpbiBzZXRzLlNldChub3JtYWxpemVkX2FyZ3MpIC0gYnVpbGRf
ZGlyczoKLSAgICAgIGlmIHJlLnNlYXJjaChQWVRIT05fVEVTVF9SRUdFWCwgYXJndW1lbnQpOgot
ICAgICAgICBweXRob25fcGF0aCA9IHNlbGYub3MucGF0aC5qb2luKHRlc3RfZGlyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub3MucGF0aC5iYXNlbmFtZShh
cmd1bWVudCkpCi0gICAgICAgIGlmIHNlbGYub3MucGF0aC5pc2ZpbGUocHl0aG9uX3BhdGgpOgot
ICAgICAgICAgIGxpc3RlZF9weXRob25fdGVzdHMuYXBwZW5kKHB5dGhvbl9wYXRoKQotICAgICAg
ICBlbHNlOgotICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ1VuYWJsZSB0byBmaW5kIFB5dGhv
biB0ZXN0ICVzJyAlIGFyZ3VtZW50KQotICAgICAgICAgIGVycm9yc19mb3VuZCA9IFRydWUKLSAg
ICAgIGVsaWYgcmUuc2VhcmNoKEJJTkFSWV9URVNUX1JFR0VYLCBhcmd1bWVudCk6Ci0gICAgICAg
ICMgVGhpcyBzY3JpcHQgYWxzbyBhY2NlcHRzIGJpbmFyeSB0ZXN0IG5hbWVzIHByZWZpeGVkIHdp
dGggdGVzdC8gZm9yCi0gICAgICAgICMgdGhlIGNvbnZlbmllbmNlIG9mIHR5cGluZyB0aGVtIChj
YW4gdXNlIHBhdGggY29tcGxldGlvbnMgaW4gdGhlCi0gICAgICAgICMgc2hlbGwpLiAgU3RyaXBz
IHRlc3QvIHByZWZpeCBmcm9tIHRoZSBiaW5hcnkgdGVzdCBuYW1lcy4KLSAgICAgICAgbGlzdGVk
X2JpbmFyeV90ZXN0cy5hcHBlbmQoc2VsZi5vcy5wYXRoLmJhc2VuYW1lKGFyZ3VtZW50KSkKLSAg
ICAgIGVsc2U6Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJyVzIGlzIG5laXRoZXIgdGVzdCBu
b3IgYnVpbGQgZGlyZWN0b3J5JyAlIGFyZ3VtZW50KQotICAgICAgICBlcnJvcnNfZm91bmQgPSBU
cnVlCi0KLSAgICBpZiBlcnJvcnNfZm91bmQ6Ci0gICAgICByZXR1cm4gTm9uZQotCi0gICAgdXNl
cl9oYXNfbGlzdGVkX3Rlc3RzID0gbGlzdGVkX3B5dGhvbl90ZXN0cyBvciBsaXN0ZWRfYmluYXJ5
X3Rlc3RzCi0KLSAgICBpZiB1c2VyX2hhc19saXN0ZWRfdGVzdHM6Ci0gICAgICBzZWxlY3RlZF9w
eXRob25fdGVzdHMgPSBsaXN0ZWRfcHl0aG9uX3Rlc3RzCi0gICAgZWxzZToKLSAgICAgIHNlbGVj
dGVkX3B5dGhvbl90ZXN0cyA9IHNlbGYuX0ZpbmRGaWxlc0J5UmVnZXgodGVzdF9kaXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZVEhPTl9U
RVNUX1JFR0VYKQotCi0gICAgIyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBza2lwIHVuYnVpbHQg
UHl0aG9uIHRlc3RzIHdoZW4gLWIgaXMgc3BlY2lmaWVkLgotICAgIHB5dGhvbl90ZXN0X3BhaXJz
ID0gW10KLSAgICBmb3IgZGlyZWN0b3J5IGluIGJ1aWxkX2RpcnM6Ci0gICAgICBmb3IgdGVzdCBp
biBzZWxlY3RlZF9weXRob25fdGVzdHM6Ci0gICAgICAgIGNvbmZpZyA9IF9HZXRDb25maWdGcm9t
QnVpbGREaXIoZGlyZWN0b3J5KQotICAgICAgICBmaWxlX25hbWUgPSBvcy5wYXRoLmJhc2VuYW1l
KHRlc3QpCi0gICAgICAgIGlmIHB5dGhvbl90ZXN0c190b19za2lwIGFuZCAoY29uZmlnLCBmaWxl
X25hbWUpIGluIHB5dGhvbl90ZXN0c190b19za2lwOgotICAgICAgICAgIHByaW50ICgnTk9URTog
JXMgaXMgc2tpcHBlZCBmb3IgY29uZmlndXJhdGlvbiAlcywgYXMgaXQgZG9lcyBub3QgJwotICAg
ICAgICAgICAgICAgICAnd29yayB0aGVyZS4nICUgKGZpbGVfbmFtZSwgY29uZmlnKSkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICBweXRob25fdGVzdF9wYWlycy5hcHBlbmQoKGRpcmVjdG9yeSwg
dGVzdCkpCi0KLSAgICBiaW5hcnlfdGVzdF9wYWlycyA9IFtdCi0gICAgZm9yIGRpcmVjdG9yeSBp
biBidWlsZF9kaXJzOgotICAgICAgaWYgdXNlcl9oYXNfbGlzdGVkX3Rlc3RzOgotICAgICAgICBi
aW5hcnlfdGVzdF9wYWlycy5leHRlbmQoCi0gICAgICAgICAgICBbKGRpcmVjdG9yeSwgc2VsZi5v
cy5wYXRoLmpvaW4oZGlyZWN0b3J5LCB0ZXN0KSkKLSAgICAgICAgICAgICBmb3IgdGVzdCBpbiBs
aXN0ZWRfYmluYXJ5X3Rlc3RzXSkKLSAgICAgIGVsc2U6Ci0gICAgICAgIHRlc3RzID0gc2VsZi5f
RmluZEZpbGVzQnlSZWdleChkaXJlY3RvcnksIEJJTkFSWV9URVNUX1NFQVJDSF9SRUdFWCkKLSAg
ICAgICAgYmluYXJ5X3Rlc3RfcGFpcnMuZXh0ZW5kKFsoZGlyZWN0b3J5LCB0ZXN0KSBmb3IgdGVz
dCBpbiB0ZXN0c10pCi0KLSAgICByZXR1cm4gKHB5dGhvbl90ZXN0X3BhaXJzLCBiaW5hcnlfdGVz
dF9wYWlycykKLQotICBkZWYgUnVuVGVzdHMoc2VsZiwgcHl0aG9uX3Rlc3RzLCBiaW5hcnlfdGVz
dHMpOgotICAgICIiIlJ1bnMgUHl0aG9uIGFuZCBiaW5hcnkgdGVzdHMgYW5kIHJlcG9ydHMgcmVz
dWx0cyB0byB0aGUgc3RhbmRhcmQgb3V0cHV0LgotCi0gICAgQXJnczoKLSAgICAgIHB5dGhvbl90
ZXN0czogTGlzdCBvZiBQeXRob24gdGVzdHMgdG8gcnVuIGluIHRoZSBmb3JtIG9mIHR1cGxlcwot
ICAgICAgICAgICAgICAgICAgICAoYnVpbGQgZGlyZWN0b3J5LCBQeXRob24gdGVzdCBzY3JpcHQp
LgotICAgICAgYmluYXJ5X3Rlc3RzOiBMaXN0IG9mIGJpbmFyeSB0ZXN0cyB0byBydW4gaW4gdGhl
IGZvcm0gb2YgdHVwbGVzCi0gICAgICAgICAgICAgICAgICAgIChidWlsZCBkaXJlY3RvcnksIGJp
bmFyeSBmaWxlKS4KLQotICAgIFJldHVybnM6Ci0gICAgICBUaGUgZXhpdCBjb2RlIHRoZSBwcm9n
cmFtIHNob3VsZCBwYXNzIGludG8gc3lzLmV4aXQoKS4KLSAgICAiIiIKLQotICAgIGlmIHB5dGhv
bl90ZXN0cyBvciBiaW5hcnlfdGVzdHM6Ci0gICAgICByZXN1bHRzID0gW10KLSAgICAgIGZvciBk
aXJlY3RvcnksIHRlc3QgaW4gcHl0aG9uX3Rlc3RzOgotICAgICAgICByZXN1bHRzLmFwcGVuZCgo
ZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX1J1blB5dGhvblRlc3QodGVzdCwgZGlyZWN0b3J5KSA9PSAwKSkKLSAg
ICAgIGZvciBkaXJlY3RvcnksIHRlc3QgaW4gYmluYXJ5X3Rlc3RzOgotICAgICAgICByZXN1bHRz
LmFwcGVuZCgoZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vcy5wYXRo
LmJhc2VuYW1lKHRlc3QpLAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fUnVuQmluYXJ5
VGVzdCh0ZXN0KSA9PSAwKSkKLQotICAgICAgZmFpbGVkID0gWyhkaXJlY3RvcnksIHRlc3QpCi0g
ICAgICAgICAgICAgICAgZm9yIChkaXJlY3RvcnksIHRlc3QsIHN1Y2Nlc3MpIGluIHJlc3VsdHMK
LSAgICAgICAgICAgICAgICBpZiBub3Qgc3VjY2Vzc10KLSAgICAgIHByaW50Ci0gICAgICBwcmlu
dCAnJWQgdGVzdHMgcnVuLicgJSBsZW4ocmVzdWx0cykKLSAgICAgIGlmIGZhaWxlZDoKLSAgICAg
ICAgcHJpbnQgJ1RoZSBmb2xsb3dpbmcgJWQgdGVzdHMgZmFpbGVkOicgJSBsZW4oZmFpbGVkKQot
ICAgICAgICBmb3IgKGRpcmVjdG9yeSwgdGVzdCkgaW4gZmFpbGVkOgotICAgICAgICAgIHByaW50
ICclcyBpbiAlcycgJSAodGVzdCwgZGlyZWN0b3J5KQotICAgICAgICByZXR1cm4gMQotICAgICAg
ZWxzZToKLSAgICAgICAgcHJpbnQgJ0FsbCB0ZXN0cyBwYXNzZWQhJwotICAgIGVsc2U6ICAjIE5v
IHRlc3RzIGRlZmluZWQKLSAgICAgIHByaW50ICdOb3RoaW5nIHRvIHRlc3QgLSBubyB0ZXN0cyBz
cGVjaWZpZWQhJwotCi0gICAgcmV0dXJuIDAKLQotCi1kZWYgUGFyc2VBcmdzKHByb2plY3RfbmFt
ZSwgYXJndj1Ob25lLCBoZWxwX2NhbGxiYWNrPU5vbmUpOgotICAiIiJQYXJzZXMgdGhlIG9wdGlv
bnMgcnVuX3Rlc3RzLnB5IHVzZXMuIiIiCi0KLSAgIyBTdXBwcmVzc2VzIGxpbnQgd2FybmluZyBv
biB1bnVzZWQgYXJndW1lbnRzLiAgVGhlc2UgYXJndW1lbnRzIGFyZQotICAjIHJlcXVpcmVkIGJ5
IG9wdHBhcnNlLCBldmVuIHRob3VnaCB0aGV5IGFyZSB1bnVzZWQuCi0gICMgcHlsaW50OiBkaXNh
YmxlLW1zZz1XMDYxMwotICBkZWYgUHJpbnRIZWxwKG9wdGlvbiwgb3B0LCB2YWx1ZSwgcGFyc2Vy
KToKLSAgICBwcmludCBIRUxQX01TRyAlIHsncHJvaic6IHByb2plY3RfbmFtZX0KLSAgICBzeXMu
ZXhpdCgxKQotCi0gIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpCi0gIHBhcnNlci5h
ZGRfb3B0aW9uKCctYycsCi0gICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmUnLAotICAg
ICAgICAgICAgICAgICAgICBkZXN0PSdjb25maWd1cmF0aW9ucycsCi0gICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ9Tm9uZSkKLSAgcGFyc2VyLmFkZF9vcHRpb24oJy1hJywKLSAgICAgICAgICAg
ICAgICAgICAgYWN0aW9uPSdzdG9yZV9jb25zdCcsCi0gICAgICAgICAgICAgICAgICAgIGRlc3Q9
J2NvbmZpZ3VyYXRpb25zJywKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAg
ICAgICAgICAgICAgICAgICBjb25zdD0nYWxsJykKLSAgcGFyc2VyLmFkZF9vcHRpb24oJy1iJywK
LSAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV9jb25zdCcsCi0gICAgICAgICAgICAg
ICAgICAgIGRlc3Q9J2J1aWx0X2NvbmZpZ3VyYXRpb25zJywKLSAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3Q9VHJ1ZSkKLSAgIyBSZXBs
YWNlcyB0aGUgYnVpbHQtaW4gaGVscCB3aXRoIG91cnMuCi0gIHBhcnNlci5yZW1vdmVfb3B0aW9u
KCctaCcpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctaCcsICctLWhlbHAnLAotICAgICAgICAgICAg
ICAgICAgICBhY3Rpb249J2NhbGxiYWNrJywKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s9
aGVscF9jYWxsYmFjayBvciBQcmludEhlbHApCi0gIHJldHVybiBwYXJzZXIucGFyc2VfYXJncyhh
cmd2KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ydW5fdGVzdHNf
dXRpbF90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ydW5fdGVzdHNfdXRp
bF90ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5YzU1NzI2ZmQ1MGIyYTBj
MjUwNjgxNDFkN2U2Njk0M2YwYjZkZTczLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3RzX3V0
aWxfdGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDY3NiArMCwwIEBACi0jIS91c3IvYmluL2Vu
diBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDkgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3Ry
aWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlRlc3RzIGZvciBydW5fdGVzdHNfdXRpbC5w
eSB0ZXN0IHJ1bm5lciBzY3JpcHQuIiIiCi0KLV9fYXV0aG9yX18gPSAndmxhZGxAZ29vZ2xlLmNv
bSAoVmxhZCBMb3NldiknCi0KLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2V0cwotaW1w
b3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBydW5fdGVzdHNfdXRpbAotCi0KLUdURVNUX0RCR19ESVIg
PSAnc2NvbnMvYnVpbGQvZGJnL2d0ZXN0L3Njb25zJwotR1RFU1RfT1BUX0RJUiA9ICdzY29ucy9i
dWlsZC9vcHQvZ3Rlc3Qvc2NvbnMnCi1HVEVTVF9PVEhFUl9ESVIgPSAnc2NvbnMvYnVpbGQvb3Ro
ZXIvZ3Rlc3Qvc2NvbnMnCi0KLQotZGVmIEFkZEV4ZUV4dGVuc2lvbihwYXRoKToKLSAgIiIiQXBw
ZW5kcyAuZXhlIHRvIHRoZSBwYXRoIG9uIFdpbmRvd3Mgb3IgQ3lnd2luLiIiIgotCi0gIGlmIHJ1
bl90ZXN0c191dGlsLklTX1dJTkRPV1Mgb3IgcnVuX3Rlc3RzX3V0aWwuSVNfQ1lHV0lOOgotICAg
IHJldHVybiBwYXRoICsgJy5leGUnCi0gIGVsc2U6Ci0gICAgcmV0dXJuIHBhdGgKLQotCi1jbGFz
cyBGYWtlUGF0aChvYmplY3QpOgotICAiIiJBIGZha2Ugb3MucGF0aCBtb2R1bGUgZm9yIHRlc3Rp
bmcuIiIiCi0KLSAgZGVmIF9faW5pdF9fKHNlbGYsIGN1cnJlbnRfZGlyPW9zLmdldGN3ZCgpLCBr
bm93bl9wYXRocz1Ob25lKToKLSAgICBzZWxmLmN1cnJlbnRfZGlyID0gY3VycmVudF9kaXIKLSAg
ICBzZWxmLnRyZWUgPSB7fQotICAgIHNlbGYucGF0aF9zZXBhcmF0b3IgPSBvcy5zZXAKLQotICAg
ICMga25vd25fcGF0aHMgY29udGFpbnMgZWl0aGVyIGFic29sdXRlIG9yIHJlbGF0aXZlIHBhdGhz
LiBSZWxhdGl2ZSBwYXRocwotICAgICMgYXJlIGFic29sdXRpemVkIHdpdGggc2VsZi5jdXJyZW50
X2Rpci4KLSAgICBpZiBrbm93bl9wYXRoczoKLSAgICAgIHNlbGYuX0FkZFBhdGhzKGtub3duX3Bh
dGhzKQotCi0gIGRlZiBfQWRkUGF0aChzZWxmLCBwYXRoKToKLSAgICBlbmRzX3dpdGhfc2xhc2gg
PSBwYXRoLmVuZHN3aXRoKCcvJykKLSAgICBwYXRoID0gc2VsZi5hYnNwYXRoKHBhdGgpCi0gICAg
aWYgZW5kc193aXRoX3NsYXNoOgotICAgICAgcGF0aCArPSBzZWxmLnBhdGhfc2VwYXJhdG9yCi0g
ICAgbmFtZV9saXN0ID0gcGF0aC5zcGxpdChzZWxmLnBhdGhfc2VwYXJhdG9yKQotICAgIHRyZWUg
PSBzZWxmLnRyZWUKLSAgICBmb3IgbmFtZSBpbiBuYW1lX2xpc3RbOi0xXToKLSAgICAgIGlmIG5v
dCBuYW1lOgotICAgICAgICBjb250aW51ZQotICAgICAgaWYgbmFtZSBpbiB0cmVlOgotICAgICAg
ICB0cmVlID0gdHJlZVtuYW1lXQotICAgICAgZWxzZToKLSAgICAgICAgdHJlZVtuYW1lXSA9IHt9
Ci0gICAgICAgIHRyZWUgPSB0cmVlW25hbWVdCi0KLSAgICBuYW1lID0gbmFtZV9saXN0Wy0xXQot
ICAgIGlmIG5hbWU6Ci0gICAgICBpZiBuYW1lIGluIHRyZWU6Ci0gICAgICAgIGFzc2VydCB0cmVl
W25hbWVdID09IDEKLSAgICAgIGVsc2U6Ci0gICAgICAgIHRyZWVbbmFtZV0gPSAxCi0KLSAgZGVm
IF9BZGRQYXRocyhzZWxmLCBwYXRocyk6Ci0gICAgZm9yIHBhdGggaW4gcGF0aHM6Ci0gICAgICBz
ZWxmLl9BZGRQYXRoKHBhdGgpCi0KLSAgZGVmIFBhdGhFbGVtZW50KHNlbGYsIHBhdGgpOgotICAg
ICIiIlJldHVybnMgYW4gaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgZGlyZWN0b3J5IHRyZWUg
ZW50cnkgZm9yIHBhdGguIiIiCi0gICAgdHJlZSA9IHNlbGYudHJlZQotICAgIG5hbWVfbGlzdCA9
IHNlbGYuYWJzcGF0aChwYXRoKS5zcGxpdChzZWxmLnBhdGhfc2VwYXJhdG9yKQotICAgIGZvciBu
YW1lIGluIG5hbWVfbGlzdDoKLSAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICBjb250aW51ZQot
ICAgICAgdHJlZSA9IHRyZWUuZ2V0KG5hbWUsIE5vbmUpCi0gICAgICBpZiB0cmVlIGlzIE5vbmU6
Ci0gICAgICAgIGJyZWFrCi0KLSAgICByZXR1cm4gdHJlZQotCi0gICMgU2lsZW5jZXMgcHlsaW50
IHdhcm5pbmcgYWJvdXQgdXNpbmcgc3RhbmRhcmQgbmFtZXMuCi0gICMgcHlsaW50OiBkaXNhYmxl
LW1zZz1DNjQwOQotICBkZWYgbm9ybXBhdGgoc2VsZiwgcGF0aCk6Ci0gICAgcmV0dXJuIG9zLnBh
dGgubm9ybXBhdGgocGF0aCkKLQotICBkZWYgYWJzcGF0aChzZWxmLCBwYXRoKToKLSAgICByZXR1
cm4gc2VsZi5ub3JtcGF0aChvcy5wYXRoLmpvaW4oc2VsZi5jdXJyZW50X2RpciwgcGF0aCkpCi0K
LSAgZGVmIGlzZmlsZShzZWxmLCBwYXRoKToKLSAgICByZXR1cm4gc2VsZi5QYXRoRWxlbWVudChz
ZWxmLmFic3BhdGgocGF0aCkpID09IDEKLQotICBkZWYgaXNkaXIoc2VsZiwgcGF0aCk6Ci0gICAg
cmV0dXJuIHR5cGUoc2VsZi5QYXRoRWxlbWVudChzZWxmLmFic3BhdGgocGF0aCkpKSA9PSB0eXBl
KGRpY3QoKSkKLQotICBkZWYgYmFzZW5hbWUoc2VsZiwgcGF0aCk6Ci0gICAgcmV0dXJuIG9zLnBh
dGguYmFzZW5hbWUocGF0aCkKLQotICBkZWYgZGlybmFtZShzZWxmLCBwYXRoKToKLSAgICByZXR1
cm4gb3MucGF0aC5kaXJuYW1lKHBhdGgpCi0KLSAgZGVmIGpvaW4oc2VsZiwgKmthcmdzKToKLSAg
ICByZXR1cm4gb3MucGF0aC5qb2luKCprYXJncykKLQotCi1jbGFzcyBGYWtlT3Mob2JqZWN0KToK
LSAgIiIiQSBmYWtlIG9zIG1vZHVsZSBmb3IgdGVzdGluZy4iIiIKLSAgUF9XQUlUID0gb3MuUF9X
QUlUCi0KLSAgZGVmIF9faW5pdF9fKHNlbGYsIGZha2VfcGF0aF9tb2R1bGUpOgotICAgIHNlbGYu
cGF0aCA9IGZha2VfcGF0aF9tb2R1bGUKLQotICAgICMgU29tZSBtZXRob2RzL2F0dHJpYnV0ZXMg
YXJlIGRlbGVnYXRlZCB0byB0aGUgcmVhbCBvcyBtb2R1bGUuCi0gICAgc2VsZi5lbnZpcm9uID0g
b3MuZW52aXJvbgotCi0gICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwOQotICBkZWYgbGlzdGRp
cihzZWxmLCBwYXRoKToKLSAgICBhc3NlcnQgc2VsZi5wYXRoLmlzZGlyKHBhdGgpCi0gICAgcmV0
dXJuIHNlbGYucGF0aC5QYXRoRWxlbWVudChwYXRoKS5pdGVya2V5cygpCi0KLSAgZGVmIHNwYXdu
dihzZWxmLCB3YWl0LCBleGVjdXRhYmxlLCAqa2FyZ3MpOgotICAgIGFzc2VydCB3YWl0ID09IEZh
a2VPcy5QX1dBSVQKLSAgICByZXR1cm4gc2VsZi5zcGF3bl9pbXBsKGV4ZWN1dGFibGUsIGthcmdz
KQotCi0KLWNsYXNzIEdldFRlc3RzVG9SdW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgIiIi
RXhlcmNpc2VzIFRlc3RSdW5uZXIuR2V0VGVzdHNUb1J1bi4iIiIKLQotICBkZWYgTm9ybWFsaXpl
R2V0VGVzdHNUb1J1blJlc3VsdHMoc2VsZiwgcmVzdWx0cyk6Ci0gICAgIiIiTm9ybWFsaXplcyBw
YXRoIGRhdGEgcmV0dXJuZWQgZnJvbSBHZXRUZXN0c1RvUnVuIGZvciBjb21wYXJpc29uLiIiIgot
Ci0gICAgZGVmIE5vcm1hbGl6ZVB5dGhvblRlc3RQYWlyKHBhaXIpOgotICAgICAgIiIiTm9ybWFs
aXplcyBwYXRoIGRhdGEgaW4gdGhlIChkaXJlY3RvcnksIHB5dGhvbl9zY3JpcHQpIHBhaXIuIiIi
Ci0KLSAgICAgIHJldHVybiAob3MucGF0aC5ub3JtcGF0aChwYWlyWzBdKSwgb3MucGF0aC5ub3Jt
cGF0aChwYWlyWzFdKSkKLQotICAgIGRlZiBOb3JtYWxpemVCaW5hcnlUZXN0UGFpcihwYWlyKToK
LSAgICAgICIiIk5vcm1hbGl6ZXMgcGF0aCBkYXRhIGluIHRoZSAoZGlyZWN0b3J5LCBiaW5hcnlf
ZXhlY3V0YWJsZSkgcGFpci4iIiIKLQotICAgICAgZGlyZWN0b3J5LCBleGVjdXRhYmxlID0gbWFw
KG9zLnBhdGgubm9ybXBhdGgsIHBhaXIpCi0KLSAgICAgICMgT24gV2luZG93cyBhbmQgQ3lnd2lu
LCB0aGUgdGVzdCBmaWxlIG5hbWVzIGhhdmUgdGhlIC5leGUgZXh0ZW5zaW9uLCBidXQKLSAgICAg
ICMgdGhleSBjYW4gYmUgaW52b2tlZCBlaXRoZXIgYnkgbmFtZSBvciBieSBuYW1lK2V4dGVuc2lv
bi4gT3VyIHRlc3QgbXVzdAotICAgICAgIyBhY2NvbW1vZGF0ZSBib3RoIHNpdHVhdGlvbnMuCi0g
ICAgICBpZiBydW5fdGVzdHNfdXRpbC5JU19XSU5ET1dTIG9yIHJ1bl90ZXN0c191dGlsLklTX0NZ
R1dJTjoKLSAgICAgICAgZXhlY3V0YWJsZSA9IHJlLnN1YihyJ1wuZXhlJCcsICcnLCBleGVjdXRh
YmxlKQotICAgICAgcmV0dXJuIChkaXJlY3RvcnksIGV4ZWN1dGFibGUpCi0KLSAgICBweXRob25f
dGVzdHMgPSBzZXRzLlNldChtYXAoTm9ybWFsaXplUHl0aG9uVGVzdFBhaXIsIHJlc3VsdHNbMF0p
KQotICAgIGJpbmFyeV90ZXN0cyA9IHNldHMuU2V0KG1hcChOb3JtYWxpemVCaW5hcnlUZXN0UGFp
ciwgcmVzdWx0c1sxXSkpCi0gICAgcmV0dXJuIChweXRob25fdGVzdHMsIGJpbmFyeV90ZXN0cykK
LQotICBkZWYgQXNzZXJ0UmVzdWx0c0VxdWFsKHNlbGYsIHJlc3VsdHMsIGV4cGVjdGVkKToKLSAg
ICAiIiJBc3NlcnRzIHJlc3VsdHMgcmV0dXJuZWQgYnkgR2V0VGVzdHNUb1J1biBlcXVhbCB0byBl
eHBlY3RlZCByZXN1bHRzLiIiIgotCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLk5vcm1hbGl6
ZUdldFRlc3RzVG9SdW5SZXN1bHRzKHJlc3VsdHMpLAotICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5Ob3JtYWxpemVHZXRUZXN0c1RvUnVuUmVzdWx0cyhleHBlY3RlZCksCi0gICAgICAgICAgICAg
ICAgICAgICAnSW5jb3JyZWN0IHNldCBvZiB0ZXN0cyByZXR1cm5lZDpcbiVzXG5leHBlY3RlZDpc
biVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAocmVzdWx0cywgZXhwZWN0ZWQpKQotCi0gIGRl
ZiBzZXRVcChzZWxmKToKLSAgICBzZWxmLmZha2Vfb3MgPSBGYWtlT3MoRmFrZVBhdGgoCi0gICAg
ICAgIGN1cnJlbnRfZGlyPW9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUocnVuX3Rlc3Rz
X3V0aWwuX19maWxlX18pKSwKLSAgICAgICAga25vd25fcGF0aHM9W0FkZEV4ZUV4dGVuc2lvbihH
VEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpLAotICAgICAgICAgICAgICAgICAgICAg
QWRkRXhlRXh0ZW5zaW9uKEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAg
ICAgICAgICAgICAgICAgICAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5J10pKQotICAgIHNlbGYu
ZmFrZV9jb25maWd1cmF0aW9ucyA9IFsnZGJnJywgJ29wdCddCi0gICAgc2VsZi50ZXN0X3J1bm5l
ciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5uZXIoc2NyaXB0X2Rpcj0nLicsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5qZWN0ZWRfb3M9c2VsZi5m
YWtlX29zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluamVjdGVkX3N1YnByb2Nlc3M9Tm9uZSkKLQotICBkZWYgdGVzdEJpbmFyeVRlc3RzT25seShz
ZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgR2V0VGVzdHNUb1J1biB3aXRoIHBhcmFtZXRlcnMgZGVz
aWduYXRpbmcgYmluYXJ5IHRlc3RzIG9ubHkuIiIiCi0KLSAgICAjIEEgZGVmYXVsdCBidWlsZC4K
LSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5H
ZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF91bml0dGVzdCddLAotICAgICAgICAg
ICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1
cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAg
ICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkK
LQotICAgICMgQW4gZXhwbGljaXRseSBzcGVjaWZpZWQgZGlyZWN0b3J5LgotICAgIHNlbGYuQXNz
ZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4o
Ci0gICAgICAgICAgICBbR1RFU1RfREJHX0RJUiwgJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAg
ICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZp
Z3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbXSwKLSAgICAg
ICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0p
KQotCi0gICAgIyBBIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJl
c3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAg
ICAgICAgICAgWydndGVzdF91bml0dGVzdCddLAotICAgICAgICAgICAgJ290aGVyJywKLSAgICAg
ICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYu
ZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbXSwKLSAgICAgICAgIFsoR1RFU1RfT1RI
RVJfRElSLCBHVEVTVF9PVEhFUl9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMg
QWxsIGF2YWlsYWJsZSBjb25maWd1cmF0aW9ucwotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFs
KAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBb
J2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAnYWxsJywKLSAgICAgICAgICAgIEZhbHNl
LAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1
cmF0aW9ucyksCi0gICAgICAgIChbXSwKLSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1Rf
REJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAoR1RFU1RfT1BUX0RJUiwg
R1RFU1RfT1BUX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBBbGwgYnVpbHQg
Y29uZmlndXJhdGlvbnMgKHVuYnVpbHQgZG9uJ3QgY2F1c2UgZmFpbHVyZSkuCi0gICAgc2VsZi5B
c3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1
bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICcnLAotICAg
ICAgICAgICAgVHJ1ZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxm
LmZha2VfY29uZmlndXJhdGlvbnMgKyBbJ3VuYnVpbHQnXSksCi0gICAgICAgIChbXSwKLSAgICAg
ICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwK
LSAgICAgICAgICAoR1RFU1RfT1BUX0RJUiwgR1RFU1RfT1BUX0RJUiArICcvZ3Rlc3RfdW5pdHRl
c3QnKV0pKQotCi0gICAgIyBBIGNvbWJpbmF0aW9uIG9mIGFuIGV4cGxpY2l0IGRpcmVjdG9yeSBh
bmQgYSBjb25maWd1cmF0aW9uLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAg
ICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbR1RFU1RfREJH
X0RJUiwgJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAnb3B0JywKLSAgICAgICAgICAg
IEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9j
b25maWd1cmF0aW9ucyksCi0gICAgICAgIChbXSwKLSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwg
R1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAoR1RFU1RfT1BU
X0RJUiwgR1RFU1RfT1BUX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBTYW1l
IHRlc3Qgc3BlY2lmaWVkIGluIGFuIGV4cGxpY2l0IGRpcmVjdG9yeSBhbmQgdmlhIGEgY29uZmln
dXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0
X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIsICdndGVz
dF91bml0dGVzdCddLAotICAgICAgICAgICAgJ2RiZycsCi0gICAgICAgICAgICBGYWxzZSwKLSAg
ICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlv
bnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19E
SVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgQWxsIGJ1aWx0IGNvbmZpZ3VyYXRp
b25zICsgZXhwbGljaXQgZGlyZWN0b3J5ICsgZXhwbGljaXQgY29uZmlndXJhdGlvbi4KLSAgICBz
ZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0
c1RvUnVuKAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIsICdndGVzdF91bml0dGVzdCddLAot
ICAgICAgICAgICAgJ29wdCcsCi0gICAgICAgICAgICBUcnVlLAotICAgICAgICAgICAgYXZhaWxh
YmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChb
XSwKLSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5p
dHRlc3QnKSwKLSAgICAgICAgICAoR1RFU1RfT1BUX0RJUiwgR1RFU1RfT1BUX0RJUiArICcvZ3Rl
c3RfdW5pdHRlc3QnKV0pKQotCi0gIGRlZiB0ZXN0UHl0aG9uVGVzdHNPbmx5KHNlbGYpOgotICAg
ICIiIkV4ZXJjaXNlcyBHZXRUZXN0c1RvUnVuIHdpdGggcGFyYW1ldGVycyBkZXNpZ25hdGluZyBQ
eXRob24gdGVzdHMgb25seS4iIiIKLQotICAgICMgQSBkZWZhdWx0IGJ1aWxkLgotICAgIHNlbGYu
QXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9S
dW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICcn
LAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlv
bnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwg
J3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAgICMgQW4g
ZXhwbGljaXRseSBzcGVjaWZpZWQgZGlyZWN0b3J5LgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0Vx
dWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAg
ICBbR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weSddLAotICAgICAgICAg
ICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1
cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoWyhHVEVTVF9EQkdf
RElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgW10pKQotCi0gICAg
IyBBIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVh
bCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAg
WydndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnb3RoZXInLAotICAgICAgICAg
ICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtl
X2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfT1RIRVJfRElSLCAndGVzdC9ndGVz
dF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgW10pKQotCi0gICAgIyBBbGwgYXZhaWxhYmxl
IGNvbmZpZ3VyYXRpb25zCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNl
bGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsndGVzdC9ndGVzdF9j
b2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnYWxsJywKLSAgICAgICAgICAgIEZhbHNlLAot
ICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0
aW9ucyksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Qu
cHknKSwKLSAgICAgICAgICAoR1RFU1RfT1BUX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5w
eScpXSwKLSAgICAgICAgIFtdKSkKLQotICAgICMgQWxsIGJ1aWx0IGNvbmZpZ3VyYXRpb25zICh1
bmJ1aWx0IGRvbid0IGNhdXNlIGZhaWx1cmUpLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFs
KAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBb
J2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgVHJ1
ZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmln
dXJhdGlvbnMgKyBbJ3VuYnVpbHQnXSksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0
L2d0ZXN0X2NvbG9yX3Rlc3QucHknKSwKLSAgICAgICAgICAoR1RFU1RfT1BUX0RJUiwgJ3Rlc3Qv
Z3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAgICMgQSBjb21iaW5h
dGlvbiBvZiBhbiBleHBsaWNpdCBkaXJlY3RvcnkgYW5kIGEgY29uZmlndXJhdGlvbi4KLSAgICBz
ZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0
c1RvUnVuKAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIsICdndGVzdF9jb2xvcl90ZXN0LnB5
J10sCi0gICAgICAgICAgICAnb3B0JywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAg
YXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAg
ICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKSwKLSAgICAg
ICAgICAoR1RFU1RfT1BUX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAg
ICAgIFtdKSkKLQotICAgICMgU2FtZSB0ZXN0IHNwZWNpZmllZCBpbiBhbiBleHBsaWNpdCBkaXJl
Y3RvcnkgYW5kIHZpYSBhIGNvbmZpZ3VyYXRpb24uCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1
YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAg
IFtHVEVTVF9EQkdfRElSLCAnZ3Rlc3RfY29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJ2Ri
ZycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0
aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElS
LCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgW10pKQotCi0gICAgIyBB
bGwgYnVpbHQgY29uZmlndXJhdGlvbnMgKyBleHBsaWNpdCBkaXJlY3RvcnkgKyBleHBsaWNpdCBj
b25maWd1cmF0aW9uLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxm
LnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbR1RFU1RfREJHX0RJUiwg
J2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICdvcHQnLAotICAgICAgICAgICAg
VHJ1ZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29u
ZmlndXJhdGlvbnMpLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xv
cl90ZXN0LnB5JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIsICd0ZXN0L2d0ZXN0X2NvbG9y
X3Rlc3QucHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgZGVmIHRlc3RDb21iaW5hdGlvbk9mQmlu
YXJ5QW5kUHl0aG9uVGVzdHMoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3RzVG9SdW4g
d2l0aCBtaXhlZCBiaW5hcnkvUHl0aG9uIHRlc3RzLiIiIgotCi0gICAgIyBVc2Ugb25seSBkZWZh
dWx0IGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgdGVzdC4KLQotICAgICMgTmVpdGhlciBiaW5hcnkg
bm9yIFB5dGhvbiB0ZXN0cyBhcmUgc3BlY2lmaWVkIHNvIGZpbmQgYWxsLgotICAgIHNlbGYuQXNz
ZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4o
Ci0gICAgICAgICAgICBbXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0g
ICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRp
b25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5w
eScpXSwKLSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3Rf
dW5pdHRlc3QnKV0pKQotCi0gICAgIyBTcGVjaWZ5aW5nIGJvdGggYmluYXJ5IGFuZCBQeXRob24g
dGVzdHMuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9y
dW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnLCAnZ3Rl
c3RfY29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwK
LSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJh
dGlvbnMpLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0
LnB5JyldLAotICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVz
dF91bml0dGVzdCcpXSkpCi0KLSAgICAjIFNwZWNpZnlpbmcgYmluYXJ5IHRlc3RzIHN1cHByZXNz
ZXMgUHl0aG9uIHRlc3RzLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBz
ZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X3VuaXR0
ZXN0J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAg
YXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAg
ICAgIChbXSwKLSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rl
c3RfdW5pdHRlc3QnKV0pKQotCi0gICAjIFNwZWNpZnlpbmcgUHl0aG9uIHRlc3RzIHN1cHByZXNz
ZXMgYmluYXJ5IHRlc3RzLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBz
ZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X2NvbG9y
X3Rlc3QucHknXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAg
ICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwK
LSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwK
LSAgICAgICAgIFtdKSkKLQotICBkZWYgdGVzdElnbm9yZXNOb25UZXN0RmlsZXMoc2VsZik6Ci0g
ICAgIiIiVmVyaWZpZXMgdGhhdCBHZXRUZXN0c1RvUnVuIGlnbm9yZXMgbm9uLXRlc3QgZmlsZXMg
aW4gdGhlIGZpbGVzeXN0ZW0uIiIiCi0KLSAgICBzZWxmLmZha2Vfb3MgPSBGYWtlT3MoRmFrZVBh
dGgoCi0gICAgICAgIGN1cnJlbnRfZGlyPW9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUo
cnVuX3Rlc3RzX3V0aWwuX19maWxlX18pKSwKLSAgICAgICAga25vd25fcGF0aHM9W0FkZEV4ZUV4
dGVuc2lvbihHVEVTVF9EQkdfRElSICsgJy9ndGVzdF9ub250ZXN0JyksCi0gICAgICAgICAgICAg
ICAgICAgICAndGVzdC8nXSkpCi0gICAgc2VsZi50ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGls
LlRlc3RSdW5uZXIoc2NyaXB0X2Rpcj0nLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5qZWN0ZWRfb3M9c2VsZi5mYWtlX29zLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluamVjdGVkX3N1YnByb2Nl
c3M9Tm9uZSkKLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0
X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgW10sCi0gICAgICAgICAgICAnJywK
LSAgICAgICAgICAgIFRydWUsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9
c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFtdLCBbXSkpCi0KLSAgZGVmIHRl
c3RXb3Jrc0Zyb21EaWZmZXJlbnREaXIoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3Rz
VG9SdW4gZnJvbSBhIGRpcmVjdG9yeSBkaWZmZXJlbnQgZnJvbSBydW5fdGVzdC5weSdzLiIiIgot
Ci0gICAgIyBIZXJlIHdlIHNpbXVsYXRlIGFuIHRlc3Qgc2NyaXB0IGluIGRpcmVjdG9yeSAvZC8g
Y2FsbGVkIGZyb20gdGhlCi0gICAgIyBkaXJlY3RvcnkgL2EvYi9jLy4KLSAgICBzZWxmLmZha2Vf
b3MgPSBGYWtlT3MoRmFrZVBhdGgoCi0gICAgICAgIGN1cnJlbnRfZGlyPW9zLnBhdGguYWJzcGF0
aCgnL2EvYi9jJyksCi0gICAgICAgIGtub3duX3BhdGhzPVsKLSAgICAgICAgICAgICcvYS9iL2Mv
JywKLSAgICAgICAgICAgIEFkZEV4ZUV4dGVuc2lvbignL2QvJyArIEdURVNUX0RCR19ESVIgKyAn
L2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgICBBZGRFeGVFeHRlbnNpb24oJy9kLycgKyBH
VEVTVF9PUFRfRElSICsgJy9ndGVzdF91bml0dGVzdCcpLAotICAgICAgICAgICAgJy9kL3Rlc3Qv
Z3Rlc3RfY29sb3JfdGVzdC5weSddKSkKLSAgICBzZWxmLmZha2VfY29uZmlndXJhdGlvbnMgPSBb
J2RiZycsICdvcHQnXQotICAgIHNlbGYudGVzdF9ydW5uZXIgPSBydW5fdGVzdHNfdXRpbC5UZXN0
UnVubmVyKHNjcmlwdF9kaXI9Jy9kLycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5qZWN0ZWRfb3M9c2VsZi5mYWtlX29zLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluamVjdGVkX3N1YnByb2Nlc3M9
Tm9uZSkKLSAgICAjIEEgYmluYXJ5IHRlc3QuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwo
Ci0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsn
Z3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0g
ICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRp
b25zKSwKLSAgICAgICAgKFtdLAotICAgICAgICAgWygnL2QvJyArIEdURVNUX0RCR19ESVIsICcv
ZC8nICsgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBBIFB5
dGhvbiB0ZXN0LgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRl
c3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X2NvbG9yX3Rlc3Qu
cHknXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBh
dmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAg
ICAgKFsoJy9kLycgKyBHVEVTVF9EQkdfRElSLCAnL2QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5
JyldLCBbXSkpCi0KLSAgZGVmIHRlc3ROb25UZXN0QmluYXJ5KHNlbGYpOgotICAgICIiIkV4ZXJj
aXNlcyBHZXRUZXN0c1RvUnVuIHdpdGggYSBub24tdGVzdCBwYXJhbWV0ZXIuIiIiCi0KLSAgICBz
ZWxmLmFzc2VydF8oCi0gICAgICAgIG5vdCBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4o
Ci0gICAgICAgICAgICBbJ2d0ZXN0X3VuaXR0ZXN0X25vdF9yZWFsbHknXSwKLSAgICAgICAgICAg
ICcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJh
dGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSkKLQotICBkZWYgdGVzdE5vbkV4aXN0aW5n
UHl0aG9uVGVzdChzZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgR2V0VGVzdHNUb1J1biB3aXRoIGEg
bm9uLWV4aXN0ZW50IFB5dGhvbiB0ZXN0IHBhcmFtZXRlci4iIiIKLQotICAgIHNlbGYuYXNzZXJ0
XygKLSAgICAgICAgbm90IHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAg
ICAgIFsnbm9uZXhpc3RlbnRfdGVzdC5weSddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAg
ICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2Vf
Y29uZmlndXJhdGlvbnMpKQotCi0gIGlmIHJ1bl90ZXN0c191dGlsLklTX1dJTkRPV1Mgb3IgcnVu
X3Rlc3RzX3V0aWwuSVNfQ1lHV0lOOgotCi0gICAgZGVmIHRlc3REb2VzTm90UGlja05vbkV4ZUZp
bGVzT25XaW5kb3dzKHNlbGYpOgotICAgICAgIiIiVmVyaWZpZXMgdGhhdCBHZXRUZXN0c1RvUnVu
IGRvZXMgbm90IGZpbmQgX3Rlc3QgZmlsZXMgb24gV2luZG93cy4iIiIKLQotICAgICAgc2VsZi5m
YWtlX29zID0gRmFrZU9zKEZha2VQYXRoKAotICAgICAgICAgIGN1cnJlbnRfZGlyPW9zLnBhdGgu
YWJzcGF0aChvcy5wYXRoLmRpcm5hbWUocnVuX3Rlc3RzX3V0aWwuX19maWxlX18pKSwKLSAgICAg
ICAgICBrbm93bl9wYXRocz1bJy9kLycgKyBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF90ZXN0Jywg
J3Rlc3QvJ10pKQotICAgICAgc2VsZi50ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRlc3RS
dW5uZXIoc2NyaXB0X2Rpcj0nLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmplY3RlZF9vcz1zZWxmLmZha2Vfb3MsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3RlZF9zdWJwcm9jZXNz
PU5vbmUpCi0gICAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgICBzZWxmLnRl
c3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICAgIFtdLAotICAgICAgICAgICAg
ICAnJywKLSAgICAgICAgICAgICAgVHJ1ZSwKLSAgICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZp
Z3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgICAgKFtdLCBbXSkp
Ci0KLQotY2xhc3MgUnVuVGVzdHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgIiIiRXhlcmNp
c2VzIFRlc3RSdW5uZXIuUnVuVGVzdHMuIiIiCi0KLSAgZGVmIFNwYXduU3VjY2VzcyhzZWxmLCB1
bnVzZWRfZXhlY3V0YWJsZSwgdW51c2VkX2FyZ3YpOgotICAgICIiIkZha2VzIHRlc3Qgc3VjY2Vz
cyBieSByZXR1cm5pbmcgMCBhcyBhbiBleGl0IGNvZGUuIiIiCi0KLSAgICBzZWxmLm51bV9zcGF3
bl9jYWxscyArPSAxCi0gICAgcmV0dXJuIDAKLQotICBkZWYgU3Bhd25GYWlsdXJlKHNlbGYsIHVu
dXNlZF9leGVjdXRhYmxlLCB1bnVzZWRfYXJndik6Ci0gICAgIiIiRmFrZXMgdGVzdCBzdWNjZXNz
IGJ5IHJldHVybmluZyAxIGFzIGFuIGV4aXQgY29kZS4iIiIKLQotICAgIHNlbGYubnVtX3NwYXdu
X2NhbGxzICs9IDEKLSAgICByZXR1cm4gMQotCi0gIGRlZiBzZXRVcChzZWxmKToKLSAgICBzZWxm
LmZha2Vfb3MgPSBGYWtlT3MoRmFrZVBhdGgoCi0gICAgICAgIGN1cnJlbnRfZGlyPW9zLnBhdGgu
YWJzcGF0aChvcy5wYXRoLmRpcm5hbWUocnVuX3Rlc3RzX3V0aWwuX19maWxlX18pKSwKLSAgICAg
ICAga25vd25fcGF0aHM9WwotICAgICAgICAgICAgQWRkRXhlRXh0ZW5zaW9uKEdURVNUX0RCR19E
SVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgICBBZGRFeGVFeHRlbnNpb24oR1RF
U1RfT1BUX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAgICd0ZXN0L2d0ZXN0
X2NvbG9yX3Rlc3QucHknXSkpCi0gICAgc2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zID0gWydkYmcn
LCAnb3B0J10KLSAgICBzZWxmLnRlc3RfcnVubmVyID0gcnVuX3Rlc3RzX3V0aWwuVGVzdFJ1bm5l
cigKLSAgICAgICAgc2NyaXB0X2Rpcj1vcy5wYXRoLmRpcm5hbWUoX19maWxlX18pIG9yICcuJywK
LSAgICAgICAgaW5qZWN0ZWRfb3M9c2VsZi5mYWtlX29zLAotICAgICAgICBpbmplY3RlZF9zdWJw
cm9jZXNzPU5vbmUpCi0gICAgc2VsZi5udW1fc3Bhd25fY2FsbHMgPSAwICAjIEEgbnVtYmVyIG9m
IGNhbGxzIHRvIHNwYXduLgotCi0gIGRlZiB0ZXN0UnVuUHl0aG9uVGVzdFN1Y2Nlc3Moc2VsZik6
Ci0gICAgIiIiRXhlcmNpc2VzIFJ1blRlc3RzIHRvIGhhbmRsZSBhIFB5dGhvbiB0ZXN0IHN1Y2Nl
c3MuIiIiCi0KLSAgICBzZWxmLmZha2Vfb3Muc3Bhd25faW1wbCA9IHNlbGYuU3Bhd25TdWNjZXNz
Ci0gICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5SdW5UZXN0
cygKLSAgICAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5w
eScpXSwKLSAgICAgICAgICAgIFtdKSwKLSAgICAgICAgMCkKLSAgICBzZWxmLmFzc2VydEVxdWFs
KHNlbGYubnVtX3NwYXduX2NhbGxzLCAxKQotCi0gIGRlZiB0ZXN0UnVuQmluYXJ5VGVzdFN1Y2Nl
c3Moc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIFJ1blRlc3RzIHRvIGhhbmRsZSBhIGJpbmFyeSB0
ZXN0IHN1Y2Nlc3MuIiIiCi0KLSAgICBzZWxmLmZha2Vfb3Muc3Bhd25faW1wbCA9IHNlbGYuU3Bh
d25TdWNjZXNzCi0gICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5l
ci5SdW5UZXN0cygKLSAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElS
LCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSksCi0gICAgICAgIDApCi0gICAg
c2VsZi5hc3NlcnRFcXVhbChzZWxmLm51bV9zcGF3bl9jYWxscywgMSkKLQotICBkZWYgdGVzdFJ1
blB5dGhvblRlc3RGYXVpbHVyZShzZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgUnVuVGVzdHMgdG8g
aGFuZGxlIGEgUHl0aG9uIHRlc3QgZmFpbHVyZS4iIiIKLQotICAgIHNlbGYuZmFrZV9vcy5zcGF3
bl9pbXBsID0gc2VsZi5TcGF3bkZhaWx1cmUKLSAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAg
ICBzZWxmLnRlc3RfcnVubmVyLlJ1blRlc3RzKAotICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElS
LCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgICAgW10pLAotICAgICAg
ICAxKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5udW1fc3Bhd25fY2FsbHMsIDEpCi0KLSAg
ZGVmIHRlc3RSdW5CaW5hcnlUZXN0RmFpbHVyZShzZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgUnVu
VGVzdHMgdG8gaGFuZGxlIGEgYmluYXJ5IHRlc3QgZmFpbHVyZS4iIiIKLQotICAgIHNlbGYuZmFr
ZV9vcy5zcGF3bl9pbXBsID0gc2VsZi5TcGF3bkZhaWx1cmUKLSAgICBzZWxmLmFzc2VydEVxdWFs
KAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLlJ1blRlc3RzKAotICAgICAgICAgICAgW10sCi0g
ICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0
ZXN0JyldKSwKLSAgICAgICAgMSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnVtX3NwYXdu
X2NhbGxzLCAxKQotCi0gIGRlZiB0ZXN0Q29tYmluZWRUZXN0U3VjY2VzcyhzZWxmKToKLSAgICAi
IiJFeGVyY2lzZXMgUnVuVGVzdHMgdG8gaGFuZGxlIGEgc3VjY2VzcyBvZiBib3RoIFB5dGhvbiBh
bmQgYmluYXJ5IHRlc3QuIiIiCi0KLSAgICBzZWxmLmZha2Vfb3Muc3Bhd25faW1wbCA9IHNlbGYu
U3Bhd25TdWNjZXNzCi0gICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1
bm5lci5SdW5UZXN0cygKLSAgICAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJ
UiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0sCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdU
RVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSwKLSAgICAgICAgMCkKLSAgICBzZWxm
LmFzc2VydEVxdWFsKHNlbGYubnVtX3NwYXduX2NhbGxzLCAyKQotCi0gIGRlZiB0ZXN0Q29tYmlu
ZWRUZXN0U3VjY2Vzc0FuZEZhaWx1cmUoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIFJ1blRlc3Rz
IHRvIGhhbmRsZSBhIHN1Y2Nlc3Mgb2YgYm90aCBQeXRob24gYW5kIGJpbmFyeSB0ZXN0LiIiIgot
Ci0gICAgZGVmIFNwYXduSW1wbChleGVjdXRhYmxlLCBhcmd2KToKLSAgICAgIHNlbGYubnVtX3Nw
YXduX2NhbGxzICs9IDEKLSAgICAgICMgU2ltdWxhdGVzIGZhaWx1cmUgb2YgYSBQeXRob24gdGVz
dCBhbmQgc3VjY2VzcyBvZiBhIGJpbmFyeSB0ZXN0LgotICAgICAgaWYgJy5weScgaW4gZXhlY3V0
YWJsZSBvciAnLnB5JyBpbiBhcmd2WzBdOgotICAgICAgICByZXR1cm4gMQotICAgICAgZWxzZToK
LSAgICAgICAgcmV0dXJuIDAKLQotICAgIHNlbGYuZmFrZV9vcy5zcGF3bl9pbXBsID0gU3Bhd25J
bXBsCi0gICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5SdW5U
ZXN0cygKLSAgICAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rl
c3RfdW5pdHRlc3QnKV0sCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19E
SVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSwKLSAgICAgICAgMCkKLSAgICBzZWxmLmFzc2VydEVx
dWFsKHNlbGYubnVtX3NwYXduX2NhbGxzLCAyKQotCi0KLWNsYXNzIFBhcnNlQXJnc1Rlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgotICAiIiJFeGVyY2lzZXMgUGFyc2VBcmdzLiIiIgotCi0gIGRlZiB0
ZXN0Tm9PcHRpb25zKHNlbGYpOgotICAgIG9wdGlvbnMsIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5Q
YXJzZUFyZ3MoJ2d0ZXN0JywgYXJndj1bJ3NjcmlwdC5weSddKQotICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYXJncywgWydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydF8ob3B0aW9ucy5jb25maWd1
cmF0aW9ucyBpcyBOb25lKQotICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3B0aW9ucy5idWlsdF9jb25m
aWd1cmF0aW9ucykKLQotICBkZWYgdGVzdE9wdGlvbkMoc2VsZik6Ci0gICAgb3B0aW9ucywgYXJn
cyA9IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygKLSAgICAgICAgJ2d0ZXN0JywgYXJndj1bJ3Nj
cmlwdC5weScsICctYycsICdkYmcnXSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsnc2Ny
aXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLmNvbmZpZ3VyYXRpb25zLCAn
ZGJnJykKLSAgICBzZWxmLmFzc2VydEZhbHNlKG9wdGlvbnMuYnVpbHRfY29uZmlndXJhdGlvbnMp
Ci0KLSAgZGVmIHRlc3RPcHRpb25BKHNlbGYpOgotICAgIG9wdGlvbnMsIGFyZ3MgPSBydW5fdGVz
dHNfdXRpbC5QYXJzZUFyZ3MoJ2d0ZXN0JywgYXJndj1bJ3NjcmlwdC5weScsICctYSddKQotICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgWydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydEVx
dWFsKG9wdGlvbnMuY29uZmlndXJhdGlvbnMsICdhbGwnKQotICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
b3B0aW9ucy5idWlsdF9jb25maWd1cmF0aW9ucykKLQotICBkZWYgdGVzdE9wdGlvbkIoc2VsZik6
Ci0gICAgb3B0aW9ucywgYXJncyA9IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygnZ3Rlc3QnLCBh
cmd2PVsnc2NyaXB0LnB5JywgJy1iJ10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBbJ3Nj
cmlwdC5weSddKQotICAgIHNlbGYuYXNzZXJ0XyhvcHRpb25zLmNvbmZpZ3VyYXRpb25zIGlzIE5v
bmUpCi0gICAgc2VsZi5hc3NlcnRUcnVlKG9wdGlvbnMuYnVpbHRfY29uZmlndXJhdGlvbnMpCi0K
LSAgZGVmIHRlc3RPcHRpb25DQW5kT3B0aW9uQihzZWxmKToKLSAgICBvcHRpb25zLCBhcmdzID0g
cnVuX3Rlc3RzX3V0aWwuUGFyc2VBcmdzKAotICAgICAgICAnZ3Rlc3QnLCBhcmd2PVsnc2NyaXB0
LnB5JywgJy1jJywgJ2RiZycsICctYiddKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgWydz
Y3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMuY29uZmlndXJhdGlvbnMs
ICdkYmcnKQotICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRpb25z
KQotCi0gIGRlZiB0ZXN0T3B0aW9uSChzZWxmKToKLSAgICBoZWxwX2NhbGxlZCA9IFtGYWxzZV0K
LQotICAgICMgU3VwcHJlc3NlcyBsaW50IHdhcm5pbmcgb24gdW51c2VkIGFyZ3VtZW50cy4gIFRo
ZXNlIGFyZ3VtZW50cyBhcmUKLSAgICAjIHJlcXVpcmVkIGJ5IG9wdHBhcnNlLCBldmVuIHRob3Vn
aCB0aGV5IGFyZSB1bnVzZWQuCi0gICAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPVcwNjEzCi0gICAg
ZGVmIFZlcmlmeUhlbHAob3B0aW9uLCBvcHQsIHZhbHVlLCBwYXJzZXIpOgotICAgICAgaGVscF9j
YWxsZWRbMF0gPSBUcnVlCi0KLSAgICAjIFZlcmlmaWVzIHRoYXQgLWggY2F1c2VzIHRoZSBoZWxw
IGNhbGxiYWNrIHRvIGJlIGNhbGxlZC4KLSAgICBoZWxwX2NhbGxlZFswXSA9IEZhbHNlCi0gICAg
XywgYXJncyA9IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygKLSAgICAgICAgJ2d0ZXN0JywgYXJn
dj1bJ3NjcmlwdC5weScsICctaCddLCBoZWxwX2NhbGxiYWNrPVZlcmlmeUhlbHApCi0gICAgc2Vs
Zi5hc3NlcnRFcXVhbChhcmdzLCBbJ3NjcmlwdC5weSddKQotICAgIHNlbGYuYXNzZXJ0VHJ1ZSho
ZWxwX2NhbGxlZFswXSkKLQotICAgICMgVmVyaWZpZXMgdGhhdCAtLWhlbHAgY2F1c2VzIHRoZSBo
ZWxwIGNhbGxiYWNrIHRvIGJlIGNhbGxlZC4KLSAgICBoZWxwX2NhbGxlZFswXSA9IEZhbHNlCi0g
ICAgXywgYXJncyA9IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygKLSAgICAgICAgJ2d0ZXN0Jywg
YXJndj1bJ3NjcmlwdC5weScsICctLWhlbHAnXSwgaGVscF9jYWxsYmFjaz1WZXJpZnlIZWxwKQot
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgWydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2Vy
dFRydWUoaGVscF9jYWxsZWRbMF0pCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAg
dW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29k
ZS9Db25maWcvRGVidWdQcm9qZWN0LnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
eGNvZGUvQ29uZmlnL0RlYnVnUHJvamVjdC54Y2NvbmZpZwppbmRleCA1NzZmM2Q5YmYwZTI0ZjZl
ZTk4OTE4MTNlNGUxOGU0ZjFjMWJlNDYyLi42NDU3MDFlMjJkNjA1ZWM0MjIzOWYzMGMzMzBjNDU0
ZGI3MDlhNWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25m
aWcvRGVidWdQcm9qZWN0LnhjY29uZmlnCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hj
b2RlL0NvbmZpZy9EZWJ1Z1Byb2plY3QueGNjb25maWcKQEAgLTUsNyArNSw3IEBACiAvLyAgZXhh
bXBsZXMuIEl0IGlzIHNldCBpbiB0aGUgIkJhc2VkIE9uOiIgZHJvcGRvd24gaW4gdGhlICJQcm9q
ZWN0IiBpbmZvCiAvLyAgZGlhbG9nLgogLy8gIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiB0aGUgWGNv
ZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBpbjoKLS8vICBodHRwOi8vY29kZS5nb29nbGUuY29tL3Av
Z29vZ2xlLXRvb2xib3gtZm9yLW1hYy8KKy8vICBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dv
b2dsZS10b29sYm94LWZvci1tYWMKIC8vIAogCiAjaW5jbHVkZSAiR2VuZXJhbC54Y2NvbmZpZyIK
QEAgLTI4LDEyICsyOCwzIEBAIE9USEVSX0NGTEFHUyA9ICQoT1RIRVJfQ0ZMQUdTKSAtRERFQlVH
PTEKIC8vIFRoZXNlIGFyZSB0dXJuZWQgb2ZmIHRvIGF2b2lkIFNUTCBpbmNvbXBhdGliaWxpdGll
cyB3aXRoIGNsaWVudCBjb2RlCiAvLyAvLyBUdXJucyBvbiBzcGVjaWFsIEMrKyBTVEwgY2hlY2tz
IHRvICJlbmNvdXJhZ2UiIGdvb2QgU1RMIHVzZQogLy8gR0NDX1BSRVBST0NFU1NPUl9ERUZJTklU
SU9OUyA9ICQoR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUykgX0dMSUJDWFhfREVCVUdfUEVE
QU5USUMgX0dMSUJDWFhfREVCVUcgX0dMSUJDUFBfQ09OQ0VQVF9DSEVDS1MKLQotLy8gVXNlZCBi
eSBIRUFERVJfU0VBUkNIX1BBVEhTIGluIEdlbmVyYWwueGNjb25maWcKLVdFQkNPUkVfUFJJVkFU
RV9IRUFERVJTX0RJUiA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9XZWJDb3JlLmZyYW1ld29yay9Q
cml2YXRlSGVhZGVyczsKLQotT05MWV9BQ1RJVkVfQVJDSCA9IFlFUwotCi1TREtST09UID0gJChT
REtST09UXyQoVVNFX0lOVEVSTkFMX1NESykpOwotU0RLUk9PVF8gPSBtYWNvc3g7Ci1TREtST09U
X1lFUyA9IG1hY29zeC5pbnRlcm5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3hjb2RlL0NvbmZpZy9GcmFtZXdvcmtUYXJnZXQueGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC94Y29kZS9Db25maWcvRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnCmluZGV4IGY0
ZGE5ZDIzOTkxNjM1YWJkY2RhODJiNmEwNmVhYzNmYzg1ODkwYWQuLjc3MDgxZmJjYjA1YTA2NTk2
YWM3NDE5ZGVlNDhhZjY0MzJlY2YzMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3hjb2RlL0NvbmZpZy9GcmFtZXdvcmtUYXJnZXQueGNjb25maWcKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0ZyYW1ld29ya1RhcmdldC54Y2NvbmZpZwpAQCAt
NCw3ICs0LDcgQEAKIC8vICBUaGVzZSBhcmUgRnJhbWV3b3JrIHRhcmdldCBzZXR0aW5ncyBmb3Ig
dGhlIGd0ZXN0IGZyYW1ld29yayBhbmQgZXhhbXBsZXMuIEl0CiAvLyAgaXMgc2V0IGluIHRoZSAi
QmFzZWQgT246IiBkcm9wZG93biBpbiB0aGUgIlRhcmdldCIgaW5mbyBkaWFsb2cuCiAvLyAgVGhp
cyBmaWxlIGlzIGJhc2VkIG9uIHRoZSBYY29kZSBDb25maWd1cmF0aW9uIGZpbGVzIGluOgotLy8g
IGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGUtdG9vbGJveC1mb3ItbWFjLworLy8gIGh0
dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYwogLy8gCiAKIC8v
IER5bmFtaWMgbGlicyBuZWVkIHRvIGJlIHBvc2l0aW9uIGluZGVwZW5kZW50CkBAIC0xNSw1ICsx
NSwzIEBAIFNUUklQX1NUWUxFID0gbm9uLWdsb2JhbAogCiAvLyBMZXQgdGhlIHVzZXIgaW5zdGFs
bCBieSBzcGVjaWZ5aW5nIHRoZSAkRFNUUk9PVCB3aXRoIHhjb2RlYnVpbGQKIFNLSVBfSU5TVEFM
TCA9IE5PCi0KLUlOU1RBTExfUEFUSCA9ICQoU1lTVEVNX0xJQlJBUllfRElSKS9Qcml2YXRlRnJh
bWV3b3JrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZp
Zy9HZW5lcmFsLnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmln
L0dlbmVyYWwueGNjb25maWcKaW5kZXggM2JkMmE1ODZhNTcwNWZjZjY2ZWMyZDk1OTJhZmFjM2Q4
ZDZkN2RlMC4uMWFiYTQ4NmYwNTliNDcyZGJjNzMzMTY2MTRiNDk2ZmU0YTYwMWM3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0dlbmVyYWwueGNjb25m
aWcKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0dlbmVyYWwueGNj
b25maWcKQEAgLTQsMjEgKzQsMTEgQEAKIC8vICBUaGVzZSBhcmUgR2VuZXJhbCBjb25maWd1cmF0
aW9uIHNldHRpbmdzIGZvciB0aGUgZ3Rlc3QgZnJhbWV3b3JrIGFuZAogLy8gIGV4YW1wbGVzLgog
Ly8gIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBp
bjoKLS8vICBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8K
LS8vCi0KLSNpbmNsdWRlPyAiLi4vLi4vLi4vLi4vLi4vLi4vSW50ZXJuYWwvQ29uZmlndXJhdGlv
bnMvSGF2ZUludGVybmFsU0RLLnhjY29uZmlnIgotCi1VU0VfSU5URVJOQUxfU0RLID0gJChVU0Vf
SU5URVJOQUxfU0RLXyQoQ09ORklHVVJBVElPTikpOwotVVNFX0lOVEVSTkFMX1NES19Qcm9kdWN0
aW9uID0gWUVTOwotVVNFX0lOVEVSTkFMX1NES19EZWJ1ZyA9ICQoSEFWRV9JTlRFUk5BTF9TREsp
OwotVVNFX0lOVEVSTkFMX1NES19SZWxlYXNlID0gJChIQVZFX0lOVEVSTkFMX1NESyk7Ci0KLUdD
Q19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKLQotQVJDSFMg
PSAkKEFSQ0hTX1NUQU5EQVJEXzMyXzY0X0JJVCk7CisvLyAgaHR0cHM6Ly9naXRodWIuY29tL2dv
b2dsZS9nb29nbGUtdG9vbGJveC1mb3ItbWFjCisvLyAKIAotSEVBREVSX1NFQVJDSF9QQVRIUyA9
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZSAiJChXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVIpL0ZvcndhcmRpbmdIZWFkZXJzIiAuLi8gLi4vaW5jbHVkZS8KKy8vIEJ1
aWxkIGZvciBQUEMgYW5kIEludGVsLCAzMi0gYW5kIDY0LWJpdAorQVJDSFMgPSBpMzg2IHg4Nl82
NCBwcGMgcHBjNjQKIAogLy8gWmVyb2xpbmsgcHJldmVudHMgbGluayB3YXJuaW5ncyBzbyB0dXJu
IGl0IG9mZgogWkVST19MSU5LID0gTk8KQEAgLTI3LDIxICsxNyw3IEBAIFpFUk9fTElOSyA9IE5P
CiBQUkVCSU5ESU5HID0gTk8KIAogLy8gU3RyaWN0ZXN0IHdhcm5pbmcgcG9saWN5Ci1XQVJOSU5H
X0NGTEFHUyA9IC1XYWxsIC1XZXJyb3IgLVdlbmRpZi1sYWJlbHMgLVduZXdsaW5lLWVvZiAtV25v
LXNpZ24tY29tcGFyZSAtV3NoYWRvdzsKLUNMQU5HX1dBUk5fQk9PTF9DT05WRVJTSU9OID0gWUVT
OwotQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05WRVJTSU9OID0gWUVTOwotQ0xBTkdfV0FSTl9FTVBU
WV9CT0RZID0gWUVTOwotQ0xBTkdfV0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZRVM7Ci1DTEFOR19X
QVJOX0lOVF9DT05WRVJTSU9OID0gWUVTOwotQ0xBTkdfV0FSTl9TVFJJQ1RfUFJPVE9UWVBFUyA9
IFlFUzsKLUNMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZRVM7Ci1FTkFCTEVf
U1RSSUNUX09CSkNfTVNHU0VORCA9IFlFUzsKLUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJT
SU9OID0gWUVTOwotR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7Ci1HQ0NfV0FSTl9V
TkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOwotR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9
IFlFUzsKLUdDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlFUzsKLUdDQ19XQVJOX1VOVVNFRF9W
QVJJQUJMRSA9IFlFUzsKK1dBUk5JTkdfQ0ZMQUdTID0gLVdhbGwgLVdlcnJvciAtV2VuZGlmLWxh
YmVscyAtV25ld2xpbmUtZW9mIC1Xbm8tc2lnbi1jb21wYXJlIC1Xc2hhZG93CiAKIC8vIFdvcmsg
YXJvdW5kIFhjb2RlIGJ1Z3MgYnkgdXNpbmcgZXh0ZXJuYWwgc3RyaXAuIFNlZToKIC8vIGh0dHA6
Ly9saXN0cy5hcHBsZS5jb20vYXJjaGl2ZXMvWGNvZGUtdXNlcnMvMjAwNi9GZWIvbXNnMDAwNTAu
aHRtbApAQCAtNTAsMjcgKzI2LDE2IEBAIFNFUEFSQVRFX1NUUklQID0gWUVTCiAvLyBGb3JjZSBD
OTkgZGlhbGVjdAogR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBjOTkKIAotLy8gRm9yY2UgQysr
MTQKLUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9IGdudSsrMTQ7Ci0KIC8vIG5vdCBzdXJl
IHdoeSBhcHBsZSBkZWZhdWx0cyB0aGlzIG9uLCBidXQgaXQncyBwcmV0dHkgcmlza3kKIEFMV0FZ
U19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5PCiAKIC8vIFR1cm4gb24gcG9zaXRpb24gZGVwZW5kZW50
IGNvZGUgZm9yIG1vc3QgY2FzZXMgKG92ZXJyaWRkZW4gd2hlcmUgYXBwcm9wcmlhdGUpCiBHQ0Nf
RFlOQU1JQ19OT19QSUMgPSBZRVMKIAotR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQo
R0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUykgR1RFU1RfSEFTX1RSMV9UVVBMRT0wIEdURVNU
X0hBU19SVFRJPTA7Ci0KLUNMQU5HX0NYWF9MSUJSQVJZID0gbGliYysrOwotCi1UQVJHRVRfTUFD
X09TX1hfVkVSU0lPTl9NQUpPUiA9ICQoTUFDX09TX1hfVkVSU0lPTl9NQUpPUik7Ci0KLUNPTUJJ
TkVfSElEUElfSU1BR0VTID0gWUVTOworLy8gRGVmYXVsdCBTREsgYW5kIG1pbmltdW0gT1MgdmVy
c2lvbiBpcyAxMC40CitTREtST09UID0gJChERVZFTE9QRVJfU0RLX0RJUikvTWFjT1NYMTAuNHUu
c2RrCitNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC40CitHQ0NfVkVSU0lPTiA9IDQuMAog
CiAvLyBWRVJTSU9OSU5HIEJVSUxEIFNFVFRJTkdTICh1c2VkIGluIEluZm8ucGxpc3QpCiBHVEVT
VF9WRVJTSU9OSU5GT19BQk9VVCA9ICDCqSAyMDA4IEdvb2dsZSBJbmMuCi1PVEhFUl9DRkxBR1Mg
PSAkKEFTQU5fT1RIRVJfQ0ZMQUdTKTsKLU9USEVSX0NQTFVTUExVU0ZMQUdTID0gJChBU0FOX09U
SEVSX0NQTFVTUExVU0ZMQUdTKTsKLU9USEVSX0xERkxBR1MgPSAkKEFTQU5fT1RIRVJfTERGTEFH
Uyk7Ci0KLVNVUFBPUlRFRF9QTEFURk9STVMgPSBpcGhvbmVvcyBpcGhvbmVzaW11bGF0b3IgbWFj
b3N4IHR2b3MgdHZzaW11bGF0b3Igd2F0Y2hvcyB3YXRjaHNpbXVsYXRvcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9Qcm9kdWN0aW9uUHJvamVjdC54
Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9Qcm9kdWN0aW9u
UHJvamVjdC54Y2NvbmZpZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE2YzY4Nzhl
OTc2MTAxODhkYWE4NjI5ZDM1MjFhYjk0Nzc2YmFjNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25m
aWcvUHJvZHVjdGlvblByb2plY3QueGNjb25maWcKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCww
IEBACi0vLwotLy8gIFByb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmlnCi0vLwotLy8gIFRoZXNlIGFy
ZSBQcm9kdWN0aW9uIENvbmZpZ3VyYXRpb24gcHJvamVjdCBzZXR0aW5ncyBmb3IgdGhlIGd0ZXN0
IGZyYW1ld29yawotLy8gIGFuZCBleGFtcGxlcy4gSXQgaXMgc2V0IGluIHRoZSAiQmFzZWQgT246
IiBkcm9wZG93biBpbiB0aGUgIlByb2plY3QiIGluZm8KLS8vICBkaWFsb2cuCi0vLyAgVGhpcyBm
aWxlIGlzIGJhc2VkIG9uIHRoZSBYY29kZSBDb25maWd1cmF0aW9uIGZpbGVzIGluOgotLy8gIGh0
dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGUtdG9vbGJveC1mb3ItbWFjLwotLy8gCi0KLSNp
bmNsdWRlICJSZWxlYXNlUHJvamVjdC54Y2NvbmZpZyIKLQotLy8gVXNlZCBieSBIRUFERVJfU0VB
UkNIX1BBVEhTIGluIEdlbmVyYWwueGNjb25maWcKLVdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJ
UiA9ICQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSXyQoV0tfVVNFX09WRVJSSURFX0ZSQU1F
V09SS1NfRElSKSk7Ci1XRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVJfTk8gPSAkKFNZU1RFTV9M
SUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9XZWJLaXQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3
b3Jrcy9XZWJDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyczsKLVdFQkNPUkVfUFJJVkFURV9I
RUFERVJTX0RJUl9ZRVMgPSAkKFdLX09WRVJSSURFX0ZSQU1FV09SS1NfRElSKS9XZWJDb3JlLmZy
YW1ld29yay9Qcml2YXRlSGVhZGVyczsKLQotRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICQoV0tf
UVVPVEVEX09WRVJSSURFX0ZSQU1FV09SS1NfRElSKSAkKGluaGVyaXRlZCk7Ci0KLU9OTFlfQUNU
SVZFX0FSQ0ggPSBOTwotCi1TREtST09UID0gbWFjb3N4LmludGVybmFsOwotCi1XS19FTVBUWV8g
PSBZRVM7Ci1XS19OT1RfID0gWUVTOwotV0tfTk9UX1lFUyA9IE5POwotCi1XS19VU0VfT1ZFUlJJ
REVfRlJBTUVXT1JLU19ESVJbc2RrPW1hY29zeCpdID0gJChXS19OT1RfJChXS19FTVBUWV8kKFdL
X09WRVJSSURFX0ZSQU1FV09SS1NfRElSKSkpOwotCi1XS19PVkVSUklERV9GUkFNRVdPUktTX0RJ
UiA9ICQoV0tfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVJfVVNFX1NUQUdJTkdfSU5TVEFMTF9QQVRI
XyQoVVNFX1NUQUdJTkdfSU5TVEFMTF9QQVRIKSk7Ci1XS19PVkVSUklERV9GUkFNRVdPUktTX0RJ
Ul9VU0VfU1RBR0lOR19JTlNUQUxMX1BBVEhfWUVTID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1N0
YWdlZEZyYW1ld29ya3MvU2FmYXJpOwotCi1XS19RVU9URURfT1ZFUlJJREVfRlJBTUVXT1JLU19E
SVIgPSAkKFdLX1FVT1RFRF9PVkVSUklERV9GUkFNRVdPUktTX0RJUl8kKFdLX1VTRV9PVkVSUklE
RV9GUkFNRVdPUktTX0RJUikpOwotV0tfUVVPVEVEX09WRVJSSURFX0ZSQU1FV09SS1NfRElSX1lF
UyA9ICIkKFdLX09WRVJSSURFX0ZSQU1FV09SS1NfRElSKSI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvUmVsZWFzZVByb2plY3QueGNjb25maWcgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvUmVsZWFzZVByb2plY3QueGNjb25m
aWcKaW5kZXggMTNlOTE3ZmJmYTJkZGYyZDNlZTUzMTU5OGRjMGZiMGYyYjViZjg3Ni4uZGY5YTM4
Zjg5Yjk3NzJkNjU3Nzg0ODIxYjJiMTYzZGVkYWQ0NDQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1JlbGVhc2VQcm9qZWN0LnhjY29uZmlnCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9SZWxlYXNlUHJvamVjdC54Y2Nv
bmZpZwpAQCAtNSw3ICs1LDcgQEAKIC8vICBhbmQgZXhhbXBsZXMuIEl0IGlzIHNldCBpbiB0aGUg
IkJhc2VkIE9uOiIgZHJvcGRvd24gaW4gdGhlICJQcm9qZWN0IiBpbmZvCiAvLyAgZGlhbG9nLgog
Ly8gIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBp
bjoKLS8vICBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8K
Ky8vICBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZS10b29sYm94LWZvci1tYWMKIC8v
IAogCiAjaW5jbHVkZSAiR2VuZXJhbC54Y2NvbmZpZyIKQEAgLTMwLDEyICszMCwzIEBAIE9USEVS
X0NGTEFHUyA9ICQoT1RIRVJfQ0ZMQUdTKSAtRE5ERUJVRz0xIC1Xbm8tdW51c2VkLXZhcmlhYmxl
CiAKIC8vIFdoZW4gd2Ugc3RyaXAgd2Ugd2FudCB0byBzdHJpcCBhbGwgc3ltYm9scyBpbiByZWxl
YXNlLCBidXQgc2F2ZSBleHRlcm5hbHMuCiBTVFJJUF9TVFlMRSA9IGFsbAotCi0vLyBVc2VkIGJ5
IEhFQURFUl9TRUFSQ0hfUEFUSFMgaW4gR2VuZXJhbC54Y2NvbmZpZwotV0VCQ09SRV9QUklWQVRF
X0hFQURFUlNfRElSID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL1dlYkNvcmUuZnJhbWV3b3JrL1By
aXZhdGVIZWFkZXJzOwotCi1PTkxZX0FDVElWRV9BUkNIID0gWUVTCi0KLVNES1JPT1QgPSAkKFNE
S1JPT1RfJChVU0VfSU5URVJOQUxfU0RLKSk7Ci1TREtST09UXyA9IG1hY29zeDsKLVNES1JPT1Rf
WUVTID0gbWFjb3N4LmludGVybmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QveGNvZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZwpp
bmRleCBkZDMzMjU1YTk0NDc3MDIwY2YxMWY3MDU1ZTQ0YWUyNTI4ZWI5Zjk3Li5kMjQyNGZlODBk
MWNkYWRiNWEwMjYwM2M4OWQ4MjQ1NTg1ODVjMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC94Y29kZS9Db25maWcvU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvU3RhdGljTGlicmFyeVRhcmdl
dC54Y2NvbmZpZwpAQCAtNCw3ICs0LDcgQEAKIC8vICBUaGVzZSBhcmUgc3RhdGljIGxpYnJhcnkg
dGFyZ2V0IHNldHRpbmdzIGZvciBsaWJndGVzdC5hLiBJdAogLy8gIGlzIHNldCBpbiB0aGUgIkJh
c2VkIE9uOiIgZHJvcGRvd24gaW4gdGhlICJUYXJnZXQiIGluZm8gZGlhbG9nLgogLy8gIFRoaXMg
ZmlsZSBpcyBiYXNlZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBpbjoKLS8vICBo
dHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8KKy8vICBodHRw
czovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZS10b29sYm94LWZvci1tYWMKIC8vIAogCiAvLyBT
dGF0aWMgbGlicyBjYW4gYmUgaW5jbHVkZWQgaW4gYnVuZGxlcyBzbyBtYWtlIHRoZW0gcG9zaXRp
b24gaW5kZXBlbmRlbnQKQEAgLTE2LDUgKzE2LDMgQEAgU1RSSVBfU1RZTEUgPSBkZWJ1Z2dpbmcK
IAogLy8gTGV0IHRoZSB1c2VyIGluc3RhbGwgYnkgc3BlY2lmeWluZyB0aGUgJERTVFJPT1Qgd2l0
aCB4Y29kZWJ1aWxkCiBTS0lQX0lOU1RBTEwgPSBOTwotCi1PVEhFUl9MREZMQUdTID0gOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvTWFrZWZpbGUgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9NYWtlZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMmM4ZTg0OTNkZjI5NjhhYmU3NzFjNmQ2NzhlOGQyOWQzOWM5YjNhNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC94Y29kZS9NYWtlZmlsZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotU0NSSVBU
U19QQVRIID89IC4uLy4uLy4uLy4uL1Rvb2xzL1NjcmlwdHMKLWluY2x1ZGUgLi4vLi4vLi4vLi4v
TWFrZWZpbGUuc2hhcmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29k
ZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS93aWRnZXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjCmlu
ZGV4IDYxYzBkMmZmZDc2ZDE4MDZhYTM1OTc5ZDhhZTM2NDEwNjQ4YWFhMTUuLjg3MjU5OTQyMTg1
MTQwOGU3NmFhYjZjNTYwYjgxODkyNDU5YmJkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxl
L3dpZGdldF90ZXN0LmNjCkBAIC0zNiw3ICszNiw3IEBACiAvLyBUaGlzIGlzIGEgc2ltcGxlIHRl
c3QgZmlsZSBmb3IgdGhlIFdpZGdldCBjbGFzcyBpbiB0aGUgV2lkZ2V0LmZyYW1ld29yawogCiAj
aW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKIAogI2luY2x1ZGUgPFdpZGdldC93aWRnZXQuaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2NyaXB0cy92ZXJzaW9uZ2VuZXJhdGUucHkg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5w
eQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDgxZGU4Yzk2YWM1ZDg2Y2E2
Mzk0NTZjOTBjNDMzMDY3YmRmZDQwZTUuLmJkZDc1NDFhZDc5N2ZhNjczZjY1ZGEzODE2OGUxNTgw
ZmQ3ZGRlM2EKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2NyaXB0cy92ZXJz
aW9uZ2VuZXJhdGUucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2NyaXB0
cy92ZXJzaW9uZ2VuZXJhdGUucHkKQEAgLTI5LDcgKzI5LDcgQEAKICMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKLSIiIkEgc2NyaXB0IHRvIHByZXBhcmUgdmVyc2lvbiBpbmZvcm10aW9u
IGZvciB1c2UgdGhlIGd0ZXN0IEluZm8ucGxpc3QgZmlsZS4KKyIiIkEgc2NyaXB0IHRvIHByZXBh
cmUgdmVyc2lvbiBpbmZvcm1hdGlvbiBmb3IgdXNlIHRoZSBndGVzdCBJbmZvLnBsaXN0IGZpbGUu
CiAKICAgVGhpcyBzY3JpcHQgZXh0cmFjdHMgdGhlIHZlcnNpb24gaW5mb3JtYXRpb24gZnJvbSB0
aGUgY29uZmlndXJlLmFjIGZpbGUgYW5kCiAgIHVzZXMgaXQgdG8gZ2VuZXJhdGUgYSBoZWFkZXIg
ZmlsZSBjb250YWluaW5nIHRoZSBzYW1lIGluZm9ybWF0aW9uLiBUaGUKQEAgLTQyLDcgKzQyLDcg
QEAKICAgICAxLiBUaGUgQUNfSU5JVCBtYWNybyB3aWxsIGJlIGNvbnRhaW5lZCB3aXRoaW4gdGhl
IGZpcnN0IDEwMjQgY2hhcmFjdGVycwogICAgICAgIG9mIGNvbmZpZ3VyZS5hYwogICAgIDIuIFRo
ZSB2ZXJzaW9uIHN0cmluZyB3aWxsIGJlIDMgaW50ZWdlcnMgc2VwYXJhdGVkIGJ5IHBlcmlvZHMg
YW5kIHdpbGwgYmUKLSAgICAgICBzdXJyb3VuZGVkIGJ5IHNxdXJlIGJyYWNrZXRzLCAiWyIgYW5k
ICJdIiAoZS5nLiBbMS4wLjFdKS4gVGhlIGZpcnN0CisgICAgICAgc3Vycm91bmRlZCBieSBzcXVh
cmUgYnJhY2tldHMsICJbIiBhbmQgIl0iIChlLmcuIFsxLjAuMV0pLiBUaGUgZmlyc3QKICAgICAg
ICBzZWdtZW50IHJlcHJlc2VudHMgdGhlIG1ham9yIHZlcnNpb24sIHRoZSBzZWNvbmQgcmVwcmVz
ZW50cyB0aGUgbWlub3IKICAgICAgICB2ZXJzaW9uIGFuZCB0aGUgdGhpcmQgcmVwcmVzZW50cyB0
aGUgZml4IHZlcnNpb24uCiAgICAgMy4gTm8gIikiIGNoYXJhY3RlciBleGlzdHMgYmV0d2VlbiB0
aGUgb3BlbmluZyAiKCIgYW5kIGNsb3NpbmcgIikiIG9mCkBAIC02OCw3ICs2OCw3IEBAIGNvbmZp
Z19maWxlLmNsb3NlKCkKIAogIyBFeHRyYWN0IHRoZSB2ZXJzaW9uIHN0cmluZyBmcm9tIHRoZSBB
Q19JTklUIG1hY3JvCiAjICAgVGhlIGZvbGxvd2luZyBpbml0X2V4cHJlc3Npb24gbWVhbnM6Ci0j
ICAgICBFeHRyYWN0IHRocmVlIGludGVnZXJzIHNlcGFyYXRlZCBieSBwZXJpb2RzIGFuZCBzdXJy
b3VuZGVkIGJ5IHNxdXJlCisjICAgICBFeHRyYWN0IHRocmVlIGludGVnZXJzIHNlcGFyYXRlZCBi
eSBwZXJpb2RzIGFuZCBzdXJyb3VuZGVkIGJ5IHNxdWFyZQogIyAgICAgYnJhY2tldHMoZS5nLiAi
WzEuMC4xXSIpIGJldHdlZW4gIkFDX0lOSVQoIiBhbmQgIikiLiBEbyBub3QgYmUgZ3JlZWR5CiAj
ICAgICAoKj8gaXMgdGhlIG5vbi1ncmVlZHkgZmxhZykgc2luY2UgdGhhdCB3b3VsZCBwdWxsIGlu
IGV2ZXJ5dGhpbmcgYmV0d2VlbgogIyAgICAgdGhlIGZpcnN0ICIoIiBhbmQgdGhlIGxhc3QgIiki
IGluIHRoZSBmaWxlLgpAQCAtODgsNyArODgsNyBAQCBmaWxlX2RhdGEgPSAiIiIvLwogLy8gaXMg
ZXhlY3V0ZWQgaW4gYSAiUnVuIFNjcmlwdCIgYnVpbGQgcGhhc2Ugd2hlbiBjcmVhdGluZyBndGVz
dC5mcmFtZXdvcmsuIFRoaXMKIC8vIGhlYWRlciBmaWxlIGlzIG5vdCB1c2VkIGR1cmluZyBjb21w
aWxhdGlvbiBvZiBDLXNvdXJjZS4gUmF0aGVyLCBpdCBzaW1wbHkKIC8vIGRlZmluZXMgc29tZSB2
ZXJzaW9uIHN0cmluZ3MgZm9yIHN1YnN0aXR1dGlvbiBpbiB0aGUgSW5mby5wbGlzdC4gQmVjYXVz
ZSBvZgotLy8gdGhpcywgd2UgYXJlIG5vdCBub3QgcmVzdHJpY3RlZCB0byBDLXN5bnRheCBub3Ig
YXJlIHdlIHVzaW5nIGluY2x1ZGUgZ3VhcmRzLgorLy8gdGhpcywgd2UgYXJlIG5vdCByZXN0cmlj
dGVkIHRvIEMtc3ludGF4IG5vciBhcmUgd2UgdXNpbmcgaW5jbHVkZSBndWFyZHMuCiAvLwogCiAj
ZGVmaW5lIEdURVNUX1ZFUlNJT05JTkZPX1NIT1JUICVzLiVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9ndGVzdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvZ3Rlc3QueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCAxZmYzZmJhZmVmYmFhYzNiODM4MjQ4YjE3ZDU2ODc2YjNkNWY2YmU4Li5mMDVk
OTZmZmE4OGU2NjA2OTg4ZjBlZjhhNGM2ZDdkODYzOWM3YmY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9ndGVzdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTM3LDcgKzM3LDYgQEAKIC8qIEVuZCBQQlhBZ2dyZWdhdGVUYXJnZXQgc2Vj
dGlvbiAqLwogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwotCQkxQTBBNEM0NTE0
QjdBM0I1MDA4OTUxMzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3Mg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwQTRDNDQxNEI3QTNCNTAwODk1
MTM1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJMjI0QTEyQTMwRTlFQURD
QzAwQkQxN0ZEIC8qIGd0ZXN0LXRlc3QtcGFydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjI0QTEyQTIwRTlFQURDQzAwQkQxN0ZEIC8qIGd0ZXN0LXRl
c3QtcGFydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsK
IAkJM0JGNkYyQTAwRTc5QjVBRDAwMEYyRUVFIC8qIGd0ZXN0LXR5cGUtdXRpbC5oIGluIENvcHkg
SGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQkY2
RjI5RjBFNzlCNUFEMDAwRjJFRUUgLyogZ3Rlc3QtdHlwZS11dGlsLmggKi87IH07CiAJCTNCRjZG
MkE1MEU3OUI2MTYwMDBGMkVFRSAvKiBndGVzdC10eXBlZC10ZXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQkY2RjJBNDBFNzlCNjE2MDAwRjJFRUUg
LyogZ3Rlc3QtdHlwZWQtdGVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1Ymxp
YywgKTsgfTsgfTsKQEAgLTQ3LDcgKzQ2LDcgQEAKIAkJNDA0ODg0M0IwRTJGNzk5QjAwQ0Y3NjU4
IC8qIGd0ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MDQ4ODNERTBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTQwNDg4NDNDMEUyRjc5OUIwMENGNzY1OCAv
KiBndGVzdF9wcmVkX2ltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQwNDg4M0RGMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcmVkX2ltcGwuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTQwNDg4NDNE
MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcm9kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNFMDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Rf
cHJvZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJ
NDA0ODg0NTAwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRSBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJF
QURNRSAqLzsgfTsKKwkJNDA0ODg0NTAwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCBpbiBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRjYwRTJG
Nzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCAqLzsgfTsKIAkJNDA0ODg0QTAwRTJGN0JFNjAwQ0Y3
NjU4IC8qIGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJu
YWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRTIwRTJGNzk5QjAw
Q0Y3NjU4IC8qIGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCAqLzsgfTsKIAkJNDA0ODg0QTEw
RTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0LWZpbGVwYXRoLmggaW4gQ29weSBIZWFkZXJzIEludGVy
bmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0UzMEUyRjc5OUIw
MENGNzY1OCAvKiBndGVzdC1maWxlcGF0aC5oICovOyB9OwogCQk0MDQ4ODRBMjBFMkY3QkU2MDBD
Rjc2NTggLyogZ3Rlc3QtaW50ZXJuYWwuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRTQwRTJGNzk5QjAwQ0Y3NjU4IC8q
IGd0ZXN0LWludGVybmFsLmggKi87IH07CkBAIC01NSw3ICs1NCw3IEBACiAJCTQwNDg4NEE0MEUy
RjdCRTYwMENGNzY1OCAvKiBndGVzdC1zdHJpbmcuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRTYwRTJGNzk5QjAwQ0Y3
NjU4IC8qIGd0ZXN0LXN0cmluZy5oICovOyB9OwogCQk0MDQ4ODRBQzBFMkY3Q0Q5MDBDRjc2NTgg
LyogQ0hBTkdFUyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDA0ODg0QTkwRTJGN0NEOTAwQ0Y3NjU4IC8qIENIQU5HRVMgKi87IH07CiAJCTQwNDg4NEFE
MEUyRjdDRDkwMENGNzY1OCAvKiBDT05UUklCVVRPUlMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4NEFBMEUyRjdDRDkwMENGNzY1OCAvKiBDT05U
UklCVVRPUlMgKi87IH07Ci0JCTQwNDg4NEFFMEUyRjdDRDkwMENGNzY1OCAvKiBDT1BZSU5HIGlu
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODRBQjBF
MkY3Q0Q5MDBDRjc2NTggLyogQ09QWUlORyAqLzsgfTsKKwkJNDA0ODg0QUUwRTJGN0NEOTAwQ0Y3
NjU4IC8qIExJQ0VOU0UgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQwNDg4NEFCMEUyRjdDRDkwMENGNzY1OCAvKiBMSUNFTlNFICovOyB9OwogCQk0MDg5
OUYzQTBGRkE3MEQ0MDAwQjI5QUUgLyogZ3Rlc3QtYWxsLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjI0QTEyQTEwRTlFQURBNzAwQkQxN0ZEIC8qIGd0
ZXN0LWFsbC5jYyAqLzsgfTsKIAkJNDA4OTlGNTAwRkZBNzI4MTAwMEIyOUFFIC8qIGd0ZXN0LXR1
cGxlLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQwODk5RjREMEZGQTcyNzEwMDBCMjlBRSAvKiBndGVzdC10dXBsZS5oICovOyB9
OwogCQk0MDg5OUY1MzBGRkE3MkEwMDAwQjI5QUUgLyogZ3Rlc3RfdW5pdHRlc3QuY2MgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQjIzOEMxMjBFN0ZFMTND
MDA4NDZFMTEgLyogZ3Rlc3RfdW5pdHRlc3QuY2MgKi87IH07CkBAIC03OSw2ICs3OCwxNCBAQAog
CQk0NTM5QzkzODBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtbGlua2VkX3B0ci5oIGluIENvcHkg
SGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTM5
QzkzNTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtbGlua2VkX3B0ci5oICovOyB9OwogCQk0NTM5
QzkzOTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCBpbiBD
b3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDUzOUM5MzYwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgg
Ki87IH07CiAJCTQ1MzlDOTNBMEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLmgg
aW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ1MzlDOTM3MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLmggKi87IH07
CisJCTQ1NjdDODE4MTI2NEZGNzEwMDc3NDBCRSAvKiBndGVzdC1wcmludGVycy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDU2N0M4MTcxMjY0RkY3MTAw
Nzc0MEJFIC8qIGd0ZXN0LXByaW50ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHVibGljLCApOyB9OyB9OworCQlGNjdENEYzRTFDN0Y1RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9y
dC1hcmNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NjdENEYzRDFDN0Y1RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggKi87IH07CisJCUY2
N0Q0RjNGMUM3RjVEQTcwMDE3QzcyOSAvKiBndGVzdC1wb3J0LWFyY2guaCBpbiBDb3B5IEhlYWRl
cnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGM0Qx
QzdGNUQ4QjAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQtYXJjaC5oICovOyB9OworCQlGNjdENEY0NDFD
N0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGNDExQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBv
cnQuaCAqLzsgfTsKKwkJRjY3RDRGNDUxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdENEY0
MjFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLzsgfTsKKwkJRjY3RDRGNDYx
QzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNjdENEY0MzFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QuaCAqLzsg
fTsKKwkJRjY3RDRGNDgxQzdGNUUxNjAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCBpbiBDb3B5IEhl
YWRlcnMgSW50ZXJuYWwgQ3VzdG9tICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY2N0Q0RjQxMUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC1wb3J0LmggKi87IH07CisJCUY2N0Q0
RjQ5MUM3RjVFMjYwMDE3QzcyOSAvKiBndGVzdC1wcmludGVycy5oIGluIENvcHkgSGVhZGVycyBJ
bnRlcm5hbCBDdXN0b20gKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRG
NDIxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggKi87IH07CiAvKiBFbmQgUEJY
QnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNl
Y3Rpb24gKi8KQEAgLTE4OCw2ICsxOTUsNyBAQAogCQkJCTQ1MzlDOTM4MEVDMjgwRTIwMEE3MEY0
QyAvKiBndGVzdC1saW5rZWRfcHRyLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLAogCQkJ
CTQ1MzlDOTM5MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5o
IGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKIAkJCQk0NTM5QzkzQTBFQzI4MEUyMDBBNzBG
NEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKKwkJ
CQlGNjdENEYzRjFDN0Y1REE3MDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggaW4gQ29weSBI
ZWFkZXJzIEludGVybmFsICovLAogCQkJCTQwNDg4NEEzMEUyRjdCRTYwMENGNzY1OCAvKiBndGVz
dC1wb3J0LmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLAogCQkJCTQwNDg4NEE0MEUyRjdC
RTYwMENGNzY1OCAvKiBndGVzdC1zdHJpbmcuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8s
CiAJCQkJNDA4OTlGNTAwRkZBNzI4MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggaW4gQ29weSBI
ZWFkZXJzIEludGVybmFsICovLApAQCAtMTk2LDEwICsyMDQsMjEgQEAKIAkJCW5hbWUgPSAiQ29w
eSBIZWFkZXJzIEludGVybmFsIjsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OworCQlGNjdENEY0NzFDN0Y1REY2MDAxN0M3MjkgLyogQ29weSBIZWFkZXJz
IEludGVybmFsIEN1c3RvbSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7
CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IEhlYWRlcnMv
aW50ZXJuYWwvY3VzdG9tOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDY7CisJCQlmaWxlcyA9ICgK
KwkJCQlGNjdENEY0ODFDN0Y1RTE2MDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oIGluIENvcHkgSGVh
ZGVycyBJbnRlcm5hbCBDdXN0b20gKi8sCisJCQkJRjY3RDRGNDkxQzdGNUUyNjAwMTdDNzI5IC8q
IGd0ZXN0LXByaW50ZXJzLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLywKKwkJ
CSk7CisJCQluYW1lID0gIkNvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20iOworCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAvKiBFbmQgUEJYQ29weUZp
bGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2Vj
dGlvbiAqLwotCQkxQTBBNEM0NDE0QjdBM0I1MDA4OTUxMzUgLyogSmF2YVNjcmlwdENvcmUuZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5mcmFtZXdvcms7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcms7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTIyNEExMkExMEU5RUFEQTcwMEJEMTdG
RCAvKiBndGVzdC1hbGwuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Imd0ZXN0LWFsbC5jYyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIyNEExMkEyMEU5
RUFEQ0MwMEJEMTdGRCAvKiBndGVzdC10ZXN0LXBhcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9ICJndGVzdC10ZXN0LXBhcnQuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTNCMjM4QzEyMEU3RkUxM0MwMDg0NkUxMSAvKiBndGVzdF91bml0dGVzdC5jYyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGd0ZXN0X3VuaXR0ZXN0LmNjOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE4LDExICsyMzcsMTEgQEAKIAkJNDA0ODgzRTQw
RTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9ICJndGVzdC1pbnRlcm5hbC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDA0ODgzRTUwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXBvcnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXBvcnQuaCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQwNDg4M0U2MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zdHJpbmcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXN0cmluZy5oIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURN
RSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBSRUFETUU7IHBhdGggPSAuLi9SRUFETUU7IHNvdXJj
ZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJF
QURNRS5tZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBSRUFETUUubWQ7IHBhdGggPSAuLi9SRUFE
TUUubWQ7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNDA0ODg0MEQwRTJGNzk5QjAw
Q0Y3NjU4IC8qIGd0ZXN0X21haW4uY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBndGVzdF9tYWluLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MDQ4ODRB
OTBFMkY3Q0Q5MDBDRjc2NTggLyogQ0hBTkdFUyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDSEFO
R0VTOyBwYXRoID0gLi4vQ0hBTkdFUzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk0
MDQ4ODRBQTBFMkY3Q0Q5MDBDRjc2NTggLyogQ09OVFJJQlVUT1JTICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
bmFtZSA9IENPTlRSSUJVVE9SUzsgcGF0aCA9IC4uL0NPTlRSSUJVVE9SUzsgc291cmNlVHJlZSA9
IFNPVVJDRV9ST09UOyB9OwotCQk0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogQ09QWUlORyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDT1BZSU5HOyBwYXRoID0gLi4vQ09QWUlORzsgc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogTElD
RU5TRSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBMSUNFTlNFOyBwYXRoID0gLi4vTElDRU5TRTsg
c291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk0MDg5OUY0MzBGRkE3MTg0MDAwQjI5QUUg
LyogZ3Rlc3RfdW5pdHRlc3QtZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRl
SW5JbmRleCA9IDA7IHBhdGggPSAiZ3Rlc3RfdW5pdHRlc3QtZnJhbWV3b3JrIjsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDA4OTlGNEQwRkZBNzI3MTAwMEIyOUFFIC8q
IGd0ZXN0LXR1cGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC10
dXBsZS5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDA4OTlGQjMwRkZBNzU2NzAw
MEIyOUFFIC8qIFN0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lnhj
Y29uZmlnOyBwYXRoID0gU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIzOSwxMiArMjU4LDE2IEBACiAJCTQwRDRDREYzMEUzMEUwNzQw
MDI5NDgwMSAvKiBHZW5lcmFsLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0
aCA9IEdlbmVyYWwueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwRDRD
REY0MEUzMEUwNzQwMDI5NDgwMSAvKiBSZWxlYXNlUHJvamVjdC54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IHBhdGggPSBSZWxlYXNlUHJvamVjdC54Y2NvbmZpZzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDBENENGNTEwRTMwRjVFMjAwMjk0ODAxIC8qIEluZm8ucGxp
c3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ0QzQ4REZGMTRBNDA5OEYwMEEyRDlDNyAvKiBQcm9kdWN0
aW9uUHJvamVjdC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBQcm9k
dWN0aW9uUHJvamVjdC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDUz
OUM4RkYwRUMyN0Y2NDAwQTcwRjRDIC8qIGd0ZXN0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IGluY2x1
ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGd0ZXN0LmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJNDUzOUM5MzMwRUMyODBBRTAwQTcwRjRDIC8qIGd0ZXN0LXBh
cmFtLXRlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXBhcmFt
LXRlc3QuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1MzlDOTM1MEVDMjgwRTIw
MEE3MEY0QyAvKiBndGVzdC1saW5rZWRfcHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9ICJndGVzdC1saW5rZWRfcHRyLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NTM5QzkzNjBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXBhcmFtLXV0aWwtZ2Vu
ZXJhdGVkLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NTM5QzkzNzBFQzI4MEUy
MDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSAiZ3Rlc3QtcGFyYW0tdXRpbC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDU2N0M4MTcxMjY0RkY3MTAwNzc0MEJFIC8qIGd0ZXN0LXByaW50ZXJzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1wcmludGVycy5oIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjY3RDRGM0QxQzdGNUQ4QjAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQt
YXJjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcG9ydC1hcmNo
LmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNjdENEY0MTFDN0Y1REQwMDAxN0M3
MjkgLyogZ3Rlc3QtcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rl
c3QtcG9ydC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjY3RDRGNDIxQzdGNURE
MDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9ICJndGVzdC1wcmludGVycy5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RjY3RDRGNDMxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IGd0ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQg
UEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTI4NCwxNCArMzA3LDYgQEAKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKLQkJNDQ0RDExNzIxNEEyNjI4
RjAwOUZFQzNGIC8qIEZyYW1ld29ya3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgK
LQkJCQkxQTBBNEM0NTE0QjdBM0I1MDA4OTUxMzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3Jr
IGluIEZyYW1ld29ya3MgKi8sCi0JCQkpOwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7Ci0JCX07CiAvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLwogCiAvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCkBAIC0zMTYsNyArMzMxLDYgQEAK
IAkJCQkwOEZCNzdBQ0ZFODQxNzA3QzAyQUFDMDcgLyogU291cmNlICovLAogCQkJCTQwRDRDRjRF
MEUzMEY1RTIwMDI5NDgwMSAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJNDAzRUUzN0IwRTM3NzgyMjAw
NEJEMUUyIC8qIFNjcmlwdHMgKi8sCi0JCQkJMUEwQTRDNDYxNEI3QTNCQzAwODk1MTM1IC8qIEZy
YW1ld29ya3MgKi8sCiAJCQkJMDM0NzY4RERGRjM4QTQ1QTExREI5QzhCIC8qIFByb2R1Y3RzICov
LAogCQkJKTsKIAkJCW5hbWUgPSBndGVzdDsKQEAgLTMyNywyNCArMzQxLDE2IEBACiAJCQljaGls
ZHJlbiA9ICgKIAkJCQk0MDQ4ODRBOTBFMkY3Q0Q5MDBDRjc2NTggLyogQ0hBTkdFUyAqLywKIAkJ
CQk0MDQ4ODRBQTBFMkY3Q0Q5MDBDRjc2NTggLyogQ09OVFJJQlVUT1JTICovLAotCQkJCTQwNDg4
NEFCMEUyRjdDRDkwMENGNzY1OCAvKiBDT1BZSU5HICovLAogCQkJCTQwNDg4M0Q5MEUyRjc5OUIw
MENGNzY1OCAvKiBpbmNsdWRlICovLAotCQkJCTQwNDg4M0Y2MEUyRjc5OUIwMENGNzY1OCAvKiBS
RUFETUUgKi8sCisJCQkJNDA0ODg0QUIwRTJGN0NEOTAwQ0Y3NjU4IC8qIExJQ0VOU0UgKi8sCiAJ
CQkJNDA4OUEwMkYwRkZBQ0Y4NDAwMEIyOUFFIC8qIHNhbXBsZXMgKi8sCiAJCQkJNDA0ODg0MDcw
RTJGNzk5QjAwQ0Y3NjU4IC8qIHNyYyAqLywKIAkJCQkzQjIzOEJGMDBFN0ZFMTNCMDA4NDZFMTEg
LyogdGVzdCAqLywKKwkJCQk0MDQ4ODNGNjBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FLm1kICov
LAogCQkJKTsKIAkJCW5hbWUgPSBTb3VyY2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwog
CQl9OwotCQkxQTBBNEM0NjE0QjdBM0JDMDA4OTUxMzUgLyogRnJhbWV3b3JrcyAqLyA9IHsKLQkJ
CWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUEwQTRDNDQxNEI3QTNCNTAw
ODk1MTM1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKLQkJCSk7Ci0JCQluYW1lID0g
RnJhbWV3b3JrczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTNCMjM4QkYw
MEU3RkUxM0IwMDg0NkUxMSAvKiB0ZXN0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKQEAgLTM3OSw2ICszODUsNyBAQAogCQkJCTQwNDg4M0RCMEUyRjc5OUIwMENG
NzY1OCAvKiBndGVzdC1kZWF0aC10ZXN0LmggKi8sCiAJCQkJNDA0ODgzREMwRTJGNzk5QjAwQ0Y3
NjU4IC8qIGd0ZXN0LW1lc3NhZ2UuaCAqLywKIAkJCQk0NTM5QzkzMzBFQzI4MEFFMDBBNzBGNEMg
LyogZ3Rlc3QtcGFyYW0tdGVzdC5oICovLAorCQkJCTQ1NjdDODE3MTI2NEZGNzEwMDc3NDBCRSAv
KiBndGVzdC1wcmludGVycy5oICovLAogCQkJCTQwNDg4M0REMEUyRjc5OUIwMENGNzY1OCAvKiBn
dGVzdC1zcGkuaCAqLywKIAkJCQkyMjRBMTJBMjBFOUVBRENDMDBCRDE3RkQgLyogZ3Rlc3QtdGVz
dC1wYXJ0LmggKi8sCiAJCQkJM0JGNkYyQTQwRTc5QjYxNjAwMEYyRUVFIC8qIGd0ZXN0LXR5cGVk
LXRlc3QuaCAqLywKQEAgLTM5MiwxMiArMzk5LDE0IEBACiAJCTQwNDg4M0UxMEUyRjc5OUIwMENG
NzY1OCAvKiBpbnRlcm5hbCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJRjY3RDRGNDAxQzdGNUREMDAwMTdDNzI5IC8qIGN1c3RvbSAqLywKIAkJCQk0MDQ4
ODNFMjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5oICovLAog
CQkJCTQwNDg4M0UzMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1maWxlcGF0aC5oICovLAogCQkJ
CTQwNDg4M0U0MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1pbnRlcm5hbC5oICovLAogCQkJCTQ1
MzlDOTM1MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1saW5rZWRfcHRyLmggKi8sCiAJCQkJNDUz
OUM5MzYwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmggKi8s
CiAJCQkJNDUzOUM5MzcwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwuaCAqLywK
KwkJCQlGNjdENEYzRDFDN0Y1RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggKi8sCiAJ
CQkJNDA0ODgzRTUwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXBvcnQuaCAqLywKIAkJCQk0MDQ4
ODNFNjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Qtc3RyaW5nLmggKi8sCiAJCQkJNDA4OTlGNEQw
RkZBNzI3MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggKi8sCkBAIC00MzMsNyArNDQyLDYgQEAK
IAkJCQk0MEQ0Q0RGMTBFMzBFMDc0MDAyOTQ4MDEgLyogRGVidWdQcm9qZWN0LnhjY29uZmlnICov
LAogCQkJCTQwRDRDREYyMEUzMEUwNzQwMDI5NDgwMSAvKiBGcmFtZXdvcmtUYXJnZXQueGNjb25m
aWcgKi8sCiAJCQkJNDBENENERjMwRTMwRTA3NDAwMjk0ODAxIC8qIEdlbmVyYWwueGNjb25maWcg
Ki8sCi0JCQkJNDRDNDhERkYxNEE0MDk4RjAwQTJEOUM3IC8qIFByb2R1Y3Rpb25Qcm9qZWN0Lnhj
Y29uZmlnICovLAogCQkJCTQwRDRDREY0MEUzMEUwNzQwMDI5NDgwMSAvKiBSZWxlYXNlUHJvamVj
dC54Y2NvbmZpZyAqLywKIAkJCQk0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGli
cmFyeVRhcmdldC54Y2NvbmZpZyAqLywKIAkJCSk7CkBAIC00NDgsNiArNDU2LDE2IEBACiAJCQlw
YXRoID0gUmVzb3VyY2VzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRjY3
RDRGNDAxQzdGNUREMDAwMTdDNzI5IC8qIGN1c3RvbSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJRjY3RDRGNDExQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0
LXBvcnQuaCAqLywKKwkJCQlGNjdENEY0MjFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcHJpbnRl
cnMuaCAqLywKKwkJCQlGNjdENEY0MzFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QuaCAqLywKKwkJ
CSk7CisJCQlwYXRoID0gY3VzdG9tOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsK
IC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KQEAgLTQ1OCw5ICs0NzYsMTQgQEAKIAkJCQk0MDQ4ODQzODBFMkY3OTlC
MDBDRjc2NTggLyogZ3Rlc3QtZGVhdGgtdGVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0
MzkwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LW1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ1MzlDOTM0MEVDMjgwQUUwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS10ZXN0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGNjdENEYzRTFDN0Y1RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGNjdENEY0NDFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcG9y
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjY3RDRGNDUxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0
LXByaW50ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NTY3QzgxODEyNjRGRjcxMDA3NzQwQkUg
LyogZ3Rlc3QtcHJpbnRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQwNDg4NDNBMEUyRjc5OUIw
MENGNzY1OCAvKiBndGVzdC1zcGkuaCBpbiBIZWFkZXJzICovLAogCQkJCTIyNEExMkEzMEU5RUFE
Q0MwMEJEMTdGRCAvKiBndGVzdC10ZXN0LXBhcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTNCRjZG
MkE1MEU3OUI2MTYwMDBGMkVFRSAvKiBndGVzdC10eXBlZC10ZXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQlGNjdENEY0NjFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQwNDg4NDNCMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDA0ODg0M0MwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X3ByZWRfaW1wbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDA0ODg0M0QwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X3Byb2QuaCBpbiBI
ZWFkZXJzICovLApAQCAtNTc3LDggKzYwMCw4IEBACiAJCQkJOEQwN0YyQzEwNDg2Q0M3QTAwN0NE
MUQwIC8qIFNvdXJjZXMgKi8sCiAJCQkJOEQwN0YyQkQwNDg2Q0M3QTAwN0NEMUQwIC8qIEhlYWRl
cnMgKi8sCiAJCQkJNDA0ODg0QTUwRTJGN0MwNDAwQ0Y3NjU4IC8qIENvcHkgSGVhZGVycyBJbnRl
cm5hbCAqLywKKwkJCQlGNjdENEY0NzFDN0Y1REY2MDAxN0M3MjkgLyogQ29weSBIZWFkZXJzIElu
dGVybmFsIEN1c3RvbSAqLywKIAkJCQk4RDA3RjJCRjA0ODZDQzdBMDA3Q0QxRDAgLyogUmVzb3Vy
Y2VzICovLAotCQkJCTQ0NEQxMTcyMTRBMjYyOEYwMDlGRUMzRiAvKiBGcmFtZXdvcmtzICovLAog
CQkJKTsKIAkJCWJ1aWxkUnVsZXMgPSAoCiAJCQkpOwpAQCAtNTk5LDggKzYyMiw3IEBACiAJCTA4
NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9
IFBCWFByb2plY3Q7CiAJCQlhdHRyaWJ1dGVzID0gewotCQkJCUxhc3RTd2lmdFVwZGF0ZUNoZWNr
ID0gMDcwMDsKLQkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDYwMDsKKwkJCQlMYXN0VXBncmFkZUNo
ZWNrID0gMDQ2MDsKIAkJCX07CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNEZBREMyNDYw
OEI0MTU2RDAwQUJFNTVFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVj
dCAiZ3Rlc3QiICovOwogCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMy4yIjsKQEAg
LTYzOCw5ICs2NjAsOSBAQAogCQkJZmlsZXMgPSAoCiAJCQkJNDA0ODg0QUMwRTJGN0NEOTAwQ0Y3
NjU4IC8qIENIQU5HRVMgaW4gUmVzb3VyY2VzICovLAogCQkJCTQwNDg4NEFEMEUyRjdDRDkwMENG
NzY1OCAvKiBDT05UUklCVVRPUlMgaW4gUmVzb3VyY2VzICovLAotCQkJCTQwNDg4NEFFMEUyRjdD
RDkwMENGNzY1OCAvKiBDT1BZSU5HIGluIFJlc291cmNlcyAqLywKIAkJCQk0MEM4NDk3ODEwMUEz
NjU0MDA4MzY0MkEgLyogbGliZ3Rlc3RfbWFpbi5hIGluIFJlc291cmNlcyAqLywKLQkJCQk0MDQ4
ODQ1MDBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FIGluIFJlc291cmNlcyAqLywKKwkJCQk0MDQ4
ODRBRTBFMkY3Q0Q5MDBDRjc2NTggLyogTElDRU5TRSBpbiBSZXNvdXJjZXMgKi8sCisJCQkJNDA0
ODg0NTAwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC04
MTIsMjAgKzgzNCwyNSBAQAogCQkzQjIzOEY2MDBFODI4QjU0MDA4NDZFMTEgLyogRGVidWcgKi8g
PSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CiAJCQkJQ09QWV9QSEFTRV9TVFJJUCA9
IE5POwogCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POwogCQkJCUdDQ19PUFRJTUlaQVRJT05f
TEVWRUwgPSAwOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNs
YW5nLjFfMDsKIAkJCQlQUk9EVUNUX05BTUUgPSBDaGVjazsKKwkJCQlTREtST09UID0gbWFjb3N4
OwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKIAkJM0IyMzhGNjEwRTgyOEI1NDAwODQ2
RTExIC8qIFJlbGVhc2UgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CiAJCQkJ
Q09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKIAkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAi
ZHdhcmYtd2l0aC1kc3ltIjsKLQkJCQlHQ0NfRU5BQkxFX0ZJWF9BTkRfQ09OVElOVUUgPSBOTzsK
KwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CiAJ
CQkJUFJPRFVDVF9OQU1FID0gQ2hlY2s7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlaRVJP
X0xJTksgPSBOTzsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKQEAgLTgzMywzNSArODYwLDQ5
IEBACiAJCTQwODk5RjQ1MEZGQTcxODUwMDBCMjlBRSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlHQ0NfVkVS
U0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJSEVBREVSX1NF
QVJDSF9QQVRIUyA9IC4uLzsKIAkJCQlQUk9EVUNUX05BTUUgPSAiZ3Rlc3RfdW5pdHRlc3QtZnJh
bWV3b3JrIjsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsK
IAkJfTsKIAkJNDA4OTlGNDYwRkZBNzE4NTAwMEIyOUFFIC8qIFJlbGVhc2UgKi8gPSB7CiAJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJR0ND
X1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUhFQURF
Ul9TRUFSQ0hfUEFUSFMgPSAuLi87CiAJCQkJUFJPRFVDVF9OQU1FID0gImd0ZXN0X3VuaXR0ZXN0
LWZyYW1ld29yayI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0gUmVs
ZWFzZTsKIAkJfTsKIAkJNDA4OUEwMTUwRkZBQ0VGRDAwMEIyOUFFIC8qIERlYnVnICovID0gewog
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKIAkJCQlQ
Uk9EVUNUX05BTUUgPSAic2FtcGxlMV91bml0dGVzdC1mcmFtZXdvcmsiOworCQkJCVNES1JPT1Qg
PSBtYWNvc3g7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwogCQk0MDg5QTAxNjBGRkFD
RUZEMDAwQjI5QUUgLyogUmVsZWFzZSAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5j
b21waWxlcnMubGx2bS5jbGFuZy4xXzA7CiAJCQkJUFJPRFVDVF9OQU1FID0gInNhbXBsZTFfdW5p
dHRlc3QtZnJhbWV3b3JrIjsKKwkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUg
PSBSZWxlYXNlOwogCQl9OwogCQk0MEM0NEFERjBFMzc5OEY0MDA4RkNDNTEgLyogRGVidWcgKi8g
PSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20u
YXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RB
UkdFVCA9IDEwLjc7CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJU0RLUk9PVCA9IG1h
Y29zeDsKIAkJCQlUQVJHRVRfTkFNRSA9IGd0ZXN0OwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsK
QEAgLTg2OSw3ICs5MTAsMTEgQEAKIAkJNDBDNDRBRTAwRTM3OThGNDAwOEZDQzUxIC8qIFJlbGVh
c2UgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04g
PSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCU1BQ09TWF9ERVBMT1lN
RU5UX1RBUkdFVCA9IDEwLjc7CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJU0RLUk9P
VCA9IG1hY29zeDsKIAkJCQlUQVJHRVRfTkFNRSA9IGd0ZXN0OwogCQkJfTsKIAkJCW5hbWUgPSBS
ZWxlYXNlOwpAQCAtODc4LDkgKzkyMywxNiBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDQwODk5RkIzMEZGQTc1NjcwMDBC
MjlBRSAvKiBTdGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlDT01CSU5FX0hJRFBJX0lNQUdFUyA9IFlFUzsKIAkJCQlHQ0NfSU5MSU5FU19B
UkVfUFJJVkFURV9FWFRFUk4gPSBZRVM7CiAJCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4g
PSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcu
MV8wOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCS4uLywKKwkJCQkJLi4vaW5j
bHVkZS8sCisJCQkJKTsKIAkJCQlQUk9EVUNUX05BTUUgPSBndGVzdDsKKwkJCQlTREtST09UID0g
bWFjb3N4OwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTg4OCw5ICs5NDAsMTYg
QEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25S
ZWZlcmVuY2UgPSA0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdl
dC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9J
TUFHRVMgPSBZRVM7CiAJCQkJR0NDX0lOTElORVNfQVJFX1BSSVZBVEVfRVhURVJOID0gWUVTOwog
CQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0g
Y29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BB
VEhTID0gKAorCQkJCQkuLi8sCisJCQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7CiAJCQkJUFJPRFVD
VF9OQU1FID0gZ3Rlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCX07CiAJCQluYW1lID0g
UmVsZWFzZTsKIAkJfTsKQEAgLTg5OCw3ICs5NTcsMTQgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0MDg5OUZCMzBGRkE3
NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CisJCQkJR0NDX1ZF
UlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUhFQURFUl9T
RUFSQ0hfUEFUSFMgPSAoCisJCQkJCS4uLywKKwkJCQkJLi4vaW5jbHVkZS8sCisJCQkJKTsKIAkJ
CQlQUk9EVUNUX05BTUUgPSBndGVzdF9tYWluOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQl9
OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwpAQCAtOTA2LDEzNCArOTcyLDcyIEBACiAJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
NDA4OTlGQjMwRkZBNzU2NzAwMEIyOUFFIC8qIFN0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcg
Ki87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNPTUJJTkVfSElEUElfSU1BR0VTID0gWUVT
OworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsK
KwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLi8sCisJCQkJCS4uL2luY2x1ZGUv
LAorCQkJCSk7CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3RfbWFpbjsKKwkJCQlTREtST09UID0g
bWFjb3N4OwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwogCQk0MEM4NDk4NTEwMUEz
Njg1MDA4MzY0MkEgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29t
cGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAuLi87CiAJ
CQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3RfdW5pdHRlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsK
IAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CiAJCTQwQzg0OTg2MTAxQTM2ODUwMDgzNjQy
QSAvKiBSZWxlYXNlICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5s
bHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gLi4vOwogCQkJCVBST0RV
Q1RfTkFNRSA9IGd0ZXN0X3VuaXR0ZXN0OworCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQl9Owog
CQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CiAJCTQwQzg0OTk1MTAxQTM2QTYwMDgzNjQyQSAvKiBE
ZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFu
Zy4xXzA7CiAJCQkJUFJPRFVDVF9OQU1FID0gInNhbXBsZTFfdW5pdHRlc3Qtc3RhdGljIjsKKwkJ
CQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKIAkJNDBD
ODQ5OTYxMDFBMzZBNjAwODM2NDJBIC8qIFJlbGVhc2UgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJR0NDX1ZFUlNJT04gPSBj
b20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJz
YW1wbGUxX3VuaXR0ZXN0LXN0YXRpYyI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCX07CiAJ
CQluYW1lID0gUmVsZWFzZTsKIAkJfTsKLQkJNDRDNDhFMDQxNEE0MDlERTAwQTJEOUM3IC8qIFBy
b2R1Y3Rpb24gKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJhc2VD
b25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDRDNDhERkYxNEE0MDk4RjAwQTJEOUM3IC8qIFByb2R1
Y3Rpb25Qcm9qZWN0LnhjY29uZmlnICovOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCX07Ci0J
CQluYW1lID0gUHJvZHVjdGlvbjsKLQkJfTsKLQkJNDRDNDhFMDUxNEE0MDlERTAwQTJEOUM3IC8q
IFByb2R1Y3Rpb24gKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJh
c2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDBENENERjIwRTMwRTA3NDAwMjk0ODAxIC8qIEZy
YW1ld29ya1RhcmdldC54Y2NvbmZpZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJRFlM
SUJfQ09NUEFUSUJJTElUWV9WRVJTSU9OID0gMTsKLQkJCQlEWUxJQl9DVVJSRU5UX1ZFUlNJT04g
PSAxOwotCQkJCUlORk9QTElTVF9GSUxFID0gUmVzb3VyY2VzL0luZm8ucGxpc3Q7Ci0JCQkJSU5G
T1BMSVNUX1BSRUZJWF9IRUFERVIgPSAiJChQUk9KRUNUX1RFTVBfRElSKS9WZXJzaW9uLmgiOwot
CQkJCUlORk9QTElTVF9QUkVQUk9DRVNTID0gWUVTOwotCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0
OwotCQkJCVZFUlNJT05JTkdfU1lTVEVNID0gImFwcGxlLWdlbmVyaWMiOwotCQkJfTsKLQkJCW5h
bWUgPSBQcm9kdWN0aW9uOwotCQl9OwotCQk0NEM0OEUwNjE0QTQwOURFMDBBMkQ5QzcgLyogUHJv
ZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNv
bmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGlj
TGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJR0ND
X0lOTElORVNfQVJFX1BSSVZBVEVfRVhURVJOID0gWUVTOwotCQkJCUdDQ19TWU1CT0xTX1BSSVZB
VEVfRVhURVJOID0gWUVTOwotCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0OwotCQkJfTsKLQkJCW5h
bWUgPSBQcm9kdWN0aW9uOwotCQl9OwotCQk0NEM0OEUwNzE0QTQwOURFMDBBMkQ5QzcgLyogUHJv
ZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNv
bmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGlj
TGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJP
RFVDVF9OQU1FID0gZ3Rlc3RfbWFpbjsKLQkJCX07Ci0JCQluYW1lID0gUHJvZHVjdGlvbjsKLQkJ
fTsKLQkJNDRDNDhFMDgxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8gPSB7Ci0JCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJP
RFVDVF9OQU1FID0gImd0ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayI7Ci0JCQl9OwotCQkJbmFtZSA9
IFByb2R1Y3Rpb247Ci0JCX07Ci0JCTQ0QzQ4RTA5MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0
aW9uICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRp
bmdzID0gewotCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0X3VuaXR0ZXN0OwotCQkJfTsKLQkJCW5h
bWUgPSBQcm9kdWN0aW9uOwotCQl9OwotCQk0NEM0OEUwQTE0QTQwOURFMDBBMkQ5QzcgLyogUHJv
ZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKLQkJCQlQUk9EVUNUX05BTUUgPSAic2FtcGxlMV91bml0dGVzdC1mcmFtZXdv
cmsiOwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9OwotCQk0NEM0OEUwQjE0QTQw
OURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlQUk9EVUNUX05BTUUgPSAic2FtcGxl
MV91bml0dGVzdC1zdGF0aWMiOwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9Owot
CQk0NEM0OEUwQzE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDT1BZX1BI
QVNFX1NUUklQID0gWUVTOwotCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13
aXRoLWRzeW0iOwotCQkJCUdDQ19FTkFCTEVfRklYX0FORF9DT05USU5VRSA9IE5POwotCQkJCVBS
T0RVQ1RfTkFNRSA9IENoZWNrOwotCQkJCVpFUk9fTElOSyA9IE5POwotCQkJfTsKLQkJCW5hbWUg
PSBQcm9kdWN0aW9uOwotCQl9OwotCQk0NEM0OEUwRDE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVj
dGlvbiAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0
aW5ncyA9IHsKLQkJCQlQUk9EVUNUX05BTUUgPSBndGVzdDsKLQkJCQlUQVJHRVRfTkFNRSA9IGd0
ZXN0OwotCQkJfTsKLQkJCW5hbWUgPSBQcm9kdWN0aW9uOwotCQl9OwogCQk0RkFEQzI0MzA4QjQx
NTZEMDBBQkU1NUUgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDBENENERjIwRTMwRTA3NDAwMjk0
ODAxIC8qIEZyYW1ld29ya1RhcmdldC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CiAJCQkJRFlMSUJfQ09NUEFUSUJJTElU
WV9WRVJTSU9OID0gMTsKIAkJCQlEWUxJQl9DVVJSRU5UX1ZFUlNJT04gPSAxOworCQkJCUdDQ19W
RVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlIRUFERVJf
U0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLi8sCisJCQkJCS4uL2luY2x1ZGUvLAorCQkJCSk7CiAJ
CQkJSU5GT1BMSVNUX0ZJTEUgPSBSZXNvdXJjZXMvSW5mby5wbGlzdDsKIAkJCQlJTkZPUExJU1Rf
UFJFRklYX0hFQURFUiA9ICIkKFBST0pFQ1RfVEVNUF9ESVIpL1ZlcnNpb24uaCI7CiAJCQkJSU5G
T1BMSVNUX1BSRVBST0NFU1MgPSBZRVM7CiAJCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJ
U0RLUk9PVCA9IG1hY29zeDsKIAkJCQlWRVJTSU9OSU5HX1NZU1RFTSA9ICJhcHBsZS1nZW5lcmlj
IjsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CkBAIC0xMDQyLDEyICsxMDQ2LDE5IEBACiAJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gNDBENENERjIwRTMwRTA3NDAwMjk0ODAxIC8qIEZyYW1ld29ya1RhcmdldC54Y2NvbmZpZyAq
LzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7
CiAJCQkJRFlMSUJfQ09NUEFUSUJJTElUWV9WRVJTSU9OID0gMTsKIAkJCQlEWUxJQl9DVVJSRU5U
X1ZFUlNJT04gPSAxOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZt
LmNsYW5nLjFfMDsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLi8sCisJCQkJ
CS4uL2luY2x1ZGUvLAorCQkJCSk7CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSBSZXNvdXJjZXMvSW5m
by5wbGlzdDsKIAkJCQlJTkZPUExJU1RfUFJFRklYX0hFQURFUiA9ICIkKFBST0pFQ1RfVEVNUF9E
SVIpL1ZlcnNpb24uaCI7CiAJCQkJSU5GT1BMSVNUX1BSRVBST0NFU1MgPSBZRVM7CiAJCQkJUFJP
RFVDVF9OQU1FID0gZ3Rlc3Q7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCQlWRVJTSU9OSU5H
X1NZU1RFTSA9ICJhcHBsZS1nZW5lcmljIjsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKQEAg
LTEwNTYsNiArMTA2Nyw5IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJh
c2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDBENENERjEwRTMwRTA3NDAwMjk0ODAxIC8qIERl
YnVnUHJvamVjdC54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdf
Q1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMHgiOworCQkJCUNMQU5HX0NYWF9MSUJSQVJZ
ID0gImxpYmMrKyI7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKIAkJCX07
CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC0xMDYzLDYgKzEwNzcsOSBAQAogCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDQw
RDRDREY0MEUzMEUwNzQwMDI5NDgwMSAvKiBSZWxlYXNlUHJvamVjdC54Y2NvbmZpZyAqLzsKIAkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdu
dSsrMHgiOworCQkJCUNMQU5HX0NYWF9MSUJSQVJZID0gImxpYmMrKyI7CisJCQkJTUFDT1NYX0RF
UExPWU1FTlRfVEFSR0VUID0gMTAuNzsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsK
QEAgLTEwNzQsMTAwICsxMDkxLDkwIEBACiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAogCQkJ
CTNCMjM4RjYwMEU4MjhCNTQwMDg0NkUxMSAvKiBEZWJ1ZyAqLywKIAkJCQkzQjIzOEY2MTBFODI4
QjU0MDA4NDZFMTEgLyogUmVsZWFzZSAqLywKLQkJCQk0NEM0OEUwQzE0QTQwOURFMDBBMkQ5Qzcg
LyogUHJvZHVjdGlvbiAqLywKIAkJCSk7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJs
ZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQkJZGVm
YXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKIAkJfTsKIAkJNDA4OTlGNEEwRkZBNzFC
QzAwMEIyOUFFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0
ICJndGVzdF91bml0dGVzdC1mcmFtZXdvcmsiICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0
aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCiAJCQkJNDA4OTlGNDUwRkZBNzE4
NTAwMEIyOUFFIC8qIERlYnVnICovLAogCQkJCTQwODk5RjQ2MEZGQTcxODUwMDBCMjlBRSAvKiBS
ZWxlYXNlICovLAotCQkJCTQ0QzQ4RTA4MTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICov
LAogCQkJKTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1
bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCQlkZWZhdWx0Q29uZmlndXJhdGlv
bk5hbWUgPSBSZWxlYXNlOwogCQl9OwogCQk0MDg5QTAyNDBGRkFDRjAxMDAwQjI5QUUgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgInNhbXBsZTFfdW5pdHRl
c3QtZnJhbWV3b3JrIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQli
dWlsZENvbmZpZ3VyYXRpb25zID0gKAogCQkJCTQwODlBMDE1MEZGQUNFRkQwMDBCMjlBRSAvKiBE
ZWJ1ZyAqLywKIAkJCQk0MDg5QTAxNjBGRkFDRUZEMDAwQjI5QUUgLyogUmVsZWFzZSAqLywKLQkJ
CQk0NEM0OEUwQTE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLywKIAkJCSk7CiAJCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlv
bk5hbWUgPSBQcm9kdWN0aW9uOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFz
ZTsKIAkJfTsKIAkJNDBDNDRBRTQwRTM3OTkwNTAwOEZDQzUxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJWZXJzaW9uIEluZm8iICovID0gewogCQkJ
aXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCiAJ
CQkJNDBDNDRBREYwRTM3OThGNDAwOEZDQzUxIC8qIERlYnVnICovLAogCQkJCTQwQzQ0QUUwMEUz
Nzk4RjQwMDhGQ0M1MSAvKiBSZWxlYXNlICovLAotCQkJCTQ0QzQ4RTBEMTRBNDA5REUwMEEyRDlD
NyAvKiBQcm9kdWN0aW9uICovLAogCQkJKTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNp
YmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwogCQl9OwogCQk0MEM4NDkwMjEwMUEy
MTJFMDA4MzY0MkEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJn
ZXQgImd0ZXN0LXN0YXRpYyIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0Owog
CQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKIAkJCQk0MEM4NDhGQjEwMUEyMDlEMDA4MzY0MkEg
LyogRGVidWcgKi8sCiAJCQkJNDBDODQ4RkMxMDFBMjA5RDAwODM2NDJBIC8qIFJlbGVhc2UgKi8s
Ci0JCQkJNDRDNDhFMDYxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rpb24gKi8sCiAJCQkpOwog
CQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJl
bGVhc2U7CiAJCX07CiAJCTQwQzg0OTEyMTAxQTIxRDIwMDgzNjQyQSAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiZ3Rlc3RfbWFpbi1zdGF0aWMiICovID0g
ewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCiAJCQkJNDBDODQ5MEUxMDFBMjE3RjAwODM2NDJBIC8qIERlYnVnICovLAogCQkJCTQwQzg0
OTBGMTAxQTIxN0YwMDgzNjQyQSAvKiBSZWxlYXNlICovLAotCQkJCTQ0QzQ4RTA3MTRBNDA5REUw
MEEyRDlDNyAvKiBQcm9kdWN0aW9uICovLAogCQkJKTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9u
SXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247
CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwogCQl9OwogCQk0MEM4NDk4
NDEwMUEzNjg1MDA4MzY0MkEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRp
dmVUYXJnZXQgImd0ZXN0X3VuaXR0ZXN0LXN0YXRpYyIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZp
Z3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKIAkJCQk0MEM4NDk4NTEw
MUEzNjg1MDA4MzY0MkEgLyogRGVidWcgKi8sCiAJCQkJNDBDODQ5ODYxMDFBMzY4NTAwODM2NDJB
IC8qIFJlbGVhc2UgKi8sCi0JCQkJNDRDNDhFMDkxNEE0MDlERTAwQTJEOUM3IC8qIFByb2R1Y3Rp
b24gKi8sCiAJCQkpOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJ
ZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJCWRlZmF1bHRDb25maWd1
cmF0aW9uTmFtZSA9IFJlbGVhc2U7CiAJCX07CiAJCTQwQzg0OTk0MTAxQTM2QTYwMDgzNjQyQSAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAic2FtcGxlMV91
bml0dGVzdC1zdGF0aWMiICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJ
CWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCiAJCQkJNDBDODQ5OTUxMDFBMzZBNjAwODM2NDJBIC8q
IERlYnVnICovLAogCQkJCTQwQzg0OTk2MTAxQTM2QTYwMDgzNjQyQSAvKiBSZWxlYXNlICovLAot
CQkJCTQ0QzQ4RTBCMTRBNDA5REUwMEEyRDlDNyAvKiBQcm9kdWN0aW9uICovLAogCQkJKTsKIAkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0
aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxl
YXNlOwogCQl9OwogCQk0RkFEQzI0MjA4QjQxNTZEMDBBQkU1NUUgLyogQnVpbGQgY29uZmlndXJh
dGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0LWZyYW1ld29yayIgKi8gPSB7CiAJ
CQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgK
IAkJCQk0RkFEQzI0MzA4QjQxNTZEMDBBQkU1NUUgLyogRGVidWcgKi8sCiAJCQkJNEZBREMyNDQw
OEI0MTU2RDAwQUJFNTVFIC8qIFJlbGVhc2UgKi8sCi0JCQkJNDRDNDhFMDUxNEE0MDlERTAwQTJE
OUM3IC8qIFByb2R1Y3Rpb24gKi8sCiAJCQkpOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zp
c2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CiAJCX07CiAJCTRGQURDMjQ2MDhC
NDE1NkQwMEFCRTU1RSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3Qg
Imd0ZXN0IiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENv
bmZpZ3VyYXRpb25zID0gKAogCQkJCTRGQURDMjQ3MDhCNDE1NkQwMEFCRTU1RSAvKiBEZWJ1ZyAq
LywKIAkJCQk0RkFEQzI0ODA4QjQxNTZEMDBBQkU1NUUgLyogUmVsZWFzZSAqLywKLQkJCQk0NEM0
OEUwNDE0QTQwOURFMDBBMkQ5QzcgLyogUHJvZHVjdGlvbiAqLywKIAkJCSk7CiAJCQlkZWZhdWx0
Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUg
PSBQcm9kdWN0aW9uOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKIAkJ
fTsKIC8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KIAl9OwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGUyYjM3N2JiOGE1MDYx
NjM3NTNhNDFhYjYyMjdiZmQ1ZTE3ZjU5OWMuLjI2M2E1NWIyOGQ5Yjk5YTk4NjI4NDgzZGM5MGRk
YTAzMGYwZGYyZTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOC0wOC0zMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mu
a2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgVXBkYXRlIGdvb2dsZXRlc3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTcyMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9j
b25maWcuaDoKKyAgICAgICAgSW5zdGVhZCBvZiBtb2RpZnlpbmcgZ3Rlc3QgaXRzZWxmLCBhZGQg
bmVjZXNzYXJ5IFdURiBpbmNsdWRlcyBoZXJlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9D
b25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCisgICAgICAgIFJlbW92ZSBvYnNvbGV0ZWQgZGVm
aW5pdGlvbnMgR1RFU1RfSEFTX1RSMV9UVVBMRT0wIGFuZCBHVEVTVF9IQVNfUlRUST0wLgorCiAy
MDE4LTA4LTMwICBUaG9tYXMgRGVubmV5ICA8dGRlbm5leUBhcHBsZS5jb20+CiAKICAgICAgICAg
W1dITFNMXSBGaXggYXJyYXkgaW5kZXhpbmcgYmVoYXZpb3IKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwppbmRleCAzYzJlNTllYjZjNWQ0MWMz
YjJmMzQ5ZmZjY2U1Mjg0NjhiY2FhMjViLi4zZjRiZGZiYzliNjE0ZDI3MzgxMDc5Y2U0NjAyYTY2
ZTQyMjZjNGJmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25z
L0Jhc2UueGNjb25maWcKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9C
YXNlLnhjY29uZmlnCkBAIC0zNSw3ICszNSw3IEBAIENMQU5HX1dBUk5fQ1hYMFhfRVhURU5TSU9O
UyA9IE5POwogSEVBREVSX1NFQVJDSF9QQVRIUyA9ICR7QlVJTFRfUFJPRFVDVFNfRElSfS91c3Iv
bG9jYWwvaW5jbHVkZSAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRm9yd2FyZGluZ0hl
YWRlcnMgJChCVUlMVF9QUk9EVUNUU19ESVIpL1dlYkNvcmVUZXN0U3VwcG9ydDsKIAogR0NDX05P
X0NPTU1PTl9CTE9DS1MgPSBZRVM7Ci1HQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChE
RUJVR19ERUZJTkVTKSAkKEZFQVRVUkVfREVGSU5FUykgR1RFU1RfSEFTX1RSMV9UVVBMRT0wIEdU
RVNUX0hBU19SVFRJPTAgVV9ESVNBQkxFX1JFTkFNSU5HPTEgVV9TSE9XX0NQTFVTUExVU19BUEk9
MCAkKEdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlNfJChQTEFURk9STV9OQU1FKSk7CitHQ0Nf
UFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChERUJVR19ERUZJTkVTKSAkKEZFQVRVUkVfREVG
SU5FUykgVV9ESVNBQkxFX1JFTkFNSU5HPTEgVV9TSE9XX0NQTFVTUExVU19BUEk9MCAkKEdDQ19Q
UkVQUk9DRVNTT1JfREVGSU5JVElPTlNfJChQTEFURk9STV9OQU1FKSk7CiBHQ0NfUFJFUFJPQ0VT
U09SX0RFRklOSVRJT05TX21hY29zeCA9IEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVDsKIERFQlVH
X0lORk9STUFUSU9OX0ZPUk1BVCA9IGR3YXJmLXdpdGgtZHN5bTsKIFBSRUJJTkRJTkcgPSBOTwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29uZmlnLmgKaW5kZXggZWRmOGE2ZjFmNTZiMGJlZGZmZTg0ZTY2MGVlOGVmNTA0YzRj
NTJjYS4uMGMyYzRhZTdiZjBlOWNlNWU5ODc5NThlNTQ4NDNlZDQzNzQ2MjI0NiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvbmZpZy5oCkBAIC01Nyw4ICs1NywxNCBAQAogCiAjaWZkZWYgX19jcGx1c3BsdXMKICNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjdW5kZWYg
bmV3CisjdW5kZWYgZGVsZXRlCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNlbmRpZgog
CisjaW5jbHVkZSA8d3RmL0Rpc2FsbG93Q1R5cGUuaD4KKwogI2lmZGVmIF9fY2xhbmdfXwogLy8g
RmluaXNoIHdvcmtpbmcgYXJvdW5kIHRoZSBsZXNzIHN0cmljdCBjb2Rpbmcgc3RhbmRhcmRzIG9m
IHRoZSBndGVzdCBmcmFtZXdvcmsuCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348700</attachid>
            <date>2018-08-31 20:00:18 -0700</date>
            <delta_ts>2018-08-31 20:11:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175722-20180831200015.patch</filename>
            <type>text/plain</type>
            <size>2527859</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9DaGFuZ2VMb2cKaW5kZXggZmI1MTE0ZTAz
ZmM3ZTUxZjg2N2YzOWFiZjhkYjIwNDA1YWRhOWJiYS4uMTdkNjgyNDUyMDQxODM1M2JmZjA1OGUy
ZmQwMmE4Y2FmYmEwMDBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4
LTA4LTMwICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAg
ICBVcGRhdGUgZ29vZ2xldGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc1NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBndGVzdC86CisgICAgICAgIFVwZGF0ZSB0byBsYXRlc3QgKHBvc3QtMS44
LjApLgorCisgICAgICAgICogZ3Rlc3QvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogZ3Rlc3Qv
eGNvZGUvOgorICAgICAgICBLZWVwIG91ciB2ZXJzaW9ucyBvZiB0aGVzZSBidWlsZCBmaWxlcywg
bWFraW5nIGFueSBuZWNlc3NhcnkgYWRkaXRpdmUgdXBkYXRlcywKKyAgICAgICAgYW5kIHJlbW92
aW5nIFdURi9KU0MgZGVwZW5kZW5jaWVzIHNvIHRoYXQgd2Ugc3RvcCBmb3JraW5nIHRoaXJkLXBh
cnR5IHNvdXJjZS4KKwogMjAxOC0wNy0xNyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJv
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RLXSBVcGRhdGUgeGRnbWltZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ0hBTkdFUyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L0NIQU5HRVMKaW5kZXggZTU3NDQxNWVlNmVkODFjZjQ5MmJlMjk1MzQ2YzQ0NGVlYjEw
Y2U4OC4uMDU1MjEzMjQyMTJjOTEyODdkOTI0NGQ0NGJhYjMwNmRiNjY0YmFkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ0hBTkdFUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9DSEFOR0VTCkBAIC0xLDMgKzEsNjIgQEAKK0NoYW5nZXMgZm9yIDEuNy4wOgorCisq
IE5ldyBmZWF0dXJlOiBkZWF0aCB0ZXN0cyBhcmUgc3VwcG9ydGVkIG9uIE9wZW5CU0QgYW5kIGlu
IGlPUworICBzaW11bGF0b3Igbm93LgorKiBOZXcgZmVhdHVyZTogR29vZ2xlIFRlc3Qgbm93IGlt
cGxlbWVudHMgYSBwcm90b2NvbCB0byBhbGxvdworICBhIHRlc3QgcnVubmVyIHRvIGRldGVjdCB0
aGF0IGEgdGVzdCBwcm9ncmFtIGhhcyBleGl0ZWQKKyAgcHJlbWF0dXJlbHkgYW5kIHJlcG9ydCBp
dCBhcyBhIGZhaWx1cmUgKGJlZm9yZSBpdCB3b3VsZCBiZQorICBmYWxzZWx5IHJlcG9ydGVkIGFz
IGEgc3VjY2VzcyBpZiB0aGUgZXhpdCBjb2RlIGlzIDApLgorKiBOZXcgZmVhdHVyZTogVGVzdDo6
UmVjb3JkUHJvcGVydHkoKSBjYW4gbm93IGJlIHVzZWQgb3V0c2lkZSBvZiB0aGUKKyAgbGlmZXNw
YW4gb2YgYSB0ZXN0IG1ldGhvZCwgaW4gd2hpY2ggY2FzZSBpdCB3aWxsIGJlIGF0dHJpYnV0ZWQg
dG8KKyAgdGhlIGN1cnJlbnQgdGVzdCBjYXNlIG9yIHRoZSB0ZXN0IHByb2dyYW0gaW4gdGhlIFhN
TCByZXBvcnQuCisqIE5ldyBmZWF0dXJlIChwb3RlbnRpYWxseSBicmVha2luZyk6IC0tZ3Rlc3Rf
bGlzdF90ZXN0cyBub3cgcHJpbnRzCisgIHRoZSB0eXBlIHBhcmFtZXRlcnMgYW5kIHZhbHVlIHBh
cmFtZXRlcnMgZm9yIGVhY2ggdGVzdC4KKyogSW1wcm92ZW1lbnQ6IGNoYXIgcG9pbnRlcnMgYW5k
IGNoYXIgYXJyYXlzIGFyZSBub3cgZXNjYXBlZCBwcm9wZXJseQorICBpbiBmYWlsdXJlIG1lc3Nh
Z2VzLgorKiBJbXByb3ZlbWVudDogZmFpbHVyZSBzdW1tYXJ5IGluIFhNTCByZXBvcnRzIG5vdyBp
bmNsdWRlcyBmaWxlIGFuZAorICBsaW5lIGluZm9ybWF0aW9uLgorKiBJbXByb3ZlbWVudDogdGhl
IDx0ZXN0c3VpdGVzPiBYTUwgZWxlbWVudCBub3cgaGFzIGEgdGltZXN0YW1wIGF0dHJpYnV0ZS4K
KyogSW1wcm92ZW1lbnQ6IFdoZW4gLS1ndGVzdF9maWx0ZXIgaXMgc3BlY2lmaWVkLCBYTUwgcmVw
b3J0IG5vdyBkb2Vzbid0CisgIGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGVzdHMgdGhhdCBh
cmUgZmlsdGVyZWQgb3V0LgorKiBGaXhlZCB0aGUgYnVnIHdoZXJlIGxvbmcgLS1ndGVzdF9maWx0
ZXIgZmxhZyB2YWx1ZXMgYXJlIHRydW5jYXRlZCBpbgorICBkZWF0aCB0ZXN0cy4KKyogUG90ZW50
aWFsbHkgYnJlYWtpbmcgY2hhbmdlOiBSVU5fQUxMX1RFU1RTKCkgaXMgbm93IGltcGxlbWVudGVk
IGFzIGEKKyAgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIG1hY3JvIGluIG9yZGVyIHRvIHdvcmsgYmV0
dGVyIHdpdGggQ2xhbmcuCisqIENvbXBhdGliaWxpdHkgZml4ZXMgd2l0aCBDKysgMTEgYW5kIHZh
cmlvdXMgcGxhdGZvcm1zLgorKiBCdWcvd2FybmluZyBmaXhlcy4KKworQ2hhbmdlcyBmb3IgMS42
LjA6CisKKyogTmV3IGZlYXR1cmU6IEFERF9GQUlMVVJFX0FUKCkgZm9yIHJlcG9ydGluZyBhIHRl
c3QgZmFpbHVyZSBhdCB0aGUKKyAgZ2l2ZW4gc291cmNlIGxvY2F0aW9uIC0tIHVzZWZ1bCBmb3Ig
d3JpdGluZyB0ZXN0aW5nIHV0aWxpdGllcy4KKyogTmV3IGZlYXR1cmU6IHRoZSB1bml2ZXJzYWwg
dmFsdWUgcHJpbnRlciBpcyBtb3ZlZCBmcm9tIEdvb2dsZSBNb2NrCisgIHRvIEdvb2dsZSBUZXN0
LgorKiBOZXcgZmVhdHVyZTogdHlwZSBwYXJhbWV0ZXJzIGFuZCB2YWx1ZSBwYXJhbWV0ZXJzIGFy
ZSByZXBvcnRlZCBpbgorICB0aGUgWE1MIHJlcG9ydCBub3cuCisqIEEgZ3Rlc3RfZGlzYWJsZV9w
dGhyZWFkcyBDTWFrZSBvcHRpb24uCisqIENvbG9yZWQgb3V0cHV0IHdvcmtzIGluIEdOVSBTY3Jl
ZW4gc2Vzc2lvbnMgbm93LgorKiBQYXJhbWV0ZXJzIG9mIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dHMgYXJlIG5vdyBwcmludGVkIGluIHRoZQorICB0ZXh0dWFsIG91dHB1dC4KKyogRmFpbHVyZXMg
ZnJvbSBhZCBob2MgdGVzdCBhc3NlcnRpb25zIHJ1biBiZWZvcmUgUlVOX0FMTF9URVNUUygpIGFy
ZQorICBub3cgY29ycmVjdGx5IHJlcG9ydGVkLgorKiBBcmd1bWVudHMgb2YgQVNTRVJUX1hZIGFu
ZCBFWFBFQ1RfWFkgbm8gbG9uZ2VyIG5lZWQgdG8gc3VwcG9ydCA8PCB0bworICBvc3RyZWFtLgor
KiBNb3JlIGNvbXBsZXRlIGhhbmRsaW5nIG9mIGV4Y2VwdGlvbnMuCisqIEdURVNUX0FTU0VSVF9Y
WSBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIEFTU0VSVF9YWSBpbiBjYXNlIHRoZSBsYXR0ZXIKKyAg
bmFtZSBpcyBhbHJlYWR5IHVzZWQgYnkgYW5vdGhlciBsaWJyYXJ5LgorKiAtLWd0ZXN0X2NhdGNo
X2V4Y2VwdGlvbnMgaXMgbm93IHRydWUgYnkgZGVmYXVsdCwgYWxsb3dpbmcgYSB0ZXN0CisgIHBy
b2dyYW0gdG8gY29udGludWUgYWZ0ZXIgYW4gZXhjZXB0aW9uIGlzIHRocm93bi4KKyogVmFsdWUt
cGFyYW1ldGVyaXplZCB0ZXN0IGZpeHR1cmVzIGNhbiBub3cgZGVyaXZlIGZyb20gVGVzdCBhbmQK
KyAgV2l0aFBhcmFtSW50ZXJmYWNlPFQ+IHNlcGFyYXRlbHksIGVhc2luZyBjb252ZXJzaW9uIG9m
IGxlZ2FjeSB0ZXN0cy4KKyogRGVhdGggdGVzdCBtZXNzYWdlcyBhcmUgY2xlYXJseSBtYXJrZWQg
dG8gbWFrZSB0aGVtIG1vcmUKKyAgZGlzdGluZ3Vpc2hhYmxlIGZyb20gb3RoZXIgbWVzc2FnZXMu
CisqIENvbXBhdGliaWxpdHkgZml4ZXMgZm9yIEFuZHJvaWQsIEdvb2dsZSBOYXRpdmUgQ2xpZW50
LCBNaW5HVywgSFAgVVgsCisgIFBvd2VyUEMsIEx1Y2lkIGF1dG90b29scywgbGliQ1N0ZCwgU3Vu
IEMrKywgQm9ybGFuZCBDKysgQnVpbGRlciAoQ29kZSBHZWFyKSwKKyAgSUJNIFhMIEMrKyAoVmlz
dWFsIEFnZSBDKyspLCBhbmQgQysrMHguCisqIEJ1ZyBmaXhlcyBhbmQgaW1wbGVtZW50YXRpb24g
Y2xlYW4tdXBzLgorKiBQb3RlbnRpYWxseSBpbmNvbXBhdGlibGUgY2hhbmdlczogZGlzYWJsZXMg
dGhlIGhhcm1mdWwgJ21ha2UgaW5zdGFsbCcKKyAgY29tbWFuZCBpbiBhdXRvdG9vbHMuCisKIENo
YW5nZXMgZm9yIDEuNS4wOgogCiAgKiBOZXcgZmVhdHVyZTogYXNzZXJ0aW9ucyBjYW4gYmUgc2Fm
ZWx5IGNhbGxlZCBpbiBtdWx0aXBsZSB0aHJlYWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NNYWtl
TGlzdHMudHh0CmluZGV4IGRkMTAwNWZlNmU1N2M1MjBiZTk3ZjRmODA1MmI0MjZmMGZlMDU2OGYu
LjQzMDdiYzhiNzJmZWRlNmFiODJmMGY5NTM3OTU1ZWJiYjFkZDRkMTMgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L0NNYWtlTGlzdHMudHh0CkBAIC0xLDE0ICsxLDEyIEBACiAjIFRoaXMgaXMgYW4g
YWx0ZXJuYXRpdmUgQ01ha2VMaXN0cy50eHQgdG8gdGhlIGV4cGVyaW1lbnRhbCBvbmUKICMgc2hp
cHBlZCB3aXRoIHRoZSBvcmlnaW5hbCBwYWNrYWdlLiBJdCBidWlsZHMgb25seSB0aGUgZXNzZW50
aWFsCi0jIGZvciBvdXIgdGVzdHMuIFRoZSBXZWJLaXQgdmVyc2lvbiBvZiBndGVzdCBuZWVkcyBh
Y2Nlc3MgdG8gc29tZQotIyBoZWFkZXJzIGZyb20gV1RGIGFuZCBKU0MgZm9yIGNvbmZpZ3VyYXRp
b24uCisjIGZvciBvdXIgdGVzdHMuCiAKIHNldChHVEVTVF9ESVIgIiR7VEhJUkRQQVJUWV9ESVJ9
L2d0ZXN0IikKIAogc2V0KEdURVNUX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtHVEVTVF9E
SVJ9IgogICAgICIke0dURVNUX0RJUn0vaW5jbHVkZSIKLSAgICAiJHtGT1JXQVJESU5HX0hFQURF
UlNfRElSfSIKICkKIAogc2V0KEdURVNUX1NPVVJDRVMKQEAgLTE3LDYgKzE1LDcgQEAgc2V0KEdU
RVNUX1NPVVJDRVMKICAgICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LWZpbGVwYXRoLmNjCiAgICAg
JHtHVEVTVF9ESVJ9L3NyYy9ndGVzdF9tYWluLmNjCiAgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVz
dC1wb3J0LmNjCisgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1wcmludGVycy5jYwogICAgICR7
R1RFU1RfRElSfS9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjCiAgICAgJHtHVEVTVF9ESVJ9L3NyYy9n
dGVzdC10eXBlZC10ZXN0LmNjCiApCkBAIC0zMiwyMyArMzEsMTEgQEAgZWxzZSAoKQogZW5kaWYg
KCkKIAogaW5jbHVkZV9kaXJlY3Rvcmllcygke0dURVNUX0lOQ0xVREVfRElSRUNUT1JJRVN9KQot
YWRkX2RlZmluaXRpb25zKC1ER1RFU1RfSEFTX1JUVEk9MCkKIAogV0VCS0lUX0FERF9UQVJHRVRf
Q1hYX0ZMQUdTKGd0ZXN0IC1Xbm8tdW5kZWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAtV25vLXN0cmluZ29wLXRydW5jYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAtV25vLXN1Z2dlc3QtYXR0cmlidXRlPWZvcm1hdCkKIAotIyBGSVhNRTogVGhpcyB3
b3JrcyBhcm91bmQgY29tcGF0aWJpbGl0eSBwcm9ibGVtcyBpbiB0aGUgb2xkIHZlcnNpb24gb2Yg
dGhlIHRoaXJkLXBhcnkKLSMgZ29vZ2xldGVzdCBzb3VyY2UgY29kZSBjaGVja291dC4gSXQgc2hv
dWxkIGJlIHJlbW92ZWQgb25jZSB3ZSB1cGdyYWRlIHRvIGEgbmV3ZXIgdmVyc2lvbi4KLWlmIChD
T01QSUxFUl9JU19DTEFORykKLSAgICBhZGRfZGVmaW5pdGlvbnMoLURHVEVTVF9IQVNfVFIxX1RV
UExFPTApCi1lbmRpZiAoKQotCi10YXJnZXRfbGlua19saWJyYXJpZXMoZ3Rlc3QKLSAgICBXVEYK
LSkKLWFkZF9kZXBlbmRlbmNpZXMoZ3Rlc3QgSmF2YVNjcmlwdENvcmVQcml2YXRlRm9yd2FyZGlu
Z0hlYWRlcnMpCi0KIGlmIChDTUFLRV9VU0VfUFRIUkVBRFNfSU5JVCkKICAgICB0YXJnZXRfbGlu
a19saWJyYXJpZXMoZ3Rlc3QgJHtDTUFLRV9USFJFQURfTElCU19JTklUfSkKICAgICBhZGRfZGVm
aW5pdGlvbnMoLURHVEVTVF9IQVNfUFRIUkVBRD0xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvQ09OVFJJQlVUT1JTIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09OVFJJ
QlVUT1JTCmluZGV4IDA5MzRhZTEzMDU5YWZjZGMwNWRmODEyNDdlNjFiOWE4NGEyMzEyZTIuLmZl
YWUyZmMwNDQxMGRjMzA4ZTQ2NGFhMjU2ZmUxZjJkMzFlZGM5ODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L0NPTlRSSUJVVE9SUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9DT05UUklCVVRPUlMKQEAgLTIxLDYgKzIxLDcgQEAgTWFudWVsIEtsaW1layA8a2xpbWVr
QGdvb2dsZS5jb20+CiBNYXJrdXMgSGV1bGUgPG1hcmt1cy5oZXVsZUBnbWFpbC5jb20+CiBNaWth
IFJhZW50byA8bWlraWVAaWtpLmZpPgogTWlrbMOzcyBGYXpla2FzIDxtZmF6ZWthc0BzemVtYWZv
ci5jb20+CitQYXNpIFZhbG1pbmVuIDxwYXNpLnZhbG1pbmVuQGdtYWlsLmNvbT4KIFBhdHJpY2sg
SGFubmEgPHBoYW5uYUBnb29nbGUuY29tPgogUGF0cmljayBSaWxleSA8cGZyQGdvb2dsZS5jb20+
CiBQZXRlciBLYW1pbnNraSA8cGlvdHJrQGdvb2dsZS5jb20+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9DT1BZSU5HIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09QWUlO
RwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk0MWExMWY4Y2U5NDM4OTE2MGI0NTg5
MjdhMjliYTIxNzU0MjgxOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DT1BZSU5HCisrKyAvZGV2L251bGwKQEAg
LTEsMjggKzAsMCBAQAotQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi1BbGwgcmlnaHRzIHJl
c2VydmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQotICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LW5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLWNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLWluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLWRpc3RyaWJ1dGlvbi4KLSAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLWNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi10aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvTElDRU5TRSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0xJQ0VOU0UK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTk0MWExMWY4Y2U5NDM4OTE2MGI0NTg5MjdhMjliYTIxNzU0MjgxOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0xJQ0VOU0UKQEAgLTAsMCAr
MSwyOCBAQAorQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCitBbGwgcmlnaHRzIHJlc2VydmVk
LgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKK21ldDoKKworICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKK25vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKK2NvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKK2luIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKK2Rpc3RyaWJ1dGlvbi4KKyAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKK2NvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Cit0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCitBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCitTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKK0RBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCitPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvTWFrZWZpbGUuYW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9NYWtlZmlsZS5h
bQppbmRleCA4ZDc1ZTMyY2MyMGNkZTgzYzE3NGY0ZTA3OGUyOTkzYTkzMmE5ZDE4Li5iNDRjODQx
NmJhMDgwYzJmMDE2ZjE2NmIxOGI0MmMwZjczZWNlN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9NYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9N
YWtlZmlsZS5hbQpAQCAtMSwxMyArMSwxNiBAQAogIyBBdXRvbWFrZSBmaWxlCiAKK0FDTE9DQUxf
QU1GTEFHUyA9IC1JIG00CisKICMgTm9uc3RhbmRhcmQgcGFja2FnZSBmaWxlcyBmb3IgZGlzdHJp
YnV0aW9uCiBFWFRSQV9ESVNUID0gXAogICBDSEFOR0VTIFwKICAgQ09OVFJJQlVUT1JTIFwKKyAg
TElDRU5TRSBcCiAgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1bXAgXAorICBp
bmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcCBc
CiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1wIFwKICAgaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wIFwKLSAgaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oLnB1bXAgXAogICBtYWtlL01h
a2VmaWxlIFwKICAgc2NyaXB0cy9mdXNlX2d0ZXN0X2ZpbGVzLnB5IFwKICAgc2NyaXB0cy9nZW5f
Z3Rlc3RfcHJlZF9pbXBsLnB5IFwKQEAgLTE3LDE5ICsyMCwyMSBAQCBFWFRSQV9ESVNUID0gXAog
IyBndGVzdCBzb3VyY2UgZmlsZXMgdGhhdCB3ZSBkb24ndCBjb21waWxlIGRpcmVjdGx5LiAgVGhl
eSBhcmUKICMgI2luY2x1ZGVkIGJ5IGd0ZXN0LWFsbC5jYy4KIEdURVNUX1NSQyA9IFwKLSAgc3Jj
L2d0ZXN0LmNjIFwKICAgc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MgXAogICBzcmMvZ3Rlc3QtZmls
ZXBhdGguY2MgXAogICBzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmggXAogICBzcmMvZ3Rlc3QtcG9y
dC5jYyBcCisgIHNyYy9ndGVzdC1wcmludGVycy5jYyBcCiAgIHNyYy9ndGVzdC10ZXN0LXBhcnQu
Y2MgXAotICBzcmMvZ3Rlc3QtdHlwZWQtdGVzdC5jYworICBzcmMvZ3Rlc3QtdHlwZWQtdGVzdC5j
YyBcCisgIHNyYy9ndGVzdC5jYwogCiBFWFRSQV9ESVNUICs9ICQoR1RFU1RfU1JDKQogCiAjIFNh
bXBsZSBmaWxlcyB0aGF0IHdlIGRvbid0IGNvbXBpbGUuCiBFWFRSQV9ESVNUICs9IFwKICAgc2Ft
cGxlcy9wcmltZV90YWJsZXMuaCBcCisgIHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYyBcCiAg
IHNhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYyBcCiAgIHNhbXBsZXMvc2FtcGxlM191bml0dGVz
dC5jYyBcCiAgIHNhbXBsZXMvc2FtcGxlNF91bml0dGVzdC5jYyBcCkBAIC00MSw4OCArNDYsOTEg
QEAgRVhUUkFfRElTVCArPSBcCiAKICMgQysrIHRlc3QgZmlsZXMgdGhhdCB3ZSBkb24ndCBjb21w
aWxlIGRpcmVjdGx5LgogRVhUUkFfRElTVCArPSBcCisgIHRlc3QvZ3Rlc3QtZGVhdGgtdGVzdF9l
eF90ZXN0LmNjIFwKICAgdGVzdC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2MgXAotICB0ZXN0L2d0
ZXN0X2Vudmlyb25tZW50X3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3QuY2Mg
XAogICB0ZXN0L2d0ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3QtbGlzdGVu
ZXJfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjIFwKLSAgdGVzdC9ndGVz
dF9ub190ZXN0X3VuaXR0ZXN0LmNjIFwKICAgdGVzdC9ndGVzdC1vcHRpb25zX3Rlc3QuY2MgXAot
ICB0ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtcGFyYW0tdGVz
dDJfdGVzdC5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0Mi10ZXN0LmNjIFwKKyAg
dGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QyLXRlc3QuY2MgXAorICB0ZXN0L2dvb2dsZXRlc3Qt
cGFyYW0tdGVzdC10ZXN0LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5j
YyBcCiAgIHRlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmggXAogICB0ZXN0L2d0ZXN0LXBvcnRf
dGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3RfcHJlbWF0dXJlX2V4aXRfdGVzdC5jYyBcCisgIHRlc3Qv
Z3Rlc3QtcHJpbnRlcnNfdGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2Mg
XAorICB0ZXN0L2dvb2dsZXRlc3QtdHVwbGUtdGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3QtdHlwZWQt
dGVzdDJfdGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNjIFwKKyAgdGVz
dC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuaCBcCisgIHRlc3QvZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rl
c3QuY2MgXAorICB0ZXN0L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8uY2Mg
XAorICB0ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0Xy5jYyBcCisgIHRlc3Qv
Z29vZ2xldGVzdC1jb2xvci10ZXN0Xy5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC1lbnYtdmFyLXRl
c3RfLmNjIFwKKyAgdGVzdC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjIFwKKyAgdGVzdC9nb29n
bGV0ZXN0LWZpbHRlci11bml0dGVzdF8uY2MgXAorICB0ZXN0L2d0ZXN0X2hlbHBfdGVzdF8uY2Mg
XAorICB0ZXN0L2dvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdF8uY2MgXAorICB0ZXN0L2d0
ZXN0X21haW5fdW5pdHRlc3QuY2MgXAorICB0ZXN0L2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QuY2Mg
XAorICB0ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjIFwKICAgdGVzdC9ndGVzdF9wcmVk
X2ltcGxfdW5pdHRlc3QuY2MgXAogICB0ZXN0L2d0ZXN0X3Byb2RfdGVzdC5jYyBcCi0gIHRlc3Qv
cHJvZHVjdGlvbi5jYyBcCi0gIHRlc3QvcHJvZHVjdGlvbi5oIFwKICAgdGVzdC9ndGVzdF9yZXBl
YXRfdGVzdC5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfLmNjIFwKICAgdGVz
dC9ndGVzdF9zb2xlX2hlYWRlcl90ZXN0LmNjIFwKICAgdGVzdC9ndGVzdF9zdHJlc3NfdGVzdC5j
YyBcCi0gIHRlc3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0X3Rocm93
X29uX2ZhaWx1cmVfZXhfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNj
IFwKLSAgdGVzdC9ndGVzdC10eXBlZC10ZXN0Ml90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC10eXBl
ZC10ZXN0X3Rlc3QuaCBcCisgIHRlc3QvZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3Rf
LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdF8uY2MgXAogICB0ZXN0
L2d0ZXN0X3VuaXR0ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYyBc
Ci0gIHRlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfbWFpbl91bml0
dGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXR1cGxl
X3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rl
c3QtcGFyYW0tdGVzdDJfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91
bml0dGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjIFwKLSAgdGVzdC9ndGVz
dF9lbnZfdmFyX3Rlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3RfLmNjIFwK
LSAgdGVzdC9ndGVzdF9oZWxwX3Rlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3Vu
aXR0ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjIFwKLSAgdGVzdC9ndGVz
dF9zaHVmZmxlX3Rlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3Rf
LmNjIFwKLSAgdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3RfLmNjIFwKICAgdGVzdC9ndGVz
dF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MgXAogICB0ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMl90ZXN0
Xy5jYyBcCi0gIHRlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MKKyAgdGVzdC9ndGVz
dF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYyBcCisgIHRlc3QvcHJvZHVjdGlvbi5jYyBcCisgIHRl
c3QvcHJvZHVjdGlvbi5oCiAKICMgUHl0aG9uIHRlc3RzIHRoYXQgd2UgZG9uJ3QgcnVuLgogRVhU
UkFfRElTVCArPSBcCi0gIHRlc3QvZ3Rlc3RfdGVzdF91dGlscy5weSBcCi0gIHRlc3QvZ3Rlc3Rf
eG1sX3Rlc3RfdXRpbHMucHkgXAotICB0ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRl
c3QucHkgXAotICB0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkgXAotICB0ZXN0L2d0ZXN0X2Vudl92
YXJfdGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0LnB5IFwKKyAgdGVzdC9n
b29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3QucHkgXAorICB0ZXN0L2dvb2dsZXRl
c3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LWNvbG9yLXRl
c3QucHkgXAorICB0ZXN0L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0LnB5IFwKKyAgdGVzdC9nb29n
bGV0ZXN0LWZpbHRlci11bml0dGVzdC5weSBcCiAgIHRlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5IFwK
LSAgdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF9vdXRw
dXRfdGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQgXAot
ICB0ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl93aW4udHh0IFwKLSAgdGVzdC9ndGVzdF9z
aHVmZmxlX3Rlc3QucHkgXAotICB0ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdC5weSBc
Ci0gIHRlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0
LWxpc3QtdGVzdHMtdW5pdHRlc3QucHkgXAorICB0ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Qu
cHkgXAorICB0ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfZ29sZGVuX2xpbi50eHQgXAorICB0
ZXN0L2dvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0LnB5IFwKKyAgdGVzdC9ndGVzdF90ZXN0X3V0aWxz
LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdC5weSBcCisgIHRl
c3QvZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3QucHkgXAogICB0ZXN0L2d0ZXN0X3htbF9v
dXRmaWxlc190ZXN0LnB5IFwKICAgdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0LnB5IFwK
LSAgdGVzdC9ydW5fdGVzdHNfdXRpbC5weSBcCi0gIHRlc3QvcnVuX3Rlc3RzX3V0aWxfdGVzdC5w
eQorICB0ZXN0L2d0ZXN0X3htbF90ZXN0X3V0aWxzLnB5CiAKICMgQ01ha2Ugc2NyaXB0CiBFWFRS
QV9ESVNUICs9IFwKLSAgQ01ha2VMaXN0cy50eHQKKyAgQ01ha2VMaXN0cy50eHQgXAorICBjbWFr
ZS9pbnRlcm5hbF91dGlscy5jbWFrZQogCiAjIE1TVkMgcHJvamVjdCBmaWxlcwogRVhUUkFfRElT
VCArPSBcCi0gIG1zdmMvZ3Rlc3QtbWQuc2xuIFwKLSAgbXN2Yy9ndGVzdC5zbG4gXAotICBtc3Zj
L2d0ZXN0LW1kLnZjcHJvaiBcCi0gIG1zdmMvZ3Rlc3QudmNwcm9qIFwKLSAgbXN2Yy9ndGVzdF9t
YWluLW1kLnZjcHJvaiBcCi0gIG1zdmMvZ3Rlc3RfbWFpbi52Y3Byb2ogXAotICBtc3ZjL2d0ZXN0
X3Byb2RfdGVzdC1tZC52Y3Byb2ogXAotICBtc3ZjL2d0ZXN0X3Byb2RfdGVzdC52Y3Byb2ogXAot
ICBtc3ZjL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjcHJvaiBcCi0gIG1zdmMvZ3Rlc3RfdW5pdHRlc3Qu
dmNwcm9qCisgIG1zdmMvMjAxMC9ndGVzdC1tZC5zbG4gXAorICBtc3ZjLzIwMTAvZ3Rlc3QtbWQu
dmN4cHJvaiBcCisgIG1zdmMvMjAxMC9ndGVzdC5zbG4gXAorICBtc3ZjLzIwMTAvZ3Rlc3QudmN4
cHJvaiBcCisgIG1zdmMvMjAxMC9ndGVzdF9tYWluLW1kLnZjeHByb2ogXAorICBtc3ZjLzIwMTAv
Z3Rlc3RfbWFpbi52Y3hwcm9qIFwKKyAgbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3hw
cm9qIFwKKyAgbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC52Y3hwcm9qIFwKKyAgbXN2Yy8yMDEw
L2d0ZXN0X3VuaXR0ZXN0LW1kLnZjeHByb2ogXAorICBtc3ZjLzIwMTAvZ3Rlc3RfdW5pdHRlc3Qu
dmN4cHJvagogCiAjIHhjb2RlIHByb2plY3QgZmlsZXMKIEVYVFJBX0RJU1QgKz0gXApAQCAtMTMz
LDMxICsxNDEsMjcgQEAgRVhUUkFfRElTVCArPSBcCiAgIHhjb2RlL0NvbmZpZy9TdGF0aWNMaWJy
YXJ5VGFyZ2V0LnhjY29uZmlnIFwKICAgeGNvZGUvQ29uZmlnL1Rlc3RUYXJnZXQueGNjb25maWcg
XAogICB4Y29kZS9SZXNvdXJjZXMvSW5mby5wbGlzdCBcCi0gIHhjb2RlL1NjcmlwdHMvdmVyc2lv
bmdlbmVyYXRlLnB5IFwKICAgeGNvZGUvU2NyaXB0cy9ydW50ZXN0cy5zaCBcCisgIHhjb2RlL1Nj
cmlwdHMvdmVyc2lvbmdlbmVyYXRlLnB5IFwKICAgeGNvZGUvZ3Rlc3QueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagogCiAjIHhjb2RlIHNhbXBsZSBmaWxlcwogRVhUUkFfRElTVCArPSBcCiAgIHhj
b2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL0luZm8ucGxpc3QgXAorICB4Y29kZS9TYW1wbGVz
L0ZyYW1ld29ya1NhbXBsZS9XaWRnZXRGcmFtZXdvcmsueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBcCiAgIHhjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3J1bnRlc3RzLnNoIFwKLSAgeGNv
ZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0X3Rlc3QuY2MgXAogICB4Y29kZS9TYW1w
bGVzL0ZyYW1ld29ya1NhbXBsZS93aWRnZXQuY2MgXAogICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29y
a1NhbXBsZS93aWRnZXQuaCBcCi0gIHhjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL1dpZGdl
dEZyYW1ld29yay54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisgIHhjb2RlL1NhbXBsZXMvRnJh
bWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjCiAKICMgQysrQnVpbGRlciBwcm9qZWN0IGZpbGVz
CiBFWFRSQV9ESVNUICs9IFwKKyAgY29kZWdlYXIvZ3Rlc3QuY2Jwcm9qIFwKKyAgY29kZWdlYXIv
Z3Rlc3QuZ3JvdXBwcm9qIFwKICAgY29kZWdlYXIvZ3Rlc3RfYWxsLmNjIFwKICAgY29kZWdlYXIv
Z3Rlc3RfbGluay5jYyBcCi0gIGNvZGVnZWFyL2d0ZXN0LmNicHJvaiBcCiAgIGNvZGVnZWFyL2d0
ZXN0X21haW4uY2Jwcm9qIFwKLSAgY29kZWdlYXIvZ3Rlc3RfdW5pdHRlc3QuY2Jwcm9qIFwKLSAg
Y29kZWdlYXIvZ3Rlc3QuZ3JvdXBwcm9qCi0KLSMgU2NyaXB0cyBhbmQgdXRpbGl0aWVzCi1iaW5f
U0NSSVBUUyA9IHNjcmlwdHMvZ3Rlc3QtY29uZmlnCi1DTEVBTkZJTEVTID0gJChiaW5fU0NSSVBU
UykKKyAgY29kZWdlYXIvZ3Rlc3RfdW5pdHRlc3QuY2Jwcm9qCiAKICMgRGlzdHJpYnV0ZSBhbmQg
aW5zdGFsbCBNNCBtYWNybwogbTRkYXRhZGlyID0gJChkYXRhZGlyKS9hY2xvY2FsCkBAIC0xODEs
MTUgKzE4NSwxNyBAQCBsaWJfTFRMSUJSQVJJRVMgPSBsaWIvbGliZ3Rlc3QubGEgbGliL2xpYmd0
ZXN0X21haW4ubGEKIAogbGliX2xpYmd0ZXN0X2xhX1NPVVJDRVMgPSBzcmMvZ3Rlc3QtYWxsLmNj
CiAKLXBrZ2luY2x1ZGVfSEVBREVSUyA9IGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCBcCi0gICAgICAg
ICAgICAgICAgICAgICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaCBcCi0gICAgICAg
ICAgICAgICAgICAgICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCBcCi0gICAgICAgICAg
ICAgICAgICAgICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaCBcCi0gICAgICAgICAg
ICAgICAgICAgICBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIFwKLSAgICAgICAgICAg
ICAgICAgICAgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oIFwKLSAgICAgICAgICAgICAgICAg
ICAgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3Qtc3BpLmggXAotICAgICAgICAgICAgICAgICAgICAgaW5j
bHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBhcnQuaCBcCi0gICAgICAgICAgICAgICAgICAgICBpbmNs
dWRlL2d0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaAorcGtnaW5jbHVkZV9IRUFERVJTID0gXAorICBp
bmNsdWRlL2d0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3Qt
bWVzc2FnZS5oIFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmggXAorICBpbmNs
dWRlL2d0ZXN0L2d0ZXN0LXByaW50ZXJzLmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXNwaS5o
IFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBhcnQuaCBcCisgIGluY2x1ZGUvZ3Rlc3Qv
Z3Rlc3QtdHlwZWQtdGVzdC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC5oIFwKKyAgaW5jbHVk
ZS9ndGVzdC9ndGVzdF9wcmVkX2ltcGwuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5o
CiAKIHBrZ2luY2x1ZGVfaW50ZXJuYWxkaXIgPSAkKHBrZ2luY2x1ZGVkaXIpL2ludGVybmFsCiBw
a2dpbmNsdWRlX2ludGVybmFsX0hFQURFUlMgPSBcCkBAIC0yMDAsNjEgKzIwNiw5NyBAQCBwa2dp
bmNsdWRlX2ludGVybmFsX0hFQURFUlMgPSBcCiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCBcCiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcGFyYW0tdXRpbC5oIFwKICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmgg
XAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oIFwKICAgaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCBcCiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtdHVwbGUuaCBcCi0gIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11
dGlsLmgKKyAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCBcCisgIGlu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LmggXAorICBpbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmggXAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1
c3RvbS9ndGVzdC1wcmludGVycy5oCiAKIGxpYl9saWJndGVzdF9tYWluX2xhX1NPVVJDRVMgPSBz
cmMvZ3Rlc3RfbWFpbi5jYwogbGliX2xpYmd0ZXN0X21haW5fbGFfTElCQUREID0gbGliL2xpYmd0
ZXN0LmxhCiAKLSMgQnVsaWQgcnVsZXMgZm9yIHNhbXBsZXMgYW5kIHRlc3RzLiBBdXRvbWFrZSdz
IG5hbWluZyBmb3Igc29tZSBvZgorIyBCdWlsZCBydWxlcyBmb3Igc2FtcGxlcyBhbmQgdGVzdHMu
IEF1dG9tYWtlJ3MgbmFtaW5nIGZvciBzb21lIG9mCiAjIHRoZXNlIHZhcmlhYmxlcyBpc24ndCB0
ZXJyaWJseSBvYnZpb3VzLCBzbyB0aGlzIGlzIGEgYnJpZWYKICMgcmVmZXJlbmNlOgogIwogIyBU
RVNUUyAtLSBQcm9ncmFtcyBydW4gYXV0b21hdGljYWxseSBieSAibWFrZSBjaGVjayIKICMgY2hl
Y2tfUFJPR1JBTVMgLS0gUHJvZ3JhbXMgYnVpbHQgYnkgIm1ha2UgY2hlY2siIGJ1dCBub3QgbmVj
ZXNzYXJpbHkgcnVuCiAKLW5vaW5zdF9MVExJQlJBUklFUyA9IHNhbXBsZXMvbGlic2FtcGxlcy5s
YQotCi1zYW1wbGVzX2xpYnNhbXBsZXNfbGFfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlMS5jYyBc
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvc2FtcGxlMS5oIFwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlcy9zYW1wbGUyLmNjIFwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlcy9zYW1wbGUyLmggXAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVzL3NhbXBsZTMtaW5sLmggXAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVzL3NhbXBsZTQuY2MgXAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzYW1wbGVzL3NhbXBsZTQuaAotCiBURVNUUz0KIFRFU1RTX0VO
VklST05NRU5UID0gR1RFU1RfU09VUkNFX0RJUj0iJChzcmNkaXIpL3Rlc3QiIFwKICAgICAgICAg
ICAgICAgICAgICAgR1RFU1RfQlVJTERfRElSPSIkKHRvcF9idWlsZGRpcikvdGVzdCIKIGNoZWNr
X1BST0dSQU1TPQogCiAjIEEgc2ltcGxlIHNhbXBsZSBvbiB1c2luZyBndGVzdC4KLVRFU1RTICs9
IHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdAotY2hlY2tfUFJPR1JBTVMgKz0gc2FtcGxlcy9zYW1w
bGUxX3VuaXR0ZXN0Ci1zYW1wbGVzX3NhbXBsZTFfdW5pdHRlc3RfU09VUkNFUyA9IHNhbXBsZXMv
c2FtcGxlMV91bml0dGVzdC5jYworVEVTVFMgKz0gc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0IFwK
KyAgICBzYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlM191bml0
dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGU0X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBs
ZTVfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlNl91bml0dGVzdCBcCisgICAgc2FtcGxl
cy9zYW1wbGU3X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QgXAorICAg
IHNhbXBsZXMvc2FtcGxlOV91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGUxMF91bml0dGVz
dAorY2hlY2tfUFJPR1JBTVMgKz0gc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0IFwKKyAgICBzYW1w
bGVzL3NhbXBsZTJfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlM191bml0dGVzdCBcCisg
ICAgc2FtcGxlcy9zYW1wbGU0X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTVfdW5pdHRl
c3QgXAorICAgIHNhbXBsZXMvc2FtcGxlNl91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGU3
X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMv
c2FtcGxlOV91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdAorCitzYW1w
bGVzX3NhbXBsZTFfdW5pdHRlc3RfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5j
YyBzYW1wbGVzL3NhbXBsZTEuY2MKIHNhbXBsZXNfc2FtcGxlMV91bml0dGVzdF9MREFERCA9IGxp
Yi9saWJndGVzdF9tYWluLmxhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNh
bXBsZXMvbGlic2FtcGxlcy5sYQotCi0jIEFub3RoZXIgc2FtcGxlLiAgSXQgYWxzbyB2ZXJpZmll
cyB0aGF0IGxpYmd0ZXN0IHdvcmtzLgotVEVTVFMgKz0gc2FtcGxlcy9zYW1wbGUxMF91bml0dGVz
dAotY2hlY2tfUFJPR1JBTVMgKz0gc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBsZTJf
dW5pdHRlc3RfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYyBzYW1wbGVzL3Nh
bXBsZTIuY2MKK3NhbXBsZXNfc2FtcGxlMl91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9t
YWluLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5s
YQorc2FtcGxlc19zYW1wbGUzX3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTNfdW5p
dHRlc3QuY2MKK3NhbXBsZXNfc2FtcGxlM191bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9t
YWluLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5s
YQorc2FtcGxlc19zYW1wbGU0X3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTRfdW5p
dHRlc3QuY2Mgc2FtcGxlcy9zYW1wbGU0LmNjCitzYW1wbGVzX3NhbXBsZTRfdW5pdHRlc3RfTERB
REQgPSBsaWIvbGliZ3Rlc3RfbWFpbi5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaWIvbGliZ3Rlc3QubGEKK3NhbXBsZXNfc2FtcGxlNV91bml0dGVzdF9TT1VSQ0VTID0g
c2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjIHNhbXBsZXMvc2FtcGxlMS5jYworc2FtcGxlc19z
YW1wbGU1X3VuaXR0ZXN0X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBsZTZf
dW5pdHRlc3RfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYworc2FtcGxlc19z
YW1wbGU2X3VuaXR0ZXN0X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBsZTdf
dW5pdHRlc3RfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYworc2FtcGxlc19z
YW1wbGU3X3VuaXR0ZXN0X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBsZThf
dW5pdHRlc3RfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYworc2FtcGxlc19z
YW1wbGU4X3VuaXR0ZXN0X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCisKKyMgQWxzbyB2ZXJpZnkg
dGhhdCBsaWJndGVzdCB3b3JrcyBieSBpdHNlbGYuCitzYW1wbGVzX3NhbXBsZTlfdW5pdHRlc3Rf
U09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYworc2FtcGxlc19zYW1wbGU5X3Vu
aXR0ZXN0X0xEQUREID0gbGliL2xpYmd0ZXN0LmxhCiBzYW1wbGVzX3NhbXBsZTEwX3VuaXR0ZXN0
X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjCiBzYW1wbGVzX3NhbXBsZTEw
X3VuaXR0ZXN0X0xEQUREID0gbGliL2xpYmd0ZXN0LmxhCiAKICMgVGhpcyB0ZXN0cyBtb3N0IGNv
bnN0cnVjdHMgb2YgZ3Rlc3QgYW5kIHZlcmlmaWVzIHRoYXQgbGliZ3Rlc3RfbWFpbgotIyB3b3Jr
cy4KKyMgYW5kIGxpYmd0ZXN0IHdvcmsuCiBURVNUUyArPSB0ZXN0L2d0ZXN0X2FsbF90ZXN0CiBj
aGVja19QUk9HUkFNUyArPSB0ZXN0L2d0ZXN0X2FsbF90ZXN0CiB0ZXN0X2d0ZXN0X2FsbF90ZXN0
X1NPVVJDRVMgPSB0ZXN0L2d0ZXN0X2FsbF90ZXN0LmNjCi10ZXN0X2d0ZXN0X2FsbF90ZXN0X0xE
QUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEKK3Rlc3RfZ3Rlc3RfYWxsX3Rlc3RfTERBREQgPSBs
aWIvbGliZ3Rlc3RfbWFpbi5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGliL2xp
Ymd0ZXN0LmxhCiAKICMgVGVzdHMgdGhhdCBmdXNlZCBndGVzdCBmaWxlcyBjb21waWxlIGFuZCB3
b3JrLgogRlVTRURfR1RFU1RfU1JDID0gXAogICBmdXNlZC1zcmMvZ3Rlc3QvZ3Rlc3QtYWxsLmNj
IFwKLSAgZnVzZWQtc3JjL2d0ZXN0L2d0ZXN0X21haW4uY2MgXAotICBmdXNlZC1zcmMvZ3Rlc3Qv
Z3Rlc3QuaAorICBmdXNlZC1zcmMvZ3Rlc3QvZ3Rlc3QuaCBcCisgIGZ1c2VkLXNyYy9ndGVzdC9n
dGVzdF9tYWluLmNjCiAKK2lmIEhBVkVfUFlUSE9OCiBURVNUUyArPSB0ZXN0L2Z1c2VkX2d0ZXN0
X3Rlc3QKIGNoZWNrX1BST0dSQU1TICs9IHRlc3QvZnVzZWRfZ3Rlc3RfdGVzdAogdGVzdF9mdXNl
ZF9ndGVzdF90ZXN0X1NPVVJDRVMgPSAkKEZVU0VEX0dURVNUX1NSQykgXApAQCAtMjc4LDcgKzMy
MCwyMCBAQCBmdXNlZC1ndGVzdDogJChwa2dpbmNsdWRlX0hFQURFUlMpICQocGtnaW5jbHVkZV9p
bnRlcm5hbF9IRUFERVJTKSBcCiAKIG1haW50YWluZXItY2xlYW4tbG9jYWw6CiAJcm0gLXJmICIk
KHNyY2RpcikvZnVzZWQtc3JjIgorZW5kaWYKIAogIyBEZWF0aCB0ZXN0cyBtYXkgcHJvZHVjZSBj
b3JlIGR1bXBzIGluIHRoZSBidWlsZCBkaXJlY3RvcnkuIEluIGNhc2UKICMgdGhpcyBoYXBwZW5z
LCBjbGVhbiB0aGVtIHRvIGtlZXAgZGlzdGNsZWFuY2hlY2sgaGFwcHkuCi1DTEVBTkZJTEVTICs9
IGNvcmUKK0NMRUFORklMRVMgPSBjb3JlCisKKyMgRGlzYWJsZXMgJ21ha2UgaW5zdGFsbCcgYXMg
aW5zdGFsbGluZyBhIGNvbXBpbGVkIHZlcnNpb24gb2YgR29vZ2xlCisjIFRlc3QgY2FuIGxlYWQg
dG8gdW5kZWZpbmVkIGJlaGF2aW9yIGR1ZSB0byB2aW9sYXRpb24gb2YgdGhlCisjIE9uZS1EZWZp
bml0aW9uIFJ1bGUuCisKK2luc3RhbGwtZXhlYy1sb2NhbDoKKwllY2hvICInbWFrZSBpbnN0YWxs
JyBpcyBkYW5nZXJvdXMgYW5kIG5vdCBzdXBwb3J0ZWQuIEluc3RlYWQsIHNlZSBSRUFETUUgZm9y
IGhvdyB0byBpbnRlZ3JhdGUgR29vZ2xlIFRlc3QgaW50byB5b3VyIGJ1aWxkIHN5c3RlbS4iCisJ
ZmFsc2UKKworaW5zdGFsbC1kYXRhLWxvY2FsOgorCWVjaG8gIidtYWtlIGluc3RhbGwnIGlzIGRh
bmdlcm91cyBhbmQgbm90IHN1cHBvcnRlZC4gSW5zdGVhZCwgc2VlIFJFQURNRSBmb3IgaG93IHRv
IGludGVncmF0ZSBHb29nbGUgVGVzdCBpbnRvIHlvdXIgYnVpbGQgc3lzdGVtLiIKKwlmYWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVBRE1FIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvUkVBRE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzYxMTkw
MDIwOTkxNTBkNzE1NzQ5YTE2ZTAzYzJmNTczNjg2YmI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRQor
KysgL2Rldi9udWxsCkBAIC0xLDQxNyArMCwwIEBACi1Hb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3
b3JrCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLWh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9nb29nbGV0ZXN0LwotCi1PdmVydmlldwotLS0tLS0tLS0KLQotR29vZ2xlJ3MgZnJhbWV3
b3JrIGZvciB3cml0aW5nIEMrKyB0ZXN0cyBvbiBhIHZhcmlldHkgb2YgcGxhdGZvcm1zCi0oTGlu
dXgsIE1hYyBPUyBYLCBXaW5kb3dzLCBXaW5kb3dzIENFLCBTeW1iaWFuLCBldGMpLiAgQmFzZWQg
b24gdGhlCi14VW5pdCBhcmNoaXRlY3R1cmUuICBTdXBwb3J0cyBhdXRvbWF0aWMgdGVzdCBkaXNj
b3ZlcnksIGEgcmljaCBzZXQgb2YKLWFzc2VydGlvbnMsIHVzZXItZGVmaW5lZCBhc3NlcnRpb25z
LCBkZWF0aCB0ZXN0cywgZmF0YWwgYW5kIG5vbi1mYXRhbAotZmFpbHVyZXMsIHZhcmlvdXMgb3B0
aW9ucyBmb3IgcnVubmluZyB0aGUgdGVzdHMsIGFuZCBYTUwgdGVzdCByZXBvcnQKLWdlbmVyYXRp
b24uCi0KLVBsZWFzZSBzZWUgdGhlIHByb2plY3QgcGFnZSBhYm92ZSBmb3IgbW9yZSBpbmZvcm1h
dGlvbiBhcyB3ZWxsIGFzIHRoZQotbWFpbGluZyBsaXN0IGZvciBxdWVzdGlvbnMsIGRpc2N1c3Np
b25zLCBhbmQgZGV2ZWxvcG1lbnQuICBUaGVyZSBpcwotYWxzbyBhbiBJUkMgY2hhbm5lbCBvbiBP
RlRDIChpcmMub2Z0Yy5uZXQpICNndGVzdCBhdmFpbGFibGUuICBQbGVhc2UKLWpvaW4gdXMhCi0K
LVJlcXVpcmVtZW50cyBmb3IgRW5kIFVzZXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci1Hb29nbGUgVGVzdCBpcyBkZXNpZ25lZCB0byBoYXZlIGZhaXJseSBtaW5pbWFsIHJlcXVpcmVt
ZW50cyB0byBidWlsZAotYW5kIHVzZSB3aXRoIHlvdXIgcHJvamVjdHMsIGJ1dCB0aGVyZSBhcmUg
c29tZS4gIEN1cnJlbnRseSwgd2Ugc3VwcG9ydAotTGludXgsIFdpbmRvd3MsIE1hYyBPUyBYLCBh
bmQgQ3lnd2luLiAgV2Ugd2lsbCBhbHNvIG1ha2Ugb3VyIGJlc3QKLWVmZm9ydCB0byBzdXBwb3J0
IG90aGVyIHBsYXRmb3JtcyAoZS5nLiBTb2xhcmlzLCBBSVgsIGFuZCB6L09TKS4KLUhvd2V2ZXIs
IHNpbmNlIGNvcmUgbWVtYmVycyBvZiB0aGUgR29vZ2xlIFRlc3QgcHJvamVjdCBoYXZlIG5vIGFj
Y2VzcwotdG8gdGhlc2UgcGxhdGZvcm1zLCBHb29nbGUgVGVzdCBtYXkgaGF2ZSBvdXRzdGFuZGlu
ZyBpc3N1ZXMgdGhlcmUuICBJZgoteW91IG5vdGljZSBhbnkgcHJvYmxlbXMgb24geW91ciBwbGF0
Zm9ybSwgcGxlYXNlIG5vdGlmeQotZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29t
LiAgUGF0Y2hlcyBmb3IgZml4aW5nIHRoZW0gYXJlCi1ldmVuIG1vcmUgd2VsY29tZSEKLQotIyMj
IExpbnV4IFJlcXVpcmVtZW50cyAjIyMKLQotVGhlc2UgYXJlIHRoZSBiYXNlIHJlcXVpcmVtZW50
cyB0byBidWlsZCBhbmQgdXNlIEdvb2dsZSBUZXN0IGZyb20gYSBzb3VyY2UKLXBhY2thZ2UgKGFz
IGRlc2NyaWJlZCBiZWxvdyk6Ci0gICogR05VLWNvbXBhdGlibGUgTWFrZSBvciBnbWFrZQotICAq
IFBPU0lYLXN0YW5kYXJkIHNoZWxsCi0gICogUE9TSVgoLTIpIFJlZ3VsYXIgRXhwcmVzc2lvbnMg
KHJlZ2V4LmgpCi0gICogQSBDKys5OC1zdGFuZGFyZC1jb21wbGlhbnQgY29tcGlsZXIKLQotIyMj
IFdpbmRvd3MgUmVxdWlyZW1lbnRzICMjIwotCi0gICogTWljcm9zb2Z0IFZpc3VhbCBDKysgNy4x
IG9yIG5ld2VyCi0KLSMjIyBDeWd3aW4gUmVxdWlyZW1lbnRzICMjIwotCi0gICogQ3lnd2luIDEu
NS4yNS0xNCBvciBuZXdlcgotCi0jIyMgTWFjIE9TIFggUmVxdWlyZW1lbnRzICMjIwotCi0gICog
TWFjIE9TIFggMTAuNCBUaWdlciBvciBuZXdlcgotICAqIERldmVsb3BlciBUb29scyBJbnN0YWxs
ZWQKLQotQWxzbywgeW91J2xsIG5lZWQgQ01ha2UgMi42LjQgb3IgaGlnaGVyIGlmIHlvdSB3YW50
IHRvIGJ1aWxkIHRoZQotc2FtcGxlcyB1c2luZyB0aGUgcHJvdmlkZWQgQ01ha2Ugc2NyaXB0LCBy
ZWdhcmRsZXNzIG9mIHRoZSBwbGF0Zm9ybS4KLQotUmVxdWlyZW1lbnRzIGZvciBDb250cmlidXRv
cnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVdlIHdlbGNvbWUgcGF0Y2hlcy4g
IElmIHlvdSBwbGFuIHRvIGNvbnRyaWJ1dGUgYSBwYXRjaCwgeW91IG5lZWQgdG8KLWJ1aWxkIEdv
b2dsZSBUZXN0IGFuZCBpdHMgb3duIHRlc3RzIGZyb20gYW4gU1ZOIGNoZWNrb3V0IChkZXNjcmli
ZWQKLWJlbG93KSwgd2hpY2ggaGFzIGZ1cnRoZXIgcmVxdWlyZW1lbnRzOgotCi0gICogUHl0aG9u
IHZlcnNpb24gMi4zIG9yIG5ld2VyIChmb3IgcnVubmluZyBzb21lIG9mIHRoZSB0ZXN0cyBhbmQK
LSAgICByZS1nZW5lcmF0aW5nIGNlcnRhaW4gc291cmNlIGZpbGVzIGZyb20gdGVtcGxhdGVzKQot
ICAqIENNYWtlIDIuNi40IG9yIG5ld2VyCi0KLUdldHRpbmcgdGhlIFNvdXJjZQotLS0tLS0tLS0t
LS0tLS0tLS0tCi0KLVRoZXJlIGFyZSB0d28gcHJpbWFyeSB3YXlzIG9mIGdldHRpbmcgR29vZ2xl
IFRlc3QncyBzb3VyY2UgY29kZTogeW91Ci1jYW4gZG93bmxvYWQgYSBzdGFibGUgc291cmNlIHJl
bGVhc2UgaW4geW91ciBwcmVmZXJyZWQgYXJjaGl2ZSBmb3JtYXQsCi1vciBkaXJlY3RseSBjaGVj
ayBvdXQgdGhlIHNvdXJjZSBmcm9tIG91ciBTdWJ2ZXJzaW9uIChTVk4pIHJlcG9zaXRhcnkuCi1U
aGUgU1ZOIGNoZWNrb3V0IHJlcXVpcmVzIGEgZmV3IGV4dHJhIHN0ZXBzIGFuZCBzb21lIGV4dHJh
IHNvZnR3YXJlCi1wYWNrYWdlcyBvbiB5b3VyIHN5c3RlbSwgYnV0IGxldHMgeW91IHRyYWNrIHRo
ZSBsYXRlc3QgZGV2ZWxvcG1lbnQgYW5kCi1tYWtlIHBhdGNoZXMgbXVjaCBtb3JlIGVhc2lseSwg
c28gd2UgaGlnaGx5IGVuY291cmFnZSBpdC4KLQotIyMjIFNvdXJjZSBQYWNrYWdlICMjIwotCi1H
b29nbGUgVGVzdCBpcyByZWxlYXNlZCBpbiB2ZXJzaW9uZWQgc291cmNlIHBhY2thZ2VzIHdoaWNo
IGNhbiBiZQotZG93bmxvYWRlZCBmcm9tIHRoZSBkb3dubG9hZCBwYWdlIFsxXS4gIFNldmVyYWwg
ZGlmZmVyZW50IGFyY2hpdmUKLWZvcm1hdHMgYXJlIHByb3ZpZGVkLCBidXQgdGhlIG9ubHkgZGlm
ZmVyZW5jZSBpcyB0aGUgdG9vbHMgdXNlZCB0bwotbWFuaXB1bGF0ZSB0aGVtLCBhbmQgdGhlIHNp
emUgb2YgdGhlIHJlc3VsdGluZyBmaWxlLiAgRG93bmxvYWQKLXdoaWNoZXZlciB5b3UgYXJlIG1v
c3QgY29tZm9ydGFibGUgd2l0aC4KLQotICBbMV0gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dv
b2dsZXRlc3QvZG93bmxvYWRzL2xpc3QKLQotT25jZSB0aGUgcGFja2FnZSBpcyBkb3dubG9hZGVk
LCBleHBhbmQgaXQgdXNpbmcgd2hpY2hldmVyIHRvb2xzIHlvdQotcHJlZmVyIGZvciB0aGF0IHR5
cGUuICBUaGlzIHdpbGwgcmVzdWx0IGluIGEgbmV3IGRpcmVjdG9yeSB3aXRoIHRoZQotbmFtZSAi
Z3Rlc3QtWC5ZLloiIHdoaWNoIGNvbnRhaW5zIGFsbCBvZiB0aGUgc291cmNlIGNvZGUuICBIZXJl
IGFyZQotc29tZSBleGFtcGxlcyBvbiBMaW51eDoKLQotICB0YXIgLXh2emYgZ3Rlc3QtWC5ZLlou
dGFyLmd6Ci0gIHRhciAteHZqZiBndGVzdC1YLlkuWi50YXIuYnoyCi0gIHVuemlwIGd0ZXN0LVgu
WS5aLnppcAotCi0jIyMgU1ZOIENoZWNrb3V0ICMjIwotCi1UbyBjaGVjayBvdXQgdGhlIG1haW4g
YnJhbmNoIChhbHNvIGtub3duIGFzIHRoZSAidHJ1bmsiKSBvZiBHb29nbGUKLVRlc3QsIHJ1biB0
aGUgZm9sbG93aW5nIFN1YnZlcnNpb24gY29tbWFuZDoKLQotICBzdm4gY2hlY2tvdXQgaHR0cDov
L2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rLyBndGVzdC1zdm4KLQotU2V0dGlu
ZyB1cCB0aGUgQnVpbGQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRvIGJ1aWxkIEdvb2dsZSBU
ZXN0IGFuZCB5b3VyIHRlc3RzIHRoYXQgdXNlIGl0LCB5b3UgbmVlZCB0byB0ZWxsIHlvdXIKLWJ1
aWxkIHN5c3RlbSB3aGVyZSB0byBmaW5kIGl0cyBoZWFkZXJzIGFuZCBzb3VyY2UgZmlsZXMuICBU
aGUgZXhhY3QKLXdheSB0byBkbyBpdCBkZXBlbmRzIG9uIHdoaWNoIGJ1aWxkIHN5c3RlbSB5b3Ug
dXNlLCBhbmQgaXMgdXN1YWxseQotc3RyYWlnaHRmb3J3YXJkLgotCi0jIyMgR2VuZXJpYyBCdWls
ZCBJbnN0cnVjdGlvbnMgIyMjCi0KLVN1cHBvc2UgeW91IHB1dCBHb29nbGUgVGVzdCBpbiBkaXJl
Y3RvcnkgJHtHVEVTVF9ESVJ9LiAgVG8gYnVpbGQgaXQsCi1jcmVhdGUgYSBsaWJyYXJ5IGJ1aWxk
IHRhcmdldCAob3IgYSBwcm9qZWN0IGFzIGNhbGxlZCBieSBWaXN1YWwgU3R1ZGlvCi1hbmQgWGNv
ZGUpIHRvIGNvbXBpbGUKLQotICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LWFsbC5jYwotCi13aXRo
Ci0KLSAgJHtHVEVTVF9ESVJ9L2luY2x1ZGUgYW5kICR7R1RFU1RfRElSfQotCi1pbiB0aGUgaGVh
ZGVyIHNlYXJjaCBwYXRoLiAgQXNzdW1pbmcgYSBMaW51eC1saWtlIHN5c3RlbSBhbmQgZ2NjLAot
c29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZyB3aWxsIGRvOgotCi0gIGcrKyAtSSR7R1RFU1Rf
RElSfS9pbmNsdWRlIC1JJHtHVEVTVF9ESVJ9IC1jICR7R1RFU1RfRElSfS9zcmMvZ3Rlc3QtYWxs
LmNjCi0gIGFyIC1ydiBsaWJndGVzdC5hIGd0ZXN0LWFsbC5vCi0KLU5leHQsIHlvdSBzaG91bGQg
Y29tcGlsZSB5b3VyIHRlc3Qgc291cmNlIGZpbGUgd2l0aAotJHtHVEVTVF9ESVJ9L2luY2x1ZGUg
aW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0aCwgYW5kIGxpbmsgaXQgd2l0aCBndGVzdAotYW5kIGFu
eSBvdGhlciBuZWNlc3NhcnkgbGlicmFyaWVzOgotCi0gIGcrKyAtSSR7R1RFU1RfRElSfS9pbmNs
dWRlIHBhdGgvdG8veW91cl90ZXN0LmNjIGxpYmd0ZXN0LmEgLW8geW91cl90ZXN0Ci0KLUFzIGFu
IGV4YW1wbGUsIHRoZSBtYWtlLyBkaXJlY3RvcnkgY29udGFpbnMgYSBNYWtlZmlsZSB0aGF0IHlv
dSBjYW4KLXVzZSB0byBidWlsZCBHb29nbGUgVGVzdCBvbiBzeXN0ZW1zIHdoZXJlIEdOVSBtYWtl
IGlzIGF2YWlsYWJsZQotKGUuZy4gTGludXgsIE1hYyBPUyBYLCBhbmQgQ3lnd2luKS4gIEl0IGRv
ZXNuJ3QgdHJ5IHRvIGJ1aWxkIEdvb2dsZQotVGVzdCdzIG93biB0ZXN0cy4gIEluc3RlYWQsIGl0
IGp1c3QgYnVpbGRzIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5IGFuZAotYSBzYW1wbGUgdGVzdC4g
IFlvdSBjYW4gdXNlIGl0IGFzIGEgc3RhcnRpbmcgcG9pbnQgZm9yIHlvdXIgb3duIGJ1aWxkCi1z
Y3JpcHQuCi0KLUlmIHRoZSBkZWZhdWx0IHNldHRpbmdzIGFyZSBjb3JyZWN0IGZvciB5b3VyIGVu
dmlyb25tZW50LCB0aGUKLWZvbGxvd2luZyBjb21tYW5kcyBzaG91bGQgc3VjY2VlZDoKLQotICBj
ZCAke0dURVNUX0RJUn0vbWFrZQotICBtYWtlCi0gIC4vc2FtcGxlMV91bml0dGVzdAotCi1JZiB5
b3Ugc2VlIGVycm9ycywgdHJ5IHRvIHR3ZWFrIHRoZSBjb250ZW50cyBvZiBtYWtlL01ha2VmaWxl
IHRvIG1ha2UKLXRoZW0gZ28gYXdheS4gIFRoZXJlIGFyZSBpbnN0cnVjdGlvbnMgaW4gbWFrZS9N
YWtlZmlsZSBvbiBob3cgdG8gZG8KLWl0LgotCi0jIyMgVXNpbmcgQ01ha2UgIyMjCi0KLUdvb2ds
ZSBUZXN0IGNvbWVzIHdpdGggYSBDTWFrZSBidWlsZCBzY3JpcHQgKENNYWtlTGlzdHMudHh0KSB0
aGF0IGNhbgotYmUgdXNlZCBvbiBhIHdpZGUgcmFuZ2Ugb2YgcGxhdGZvcm1zICgiQyIgc3RhbmRz
IGZvciBjcm9zcy1wbGF0b2ZybS4pLgotSWYgeW91IGRvbid0IGhhdmUgQ01ha2UgaW5zdGFsbGVk
IGFscmVhZHksIHlvdSBjYW4gZG93bmxvYWQgaXQgZm9yCi1mcmVlIGZyb20gaHR0cDovL3d3dy5j
bWFrZS5vcmcvLgotCi1DTWFrZSB3b3JrcyBieSBnZW5lcmF0aW5nIG5hdGl2ZSBtYWtlZmlsZXMg
b3IgYnVpbGQgcHJvamVjdHMgdGhhdCBjYW4KLWJlIHVzZWQgaW4gdGhlIGNvbXBpbGVyIGVudmly
b25tZW50IG9mIHlvdXIgY2hvaWNlLiAgVGhlIHR5cGljYWwKLXdvcmtmbG93IHN0YXJ0cyB3aXRo
OgotCi0gIG1rZGlyIG15YnVpbGQgICAgICAgIyBDcmVhdGUgYSBkaXJlY3RvcnkgdG8gaG9sZCB0
aGUgYnVpbGQgb3V0cHV0LgotICBjZCBteWJ1aWxkCi0gIGNtYWtlICR7R1RFU1RfRElSfSAgIyBH
ZW5lcmF0ZSBuYXRpdmUgYnVpbGQgc2NyaXB0cy4KLQotSWYgeW91IHdhbnQgdG8gYnVpbGQgR29v
Z2xlIFRlc3QncyBzYW1wbGVzLCB5b3Ugc2hvdWxkIHJlcGxhY2UgdGhlCi1sYXN0IGNvbW1hbmQg
d2l0aAotCi0gIGNtYWtlIC1EYnVpbGRfZ3Rlc3Rfc2FtcGxlcz1PTiAke0dURVNUX0RJUn0KLQot
SWYgeW91IGFyZSBvbiBhICpuaXggc3lzdGVtLCB5b3Ugc2hvdWxkIG5vdyBzZWUgYSBNYWtlZmls
ZSBpbiB0aGUKLWN1cnJlbnQgZGlyZWN0b3J5LiAgSnVzdCB0eXBlICdtYWtlJyB0byBidWlsZCBn
dGVzdC4KLQotSWYgeW91IHVzZSBXaW5kb3dzIGFuZCBoYXZlIFZpc3R1YWwgU3R1ZGlvIGluc3Rh
bGxlZCwgYSBndGVzdC5zbG4gZmlsZQotYW5kIHNldmVyYWwgLnZjcHJvaiBmaWxlcyB3aWxsIGJl
IGNyZWF0ZWQuICBZb3UgY2FuIHRoZW4gYnVpbGQgdGhlbQotdXNpbmcgVmlzdWFsIFN0dWRpby4K
LQotT24gTWFjIE9TIFggd2l0aCBYY29kZSBpbnN0YWxsZWQsIGEgLnhjb2RlcHJvaiBmaWxlIHdp
bGwgYmUgZ2VuZXJhdGVkLgotCi0jIyMgTGVnYWN5IEJ1aWxkIFNjcmlwdHMgIyMjCi0KLUJlZm9y
ZSBzZXR0bGluZyBvbiBDTWFrZSwgd2UgaGF2ZSBiZWVuIHByb3ZpZGluZyBoYW5kLW1haW50YWlu
ZWQgYnVpbGQKLXByb2plY3RzL3NjcmlwdHMgZm9yIFZpc3VhbCBTdHVkaW8sIFhjb2RlLCBhbmQg
QXV0b3Rvb2xzLiAgV2hpbGUgd2UKLWNvbnRpbnVlIHRvIHByb3ZpZGUgdGhlbSBmb3IgY29udmVu
aWVuY2UsIHRoZXkgYXJlIG5vdCBhY3RpdmVseQotbWFpbnRhaW5lZCBhbnkgbW9yZS4gIFdlIGhp
Z2hseSByZWNvbW1lbmQgdGhhdCB5b3UgZm9sbG93IHRoZQotaW5zdHJ1Y3Rpb25zIGluIHRoZSBw
cmV2aW91cyB0d28gc2VjdGlvbnMgdG8gaW50ZWdyYXRlIEdvb2dsZSBUZXN0Ci13aXRoIHlvdXIg
ZXhpc3RpbmcgYnVpbGQgc3lzdGVtLgotCi1JZiB5b3Ugc3RpbGwgbmVlZCB0byB1c2UgdGhlIGxl
Z2FjeSBidWlsZCBzY3JpcHRzLCBoZXJlJ3MgaG93OgotCi1UaGUgbXN2Y1wgZm9sZGVyIGNvbnRh
aW5zIHR3byBzb2x1dGlvbnMgd2l0aCBWaXN1YWwgQysrIHByb2plY3RzLgotT3BlbiB0aGUgZ3Rl
c3Quc2xuIG9yIGd0ZXN0LW1kLnNsbiBmaWxlIHVzaW5nIFZpc3VhbCBTdHVkaW8sIGFuZCB5b3UK
LWFyZSByZWFkeSB0byBidWlsZCBHb29nbGUgVGVzdCB0aGUgc2FtZSB3YXkgeW91IGJ1aWxkIGFu
eSBWaXN1YWwKLVN0dWRpbyBwcm9qZWN0LiAgRmlsZXMgdGhhdCBoYXZlIG5hbWVzIGVuZGluZyB3
aXRoIC1tZCB1c2UgRExMCi12ZXJzaW9ucyBvZiBNaWNyb3NvZnQgcnVudGltZSBsaWJyYXJpZXMg
KHRoZSAvTUQgb3IgdGhlIC9NRGQgY29tcGlsZXIKLW9wdGlvbikuICBGaWxlcyB3aXRob3V0IHRo
YXQgc3VmZml4IHVzZSBzdGF0aWMgdmVyc2lvbnMgb2YgdGhlIHJ1bnRpbWUKLWxpYnJhcmllcyAo
dGhlIC9NVCBvciB0aGUgL01UZCBvcHRpb24pLiAgUGxlYXNlIG5vdGUgdGhhdCBvbmUgbXVzdCB1
c2UKLXRoZSBzYW1lIG9wdGlvbiB0byBjb21waWxlIGJvdGggZ3Rlc3QgYW5kIHRoZSB0ZXN0IGNv
ZGUuICBJZiB5b3UgdXNlCi1WaXN1YWwgU3R1ZGlvIDIwMDUgb3IgYWJvdmUsIHdlIHJlY29tbWVu
ZCB0aGUgLW1kIHZlcnNpb24gYXMgL01EIGlzCi10aGUgZGVmYXVsdCBmb3IgbmV3IHByb2plY3Rz
IGluIHRoZXNlIHZlcnNpb25zIG9mIFZpc3VhbCBTdHVkaW8uCi0KLU9uIE1hYyBPUyBYLCBvcGVu
IHRoZSBndGVzdC54Y29kZXByb2ogaW4gdGhlIHhjb2RlLyBmb2xkZXIgdXNpbmcKLVhjb2RlLiAg
QnVpbGQgdGhlICJndGVzdCIgdGFyZ2V0LiAgVGhlIHVuaXZlcnNhbCBiaW5hcnkgZnJhbWV3b3Jr
IHdpbGwKLWVuZCB1cCBpbiB5b3VyIHNlbGVjdGVkIGJ1aWxkIGRpcmVjdG9yeSAoc2VsZWN0ZWQg
aW4gdGhlIFhjb2RlCi0iUHJlZmVyZW5jZXMuLi4iIC0+ICJCdWlsZGluZyIgcGFuZSBhbmQgZGVm
YXVsdHMgdG8geGNvZGUvYnVpbGQpLgotQWx0ZXJuYXRpdmVseSwgYXQgdGhlIGNvbW1hbmQgbGlu
ZSwgZW50ZXI6Ci0KLSAgeGNvZGVidWlsZAotCi1UaGlzIHdpbGwgYnVpbGQgdGhlICJSZWxlYXNl
IiBjb25maWd1cmF0aW9uIG9mIGd0ZXN0LmZyYW1ld29yayBpbiB5b3VyCi1kZWZhdWx0IGJ1aWxk
IGxvY2F0aW9uLiAgU2VlIHRoZSAieGNvZGVidWlsZCIgbWFuIHBhZ2UgZm9yIG1vcmUKLWluZm9y
bWF0aW9uIGFib3V0IGJ1aWxkaW5nIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBhbmQgYnVpbGRp
bmcgaW4KLWRpZmZlcmVudCBsb2NhdGlvbnMuCi0KLVR3ZWFraW5nIEdvb2dsZSBUZXN0Ci0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotCi1Hb29nbGUgVGVzdCBjYW4gYmUgdXNlZCBpbiBkaXZlcnNlIGVu
dmlyb25tZW50cy4gIFRoZSBkZWZhdWx0Ci1jb25maWd1cmF0aW9uIG1heSBub3Qgd29yayAob3Ig
bWF5IG5vdCB3b3JrIHdlbGwpIG91dCBvZiB0aGUgYm94IGluCi1zb21lIGVudmlyb25tZW50cy4g
IEhvd2V2ZXIsIHlvdSBjYW4gZWFzaWx5IHR3ZWFrIEdvb2dsZSBUZXN0IGJ5Ci1kZWZpbmluZyBj
b250cm9sIG1hY3JvcyBvbiB0aGUgY29tcGlsZXIgY29tbWFuZCBsaW5lLiAgR2VuZXJhbGx5LAot
dGhlc2UgbWFjcm9zIGFyZSBuYW1lZCBsaWtlIEdURVNUX1hZWiBhbmQgeW91IGRlZmluZSB0aGVt
IHRvIGVpdGhlciAxCi1vciAwIHRvIGVuYWJsZSBvciBkaXNhYmxlIGEgY2VydGFpbiBmZWF0dXJl
LgotCi1XZSBsaXN0IHRoZSBtb3N0IGZyZXF1ZW50bHkgdXNlZCBtYWNyb3MgYmVsb3cuICBGb3Ig
YSBjb21wbGV0ZSBsaXN0LAotc2VlIGZpbGUgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1w
b3J0LmguCi0KLSMjIyBDaG9vc2luZyBhIFRSMSBUdXBsZSBMaWJyYXJ5ICMjIwotCi1Tb21lIEdv
b2dsZSBUZXN0IGZlYXR1cmVzIHJlcXVpcmUgdGhlIEMrKyBUZWNobmljYWwgUmVwb3J0IDEgKFRS
MSkKLXR1cGxlIGxpYnJhcnksIHdoaWNoIGlzIG5vdCB5ZXQgYXZhaWxhYmxlIHdpdGggYWxsIGNv
bXBpbGVycy4gIFRoZQotZ29vZCBuZXdzIGlzIHRoYXQgR29vZ2xlIFRlc3QgaW1wbGVtZW50cyBh
IHN1YnNldCBvZiBUUjEgdHVwbGUgdGhhdCdzCi1lbm91Z2ggZm9yIGl0cyBvd24gbmVlZCwgYW5k
IHdpbGwgYXV0b21hdGljYWxseSB1c2UgdGhpcyB3aGVuIHRoZQotY29tcGlsZXIgZG9lc24ndCBw
cm92aWRlIFRSMSB0dXBsZS4KLQotVXN1YWxseSB5b3UgZG9uJ3QgbmVlZCB0byBjYXJlIGFib3V0
IHdoaWNoIHR1cGxlIGxpYnJhcnkgR29vZ2xlIFRlc3QKLXVzZXMuICBIb3dldmVyLCBpZiB5b3Vy
IHByb2plY3QgYWxyZWFkeSB1c2VzIFRSMSB0dXBsZSwgeW91IG5lZWQgdG8KLXRlbGwgR29vZ2xl
IFRlc3QgdG8gdXNlIHRoZSBzYW1lIFRSMSB0dXBsZSBsaWJyYXJ5IHRoZSByZXN0IG9mIHlvdXIK
LXByb2plY3QgdXNlcywgb3IgdGhlIHR3byB0dXBsZSBpbXBsZW1lbnRhdGlvbnMgd2lsbCBjbGFz
aC4gIFRvIGRvCi10aGF0LCBhZGQKLQotICAtREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTAKLQot
dG8gdGhlIGNvbXBpbGVyIGZsYWdzIHdoaWxlIGNvbXBpbGluZyBHb29nbGUgVGVzdCBhbmQgeW91
ciB0ZXN0cy4gIElmCi15b3Ugd2FudCB0byBmb3JjZSBHb29nbGUgVGVzdCB0byB1c2UgaXRzIG93
biB0dXBsZSBsaWJyYXJ5LCBqdXN0IGFkZAotCi0gIC1ER1RFU1RfVVNFX09XTl9UUjFfVFVQTEU9
MQotCi10byB0aGUgY29tcGlsZXIgZmxhZ3MgaW5zdGVhZC4KLQotSWYgeW91IGRvbid0IHdhbnQg
R29vZ2xlIFRlc3QgdG8gdXNlIHR1cGxlIGF0IGFsbCwgYWRkCi0KLSAgLURHVEVTVF9IQVNfVFIx
X1RVUExFPTAKLQotYW5kIGFsbCBmZWF0dXJlcyB1c2luZyB0dXBsZSB3aWxsIGJlIGRpc2FibGVk
LgotCi0jIyMgTXVsdGktdGhyZWFkZWQgVGVzdHMgIyMjCi0KLUdvb2dsZSBUZXN0IGlzIHRocmVh
ZC1zYWZlIHdoZXJlIHRoZSBwdGhyZWFkIGxpYnJhcnkgaXMgYXZhaWxhYmxlLgotQWZ0ZXIgI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+LCB5b3UgY2FuIGNoZWNrIHRoZSBHVEVTVF9JU19USFJFQURT
QUZFCi1tYWNybyB0byBzZWUgd2hldGhlciB0aGlzIGlzIHRoZSBjYXNlICh5ZXMgaWYgdGhlIG1h
Y3JvIGlzICNkZWZpbmVkIHRvCi0xLCBubyBpZiBpdCdzIHVuZGVmaW5lZC4pLgotCi1JZiBHb29n
bGUgVGVzdCBkb2Vzbid0IGNvcnJlY3RseSBkZXRlY3Qgd2hldGhlciBwdGhyZWFkIGlzIGF2YWls
YWJsZQotaW4geW91ciBlbnZpcm9ubWVudCwgeW91IGNhbiBmb3JjZSBpdCB3aXRoCi0KLSAgLURH
VEVTVF9IQVNfUFRIUkVBRD0xCi0KLW9yCi0KLSAgLURHVEVTVF9IQVNfUFRIUkVBRD0wCi0KLVdo
ZW4gR29vZ2xlIFRlc3QgdXNlcyBwdGhyZWFkLCB5b3UgbWF5IG5lZWQgdG8gYWRkIGZsYWdzIHRv
IHlvdXIKLWNvbXBpbGVyIGFuZC9vciBsaW5rZXIgdG8gc2VsZWN0IHRoZSBwdGhyZWFkIGxpYnJh
cnksIG9yIHlvdSdsbCBnZXQKLWxpbmsgZXJyb3JzLiAgSWYgeW91IHVzZSB0aGUgQ01ha2Ugc2Ny
aXB0IG9yIHRoZSBkZXByZWNhdGVkIEF1dG90b29scwotc2NyaXB0LCB0aGlzIGlzIHRha2VuIGNh
cmUgb2YgZm9yIHlvdS4gIElmIHlvdSB1c2UgeW91ciBvd24gYnVpbGQKLXNjcmlwdCwgeW91J2xs
IG5lZWQgdG8gcmVhZCB5b3VyIGNvbXBpbGVyIGFuZCBsaW5rZXIncyBtYW51YWwgdG8KLWZpZ3Vy
ZSBvdXQgd2hhdCBmbGFncyB0byBhZGQuCi0KLSMjIyBBcyBhIFNoYXJlZCBMaWJyYXJ5IChETEwp
ICMjIwotCi1Hb29nbGUgVGVzdCBpcyBjb21wYWN0LCBzbyBtb3N0IHVzZXJzIGNhbiBidWlsZCBh
bmQgbGluayBpdCBhcyBhCi1zdGF0aWMgbGlicmFyeSBmb3IgdGhlIHNpbXBsaWNpdHkuICBZb3Ug
Y2FuIGNob29zZSB0byB1c2UgR29vZ2xlIFRlc3QKLWFzIGEgc2hhcmVkIGxpYnJhcnkgKGtub3du
IGFzIGEgRExMIG9uIFdpbmRvd3MpIGlmIHlvdSBwcmVmZXIuCi0KLVRvIGNvbXBpbGUgZ3Rlc3Qg
YXMgYSBzaGFyZWQgbGlicmFyeSwgYWRkCi0KLSAgLURHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJB
Ulk9MQotCi10byB0aGUgY29tcGlsZXIgZmxhZ3MuICBZb3UnbGwgYWxzbyBuZWVkIHRvIHRlbGwg
dGhlIGxpbmtlciB0byBwcm9kdWNlCi1hIHNoYXJlZCBsaWJyYXJ5IGluc3RlYWQgLSBjb25zdWx0
IHlvdXIgbGlua2VyJ3MgbWFudWFsIGZvciBob3cgdG8gZG8KLWl0LgotCi1UbyBjb21waWxlIHlv
dXIgdGVzdHMgdGhhdCB1c2UgdGhlIGd0ZXN0IHNoYXJlZCBsaWJyYXJ5LCBhZGQKLQotICAtREdU
RVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFSWT0xCi0KLXRvIHRoZSBjb21waWxlciBmbGFncy4K
LQotIyMjIEF2b2lkaW5nIE1hY3JvIE5hbWUgQ2xhc2hlcyAjIyMKLQotSW4gQysrLCBtYWNyb3Mg
ZG9uJ3Qgb2JleSBuYW1lc3BhY2VzLiAgVGhlcmVmb3JlIHR3byBsaWJyYXJpZXMgdGhhdAotYm90
aCBkZWZpbmUgYSBtYWNybyBvZiB0aGUgc2FtZSBuYW1lIHdpbGwgY2xhc2ggaWYgeW91ICNpbmNs
dWRlIGJvdGgKLWRlZmluaXRpb25zLiAgSW4gY2FzZSBhIEdvb2dsZSBUZXN0IG1hY3JvIGNsYXNo
ZXMgd2l0aCBhbm90aGVyCi1saWJyYXJ5LCB5b3UgY2FuIGZvcmNlIEdvb2dsZSBUZXN0IHRvIHJl
bmFtZSBpdHMgbWFjcm8gdG8gYXZvaWQgdGhlCi1jb25mbGljdC4KLQotU3BlY2lmaWNhbGx5LCBp
ZiBib3RoIEdvb2dsZSBUZXN0IGFuZCBzb21lIG90aGVyIGNvZGUgZGVmaW5lIG1hY3JvCi1GT08s
IHlvdSBjYW4gYWRkCi0KLSAgLURHVEVTVF9ET05UX0RFRklORV9GT089MQotCi10byB0aGUgY29t
cGlsZXIgZmxhZ3MgdG8gdGVsbCBHb29nbGUgVGVzdCB0byBjaGFuZ2UgdGhlIG1hY3JvJ3MgbmFt
ZQotZnJvbSBGT08gdG8gR1RFU1RfRk9PLiAgQ3VycmVudGx5IEZPTyBjYW4gYmUgRkFJTCwgU1VD
Q0VFRCwgb3IgVEVTVC4KLUZvciBleGFtcGxlLCB3aXRoIC1ER1RFU1RfRE9OVF9ERUZJTkVfVEVT
VD0xLCB5b3UnbGwgbmVlZCB0byB3cml0ZQotCi0gIEdURVNUX1RFU1QoU29tZVRlc3QsIERvZXNU
aGlzKSB7IC4uLiB9Ci0KLWluc3RlYWQgb2YKLQotICBURVNUKFNvbWVUZXN0LCBEb2VzVGhpcykg
eyAuLi4gfQotCi1pbiBvcmRlciB0byBkZWZpbmUgYSB0ZXN0LgotCi1VcGdyYXRpbmcgZnJvbSBh
biBFYXJsaWVyIFZlcnNpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1X
ZSBzdHJpdmUgdG8ga2VlcCBHb29nbGUgVGVzdCByZWxlYXNlcyBiYWNrd2FyZCBjb21wYXRpYmxl
LgotU29tZXRpbWVzLCB0aG91Z2gsIHdlIGhhdmUgdG8gbWFrZSBzb21lIGJyZWFraW5nIGNoYW5n
ZXMgZm9yIHRoZQotdXNlcnMnIGxvbmctdGVybSBiZW5lZml0cy4gIFRoaXMgc2VjdGlvbiBkZXNj
cmliZXMgd2hhdCB5b3UnbGwgbmVlZCB0bwotZG8gaWYgeW91IGFyZSB1cGdyYWRpbmcgZnJvbSBh
biBlYXJsaWVyIHZlcnNpb24gb2YgR29vZ2xlIFRlc3QuCi0KLSMjIyBVcGdyYWRpbmcgZnJvbSAx
LjMuMCBvciBFYXJsaWVyICMjIwotCi1Zb3UgbWF5IG5lZWQgdG8gZXhwbGljaXRseSBlbmFibGUg
b3IgZGlzYWJsZSBHb29nbGUgVGVzdCdzIG93biBUUjEKLXR1cGxlIGxpYnJhcnkuICBTZWUgdGhl
IGluc3RydWN0aW9ucyBpbiBzZWN0aW9uICJDaG9vc2luZyBhIFRSMSBUdXBsZQotTGlicmFyeSIu
Ci0KLSMjIyBVcGdyYWRpbmcgZnJvbSAxLjQuMCBvciBFYXJsaWVyICMjIwotCi1UaGUgQXV0b3Rv
b2xzIGJ1aWxkIHNjcmlwdCAoY29uZmlndXJlICsgbWFrZSkgaXMgbm8gbG9uZ2VyIG9mZmljaWFs
bHkKLXN1cHBvcnR0ZWQuICBZb3UgYXJlIGVuY291cmFnZWQgdG8gbWlncmF0ZSB0byB5b3VyIG93
biBidWlsZCBzeXN0ZW0gb3IKLXVzZSBDTWFrZS4gIElmIHlvdSBzdGlsbCBuZWVkIHRvIHVzZSBB
dXRvdG9vbHMsIHlvdSBjYW4gZmluZAotaW5zdHJ1Y3Rpb25zIGluIHRoZSBSRUFETUUgZmlsZSBm
cm9tIEdvb2dsZSBUZXN0IDEuNC4wLgotCi1PbiBwbGF0Zm9ybXMgd2hlcmUgdGhlIHB0aHJlYWQg
bGlicmFyeSBpcyBhdmFpbGFibGUsIEdvb2dsZSBUZXN0IHVzZXMKLWl0IGluIG9yZGVyIHRvIGJl
IHRocmVhZC1zYWZlLiAgU2VlIHRoZSAiTXVsdGktdGhyZWFkZWQgVGVzdHMiIHNlY3Rpb24KLWZv
ciB3aGF0IHRoaXMgbWVhbnMgdG8geW91ciBidWlsZCBzY3JpcHQuCi0KLUlmIHlvdSB1c2UgTWlj
cm9zb2Z0IFZpc3VhbCBDKysgNy4xIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZCwgR29vZ2xlCi1U
ZXN0IHdpbGwgbm8gbG9uZ2VyIGNvbXBpbGUuICBUaGlzIHNob3VsZCBhZmZlY3QgdmVyeSBmZXcg
cGVvcGxlLCBhcyBhCi1sYXJnZSBwb3J0aW9uIG9mIFNUTCAoaW5jbHVkaW5nIDxzdHJpbmc+KSBk
b2Vzbid0IGNvbXBpbGUgaW4gdGhpcyBtb2RlCi1hbnl3YXkuICBXZSBkZWNpZGVkIHRvIHN0b3Ag
c3VwcG9ydGluZyBpdCBpbiBvcmRlciB0byBncmVhdGx5IHNpbXBsaWZ5Ci1Hb29nbGUgVGVzdCdz
IGltcGxlbWVudGF0aW9uLgotCi1EZXZlbG9waW5nIEdvb2dsZSBUZXN0Ci0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0KLVRoaXMgc2VjdGlvbiBkaXNjdXNzZXMgaG93IHRvIG1ha2UgeW91ciBvd24g
Y2hhbmdlcyB0byBHb29nbGUgVGVzdC4KLQotIyMjIFRlc3RpbmcgR29vZ2xlIFRlc3QgSXRzZWxm
ICMjIwotCi1UbyBtYWtlIHN1cmUgeW91ciBjaGFuZ2VzIHdvcmsgYXMgaW50ZW5kZWQgYW5kIGRv
bid0IGJyZWFrIGV4aXN0aW5nCi1mdW5jdGlvbmFsaXR5LCB5b3UnbGwgd2FudCB0byBjb21waWxl
IGFuZCBydW4gR29vZ2xlIFRlc3QncyBvd24gdGVzdHMuCi1Gb3IgdGhhdCB5b3UgY2FuIHVzZSBD
TWFrZToKLQotICBta2RpciBteWJ1aWxkCi0gIGNkIG15YnVpbGQKLSAgY21ha2UgLURidWlsZF9h
bGxfZ3Rlc3RfdGVzdHM9T04gJHtHVEVTVF9ESVJ9Ci0KLU1ha2Ugc3VyZSB5b3UgaGF2ZSBQeXRo
b24gaW5zdGFsbGVkLCBhcyBzb21lIG9mIEdvb2dsZSBUZXN0J3MgdGVzdHMKLWFyZSB3cml0dGVu
IGluIFB5dGhvbi4gIElmIHRoZSBjbWFrZSBjb21tYW5kIGNvbXBsYWlucyBhYm91dCBub3QgYmVp
bmcKLWFibGUgdG8gZmluZCBQeXRob24gKCJDb3VsZCBOT1QgZmluZCBQeXRob25JbnRlcnAgKG1p
c3Npbmc6Ci1QWVRIT05fRVhFQ1VUQUJMRSkiKSwgdHJ5IHRlbGxpbmcgaXQgZXhwbGljaXRseSB3
aGVyZSB5b3VyIFB5dGhvbgotZXhlY3V0YWJsZSBjYW4gYmUgZm91bmQ6Ci0KLSAgY21ha2UgLURQ
WVRIT05fRVhFQ1VUQUJMRT1wYXRoL3RvL3B5dGhvbiAtRGJ1aWxkX2FsbF9ndGVzdF90ZXN0cz1P
TiBcCi0gICAgICAke0dURVNUX0RJUn0KLQotTmV4dCwgeW91IGNhbiBidWlsZCBHb29nbGUgVGVz
dCBhbmQgYWxsIG9mIGl0cyBvd24gdGVzdHMuICBPbiAqbml4LAotdGhpcyBpcyB1c3VhbGx5IGRv
bmUgYnkgJ21ha2UnLiAgVG8gcnVuIHRoZSB0ZXN0cywgZG8KLQotICBtYWtlIHRlc3QKLQotQWxs
IHRlc3RzIHNob3VsZCBwYXNzLgotCi0jIyMgUmVnZW5lcmF0aW5nIFNvdXJjZSBGaWxlcyAjIyMK
LQotU29tZSBvZiBHb29nbGUgVGVzdCdzIHNvdXJjZSBmaWxlcyBhcmUgZ2VuZXJhdGVkIGZyb20g
dGVtcGxhdGVzIChub3QKLWluIHRoZSBDKysgc2Vuc2UpIHVzaW5nIGEgc2NyaXB0LiAgQSB0ZW1w
bGF0ZSBmaWxlIGlzIG5hbWVkIEZPTy5wdW1wLAotd2hlcmUgRk9PIGlzIHRoZSBuYW1lIG9mIHRo
ZSBmaWxlIGl0IHdpbGwgZ2VuZXJhdGUuICBGb3IgZXhhbXBsZSwgdGhlCi1maWxlIGluY2x1ZGUv
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgucHVtcCBpcyB1c2VkIHRvIGdlbmVyYXRl
Ci1ndGVzdC10eXBlLXV0aWwuaCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCi0KLU5vcm1hbGx5IHlv
dSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHJlZ2VuZXJhdGluZyB0aGUgc291cmNlIGZpbGVz
LAotdW5sZXNzIHlvdSBuZWVkIHRvIG1vZGlmeSB0aGVtLiAgSW4gdGhhdCBjYXNlLCB5b3Ugc2hv
dWxkIG1vZGlmeSB0aGUKLWNvcnJlc3BvbmRpbmcgLnB1bXAgZmlsZXMgaW5zdGVhZCBhbmQgcnVu
IHRoZSBwdW1wLnB5IFB5dGhvbiBzY3JpcHQgdG8KLXJlZ2VuZXJhdGUgdGhlbS4gIFlvdSBjYW4g
ZmluZCBwdW1wLnB5IGluIHRoZSBzY3JpcHRzLyBkaXJlY3RvcnkuCi1SZWFkIHRoZSBQdW1wIG1h
bnVhbCBbMl0gZm9yIGhvdyB0byB1c2UgaXQuCi0KLSAgWzJdIGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9nb29nbGV0ZXN0L3dpa2kvUHVtcE1hbnVhbAotCi0jIyMgQ29udHJpYnV0aW5nIGEgUGF0
Y2ggIyMjCi0KLVdlIHdlbGNvbWUgcGF0Y2hlcy4gIFBsZWFzZSByZWFkIHRoZSBHb29nbGUgVGVz
dCBkZXZlbG9wZXIncyBndWlkZSBbM10KLWZvciBob3cgeW91IGNhbiBjb250cmlidXRlLiAgSW4g
cGFydGljdWxhciwgbWFrZSBzdXJlIHlvdSBoYXZlIHNpZ25lZAotdGhlIENvbnRyaWJ1dG9yIExp
Y2Vuc2UgQWdyZWVtZW50LCBvciB3ZSB3b24ndCBiZSBhYmxlIHRvIGFjY2VwdCB0aGUKLXBhdGNo
LgotCi0gIFszXSBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL0dvb2ds
ZVRlc3REZXZHdWlkZQotCi1IYXBweSB0ZXN0aW5nIQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvUkVBRE1FLldlYktpdCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURN
RS5XZWJLaXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhMzE4ZmY2MmUzMjQ5Yzhl
NjUzMjA5M2Y0MGUzY2I0MWMxNWY5YWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVBRE1FLldlYktpdAorKysg
L2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLUdUZXN0IHYuMS41LjAKLQotaHR0cDovL2dvb2ds
ZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RhZ3MvcmVsZWFzZS0xLjUuMC8gCi0KLTIwMTYtMDEt
MDIgVGluZy1XZWkgTGFuIChsYW50dzQ0QGdtYWlsLmNvbSkKLSAgICAgIFJlbW92ZSB1c2FnZSBv
ZiBlbnZpcm9uIGdsb2JhbCB2YXJpYWJsZSB0byBmaXggdGhlIGJ1aWxkIG9uIEZyZWVCU0QuCi0K
LTIwMTItMDEtMDQgRG1pdHJ5IExvbW92IChkc2xvbW92QGdvb2dsZS5jb20pICBEYXZpZCBLaWx6
ZXIgKGRka2lsemVyQGFwcGxlLmNvbSkKLSAgICAgIC0gV2ViS2l0IHBvcnQgb2YgZ3Rlc3QgdXNl
cyBGYXN0TWFsbG9jICJuZXciIGFuZCAiZGVsZXRlIiBvcGVyYXRvcnMgZnJvbSBKYXZhU2NyaXB0
Q29yZS4KLSAgICAgIC0gVGhlIGd0ZXN0LmZyYW1ld29yayB0YXJnZXQgbm93IGxpbmtzIHRvIEph
dmFTY3JpcHRDb3JlLmZyYW1ld29yay4KLQotMjAxMS0xMi0yMiBEYXZpZCBLaWx6ZXIgKGRka2ls
emVyQGFwcGxlLmNvbSkKLSAgICAgIEFkZGVkIFByb2R1Y3Rpb24gY29uZmlndXJhdGlvbiB0byBn
dGVzdCBYY29kZSBwcm9qZWN0LgotCi0yMDExLTA1LTA2IERtaXRyeSBMb21vdiAoZHNsb21vdkBn
b29nbGUuY29tKQotICAgICAgZ3Rlc3QtbWQudmNwcm9qIHVwZ3JhZGVkIHRvIFZTIDIwMDUgKDgu
MCkgZm9ybWF0IHRvIG1hdGNoIHRoZSByZXN0IG9mIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvUkVBRE1FLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVB
RE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmUzMGZlODA0NzEyN2JlZTE2ZDJjNzFmMTRiNTA5ZjM3NTcxYWRk
NDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9SRUFETUUubWQK
QEAgLTAsMCArMSwzNDEgQEAKKyMjIyBHZW5lcmljIEJ1aWxkIEluc3RydWN0aW9ucworCisjIyMj
IFNldHVwCisKK1RvIGJ1aWxkIEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRlc3RzIHRoYXQgdXNlIGl0
LCB5b3UgbmVlZCB0byB0ZWxsIHlvdXIgYnVpbGQKK3N5c3RlbSB3aGVyZSB0byBmaW5kIGl0cyBo
ZWFkZXJzIGFuZCBzb3VyY2UgZmlsZXMuIFRoZSBleGFjdCB3YXkgdG8gZG8gaXQKK2RlcGVuZHMg
b24gd2hpY2ggYnVpbGQgc3lzdGVtIHlvdSB1c2UsIGFuZCBpcyB1c3VhbGx5IHN0cmFpZ2h0Zm9y
d2FyZC4KKworIyMjIyBCdWlsZAorCitTdXBwb3NlIHlvdSBwdXQgR29vZ2xlIFRlc3QgaW4gZGly
ZWN0b3J5IGAke0dURVNUX0RJUn1gLiBUbyBidWlsZCBpdCwgY3JlYXRlIGEKK2xpYnJhcnkgYnVp
bGQgdGFyZ2V0IChvciBhIHByb2plY3QgYXMgY2FsbGVkIGJ5IFZpc3VhbCBTdHVkaW8gYW5kIFhj
b2RlKSB0bworY29tcGlsZQorCisgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1hbGwuY2MKKwor
d2l0aCBgJHtHVEVTVF9ESVJ9L2luY2x1ZGVgIGluIHRoZSBzeXN0ZW0gaGVhZGVyIHNlYXJjaCBw
YXRoIGFuZCBgJHtHVEVTVF9ESVJ9YAoraW4gdGhlIG5vcm1hbCBoZWFkZXIgc2VhcmNoIHBhdGgu
IEFzc3VtaW5nIGEgTGludXgtbGlrZSBzeXN0ZW0gYW5kIGdjYywKK3NvbWV0aGluZyBsaWtlIHRo
ZSBmb2xsb3dpbmcgd2lsbCBkbzoKKworICAgIGcrKyAtaXN5c3RlbSAke0dURVNUX0RJUn0vaW5j
bHVkZSAtSSR7R1RFU1RfRElSfSBcCisgICAgICAgIC1wdGhyZWFkIC1jICR7R1RFU1RfRElSfS9z
cmMvZ3Rlc3QtYWxsLmNjCisgICAgYXIgLXJ2IGxpYmd0ZXN0LmEgZ3Rlc3QtYWxsLm8KKworKFdl
IG5lZWQgYC1wdGhyZWFkYCBhcyBHb29nbGUgVGVzdCB1c2VzIHRocmVhZHMuKQorCitOZXh0LCB5
b3Ugc2hvdWxkIGNvbXBpbGUgeW91ciB0ZXN0IHNvdXJjZSBmaWxlIHdpdGggYCR7R1RFU1RfRElS
fS9pbmNsdWRlYCBpbgordGhlIHN5c3RlbSBoZWFkZXIgc2VhcmNoIHBhdGgsIGFuZCBsaW5rIGl0
IHdpdGggZ3Rlc3QgYW5kIGFueSBvdGhlciBuZWNlc3NhcnkKK2xpYnJhcmllczoKKworICAgIGcr
KyAtaXN5c3RlbSAke0dURVNUX0RJUn0vaW5jbHVkZSAtcHRocmVhZCBwYXRoL3RvL3lvdXJfdGVz
dC5jYyBsaWJndGVzdC5hIFwKKyAgICAgICAgLW8geW91cl90ZXN0CisKK0FzIGFuIGV4YW1wbGUs
IHRoZSBtYWtlLyBkaXJlY3RvcnkgY29udGFpbnMgYSBNYWtlZmlsZSB0aGF0IHlvdSBjYW4gdXNl
IHRvIGJ1aWxkCitHb29nbGUgVGVzdCBvbiBzeXN0ZW1zIHdoZXJlIEdOVSBtYWtlIGlzIGF2YWls
YWJsZSAoZS5nLiBMaW51eCwgTWFjIE9TIFgsIGFuZAorQ3lnd2luKS4gSXQgZG9lc24ndCB0cnkg
dG8gYnVpbGQgR29vZ2xlIFRlc3QncyBvd24gdGVzdHMuIEluc3RlYWQsIGl0IGp1c3QKK2J1aWxk
cyB0aGUgR29vZ2xlIFRlc3QgbGlicmFyeSBhbmQgYSBzYW1wbGUgdGVzdC4gWW91IGNhbiB1c2Ug
aXQgYXMgYSBzdGFydGluZworcG9pbnQgZm9yIHlvdXIgb3duIGJ1aWxkIHNjcmlwdC4KKworSWYg
dGhlIGRlZmF1bHQgc2V0dGluZ3MgYXJlIGNvcnJlY3QgZm9yIHlvdXIgZW52aXJvbm1lbnQsIHRo
ZSBmb2xsb3dpbmcgY29tbWFuZHMKK3Nob3VsZCBzdWNjZWVkOgorCisgICAgY2QgJHtHVEVTVF9E
SVJ9L21ha2UKKyAgICBtYWtlCisgICAgLi9zYW1wbGUxX3VuaXR0ZXN0CisKK0lmIHlvdSBzZWUg
ZXJyb3JzLCB0cnkgdG8gdHdlYWsgdGhlIGNvbnRlbnRzIG9mIGBtYWtlL01ha2VmaWxlYCB0byBt
YWtlIHRoZW0gZ28KK2F3YXkuIFRoZXJlIGFyZSBpbnN0cnVjdGlvbnMgaW4gYG1ha2UvTWFrZWZp
bGVgIG9uIGhvdyB0byBkbyBpdC4KKworIyMjIFVzaW5nIENNYWtlCisKK0dvb2dsZSBUZXN0IGNv
bWVzIHdpdGggYSBDTWFrZSBidWlsZCBzY3JpcHQgKAorW0NNYWtlTGlzdHMudHh0XShodHRwczov
L2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvYmxvYi9tYXN0ZXIvQ01ha2VMaXN0cy50eHQp
KQordGhhdCBjYW4gYmUgdXNlZCBvbiBhIHdpZGUgcmFuZ2Ugb2YgcGxhdGZvcm1zICgiQyIgc3Rh
bmRzIGZvciBjcm9zcy1wbGF0Zm9ybS4pLgorSWYgeW91IGRvbid0IGhhdmUgQ01ha2UgaW5zdGFs
bGVkIGFscmVhZHksIHlvdSBjYW4gZG93bmxvYWQgaXQgZm9yIGZyZWUgZnJvbQorPGh0dHA6Ly93
d3cuY21ha2Uub3JnLz4uCisKK0NNYWtlIHdvcmtzIGJ5IGdlbmVyYXRpbmcgbmF0aXZlIG1ha2Vm
aWxlcyBvciBidWlsZCBwcm9qZWN0cyB0aGF0IGNhbiBiZSB1c2VkIGluCit0aGUgY29tcGlsZXIg
ZW52aXJvbm1lbnQgb2YgeW91ciBjaG9pY2UuIFlvdSBjYW4gZWl0aGVyIGJ1aWxkIEdvb2dsZSBU
ZXN0IGFzIGEKK3N0YW5kYWxvbmUgcHJvamVjdCBvciBpdCBjYW4gYmUgaW5jb3Jwb3JhdGVkIGlu
dG8gYW4gZXhpc3RpbmcgQ01ha2UgYnVpbGQgZm9yCithbm90aGVyIHByb2plY3QuCisKKyMjIyMg
U3RhbmRhbG9uZSBDTWFrZSBQcm9qZWN0CisKK1doZW4gYnVpbGRpbmcgR29vZ2xlIFRlc3QgYXMg
YSBzdGFuZGFsb25lIHByb2plY3QsIHRoZSB0eXBpY2FsIHdvcmtmbG93IHN0YXJ0cword2l0aDoK
KworICAgIG1rZGlyIG15YnVpbGQgICAgICAgIyBDcmVhdGUgYSBkaXJlY3RvcnkgdG8gaG9sZCB0
aGUgYnVpbGQgb3V0cHV0LgorICAgIGNkIG15YnVpbGQKKyAgICBjbWFrZSAke0dURVNUX0RJUn0g
ICMgR2VuZXJhdGUgbmF0aXZlIGJ1aWxkIHNjcmlwdHMuCisKK0lmIHlvdSB3YW50IHRvIGJ1aWxk
IEdvb2dsZSBUZXN0J3Mgc2FtcGxlcywgeW91IHNob3VsZCByZXBsYWNlIHRoZSBsYXN0IGNvbW1h
bmQKK3dpdGgKKworICAgIGNtYWtlIC1EZ3Rlc3RfYnVpbGRfc2FtcGxlcz1PTiAke0dURVNUX0RJ
Un0KKworSWYgeW91IGFyZSBvbiBhIFwqbml4IHN5c3RlbSwgeW91IHNob3VsZCBub3cgc2VlIGEg
TWFrZWZpbGUgaW4gdGhlIGN1cnJlbnQKK2RpcmVjdG9yeS4gSnVzdCB0eXBlICdtYWtlJyB0byBi
dWlsZCBndGVzdC4KKworSWYgeW91IHVzZSBXaW5kb3dzIGFuZCBoYXZlIFZpc3VhbCBTdHVkaW8g
aW5zdGFsbGVkLCBhIGBndGVzdC5zbG5gIGZpbGUgYW5kCitzZXZlcmFsIGAudmNwcm9qYCBmaWxl
cyB3aWxsIGJlIGNyZWF0ZWQuIFlvdSBjYW4gdGhlbiBidWlsZCB0aGVtIHVzaW5nIFZpc3VhbAor
U3R1ZGlvLgorCitPbiBNYWMgT1MgWCB3aXRoIFhjb2RlIGluc3RhbGxlZCwgYSBgLnhjb2RlcHJv
amAgZmlsZSB3aWxsIGJlIGdlbmVyYXRlZC4KKworIyMjIyBJbmNvcnBvcmF0aW5nIEludG8gQW4g
RXhpc3RpbmcgQ01ha2UgUHJvamVjdAorCitJZiB5b3Ugd2FudCB0byB1c2UgZ3Rlc3QgaW4gYSBw
cm9qZWN0IHdoaWNoIGFscmVhZHkgdXNlcyBDTWFrZSwgdGhlbiBhIG1vcmUKK3JvYnVzdCBhbmQg
ZmxleGlibGUgYXBwcm9hY2ggaXMgdG8gYnVpbGQgZ3Rlc3QgYXMgcGFydCBvZiB0aGF0IHByb2pl
Y3QgZGlyZWN0bHkuCitUaGlzIGlzIGRvbmUgYnkgbWFraW5nIHRoZSBHb29nbGVUZXN0IHNvdXJj
ZSBjb2RlIGF2YWlsYWJsZSB0byB0aGUgbWFpbiBidWlsZAorYW5kIGFkZGluZyBpdCB1c2luZyBD
TWFrZSdzIGBhZGRfc3ViZGlyZWN0b3J5KClgIGNvbW1hbmQuIFRoaXMgaGFzIHRoZQorc2lnbmlm
aWNhbnQgYWR2YW50YWdlIHRoYXQgdGhlIHNhbWUgY29tcGlsZXIgYW5kIGxpbmtlciBzZXR0aW5n
cyBhcmUgdXNlZAorYmV0d2VlbiBndGVzdCBhbmQgdGhlIHJlc3Qgb2YgeW91ciBwcm9qZWN0LCBz
byBpc3N1ZXMgYXNzb2NpYXRlZCB3aXRoIHVzaW5nCitpbmNvbXBhdGlibGUgbGlicmFyaWVzIChl
ZyBkZWJ1Zy9yZWxlYXNlKSwgZXRjLiBhcmUgYXZvaWRlZC4gVGhpcyBpcworcGFydGljdWxhcmx5
IHVzZWZ1bCBvbiBXaW5kb3dzLiBNYWtpbmcgR29vZ2xlVGVzdCdzIHNvdXJjZSBjb2RlIGF2YWls
YWJsZSB0byB0aGUKK21haW4gYnVpbGQgY2FuIGJlIGRvbmUgYSBmZXcgZGlmZmVyZW50IHdheXM6
CisKKyogICBEb3dubG9hZCB0aGUgR29vZ2xlVGVzdCBzb3VyY2UgY29kZSBtYW51YWxseSBhbmQg
cGxhY2UgaXQgYXQgYSBrbm93bgorICAgIGxvY2F0aW9uLiBUaGlzIGlzIHRoZSBsZWFzdCBmbGV4
aWJsZSBhcHByb2FjaCBhbmQgY2FuIG1ha2UgaXQgbW9yZSBkaWZmaWN1bHQKKyAgICB0byB1c2Ug
d2l0aCBjb250aW51b3VzIGludGVncmF0aW9uIHN5c3RlbXMsIGV0Yy4KKyogICBFbWJlZCB0aGUg
R29vZ2xlVGVzdCBzb3VyY2UgY29kZSBhcyBhIGRpcmVjdCBjb3B5IGluIHRoZSBtYWluIHByb2pl
Y3QncworICAgIHNvdXJjZSB0cmVlLiBUaGlzIGlzIG9mdGVuIHRoZSBzaW1wbGVzdCBhcHByb2Fj
aCwgYnV0IGlzIGFsc28gdGhlIGhhcmRlc3QgdG8KKyAgICBrZWVwIHVwIHRvIGRhdGUuIFNvbWUg
b3JnYW5pemF0aW9ucyBtYXkgbm90IHBlcm1pdCB0aGlzIG1ldGhvZC4KKyogICBBZGQgR29vZ2xl
VGVzdCBhcyBhIGdpdCBzdWJtb2R1bGUgb3IgZXF1aXZhbGVudC4gVGhpcyBtYXkgbm90IGFsd2F5
cyBiZQorICAgIHBvc3NpYmxlIG9yIGFwcHJvcHJpYXRlLiBHaXQgc3VibW9kdWxlcywgZm9yIGV4
YW1wbGUsIGhhdmUgdGhlaXIgb3duIHNldCBvZgorICAgIGFkdmFudGFnZXMgYW5kIGRyYXdiYWNr
cy4KKyogICBVc2UgQ01ha2UgdG8gZG93bmxvYWQgR29vZ2xlVGVzdCBhcyBwYXJ0IG9mIHRoZSBi
dWlsZCdzIGNvbmZpZ3VyZSBzdGVwLiBUaGlzCisgICAgaXMganVzdCBhIGxpdHRsZSBtb3JlIGNv
bXBsZXgsIGJ1dCBkb2Vzbid0IGhhdmUgdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBvdGhlcgorICAg
IG1ldGhvZHMuCisKK1RoZSBsYXN0IG9mIHRoZSBhYm92ZSBtZXRob2RzIGlzIGltcGxlbWVudGVk
IHdpdGggYSBzbWFsbCBwaWVjZSBvZiBDTWFrZSBjb2RlIGluCithIHNlcGFyYXRlIGZpbGUgKGUu
Zy4gYENNYWtlTGlzdHMudHh0LmluYCkgd2hpY2ggaXMgY29waWVkIHRvIHRoZSBidWlsZCBhcmVh
IGFuZAordGhlbiBpbnZva2VkIGFzIGEgc3ViLWJ1aWxkIF9kdXJpbmcgdGhlIENNYWtlIHN0YWdl
Xy4gVGhhdCBkaXJlY3RvcnkgaXMgdGhlbgorcHVsbGVkIGludG8gdGhlIG1haW4gYnVpbGQgd2l0
aCBgYWRkX3N1YmRpcmVjdG9yeSgpYC4gRm9yIGV4YW1wbGU6CisKK05ldyBmaWxlIGBDTWFrZUxp
c3RzLnR4dC5pbmA6CisKKyAgICBjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMi44LjIp
CisKKyAgICBwcm9qZWN0KGdvb2dsZXRlc3QtZG93bmxvYWQgTk9ORSkKKworICAgIGluY2x1ZGUo
RXh0ZXJuYWxQcm9qZWN0KQorICAgIEV4dGVybmFsUHJvamVjdF9BZGQoZ29vZ2xldGVzdAorICAg
ICAgR0lUX1JFUE9TSVRPUlkgICAgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0
LmdpdAorICAgICAgR0lUX1RBRyAgICAgICAgICAgbWFzdGVyCisgICAgICBTT1VSQ0VfRElSICAg
ICAgICAiJHtDTUFLRV9CSU5BUllfRElSfS9nb29nbGV0ZXN0LXNyYyIKKyAgICAgIEJJTkFSWV9E
SVIgICAgICAgICIke0NNQUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3QtYnVpbGQiCisgICAgICBD
T05GSUdVUkVfQ09NTUFORCAiIgorICAgICAgQlVJTERfQ09NTUFORCAgICAgIiIKKyAgICAgIElO
U1RBTExfQ09NTUFORCAgICIiCisgICAgICBURVNUX0NPTU1BTkQgICAgICAiIgorICAgICkKKwor
RXhpc3RpbmcgYnVpbGQncyBgQ01ha2VMaXN0cy50eHRgOgorCisgICAgIyBEb3dubG9hZCBhbmQg
dW5wYWNrIGdvb2dsZXRlc3QgYXQgY29uZmlndXJlIHRpbWUKKyAgICBjb25maWd1cmVfZmlsZShD
TWFrZUxpc3RzLnR4dC5pbiBnb29nbGV0ZXN0LWRvd25sb2FkL0NNYWtlTGlzdHMudHh0KQorICAg
IGV4ZWN1dGVfcHJvY2VzcyhDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUcgIiR7Q01BS0VfR0VO
RVJBVE9SfSIgLgorICAgICAgUkVTVUxUX1ZBUklBQkxFIHJlc3VsdAorICAgICAgV09SS0lOR19E
SVJFQ1RPUlkgJHtDTUFLRV9CSU5BUllfRElSfS9nb29nbGV0ZXN0LWRvd25sb2FkICkKKyAgICBp
ZihyZXN1bHQpCisgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJDTWFrZSBzdGVwIGZvciBnb29n
bGV0ZXN0IGZhaWxlZDogJHtyZXN1bHR9IikKKyAgICBlbmRpZigpCisgICAgZXhlY3V0ZV9wcm9j
ZXNzKENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtLWJ1aWxkIC4KKyAgICAgIFJFU1VMVF9WQVJJ
QUJMRSByZXN1bHQKKyAgICAgIFdPUktJTkdfRElSRUNUT1JZICR7Q01BS0VfQklOQVJZX0RJUn0v
Z29vZ2xldGVzdC1kb3dubG9hZCApCisgICAgaWYocmVzdWx0KQorICAgICAgbWVzc2FnZShGQVRB
TF9FUlJPUiAiQnVpbGQgc3RlcCBmb3IgZ29vZ2xldGVzdCBmYWlsZWQ6ICR7cmVzdWx0fSIpCisg
ICAgZW5kaWYoKQorCisgICAgIyBQcmV2ZW50IG92ZXJyaWRpbmcgdGhlIHBhcmVudCBwcm9qZWN0
J3MgY29tcGlsZXIvbGlua2VyCisgICAgIyBzZXR0aW5ncyBvbiBXaW5kb3dzCisgICAgc2V0KGd0
ZXN0X2ZvcmNlX3NoYXJlZF9jcnQgT04gQ0FDSEUgQk9PTCAiIiBGT1JDRSkKKworICAgICMgQWRk
IGdvb2dsZXRlc3QgZGlyZWN0bHkgdG8gb3VyIGJ1aWxkLiBUaGlzIGRlZmluZXMKKyAgICAjIHRo
ZSBndGVzdCBhbmQgZ3Rlc3RfbWFpbiB0YXJnZXRzLgorICAgIGFkZF9zdWJkaXJlY3RvcnkoJHtD
TUFLRV9CSU5BUllfRElSfS9nb29nbGV0ZXN0LXNyYworICAgICAgICAgICAgICAgICAgICAgJHtD
TUFLRV9CSU5BUllfRElSfS9nb29nbGV0ZXN0LWJ1aWxkCisgICAgICAgICAgICAgICAgICAgICBF
WENMVURFX0ZST01fQUxMKQorCisgICAgIyBUaGUgZ3Rlc3QvZ3Rlc3RfbWFpbiB0YXJnZXRzIGNh
cnJ5IGhlYWRlciBzZWFyY2ggcGF0aAorICAgICMgZGVwZW5kZW5jaWVzIGF1dG9tYXRpY2FsbHkg
d2hlbiB1c2luZyBDTWFrZSAyLjguMTEgb3IKKyAgICAjIGxhdGVyLiBPdGhlcndpc2Ugd2UgaGF2
ZSB0byBhZGQgdGhlbSBoZXJlIG91cnNlbHZlcy4KKyAgICBpZiAoQ01BS0VfVkVSU0lPTiBWRVJT
SU9OX0xFU1MgMi44LjExKQorICAgICAgaW5jbHVkZV9kaXJlY3RvcmllcygiJHtndGVzdF9TT1VS
Q0VfRElSfS9pbmNsdWRlIikKKyAgICBlbmRpZigpCisKKyAgICAjIE5vdyBzaW1wbHkgbGluayBh
Z2FpbnN0IGd0ZXN0IG9yIGd0ZXN0X21haW4gYXMgbmVlZGVkLiBFZworICAgIGFkZF9leGVjdXRh
YmxlKGV4YW1wbGUgZXhhbXBsZS5jcHApCisgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGV4YW1w
bGUgZ3Rlc3RfbWFpbikKKyAgICBhZGRfdGVzdChOQU1FIGV4YW1wbGVfdGVzdCBDT01NQU5EIGV4
YW1wbGUpCisKK05vdGUgdGhhdCB0aGlzIGFwcHJvYWNoIHJlcXVpcmVzIENNYWtlIDIuOC4yIG9y
IGxhdGVyIGR1ZSB0byBpdHMgdXNlIG9mIHRoZQorYEV4dGVybmFsUHJvamVjdF9BZGQoKWAgY29t
bWFuZC4gVGhlIGFib3ZlIHRlY2huaXF1ZSBpcyBkaXNjdXNzZWQgaW4gbW9yZSBkZXRhaWwKK2lu
IFt0aGlzIHNlcGFyYXRlIGFydGljbGVdKGh0dHA6Ly9jcmFzY2l0LmNvbS8yMDE1LzA3LzI1L2Nt
YWtlLWd0ZXN0Lykgd2hpY2gKK2Fsc28gY29udGFpbnMgYSBsaW5rIHRvIGEgZnVsbHkgZ2VuZXJh
bGl6ZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIHRlY2huaXF1ZS4KKworIyMjIyMgVmlzdWFsIFN0
dWRpbyBEeW5hbWljIHZzIFN0YXRpYyBSdW50aW1lcworCitCeSBkZWZhdWx0LCBuZXcgVmlzdWFs
IFN0dWRpbyBwcm9qZWN0cyBsaW5rIHRoZSBDIHJ1bnRpbWVzIGR5bmFtaWNhbGx5IGJ1dAorR29v
Z2xlIFRlc3QgbGlua3MgdGhlbSBzdGF0aWNhbGx5LiBUaGlzIHdpbGwgZ2VuZXJhdGUgYW4gZXJy
b3IgdGhhdCBsb29rcworc29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZzogZ3Rlc3QubGliKGd0
ZXN0LWFsbC5vYmopIDogZXJyb3IgTE5LMjAzODogbWlzbWF0Y2gKK2RldGVjdGVkIGZvciAnUnVu
dGltZUxpYnJhcnknOiB2YWx1ZSAnTVRkX1N0YXRpY0RlYnVnJyBkb2Vzbid0IG1hdGNoIHZhbHVl
CisnTURkX0R5bmFtaWNEZWJ1ZycgaW4gbWFpbi5vYmoKKworR29vZ2xlIFRlc3QgYWxyZWFkeSBo
YXMgYSBDTWFrZSBvcHRpb24gZm9yIHRoaXM6IGBndGVzdF9mb3JjZV9zaGFyZWRfY3J0YAorCitF
bmFibGluZyB0aGlzIG9wdGlvbiB3aWxsIG1ha2UgZ3Rlc3QgbGluayB0aGUgcnVudGltZXMgZHlu
YW1pY2FsbHkgdG9vLCBhbmQKK21hdGNoIHRoZSBwcm9qZWN0IGluIHdoaWNoIGl0IGlzIGluY2x1
ZGVkLgorCisjIyMgTGVnYWN5IEJ1aWxkIFNjcmlwdHMKKworQmVmb3JlIHNldHRsaW5nIG9uIENN
YWtlLCB3ZSBoYXZlIGJlZW4gcHJvdmlkaW5nIGhhbmQtbWFpbnRhaW5lZCBidWlsZAorcHJvamVj
dHMvc2NyaXB0cyBmb3IgVmlzdWFsIFN0dWRpbywgWGNvZGUsIGFuZCBBdXRvdG9vbHMuIFdoaWxl
IHdlIGNvbnRpbnVlIHRvCitwcm92aWRlIHRoZW0gZm9yIGNvbnZlbmllbmNlLCB0aGV5IGFyZSBu
b3QgYWN0aXZlbHkgbWFpbnRhaW5lZCBhbnkgbW9yZS4gV2UKK2hpZ2hseSByZWNvbW1lbmQgdGhh
dCB5b3UgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgaW4gdGhlIGFib3ZlIHNlY3Rpb25zIHRvCitp
bnRlZ3JhdGUgR29vZ2xlIFRlc3Qgd2l0aCB5b3VyIGV4aXN0aW5nIGJ1aWxkIHN5c3RlbS4KKwor
SWYgeW91IHN0aWxsIG5lZWQgdG8gdXNlIHRoZSBsZWdhY3kgYnVpbGQgc2NyaXB0cywgaGVyZSdz
IGhvdzoKKworVGhlIG1zdmNcIGZvbGRlciBjb250YWlucyB0d28gc29sdXRpb25zIHdpdGggVmlz
dWFsIEMrKyBwcm9qZWN0cy4gT3BlbiB0aGUKK2BndGVzdC5zbG5gIG9yIGBndGVzdC1tZC5zbG5g
IGZpbGUgdXNpbmcgVmlzdWFsIFN0dWRpbywgYW5kIHlvdSBhcmUgcmVhZHkgdG8KK2J1aWxkIEdv
b2dsZSBUZXN0IHRoZSBzYW1lIHdheSB5b3UgYnVpbGQgYW55IFZpc3VhbCBTdHVkaW8gcHJvamVj
dC4gRmlsZXMgdGhhdAoraGF2ZSBuYW1lcyBlbmRpbmcgd2l0aCAtbWQgdXNlIERMTCB2ZXJzaW9u
cyBvZiBNaWNyb3NvZnQgcnVudGltZSBsaWJyYXJpZXMgKHRoZQorL01EIG9yIHRoZSAvTURkIGNv
bXBpbGVyIG9wdGlvbikuIEZpbGVzIHdpdGhvdXQgdGhhdCBzdWZmaXggdXNlIHN0YXRpYyB2ZXJz
aW9ucworb2YgdGhlIHJ1bnRpbWUgbGlicmFyaWVzICh0aGUgL01UIG9yIHRoZSAvTVRkIG9wdGlv
bikuIFBsZWFzZSBub3RlIHRoYXQgb25lIG11c3QKK3VzZSB0aGUgc2FtZSBvcHRpb24gdG8gY29t
cGlsZSBib3RoIGd0ZXN0IGFuZCB0aGUgdGVzdCBjb2RlLiBJZiB5b3UgdXNlIFZpc3VhbAorU3R1
ZGlvIDIwMDUgb3IgYWJvdmUsIHdlIHJlY29tbWVuZCB0aGUgLW1kIHZlcnNpb24gYXMgL01EIGlz
IHRoZSBkZWZhdWx0IGZvciBuZXcKK3Byb2plY3RzIGluIHRoZXNlIHZlcnNpb25zIG9mIFZpc3Vh
bCBTdHVkaW8uCisKK09uIE1hYyBPUyBYLCBvcGVuIHRoZSBgZ3Rlc3QueGNvZGVwcm9qYCBpbiB0
aGUgYHhjb2RlL2AgZm9sZGVyIHVzaW5nIFhjb2RlLgorQnVpbGQgdGhlICJndGVzdCIgdGFyZ2V0
LiBUaGUgdW5pdmVyc2FsIGJpbmFyeSBmcmFtZXdvcmsgd2lsbCBlbmQgdXAgaW4geW91cgorc2Vs
ZWN0ZWQgYnVpbGQgZGlyZWN0b3J5IChzZWxlY3RlZCBpbiB0aGUgWGNvZGUgIlByZWZlcmVuY2Vz
Li4uIiAtPiAiQnVpbGRpbmciCitwYW5lIGFuZCBkZWZhdWx0cyB0byB4Y29kZS9idWlsZCkuIEFs
dGVybmF0aXZlbHksIGF0IHRoZSBjb21tYW5kIGxpbmUsIGVudGVyOgorCisgICAgeGNvZGVidWls
ZAorCitUaGlzIHdpbGwgYnVpbGQgdGhlICJSZWxlYXNlIiBjb25maWd1cmF0aW9uIG9mIGd0ZXN0
LmZyYW1ld29yayBpbiB5b3VyIGRlZmF1bHQKK2J1aWxkIGxvY2F0aW9uLiBTZWUgdGhlICJ4Y29k
ZWJ1aWxkIiBtYW4gcGFnZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dAorYnVpbGRpbmcgZGlm
ZmVyZW50IGNvbmZpZ3VyYXRpb25zIGFuZCBidWlsZGluZyBpbiBkaWZmZXJlbnQgbG9jYXRpb25z
LgorCitJZiB5b3Ugd2lzaCB0byB1c2UgdGhlIEdvb2dsZSBUZXN0IFhjb2RlIHByb2plY3Qgd2l0
aCBYY29kZSA0LnggYW5kIGFib3ZlLCB5b3UKK25lZWQgdG8gZWl0aGVyOgorCisqICAgdXBkYXRl
IHRoZSBTREsgY29uZmlndXJhdGlvbiBvcHRpb25zIGluIHhjb2RlL0NvbmZpZy9HZW5lcmFsLnhj
b25maWcuCisgICAgQ29tbWVudCBvcHRpb25zIGBTREtST09UYCwgYE1BQ09TX0RFUExPWU1FTlRf
VEFSR0VUYCwgYW5kIGBHQ0NfVkVSU0lPTmAuIElmCisgICAgeW91IGNob29zZSB0aGlzIHJvdXRl
IHlvdSBsb3NlIHRoZSBhYmlsaXR5IHRvIHRhcmdldCBlYXJsaWVyIHZlcnNpb25zIG9mCisgICAg
TWFjT1MgWC4KKyogICBJbnN0YWxsIGFuIFNESyBmb3IgYW4gZWFybGllciB2ZXJzaW9uLiBUaGlz
IGRvZXNuJ3QgYXBwZWFyIHRvIGJlIHN1cHBvcnRlZAorICAgIGJ5IEFwcGxlLCBidXQgaGFzIGJl
ZW4gcmVwb3J0ZWQgdG8gd29yaworICAgIChodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rp
b25zLzUzNzg1MTgpLgorCisjIyMgVHdlYWtpbmcgR29vZ2xlIFRlc3QKKworR29vZ2xlIFRlc3Qg
Y2FuIGJlIHVzZWQgaW4gZGl2ZXJzZSBlbnZpcm9ubWVudHMuIFRoZSBkZWZhdWx0IGNvbmZpZ3Vy
YXRpb24gbWF5Citub3Qgd29yayAob3IgbWF5IG5vdCB3b3JrIHdlbGwpIG91dCBvZiB0aGUgYm94
IGluIHNvbWUgZW52aXJvbm1lbnRzLiBIb3dldmVyLAoreW91IGNhbiBlYXNpbHkgdHdlYWsgR29v
Z2xlIFRlc3QgYnkgZGVmaW5pbmcgY29udHJvbCBtYWNyb3Mgb24gdGhlIGNvbXBpbGVyCitjb21t
YW5kIGxpbmUuIEdlbmVyYWxseSwgdGhlc2UgbWFjcm9zIGFyZSBuYW1lZCBsaWtlIGBHVEVTVF9Y
WVpgIGFuZCB5b3UgZGVmaW5lCit0aGVtIHRvIGVpdGhlciAxIG9yIDAgdG8gZW5hYmxlIG9yIGRp
c2FibGUgYSBjZXJ0YWluIGZlYXR1cmUuCisKK1dlIGxpc3QgdGhlIG1vc3QgZnJlcXVlbnRseSB1
c2VkIG1hY3JvcyBiZWxvdy4gRm9yIGEgY29tcGxldGUgbGlzdCwgc2VlIGZpbGUKK1tpbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaF0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9n
b29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5o
KS4KKworIyMjIENob29zaW5nIGEgVFIxIFR1cGxlIExpYnJhcnkKKworU29tZSBHb29nbGUgVGVz
dCBmZWF0dXJlcyByZXF1aXJlIHRoZSBDKysgVGVjaG5pY2FsIFJlcG9ydCAxIChUUjEpIHR1cGxl
CitsaWJyYXJ5LCB3aGljaCBpcyBub3QgeWV0IGF2YWlsYWJsZSB3aXRoIGFsbCBjb21waWxlcnMu
IFRoZSBnb29kIG5ld3MgaXMgdGhhdAorR29vZ2xlIFRlc3QgaW1wbGVtZW50cyBhIHN1YnNldCBv
ZiBUUjEgdHVwbGUgdGhhdCdzIGVub3VnaCBmb3IgaXRzIG93biBuZWVkLCBhbmQKK3dpbGwgYXV0
b21hdGljYWxseSB1c2UgdGhpcyB3aGVuIHRoZSBjb21waWxlciBkb2Vzbid0IHByb3ZpZGUgVFIx
IHR1cGxlLgorCitVc3VhbGx5IHlvdSBkb24ndCBuZWVkIHRvIGNhcmUgYWJvdXQgd2hpY2ggdHVw
bGUgbGlicmFyeSBHb29nbGUgVGVzdCB1c2VzLgorSG93ZXZlciwgaWYgeW91ciBwcm9qZWN0IGFs
cmVhZHkgdXNlcyBUUjEgdHVwbGUsIHlvdSBuZWVkIHRvIHRlbGwgR29vZ2xlIFRlc3QgdG8KK3Vz
ZSB0aGUgc2FtZSBUUjEgdHVwbGUgbGlicmFyeSB0aGUgcmVzdCBvZiB5b3VyIHByb2plY3QgdXNl
cywgb3IgdGhlIHR3byB0dXBsZQoraW1wbGVtZW50YXRpb25zIHdpbGwgY2xhc2guIFRvIGRvIHRo
YXQsIGFkZAorCisgICAgLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0wCisKK3RvIHRoZSBjb21w
aWxlciBmbGFncyB3aGlsZSBjb21waWxpbmcgR29vZ2xlIFRlc3QgYW5kIHlvdXIgdGVzdHMuIElm
IHlvdSB3YW50IHRvCitmb3JjZSBHb29nbGUgVGVzdCB0byB1c2UgaXRzIG93biB0dXBsZSBsaWJy
YXJ5LCBqdXN0IGFkZAorCisgICAgLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0xCisKK3RvIHRo
ZSBjb21waWxlciBmbGFncyBpbnN0ZWFkLgorCitJZiB5b3UgZG9uJ3Qgd2FudCBHb29nbGUgVGVz
dCB0byB1c2UgdHVwbGUgYXQgYWxsLCBhZGQKKworICAgIC1ER1RFU1RfSEFTX1RSMV9UVVBMRT0w
CisKK2FuZCBhbGwgZmVhdHVyZXMgdXNpbmcgdHVwbGUgd2lsbCBiZSBkaXNhYmxlZC4KKworIyMj
IE11bHRpLXRocmVhZGVkIFRlc3RzCisKK0dvb2dsZSBUZXN0IGlzIHRocmVhZC1zYWZlIHdoZXJl
IHRoZSBwdGhyZWFkIGxpYnJhcnkgaXMgYXZhaWxhYmxlLiBBZnRlcgorYCNpbmNsdWRlICJndGVz
dC9ndGVzdC5oImAsIHlvdSBjYW4gY2hlY2sgdGhlIGBHVEVTVF9JU19USFJFQURTQUZFYCBtYWNy
byB0byBzZWUKK3doZXRoZXIgdGhpcyBpcyB0aGUgY2FzZSAoeWVzIGlmIHRoZSBtYWNybyBpcyBg
I2RlZmluZWRgIHRvIDEsIG5vIGlmIGl0J3MKK3VuZGVmaW5lZC4pLgorCitJZiBHb29nbGUgVGVz
dCBkb2Vzbid0IGNvcnJlY3RseSBkZXRlY3Qgd2hldGhlciBwdGhyZWFkIGlzIGF2YWlsYWJsZSBp
biB5b3VyCitlbnZpcm9ubWVudCwgeW91IGNhbiBmb3JjZSBpdCB3aXRoCisKKyAgICAtREdURVNU
X0hBU19QVEhSRUFEPTEKKworb3IKKworICAgIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MAorCitXaGVu
IEdvb2dsZSBUZXN0IHVzZXMgcHRocmVhZCwgeW91IG1heSBuZWVkIHRvIGFkZCBmbGFncyB0byB5
b3VyIGNvbXBpbGVyIGFuZC9vcgorbGlua2VyIHRvIHNlbGVjdCB0aGUgcHRocmVhZCBsaWJyYXJ5
LCBvciB5b3UnbGwgZ2V0IGxpbmsgZXJyb3JzLiBJZiB5b3UgdXNlIHRoZQorQ01ha2Ugc2NyaXB0
IG9yIHRoZSBkZXByZWNhdGVkIEF1dG90b29scyBzY3JpcHQsIHRoaXMgaXMgdGFrZW4gY2FyZSBv
ZiBmb3IgeW91LgorSWYgeW91IHVzZSB5b3VyIG93biBidWlsZCBzY3JpcHQsIHlvdSdsbCBuZWVk
IHRvIHJlYWQgeW91ciBjb21waWxlciBhbmQgbGlua2VyJ3MKK21hbnVhbCB0byBmaWd1cmUgb3V0
IHdoYXQgZmxhZ3MgdG8gYWRkLgorCisjIyMgQXMgYSBTaGFyZWQgTGlicmFyeSAoRExMKQorCitH
b29nbGUgVGVzdCBpcyBjb21wYWN0LCBzbyBtb3N0IHVzZXJzIGNhbiBidWlsZCBhbmQgbGluayBp
dCBhcyBhIHN0YXRpYyBsaWJyYXJ5Citmb3IgdGhlIHNpbXBsaWNpdHkuIFlvdSBjYW4gY2hvb3Nl
IHRvIHVzZSBHb29nbGUgVGVzdCBhcyBhIHNoYXJlZCBsaWJyYXJ5IChrbm93bgorYXMgYSBETEwg
b24gV2luZG93cykgaWYgeW91IHByZWZlci4KKworVG8gY29tcGlsZSAqZ3Rlc3QqIGFzIGEgc2hh
cmVkIGxpYnJhcnksIGFkZAorCisgICAgLURHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJBUlk9MQor
Cit0byB0aGUgY29tcGlsZXIgZmxhZ3MuIFlvdSdsbCBhbHNvIG5lZWQgdG8gdGVsbCB0aGUgbGlu
a2VyIHRvIHByb2R1Y2UgYSBzaGFyZWQKK2xpYnJhcnkgaW5zdGVhZCAtIGNvbnN1bHQgeW91ciBs
aW5rZXIncyBtYW51YWwgZm9yIGhvdyB0byBkbyBpdC4KKworVG8gY29tcGlsZSB5b3VyICp0ZXN0
cyogdGhhdCB1c2UgdGhlIGd0ZXN0IHNoYXJlZCBsaWJyYXJ5LCBhZGQKKworICAgIC1ER1RFU1Rf
TElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZPTEKKwordG8gdGhlIGNvbXBpbGVyIGZsYWdzLgorCitO
b3RlOiB3aGlsZSB0aGUgYWJvdmUgc3RlcHMgYXJlbid0IHRlY2huaWNhbGx5IG5lY2Vzc2FyeSB0
b2RheSB3aGVuIHVzaW5nIHNvbWUKK2NvbXBpbGVycyAoZS5nLiBHQ0MpLCB0aGV5IG1heSBiZWNv
bWUgbmVjZXNzYXJ5IGluIHRoZSBmdXR1cmUsIGlmIHdlIGRlY2lkZSB0bworaW1wcm92ZSB0aGUg
c3BlZWQgb2YgbG9hZGluZyB0aGUgbGlicmFyeSAoc2VlCis8aHR0cDovL2djYy5nbnUub3JnL3dp
a2kvVmlzaWJpbGl0eT4gZm9yIGRldGFpbHMpLiBUaGVyZWZvcmUgeW91IGFyZSByZWNvbW1lbmRl
ZAordG8gYWx3YXlzIGFkZCB0aGUgYWJvdmUgZmxhZ3Mgd2hlbiB1c2luZyBHb29nbGUgVGVzdCBh
cyBhIHNoYXJlZCBsaWJyYXJ5LgorT3RoZXJ3aXNlIGEgZnV0dXJlIHJlbGVhc2Ugb2YgR29vZ2xl
IFRlc3QgbWF5IGJyZWFrIHlvdXIgYnVpbGQgc2NyaXB0LgorCisjIyMgQXZvaWRpbmcgTWFjcm8g
TmFtZSBDbGFzaGVzCisKK0luIEMrKywgbWFjcm9zIGRvbid0IG9iZXkgbmFtZXNwYWNlcy4gVGhl
cmVmb3JlIHR3byBsaWJyYXJpZXMgdGhhdCBib3RoIGRlZmluZSBhCittYWNybyBvZiB0aGUgc2Ft
ZSBuYW1lIHdpbGwgY2xhc2ggaWYgeW91IGAjaW5jbHVkZWAgYm90aCBkZWZpbml0aW9ucy4gSW4g
Y2FzZSBhCitHb29nbGUgVGVzdCBtYWNybyBjbGFzaGVzIHdpdGggYW5vdGhlciBsaWJyYXJ5LCB5
b3UgY2FuIGZvcmNlIEdvb2dsZSBUZXN0IHRvCityZW5hbWUgaXRzIG1hY3JvIHRvIGF2b2lkIHRo
ZSBjb25mbGljdC4KKworU3BlY2lmaWNhbGx5LCBpZiBib3RoIEdvb2dsZSBUZXN0IGFuZCBzb21l
IG90aGVyIGNvZGUgZGVmaW5lIG1hY3JvIEZPTywgeW91IGNhbgorYWRkCisKKyAgICAtREdURVNU
X0RPTlRfREVGSU5FX0ZPTz0xCisKK3RvIHRoZSBjb21waWxlciBmbGFncyB0byB0ZWxsIEdvb2ds
ZSBUZXN0IHRvIGNoYW5nZSB0aGUgbWFjcm8ncyBuYW1lIGZyb20gYEZPT2AKK3RvIGBHVEVTVF9G
T09gLiBDdXJyZW50bHkgYEZPT2AgY2FuIGJlIGBGQUlMYCwgYFNVQ0NFRURgLCBvciBgVEVTVGAu
IEZvcgorZXhhbXBsZSwgd2l0aCBgLURHVEVTVF9ET05UX0RFRklORV9URVNUPTFgLCB5b3UnbGwg
bmVlZCB0byB3cml0ZQorCisgICAgR1RFU1RfVEVTVChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4u
IH0KKworaW5zdGVhZCBvZgorCisgICAgVEVTVChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0K
KworaW4gb3JkZXIgdG8gZGVmaW5lIGEgdGVzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2NtYWtlL0NvbmZpZy5jbWFrZS5pbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2NtYWtlL0NvbmZpZy5jbWFrZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMmJlNDQ5OGIxYTA3OTY4MWExMjll
MzFiMTdjNTdlMTgxMjZhNjNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvY21ha2UvQ29uZmlnLmNtYWtlLmluCkBAIC0wLDAgKzEsOSBAQAorQFBBQ0tBR0VfSU5J
VEAKK2luY2x1ZGUoQ01ha2VGaW5kRGVwZW5kZW5jeU1hY3JvKQoraWYgKEBHVEVTVF9IQVNfUFRI
UkVBREApCisgIHNldChUSFJFQURTX1BSRUZFUl9QVEhSRUFEX0ZMQUcgQFRIUkVBRFNfUFJFRkVS
X1BUSFJFQURfRkxBR0ApCisgIGZpbmRfZGVwZW5kZW5jeShUaHJlYWRzKQorZW5kaWYoKQorCitp
bmNsdWRlKCIke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L0B0YXJnZXRzX2V4cG9ydF9uYW1lQC5j
bWFrZSIpCitjaGVja19yZXF1aXJlZF9jb21wb25lbnRzKCJAcHJvamVjdF9uYW1lQCIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9ndGVzdC5wYy5pbiBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2d0ZXN0LnBjLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3OTY3YWQ1
NmZmMmMzMmVkNGJhMDY3MDNhZWE1MjVkY2FkMmNlN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9ndGVzdC5wYy5pbgpAQCAtMCwwICsxLDkgQEAKK2xp
YmRpcj1AQ01BS0VfSU5TVEFMTF9GVUxMX0xJQkRJUkAKK2luY2x1ZGVkaXI9QENNQUtFX0lOU1RB
TExfRlVMTF9JTkNMVURFRElSQAorCitOYW1lOiBndGVzdAorRGVzY3JpcHRpb246IEdvb2dsZVRl
c3QgKHdpdGhvdXQgbWFpbigpIGZ1bmN0aW9uKQorVmVyc2lvbjogQFBST0pFQ1RfVkVSU0lPTkAK
K1VSTDogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0CitMaWJzOiAtTCR7bGli
ZGlyfSAtbGd0ZXN0IEBDTUFLRV9USFJFQURfTElCU19JTklUQAorQ2ZsYWdzOiAtSSR7aW5jbHVk
ZWRpcn0gQEdURVNUX0hBU19QVEhSRUFEX01BQ1JPQCBAQ01BS0VfVEhSRUFEX0xJQlNfSU5JVEAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2d0ZXN0X21haW4ucGMu
aW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9ndGVzdF9tYWluLnBjLmluCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZlMjVkOWM3M2M2ODNiNjQxN2I5OWJiNzAzYzEzYWUxNmJhOGE5NTIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9ndGVzdF9tYWluLnBjLmlu
CkBAIC0wLDAgKzEsMTAgQEAKK2xpYmRpcj1AQ01BS0VfSU5TVEFMTF9GVUxMX0xJQkRJUkAKK2lu
Y2x1ZGVkaXI9QENNQUtFX0lOU1RBTExfRlVMTF9JTkNMVURFRElSQAorCitOYW1lOiBndGVzdF9t
YWluCitEZXNjcmlwdGlvbjogR29vZ2xlVGVzdCAod2l0aCBtYWluKCkgZnVuY3Rpb24pCitWZXJz
aW9uOiBAUFJPSkVDVF9WRVJTSU9OQAorVVJMOiBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dv
b2dsZXRlc3QKK1JlcXVpcmVzOiBndGVzdAorTGliczogLUwke2xpYmRpcn0gLWxndGVzdF9tYWlu
IEBDTUFLRV9USFJFQURfTElCU19JTklUQAorQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gQEdURVNU
X0hBU19QVEhSRUFEX01BQ1JPQCBAQ01BS0VfVEhSRUFEX0xJQlNfSU5JVEAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2ludGVybmFsX3V0aWxzLmNtYWtlIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvaW50ZXJuYWxfdXRpbHMuY21ha2UKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOGMxZjliYTk5Y2Y1MDU3NGY2NjlkZDdkZWJhMzI0ZGNlNDA1OTVmMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2ludGVybmFsX3V0aWxzLmNtYWtl
CkBAIC0wLDAgKzEsMzE4IEBACisjIERlZmluZXMgZnVuY3Rpb25zIGFuZCBtYWNyb3MgdXNlZnVs
IGZvciBidWlsZGluZyBHb29nbGUgVGVzdCBhbmQKKyMgR29vZ2xlIE1vY2suCisjCisjIE5vdGU6
CisjCisjIC0gVGhpcyBmaWxlIHdpbGwgYmUgcnVuIHR3aWNlIHdoZW4gYnVpbGRpbmcgR29vZ2xl
IE1vY2sgKG9uY2UgdmlhCisjICAgR29vZ2xlIFRlc3QncyBDTWFrZUxpc3RzLnR4dCwgYW5kIG9u
Y2UgdmlhIEdvb2dsZSBNb2NrJ3MpLgorIyAgIFRoZXJlZm9yZSBpdCBzaG91bGRuJ3QgaGF2ZSBh
bnkgc2lkZSBlZmZlY3RzIG90aGVyIHRoYW4gZGVmaW5pbmcKKyMgICB0aGUgZnVuY3Rpb25zIGFu
ZCBtYWNyb3MuCisjCisjIC0gVGhlIGZ1bmN0aW9ucy9tYWNyb3MgZGVmaW5lZCBpbiB0aGlzIGZp
bGUgbWF5IGRlcGVuZCBvbiBHb29nbGUKKyMgICBUZXN0IGFuZCBHb29nbGUgTW9jaydzIG9wdGlv
bigpIGRlZmluaXRpb25zLCBhbmQgdGh1cyBtdXN0IGJlCisjICAgY2FsbGVkICphZnRlciogdGhl
IG9wdGlvbnMgaGF2ZSBiZWVuIGRlZmluZWQuCisKKyMgVHdlYWtzIENNYWtlJ3MgZGVmYXVsdCBj
b21waWxlci9saW5rZXIgc2V0dGluZ3MgdG8gc3VpdCBHb29nbGUgVGVzdCdzIG5lZWRzLgorIwor
IyBUaGlzIG11c3QgYmUgYSBtYWNybygpLCBhcyBpbnNpZGUgYSBmdW5jdGlvbiBzdHJpbmcoKSBj
YW4gb25seQorIyB1cGRhdGUgdmFyaWFibGVzIGluIHRoZSBmdW5jdGlvbiBzY29wZS4KK21hY3Jv
KGZpeF9kZWZhdWx0X2NvbXBpbGVyX3NldHRpbmdzXykKKyAgaWYgKE1TVkMpCisgICAgIyBGb3Ig
TVNWQywgQ01ha2Ugc2V0cyBjZXJ0YWluIGZsYWdzIHRvIGRlZmF1bHRzIHdlIHdhbnQgdG8gb3Zl
cnJpZGUuCisgICAgIyBUaGlzIHJlcGxhY2VtZW50IGNvZGUgaXMgdGFrZW4gZnJvbSBzYW1wbGUg
aW4gdGhlIENNYWtlIFdpa2kgYXQKKyAgICAjIGh0dHBzOi8vZ2l0bGFiLmtpdHdhcmUuY29tL2Nt
YWtlL2NvbW11bml0eS93aWtpcy9GQVEjZHluYW1pYy1yZXBsYWNlLgorICAgIGZvcmVhY2ggKGZs
YWdfdmFyCisgICAgICAgICAgICAgQ01BS0VfQ1hYX0ZMQUdTIENNQUtFX0NYWF9GTEFHU19ERUJV
RyBDTUFLRV9DWFhfRkxBR1NfUkVMRUFTRQorICAgICAgICAgICAgIENNQUtFX0NYWF9GTEFHU19N
SU5TSVpFUkVMIENNQUtFX0NYWF9GTEFHU19SRUxXSVRIREVCSU5GTykKKyAgICAgIGlmIChOT1Qg
QlVJTERfU0hBUkVEX0xJQlMgQU5EIE5PVCBndGVzdF9mb3JjZV9zaGFyZWRfY3J0KQorICAgICAg
ICAjIFdoZW4gR29vZ2xlIFRlc3QgaXMgYnVpbHQgYXMgYSBzaGFyZWQgbGlicmFyeSwgaXQgc2hv
dWxkIGFsc28gdXNlCisgICAgICAgICMgc2hhcmVkIHJ1bnRpbWUgbGlicmFyaWVzLiAgT3RoZXJ3
aXNlLCBpdCBtYXkgZW5kIHVwIHdpdGggbXVsdGlwbGUKKyAgICAgICAgIyBjb3BpZXMgb2YgcnVu
dGltZSBsaWJyYXJ5IGRhdGEgaW4gZGlmZmVyZW50IG1vZHVsZXMsIHJlc3VsdGluZyBpbgorICAg
ICAgICAjIGhhcmQtdG8tZmluZCBjcmFzaGVzLiBXaGVuIGl0IGlzIGJ1aWx0IGFzIGEgc3RhdGlj
IGxpYnJhcnksIGl0IGlzCisgICAgICAgICMgcHJlZmVyYWJsZSB0byB1c2UgQ1JUIGFzIHN0YXRp
YyBsaWJyYXJpZXMsIGFzIHdlIGRvbid0IGhhdmUgdG8gcmVseQorICAgICAgICAjIG9uIENSVCBE
TExzIGJlaW5nIGF2YWlsYWJsZS4gQ01ha2UgYWx3YXlzIGRlZmF1bHRzIHRvIHVzaW5nIHNoYXJl
ZAorICAgICAgICAjIENSVCBsaWJyYXJpZXMsIHNvIHdlIG92ZXJyaWRlIHRoYXQgZGVmYXVsdCBo
ZXJlLgorICAgICAgICBzdHJpbmcoUkVQTEFDRSAiL01EIiAiLU1UIiAke2ZsYWdfdmFyfSAiJHsk
e2ZsYWdfdmFyfX0iKQorICAgICAgZW5kaWYoKQorCisgICAgICAjIFdlIHByZWZlciBtb3JlIHN0
cmljdCB3YXJuaW5nIGNoZWNraW5nIGZvciBidWlsZGluZyBHb29nbGUgVGVzdC4KKyAgICAgICMg
UmVwbGFjZXMgL1czIHdpdGggL1c0IGluIGRlZmF1bHRzLgorICAgICAgc3RyaW5nKFJFUExBQ0Ug
Ii9XMyIgIi9XNCIgJHtmbGFnX3Zhcn0gIiR7JHtmbGFnX3Zhcn19IikKKworICAgICAgIyBQcmV2
ZW50IEQ5MDI1IHdhcm5pbmcgZm9yIHRhcmdldHMgdGhhdCBoYXZlIGV4Y2VwdGlvbiBoYW5kbGlu
ZworICAgICAgIyB0dXJuZWQgb2ZmICgvRUhzLWMtIGZsYWcpLiBXaGVyZSByZXF1aXJlZCwgZXhj
ZXB0aW9ucyBhcmUgZXhwbGljaXRseQorICAgICAgIyByZS1lbmFibGVkIHVzaW5nIHRoZSBjeHhf
ZXhjZXB0aW9uX2ZsYWdzIHZhcmlhYmxlLgorICAgICAgc3RyaW5nKFJFUExBQ0UgIi9FSHNjIiAi
IiAke2ZsYWdfdmFyfSAiJHske2ZsYWdfdmFyfX0iKQorICAgIGVuZGZvcmVhY2goKQorICBlbmRp
ZigpCitlbmRtYWNybygpCisKKyMgRGVmaW5lcyB0aGUgY29tcGlsZXIvbGlua2VyIGZsYWdzIHVz
ZWQgdG8gYnVpbGQgR29vZ2xlIFRlc3QgYW5kCisjIEdvb2dsZSBNb2NrLiAgWW91IGNhbiB0d2Vh
ayB0aGVzZSBkZWZpbml0aW9ucyB0byBzdWl0IHlvdXIgbmVlZC4gIEEKKyMgdmFyaWFibGUncyB2
YWx1ZSBpcyBlbXB0eSBiZWZvcmUgaXQncyBleHBsaWNpdGx5IGFzc2lnbmVkIHRvLgorbWFjcm8o
Y29uZmlnX2NvbXBpbGVyX2FuZF9saW5rZXIpCisgICMgTm90ZTogcHRocmVhZHMgb24gTWluR1cg
aXMgbm90IHN1cHBvcnRlZCwgZXZlbiBpZiBhdmFpbGFibGUKKyAgIyBpbnN0ZWFkLCB3ZSB1c2Ug
d2luZG93cyB0aHJlYWRpbmcgcHJpbWl0aXZlcworICB1bnNldChHVEVTVF9IQVNfUFRIUkVBRCkK
KyAgaWYgKE5PVCBndGVzdF9kaXNhYmxlX3B0aHJlYWRzIEFORCBOT1QgTUlOR1cpCisgICAgIyBE
ZWZpbmVzIENNQUtFX1VTRV9QVEhSRUFEU19JTklUIGFuZCBDTUFLRV9USFJFQURfTElCU19JTklU
LgorICAgIHNldChUSFJFQURTX1BSRUZFUl9QVEhSRUFEX0ZMQUcgT04pCisgICAgZmluZF9wYWNr
YWdlKFRocmVhZHMpCisgICAgaWYgKENNQUtFX1VTRV9QVEhSRUFEU19JTklUKQorICAgICAgc2V0
KEdURVNUX0hBU19QVEhSRUFEIE9OKQorICAgIGVuZGlmKCkKKyAgZW5kaWYoKQorCisgIGZpeF9k
ZWZhdWx0X2NvbXBpbGVyX3NldHRpbmdzXygpCisgIGlmIChNU1ZDKQorICAgICMgTmV3bGluZXMg
aW5zaWRlIGZsYWdzIHZhcmlhYmxlcyBicmVhayBDTWFrZSdzIE5NYWtlIGdlbmVyYXRvci4KKyAg
ICAjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEFkZCAtUlRDcyBhbmQgLVJUQ3UgdG8gZGVidWcg
YnVpbGRzLgorICAgIHNldChjeHhfYmFzZV9mbGFncyAiLUdTIC1XNCAtV1ggLXdkNDI1MSAtd2Q0
Mjc1IC1ub2xvZ28gLUogLVppIikKKyAgICBpZiAoTVNWQ19WRVJTSU9OIExFU1MgMTQwMCkgICMg
MTQwMCBpcyBWaXN1YWwgU3R1ZGlvIDIwMDUKKyAgICAgICMgU3VwcHJlc3Mgc3B1cmlvdXMgd2Fy
bmluZ3MgTVNWQyA3LjEgc29tZXRpbWVzIGlzc3Vlcy4KKyAgICAgICMgRm9yY2luZyB2YWx1ZSB0
byBib29sLgorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtd2Q0
ODAwIikKKyAgICAgICMgQ29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVyYXRvciBj
b3VsZCBub3QgYmUgZ2VuZXJhdGVkLgorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9i
YXNlX2ZsYWdzfSAtd2Q0NTExIC13ZDQ1MTIiKQorICAgICAgIyBDb21wYXRpYmlsaXR5IHdhcm5p
bmdzIG5vdCBhcHBsaWNhYmxlIHRvIEdvb2dsZSBUZXN0LgorICAgICAgIyBSZXNvbHZlZCBvdmVy
bG9hZCB3YXMgZm91bmQgYnkgYXJndW1lbnQtZGVwZW5kZW50IGxvb2t1cC4KKyAgICAgIHNldChj
eHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLXdkNDY3NSIpCisgICAgZW5kaWYoKQor
ICAgIGlmIChNU1ZDX1ZFUlNJT04gTEVTUyAxNTAwKSAgIyAxNTAwIGlzIFZpc3VhbCBTdHVkaW8g
MjAwOAorICAgICAgIyBDb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50LgorICAgICAg
IyBXaGVuIGNvbXBpbGluZyB3aXRoIC9XNCwgd2UgZ2V0IHNldmVyYWwgaW5zdGFuY2VzIG9mIEM0
MTI3CisgICAgICAjIChDb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50KS4gSW4gb3Vy
IGNvZGUsIHdlIGRpc2FibGUgdGhhdAorICAgICAgIyB3YXJuaW5nIG9uIGEgY2FzZS1ieS1jYXNl
IGJhc2lzLiBIb3dldmVyLCBvbiBWaXN1YWwgU3R1ZGlvIDIwMDUsCisgICAgICAjIHRoZSB3YXJu
aW5nIGZpcmVzIG9uIHN0ZDo6bGlzdC4gVGhlcmVmb3JlIG9uIHRoYXQgY29tcGlsZXIgYW5kIGVh
cmxpZXIsCisgICAgICAjIHdlIGRpc2FibGUgdGhlIHdhcm5pbmcgcHJvamVjdC13aWRlLgorICAg
ICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtd2Q0MTI3IikKKyAgICBl
bmRpZigpCisgICAgaWYgKE5PVCAoTVNWQ19WRVJTSU9OIExFU1MgMTcwMCkpICAjIDE3MDAgaXMg
VmlzdWFsIFN0dWRpbyAyMDEyLgorICAgICAgIyBTdXBwcmVzcyAidW5yZWFjaGFibGUgY29kZSIg
d2FybmluZyBvbiBWUyAyMDEyIGFuZCBsYXRlci4KKyAgICAgICMgaHR0cDovL3N0YWNrb3ZlcmZs
b3cuY29tL3F1ZXN0aW9ucy8zMjMyNjY5IGV4cGxhaW5zIHRoZSBpc3N1ZS4KKyAgICAgIHNldChj
eHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLXdkNDcwMiIpCisgICAgZW5kaWYoKQor
CisgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtRF9VTklDT0RFIC1E
VU5JQ09ERSAtRFdJTjMyIC1EX1dJTjMyIikKKyAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4
X2Jhc2VfZmxhZ3N9IC1EU1RSSUNUIC1EV0lOMzJfTEVBTl9BTkRfTUVBTiIpCisgICAgc2V0KGN4
eF9leGNlcHRpb25fZmxhZ3MgIi1FSHNjIC1EX0hBU19FWENFUFRJT05TPTEiKQorICAgIHNldChj
eHhfbm9fZXhjZXB0aW9uX2ZsYWdzICItRUhzLWMtIC1EX0hBU19FWENFUFRJT05TPTAiKQorICAg
IHNldChjeHhfbm9fcnR0aV9mbGFncyAiLUdSLSIpCisgIGVsc2VpZiAoQ01BS0VfQ09NUElMRVJf
SVNfR05VQ1hYKQorICAgIHNldChjeHhfYmFzZV9mbGFncyAiLVdhbGwgLVdzaGFkb3cgLVdlcnJv
ciIpCisgICAgaWYoTk9UIENNQUtFX0NYWF9DT01QSUxFUl9WRVJTSU9OIFZFUlNJT05fTEVTUyA3
LjAuMCkKKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLVduby1l
cnJvcj1kYW5nbGluZy1lbHNlIikKKyAgICBlbmRpZigpCisgICAgc2V0KGN4eF9leGNlcHRpb25f
ZmxhZ3MgIi1mZXhjZXB0aW9ucyIpCisgICAgc2V0KGN4eF9ub19leGNlcHRpb25fZmxhZ3MgIi1m
bm8tZXhjZXB0aW9ucyIpCisgICAgIyBVbnRpbCB2ZXJzaW9uIDQuMy4yLCBHQ0MgZG9lc24ndCBk
ZWZpbmUgYSBtYWNybyB0byBpbmRpY2F0ZQorICAgICMgd2hldGhlciBSVFRJIGlzIGVuYWJsZWQu
ICBUaGVyZWZvcmUgd2UgZGVmaW5lIEdURVNUX0hBU19SVFRJCisgICAgIyBleHBsaWNpdGx5Lgor
ICAgIHNldChjeHhfbm9fcnR0aV9mbGFncyAiLWZuby1ydHRpIC1ER1RFU1RfSEFTX1JUVEk9MCIp
CisgICAgc2V0KGN4eF9zdHJpY3RfZmxhZ3MKKyAgICAgICItV2V4dHJhIC1Xbm8tdW51c2VkLXBh
cmFtZXRlciAtV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIikKKyAgZWxzZWlmIChDTUFL
RV9DWFhfQ09NUElMRVJfSUQgU1RSRVFVQUwgIlN1blBybyIpCisgICAgc2V0KGN4eF9leGNlcHRp
b25fZmxhZ3MgIi1mZWF0dXJlcz1leGNlcHQiKQorICAgICMgU3VuIFBybyBkb2Vzbid0IHByb3Zp
ZGUgbWFjcm9zIHRvIGluZGljYXRlIHdoZXRoZXIgZXhjZXB0aW9ucyBhbmQKKyAgICAjIFJUVEkg
YXJlIGVuYWJsZWQsIHNvIHdlIGRlZmluZSBHVEVTVF9IQVNfKiBleHBsaWNpdGx5LgorICAgIHNl
dChjeHhfbm9fZXhjZXB0aW9uX2ZsYWdzICItZmVhdHVyZXM9bm8lZXhjZXB0IC1ER1RFU1RfSEFT
X0VYQ0VQVElPTlM9MCIpCisgICAgc2V0KGN4eF9ub19ydHRpX2ZsYWdzICItZmVhdHVyZXM9bm8l
cnR0aSAtREdURVNUX0hBU19SVFRJPTAiKQorICBlbHNlaWYgKENNQUtFX0NYWF9DT01QSUxFUl9J
RCBTVFJFUVVBTCAiVmlzdWFsQWdlIiBPUgorICAgICAgQ01BS0VfQ1hYX0NPTVBJTEVSX0lEIFNU
UkVRVUFMICJYTCIpCisgICAgIyBDTWFrZSAyLjggY2hhbmdlcyBWaXN1YWwgQWdlJ3MgY29tcGls
ZXIgSUQgdG8gIlhMIi4KKyAgICBzZXQoY3h4X2V4Y2VwdGlvbl9mbGFncyAiLXFlaCIpCisgICAg
c2V0KGN4eF9ub19leGNlcHRpb25fZmxhZ3MgIi1xbm9laCIpCisgICAgIyBVbnRpbCB2ZXJzaW9u
IDkuMCwgVmlzdWFsIEFnZSBkb2Vzbid0IGRlZmluZSBhIG1hY3JvIHRvIGluZGljYXRlCisgICAg
IyB3aGV0aGVyIFJUVEkgaXMgZW5hYmxlZC4gIFRoZXJlZm9yZSB3ZSBkZWZpbmUgR1RFU1RfSEFT
X1JUVEkKKyAgICAjIGV4cGxpY2l0bHkuCisgICAgc2V0KGN4eF9ub19ydHRpX2ZsYWdzICItcW5v
cnR0aSAtREdURVNUX0hBU19SVFRJPTAiKQorICBlbHNlaWYgKENNQUtFX0NYWF9DT01QSUxFUl9J
RCBTVFJFUVVBTCAiSFAiKQorICAgIHNldChjeHhfYmFzZV9mbGFncyAiLUFBIC1tdCIpCisgICAg
c2V0KGN4eF9leGNlcHRpb25fZmxhZ3MgIi1ER1RFU1RfSEFTX0VYQ0VQVElPTlM9MSIpCisgICAg
c2V0KGN4eF9ub19leGNlcHRpb25fZmxhZ3MgIitub2VoIC1ER1RFU1RfSEFTX0VYQ0VQVElPTlM9
MCIpCisgICAgIyBSVFRJIGNhbiBub3QgYmUgZGlzYWJsZWQgaW4gSFAgYUNDIGNvbXBpbGVyLgor
ICAgIHNldChjeHhfbm9fcnR0aV9mbGFncyAiIikKKyAgZW5kaWYoKQorCisgICMgVGhlIHB0aHJl
YWRzIGxpYnJhcnkgaXMgYXZhaWxhYmxlIGFuZCBhbGxvd2VkPworICBpZiAoREVGSU5FRCBHVEVT
VF9IQVNfUFRIUkVBRCkKKyAgICBzZXQoR1RFU1RfSEFTX1BUSFJFQURfTUFDUk8gIi1ER1RFU1Rf
SEFTX1BUSFJFQUQ9MSIpCisgIGVsc2UoKQorICAgIHNldChHVEVTVF9IQVNfUFRIUkVBRF9NQUNS
TyAiLURHVEVTVF9IQVNfUFRIUkVBRD0wIikKKyAgZW5kaWYoKQorICBzZXQoY3h4X2Jhc2VfZmxh
Z3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9ICR7R1RFU1RfSEFTX1BUSFJFQURfTUFDUk99IikKKworICAj
IEZvciBidWlsZGluZyBndGVzdCdzIG93biB0ZXN0cyBhbmQgc2FtcGxlcy4KKyAgc2V0KGN4eF9l
eGNlcHRpb24gIiR7Y3h4X2Jhc2VfZmxhZ3N9ICR7Y3h4X2V4Y2VwdGlvbl9mbGFnc30iKQorICBz
ZXQoY3h4X25vX2V4Y2VwdGlvbgorICAgICIke0NNQUtFX0NYWF9GTEFHU30gJHtjeHhfYmFzZV9m
bGFnc30gJHtjeHhfbm9fZXhjZXB0aW9uX2ZsYWdzfSIpCisgIHNldChjeHhfZGVmYXVsdCAiJHtj
eHhfZXhjZXB0aW9ufSIpCisgIHNldChjeHhfbm9fcnR0aSAiJHtjeHhfZGVmYXVsdH0gJHtjeHhf
bm9fcnR0aV9mbGFnc30iKQorICBzZXQoY3h4X3VzZV9vd25fdHVwbGUgIiR7Y3h4X2RlZmF1bHR9
IC1ER1RFU1RfVVNFX09XTl9UUjFfVFVQTEU9MSIpCisKKyAgIyBGb3IgYnVpbGRpbmcgdGhlIGd0
ZXN0IGxpYnJhcmllcy4KKyAgc2V0KGN4eF9zdHJpY3QgIiR7Y3h4X2RlZmF1bHR9ICR7Y3h4X3N0
cmljdF9mbGFnc30iKQorZW5kbWFjcm8oKQorCisjIERlZmluZXMgdGhlIGd0ZXN0ICYgZ3Rlc3Rf
bWFpbiBsaWJyYXJpZXMuICBVc2VyIHRlc3RzIHNob3VsZCBsaW5rCisjIHdpdGggb25lIG9mIHRo
ZW0uCitmdW5jdGlvbihjeHhfbGlicmFyeV93aXRoX3R5cGUgbmFtZSB0eXBlIGN4eF9mbGFncykK
KyAgIyB0eXBlIGNhbiBiZSBlaXRoZXIgU1RBVElDIG9yIFNIQVJFRCB0byBkZW5vdGUgYSBzdGF0
aWMgb3Igc2hhcmVkIGxpYnJhcnkuCisgICMgQVJHTiByZWZlcnMgdG8gYWRkaXRpb25hbCBhcmd1
bWVudHMgYWZ0ZXIgJ2N4eF9mbGFncycuCisgIGFkZF9saWJyYXJ5KCR7bmFtZX0gJHt0eXBlfSAk
e0FSR059KQorICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtuYW1lfQorICAgIFBST1BFUlRJRVMK
KyAgICBDT01QSUxFX0ZMQUdTICIke2N4eF9mbGFnc30iKQorICAjIEdlbmVyYXRlIGRlYnVnIGxp
YnJhcnkgbmFtZSB3aXRoIGEgcG9zdGZpeC4KKyAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7bmFt
ZX0KKyAgICBQUk9QRVJUSUVTCisgICAgREVCVUdfUE9TVEZJWCAiZCIpCisgIGlmIChCVUlMRF9T
SEFSRURfTElCUyBPUiB0eXBlIFNUUkVRVUFMICJTSEFSRUQiKQorICAgIHNldF90YXJnZXRfcHJv
cGVydGllcygke25hbWV9CisgICAgICBQUk9QRVJUSUVTCisgICAgICBDT01QSUxFX0RFRklOSVRJ
T05TICJHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJBUlk9MSIpCisgICAgaWYgKE5PVCAiJHtDTUFL
RV9WRVJTSU9OfSIgVkVSU0lPTl9MRVNTICIyLjguMTEiKQorICAgICAgdGFyZ2V0X2NvbXBpbGVf
ZGVmaW5pdGlvbnMoJHtuYW1lfSBJTlRFUkZBQ0UKKyAgICAgICAgJDxJTlNUQUxMX0lOVEVSRkFD
RTpHVEVTVF9MSU5LRURfQVNfU0hBUkVEX0xJQlJBUlk9MT4pCisgICAgZW5kaWYoKQorICBlbmRp
ZigpCisgIGlmIChERUZJTkVEIEdURVNUX0hBU19QVEhSRUFEKQorICAgIGlmICgiJHtDTUFLRV9W
RVJTSU9OfSIgVkVSU0lPTl9MRVNTICIzLjEuMCIpCisgICAgICBzZXQodGhyZWFkc19zcGVjICR7
Q01BS0VfVEhSRUFEX0xJQlNfSU5JVH0pCisgICAgZWxzZSgpCisgICAgICBzZXQodGhyZWFkc19z
cGVjIFRocmVhZHM6OlRocmVhZHMpCisgICAgZW5kaWYoKQorICAgIHRhcmdldF9saW5rX2xpYnJh
cmllcygke25hbWV9IFBVQkxJQyAke3RocmVhZHNfc3BlY30pCisgIGVuZGlmKCkKK2VuZGZ1bmN0
aW9uKCkKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIEhlbHBlciBmdW5jdGlvbnMgZm9yIGNyZWF0
aW5nIGJ1aWxkIHRhcmdldHMuCisKK2Z1bmN0aW9uKGN4eF9zaGFyZWRfbGlicmFyeSBuYW1lIGN4
eF9mbGFncykKKyAgY3h4X2xpYnJhcnlfd2l0aF90eXBlKCR7bmFtZX0gU0hBUkVEICIke2N4eF9m
bGFnc30iICR7QVJHTn0pCitlbmRmdW5jdGlvbigpCisKK2Z1bmN0aW9uKGN4eF9saWJyYXJ5IG5h
bWUgY3h4X2ZsYWdzKQorICBjeHhfbGlicmFyeV93aXRoX3R5cGUoJHtuYW1lfSAiIiAiJHtjeHhf
ZmxhZ3N9IiAke0FSR059KQorZW5kZnVuY3Rpb24oKQorCisjIGN4eF9leGVjdXRhYmxlX3dpdGhf
ZmxhZ3MobmFtZSBjeHhfZmxhZ3MgbGlicyBzcmNzLi4uKQorIworIyBjcmVhdGVzIGEgbmFtZWQg
QysrIGV4ZWN1dGFibGUgdGhhdCBkZXBlbmRzIG9uIHRoZSBnaXZlbiBsaWJyYXJpZXMgYW5kCisj
IGlzIGJ1aWx0IGZyb20gdGhlIGdpdmVuIHNvdXJjZSBmaWxlcyB3aXRoIHRoZSBnaXZlbiBjb21w
aWxlciBmbGFncy4KK2Z1bmN0aW9uKGN4eF9leGVjdXRhYmxlX3dpdGhfZmxhZ3MgbmFtZSBjeHhf
ZmxhZ3MgbGlicykKKyAgYWRkX2V4ZWN1dGFibGUoJHtuYW1lfSAke0FSR059KQorICBpZiAoTVNW
QyBBTkQgKE5PVCAoTVNWQ19WRVJTSU9OIExFU1MgMTcwMCkpKSAgIyAxNzAwIGlzIFZpc3VhbCBT
dHVkaW8gMjAxMi4KKyAgICAjIEJpZ09iaiByZXF1aXJlZCBmb3IgdGVzdHMuCisgICAgc2V0KGN4
eF9mbGFncyAiJHtjeHhfZmxhZ3N9IC1iaWdvYmoiKQorICBlbmRpZigpCisgIGlmIChjeHhfZmxh
Z3MpCisgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7bmFtZX0KKyAgICAgIFBST1BFUlRJRVMK
KyAgICAgIENPTVBJTEVfRkxBR1MgIiR7Y3h4X2ZsYWdzfSIpCisgIGVuZGlmKCkKKyAgaWYgKEJV
SUxEX1NIQVJFRF9MSUJTKQorICAgIHNldF90YXJnZXRfcHJvcGVydGllcygke25hbWV9CisgICAg
ICBQUk9QRVJUSUVTCisgICAgICBDT01QSUxFX0RFRklOSVRJT05TICJHVEVTVF9MSU5LRURfQVNf
U0hBUkVEX0xJQlJBUlk9MSIpCisgIGVuZGlmKCkKKyAgIyBUbyBzdXBwb3J0IG1peGluZyBsaW5r
aW5nIGluIHN0YXRpYyBhbmQgZHluYW1pYyBsaWJyYXJpZXMsIGxpbmsgZWFjaAorICAjIGxpYnJh
cnkgaW4gd2l0aCBhbiBleHRyYSBjYWxsIHRvIHRhcmdldF9saW5rX2xpYnJhcmllcy4KKyAgZm9y
ZWFjaCAobGliICIke2xpYnN9IikKKyAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtuYW1lfSAk
e2xpYn0pCisgIGVuZGZvcmVhY2goKQorZW5kZnVuY3Rpb24oKQorCisjIGN4eF9leGVjdXRhYmxl
KG5hbWUgZGlyIGxpYiBzcmNzLi4uKQorIworIyBjcmVhdGVzIGEgbmFtZWQgdGFyZ2V0IHRoYXQg
ZGVwZW5kcyBvbiB0aGUgZ2l2ZW4gbGlicyBhbmQgaXMgYnVpbHQKKyMgZnJvbSB0aGUgZ2l2ZW4g
c291cmNlIGZpbGVzLiAgZGlyL25hbWUuY2MgaXMgaW1wbGljaXRseSBpbmNsdWRlZCBpbgorIyB0
aGUgc291cmNlIGZpbGUgbGlzdC4KK2Z1bmN0aW9uKGN4eF9leGVjdXRhYmxlIG5hbWUgZGlyIGxp
YnMpCisgIGN4eF9leGVjdXRhYmxlX3dpdGhfZmxhZ3MoCisgICAgJHtuYW1lfSAiJHtjeHhfZGVm
YXVsdH0iICIke2xpYnN9IiAiJHtkaXJ9LyR7bmFtZX0uY2MiICR7QVJHTn0pCitlbmRmdW5jdGlv
bigpCisKKyMgU2V0cyBQWVRIT05JTlRFUlBfRk9VTkQgYW5kIFBZVEhPTl9FWEVDVVRBQkxFLgor
ZmluZF9wYWNrYWdlKFB5dGhvbkludGVycCkKKworIyBjeHhfdGVzdF93aXRoX2ZsYWdzKG5hbWUg
Y3h4X2ZsYWdzIGxpYnMgc3Jjcy4uLikKKyMKKyMgY3JlYXRlcyBhIG5hbWVkIEMrKyB0ZXN0IHRo
YXQgZGVwZW5kcyBvbiB0aGUgZ2l2ZW4gbGlicyBhbmQgaXMgYnVpbHQKKyMgZnJvbSB0aGUgZ2l2
ZW4gc291cmNlIGZpbGVzIHdpdGggdGhlIGdpdmVuIGNvbXBpbGVyIGZsYWdzLgorZnVuY3Rpb24o
Y3h4X3Rlc3Rfd2l0aF9mbGFncyBuYW1lIGN4eF9mbGFncyBsaWJzKQorICBjeHhfZXhlY3V0YWJs
ZV93aXRoX2ZsYWdzKCR7bmFtZX0gIiR7Y3h4X2ZsYWdzfSIgIiR7bGlic30iICR7QVJHTn0pCisg
IGFkZF90ZXN0KE5BTUUgJHtuYW1lfSBDT01NQU5EICR7bmFtZX0pCitlbmRmdW5jdGlvbigpCisK
KyMgY3h4X3Rlc3QobmFtZSBsaWJzIHNyY3MuLi4pCisjCisjIGNyZWF0ZXMgYSBuYW1lZCB0ZXN0
IHRhcmdldCB0aGF0IGRlcGVuZHMgb24gdGhlIGdpdmVuIGxpYnMgYW5kIGlzCisjIGJ1aWx0IGZy
b20gdGhlIGdpdmVuIHNvdXJjZSBmaWxlcy4gIFVubGlrZSBjeHhfdGVzdF93aXRoX2ZsYWdzLAor
IyB0ZXN0L25hbWUuY2MgaXMgYWxyZWFkeSBpbXBsaWNpdGx5IGluY2x1ZGVkIGluIHRoZSBzb3Vy
Y2UgZmlsZSBsaXN0LgorZnVuY3Rpb24oY3h4X3Rlc3QgbmFtZSBsaWJzKQorICBjeHhfdGVzdF93
aXRoX2ZsYWdzKCIke25hbWV9IiAiJHtjeHhfZGVmYXVsdH0iICIke2xpYnN9IgorICAgICJ0ZXN0
LyR7bmFtZX0uY2MiICR7QVJHTn0pCitlbmRmdW5jdGlvbigpCisKKyMgcHlfdGVzdChuYW1lKQor
IworIyBjcmVhdGVzIGEgUHl0aG9uIHRlc3Qgd2l0aCB0aGUgZ2l2ZW4gbmFtZSB3aG9zZSBtYWlu
IG1vZHVsZSBpcyBpbgorIyB0ZXN0L25hbWUucHkuICBJdCBkb2VzIG5vdGhpbmcgaWYgUHl0aG9u
IGlzIG5vdCBpbnN0YWxsZWQuCitmdW5jdGlvbihweV90ZXN0IG5hbWUpCisgIGlmIChQWVRIT05J
TlRFUlBfRk9VTkQpCisgICAgaWYgKCR7Q01BS0VfTUFKT1JfVkVSU0lPTn0uJHtDTUFLRV9NSU5P
Ul9WRVJTSU9OfSBHUkVBVEVSIDMuMSkKKyAgICAgIGlmIChDTUFLRV9DT05GSUdVUkFUSU9OX1RZ
UEVTKQorCSMgTXVsdGktY29uZmlndXJhdGlvbiBidWlsZCBnZW5lcmF0b3JzIGFzIGZvciBWaXN1
YWwgU3R1ZGlvIHNhdmUKKwkjIG91dHB1dCBpbiBhIHN1YmRpcmVjdG9yeSBvZiBDTUFLRV9DVVJS
RU5UX0JJTkFSWV9ESVIgKERlYnVnLAorCSMgUmVsZWFzZSBldGMuKSwgc28gd2UgaGF2ZSB0byBw
cm92aWRlIGl0IGhlcmUuCisgICAgICAgIGFkZF90ZXN0KAorICAgICAgICAgIE5BTUUgJHtuYW1l
fQorICAgICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9L3Rlc3QvJHtuYW1lfS5weQorICAgICAgICAgICAgICAtLWJ1aWxkX2Rpcj0k
e0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vJDxDT05GSUc+ICR7QVJHTn0pCisgICAgICBlbHNl
IChDTUFLRV9DT05GSUdVUkFUSU9OX1RZUEVTKQorCSMgU2luZ2xlLWNvbmZpZ3VyYXRpb24gYnVp
bGQgZ2VuZXJhdG9ycyBsaWtlIE1ha2VmaWxlIGdlbmVyYXRvcnMKKwkjIGRvbid0IGhhdmUgc3Vi
ZGlycyBiZWxvdyBDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVIuCisgICAgICAgIGFkZF90ZXN0KAor
ICAgICAgICAgIE5BTUUgJHtuYW1lfQorICAgICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VU
QUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3Rlc3QvJHtuYW1lfS5weQorICAgICAg
ICAgICAgICAtLWJ1aWxkX2Rpcj0ke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0gJHtBUkdOfSkK
KyAgICAgIGVuZGlmIChDTUFLRV9DT05GSUdVUkFUSU9OX1RZUEVTKQorICAgIGVsc2UgKCR7Q01B
S0VfTUFKT1JfVkVSU0lPTn0uJHtDTUFLRV9NSU5PUl9WRVJTSU9OfSBHUkVBVEVSIDMuMSkKKyAg
ICAgICMgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9IGlzIGtub3duIGF0IGNvbmZpZ3VyYXRp
b24gdGltZSwgc28gd2UgY2FuCisgICAgICAjIGRpcmVjdGx5IGJpbmQgaXQgZnJvbSBjbWFrZS4g
JHtDVEVTVF9DT05GSUdVUkFUSU9OX1RZUEV9IGlzIGtub3duCisgICAgICAjIG9ubHkgYXQgY3Rl
c3QgcnVudGltZSAoYnkgY2FsbGluZyBjdGVzdCAtYyA8Q29uZmlndXJhdGlvbj4pLCBzbworICAg
ICAgIyB3ZSBoYXZlIHRvIGVzY2FwZSAkIHRvIGRlbGF5IHZhcmlhYmxlIHN1YnN0aXR1dGlvbiBo
ZXJlLgorICAgICAgYWRkX3Rlc3QoCisgICAgICAgICR7bmFtZX0KKyAgICAgICAgJHtQWVRIT05f
RVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3Rlc3QvJHtuYW1lfS5weQor
ICAgICAgICAgIC0tYnVpbGRfZGlyPSR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9cJHtDVEVT
VF9DT05GSUdVUkFUSU9OX1RZUEV9ICR7QVJHTn0pCisgICAgZW5kaWYgKCR7Q01BS0VfTUFKT1Jf
VkVSU0lPTn0uJHtDTUFLRV9NSU5PUl9WRVJTSU9OfSBHUkVBVEVSIDMuMSkKKyAgZW5kaWYoUFlU
SE9OSU5URVJQX0ZPVU5EKQorZW5kZnVuY3Rpb24oKQorCisjIGluc3RhbGxfcHJvamVjdCh0YXJn
ZXRzLi4uKQorIworIyBJbnN0YWxscyB0aGUgc3BlY2lmaWVkIHRhcmdldHMgYW5kIGNvbmZpZ3Vy
ZXMgdGhlIGFzc29jaWF0ZWQgcGtnY29uZmlnIGZpbGVzLgorZnVuY3Rpb24oaW5zdGFsbF9wcm9q
ZWN0KQorICBpZihJTlNUQUxMX0dURVNUKQorICAgIGluc3RhbGwoRElSRUNUT1JZICIke1BST0pF
Q1RfU09VUkNFX0RJUn0vaW5jbHVkZS8iCisgICAgICBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNU
QUxMX0lOQ0xVREVESVJ9IikKKyAgICAjIEluc3RhbGwgdGhlIHByb2plY3QgdGFyZ2V0cy4KKyAg
ICBpbnN0YWxsKFRBUkdFVFMgJHtBUkdOfQorICAgICAgRVhQT1JUICR7dGFyZ2V0c19leHBvcnRf
bmFtZX0KKyAgICAgIFJVTlRJTUUgREVTVElOQVRJT04gIiR7Q01BS0VfSU5TVEFMTF9CSU5ESVJ9
IgorICAgICAgQVJDSElWRSBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0iCisg
ICAgICBMSUJSQVJZIERFU1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfTElCRElSfSIpCisgICAg
IyBDb25maWd1cmUgYW5kIGluc3RhbGwgcGtnY29uZmlnIGZpbGVzLgorICAgIGZvcmVhY2godCAk
e0FSR059KQorICAgICAgc2V0KGNvbmZpZ3VyZWRfcGMgIiR7Z2VuZXJhdGVkX2Rpcn0vJHt0fS5w
YyIpCisgICAgICBjb25maWd1cmVfZmlsZSgiJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2NtYWtlLyR7
dH0ucGMuaW4iCisgICAgICAgICIke2NvbmZpZ3VyZWRfcGN9IiBAT05MWSkKKyAgICAgIGluc3Rh
bGwoRklMRVMgIiR7Y29uZmlndXJlZF9wY30iCisgICAgICAgIERFU1RJTkFUSU9OICIke0NNQUtF
X0lOU1RBTExfTElCRElSfS9wa2djb25maWciKQorICAgIGVuZGZvcmVhY2goKQorICBlbmRpZigp
CitlbmRmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb25m
aWd1cmUuYWMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb25maWd1cmUuYWMKaW5kZXggMWI5
MTIzNzQ2MWUzOWZmNjFiNjMwZjNlMDE5YWRmZWVlYjc4M2FlNi4uMjU0YzhjNGIzMTg4NWQyNTcx
ZmEyMzAwYjYzMWU4YmY5ZDk1YWUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvY29uZmlndXJlLmFjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NvbmZpZ3VyZS5h
YwpAQCAtNSwxMyArNSwxNCBAQCBtNF9pbmNsdWRlKG00L2FjeF9wdGhyZWFkLm00KQogIyAiWzEu
MC4xXSIpLiBJdCBhbHNvIGFzdW1lcyB0aGF0IHRoZXJlIHdvbid0IGJlIGFueSBjbG9zaW5nIHBh
cmVudGhlc2lzCiAjIGJldHdlZW4gIkFDX0lOSVQoIiBhbmQgdGhlIGNsb3NpbmcgIikiIGluY2x1
ZGluZyBjb21tZW50cyBhbmQgc3RyaW5ncy4KIEFDX0lOSVQoW0dvb2dsZSBDKysgVGVzdGluZyBG
cmFtZXdvcmtdLAotICAgICAgICBbMS41LjBdLAorICAgICAgICBbMS44LjBdLAogICAgICAgICBb
Z29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tXSwKICAgICAgICAgW2d0ZXN0XSkK
IAogIyBQcm92aWRlIHZhcmlvdXMgb3B0aW9ucyB0byBpbml0aWFsaXplIHRoZSBBdXRvY29uZiBh
bmQgY29uZmlndXJlIHByb2Nlc3Nlcy4KIEFDX1BSRVJFUShbMi41OV0pCi1BQ19DT05GSUdfU1JD
RElSKFsuL0NPUFlJTkddKQorQUNfQ09ORklHX1NSQ0RJUihbLi9MSUNFTlNFXSkKK0FDX0NPTkZJ
R19NQUNST19ESVIoW200XSkKIEFDX0NPTkZJR19BVVhfRElSKFtidWlsZC1hdXhdKQogQUNfQ09O
RklHX0hFQURFUlMoW2J1aWxkLWF1eC9jb25maWcuaF0pCiBBQ19DT05GSUdfRklMRVMoW01ha2Vm
aWxlXSkKQEAgLTU0LDcgKzU1LDcgQEAgQVNfSUYoW3Rlc3QgIngkd2l0aF9wdGhyZWFkcyIgIT0g
InhubyJdLAogICAgICAgICAgICAgICAgW0FDX01TR19GQUlMVVJFKAogICAgICAgICAgICAgICAg
ICBbLS13aXRoLXB0aHJlYWRzIHdhcyBzcGVjaWZpZWQsIGJ1dCB1bmFibGUgdG8gYmUgdXNlZF0p
XSldKQogICAgICAgIGhhdmVfcHRocmVhZHM9IiRhY3hfcHRocmVhZF9vayJdKQotQU1fQ09ORElU
SU9OQUwoW0hBVkVfUFRIUkVBRFNdLFt0ZXN0ICJ4JGhhdmVfcHRocmVhZHMiID09ICJ4eWVzIl0p
CitBTV9DT05ESVRJT05BTChbSEFWRV9QVEhSRUFEU10sW3Rlc3QgIngkaGF2ZV9wdGhyZWFkcyIg
PSAieHllcyJdKQogQUNfU1VCU1QoUFRIUkVBRF9DRkxBR1MpCiBBQ19TVUJTVChQVEhSRUFEX0xJ
QlMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvUGtnY29uZmln
Lm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9Qa2djb25maWcubWQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTc2MTI4OTRkMmEzYzhlYWRiNDQyYzU1ODc4MDRmYjc3ODVlYWE3MQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvUGtnY29uZmlnLm1kCkBAIC0wLDAg
KzEsMTQ2IEBACisjIyBVc2luZyBHb29nbGVUZXN0IGZyb20gdmFyaW91cyBidWlsZCBzeXN0ZW1z
ICMjCisKK0dvb2dsZVRlc3QgY29tZXMgd2l0aCBwa2ctY29uZmlnIGZpbGVzIHRoYXQgY2FuIGJl
IHVzZWQgdG8gZGV0ZXJtaW5lIGFsbAorbmVjZXNzYXJ5IGZsYWdzIGZvciBjb21waWxpbmcgYW5k
IGxpbmtpbmcgdG8gR29vZ2xlVGVzdCAoYW5kIEdvb2dsZU1vY2spLgorUGtnLWNvbmZpZyBpcyBh
IHN0YW5kYXJkaXNlZCBwbGFpbi10ZXh0IGZvcm1hdCBjb250YWluaW5nCisKKyAgKiB0aGUgaW5j
bHVkZWRpciAoLUkpIHBhdGgKKyAgKiBuZWNlc3NhcnkgbWFjcm8gKC1EKSBkZWZpbml0aW9ucwor
ICAqIGZ1cnRoZXIgcmVxdWlyZWQgZmxhZ3MgKC1wdGhyZWFkKQorICAqIHRoZSBsaWJyYXJ5ICgt
TCkgcGF0aAorICAqIHRoZSBsaWJyYXJ5ICgtbCkgdG8gbGluayB0bworCitBbGwgY3VycmVudCBi
dWlsZCBzeXN0ZW1zIHN1cHBvcnQgcGtnLWNvbmZpZyBpbiBvbmUgd2F5IG9yIGFub3RoZXIuIEZv
cgorYWxsIGV4YW1wbGVzIGhlcmUgd2UgYXNzdW1lIHlvdSB3YW50IHRvIGNvbXBpbGUgdGhlIHNh
bXBsZQorYHNhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jY2AuCisKKworIyMjIENNYWtlICMjIwor
CitVc2luZyBgcGtnLWNvbmZpZ2AgaW4gQ01ha2UgaXMgZmFpcmx5IGVhc3k6CisKK2BgYAorY21h
a2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDMuMCkKKworY21ha2VfcG9saWN5KFNFVCBDTVAw
MDQ4IE5FVykKK3Byb2plY3QobXlfZ3Rlc3RfcGtnY29uZmlnIFZFUlNJT04gMC4wLjEgTEFOR1VB
R0VTIENYWCkKKworZmluZF9wYWNrYWdlKFBrZ0NvbmZpZykKK3BrZ19zZWFyY2hfbW9kdWxlKEdU
RVNUIFJFUVVJUkVEIGd0ZXN0X21haW4pCisKK2FkZF9leGVjdXRhYmxlKHRlc3RhcHAgc2FtcGxl
cy9zYW1wbGUzX3VuaXR0ZXN0LmNjKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzKHRlc3RhcHAgJHtH
VEVTVF9MREZMQUdTfSkKK3RhcmdldF9jb21waWxlX29wdGlvbnModGVzdGFwcCBQVUJMSUMgJHtH
VEVTVF9DRkxBR1N9KQorCitpbmNsdWRlKENUZXN0KQorYWRkX3Rlc3QoZmlyc3RfYW5kX29ubHlf
dGVzdCB0ZXN0YXBwKQorYGBgCisKK0l0IGlzIGdlbmVyYWxseSByZWNvbW1lbmRlZCB0aGF0IHlv
dSB1c2UgYHRhcmdldF9jb21waWxlX29wdGlvbnNgICsgYF9DRkxBR1NgCitvdmVyIGB0YXJnZXRf
aW5jbHVkZV9kaXJlY3Rvcmllc2AgKyBgX0lOQ0xVREVfRElSU2AgYXMgdGhlIGZvcm1lciBpbmNs
dWRlcyBub3QKK2p1c3QgLUkgZmxhZ3MgKEdvb2dsZVRlc3QgbWlnaHQgcmVxdWlyZSBhIG1hY3Jv
IGluZGljYXRpbmcgdG8gaW50ZXJuYWwgaGVhZGVycwordGhhdCBhbGwgbGlicmFyaWVzIGhhdmUg
YmVlbiBjb21waWxlZCB3aXRoIHRocmVhZGluZyBlbmFibGVkLiBJbiBhZGRpdGlvbiwKK0dvb2ds
ZVRlc3QgbWlnaHQgYWxzbyByZXF1aXJlIGAtcHRocmVhZGAgaW4gdGhlIGNvbXBpbGluZyBzdGVw
LCBhbmQgYXMgc3VjaAorc3BsaXR0aW5nIHRoZSBwa2ctY29uZmlnIGBDZmxhZ3NgIHZhcmlhYmxl
IGludG8gaW5jbHVkZSBkaXJzIGFuZCBtYWNyb3MgZm9yCitgdGFyZ2V0X2NvbXBpbGVfZGVmaW5p
dGlvbnMoKWAgbWlnaHQgc3RpbGwgbWlzcyB0aGlzKS4gVGhlIHNhbWUgcmVjb21tZW5kYXRpb24K
K2dvZXMgZm9yIHVzaW5nIGBfTERGTEFHU2Agb3ZlciB0aGUgbW9yZSBjb21tb25wbGFjZSBgX0xJ
QlJBUklFU2AsIHdoaWNoCitoYXBwZW5zIHRvIGRpc2NhcmQgYC1MYCBmbGFncyBhbmQgYC1wdGhy
ZWFkYC4KKworCisjIyMgQXV0b3Rvb2xzICMjIworCitGaW5kaW5nIEdvb2dsZVRlc3QgaW4gQXV0
b2NvbmYgYW5kIHVzaW5nIGl0IGZyb20gQXV0b21ha2UgaXMgYWxzbyBmYWlybHkgZWFzeToKKwor
SW4geW91ciBgY29uZmlndXJlLmFjYDoKKworYGBgCitBQ19QUkVSRVEoWzIuNjldKQorQUNfSU5J
VChbbXlfZ3Rlc3RfcGtnY29uZmlnXSwgWzAuMC4xXSkKK0FDX0NPTkZJR19TUkNESVIoW3NhbXBs
ZXMvc2FtcGxlM191bml0dGVzdC5jY10pCitBQ19QUk9HX0NYWAorCitQS0dfQ0hFQ0tfTU9EVUxF
UyhbR1RFU1RdLCBbZ3Rlc3RfbWFpbl0pCisKK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ24gc3Vi
ZGlyLW9iamVjdHNdKQorQUNfQ09ORklHX0ZJTEVTKFtNYWtlZmlsZV0pCitBQ19PVVRQVVQKK2Bg
YAorCithbmQgaW4geW91ciBgTWFrZWZpbGUuYW1gOgorCitgYGAKK2NoZWNrX1BST0dSQU1TID0g
dGVzdGFwcAorVEVTVFMgPSAkKGNoZWNrX1BST0dSQU1TKQorCit0ZXN0YXBwX1NPVVJDRVMgPSBz
YW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MKK3Rlc3RhcHBfQ1hYRkxBR1MgPSAkKEdURVNUX0NG
TEFHUykKK3Rlc3RhcHBfTERBREQgPSAkKEdURVNUX0xJQlMpCitgYGAKKworCisjIyMgTWVzb24g
IyMjCisKK01lc29uIG5hdGl2ZWx5IHVzZXMgcGtnY29uZmlnIHRvIHF1ZXJ5IGRlcGVuZGVuY2ll
czoKKworYGBgCitwcm9qZWN0KCdteV9ndGVzdF9wa2djb25maWcnLCAnY3BwJywgdmVyc2lvbiA6
ICcwLjAuMScpCisKK2d0ZXN0X2RlcCA9IGRlcGVuZGVuY3koJ2d0ZXN0X21haW4nKQorCit0ZXN0
YXBwID0gZXhlY3V0YWJsZSgKKyAgJ3Rlc3RhcHAnLAorICBmaWxlcyhbJ3NhbXBsZXMvc2FtcGxl
M191bml0dGVzdC5jYyddKSwKKyAgZGVwZW5kZW5jaWVzIDogZ3Rlc3RfZGVwLAorICBpbnN0YWxs
IDogZmFsc2UpCisKK3Rlc3QoJ2ZpcnN0X2FuZF9vbmx5X3Rlc3QnLCB0ZXN0YXBwKQorYGBgCisK
KworIyMjIFBsYWluIE1ha2VmaWxlcyAjIyMKKworU2luY2UgYHBrZy1jb25maWdgIGlzIGEgc21h
bGwgVW5peCBjb21tYW5kLWxpbmUgdXRpbGl0eSwgaXQgY2FuIGJlIHVzZWQKK2luIGhhbmR3cml0
dGVuIGBNYWtlZmlsZWBzIHRvbzoKKworYGBgCitHVEVTVF9DRkxBR1MgPSBgcGtnLWNvbmZpZyAt
LWNmbGFncyBndGVzdF9tYWluYAorR1RFU1RfTElCUyA9IGBwa2ctY29uZmlnIC0tbGlicyBndGVz
dF9tYWluYAorCisuUEhPTlk6IHRlc3RzIGFsbAorCit0ZXN0czogYWxsCisJLi90ZXN0YXBwCisK
K2FsbDogdGVzdGFwcAorCit0ZXN0YXBwOiB0ZXN0YXBwLm8KKwkkKENYWCkgJChDWFhGTEFHUykg
JChMREZMQUdTKSAkPCAtbyAkQCAkKEdURVNUX0xJQlMpCisKK3Rlc3RhcHAubzogc2FtcGxlcy9z
YW1wbGUzX3VuaXR0ZXN0LmNjCisJJChDWFgpICQoQ1BQRkxBR1MpICQoQ1hYRkxBR1MpICQ8IC1j
IC1vICRAICQoR1RFU1RfQ0ZMQUdTKQorYGBgCisKKworIyMjIEhlbHAhIHBrZy1jb25maWcgY2Fu
J3QgZmluZCBHb29nbGVUZXN0ISAjIyMKKworTGV0J3Mgc2F5IHlvdSBoYXZlIGEgYENNYWtlTGlz
dHMudHh0YCBhbG9uZyB0aGUgbGluZXMgb2YgdGhlIG9uZSBpbiB0aGlzCit0dXRvcmlhbCBhbmQg
eW91IHRyeSB0byBydW4gYGNtYWtlYC4gSXQgaXMgdmVyeSBwb3NzaWJsZSB0aGF0IHlvdSBnZXQg
YQorZmFpbHVyZSBhbG9uZyB0aGUgbGluZXMgb2Y6CisKK2BgYAorLS0gQ2hlY2tpbmcgZm9yIG9u
ZSBvZiB0aGUgbW9kdWxlcyAnZ3Rlc3RfbWFpbicKK0NNYWtlIEVycm9yIGF0IC91c3Ivc2hhcmUv
Y21ha2UvTW9kdWxlcy9GaW5kUGtnQ29uZmlnLmNtYWtlOjY0MCAobWVzc2FnZSk6CisgIE5vbmUg
b2YgdGhlIHJlcXVpcmVkICdndGVzdF9tYWluJyBmb3VuZAorYGBgCisKK1RoZXNlIGZhaWx1cmVz
IGFyZSBjb21tb24gaWYgeW91IGluc3RhbGxlZCBHb29nbGVUZXN0IHlvdXJzZWxmIGFuZCBoYXZl
IG5vdAorc291cmNlZCBpdCBmcm9tIGEgZGlzdHJvIG9yIG90aGVyIHBhY2thZ2UgbWFuYWdlci4g
SWYgc28sIHlvdSBuZWVkIHRvIHRlbGwKK3BrZy1jb25maWcgd2hlcmUgaXQgY2FuIGZpbmQgdGhl
IGAucGNgIGZpbGVzIGNvbnRhaW5pbmcgdGhlIGluZm9ybWF0aW9uLgorU2F5IHlvdSBpbnN0YWxs
ZWQgR29vZ2xlVGVzdCB0byBgL3Vzci9sb2NhbGAsIHRoZW4gaXQgbWlnaHQgYmUgdGhhdCB0aGUK
K2AucGNgIGZpbGVzIGFyZSBpbnN0YWxsZWQgdW5kZXIgYC91c3IvbG9jYWwvbGliNjQvcGtnY29u
ZmlnYC4gSWYgeW91IHNldAorCitgYGAKK2V4cG9ydCBQS0dfQ09ORklHX1BBVEg9L3Vzci9sb2Nh
bC9saWI2NC9wa2djb25maWcKK2BgYAorCitwa2ctY29uZmlnIHdpbGwgYWxzbyB0cnkgdG8gbG9v
ayBpbiBgUEtHX0NPTkZJR19QQVRIYCB0byBmaW5kIGBndGVzdF9tYWluLnBjYC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvUHVtcE1hbnVhbC5tZCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2RvY3MvUHVtcE1hbnVhbC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjdiYjI0YjA0
MmRjNTQzYWY0YzQwOWFkMDNlMTQ3ZWE1OTQ5YjdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9QdW1wTWFudWFsLm1kCkBAIC0wLDAgKzEsMTc3IEBACisK
KworPGI+UDwvYj51bXAgaXMgPGI+VTwvYj5zZWZ1bCBmb3IgPGI+TTwvYj5ldGEgPGI+UDwvYj5y
b2dyYW1taW5nLgorCisjIFRoZSBQcm9ibGVtICMKKworVGVtcGxhdGUgYW5kIG1hY3JvIGxpYnJh
cmllcyBvZnRlbiBuZWVkIHRvIGRlZmluZSBtYW55IGNsYXNzZXMsCitmdW5jdGlvbnMsIG9yIG1h
Y3JvcyB0aGF0IHZhcnkgb25seSAob3IgYWxtb3N0IG9ubHkpIGluIHRoZSBudW1iZXIgb2YKK2Fy
Z3VtZW50cyB0aGV5IHRha2UuIEl0J3MgYSBsb3Qgb2YgcmVwZXRpdGl2ZSwgbWVjaGFuaWNhbCwg
YW5kCitlcnJvci1wcm9uZSB3b3JrLgorCitWYXJpYWRpYyB0ZW1wbGF0ZXMgYW5kIHZhcmlhZGlj
IG1hY3JvcyBjYW4gYWxsZXZpYXRlIHRoZSBwcm9ibGVtLgorSG93ZXZlciwgd2hpbGUgYm90aCBh
cmUgYmVpbmcgY29uc2lkZXJlZCBieSB0aGUgQysrIGNvbW1pdHRlZSwgbmVpdGhlcgoraXMgaW4g
dGhlIHN0YW5kYXJkIHlldCBvciB3aWRlbHkgc3VwcG9ydGVkIGJ5IGNvbXBpbGVycy4gIFRodXMg
dGhleQorYXJlIG9mdGVuIG5vdCBhIGdvb2QgY2hvaWNlLCBlc3BlY2lhbGx5IHdoZW4geW91ciBj
b2RlIG5lZWRzIHRvIGJlCitwb3J0YWJsZS4gQW5kIHRoZWlyIGNhcGFiaWxpdGllcyBhcmUgc3Rp
bGwgbGltaXRlZC4KKworQXMgYSByZXN1bHQsIGF1dGhvcnMgb2Ygc3VjaCBsaWJyYXJpZXMgb2Z0
ZW4gaGF2ZSB0byB3cml0ZSBzY3JpcHRzIHRvCitnZW5lcmF0ZSB0aGVpciBpbXBsZW1lbnRhdGlv
bi4gSG93ZXZlciwgb3VyIGV4cGVyaWVuY2UgaXMgdGhhdCBpdCdzCit0ZWRpb3VzIHRvIHdyaXRl
IHN1Y2ggc2NyaXB0cywgd2hpY2ggdGVuZCB0byByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YKK3Ro
ZSBnZW5lcmF0ZWQgY29kZSBwb29ybHkgYW5kIGFyZSBvZnRlbiBoYXJkIHRvIHJlYWQgYW5kIGVk
aXQuIEZvcgorZXhhbXBsZSwgYSBzbWFsbCBjaGFuZ2UgbmVlZGVkIGluIHRoZSBnZW5lcmF0ZWQg
Y29kZSBtYXkgcmVxdWlyZSBzb21lCitub24taW50dWl0aXZlLCBub24tdHJpdmlhbCBjaGFuZ2Vz
IGluIHRoZSBzY3JpcHQuIFRoaXMgaXMgZXNwZWNpYWxseQorcGFpbmZ1bCB3aGVuIGV4cGVyaW1l
bnRpbmcgd2l0aCB0aGUgY29kZS4KKworIyBPdXIgU29sdXRpb24gIworCitQdW1wIChmb3IgUHVt
cCBpcyBVc2VmdWwgZm9yIE1ldGEgUHJvZ3JhbW1pbmcsIFByZXR0eSBVc2VmdWwgZm9yIE1ldGEK
K1Byb2dyYW1taW5nLCBvciBQcmFjdGljYWwgVXRpbGl0eSBmb3IgTWV0YSBQcm9ncmFtbWluZywg
d2hpY2hldmVyIHlvdQorcHJlZmVyKSBpcyBhIHNpbXBsZSBtZXRhLXByb2dyYW1taW5nIHRvb2wg
Zm9yIEMrKy4gVGhlIGlkZWEgaXMgdGhhdCBhCitwcm9ncmFtbWVyIHdyaXRlcyBhIGBmb28ucHVt
cGAgZmlsZSB3aGljaCBjb250YWlucyBDKysgY29kZSBwbHVzIG1ldGEKK2NvZGUgdGhhdCBtYW5p
cHVsYXRlcyB0aGUgQysrIGNvZGUuIFRoZSBtZXRhIGNvZGUgY2FuIGhhbmRsZQoraXRlcmF0aW9u
cyBvdmVyIGEgcmFuZ2UsIG5lc3RlZCBpdGVyYXRpb25zLCBsb2NhbCBtZXRhIHZhcmlhYmxlCitk
ZWZpbml0aW9ucywgc2ltcGxlIGFyaXRobWV0aWMsIGFuZCBjb25kaXRpb25hbCBleHByZXNzaW9u
cy4gWW91IGNhbgordmlldyBpdCBhcyBhIHNtYWxsIERvbWFpbi1TcGVjaWZpYyBMYW5ndWFnZS4g
VGhlIG1ldGEgbGFuZ3VhZ2UgaXMKK2Rlc2lnbmVkIHRvIGJlIG5vbi1pbnRydXNpdmUgKHMudC4g
aXQgd29uJ3QgY29uZnVzZSBFbWFjcycgQysrIG1vZGUsCitmb3IgZXhhbXBsZSkgYW5kIGNvbmNp
c2UsIG1ha2luZyBQdW1wIGNvZGUgaW50dWl0aXZlIGFuZCBlYXN5IHRvCittYWludGFpbi4KKwor
IyMgSGlnaGxpZ2h0cyAjIworCisgICogVGhlIGltcGxlbWVudGF0aW9uIGlzIGluIGEgc2luZ2xl
IFB5dGhvbiBzY3JpcHQgYW5kIHRodXMgdWx0cmEgcG9ydGFibGU6IG5vIGJ1aWxkIG9yIGluc3Rh
bGxhdGlvbiBpcyBuZWVkZWQgYW5kIGl0IHdvcmtzIGNyb3NzIHBsYXRmb3Jtcy4KKyAgKiBQdW1w
IHRyaWVzIHRvIGJlIHNtYXJ0IHdpdGggcmVzcGVjdCB0byBbR29vZ2xlJ3Mgc3R5bGUgZ3VpZGVd
KGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvc3R5bGVndWlkZSk6IGl0IGJyZWFrcyBsb25nIGxp
bmVzIChlYXN5IHRvIGhhdmUgd2hlbiB0aGV5IGFyZSBnZW5lcmF0ZWQpIGF0IGFjY2VwdGFibGUg
cGxhY2VzIHRvIGZpdCB3aXRoaW4gODAgY29sdW1ucyBhbmQgaW5kZW50IHRoZSBjb250aW51YXRp
b24gbGluZXMgY29ycmVjdGx5LgorICAqIFRoZSBmb3JtYXQgaXMgaHVtYW4tcmVhZGFibGUgYW5k
IG1vcmUgY29uY2lzZSB0aGFuIFhNTC4KKyAgKiBUaGUgZm9ybWF0IHdvcmtzIHJlbGF0aXZlbHkg
d2VsbCB3aXRoIEVtYWNzJyBDKysgbW9kZS4KKworIyMgRXhhbXBsZXMgIyMKKworVGhlIGZvbGxv
d2luZyBQdW1wIGNvZGUgKHdoZXJlIG1ldGEga2V5d29yZHMgc3RhcnQgd2l0aCBgJGAsIGBbW2Ag
YW5kIGBdXWAgYXJlIG1ldGEgYnJhY2tldHMsIGFuZCBgJCRgIHN0YXJ0cyBhIG1ldGEgY29tbWVu
dCB0aGF0IGVuZHMgd2l0aCB0aGUgbGluZSk6CisKK2BgYAorJHZhciBuID0gMyAgICAgJCQgRGVm
aW5lcyBhIG1ldGEgdmFyaWFibGUgbi4KKyRyYW5nZSBpIDAuLm4gICQkIERlY2xhcmVzIHRoZSBy
YW5nZSBvZiBtZXRhIGl0ZXJhdG9yIGkgKGluY2x1c2l2ZSkuCiskZm9yIGkgW1sKKyAgICAgICAg
ICAgICAgICQkIE1ldGEgbG9vcC4KKy8vIEZvbyRpIGRvZXMgYmxhaCBmb3IgJGktYXJ5IHByZWRp
Y2F0ZXMuCiskcmFuZ2UgaiAxLi5pCit0ZW1wbGF0ZSA8c2l6ZV90IE4gJGZvciBqIFtbLCB0eXBl
bmFtZSBBJGpdXT4KK2NsYXNzIEZvbyRpIHsKKyRpZiBpID09IDAgW1sKKyAgYmxhaCBhOworXV0g
JGVsaWYgaSA8PSAyIFtbCisgIGJsYWggYjsKK11dICRlbHNlIFtbCisgIGJsYWggYzsKK11dCit9
OworCitdXQorYGBgCisKK3dpbGwgYmUgdHJhbnNsYXRlZCBieSB0aGUgUHVtcCBjb21waWxlciB0
bzoKKworYGBgCisvLyBGb28wIGRvZXMgYmxhaCBmb3IgMC1hcnkgcHJlZGljYXRlcy4KK3RlbXBs
YXRlIDxzaXplX3QgTj4KK2NsYXNzIEZvbzAgeworICBibGFoIGE7Cit9OworCisvLyBGb28xIGRv
ZXMgYmxhaCBmb3IgMS1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5h
bWUgQTE+CitjbGFzcyBGb28xIHsKKyAgYmxhaCBiOworfTsKKworLy8gRm9vMiBkb2VzIGJsYWgg
Zm9yIDItYXJ5IHByZWRpY2F0ZXMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIEExLCB0
eXBlbmFtZSBBMj4KK2NsYXNzIEZvbzIgeworICBibGFoIGI7Cit9OworCisvLyBGb28zIGRvZXMg
YmxhaCBmb3IgMy1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUg
QTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMz4KK2NsYXNzIEZvbzMgeworICBibGFoIGM7Cit9
OworYGBgCisKK0luIGFub3RoZXIgZXhhbXBsZSwKKworYGBgCiskcmFuZ2UgaSAxLi5uCitGdW5j
KCRmb3IgaSArIFtbYSRpXV0pOworJCQgVGhlIHRleHQgYmV0d2VlbiBpIGFuZCBbWyBpcyB0aGUg
c2VwYXJhdG9yIGJldHdlZW4gaXRlcmF0aW9ucy4KK2BgYAorCit3aWxsIGdlbmVyYXRlIG9uZSBv
ZiB0aGUgZm9sbG93aW5nIGxpbmVzICh3aXRob3V0IHRoZSBjb21tZW50cyksIGRlcGVuZGluZyBv
biB0aGUgdmFsdWUgb2YgYG5gOgorCitgYGAKK0Z1bmMoKTsgICAgICAgICAgICAgIC8vIElmIG4g
aXMgMC4KK0Z1bmMoYTEpOyAgICAgICAgICAgIC8vIElmIG4gaXMgMS4KK0Z1bmMoYTEgKyBhMik7
ICAgICAgIC8vIElmIG4gaXMgMi4KK0Z1bmMoYTEgKyBhMiArIGEzKTsgIC8vIElmIG4gaXMgMy4K
Ky8vIEFuZCBzbyBvbi4uLgorYGBgCisKKyMjIENvbnN0cnVjdHMgIyMKKworV2Ugc3VwcG9ydCB0
aGUgZm9sbG93aW5nIG1ldGEgcHJvZ3JhbW1pbmcgY29uc3RydWN0czoKKworfCBgJHZhciBpZCA9
IGV4cGAgfCBEZWZpbmVzIGEgbmFtZWQgY29uc3RhbnQgdmFsdWUuIGAkaWRgIGlzIHZhbGlkIHV0
aWwgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBtZXRhIGxleGljYWwgYmxvY2suIHwKK3w6LS0tLS0t
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGAk
cmFuZ2UgaWQgZXhwLi5leHBgIHwgU2V0cyB0aGUgcmFuZ2Ugb2YgYW4gaXRlcmF0aW9uIHZhcmlh
YmxlLCB3aGljaCBjYW4gYmUgcmV1c2VkIGluIG11bHRpcGxlIGxvb3BzIGxhdGVyLiAgICAgICAg
ICB8Cit8IGAkZm9yIGlkIHNlcCBbWyBjb2RlIF1dYCB8IEl0ZXJhdGlvbi4gVGhlIHJhbmdlIG9m
IGBpZGAgbXVzdCBoYXZlIGJlZW4gZGVmaW5lZCBlYXJsaWVyLiBgJGlkYCBpcyB2YWxpZCBpbiBg
Y29kZWAuICAgICAgICAgfAorfCBgJCgkKWAgICAgICAgICAgfCBHZW5lcmF0ZXMgYSBzaW5nbGUg
YCRgIGNoYXJhY3Rlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKK3wgYCRpZGAgICAgICAgICAgIHwgVmFsdWUgb2YgdGhlIG5h
bWVkIGNvbnN0YW50IG9yIGl0ZXJhdGlvbiB2YXJpYWJsZS4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGAkKGV4cClgICAgICAgICB8IFZhbHVlIG9mIHRo
ZSBleHByZXNzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgJGlmIGV4cCBbWyBjb2RlIF1dIGVsc2Vf
YnJhbmNoYCB8IENvbmRpdGlvbmFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgW1sg
Y29kZSBdXWAgICAgfCBNZXRhIGxleGljYWwgYmxvY2suICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wg
YGNwcF9jb2RlYCAgICAgIHwgUmF3IEMrKyBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
Cit8IGAkJCBjb21tZW50YCAgICB8IE1ldGEgY29tbWVudC4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorCisqKk5vdGU6KiogVG8gZ2l2ZSB0aGUgdXNlciBzb21lIGZyZWVkb20gaW4gZm9ybWF0
dGluZyB0aGUgUHVtcCBzb3VyY2UKK2NvZGUsIFB1bXAgaWdub3JlcyBhIG5ldy1saW5lIGNoYXJh
Y3RlciBpZiBpdCdzIHJpZ2h0IGFmdGVyIGAkZm9yIGZvb2AKK29yIG5leHQgdG8gYFtbYCBvciBg
XV1gLiBXaXRob3V0IHRoaXMgcnVsZSB5b3UnbGwgb2Z0ZW4gYmUgZm9yY2VkIHRvIHdyaXRlCit2
ZXJ5IGxvbmcgbGluZXMgdG8gZ2V0IHRoZSBkZXNpcmVkIG91dHB1dC4gVGhlcmVmb3JlIHNvbWV0
aW1lcyB5b3UgbWF5CituZWVkIHRvIGluc2VydCBhbiBleHRyYSBuZXctbGluZSBpbiBzdWNoIHBs
YWNlcyBmb3IgYSBuZXctbGluZSB0byBzaG93Cit1cCBpbiB5b3VyIG91dHB1dC4KKworIyMgR3Jh
bW1hciAjIworCitgYGAKK2NvZGUgOjo9IGF0b21pY19jb2RlKgorYXRvbWljX2NvZGUgOjo9ICR2
YXIgaWQgPSBleHAKKyAgICB8ICR2YXIgaWQgPSBbWyBjb2RlIF1dCisgICAgfCAkcmFuZ2UgaWQg
ZXhwLi5leHAKKyAgICB8ICRmb3IgaWQgc2VwIFtbIGNvZGUgXV0KKyAgICB8ICQoJCkKKyAgICB8
ICRpZAorICAgIHwgJChleHApCisgICAgfCAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2gK
KyAgICB8IFtbIGNvZGUgXV0KKyAgICB8IGNwcF9jb2RlCitzZXAgOjo9IGNwcF9jb2RlIHwgZW1w
dHlfc3RyaW5nCitlbHNlX2JyYW5jaCA6Oj0gJGVsc2UgW1sgY29kZSBdXQorICAgIHwgJGVsaWYg
ZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2gKKyAgICB8IGVtcHR5X3N0cmluZworZXhwIDo6PSBz
aW1wbGVfZXhwcmVzc2lvbl9pbl9QeXRob25fc3ludGF4CitgYGAKKworIyMgQ29kZSAjIworCitZ
b3UgY2FuIGZpbmQgdGhlIHNvdXJjZSBjb2RlIG9mIFB1bXAgaW4gW3NjcmlwdHMvcHVtcC5weV0o
Li4vc2NyaXB0cy9wdW1wLnB5KS4gSXQgaXMgc3RpbGwKK3ZlcnkgdW5wb2xpc2hlZCBhbmQgbGFj
a3MgYXV0b21hdGVkIHRlc3RzLCBhbHRob3VnaCBpdCBoYXMgYmVlbgorc3VjY2Vzc2Z1bGx5IHVz
ZWQgbWFueSB0aW1lcy4gSWYgeW91IGZpbmQgYSBjaGFuY2UgdG8gdXNlIGl0IGluIHlvdXIKK3By
b2plY3QsIHBsZWFzZSBsZXQgdXMga25vdyB3aGF0IHlvdSB0aGluayEgIFdlIGFsc28gd2VsY29t
ZSBoZWxwIG9uCitpbXByb3ZpbmcgUHVtcC4KKworIyMgUmVhbCBFeGFtcGxlcyAjIworCitZb3Ug
Y2FuIGZpbmQgcmVhbC13b3JsZCBhcHBsaWNhdGlvbnMgb2YgUHVtcCBpbiBbR29vZ2xlIFRlc3Rd
KGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC90cmVlL21hc3Rlci9nb29nbGV0
ZXN0KSBhbmQgW0dvb2dsZSBNb2NrXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRl
c3QvdHJlZS9tYXN0ZXIvZ29vZ2xlbW9jaykuIFRoZSBzb3VyY2UgZmlsZSBgZm9vLmgucHVtcGAg
Z2VuZXJhdGVzIGBmb28uaGAuCisKKyMjIFRpcHMgIyMKKworICAqIElmIGEgbWV0YSB2YXJpYWJs
ZSBpcyBmb2xsb3dlZCBieSBhIGxldHRlciBvciBkaWdpdCwgeW91IGNhbiBzZXBhcmF0ZSB0aGVt
IHVzaW5nIGBbW11dYCwgd2hpY2ggaW5zZXJ0cyBhbiBlbXB0eSBzdHJpbmcuIEZvciBleGFtcGxl
IGBGb28kaltbXV1IZWxwZXJgIGdlbmVyYXRlIGBGb28xSGVscGVyYCB3aGVuIGBqYCBpcyAxLgor
ICAqIFRvIGF2b2lkIGV4dHJhLWxvbmcgUHVtcCBzb3VyY2UgbGluZXMsIHlvdSBjYW4gYnJlYWsg
YSBsaW5lIGFueXdoZXJlIHlvdSB3YW50IGJ5IGluc2VydGluZyBgW1tdXWAgZm9sbG93ZWQgYnkg
YSBuZXcgbGluZS4gU2luY2UgYW55IG5ldy1saW5lIGNoYXJhY3RlciBuZXh0IHRvIGBbW2Agb3Ig
YF1dYCBpcyBpZ25vcmVkLCB0aGUgZ2VuZXJhdGVkIGNvZGUgd29uJ3QgY29udGFpbiB0aGlzIG5l
dyBsaW5lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9YY29kZUd1
aWRlLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9YY29kZUd1aWRlLm1kCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFjNjBhMzNkYWQ0M2JhZjk4MzgxZjdjOWYyMGY2OWI1NThiMmFhZDAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1hjb2RlR3VpZGUubWQKQEAg
LTAsMCArMSw5MyBAQAorCisKK1RoaXMgZ3VpZGUgd2lsbCBleHBsYWluIGhvdyB0byB1c2UgdGhl
IEdvb2dsZSBUZXN0aW5nIEZyYW1ld29yayBpbiB5b3VyIFhjb2RlIHByb2plY3RzIG9uIE1hYyBP
UyBYLiBUaGlzIHR1dG9yaWFsIGJlZ2lucyBieSBxdWlja2x5IGV4cGxhaW5pbmcgd2hhdCB0byBk
byBmb3IgZXhwZXJpZW5jZWQgdXNlcnMuIEFmdGVyIHRoZSBxdWljayBzdGFydCwgdGhlIGd1aWRl
IGdvZXMgcHJvdmlkZXMgYWRkaXRpb25hbCBleHBsYW5hdGlvbiBhYm91dCBlYWNoIHN0ZXAuCisK
KyMgUXVpY2sgU3RhcnQgIworCitIZXJlIGlzIHRoZSBxdWljayBndWlkZSBmb3IgdXNpbmcgR29v
Z2xlIFRlc3QgaW4geW91ciBYY29kZSBwcm9qZWN0LgorCisgIDEuIERvd25sb2FkIHRoZSBzb3Vy
Y2UgZnJvbSB0aGUgW3dlYnNpdGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVz
dCkgdXNpbmcgdGhpcyBjb21tYW5kOiBgc3ZuIGNoZWNrb3V0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdv
b2dsZWNvZGUuY29tL3N2bi90cnVuay8gZ29vZ2xldGVzdC1yZWFkLW9ubHlgLgorICAxLiBPcGVu
IHVwIHRoZSBgZ3Rlc3QueGNvZGVwcm9qYCBpbiB0aGUgYGdvb2dsZXRlc3QtcmVhZC1vbmx5L3hj
b2RlL2AgZGlyZWN0b3J5IGFuZCBidWlsZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrLgorICAxLiBDcmVh
dGUgYSBuZXcgIlNoZWxsIFRvb2wiIHRhcmdldCBpbiB5b3VyIFhjb2RlIHByb2plY3QgY2FsbGVk
IHNvbWV0aGluZyBsaWtlICJVbml0VGVzdHMiLgorICAxLiBBZGQgdGhlIGd0ZXN0LmZyYW1ld29y
ayB0byB5b3VyIHByb2plY3QgYW5kIGFkZCBpdCB0byB0aGUgIkxpbmsgQmluYXJ5IHdpdGggTGli
cmFyaWVzIiBidWlsZCBwaGFzZSBvZiAiVW5pdFRlc3RzIi4KKyAgMS4gQWRkIHlvdXIgdW5pdCB0
ZXN0IHNvdXJjZSBjb2RlIHRvIHRoZSAiQ29tcGlsZSBTb3VyY2VzIiBidWlsZCBwaGFzZSBvZiAi
VW5pdFRlc3RzIi4KKyAgMS4gRWRpdCB0aGUgIlVuaXRUZXN0cyIgZXhlY3V0YWJsZSBhbmQgYWRk
IGFuIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVkICJEWUxEXF9GUkFNRVdPUktcX1BBVEgiIHdp
dGggYSB2YWx1ZSBlcXVhbCB0byB0aGUgcGF0aCB0byB0aGUgZnJhbWV3b3JrIGNvbnRhaW5pbmcg
dGhlIGd0ZXN0LmZyYW1ld29yayByZWxhdGl2ZSB0byB0aGUgY29tcGlsZWQgZXhlY3V0YWJsZS4K
KyAgMS4gQnVpbGQgYW5kIEdvLgorCitUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGZ1cnRoZXIgZXhw
bGFpbiBlYWNoIG9mIHRoZSBzdGVwcyBsaXN0ZWQgYWJvdmUgaW4gZGVwdGgsIGRlc2NyaWJpbmcg
aW4gbW9yZSBkZXRhaWwgaG93IHRvIGNvbXBsZXRlIGl0IGluY2x1ZGluZyBzb21lIHZhcmlhdGlv
bnMuCisKKyMgR2V0IHRoZSBTb3VyY2UgIworCitDdXJyZW50bHksIHRoZSBndGVzdC5mcmFtZXdv
cmsgZGlzY3Vzc2VkIGhlcmUgaXNuJ3QgYXZhaWxhYmxlIGluIGEgdGFnZ2VkIHJlbGVhc2Ugb2Yg
R29vZ2xlIFRlc3QsIGl0IGlzIG9ubHkgYXZhaWxhYmxlIGluIHRoZSB0cnVuay4gQXMgZXhwbGFp
bmVkIGF0IHRoZSBHb29nbGUgVGVzdCBbc2l0ZV0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9n
b29nbGV0ZXN0KSwgeW91IGNhbiBnZXQgdGhlIGNvZGUgZnJvbSBhbm9ueW1vdXMgU1ZOIHdpdGgg
dGhpcyBjb21tYW5kOgorCitgYGAKK3N2biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29n
bGVjb2RlLmNvbS9zdm4vdHJ1bmsvIGdvb2dsZXRlc3QtcmVhZC1vbmx5CitgYGAKKworQWx0ZXJu
YXRpdmVseSwgaWYgeW91IGFyZSB3b3JraW5nIHdpdGggU3VidmVyc2lvbiBpbiB5b3VyIG93biBj
b2RlIGJhc2UsIHlvdSBjYW4gYWRkIEdvb2dsZSBUZXN0IGFzIGFuIGV4dGVybmFsIGRlcGVuZGVu
Y3kgdG8geW91ciBvd24gU3VidmVyc2lvbiByZXBvc2l0b3J5LiBCeSBmb2xsb3dpbmcgdGhpcyBh
cHByb2FjaCwgZXZlcnlvbmUgdGhhdCBjaGVja3Mgb3V0IHlvdXIgc3ZuIHJlcG9zaXRvcnkgd2ls
bCBhbHNvIHJlY2VpdmUgYSBjb3B5IG9mIEdvb2dsZSBUZXN0IChhIHNwZWNpZmljIHZlcnNpb24s
IGlmIHlvdSB3aXNoKSB3aXRob3V0IGhhdmluZyB0byBjaGVjayBpdCBvdXQgZXhwbGljaXRseS4g
VGhpcyBtYWtlcyB0aGUgc2V0IHVwIG9mIHlvdXIgcHJvamVjdCBzaW1wbGVyIGFuZCByZWR1Y2Vz
IHRoZSBjb3BpZWQgY29kZSBpbiB0aGUgcmVwb3NpdG9yeS4KKworVG8gdXNlIGBzdm46ZXh0ZXJu
YWxzYCwgZGVjaWRlIHdoZXJlIHlvdSB3b3VsZCBsaWtlIHRvIGhhdmUgdGhlIGV4dGVybmFsIHNv
dXJjZSByZXNpZGUuIFlvdSBtaWdodCBjaG9vc2UgdG8gcHV0IHRoZSBleHRlcm5hbCBzb3VyY2Ug
aW5zaWRlIHRoZSB0cnVuaywgYmVjYXVzZSB5b3Ugd2FudCBpdCB0byBiZSBwYXJ0IG9mIHRoZSBi
cmFuY2ggd2hlbiB5b3UgbWFrZSBhIHJlbGVhc2UuIEhvd2V2ZXIsIGtlZXBpbmcgaXQgb3V0c2lk
ZSB0aGUgdHJ1bmsgaW4gYSB2ZXJzaW9uLXRhZ2dlZCBkaXJlY3RvcnkgY2FsbGVkIHNvbWV0aGlu
ZyBsaWtlIGB0aGlyZC1wYXJ0eS9nb29nbGV0ZXN0LzEuMC4xYCwgaXMgYW5vdGhlciBvcHRpb24u
IE9uY2UgdGhlIGxvY2F0aW9uIGlzIGVzdGFibGlzaGVkLCB1c2UgYHN2biBwcm9wZWRpdCBzdm46
ZXh0ZXJuYWxzIF9kaXJlY3RvcnlfYCB0byBzZXQgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkg
b24gYSBkaXJlY3RvcnkgaW4geW91ciByZXBvc2l0b3J5LiBUaGlzIGRpcmVjdG9yeSB3b24ndCBj
b250YWluIHRoZSBjb2RlLCBidXQgYmUgaXRzIHZlcnNpb25lZCBwYXJlbnQgZGlyZWN0b3J5Lgor
CitUaGUgY29tbWFuZCBgc3ZuIHByb3BlZGl0YCB3aWxsIGJyaW5nIHVwIHlvdXIgU3VidmVyc2lv
biBlZGl0b3IsIG1ha2luZyBlZGl0aW5nIHRoZSBsb25nLCAocG90ZW50aWFsbHkgbXVsdGktbGlu
ZSkgcHJvcGVydHkgc2ltcGxlci4gVGhpcyBzYW1lIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjaGVj
ayBvdXQgYSB0YWdnZWQgYnJhbmNoLCBieSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgVVJMIChlLmcu
IGBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvcmVsZWFzZXMvdGFnL3JlbGVh
c2UtMS4wLjFgKS4gQWRkaXRpb25hbGx5LCB0aGUgc3ZuOmV4dGVybmFscyBwcm9wZXJ0eSBhbGxv
d3MgdGhlIHNwZWNpZmljYXRpb24gb2YgYSBwYXJ0aWN1bGFyIHJldmlzaW9uIG9mIHRoZSB0cnVu
ayB3aXRoIHRoZSBgLXJfIyNfYCBvcHRpb24gKGUuZy4gYGV4dGVybmFscy9zcmMvZ29vZ2xldGVz
dCAtcjYwIGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVua2ApLgorCitI
ZXJlIGlzIGFuIGV4YW1wbGUgb2YgdXNpbmcgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydGllcyBv
biBhIHRydW5rIChyZWFkIHZpYSBgc3ZuIHByb3BnZXRgKSBvZiBhIHByb2plY3QuIFRoaXMgdmFs
dWUgY2hlY2tzIG91dCBhIGNvcHkgb2YgR29vZ2xlIFRlc3QgaW50byB0aGUgYHRydW5rL2V4dGVy
bmFscy9zcmMvZ29vZ2xldGVzdC9gIGRpcmVjdG9yeS4KKworYGBgCitbQ29tcHV0ZXI6c3ZuXSB1
c2VyJCBzdm4gcHJvcGdldCBzdm46ZXh0ZXJuYWxzIHRydW5rCitleHRlcm5hbHMvc3JjL2dvb2ds
ZXRlc3QgaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rCitgYGAKKwor
IyBBZGQgdGhlIEZyYW1ld29yayB0byBZb3VyIFByb2plY3QgIworCitUaGUgbmV4dCBzdGVwIGlz
IHRvIGJ1aWxkIGFuZCBhZGQgdGhlIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyIG93biBwcm9qZWN0
LiBUaGlzIGd1aWRlIGRlc2NyaWJlcyB0d28gY29tbW9uIHdheXMgYmVsb3cuCisKKyAgKiAqKk9w
dGlvbiAxKiogLS0tIFRoZSBzaW1wbGVzdCB3YXkgdG8gYWRkIEdvb2dsZSBUZXN0IHRvIHlvdXIg
b3duIHByb2plY3QsIGlzIHRvIG9wZW4gZ3Rlc3QueGNvZGVwcm9qIChmb3VuZCBpbiB0aGUgeGNv
ZGUvIGRpcmVjdG9yeSBvZiB0aGUgR29vZ2xlIFRlc3QgdHJ1bmspIGFuZCBidWlsZCB0aGUgZnJh
bWV3b3JrIG1hbnVhbGx5LiBUaGVuLCBhZGQgdGhlIGJ1aWx0IGZyYW1ld29yayBpbnRvIHlvdXIg
cHJvamVjdCB1c2luZyB0aGUgIkFkZC0+RXhpc3RpbmcgRnJhbWV3b3JrLi4uIiBmcm9tIHRoZSBj
b250ZXh0IG1lbnUgb3IgIlByb2plY3QtPkFkZC4uLiIgZnJvbSB0aGUgbWFpbiBtZW51LiBUaGUg
Z3Rlc3QuZnJhbWV3b3JrIGlzIHJlbG9jYXRhYmxlIGFuZCBjb250YWlucyB0aGUgaGVhZGVycyBh
bmQgb2JqZWN0IGNvZGUgdGhhdCB5b3UnbGwgbmVlZCB0byBtYWtlIHRlc3RzLiBUaGlzIG1ldGhv
ZCByZXF1aXJlcyByZWJ1aWxkaW5nIGV2ZXJ5IHRpbWUgeW91IHVwZ3JhZGUgR29vZ2xlIFRlc3Qg
aW4geW91ciBwcm9qZWN0LgorICAqICoqT3B0aW9uIDIqKiAtLS0gSWYgeW91IGFyZSBnb2luZyB0
byBiZSBsaXZpbmcgb2ZmIHRoZSB0cnVuayBvZiBHb29nbGUgVGVzdCwgaW5jb3Jwb3JhdGluZyBp
dHMgbGF0ZXN0IGZlYXR1cmVzIGludG8geW91ciB1bml0IHRlc3RzIChvciBhcmUgYSBHb29nbGUg
VGVzdCBkZXZlbG9wZXIgeW91cnNlbGYpLiBZb3UnbGwgd2FudCB0byByZWJ1aWxkIHRoZSBmcmFt
ZXdvcmsgZXZlcnkgdGltZSB0aGUgc291cmNlIHVwZGF0ZXMuIHRvIGRvIHRoaXMsIHlvdSdsbCBu
ZWVkIHRvIGFkZCB0aGUgZ3Rlc3QueGNvZGVwcm9qIGZpbGUsIG5vdCB0aGUgZnJhbWV3b3JrIGl0
c2VsZiwgdG8geW91ciBvd24gWGNvZGUgcHJvamVjdC4gVGhlbiwgZnJvbSB0aGUgYnVpbGQgcHJv
ZHVjdHMgdGhhdCBhcmUgcmV2ZWFsZWQgYnkgdGhlIHByb2plY3QncyBkaXNjbG9zdXJlIHRyaWFu
Z2xlLCB5b3UgY2FuIGZpbmQgdGhlIGd0ZXN0LmZyYW1ld29yaywgd2hpY2ggY2FuIGJlIGFkZGVk
IHRvIHlvdXIgdGFyZ2V0cyAoZGlzY3Vzc2VkIGJlbG93KS4KKworIyBNYWtlIGEgVGVzdCBUYXJn
ZXQgIworCitUbyBzdGFydCB3cml0aW5nIHRlc3RzLCBtYWtlIGEgbmV3ICJTaGVsbCBUb29sIiB0
YXJnZXQuIFRoaXMgdGFyZ2V0IHRlbXBsYXRlIGlzIGF2YWlsYWJsZSB1bmRlciBCU0QsIENvY29h
LCBvciBDYXJib24uIEFkZCB5b3VyIHVuaXQgdGVzdCBzb3VyY2UgY29kZSB0byB0aGUgIkNvbXBp
bGUgU291cmNlcyIgYnVpbGQgcGhhc2Ugb2YgdGhlIHRhcmdldC4KKworTmV4dCwgeW91J2xsIHdh
bnQgdG8gYWRkIGd0ZXN0LmZyYW1ld29yayBpbiB0d28gZGlmZmVyZW50IHdheXMsIGRlcGVuZGlu
ZyB1cG9uIHdoaWNoIG9wdGlvbiB5b3UgY2hvc2UgYWJvdmUuCisKKyAgKiAqKk9wdGlvbiAxKiog
LS0tIER1cmluZyBjb21waWxhdGlvbiwgWGNvZGUgd2lsbCBuZWVkIHRvIGtub3cgdGhhdCB5b3Ug
YXJlIGxpbmtpbmcgYWdhaW5zdCB0aGUgZ3Rlc3QuZnJhbWV3b3JrLiBBZGQgdGhlIGd0ZXN0LmZy
YW1ld29yayB0byB0aGUgIkxpbmsgQmluYXJ5IHdpdGggTGlicmFyaWVzIiBidWlsZCBwaGFzZSBv
ZiB5b3VyIHRlc3QgdGFyZ2V0LiBUaGlzIHdpbGwgaW5jbHVkZSB0aGUgR29vZ2xlIFRlc3QgaGVh
ZGVycyBpbiB5b3VyIGhlYWRlciBzZWFyY2ggcGF0aCwgYW5kIHdpbGwgdGVsbCB0aGUgbGlua2Vy
IHdoZXJlIHRvIGZpbmQgdGhlIGxpYnJhcnkuCisgICogKipPcHRpb24gMioqIC0tLSBJZiB5b3Vy
IHdvcmtpbmcgb3V0IG9mIHRoZSB0cnVuaywgeW91J2xsIGFsc28gd2FudCB0byBhZGQgZ3Rlc3Qu
ZnJhbWV3b3JrIHRvIHlvdXIgIkxpbmsgQmluYXJ5IHdpdGggTGlicmFyaWVzIiBidWlsZCBwaGFz
ZSBvZiB5b3VyIHRlc3QgdGFyZ2V0LiBJbiBhZGRpdGlvbiwgeW91J2xsICB3YW50IHRvIGFkZCB0
aGUgZ3Rlc3QuZnJhbWV3b3JrIGFzIGEgZGVwZW5kZW5jeSB0byB5b3VyIHVuaXQgdGVzdCB0YXJn
ZXQuIFRoaXMgd2F5LCBYY29kZSB3aWxsIG1ha2Ugc3VyZSB0aGF0IGd0ZXN0LmZyYW1ld29yayBp
cyB1cCB0byBkYXRlLCBldmVyeSB0aW1lIHlvdXIgYnVpbGQgeW91ciB0YXJnZXQuIEZpbmFsbHks
IGlmIHlvdSBkb24ndCBzaGFyZSBidWlsZCBkaXJlY3RvcmllcyB3aXRoIEdvb2dsZSBUZXN0LCB5
b3UnbGwgaGF2ZSB0byBjb3B5IHRoZSBndGVzdC5mcmFtZXdvcmsgaW50byB5b3VyIG93biBidWls
ZCBwcm9kdWN0cyBkaXJlY3RvcnkgdXNpbmcgYSAiUnVuIFNjcmlwdCIgYnVpbGQgcGhhc2UuCisK
KyMgU2V0IFVwIHRoZSBFeGVjdXRhYmxlIFJ1biBFbnZpcm9ubWVudCAjCisKK1NpbmNlIHRoZSB1
bml0IHRlc3QgZXhlY3V0YWJsZSBpcyBhIHNoZWxsIHRvb2wsIGl0IGRvZXNuJ3QgaGF2ZSBhIGJ1
bmRsZSB3aXRoIGEgYENvbnRlbnRzL0ZyYW1ld29ya3NgIGRpcmVjdG9yeSwgaW4gd2hpY2ggdG8g
cGxhY2UgZ3Rlc3QuZnJhbWV3b3JrLiBJbnN0ZWFkLCB0aGUgZHluYW1pYyBsaW5rZXIgbXVzdCBi
ZSB0b2xkIGF0IHJ1bnRpbWUgdG8gc2VhcmNoIGZvciB0aGUgZnJhbWV3b3JrIGluIGFub3RoZXIg
bG9jYXRpb24uIFRoaXMgY2FuIGJlIGFjY29tcGxpc2hlZCBieSBzZXR0aW5nIHRoZSAiRFlMRFxf
RlJBTUVXT1JLXF9QQVRIIiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbiB0aGUgIkVkaXQgQWN0aXZl
IEV4ZWN1dGFibGUgLi4uIiBBcmd1bWVudHMgdGFiLCB1bmRlciAiVmFyaWFibGVzIHRvIGJlIHNl
dCBpbiB0aGUgZW52aXJvbm1lbnQ6Ii4gVGhlIHBhdGggZm9yIHRoaXMgdmFsdWUgaXMgdGhlIHBh
dGggKHJlbGF0aXZlIG9yIGFic29sdXRlKSBvZiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhl
IGd0ZXN0LmZyYW1ld29yay4KKworSWYgeW91IGhhdmVuJ3Qgc2V0IHVwIHRoZSBEWUxEXF9GUkFN
RVdPUktcX1BBVEgsIGNvcnJlY3RseSwgeW91IG1pZ2h0IGdldCBhIG1lc3NhZ2UgbGlrZSB0aGlz
OgorCitgYGAKK1tTZXNzaW9uIHN0YXJ0ZWQgYXQgMjAwOC0wOC0xNSAwNjoyMzo1NyAtMDYwMC5d
CisgIGR5bGQ6IExpYnJhcnkgbm90IGxvYWRlZDogQGxvYWRlcl9wYXRoLy4uL0ZyYW1ld29ya3Mv
Z3Rlc3QuZnJhbWV3b3JrL1ZlcnNpb25zL0EvZ3Rlc3QKKyAgICBSZWZlcmVuY2VkIGZyb206IC9V
c2Vycy91c2VybmFtZS9Eb2N1bWVudHMvU2FuZGJveC9ndGVzdFNhbXBsZS9idWlsZC9EZWJ1Zy9X
aWRnZXRGcmFtZXdvcmtUZXN0CisgICAgUmVhc29uOiBpbWFnZSBub3QgZm91bmQKK2BgYAorCitU
byBjb3JyZWN0IHRoaXMgcHJvYmxlbSwgZ28gdG8gdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5n
IHRoZSBleGVjdXRhYmxlIG5hbWVkIGluICJSZWZlcmVuY2VkIGZyb206IiB2YWx1ZSBpbiB0aGUg
ZXJyb3IgbWVzc2FnZSBhYm92ZS4gVGhlbiwgd2l0aCB0aGUgdGVybWluYWwgaW4gdGhpcyBsb2Nh
dGlvbiwgZmluZCB0aGUgcmVsYXRpdmUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcg
dGhlIGd0ZXN0LmZyYW1ld29yay4gVGhhdCBpcyB0aGUgdmFsdWUgeW91J2xsIG5lZWQgdG8gc2V0
IGFzIHRoZSBEWUxEXF9GUkFNRVdPUktcX1BBVEguCisKKyMgQnVpbGQgYW5kIEdvICMKKworTm93
LCB3aGVuIHlvdSBjbGljayAiQnVpbGQgYW5kIEdvIiwgdGhlIHRlc3Qgd2lsbCBiZSBleGVjdXRl
ZC4gRHVtcGluZyBvdXQgc29tZXRoaW5nIGxpa2UgdGhpczoKKworYGBgCitbU2Vzc2lvbiBzdGFy
dGVkIGF0IDIwMDgtMDgtMDYgMDY6MzY6MTMgLTA2MDAuXQorWz09PT09PT09PT1dIFJ1bm5pbmcg
MiB0ZXN0cyBmcm9tIDEgdGVzdCBjYXNlLgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmly
b25tZW50IHNldC11cC4KK1stLS0tLS0tLS0tXSAyIHRlc3RzIGZyb20gV2lkZ2V0SW5pdGlhbGl6
ZXJUZXN0CitbIFJVTiAgICAgIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb25zdHJ1Y3Rv
cgorWyAgICAgICBPSyBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29uc3RydWN0b3IKK1sg
UlVOICAgICAgXSBXaWRnZXRJbml0aWFsaXplclRlc3QuVGVzdENvbnZlcnNpb24KK1sgICAgICAg
T0sgXSBXaWRnZXRJbml0aWFsaXplclRlc3QuVGVzdENvbnZlcnNpb24KK1stLS0tLS0tLS0tXSBH
bG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KK1s9PT09PT09PT09XSAyIHRlc3RzIGZy
b20gMSB0ZXN0IGNhc2UgcmFuLgorWyAgUEFTU0VEICBdIDIgdGVzdHMuCisKK1RoZSBEZWJ1Z2dl
ciBoYXMgZXhpdGVkIHdpdGggc3RhdHVzIDAuICAKK2BgYAorCisjIFN1bW1hcnkgIworCitVbml0
IHRlc3RpbmcgaXMgYSB2YWx1YWJsZSB3YXkgdG8gZW5zdXJlIHlvdXIgZGF0YSBtb2RlbCBzdGF5
cyB2YWxpZCBldmVuIGR1cmluZyByYXBpZCBkZXZlbG9wbWVudCBvciByZWZhY3RvcmluZy4gVGhl
IEdvb2dsZSBUZXN0aW5nIEZyYW1ld29yayBpcyBhIGdyZWF0IHVuaXQgdGVzdGluZyBmcmFtZXdv
cmsgZm9yIEMgYW5kIEMrKyB3aGljaCBpbnRlZ3JhdGVzIHdlbGwgd2l0aCBhbiBYY29kZSBkZXZl
bG9wbWVudCBlbnZpcm9ubWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2RvY3MvYWR2YW5jZWQubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL2FkdmFuY2Vk
Lm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjgwNjVkMTk2MjFhOGIzN2ZiNzhjYjVlMGVkMWI4NjE4ZmU3NjI1ZDIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL2FkdmFuY2Vk
Lm1kCkBAIC0wLDAgKzEsMjUyMCBAQAorIyBBZHZhbmNlZCBnb29nbGV0ZXN0IFRvcGljcworCisK
KyMjIEludHJvZHVjdGlvbgorCitOb3cgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBbZ29vZ2xldGVz
dCBQcmltZXJdKHByaW1lci5tZCkgYW5kIGxlYXJuZWQgaG93IHRvIHdyaXRlCit0ZXN0cyB1c2lu
ZyBnb29nbGV0ZXN0LCBpdCdzIHRpbWUgdG8gbGVhcm4gc29tZSBuZXcgdHJpY2tzLiBUaGlzIGRv
Y3VtZW50IHdpbGwKK3Nob3cgeW91IG1vcmUgYXNzZXJ0aW9ucyBhcyB3ZWxsIGFzIGhvdyB0byBj
b25zdHJ1Y3QgY29tcGxleCBmYWlsdXJlIG1lc3NhZ2VzLAorcHJvcGFnYXRlIGZhdGFsIGZhaWx1
cmVzLCByZXVzZSBhbmQgc3BlZWQgdXAgeW91ciB0ZXN0IGZpeHR1cmVzLCBhbmQgdXNlIHZhcmlv
dXMKK2ZsYWdzIHdpdGggeW91ciB0ZXN0cy4KKworIyMgTW9yZSBBc3NlcnRpb25zCisKK1RoaXMg
c2VjdGlvbiBjb3ZlcnMgc29tZSBsZXNzIGZyZXF1ZW50bHkgdXNlZCwgYnV0IHN0aWxsIHNpZ25p
ZmljYW50LAorYXNzZXJ0aW9ucy4KKworIyMjIEV4cGxpY2l0IFN1Y2Nlc3MgYW5kIEZhaWx1cmUK
KworVGhlc2UgdGhyZWUgYXNzZXJ0aW9ucyBkbyBub3QgYWN0dWFsbHkgdGVzdCBhIHZhbHVlIG9y
IGV4cHJlc3Npb24uIEluc3RlYWQsIHRoZXkKK2dlbmVyYXRlIGEgc3VjY2VzcyBvciBmYWlsdXJl
IGRpcmVjdGx5LiBMaWtlIHRoZSBtYWNyb3MgdGhhdCBhY3R1YWxseSBwZXJmb3JtIGEKK3Rlc3Qs
IHlvdSBtYXkgc3RyZWFtIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSBpbnRvIHRoZW0uCisKK2Bg
YGMrKworU1VDQ0VFRCgpOworYGBgCisKK0dlbmVyYXRlcyBhIHN1Y2Nlc3MuIFRoaXMgZG9lcyAq
Kk5PVCoqIG1ha2UgdGhlIG92ZXJhbGwgdGVzdCBzdWNjZWVkLiBBIHRlc3QgaXMKK2NvbnNpZGVy
ZWQgc3VjY2Vzc2Z1bCBvbmx5IGlmIG5vbmUgb2YgaXRzIGFzc2VydGlvbnMgZmFpbCBkdXJpbmcg
aXRzIGV4ZWN1dGlvbi4KKworTk9URTogYFNVQ0NFRUQoKWAgaXMgcHVyZWx5IGRvY3VtZW50YXJ5
IGFuZCBjdXJyZW50bHkgZG9lc24ndCBnZW5lcmF0ZSBhbnkKK3VzZXItdmlzaWJsZSBvdXRwdXQu
IEhvd2V2ZXIsIHdlIG1heSBhZGQgYFNVQ0NFRUQoKWAgbWVzc2FnZXMgdG8gZ29vZ2xldGVzdCdz
CitvdXRwdXQgaW4gdGhlIGZ1dHVyZS4KKworYGBgYysrCitGQUlMKCk7CitBRERfRkFJTFVSRSgp
OworQUREX0ZBSUxVUkVfQVQoImZpbGVfcGF0aCIsIGxpbmVfbnVtYmVyKTsKK2BgYAorCitgRkFJ
TCgpYCBnZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlLCB3aGlsZSBgQUREX0ZBSUxVUkUoKWAgYW5k
IGBBRERfRkFJTFVSRV9BVCgpYAorZ2VuZXJhdGUgYSBub25mYXRhbCBmYWlsdXJlLiBUaGVzZSBh
cmUgdXNlZnVsIHdoZW4gY29udHJvbCBmbG93LCByYXRoZXIgdGhhbiBhCitCb29sZWFuIGV4cHJl
c3Npb24sIGRldGVybWluZXMgdGhlIHRlc3QncyBzdWNjZXNzIG9yIGZhaWx1cmUuIEZvciBleGFt
cGxlLCB5b3UKK21pZ2h0IHdhbnQgdG8gd3JpdGUgc29tZXRoaW5nIGxpa2U6CisKK2BgYGMrKwor
c3dpdGNoKGV4cHJlc3Npb24pIHsKKyAgY2FzZSAxOgorICAgICAuLi4gc29tZSBjaGVja3MgLi4u
CisgIGNhc2UgMjoKKyAgICAgLi4uIHNvbWUgb3RoZXIgY2hlY2tzIC4uLgorICBkZWZhdWx0Ogor
ICAgICBGQUlMKCkgPDwgIldlIHNob3VsZG4ndCBnZXQgaGVyZS4iOworfQorYGBgCisKK05PVEU6
IHlvdSBjYW4gb25seSB1c2UgYEZBSUwoKWAgaW4gZnVuY3Rpb25zIHRoYXQgcmV0dXJuIGB2b2lk
YC4gU2VlIHRoZQorW0Fzc2VydGlvbiBQbGFjZW1lbnQgc2VjdGlvbl0oI2Fzc2VydGlvbi1wbGFj
ZW1lbnQpIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwg
V2luZG93cywgTWFjLgorCisjIyMgRXhjZXB0aW9uIEFzc2VydGlvbnMKKworVGhlc2UgYXJlIGZv
ciB2ZXJpZnlpbmcgdGhhdCBhIHBpZWNlIG9mIGNvZGUgdGhyb3dzIChvciBkb2VzIG5vdCB0aHJv
dykgYW4KK2V4Y2VwdGlvbiBvZiB0aGUgZ2l2ZW4gdHlwZToKKworRmF0YWwgYXNzZXJ0aW9uICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgVmVyaWZpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8
IC0tLS0tLS0tCitgQVNTRVJUX1RIUk9XKHN0YXRlbWVudCwgZXhjZXB0aW9uX3R5cGUpO2AgfCBg
RVhQRUNUX1RIUk9XKHN0YXRlbWVudCwgZXhjZXB0aW9uX3R5cGUpO2AgfCBgc3RhdGVtZW50YCB0
aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHRoZSBnaXZlbiB0eXBlCitgQVNTRVJUX0FOWV9USFJPVyhz
dGF0ZW1lbnQpO2AgICAgICAgICAgICAgfCBgRVhQRUNUX0FOWV9USFJPVyhzdGF0ZW1lbnQpO2Ag
ICAgICAgICAgICAgfCBgc3RhdGVtZW50YCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIGFueSB0eXBl
CitgQVNTRVJUX05PX1RIUk9XKHN0YXRlbWVudCk7YCAgICAgICAgICAgICAgfCBgRVhQRUNUX05P
X1RIUk9XKHN0YXRlbWVudCk7YCAgICAgICAgICAgICAgfCBgc3RhdGVtZW50YCBkb2Vzbid0IHRo
cm93IGFueSBleGNlcHRpb24KKworRXhhbXBsZXM6CisKK2BgYGMrKworQVNTRVJUX1RIUk9XKEZv
byg1KSwgYmFyX2V4Y2VwdGlvbik7CisKK0VYUEVDVF9OT19USFJPVyh7CisgIGludCBuID0gNTsK
KyAgQmFyKCZuKTsKK30pOworYGBgCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dz
LCBNYWM7IHJlcXVpcmVzIGV4Y2VwdGlvbnMgdG8gYmUgZW5hYmxlZCBpbiB0aGUKK2J1aWxkIGVu
dmlyb25tZW50IChub3RlIHRoYXQgYGdvb2dsZTNgICoqZGlzYWJsZXMqKiBleGNlcHRpb25zKS4K
KworIyMjIFByZWRpY2F0ZSBBc3NlcnRpb25zIGZvciBCZXR0ZXIgRXJyb3IgTWVzc2FnZXMKKwor
RXZlbiB0aG91Z2ggZ29vZ2xldGVzdCBoYXMgYSByaWNoIHNldCBvZiBhc3NlcnRpb25zLCB0aGV5
IGNhbiBuZXZlciBiZSBjb21wbGV0ZSwKK2FzIGl0J3MgaW1wb3NzaWJsZSAobm9yIGEgZ29vZCBp
ZGVhKSB0byBhbnRpY2lwYXRlIGFsbCBzY2VuYXJpb3MgYSB1c2VyIG1pZ2h0CitydW4gaW50by4g
VGhlcmVmb3JlLCBzb21ldGltZXMgYSB1c2VyIGhhcyB0byB1c2UgYEVYUEVDVF9UUlVFKClgIHRv
IGNoZWNrIGEKK2NvbXBsZXggZXhwcmVzc2lvbiwgZm9yIGxhY2sgb2YgYSBiZXR0ZXIgbWFjcm8u
IFRoaXMgaGFzIHRoZSBwcm9ibGVtIG9mIG5vdAorc2hvd2luZyB5b3UgdGhlIHZhbHVlcyBvZiB0
aGUgcGFydHMgb2YgdGhlIGV4cHJlc3Npb24sIG1ha2luZyBpdCBoYXJkIHRvCit1bmRlcnN0YW5k
IHdoYXQgd2VudCB3cm9uZy4gQXMgYSB3b3JrYXJvdW5kLCBzb21lIHVzZXJzIGNob29zZSB0byBj
b25zdHJ1Y3QgdGhlCitmYWlsdXJlIG1lc3NhZ2UgYnkgdGhlbXNlbHZlcywgc3RyZWFtaW5nIGl0
IGludG8gYEVYUEVDVF9UUlVFKClgLiBIb3dldmVyLCB0aGlzCitpcyBhd2t3YXJkIGVzcGVjaWFs
bHkgd2hlbiB0aGUgZXhwcmVzc2lvbiBoYXMgc2lkZS1lZmZlY3RzIG9yIGlzIGV4cGVuc2l2ZSB0
bworZXZhbHVhdGUuCisKK2dvb2dsZXRlc3QgZ2l2ZXMgeW91IHRocmVlIGRpZmZlcmVudCBvcHRp
b25zIHRvIHNvbHZlIHRoaXMgcHJvYmxlbToKKworIyMjIyBVc2luZyBhbiBFeGlzdGluZyBCb29s
ZWFuIEZ1bmN0aW9uCisKK0lmIHlvdSBhbHJlYWR5IGhhdmUgYSBmdW5jdGlvbiBvciBmdW5jdG9y
IHRoYXQgcmV0dXJucyBgYm9vbGAgKG9yIGEgdHlwZSB0aGF0CitjYW4gYmUgaW1wbGljaXRseSBj
b252ZXJ0ZWQgdG8gYGJvb2xgKSwgeW91IGNhbiB1c2UgaXQgaW4gYSAqcHJlZGljYXRlCithc3Nl
cnRpb24qIHRvIGdldCB0aGUgZnVuY3Rpb24gYXJndW1lbnRzIHByaW50ZWQgZm9yIGZyZWU6CisK
K3wgRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlv
biAgICAgICAgICAgICAgICAgfCBWZXJpZmllcyAgICAgICAgICAgICAgICAgICAgfAorfCAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8Cit8IGBBU1NFUlRfUFJF
RDEocHJlZDEsIHZhbDEpO2AgICAgICAgfCBgRVhQRUNUX1BSRUQxKHByZWQxLCB2YWwxKTtgICAg
ICAgIHwgYHByZWQxKHZhbDEpYCBpcyB0cnVlICAgICAgIHwKK3wgYEFTU0VSVF9QUkVEMihwcmVk
MiwgdmFsMSwgdmFsMik7YCB8IGBFWFBFQ1RfUFJFRDIocHJlZDIsIHZhbDEsIHZhbDIpO2AgfCBg
cHJlZDIodmFsMSwgdmFsMilgIGlzIHRydWUgfAorfCBgLi4uYCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgYC4uLmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IC4uLiAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisKK0luIHRoZSBhYm92ZSwgYHByZWRuYCBpcyBhbiBgbmAt
YXJ5IHByZWRpY2F0ZSBmdW5jdGlvbiBvciBmdW5jdG9yLCB3aGVyZSBgdmFsMWAsCitgdmFsMmAs
IC4uLiwgYW5kIGB2YWxuYCBhcmUgaXRzIGFyZ3VtZW50cy4gVGhlIGFzc2VydGlvbiBzdWNjZWVk
cyBpZiB0aGUKK3ByZWRpY2F0ZSByZXR1cm5zIGB0cnVlYCB3aGVuIGFwcGxpZWQgdG8gdGhlIGdp
dmVuIGFyZ3VtZW50cywgYW5kIGZhaWxzCitvdGhlcndpc2UuIFdoZW4gdGhlIGFzc2VydGlvbiBm
YWlscywgaXQgcHJpbnRzIHRoZSB2YWx1ZSBvZiBlYWNoIGFyZ3VtZW50LiBJbgorZWl0aGVyIGNh
c2UsIHRoZSBhcmd1bWVudHMgYXJlIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuCisKK0hlcmUncyBh
biBleGFtcGxlLiBHaXZlbgorCitgYGBjKysKKy8vIFJldHVybnMgdHJ1ZSBpZiBtIGFuZCBuIGhh
dmUgbm8gY29tbW9uIGRpdmlzb3JzIGV4Y2VwdCAxLgorYm9vbCBNdXR1YWxseVByaW1lKGludCBt
LCBpbnQgbikgeyAuLi4gfQorCitjb25zdCBpbnQgYSA9IDM7Citjb25zdCBpbnQgYiA9IDQ7Citj
b25zdCBpbnQgYyA9IDEwOworYGBgCisKK3RoZSBhc3NlcnRpb24KKworYGBgYysrCisgIEVYUEVD
VF9QUkVEMihNdXR1YWxseVByaW1lLCBhLCBiKTsKK2BgYAorCit3aWxsIHN1Y2NlZWQsIHdoaWxl
IHRoZSBhc3NlcnRpb24KKworYGBgYysrCisgIEVYUEVDVF9QUkVEMihNdXR1YWxseVByaW1lLCBi
LCBjKTsKK2BgYAorCit3aWxsIGZhaWwgd2l0aCB0aGUgbWVzc2FnZQorCitgYGBub25lCitNdXR1
YWxseVByaW1lKGIsIGMpIGlzIGZhbHNlLCB3aGVyZQorYiBpcyA0CitjIGlzIDEwCitgYGAKKwor
PiBOT1RFOgorPgorPiAxLiAgSWYgeW91IHNlZSBhIGNvbXBpbGVyIGVycm9yICJubyBtYXRjaGlu
ZyBmdW5jdGlvbiB0byBjYWxsIiB3aGVuIHVzaW5nCis+ICAgICBgQVNTRVJUX1BSRUQqYCBvciBg
RVhQRUNUX1BSRUQqYCwgcGxlYXNlIHNlZQorPiAgICAgW3RoaXNdKGZhcS5tZCNPdmVybG9hZGVk
UHJlZGljYXRlKSBmb3IgaG93IHRvIHJlc29sdmUgaXQuCis+IDEuICBDdXJyZW50bHkgd2Ugb25s
eSBwcm92aWRlIHByZWRpY2F0ZSBhc3NlcnRpb25zIG9mIGFyaXR5IDw9IDUuIElmIHlvdSBuZWVk
Cis+ICAgICBhIGhpZ2hlci1hcml0eSBhc3NlcnRpb24sIGxldCBbdXNdKGh0dHBzOi8vZ2l0aHVi
LmNvbS9nb29nbGUvZ29vZ2xldGVzdC9pc3N1ZXMpIGtub3cuCisKKyoqQXZhaWxhYmlsaXR5Kio6
IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyMgVXNpbmcgYSBGdW5jdGlvbiBUaGF0IFJldHVy
bnMgYW4gQXNzZXJ0aW9uUmVzdWx0CisKK1doaWxlIGBFWFBFQ1RfUFJFRCooKWAgYW5kIGZyaWVu
ZHMgYXJlIGhhbmR5IGZvciBhIHF1aWNrIGpvYiwgdGhlIHN5bnRheCBpcyBub3QKK3NhdGlzZmFj
dG9yeTogeW91IGhhdmUgdG8gdXNlIGRpZmZlcmVudCBtYWNyb3MgZm9yIGRpZmZlcmVudCBhcml0
aWVzLCBhbmQgaXQKK2ZlZWxzIG1vcmUgbGlrZSBMaXNwIHRoYW4gQysrLiBUaGUgYDo6dGVzdGlu
Zzo6QXNzZXJ0aW9uUmVzdWx0YCBjbGFzcyBzb2x2ZXMKK3RoaXMgcHJvYmxlbS4KKworQW4gYEFz
c2VydGlvblJlc3VsdGAgb2JqZWN0IHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBhbiBhc3NlcnRp
b24gKHdoZXRoZXIgaXQncworYSBzdWNjZXNzIG9yIGEgZmFpbHVyZSwgYW5kIGFuIGFzc29jaWF0
ZWQgbWVzc2FnZSkuIFlvdSBjYW4gY3JlYXRlIGFuCitgQXNzZXJ0aW9uUmVzdWx0YCB1c2luZyBv
bmUgb2YgdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnM6CisKK2BgYGMrKworbmFtZXNwYWNlIHRlc3Rp
bmcgeworCisvLyBSZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUg
dGhhdCBhbiBhc3NlcnRpb24gaGFzCisvLyBzdWNjZWVkZWQuCitBc3NlcnRpb25SZXN1bHQgQXNz
ZXJ0aW9uU3VjY2VzcygpOworCisvLyBSZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3Qg
dG8gaW5kaWNhdGUgdGhhdCBhbiBhc3NlcnRpb24gaGFzCisvLyBmYWlsZWQuCitBc3NlcnRpb25S
ZXN1bHQgQXNzZXJ0aW9uRmFpbHVyZSgpOworCit9CitgYGAKKworWW91IGNhbiB0aGVuIHVzZSB0
aGUgYDw8YCBvcGVyYXRvciB0byBzdHJlYW0gbWVzc2FnZXMgdG8gdGhlIGBBc3NlcnRpb25SZXN1
bHRgCitvYmplY3QuCisKK1RvIHByb3ZpZGUgbW9yZSByZWFkYWJsZSBtZXNzYWdlcyBpbiBCb29s
ZWFuIGFzc2VydGlvbnMgKGUuZy4gYEVYUEVDVF9UUlVFKClgKSwKK3dyaXRlIGEgcHJlZGljYXRl
IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgQXNzZXJ0aW9uUmVzdWx0YCBpbnN0ZWFkIG9mIGBib29s
YC4gRm9yCitleGFtcGxlLCBpZiB5b3UgZGVmaW5lIGBJc0V2ZW4oKWAgYXM6CisKK2BgYGMrKwor
Ojp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgSXNFdmVuKGludCBuKSB7CisgIGlmICgobiAlIDIp
ID09IDApCisgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKKyAgZWxz
ZQorICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgbiA8PCAiIGlz
IG9kZCI7Cit9CitgYGAKKworaW5zdGVhZCBvZjoKKworYGBgYysrCitib29sIElzRXZlbihpbnQg
bikgeworICByZXR1cm4gKG4gJSAyKSA9PSAwOworfQorYGBgCisKK3RoZSBmYWlsZWQgYXNzZXJ0
aW9uIGBFWFBFQ1RfVFJVRShJc0V2ZW4oRmliKDQpKSlgIHdpbGwgcHJpbnQ6CisKK2BgYG5vbmUK
K1ZhbHVlIG9mOiBJc0V2ZW4oRmliKDQpKQorICBBY3R1YWw6IGZhbHNlICgzIGlzIG9kZCkKK0V4
cGVjdGVkOiB0cnVlCitgYGAKKworaW5zdGVhZCBvZiBhIG1vcmUgb3BhcXVlCisKK2BgYG5vbmUK
K1ZhbHVlIG9mOiBJc0V2ZW4oRmliKDQpKQorICBBY3R1YWw6IGZhbHNlCitFeHBlY3RlZDogdHJ1
ZQorYGBgCisKK0lmIHlvdSB3YW50IGluZm9ybWF0aXZlIG1lc3NhZ2VzIGluIGBFWFBFQ1RfRkFM
U0VgIGFuZCBgQVNTRVJUX0ZBTFNFYCBhcyB3ZWxsCisob25lIHRoaXJkIG9mIEJvb2xlYW4gYXNz
ZXJ0aW9ucyBpbiB0aGUgR29vZ2xlIGNvZGUgYmFzZSBhcmUgbmVnYXRpdmUgb25lcyksIGFuZAor
YXJlIGZpbmUgd2l0aCBtYWtpbmcgdGhlIHByZWRpY2F0ZSBzbG93ZXIgaW4gdGhlIHN1Y2Nlc3Mg
Y2FzZSwgeW91IGNhbiBzdXBwbHkgYQorc3VjY2VzcyBtZXNzYWdlOgorCitgYGBjKysKKzo6dGVz
dGluZzo6QXNzZXJ0aW9uUmVzdWx0IElzRXZlbihpbnQgbikgeworICBpZiAoKG4gJSAyKSA9PSAw
KQorICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCkgPDwgbiA8PCAiIGlz
IGV2ZW4iOworICBlbHNlCisgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUo
KSA8PCBuIDw8ICIgaXMgb2RkIjsKK30KK2BgYAorCitUaGVuIHRoZSBzdGF0ZW1lbnQgYEVYUEVD
VF9GQUxTRShJc0V2ZW4oRmliKDYpKSlgIHdpbGwgcHJpbnQKKworYGBgbm9uZQorICBWYWx1ZSBv
ZjogSXNFdmVuKEZpYig2KSkKKyAgICAgQWN0dWFsOiB0cnVlICg4IGlzIGV2ZW4pCisgIEV4cGVj
dGVkOiBmYWxzZQorYGBgCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKKyMjIyMgVXNpbmcgYSBQcmVkaWNhdGUtRm9ybWF0dGVyCisKK0lmIHlvdSBmaW5kIHRoZSBk
ZWZhdWx0IG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IGAoQVNTRVJUfEVYUEVDVClfUFJFRCpgIGFuZAor
YChBU1NFUlR8RVhQRUNUKV8oVFJVRXxGQUxTRSlgIHVuc2F0aXNmYWN0b3J5LCBvciBzb21lIGFy
Z3VtZW50cyB0byB5b3VyCitwcmVkaWNhdGUgZG8gbm90IHN1cHBvcnQgc3RyZWFtaW5nIHRvIGBv
c3RyZWFtYCwgeW91IGNhbiBpbnN0ZWFkIHVzZSB0aGUKK2ZvbGxvd2luZyAqcHJlZGljYXRlLWZv
cm1hdHRlciBhc3NlcnRpb25zKiB0byAqZnVsbHkqIGN1c3RvbWl6ZSBob3cgdGhlIG1lc3NhZ2UK
K2lzIGZvcm1hdHRlZDoKKworRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgVmVyaWZpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSB8IC0tLS0tLS0tCitgQVNTRVJUX1BSRURfRk9STUFUMShwcmVkX2Zvcm1hdDEsIHZhbDEpO2Ag
ICAgICAgfCBgRVhQRUNUX1BSRURfRk9STUFUMShwcmVkX2Zvcm1hdDEsIHZhbDEpO2AgICAgICAg
fCBgcHJlZF9mb3JtYXQxKHZhbDEpYCBpcyBzdWNjZXNzZnVsCitgQVNTRVJUX1BSRURfRk9STUFU
MihwcmVkX2Zvcm1hdDIsIHZhbDEsIHZhbDIpO2AgfCBgRVhQRUNUX1BSRURfRk9STUFUMihwcmVk
X2Zvcm1hdDIsIHZhbDEsIHZhbDIpO2AgfCBgcHJlZF9mb3JtYXQyKHZhbDEsIHZhbDIpYCBpcyBz
dWNjZXNzZnVsCitgLi4uYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCBgLi4uYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAu
Li4KKworVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIGFuZCB0aGUgcHJldmlvdXMgZ3JvdXAg
b2YgbWFjcm9zIGlzIHRoYXQgaW5zdGVhZCBvZgorYSBwcmVkaWNhdGUsIGAoQVNTRVJUfEVYUEVD
VClfUFJFRF9GT1JNQVQqYCB0YWtlIGEgKnByZWRpY2F0ZS1mb3JtYXR0ZXIqCisoYHByZWRfZm9y
bWF0bmApLCB3aGljaCBpcyBhIGZ1bmN0aW9uIG9yIGZ1bmN0b3Igd2l0aCB0aGUgc2lnbmF0dXJl
OgorCitgYGBjKysKKzo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRpY2F0ZUZvcm1hdHRl
cm4oY29uc3QgY2hhciogZXhwcjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cHIyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwcm4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQxIHZhbDEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQyIHZhbDIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUbiB2YWxuKTsKK2BgYAorCit3aGVyZSBgdmFsMWAsIGB2
YWwyYCwgLi4uLCBhbmQgYHZhbG5gIGFyZSB0aGUgdmFsdWVzIG9mIHRoZSBwcmVkaWNhdGUgYXJn
dW1lbnRzLAorYW5kIGBleHByMWAsIGBleHByMmAsIC4uLiwgYW5kIGBleHBybmAgYXJlIHRoZSBj
b3JyZXNwb25kaW5nIGV4cHJlc3Npb25zIGFzIHRoZXkKK2FwcGVhciBpbiB0aGUgc291cmNlIGNv
ZGUuIFRoZSB0eXBlcyBgVDFgLCBgVDJgLCAuLi4sIGFuZCBgVG5gIGNhbiBiZSBlaXRoZXIKK3Zh
bHVlIHR5cGVzIG9yIHJlZmVyZW5jZSB0eXBlcy4gRm9yIGV4YW1wbGUsIGlmIGFuIGFyZ3VtZW50
IGhhcyB0eXBlIGBGb29gLCB5b3UKK2NhbiBkZWNsYXJlIGl0IGFzIGVpdGhlciBgRm9vYCBvciBg
Y29uc3QgRm9vJmAsIHdoaWNoZXZlciBpcyBhcHByb3ByaWF0ZS4KKworQXMgYW4gZXhhbXBsZSwg
bGV0J3MgaW1wcm92ZSB0aGUgZmFpbHVyZSBtZXNzYWdlIGluIGBNdXR1YWxseVByaW1lKClgLCB3
aGljaCB3YXMKK3VzZWQgd2l0aCBgRVhQRUNUX1BSRUQyKClgOgorCitgYGBjKysKKy8vIFJldHVy
bnMgdGhlIHNtYWxsZXN0IHByaW1lIGNvbW1vbiBkaXZpc29yIG9mIG0gYW5kIG4sCisvLyBvciAx
IHdoZW4gbSBhbmQgbiBhcmUgbXV0dWFsbHkgcHJpbWUuCitpbnQgU21hbGxlc3RQcmltZUNvbW1v
bkRpdmlzb3IoaW50IG0sIGludCBuKSB7IC4uLiB9CisKKy8vIEEgcHJlZGljYXRlLWZvcm1hdHRl
ciBmb3IgYXNzZXJ0aW5nIHRoYXQgdHdvIGludGVnZXJzIGFyZSBtdXR1YWxseSBwcmltZS4KKzo6
dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IEFzc2VydE11dHVhbGx5UHJpbWUoY29uc3QgY2hhciog
bV9leHByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBuX2V4cHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgbikgeworICBpZiAoTXV0dWFsbHlQcmltZShtLCBuKSkgcmV0dXJuIDo6dGVz
dGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOworCisgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlv
bkZhaWx1cmUoKSA8PCBtX2V4cHIgPDwgIiBhbmQgIiA8PCBuX2V4cHIKKyAgICAgIDw8ICIgKCIg
PDwgbSA8PCAiIGFuZCAiIDw8IG4gPDwgIikgYXJlIG5vdCBtdXR1YWxseSBwcmltZSwgIgorICAg
ICAgPDwgImFzIHRoZXkgaGF2ZSBhIGNvbW1vbiBkaXZpc29yICIgPDwgU21hbGxlc3RQcmltZUNv
bW1vbkRpdmlzb3IobSwgbik7Cit9CitgYGAKKworV2l0aCB0aGlzIHByZWRpY2F0ZS1mb3JtYXR0
ZXIsIHdlIGNhbiB1c2UKKworYGBgYysrCisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoQXNzZXJ0TXV0
dWFsbHlQcmltZSwgYiwgYyk7CitgYGAKKwordG8gZ2VuZXJhdGUgdGhlIG1lc3NhZ2UKKworYGBg
bm9uZQorYiBhbmQgYyAoNCBhbmQgMTApIGFyZSBub3QgbXV0dWFsbHkgcHJpbWUsIGFzIHRoZXkg
aGF2ZSBhIGNvbW1vbiBkaXZpc29yIDIuCitgYGAKKworQXMgeW91IG1heSBoYXZlIHJlYWxpemVk
LCBtYW55IG9mIHRoZSBidWlsdC1pbiBhc3NlcnRpb25zIHdlIGludHJvZHVjZWQgZWFybGllcgor
YXJlIHNwZWNpYWwgY2FzZXMgb2YgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZPUk1BVCpgLiBJbiBm
YWN0LCBtb3N0IG9mIHRoZW0gYXJlCitpbmRlZWQgZGVmaW5lZCB1c2luZyBgKEVYUEVDVHxBU1NF
UlQpX1BSRURfRk9STUFUKmAuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBN
YWMuCisKKyMjIyBGbG9hdGluZy1Qb2ludCBDb21wYXJpc29uCisKK0NvbXBhcmluZyBmbG9hdGlu
Zy1wb2ludCBudW1iZXJzIGlzIHRyaWNreS4gRHVlIHRvIHJvdW5kLW9mZiBlcnJvcnMsIGl0IGlz
IHZlcnkKK3VubGlrZWx5IHRoYXQgdHdvIGZsb2F0aW5nLXBvaW50cyB3aWxsIG1hdGNoIGV4YWN0
bHkuIFRoZXJlZm9yZSwgYEFTU0VSVF9FUWAgJ3MKK25haXZlIGNvbXBhcmlzb24gdXN1YWxseSBk
b2Vzbid0IHdvcmsuIEFuZCBzaW5jZSBmbG9hdGluZy1wb2ludHMgY2FuIGhhdmUgYSB3aWRlCit2
YWx1ZSByYW5nZSwgbm8gc2luZ2xlIGZpeGVkIGVycm9yIGJvdW5kIHdvcmtzLiBJdCdzIGJldHRl
ciB0byBjb21wYXJlIGJ5IGEKK2ZpeGVkIHJlbGF0aXZlIGVycm9yIGJvdW5kLCBleGNlcHQgZm9y
IHZhbHVlcyBjbG9zZSB0byAwIGR1ZSB0byB0aGUgbG9zcyBvZgorcHJlY2lzaW9uIHRoZXJlLgor
CitJbiBnZW5lcmFsLCBmb3IgZmxvYXRpbmctcG9pbnQgY29tcGFyaXNvbiB0byBtYWtlIHNlbnNl
LCB0aGUgdXNlciBuZWVkcyB0bworY2FyZWZ1bGx5IGNob29zZSB0aGUgZXJyb3IgYm91bmQuIElm
IHRoZXkgZG9uJ3Qgd2FudCBvciBjYXJlIHRvLCBjb21wYXJpbmcgaW4KK3Rlcm1zIG9mIFVuaXRz
IGluIHRoZSBMYXN0IFBsYWNlIChVTFBzKSBpcyBhIGdvb2QgZGVmYXVsdCwgYW5kIGdvb2dsZXRl
c3QKK3Byb3ZpZGVzIGFzc2VydGlvbnMgdG8gZG8gdGhpcy4gRnVsbCBkZXRhaWxzIGFib3V0IFVM
UHMgYXJlIHF1aXRlIGxvbmc7IGlmIHlvdQord2FudCB0byBsZWFybiBtb3JlLCBzZWUKK1toZXJl
XShodHRwczovL3JhbmRvbWFzY2lpLndvcmRwcmVzcy5jb20vMjAxMi8wMi8yNS9jb21wYXJpbmct
ZmxvYXRpbmctcG9pbnQtbnVtYmVycy0yMDEyLWVkaXRpb24vKS4KKworIyMjIyBGbG9hdGluZy1Q
b2ludCBNYWNyb3MKKworfCBGYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgIHwgTm9uZmF0
YWwgYXNzZXJ0aW9uICAgICAgICAgICAgIHwgVmVyaWZpZXMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8Cit8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIHwKK3wgYEFTU0VSVF9GTE9BVF9FUSh2YWwxLCB2YWwyKTtgICB8IGBFWFBFQ1Rf
RkxPQVRfRVEodmFsMSx2YWwyKTtgICB8IHRoZSB0d28gYGZsb2F0YCB2YWx1ZXMgYXJlIGFsbW9z
dCBlcXVhbCAgfAorfCBgQVNTRVJUX0RPVUJMRV9FUSh2YWwxLCB2YWwyKTtgIHwgYEVYUEVDVF9E
T1VCTEVfRVEodmFsMSwgdmFsMik7YHwgdGhlIHR3byBgZG91YmxlYCB2YWx1ZXMgYXJlIGFsbW9z
dCBlcXVhbCB8CisKK0J5ICJhbG1vc3QgZXF1YWwiIHdlIG1lYW4gdGhlIHZhbHVlcyBhcmUgd2l0
aGluIDQgVUxQJ3MgZnJvbSBlYWNoIG90aGVyLgorCitOT1RFOiBgQ0hFQ0tfRE9VQkxFX0VRKClg
IGluIGBiYXNlL2xvZ2dpbmcuaGAgdXNlcyBhIGZpeGVkIGFic29sdXRlIGVycm9yIGJvdW5kLAor
c28gaXRzIHJlc3VsdCBtYXkgZGlmZmVyIGZyb20gdGhhdCBvZiB0aGUgZ29vZ2xldGVzdCBtYWNy
b3MuIFRoYXQgbWFjcm8gaXMKK3Vuc2FmZSBhbmQgaGFzIGJlZW4gZGVwcmVjYXRlZC4gUGxlYXNl
IGRvbid0IHVzZSBpdCBhbnkgbW9yZS4KKworVGhlIGZvbGxvd2luZyBhc3NlcnRpb25zIGFsbG93
IHlvdSB0byBjaG9vc2UgdGhlIGFjY2VwdGFibGUgZXJyb3IgYm91bmQ6CisKK3wgRmF0YWwgYXNz
ZXJ0aW9uICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAgICAg
ICAgICAgICAgICAgfCBWZXJpZmllcyAgICAgICAgICAgICAgICAgIHwKK3wgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKK3wgYEFTU0VSVF9ORUFSKHZh
bDEsIHZhbDIsIGFic19lcnJvcik7YCB8IGBFWFBFQ1RfTkVBUih2YWwxLCB2YWwyLCBhYnNfZXJy
b3IpO2AgfCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGB2YWwxYCBhbmQgYHZhbDJgIGRvZXNuJ3Qg
ZXhjZWVkIHRoZSBnaXZlbiBhYnNvbHV0ZSBlcnJvciB8CisKKyoqQXZhaWxhYmlsaXR5Kio6IExp
bnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyMgRmxvYXRpbmctUG9pbnQgUHJlZGljYXRlLUZvcm1h
dCBGdW5jdGlvbnMKKworU29tZSBmbG9hdGluZy1wb2ludCBvcGVyYXRpb25zIGFyZSB1c2VmdWws
IGJ1dCBub3QgdGhhdCBvZnRlbiB1c2VkLiBJbiBvcmRlciB0bworYXZvaWQgYW4gZXhwbG9zaW9u
IG9mIG5ldyBtYWNyb3MsIHdlIHByb3ZpZGUgdGhlbSBhcyBwcmVkaWNhdGUtZm9ybWF0IGZ1bmN0
aW9ucwordGhhdCBjYW4gYmUgdXNlZCBpbiBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3JvcyAoZS5n
LiBgRVhQRUNUX1BSRURfRk9STUFUMmAsCitldGMpLgorCitgYGBjKysKK0VYUEVDVF9QUkVEX0ZP
Uk1BVDIoOjp0ZXN0aW5nOjpGbG9hdExFLCB2YWwxLCB2YWwyKTsKK0VYUEVDVF9QUkVEX0ZPUk1B
VDIoOjp0ZXN0aW5nOjpEb3VibGVMRSwgdmFsMSwgdmFsMik7CitgYGAKKworVmVyaWZpZXMgdGhh
dCBgdmFsMWAgaXMgbGVzcyB0aGFuLCBvciBhbG1vc3QgZXF1YWwgdG8sIGB2YWwyYC4gWW91IGNh
biByZXBsYWNlCitgRVhQRUNUX1BSRURfRk9STUFUMmAgaW4gdGhlIGFib3ZlIHRhYmxlIHdpdGgg
YEFTU0VSVF9QUkVEX0ZPUk1BVDJgLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93
cywgTWFjLgorCisjIyMgQXNzZXJ0aW5nIFVzaW5nIGdNb2NrIE1hdGNoZXJzCisKK0dvb2dsZS1k
ZXZlbG9wZWQgQysrIG1vY2tpbmcgZnJhbWV3b3JrIFtnTW9ja10oLi4vLi4vZ29vZ2xlbW9jaykg
Y29tZXMgd2l0aCBhCitsaWJyYXJ5IG9mIG1hdGNoZXJzIGZvciB2YWxpZGF0aW5nIGFyZ3VtZW50
cyBwYXNzZWQgdG8gbW9jayBvYmplY3RzLiBBIGdNb2NrCisqbWF0Y2hlciogaXMgYmFzaWNhbGx5
IGEgcHJlZGljYXRlIHRoYXQga25vd3MgaG93IHRvIGRlc2NyaWJlIGl0c2VsZi4gSXQgY2FuIGJl
Cit1c2VkIGluIHRoZXNlIGFzc2VydGlvbiBtYWNyb3M6CisKK3wgRmF0YWwgYXNzZXJ0aW9uICAg
ICAgICAgICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgIHwgVmVyaWZpZXMg
ICAgICAgICAgICAgIHwKK3wgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKK3wgYEFT
U0VSVF9USEFUKHZhbHVlLCBtYXRjaGVyKTtgIHwgYEVYUEVDVF9USEFUKHZhbHVlLCBtYXRjaGVy
KTtgIHwgdmFsdWUgbWF0Y2hlcyBtYXRjaGVyIHwKKworRm9yIGV4YW1wbGUsIGBTdGFydHNXaXRo
KHByZWZpeClgIGlzIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYSBzdHJpbmcgc3RhcnRpbmcKK3dp
dGggYHByZWZpeGAsIGFuZCB5b3UgY2FuIHdyaXRlOgorCitgYGBjKysKK3VzaW5nIDo6dGVzdGlu
Zzo6U3RhcnRzV2l0aDsKKy4uLgorICAgIC8vIFZlcmlmaWVzIHRoYXQgRm9vKCkgcmV0dXJucyBh
IHN0cmluZyBzdGFydGluZyB3aXRoICJIZWxsbyIuCisgICAgRVhQRUNUX1RIQVQoRm9vKCksIFN0
YXJ0c1dpdGgoIkhlbGxvIikpOworYGBgCisKK1JlYWQgdGhpcyBbcmVjaXBlXSguLi8uLi9nb29n
bGVtb2NrL2RvY3MvQ29va0Jvb2subWQjdXNpbmctbWF0Y2hlcnMtaW4tZ29vZ2xlLXRlc3QtYXNz
ZXJ0aW9ucykgaW4KK3RoZSBnTW9jayBDb29rYm9vayBmb3IgbW9yZSBkZXRhaWxzLgorCitnTW9j
ayBoYXMgYSByaWNoIHNldCBvZiBtYXRjaGVycy4gWW91IGNhbiBkbyBtYW55IHRoaW5ncyBnb29n
bGV0ZXN0IGNhbm5vdCBkbworYWxvbmUgd2l0aCB0aGVtLiBGb3IgYSBsaXN0IG9mIG1hdGNoZXJz
IGdNb2NrIHByb3ZpZGVzLCByZWFkCitbdGhpc10oLi4vLi4vZ29vZ2xlbW9jay9kb2NzL0Nvb2tC
b29rLm1kI3VzaW5nLW1hdGNoZXJzKS4gRXNwZWNpYWxseSB1c2VmdWwgYW1vbmcgdGhlbSBhcmUK
K3NvbWUgW3Byb3RvY29sIGJ1ZmZlciBtYXRjaGVyc10oaHR0cHM6Ly9naXRodWIuY29tL2dvb2ds
ZS9udWNsZXVzL2Jsb2IvbWFzdGVyL251Y2xldXMvdGVzdGluZy9wcm90b2NvbC1idWZmZXItbWF0
Y2hlcnMuaCkuIEl0J3MgZWFzeSB0byB3cml0ZQoreW91ciBbb3duIG1hdGNoZXJzXSguLi8uLi9n
b29nbGVtb2NrL2RvY3MvQ29va0Jvb2subWQjd3JpdGluZy1uZXctbWF0Y2hlcnMtcXVpY2tseSkg
dG9vLgorCitGb3IgZXhhbXBsZSwgeW91IGNhbiB1c2UgZ01vY2sncworW0VxdWFsc1Byb3RvXSho
dHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL251Y2xldXMvYmxvYi9tYXN0ZXIvbnVjbGV1cy90ZXN0
aW5nL3Byb3RvY29sLWJ1ZmZlci1tYXRjaGVycy5oKQordG8gY29tcGFyZSBwcm90b3MgaW4geW91
ciB0ZXN0czoKKworYGBgYysrCisjaW5jbHVkZSAidGVzdGluZy9iYXNlL3B1YmxpYy9nbW9jay5o
IgordXNpbmcgOjp0ZXN0aW5nOjpFcXVhbHNQcm90bzsKKy4uLgorICAgIEVYUEVDVF9USEFUKGFj
dHVhbF9wcm90bywgRXF1YWxzUHJvdG8oImZvbzogMTIzIGJhcjogJ3h5eiciKSk7CisgICAgRVhQ
RUNUX1RIQVQoKmFjdHVhbF9wcm90b19wdHIsIEVxdWFsc1Byb3RvKGV4cGVjdGVkX3Byb3RvKSk7
CitgYGAKKworZ01vY2sgaXMgYnVuZGxlZCB3aXRoIGdvb2dsZXRlc3QsIHNvIHlvdSBkb24ndCBu
ZWVkIHRvIGFkZCBhbnkgYnVpbGQgZGVwZW5kZW5jeQoraW4gb3JkZXIgdG8gdGFrZSBhZHZhbnRh
Z2Ugb2YgdGhpcy4gSnVzdCBpbmNsdWRlIGAidGVzdGluZy9iYXNlL3B1YmxpYy9nbW9jay5oImAK
K2FuZCB5b3UncmUgcmVhZHkgdG8gZ28uCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5k
b3dzLCBhbmQgTWFjLgorCisjIyMgTW9yZSBTdHJpbmcgQXNzZXJ0aW9ucworCisoUGxlYXNlIHJl
YWQgdGhlIFtwcmV2aW91c10oI0Fzc2VydFRoYXQpIHNlY3Rpb24gZmlyc3QgaWYgeW91IGhhdmVu
J3QuKQorCitZb3UgY2FuIHVzZSB0aGUgZ01vY2sgW3N0cmluZyBtYXRjaGVyc10oLi4vLi4vZ29v
Z2xlbW9jay9kb2NzL0NoZWF0U2hlZXQubWQjc3RyaW5nLW1hdGNoZXJzKQord2l0aCBgRVhQRUNU
X1RIQVQoKWAgb3IgYEFTU0VSVF9USEFUKClgIHRvIGRvIG1vcmUgc3RyaW5nIGNvbXBhcmlzb24g
dHJpY2tzCisoc3ViLXN0cmluZywgcHJlZml4LCBzdWZmaXgsIHJlZ3VsYXIgZXhwcmVzc2lvbiwg
YW5kIGV0YykuIEZvciBleGFtcGxlLAorCitgYGBjKysKK3VzaW5nIDo6dGVzdGluZzo6SGFzU3Vi
c3RyOwordXNpbmcgOjp0ZXN0aW5nOjpNYXRjaGVzUmVnZXg7CisuLi4KKyAgQVNTRVJUX1RIQVQo
Zm9vX3N0cmluZywgSGFzU3Vic3RyKCJuZWVkbGUiKSk7CisgIEVYUEVDVF9USEFUKGJhcl9zdHJp
bmcsIE1hdGNoZXNSZWdleCgiXFx3KlxcZCsiKSk7CitgYGAKKworKipBdmFpbGFiaWxpdHkqKjog
TGludXgsIFdpbmRvd3MsIE1hYy4KKworSWYgdGhlIHN0cmluZyBjb250YWlucyBhIHdlbGwtZm9y
bWVkIEhUTUwgb3IgWE1MIGRvY3VtZW50LCB5b3UgY2FuIGNoZWNrIHdoZXRoZXIKK2l0cyBET00g
dHJlZSBtYXRjaGVzIGFuIFtYUGF0aAorZXhwcmVzc2lvbl0oaHR0cDovL3d3dy53My5vcmcvVFIv
eHBhdGgvI2NvbnRlbnRzKToKKworYGBgYysrCisvLyBDdXJyZW50bHkgc3RpbGwgaW4gLy90ZW1w
bGF0ZS9wcm90b3RlbXBsYXRlL3Rlc3Rpbmc6eHBhdGhfbWF0Y2hlcgorI2luY2x1ZGUgInRlbXBs
YXRlL3Byb3RvdGVtcGxhdGUvdGVzdGluZy94cGF0aF9tYXRjaGVyLmgiCit1c2luZyBwcm90b3Rl
bXBsYXRlOjp0ZXN0aW5nOjpNYXRjaGVzWFBhdGg7CitFWFBFQ1RfVEhBVChodG1sX3N0cmluZywg
TWF0Y2hlc1hQYXRoKCIvL2FbdGV4dCgpPSdjbGljayBoZXJlJ10iKSk7CitgYGAKKworKipBdmFp
bGFiaWxpdHkqKjogTGludXguCisKKyMjIyBXaW5kb3dzIEhSRVNVTFQgYXNzZXJ0aW9ucworCitU
aGVzZSBhc3NlcnRpb25zIHRlc3QgZm9yIGBIUkVTVUxUYCBzdWNjZXNzIG9yIGZhaWx1cmUuCisK
K0ZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0
aW9uICAgICAgICAgICAgICAgICAgICAgfCBWZXJpZmllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSB8IC0tLS0tLS0tCitgQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKGV4cHJlc3Npb24pYCB8IGBF
WFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQoZXhwcmVzc2lvbilgIHwgYGV4cHJlc3Npb25gIGlzIGEg
c3VjY2VzcyBgSFJFU1VMVGAKK2BBU1NFUlRfSFJFU1VMVF9GQUlMRUQoZXhwcmVzc2lvbilgICAg
IHwgYEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChleHByZXNzaW9uKWAgICAgfCBgZXhwcmVzc2lvbmAg
aXMgYSBmYWlsdXJlIGBIUkVTVUxUYAorCitUaGUgZ2VuZXJhdGVkIG91dHB1dCBjb250YWlucyB0
aGUgaHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGgKK3RoZSBgSFJF
U1VMVGAgY29kZSByZXR1cm5lZCBieSBgZXhwcmVzc2lvbmAuCisKK1lvdSBtaWdodCB1c2UgdGhl
bSBsaWtlIHRoaXM6CisKK2BgYGMrKworQ0NvbVB0cjxJU2hlbGxEaXNwYXRjaDI+IHNoZWxsOwor
QVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKHNoZWxsLkNvQ3JlYXRlSW5zdGFuY2UoTCJTaGVsbC5B
cHBsaWNhdGlvbiIpKTsKK0NDb21WYXJpYW50IGVtcHR5OworQVNTRVJUX0hSRVNVTFRfU1VDQ0VF
REVEKHNoZWxsLT5TaGVsbEV4ZWN1dGUoQ0NvbUJTVFIodXJsKSwgZW1wdHksIGVtcHR5LCBlbXB0
eSwgZW1wdHkpKTsKK2BgYAorCisqKkF2YWlsYWJpbGl0eSoqOiBXaW5kb3dzLgorCisjIyMgVHlw
ZSBBc3NlcnRpb25zCisKK1lvdSBjYW4gY2FsbCB0aGUgZnVuY3Rpb24KKworYGBgYysrCis6OnRl
c3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+KCk7CitgYGAKKwordG8gYXNzZXJ0IHRo
YXQgdHlwZXMgYFQxYCBhbmQgYFQyYCBhcmUgdGhlIHNhbWUuIFRoZSBmdW5jdGlvbiBkb2VzIG5v
dGhpbmcgaWYKK3RoZSBhc3NlcnRpb24gaXMgc2F0aXNmaWVkLiBJZiB0aGUgdHlwZXMgYXJlIGRp
ZmZlcmVudCwgdGhlIGZ1bmN0aW9uIGNhbGwgd2lsbAorZmFpbCB0byBjb21waWxlLCBhbmQgdGhl
IGNvbXBpbGVyIGVycm9yIG1lc3NhZ2Ugd2lsbCBsaWtlbHkgKGRlcGVuZGluZyBvbiB0aGUKK2Nv
bXBpbGVyKSBzaG93IHlvdSB0aGUgYWN0dWFsIHZhbHVlcyBvZiBgVDFgIGFuZCBgVDJgLiBUaGlz
IGlzIG1haW5seSB1c2VmdWwKK2luc2lkZSB0ZW1wbGF0ZSBjb2RlLgorCisqKkNhdmVhdCoqOiBX
aGVuIHVzZWQgaW5zaWRlIGEgbWVtYmVyIGZ1bmN0aW9uIG9mIGEgY2xhc3MgdGVtcGxhdGUgb3Ig
YSBmdW5jdGlvbgordGVtcGxhdGUsIGBTdGF0aWNBc3NlcnRUeXBlRXE8VDEsIFQyPigpYCBpcyBl
ZmZlY3RpdmUgb25seSBpZiB0aGUgZnVuY3Rpb24gaXMKK2luc3RhbnRpYXRlZC4gRm9yIGV4YW1w
bGUsIGdpdmVuOgorCitgYGBjKysKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb28gewor
IHB1YmxpYzoKKyAgdm9pZCBCYXIoKSB7IDo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGlu
dCwgVD4oKTsgfQorfTsKK2BgYAorCit0aGUgY29kZToKKworYGBgYysrCit2b2lkIFRlc3QxKCkg
eyBGb288Ym9vbD4gZm9vOyB9CitgYGAKKword2lsbCBub3QgZ2VuZXJhdGUgYSBjb21waWxlciBl
cnJvciwgYXMgYEZvbzxib29sPjo6QmFyKClgIGlzIG5ldmVyIGFjdHVhbGx5CitpbnN0YW50aWF0
ZWQuIEluc3RlYWQsIHlvdSBuZWVkOgorCitgYGBjKysKK3ZvaWQgVGVzdDIoKSB7IEZvbzxib29s
PiBmb287IGZvby5CYXIoKTsgfQorYGBgCisKK3RvIGNhdXNlIGEgY29tcGlsZXIgZXJyb3IuCisK
KyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBBc3NlcnRpb24g
UGxhY2VtZW50CisKK1lvdSBjYW4gdXNlIGFzc2VydGlvbnMgaW4gYW55IEMrKyBmdW5jdGlvbi4g
SW4gcGFydGljdWxhciwgaXQgZG9lc24ndCBoYXZlIHRvIGJlCithIG1ldGhvZCBvZiB0aGUgdGVz
dCBmaXh0dXJlIGNsYXNzLiBUaGUgb25lIGNvbnN0cmFpbnQgaXMgdGhhdCBhc3NlcnRpb25zIHRo
YXQKK2dlbmVyYXRlIGEgZmF0YWwgZmFpbHVyZSAoYEZBSUwqYCBhbmQgYEFTU0VSVF8qYCkgY2Fu
IG9ubHkgYmUgdXNlZCBpbgordm9pZC1yZXR1cm5pbmcgZnVuY3Rpb25zLiBUaGlzIGlzIGEgY29u
c2VxdWVuY2Ugb2YgR29vZ2xlJ3Mgbm90IHVzaW5nCitleGNlcHRpb25zLiBCeSBwbGFjaW5nIGl0
IGluIGEgbm9uLXZvaWQgZnVuY3Rpb24geW91J2xsIGdldCBhIGNvbmZ1c2luZyBjb21waWxlCitl
cnJvciBsaWtlIGAiZXJyb3I6IHZvaWQgdmFsdWUgbm90IGlnbm9yZWQgYXMgaXQgb3VnaHQgdG8g
YmUiYCBvciBgImNhbm5vdAoraW5pdGlhbGl6ZSByZXR1cm4gb2JqZWN0IG9mIHR5cGUgJ2Jvb2wn
IHdpdGggYW4gcnZhbHVlIG9mIHR5cGUgJ3ZvaWQnImAgb3IKK2AiZXJyb3I6IG5vIHZpYWJsZSBj
b252ZXJzaW9uIGZyb20gJ3ZvaWQnIHRvICdzdHJpbmcnImAuCisKK0lmIHlvdSBuZWVkIHRvIHVz
ZSBmYXRhbCBhc3NlcnRpb25zIGluIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIG5vbi12b2lkLCBv
bmUKK29wdGlvbiBpcyB0byBtYWtlIHRoZSBmdW5jdGlvbiByZXR1cm4gdGhlIHZhbHVlIGluIGFu
IG91dCBwYXJhbWV0ZXIgaW5zdGVhZC4gRm9yCitleGFtcGxlLCB5b3UgY2FuIHJld3JpdGUgYFQy
IEZvbyhUMSB4KWAgdG8gYHZvaWQgRm9vKFQxIHgsIFQyKiByZXN1bHQpYC4gWW91CituZWVkIHRv
IG1ha2Ugc3VyZSB0aGF0IGAqcmVzdWx0YCBjb250YWlucyBzb21lIHNlbnNpYmxlIHZhbHVlIGV2
ZW4gd2hlbiB0aGUKK2Z1bmN0aW9uIHJldHVybnMgcHJlbWF0dXJlbHkuIEFzIHRoZSBmdW5jdGlv
biBub3cgcmV0dXJucyBgdm9pZGAsIHlvdSBjYW4gdXNlCithbnkgYXNzZXJ0aW9uIGluc2lkZSBv
ZiBpdC4KKworSWYgY2hhbmdpbmcgdGhlIGZ1bmN0aW9uJ3MgdHlwZSBpcyBub3QgYW4gb3B0aW9u
LCB5b3Ugc2hvdWxkIGp1c3QgdXNlIGFzc2VydGlvbnMKK3RoYXQgZ2VuZXJhdGUgbm9uLWZhdGFs
IGZhaWx1cmVzLCBzdWNoIGFzIGBBRERfRkFJTFVSRSpgIGFuZCBgRVhQRUNUXypgLgorCitOT1RF
OiBDb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzIGFyZSBub3QgY29uc2lkZXJlZCB2b2lkLXJl
dHVybmluZyBmdW5jdGlvbnMsCithY2NvcmRpbmcgdG8gdGhlIEMrKyBsYW5ndWFnZSBzcGVjaWZp
Y2F0aW9uLCBhbmQgc28geW91IG1heSBub3QgdXNlIGZhdGFsCithc3NlcnRpb25zIGluIHRoZW0u
IFlvdSdsbCBnZXQgYSBjb21waWxhdGlvbiBlcnJvciBpZiB5b3UgdHJ5LiBBIHNpbXBsZQord29y
a2Fyb3VuZCBpcyB0byB0cmFuc2ZlciB0aGUgZW50aXJlIGJvZHkgb2YgdGhlIGNvbnN0cnVjdG9y
IG9yIGRlc3RydWN0b3IgdG8gYQorcHJpdmF0ZSB2b2lkLXJldHVybmluZyBtZXRob2QuIEhvd2V2
ZXIsIHlvdSBzaG91bGQgYmUgYXdhcmUgdGhhdCBhIGZhdGFsCithc3NlcnRpb24gZmFpbHVyZSBp
biBhIGNvbnN0cnVjdG9yIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUgY3VycmVudCB0ZXN0LCBhcyB5
b3VyCitpbnR1aXRpb24gbWlnaHQgc3VnZ2VzdDsgaXQgbWVyZWx5IHJldHVybnMgZnJvbSB0aGUg
Y29uc3RydWN0b3IgZWFybHksIHBvc3NpYmx5CitsZWF2aW5nIHlvdXIgb2JqZWN0IGluIGEgcGFy
dGlhbGx5LWNvbnN0cnVjdGVkIHN0YXRlLiBMaWtld2lzZSwgYSBmYXRhbAorYXNzZXJ0aW9uIGZh
aWx1cmUgaW4gYSBkZXN0cnVjdG9yIG1heSBsZWF2ZSB5b3VyIG9iamVjdCBpbiBhCitwYXJ0aWFs
bHktZGVzdHJ1Y3RlZCBzdGF0ZS4gVXNlIGFzc2VydGlvbnMgY2FyZWZ1bGx5IGluIHRoZXNlIHNp
dHVhdGlvbnMhCisKKyMjIFRlYWNoaW5nIGdvb2dsZXRlc3QgSG93IHRvIFByaW50IFlvdXIgVmFs
dWVzCisKK1doZW4gYSB0ZXN0IGFzc2VydGlvbiBzdWNoIGFzIGBFWFBFQ1RfRVFgIGZhaWxzLCBn
b29nbGV0ZXN0IHByaW50cyB0aGUgYXJndW1lbnQKK3ZhbHVlcyB0byBoZWxwIHlvdSBkZWJ1Zy4g
SXQgZG9lcyB0aGlzIHVzaW5nIGEgdXNlci1leHRlbnNpYmxlIHZhbHVlIHByaW50ZXIuCisKK1Ro
aXMgcHJpbnRlciBrbm93cyBob3cgdG8gcHJpbnQgYnVpbHQtaW4gQysrIHR5cGVzLCBuYXRpdmUg
YXJyYXlzLCBTVEwKK2NvbnRhaW5lcnMsIGFuZCBhbnkgdHlwZSB0aGF0IHN1cHBvcnRzIHRoZSBg
PDxgIG9wZXJhdG9yLiBGb3Igb3RoZXIgdHlwZXMsIGl0CitwcmludHMgdGhlIHJhdyBieXRlcyBp
biB0aGUgdmFsdWUgYW5kIGhvcGVzIHRoYXQgeW91IHRoZSB1c2VyIGNhbiBmaWd1cmUgaXQgb3V0
LgorCitBcyBtZW50aW9uZWQgZWFybGllciwgdGhlIHByaW50ZXIgaXMgKmV4dGVuc2libGUqLiBU
aGF0IG1lYW5zIHlvdSBjYW4gdGVhY2ggaXQKK3RvIGRvIGEgYmV0dGVyIGpvYiBhdCBwcmludGlu
ZyB5b3VyIHBhcnRpY3VsYXIgdHlwZSB0aGFuIHRvIGR1bXAgdGhlIGJ5dGVzLiBUbworZG8gdGhh
dCwgZGVmaW5lIGA8PGAgZm9yIHlvdXIgdHlwZToKKworYGBgYysrCisvLyBTdHJlYW1zIGFyZSBh
bGxvd2VkIG9ubHkgZm9yIGxvZ2dpbmcuICBEb24ndCBpbmNsdWRlIHRoaXMgZm9yCisvLyBhbnkg
b3RoZXIgcHVycG9zZS4KKyNpbmNsdWRlIDxvc3RyZWFtPgorCituYW1lc3BhY2UgZm9vIHsKKwor
Y2xhc3MgQmFyIHsgIC8vIFdlIHdhbnQgZ29vZ2xldGVzdCB0byBiZSBhYmxlIHRvIHByaW50IGlu
c3RhbmNlcyBvZiB0aGlzLgorLi4uCisgIC8vIENyZWF0ZSBhIGZyZWUgaW5saW5lIGZyaWVuZCBm
dW5jdGlvbi4KKyAgZnJpZW5kIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0m
IG9zLCBjb25zdCBCYXImIGJhcikgeworICAgIHJldHVybiBvcyA8PCBiYXIuRGVidWdTdHJpbmco
KTsgIC8vIHdoYXRldmVyIG5lZWRlZCB0byBwcmludCBiYXIgdG8gb3MKKyAgfQorfTsKKworLy8g
SWYgeW91IGNhbid0IGRlY2xhcmUgdGhlIGZ1bmN0aW9uIGluIHRoZSBjbGFzcyBpdCdzIGltcG9y
dGFudCB0aGF0IHRoZQorLy8gPDwgb3BlcmF0b3IgaXMgZGVmaW5lZCBpbiB0aGUgU0FNRSBuYW1l
c3BhY2UgdGhhdCBkZWZpbmVzIEJhci4gIEMrKydzIGxvb2stdXAKKy8vIHJ1bGVzIHJlbHkgb24g
dGhhdC4KK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBC
YXImIGJhcikgeworICByZXR1cm4gb3MgPDwgYmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3aGF0ZXZl
ciBuZWVkZWQgdG8gcHJpbnQgYmFyIHRvIG9zCit9CisKK30gIC8vIG5hbWVzcGFjZSBmb28KK2Bg
YAorCitTb21ldGltZXMsIHRoaXMgbWlnaHQgbm90IGJlIGFuIG9wdGlvbjogeW91ciB0ZWFtIG1h
eSBjb25zaWRlciBpdCBiYWQgc3R5bGUgdG8KK2hhdmUgYSBgPDxgIG9wZXJhdG9yIGZvciBgQmFy
YCwgb3IgYEJhcmAgbWF5IGFscmVhZHkgaGF2ZSBhIGA8PGAgb3BlcmF0b3IgdGhhdAorZG9lc24n
dCBkbyB3aGF0IHlvdSB3YW50IChhbmQgeW91IGNhbm5vdCBjaGFuZ2UgaXQpLiBJZiBzbywgeW91
IGNhbiBpbnN0ZWFkCitkZWZpbmUgYSBgUHJpbnRUbygpYCBmdW5jdGlvbiBsaWtlIHRoaXM6CisK
K2BgYGMrKworLy8gU3RyZWFtcyBhcmUgYWxsb3dlZCBvbmx5IGZvciBsb2dnaW5nLiAgRG9uJ3Qg
aW5jbHVkZSB0aGlzIGZvcgorLy8gYW55IG90aGVyIHB1cnBvc2UuCisjaW5jbHVkZSA8b3N0cmVh
bT4KKworbmFtZXNwYWNlIGZvbyB7CisKK2NsYXNzIEJhciB7CisgIC4uLgorICBmcmllbmQgdm9p
ZCBQcmludFRvKGNvbnN0IEJhciYgYmFyLCBzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgKm9zIDw8
IGJhci5EZWJ1Z1N0cmluZygpOyAgLy8gd2hhdGV2ZXIgbmVlZGVkIHRvIHByaW50IGJhciB0byBv
cworICB9Cit9OworCisvLyBJZiB5b3UgY2FuJ3QgZGVjbGFyZSB0aGUgZnVuY3Rpb24gaW4gdGhl
IGNsYXNzIGl0J3MgaW1wb3J0YW50IHRoYXQgUHJpbnRUbygpCisvLyBpcyBkZWZpbmVkIGluIHRo
ZSBTQU1FIG5hbWVzcGFjZSB0aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11cCBydWxlcyBy
ZWx5CisvLyBvbiB0aGF0Lgordm9pZCBQcmludFRvKGNvbnN0IEJhciYgYmFyLCBzdGQ6Om9zdHJl
YW0qIG9zKSB7CisgICpvcyA8PCBiYXIuRGVidWdTdHJpbmcoKTsgIC8vIHdoYXRldmVyIG5lZWRl
ZCB0byBwcmludCBiYXIgdG8gb3MKK30KKworfSAgLy8gbmFtZXNwYWNlIGZvbworYGBgCisKK0lm
IHlvdSBoYXZlIGRlZmluZWQgYm90aCBgPDxgIGFuZCBgUHJpbnRUbygpYCwgdGhlIGxhdHRlciB3
aWxsIGJlIHVzZWQgd2hlbgorZ29vZ2xldGVzdCBpcyBjb25jZXJuZWQuIFRoaXMgYWxsb3dzIHlv
dSB0byBjdXN0b21pemUgaG93IHRoZSB2YWx1ZSBhcHBlYXJzIGluCitnb29nbGV0ZXN0J3Mgb3V0
cHV0IHdpdGhvdXQgYWZmZWN0aW5nIGNvZGUgdGhhdCByZWxpZXMgb24gdGhlIGJlaGF2aW9yIG9m
IGl0cworYDw8YCBvcGVyYXRvci4KKworSWYgeW91IHdhbnQgdG8gcHJpbnQgYSB2YWx1ZSBgeGAg
dXNpbmcgZ29vZ2xldGVzdCdzIHZhbHVlIHByaW50ZXIgeW91cnNlbGYsIGp1c3QKK2NhbGwgYDo6
dGVzdGluZzo6UHJpbnRUb1N0cmluZyh4KWAsIHdoaWNoIHJldHVybnMgYW4gYHN0ZDo6c3RyaW5n
YDoKKworYGBgYysrCit2ZWN0b3I8cGFpcjxCYXIsIGludD4gPiBiYXJfaW50cyA9IEdldEJhcklu
dFZlY3RvcigpOworCitFWFBFQ1RfVFJVRShJc0NvcnJlY3RCYXJJbnRWZWN0b3IoYmFyX2ludHMp
KQorICAgIDw8ICJiYXJfaW50cyA9ICIgPDwgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGJhcl9p
bnRzKTsKK2BgYAorCisjIyBEZWF0aCBUZXN0cworCitJbiBtYW55IGFwcGxpY2F0aW9ucywgdGhl
cmUgYXJlIGFzc2VydGlvbnMgdGhhdCBjYW4gY2F1c2UgYXBwbGljYXRpb24gZmFpbHVyZSBpZgor
YSBjb25kaXRpb24gaXMgbm90IG1ldC4gVGhlc2Ugc2FuaXR5IGNoZWNrcywgd2hpY2ggZW5zdXJl
IHRoYXQgdGhlIHByb2dyYW0gaXMgaW4KK2Ega25vd24gZ29vZCBzdGF0ZSwgYXJlIHRoZXJlIHRv
IGZhaWwgYXQgdGhlIGVhcmxpZXN0IHBvc3NpYmxlIHRpbWUgYWZ0ZXIgc29tZQorcHJvZ3JhbSBz
dGF0ZSBpcyBjb3JydXB0ZWQuIElmIHRoZSBhc3NlcnRpb24gY2hlY2tzIHRoZSB3cm9uZyBjb25k
aXRpb24sIHRoZW4KK3RoZSBwcm9ncmFtIG1heSBwcm9jZWVkIGluIGFuIGVycm9uZW91cyBzdGF0
ZSwgd2hpY2ggY291bGQgbGVhZCB0byBtZW1vcnkKK2NvcnJ1cHRpb24sIHNlY3VyaXR5IGhvbGVz
LCBvciB3b3JzZS4gSGVuY2UgaXQgaXMgdml0YWxseSBpbXBvcnRhbnQgdG8gdGVzdCB0aGF0Citz
dWNoIGFzc2VydGlvbiBzdGF0ZW1lbnRzIHdvcmsgYXMgZXhwZWN0ZWQuCisKK1NpbmNlIHRoZXNl
IHByZWNvbmRpdGlvbiBjaGVja3MgY2F1c2UgdGhlIHByb2Nlc3NlcyB0byBkaWUsIHdlIGNhbGwg
c3VjaCB0ZXN0cworX2RlYXRoIHRlc3RzXy4gTW9yZSBnZW5lcmFsbHksIGFueSB0ZXN0IHRoYXQg
Y2hlY2tzIHRoYXQgYSBwcm9ncmFtIHRlcm1pbmF0ZXMKKyhleGNlcHQgYnkgdGhyb3dpbmcgYW4g
ZXhjZXB0aW9uKSBpbiBhbiBleHBlY3RlZCBmYXNoaW9uIGlzIGFsc28gYSBkZWF0aCB0ZXN0Lgor
CisKK05vdGUgdGhhdCBpZiBhIHBpZWNlIG9mIGNvZGUgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgd2Ug
ZG9uJ3QgY29uc2lkZXIgaXQgImRlYXRoIgorZm9yIHRoZSBwdXJwb3NlIG9mIGRlYXRoIHRlc3Rz
LCBhcyB0aGUgY2FsbGVyIG9mIHRoZSBjb2RlIGNvdWxkIGNhdGNoIHRoZQorZXhjZXB0aW9uIGFu
ZCBhdm9pZCB0aGUgY3Jhc2guIElmIHlvdSB3YW50IHRvIHZlcmlmeSBleGNlcHRpb25zIHRocm93
biBieSB5b3VyCitjb2RlLCBzZWUgW0V4Y2VwdGlvbiBBc3NlcnRpb25zXSgjZXhjZXB0aW9uLWFz
c2VydGlvbnMpLgorCitJZiB5b3Ugd2FudCB0byB0ZXN0IGBFWFBFQ1RfKigpL0FTU0VSVF8qKClg
IGZhaWx1cmVzIGluIHlvdXIgdGVzdCBjb2RlLCBzZWUKK0NhdGNoaW5nIEZhaWx1cmVzCisKKyMj
IyBIb3cgdG8gV3JpdGUgYSBEZWF0aCBUZXN0CisKK2dvb2dsZXRlc3QgaGFzIHRoZSBmb2xsb3dp
bmcgbWFjcm9zIHRvIHN1cHBvcnQgZGVhdGggdGVzdHM6CisKK0ZhdGFsIGFzc2VydGlvbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgVmVyaWZpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0KK2BBU1NFUlRfREVBVEgoc3RhdGVtZW50LCByZWdleCk7
YCAgICAgICAgICAgICAgfCBgRVhQRUNUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpO2AgICAgICAg
ICAgICAgIHwgYHN0YXRlbWVudGAgY3Jhc2hlcyB3aXRoIHRoZSBnaXZlbiBlcnJvcgorYEFTU0VS
VF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCk7YCB8IGBFWFBFQ1RfREVBVEhf
SUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpO2AgfCBpZiBkZWF0aCB0ZXN0cyBhcmUgc3Vw
cG9ydGVkLCB2ZXJpZmllcyB0aGF0IGBzdGF0ZW1lbnRgIGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4g
ZXJyb3I7IG90aGVyd2lzZSB2ZXJpZmllcyBub3RoaW5nCitgQVNTRVJUX0VYSVQoc3RhdGVtZW50
LCBwcmVkaWNhdGUsIHJlZ2V4KTtgICAgIHwgYEVYUEVDVF9FWElUKHN0YXRlbWVudCwgcHJlZGlj
YXRlLCByZWdleCk7YCAgICB8IGBzdGF0ZW1lbnRgIGV4aXRzIHdpdGggdGhlIGdpdmVuIGVycm9y
LCBhbmQgaXRzIGV4aXQgY29kZSBtYXRjaGVzIGBwcmVkaWNhdGVgCisKK3doZXJlIGBzdGF0ZW1l
bnRgIGlzIGEgc3RhdGVtZW50IHRoYXQgaXMgZXhwZWN0ZWQgdG8gY2F1c2UgdGhlIHByb2Nlc3Mg
dG8gZGllLAorYHByZWRpY2F0ZWAgaXMgYSBmdW5jdGlvbiBvciBmdW5jdGlvbiBvYmplY3QgdGhh
dCBldmFsdWF0ZXMgYW4gaW50ZWdlciBleGl0CitzdGF0dXMsIGFuZCBgcmVnZXhgIGlzIGEgKFBl
cmwpIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IHRoZSBzdGRlcnIgb3V0cHV0IG9mCitgc3RhdGVt
ZW50YCBpcyBleHBlY3RlZCB0byBtYXRjaC4gTm90ZSB0aGF0IGBzdGF0ZW1lbnRgIGNhbiBiZSAq
YW55IHZhbGlkCitzdGF0ZW1lbnQqIChpbmNsdWRpbmcgKmNvbXBvdW5kIHN0YXRlbWVudCopIGFu
ZCBkb2Vzbid0IGhhdmUgdG8gYmUgYW4KK2V4cHJlc3Npb24uCisKKworQXMgdXN1YWwsIHRoZSBg
QVNTRVJUYCB2YXJpYW50cyBhYm9ydCB0aGUgY3VycmVudCB0ZXN0IGZ1bmN0aW9uLCB3aGlsZSB0
aGUKK2BFWFBFQ1RgIHZhcmlhbnRzIGRvIG5vdC4KKworPiBOT1RFOiBXZSB1c2UgdGhlIHdvcmQg
ImNyYXNoIiBoZXJlIHRvIG1lYW4gdGhhdCB0aGUgcHJvY2VzcyB0ZXJtaW5hdGVzIHdpdGggYQor
PiAqbm9uLXplcm8qIGV4aXQgc3RhdHVzIGNvZGUuIFRoZXJlIGFyZSB0d28gcG9zc2liaWxpdGll
czogZWl0aGVyIHRoZSBwcm9jZXNzCis+IGhhcyBjYWxsZWQgYGV4aXQoKWAgb3IgYF9leGl0KClg
IHdpdGggYSBub24temVybyB2YWx1ZSwgb3IgaXQgbWF5IGJlIGtpbGxlZCBieQorPiBhIHNpZ25h
bC4KKz4KKz4gVGhpcyBtZWFucyB0aGF0IGlmIGAqc3RhdGVtZW50KmAgdGVybWluYXRlcyB0aGUg
cHJvY2VzcyB3aXRoIGEgMCBleGl0IGNvZGUsIGl0Cis+IGlzICpub3QqIGNvbnNpZGVyZWQgYSBj
cmFzaCBieSBgRVhQRUNUX0RFQVRIYC4gVXNlIGBFWFBFQ1RfRVhJVGAgaW5zdGVhZCBpZgorPiB0
aGlzIGlzIHRoZSBjYXNlLCBvciBpZiB5b3Ugd2FudCB0byByZXN0cmljdCB0aGUgZXhpdCBjb2Rl
IG1vcmUgcHJlY2lzZWx5LgorCitBIHByZWRpY2F0ZSBoZXJlIG11c3QgYWNjZXB0IGFuIGBpbnRg
IGFuZCByZXR1cm4gYSBgYm9vbGAuIFRoZSBkZWF0aCB0ZXN0CitzdWNjZWVkcyBvbmx5IGlmIHRo
ZSBwcmVkaWNhdGUgcmV0dXJucyBgdHJ1ZWAuIGdvb2dsZXRlc3QgZGVmaW5lcyBhIGZldworcHJl
ZGljYXRlcyB0aGF0IGhhbmRsZSB0aGUgbW9zdCBjb21tb24gY2FzZXM6CisKK2BgYGMrKworOjp0
ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZShleGl0X2NvZGUpCitgYGAKKworVGhpcyBleHByZXNzaW9u
IGlzIGB0cnVlYCBpZiB0aGUgcHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHkgd2l0aCB0aGUgZ2l2ZW4g
ZXhpdAorY29kZS4KKworYGBgYysrCis6OnRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKHNpZ25hbF9u
dW1iZXIpICAvLyBOb3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCitgYGAKKworVGhpcyBleHByZXNz
aW9uIGlzIGB0cnVlYCBpZiB0aGUgcHJvZ3JhbSB3YXMga2lsbGVkIGJ5IHRoZSBnaXZlbiBzaWdu
YWwuCisKK1RoZSBgKl9ERUFUSGAgbWFjcm9zIGFyZSBjb252ZW5pZW50IHdyYXBwZXJzIGZvciBg
Kl9FWElUYCB0aGF0IHVzZSBhIHByZWRpY2F0ZQordGhhdCB2ZXJpZmllcyB0aGUgcHJvY2Vzcycg
ZXhpdCBjb2RlIGlzIG5vbi16ZXJvLgorCitOb3RlIHRoYXQgYSBkZWF0aCB0ZXN0IG9ubHkgY2Fy
ZXMgYWJvdXQgdGhyZWUgdGhpbmdzOgorCisxLiAgZG9lcyBgc3RhdGVtZW50YCBhYm9ydCBvciBl
eGl0IHRoZSBwcm9jZXNzPworMi4gIChpbiB0aGUgY2FzZSBvZiBgQVNTRVJUX0VYSVRgIGFuZCBg
RVhQRUNUX0VYSVRgKSBkb2VzIHRoZSBleGl0IHN0YXR1cworICAgIHNhdGlzZnkgYHByZWRpY2F0
ZWA/IE9yIChpbiB0aGUgY2FzZSBvZiBgQVNTRVJUX0RFQVRIYCBhbmQgYEVYUEVDVF9ERUFUSGAp
CisgICAgaXMgdGhlIGV4aXQgc3RhdHVzIG5vbi16ZXJvPyBBbmQKKzMuICBkb2VzIHRoZSBzdGRl
cnIgb3V0cHV0IG1hdGNoIGByZWdleGA/CisKK0luIHBhcnRpY3VsYXIsIGlmIGBzdGF0ZW1lbnRg
IGdlbmVyYXRlcyBhbiBgQVNTRVJUXypgIG9yIGBFWFBFQ1RfKmAgZmFpbHVyZSwgaXQKK3dpbGwg
Kipub3QqKiBjYXVzZSB0aGUgZGVhdGggdGVzdCB0byBmYWlsLCBhcyBnb29nbGV0ZXN0IGFzc2Vy
dGlvbnMgZG9uJ3QgYWJvcnQKK3RoZSBwcm9jZXNzLgorCitUbyB3cml0ZSBhIGRlYXRoIHRlc3Qs
IHNpbXBseSB1c2Ugb25lIG9mIHRoZSBhYm92ZSBtYWNyb3MgaW5zaWRlIHlvdXIgdGVzdAorZnVu
Y3Rpb24uIEZvciBleGFtcGxlLAorCitgYGBjKysKK1RFU1QoTXlEZWF0aFRlc3QsIEZvbykgewor
ICAvLyBUaGlzIGRlYXRoIHRlc3QgdXNlcyBhIGNvbXBvdW5kIHN0YXRlbWVudC4KKyAgQVNTRVJU
X0RFQVRIKHsKKyAgICBpbnQgbiA9IDU7CisgICAgRm9vKCZuKTsKKyAgfSwgIkVycm9yIG9uIGxp
bmUgLiogb2YgRm9vKCkiKTsKK30KKworVEVTVChNeURlYXRoVGVzdCwgTm9ybWFsRXhpdCkgewor
ICBFWFBFQ1RfRVhJVChOb3JtYWxFeGl0KCksIDo6dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCks
ICJTdWNjZXNzIik7Cit9CisKK1RFU1QoTXlEZWF0aFRlc3QsIEtpbGxNeXNlbGYpIHsKKyAgRVhQ
RUNUX0VYSVQoS2lsbE15c2VsZigpLCA6OnRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKFNJR0tJTEwp
LAorICAgICAgICAgICAgICAiU2VuZGluZyBteXNlbGYgdW5ibG9ja2FibGUgc2lnbmFsIik7Cit9
CitgYGAKKwordmVyaWZpZXMgdGhhdDoKKworKiAgIGNhbGxpbmcgYEZvbyg1KWAgY2F1c2VzIHRo
ZSBwcm9jZXNzIHRvIGRpZSB3aXRoIHRoZSBnaXZlbiBlcnJvciBtZXNzYWdlLAorKiAgIGNhbGxp
bmcgYE5vcm1hbEV4aXQoKWAgY2F1c2VzIHRoZSBwcm9jZXNzIHRvIHByaW50IGAiU3VjY2VzcyJg
IHRvIHN0ZGVyciBhbmQKKyAgICBleGl0IHdpdGggZXhpdCBjb2RlIDAsIGFuZAorKiAgIGNhbGxp
bmcgYEtpbGxNeXNlbGYoKWAga2lsbHMgdGhlIHByb2Nlc3Mgd2l0aCBzaWduYWwgYFNJR0tJTExg
LgorCitUaGUgdGVzdCBmdW5jdGlvbiBib2R5IG1heSBjb250YWluIG90aGVyIGFzc2VydGlvbnMg
YW5kIHN0YXRlbWVudHMgYXMgd2VsbCwgaWYKK25lY2Vzc2FyeS4KKworIyMjIERlYXRoIFRlc3Qg
TmFtaW5nCisKK0lNUE9SVEFOVDogV2Ugc3Ryb25nbHkgcmVjb21tZW5kIHlvdSB0byBmb2xsb3cg
dGhlIGNvbnZlbnRpb24gb2YgbmFtaW5nIHlvdXIKKyoqdGVzdCBjYXNlKiogKG5vdCB0ZXN0KSBg
KkRlYXRoVGVzdGAgd2hlbiBpdCBjb250YWlucyBhIGRlYXRoIHRlc3QsIGFzCitkZW1vbnN0cmF0
ZWQgaW4gdGhlIGFib3ZlIGV4YW1wbGUuIFRoZSBbRGVhdGggVGVzdHMgQW5kCitUaHJlYWRzXSgj
ZGVhdGgtdGVzdHMtYW5kLXRocmVhZHMpIHNlY3Rpb24gYmVsb3cgZXhwbGFpbnMgd2h5LgorCitJ
ZiBhIHRlc3QgZml4dHVyZSBjbGFzcyBpcyBzaGFyZWQgYnkgbm9ybWFsIHRlc3RzIGFuZCBkZWF0
aCB0ZXN0cywgeW91IGNhbiB1c2UKK2B1c2luZ2Agb3IgYHR5cGVkZWZgIHRvIGludHJvZHVjZSBh
biBhbGlhcyBmb3IgdGhlIGZpeHR1cmUgY2xhc3MgYW5kIGF2b2lkCitkdXBsaWNhdGluZyBpdHMg
Y29kZToKKworYGBgYysrCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
IC4uLiB9OworCit1c2luZyBGb29EZWF0aFRlc3QgPSBGb29UZXN0OworCitURVNUX0YoRm9vVGVz
dCwgRG9lc1RoaXMpIHsKKyAgLy8gbm9ybWFsIHRlc3QKK30KKworVEVTVF9GKEZvb0RlYXRoVGVz
dCwgRG9lc1RoYXQpIHsKKyAgLy8gZGVhdGggdGVzdAorfQorYGBgCisKKyoqQXZhaWxhYmlsaXR5
Kio6IExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIEN5Z3dpbiwg
YW5kIE1hYworCisjIyMgUmVndWxhciBFeHByZXNzaW9uIFN5bnRheAorCisKK09uIFBPU0lYIHN5
c3RlbXMgKGUuZy4gTGludXgsIEN5Z3dpbiwgYW5kIE1hYyksIGdvb2dsZXRlc3QgdXNlcyB0aGUK
K1tQT1NJWCBleHRlbmRlZCByZWd1bGFyIGV4cHJlc3Npb25dKGh0dHA6Ly93d3cub3Blbmdyb3Vw
Lm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9iYXNlZGVmcy94YmRfY2hhcDA5Lmh0bWwjdGFnXzA5
XzA0KQorc3ludGF4LiBUbyBsZWFybiBhYm91dCB0aGlzIHN5bnRheCwgeW91IG1heSB3YW50IHRv
IHJlYWQgdGhpcworW1dpa2lwZWRpYSBlbnRyeV0oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lr
aS9SZWd1bGFyX2V4cHJlc3Npb24jUE9TSVhfRXh0ZW5kZWRfUmVndWxhcl9FeHByZXNzaW9ucyku
CisKK09uIFdpbmRvd3MsIGdvb2dsZXRlc3QgdXNlcyBpdHMgb3duIHNpbXBsZSByZWd1bGFyIGV4
cHJlc3Npb24gaW1wbGVtZW50YXRpb24uIEl0CitsYWNrcyBtYW55IGZlYXR1cmVzLiBGb3IgZXhh
bXBsZSwgd2UgZG9uJ3Qgc3VwcG9ydCB1bmlvbiAoYCJ4fHkiYCksIGdyb3VwaW5nCisoYCIoeHkp
ImApLCBicmFja2V0cyAoYCJbeHldImApLCBhbmQgcmVwZXRpdGlvbiBjb3VudCAoYCJ4ezUsN30i
YCksIGFtb25nCitvdGhlcnMuIEJlbG93IGlzIHdoYXQgd2UgZG8gc3VwcG9ydCAoYEFgIGRlbm90
ZXMgYSBsaXRlcmFsIGNoYXJhY3RlciwgcGVyaW9kCisoYC5gKSwgb3IgYSBzaW5nbGUgYFxcIGAg
ZXNjYXBlIHNlcXVlbmNlOyBgeGAgYW5kIGB5YCBkZW5vdGUgcmVndWxhcgorZXhwcmVzc2lvbnMu
KToKKworRXhwcmVzc2lvbiB8IE1lYW5pbmcKKy0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorYGNgICAgICAg
ICB8IG1hdGNoZXMgYW55IGxpdGVyYWwgY2hhcmFjdGVyIGBjYAorYFxcZGAgICAgICB8IG1hdGNo
ZXMgYW55IGRlY2ltYWwgZGlnaXQKK2BcXERgICAgICAgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIg
dGhhdCdzIG5vdCBhIGRlY2ltYWwgZGlnaXQKK2BcXGZgICAgICAgfCBtYXRjaGVzIGBcZmAKK2Bc
XG5gICAgICAgfCBtYXRjaGVzIGBcbmAKK2BcXHJgICAgICAgfCBtYXRjaGVzIGBccmAKK2BcXHNg
ICAgICAgfCBtYXRjaGVzIGFueSBBU0NJSSB3aGl0ZXNwYWNlLCBpbmNsdWRpbmcgYFxuYAorYFxc
U2AgICAgICB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgd2hpdGVzcGFjZQor
YFxcdGAgICAgICB8IG1hdGNoZXMgYFx0YAorYFxcdmAgICAgICB8IG1hdGNoZXMgYFx2YAorYFxc
d2AgICAgICB8IG1hdGNoZXMgYW55IGxldHRlciwgYF9gLCBvciBkZWNpbWFsIGRpZ2l0CitgXFxX
YCAgICAgIHwgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIHRoYXQgYFxcd2AgZG9lc24ndCBtYXRjaAor
YFxcY2AgICAgICB8IG1hdGNoZXMgYW55IGxpdGVyYWwgY2hhcmFjdGVyIGBjYCwgd2hpY2ggbXVz
dCBiZSBhIHB1bmN0dWF0aW9uCitgLmAgICAgICAgIHwgbWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJh
Y3RlciBleGNlcHQgYFxuYAorYEE/YCAgICAgICB8IG1hdGNoZXMgMCBvciAxIG9jY3VycmVuY2Vz
IG9mIGBBYAorYEEqYCAgICAgICB8IG1hdGNoZXMgMCBvciBtYW55IG9jY3VycmVuY2VzIG9mIGBB
YAorYEErYCAgICAgICB8IG1hdGNoZXMgMSBvciBtYW55IG9jY3VycmVuY2VzIG9mIGBBYAorYF5g
ICAgICAgICB8IG1hdGNoZXMgdGhlIGJlZ2lubmluZyBvZiBhIHN0cmluZyAobm90IHRoYXQgb2Yg
ZWFjaCBsaW5lKQorYCRgICAgICAgICB8IG1hdGNoZXMgdGhlIGVuZCBvZiBhIHN0cmluZyAobm90
IHRoYXQgb2YgZWFjaCBsaW5lKQorYHh5YCAgICAgICB8IG1hdGNoZXMgYHhgIGZvbGxvd2VkIGJ5
IGB5YAorCitUbyBoZWxwIHlvdSBkZXRlcm1pbmUgd2hpY2ggY2FwYWJpbGl0eSBpcyBhdmFpbGFi
bGUgb24geW91ciBzeXN0ZW0sIGdvb2dsZXRlc3QKK2RlZmluZXMgbWFjcm9zIHRvIGdvdmVybiB3
aGljaCByZWd1bGFyIGV4cHJlc3Npb24gaXQgaXMgdXNpbmcuIFRoZSBtYWNyb3MgYXJlOgorPCEt
LWFic2w6Z29vZ2xlMy1iZWdpbihnb29nbGUzLW9ubHkpLS0+YEdURVNUX1VTRVNfUENSRT0xYCwg
b3IKKzwhLS1hYnNsOmdvb2dsZTMtZW5kLS0+IGBHVEVTVF9VU0VTX1NJTVBMRV9SRT0xYCBvciBg
R1RFU1RfVVNFU19QT1NJWF9SRT0xYC4gSWYKK3lvdSB3YW50IHlvdXIgZGVhdGggdGVzdHMgdG8g
d29yayBpbiBhbGwgY2FzZXMsIHlvdSBjYW4gZWl0aGVyIGAjaWZgIG9uIHRoZXNlCittYWNyb3Mg
b3IgdXNlIHRoZSBtb3JlIGxpbWl0ZWQgc3ludGF4IG9ubHkuCisKKyMjIyBIb3cgSXQgV29ya3MK
KworVW5kZXIgdGhlIGhvb2QsIGBBU1NFUlRfRVhJVCgpYCBzcGF3bnMgYSBuZXcgcHJvY2VzcyBh
bmQgZXhlY3V0ZXMgdGhlIGRlYXRoIHRlc3QKK3N0YXRlbWVudCBpbiB0aGF0IHByb2Nlc3MuIFRo
ZSBkZXRhaWxzIG9mIGhvdyBwcmVjaXNlbHkgdGhhdCBoYXBwZW5zIGRlcGVuZCBvbgordGhlIHBs
YXRmb3JtIGFuZCB0aGUgdmFyaWFibGUgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rf
c3R5bGUpICh3aGljaCBpcworaW5pdGlhbGl6ZWQgZnJvbSB0aGUgY29tbWFuZC1saW5lIGZsYWcg
YC0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZWApLgorCisqICAgT24gUE9TSVggc3lzdGVtcywgYGZv
cmsoKWAgKG9yIGBjbG9uZSgpYCBvbiBMaW51eCkgaXMgdXNlZCB0byBzcGF3biB0aGUKKyAgICBj
aGlsZCwgYWZ0ZXIgd2hpY2g6CisgICAgKiAgIElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlzIGAi
ZmFzdCJgLCB0aGUgZGVhdGggdGVzdCBzdGF0ZW1lbnQgaXMKKyAgICAgICAgaW1tZWRpYXRlbHkg
ZXhlY3V0ZWQuCisgICAgKiAgIElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlzIGAidGhyZWFkc2Fm
ZSJgLCB0aGUgY2hpbGQgcHJvY2VzcyByZS1leGVjdXRlcworICAgICAgICB0aGUgdW5pdCB0ZXN0
IGJpbmFyeSBqdXN0IGFzIGl0IHdhcyBvcmlnaW5hbGx5IGludm9rZWQsIGJ1dCB3aXRoIHNvbWUK
KyAgICAgICAgZXh0cmEgZmxhZ3MgdG8gY2F1c2UganVzdCB0aGUgc2luZ2xlIGRlYXRoIHRlc3Qg
dW5kZXIgY29uc2lkZXJhdGlvbiB0bworICAgICAgICBiZSBydW4uCisqICAgT24gV2luZG93cywg
dGhlIGNoaWxkIGlzIHNwYXduZWQgdXNpbmcgdGhlIGBDcmVhdGVQcm9jZXNzKClgIEFQSSwgYW5k
CisgICAgcmUtZXhlY3V0ZXMgdGhlIGJpbmFyeSB0byBjYXVzZSBqdXN0IHRoZSBzaW5nbGUgZGVh
dGggdGVzdCB1bmRlcgorICAgIGNvbnNpZGVyYXRpb24gdG8gYmUgcnVuIC0gbXVjaCBsaWtlIHRo
ZSBgdGhyZWFkc2FmZWAgbW9kZSBvbiBQT1NJWC4KKworT3RoZXIgdmFsdWVzIGZvciB0aGUgdmFy
aWFibGUgYXJlIGlsbGVnYWwgYW5kIHdpbGwgY2F1c2UgdGhlIGRlYXRoIHRlc3QgdG8gZmFpbC4K
K0N1cnJlbnRseSwgdGhlIGZsYWcncyBkZWZhdWx0IHZhbHVlIGlzCisiZmFzdCIuIEhvd2V2ZXIs
IHdlIHJlc2VydmUKK3RoZSByaWdodCB0byBjaGFuZ2UgaXQgaW4gdGhlIGZ1dHVyZS4gVGhlcmVm
b3JlLCB5b3VyIHRlc3RzIHNob3VsZCBub3QgZGVwZW5kIG9uCit0aGlzLiBJbiBlaXRoZXIgY2Fz
ZSwgdGhlIHBhcmVudCBwcm9jZXNzIHdhaXRzIGZvciB0aGUgY2hpbGQgcHJvY2VzcyB0bworY29t
cGxldGUsIGFuZCBjaGVja3MgdGhhdAorCisxLiAgdGhlIGNoaWxkJ3MgZXhpdCBzdGF0dXMgc2F0
aXNmaWVzIHRoZSBwcmVkaWNhdGUsIGFuZAorMi4gIHRoZSBjaGlsZCdzIHN0ZGVyciBtYXRjaGVz
IHRoZSByZWd1bGFyIGV4cHJlc3Npb24uCisKK0lmIHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudCBy
dW5zIHRvIGNvbXBsZXRpb24gd2l0aG91dCBkeWluZywgdGhlIGNoaWxkIHByb2Nlc3MKK3dpbGwg
bm9uZXRoZWxlc3MgdGVybWluYXRlLCBhbmQgdGhlIGFzc2VydGlvbiBmYWlscy4KKworIyMjIERl
YXRoIFRlc3RzIEFuZCBUaHJlYWRzCisKK1RoZSByZWFzb24gZm9yIHRoZSB0d28gZGVhdGggdGVz
dCBzdHlsZXMgaGFzIHRvIGRvIHdpdGggdGhyZWFkIHNhZmV0eS4gRHVlIHRvCit3ZWxsLWtub3du
IHByb2JsZW1zIHdpdGggZm9ya2luZyBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhyZWFkcywgZGVhdGgg
dGVzdHMgc2hvdWxkCitiZSBydW4gaW4gYSBzaW5nbGUtdGhyZWFkZWQgY29udGV4dC4gU29tZXRp
bWVzLCBob3dldmVyLCBpdCBpc24ndCBmZWFzaWJsZSB0bworYXJyYW5nZSB0aGF0IGtpbmQgb2Yg
ZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBzdGF0aWNhbGx5LWluaXRpYWxpemVkIG1vZHVsZXMK
K21heSBzdGFydCB0aHJlYWRzIGJlZm9yZSBtYWluIGlzIGV2ZXIgcmVhY2hlZC4gT25jZSB0aHJl
YWRzIGhhdmUgYmVlbiBjcmVhdGVkLAoraXQgbWF5IGJlIGRpZmZpY3VsdCBvciBpbXBvc3NpYmxl
IHRvIGNsZWFuIHRoZW0gdXAuCisKK2dvb2dsZXRlc3QgaGFzIHRocmVlIGZlYXR1cmVzIGludGVu
ZGVkIHRvIHJhaXNlIGF3YXJlbmVzcyBvZiB0aHJlYWRpbmcgaXNzdWVzLgorCisxLiAgQSB3YXJu
aW5nIGlzIGVtaXR0ZWQgaWYgbXVsdGlwbGUgdGhyZWFkcyBhcmUgcnVubmluZyB3aGVuIGEgZGVh
dGggdGVzdCBpcworICAgIGVuY291bnRlcmVkLgorMi4gIFRlc3QgY2FzZXMgd2l0aCBhIG5hbWUg
ZW5kaW5nIGluICJEZWF0aFRlc3QiIGFyZSBydW4gYmVmb3JlIGFsbCBvdGhlciB0ZXN0cy4KKzMu
ICBJdCB1c2VzIGBjbG9uZSgpYCBpbnN0ZWFkIG9mIGBmb3JrKClgIHRvIHNwYXduIHRoZSBjaGls
ZCBwcm9jZXNzIG9uIExpbnV4CisgICAgKGBjbG9uZSgpYCBpcyBub3QgYXZhaWxhYmxlIG9uIEN5
Z3dpbiBhbmQgTWFjKSwgYXMgYGZvcmsoKWAgaXMgbW9yZSBsaWtlbHkKKyAgICB0byBjYXVzZSB0
aGUgY2hpbGQgdG8gaGFuZyB3aGVuIHRoZSBwYXJlbnQgcHJvY2VzcyBoYXMgbXVsdGlwbGUgdGhy
ZWFkcy4KKworSXQncyBwZXJmZWN0bHkgZmluZSB0byBjcmVhdGUgdGhyZWFkcyBpbnNpZGUgYSBk
ZWF0aCB0ZXN0IHN0YXRlbWVudDsgdGhleSBhcmUKK2V4ZWN1dGVkIGluIGEgc2VwYXJhdGUgcHJv
Y2VzcyBhbmQgY2Fubm90IGFmZmVjdCB0aGUgcGFyZW50LgorCisjIyMgRGVhdGggVGVzdCBTdHls
ZXMKKworCitUaGUgInRocmVhZHNhZmUiIGRlYXRoIHRlc3Qgc3R5bGUgd2FzIGludHJvZHVjZWQg
aW4gb3JkZXIgdG8gaGVscCBtaXRpZ2F0ZSB0aGUKK3Jpc2tzIG9mIHRlc3RpbmcgaW4gYSBwb3Nz
aWJseSBtdWx0aXRocmVhZGVkIGVudmlyb25tZW50LiBJdCB0cmFkZXMgaW5jcmVhc2VkCit0ZXN0
IGV4ZWN1dGlvbiB0aW1lIChwb3RlbnRpYWxseSBkcmFtYXRpY2FsbHkgc28pIGZvciBpbXByb3Zl
ZCB0aHJlYWQgc2FmZXR5LgorCitUaGUgYXV0b21hdGVkIHRlc3RpbmcgZnJhbWV3b3JrIGRvZXMg
bm90IHNldCB0aGUgc3R5bGUgZmxhZy4gWW91IGNhbiBjaG9vc2UgYQorcGFydGljdWxhciBzdHls
ZSBvZiBkZWF0aCB0ZXN0cyBieSBzZXR0aW5nIHRoZSBmbGFnIHByb2dyYW1tYXRpY2FsbHk6CisK
K2BgYGMrKwordGVzdGluZzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZT0idGhyZWFkc2Fm
ZSIKK2BgYAorCitZb3UgY2FuIGRvIHRoaXMgaW4gYG1haW4oKWAgdG8gc2V0IHRoZSBzdHlsZSBm
b3IgYWxsIGRlYXRoIHRlc3RzIGluIHRoZSBiaW5hcnksCitvciBpbiBpbmRpdmlkdWFsIHRlc3Rz
LiBSZWNhbGwgdGhhdCBmbGFncyBhcmUgc2F2ZWQgYmVmb3JlIHJ1bm5pbmcgZWFjaCB0ZXN0IGFu
ZAorcmVzdG9yZWQgYWZ0ZXJ3YXJkcywgc28geW91IG5lZWQgbm90IGRvIHRoYXQgeW91cnNlbGYu
IEZvciBleGFtcGxlOgorCitgYGBjKysKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikg
eworICBJbml0R29vZ2xlKGFyZ3ZbMF0sICZhcmdjLCAmYXJndiwgdHJ1ZSk7CisgIDo6dGVzdGlu
Zzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJmYXN0IjsKKyAgcmV0dXJuIFJVTl9B
TExfVEVTVFMoKTsKK30KKworVEVTVChNeURlYXRoVGVzdCwgVGVzdE9uZSkgeworICA6OnRlc3Rp
bmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAidGhyZWFkc2FmZSI7CisgIC8vIFRo
aXMgdGVzdCBpcyBydW4gaW4gdGhlICJ0aHJlYWRzYWZlIiBzdHlsZToKKyAgQVNTRVJUX0RFQVRI
KFRoaXNTaG91bGREaWUoKSwgIiIpOworfQorCitURVNUKE15RGVhdGhUZXN0LCBUZXN0VHdvKSB7
CisgIC8vIFRoaXMgdGVzdCBpcyBydW4gaW4gdGhlICJmYXN0IiBzdHlsZToKKyAgQVNTRVJUX0RF
QVRIKFRoaXNTaG91bGREaWUoKSwgIiIpOworfQorYGBgCisKKworIyMjIENhdmVhdHMKKworVGhl
IGBzdGF0ZW1lbnRgIGFyZ3VtZW50IG9mIGBBU1NFUlRfRVhJVCgpYCBjYW4gYmUgYW55IHZhbGlk
IEMrKyBzdGF0ZW1lbnQuIElmCitpdCBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gdmlhIGEg
YHJldHVybmAgc3RhdGVtZW50IG9yIGJ5IHRocm93aW5nIGFuCitleGNlcHRpb24sIHRoZSBkZWF0
aCB0ZXN0IGlzIGNvbnNpZGVyZWQgdG8gaGF2ZSBmYWlsZWQuIFNvbWUgZ29vZ2xldGVzdCBtYWNy
b3MKK21heSByZXR1cm4gZnJvbSB0aGUgY3VycmVudCBmdW5jdGlvbiAoZS5nLiBgQVNTRVJUX1RS
VUUoKWApLCBzbyBiZSBzdXJlIHRvIGF2b2lkCit0aGVtIGluIGBzdGF0ZW1lbnRgLgorCitTaW5j
ZSBgc3RhdGVtZW50YCBydW5zIGluIHRoZSBjaGlsZCBwcm9jZXNzLCBhbnkgaW4tbWVtb3J5IHNp
ZGUgZWZmZWN0IChlLmcuCittb2RpZnlpbmcgYSB2YXJpYWJsZSwgcmVsZWFzaW5nIG1lbW9yeSwg
ZXRjKSBpdCBjYXVzZXMgd2lsbCAqbm90KiBiZSBvYnNlcnZhYmxlCitpbiB0aGUgcGFyZW50IHBy
b2Nlc3MuIEluIHBhcnRpY3VsYXIsIGlmIHlvdSByZWxlYXNlIG1lbW9yeSBpbiBhIGRlYXRoIHRl
c3QsCit5b3VyIHByb2dyYW0gd2lsbCBmYWlsIHRoZSBoZWFwIGNoZWNrIGFzIHRoZSBwYXJlbnQg
cHJvY2VzcyB3aWxsIG5ldmVyIHNlZSB0aGUKK21lbW9yeSByZWNsYWltZWQuIFRvIHNvbHZlIHRo
aXMgcHJvYmxlbSwgeW91IGNhbgorCisxLiAgdHJ5IG5vdCB0byBmcmVlIG1lbW9yeSBpbiBhIGRl
YXRoIHRlc3Q7CisyLiAgZnJlZSB0aGUgbWVtb3J5IGFnYWluIGluIHRoZSBwYXJlbnQgcHJvY2Vz
czsgb3IKKzMuICBkbyBub3QgdXNlIHRoZSBoZWFwIGNoZWNrZXIgaW4geW91ciBwcm9ncmFtLgor
CitEdWUgdG8gYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCB5b3UgY2Fubm90IHBsYWNlIG11bHRp
cGxlIGRlYXRoIHRlc3QgYXNzZXJ0aW9ucworb24gdGhlIHNhbWUgbGluZTsgb3RoZXJ3aXNlLCBj
b21waWxhdGlvbiB3aWxsIGZhaWwgd2l0aCBhbiB1bm9idmlvdXMgZXJyb3IKK21lc3NhZ2UuCisK
K0Rlc3BpdGUgdGhlIGltcHJvdmVkIHRocmVhZCBzYWZldHkgYWZmb3JkZWQgYnkgdGhlICJ0aHJl
YWRzYWZlIiBzdHlsZSBvZiBkZWF0aAordGVzdCwgdGhyZWFkIHByb2JsZW1zIHN1Y2ggYXMgZGVh
ZGxvY2sgYXJlIHN0aWxsIHBvc3NpYmxlIGluIHRoZSBwcmVzZW5jZSBvZgoraGFuZGxlcnMgcmVn
aXN0ZXJlZCB3aXRoIGBwdGhyZWFkX2F0Zm9yaygzKWAuCisKKworIyMgVXNpbmcgQXNzZXJ0aW9u
cyBpbiBTdWItcm91dGluZXMKKworIyMjIEFkZGluZyBUcmFjZXMgdG8gQXNzZXJ0aW9ucworCitJ
ZiBhIHRlc3Qgc3ViLXJvdXRpbmUgaXMgY2FsbGVkIGZyb20gc2V2ZXJhbCBwbGFjZXMsIHdoZW4g
YW4gYXNzZXJ0aW9uIGluc2lkZSBpdAorZmFpbHMsIGl0IGNhbiBiZSBoYXJkIHRvIHRlbGwgd2hp
Y2ggaW52b2NhdGlvbiBvZiB0aGUgc3ViLXJvdXRpbmUgdGhlIGZhaWx1cmUgaXMKK2Zyb20uIAor
WW91IGNhbiBhbGxldmlhdGUgdGhpcyBwcm9ibGVtIHVzaW5nIGV4dHJhIGxvZ2dpbmcgb3IgY3Vz
dG9tIGZhaWx1cmUgbWVzc2FnZXMsCitidXQgdGhhdCB1c3VhbGx5IGNsdXR0ZXJzIHVwIHlvdXIg
dGVzdHMuIEEgYmV0dGVyIHNvbHV0aW9uIGlzIHRvIHVzZSB0aGUKK2BTQ09QRURfVFJBQ0VgIG1h
Y3JvIG9yIHRoZSBgU2NvcGVkVHJhY2VgIHV0aWxpdHk6CisKK2BgYGMrKworU0NPUEVEX1RSQUNF
KG1lc3NhZ2UpOworU2NvcGVkVHJhY2UgdHJhY2UoImZpbGVfcGF0aCIsIGxpbmVfbnVtYmVyLCBt
ZXNzYWdlKTsKK2BgYAorCit3aGVyZSBgbWVzc2FnZWAgY2FuIGJlIGFueXRoaW5nIHN0cmVhbWFi
bGUgdG8gYHN0ZDo6b3N0cmVhbWAuIGBTQ09QRURfVFJBQ0VgCittYWNybyB3aWxsIGNhdXNlIHRo
ZSBjdXJyZW50IGZpbGUgbmFtZSwgbGluZSBudW1iZXIsIGFuZCB0aGUgZ2l2ZW4gbWVzc2FnZSB0
byBiZQorYWRkZWQgaW4gZXZlcnkgZmFpbHVyZSBtZXNzYWdlLiBgU2NvcGVkVHJhY2VgIGFjY2Vw
dHMgZXhwbGljaXQgZmlsZSBuYW1lIGFuZAorbGluZSBudW1iZXIgaW4gYXJndW1lbnRzLCB3aGlj
aCBpcyB1c2VmdWwgZm9yIHdyaXRpbmcgdGVzdCBoZWxwZXJzLiBUaGUgZWZmZWN0Cit3aWxsIGJl
IHVuZG9uZSB3aGVuIHRoZSBjb250cm9sIGxlYXZlcyB0aGUgY3VycmVudCBsZXhpY2FsIHNjb3Bl
LgorCitGb3IgZXhhbXBsZSwKKworYGBgYysrCisxMDogdm9pZCBTdWIxKGludCBuKSB7CisxMTog
ICBFWFBFQ1RfRVEoMSwgQmFyKG4pKTsKKzEyOiAgIEVYUEVDVF9FUSgyLCBCYXIobiArIDEpKTsK
KzEzOiB9CisxNDoKKzE1OiBURVNUKEZvb1Rlc3QsIEJhcikgeworMTY6ICAgeworMTc6ICAgICBT
Q09QRURfVFJBQ0UoIkEiKTsgIC8vIFRoaXMgdHJhY2UgcG9pbnQgd2lsbCBiZSBpbmNsdWRlZCBp
bgorMTg6ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV2ZXJ5IGZhaWx1cmUgaW4gdGhpcyBz
Y29wZS4KKzE5OiAgICAgU3ViMSgxKTsKKzIwOiAgIH0KKzIxOiAgIC8vIE5vdyBpdCB3b24ndC4K
KzIyOiAgIFN1YjEoOSk7CisyMzogfQorYGBgCisKK2NvdWxkIHJlc3VsdCBpbiBtZXNzYWdlcyBs
aWtlIHRoZXNlOgorCitgYGBub25lCitwYXRoL3RvL2Zvb190ZXN0LmNjOjExOiBGYWlsdXJlCitW
YWx1ZSBvZjogQmFyKG4pCitFeHBlY3RlZDogMQorICBBY3R1YWw6IDIKKyAgIFRyYWNlOgorcGF0
aC90by9mb29fdGVzdC5jYzoxNzogQQorCitwYXRoL3RvL2Zvb190ZXN0LmNjOjEyOiBGYWlsdXJl
CitWYWx1ZSBvZjogQmFyKG4gKyAxKQorRXhwZWN0ZWQ6IDIKKyAgQWN0dWFsOiAzCitgYGAKKwor
V2l0aG91dCB0aGUgdHJhY2UsIGl0IHdvdWxkJ3ZlIGJlZW4gZGlmZmljdWx0IHRvIGtub3cgd2hp
Y2ggaW52b2NhdGlvbiBvZgorYFN1YjEoKWAgdGhlIHR3byBmYWlsdXJlcyBjb21lIGZyb20gcmVz
cGVjdGl2ZWx5LiAoWW91IGNvdWxkIGFkZAorCithbiBleHRyYSBtZXNzYWdlIHRvIGVhY2ggYXNz
ZXJ0aW9uIGluIGBTdWIxKClgIHRvIGluZGljYXRlIHRoZSB2YWx1ZSBvZiBgbmAsIGJ1dAordGhh
dCdzIHRlZGlvdXMuKQorCitTb21lIHRpcHMgb24gdXNpbmcgYFNDT1BFRF9UUkFDRWA6CisKKzEu
ICBXaXRoIGEgc3VpdGFibGUgbWVzc2FnZSwgaXQncyBvZnRlbiBlbm91Z2ggdG8gdXNlIGBTQ09Q
RURfVFJBQ0VgIGF0IHRoZQorICAgIGJlZ2lubmluZyBvZiBhIHN1Yi1yb3V0aW5lLCBpbnN0ZWFk
IG9mIGF0IGVhY2ggY2FsbCBzaXRlLgorMi4gIFdoZW4gY2FsbGluZyBzdWItcm91dGluZXMgaW5z
aWRlIGEgbG9vcCwgbWFrZSB0aGUgbG9vcCBpdGVyYXRvciBwYXJ0IG9mIHRoZQorICAgIG1lc3Nh
Z2UgaW4gYFNDT1BFRF9UUkFDRWAgc3VjaCB0aGF0IHlvdSBjYW4ga25vdyB3aGljaCBpdGVyYXRp
b24gdGhlIGZhaWx1cmUKKyAgICBpcyBmcm9tLgorMy4gIFNvbWV0aW1lcyB0aGUgbGluZSBudW1i
ZXIgb2YgdGhlIHRyYWNlIHBvaW50IGlzIGVub3VnaCBmb3IgaWRlbnRpZnlpbmcgdGhlCisgICAg
cGFydGljdWxhciBpbnZvY2F0aW9uIG9mIGEgc3ViLXJvdXRpbmUuIEluIHRoaXMgY2FzZSwgeW91
IGRvbid0IGhhdmUgdG8KKyAgICBjaG9vc2UgYSB1bmlxdWUgbWVzc2FnZSBmb3IgYFNDT1BFRF9U
UkFDRWAuIFlvdSBjYW4gc2ltcGx5IHVzZSBgIiJgLgorNC4gIFlvdSBjYW4gdXNlIGBTQ09QRURf
VFJBQ0VgIGluIGFuIGlubmVyIHNjb3BlIHdoZW4gdGhlcmUgaXMgb25lIGluIHRoZSBvdXRlcgor
ICAgIHNjb3BlLiBJbiB0aGlzIGNhc2UsIGFsbCBhY3RpdmUgdHJhY2UgcG9pbnRzIHdpbGwgYmUg
aW5jbHVkZWQgaW4gdGhlIGZhaWx1cmUKKyAgICBtZXNzYWdlcywgaW4gcmV2ZXJzZSBvcmRlciB0
aGV5IGFyZSBlbmNvdW50ZXJlZC4KKzUuICBUaGUgdHJhY2UgZHVtcCBpcyBjbGlja2FibGUgaW4g
RW1hY3MgLSBoaXQgYHJldHVybmAgb24gYSBsaW5lIG51bWJlciBhbmQKKyAgICB5b3UnbGwgYmUg
dGFrZW4gdG8gdGhhdCBsaW5lIGluIHRoZSBzb3VyY2UgZmlsZSEKKworKipBdmFpbGFiaWxpdHkq
KjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIFByb3BhZ2F0aW5nIEZhdGFsIEZhaWx1cmVz
CisKK0EgY29tbW9uIHBpdGZhbGwgd2hlbiB1c2luZyBgQVNTRVJUXypgIGFuZCBgRkFJTCpgIGlz
IG5vdCB1bmRlcnN0YW5kaW5nIHRoYXQKK3doZW4gdGhleSBmYWlsIHRoZXkgb25seSBhYm9ydCB0
aGUgX2N1cnJlbnQgZnVuY3Rpb25fLCBub3QgdGhlIGVudGlyZSB0ZXN0LiBGb3IKK2V4YW1wbGUs
IHRoZSBmb2xsb3dpbmcgdGVzdCB3aWxsIHNlZ2ZhdWx0OgorCitgYGBjKysKK3ZvaWQgU3Vicm91
dGluZSgpIHsKKyAgLy8gR2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSBj
dXJyZW50IGZ1bmN0aW9uLgorICBBU1NFUlRfRVEoMSwgMik7CisKKyAgLy8gVGhlIGZvbGxvd2lu
ZyB3b24ndCBiZSBleGVjdXRlZC4KKyAgLi4uCit9CisKK1RFU1QoRm9vVGVzdCwgQmFyKSB7Cisg
IFN1YnJvdXRpbmUoKTsgIC8vIFRoZSBpbnRlbmRlZCBiZWhhdmlvciBpcyBmb3IgdGhlIGZhdGFs
IGZhaWx1cmUKKyAgICAgICAgICAgICAgICAgLy8gaW4gU3Vicm91dGluZSgpIHRvIGFib3J0IHRo
ZSBlbnRpcmUgdGVzdC4KKworICAvLyBUaGUgYWN0dWFsIGJlaGF2aW9yOiB0aGUgZnVuY3Rpb24g
Z29lcyBvbiBhZnRlciBTdWJyb3V0aW5lKCkgcmV0dXJucy4KKyAgaW50KiBwID0gTlVMTDsKKyAg
KnAgPSAzOyAgLy8gU2VnZmF1bHQhCit9CitgYGAKKworVG8gYWxsZXZpYXRlIHRoaXMsIGdvb2ds
ZXRlc3QgcHJvdmlkZXMgdGhyZWUgZGlmZmVyZW50IHNvbHV0aW9ucy4gWW91IGNvdWxkIHVzZQor
ZWl0aGVyIGV4Y2VwdGlvbnMsIHRoZSBgKEFTU0VSVHxFWFBFQ1QpX05PX0ZBVEFMX0ZBSUxVUkVg
IGFzc2VydGlvbnMgb3IgdGhlCitgSGFzRmF0YWxGYWlsdXJlKClgIGZ1bmN0aW9uLiBUaGV5IGFy
ZSBkZXNjcmliZWQgaW4gdGhlIGZvbGxvd2luZyB0d28KK3N1YnNlY3Rpb25zLgorCisjIyMjIEFz
c2VydGluZyBvbiBTdWJyb3V0aW5lcyB3aXRoIGFuIGV4Y2VwdGlvbgorCitUaGUgZm9sbG93aW5n
IGNvZGUgY2FuIHR1cm4gQVNTRVJULWZhaWx1cmUgaW50byBhbiBleGNlcHRpb246CisKK2BgYGMr
KworY2xhc3MgVGhyb3dMaXN0ZW5lciA6IHB1YmxpYyB0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExp
c3RlbmVyIHsKKyAgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IHRlc3Rpbmc6OlRlc3RQYXJ0
UmVzdWx0JiByZXN1bHQpIG92ZXJyaWRlIHsKKyAgICBpZiAocmVzdWx0LnR5cGUoKSA9PSB0ZXN0
aW5nOjpUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSkgeworICAgICAgdGhyb3cgdGVzdGlu
Zzo6QXNzZXJ0aW9uRXhjZXB0aW9uKHJlc3VsdCk7CisgICAgfQorICB9Cit9OworaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIC4uLgorICB0ZXN0aW5nOjpVbml0VGVzdDo6R2V0
SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCkuQXBwZW5kKG5ldyBUaHJvd0xpc3RlbmVyKTsKKyAgcmV0
dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAorCitUaGlzIGxpc3RlbmVyIHNob3VsZCBiZSBh
ZGRlZCBhZnRlciBvdGhlciBsaXN0ZW5lcnMgaWYgeW91IGhhdmUgYW55LCBvdGhlcndpc2UKK3Ro
ZXkgd29uJ3Qgc2VlIGZhaWxlZCBgT25UZXN0UGFydFJlc3VsdGAuCisKKyMjIyMgQXNzZXJ0aW5n
IG9uIFN1YnJvdXRpbmVzCisKK0FzIHNob3duIGFib3ZlLCBpZiB5b3VyIHRlc3QgY2FsbHMgYSBz
dWJyb3V0aW5lIHRoYXQgaGFzIGFuIGBBU1NFUlRfKmAgZmFpbHVyZQoraW4gaXQsIHRoZSB0ZXN0
IHdpbGwgY29udGludWUgYWZ0ZXIgdGhlIHN1YnJvdXRpbmUgcmV0dXJucy4gVGhpcyBtYXkgbm90
IGJlIHdoYXQKK3lvdSB3YW50LgorCitPZnRlbiBwZW9wbGUgd2FudCBmYXRhbCBmYWlsdXJlcyB0
byBwcm9wYWdhdGUgbGlrZSBleGNlcHRpb25zLiBGb3IgdGhhdAorZ29vZ2xldGVzdCBvZmZlcnMg
dGhlIGZvbGxvd2luZyBtYWNyb3M6CisKK0ZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAg
ICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgICAgIHwgVmVyaWZpZXMK
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0KK2BBU1NFUlRfTk9fRkFUQUxfRkFJTFVS
RShzdGF0ZW1lbnQpO2AgfCBgRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoc3RhdGVtZW50KTtgIHwg
YHN0YXRlbWVudGAgZG9lc24ndCBnZW5lcmF0ZSBhbnkgbmV3IGZhdGFsIGZhaWx1cmVzIGluIHRo
ZSBjdXJyZW50IHRocmVhZC4KKworT25seSBmYWlsdXJlcyBpbiB0aGUgdGhyZWFkIHRoYXQgZXhl
Y3V0ZXMgdGhlIGFzc2VydGlvbiBhcmUgY2hlY2tlZCB0byBkZXRlcm1pbmUKK3RoZSByZXN1bHQg
b2YgdGhpcyB0eXBlIG9mIGFzc2VydGlvbnMuIElmIGBzdGF0ZW1lbnRgIGNyZWF0ZXMgbmV3IHRo
cmVhZHMsCitmYWlsdXJlcyBpbiB0aGVzZSB0aHJlYWRzIGFyZSBpZ25vcmVkLgorCitFeGFtcGxl
czoKKworYGBgYysrCitBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShGb28oKSk7CisKK2ludCBpOwor
RVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoeworICBpID0gQmFyKCk7Cit9KTsKK2BgYAorCisqKkF2
YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLiBBc3NlcnRpb25zIGZyb20gbXVsdGlw
bGUgdGhyZWFkcyBhcmUKK2N1cnJlbnRseSBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MuCisKKyMj
IyMgQ2hlY2tpbmcgZm9yIEZhaWx1cmVzIGluIHRoZSBDdXJyZW50IFRlc3QKKworYEhhc0ZhdGFs
RmFpbHVyZSgpYCBpbiB0aGUgYDo6dGVzdGluZzo6VGVzdGAgY2xhc3MgcmV0dXJucyBgdHJ1ZWAg
aWYgYW4KK2Fzc2VydGlvbiBpbiB0aGUgY3VycmVudCB0ZXN0IGhhcyBzdWZmZXJlZCBhIGZhdGFs
IGZhaWx1cmUuIFRoaXMgYWxsb3dzCitmdW5jdGlvbnMgdG8gY2F0Y2ggZmF0YWwgZmFpbHVyZXMg
aW4gYSBzdWItcm91dGluZSBhbmQgcmV0dXJuIGVhcmx5LgorCitgYGBjKysKK2NsYXNzIFRlc3Qg
eworIHB1YmxpYzoKKyAgLi4uCisgIHN0YXRpYyBib29sIEhhc0ZhdGFsRmFpbHVyZSgpOworfTsK
K2BgYAorCitUaGUgdHlwaWNhbCB1c2FnZSwgd2hpY2ggYmFzaWNhbGx5IHNpbXVsYXRlcyB0aGUg
YmVoYXZpb3Igb2YgYSB0aHJvd24gZXhjZXB0aW9uLAoraXM6CisKK2BgYGMrKworVEVTVChGb29U
ZXN0LCBCYXIpIHsKKyAgU3Vicm91dGluZSgpOworICAvLyBBYm9ydHMgaWYgU3Vicm91dGluZSgp
IGhhZCBhIGZhdGFsIGZhaWx1cmUuCisgIGlmIChIYXNGYXRhbEZhaWx1cmUoKSkgcmV0dXJuOwor
CisgIC8vIFRoZSBmb2xsb3dpbmcgd29uJ3QgYmUgZXhlY3V0ZWQuCisgIC4uLgorfQorYGBgCisK
K0lmIGBIYXNGYXRhbEZhaWx1cmUoKWAgaXMgdXNlZCBvdXRzaWRlIG9mIGBURVNUKClgICwgYFRF
U1RfRigpYCAsIG9yIGEgdGVzdAorZml4dHVyZSwgeW91IG11c3QgYWRkIHRoZSBgOjp0ZXN0aW5n
OjpUZXN0OjpgIHByZWZpeCwgYXMgaW46CisKK2BgYGMrKworaWYgKDo6dGVzdGluZzo6VGVzdDo6
SGFzRmF0YWxGYWlsdXJlKCkpIHJldHVybjsKK2BgYAorCitTaW1pbGFybHksIGBIYXNOb25mYXRh
bEZhaWx1cmUoKWAgcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGN1cnJlbnQgdGVzdCBoYXMgYXQKK2xl
YXN0IG9uZSBub24tZmF0YWwgZmFpbHVyZSwgYW5kIGBIYXNGYWlsdXJlKClgIHJldHVybnMgYHRy
dWVgIGlmIHRoZSBjdXJyZW50Cit0ZXN0IGhhcyBhdCBsZWFzdCBvbmUgZmFpbHVyZSBvZiBlaXRo
ZXIga2luZC4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMg
TG9nZ2luZyBBZGRpdGlvbmFsIEluZm9ybWF0aW9uCisKK0luIHlvdXIgdGVzdCBjb2RlLCB5b3Ug
Y2FuIGNhbGwgYFJlY29yZFByb3BlcnR5KCJrZXkiLCB2YWx1ZSlgIHRvIGxvZyBhZGRpdGlvbmFs
CitpbmZvcm1hdGlvbiwgd2hlcmUgYHZhbHVlYCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFu
IGBpbnRgLiBUaGUgKmxhc3QqIHZhbHVlCityZWNvcmRlZCBmb3IgYSBrZXkgd2lsbCBiZSBlbWl0
dGVkIHRvIHRoZSBbWE1MIG91dHB1dF0oI2dlbmVyYXRpbmctYW4teG1sLXJlcG9ydCkgaWYgeW91
CitzcGVjaWZ5IG9uZS4gRm9yIGV4YW1wbGUsIHRoZSB0ZXN0CisKK2BgYGMrKworVEVTVF9GKFdp
ZGdldFVzYWdlVGVzdCwgTWluQW5kTWF4V2lkZ2V0cykgeworICBSZWNvcmRQcm9wZXJ0eSgiTWF4
aW11bVdpZGdldHMiLCBDb21wdXRlTWF4VXNhZ2UoKSk7CisgIFJlY29yZFByb3BlcnR5KCJNaW5p
bXVtV2lkZ2V0cyIsIENvbXB1dGVNaW5Vc2FnZSgpKTsKK30KK2BgYAorCit3aWxsIG91dHB1dCBY
TUwgbGlrZSB0aGlzOgorCitgYGB4bWwKKyAgLi4uCisgICAgPHRlc3RjYXNlIG5hbWU9Ik1pbkFu
ZE1heFdpZGdldHMiIHN0YXR1cz0icnVuIiB0aW1lPSIwLjAwNiIgY2xhc3NuYW1lPSJXaWRnZXRV
c2FnZVRlc3QiIE1heGltdW1XaWRnZXRzPSIxMiIgTWluaW11bVdpZGdldHM9IjkiIC8+CisgIC4u
LgorYGBgCisKKz4gTk9URToKKz4KKz4gKiAgIGBSZWNvcmRQcm9wZXJ0eSgpYCBpcyBhIHN0YXRp
YyBtZW1iZXIgb2YgdGhlIGBUZXN0YCBjbGFzcy4gVGhlcmVmb3JlIGl0Cis+ICAgICBuZWVkcyB0
byBiZSBwcmVmaXhlZCB3aXRoIGA6OnRlc3Rpbmc6OlRlc3Q6OmAgaWYgdXNlZCBvdXRzaWRlIG9m
IHRoZQorPiAgICAgYFRFU1RgIGJvZHkgYW5kIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuCis+ICog
ICBgKmtleSpgIG11c3QgYmUgYSB2YWxpZCBYTUwgYXR0cmlidXRlIG5hbWUsIGFuZCBjYW5ub3Qg
Y29uZmxpY3Qgd2l0aCB0aGUKKz4gICAgIG9uZXMgYWxyZWFkeSB1c2VkIGJ5IGdvb2dsZXRlc3Qg
KGBuYW1lYCwgYHN0YXR1c2AsIGB0aW1lYCwgYGNsYXNzbmFtZWAsCis+ICAgICBgdHlwZV9wYXJh
bWAsIGFuZCBgdmFsdWVfcGFyYW1gKS4KKz4gKiAgIENhbGxpbmcgYFJlY29yZFByb3BlcnR5KClg
IG91dHNpZGUgb2YgdGhlIGxpZmVzcGFuIG9mIGEgdGVzdCBpcyBhbGxvd2VkLgorPiAgICAgSWYg
aXQncyBjYWxsZWQgb3V0c2lkZSBvZiBhIHRlc3QgYnV0IGJldHdlZW4gYSB0ZXN0IGNhc2Uncwor
PiAgICAgYFNldFVwVGVzdENhc2UoKWAgYW5kIGBUZWFyRG93blRlc3RDYXNlKClgIG1ldGhvZHMs
IGl0IHdpbGwgYmUgYXR0cmlidXRlZAorPiAgICAgdG8gdGhlIFhNTCBlbGVtZW50IGZvciB0aGUg
dGVzdCBjYXNlLiBJZiBpdCdzIGNhbGxlZCBvdXRzaWRlIG9mIGFsbCB0ZXN0Cis+ICAgICBjYXNl
cyAoZS5nLiBpbiBhIHRlc3QgZW52aXJvbm1lbnQpLCBpdCB3aWxsIGJlIGF0dHJpYnV0ZWQgdG8g
dGhlIHRvcC1sZXZlbAorPiAgICAgWE1MIGVsZW1lbnQuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExp
bnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIFNoYXJpbmcgUmVzb3VyY2VzIEJldHdlZW4gVGVzdHMg
aW4gdGhlIFNhbWUgVGVzdCBDYXNlCisKK2dvb2dsZXRlc3QgY3JlYXRlcyBhIG5ldyB0ZXN0IGZp
eHR1cmUgb2JqZWN0IGZvciBlYWNoIHRlc3QgaW4gb3JkZXIgdG8gbWFrZQordGVzdHMgaW5kZXBl
bmRlbnQgYW5kIGVhc2llciB0byBkZWJ1Zy4gSG93ZXZlciwgc29tZXRpbWVzIHRlc3RzIHVzZSBy
ZXNvdXJjZXMKK3RoYXQgYXJlIGV4cGVuc2l2ZSB0byBzZXQgdXAsIG1ha2luZyB0aGUgb25lLWNv
cHktcGVyLXRlc3QgbW9kZWwgcHJvaGliaXRpdmVseQorZXhwZW5zaXZlLgorCitJZiB0aGUgdGVz
dHMgZG9uJ3QgY2hhbmdlIHRoZSByZXNvdXJjZSwgdGhlcmUncyBubyBoYXJtIGluIHRoZWlyIHNo
YXJpbmcgYQorc2luZ2xlIHJlc291cmNlIGNvcHkuIFNvLCBpbiBhZGRpdGlvbiB0byBwZXItdGVz
dCBzZXQtdXAvdGVhci1kb3duLCBnb29nbGV0ZXN0CithbHNvIHN1cHBvcnRzIHBlci10ZXN0LWNh
c2Ugc2V0LXVwL3RlYXItZG93bi4gVG8gdXNlIGl0OgorCisxLiAgSW4geW91ciB0ZXN0IGZpeHR1
cmUgY2xhc3MgKHNheSBgRm9vVGVzdGAgKSwgZGVjbGFyZSBhcyBgc3RhdGljYCBzb21lIG1lbWJl
cgorICAgIHZhcmlhYmxlcyB0byBob2xkIHRoZSBzaGFyZWQgcmVzb3VyY2VzLgorMS4gIE91dHNp
ZGUgeW91ciB0ZXN0IGZpeHR1cmUgY2xhc3MgKHR5cGljYWxseSBqdXN0IGJlbG93IGl0KSwgZGVm
aW5lIHRob3NlCisgICAgbWVtYmVyIHZhcmlhYmxlcywgb3B0aW9uYWxseSBnaXZpbmcgdGhlbSBp
bml0aWFsIHZhbHVlcy4KKzEuICBJbiB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUgY2xhc3MsIGRlZmlu
ZSBhIGBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKClgCisgICAgZnVuY3Rpb24gKHJlbWVtYmVy
IG5vdCB0byBzcGVsbCBpdCBhcyAqKmBTZXR1cFRlc3RDYXNlYCoqIHdpdGggYSBzbWFsbCBgdWAh
KQorICAgIHRvIHNldCB1cCB0aGUgc2hhcmVkIHJlc291cmNlcyBhbmQgYSBgc3RhdGljIHZvaWQg
VGVhckRvd25UZXN0Q2FzZSgpYAorICAgIGZ1bmN0aW9uIHRvIHRlYXIgdGhlbSBkb3duLgorCitU
aGF0J3MgaXQhIGdvb2dsZXRlc3QgYXV0b21hdGljYWxseSBjYWxscyBgU2V0VXBUZXN0Q2FzZSgp
YCBiZWZvcmUgcnVubmluZyB0aGUKKypmaXJzdCB0ZXN0KiBpbiB0aGUgYEZvb1Rlc3RgIHRlc3Qg
Y2FzZSAoaS5lLiBiZWZvcmUgY3JlYXRpbmcgdGhlIGZpcnN0CitgRm9vVGVzdGAgb2JqZWN0KSwg
YW5kIGNhbGxzIGBUZWFyRG93blRlc3RDYXNlKClgIGFmdGVyIHJ1bm5pbmcgdGhlICpsYXN0IHRl
c3QqCitpbiBpdCAoaS5lLiBhZnRlciBkZWxldGluZyB0aGUgbGFzdCBgRm9vVGVzdGAgb2JqZWN0
KS4gSW4gYmV0d2VlbiwgdGhlIHRlc3RzIGNhbgordXNlIHRoZSBzaGFyZWQgcmVzb3VyY2VzLgor
CitSZW1lbWJlciB0aGF0IHRoZSB0ZXN0IG9yZGVyIGlzIHVuZGVmaW5lZCwgc28geW91ciBjb2Rl
IGNhbid0IGRlcGVuZCBvbiBhIHRlc3QKK3ByZWNlZGluZyBvciBmb2xsb3dpbmcgYW5vdGhlci4g
QWxzbywgdGhlIHRlc3RzIG11c3QgZWl0aGVyIG5vdCBtb2RpZnkgdGhlIHN0YXRlCitvZiBhbnkg
c2hhcmVkIHJlc291cmNlLCBvciwgaWYgdGhleSBkbyBtb2RpZnkgdGhlIHN0YXRlLCB0aGV5IG11
c3QgcmVzdG9yZSB0aGUKK3N0YXRlIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZSBiZWZvcmUgcGFzc2lu
ZyBjb250cm9sIHRvIHRoZSBuZXh0IHRlc3QuCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIHBlci10
ZXN0LWNhc2Ugc2V0LXVwIGFuZCB0ZWFyLWRvd246CisKK2BgYGMrKworY2xhc3MgRm9vVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLy8gUGVyLXRlc3QtY2Fz
ZSBzZXQtdXAuCisgIC8vIENhbGxlZCBiZWZvcmUgdGhlIGZpcnN0IHRlc3QgaW4gdGhpcyB0ZXN0
IGNhc2UuCisgIC8vIENhbiBiZSBvbWl0dGVkIGlmIG5vdCBuZWVkZWQuCisgIHN0YXRpYyB2b2lk
IFNldFVwVGVzdENhc2UoKSB7CisgICAgc2hhcmVkX3Jlc291cmNlXyA9IG5ldyAuLi47CisgIH0K
KworICAvLyBQZXItdGVzdC1jYXNlIHRlYXItZG93bi4KKyAgLy8gQ2FsbGVkIGFmdGVyIHRoZSBs
YXN0IHRlc3QgaW4gdGhpcyB0ZXN0IGNhc2UuCisgIC8vIENhbiBiZSBvbWl0dGVkIGlmIG5vdCBu
ZWVkZWQuCisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7CisgICAgZGVsZXRlIHNo
YXJlZF9yZXNvdXJjZV87CisgICAgc2hhcmVkX3Jlc291cmNlXyA9IE5VTEw7CisgIH0KKworICAv
LyBZb3UgY2FuIGRlZmluZSBwZXItdGVzdCBzZXQtdXAgbG9naWMgYXMgdXN1YWwuCisgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsgLi4uIH0KKworICAvLyBZb3UgY2FuIGRlZmluZSBwZXItdGVzdCB0
ZWFyLWRvd24gbG9naWMgYXMgdXN1YWwuCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsgLi4u
IH0KKworICAvLyBTb21lIGV4cGVuc2l2ZSByZXNvdXJjZSBzaGFyZWQgYnkgYWxsIHRlc3RzLgor
ICBzdGF0aWMgVCogc2hhcmVkX3Jlc291cmNlXzsKK307CisKK1QqIEZvb1Rlc3Q6OnNoYXJlZF9y
ZXNvdXJjZV8gPSBOVUxMOworCitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgLi4uIHlvdSBj
YW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlXyBoZXJlIC4uLgorfQorCitURVNUX0YoRm9vVGVz
dCwgVGVzdDIpIHsKKyAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlXyBoZXJl
IC4uLgorfQorYGBgCisKK05PVEU6IFRob3VnaCB0aGUgYWJvdmUgY29kZSBkZWNsYXJlcyBgU2V0
VXBUZXN0Q2FzZSgpYCBwcm90ZWN0ZWQsIGl0IG1heQorc29tZXRpbWVzIGJlIG5lY2Vzc2FyeSB0
byBkZWNsYXJlIGl0IHB1YmxpYywgc3VjaCBhcyB3aGVuIHVzaW5nIGl0IHdpdGgKK2BURVNUX1Bg
LgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBHbG9iYWwg
U2V0LVVwIGFuZCBUZWFyLURvd24KKworSnVzdCBhcyB5b3UgY2FuIGRvIHNldC11cCBhbmQgdGVh
ci1kb3duIGF0IHRoZSB0ZXN0IGxldmVsIGFuZCB0aGUgdGVzdCBjYXNlCitsZXZlbCwgeW91IGNh
biBhbHNvIGRvIGl0IGF0IHRoZSB0ZXN0IHByb2dyYW0gbGV2ZWwuIEhlcmUncyBob3cuCisKK0Zp
cnN0LCB5b3Ugc3ViY2xhc3MgdGhlIGA6OnRlc3Rpbmc6OkVudmlyb25tZW50YCBjbGFzcyB0byBk
ZWZpbmUgYSB0ZXN0CitlbnZpcm9ubWVudCwgd2hpY2gga25vd3MgaG93IHRvIHNldC11cCBhbmQg
dGVhci1kb3duOgorCitgYGBjKysKK2NsYXNzIEVudmlyb25tZW50IHsKKyBwdWJsaWM6CisgIHZp
cnR1YWwgfkVudmlyb25tZW50KCkge30KKworICAvLyBPdmVycmlkZSB0aGlzIHRvIGRlZmluZSBo
b3cgdG8gc2V0IHVwIHRoZSBlbnZpcm9ubWVudC4KKyAgdmlydHVhbCB2b2lkIFNldFVwKCkge30K
KworICAvLyBPdmVycmlkZSB0aGlzIHRvIGRlZmluZSBob3cgdG8gdGVhciBkb3duIHRoZSBlbnZp
cm9ubWVudC4KKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkge30KK307CitgYGAKKworVGhlbiwg
eW91IHJlZ2lzdGVyIGFuIGluc3RhbmNlIG9mIHlvdXIgZW52aXJvbm1lbnQgY2xhc3Mgd2l0aCBn
b29nbGV0ZXN0IGJ5CitjYWxsaW5nIHRoZSBgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJv
bm1lbnQoKWAgZnVuY3Rpb246CisKK2BgYGMrKworRW52aXJvbm1lbnQqIEFkZEdsb2JhbFRlc3RF
bnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KTsKK2BgYAorCitOb3csIHdoZW4gYFJVTl9BTExf
VEVTVFMoKWAgaXMgY2FsbGVkLCBpdCBmaXJzdCBjYWxscyB0aGUgYFNldFVwKClgIG1ldGhvZCBv
ZgordGhlIGVudmlyb25tZW50IG9iamVjdCwgdGhlbiBydW5zIHRoZSB0ZXN0cyBpZiB0aGVyZSB3
YXMgbm8gZmF0YWwgZmFpbHVyZXMsIGFuZAorZmluYWxseSBjYWxscyBgVGVhckRvd24oKWAgb2Yg
dGhlIGVudmlyb25tZW50IG9iamVjdC4KKworSXQncyBPSyB0byByZWdpc3RlciBtdWx0aXBsZSBl
bnZpcm9ubWVudCBvYmplY3RzLiBJbiB0aGlzIGNhc2UsIHRoZWlyIGBTZXRVcCgpYAord2lsbCBi
ZSBjYWxsZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIHJlZ2lzdGVyZWQsIGFuZCB0aGVpciBgVGVh
ckRvd24oKWAgd2lsbCBiZQorY2FsbGVkIGluIHRoZSByZXZlcnNlIG9yZGVyLgorCitOb3RlIHRo
YXQgZ29vZ2xldGVzdCB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHJlZ2lzdGVyZWQgZW52aXJvbm1l
bnQgb2JqZWN0cy4KK1RoZXJlZm9yZSAqKmRvIG5vdCBkZWxldGUgdGhlbSoqIGJ5IHlvdXJzZWxm
LgorCitZb3Ugc2hvdWxkIGNhbGwgYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCBiZWZvcmUg
YFJVTl9BTExfVEVTVFMoKWAgaXMgY2FsbGVkLAorcHJvYmFibHkgaW4gYG1haW4oKWAuIElmIHlv
dSB1c2UgYGd0ZXN0X21haW5gLCB5b3UgbmVlZCB0byBjYWxsIHRoaXMgYmVmb3JlCitgbWFpbigp
YCBzdGFydHMgZm9yIGl0IHRvIHRha2UgZWZmZWN0LiBPbmUgd2F5IHRvIGRvIHRoaXMgaXMgdG8g
ZGVmaW5lIGEgZ2xvYmFsCit2YXJpYWJsZSBsaWtlIHRoaXM6CisKK2BgYGMrKworOjp0ZXN0aW5n
OjpFbnZpcm9ubWVudCogY29uc3QgZm9vX2VudiA9CisgICAgOjp0ZXN0aW5nOjpBZGRHbG9iYWxU
ZXN0RW52aXJvbm1lbnQobmV3IEZvb0Vudmlyb25tZW50KTsKK2BgYAorCitIb3dldmVyLCB3ZSBz
dHJvbmdseSByZWNvbW1lbmQgeW91IHRvIHdyaXRlIHlvdXIgb3duIGBtYWluKClgIGFuZCBjYWxs
CitgQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KClgIHRoZXJlLCBhcyByZWx5aW5nIG9uIGluaXRp
YWxpemF0aW9uIG9mIGdsb2JhbAordmFyaWFibGVzIG1ha2VzIHRoZSBjb2RlIGhhcmRlciB0byBy
ZWFkIGFuZCBtYXkgY2F1c2UgcHJvYmxlbXMgd2hlbiB5b3UgcmVnaXN0ZXIKK211bHRpcGxlIGVu
dmlyb25tZW50cyBmcm9tIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cyBhbmQgdGhlIGVudmly
b25tZW50cyBoYXZlCitkZXBlbmRlbmNpZXMgYW1vbmcgdGhlbSAocmVtZW1iZXIgdGhhdCB0aGUg
Y29tcGlsZXIgZG9lc24ndCBndWFyYW50ZWUgdGhlIG9yZGVyCitpbiB3aGljaCBnbG9iYWwgdmFy
aWFibGVzIGZyb20gZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXRzIGFyZSBpbml0aWFsaXplZCku
CisKKyMjIFZhbHVlLVBhcmFtZXRlcml6ZWQgVGVzdHMKKworKlZhbHVlLXBhcmFtZXRlcml6ZWQg
dGVzdHMqIGFsbG93IHlvdSB0byB0ZXN0IHlvdXIgY29kZSB3aXRoIGRpZmZlcmVudAorcGFyYW1l
dGVycyB3aXRob3V0IHdyaXRpbmcgbXVsdGlwbGUgY29waWVzIG9mIHRoZSBzYW1lIHRlc3QuIFRo
aXMgaXMgdXNlZnVsIGluIGEKK251bWJlciBvZiBzaXR1YXRpb25zLCBmb3IgZXhhbXBsZToKKwor
KiAgIFlvdSBoYXZlIGEgcGllY2Ugb2YgY29kZSB3aG9zZSBiZWhhdmlvciBpcyBhZmZlY3RlZCBi
eSBvbmUgb3IgbW9yZQorICAgIGNvbW1hbmQtbGluZSBmbGFncy4gWW91IHdhbnQgdG8gbWFrZSBz
dXJlIHlvdXIgY29kZSBwZXJmb3JtcyBjb3JyZWN0bHkgZm9yCisgICAgdmFyaW91cyB2YWx1ZXMg
b2YgdGhvc2UgZmxhZ3MuCisqICAgWW91IHdhbnQgdG8gdGVzdCBkaWZmZXJlbnQgaW1wbGVtZW50
YXRpb25zIG9mIGFuIE9PIGludGVyZmFjZS4KKyogICBZb3Ugd2FudCB0byB0ZXN0IHlvdXIgY29k
ZSBvdmVyIHZhcmlvdXMgaW5wdXRzIChhLmsuYS4gZGF0YS1kcml2ZW4gdGVzdGluZykuCisgICAg
VGhpcyBmZWF0dXJlIGlzIGVhc3kgdG8gYWJ1c2UsIHNvIHBsZWFzZSBleGVyY2lzZSB5b3VyIGdv
b2Qgc2Vuc2Ugd2hlbiBkb2luZworICAgIGl0IQorCisjIyMgSG93IHRvIFdyaXRlIFZhbHVlLVBh
cmFtZXRlcml6ZWQgVGVzdHMKKworVG8gd3JpdGUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cywg
Zmlyc3QgeW91IHNob3VsZCBkZWZpbmUgYSBmaXh0dXJlIGNsYXNzLiBJdAorbXVzdCBiZSBkZXJp
dmVkIGZyb20gYm90aCBgOjp0ZXN0aW5nOjpUZXN0YCBhbmQKK2A6OnRlc3Rpbmc6OldpdGhQYXJh
bUludGVyZmFjZTxUPmAgKHRoZSBsYXR0ZXIgaXMgYSBwdXJlIGludGVyZmFjZSksIHdoZXJlIGBU
YAoraXMgdGhlIHR5cGUgb2YgeW91ciBwYXJhbWV0ZXIgdmFsdWVzLiBGb3IgY29udmVuaWVuY2Us
IHlvdSBjYW4ganVzdCBkZXJpdmUgdGhlCitmaXh0dXJlIGNsYXNzIGZyb20gYDo6dGVzdGluZzo6
VGVzdFdpdGhQYXJhbTxUPmAsIHdoaWNoIGl0c2VsZiBpcyBkZXJpdmVkIGZyb20KK2JvdGggYDo6
dGVzdGluZzo6VGVzdGAgYW5kIGA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxUPmAuIGBU
YCBjYW4gYmUgYW55Citjb3B5YWJsZSB0eXBlLiBJZiBpdCdzIGEgcmF3IHBvaW50ZXIsIHlvdSBh
cmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZQorbGlmZXNwYW4gb2YgdGhlIHBvaW50ZWQg
dmFsdWVzLgorCitOT1RFOiBJZiB5b3VyIHRlc3QgZml4dHVyZSBkZWZpbmVzIGBTZXRVcFRlc3RD
YXNlKClgIG9yIGBUZWFyRG93blRlc3RDYXNlKClgCit0aGV5IG11c3QgYmUgZGVjbGFyZWQgKipw
dWJsaWMqKiByYXRoZXIgdGhhbiAqKnByb3RlY3RlZCoqIGluIG9yZGVyIHRvIHVzZQorYFRFU1Rf
UGAuCisKK2BgYGMrKworY2xhc3MgRm9vVGVzdCA6CisgICAgcHVibGljIDo6dGVzdGluZzo6VGVz
dFdpdGhQYXJhbTxjb25zdCBjaGFyKj4geworICAvLyBZb3UgY2FuIGltcGxlbWVudCBhbGwgdGhl
IHVzdWFsIGZpeHR1cmUgY2xhc3MgbWVtYmVycyBoZXJlLgorICAvLyBUbyBhY2Nlc3MgdGhlIHRl
c3QgcGFyYW1ldGVyLCBjYWxsIEdldFBhcmFtKCkgZnJvbSBjbGFzcworICAvLyBUZXN0V2l0aFBh
cmFtPFQ+LgorfTsKKworLy8gT3IsIHdoZW4geW91IHdhbnQgdG8gYWRkIHBhcmFtZXRlcnMgdG8g
YSBwcmUtZXhpc3RpbmcgZml4dHVyZSBjbGFzczoKK2NsYXNzIEJhc2VUZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCB7CisgIC4uLgorfTsKK2NsYXNzIEJhclRlc3QgOiBwdWJsaWMgQmFzZVRl
c3QsCisgICAgICAgICAgICAgICAgcHVibGljIDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNl
PGNvbnN0IGNoYXIqPiB7CisgIC4uLgorfTsKK2BgYAorCitUaGVuLCB1c2UgdGhlIGBURVNUX1Bg
IG1hY3JvIHRvIGRlZmluZSBhcyBtYW55IHRlc3QgcGF0dGVybnMgdXNpbmcgdGhpcyBmaXh0dXJl
CithcyB5b3Ugd2FudC4gVGhlIGBfUGAgc3VmZml4IGlzIGZvciAicGFyYW1ldGVyaXplZCIgb3Ig
InBhdHRlcm4iLCB3aGljaGV2ZXIgeW91CitwcmVmZXIgdG8gdGhpbmsuCisKK2BgYGMrKworVEVT
VF9QKEZvb1Rlc3QsIERvZXNCbGFoKSB7CisgIC8vIEluc2lkZSBhIHRlc3QsIGFjY2VzcyB0aGUg
dGVzdCBwYXJhbWV0ZXIgd2l0aCB0aGUgR2V0UGFyYW0oKSBtZXRob2QKKyAgLy8gb2YgdGhlIFRl
c3RXaXRoUGFyYW08VD4gY2xhc3M6CisgIEVYUEVDVF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkp
KTsKKyAgLi4uCit9CisKK1RFU1RfUChGb29UZXN0LCBIYXNCbGFoQmxhaCkgeworICAuLi4KK30K
K2BgYAorCitGaW5hbGx5LCB5b3UgY2FuIHVzZSBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIHRv
IGluc3RhbnRpYXRlIHRoZSB0ZXN0IGNhc2Ugd2l0aAorYW55IHNldCBvZiBwYXJhbWV0ZXJzIHlv
dSB3YW50LiBnb29nbGV0ZXN0IGRlZmluZXMgYSBudW1iZXIgb2YgZnVuY3Rpb25zIGZvcgorZ2Vu
ZXJhdGluZyB0ZXN0IHBhcmFtZXRlcnMuIFRoZXkgcmV0dXJuIHdoYXQgd2UgY2FsbCAoc3VycHJp
c2UhKSAqcGFyYW1ldGVyCitnZW5lcmF0b3JzKi4gSGVyZSBpcyBhIHN1bW1hcnkgb2YgdGhlbSwg
d2hpY2ggYXJlIGFsbCBpbiB0aGUgYHRlc3RpbmdgCituYW1lc3BhY2U6CisKK3wgUGFyYW1ldGVy
IEdlbmVyYXRvciAgICAgICAgICB8IEJlaGF2aW9yICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8Cit8IGBSYW5nZShiZWdpbiwgZW5kIFss
IHN0ZXBdKWAgfCBZaWVsZHMgdmFsdWVzIGB7YmVnaW4sIGJlZ2luK3N0ZXAsIGJlZ2luK3N0ZXAr
c3RlcCwgLi4ufWAuIFRoZSB2YWx1ZXMgZG8gbm90IGluY2x1ZGUgYGVuZGAuIGBzdGVwYCBkZWZh
dWx0cyB0byAxLiAgICAgIHwKK3wgYFZhbHVlcyh2MSwgdjIsIC4uLiwgdk4pYCAgICB8IFlpZWxk
cyB2YWx1ZXMgYHt2MSwgdjIsIC4uLiwgdk59YC4gICAgICAgICAgfAorfCBgVmFsdWVzSW4oY29u
dGFpbmVyKWAgYW5kIGBWYWx1ZXNJbihiZWdpbixlbmQpYCAgIHwgWWllbGRzIHZhbHVlcyBmcm9t
IGEgQy1zdHlsZSBhcnJheSwgYW4gU1RMLXN0eWxlIGNvbnRhaW5lciwgb3IgYW4gaXRlcmF0b3Ig
cmFuZ2UgIGBbYmVnaW4sIGVuZClgLiB8Cit8IGBCb29sKClgICAgICAgICAgICAgICAgICAgICAg
fCBZaWVsZHMgc2VxdWVuY2UgYHtmYWxzZSwgdHJ1ZX1gLiAgICAgICAgICAgIHwKK3wgYENvbWJp
bmUoZzEsIGcyLCAuLi4sIGdOKWAgICB8IFlpZWxkcyBhbGwgY29tYmluYXRpb25zIChDYXJ0ZXNp
YW4gcHJvZHVjdCkgYXMgc3RkXDpcOnR1cGxlcyBvZiB0aGUgdmFsdWVzIGdlbmVyYXRlZCBieSB0
aGUgYE5gIGdlbmVyYXRvcnMuICAgICAgICAgICAgfAorCitGb3IgbW9yZSBkZXRhaWxzLCBzZWUg
dGhlIGNvbW1lbnRzIGF0IHRoZSBkZWZpbml0aW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMuCisKK1Ro
ZSBmb2xsb3dpbmcgc3RhdGVtZW50IHdpbGwgaW5zdGFudGlhdGUgdGVzdHMgZnJvbSB0aGUgYEZv
b1Rlc3RgIHRlc3QgY2FzZSBlYWNoCit3aXRoIHBhcmFtZXRlciB2YWx1ZXMgYCJtZWVueSJgLCBg
Im1pbnkiYCwgYW5kIGAibW9lImAuCisKK2BgYGMrKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ao
SW5zdGFudGlhdGlvbk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBGb29UZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMoIm1lZW55IiwgIm1pbnkiLCAi
bW9lIikpOworYGBgCisKK05PVEU6IFRoZSBjb2RlIGFib3ZlIG11c3QgYmUgcGxhY2VkIGF0IGds
b2JhbCBvciBuYW1lc3BhY2Ugc2NvcGUsIG5vdCBhdAorZnVuY3Rpb24gc2NvcGUuCisKK05PVEU6
IERvbid0IGZvcmdldCB0aGlzIHN0ZXAhIElmIHlvdSBkbyB5b3VyIHRlc3Qgd2lsbCBzaWxlbnRs
eSBwYXNzLCBidXQgbm9uZQorb2YgaXRzIGNhc2VzIHdpbGwgZXZlciBydW4hCisKK1RvIGRpc3Rp
bmd1aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4gKHllcywgeW91IGNhbiBp
bnN0YW50aWF0ZSBpdAorbW9yZSB0aGFuIG9uY2UpLCB0aGUgZmlyc3QgYXJndW1lbnQgdG8gYElO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCBpcyBhIHByZWZpeAordGhhdCB3aWxsIGJlIGFkZGVkIHRv
IHRoZSBhY3R1YWwgdGVzdCBjYXNlIG5hbWUuIFJlbWVtYmVyIHRvIHBpY2sgdW5pcXVlCitwcmVm
aXhlcyBmb3IgZGlmZmVyZW50IGluc3RhbnRpYXRpb25zLiBUaGUgdGVzdHMgZnJvbSB0aGUgaW5z
dGFudGlhdGlvbiBhYm92ZQord2lsbCBoYXZlIHRoZXNlIG5hbWVzOgorCisqICAgYEluc3RhbnRp
YXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMGAgZm9yIGAibWVlbnkiYAorKiAgIGBJbnN0YW50
aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzFgIGZvciBgIm1pbnkiYAorKiAgIGBJbnN0YW50
aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzJgIGZvciBgIm1vZSJgCisqICAgYEluc3RhbnRp
YXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMGAgZm9yIGAibWVlbnkiYAorKiAgIGBJbnN0
YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzFgIGZvciBgIm1pbnkiYAorKiAgIGBJ
bnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzJgIGZvciBgIm1vZSJgCisKK1lv
dSBjYW4gdXNlIHRoZXNlIG5hbWVzIGluIFtgLS1ndGVzdF9maWx0ZXJgXSgjcnVubmluZy1hLXN1
YnNldC1vZi10aGUtdGVzdHMpLgorCitUaGlzIHN0YXRlbWVudCB3aWxsIGluc3RhbnRpYXRlIGFs
bCB0ZXN0cyBmcm9tIGBGb29UZXN0YCBhZ2FpbiwgZWFjaCB3aXRoCitwYXJhbWV0ZXIgdmFsdWVz
IGAiY2F0ImAgYW5kIGAiZG9nImA6CisKK2BgYGMrKworY29uc3QgY2hhciogcGV0c1tdID0geyJj
YXQiLCAiZG9nIn07CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFudGlhdGlv
bk5hbWUsIEZvb1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVl
c0luKHBldHMpKTsKK2BgYAorCitUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92
ZSB3aWxsIGhhdmUgdGhlc2UgbmFtZXM6CisKKyogICBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1l
L0Zvb1Rlc3QuRG9lc0JsYWgvMGAgZm9yIGAiY2F0ImAKKyogICBgQW5vdGhlckluc3RhbnRpYXRp
b25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMWAgZm9yIGAiZG9nImAKKyogICBgQW5vdGhlckluc3Rh
bnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMGAgZm9yIGAiY2F0ImAKKyogICBgQW5v
dGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMWAgZm9yIGAiZG9nImAK
KworUGxlYXNlIG5vdGUgdGhhdCBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIHdpbGwgaW5zdGFu
dGlhdGUgKmFsbCogdGVzdHMgaW4gdGhlCitnaXZlbiB0ZXN0IGNhc2UsIHdoZXRoZXIgdGhlaXIg
ZGVmaW5pdGlvbnMgY29tZSBiZWZvcmUgb3IgKmFmdGVyKiB0aGUKK2BJTlNUQU5USUFURV9URVNU
X0NBU0VfUGAgc3RhdGVtZW50LgorCitZb3UgY2FuIHNlZSBzYW1wbGU3X3VuaXR0ZXN0LmNjIGFu
ZCBzYW1wbGU4X3VuaXR0ZXN0LmNjIGZvciBtb3JlIGV4YW1wbGVzLgorCisqKkF2YWlsYWJpbGl0
eSoqOiBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBNYWMKKwor
IyMjIENyZWF0aW5nIFZhbHVlLVBhcmFtZXRlcml6ZWQgQWJzdHJhY3QgVGVzdHMKKworSW4gdGhl
IGFib3ZlLCB3ZSBkZWZpbmUgYW5kIGluc3RhbnRpYXRlIGBGb29UZXN0YCBpbiB0aGUgKnNhbWUq
IHNvdXJjZSBmaWxlLgorU29tZXRpbWVzIHlvdSBtYXkgd2FudCB0byBkZWZpbmUgdmFsdWUtcGFy
YW1ldGVyaXplZCB0ZXN0cyBpbiBhIGxpYnJhcnkgYW5kIGxldAorb3RoZXIgcGVvcGxlIGluc3Rh
bnRpYXRlIHRoZW0gbGF0ZXIuIFRoaXMgcGF0dGVybiBpcyBrbm93biBhcyAqYWJzdHJhY3QgdGVz
dHMqLgorQXMgYW4gZXhhbXBsZSBvZiBpdHMgYXBwbGljYXRpb24sIHdoZW4geW91IGFyZSBkZXNp
Z25pbmcgYW4gaW50ZXJmYWNlIHlvdSBjYW4KK3dyaXRlIGEgc3RhbmRhcmQgc3VpdGUgb2YgYWJz
dHJhY3QgdGVzdHMgKHBlcmhhcHMgdXNpbmcgYSBmYWN0b3J5IGZ1bmN0aW9uIGFzCit0aGUgdGVz
dCBwYXJhbWV0ZXIpIHRoYXQgYWxsIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgaW50ZXJmYWNlIGFy
ZSBleHBlY3RlZCB0bworcGFzcy4gV2hlbiBzb21lb25lIGltcGxlbWVudHMgdGhlIGludGVyZmFj
ZSwgdGhleSBjYW4gaW5zdGFudGlhdGUgeW91ciBzdWl0ZSB0bworZ2V0IGFsbCB0aGUgaW50ZXJm
YWNlLWNvbmZvcm1hbmNlIHRlc3RzIGZvciBmcmVlLgorCitUbyBkZWZpbmUgYWJzdHJhY3QgdGVz
dHMsIHlvdSBzaG91bGQgb3JnYW5pemUgeW91ciBjb2RlIGxpa2UgdGhpczoKKworMS4gIFB1dCB0
aGUgZGVmaW5pdGlvbiBvZiB0aGUgcGFyYW1ldGVyaXplZCB0ZXN0IGZpeHR1cmUgY2xhc3MgKGUu
Zy4gYEZvb1Rlc3RgKQorICAgIGluIGEgaGVhZGVyIGZpbGUsIHNheSBgZm9vX3BhcmFtX3Rlc3Qu
aGAuIFRoaW5rIG9mIHRoaXMgYXMgKmRlY2xhcmluZyogeW91cgorICAgIGFic3RyYWN0IHRlc3Rz
LgorMS4gIFB1dCB0aGUgYFRFU1RfUGAgZGVmaW5pdGlvbnMgaW4gYGZvb19wYXJhbV90ZXN0LmNj
YCwgd2hpY2ggaW5jbHVkZXMKKyAgICBgZm9vX3BhcmFtX3Rlc3QuaGAuIFRoaW5rIG9mIHRoaXMg
YXMgKmltcGxlbWVudGluZyogeW91ciBhYnN0cmFjdCB0ZXN0cy4KKworT25jZSB0aGV5IGFyZSBk
ZWZpbmVkLCB5b3UgY2FuIGluc3RhbnRpYXRlIHRoZW0gYnkgaW5jbHVkaW5nIGBmb29fcGFyYW1f
dGVzdC5oYCwKK2ludm9raW5nIGBJTlNUQU5USUFURV9URVNUX0NBU0VfUCgpYCwgYW5kIGRlcGVu
ZGluZyBvbiB0aGUgbGlicmFyeSB0YXJnZXQgdGhhdAorY29udGFpbnMgYGZvb19wYXJhbV90ZXN0
LmNjYC4gWW91IGNhbiBpbnN0YW50aWF0ZSB0aGUgc2FtZSBhYnN0cmFjdCB0ZXN0IGNhc2UKK211
bHRpcGxlIHRpbWVzLCBwb3NzaWJseSBpbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgorCisjIyMg
U3BlY2lmeWluZyBOYW1lcyBmb3IgVmFsdWUtUGFyYW1ldGVyaXplZCBUZXN0IFBhcmFtZXRlcnMK
KworVGhlIG9wdGlvbmFsIGxhc3QgYXJndW1lbnQgdG8gYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KClgIGFsbG93cyB0aGUgdXNlciB0bworc3BlY2lmeSBhIGZ1bmN0aW9uIG9yIGZ1bmN0b3IgdGhh
dCBnZW5lcmF0ZXMgY3VzdG9tIHRlc3QgbmFtZSBzdWZmaXhlcyBiYXNlZCBvbgordGhlIHRlc3Qg
cGFyYW1ldGVycy4gVGhlIGZ1bmN0aW9uIHNob3VsZCBhY2NlcHQgb25lIGFyZ3VtZW50IG9mIHR5
cGUKK2B0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPGNsYXNzIFBhcmFtVHlwZT5gLCBhbmQgcmV0dXJu
IGBzdGQ6OnN0cmluZ2AuCisKK2B0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1OYW1lYCBpcyBh
IGJ1aWx0aW4gdGVzdCBzdWZmaXggZ2VuZXJhdG9yIHRoYXQKK3JldHVybnMgdGhlIHZhbHVlIG9m
IGB0ZXN0aW5nOjpQcmludFRvU3RyaW5nKEdldFBhcmFtKCkpYC4gSXQgZG9lcyBub3Qgd29yayBm
b3IKK2BzdGQ6OnN0cmluZ2Agb3IgQyBzdHJpbmdzLgorCitOT1RFOiB0ZXN0IG5hbWVzIG11c3Qg
YmUgbm9uLWVtcHR5LCB1bmlxdWUsIGFuZCBtYXkgb25seSBjb250YWluIEFTQ0lJCithbHBoYW51
bWVyaWMgY2hhcmFjdGVycy4gSW4gcGFydGljdWxhciwgdGhleSBbc2hvdWxkIG5vdCBjb250YWlu
Cit1bmRlcnNjb3Jlc10oaHR0cHM6Ly9nM2RvYy5jb3JwLmdvb2dsZS5jb20vdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L2czZG9jL2ZhcS5tZCNuby11bmRlcnNjb3JlcykuCisKK2Bg
YGMrKworY2xhc3MgTXlUZXN0Q2FzZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGlu
dD4ge307CisKK1RFU1RfUChNeVRlc3RDYXNlLCBNeVRlc3QpCit7CisgIHN0ZDo6Y291dCA8PCAi
RXhhbXBsZSBUZXN0IFBhcmFtOiAiIDw8IEdldFBhcmFtKCkgPDwgc3RkOjplbmRsOworfQorCitJ
TlNUQU5USUFURV9URVNUX0NBU0VfUChNeUdyb3VwLCBNeVRlc3RDYXNlLCB0ZXN0aW5nOjpSYW5n
ZSgwLCAxMCksCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpQcmludFRvU3RyaW5n
UGFyYW1OYW1lKCkpOworYGBgCisKKyMjIFR5cGVkIFRlc3RzPC9pZD4KKworU3VwcG9zZSB5b3Ug
aGF2ZSBtdWx0aXBsZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZCB3
YW50IHRvIG1ha2UKK3N1cmUgdGhhdCBhbGwgb2YgdGhlbSBzYXRpc2Z5IHNvbWUgY29tbW9uIHJl
cXVpcmVtZW50cy4gT3IsIHlvdSBtYXkgaGF2ZSBkZWZpbmVkCitzZXZlcmFsIHR5cGVzIHRoYXQg
YXJlIHN1cHBvc2VkIHRvIGNvbmZvcm0gdG8gdGhlIHNhbWUgImNvbmNlcHQiIGFuZCB5b3Ugd2Fu
dCB0bwordmVyaWZ5IGl0LiBJbiBib3RoIGNhc2VzLCB5b3Ugd2FudCB0aGUgc2FtZSB0ZXN0IGxv
Z2ljIHJlcGVhdGVkIGZvciBkaWZmZXJlbnQKK3R5cGVzLgorCitXaGlsZSB5b3UgY2FuIHdyaXRl
IG9uZSBgVEVTVGAgb3IgYFRFU1RfRmAgZm9yIGVhY2ggdHlwZSB5b3Ugd2FudCB0byB0ZXN0IChh
bmQKK3lvdSBtYXkgZXZlbiBmYWN0b3IgdGhlIHRlc3QgbG9naWMgaW50byBhIGZ1bmN0aW9uIHRl
bXBsYXRlIHRoYXQgeW91IGludm9rZSBmcm9tCit0aGUgYFRFU1RgKSwgaXQncyB0ZWRpb3VzIGFu
ZCBkb2Vzbid0IHNjYWxlOiBpZiB5b3Ugd2FudCBgbWAgdGVzdHMgb3ZlciBgbmAKK3R5cGVzLCB5
b3UnbGwgZW5kIHVwIHdyaXRpbmcgYG0qbmAgYFRFU1Rgcy4KKworKlR5cGVkIHRlc3RzKiBhbGxv
dyB5b3UgdG8gcmVwZWF0IHRoZSBzYW1lIHRlc3QgbG9naWMgb3ZlciBhIGxpc3Qgb2YgdHlwZXMu
IFlvdQorb25seSBuZWVkIHRvIHdyaXRlIHRoZSB0ZXN0IGxvZ2ljIG9uY2UsIGFsdGhvdWdoIHlv
dSBtdXN0IGtub3cgdGhlIHR5cGUgbGlzdAord2hlbiB3cml0aW5nIHR5cGVkIHRlc3RzLiBIZXJl
J3MgaG93IHlvdSBkbyBpdDoKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxh
dGUuIEl0IHNob3VsZCBiZSBwYXJhbWV0ZXJpemVkIGJ5IGEgdHlwZS4KK1JlbWVtYmVyIHRvIGRl
cml2ZSBpdCBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RgOgorCitgYGBjKysKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHB1Ymxp
YzoKKyAgLi4uCisgIHR5cGVkZWYgc3RkOjpsaXN0PFQ+IExpc3Q7CisgIHN0YXRpYyBUIHNoYXJl
ZF87CisgIFQgdmFsdWVfOworfTsKK2BgYAorCitOZXh0LCBhc3NvY2lhdGUgYSBsaXN0IG9mIHR5
cGVzIHdpdGggdGhlIHRlc3QgY2FzZSwgd2hpY2ggd2lsbCBiZSByZXBlYXRlZCBmb3IKK2VhY2gg
dHlwZSBpbiB0aGUgbGlzdDoKKworYGBgYysrCit1c2luZyBNeVR5cGVzID0gOjp0ZXN0aW5nOjpU
eXBlczxjaGFyLCBpbnQsIHVuc2lnbmVkIGludD47CitUWVBFRF9URVNUX0NBU0UoRm9vVGVzdCwg
TXlUeXBlcyk7CitgYGAKKworVGhlIHR5cGUgYWxpYXMgKGB1c2luZ2Agb3IgYHR5cGVkZWZgKSBp
cyBuZWNlc3NhcnkgZm9yIHRoZSBgVFlQRURfVEVTVF9DQVNFYAorbWFjcm8gdG8gcGFyc2UgY29y
cmVjdGx5LiBPdGhlcndpc2UgdGhlIGNvbXBpbGVyIHdpbGwgdGhpbmsgdGhhdCBlYWNoIGNvbW1h
IGluCit0aGUgdHlwZSBsaXN0IGludHJvZHVjZXMgYSBuZXcgbWFjcm8gYXJndW1lbnQuCisKK1Ro
ZW4sIHVzZSBgVFlQRURfVEVTVCgpYCBpbnN0ZWFkIG9mIGBURVNUX0YoKWAgdG8gZGVmaW5lIGEg
dHlwZWQgdGVzdCBmb3IgdGhpcwordGVzdCBjYXNlLiBZb3UgY2FuIHJlcGVhdCB0aGlzIGFzIG1h
bnkgdGltZXMgYXMgeW91IHdhbnQ6CisKK2BgYGMrKworVFlQRURfVEVTVChGb29UZXN0LCBEb2Vz
QmxhaCkgeworICAvLyBJbnNpZGUgYSB0ZXN0LCByZWZlciB0byB0aGUgc3BlY2lhbCBuYW1lIFR5
cGVQYXJhbSB0byBnZXQgdGhlIHR5cGUKKyAgLy8gcGFyYW1ldGVyLiAgU2luY2Ugd2UgYXJlIGlu
c2lkZSBhIGRlcml2ZWQgY2xhc3MgdGVtcGxhdGUsIEMrKyByZXF1aXJlcworICAvLyB1cyB0byB2
aXNpdCB0aGUgbWVtYmVycyBvZiBGb29UZXN0IHZpYSAndGhpcycuCisgIFR5cGVQYXJhbSBuID0g
dGhpcy0+dmFsdWVfOworCisgIC8vIFRvIHZpc2l0IHN0YXRpYyBtZW1iZXJzIG9mIHRoZSBmaXh0
dXJlLCBhZGQgdGhlICdUZXN0Rml4dHVyZTo6JworICAvLyBwcmVmaXguCisgIG4gKz0gVGVzdEZp
eHR1cmU6OnNoYXJlZF87CisKKyAgLy8gVG8gcmVmZXIgdG8gdHlwZWRlZnMgaW4gdGhlIGZpeHR1
cmUsIGFkZCB0aGUgJ3R5cGVuYW1lIFRlc3RGaXh0dXJlOjonCisgIC8vIHByZWZpeC4gIFRoZSAn
dHlwZW5hbWUnIGlzIHJlcXVpcmVkIHRvIHNhdGlzZnkgdGhlIGNvbXBpbGVyLgorICB0eXBlbmFt
ZSBUZXN0Rml4dHVyZTo6TGlzdCB2YWx1ZXM7CisKKyAgdmFsdWVzLnB1c2hfYmFjayhuKTsKKyAg
Li4uCit9CisKK1RZUEVEX1RFU1QoRm9vVGVzdCwgSGFzUHJvcGVydHlBKSB7IC4uLiB9CitgYGAK
KworWW91IGNhbiBzZWUgc2FtcGxlNl91bml0dGVzdC5jYworCisqKkF2YWlsYWJpbGl0eSoqOiBM
aW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBNYWMKKworIyMgVHlw
ZS1QYXJhbWV0ZXJpemVkIFRlc3RzCisKKypUeXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMqIGFyZSBs
aWtlIHR5cGVkIHRlc3RzLCBleGNlcHQgdGhhdCB0aGV5IGRvbid0IHJlcXVpcmUKK3lvdSB0byBr
bm93IHRoZSBsaXN0IG9mIHR5cGVzIGFoZWFkIG9mIHRpbWUuIEluc3RlYWQsIHlvdSBjYW4gZGVm
aW5lIHRoZSB0ZXN0Citsb2dpYyBmaXJzdCBhbmQgaW5zdGFudGlhdGUgaXQgd2l0aCBkaWZmZXJl
bnQgdHlwZSBsaXN0cyBsYXRlci4gWW91IGNhbiBldmVuCitpbnN0YW50aWF0ZSBpdCBtb3JlIHRo
YW4gb25jZSBpbiB0aGUgc2FtZSBwcm9ncmFtLgorCitJZiB5b3UgYXJlIGRlc2lnbmluZyBhbiBp
bnRlcmZhY2Ugb3IgY29uY2VwdCwgeW91IGNhbiBkZWZpbmUgYSBzdWl0ZSBvZgordHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3RzIHRvIHZlcmlmeSBwcm9wZXJ0aWVzIHRoYXQgYW55IHZhbGlkIGltcGxl
bWVudGF0aW9uIG9mCit0aGUgaW50ZXJmYWNlL2NvbmNlcHQgc2hvdWxkIGhhdmUuIFRoZW4sIHRo
ZSBhdXRob3Igb2YgZWFjaCBpbXBsZW1lbnRhdGlvbiBjYW4KK2p1c3QgaW5zdGFudGlhdGUgdGhl
IHRlc3Qgc3VpdGUgd2l0aCB0aGVpciB0eXBlIHRvIHZlcmlmeSB0aGF0IGl0IGNvbmZvcm1zIHRv
Cit0aGUgcmVxdWlyZW1lbnRzLCB3aXRob3V0IGhhdmluZyB0byB3cml0ZSBzaW1pbGFyIHRlc3Rz
IHJlcGVhdGVkbHkuIEhlcmUncyBhbgorZXhhbXBsZToKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1
cmUgY2xhc3MgdGVtcGxhdGUsIGFzIHdlIGRpZCB3aXRoIHR5cGVkIHRlc3RzOgorCitgYGBjKysK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgeworICAuLi4KK307CitgYGAKKworTmV4dCwgZGVjbGFyZSB0aGF0IHlvdSB3aWxsIGRl
ZmluZSBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2U6CisKK2BgYGMrKworVFlQRURfVEVT
VF9DQVNFX1AoRm9vVGVzdCk7CitgYGAKKworVGhlbiwgdXNlIGBUWVBFRF9URVNUX1AoKWAgdG8g
ZGVmaW5lIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuIFlvdSBjYW4gcmVwZWF0Cit0aGlzIGFz
IG1hbnkgdGltZXMgYXMgeW91IHdhbnQ6CisKK2BgYGMrKworVFlQRURfVEVTVF9QKEZvb1Rlc3Qs
IERvZXNCbGFoKSB7CisgIC8vIEluc2lkZSBhIHRlc3QsIHJlZmVyIHRvIFR5cGVQYXJhbSB0byBn
ZXQgdGhlIHR5cGUgcGFyYW1ldGVyLgorICBUeXBlUGFyYW0gbiA9IDA7CisgIC4uLgorfQorCitU
WVBFRF9URVNUX1AoRm9vVGVzdCwgSGFzUHJvcGVydHlBKSB7IC4uLiB9CitgYGAKKworTm93IHRo
ZSB0cmlja3kgcGFydDogeW91IG5lZWQgdG8gcmVnaXN0ZXIgYWxsIHRlc3QgcGF0dGVybnMgdXNp
bmcgdGhlCitgUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1BgIG1hY3JvIGJlZm9yZSB5b3UgY2Fu
IGluc3RhbnRpYXRlIHRoZW0uIFRoZSBmaXJzdAorYXJndW1lbnQgb2YgdGhlIG1hY3JvIGlzIHRo
ZSB0ZXN0IGNhc2UgbmFtZTsgdGhlIHJlc3QgYXJlIHRoZSBuYW1lcyBvZiB0aGUgdGVzdHMKK2lu
IHRoaXMgdGVzdCBjYXNlOgorCitgYGBjKysKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZv
b1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2VzQmxhaCwgSGFzUHJvcGVydHlB
KTsKK2BgYAorCitGaW5hbGx5LCB5b3UgYXJlIGZyZWUgdG8gaW5zdGFudGlhdGUgdGhlIHBhdHRl
cm4gd2l0aCB0aGUgdHlwZXMgeW91IHdhbnQuIElmIHlvdQorcHV0IHRoZSBhYm92ZSBjb2RlIGlu
IGEgaGVhZGVyIGZpbGUsIHlvdSBjYW4gYCNpbmNsdWRlYCBpdCBpbiBtdWx0aXBsZSBDKysKK3Nv
dXJjZSBmaWxlcyBhbmQgaW5zdGFudGlhdGUgaXQgbXVsdGlwbGUgdGltZXMuCisKK2BgYGMrKwor
dHlwZWRlZiA6OnRlc3Rpbmc6OlR5cGVzPGNoYXIsIGludCwgdW5zaWduZWQgaW50PiBNeVR5cGVz
OworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMpOwor
YGBgCisKK1RvIGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4s
IHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUKK2BJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0Vf
UGAgbWFjcm8gaXMgYSBwcmVmaXggdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZQorYWN0dWFsIHRl
c3QgY2FzZSBuYW1lLiBSZW1lbWJlciB0byBwaWNrIHVuaXF1ZSBwcmVmaXhlcyBmb3IgZGlmZmVy
ZW50IGluc3RhbmNlcy4KKworSW4gdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGUgdHlwZSBsaXN0
IGNvbnRhaW5zIG9ubHkgb25lIHR5cGUsIHlvdSBjYW4gd3JpdGUKK3RoYXQgdHlwZSBkaXJlY3Rs
eSB3aXRob3V0IGA6OnRlc3Rpbmc6OlR5cGVzPC4uLj5gLCBsaWtlIHRoaXM6CisKK2BgYGMrKwor
SU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIGludCk7CitgYGAKKwor
WW91IGNhbiBzZWUgYHNhbXBsZTZfdW5pdHRlc3QuY2NgIGZvciBhIGNvbXBsZXRlIGV4YW1wbGUu
CisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBv
ciBhYm92ZSksIE1hYworCisjIyBUZXN0aW5nIFByaXZhdGUgQ29kZQorCitJZiB5b3UgY2hhbmdl
IHlvdXIgc29mdHdhcmUncyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiwgeW91ciB0ZXN0cyBzaG91
bGQgbm90CiticmVhayBhcyBsb25nIGFzIHRoZSBjaGFuZ2UgaXMgbm90IG9ic2VydmFibGUgYnkg
dXNlcnMuIFRoZXJlZm9yZSwgKipwZXIgdGhlCitibGFjay1ib3ggdGVzdGluZyBwcmluY2lwbGUs
IG1vc3Qgb2YgdGhlIHRpbWUgeW91IHNob3VsZCB0ZXN0IHlvdXIgY29kZSB0aHJvdWdoCitpdHMg
cHVibGljIGludGVyZmFjZXMuKioKKworKipJZiB5b3Ugc3RpbGwgZmluZCB5b3Vyc2VsZiBuZWVk
aW5nIHRvIHRlc3QgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gY29kZSwKK2NvbnNpZGVyIGlmIHRo
ZXJlJ3MgYSBiZXR0ZXIgZGVzaWduLioqIFRoZSBkZXNpcmUgdG8gdGVzdCBpbnRlcm5hbAoraW1w
bGVtZW50YXRpb24gaXMgb2Z0ZW4gYSBzaWduIHRoYXQgdGhlIGNsYXNzIGlzIGRvaW5nIHRvbyBt
dWNoLiBDb25zaWRlcgorZXh0cmFjdGluZyBhbiBpbXBsZW1lbnRhdGlvbiBjbGFzcywgYW5kIHRl
c3RpbmcgaXQuIFRoZW4gdXNlIHRoYXQgaW1wbGVtZW50YXRpb24KK2NsYXNzIGluIHRoZSBvcmln
aW5hbCBjbGFzcy4KKworSWYgeW91IGFic29sdXRlbHkgaGF2ZSB0byB0ZXN0IG5vbi1wdWJsaWMg
aW50ZXJmYWNlIGNvZGUgdGhvdWdoLCB5b3UgY2FuLiBUaGVyZQorYXJlIHR3byBjYXNlcyB0byBj
b25zaWRlcjoKKworKiAgIFN0YXRpYyBmdW5jdGlvbnMgKCAqbm90KiB0aGUgc2FtZSBhcyBzdGF0
aWMgbWVtYmVyIGZ1bmN0aW9ucyEpIG9yIHVubmFtZWQKKyAgICBuYW1lc3BhY2VzLCBhbmQKKyog
ICBQcml2YXRlIG9yIHByb3RlY3RlZCBjbGFzcyBtZW1iZXJzCisKK1RvIHRlc3QgdGhlbSwgd2Ug
dXNlIHRoZSBmb2xsb3dpbmcgc3BlY2lhbCB0ZWNobmlxdWVzOgorCisqICAgQm90aCBzdGF0aWMg
ZnVuY3Rpb25zIGFuZCBkZWZpbml0aW9ucy9kZWNsYXJhdGlvbnMgaW4gYW4gdW5uYW1lZCBuYW1l
c3BhY2UKKyAgICBhcmUgb25seSB2aXNpYmxlIHdpdGhpbiB0aGUgc2FtZSB0cmFuc2xhdGlvbiB1
bml0LiBUbyB0ZXN0IHRoZW0sIHlvdSBjYW4KKyAgICBgI2luY2x1ZGVgIHRoZSBlbnRpcmUgYC5j
Y2AgZmlsZSBiZWluZyB0ZXN0ZWQgaW4geW91ciBgKl90ZXN0LmNjYCBmaWxlLgorICAgIChpbmNs
dWRpbmcgYC5jY2AgZmlsZXMgaXMgbm90IGEgZ29vZCB3YXkgdG8gcmV1c2UgY29kZSAtIHlvdSBz
aG91bGQgbm90IGRvCisgICAgdGhpcyBpbiBwcm9kdWN0aW9uIGNvZGUhKQorCisgICAgSG93ZXZl
ciwgYSBiZXR0ZXIgYXBwcm9hY2ggaXMgdG8gbW92ZSB0aGUgcHJpdmF0ZSBjb2RlIGludG8gdGhl
CisgICAgYGZvbzo6aW50ZXJuYWxgIG5hbWVzcGFjZSwgd2hlcmUgYGZvb2AgaXMgdGhlIG5hbWVz
cGFjZSB5b3VyIHByb2plY3QKKyAgICBub3JtYWxseSB1c2VzLCBhbmQgcHV0IHRoZSBwcml2YXRl
IGRlY2xhcmF0aW9ucyBpbiBhIGAqLWludGVybmFsLmhgIGZpbGUuCisgICAgWW91ciBwcm9kdWN0
aW9uIGAuY2NgIGZpbGVzIGFuZCB5b3VyIHRlc3RzIGFyZSBhbGxvd2VkIHRvIGluY2x1ZGUgdGhp
cworICAgIGludGVybmFsIGhlYWRlciwgYnV0IHlvdXIgY2xpZW50cyBhcmUgbm90LiBUaGlzIHdh
eSwgeW91IGNhbiBmdWxseSB0ZXN0IHlvdXIKKyAgICBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiB3
aXRob3V0IGxlYWtpbmcgaXQgdG8geW91ciBjbGllbnRzLgorCisqICAgUHJpdmF0ZSBjbGFzcyBt
ZW1iZXJzIGFyZSBvbmx5IGFjY2Vzc2libGUgZnJvbSB3aXRoaW4gdGhlIGNsYXNzIG9yIGJ5Cisg
ICAgZnJpZW5kcy4gVG8gYWNjZXNzIGEgY2xhc3MnIHByaXZhdGUgbWVtYmVycywgeW91IGNhbiBk
ZWNsYXJlIHlvdXIgdGVzdAorICAgIGZpeHR1cmUgYXMgYSBmcmllbmQgdG8gdGhlIGNsYXNzIGFu
ZCBkZWZpbmUgYWNjZXNzb3JzIGluIHlvdXIgZml4dHVyZS4gVGVzdHMKKyAgICB1c2luZyB0aGUg
Zml4dHVyZSBjYW4gdGhlbiBhY2Nlc3MgdGhlIHByaXZhdGUgbWVtYmVycyBvZiB5b3VyIHByb2R1
Y3Rpb24KKyAgICBjbGFzcyB2aWEgdGhlIGFjY2Vzc29ycyBpbiB0aGUgZml4dHVyZS4gTm90ZSB0
aGF0IGV2ZW4gdGhvdWdoIHlvdXIgZml4dHVyZQorICAgIGlzIGEgZnJpZW5kIHRvIHlvdXIgcHJv
ZHVjdGlvbiBjbGFzcywgeW91ciB0ZXN0cyBhcmUgbm90IGF1dG9tYXRpY2FsbHkKKyAgICBmcmll
bmRzIHRvIGl0LCBhcyB0aGV5IGFyZSB0ZWNobmljYWxseSBkZWZpbmVkIGluIHN1Yi1jbGFzc2Vz
IG9mIHRoZQorICAgIGZpeHR1cmUuCisKKyAgICBBbm90aGVyIHdheSB0byB0ZXN0IHByaXZhdGUg
bWVtYmVycyBpcyB0byByZWZhY3RvciB0aGVtIGludG8gYW4KKyAgICBpbXBsZW1lbnRhdGlvbiBj
bGFzcywgd2hpY2ggaXMgdGhlbiBkZWNsYXJlZCBpbiBhIGAqLWludGVybmFsLmhgIGZpbGUuIFlv
dXIKKyAgICBjbGllbnRzIGFyZW4ndCBhbGxvd2VkIHRvIGluY2x1ZGUgdGhpcyBoZWFkZXIgYnV0
IHlvdXIgdGVzdHMgY2FuLiBTdWNoIGlzCisgICAgY2FsbGVkIHRoZQorICAgIFtQaW1wbF0oaHR0
cHM6Ly93d3cuZ2FtZWRldi5uZXQvYXJ0aWNsZXMvcHJvZ3JhbW1pbmcvZ2VuZXJhbC1hbmQtZ2Ft
ZXBsYXktcHJvZ3JhbW1pbmcvdGhlLWMtcGltcGwtcjE3OTQvKQorICAgIChQcml2YXRlIEltcGxl
bWVudGF0aW9uKSBpZGlvbS4KKworICAgIE9yLCB5b3UgY2FuIGRlY2xhcmUgYW4gaW5kaXZpZHVh
bCB0ZXN0IGFzIGEgZnJpZW5kIG9mIHlvdXIgY2xhc3MgYnkgYWRkaW5nCisgICAgdGhpcyBsaW5l
IGluIHRoZSBjbGFzcyBib2R5OgorCisgICAgYGBgYysrCisgICAgICAgIEZSSUVORF9URVNUKFRl
c3RDYXNlTmFtZSwgVGVzdE5hbWUpOworICAgIGBgYAorCisgICAgRm9yIGV4YW1wbGUsCisKKyAg
ICBgYGBjKysKKyAgICAvLyBmb28uaAorCisgICAgI2luY2x1ZGUgImd0ZXN0L2d0ZXN0X3Byb2Qu
aCIKKworICAgIGNsYXNzIEZvbyB7CisgICAgICAuLi4KKyAgICBwcml2YXRlOgorICAgICAgRlJJ
RU5EX1RFU1QoRm9vVGVzdCwgQmFyUmV0dXJuc1plcm9Pbk51bGwpOworCisgICAgICBpbnQgQmFy
KHZvaWQqIHgpOworICAgIH07CisKKyAgICAvLyBmb29fdGVzdC5jYworICAgIC4uLgorICAgIFRF
U1QoRm9vVGVzdCwgQmFyUmV0dXJuc1plcm9Pbk51bGwpIHsKKyAgICAgIEZvbyBmb287CisgICAg
ICBFWFBFQ1RfRVEoMCwgZm9vLkJhcihOVUxMKSk7ICAvLyBVc2VzIEZvbydzIHByaXZhdGUgbWVt
YmVyIEJhcigpLgorICAgIH0KKyAgICBgYGAKKworICAgIFBheSBzcGVjaWFsIGF0dGVudGlvbiB3
aGVuIHlvdXIgY2xhc3MgaXMgZGVmaW5lZCBpbiBhIG5hbWVzcGFjZSwgYXMgeW91CisgICAgc2hv
dWxkIGRlZmluZSB5b3VyIHRlc3QgZml4dHVyZXMgYW5kIHRlc3RzIGluIHRoZSBzYW1lIG5hbWVz
cGFjZSBpZiB5b3Ugd2FudAorICAgIHRoZW0gdG8gYmUgZnJpZW5kcyBvZiB5b3VyIGNsYXNzLiBG
b3IgZXhhbXBsZSwgaWYgdGhlIGNvZGUgdG8gYmUgdGVzdGVkCisgICAgbG9va3MgbGlrZToKKwor
ICAgIGBgYGMrKworICAgIG5hbWVzcGFjZSBteV9uYW1lc3BhY2UgeworCisgICAgY2xhc3MgRm9v
IHsKKyAgICAgIGZyaWVuZCBjbGFzcyBGb29UZXN0OworICAgICAgRlJJRU5EX1RFU1QoRm9vVGVz
dCwgQmFyKTsKKyAgICAgIEZSSUVORF9URVNUKEZvb1Rlc3QsIEJheik7CisgICAgICAuLi4gZGVm
aW5pdGlvbiBvZiB0aGUgY2xhc3MgRm9vIC4uLgorICAgIH07CisKKyAgICB9ICAvLyBuYW1lc3Bh
Y2UgbXlfbmFtZXNwYWNlCisgICAgYGBgCisKKyAgICBZb3VyIHRlc3QgY29kZSBzaG91bGQgYmUg
c29tZXRoaW5nIGxpa2U6CisKKyAgICBgYGBjKysKKyAgICBuYW1lc3BhY2UgbXlfbmFtZXNwYWNl
IHsKKworICAgIGNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyAgICAg
cHJvdGVjdGVkOgorICAgICAgLi4uCisgICAgfTsKKworICAgIFRFU1RfRihGb29UZXN0LCBCYXIp
IHsgLi4uIH0KKyAgICBURVNUX0YoRm9vVGVzdCwgQmF6KSB7IC4uLiB9CisKKyAgICB9ICAvLyBu
YW1lc3BhY2UgbXlfbmFtZXNwYWNlCisgICAgYGBgCisKKworIyMgIkNhdGNoaW5nIiBGYWlsdXJl
cworCitJZiB5b3UgYXJlIGJ1aWxkaW5nIGEgdGVzdGluZyB1dGlsaXR5IG9uIHRvcCBvZiBnb29n
bGV0ZXN0LCB5b3UnbGwgd2FudCB0byB0ZXN0Cit5b3VyIHV0aWxpdHkuIFdoYXQgZnJhbWV3b3Jr
IHdvdWxkIHlvdSB1c2UgdG8gdGVzdCBpdD8gZ29vZ2xldGVzdCwgb2YgY291cnNlLgorCitUaGUg
Y2hhbGxlbmdlIGlzIHRvIHZlcmlmeSB0aGF0IHlvdXIgdGVzdGluZyB1dGlsaXR5IHJlcG9ydHMg
ZmFpbHVyZXMgY29ycmVjdGx5LgorSW4gZnJhbWV3b3JrcyB0aGF0IHJlcG9ydCBhIGZhaWx1cmUg
YnkgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLCB5b3UgY291bGQgY2F0Y2gKK3RoZSBleGNlcHRpb24g
YW5kIGFzc2VydCBvbiBpdC4gQnV0IGdvb2dsZXRlc3QgZG9lc24ndCB1c2UgZXhjZXB0aW9ucywg
c28gaG93IGRvCit3ZSB0ZXN0IHRoYXQgYSBwaWVjZSBvZiBjb2RlIGdlbmVyYXRlcyBhbiBleHBl
Y3RlZCBmYWlsdXJlPworCitndW5pdC1zcGkuaCBjb250YWlucyBzb21lIGNvbnN0cnVjdHMgdG8g
ZG8gdGhpcy4gQWZ0ZXIgI2luY2x1ZGluZyB0aGlzIGhlYWRlciwKK3lvdSBjYW4gdXNlCisKK2Bg
YGMrKworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShzdGF0ZW1lbnQsIHN1YnN0cmluZyk7CitgYGAK
KwordG8gYXNzZXJ0IHRoYXQgYHN0YXRlbWVudGAgZ2VuZXJhdGVzIGEgZmF0YWwgKGUuZy4gYEFT
U0VSVF8qYCkgZmFpbHVyZSBpbiB0aGUKK2N1cnJlbnQgdGhyZWFkIHdob3NlIG1lc3NhZ2UgY29u
dGFpbnMgdGhlIGdpdmVuIGBzdWJzdHJpbmdgLCBvciB1c2UKKworYGBgYysrCisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKHN0YXRlbWVudCwgc3Vic3RyaW5nKTsKK2BgYAorCitpZiB5b3UgYXJl
IGV4cGVjdGluZyBhIG5vbi1mYXRhbCAoZS5nLiBgRVhQRUNUXypgKSBmYWlsdXJlLgorCitPbmx5
IGZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZCBhcmUgY2hlY2tlZCB0byBkZXRlcm1pbmUg
dGhlIHJlc3VsdCBvZiB0aGlzCit0eXBlIG9mIGV4cGVjdGF0aW9ucy4gSWYgYHN0YXRlbWVudGAg
Y3JlYXRlcyBuZXcgdGhyZWFkcywgZmFpbHVyZXMgaW4gdGhlc2UKK3RocmVhZHMgYXJlIGFsc28g
aWdub3JlZC4gSWYgeW91IHdhbnQgdG8gY2F0Y2ggZmFpbHVyZXMgaW4gb3RoZXIgdGhyZWFkcyBh
cword2VsbCwgdXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nIG1hY3JvcyBpbnN0ZWFkOgorCitgYGBj
KysKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoc3RhdGVtZW50LCBzdWJz
dHJpbmcpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhzdGF0ZW1l
bnQsIHN1YnN0cmluZyk7CitgYGAKKworTk9URTogQXNzZXJ0aW9ucyBmcm9tIG11bHRpcGxlIHRo
cmVhZHMgYXJlIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MuCisKK0ZvciB0ZWNo
bmljYWwgcmVhc29ucywgdGhlcmUgYXJlIHNvbWUgY2F2ZWF0czoKKworMS4gIFlvdSBjYW5ub3Qg
c3RyZWFtIGEgZmFpbHVyZSBtZXNzYWdlIHRvIGVpdGhlciBtYWNyby4KKworMS4gIGBzdGF0ZW1l
bnRgIGluIGBFWFBFQ1RfRkFUQUxfRkFJTFVSRXtfT05fQUxMX1RIUkVBRFN9KClgIGNhbm5vdCBy
ZWZlcmVuY2UKKyAgICBsb2NhbCBub24tc3RhdGljIHZhcmlhYmxlcyBvciBub24tc3RhdGljIG1l
bWJlcnMgb2YgYHRoaXNgIG9iamVjdC4KKworMS4gIGBzdGF0ZW1lbnRgIGluIGBFWFBFQ1RfRkFU
QUxfRkFJTFVSRXtfT05fQUxMX1RIUkVBRFN9KCkoKWAgY2Fubm90IHJldHVybiBhCisgICAgdmFs
dWUuCisKKworIyMgR2V0dGluZyB0aGUgQ3VycmVudCBUZXN0J3MgTmFtZQorCitTb21ldGltZXMg
YSBmdW5jdGlvbiBtYXkgbmVlZCB0byBrbm93IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgcnVu
bmluZyB0ZXN0LgorRm9yIGV4YW1wbGUsIHlvdSBtYXkgYmUgdXNpbmcgdGhlIGBTZXRVcCgpYCBt
ZXRob2Qgb2YgeW91ciB0ZXN0IGZpeHR1cmUgdG8gc2V0Cit0aGUgZ29sZGVuIGZpbGUgbmFtZSBi
YXNlZCBvbiB3aGljaCB0ZXN0IGlzIHJ1bm5pbmcuIFRoZSBgOjp0ZXN0aW5nOjpUZXN0SW5mb2AK
K2NsYXNzIGhhcyB0aGlzIGluZm9ybWF0aW9uOgorCitgYGBjKysKK25hbWVzcGFjZSB0ZXN0aW5n
IHsKKworY2xhc3MgVGVzdEluZm8geworIHB1YmxpYzoKKyAgLy8gUmV0dXJucyB0aGUgdGVzdCBj
YXNlIG5hbWUgYW5kIHRoZSB0ZXN0IG5hbWUsIHJlc3BlY3RpdmVseS4KKyAgLy8KKyAgLy8gRG8g
Tk9UIGRlbGV0ZSBvciBmcmVlIHRoZSByZXR1cm4gdmFsdWUgLSBpdCdzIG1hbmFnZWQgYnkgdGhl
CisgIC8vIFRlc3RJbmZvIGNsYXNzLgorICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNv
bnN0OworICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Q7Cit9OworCit9CitgYGAKKworVG8gb2J0
YWluIGEgYFRlc3RJbmZvYCBvYmplY3QgZm9yIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LCBj
YWxsCitgY3VycmVudF90ZXN0X2luZm8oKWAgb24gdGhlIGBVbml0VGVzdGAgc2luZ2xldG9uIG9i
amVjdDoKKworYGBgYysrCisgIC8vIEdldHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnRs
eSBydW5uaW5nIHRlc3QuCisgIC8vIERvIE5PVCBkZWxldGUgdGhlIHJldHVybmVkIG9iamVjdCAt
IGl0J3MgbWFuYWdlZCBieSB0aGUgVW5pdFRlc3QgY2xhc3MuCisgIGNvbnN0IDo6dGVzdGluZzo6
VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0
SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKworCisKKyAgcHJpbnRmKCJXZSBhcmUg
aW4gdGVzdCAlcyBvZiB0ZXN0IGNhc2UgJXMuXG4iLAorICAgICAgICAgdGVzdF9pbmZvLT5uYW1l
KCksCisgICAgICAgICB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOworYGBgCisKK2BjdXJy
ZW50X3Rlc3RfaW5mbygpYCByZXR1cm5zIGEgbnVsbCBwb2ludGVyIGlmIG5vIHRlc3QgaXMgcnVu
bmluZy4gSW4KK3BhcnRpY3VsYXIsIHlvdSBjYW5ub3QgZmluZCB0aGUgdGVzdCBjYXNlIG5hbWUg
aW4gYFRlc3RDYXNlU2V0VXAoKWAsCitgVGVzdENhc2VUZWFyRG93bigpYCAod2hlcmUgeW91IGtu
b3cgdGhlIHRlc3QgY2FzZSBuYW1lIGltcGxpY2l0bHkpLCBvcgorZnVuY3Rpb25zIGNhbGxlZCBm
cm9tIHRoZW0uCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMj
IEV4dGVuZGluZyBnb29nbGV0ZXN0IGJ5IEhhbmRsaW5nIFRlc3QgRXZlbnRzCisKK2dvb2dsZXRl
c3QgcHJvdmlkZXMgYW4gKipldmVudCBsaXN0ZW5lciBBUEkqKiB0byBsZXQgeW91IHJlY2VpdmUg
bm90aWZpY2F0aW9ucworYWJvdXQgdGhlIHByb2dyZXNzIG9mIGEgdGVzdCBwcm9ncmFtIGFuZCB0
ZXN0IGZhaWx1cmVzLiBUaGUgZXZlbnRzIHlvdSBjYW4KK2xpc3RlbiB0byBpbmNsdWRlIHRoZSBz
dGFydCBhbmQgZW5kIG9mIHRoZSB0ZXN0IHByb2dyYW0sIGEgdGVzdCBjYXNlLCBvciBhIHRlc3QK
K21ldGhvZCwgYW1vbmcgb3RoZXJzLiBZb3UgbWF5IHVzZSB0aGlzIEFQSSB0byBhdWdtZW50IG9y
IHJlcGxhY2UgdGhlIHN0YW5kYXJkCitjb25zb2xlIG91dHB1dCwgcmVwbGFjZSB0aGUgWE1MIG91
dHB1dCwgb3IgcHJvdmlkZSBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IGZvcm0KK29mIG91dHB1dCwg
c3VjaCBhcyBhIEdVSSBvciBhIGRhdGFiYXNlLiBZb3UgY2FuIGFsc28gdXNlIHRlc3QgZXZlbnRz
IGFzCitjaGVja3BvaW50cyB0byBpbXBsZW1lbnQgYSByZXNvdXJjZSBsZWFrIGNoZWNrZXIsIGZv
ciBleGFtcGxlLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisj
IyMgRGVmaW5pbmcgRXZlbnQgTGlzdGVuZXJzCisKK1RvIGRlZmluZSBhIGV2ZW50IGxpc3RlbmVy
LCB5b3Ugc3ViY2xhc3MgZWl0aGVyIHRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyIG9yCit0ZXN0
aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyIFRoZSBmb3JtZXIgaXMgYW4gKGFic3RyYWN0KSBp
bnRlcmZhY2UsIHdoZXJlCisqZWFjaCBwdXJlIHZpcnR1YWwgbWV0aG9kIGNhbiBiZSBvdmVycmlk
ZGVuIHRvIGhhbmRsZSBhIHRlc3QgZXZlbnQqIChGb3IKK2V4YW1wbGUsIHdoZW4gYSB0ZXN0IHN0
YXJ0cywgdGhlIGBPblRlc3RTdGFydCgpYCBtZXRob2Qgd2lsbCBiZSBjYWxsZWQuKS4gVGhlCits
YXR0ZXIgcHJvdmlkZXMgYW4gZW1wdHkgaW1wbGVtZW50YXRpb24gb2YgYWxsIG1ldGhvZHMgaW4g
dGhlIGludGVyZmFjZSwgc3VjaAordGhhdCBhIHN1YmNsYXNzIG9ubHkgbmVlZHMgdG8gb3ZlcnJp
ZGUgdGhlIG1ldGhvZHMgaXQgY2FyZXMgYWJvdXQuCisKK1doZW4gYW4gZXZlbnQgaXMgZmlyZWQs
IGl0cyBjb250ZXh0IGlzIHBhc3NlZCB0byB0aGUgaGFuZGxlciBmdW5jdGlvbiBhcyBhbgorYXJn
dW1lbnQuIFRoZSBmb2xsb3dpbmcgYXJndW1lbnQgdHlwZXMgYXJlIHVzZWQ6CisKKyogICBVbml0
VGVzdCByZWZsZWN0cyB0aGUgc3RhdGUgb2YgdGhlIGVudGlyZSB0ZXN0IHByb2dyYW0sCisqICAg
VGVzdENhc2UgaGFzIGluZm9ybWF0aW9uIGFib3V0IGEgdGVzdCBjYXNlLCB3aGljaCBjYW4gY29u
dGFpbiBvbmUgb3IgbW9yZQorICAgIHRlc3RzLAorKiAgIFRlc3RJbmZvIGNvbnRhaW5zIHRoZSBz
dGF0ZSBvZiBhIHRlc3QsIGFuZAorKiAgIFRlc3RQYXJ0UmVzdWx0IHJlcHJlc2VudHMgdGhlIHJl
c3VsdCBvZiBhIHRlc3QgYXNzZXJ0aW9uLgorCitBbiBldmVudCBoYW5kbGVyIGZ1bmN0aW9uIGNh
biBleGFtaW5lIHRoZSBhcmd1bWVudCBpdCByZWNlaXZlcyB0byBmaW5kIG91dAoraW50ZXJlc3Rp
bmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGV2ZW50IGFuZCB0aGUgdGVzdCBwcm9ncmFtJ3Mgc3Rh
dGUuCisKK0hlcmUncyBhbiBleGFtcGxlOgorCitgYGBjKysKKyAgY2xhc3MgTWluaW1hbGlzdFBy
aW50ZXIgOiBwdWJsaWMgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKKyAgICAv
LyBDYWxsZWQgYmVmb3JlIGEgdGVzdCBzdGFydHMuCisgICAgdmlydHVhbCB2b2lkIE9uVGVzdFN0
YXJ0KGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8mIHRlc3RfaW5mbykgeworICAgICAgcHJpbnRm
KCIqKiogVGVzdCAlcy4lcyBzdGFydGluZy5cbiIsCisgICAgICAgICAgICAgdGVzdF9pbmZvLnRl
c3RfY2FzZV9uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOworICAgIH0KKworICAgIC8vIENhbGxl
ZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRVNTKCkuCisgICAgdmlydHVhbCB2
b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdCYgdGVz
dF9wYXJ0X3Jlc3VsdCkgeworICAgICAgcHJpbnRmKCIlcyBpbiAlczolZFxuJXNcbiIsCisgICAg
ICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5mYWlsZWQoKSA/ICIqKiogRmFpbHVyZSIgOiAiU3Vj
Y2VzcyIsCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5maWxlX25hbWUoKSwKKyAgICAg
ICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LmxpbmVfbnVtYmVyKCksCisgICAgICAgICAgICAgdGVz
dF9wYXJ0X3Jlc3VsdC5zdW1tYXJ5KCkpOworICAgIH0KKworICAgIC8vIENhbGxlZCBhZnRlciBh
IHRlc3QgZW5kcy4KKyAgICB2aXJ0dWFsIHZvaWQgT25UZXN0RW5kKGNvbnN0IDo6dGVzdGluZzo6
VGVzdEluZm8mIHRlc3RfaW5mbykgeworICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBlbmRp
bmcuXG4iLAorICAgICAgICAgICAgIHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2lu
Zm8ubmFtZSgpKTsKKyAgICB9CisgIH07CitgYGAKKworIyMjIFVzaW5nIEV2ZW50IExpc3RlbmVy
cworCitUbyB1c2UgdGhlIGV2ZW50IGxpc3RlbmVyIHlvdSBoYXZlIGRlZmluZWQsIGFkZCBhbiBp
bnN0YW5jZSBvZiBpdCB0byB0aGUKK2dvb2dsZXRlc3QgZXZlbnQgbGlzdGVuZXIgbGlzdCAocmVw
cmVzZW50ZWQgYnkgY2xhc3MgVGVzdEV2ZW50TGlzdGVuZXJzIC0gbm90ZQordGhlICJzIiBhdCB0
aGUgZW5kIG9mIHRoZSBuYW1lKSBpbiB5b3VyIGBtYWluKClgIGZ1bmN0aW9uLCBiZWZvcmUgY2Fs
bGluZworYFJVTl9BTExfVEVTVFMoKWA6CisKK2BgYGMrKworaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KSB7CisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwor
ICAvLyBHZXRzIGhvbGQgb2YgdGhlIGV2ZW50IGxpc3RlbmVyIGxpc3QuCisgIDo6dGVzdGluZzo6
VGVzdEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMgPQorICAgICAgICA6OnRlc3Rpbmc6OlVuaXRU
ZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKTsKKyAgLy8gQWRkcyBhIGxpc3RlbmVyIHRv
IHRoZSBlbmQuICBnb29nbGV0ZXN0IHRha2VzIHRoZSBvd25lcnNoaXAuCisgIGxpc3RlbmVycy5B
cHBlbmQobmV3IE1pbmltYWxpc3RQcmludGVyKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsK
K30KK2BgYAorCitUaGVyZSdzIG9ubHkgb25lIHByb2JsZW06IHRoZSBkZWZhdWx0IHRlc3QgcmVz
dWx0IHByaW50ZXIgaXMgc3RpbGwgaW4gZWZmZWN0LCBzbworaXRzIG91dHB1dCB3aWxsIG1pbmds
ZSB3aXRoIHRoZSBvdXRwdXQgZnJvbSB5b3VyIG1pbmltYWxpc3QgcHJpbnRlci4gVG8gc3VwcHJl
c3MKK3RoZSBkZWZhdWx0IHByaW50ZXIsIGp1c3QgcmVsZWFzZSBpdCBmcm9tIHRoZSBldmVudCBs
aXN0ZW5lciBsaXN0IGFuZCBkZWxldGUgaXQuCitZb3UgY2FuIGRvIHNvIGJ5IGFkZGluZyBvbmUg
bGluZToKKworYGBgYysrCisgIC4uLgorICBkZWxldGUgbGlzdGVuZXJzLlJlbGVhc2UobGlzdGVu
ZXJzLmRlZmF1bHRfcmVzdWx0X3ByaW50ZXIoKSk7CisgIGxpc3RlbmVycy5BcHBlbmQobmV3IE1p
bmltYWxpc3RQcmludGVyKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK2BgYAorCitOb3cs
IHNpdCBiYWNrIGFuZCBlbmpveSBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IG91dHB1dCBmcm9tIHlv
dXIgdGVzdHMuIEZvciBtb3JlCitkZXRhaWxzLCB5b3UgY2FuIHJlYWQgdGhpcyBzYW1wbGU5X3Vu
aXR0ZXN0LmNjCisKK1lvdSBtYXkgYXBwZW5kIG1vcmUgdGhhbiBvbmUgbGlzdGVuZXIgdG8gdGhl
IGxpc3QuIFdoZW4gYW4gYE9uKlN0YXJ0KClgIG9yCitgT25UZXN0UGFydFJlc3VsdCgpYCBldmVu
dCBpcyBmaXJlZCwgdGhlIGxpc3RlbmVycyB3aWxsIHJlY2VpdmUgaXQgaW4gdGhlIG9yZGVyCit0
aGV5IGFwcGVhciBpbiB0aGUgbGlzdCAoc2luY2UgbmV3IGxpc3RlbmVycyBhcmUgYWRkZWQgdG8g
dGhlIGVuZCBvZiB0aGUgbGlzdCwKK3RoZSBkZWZhdWx0IHRleHQgcHJpbnRlciBhbmQgdGhlIGRl
ZmF1bHQgWE1MIGdlbmVyYXRvciB3aWxsIHJlY2VpdmUgdGhlIGV2ZW50CitmaXJzdCkuIEFuIGBP
bipFbmQoKWAgZXZlbnQgd2lsbCBiZSByZWNlaXZlZCBieSB0aGUgbGlzdGVuZXJzIGluIHRoZSAq
cmV2ZXJzZSoKK29yZGVyLiBUaGlzIGFsbG93cyBvdXRwdXQgYnkgbGlzdGVuZXJzIGFkZGVkIGxh
dGVyIHRvIGJlIGZyYW1lZCBieSBvdXRwdXQgZnJvbQorbGlzdGVuZXJzIGFkZGVkIGVhcmxpZXIu
CisKKyMjIyBHZW5lcmF0aW5nIEZhaWx1cmVzIGluIExpc3RlbmVycworCitZb3UgbWF5IHVzZSBm
YWlsdXJlLXJhaXNpbmcgbWFjcm9zIChgRVhQRUNUXyooKWAsIGBBU1NFUlRfKigpYCwgYEZBSUwo
KWAsIGV0YykKK3doZW4gcHJvY2Vzc2luZyBhbiBldmVudC4gVGhlcmUgYXJlIHNvbWUgcmVzdHJp
Y3Rpb25zOgorCisxLiAgWW91IGNhbm5vdCBnZW5lcmF0ZSBhbnkgZmFpbHVyZSBpbiBgT25UZXN0
UGFydFJlc3VsdCgpYCAob3RoZXJ3aXNlIGl0IHdpbGwKKyAgICBjYXVzZSBgT25UZXN0UGFydFJl
c3VsdCgpYCB0byBiZSBjYWxsZWQgcmVjdXJzaXZlbHkpLgorMS4gIEEgbGlzdGVuZXIgdGhhdCBo
YW5kbGVzIGBPblRlc3RQYXJ0UmVzdWx0KClgIGlzIG5vdCBhbGxvd2VkIHRvIGdlbmVyYXRlIGFu
eQorICAgIGZhaWx1cmUuCisKK1doZW4geW91IGFkZCBsaXN0ZW5lcnMgdG8gdGhlIGxpc3RlbmVy
IGxpc3QsIHlvdSBzaG91bGQgcHV0IGxpc3RlbmVycyB0aGF0CitoYW5kbGUgYE9uVGVzdFBhcnRS
ZXN1bHQoKWAgKmJlZm9yZSogbGlzdGVuZXJzIHRoYXQgY2FuIGdlbmVyYXRlIGZhaWx1cmVzLiBU
aGlzCitlbnN1cmVzIHRoYXQgZmFpbHVyZXMgZ2VuZXJhdGVkIGJ5IHRoZSBsYXR0ZXIgYXJlIGF0
dHJpYnV0ZWQgdG8gdGhlIHJpZ2h0IHRlc3QKK2J5IHRoZSBmb3JtZXIuCisKK1dlIGhhdmUgYSBz
YW1wbGUgb2YgZmFpbHVyZS1yYWlzaW5nIGxpc3RlbmVyIHNhbXBsZTEwX3VuaXR0ZXN0LmNjCisK
KyMjIFJ1bm5pbmcgVGVzdCBQcm9ncmFtczogQWR2YW5jZWQgT3B0aW9ucworCitnb29nbGV0ZXN0
IHRlc3QgcHJvZ3JhbXMgYXJlIG9yZGluYXJ5IGV4ZWN1dGFibGVzLiBPbmNlIGJ1aWx0LCB5b3Ug
Y2FuIHJ1biB0aGVtCitkaXJlY3RseSBhbmQgYWZmZWN0IHRoZWlyIGJlaGF2aW9yIHZpYSB0aGUg
Zm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcworYW5kL29yIGNvbW1hbmQgbGluZSBmbGFn
cy4gRm9yIHRoZSBmbGFncyB0byB3b3JrLCB5b3VyIHByb2dyYW1zIG11c3QgY2FsbAorYDo6dGVz
dGluZzo6SW5pdEdvb2dsZVRlc3QoKWAgYmVmb3JlIGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWAu
CisKK1RvIHNlZSBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGZsYWdzIGFuZCB0aGVpciB1c2FnZSwgcGxl
YXNlIHJ1biB5b3VyIHRlc3QgcHJvZ3JhbQord2l0aCB0aGUgYC0taGVscGAgZmxhZy4gWW91IGNh
biBhbHNvIHVzZSBgLWhgLCBgLT9gLCBvciBgLz9gIGZvciBzaG9ydC4KKworSWYgYW4gb3B0aW9u
IGlzIHNwZWNpZmllZCBib3RoIGJ5IGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGFuZCBieSBhIGZs
YWcsIHRoZQorbGF0dGVyIHRha2VzIHByZWNlZGVuY2UuCisKKyMjIyBTZWxlY3RpbmcgVGVzdHMK
KworIyMjIyBMaXN0aW5nIFRlc3QgTmFtZXMKKworU29tZXRpbWVzIGl0IGlzIG5lY2Vzc2FyeSB0
byBsaXN0IHRoZSBhdmFpbGFibGUgdGVzdHMgaW4gYSBwcm9ncmFtIGJlZm9yZQorcnVubmluZyB0
aGVtIHNvIHRoYXQgYSBmaWx0ZXIgbWF5IGJlIGFwcGxpZWQgaWYgbmVlZGVkLiBJbmNsdWRpbmcg
dGhlIGZsYWcKK2AtLWd0ZXN0X2xpc3RfdGVzdHNgIG92ZXJyaWRlcyBhbGwgb3RoZXIgZmxhZ3Mg
YW5kIGxpc3RzIHRlc3RzIGluIHRoZSBmb2xsb3dpbmcKK2Zvcm1hdDoKKworYGBgbm9uZQorVGVz
dENhc2UxLgorICBUZXN0TmFtZTEKKyAgVGVzdE5hbWUyCitUZXN0Q2FzZTIuCisgIFRlc3ROYW1l
CitgYGAKKworTm9uZSBvZiB0aGUgdGVzdHMgbGlzdGVkIGFyZSBhY3R1YWxseSBydW4gaWYgdGhl
IGZsYWcgaXMgcHJvdmlkZWQuIFRoZXJlIGlzIG5vCitjb3JyZXNwb25kaW5nIGVudmlyb25tZW50
IHZhcmlhYmxlIGZvciB0aGlzIGZsYWcuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5k
b3dzLCBNYWMuCisKKyMjIyMgUnVubmluZyBhIFN1YnNldCBvZiB0aGUgVGVzdHMKKworQnkgZGVm
YXVsdCwgYSBnb29nbGV0ZXN0IHByb2dyYW0gcnVucyBhbGwgdGVzdHMgdGhlIHVzZXIgaGFzIGRl
ZmluZWQuIFNvbWV0aW1lcywKK3lvdSB3YW50IHRvIHJ1biBvbmx5IGEgc3Vic2V0IG9mIHRoZSB0
ZXN0cyAoZS5nLiBmb3IgZGVidWdnaW5nIG9yIHF1aWNrbHkKK3ZlcmlmeWluZyBhIGNoYW5nZSku
IElmIHlvdSBzZXQgdGhlIGBHVEVTVF9GSUxURVJgIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRo
ZQorYC0tZ3Rlc3RfZmlsdGVyYCBmbGFnIHRvIGEgZmlsdGVyIHN0cmluZywgZ29vZ2xldGVzdCB3
aWxsIG9ubHkgcnVuIHRoZSB0ZXN0cword2hvc2UgZnVsbCBuYW1lcyAoaW4gdGhlIGZvcm0gb2Yg
YFRlc3RDYXNlTmFtZS5UZXN0TmFtZWApIG1hdGNoIHRoZSBmaWx0ZXIuCisKK1RoZSBmb3JtYXQg
b2YgYSBmaWx0ZXIgaXMgYSAnYDpgJy1zZXBhcmF0ZWQgbGlzdCBvZiB3aWxkY2FyZCBwYXR0ZXJu
cyAoY2FsbGVkCit0aGUgKnBvc2l0aXZlIHBhdHRlcm5zKikgb3B0aW9uYWxseSBmb2xsb3dlZCBi
eSBhICdgLWAnIGFuZCBhbm90aGVyCisnYDpgJy1zZXBhcmF0ZWQgcGF0dGVybiBsaXN0IChjYWxs
ZWQgdGhlICpuZWdhdGl2ZSBwYXR0ZXJucyopLiBBIHRlc3QgbWF0Y2hlcwordGhlIGZpbHRlciBp
ZiBhbmQgb25seSBpZiBpdCBtYXRjaGVzIGFueSBvZiB0aGUgcG9zaXRpdmUgcGF0dGVybnMgYnV0
IGRvZXMgbm90CittYXRjaCBhbnkgb2YgdGhlIG5lZ2F0aXZlIHBhdHRlcm5zLgorCitBIHBhdHRl
cm4gbWF5IGNvbnRhaW4gYCcqJ2AgKG1hdGNoZXMgYW55IHN0cmluZykgb3IgYCc/J2AgKG1hdGNo
ZXMgYW55IHNpbmdsZQorY2hhcmFjdGVyKS4gRm9yIGNvbnZlbmllbmNlLCB0aGUgZmlsdGVyCisK
K2AnKi1OZWdhdGl2ZVBhdHRlcm5zJ2AgY2FuIGJlIGFsc28gd3JpdHRlbiBhcyBgJy1OZWdhdGl2
ZVBhdHRlcm5zJ2AuCisKK0ZvciBleGFtcGxlOgorCisqICAgYC4vZm9vX3Rlc3RgIEhhcyBubyBm
bGFnLCBhbmQgdGh1cyBydW5zIGFsbCBpdHMgdGVzdHMuCisqICAgYC4vZm9vX3Rlc3QgLS1ndGVz
dF9maWx0ZXI9KmAgQWxzbyBydW5zIGV2ZXJ5dGhpbmcsIGR1ZSB0byB0aGUgc2luZ2xlCisgICAg
bWF0Y2gtZXZlcnl0aGluZyBgKmAgdmFsdWUuCisqICAgYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0
ZXI9Rm9vVGVzdC4qYCBSdW5zIGV2ZXJ5dGhpbmcgaW4gdGVzdCBjYXNlIGBGb29UZXN0YAorICAg
IC4KKyogICBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj0qTnVsbCo6KkNvbnN0cnVjdG9yKmAg
UnVucyBhbnkgdGVzdCB3aG9zZSBmdWxsCisgICAgbmFtZSBjb250YWlucyBlaXRoZXIgYCJOdWxs
ImAgb3IgYCJDb25zdHJ1Y3RvciJgIC4KKyogICBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj0t
KkRlYXRoVGVzdC4qYCBSdW5zIGFsbCBub24tZGVhdGggdGVzdHMuCisqICAgYC4vZm9vX3Rlc3Qg
LS1ndGVzdF9maWx0ZXI9Rm9vVGVzdC4qLUZvb1Rlc3QuQmFyYCBSdW5zIGV2ZXJ5dGhpbmcgaW4g
dGVzdAorICAgIGNhc2UgYEZvb1Rlc3RgIGV4Y2VwdCBgRm9vVGVzdC5CYXJgLgorKiAgIGAuL2Zv
b190ZXN0IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rlc3QuKjpCYXJUZXN0LiotRm9vVGVzdC5CYXI6QmFy
VGVzdC5Gb29gIFJ1bnMKKyAgICBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBgRm9vVGVzdGAgZXhj
ZXB0IGBGb29UZXN0LkJhcmAgYW5kIGV2ZXJ5dGhpbmcgaW4KKyAgICB0ZXN0IGNhc2UgYEJhclRl
c3RgIGV4Y2VwdCBgQmFyVGVzdC5Gb29gLgorICAgIAorIyMjIyBUZW1wb3JhcmlseSBEaXNhYmxp
bmcgVGVzdHMKKworSWYgeW91IGhhdmUgYSBicm9rZW4gdGVzdCB0aGF0IHlvdSBjYW5ub3QgZml4
IHJpZ2h0IGF3YXksIHlvdSBjYW4gYWRkIHRoZQorYERJU0FCTEVEX2AgcHJlZml4IHRvIGl0cyBu
YW1lLiBUaGlzIHdpbGwgZXhjbHVkZSBpdCBmcm9tIGV4ZWN1dGlvbi4gVGhpcyBpcworYmV0dGVy
IHRoYW4gY29tbWVudGluZyBvdXQgdGhlIGNvZGUgb3IgdXNpbmcgYCNpZiAwYCwgYXMgZGlzYWJs
ZWQgdGVzdHMgYXJlCitzdGlsbCBjb21waWxlZCAoYW5kIHRodXMgd29uJ3Qgcm90KS4KKworSWYg
eW91IG5lZWQgdG8gZGlzYWJsZSBhbGwgdGVzdHMgaW4gYSB0ZXN0IGNhc2UsIHlvdSBjYW4gZWl0
aGVyIGFkZCBgRElTQUJMRURfYAordG8gdGhlIGZyb250IG9mIHRoZSBuYW1lIG9mIGVhY2ggdGVz
dCwgb3IgYWx0ZXJuYXRpdmVseSBhZGQgaXQgdG8gdGhlIGZyb250IG9mCit0aGUgdGVzdCBjYXNl
IG5hbWUuCisKK0ZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHRlc3RzIHdvbid0IGJlIHJ1biBi
eSBnb29nbGV0ZXN0LCBldmVuIHRob3VnaCB0aGV5Cit3aWxsIHN0aWxsIGJlIGNvbXBpbGVkOgor
CitgYGBjKysKKy8vIFRlc3RzIHRoYXQgRm9vIGRvZXMgQWJjLgorVEVTVChGb29UZXN0LCBESVNB
QkxFRF9Eb2VzQWJjKSB7IC4uLiB9CisKK2NsYXNzIERJU0FCTEVEX0JhclRlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07CisKKy8vIFRlc3RzIHRoYXQgQmFyIGRvZXMgWHl6Lgor
VEVTVF9GKERJU0FCTEVEX0JhclRlc3QsIERvZXNYeXopIHsgLi4uIH0KK2BgYAorCitOT1RFOiBU
aGlzIGZlYXR1cmUgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgdGVtcG9yYXJ5IHBhaW4tcmVsaWVm
LiBZb3Ugc3RpbGwgaGF2ZQordG8gZml4IHRoZSBkaXNhYmxlZCB0ZXN0cyBhdCBhIGxhdGVyIGRh
dGUuIEFzIGEgcmVtaW5kZXIsIGdvb2dsZXRlc3Qgd2lsbCBwcmludAorYSBiYW5uZXIgd2Fybmlu
ZyB5b3UgaWYgYSB0ZXN0IHByb2dyYW0gY29udGFpbnMgYW55IGRpc2FibGVkIHRlc3RzLgorCitU
SVA6IFlvdSBjYW4gZWFzaWx5IGNvdW50IHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgeW91
IGhhdmUgdXNpbmcgYGdzZWFyY2hgCithbmQvb3IgYGdyZXBgLiBUaGlzIG51bWJlciBjYW4gYmUg
dXNlZCBhcyBhIG1ldHJpYyBmb3IgaW1wcm92aW5nIHlvdXIgdGVzdAorcXVhbGl0eS4KKworKipB
dmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIyBUZW1wb3JhcmlseSBF
bmFibGluZyBEaXNhYmxlZCBUZXN0cworCitUbyBpbmNsdWRlIGRpc2FibGVkIHRlc3RzIGluIHRl
c3QgZXhlY3V0aW9uLCBqdXN0IGludm9rZSB0aGUgdGVzdCBwcm9ncmFtIHdpdGgKK3RoZSBgLS1n
dGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0c2AgZmxhZyBvciBzZXQgdGhlCitgR1RFU1RfQUxT
T19SVU5fRElTQUJMRURfVEVTVFNgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEgdmFsdWUgb3Ro
ZXIgdGhhbiBgMGAuCitZb3UgY2FuIGNvbWJpbmUgdGhpcyB3aXRoIHRoZSBgLS1ndGVzdF9maWx0
ZXJgIGZsYWcgdG8gZnVydGhlciBzZWxlY3Qgd2hpY2gKK2Rpc2FibGVkIHRlc3RzIHRvIHJ1bi4K
KworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIFJlcGVhdGlu
ZyB0aGUgVGVzdHMKKworT25jZSBpbiBhIHdoaWxlIHlvdSdsbCBydW4gaW50byBhIHRlc3Qgd2hv
c2UgcmVzdWx0IGlzIGhpdC1vci1taXNzLiBQZXJoYXBzIGl0Cit3aWxsIGZhaWwgb25seSAxJSBv
ZiB0aGUgdGltZSwgbWFraW5nIGl0IHJhdGhlciBoYXJkIHRvIHJlcHJvZHVjZSB0aGUgYnVnIHVu
ZGVyCithIGRlYnVnZ2VyLiBUaGlzIGNhbiBiZSBhIG1ham9yIHNvdXJjZSBvZiBmcnVzdHJhdGlv
bi4KKworVGhlIGAtLWd0ZXN0X3JlcGVhdGAgZmxhZyBhbGxvd3MgeW91IHRvIHJlcGVhdCBhbGwg
KG9yIHNlbGVjdGVkKSB0ZXN0IG1ldGhvZHMgaW4KK2EgcHJvZ3JhbSBtYW55IHRpbWVzLiBIb3Bl
ZnVsbHksIGEgZmxha3kgdGVzdCB3aWxsIGV2ZW50dWFsbHkgZmFpbCBhbmQgZ2l2ZSB5b3UKK2Eg
Y2hhbmNlIHRvIGRlYnVnLiBIZXJlJ3MgaG93IHRvIHVzZSBpdDoKKworYGBgbm9uZQorJCBmb29f
dGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwCitSZXBlYXQgZm9vX3Rlc3QgMTAwMCB0aW1lcyBhbmQg
ZG9uJ3Qgc3RvcCBhdCBmYWlsdXJlcy4KKworJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0tMQor
QSBuZWdhdGl2ZSBjb3VudCBtZWFucyByZXBlYXRpbmcgZm9yZXZlci4KKworJCBmb29fdGVzdCAt
LWd0ZXN0X3JlcGVhdD0xMDAwIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZQorUmVwZWF0IGZvb190
ZXN0IDEwMDAgdGltZXMsIHN0b3BwaW5nIGF0IHRoZSBmaXJzdCBmYWlsdXJlLiAgVGhpcworaXMg
ZXNwZWNpYWxseSB1c2VmdWwgd2hlbiBydW5uaW5nIHVuZGVyIGEgZGVidWdnZXI6IHdoZW4gdGhl
IHRlc3QKK2ZhaWxzLCBpdCB3aWxsIGRyb3AgaW50byB0aGUgZGVidWdnZXIgYW5kIHlvdSBjYW4g
dGhlbiBpbnNwZWN0Cit2YXJpYWJsZXMgYW5kIHN0YWNrcy4KKworJCBmb29fdGVzdCAtLWd0ZXN0
X3JlcGVhdD0xMDAwIC0tZ3Rlc3RfZmlsdGVyPUZvb0Jhci4qCitSZXBlYXQgdGhlIHRlc3RzIHdo
b3NlIG5hbWUgbWF0Y2hlcyB0aGUgZmlsdGVyIDEwMDAgdGltZXMuCitgYGAKKworSWYgeW91ciB0
ZXN0IHByb2dyYW0gY29udGFpbnMgW2dsb2JhbCBzZXQtdXAvdGVhci1kb3duXSgjZ2xvYmFsLXNl
dC11cC1hbmQtdGVhci1kb3duKSBjb2RlLCBpdAord2lsbCBiZSByZXBlYXRlZCBpbiBlYWNoIGl0
ZXJhdGlvbiBhcyB3ZWxsLCBhcyB0aGUgZmxha2luZXNzIG1heSBiZSBpbiBpdC4gWW91CitjYW4g
YWxzbyBzcGVjaWZ5IHRoZSByZXBlYXQgY291bnQgYnkgc2V0dGluZyB0aGUgYEdURVNUX1JFUEVB
VGAgZW52aXJvbm1lbnQKK3ZhcmlhYmxlLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2lu
ZG93cywgTWFjLgorCisjIyMgU2h1ZmZsaW5nIHRoZSBUZXN0cworCitZb3UgY2FuIHNwZWNpZnkg
dGhlIGAtLWd0ZXN0X3NodWZmbGVgIGZsYWcgKG9yIHNldCB0aGUgYEdURVNUX1NIVUZGTEVgCitl
bnZpcm9ubWVudCB2YXJpYWJsZSB0byBgMWApIHRvIHJ1biB0aGUgdGVzdHMgaW4gYSBwcm9ncmFt
IGluIGEgcmFuZG9tIG9yZGVyLgorVGhpcyBoZWxwcyB0byByZXZlYWwgYmFkIGRlcGVuZGVuY2ll
cyBiZXR3ZWVuIHRlc3RzLgorCitCeSBkZWZhdWx0LCBnb29nbGV0ZXN0IHVzZXMgYSByYW5kb20g
c2VlZCBjYWxjdWxhdGVkIGZyb20gdGhlIGN1cnJlbnQgdGltZS4KK1RoZXJlZm9yZSB5b3UnbGwg
Z2V0IGEgZGlmZmVyZW50IG9yZGVyIGV2ZXJ5IHRpbWUuIFRoZSBjb25zb2xlIG91dHB1dCBpbmNs
dWRlcwordGhlIHJhbmRvbSBzZWVkIHZhbHVlLCBzdWNoIHRoYXQgeW91IGNhbiByZXByb2R1Y2Ug
YW4gb3JkZXItcmVsYXRlZCB0ZXN0IGZhaWx1cmUKK2xhdGVyLiBUbyBzcGVjaWZ5IHRoZSByYW5k
b20gc2VlZCBleHBsaWNpdGx5LCB1c2UgdGhlIGAtLWd0ZXN0X3JhbmRvbV9zZWVkPVNFRURgCitm
bGFnIChvciBzZXQgdGhlIGBHVEVTVF9SQU5ET01fU0VFRGAgZW52aXJvbm1lbnQgdmFyaWFibGUp
LCB3aGVyZSBgU0VFRGAgaXMgYW4KK2ludGVnZXIgaW4gdGhlIHJhbmdlIFswLCA5OTk5OV0uIFRo
ZSBzZWVkIHZhbHVlIDAgaXMgc3BlY2lhbDogaXQgdGVsbHMKK2dvb2dsZXRlc3QgdG8gZG8gdGhl
IGRlZmF1bHQgYmVoYXZpb3Igb2YgY2FsY3VsYXRpbmcgdGhlIHNlZWQgZnJvbSB0aGUgY3VycmVu
dAordGltZS4KKworSWYgeW91IGNvbWJpbmUgdGhpcyB3aXRoIGAtLWd0ZXN0X3JlcGVhdD1OYCwg
Z29vZ2xldGVzdCB3aWxsIHBpY2sgYSBkaWZmZXJlbnQKK3JhbmRvbSBzZWVkIGFuZCByZS1zaHVm
ZmxlIHRoZSB0ZXN0cyBpbiBlYWNoIGl0ZXJhdGlvbi4KKworKipBdmFpbGFiaWxpdHkqKjogTGlu
dXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIENvbnRyb2xsaW5nIFRlc3QgT3V0cHV0CisKKyMjIyMg
Q29sb3JlZCBUZXJtaW5hbCBPdXRwdXQKKworZ29vZ2xldGVzdCBjYW4gdXNlIGNvbG9ycyBpbiBp
dHMgdGVybWluYWwgb3V0cHV0IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNwb3QgdGhlCitpbXBvcnRh
bnQgaW5mb3JtYXRpb246CisKKy4uLjxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPlst
LS0tLS0tLS0tXTxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+IDEgdGVzdCBmcm9tIEZvb1Rlc3Q8
YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuIj5bIFJVTiAgICAgIF08c3BhbiBzdHlsZT0i
Y29sb3I6YmxhY2siPiBGb29UZXN0LkRvZXNBYmM8YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOmdy
ZWVuIj5bICAgICAgIE9LIF08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiBGb29UZXN0LkRvZXNB
YmM8YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuIj5bLS0tLS0tLS0tLV08c3BhbiBzdHls
ZT0iY29sb3I6YmxhY2siPiAyIHRlc3RzIGZyb20gQmFyVGVzdDxici8+Cis8c3BhbiBzdHlsZT0i
Y29sb3I6Z3JlZW4iPlsgUlVOICAgICAgXTxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+IEJhclRl
c3QuSGFzWHl6UHJvcGVydHk8YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuIj5bICAgICAg
IE9LIF08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiBCYXJUZXN0Lkhhc1h5elByb3BlcnR5PGJy
Lz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbiI+WyBSVU4gICAgICBdPHNwYW4gc3R5bGU9ImNv
bG9yOmJsYWNrIj4gQmFyVGVzdC5SZXR1cm5zVHJ1ZU9uU3VjY2Vzczxici8+CisuLi4gc29tZSBl
cnJvciBtZXNzYWdlcyAuLi48YnIvPgorPHNwYW4gICBzdHlsZT0iY29sb3I6cmVkIj5bICBGQUlM
RUQgIF0gPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj5CYXJUZXN0LlJldHVybnNUcnVlT25TdWNj
ZXNzPGJyLz4KKy4uLjxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPls9PT09PT09PT09
XTxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+IDMwIHRlc3RzIGZyb20gMTQgdGVzdCBjYXNlcyBy
YW4uPGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbiI+WyAgUEFTU0VEICBdPHNwYW4gc3R5
bGU9ImNvbG9yOmJsYWNrIj4gMjggdGVzdHMuPGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpyZWQi
PlsgIEZBSUxFRCAgXTxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+IDIgdGVzdHMsIGxpc3RlZCBi
ZWxvdzo8YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOnJlZCI+WyAgRkFJTEVEICBdPHNwYW4gc3R5
bGU9ImNvbG9yOmJsYWNrIj4gQmFyVGVzdC5SZXR1cm5zVHJ1ZU9uU3VjY2Vzczxici8+Cis8c3Bh
biBzdHlsZT0iY29sb3I6cmVkIj5bICBGQUlMRUQgIF08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2si
PiBBbm90aGVyVGVzdC5Eb2VzWHl6PGJyLz4KKyAgMiBGQUlMRUQgVEVTVFMKKworWW91IGNhbiBz
ZXQgdGhlIGBHVEVTVF9DT0xPUmAgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlIGAtLWd0ZXN0
X2NvbG9yYAorY29tbWFuZCBsaW5lIGZsYWcgdG8gYHllc2AsIGBub2AsIG9yIGBhdXRvYCAodGhl
IGRlZmF1bHQpIHRvIGVuYWJsZSBjb2xvcnMsCitkaXNhYmxlIGNvbG9ycywgb3IgbGV0IGdvb2ds
ZXRlc3QgZGVjaWRlLiBXaGVuIHRoZSB2YWx1ZSBpcyBgYXV0b2AsIGdvb2dsZXRlc3QKK3dpbGwg
dXNlIGNvbG9ycyBpZiBhbmQgb25seSBpZiB0aGUgb3V0cHV0IGdvZXMgdG8gYSB0ZXJtaW5hbCBh
bmQgKG9uIG5vbi1XaW5kb3dzCitwbGF0Zm9ybXMpIHRoZSBgVEVSTWAgZW52aXJvbm1lbnQgdmFy
aWFibGUgaXMgc2V0IHRvIGB4dGVybWAgb3IgYHh0ZXJtLWNvbG9yYC4KKworICoqQXZhaWxhYmls
aXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyMgU3VwcHJlc3NpbmcgdGhlIEVsYXBz
ZWQgVGltZQorCitCeSBkZWZhdWx0LCBnb29nbGV0ZXN0IHByaW50cyB0aGUgdGltZSBpdCB0YWtl
cyB0byBydW4gZWFjaCB0ZXN0LiBUbyBkaXNhYmxlCit0aGF0LCBydW4gdGhlIHRlc3QgcHJvZ3Jh
bSB3aXRoIHRoZSBgLS1ndGVzdF9wcmludF90aW1lPTBgIGNvbW1hbmQgbGluZSBmbGFnLCBvcgor
c2V0IHRoZSBHVEVTVF9QUklOVF9USU1FIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGAwYC4KKwor
KipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIyBTdXBwcmVzc2lu
ZyBVVEYtOCBUZXh0IE91dHB1dAorCitJbiBjYXNlIG9mIGFzc2VydGlvbiBmYWlsdXJlcywgZ29v
Z2xldGVzdCBwcmludHMgZXhwZWN0ZWQgYW5kIGFjdHVhbCB2YWx1ZXMgb2YKK3R5cGUgYHN0cmlu
Z2AgYm90aCBhcyBoZXgtZW5jb2RlZCBzdHJpbmdzIGFzIHdlbGwgYXMgaW4gcmVhZGFibGUgVVRG
LTggdGV4dCBpZgordGhleSBjb250YWluIHZhbGlkIG5vbi1BU0NJSSBVVEYtOCBjaGFyYWN0ZXJz
LiBJZiB5b3Ugd2FudCB0byBzdXBwcmVzcyB0aGUgVVRGLTgKK3RleHQgYmVjYXVzZSwgZm9yIGV4
YW1wbGUsIHlvdSBkb24ndCBoYXZlIGFuIFVURi04IGNvbXBhdGlibGUgb3V0cHV0IG1lZGl1bSwg
cnVuCit0aGUgdGVzdCBwcm9ncmFtIHdpdGggYC0tZ3Rlc3RfcHJpbnRfdXRmOD0wYCBvciBzZXQg
dGhlIGBHVEVTVF9QUklOVF9VVEY4YAorZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYDBgLgorCisq
KkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisKKyMjIyMgR2VuZXJhdGlu
ZyBhbiBYTUwgUmVwb3J0CisKK2dvb2dsZXRlc3QgY2FuIGVtaXQgYSBkZXRhaWxlZCBYTUwgcmVw
b3J0IHRvIGEgZmlsZSBpbiBhZGRpdGlvbiB0byBpdHMgbm9ybWFsCit0ZXh0dWFsIG91dHB1dC4g
VGhlIHJlcG9ydCBjb250YWlucyB0aGUgZHVyYXRpb24gb2YgZWFjaCB0ZXN0LCBhbmQgdGh1cyBj
YW4gaGVscAoreW91IGlkZW50aWZ5IHNsb3cgdGVzdHMuIFRoZSByZXBvcnQgaXMgYWxzbyB1c2Vk
IGJ5IHRoZSBodHRwOi8vdW5pdHRlc3QKK2Rhc2hib2FyZCB0byBzaG93IHBlci10ZXN0LW1ldGhv
ZCBlcnJvciBtZXNzYWdlcy4KKworVG8gZ2VuZXJhdGUgdGhlIFhNTCByZXBvcnQsIHNldCB0aGUg
YEdURVNUX09VVFBVVGAgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCitgLS1ndGVzdF9vdXRw
dXRgIGZsYWcgdG8gdGhlIHN0cmluZyBgInhtbDpwYXRoX3RvX291dHB1dF9maWxlImAsIHdoaWNo
IHdpbGwKK2NyZWF0ZSB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24uIFlvdSBjYW4gYWxz
byBqdXN0IHVzZSB0aGUgc3RyaW5nIGAieG1sImAsCitpbiB3aGljaCBjYXNlIHRoZSBvdXRwdXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBgdGVzdF9kZXRhaWwueG1sYCBmaWxlIGluIHRoZQorY3VycmVu
dCBkaXJlY3RvcnkuCisKK0lmIHlvdSBzcGVjaWZ5IGEgZGlyZWN0b3J5IChmb3IgZXhhbXBsZSwg
YCJ4bWw6b3V0cHV0L2RpcmVjdG9yeS8iYCBvbiBMaW51eCBvcgorYCJ4bWw6b3V0cHV0XGRpcmVj
dG9yeVwiYCBvbiBXaW5kb3dzKSwgZ29vZ2xldGVzdCB3aWxsIGNyZWF0ZSB0aGUgWE1MIGZpbGUg
aW4KK3RoYXQgZGlyZWN0b3J5LCBuYW1lZCBhZnRlciB0aGUgdGVzdCBleGVjdXRhYmxlIChlLmcu
IGBmb29fdGVzdC54bWxgIGZvciB0ZXN0Citwcm9ncmFtIGBmb29fdGVzdGAgb3IgYGZvb190ZXN0
LmV4ZWApLiBJZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cyAocGVyaGFwcyBsZWZ0CitvdmVyIGZy
b20gYSBwcmV2aW91cyBydW4pLCBnb29nbGV0ZXN0IHdpbGwgcGljayBhIGRpZmZlcmVudCBuYW1l
IChlLmcuCitgZm9vX3Rlc3RfMS54bWxgKSB0byBhdm9pZCBvdmVyd3JpdGluZyBpdC4KKworCitU
aGUgcmVwb3J0IGlzIGJhc2VkIG9uIHRoZSBganVuaXRyZXBvcnRgIEFudCB0YXNrLiBTaW5jZSB0
aGF0IGZvcm1hdCB3YXMKK29yaWdpbmFsbHkgaW50ZW5kZWQgZm9yIEphdmEsIGEgbGl0dGxlIGlu
dGVycHJldGF0aW9uIGlzIHJlcXVpcmVkIHRvIG1ha2UgaXQKK2FwcGx5IHRvIGdvb2dsZXRlc3Qg
dGVzdHMsIGFzIHNob3duIGhlcmU6CisKK2BgYHhtbAorPHRlc3RzdWl0ZXMgbmFtZT0iQWxsVGVz
dHMiIC4uLj4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJ0ZXN0X2Nhc2VfbmFtZSIgLi4uPgorICAgIDx0
ZXN0Y2FzZSAgICBuYW1lPSJ0ZXN0X25hbWUiIC4uLj4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9
Ii4uLiIvPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+CisgICAgICA8ZmFpbHVyZSBt
ZXNzYWdlPSIuLi4iLz4KKyAgICA8L3Rlc3RjYXNlPgorICA8L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1
aXRlcz4KK2BgYAorCisqICAgVGhlIHJvb3QgYDx0ZXN0c3VpdGVzPmAgZWxlbWVudCBjb3JyZXNw
b25kcyB0byB0aGUgZW50aXJlIHRlc3QgcHJvZ3JhbS4KKyogICBgPHRlc3RzdWl0ZT5gIGVsZW1l
bnRzIGNvcnJlc3BvbmQgdG8gZ29vZ2xldGVzdCB0ZXN0IGNhc2VzLgorKiAgIGA8dGVzdGNhc2U+
YCBlbGVtZW50cyBjb3JyZXNwb25kIHRvIGdvb2dsZXRlc3QgdGVzdCBmdW5jdGlvbnMuCisKK0Zv
ciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBwcm9ncmFtCisKK2BgYGMrKworVEVTVChNYXRoVGVz
dCwgQWRkaXRpb24pIHsgLi4uIH0KK1RFU1QoTWF0aFRlc3QsIFN1YnRyYWN0aW9uKSB7IC4uLiB9
CitURVNUKExvZ2ljVGVzdCwgTm9uQ29udHJhZGljdGlvbikgeyAuLi4gfQorYGBgCisKK2NvdWxk
IGdlbmVyYXRlIHRoaXMgcmVwb3J0OgorCitgYGB4bWwKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5j
b2Rpbmc9IlVURi04Ij8+Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMyIgZmFpbHVyZXM9IjEiIGVycm9y
cz0iMCIgdGltZT0iMC4wMzUiIHRpbWVzdGFtcD0iMjAxMS0xMC0zMVQxODo1Mjo0MiIgbmFtZT0i
QWxsVGVzdHMiPgorICA8dGVzdHN1aXRlIG5hbWU9Ik1hdGhUZXN0IiB0ZXN0cz0iMiIgZmFpbHVy
ZXM9IjEiIGVycm9ycz0iMCIgdGltZT0iMC4wMTUiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJBZGRp
dGlvbiIgc3RhdHVzPSJydW4iIHRpbWU9IjAuMDA3IiBjbGFzc25hbWU9IiI+CisgICAgICA8ZmFp
bHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogYWRkKDEsIDEpJiN4MEE7ICBBY3R1YWw6IDMmI3gwQTtF
eHBlY3RlZDogMiIgdHlwZT0iIj4uLi48L2ZhaWx1cmU+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdl
PSJWYWx1ZSBvZjogYWRkKDEsIC0xKSYjeDBBOyAgQWN0dWFsOiAxJiN4MEE7RXhwZWN0ZWQ6IDAi
IHR5cGU9IiI+Li4uPC9mYWlsdXJlPgorICAgIDwvdGVzdGNhc2U+CisgICAgPHRlc3RjYXNlIG5h
bWU9IlN1YnRyYWN0aW9uIiBzdGF0dXM9InJ1biIgdGltZT0iMC4wMDUiIGNsYXNzbmFtZT0iIj4K
KyAgICA8L3Rlc3RjYXNlPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJMb2dp
Y1Rlc3QiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZXJyb3JzPSIwIiB0aW1lPSIwLjAwNSI+Cisg
ICAgPHRlc3RjYXNlIG5hbWU9Ik5vbkNvbnRyYWRpY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSIw
LjAwNSIgY2xhc3NuYW1lPSIiPgorICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorPC90
ZXN0c3VpdGVzPgorYGBgCisKK1RoaW5ncyB0byBub3RlOgorCisqICAgVGhlIGB0ZXN0c2AgYXR0
cmlidXRlIG9mIGEgYDx0ZXN0c3VpdGVzPmAgb3IgYDx0ZXN0c3VpdGU+YCBlbGVtZW50IHRlbGxz
IGhvdworICAgIG1hbnkgdGVzdCBmdW5jdGlvbnMgdGhlIGdvb2dsZXRlc3QgcHJvZ3JhbSBvciB0
ZXN0IGNhc2UgY29udGFpbnMsIHdoaWxlIHRoZQorICAgIGBmYWlsdXJlc2AgYXR0cmlidXRlIHRl
bGxzIGhvdyBtYW55IG9mIHRoZW0gZmFpbGVkLgorCisqICAgVGhlIGB0aW1lYCBhdHRyaWJ1dGUg
ZXhwcmVzc2VzIHRoZSBkdXJhdGlvbiBvZiB0aGUgdGVzdCwgdGVzdCBjYXNlLCBvcgorICAgIGVu
dGlyZSB0ZXN0IHByb2dyYW0gaW4gc2Vjb25kcy4KKworKiAgIFRoZSBgdGltZXN0YW1wYCBhdHRy
aWJ1dGUgcmVjb3JkcyB0aGUgbG9jYWwgZGF0ZSBhbmQgdGltZSBvZiB0aGUgdGVzdAorICAgIGV4
ZWN1dGlvbi4KKworKiAgIEVhY2ggYDxmYWlsdXJlPmAgZWxlbWVudCBjb3JyZXNwb25kcyB0byBh
IHNpbmdsZSBmYWlsZWQgZ29vZ2xldGVzdAorICAgIGFzc2VydGlvbi4KKworKipBdmFpbGFiaWxp
dHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIyBHZW5lcmF0aW5nIGFuIEpTT04gUmVw
b3J0CisKK2dvb2dsZXRlc3QgY2FuIGFsc28gZW1pdCBhIEpTT04gcmVwb3J0IGFzIGFuIGFsdGVy
bmF0aXZlIGZvcm1hdCB0byBYTUwuIFRvCitnZW5lcmF0ZSB0aGUgSlNPTiByZXBvcnQsIHNldCB0
aGUgYEdURVNUX09VVFBVVGAgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCitgLS1ndGVzdF9v
dXRwdXRgIGZsYWcgdG8gdGhlIHN0cmluZyBgImpzb246cGF0aF90b19vdXRwdXRfZmlsZSJgLCB3
aGljaCB3aWxsCitjcmVhdGUgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIGxvY2F0aW9uLiBZb3UgY2Fu
IGFsc28ganVzdCB1c2UgdGhlIHN0cmluZworYCJqc29uImAsIGluIHdoaWNoIGNhc2UgdGhlIG91
dHB1dCBjYW4gYmUgZm91bmQgaW4gdGhlIGB0ZXN0X2RldGFpbC5qc29uYCBmaWxlCitpbiB0aGUg
Y3VycmVudCBkaXJlY3RvcnkuCisKK1RoZSByZXBvcnQgZm9ybWF0IGNvbmZvcm1zIHRvIHRoZSBm
b2xsb3dpbmcgSlNPTiBTY2hlbWE6CisKK2BgYGpzb24KK3sKKyAgIiRzY2hlbWEiOiAiaHR0cDov
L2pzb24tc2NoZW1hLm9yZy9zY2hlbWEjIiwKKyAgInR5cGUiOiAib2JqZWN0IiwKKyAgImRlZmlu
aXRpb25zIjogeworICAgICJUZXN0Q2FzZSI6IHsKKyAgICAgICJ0eXBlIjogIm9iamVjdCIsCisg
ICAgICAicHJvcGVydGllcyI6IHsKKyAgICAgICAgIm5hbWUiOiB7ICJ0eXBlIjogInN0cmluZyIg
fSwKKyAgICAgICAgInRlc3RzIjogeyAidHlwZSI6ICJpbnRlZ2VyIiB9LAorICAgICAgICAiZmFp
bHVyZXMiOiB7ICJ0eXBlIjogImludGVnZXIiIH0sCisgICAgICAgICJkaXNhYmxlZCI6IHsgInR5
cGUiOiAiaW50ZWdlciIgfSwKKyAgICAgICAgInRpbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwK
KyAgICAgICAgInRlc3RzdWl0ZSI6IHsKKyAgICAgICAgICAidHlwZSI6ICJhcnJheSIsCisgICAg
ICAgICAgIml0ZW1zIjogeworICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9UZXN0
SW5mbyIKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJUZXN0
SW5mbyI6IHsKKyAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAicHJvcGVydGllcyI6IHsK
KyAgICAgICAgIm5hbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgInN0YXR1cyI6
IHsKKyAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgICAgICJlbnVtIjogWyJSVU4i
LCAiTk9UUlVOIl0KKyAgICAgICAgfSwKKyAgICAgICAgInRpbWUiOiB7ICJ0eXBlIjogInN0cmlu
ZyIgfSwKKyAgICAgICAgImNsYXNzbmFtZSI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAg
ICAiZmFpbHVyZXMiOiB7CisgICAgICAgICAgInR5cGUiOiAiYXJyYXkiLAorICAgICAgICAgICJp
dGVtcyI6IHsKKyAgICAgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvRmFpbHVyZSIKKyAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJGYWlsdXJlIjogewor
ICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICJwcm9wZXJ0aWVzIjogeworICAgICAgICAi
ZmFpbHVyZXMiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgInR5cGUiOiB7ICJ0eXBl
IjogInN0cmluZyIgfQorICAgICAgfQorICAgIH0KKyAgfSwKKyAgInByb3BlcnRpZXMiOiB7Cisg
ICAgInRlc3RzIjogeyAidHlwZSI6ICJpbnRlZ2VyIiB9LAorICAgICJmYWlsdXJlcyI6IHsgInR5
cGUiOiAiaW50ZWdlciIgfSwKKyAgICAiZGlzYWJsZWQiOiB7ICJ0eXBlIjogImludGVnZXIiIH0s
CisgICAgImVycm9ycyI6IHsgInR5cGUiOiAiaW50ZWdlciIgfSwKKyAgICAidGltZXN0YW1wIjog
eworICAgICAgInR5cGUiOiAic3RyaW5nIiwKKyAgICAgICJmb3JtYXQiOiAiZGF0ZS10aW1lIgor
ICAgIH0sCisgICAgInRpbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAibmFtZSI6IHsg
InR5cGUiOiAic3RyaW5nIiB9LAorICAgICJ0ZXN0c3VpdGVzIjogeworICAgICAgInR5cGUiOiAi
YXJyYXkiLAorICAgICAgIml0ZW1zIjogeworICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25z
L1Rlc3RDYXNlIgorICAgICAgfQorICAgIH0KKyAgfQorfQorYGBgCisKK1RoZSByZXBvcnQgdXNl
cyB0aGUgZm9ybWF0IHRoYXQgY29uZm9ybXMgdG8gdGhlIGZvbGxvd2luZyBQcm90bzMgdXNpbmcg
dGhlIFtKU09OCitlbmNvZGluZ10oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vcHJvdG9j
b2wtYnVmZmVycy9kb2NzL3Byb3RvMyNqc29uKToKKworYGBgcHJvdG8KK3N5bnRheCA9ICJwcm90
bzMiOworCitwYWNrYWdlIGdvb2dsZXRlc3Q7CisKK2ltcG9ydCAiZ29vZ2xlL3Byb3RvYnVmL3Rp
bWVzdGFtcC5wcm90byI7CitpbXBvcnQgImdvb2dsZS9wcm90b2J1Zi9kdXJhdGlvbi5wcm90byI7
CisKK21lc3NhZ2UgVW5pdFRlc3QgeworICBpbnQzMiB0ZXN0cyA9IDE7CisgIGludDMyIGZhaWx1
cmVzID0gMjsKKyAgaW50MzIgZGlzYWJsZWQgPSAzOworICBpbnQzMiBlcnJvcnMgPSA0OworICBn
b29nbGUucHJvdG9idWYuVGltZXN0YW1wIHRpbWVzdGFtcCA9IDU7CisgIGdvb2dsZS5wcm90b2J1
Zi5EdXJhdGlvbiB0aW1lID0gNjsKKyAgc3RyaW5nIG5hbWUgPSA3OworICByZXBlYXRlZCBUZXN0
Q2FzZSB0ZXN0c3VpdGVzID0gODsKK30KKworbWVzc2FnZSBUZXN0Q2FzZSB7CisgIHN0cmluZyBu
YW1lID0gMTsKKyAgaW50MzIgdGVzdHMgPSAyOworICBpbnQzMiBmYWlsdXJlcyA9IDM7CisgIGlu
dDMyIGRpc2FibGVkID0gNDsKKyAgaW50MzIgZXJyb3JzID0gNTsKKyAgZ29vZ2xlLnByb3RvYnVm
LkR1cmF0aW9uIHRpbWUgPSA2OworICByZXBlYXRlZCBUZXN0SW5mbyB0ZXN0c3VpdGUgPSA3Owor
fQorCittZXNzYWdlIFRlc3RJbmZvIHsKKyAgc3RyaW5nIG5hbWUgPSAxOworICBlbnVtIFN0YXR1
cyB7CisgICAgUlVOID0gMDsKKyAgICBOT1RSVU4gPSAxOworICB9CisgIFN0YXR1cyBzdGF0dXMg
PSAyOworICBnb29nbGUucHJvdG9idWYuRHVyYXRpb24gdGltZSA9IDM7CisgIHN0cmluZyBjbGFz
c25hbWUgPSA0OworICBtZXNzYWdlIEZhaWx1cmUgeworICAgIHN0cmluZyBmYWlsdXJlcyA9IDE7
CisgICAgc3RyaW5nIHR5cGUgPSAyOworICB9CisgIHJlcGVhdGVkIEZhaWx1cmUgZmFpbHVyZXMg
PSA1OworfQorYGBgCisKK0ZvciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBwcm9ncmFtCisKK2Bg
YGMrKworVEVTVChNYXRoVGVzdCwgQWRkaXRpb24pIHsgLi4uIH0KK1RFU1QoTWF0aFRlc3QsIFN1
YnRyYWN0aW9uKSB7IC4uLiB9CitURVNUKExvZ2ljVGVzdCwgTm9uQ29udHJhZGljdGlvbikgeyAu
Li4gfQorYGBgCisKK2NvdWxkIGdlbmVyYXRlIHRoaXMgcmVwb3J0OgorCitgYGBqc29uCit7Cisg
ICJ0ZXN0cyI6IDMsCisgICJmYWlsdXJlcyI6IDEsCisgICJlcnJvcnMiOiAwLAorICAidGltZSI6
ICIwLjAzNXMiLAorICAidGltZXN0YW1wIjogIjIwMTEtMTAtMzFUMTg6NTI6NDJaIgorICAibmFt
ZSI6ICJBbGxUZXN0cyIsCisgICJ0ZXN0c3VpdGVzIjogWworICAgIHsKKyAgICAgICJuYW1lIjog
Ik1hdGhUZXN0IiwKKyAgICAgICJ0ZXN0cyI6IDIsCisgICAgICAiZmFpbHVyZXMiOiAxLAorICAg
ICAgImVycm9ycyI6IDAsCisgICAgICAidGltZSI6ICIwLjAxNXMiLAorICAgICAgInRlc3RzdWl0
ZSI6IFsKKyAgICAgICAgeworICAgICAgICAgICJuYW1lIjogIkFkZGl0aW9uIiwKKyAgICAgICAg
ICAic3RhdHVzIjogIlJVTiIsCisgICAgICAgICAgInRpbWUiOiAiMC4wMDdzIiwKKyAgICAgICAg
ICAiY2xhc3NuYW1lIjogIiIsCisgICAgICAgICAgImZhaWx1cmVzIjogWworICAgICAgICAgICAg
eworICAgICAgICAgICAgICAibWVzc2FnZSI6ICJWYWx1ZSBvZjogYWRkKDEsIDEpXHgwQSAgQWN0
dWFsOiAzXHgwQUV4cGVjdGVkOiAyIiwKKyAgICAgICAgICAgICAgInR5cGUiOiAiIgorICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgIm1lc3NhZ2UiOiAiVmFsdWUg
b2Y6IGFkZCgxLCAtMSlceDBBICBBY3R1YWw6IDFceDBBRXhwZWN0ZWQ6IDAiLAorICAgICAgICAg
ICAgICAidHlwZSI6ICIiCisgICAgICAgICAgICB9CisgICAgICAgICAgXQorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgIm5hbWUiOiAiU3VidHJhY3Rpb24iLAorICAgICAgICAgICJz
dGF0dXMiOiAiUlVOIiwKKyAgICAgICAgICAidGltZSI6ICIwLjAwNXMiLAorICAgICAgICAgICJj
bGFzc25hbWUiOiAiIgorICAgICAgICB9CisgICAgICBdCisgICAgfQorICAgIHsKKyAgICAgICJu
YW1lIjogIkxvZ2ljVGVzdCIsCisgICAgICAidGVzdHMiOiAxLAorICAgICAgImZhaWx1cmVzIjog
MCwKKyAgICAgICJlcnJvcnMiOiAwLAorICAgICAgInRpbWUiOiAiMC4wMDVzIiwKKyAgICAgICJ0
ZXN0c3VpdGUiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAibmFtZSI6ICJOb25Db250cmFkaWN0
aW9uIiwKKyAgICAgICAgICAic3RhdHVzIjogIlJVTiIsCisgICAgICAgICAgInRpbWUiOiAiMC4w
MDVzIiwKKyAgICAgICAgICAiY2xhc3NuYW1lIjogIiIKKyAgICAgICAgfQorICAgICAgXQorICAg
IH0KKyAgXQorfQorYGBgCisKK0lNUE9SVEFOVDogVGhlIGV4YWN0IGZvcm1hdCBvZiB0aGUgSlNP
TiBkb2N1bWVudCBpcyBzdWJqZWN0IHRvIGNoYW5nZS4KKworKipBdmFpbGFiaWxpdHkqKjogTGlu
dXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIENvbnRyb2xsaW5nIEhvdyBGYWlsdXJlcyBBcmUgUmVw
b3J0ZWQKKworIyMjIyBUdXJuaW5nIEFzc2VydGlvbiBGYWlsdXJlcyBpbnRvIEJyZWFrLVBvaW50
cworCitXaGVuIHJ1bm5pbmcgdGVzdCBwcm9ncmFtcyB1bmRlciBhIGRlYnVnZ2VyLCBpdCdzIHZl
cnkgY29udmVuaWVudCBpZiB0aGUKK2RlYnVnZ2VyIGNhbiBjYXRjaCBhbiBhc3NlcnRpb24gZmFp
bHVyZSBhbmQgYXV0b21hdGljYWxseSBkcm9wIGludG8gaW50ZXJhY3RpdmUKK21vZGUuIGdvb2ds
ZXRlc3QncyAqYnJlYWstb24tZmFpbHVyZSogbW9kZSBzdXBwb3J0cyB0aGlzIGJlaGF2aW9yLgor
CitUbyBlbmFibGUgaXQsIHNldCB0aGUgYEdURVNUX0JSRUFLX09OX0ZBSUxVUkVgIGVudmlyb25t
ZW50IHZhcmlhYmxlIHRvIGEgdmFsdWUKK290aGVyIHRoYW4gYDBgIC4gQWx0ZXJuYXRpdmVseSwg
eW91IGNhbiB1c2UgdGhlIGAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVgCitjb21tYW5kIGxpbmUg
ZmxhZy4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIyBE
aXNhYmxpbmcgQ2F0Y2hpbmcgVGVzdC1UaHJvd24gRXhjZXB0aW9ucworCitnb29nbGV0ZXN0IGNh
biBiZSB1c2VkIGVpdGhlciB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucyBlbmFibGVkLiBJZiBh
IHRlc3QKK3Rocm93cyBhIEMrKyBleGNlcHRpb24gb3IgKG9uIFdpbmRvd3MpIGEgc3RydWN0dXJl
ZCBleGNlcHRpb24gKFNFSCksIGJ5IGRlZmF1bHQKK2dvb2dsZXRlc3QgY2F0Y2hlcyBpdCwgcmVw
b3J0cyBpdCBhcyBhIHRlc3QgZmFpbHVyZSwgYW5kIGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0Cit0
ZXN0IG1ldGhvZC4gVGhpcyBtYXhpbWl6ZXMgdGhlIGNvdmVyYWdlIG9mIGEgdGVzdCBydW4uIEFs
c28sIG9uIFdpbmRvd3MgYW4KK3VuY2F1Z2h0IGV4Y2VwdGlvbiB3aWxsIGNhdXNlIGEgcG9wLXVw
IHdpbmRvdywgc28gY2F0Y2hpbmcgdGhlIGV4Y2VwdGlvbnMgYWxsb3dzCit5b3UgdG8gcnVuIHRo
ZSB0ZXN0cyBhdXRvbWF0aWNhbGx5LgorCitXaGVuIGRlYnVnZ2luZyB0aGUgdGVzdCBmYWlsdXJl
cywgaG93ZXZlciwgeW91IG1heSBpbnN0ZWFkIHdhbnQgdGhlIGV4Y2VwdGlvbnMKK3RvIGJlIGhh
bmRsZWQgYnkgdGhlIGRlYnVnZ2VyLCBzdWNoIHRoYXQgeW91IGNhbiBleGFtaW5lIHRoZSBjYWxs
IHN0YWNrIHdoZW4gYW4KK2V4Y2VwdGlvbiBpcyB0aHJvd24uIFRvIGFjaGlldmUgdGhhdCwgc2V0
IHRoZSBgR1RFU1RfQ0FUQ0hfRVhDRVBUSU9OU2AKK2Vudmlyb25tZW50IHZhcmlhYmxlIHRvIGAw
YCwgb3IgdXNlIHRoZSBgLS1ndGVzdF9jYXRjaF9leGNlcHRpb25zPTBgIGZsYWcgd2hlbgorcnVu
bmluZyB0aGUgdGVzdHMuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvZmFxLm1kIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9mYXEubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q0MmZmN2RiYWE4
ZmFiZDBjYzY1MmZkNzA1Mjc5ODE4NGU5NWM0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2RvY3MvZmFxLm1kCkBAIC0wLDAgKzEsNzcwIEBACisjIEdvb2dsZXRl
c3QgRkFRCisKKworIyMgV2h5IHNob3VsZCB0ZXN0IGNhc2UgbmFtZXMgYW5kIHRlc3QgbmFtZXMg
bm90IGNvbnRhaW4gdW5kZXJzY29yZT8KKworVW5kZXJzY29yZSAoYF9gKSBpcyBzcGVjaWFsLCBh
cyBDKysgcmVzZXJ2ZXMgdGhlIGZvbGxvd2luZyB0byBiZSB1c2VkIGJ5IHRoZQorY29tcGlsZXIg
YW5kIHRoZSBzdGFuZGFyZCBsaWJyYXJ5OgorCisxLiAgYW55IGlkZW50aWZpZXIgdGhhdCBzdGFy
dHMgd2l0aCBhbiBgX2AgZm9sbG93ZWQgYnkgYW4gdXBwZXItY2FzZSBsZXR0ZXIsIGFuZAorMS4g
IGFueSBpZGVudGlmaWVyIHRoYXQgY29udGFpbnMgdHdvIGNvbnNlY3V0aXZlIHVuZGVyc2NvcmVz
IChpLmUuIGBfX2ApCisgICAgKmFueXdoZXJlKiBpbiBpdHMgbmFtZS4KKworVXNlciBjb2RlIGlz
ICpwcm9oaWJpdGVkKiBmcm9tIHVzaW5nIHN1Y2ggaWRlbnRpZmllcnMuCisKK05vdyBsZXQncyBs
b29rIGF0IHdoYXQgdGhpcyBtZWFucyBmb3IgYFRFU1RgIGFuZCBgVEVTVF9GYC4KKworQ3VycmVu
dGx5IGBURVNUKFRlc3RDYXNlTmFtZSwgVGVzdE5hbWUpYCBnZW5lcmF0ZXMgYSBjbGFzcyBuYW1l
ZAorYFRlc3RDYXNlTmFtZV9UZXN0TmFtZV9UZXN0YC4gV2hhdCBoYXBwZW5zIGlmIGBUZXN0Q2Fz
ZU5hbWVgIG9yIGBUZXN0TmFtZWAKK2NvbnRhaW5zIGBfYD8KKworMS4gIElmIGBUZXN0Q2FzZU5h
bWVgIHN0YXJ0cyB3aXRoIGFuIGBfYCBmb2xsb3dlZCBieSBhbiB1cHBlci1jYXNlIGxldHRlciAo
c2F5LAorICAgIGBfRm9vYCksIHdlIGVuZCB1cCB3aXRoIGBfRm9vX1Rlc3ROYW1lX1Rlc3RgLCB3
aGljaCBpcyByZXNlcnZlZCBhbmQgdGh1cworICAgIGludmFsaWQuCisxLiAgSWYgYFRlc3RDYXNl
TmFtZWAgZW5kcyB3aXRoIGFuIGBfYCAoc2F5LCBgRm9vX2ApLCB3ZSBnZXQKKyAgICBgRm9vX19U
ZXN0TmFtZV9UZXN0YCwgd2hpY2ggaXMgaW52YWxpZC4KKzEuICBJZiBgVGVzdE5hbWVgIHN0YXJ0
cyB3aXRoIGFuIGBfYCAoc2F5LCBgX0JhcmApLCB3ZSBnZXQKKyAgICBgVGVzdENhc2VOYW1lX19C
YXJfVGVzdGAsIHdoaWNoIGlzIGludmFsaWQuCisxLiAgSWYgYFRlc3ROYW1lYCBlbmRzIHdpdGgg
YW4gYF9gIChzYXksIGBCYXJfYCksIHdlIGdldAorICAgIGBUZXN0Q2FzZU5hbWVfQmFyX19UZXN0
YCwgd2hpY2ggaXMgaW52YWxpZC4KKworU28gY2xlYXJseSBgVGVzdENhc2VOYW1lYCBhbmQgYFRl
c3ROYW1lYCBjYW5ub3Qgc3RhcnQgb3IgZW5kIHdpdGggYF9gIChBY3R1YWxseSwKK2BUZXN0Q2Fz
ZU5hbWVgIGNhbiBzdGFydCB3aXRoIGBfYCAtLSBhcyBsb25nIGFzIHRoZSBgX2AgaXNuJ3QgZm9s
bG93ZWQgYnkgYW4KK3VwcGVyLWNhc2UgbGV0dGVyLiBCdXQgdGhhdCdzIGdldHRpbmcgY29tcGxp
Y2F0ZWQuIFNvIGZvciBzaW1wbGljaXR5IHdlIGp1c3Qgc2F5Cit0aGF0IGl0IGNhbm5vdCBzdGFy
dCB3aXRoIGBfYC4pLgorCitJdCBtYXkgc2VlbSBmaW5lIGZvciBgVGVzdENhc2VOYW1lYCBhbmQg
YFRlc3ROYW1lYCB0byBjb250YWluIGBfYCBpbiB0aGUgbWlkZGxlLgorSG93ZXZlciwgY29uc2lk
ZXIgdGhpczoKKworYGBgYysrCitURVNUKFRpbWUsIEZsaWVzX0xpa2VfQW5fQXJyb3cpIHsgLi4u
IH0KK1RFU1QoVGltZV9GbGllcywgTGlrZV9Bbl9BcnJvdykgeyAuLi4gfQorYGBgCisKK05vdywg
dGhlIHR3byBgVEVTVGBzIHdpbGwgYm90aCBnZW5lcmF0ZSB0aGUgc2FtZSBjbGFzcworKGBUaW1l
X0ZsaWVzX0xpa2VfQW5fQXJyb3dfVGVzdGApLiBUaGF0J3Mgbm90IGdvb2QuCisKK1NvIGZvciBz
aW1wbGljaXR5LCB3ZSBqdXN0IGFzayB0aGUgdXNlcnMgdG8gYXZvaWQgYF9gIGluIGBUZXN0Q2Fz
ZU5hbWVgIGFuZAorYFRlc3ROYW1lYC4gVGhlIHJ1bGUgaXMgbW9yZSBjb25zdHJhaW5pbmcgdGhh
biBuZWNlc3NhcnksIGJ1dCBpdCdzIHNpbXBsZSBhbmQKK2Vhc3kgdG8gcmVtZW1iZXIuIEl0IGFs
c28gZ2l2ZXMgZ29vZ2xldGVzdCBzb21lIHdpZ2dsZSByb29tIGluIGNhc2UgaXRzCitpbXBsZW1l
bnRhdGlvbiBuZWVkcyB0byBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KKworSWYgeW91IHZpb2xhdGUg
dGhlIHJ1bGUsIHRoZXJlIG1heSBub3QgYmUgaW1tZWRpYXRlIGNvbnNlcXVlbmNlcywgYnV0IHlv
dXIgdGVzdAorbWF5IChqdXN0IG1heSkgYnJlYWsgd2l0aCBhIG5ldyBjb21waWxlciAob3IgYSBu
ZXcgdmVyc2lvbiBvZiB0aGUgY29tcGlsZXIgeW91CithcmUgdXNpbmcpIG9yIHdpdGggYSBuZXcg
dmVyc2lvbiBvZiBnb29nbGV0ZXN0LiBUaGVyZWZvcmUgaXQncyBiZXN0IHRvIGZvbGxvdwordGhl
IHJ1bGUuCisKKyMjIFdoeSBkb2VzIGdvb2dsZXRlc3Qgc3VwcG9ydCBgRVhQRUNUX0VRKE5VTEws
IHB0cilgIGFuZCBgQVNTRVJUX0VRKE5VTEwsIHB0cilgIGJ1dCBub3QgYEVYUEVDVF9ORShOVUxM
LCBwdHIpYCBhbmQgYEFTU0VSVF9ORShOVUxMLCBwdHIpYD8KKworRmlyc3Qgb2YgYWxsIHlvdSBj
YW4gdXNlIGBFWFBFQ1RfTkUobnVsbHB0ciwgcHRyKWAgYW5kIGBBU1NFUlRfTkUobnVsbHB0ciwK
K3B0cilgLiBUaGlzIGlzIHRoZSBwcmVmZXJyZWQgc3ludGF4IGluIHRoZSBzdHlsZSBndWlkZSBi
ZWNhdXNlIG51bGxwdHIgZG9lcyBub3QKK2hhdmUgdGhlIHR5cGUgcHJvYmxlbXMgdGhhdCBOVUxM
IGRvZXMuIFdoaWNoIGlzIHdoeSBOVUxMIGRvZXMgbm90IHdvcmsuCisKK0R1ZSB0byBzb21lIHBl
Y3VsaWFyaXR5IG9mIEMrKywgaXQgcmVxdWlyZXMgc29tZSBub24tdHJpdmlhbCB0ZW1wbGF0ZSBt
ZXRhCitwcm9ncmFtbWluZyB0cmlja3MgdG8gc3VwcG9ydCB1c2luZyBgTlVMTGAgYXMgYW4gYXJn
dW1lbnQgb2YgdGhlIGBFWFBFQ1RfWFgoKWAKK2FuZCBgQVNTRVJUX1hYKClgIG1hY3Jvcy4gVGhl
cmVmb3JlIHdlIG9ubHkgZG8gaXQgd2hlcmUgaXQncyBtb3N0IG5lZWRlZAorKG90aGVyd2lzZSB3
ZSBtYWtlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBnb29nbGV0ZXN0IGhhcmRlciB0byBtYWludGFp
biBhbmQgbW9yZQorZXJyb3ItcHJvbmUgdGhhbiBuZWNlc3NhcnkpLgorCitUaGUgYEVYUEVDVF9F
USgpYCBtYWNybyB0YWtlcyB0aGUgKmV4cGVjdGVkKiB2YWx1ZSBhcyBpdHMgZmlyc3QgYXJndW1l
bnQgYW5kIHRoZQorKmFjdHVhbCogdmFsdWUgYXMgdGhlIHNlY29uZC4gSXQncyByZWFzb25hYmxl
IHRoYXQgc29tZW9uZSB3YW50cyB0byB3cml0ZQorYEVYUEVDVF9FUShOVUxMLCBzb21lX2V4cHJl
c3Npb24pYCwgYW5kIHRoaXMgaW5kZWVkIHdhcyByZXF1ZXN0ZWQgc2V2ZXJhbCB0aW1lcy4KK1Ro
ZXJlZm9yZSB3ZSBpbXBsZW1lbnRlZCBpdC4KKworVGhlIG5lZWQgZm9yIGBFWFBFQ1RfTkUoTlVM
TCwgcHRyKWAgaXNuJ3QgbmVhcmx5IGFzIHN0cm9uZy4gV2hlbiB0aGUgYXNzZXJ0aW9uCitmYWls
cywgeW91IGFscmVhZHkga25vdyB0aGF0IGBwdHJgIG11c3QgYmUgYE5VTExgLCBzbyBpdCBkb2Vz
bid0IGFkZCBhbnkKK2luZm9ybWF0aW9uIHRvIHByaW50IGBwdHJgIGluIHRoaXMgY2FzZS4gVGhh
dCBtZWFucyBgRVhQRUNUX1RSVUUocHRyICE9IE5VTEwpYAord29ya3MganVzdCBhcyB3ZWxsLgor
CitJZiB3ZSB3ZXJlIHRvIHN1cHBvcnQgYEVYUEVDVF9ORShOVUxMLCBwdHIpYCwgZm9yIGNvbnNp
c3RlbmN5IHdlJ2xsIGhhdmUgdG8KK3N1cHBvcnQgYEVYUEVDVF9ORShwdHIsIE5VTEwpYCBhcyB3
ZWxsLCBhcyB1bmxpa2UgYEVYUEVDVF9FUWAsIHdlIGRvbid0IGhhdmUgYQorY29udmVudGlvbiBv
biB0aGUgb3JkZXIgb2YgdGhlIHR3byBhcmd1bWVudHMgZm9yIGBFWFBFQ1RfTkVgLiBUaGlzIG1l
YW5zIHVzaW5nCit0aGUgdGVtcGxhdGUgbWV0YSBwcm9ncmFtbWluZyB0cmlja3MgdHdpY2UgaW4g
dGhlIGltcGxlbWVudGF0aW9uLCBtYWtpbmcgaXQgZXZlbgoraGFyZGVyIHRvIHVuZGVyc3RhbmQg
YW5kIG1haW50YWluLiBXZSBiZWxpZXZlIHRoZSBiZW5lZml0IGRvZXNuJ3QganVzdGlmeSB0aGUK
K2Nvc3QuCisKK0ZpbmFsbHksIHdpdGggdGhlIGdyb3d0aCBvZiB0aGUgZ01vY2sgbWF0Y2hlciBs
aWJyYXJ5LCB3ZSBhcmUgZW5jb3VyYWdpbmcgcGVvcGxlCit0byB1c2UgdGhlIHVuaWZpZWQgYEVY
UEVDVF9USEFUKHZhbHVlLCBtYXRjaGVyKWAgc3ludGF4IG1vcmUgb2Z0ZW4gaW4gdGVzdHMuIE9u
ZQorc2lnbmlmaWNhbnQgYWR2YW50YWdlIG9mIHRoZSBtYXRjaGVyIGFwcHJvYWNoIGlzIHRoYXQg
bWF0Y2hlcnMgY2FuIGJlIGVhc2lseQorY29tYmluZWQgdG8gZm9ybSBuZXcgbWF0Y2hlcnMsIHdo
aWxlIHRoZSBgRVhQRUNUX05FYCwgZXRjLCBtYWNyb3MgY2Fubm90IGJlCitlYXNpbHkgY29tYmlu
ZWQuIFRoZXJlZm9yZSB3ZSB3YW50IHRvIGludmVzdCBtb3JlIGluIHRoZSBtYXRjaGVycyB0aGFu
IGluIHRoZQorYEVYUEVDVF9YWCgpYCBtYWNyb3MuCisKKyMjIEkgbmVlZCB0byB0ZXN0IHRoYXQg
ZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBvZiBhbiBpbnRlcmZhY2Ugc2F0aXNmeSBzb21lIGNv
bW1vbiByZXF1aXJlbWVudHMuIFNob3VsZCBJIHVzZSB0eXBlZCB0ZXN0cyBvciB2YWx1ZS1wYXJh
bWV0ZXJpemVkIHRlc3RzPworCitGb3IgdGVzdGluZyB2YXJpb3VzIGltcGxlbWVudGF0aW9ucyBv
ZiB0aGUgc2FtZSBpbnRlcmZhY2UsIGVpdGhlciB0eXBlZCB0ZXN0cyBvcgordmFsdWUtcGFyYW1l
dGVyaXplZCB0ZXN0cyBjYW4gZ2V0IGl0IGRvbmUuIEl0J3MgcmVhbGx5IHVwIHRvIHlvdSB0aGUg
dXNlciB0bworZGVjaWRlIHdoaWNoIGlzIG1vcmUgY29udmVuaWVudCBmb3IgeW91LCBkZXBlbmRp
bmcgb24geW91ciBwYXJ0aWN1bGFyIGNhc2UuIFNvbWUKK3JvdWdoIGd1aWRlbGluZXM6CisKKyog
ICBUeXBlZCB0ZXN0cyBjYW4gYmUgZWFzaWVyIHRvIHdyaXRlIGlmIGluc3RhbmNlcyBvZiB0aGUg
ZGlmZmVyZW50CisgICAgaW1wbGVtZW50YXRpb25zIGNhbiBiZSBjcmVhdGVkIHRoZSBzYW1lIHdh
eSwgbW9kdWxvIHRoZSB0eXBlLiBGb3IgZXhhbXBsZSwKKyAgICBpZiBhbGwgdGhlc2UgaW1wbGVt
ZW50YXRpb25zIGhhdmUgYSBwdWJsaWMgZGVmYXVsdCBjb25zdHJ1Y3RvciAoc3VjaCB0aGF0Cisg
ICAgeW91IGNhbiB3cml0ZSBgbmV3IFR5cGVQYXJhbWApLCBvciBpZiB0aGVpciBmYWN0b3J5IGZ1
bmN0aW9ucyBoYXZlIHRoZSBzYW1lCisgICAgZm9ybSAoZS5nLiBgQ3JlYXRlSW5zdGFuY2U8VHlw
ZVBhcmFtPigpYCkuCisqICAgVmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBjYW4gYmUgZWFzaWVy
IHRvIHdyaXRlIGlmIHlvdSBuZWVkIGRpZmZlcmVudCBjb2RlCisgICAgcGF0dGVybnMgdG8gY3Jl
YXRlIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMnIGluc3RhbmNlcywgZS5nLiBgbmV3IEZvb2Ag
dnMKKyAgICBgbmV3IEJhcig1KWAuIFRvIGFjY29tbW9kYXRlIGZvciB0aGUgZGlmZmVyZW5jZXMs
IHlvdSBjYW4gd3JpdGUgZmFjdG9yeQorICAgIGZ1bmN0aW9uIHdyYXBwZXJzIGFuZCBwYXNzIHRo
ZXNlIGZ1bmN0aW9uIHBvaW50ZXJzIHRvIHRoZSB0ZXN0cyBhcyB0aGVpcgorICAgIHBhcmFtZXRl
cnMuCisqICAgV2hlbiBhIHR5cGVkIHRlc3QgZmFpbHMsIHRoZSBvdXRwdXQgaW5jbHVkZXMgdGhl
IG5hbWUgb2YgdGhlIHR5cGUsIHdoaWNoIGNhbgorICAgIGhlbHAgeW91IHF1aWNrbHkgaWRlbnRp
Znkgd2hpY2ggaW1wbGVtZW50YXRpb24gaXMgd3JvbmcuIFZhbHVlLXBhcmFtZXRlcml6ZWQKKyAg
ICB0ZXN0cyBjYW5ub3QgZG8gdGhpcywgc28gdGhlcmUgeW91J2xsIGhhdmUgdG8gbG9vayBhdCB0
aGUgaXRlcmF0aW9uIG51bWJlcgorICAgIHRvIGtub3cgd2hpY2ggaW1wbGVtZW50YXRpb24gdGhl
IGZhaWx1cmUgaXMgZnJvbSwgd2hpY2ggaXMgbGVzcyBkaXJlY3QuCisqICAgSWYgeW91IG1ha2Ug
YSBtaXN0YWtlIHdyaXRpbmcgYSB0eXBlZCB0ZXN0LCB0aGUgY29tcGlsZXIgZXJyb3JzIGNhbiBi
ZQorICAgIGhhcmRlciB0byBkaWdlc3QsIGFzIHRoZSBjb2RlIGlzIHRlbXBsYXRpemVkLgorKiAg
IFdoZW4gdXNpbmcgdHlwZWQgdGVzdHMsIHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB5b3UgYXJlIHRl
c3RpbmcgYWdhaW5zdCB0aGUKKyAgICBpbnRlcmZhY2UgdHlwZSwgbm90IHRoZSBjb25jcmV0ZSB0
eXBlcyAoaW4gb3RoZXIgd29yZHMsIHlvdSB3YW50IHRvIG1ha2UKKyAgICBzdXJlIGBpbXBsaWNp
dF9jYXN0PE15SW50ZXJmYWNlKj4obXlfY29uY3JldGVfaW1wbClgIHdvcmtzLCBub3QganVzdCB0
aGF0CisgICAgYG15X2NvbmNyZXRlX2ltcGxgIHdvcmtzKS4gSXQncyBsZXNzIGxpa2VseSB0byBt
YWtlIG1pc3Rha2VzIGluIHRoaXMgYXJlYQorICAgIHdoZW4gdXNpbmcgdmFsdWUtcGFyYW1ldGVy
aXplZCB0ZXN0cy4KKworSSBob3BlIEkgZGlkbid0IGNvbmZ1c2UgeW91IG1vcmUuIDotKSBJZiB5
b3UgZG9uJ3QgbWluZCwgSSdkIHN1Z2dlc3QgeW91IHRvIGdpdmUKK2JvdGggYXBwcm9hY2hlcyBh
IHRyeS4gUHJhY3RpY2UgaXMgYSBtdWNoIGJldHRlciB3YXkgdG8gZ3Jhc3AgdGhlIHN1YnRsZQor
ZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdHdvIHRvb2xzLiBPbmNlIHlvdSBoYXZlIHNvbWUgY29u
Y3JldGUgZXhwZXJpZW5jZSwgeW91CitjYW4gbXVjaCBtb3JlIGVhc2lseSBkZWNpZGUgd2hpY2gg
b25lIHRvIHVzZSB0aGUgbmV4dCB0aW1lLgorCisjIyBNeSBkZWF0aCB0ZXN0cyBiZWNhbWUgdmVy
eSBzbG93IC0gd2hhdCBoYXBwZW5lZD8KKworSW4gQXVndXN0IDIwMDggd2UgaGFkIHRvIHN3aXRj
aCB0aGUgZGVmYXVsdCBkZWF0aCB0ZXN0IHN0eWxlIGZyb20gYGZhc3RgIHRvCitgdGhyZWFkc2Fm
ZWAsIGFzIHRoZSBmb3JtZXIgaXMgbm8gbG9uZ2VyIHNhZmUgbm93IHRoYXQgdGhyZWFkZWQgbG9n
Z2luZyBpcyB0aGUKK2RlZmF1bHQuIFRoaXMgY2F1c2VkIG1hbnkgZGVhdGggdGVzdHMgdG8gc2xv
dyBkb3duLiBVbmZvcnR1bmF0ZWx5IHRoaXMgY2hhbmdlCit3YXMgbmVjZXNzYXJ5LgorCitQbGVh
c2UgcmVhZCBbRml4aW5nIEZhaWxpbmcgRGVhdGggVGVzdHNdKGRlYXRoX3Rlc3Rfc3R5bGVzLm1k
KSBmb3Igd2hhdCB5b3UgY2FuCitkby4KKworIyMgSSBnb3Qgc29tZSBydW4tdGltZSBlcnJvcnMg
YWJvdXQgaW52YWxpZCBwcm90byBkZXNjcmlwdG9ycyB3aGVuIHVzaW5nIGBQcm90b2NvbE1lc3Nh
Z2VFcXVhbHNgLiBIZWxwIQorCisqKk5vdGU6KiogYFByb3RvY29sTWVzc2FnZUVxdWFsc2AgYW5k
IGBQcm90b2NvbE1lc3NhZ2VFcXVpdmAgYXJlICpkZXByZWNhdGVkKgorbm93LiBQbGVhc2UgdXNl
IGBFcXVhbHNQcm90b2AsIGV0YyBpbnN0ZWFkLgorCitgUHJvdG9jb2xNZXNzYWdlRXF1YWxzYCBh
bmQgYFByb3RvY29sTWVzc2FnZUVxdWl2YCB3ZXJlIHJlZGVmaW5lZCByZWNlbnRseSBhbmQKK2Fy
ZSBub3cgbGVzcyB0b2xlcmFudCBvbiBpbnZhbGlkIHByb3RvY29sIGJ1ZmZlciBkZWZpbml0aW9u
cy4gSW4gcGFydGljdWxhciwgaWYKK3lvdSBoYXZlIGEgYGZvby5wcm90b2AgdGhhdCBkb2Vzbid0
IGZ1bGx5IHF1YWxpZnkgdGhlIHR5cGUgb2YgYSBwcm90b2NvbCBtZXNzYWdlCitpdCByZWZlcmVu
Y2VzIChlLmcuIGBtZXNzYWdlPEJhcj5gIHdoZXJlIGl0IHNob3VsZCBiZSBgbWVzc2FnZTxibGFo
LkJhcj5gKSwgeW91Cit3aWxsIG5vdyBnZXQgcnVuLXRpbWUgZXJyb3JzIGxpa2U6CisKK2BgYAor
Li4uIGRlc2NyaXB0b3IuY2M6Li4uXSBJbnZhbGlkIHByb3RvIGRlc2NyaXB0b3IgZm9yIGZpbGUg
InBhdGgvdG8vZm9vLnByb3RvIjoKKy4uLiBkZXNjcmlwdG9yLmNjOi4uLl0gIGJsYWguTXlNZXNz
YWdlLm15X2ZpZWxkOiAiLkJhciIgaXMgbm90IGRlZmluZWQuCitgYGAKKworSWYgeW91IHNlZSB0
aGlzLCB5b3VyIGAucHJvdG9gIGZpbGUgaXMgYnJva2VuIGFuZCBuZWVkcyB0byBiZSBmaXhlZCBi
eSBtYWtpbmcKK3RoZSB0eXBlcyBmdWxseSBxdWFsaWZpZWQuIFRoZSBuZXcgZGVmaW5pdGlvbiBv
ZiBgUHJvdG9jb2xNZXNzYWdlRXF1YWxzYCBhbmQKK2BQcm90b2NvbE1lc3NhZ2VFcXVpdmAganVz
dCBoYXBwZW4gdG8gcmV2ZWFsIHlvdXIgYnVnLgorCisjIyBNeSBkZWF0aCB0ZXN0IG1vZGlmaWVz
IHNvbWUgc3RhdGUsIGJ1dCB0aGUgY2hhbmdlIHNlZW1zIGxvc3QgYWZ0ZXIgdGhlIGRlYXRoIHRl
c3QgZmluaXNoZXMuIFdoeT8KKworRGVhdGggdGVzdHMgKGBFWFBFQ1RfREVBVEhgLCBldGMpIGFy
ZSBleGVjdXRlZCBpbiBhIHN1Yi1wcm9jZXNzIHMudC4gdGhlCitleHBlY3RlZCBjcmFzaCB3b24n
dCBraWxsIHRoZSB0ZXN0IHByb2dyYW0gKGkuZS4gdGhlIHBhcmVudCBwcm9jZXNzKS4gQXMgYQor
cmVzdWx0LCBhbnkgaW4tbWVtb3J5IHNpZGUgZWZmZWN0cyB0aGV5IGluY3VyIGFyZSBvYnNlcnZh
YmxlIGluIHRoZWlyIHJlc3BlY3RpdmUKK3N1Yi1wcm9jZXNzZXMsIGJ1dCBub3QgaW4gdGhlIHBh
cmVudCBwcm9jZXNzLiBZb3UgY2FuIHRoaW5rIG9mIHRoZW0gYXMgcnVubmluZworaW4gYSBwYXJh
bGxlbCB1bml2ZXJzZSwgbW9yZSBvciBsZXNzLgorCitJbiBwYXJ0aWN1bGFyLCBpZiB5b3UgdXNl
IFtnTW9ja10oLi4vLi4vZ29vZ2xlbW9jaykgYW5kIHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudAor
aW52b2tlcyBzb21lIG1vY2sgbWV0aG9kcywgdGhlIHBhcmVudCBwcm9jZXNzIHdpbGwgdGhpbmsg
dGhlIGNhbGxzIGhhdmUgbmV2ZXIKK29jY3VycmVkLiBUaGVyZWZvcmUsIHlvdSBtYXkgd2FudCB0
byBtb3ZlIHlvdXIgYEVYUEVDVF9DQUxMYCBzdGF0ZW1lbnRzIGluc2lkZQordGhlIGBFWFBFQ1Rf
REVBVEhgIG1hY3JvLgorCisjIyBFWFBFQ1RfRVEoaHRvbmwoYmxhaCksIGJsYWhfYmxhaCkgZ2Vu
ZXJhdGVzIHdlaXJkIGNvbXBpbGVyIGVycm9ycyBpbiBvcHQgbW9kZS4gSXMgdGhpcyBhIGdvb2ds
ZXRlc3QgYnVnPworCitBY3R1YWxseSwgdGhlIGJ1ZyBpcyBpbiBgaHRvbmwoKWAuCisKK0FjY29y
ZGluZyB0byBgJ21hbiBodG9ubCdgLCBgaHRvbmwoKWAgaXMgYSAqZnVuY3Rpb24qLCB3aGljaCBt
ZWFucyBpdCdzIHZhbGlkIHRvCit1c2UgYGh0b25sYCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuIEhv
d2V2ZXIsIGluIG9wdCBtb2RlIGBodG9ubCgpYCBpcyBkZWZpbmVkIGFzCithICptYWNybyosIHdo
aWNoIGJyZWFrcyB0aGlzIHVzYWdlLgorCitXb3JzZSwgdGhlIG1hY3JvIGRlZmluaXRpb24gb2Yg
YGh0b25sKClgIHVzZXMgYSBgZ2NjYCBleHRlbnNpb24gYW5kIGlzICpub3QqCitzdGFuZGFyZCBD
KysuIFRoYXQgaGFja3kgaW1wbGVtZW50YXRpb24gaGFzIHNvbWUgYWQgaG9jIGxpbWl0YXRpb25z
LiBJbgorcGFydGljdWxhciwgaXQgcHJldmVudHMgeW91IGZyb20gd3JpdGluZyBgRm9vPHNpemVv
ZihodG9ubCh4KSk+KClgLCB3aGVyZSBgRm9vYAoraXMgYSB0ZW1wbGF0ZSB0aGF0IGhhcyBhbiBp
bnRlZ3JhbCBhcmd1bWVudC4KKworVGhlIGltcGxlbWVudGF0aW9uIG9mIGBFWFBFQ1RfRVEoYSwg
YilgIHVzZXMgYHNpemVvZiguLi4gYSAuLi4pYCBpbnNpZGUgYQordGVtcGxhdGUgYXJndW1lbnQs
IGFuZCB0aHVzIGRvZXNuJ3QgY29tcGlsZSBpbiBvcHQgbW9kZSB3aGVuIGBhYCBjb250YWlucyBh
IGNhbGwKK3RvIGBodG9ubCgpYC4gSXQgaXMgZGlmZmljdWx0IHRvIG1ha2UgYEVYUEVDVF9FUWAg
YnlwYXNzIHRoZSBgaHRvbmwoKWAgYnVnLCBhcwordGhlIHNvbHV0aW9uIG11c3Qgd29yayB3aXRo
IGRpZmZlcmVudCBjb21waWxlcnMgb24gdmFyaW91cyBwbGF0Zm9ybXMuCisKK2BodG9ubCgpYCBo
YXMgc29tZSBvdGhlciBwcm9ibGVtcyBhcyBkZXNjcmliZWQgaW4gYC8vdXRpbC9lbmRpYW4vZW5k
aWFuLmhgLAord2hpY2ggZGVmaW5lcyBgZ2h0b25sKClgIHRvIHJlcGxhY2UgaXQuIGBnaHRvbmwo
KWAgZG9lcyB0aGUgc2FtZSB0aGluZyBgaHRvbmwoKWAKK2RvZXMsIG9ubHkgd2l0aG91dCBpdHMg
cHJvYmxlbXMuIFdlIHN1Z2dlc3QgeW91IHRvIHVzZSBgZ2h0b25sKClgIGluc3RlYWQgb2YKK2Bo
dG9ubCgpYCwgYm90aCBpbiB5b3VyIHRlc3RzIGFuZCBwcm9kdWN0aW9uIGNvZGUuCisKK2AvL3V0
aWwvZW5kaWFuL2VuZGlhbi5oYCBhbHNvIGRlZmluZXMgYGdodG9ucygpYCwgd2hpY2ggc29sdmVz
IHNpbWlsYXIgcHJvYmxlbXMKK2luIGBodG9ucygpYC4KKworRG9uJ3QgZm9yZ2V0IHRvIGFkZCBg
Ly91dGlsL2VuZGlhbmAgdG8gdGhlIGxpc3Qgb2YgZGVwZW5kZW5jaWVzIGluIHRoZSBgQlVJTERg
CitmaWxlIHdoZXJldmVyIGBnaHRvbmwoKWAgYW5kIGBnaHRvbnMoKWAgYXJlIHVzZWQuIFRoZSBs
aWJyYXJ5IGNvbnNpc3RzIG9mIGEKK3NpbmdsZSBoZWFkZXIgZmlsZSBhbmQgd2lsbCBub3QgYmxv
YXQgeW91ciBiaW5hcnkuCisKKyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgInVuZGVm
aW5lZCByZWZlcmVuY2VzIiB0byBzb21lIHN0YXRpYyBjb25zdCBtZW1iZXIgdmFyaWFibGVzLCBi
dXQgSSBkaWQgZGVmaW5lIHRoZW0gaW4gdGhlIGNsYXNzIGJvZHkuIFdoYXQncyB3cm9uZz8KKwor
SWYgeW91ciBjbGFzcyBoYXMgYSBzdGF0aWMgZGF0YSBtZW1iZXI6CisKK2BgYGMrKworLy8gZm9v
LmgKK2NsYXNzIEZvbyB7CisgIC4uLgorICBzdGF0aWMgY29uc3QgaW50IGtCYXIgPSAxMDA7Cit9
OworYGBgCisKK1lvdSBhbHNvIG5lZWQgdG8gZGVmaW5lIGl0ICpvdXRzaWRlKiBvZiB0aGUgY2xh
c3MgYm9keSBpbiBgZm9vLmNjYDoKKworYGBgYysrCitjb25zdCBpbnQgRm9vOjprQmFyOyAgLy8g
Tm8gaW5pdGlhbGl6ZXIgaGVyZS4KK2BgYAorCitPdGhlcndpc2UgeW91ciBjb2RlIGlzICoqaW52
YWxpZCBDKysqKiwgYW5kIG1heSBicmVhayBpbiB1bmV4cGVjdGVkIHdheXMuIEluCitwYXJ0aWN1
bGFyLCB1c2luZyBpdCBpbiBnb29nbGV0ZXN0IGNvbXBhcmlzb24gYXNzZXJ0aW9ucyAoYEVYUEVD
VF9FUWAsIGV0Yykgd2lsbAorZ2VuZXJhdGUgYW4gInVuZGVmaW5lZCByZWZlcmVuY2UiIGxpbmtl
ciBlcnJvci4gVGhlIGZhY3QgdGhhdCAiaXQgdXNlZCB0byB3b3JrIgorZG9lc24ndCBtZWFuIGl0
J3MgdmFsaWQuIEl0IGp1c3QgbWVhbnMgdGhhdCB5b3Ugd2VyZSBsdWNreS4gOi0pCisKKyMjIENh
biBJIGRlcml2ZSBhIHRlc3QgZml4dHVyZSBmcm9tIGFub3RoZXI/CisKK1llcy4KKworRWFjaCB0
ZXN0IGZpeHR1cmUgaGFzIGEgY29ycmVzcG9uZGluZyBhbmQgc2FtZSBuYW1lZCB0ZXN0IGNhc2Uu
IFRoaXMgbWVhbnMgb25seQorb25lIHRlc3QgY2FzZSBjYW4gdXNlIGEgcGFydGljdWxhciBmaXh0
dXJlLiBTb21ldGltZXMsIGhvd2V2ZXIsIG11bHRpcGxlIHRlc3QKK2Nhc2VzIG1heSB3YW50IHRv
IHVzZSB0aGUgc2FtZSBvciBzbGlnaHRseSBkaWZmZXJlbnQgZml4dHVyZXMuIEZvciBleGFtcGxl
LCB5b3UKK21heSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGFsbCBvZiBhIEdVSSBsaWJyYXJ5J3Mg
dGVzdCBjYXNlcyBkb24ndCBsZWFrCitpbXBvcnRhbnQgc3lzdGVtIHJlc291cmNlcyBsaWtlIGZv
bnRzIGFuZCBicnVzaGVzLgorCitJbiBnb29nbGV0ZXN0LCB5b3Ugc2hhcmUgYSBmaXh0dXJlIGFt
b25nIHRlc3QgY2FzZXMgYnkgcHV0dGluZyB0aGUgc2hhcmVkIGxvZ2ljCitpbiBhIGJhc2UgdGVz
dCBmaXh0dXJlLCB0aGVuIGRlcml2aW5nIGZyb20gdGhhdCBiYXNlIGEgc2VwYXJhdGUgZml4dHVy
ZSBmb3IgZWFjaAordGVzdCBjYXNlIHRoYXQgd2FudHMgdG8gdXNlIHRoaXMgY29tbW9uIGxvZ2lj
LiBZb3UgdGhlbiB1c2UgYFRFU1RfRigpYCB0byB3cml0ZQordGVzdHMgdXNpbmcgZWFjaCBkZXJp
dmVkIGZpeHR1cmUuCisKK1R5cGljYWxseSwgeW91ciBjb2RlIGxvb2tzIGxpa2UgdGhpczoKKwor
YGBgYysrCisvLyBEZWZpbmVzIGEgYmFzZSB0ZXN0IGZpeHR1cmUuCitjbGFzcyBCYXNlVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLi4uCit9OworCisvLyBE
ZXJpdmVzIGEgZml4dHVyZSBGb29UZXN0IGZyb20gQmFzZVRlc3QuCitjbGFzcyBGb29UZXN0IDog
cHVibGljIEJhc2VUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZvaWQgU2V0VXAoKSBvdmVycmlkZSB7
CisgICAgQmFzZVRlc3Q6OlNldFVwKCk7ICAvLyBTZXRzIHVwIHRoZSBiYXNlIGZpeHR1cmUgZmly
c3QuCisgICAgLi4uIGFkZGl0aW9uYWwgc2V0LXVwIHdvcmsgLi4uCisgIH0KKworICB2b2lkIFRl
YXJEb3duKCkgb3ZlcnJpZGUgeworICAgIC4uLiBjbGVhbi11cCB3b3JrIGZvciBGb29UZXN0IC4u
LgorICAgIEJhc2VUZXN0OjpUZWFyRG93bigpOyAgLy8gUmVtZW1iZXIgdG8gdGVhciBkb3duIHRo
ZSBiYXNlIGZpeHR1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFmdGVyIGNsZWFu
aW5nIHVwIEZvb1Rlc3QhCisgIH0KKworICAuLi4gZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMgZm9y
IEZvb1Rlc3QgLi4uCit9OworCisvLyBUZXN0cyB0aGF0IHVzZSB0aGUgZml4dHVyZSBGb29UZXN0
LgorVEVTVF9GKEZvb1Rlc3QsIEJhcikgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIEJheikgeyAu
Li4gfQorCisuLi4gYWRkaXRpb25hbCBmaXh0dXJlcyBkZXJpdmVkIGZyb20gQmFzZVRlc3QgLi4u
CitgYGAKKworSWYgbmVjZXNzYXJ5LCB5b3UgY2FuIGNvbnRpbnVlIHRvIGRlcml2ZSB0ZXN0IGZp
eHR1cmVzIGZyb20gYSBkZXJpdmVkIGZpeHR1cmUuCitnb29nbGV0ZXN0IGhhcyBubyBsaW1pdCBv
biBob3cgZGVlcCB0aGUgaGllcmFyY2h5IGNhbiBiZS4KKworRm9yIGEgY29tcGxldGUgZXhhbXBs
ZSB1c2luZyBkZXJpdmVkIHRlc3QgZml4dHVyZXMsIHNlZSBbZ29vZ2xldGVzdAorc2FtcGxlXSho
dHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvYmxvYi9tYXN0ZXIvZ29vZ2xldGVz
dC9zYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MpCisKKyMjIE15IGNvbXBpbGVyIGNvbXBsYWlu
cyAidm9pZCB2YWx1ZSBub3QgaWdub3JlZCBhcyBpdCBvdWdodCB0byBiZS4iIFdoYXQgZG9lcyB0
aGlzIG1lYW4/CisKK1lvdSdyZSBwcm9iYWJseSB1c2luZyBhbiBgQVNTRVJUXyooKWAgaW4gYSBm
dW5jdGlvbiB0aGF0IGRvZXNuJ3QgcmV0dXJuIGB2b2lkYC4KK2BBU1NFUlRfKigpYCBjYW4gb25s
eSBiZSB1c2VkIGluIGB2b2lkYCBmdW5jdGlvbnMsIGR1ZSB0byBleGNlcHRpb25zIGJlaW5nCitk
aXNhYmxlZCBieSBvdXIgYnVpbGQgc3lzdGVtLiBQbGVhc2Ugc2VlIG1vcmUgZGV0YWlscworW2hl
cmVdKGFkdmFuY2VkLm1kI2Fzc2VydGlvbi1wbGFjZW1lbnQpLgorCisjIyBNeSBkZWF0aCB0ZXN0
IGhhbmdzIChvciBzZWctZmF1bHRzKS4gSG93IGRvIEkgZml4IGl0PworCitJbiBnb29nbGV0ZXN0
LCBkZWF0aCB0ZXN0cyBhcmUgcnVuIGluIGEgY2hpbGQgcHJvY2VzcyBhbmQgdGhlIHdheSB0aGV5
IHdvcmsgaXMKK2RlbGljYXRlLiBUbyB3cml0ZSBkZWF0aCB0ZXN0cyB5b3UgcmVhbGx5IG5lZWQg
dG8gdW5kZXJzdGFuZCBob3cgdGhleSB3b3JrLgorUGxlYXNlIG1ha2Ugc3VyZSB5b3UgaGF2ZSBy
ZWFkIFt0aGlzXShhZHZhbmNlZC5tZCNob3ctaXQtd29ya3MpLgorCitJbiBwYXJ0aWN1bGFyLCBk
ZWF0aCB0ZXN0cyBkb24ndCBsaWtlIGhhdmluZyBtdWx0aXBsZSB0aHJlYWRzIGluIHRoZSBwYXJl
bnQKK3Byb2Nlc3MuIFNvIHRoZSBmaXJzdCB0aGluZyB5b3UgY2FuIHRyeSBpcyB0byBlbGltaW5h
dGUgY3JlYXRpbmcgdGhyZWFkcyBvdXRzaWRlCitvZiBgRVhQRUNUX0RFQVRIKClgLiBGb3IgZXhh
bXBsZSwgeW91IG1heSB3YW50IHRvIHVzZSBbbW9ja3NdKC4uLy4uL2dvb2dsZW1vY2spCitvciBm
YWtlIG9iamVjdHMgaW5zdGVhZCBvZiByZWFsIG9uZXMgaW4geW91ciB0ZXN0cy4KKworU29tZXRp
bWVzIHRoaXMgaXMgaW1wb3NzaWJsZSBhcyBzb21lIGxpYnJhcnkgeW91IG11c3QgdXNlIG1heSBi
ZSBjcmVhdGluZwordGhyZWFkcyBiZWZvcmUgYG1haW4oKWAgaXMgZXZlbiByZWFjaGVkLiBJbiB0
aGlzIGNhc2UsIHlvdSBjYW4gdHJ5IHRvIG1pbmltaXplCit0aGUgY2hhbmNlIG9mIGNvbmZsaWN0
cyBieSBlaXRoZXIgbW92aW5nIGFzIG1hbnkgYWN0aXZpdGllcyBhcyBwb3NzaWJsZSBpbnNpZGUK
K2BFWFBFQ1RfREVBVEgoKWAgKGluIHRoZSBleHRyZW1lIGNhc2UsIHlvdSB3YW50IHRvIG1vdmUg
ZXZlcnl0aGluZyBpbnNpZGUpLCBvcgorbGVhdmluZyBhcyBmZXcgdGhpbmdzIGFzIHBvc3NpYmxl
IGluIGl0LiBBbHNvLCB5b3UgY2FuIHRyeSB0byBzZXQgdGhlIGRlYXRoIHRlc3QKK3N0eWxlIHRv
IGAidGhyZWFkc2FmZSJgLCB3aGljaCBpcyBzYWZlciBidXQgc2xvd2VyLCBhbmQgc2VlIGlmIGl0
IGhlbHBzLgorCitJZiB5b3UgZ28gd2l0aCB0aHJlYWQtc2FmZSBkZWF0aCB0ZXN0cywgcmVtZW1i
ZXIgdGhhdCB0aGV5IHJlcnVuIHRoZSB0ZXN0Citwcm9ncmFtIGZyb20gdGhlIGJlZ2lubmluZyBp
biB0aGUgY2hpbGQgcHJvY2Vzcy4gVGhlcmVmb3JlIG1ha2Ugc3VyZSB5b3VyCitwcm9ncmFtIGNh
biBydW4gc2lkZS1ieS1zaWRlIHdpdGggaXRzZWxmIGFuZCBpcyBkZXRlcm1pbmlzdGljLgorCitJ
biB0aGUgZW5kLCB0aGlzIGJvaWxzIGRvd24gdG8gZ29vZCBjb25jdXJyZW50IHByb2dyYW1taW5n
LiBZb3UgaGF2ZSB0byBtYWtlCitzdXJlIHRoYXQgdGhlcmUgaXMgbm8gcmFjZSBjb25kaXRpb25z
IG9yIGRlYWQgbG9ja3MgaW4geW91ciBwcm9ncmFtLiBObyBzaWx2ZXIKK2J1bGxldCAtIHNvcnJ5
IQorCisjIyBTaG91bGQgSSB1c2UgdGhlIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3Igb2YgdGhlIHRl
c3QgZml4dHVyZSBvciBTZXRVcCgpL1RlYXJEb3duKCk/CisKK1RoZSBmaXJzdCB0aGluZyB0byBy
ZW1lbWJlciBpcyB0aGF0IGdvb2dsZXRlc3QgZG9lcyAqKm5vdCoqIHJldXNlIHRoZSBzYW1lIHRl
c3QKK2ZpeHR1cmUgb2JqZWN0IGFjcm9zcyBtdWx0aXBsZSB0ZXN0cy4gRm9yIGVhY2ggYFRFU1Rf
RmAsIGdvb2dsZXRlc3Qgd2lsbCBjcmVhdGUKK2EgKipmcmVzaCoqIHRlc3QgZml4dHVyZSBvYmpl
Y3QsIGltbWVkaWF0ZWx5IGNhbGwgYFNldFVwKClgLCBydW4gdGhlIHRlc3QgYm9keSwKK2NhbGwg
YFRlYXJEb3duKClgLCBhbmQgdGhlbiBkZWxldGUgdGhlIHRlc3QgZml4dHVyZSBvYmplY3QuCisK
K1doZW4geW91IG5lZWQgdG8gd3JpdGUgcGVyLXRlc3Qgc2V0LXVwIGFuZCB0ZWFyLWRvd24gbG9n
aWMsIHlvdSBoYXZlIHRoZSBjaG9pY2UKK2JldHdlZW4gdXNpbmcgdGhlIHRlc3QgZml4dHVyZSBj
b25zdHJ1Y3Rvci9kZXN0cnVjdG9yIG9yIGBTZXRVcCgpL1RlYXJEb3duKClgLgorVGhlIGZvcm1l
ciBpcyB1c3VhbGx5IHByZWZlcnJlZCwgYXMgaXQgaGFzIHRoZSBmb2xsb3dpbmcgYmVuZWZpdHM6
CisKKyogICBCeSBpbml0aWFsaXppbmcgYSBtZW1iZXIgdmFyaWFibGUgaW4gdGhlIGNvbnN0cnVj
dG9yLCB3ZSBoYXZlIHRoZSBvcHRpb24gdG8KKyAgICBtYWtlIGl0IGBjb25zdGAsIHdoaWNoIGhl
bHBzIHByZXZlbnQgYWNjaWRlbnRhbCBjaGFuZ2VzIHRvIGl0cyB2YWx1ZSBhbmQKKyAgICBtYWtl
cyB0aGUgdGVzdHMgbW9yZSBvYnZpb3VzbHkgY29ycmVjdC4KKyogICBJbiBjYXNlIHdlIG5lZWQg
dG8gc3ViY2xhc3MgdGhlIHRlc3QgZml4dHVyZSBjbGFzcywgdGhlIHN1YmNsYXNzJworICAgIGNv
bnN0cnVjdG9yIGlzIGd1YXJhbnRlZWQgdG8gY2FsbCB0aGUgYmFzZSBjbGFzcycgY29uc3RydWN0
b3IgKmZpcnN0KiwgYW5kCisgICAgdGhlIHN1YmNsYXNzJyBkZXN0cnVjdG9yIGlzIGd1YXJhbnRl
ZWQgdG8gY2FsbCB0aGUgYmFzZSBjbGFzcycgZGVzdHJ1Y3RvcgorICAgICphZnRlcndhcmQqLiBX
aXRoIGBTZXRVcCgpL1RlYXJEb3duKClgLCBhIHN1YmNsYXNzIG1heSBtYWtlIHRoZSBtaXN0YWtl
IG9mCisgICAgZm9yZ2V0dGluZyB0byBjYWxsIHRoZSBiYXNlIGNsYXNzJyBgU2V0VXAoKS9UZWFy
RG93bigpYCBvciBjYWxsIHRoZW0gYXQgdGhlCisgICAgd3JvbmcgdGltZS4KKworWW91IG1heSBz
dGlsbCB3YW50IHRvIHVzZSBgU2V0VXAoKS9UZWFyRG93bigpYCBpbiB0aGUgZm9sbG93aW5nIHJh
cmUgY2FzZXM6CisKKyogICBJbiB0aGUgYm9keSBvZiBhIGNvbnN0cnVjdG9yIChvciBkZXN0cnVj
dG9yKSwgaXQncyBub3QgcG9zc2libGUgdG8gdXNlIHRoZQorICAgIGBBU1NFUlRfeHhgIG1hY3Jv
cy4gVGhlcmVmb3JlLCBpZiB0aGUgc2V0LXVwIG9wZXJhdGlvbiBjb3VsZCBjYXVzZSBhIGZhdGFs
CisgICAgdGVzdCBmYWlsdXJlIHRoYXQgc2hvdWxkIHByZXZlbnQgdGhlIHRlc3QgZnJvbSBydW5u
aW5nLCBpdCdzIG5lY2Vzc2FyeSB0bworICAgIHVzZSBhIGBDSEVDS2AgbWFjcm8gb3IgdG8gdXNl
IGBTZXRVcCgpYCBpbnN0ZWFkIG9mIGEgY29uc3RydWN0b3IuCisqICAgSWYgdGhlIHRlYXItZG93
biBvcGVyYXRpb24gY291bGQgdGhyb3cgYW4gZXhjZXB0aW9uLCB5b3UgbXVzdCB1c2UKKyAgICBg
VGVhckRvd24oKWAgYXMgb3Bwb3NlZCB0byB0aGUgZGVzdHJ1Y3RvciwgYXMgdGhyb3dpbmcgaW4g
YSBkZXN0cnVjdG9yIGxlYWRzCisgICAgdG8gdW5kZWZpbmVkIGJlaGF2aW9yIGFuZCB1c3VhbGx5
IHdpbGwga2lsbCB5b3VyIHByb2dyYW0gcmlnaHQgYXdheS4gTm90ZQorICAgIHRoYXQgbWFueSBz
dGFuZGFyZCBsaWJyYXJpZXMgKGxpa2UgU1RMKSBtYXkgdGhyb3cgd2hlbiBleGNlcHRpb25zIGFy
ZQorICAgIGVuYWJsZWQgaW4gdGhlIGNvbXBpbGVyLiBUaGVyZWZvcmUgeW91IHNob3VsZCBwcmVm
ZXIgYFRlYXJEb3duKClgIGlmIHlvdQorICAgIHdhbnQgdG8gd3JpdGUgcG9ydGFibGUgdGVzdHMg
dGhhdCB3b3JrIHdpdGggb3Igd2l0aG91dCBleGNlcHRpb25zLgorKiAgIFRoZSBnb29nbGV0ZXN0
IHRlYW0gaXMgY29uc2lkZXJpbmcgbWFraW5nIHRoZSBhc3NlcnRpb24gbWFjcm9zIHRocm93IG9u
CisgICAgcGxhdGZvcm1zIHdoZXJlIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQgKGUuZy4gV2luZG93
cywgTWFjIE9TLCBhbmQgTGludXgKKyAgICBjbGllbnQtc2lkZSksIHdoaWNoIHdpbGwgZWxpbWlu
YXRlIHRoZSBuZWVkIGZvciB0aGUgdXNlciB0byBwcm9wYWdhdGUKKyAgICBmYWlsdXJlcyBmcm9t
IGEgc3Vicm91dGluZSB0byBpdHMgY2FsbGVyLiBUaGVyZWZvcmUsIHlvdSBzaG91bGRuJ3QgdXNl
CisgICAgZ29vZ2xldGVzdCBhc3NlcnRpb25zIGluIGEgZGVzdHJ1Y3RvciBpZiB5b3VyIGNvZGUg
Y291bGQgcnVuIG9uIHN1Y2ggYQorICAgIHBsYXRmb3JtLgorKiAgIEluIGEgY29uc3RydWN0b3Ig
b3IgZGVzdHJ1Y3RvciwgeW91IGNhbm5vdCBtYWtlIGEgdmlydHVhbCBmdW5jdGlvbiBjYWxsIG9u
CisgICAgdGhpcyBvYmplY3QuIChZb3UgY2FuIGNhbGwgYSBtZXRob2QgZGVjbGFyZWQgYXMgdmly
dHVhbCwgYnV0IGl0IHdpbGwgYmUKKyAgICBzdGF0aWNhbGx5IGJvdW5kLikgVGhlcmVmb3JlLCBp
ZiB5b3UgbmVlZCB0byBjYWxsIGEgbWV0aG9kIHRoYXQgd2lsbCBiZQorICAgIG92ZXJyaWRkZW4g
aW4gYSBkZXJpdmVkIGNsYXNzLCB5b3UgaGF2ZSB0byB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAu
CisKKworIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlucyAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gdG8g
Y2FsbCIgd2hlbiBJIHVzZSBBU1NFUlRfUFJFRCouIEhvdyBkbyBJIGZpeCBpdD8KKworSWYgdGhl
IHByZWRpY2F0ZSBmdW5jdGlvbiB5b3UgdXNlIGluIGBBU1NFUlRfUFJFRCpgIG9yIGBFWFBFQ1Rf
UFJFRCpgIGlzCitvdmVybG9hZGVkIG9yIGEgdGVtcGxhdGUsIHRoZSBjb21waWxlciB3aWxsIGhh
dmUgdHJvdWJsZSBmaWd1cmluZyBvdXQgd2hpY2gKK292ZXJsb2FkZWQgdmVyc2lvbiBpdCBzaG91
bGQgdXNlLiBgQVNTRVJUX1BSRURfRk9STUFUKmAgYW5kCitgRVhQRUNUX1BSRURfRk9STUFUKmAg
ZG9uJ3QgaGF2ZSB0aGlzIHByb2JsZW0uCisKK0lmIHlvdSBzZWUgdGhpcyBlcnJvciwgeW91IG1p
Z2h0IHdhbnQgdG8gc3dpdGNoIHRvCitgKEFTU0VSVHxFWFBFQ1QpX1BSRURfRk9STUFUKmAsIHdo
aWNoIHdpbGwgYWxzbyBnaXZlIHlvdSBhIGJldHRlciBmYWlsdXJlCittZXNzYWdlLiBJZiwgaG93
ZXZlciwgdGhhdCBpcyBub3QgYW4gb3B0aW9uLCB5b3UgY2FuIHJlc29sdmUgdGhlIHByb2JsZW0g
YnkKK2V4cGxpY2l0bHkgdGVsbGluZyB0aGUgY29tcGlsZXIgd2hpY2ggdmVyc2lvbiB0byBwaWNr
LgorCitGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgaGF2ZQorCitgYGBjKysKK2Jvb2wgSXNQb3Np
dGl2ZShpbnQgbikgeworICByZXR1cm4gbiA+IDA7Cit9CisKK2Jvb2wgSXNQb3NpdGl2ZShkb3Vi
bGUgeCkgeworICByZXR1cm4geCA+IDA7Cit9CitgYGAKKworeW91IHdpbGwgZ2V0IGEgY29tcGls
ZXIgZXJyb3IgaWYgeW91IHdyaXRlCisKK2BgYGMrKworRVhQRUNUX1BSRUQxKElzUG9zaXRpdmUs
IDUpOworYGBgCisKK0hvd2V2ZXIsIHRoaXMgd2lsbCB3b3JrOgorCitgYGBjKysKK0VYUEVDVF9Q
UkVEMShzdGF0aWNfY2FzdDxib29sICgqKShpbnQpPihJc1Bvc2l0aXZlKSwgNSk7CitgYGAKKwor
KFRoZSBzdHVmZiBpbnNpZGUgdGhlIGFuZ2xlZCBicmFja2V0cyBmb3IgdGhlIGBzdGF0aWNfY2Fz
dGAgb3BlcmF0b3IgaXMgdGhlIHR5cGUKK29mIHRoZSBmdW5jdGlvbiBwb2ludGVyIGZvciB0aGUg
YGludGAtdmVyc2lvbiBvZiBgSXNQb3NpdGl2ZSgpYC4pCisKK0FzIGFub3RoZXIgZXhhbXBsZSwg
d2hlbiB5b3UgaGF2ZSBhIHRlbXBsYXRlIGZ1bmN0aW9uCisKK2BgYGMrKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Citib29sIElzTmVnYXRpdmUoVCB4KSB7CisgIHJldHVybiB4IDwgMDsKK30KK2Bg
YAorCit5b3UgY2FuIHVzZSBpdCBpbiBhIHByZWRpY2F0ZSBhc3NlcnRpb24gbGlrZSB0aGlzOgor
CitgYGBjKysKK0FTU0VSVF9QUkVEMShJc05lZ2F0aXZlPGludD4sIC01KTsKK2BgYAorCitUaGlu
Z3MgYXJlIG1vcmUgaW50ZXJlc3RpbmcgaWYgeW91ciB0ZW1wbGF0ZSBoYXMgbW9yZSB0aGFuIG9u
ZSBwYXJhbWV0ZXJzLiBUaGUKK2ZvbGxvd2luZyB3b24ndCBjb21waWxlOgorCitgYGBjKysKK0FT
U0VSVF9QUkVEMihHcmVhdGVyVGhhbjxpbnQsIGludD4sIDUsIDApOworYGBgCisKK2FzIHRoZSBD
KysgcHJlLXByb2Nlc3NvciB0aGlua3MgeW91IGFyZSBnaXZpbmcgYEFTU0VSVF9QUkVEMmAgNCBh
cmd1bWVudHMsIHdoaWNoCitpcyBvbmUgbW9yZSB0aGFuIGV4cGVjdGVkLiBUaGUgd29ya2Fyb3Vu
ZCBpcyB0byB3cmFwIHRoZSBwcmVkaWNhdGUgZnVuY3Rpb24gaW4KK3BhcmVudGhlc2VzOgorCitg
YGBjKysKK0FTU0VSVF9QUkVEMigoR3JlYXRlclRoYW48aW50LCBpbnQ+KSwgNSwgMCk7CitgYGAK
KworCisjIyBNeSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgImlnbm9yaW5nIHJldHVybiB2YWx1
ZSIgd2hlbiBJIGNhbGwgUlVOX0FMTF9URVNUUygpLiBXaHk/CisKK1NvbWUgcGVvcGxlIGhhZCBi
ZWVuIGlnbm9yaW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAuIFRoYXQg
aXMsCitpbnN0ZWFkIG9mCisKK2BgYGMrKworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworYGBg
CisKK3RoZXkgd3JpdGUKKworYGBgYysrCisgIFJVTl9BTExfVEVTVFMoKTsKK2BgYAorCitUaGlz
IGlzICoqd3JvbmcgYW5kIGRhbmdlcm91cyoqLiBUaGUgdGVzdGluZyBzZXJ2aWNlcyBuZWVkcyB0
byBzZWUgdGhlIHJldHVybgordmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAgaW4gb3JkZXIgdG8g
ZGV0ZXJtaW5lIGlmIGEgdGVzdCBoYXMgcGFzc2VkLiBJZiB5b3VyCitgbWFpbigpYCBmdW5jdGlv
biBpZ25vcmVzIGl0LCB5b3VyIHRlc3Qgd2lsbCBiZSBjb25zaWRlcmVkIHN1Y2Nlc3NmdWwgZXZl
biBpZiBpdAoraGFzIGEgZ29vZ2xldGVzdCBhc3NlcnRpb24gZmFpbHVyZS4gVmVyeSBiYWQuCisK
K1dlIGhhdmUgZGVjaWRlZCB0byBmaXggdGhpcyAodGhhbmtzIHRvIE1pY2hhZWwgQ2hhc3RhaW4g
Zm9yIHRoZSBpZGVhKS4gTm93LCB5b3VyCitjb2RlIHdpbGwgbm8gbG9uZ2VyIGJlIGFibGUgdG8g
aWdub3JlIGBSVU5fQUxMX1RFU1RTKClgIHdoZW4gY29tcGlsZWQgd2l0aAorYGdjY2AuIElmIHlv
dSBkbyBzbywgeW91J2xsIGdldCBhIGNvbXBpbGVyIGVycm9yLgorCitJZiB5b3Ugc2VlIHRoZSBj
b21waWxlciBjb21wbGFpbmluZyBhYm91dCB5b3UgaWdub3JpbmcgdGhlIHJldHVybiB2YWx1ZSBv
ZgorYFJVTl9BTExfVEVTVFMoKWAsIHRoZSBmaXggaXMgc2ltcGxlOiBqdXN0IG1ha2Ugc3VyZSBp
dHMgdmFsdWUgaXMgdXNlZCBhcyB0aGUKK3JldHVybiB2YWx1ZSBvZiBgbWFpbigpYC4KKworQnV0
IGhvdyBjb3VsZCB3ZSBpbnRyb2R1Y2UgYSBjaGFuZ2UgdGhhdCBicmVha3MgZXhpc3RpbmcgdGVz
dHM/IFdlbGwsIGluIHRoaXMKK2Nhc2UsIHRoZSBjb2RlIHdhcyBhbHJlYWR5IGJyb2tlbiBpbiB0
aGUgZmlyc3QgcGxhY2UsIHNvIHdlIGRpZG4ndCBicmVhayBpdC4gOi0pCisKKyMjIE15IGNvbXBp
bGVyIGNvbXBsYWlucyB0aGF0IGEgY29uc3RydWN0b3IgKG9yIGRlc3RydWN0b3IpIGNhbm5vdCBy
ZXR1cm4gYSB2YWx1ZS4gV2hhdCdzIGdvaW5nIG9uPworCitEdWUgdG8gYSBwZWN1bGlhcml0eSBv
ZiBDKyssIGluIG9yZGVyIHRvIHN1cHBvcnQgdGhlIHN5bnRheCBmb3Igc3RyZWFtaW5nCittZXNz
YWdlcyB0byBhbiBgQVNTRVJUXypgLCBlLmcuCisKK2BgYGMrKworICBBU1NFUlRfRVEoMSwgRm9v
KCkpIDw8ICJibGFoIGJsYWgiIDw8IGZvbzsKK2BgYAorCit3ZSBoYWQgdG8gZ2l2ZSB1cCB1c2lu
ZyBgQVNTRVJUKmAgYW5kIGBGQUlMKmAgKGJ1dCBub3QgYEVYUEVDVCpgIGFuZAorYEFERF9GQUlM
VVJFKmApIGluIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMuIFRoZSB3b3JrYXJvdW5kIGlz
IHRvIG1vdmUgdGhlCitjb250ZW50IG9mIHlvdXIgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciB0byBh
IHByaXZhdGUgdm9pZCBtZW1iZXIgZnVuY3Rpb24sIG9yCitzd2l0Y2ggdG8gYEVYUEVDVF8qKClg
IGlmIHRoYXQgd29ya3MuIFRoaXMKK1tzZWN0aW9uXShhZHZhbmNlZC5tZCNhc3NlcnRpb24tcGxh
Y2VtZW50KSBpbiB0aGUgdXNlcidzIGd1aWRlIGV4cGxhaW5zIGl0LgorCisjIyBNeSBTZXRVcCgp
IGZ1bmN0aW9uIGlzIG5vdCBjYWxsZWQuIFdoeT8KKworQysrIGlzIGNhc2Utc2Vuc2l0aXZlLiBE
aWQgeW91IHNwZWxsIGl0IGFzIGBTZXR1cCgpYD8KKworU2ltaWxhcmx5LCBzb21ldGltZXMgcGVv
cGxlIHNwZWxsIGBTZXRVcFRlc3RDYXNlKClgIGFzIGBTZXR1cFRlc3RDYXNlKClgIGFuZAord29u
ZGVyIHdoeSBpdCdzIG5ldmVyIGNhbGxlZC4KKworIyMgSG93IGRvIEkganVtcCB0byB0aGUgbGlu
ZSBvZiBhIGZhaWx1cmUgaW4gRW1hY3MgZGlyZWN0bHk/CisKK2dvb2dsZXRlc3QncyBmYWlsdXJl
IG1lc3NhZ2UgZm9ybWF0IGlzIHVuZGVyc3Rvb2QgYnkgRW1hY3MgYW5kIG1hbnkgb3RoZXIgSURF
cywKK2xpa2UgYWNtZSBhbmQgWENvZGUuIElmIGEgZ29vZ2xldGVzdCBtZXNzYWdlIGlzIGluIGEg
Y29tcGlsYXRpb24gYnVmZmVyIGluCitFbWFjcywgdGhlbiBpdCdzIGNsaWNrYWJsZS4KKworCisj
IyBJIGhhdmUgc2V2ZXJhbCB0ZXN0IGNhc2VzIHdoaWNoIHNoYXJlIHRoZSBzYW1lIHRlc3QgZml4
dHVyZSBsb2dpYywgZG8gSSBoYXZlIHRvIGRlZmluZSBhIG5ldyB0ZXN0IGZpeHR1cmUgY2xhc3Mg
Zm9yIGVhY2ggb2YgdGhlbT8gVGhpcyBzZWVtcyBwcmV0dHkgdGVkaW91cy4KKworWW91IGRvbid0
IGhhdmUgdG8uIEluc3RlYWQgb2YKKworYGBgYysrCitjbGFzcyBGb29UZXN0IDogcHVibGljIEJh
c2VUZXN0IHt9OworCitURVNUX0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0YoRm9vVGVz
dCwgRGVmKSB7IC4uLiB9CisKK2NsYXNzIEJhclRlc3QgOiBwdWJsaWMgQmFzZVRlc3Qge307CisK
K1RFU1RfRihCYXJUZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihCYXJUZXN0LCBEZWYpIHsgLi4u
IH0KK2BgYAorCit5b3UgY2FuIHNpbXBseSBgdHlwZWRlZmAgdGhlIHRlc3QgZml4dHVyZXM6CisK
K2BgYGMrKwordHlwZWRlZiBCYXNlVGVzdCBGb29UZXN0OworCitURVNUX0YoRm9vVGVzdCwgQWJj
KSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9CisKK3R5cGVkZWYgQmFzZVRl
c3QgQmFyVGVzdDsKKworVEVTVF9GKEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRl
c3QsIERlZikgeyAuLi4gfQorYGBgCisKKyMjIGdvb2dsZXRlc3Qgb3V0cHV0IGlzIGJ1cmllZCBp
biBhIHdob2xlIGJ1bmNoIG9mIExPRyBtZXNzYWdlcy4gV2hhdCBkbyBJIGRvPworCitUaGUgZ29v
Z2xldGVzdCBvdXRwdXQgaXMgbWVhbnQgdG8gYmUgYSBjb25jaXNlIGFuZCBodW1hbi1mcmllbmRs
eSByZXBvcnQuIElmCit5b3VyIHRlc3QgZ2VuZXJhdGVzIHRleHR1YWwgb3V0cHV0IGl0c2VsZiwg
aXQgd2lsbCBtaXggd2l0aCB0aGUgZ29vZ2xldGVzdAorb3V0cHV0LCBtYWtpbmcgaXQgaGFyZCB0
byByZWFkLiBIb3dldmVyLCB0aGVyZSBpcyBhbiBlYXN5IHNvbHV0aW9uIHRvIHRoaXMKK3Byb2Js
ZW0uCisKK1NpbmNlIGBMT0dgIG1lc3NhZ2VzIGdvIHRvIHN0ZGVyciwgd2UgZGVjaWRlZCB0byBs
ZXQgZ29vZ2xldGVzdCBvdXRwdXQgZ28gdG8KK3N0ZG91dC4gVGhpcyB3YXksIHlvdSBjYW4gZWFz
aWx5IHNlcGFyYXRlIHRoZSB0d28gdXNpbmcgcmVkaXJlY3Rpb24uIEZvcgorZXhhbXBsZToKKwor
YGBgc2hlbGwKKyQgLi9teV90ZXN0ID4gZ3Rlc3Rfb3V0cHV0LnR4dAorYGBgCisKKworIyMgV2h5
IHNob3VsZCBJIHByZWZlciB0ZXN0IGZpeHR1cmVzIG92ZXIgZ2xvYmFsIHZhcmlhYmxlcz8KKwor
VGhlcmUgYXJlIHNldmVyYWwgZ29vZCByZWFzb25zOgorCisxLiAgSXQncyBsaWtlbHkgeW91ciB0
ZXN0IG5lZWRzIHRvIGNoYW5nZSB0aGUgc3RhdGVzIG9mIGl0cyBnbG9iYWwgdmFyaWFibGVzLgor
ICAgIFRoaXMgbWFrZXMgaXQgZGlmZmljdWx0IHRvIGtlZXAgc2lkZSBlZmZlY3RzIGZyb20gZXNj
YXBpbmcgb25lIHRlc3QgYW5kCisgICAgY29udGFtaW5hdGluZyBvdGhlcnMsIG1ha2luZyBkZWJ1
Z2dpbmcgZGlmZmljdWx0LiBCeSB1c2luZyBmaXh0dXJlcywgZWFjaAorICAgIHRlc3QgaGFzIGEg
ZnJlc2ggc2V0IG9mIHZhcmlhYmxlcyB0aGF0J3MgZGlmZmVyZW50IChidXQgd2l0aCB0aGUgc2Ft
ZQorICAgIG5hbWVzKS4gVGh1cywgdGVzdHMgYXJlIGtlcHQgaW5kZXBlbmRlbnQgb2YgZWFjaCBv
dGhlci4KKzEuICBHbG9iYWwgdmFyaWFibGVzIHBvbGx1dGUgdGhlIGdsb2JhbCBuYW1lc3BhY2Uu
CisxLiAgVGVzdCBmaXh0dXJlcyBjYW4gYmUgcmV1c2VkIHZpYSBzdWJjbGFzc2luZywgd2hpY2gg
Y2Fubm90IGJlIGRvbmUgZWFzaWx5CisgICAgd2l0aCBnbG9iYWwgdmFyaWFibGVzLiBUaGlzIGlz
IHVzZWZ1bCBpZiBtYW55IHRlc3QgY2FzZXMgaGF2ZSBzb21ldGhpbmcgaW4KKyAgICBjb21tb24u
CisKKworICAgICMjIFdoYXQgY2FuIHRoZSBzdGF0ZW1lbnQgYXJndW1lbnQgaW4gQVNTRVJUX0RF
QVRIKCkgYmU/CisKK2BBU1NFUlRfREVBVEgoKnN0YXRlbWVudCosICpyZWdleCopYCAob3IgYW55
IGRlYXRoIGFzc2VydGlvbiBtYWNybykgY2FuIGJlIHVzZWQKK3doZXJldmVyIGAqc3RhdGVtZW50
KmAgaXMgdmFsaWQuIFNvIGJhc2ljYWxseSBgKnN0YXRlbWVudCpgIGNhbiBiZSBhbnkgQysrCitz
dGF0ZW1lbnQgdGhhdCBtYWtlcyBzZW5zZSBpbiB0aGUgY3VycmVudCBjb250ZXh0LiBJbiBwYXJ0
aWN1bGFyLCBpdCBjYW4KK3JlZmVyZW5jZSBnbG9iYWwgYW5kL29yIGxvY2FsIHZhcmlhYmxlcywg
YW5kIGNhbiBiZToKKworKiAgIGEgc2ltcGxlIGZ1bmN0aW9uIGNhbGwgKG9mdGVuIHRoZSBjYXNl
KSwKKyogICBhIGNvbXBsZXggZXhwcmVzc2lvbiwgb3IKKyogICBhIGNvbXBvdW5kIHN0YXRlbWVu
dC4KKworU29tZSBleGFtcGxlcyBhcmUgc2hvd24gaGVyZToKKworYGBgYysrCisvLyBBIGRlYXRo
IHRlc3QgY2FuIGJlIGEgc2ltcGxlIGZ1bmN0aW9uIGNhbGwuCitURVNUKE15RGVhdGhUZXN0LCBG
dW5jdGlvbkNhbGwpIHsKKyAgQVNTRVJUX0RFQVRIKFh5eig1KSwgIlh5eiBmYWlsZWQiKTsKK30K
KworLy8gT3IgYSBjb21wbGV4IGV4cHJlc3Npb24gdGhhdCByZWZlcmVuY2VzIHZhcmlhYmxlcyBh
bmQgZnVuY3Rpb25zLgorVEVTVChNeURlYXRoVGVzdCwgQ29tcGxleEV4cHJlc3Npb24pIHsKKyAg
Y29uc3QgYm9vbCBjID0gQ29uZGl0aW9uKCk7CisgIEFTU0VSVF9ERUFUSCgoYyA/IEZ1bmMxKDAp
IDogb2JqZWN0Mi5NZXRob2QoInRlc3QiKSksCisgICAgICAgICAgICAgICAiKEZ1bmMxfE1ldGhv
ZCkgZmFpbGVkIik7Cit9CisKKy8vIERlYXRoIGFzc2VydGlvbnMgY2FuIGJlIHVzZWQgYW55IHdo
ZXJlIGluIGEgZnVuY3Rpb24uICBJbgorLy8gcGFydGljdWxhciwgdGhleSBjYW4gYmUgaW5zaWRl
IGEgbG9vcC4KK1RFU1QoTXlEZWF0aFRlc3QsIEluc2lkZUxvb3ApIHsKKyAgLy8gVmVyaWZpZXMg
dGhhdCBGb28oMCksIEZvbygxKSwgLi4uLCBhbmQgRm9vKDQpIGFsbCBkaWUuCisgIGZvciAoaW50
IGkgPSAwOyBpIDwgNTsgaSsrKSB7CisgICAgRVhQRUNUX0RFQVRIX00oRm9vKGkpLCAiRm9vIGhh
cyBcXGQrIGVycm9ycyIsCisgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpNZXNzYWdlKCkg
PDwgIndoZXJlIGkgaXMgIiA8PCBpKTsKKyAgfQorfQorCisvLyBBIGRlYXRoIGFzc2VydGlvbiBj
YW4gY29udGFpbiBhIGNvbXBvdW5kIHN0YXRlbWVudC4KK1RFU1QoTXlEZWF0aFRlc3QsIENvbXBv
dW5kU3RhdGVtZW50KSB7CisgIC8vIFZlcmlmaWVzIHRoYXQgYXQgbGVhc2Ugb25lIG9mIEJhcigw
KSwgQmFyKDEpLCAuLi4sIGFuZAorICAvLyBCYXIoNCkgZGllcy4KKyAgQVNTRVJUX0RFQVRIKHsK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgeworICAgICAgQmFyKGkpOworICAgIH0K
KyAgfSwKKyAgIkJhciBoYXMgXFxkKyBlcnJvcnMiKTsKK30KK2BgYAorCitndGVzdC1kZWF0aC10
ZXN0X3Rlc3QuY2MgY29udGFpbnMgbW9yZSBleGFtcGxlcyBpZiB5b3UgYXJlIGludGVyZXN0ZWQu
CisKKyMjIEkgaGF2ZSBhIGZpeHR1cmUgY2xhc3MgYEZvb1Rlc3RgLCBidXQgYFRFU1RfRihGb29U
ZXN0LCBCYXIpYCBnaXZlcyBtZSBlcnJvciBgYCJubyBtYXRjaGluZyBmdW5jdGlvbiBmb3IgY2Fs
bCB0byBgRm9vVGVzdDo6Rm9vVGVzdCgpJyJgYC4gV2h5PworCitHb29nbGV0ZXN0IG5lZWRzIHRv
IGJlIGFibGUgdG8gY3JlYXRlIG9iamVjdHMgb2YgeW91ciB0ZXN0IGZpeHR1cmUgY2xhc3MsIHNv
IGl0CittdXN0IGhhdmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLiBOb3JtYWxseSB0aGUgY29tcGls
ZXIgd2lsbCBkZWZpbmUgb25lIGZvciB5b3UuCitIb3dldmVyLCB0aGVyZSBhcmUgY2FzZXMgd2hl
cmUgeW91IGhhdmUgdG8gZGVmaW5lIHlvdXIgb3duOgorCisqICAgSWYgeW91IGV4cGxpY2l0bHkg
ZGVjbGFyZSBhIG5vbi1kZWZhdWx0IGNvbnN0cnVjdG9yIGZvciBjbGFzcyBgRm9vVGVzdGAKKyAg
ICAoYERJU0FMTE9XX0VWSUxfQ09OU1RSVUNUT1JTKClgIGRvZXMgdGhpcyksIHRoZW4geW91IG5l
ZWQgdG8gZGVmaW5lIGEKKyAgICBkZWZhdWx0IGNvbnN0cnVjdG9yLCBldmVuIGlmIGl0IHdvdWxk
IGJlIGVtcHR5LgorKiAgIElmIGBGb29UZXN0YCBoYXMgYSBjb25zdCBub24tc3RhdGljIGRhdGEg
bWVtYmVyLCB0aGVuIHlvdSBoYXZlIHRvIGRlZmluZSB0aGUKKyAgICBkZWZhdWx0IGNvbnN0cnVj
dG9yICphbmQqIGluaXRpYWxpemUgdGhlIGNvbnN0IG1lbWJlciBpbiB0aGUgaW5pdGlhbGl6ZXIK
KyAgICBsaXN0IG9mIHRoZSBjb25zdHJ1Y3Rvci4gKEVhcmx5IHZlcnNpb25zIG9mIGBnY2NgIGRv
ZXNuJ3QgZm9yY2UgeW91IHRvCisgICAgaW5pdGlhbGl6ZSB0aGUgY29uc3QgbWVtYmVyLiBJdCdz
IGEgYnVnIHRoYXQgaGFzIGJlZW4gZml4ZWQgaW4gYGdjYyA0YC4pCisKKyMjIFdoeSBkb2VzIEFT
U0VSVF9ERUFUSCBjb21wbGFpbiBhYm91dCBwcmV2aW91cyB0aHJlYWRzIHRoYXQgd2VyZSBhbHJl
YWR5IGpvaW5lZD8KKworV2l0aCB0aGUgTGludXggcHRocmVhZCBsaWJyYXJ5LCB0aGVyZSBpcyBu
byB0dXJuaW5nIGJhY2sgb25jZSB5b3UgY3Jvc3MgdGhlIGxpbmUKK2Zyb20gc2luZ2xlIHRocmVh
ZCB0byBtdWx0aXBsZSB0aHJlYWRzLiBUaGUgZmlyc3QgdGltZSB5b3UgY3JlYXRlIGEgdGhyZWFk
LCBhCittYW5hZ2VyIHRocmVhZCBpcyBjcmVhdGVkIGluIGFkZGl0aW9uLCBzbyB5b3UgZ2V0IDMs
IG5vdCAyLCB0aHJlYWRzLiBMYXRlciB3aGVuCit0aGUgdGhyZWFkIHlvdSBjcmVhdGUgam9pbnMg
dGhlIG1haW4gdGhyZWFkLCB0aGUgdGhyZWFkIGNvdW50IGRlY3JlbWVudHMgYnkgMSwKK2J1dCB0
aGUgbWFuYWdlciB0aHJlYWQgd2lsbCBuZXZlciBiZSBraWxsZWQsIHNvIHlvdSBzdGlsbCBoYXZl
IDIgdGhyZWFkcywgd2hpY2gKK21lYW5zIHlvdSBjYW5ub3Qgc2FmZWx5IHJ1biBhIGRlYXRoIHRl
c3QuCisKK1RoZSBuZXcgTlBUTCB0aHJlYWQgbGlicmFyeSBkb2Vzbid0IHN1ZmZlciBmcm9tIHRo
aXMgcHJvYmxlbSwgYXMgaXQgZG9lc24ndAorY3JlYXRlIGEgbWFuYWdlciB0aHJlYWQuIEhvd2V2
ZXIsIGlmIHlvdSBkb24ndCBjb250cm9sIHdoaWNoIG1hY2hpbmUgeW91ciB0ZXN0CitydW5zIG9u
LCB5b3Ugc2hvdWxkbid0IGRlcGVuZCBvbiB0aGlzLgorCisjIyBXaHkgZG9lcyBnb29nbGV0ZXN0
IHJlcXVpcmUgdGhlIGVudGlyZSB0ZXN0IGNhc2UsIGluc3RlYWQgb2YgaW5kaXZpZHVhbCB0ZXN0
cywgdG8gYmUgbmFtZWQgKkRlYXRoVGVzdCB3aGVuIGl0IHVzZXMgQVNTRVJUX0RFQVRIPworCitn
b29nbGV0ZXN0IGRvZXMgbm90IGludGVybGVhdmUgdGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBj
YXNlcy4gVGhhdCBpcywgaXQgcnVucworYWxsIHRlc3RzIGluIG9uZSB0ZXN0IGNhc2UgZmlyc3Qs
IGFuZCB0aGVuIHJ1bnMgYWxsIHRlc3RzIGluIHRoZSBuZXh0IHRlc3QgY2FzZSwKK2FuZCBzbyBv
bi4gZ29vZ2xldGVzdCBkb2VzIHRoaXMgYmVjYXVzZSBpdCBuZWVkcyB0byBzZXQgdXAgYSB0ZXN0
IGNhc2UgYmVmb3JlCit0aGUgZmlyc3QgdGVzdCBpbiBpdCBpcyBydW4sIGFuZCB0ZWFyIGl0IGRv
d24gYWZ0ZXJ3b3Jkcy4gU3BsaXR0aW5nIHVwIHRoZSB0ZXN0CitjYXNlIHdvdWxkIHJlcXVpcmUg
bXVsdGlwbGUgc2V0LXVwIGFuZCB0ZWFyLWRvd24gcHJvY2Vzc2VzLCB3aGljaCBpcyBpbmVmZmlj
aWVudAorYW5kIG1ha2VzIHRoZSBzZW1hbnRpY3MgdW5jbGVhbi4KKworSWYgd2Ugd2VyZSB0byBk
ZXRlcm1pbmUgdGhlIG9yZGVyIG9mIHRlc3RzIGJhc2VkIG9uIHRlc3QgbmFtZSBpbnN0ZWFkIG9m
IHRlc3QKK2Nhc2UgbmFtZSwgdGhlbiB3ZSB3b3VsZCBoYXZlIGEgcHJvYmxlbSB3aXRoIHRoZSBm
b2xsb3dpbmcgc2l0dWF0aW9uOgorCitgYGBjKysKK1RFU1RfRihGb29UZXN0LCBBYmNEZWF0aFRl
c3QpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBVdncpIHsgLi4uIH0KKworVEVTVF9GKEJhclRl
c3QsIERlZkRlYXRoVGVzdCkgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIFh5eikgeyAuLi4gfQor
YGBgCisKK1NpbmNlIGBGb29UZXN0LkFiY0RlYXRoVGVzdGAgbmVlZHMgdG8gcnVuIGJlZm9yZSBg
QmFyVGVzdC5YeXpgLCBhbmQgd2UgZG9uJ3QKK2ludGVybGVhdmUgdGVzdHMgZnJvbSBkaWZmZXJl
bnQgdGVzdCBjYXNlcywgd2UgbmVlZCB0byBydW4gYWxsIHRlc3RzIGluIHRoZQorYEZvb1Rlc3Rg
IGNhc2UgYmVmb3JlIHJ1bm5pbmcgYW55IHRlc3QgaW4gdGhlIGBCYXJUZXN0YCBjYXNlLiBUaGlz
IGNvbnRyYWRpY3RzCit3aXRoIHRoZSByZXF1aXJlbWVudCB0byBydW4gYEJhclRlc3QuRGVmRGVh
dGhUZXN0YCBiZWZvcmUgYEZvb1Rlc3QuVXZ3YC4KKworIyMgQnV0IEkgZG9uJ3QgbGlrZSBjYWxs
aW5nIG15IGVudGlyZSB0ZXN0IGNhc2UgXCpEZWF0aFRlc3Qgd2hlbiBpdCBjb250YWlucyBib3Ro
IGRlYXRoIHRlc3RzIGFuZCBub24tZGVhdGggdGVzdHMuIFdoYXQgZG8gSSBkbz8KKworWW91IGRv
bid0IGhhdmUgdG8sIGJ1dCBpZiB5b3UgbGlrZSwgeW91IG1heSBzcGxpdCB1cCB0aGUgdGVzdCBj
YXNlIGludG8KK2BGb29UZXN0YCBhbmQgYEZvb0RlYXRoVGVzdGAsIHdoZXJlIHRoZSBuYW1lcyBt
YWtlIGl0IGNsZWFyIHRoYXQgdGhleSBhcmUKK3JlbGF0ZWQ6CisKK2BgYGMrKworY2xhc3MgRm9v
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKKworVEVTVF9GKEZvb1Rlc3Qs
IEFiYykgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQorCit1c2luZyBGb29E
ZWF0aFRlc3QgPSBGb29UZXN0OworCitURVNUX0YoRm9vRGVhdGhUZXN0LCBVdncpIHsgLi4uIEVY
UEVDVF9ERUFUSCguLi4pIC4uLiB9CitURVNUX0YoRm9vRGVhdGhUZXN0LCBYeXopIHsgLi4uIEFT
U0VSVF9ERUFUSCguLi4pIC4uLiB9CitgYGAKKworIyMgZ29vZ2xldGVzdCBwcmludHMgdGhlIExP
RyBtZXNzYWdlcyBpbiBhIGRlYXRoIHRlc3QncyBjaGlsZCBwcm9jZXNzIG9ubHkgd2hlbiB0aGUg
dGVzdCBmYWlscy4gSG93IGNhbiBJIHNlZSB0aGUgTE9HIG1lc3NhZ2VzIHdoZW4gdGhlIGRlYXRo
IHRlc3Qgc3VjY2VlZHM/CisKK1ByaW50aW5nIHRoZSBMT0cgbWVzc2FnZXMgZ2VuZXJhdGVkIGJ5
IHRoZSBzdGF0ZW1lbnQgaW5zaWRlIGBFWFBFQ1RfREVBVEgoKWAKK21ha2VzIGl0IGhhcmRlciB0
byBzZWFyY2ggZm9yIHJlYWwgcHJvYmxlbXMgaW4gdGhlIHBhcmVudCdzIGxvZy4gVGhlcmVmb3Jl
LAorZ29vZ2xldGVzdCBvbmx5IHByaW50cyB0aGVtIHdoZW4gdGhlIGRlYXRoIHRlc3QgaGFzIGZh
aWxlZC4KKworSWYgeW91IHJlYWxseSBuZWVkIHRvIHNlZSBzdWNoIExPRyBtZXNzYWdlcywgYSB3
b3JrYXJvdW5kIGlzIHRvIHRlbXBvcmFyaWx5CiticmVhayB0aGUgZGVhdGggdGVzdCAoZS5nLiBi
eSBjaGFuZ2luZyB0aGUgcmVnZXggcGF0dGVybiBpdCBpcyBleHBlY3RlZCB0bworbWF0Y2gpLiBB
ZG1pdHRlZGx5LCB0aGlzIGlzIGEgaGFjay4gV2UnbGwgY29uc2lkZXIgYSBtb3JlIHBlcm1hbmVu
dCBzb2x1dGlvbgorYWZ0ZXIgdGhlIGZvcmstYW5kLWV4ZWMtc3R5bGUgZGVhdGggdGVzdHMgYXJl
IGltcGxlbWVudGVkLgorCisjIyBUaGUgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJubyBtYXRj
aCBmb3IgJ29wZXJhdG9yPDwnIiB3aGVuIEkgdXNlIGFuIGFzc2VydGlvbi4gV2hhdCBnaXZlcz8K
KworSWYgeW91IHVzZSBhIHVzZXItZGVmaW5lZCB0eXBlIGBGb29UeXBlYCBpbiBhbiBhc3NlcnRp
b24sIHlvdSBtdXN0IG1ha2Ugc3VyZQordGhlcmUgaXMgYW4gYHN0ZDo6b3N0cmVhbSYgb3BlcmF0
b3I8PChzdGQ6Om9zdHJlYW0mLCBjb25zdCBGb29UeXBlJilgIGZ1bmN0aW9uCitkZWZpbmVkIHN1
Y2ggdGhhdCB3ZSBjYW4gcHJpbnQgYSB2YWx1ZSBvZiBgRm9vVHlwZWAuCisKK0luIGFkZGl0aW9u
LCBpZiBgRm9vVHlwZWAgaXMgZGVjbGFyZWQgaW4gYSBuYW1lIHNwYWNlLCB0aGUgYDw8YCBvcGVy
YXRvciBhbHNvCituZWVkcyB0byBiZSBkZWZpbmVkIGluIHRoZSAqc2FtZSogbmFtZSBzcGFjZS4g
U2VlIGdvL3RvdHcvNDkgZm9yIGRldGFpbHMuCisKKyMjIEhvdyBkbyBJIHN1cHByZXNzIHRoZSBt
ZW1vcnkgbGVhayBtZXNzYWdlcyBvbiBXaW5kb3dzPworCitTaW5jZSB0aGUgc3RhdGljYWxseSBp
bml0aWFsaXplZCBnb29nbGV0ZXN0IHNpbmdsZXRvbiByZXF1aXJlcyBhbGxvY2F0aW9ucyBvbgor
dGhlIGhlYXAsIHRoZSBWaXN1YWwgQysrIG1lbW9yeSBsZWFrIGRldGVjdG9yIHdpbGwgcmVwb3J0
IG1lbW9yeSBsZWFrcyBhdCB0aGUKK2VuZCBvZiB0aGUgcHJvZ3JhbSBydW4uIFRoZSBlYXNpZXN0
IHdheSB0byBhdm9pZCB0aGlzIGlzIHRvIHVzZSB0aGUKK2BfQ3J0TWVtQ2hlY2twb2ludGAgYW5k
IGBfQ3J0TWVtRHVtcEFsbE9iamVjdHNTaW5jZWAgY2FsbHMgdG8gbm90IHJlcG9ydCBhbnkKK3N0
YXRpY2FsbHkgaW5pdGlhbGl6ZWQgaGVhcCBvYmplY3RzLiBTZWUgTVNETiBmb3IgbW9yZSBkZXRh
aWxzIGFuZCBhZGRpdGlvbmFsCitoZWFwIGNoZWNrL2RlYnVnIHJvdXRpbmVzLgorCisKKyMjIEhv
dyBjYW4gbXkgY29kZSBkZXRlY3QgaWYgaXQgaXMgcnVubmluZyBpbiBhIHRlc3Q/CisKK0lmIHlv
dSB3cml0ZSBjb2RlIHRoYXQgc25pZmZzIHdoZXRoZXIgaXQncyBydW5uaW5nIGluIGEgdGVzdCBh
bmQgZG9lcyBkaWZmZXJlbnQKK3RoaW5ncyBhY2NvcmRpbmdseSwgeW91IGFyZSBsZWFraW5nIHRl
c3Qtb25seSBsb2dpYyBpbnRvIHByb2R1Y3Rpb24gY29kZSBhbmQKK3RoZXJlIGlzIG5vIGVhc3kg
d2F5IHRvIGVuc3VyZSB0aGF0IHRoZSB0ZXN0LW9ubHkgY29kZSBwYXRocyBhcmVuJ3QgcnVuIGJ5
CittaXN0YWtlIGluIHByb2R1Y3Rpb24uIFN1Y2ggY2xldmVybmVzcyBhbHNvIGxlYWRzIHRvCitb
SGVpc2VuYnVnc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVpc2VuYnVnKS4gVGhl
cmVmb3JlIHdlIHN0cm9uZ2x5CithZHZpc2UgYWdhaW5zdCB0aGUgcHJhY3RpY2UsIGFuZCBnb29n
bGV0ZXN0IGRvZXNuJ3QgcHJvdmlkZSBhIHdheSB0byBkbyBpdC4KKworSW4gZ2VuZXJhbCwgdGhl
IHJlY29tbWVuZGVkIHdheSB0byBjYXVzZSB0aGUgY29kZSB0byBiZWhhdmUgZGlmZmVyZW50bHkg
dW5kZXIKK3Rlc3QgaXMgW0RlcGVuZGVuY3kgSW5qZWN0aW9uXShodHRwczovL2VuLndpa2lwZWRp
YS5vcmcvd2lraS9EZXBlbmRlbmN5X2luamVjdGlvbikuIFlvdSBjYW4gaW5qZWN0CitkaWZmZXJl
bnQgZnVuY3Rpb25hbGl0eSBmcm9tIHRoZSB0ZXN0IGFuZCBmcm9tIHRoZSBwcm9kdWN0aW9uIGNv
ZGUuIFNpbmNlIHlvdXIKK3Byb2R1Y3Rpb24gY29kZSBkb2Vzbid0IGxpbmsgaW4gdGhlIGZvci10
ZXN0IGxvZ2ljIGF0IGFsbCAodGhlCitbYHRlc3Rvbmx5YF0oaHR0cHM6Ly9kb2NzLmJhemVsLmJ1
aWxkL3ZlcnNpb25zL21hc3Rlci9iZS9jb21tb24tZGVmaW5pdGlvbnMuaHRtbCNjb21tb24udGVz
dG9ubHkpCithdHRyaWJ1dGUgZm9yIEJVSUxEIHRhcmdldHMgaGVscHMgdG8gZW5zdXJlIHRoYXQp
LCB0aGVyZSBpcyBubyBkYW5nZXIgaW4KK2FjY2lkZW50YWxseSBydW5uaW5nIGl0LgorCitIb3dl
dmVyLCBpZiB5b3UgKnJlYWxseSosICpyZWFsbHkqLCAqcmVhbGx5KiBoYXZlIG5vIGNob2ljZSwg
YW5kIGlmIHlvdSBmb2xsb3cKK3RoZSBydWxlIG9mIGVuZGluZyB5b3VyIHRlc3QgcHJvZ3JhbSBu
YW1lcyB3aXRoIGBfdGVzdGAsIHlvdSBjYW4gdXNlIHRoZQorKmhvcnJpYmxlKiBoYWNrIG9mIHNu
aWZmaW5nIHlvdXIgZXhlY3V0YWJsZSBuYW1lIChgYXJndlswXWAgaW4gYG1haW4oKWApIHRvIGtu
b3cKK3doZXRoZXIgdGhlIGNvZGUgaXMgdW5kZXIgdGVzdC4KKworCisjIyBIb3cgZG8gSSB0ZW1w
b3JhcmlseSBkaXNhYmxlIGEgdGVzdD8KKworSWYgeW91IGhhdmUgYSBicm9rZW4gdGVzdCB0aGF0
IHlvdSBjYW5ub3QgZml4IHJpZ2h0IGF3YXksIHlvdSBjYW4gYWRkIHRoZQorRElTQUJMRURfIHBy
ZWZpeCB0byBpdHMgbmFtZS4gVGhpcyB3aWxsIGV4Y2x1ZGUgaXQgZnJvbSBleGVjdXRpb24uIFRo
aXMgaXMKK2JldHRlciB0aGFuIGNvbW1lbnRpbmcgb3V0IHRoZSBjb2RlIG9yIHVzaW5nICNpZiAw
LCBhcyBkaXNhYmxlZCB0ZXN0cyBhcmUgc3RpbGwKK2NvbXBpbGVkIChhbmQgdGh1cyB3b24ndCBy
b3QpLgorCitUbyBpbmNsdWRlIGRpc2FibGVkIHRlc3RzIGluIHRlc3QgZXhlY3V0aW9uLCBqdXN0
IGludm9rZSB0aGUgdGVzdCBwcm9ncmFtIHdpdGgKK3RoZSAtLWd0ZXN0X2Fsc29fcnVuX2Rpc2Fi
bGVkX3Rlc3RzIGZsYWcuCisKKyMjIElzIGl0IE9LIGlmIEkgaGF2ZSB0d28gc2VwYXJhdGUgYFRF
U1QoRm9vLCBCYXIpYCB0ZXN0IG1ldGhvZHMgZGVmaW5lZCBpbiBkaWZmZXJlbnQgbmFtZXNwYWNl
cz8KKworWWVzLgorCitUaGUgcnVsZSBpcyAqKmFsbCB0ZXN0IG1ldGhvZHMgaW4gdGhlIHNhbWUg
dGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIGZpeHR1cmUKK2NsYXNzLioqIFRoaXMgbWVhbnMg
dGhhdCB0aGUgZm9sbG93aW5nIGlzICoqYWxsb3dlZCoqIGJlY2F1c2UgYm90aCB0ZXN0cyB1c2Ug
dGhlCitzYW1lIGZpeHR1cmUgY2xhc3MgKGA6OnRlc3Rpbmc6OlRlc3RgKS4KKworYGBgYysrCitu
YW1lc3BhY2UgZm9vIHsKK1RFU1QoQ29vbFRlc3QsIERvU29tZXRoaW5nKSB7CisgIFNVQ0NFRUQo
KTsKK30KK30gIC8vIG5hbWVzcGFjZSBmb28KKworbmFtZXNwYWNlIGJhciB7CitURVNUKENvb2xU
ZXN0LCBEb1NvbWV0aGluZykgeworICBTVUNDRUVEKCk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgYmFy
CitgYGAKKworSG93ZXZlciwgdGhlIGZvbGxvd2luZyBjb2RlIGlzICoqbm90IGFsbG93ZWQqKiBh
bmQgd2lsbCBwcm9kdWNlIGEgcnVudGltZSBlcnJvcgorZnJvbSBnb29nbGV0ZXN0IGJlY2F1c2Ug
dGhlIHRlc3QgbWV0aG9kcyBhcmUgdXNpbmcgZGlmZmVyZW50IHRlc3QgZml4dHVyZQorY2xhc3Nl
cyB3aXRoIHRoZSBzYW1lIHRlc3QgY2FzZSBuYW1lLgorCitgYGBjKysKK25hbWVzcGFjZSBmb28g
eworY2xhc3MgQ29vbFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OyAgLy8gRml4dHVy
ZSBmb286OkNvb2xUZXN0CitURVNUX0YoQ29vbFRlc3QsIERvU29tZXRoaW5nKSB7CisgIFNVQ0NF
RUQoKTsKK30KK30gIC8vIG5hbWVzcGFjZSBmb28KKworbmFtZXNwYWNlIGJhciB7CitjbGFzcyBD
b29sVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307ICAvLyBGaXh0dXJlOiBiYXI6OkNv
b2xUZXN0CitURVNUX0YoQ29vbFRlc3QsIERvU29tZXRoaW5nKSB7CisgIFNVQ0NFRUQoKTsKK30K
K30gIC8vIG5hbWVzcGFjZSBiYXIKK2BgYApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvZG9jcy9wcmltZXIubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL3ByaW1l
ci5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43YThlYThkNzE3YjgzNWJjYmQyM2Y4NGM5ZWEwNWYxNmE4NzhhNWQ5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9wcmltZXIu
bWQKQEAgLTAsMCArMSw1NjkgQEAKKyMgR29vZ2xldGVzdCBQcmltZXIKKworCisjIyBJbnRyb2R1
Y3Rpb246IFdoeSBnb29nbGV0ZXN0PworCisqZ29vZ2xldGVzdCogaGVscHMgeW91IHdyaXRlIGJl
dHRlciBDKysgdGVzdHMuCisKK2dvb2dsZXRlc3QgaXMgYSB0ZXN0aW5nIGZyYW1ld29yayBkZXZl
bG9wZWQgYnkgdGhlIFRlc3RpbmcKK1RlY2hub2xvZ3kgdGVhbSB3aXRoIEdvb2dsZSdzIHNwZWNp
ZmljCityZXF1aXJlbWVudHMgYW5kIGNvbnN0cmFpbnRzIGluIG1pbmQuIE5vIG1hdHRlciB3aGV0
aGVyIHlvdSB3b3JrIG9uIExpbnV4LAorV2luZG93cywgb3IgYSBNYWMsIGlmIHlvdSB3cml0ZSBD
KysgY29kZSwgZ29vZ2xldGVzdCBjYW4gaGVscCB5b3UuIEFuZCBpdAorc3VwcG9ydHMgKmFueSog
a2luZCBvZiB0ZXN0cywgbm90IGp1c3QgdW5pdCB0ZXN0cy4KKworU28gd2hhdCBtYWtlcyBhIGdv
b2QgdGVzdCwgYW5kIGhvdyBkb2VzIGdvb2dsZXRlc3QgZml0IGluPyBXZSBiZWxpZXZlOgorCisx
LiAgVGVzdHMgc2hvdWxkIGJlICppbmRlcGVuZGVudCogYW5kICpyZXBlYXRhYmxlKi4gSXQncyBh
IHBhaW4gdG8gZGVidWcgYSB0ZXN0CisgICAgdGhhdCBzdWNjZWVkcyBvciBmYWlscyBhcyBhIHJl
c3VsdCBvZiBvdGhlciB0ZXN0cy4gZ29vZ2xldGVzdCBpc29sYXRlcyB0aGUKKyAgICB0ZXN0cyBi
eSBydW5uaW5nIGVhY2ggb2YgdGhlbSBvbiBhIGRpZmZlcmVudCBvYmplY3QuIFdoZW4gYSB0ZXN0
IGZhaWxzLAorICAgIGdvb2dsZXRlc3QgYWxsb3dzIHlvdSB0byBydW4gaXQgaW4gaXNvbGF0aW9u
IGZvciBxdWljayBkZWJ1Z2dpbmcuCisxLiAgVGVzdHMgc2hvdWxkIGJlIHdlbGwgKm9yZ2FuaXpl
ZCogYW5kIHJlZmxlY3QgdGhlIHN0cnVjdHVyZSBvZiB0aGUgdGVzdGVkCisgICAgY29kZS4gZ29v
Z2xldGVzdCBncm91cHMgcmVsYXRlZCB0ZXN0cyBpbnRvIHRlc3QgY2FzZXMgdGhhdCBjYW4gc2hh
cmUgZGF0YQorICAgIGFuZCBzdWJyb3V0aW5lcy4gVGhpcyBjb21tb24gcGF0dGVybiBpcyBlYXN5
IHRvIHJlY29nbml6ZSBhbmQgbWFrZXMgdGVzdHMKKyAgICBlYXN5IHRvIG1haW50YWluLiBTdWNo
IGNvbnNpc3RlbmN5IGlzIGVzcGVjaWFsbHkgaGVscGZ1bCB3aGVuIHBlb3BsZSBzd2l0Y2gKKyAg
ICBwcm9qZWN0cyBhbmQgc3RhcnQgdG8gd29yayBvbiBhIG5ldyBjb2RlIGJhc2UuCisxLiAgVGVz
dHMgc2hvdWxkIGJlICpwb3J0YWJsZSogYW5kICpyZXVzYWJsZSouIEdvb2dsZSBoYXMgYSBsb3Qg
b2YgY29kZSB0aGF0IGlzCisgICAgcGxhdGZvcm0tbmV1dHJhbCwgaXRzIHRlc3RzIHNob3VsZCBh
bHNvIGJlIHBsYXRmb3JtLW5ldXRyYWwuIGdvb2dsZXRlc3QKKyAgICB3b3JrcyBvbiBkaWZmZXJl
bnQgT1Nlcywgd2l0aCBkaWZmZXJlbnQgY29tcGlsZXJzIChnY2MsIGljYywgYW5kIE1TVkMpLCB3
aXRoCisgICAgb3Igd2l0aG91dCBleGNlcHRpb25zLCBzbyBnb29nbGV0ZXN0IHRlc3RzIGNhbiBl
YXNpbHkgd29yayB3aXRoIGEgdmFyaWV0eSBvZgorICAgIGNvbmZpZ3VyYXRpb25zLgorMS4gIFdo
ZW4gdGVzdHMgZmFpbCwgdGhleSBzaG91bGQgcHJvdmlkZSBhcyBtdWNoICppbmZvcm1hdGlvbiog
YWJvdXQgdGhlIHByb2JsZW0KKyAgICBhcyBwb3NzaWJsZS4gZ29vZ2xldGVzdCBkb2Vzbid0IHN0
b3AgYXQgdGhlIGZpcnN0IHRlc3QgZmFpbHVyZS4gSW5zdGVhZCwgaXQKKyAgICBvbmx5IHN0b3Bz
IHRoZSBjdXJyZW50IHRlc3QgYW5kIGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0LiBZb3UgY2FuIGFs
c28gc2V0IHVwCisgICAgdGVzdHMgdGhhdCByZXBvcnQgbm9uLWZhdGFsIGZhaWx1cmVzIGFmdGVy
IHdoaWNoIHRoZSBjdXJyZW50IHRlc3QgY29udGludWVzLgorICAgIFRodXMsIHlvdSBjYW4gZGV0
ZWN0IGFuZCBmaXggbXVsdGlwbGUgYnVncyBpbiBhIHNpbmdsZSBydW4tZWRpdC1jb21waWxlCisg
ICAgY3ljbGUuCisxLiAgVGhlIHRlc3RpbmcgZnJhbWV3b3JrIHNob3VsZCBsaWJlcmF0ZSB0ZXN0
IHdyaXRlcnMgZnJvbSBob3VzZWtlZXBpbmcgY2hvcmVzCisgICAgYW5kIGxldCB0aGVtIGZvY3Vz
IG9uIHRoZSB0ZXN0ICpjb250ZW50Ki4gZ29vZ2xldGVzdCBhdXRvbWF0aWNhbGx5IGtlZXBzCisg
ICAgdHJhY2sgb2YgYWxsIHRlc3RzIGRlZmluZWQsIGFuZCBkb2Vzbid0IHJlcXVpcmUgdGhlIHVz
ZXIgdG8gZW51bWVyYXRlIHRoZW0KKyAgICBpbiBvcmRlciB0byBydW4gdGhlbS4KKzEuICBUZXN0
cyBzaG91bGQgYmUgKmZhc3QqLiBXaXRoIGdvb2dsZXRlc3QsIHlvdSBjYW4gcmV1c2Ugc2hhcmVk
IHJlc291cmNlcworICAgIGFjcm9zcyB0ZXN0cyBhbmQgcGF5IGZvciB0aGUgc2V0LXVwL3RlYXIt
ZG93biBvbmx5IG9uY2UsIHdpdGhvdXQgbWFraW5nCisgICAgdGVzdHMgZGVwZW5kIG9uIGVhY2gg
b3RoZXIuCisKK1NpbmNlIGdvb2dsZXRlc3QgaXMgYmFzZWQgb24gdGhlIHBvcHVsYXIgeFVuaXQg
YXJjaGl0ZWN0dXJlLCB5b3UnbGwgZmVlbCByaWdodAorYXQgaG9tZSBpZiB5b3UndmUgdXNlZCBK
VW5pdCBvciBQeVVuaXQgYmVmb3JlLiBJZiBub3QsIGl0IHdpbGwgdGFrZSB5b3UgYWJvdXQgMTAK
K21pbnV0ZXMgdG8gbGVhcm4gdGhlIGJhc2ljcyBhbmQgZ2V0IHN0YXJ0ZWQuIFNvIGxldCdzIGdv
IQorCisjIyBCZXdhcmUgb2YgdGhlIG5vbWVuY2xhdHVyZQorCitfTm90ZTpfIFRoZXJlIG1pZ2h0
IGJlIHNvbWUgY29uZnVzaW9uIG9mIGlkZWEgZHVlIHRvIGRpZmZlcmVudAorZGVmaW5pdGlvbnMg
b2YgdGhlIHRlcm1zIF9UZXN0XywgX1Rlc3QgQ2FzZV8gYW5kIF9UZXN0IFN1aXRlXywgc28gYmV3
YXJlCitvZiBtaXN1bmRlcnN0YW5kaW5nIHRoZXNlLgorCitIaXN0b3JpY2FsbHksIGdvb2dsZXRl
c3Qgc3RhcnRlZCB0byB1c2UgdGhlIHRlcm0gX1Rlc3QgQ2FzZV8gZm9yIGdyb3VwaW5nCityZWxh
dGVkIHRlc3RzLCB3aGVyZWFzIGN1cnJlbnQgcHVibGljYXRpb25zIGluY2x1ZGluZyB0aGUgSW50
ZXJuYXRpb25hbCBTb2Z0d2FyZQorVGVzdGluZyBRdWFsaWZpY2F0aW9ucyBCb2FyZCAoW0lTVFFC
XShodHRwOi8vd3d3LmlzdHFiLm9yZy8pKSBhbmQgdmFyaW91cwordGV4dGJvb2tzIG9uIFNvZnR3
YXJlIFF1YWxpdHkgdXNlIHRoZSB0ZXJtIF9bVGVzdAorU3VpdGVdKGh0dHA6Ly9nbG9zc2FyeS5p
c3RxYi5vcmcvc2VhcmNoL3Rlc3QlMjBzdWl0ZSlfIGZvciB0aGlzLgorCitUaGUgcmVsYXRlZCB0
ZXJtIF9UZXN0XywgYXMgaXQgaXMgdXNlZCBpbiB0aGUgZ29vZ2xldGVzdCwgaXMgY29ycmVzcG9u
ZGluZyB0bwordGhlIHRlcm0gX1tUZXN0IENhc2VdKGh0dHA6Ly9nbG9zc2FyeS5pc3RxYi5vcmcv
c2VhcmNoL3Rlc3QlMjBjYXNlKV8gb2YgSVNUUUIKK2FuZCBvdGhlcnMuCisKK1RoZSB0ZXJtIF9U
ZXN0XyBpcyBjb21tb25seSBvZiBicm9hZCBlbm91Z2ggc2Vuc2UsIGluY2x1ZGluZyBJU1RRQidz
CitkZWZpbml0aW9uIG9mIF9UZXN0IENhc2VfLCBzbyBpdCdzIG5vdCBtdWNoIG9mIGEgcHJvYmxl
bSBoZXJlLiBCdXQgdGhlCit0ZXJtIF9UZXN0IENhc2VfIGFzIHVzZWQgaW4gR29vZ2xlIFRlc3Qg
aXMgb2YgY29udHJhZGljdG9yeSBzZW5zZSBhbmQgdGh1cyBjb25mdXNpbmcuCisKK1VuZm9ydHVu
YXRlbHkgcmVwbGFjaW5nIHRoZSB0ZXJtIF9UZXN0IENhc2VfIGJ5IF9UZXN0IFN1aXRlXyB0aHJv
dWdob3V0IHRoZQorZ29vZ2xldGVzdCBpcyBub3QgZWFzeSB3aXRob3V0IGJyZWFraW5nIGRlcGVu
ZGVudCBwcm9qZWN0cywgYXMgYFRlc3RDYXNlYCBpcworcGFydCBvZiB0aGUgcHVibGljIEFQSSBh
dCB2YXJpb3VzIHBsYWNlcy4KKworU28gZm9yIHRoZSB0aW1lIGJlaW5nLCBwbGVhc2UgYmUgYXdh
cmUgb2YgdGhlIGRpZmZlcmVudCBkZWZpbml0aW9ucyBvZgordGhlIHRlcm1zOgorCitNZWFuaW5n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCBnb29nbGV0ZXN0IFRlcm0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgW0lTVFFCXShodHRwOi8vd3d3LmlzdHFiLm9yZy8pIFRlcm0KKzot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorRXhlcmNpc2UgYSBwYXJ0aWN1bGFyIHByb2dyYW0gcGF0aCB3aXRoIHNwZWNpZmljIGlucHV0
IHZhbHVlcyBhbmQgdmVyaWZ5IHRoZSByZXN1bHRzIHwgW1RFU1QoKV0oI3NpbXBsZS10ZXN0cykg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtUZXN0IENhc2VdKGh0dHA6Ly9nbG9zc2FyeS5p
c3RxYi5vcmcvc2VhcmNoL3Rlc3QlMjBjYXNlKQorQSBzZXQgb2Ygc2V2ZXJhbCB0ZXN0cyByZWxh
dGVkIHRvIG9uZSBjb21wb25lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgW1Rlc3RDYXNlXSgjYmFzaWMtY29uY2VwdHMpIHwgW1Rlc3RTdWl0ZV0oaHR0cDovL2dsb3Nz
YXJ5LmlzdHFiLm9yZy9zZWFyY2gvdGVzdCUyMHN1aXRlKQorCisjIyBCYXNpYyBDb25jZXB0cwor
CitXaGVuIHVzaW5nIGdvb2dsZXRlc3QsIHlvdSBzdGFydCBieSB3cml0aW5nICphc3NlcnRpb25z
Kiwgd2hpY2ggYXJlIHN0YXRlbWVudHMKK3RoYXQgY2hlY2sgd2hldGhlciBhIGNvbmRpdGlvbiBp
cyB0cnVlLiBBbiBhc3NlcnRpb24ncyByZXN1bHQgY2FuIGJlICpzdWNjZXNzKiwKKypub25mYXRh
bCBmYWlsdXJlKiwgb3IgKmZhdGFsIGZhaWx1cmUqLiBJZiBhIGZhdGFsIGZhaWx1cmUgb2NjdXJz
LCBpdCBhYm9ydHMgdGhlCitjdXJyZW50IGZ1bmN0aW9uOyBvdGhlcndpc2UgdGhlIHByb2dyYW0g
Y29udGludWVzIG5vcm1hbGx5LgorCisqVGVzdHMqIHVzZSBhc3NlcnRpb25zIHRvIHZlcmlmeSB0
aGUgdGVzdGVkIGNvZGUncyBiZWhhdmlvci4gSWYgYSB0ZXN0IGNyYXNoZXMKK29yIGhhcyBhIGZh
aWxlZCBhc3NlcnRpb24sIHRoZW4gaXQgKmZhaWxzKjsgb3RoZXJ3aXNlIGl0ICpzdWNjZWVkcyou
CisKK0EgKnRlc3QgY2FzZSogY29udGFpbnMgb25lIG9yIG1hbnkgdGVzdHMuIFlvdSBzaG91bGQg
Z3JvdXAgeW91ciB0ZXN0cyBpbnRvIHRlc3QKK2Nhc2VzIHRoYXQgcmVmbGVjdCB0aGUgc3RydWN0
dXJlIG9mIHRoZSB0ZXN0ZWQgY29kZS4gV2hlbiBtdWx0aXBsZSB0ZXN0cyBpbiBhCit0ZXN0IGNh
c2UgbmVlZCB0byBzaGFyZSBjb21tb24gb2JqZWN0cyBhbmQgc3Vicm91dGluZXMsIHlvdSBjYW4g
cHV0IHRoZW0gaW50byBhCisqdGVzdCBmaXh0dXJlKiBjbGFzcy4KKworQSAqdGVzdCBwcm9ncmFt
KiBjYW4gY29udGFpbiBtdWx0aXBsZSB0ZXN0IGNhc2VzLgorCitXZSdsbCBub3cgZXhwbGFpbiBo
b3cgdG8gd3JpdGUgYSB0ZXN0IHByb2dyYW0sIHN0YXJ0aW5nIGF0IHRoZSBpbmRpdmlkdWFsCith
c3NlcnRpb24gbGV2ZWwgYW5kIGJ1aWxkaW5nIHVwIHRvIHRlc3RzIGFuZCB0ZXN0IGNhc2VzLgor
CisjIyBBc3NlcnRpb25zCisKK2dvb2dsZXRlc3QgYXNzZXJ0aW9ucyBhcmUgbWFjcm9zIHRoYXQg
cmVzZW1ibGUgZnVuY3Rpb24gY2FsbHMuIFlvdSB0ZXN0IGEgY2xhc3MKK29yIGZ1bmN0aW9uIGJ5
IG1ha2luZyBhc3NlcnRpb25zIGFib3V0IGl0cyBiZWhhdmlvci4gV2hlbiBhbiBhc3NlcnRpb24g
ZmFpbHMsCitnb29nbGV0ZXN0IHByaW50cyB0aGUgYXNzZXJ0aW9uJ3Mgc291cmNlIGZpbGUgYW5k
IGxpbmUgbnVtYmVyIGxvY2F0aW9uLCBhbG9uZword2l0aCBhIGZhaWx1cmUgbWVzc2FnZS4gWW91
IG1heSBhbHNvIHN1cHBseSBhIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2Ugd2hpY2ggd2lsbAorYmUg
YXBwZW5kZWQgdG8gZ29vZ2xldGVzdCdzIG1lc3NhZ2UuCisKK1RoZSBhc3NlcnRpb25zIGNvbWUg
aW4gcGFpcnMgdGhhdCB0ZXN0IHRoZSBzYW1lIHRoaW5nIGJ1dCBoYXZlIGRpZmZlcmVudCBlZmZl
Y3RzCitvbiB0aGUgY3VycmVudCBmdW5jdGlvbi4gYEFTU0VSVF8qYCB2ZXJzaW9ucyBnZW5lcmF0
ZSBmYXRhbCBmYWlsdXJlcyB3aGVuIHRoZXkKK2ZhaWwsIGFuZCAqKmFib3J0IHRoZSBjdXJyZW50
IGZ1bmN0aW9uKiouIGBFWFBFQ1RfKmAgdmVyc2lvbnMgZ2VuZXJhdGUgbm9uZmF0YWwKK2ZhaWx1
cmVzLCB3aGljaCBkb24ndCBhYm9ydCB0aGUgY3VycmVudCBmdW5jdGlvbi4gVXN1YWxseSBgRVhQ
RUNUXypgIGFyZQorcHJlZmVycmVkLCBhcyB0aGV5IGFsbG93IG1vcmUgdGhhbiBvbmUgZmFpbHVy
ZSB0byBiZSByZXBvcnRlZCBpbiBhIHRlc3QuCitIb3dldmVyLCB5b3Ugc2hvdWxkIHVzZSBgQVNT
RVJUXypgIGlmIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBjb250aW51ZSB3aGVuIHRoZQorYXNz
ZXJ0aW9uIGluIHF1ZXN0aW9uIGZhaWxzLgorCitTaW5jZSBhIGZhaWxlZCBgQVNTRVJUXypgIHJl
dHVybnMgZnJvbSB0aGUgY3VycmVudCBmdW5jdGlvbiBpbW1lZGlhdGVseSwKK3Bvc3NpYmx5IHNr
aXBwaW5nIGNsZWFuLXVwIGNvZGUgdGhhdCBjb21lcyBhZnRlciBpdCwgaXQgbWF5IGNhdXNlIGEg
c3BhY2UgbGVhay4KK0RlcGVuZGluZyBvbiB0aGUgbmF0dXJlIG9mIHRoZSBsZWFrLCBpdCBtYXkg
b3IgbWF5IG5vdCBiZSB3b3J0aCBmaXhpbmcgLSBzbyBrZWVwCit0aGlzIGluIG1pbmQgaWYgeW91
IGdldCBhIGhlYXAgY2hlY2tlciBlcnJvciBpbiBhZGRpdGlvbiB0byBhc3NlcnRpb24gZXJyb3Jz
LgorCitUbyBwcm92aWRlIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSwgc2ltcGx5IHN0cmVhbSBp
dCBpbnRvIHRoZSBtYWNybyB1c2luZyB0aGUKK2A8PGAgb3BlcmF0b3IsIG9yIGEgc2VxdWVuY2Ug
b2Ygc3VjaCBvcGVyYXRvcnMuIEFuIGV4YW1wbGU6CisKK2BgYGMrKworQVNTRVJUX0VRKHguc2l6
ZSgpLCB5LnNpemUoKSkgPDwgIlZlY3RvcnMgeCBhbmQgeSBhcmUgb2YgdW5lcXVhbCBsZW5ndGgi
OworCitmb3IgKGludCBpID0gMDsgaSA8IHguc2l6ZSgpOyArK2kpIHsKKyAgRVhQRUNUX0VRKHhb
aV0sIHlbaV0pIDw8ICJWZWN0b3JzIHggYW5kIHkgZGlmZmVyIGF0IGluZGV4ICIgPDwgaTsKK30K
K2BgYAorCitBbnl0aGluZyB0aGF0IGNhbiBiZSBzdHJlYW1lZCB0byBhbiBgb3N0cmVhbWAgY2Fu
IGJlIHN0cmVhbWVkIHRvIGFuIGFzc2VydGlvbgorbWFjcm8tLWluIHBhcnRpY3VsYXIsIEMgc3Ry
aW5ncyBhbmQgYHN0cmluZ2Agb2JqZWN0cy4gSWYgYSB3aWRlIHN0cmluZworKGB3Y2hhcl90KmAs
IGBUQ0hBUipgIGluIGBVTklDT0RFYCBtb2RlIG9uIFdpbmRvd3MsIG9yIGBzdGQ6OndzdHJpbmdg
KSBpcworc3RyZWFtZWQgdG8gYW4gYXNzZXJ0aW9uLCBpdCB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8g
VVRGLTggd2hlbiBwcmludGVkLgorCisjIyMgQmFzaWMgQXNzZXJ0aW9ucworCitUaGVzZSBhc3Nl
cnRpb25zIGRvIGJhc2ljIHRydWUvZmFsc2UgY29uZGl0aW9uIHRlc3RpbmcuCisKK0ZhdGFsIGFz
c2VydGlvbiAgICAgICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgICAgfCBWZXJpZmll
cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tCitgQVNTRVJUX1RSVUUoY29uZGl0aW9uKTtgICB8IGBF
WFBFQ1RfVFJVRShjb25kaXRpb24pO2AgIHwgYGNvbmRpdGlvbmAgaXMgdHJ1ZQorYEFTU0VSVF9G
QUxTRShjb25kaXRpb24pO2AgfCBgRVhQRUNUX0ZBTFNFKGNvbmRpdGlvbik7YCB8IGBjb25kaXRp
b25gIGlzIGZhbHNlCisKK1JlbWVtYmVyLCB3aGVuIHRoZXkgZmFpbCwgYEFTU0VSVF8qYCB5aWVs
ZHMgYSBmYXRhbCBmYWlsdXJlIGFuZCByZXR1cm5zIGZyb20gdGhlCitjdXJyZW50IGZ1bmN0aW9u
LCB3aGlsZSBgRVhQRUNUXypgIHlpZWxkcyBhIG5vbmZhdGFsIGZhaWx1cmUsIGFsbG93aW5nIHRo
ZQorZnVuY3Rpb24gdG8gY29udGludWUgcnVubmluZy4gSW4gZWl0aGVyIGNhc2UsIGFuIGFzc2Vy
dGlvbiBmYWlsdXJlIG1lYW5zIGl0cworY29udGFpbmluZyB0ZXN0IGZhaWxzLgorCisqKkF2YWls
YWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgQmluYXJ5IENvbXBhcmlzb24K
KworVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBhc3NlcnRpb25zIHRoYXQgY29tcGFyZSB0d28gdmFs
dWVzLgorCitGYXRhbCBhc3NlcnRpb24gICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAg
ICAgfCBWZXJpZmllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0KK2BBU1NFUlRfRVEodmFsMSwgdmFsMik7YCB8IGBF
WFBFQ1RfRVEodmFsMSwgdmFsMik7YCB8IGB2YWwxID09IHZhbDJgCitgQVNTRVJUX05FKHZhbDEs
IHZhbDIpO2AgfCBgRVhQRUNUX05FKHZhbDEsIHZhbDIpO2AgfCBgdmFsMSAhPSB2YWwyYAorYEFT
U0VSVF9MVCh2YWwxLCB2YWwyKTtgIHwgYEVYUEVDVF9MVCh2YWwxLCB2YWwyKTtgIHwgYHZhbDEg
PCB2YWwyYAorYEFTU0VSVF9MRSh2YWwxLCB2YWwyKTtgIHwgYEVYUEVDVF9MRSh2YWwxLCB2YWwy
KTtgIHwgYHZhbDEgPD0gdmFsMmAKK2BBU1NFUlRfR1QodmFsMSwgdmFsMik7YCB8IGBFWFBFQ1Rf
R1QodmFsMSwgdmFsMik7YCB8IGB2YWwxID4gdmFsMmAKK2BBU1NFUlRfR0UodmFsMSwgdmFsMik7
YCB8IGBFWFBFQ1RfR0UodmFsMSwgdmFsMik7YCB8IGB2YWwxID49IHZhbDJgCisKK1ZhbHVlIGFy
Z3VtZW50cyBtdXN0IGJlIGNvbXBhcmFibGUgYnkgdGhlIGFzc2VydGlvbidzIGNvbXBhcmlzb24g
b3BlcmF0b3Igb3IKK3lvdSdsbCBnZXQgYSBjb21waWxlciBlcnJvci4gV2UgdXNlZCB0byByZXF1
aXJlIHRoZSBhcmd1bWVudHMgdG8gc3VwcG9ydCB0aGUKK2A8PGAgb3BlcmF0b3IgZm9yIHN0cmVh
bWluZyB0byBhbiBgb3N0cmVhbWAsIGJ1dCBpdCdzIG5vIGxvbmdlciBuZWNlc3NhcnkuIElmCitg
PDxgIGlzIHN1cHBvcnRlZCwgaXQgd2lsbCBiZSBjYWxsZWQgdG8gcHJpbnQgdGhlIGFyZ3VtZW50
cyB3aGVuIHRoZSBhc3NlcnRpb24KK2ZhaWxzOyBvdGhlcndpc2UgZ29vZ2xldGVzdCB3aWxsIGF0
dGVtcHQgdG8gcHJpbnQgdGhlbSBpbiB0aGUgYmVzdCB3YXkgaXQgY2FuLgorRm9yIG1vcmUgZGV0
YWlscyBhbmQgaG93IHRvIGN1c3RvbWl6ZSB0aGUgcHJpbnRpbmcgb2YgdGhlIGFyZ3VtZW50cywg
c2VlCitnTW9jayBbcmVjaXBlXSguLi8uLi9nb29nbGVtb2NrL2RvY3MvQ29va0Jvb2subWQjdGVh
Y2hpbmctZ29vZ2xlLW1vY2staG93LXRvLXByaW50LXlvdXItdmFsdWVzKS4pLgorCitUaGVzZSBh
c3NlcnRpb25zIGNhbiB3b3JrIHdpdGggYSB1c2VyLWRlZmluZWQgdHlwZSwgYnV0IG9ubHkgaWYg
eW91IGRlZmluZSB0aGUKK2NvcnJlc3BvbmRpbmcgY29tcGFyaXNvbiBvcGVyYXRvciAoZS5nLiBg
PT1gLCBgPGAsIGV0YykuIFNpbmNlIHRoaXMgaXMKK2Rpc2NvdXJhZ2VkIGJ5IHRoZSBHb29nbGUg
W0MrKyBTdHlsZQorR3VpZGVdKGh0dHBzOi8vZ29vZ2xlLmdpdGh1Yi5pby9zdHlsZWd1aWRlL2Nw
cGd1aWRlLmh0bWwjT3BlcmF0b3JfT3ZlcmxvYWRpbmcpLAoreW91IG1heSBuZWVkIHRvIHVzZSBg
QVNTRVJUX1RSVUUoKWAgb3IgYEVYUEVDVF9UUlVFKClgIHRvIGFzc2VydCB0aGUgZXF1YWxpdHkg
b2YKK3R3byBvYmplY3RzIG9mIGEgdXNlci1kZWZpbmVkIHR5cGUuCisKK0hvd2V2ZXIsIHdoZW4g
cG9zc2libGUsIGBBU1NFUlRfRVEoYWN0dWFsLCBleHBlY3RlZClgIGlzIHByZWZlcnJlZCB0bwor
YEFTU0VSVF9UUlVFKGFjdHVhbCA9PSBleHBlY3RlZClgLCBzaW5jZSBpdCB0ZWxscyB5b3UgYGFj
dHVhbGAgYW5kIGBleHBlY3RlZGAncwordmFsdWVzIG9uIGZhaWx1cmUuCisKK0FyZ3VtZW50cyBh
cmUgYWx3YXlzIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuIFRoZXJlZm9yZSwgaXQncyBPSyBmb3Ig
dGhlCithcmd1bWVudHMgdG8gaGF2ZSBzaWRlIGVmZmVjdHMuIEhvd2V2ZXIsIGFzIHdpdGggYW55
IG9yZGluYXJ5IEMvQysrIGZ1bmN0aW9uLAordGhlIGFyZ3VtZW50cycgZXZhbHVhdGlvbiBvcmRl
ciBpcyB1bmRlZmluZWQgKGkuZS4gdGhlIGNvbXBpbGVyIGlzIGZyZWUgdG8KK2Nob29zZSBhbnkg
b3JkZXIpIGFuZCB5b3VyIGNvZGUgc2hvdWxkIG5vdCBkZXBlbmQgb24gYW55IHBhcnRpY3VsYXIg
YXJndW1lbnQKK2V2YWx1YXRpb24gb3JkZXIuCisKK2BBU1NFUlRfRVEoKWAgZG9lcyBwb2ludGVy
IGVxdWFsaXR5IG9uIHBvaW50ZXJzLiBJZiB1c2VkIG9uIHR3byBDIHN0cmluZ3MsIGl0Cit0ZXN0
cyBpZiB0aGV5IGFyZSBpbiB0aGUgc2FtZSBtZW1vcnkgbG9jYXRpb24sIG5vdCBpZiB0aGV5IGhh
dmUgdGhlIHNhbWUgdmFsdWUuCitUaGVyZWZvcmUsIGlmIHlvdSB3YW50IHRvIGNvbXBhcmUgQyBz
dHJpbmdzIChlLmcuIGBjb25zdCBjaGFyKmApIGJ5IHZhbHVlLCB1c2UKK2BBU1NFUlRfU1RSRVEo
KWAsIHdoaWNoIHdpbGwgYmUgZGVzY3JpYmVkIGxhdGVyIG9uLiBJbiBwYXJ0aWN1bGFyLCB0byBh
c3NlcnQKK3RoYXQgYSBDIHN0cmluZyBpcyBgTlVMTGAsIHVzZSBgQVNTRVJUX1NUUkVRKGNfc3Ry
aW5nLCBOVUxMKWAuIENvbnNpZGVyIHVzZQorYEFTU0VSVF9FUShjX3N0cmluZywgbnVsbHB0cilg
IGlmIGMrKzExIGlzIHN1cHBvcnRlZC4gVG8gY29tcGFyZSB0d28gYHN0cmluZ2AKK29iamVjdHMs
IHlvdSBzaG91bGQgdXNlIGBBU1NFUlRfRVFgLgorCitXaGVuIGRvaW5nIHBvaW50ZXIgY29tcGFy
aXNvbnMgdXNlIGAqX0VRKHB0ciwgbnVsbHB0cilgIGFuZCBgKl9ORShwdHIsIG51bGxwdHIpYAor
aW5zdGVhZCBvZiBgKl9FUShwdHIsIE5VTEwpYCBhbmQgYCpfTkUocHRyLCBOVUxMKWAuIFRoaXMg
aXMgYmVjYXVzZSBgbnVsbHB0cmAgaXMKK3R5cGVkIHdoaWxlIGBOVUxMYCBpcyBub3QuIFNlZSBb
RkFRXShmYXEubWQjd2h5LWRvZXMtZ29vZ2xlLXRlc3Qtc3VwcG9ydC1leHBlY3RfZXFudWxsLXB0
ci1hbmQtYXNzZXJ0X2VxbnVsbC1wdHItYnV0LW5vdC1leHBlY3RfbmVudWxsLXB0ci1hbmQtYXNz
ZXJ0X25lbnVsbC1wdHIpCitmb3IgbW9yZSBkZXRhaWxzLgorCitJZiB5b3UncmUgd29ya2luZyB3
aXRoIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIHlvdSBtYXkgd2FudCB0byB1c2UgdGhlIGZsb2F0
aW5nCitwb2ludCB2YXJpYXRpb25zIG9mIHNvbWUgb2YgdGhlc2UgbWFjcm9zIGluIG9yZGVyIHRv
IGF2b2lkIHByb2JsZW1zIGNhdXNlZCBieQorcm91bmRpbmcuIFNlZSBbQWR2YW5jZWQgZ29vZ2xl
dGVzdCBUb3BpY3NdKGFkdmFuY2VkLm1kKSBmb3IgZGV0YWlscy4KKworTWFjcm9zIGluIHRoaXMg
c2VjdGlvbiB3b3JrIHdpdGggYm90aCBuYXJyb3cgYW5kIHdpZGUgc3RyaW5nIG9iamVjdHMgKGBz
dHJpbmdgCithbmQgYHdzdHJpbmdgKS4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRv
d3MsIE1hYy4KKworKipIaXN0b3JpY2FsIG5vdGUqKjogQmVmb3JlIEZlYnJ1YXJ5IDIwMTYgYCpf
RVFgIGhhZCBhIGNvbnZlbnRpb24gb2YgY2FsbGluZyBpdAorYXMgYEFTU0VSVF9FUShleHBlY3Rl
ZCwgYWN0dWFsKWAsIHNvIGxvdHMgb2YgZXhpc3RpbmcgY29kZSB1c2VzIHRoaXMgb3JkZXIuIE5v
dworYCpfRVFgIHRyZWF0cyBib3RoIHBhcmFtZXRlcnMgaW4gdGhlIHNhbWUgd2F5LgorCisjIyMg
U3RyaW5nIENvbXBhcmlzb24KKworVGhlIGFzc2VydGlvbnMgaW4gdGhpcyBncm91cCBjb21wYXJl
IHR3byAqKkMgc3RyaW5ncyoqLiBJZiB5b3Ugd2FudCB0byBjb21wYXJlCit0d28gYHN0cmluZ2Ag
b2JqZWN0cywgdXNlIGBFWFBFQ1RfRVFgLCBgRVhQRUNUX05FYCwgYW5kIGV0YyBpbnN0ZWFkLgor
Cit8IEZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24g
ICAgICAgICAgICAgIHwgVmVyaWZpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKK3wgYEFTU0VSVF9TVFJFUShzdHIxLCBz
dHIyKTtgICAgICB8IGBFWFBFQ1RfU1RSRVEoc3RyMSwgc3RyMik7YCAgICAgfCB0aGUgdHdvIEMg
c3RyaW5ncyBoYXZlIHRoZSBzYW1lIGNvbnRlbnQgICAgICAgICAgICAgICAgICB8Cit8IGBBU1NF
UlRfU1RSTkUoc3RyMSwgc3RyMik7YCAgICAgfCBgRVhQRUNUX1NUUk5FKHN0cjEsIHN0cjIpO2Ag
ICAgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSBkaWZmZXJlbnQgY29udGVudHMgICAgICAgICAg
ICAgICAgfAorfCBgQVNTRVJUX1NUUkNBU0VFUShzdHIxLCBzdHIyKTtgIHwgYEVYUEVDVF9TVFJD
QVNFRVEoc3RyMSwgc3RyMik7YCB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUgdGhlIHNhbWUgY29u
dGVudCwgaWdub3JpbmcgY2FzZSAgIHwKK3wgYEFTU0VSVF9TVFJDQVNFTkUoc3RyMSwgc3RyMik7
YCB8IGBFWFBFQ1RfU1RSQ0FTRU5FKHN0cjEsIHN0cjIpO2AgfCB0aGUgdHdvIEMgc3RyaW5ncyBo
YXZlIGRpZmZlcmVudCBjb250ZW50cywgaWdub3JpbmcgY2FzZSB8CisKK05vdGUgdGhhdCAiQ0FT
RSIgaW4gYW4gYXNzZXJ0aW9uIG5hbWUgbWVhbnMgdGhhdCBjYXNlIGlzIGlnbm9yZWQuIEEgYE5V
TExgCitwb2ludGVyIGFuZCBhbiBlbXB0eSBzdHJpbmcgYXJlIGNvbnNpZGVyZWQgKmRpZmZlcmVu
dCouCisKK2AqU1RSRVEqYCBhbmQgYCpTVFJORSpgIGFsc28gYWNjZXB0IHdpZGUgQyBzdHJpbmdz
IChgd2NoYXJfdCpgKS4gSWYgYSBjb21wYXJpc29uCitvZiB0d28gd2lkZSBzdHJpbmdzIGZhaWxz
LCB0aGVpciB2YWx1ZXMgd2lsbCBiZSBwcmludGVkIGFzIFVURi04IG5hcnJvdyBzdHJpbmdzLgor
CisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisqKlNlZSBhbHNvKio6
IEZvciBtb3JlIHN0cmluZyBjb21wYXJpc29uIHRyaWNrcyAoc3Vic3RyaW5nLCBwcmVmaXgsIHN1
ZmZpeCwgYW5kCityZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hpbmcsIGZvciBleGFtcGxlKSwgc2Vl
CitbdGhpc10oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVy
L2dvb2dsZXRlc3QvZG9jcy9hZHZhbmNlZC5tZCkKK2luIHRoZSBBZHZhbmNlZCBnb29nbGV0ZXN0
IEd1aWRlLgorCisjIyBTaW1wbGUgVGVzdHMKKworVG8gY3JlYXRlIGEgdGVzdDoKKworMS4gIFVz
ZSB0aGUgYFRFU1QoKWAgbWFjcm8gdG8gZGVmaW5lIGFuZCBuYW1lIGEgdGVzdCBmdW5jdGlvbiwg
VGhlc2UgYXJlCisgICAgb3JkaW5hcnkgQysrIGZ1bmN0aW9ucyB0aGF0IGRvbid0IHJldHVybiBh
IHZhbHVlLgorMS4gIEluIHRoaXMgZnVuY3Rpb24sIGFsb25nIHdpdGggYW55IHZhbGlkIEMrKyBz
dGF0ZW1lbnRzIHlvdSB3YW50IHRvIGluY2x1ZGUsCisgICAgdXNlIHRoZSB2YXJpb3VzIGdvb2ds
ZXRlc3QgYXNzZXJ0aW9ucyB0byBjaGVjayB2YWx1ZXMuCisxLiAgVGhlIHRlc3QncyByZXN1bHQg
aXMgZGV0ZXJtaW5lZCBieSB0aGUgYXNzZXJ0aW9uczsgaWYgYW55IGFzc2VydGlvbiBpbiB0aGUK
KyAgICB0ZXN0IGZhaWxzIChlaXRoZXIgZmF0YWxseSBvciBub24tZmF0YWxseSksIG9yIGlmIHRo
ZSB0ZXN0IGNyYXNoZXMsIHRoZQorICAgIGVudGlyZSB0ZXN0IGZhaWxzLiBPdGhlcndpc2UsIGl0
IHN1Y2NlZWRzLgorCitgYGBjKysKK1RFU1QoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSkgeworICAu
Li4gdGVzdCBib2R5IC4uLgorfQorYGBgCisKK2BURVNUKClgIGFyZ3VtZW50cyBnbyBmcm9tIGdl
bmVyYWwgdG8gc3BlY2lmaWMuIFRoZSAqZmlyc3QqIGFyZ3VtZW50IGlzIHRoZSBuYW1lCitvZiB0
aGUgdGVzdCBjYXNlLCBhbmQgdGhlICpzZWNvbmQqIGFyZ3VtZW50IGlzIHRoZSB0ZXN0J3MgbmFt
ZSB3aXRoaW4gdGhlIHRlc3QKK2Nhc2UuIEJvdGggbmFtZXMgbXVzdCBiZSB2YWxpZCBDKysgaWRl
bnRpZmllcnMsIGFuZCB0aGV5IHNob3VsZCBub3QgY29udGFpbgordW5kZXJzY29yZSAoYF9gKS4g
QSB0ZXN0J3MgKmZ1bGwgbmFtZSogY29uc2lzdHMgb2YgaXRzIGNvbnRhaW5pbmcgdGVzdCBjYXNl
IGFuZAoraXRzIGluZGl2aWR1YWwgbmFtZS4gVGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNl
cyBjYW4gaGF2ZSB0aGUgc2FtZQoraW5kaXZpZHVhbCBuYW1lLgorCitGb3IgZXhhbXBsZSwgbGV0
J3MgdGFrZSBhIHNpbXBsZSBpbnRlZ2VyIGZ1bmN0aW9uOgorCitgYGBjKysKK2ludCBGYWN0b3Jp
YWwoaW50IG4pOyAgLy8gUmV0dXJucyB0aGUgZmFjdG9yaWFsIG9mIG4KK2BgYAorCitBIHRlc3Qg
Y2FzZSBmb3IgdGhpcyBmdW5jdGlvbiBtaWdodCBsb29rIGxpa2U6CisKK2BgYGMrKworLy8gVGVz
dHMgZmFjdG9yaWFsIG9mIDAuCitURVNUKEZhY3RvcmlhbFRlc3QsIEhhbmRsZXNaZXJvSW5wdXQp
IHsKKyAgRVhQRUNUX0VRKEZhY3RvcmlhbCgwKSwgMSk7Cit9CisKKy8vIFRlc3RzIGZhY3Rvcmlh
bCBvZiBwb3NpdGl2ZSBudW1iZXJzLgorVEVTVChGYWN0b3JpYWxUZXN0LCBIYW5kbGVzUG9zaXRp
dmVJbnB1dCkgeworICBFWFBFQ1RfRVEoRmFjdG9yaWFsKDEpLCAxKTsKKyAgRVhQRUNUX0VRKEZh
Y3RvcmlhbCgyKSwgMik7CisgIEVYUEVDVF9FUShGYWN0b3JpYWwoMyksIDYpOworICBFWFBFQ1Rf
RVEoRmFjdG9yaWFsKDgpLCA0MDMyMCk7Cit9CitgYGAKKworZ29vZ2xldGVzdCBncm91cHMgdGhl
IHRlc3QgcmVzdWx0cyBieSB0ZXN0IGNhc2VzLCBzbyBsb2dpY2FsbHktcmVsYXRlZCB0ZXN0cwor
c2hvdWxkIGJlIGluIHRoZSBzYW1lIHRlc3QgY2FzZTsgaW4gb3RoZXIgd29yZHMsIHRoZSBmaXJz
dCBhcmd1bWVudCB0byB0aGVpcgorYFRFU1QoKWAgc2hvdWxkIGJlIHRoZSBzYW1lLiBJbiB0aGUg
YWJvdmUgZXhhbXBsZSwgd2UgaGF2ZSB0d28gdGVzdHMsCitgSGFuZGxlc1plcm9JbnB1dGAgYW5k
IGBIYW5kbGVzUG9zaXRpdmVJbnB1dGAsIHRoYXQgYmVsb25nIHRvIHRoZSBzYW1lIHRlc3QgY2Fz
ZQorYEZhY3RvcmlhbFRlc3RgLgorCitXaGVuIG5hbWluZyB5b3VyIHRlc3QgY2FzZXMgYW5kIHRl
c3RzLCB5b3Ugc2hvdWxkIGZvbGxvdyB0aGUgc2FtZSBjb252ZW50aW9uIGFzCitmb3IgW25hbWlu
ZyBmdW5jdGlvbnMgYW5kCitjbGFzc2VzXShodHRwczovL2dvb2dsZS5naXRodWIuaW8vc3R5bGVn
dWlkZS9jcHBndWlkZS5odG1sI0Z1bmN0aW9uX05hbWVzKS4KKworKipBdmFpbGFiaWxpdHkqKjog
TGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgVGVzdCBGaXh0dXJlczogVXNpbmcgdGhlIFNhbWUg
RGF0YSBDb25maWd1cmF0aW9uIGZvciBNdWx0aXBsZSBUZXN0cworCitJZiB5b3UgZmluZCB5b3Vy
c2VsZiB3cml0aW5nIHR3byBvciBtb3JlIHRlc3RzIHRoYXQgb3BlcmF0ZSBvbiBzaW1pbGFyIGRh
dGEsIHlvdQorY2FuIHVzZSBhICp0ZXN0IGZpeHR1cmUqLiBJdCBhbGxvd3MgeW91IHRvIHJldXNl
IHRoZSBzYW1lIGNvbmZpZ3VyYXRpb24gb2YKK29iamVjdHMgZm9yIHNldmVyYWwgZGlmZmVyZW50
IHRlc3RzLgorCitUbyBjcmVhdGUgYSBmaXh0dXJlOgorCisxLiAgRGVyaXZlIGEgY2xhc3MgZnJv
bSBgOjp0ZXN0aW5nOjpUZXN0YCAuIFN0YXJ0IGl0cyBib2R5IHdpdGggYHByb3RlY3RlZDpgIGFz
CisgICAgd2UnbGwgd2FudCB0byBhY2Nlc3MgZml4dHVyZSBtZW1iZXJzIGZyb20gc3ViLWNsYXNz
ZXMuCisxLiAgSW5zaWRlIHRoZSBjbGFzcywgZGVjbGFyZSBhbnkgb2JqZWN0cyB5b3UgcGxhbiB0
byB1c2UuCisxLiAgSWYgbmVjZXNzYXJ5LCB3cml0ZSBhIGRlZmF1bHQgY29uc3RydWN0b3Igb3Ig
YFNldFVwKClgIGZ1bmN0aW9uIHRvIHByZXBhcmUKKyAgICB0aGUgb2JqZWN0cyBmb3IgZWFjaCB0
ZXN0LiBBIGNvbW1vbiBtaXN0YWtlIGlzIHRvIHNwZWxsIGBTZXRVcCgpYCBhcworICAgICoqYFNl
dHVwKClgKiogd2l0aCBhIHNtYWxsIGB1YCAtIFVzZSBgb3ZlcnJpZGVgIGluIEMrKzExIHRvIG1h
a2Ugc3VyZSB5b3UKKyAgICBzcGVsbGVkIGl0IGNvcnJlY3RseQorMS4gIElmIG5lY2Vzc2FyeSwg
d3JpdGUgYSBkZXN0cnVjdG9yIG9yIGBUZWFyRG93bigpYCBmdW5jdGlvbiB0byByZWxlYXNlIGFu
eQorICAgIHJlc291cmNlcyB5b3UgYWxsb2NhdGVkIGluIGBTZXRVcCgpYCAuIFRvIGxlYXJuIHdo
ZW4geW91IHNob3VsZCB1c2UgdGhlCisgICAgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBhbmQgd2hl
biB5b3Ugc2hvdWxkIHVzZSBgU2V0VXAoKS9UZWFyRG93bigpYCwgcmVhZAorICAgIHRoaXMgW0ZB
UV0oZmFxLm1kI3Nob3VsZC1pLXVzZS10aGUtY29uc3RydWN0b3JkZXN0cnVjdG9yLW9mLXRoZS10
ZXN0LWZpeHR1cmUtb3Itc2V0dXB0ZWFyZG93bikgZW50cnkuCisxLiAgSWYgbmVlZGVkLCBkZWZp
bmUgc3Vicm91dGluZXMgZm9yIHlvdXIgdGVzdHMgdG8gc2hhcmUuCisKK1doZW4gdXNpbmcgYSBm
aXh0dXJlLCB1c2UgYFRFU1RfRigpYCBpbnN0ZWFkIG9mIGBURVNUKClgIGFzIGl0IGFsbG93cyB5
b3UgdG8KK2FjY2VzcyBvYmplY3RzIGFuZCBzdWJyb3V0aW5lcyBpbiB0aGUgdGVzdCBmaXh0dXJl
OgorCitgYGBjKysKK1RFU1RfRihUZXN0Q2FzZU5hbWUsIFRlc3ROYW1lKSB7CisgIC4uLiB0ZXN0
IGJvZHkgLi4uCit9CitgYGAKKworTGlrZSBgVEVTVCgpYCwgdGhlIGZpcnN0IGFyZ3VtZW50IGlz
IHRoZSB0ZXN0IGNhc2UgbmFtZSwgYnV0IGZvciBgVEVTVF9GKClgIHRoaXMKK211c3QgYmUgdGhl
IG5hbWUgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4gWW91J3ZlIHByb2JhYmx5IGd1ZXNzZWQ6
IGBfRmAgaXMgZm9yCitmaXh0dXJlLgorCitVbmZvcnR1bmF0ZWx5LCB0aGUgQysrIG1hY3JvIHN5
c3RlbSBkb2VzIG5vdCBhbGxvdyB1cyB0byBjcmVhdGUgYSBzaW5nbGUgbWFjcm8KK3RoYXQgY2Fu
IGhhbmRsZSBib3RoIHR5cGVzIG9mIHRlc3RzLiBVc2luZyB0aGUgd3JvbmcgbWFjcm8gY2F1c2Vz
IGEgY29tcGlsZXIKK2Vycm9yLgorCitBbHNvLCB5b3UgbXVzdCBmaXJzdCBkZWZpbmUgYSB0ZXN0
IGZpeHR1cmUgY2xhc3MgYmVmb3JlIHVzaW5nIGl0IGluIGEKK2BURVNUX0YoKWAsIG9yIHlvdSds
bCBnZXQgdGhlIGNvbXBpbGVyIGVycm9yICJgdmlydHVhbCBvdXRzaWRlIGNsYXNzCitkZWNsYXJh
dGlvbmAiLgorCitGb3IgZWFjaCB0ZXN0IGRlZmluZWQgd2l0aCBgVEVTVF9GKClgICwgZ29vZ2xl
dGVzdCB3aWxsIGNyZWF0ZSBhICpmcmVzaCogdGVzdAorZml4dHVyZSBhdCBydW50aW1lLCBpbW1l
ZGlhdGVseSBpbml0aWFsaXplIGl0IHZpYSBgU2V0VXAoKWAgLCBydW4gdGhlIHRlc3QsCitjbGVh
biB1cCBieSBjYWxsaW5nIGBUZWFyRG93bigpYCAsIGFuZCB0aGVuIGRlbGV0ZSB0aGUgdGVzdCBm
aXh0dXJlLiBOb3RlIHRoYXQKK2RpZmZlcmVudCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2Ug
aGF2ZSBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIG9iamVjdHMsIGFuZAorZ29vZ2xldGVzdCBhbHdh
eXMgZGVsZXRlcyBhIHRlc3QgZml4dHVyZSBiZWZvcmUgaXQgY3JlYXRlcyB0aGUgbmV4dCBvbmUu
Citnb29nbGV0ZXN0IGRvZXMgKipub3QqKiByZXVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUgZm9y
IG11bHRpcGxlIHRlc3RzLiBBbnkKK2NoYW5nZXMgb25lIHRlc3QgbWFrZXMgdG8gdGhlIGZpeHR1
cmUgZG8gbm90IGFmZmVjdCBvdGhlciB0ZXN0cy4KKworQXMgYW4gZXhhbXBsZSwgbGV0J3Mgd3Jp
dGUgdGVzdHMgZm9yIGEgRklGTyBxdWV1ZSBjbGFzcyBuYW1lZCBgUXVldWVgLCB3aGljaCBoYXMK
K3RoZSBmb2xsb3dpbmcgaW50ZXJmYWNlOgorCitgYGBjKysKK3RlbXBsYXRlIDx0eXBlbmFtZSBF
PiAgLy8gRSBpcyB0aGUgZWxlbWVudCB0eXBlLgorY2xhc3MgUXVldWUgeworIHB1YmxpYzoKKyAg
UXVldWUoKTsKKyAgdm9pZCBFbnF1ZXVlKGNvbnN0IEUmIGVsZW1lbnQpOworICBFKiBEZXF1ZXVl
KCk7ICAvLyBSZXR1cm5zIE5VTEwgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LgorICBzaXplX3Qgc2l6
ZSgpIGNvbnN0OworICAuLi4KK307CitgYGAKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xh
c3MuIEJ5IGNvbnZlbnRpb24sIHlvdSBzaG91bGQgZ2l2ZSBpdCB0aGUgbmFtZQorYEZvb1Rlc3Rg
IHdoZXJlIGBGb29gIGlzIHRoZSBjbGFzcyBiZWluZyB0ZXN0ZWQuCisKK2BgYGMrKworY2xhc3Mg
UXVldWVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICB2b2lk
IFNldFVwKCkgb3ZlcnJpZGUgeworICAgICBxMV8uRW5xdWV1ZSgxKTsKKyAgICAgcTJfLkVucXVl
dWUoMik7CisgICAgIHEyXy5FbnF1ZXVlKDMpOworICB9CisKKyAgLy8gdm9pZCBUZWFyRG93bigp
IG92ZXJyaWRlIHt9CisKKyAgUXVldWU8aW50PiBxMF87CisgIFF1ZXVlPGludD4gcTFfOworICBR
dWV1ZTxpbnQ+IHEyXzsKK307CitgYGAKKworSW4gdGhpcyBjYXNlLCBgVGVhckRvd24oKWAgaXMg
bm90IG5lZWRlZCBzaW5jZSB3ZSBkb24ndCBoYXZlIHRvIGNsZWFuIHVwIGFmdGVyCitlYWNoIHRl
c3QsIG90aGVyIHRoYW4gd2hhdCdzIGFscmVhZHkgZG9uZSBieSB0aGUgZGVzdHJ1Y3Rvci4KKwor
Tm93IHdlJ2xsIHdyaXRlIHRlc3RzIHVzaW5nIGBURVNUX0YoKWAgYW5kIHRoaXMgZml4dHVyZS4K
KworYGBgYysrCitURVNUX0YoUXVldWVUZXN0LCBJc0VtcHR5SW5pdGlhbGx5KSB7CisgIEVYUEVD
VF9FUShxMF8uc2l6ZSgpLCAwKTsKK30KKworVEVTVF9GKFF1ZXVlVGVzdCwgRGVxdWV1ZVdvcmtz
KSB7CisgIGludCogbiA9IHEwXy5EZXF1ZXVlKCk7CisgIEVYUEVDVF9FUShuLCBudWxscHRyKTsK
KworICBuID0gcTFfLkRlcXVldWUoKTsKKyAgQVNTRVJUX05FKG4sIG51bGxwdHIpOworICBFWFBF
Q1RfRVEoKm4sIDEpOworICBFWFBFQ1RfRVEocTFfLnNpemUoKSwgMCk7CisgIGRlbGV0ZSBuOwor
CisgIG4gPSBxMl8uRGVxdWV1ZSgpOworICBBU1NFUlRfTkUobiwgbnVsbHB0cik7CisgIEVYUEVD
VF9FUSgqbiwgMik7CisgIEVYUEVDVF9FUShxMl8uc2l6ZSgpLCAxKTsKKyAgZGVsZXRlIG47Cit9
CitgYGAKKworVGhlIGFib3ZlIHVzZXMgYm90aCBgQVNTRVJUXypgIGFuZCBgRVhQRUNUXypgIGFz
c2VydGlvbnMuIFRoZSBydWxlIG9mIHRodW1iIGlzCit0byB1c2UgYEVYUEVDVF8qYCB3aGVuIHlv
dSB3YW50IHRoZSB0ZXN0IHRvIGNvbnRpbnVlIHRvIHJldmVhbCBtb3JlIGVycm9ycyBhZnRlcgor
dGhlIGFzc2VydGlvbiBmYWlsdXJlLCBhbmQgdXNlIGBBU1NFUlRfKmAgd2hlbiBjb250aW51aW5n
IGFmdGVyIGZhaWx1cmUgZG9lc24ndAorbWFrZSBzZW5zZS4gRm9yIGV4YW1wbGUsIHRoZSBzZWNv
bmQgYXNzZXJ0aW9uIGluIHRoZSBgRGVxdWV1ZWAgdGVzdCBpcworPUFTU0VSVF9ORShudWxscHRy
LCBuKT0sIGFzIHdlIG5lZWQgdG8gZGVyZWZlcmVuY2UgdGhlIHBvaW50ZXIgYG5gIGxhdGVyLCB3
aGljaAord291bGQgbGVhZCB0byBhIHNlZ2ZhdWx0IHdoZW4gYG5gIGlzIGBOVUxMYC4KKworV2hl
biB0aGVzZSB0ZXN0cyBydW4sIHRoZSBmb2xsb3dpbmcgaGFwcGVuczoKKworMS4gIGdvb2dsZXRl
c3QgY29uc3RydWN0cyBhIGBRdWV1ZVRlc3RgIG9iamVjdCAobGV0J3MgY2FsbCBpdCBgdDFgICku
CisxLiAgYHQxLlNldFVwKClgIGluaXRpYWxpemVzIGB0MWAgLgorMS4gIFRoZSBmaXJzdCB0ZXN0
ICggYElzRW1wdHlJbml0aWFsbHlgICkgcnVucyBvbiBgdDFgIC4KKzEuICBgdDEuVGVhckRvd24o
KWAgY2xlYW5zIHVwIGFmdGVyIHRoZSB0ZXN0IGZpbmlzaGVzLgorMS4gIGB0MWAgaXMgZGVzdHJ1
Y3RlZC4KKzEuICBUaGUgYWJvdmUgc3RlcHMgYXJlIHJlcGVhdGVkIG9uIGFub3RoZXIgYFF1ZXVl
VGVzdGAgb2JqZWN0LCB0aGlzIHRpbWUKKyAgICBydW5uaW5nIHRoZSBgRGVxdWV1ZVdvcmtzYCB0
ZXN0LgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisKKyMjIElu
dm9raW5nIHRoZSBUZXN0cworCitgVEVTVCgpYCBhbmQgYFRFU1RfRigpYCBpbXBsaWNpdGx5IHJl
Z2lzdGVyIHRoZWlyIHRlc3RzIHdpdGggZ29vZ2xldGVzdC4gU28sCit1bmxpa2Ugd2l0aCBtYW55
IG90aGVyIEMrKyB0ZXN0aW5nIGZyYW1ld29ya3MsIHlvdSBkb24ndCBoYXZlIHRvIHJlLWxpc3Qg
YWxsCit5b3VyIGRlZmluZWQgdGVzdHMgaW4gb3JkZXIgdG8gcnVuIHRoZW0uCisKK0FmdGVyIGRl
ZmluaW5nIHlvdXIgdGVzdHMsIHlvdSBjYW4gcnVuIHRoZW0gd2l0aCBgUlVOX0FMTF9URVNUUygp
YCAsIHdoaWNoCityZXR1cm5zIGAwYCBpZiBhbGwgdGhlIHRlc3RzIGFyZSBzdWNjZXNzZnVsLCBv
ciBgMWAgb3RoZXJ3aXNlLiBOb3RlIHRoYXQKK2BSVU5fQUxMX1RFU1RTKClgIHJ1bnMgKmFsbCB0
ZXN0cyogaW4geW91ciBsaW5rIHVuaXQgLS0gdGhleSBjYW4gYmUgZnJvbQorZGlmZmVyZW50IHRl
c3QgY2FzZXMsIG9yIGV2ZW4gZGlmZmVyZW50IHNvdXJjZSBmaWxlcy4KKworV2hlbiBpbnZva2Vk
LCB0aGUgYFJVTl9BTExfVEVTVFMoKWAgbWFjcm86CisKKzEuIFNhdmVzIHRoZSBzdGF0ZSBvZiBh
bGwgZ29vZ2xldGVzdCBmbGFncworCisqICAgQ3JlYXRlcyBhIHRlc3QgZml4dHVyZSBvYmplY3Qg
Zm9yIHRoZSBmaXJzdCB0ZXN0LgorCisqICAgSW5pdGlhbGl6ZXMgaXQgdmlhIGBTZXRVcCgpYC4K
KworKiAgIFJ1bnMgdGhlIHRlc3Qgb24gdGhlIGZpeHR1cmUgb2JqZWN0LgorCisqICAgQ2xlYW5z
IHVwIHRoZSBmaXh0dXJlIHZpYSBgVGVhckRvd24oKWAuCisKKyogICBEZWxldGVzIHRoZSBmaXh0
dXJlLgorCisqIFJlc3RvcmVzIHRoZSBzdGF0ZSBvZiBhbGwgZ29vZ2xldGVzdCBmbGFncworCisq
ICAgUmVwZWF0cyB0aGUgYWJvdmUgc3RlcHMgZm9yIHRoZSBuZXh0IHRlc3QsIHVudGlsIGFsbCB0
ZXN0cyBoYXZlIHJ1bi4KKworSWYgYSBmYXRhbCBmYWlsdXJlIGhhcHBlbnMgdGhlIHN1YnNlcXVl
bnQgc3RlcHMgd2lsbCBiZSBza2lwcGVkLgorCis+IElNUE9SVEFOVDogWW91IG11c3QgKipub3Qq
KiBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYCwgb3IKKz4geW91
IHdpbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IuIFRoZSByYXRpb25hbGUgZm9yIHRoaXMgZGVzaWdu
IGlzIHRoYXQgdGhlCis+IGF1dG9tYXRlZCB0ZXN0aW5nIHNlcnZpY2UgZGV0ZXJtaW5lcyB3aGV0
aGVyIGEgdGVzdCBoYXMgcGFzc2VkIGJhc2VkIG9uIGl0cworPiBleGl0IGNvZGUsIG5vdCBvbiBp
dHMgc3Rkb3V0L3N0ZGVyciBvdXRwdXQ7IHRodXMgeW91ciBgbWFpbigpYCBmdW5jdGlvbiBtdXN0
Cis+IHJldHVybiB0aGUgdmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAuCis+Cis+IEFsc28sIHlv
dSBzaG91bGQgY2FsbCBgUlVOX0FMTF9URVNUUygpYCBvbmx5ICoqb25jZSoqLiBDYWxsaW5nIGl0
IG1vcmUgdGhhbgorPiBvbmNlIGNvbmZsaWN0cyB3aXRoIHNvbWUgYWR2YW5jZWQgZ29vZ2xldGVz
dCBmZWF0dXJlcyAoZS5nLiB0aHJlYWQtc2FmZSBbZGVhdGgKKz4gdGVzdHNdKGFkdmFuY2VkI2Rl
YXRoLXRlc3RzKSkgYW5kIHRodXMgaXMgbm90IHN1cHBvcnRlZC4KKworKipBdmFpbGFiaWxpdHkq
KjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgV3JpdGluZyB0aGUgbWFpbigpIEZ1bmN0aW9u
CisKK0luIGBnb29nbGUzYCwgdGhlIHNpbXBsZXN0IGFwcHJvYWNoIGlzIHRvIHVzZSB0aGUgZGVm
YXVsdCBtYWluKCkgZnVuY3Rpb24KK3Byb3ZpZGVkIGJ5IGxpbmtpbmcgaW4gYCIvL3Rlc3Rpbmcv
YmFzZS9wdWJsaWM6Z3Rlc3RfbWFpbiJgLiBJZiB0aGF0IGRvZXNuJ3QKK2NvdmVyIHdoYXQgeW91
IG5lZWQsIHlvdSBzaG91bGQgd3JpdGUgeW91ciBvd24gbWFpbigpIGZ1bmN0aW9uLCB3aGljaCBz
aG91bGQKK3JldHVybiB0aGUgdmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAuIExpbmsgdG8gYCIv
L3Rlc3RpbmcvYmFzZS9wdWJsaWM6Z3VuaXQiYC4KK1lvdSBjYW4gc3RhcnQgZnJvbSB0aGlzIGJv
aWxlcnBsYXRlOgorCitgYGBjKysKKyNpbmNsdWRlICJ0aGlzL3BhY2thZ2UvZm9vLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsKKworLy8gVGhlIGZpeHR1cmUgZm9y
IHRlc3RpbmcgY2xhc3MgRm9vLgorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3QgeworIHByb3RlY3RlZDoKKyAgLy8gWW91IGNhbiByZW1vdmUgYW55IG9yIGFsbCBvZiB0aGUg
Zm9sbG93aW5nIGZ1bmN0aW9ucyBpZiBpdHMgYm9keQorICAvLyBpcyBlbXB0eS4KKworICBGb29U
ZXN0KCkgeworICAgICAvLyBZb3UgY2FuIGRvIHNldC11cCB3b3JrIGZvciBlYWNoIHRlc3QgaGVy
ZS4KKyAgfQorCisgIH5Gb29UZXN0KCkgb3ZlcnJpZGUgeworICAgICAvLyBZb3UgY2FuIGRvIGNs
ZWFuLXVwIHdvcmsgdGhhdCBkb2Vzbid0IHRocm93IGV4Y2VwdGlvbnMgaGVyZS4KKyAgfQorCisg
IC8vIElmIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBhcmUgbm90IGVub3VnaCBmb3Ig
c2V0dGluZyB1cAorICAvLyBhbmQgY2xlYW5pbmcgdXAgZWFjaCB0ZXN0LCB5b3UgY2FuIGRlZmlu
ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CisKKyAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIHsKKyAg
ICAgLy8gQ29kZSBoZXJlIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjb25z
dHJ1Y3RvciAocmlnaHQKKyAgICAgLy8gYmVmb3JlIGVhY2ggdGVzdCkuCisgIH0KKworICB2b2lk
IFRlYXJEb3duKCkgb3ZlcnJpZGUgeworICAgICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBjYWxsZWQg
aW1tZWRpYXRlbHkgYWZ0ZXIgZWFjaCB0ZXN0IChyaWdodAorICAgICAvLyBiZWZvcmUgdGhlIGRl
c3RydWN0b3IpLgorICB9CisKKyAgLy8gT2JqZWN0cyBkZWNsYXJlZCBoZXJlIGNhbiBiZSB1c2Vk
IGJ5IGFsbCB0ZXN0cyBpbiB0aGUgdGVzdCBjYXNlIGZvciBGb28uCit9OworCisvLyBUZXN0cyB0
aGF0IHRoZSBGb286OkJhcigpIG1ldGhvZCBkb2VzIEFiYy4KK1RFU1RfRihGb29UZXN0LCBNZXRo
b2RCYXJEb2VzQWJjKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGlucHV0X2ZpbGVwYXRoID0gInRo
aXMvcGFja2FnZS90ZXN0ZGF0YS9teWlucHV0ZmlsZS5kYXQiOworICBjb25zdCBzdGQ6OnN0cmlu
ZyBvdXRwdXRfZmlsZXBhdGggPSAidGhpcy9wYWNrYWdlL3Rlc3RkYXRhL215b3V0cHV0ZmlsZS5k
YXQiOworICBGb28gZjsKKyAgRVhQRUNUX0VRKGYuQmFyKGlucHV0X2ZpbGVwYXRoLCBvdXRwdXRf
ZmlsZXBhdGgpLCAwKTsKK30KKworLy8gVGVzdHMgdGhhdCBGb28gZG9lcyBYeXouCitURVNUX0Yo
Rm9vVGVzdCwgRG9lc1h5eikgeworICAvLyBFeGVyY2lzZXMgdGhlIFh5eiBmZWF0dXJlIG9mIEZv
by4KK30KKworfSAgLy8gbmFtZXNwYWNlCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn
dikgeworICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgcmV0dXJu
IFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAorCisKK1RoZSBgOjp0ZXN0aW5nOjpJbml0R29vZ2xl
VGVzdCgpYCBmdW5jdGlvbiBwYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IKK2dvb2dsZXRlc3Qg
ZmxhZ3MsIGFuZCByZW1vdmVzIGFsbCByZWNvZ25pemVkIGZsYWdzLiBUaGlzIGFsbG93cyB0aGUg
dXNlciB0bworY29udHJvbCBhIHRlc3QgcHJvZ3JhbSdzIGJlaGF2aW9yIHZpYSB2YXJpb3VzIGZs
YWdzLCB3aGljaCB3ZSdsbCBjb3ZlciBpbgorW0FkdmFuY2VkR3VpZGVdKGFkdmFuY2VkLm1kKS4g
WW91ICoqbXVzdCoqIGNhbGwgdGhpcyBmdW5jdGlvbiBiZWZvcmUgY2FsbGluZworYFJVTl9BTExf
VEVTVFMoKWAsIG9yIHRoZSBmbGFncyB3b24ndCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4KKwor
T24gV2luZG93cywgYEluaXRHb29nbGVUZXN0KClgIGFsc28gd29ya3Mgd2l0aCB3aWRlIHN0cmlu
Z3MsIHNvIGl0IGNhbiBiZSB1c2VkCitpbiBwcm9ncmFtcyBjb21waWxlZCBpbiBgVU5JQ09ERWAg
bW9kZSBhcyB3ZWxsLgorCitCdXQgbWF5YmUgeW91IHRoaW5rIHRoYXQgd3JpdGluZyBhbGwgdGhv
c2UgbWFpbigpIGZ1bmN0aW9ucyBpcyB0b28gbXVjaCB3b3JrPyBXZQorYWdyZWUgd2l0aCB5b3Ug
Y29tcGxldGVseSBhbmQgdGhhdCdzIHdoeSBHb29nbGUgVGVzdCBwcm92aWRlcyBhIGJhc2ljCitp
bXBsZW1lbnRhdGlvbiBvZiBtYWluKCkuIElmIGl0IGZpdHMgeW91ciBuZWVkcywgdGhlbiBqdXN0
IGxpbmsgeW91ciB0ZXN0IHdpdGgKK2d0ZXN0XF9tYWluIGxpYnJhcnkgYW5kIHlvdSBhcmUgZ29v
ZCB0byBnby4KKworTk9URTogYFBhcnNlR1VuaXRGbGFncygpYCBpcyBkZXByZWNhdGVkIGluIGZh
dm9yIG9mIGBJbml0R29vZ2xlVGVzdCgpYC4KKworCisjIyBLbm93biBMaW1pdGF0aW9ucworCisq
ICAgR29vZ2xlIFRlc3QgaXMgZGVzaWduZWQgdG8gYmUgdGhyZWFkLXNhZmUuIFRoZSBpbXBsZW1l
bnRhdGlvbiBpcyB0aHJlYWQtc2FmZQorICAgIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGBwdGhyZWFk
c2AgbGlicmFyeSBpcyBhdmFpbGFibGUuIEl0IGlzIGN1cnJlbnRseQorICAgIF91bnNhZmVfIHRv
IHVzZSBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGZyb20gdHdvIHRocmVhZHMgY29uY3VycmVudGx5
IG9uCisgICAgb3RoZXIgc3lzdGVtcyAoZS5nLiBXaW5kb3dzKS4gSW4gbW9zdCB0ZXN0cyB0aGlz
IGlzIG5vdCBhbiBpc3N1ZSBhcyB1c3VhbGx5CisgICAgdGhlIGFzc2VydGlvbnMgYXJlIGRvbmUg
aW4gdGhlIG1haW4gdGhyZWFkLiBJZiB5b3Ugd2FudCB0byBoZWxwLCB5b3UgY2FuCisgICAgdm9s
dW50ZWVyIHRvIGltcGxlbWVudCB0aGUgbmVjZXNzYXJ5IHN5bmNocm9uaXphdGlvbiBwcmltaXRp
dmVzIGluCisgICAgYGd0ZXN0LXBvcnQuaGAgZm9yIHlvdXIgcGxhdGZvcm0uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL3NhbXBsZXMubWQgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9kb2NzL3NhbXBsZXMubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMThkY2NhMzgxNDkxZTE5ODIz
MzJjNmQ0NDcyY2E4MmQwZDAyMTcwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2RvY3Mvc2FtcGxlcy5tZApAQCAtMCwwICsxLDIyIEBACisjIEdvb2dsZXRlc3Qg
U2FtcGxlcyB7I3NhbXBsZXN9CisKK0lmIHlvdSdyZSBsaWtlIHVzLCB5b3UnZCBsaWtlIHRvIGxv
b2sgYXQgW2dvb2dsZXRlc3QKK3NhbXBsZXMuXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dv
b2dsZXRlc3QvdHJlZS9tYXN0ZXIvZ29vZ2xldGVzdC9zYW1wbGVzKQorVGhlIHNhbXBsZSBkaXJl
Y3RvcnkgaGFzIGEgbnVtYmVyIG9mIHdlbGwtY29tbWVudGVkIHNhbXBsZXMgc2hvd2luZyBob3cg
dG8gdXNlIGEKK3ZhcmlldHkgb2YgZ29vZ2xldGVzdCBmZWF0dXJlcy4KKworKiAgIFNhbXBsZSAj
MSBzaG93cyB0aGUgYmFzaWMgc3RlcHMgb2YgdXNpbmcgZ29vZ2xldGVzdCB0byB0ZXN0IEMrKyBm
dW5jdGlvbnMuCisqICAgU2FtcGxlICMyIHNob3dzIGEgbW9yZSBjb21wbGV4IHVuaXQgdGVzdCBm
b3IgYSBjbGFzcyB3aXRoIG11bHRpcGxlIG1lbWJlcgorICAgIGZ1bmN0aW9ucy4KKyogICBTYW1w
bGUgIzMgdXNlcyBhIHRlc3QgZml4dHVyZS4KKyogICBTYW1wbGUgIzQgdGVhY2hlcyB5b3UgaG93
IHRvIHVzZSBnb29nbGV0ZXN0IGFuZCBgZ29vZ2xldGVzdC5oYCB0b2dldGhlciB0bworICAgIGdl
dCB0aGUgYmVzdCBvZiBib3RoIGxpYnJhcmllcy4KKyogICBTYW1wbGUgIzUgcHV0cyBzaGFyZWQg
dGVzdGluZyBsb2dpYyBpbiBhIGJhc2UgdGVzdCBmaXh0dXJlLCBhbmQgcmV1c2VzIGl0IGluCisg
ICAgZGVyaXZlZCBmaXh0dXJlcy4KKyogICBTYW1wbGUgIzYgZGVtb25zdHJhdGVzIHR5cGUtcGFy
YW1ldGVyaXplZCB0ZXN0cy4KKyogICBTYW1wbGUgIzcgdGVhY2hlcyB0aGUgYmFzaWNzIG9mIHZh
bHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCisqICAgU2FtcGxlICM4IHNob3dzIHVzaW5nIGBDb21i
aW5lKClgIGluIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCisqICAgU2FtcGxlICM5IHNob3dz
IHVzZSBvZiB0aGUgbGlzdGVuZXIgQVBJIHRvIG1vZGlmeSBHb29nbGUgVGVzdCdzIGNvbnNvbGUK
KyAgICBvdXRwdXQgYW5kIHRoZSB1c2Ugb2YgaXRzIHJlZmxlY3Rpb24gQVBJIHRvIGluc3BlY3Qg
dGVzdCByZXN1bHRzLgorKiAgIFNhbXBsZSAjMTAgc2hvd3MgdXNlIG9mIHRoZSBsaXN0ZW5lciBB
UEkgdG8gaW1wbGVtZW50IGEgcHJpbWl0aXZlIG1lbW9yeQorICAgIGxlYWsgY2hlY2tlci4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtZGVh
dGgtdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1k
ZWF0aC10ZXN0LmgKaW5kZXggMTIxZGMxZmI1YWM1ZDU5YTMzZDUzMDM0MDU4ZWVlOTFjMjEyYTIw
OC4uMjBjNTRkODY5NTE5ZjY5MzBlN2ViZmQyYzA4MDViYWNhNDIyMTZiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10
ZXN0LmgKQEAgLTI2LDE5ICsyNiwxOSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlv
bmcgV2FuKQotLy8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUg
VGVzdCkKKy8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChH
b29nbGUgVGVzdCkKIC8vCiAvLyBUaGlzIGhlYWRlciBmaWxlIGRlZmluZXMgdGhlIHB1YmxpYyBB
UEkgZm9yIGRlYXRoIHRlc3RzLiAgSXQgaXMKIC8vICNpbmNsdWRlZCBieSBndGVzdC5oIHNvIGEg
dXNlciBkb2Vzbid0IG5lZWQgdG8gaW5jbHVkZSB0aGlzCiAvLyBkaXJlY3RseS4KKy8vIEdPT0dM
RVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKIAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNU
X0dURVNUX0RFQVRIX1RFU1RfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9E
RUFUSF9URVNUX0hfCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0
LWludGVybmFsLmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZGVhdGgtdGVzdC1p
bnRlcm5hbC5oIgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKQEAgLTUxLDYgKzUxLDE3IEBAIEdU
RVNUX0RFQ0xBUkVfc3RyaW5nXyhkZWF0aF90ZXN0X3N0eWxlKTsKIAogI2lmIEdURVNUX0hBU19E
RUFUSF9URVNUCiAKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIFJldHVybnMgYSBCb29sZWFu
IHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgY2FsbGVyIGlzIGN1cnJlbnRseQorLy8gZXhl
Y3V0aW5nIGluIHRoZSBjb250ZXh0IG9mIHRoZSBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nlc3MuICBU
b29scyBzdWNoIGFzCisvLyBWYWxncmluZCBoZWFwIGNoZWNrZXJzIG1heSBuZWVkIHRoaXMgdG8g
bW9kaWZ5IHRoZWlyIGJlaGF2aW9yIGluIGRlYXRoCisvLyB0ZXN0cy4gIElNUE9SVEFOVDogVGhp
cyBpcyBhbiBpbnRlcm5hbCB1dGlsaXR5LiAgVXNpbmcgaXQgbWF5IGJyZWFrIHRoZQorLy8gaW1w
bGVtZW50YXRpb24gb2YgZGVhdGggdGVzdHMuICBVc2VyIGNvZGUgTVVTVCBOT1QgdXNlIGl0Lgor
R1RFU1RfQVBJXyBib29sIEluRGVhdGhUZXN0Q2hpbGQoKTsKKworfSAgLy8gbmFtZXNwYWNlIGlu
dGVybmFsCisKIC8vIFRoZSBmb2xsb3dpbmcgbWFjcm9zIGFyZSB1c2VmdWwgZm9yIHdyaXRpbmcg
ZGVhdGggdGVzdHMuCiAKIC8vIEhlcmUncyB3aGF0IGhhcHBlbnMgd2hlbiBhbiBBU1NFUlRfREVB
VEgqIG9yIEVYUEVDVF9ERUFUSCogaXMKQEAgLTc1LDcgKzg2LDcgQEAgR1RFU1RfREVDTEFSRV9z
dHJpbmdfKGRlYXRoX3Rlc3Rfc3R5bGUpOwogLy8gICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkr
KykgewogLy8gICAgIEVYUEVDVF9ERUFUSChzZXJ2ZXIuUHJvY2Vzc1JlcXVlc3QoaSksCiAvLyAg
ICAgICAgICAgICAgICAgICJJbnZhbGlkIHJlcXVlc3QgLiogaW4gUHJvY2Vzc1JlcXVlc3QoKSIp
Ci0vLyAgICAgICAgIDw8ICJGYWlsZWQgdG8gZGllIG9uIHJlcXVlc3QgIiA8PCBpKTsKKy8vICAg
ICAgICAgICAgICAgICAgPDwgIkZhaWxlZCB0byBkaWUgb24gcmVxdWVzdCAiIDw8IGk7CiAvLyAg
IH0KIC8vCiAvLyAgIEFTU0VSVF9FWElUKHNlcnZlci5FeGl0Tm93KCksIDo6dGVzdGluZzo6RXhp
dGVkV2l0aENvZGUoMCksICJFeGl0aW5nIik7CkBAIC04OCwxMCArOTksMTEgQEAgR1RFU1RfREVD
TEFSRV9zdHJpbmdfKGRlYXRoX3Rlc3Rfc3R5bGUpOwogLy8KIC8vIE9uIHRoZSByZWd1bGFyIGV4
cHJlc3Npb25zIHVzZWQgaW4gZGVhdGggdGVzdHM6CiAvLworLy8gICBHT09HTEVURVNUX0NNMDAw
NSBETyBOT1QgREVMRVRFCiAvLyAgIE9uIFBPU0lYLWNvbXBsaWFudCBzeXN0ZW1zICgqbml4KSwg
d2UgdXNlIHRoZSA8cmVnZXguaD4gbGlicmFyeSwKIC8vICAgd2hpY2ggdXNlcyB0aGUgUE9TSVgg
ZXh0ZW5kZWQgcmVnZXggc3ludGF4LgogLy8KLS8vICAgT24gb3RoZXIgcGxhdGZvcm1zIChlLmcu
IFdpbmRvd3MpLCB3ZSBvbmx5IHN1cHBvcnQgYSBzaW1wbGUgcmVnZXgKKy8vICAgT24gb3RoZXIg
cGxhdGZvcm1zIChlLmcuIFdpbmRvd3Mgb3IgTWFjKSwgd2Ugb25seSBzdXBwb3J0IGEgc2ltcGxl
IHJlZ2V4CiAvLyAgIHN5bnRheCBpbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIEdvb2dsZSBUZXN0LiAg
VGhpcyBsaW1pdGVkCiAvLyAgIGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSBlbm91Z2ggbW9zdCBv
ZiB0aGUgdGltZSB3aGVuIHdyaXRpbmcKIC8vICAgZGVhdGggdGVzdHM7IHRob3VnaCBpdCBsYWNr
cyBtYW55IGZlYXR1cmVzIHlvdSBjYW4gZmluZCBpbiBQQ1JFCkBAIC0xNDksMjkgKzE2MSwyOSBA
QCBHVEVTVF9ERUNMQVJFX3N0cmluZ18oZGVhdGhfdGVzdF9zdHlsZSk7CiAvLyAgIGlzIHJhcmVs
eSBhIHByb2JsZW0gYXMgcGVvcGxlIHVzdWFsbHkgZG9uJ3QgcHV0IHRoZSB0ZXN0IGJpbmFyeQog
Ly8gICBkaXJlY3RvcnkgaW4gUEFUSC4KIC8vCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogbWFr
ZSB0aHJlYWQtc2FmZSBkZWF0aCB0ZXN0cyBzZWFyY2ggdGhlIFBBVEguCisvLyBGSVhNRTogbWFr
ZSB0aHJlYWQtc2FmZSBkZWF0aCB0ZXN0cyBzZWFyY2ggdGhlIFBBVEguCiAKIC8vIEFzc2VydHMg
dGhhdCBhIGdpdmVuIHN0YXRlbWVudCBjYXVzZXMgdGhlIHByb2dyYW0gdG8gZXhpdCwgd2l0aCBh
bgogLy8gaW50ZWdlciBleGl0IHN0YXR1cyB0aGF0IHNhdGlzZmllcyBwcmVkaWNhdGUsIGFuZCBl
bWl0dGluZyBlcnJvciBvdXRwdXQKIC8vIHRoYXQgbWF0Y2hlcyByZWdleC4KLSNkZWZpbmUgQVNT
RVJUX0VYSVQoc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4KSBcCi0gIEdURVNUX0RFQVRIX1RF
U1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCisj
IGRlZmluZSBBU1NFUlRfRVhJVChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpIFwKKyAgICBH
VEVTVF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIEdURVNUX0ZBVEFM
X0ZBSUxVUkVfKQogCiAvLyBMaWtlIEFTU0VSVF9FWElULCBidXQgY29udGludWVzIG9uIHRvIHN1
Y2Nlc3NpdmUgdGVzdHMgaW4gdGhlCiAvLyB0ZXN0IGNhc2UsIGlmIGFueToKLSNkZWZpbmUgRVhQ
RUNUX0VYSVQoc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4KSBcCi0gIEdURVNUX0RFQVRIX1RF
U1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8p
CisjIGRlZmluZSBFWFBFQ1RfRVhJVChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpIFwKKyAg
ICBHVEVTVF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIEdURVNUX05P
TkZBVEFMX0ZBSUxVUkVfKQogCiAvLyBBc3NlcnRzIHRoYXQgYSBnaXZlbiBzdGF0ZW1lbnQgY2F1
c2VzIHRoZSBwcm9ncmFtIHRvIGV4aXQsIGVpdGhlciBieQogLy8gZXhwbGljaXRseSBleGl0aW5n
IHdpdGggYSBub256ZXJvIGV4aXQgY29kZSBvciBiZWluZyBraWxsZWQgYnkgYQogLy8gc2lnbmFs
LCBhbmQgZW1pdHRpbmcgZXJyb3Igb3V0cHV0IHRoYXQgbWF0Y2hlcyByZWdleC4KLSNkZWZpbmUg
QVNTRVJUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKLSAgQVNTRVJUX0VYSVQoc3RhdGVtZW50
LCA6OnRlc3Rpbmc6OmludGVybmFsOjpFeGl0ZWRVbnN1Y2Nlc3NmdWxseSwgcmVnZXgpCisjIGRl
ZmluZSBBU1NFUlRfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAorICAgIEFTU0VSVF9FWElUKHN0
YXRlbWVudCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RXhpdGVkVW5zdWNjZXNzZnVsbHksIHJlZ2V4
KQogCiAvLyBMaWtlIEFTU0VSVF9ERUFUSCwgYnV0IGNvbnRpbnVlcyBvbiB0byBzdWNjZXNzaXZl
IHRlc3RzIGluIHRoZQogLy8gdGVzdCBjYXNlLCBpZiBhbnk6Ci0jZGVmaW5lIEVYUEVDVF9ERUFU
SChzdGF0ZW1lbnQsIHJlZ2V4KSBcCi0gIEVYUEVDVF9FWElUKHN0YXRlbWVudCwgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6RXhpdGVkVW5zdWNjZXNzZnVsbHksIHJlZ2V4KQorIyBkZWZpbmUgRVhQRUNU
X0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKKyAgICBFWFBFQ1RfRVhJVChzdGF0ZW1lbnQsIDo6
dGVzdGluZzo6aW50ZXJuYWw6OkV4aXRlZFVuc3VjY2Vzc2Z1bGx5LCByZWdleCkKIAogLy8gVHdv
IHByZWRpY2F0ZSBjbGFzc2VzIHRoYXQgY2FuIGJlIHVzZWQgaW4ge0FTU0VSVCxFWFBFQ1R9X0VY
SVQqOgogCkBAIC0xODcsOSArMTk5LDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gRXhpdGVkV2l0aENv
ZGUgewogICBjb25zdCBpbnQgZXhpdF9jb2RlXzsKIH07CiAKLSNpZiAhR1RFU1RfT1NfV0lORE9X
UworIyBpZiAhR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfRlVDSFNJQQogLy8gVGVzdHMg
dGhhdCBhbiBleGl0IGNvZGUgZGVzY3JpYmVzIGFuIGV4aXQgZHVlIHRvIHRlcm1pbmF0aW9uIGJ5
IGEKIC8vIGdpdmVuIHNpZ25hbC4KKy8vIEdPT0dMRVRFU1RfQ00wMDA2IERPIE5PVCBERUxFVEUK
IGNsYXNzIEdURVNUX0FQSV8gS2lsbGVkQnlTaWduYWwgewogIHB1YmxpYzoKICAgZXhwbGljaXQg
S2lsbGVkQnlTaWduYWwoaW50IHNpZ251bSk7CkBAIC0xOTcsNyArMjEwLDcgQEAgY2xhc3MgR1RF
U1RfQVBJXyBLaWxsZWRCeVNpZ25hbCB7CiAgcHJpdmF0ZToKICAgY29uc3QgaW50IHNpZ251bV87
CiB9OwotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gIUdURVNUX09T
X1dJTkRPV1MKIAogLy8gRVhQRUNUX0RFQlVHX0RFQVRIIGFzc2VydHMgdGhhdCB0aGUgZ2l2ZW4g
c3RhdGVtZW50cyBkaWUgaW4gZGVidWcgbW9kZS4KIC8vIFRoZSBkZWF0aCB0ZXN0aW5nIGZyYW1l
d29yayBjYXVzZXMgdGhpcyB0byBoYXZlIGludGVyZXN0aW5nIHNlbWFudGljcywKQEAgLTI0Miw0
MCArMjU1LDg4IEBAIGNsYXNzIEdURVNUX0FQSV8gS2lsbGVkQnlTaWduYWwgewogLy8gICBFWFBF
Q1RfRVEoMTIsIERpZUluRGVidWdPcjEyKCZzaWRlZWZmZWN0KSk7CiAvLyB9LCAiZGVhdGgiKTsK
IC8vCi0jaWZkZWYgTkRFQlVHCisjIGlmZGVmIE5ERUJVRwogCi0jZGVmaW5lIEVYUEVDVF9ERUJV
R19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCi0gIGRvIHsgc3RhdGVtZW50OyB9IHdoaWxlICg6
OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgpKQorIyAgZGVmaW5lIEVYUEVDVF9ERUJV
R19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgIEdURVNUX0VYRUNVVEVfU1RBVEVNRU5UXyhz
dGF0ZW1lbnQsIHJlZ2V4KQogCi0jZGVmaW5lIEFTU0VSVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQs
IHJlZ2V4KSBcCi0gIGRvIHsgc3RhdGVtZW50OyB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFs
OjpBbHdheXNGYWxzZSgpKQorIyAgZGVmaW5lIEFTU0VSVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQs
IHJlZ2V4KSBcCisgIEdURVNUX0VYRUNVVEVfU1RBVEVNRU5UXyhzdGF0ZW1lbnQsIHJlZ2V4KQog
Ci0jZWxzZQorIyBlbHNlCiAKLSNkZWZpbmUgRVhQRUNUX0RFQlVHX0RFQVRIKHN0YXRlbWVudCwg
cmVnZXgpIFwKKyMgIGRlZmluZSBFWFBFQ1RfREVCVUdfREVBVEgoc3RhdGVtZW50LCByZWdleCkg
XAogICBFWFBFQ1RfREVBVEgoc3RhdGVtZW50LCByZWdleCkKIAotI2RlZmluZSBBU1NFUlRfREVC
VUdfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAorIyAgZGVmaW5lIEFTU0VSVF9ERUJVR19ERUFU
SChzdGF0ZW1lbnQsIHJlZ2V4KSBcCiAgIEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KQog
Ci0jZW5kaWYgIC8vIE5ERUJVRyBmb3IgRVhQRUNUX0RFQlVHX0RFQVRICisjIGVuZGlmICAvLyBO
REVCVUcgZm9yIEVYUEVDVF9ERUJVR19ERUFUSAogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhf
VEVTVAogCisvLyBUaGlzIG1hY3JvIGlzIHVzZWQgZm9yIGltcGxlbWVudGluZyBtYWNyb3Mgc3Vj
aCBhcworLy8gRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCBhbmQgQVNTRVJUX0RFQVRIX0lGX1NV
UFBPUlRFRCBvbiBzeXN0ZW1zIHdoZXJlCisvLyBkZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRl
ZC4gVGhvc2UgbWFjcm9zIG11c3QgY29tcGlsZSBvbiBzdWNoIHN5c3RlbXMKKy8vIGlmZiBFWFBF
Q1RfREVBVEggYW5kIEFTU0VSVF9ERUFUSCBjb21waWxlIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVy
cyBvbgorLy8gc3lzdGVtcyB0aGF0IHN1cHBvcnQgZGVhdGggdGVzdHMuIFRoaXMgYWxsb3dzIG9u
ZSB0byB3cml0ZSBzdWNoIGEgbWFjcm8KKy8vIG9uIGEgc3lzdGVtIHRoYXQgZG9lcyBub3Qgc3Vw
cG9ydCBkZWF0aCB0ZXN0cyBhbmQgYmUgc3VyZSB0aGF0IGl0IHdpbGwKKy8vIGNvbXBpbGUgb24g
YSBkZWF0aC10ZXN0IHN1cHBvcnRpbmcgc3lzdGVtLiBJdCBpcyBleHBvc2VkIHB1YmxpY2x5IHNv
IHRoYXQKKy8vIHN5c3RlbXMgdGhhdCBoYXZlIGRlYXRoLXRlc3RzIHdpdGggc3RyaWN0ZXIgcmVx
dWlyZW1lbnRzIHRoYW4KKy8vIEdURVNUX0hBU19ERUFUSF9URVNUIGNhbiB3cml0ZSB0aGVpciBv
d24gZXF1aXZhbGVudCBvZgorLy8gRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCBhbmQgQVNTRVJU
X0RFQVRIX0lGX1NVUFBPUlRFRC4KKy8vCisvLyBQYXJhbWV0ZXJzOgorLy8gICBzdGF0ZW1lbnQg
LSAgQSBzdGF0ZW1lbnQgdGhhdCBhIG1hY3JvIHN1Y2ggYXMgRVhQRUNUX0RFQVRIIHdvdWxkIHRl
c3QKKy8vICAgICAgICAgICAgICAgIGZvciBwcm9ncmFtIHRlcm1pbmF0aW9uLiBUaGlzIG1hY3Jv
IGhhcyB0byBtYWtlIHN1cmUgdGhpcworLy8gICAgICAgICAgICAgICAgc3RhdGVtZW50IGlzIGNv
bXBpbGVkIGJ1dCBub3QgZXhlY3V0ZWQsIHRvIGVuc3VyZSB0aGF0CisvLyAgICAgICAgICAgICAg
ICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEIGNvbXBpbGVzIHdpdGggYSBjZXJ0YWluCisvLyAg
ICAgICAgICAgICAgICBwYXJhbWV0ZXIgaWZmIEVYUEVDVF9ERUFUSCBjb21waWxlcyB3aXRoIGl0
LgorLy8gICByZWdleCAgICAgLSAgQSByZWdleCB0aGF0IGEgbWFjcm8gc3VjaCBhcyBFWFBFQ1Rf
REVBVEggd291bGQgdXNlIHRvIHRlc3QKKy8vICAgICAgICAgICAgICAgIHRoZSBvdXRwdXQgb2Yg
c3RhdGVtZW50LiAgVGhpcyBwYXJhbWV0ZXIgaGFzIHRvIGJlCisvLyAgICAgICAgICAgICAgICBj
b21waWxlZCBidXQgbm90IGV2YWx1YXRlZCBieSB0aGlzIG1hY3JvLCB0byBlbnN1cmUgdGhhdAor
Ly8gICAgICAgICAgICAgICAgdGhpcyBtYWNybyBvbmx5IGFjY2VwdHMgZXhwcmVzc2lvbnMgdGhh
dCBhIG1hY3JvIHN1Y2ggYXMKKy8vICAgICAgICAgICAgICAgIEVYUEVDVF9ERUFUSCB3b3VsZCBh
Y2NlcHQuCisvLyAgIHRlcm1pbmF0b3IgLSBNdXN0IGJlIGFuIGVtcHR5IHN0YXRlbWVudCBmb3Ig
RVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRAorLy8gICAgICAgICAgICAgICAgYW5kIGEgcmV0dXJu
IHN0YXRlbWVudCBmb3IgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRC4KKy8vICAgICAgICAgICAg
ICAgIFRoaXMgZW5zdXJlcyB0aGF0IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgd2lsbCBub3QK
Ky8vICAgICAgICAgICAgICAgIGNvbXBpbGUgaW5zaWRlIGZ1bmN0aW9ucyB3aGVyZSBBU1NFUlRf
REVBVEggZG9lc24ndAorLy8gICAgICAgICAgICAgICAgY29tcGlsZS4KKy8vCisvLyAgVGhlIGJy
YW5jaCB0aGF0IGhhcyBhbiBhbHdheXMgZmFsc2UgY29uZGl0aW9uIGlzIHVzZWQgdG8gZW5zdXJl
IHRoYXQKKy8vICBzdGF0ZW1lbnQgYW5kIHJlZ2V4IGFyZSBjb21waWxlZCAoYW5kIHRodXMgc3lu
dGFjdGljYWxseSBjb3JyZWN0KSBidXQKKy8vICBuZXZlciBleGVjdXRlZC4gVGhlIHVucmVhY2hh
YmxlIGNvZGUgbWFjcm8gcHJvdGVjdHMgdGhlIHRlcm1pbmF0b3IKKy8vICBzdGF0ZW1lbnQgZnJv
bSBnZW5lcmF0aW5nIGFuICd1bnJlYWNoYWJsZSBjb2RlJyB3YXJuaW5nIGluIGNhc2UKKy8vICBz
dGF0ZW1lbnQgdW5jb25kaXRpb25hbGx5IHJldHVybnMgb3IgdGhyb3dzLiBUaGUgTWVzc2FnZSBj
b25zdHJ1Y3RvciBhdAorLy8gIHRoZSBlbmQgYWxsb3dzIHRoZSBzeW50YXggb2Ygc3RyZWFtaW5n
IGFkZGl0aW9uYWwgbWVzc2FnZXMgaW50byB0aGUKKy8vICBtYWNybywgZm9yIGNvbXBpbGF0aW9u
YWwgY29tcGF0aWJpbGl0eSB3aXRoIEVYUEVDVF9ERUFUSC9BU1NFUlRfREVBVEguCisjIGRlZmlu
ZSBHVEVTVF9VTlNVUFBPUlRFRF9ERUFUSF9URVNUKHN0YXRlbWVudCwgcmVnZXgsIHRlcm1pbmF0
b3IpIFwKKyAgICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCisgICAgaWYgKDo6dGVz
dGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBcCisgICAgICBHVEVTVF9MT0dfKFdBUk5J
TkcpIFwKKyAgICAgICAgICA8PCAiRGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhp
cyBwbGF0Zm9ybS5cbiIgXAorICAgICAgICAgIDw8ICJTdGF0ZW1lbnQgJyIgI3N0YXRlbWVudCAi
JyBjYW5ub3QgYmUgdmVyaWZpZWQuIjsgXAorICAgIH0gZWxzZSBpZiAoOjp0ZXN0aW5nOjppbnRl
cm5hbDo6QWx3YXlzRmFsc2UoKSkgeyBcCisgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpSRTo6
UGFydGlhbE1hdGNoKCIuKiIsIChyZWdleCkpOyBcCisgICAgICBHVEVTVF9TVVBQUkVTU19VTlJF
QUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKKyAgICAgIHRlcm1pbmF0
b3I7IFwKKyAgICB9IGVsc2UgXAorICAgICAgOjp0ZXN0aW5nOjpNZXNzYWdlKCkKKwogLy8gRVhQ
RUNUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBhbmQKIC8vIEFTU0VSVF9E
RUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgZXhwYW5kIHRvIHJlYWwgZGVhdGgg
dGVzdHMgaWYKIC8vIGRlYXRoIHRlc3RzIGFyZSBzdXBwb3J0ZWQ7IG90aGVyd2lzZSB0aGV5IGp1
c3QgaXNzdWUgYSB3YXJuaW5nLiAgVGhpcyBpcwogLy8gdXNlZnVsIHdoZW4geW91IGFyZSBjb21i
aW5pbmcgZGVhdGggdGVzdCBhc3NlcnRpb25zIHdpdGggbm9ybWFsIHRlc3QKIC8vIGFzc2VydGlv
bnMgaW4gb25lIHRlc3QuCiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLSNkZWZpbmUgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisjIGRlZmluZSBFWFBFQ1Rf
REVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKICAgICBFWFBFQ1RfREVBVEgo
c3RhdGVtZW50LCByZWdleCkKLSNkZWZpbmUgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0
ZW1lbnQsIHJlZ2V4KSBcCisjIGRlZmluZSBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRl
bWVudCwgcmVnZXgpIFwKICAgICBBU1NFUlRfREVBVEgoc3RhdGVtZW50LCByZWdleCkKICNlbHNl
Ci0jZGVmaW5lIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAot
ICAgIEdURVNUX1VOU1VQUE9SVEVEX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcmVnZXgsICkKLSNk
ZWZpbmUgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCi0gICAg
R1RFU1RfVU5TVVBQT1JURURfREVBVEhfVEVTVF8oc3RhdGVtZW50LCByZWdleCwgcmV0dXJuKQor
IyBkZWZpbmUgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisg
ICAgR1RFU1RfVU5TVVBQT1JURURfREVBVEhfVEVTVChzdGF0ZW1lbnQsIHJlZ2V4LCApCisjIGRl
ZmluZSBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKKyAgICBH
VEVTVF9VTlNVUFBPUlRFRF9ERUFUSF9URVNUKHN0YXRlbWVudCwgcmVnZXgsIHJldHVybikKICNl
bmRpZgogCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaAppbmRleCBmMTM1YjY5NDI3
ZmU5ZWJlMjM3YzRjZGE3YTljMmYwZDc4ZGQ3NjhlLi41Y2EwNDE2MTRjYjM1NTkyMmYzNTViODkz
ZjljODRhM2I3ZjUyYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9p
bmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaApAQCAtMjYsMTAgKzI2LDkgQEAKIC8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwogLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0
aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFu
ZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBoZWFkZXIgZmls
ZSBkZWZpbmVzIHRoZSBNZXNzYWdlIGNsYXNzLgogLy8KQEAgLTQzLDEzICs0MiwyMSBAQAogLy8g
dG8gQ0hBTkdFIFdJVEhPVVQgTk9USUNFLiAgVGhlcmVmb3JlIERPIE5PVCBERVBFTkQgT04gSVQg
aW4gYSB1c2VyCiAvLyBwcm9ncmFtIQogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVM
RVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9NRVNTQUdFX0hfCiAjZGVm
aW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfTUVTU0FHRV9IXwogCiAjaW5jbHVkZSA8bGlt
aXRzPgogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+Ci0jaW5jbHVk
ZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRl
cm5hbC9ndGVzdC1wb3J0LmgiCisKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQy
NTEgXAorLyogY2xhc3MgQSBuZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBi
eSBjbGllbnRzIG9mIGNsYXNzIEIgKi8pCisKKy8vIEVuc3VyZXMgdGhhdCB0aGVyZSBpcyBhdCBs
ZWFzdCBvbmUgb3BlcmF0b3I8PCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KKy8vIFNlZSBNZXNz
YWdlJiBvcGVyYXRvcjw8KC4uLikgYmVsb3cgZm9yIHdoeS4KK3ZvaWQgb3BlcmF0b3I8PChjb25z
dCB0ZXN0aW5nOjppbnRlcm5hbDo6U2VjcmV0JiwgaW50KTsKIAogbmFtZXNwYWNlIHRlc3Rpbmcg
ewogCkBAIC01OCw3ICs2NSw3IEBAIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIC8vIFR5cGljYWwgdXNh
Z2U6CiAvLwogLy8gICAxLiBZb3Ugc3RyZWFtIGEgYnVuY2ggb2YgdmFsdWVzIHRvIGEgTWVzc2Fn
ZSBvYmplY3QuCi0vLyAgICAgIEl0IHdpbGwgcmVtZW1iZXIgdGhlIHRleHQgaW4gYSBTdHJTdHJl
YW0uCisvLyAgICAgIEl0IHdpbGwgcmVtZW1iZXIgdGhlIHRleHQgaW4gYSBzdHJpbmdzdHJlYW0u
CiAvLyAgIDIuIFRoZW4geW91IHN0cmVhbSB0aGUgTWVzc2FnZSBvYmplY3QgdG8gYW4gb3N0cmVh
bS4KIC8vICAgICAgVGhpcyBjYXVzZXMgdGhlIHRleHQgaW4gdGhlIE1lc3NhZ2UgdG8gYmUgc3Ry
ZWFtZWQKIC8vICAgICAgdG8gdGhlIG9zdHJlYW0uCkBAIC03NCw3ICs4MSw3IEBAIG5hbWVzcGFj
ZSB0ZXN0aW5nIHsKIC8vIE1lc3NhZ2UgaXMgbm90IGludGVuZGVkIHRvIGJlIGluaGVyaXRlZCBm
cm9tLiAgSW4gcGFydGljdWxhciwgaXRzCiAvLyBkZXN0cnVjdG9yIGlzIG5vdCB2aXJ0dWFsLgog
Ly8KLS8vIE5vdGUgdGhhdCBTdHJTdHJlYW0gYmVoYXZlcyBkaWZmZXJlbnRseSBpbiBnY2MgYW5k
IGluIE1TVkMuICBZb3UKKy8vIE5vdGUgdGhhdCBzdHJpbmdzdHJlYW0gYmVoYXZlcyBkaWZmZXJl
bnRseSBpbiBnY2MgYW5kIGluIE1TVkMuICBZb3UKIC8vIGNhbiBzdHJlYW0gYSBOVUxMIGNoYXIg
cG9pbnRlciB0byBpdCBpbiB0aGUgZm9ybWVyLCBidXQgbm90IGluIHRoZQogLy8gbGF0dGVyIChp
dCBjYXVzZXMgYW4gYWNjZXNzIHZpb2xhdGlvbiBpZiB5b3UgZG8pLiAgVGhlIE1lc3NhZ2UKIC8v
IGNsYXNzIGhpZGVzIHRoaXMgZGlmZmVyZW5jZSBieSB0cmVhdGluZyBhIE5VTEwgY2hhciBwb2lu
dGVyIGFzCkBAIC04NywyNyArOTQsMTggQEAgY2xhc3MgR1RFU1RfQVBJXyBNZXNzYWdlIHsKIAog
IHB1YmxpYzoKICAgLy8gQ29uc3RydWN0cyBhbiBlbXB0eSBNZXNzYWdlLgotICAvLyBXZSBhbGxv
Y2F0ZSB0aGUgU3RyU3RyZWFtIHNlcGFyYXRlbHkgYmVjYXVzZSBpdCBvdGhlcndpc2UgZWFjaCB1
c2Ugb2YKLSAgLy8gQVNTRVJUL0VYUEVDVCBpbiBhIHByb2NlZHVyZSBhZGRzIG92ZXIgMjAwIGJ5
dGVzIHRvIHRoZSBwcm9jZWR1cmUncwotICAvLyBzdGFjayBmcmFtZSBsZWFkaW5nIHRvIGh1Z2Ug
c3RhY2sgZnJhbWVzIGluIHNvbWUgY2FzZXM7IGdjYyBkb2VzIG5vdCByZXVzZQotICAvLyB0aGUg
c3RhY2sgc3BhY2UuCi0gIE1lc3NhZ2UoKSA6IHNzXyhuZXcgaW50ZXJuYWw6OlN0clN0cmVhbSkg
ewotICAgIC8vIEJ5IGRlZmF1bHQsIHdlIHdhbnQgdGhlcmUgdG8gYmUgZW5vdWdoIHByZWNpc2lv
biB3aGVuIHByaW50aW5nCi0gICAgLy8gYSBkb3VibGUgdG8gYSBNZXNzYWdlLgotICAgICpzc18g
PDwgc3RkOjpzZXRwcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpkaWdpdHMx
MCArIDIpOwotICB9CisgIE1lc3NhZ2UoKTsKIAogICAvLyBDb3B5IGNvbnN0cnVjdG9yLgotICBN
ZXNzYWdlKGNvbnN0IE1lc3NhZ2UmIG1zZykgOiBzc18obmV3IGludGVybmFsOjpTdHJTdHJlYW0p
IHsgIC8vIE5PTElOVAorICBNZXNzYWdlKGNvbnN0IE1lc3NhZ2UmIG1zZykgOiBzc18obmV3IDo6
c3RkOjpzdHJpbmdzdHJlYW0pIHsgIC8vIE5PTElOVAogICAgICpzc18gPDwgbXNnLkdldFN0cmlu
ZygpOwogICB9CiAKICAgLy8gQ29uc3RydWN0cyBhIE1lc3NhZ2UgZnJvbSBhIEMtc3RyaW5nLgot
ICBleHBsaWNpdCBNZXNzYWdlKGNvbnN0IGNoYXIqIHN0cikgOiBzc18obmV3IGludGVybmFsOjpT
dHJTdHJlYW0pIHsKKyAgZXhwbGljaXQgTWVzc2FnZShjb25zdCBjaGFyKiBzdHIpIDogc3NfKG5l
dyA6OnN0ZDo6c3RyaW5nc3RyZWFtKSB7CiAgICAgKnNzXyA8PCBzdHI7CiAgIH0KIAotICB+TWVz
c2FnZSgpIHsgZGVsZXRlIHNzXzsgfQogI2lmIEdURVNUX09TX1NZTUJJQU4KICAgLy8gU3RyZWFt
cyBhIHZhbHVlIChlaXRoZXIgYSBwb2ludGVyIG9yIG5vdCkgdG8gdGhpcyBvYmplY3QuCiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMTE5LDcgKzExNywyMiBAQCBjbGFzcyBHVEVTVF9BUElf
IE1lc3NhZ2UgewogICAvLyBTdHJlYW1zIGEgbm9uLXBvaW50ZXIgdmFsdWUgdG8gdGhpcyBvYmpl
Y3QuCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBpbmxpbmUgTWVzc2FnZSYgb3BlcmF0b3Ig
PDwoY29uc3QgVCYgdmFsKSB7Ci0gICAgOjpHVGVzdFN0cmVhbVRvSGVscGVyKHNzXywgdmFsKTsK
KyAgICAvLyBTb21lIGxpYnJhcmllcyBvdmVybG9hZCA8PCBmb3IgU1RMIGNvbnRhaW5lcnMuICBU
aGVzZQorICAgIC8vIG92ZXJsb2FkcyBhcmUgZGVmaW5lZCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFj
ZSBpbnN0ZWFkIG9mIDo6c3RkLgorICAgIC8vCisgICAgLy8gQysrJ3Mgc3ltYm9sIGxvb2t1cCBy
dWxlIChpLmUuIEtvZW5pZyBsb29rdXApIHNheXMgdGhhdCB0aGVzZQorICAgIC8vIG92ZXJsb2Fk
cyBhcmUgdmlzaWJsZSBpbiBlaXRoZXIgdGhlIHN0ZCBuYW1lc3BhY2Ugb3IgdGhlIGdsb2JhbAor
ICAgIC8vIG5hbWVzcGFjZSwgYnV0IG5vdCBvdGhlciBuYW1lc3BhY2VzLCBpbmNsdWRpbmcgdGhl
IHRlc3RpbmcKKyAgICAvLyBuYW1lc3BhY2Ugd2hpY2ggR29vZ2xlIFRlc3QncyBNZXNzYWdlIGNs
YXNzIGlzIGluLgorICAgIC8vCisgICAgLy8gVG8gYWxsb3cgU1RMIGNvbnRhaW5lcnMgKGFuZCBv
dGhlciB0eXBlcyB0aGF0IGhhcyBhIDw8IG9wZXJhdG9yCisgICAgLy8gZGVmaW5lZCBpbiB0aGUg
Z2xvYmFsIG5hbWVzcGFjZSkgdG8gYmUgdXNlZCBpbiBHb29nbGUgVGVzdAorICAgIC8vIGFzc2Vy
dGlvbnMsIHRlc3Rpbmc6Ok1lc3NhZ2UgbXVzdCBhY2Nlc3MgdGhlIGN1c3RvbSA8PCBvcGVyYXRv
cgorICAgIC8vIGZyb20gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICBXaXRoIHRoaXMgdXNpbmcgZGVj
bGFyYXRpb24sCisgICAgLy8gb3ZlcmxvYWRzIG9mIDw8IGRlZmluZWQgaW4gdGhlIGdsb2JhbCBu
YW1lc3BhY2UgYW5kIHRob3NlCisgICAgLy8gdmlzaWJsZSB2aWEgS29lbmlnIGxvb2t1cCBhcmUg
Ym90aCBleHBvc2VkIGluIHRoaXMgZnVuY3Rpb24uCisgICAgdXNpbmcgOjpvcGVyYXRvciA8PDsK
KyAgICAqc3NfIDw8IHZhbDsKICAgICByZXR1cm4gKnRoaXM7CiAgIH0KIApAQCAtMTQxLDcgKzE1
NCw3IEBAIGNsYXNzIEdURVNUX0FQSV8gTWVzc2FnZSB7CiAgICAgaWYgKHBvaW50ZXIgPT0gTlVM
TCkgewogICAgICAgKnNzXyA8PCAiKG51bGwpIjsKICAgICB9IGVsc2UgewotICAgICAgOjpHVGVz
dFN0cmVhbVRvSGVscGVyKHNzXywgcG9pbnRlcik7CisgICAgICAqc3NfIDw8IHBvaW50ZXI7CiAg
ICAgfQogICAgIHJldHVybiAqdGhpczsKICAgfQpAQCAtMTY1LDEyICsxNzgsOCBAQCBjbGFzcyBH
VEVTVF9BUElfIE1lc3NhZ2UgewogCiAgIC8vIFRoZXNlIHR3byBvdmVybG9hZHMgYWxsb3cgc3Ry
ZWFtaW5nIGEgd2lkZSBDIHN0cmluZyB0byBhIE1lc3NhZ2UKICAgLy8gdXNpbmcgdGhlIFVURi04
IGVuY29kaW5nLgotICBNZXNzYWdlJiBvcGVyYXRvciA8PChjb25zdCB3Y2hhcl90KiB3aWRlX2Nf
c3RyKSB7Ci0gICAgcmV0dXJuICp0aGlzIDw8IGludGVybmFsOjpTdHJpbmc6OlNob3dXaWRlQ1N0
cmluZyh3aWRlX2Nfc3RyKTsKLSAgfQotICBNZXNzYWdlJiBvcGVyYXRvciA8PCh3Y2hhcl90KiB3
aWRlX2Nfc3RyKSB7Ci0gICAgcmV0dXJuICp0aGlzIDw8IGludGVybmFsOjpTdHJpbmc6OlNob3dX
aWRlQ1N0cmluZyh3aWRlX2Nfc3RyKTsKLSAgfQorICBNZXNzYWdlJiBvcGVyYXRvciA8PChjb25z
dCB3Y2hhcl90KiB3aWRlX2Nfc3RyKTsKKyAgTWVzc2FnZSYgb3BlcmF0b3IgPDwod2NoYXJfdCog
d2lkZV9jX3N0cik7CiAKICNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKICAgLy8gQ29udmVydHMg
dGhlIGdpdmVuIHdpZGUgc3RyaW5nIHRvIGEgbmFycm93IHN0cmluZyB1c2luZyB0aGUgVVRGLTgK
QEAgLTE4NCwxMyArMTkzLDExIEBAIGNsYXNzIEdURVNUX0FQSV8gTWVzc2FnZSB7CiAgIE1lc3Nh
Z2UmIG9wZXJhdG9yIDw8KGNvbnN0IDo6d3N0cmluZyYgd3N0cik7CiAjZW5kaWYgIC8vIEdURVNU
X0hBU19HTE9CQUxfV1NUUklORwogCi0gIC8vIEdldHMgdGhlIHRleHQgc3RyZWFtZWQgdG8gdGhp
cyBvYmplY3Qgc28gZmFyIGFzIGEgU3RyaW5nLgorICAvLyBHZXRzIHRoZSB0ZXh0IHN0cmVhbWVk
IHRvIHRoaXMgb2JqZWN0IHNvIGZhciBhcyBhbiBzdGQ6OnN0cmluZy4KICAgLy8gRWFjaCAnXDAn
IGNoYXJhY3RlciBpbiB0aGUgYnVmZmVyIGlzIHJlcGxhY2VkIHdpdGggIlxcMCIuCiAgIC8vCiAg
IC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JB
TS4KLSAgaW50ZXJuYWw6OlN0cmluZyBHZXRTdHJpbmcoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGlu
dGVybmFsOjpTdHJTdHJlYW1Ub1N0cmluZyhzc18pOwotICB9CisgIHN0ZDo6c3RyaW5nIEdldFN0
cmluZygpIGNvbnN0OwogCiAgcHJpdmF0ZToKICNpZiBHVEVTVF9PU19TWU1CSUFOCkBAIC0xOTks
MjEgKzIwNiwyNSBAQCBjbGFzcyBHVEVTVF9BUElfIE1lc3NhZ2UgewogICAvLyBkZWNpZGUgYmV0
d2VlbiBjbGFzcyB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMgZm9yIFQgYW5kIFQqLCBzbyBhCiAg
IC8vIHRyMTo6dHlwZV90cmFpdHMtbGlrZSBpc19wb2ludGVyIHdvcmtzLCBhbmQgd2UgY2FuIG92
ZXJsb2FkIG9uIHRoYXQuCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBpbmxpbmUgdm9pZCBT
dHJlYW1IZWxwZXIoaW50ZXJuYWw6OnRydWVfdHlwZSAvKmR1bW15Ki8sIFQqIHBvaW50ZXIpIHsK
KyAgaW5saW5lIHZvaWQgU3RyZWFtSGVscGVyKGludGVybmFsOjp0cnVlX3R5cGUgLyppc19wb2lu
dGVyKi8sIFQqIHBvaW50ZXIpIHsKICAgICBpZiAocG9pbnRlciA9PSBOVUxMKSB7CiAgICAgICAq
c3NfIDw8ICIobnVsbCkiOwogICAgIH0gZWxzZSB7Ci0gICAgICA6OkdUZXN0U3RyZWFtVG9IZWxw
ZXIoc3NfLCBwb2ludGVyKTsKKyAgICAgICpzc18gPDwgcG9pbnRlcjsKICAgICB9CiAgIH0KICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIGlubGluZSB2b2lkIFN0cmVhbUhlbHBlcihpbnRlcm5h
bDo6ZmFsc2VfdHlwZSAvKmR1bW15Ki8sIGNvbnN0IFQmIHZhbHVlKSB7Ci0gICAgOjpHVGVzdFN0
cmVhbVRvSGVscGVyKHNzXywgdmFsdWUpOworICBpbmxpbmUgdm9pZCBTdHJlYW1IZWxwZXIoaW50
ZXJuYWw6OmZhbHNlX3R5cGUgLyppc19wb2ludGVyKi8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUJiB2YWx1ZSkgeworICAgIC8vIFNlZSB0aGUgY29tbWVudHMgaW4gTWVzc2Fn
ZSYgb3BlcmF0b3IgPDwoY29uc3QgVCYpIGFib3ZlIGZvciB3aHkKKyAgICAvLyB3ZSBuZWVkIHRo
aXMgdXNpbmcgc3RhdGVtZW50LgorICAgIHVzaW5nIDo6b3BlcmF0b3IgPDw7CisgICAgKnNzXyA8
PCB2YWx1ZTsKICAgfQogI2VuZGlmICAvLyBHVEVTVF9PU19TWU1CSUFOCiAKICAgLy8gV2UnbGwg
aG9sZCB0aGUgdGV4dCBzdHJlYW1lZCB0byB0aGlzIG9iamVjdCBoZXJlLgotICBpbnRlcm5hbDo6
U3RyU3RyZWFtKiBjb25zdCBzc187CisgIGNvbnN0IGludGVybmFsOjpzY29wZWRfcHRyPCA6OnN0
ZDo6c3RyaW5nc3RyZWFtPiBzc187CiAKICAgLy8gV2UgZGVjbGFyZSAoYnV0IGRvbid0IGltcGxl
bWVudCkgdGhpcyB0byBwcmV2ZW50IHRoZSBjb21waWxlcgogICAvLyBmcm9tIGltcGxlbWVudGlu
ZyB0aGUgYXNzaWdubWVudCBvcGVyYXRvci4KQEAgLTIyNSw2ICsyMzYsMjAgQEAgaW5saW5lIHN0
ZDo6b3N0cmVhbSYgb3BlcmF0b3IgPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgTWVzc2FnZSYg
c2IpIHsKICAgcmV0dXJuIG9zIDw8IHNiLkdldFN0cmluZygpOwogfQogCituYW1lc3BhY2UgaW50
ZXJuYWwgeworCisvLyBDb252ZXJ0cyBhIHN0cmVhbWFibGUgdmFsdWUgdG8gYW4gc3RkOjpzdHJp
bmcuICBBIE5VTEwgcG9pbnRlciBpcworLy8gY29udmVydGVkIHRvICIobnVsbCkiLiAgV2hlbiB0
aGUgaW5wdXQgdmFsdWUgaXMgYSA6OnN0cmluZywKKy8vIDo6c3RkOjpzdHJpbmcsIDo6d3N0cmlu
Zywgb3IgOjpzdGQ6OndzdHJpbmcgb2JqZWN0LCBlYWNoIE5VTAorLy8gY2hhcmFjdGVyIGluIGl0
IGlzIHJlcGxhY2VkIHdpdGggIlxcMCIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0ZDo6c3Ry
aW5nIFN0cmVhbWFibGVUb1N0cmluZyhjb25zdCBUJiBzdHJlYW1hYmxlKSB7CisgIHJldHVybiAo
TWVzc2FnZSgpIDw8IHN0cmVhbWFibGUpLkdldFN0cmluZygpOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAKK0dURVNUX0RJU0FCTEVfTVND
X1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQyNTEKKwogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dU
RVNUX0dURVNUX01FU1NBR0VfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgKaW5kZXggODEwMDY5NjQ0ZDIzYWQz
NTU5NzNjYjUzZmNlYjBhODU2YjBhMDA2Yy4uMWUyMmY2ODUwMjQwZjEzZWJkOTllZTlhOWFmODM2
YmJhYjczYmMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgKQEAgLTEsNCArMSw2IEBACi0vLyBUaGlzIGZp
bGUgd2FzIEdFTkVSQVRFRCBieSBhIHNjcmlwdC4gIERPIE5PVCBFRElUIEJZIEhBTkQhISEKKy8v
IFRoaXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5IGNvbW1hbmQ6CisvLyAgICAgcHVtcC5weSBndGVz
dC1wYXJhbS10ZXN0LmgucHVtcAorLy8gRE8gTk9UIEVESVQgQlkgSEFORCEhIQogCiAvLyBDb3B5
cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KIC8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0yOSwx
MyArMzEsMTMgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRo
b3JzOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQotLy8KIC8vIE1hY3JvcyBhbmQgZnVu
Y3Rpb25zIGZvciBpbXBsZW1lbnRpbmcgcGFyYW1ldGVyaXplZCB0ZXN0cwotLy8gaW4gR29vZ2xl
IEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBpbiBHb29nbGUgQysrIFRl
c3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAvLyBUaGlzIGZp
bGUgaXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBULiAgRE8gTk9UIEVESVQgQlkgSEFORCEKIC8vCisv
LyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVE
RV9HVEVTVF9HVEVTVF9QQVJBTV9URVNUX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1Rf
R1RFU1RfUEFSQU1fVEVTVF9IXwogCkBAIC00OCwxMCArNTAsMTIgQEAKICNpZiAwCiAKIC8vIFRv
IHdyaXRlIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIGZpcnN0IHlvdSBzaG91bGQgZGVmaW5l
IGEgZml4dHVyZQotLy8gY2xhc3MuIEl0IG11c3QgYmUgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRl
c3RXaXRoUGFyYW08VD4sIHdoZXJlIFQgaXMKLS8vIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVy
IHZhbHVlcy4gVGVzdFdpdGhQYXJhbTxUPiBpcyBpdHNlbGYgZGVyaXZlZAotLy8gZnJvbSB0ZXN0
aW5nOjpUZXN0LiBUIGNhbiBiZSBhbnkgY29weWFibGUgdHlwZS4gSWYgaXQncyBhIHJhdyBwb2lu
dGVyLAotLy8geW91IGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIGxpZmVzcGFuIG9m
IHRoZSBwb2ludGVkIHZhbHVlcy4KKy8vIGNsYXNzLiBJdCBpcyB1c3VhbGx5IGRlcml2ZWQgZnJv
bSB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPFQ+IChzZWUgYmVsb3cgZm9yCisvLyBhbm90aGVyIGlu
aGVyaXRhbmNlIHNjaGVtZSB0aGF0J3Mgc29tZXRpbWVzIHVzZWZ1bCBpbiBtb3JlIGNvbXBsaWNh
dGVkCisvLyBjbGFzcyBoaWVyYXJjaGllcyksIHdoZXJlIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1l
dGVyIHZhbHVlcy4KKy8vIFRlc3RXaXRoUGFyYW08VD4gaXMgaXRzZWxmIGRlcml2ZWQgZnJvbSB0
ZXN0aW5nOjpUZXN0LiBUIGNhbiBiZSBhbnkKKy8vIGNvcHlhYmxlIHR5cGUuIElmIGl0J3MgYSBy
YXcgcG9pbnRlciwgeW91IGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlCisvLyBsaWZl
c3BhbiBvZiB0aGUgcG9pbnRlZCB2YWx1ZXMuCiAKIGNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGNvbnN0IGNoYXIqPiB7CiAgIC8vIFlvdSBjYW4gaW1wbGVt
ZW50IGFsbCB0aGUgdXN1YWwgY2xhc3MgZml4dHVyZSBtZW1iZXJzIGhlcmUuCkBAIC03NSw3ICs3
OSw3IEBAIFRFU1RfUChGb29UZXN0LCBIYXNCbGFoQmxhaCkgewogLy8gRmluYWxseSwgeW91IGNh
biB1c2UgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgdG8gaW5zdGFudGlhdGUgdGhlIHRlc3QKIC8v
IGNhc2Ugd2l0aCBhbnkgc2V0IG9mIHBhcmFtZXRlcnMgeW91IHdhbnQuIEdvb2dsZSBUZXN0IGRl
ZmluZXMgYSBudW1iZXIKIC8vIG9mIGZ1bmN0aW9ucyBmb3IgZ2VuZXJhdGluZyB0ZXN0IHBhcmFt
ZXRlcnMuIFRoZXkgcmV0dXJuIHdoYXQgd2UgY2FsbAotLy8gKHN1cnByaXNlISkgcGFyYW1ldGVy
IGdlbmVyYXRvcnMuIEhlcmUgaXMgYSAgc3VtbWFyeSBvZiB0aGVtLCB3aGljaAorLy8gKHN1cnBy
aXNlISkgcGFyYW1ldGVyIGdlbmVyYXRvcnMuIEhlcmUgaXMgYSBzdW1tYXJ5IG9mIHRoZW0sIHdo
aWNoCiAvLyBhcmUgYWxsIGluIHRoZSB0ZXN0aW5nIG5hbWVzcGFjZToKIC8vCiAvLwpAQCAtMTQ2
LDIzICsxNTAsNDQgQEAgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQW5vdGhlckluc3RhbnRpYXRp
b25OYW1lLCBGb29UZXN0LCBWYWx1ZXNJbihwZXRzKSk7CiAvLyBJbiB0aGUgZnV0dXJlLCB3ZSBw
bGFuIHRvIHB1Ymxpc2ggdGhlIEFQSSBmb3IgZGVmaW5pbmcgbmV3IHBhcmFtZXRlcgogLy8gZ2Vu
ZXJhdG9ycy4gQnV0IGZvciBub3cgdGhpcyBpbnRlcmZhY2UgcmVtYWlucyBwYXJ0IG9mIHRoZSBp
bnRlcm5hbAogLy8gaW1wbGVtZW50YXRpb24gYW5kIGlzIHN1YmplY3QgdG8gY2hhbmdlLgorLy8K
Ky8vCisvLyBBIHBhcmFtZXRlcml6ZWQgdGVzdCBmaXh0dXJlIG11c3QgYmUgZGVyaXZlZCBmcm9t
IHRlc3Rpbmc6OlRlc3QgYW5kIGZyb20KKy8vIHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxU
Piwgd2hlcmUgVCBpcyB0aGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVyCisvLyB2YWx1ZXMuIEluaGVy
aXRpbmcgZnJvbSBUZXN0V2l0aFBhcmFtPFQ+IHNhdGlzZmllcyB0aGF0IHJlcXVpcmVtZW50IGJl
Y2F1c2UKKy8vIFRlc3RXaXRoUGFyYW08VD4gaW5oZXJpdHMgZnJvbSBib3RoIFRlc3QgYW5kIFdp
dGhQYXJhbUludGVyZmFjZS4gSW4gbW9yZQorLy8gY29tcGxpY2F0ZWQgaGllcmFyY2hpZXMsIGhv
d2V2ZXIsIGl0IGlzIG9jY2FzaW9uYWxseSB1c2VmdWwgdG8gaW5oZXJpdAorLy8gc2VwYXJhdGVs
eSBmcm9tIFRlc3QgYW5kIFdpdGhQYXJhbUludGVyZmFjZS4gRm9yIGV4YW1wbGU6CisKK2NsYXNz
IEJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgIC8vIFlvdSBjYW4gaW5oZXJp
dCBhbGwgdGhlIHVzdWFsIG1lbWJlcnMgZm9yIGEgbm9uLXBhcmFtZXRlcml6ZWQgdGVzdAorICAv
LyBmaXh0dXJlIGhlcmUuCit9OworCitjbGFzcyBEZXJpdmVkVGVzdCA6IHB1YmxpYyBCYXNlVGVz
dCwgcHVibGljIDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPGludD4geworICAvLyBUaGUg
dXN1YWwgdGVzdCBmaXh0dXJlIG1lbWJlcnMgZ28gaGVyZSB0b28uCit9OworCitURVNUX0YoQmFz
ZVRlc3QsIEhhc0ZvbykgeworICAvLyBUaGlzIGlzIGFuIG9yZGluYXJ5IG5vbi1wYXJhbWV0ZXJp
emVkIHRlc3QuCit9CisKK1RFU1RfUChEZXJpdmVkVGVzdCwgRG9lc0JsYWgpIHsKKyAgLy8gR2V0
UGFyYW0gd29ya3MganVzdCB0aGUgc2FtZSBoZXJlIGFzIGlmIHlvdSBpbmhlcml0IGZyb20gVGVz
dFdpdGhQYXJhbS4KKyAgRVhQRUNUX1RSVUUoZm9vLkJsYWgoR2V0UGFyYW0oKSkpOworfQogCiAj
ZW5kaWYgIC8vIDAKIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KKyNp
bmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKICNpZiAhR1RFU1RfT1NfU1lN
QklBTgotI2luY2x1ZGUgPHV0aWxpdHk+CisjIGluY2x1ZGUgPHV0aWxpdHk+CiAjZW5kaWYKIAot
Ly8gc2NyaXB0cy9mdXNlX2d0ZXN0LnB5IGRlcGVuZHMgb24gZ3Rlc3QncyBvd24gaGVhZGVyIGJl
aW5nICNpbmNsdWRlZAotLy8gKnVuY29uZGl0aW9uYWxseSouICBUaGVyZWZvcmUgdGhlc2UgI2lu
Y2x1ZGVzIGNhbm5vdCBiZSBtb3ZlZAotLy8gaW5zaWRlICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVT
VC4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oPgotI2luY2x1ZGUg
PGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRl
cm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oPgotCi0jaWYgR1RFU1RfSEFTX1BBUkFN
X1RFU1QKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oIgorI2luY2x1
ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaCIKKyNpbmNsdWRlICJndGVzdC9p
bnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIgogCiBuYW1lc3BhY2UgdGVzdGlu
ZyB7CiAKQEAgLTI0Myw3ICsyNjgsNyBAQCBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8VD4gUmFu
Z2UoVCBzdGFydCwgVCBlbmQpIHsKIC8vIGVhY2ggd2l0aCBDLXN0cmluZyB2YWx1ZXMgb2YgImZv
byIsICJiYXIiLCBhbmQgImJheiI6CiAvLwogLy8gY29uc3QgY2hhciogc3RyaW5nc1tdID0geyJm
b28iLCAiYmFyIiwgImJheiJ9OwotLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU3RyaW5nU2Vx
dWVuY2UsIFNydGluZ1Rlc3QsIFZhbHVlc0luKHN0cmluZ3MpKTsKKy8vIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKFN0cmluZ1NlcXVlbmNlLCBTdHJpbmdUZXN0LCBWYWx1ZXNJbihzdHJpbmdzKSk7
CiAvLwogLy8gVGhpcyBpbnN0YW50aWF0ZXMgdGVzdHMgZnJvbSB0ZXN0IGNhc2UgU3RsU3RyaW5n
VGVzdAogLy8gZWFjaCB3aXRoIFNUTCBzdHJpbmdzIHdpdGggdmFsdWVzICJhIiBhbmQgImIiOgpA
QCAtMjc2LDExICszMDEsMTAgQEAgaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFJhbmdlKFQg
c3RhcnQsIFQgZW5kKSB7CiAvLwogdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcj4K
IGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjwKLSAgICB0eXBlbmFtZSA6OnN0ZDo6aXRlcmF0b3Jf
dHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+IFZhbHVlc0luKAotICBGb3J3YXJk
SXRlcmF0b3IgYmVnaW4sCi0gIEZvcndhcmRJdGVyYXRvciBlbmQpIHsKLSAgdHlwZWRlZiB0eXBl
bmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGUK
LSAgICAgIFBhcmFtVHlwZTsKKyAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXRlcmF0
b3JUcmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4KK1ZhbHVlc0luKEZvcndhcmRJ
dGVyYXRvciBiZWdpbiwgRm9yd2FyZEl0ZXJhdG9yIGVuZCkgeworICB0eXBlZGVmIHR5cGVuYW1l
IDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJhaXRzPEZvcndhcmRJdGVyYXRvcj4KKyAg
ICAgIDo6dmFsdWVfdHlwZSBQYXJhbVR5cGU7CiAgIHJldHVybiBpbnRlcm5hbDo6UGFyYW1HZW5l
cmF0b3I8UGFyYW1UeXBlPigKICAgICAgIG5ldyBpbnRlcm5hbDo6VmFsdWVzSW5JdGVyYXRvclJh
bmdlR2VuZXJhdG9yPFBhcmFtVHlwZT4oYmVnaW4sIGVuZCkpOwogfQpAQCAtMTE5Miw3ICsxMjE2
LDcgQEAgaW5saW5lIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxib29sPiBCb29sKCkgewogICBy
ZXR1cm4gVmFsdWVzKGZhbHNlLCB0cnVlKTsKIH0KIAotI2lmIEdURVNUX0hBU19DT01CSU5FCisj
IGlmIEdURVNUX0hBU19DT01CSU5FCiAvLyBDb21iaW5lKCkgYWxsb3dzIHRoZSB1c2VyIHRvIGNv
bWJpbmUgdHdvIG9yIG1vcmUgc2VxdWVuY2VzIHRvIHByb2R1Y2UKIC8vIHZhbHVlcyBvZiBhIENh
cnRlc2lhbiBwcm9kdWN0IG9mIHRob3NlIHNlcXVlbmNlcycgZWxlbWVudHMuCiAvLwpAQCAtMTIy
OCw3ICsxMjUyLDcgQEAgaW5saW5lIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxib29sPiBCb29s
KCkgewogLy8gQm9vbGVhbiBmbGFnczoKIC8vCiAvLyBjbGFzcyBGbGFnRGVwZW5kZW50VGVzdAot
Ly8gICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08dHVwbGUoYm9vbCwgYm9vbCk+
ID4geworLy8gICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08dHVwbGU8Ym9vbCwg
Ym9vbD4gPiB7CiAvLyAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKIC8vICAgICAvLyBBc3NpZ25z
IGV4dGVybmFsX2ZsYWdfMSBhbmQgZXh0ZXJuYWxfZmxhZ18yIHZhbHVlcyBmcm9tIHRoZSB0dXBs
ZS4KIC8vICAgICB0aWUoZXh0ZXJuYWxfZmxhZ18xLCBleHRlcm5hbF9mbGFnXzIpID0gR2V0UGFy
YW0oKTsKQEAgLTEzNDQsMTEgKzEzNjgsOSBAQCBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhv
bGRlcjEwPEdlbmVyYXRvcjEsIEdlbmVyYXRvcjIsIEdlbmVyYXRvcjMsCiAgICAgICBHZW5lcmF0
b3IxMD4oCiAgICAgICBnMSwgZzIsIGczLCBnNCwgZzUsIGc2LCBnNywgZzgsIGc5LCBnMTApOwog
fQotI2VuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQotCi0KKyMgZW5kaWYgIC8vIEdURVNUX0hB
U19DT01CSU5FCiAKLSNkZWZpbmUgVEVTVF9QKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIFwK
KyMgZGVmaW5lIFRFU1RfUCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBcCiAgIGNsYXNzIEdU
RVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXAogICAgICAg
OiBwdWJsaWMgdGVzdF9jYXNlX25hbWUgeyBcCiAgICBwdWJsaWM6IFwKQEAgLTEzNTgsMTQgKzEz
ODAsMTcgQEAgaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIxMDxHZW5lcmF0b3IxLCBH
ZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAogICAgIHN0YXRpYyBpbnQgQWRkVG9SZWdpc3RyeSgpIHsg
XAogICAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+cGFyYW1ldGVyaXpl
ZF90ZXN0X3JlZ2lzdHJ5KCkuIFwKICAgICAgICAgICBHZXRUZXN0Q2FzZVBhdHRlcm5Ib2xkZXI8
dGVzdF9jYXNlX25hbWU+KFwKLSAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBfX0ZJTEVf
XywgX19MSU5FX18pLT5BZGRUZXN0UGF0dGVybihcCi0gICAgICAgICAgICAgICAgICAjdGVzdF9j
YXNlX25hbWUsIFwKLSAgICAgICAgICAgICAgICAgICN0ZXN0X25hbWUsIFwKLSAgICAgICAgICAg
ICAgICAgIG5ldyA6OnRlc3Rpbmc6OmludGVybmFsOjpUZXN0TWV0YUZhY3Rvcnk8IFwKLSAgICAg
ICAgICAgICAgICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0
ZXN0X25hbWUpPigpKTsgXAorICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIFwKKyAgICAg
ICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKFwKKyAgICAgICAgICAg
ICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykpLT5BZGRUZXN0UGF0dGVybihcCisgICAgICAgICAg
ICAgICAgICAgICAgR1RFU1RfU1RSSU5HSUZZXyh0ZXN0X2Nhc2VfbmFtZSksIFwKKyAgICAgICAg
ICAgICAgICAgICAgICBHVEVTVF9TVFJJTkdJRllfKHRlc3RfbmFtZSksIFwKKyAgICAgICAgICAg
ICAgICAgICAgICBuZXcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdE1ldGFGYWN0b3J5PCBcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8oXAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSk+KCkpOyBc
CiAgICAgICByZXR1cm4gMDsgXAogICAgIH0gXAotICAgIHN0YXRpYyBpbnQgZ3Rlc3RfcmVnaXN0
ZXJpbmdfZHVtbXlfOyBcCisgICAgc3RhdGljIGludCBndGVzdF9yZWdpc3RlcmluZ19kdW1teV8g
R1RFU1RfQVRUUklCVVRFX1VOVVNFRF87IFwKICAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKFwKICAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwg
dGVzdF9uYW1lKSk7IFwKICAgfTsgXApAQCAtMTM3NCwxOSArMTM5OSwzOSBAQCBpbnRlcm5hbDo6
Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjEwPEdlbmVyYXRvcjEsIEdlbmVyYXRvcjIsIEdlbmVyYXRv
cjMsCiAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25h
bWUpOjpBZGRUb1JlZ2lzdHJ5KCk7IFwKICAgdm9pZCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRl
c3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpOjpUZXN0Qm9keSgpCiAKLSNkZWZpbmUgSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AocHJlZml4LCB0ZXN0X2Nhc2VfbmFtZSwgZ2VuZXJhdG9yKSBcCi0gIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5
cGU+IFwKLSAgICAgIGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0
b3JfKCkgeyByZXR1cm4gZ2VuZXJhdG9yOyB9IFwKLSAgaW50IGd0ZXN0XyMjcHJlZml4IyN0ZXN0
X2Nhc2VfbmFtZSMjX2R1bW15XyA9IFwKLSAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldElu
c3RhbmNlKCktPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpLiBcCi0gICAgICAgICAgR2V0
VGVzdENhc2VQYXR0ZXJuSG9sZGVyPHRlc3RfY2FzZV9uYW1lPihcCi0gICAgICAgICAgICAgICN0
ZXN0X2Nhc2VfbmFtZSwgX19GSUxFX18sIF9fTElORV9fKS0+QWRkVGVzdENhc2VJbnN0YW50aWF0
aW9uKFwKLSAgICAgICAgICAgICAgICAgICNwcmVmaXgsIFwKLSAgICAgICAgICAgICAgICAgICZn
dGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdG9yXywgXAotICAgICAg
ICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKQorLy8gVGhlIG9wdGlvbmFsIGxhc3QgYXJn
dW1lbnQgdG8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgYWxsb3dzIHRoZSB1c2VyCisvLyB0byBz
cGVjaWZ5IGEgZnVuY3Rpb24gb3IgZnVuY3RvciB0aGF0IGdlbmVyYXRlcyBjdXN0b20gdGVzdCBu
YW1lIHN1ZmZpeGVzCisvLyBiYXNlZCBvbiB0aGUgdGVzdCBwYXJhbWV0ZXJzLiBUaGUgZnVuY3Rp
b24gc2hvdWxkIGFjY2VwdCBvbmUgYXJndW1lbnQgb2YKKy8vIHR5cGUgdGVzdGluZzo6VGVzdFBh
cmFtSW5mbzxjbGFzcyBQYXJhbVR5cGU+LCBhbmQgcmV0dXJuIHN0ZDo6c3RyaW5nLgorLy8KKy8v
IHRlc3Rpbmc6OlByaW50VG9TdHJpbmdQYXJhbU5hbWUgaXMgYSBidWlsdGluIHRlc3Qgc3VmZml4
IGdlbmVyYXRvciB0aGF0CisvLyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0ZXN0aW5nOjpQcmludFRv
U3RyaW5nKEdldFBhcmFtKCkpLgorLy8KKy8vIE5vdGU6IHRlc3QgbmFtZXMgbXVzdCBiZSBub24t
ZW1wdHksIHVuaXF1ZSwgYW5kIG1heSBvbmx5IGNvbnRhaW4gQVNDSUkKKy8vIGFscGhhbnVtZXJp
YyBjaGFyYWN0ZXJzIG9yIHVuZGVyc2NvcmUuIEJlY2F1c2UgUHJpbnRUb1N0cmluZyBhZGRzIHF1
b3RlcworLy8gdG8gc3RkOjpzdHJpbmcgYW5kIEMgc3RyaW5ncywgaXQgd29uJ3Qgd29yayBmb3Ig
dGhlc2UgdHlwZXMuCisKKyNkZWZpbmUgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AocHJlZml4LCB0
ZXN0X2Nhc2VfbmFtZSwgZ2VuZXJhdG9yLCAuLi4pICAgICAgICBcCisgIHN0YXRpYyA6OnRlc3Rp
bmc6OmludGVybmFsOjpQYXJhbUdlbmVyYXRvcjx0ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiAg
ICAgICAgXAorICAgICAgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVy
YXRvcl8oKSB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gZ2VuZXJhdG9yOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICBzdGF0aWMgOjpzdGQ6OnN0cmluZyBndGVzdF8j
I3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdGVOYW1lXyggICAgIFwKKyAgICAg
IGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzx0ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBl
PiYgaW5mbykgeyAgICAgICBcCisgICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkdldFBh
cmFtTmFtZUdlbjx0ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiggICAgXAorICAgICAgICBfX1ZB
X0FSR1NfXykoaW5mbyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHN0YXRpYyBpbnQgZ3Rlc3Rf
IyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfZHVtbXlfIEdURVNUX0FUVFJJQlVURV9VTlVTRURf
ID0gXAorICAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAtPnBhcmFtZXRlcml6ZWRf
dGVzdF9yZWdpc3RyeSgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgLkdldFRlc3RDYXNlUGF0dGVybkhvbGRlcjx0ZXN0X2Nhc2VfbmFtZT4oICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKF9fRklMRV9fLCBfX0xJTkVf
XykpICAgICAgICAgICBcCisgICAgICAgICAgLT5BZGRUZXN0Q2FzZUluc3RhbnRpYXRpb24oICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAj
cHJlZml4LCAmZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRvcl8s
ICAgICAgIFwKKyAgICAgICAgICAgICAgJmd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMj
X0V2YWxHZW5lcmF0ZU5hbWVfLCBfX0ZJTEVfXywgICBcCisgICAgICAgICAgICAgIF9fTElORV9f
KQogCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJB
TV9URVNUCi0KICNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QQVJBTV9URVNU
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0
ZXN0LXBhcmFtLXRlc3QuaC5wdW1wIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcAppbmRleCBhMjMxMTg4MjdmMWQ0ODBmYmJiODI1
MmYzNDBmMGViZWRhMzQ2ZTI1Li4yNzRmMmIzYjU2OTMzMDAxMmU4NWVlM2NmNGZkNTdlYjBiNTQy
MWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0
ZXN0LXBhcmFtLXRlc3QuaC5wdW1wCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1bXAKQEAgLTMwLDEzICszMCwxMiBAQCAkdmFy
IG1heHR1cGxlID0gMTAgICQkIE1heGltdW0gbnVtYmVyIG9mIENvbWJpbmUgYXJndW1lbnRzIHdl
IHdhbnQgdG8gc3VwcG9ydC4KIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIC8vCi0v
LyBBdXRob3JzOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQotLy8KIC8vIE1hY3JvcyBh
bmQgZnVuY3Rpb25zIGZvciBpbXBsZW1lbnRpbmcgcGFyYW1ldGVyaXplZCB0ZXN0cwotLy8gaW4g
R29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBpbiBHb29nbGUg
QysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAvLyBU
aGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBULiAgRE8gTk9UIEVESVQgQlkgSEFORCEK
IC8vCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCiAjaWZuZGVmIEdURVNUX0lO
Q0xVREVfR1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dU
RVNUX0dURVNUX1BBUkFNX1RFU1RfSF8KIApAQCAtNDksMTAgKzQ4LDEyIEBAICR2YXIgbWF4dHVw
bGUgPSAxMCAgJCQgTWF4aW11bSBudW1iZXIgb2YgQ29tYmluZSBhcmd1bWVudHMgd2Ugd2FudCB0
byBzdXBwb3J0LgogI2lmIDAKIAogLy8gVG8gd3JpdGUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0
cywgZmlyc3QgeW91IHNob3VsZCBkZWZpbmUgYSBmaXh0dXJlCi0vLyBjbGFzcy4gSXQgbXVzdCBi
ZSBkZXJpdmVkIGZyb20gdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxUPiwgd2hlcmUgVCBpcwotLy8g
dGhlIHR5cGUgb2YgeW91ciBwYXJhbWV0ZXIgdmFsdWVzLiBUZXN0V2l0aFBhcmFtPFQ+IGlzIGl0
c2VsZiBkZXJpdmVkCi0vLyBmcm9tIHRlc3Rpbmc6OlRlc3QuIFQgY2FuIGJlIGFueSBjb3B5YWJs
ZSB0eXBlLiBJZiBpdCdzIGEgcmF3IHBvaW50ZXIsCi0vLyB5b3UgYXJlIHJlc3BvbnNpYmxlIGZv
ciBtYW5hZ2luZyB0aGUgbGlmZXNwYW4gb2YgdGhlIHBvaW50ZWQgdmFsdWVzLgorLy8gY2xhc3Mu
IEl0IGlzIHVzdWFsbHkgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08VD4gKHNl
ZSBiZWxvdyBmb3IKKy8vIGFub3RoZXIgaW5oZXJpdGFuY2Ugc2NoZW1lIHRoYXQncyBzb21ldGlt
ZXMgdXNlZnVsIGluIG1vcmUgY29tcGxpY2F0ZWQKKy8vIGNsYXNzIGhpZXJhcmNoaWVzKSwgd2hl
cmUgdGhlIHR5cGUgb2YgeW91ciBwYXJhbWV0ZXIgdmFsdWVzLgorLy8gVGVzdFdpdGhQYXJhbTxU
PiBpcyBpdHNlbGYgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3QuIFQgY2FuIGJlIGFueQorLy8g
Y29weWFibGUgdHlwZS4gSWYgaXQncyBhIHJhdyBwb2ludGVyLCB5b3UgYXJlIHJlc3BvbnNpYmxl
IGZvciBtYW5hZ2luZyB0aGUKKy8vIGxpZmVzcGFuIG9mIHRoZSBwb2ludGVkIHZhbHVlcy4KIAog
Y2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08Y29uc3QgY2hh
cio+IHsKICAgLy8gWW91IGNhbiBpbXBsZW1lbnQgYWxsIHRoZSB1c3VhbCBjbGFzcyBmaXh0dXJl
IG1lbWJlcnMgaGVyZS4KQEAgLTc2LDcgKzc3LDcgQEAgVEVTVF9QKEZvb1Rlc3QsIEhhc0JsYWhC
bGFoKSB7CiAvLyBGaW5hbGx5LCB5b3UgY2FuIHVzZSBJTlNUQU5USUFURV9URVNUX0NBU0VfUCB0
byBpbnN0YW50aWF0ZSB0aGUgdGVzdAogLy8gY2FzZSB3aXRoIGFueSBzZXQgb2YgcGFyYW1ldGVy
cyB5b3Ugd2FudC4gR29vZ2xlIFRlc3QgZGVmaW5lcyBhIG51bWJlcgogLy8gb2YgZnVuY3Rpb25z
IGZvciBnZW5lcmF0aW5nIHRlc3QgcGFyYW1ldGVycy4gVGhleSByZXR1cm4gd2hhdCB3ZSBjYWxs
Ci0vLyAoc3VycHJpc2UhKSBwYXJhbWV0ZXIgZ2VuZXJhdG9ycy4gSGVyZSBpcyBhICBzdW1tYXJ5
IG9mIHRoZW0sIHdoaWNoCisvLyAoc3VycHJpc2UhKSBwYXJhbWV0ZXIgZ2VuZXJhdG9ycy4gSGVy
ZSBpcyBhIHN1bW1hcnkgb2YgdGhlbSwgd2hpY2gKIC8vIGFyZSBhbGwgaW4gdGhlIHRlc3Rpbmcg
bmFtZXNwYWNlOgogLy8KIC8vCkBAIC0xMzQsOSArMTM1LDEyIEBAIElOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QKEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwgVmFsdWVzSW4ocGV0cykp
OwogLy8gaW4gdGhlIGdpdmVuIHRlc3QgY2FzZSwgd2hldGhlciB0aGVpciBkZWZpbml0aW9ucyBj
b21lIGJlZm9yZSBvcgogLy8gQUZURVIgdGhlIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIHN0YXRl
bWVudC4KIC8vCi0vLyBQbGVhc2UgYWxzbyBub3RlIHRoYXQgZ2VuZXJhdG9yIGV4cHJlc3Npb25z
IGFyZSBldmFsdWF0ZWQgaW4KLS8vIFJVTl9BTExfVEVTVFMoKSwgYWZ0ZXIgbWFpbigpIGhhcyBz
dGFydGVkLiBUaGlzIGFsbG93cyBldmFsdWF0aW9uIG9mCi0vLyBwYXJhbWV0ZXIgbGlzdCBiYXNl
ZCBvbiBjb21tYW5kIGxpbmUgcGFyYW1ldGVycy4KKy8vIFBsZWFzZSBhbHNvIG5vdGUgdGhhdCBn
ZW5lcmF0b3IgZXhwcmVzc2lvbnMgKGluY2x1ZGluZyBwYXJhbWV0ZXJzIHRvIHRoZQorLy8gZ2Vu
ZXJhdG9ycykgYXJlIGV2YWx1YXRlZCBpbiBJbml0R29vZ2xlVGVzdCgpLCBhZnRlciBtYWluKCkg
aGFzIHN0YXJ0ZWQuCisvLyBUaGlzIGFsbG93cyB0aGUgdXNlciBvbiBvbmUgaGFuZCwgdG8gYWRq
dXN0IGdlbmVyYXRvciBwYXJhbWV0ZXJzIGluIG9yZGVyCisvLyB0byBkeW5hbWljYWxseSBkZXRl
cm1pbmUgYSBzZXQgb2YgdGVzdHMgdG8gcnVuIGFuZCBvbiB0aGUgb3RoZXIgaGFuZCwKKy8vIGdp
dmUgdGhlIHVzZXIgYSBjaGFuY2UgdG8gaW5zcGVjdCB0aGUgZ2VuZXJhdGVkIHRlc3RzIHdpdGgg
R29vZ2xlIFRlc3QKKy8vIHJlZmxlY3Rpb24gQVBJIGJlZm9yZSBSVU5fQUxMX1RFU1RTKCkgaXMg
ZXhlY3V0ZWQuCiAvLwogLy8gWW91IGNhbiBzZWUgc2FtcGxlcy9zYW1wbGU3X3VuaXR0ZXN0LmNj
IGFuZCBzYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2MKIC8vIGZvciBtb3JlIGV4YW1wbGVzLgpA
QCAtMTQ0LDIzICsxNDgsNDQgQEAgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQW5vdGhlckluc3Rh
bnRpYXRpb25OYW1lLCBGb29UZXN0LCBWYWx1ZXNJbihwZXRzKSk7CiAvLyBJbiB0aGUgZnV0dXJl
LCB3ZSBwbGFuIHRvIHB1Ymxpc2ggdGhlIEFQSSBmb3IgZGVmaW5pbmcgbmV3IHBhcmFtZXRlcgog
Ly8gZ2VuZXJhdG9ycy4gQnV0IGZvciBub3cgdGhpcyBpbnRlcmZhY2UgcmVtYWlucyBwYXJ0IG9m
IHRoZSBpbnRlcm5hbAogLy8gaW1wbGVtZW50YXRpb24gYW5kIGlzIHN1YmplY3QgdG8gY2hhbmdl
LgorLy8KKy8vCisvLyBBIHBhcmFtZXRlcml6ZWQgdGVzdCBmaXh0dXJlIG11c3QgYmUgZGVyaXZl
ZCBmcm9tIHRlc3Rpbmc6OlRlc3QgYW5kIGZyb20KKy8vIHRlc3Rpbmc6OldpdGhQYXJhbUludGVy
ZmFjZTxUPiwgd2hlcmUgVCBpcyB0aGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVyCisvLyB2YWx1ZXMu
IEluaGVyaXRpbmcgZnJvbSBUZXN0V2l0aFBhcmFtPFQ+IHNhdGlzZmllcyB0aGF0IHJlcXVpcmVt
ZW50IGJlY2F1c2UKKy8vIFRlc3RXaXRoUGFyYW08VD4gaW5oZXJpdHMgZnJvbSBib3RoIFRlc3Qg
YW5kIFdpdGhQYXJhbUludGVyZmFjZS4gSW4gbW9yZQorLy8gY29tcGxpY2F0ZWQgaGllcmFyY2hp
ZXMsIGhvd2V2ZXIsIGl0IGlzIG9jY2FzaW9uYWxseSB1c2VmdWwgdG8gaW5oZXJpdAorLy8gc2Vw
YXJhdGVseSBmcm9tIFRlc3QgYW5kIFdpdGhQYXJhbUludGVyZmFjZS4gRm9yIGV4YW1wbGU6CisK
K2NsYXNzIEJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgIC8vIFlvdSBjYW4g
aW5oZXJpdCBhbGwgdGhlIHVzdWFsIG1lbWJlcnMgZm9yIGEgbm9uLXBhcmFtZXRlcml6ZWQgdGVz
dAorICAvLyBmaXh0dXJlIGhlcmUuCit9OworCitjbGFzcyBEZXJpdmVkVGVzdCA6IHB1YmxpYyBC
YXNlVGVzdCwgcHVibGljIDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPGludD4geworICAv
LyBUaGUgdXN1YWwgdGVzdCBmaXh0dXJlIG1lbWJlcnMgZ28gaGVyZSB0b28uCit9OworCitURVNU
X0YoQmFzZVRlc3QsIEhhc0ZvbykgeworICAvLyBUaGlzIGlzIGFuIG9yZGluYXJ5IG5vbi1wYXJh
bWV0ZXJpemVkIHRlc3QuCit9CisKK1RFU1RfUChEZXJpdmVkVGVzdCwgRG9lc0JsYWgpIHsKKyAg
Ly8gR2V0UGFyYW0gd29ya3MganVzdCB0aGUgc2FtZSBoZXJlIGFzIGlmIHlvdSBpbmhlcml0IGZy
b20gVGVzdFdpdGhQYXJhbS4KKyAgRVhQRUNUX1RSVUUoZm9vLkJsYWgoR2V0UGFyYW0oKSkpOwor
fQogCiAjZW5kaWYgIC8vIDAKIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQu
aD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKICNpZiAhR1RFU1Rf
T1NfU1lNQklBTgotI2luY2x1ZGUgPHV0aWxpdHk+CisjIGluY2x1ZGUgPHV0aWxpdHk+CiAjZW5k
aWYKIAotLy8gc2NyaXB0cy9mdXNlX2d0ZXN0LnB5IGRlcGVuZHMgb24gZ3Rlc3QncyBvd24gaGVh
ZGVyIGJlaW5nICNpbmNsdWRlZAotLy8gKnVuY29uZGl0aW9uYWxseSouICBUaGVyZWZvcmUgdGhl
c2UgI2luY2x1ZGVzIGNhbm5vdCBiZSBtb3ZlZAotLy8gaW5zaWRlICNpZiBHVEVTVF9IQVNfUEFS
QU1fVEVTVC4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oPgotI2lu
Y2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaD4KLSNpbmNsdWRlIDxndGVz
dC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oPgotCi0jaWYgR1RFU1RfSEFT
X1BBUkFNX1RFU1QKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oIgor
I2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaCIKKyNpbmNsdWRlICJn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIgogCiBuYW1lc3BhY2Ug
dGVzdGluZyB7CiAKQEAgLTI0MSw3ICsyNjYsNyBAQCBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8
VD4gUmFuZ2UoVCBzdGFydCwgVCBlbmQpIHsKIC8vIGVhY2ggd2l0aCBDLXN0cmluZyB2YWx1ZXMg
b2YgImZvbyIsICJiYXIiLCBhbmQgImJheiI6CiAvLwogLy8gY29uc3QgY2hhciogc3RyaW5nc1td
ID0geyJmb28iLCAiYmFyIiwgImJheiJ9OwotLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU3Ry
aW5nU2VxdWVuY2UsIFNydGluZ1Rlc3QsIFZhbHVlc0luKHN0cmluZ3MpKTsKKy8vIElOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKFN0cmluZ1NlcXVlbmNlLCBTdHJpbmdUZXN0LCBWYWx1ZXNJbihzdHJp
bmdzKSk7CiAvLwogLy8gVGhpcyBpbnN0YW50aWF0ZXMgdGVzdHMgZnJvbSB0ZXN0IGNhc2UgU3Rs
U3RyaW5nVGVzdAogLy8gZWFjaCB3aXRoIFNUTCBzdHJpbmdzIHdpdGggdmFsdWVzICJhIiBhbmQg
ImIiOgpAQCAtMjc0LDExICsyOTksMTAgQEAgaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFJh
bmdlKFQgc3RhcnQsIFQgZW5kKSB7CiAvLwogdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVy
YXRvcj4KIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjwKLSAgICB0eXBlbmFtZSA6OnN0ZDo6aXRl
cmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+IFZhbHVlc0luKAotICBG
b3J3YXJkSXRlcmF0b3IgYmVnaW4sCi0gIEZvcndhcmRJdGVyYXRvciBlbmQpIHsKLSAgdHlwZWRl
ZiB0eXBlbmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVl
X3R5cGUKLSAgICAgIFBhcmFtVHlwZTsKKyAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4KK1ZhbHVlc0luKEZv
cndhcmRJdGVyYXRvciBiZWdpbiwgRm9yd2FyZEl0ZXJhdG9yIGVuZCkgeworICB0eXBlZGVmIHR5
cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJhaXRzPEZvcndhcmRJdGVyYXRv
cj4KKyAgICAgIDo6dmFsdWVfdHlwZSBQYXJhbVR5cGU7CiAgIHJldHVybiBpbnRlcm5hbDo6UGFy
YW1HZW5lcmF0b3I8UGFyYW1UeXBlPigKICAgICAgIG5ldyBpbnRlcm5hbDo6VmFsdWVzSW5JdGVy
YXRvclJhbmdlR2VuZXJhdG9yPFBhcmFtVHlwZT4oYmVnaW4sIGVuZCkpOwogfQpAQCAtMzQ4LDcg
KzM3Miw3IEBAIGlubGluZSBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ym9vbD4gQm9vbCgpIHsK
ICAgcmV0dXJuIFZhbHVlcyhmYWxzZSwgdHJ1ZSk7CiB9CiAKLSNpZiBHVEVTVF9IQVNfQ09NQklO
RQorIyBpZiBHVEVTVF9IQVNfQ09NQklORQogLy8gQ29tYmluZSgpIGFsbG93cyB0aGUgdXNlciB0
byBjb21iaW5lIHR3byBvciBtb3JlIHNlcXVlbmNlcyB0byBwcm9kdWNlCiAvLyB2YWx1ZXMgb2Yg
YSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB0aG9zZSBzZXF1ZW5jZXMnIGVsZW1lbnRzLgogLy8KQEAg
LTM4NCw3ICs0MDgsNyBAQCBpbmxpbmUgaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPGJvb2w+IEJv
b2woKSB7CiAvLyBCb29sZWFuIGZsYWdzOgogLy8KIC8vIGNsYXNzIEZsYWdEZXBlbmRlbnRUZXN0
Ci0vLyAgICAgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTx0dXBsZShib29sLCBib29s
KT4gPiB7CisvLyAgICAgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTx0dXBsZTxib29s
LCBib29sPiA+IHsKIC8vICAgdmlydHVhbCB2b2lkIFNldFVwKCkgewogLy8gICAgIC8vIEFzc2ln
bnMgZXh0ZXJuYWxfZmxhZ18xIGFuZCBleHRlcm5hbF9mbGFnXzIgdmFsdWVzIGZyb20gdGhlIHR1
cGxlLgogLy8gICAgIHRpZShleHRlcm5hbF9mbGFnXzEsIGV4dGVybmFsX2ZsYWdfMikgPSBHZXRQ
YXJhbSgpOwpAQCAtNDA5LDExICs0MzMsOSBAQCBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhv
bGRlciRpPCRmb3IgaiwgW1tHZW5lcmF0b3Ikal1dPiBDb21iaW5lKAogfQogCiBdXQotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfQ09NQklORQotCi0KKyMgZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5F
CiAKLSNkZWZpbmUgVEVTVF9QKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIFwKKyMgZGVmaW5l
IFRFU1RfUCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBcCiAgIGNsYXNzIEdURVNUX1RFU1Rf
Q0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXAogICAgICAgOiBwdWJsaWMg
dGVzdF9jYXNlX25hbWUgeyBcCiAgICBwdWJsaWM6IFwKQEAgLTQyMywxNCArNDQ1LDE3IEBAIGlu
dGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyJGk8JGZvciBqLCBbW0dlbmVyYXRvciRqXV0+
IENvbWJpbmUoCiAgICAgc3RhdGljIGludCBBZGRUb1JlZ2lzdHJ5KCkgeyBcCiAgICAgICA6OnRl
c3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5wYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0
cnkoKS4gXAogICAgICAgICAgIEdldFRlc3RDYXNlUGF0dGVybkhvbGRlcjx0ZXN0X2Nhc2VfbmFt
ZT4oXAotICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIF9fRklMRV9fLCBfX0xJTkVfXykt
PkFkZFRlc3RQYXR0ZXJuKFwKLSAgICAgICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgXAot
ICAgICAgICAgICAgICAgICAgI3Rlc3RfbmFtZSwgXAotICAgICAgICAgICAgICAgICAgbmV3IDo6
dGVzdGluZzo6aW50ZXJuYWw6OlRlc3RNZXRhRmFjdG9yeTwgXAotICAgICAgICAgICAgICAgICAg
ICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSk+KCkp
OyBcCisgICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgXAorICAgICAgICAgICAgICA6OnRl
c3Rpbmc6OmludGVybmFsOjpDb2RlTG9jYXRpb24oXAorICAgICAgICAgICAgICAgICAgX19GSUxF
X18sIF9fTElORV9fKSktPkFkZFRlc3RQYXR0ZXJuKFwKKyAgICAgICAgICAgICAgICAgICAgICBH
VEVTVF9TVFJJTkdJRllfKHRlc3RfY2FzZV9uYW1lKSwgXAorICAgICAgICAgICAgICAgICAgICAg
IEdURVNUX1NUUklOR0lGWV8odGVzdF9uYW1lKSwgXAorICAgICAgICAgICAgICAgICAgICAgIG5l
dyA6OnRlc3Rpbmc6OmludGVybmFsOjpUZXN0TWV0YUZhY3Rvcnk8IFwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyhcCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKT4oKSk7IFwKICAgICAgIHJldHVy
biAwOyBcCiAgICAgfSBcCi0gICAgc3RhdGljIGludCBndGVzdF9yZWdpc3RlcmluZ19kdW1teV87
IFwKKyAgICBzdGF0aWMgaW50IGd0ZXN0X3JlZ2lzdGVyaW5nX2R1bW15XyBHVEVTVF9BVFRSSUJV
VEVfVU5VU0VEXzsgXAogICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oXAogICAg
ICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpKTsg
XAogICB9OyBcCkBAIC00MzksMTkgKzQ2NCwzNyBAQCBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVj
dEhvbGRlciRpPCRmb3IgaiwgW1tHZW5lcmF0b3Ikal1dPiBDb21iaW5lKAogICAgICAgR1RFU1Rf
VEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKTo6QWRkVG9SZWdpc3Ry
eSgpOyBcCiAgIHZvaWQgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVz
dF9uYW1lKTo6VGVzdEJvZHkoKQogCi0jZGVmaW5lIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKHBy
ZWZpeCwgdGVzdF9jYXNlX25hbWUsIGdlbmVyYXRvcikgXAotICA6OnRlc3Rpbmc6OmludGVybmFs
OjpQYXJhbUdlbmVyYXRvcjx0ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiBcCisvLyBUaGUgb3B0
aW9uYWwgbGFzdCBhcmd1bWVudCB0byBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBhbGxvd3MgdGhl
IHVzZXIKKy8vIHRvIHNwZWNpZnkgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHRoYXQgZ2VuZXJhdGVz
IGN1c3RvbSB0ZXN0IG5hbWUgc3VmZml4ZXMKKy8vIGJhc2VkIG9uIHRoZSB0ZXN0IHBhcmFtZXRl
cnMuIFRoZSBmdW5jdGlvbiBzaG91bGQgYWNjZXB0IG9uZSBhcmd1bWVudCBvZgorLy8gdHlwZSB0
ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPGNsYXNzIFBhcmFtVHlwZT4sIGFuZCByZXR1cm4gc3RkOjpz
dHJpbmcuCisvLworLy8gdGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSBpcyBhIGJ1aWx0
aW4gdGVzdCBzdWZmaXggZ2VuZXJhdG9yIHRoYXQKKy8vIHJldHVybnMgdGhlIHZhbHVlIG9mIHRl
c3Rpbmc6OlByaW50VG9TdHJpbmcoR2V0UGFyYW0oKSkuCisvLworLy8gTm90ZTogdGVzdCBuYW1l
cyBtdXN0IGJlIG5vbi1lbXB0eSwgdW5pcXVlLCBhbmQgbWF5IG9ubHkgY29udGFpbiBBU0NJSQor
Ly8gYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgb3IgdW5kZXJzY29yZS4gQmVjYXVzZSBQcmludFRv
U3RyaW5nIGFkZHMgcXVvdGVzCisvLyB0byBzdGQ6OnN0cmluZyBhbmQgQyBzdHJpbmdzLCBpdCB3
b24ndCB3b3JrIGZvciB0aGVzZSB0eXBlcy4KKworIyBkZWZpbmUgSU5TVEFOVElBVEVfVEVTVF9D
QVNFX1AocHJlZml4LCB0ZXN0X2Nhc2VfbmFtZSwgZ2VuZXJhdG9yLCAuLi4pIFwKKyAgc3RhdGlj
IDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPHRlc3RfY2FzZV9uYW1lOjpQYXJh
bVR5cGU+IFwKICAgICAgIGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5l
cmF0b3JfKCkgeyByZXR1cm4gZ2VuZXJhdG9yOyB9IFwKLSAgaW50IGd0ZXN0XyMjcHJlZml4IyN0
ZXN0X2Nhc2VfbmFtZSMjX2R1bW15XyA9IFwKKyAgc3RhdGljIDo6c3RkOjpzdHJpbmcgZ3Rlc3Rf
IyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRlTmFtZV8oIFwKKyAgICAgIGNv
bnN0IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzx0ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiYg
aW5mbykgeyBcCisgICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkdldFBhcmFtTmFtZUdl
bjx0ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiBcCisgICAgICAgIChfX1ZBX0FSR1NfXykoaW5m
byk7IFwKKyAgfSBcCisgIHN0YXRpYyBpbnQgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1l
IyNfZHVtbXlfIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gXAogICAgICAgOjp0ZXN0aW5nOjpV
bml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkuIFwK
ICAgICAgICAgICBHZXRUZXN0Q2FzZVBhdHRlcm5Ib2xkZXI8dGVzdF9jYXNlX25hbWU+KFwKLSAg
ICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBfX0ZJTEVfXywgX19MSU5FX18pLT5BZGRUZXN0
Q2FzZUluc3RhbnRpYXRpb24oXAotICAgICAgICAgICAgICAgICAgI3ByZWZpeCwgXAotICAgICAg
ICAgICAgICAgICAgJmd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0
b3JfLCBcCi0gICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pCisgICAgICAgICAg
ICAgICN0ZXN0X2Nhc2VfbmFtZSwgXAorICAgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFs
OjpDb2RlTG9jYXRpb24oXAorICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKSkt
PkFkZFRlc3RDYXNlSW5zdGFudGlhdGlvbihcCisgICAgICAgICAgICAgICAgICAgICAgI3ByZWZp
eCwgXAorICAgICAgICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25h
bWUjI19FdmFsR2VuZXJhdG9yXywgXAorICAgICAgICAgICAgICAgICAgICAgICZndGVzdF8jI3By
ZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdGVOYW1lXywgXAorICAgICAgICAgICAg
ICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcK
IAotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCiAjZW5kaWYgIC8vIEdURVNUX0lO
Q0xVREVfR1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wcmludGVycy5oIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wcmludGVycy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUx
ODY1Zjg0ZTZmNmZhM2UwZmNlMTk4NzAwYjVhNWRmZTVmNjU1MGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXByaW50ZXJzLmgK
QEAgLTAsMCArMSwxMTA3IEBACisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KKy8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisv
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKworLy8gR29vZ2xlIFRlc3QgLSBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBN
b2NraW5nIEZyYW1ld29yaworLy8KKy8vIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGEgdW5pdmVyc2Fs
IHZhbHVlIHByaW50ZXIgdGhhdCBjYW4gcHJpbnQgYQorLy8gdmFsdWUgb2YgYW55IHR5cGUgVDoK
Ky8vCisvLyAgIHZvaWQgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnRlcjxUPjo6
UHJpbnQodmFsdWUsIG9zdHJlYW1fcHRyKTsKKy8vCisvLyBBIHVzZXIgY2FuIHRlYWNoIHRoaXMg
ZnVuY3Rpb24gaG93IHRvIHByaW50IGEgY2xhc3MgdHlwZSBUIGJ5CisvLyBkZWZpbmluZyBlaXRo
ZXIgb3BlcmF0b3I8PCgpIG9yIFByaW50VG8oKSBpbiB0aGUgbmFtZXNwYWNlIHRoYXQKKy8vIGRl
ZmluZXMgVC4gIE1vcmUgc3BlY2lmaWNhbGx5LCB0aGUgRklSU1QgZGVmaW5lZCBmdW5jdGlvbiBp
biB0aGUKKy8vIGZvbGxvd2luZyBsaXN0IHdpbGwgYmUgdXNlZCAoYXNzdW1pbmcgVCBpcyBkZWZp
bmVkIGluIG5hbWVzcGFjZQorLy8gZm9vKToKKy8vCisvLyAgIDEuIGZvbzo6UHJpbnRUbyhjb25z
dCBUJiwgb3N0cmVhbSopCisvLyAgIDIuIG9wZXJhdG9yPDwob3N0cmVhbSYsIGNvbnN0IFQmKSBk
ZWZpbmVkIGluIGVpdGhlciBmb28gb3IgdGhlCisvLyAgICAgIGdsb2JhbCBuYW1lc3BhY2UuCisv
LworLy8gSG93ZXZlciBpZiBUIGlzIGFuIFNUTC1zdHlsZSBjb250YWluZXIgdGhlbiBpdCBpcyBw
cmludGVkIGVsZW1lbnQtd2lzZQorLy8gdW5sZXNzIGZvbzo6UHJpbnRUbyhjb25zdCBUJiwgb3N0
cmVhbSopIGlzIGRlZmluZWQuIE5vdGUgdGhhdAorLy8gb3BlcmF0b3I8PCgpIGlzIGlnbm9yZWQg
Zm9yIGNvbnRhaW5lciB0eXBlcy4KKy8vCisvLyBJZiBub25lIG9mIHRoZSBhYm92ZSBpcyBkZWZp
bmVkLCBpdCB3aWxsIHByaW50IHRoZSBkZWJ1ZyBzdHJpbmcgb2YKKy8vIHRoZSB2YWx1ZSBpZiBp
dCBpcyBhIHByb3RvY29sIGJ1ZmZlciwgb3IgcHJpbnQgdGhlIHJhdyBieXRlcyBpbiB0aGUKKy8v
IHZhbHVlIG90aGVyd2lzZS4KKy8vCisvLyBUbyBhaWQgZGVidWdnaW5nOiB3aGVuIFQgaXMgYSBy
ZWZlcmVuY2UgdHlwZSwgdGhlIGFkZHJlc3Mgb2YgdGhlCisvLyB2YWx1ZSBpcyBhbHNvIHByaW50
ZWQ7IHdoZW4gVCBpcyBhIChjb25zdCkgY2hhciBwb2ludGVyLCBib3RoIHRoZQorLy8gcG9pbnRl
ciB2YWx1ZSBhbmQgdGhlIE5VTC10ZXJtaW5hdGVkIHN0cmluZyBpdCBwb2ludHMgdG8gYXJlCisv
LyBwcmludGVkLgorLy8KKy8vIFdlIGFsc28gcHJvdmlkZSBzb21lIGNvbnZlbmllbnQgd3JhcHBl
cnM6CisvLworLy8gICAvLyBQcmludHMgYSB2YWx1ZSB0byBhIHN0cmluZy4gIEZvciBhIChjb25z
dCBvciBub3QpIGNoYXIKKy8vICAgLy8gcG9pbnRlciwgdGhlIE5VTC10ZXJtaW5hdGVkIHN0cmlu
ZyAoYnV0IG5vdCB0aGUgcG9pbnRlcikgaXMKKy8vICAgLy8gcHJpbnRlZC4KKy8vICAgc3RkOjpz
dHJpbmcgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGNvbnN0IFQmIHZhbHVlKTsKKy8vCisvLyAg
IC8vIFByaW50cyBhIHZhbHVlIHRlcnNlbHk6IGZvciBhIHJlZmVyZW5jZSB0eXBlLCB0aGUgcmVm
ZXJlbmNlZAorLy8gICAvLyB2YWx1ZSAoYnV0IG5vdCB0aGUgYWRkcmVzcykgaXMgcHJpbnRlZDsg
Zm9yIGEgKGNvbnN0IG9yIG5vdCkgY2hhcgorLy8gICAvLyBwb2ludGVyLCB0aGUgTlVMLXRlcm1p
bmF0ZWQgc3RyaW5nIChidXQgbm90IHRoZSBwb2ludGVyKSBpcworLy8gICAvLyBwcmludGVkLgor
Ly8gICB2b2lkIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnQoY29uc3Qg
VCYgdmFsdWUsIG9zdHJlYW0qKTsKKy8vCisvLyAgIC8vIFByaW50cyB2YWx1ZSB1c2luZyB0aGUg
dHlwZSBpbmZlcnJlZCBieSB0aGUgY29tcGlsZXIuICBUaGUgZGlmZmVyZW5jZQorLy8gICAvLyBm
cm9tIFVuaXZlcnNhbFRlcnNlUHJpbnQoKSBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gcHJpbnRzIGJv
dGggdGhlCisvLyAgIC8vIHBvaW50ZXIgYW5kIHRoZSBOVUwtdGVybWluYXRlZCBzdHJpbmcgZm9y
IGEgKGNvbnN0IG9yIG5vdCkgY2hhciBwb2ludGVyLgorLy8gICB2b2lkIDo6dGVzdGluZzo6aW50
ZXJuYWw6OlVuaXZlcnNhbFByaW50KGNvbnN0IFQmIHZhbHVlLCBvc3RyZWFtKik7CisvLworLy8g
ICAvLyBQcmludHMgdGhlIGZpZWxkcyBvZiBhIHR1cGxlIHRlcnNlbHkgdG8gYSBzdHJpbmcgdmVj
dG9yLCBvbmUKKy8vICAgLy8gZWxlbWVudCBmb3IgZWFjaCBmaWVsZC4gVHVwbGUgc3VwcG9ydCBt
dXN0IGJlIGVuYWJsZWQgaW4KKy8vICAgLy8gZ3Rlc3QtcG9ydC5oLgorLy8gICBzdGQ6OnZlY3Rv
cjxzdHJpbmc+IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKKy8vICAg
ICAgIGNvbnN0IFR1cGxlJiB2YWx1ZSk7CisvLworLy8gS25vd24gbGltaXRhdGlvbjoKKy8vCisv
LyBUaGUgcHJpbnQgcHJpbWl0aXZlcyBwcmludCB0aGUgZWxlbWVudHMgb2YgYW4gU1RMLXN0eWxl
IGNvbnRhaW5lcgorLy8gdXNpbmcgdGhlIGNvbXBpbGVyLWluZmVycmVkIHR5cGUgb2YgKml0ZXIg
d2hlcmUgaXRlciBpcyBhCisvLyBjb25zdF9pdGVyYXRvciBvZiB0aGUgY29udGFpbmVyLiAgV2hl
biBjb25zdF9pdGVyYXRvciBpcyBhbiBpbnB1dAorLy8gaXRlcmF0b3IgYnV0IG5vdCBhIGZvcndh
cmQgaXRlcmF0b3IsIHRoaXMgaW5mZXJyZWQgdHlwZSBtYXkgbm90CisvLyBtYXRjaCB2YWx1ZV90
eXBlLCBhbmQgdGhlIHByaW50IG91dHB1dCBtYXkgYmUgaW5jb3JyZWN0LiAgSW4KKy8vIHByYWN0
aWNlLCB0aGlzIGlzIHJhcmVseSBhIHByb2JsZW0gYXMgZm9yIG1vc3QgY29udGFpbmVycworLy8g
Y29uc3RfaXRlcmF0b3IgaXMgYSBmb3J3YXJkIGl0ZXJhdG9yLiAgV2UnbGwgZml4IHRoaXMgaWYg
dGhlcmUncyBhbgorLy8gYWN0dWFsIG5lZWQgZm9yIGl0LiAgTm90ZSB0aGF0IHRoaXMgZml4IGNh
bm5vdCByZWx5IG9uIHZhbHVlX3R5cGUKKy8vIGJlaW5nIGRlZmluZWQgYXMgbWFueSB1c2VyLWRl
ZmluZWQgY29udGFpbmVyIHR5cGVzIGRvbid0IGhhdmUKKy8vIHZhbHVlX3R5cGUuCisKKy8vIEdP
T0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKKworI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dU
RVNUX0dURVNUX1BSSU5URVJTX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1Rf
UFJJTlRFUlNfSF8KKworI2luY2x1ZGUgPG9zdHJlYW0+ICAvLyBOT0xJTlQKKyNpbmNsdWRlIDxz
c3RyZWFtPgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUg
PHZlY3Rvcj4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCisjaW5jbHVk
ZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKworI2lmIEdURVNUX0hBU19TVERf
VFVQTEVfCisjIGluY2x1ZGUgPHR1cGxlPgorI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfQUJTTAor
I2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oIgorI2luY2x1ZGUgImFic2wvdHlw
ZXMvb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL3ZhcmlhbnQuaCIKKyNlbmRpZiAg
Ly8gR1RFU1RfSEFTX0FCU0wKKworbmFtZXNwYWNlIHRlc3RpbmcgeworCisvLyBEZWZpbml0aW9u
cyBpbiB0aGUgJ2ludGVybmFsJyBhbmQgJ2ludGVybmFsMicgbmFtZSBzcGFjZXMgYXJlCisvLyBz
dWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4gIERPIE5PVCBVU0UgVEhFTSBJTiBVU0VS
IENPREUhCituYW1lc3BhY2UgaW50ZXJuYWwyIHsKKworLy8gUHJpbnRzIHRoZSBnaXZlbiBudW1i
ZXIgb2YgYnl0ZXMgaW4gdGhlIGdpdmVuIG9iamVjdCB0byB0aGUgZ2l2ZW4KKy8vIG9zdHJlYW0u
CitHVEVTVF9BUElfIHZvaWQgUHJpbnRCeXRlc0luT2JqZWN0VG8oY29uc3QgdW5zaWduZWQgY2hh
ciogb2JqX2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6b3N0
cmVhbSogb3MpOworCisvLyBGb3Igc2VsZWN0aW5nIHdoaWNoIHByaW50ZXIgdG8gdXNlIHdoZW4g
YSBnaXZlbiB0eXBlIGhhcyBuZWl0aGVyIDw8CisvLyBub3IgUHJpbnRUbygpLgorZW51bSBUeXBl
S2luZCB7CisgIGtQcm90b2J1ZiwgICAgICAgICAgICAgIC8vIGEgcHJvdG9idWYgdHlwZQorICBr
Q29udmVydGlibGVUb0ludGVnZXIsICAvLyBhIHR5cGUgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0
byBCaWdnZXN0SW50CisgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChlLmcuIGEgbmFtZWQg
b3IgdW5uYW1lZCBlbnVtIHR5cGUpCisjaWYgR1RFU1RfSEFTX0FCU0wKKyAga0NvbnZlcnRpYmxl
VG9TdHJpbmdWaWV3LCAgLy8gYSB0eXBlIGltcGxpY2l0bHkgY29udmVydGlibGUgdG8KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWJzbDo6c3RyaW5nX3ZpZXcKKyNlbmRpZgorICBr
T3RoZXJUeXBlICAvLyBhbnl0aGluZyBlbHNlCit9OworCisvLyBUeXBlV2l0aG91dEZvcm1hdHRl
cjxULCBrVHlwZUtpbmQ+OjpQcmludFZhbHVlKHZhbHVlLCBvcykgaXMgY2FsbGVkCisvLyBieSB0
aGUgdW5pdmVyc2FsIHByaW50ZXIgdG8gcHJpbnQgYSB2YWx1ZSBvZiB0eXBlIFQgd2hlbiBuZWl0
aGVyCisvLyBvcGVyYXRvcjw8IG5vciBQcmludFRvKCkgaXMgZGVmaW5lZCBmb3IgVCwgd2hlcmUg
a1R5cGVLaW5kIGlzIHRoZQorLy8gImtpbmQiIG9mIFQgYXMgZGVmaW5lZCBieSBlbnVtIFR5cGVL
aW5kLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIFR5cGVLaW5kIGtUeXBlS2luZD4KK2NsYXNzIFR5
cGVXaXRob3V0Rm9ybWF0dGVyIHsKKyBwdWJsaWM6CisgIC8vIFRoaXMgZGVmYXVsdCB2ZXJzaW9u
IGlzIGNhbGxlZCB3aGVuIGtUeXBlS2luZCBpcyBrT3RoZXJUeXBlLgorICBzdGF0aWMgdm9pZCBQ
cmludFZhbHVlKGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBQcmlu
dEJ5dGVzSW5PYmplY3RUbyhzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KCZ2
YWx1ZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih2YWx1ZSksIG9zKTsKKyAg
fQorfTsKKworLy8gV2UgcHJpbnQgYSBwcm90b2J1ZiB1c2luZyBpdHMgU2hvcnREZWJ1Z1N0cmlu
ZygpIHdoZW4gdGhlIHN0cmluZworLy8gZG9lc24ndCBleGNlZWQgdGhpcyBtYW55IGNoYXJhY3Rl
cnM7IG90aGVyd2lzZSB3ZSBwcmludCBpdCB1c2luZworLy8gRGVidWdTdHJpbmcoKSBmb3IgYmV0
dGVyIHJlYWRhYmlsaXR5LgorY29uc3Qgc2l6ZV90IGtQcm90b2J1Zk9uZUxpbmVyTWF4TGVuZ3Ro
ID0gNTA7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZVdpdGhvdXRGb3JtYXR0
ZXI8VCwga1Byb3RvYnVmPiB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBQcmludFZhbHVlKGNv
bnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBzdGQ6OnN0cmluZyBwcmV0
dHlfc3RyID0gdmFsdWUuU2hvcnREZWJ1Z1N0cmluZygpOworICAgIGlmIChwcmV0dHlfc3RyLmxl
bmd0aCgpID4ga1Byb3RvYnVmT25lTGluZXJNYXhMZW5ndGgpIHsKKyAgICAgIHByZXR0eV9zdHIg
PSAiXG4iICsgdmFsdWUuRGVidWdTdHJpbmcoKTsKKyAgICB9CisgICAgKm9zIDw8ICgiPCIgKyBw
cmV0dHlfc3RyICsgIj4iKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFz
cyBUeXBlV2l0aG91dEZvcm1hdHRlcjxULCBrQ29udmVydGlibGVUb0ludGVnZXI+IHsKKyBwdWJs
aWM6CisgIC8vIFNpbmNlIFQgaGFzIG5vIDw8IG9wZXJhdG9yIG9yIFByaW50VG8oKSBidXQgY2Fu
IGJlIGltcGxpY2l0bHkKKyAgLy8gY29udmVydGVkIHRvIEJpZ2dlc3RJbnQsIHdlIHByaW50IGl0
IGFzIGEgQmlnZ2VzdEludC4KKyAgLy8KKyAgLy8gTW9zdCBsaWtlbHkgVCBpcyBhbiBlbnVtIHR5
cGUgKGVpdGhlciBuYW1lZCBvciB1bm5hbWVkKSwgaW4gd2hpY2gKKyAgLy8gY2FzZSBwcmludGlu
ZyBpdCBhcyBhbiBpbnRlZ2VyIGlzIHRoZSBkZXNpcmVkIGJlaGF2aW9yLiAgSW4gY2FzZQorICAv
LyBUIGlzIG5vdCBhbiBlbnVtLCBwcmludGluZyBpdCBhcyBhbiBpbnRlZ2VyIGlzIHRoZSBiZXN0
IHdlIGNhbiBkbworICAvLyBnaXZlbiB0aGF0IGl0IGhhcyBubyB1c2VyLWRlZmluZWQgcHJpbnRl
ci4KKyAgc3RhdGljIHZvaWQgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJl
YW0qIG9zKSB7CisgICAgY29uc3QgaW50ZXJuYWw6OkJpZ2dlc3RJbnQga0JpZ0ludCA9IHZhbHVl
OworICAgICpvcyA8PCBrQmlnSW50OworICB9Cit9OworCisjaWYgR1RFU1RfSEFTX0FCU0wKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZVdpdGhvdXRGb3JtYXR0ZXI8VCwga0NvbnZl
cnRpYmxlVG9TdHJpbmdWaWV3PiB7CisgcHVibGljOgorICAvLyBTaW5jZSBUIGhhcyBuZWl0aGVy
IG9wZXJhdG9yPDwgbm9yIFByaW50VG8oKSBidXQgY2FuIGJlIGltcGxpY2l0bHkKKyAgLy8gY29u
dmVydGVkIHRvIGFic2w6OnN0cmluZ192aWV3LCB3ZSBwcmludCBpdCBhcyBhIGFic2w6OnN0cmlu
Z192aWV3LgorICAvLworICAvLyBOb3RlOiB0aGUgaW1wbGVtZW50YXRpb24gaXMgZnVydGhlciBi
ZWxvdywgYXMgaXQgZGVwZW5kcyBvbgorICAvLyBpbnRlcm5hbDo6UHJpbnRUbyBzeW1ib2wgd2hp
Y2ggaXMgZGVmaW5lZCBsYXRlciBpbiB0aGUgZmlsZS4KKyAgc3RhdGljIHZvaWQgUHJpbnRWYWx1
ZShjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKK307CisjZW5kaWYKKworLy8g
UHJpbnRzIHRoZSBnaXZlbiB2YWx1ZSB0byB0aGUgZ2l2ZW4gb3N0cmVhbS4gIElmIHRoZSB2YWx1
ZSBpcyBhCisvLyBwcm90b2NvbCBtZXNzYWdlLCBpdHMgZGVidWcgc3RyaW5nIGlzIHByaW50ZWQ7
IGlmIGl0J3MgYW4gZW51bSBvcgorLy8gb2YgYSB0eXBlIGltcGxpY2l0bHkgY29udmVydGlibGUg
dG8gQmlnZ2VzdEludCwgaXQncyBwcmludGVkIGFzIGFuCisvLyBpbnRlZ2VyOyBvdGhlcndpc2Ug
dGhlIGJ5dGVzIGluIHRoZSB2YWx1ZSBhcmUgcHJpbnRlZC4gIFRoaXMgaXMKKy8vIHdoYXQgVW5p
dmVyc2FsUHJpbnRlcjxUPjo6UHJpbnQoKSBkb2VzIHdoZW4gaXQga25vd3Mgbm90aGluZyBhYm91
dAorLy8gdHlwZSBUIGFuZCBUIGhhcyBuZWl0aGVyIDw8IG9wZXJhdG9yIG5vciBQcmludFRvKCku
CisvLworLy8gQSB1c2VyIGNhbiBvdmVycmlkZSB0aGlzIGJlaGF2aW9yIGZvciBhIGNsYXNzIHR5
cGUgRm9vIGJ5IGRlZmluaW5nCisvLyBhIDw8IG9wZXJhdG9yIGluIHRoZSBuYW1lc3BhY2Ugd2hl
cmUgRm9vIGlzIGRlZmluZWQuCisvLworLy8gV2UgcHV0IHRoaXMgb3BlcmF0b3IgaW4gbmFtZXNw
YWNlICdpbnRlcm5hbDInIGluc3RlYWQgb2YgJ2ludGVybmFsJworLy8gdG8gc2ltcGxpZnkgdGhl
IGltcGxlbWVudGF0aW9uLCBhcyBtdWNoIGNvZGUgaW4gJ2ludGVybmFsJyBuZWVkcyB0bworLy8g
dXNlIDw8IGluIFNUTCwgd2hpY2ggd291bGQgY29uZmxpY3Qgd2l0aCBvdXIgb3duIDw8IHdlcmUg
aXQgZGVmaW5lZAorLy8gaW4gJ2ludGVybmFsJy4KKy8vCisvLyBOb3RlIHRoYXQgdGhpcyBvcGVy
YXRvcjw8IHRha2VzIGEgZ2VuZXJpYyBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwKKy8vIENoYXJU
cmFpdHM+IHR5cGUgaW5zdGVhZCBvZiB0aGUgbW9yZSByZXN0cmljdGVkIHN0ZDo6b3N0cmVhbS4g
IElmCisvLyB3ZSBkZWZpbmUgaXQgdG8gdGFrZSBhbiBzdGQ6Om9zdHJlYW0gaW5zdGVhZCwgd2Un
bGwgZ2V0IGFuCisvLyAiYW1iaWd1b3VzIG92ZXJsb2FkcyIgY29tcGlsZXIgZXJyb3Igd2hlbiB0
cnlpbmcgdG8gcHJpbnQgYSB0eXBlCisvLyBGb28gdGhhdCBzdXBwb3J0cyBzdHJlYW1pbmcgdG8g
c3RkOjpiYXNpY19vc3RyZWFtPENoYXIsCisvLyBDaGFyVHJhaXRzPiwgYXMgdGhlIGNvbXBpbGVy
IGNhbm5vdCB0ZWxsIHdoZXRoZXIKKy8vIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiwgY29uc3Qg
VCYpIG9yCisvLyBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+
LCBjb25zdCBGb28mKSBpcyBtb3JlCisvLyBzcGVjaWZpYy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyLCB0eXBlbmFtZSBDaGFyVHJhaXRzLCB0eXBlbmFtZSBUPgorOjpzdGQ6OmJhc2ljX29zdHJl
YW08Q2hhciwgQ2hhclRyYWl0cz4mIG9wZXJhdG9yPDwoCisgICAgOjpzdGQ6OmJhc2ljX29zdHJl
YW08Q2hhciwgQ2hhclRyYWl0cz4mIG9zLCBjb25zdCBUJiB4KSB7CisgIFR5cGVXaXRob3V0Rm9y
bWF0dGVyPFQsIChpbnRlcm5hbDo6SXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID8ga1Byb3RvYnVmCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiBpbnRlcm5hbDo6SW1wbGljaXRseUNvbnZlcnRpYmxlPAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQmLCBpbnRlcm5hbDo6QmlnZ2VzdElu
dD46OnZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBrQ29udmVy
dGlibGVUb0ludGVnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Cisj
aWYgR1RFU1RfSEFTX0FCU0wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnRlcm5hbDo6SW1wbGljaXRseUNvbnZlcnRpYmxlPAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUJiwgYWJzbDo6c3RyaW5nX3ZpZXc+Ojp2YWx1ZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGtDb252ZXJ0aWJsZVRvU3Ry
aW5nVmlldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6CisjZW5k
aWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga090aGVyVHlwZSk+
OjpQcmludFZhbHVlKHgsICZvcyk7CisgIHJldHVybiBvczsKK30KKworfSAgLy8gbmFtZXNwYWNl
IGludGVybmFsMgorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKworLy8gVGhpcyBuYW1lc3BhY2Ug
TVVTVCBOT1QgQkUgTkVTVEVEIElOIDo6dGVzdGluZywgb3IgdGhlIG5hbWUgbG9vay11cAorLy8g
bWFnaWMgbmVlZGVkIGZvciBpbXBsZW1lbnRpbmcgVW5pdmVyc2FsUHJpbnRlciB3b24ndCB3b3Jr
LgorbmFtZXNwYWNlIHRlc3RpbmdfaW50ZXJuYWwgeworCisvLyBVc2VkIHRvIHByaW50IGEgdmFs
dWUgdGhhdCBpcyBub3QgYW4gU1RMLXN0eWxlIGNvbnRhaW5lciB3aGVuIHRoZQorLy8gdXNlciBk
b2Vzbid0IGRlZmluZSBQcmludFRvKCkgZm9yIGl0LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2
b2lkIERlZmF1bHRQcmludE5vbkNvbnRhaW5lclRvKGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0
cmVhbSogb3MpIHsKKyAgLy8gV2l0aCB0aGUgZm9sbG93aW5nIHN0YXRlbWVudCwgZHVyaW5nIHVu
cXVhbGlmaWVkIG5hbWUgbG9va3VwLAorICAvLyB0ZXN0aW5nOjppbnRlcm5hbDI6Om9wZXJhdG9y
PDwgYXBwZWFycyBhcyBpZiBpdCB3YXMgZGVjbGFyZWQgaW4KKyAgLy8gdGhlIG5lYXJlc3QgZW5j
bG9zaW5nIG5hbWVzcGFjZSB0aGF0IGNvbnRhaW5zIGJvdGgKKyAgLy8gOjp0ZXN0aW5nX2ludGVy
bmFsIGFuZCA6OnRlc3Rpbmc6OmludGVybmFsMiwgaS5lLiB0aGUgZ2xvYmFsCisgIC8vIG5hbWVz
cGFjZS4gIEZvciBtb3JlIGRldGFpbHMsIHJlZmVyIHRvIHRoZSBDKysgU3RhbmRhcmQgc2VjdGlv
bgorICAvLyA3LjMuNC0xIFtuYW1lc3BhY2UudWRpcl0uICBUaGlzIGFsbG93cyB1cyB0byBmYWxs
IGJhY2sgb250bworICAvLyB0ZXN0aW5nOjppbnRlcm5hbDI6Om9wZXJhdG9yPDwgaW4gY2FzZSBU
IGRvZXNuJ3QgY29tZSB3aXRoIGEgPDwKKyAgLy8gb3BlcmF0b3IuCisgIC8vCisgIC8vIFdlIGNh
bm5vdCB3cml0ZSAndXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDI6Om9wZXJhdG9yPDw7Jywgd2hp
Y2gKKyAgLy8gZ2NjIDMuMyBmYWlscyB0byBjb21waWxlIGR1ZSB0byBhIGNvbXBpbGVyIGJ1Zy4K
KyAgdXNpbmcgbmFtZXNwYWNlIDo6dGVzdGluZzo6aW50ZXJuYWwyOyAgLy8gTk9MSU5UCisKKyAg
Ly8gQXNzdW1pbmcgVCBpcyBkZWZpbmVkIGluIG5hbWVzcGFjZSBmb28sIGluIHRoZSBuZXh0IHN0
YXRlbWVudCwKKyAgLy8gdGhlIGNvbXBpbGVyIHdpbGwgY29uc2lkZXIgYWxsIG9mOgorICAvLwor
ICAvLyAgIDEuIGZvbzo6b3BlcmF0b3I8PCAodGhhbmtzIHRvIEtvZW5pZyBsb29rLXVwKSwKKyAg
Ly8gICAyLiA6Om9wZXJhdG9yPDwgKGFzIHRoZSBjdXJyZW50IG5hbWVzcGFjZSBpcyBlbmNsb3Nl
ZCBpbiA6OiksCisgIC8vICAgMy4gdGVzdGluZzo6aW50ZXJuYWwyOjpvcGVyYXRvcjw8ICh0aGFu
a3MgdG8gdGhlIHVzaW5nIHN0YXRlbWVudCBhYm92ZSkuCisgIC8vCisgIC8vIFRoZSBvcGVyYXRv
cjw8IHdob3NlIHR5cGUgbWF0Y2hlcyBUIGJlc3Qgd2lsbCBiZSBwaWNrZWQuCisgIC8vCisgIC8v
IFdlIGRlbGliZXJhdGVseSBhbGxvdyAjMiB0byBiZSBhIGNhbmRpZGF0ZSwgYXMgc29tZXRpbWVz
IGl0J3MKKyAgLy8gaW1wb3NzaWJsZSB0byBkZWZpbmUgIzEgKGUuZy4gd2hlbiBmb28gaXMgOjpz
dGQsIGRlZmluaW5nCisgIC8vIGFueXRoaW5nIGluIGl0IGlzIHVuZGVmaW5lZCBiZWhhdmlvciB1
bmxlc3MgeW91IGFyZSBhIGNvbXBpbGVyCisgIC8vIHZlbmRvci4pLgorICAqb3MgPDwgdmFsdWU7
Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nX2ludGVybmFsCisKK25hbWVzcGFjZSB0ZXN0
aW5nIHsKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIEZvcm1hdEZvckNvbXBhcmlzb248VG9Q
cmludCwgT3RoZXJPcGVyYW5kPjo6Rm9ybWF0KHZhbHVlKSBmb3JtYXRzIGEKKy8vIHZhbHVlIG9m
IHR5cGUgVG9QcmludCB0aGF0IGlzIGFuIG9wZXJhbmQgb2YgYSBjb21wYXJpc29uIGFzc2VydGlv
bgorLy8gKGUuZy4gQVNTRVJUX0VRKS4gIE90aGVyT3BlcmFuZCBpcyB0aGUgdHlwZSBvZiB0aGUg
b3RoZXIgb3BlcmFuZCBpbgorLy8gdGhlIGNvbXBhcmlzb24sIGFuZCBpcyB1c2VkIHRvIGhlbHAg
ZGV0ZXJtaW5lIHRoZSBiZXN0IHdheSB0bworLy8gZm9ybWF0IHRoZSB2YWx1ZS4gIEluIHBhcnRp
Y3VsYXIsIHdoZW4gdGhlIHZhbHVlIGlzIGEgQyBzdHJpbmcKKy8vIChjaGFyIHBvaW50ZXIpIGFu
ZCB0aGUgb3RoZXIgb3BlcmFuZCBpcyBhbiBTVEwgc3RyaW5nIG9iamVjdCwgd2UKKy8vIHdhbnQg
dG8gZm9ybWF0IHRoZSBDIHN0cmluZyBhcyBhIHN0cmluZywgc2luY2Ugd2Uga25vdyBpdCBpcwor
Ly8gY29tcGFyZWQgYnkgdmFsdWUgd2l0aCB0aGUgc3RyaW5nIG9iamVjdC4gIElmIHRoZSB2YWx1
ZSBpcyBhIGNoYXIKKy8vIHBvaW50ZXIgYnV0IHRoZSBvdGhlciBvcGVyYW5kIGlzIG5vdCBhbiBT
VEwgc3RyaW5nIG9iamVjdCwgd2UgZG9uJ3QKKy8vIGtub3cgd2hldGhlciB0aGUgcG9pbnRlciBp
cyBzdXBwb3NlZCB0byBwb2ludCB0byBhIE5VTC10ZXJtaW5hdGVkCisvLyBzdHJpbmcsIGFuZCB0
aHVzIHdhbnQgdG8gcHJpbnQgaXQgYXMgYSBwb2ludGVyIHRvIGJlIHNhZmUuCisvLworLy8gSU5U
RVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgorCisv
LyBUaGUgZGVmYXVsdCBjYXNlLgordGVtcGxhdGUgPHR5cGVuYW1lIFRvUHJpbnQsIHR5cGVuYW1l
IE90aGVyT3BlcmFuZD4KK2NsYXNzIEZvcm1hdEZvckNvbXBhcmlzb24geworIHB1YmxpYzoKKyAg
c3RhdGljIDo6c3RkOjpzdHJpbmcgRm9ybWF0KGNvbnN0IFRvUHJpbnQmIHZhbHVlKSB7CisgICAg
cmV0dXJuIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyh2YWx1ZSk7CisgIH0KK307CisKKy8vIEFy
cmF5LgordGVtcGxhdGUgPHR5cGVuYW1lIFRvUHJpbnQsIHNpemVfdCBOLCB0eXBlbmFtZSBPdGhl
ck9wZXJhbmQ+CitjbGFzcyBGb3JtYXRGb3JDb21wYXJpc29uPFRvUHJpbnRbTl0sIE90aGVyT3Bl
cmFuZD4geworIHB1YmxpYzoKKyAgc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9ybWF0KGNvbnN0IFRv
UHJpbnQqIHZhbHVlKSB7CisgICAgcmV0dXJuIEZvcm1hdEZvckNvbXBhcmlzb248Y29uc3QgVG9Q
cmludCosIE90aGVyT3BlcmFuZD46OkZvcm1hdCh2YWx1ZSk7CisgIH0KK307CisKKy8vIEJ5IGRl
ZmF1bHQsIHByaW50IEMgc3RyaW5nIGFzIHBvaW50ZXJzIHRvIGJlIHNhZmUsIGFzIHdlIGRvbid0
IGtub3cKKy8vIHdoZXRoZXIgdGhleSBhY3R1YWxseSBwb2ludCB0byBhIE5VTC10ZXJtaW5hdGVk
IHN0cmluZy4KKworI2RlZmluZSBHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19QT0lOVEVS
XyhDaGFyVHlwZSkgICAgICAgICAgICAgICAgXAorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3RoZXJP
cGVyYW5kPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBjbGFzcyBG
b3JtYXRGb3JDb21wYXJpc29uPENoYXJUeXBlKiwgT3RoZXJPcGVyYW5kPiB7ICAgICAgICAgICAg
ICAgICAgXAorICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1h
dChDaGFyVHlwZSogdmFsdWUpIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgcmV0dXJu
IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4odmFsdWUp
KTsgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5H
X0FTX1BPSU5URVJfKGNoYXIpOworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfUE9JTlRF
Ul8oY29uc3QgY2hhcik7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19QT0lOVEVSXyh3
Y2hhcl90KTsKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1BPSU5URVJfKGNvbnN0IHdj
aGFyX3QpOworCisjdW5kZWYgR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfUE9JTlRFUl8K
KworLy8gSWYgYSBDIHN0cmluZyBpcyBjb21wYXJlZCB3aXRoIGFuIFNUTCBzdHJpbmcgb2JqZWN0
LCB3ZSBrbm93IGl0J3MgbWVhbnQKKy8vIHRvIHBvaW50IHRvIGEgTlVMLXRlcm1pbmF0ZWQgc3Ry
aW5nLCBhbmQgdGh1cyBjYW4gcHJpbnQgaXQgYXMgYSBzdHJpbmcuCisKKyNkZWZpbmUgR1RFU1Rf
SU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhDaGFyVHlwZSwgT3RoZXJTdHJpbmdUeXBl
KSBcCisgIHRlbXBsYXRlIDw+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgIGNsYXNzIEZvcm1hdEZvckNvbXBhcmlzb248Q2hhclR5
cGUqLCBPdGhlclN0cmluZ1R5cGU+IHsgICAgICAgICAgICAgICBcCisgICBwdWJsaWM6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9ybWF0KENoYXJUeXBlKiB2YWx1ZSkgeyAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICByZXR1cm4gOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5n
KHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
IH0KKworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjaGFyLCA6OnN0ZDo6
c3RyaW5nKTsKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18oY29uc3QgY2hh
ciwgOjpzdGQ6OnN0cmluZyk7CisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworR1RFU1Rf
SU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjaGFyLCA6OnN0cmluZyk7CitHVEVTVF9J
TVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNvbnN0IGNoYXIsIDo6c3RyaW5nKTsKKyNl
bmRpZgorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCitHVEVTVF9JTVBMX0ZPUk1BVF9D
X1NUUklOR19BU19TVFJJTkdfKHdjaGFyX3QsIDo6d3N0cmluZyk7CitHVEVTVF9JTVBMX0ZPUk1B
VF9DX1NUUklOR19BU19TVFJJTkdfKGNvbnN0IHdjaGFyX3QsIDo6d3N0cmluZyk7CisjZW5kaWYK
KworI2lmIEdURVNUX0hBU19TVERfV1NUUklORworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdf
QVNfU1RSSU5HXyh3Y2hhcl90LCA6OnN0ZDo6d3N0cmluZyk7CitHVEVTVF9JTVBMX0ZPUk1BVF9D
X1NUUklOR19BU19TVFJJTkdfKGNvbnN0IHdjaGFyX3QsIDo6c3RkOjp3c3RyaW5nKTsKKyNlbmRp
ZgorCisjdW5kZWYgR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXworCisvLyBG
b3JtYXRzIGEgY29tcGFyaXNvbiBhc3NlcnRpb24gKGUuZy4gQVNTRVJUX0VRLCBFWFBFQ1RfTFQs
IGFuZCBldGMpCisvLyBvcGVyYW5kIHRvIGJlIHVzZWQgaW4gYSBmYWlsdXJlIG1lc3NhZ2UuICBU
aGUgdHlwZSAoYnV0IG5vdCB2YWx1ZSkKKy8vIG9mIHRoZSBvdGhlciBvcGVyYW5kIG1heSBhZmZl
Y3QgdGhlIGZvcm1hdC4gIFRoaXMgYWxsb3dzIHVzIHRvCisvLyBwcmludCBhIGNoYXIqIGFzIGEg
cmF3IHBvaW50ZXIgd2hlbiBpdCBpcyBjb21wYXJlZCBhZ2FpbnN0IGFub3RoZXIKKy8vIGNoYXIq
IG9yIHZvaWQqLCBhbmQgcHJpbnQgaXQgYXMgYSBDIHN0cmluZyB3aGVuIGl0IGlzIGNvbXBhcmVk
CisvLyBhZ2FpbnN0IGFuIHN0ZDo6c3RyaW5nIG9iamVjdCwgZm9yIGV4YW1wbGUuCisvLworLy8g
SU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3N0ZDo6c3RyaW5nIEZvcm1hdEZv
ckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSgKKyAgICBjb25zdCBUMSYgdmFsdWUsIGNvbnN0IFQy
JiAvKiBvdGhlcl9vcGVyYW5kICovKSB7CisgIHJldHVybiBGb3JtYXRGb3JDb21wYXJpc29uPFQx
LCBUMj46OkZvcm1hdCh2YWx1ZSk7Cit9CisKKy8vIFVuaXZlcnNhbFByaW50ZXI8VD46OlByaW50
KHZhbHVlLCBvc3RyZWFtX3B0cikgcHJpbnRzIHRoZSBnaXZlbgorLy8gdmFsdWUgdG8gdGhlIGdp
dmVuIG9zdHJlYW0uICBUaGUgY2FsbGVyIG11c3QgZW5zdXJlIHRoYXQKKy8vICdvc3RyZWFtX3B0
cicgaXMgbm90IE5VTEwsIG9yIHRoZSBiZWhhdmlvciBpcyB1bmRlZmluZWQuCisvLworLy8gV2Ug
ZGVmaW5lIFVuaXZlcnNhbFByaW50ZXIgYXMgYSBjbGFzcyB0ZW1wbGF0ZSAoYXMgb3Bwb3NlZCB0
byBhCisvLyBmdW5jdGlvbiB0ZW1wbGF0ZSksIGFzIHdlIG5lZWQgdG8gcGFydGlhbGx5IHNwZWNp
YWxpemUgaXQgZm9yCisvLyByZWZlcmVuY2UgdHlwZXMsIHdoaWNoIGNhbm5vdCBiZSBkb25lIHdp
dGggZnVuY3Rpb24gdGVtcGxhdGVzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbml2
ZXJzYWxQcmludGVyOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVW5pdmVyc2FsUHJp
bnQoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcyk7CisKK2VudW0gRGVmYXVsdFBy
aW50ZXJUeXBlIHsKKyAga1ByaW50Q29udGFpbmVyLAorICBrUHJpbnRQb2ludGVyLAorICBrUHJp
bnRGdW5jdGlvblBvaW50ZXIsCisgIGtQcmludE90aGVyLAorfTsKK3RlbXBsYXRlIDxEZWZhdWx0
UHJpbnRlclR5cGUgdHlwZT4gc3RydWN0IFdyYXBQcmludGVyVHlwZSB7fTsKKworLy8gVXNlZCB0
byBwcmludCBhbiBTVEwtc3R5bGUgY29udGFpbmVyIHdoZW4gdGhlIHVzZXIgZG9lc24ndCBkZWZp
bmUKKy8vIGEgUHJpbnRUbygpIGZvciBpdC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBDPgordm9pZCBE
ZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5cGU8a1ByaW50Q29udGFpbmVyPiAvKiBkdW1teSAq
LywKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgQyYgY29udGFpbmVyLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgY29uc3Qgc2l6ZV90IGtNYXhDb3VudCA9IDMyOyAgLy8gVGhlIG1heGltdW0g
bnVtYmVyIG9mIGVsZW1lbnRzIHRvIHByaW50LgorICAqb3MgPDwgJ3snOworICBzaXplX3QgY291
bnQgPSAwOworICBmb3IgKHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29udGFpbmVy
LmJlZ2luKCk7CisgICAgICAgaXQgIT0gY29udGFpbmVyLmVuZCgpOyArK2l0LCArK2NvdW50KSB7
CisgICAgaWYgKGNvdW50ID4gMCkgeworICAgICAgKm9zIDw8ICcsJzsKKyAgICAgIGlmIChjb3Vu
dCA9PSBrTWF4Q291bnQpIHsgIC8vIEVub3VnaCBoYXMgYmVlbiBwcmludGVkLgorICAgICAgICAq
b3MgPDwgIiAuLi4iOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgKm9zIDw8
ICcgJzsKKyAgICAvLyBXZSBjYW5ub3QgY2FsbCBQcmludFRvKCppdCwgb3MpIGhlcmUgYXMgUHJp
bnRUbygpIGRvZXNuJ3QKKyAgICAvLyBoYW5kbGUgKml0IGJlaW5nIGEgbmF0aXZlIGFycmF5Lgor
ICAgIGludGVybmFsOjpVbml2ZXJzYWxQcmludCgqaXQsIG9zKTsKKyAgfQorCisgIGlmIChjb3Vu
dCA+IDApIHsKKyAgICAqb3MgPDwgJyAnOworICB9CisgICpvcyA8PCAnfSc7Cit9CisKKy8vIFVz
ZWQgdG8gcHJpbnQgYSBwb2ludGVyIHRoYXQgaXMgbmVpdGhlciBhIGNoYXIgcG9pbnRlciBub3Ig
YSBtZW1iZXIKKy8vIHBvaW50ZXIsIHdoZW4gdGhlIHVzZXIgZG9lc24ndCBkZWZpbmUgUHJpbnRU
bygpIGZvciBpdC4gIChBIG1lbWJlcgorLy8gdmFyaWFibGUgcG9pbnRlciBvciBtZW1iZXIgZnVu
Y3Rpb24gcG9pbnRlciBkb2Vzbid0IHJlYWxseSBwb2ludCB0bworLy8gYSBsb2NhdGlvbiBpbiB0
aGUgYWRkcmVzcyBzcGFjZS4gIFRoZWlyIHJlcHJlc2VudGF0aW9uIGlzCisvLyBpbXBsZW1lbnRh
dGlvbi1kZWZpbmVkLiAgVGhlcmVmb3JlIHRoZXkgd2lsbCBiZSBwcmludGVkIGFzIHJhdworLy8g
Ynl0ZXMuKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIERlZmF1bHRQcmludFRvKFdyYXBQ
cmludGVyVHlwZTxrUHJpbnRQb2ludGVyPiAvKiBkdW1teSAqLywKKyAgICAgICAgICAgICAgICAg
ICAgVCogcCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIGlmIChwID09IE5VTEwpIHsKKyAgICAq
b3MgPDwgIk5VTEwiOworICB9IGVsc2UgeworICAgIC8vIFQgaXMgbm90IGEgZnVuY3Rpb24gdHlw
ZS4gIFdlIGp1c3QgY2FsbCA8PCB0byBwcmludCBwLAorICAgIC8vIHJlbHlpbmcgb24gQURMIHRv
IHBpY2sgdXAgdXNlci1kZWZpbmVkIDw8IGZvciB0aGVpciBwb2ludGVyCisgICAgLy8gdHlwZXMs
IGlmIGFueS4KKyAgICAqb3MgPDwgcDsKKyAgfQorfQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2
b2lkIERlZmF1bHRQcmludFRvKFdyYXBQcmludGVyVHlwZTxrUHJpbnRGdW5jdGlvblBvaW50ZXI+
IC8qIGR1bW15ICovLAorICAgICAgICAgICAgICAgICAgICBUKiBwLCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgaWYgKHAgPT0gTlVMTCkgeworICAgICpvcyA8PCAiTlVMTCI7CisgIH0gZWxzZSB7
CisgICAgLy8gVCBpcyBhIGZ1bmN0aW9uIHR5cGUsIHNvICcqb3MgPDwgcCcgZG9lc24ndCBkbyB3
aGF0IHdlIHdhbnQKKyAgICAvLyAoaXQganVzdCBwcmludHMgcCBhcyBib29sKS4gIFdlIHdhbnQg
dG8gcHJpbnQgcCBhcyBhIGNvbnN0CisgICAgLy8gdm9pZCouCisgICAgKm9zIDw8IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHApOworICB9Cit9CisKKy8vIFVzZWQgdG8gcHJpbnQgYSBu
b24tY29udGFpbmVyLCBub24tcG9pbnRlciB2YWx1ZSB3aGVuIHRoZSB1c2VyCisvLyBkb2Vzbid0
IGRlZmluZSBQcmludFRvKCkgZm9yIGl0LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIERl
ZmF1bHRQcmludFRvKFdyYXBQcmludGVyVHlwZTxrUHJpbnRPdGhlcj4gLyogZHVtbXkgKi8sCisg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsK
KyAgOjp0ZXN0aW5nX2ludGVybmFsOjpEZWZhdWx0UHJpbnROb25Db250YWluZXJUbyh2YWx1ZSwg
b3MpOworfQorCisvLyBQcmludHMgdGhlIGdpdmVuIHZhbHVlIHVzaW5nIHRoZSA8PCBvcGVyYXRv
ciBpZiBpdCBoYXMgb25lOworLy8gb3RoZXJ3aXNlIHByaW50cyB0aGUgYnl0ZXMgaW4gaXQuICBU
aGlzIGlzIHdoYXQKKy8vIFVuaXZlcnNhbFByaW50ZXI8VD46OlByaW50KCkgZG9lcyB3aGVuIFBy
aW50VG8oKSBpcyBub3Qgc3BlY2lhbGl6ZWQKKy8vIG9yIG92ZXJsb2FkZWQgZm9yIHR5cGUgVC4K
Ky8vCisvLyBBIHVzZXIgY2FuIG92ZXJyaWRlIHRoaXMgYmVoYXZpb3IgZm9yIGEgY2xhc3MgdHlw
ZSBGb28gYnkgZGVmaW5pbmcKKy8vIGFuIG92ZXJsb2FkIG9mIFByaW50VG8oKSBpbiB0aGUgbmFt
ZXNwYWNlIHdoZXJlIEZvbyBpcyBkZWZpbmVkLiAgV2UKKy8vIGdpdmUgdGhlIHVzZXIgdGhpcyBv
cHRpb24gYXMgc29tZXRpbWVzIGRlZmluaW5nIGEgPDwgb3BlcmF0b3IgZm9yCisvLyBGb28gaXMg
bm90IGRlc2lyYWJsZSAoZS5nLiB0aGUgY29kaW5nIHN0eWxlIG1heSBwcmV2ZW50IGRvaW5nIGl0
LAorLy8gb3IgdGhlcmUgaXMgYWxyZWFkeSBhIDw8IG9wZXJhdG9yIGJ1dCBpdCBkb2Vzbid0IGRv
IHdoYXQgdGhlIHVzZXIKKy8vIHdhbnRzKS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBQ
cmludFRvKGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgLy8gRGVmYXVs
dFByaW50VG8oKSBpcyBvdmVybG9hZGVkLiAgVGhlIHR5cGUgb2YgaXRzIGZpcnN0IGFyZ3VtZW50
CisgIC8vIGRldGVybWluZXMgd2hpY2ggdmVyc2lvbiB3aWxsIGJlIHBpY2tlZC4KKyAgLy8KKyAg
Ly8gTm90ZSB0aGF0IHdlIGNoZWNrIGZvciBjb250YWluZXIgdHlwZXMgaGVyZSwgcHJpb3IgdG8g
d2UgY2hlY2sKKyAgLy8gZm9yIHByb3RvY29sIG1lc3NhZ2UgdHlwZXMgaW4gb3VyIG9wZXJhdG9y
PDwuICBUaGUgcmF0aW9uYWxlIGlzOgorICAvLworICAvLyBGb3IgcHJvdG9jb2wgbWVzc2FnZXMs
IHdlIHdhbnQgdG8gZ2l2ZSBwZW9wbGUgYSBjaGFuY2UgdG8KKyAgLy8gb3ZlcnJpZGUgR29vZ2xl
IE1vY2sncyBmb3JtYXQgYnkgZGVmaW5pbmcgYSBQcmludFRvKCkgb3IKKyAgLy8gb3BlcmF0b3I8
PC4gIEZvciBTVEwgY29udGFpbmVycywgb3RoZXIgZm9ybWF0cyBjYW4gYmUKKyAgLy8gaW5jb21w
YXRpYmxlIHdpdGggR29vZ2xlIE1vY2sncyBmb3JtYXQgZm9yIHRoZSBjb250YWluZXIKKyAgLy8g
ZWxlbWVudHM7IHRoZXJlZm9yZSB3ZSBjaGVjayBmb3IgY29udGFpbmVyIHR5cGVzIGhlcmUgdG8g
ZW5zdXJlCisgIC8vIHRoYXQgb3VyIGZvcm1hdCBpcyB1c2VkLgorICAvLworICAvLyBOb3RlIHRo
YXQgTVNWQyBhbmQgY2xhbmctY2wgZG8gYWxsb3cgYW4gaW1wbGljaXQgY29udmVyc2lvbiBmcm9t
CisgIC8vIHBvaW50ZXItdG8tZnVuY3Rpb24gdG8gcG9pbnRlci10by1vYmplY3QsIGJ1dCBjbGFu
Zy1jbCB3YXJucyBvbiBpdC4KKyAgLy8gU28gZG9uJ3QgdXNlIEltcGxpY2l0bHlDb252ZXJ0aWJs
ZSBpZiBpdCBjYW4gYmUgaGVscGVkIHNpbmNlIGl0IHdpbGwKKyAgLy8gY2F1c2UgdGhpcyB3YXJu
aW5nLCBhbmQgdXNlIGEgc2VwYXJhdGUgb3ZlcmxvYWQgb2YgRGVmYXVsdFByaW50VG8gZm9yCisg
IC8vIGZ1bmN0aW9uIHBvaW50ZXJzIHNvIHRoYXQgdGhlIGAqb3MgPDwgcGAgaW4gdGhlIG9iamVj
dCBwb2ludGVyIG92ZXJsb2FkCisgIC8vIGRvZXNuJ3QgY2F1c2UgdGhhdCB3YXJuaW5nIGVpdGhl
ci4KKyAgRGVmYXVsdFByaW50VG8oCisgICAgICBXcmFwUHJpbnRlclR5cGUgPAorICAgICAgICAg
ICAgICAgICAgKHNpemVvZihJc0NvbnRhaW5lclRlc3Q8VD4oMCkpID09IHNpemVvZihJc0NvbnRh
aW5lcikpICYmCisgICAgICAgICAgICAgICFJc1JlY3Vyc2l2ZUNvbnRhaW5lcjxUPjo6dmFsdWUK
KyAgICAgICAgICA/IGtQcmludENvbnRhaW5lcgorICAgICAgICAgIDogIWlzX3BvaW50ZXI8VD46
OnZhbHVlCisgICAgICAgICAgICAgICAgPyBrUHJpbnRPdGhlcgorI2lmIEdURVNUX0xBTkdfQ1hY
MTEKKyAgICAgICAgICAgICAgICA6IHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1v
dmVfcG9pbnRlcjxUPjo6dHlwZT46OnZhbHVlCisjZWxzZQorICAgICAgICAgICAgICAgIDogIWlu
dGVybmFsOjpJbXBsaWNpdGx5Q29udmVydGlibGU8VCwgY29uc3Qgdm9pZCo+Ojp2YWx1ZQorI2Vu
ZGlmCisgICAgICAgICAgICAgICAgICAgICAgPyBrUHJpbnRGdW5jdGlvblBvaW50ZXIKKyAgICAg
ICAgICAgICAgICAgICAgICA6IGtQcmludFBvaW50ZXIgPiAoKSwKKyAgICAgIHZhbHVlLCBvcyk7
Cit9CisKKy8vIFRoZSBmb2xsb3dpbmcgbGlzdCBvZiBQcmludFRvKCkgb3ZlcmxvYWRzIHRlbGxz
CisvLyBVbml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCgpIGhvdyB0byBwcmludCBzdGFuZGFyZCB0
eXBlcyAoYnVpbHQtaW4KKy8vIHR5cGVzLCBzdHJpbmdzLCBwbGFpbiBhcnJheXMsIGFuZCBwb2lu
dGVycykuCisKKy8vIE92ZXJsb2FkcyBmb3IgdmFyaW91cyBjaGFyIHR5cGVzLgorR1RFU1RfQVBJ
XyB2b2lkIFByaW50VG8odW5zaWduZWQgY2hhciBjLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworR1RF
U1RfQVBJXyB2b2lkIFByaW50VG8oc2lnbmVkIGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsK
K2lubGluZSB2b2lkIFByaW50VG8oY2hhciBjLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgLy8g
V2hlbiBwcmludGluZyBhIHBsYWluIGNoYXIsIHdlIGFsd2F5cyB0cmVhdCBpdCBhcyB1bnNpZ25l
ZC4gIFRoaXMKKyAgLy8gd2F5LCB0aGUgb3V0cHV0IHdvbid0IGJlIGFmZmVjdGVkIGJ5IHdoZXRo
ZXIgdGhlIGNvbXBpbGVyIHRoaW5rcworICAvLyBjaGFyIGlzIHNpZ25lZCBvciBub3QuCisgIFBy
aW50VG8oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYyksIG9zKTsKK30KKworLy8gT3Zlcmxv
YWRzIGZvciBvdGhlciBzaW1wbGUgYnVpbHQtaW4gdHlwZXMuCitpbmxpbmUgdm9pZCBQcmludFRv
KGJvb2wgeCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCAoeCA/ICJ0cnVlIiA6ICJm
YWxzZSIpOworfQorCisvLyBPdmVybG9hZCBmb3Igd2NoYXJfdCB0eXBlLgorLy8gUHJpbnRzIGEg
d2NoYXJfdCBhcyBhIHN5bWJvbCBpZiBpdCBpcyBwcmludGFibGUgb3IgYXMgaXRzIGludGVybmFs
CisvLyBjb2RlIG90aGVyd2lzZSBhbmQgYWxzbyBhcyBpdHMgZGVjaW1hbCBjb2RlIChleGNlcHQg
Zm9yIEwnXDAnKS4KKy8vIFRoZSBMJ1wwJyBjaGFyIGlzIHByaW50ZWQgYXMgIkwnXFwwJyIuIFRo
ZSBkZWNpbWFsIGNvZGUgaXMgcHJpbnRlZAorLy8gYXMgc2lnbmVkIGludGVnZXIgd2hlbiB3Y2hh
cl90IGlzIGltcGxlbWVudGVkIGJ5IHRoZSBjb21waWxlcgorLy8gYXMgYSBzaWduZWQgdHlwZSBh
bmQgaXMgcHJpbnRlZCBhcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIHdoZW4gd2NoYXJfdAorLy8gaXMg
aW1wbGVtZW50ZWQgYXMgYW4gdW5zaWduZWQgdHlwZS4KK0dURVNUX0FQSV8gdm9pZCBQcmludFRv
KHdjaGFyX3Qgd2MsIDo6c3RkOjpvc3RyZWFtKiBvcyk7CisKKy8vIE92ZXJsb2FkcyBmb3IgQyBz
dHJpbmdzLgorR1RFU1RfQVBJXyB2b2lkIFByaW50VG8oY29uc3QgY2hhciogcywgOjpzdGQ6Om9z
dHJlYW0qIG9zKTsKK2lubGluZSB2b2lkIFByaW50VG8oY2hhciogcywgOjpzdGQ6Om9zdHJlYW0q
IG9zKSB7CisgIFByaW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCBjaGFyKj4ocyksIG9zKTsKK30K
KworLy8gc2lnbmVkL3Vuc2lnbmVkIGNoYXIgaXMgb2Z0ZW4gdXNlZCBmb3IgcmVwcmVzZW50aW5n
IGJpbmFyeSBkYXRhLCBzbworLy8gd2UgcHJpbnQgcG9pbnRlcnMgdG8gaXQgYXMgdm9pZCogdG8g
YmUgc2FmZS4KK2lubGluZSB2b2lkIFByaW50VG8oY29uc3Qgc2lnbmVkIGNoYXIqIHMsIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgeworICBQcmludFRvKEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMp
LCBvcyk7Cit9CitpbmxpbmUgdm9pZCBQcmludFRvKHNpZ25lZCBjaGFyKiBzLCA6OnN0ZDo6b3N0
cmVhbSogb3MpIHsKKyAgUHJpbnRUbyhJbXBsaWNpdENhc3RfPGNvbnN0IHZvaWQqPihzKSwgb3Mp
OworfQoraW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCB1bnNpZ25lZCBjaGFyKiBzLCA6OnN0ZDo6
b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUbyhJbXBsaWNpdENhc3RfPGNvbnN0IHZvaWQqPihzKSwg
b3MpOworfQoraW5saW5lIHZvaWQgUHJpbnRUbyh1bnNpZ25lZCBjaGFyKiBzLCA6OnN0ZDo6b3N0
cmVhbSogb3MpIHsKKyAgUHJpbnRUbyhJbXBsaWNpdENhc3RfPGNvbnN0IHZvaWQqPihzKSwgb3Mp
OworfQorCisvLyBNU1ZDIGNhbiBiZSBjb25maWd1cmVkIHRvIGRlZmluZSB3Y2hhcl90IGFzIGEg
dHlwZWRlZiBvZiB1bnNpZ25lZAorLy8gc2hvcnQuICBJdCBkZWZpbmVzIF9OQVRJVkVfV0NIQVJf
VF9ERUZJTkVEIHdoZW4gd2NoYXJfdCBpcyBhIG5hdGl2ZQorLy8gdHlwZS4gIFdoZW4gd2NoYXJf
dCBpcyBhIHR5cGVkZWYsIGRlZmluaW5nIGFuIG92ZXJsb2FkIGZvciBjb25zdAorLy8gd2NoYXJf
dCogd291bGQgY2F1c2UgdW5zaWduZWQgc2hvcnQqIGJlIHByaW50ZWQgYXMgYSB3aWRlIHN0cmlu
ZywKKy8vIHBvc3NpYmx5IGNhdXNpbmcgaW52YWxpZCBtZW1vcnkgYWNjZXNzZXMuCisjaWYgIWRl
ZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX05BVElWRV9XQ0hBUl9UX0RFRklORUQpCisvLyBP
dmVybG9hZHMgZm9yIHdpZGUgQyBzdHJpbmdzCitHVEVTVF9BUElfIHZvaWQgUHJpbnRUbyhjb25z
dCB3Y2hhcl90KiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyh3
Y2hhcl90KiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUbyhJbXBsaWNpdENhc3Rf
PGNvbnN0IHdjaGFyX3QqPihzKSwgb3MpOworfQorI2VuZGlmCisKKy8vIE92ZXJsb2FkIGZvciBD
IGFycmF5cy4gIE11bHRpLWRpbWVuc2lvbmFsIGFycmF5cyBhcmUgcHJpbnRlZAorLy8gcHJvcGVy
bHkuCisKKy8vIFByaW50cyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGVsZW1lbnRzIGluIGFuIGFycmF5
LCB3aXRob3V0IHByaW50aW5nCisvLyB0aGUgY3VybHkgYnJhY2VzLgordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Cit2b2lkIFByaW50UmF3QXJyYXlUbyhjb25zdCBUIGFbXSwgc2l6ZV90IGNvdW50LCA6
OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgVW5pdmVyc2FsUHJpbnQoYVswXSwgb3MpOworICBmb3Ig
KHNpemVfdCBpID0gMTsgaSAhPSBjb3VudDsgaSsrKSB7CisgICAgKm9zIDw8ICIsICI7CisgICAg
VW5pdmVyc2FsUHJpbnQoYVtpXSwgb3MpOworICB9Cit9CisKKy8vIE92ZXJsb2FkcyBmb3IgOjpz
dHJpbmcgYW5kIDo6c3RkOjpzdHJpbmcuCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK0dU
RVNUX0FQSV8gdm9pZCBQcmludFN0cmluZ1RvKGNvbnN0IDo6c3RyaW5nJnMsIDo6c3RkOjpvc3Ry
ZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRvKGNvbnN0IDo6c3RyaW5nJiBzLCA6OnN0ZDo6
b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRTdHJpbmdUbyhzLCBvcyk7Cit9CisjZW5kaWYgIC8vIEdU
RVNUX0hBU19HTE9CQUxfU1RSSU5HCisKK0dURVNUX0FQSV8gdm9pZCBQcmludFN0cmluZ1RvKGNv
bnN0IDo6c3RkOjpzdHJpbmcmcywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKK2lubGluZSB2b2lkIFBy
aW50VG8oY29uc3QgOjpzdGQ6OnN0cmluZyYgcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFBy
aW50U3RyaW5nVG8ocywgb3MpOworfQorCisvLyBPdmVybG9hZHMgZm9yIDo6d3N0cmluZyBhbmQg
OjpzdGQ6OndzdHJpbmcuCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCitHVEVTVF9BUElf
IHZvaWQgUHJpbnRXaWRlU3RyaW5nVG8oY29uc3QgOjp3c3RyaW5nJnMsIDo6c3RkOjpvc3RyZWFt
KiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRvKGNvbnN0IDo6d3N0cmluZyYgcywgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgIFByaW50V2lkZVN0cmluZ1RvKHMsIG9zKTsKK30KKyNlbmRpZiAgLy8g
R1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKK0dU
RVNUX0FQSV8gdm9pZCBQcmludFdpZGVTdHJpbmdUbyhjb25zdCA6OnN0ZDo6d3N0cmluZyZzLCA6
OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6d3N0
cmluZyYgcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50V2lkZVN0cmluZ1RvKHMsIG9z
KTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RSSU5HCisKKyNpZiBHVEVTVF9IQVNf
QUJTTAorLy8gT3ZlcmxvYWQgZm9yIGFic2w6OnN0cmluZ192aWV3LgoraW5saW5lIHZvaWQgUHJp
bnRUbyhhYnNsOjpzdHJpbmdfdmlldyBzcCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50
VG8oOjpzdGQ6OnN0cmluZyhzcCksIG9zKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0FCU0wK
KworI2lmIEdURVNUX0xBTkdfQ1hYMTEKK2lubGluZSB2b2lkIFByaW50VG8oc3RkOjpudWxscHRy
X3QsIDo6c3RkOjpvc3RyZWFtKiBvcykgeyAqb3MgPDwgIihudWxscHRyKSI7IH0KKyNlbmRpZiAg
Ly8gR1RFU1RfTEFOR19DWFgxMQorCisjaWYgR1RFU1RfSEFTX1RSMV9UVVBMRSB8fCBHVEVTVF9I
QVNfU1REX1RVUExFXworLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBwcmludGluZyBhIHR1cGxlLiAg
VCBtdXN0IGJlIGluc3RhbnRpYXRlZCB3aXRoCisvLyBhIHR1cGxlIHR5cGUuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK3ZvaWQgUHJpbnRUdXBsZVRvKGNvbnN0IFQmIHQsIDo6c3RkOjpvc3RyZWFt
KiBvcyk7CisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFTX1NURF9U
VVBMRV8KKworI2lmIEdURVNUX0hBU19UUjFfVFVQTEUKKy8vIE92ZXJsb2FkIGZvciA6OnN0ZDo6
dHIxOjp0dXBsZS4gIE5lZWRlZCBmb3IgcHJpbnRpbmcgZnVuY3Rpb24gYXJndW1lbnRzLAorLy8g
d2hpY2ggYXJlIHBhY2tlZCBhcyB0dXBsZXMuCisKKy8vIE92ZXJsb2FkZWQgUHJpbnRUbygpIGZv
ciB0dXBsZXMgb2YgdmFyaW91cyBhcml0aWVzLiAgV2Ugc3VwcG9ydAorLy8gdHVwbGVzIG9mIHVw
LXRvIDEwIGZpZWxkcy4gIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb24gd29ya3MKKy8vIHJl
Z2FyZGxlc3Mgb2Ygd2hldGhlciB0cjE6OnR1cGxlIGlzIGltcGxlbWVudGVkIHVzaW5nIHRoZQor
Ly8gbm9uLXN0YW5kYXJkIHZhcmlhZGljIHRlbXBsYXRlIGZlYXR1cmUgb3Igbm90LgorCitpbmxp
bmUgdm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPD4mIHQsIDo6c3RkOjpvc3Ry
ZWFtKiBvcykgeworICBQcmludFR1cGxlVG8odCwgb3MpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVDE+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDE+JiB0LCA6OnN0
ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIx
Ojp0dXBsZTxUMSwgVDI+JiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRv
KHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5h
bWUgVDM+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMz4m
IHQsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFR1cGxlVG8odCwgb3MpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUg
VDQ+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+
JiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNT4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxU
MSwgVDIsIFQzLCBUNCwgVDU+JiB0LAorICAgICAgICAgICAgIDo6c3RkOjpvc3RyZWFtKiBvcykg
eworICBQcmludFR1cGxlVG8odCwgb3MpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgICAg
ICAgIHR5cGVuYW1lIFQ2Pgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDY+JiB0LAorICAgICAgICAgICAgIDo6c3RkOjpvc3RyZWFtKiBv
cykgeworICBQcmludFR1cGxlVG8odCwgb3MpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEs
IHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAg
ICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0
ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4mIHQsCisgICAgICAgICAg
ICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
NCwgdHlwZW5hbWUgVDUsCisgICAgICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBl
bmFtZSBUOD4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDg+JiB0LAorICAgICAgICAgICAgIDo6c3RkOjpvc3RyZWFtKiBv
cykgeworICBQcmludFR1cGxlVG8odCwgb3MpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEs
IHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAg
ICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5
Pgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDk+JiB0LAorICAgICAgICAgICAgIDo6c3RkOjpvc3RyZWFtKiBvcykg
eworICBQcmludFR1cGxlVG8odCwgb3MpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgICAg
ICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0
eXBlbmFtZSBUMTA+Cit2b2lkIFByaW50VG8oCisgICAgY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwPiYgdCwKKyAgICA6OnN0ZDo6
b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKyNlbmRpZiAgLy8gR1RF
U1RfSEFTX1RSMV9UVVBMRQorCisjaWYgR1RFU1RfSEFTX1NURF9UVVBMRV8KK3RlbXBsYXRlIDx0
eXBlbmFtZS4uLiBUeXBlcz4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHVwbGU8VHlwZXMu
Li4+JiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30K
KyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9UVVBMRV8KKworLy8gT3ZlcmxvYWQgZm9yIHN0ZDo6
cGFpci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lkIFByaW50VG8o
Y29uc3QgOjpzdGQ6OnBhaXI8VDEsIFQyPiYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgewor
ICAqb3MgPDwgJygnOworICAvLyBXZSBjYW5ub3QgdXNlIFVuaXZlcnNhbFByaW50KHZhbHVlLmZp
cnN0LCBvcykgaGVyZSwgYXMgVDEgbWF5IGJlCisgIC8vIGEgcmVmZXJlbmNlIHR5cGUuICBUaGUg
c2FtZSBmb3IgcHJpbnRpbmcgdmFsdWUuc2Vjb25kLgorICBVbml2ZXJzYWxQcmludGVyPFQxPjo6
UHJpbnQodmFsdWUuZmlyc3QsIG9zKTsKKyAgKm9zIDw8ICIsICI7CisgIFVuaXZlcnNhbFByaW50
ZXI8VDI+OjpQcmludCh2YWx1ZS5zZWNvbmQsIG9zKTsKKyAgKm9zIDw8ICcpJzsKK30KKworLy8g
SW1wbGVtZW50cyBwcmludGluZyBhIG5vbi1yZWZlcmVuY2UgdHlwZSBUIGJ5IGxldHRpbmcgdGhl
IGNvbXBpbGVyCisvLyBwaWNrIHRoZSByaWdodCBvdmVybG9hZCBvZiBQcmludFRvKCkgZm9yIFQu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFVuaXZlcnNhbFByaW50ZXIgeworIHB1Ymxp
YzoKKyAgLy8gTVNWQyB3YXJucyBhYm91dCBhZGRpbmcgY29uc3QgdG8gYSBmdW5jdGlvbiB0eXBl
LCBzbyB3ZSB3YW50IHRvCisgIC8vIGRpc2FibGUgdGhlIHdhcm5pbmcuCisgIEdURVNUX0RJU0FC
TEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQxODApCisKKyAgLy8gTm90ZTogd2UgZGVsaWJlcmF0ZWx5
IGRvbid0IGNhbGwgdGhpcyBQcmludFRvKCksIGFzIHRoYXQgbmFtZQorICAvLyBjb25mbGljdHMg
d2l0aCA6OnRlc3Rpbmc6OmludGVybmFsOjpQcmludFRvIGluIHRoZSBib2R5IG9mIHRoZQorICAv
LyBmdW5jdGlvbi4KKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpv
c3RyZWFtKiBvcykgeworICAgIC8vIEJ5IGRlZmF1bHQsIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBy
aW50VG8oKSBpcyB1c2VkIGZvciBwcmludGluZworICAgIC8vIHRoZSB2YWx1ZS4KKyAgICAvLwor
ICAgIC8vIFRoYW5rcyB0byBLb2VuaWcgbG9vay11cCwgaWYgVCBpcyBhIGNsYXNzIGFuZCBoYXMg
aXRzIG93bgorICAgIC8vIFByaW50VG8oKSBmdW5jdGlvbiBkZWZpbmVkIGluIGl0cyBuYW1lc3Bh
Y2UsIHRoYXQgZnVuY3Rpb24gd2lsbAorICAgIC8vIGJlIHZpc2libGUgaGVyZS4gIFNpbmNlIGl0
IGlzIG1vcmUgc3BlY2lmaWMgdGhhbiB0aGUgZ2VuZXJpYyBvbmVzCisgICAgLy8gaW4gOjp0ZXN0
aW5nOjppbnRlcm5hbCwgaXQgd2lsbCBiZSBwaWNrZWQgYnkgdGhlIGNvbXBpbGVyIGluIHRoZQor
ICAgIC8vIGZvbGxvd2luZyBzdGF0ZW1lbnQgLSBleGFjdGx5IHdoYXQgd2Ugd2FudC4KKyAgICBQ
cmludFRvKHZhbHVlLCBvcyk7CisgIH0KKworICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19Q
T1BfKCkKK307CisKKyNpZiBHVEVTVF9IQVNfQUJTTAorCisvLyBQcmludGVyIGZvciBhYnNsOjpv
cHRpb25hbAorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFVuaXZlcnNhbFByaW50ZXI8
OjphYnNsOjpvcHRpb25hbDxUPj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29u
c3QgOjphYnNsOjpvcHRpb25hbDxUPiYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAg
ICpvcyA8PCAnKCc7CisgICAgaWYgKCF2YWx1ZSkgeworICAgICAgKm9zIDw8ICJudWxsb3B0IjsK
KyAgICB9IGVsc2UgeworICAgICAgVW5pdmVyc2FsUHJpbnQoKnZhbHVlLCBvcyk7CisgICAgfQor
ICAgICpvcyA8PCAnKSc7CisgIH0KK307CisKKy8vIFByaW50ZXIgZm9yIGFic2w6OnZhcmlhbnQK
KwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFQ+CitjbGFzcyBVbml2ZXJzYWxQcmludGVyPDo6YWJz
bDo6dmFyaWFudDxULi4uPj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3Qg
OjphYnNsOjp2YXJpYW50PFQuLi4+JiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAg
Km9zIDw8ICcoJzsKKyAgICBhYnNsOjp2aXNpdChWaXNpdG9ye29zfSwgdmFsdWUpOworICAgICpv
cyA8PCAnKSc7CisgIH0KKworIHByaXZhdGU6CisgIHN0cnVjdCBWaXNpdG9yIHsKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVT4KKyAgICB2b2lkIG9wZXJhdG9yKCkoY29uc3QgVSYgdSkgY29uc3Qg
eworICAgICAgKm9zIDw8ICInIiA8PCBHZXRUeXBlTmFtZTxVPigpIDw8ICInIHdpdGggdmFsdWUg
IjsKKyAgICAgIFVuaXZlcnNhbFByaW50KHUsIG9zKTsKKyAgICB9CisgICAgOjpzdGQ6Om9zdHJl
YW0qIG9zOworICB9OworfTsKKworI2VuZGlmICAvLyBHVEVTVF9IQVNfQUJTTAorCisvLyBVbml2
ZXJzYWxQcmludEFycmF5KGJlZ2luLCBsZW4sIG9zKSBwcmludHMgYW4gYXJyYXkgb2YgJ2xlbicK
Ky8vIGVsZW1lbnRzLCBzdGFydGluZyBhdCBhZGRyZXNzICdiZWdpbicuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3ZvaWQgVW5pdmVyc2FsUHJpbnRBcnJheShjb25zdCBUKiBiZWdpbiwgc2l6ZV90
IGxlbiwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIGlmIChsZW4gPT0gMCkgeworICAgICpvcyA8
PCAie30iOworICB9IGVsc2UgeworICAgICpvcyA8PCAieyAiOworICAgIGNvbnN0IHNpemVfdCBr
VGhyZXNob2xkID0gMTg7CisgICAgY29uc3Qgc2l6ZV90IGtDaHVua1NpemUgPSA4OworICAgIC8v
IElmIHRoZSBhcnJheSBoYXMgbW9yZSB0aGFuIGtUaHJlc2hvbGQgZWxlbWVudHMsIHdlJ2xsIGhh
dmUgdG8KKyAgICAvLyBvbWl0IHNvbWUgZGV0YWlscyBieSBwcmludGluZyBvbmx5IHRoZSBmaXJz
dCBhbmQgdGhlIGxhc3QKKyAgICAvLyBrQ2h1bmtTaXplIGVsZW1lbnRzLgorICAgIC8vIEZJWE1F
OiBsZXQgdGhlIHVzZXIgY29udHJvbCB0aGUgdGhyZXNob2xkIHVzaW5nIGEgZmxhZy4KKyAgICBp
ZiAobGVuIDw9IGtUaHJlc2hvbGQpIHsKKyAgICAgIFByaW50UmF3QXJyYXlUbyhiZWdpbiwgbGVu
LCBvcyk7CisgICAgfSBlbHNlIHsKKyAgICAgIFByaW50UmF3QXJyYXlUbyhiZWdpbiwga0NodW5r
U2l6ZSwgb3MpOworICAgICAgKm9zIDw8ICIsIC4uLiwgIjsKKyAgICAgIFByaW50UmF3QXJyYXlU
byhiZWdpbiArIGxlbiAtIGtDaHVua1NpemUsIGtDaHVua1NpemUsIG9zKTsKKyAgICB9CisgICAg
Km9zIDw8ICIgfSI7CisgIH0KK30KKy8vIFRoaXMgb3ZlcmxvYWQgcHJpbnRzIGEgKGNvbnN0KSBj
aGFyIGFycmF5IGNvbXBhY3RseS4KK0dURVNUX0FQSV8gdm9pZCBVbml2ZXJzYWxQcmludEFycmF5
KAorICAgIGNvbnN0IGNoYXIqIGJlZ2luLCBzaXplX3QgbGVuLCA6OnN0ZDo6b3N0cmVhbSogb3Mp
OworCisvLyBUaGlzIG92ZXJsb2FkIHByaW50cyBhIChjb25zdCkgd2NoYXJfdCBhcnJheSBjb21w
YWN0bHkuCitHVEVTVF9BUElfIHZvaWQgVW5pdmVyc2FsUHJpbnRBcnJheSgKKyAgICBjb25zdCB3
Y2hhcl90KiBiZWdpbiwgc2l6ZV90IGxlbiwgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKKworLy8gSW1w
bGVtZW50cyBwcmludGluZyBhbiBhcnJheSB0eXBlIFRbTl0uCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgc2l6ZV90IE4+CitjbGFzcyBVbml2ZXJzYWxQcmludGVyPFRbTl0+IHsKKyBwdWJsaWM6Cisg
IC8vIFByaW50cyB0aGUgZ2l2ZW4gYXJyYXksIG9taXR0aW5nIHNvbWUgZWxlbWVudHMgd2hlbiB0
aGVyZSBhcmUgdG9vCisgIC8vIG1hbnkuCisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQgKCZh
KVtOXSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVW5pdmVyc2FsUHJpbnRBcnJheShhLCBO
LCBvcyk7CisgIH0KK307CisKKy8vIEltcGxlbWVudHMgcHJpbnRpbmcgYSByZWZlcmVuY2UgdHlw
ZSBUJi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVW5pdmVyc2FsUHJpbnRlcjxUJj4g
eworIHB1YmxpYzoKKyAgLy8gTVNWQyB3YXJucyBhYm91dCBhZGRpbmcgY29uc3QgdG8gYSBmdW5j
dGlvbiB0eXBlLCBzbyB3ZSB3YW50IHRvCisgIC8vIGRpc2FibGUgdGhlIHdhcm5pbmcuCisgIEdU
RVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQxODApCisKKyAgc3RhdGljIHZvaWQgUHJp
bnQoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIC8vIFByaW50cyB0
aGUgYWRkcmVzcyBvZiB0aGUgdmFsdWUuICBXZSB1c2UgcmVpbnRlcnByZXRfY2FzdCBoZXJlCisg
ICAgLy8gYXMgc3RhdGljX2Nhc3QgZG9lc24ndCBjb21waWxlIHdoZW4gVCBpcyBhIGZ1bmN0aW9u
IHR5cGUuCisgICAgKm9zIDw8ICJAIiA8PCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigm
dmFsdWUpIDw8ICIgIjsKKworICAgIC8vIFRoZW4gcHJpbnRzIHRoZSB2YWx1ZSBpdHNlbGYuCisg
ICAgVW5pdmVyc2FsUHJpbnQodmFsdWUsIG9zKTsKKyAgfQorCisgIEdURVNUX0RJU0FCTEVfTVND
X1dBUk5JTkdTX1BPUF8oKQorfTsKKworLy8gUHJpbnRzIGEgdmFsdWUgdGVyc2VseTogZm9yIGEg
cmVmZXJlbmNlIHR5cGUsIHRoZSByZWZlcmVuY2VkIHZhbHVlCisvLyAoYnV0IG5vdCB0aGUgYWRk
cmVzcykgaXMgcHJpbnRlZDsgZm9yIGEgKGNvbnN0KSBjaGFyIHBvaW50ZXIsIHRoZQorLy8gTlVM
LXRlcm1pbmF0ZWQgc3RyaW5nIChidXQgbm90IHRoZSBwb2ludGVyKSBpcyBwcmludGVkLgorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlciB7CisgcHVi
bGljOgorICBzdGF0aWMgdm9pZCBQcmludChjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0q
IG9zKSB7CisgICAgVW5pdmVyc2FsUHJpbnQodmFsdWUsIG9zKTsKKyAgfQorfTsKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorY2xhc3MgVW5pdmVyc2FsVGVyc2VQcmludGVyPFQmPiB7CisgcHVibGlj
OgorICBzdGF0aWMgdm9pZCBQcmludChjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9z
KSB7CisgICAgVW5pdmVyc2FsUHJpbnQodmFsdWUsIG9zKTsKKyAgfQorfTsKK3RlbXBsYXRlIDx0
eXBlbmFtZSBULCBzaXplX3QgTj4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxUW05dPiB7
CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBQcmludChjb25zdCBUICgmdmFsdWUpW05dLCA6OnN0
ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBVbml2ZXJzYWxQcmludGVyPFRbTl0+OjpQcmludCh2YWx1
ZSwgb3MpOworICB9Cit9OwordGVtcGxhdGUgPD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRl
cjxjb25zdCBjaGFyKj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgY2hh
ciogc3RyLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAg
ICAgICpvcyA8PCAiTlVMTCI7CisgICAgfSBlbHNlIHsKKyAgICAgIFVuaXZlcnNhbFByaW50KHN0
ZDo6c3RyaW5nKHN0ciksIG9zKTsKKyAgICB9CisgIH0KK307Cit0ZW1wbGF0ZSA8PgorY2xhc3Mg
VW5pdmVyc2FsVGVyc2VQcmludGVyPGNoYXIqPiB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBQ
cmludChjaGFyKiBzdHIsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIFVuaXZlcnNhbFRlcnNl
UHJpbnRlcjxjb25zdCBjaGFyKj46OlByaW50KHN0ciwgb3MpOworICB9Cit9OworCisjaWYgR1RF
U1RfSEFTX1NURF9XU1RSSU5HCit0ZW1wbGF0ZSA8PgorY2xhc3MgVW5pdmVyc2FsVGVyc2VQcmlu
dGVyPGNvbnN0IHdjaGFyX3QqPiB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBQcmludChjb25z
dCB3Y2hhcl90KiBzdHIsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIGlmIChzdHIgPT0gTlVM
TCkgeworICAgICAgKm9zIDw8ICJOVUxMIjsKKyAgICB9IGVsc2UgeworICAgICAgVW5pdmVyc2Fs
UHJpbnQoOjpzdGQ6OndzdHJpbmcoc3RyKSwgb3MpOworICAgIH0KKyAgfQorfTsKKyNlbmRpZgor
Cit0ZW1wbGF0ZSA8PgorY2xhc3MgVW5pdmVyc2FsVGVyc2VQcmludGVyPHdjaGFyX3QqPiB7Cisg
cHVibGljOgorICBzdGF0aWMgdm9pZCBQcmludCh3Y2hhcl90KiBzdHIsIDo6c3RkOjpvc3RyZWFt
KiBvcykgeworICAgIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjb25zdCB3Y2hhcl90Kj46OlByaW50
KHN0ciwgb3MpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVW5pdmVy
c2FsVGVyc2VQcmludChjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFVu
aXZlcnNhbFRlcnNlUHJpbnRlcjxUPjo6UHJpbnQodmFsdWUsIG9zKTsKK30KKworLy8gUHJpbnRz
IGEgdmFsdWUgdXNpbmcgdGhlIHR5cGUgaW5mZXJyZWQgYnkgdGhlIGNvbXBpbGVyLiAgVGhlCisv
LyBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBhbmQgVW5pdmVyc2FsVGVyc2VQcmludCgpIGlzIHRo
YXQgZm9yIGEKKy8vIChjb25zdCkgY2hhciBwb2ludGVyLCB0aGlzIHByaW50cyBib3RoIHRoZSBw
b2ludGVyIGFuZCB0aGUKKy8vIE5VTC10ZXJtaW5hdGVkIHN0cmluZy4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgordm9pZCBVbml2ZXJzYWxQcmludChjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJl
YW0qIG9zKSB7CisgIC8vIEEgd29ya2Fyb25kIGZvciB0aGUgYnVnIGluIFZDKysgNy4xIHRoYXQg
cHJldmVudHMgdXMgZnJvbSBpbnN0YW50aWF0aW5nCisgIC8vIFVuaXZlcnNhbFByaW50ZXIgd2l0
aCBUIGRpcmVjdGx5LgorICB0eXBlZGVmIFQgVDE7CisgIFVuaXZlcnNhbFByaW50ZXI8VDE+OjpQ
cmludCh2YWx1ZSwgb3MpOworfQorCit0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpzdHJp
bmc+IFN0cmluZ3M7CisKKy8vIFR1cGxlUG9saWN5PFR1cGxlVD4gbXVzdCBwcm92aWRlOgorLy8g
LSB0dXBsZV9zaXplCisvLyAgICAgc2l6ZSBvZiB0dXBsZSBUdXBsZVQuCisvLyAtIGdldDxzaXpl
X3QgST4oY29uc3QgVHVwbGVUJiB0KQorLy8gICAgIHN0YXRpYyBmdW5jdGlvbiBleHRyYWN0aW5n
IGVsZW1lbnQgSSBvZiB0dXBsZSBUdXBsZVQuCisvLyAtIHR1cGxlX2VsZW1lbnQ8c2l6ZV90IEk+
Ojp0eXBlCisvLyAgICAgdHlwZSBvZiBlbGVtZW50IEkgb2YgdHVwbGUgVHVwbGVULgordGVtcGxh
dGUgPHR5cGVuYW1lIFR1cGxlVD4KK3N0cnVjdCBUdXBsZVBvbGljeTsKKworI2lmIEdURVNUX0hB
U19UUjFfVFVQTEUKK3RlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZVQ+CitzdHJ1Y3QgVHVwbGVQb2xp
Y3kgeworICB0eXBlZGVmIFR1cGxlVCBUdXBsZTsKKyAgc3RhdGljIGNvbnN0IHNpemVfdCB0dXBs
ZV9zaXplID0gOjpzdGQ6OnRyMTo6dHVwbGVfc2l6ZTxUdXBsZT46OnZhbHVlOworCisgIHRlbXBs
YXRlIDxzaXplX3QgST4KKyAgc3RydWN0IHR1cGxlX2VsZW1lbnQgOiA6OnN0ZDo6dHIxOjp0dXBs
ZV9lbGVtZW50PHN0YXRpY19jYXN0PGludD4oSSksIFR1cGxlPiB7CisgIH07CisKKyAgdGVtcGxh
dGUgPHNpemVfdCBJPgorICBzdGF0aWMgdHlwZW5hbWUgQWRkUmVmZXJlbmNlPGNvbnN0IHR5cGVu
YW1lIDo6c3RkOjp0cjE6OnR1cGxlX2VsZW1lbnQ8CisgICAgICBzdGF0aWNfY2FzdDxpbnQ+KEkp
LCBUdXBsZT46OnR5cGU+Ojp0eXBlCisgIGdldChjb25zdCBUdXBsZSYgdHVwbGUpIHsKKyAgICBy
ZXR1cm4gOjpzdGQ6OnRyMTo6Z2V0PEk+KHR1cGxlKTsKKyAgfQorfTsKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUdXBsZVQ+Citjb25zdCBzaXplX3QgVHVwbGVQb2xpY3k8VHVwbGVUPjo6dHVwbGVfc2l6
ZTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRQorCisjaWYgR1RFU1RfSEFTX1NURF9U
VVBMRV8KK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBUeXBlcz4KK3N0cnVjdCBUdXBsZVBvbGljeTwg
OjpzdGQ6OnR1cGxlPFR5cGVzLi4uPiA+IHsKKyAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8VHlwZXMu
Li4+IFR1cGxlOworICBzdGF0aWMgY29uc3Qgc2l6ZV90IHR1cGxlX3NpemUgPSA6OnN0ZDo6dHVw
bGVfc2l6ZTxUdXBsZT46OnZhbHVlOworCisgIHRlbXBsYXRlIDxzaXplX3QgST4KKyAgc3RydWN0
IHR1cGxlX2VsZW1lbnQgOiA6OnN0ZDo6dHVwbGVfZWxlbWVudDxJLCBUdXBsZT4ge307CisKKyAg
dGVtcGxhdGUgPHNpemVfdCBJPgorICBzdGF0aWMgY29uc3QgdHlwZW5hbWUgOjpzdGQ6OnR1cGxl
X2VsZW1lbnQ8SSwgVHVwbGU+Ojp0eXBlJiBnZXQoCisgICAgICBjb25zdCBUdXBsZSYgdHVwbGUp
IHsKKyAgICByZXR1cm4gOjpzdGQ6OmdldDxJPih0dXBsZSk7CisgIH0KK307Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUuLi4gVHlwZXM+Citjb25zdCBzaXplX3QgVHVwbGVQb2xpY3k8IDo6c3RkOjp0dXBs
ZTxUeXBlcy4uLj4gPjo6dHVwbGVfc2l6ZTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9UVVBM
RV8KKworI2lmIEdURVNUX0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8KKy8v
IFRoaXMgaGVscGVyIHRlbXBsYXRlIGFsbG93cyBQcmludFRvKCkgZm9yIHR1cGxlcyBhbmQKKy8v
IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygpIHRvIGJlIGRlZmluZWQg
YnkKKy8vIGluZHVjdGlvbiBvbiB0aGUgbnVtYmVyIG9mIHR1cGxlIGZpZWxkcy4gIFRoZSBpZGVh
IGlzIHRoYXQKKy8vIFR1cGxlUHJlZml4UHJpbnRlcjxOPjo6UHJpbnRQcmVmaXhUbyh0LCBvcykg
cHJpbnRzIHRoZSBmaXJzdCBOCisvLyBmaWVsZHMgaW4gdHVwbGUgdCwgYW5kIGNhbiBiZSBkZWZp
bmVkIGluIHRlcm1zIG9mCisvLyBUdXBsZVByZWZpeFByaW50ZXI8TiAtIDE+LgorLy8KKy8vIFRo
ZSBpbmR1Y3RpdmUgY2FzZS4KK3RlbXBsYXRlIDxzaXplX3QgTj4KK3N0cnVjdCBUdXBsZVByZWZp
eFByaW50ZXIgeworICAvLyBQcmludHMgdGhlIGZpcnN0IE4gZmllbGRzIG9mIGEgdHVwbGUuCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4KKyAgc3RhdGljIHZvaWQgUHJpbnRQcmVmaXhUbyhj
b25zdCBUdXBsZSYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVHVwbGVQcmVmaXhQcmlu
dGVyPE4gLSAxPjo6UHJpbnRQcmVmaXhUbyh0LCBvcyk7CisgICAgR1RFU1RfSU5URU5USU9OQUxf
Q09OU1RfQ09ORF9QVVNIXygpCisgICAgaWYgKE4gPiAxKSB7CisgICAgR1RFU1RfSU5URU5USU9O
QUxfQ09OU1RfQ09ORF9QT1BfKCkKKyAgICAgICpvcyA8PCAiLCAiOworICAgIH0KKyAgICBVbml2
ZXJzYWxQcmludGVyPAorICAgICAgICB0eXBlbmFtZSBUdXBsZVBvbGljeTxUdXBsZT46OnRlbXBs
YXRlIHR1cGxlX2VsZW1lbnQ8TiAtIDE+Ojp0eXBlPgorICAgICAgICA6OlByaW50KFR1cGxlUG9s
aWN5PFR1cGxlPjo6dGVtcGxhdGUgZ2V0PE4gLSAxPih0KSwgb3MpOworICB9CisKKyAgLy8gVGVy
c2VseSBwcmludHMgdGhlIGZpcnN0IE4gZmllbGRzIG9mIGEgdHVwbGUgdG8gYSBzdHJpbmcgdmVj
dG9yLAorICAvLyBvbmUgZWxlbWVudCBmb3IgZWFjaCBmaWVsZC4KKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIFR1cGxlPgorICBzdGF0aWMgdm9pZCBUZXJzZVByaW50UHJlZml4VG9TdHJpbmdzKGNvbnN0
IFR1cGxlJiB0LCBTdHJpbmdzKiBzdHJpbmdzKSB7CisgICAgVHVwbGVQcmVmaXhQcmludGVyPE4g
LSAxPjo6VGVyc2VQcmludFByZWZpeFRvU3RyaW5ncyh0LCBzdHJpbmdzKTsKKyAgICA6OnN0ZDo6
c3RyaW5nc3RyZWFtIHNzOworICAgIFVuaXZlcnNhbFRlcnNlUHJpbnQoVHVwbGVQb2xpY3k8VHVw
bGU+Ojp0ZW1wbGF0ZSBnZXQ8TiAtIDE+KHQpLCAmc3MpOworICAgIHN0cmluZ3MtPnB1c2hfYmFj
ayhzcy5zdHIoKSk7CisgIH0KK307CisKKy8vIEJhc2UgY2FzZS4KK3RlbXBsYXRlIDw+CitzdHJ1
Y3QgVHVwbGVQcmVmaXhQcmludGVyPDA+IHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPgor
ICBzdGF0aWMgdm9pZCBQcmludFByZWZpeFRvKGNvbnN0IFR1cGxlJiwgOjpzdGQ6Om9zdHJlYW0q
KSB7fQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4KKyAgc3RhdGljIHZvaWQgVGVyc2VQ
cmludFByZWZpeFRvU3RyaW5ncyhjb25zdCBUdXBsZSYsIFN0cmluZ3MqKSB7fQorfTsKKworLy8g
SGVscGVyIGZ1bmN0aW9uIGZvciBwcmludGluZyBhIHR1cGxlLgorLy8gVHVwbGUgbXVzdCBiZSBl
aXRoZXIgc3RkOjp0cjE6OnR1cGxlIG9yIHN0ZDo6dHVwbGUgdHlwZS4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBUdXBsZT4KK3ZvaWQgUHJpbnRUdXBsZVRvKGNvbnN0IFR1cGxlJiB0LCA6OnN0ZDo6b3N0
cmVhbSogb3MpIHsKKyAgKm9zIDw8ICIoIjsKKyAgVHVwbGVQcmVmaXhQcmludGVyPFR1cGxlUG9s
aWN5PFR1cGxlPjo6dHVwbGVfc2l6ZT46OlByaW50UHJlZml4VG8odCwgb3MpOworICAqb3MgPDwg
IikiOworfQorCisvLyBQcmludHMgdGhlIGZpZWxkcyBvZiBhIHR1cGxlIHRlcnNlbHkgdG8gYSBz
dHJpbmcgdmVjdG9yLCBvbmUKKy8vIGVsZW1lbnQgZm9yIGVhY2ggZmllbGQuICBTZWUgdGhlIGNv
bW1lbnQgYmVmb3JlCisvLyBVbml2ZXJzYWxUZXJzZVByaW50KCkgZm9yIGhvdyB3ZSBkZWZpbmUg
InRlcnNlbHkiLgordGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPgorU3RyaW5ncyBVbml2ZXJzYWxU
ZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoY29uc3QgVHVwbGUmIHZhbHVlKSB7CisgIFN0
cmluZ3MgcmVzdWx0OworICBUdXBsZVByZWZpeFByaW50ZXI8VHVwbGVQb2xpY3k8VHVwbGU+Ojp0
dXBsZV9zaXplPjo6CisgICAgICBUZXJzZVByaW50UHJlZml4VG9TdHJpbmdzKHZhbHVlLCAmcmVz
dWx0KTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBM
RSB8fCBHVEVTVF9IQVNfU1REX1RVUExFXworCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKwor
I2lmIEdURVNUX0hBU19BQlNMCituYW1lc3BhY2UgaW50ZXJuYWwyIHsKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgordm9pZCBUeXBlV2l0aG91dEZvcm1hdHRlcjxULCBrQ29udmVydGlibGVUb1N0cmlu
Z1ZpZXc+OjpQcmludFZhbHVlKAorICAgIGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgaW50ZXJuYWw6OlByaW50VG8oYWJzbDo6c3RyaW5nX3ZpZXcodmFsdWUpLCBvcyk7
Cit9Cit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwyCisjZW5kaWYKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Cis6OnN0ZDo6c3RyaW5nIFByaW50VG9TdHJpbmcoY29uc3QgVCYgdmFsdWUpIHsKKyAg
OjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgaW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnRl
cjxUPjo6UHJpbnQodmFsdWUsICZzcyk7CisgIHJldHVybiBzcy5zdHIoKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIHRlc3RpbmcKKworLy8gSW5jbHVkZSBhbnkgY3VzdG9tIHByaW50ZXIgYWRkZWQg
YnkgdGhlIGxvY2FsIGluc3RhbGxhdGlvbi4KKy8vIFdlIG11c3QgaW5jbHVkZSB0aGlzIGhlYWRl
ciBhdCB0aGUgZW5kIHRvIG1ha2Ugc3VyZSBpdCBjYW4gdXNlIHRoZQorLy8gZGVjbGFyYXRpb25z
IGZyb20gdGhpcyBmaWxlLgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1w
cmludGVycy5oIgorCisjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJJTlRF
UlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
Z3Rlc3Qtc3BpLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0
LXNwaS5oCmluZGV4IGM0MWRhNDg0NDc2MDNlOTY1ZmI3NzJhYmNhMmYxNDVlZTgyYTYwNmYuLjFl
ODk4MzkzOGVhMjc5MmM1MjY5MGVhZDI5YjAwYWI1OGNkYWFlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qtc3BpLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1zcGkuaApAQCAtMjYsMTYgKzI2
LDIwIEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0v
LwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCiAvLwogLy8gVXRp
bGl0aWVzIGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0IGl0c2VsZiBhbmQgY29kZSB0aGF0IHVzZXMg
R29vZ2xlIFRlc3QKIC8vIChlLmcuIGZyYW1ld29ya3MgYnVpbHQgb24gdG9wIG9mIEdvb2dsZSBU
ZXN0KS4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDQgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdU
RVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfU1BJX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RF
U1RfR1RFU1RfU1BJX0hfCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LmgiCisKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQyNTEgXAor
LyogY2xhc3MgQSBuZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBieSBjbGll
bnRzIG9mIGNsYXNzIEIgKi8pCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIApAQCAtOTcsMTMgKzEw
MSwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIFNpbmdsZUZhaWx1cmVDaGVja2VyIHsKICBwdWJsaWM6
CiAgIC8vIFRoZSBjb25zdHJ1Y3RvciByZW1lbWJlcnMgdGhlIGFyZ3VtZW50cy4KICAgU2luZ2xl
RmFpbHVyZUNoZWNrZXIoY29uc3QgVGVzdFBhcnRSZXN1bHRBcnJheSogcmVzdWx0cywKLSAgICAg
ICAgICAgICAgICAgICAgICAgVGVzdFBhcnRSZXN1bHQ6OlR5cGUgdHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogc3Vic3RyKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
VGVzdFBhcnRSZXN1bHQ6OlR5cGUgdHlwZSwgY29uc3Qgc3RkOjpzdHJpbmcmIHN1YnN0cik7CiAg
IH5TaW5nbGVGYWlsdXJlQ2hlY2tlcigpOwogIHByaXZhdGU6CiAgIGNvbnN0IFRlc3RQYXJ0UmVz
dWx0QXJyYXkqIGNvbnN0IHJlc3VsdHNfOwogICBjb25zdCBUZXN0UGFydFJlc3VsdDo6VHlwZSB0
eXBlXzsKLSAgY29uc3QgU3RyaW5nIHN1YnN0cl87CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHN1YnN0
cl87CiAKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTaW5nbGVGYWlsdXJlQ2hl
Y2tlcik7CiB9OwpAQCAtMTEyLDYgKzExNSw4IEBAIGNsYXNzIEdURVNUX0FQSV8gU2luZ2xlRmFp
bHVyZUNoZWNrZXIgewogCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCitHVEVTVF9ESVNBQkxF
X01TQ19XQVJOSU5HU19QT1BfKCkgIC8vICA0MjUxCisKIC8vIEEgc2V0IG9mIG1hY3JvcyBmb3Ig
dGVzdGluZyBHb29nbGUgVGVzdCBhc3NlcnRpb25zIG9yIGNvZGUgdGhhdCdzIGV4cGVjdGVkCiAv
LyB0byBnZW5lcmF0ZSBHb29nbGUgVGVzdCBmYXRhbCBmYWlsdXJlcy4gIEl0IHZlcmlmaWVzIHRo
YXQgdGhlIGdpdmVuCiAvLyBzdGF0ZW1lbnQgd2lsbCBjYXVzZSBleGFjdGx5IG9uZSBmYXRhbCBH
b29nbGUgVGVzdCBmYWlsdXJlIHdpdGggJ3N1YnN0cicKQEAgLTIyMyw3ICsyMjgsNyBAQCBjbGFz
cyBHVEVTVF9BUElfIFNpbmdsZUZhaWx1cmVDaGVja2VyIHsKICAgICAgICAgKHN1YnN0cikpO1wK
ICAgICB7XAogICAgICAgOjp0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRl
ciBndGVzdF9yZXBvcnRlcihcCi0gICAgICAgICAgOjp0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBh
cnRSZXN1bHRSZXBvcnRlcjo6SU5URVJDRVBUX0FMTF9USFJFQURTLFwKKyAgICAgICAgICA6OnRl
c3Rpbmc6OlNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpJTlRFUkNFUFRfQUxMX1RI
UkVBRFMsIFwKICAgICAgICAgICAmZ3Rlc3RfZmFpbHVyZXMpO1wKICAgICAgIGlmICg6OnRlc3Rp
bmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgc3RhdGVtZW50OyB9XAogICAgIH1cCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXRlc3Qt
cGFydC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10ZXN0
LXBhcnQuaAppbmRleCBmNzE0NzU5MDY3NjM5ZjFlYTRlYzBhMTI2MzQ3ZGVjMTIwNDgyNDM5Li4x
YzdiODllMDg3OTZkOTczMGY5ZjhlZWFlNDA2MjI3MTc3ZGJhNTE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgK
QEAgLTI3LDE2ICsyNywxOCBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogLy8K
LS8vIEF1dGhvcjogbWhldWxlQGdvb2dsZS5jb20gKE1hcmt1cyBIZXVsZSkKLS8vCisvLyBHT09H
TEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCiAKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVT
VF9HVEVTVF9URVNUX1BBUlRfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9U
RVNUX1BBUlRfSF8KIAogI2luY2x1ZGUgPGlvc2Z3ZD4KICNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5j
bHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNsdWRlIDxndGVzdC9p
bnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1p
bnRlcm5hbC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgorCitH
VEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MjUxIFwKKy8qIGNsYXNzIEEgbmVlZHMg
dG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50cyBvZiBjbGFzcyBCICov
KQogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKQEAgLTYyLDcgKzY0LDcgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBUZXN0UGFydFJlc3VsdCB7CiAgICAgICAgICAgICAgICAgIGludCBhX2xpbmVfbnVtYmVy
LAogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX21lc3NhZ2UpCiAgICAgICA6IHR5cGVf
KGFfdHlwZSksCi0gICAgICAgIGZpbGVfbmFtZV8oYV9maWxlX25hbWUpLAorICAgICAgICBmaWxl
X25hbWVfKGFfZmlsZV9uYW1lID09IE5VTEwgPyAiIiA6IGFfZmlsZV9uYW1lKSwKICAgICAgICAg
bGluZV9udW1iZXJfKGFfbGluZV9udW1iZXIpLAogICAgICAgICBzdW1tYXJ5XyhFeHRyYWN0U3Vt
bWFyeShhX21lc3NhZ2UpKSwKICAgICAgICAgbWVzc2FnZV8oYV9tZXNzYWdlKSB7CkBAIC03Myw3
ICs3NSw5IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFBhcnRSZXN1bHQgewogCiAgIC8vIEdldHMg
dGhlIG5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRoZSB0ZXN0IHBhcnQgdG9vayBwbGFj
ZSwgb3IKICAgLy8gTlVMTCBpZiBpdCdzIHVua25vd24uCi0gIGNvbnN0IGNoYXIqIGZpbGVfbmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIGZpbGVfbmFtZV8uY19zdHIoKTsgfQorICBjb25zdCBjaGFyKiBm
aWxlX25hbWUoKSBjb25zdCB7CisgICAgcmV0dXJuIGZpbGVfbmFtZV8uZW1wdHkoKSA/IE5VTEwg
OiBmaWxlX25hbWVfLmNfc3RyKCk7CisgIH0KIAogICAvLyBHZXRzIHRoZSBsaW5lIGluIHRoZSBz
b3VyY2UgZmlsZSB3aGVyZSB0aGUgdGVzdCBwYXJ0IHRvb2sgcGxhY2UsCiAgIC8vIG9yIC0xIGlm
IGl0J3MgdW5rbm93bi4KQEAgLTk2LDIxICsxMDAsMjIgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0
UGFydFJlc3VsdCB7CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdGVzdCBwYXJ0IGZhdGFs
bHkgZmFpbGVkLgogICBib29sIGZhdGFsbHlfZmFpbGVkKCkgY29uc3QgeyByZXR1cm4gdHlwZV8g
PT0ga0ZhdGFsRmFpbHVyZTsgfQorCiAgcHJpdmF0ZToKICAgVHlwZSB0eXBlXzsKIAogICAvLyBH
ZXRzIHRoZSBzdW1tYXJ5IG9mIHRoZSBmYWlsdXJlIG1lc3NhZ2UgYnkgb21pdHRpbmcgdGhlIHN0
YWNrCiAgIC8vIHRyYWNlIGluIGl0LgotICBzdGF0aWMgaW50ZXJuYWw6OlN0cmluZyBFeHRyYWN0
U3VtbWFyeShjb25zdCBjaGFyKiBtZXNzYWdlKTsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEV4dHJh
Y3RTdW1tYXJ5KGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwogCiAgIC8vIFRoZSBuYW1lIG9mIHRoZSBz
b3VyY2UgZmlsZSB3aGVyZSB0aGUgdGVzdCBwYXJ0IHRvb2sgcGxhY2UsIG9yCi0gIC8vIE5VTEwg
aWYgdGhlIHNvdXJjZSBmaWxlIGlzIHVua25vd24uCi0gIGludGVybmFsOjpTdHJpbmcgZmlsZV9u
YW1lXzsKKyAgLy8gIiIgaWYgdGhlIHNvdXJjZSBmaWxlIGlzIHVua25vd24uCisgIHN0ZDo6c3Ry
aW5nIGZpbGVfbmFtZV87CiAgIC8vIFRoZSBsaW5lIGluIHRoZSBzb3VyY2UgZmlsZSB3aGVyZSB0
aGUgdGVzdCBwYXJ0IHRvb2sgcGxhY2UsIG9yIC0xCiAgIC8vIGlmIHRoZSBsaW5lIG51bWJlciBp
cyB1bmtub3duLgogICBpbnQgbGluZV9udW1iZXJfOwotICBpbnRlcm5hbDo6U3RyaW5nIHN1bW1h
cnlfOyAgLy8gVGhlIHRlc3QgZmFpbHVyZSBzdW1tYXJ5LgotICBpbnRlcm5hbDo6U3RyaW5nIG1l
c3NhZ2VfOyAgLy8gVGhlIHRlc3QgZmFpbHVyZSBtZXNzYWdlLgorICBzdGQ6OnN0cmluZyBzdW1t
YXJ5XzsgIC8vIFRoZSB0ZXN0IGZhaWx1cmUgc3VtbWFyeS4KKyAgc3RkOjpzdHJpbmcgbWVzc2Fn
ZV87ICAvLyBUaGUgdGVzdCBmYWlsdXJlIG1lc3NhZ2UuCiB9OwogCiAvLyBQcmludHMgYSBUZXN0
UGFydFJlc3VsdCBvYmplY3QuCkBAIC0xNDAsNyArMTQ1LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBU
ZXN0UGFydFJlc3VsdEFycmF5IHsKIH07CiAKIC8vIFRoaXMgaW50ZXJmYWNlIGtub3dzIGhvdyB0
byByZXBvcnQgYSB0ZXN0IHBhcnQgcmVzdWx0LgotY2xhc3MgVGVzdFBhcnRSZXN1bHRSZXBvcnRl
ckludGVyZmFjZSB7CitjbGFzcyBHVEVTVF9BUElfIFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRl
cmZhY2UgewogIHB1YmxpYzoKICAgdmlydHVhbCB+VGVzdFBhcnRSZXN1bHRSZXBvcnRlckludGVy
ZmFjZSgpIHt9CiAKQEAgLTE3Myw0ICsxNzgsNiBAQCBjbGFzcyBHVEVTVF9BUElfIEhhc05ld0Zh
dGFsRmFpbHVyZUhlbHBlcgogCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCitHVEVTVF9ESVNB
QkxFX01TQ19XQVJOSU5HU19QT1BfKCkgIC8vICA0MjUxCisKICNlbmRpZiAgLy8gR1RFU1RfSU5D
TFVERV9HVEVTVF9HVEVTVF9URVNUX1BBUlRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10eXBlZC10ZXN0LmgKaW5kZXggMWVjOGVi
OGQzMDkzOThkNTJiZDQ5NjM4NGNmNDc0ODNhZTExNTJlZS4uMjliMDg1OTkyZGUwZWU0ZjM3YjY3
NjJmYzNlMjM2NDNjY2VhZDZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9ndGVzdC10eXBlZC10ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10eXBlZC10ZXN0LmgKQEAgLTI2LDggKzI2LDkgQEAK
IC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBB
dXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKKworLy8gR09PR0xFVEVTVF9D
TTAwMDEgRE8gTk9UIERFTEVURQogCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1Rf
VFlQRURfVEVTVF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1RZUEVEX1RF
U1RfSF8KQEAgLTgyLDYgKzgzLDI0IEBAIFRZUEVEX1RFU1QoRm9vVGVzdCwgRG9lc0JsYWgpIHsK
IAogVFlQRURfVEVTVChGb29UZXN0LCBIYXNQcm9wZXJ0eUEpIHsgLi4uIH0KIAorLy8gVFlQRURf
VEVTVF9DQVNFIHRha2VzIGFuIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IHdoaWNoIGFsbG93cyB0
byBzcGVjaWZ5IGEKKy8vIGNsYXNzIHRoYXQgZ2VuZXJhdGVzIGN1c3RvbSB0ZXN0IG5hbWUgc3Vm
Zml4ZXMgYmFzZWQgb24gdGhlIHR5cGUuIFRoaXMgc2hvdWxkCisvLyBiZSBhIGNsYXNzIHdoaWNo
IGhhcyBhIHN0YXRpYyB0ZW1wbGF0ZSBmdW5jdGlvbiBHZXROYW1lKGludCBpbmRleCkgcmV0dXJu
aW5nCisvLyBhIHN0cmluZyBmb3IgZWFjaCB0eXBlLiBUaGUgcHJvdmlkZWQgaW50ZWdlciBpbmRl
eCBlcXVhbHMgdGhlIGluZGV4IG9mIHRoZQorLy8gdHlwZSBpbiB0aGUgcHJvdmlkZWQgdHlwZSBs
aXN0LiBJbiBtYW55IGNhc2VzIHRoZSBpbmRleCBjYW4gYmUgaWdub3JlZC4KKy8vCisvLyBGb3Ig
ZXhhbXBsZToKKy8vICAgY2xhc3MgTXlUeXBlTmFtZXMgeworLy8gICAgcHVibGljOgorLy8gICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorLy8gICAgIHN0YXRpYyBzdGQ6OnN0cmluZyBHZXROYW1l
KGludCkgeworLy8gICAgICAgaWYgKHN0ZDo6aXNfc2FtZTxULCBjaGFyPigpKSByZXR1cm4gImNo
YXIiOworLy8gICAgICAgaWYgKHN0ZDo6aXNfc2FtZTxULCBpbnQ+KCkpIHJldHVybiAiaW50IjsK
Ky8vICAgICAgIGlmIChzdGQ6OmlzX3NhbWU8VCwgdW5zaWduZWQgaW50PigpKSByZXR1cm4gInVu
c2lnbmVkX2ludCI7CisvLyAgICAgfQorLy8gICB9OworLy8gICBUWVBFRF9URVNUX0NBU0UoRm9v
VGVzdCwgTXlUeXBlcywgTXlUeXBlTmFtZXMpOworCiAjZW5kaWYgIC8vIDAKIAogLy8gVHlwZS1w
YXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBhYnN0cmFjdCB0ZXN0IHBhdHRlcm5zIHBhcmFtZXRlcml6
ZWQKQEAgLTE0MywxMSArMTYyLDE2IEBAIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15
LCBGb29UZXN0LCBNeVR5cGVzKTsKIC8vIElmIHRoZSB0eXBlIGxpc3QgY29udGFpbnMgb25seSBv
bmUgdHlwZSwgeW91IGNhbiB3cml0ZSB0aGF0IHR5cGUKIC8vIGRpcmVjdGx5IHdpdGhvdXQgVHlw
ZXM8Li4uPjoKIC8vICAgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3Qs
IGludCk7CisvLworLy8gU2ltaWxhciB0byB0aGUgb3B0aW9uYWwgYXJndW1lbnQgb2YgVFlQRURf
VEVTVF9DQVNFIGFib3ZlLAorLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgdGFrZXMgYW4gb3B0
aW9uYWwgZm91cnRoIGFyZ3VtZW50IHdoaWNoIGFsbG93cyB0bworLy8gZ2VuZXJhdGUgY3VzdG9t
IG5hbWVzLgorLy8gICBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwg
TXlUeXBlcywgTXlUeXBlTmFtZXMpOwogCiAjZW5kaWYgIC8vIDAKIAotI2luY2x1ZGUgPGd0ZXN0
L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC10
eXBlLXV0aWwuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCisjaW5j
bHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgiCiAKIC8vIEltcGxlbWVudHMg
dHlwZWQgdGVzdHMuCiAKQEAgLTE1NywzMyArMTgxLDQ3IEBAIElOU1RBTlRJQVRFX1RZUEVEX1RF
U1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsKIC8vCiAvLyBFeHBhbmRzIHRvIHRoZSBu
YW1lIG9mIHRoZSB0eXBlZGVmIGZvciB0aGUgdHlwZSBwYXJhbWV0ZXJzIG9mIHRoZQogLy8gZ2l2
ZW4gdGVzdCBjYXNlLgotI2RlZmluZSBHVEVTVF9UWVBFX1BBUkFNU18oVGVzdENhc2VOYW1lKSBn
dGVzdF90eXBlX3BhcmFtc18jI1Rlc3RDYXNlTmFtZSMjXworIyBkZWZpbmUgR1RFU1RfVFlQRV9Q
QVJBTVNfKFRlc3RDYXNlTmFtZSkgZ3Rlc3RfdHlwZV9wYXJhbXNfIyNUZXN0Q2FzZU5hbWUjI18K
KworLy8gRXhwYW5kcyB0byB0aGUgbmFtZSBvZiB0aGUgdHlwZWRlZiBmb3IgdGhlIE5hbWVHZW5l
cmF0b3IsIHJlc3BvbnNpYmxlIGZvcgorLy8gY3JlYXRpbmcgdGhlIHN1ZmZpeGVzIG9mIHRoZSBu
YW1lLgorI2RlZmluZSBHVEVTVF9OQU1FX0dFTkVSQVRPUl8oVGVzdENhc2VOYW1lKSBcCisgIGd0
ZXN0X3R5cGVfcGFyYW1zXyMjVGVzdENhc2VOYW1lIyNfTmFtZUdlbmVyYXRvcgogCiAvLyBUaGUg
J1R5cGVzJyB0ZW1wbGF0ZSBhcmd1bWVudCBiZWxvdyBtdXN0IGhhdmUgc3BhY2VzIGFyb3VuZCBp
dAogLy8gc2luY2Ugc29tZSBjb21waWxlcnMgbWF5IGNob2tlIG9uICc+Picgd2hlbiBwYXNzaW5n
IGEgdGVtcGxhdGUKIC8vIGluc3RhbmNlIChlLmcuIFR5cGVzPGludD4pCi0jZGVmaW5lIFRZUEVE
X1RFU1RfQ0FTRShDYXNlTmFtZSwgVHlwZXMpIFwKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OmludGVy
bmFsOjpUeXBlTGlzdDwgVHlwZXMgPjo6dHlwZSBcCi0gICAgICBHVEVTVF9UWVBFX1BBUkFNU18o
Q2FzZU5hbWUpCi0KLSNkZWZpbmUgVFlQRURfVEVTVChDYXNlTmFtZSwgVGVzdE5hbWUpIFwKLSAg
dGVtcGxhdGUgPHR5cGVuYW1lIGd0ZXN0X1R5cGVQYXJhbV8+IFwKLSAgY2xhc3MgR1RFU1RfVEVT
VF9DTEFTU19OQU1FXyhDYXNlTmFtZSwgVGVzdE5hbWUpIFwKLSAgICAgIDogcHVibGljIENhc2VO
YW1lPGd0ZXN0X1R5cGVQYXJhbV8+IHsgXAotICAgcHJpdmF0ZTogXAotICAgIHR5cGVkZWYgQ2Fz
ZU5hbWU8Z3Rlc3RfVHlwZVBhcmFtXz4gVGVzdEZpeHR1cmU7IFwKLSAgICB0eXBlZGVmIGd0ZXN0
X1R5cGVQYXJhbV8gVHlwZVBhcmFtOyBcCi0gICAgdmlydHVhbCB2b2lkIFRlc3RCb2R5KCk7IFwK
LSAgfTsgXAotICBib29sIGd0ZXN0XyMjQ2FzZU5hbWUjI18jI1Rlc3ROYW1lIyNfcmVnaXN0ZXJl
ZF8gPSBcCi0gICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpUeXBlUGFyYW1ldGVyaXplZFRlc3Q8
IFwKLSAgICAgICAgICBDYXNlTmFtZSwgXAotICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6
OlRlbXBsYXRlU2VsPCBcCi0gICAgICAgICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8oQ2Fz
ZU5hbWUsIFRlc3ROYW1lKT4sIFwKLSAgICAgICAgICBHVEVTVF9UWVBFX1BBUkFNU18oQ2FzZU5h
bWUpPjo6UmVnaXN0ZXIoXAotICAgICAgICAgICAgICAiIiwgI0Nhc2VOYW1lLCAjVGVzdE5hbWUs
IDApOyBcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiBcCi0gIHZvaWQg
R1RFU1RfVEVTVF9DTEFTU19OQU1FXyhDYXNlTmFtZSwgVGVzdE5hbWUpPGd0ZXN0X1R5cGVQYXJh
bV8+OjpUZXN0Qm9keSgpCisjIGRlZmluZSBUWVBFRF9URVNUX0NBU0UoQ2FzZU5hbWUsIFR5cGVz
LCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHR5cGVkZWYgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6VHlwZUxpc3Q8IFR5cGVzID46OnR5cGUgR1RFU1RfVFlQRV9QQVJBTVNfKCBc
CisgICAgICBDYXNlTmFtZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgIHR5cGVkZWYgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TmFt
ZUdlbmVyYXRvclNlbGVjdG9yPF9fVkFfQVJHU19fPjo6dHlwZSAgICBcCisgICAgICBHVEVTVF9O
QU1FX0dFTkVSQVRPUl8oQ2FzZU5hbWUpCisKKyMgZGVmaW5lIFRZUEVEX1RFU1QoQ2FzZU5hbWUs
IFRlc3ROYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgdGVt
cGxhdGUgPHR5cGVuYW1lIGd0ZXN0X1R5cGVQYXJhbV8+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgY2xhc3MgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyhDYXNlTmFt
ZSwgVGVzdE5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIDogcHVibGlj
IENhc2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgIHByaXZhdGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0eXBlZGVmIENhc2VOYW1lPGd0
ZXN0X1R5cGVQYXJhbV8+IFRlc3RGaXh0dXJlOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB0eXBlZGVmIGd0ZXN0X1R5cGVQYXJhbV8gVHlwZVBhcmFtOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2aXJ0dWFsIHZvaWQgVGVzdEJvZHkoKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgYm9vbCBndGVzdF8jI0Nhc2VOYW1lIyNfIyNUZXN0TmFtZSMjX3Jl
Z2lzdGVyZWRfIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gIFwKKyAgICAgIDo6dGVzdGluZzo6
aW50ZXJuYWw6OlR5cGVQYXJhbWV0ZXJpemVkVGVzdDwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICBDYXNlTmFtZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICA6OnRlc3Rpbmc6OmludGVy
bmFsOjpUZW1wbGF0ZVNlbDxHVEVTVF9URVNUX0NMQVNTX05BTUVfKENhc2VOYW1lLCAgIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRlc3ROYW1lKT4sIFwKKyAgICAgICAgICBHVEVTVF9UWVBFX1BBUkFNU18oICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
ICAgQ2FzZU5hbWUpPjo6UmVnaXN0ZXIoIiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKCAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXyksICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI0Nhc2VOYW1lLCAjVGVzdE5h
bWUsIDAsICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6R2VuZXJhdGVOYW1lczwgICAgICAgIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX05BTUVfR0VORVJBVE9SXyhD
YXNlTmFtZSksICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdURVNUX1RZUEVfUEFSQU1TXyhDYXNlTmFtZSk+KCkpOyAgICAgIFwKKyAgdGVtcGxhdGUgPHR5
cGVuYW1lIGd0ZXN0X1R5cGVQYXJhbV8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgdm9pZCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKENhc2VOYW1lLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRlc3ROYW1lKTxndGVzdF9UeXBlUGFyYW1fPjo6VGVzdEJvZHkoKQogCiAjZW5kaWYg
IC8vIEdURVNUX0hBU19UWVBFRF9URVNUCiAKQEAgLTE5NiwzMSArMjM0LDMxIEBAIElOU1RBTlRJ
QVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsKIC8vIEV4cGFuZHMg
dG8gdGhlIG5hbWVzcGFjZSBuYW1lIHRoYXQgdGhlIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyBm
b3IKIC8vIHRoZSBnaXZlbiB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGFyZSBkZWZpbmVk
IGluLiAgVGhlIGV4YWN0CiAvLyBuYW1lIG9mIHRoZSBuYW1lc3BhY2UgaXMgc3ViamVjdCB0byBj
aGFuZ2Ugd2l0aG91dCBub3RpY2UuCi0jZGVmaW5lIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhUZXN0
Q2FzZU5hbWUpIFwKKyMgZGVmaW5lIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhUZXN0Q2FzZU5hbWUp
IFwKICAgZ3Rlc3RfY2FzZV8jI1Rlc3RDYXNlTmFtZSMjXwogCiAvLyBJTlRFUk5BTCBJTVBMRU1F
TlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgogLy8KIC8vIEV4cGFuZHMgdG8gdGhl
IG5hbWUgb2YgdGhlIHZhcmlhYmxlIHVzZWQgdG8gcmVtZW1iZXIgdGhlIG5hbWVzIG9mCiAvLyB0
aGUgZGVmaW5lZCB0ZXN0cyBpbiB0aGUgZ2l2ZW4gdGVzdCBjYXNlLgotI2RlZmluZSBHVEVTVF9U
WVBFRF9URVNUX0NBU0VfUF9TVEFURV8oVGVzdENhc2VOYW1lKSBcCisjIGRlZmluZSBHVEVTVF9U
WVBFRF9URVNUX0NBU0VfUF9TVEFURV8oVGVzdENhc2VOYW1lKSBcCiAgIGd0ZXN0X3R5cGVkX3Rl
c3RfY2FzZV9wX3N0YXRlXyMjVGVzdENhc2VOYW1lIyNfCiAKIC8vIElOVEVSTkFMIElNUExFTUVO
VEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUgRElSRUNUTFkuCiAvLwogLy8gRXhwYW5k
cyB0byB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgdXNlZCB0byByZW1lbWJlciB0aGUgbmFtZXMg
b2YKIC8vIHRoZSByZWdpc3RlcmVkIHRlc3RzIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UuCi0jZGVm
aW5lIEdURVNUX1JFR0lTVEVSRURfVEVTVF9OQU1FU18oVGVzdENhc2VOYW1lKSBcCisjIGRlZmlu
ZSBHVEVTVF9SRUdJU1RFUkVEX1RFU1RfTkFNRVNfKFRlc3RDYXNlTmFtZSkgXAogICBndGVzdF9y
ZWdpc3RlcmVkX3Rlc3RfbmFtZXNfIyNUZXN0Q2FzZU5hbWUjI18KIAogLy8gVGhlIHZhcmlhYmxl
cyBkZWZpbmVkIGluIHRoZSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBtYWNyb3MgYXJlCiAvLyBz
dGF0aWMgYXMgdHlwaWNhbGx5IHRoZXNlIG1hY3JvcyBhcmUgdXNlZCBpbiBhIC5oIGZpbGUgdGhh
dCBjYW4gYmUKIC8vICNpbmNsdWRlZCBpbiBtdWx0aXBsZSB0cmFuc2xhdGlvbiB1bml0cyBsaW5r
ZWQgdG9nZXRoZXIuCi0jZGVmaW5lIFRZUEVEX1RFU1RfQ0FTRV9QKENhc2VOYW1lKSBcCisjIGRl
ZmluZSBUWVBFRF9URVNUX0NBU0VfUChDYXNlTmFtZSkgXAogICBzdGF0aWMgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6VHlwZWRUZXN0Q2FzZVBTdGF0ZSBcCiAgICAgICBHVEVTVF9UWVBFRF9URVNUX0NB
U0VfUF9TVEFURV8oQ2FzZU5hbWUpCiAKLSNkZWZpbmUgVFlQRURfVEVTVF9QKENhc2VOYW1lLCBU
ZXN0TmFtZSkgXAorIyBkZWZpbmUgVFlQRURfVEVTVF9QKENhc2VOYW1lLCBUZXN0TmFtZSkgXAog
ICBuYW1lc3BhY2UgR1RFU1RfQ0FTRV9OQU1FU1BBQ0VfKENhc2VOYW1lKSB7IFwKICAgdGVtcGxh
dGUgPHR5cGVuYW1lIGd0ZXN0X1R5cGVQYXJhbV8+IFwKICAgY2xhc3MgVGVzdE5hbWUgOiBwdWJs
aWMgQ2FzZU5hbWU8Z3Rlc3RfVHlwZVBhcmFtXz4geyBcCkBAIC0yMjksMzAgKzI2NywzOCBAQCBJ
TlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcyk7CiAgICAg
dHlwZWRlZiBndGVzdF9UeXBlUGFyYW1fIFR5cGVQYXJhbTsgXAogICAgIHZpcnR1YWwgdm9pZCBU
ZXN0Qm9keSgpOyBcCiAgIH07IFwKLSAgc3RhdGljIGJvb2wgZ3Rlc3RfIyNUZXN0TmFtZSMjX2Rl
ZmluZWRfID0gXAorICBzdGF0aWMgYm9vbCBndGVzdF8jI1Rlc3ROYW1lIyNfZGVmaW5lZF8gR1RF
U1RfQVRUUklCVVRFX1VOVVNFRF8gPSBcCiAgICAgICBHVEVTVF9UWVBFRF9URVNUX0NBU0VfUF9T
VEFURV8oQ2FzZU5hbWUpLkFkZFRlc3ROYW1lKFwKICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5F
X18sICNDYXNlTmFtZSwgI1Rlc3ROYW1lKTsgXAogICB9IFwKICAgdGVtcGxhdGUgPHR5cGVuYW1l
IGd0ZXN0X1R5cGVQYXJhbV8+IFwKICAgdm9pZCBHVEVTVF9DQVNFX05BTUVTUEFDRV8oQ2FzZU5h
bWUpOjpUZXN0TmFtZTxndGVzdF9UeXBlUGFyYW1fPjo6VGVzdEJvZHkoKQogCi0jZGVmaW5lIFJF
R0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKENhc2VOYW1lLCAuLi4pIFwKKyMgZGVmaW5lIFJFR0lT
VEVSX1RZUEVEX1RFU1RfQ0FTRV9QKENhc2VOYW1lLCAuLi4pIFwKICAgbmFtZXNwYWNlIEdURVNU
X0NBU0VfTkFNRVNQQUNFXyhDYXNlTmFtZSkgeyBcCiAgIHR5cGVkZWYgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6VGVtcGxhdGVzPF9fVkFfQVJHU19fPjo6dHlwZSBndGVzdF9BbGxUZXN0c187IFwKICAg
fSBcCi0gIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBHVEVTVF9SRUdJU1RFUkVEX1RFU1RfTkFN
RVNfKENhc2VOYW1lKSA9IFwKLSAgICAgIEdURVNUX1RZUEVEX1RFU1RfQ0FTRV9QX1NUQVRFXyhD
YXNlTmFtZSkuVmVyaWZ5UmVnaXN0ZXJlZFRlc3ROYW1lcyhcCi0gICAgICAgICAgX19GSUxFX18s
IF9fTElORV9fLCAjX19WQV9BUkdTX18pCisgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBHVEVT
VF9SRUdJU1RFUkVEX1RFU1RfTkFNRVNfKENhc2VOYW1lKSBcCisgICAgICBHVEVTVF9BVFRSSUJV
VEVfVU5VU0VEXyA9IFwKKyAgICAgICAgICBHVEVTVF9UWVBFRF9URVNUX0NBU0VfUF9TVEFURV8o
Q2FzZU5hbWUpLlZlcmlmeVJlZ2lzdGVyZWRUZXN0TmFtZXMoIFwKKyAgICAgICAgICAgICAgX19G
SUxFX18sIF9fTElORV9fLCAjX19WQV9BUkdTX18pCiAKIC8vIFRoZSAnVHlwZXMnIHRlbXBsYXRl
IGFyZ3VtZW50IGJlbG93IG11c3QgaGF2ZSBzcGFjZXMgYXJvdW5kIGl0CiAvLyBzaW5jZSBzb21l
IGNvbXBpbGVycyBtYXkgY2hva2Ugb24gJz4+JyB3aGVuIHBhc3NpbmcgYSB0ZW1wbGF0ZQogLy8g
aW5zdGFuY2UgKGUuZy4gVHlwZXM8aW50PikKLSNkZWZpbmUgSU5TVEFOVElBVEVfVFlQRURfVEVT
VF9DQVNFX1AoUHJlZml4LCBDYXNlTmFtZSwgVHlwZXMpIFwKLSAgYm9vbCBndGVzdF8jI1ByZWZp
eCMjXyMjQ2FzZU5hbWUgPSBcCi0gICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpUeXBlUGFyYW1l
dGVyaXplZFRlc3RDYXNlPENhc2VOYW1lLCBcCi0gICAgICAgICAgR1RFU1RfQ0FTRV9OQU1FU1BB
Q0VfKENhc2VOYW1lKTo6Z3Rlc3RfQWxsVGVzdHNfLCBcCi0gICAgICAgICAgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6VHlwZUxpc3Q8IFR5cGVzID46OnR5cGU+OjpSZWdpc3RlcihcCi0gICAgICAgICAg
ICAgICNQcmVmaXgsICNDYXNlTmFtZSwgR1RFU1RfUkVHSVNURVJFRF9URVNUX05BTUVTXyhDYXNl
TmFtZSkpCisjIGRlZmluZSBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChQcmVmaXgsIENh
c2VOYW1lLCBUeXBlcywgLi4uKSAgICAgIFwKKyAgYm9vbCBndGVzdF8jI1ByZWZpeCMjXyMjQ2Fz
ZU5hbWUgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gPSAgICAgICAgICAgICAgXAorICAgICAgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6VHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTwgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgQ2FzZU5hbWUsIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhDYXNl
TmFtZSk6Omd0ZXN0X0FsbFRlc3RzXywgICAgIFwKKyAgICAgICAgICA6OnRlc3Rpbmc6OmludGVy
bmFsOjpUeXBlTGlzdDwgVHlwZXMgPjo6dHlwZT46OiAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgIFJlZ2lzdGVyKCNQcmVmaXgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29k
ZUxvY2F0aW9uKF9fRklMRV9fLCBfX0xJTkVfXyksIFwKKyAgICAgICAgICAgICAgICAgICAmR1RF
U1RfVFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKENhc2VOYW1lKSwgI0Nhc2VOYW1lLCAgXAorICAg
ICAgICAgICAgICAgICAgIEdURVNUX1JFR0lTVEVSRURfVEVTVF9OQU1FU18oQ2FzZU5hbWUpLCAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
R2VuZXJhdGVOYW1lczwgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAg
ICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TmFtZUdlbmVyYXRvclNlbGVjdG9yPCAgICAgICAgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19WQV9BUkdTX18+Ojp0eXBlLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50
ZXJuYWw6OlR5cGVMaXN0PCBUeXBlcyA+Ojp0eXBlPigpKQogCiAjZW5kaWYgIC8vIEdURVNUX0hB
U19UWVBFRF9URVNUX1AKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9ndGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9ndGVzdC5oCmluZGV4IDkyMWZhZDExZmNjOGYyNGMwZGQyMjM5NGE0ODY3YWIyNGI2ZWEwYzMu
LjJiZThiMTEyYzYzN2IxMGRhY2ZkMDY5ZmI5NzFmZTY4NjZhOGQ4NzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgKQEAgLTI2LDEwICsyNiw5IEBA
CiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKIC8vCi0v
LyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGhlIEdvb2ds
ZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gVGhlIEdvb2dsZSBDKysg
VGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogLy8KIC8vIFRoaXMg
aGVhZGVyIGZpbGUgZGVmaW5lcyB0aGUgcHVibGljIEFQSSBmb3IgR29vZ2xlIFRlc3QuICBJdCBz
aG91bGQgYmUKIC8vIGluY2x1ZGVkIGJ5IGFueSB0ZXN0IHByb2dyYW0gdGhhdCB1c2VzIEdvb2ds
ZSBUZXN0LgpAQCAtNDgsMzggKzQ3LDU0IEBACiAvLyByZWdpc3RyYXRpb24gZnJvbSBCYXJ0aGVs
ZW15IERhZ2VuYWlzJyAoYmFydGhlbGVteUBwcm9sb2dpcXVlLmNvbSkKIC8vIGVhc3lVbml0IGZy
YW1ld29yay4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVm
IEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVT
VF9HVEVTVF9IXwogCiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPG9zdHJlYW0+CiAjaW5j
bHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwu
aD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4KLSNpbmNsdWRlIDxn
dGVzdC9ndGVzdC1kZWF0aC10ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtbWVzc2FnZS5o
PgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9n
dGVzdF9wcm9kLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0Lmg+Ci0jaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0
ZXN0LWludGVybmFsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgi
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LW1lc3NhZ2UuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgiCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdF9wcm9k
LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgiCisjaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3QtdHlwZWQtdGVzdC5oIgorCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0
MjUxIFwKKy8qIGNsYXNzIEEgbmVlZHMgdG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvIGJlIHVzZWQg
YnkgY2xpZW50cyBvZiBjbGFzcyBCICovKQogCiAvLyBEZXBlbmRpbmcgb24gdGhlIHBsYXRmb3Jt
LCBkaWZmZXJlbnQgc3RyaW5nIGNsYXNzZXMgYXJlIGF2YWlsYWJsZS4KIC8vIE9uIExpbnV4LCBp
biBhZGRpdGlvbiB0byA6OnN0ZDo6c3RyaW5nLCBHb29nbGUgYWxzbyBtYWtlcyB1c2Ugb2YKIC8v
IGNsYXNzIDo6c3RyaW5nLCB3aGljaCBoYXMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIDo6c3RkOjpz
dHJpbmcsIGJ1dAogLy8gaGFzIGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uLgogLy8KLS8vIFRo
ZSB1c2VyIGNhbiBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgdG8gMSB0byBpbmRpY2F0
ZSB0aGF0CisvLyBZb3UgY2FuIGRlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORyB0byAxIHRv
IGluZGljYXRlIHRoYXQKIC8vIDo6c3RyaW5nIGlzIGF2YWlsYWJsZSBBTkQgaXMgYSBkaXN0aW5j
dCB0eXBlIHRvIDo6c3RkOjpzdHJpbmcsIG9yCiAvLyBkZWZpbmUgaXQgdG8gMCB0byBpbmRpY2F0
ZSBvdGhlcndpc2UuCiAvLwotLy8gSWYgdGhlIHVzZXIncyA6OnN0ZDo6c3RyaW5nIGFuZCA6OnN0
cmluZyBhcmUgdGhlIHNhbWUgY2xhc3MgZHVlIHRvCi0vLyBhbGlhc2luZywgaGUgc2hvdWxkIGRl
ZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORyB0byAwLgorLy8gSWYgOjpzdGQ6OnN0cmluZyBh
bmQgOjpzdHJpbmcgYXJlIHRoZSBzYW1lIGNsYXNzIG9uIHlvdXIgcGxhdGZvcm0KKy8vIGR1ZSB0
byBhbGlhc2luZywgeW91IHNob3VsZCBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgdG8g
MC4KIC8vCi0vLyBJZiB0aGUgdXNlciBkb2Vzbid0IGRlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NU
UklORywgaXQgaXMgZGVmaW5lZAorLy8gSWYgeW91IGRvIG5vdCBkZWZpbmUgR1RFU1RfSEFTX0dM
T0JBTF9TVFJJTkcsIGl0IGlzIGRlZmluZWQKIC8vIGhldXJpc3RpY2FsbHkuCiAKIG5hbWVzcGFj
ZSB0ZXN0aW5nIHsKIAorLy8gU2lsZW5jZSBDNDEwMCAodW5yZWZlcmVuY2VkIGZvcm1hbCBwYXJh
bWV0ZXIpIGFuZCA0ODA1CisvLyB1bnNhZmUgbWl4IG9mIHR5cGUgJ2NvbnN0IGludCcgYW5kIHR5
cGUgJ2NvbnN0IGJvb2wnCisjaWZkZWYgX01TQ19WRVIKKyMgcHJhZ21hIHdhcm5pbmcocHVzaCkK
KyMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0ODA1KQorIyBwcmFnbWEgd2FybmluZyhkaXNhYmxl
OjQxMDApCisjZW5kaWYKKworCiAvLyBEZWNsYXJlcyB0aGUgZmxhZ3MuCiAKIC8vIFRoaXMgZmxh
ZyB0ZW1wb3JhcnkgZW5hYmxlcyB0aGUgZGlzYWJsZWQgdGVzdHMuCkBAIC0xMTMsNiArMTI4LDkg
QEAgR1RFU1RfREVDTEFSRV9zdHJpbmdfKG91dHB1dCk7CiAvLyB0ZXN0LgogR1RFU1RfREVDTEFS
RV9ib29sXyhwcmludF90aW1lKTsKIAorLy8gVGhpcyBmbGFncyBjb250cm9sIHdoZXRoZXIgR29v
Z2xlIFRlc3QgcHJpbnRzIFVURjggY2hhcmFjdGVycyBhcyB0ZXh0LgorR1RFU1RfREVDTEFSRV9i
b29sXyhwcmludF91dGY4KTsKKwogLy8gVGhpcyBmbGFnIHNwZWNpZmllcyB0aGUgcmFuZG9tIG51
bWJlciBzZWVkLgogR1RFU1RfREVDTEFSRV9pbnQzMl8ocmFuZG9tX3NlZWQpOwogCkBAIC0xMzMs
OSArMTUxLDE0IEBAIEdURVNUX0RFQ0xBUkVfaW50MzJfKHN0YWNrX3RyYWNlX2RlcHRoKTsKIAog
Ly8gV2hlbiB0aGlzIGZsYWcgaXMgc3BlY2lmaWVkLCBhIGZhaWxlZCBhc3NlcnRpb24gd2lsbCB0
aHJvdyBhbgogLy8gZXhjZXB0aW9uIGlmIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQsIG9yIGV4aXQg
dGhlIHByb2dyYW0gd2l0aCBhCi0vLyBub24temVybyBjb2RlIG90aGVyd2lzZS4KKy8vIG5vbi16
ZXJvIGNvZGUgb3RoZXJ3aXNlLiBGb3IgdXNlIHdpdGggYW4gZXh0ZXJuYWwgdGVzdCBmcmFtZXdv
cmsuCiBHVEVTVF9ERUNMQVJFX2Jvb2xfKHRocm93X29uX2ZhaWx1cmUpOwogCisvLyBXaGVuIHRo
aXMgZmxhZyBpcyBzZXQgd2l0aCBhICJob3N0OnBvcnQiIHN0cmluZywgb24gc3VwcG9ydGVkCisv
LyBwbGF0Zm9ybXMgdGVzdCByZXN1bHRzIGFyZSBzdHJlYW1lZCB0byB0aGUgc3BlY2lmaWVkIHBv
cnQgb24KKy8vIHRoZSBzcGVjaWZpZWQgaG9zdCBtYWNoaW5lLgorR1RFU1RfREVDTEFSRV9zdHJp
bmdfKHN0cmVhbV9yZXN1bHRfdG8pOworCiAvLyBUaGUgdXBwZXIgbGltaXQgZm9yIHZhbGlkIHN0
YWNrIHRyYWNlIGRlcHRocy4KIGNvbnN0IGludCBrTWF4U3RhY2tUcmFjZURlcHRoID0gMTAwOwog
CkBAIC0xNDcsMzEgKzE3MCwyNyBAQCBjbGFzcyBFeGVjRGVhdGhUZXN0OwogY2xhc3MgTm9FeGVj
RGVhdGhUZXN0OwogY2xhc3MgRmluYWxTdWNjZXNzQ2hlY2tlcjsKIGNsYXNzIEdUZXN0RmxhZ1Nh
dmVyOwotY2xhc3MgVGVzdEluZm9JbXBsOworY2xhc3MgU3RyZWFtaW5nTGlzdGVuZXJUZXN0Owog
Y2xhc3MgVGVzdFJlc3VsdEFjY2Vzc29yOwogY2xhc3MgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNz
b3I7CiBjbGFzcyBUZXN0RXZlbnRSZXBlYXRlcjsKK2NsYXNzIFVuaXRUZXN0UmVjb3JkUHJvcGVy
dHlUZXN0SGVscGVyOwogY2xhc3MgV2luZG93c0RlYXRoVGVzdDsKK2NsYXNzIEZ1Y2hzaWFEZWF0
aFRlc3Q7CiBjbGFzcyBVbml0VGVzdEltcGwqIEdldFVuaXRUZXN0SW1wbCgpOwogdm9pZCBSZXBv
cnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpOwotY2xhc3MgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOwotY2xhc3MgWG1sVW5p
dFRlc3RSZXN1bHRQcmludGVyOwotCi0vLyBDb252ZXJ0cyBhIHN0cmVhbWFibGUgdmFsdWUgdG8g
YSBTdHJpbmcuICBBIE5VTEwgcG9pbnRlciBpcwotLy8gY29udmVydGVkIHRvICIobnVsbCkiLiAg
V2hlbiB0aGUgaW5wdXQgdmFsdWUgaXMgYSA6OnN0cmluZywKLS8vIDo6c3RkOjpzdHJpbmcsIDo6
d3N0cmluZywgb3IgOjpzdGQ6OndzdHJpbmcgb2JqZWN0LCBlYWNoIE5VTAotLy8gY2hhcmFjdGVy
IGluIGl0IGlzIHJlcGxhY2VkIHdpdGggIlxcMCIuCi0vLyBEZWNsYXJlZCBpbiBndGVzdC1pbnRl
cm5hbC5oIGJ1dCBkZWZpbmVkIGhlcmUsIHNvIHRoYXQgaXQgaGFzIGFjY2VzcwotLy8gdG8gdGhl
IGRlZmluaXRpb24gb2YgdGhlIE1lc3NhZ2UgY2xhc3MsIHJlcXVpcmVkIGJ5IHRoZSBBUk0KLS8v
IGNvbXBpbGVyLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1TdHJpbmcgU3RyZWFtYWJsZVRvU3Ry
aW5nKGNvbnN0IFQmIHN0cmVhbWFibGUpIHsKLSAgcmV0dXJuIChNZXNzYWdlKCkgPDwgc3RyZWFt
YWJsZSkuR2V0U3RyaW5nKCk7Ci19CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSk7CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5h
bAogCisvLyBUaGUgZnJpZW5kIHJlbGF0aW9uc2hpcCBvZiBzb21lIG9mIHRoZXNlIGNsYXNzZXMg
aXMgY3ljbGljLgorLy8gSWYgd2UgZG9uJ3QgZm9yd2FyZCBkZWNsYXJlIHRoZW0gdGhlIGNvbXBp
bGVyIG1pZ2h0IGNvbmZ1c2UgdGhlIGNsYXNzZXMKKy8vIGluIGZyaWVuZHNoaXAgY2xhdXNlcyB3
aXRoIHNhbWUgbmFtZWQgY2xhc3NlcyBvbiB0aGUgc2NvcGUuCitjbGFzcyBUZXN0OworY2xhc3Mg
VGVzdENhc2U7CitjbGFzcyBUZXN0SW5mbzsKK2NsYXNzIFVuaXRUZXN0OworCiAvLyBBIGNsYXNz
IGZvciBpbmRpY2F0aW5nIHdoZXRoZXIgYW4gYXNzZXJ0aW9uIHdhcyBzdWNjZXNzZnVsLiAgV2hl
bgogLy8gdGhlIGFzc2VydGlvbiB3YXNuJ3Qgc3VjY2Vzc2Z1bCwgdGhlIEFzc2VydGlvblJlc3Vs
dCBvYmplY3QKIC8vIHJlbWVtYmVycyBhIG5vbi1lbXB0eSBtZXNzYWdlIHRoYXQgZGVzY3JpYmVz
IGhvdyBpdCBmYWlsZWQuCkBAIC0yNTYsOCArMjc1LDM1IEBAIGNsYXNzIEdURVNUX0FQSV8gQXNz
ZXJ0aW9uUmVzdWx0IHsKICAgLy8gQ29weSBjb25zdHJ1Y3Rvci4KICAgLy8gVXNlZCBpbiBFWFBF
Q1RfVFJVRS9GQUxTRShhc3NlcnRpb25fcmVzdWx0KS4KICAgQXNzZXJ0aW9uUmVzdWx0KGNvbnN0
IEFzc2VydGlvblJlc3VsdCYgb3RoZXIpOworCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01T
Q19WRVIgPCAxOTEwCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQ4MDAgLyog
Zm9yY2luZyB2YWx1ZSB0byBib29sICovKQorI2VuZGlmCisKICAgLy8gVXNlZCBpbiB0aGUgRVhQ
RUNUX1RSVUUvRkFMU0UoYm9vbF9leHByZXNzaW9uKS4KLSAgZXhwbGljaXQgQXNzZXJ0aW9uUmVz
dWx0KGJvb2wgc3VjY2VzcykgOiBzdWNjZXNzXyhzdWNjZXNzKSB7fQorICAvLworICAvLyBUIG11
c3QgYmUgY29udGV4dHVhbGx5IGNvbnZlcnRpYmxlIHRvIGJvb2wuCisgIC8vCisgIC8vIFRoZSBz
ZWNvbmQgcGFyYW1ldGVyIHByZXZlbnRzIHRoaXMgb3ZlcmxvYWQgZnJvbSBiZWluZyBjb25zaWRl
cmVkIGlmCisgIC8vIHRoZSBhcmd1bWVudCBpcyBpbXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRvIEFz
c2VydGlvblJlc3VsdC4gSW4gdGhhdCBjYXNlCisgIC8vIHdlIHdhbnQgQXNzZXJ0aW9uUmVzdWx0
J3MgY29weSBjb25zdHJ1Y3RvciB0byBiZSB1c2VkLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
KyAgZXhwbGljaXQgQXNzZXJ0aW9uUmVzdWx0KAorICAgICAgY29uc3QgVCYgc3VjY2VzcywKKyAg
ICAgIHR5cGVuYW1lIGludGVybmFsOjpFbmFibGVJZjwKKyAgICAgICAgICAhaW50ZXJuYWw6Oklt
cGxpY2l0bHlDb252ZXJ0aWJsZTxULCBBc3NlcnRpb25SZXN1bHQ+Ojp2YWx1ZT46OnR5cGUqCisg
ICAgICAgICAgLyplbmFibGVyKi8gPSBOVUxMKQorICAgICAgOiBzdWNjZXNzXyhzdWNjZXNzKSB7
fQorCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPCAxOTEwCisgIEdURVNUX0RJ
U0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQorI2VuZGlmCisKKyAgLy8gQXNzaWdubWVudCBvcGVy
YXRvci4KKyAgQXNzZXJ0aW9uUmVzdWx0JiBvcGVyYXRvcj0oQXNzZXJ0aW9uUmVzdWx0IG90aGVy
KSB7CisgICAgc3dhcChvdGhlcik7CisgICAgcmV0dXJuICp0aGlzOworICB9CiAKICAgLy8gUmV0
dXJucyB0cnVlIGlmZiB0aGUgYXNzZXJ0aW9uIHN1Y2NlZWRlZC4KICAgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0IHsgcmV0dXJuIHN1Y2Nlc3NfOyB9ICAvLyBOT0xJTlQKQEAgLTI3MCwyMCArMzE2LDM2
IEBAIGNsYXNzIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IHsKICAgLy8gYXNzZXJ0aW9uJ3Mg
ZXhwZWN0YXRpb24pLiBXaGVuIG5vdGhpbmcgaGFzIGJlZW4gc3RyZWFtZWQgaW50byB0aGUKICAg
Ly8gb2JqZWN0LCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy4KICAgY29uc3QgY2hhciogbWVzc2Fn
ZSgpIGNvbnN0IHsKLSAgICByZXR1cm4gbWVzc2FnZV8uZ2V0KCkgIT0gTlVMTCAmJiBtZXNzYWdl
Xy0+Y19zdHIoKSAhPSBOVUxMID8KLSAgICAgICAgICAgbWVzc2FnZV8tPmNfc3RyKCkgOiAiIjsK
KyAgICByZXR1cm4gbWVzc2FnZV8uZ2V0KCkgIT0gTlVMTCA/ICBtZXNzYWdlXy0+Y19zdHIoKSA6
ICIiOwogICB9Ci0gIC8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IFJlbW92ZSB0aGlzIGFmdGVy
IG1ha2luZyBzdXJlIG5vIGNsaWVudHMgdXNlIGl0LgorICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
YWZ0ZXIgbWFraW5nIHN1cmUgbm8gY2xpZW50cyB1c2UgaXQuCiAgIC8vIERlcHJlY2F0ZWQ7IHBs
ZWFzZSB1c2UgbWVzc2FnZSgpIGluc3RlYWQuCiAgIGNvbnN0IGNoYXIqIGZhaWx1cmVfbWVzc2Fn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1lc3NhZ2UoKTsgfQogCiAgIC8vIFN0cmVhbXMgYSBjdXN0b20g
ZmFpbHVyZSBtZXNzYWdlIGludG8gdGhpcyBvYmplY3QuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBBc3NlcnRpb25SZXN1bHQmIG9wZXJhdG9yPDwoY29uc3QgVCYgdmFsdWUpOworICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gQXNzZXJ0aW9uUmVzdWx0JiBvcGVyYXRvcjw8KGNvbnN0IFQmIHZhbHVl
KSB7CisgICAgQXBwZW5kTWVzc2FnZShNZXNzYWdlKCkgPDwgdmFsdWUpOworICAgIHJldHVybiAq
dGhpczsKKyAgfQorCisgIC8vIEFsbG93cyBzdHJlYW1pbmcgYmFzaWMgb3V0cHV0IG1hbmlwdWxh
dG9ycyBzdWNoIGFzIGVuZGwgb3IgZmx1c2ggaW50bworICAvLyB0aGlzIG9iamVjdC4KKyAgQXNz
ZXJ0aW9uUmVzdWx0JiBvcGVyYXRvcjw8KAorICAgICAgOjpzdGQ6Om9zdHJlYW0mICgqYmFzaWNf
bWFuaXB1bGF0b3IpKDo6c3RkOjpvc3RyZWFtJiBzdHJlYW0pKSB7CisgICAgQXBwZW5kTWVzc2Fn
ZShNZXNzYWdlKCkgPDwgYmFzaWNfbWFuaXB1bGF0b3IpOworICAgIHJldHVybiAqdGhpczsKKyAg
fQogCiAgcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSB3ZSB3YW50IEFzc2VydGlv
blJlc3VsdCB0byBiZQotICAvLyBjb3B5LWNvbnN0cnVjdGlibGUgYnV0IG5vdCBhc3NpZ25hYmxl
LgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBBc3NlcnRpb25SZXN1bHQmIG90aGVyKTsKKyAgLy8g
QXBwZW5kcyB0aGUgY29udGVudHMgb2YgbWVzc2FnZSB0byBtZXNzYWdlXy4KKyAgdm9pZCBBcHBl
bmRNZXNzYWdlKGNvbnN0IE1lc3NhZ2UmIGFfbWVzc2FnZSkgeworICAgIGlmIChtZXNzYWdlXy5n
ZXQoKSA9PSBOVUxMKQorICAgICAgbWVzc2FnZV8ucmVzZXQobmV3IDo6c3RkOjpzdHJpbmcpOwor
ICAgIG1lc3NhZ2VfLT5hcHBlbmQoYV9tZXNzYWdlLkdldFN0cmluZygpLmNfc3RyKCkpOworICB9
CisKKyAgLy8gU3dhcCB0aGUgY29udGVudHMgb2YgdGhpcyBBc3NlcnRpb25SZXN1bHQgd2l0aCBv
dGhlci4KKyAgdm9pZCBzd2FwKEFzc2VydGlvblJlc3VsdCYgb3RoZXIpOwogCiAgIC8vIFN0b3Jl
cyByZXN1bHQgb2YgdGhlIGFzc2VydGlvbiBwcmVkaWNhdGUuCiAgIGJvb2wgc3VjY2Vzc187CkBA
IC0yOTEsMTkgKzM1Myw4IEBAIGNsYXNzIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IHsKICAg
Ly8gY29uc3RydWN0IGlzIG5vdCBzYXRpc2ZpZWQgd2l0aCB0aGUgcHJlZGljYXRlJ3Mgb3V0Y29t
ZS4KICAgLy8gUmVmZXJlbmNlZCB2aWEgYSBwb2ludGVyIHRvIGF2b2lkIHRha2luZyB0b28gbXVj
aCBzdGFjayBmcmFtZSBzcGFjZQogICAvLyB3aXRoIHRlc3QgYXNzZXJ0aW9ucy4KLSAgaW50ZXJu
YWw6OnNjb3BlZF9wdHI8aW50ZXJuYWw6OlN0cmluZz4gbWVzc2FnZV87Ci19OyAgLy8gY2xhc3Mg
QXNzZXJ0aW9uUmVzdWx0Ci0KLS8vIFN0cmVhbXMgYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlIGlu
dG8gdGhpcyBvYmplY3QuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFzc2VydGlvblJlc3VsdCYg
QXNzZXJ0aW9uUmVzdWx0OjpvcGVyYXRvcjw8KGNvbnN0IFQmIHZhbHVlKSB7Ci0gIE1lc3NhZ2Ug
bXNnOwotICBpZiAobWVzc2FnZV8uZ2V0KCkgIT0gTlVMTCkKLSAgICBtc2cgPDwgKm1lc3NhZ2Vf
OwotICBtc2cgPDwgdmFsdWU7Ci0gIG1lc3NhZ2VfLnJlc2V0KG5ldyBpbnRlcm5hbDo6U3RyaW5n
KG1zZy5HZXRTdHJpbmcoKSkpOwotICByZXR1cm4gKnRoaXM7Ci19CisgIGludGVybmFsOjpzY29w
ZWRfcHRyPCA6OnN0ZDo6c3RyaW5nPiBtZXNzYWdlXzsKK307CiAKIC8vIE1ha2VzIGEgc3VjY2Vz
c2Z1bCBhc3NlcnRpb24gcmVzdWx0LgogR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0
aW9uU3VjY2VzcygpOwpAQCAtMzE1LDYgKzM2NiwxNSBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJl
c3VsdCBBc3NlcnRpb25GYWlsdXJlKCk7CiAvLyBEZXByZWNhdGVkOyB1c2UgQXNzZXJ0aW9uRmFp
bHVyZSgpIDw8IG1zZy4KIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvbkZhaWx1
cmUoY29uc3QgTWVzc2FnZSYgbXNnKTsKIAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKworLy8g
SW5jbHVkZXMgdGhlIGF1dG8tZ2VuZXJhdGVkIGhlYWRlciB0aGF0IGltcGxlbWVudHMgYSBmYW1p
bHkgb2YgZ2VuZXJpYworLy8gcHJlZGljYXRlIGFzc2VydGlvbiBtYWNyb3MuIFRoaXMgaW5jbHVk
ZSBjb21lcyBsYXRlIGJlY2F1c2UgaXQgcmVsaWVzIG9uCisvLyBBUElzIGRlY2xhcmVkIGFib3Zl
LgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIgorCituYW1lc3BhY2UgdGVzdGlu
ZyB7CisKIC8vIFRoZSBhYnN0cmFjdCBjbGFzcyB0aGF0IGFsbCB0ZXN0cyBpbmhlcml0IGZyb20u
CiAvLwogLy8gSW4gR29vZ2xlIFRlc3QsIGEgdW5pdCB0ZXN0IHByb2dyYW0gY29udGFpbnMgb25l
IG9yIG1hbnkgVGVzdENhc2VzLCBhbmQKQEAgLTMyNSwxMiArMzg1LDEyIEBAIEdURVNUX0FQSV8g
QXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvbkZhaWx1cmUoY29uc3QgTWVzc2FnZSYgbXNnKTsKIC8v
IHRoaXMgZm9yIHlvdS4KIC8vCiAvLyBUaGUgb25seSB0aW1lIHlvdSBkZXJpdmUgZnJvbSBUZXN0
IGlzIHdoZW4gZGVmaW5pbmcgYSB0ZXN0IGZpeHR1cmUKLS8vIHRvIGJlIHVzZWQgYSBURVNUX0Yu
ICBGb3IgZXhhbXBsZToKKy8vIHRvIGJlIHVzZWQgaW4gYSBURVNUX0YuICBGb3IgZXhhbXBsZToK
IC8vCiAvLyAgIGNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAvLyAgICBw
cm90ZWN0ZWQ6Ci0vLyAgICAgdmlydHVhbCB2b2lkIFNldFVwKCkgeyAuLi4gfQotLy8gICAgIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpIHsgLi4uIH0KKy8vICAgICB2b2lkIFNldFVwKCkgb3ZlcnJp
ZGUgeyAuLi4gfQorLy8gICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZSB7IC4uLiB9CiAvLyAg
ICAgLi4uCiAvLyAgIH07CiAvLwpAQCAtMzQwLDcgKzQwMCw3IEBAIEdURVNUX0FQSV8gQXNzZXJ0
aW9uUmVzdWx0IEFzc2VydGlvbkZhaWx1cmUoY29uc3QgTWVzc2FnZSYgbXNnKTsKIC8vIFRlc3Qg
aXMgbm90IGNvcHlhYmxlLgogY2xhc3MgR1RFU1RfQVBJXyBUZXN0IHsKICBwdWJsaWM6Ci0gIGZy
aWVuZCBjbGFzcyBpbnRlcm5hbDo6VGVzdEluZm9JbXBsOworICBmcmllbmQgY2xhc3MgVGVzdElu
Zm87CiAKICAgLy8gRGVmaW5lcyB0eXBlcyBmb3IgcG9pbnRlcnMgdG8gZnVuY3Rpb25zIHRoYXQg
c2V0IHVwIGFuZCB0ZWFyIGRvd24KICAgLy8gYSB0ZXN0IGNhc2UuCkBAIC0zNzYsMjAgKzQzNiwy
MSBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3QgewogICAvLyBub24tZmF0YWwpIGZhaWx1cmUuCiAg
IHN0YXRpYyBib29sIEhhc0ZhaWx1cmUoKSB7IHJldHVybiBIYXNGYXRhbEZhaWx1cmUoKSB8fCBI
YXNOb25mYXRhbEZhaWx1cmUoKTsgfQogCi0gIC8vIExvZ3MgYSBwcm9wZXJ0eSBmb3IgdGhlIGN1
cnJlbnQgdGVzdC4gIE9ubHkgdGhlIGxhc3QgdmFsdWUgZm9yIGEgZ2l2ZW4KLSAgLy8ga2V5IGlz
IHJlbWVtYmVyZWQuCi0gIC8vIFRoZXNlIGFyZSBwdWJsaWMgc3RhdGljIHNvIHRoZXkgY2FuIGJl
IGNhbGxlZCBmcm9tIHV0aWxpdHkgZnVuY3Rpb25zCi0gIC8vIHRoYXQgYXJlIG5vdCBtZW1iZXJz
IG9mIHRoZSB0ZXN0IGZpeHR1cmUuCi0gIC8vIFRoZSBhcmd1bWVudHMgYXJlIGNvbnN0IGNoYXIq
IGluc3RlYWQgc3RyaW5ncywgYXMgR29vZ2xlIFRlc3QgaXMgdXNlZAotICAvLyBvbiBwbGF0Zm9y
bXMgd2hlcmUgc3RyaW5nIGRvZXNuJ3QgY29tcGlsZS4KLSAgLy8KLSAgLy8gTm90ZSB0aGF0IGEg
ZHJpdmluZyBjb25zaWRlcmF0aW9uIGZvciB0aGVzZSBSZWNvcmRQcm9wZXJ0eSBtZXRob2RzCi0g
IC8vIHdhcyB0byBwcm9kdWNlIHhtbCBvdXRwdXQgc3VpdGVkIHRvIHRoZSBHcmVlbnNwYW4gY2hh
cnRpbmcgdXRpbGl0eSwKLSAgLy8gd2hpY2ggYXQgcHJlc2VudCB3aWxsIG9ubHkgY2hhcnQgdmFs
dWVzIHRoYXQgZml0IGluIGEgMzItYml0IGludC4gSXQKLSAgLy8gaXMgdGhlIHVzZXIncyByZXNw
b25zaWJpbGl0eSB0byByZXN0cmljdCB0aGVpciB2YWx1ZXMgdG8gMzItYml0IGludHMKLSAgLy8g
aWYgdGhleSBpbnRlbmQgdGhlbSB0byBiZSB1c2VkIHdpdGggR3JlZW5zcGFuLgotICBzdGF0aWMg
dm9pZCBSZWNvcmRQcm9wZXJ0eShjb25zdCBjaGFyKiBrZXksIGNvbnN0IGNoYXIqIHZhbHVlKTsK
LSAgc3RhdGljIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBpbnQgdmFsdWUp
OworICAvLyBMb2dzIGEgcHJvcGVydHkgZm9yIHRoZSBjdXJyZW50IHRlc3QsIHRlc3QgY2FzZSwg
b3IgZm9yIHRoZSBlbnRpcmUKKyAgLy8gaW52b2NhdGlvbiBvZiB0aGUgdGVzdCBwcm9ncmFtIHdo
ZW4gdXNlZCBvdXRzaWRlIG9mIHRoZSBjb250ZXh0IG9mIGEKKyAgLy8gdGVzdCBjYXNlLiAgT25s
eSB0aGUgbGFzdCB2YWx1ZSBmb3IgYSBnaXZlbiBrZXkgaXMgcmVtZW1iZXJlZC4gIFRoZXNlCisg
IC8vIGFyZSBwdWJsaWMgc3RhdGljIHNvIHRoZXkgY2FuIGJlIGNhbGxlZCBmcm9tIHV0aWxpdHkg
ZnVuY3Rpb25zIHRoYXQgYXJlCisgIC8vIG5vdCBtZW1iZXJzIG9mIHRoZSB0ZXN0IGZpeHR1cmUu
ICBDYWxscyB0byBSZWNvcmRQcm9wZXJ0eSBtYWRlIGR1cmluZworICAvLyBsaWZlc3BhbiBvZiB0
aGUgdGVzdCAoZnJvbSB0aGUgbW9tZW50IGl0cyBjb25zdHJ1Y3RvciBzdGFydHMgdG8gdGhlCisg
IC8vIG1vbWVudCBpdHMgZGVzdHJ1Y3RvciBmaW5pc2hlcykgd2lsbCBiZSBvdXRwdXQgaW4gWE1M
IGFzIGF0dHJpYnV0ZXMgb2YKKyAgLy8gdGhlIDx0ZXN0Y2FzZT4gZWxlbWVudC4gIFByb3BlcnRp
ZXMgcmVjb3JkZWQgZnJvbSBmaXh0dXJlJ3MKKyAgLy8gU2V0VXBUZXN0Q2FzZSBvciBUZWFyRG93
blRlc3RDYXNlIGFyZSBsb2dnZWQgYXMgYXR0cmlidXRlcyBvZiB0aGUKKyAgLy8gY29ycmVzcG9u
ZGluZyA8dGVzdHN1aXRlPiBlbGVtZW50LiAgQ2FsbHMgdG8gUmVjb3JkUHJvcGVydHkgbWFkZSBp
biB0aGUKKyAgLy8gZ2xvYmFsIGNvbnRleHQgKGJlZm9yZSBvciBhZnRlciBpbnZvY2F0aW9uIG9m
IFJVTl9BTExfVEVTVFMgYW5kIGZyb20KKyAgLy8gU2V0VXAvVGVhckRvd24gbWV0aG9kIG9mIEVu
dmlyb25tZW50IG9iamVjdHMgcmVnaXN0ZXJlZCB3aXRoIEdvb2dsZQorICAvLyBUZXN0KSB3aWxs
IGJlIG91dHB1dCBhcyBhdHRyaWJ1dGVzIG9mIHRoZSA8dGVzdHN1aXRlcz4gZWxlbWVudC4KKyAg
c3RhdGljIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwgY29uc3Qg
c3RkOjpzdHJpbmcmIHZhbHVlKTsKKyAgc3RhdGljIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3Qg
c3RkOjpzdHJpbmcmIGtleSwgaW50IHZhbHVlKTsKIAogIHByb3RlY3RlZDoKICAgLy8gQ3JlYXRl
cyBhIFRlc3Qgb2JqZWN0LgpAQCAtNDE3LDIwICs0NzgsMjMgQEAgY2xhc3MgR1RFU1RfQVBJXyBU
ZXN0IHsKICAgLy8gU2V0cyB1cCwgZXhlY3V0ZXMsIGFuZCB0ZWFycyBkb3duIHRoZSB0ZXN0Lgog
ICB2b2lkIFJ1bigpOwogCi0gIC8vIFVzZXMgYSBHVGVzdEZsYWdTYXZlciB0byBzYXZlIGFuZCBy
ZXN0b3JlIGFsbCBHb29nbGUgVGVzdCBmbGFncy4KLSAgY29uc3QgaW50ZXJuYWw6OkdUZXN0Rmxh
Z1NhdmVyKiBjb25zdCBndGVzdF9mbGFnX3NhdmVyXzsKKyAgLy8gRGVsZXRlcyBzZWxmLiAgV2Ug
ZGVsaWJlcmF0ZWx5IHBpY2sgYW4gdW51c3VhbCBuYW1lIGZvciB0aGlzCisgIC8vIGludGVybmFs
IG1ldGhvZCB0byBhdm9pZCBjbGFzaGluZyB3aXRoIG5hbWVzIHVzZWQgaW4gdXNlciBURVNUcy4K
KyAgdm9pZCBEZWxldGVTZWxmXygpIHsgZGVsZXRlIHRoaXM7IH0KIAotICAvLyBPZnRlbiBhIHVz
ZXIgbWlzLXNwZWxscyBTZXRVcCgpIGFzIFNldHVwKCkgYW5kIHNwZW5kcyBhIGxvbmcgdGltZQor
ICBjb25zdCBpbnRlcm5hbDo6c2NvcGVkX3B0cjwgR1RFU1RfRkxBR19TQVZFUl8gPiBndGVzdF9m
bGFnX3NhdmVyXzsKKworICAvLyBPZnRlbiBhIHVzZXIgbWlzc3BlbGxzIFNldFVwKCkgYXMgU2V0
dXAoKSBhbmQgc3BlbmRzIGEgbG9uZyB0aW1lCiAgIC8vIHdvbmRlcmluZyB3aHkgaXQgaXMgbmV2
ZXIgY2FsbGVkIGJ5IEdvb2dsZSBUZXN0LiAgVGhlIGRlY2xhcmF0aW9uIG9mCiAgIC8vIHRoZSBm
b2xsb3dpbmcgbWV0aG9kIGlzIHNvbGVseSBmb3IgY2F0Y2hpbmcgc3VjaCBhbiBlcnJvciBhdAog
ICAvLyBjb21waWxlIHRpbWU6CiAgIC8vCiAgIC8vICAgLSBUaGUgcmV0dXJuIHR5cGUgaXMgZGVs
aWJlcmF0ZWx5IGNob3NlbiB0byBiZSBub3Qgdm9pZCwgc28gaXQKLSAgLy8gICB3aWxsIGJlIGEg
Y29uZmxpY3QgaWYgYSB1c2VyIGRlY2xhcmVzIHZvaWQgU2V0dXAoKSBpbiBoaXMgdGVzdAotICAv
LyAgIGZpeHR1cmUuCisgIC8vICAgd2lsbCBiZSBhIGNvbmZsaWN0IGlmIHZvaWQgU2V0dXAoKSBp
cyBkZWNsYXJlZCBpbiB0aGUgdXNlcidzCisgIC8vICAgdGVzdCBmaXh0dXJlLgogICAvLwogICAv
LyAgIC0gVGhpcyBtZXRob2QgaXMgcHJpdmF0ZSwgc28gaXQgd2lsbCBiZSBhbm90aGVyIGNvbXBp
bGVyIGVycm9yCi0gIC8vICAgaWYgYSB1c2VyIGNhbGxzIGl0IGZyb20gaGlzIHRlc3QgZml4dHVy
ZS4KKyAgLy8gICBpZiB0aGUgbWV0aG9kIGlzIGNhbGxlZCBmcm9tIHRoZSB1c2VyJ3MgdGVzdCBm
aXh0dXJlLgogICAvLwogICAvLyBETyBOT1QgT1ZFUlJJREUgVEhJUyBGVU5DVElPTi4KICAgLy8K
QEAgLTQ1NCw3ICs1MTgsNyBAQCBjbGFzcyBUZXN0UHJvcGVydHkgewogICAvLyBDJ3Rvci4gIFRl
c3RQcm9wZXJ0eSBkb2VzIE5PVCBoYXZlIGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KICAgLy8gQWx3
YXlzIHVzZSB0aGlzIGNvbnN0cnVjdG9yICh3aXRoIHBhcmFtZXRlcnMpIHRvIGNyZWF0ZSBhCiAg
IC8vIFRlc3RQcm9wZXJ0eSBvYmplY3QuCi0gIFRlc3RQcm9wZXJ0eShjb25zdCBjaGFyKiBhX2tl
eSwgY29uc3QgY2hhciogYV92YWx1ZSkgOgorICBUZXN0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJp
bmcmIGFfa2V5LCBjb25zdCBzdGQ6OnN0cmluZyYgYV92YWx1ZSkgOgogICAgIGtleV8oYV9rZXkp
LCB2YWx1ZV8oYV92YWx1ZSkgewogICB9CiAKQEAgLTQ2OSwxNSArNTMzLDE1IEBAIGNsYXNzIFRl
c3RQcm9wZXJ0eSB7CiAgIH0KIAogICAvLyBTZXRzIGEgbmV3IHZhbHVlLCBvdmVycmlkaW5nIHRo
ZSBvbmUgc3VwcGxpZWQgaW4gdGhlIGNvbnN0cnVjdG9yLgotICB2b2lkIFNldFZhbHVlKGNvbnN0
IGNoYXIqIG5ld192YWx1ZSkgeworICB2b2lkIFNldFZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBu
ZXdfdmFsdWUpIHsKICAgICB2YWx1ZV8gPSBuZXdfdmFsdWU7CiAgIH0KIAogIHByaXZhdGU6CiAg
IC8vIFRoZSBrZXkgc3VwcGxpZWQgYnkgdGhlIHVzZXIuCi0gIGludGVybmFsOjpTdHJpbmcga2V5
XzsKKyAgc3RkOjpzdHJpbmcga2V5XzsKICAgLy8gVGhlIHZhbHVlIHN1cHBsaWVkIGJ5IHRoZSB1
c2VyLgotICBpbnRlcm5hbDo6U3RyaW5nIHZhbHVlXzsKKyAgc3RkOjpzdHJpbmcgdmFsdWVfOwog
fTsKIAogLy8gVGhlIHJlc3VsdCBvZiBhIHNpbmdsZSBUZXN0LiAgVGhpcyBpbmNsdWRlcyBhIGxp
c3Qgb2YKQEAgLTUxNiw5ICs1ODAsOCBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RSZXN1bHQgewog
ICAvLyBSZXR1cm5zIHRoZSBlbGFwc2VkIHRpbWUsIGluIG1pbGxpc2Vjb25kcy4KICAgVGltZUlu
TWlsbGlzIGVsYXBzZWRfdGltZSgpIGNvbnN0IHsgcmV0dXJuIGVsYXBzZWRfdGltZV87IH0KIAot
ICAvLyBSZXR1cm5zIHRoZSBpLXRoIHRlc3QgcGFydCByZXN1bHQgYW1vbmcgYWxsIHRoZSByZXN1
bHRzLiBpIGNhbiByYW5nZQotICAvLyBmcm9tIDAgdG8gdGVzdF9wcm9wZXJ0eV9jb3VudCgpIC0g
MS4gSWYgaSBpcyBub3QgaW4gdGhhdCByYW5nZSwgYWJvcnRzCi0gIC8vIHRoZSBwcm9ncmFtLgor
ICAvLyBSZXR1cm5zIHRoZSBpLXRoIHRlc3QgcGFydCByZXN1bHQgYW1vbmcgYWxsIHRoZSByZXN1
bHRzLiBpIGNhbiByYW5nZSBmcm9tIDAKKyAgLy8gdG8gdG90YWxfcGFydF9jb3VudCgpIC0gMS4g
SWYgaSBpcyBub3QgaW4gdGhhdCByYW5nZSwgYWJvcnRzIHRoZSBwcm9ncmFtLgogICBjb25zdCBU
ZXN0UGFydFJlc3VsdCYgR2V0VGVzdFBhcnRSZXN1bHQoaW50IGkpIGNvbnN0OwogCiAgIC8vIFJl
dHVybnMgdGhlIGktdGggdGVzdCBwcm9wZXJ0eS4gaSBjYW4gcmFuZ2UgZnJvbSAwIHRvCkBAIC01
MjgsMTMgKzU5MSwxNCBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RSZXN1bHQgewogCiAgcHJpdmF0
ZToKICAgZnJpZW5kIGNsYXNzIFRlc3RJbmZvOworICBmcmllbmQgY2xhc3MgVGVzdENhc2U7CiAg
IGZyaWVuZCBjbGFzcyBVbml0VGVzdDsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpEZWZhdWx0
R2xvYmFsVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpF
eGVjRGVhdGhUZXN0OwotICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbDsKICAg
ZnJpZW5kIGNsYXNzIGludGVybmFsOjpUZXN0UmVzdWx0QWNjZXNzb3I7CiAgIGZyaWVuZCBjbGFz
cyBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsOwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OldpbmRv
d3NEZWF0aFRlc3Q7CisgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6RnVjaHNpYURlYXRoVGVzdDsK
IAogICAvLyBHZXRzIHRoZSB2ZWN0b3Igb2YgVGVzdFBhcnRSZXN1bHRzLgogICBjb25zdCBzdGQ6
OnZlY3RvcjxUZXN0UGFydFJlc3VsdD4mIHRlc3RfcGFydF9yZXN1bHRzKCkgY29uc3QgewpAQCAt
NTUzLDEzICs2MTcsMTYgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0UmVzdWx0IHsKICAgLy8gYSBu
b24tZmF0YWwgZmFpbHVyZSBpZiBpbnZhbGlkIChlLmcuLCBpZiBpdCBjb25mbGljdHMgd2l0aCBy
ZXNlcnZlZAogICAvLyBrZXkgbmFtZXMpLiBJZiBhIHByb3BlcnR5IGlzIGFscmVhZHkgcmVjb3Jk
ZWQgZm9yIHRoZSBzYW1lIGtleSwgdGhlCiAgIC8vIHZhbHVlIHdpbGwgYmUgdXBkYXRlZCwgcmF0
aGVyIHRoYW4gc3RvcmluZyBtdWx0aXBsZSB2YWx1ZXMgZm9yIHRoZSBzYW1lCi0gIC8vIGtleS4K
LSAgdm9pZCBSZWNvcmRQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkp
OworICAvLyBrZXkuICB4bWxfZWxlbWVudCBzcGVjaWZpZXMgdGhlIGVsZW1lbnQgZm9yIHdoaWNo
IHRoZSBwcm9wZXJ0eSBpcyBiZWluZworICAvLyByZWNvcmRlZCBhbmQgaXMgdXNlZCBmb3IgdmFs
aWRhdGlvbi4KKyAgdm9pZCBSZWNvcmRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgeG1sX2Vs
ZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3By
b3BlcnR5KTsKIAogICAvLyBBZGRzIGEgZmFpbHVyZSBpZiB0aGUga2V5IGlzIGEgcmVzZXJ2ZWQg
YXR0cmlidXRlIG9mIEdvb2dsZSBUZXN0CiAgIC8vIHRlc3RjYXNlIHRhZ3MuICBSZXR1cm5zIHRy
dWUgaWYgdGhlIHByb3BlcnR5IGlzIHZhbGlkLgotICAvLyBUT0RPKHJ1c3NyKTogVmFsaWRhdGUg
YXR0cmlidXRlIG5hbWVzIGFyZSBsZWdhbCBhbmQgaHVtYW4gcmVhZGFibGUuCi0gIHN0YXRpYyBi
b29sIFZhbGlkYXRlVGVzdFByb3BlcnR5KGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0
eSk7CisgIC8vIEZJWE1FOiBWYWxpZGF0ZSBhdHRyaWJ1dGUgbmFtZXMgYXJlIGxlZ2FsIGFuZCBo
dW1hbiByZWFkYWJsZS4KKyAgc3RhdGljIGJvb2wgVmFsaWRhdGVUZXN0UHJvcGVydHkoY29uc3Qg
c3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpOwogCiAgIC8vIEFkZHMgYSB0
ZXN0IHBhcnQgcmVzdWx0IHRvIHRoZSBsaXN0LgogICB2b2lkIEFkZFRlc3RQYXJ0UmVzdWx0KGNv
bnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KTsKQEAgLTYxMSwyMCArNjc4LDM5
IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdEluZm8gewogICB+VGVzdEluZm8oKTsKIAogICAvLyBS
ZXR1cm5zIHRoZSB0ZXN0IGNhc2UgbmFtZS4KLSAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUo
KSBjb25zdDsKKyAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUoKSBjb25zdCB7IHJldHVybiB0
ZXN0X2Nhc2VfbmFtZV8uY19zdHIoKTsgfQogCiAgIC8vIFJldHVybnMgdGhlIHRlc3QgbmFtZS4K
LSAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0OworICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Qg
eyByZXR1cm4gbmFtZV8uY19zdHIoKTsgfQorCisgIC8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhl
IHBhcmFtZXRlciB0eXBlLCBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEgdHlwZWQKKyAgLy8gb3Ig
YSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKyAgY29uc3QgY2hhciogdHlwZV9wYXJhbSgpIGNv
bnN0IHsKKyAgICBpZiAodHlwZV9wYXJhbV8uZ2V0KCkgIT0gTlVMTCkKKyAgICAgIHJldHVybiB0
eXBlX3BhcmFtXy0+Y19zdHIoKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIC8vIFJldHVy
bnMgdGhlIHRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZhbHVlIHBhcmFtZXRlciwgb3IgTlVM
TCBpZiB0aGlzCisgIC8vIGlzIG5vdCBhIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKyAgY29u
c3QgY2hhciogdmFsdWVfcGFyYW0oKSBjb25zdCB7CisgICAgaWYgKHZhbHVlX3BhcmFtXy5nZXQo
KSAhPSBOVUxMKQorICAgICAgcmV0dXJuIHZhbHVlX3BhcmFtXy0+Y19zdHIoKTsKKyAgICByZXR1
cm4gTlVMTDsKKyAgfQorCisgIC8vIFJldHVybnMgdGhlIGZpbGUgbmFtZSB3aGVyZSB0aGlzIHRl
c3QgaXMgZGVmaW5lZC4KKyAgY29uc3QgY2hhciogZmlsZSgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0
aW9uXy5maWxlLmNfc3RyKCk7IH0KIAotICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNhc2UgY29tbWVu
dC4KLSAgY29uc3QgY2hhciogdGVzdF9jYXNlX2NvbW1lbnQoKSBjb25zdDsKKyAgLy8gUmV0dXJu
cyB0aGUgbGluZSB3aGVyZSB0aGlzIHRlc3QgaXMgZGVmaW5lZC4KKyAgaW50IGxpbmUoKSBjb25z
dCB7IHJldHVybiBsb2NhdGlvbl8ubGluZTsgfQogCi0gIC8vIFJldHVybnMgdGhlIHRlc3QgY29t
bWVudC4KLSAgY29uc3QgY2hhciogY29tbWVudCgpIGNvbnN0OworICAvLyBSZXR1cm4gdHJ1ZSBp
ZiB0aGlzIHRlc3Qgc2hvdWxkIG5vdCBiZSBydW4gYmVjYXVzZSBpdCdzIGluIGFub3RoZXIgc2hh
cmQuCisgIGJvb2wgaXNfaW5fYW5vdGhlcl9zaGFyZCgpIGNvbnN0IHsgcmV0dXJuIGlzX2luX2Fu
b3RoZXJfc2hhcmRfOyB9CiAKLSAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBzaG91bGQg
cnVuLCB0aGF0IGlzIGlmIHRoZSB0ZXN0IGlzIG5vdCBkaXNhYmxlZAotICAvLyAob3IgaXQgaXMg
ZGlzYWJsZWQgYnV0IHRoZSBhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnIGhhcyBiZWVuIHNw
ZWNpZmllZCkKLSAgLy8gYW5kIGl0cyBmdWxsIG5hbWUgbWF0Y2hlcyB0aGUgdXNlci1zcGVjaWZp
ZWQgZmlsdGVyLgorICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IHNob3VsZCBydW4sIHRo
YXQgaXMgaWYgdGhlIHRlc3QgaXMgbm90CisgIC8vIGRpc2FibGVkIChvciBpdCBpcyBkaXNhYmxl
ZCBidXQgdGhlIGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIGZsYWcgaGFzCisgIC8vIGJlZW4gc3Bl
Y2lmaWVkKSBhbmQgaXRzIGZ1bGwgbmFtZSBtYXRjaGVzIHRoZSB1c2VyLXNwZWNpZmllZCBmaWx0
ZXIuCiAgIC8vCiAgIC8vIEdvb2dsZSBUZXN0IGFsbG93cyB0aGUgdXNlciB0byBmaWx0ZXIgdGhl
IHRlc3RzIGJ5IHRoZWlyIGZ1bGwgbmFtZXMuCiAgIC8vIFRoZSBmdWxsIG5hbWUgb2YgYSB0ZXN0
IEJhciBpbiB0ZXN0IGNhc2UgRm9vIGlzIGRlZmluZWQgYXMKQEAgLTYzOCwxMCArNzI0LDE3IEBA
IGNsYXNzIEdURVNUX0FQSV8gVGVzdEluZm8gewogICAvLwogICAvLyBGb3IgZXhhbXBsZSwgKkEq
OkZvby4qIGlzIGEgZmlsdGVyIHRoYXQgbWF0Y2hlcyBhbnkgc3RyaW5nIHRoYXQKICAgLy8gY29u
dGFpbnMgdGhlIGNoYXJhY3RlciAnQScgb3Igc3RhcnRzIHdpdGggIkZvby4iLgotICBib29sIHNo
b3VsZF9ydW4oKSBjb25zdDsKKyAgYm9vbCBzaG91bGRfcnVuKCkgY29uc3QgeyByZXR1cm4gc2hv
dWxkX3J1bl87IH0KKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgdGVzdCB3aWxsIGFwcGVh
ciBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgYm9vbCBpc19yZXBvcnRhYmxlKCkgY29uc3QgeworICAg
IC8vIFRoZSBYTUwgcmVwb3J0IGluY2x1ZGVzIHRlc3RzIG1hdGNoaW5nIHRoZSBmaWx0ZXIsIGV4
Y2x1ZGluZyB0aG9zZQorICAgIC8vIHJ1biBpbiBvdGhlciBzaGFyZHMuCisgICAgcmV0dXJuIG1h
dGNoZXNfZmlsdGVyXyAmJiAhaXNfaW5fYW5vdGhlcl9zaGFyZF87CisgIH0KIAogICAvLyBSZXR1
cm5zIHRoZSByZXN1bHQgb2YgdGhlIHRlc3QuCi0gIGNvbnN0IFRlc3RSZXN1bHQqIHJlc3VsdCgp
IGNvbnN0OworICBjb25zdCBUZXN0UmVzdWx0KiByZXN1bHQoKSBjb25zdCB7IHJldHVybiAmcmVz
dWx0XzsgfQogCiAgcHJpdmF0ZToKICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVApAQCAtNjQ5LDM2
ICs3NDIsNjUgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0SW5mbyB7CiAjZW5kaWYgIC8vIEdURVNU
X0hBU19ERUFUSF9URVNUCiAgIGZyaWVuZCBjbGFzcyBUZXN0OwogICBmcmllbmQgY2xhc3MgVGVz
dENhc2U7Ci0gIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VGVzdEluZm9JbXBsOwogICBmcmllbmQg
Y2xhc3MgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbDsKKyAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpT
dHJlYW1pbmdMaXN0ZW5lclRlc3Q7CiAgIGZyaWVuZCBUZXN0SW5mbyogaW50ZXJuYWw6Ok1ha2VB
bmRSZWdpc3RlclRlc3RJbmZvKAotICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsIGNv
bnN0IGNoYXIqIG5hbWUsCi0gICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfY29tbWVudCwgY29u
c3QgY2hhciogY29tbWVudCwKKyAgICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAorICAg
ICAgY29uc3QgY2hhciogbmFtZSwKKyAgICAgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0sCisgICAg
ICBjb25zdCBjaGFyKiB2YWx1ZV9wYXJhbSwKKyAgICAgIGludGVybmFsOjpDb2RlTG9jYXRpb24g
Y29kZV9sb2NhdGlvbiwKICAgICAgIGludGVybmFsOjpUeXBlSWQgZml4dHVyZV9jbGFzc19pZCwK
ICAgICAgIFRlc3Q6OlNldFVwVGVzdENhc2VGdW5jIHNldF91cF90YywKICAgICAgIFRlc3Q6OlRl
YXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YywKICAgICAgIGludGVybmFsOjpUZXN0RmFj
dG9yeUJhc2UqIGZhY3RvcnkpOwogCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRlc3QgbWF0
Y2hlcyB0aGUgdXNlci1zcGVjaWZpZWQgZmlsdGVyLgotICBib29sIG1hdGNoZXNfZmlsdGVyKCkg
Y29uc3Q7CisgIC8vIENvbnN0cnVjdHMgYSBUZXN0SW5mbyBvYmplY3QuIFRoZSBuZXdseSBjb25z
dHJ1Y3RlZCBpbnN0YW5jZSBhc3N1bWVzCisgIC8vIG93bmVyc2hpcCBvZiB0aGUgZmFjdG9yeSBv
YmplY3QuCisgIFRlc3RJbmZvKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0X2Nhc2VfbmFtZSwKKyAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCisgICAgICAgICAgIGNvbnN0IGNoYXIq
IGFfdHlwZV9wYXJhbSwgICAvLyBOVUxMIGlmIG5vdCBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0
CisgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfdmFsdWVfcGFyYW0sICAvLyBOVUxMIGlmIG5vdCBh
IHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdAorICAgICAgICAgICBpbnRlcm5hbDo6Q29kZUxvY2F0
aW9uIGFfY29kZV9sb2NhdGlvbiwKKyAgICAgICAgICAgaW50ZXJuYWw6OlR5cGVJZCBmaXh0dXJl
X2NsYXNzX2lkLAorICAgICAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5
KTsKIAogICAvLyBJbmNyZW1lbnRzIHRoZSBudW1iZXIgb2YgZGVhdGggdGVzdHMgZW5jb3VudGVy
ZWQgaW4gdGhpcyB0ZXN0IHNvCiAgIC8vIGZhci4KLSAgaW50IGluY3JlbWVudF9kZWF0aF90ZXN0
X2NvdW50KCk7CisgIGludCBpbmNyZW1lbnRfZGVhdGhfdGVzdF9jb3VudCgpIHsKKyAgICByZXR1
cm4gcmVzdWx0Xy5pbmNyZW1lbnRfZGVhdGhfdGVzdF9jb3VudCgpOworICB9CiAKLSAgLy8gQWNj
ZXNzb3JzIGZvciB0aGUgaW1wbGVtZW50YXRpb24gb2JqZWN0LgotICBpbnRlcm5hbDo6VGVzdElu
Zm9JbXBsKiBpbXBsKCkgeyByZXR1cm4gaW1wbF87IH0KLSAgY29uc3QgaW50ZXJuYWw6OlRlc3RJ
bmZvSW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIGltcGxfOyB9CisgIC8vIENyZWF0ZXMgdGhl
IHRlc3Qgb2JqZWN0LCBydW5zIGl0LCByZWNvcmRzIGl0cyByZXN1bHQsIGFuZCB0aGVuCisgIC8v
IGRlbGV0ZXMgaXQuCisgIHZvaWQgUnVuKCk7CiAKLSAgLy8gQ29uc3RydWN0cyBhIFRlc3RJbmZv
IG9iamVjdC4gVGhlIG5ld2x5IGNvbnN0cnVjdGVkIGluc3RhbmNlIGFzc3VtZXMKLSAgLy8gb3du
ZXJzaGlwIG9mIHRoZSBmYWN0b3J5IG9iamVjdC4KLSAgVGVzdEluZm8oY29uc3QgY2hhciogdGVz
dF9jYXNlX25hbWUsIGNvbnN0IGNoYXIqIG5hbWUsCi0gICAgICAgICAgIGNvbnN0IGNoYXIqIHRl
c3RfY2FzZV9jb21tZW50LCBjb25zdCBjaGFyKiBjb21tZW50LAotICAgICAgICAgICBpbnRlcm5h
bDo6VHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCi0gICAgICAgICAgIGludGVybmFsOjpUZXN0RmFj
dG9yeUJhc2UqIGZhY3RvcnkpOworICBzdGF0aWMgdm9pZCBDbGVhclRlc3RSZXN1bHQoVGVzdElu
Zm8qIHRlc3RfaW5mbykgeworICAgIHRlc3RfaW5mby0+cmVzdWx0Xy5DbGVhcigpOworICB9CiAK
LSAgLy8gQW4gb3BhcXVlIGltcGxlbWVudGF0aW9uIG9iamVjdC4KLSAgaW50ZXJuYWw6OlRlc3RJ
bmZvSW1wbCogaW1wbF87CisgIC8vIFRoZXNlIGZpZWxkcyBhcmUgaW1tdXRhYmxlIHByb3BlcnRp
ZXMgb2YgdGhlIHRlc3QuCisgIGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RfY2FzZV9uYW1lXzsgICAg
IC8vIFRlc3QgY2FzZSBuYW1lCisgIGNvbnN0IHN0ZDo6c3RyaW5nIG5hbWVfOyAgICAgICAgICAg
ICAgIC8vIFRlc3QgbmFtZQorICAvLyBOYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdHlwZSwgb3IgTlVM
TCBpZiB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEKKyAgLy8gdHlwZS1wYXJhbWV0ZXJpemVkIHRl
c3QuCisgIGNvbnN0IGludGVybmFsOjpzY29wZWRfcHRyPGNvbnN0IDo6c3RkOjpzdHJpbmc+IHR5
cGVfcGFyYW1fOworICAvLyBUZXh0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2YWx1ZSBwYXJhbWV0
ZXIsIG9yIE5VTEwgaWYgdGhpcyBpcyBub3QgYQorICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRl
c3QuCisgIGNvbnN0IGludGVybmFsOjpzY29wZWRfcHRyPGNvbnN0IDo6c3RkOjpzdHJpbmc+IHZh
bHVlX3BhcmFtXzsKKyAgaW50ZXJuYWw6OkNvZGVMb2NhdGlvbiBsb2NhdGlvbl87CisgIGNvbnN0
IGludGVybmFsOjpUeXBlSWQgZml4dHVyZV9jbGFzc19pZF87ICAgLy8gSUQgb2YgdGhlIHRlc3Qg
Zml4dHVyZSBjbGFzcworICBib29sIHNob3VsZF9ydW5fOyAgICAgICAgICAgICAgICAgLy8gVHJ1
ZSBpZmYgdGhpcyB0ZXN0IHNob3VsZCBydW4KKyAgYm9vbCBpc19kaXNhYmxlZF87ICAgICAgICAg
ICAgICAgIC8vIFRydWUgaWZmIHRoaXMgdGVzdCBpcyBkaXNhYmxlZAorICBib29sIG1hdGNoZXNf
ZmlsdGVyXzsgICAgICAgICAgICAgLy8gVHJ1ZSBpZiB0aGlzIHRlc3QgbWF0Y2hlcyB0aGUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZXItc3BlY2lmaWVkIGZpbHRl
ci4KKyAgYm9vbCBpc19pbl9hbm90aGVyX3NoYXJkXzsgICAgICAgIC8vIFdpbGwgYmUgcnVuIGlu
IGFub3RoZXIgc2hhcmQuCisgIGludGVybmFsOjpUZXN0RmFjdG9yeUJhc2UqIGNvbnN0IGZhY3Rv
cnlfOyAgLy8gVGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHRlc3Qgb2JqZWN0CisKKyAgLy8gVGhpcyBm
aWVsZCBpcyBtdXRhYmxlIGFuZCBuZWVkcyB0byBiZSByZXNldCBiZWZvcmUgcnVubmluZyB0aGUK
KyAgLy8gdGVzdCBmb3IgdGhlIHNlY29uZCB0aW1lLgorICBUZXN0UmVzdWx0IHJlc3VsdF87CiAK
ICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0SW5mbyk7CiB9OwpAQCAtNjk2
LDkgKzgxOCwxMSBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RDYXNlIHsKICAgLy8gQXJndW1lbnRz
OgogICAvLwogICAvLyAgIG5hbWU6ICAgICAgICAgbmFtZSBvZiB0aGUgdGVzdCBjYXNlCisgIC8v
ICAgYV90eXBlX3BhcmFtOiB0aGUgbmFtZSBvZiB0aGUgdGVzdCdzIHR5cGUgcGFyYW1ldGVyLCBv
ciBOVUxMIGlmCisgIC8vICAgICAgICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGUtcGFyYW1l
dGVyaXplZCB0ZXN0LgogICAvLyAgIHNldF91cF90YzogICAgcG9pbnRlciB0byB0aGUgZnVuY3Rp
b24gdGhhdCBzZXRzIHVwIHRoZSB0ZXN0IGNhc2UKICAgLy8gICB0ZWFyX2Rvd25fdGM6IHBvaW50
ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgdGVhcnMgZG93biB0aGUgdGVzdCBjYXNlCi0gIFRlc3RD
YXNlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIGNvbW1lbnQsCisgIFRlc3RDYXNlKGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIGFfdHlwZV9wYXJhbSwKICAgICAgICAgICAgVGVz
dDo6U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAgICAgICAgICBUZXN0OjpUZWFyRG93
blRlc3RDYXNlRnVuYyB0ZWFyX2Rvd25fdGMpOwogCkBAIC03MDgsOCArODMyLDEzIEBAIGNsYXNz
IEdURVNUX0FQSV8gVGVzdENhc2UgewogICAvLyBHZXRzIHRoZSBuYW1lIG9mIHRoZSBUZXN0Q2Fz
ZS4KICAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG5hbWVfLmNfc3RyKCk7IH0K
IAotICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNhc2UgY29tbWVudC4KLSAgY29uc3QgY2hhciogY29t
bWVudCgpIGNvbnN0IHsgcmV0dXJuIGNvbW1lbnRfLmNfc3RyKCk7IH0KKyAgLy8gUmV0dXJucyB0
aGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIHR5cGUsIG9yIE5VTEwgaWYgdGhpcyBpcyBub3QgYQor
ICAvLyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlLgorICBjb25zdCBjaGFyKiB0eXBlX3Bh
cmFtKCkgY29uc3QgeworICAgIGlmICh0eXBlX3BhcmFtXy5nZXQoKSAhPSBOVUxMKQorICAgICAg
cmV0dXJuIHR5cGVfcGFyYW1fLT5jX3N0cigpOworICAgIHJldHVybiBOVUxMOworICB9CiAKICAg
Ly8gUmV0dXJucyB0cnVlIGlmIGFueSB0ZXN0IGluIHRoaXMgdGVzdCBjYXNlIHNob3VsZCBydW4u
CiAgIGJvb2wgc2hvdWxkX3J1bigpIGNvbnN0IHsgcmV0dXJuIHNob3VsZF9ydW5fOyB9CkBAIC03
MjAsOSArODQ5LDE1IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdENhc2UgewogICAvLyBHZXRzIHRo
ZSBudW1iZXIgb2YgZmFpbGVkIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlLgogICBpbnQgZmFpbGVk
X3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQg
dGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0LgorICBpbnQgcmVw
b3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CisKICAgLy8gR2V0cyB0aGUgbnVt
YmVyIG9mIGRpc2FibGVkIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlLgogICBpbnQgZGlzYWJsZWRf
dGVzdF9jb3VudCgpIGNvbnN0OwogCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0cyB0byBi
ZSBwcmludGVkIGluIHRoZSBYTUwgcmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV90ZXN0X2NvdW50
KCkgY29uc3Q7CisKICAgLy8gR2V0IHRoZSBudW1iZXIgb2YgdGVzdHMgaW4gdGhpcyB0ZXN0IGNh
c2UgdGhhdCBzaG91bGQgcnVuLgogICBpbnQgdGVzdF90b19ydW5fY291bnQoKSBjb25zdDsKIApA
QCAtNzQyLDYgKzg3NywxMCBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RDYXNlIHsKICAgLy8gdG90
YWxfdGVzdF9jb3VudCgpIC0gMS4gSWYgaSBpcyBub3QgaW4gdGhhdCByYW5nZSwgcmV0dXJucyBO
VUxMLgogICBjb25zdCBUZXN0SW5mbyogR2V0VGVzdEluZm8oaW50IGkpIGNvbnN0OwogCisgIC8v
IFJldHVybnMgdGhlIFRlc3RSZXN1bHQgdGhhdCBob2xkcyB0ZXN0IHByb3BlcnRpZXMgcmVjb3Jk
ZWQgZHVyaW5nCisgIC8vIGV4ZWN1dGlvbiBvZiBTZXRVcFRlc3RDYXNlIGFuZCBUZWFyRG93blRl
c3RDYXNlLgorICBjb25zdCBUZXN0UmVzdWx0JiBhZF9ob2NfdGVzdF9yZXN1bHQoKSBjb25zdCB7
IHJldHVybiBhZF9ob2NfdGVzdF9yZXN1bHRfOyB9CisKICBwcml2YXRlOgogICBmcmllbmQgY2xh
c3MgVGVzdDsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpVbml0VGVzdEltcGw7CkBAIC03NzYs
MTcgKzkxNSw0NCBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RDYXNlIHsKICAgLy8gUnVucyBldmVy
eSB0ZXN0IGluIHRoaXMgVGVzdENhc2UuCiAgIHZvaWQgUnVuKCk7CiAKKyAgLy8gUnVucyBTZXRV
cFRlc3RDYXNlKCkgZm9yIHRoaXMgVGVzdENhc2UuICBUaGlzIHdyYXBwZXIgaXMgbmVlZGVkCisg
IC8vIGZvciBjYXRjaGluZyBleGNlcHRpb25zIHRocm93biBmcm9tIFNldFVwVGVzdENhc2UoKS4K
KyAgdm9pZCBSdW5TZXRVcFRlc3RDYXNlKCkgeyAoKnNldF91cF90Y18pKCk7IH0KKworICAvLyBS
dW5zIFRlYXJEb3duVGVzdENhc2UoKSBmb3IgdGhpcyBUZXN0Q2FzZS4gIFRoaXMgd3JhcHBlciBp
cworICAvLyBuZWVkZWQgZm9yIGNhdGNoaW5nIGV4Y2VwdGlvbnMgdGhyb3duIGZyb20gVGVhckRv
d25UZXN0Q2FzZSgpLgorICB2b2lkIFJ1blRlYXJEb3duVGVzdENhc2UoKSB7ICgqdGVhcl9kb3du
X3RjXykoKTsgfQorCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGVzdCBwYXNzZWQuCi0gIHN0YXRp
YyBib29sIFRlc3RQYXNzZWQoY29uc3QgVGVzdEluZm8gKiB0ZXN0X2luZm8pOworICBzdGF0aWMg
Ym9vbCBUZXN0UGFzc2VkKGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKKyAgICByZXR1cm4g
dGVzdF9pbmZvLT5zaG91bGRfcnVuKCkgJiYgdGVzdF9pbmZvLT5yZXN1bHQoKS0+UGFzc2VkKCk7
CisgIH0KIAogICAvLyBSZXR1cm5zIHRydWUgaWZmIHRlc3QgZmFpbGVkLgotICBzdGF0aWMgYm9v
bCBUZXN0RmFpbGVkKGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKTsKKyAgc3RhdGljIGJvb2wg
VGVzdEZhaWxlZChjb25zdCBUZXN0SW5mbyogdGVzdF9pbmZvKSB7CisgICAgcmV0dXJuIHRlc3Rf
aW5mby0+c2hvdWxkX3J1bigpICYmIHRlc3RfaW5mby0+cmVzdWx0KCktPkZhaWxlZCgpOworICB9
CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdGVzdCBpcyBkaXNhYmxlZCBhbmQgd2lsbCBi
ZSByZXBvcnRlZCBpbiB0aGUgWE1MCisgIC8vIHJlcG9ydC4KKyAgc3RhdGljIGJvb2wgVGVzdFJl
cG9ydGFibGVEaXNhYmxlZChjb25zdCBUZXN0SW5mbyogdGVzdF9pbmZvKSB7CisgICAgcmV0dXJu
IHRlc3RfaW5mby0+aXNfcmVwb3J0YWJsZSgpICYmIHRlc3RfaW5mby0+aXNfZGlzYWJsZWRfOwor
ICB9CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0IGlzIGRpc2FibGVkLgotICBzdGF0aWMg
Ym9vbCBUZXN0RGlzYWJsZWQoY29uc3QgVGVzdEluZm8gKiB0ZXN0X2luZm8pOworICBzdGF0aWMg
Ym9vbCBUZXN0RGlzYWJsZWQoY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVy
biB0ZXN0X2luZm8tPmlzX2Rpc2FibGVkXzsKKyAgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYg
dGhpcyB0ZXN0IHdpbGwgYXBwZWFyIGluIHRoZSBYTUwgcmVwb3J0LgorICBzdGF0aWMgYm9vbCBU
ZXN0UmVwb3J0YWJsZShjb25zdCBUZXN0SW5mbyogdGVzdF9pbmZvKSB7CisgICAgcmV0dXJuIHRl
c3RfaW5mby0+aXNfcmVwb3J0YWJsZSgpOworICB9CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmIHRo
ZSBnaXZlbiB0ZXN0IHNob3VsZCBydW4uCi0gIHN0YXRpYyBib29sIFNob3VsZFJ1blRlc3QoY29u
c3QgVGVzdEluZm8gKnRlc3RfaW5mbyk7CisgIHN0YXRpYyBib29sIFNob3VsZFJ1blRlc3QoY29u
c3QgVGVzdEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPnNob3VsZF9y
dW4oKTsKKyAgfQogCiAgIC8vIFNodWZmbGVzIHRoZSB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4K
ICAgdm9pZCBTaHVmZmxlVGVzdHMoaW50ZXJuYWw6OlJhbmRvbSogcmFuZG9tKTsKQEAgLTc5NSw5
ICs5NjEsMTAgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIHZvaWQgVW5zaHVmZmxl
VGVzdHMoKTsKIAogICAvLyBOYW1lIG9mIHRoZSB0ZXN0IGNhc2UuCi0gIGludGVybmFsOjpTdHJp
bmcgbmFtZV87Ci0gIC8vIENvbW1lbnQgb24gdGhlIHRlc3QgY2FzZS4KLSAgaW50ZXJuYWw6OlN0
cmluZyBjb21tZW50XzsKKyAgc3RkOjpzdHJpbmcgbmFtZV87CisgIC8vIE5hbWUgb2YgdGhlIHBh
cmFtZXRlciB0eXBlLCBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEgdHlwZWQgb3IgYQorICAvLyB0
eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKyAgY29uc3QgaW50ZXJuYWw6OnNjb3BlZF9wdHI8Y29u
c3QgOjpzdGQ6OnN0cmluZz4gdHlwZV9wYXJhbV87CiAgIC8vIFRoZSB2ZWN0b3Igb2YgVGVzdElu
Zm9zIGluIHRoZWlyIG9yaWdpbmFsIG9yZGVyLiAgSXQgb3ducyB0aGUKICAgLy8gZWxlbWVudHMg
aW4gdGhlIHZlY3Rvci4KICAgc3RkOjp2ZWN0b3I8VGVzdEluZm8qPiB0ZXN0X2luZm9fbGlzdF87
CkBAIC04MTMsMTMgKzk4MCwxNiBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RDYXNlIHsKICAgYm9v
bCBzaG91bGRfcnVuXzsKICAgLy8gRWxhcHNlZCB0aW1lLCBpbiBtaWxsaXNlY29uZHMuCiAgIFRp
bWVJbk1pbGxpcyBlbGFwc2VkX3RpbWVfOworICAvLyBIb2xkcyB0ZXN0IHByb3BlcnRpZXMgcmVj
b3JkZWQgZHVyaW5nIGV4ZWN1dGlvbiBvZiBTZXRVcFRlc3RDYXNlIGFuZAorICAvLyBUZWFyRG93
blRlc3RDYXNlLgorICBUZXN0UmVzdWx0IGFkX2hvY190ZXN0X3Jlc3VsdF87CiAKICAgLy8gV2Ug
ZGlzYWxsb3cgY29weWluZyBUZXN0Q2FzZXMuCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oVGVzdENhc2UpOwogfTsKIAogLy8gQW4gRW52aXJvbm1lbnQgb2JqZWN0IGlzIGNhcGFi
bGUgb2Ygc2V0dGluZyB1cCBhbmQgdGVhcmluZyBkb3duIGFuCi0vLyBlbnZpcm9ubWVudC4gIFRo
ZSB1c2VyIHNob3VsZCBzdWJjbGFzcyB0aGlzIHRvIGRlZmluZSBoaXMgb3duCisvLyBlbnZpcm9u
bWVudC4gIFlvdSBzaG91bGQgc3ViY2xhc3MgdGhpcyB0byBkZWZpbmUgeW91ciBvd24KIC8vIGVu
dmlyb25tZW50KHMpLgogLy8KIC8vIEFuIEVudmlyb25tZW50IG9iamVjdCBkb2VzIHRoZSBzZXQt
dXAgYW5kIHRlYXItZG93biBpbiB2aXJ0dWFsCkBAIC04NDksNiArMTAxOSwxOCBAQCBjbGFzcyBF
bnZpcm9ubWVudCB7CiAgIHZpcnR1YWwgU2V0dXBfc2hvdWxkX2JlX3NwZWxsZWRfU2V0VXAqIFNl
dHVwKCkgeyByZXR1cm4gTlVMTDsgfQogfTsKIAorI2lmIEdURVNUX0hBU19FWENFUFRJT05TCisK
Ky8vIEV4Y2VwdGlvbiB3aGljaCBjYW4gYmUgdGhyb3duIGZyb20gVGVzdEV2ZW50TGlzdGVuZXI6
Ok9uVGVzdFBhcnRSZXN1bHQuCitjbGFzcyBHVEVTVF9BUElfIEFzc2VydGlvbkV4Y2VwdGlvbgor
ICAgIDogcHVibGljIGludGVybmFsOjpHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbiB7CisgcHVi
bGljOgorICBleHBsaWNpdCBBc3NlcnRpb25FeGNlcHRpb24oY29uc3QgVGVzdFBhcnRSZXN1bHQm
IHJlc3VsdCkKKyAgICAgIDogR29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24ocmVzdWx0KSB7fQor
fTsKKworI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUworCiAvLyBUaGUgaW50ZXJmYWNl
IGZvciB0cmFjaW5nIGV4ZWN1dGlvbiBvZiB0ZXN0cy4gVGhlIG1ldGhvZHMgYXJlIG9yZ2FuaXpl
ZCBpbgogLy8gdGhlIG9yZGVyIHRoZSBjb3JyZXNwb25kaW5nIGV2ZW50cyBhcmUgZmlyZWQuCiBj
bGFzcyBUZXN0RXZlbnRMaXN0ZW5lciB7CkBAIC04NzYsNyArMTA1OCw5IEBAIGNsYXNzIFRlc3RF
dmVudExpc3RlbmVyIHsKICAgLy8gRmlyZWQgYmVmb3JlIHRoZSB0ZXN0IHN0YXJ0cy4KICAgdmly
dHVhbCB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pID0gMDsKIAot
ICAvLyBGaXJlZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRVNTKCkuCisgIC8v
IEZpcmVkIGFmdGVyIGEgZmFpbGVkIGFzc2VydGlvbiBvciBhIFNVQ0NFRUQoKSBpbnZvY2F0aW9u
LgorICAvLyBJZiB5b3Ugd2FudCB0byB0aHJvdyBhbiBleGNlcHRpb24gZnJvbSB0aGlzIGZ1bmN0
aW9uIHRvIHNraXAgdG8gdGhlIG5leHQKKyAgLy8gVEVTVCwgaXQgbXVzdCBiZSBBc3NlcnRpb25F
eGNlcHRpb24gZGVmaW5lZCBhYm92ZSwgb3IgaW5oZXJpdGVkIGZyb20gaXQuCiAgIHZpcnR1YWwg
dm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVz
dWx0KSA9IDA7CiAKICAgLy8gRmlyZWQgYWZ0ZXIgdGhlIHRlc3QgZW5kcy4KQEAgLTk2MSwxMCAr
MTE0NSwxMCBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RFdmVudExpc3RlbmVycyB7CiAKICBwcml2
YXRlOgogICBmcmllbmQgY2xhc3MgVGVzdENhc2U7CisgIGZyaWVuZCBjbGFzcyBUZXN0SW5mbzsK
ICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpEZWZhdWx0R2xvYmFsVGVzdFBhcnRSZXN1bHRSZXBv
cnRlcjsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpOb0V4ZWNEZWF0aFRlc3Q7CiAgIGZyaWVu
ZCBjbGFzcyBpbnRlcm5hbDo6VGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I7Ci0gIGZyaWVuZCBj
bGFzcyBpbnRlcm5hbDo6VGVzdEluZm9JbXBsOwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlVu
aXRUZXN0SW1wbDsKIAogICAvLyBSZXR1cm5zIHJlcGVhdGVyIHRoYXQgYnJvYWRjYXN0cyB0aGUg
VGVzdEV2ZW50TGlzdGVuZXIgZXZlbnRzIHRvIGFsbApAQCAtMTAzMiwyMiArMTIxNiwyMyBAQCBj
bGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0IHsKIAogICAvLyBSZXR1cm5zIHRoZSBUZXN0Q2FzZSBv
YmplY3QgZm9yIHRoZSB0ZXN0IHRoYXQncyBjdXJyZW50bHkgcnVubmluZywKICAgLy8gb3IgTlVM
TCBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcuCi0gIGNvbnN0IFRlc3RDYXNlKiBjdXJyZW50X3Rlc3Rf
Y2FzZSgpIGNvbnN0OworICBjb25zdCBUZXN0Q2FzZSogY3VycmVudF90ZXN0X2Nhc2UoKSBjb25z
dAorICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKTsKIAogICAvLyBSZXR1cm5zIHRo
ZSBUZXN0SW5mbyBvYmplY3QgZm9yIHRoZSB0ZXN0IHRoYXQncyBjdXJyZW50bHkgcnVubmluZywK
ICAgLy8gb3IgTlVMTCBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcuCi0gIGNvbnN0IFRlc3RJbmZvKiBj
dXJyZW50X3Rlc3RfaW5mbygpIGNvbnN0OworICBjb25zdCBUZXN0SW5mbyogY3VycmVudF90ZXN0
X2luZm8oKSBjb25zdAorICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKTsKIAogICAv
LyBSZXR1cm5zIHRoZSByYW5kb20gc2VlZCB1c2VkIGF0IHRoZSBzdGFydCBvZiB0aGUgY3VycmVu
dCB0ZXN0IHJ1bi4KICAgaW50IHJhbmRvbV9zZWVkKCkgY29uc3Q7CiAKLSNpZiBHVEVTVF9IQVNf
UEFSQU1fVEVTVAogICAvLyBSZXR1cm5zIHRoZSBQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3Ry
eSBvYmplY3QgdXNlZCB0byBrZWVwIHRyYWNrIG9mCiAgIC8vIHZhbHVlLXBhcmFtZXRlcml6ZWQg
dGVzdHMgYW5kIGluc3RhbnRpYXRlIGFuZCByZWdpc3RlciB0aGVtLgogICAvLwogICAvLyBJTlRF
Uk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCi0gIGlu
dGVybmFsOjpQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSYgcGFyYW1ldGVyaXplZF90ZXN0
X3JlZ2lzdHJ5KCk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCisgIGludGVybmFs
OjpQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSYgcGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lz
dHJ5KCkKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4Xyk7CiAKICAgLy8gR2V0cyB0
aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgdGVzdCBjYXNlcy4KICAgaW50IHN1Y2Nlc3NmdWxfdGVz
dF9jYXNlX2NvdW50KCkgY29uc3Q7CkBAIC0xMDY4LDE1ICsxMjUzLDI1IEBAIGNsYXNzIEdURVNU
X0FQSV8gVW5pdFRlc3QgewogICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZmFpbGVkIHRlc3RzLgog
ICBpbnQgZmFpbGVkX3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAvLyBHZXRzIHRoZSBudW1iZXIg
b2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0
LgorICBpbnQgcmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CisKICAgLy8g
R2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzLgogICBpbnQgZGlzYWJsZWRfdGVzdF9j
b3VudCgpIGNvbnN0OwogCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0cyB0byBiZSBwcmlu
dGVkIGluIHRoZSBYTUwgcmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV90ZXN0X2NvdW50KCkgY29u
c3Q7CisKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0cy4KICAgaW50IHRvdGFsX3Rl
c3RfY291bnQoKSBjb25zdDsKIAogICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdGhhdCBz
aG91bGQgcnVuLgogICBpbnQgdGVzdF90b19ydW5fY291bnQoKSBjb25zdDsKIAorICAvLyBHZXRz
IHRoZSB0aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0gc3RhcnQsIGluIG1zIGZyb20gdGhlIHN0YXJ0
IG9mIHRoZQorICAvLyBVTklYIGVwb2NoLgorICBUaW1lSW5NaWxsaXMgc3RhcnRfdGltZXN0YW1w
KCkgY29uc3Q7CisKICAgLy8gR2V0cyB0aGUgZWxhcHNlZCB0aW1lLCBpbiBtaWxsaXNlY29uZHMu
CiAgIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3RpbWUoKSBjb25zdDsKIApAQCAtMTA5MSw2ICsxMjg2
LDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3QgewogICAvLyB0b3RhbF90ZXN0X2Nhc2Vf
Y291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVMTC4KICAg
Y29uc3QgVGVzdENhc2UqIEdldFRlc3RDYXNlKGludCBpKSBjb25zdDsKIAorICAvLyBSZXR1cm5z
IHRoZSBUZXN0UmVzdWx0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gb24gdGVzdCBmYWlsdXJlcyBh
bmQKKyAgLy8gcHJvcGVydGllcyBsb2dnZWQgb3V0c2lkZSBvZiBpbmRpdmlkdWFsIHRlc3QgY2Fz
ZXMuCisgIGNvbnN0IFRlc3RSZXN1bHQmIGFkX2hvY190ZXN0X3Jlc3VsdCgpIGNvbnN0OworCiAg
IC8vIFJldHVybnMgdGhlIGxpc3Qgb2YgZXZlbnQgbGlzdGVuZXJzIHRoYXQgY2FuIGJlIHVzZWQg
dG8gdHJhY2sgZXZlbnRzCiAgIC8vIGluc2lkZSBHb29nbGUgVGVzdC4KICAgVGVzdEV2ZW50TGlz
dGVuZXJzJiBsaXN0ZW5lcnMoKTsKQEAgLTExMTQsMTIgKzEzMTMsMTYgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBVbml0VGVzdCB7CiAgIHZvaWQgQWRkVGVzdFBhcnRSZXN1bHQoVGVzdFBhcnRSZXN1bHQ6
OlR5cGUgcmVzdWx0X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
ZmlsZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lX251bWJlciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnRlcm5hbDo6U3RyaW5nJiBtZXNzYWdlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludGVybmFsOjpTdHJpbmcmIG9zX3N0YWNr
X3RyYWNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVz
c2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3Nfc3Rh
Y2tfdHJhY2UpCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCi0gIC8vIEFk
ZHMgYSBUZXN0UHJvcGVydHkgdG8gdGhlIGN1cnJlbnQgVGVzdFJlc3VsdCBvYmplY3QuIElmIHRo
ZSByZXN1bHQgYWxyZWFkeQotICAvLyBjb250YWlucyBhIHByb3BlcnR5IHdpdGggdGhlIHNhbWUg
a2V5LCB0aGUgdmFsdWUgd2lsbCBiZSB1cGRhdGVkLgotICB2b2lkIFJlY29yZFByb3BlcnR5Rm9y
Q3VycmVudFRlc3QoY29uc3QgY2hhcioga2V5LCBjb25zdCBjaGFyKiB2YWx1ZSk7CisgIC8vIEFk
ZHMgYSBUZXN0UHJvcGVydHkgdG8gdGhlIGN1cnJlbnQgVGVzdFJlc3VsdCBvYmplY3Qgd2hlbiBp
bnZva2VkIGZyb20KKyAgLy8gaW5zaWRlIGEgdGVzdCwgdG8gY3VycmVudCBUZXN0Q2FzZSdzIGFk
X2hvY190ZXN0X3Jlc3VsdF8gd2hlbiBpbnZva2VkCisgIC8vIGZyb20gU2V0VXBUZXN0Q2FzZSBv
ciBUZWFyRG93blRlc3RDYXNlLCBvciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNldAorICAvLyB3
aGVuIGludm9rZWQgZWxzZXdoZXJlLiAgSWYgdGhlIHJlc3VsdCBhbHJlYWR5IGNvbnRhaW5zIGEg
cHJvcGVydHkgd2l0aAorICAvLyB0aGUgc2FtZSBrZXksIHRoZSB2YWx1ZSB3aWxsIGJlIHVwZGF0
ZWQuCisgIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwgY29uc3Qg
c3RkOjpzdHJpbmcmIHZhbHVlKTsKIAogICAvLyBHZXRzIHRoZSBpLXRoIHRlc3QgY2FzZSBhbW9u
ZyBhbGwgdGhlIHRlc3QgY2FzZXMuIGkgY2FuIHJhbmdlIGZyb20gMCB0bwogICAvLyB0b3RhbF90
ZXN0X2Nhc2VfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMg
TlVMTC4KQEAgLTExMjksMTYgKzEzMzIsMTggQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdCB7
CiAgIGludGVybmFsOjpVbml0VGVzdEltcGwqIGltcGwoKSB7IHJldHVybiBpbXBsXzsgfQogICBj
b25zdCBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gaW1wbF87
IH0KIAotICAvLyBUaGVzZSBjbGFzc2VzIGFuZCBmdW5jaW9ucyBhcmUgZnJpZW5kcyBhcyB0aGV5
IG5lZWQgdG8gYWNjZXNzIHByaXZhdGUKKyAgLy8gVGhlc2UgY2xhc3NlcyBhbmQgZnVuY3Rpb25z
IGFyZSBmcmllbmRzIGFzIHRoZXkgbmVlZCB0byBhY2Nlc3MgcHJpdmF0ZQogICAvLyBtZW1iZXJz
IG9mIFVuaXRUZXN0LgorICBmcmllbmQgY2xhc3MgU2NvcGVkVHJhY2U7CiAgIGZyaWVuZCBjbGFz
cyBUZXN0OwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkFzc2VydEhlbHBlcjsKLSAgZnJpZW5k
IGNsYXNzIGludGVybmFsOjpTY29wZWRUcmFjZTsKKyAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpT
dHJlYW1pbmdMaXN0ZW5lclRlc3Q7CisgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VW5pdFRlc3RS
ZWNvcmRQcm9wZXJ0eVRlc3RIZWxwZXI7CiAgIGZyaWVuZCBFbnZpcm9ubWVudCogQWRkR2xvYmFs
VGVzdEVudmlyb25tZW50KEVudmlyb25tZW50KiBlbnYpOwogICBmcmllbmQgaW50ZXJuYWw6OlVu
aXRUZXN0SW1wbCogaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpOwogICBmcmllbmQgdm9pZCBp
bnRlcm5hbDo6UmVwb3J0RmFpbHVyZUluVW5rbm93bkxvY2F0aW9uKAogICAgICAgVGVzdFBhcnRS
ZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCi0gICAgICBjb25zdCBpbnRlcm5hbDo6U3RyaW5nJiBt
ZXNzYWdlKTsKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKTsKIAogICAvLyBDcmVh
dGVzIGFuIGVtcHR5IFVuaXRUZXN0LgogICBVbml0VGVzdCgpOwpAQCAtMTE0OCwxMCArMTM1Mywx
MiBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0IHsKIAogICAvLyBQdXNoZXMgYSB0cmFjZSBk
ZWZpbmVkIGJ5IFNDT1BFRF9UUkFDRSgpIG9uIHRvIHRoZSBwZXItdGhyZWFkCiAgIC8vIEdvb2ds
ZSBUZXN0IHRyYWNlIHN0YWNrLgotICB2b2lkIFB1c2hHVGVzdFRyYWNlKGNvbnN0IGludGVybmFs
OjpUcmFjZUluZm8mIHRyYWNlKTsKKyAgdm9pZCBQdXNoR1Rlc3RUcmFjZShjb25zdCBpbnRlcm5h
bDo6VHJhY2VJbmZvJiB0cmFjZSkKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4Xyk7
CiAKICAgLy8gUG9wcyBhIHRyYWNlIGZyb20gdGhlIHBlci10aHJlYWQgR29vZ2xlIFRlc3QgdHJh
Y2Ugc3RhY2suCi0gIHZvaWQgUG9wR1Rlc3RUcmFjZSgpOworICB2b2lkIFBvcEdUZXN0VHJhY2Uo
KQorICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKTsKIAogICAvLyBQcm90ZWN0cyBt
dXRhYmxlIHN0YXRlIGluICppbXBsXy4gIFRoaXMgaXMgbXV0YWJsZSBhcyBzb21lIGNvbnN0CiAg
IC8vIG1ldGhvZHMgbmVlZCB0byBsb2NrIGl0IHRvby4KQEAgLTEyMDYsODIgKzE0MTMsNDAgQEAg
R1RFU1RfQVBJXyB2b2lkIEluaXRHb29nbGVUZXN0KGludCogYXJnYywgd2NoYXJfdCoqIGFyZ3Yp
OwogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCi0vLyBUaGVzZSBvdmVybG9hZGVkIHZlcnNpb25z
IGhhbmRsZSA6OnN0ZDo6c3RyaW5nIGFuZCA6OnN0ZDo6d3N0cmluZy4KLUdURVNUX0FQSV8gaW5s
aW5lIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjb25zdCA6OnN0ZDo6c3RyaW5nJiBz
dHIpIHsKLSAgcmV0dXJuIChNZXNzYWdlKCkgPDwgJyInIDw8IHN0ciA8PCAnIicpLkdldFN0cmlu
ZygpOwotfQotCi0jaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCi1HVEVTVF9BUElfIGlubGluZSBT
dHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3QgOjpzdGQ6OndzdHJpbmcmIHdzdHIp
IHsKLSAgcmV0dXJuIChNZXNzYWdlKCkgPDwgIkxcIiIgPDwgd3N0ciA8PCAnIicpLkdldFN0cmlu
ZygpOwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKLQotLy8gVGhlc2Ugb3Zl
cmxvYWRlZCB2ZXJzaW9ucyBoYW5kbGUgOjpzdHJpbmcgYW5kIDo6d3N0cmluZy4KLSNpZiBHVEVT
VF9IQVNfR0xPQkFMX1NUUklORwotR1RFU1RfQVBJXyBpbmxpbmUgU3RyaW5nIEZvcm1hdEZvckZh
aWx1cmVNZXNzYWdlKGNvbnN0IDo6c3RyaW5nJiBzdHIpIHsKLSAgcmV0dXJuIChNZXNzYWdlKCkg
PDwgJyInIDw8IHN0ciA8PCAnIicpLkdldFN0cmluZygpOwotfQotI2VuZGlmICAvLyBHVEVTVF9I
QVNfR0xPQkFMX1NUUklORwotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCi1HVEVTVF9B
UElfIGlubGluZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3QgOjp3c3RyaW5n
JiB3c3RyKSB7Ci0gIHJldHVybiAoTWVzc2FnZSgpIDw8ICJMXCIiIDw8IHdzdHIgPDwgJyInKS5H
ZXRTdHJpbmcoKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCi0KLS8v
IEZvcm1hdHMgYSBjb21wYXJpc29uIGFzc2VydGlvbiAoZS5nLiBBU1NFUlRfRVEsIEVYUEVDVF9M
VCwgYW5kIGV0YykKLS8vIG9wZXJhbmQgdG8gYmUgdXNlZCBpbiBhIGZhaWx1cmUgbWVzc2FnZS4g
IFRoZSB0eXBlIChidXQgbm90IHZhbHVlKQotLy8gb2YgdGhlIG90aGVyIG9wZXJhbmQgbWF5IGFm
ZmVjdCB0aGUgZm9ybWF0LiAgVGhpcyBhbGxvd3MgdXMgdG8KLS8vIHByaW50IGEgY2hhciogYXMg
YSByYXcgcG9pbnRlciB3aGVuIGl0IGlzIGNvbXBhcmVkIGFnYWluc3QgYW5vdGhlcgotLy8gY2hh
ciosIGFuZCBwcmludCBpdCBhcyBhIEMgc3RyaW5nIHdoZW4gaXQgaXMgY29tcGFyZWQgYWdhaW5z
dCBhbgotLy8gc3RkOjpzdHJpbmcgb2JqZWN0LCBmb3IgZXhhbXBsZS4KLS8vCi0vLyBUaGUgZGVm
YXVsdCBpbXBsZW1lbnRhdGlvbiBpZ25vcmVzIHRoZSB0eXBlIG9mIHRoZSBvdGhlciBvcGVyYW5k
LgotLy8gU29tZSBzcGVjaWFsaXplZCB2ZXJzaW9ucyBhcmUgdXNlZCB0byBoYW5kbGUgZm9ybWF0
dGluZyB3aWRlIG9yCi0vLyBuYXJyb3cgQyBzdHJpbmdzLgotLy8KLS8vIElOVEVSTkFMIElNUExF
TUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KKy8vIFNlcGFyYXRlIHRo
ZSBlcnJvciBnZW5lcmF0aW5nIGNvZGUgZnJvbSB0aGUgY29kZSBwYXRoIHRvIHJlZHVjZSB0aGUg
c3RhY2sKKy8vIGZyYW1lIHNpemUgb2YgQ21wSGVscGVyRVEuIFRoaXMgaGVscHMgcmVkdWNlIHRo
ZSBvdmVyaGVhZCBvZiBzb21lIHNhbml0aXplcnMKKy8vIHdoZW4gY2FsbGluZyBFWFBFQ1RfKiBp
biBhIHRpZ2h0IGxvb3AuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotU3Ry
aW5nIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShjb25zdCBUMSYgdmFsdWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiAvKiBvdGhl
cl9vcGVyYW5kICovKSB7Ci0gIHJldHVybiBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZSh2YWx1ZSk7
CitBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRVFGYWlsdXJlKGNvbnN0IGNoYXIqIGxoc19leHBy
ZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBy
aHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VDEmIGxocywgY29uc3QgVDImIHJocykgeworICByZXR1cm4gRXFGYWlsdXJlKGxoc19leHByZXNz
aW9uLAorICAgICAgICAgICAgICAgICAgIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAg
ICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShsaHMsIHJocyksCisgICAgICAg
ICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHJocywgbGhzKSwK
KyAgICAgICAgICAgICAgICAgICBmYWxzZSk7CiB9CiAKIC8vIFRoZSBoZWxwZXIgZnVuY3Rpb24g
Zm9yIHtBU1NFUlR8RVhQRUNUfV9FUS4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDI+Ci1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRVEoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhw
cmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxf
ZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgZXhwZWN0
ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDImIGFjdHVhbCkgewotI2lm
ZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkgICAgICAgICAgLy8gU2F2ZXMgdGhl
IGN1cnJlbnQgd2FybmluZyBzdGF0ZS4KLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQzODkpICAv
LyBUZW1wb3JhcmlseSBkaXNhYmxlcyB3YXJuaW5nIG9uCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gc2lnbmVkL3Vuc2lnbmVkIG1pc21hdGNoLgotI2VuZGlmCi0KLSAgaWYgKGV4
cGVjdGVkID09IGFjdHVhbCkgeworQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRKGNvbnN0IGNo
YXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQx
JiBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDImIHJocykgeworICBp
ZiAobGhzID09IHJocykgewogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAgIH0KIAot
I2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmcocG9wKSAgICAgICAgICAvLyBSZXN0b3Jl
cyB0aGUgd2FybmluZyBzdGF0ZS4KLSNlbmRpZgotCi0gIHJldHVybiBFcUZhaWx1cmUoZXhwZWN0
ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBhY3R1YWxfZXhwcmVzc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoZXhwZWN0
ZWQsIGFjdHVhbCksCi0gICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1
cmVNZXNzYWdlKGFjdHVhbCwgZXhwZWN0ZWQpLAotICAgICAgICAgICAgICAgICAgIGZhbHNlKTsK
KyAgcmV0dXJuIENtcEhlbHBlckVRRmFpbHVyZShsaHNfZXhwcmVzc2lvbiwgcmhzX2V4cHJlc3Np
b24sIGxocywgcmhzKTsKIH0KIAogLy8gV2l0aCB0aGlzIG92ZXJsb2FkZWQgdmVyc2lvbiwgd2Ug
YWxsb3cgYW5vbnltb3VzIGVudW1zIHRvIGJlIHVzZWQKIC8vIGluIHtBU1NFUlR8RVhQRUNUfV9F
USB3aGVuIGNvbXBpbGVkIHdpdGggZ2NjIDQsIGFzIGFub255bW91cyBlbnVtcwogLy8gY2FuIGJl
IGltcGxpY2l0bHkgY2FzdCB0byBCaWdnZXN0SW50LgotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1
bHQgQ21wSGVscGVyRVEoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNz
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBl
eHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJ
bnQgYWN0dWFsKTsKK0dURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRKGNvbnN0
IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGxocywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgcmhzKTsKIAogLy8gVGhlIGhlbHBlciBjbGFzcyBm
b3Ige0FTU0VSVHxFWFBFQ1R9X0VRLiAgVGhlIHRlbXBsYXRlIGFyZ3VtZW50CiAvLyBsaHNfaXNf
bnVsbF9saXRlcmFsIGlzIHRydWUgaWZmIHRoZSBmaXJzdCBhcmd1bWVudCB0byBBU1NFUlRfRVEo
KQpAQCAtMTI5MiwxMiArMTQ1NywxMSBAQCBjbGFzcyBFcUhlbHBlciB7CiAgcHVibGljOgogICAv
LyBUaGlzIHRlbXBsYXRpemVkIHZlcnNpb24gaXMgZm9yIHRoZSBnZW5lcmFsIGNhc2UuCiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gIHN0YXRpYyBBc3NlcnRpb25SZXN1
bHQgQ29tcGFyZShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgZXhwZWN0ZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgYWN0dWFsKSB7Ci0gICAgcmV0dXJu
IENtcEhlbHBlckVRKGV4cGVjdGVkX2V4cHJlc3Npb24sIGFjdHVhbF9leHByZXNzaW9uLCBleHBl
Y3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsKTsKKyAgc3RhdGljIEFzc2VydGlv
blJlc3VsdCBDb21wYXJlKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgbGhzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVDImIHJocykgeworICAgIHJldHVybiBDbXBIZWxwZXJF
UShsaHNfZXhwcmVzc2lvbiwgcmhzX2V4cHJlc3Npb24sIGxocywgcmhzKTsKICAgfQogCiAgIC8v
IFdpdGggdGhpcyBvdmVybG9hZGVkIHZlcnNpb24sIHdlIGFsbG93IGFub255bW91cyBlbnVtcyB0
byBiZSB1c2VkCkBAIC0xMzA2LDE3ICsxNDcwLDE2IEBAIGNsYXNzIEVxSGVscGVyIHsKICAgLy8K
ICAgLy8gRXZlbiB0aG91Z2ggaXRzIGJvZHkgbG9va3MgdGhlIHNhbWUgYXMgdGhlIGFib3ZlIHZl
cnNpb24sIHdlCiAgIC8vIGNhbm5vdCBtZXJnZSB0aGUgdHdvLCBhcyBpdCB3aWxsIG1ha2UgYW5v
bnltb3VzIGVudW1zIHVuaGFwcHkuCi0gIHN0YXRpYyBBc3NlcnRpb25SZXN1bHQgQ29tcGFyZShj
b25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQmlnZ2VzdEludCBhY3R1YWwpIHsKLSAgICByZXR1cm4gQ21wSGVscGVy
RVEoZXhwZWN0ZWRfZXhwcmVzc2lvbiwgYWN0dWFsX2V4cHJlc3Npb24sIGV4cGVjdGVkLAotICAg
ICAgICAgICAgICAgICAgICAgICBhY3R1YWwpOworICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IENv
bXBhcmUoY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQmlnZ2VzdEludCByaHMpIHsKKyAgICByZXR1cm4gQ21wSGVscGVyRVEobGhzX2V4
cHJlc3Npb24sIHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7CiAgIH0KIH07CiAKIC8vIFRoaXMg
c3BlY2lhbGl6YXRpb24gaXMgdXNlZCB3aGVuIHRoZSBmaXJzdCBhcmd1bWVudCB0byBBU1NFUlRf
RVEoKQotLy8gaXMgYSBudWxsIHBvaW50ZXIgbGl0ZXJhbC4KKy8vIGlzIGEgbnVsbCBwb2ludGVy
IGxpdGVyYWwsIGxpa2UgTlVMTCwgZmFsc2UsIG9yIDAuCiB0ZW1wbGF0ZSA8PgogY2xhc3MgRXFI
ZWxwZXI8dHJ1ZT4gewogIHB1YmxpYzoKQEAgLTEzMjUsMjcgKzE0ODgsNTMgQEAgY2xhc3MgRXFI
ZWxwZXI8dHJ1ZT4gewogICAvLyBOT1QgYSBwb2ludGVyLCBlLmcuIEFTU0VSVF9FUSgwLCBBbklu
dEZ1bmN0aW9uKCkpIG9yCiAgIC8vIEVYUEVDVF9FUShmYWxzZSwgYV9ib29sKS4KICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBD
b21wYXJlKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiBleHBlY3RlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiBhY3R1YWwpIHsKLSAgICByZXR1cm4gQ21w
SGVscGVyRVEoZXhwZWN0ZWRfZXhwcmVzc2lvbiwgYWN0dWFsX2V4cHJlc3Npb24sIGV4cGVjdGVk
LAotICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWwpOworICBzdGF0aWMgQXNzZXJ0aW9uUmVz
dWx0IENvbXBhcmUoCisgICAgICBjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgIGNv
bnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgY29uc3QgVDEmIGxocywKKyAgICAgIGNv
bnN0IFQyJiByaHMsCisgICAgICAvLyBUaGUgZm9sbG93aW5nIGxpbmUgcHJldmVudHMgdGhpcyBv
dmVybG9hZCBmcm9tIGJlaW5nIGNvbnNpZGVyZWQgaWYgVDIKKyAgICAgIC8vIGlzIG5vdCBhIHBv
aW50ZXIgdHlwZS4gIFdlIG5lZWQgdGhpcyBiZWNhdXNlIEFTU0VSVF9FUShOVUxMLCBteV9wdHIp
CisgICAgICAvLyBleHBhbmRzIHRvIENvbXBhcmUoIiIsICIiLCBOVUxMLCBteV9wdHIpLCB3aGlj
aCByZXF1aXJlcyBhIGNvbnZlcnNpb24KKyAgICAgIC8vIHRvIG1hdGNoIHRoZSBTZWNyZXQqIGlu
IHRoZSBvdGhlciBvdmVybG9hZCwgd2hpY2ggd291bGQgb3RoZXJ3aXNlIG1ha2UKKyAgICAgIC8v
IHRoaXMgdGVtcGxhdGUgbWF0Y2ggYmV0dGVyLgorICAgICAgdHlwZW5hbWUgRW5hYmxlSWY8IWlz
X3BvaW50ZXI8VDI+Ojp2YWx1ZT46OnR5cGUqID0gMCkgeworICAgIHJldHVybiBDbXBIZWxwZXJF
UShsaHNfZXhwcmVzc2lvbiwgcmhzX2V4cHJlc3Npb24sIGxocywgcmhzKTsKICAgfQogCi0gIC8v
IFRoaXMgdmVyc2lvbiB3aWxsIGJlIHBpY2tlZCB3aGVuIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8K
LSAgLy8gQVNTRVJUX0VRKCkgaXMgYSBwb2ludGVyLCBlLmcuIEFTU0VSVF9FUShOVUxMLCBhX3Bv
aW50ZXIpLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICBzdGF0aWMg
QXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHBy
ZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIC8qIGV4
cGVjdGVkICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVDIqIGFjdHVhbCkg
ewotICAgIC8vIFdlIGFscmVhZHkga25vdyB0aGF0ICdleHBlY3RlZCcgaXMgYSBudWxsIHBvaW50
ZXIuCi0gICAgcmV0dXJuIENtcEhlbHBlckVRKGV4cGVjdGVkX2V4cHJlc3Npb24sIGFjdHVhbF9l
eHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxUMio+KE5VTEwp
LCBhY3R1YWwpOworICAvLyBUaGlzIHZlcnNpb24gd2lsbCBiZSBwaWNrZWQgd2hlbiB0aGUgc2Vj
b25kIGFyZ3VtZW50IHRvIEFTU0VSVF9FUSgpIGlzIGEKKyAgLy8gcG9pbnRlciwgZS5nLiBBU1NF
UlRfRVEoTlVMTCwgYV9wb2ludGVyKS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRp
YyBBc3NlcnRpb25SZXN1bHQgQ29tcGFyZSgKKyAgICAgIGNvbnN0IGNoYXIqIGxoc19leHByZXNz
aW9uLAorICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAvLyBXZSB1c2Vk
IHRvIGhhdmUgYSBzZWNvbmQgdGVtcGxhdGUgcGFyYW1ldGVyIGluc3RlYWQgb2YgU2VjcmV0Ki4g
IFRoYXQKKyAgICAgIC8vIHRlbXBsYXRlIHBhcmFtZXRlciB3b3VsZCBkZWR1Y2UgdG8gJ2xvbmcn
LCBtYWtpbmcgdGhpcyBhIGJldHRlciBtYXRjaAorICAgICAgLy8gdGhhbiB0aGUgZmlyc3Qgb3Zl
cmxvYWQgZXZlbiB3aXRob3V0IHRoZSBmaXJzdCBvdmVybG9hZCdzIEVuYWJsZUlmLgorICAgICAg
Ly8gVW5mb3J0dW5hdGVseSwgZ2NjIHdpdGggLVdjb252ZXJzaW9uLW51bGwgd2FybnMgd2hlbiAi
cGFzc2luZyBOVUxMIHRvCisgICAgICAvLyBub24tcG9pbnRlciBhcmd1bWVudCIgKGV2ZW4gYSBk
ZWR1Y2VkIGludGVncmFsIGFyZ3VtZW50KSwgc28gdGhlIG9sZAorICAgICAgLy8gaW1wbGVtZW50
YXRpb24gY2F1c2VkIHdhcm5pbmdzIGluIHVzZXIgY29kZS4KKyAgICAgIFNlY3JldCogLyogbGhz
IChOVUxMKSAqLywKKyAgICAgIFQqIHJocykgeworICAgIC8vIFdlIGFscmVhZHkga25vdyB0aGF0
ICdsaHMnIGlzIGEgbnVsbCBwb2ludGVyLgorICAgIHJldHVybiBDbXBIZWxwZXJFUShsaHNfZXhw
cmVzc2lvbiwgcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PFQqPihOVUxMKSwgcmhzKTsKICAgfQogfTsKIAorLy8gU2VwYXJhdGUgdGhlIGVycm9yIGdl
bmVyYXRpbmcgY29kZSBmcm9tIHRoZSBjb2RlIHBhdGggdG8gcmVkdWNlIHRoZSBzdGFjaworLy8g
ZnJhbWUgc2l6ZSBvZiBDbXBIZWxwZXJPUC4gVGhpcyBoZWxwcyByZWR1Y2UgdGhlIG92ZXJoZWFk
IG9mIHNvbWUgc2FuaXRpemVycworLy8gd2hlbiBjYWxsaW5nIEVYUEVDVF9PUCBpbiBhIHRpZ2h0
IGxvb3AuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorQXNzZXJ0aW9uUmVz
dWx0IENtcEhlbHBlck9wRmFpbHVyZShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhw
cjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiB2YWwxLCBj
b25zdCBUMiYgdmFsMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogb3ApIHsKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgICAgPDwgIkV4
cGVjdGVkOiAoIiA8PCBleHByMSA8PCAiKSAiIDw8IG9wIDw8ICIgKCIgPDwgZXhwcjIKKyAgICAg
ICAgIDw8ICIpLCBhY3R1YWw6ICIgPDwgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdl
KHZhbDEsIHZhbDIpCisgICAgICAgICA8PCAiIHZzICIgPDwgRm9ybWF0Rm9yQ29tcGFyaXNvbkZh
aWx1cmVNZXNzYWdlKHZhbDIsIHZhbDEpOworfQorCiAvLyBBIG1hY3JvIGZvciBpbXBsZW1lbnRp
bmcgdGhlIGhlbHBlciBmdW5jdGlvbnMgbmVlZGVkIHRvIGltcGxlbWVudAogLy8gQVNTRVJUXz8/
IGFuZCBFWFBFQ1RfPz8uICBJdCBpcyBoZXJlIGp1c3QgdG8gYXZvaWQgY29weS1hbmQtcGFzdGUK
IC8vIG9mIHNpbWlsYXIgY29kZS4KQEAgLTEzNTYsNiArMTU0NSw3IEBAIGNsYXNzIEVxSGVscGVy
PHRydWU+IHsKIC8vIHdpdGggZ2NjIDQuCiAvLwogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04g
LSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgorCiAjZGVmaW5lIEdURVNUX0lNUExfQ01Q
X0hFTFBFUl8ob3BfbmFtZSwgb3ApXAogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
Mj5cCiBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyIyNvcF9uYW1lKGNvbnN0IGNoYXIqIGV4cHIx
LCBjb25zdCBjaGFyKiBleHByMiwgXApAQCAtMTM2MywxMSArMTU1Myw3IEBAIEFzc2VydGlvblJl
c3VsdCBDbXBIZWxwZXIjI29wX25hbWUoY29uc3QgY2hhciogZXhwcjEsIGNvbnN0IGNoYXIqIGV4
cHIyLCBcCiAgIGlmICh2YWwxIG9wIHZhbDIpIHtcCiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nl
c3MoKTtcCiAgIH0gZWxzZSB7XAotICAgIE1lc3NhZ2UgbXNnO1wKLSAgICBtc2cgPDwgIkV4cGVj
dGVkOiAoIiA8PCBleHByMSA8PCAiKSAiICNvcCAiICgiIDw8IGV4cHIyXAotICAgICAgICA8PCAi
KSwgYWN0dWFsOiAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSh2YWwxLCB2
YWwyKVwKLSAgICAgICAgPDwgIiB2cyAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVz
c2FnZSh2YWwyLCB2YWwxKTtcCi0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTtcCisg
ICAgcmV0dXJuIENtcEhlbHBlck9wRmFpbHVyZShleHByMSwgZXhwcjIsIHZhbDEsIHZhbDIsICNv
cCk7XAogICB9XAogfVwKIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlciMjb3Bf
bmFtZShcCkBAIC0xMzgwLDI5ICsxNTY2LDI5IEBAIEdURVNUX0lNUExfQ01QX0hFTFBFUl8oTkUs
ICE9KTsKIC8vIEltcGxlbWVudHMgdGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBF
Q1R9X0xFCiBHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKExFLCA8PSk7CiAvLyBJbXBsZW1lbnRzIHRo
ZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9MVAotR1RFU1RfSU1QTF9DTVBf
SEVMUEVSXyhMVCwgPCApOworR1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhMVCwgPCk7CiAvLyBJbXBs
ZW1lbnRzIHRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9HRQogR1RFU1Rf
SU1QTF9DTVBfSEVMUEVSXyhHRSwgPj0pOwogLy8gSW1wbGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0
aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fR1QKLUdURVNUX0lNUExfQ01QX0hFTFBFUl8oR1QsID4g
KTsKK0dURVNUX0lNUExfQ01QX0hFTFBFUl8oR1QsID4pOwogCiAjdW5kZWYgR1RFU1RfSU1QTF9D
TVBfSEVMUEVSXwogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1f
U1RSRVEuCiAvLwogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEg
VVNFUiBQUk9HUkFNLgotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEo
Y29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBh
Y3R1YWwpOworR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3Qg
Y2hhciogczFfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHMyX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMyKTsKIAogLy8gVGhlIGhlbHBlciBm
dW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NUUkNBU0VFUS4KIC8vCiAvLyBJTlRFUk5BTCBJ
TVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCi1HVEVTVF9BUElf
IEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJDQVNFRVEoY29uc3QgY2hhciogZXhwZWN0ZWRf
ZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHBlY3RlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWwpOwor
R1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSQ0FTRUVRKGNvbnN0IGNoYXIq
IHMxX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogczJfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMik7CiAKIC8vIFRoZSBo
ZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9TVFJORS4KIC8vCkBAIC0xNDI0LDEw
ICsxNjEwLDEwIEBAIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VO
RShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAogLy8gSGVscGVyIGZ1bmN0aW9uIGZvciAqX1NU
UkVRIG9uIHdpZGUgc3RyaW5ncy4KIC8vCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERP
IE5PVCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCi1HVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBD
bXBIZWxwZXJTVFJFUShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJl
c3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3
Y2hhcl90KiBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHdjaGFyX3QqIGFjdHVhbCk7CitHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBD
bXBIZWxwZXJTVFJFUShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczJfZXhwcmVzc2lvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIHMx
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJf
dCogczIpOwogCiAvLyBIZWxwZXIgZnVuY3Rpb24gZm9yICpfU1RSTkUgb24gd2lkZSBzdHJpbmdz
LgogLy8KQEAgLTE0ODUsMjggKzE2NzEsMjggQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIC8vCiAv
LyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VSIFBST0dSQU0u
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmF3VHlwZT4KLUFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJG
bG9hdGluZ1BvaW50RVEoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJl
c3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhd1R5cGUg
ZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhd1R5
cGUgYWN0dWFsKSB7Ci0gIGNvbnN0IEZsb2F0aW5nUG9pbnQ8UmF3VHlwZT4gbGhzKGV4cGVjdGVk
KSwgcmhzKGFjdHVhbCk7CitBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRmxvYXRpbmdQb2ludEVR
KGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmF3VHlwZSBsaHNfdmFsdWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhd1R5cGUgcmhzX3ZhbHVlKSB7CisgIGNv
bnN0IEZsb2F0aW5nUG9pbnQ8UmF3VHlwZT4gbGhzKGxoc192YWx1ZSksIHJocyhyaHNfdmFsdWUp
OwogCiAgIGlmIChsaHMuQWxtb3N0RXF1YWxzKHJocykpIHsKICAgICByZXR1cm4gQXNzZXJ0aW9u
U3VjY2VzcygpOwogICB9CiAKLSAgU3RyU3RyZWFtIGV4cGVjdGVkX3NzOwotICBleHBlY3RlZF9z
cyA8PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+OjpkaWdp
dHMxMCArIDIpCi0gICAgICAgICAgICAgIDw8IGV4cGVjdGVkOworICA6OnN0ZDo6c3RyaW5nc3Ry
ZWFtIGxoc19zczsKKyAgbGhzX3NzIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19s
aW1pdHM8UmF3VHlwZT46OmRpZ2l0czEwICsgMikKKyAgICAgICAgIDw8IGxoc192YWx1ZTsKIAot
ICBTdHJTdHJlYW0gYWN0dWFsX3NzOwotICBhY3R1YWxfc3MgPDwgc3RkOjpzZXRwcmVjaXNpb24o
c3RkOjpudW1lcmljX2xpbWl0czxSYXdUeXBlPjo6ZGlnaXRzMTAgKyAyKQotICAgICAgICAgICAg
PDwgYWN0dWFsOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHJoc19zczsKKyAgcmhzX3NzIDw8IHN0
ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8UmF3VHlwZT46OmRpZ2l0czEwICsg
MikKKyAgICAgICAgIDw8IHJoc192YWx1ZTsKIAotICByZXR1cm4gRXFGYWlsdXJlKGV4cGVjdGVk
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgYWN0dWFsX2V4cHJlc3Npb24sCi0gICAg
ICAgICAgICAgICAgICAgU3RyU3RyZWFtVG9TdHJpbmcoJmV4cGVjdGVkX3NzKSwKLSAgICAgICAg
ICAgICAgICAgICBTdHJTdHJlYW1Ub1N0cmluZygmYWN0dWFsX3NzKSwKKyAgcmV0dXJuIEVxRmFp
bHVyZShsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICByaHNfZXhwcmVzc2lvbiwK
KyAgICAgICAgICAgICAgICAgICBTdHJpbmdTdHJlYW1Ub1N0cmluZygmbGhzX3NzKSwKKyAgICAg
ICAgICAgICAgICAgICBTdHJpbmdTdHJlYW1Ub1N0cmluZygmcmhzX3NzKSwKICAgICAgICAgICAg
ICAgICAgICBmYWxzZSk7CiB9CiAKQEAgLTE1NDgsOSArMTczNCw5IEBAIGNsYXNzIEdURVNUX0FQ
SV8gQXNzZXJ0SGVscGVyIHsKICAgICAgICAgOiB0eXBlKHQpLCBmaWxlKHNyY2ZpbGUpLCBsaW5l
KGxpbmVfbnVtKSwgbWVzc2FnZShtc2cpIHsgfQogCiAgICAgVGVzdFBhcnRSZXN1bHQ6OlR5cGUg
Y29uc3QgdHlwZTsKLSAgICBjb25zdCBjaGFyKiAgICAgICAgY29uc3QgZmlsZTsKLSAgICBpbnQg
ICAgICAgICAgICAgICAgY29uc3QgbGluZTsKLSAgICBTdHJpbmcgICAgICAgICAgICAgY29uc3Qg
bWVzc2FnZTsKKyAgICBjb25zdCBjaGFyKiBjb25zdCBmaWxlOworICAgIGludCBjb25zdCBsaW5l
OworICAgIHN0ZDo6c3RyaW5nIGNvbnN0IG1lc3NhZ2U7CiAKICAgIHByaXZhdGU6CiAgICAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhBc3NlcnRIZWxwZXJEYXRhKTsKQEAgLTE1NjMs
MTAgKzE3NDksMTMgQEAgY2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRIZWxwZXIgewogCiB9ICAvLyBu
YW1lc3BhY2UgaW50ZXJuYWwKIAotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0vLyBUaGUgYWJz
dHJhY3QgYmFzZSBjbGFzcyB0aGF0IGFsbCB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGluaGVy
aXQgZnJvbS4KKy8vIFRoZSBwdXJlIGludGVyZmFjZSBjbGFzcyB0aGF0IGFsbCB2YWx1ZS1wYXJh
bWV0ZXJpemVkIHRlc3RzIGluaGVyaXQgZnJvbS4KKy8vIEEgdmFsdWUtcGFyYW1ldGVyaXplZCBj
bGFzcyBtdXN0IGluaGVyaXQgZnJvbSBib3RoIDo6dGVzdGluZzo6VGVzdCBhbmQKKy8vIDo6dGVz
dGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlLiBJbiBtb3N0IGNhc2VzIHRoYXQganVzdCBtZWFucyBp
bmhlcml0aW5nCisvLyBmcm9tIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbSwgYnV0IG1vcmUgY29t
cGxpY2F0ZWQgdGVzdCBoaWVyYXJjaGllcworLy8gbWF5IG5lZWQgdG8gaW5oZXJpdCBmcm9tIFRl
c3QgYW5kIFdpdGhQYXJhbUludGVyZmFjZSBhdCBkaWZmZXJlbnQgbGV2ZWxzLgogLy8KLS8vIFRo
aXMgY2xhc3MgYWRkcyBzdXBwb3J0IGZvciBhY2Nlc3NpbmcgdGhlIHRlc3QgcGFyYW1ldGVyIHZh
bHVlIHZpYQorLy8gVGhpcyBpbnRlcmZhY2UgaGFzIHN1cHBvcnQgZm9yIGFjY2Vzc2luZyB0aGUg
dGVzdCBwYXJhbWV0ZXIgdmFsdWUgdmlhCiAvLyB0aGUgR2V0UGFyYW0oKSBtZXRob2QuCiAvLwog
Ly8gVXNlIGl0IHdpdGggb25lIG9mIHRoZSBwYXJhbWV0ZXIgZ2VuZXJhdG9yIGRlZmluaW5nIGZ1
bmN0aW9ucywgbGlrZSBSYW5nZSgpLApAQCAtMTU5NSwxMyArMTc4NCwyMiBAQCBjbGFzcyBHVEVT
VF9BUElfIEFzc2VydEhlbHBlciB7CiAvLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChPbmVUb1Rl
blJhbmdlLCBGb29UZXN0LCA6OnRlc3Rpbmc6OlJhbmdlKDEsIDEwKSk7CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotY2xhc3MgVGVzdFdpdGhQYXJhbSA6IHB1YmxpYyBUZXN0IHsKK2NsYXNzIFdp
dGhQYXJhbUludGVyZmFjZSB7CiAgcHVibGljOgogICB0eXBlZGVmIFQgUGFyYW1UeXBlOworICB2
aXJ0dWFsIH5XaXRoUGFyYW1JbnRlcmZhY2UoKSB7fQogCiAgIC8vIFRoZSBjdXJyZW50IHBhcmFt
ZXRlciB2YWx1ZS4gSXMgYWxzbyBhdmFpbGFibGUgaW4gdGhlIHRlc3QgZml4dHVyZSdzCi0gIC8v
IGNvbnN0cnVjdG9yLgotICBjb25zdCBQYXJhbVR5cGUmIEdldFBhcmFtKCkgY29uc3QgeyByZXR1
cm4gKnBhcmFtZXRlcl87IH0KKyAgLy8gY29uc3RydWN0b3IuIFRoaXMgbWVtYmVyIGZ1bmN0aW9u
IGlzIG5vbi1zdGF0aWMsIGV2ZW4gdGhvdWdoIGl0IG9ubHkKKyAgLy8gcmVmZXJlbmNlcyBzdGF0
aWMgZGF0YSwgdG8gcmVkdWNlIHRoZSBvcHBvcnR1bml0eSBmb3IgaW5jb3JyZWN0IHVzZXMKKyAg
Ly8gbGlrZSB3cml0aW5nICdXaXRoUGFyYW1JbnRlcmZhY2U8Ym9vbD46OkdldFBhcmFtKCknIGZv
ciBhIHRlc3QgdGhhdAorICAvLyB1c2VzIGEgZml4dHVyZSB3aG9zZSBwYXJhbWV0ZXIgdHlwZSBp
cyBpbnQuCisgIGNvbnN0IFBhcmFtVHlwZSYgR2V0UGFyYW0oKSBjb25zdCB7CisgICAgR1RFU1Rf
Q0hFQ0tfKHBhcmFtZXRlcl8gIT0gTlVMTCkKKyAgICAgICAgPDwgIkdldFBhcmFtKCkgY2FuIG9u
bHkgYmUgY2FsbGVkIGluc2lkZSBhIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdCAiCisgICAgICAg
IDw8ICItLSBkaWQgeW91IGludGVuZCB0byB3cml0ZSBURVNUX1AgaW5zdGVhZCBvZiBURVNUX0Y/
IjsKKyAgICByZXR1cm4gKnBhcmFtZXRlcl87CisgIH0KIAogIHByaXZhdGU6CiAgIC8vIFNldHMg
cGFyYW1ldGVyIHZhbHVlLiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBtYWtpbmcgc3Vy
ZSB0aGUgdmFsdWUKQEAgLTE2MTMsMTQgKzE4MTEsMTkgQEAgY2xhc3MgVGVzdFdpdGhQYXJhbSA6
IHB1YmxpYyBUZXN0IHsKICAgLy8gU3RhdGljIHZhbHVlIHVzZWQgZm9yIGFjY2Vzc2luZyBwYXJh
bWV0ZXIgZHVyaW5nIGEgdGVzdCBsaWZldGltZS4KICAgc3RhdGljIGNvbnN0IFBhcmFtVHlwZSog
cGFyYW1ldGVyXzsKIAotICAvLyBUZXN0Q2xhc3MgbXVzdCBiZSBhIHN1YmNsYXNzIG9mIFRlc3RX
aXRoUGFyYW08VD4uCisgIC8vIFRlc3RDbGFzcyBtdXN0IGJlIGEgc3ViY2xhc3Mgb2YgV2l0aFBh
cmFtSW50ZXJmYWNlPFQ+IGFuZCBUZXN0LgogICB0ZW1wbGF0ZSA8Y2xhc3MgVGVzdENsYXNzPiBm
cmllbmQgY2xhc3MgaW50ZXJuYWw6OlBhcmFtZXRlcml6ZWRUZXN0RmFjdG9yeTsKIH07CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotY29uc3QgVCogVGVzdFdpdGhQYXJhbTxUPjo6cGFyYW1ldGVy
XyA9IE5VTEw7Citjb25zdCBUKiBXaXRoUGFyYW1JbnRlcmZhY2U8VD46OnBhcmFtZXRlcl8gPSBO
VUxMOworCisvLyBNb3N0IHZhbHVlLXBhcmFtZXRlcml6ZWQgY2xhc3NlcyBjYW4gaWdub3JlIHRo
ZSBleGlzdGVuY2Ugb2YKKy8vIFdpdGhQYXJhbUludGVyZmFjZSwgYW5kIGNhbiBqdXN0IGluaGVy
aXQgZnJvbSA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW0uCiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X1BBUkFNX1RFU1QKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVGVzdFdpdGhQYXJhbSA6
IHB1YmxpYyBUZXN0LCBwdWJsaWMgV2l0aFBhcmFtSW50ZXJmYWNlPFQ+IHsKK307CiAKIC8vIE1h
Y3JvcyBmb3IgaW5kaWNhdGluZyBzdWNjZXNzL2ZhaWx1cmUgaW4gdGVzdCBjb2RlLgogCkBAIC0x
NjQwLDIzICsxODQzLDIzIEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8g
PSBOVUxMOwogLy8gdXN1YWxseSB3YW50IHRoZSBmYWlsLWZhc3QgYmVoYXZpb3Igb2YgRkFJTCBh
bmQgQVNTRVJUXyosIGJ1dCB0aG9zZQogLy8gd3JpdGluZyBkYXRhLWRyaXZlbiB0ZXN0cyBvZnRl
biBmaW5kIHRoZW1zZWx2ZXMgdXNpbmcgQUREX0ZBSUxVUkUKIC8vIGFuZCBFWFBFQ1RfKiBtb3Jl
LgotLy8KLS8vIEV4YW1wbGVzOgotLy8KLS8vICAgRVhQRUNUX1RSVUUoc2VydmVyLlN0YXR1c0lz
T0soKSk7Ci0vLyAgIEFTU0VSVF9GQUxTRShzZXJ2ZXIuSGFzUGVuZGluZ1JlcXVlc3QocG9ydCkp
Ci0vLyAgICAgICA8PCAiVGhlcmUgYXJlIHN0aWxsIHBlbmRpbmcgcmVxdWVzdHMgIiA8PCAib24g
cG9ydCAiIDw8IHBvcnQ7CiAKIC8vIEdlbmVyYXRlcyBhIG5vbmZhdGFsIGZhaWx1cmUgd2l0aCBh
IGdlbmVyaWMgbWVzc2FnZS4KICNkZWZpbmUgQUREX0ZBSUxVUkUoKSBHVEVTVF9OT05GQVRBTF9G
QUlMVVJFXygiRmFpbGVkIikKIAorLy8gR2VuZXJhdGVzIGEgbm9uZmF0YWwgZmFpbHVyZSBhdCB0
aGUgZ2l2ZW4gc291cmNlIGZpbGUgbG9jYXRpb24gd2l0aAorLy8gYSBnZW5lcmljIG1lc3NhZ2Uu
CisjZGVmaW5lIEFERF9GQUlMVVJFX0FUKGZpbGUsIGxpbmUpIFwKKyAgR1RFU1RfTUVTU0FHRV9B
VF8oZmlsZSwgbGluZSwgIkZhaWxlZCIsIFwKKyAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5n
OjpUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSkKKwogLy8gR2VuZXJhdGVzIGEgZmF0
YWwgZmFpbHVyZSB3aXRoIGEgZ2VuZXJpYyBtZXNzYWdlLgogI2RlZmluZSBHVEVTVF9GQUlMKCkg
R1RFU1RfRkFUQUxfRkFJTFVSRV8oIkZhaWxlZCIpCiAKIC8vIERlZmluZSB0aGlzIG1hY3JvIHRv
IDEgdG8gb21pdCB0aGUgZGVmaW5pdGlvbiBvZiBGQUlMKCksIHdoaWNoIGlzIGEKIC8vIGdlbmVy
aWMgbmFtZSBhbmQgY2xhc2hlcyB3aXRoIHNvbWUgb3RoZXIgbGlicmFyaWVzLgogI2lmICFHVEVT
VF9ET05UX0RFRklORV9GQUlMCi0jZGVmaW5lIEZBSUwoKSBHVEVTVF9GQUlMKCkKKyMgZGVmaW5l
IEZBSUwoKSBHVEVTVF9GQUlMKCkKICNlbmRpZgogCiAvLyBHZW5lcmF0ZXMgYSBzdWNjZXNzIHdp
dGggYSBnZW5lcmljIG1lc3NhZ2UuCkBAIC0xNjY1LDcgKzE4NjgsNyBAQCBjb25zdCBUKiBUZXN0
V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIC8vIERlZmluZSB0aGlzIG1hY3JvIHRv
IDEgdG8gb21pdCB0aGUgZGVmaW5pdGlvbiBvZiBTVUNDRUVEKCksIHdoaWNoCiAvLyBpcyBhIGdl
bmVyaWMgbmFtZSBhbmQgY2xhc2hlcyB3aXRoIHNvbWUgb3RoZXIgbGlicmFyaWVzLgogI2lmICFH
VEVTVF9ET05UX0RFRklORV9TVUNDRUVECi0jZGVmaW5lIFNVQ0NFRUQoKSBHVEVTVF9TVUNDRUVE
KCkKKyMgZGVmaW5lIFNVQ0NFRUQoKSBHVEVTVF9TVUNDRUVEKCkKICNlbmRpZgogCiAvLyBNYWNy
b3MgZm9yIHRlc3RpbmcgZXhjZXB0aW9ucy4KQEAgLTE3MDYsMTggKzE5MDksMTQgQEAgY29uc3Qg
VCogVGVzdFdpdGhQYXJhbTxUPjo6cGFyYW1ldGVyXyA9IE5VTEw7CiAgIEdURVNUX1RFU1RfQk9P
TEVBTl8oIShjb25kaXRpb24pLCAjY29uZGl0aW9uLCB0cnVlLCBmYWxzZSwgXAogICAgICAgICAg
ICAgICAgICAgICAgIEdURVNUX0ZBVEFMX0ZBSUxVUkVfKQogCi0vLyBJbmNsdWRlcyB0aGUgYXV0
by1nZW5lcmF0ZWQgaGVhZGVyIHRoYXQgaW1wbGVtZW50cyBhIGZhbWlseSBvZgotLy8gZ2VuZXJp
YyBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3Jvcy4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdF9wcmVk
X2ltcGwuaD4KLQogLy8gTWFjcm9zIGZvciB0ZXN0aW5nIGVxdWFsaXRpZXMgYW5kIGluZXF1YWxp
dGllcy4KIC8vCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9FUShleHBlY3RlZCwgYWN0dWFsKTog
VGVzdHMgdGhhdCBleHBlY3RlZCA9PSBhY3R1YWwKLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X05F
KHYxLCB2Mik6ICAgICAgICAgICBUZXN0cyB0aGF0IHYxICE9IHYyCi0vLyAgICAqIHtBU1NFUlR8
RVhQRUNUfV9MVCh2MSwgdjIpOiAgICAgICAgICAgVGVzdHMgdGhhdCB2MSA8IHYyCi0vLyAgICAq
IHtBU1NFUlR8RVhQRUNUfV9MRSh2MSwgdjIpOiAgICAgICAgICAgVGVzdHMgdGhhdCB2MSA8PSB2
MgotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fR1QodjEsIHYyKTogICAgICAgICAgIFRlc3RzIHRo
YXQgdjEgPiB2MgotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fR0UodjEsIHYyKTogICAgICAgICAg
IFRlc3RzIHRoYXQgdjEgPj0gdjIKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0VRKHYxLCB2Mik6
IFRlc3RzIHRoYXQgdjEgPT0gdjIKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X05FKHYxLCB2Mik6
IFRlc3RzIHRoYXQgdjEgIT0gdjIKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0xUKHYxLCB2Mik6
IFRlc3RzIHRoYXQgdjEgPCB2MgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTEUodjEsIHYyKTog
VGVzdHMgdGhhdCB2MSA8PSB2MgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fR1QodjEsIHYyKTog
VGVzdHMgdGhhdCB2MSA+IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9HRSh2MSwgdjIpOiBU
ZXN0cyB0aGF0IHYxID49IHYyCiAvLwogLy8gV2hlbiB0aGV5IGFyZSBub3QsIEdvb2dsZSBUZXN0
IHByaW50cyBib3RoIHRoZSB0ZXN0ZWQgZXhwcmVzc2lvbnMgYW5kCiAvLyB0aGVpciBhY3R1YWwg
dmFsdWVzLiAgVGhlIHZhbHVlcyBtdXN0IGJlIGNvbXBhdGlibGUgYnVpbHQtaW4gdHlwZXMsCkBA
IC0xNzM5LDggKzE5MzgsOCBAQCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJf
ID0gTlVMTDsKIC8vICAgYXJlIHJlbGF0ZWQsIG5vdCBob3cgdGhlaXIgY29udGVudCBpcyByZWxh
dGVkLiAgVG8gY29tcGFyZSB0d28gQwogLy8gICBzdHJpbmdzIGJ5IGNvbnRlbnQsIHVzZSB7QVNT
RVJUfEVYUEVDVH1fU1RSKigpLgogLy8KLS8vICAgMy4ge0FTU0VSVHxFWFBFQ1R9X0VRKGV4cGVj
dGVkLCBhY3R1YWwpIGlzIHByZWZlcnJlZCB0bwotLy8gICB7QVNTRVJUfEVYUEVDVH1fVFJVRShl
eHBlY3RlZCA9PSBhY3R1YWwpLCBhcyB0aGUgZm9ybWVyIHRlbGxzIHlvdQorLy8gICAzLiB7QVNT
RVJUfEVYUEVDVH1fRVEodjEsIHYyKSBpcyBwcmVmZXJyZWQgdG8KKy8vICAge0FTU0VSVHxFWFBF
Q1R9X1RSVUUodjEgPT0gdjIpLCBhcyB0aGUgZm9ybWVyIHRlbGxzIHlvdQogLy8gICB3aGF0IHRo
ZSBhY3R1YWwgdmFsdWUgaXMgd2hlbiBpdCBmYWlscywgYW5kIHNpbWlsYXJseSBmb3IgdGhlCiAv
LyAgIG90aGVyIGNvbXBhcmlzb25zLgogLy8KQEAgLTE3NTEsMTcgKzE5NTAsMTcgQEAgY29uc3Qg
VCogVGVzdFdpdGhQYXJhbTxUPjo6cGFyYW1ldGVyXyA9IE5VTEw7CiAvLwogLy8gRXhhbXBsZXM6
CiAvLwotLy8gICBFWFBFQ1RfTkUoNSwgRm9vKCkpOwotLy8gICBFWFBFQ1RfRVEoTlVMTCwgYV9w
b2ludGVyKTsKKy8vICAgRVhQRUNUX05FKEZvbygpLCA1KTsKKy8vICAgRVhQRUNUX0VRKGFfcG9p
bnRlciwgTlVMTCk7CiAvLyAgIEFTU0VSVF9MVChpLCBhcnJheV9zaXplKTsKIC8vICAgQVNTRVJU
X0dUKHJlY29yZHMuc2l6ZSgpLCAwKSA8PCAiVGhlcmUgaXMgbm8gcmVjb3JkIGxlZnQuIjsKIAot
I2RlZmluZSBFWFBFQ1RfRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAorI2RlZmluZSBFWFBFQ1RfRVEo
dmFsMSwgdmFsMikgXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6
OiBcCi0gICAgICAgICAgICAgICAgICAgICAgRXFIZWxwZXI8R1RFU1RfSVNfTlVMTF9MSVRFUkFM
XyhleHBlY3RlZCk+OjpDb21wYXJlLCBcCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQs
IGFjdHVhbCkKLSNkZWZpbmUgRVhQRUNUX05FKGV4cGVjdGVkLCBhY3R1YWwpIFwKLSAgRVhQRUNU
X1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJORSwgZXhwZWN0ZWQs
IGFjdHVhbCkKKyAgICAgICAgICAgICAgICAgICAgICBFcUhlbHBlcjxHVEVTVF9JU19OVUxMX0xJ
VEVSQUxfKHZhbDEpPjo6Q29tcGFyZSwgXAorICAgICAgICAgICAgICAgICAgICAgIHZhbDEsIHZh
bDIpCisjZGVmaW5lIEVYUEVDVF9ORSh2YWwxLCB2YWwyKSBcCisgIEVYUEVDVF9QUkVEX0ZPUk1B
VDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyTkUsIHZhbDEsIHZhbDIpCiAjZGVmaW5l
IEVYUEVDVF9MRSh2YWwxLCB2YWwyKSBcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5n
OjppbnRlcm5hbDo6Q21wSGVscGVyTEUsIHZhbDEsIHZhbDIpCiAjZGVmaW5lIEVYUEVDVF9MVCh2
YWwxLCB2YWwyKSBcCkBAIC0xNzcxLDIyICsxOTcwLDQ5IEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFy
YW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogI2RlZmluZSBFWFBFQ1RfR1QodmFsMSwgdmFsMikg
XAogICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckdU
LCB2YWwxLCB2YWwyKQogCi0jZGVmaW5lIEFTU0VSVF9FUShleHBlY3RlZCwgYWN0dWFsKSBcCisj
ZGVmaW5lIEdURVNUX0FTU0VSVF9FUSh2YWwxLCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1B
VDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6IFwKLSAgICAgICAgICAgICAgICAgICAgICBFcUhlbHBl
cjxHVEVTVF9JU19OVUxMX0xJVEVSQUxfKGV4cGVjdGVkKT46OkNvbXBhcmUsIFwKLSAgICAgICAg
ICAgICAgICAgICAgICBleHBlY3RlZCwgYWN0dWFsKQotI2RlZmluZSBBU1NFUlRfTkUodmFsMSwg
dmFsMikgXAorICAgICAgICAgICAgICAgICAgICAgIEVxSGVscGVyPEdURVNUX0lTX05VTExfTElU
RVJBTF8odmFsMSk+OjpDb21wYXJlLCBcCisgICAgICAgICAgICAgICAgICAgICAgdmFsMSwgdmFs
MikKKyNkZWZpbmUgR1RFU1RfQVNTRVJUX05FKHZhbDEsIHZhbDIpIFwKICAgQVNTRVJUX1BSRURf
Rk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJORSwgdmFsMSwgdmFsMikKLSNk
ZWZpbmUgQVNTRVJUX0xFKHZhbDEsIHZhbDIpIFwKKyNkZWZpbmUgR1RFU1RfQVNTRVJUX0xFKHZh
bDEsIHZhbDIpIFwKICAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpD
bXBIZWxwZXJMRSwgdmFsMSwgdmFsMikKLSNkZWZpbmUgQVNTRVJUX0xUKHZhbDEsIHZhbDIpIFwK
KyNkZWZpbmUgR1RFU1RfQVNTRVJUX0xUKHZhbDEsIHZhbDIpIFwKICAgQVNTRVJUX1BSRURfRk9S
TUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJMVCwgdmFsMSwgdmFsMikKLSNkZWZp
bmUgQVNTRVJUX0dFKHZhbDEsIHZhbDIpIFwKKyNkZWZpbmUgR1RFU1RfQVNTRVJUX0dFKHZhbDEs
IHZhbDIpIFwKICAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBI
ZWxwZXJHRSwgdmFsMSwgdmFsMikKLSNkZWZpbmUgQVNTRVJUX0dUKHZhbDEsIHZhbDIpIFwKKyNk
ZWZpbmUgR1RFU1RfQVNTRVJUX0dUKHZhbDEsIHZhbDIpIFwKICAgQVNTRVJUX1BSRURfRk9STUFU
Mig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJHVCwgdmFsMSwgdmFsMikKIAotLy8gQyBT
dHJpbmcgQ29tcGFyaXNvbnMuICBBbGwgdGVzdHMgdHJlYXQgTlVMTCBhbmQgYW55IG5vbi1OVUxM
IHN0cmluZworLy8gRGVmaW5lIG1hY3JvIEdURVNUX0RPTlRfREVGSU5FX0FTU0VSVF9YWSB0byAx
IHRvIG9taXQgdGhlIGRlZmluaXRpb24gb2YKKy8vIEFTU0VSVF9YWSgpLCB3aGljaCBjbGFzaGVz
IHdpdGggc29tZSB1c2Vycycgb3duIGNvZGUuCisKKyNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfQVNT
RVJUX0VRCisjIGRlZmluZSBBU1NFUlRfRVEodmFsMSwgdmFsMikgR1RFU1RfQVNTRVJUX0VRKHZh
bDEsIHZhbDIpCisjZW5kaWYKKworI2lmICFHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfTkUKKyMg
ZGVmaW5lIEFTU0VSVF9ORSh2YWwxLCB2YWwyKSBHVEVTVF9BU1NFUlRfTkUodmFsMSwgdmFsMikK
KyNlbmRpZgorCisjaWYgIUdURVNUX0RPTlRfREVGSU5FX0FTU0VSVF9MRQorIyBkZWZpbmUgQVNT
RVJUX0xFKHZhbDEsIHZhbDIpIEdURVNUX0FTU0VSVF9MRSh2YWwxLCB2YWwyKQorI2VuZGlmCisK
KyNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX0xUCisjIGRlZmluZSBBU1NFUlRfTFQodmFs
MSwgdmFsMikgR1RFU1RfQVNTRVJUX0xUKHZhbDEsIHZhbDIpCisjZW5kaWYKKworI2lmICFHVEVT
VF9ET05UX0RFRklORV9BU1NFUlRfR0UKKyMgZGVmaW5lIEFTU0VSVF9HRSh2YWwxLCB2YWwyKSBH
VEVTVF9BU1NFUlRfR0UodmFsMSwgdmFsMikKKyNlbmRpZgorCisjaWYgIUdURVNUX0RPTlRfREVG
SU5FX0FTU0VSVF9HVAorIyBkZWZpbmUgQVNTRVJUX0dUKHZhbDEsIHZhbDIpIEdURVNUX0FTU0VS
VF9HVCh2YWwxLCB2YWwyKQorI2VuZGlmCisKKy8vIEMtc3RyaW5nIENvbXBhcmlzb25zLiAgQWxs
IHRlc3RzIHRyZWF0IE5VTEwgYW5kIGFueSBub24tTlVMTCBzdHJpbmcKIC8vIGFzIGRpZmZlcmVu
dC4gIFR3byBOVUxMcyBhcmUgZXF1YWwuCiAvLwogLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fU1RS
RVEoczEsIHMyKTogICAgIFRlc3RzIHRoYXQgczEgPT0gczIKQEAgLTE4MDIsMjkgKzIwMjgsMjkg
QEAgY29uc3QgVCogVGVzdFdpdGhQYXJhbTxUPjo6cGFyYW1ldGVyXyA9IE5VTEw7CiAvLwogLy8g
VGhlc2UgbWFjcm9zIGV2YWx1YXRlIHRoZWlyIGFyZ3VtZW50cyBleGFjdGx5IG9uY2UuCiAKLSNk
ZWZpbmUgRVhQRUNUX1NUUkVRKGV4cGVjdGVkLCBhY3R1YWwpIFwKLSAgRVhQRUNUX1BSRURfRk9S
TUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJFUSwgZXhwZWN0ZWQsIGFjdHVh
bCkKKyNkZWZpbmUgRVhQRUNUX1NUUkVRKHMxLCBzMikgXAorICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkVRLCBzMSwgczIpCiAjZGVmaW5lIEVY
UEVDVF9TVFJORShzMSwgczIpIFwKICAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6Omlu
dGVybmFsOjpDbXBIZWxwZXJTVFJORSwgczEsIHMyKQotI2RlZmluZSBFWFBFQ1RfU1RSQ0FTRUVR
KGV4cGVjdGVkLCBhY3R1YWwpIFwKLSAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6Omlu
dGVybmFsOjpDbXBIZWxwZXJTVFJDQVNFRVEsIGV4cGVjdGVkLCBhY3R1YWwpCisjZGVmaW5lIEVY
UEVDVF9TVFJDQVNFRVEoczEsIHMyKSBcCisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5n
OjppbnRlcm5hbDo6Q21wSGVscGVyU1RSQ0FTRUVRLCBzMSwgczIpCiAjZGVmaW5lIEVYUEVDVF9T
VFJDQVNFTkUoczEsIHMyKVwKICAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVy
bmFsOjpDbXBIZWxwZXJTVFJDQVNFTkUsIHMxLCBzMikKIAotI2RlZmluZSBBU1NFUlRfU1RSRVEo
ZXhwZWN0ZWQsIGFjdHVhbCkgXAotICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkNtcEhlbHBlclNUUkVRLCBleHBlY3RlZCwgYWN0dWFsKQorI2RlZmluZSBBU1NFUlRf
U1RSRVEoczEsIHMyKSBcCisgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q21wSGVscGVyU1RSRVEsIHMxLCBzMikKICNkZWZpbmUgQVNTRVJUX1NUUk5FKHMxLCBzMikg
XAogICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNU
Uk5FLCBzMSwgczIpCi0jZGVmaW5lIEFTU0VSVF9TVFJDQVNFRVEoZXhwZWN0ZWQsIGFjdHVhbCkg
XAotICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNU
UkNBU0VFUSwgZXhwZWN0ZWQsIGFjdHVhbCkKKyNkZWZpbmUgQVNTRVJUX1NUUkNBU0VFUShzMSwg
czIpIFwKKyAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxw
ZXJTVFJDQVNFRVEsIHMxLCBzMikKICNkZWZpbmUgQVNTRVJUX1NUUkNBU0VORShzMSwgczIpXAog
ICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkNB
U0VORSwgczEsIHMyKQogCiAvLyBNYWNyb3MgZm9yIGNvbXBhcmluZyBmbG9hdGluZy1wb2ludCBu
dW1iZXJzLgogLy8KLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0ZMT0FUX0VRKGV4cGVjdGVkLCBh
Y3R1YWwpOgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fRkxPQVRfRVEodmFsMSwgdmFsMik6CiAv
LyAgICAgICAgIFRlc3RzIHRoYXQgdHdvIGZsb2F0IHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsLgot
Ly8gICAgKiB7QVNTRVJUfEVYUEVDVH1fRE9VQkxFX0VRKGV4cGVjdGVkLCBhY3R1YWwpOgorLy8g
ICAgKiB7QVNTRVJUfEVYUEVDVH1fRE9VQkxFX0VRKHZhbDEsIHZhbDIpOgogLy8gICAgICAgICBU
ZXN0cyB0aGF0IHR3byBkb3VibGUgdmFsdWVzIGFyZSBhbG1vc3QgZXF1YWwuCiAvLyAgICAqIHtB
U1NFUlR8RVhQRUNUfV9ORUFSKHYxLCB2MiwgYWJzX2Vycm9yKToKIC8vICAgICAgICAgVGVzdHMg
dGhhdCB2MSBhbmQgdjIgYXJlIHdpdGhpbiB0aGUgZ2l2ZW4gZGlzdGFuY2UgdG8gZWFjaCBvdGhl
ci4KQEAgLTE4MzQsMjEgKzIwNjAsMjEgQEAgY29uc3QgVCogVGVzdFdpdGhQYXJhbTxUPjo6cGFy
YW1ldGVyXyA9IE5VTEw7CiAvLyBGbG9hdGluZ1BvaW50IHRlbXBsYXRlIGNsYXNzIGluIGd0ZXN0
LWludGVybmFsLmggaWYgeW91IGFyZQogLy8gaW50ZXJlc3RlZCBpbiB0aGUgaW1wbGVtZW50YXRp
b24gZGV0YWlscy4KIAotI2RlZmluZSBFWFBFQ1RfRkxPQVRfRVEoZXhwZWN0ZWQsIGFjdHVhbClc
CisjZGVmaW5lIEVYUEVDVF9GTE9BVF9FUSh2YWwxLCB2YWwyKVwKICAgRVhQRUNUX1BSRURfRk9S
TUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJGbG9hdGluZ1BvaW50RVE8ZmxvYXQ+
LCBcCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQsIGFjdHVhbCkKKyAgICAgICAgICAg
ICAgICAgICAgICB2YWwxLCB2YWwyKQogCi0jZGVmaW5lIEVYUEVDVF9ET1VCTEVfRVEoZXhwZWN0
ZWQsIGFjdHVhbClcCisjZGVmaW5lIEVYUEVDVF9ET1VCTEVfRVEodmFsMSwgdmFsMilcCiAgIEVY
UEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyRmxvYXRpbmdQ
b2ludEVRPGRvdWJsZT4sIFwKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwgYWN0dWFs
KQorICAgICAgICAgICAgICAgICAgICAgIHZhbDEsIHZhbDIpCiAKLSNkZWZpbmUgQVNTRVJUX0ZM
T0FUX0VRKGV4cGVjdGVkLCBhY3R1YWwpXAorI2RlZmluZSBBU1NFUlRfRkxPQVRfRVEodmFsMSwg
dmFsMilcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVs
cGVyRmxvYXRpbmdQb2ludEVRPGZsb2F0PiwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVj
dGVkLCBhY3R1YWwpCisgICAgICAgICAgICAgICAgICAgICAgdmFsMSwgdmFsMikKIAotI2RlZmlu
ZSBBU1NFUlRfRE9VQkxFX0VRKGV4cGVjdGVkLCBhY3R1YWwpXAorI2RlZmluZSBBU1NFUlRfRE9V
QkxFX0VRKHZhbDEsIHZhbDIpXAogICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkNtcEhlbHBlckZsb2F0aW5nUG9pbnRFUTxkb3VibGU+LCBcCi0gICAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0ZWQsIGFjdHVhbCkKKyAgICAgICAgICAgICAgICAgICAgICB2YWwxLCB2
YWwyKQogCiAjZGVmaW5lIEVYUEVDVF9ORUFSKHZhbDEsIHZhbDIsIGFic19lcnJvcilcCiAgIEVY
UEVDVF9QUkVEX0ZPUk1BVDMoOjp0ZXN0aW5nOjppbnRlcm5hbDo6RG91YmxlTmVhclByZWRGb3Jt
YXQsIFwKQEAgLTE4ODIsMTYgKzIxMDgsMTYgQEAgR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQg
RG91YmxlTEUoY29uc3QgY2hhciogZXhwcjEsIGNvbnN0IGNoYXIqIGV4cHIyLAogLy8gZXhwZWN0
ZWQgcmVzdWx0IGFuZCB0aGUgYWN0dWFsIHJlc3VsdCB3aXRoIGJvdGggYSBodW1hbi1yZWFkYWJs
ZQogLy8gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBlcnJvciwgaWYgYXZhaWxhYmxlLCBh
cyB3ZWxsIGFzIHRoZQogLy8gaGV4IHJlc3VsdCBjb2RlLgotI2RlZmluZSBFWFBFQ1RfSFJFU1VM
VF9TVUNDRUVERUQoZXhwcikgXAorIyBkZWZpbmUgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKGV4
cHIpIFwKICAgICBFWFBFQ1RfUFJFRF9GT1JNQVQxKDo6dGVzdGluZzo6aW50ZXJuYWw6OklzSFJF
U1VMVFN1Y2Nlc3MsIChleHByKSkKIAotI2RlZmluZSBBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQo
ZXhwcikgXAorIyBkZWZpbmUgQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKGV4cHIpIFwKICAgICBB
U1NFUlRfUFJFRF9GT1JNQVQxKDo6dGVzdGluZzo6aW50ZXJuYWw6OklzSFJFU1VMVFN1Y2Nlc3Ms
IChleHByKSkKIAotI2RlZmluZSBFWFBFQ1RfSFJFU1VMVF9GQUlMRUQoZXhwcikgXAorIyBkZWZp
bmUgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKGV4cHIpIFwKICAgICBFWFBFQ1RfUFJFRF9GT1JNQVQx
KDo6dGVzdGluZzo6aW50ZXJuYWw6OklzSFJFU1VMVEZhaWx1cmUsIChleHByKSkKIAotI2RlZmlu
ZSBBU1NFUlRfSFJFU1VMVF9GQUlMRUQoZXhwcikgXAorIyBkZWZpbmUgQVNTRVJUX0hSRVNVTFRf
RkFJTEVEKGV4cHIpIFwKICAgICBBU1NFUlRfUFJFRF9GT1JNQVQxKDo6dGVzdGluZzo6aW50ZXJu
YWw6OklzSFJFU1VMVEZhaWx1cmUsIChleHByKSkKIAogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5E
T1dTCkBAIC0xOTExLDYgKzIxMzcsNTcgQEAgR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgRG91
YmxlTEUoY29uc3QgY2hhciogZXhwcjEsIGNvbnN0IGNoYXIqIGV4cHIyLAogI2RlZmluZSBFWFBF
Q1RfTk9fRkFUQUxfRkFJTFVSRShzdGF0ZW1lbnQpIFwKICAgICBHVEVTVF9URVNUX05PX0ZBVEFM
X0ZBSUxVUkVfKHN0YXRlbWVudCwgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8pCiAKKy8vIENhdXNl
cyBhIHRyYWNlIChpbmNsdWRpbmcgdGhlIGdpdmVuIHNvdXJjZSBmaWxlIHBhdGggYW5kIGxpbmUg
bnVtYmVyLAorLy8gYW5kIHRoZSBnaXZlbiBtZXNzYWdlKSB0byBiZSBpbmNsdWRlZCBpbiBldmVy
eSB0ZXN0IGZhaWx1cmUgbWVzc2FnZSBnZW5lcmF0ZWQKKy8vIGJ5IGNvZGUgaW4gdGhlIHNjb3Bl
IG9mIHRoZSBsaWZldGltZSBvZiBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLiBUaGUgZWZmZWN0
CisvLyBpcyB1bmRvbmUgd2l0aCB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhlIGluc3RhbmNlLgorLy8K
Ky8vIFRoZSBtZXNzYWdlIGFyZ3VtZW50IGNhbiBiZSBhbnl0aGluZyBzdHJlYW1hYmxlIHRvIHN0
ZDo6b3N0cmVhbS4KKy8vCisvLyBFeGFtcGxlOgorLy8gICB0ZXN0aW5nOjpTY29wZWRUcmFjZSB0
cmFjZSgiZmlsZS5jYyIsIDEyMywgIm1lc3NhZ2UiKTsKKy8vCitjbGFzcyBHVEVTVF9BUElfIFNj
b3BlZFRyYWNlIHsKKyBwdWJsaWM6CisgIC8vIFRoZSBjJ3RvciBwdXNoZXMgdGhlIGdpdmVuIHNv
dXJjZSBmaWxlIGxvY2F0aW9uIGFuZCBtZXNzYWdlIG9udG8KKyAgLy8gYSB0cmFjZSBzdGFjayBt
YWludGFpbmVkIGJ5IEdvb2dsZSBUZXN0LgorCisgIC8vIFRlbXBsYXRlIHZlcnNpb24uIFVzZXMg
TWVzc2FnZSgpIHRvIGNvbnZlcnQgdGhlIHZhbHVlcyBpbnRvIHN0cmluZ3MuCisgIC8vIFNsb3cs
IGJ1dCBmbGV4aWJsZS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIFNjb3BlZFRyYWNlKGNv
bnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBUJiBtZXNzYWdlKSB7CisgICAgUHVzaFRy
YWNlKGZpbGUsIGxpbmUsIChNZXNzYWdlKCkgPDwgbWVzc2FnZSkuR2V0U3RyaW5nKCkpOworICB9
CisKKyAgLy8gT3B0aW1pemUgZm9yIHNvbWUga25vd24gdHlwZXMuCisgIFNjb3BlZFRyYWNlKGNv
bnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBtZXNzYWdlKSB7CisgICAgUHVz
aFRyYWNlKGZpbGUsIGxpbmUsIG1lc3NhZ2UgPyBtZXNzYWdlIDogIihudWxsKSIpOworICB9CisK
KyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworICBTY29wZWRUcmFjZShjb25zdCBjaGFyKiBm
aWxlLCBpbnQgbGluZSwgY29uc3QgOjpzdHJpbmcmIG1lc3NhZ2UpIHsKKyAgICBQdXNoVHJhY2Uo
ZmlsZSwgbGluZSwgbWVzc2FnZSk7CisgIH0KKyNlbmRpZgorCisgIFNjb3BlZFRyYWNlKGNvbnN0
IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgeworICAg
IFB1c2hUcmFjZShmaWxlLCBsaW5lLCBtZXNzYWdlKTsKKyAgfQorCisgIC8vIFRoZSBkJ3RvciBw
b3BzIHRoZSBpbmZvIHB1c2hlZCBieSB0aGUgYyd0b3IuCisgIC8vCisgIC8vIE5vdGUgdGhhdCB0
aGUgZCd0b3IgaXMgbm90IHZpcnR1YWwgaW4gb3JkZXIgdG8gYmUgZWZmaWNpZW50LgorICAvLyBE
b24ndCBpbmhlcml0IGZyb20gU2NvcGVkVHJhY2UhCisgIH5TY29wZWRUcmFjZSgpOworCisgcHJp
dmF0ZToKKyAgdm9pZCBQdXNoVHJhY2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIHN0ZDo6
c3RyaW5nIG1lc3NhZ2UpOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oU2Nv
cGVkVHJhY2UpOworfSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXzsgIC8vIEEgU2NvcGVkVHJhY2Ug
b2JqZWN0IGRvZXMgaXRzIGpvYiBpbiBpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBjJ3RvciBhbmQgZCd0b3IuICBUaGVyZWZvcmUgaXQgZG9lc24ndAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIG5lZWQgdG8gYmUgdXNlZCBvdGhlcndpc2UuCisKIC8vIENhdXNlcyBh
IHRyYWNlIChpbmNsdWRpbmcgdGhlIHNvdXJjZSBmaWxlIHBhdGgsIHRoZSBjdXJyZW50IGxpbmUK
IC8vIG51bWJlciwgYW5kIHRoZSBnaXZlbiBtZXNzYWdlKSB0byBiZSBpbmNsdWRlZCBpbiBldmVy
eSB0ZXN0IGZhaWx1cmUKIC8vIG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IGNvZGUgaW4gdGhlIGN1cnJl
bnQgc2NvcGUuICBUaGUgZWZmZWN0IGlzCkBAIC0xOTIyLDIwICsyMTk5LDE0IEBAIEdURVNUX0FQ
SV8gQXNzZXJ0aW9uUmVzdWx0IERvdWJsZUxFKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFy
KiBleHByMiwKIC8vIG9mIHRoZSBkdW1teSB2YXJpYWJsZSBuYW1lLCB0aHVzIGFsbG93aW5nIG11
bHRpcGxlIFNDT1BFRF9UUkFDRSgpcwogLy8gdG8gYXBwZWFyIGluIHRoZSBzYW1lIGJsb2NrIC0g
YXMgbG9uZyBhcyB0aGV5IGFyZSBvbiBkaWZmZXJlbnQKIC8vIGxpbmVzLgorLy8KKy8vIEFzc3Vt
aW5nIHRoYXQgZWFjaCB0aHJlYWQgbWFpbnRhaW5zIGl0cyBvd24gc3RhY2sgb2YgdHJhY2VzLgor
Ly8gVGhlcmVmb3JlLCBhIFNDT1BFRF9UUkFDRSgpIHdvdWxkIChjb3JyZWN0bHkpIG9ubHkgYWZm
ZWN0IHRoZQorLy8gYXNzZXJ0aW9ucyBpbiBpdHMgb3duIHRocmVhZC4KICNkZWZpbmUgU0NPUEVE
X1RSQUNFKG1lc3NhZ2UpIFwKLSAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6U2NvcGVkVHJhY2UgR1RF
U1RfQ09OQ0FUX1RPS0VOXyhndGVzdF90cmFjZV8sIF9fTElORV9fKShcCi0gICAgX19GSUxFX18s
IF9fTElORV9fLCA6OnRlc3Rpbmc6Ok1lc3NhZ2UoKSA8PCAobWVzc2FnZSkpCi0KLW5hbWVzcGFj
ZSBpbnRlcm5hbCB7Ci0KLS8vIFRoaXMgdGVtcGxhdGUgaXMgZGVjbGFyZWQsIGJ1dCBpbnRlbnRp
b25hbGx5IHVuZGVmaW5lZC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1z
dHJ1Y3QgU3RhdGljQXNzZXJ0VHlwZUVxSGVscGVyOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LXN0cnVjdCBTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI8VCwgVD4ge307CisgIDo6dGVzdGluZzo6
U2NvcGVkVHJhY2UgR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF90cmFjZV8sIF9fTElORV9fKShc
CisgICAgX19GSUxFX18sIF9fTElORV9fLCAobWVzc2FnZSkpCiAKLX0gIC8vIG5hbWVzcGFjZSBp
bnRlcm5hbAogCiAvLyBDb21waWxlLXRpbWUgYXNzZXJ0aW9uIGZvciB0eXBlIGVxdWFsaXR5Lgog
Ly8gU3RhdGljQXNzZXJ0VHlwZUVxPHR5cGUxLCB0eXBlMj4oKSBjb21waWxlcyBpZmYgdHlwZTEg
YW5kIHR5cGUyIGFyZQpAQCAtMTk2OSw3ICsyMjQwLDcgQEAgc3RydWN0IFN0YXRpY0Fzc2VydFR5
cGVFcUhlbHBlcjxULCBUPiB7fTsKIC8vIHRvIGNhdXNlIGEgY29tcGlsZXIgZXJyb3IuCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgogYm9vbCBTdGF0aWNBc3NlcnRUeXBlRXEo
KSB7Ci0gIGludGVybmFsOjpTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI8VDEsIFQyPigpOworICAo
dm9pZClpbnRlcm5hbDo6U3RhdGljQXNzZXJ0VHlwZUVxSGVscGVyPFQxLCBUMj4oKTsKICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTE5ODEsOCArMjI1Miw4IEBAIGJvb2wgU3RhdGljQXNzZXJ0VHlw
ZUVxKCkgewogLy8gVGhlIGNvbnZlbnRpb24gaXMgdG8gZW5kIHRoZSB0ZXN0IGNhc2UgbmFtZSB3
aXRoICJUZXN0Ii4gIEZvcgogLy8gZXhhbXBsZSwgYSB0ZXN0IGNhc2UgZm9yIHRoZSBGb28gY2xh
c3MgY2FuIGJlIG5hbWVkIEZvb1Rlc3QuCiAvLwotLy8gVGhlIHVzZXIgc2hvdWxkIHB1dCBoaXMg
dGVzdCBjb2RlIGJldHdlZW4gYnJhY2VzIGFmdGVyIHVzaW5nIHRoaXMKLS8vIG1hY3JvLiAgRXhh
bXBsZToKKy8vIFRlc3QgY29kZSBzaG91bGQgYXBwZWFyIGJldHdlZW4gYnJhY2VzIGFmdGVyIGFu
IGludm9jYXRpb24gb2YKKy8vIHRoaXMgbWFjcm8uICBFeGFtcGxlOgogLy8KIC8vICAgVEVTVChG
b29UZXN0LCBJbml0aWFsaXplc0NvcnJlY3RseSkgewogLy8gICAgIEZvbyBmb287CkBAIC0yMDA1
LDcgKzIyNzYsNyBAQCBib29sIFN0YXRpY0Fzc2VydFR5cGVFcSgpIHsKIC8vIERlZmluZSB0aGlz
IG1hY3JvIHRvIDEgdG8gb21pdCB0aGUgZGVmaW5pdGlvbiBvZiBURVNUKCksIHdoaWNoCiAvLyBp
cyBhIGdlbmVyaWMgbmFtZSBhbmQgY2xhc2hlcyB3aXRoIHNvbWUgb3RoZXIgbGlicmFyaWVzLgog
I2lmICFHVEVTVF9ET05UX0RFRklORV9URVNUCi0jZGVmaW5lIFRFU1QodGVzdF9jYXNlX25hbWUs
IHRlc3RfbmFtZSkgR1RFU1RfVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKQorIyBkZWZp
bmUgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBHVEVTVF9URVNUKHRlc3RfY2FzZV9u
YW1lLCB0ZXN0X25hbWUpCiAjZW5kaWYKIAogLy8gRGVmaW5lcyBhIHRlc3QgdGhhdCB1c2VzIGEg
dGVzdCBmaXh0dXJlLgpAQCAtMjAxNSw3ICsyMjg2LDcgQEAgYm9vbCBTdGF0aWNBc3NlcnRUeXBl
RXEoKSB7CiAvLyBuYW1lIG9mIHRoZSB0ZXN0IHdpdGhpbiB0aGUgdGVzdCBjYXNlLgogLy8KIC8v
IEEgdGVzdCBmaXh0dXJlIGNsYXNzIG11c3QgYmUgZGVjbGFyZWQgZWFybGllci4gIFRoZSB1c2Vy
IHNob3VsZCBwdXQKLS8vIGhpcyB0ZXN0IGNvZGUgYmV0d2VlbiBicmFjZXMgYWZ0ZXIgdXNpbmcg
dGhpcyBtYWNyby4gIEV4YW1wbGU6CisvLyB0aGUgdGVzdCBjb2RlIGJldHdlZW4gYnJhY2VzIGFm
dGVyIHVzaW5nIHRoaXMgbWFjcm8uICBFeGFtcGxlOgogLy8KIC8vICAgY2xhc3MgRm9vVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIC8vICAgIHByb3RlY3RlZDoKQEAgLTIwMzAsMjMgKzIz
MDEsMzggQEAgYm9vbCBTdGF0aWNBc3NlcnRUeXBlRXEoKSB7CiAvLyAgIH0KIC8vCiAvLyAgIFRF
U1RfRihGb29UZXN0LCBSZXR1cm5zRWxlbWVudENvdW50Q29ycmVjdGx5KSB7Ci0vLyAgICAgRVhQ
RUNUX0VRKDAsIGFfLnNpemUoKSk7Ci0vLyAgICAgRVhQRUNUX0VRKDEsIGJfLnNpemUoKSk7Cisv
LyAgICAgRVhQRUNUX0VRKGFfLnNpemUoKSwgMCk7CisvLyAgICAgRVhQRUNUX0VRKGJfLnNpemUo
KSwgMSk7CiAvLyAgIH0KIAogI2RlZmluZSBURVNUX0YodGVzdF9maXh0dXJlLCB0ZXN0X25hbWUp
XAogICBHVEVTVF9URVNUXyh0ZXN0X2ZpeHR1cmUsIHRlc3RfbmFtZSwgdGVzdF9maXh0dXJlLCBc
CiAgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkdldFR5cGVJZDx0ZXN0X2ZpeHR1
cmU+KCkpCiAKLS8vIFVzZSB0aGlzIG1hY3JvIGluIG1haW4oKSB0byBydW4gYWxsIHRlc3RzLiAg
SXQgcmV0dXJucyAwIGlmIGFsbAorLy8gUmV0dXJucyBhIHBhdGggdG8gdGVtcG9yYXJ5IGRpcmVj
dG9yeS4KKy8vIFRyaWVzIHRvIGRldGVybWluZSBhbiBhcHByb3ByaWF0ZSBkaXJlY3RvcnkgZm9y
IHRoZSBwbGF0Zm9ybS4KK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgVGVtcERpcigpOworCisjaWZk
ZWYgX01TQ19WRVIKKyMgIHByYWdtYSB3YXJuaW5nKHBvcCkKKyNlbmRpZgorCit9ICAvLyBuYW1l
c3BhY2UgdGVzdGluZworCisvLyBVc2UgdGhpcyBmdW5jdGlvbiBpbiBtYWluKCkgdG8gcnVuIGFs
bCB0ZXN0cy4gIEl0IHJldHVybnMgMCBpZiBhbGwKIC8vIHRlc3RzIGFyZSBzdWNjZXNzZnVsLCBv
ciAxIG90aGVyd2lzZS4KIC8vCiAvLyBSVU5fQUxMX1RFU1RTKCkgc2hvdWxkIGJlIGludm9rZWQg
YWZ0ZXIgdGhlIGNvbW1hbmQgbGluZSBoYXMgYmVlbgogLy8gcGFyc2VkIGJ5IEluaXRHb29nbGVU
ZXN0KCkuCisvLworLy8gVGhpcyBmdW5jdGlvbiB3YXMgZm9ybWVybHkgYSBtYWNybzsgdGh1cywg
aXQgaXMgaW4gdGhlIGdsb2JhbAorLy8gbmFtZXNwYWNlIGFuZCBoYXMgYW4gYWxsLWNhcHMgbmFt
ZS4KK2ludCBSVU5fQUxMX1RFU1RTKCkgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXzsKIAotI2RlZmlu
ZSBSVU5fQUxMX1RFU1RTKClcCi0gICg6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgp
LT5SdW4oKSkKK2lubGluZSBpbnQgUlVOX0FMTF9URVNUUygpIHsKKyAgcmV0dXJuIDo6dGVzdGlu
Zzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPlJ1bigpOworfQogCi19ICAvLyBuYW1lc3BhY2Ug
dGVzdGluZworR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQogCiAj
ZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oCmluZGV4
IGUxZTJmOGM0Yzg4N2E4ZGVmY2I3NThjYTBjYWFiM2I3Y2ViOWQ0MWEuLjBjMTEwNWNiOGViMmVm
N2MyNjE2ZTY3ZmY1NTU2YWFiMjlmZjJkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcmVkX2ltcGwuaApAQCAtMjcsMTggKzI3
LDE5IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLS8vIFRoaXMgZmlsZSBp
cyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRCBvbiAxMC8wMi8yMDA4IGJ5IGNvbW1hbmQKKy8vIFRo
aXMgZmlsZSBpcyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRCBvbiAwMS8wMi8yMDE4IGJ5IGNvbW1h
bmQKIC8vICdnZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5IDUnLiAgRE8gTk9UIEVESVQgQlkgSEFORCEK
IC8vCiAvLyBJbXBsZW1lbnRzIGEgZmFtaWx5IG9mIGdlbmVyaWMgcHJlZGljYXRlIGFzc2VydGlv
biBtYWNyb3MuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKKwogI2lmbmRl
ZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BSRURfSU1QTF9IXwogI2RlZmluZSBHVEVTVF9J
TkNMVURFX0dURVNUX0dURVNUX1BSRURfSU1QTF9IXwogCi0vLyBNYWtlcyBzdXJlIHRoaXMgaGVh
ZGVyIGlzIG5vdCBpbmNsdWRlZCBiZWZvcmUgZ3Rlc3QuaC4KLSNpZm5kZWYgR1RFU1RfSU5DTFVE
RV9HVEVTVF9HVEVTVF9IXwotI2Vycm9yIERvIG5vdCBpbmNsdWRlIGd0ZXN0X3ByZWRfaW1wbC5o
IGRpcmVjdGx5LiAgSW5jbHVkZSBndGVzdC5oIGluc3RlYWQuCi0jZW5kaWYgIC8vIEdURVNUX0lO
Q0xVREVfR1RFU1RfR1RFU1RfSF8KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3Bh
Y2UgdGVzdGluZyB7CiAKIC8vIFRoaXMgaGVhZGVyIGltcGxlbWVudHMgYSBmYW1pbHkgb2YgZ2Vu
ZXJpYyBwcmVkaWNhdGUgYXNzZXJ0aW9uCiAvLyBtYWNyb3M6CkBAIC02Niw4ICs2Nyw2IEBACiAv
LyBXZSBhbHNvIGRlZmluZSB0aGUgRVhQRUNUXyogdmFyaWF0aW9ucy4KIC8vCiAvLyBGb3Igbm93
IHdlIG9ubHkgc3VwcG9ydCBwcmVkaWNhdGVzIHdob3NlIGFyaXR5IGlzIGF0IG1vc3QgNS4KLS8v
IFBsZWFzZSBlbWFpbCBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20gaWYgeW91
IG5lZWQKLS8vIHN1cHBvcnQgZm9yIGhpZ2hlciBhcml0aWVzLgogCiAvLyBHVEVTVF9BU1NFUlRf
IGlzIHRoZSBiYXNpYyBzdGF0ZW1lbnQgdG8gd2hpY2ggYWxsIG9mIHRoZSBhc3NlcnRpb25zCiAv
LyBpbiB0aGlzIGZpbGUgcmVkdWNlLiAgRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgpAQCAt
OTAsMTcgKzg5LDE1IEBAIEFzc2VydGlvblJlc3VsdCBBc3NlcnRQcmVkMUhlbHBlcihjb25zdCBj
aGFyKiBwcmVkX3RleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VDEmIHYxKSB7CiAgIGlmIChwcmVkKHYxKSkgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKIAot
ICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IHByZWRfdGV4dCA8PCAiKCIKLSAgICAgIDw8IGUxIDw8
ICIpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmUiCi0gICAgICA8PCAiXG4iIDw8IGUxIDw8ICIg
ZXZhbHVhdGVzIHRvICIgPDwgdjE7Ci0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7Cisg
IHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgcHJlZF90ZXh0IDw8ICIoIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IGUxIDw8ICIpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmUi
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRl
cyB0byAiIDw8IHYxOwogfQogCiAvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtF
WFBFQ1R8QVNTRVJUfV9QUkVEX0ZPUk1BVDEuCiAvLyBEb24ndCB1c2UgdGhpcyBpbiB5b3VyIGNv
ZGUuCiAjZGVmaW5lIEdURVNUX1BSRURfRk9STUFUMV8ocHJlZF9mb3JtYXQsIHYxLCBvbl9mYWls
dXJlKVwKLSAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsIHYxKSxcCisgIEdURVNUX0FT
U0VSVF8ocHJlZF9mb3JtYXQoI3YxLCB2MSksIFwKICAgICAgICAgICAgICAgICBvbl9mYWlsdXJl
KQogCiAvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9Q
UkVEMS4gIERvbid0IHVzZQpAQCAtMTM2LDE5ICsxMzMsMTcgQEAgQXNzZXJ0aW9uUmVzdWx0IEFz
c2VydFByZWQySGVscGVyKGNvbnN0IGNoYXIqIHByZWRfdGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUMiYgdjIpIHsKICAgaWYgKHByZWQodjEsIHYyKSkgcmV0
dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IHByZWRf
dGV4dCA8PCAiKCIKLSAgICAgIDw8IGUxIDw8ICIsICIKLSAgICAgIDw8IGUyIDw8ICIpIGV2YWx1
YXRlcyB0byBmYWxzZSwgd2hlcmUiCi0gICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVhdGVz
IHRvICIgPDwgdjEKLSAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2
MjsKLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgcmV0dXJuIEFzc2VydGlvbkZh
aWx1cmUoKSA8PCBwcmVkX3RleHQgPDwgIigiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PDwgZTEgPDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUyIDw8ICIpIGV2
YWx1YXRlcyB0byBmYWxzZSwgd2hlcmUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
IlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgIlxuIiA8PCBlMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYyOwogfQogCiAv
LyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEX0ZP
Uk1BVDIuCiAvLyBEb24ndCB1c2UgdGhpcyBpbiB5b3VyIGNvZGUuCiAjZGVmaW5lIEdURVNUX1BS
RURfRk9STUFUMl8ocHJlZF9mb3JtYXQsIHYxLCB2Miwgb25fZmFpbHVyZSlcCi0gIEdURVNUX0FT
U0VSVF8ocHJlZF9mb3JtYXQoI3YxLCAjdjIsIHYxLCB2MiksXAorICBHVEVTVF9BU1NFUlRfKHBy
ZWRfZm9ybWF0KCN2MSwgI3YyLCB2MSwgdjIpLCBcCiAgICAgICAgICAgICAgICAgb25fZmFpbHVy
ZSkKIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1f
UFJFRDIuICBEb24ndCB1c2UKQEAgLTE4OSwyMSArMTg0LDE5IEBAIEFzc2VydGlvblJlc3VsdCBB
c3NlcnRQcmVkM0hlbHBlcihjb25zdCBjaGFyKiBwcmVkX3RleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVDMmIHYzKSB7CiAgIGlmIChwcmVkKHYxLCB2MiwgdjMp
KSByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwg
cHJlZF90ZXh0IDw8ICIoIgotICAgICAgPDwgZTEgPDwgIiwgIgotICAgICAgPDwgZTIgPDwgIiwg
IgotICAgICAgPDwgZTMgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKLSAgICAgIDw8
ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MQotICAgICAgPDwgIlxuIiA8PCBl
MiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYyCi0gICAgICA8PCAiXG4iIDw8IGUzIDw8ICIgZXZh
bHVhdGVzIHRvICIgPDwgdjM7Ci0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIHJl
dHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgcHJlZF90ZXh0IDw8ICIoIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8IGUxIDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCBlMiA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTMgPDwgIikg
ZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjEKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUzIDw8ICIgZXZhbHVhdGVzIHRvICIg
PDwgdjM7CiB9CiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxB
U1NFUlR9X1BSRURfRk9STUFUMy4KIC8vIERvbid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KICNk
ZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQzXyhwcmVkX2Zvcm1hdCwgdjEsIHYyLCB2Mywgb25fZmFp
bHVyZSlcCi0gIEdURVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoI3YxLCAjdjIsICN2MywgdjEsIHYy
LCB2MyksXAorICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAjdjMsIHYxLCB2
MiwgdjMpLCBcCiAgICAgICAgICAgICAgICAgb25fZmFpbHVyZSkKIAogLy8gSW50ZXJuYWwgbWFj
cm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRDMuICBEb24ndCB1c2UKQEAg
LTI0OSwyMyArMjQyLDIxIEBAIEFzc2VydGlvblJlc3VsdCBBc3NlcnRQcmVkNEhlbHBlcihjb25z
dCBjaGFyKiBwcmVkX3RleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVDQmIHY0KSB7CiAgIGlmIChwcmVkKHYxLCB2MiwgdjMsIHY0KSkgcmV0dXJuIEFzc2VydGlv
blN1Y2Nlc3MoKTsKIAotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IHByZWRfdGV4dCA8PCAiKCIK
LSAgICAgIDw8IGUxIDw8ICIsICIKLSAgICAgIDw8IGUyIDw8ICIsICIKLSAgICAgIDw8IGUzIDw8
ICIsICIKLSAgICAgIDw8IGU0IDw8ICIpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmUiCi0gICAg
ICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjEKLSAgICAgIDw8ICJcbiIg
PDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MgotICAgICAgPDwgIlxuIiA8PCBlMyA8PCAi
IGV2YWx1YXRlcyB0byAiIDw8IHYzCi0gICAgICA8PCAiXG4iIDw8IGU0IDw8ICIgZXZhbHVhdGVz
IHRvICIgPDwgdjQ7Ci0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIHJldHVybiBB
c3NlcnRpb25GYWlsdXJlKCkgPDwgcHJlZF90ZXh0IDw8ICIoIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDw8IGUxIDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBl
MiA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTMgPDwgIiwgIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGU0IDw8ICIpIGV2YWx1YXRlcyB0byBmYWxzZSwg
d2hlcmUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2
YWx1YXRlcyB0byAiIDw8IHYxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIiA8
PCBlMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYyCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIlxuIiA8PCBlMyA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYzCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgIlxuIiA8PCBlNCA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHY0Owog
fQogCiAvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9Q
UkVEX0ZPUk1BVDQuCiAvLyBEb24ndCB1c2UgdGhpcyBpbiB5b3VyIGNvZGUuCiAjZGVmaW5lIEdU
RVNUX1BSRURfRk9STUFUNF8ocHJlZF9mb3JtYXQsIHYxLCB2MiwgdjMsIHY0LCBvbl9mYWlsdXJl
KVwKLSAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3YzLCAjdjQsIHYxLCB2
MiwgdjMsIHY0KSxcCisgIEdURVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoI3YxLCAjdjIsICN2Mywg
I3Y0LCB2MSwgdjIsIHYzLCB2NCksIFwKICAgICAgICAgICAgICAgICBvbl9mYWlsdXJlKQogCiAv
LyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVENC4g
IERvbid0IHVzZQpAQCAtMzE2LDI1ICszMDcsMjMgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFBy
ZWQ1SGVscGVyKGNvbnN0IGNoYXIqIHByZWRfdGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUNSYgdjUpIHsKICAgaWYgKHByZWQodjEsIHYyLCB2MywgdjQsIHY1
KSkgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8
IHByZWRfdGV4dCA8PCAiKCIKLSAgICAgIDw8IGUxIDw8ICIsICIKLSAgICAgIDw8IGUyIDw8ICIs
ICIKLSAgICAgIDw8IGUzIDw8ICIsICIKLSAgICAgIDw8IGU0IDw8ICIsICIKLSAgICAgIDw8IGU1
IDw8ICIpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmUiCi0gICAgICA8PCAiXG4iIDw8IGUxIDw8
ICIgZXZhbHVhdGVzIHRvICIgPDwgdjEKLSAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0
ZXMgdG8gIiA8PCB2MgotICAgICAgPDwgIlxuIiA8PCBlMyA8PCAiIGV2YWx1YXRlcyB0byAiIDw8
IHYzCi0gICAgICA8PCAiXG4iIDw8IGU0IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjQKLSAgICAg
IDw8ICJcbiIgPDwgZTUgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NTsKLSAgcmV0dXJuIEFzc2Vy
dGlvbkZhaWx1cmUobXNnKTsKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBwcmVkX3Rl
eHQgPDwgIigiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTEgPDwgIiwgIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUyIDw8ICIsICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCBlMyA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
ZTQgPDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGU1IDw8ICIpIGV2YWx1
YXRlcyB0byBmYWxzZSwgd2hlcmUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxu
IiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgIlxuIiA8PCBlMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYyCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgIlxuIiA8PCBlMyA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYz
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIiA8PCBlNCA8PCAiIGV2YWx1YXRl
cyB0byAiIDw8IHY0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIiA8PCBlNSA8
PCAiIGV2YWx1YXRlcyB0byAiIDw8IHY1OwogfQogCiAvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1w
bGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEX0ZPUk1BVDUuCiAvLyBEb24ndCB1c2UgdGhp
cyBpbiB5b3VyIGNvZGUuCiAjZGVmaW5lIEdURVNUX1BSRURfRk9STUFUNV8ocHJlZF9mb3JtYXQs
IHYxLCB2MiwgdjMsIHY0LCB2NSwgb25fZmFpbHVyZSlcCi0gIEdURVNUX0FTU0VSVF8ocHJlZF9m
b3JtYXQoI3YxLCAjdjIsICN2MywgI3Y0LCAjdjUsIHYxLCB2MiwgdjMsIHY0LCB2NSksXAorICBH
VEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAjdjMsICN2NCwgI3Y1LCB2MSwgdjIs
IHYzLCB2NCwgdjUpLCBcCiAgICAgICAgICAgICAgICAgb25fZmFpbHVyZSkKIAogLy8gSW50ZXJu
YWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRDUuICBEb24ndCB1
c2UKQEAgLTM2NSw0ICszNTQsNiBAQCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDVIZWxwZXIo
Y29uc3QgY2hhciogcHJlZF90ZXh0LAogCiAKIAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKwog
I2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BSRURfSU1QTF9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaAppbmRl
eCBkYTgwZGRjNmM3MGVlMmRjNzczZWQ2NzY1YTRmODlkZmE4Y2IzOGU4Li5lNjUxNjcxZWJkZTg1
OWZjNzMxYjU0NTliZGMwNjYxYWYwNzU3Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaApAQCAtMjYsMTAgKzI2LDEwIEBACiAv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKIC8vCi0vLyBB
dXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gR29vZ2xlIEMrKyBU
ZXN0aW5nIEZyYW1ld29yayBkZWZpbml0aW9ucyB1c2VmdWwgaW4gcHJvZHVjdGlvbiBjb2RlLgor
Ly8gR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayBkZWZpbml0aW9ucyB1
c2VmdWwgaW4gcHJvZHVjdGlvbiBjb2RlLgorLy8gR09PR0xFVEVTVF9DTTAwMDMgRE8gTk9UIERF
TEVURQogCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJPRF9IXwogI2RlZmlu
ZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BST0RfSF8KQEAgLTQwLDE3ICs0MCwyMCBAQAog
Ly8KIC8vIGNsYXNzIE15Q2xhc3MgewogLy8gIHByaXZhdGU6Ci0vLyAgIHZvaWQgTXlNZXRob2Qo
KTsKLS8vICAgRlJJRU5EX1RFU1QoTXlDbGFzc1Rlc3QsIE15TWV0aG9kKTsKKy8vICAgdm9pZCBQ
cml2YXRlTWV0aG9kKCk7CisvLyAgIEZSSUVORF9URVNUKE15Q2xhc3NUZXN0LCBQcml2YXRlTWV0
aG9kV29ya3MpOwogLy8gfTsKIC8vCiAvLyBjbGFzcyBNeUNsYXNzVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKIC8vICAgLy8gLi4uCiAvLyB9OwogLy8KLS8vIFRFU1RfRihNeUNsYXNzVGVz
dCwgTXlNZXRob2QpIHsKLS8vICAgLy8gQ2FuIGNhbGwgTXlDbGFzczo6TXlNZXRob2QoKSBoZXJl
LgorLy8gVEVTVF9GKE15Q2xhc3NUZXN0LCBQcml2YXRlTWV0aG9kV29ya3MpIHsKKy8vICAgLy8g
Q2FuIGNhbGwgTXlDbGFzczo6UHJpdmF0ZU1ldGhvZCgpIGhlcmUuCiAvLyB9CisvLworLy8gTm90
ZTogVGhlIHRlc3QgY2xhc3MgbXVzdCBiZSBpbiB0aGUgc2FtZSBuYW1lc3BhY2UgYXMgdGhlIGNs
YXNzIGJlaW5nIHRlc3RlZC4KKy8vIEZvciBleGFtcGxlLCBwdXR0aW5nIE15Q2xhc3NUZXN0IGlu
IGFuIGFub255bW91cyBuYW1lc3BhY2Ugd2lsbCBub3Qgd29yay4KIAogI2RlZmluZSBGUklFTkRf
VEVTVCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKVwKIGZyaWVuZCBjbGFzcyB0ZXN0X2Nhc2Vf
bmFtZSMjXyMjdGVzdF9uYW1lIyNfVGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vUkVBRE1FLm1kIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vUkVBRE1FLm1kCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZmMzkxZmI0ZTJiNTc2NWNhYzhjNjk0MzM1OWIxNWJiZDVmNGYxNDkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVy
bmFsL2N1c3RvbS9SRUFETUUubWQKQEAgLTAsMCArMSw1NiBAQAorIyBDdXN0b21pemF0aW9uIFBv
aW50cworCitUaGUgY3VzdG9tIGRpcmVjdG9yeSBpcyBhbiBpbmplY3Rpb24gcG9pbnQgZm9yIGN1
c3RvbSB1c2VyIGNvbmZpZ3VyYXRpb25zLgorCisjIyBIZWFkZXIgYGd0ZXN0LmhgCisKKyMjIyBU
aGUgZm9sbG93aW5nIG1hY3JvcyBjYW4gYmUgZGVmaW5lZDoKKworKiAgIGBHVEVTVF9PU19TVEFD
S19UUkFDRV9HRVRURVJfYCAtIFRoZSBuYW1lIG9mIGFuIGltcGxlbWVudGF0aW9uIG9mCisgICAg
YE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZWAuCisqICAgYEdURVNUX0NVU1RPTV9URU1QRElS
X0ZVTkNUSU9OX2AgLSBBbiBvdmVycmlkZSBmb3IgYHRlc3Rpbmc6OlRlbXBEaXIoKWAuIFNlZQor
ICAgIGB0ZXN0aW5nOjpUZW1wRGlyYCBmb3Igc2VtYW50aWNzIGFuZCBzaWduYXR1cmUuCisKKyMj
IEhlYWRlciBgZ3Rlc3QtcG9ydC5oYAorCitUaGUgZm9sbG93aW5nIG1hY3JvcyBjYW4gYmUgZGVm
aW5lZDoKKworIyMjIEZsYWcgcmVsYXRlZCBtYWNyb3M6CisKKyogICBgR1RFU1RfRkxBRyhmbGFn
X25hbWUpYAorKiAgIGBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfYCAtIERlZmluZSB0byAw
IHdoZW4gdGhlIHN5c3RlbSBwcm92aWRlcyBpdHMKKyAgICBvd24gZmxhZ2ZpbGUgZmxhZyBwYXJz
aW5nLgorKiAgIGBHVEVTVF9ERUNMQVJFX2Jvb2xfKG5hbWUpYAorKiAgIGBHVEVTVF9ERUNMQVJF
X2ludDMyXyhuYW1lKWAKKyogICBgR1RFU1RfREVDTEFSRV9zdHJpbmdfKG5hbWUpYAorKiAgIGBH
VEVTVF9ERUZJTkVfYm9vbF8obmFtZSwgZGVmYXVsdF92YWwsIGRvYylgCisqICAgYEdURVNUX0RF
RklORV9pbnQzMl8obmFtZSwgZGVmYXVsdF92YWwsIGRvYylgCisqICAgYEdURVNUX0RFRklORV9z
dHJpbmdfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpYAorCisjIyMgTG9nZ2luZzoKKworKiAgIGBH
VEVTVF9MT0dfKHNldmVyaXR5KWAKKyogICBgR1RFU1RfQ0hFQ0tfKGNvbmRpdGlvbilgCisqICAg
RnVuY3Rpb25zIGBMb2dUb1N0ZGVycigpYCBhbmQgYEZsdXNoSW5mb0xvZygpYCBoYXZlIHRvIGJl
IHByb3ZpZGVkIHRvby4KKworIyMjIFRocmVhZGluZzoKKworKiAgIGBHVEVTVF9IQVNfTk9USUZJ
Q0FUSU9OX2AgLSBFbmFibGVkIGlmIE5vdGlmaWNhdGlvbiBpcyBhbHJlYWR5IHByb3ZpZGVkLgor
KiAgIGBHVEVTVF9IQVNfTVVURVhfQU5EX1RIUkVBRF9MT0NBTF9gIC0gRW5hYmxlZCBpZiBgTXV0
ZXhgIGFuZCBgVGhyZWFkTG9jYWxgCisgICAgYXJlIGFscmVhZHkgcHJvdmlkZWQuIE11c3QgYWxz
byBwcm92aWRlIGBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRFWF8obXV0ZXgpYAorICAgIGFuZCBg
R1RFU1RfREVGSU5FX1NUQVRJQ19NVVRFWF8obXV0ZXgpYAorKiAgIGBHVEVTVF9FWENMVVNJVkVf
TE9DS19SRVFVSVJFRF8obG9ja3MpYAorKiAgIGBHVEVTVF9MT0NLX0VYQ0xVREVEXyhsb2Nrcylg
CisKKyMjIyBVbmRlcmx5aW5nIGxpYnJhcnkgc3VwcG9ydCBmZWF0dXJlcworCisqICAgYEdURVNU
X0hBU19DWFhBQklfSF9gCisKKyMjIyBFeHBvcnRpbmcgQVBJIHN5bWJvbHM6CisKKyogICBgR1RF
U1RfQVBJX2AgLSBTcGVjaWZpZXIgZm9yIGV4cG9ydGVkIHN5bWJvbHMuCisKKyMjIEhlYWRlciBg
Z3Rlc3QtcHJpbnRlcnMuaGAKKworKiAgIFNlZSBkb2N1bWVudGF0aW9uIGF0IGBndGVzdC9ndGVz
dC1wcmludGVycy5oYCBmb3IgZGV0YWlscyBvbiBob3cgdG8gZGVmaW5lIGEKKyAgICBjdXN0b20g
cHJpbnRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXBvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXBvcnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
ZDg1ZDk1NmQyZGMxN2JkNTM3ZjIxNDIzNDBiZGY1OGY0NzM3MTE4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20v
Z3Rlc3QtcG9ydC5oCkBAIC0wLDAgKzEsMzcgQEAKKy8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUg
SW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
Ly8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBJbmplY3Rpb24gcG9pbnQgZm9yIGN1c3RvbSB1c2Vy
IGNvbmZpZ3VyYXRpb25zLiBTZWUgUkVBRE1FIGZvciBkZXRhaWxzCisvLworLy8gKiogQ3VzdG9t
IGltcGxlbWVudGF0aW9uIHN0YXJ0cyBoZXJlICoqCisKKyNpZm5kZWYgR1RFU1RfSU5DTFVERV9H
VEVTVF9JTlRFUk5BTF9DVVNUT01fR1RFU1RfUE9SVF9IXworI2RlZmluZSBHVEVTVF9JTkNMVURF
X0dURVNUX0lOVEVSTkFMX0NVU1RPTV9HVEVTVF9QT1JUX0hfCisKKyNlbmRpZiAgLy8gR1RFU1Rf
SU5DTFVERV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RFU1RfUE9SVF9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rl
c3QtcHJpbnRlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvY3VzdG9tL2d0ZXN0LXByaW50ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI0NDY3YWJjYWJlYTdm
Zjc2ZjlkMmQ1MjczODdjOWRhODEwMTQ4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXByaW50ZXJz
LmgKQEAgLTAsMCArMSw0MiBAQAorLy8gQ29weXJpZ2h0IDIwMTUsIEdvb2dsZSBJbmMuCisvLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
Ly8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
Ky8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorLy8KKy8vIFRoaXMgZmlsZSBwcm92aWRlcyBhbiBpbmplY3Rpb24gcG9pbnQgZm9y
IGN1c3RvbSBwcmludGVycyBpbiBhIGxvY2FsCisvLyBpbnN0YWxsYXRpb24gb2YgZ1Rlc3QuCisv
LyBJdCB3aWxsIGJlIGluY2x1ZGVkIGZyb20gZ3Rlc3QtcHJpbnRlcnMuaCBhbmQgdGhlIG92ZXJy
aWRlcyBpbiB0aGlzIGZpbGUKKy8vIHdpbGwgYmUgdmlzaWJsZSB0byBldmVyeW9uZS4KKy8vCisv
LyBJbmplY3Rpb24gcG9pbnQgZm9yIGN1c3RvbSB1c2VyIGNvbmZpZ3VyYXRpb25zLiBTZWUgUkVB
RE1FIGZvciBkZXRhaWxzCisvLworLy8gKiogQ3VzdG9tIGltcGxlbWVudGF0aW9uIHN0YXJ0cyBo
ZXJlICoqCisKKyNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RF
U1RfUFJJTlRFUlNfSF8KKyNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9DVVNU
T01fR1RFU1RfUFJJTlRFUlNfSF8KKworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lO
VEVSTkFMX0NVU1RPTV9HVEVTVF9QUklOVEVSU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGM4ZTA3YmUyM2YxZmQ2MTU5YWZlZjJlZWZkNzQ0NDAzNGRkMDYwNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvY3VzdG9tL2d0ZXN0LmgKQEAgLTAsMCArMSwzNyBAQAorLy8gQ29weXJpZ2h0IDIwMTUs
IEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEluamVjdGlvbiBwb2ludCBmb3IgY3Vz
dG9tIHVzZXIgY29uZmlndXJhdGlvbnMuIFNlZSBSRUFETUUgZm9yIGRldGFpbHMKKy8vCisvLyAq
KiBDdXN0b20gaW1wbGVtZW50YXRpb24gc3RhcnRzIGhlcmUgKioKKworI2lmbmRlZiBHVEVTVF9J
TkNMVURFX0dURVNUX0lOVEVSTkFMX0NVU1RPTV9HVEVTVF9IXworI2RlZmluZSBHVEVTVF9JTkNM
VURFX0dURVNUX0lOVEVSTkFMX0NVU1RPTV9HVEVTVF9IXworCisjZW5kaWYgIC8vIEdURVNUX0lO
Q0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3Qt
aW50ZXJuYWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5oCmluZGV4IGU0MzMwODQ4ZDRlYWU1NzBmMjgw
ZGFjNTdjZjAwYjI5NzIyYzdkMGMuLjBhOWI0MmM4YTU3MmE4NzE5NGM2NTEwOTAzZTIxZWEyMjYw
ZmFjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5h
bC5oCkBAIC0yNywxNyArMjcsMTggQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
IC8vCi0vLyBBdXRob3JzOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKSwgZWVmYWNtQGdt
YWlsLmNvbSAoU2VhbiBNY2FmZWUpCi0vLwotLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFt
ZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2lu
ZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogLy8KIC8vIFRoaXMgaGVhZGVyIGZpbGUgZGVmaW5l
cyBpbnRlcm5hbCB1dGlsaXRpZXMgbmVlZGVkIGZvciBpbXBsZW1lbnRpbmcKIC8vIGRlYXRoIHRl
c3RzLiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCisvLyBHT09H
TEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCiAKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVT
VF9JTlRFUk5BTF9HVEVTVF9ERUFUSF9URVNUX0lOVEVSTkFMX0hfCiAjZGVmaW5lIEdURVNUX0lO
Q0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfREVBVEhfVEVTVF9JTlRFUk5BTF9IXwogCi0jaW5j
bHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4KKyNpbmNsdWRlICJndGVzdC9p
bnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oIgorCisjaW5jbHVkZSA8c3RkaW8uaD4KIAogbmFtZXNw
YWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsKQEAgLTUxLDYgKzUyLDkgQEAgY29u
c3QgY2hhciBrSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnW10gPSAiaW50ZXJuYWxfcnVuX2RlYXRo
X3Rlc3QiOwogCiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKIAorR1RFU1RfRElTQUJMRV9NU0Nf
V0FSTklOR1NfUFVTSF8oNDI1MSBcCisvKiBjbGFzcyBBIG5lZWRzIHRvIGhhdmUgZGxsLWludGVy
ZmFjZSB0byBiZSB1c2VkIGJ5IGNsaWVudHMgb2YgY2xhc3MgQiAqLykKKwogLy8gRGVhdGhUZXN0
IGlzIGEgY2xhc3MgdGhhdCBoaWRlcyBtdWNoIG9mIHRoZSBjb21wbGV4aXR5IG9mIHRoZQogLy8g
R1RFU1RfREVBVEhfVEVTVF8gbWFjcm8uICBJdCBpcyBhYnN0cmFjdDsgaXRzIHN0YXRpYyBDcmVh
dGUgbWV0aG9kCiAvLyByZXR1cm5zIGEgY29uY3JldGUgY2xhc3MgdGhhdCBkZXBlbmRzIG9uIHRo
ZSBwcmV2YWlsaW5nIGRlYXRoIHRlc3QKQEAgLTk2LDggKzEwMCwxMiBAQCBjbGFzcyBHVEVTVF9B
UElfIERlYXRoVGVzdCB7CiAgIC8vIHRlc3QsIHRoZW4gd2FpdCBmb3IgaXQgdG8gY29tcGxldGUu
CiAgIGVudW0gVGVzdFJvbGUgeyBPVkVSU0VFX1RFU1QsIEVYRUNVVEVfVEVTVCB9OwogCi0gIC8v
IEFuIGVudW1lcmF0aW9uIG9mIHRoZSB0d28gcmVhc29ucyB0aGF0IGEgdGVzdCBtaWdodCBiZSBh
Ym9ydGVkLgotICBlbnVtIEFib3J0UmVhc29uIHsgVEVTVF9FTkNPVU5URVJFRF9SRVRVUk5fU1RB
VEVNRU5ULCBURVNUX0RJRF9OT1RfRElFIH07CisgIC8vIEFuIGVudW1lcmF0aW9uIG9mIHRoZSB0
aHJlZSByZWFzb25zIHRoYXQgYSB0ZXN0IG1pZ2h0IGJlIGFib3J0ZWQuCisgIGVudW0gQWJvcnRS
ZWFzb24geworICAgIFRFU1RfRU5DT1VOVEVSRURfUkVUVVJOX1NUQVRFTUVOVCwKKyAgICBURVNU
X1RIUkVXX0VYQ0VQVElPTiwKKyAgICBURVNUX0RJRF9OT1RfRElFCisgIH07CiAKICAgLy8gQXNz
dW1lcyBvbmUgb2YgdGhlIGFib3ZlIHJvbGVzLgogICB2aXJ0dWFsIFRlc3RSb2xlIEFzc3VtZVJv
bGUoKSA9IDA7CkBAIC0xMjEsMTUgKzEyOSwxNyBAQCBjbGFzcyBHVEVTVF9BUElfIERlYXRoVGVz
dCB7CiAgIC8vIHRoZSBsYXN0IGRlYXRoIHRlc3QuCiAgIHN0YXRpYyBjb25zdCBjaGFyKiBMYXN0
TWVzc2FnZSgpOwogCi0gIHN0YXRpYyB2b2lkIHNldF9sYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZShj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICBzdGF0aWMgdm9pZCBzZXRfbGFzdF9kZWF0aF90ZXN0
X21lc3NhZ2UoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpOwogCiAgcHJpdmF0ZToKICAgLy8g
QSBzdHJpbmcgY29udGFpbmluZyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBvdXRjb21lIG9mIHRoZSBs
YXN0IGRlYXRoIHRlc3QuCi0gIHN0YXRpYyBTdHJpbmcgbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2Vf
OworICBzdGF0aWMgc3RkOjpzdHJpbmcgbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2VfOwogCiAgIEdU
RVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oRGVhdGhUZXN0KTsKIH07CiAKK0dURVNUX0RJ
U0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQyNTEKKwogLy8gRmFjdG9yeSBpbnRlcmZh
Y2UgZm9yIGRlYXRoIHRlc3RzLiAgTWF5IGJlIG1vY2tlZCBvdXQgZm9yIHRlc3RpbmcuCiBjbGFz
cyBEZWF0aFRlc3RGYWN0b3J5IHsKICBwdWJsaWM6CkBAIC0xNDksOSArMTU5LDM0IEBAIGNsYXNz
IERlZmF1bHREZWF0aFRlc3RGYWN0b3J5IDogcHVibGljIERlYXRoVGVzdEZhY3RvcnkgewogLy8g
YnkgYSBzaWduYWwsIG9yIGV4aXRlZCBub3JtYWxseSB3aXRoIGEgbm9uemVybyBleGl0IGNvZGUu
CiBHVEVTVF9BUElfIGJvb2wgRXhpdGVkVW5zdWNjZXNzZnVsbHkoaW50IGV4aXRfc3RhdHVzKTsK
IAorLy8gVHJhcHMgQysrIGV4Y2VwdGlvbnMgZXNjYXBpbmcgc3RhdGVtZW50IGFuZCByZXBvcnRz
IHRoZW0gYXMgdGVzdAorLy8gZmFpbHVyZXMuIE5vdGUgdGhhdCB0cmFwcGluZyBTRUggZXhjZXB0
aW9ucyBpcyBub3QgaW1wbGVtZW50ZWQgaGVyZS4KKyMgaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMK
KyMgIGRlZmluZSBHVEVTVF9FWEVDVVRFX0RFQVRIX1RFU1RfU1RBVEVNRU5UXyhzdGF0ZW1lbnQs
IGRlYXRoX3Rlc3QpIFwKKyAgdHJ5IHsgXAorICAgIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxF
X0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KTsgXAorICB9IGNhdGNoIChjb25zdCA6OnN0
ZDo6ZXhjZXB0aW9uJiBndGVzdF9leGNlcHRpb24pIHsgXAorICAgIGZwcmludGYoXAorICAgICAg
ICBzdGRlcnIsIFwKKyAgICAgICAgIlxuJXM6IENhdWdodCBzdGQ6OmV4Y2VwdGlvbi1kZXJpdmVk
IGV4Y2VwdGlvbiBlc2NhcGluZyB0aGUgIiBcCisgICAgICAgICJkZWF0aCB0ZXN0IHN0YXRlbWVu
dC4gRXhjZXB0aW9uIG1lc3NhZ2U6ICVzXG4iLCBcCisgICAgICAgIDo6dGVzdGluZzo6aW50ZXJu
YWw6OkZvcm1hdEZpbGVMb2NhdGlvbihfX0ZJTEVfXywgX19MSU5FX18pLmNfc3RyKCksIFwKKyAg
ICAgICAgZ3Rlc3RfZXhjZXB0aW9uLndoYXQoKSk7IFwKKyAgICBmZmx1c2goc3RkZXJyKTsgXAor
ICAgIGRlYXRoX3Rlc3QtPkFib3J0KDo6dGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVzdDo6VEVT
VF9USFJFV19FWENFUFRJT04pOyBcCisgIH0gY2F0Y2ggKC4uLikgeyBcCisgICAgZGVhdGhfdGVz
dC0+QWJvcnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0OjpURVNUX1RIUkVXX0VYQ0VQ
VElPTik7IFwKKyAgfQorCisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9FWEVDVVRFX0RFQVRIX1RF
U1RfU1RBVEVNRU5UXyhzdGF0ZW1lbnQsIGRlYXRoX3Rlc3QpIFwKKyAgR1RFU1RfU1VQUFJFU1Nf
VU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpCisKKyMgZW5kaWYKKwog
Ly8gVGhpcyBtYWNybyBpcyBmb3IgaW1wbGVtZW50aW5nIEFTU0VSVF9ERUFUSCosIEVYUEVDVF9E
RUFUSCosCiAvLyBBU1NFUlRfRVhJVCosIGFuZCBFWFBFQ1RfRVhJVCouCi0jZGVmaW5lIEdURVNU
X0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgZmFpbCkgXAorIyBkZWZp
bmUgR1RFU1RfREVBVEhfVEVTVF8oc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4LCBmYWlsKSBc
CiAgIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKICAgaWYgKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBcCiAgICAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
UkUmIGd0ZXN0X3JlZ2V4ID0gKHJlZ2V4KTsgXApAQCAtMTcyLDEwICsyMDcsMTIgQEAgR1RFU1Rf
QVBJXyBib29sIEV4aXRlZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1cyk7CiAgICAgICAg
IGNhc2UgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0OjpFWEVDVVRFX1RFU1Q6IHsgXAog
ICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVzdDo6UmV0dXJuU2VudGluZWwg
XAogICAgICAgICAgICAgICBndGVzdF9zZW50aW5lbChndGVzdF9kdCk7IFwKLSAgICAgICAgICBH
VEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7
IFwKKyAgICAgICAgICBHVEVTVF9FWEVDVVRFX0RFQVRIX1RFU1RfU1RBVEVNRU5UXyhzdGF0ZW1l
bnQsIGd0ZXN0X2R0KTsgXAogICAgICAgICAgIGd0ZXN0X2R0LT5BYm9ydCg6OnRlc3Rpbmc6Omlu
dGVybmFsOjpEZWF0aFRlc3Q6OlRFU1RfRElEX05PVF9ESUUpOyBcCiAgICAgICAgICAgYnJlYWs7
IFwKICAgICAgICAgfSBcCisgICAgICAgIGRlZmF1bHQ6IFwKKyAgICAgICAgICBicmVhazsgXAog
ICAgICAgfSBcCiAgICAgfSBcCiAgIH0gZWxzZSBcCkBAIC0xODQsMTIgKzIyMSwyNyBAQCBHVEVT
VF9BUElfIGJvb2wgRXhpdGVkVW5zdWNjZXNzZnVsbHkoaW50IGV4aXRfc3RhdHVzKTsKIC8vIFRo
ZSBzeW1ib2wgImZhaWwiIGhlcmUgZXhwYW5kcyB0byBzb21ldGhpbmcgaW50byB3aGljaCBhIG1l
c3NhZ2UKIC8vIGNhbiBiZSBzdHJlYW1lZC4KIAorLy8gVGhpcyBtYWNybyBpcyBmb3IgaW1wbGVt
ZW50aW5nIEFTU0VSVC9FWFBFQ1RfREVCVUdfREVBVEggd2hlbiBjb21waWxlZCBpbgorLy8gTkRF
QlVHIG1vZGUuIEluIHRoaXMgY2FzZSB3ZSBuZWVkIHRoZSBzdGF0ZW1lbnRzIHRvIGJlIGV4ZWN1
dGVkIGFuZCB0aGUgbWFjcm8KKy8vIG11c3QgYWNjZXB0IGEgc3RyZWFtZWQgbWVzc2FnZSBldmVu
IHRob3VnaCB0aGUgbWVzc2FnZSBpcyBuZXZlciBwcmludGVkLgorLy8gVGhlIHJlZ2V4IG9iamVj
dCBpcyBub3QgZXZhbHVhdGVkLCBidXQgaXQgaXMgdXNlZCB0byBwcmV2ZW50ICJ1bnVzZWQiCisv
LyB3YXJuaW5ncyBhbmQgdG8gYXZvaWQgYW4gZXhwcmVzc2lvbiB0aGF0IGRvZXNuJ3QgY29tcGls
ZSBpbiBkZWJ1ZyBtb2RlLgorI2RlZmluZSBHVEVTVF9FWEVDVVRFX1NUQVRFTUVOVF8oc3RhdGVt
ZW50LCByZWdleCkgICAgICAgICAgICAgXAorICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VS
XyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBpZiAoOjp0ZXN0aW5nOjppbnRl
cm5hbDo6QWx3YXlzVHJ1ZSgpKSB7ICAgICAgICAgICAgICAgICAgICAgXAorICAgIEdURVNUX1NV
UFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KTsgXAorICB9
IGVsc2UgaWYgKCE6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgICAgICAgICAg
ICAgXAorICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6OlJFJiBndGVzdF9yZWdleCA9IChy
ZWdleCk7ICAgICAgXAorICAgIHN0YXRpY19jYXN0PHZvaWQ+KGd0ZXN0X3JlZ2V4KTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICB9IGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIDo6dGVzdGluZzo6TWVzc2FnZSgp
CisKIC8vIEEgY2xhc3MgcmVwcmVzZW50aW5nIHRoZSBwYXJzZWQgY29udGVudHMgb2YgdGhlCiAv
LyAtLWd0ZXN0X2ludGVybmFsX3J1bl9kZWF0aF90ZXN0IGZsYWcsIGFzIGl0IGV4aXN0ZWQgd2hl
bgogLy8gUlVOX0FMTF9URVNUUyB3YXMgY2FsbGVkLgogY2xhc3MgSW50ZXJuYWxSdW5EZWF0aFRl
c3RGbGFnIHsKICBwdWJsaWM6Ci0gIEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyhjb25zdCBTdHJp
bmcmIGFfZmlsZSwKKyAgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKGNvbnN0IHN0ZDo6c3RyaW5n
JiBhX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYV9saW5lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGFuX2luZGV4LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGFfd3JpdGVfZmQpCkBAIC0yMDEsMTMgKzI1MywxMyBAQCBjbGFzcyBJbnRlcm5h
bFJ1bkRlYXRoVGVzdEZsYWcgewogICAgICAgcG9zaXg6OkNsb3NlKHdyaXRlX2ZkXyk7CiAgIH0K
IAotICBTdHJpbmcgZmlsZSgpIGNvbnN0IHsgcmV0dXJuIGZpbGVfOyB9CisgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBmaWxlKCkgY29uc3QgeyByZXR1cm4gZmlsZV87IH0KICAgaW50IGxpbmUoKSBjb25z
dCB7IHJldHVybiBsaW5lXzsgfQogICBpbnQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBpbmRleF87
IH0KICAgaW50IHdyaXRlX2ZkKCkgY29uc3QgeyByZXR1cm4gd3JpdGVfZmRfOyB9CiAKICBwcml2
YXRlOgotICBTdHJpbmcgZmlsZV87CisgIHN0ZDo6c3RyaW5nIGZpbGVfOwogICBpbnQgbGluZV87
CiAgIGludCBpbmRleF87CiAgIGludCB3cml0ZV9mZF87CkBAIC0yMjAsNTMgKzI3Miw2IEBAIGNs
YXNzIEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyB7CiAvLyB0aGUgZmxhZyBpcyBzcGVjaWZpZWQ7
IG90aGVyd2lzZSByZXR1cm5zIE5VTEwuCiBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcqIFBhcnNl
SW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKCk7CiAKLSNlbHNlICAvLyBHVEVTVF9IQVNfREVBVEhf
VEVTVAotCi0vLyBUaGlzIG1hY3JvIGlzIHVzZWQgZm9yIGltcGxlbWVudGluZyBtYWNyb3Mgc3Vj
aCBhcwotLy8gRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCBhbmQgQVNTRVJUX0RFQVRIX0lGX1NV
UFBPUlRFRCBvbiBzeXN0ZW1zIHdoZXJlCi0vLyBkZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRl
ZC4gVGhvc2UgbWFjcm9zIG11c3QgY29tcGlsZSBvbiBzdWNoIHN5c3RlbXMKLS8vIGlmZiBFWFBF
Q1RfREVBVEggYW5kIEFTU0VSVF9ERUFUSCBjb21waWxlIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVy
cyBvbgotLy8gc3lzdGVtcyB0aGF0IHN1cHBvcnQgZGVhdGggdGVzdHMuIFRoaXMgYWxsb3dzIG9u
ZSB0byB3cml0ZSBzdWNoIGEgbWFjcm8KLS8vIG9uIGEgc3lzdGVtIHRoYXQgZG9lcyBub3Qgc3Vw
cG9ydCBkZWF0aCB0ZXN0cyBhbmQgYmUgc3VyZSB0aGF0IGl0IHdpbGwKLS8vIGNvbXBpbGUgb24g
YSBkZWF0aC10ZXN0IHN1cHBvcnRpbmcgc3lzdGVtLgotLy8KLS8vIFBhcmFtZXRlcnM6Ci0vLyAg
IHN0YXRlbWVudCAtICBBIHN0YXRlbWVudCB0aGF0IGEgbWFjcm8gc3VjaCBhcyBFWFBFQ1RfREVB
VEggd291bGQgdGVzdAotLy8gICAgICAgICAgICAgICAgZm9yIHByb2dyYW0gdGVybWluYXRpb24u
IFRoaXMgbWFjcm8gaGFzIHRvIG1ha2Ugc3VyZSB0aGlzCi0vLyAgICAgICAgICAgICAgICBzdGF0
ZW1lbnQgaXMgY29tcGlsZWQgYnV0IG5vdCBleGVjdXRlZCwgdG8gZW5zdXJlIHRoYXQKLS8vICAg
ICAgICAgICAgICAgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQgY29tcGlsZXMgd2l0aCBhIGNl
cnRhaW4KLS8vICAgICAgICAgICAgICAgIHBhcmFtZXRlciBpZmYgRVhQRUNUX0RFQVRIIGNvbXBp
bGVzIHdpdGggaXQuCi0vLyAgIHJlZ2V4ICAgICAtICBBIHJlZ2V4IHRoYXQgYSBtYWNybyBzdWNo
IGFzIEVYUEVDVF9ERUFUSCB3b3VsZCB1c2UgdG8gdGVzdAotLy8gICAgICAgICAgICAgICAgdGhl
IG91dHB1dCBvZiBzdGF0ZW1lbnQuICBUaGlzIHBhcmFtZXRlciBoYXMgdG8gYmUKLS8vICAgICAg
ICAgICAgICAgIGNvbXBpbGVkIGJ1dCBub3QgZXZhbHVhdGVkIGJ5IHRoaXMgbWFjcm8sIHRvIGVu
c3VyZSB0aGF0Ci0vLyAgICAgICAgICAgICAgICB0aGlzIG1hY3JvIG9ubHkgYWNjZXB0cyBleHBy
ZXNzaW9ucyB0aGF0IGEgbWFjcm8gc3VjaCBhcwotLy8gICAgICAgICAgICAgICAgRVhQRUNUX0RF
QVRIIHdvdWxkIGFjY2VwdC4KLS8vICAgdGVybWluYXRvciAtIE11c3QgYmUgYW4gZW1wdHkgc3Rh
dGVtZW50IGZvciBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVECi0vLyAgICAgICAgICAgICAgICBh
bmQgYSByZXR1cm4gc3RhdGVtZW50IGZvciBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVELgotLy8g
ICAgICAgICAgICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRF
RCB3aWxsIG5vdAotLy8gICAgICAgICAgICAgICAgY29tcGlsZSBpbnNpZGUgZnVuY3Rpb25zIHdo
ZXJlIEFTU0VSVF9ERUFUSCBkb2Vzbid0Ci0vLyAgICAgICAgICAgICAgICBjb21waWxlLgotLy8K
LS8vICBUaGUgYnJhbmNoIHRoYXQgaGFzIGFuIGFsd2F5cyBmYWxzZSBjb25kaXRpb24gaXMgdXNl
ZCB0byBlbnN1cmUgdGhhdAotLy8gIHN0YXRlbWVudCBhbmQgcmVnZXggYXJlIGNvbXBpbGVkIChh
bmQgdGh1cyBzeW50YWN0aWNhbGx5IGNvcnJlY3QpIGJ1dAotLy8gIG5ldmVyIGV4ZWN1dGVkLiBU
aGUgdW5yZWFjaGFibGUgY29kZSBtYWNybyBwcm90ZWN0cyB0aGUgdGVybWluYXRvcgotLy8gIHN0
YXRlbWVudCBmcm9tIGdlbmVyYXRpbmcgYW4gJ3VucmVhY2hhYmxlIGNvZGUnIHdhcm5pbmcgaW4g
Y2FzZQotLy8gIHN0YXRlbWVudCB1bmNvbmRpdGlvbmFsbHkgcmV0dXJucyBvciB0aHJvd3MuIFRo
ZSBNZXNzYWdlIGNvbnN0cnVjdG9yIGF0Ci0vLyAgdGhlIGVuZCBhbGxvd3MgdGhlIHN5bnRheCBv
ZiBzdHJlYW1pbmcgYWRkaXRpb25hbCBtZXNzYWdlcyBpbnRvIHRoZQotLy8gIG1hY3JvLCBmb3Ig
Y29tcGlsYXRpb25hbCBjb21wYXRpYmlsaXR5IHdpdGggRVhQRUNUX0RFQVRIL0FTU0VSVF9ERUFU
SC4KLSNkZWZpbmUgR1RFU1RfVU5TVVBQT1JURURfREVBVEhfVEVTVF8oc3RhdGVtZW50LCByZWdl
eCwgdGVybWluYXRvcikgXAotICAgIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKLSAg
ICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKLSAgICAgIEdURVNU
X0xPR18oV0FSTklORykgXAotICAgICAgICAgIDw8ICJEZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBv
cnRlZCBvbiB0aGlzIHBsYXRmb3JtLlxuIiBcCi0gICAgICAgICAgPDwgIlN0YXRlbWVudCAnIiAj
c3RhdGVtZW50ICInIGNhbm5vdCBiZSB2ZXJpZmllZC4iOyBcCi0gICAgfSBlbHNlIGlmICg6OnRl
c3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgpKSB7IFwKLSAgICAgIDo6dGVzdGluZzo6aW50
ZXJuYWw6OlJFOjpQYXJ0aWFsTWF0Y2goIi4qIiwgKHJlZ2V4KSk7IFwKLSAgICAgIEdURVNUX1NV
UFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KTsgXAotICAg
ICAgdGVybWluYXRvcjsgXAotICAgIH0gZWxzZSBcCi0gICAgICA6OnRlc3Rpbmc6Ok1lc3NhZ2Uo
KQotCiAjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCiAKIH0gIC8vIG5hbWVzcGFjZSBp
bnRlcm5hbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oCmluZGV4IDRiNzZkNzk1MDZiMDI2
YWJhMzcxNjQ3MmZjNDNjZWZjMWE3ZTM4OGEuLmFlMzhkOTViZjg0NGZhOWRjMjE3MzljZjgyMTI3
NmQ1YjM0MTdlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUv
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgKQEAgLTI3LDIwICsy
NywyMyBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogLy8KLS8vIEF1dGhvcjog
a2VpdGgucmF5QGdtYWlsLmNvbSAoS2VpdGggUmF5KQotLy8KIC8vIEdvb2dsZSBUZXN0IGZpbGVw
YXRoIHV0aWxpdGllcwogLy8KIC8vIFRoaXMgaGVhZGVyIGZpbGUgZGVjbGFyZXMgY2xhc3NlcyBh
bmQgZnVuY3Rpb25zIHVzZWQgaW50ZXJuYWxseSBieQogLy8gR29vZ2xlIFRlc3QuICBUaGV5IGFy
ZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4KIC8vCi0vLyBUaGlzIGZpbGUgaXMg
I2luY2x1ZGVkIGluIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oPi4KKy8vIFRoaXMg
ZmlsZSBpcyAjaW5jbHVkZWQgaW4gZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaC4KIC8v
IERvIG5vdCBpbmNsdWRlIHRoaXMgaGVhZGVyIGZpbGUgc2VwYXJhdGVseSEKIAorLy8gR09PR0xF
VEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1Rf
SU5URVJOQUxfR1RFU1RfRklMRVBBVEhfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9J
TlRFUk5BTF9HVEVTVF9GSUxFUEFUSF9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rl
c3Qtc3RyaW5nLmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgiCisK
K0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQyNTEgXAorLyogY2xhc3MgQSBuZWVk
cyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBieSBjbGllbnRzIG9mIGNsYXNzIEIg
Ki8pCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CkBAIC02MSwx
MSArNjQsNyBAQCBjbGFzcyBHVEVTVF9BUElfIEZpbGVQYXRoIHsKICAgRmlsZVBhdGgoKSA6IHBh
dGhuYW1lXygiIikgeyB9CiAgIEZpbGVQYXRoKGNvbnN0IEZpbGVQYXRoJiByaHMpIDogcGF0aG5h
bWVfKHJocy5wYXRobmFtZV8pIHsgfQogCi0gIGV4cGxpY2l0IEZpbGVQYXRoKGNvbnN0IGNoYXIq
IHBhdGhuYW1lKSA6IHBhdGhuYW1lXyhwYXRobmFtZSkgewotICAgIE5vcm1hbGl6ZSgpOwotICB9
Ci0KLSAgZXhwbGljaXQgRmlsZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRobmFtZSkgOiBwYXRobmFt
ZV8ocGF0aG5hbWUpIHsKKyAgZXhwbGljaXQgRmlsZVBhdGgoY29uc3Qgc3RkOjpzdHJpbmcmIHBh
dGhuYW1lKSA6IHBhdGhuYW1lXyhwYXRobmFtZSkgewogICAgIE5vcm1hbGl6ZSgpOwogICB9CiAK
QEAgLTc4LDcgKzc3LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBGaWxlUGF0aCB7CiAgICAgcGF0aG5h
bWVfID0gcmhzLnBhdGhuYW1lXzsKICAgfQogCi0gIFN0cmluZyBUb1N0cmluZygpIGNvbnN0IHsg
cmV0dXJuIHBhdGhuYW1lXzsgfQorICBjb25zdCBzdGQ6OnN0cmluZyYgc3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gcGF0aG5hbWVfOyB9CiAgIGNvbnN0IGNoYXIqIGNfc3RyKCkgY29uc3QgeyByZXR1
cm4gcGF0aG5hbWVfLmNfc3RyKCk7IH0KIAogICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IHdvcmtp
bmcgZGlyZWN0b3J5LCBvciAiIiBpZiB1bnN1Y2Nlc3NmdWwuCkBAIC0xMTEsOCArMTEwLDggQEAg
Y2xhc3MgR1RFU1RfQVBJXyBGaWxlUGF0aCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEZpbGVQYXRoJiBiYXNlX25hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lvbik7CiAKLSAgLy8g
UmV0dXJucyB0cnVlIGlmZiB0aGUgcGF0aCBpcyBOVUxMIG9yICIiLgotICBib29sIElzRW1wdHko
KSBjb25zdCB7IHJldHVybiBjX3N0cigpID09IE5VTEwgfHwgKmNfc3RyKCkgPT0gJ1wwJzsgfQor
ICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBwYXRoIGlzICIiLgorICBib29sIElzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBwYXRobmFtZV8uZW1wdHkoKTsgfQogCiAgIC8vIElmIGlucHV0IG5hbWUg
aGFzIGEgdHJhaWxpbmcgc2VwYXJhdG9yIGNoYXJhY3RlciwgcmVtb3ZlcyBpdCBhbmQgcmV0dXJu
cwogICAvLyB0aGUgbmFtZSwgb3RoZXJ3aXNlIHJldHVybiB0aGUgbmFtZSBzdHJpbmcgdW5tb2Rp
ZmllZC4KQEAgLTIwMSwxMCArMjAwLDEyIEBAIGNsYXNzIEdURVNUX0FQSV8gRmlsZVBhdGggewog
ICAvLyBzZXBhcmF0b3JzLiBSZXR1cm5zIE5VTEwgaWYgbm8gcGF0aCBzZXBhcmF0b3Igd2FzIGZv
dW5kLgogICBjb25zdCBjaGFyKiBGaW5kTGFzdFBhdGhTZXBhcmF0b3IoKSBjb25zdDsKIAotICBT
dHJpbmcgcGF0aG5hbWVfOworICBzdGQ6OnN0cmluZyBwYXRobmFtZV87CiB9OyAgLy8gY2xhc3Mg
RmlsZVBhdGgKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVz
dGluZwogCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkgIC8vICA0MjUxCisKICNl
bmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9GSUxFUEFUSF9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC1pbnRlcm5hbC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oCmluZGV4IDMxYTY2ZTk5ZDNjNDgyMTUxZTQwZmMz
NWE0MDI3MDA2OTAzMmExZDUuLmI3NjJmNjFmYzUzYzNkYjljZmI3NTM5NDBkOTFiNWQ1NGFiMzYz
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgKQEAgLTI3LDM0ICsyNyw0MyBAQAog
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogLy8KLS8vIEF1dGhvcnM6IHdhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pLCBlZWZhY21AZ21haWwuY29tIChTZWFuIE1jYWZlZSkKLS8v
Ci0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBU
aGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3Qp
CiAvLwogLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWNsYXJlcyBmdW5jdGlvbnMgYW5kIG1hY3JvcyB1
c2VkIGludGVybmFsbHkgYnkKIC8vIEdvb2dsZSBUZXN0LiAgVGhleSBhcmUgc3ViamVjdCB0byBj
aGFuZ2Ugd2l0aG91dCBub3RpY2UuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxF
VEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0lOVEVSTkFM
X0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfSU5URVJOQUxf
SF8KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KKyNpbmNsdWRlICJn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKICNpZiBHVEVTVF9PU19MSU5VWAotI2luY2x1
ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy93YWl0
Lmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+CisjIGluY2x1ZGUgPHN0ZGxpYi5oPgorIyBpbmNsdWRl
IDxzeXMvdHlwZXMuaD4KKyMgaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyMgaW5jbHVkZSA8dW5pc3Rk
Lmg+CiAjZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCiAKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9O
UworIyBpbmNsdWRlIDxzdGRleGNlcHQ+CisjZW5kaWYKKwogI2luY2x1ZGUgPGN0eXBlLmg+Cisj
aW5jbHVkZSA8ZmxvYXQuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxpb21hbmlw
PgogI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8c2V0PgorI2lu
Y2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlIDxndGVzdC9pbnRl
cm5hbC9ndGVzdC1zdHJpbmcuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1maWxl
cGF0aC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oPgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9n
dGVzdC1maWxlcGF0aC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5o
IgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oIgogCiAvLyBEdWUg
dG8gQysrIHByZXByb2Nlc3NvciB3ZWlyZG5lc3MsIHdlIG5lZWQgZG91YmxlIGluZGlyZWN0aW9u
IHRvCiAvLyBjb25jYXRlbmF0ZSB0d28gdG9rZW5zIHdoZW4gb25lIG9mIHRoZW0gaXMgX19MSU5F
X18uICBXcml0aW5nCkBAIC02NywzOSArNzYsMTUgQEAKICNkZWZpbmUgR1RFU1RfQ09OQ0FUX1RP
S0VOXyhmb28sIGJhcikgR1RFU1RfQ09OQ0FUX1RPS0VOX0lNUExfKGZvbywgYmFyKQogI2RlZmlu
ZSBHVEVTVF9DT05DQVRfVE9LRU5fSU1QTF8oZm9vLCBiYXIpIGZvbyAjIyBiYXIKIAotLy8gR29v
Z2xlIFRlc3QgZGVmaW5lcyB0aGUgdGVzdGluZzo6TWVzc2FnZSBjbGFzcyB0byBhbGxvdyBjb25z
dHJ1Y3Rpb24gb2YKLS8vIHRlc3QgbWVzc2FnZXMgdmlhIHRoZSA8PCBvcGVyYXRvci4gIFRoZSBp
ZGVhIGlzIHRoYXQgYW55dGhpbmcKLS8vIHN0cmVhbWFibGUgdG8gc3RkOjpvc3RyZWFtIGNhbiBi
ZSBzdHJlYW1lZCB0byBhIHRlc3Rpbmc6Ok1lc3NhZ2UuCi0vLyBUaGlzIGFsbG93cyBhIHVzZXIg
dG8gdXNlIGhpcyBvd24gdHlwZXMgaW4gR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBieQotLy8gb3Zl
cmxvYWRpbmcgdGhlIDw8IG9wZXJhdG9yLgotLy8KLS8vIHV0aWwvZ3RsL3N0bF9sb2dnaW5nLWlu
bC5oIG92ZXJsb2FkcyA8PCBmb3IgU1RMIGNvbnRhaW5lcnMuICBUaGVzZQotLy8gb3ZlcmxvYWRz
IGNhbm5vdCBiZSBkZWZpbmVkIGluIHRoZSBzdGQgbmFtZXNwYWNlLCBhcyB0aGF0IHdpbGwgYmUK
LS8vIHVuZGVmaW5lZCBiZWhhdmlvci4gIFRoZXJlZm9yZSwgdGhleSBhcmUgZGVmaW5lZCBpbiB0
aGUgZ2xvYmFsCi0vLyBuYW1lc3BhY2UgaW5zdGVhZC4KLS8vCi0vLyBDKysncyBzeW1ib2wgbG9v
a3VwIHJ1bGUgKGkuZS4gS29lbmlnIGxvb2t1cCkgc2F5cyB0aGF0IHRoZXNlCi0vLyBvdmVybG9h
ZHMgYXJlIHZpc2libGUgaW4gZWl0aGVyIHRoZSBzdGQgbmFtZXNwYWNlIG9yIHRoZSBnbG9iYWwK
LS8vIG5hbWVzcGFjZSwgYnV0IG5vdCBvdGhlciBuYW1lc3BhY2VzLCBpbmNsdWRpbmcgdGhlIHRl
c3RpbmcKLS8vIG5hbWVzcGFjZSB3aGljaCBHb29nbGUgVGVzdCdzIE1lc3NhZ2UgY2xhc3MgaXMg
aW4uCi0vLwotLy8gVG8gYWxsb3cgU1RMIGNvbnRhaW5lcnMgKGFuZCBvdGhlciB0eXBlcyB0aGF0
IGhhcyBhIDw8IG9wZXJhdG9yCi0vLyBkZWZpbmVkIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlKSB0
byBiZSB1c2VkIGluIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMsCi0vLyB0ZXN0aW5nOjpNZXNzYWdl
IG11c3QgYWNjZXNzIHRoZSBjdXN0b20gPDwgb3BlcmF0b3IgZnJvbSB0aGUgZ2xvYmFsCi0vLyBu
YW1lc3BhY2UuICBIZW5jZSB0aGlzIGhlbHBlciBmdW5jdGlvbi4KLS8vCi0vLyBOb3RlOiBKZWZm
cmV5IFlhc3NraW4gc3VnZ2VzdGVkIGFuIGFsdGVybmF0aXZlIGZpeCBieSAidXNpbmcKLS8vIDo6
b3BlcmF0b3I8PDsiIGluIHRoZSBkZWZpbml0aW9uIG9mIE1lc3NhZ2UncyBvcGVyYXRvcjw8LiAg
VGhhdCBmaXgKLS8vIGRvZXNuJ3QgcmVxdWlyZSBhIGhlbHBlciBmdW5jdGlvbiwgYnV0IHVuZm9y
dHVuYXRlbHkgZG9lc24ndAotLy8gY29tcGlsZSB3aXRoIE1TVkMuCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLWlubGluZSB2b2lkIEdUZXN0U3RyZWFtVG9IZWxwZXIoc3RkOjpvc3RyZWFtKiBvcywg
Y29uc3QgVCYgdmFsKSB7Ci0gICpvcyA8PCB2YWw7Ci19CisvLyBTdHJpbmdpZmllcyBpdHMgYXJn
dW1lbnQuCisjZGVmaW5lIEdURVNUX1NUUklOR0lGWV8obmFtZSkgI25hbWUKKworY2xhc3MgUHJv
dG9jb2xNZXNzYWdlOworbmFtZXNwYWNlIHByb3RvMiB7IGNsYXNzIE1lc3NhZ2U7IH0KIAogbmFt
ZXNwYWNlIHRlc3RpbmcgewogCi0vLyBGb3J3YXJkIGRlY2xhcmF0aW9uIG9mIGNsYXNzZXMuCisv
LyBGb3J3YXJkIGRlY2xhcmF0aW9ucy4KIAogY2xhc3MgQXNzZXJ0aW9uUmVzdWx0OyAgICAgICAg
ICAgICAgICAgLy8gUmVzdWx0IG9mIGFuIGFzc2VydGlvbi4KIGNsYXNzIE1lc3NhZ2U7ICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFJlcHJlc2VudHMgYSBmYWlsdXJlIG1lc3NhZ2UuCkBAIC0x
MDgsMjUgKzkzLDE5IEBAIGNsYXNzIFRlc3RJbmZvOyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IEluZm9ybWF0aW9uIGFib3V0IGEgdGVzdC4KIGNsYXNzIFRlc3RQYXJ0UmVzdWx0OyAgICAgICAg
ICAgICAgICAgIC8vIFJlc3VsdCBvZiBhIHRlc3QgcGFydC4KIGNsYXNzIFVuaXRUZXN0OyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEEgY29sbGVjdGlvbiBvZiB0ZXN0IGNhc2VzLgogCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KKzo6c3RkOjpzdHJpbmcgUHJpbnRUb1N0cmluZyhjb25zdCBUJiB2
YWx1ZSk7CisKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIHN0cnVjdCBUcmFjZUluZm87ICAgICAg
ICAgICAgICAgICAgICAgIC8vIEluZm9ybWF0aW9uIGFib3V0IGEgdHJhY2UgcG9pbnQuCi1jbGFz
cyBTY29wZWRUcmFjZTsgICAgICAgICAgICAgICAgICAgICAvLyBJbXBsZW1lbnRzIHNjb3BlZCB0
cmFjZS4KIGNsYXNzIFRlc3RJbmZvSW1wbDsgICAgICAgICAgICAgICAgICAgIC8vIE9wYXF1ZSBp
bXBsZW1lbnRhdGlvbiBvZiBUZXN0SW5mbwogY2xhc3MgVW5pdFRlc3RJbXBsOyAgICAgICAgICAg
ICAgICAgICAgLy8gT3BhcXVlIGltcGxlbWVudGF0aW9uIG9mIFVuaXRUZXN0CiAKLS8vIEhvdyBt
YW55IHRpbWVzIEluaXRHb29nbGVUZXN0KCkgaGFzIGJlZW4gY2FsbGVkLgotZXh0ZXJuIGludCBn
X2luaXRfZ3Rlc3RfY291bnQ7Ci0KIC8vIFRoZSB0ZXh0IHVzZWQgaW4gZmFpbHVyZSBtZXNzYWdl
cyB0byBpbmRpY2F0ZSB0aGUgc3RhcnQgb2YgdGhlCiAvLyBzdGFjayB0cmFjZS4KIEdURVNUX0FQ
SV8gZXh0ZXJuIGNvbnN0IGNoYXIga1N0YWNrVHJhY2VNYXJrZXJbXTsKIAotLy8gQSBzZWNyZXQg
dHlwZSB0aGF0IEdvb2dsZSBUZXN0IHVzZXJzIGRvbid0IGtub3cgYWJvdXQuICBJdCBoYXMgbm8K
LS8vIGRlZmluaXRpb24gb24gcHVycG9zZS4gIFRoZXJlZm9yZSBpdCdzIGltcG9zc2libGUgdG8g
Y3JlYXRlIGEKLS8vIFNlY3JldCBvYmplY3QsIHdoaWNoIGlzIHdoYXQgd2Ugd2FudC4KLWNsYXNz
IFNlY3JldDsKLQogLy8gVHdvIG92ZXJsb2FkZWQgaGVscGVycyBmb3IgY2hlY2tpbmcgYXQgY29t
cGlsZSB0aW1lIHdoZXRoZXIgYW4KIC8vIGV4cHJlc3Npb24gaXMgYSBudWxsIHBvaW50ZXIgbGl0
ZXJhbCAoaS5lLiBOVUxMIG9yIGFueSAwLXZhbHVlZAogLy8gY29tcGlsZS10aW1lIGludGVncmFs
IGNvbnN0YW50KS4gIFRoZWlyIHJldHVybiB2YWx1ZXMgaGF2ZQpAQCAtMTUwLDEyNyArMTI5LDY1
IEBAIGNoYXIgKCZJc051bGxMaXRlcmFsSGVscGVyKC4uLikpWzJdOyAgLy8gTk9MSU5UCiAjaWZk
ZWYgR1RFU1RfRUxMSVBTSVNfTkVFRFNfUE9EXwogLy8gV2UgbG9zZSBzdXBwb3J0IGZvciBOVUxM
IGRldGVjdGlvbiB3aGVyZSB0aGUgY29tcGlsZXIgZG9lc24ndCBsaWtlCiAvLyBwYXNzaW5nIG5v
bi1QT0QgY2xhc3NlcyB0aHJvdWdoIGVsbGlwc2lzICguLi4pLgotI2RlZmluZSBHVEVTVF9JU19O
VUxMX0xJVEVSQUxfKHgpIGZhbHNlCisjIGRlZmluZSBHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHgp
IGZhbHNlCiAjZWxzZQotI2RlZmluZSBHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHgpIFwKKyMgZGVm
aW5lIEdURVNUX0lTX05VTExfTElURVJBTF8oeCkgXAogICAgIChzaXplb2YoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6SXNOdWxsTGl0ZXJhbEhlbHBlcih4KSkgPT0gMSkKICNlbmRpZiAgLy8gR1RFU1Rf
RUxMSVBTSVNfTkVFRFNfUE9EXwogCiAvLyBBcHBlbmRzIHRoZSB1c2VyLXN1cHBsaWVkIG1lc3Nh
Z2UgdG8gdGhlIEdvb2dsZS1UZXN0LWdlbmVyYXRlZCBtZXNzYWdlLgotR1RFU1RfQVBJXyBTdHJp
bmcgQXBwZW5kVXNlck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBndGVzdF9tc2csCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNZXNzYWdlJiB1c2VyX21zZyk7Ci0KLS8v
IEEgaGVscGVyIGNsYXNzIGZvciBjcmVhdGluZyBzY29wZWQgdHJhY2VzIGluIHVzZXIgcHJvZ3Jh
bXMuCi1jbGFzcyBHVEVTVF9BUElfIFNjb3BlZFRyYWNlIHsKLSBwdWJsaWM6Ci0gIC8vIFRoZSBj
J3RvciBwdXNoZXMgdGhlIGdpdmVuIHNvdXJjZSBmaWxlIGxvY2F0aW9uIGFuZCBtZXNzYWdlIG9u
dG8KLSAgLy8gYSB0cmFjZSBzdGFjayBtYWludGFpbmVkIGJ5IEdvb2dsZSBUZXN0LgotICBTY29w
ZWRUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgTWVzc2FnZSYgbWVzc2Fn
ZSk7Ci0KLSAgLy8gVGhlIGQndG9yIHBvcHMgdGhlIGluZm8gcHVzaGVkIGJ5IHRoZSBjJ3Rvci4K
LSAgLy8KLSAgLy8gTm90ZSB0aGF0IHRoZSBkJ3RvciBpcyBub3QgdmlydHVhbCBpbiBvcmRlciB0
byBiZSBlZmZpY2llbnQuCi0gIC8vIERvbid0IGluaGVyaXQgZnJvbSBTY29wZWRUcmFjZSEKLSAg
flNjb3BlZFRyYWNlKCk7Ci0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKFNjb3BlZFRyYWNlKTsKLX0gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF87ICAvLyBBIFNj
b3BlZFRyYWNlIG9iamVjdCBkb2VzIGl0cyBqb2IgaW4gaXRzCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gYyd0b3IgYW5kIGQndG9yLiAgVGhlcmVmb3JlIGl0IGRvZXNuJ3QKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBuZWVkIHRvIGJlIHVzZWQgb3RoZXJ3aXNlLgotCi0v
LyBDb252ZXJ0cyBhIHN0cmVhbWFibGUgdmFsdWUgdG8gYSBTdHJpbmcuICBBIE5VTEwgcG9pbnRl
ciBpcwotLy8gY29udmVydGVkIHRvICIobnVsbCkiLiAgV2hlbiB0aGUgaW5wdXQgdmFsdWUgaXMg
YSA6OnN0cmluZywKLS8vIDo6c3RkOjpzdHJpbmcsIDo6d3N0cmluZywgb3IgOjpzdGQ6OndzdHJp
bmcgb2JqZWN0LCBlYWNoIE5VTAotLy8gY2hhcmFjdGVyIGluIGl0IGlzIHJlcGxhY2VkIHdpdGgg
IlxcMCIuCi0vLyBEZWNsYXJlZCBoZXJlIGJ1dCBkZWZpbmVkIGluIGd0ZXN0LmgsIHNvIHRoYXQg
aXQgaGFzIGFjY2VzcwotLy8gdG8gdGhlIGRlZmluaXRpb24gb2YgdGhlIE1lc3NhZ2UgY2xhc3Ms
IHJlcXVpcmVkIGJ5IHRoZSBBUk0KLS8vIGNvbXBpbGVyLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1TdHJpbmcgU3RyZWFtYWJsZVRvU3RyaW5nKGNvbnN0IFQmIHN0cmVhbWFibGUpOwotCi0vLyBG
b3JtYXRzIGEgdmFsdWUgdG8gYmUgdXNlZCBpbiBhIGZhaWx1cmUgbWVzc2FnZS4KLQotI2lmZGVm
IEdURVNUX05FRURTX0lTX1BPSU5URVJfCi0KLS8vIFRoZXNlIGFyZSBuZWVkZWQgYXMgdGhlIE5v
a2lhIFN5bWJpYW4gYW5kIElCTSBYTCBDL0MrKyBjb21waWxlcnMKLS8vIGNhbm5vdCBkZWNpZGUg
YmV0d2VlbiBjb25zdCBUJiBhbmQgY29uc3QgVCogaW4gYSBmdW5jdGlvbiB0ZW1wbGF0ZS4KLS8v
IFRoZXNlIGNvbXBpbGVycyBfY2FuXyBkZWNpZGUgYmV0d2VlbiBjbGFzcyB0ZW1wbGF0ZSBzcGVj
aWFsaXphdGlvbnMKLS8vIGZvciBUIGFuZCBUKiwgc28gYSB0cjE6OnR5cGVfdHJhaXRzLWxpa2Ug
aXNfcG9pbnRlciB3b3JrcywgYW5kIHdlCi0vLyBjYW4gb3ZlcmxvYWQgb24gdGhhdC4KK0dURVNU
X0FQSV8gc3RkOjpzdHJpbmcgQXBwZW5kVXNlck1lc3NhZ2UoCisgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIGd0ZXN0X21zZywgY29uc3QgTWVzc2FnZSYgdXNlcl9tc2cpOwogCi0vLyBUaGlzIG92ZXJs
b2FkIG1ha2VzIHN1cmUgdGhhdCBhbGwgcG9pbnRlcnMgKGluY2x1ZGluZwotLy8gdGhvc2UgdG8g
Y2hhciBvciB3Y2hhcl90KSBhcmUgcHJpbnRlZCBhcyByYXcgcG9pbnRlcnMuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLWlubGluZSBTdHJpbmcgRm9ybWF0VmFsdWVGb3JGYWlsdXJlTWVzc2FnZShp
bnRlcm5hbDo6dHJ1ZV90eXBlIC8qZHVtbXkqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUKiBwb2ludGVyKSB7Ci0gIHJldHVybiBTdHJlYW1hYmxlVG9TdHJp
bmcoc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHBvaW50ZXIpKTsKLX0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1pbmxpbmUgU3RyaW5nIEZvcm1hdFZhbHVlRm9yRmFpbHVyZU1lc3NhZ2UoaW50
ZXJuYWw6OmZhbHNlX3R5cGUgLypkdW1teSovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFQmIHZhbHVlKSB7Ci0gIHJldHVybiBTdHJlYW1hYmxlVG9T
dHJpbmcodmFsdWUpOwotfQorI2lmIEdURVNUX0hBU19FWENFUFRJT05TCiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotaW5saW5lIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjb25zdCBU
JiB2YWx1ZSkgewotICByZXR1cm4gRm9ybWF0VmFsdWVGb3JGYWlsdXJlTWVzc2FnZSgKLSAgICAg
IHR5cGVuYW1lIGludGVybmFsOjppc19wb2ludGVyPFQ+Ojp0eXBlKCksIHZhbHVlKTsKLX0KK0dU
RVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQyNzUgXAorLyogYW4gZXhwb3J0ZWQgY2xh
c3Mgd2FzIGRlcml2ZWQgZnJvbSBhIGNsYXNzIHRoYXQgd2FzIG5vdCBleHBvcnRlZCAqLykKIAot
I2Vsc2UKKy8vIFRoaXMgZXhjZXB0aW9uIGlzIHRocm93biBieSAoYW5kIG9ubHkgYnkpIGEgZmFp
bGVkIEdvb2dsZSBUZXN0CisvLyBhc3NlcnRpb24gd2hlbiBHVEVTVF9GTEFHKHRocm93X29uX2Zh
aWx1cmUpIGlzIHRydWUgKGlmIGV4Y2VwdGlvbnMKKy8vIGFyZSBlbmFibGVkKS4gIFdlIGRlcml2
ZSBpdCBmcm9tIHN0ZDo6cnVudGltZV9lcnJvciwgd2hpY2ggaXMgZm9yCisvLyBlcnJvcnMgcHJl
c3VtYWJseSBkZXRlY3RhYmxlIG9ubHkgYXQgcnVuIHRpbWUuICBTaW5jZQorLy8gc3RkOjpydW50
aW1lX2Vycm9yIGluaGVyaXRzIGZyb20gc3RkOjpleGNlcHRpb24sIG1hbnkgdGVzdGluZworLy8g
ZnJhbWV3b3JrcyBrbm93IGhvdyB0byBleHRyYWN0IGFuZCBwcmludCB0aGUgbWVzc2FnZSBpbnNp
ZGUgaXQuCitjbGFzcyBHVEVTVF9BUElfIEdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uIDogcHVi
bGljIDo6c3RkOjpydW50aW1lX2Vycm9yIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEdvb2dsZVRl
c3RGYWlsdXJlRXhjZXB0aW9uKGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBmYWlsdXJlKTsKK307CiAK
LS8vIFRoZXNlIGFyZSBuZWVkZWQgYXMgdGhlIGFib3ZlIHNvbHV0aW9uIHVzaW5nIGlzX3BvaW50
ZXIgaGFzIHRoZQotLy8gbGltaXRhdGlvbiB0aGF0IFQgY2Fubm90IGJlIGEgdHlwZSB3aXRob3V0
IGV4dGVybmFsIGxpbmthZ2UsIHdoZW4KLS8vIGNvbXBpbGVkIHVzaW5nIE1TVkMuCitHVEVTVF9E
SVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkgIC8vICA0Mjc1CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotaW5saW5lIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjb25zdCBUJiB2YWx1
ZSkgewotICByZXR1cm4gU3RyZWFtYWJsZVRvU3RyaW5nKHZhbHVlKTsKLX0KKyNlbmRpZiAgLy8g
R1RFU1RfSEFTX0VYQ0VQVElPTlMKIAotLy8gVGhpcyBvdmVybG9hZCBtYWtlcyBzdXJlIHRoYXQg
YWxsIHBvaW50ZXJzIChpbmNsdWRpbmcKLS8vIHRob3NlIHRvIGNoYXIgb3Igd2NoYXJfdCkgYXJl
IHByaW50ZWQgYXMgcmF3IHBvaW50ZXJzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUg
U3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKFQqIHBvaW50ZXIpIHsKLSAgcmV0dXJuIFN0
cmVhbWFibGVUb1N0cmluZyhzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4ocG9pbnRlcikpOwotfQor
bmFtZXNwYWNlIGVkaXRfZGlzdGFuY2UgeworLy8gUmV0dXJucyB0aGUgb3B0aW1hbCBlZGl0cyB0
byBnbyBmcm9tICdsZWZ0JyB0byAncmlnaHQnLgorLy8gQWxsIGVkaXRzIGNvc3QgdGhlIHNhbWUs
IHdpdGggcmVwbGFjZSBoYXZpbmcgbG93ZXIgcHJpb3JpdHkgdGhhbgorLy8gYWRkL3JlbW92ZS4K
Ky8vIFNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgV2FnbmVyLUZpc2NoZXIgYWxnb3JpdGht
LgorLy8gU2VlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2FnbmVyLUZpc2NoZXJfYWxn
b3JpdGhtCitlbnVtIEVkaXRUeXBlIHsga01hdGNoLCBrQWRkLCBrUmVtb3ZlLCBrUmVwbGFjZSB9
OworR1RFU1RfQVBJXyBzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gQ2FsY3VsYXRlT3B0aW1hbEVkaXRz
KAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIGxlZnQsIGNvbnN0IHN0ZDo6dmVjdG9y
PHNpemVfdD4mIHJpZ2h0KTsKIAotI2VuZGlmICAvLyBHVEVTVF9ORUVEU19JU19QT0lOVEVSXwot
Ci0vLyBUaGVzZSBvdmVybG9hZGVkIHZlcnNpb25zIGhhbmRsZSBuYXJyb3cgYW5kIHdpZGUgY2hh
cmFjdGVycy4KLUdURVNUX0FQSV8gU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKGNoYXIg
Y2gpOwotR1RFU1RfQVBJXyBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2Uod2NoYXJfdCB3
Y2hhcik7Ci0KLS8vIFdoZW4gdGhpcyBvcGVyYW5kIGlzIGEgY29uc3QgY2hhciogb3IgY2hhcios
IGFuZCB0aGUgb3RoZXIgb3BlcmFuZAotLy8gaXMgYSA6OnN0ZDo6c3RyaW5nIG9yIDo6c3RyaW5n
LCB3ZSBwcmludCB0aGlzIG9wZXJhbmQgYXMgYSBDIHN0cmluZwotLy8gcmF0aGVyIHRoYW4gYSBw
b2ludGVyLiAgV2UgZG8gdGhlIHNhbWUgZm9yIHdpZGUgc3RyaW5ncy4KLQotLy8gVGhpcyBpbnRl
cm5hbCBtYWNybyBpcyB1c2VkIHRvIGF2b2lkIGR1cGxpY2F0ZWQgY29kZS4KLSNkZWZpbmUgR1RF
U1RfRk9STUFUX0lNUExfKG9wZXJhbmQyX3R5cGUsIG9wZXJhbmQxX3ByaW50ZXIpXAotaW5saW5l
IFN0cmluZyBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoXAotICAgIG9wZXJhbmQy
X3R5cGU6OnZhbHVlX3R5cGUqIHN0ciwgY29uc3Qgb3BlcmFuZDJfdHlwZSYgLypvcGVyYW5kMiov
KSB7XAotICByZXR1cm4gb3BlcmFuZDFfcHJpbnRlcihzdHIpO1wKLX1cCi1pbmxpbmUgU3RyaW5n
IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShcCi0gICAgY29uc3Qgb3BlcmFuZDJf
dHlwZTo6dmFsdWVfdHlwZSogc3RyLCBjb25zdCBvcGVyYW5kMl90eXBlJiAvKm9wZXJhbmQyKi8p
IHtcCi0gIHJldHVybiBvcGVyYW5kMV9wcmludGVyKHN0cik7XAotfQorLy8gU2FtZSBhcyBhYm92
ZSwgYnV0IHRoZSBpbnB1dCBpcyByZXByZXNlbnRlZCBhcyBzdHJpbmdzLgorR1RFU1RfQVBJXyBz
dGQ6OnZlY3RvcjxFZGl0VHlwZT4gQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKAorICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgbGVmdCwKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4mIHJpZ2h0KTsKIAotR1RFU1RfRk9STUFUX0lNUExfKDo6c3RkOjpzdHJpbmcsIFN0
cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQpCi0jaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCi1HVEVT
VF9GT1JNQVRfSU1QTF8oOjpzdGQ6OndzdHJpbmcsIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVv
dGVkKQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKKy8vIENyZWF0ZSBhIGRpZmYg
b2YgdGhlIGlucHV0IHN0cmluZ3MgaW4gVW5pZmllZCBkaWZmIGZvcm1hdC4KK0dURVNUX0FQSV8g
c3RkOjpzdHJpbmcgQ3JlYXRlVW5pZmllZERpZmYoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+JiBsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgY29udGV4dCA9IDIpOwogCi0jaWYgR1RFU1RfSEFT
X0dMT0JBTF9TVFJJTkcKLUdURVNUX0ZPUk1BVF9JTVBMXyg6OnN0cmluZywgU3RyaW5nOjpTaG93
Q1N0cmluZ1F1b3RlZCkKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLSNpZiBH
VEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKLUdURVNUX0ZPUk1BVF9JTVBMXyg6OndzdHJpbmcsIFN0
cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVvdGVkKQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFM
X1dTVFJJTkcKK30gIC8vIG5hbWVzcGFjZSBlZGl0X2Rpc3RhbmNlCiAKLSN1bmRlZiBHVEVTVF9G
T1JNQVRfSU1QTF8KKy8vIENhbGN1bGF0ZSB0aGUgZGlmZiBiZXR3ZWVuICdsZWZ0JyBhbmQgJ3Jp
Z2h0JyBhbmQgcmV0dXJuIGl0IGluIHVuaWZpZWQgZGlmZgorLy8gZm9ybWF0LgorLy8gSWYgbm90
IG51bGwsIHN0b3JlcyBpbiAndG90YWxfbGluZV9jb3VudCcgdGhlIHRvdGFsIG51bWJlciBvZiBs
aW5lcyBmb3VuZAorLy8gaW4gbGVmdCArIHJpZ2h0LgorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBE
aWZmU3RyaW5ncyhjb25zdCBzdGQ6OnN0cmluZyYgbGVmdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHJpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QqIHRvdGFsX2xpbmVfY291bnQpOwogCiAvLyBDb25z
dHJ1Y3RzIGFuZCByZXR1cm5zIHRoZSBtZXNzYWdlIGZvciBhbiBlcXVhbGl0eSBhc3NlcnRpb24K
IC8vIChlLmcuIEFTU0VSVF9FUSwgRVhQRUNUX1NUUkVRLCBldGMpIGZhaWx1cmUuCkBAIC0yODks
MTIgKzIwNiwxMiBAQCBHVEVTVF9GT1JNQVRfSU1QTF8oOjp3c3RyaW5nLCBTdHJpbmc6OlNob3dX
aWRlQ1N0cmluZ1F1b3RlZCkKIC8vIGJlIGluc2VydGVkIGludG8gdGhlIG1lc3NhZ2UuCiBHVEVT
VF9BUElfIEFzc2VydGlvblJlc3VsdCBFcUZhaWx1cmUoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhw
cmVzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBTdHJpbmcmIGV4cGVjdGVkX3ZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgYWN0dWFsX3ZhbHVlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBleHBlY3RlZF92YWx1ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
YWN0dWFsX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aWdub3JpbmdfY2FzZSk7CiAKIC8vIENvbnN0cnVjdHMgYSBmYWlsdXJlIG1lc3NhZ2UgZm9yIEJv
b2xlYW4gYXNzZXJ0aW9ucyBzdWNoIGFzIEVYUEVDVF9UUlVFLgotR1RFU1RfQVBJXyBTdHJpbmcg
R2V0Qm9vbEFzc2VydGlvbkZhaWx1cmVNZXNzYWdlKAorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBH
ZXRCb29sQXNzZXJ0aW9uRmFpbHVyZU1lc3NhZ2UoCiAgICAgY29uc3QgQXNzZXJ0aW9uUmVzdWx0
JiBhc3NlcnRpb25fcmVzdWx0LAogICAgIGNvbnN0IGNoYXIqIGV4cHJlc3Npb25fdGV4dCwKICAg
ICBjb25zdCBjaGFyKiBhY3R1YWxfcHJlZGljYXRlX3ZhbHVlLApAQCAtMzY5LDcgKzI4Niw3IEBA
IGNsYXNzIEZsb2F0aW5nUG9pbnQgewogICAvLyBiaXRzLiAgVGhlcmVmb3JlLCA0IHNob3VsZCBi
ZSBlbm91Z2ggZm9yIG9yZGluYXJ5IHVzZS4KICAgLy8KICAgLy8gU2VlIHRoZSBmb2xsb3dpbmcg
YXJ0aWNsZSBmb3IgbW9yZSBkZXRhaWxzIG9uIFVMUDoKLSAgLy8gaHR0cDovL3d3dy5jeWdudXMt
c29mdHdhcmUuY29tL3BhcGVycy9jb21wYXJpbmdmbG9hdHMvY29tcGFyaW5nZmxvYXRzLmh0bS4K
KyAgLy8gaHR0cDovL3JhbmRvbWFzY2lpLndvcmRwcmVzcy5jb20vMjAxMi8wMi8yNS9jb21wYXJp
bmctZmxvYXRpbmctcG9pbnQtbnVtYmVycy0yMDEyLWVkaXRpb24vCiAgIHN0YXRpYyBjb25zdCBz
aXplX3Qga01heFVscHMgPSA0OwogCiAgIC8vIENvbnN0cnVjdHMgYSBGbG9hdGluZ1BvaW50IGZy
b20gYSByYXcgZmxvYXRpbmctcG9pbnQgbnVtYmVyLgpAQCAtMzk2LDYgKzMxMyw5IEBAIGNsYXNz
IEZsb2F0aW5nUG9pbnQgewogICAgIHJldHVybiBSZWludGVycHJldEJpdHMoa0V4cG9uZW50Qml0
TWFzayk7CiAgIH0KIAorICAvLyBSZXR1cm5zIHRoZSBtYXhpbXVtIHJlcHJlc2VudGFibGUgZmlu
aXRlIGZsb2F0aW5nLXBvaW50IG51bWJlci4KKyAgc3RhdGljIFJhd1R5cGUgTWF4KCk7CisKICAg
Ly8gTm9uLXN0YXRpYyBtZXRob2RzCiAKICAgLy8gUmV0dXJucyB0aGUgYml0cyB0aGF0IHJlcHJl
c2VudHMgdGhpcyBudW1iZXIuCkBAIC00NzYsNiArMzk2LDEzIEBAIGNsYXNzIEZsb2F0aW5nUG9p
bnQgewogICBGbG9hdGluZ1BvaW50VW5pb24gdV87CiB9OwogCisvLyBXZSBjYW5ub3QgdXNlIHN0
ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpIGFzIGl0IGNsYXNoZXMgd2l0aCB0aGUgbWF4KCkK
Ky8vIG1hY3JvIGRlZmluZWQgYnkgPHdpbmRvd3MuaD4uCit0ZW1wbGF0ZSA8PgoraW5saW5lIGZs
b2F0IEZsb2F0aW5nUG9pbnQ8ZmxvYXQ+OjpNYXgoKSB7IHJldHVybiBGTFRfTUFYOyB9Cit0ZW1w
bGF0ZSA8PgoraW5saW5lIGRvdWJsZSBGbG9hdGluZ1BvaW50PGRvdWJsZT46Ok1heCgpIHsgcmV0
dXJuIERCTF9NQVg7IH0KKwogLy8gVHlwZWRlZnMgdGhlIGluc3RhbmNlcyBvZiB0aGUgRmxvYXRp
bmdQb2ludCB0ZW1wbGF0ZSBjbGFzcyB0aGF0IHdlCiAvLyBjYXJlIHRvIHVzZS4KIHR5cGVkZWYg
RmxvYXRpbmdQb2ludDxmbG9hdD4gRmxvYXQ7CkBAIC01NTgsMjQgKzQ4NSwxOCBAQCBHVEVTVF9B
UElfIEFzc2VydGlvblJlc3VsdCBJc0hSRVNVTFRGYWlsdXJlKGNvbnN0IGNoYXIqIGV4cHIsCiAK
ICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCi0vLyBGb3JtYXRzIGEgc291cmNlIGZpbGUg
cGF0aCBhbmQgYSBsaW5lIG51bWJlciBhcyB0aGV5IHdvdWxkIGFwcGVhcgotLy8gaW4gYSBjb21w
aWxlciBlcnJvciBtZXNzYWdlLgotaW5saW5lIFN0cmluZyBGb3JtYXRGaWxlTG9jYXRpb24oY29u
c3QgY2hhciogZmlsZSwgaW50IGxpbmUpIHsKLSAgY29uc3QgY2hhciogY29uc3QgZmlsZV9uYW1l
ID0gZmlsZSA9PSBOVUxMID8gInVua25vd24gZmlsZSIgOiBmaWxlOwotICBpZiAobGluZSA8IDAp
IHsKLSAgICByZXR1cm4gU3RyaW5nOjpGb3JtYXQoIiVzOiIsIGZpbGVfbmFtZSk7Ci0gIH0KLSNp
ZmRlZiBfTVNDX1ZFUgotICByZXR1cm4gU3RyaW5nOjpGb3JtYXQoIiVzKCVkKToiLCBmaWxlX25h
bWUsIGxpbmUpOwotI2Vsc2UKLSAgcmV0dXJuIFN0cmluZzo6Rm9ybWF0KCIlczolZDoiLCBmaWxl
X25hbWUsIGxpbmUpOwotI2VuZGlmICAvLyBfTVNDX1ZFUgotfQotCiAvLyBUeXBlcyBvZiBTZXRV
cFRlc3RDYXNlKCkgYW5kIFRlYXJEb3duVGVzdENhc2UoKSBmdW5jdGlvbnMuCiB0eXBlZGVmIHZv
aWQgKCpTZXRVcFRlc3RDYXNlRnVuYykoKTsKIHR5cGVkZWYgdm9pZCAoKlRlYXJEb3duVGVzdENh
c2VGdW5jKSgpOwogCitzdHJ1Y3QgQ29kZUxvY2F0aW9uIHsKKyAgQ29kZUxvY2F0aW9uKGNvbnN0
IHN0ZDo6c3RyaW5nJiBhX2ZpbGUsIGludCBhX2xpbmUpCisgICAgICA6IGZpbGUoYV9maWxlKSwg
bGluZShhX2xpbmUpIHt9CisKKyAgc3RkOjpzdHJpbmcgZmlsZTsKKyAgaW50IGxpbmU7Cit9Owor
CiAvLyBDcmVhdGVzIGEgbmV3IFRlc3RJbmZvIG9iamVjdCBhbmQgcmVnaXN0ZXJzIGl0IHdpdGgg
R29vZ2xlIFRlc3Q7CiAvLyByZXR1cm5zIHRoZSBjcmVhdGVkIG9iamVjdC4KIC8vCkBAIC01ODMs
MTAgKzUwNCwxMSBAQCB0eXBlZGVmIHZvaWQgKCpUZWFyRG93blRlc3RDYXNlRnVuYykoKTsKIC8v
CiAvLyAgIHRlc3RfY2FzZV9uYW1lOiAgIG5hbWUgb2YgdGhlIHRlc3QgY2FzZQogLy8gICBuYW1l
OiAgICAgICAgICAgICBuYW1lIG9mIHRoZSB0ZXN0Ci0vLyAgIHRlc3RfY2FzZV9jb21tZW50OiBh
IGNvbW1lbnQgb24gdGhlIHRlc3QgY2FzZSB0aGF0IHdpbGwgYmUgaW5jbHVkZWQgaW4KLS8vICAg
ICAgICAgICAgICAgICAgICAgIHRoZSB0ZXN0IG91dHB1dAotLy8gICBjb21tZW50OiAgICAgICAg
ICBhIGNvbW1lbnQgb24gdGhlIHRlc3QgdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZQotLy8g
ICAgICAgICAgICAgICAgICAgICB0ZXN0IG91dHB1dAorLy8gICB0eXBlX3BhcmFtICAgICAgICB0
aGUgbmFtZSBvZiB0aGUgdGVzdCdzIHR5cGUgcGFyYW1ldGVyLCBvciBOVUxMIGlmCisvLyAgICAg
ICAgICAgICAgICAgICAgIHRoaXMgaXMgbm90IGEgdHlwZWQgb3IgYSB0eXBlLXBhcmFtZXRlcml6
ZWQgdGVzdC4KKy8vICAgdmFsdWVfcGFyYW0gICAgICAgdGV4dCByZXByZXNlbnRhdGlvbiBvZiB0
aGUgdGVzdCdzIHZhbHVlIHBhcmFtZXRlciwKKy8vICAgICAgICAgICAgICAgICAgICAgb3IgTlVM
TCBpZiB0aGlzIGlzIG5vdCBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LgorLy8gICBjb2RlX2xv
Y2F0aW9uOiAgICBjb2RlIGxvY2F0aW9uIHdoZXJlIHRoZSB0ZXN0IGlzIGRlZmluZWQKIC8vICAg
Zml4dHVyZV9jbGFzc19pZDogSUQgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcwogLy8gICBzZXRf
dXBfdGM6ICAgICAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIHRl
c3QgY2FzZQogLy8gICB0ZWFyX2Rvd25fdGM6ICAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0
aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQpAQCAtNTk0LDggKzUxNiwxMSBAQCB0eXBlZGVm
IHZvaWQgKCpUZWFyRG93blRlc3RDYXNlRnVuYykoKTsKIC8vICAgICAgICAgICAgICAgICAgICAg
VGhlIG5ld2x5IGNyZWF0ZWQgVGVzdEluZm8gaW5zdGFuY2Ugd2lsbCBhc3N1bWUKIC8vICAgICAg
ICAgICAgICAgICAgICAgb3duZXJzaGlwIG9mIHRoZSBmYWN0b3J5IG9iamVjdC4KIEdURVNUX0FQ
SV8gVGVzdEluZm8qIE1ha2VBbmRSZWdpc3RlclRlc3RJbmZvKAotICAgIGNvbnN0IGNoYXIqIHRl
c3RfY2FzZV9uYW1lLCBjb25zdCBjaGFyKiBuYW1lLAotICAgIGNvbnN0IGNoYXIqIHRlc3RfY2Fz
ZV9jb21tZW50LCBjb25zdCBjaGFyKiBjb21tZW50LAorICAgIGNvbnN0IGNoYXIqIHRlc3RfY2Fz
ZV9uYW1lLAorICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgY29uc3QgY2hhciogdHlwZV9wYXJh
bSwKKyAgICBjb25zdCBjaGFyKiB2YWx1ZV9wYXJhbSwKKyAgICBDb2RlTG9jYXRpb24gY29kZV9s
b2NhdGlvbiwKICAgICBUeXBlSWQgZml4dHVyZV9jbGFzc19pZCwKICAgICBTZXRVcFRlc3RDYXNl
RnVuYyBzZXRfdXBfdGMsCiAgICAgVGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3RjLApA
QCAtNjA0LDEwICs1MjksMTMgQEAgR1RFU1RfQVBJXyBUZXN0SW5mbyogTWFrZUFuZFJlZ2lzdGVy
VGVzdEluZm8oCiAvLyBJZiAqcHN0ciBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4LCBtb2Rp
ZmllcyAqcHN0ciB0byBiZSByaWdodAogLy8gcGFzdCB0aGUgcHJlZml4IGFuZCByZXR1cm5zIHRy
dWU7IG90aGVyd2lzZSBsZWF2ZXMgKnBzdHIgdW5jaGFuZ2VkCiAvLyBhbmQgcmV0dXJucyBmYWxz
ZS4gIE5vbmUgb2YgcHN0ciwgKnBzdHIsIGFuZCBwcmVmaXggY2FuIGJlIE5VTEwuCi1ib29sIFNr
aXBQcmVmaXgoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiogcHN0cik7CitHVEVTVF9B
UElfIGJvb2wgU2tpcFByZWZpeChjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IGNoYXIqKiBwc3Ry
KTsKIAogI2lmIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AK
IAorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDI1MSBcCisvKiBjbGFzcyBBIG5l
ZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2VkIGJ5IGNsaWVudHMgb2YgY2xhc3Mg
QiAqLykKKwogLy8gU3RhdGUgb2YgdGhlIGRlZmluaXRpb24gb2YgYSB0eXBlLXBhcmFtZXRlcml6
ZWQgdGVzdCBjYXNlLgogY2xhc3MgR1RFU1RfQVBJXyBUeXBlZFRlc3RDYXNlUFN0YXRlIHsKICBw
dWJsaWM6CkBAIC02MjUsMTAgKzU1MywyMSBAQCBjbGFzcyBHVEVTVF9BUElfIFR5cGVkVGVzdENh
c2VQU3RhdGUgewogICAgICAgZmZsdXNoKHN0ZGVycik7CiAgICAgICBwb3NpeDo6QWJvcnQoKTsK
ICAgICB9Ci0gICAgZGVmaW5lZF90ZXN0X25hbWVzXy5pbnNlcnQodGVzdF9uYW1lKTsKKyAgICBy
ZWdpc3RlcmVkX3Rlc3RzXy5pbnNlcnQoCisgICAgICAgIDo6c3RkOjptYWtlX3BhaXIodGVzdF9u
YW1lLCBDb2RlTG9jYXRpb24oZmlsZSwgbGluZSkpKTsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQog
CisgIGJvb2wgVGVzdEV4aXN0cyhjb25zdCBzdGQ6OnN0cmluZyYgdGVzdF9uYW1lKSBjb25zdCB7
CisgICAgcmV0dXJuIHJlZ2lzdGVyZWRfdGVzdHNfLmNvdW50KHRlc3RfbmFtZSkgPiAwOworICB9
CisKKyAgY29uc3QgQ29kZUxvY2F0aW9uJiBHZXRDb2RlTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJp
bmcmIHRlc3RfbmFtZSkgY29uc3QgeworICAgIFJlZ2lzdGVyZWRUZXN0c01hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSByZWdpc3RlcmVkX3Rlc3RzXy5maW5kKHRlc3RfbmFtZSk7CisgICAgR1RFU1Rf
Q0hFQ0tfKGl0ICE9IHJlZ2lzdGVyZWRfdGVzdHNfLmVuZCgpKTsKKyAgICByZXR1cm4gaXQtPnNl
Y29uZDsKKyAgfQorCiAgIC8vIFZlcmlmaWVzIHRoYXQgcmVnaXN0ZXJlZF90ZXN0cyBtYXRjaCB0
aGUgdGVzdCBuYW1lcyBpbgogICAvLyBkZWZpbmVkX3Rlc3RfbmFtZXNfOyByZXR1cm5zIHJlZ2lz
dGVyZWRfdGVzdHMgaWYgc3VjY2Vzc2Z1bCwgb3IKICAgLy8gYWJvcnRzIHRoZSBwcm9ncmFtIG90
aGVyd2lzZS4KQEAgLTYzNiwxMCArNTc1LDE0IEBAIGNsYXNzIEdURVNUX0FQSV8gVHlwZWRUZXN0
Q2FzZVBTdGF0ZSB7CiAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hh
ciogcmVnaXN0ZXJlZF90ZXN0cyk7CiAKICBwcml2YXRlOgorICB0eXBlZGVmIDo6c3RkOjptYXA8
c3RkOjpzdHJpbmcsIENvZGVMb2NhdGlvbj4gUmVnaXN0ZXJlZFRlc3RzTWFwOworCiAgIGJvb2wg
cmVnaXN0ZXJlZF87Ci0gIDo6c3RkOjpzZXQ8Y29uc3QgY2hhcio+IGRlZmluZWRfdGVzdF9uYW1l
c187CisgIFJlZ2lzdGVyZWRUZXN0c01hcCByZWdpc3RlcmVkX3Rlc3RzXzsKIH07CiAKK0dURVNU
X0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQyNTEKKwogLy8gU2tpcHMgdG8gdGhl
IGZpcnN0IG5vbi1zcGFjZSBjaGFyIGFmdGVyIHRoZSBmaXJzdCBjb21tYSBpbiAnc3RyJzsKIC8v
IHJldHVybnMgTlVMTCBpZiBubyBjb21tYSBpcyBmb3VuZCBpbiAnc3RyJy4KIGlubGluZSBjb25z
dCBjaGFyKiBTa2lwQ29tbWEoY29uc3QgY2hhciogc3RyKSB7CkBAIC02NDcsMTUgKzU5MCw1MSBA
QCBpbmxpbmUgY29uc3QgY2hhciogU2tpcENvbW1hKGNvbnN0IGNoYXIqIHN0cikgewogICBpZiAo
Y29tbWEgPT0gTlVMTCkgewogICAgIHJldHVybiBOVUxMOwogICB9Ci0gIHdoaWxlIChpc3NwYWNl
KCooKytjb21tYSkpKSB7fQorICB3aGlsZSAoSXNTcGFjZSgqKCsrY29tbWEpKSkge30KICAgcmV0
dXJuIGNvbW1hOwogfQogCiAvLyBSZXR1cm5zIHRoZSBwcmVmaXggb2YgJ3N0cicgYmVmb3JlIHRo
ZSBmaXJzdCBjb21tYSBpbiBpdDsgcmV0dXJucwogLy8gdGhlIGVudGlyZSBzdHJpbmcgaWYgaXQg
Y29udGFpbnMgbm8gY29tbWEuCi1pbmxpbmUgU3RyaW5nIEdldFByZWZpeFVudGlsQ29tbWEoY29u
c3QgY2hhciogc3RyKSB7CitpbmxpbmUgc3RkOjpzdHJpbmcgR2V0UHJlZml4VW50aWxDb21tYShj
b25zdCBjaGFyKiBzdHIpIHsKICAgY29uc3QgY2hhciogY29tbWEgPSBzdHJjaHIoc3RyLCAnLCcp
OwotICByZXR1cm4gY29tbWEgPT0gTlVMTCA/IFN0cmluZyhzdHIpIDogU3RyaW5nKHN0ciwgY29t
bWEgLSBzdHIpOworICByZXR1cm4gY29tbWEgPT0gTlVMTCA/IHN0ciA6IHN0ZDo6c3RyaW5nKHN0
ciwgY29tbWEpOworfQorCisvLyBTcGxpdHMgYSBnaXZlbiBzdHJpbmcgb24gYSBnaXZlbiBkZWxp
bWl0ZXIsIHBvcHVsYXRpbmcgYSBnaXZlbgorLy8gdmVjdG9yIHdpdGggdGhlIGZpZWxkcy4KK3Zv
aWQgU3BsaXRTdHJpbmcoY29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyLCBjaGFyIGRlbGltaXRlciwK
KyAgICAgICAgICAgICAgICAgOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4qIGRlc3QpOwor
CisvLyBUaGUgZGVmYXVsdCBhcmd1bWVudCB0byB0aGUgdGVtcGxhdGUgYmVsb3cgZm9yIHRoZSBj
YXNlIHdoZW4gdGhlIHVzZXIgZG9lcworLy8gbm90IHByb3ZpZGUgYSBuYW1lIGdlbmVyYXRvci4K
K3N0cnVjdCBEZWZhdWx0TmFtZUdlbmVyYXRvciB7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgor
ICBzdGF0aWMgc3RkOjpzdHJpbmcgR2V0TmFtZShpbnQgaSkgeworICAgIHJldHVybiBTdHJlYW1h
YmxlVG9TdHJpbmcoaSk7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQcm92aWRlZCA9
IERlZmF1bHROYW1lR2VuZXJhdG9yPgorc3RydWN0IE5hbWVHZW5lcmF0b3JTZWxlY3RvciB7Cisg
IHR5cGVkZWYgUHJvdmlkZWQgdHlwZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBOYW1lR2Vu
ZXJhdG9yPgordm9pZCBHZW5lcmF0ZU5hbWVzUmVjdXJzaXZlbHkoVHlwZXMwLCBzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4qLCBpbnQpIHt9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBOYW1lR2VuZXJh
dG9yLCB0eXBlbmFtZSBUeXBlcz4KK3ZvaWQgR2VuZXJhdGVOYW1lc1JlY3Vyc2l2ZWx5KFR5cGVz
LCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIHJlc3VsdCwgaW50IGkpIHsKKyAgcmVzdWx0LT5w
dXNoX2JhY2soTmFtZUdlbmVyYXRvcjo6dGVtcGxhdGUgR2V0TmFtZTx0eXBlbmFtZSBUeXBlczo6
SGVhZD4oaSkpOworICBHZW5lcmF0ZU5hbWVzUmVjdXJzaXZlbHk8TmFtZUdlbmVyYXRvcj4odHlw
ZW5hbWUgVHlwZXM6OlRhaWwoKSwgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaSArIDEpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTmFtZUdlbmVy
YXRvciwgdHlwZW5hbWUgVHlwZXM+CitzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2VuZXJhdGVO
YW1lcygpIHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHJlc3VsdDsKKyAgR2VuZXJhdGVO
YW1lc1JlY3Vyc2l2ZWx5PE5hbWVHZW5lcmF0b3I+KFR5cGVzKCksICZyZXN1bHQsIDApOworICBy
ZXR1cm4gcmVzdWx0OwogfQogCiAvLyBUeXBlUGFyYW1ldGVyaXplZFRlc3Q8Rml4dHVyZSwgVGVz
dFNlbCwgVHlwZXM+OjpSZWdpc3RlcigpCkBAIC02NzIsOCArNjUxLDEwIEBAIGNsYXNzIFR5cGVQ
YXJhbWV0ZXJpemVkVGVzdCB7CiAgIC8vIHNwZWNpZmllZCBpbiBJTlNUQU5USUFURV9UWVBFRF9U
RVNUX0NBU0VfUChQcmVmaXgsIFRlc3RDYXNlLAogICAvLyBUeXBlcykuICBWYWxpZCB2YWx1ZXMg
Zm9yICdpbmRleCcgYXJlIFswLCBOIC0gMV0gd2hlcmUgTiBpcyB0aGUKICAgLy8gbGVuZ3RoIG9m
IFR5cGVzLgotICBzdGF0aWMgYm9vbCBSZWdpc3Rlcihjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0
IGNoYXIqIGNhc2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGVz
dF9uYW1lcywgaW50IGluZGV4KSB7CisgIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIq
IHByZWZpeCwgY29uc3QgQ29kZUxvY2F0aW9uJiBjb2RlX2xvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBjYXNlX25hbWUsIGNvbnN0IGNoYXIqIHRlc3RfbmFtZXMs
IGludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+JiB0eXBlX25hbWVzID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVy
YXRlTmFtZXM8RGVmYXVsdE5hbWVHZW5lcmF0b3IsIFR5cGVzPigpKSB7CiAgICAgdHlwZWRlZiB0
eXBlbmFtZSBUeXBlczo6SGVhZCBUeXBlOwogICAgIHR5cGVkZWYgRml4dHVyZTxUeXBlPiBGaXh0
dXJlQ2xhc3M7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBHVEVTVF9CSU5EXyhUZXN0U2VsLCBUeXBl
KSBUZXN0Q2xhc3M7CkBAIC02ODEsMTkgKzY2MiwyMyBAQCBjbGFzcyBUeXBlUGFyYW1ldGVyaXpl
ZFRlc3QgewogICAgIC8vIEZpcnN0LCByZWdpc3RlcnMgdGhlIGZpcnN0IHR5cGUtcGFyYW1ldGVy
aXplZCB0ZXN0IGluIHRoZSB0eXBlCiAgICAgLy8gbGlzdC4KICAgICBNYWtlQW5kUmVnaXN0ZXJU
ZXN0SW5mbygKLSAgICAgICAgU3RyaW5nOjpGb3JtYXQoIiVzJXMlcy8lZCIsIHByZWZpeCwgcHJl
Zml4WzBdID09ICdcMCcgPyAiIiA6ICIvIiwKLSAgICAgICAgICAgICAgICAgICAgICAgY2FzZV9u
YW1lLCBpbmRleCkuY19zdHIoKSwKLSAgICAgICAgR2V0UHJlZml4VW50aWxDb21tYSh0ZXN0X25h
bWVzKS5jX3N0cigpLAotICAgICAgICBTdHJpbmc6OkZvcm1hdCgiVHlwZVBhcmFtID0gJXMiLCBH
ZXRUeXBlTmFtZTxUeXBlPigpLmNfc3RyKCkpLmNfc3RyKCksCi0gICAgICAgICIiLAotICAgICAg
ICBHZXRUeXBlSWQ8Rml4dHVyZUNsYXNzPigpLAotICAgICAgICBUZXN0Q2xhc3M6OlNldFVwVGVz
dENhc2UsCi0gICAgICAgIFRlc3RDbGFzczo6VGVhckRvd25UZXN0Q2FzZSwKLSAgICAgICAgbmV3
IFRlc3RGYWN0b3J5SW1wbDxUZXN0Q2xhc3M+KTsKKyAgICAgICAgKHN0ZDo6c3RyaW5nKHByZWZp
eCkgKyAocHJlZml4WzBdID09ICdcMCcgPyAiIiA6ICIvIikgKyBjYXNlX25hbWUgKworICAgICAg
ICAgIi8iICsgdHlwZV9uYW1lc1tpbmRleF0pCisgICAgICAgICAgICAuY19zdHIoKSwKKyAgICAg
ICAgU3RyaXBUcmFpbGluZ1NwYWNlcyhHZXRQcmVmaXhVbnRpbENvbW1hKHRlc3RfbmFtZXMpKS5j
X3N0cigpLAorICAgICAgICBHZXRUeXBlTmFtZTxUeXBlPigpLmNfc3RyKCksCisgICAgICAgIE5V
TEwsICAvLyBObyB2YWx1ZSBwYXJhbWV0ZXIuCisgICAgICAgIGNvZGVfbG9jYXRpb24sIEdldFR5
cGVJZDxGaXh0dXJlQ2xhc3M+KCksIFRlc3RDbGFzczo6U2V0VXBUZXN0Q2FzZSwKKyAgICAgICAg
VGVzdENsYXNzOjpUZWFyRG93blRlc3RDYXNlLCBuZXcgVGVzdEZhY3RvcnlJbXBsPFRlc3RDbGFz
cz4pOwogCiAgICAgLy8gTmV4dCwgcmVjdXJzZXMgKGF0IGNvbXBpbGUgdGltZSkgd2l0aCB0aGUg
dGFpbCBvZiB0aGUgdHlwZSBsaXN0LgotICAgIHJldHVybiBUeXBlUGFyYW1ldGVyaXplZFRlc3Q8
Rml4dHVyZSwgVGVzdFNlbCwgdHlwZW5hbWUgVHlwZXM6OlRhaWw+Ci0gICAgICAgIDo6UmVnaXN0
ZXIocHJlZml4LCBjYXNlX25hbWUsIHRlc3RfbmFtZXMsIGluZGV4ICsgMSk7CisgICAgcmV0dXJu
IFR5cGVQYXJhbWV0ZXJpemVkVGVzdDxGaXh0dXJlLCBUZXN0U2VsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OlRhaWw+OjpSZWdpc3RlcihwcmVmaXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvZGVfbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VfbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dF9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5kZXggKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlX25hbWVzKTsKICAgfQog
fTsKIApAQCAtNzAxLDggKzY4NiwxMSBAQCBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3Qgewog
dGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBGaXh0dXJlLCBjbGFzcyBUZXN0U2VsPgogY2xhc3Mg
VHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIFRlc3RTZWwsIFR5cGVzMD4gewogIHB1Ymxp
YzoKLSAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogLypwcmVmaXgqLywgY29uc3Qg
Y2hhciogLypjYXNlX25hbWUqLywKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
Lyp0ZXN0X25hbWVzKi8sIGludCAvKmluZGV4Ki8pIHsKKyAgc3RhdGljIGJvb2wgUmVnaXN0ZXIo
Y29uc3QgY2hhciogLypwcmVmaXgqLywgY29uc3QgQ29kZUxvY2F0aW9uJiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogLypjYXNlX25hbWUqLywgY29uc3QgY2hhciogLyp0ZXN0
X25hbWVzKi8sCisgICAgICAgICAgICAgICAgICAgICAgIGludCAvKmluZGV4Ki8sCisgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgPQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KCkgLyp0eXBlX25h
bWVzKi8pIHsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQogfTsKQEAgLTcxNCwxNyArNzAyLDM1IEBA
IGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVkVGVzdDxGaXh0dXJlLCBUZXN0U2VsLCBUeXBlczA+IHsK
IHRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gRml4dHVyZSwgdHlwZW5hbWUgVGVzdHMsIHR5cGVu
YW1lIFR5cGVzPgogY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSB7CiAgcHVibGljOgot
ICBzdGF0aWMgYm9vbCBSZWdpc3Rlcihjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IGNoYXIqIGNh
c2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGVzdF9uYW1lcykg
eworICBzdGF0aWMgYm9vbCBSZWdpc3Rlcihjb25zdCBjaGFyKiBwcmVmaXgsIENvZGVMb2NhdGlv
biBjb2RlX2xvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUeXBlZFRlc3RD
YXNlUFN0YXRlKiBzdGF0ZSwgY29uc3QgY2hhciogY2FzZV9uYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiB0ZXN0X25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHR5cGVfbmFtZXMgPQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR2VuZXJhdGVOYW1lczxEZWZhdWx0TmFtZUdlbmVyYXRvciwgVHlwZXM+
KCkpIHsKKyAgICBzdGQ6OnN0cmluZyB0ZXN0X25hbWUgPSBTdHJpcFRyYWlsaW5nU3BhY2VzKAor
ICAgICAgICBHZXRQcmVmaXhVbnRpbENvbW1hKHRlc3RfbmFtZXMpKTsKKyAgICBpZiAoIXN0YXRl
LT5UZXN0RXhpc3RzKHRlc3RfbmFtZSkpIHsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVk
IHRvIGdldCBjb2RlIGxvY2F0aW9uIGZvciB0ZXN0ICVzLiVzIGF0ICVzLiIsCisgICAgICAgICAg
ICAgIGNhc2VfbmFtZSwgdGVzdF9uYW1lLmNfc3RyKCksCisgICAgICAgICAgICAgIEZvcm1hdEZp
bGVMb2NhdGlvbihjb2RlX2xvY2F0aW9uLmZpbGUuY19zdHIoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvZGVfbG9jYXRpb24ubGluZSkuY19zdHIoKSk7CisgICAgICBmZmx1
c2goc3RkZXJyKTsKKyAgICAgIHBvc2l4OjpBYm9ydCgpOworICAgIH0KKyAgICBjb25zdCBDb2Rl
TG9jYXRpb24mIHRlc3RfbG9jYXRpb24gPSBzdGF0ZS0+R2V0Q29kZUxvY2F0aW9uKHRlc3RfbmFt
ZSk7CisKICAgICB0eXBlZGVmIHR5cGVuYW1lIFRlc3RzOjpIZWFkIEhlYWQ7CiAKICAgICAvLyBG
aXJzdCwgcmVnaXN0ZXIgdGhlIGZpcnN0IHRlc3QgaW4gJ1Rlc3QnIGZvciBlYWNoIHR5cGUgaW4g
J1R5cGVzJy4KICAgICBUeXBlUGFyYW1ldGVyaXplZFRlc3Q8Rml4dHVyZSwgSGVhZCwgVHlwZXM+
OjpSZWdpc3RlcigKLSAgICAgICAgcHJlZml4LCBjYXNlX25hbWUsIHRlc3RfbmFtZXMsIDApOwor
ICAgICAgICBwcmVmaXgsIHRlc3RfbG9jYXRpb24sIGNhc2VfbmFtZSwgdGVzdF9uYW1lcywgMCwg
dHlwZV9uYW1lcyk7CiAKICAgICAvLyBOZXh0LCByZWN1cnNlcyAoYXQgY29tcGlsZSB0aW1lKSB3
aXRoIHRoZSB0YWlsIG9mIHRoZSB0ZXN0IGxpc3QuCi0gICAgcmV0dXJuIFR5cGVQYXJhbWV0ZXJp
emVkVGVzdENhc2U8Rml4dHVyZSwgdHlwZW5hbWUgVGVzdHM6OlRhaWwsIFR5cGVzPgotICAgICAg
ICA6OlJlZ2lzdGVyKHByZWZpeCwgY2FzZV9uYW1lLCBTa2lwQ29tbWEodGVzdF9uYW1lcykpOwor
ICAgIHJldHVybiBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlPEZpeHR1cmUsIHR5cGVuYW1lIFRl
c3RzOjpUYWlsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVzPjo6
UmVnaXN0ZXIocHJlZml4LCBjb2RlX2xvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUsIGNhc2VfbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNraXBDb21tYSh0
ZXN0X25hbWVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGVfbmFtZXMpOwogICB9CiB9OwogCkBAIC03MzIsMTUgKzczOCwxOCBAQCBj
bGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlIHsKIHRlbXBsYXRlIDxHVEVTVF9URU1QTEFU
RV8gRml4dHVyZSwgdHlwZW5hbWUgVHlwZXM+CiBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3RD
YXNlPEZpeHR1cmUsIFRlbXBsYXRlczAsIFR5cGVzPiB7CiAgcHVibGljOgotICBzdGF0aWMgYm9v
bCBSZWdpc3Rlcihjb25zdCBjaGFyKiAvKnByZWZpeCovLCBjb25zdCBjaGFyKiAvKmNhc2VfbmFt
ZSovLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKnRlc3RfbmFtZXMqLykg
eworICBzdGF0aWMgYm9vbCBSZWdpc3Rlcihjb25zdCBjaGFyKiAvKnByZWZpeCovLCBjb25zdCBD
b2RlTG9jYXRpb24mLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUeXBlZFRlc3RDYXNl
UFN0YXRlKiAvKnN0YXRlKi8sCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8q
Y2FzZV9uYW1lKi8sIGNvbnN0IGNoYXIqIC8qdGVzdF9uYW1lcyovLAorICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mID0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPigpIC8qdHlwZV9uYW1lcyovKSB7
CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIH07CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVE
X1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAogCi0vLyBSZXR1cm5zIHRoZSBjdXJyZW50
IE9TIHN0YWNrIHRyYWNlIGFzIGEgU3RyaW5nLgorLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBz
dGFjayB0cmFjZSBhcyBhbiBzdGQ6OnN0cmluZy4KIC8vCiAvLyBUaGUgbWF4aW11bSBudW1iZXIg
b2Ygc3RhY2sgZnJhbWVzIHRvIGJlIGluY2x1ZGVkIGlzIHNwZWNpZmllZCBieQogLy8gdGhlIGd0
ZXN0X3N0YWNrX3RyYWNlX2RlcHRoIGZsYWcuICBUaGUgc2tpcF9jb3VudCBwYXJhbWV0ZXIKQEAg
LTc1MCw4ICs3NTksOCBAQCBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlPEZpeHR1cmUs
IFRlbXBsYXRlczAsIFR5cGVzPiB7CiAvLyBGb3IgZXhhbXBsZSwgaWYgRm9vKCkgY2FsbHMgQmFy
KCksIHdoaWNoIGluIHR1cm4gY2FsbHMKIC8vIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRU
b3AoLi4uLCAxKSwgRm9vKCkgd2lsbCBiZSBpbmNsdWRlZCBpbgogLy8gdGhlIHRyYWNlIGJ1dCBC
YXIoKSBhbmQgR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgpIHdvbid0LgotR1RFU1Rf
QVBJXyBTdHJpbmcgR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcChVbml0VGVzdCogdW5p
dF90ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgc2tpcF9jb3VudCk7CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIEdldEN1cnJlbnRPc1N0
YWNrVHJhY2VFeGNlcHRUb3AoCisgICAgVW5pdFRlc3QqIHVuaXRfdGVzdCwgaW50IHNraXBfY291
bnQpOwogCiAvLyBIZWxwZXJzIGZvciBzdXBwcmVzc2luZyB3YXJuaW5ncyBvbiB1bnJlYWNoYWJs
ZSBjb2RlIG9yIGNvbnN0YW50CiAvLyBjb25kaXRpb24uCkBAIC03NjIsNiArNzcxLDE1IEBAIEdU
RVNUX0FQSV8gYm9vbCBBbHdheXNUcnVlKCk7CiAvLyBBbHdheXMgcmV0dXJucyBmYWxzZS4KIGlu
bGluZSBib29sIEFsd2F5c0ZhbHNlKCkgeyByZXR1cm4gIUFsd2F5c1RydWUoKTsgfQogCisvLyBI
ZWxwZXIgZm9yIHN1cHByZXNzaW5nIGZhbHNlIHdhcm5pbmcgZnJvbSBDbGFuZyBvbiBhIGNvbnN0
IGNoYXIqCisvLyB2YXJpYWJsZSBkZWNsYXJlZCBpbiBhIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24g
YWx3YXlzIGJlaW5nIE5VTEwgaW4KKy8vIHRoZSBlbHNlIGJyYW5jaC4KK3N0cnVjdCBHVEVTVF9B
UElfIENvbnN0Q2hhclB0ciB7CisgIENvbnN0Q2hhclB0cihjb25zdCBjaGFyKiBzdHIpIDogdmFs
dWUoc3RyKSB7fQorICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICBj
b25zdCBjaGFyKiB2YWx1ZTsKK307CisKIC8vIEEgc2ltcGxlIExpbmVhciBDb25ncnVlbnRpYWwg
R2VuZXJhdG9yIGZvciBnZW5lcmF0aW5nIHJhbmRvbQogLy8gbnVtYmVycyB3aXRoIGEgdW5pZm9y
bSBkaXN0cmlidXRpb24uICBVbmxpa2UgcmFuZCgpIGFuZCBzcmFuZCgpLCBpdAogLy8gZG9lc24n
dCB1c2UgZ2xvYmFsIHN0YXRlIChhbmQgdGhlcmVmb3JlIGNhbid0IGludGVyZmVyZSB3aXRoIHVz
ZXIKQEAgLTc4NCwxMyArODAyLDQwMyBAQCBjbGFzcyBHVEVTVF9BUElfIFJhbmRvbSB7CiAgIEdU
RVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oUmFuZG9tKTsKIH07CiAKKy8vIERlZmluaW5n
IGEgdmFyaWFibGUgb2YgdHlwZSBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxUMSwgVDI+IHdpbGwg
Y2F1c2UgYQorLy8gY29tcGlsZXIgZXJyb3IgaWZmIFQxIGFuZCBUMiBhcmUgZGlmZmVyZW50IHR5
cGVzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3N0cnVjdCBDb21waWxl
QXNzZXJ0VHlwZXNFcXVhbDsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQ29tcGls
ZUFzc2VydFR5cGVzRXF1YWw8VCwgVD4geworfTsKKworLy8gUmVtb3ZlcyB0aGUgcmVmZXJlbmNl
IGZyb20gYSB0eXBlIGlmIGl0IGlzIGEgcmVmZXJlbmNlIHR5cGUsCisvLyBvdGhlcndpc2UgbGVh
dmVzIGl0IHVuY2hhbmdlZC4gIFRoaXMgaXMgdGhlIHNhbWUgYXMKKy8vIHRyMTo6cmVtb3ZlX3Jl
ZmVyZW5jZSwgd2hpY2ggaXMgbm90IHdpZGVseSBhdmFpbGFibGUgeWV0LgordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitzdHJ1Y3QgUmVtb3ZlUmVmZXJlbmNlIHsgdHlwZWRlZiBUIHR5cGU7IH07ICAv
LyBOT0xJTlQKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IFJlbW92ZVJlZmVyZW5jZTxU
Jj4geyB0eXBlZGVmIFQgdHlwZTsgfTsgIC8vIE5PTElOVAorCisvLyBBIGhhbmR5IHdyYXBwZXIg
YXJvdW5kIFJlbW92ZVJlZmVyZW5jZSB0aGF0IHdvcmtzIHdoZW4gdGhlIGFyZ3VtZW50CisvLyBU
IGRlcGVuZHMgb24gdGVtcGxhdGUgcGFyYW1ldGVycy4KKyNkZWZpbmUgR1RFU1RfUkVNT1ZFX1JF
RkVSRU5DRV8oVCkgXAorICAgIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OlJlbW92ZVJl
ZmVyZW5jZTxUPjo6dHlwZQorCisvLyBSZW1vdmVzIGNvbnN0IGZyb20gYSB0eXBlIGlmIGl0IGlz
IGEgY29uc3QgdHlwZSwgb3RoZXJ3aXNlIGxlYXZlcworLy8gaXQgdW5jaGFuZ2VkLiAgVGhpcyBp
cyB0aGUgc2FtZSBhcyB0cjE6OnJlbW92ZV9jb25zdCwgd2hpY2ggaXMgbm90CisvLyB3aWRlbHkg
YXZhaWxhYmxlIHlldC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IFJlbW92ZUNvbnN0
IHsgdHlwZWRlZiBUIHR5cGU7IH07ICAvLyBOT0xJTlQKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
c3RydWN0IFJlbW92ZUNvbnN0PGNvbnN0IFQ+IHsgdHlwZWRlZiBUIHR5cGU7IH07ICAvLyBOT0xJ
TlQKKworLy8gTVNWQyA4LjAsIFN1biBDKyssIGFuZCBJQk0gWEwgQysrIGhhdmUgYSBidWcgd2hp
Y2ggY2F1c2VzIHRoZSBhYm92ZQorLy8gZGVmaW5pdGlvbiB0byBmYWlsIHRvIHJlbW92ZSB0aGUg
Y29uc3QgaW4gJ2NvbnN0IGludFszXScgYW5kICdjb25zdAorLy8gY2hhclszXVs0XScuICBUaGUg
Zm9sbG93aW5nIHNwZWNpYWxpemF0aW9uIHdvcmtzIGFyb3VuZCB0aGUgYnVnLgordGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHNpemVfdCBOPgorc3RydWN0IFJlbW92ZUNvbnN0PGNvbnN0IFRbTl0+IHsK
KyAgdHlwZWRlZiB0eXBlbmFtZSBSZW1vdmVDb25zdDxUPjo6dHlwZSB0eXBlW05dOworfTsKKwor
I2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSIDwgMTQwMAorLy8gVGhpcyBpcyB0aGUg
b25seSBzcGVjaWFsaXphdGlvbiB0aGF0IGFsbG93cyBWQysrIDcuMSB0byByZW1vdmUgY29uc3Qg
aW4KKy8vICdjb25zdCBpbnRbM10gYW5kICdjb25zdCBpbnRbM11bNF0nLiAgSG93ZXZlciwgaXQg
Y2F1c2VzIHRyb3VibGUgd2l0aCBHQ0MKKy8vIGFuZCB0aHVzIG5lZWRzIHRvIGJlIGNvbmRpdGlv
bmFsbHkgY29tcGlsZWQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitzdHJ1Y3Qg
UmVtb3ZlQ29uc3Q8VFtOXT4geworICB0eXBlZGVmIHR5cGVuYW1lIFJlbW92ZUNvbnN0PFQ+Ojp0
eXBlIHR5cGVbTl07Cit9OworI2VuZGlmCisKKy8vIEEgaGFuZHkgd3JhcHBlciBhcm91bmQgUmVt
b3ZlQ29uc3QgdGhhdCB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudAorLy8gVCBkZXBlbmRzIG9uIHRl
bXBsYXRlIHBhcmFtZXRlcnMuCisjZGVmaW5lIEdURVNUX1JFTU9WRV9DT05TVF8oVCkgXAorICAg
IHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OlJlbW92ZUNvbnN0PFQ+Ojp0eXBlCisKKy8v
IFR1cm5zIGNvbnN0IFUmLCBVJiwgY29uc3QgVSwgYW5kIFUgYWxsIGludG8gVS4KKyNkZWZpbmUg
R1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV9BTkRfQ09OU1RfKFQpIFwKKyAgICBHVEVTVF9SRU1PVkVf
Q09OU1RfKEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfKFQpKQorCisvLyBJbXBsaWNpdGx5Q29udmVy
dGlibGU8RnJvbSwgVG8+Ojp2YWx1ZSBpcyBhIGNvbXBpbGUtdGltZSBib29sCisvLyBjb25zdGFu
dCB0aGF0J3MgdHJ1ZSBpZmYgdHlwZSBGcm9tIGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0
bworLy8gdHlwZSBUby4KK3RlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KK2Ns
YXNzIEltcGxpY2l0bHlDb252ZXJ0aWJsZSB7CisgcHJpdmF0ZToKKyAgLy8gV2UgbmVlZCB0aGUg
Zm9sbG93aW5nIGhlbHBlciBmdW5jdGlvbnMgb25seSBmb3IgdGhlaXIgdHlwZXMuCisgIC8vIFRo
ZXkgaGF2ZSBubyBpbXBsZW1lbnRhdGlvbnMuCisKKyAgLy8gTWFrZUZyb20oKSBpcyBhbiBleHBy
ZXNzaW9uIHdob3NlIHR5cGUgaXMgRnJvbS4gIFdlIGNhbm5vdCBzaW1wbHkKKyAgLy8gdXNlIEZy
b20oKSwgYXMgdGhlIHR5cGUgRnJvbSBtYXkgbm90IGhhdmUgYSBwdWJsaWMgZGVmYXVsdAorICAv
LyBjb25zdHJ1Y3Rvci4KKyAgc3RhdGljIHR5cGVuYW1lIEFkZFJlZmVyZW5jZTxGcm9tPjo6dHlw
ZSBNYWtlRnJvbSgpOworCisgIC8vIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIG92ZXJsb2FkZWQu
ICBHaXZlbiBhbiBleHByZXNzaW9uCisgIC8vIEhlbHBlcih4KSwgdGhlIGNvbXBpbGVyIHdpbGwg
cGljayB0aGUgZmlyc3QgdmVyc2lvbiBpZiB4IGNhbiBiZQorICAvLyBpbXBsaWNpdGx5IGNvbnZl
cnRlZCB0byB0eXBlIFRvOyBvdGhlcndpc2UgaXQgd2lsbCBwaWNrIHRoZQorICAvLyBzZWNvbmQg
dmVyc2lvbi4KKyAgLy8KKyAgLy8gVGhlIGZpcnN0IHZlcnNpb24gcmV0dXJucyBhIHZhbHVlIG9m
IHNpemUgMSwgYW5kIHRoZSBzZWNvbmQKKyAgLy8gdmVyc2lvbiByZXR1cm5zIGEgdmFsdWUgb2Yg
c2l6ZSAyLiAgVGhlcmVmb3JlLCBieSBjaGVja2luZyB0aGUKKyAgLy8gc2l6ZSBvZiBIZWxwZXIo
eCksIHdoaWNoIGNhbiBiZSBkb25lIGF0IGNvbXBpbGUgdGltZSwgd2UgY2FuIHRlbGwKKyAgLy8g
d2hpY2ggdmVyc2lvbiBvZiBIZWxwZXIoKSBpcyB1c2VkLCBhbmQgaGVuY2Ugd2hldGhlciB4IGNh
biBiZQorICAvLyBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0eXBlIFRvLgorICBzdGF0aWMgY2hh
ciBIZWxwZXIoVG8pOworICBzdGF0aWMgY2hhciAoJkhlbHBlciguLi4pKVsyXTsgIC8vIE5PTElO
VAorCisgIC8vIFdlIGhhdmUgdG8gcHV0IHRoZSAncHVibGljJyBzZWN0aW9uIGFmdGVyIHRoZSAn
cHJpdmF0ZScgc2VjdGlvbiwKKyAgLy8gb3IgTVNWQyByZWZ1c2VzIHRvIGNvbXBpbGUgdGhlIGNv
ZGUuCisgcHVibGljOgorI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKQorICAvLyBDKytCdWlsZGVy
IGNhbm5vdCB1c2UgbWVtYmVyIG92ZXJsb2FkIHJlc29sdXRpb24gZHVyaW5nIHRlbXBsYXRlCisg
IC8vIGluc3RhbnRpYXRpb24uICBUaGUgc2ltcGxlc3Qgd29ya2Fyb3VuZCBpcyB0byB1c2UgaXRz
IEMrKzB4IHR5cGUgdHJhaXRzCisgIC8vIGZ1bmN0aW9ucyAoQysrQnVpbGRlciAyMDA5IGFuZCBh
Ym92ZSBvbmx5KS4KKyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBfX2lzX2NvbnZlcnRpYmxl
KEZyb20sIFRvKTsKKyNlbHNlCisgIC8vIE1TVkMgd2FybnMgYWJvdXQgaW1wbGljaXRseSBjb252
ZXJ0aW5nIGZyb20gZG91YmxlIHRvIGludCBmb3IKKyAgLy8gcG9zc2libGUgbG9zcyBvZiBkYXRh
LCBzbyB3ZSBuZWVkIHRvIHRlbXBvcmFyaWx5IGRpc2FibGUgdGhlCisgIC8vIHdhcm5pbmcuCisg
IEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQyNDQpCisgIHN0YXRpYyBjb25zdCBi
b29sIHZhbHVlID0KKyAgICAgIHNpemVvZihIZWxwZXIoSW1wbGljaXRseUNvbnZlcnRpYmxlOjpN
YWtlRnJvbSgpKSkgPT0gMTsKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCisj
ZW5kaWYgIC8vIF9fQk9STEFORENfXworfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBl
bmFtZSBUbz4KK2NvbnN0IGJvb2wgSW1wbGljaXRseUNvbnZlcnRpYmxlPEZyb20sIFRvPjo6dmFs
dWU7CisKKy8vIElzQVByb3RvY29sTWVzc2FnZTxUPjo6dmFsdWUgaXMgYSBjb21waWxlLXRpbWUg
Ym9vbCBjb25zdGFudCB0aGF0J3MKKy8vIHRydWUgaWZmIFQgaXMgdHlwZSBQcm90b2NvbE1lc3Nh
Z2UsIHByb3RvMjo6TWVzc2FnZSwgb3IgYSBzdWJjbGFzcworLy8gb2YgdGhvc2UuCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBJc0FQcm90b2NvbE1lc3NhZ2UKKyAgICA6IHB1YmxpYyBi
b29sX2NvbnN0YW50PAorICBJbXBsaWNpdGx5Q29udmVydGlibGU8Y29uc3QgVCosIGNvbnN0IDo6
UHJvdG9jb2xNZXNzYWdlKj46OnZhbHVlIHx8CisgIEltcGxpY2l0bHlDb252ZXJ0aWJsZTxjb25z
dCBUKiwgY29uc3QgOjpwcm90bzI6Ok1lc3NhZ2UqPjo6dmFsdWU+IHsKK307CisKKy8vIFdoZW4g
dGhlIGNvbXBpbGVyIHNlZXMgZXhwcmVzc2lvbiBJc0NvbnRhaW5lclRlc3Q8Qz4oMCksIGlmIEMg
aXMgYW4KKy8vIFNUTC1zdHlsZSBjb250YWluZXIgY2xhc3MsIHRoZSBmaXJzdCBvdmVybG9hZCBv
ZiBJc0NvbnRhaW5lclRlc3QKKy8vIHdpbGwgYmUgdmlhYmxlIChzaW5jZSBib3RoIEM6Oml0ZXJh
dG9yKiBhbmQgQzo6Y29uc3RfaXRlcmF0b3IqIGFyZQorLy8gdmFsaWQgdHlwZXMgYW5kIE5VTEwg
Y2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIHRoZW0pLiAgSXQgd2lsbAorLy8gYmUgcGlj
a2VkIG92ZXIgdGhlIHNlY29uZCBvdmVybG9hZCBhcyAnaW50JyBpcyBhIHBlcmZlY3QgbWF0Y2gg
Zm9yCisvLyB0aGUgdHlwZSBvZiBhcmd1bWVudCAwLiAgSWYgQzo6aXRlcmF0b3Igb3IgQzo6Y29u
c3RfaXRlcmF0b3IgaXMgbm90CisvLyBhIHZhbGlkIHR5cGUsIHRoZSBmaXJzdCBvdmVybG9hZCBp
cyBub3QgdmlhYmxlLCBhbmQgdGhlIHNlY29uZAorLy8gb3ZlcmxvYWQgd2lsbCBiZSBwaWNrZWQu
ICBUaGVyZWZvcmUsIHdlIGNhbiBkZXRlcm1pbmUgd2hldGhlciBDIGlzCisvLyBhIGNvbnRhaW5l
ciBjbGFzcyBieSBjaGVja2luZyB0aGUgdHlwZSBvZiBJc0NvbnRhaW5lclRlc3Q8Qz4oMCkuCisv
LyBUaGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaXMgaW5zaWduaWZpY2FudC4KKy8vCisvLyBJ
biBDKysxMSBtb2RlIHdlIGNoZWNrIHRoZSBleGlzdGVuY2Ugb2YgYSBjb25zdF9pdGVyYXRvciBh
bmQgdGhhdCBhbgorLy8gaXRlcmF0b3IgaXMgcHJvcGVybHkgaW1wbGVtZW50ZWQgZm9yIHRoZSBj
b250YWluZXIuCisvLworLy8gRm9yIHByZS1DKysxMSB0aGF0IHdlIGxvb2sgZm9yIGJvdGggQzo6
aXRlcmF0b3IgYW5kIEM6OmNvbnN0X2l0ZXJhdG9yLgorLy8gVGhlIHJlYXNvbiBpcyB0aGF0IEMr
KyBpbmplY3RzIHRoZSBuYW1lIG9mIGEgY2xhc3MgYXMgYSBtZW1iZXIgb2YgdGhlCisvLyBjbGFz
cyBpdHNlbGYgKGUuZy4geW91IGNhbiByZWZlciB0byBjbGFzcyBpdGVyYXRvciBhcyBlaXRoZXIK
Ky8vICdpdGVyYXRvcicgb3IgJ2l0ZXJhdG9yOjppdGVyYXRvcicpLiAgSWYgd2UgbG9vayBmb3Ig
Qzo6aXRlcmF0b3IKKy8vIG9ubHksIGZvciBleGFtcGxlLCB3ZSB3b3VsZCBtaXN0YWtlbmx5IHRo
aW5rIHRoYXQgYSBjbGFzcyBuYW1lZAorLy8gaXRlcmF0b3IgaXMgYW4gU1RMIGNvbnRhaW5lci4K
Ky8vCisvLyBBbHNvIG5vdGUgdGhhdCB0aGUgc2ltcGxlciBhcHByb2FjaCBvZiBvdmVybG9hZGlu
ZworLy8gSXNDb250YWluZXJUZXN0KHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yKikgYW5kCisv
LyBJc0NvbnRhaW5lclRlc3QoLi4uKSBkb2Vzbid0IHdvcmsgd2l0aCBWaXN1YWwgQWdlIEMrKyBh
bmQgU3VuIEMrKy4KK3R5cGVkZWYgaW50IElzQ29udGFpbmVyOworI2lmIEdURVNUX0xBTkdfQ1hY
MTEKK3RlbXBsYXRlIDxjbGFzcyBDLAorICAgICAgICAgIGNsYXNzIEl0ZXJhdG9yID0gZGVjbHR5
cGUoOjpzdGQ6OmRlY2x2YWw8Y29uc3QgQyY+KCkuYmVnaW4oKSksCisgICAgICAgICAgY2xhc3Mg
PSBkZWNsdHlwZSg6OnN0ZDo6ZGVjbHZhbDxjb25zdCBDJj4oKS5lbmQoKSksCisgICAgICAgICAg
Y2xhc3MgPSBkZWNsdHlwZSgrKzo6c3RkOjpkZWNsdmFsPEl0ZXJhdG9yJj4oKSksCisgICAgICAg
ICAgY2xhc3MgPSBkZWNsdHlwZSgqOjpzdGQ6OmRlY2x2YWw8SXRlcmF0b3I+KCkpLAorICAgICAg
ICAgIGNsYXNzID0gdHlwZW5hbWUgQzo6Y29uc3RfaXRlcmF0b3I+CitJc0NvbnRhaW5lciBJc0Nv
bnRhaW5lclRlc3QoaW50IC8qIGR1bW15ICovKSB7CisgIHJldHVybiAwOworfQorI2Vsc2UKK3Rl
bXBsYXRlIDxjbGFzcyBDPgorSXNDb250YWluZXIgSXNDb250YWluZXJUZXN0KGludCAvKiBkdW1t
eSAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDOjppdGVyYXRvciog
LyogaXQgKi8gPSBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIEM6
OmNvbnN0X2l0ZXJhdG9yKiAvKiBjb25zdF9pdCAqLyA9IE5VTEwpIHsKKyAgcmV0dXJuIDA7Cit9
CisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKwordHlwZWRlZiBjaGFyIElzTm90Q29udGFp
bmVyOwordGVtcGxhdGUgPGNsYXNzIEM+CitJc05vdENvbnRhaW5lciBJc0NvbnRhaW5lclRlc3Qo
bG9uZyAvKiBkdW1teSAqLykgeyByZXR1cm4gJ1wwJzsgfQorCisvLyBUcmFpdCB0byBkZXRlY3Qg
d2hldGhlciBhIHR5cGUgVCBpcyBhIGhhc2ggdGFibGUuCisvLyBUaGUgaGV1cmlzdGljIHVzZWQg
aXMgdGhhdCB0aGUgdHlwZSBjb250YWlucyBhbiBpbm5lciB0eXBlIGBoYXNoZXJgIGFuZCBkb2Vz
CisvLyBub3QgY29udGFpbiBhbiBpbm5lciB0eXBlIGByZXZlcnNlX2l0ZXJhdG9yYC4KKy8vIElm
IHRoZSBjb250YWluZXIgaXMgaXRlcmFibGUgaW4gcmV2ZXJzZSwgdGhlbiBvcmRlciBtaWdodCBh
Y3R1YWxseSBtYXR0ZXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBJc0hhc2hUYWJs
ZSB7CisgcHJpdmF0ZToKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIHN0YXRpYyBjaGFyIHRl
c3QodHlwZW5hbWUgVTo6aGFzaGVyKiwgdHlwZW5hbWUgVTo6cmV2ZXJzZV9pdGVyYXRvciopOwor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgc3RhdGljIGludCB0ZXN0KHR5cGVuYW1lIFU6Omhh
c2hlciosIC4uLik7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICBzdGF0aWMgY2hhciB0ZXN0
KC4uLik7CisKKyBwdWJsaWM6CisgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gc2l6ZW9mKHRl
c3Q8VD4oMCwgMCkpID09IHNpemVvZihpbnQpOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Citjb25zdCBib29sIElzSGFzaFRhYmxlPFQ+Ojp2YWx1ZTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK3N0cnVjdCBWb2lkVCB7CisgICAgdHlwZWRlZiB2b2lkIHZhbHVlX3R5cGU7Cit9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPgorc3RydWN0IEhhc1ZhbHVlVHlw
ZSA6IGZhbHNlX3R5cGUge307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBIYXNWYWx1
ZVR5cGU8VCwgVm9pZFQ8dHlwZW5hbWUgVDo6dmFsdWVfdHlwZT4gPiA6IHRydWVfdHlwZSB7Cit9
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQywKKyAgICAgICAgICBib29sID0gc2l6ZW9mKElzQ29u
dGFpbmVyVGVzdDxDPigwKSkgPT0gc2l6ZW9mKElzQ29udGFpbmVyKSwKKyAgICAgICAgICBib29s
ID0gSGFzVmFsdWVUeXBlPEM+Ojp2YWx1ZT4KK3N0cnVjdCBJc1JlY3Vyc2l2ZUNvbnRhaW5lcklt
cGw7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDLCBib29sIEhWPgorc3RydWN0IElzUmVjdXJzaXZl
Q29udGFpbmVySW1wbDxDLCBmYWxzZSwgSFY+IDogcHVibGljIGZhbHNlX3R5cGUge307CisKKy8v
IFNpbmNlIHRoZSBJc1JlY3Vyc2l2ZUNvbnRhaW5lckltcGwgZGVwZW5kcyBvbiB0aGUgSXNDb250
YWluZXJUZXN0IHdlIG5lZWQgdG8KKy8vIG9iZXkgdGhlIHNhbWUgaW5jb25zaXN0ZW5jaWVzIGFz
IHRoZSBJc0NvbnRhaW5lclRlc3QsIG5hbWVseSBjaGVjayBpZgorLy8gc29tZXRoaW5nIGlzIGEg
Y29udGFpbmVyIGlzIHJlbHlpbmcgb24gb25seSBjb25zdF9pdGVyYXRvciBpbiBDKysxMSBhbmQK
Ky8vIGlzIHJlbHlpbmcgb24gYm90aCBjb25zdF9pdGVyYXRvciBhbmQgaXRlcmF0b3Igb3RoZXJ3
aXNlCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KK3N0cnVjdCBJc1JlY3Vyc2l2ZUNvbnRhaW5lcklt
cGw8QywgdHJ1ZSwgZmFsc2U+IDogcHVibGljIGZhbHNlX3R5cGUge307CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBDPgorc3RydWN0IElzUmVjdXJzaXZlQ29udGFpbmVySW1wbDxDLCB0cnVlLCB0cnVl
PiB7CisgICNpZiBHVEVTVF9MQU5HX0NYWDExCisgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3JU
cmFpdHM8dHlwZW5hbWUgQzo6Y29uc3RfaXRlcmF0b3I+Ojp2YWx1ZV90eXBlCisgICAgICB2YWx1
ZV90eXBlOworI2Vsc2UKKyAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvclRyYWl0czx0eXBlbmFt
ZSBDOjppdGVyYXRvcj46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKKyNlbmRpZgorICB0eXBlZGVm
IGlzX3NhbWU8dmFsdWVfdHlwZSwgQz4gdHlwZTsKK307CisKKy8vIElzUmVjdXJzaXZlQ29udGFp
bmVyPFR5cGU+IGlzIGEgdW5hcnkgY29tcGlsZS10aW1lIHByZWRpY2F0ZSB0aGF0CisvLyBldmFs
dWF0ZXMgd2hldGhlciBDIGlzIGEgcmVjdXJzaXZlIGNvbnRhaW5lciB0eXBlLiBBIHJlY3Vyc2l2
ZSBjb250YWluZXIKKy8vIHR5cGUgaXMgYSBjb250YWluZXIgdHlwZSB3aG9zZSB2YWx1ZV90eXBl
IGlzIGVxdWFsIHRvIHRoZSBjb250YWluZXIgdHlwZQorLy8gaXRzZWxmLiBBbiBleGFtcGxlIGZv
ciBhIHJlY3Vyc2l2ZSBjb250YWluZXIgdHlwZSBpcworLy8gYm9vc3Q6OmZpbGVzeXN0ZW06OnBh
dGgsIHdob3NlIGl0ZXJhdG9yIGhhcyBhIHZhbHVlX3R5cGUgdGhhdCBpcyBlcXVhbCB0bworLy8g
Ym9vc3Q6OmZpbGVzeXN0ZW06OnBhdGguCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KK3N0cnVjdCBJ
c1JlY3Vyc2l2ZUNvbnRhaW5lciA6IHB1YmxpYyBJc1JlY3Vyc2l2ZUNvbnRhaW5lckltcGw8Qz46
OnR5cGUge307CisKKy8vIEVuYWJsZUlmPGNvbmRpdGlvbj46OnR5cGUgaXMgdm9pZCB3aGVuICdD
b25kJyBpcyB0cnVlLCBhbmQKKy8vIHVuZGVmaW5lZCB3aGVuICdDb25kJyBpcyBmYWxzZS4gIFRv
IHVzZSBTRklOQUUgdG8gbWFrZSBhIGZ1bmN0aW9uCisvLyBvdmVybG9hZCBvbmx5IGFwcGx5IHdo
ZW4gYSBwYXJ0aWN1bGFyIGV4cHJlc3Npb24gaXMgdHJ1ZSwgYWRkCisvLyAidHlwZW5hbWUgRW5h
YmxlSWY8ZXhwcmVzc2lvbj46OnR5cGUqID0gMCIgYXMgdGhlIGxhc3QgcGFyYW1ldGVyLgordGVt
cGxhdGU8Ym9vbD4gc3RydWN0IEVuYWJsZUlmOwordGVtcGxhdGU8PiBzdHJ1Y3QgRW5hYmxlSWY8
dHJ1ZT4geyB0eXBlZGVmIHZvaWQgdHlwZTsgfTsgIC8vIE5PTElOVAorCisvLyBVdGlsaXRpZXMg
Zm9yIG5hdGl2ZSBhcnJheXMuCisKKy8vIEFycmF5RXEoKSBjb21wYXJlcyB0d28gay1kaW1lbnNp
b25hbCBuYXRpdmUgYXJyYXlzIHVzaW5nIHRoZQorLy8gZWxlbWVudHMnIG9wZXJhdG9yPT0sIHdo
ZXJlIGsgY2FuIGJlIGFueSBpbnRlZ2VyID49IDAuICBXaGVuIGsgaXMKKy8vIDAsIEFycmF5RXEo
KSBkZWdlbmVyYXRlcyBpbnRvIGNvbXBhcmluZyBhIHNpbmdsZSBwYWlyIG9mIHZhbHVlcy4KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Citib29sIEFycmF5RXEoY29uc3QgVCog
bGhzLCBzaXplX3Qgc2l6ZSwgY29uc3QgVSogcmhzKTsKKworLy8gVGhpcyBnZW5lcmljIHZlcnNp
b24gaXMgdXNlZCB3aGVuIGsgaXMgMC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PgoraW5saW5lIGJvb2wgQXJyYXlFcShjb25zdCBUJiBsaHMsIGNvbnN0IFUmIHJocykgeyByZXR1
cm4gbGhzID09IHJoczsgfQorCisvLyBUaGlzIG92ZXJsb2FkIGlzIHVzZWQgd2hlbiBrID49IDEu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IE4+CitpbmxpbmUgYm9v
bCBBcnJheUVxKGNvbnN0IFQoJmxocylbTl0sIGNvbnN0IFUoJnJocylbTl0pIHsKKyAgcmV0dXJu
IGludGVybmFsOjpBcnJheUVxKGxocywgTiwgcmhzKTsKK30KKworLy8gVGhpcyBoZWxwZXIgcmVk
dWNlcyBjb2RlIGJsb2F0LiAgSWYgd2UgaW5zdGVhZCBwdXQgaXRzIGxvZ2ljIGluc2lkZQorLy8g
dGhlIHByZXZpb3VzIEFycmF5RXEoKSBmdW5jdGlvbiwgYXJyYXlzIHdpdGggZGlmZmVyZW50IHNp
emVzIHdvdWxkCisvLyBsZWFkIHRvIGRpZmZlcmVudCBjb3BpZXMgb2YgdGhlIHRlbXBsYXRlIGNv
ZGUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2Jvb2wgQXJyYXlFcShjb25z
dCBUKiBsaHMsIHNpemVfdCBzaXplLCBjb25zdCBVKiByaHMpIHsKKyAgZm9yIChzaXplX3QgaSA9
IDA7IGkgIT0gc2l6ZTsgaSsrKSB7CisgICAgaWYgKCFpbnRlcm5hbDo6QXJyYXlFcShsaHNbaV0s
IHJoc1tpXSkpCisgICAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisK
Ky8vIEZpbmRzIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBpdGVyYXRvciByYW5nZSBbYmVnaW4s
IGVuZCkgdGhhdAorLy8gZXF1YWxzIGVsZW0uICBFbGVtZW50IG1heSBiZSBhIG5hdGl2ZSBhcnJh
eSB0eXBlIGl0c2VsZi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBJdGVyLCB0eXBlbmFtZSBFbGVtZW50
PgorSXRlciBBcnJheUF3YXJlRmluZChJdGVyIGJlZ2luLCBJdGVyIGVuZCwgY29uc3QgRWxlbWVu
dCYgZWxlbSkgeworICBmb3IgKEl0ZXIgaXQgPSBiZWdpbjsgaXQgIT0gZW5kOyArK2l0KSB7Cisg
ICAgaWYgKGludGVybmFsOjpBcnJheUVxKCppdCwgZWxlbSkpCisgICAgICByZXR1cm4gaXQ7Cisg
IH0KKyAgcmV0dXJuIGVuZDsKK30KKworLy8gQ29weUFycmF5KCkgY29waWVzIGEgay1kaW1lbnNp
b25hbCBuYXRpdmUgYXJyYXkgdXNpbmcgdGhlIGVsZW1lbnRzJworLy8gb3BlcmF0b3I9LCB3aGVy
ZSBrIGNhbiBiZSBhbnkgaW50ZWdlciA+PSAwLiAgV2hlbiBrIGlzIDAsCisvLyBDb3B5QXJyYXko
KSBkZWdlbmVyYXRlcyBpbnRvIGNvcHlpbmcgYSBzaW5nbGUgdmFsdWUuCisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgordm9pZCBDb3B5QXJyYXkoY29uc3QgVCogZnJvbSwgc2l6
ZV90IHNpemUsIFUqIHRvKTsKKworLy8gVGhpcyBnZW5lcmljIHZlcnNpb24gaXMgdXNlZCB3aGVu
IGsgaXMgMC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIHZvaWQg
Q29weUFycmF5KGNvbnN0IFQmIGZyb20sIFUqIHRvKSB7ICp0byA9IGZyb207IH0KKworLy8gVGhp
cyBvdmVybG9hZCBpcyB1c2VkIHdoZW4gayA+PSAxLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHNpemVfdCBOPgoraW5saW5lIHZvaWQgQ29weUFycmF5KGNvbnN0IFQoJmZyb20p
W05dLCBVKCp0bylbTl0pIHsKKyAgaW50ZXJuYWw6OkNvcHlBcnJheShmcm9tLCBOLCAqdG8pOwor
fQorCisvLyBUaGlzIGhlbHBlciByZWR1Y2VzIGNvZGUgYmxvYXQuICBJZiB3ZSBpbnN0ZWFkIHB1
dCBpdHMgbG9naWMgaW5zaWRlCisvLyB0aGUgcHJldmlvdXMgQ29weUFycmF5KCkgZnVuY3Rpb24s
IGFycmF5cyB3aXRoIGRpZmZlcmVudCBzaXplcworLy8gd291bGQgbGVhZCB0byBkaWZmZXJlbnQg
Y29waWVzIG9mIHRoZSB0ZW1wbGF0ZSBjb2RlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+Cit2b2lkIENvcHlBcnJheShjb25zdCBUKiBmcm9tLCBzaXplX3Qgc2l6ZSwgVSogdG8p
IHsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gc2l6ZTsgaSsrKSB7CisgICAgaW50ZXJuYWw6
OkNvcHlBcnJheShmcm9tW2ldLCB0byArIGkpOworICB9Cit9CisKKy8vIFRoZSByZWxhdGlvbiBi
ZXR3ZWVuIGFuIE5hdGl2ZUFycmF5IG9iamVjdCAoc2VlIGJlbG93KSBhbmQgdGhlCisvLyBuYXRp
dmUgYXJyYXkgaXQgcmVwcmVzZW50cy4KKy8vIFdlIHVzZSAyIGRpZmZlcmVudCBzdHJ1Y3RzIHRv
IGFsbG93IG5vbi1jb3B5YWJsZSB0eXBlcyB0byBiZSB1c2VkLCBhcyBsb25nCisvLyBhcyBSZWxh
dGlvblRvU291cmNlUmVmZXJlbmNlKCkgaXMgcGFzc2VkLgorc3RydWN0IFJlbGF0aW9uVG9Tb3Vy
Y2VSZWZlcmVuY2Uge307CitzdHJ1Y3QgUmVsYXRpb25Ub1NvdXJjZUNvcHkge307CisKKy8vIEFk
YXB0cyBhIG5hdGl2ZSBhcnJheSB0byBhIHJlYWQtb25seSBTVEwtc3R5bGUgY29udGFpbmVyLiAg
SW5zdGVhZAorLy8gb2YgdGhlIGNvbXBsZXRlIFNUTCBjb250YWluZXIgY29uY2VwdCwgdGhpcyBh
ZGFwdG9yIG9ubHkgaW1wbGVtZW50cworLy8gbWVtYmVycyB1c2VmdWwgZm9yIEdvb2dsZSBNb2Nr
J3MgY29udGFpbmVyIG1hdGNoZXJzLiAgTmV3IG1lbWJlcnMKKy8vIHNob3VsZCBiZSBhZGRlZCBh
cyBuZWVkZWQuICBUbyBzaW1wbGlmeSB0aGUgaW1wbGVtZW50YXRpb24sIHdlIG9ubHkKKy8vIHN1
cHBvcnQgRWxlbWVudCBiZWluZyBhIHJhdyB0eXBlIChpLmUuIGhhdmluZyBubyB0b3AtbGV2ZWwg
Y29uc3Qgb3IKKy8vIHJlZmVyZW5jZSBtb2RpZmllcikuICBJdCdzIHRoZSBjbGllbnQncyByZXNw
b25zaWJpbGl0eSB0byBzYXRpc2Z5CisvLyB0aGlzIHJlcXVpcmVtZW50LiAgRWxlbWVudCBjYW4g
YmUgYW4gYXJyYXkgdHlwZSBpdHNlbGYgKGhlbmNlCisvLyBtdWx0aS1kaW1lbnNpb25hbCBhcnJh
eXMgYXJlIHN1cHBvcnRlZCkuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudD4KK2NsYXNzIE5h
dGl2ZUFycmF5IHsKKyBwdWJsaWM6CisgIC8vIFNUTC1zdHlsZSBjb250YWluZXIgdHlwZWRlZnMu
CisgIHR5cGVkZWYgRWxlbWVudCB2YWx1ZV90eXBlOworICB0eXBlZGVmIEVsZW1lbnQqIGl0ZXJh
dG9yOworICB0eXBlZGVmIGNvbnN0IEVsZW1lbnQqIGNvbnN0X2l0ZXJhdG9yOworCisgIC8vIENv
bnN0cnVjdHMgZnJvbSBhIG5hdGl2ZSBhcnJheS4gUmVmZXJlbmNlcyB0aGUgc291cmNlLgorICBO
YXRpdmVBcnJheShjb25zdCBFbGVtZW50KiBhcnJheSwgc2l6ZV90IGNvdW50LCBSZWxhdGlvblRv
U291cmNlUmVmZXJlbmNlKSB7CisgICAgSW5pdFJlZihhcnJheSwgY291bnQpOworICB9CisKKyAg
Ly8gQ29uc3RydWN0cyBmcm9tIGEgbmF0aXZlIGFycmF5LiBDb3BpZXMgdGhlIHNvdXJjZS4KKyAg
TmF0aXZlQXJyYXkoY29uc3QgRWxlbWVudCogYXJyYXksIHNpemVfdCBjb3VudCwgUmVsYXRpb25U
b1NvdXJjZUNvcHkpIHsKKyAgICBJbml0Q29weShhcnJheSwgY291bnQpOworICB9CisKKyAgLy8g
Q29weSBjb25zdHJ1Y3Rvci4KKyAgTmF0aXZlQXJyYXkoY29uc3QgTmF0aXZlQXJyYXkmIHJocykg
eworICAgICh0aGlzLT4qcmhzLmNsb25lXykocmhzLmFycmF5XywgcmhzLnNpemVfKTsKKyAgfQor
CisgIH5OYXRpdmVBcnJheSgpIHsKKyAgICBpZiAoY2xvbmVfICE9ICZOYXRpdmVBcnJheTo6SW5p
dFJlZikKKyAgICAgIGRlbGV0ZVtdIGFycmF5XzsKKyAgfQorCisgIC8vIFNUTC1zdHlsZSBjb250
YWluZXIgbWV0aG9kcy4KKyAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBzaXplXzsgfQor
ICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGFycmF5XzsgfQorICBjb25z
dF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBhcnJheV8gKyBzaXplXzsgfQorICBib29s
IG9wZXJhdG9yPT0oY29uc3QgTmF0aXZlQXJyYXkmIHJocykgY29uc3QgeworICAgIHJldHVybiBz
aXplKCkgPT0gcmhzLnNpemUoKSAmJgorICAgICAgICBBcnJheUVxKGJlZ2luKCksIHNpemUoKSwg
cmhzLmJlZ2luKCkpOworICB9CisKKyBwcml2YXRlOgorICBlbnVtIHsKKyAgICBrQ2hlY2tUeXBl
SXNOb3RDb25zdE9yQVJlZmVyZW5jZSA9IFN0YXRpY0Fzc2VydFR5cGVFcUhlbHBlcjwKKyAgICAg
ICAgRWxlbWVudCwgR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV9BTkRfQ09OU1RfKEVsZW1lbnQpPjo6
dmFsdWUKKyAgfTsKKworICAvLyBJbml0aWFsaXplcyB0aGlzIG9iamVjdCB3aXRoIGEgY29weSBv
ZiB0aGUgaW5wdXQuCisgIHZvaWQgSW5pdENvcHkoY29uc3QgRWxlbWVudCogYXJyYXksIHNpemVf
dCBhX3NpemUpIHsKKyAgICBFbGVtZW50KiBjb25zdCBjb3B5ID0gbmV3IEVsZW1lbnRbYV9zaXpl
XTsKKyAgICBDb3B5QXJyYXkoYXJyYXksIGFfc2l6ZSwgY29weSk7CisgICAgYXJyYXlfID0gY29w
eTsKKyAgICBzaXplXyA9IGFfc2l6ZTsKKyAgICBjbG9uZV8gPSAmTmF0aXZlQXJyYXk6OkluaXRD
b3B5OworICB9CisKKyAgLy8gSW5pdGlhbGl6ZXMgdGhpcyBvYmplY3Qgd2l0aCBhIHJlZmVyZW5j
ZSBvZiB0aGUgaW5wdXQuCisgIHZvaWQgSW5pdFJlZihjb25zdCBFbGVtZW50KiBhcnJheSwgc2l6
ZV90IGFfc2l6ZSkgeworICAgIGFycmF5XyA9IGFycmF5OworICAgIHNpemVfID0gYV9zaXplOwor
ICAgIGNsb25lXyA9ICZOYXRpdmVBcnJheTo6SW5pdFJlZjsKKyAgfQorCisgIGNvbnN0IEVsZW1l
bnQqIGFycmF5XzsKKyAgc2l6ZV90IHNpemVfOworICB2b2lkIChOYXRpdmVBcnJheTo6KmNsb25l
XykoY29uc3QgRWxlbWVudCosIHNpemVfdCk7CisKKyAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhO
YXRpdmVBcnJheSk7Cit9OworCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVz
cGFjZSB0ZXN0aW5nCiAKLSNkZWZpbmUgR1RFU1RfTUVTU0FHRV8obWVzc2FnZSwgcmVzdWx0X3R5
cGUpIFwKLSAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6QXNzZXJ0SGVscGVyKHJlc3VsdF90eXBlLCBf
X0ZJTEVfXywgX19MSU5FX18sIG1lc3NhZ2UpIFwKKyNkZWZpbmUgR1RFU1RfTUVTU0FHRV9BVF8o
ZmlsZSwgbGluZSwgbWVzc2FnZSwgcmVzdWx0X3R5cGUpIFwKKyAgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6QXNzZXJ0SGVscGVyKHJlc3VsdF90eXBlLCBmaWxlLCBsaW5lLCBtZXNzYWdlKSBcCiAgICAg
PSA6OnRlc3Rpbmc6Ok1lc3NhZ2UoKQogCisjZGVmaW5lIEdURVNUX01FU1NBR0VfKG1lc3NhZ2Us
IHJlc3VsdF90eXBlKSBcCisgIEdURVNUX01FU1NBR0VfQVRfKF9fRklMRV9fLCBfX0xJTkVfXywg
bWVzc2FnZSwgcmVzdWx0X3R5cGUpCisKICNkZWZpbmUgR1RFU1RfRkFUQUxfRkFJTFVSRV8obWVz
c2FnZSkgXAogICByZXR1cm4gR1RFU1RfTUVTU0FHRV8obWVzc2FnZSwgOjp0ZXN0aW5nOjpUZXN0
UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSkKIApAQCAtODAwLDcgKzEyMDgsNyBAQCBjbGFzcyBH
VEVTVF9BUElfIFJhbmRvbSB7CiAjZGVmaW5lIEdURVNUX1NVQ0NFU1NfKG1lc3NhZ2UpIFwKICAg
R1RFU1RfTUVTU0FHRV8obWVzc2FnZSwgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDo6a1N1Y2Nl
c3MpCiAKLS8vIFN1cHByZXNzZXMgTVNWQyB3YXJuaW5ncyA0MDcyICh1bnJlYWNoYWJsZSBjb2Rl
KSBmb3IgdGhlIGNvZGUgZm9sbG93aW5nCisvLyBTdXBwcmVzcyBNU1ZDIHdhcm5pbmcgNDcwMiAo
dW5yZWFjaGFibGUgY29kZSkgZm9yIHRoZSBjb2RlIGZvbGxvd2luZwogLy8gc3RhdGVtZW50IGlm
IGl0IHJldHVybnMgb3IgdGhyb3dzIChvciBkb2Vzbid0IHJldHVybiBvciB0aHJvdyBpbiBzb21l
CiAvLyBzaXR1YXRpb25zKS4KICNkZWZpbmUgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09E
RV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpIFwKQEAgLTgwOCw3ICsxMjE2LDcgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBSYW5kb20gewogCiAjZGVmaW5lIEdURVNUX1RFU1RfVEhST1dfKHN0YXRlbWVu
dCwgZXhwZWN0ZWRfZXhjZXB0aW9uLCBmYWlsKSBcCiAgIEdURVNUX0FNQklHVU9VU19FTFNFX0JM
T0NLRVJfIFwKLSAgaWYgKGNvbnN0IGNoYXIqIGd0ZXN0X21zZyA9ICIiKSB7IFwKKyAgaWYgKDo6
dGVzdGluZzo6aW50ZXJuYWw6OkNvbnN0Q2hhclB0ciBndGVzdF9tc2cgPSAiIikgeyBcCiAgICAg
Ym9vbCBndGVzdF9jYXVnaHRfZXhwZWN0ZWQgPSBmYWxzZTsgXAogICAgIHRyeSB7IFwKICAgICAg
IEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50
KTsgXApAQCAtODE3LDM4ICsxMjI1LDM4IEBAIGNsYXNzIEdURVNUX0FQSV8gUmFuZG9tIHsKICAg
ICAgIGd0ZXN0X2NhdWdodF9leHBlY3RlZCA9IHRydWU7IFwKICAgICB9IFwKICAgICBjYXRjaCAo
Li4uKSB7IFwKLSAgICAgIGd0ZXN0X21zZyA9ICJFeHBlY3RlZDogIiAjc3RhdGVtZW50ICIgdGhy
b3dzIGFuIGV4Y2VwdGlvbiBvZiB0eXBlICIgXAotICAgICAgICAgICAgICAgICAgI2V4cGVjdGVk
X2V4Y2VwdGlvbiAiLlxuICBBY3R1YWw6IGl0IHRocm93cyBhIGRpZmZlcmVudCAiIFwKLSAgICAg
ICAgICAgICAgICAgICJ0eXBlLiI7IFwKKyAgICAgIGd0ZXN0X21zZy52YWx1ZSA9IFwKKyAgICAg
ICAgICAiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIHRocm93cyBhbiBleGNlcHRpb24gb2YgdHlw
ZSAiIFwKKyAgICAgICAgICAjZXhwZWN0ZWRfZXhjZXB0aW9uICIuXG4gIEFjdHVhbDogaXQgdGhy
b3dzIGEgZGlmZmVyZW50IHR5cGUuIjsgXAogICAgICAgZ290byBHVEVTVF9DT05DQVRfVE9LRU5f
KGd0ZXN0X2xhYmVsX3Rlc3R0aHJvd18sIF9fTElORV9fKTsgXAogICAgIH0gXAogICAgIGlmICgh
Z3Rlc3RfY2F1Z2h0X2V4cGVjdGVkKSB7IFwKLSAgICAgIGd0ZXN0X21zZyA9ICJFeHBlY3RlZDog
IiAjc3RhdGVtZW50ICIgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiB0eXBlICIgXAotICAgICAgICAg
ICAgICAgICAgI2V4cGVjdGVkX2V4Y2VwdGlvbiAiLlxuICBBY3R1YWw6IGl0IHRocm93cyBub3Ro
aW5nLiI7IFwKKyAgICAgIGd0ZXN0X21zZy52YWx1ZSA9IFwKKyAgICAgICAgICAiRXhwZWN0ZWQ6
ICIgI3N0YXRlbWVudCAiIHRocm93cyBhbiBleGNlcHRpb24gb2YgdHlwZSAiIFwKKyAgICAgICAg
ICAjZXhwZWN0ZWRfZXhjZXB0aW9uICIuXG4gIEFjdHVhbDogaXQgdGhyb3dzIG5vdGhpbmcuIjsg
XAogICAgICAgZ290byBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3R0aHJvd18s
IF9fTElORV9fKTsgXAogICAgIH0gXAogICB9IGVsc2UgXAogICAgIEdURVNUX0NPTkNBVF9UT0tF
Tl8oZ3Rlc3RfbGFiZWxfdGVzdHRocm93XywgX19MSU5FX18pOiBcCi0gICAgICBmYWlsKGd0ZXN0
X21zZykKKyAgICAgIGZhaWwoZ3Rlc3RfbXNnLnZhbHVlKQogCiAjZGVmaW5lIEdURVNUX1RFU1Rf
Tk9fVEhST1dfKHN0YXRlbWVudCwgZmFpbCkgXAogICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9D
S0VSXyBcCi0gIGlmIChjb25zdCBjaGFyKiBndGVzdF9tc2cgPSAiIikgeyBcCisgIGlmICg6OnRl
c3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAogICAgIHRyeSB7IFwKICAgICAgIEdU
RVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KTsg
XAogICAgIH0gXAogICAgIGNhdGNoICguLi4pIHsgXAotICAgICAgZ3Rlc3RfbXNnID0gIkV4cGVj
dGVkOiAiICNzdGF0ZW1lbnQgIiBkb2Vzbid0IHRocm93IGFuIGV4Y2VwdGlvbi5cbiIgXAotICAg
ICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBpdCB0aHJvd3MuIjsgXAogICAgICAgZ290byBHVEVT
VF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3Rub3Rocm93XywgX19MSU5FX18pOyBcCiAg
ICAgfSBcCiAgIH0gZWxzZSBcCiAgICAgR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90
ZXN0bm90aHJvd18sIF9fTElORV9fKTogXAotICAgICAgZmFpbChndGVzdF9tc2cpCisgICAgICBm
YWlsKCJFeHBlY3RlZDogIiAjc3RhdGVtZW50ICIgZG9lc24ndCB0aHJvdyBhbiBleGNlcHRpb24u
XG4iIFwKKyAgICAgICAgICAgIiAgQWN0dWFsOiBpdCB0aHJvd3MuIikKIAogI2RlZmluZSBHVEVT
VF9URVNUX0FOWV9USFJPV18oc3RhdGVtZW50LCBmYWlsKSBcCiAgIEdURVNUX0FNQklHVU9VU19F
TFNFX0JMT0NLRVJfIFwKLSAgaWYgKGNvbnN0IGNoYXIqIGd0ZXN0X21zZyA9ICIiKSB7IFwKKyAg
aWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBcCiAgICAgYm9vbCBndGVz
dF9jYXVnaHRfYW55ID0gZmFsc2U7IFwKICAgICB0cnkgeyBcCiAgICAgICBHVEVTVF9TVVBQUkVT
U19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKQEAgLTg1Nywx
MyArMTI2NSwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIFJhbmRvbSB7CiAgICAgICBndGVzdF9jYXVn
aHRfYW55ID0gdHJ1ZTsgXAogICAgIH0gXAogICAgIGlmICghZ3Rlc3RfY2F1Z2h0X2FueSkgeyBc
Ci0gICAgICBndGVzdF9tc2cgPSAiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIHRocm93cyBhbiBl
eGNlcHRpb24uXG4iIFwKLSAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogaXQgZG9lc24ndC4i
OyBcCiAgICAgICBnb3RvIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdGFueXRo
cm93XywgX19MSU5FX18pOyBcCiAgICAgfSBcCiAgIH0gZWxzZSBcCiAgICAgR1RFU1RfQ09OQ0FU
X1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0YW55dGhyb3dfLCBfX0xJTkVfXyk6IFwKLSAgICAgIGZh
aWwoZ3Rlc3RfbXNnKQorICAgICAgZmFpbCgiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIHRocm93
cyBhbiBleGNlcHRpb24uXG4iIFwKKyAgICAgICAgICAgIiAgQWN0dWFsOiBpdCBkb2Vzbid0LiIp
CiAKIAogLy8gSW1wbGVtZW50cyBCb29sZWFuIHRlc3QgYXNzZXJ0aW9ucyBzdWNoIGFzIEVYUEVD
VF9UUlVFLiBleHByZXNzaW9uIGNhbiBiZQpAQCAtODgwLDE4ICsxMjg3LDE3IEBAIGNsYXNzIEdU
RVNUX0FQSV8gUmFuZG9tIHsKIAogI2RlZmluZSBHVEVTVF9URVNUX05PX0ZBVEFMX0ZBSUxVUkVf
KHN0YXRlbWVudCwgZmFpbCkgXAogICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0g
IGlmIChjb25zdCBjaGFyKiBndGVzdF9tc2cgPSAiIikgeyBcCisgIGlmICg6OnRlc3Rpbmc6Omlu
dGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAogICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6Okhhc05l
d0ZhdGFsRmFpbHVyZUhlbHBlciBndGVzdF9mYXRhbF9mYWlsdXJlX2NoZWNrZXI7IFwKICAgICBH
VEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7
IFwKICAgICBpZiAoZ3Rlc3RfZmF0YWxfZmFpbHVyZV9jaGVja2VyLmhhc19uZXdfZmF0YWxfZmFp
bHVyZSgpKSB7IFwKLSAgICAgIGd0ZXN0X21zZyA9ICJFeHBlY3RlZDogIiAjc3RhdGVtZW50ICIg
ZG9lc24ndCBnZW5lcmF0ZSBuZXcgZmF0YWwgIiBcCi0gICAgICAgICAgICAgICAgICAiZmFpbHVy
ZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkLlxuIiBcCi0gICAgICAgICAgICAgICAgICAiICBBY3R1
YWw6IGl0IGRvZXMuIjsgXAogICAgICAgZ290byBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xh
YmVsX3Rlc3Rub2ZhdGFsXywgX19MSU5FX18pOyBcCiAgICAgfSBcCiAgIH0gZWxzZSBcCiAgICAg
R1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0bm9mYXRhbF8sIF9fTElORV9fKTog
XAotICAgICAgZmFpbChndGVzdF9tc2cpCisgICAgICBmYWlsKCJFeHBlY3RlZDogIiAjc3RhdGVt
ZW50ICIgZG9lc24ndCBnZW5lcmF0ZSBuZXcgZmF0YWwgIiBcCisgICAgICAgICAgICJmYWlsdXJl
cyBpbiB0aGUgY3VycmVudCB0aHJlYWQuXG4iIFwKKyAgICAgICAgICAgIiAgQWN0dWFsOiBpdCBk
b2VzLiIpCiAKIC8vIEV4cGFuZHMgdG8gdGhlIG5hbWUgb2YgdGhlIGNsYXNzIHRoYXQgaW1wbGVt
ZW50cyB0aGUgZ2l2ZW4gdGVzdC4KICNkZWZpbmUgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0
X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBcCkBAIC05MDQsNyArMTMxMCw3IEBAIGNsYXNzIEdURVNU
X1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgOiBwdWJsaWMgcGFy
ZW50X2NsYXNzIHtcCiAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSkoKSB7fVwKICBwcml2YXRlOlwKICAgdmlydHVhbCB2b2lkIFRlc3RCb2R5KCk7XAot
ICBzdGF0aWMgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvXztcCisgIHN0YXRp
YyA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm9fIEdURVNUX0FUVFJJQlVURV9V
TlVTRURfO1wKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhcCiAgICAgICBHVEVT
VF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpKTtcCiB9O1wKQEAg
LTkxMiw3ICsxMzE4LDggQEAgY2xhc3MgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2Vf
bmFtZSwgdGVzdF9uYW1lKSA6IHB1YmxpYyBwYXJlbnRfY2xhc3Mge1wKIDo6dGVzdGluZzo6VGVz
dEluZm8qIGNvbnN0IEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3Rf
bmFtZSlcCiAgIDo6dGVzdF9pbmZvXyA9XAogICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok1ha2VB
bmRSZWdpc3RlclRlc3RJbmZvKFwKLSAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCAjdGVzdF9uYW1l
LCAiIiwgIiIsIFwKKyAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCAjdGVzdF9uYW1lLCBOVUxMLCBO
VUxMLCBcCisgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihfX0ZJTEVf
XywgX19MSU5FX18pLCBcCiAgICAgICAgIChwYXJlbnRfaWQpLCBcCiAgICAgICAgIHBhcmVudF9j
bGFzczo6U2V0VXBUZXN0Q2FzZSwgXAogICAgICAgICBwYXJlbnRfY2xhc3M6OlRlYXJEb3duVGVz
dENhc2UsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRyLmgKaW5kZXggNTQwZWY0Y2Q0
NGU3MmI1NTg2NTcwODFhNWYwN2EwZjI4YjNlNDBlMy4uMDgyYjg3Mjg5YWUxN2M4YWE3Yjk2ZDhl
OGM5MmI5NmUwMThjNzY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRyLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRyLmgKQEAg
LTI3LDggKzI3LDYgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIC8vCi0vLyBB
dXRob3JzOiBEYW4gRWdub3IgKGVnbm9yQGdvb2dsZS5jb20pCi0vLwogLy8gQSAic21hcnQiIHBv
aW50ZXIgdHlwZSB3aXRoIHJlZmVyZW5jZSB0cmFja2luZy4gIEV2ZXJ5IHBvaW50ZXIgdG8gYQog
Ly8gcGFydGljdWxhciBvYmplY3QgaXMga2VwdCBvbiBhIGNpcmN1bGFyIGxpbmtlZCBsaXN0LiAg
V2hlbiB0aGUgbGFzdCBwb2ludGVyCiAvLyB0byBhbiBvYmplY3QgaXMgZGVzdHJveWVkIG9yIHJl
YXNzaWduZWQsIHRoZSBvYmplY3QgaXMgZGVsZXRlZC4KQEAgLTYyLDE2ICs2MCwxOCBAQAogLy8g
ICAgICAgcmF3IHBvaW50ZXIgKGUuZy4gdmlhIGdldCgpKSBjb25jdXJyZW50bHksIGFuZAogLy8g
ICAgIC0gaXQncyBzYWZlIHRvIHdyaXRlIHRvIHR3byBsaW5rZWRfcHRycyB0aGF0IHBvaW50IHRv
IHRoZSBzYW1lCiAvLyAgICAgICBzaGFyZWQgb2JqZWN0IGNvbmN1cnJlbnRseS4KLS8vIFRPRE8o
d2FuQGdvb2dsZS5jb20pOiByZW5hbWUgdGhpcyB0byBzYWZlX2xpbmtlZF9wdHIgdG8gYXZvaWQK
Ky8vIEZJWE1FOiByZW5hbWUgdGhpcyB0byBzYWZlX2xpbmtlZF9wdHIgdG8gYXZvaWQKIC8vIGNv
bmZ1c2lvbiB3aXRoIG5vcm1hbCBsaW5rZWRfcHRyLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBE
TyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVT
VF9MSU5LRURfUFRSX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RF
U1RfTElOS0VEX1BUUl9IXwogCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8YXNzZXJ0
Lmg+CiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAi
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiBuYW1l
c3BhY2UgaW50ZXJuYWwgewpAQCAtMTA1LDI1ICsxMDUsMzUgQEAgY2xhc3MgbGlua2VkX3B0cl9p
bnRlcm5hbCB7CiAgIC8vIGZyYW1ld29yay4KIAogICAvLyBKb2luIGFuIGV4aXN0aW5nIGNpcmNs
ZS4KLSAgLy8gTCA8IGdfbGlua2VkX3B0cl9tdXRleAotICB2b2lkIGpvaW4obGlua2VkX3B0cl9p
bnRlcm5hbCBjb25zdCogcHRyKSB7CisgIHZvaWQgam9pbihsaW5rZWRfcHRyX2ludGVybmFsIGNv
bnN0KiBwdHIpCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhnX2xpbmtlZF9wdHJfbXV0ZXgp
IHsKICAgICBNdXRleExvY2sgbG9jaygmZ19saW5rZWRfcHRyX211dGV4KTsKIAogICAgIGxpbmtl
ZF9wdHJfaW50ZXJuYWwgY29uc3QqIHAgPSBwdHI7Ci0gICAgd2hpbGUgKHAtPm5leHRfICE9IHB0
cikgcCA9IHAtPm5leHRfOworICAgIHdoaWxlIChwLT5uZXh0XyAhPSBwdHIpIHsKKyAgICAgIGFz
c2VydChwLT5uZXh0XyAhPSB0aGlzICYmCisgICAgICAgICAgICAgIlRyeWluZyB0byBqb2luKCkg
YSBsaW5rZWQgcmluZyB3ZSBhcmUgYWxyZWFkeSBpbi4gIgorICAgICAgICAgICAgICJJcyBHTW9j
ayB0aHJlYWQgc2FmZXR5IGVuYWJsZWQ/Iik7CisgICAgICBwID0gcC0+bmV4dF87CisgICAgfQog
ICAgIHAtPm5leHRfID0gdGhpczsKICAgICBuZXh0XyA9IHB0cjsKICAgfQogCiAgIC8vIExlYXZl
IHdoYXRldmVyIGNpcmNsZSB3ZSdyZSBwYXJ0IG9mLiAgUmV0dXJucyB0cnVlIGlmIHdlIHdlcmUg
dGhlCiAgIC8vIGxhc3QgbWVtYmVyIG9mIHRoZSBjaXJjbGUuICBPbmNlIHRoaXMgaXMgZG9uZSwg
eW91IGNhbiBqb2luKCkgYW5vdGhlci4KLSAgLy8gTCA8IGdfbGlua2VkX3B0cl9tdXRleAotICBi
b29sIGRlcGFydCgpIHsKKyAgYm9vbCBkZXBhcnQoKQorICAgICAgR1RFU1RfTE9DS19FWENMVURF
RF8oZ19saW5rZWRfcHRyX211dGV4KSB7CiAgICAgTXV0ZXhMb2NrIGxvY2soJmdfbGlua2VkX3B0
cl9tdXRleCk7CiAKICAgICBpZiAobmV4dF8gPT0gdGhpcykgcmV0dXJuIHRydWU7CiAgICAgbGlu
a2VkX3B0cl9pbnRlcm5hbCBjb25zdCogcCA9IG5leHRfOwotICAgIHdoaWxlIChwLT5uZXh0XyAh
PSB0aGlzKSBwID0gcC0+bmV4dF87CisgICAgd2hpbGUgKHAtPm5leHRfICE9IHRoaXMpIHsKKyAg
ICAgIGFzc2VydChwLT5uZXh0XyAhPSBuZXh0XyAmJgorICAgICAgICAgICAgICJUcnlpbmcgdG8g
ZGVwYXJ0KCkgYSBsaW5rZWQgcmluZyB3ZSBhcmUgbm90IGluLiAiCisgICAgICAgICAgICAgIklz
IEdNb2NrIHRocmVhZCBzYWZldHkgZW5hYmxlZD8iKTsKKyAgICAgIHAgPSBwLT5uZXh0XzsKKyAg
ICB9CiAgICAgcC0+bmV4dF8gPSBuZXh0XzsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KQEAgLTE3
MiwxNSArMTgyLDYgQEAgY2xhc3MgbGlua2VkX3B0ciB7CiAgIFQqIGdldCgpIGNvbnN0IHsgcmV0
dXJuIHZhbHVlXzsgfQogICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9
CiAgIFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICp2YWx1ZV87IH0KLSAgLy8gUmVsZWFz
ZSBvd25lcnNoaXAgb2YgdGhlIHBvaW50ZWQgb2JqZWN0IGFuZCByZXR1cm5zIGl0LgotICAvLyBT
b2xlIG93bmVyc2hpcCBieSB0aGlzIGxpbmtlZF9wdHIgb2JqZWN0IGlzIHJlcXVpcmVkLgotICBU
KiByZWxlYXNlKCkgewotICAgIGJvb2wgbGFzdCA9IGxpbmtfLmRlcGFydCgpOwotICAgIGFzc2Vy
dChsYXN0KTsKLSAgICBUKiB2ID0gdmFsdWVfOwotICAgIHZhbHVlXyA9IE5VTEw7Ci0gICAgcmV0
dXJuIHY7Ci0gIH0KIAogICBib29sIG9wZXJhdG9yPT0oVCogcCkgY29uc3QgeyByZXR1cm4gdmFs
dWVfID09IHA7IH0KICAgYm9vbCBvcGVyYXRvciE9KFQqIHApIGNvbnN0IHsgcmV0dXJuIHZhbHVl
XyAhPSBwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJh
dGVkLmgKaW5kZXggNjJiNWFlMTNlMjhlNTY2YjFlODg1MTI3ZGJiMDdjZDE3MmEyNmYxOS4uZjRk
ZjU5OTE5MDU3MmU3YjA5ZTlkN2IwY2U4OTk0NzJkYzdlYjkxNiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGls
LWdlbmVyYXRlZC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaApAQCAtMSw0ICsxLDYgQEAKLS8v
IFRoaXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5IGEgc2NyaXB0LiAgRE8gTk9UIEVESVQgQlkgSEFO
RCEhIQorLy8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgY29tbWFuZDoKKy8vICAgICBwdW1w
LnB5IGd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcAorLy8gRE8gTk9UIEVESVQgQlkg
SEFORCEhIQogCiAvLyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLgogLy8gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KQEAgLTI4LDggKzMwLDcgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQg
TG9zZXYpCisKIAogLy8gVHlwZSBhbmQgZnVuY3Rpb24gdXRpbGl0aWVzIGZvciBpbXBsZW1lbnRp
bmcgcGFyYW1ldGVyaXplZCB0ZXN0cy4KIC8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBT
Q1JJUFQuICBETyBOT1QgRURJVCBCWSBIQU5EIQpAQCAtNDEsMTYgKzQyLDEzIEBACiAvLyBieSB0
aGUgbWF4aW11bSBhcml0eSBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdHVwbGUgd2hpY2ggaXMK
IC8vIGN1cnJlbnRseSBzZXQgYXQgMTAuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBE
RUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BBUkFN
X1VUSUxfR0VORVJBVEVEX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxf
R1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFURURfSF8KIAotLy8gc2NyaXB0cy9mdXNlX2d0ZXN0LnB5
IGRlcGVuZHMgb24gZ3Rlc3QncyBvd24gaGVhZGVyIGJlaW5nICNpbmNsdWRlZAotLy8gKnVuY29u
ZGl0aW9uYWxseSouICBUaGVyZWZvcmUgdGhlc2UgI2luY2x1ZGVzIGNhbm5vdCBiZSBtb3ZlZAot
Ly8gaW5zaWRlICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVC4KLSNpbmNsdWRlIDxndGVzdC9pbnRl
cm5hbC9ndGVzdC1wYXJhbS11dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
cG9ydC5oPgotCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKKyNpbmNsdWRlICJndGVzdC9pbnRl
cm5hbC9ndGVzdC1wYXJhbS11dGlsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
cG9ydC5oIgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKQEAgLTU4LDggKzU2LDggQEAgbmFtZXNw
YWNlIHRlc3RpbmcgewogLy8gaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmguCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yPgogaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9y
PAotICAgIHR5cGVuYW1lIDo6c3RkOjppdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6
dmFsdWVfdHlwZT4gVmFsdWVzSW4oCi0gICAgICAgIEZvcndhcmRJdGVyYXRvciBiZWdpbiwgRm9y
d2FyZEl0ZXJhdG9yIGVuZCk7CisgIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJh
dG9yVHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+CitWYWx1ZXNJbihGb3J3YXJk
SXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJdGVyYXRvciBlbmQpOwogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgc2l6ZV90IE4+CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8VD4gVmFsdWVzSW4oY29u
c3QgVCAoJmFycmF5KVtOXSk7CkBAIC03Nyw3ICs3NSwxMCBAQCBjbGFzcyBWYWx1ZUFycmF5MSB7
CiAgIGV4cGxpY2l0IFZhbHVlQXJyYXkxKFQxIHYxKSA6IHYxXyh2MSkge30KIAogICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7IHJl
dHVybiBWYWx1ZXNJbigmdjFfLCAmdjFfICsgMSk7IH0KKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8VD4oKSBjb25zdCB7CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYx
Xyl9OworICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CisgIH0KIAogIHByaXZhdGU6CiAgIC8v
IE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTkzLDcg
Kzk0LDcgQEAgY2xhc3MgVmFsdWVBcnJheTIgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
ICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5
W10gPSB7djFfLCB2Ml99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2
MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwog
ICB9CiAKQEAgLTExMiw3ICsxMTMsOCBAQCBjbGFzcyBWYWx1ZUFycmF5MyB7CiAKICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qgewot
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNffTsKKyAgICBjb25zdCBUIGFycmF5
W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjNfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQog
CkBAIC0xMzMsNyArMTM1LDggQEAgY2xhc3MgVmFsdWVBcnJheTQgewogCiAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBj
b25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRffTsKKyAgICBjb25zdCBUIGFycmF5
W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKX07CiAgICAgcmV0dXJuIFZh
bHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0xNTUsNyArMTU4LDggQEAgY2xhc3MgVmFsdWVBcnJh
eTUgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRf
LCB2NV99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0
aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2Fz
dDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJy
YXkpOwogICB9CiAKQEAgLTE3OSw3ICsxODMsOSBAQCBjbGFzcyBWYWx1ZUFycmF5NiB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
fTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4o
djRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKX07
CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0yMDQsNyArMjEwLDkgQEAg
Y2xhc3MgVmFsdWVBcnJheTcgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFf
LCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7
c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0yMzEsNyArMjM5LDkgQEAgY2xhc3Mg
VmFsdWVBcnJheTggewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8s
IHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtz
dGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNf
Y2FzdDxUPih2OF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTI1
OSw3ICsyNjksMTAgQEAgY2xhc3MgVmFsdWVBcnJheTkgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBU
IGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5X307
CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0
PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0
XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0
YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY5Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjg4
LDcgKzMwMSwxMCBAQCBjbGFzcyBWYWx1ZUFycmF5MTAgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBU
IGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5Xywg
djEwX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRp
Y19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0
PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2
XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pfTsKICAgICByZXR1cm4gVmFs
dWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTMxOSw3ICszMzUsMTAgQEAgY2xhc3MgVmFsdWVBcnJh
eTExIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0
XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV99OworICAgIGNvbnN0IFQgYXJy
YXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxU
Pih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18p
LCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0
aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyl9OwogICAgIHJldHVybiBWYWx1
ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMzUxLDggKzM3MCwxMSBAQCBjbGFzcyBWYWx1ZUFycmF5
MTIgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRf
LCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyX307Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7
CiAgIH0KIApAQCAtMzg2LDggKzQwOCwxMSBAQCBjbGFzcyBWYWx1ZUFycmF5MTMgewogCiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0
IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywg
djdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzX307CisgICAgY29u
c3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRp
Y19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0
PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5
XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pfTsKICAgICByZXR1cm4g
VmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTQyMiw4ICs0NDcsMTEgQEAgY2xhc3MgVmFsdWVB
cnJheTE0IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5l
cmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18s
IHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8s
IHYxM18sIHYxNF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8p
LCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0
aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nh
c3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJh
eSk7CiAgIH0KIApAQCAtNDU5LDggKzQ4NywxMiBAQCBjbGFzcyBWYWx1ZUFycmF5MTUgewogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2
XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0Xywg
djE1X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRp
Y19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0
PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2
XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2
MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18p
LCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyl9Owog
ICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtNDk5LDggKzUzMSwxMiBAQCBj
bGFzcyBWYWx1ZUFycmF5MTYgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFf
LCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAg
ICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2X307CisgICAgY29uc3QgVCBhcnJheVtd
ID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0
YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19j
YXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pfTsKICAgICBy
ZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTU0MCw4ICs1NzYsMTIgQEAgY2xhc3Mg
VmFsdWVBcnJheTE3IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFy
YW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJf
LCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAg
IHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN199OworICAgIGNvbnN0IFQgYXJyYXlb
XSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2
NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBz
dGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNf
Y2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE3Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAt
NTgyLDggKzYyMiwxMyBAQCBjbGFzcyBWYWx1ZUFycmF5MTggewogCiAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25z
dCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5
XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3
XywgdjE4X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYx
M18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyks
IHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE4Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApA
QCAtNjI1LDggKzY3MCwxMyBAQCBjbGFzcyBWYWx1ZUFycmF5MTkgewogCiAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBj
b25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8s
IHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2Xywg
djE3XywgdjE4XywgdjE5X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+
KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyks
IHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0
aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19j
YXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pfTsKICAgICBy
ZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTY3MCw4ICs3MjAsMTMgQEAgY2xhc3Mg
VmFsdWVBcnJheTIwIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFy
YW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJf
LCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAg
IHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF99Owor
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxU
Pih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8p
LCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0
aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2Fz
dDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyl9OwogICAg
IHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtNzE3LDggKzc3MiwxNCBAQCBjbGFz
cyBWYWx1ZUFycmF5MjEgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQ
YXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2
Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAg
ICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywg
djIxX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRp
Y19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0
PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2
XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2
MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18p
LCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0
YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihh
cnJheSk7CiAgIH0KIApAQCAtNzY1LDggKzgyNiwxNCBAQCBjbGFzcyBWYWx1ZUFycmF5MjIgewog
CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigp
IGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8s
IHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0
XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyX307CisgICAg
Y29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYy
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0
YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19j
YXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2Fz
dDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+
KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4
XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pfTsKICAgICByZXR1cm4g
VmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTgxNSw5ICs4ODIsMTQgQEAgY2xhc3MgVmFsdWVB
cnJheTIzIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5l
cmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18s
IHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8s
IHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYy
Ml8sCi0gICAgICAgIHYyM199OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxU
Pih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18p
LCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3Rh
dGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihh
cnJheSk7CiAgIH0KIApAQCAtODY3LDkgKzkzOSwxNSBAQCBjbGFzcyBWYWx1ZUFycmF5MjQgewog
CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigp
IGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8s
IHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0
XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywK
LSAgICAgICAgdjI0X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYx
XyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0
YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNf
Y2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0
PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+
KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0
Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtOTIwLDkgKzk5OCwx
NSBAQCBjbGFzcyBWYWx1ZUFycmF5MjUgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5
XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1X307CisgICAgY29u
c3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRp
Y19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0
PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5
XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxU
Pih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYx
Nl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4Xyks
IHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2
MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8p
fTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTk3NSw5ICsxMDU5LDE1
IEBAIGNsYXNzIFZhbHVlQXJyYXkyNiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9w
ZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9
IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFf
LAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlf
LCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZffTsKKyAg
ICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19j
YXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8
VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0
PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkp
OwogICB9CiAKQEAgLTEwMzIsOSArMTEyMiwxNiBAQCBjbGFzcyBWYWx1ZUFycmF5MjcgewogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2
XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0Xywg
djE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAg
ICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYx
OV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyks
IHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2
MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJ
bihhcnJheSk7CiAgIH0KIApAQCAtMTA5MCw5ICsxMTg3LDE2IEBAIGNsYXNzIFZhbHVlQXJyYXky
OCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9y
PFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8s
IHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNf
LCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2
MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhffTsKKyAgICBjb25zdCBU
IGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nh
c3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4o
djdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwg
c3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYx
NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2Xyks
IHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0
YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI4Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAt
MTE0OSw5ICsxMjUzLDE2IEBAIGNsYXNzIFZhbHVlQXJyYXkyOSB7CiAKICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywg
djlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2
MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2
MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3Rh
dGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nh
c3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4o
djEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJf
KSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+
KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5
XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYy
Nl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9
CiAKQEAgLTEyMTAsOSArMTMyMSwxNyBAQCBjbGFzcyBWYWx1ZUFycmF5MzAgewogCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
LSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywgdjdf
LCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1Xywg
djE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAg
djI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwX307CisgICAgY29uc3QgVCBh
cnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0
PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3
XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0
YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBz
dGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRp
Y19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0
aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19j
YXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjMwXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTI3Myw5
ICsxMzkyLDE3IEBAIGNsYXNzIFZhbHVlQXJyYXkzMSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2
MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2
MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2
MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFffTsKKyAgICBjb25zdCBUIGFycmF5W10g
PSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nh
c3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19j
YXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8
VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0
PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4o
djI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBf
KSwgc3RhdGljX2Nhc3Q8VD4odjMxXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAg
IH0KIApAQCAtMTMzNyw5ICsxNDY0LDE3IEBAIGNsYXNzIFZhbHVlQXJyYXkzMiB7CiAKICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qg
ewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2
N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVf
LCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAg
ICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJffTsK
KyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRp
Y19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nh
c3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19j
YXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8
VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0
PFQ+KHYzMl8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTE0MDMs
OSArMTUzOCwxOCBAQCBjbGFzcyBWYWx1ZUFycmF5MzMgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBU
IGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5Xywg
djEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3Xywg
djE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1Xywg
djI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzX307CisgICAgY29u
c3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRp
Y19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0
PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5
XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxU
Pih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYx
Nl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4Xyks
IHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2
MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8p
LCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0
YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihh
cnJheSk7CiAgIH0KIApAQCAtMTQ3MCw5ICsxNjE0LDE4IEBAIGNsYXNzIFZhbHVlQXJyYXkzNCB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2
MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNf
LAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFf
LCB2MzJfLCB2MzNfLCB2MzRffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8
VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNf
KSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0
YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRp
Y19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19j
YXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8
VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7
CiAgIH0KIApAQCAtMTUzOCwxMCArMTY5MSwxOCBAQCBjbGFzcyBWYWx1ZUFycmF5MzUgewogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2
XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0Xywg
djE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAg
ICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMy
XywgdjMzXywgdjM0XywKLSAgICAgICAgdjM1X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYx
OV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyks
IHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2
MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8p
LCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0
YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVf
KX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0xNjA5LDEwICsxNzcw
LDE5IEBAIGNsYXNzIFZhbHVlQXJyYXkzNiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAg
IG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlb
XSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2
MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2
MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2
MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAg
ICAgICB2MzZffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0
PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4o
djEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVf
KSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+
KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIy
XyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYy
OV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyks
IHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzZfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0x
NjgyLDEwICsxODUyLDE5IEBAIGNsYXNzIFZhbHVlQXJyYXkzNyB7CiAKICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywg
djlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2
MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2
MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRf
LCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3Rh
dGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nh
c3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4o
djEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJf
KSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+
KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5
XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYy
Nl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3Rh
dGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3Xyl9Owog
ICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTc1NiwxMCArMTkzNSwxOSBA
QCBjbGFzcyBWYWx1ZUFycmF5MzggewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVy
YXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7
djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywK
LSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5Xywg
djIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3Xywg
djI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAg
djM2XywgdjM3XywgdjM4X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+
KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyks
IHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0
aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19j
YXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0
PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2Fz
dDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+
KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMz
XyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxU
Pih2MzhfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0xODMxLDEw
ICsyMDE5LDIwIEBAIGNsYXNzIFZhbHVlQXJyYXkzOSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2
MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2
MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2
MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVf
LAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlffTsKKyAgICBjb25zdCBUIGFycmF5W10g
PSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nh
c3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19j
YXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8
VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0
PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4o
djI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBf
KSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+
KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3
XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKX07
CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0xOTA4LDEwICsyMTA2LDIw
IEBAIGNsYXNzIFZhbHVlQXJyYXk0MCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9w
ZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9
IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFf
LAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlf
LCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2Mjdf
LCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAg
ICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7
c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGlj
X2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8
VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0
PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4o
djE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+
KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4
XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwg
c3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYz
NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3Xyks
IHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3Rh
dGljX2Nhc3Q8VD4odjQwXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApA
QCAtMTk4NywxMCArMjE5NSwyMCBAQCBjbGFzcyBWYWx1ZUFycmF5NDEgewogCiAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAg
ICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2
OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2
XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0
XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywg
djM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxX307
CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0
PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0
XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0
YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0
aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19j
YXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0
PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2Fz
dDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+
KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2
XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxU
Pih2NDFfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0yMDY3LDEw
ICsyMjg1LDIxIEBAIGNsYXNzIFZhbHVlQXJyYXk0MiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2
MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2
MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2
MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVf
LAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJffTsKKyAg
ICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19j
YXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8
VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0
PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Mjdf
KSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+
KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0
XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwg
c3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKX07CiAgICAgcmV0dXJuIFZhbHVlc0lu
KGFycmF5KTsKICAgfQogCkBAIC0yMTQ4LDEwICsyMzc3LDIxIEBAIGNsYXNzIFZhbHVlQXJyYXk0
MyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9y
PFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8s
IHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNf
LCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2
MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2
MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2
MzlfLCB2NDBfLCB2NDFfLCB2NDJfLCB2NDNffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3Rh
dGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nh
c3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4o
djEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJf
KSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+
KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5
XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYy
Nl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3Rh
dGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0
YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihh
cnJheSk7CiAgIH0KIApAQCAtMjIzMSwxMCArMjQ3MSwyMSBAQCBjbGFzcyBWYWx1ZUFycmF5NDQg
ewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2
NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywg
djE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIz
XywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMx
XywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5
XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0X307CisgICAgY29uc3QgVCBhcnJheVtdID0g
e3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRp
Y19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0
PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2Fz
dDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+
KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIx
XyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYy
OF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyks
IHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2
MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18p
LCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0
YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRf
KX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0yMzE1LDEwICsyNTY2
LDIyIEBAIGNsYXNzIFZhbHVlQXJyYXk0NSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAg
IG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlb
XSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2
MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2
MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2
MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAg
ICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJfLCB2NDNfLCB2NDRf
LCB2NDVffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3Rh
dGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nh
c3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+
KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEz
XyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwg
c3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYy
MF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyks
IHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0
YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRp
Y19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGljX2Nh
c3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2NDVfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0yNDAxLDEw
ICsyNjY0LDIyIEBAIGNsYXNzIFZhbHVlQXJyYXk0NiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2
MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2
MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2
MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVf
LAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJfLCB2NDNf
LCB2NDRfLCB2NDVfLCB2NDZffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8
VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNf
KSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0
YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRp
Y19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19j
YXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8
VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0
PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4o
djQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJf
KSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2NDVfKSwgc3RhdGljX2Nhc3Q8VD4odjQ2Xyl9OwogICAgIHJldHVybiBW
YWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjQ4OSwxMSArMjc2NCwyMiBAQCBjbGFzcyBWYWx1
ZUFycmF5NDcgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdl
bmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYz
XywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEy
XywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywg
djIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5Xywg
djMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3Xywg
djM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0XywgdjQ1XywgdjQ2XywKLSAg
ICAgICAgdjQ3X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyks
IHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRp
Y19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2Fz
dDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+
KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1
XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYy
Ml8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2
MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8p
LCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0
YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2Mzhf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBz
dGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRp
Y19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBzdGF0aWNfY2FzdDxUPih2NDdfKX07
CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0yNTc5LDExICsyODY1LDIz
IEBAIGNsYXNzIFZhbHVlQXJyYXk0OCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9w
ZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9
IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFf
LAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlf
LCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2Mjdf
LCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAg
ICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJfLCB2NDNfLCB2NDRfLCB2
NDVfLCB2NDZfLCB2NDdfLAotICAgICAgICB2NDhffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7
c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGlj
X2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8
VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0
PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4o
djE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+
KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4
XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwg
c3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYz
NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3Xyks
IHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3Rh
dGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDVfKSwgc3RhdGljX2Nhc3Q8VD4odjQ2XyksIHN0
YXRpY19jYXN0PFQ+KHY0N18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDhfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0yNjcwLDExICsyOTY4LDIzIEBAIGNs
YXNzIFZhbHVlQXJyYXk0OSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8s
IHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAg
ICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBf
LCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2Mjhf
LCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZf
LCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJfLCB2NDNfLCB2NDRfLCB2NDVfLCB2
NDZfLCB2NDdfLAotICAgICAgICB2NDhfLCB2NDlffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7
c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGlj
X2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8
VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0
PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4o
djE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+
KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4
XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwg
c3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYz
NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3Xyks
IHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3Rh
dGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDVfKSwgc3RhdGljX2Nhc3Q8VD4odjQ2XyksIHN0
YXRpY19jYXN0PFQ+KHY0N18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDhfKSwgc3RhdGlj
X2Nhc3Q8VD4odjQ5Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAt
Mjc2MiwxMSArMzA3MiwyMyBAQCBjbGFzcyBWYWx1ZUFycmF5NTAgewogCiAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBj
b25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8s
IHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2Xywg
djE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0Xywg
djI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0
XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQy
XywgdjQzXywgdjQ0XywgdjQ1XywgdjQ2XywgdjQ3XywKLSAgICAgICAgdjQ4XywgdjQ5XywgdjUw
X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19j
YXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+
KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2Xyks
IHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBz
dGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRp
Y19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0
aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19j
YXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNf
Y2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0
PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2Fz
dDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+
KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ1
XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBzdGF0aWNfY2FzdDxUPih2NDdfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjQ4XyksIHN0YXRpY19jYXN0PFQ+KHY0OV8pLCBzdGF0aWNfY2FzdDxU
Pih2NTBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0yODI2LDcg
KzMxNDgsNyBAQCBjbGFzcyBWYWx1ZUFycmF5NTAgewogICBjb25zdCBUNTAgdjUwXzsKIH07CiAK
LSNpZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNfQ09NQklORQogLy8gSU5URVJO
QUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KIC8vCiAvLyBHZW5l
cmF0ZXMgdmFsdWVzIGZyb20gdGhlIENhcnRlc2lhbiBwcm9kdWN0IG9mIHZhbHVlcyBwcm9kdWNl
ZApAQCAtMjgzNCw5ICszMTU2LDkgQEAgY2xhc3MgVmFsdWVBcnJheTUwIHsKIC8vCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVy
YXRvcjIKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnR1cGxl
PFQxLCBUMj4gPiB7CisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVz
dGluZzo6dHVwbGU8VDEsIFQyPiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnR1cGxl
PFQxLCBUMj4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyPiBQ
YXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjIoY29uc3QgUGFyYW1HZW5l
cmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIpCkBAIC0y
ODgyLDcgKzMyMDQsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMgogICAgIHZp
cnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsK
ICAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwogICAgIH0KLSAgICB2aXJ0dWFsIGNv
bnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsg
fQorICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4g
Y3VycmVudF92YWx1ZV8uZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBh
cmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKICAgICAgIC8v
IEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVy
CiAgICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNh
c3QuCkBAIC0yOTE0LDcgKzMyMzYsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9y
MgogCiAgICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgp
KQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVu
dDJfKTsKKyAgICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVu
dDFfLCAqY3VycmVudDJfKSk7CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAg
ICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdo
ZW4gZWl0aGVyIG9mIHRoZQpAQCAtMjkzNiw3ICszMjU4LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjIKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0
ZXJhdG9yIGJlZ2luMl87CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+Ojpp
dGVyYXRvciBlbmQyXzsKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9y
IGN1cnJlbnQyXzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0
cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjI6Okl0ZXJhdG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3Np
Z25tZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtMjk0OSw5ICszMjcxLDkgQEAgY2xhc3MgQ2FydGVz
aWFuUHJvZHVjdEdlbmVyYXRvcjIKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDM+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMwotICAgIDog
cHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMz4g
PiB7CisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVw
bGU8VDEsIFQyLCBUMz4gPiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0dXBsZTxUMSwg
VDIsIFQzPiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQz
PiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjMoY29uc3QgUGFyYW1H
ZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMpCkBAIC0zMDA1LDcgKzMzMjcsNyBAQCBjbGFzcyBD
YXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMwogICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVy
ZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKICAgICAgIHJldHVybiBuZXcgSXRlcmF0
b3IoKnRoaXMpOwogICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgp
IGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQorICAgIHZpcnR1YWwgY29uc3QgUGFy
YW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gY3VycmVudF92YWx1ZV8uZ2V0KCk7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFy
YW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKICAgICAgIC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdl
bmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCiAgICAgICAvLyBpdGVyYXRvciBpcyBv
ZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCkBAIC0zMDQxLDcgKzMzNjMsNyBA
QCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMwogCiAgICAgdm9pZCBDb21wdXRlQ3Vy
cmVudFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVl
XyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfKTsKKyAgICAg
ICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVu
dDJfLCAqY3VycmVudDNfKSk7CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAg
ICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdo
ZW4gZWl0aGVyIG9mIHRoZQpAQCAtMzA2Nyw3ICszMzg5LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjMKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0
ZXJhdG9yIGJlZ2luM187CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+Ojpp
dGVyYXRvciBlbmQzXzsKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9y
IGN1cnJlbnQzXzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0
cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjM6Okl0ZXJhdG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3Np
Z25tZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtMzA4MSw5ICszNDAzLDkgQEAgY2xhc3MgQ2FydGVz
aWFuUHJvZHVjdEdlbmVyYXRvcjMKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0PgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVy
YXRvcjQKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnR1cGxl
PFQxLCBUMiwgVDMsIFQ0PiA+IHsKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFj
ZTwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPiB7CiAgcHVibGljOgotICB0eXBl
ZGVmIDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6
dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Q
cm9kdWN0R2VuZXJhdG9yNChjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywK
QEAgLTMxNDYsNyArMzQ2OCw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0CiAg
ICAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29u
c3QgewogICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1
YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFs
dWVfOyB9CisgICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJl
dHVybiBjdXJyZW50X3ZhbHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29u
c3QgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAg
ICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUg
b3RoZXIKICAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBk
b3duY2FzdC4KQEAgLTMxODYsOCArMzUwOCw4IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3I0CiAKICAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0
RW5kKCkpCi0gICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpj
dXJyZW50Ml8sICpjdXJyZW50M18sCi0gICAgICAgICAgICAqY3VycmVudDRfKTsKKyAgICAgICAg
Y3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJf
LCAqY3VycmVudDNfLAorICAgICAgICAgICAgKmN1cnJlbnQ0XykpOwogICAgIH0KICAgICBib29s
IEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0
aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAgLTMyMTcsNyArMzUzOSw3
IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0CiAgICAgY29uc3QgdHlwZW5hbWUg
UGFyYW1HZW5lcmF0b3I8VDQ+OjppdGVyYXRvciBiZWdpbjRfOwogICAgIGNvbnN0IHR5cGVuYW1l
IFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgZW5kNF87CiAgICAgdHlwZW5hbWUgUGFyYW1H
ZW5lcmF0b3I8VDQ+OjppdGVyYXRvciBjdXJyZW50NF87Ci0gICAgUGFyYW1UeXBlIGN1cnJlbnRf
dmFsdWVfOworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsKICAgfTsg
IC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0OjpJdGVyYXRvcgogCiAgIC8vIE5v
IGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTMyMzIsOSAr
MzU1NCw5IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDU+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNQotICAgIDogcHVibGljIFBh
cmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiA+
IHsKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBs
ZTxUMSwgVDIsIFQzLCBUNCwgVDU+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVw
bGU8VDEsIFQyLCBUMywgVDQsIFQ1PiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0
dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0
R2VuZXJhdG9yNShjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29uc3QgUGFy
YW1HZW5lcmF0b3I8VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKQEAgLTMz
MDQsNyArMzYyNiw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1CiAgICAgdmly
dHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3Qgewog
ICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwgY29u
c3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9
CisgICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiBj
dXJyZW50X3ZhbHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFy
YW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAgICAgLy8g
SGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIK
ICAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2Fz
dC4KQEAgLTMzNDgsOCArMzY3MCw4IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1
CiAKICAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkp
Ci0gICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50
Ml8sICpjdXJyZW50M18sCi0gICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVudDVfKTsKKyAg
ICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3Vy
cmVudDJfLCAqY3VycmVudDNfLAorICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1cnJlbnQ1Xykp
OwogICAgIH0KICAgICBib29sIEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBv
cnQgaXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUK
QEAgLTMzODMsNyArMzcwNSw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1CiAg
ICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+OjppdGVyYXRvciBiZWdpbjVfOwog
ICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgZW5kNV87CiAg
ICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+OjppdGVyYXRvciBjdXJyZW50NV87Ci0gICAg
UGFyYW1UeXBlIGN1cnJlbnRfdmFsdWVfOworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJy
ZW50X3ZhbHVlXzsKICAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1OjpJ
dGVyYXRvcgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBv
cnRlZC4KQEAgLTM0MDAsMTAgKzM3MjIsMTAgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVy
YXRvcjUKIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0
eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgdHlwZW5hbWUgVDY+CiBjbGFzcyBDYXJ0ZXNp
YW5Qcm9kdWN0R2VuZXJhdG9yNgotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNl
PCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LAorICAgIDogcHVibGljIFBhcmFtR2Vu
ZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwKICAg
ICAgICAgVDY+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNj4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNj4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3I2KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdl
bmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLApAQCAtMzQ4MSw3
ICszODAzLDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjYKICAgICB2aXJ0dWFs
IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7CiAgICAg
ICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQ
YXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KKyAg
ICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJl
bnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0
ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAvLyBIYXZp
bmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgogICAg
ICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0LgpA
QCAtMzUyOSw4ICszODUxLDggQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjYKIAog
ICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKICAgICAgIGlmICghQXRFbmQoKSkKLSAg
ICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywg
KmN1cnJlbnQzXywKLSAgICAgICAgICAgICpjdXJyZW50NF8sICpjdXJyZW50NV8sICpjdXJyZW50
Nl8pOworICAgICAgICBjdXJyZW50X3ZhbHVlXy5yZXNldChuZXcgUGFyYW1UeXBlKCpjdXJyZW50
MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18sCisgICAgICAgICAgICAqY3VycmVudDRfLCAqY3Vy
cmVudDVfLCAqY3VycmVudDZfKSk7CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAg
ICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdl
IHdoZW4gZWl0aGVyIG9mIHRoZQpAQCAtMzU2OCw3ICszODkwLDcgQEAgY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjYKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46
Oml0ZXJhdG9yIGJlZ2luNl87CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDY+
OjppdGVyYXRvciBlbmQ2XzsKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0ZXJh
dG9yIGN1cnJlbnQ2XzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2Vk
X3B0cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjY6Okl0ZXJhdG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBh
c3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtMzU4NiwxMCArMzkwOCwxMCBAQCBjbGFzcyBD
YXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNgogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICB0eXBlbmFt
ZSBUNiwgdHlwZW5hbWUgVDc+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNwotICAg
IDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0
ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAogICAgICAgICBUNz4gPiB7CiAg
cHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
Nz4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDc+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNyhj
b25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8
VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKQEAgLTM2NzUsNyArMzk5Nyw3
IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3CiAgICAgdmlydHVhbCBQYXJhbUl0
ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3QgewogICAgICAgcmV0dXJu
IG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBl
KiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9CisgICAgdmlydHVh
bCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiBjdXJyZW50X3ZhbHVl
Xy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRvcklu
dGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAgICAgLy8gSGF2aW5nIHRoZSBz
YW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKICAgICAgIC8vIGl0
ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KQEAgLTM3Mjcs
OCArNDA0OSw4IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3CiAKICAgICB2b2lk
IENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkpCi0gICAgICAgIGN1
cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50
M18sCi0gICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVudDVfLCAqY3VycmVudDZfLCAqY3Vy
cmVudDdfKTsKKyAgICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3Vy
cmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAorICAgICAgICAgICAgKmN1cnJlbnQ0Xywg
KmN1cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1cnJlbnQ3XykpOwogICAgIH0KICAgICBib29sIEF0
RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUg
ZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAgLTM3NzAsNyArNDA5Miw3IEBA
IGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3CiAgICAgY29uc3QgdHlwZW5hbWUgUGFy
YW1HZW5lcmF0b3I8VDc+OjppdGVyYXRvciBiZWdpbjdfOwogICAgIGNvbnN0IHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQ3Pjo6aXRlcmF0b3IgZW5kN187CiAgICAgdHlwZW5hbWUgUGFyYW1HZW5l
cmF0b3I8VDc+OjppdGVyYXRvciBjdXJyZW50N187Ci0gICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFs
dWVfOworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsKICAgfTsgIC8v
IGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3OjpJdGVyYXRvcgogCiAgIC8vIE5vIGlt
cGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTM3ODksMTAgKzQx
MTEsMTAgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjcKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDUsCiAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOD4KIGNsYXNzIENh
cnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4Ci0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRl
cmZhY2U8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAorICAgIDogcHVibGlj
IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsCiAgICAgICAgIFQ3LCBUOD4gPiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3Rk
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+IFBhcmFtVHlwZTsKKyAgdHlw
ZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4gUGFy
YW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4KGNvbnN0IFBhcmFtR2VuZXJh
dG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUMz4mIGczLApAQCAtMzg4OCw3ICs0MjEwLDcgQEAgY2xhc3MgQ2FydGVz
aWFuUHJvZHVjdEdlbmVyYXRvcjgKICAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8
UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7CiAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0
aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25z
dCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlw
ZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAg
dmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlw
ZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAvLyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0
b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgogICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhl
IHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0LgpAQCAtMzk0NCw4ICs0MjY2LDggQEAgY2xh
c3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjgKIAogICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRW
YWx1ZSgpIHsKICAgICAgIGlmICghQXRFbmQoKSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQ
YXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKLSAgICAgICAgICAg
ICpjdXJyZW50NF8sICpjdXJyZW50NV8sICpjdXJyZW50Nl8sICpjdXJyZW50N18sICpjdXJyZW50
OF8pOworICAgICAgICBjdXJyZW50X3ZhbHVlXy5yZXNldChuZXcgUGFyYW1UeXBlKCpjdXJyZW50
MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18sCisgICAgICAgICAgICAqY3VycmVudDRfLCAqY3Vy
cmVudDVfLCAqY3VycmVudDZfLCAqY3VycmVudDdfLCAqY3VycmVudDhfKSk7CiAgICAgfQogICAg
IGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBw
YXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQpAQCAtMzk5MSw3ICs0
MzEzLDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjgKICAgICBjb25zdCB0eXBl
bmFtZSBQYXJhbUdlbmVyYXRvcjxUOD46Oml0ZXJhdG9yIGJlZ2luOF87CiAgICAgY29uc3QgdHlw
ZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDg+OjppdGVyYXRvciBlbmQ4XzsKICAgICB0eXBlbmFtZSBQ
YXJhbUdlbmVyYXRvcjxUOD46Oml0ZXJhdG9yIGN1cnJlbnQ4XzsKLSAgICBQYXJhbVR5cGUgY3Vy
cmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwog
ICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjg6Okl0ZXJhdG9yCiAKICAg
Ly8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtNDAx
MSwxMCArNDMzMywxMCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOAogdGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0
eXBlbmFtZSBUNSwKICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0
eXBlbmFtZSBUOT4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5Ci0gICAgOiBwdWJs
aWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LAorICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6
OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCiAgICAgICAgIFQ3LCBUOCwgVDk+ID4gewog
IHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsIFQ4LCBUOT4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblBy
b2R1Y3RHZW5lcmF0b3I5KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLApA
QCAtNDExNyw3ICs0NDM5LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjkKICAg
ICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25z
dCB7CiAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVh
bCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1
ZV87IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0
dXJuIGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25z
dCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAg
ICAvLyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBv
dGhlcgogICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRv
d25jYXN0LgpAQCAtNDE3Nyw5ICs0NDk5LDkgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVy
YXRvcjkKIAogICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKICAgICAgIGlmICghQXRF
bmQoKSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1
cnJlbnQyXywgKmN1cnJlbnQzXywKKyAgICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBh
cmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAogICAgICAgICAgICAg
KmN1cnJlbnQ0XywgKmN1cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1cnJlbnQ3XywgKmN1cnJlbnQ4
XywKLSAgICAgICAgICAgICpjdXJyZW50OV8pOworICAgICAgICAgICAgKmN1cnJlbnQ5XykpOwog
ICAgIH0KICAgICBib29sIEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQg
aXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAg
LTQyMjksNyArNDU1MSw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5CiAgICAg
Y29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDk+OjppdGVyYXRvciBiZWdpbjlfOwogICAg
IGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ5Pjo6aXRlcmF0b3IgZW5kOV87CiAgICAg
dHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDk+OjppdGVyYXRvciBjdXJyZW50OV87Ci0gICAgUGFy
YW1UeXBlIGN1cnJlbnRfdmFsdWVfOworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50
X3ZhbHVlXzsKICAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5OjpJdGVy
YXRvcgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRl
ZC4KQEAgLTQyNTAsMTAgKzQ1NzIsMTAgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjkKIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBl
bmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMD4KIGNsYXNzIENhcnRlc2lhblByb2R1
Y3RHZW5lcmF0b3IxMAotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0
ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVy
YXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAog
ICAgICAgICBUNywgVDgsIFQ5LCBUMTA+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwPiBQYXJhbVR5cGU7
CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywg
VDgsIFQ5LCBUMTA+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMTAo
Y29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9y
PFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBAIC00MzY0LDcgKzQ2ODYs
NyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMTAKICAgICB2aXJ0dWFsIFBhcmFt
SXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7CiAgICAgICByZXR1
cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJhbVR5
cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KKyAgICB2aXJ0
dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfdmFs
dWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJhdG9y
SW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAvLyBIYXZpbmcgdGhl
IHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgogICAgICAgLy8g
aXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0LgpAQCAtNDQy
OCw5ICs0NzUwLDkgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjEwCiAKICAgICB2
b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkpCi0gICAgICAg
IGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8sICpjdXJy
ZW50M18sCisgICAgICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJhbVR5cGUoKmN1cnJl
bnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKICAgICAgICAgICAgICpjdXJyZW50NF8sICpj
dXJyZW50NV8sICpjdXJyZW50Nl8sICpjdXJyZW50N18sICpjdXJyZW50OF8sCi0gICAgICAgICAg
ICAqY3VycmVudDlfLCAqY3VycmVudDEwXyk7CisgICAgICAgICAgICAqY3VycmVudDlfLCAqY3Vy
cmVudDEwXykpOwogICAgIH0KICAgICBib29sIEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2Ug
bXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhl
ciBvZiB0aGUKQEAgLTQ0ODQsNyArNDgwNiw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3IxMAogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxMD46Oml0ZXJhdG9y
IGJlZ2luMTBfOwogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxMD46Oml0ZXJh
dG9yIGVuZDEwXzsKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMTA+OjppdGVyYXRvciBj
dXJyZW50MTBfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKKyAgICBsaW5rZWRfcHRy
PFBhcmFtVHlwZT4gY3VycmVudF92YWx1ZV87CiAgIH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yMTA6Okl0ZXJhdG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3Np
Z25tZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtNDUxNSw4ICs0ODM3LDggQEAgY2xhc3MgQ2FydGVz
aWFuUHJvZHVjdEhvbGRlcjIgewogQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjIoY29uc3QgR2VuZXJh
dG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyKQogICAgICAgOiBnMV8oZzEpLCBnMl8oZzIp
IHt9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyPiA+KCkgY29uc3QgewotICAgIHJldHVy
biBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMj4gPigKKyAgb3BlcmF0b3IgUGFy
YW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyPiA+KCkgY29uc3QgeworICAgIHJl
dHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDI+ID4oCiAgICAgICAg
IG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMjxUMSwgVDI+KAogICAgICAgICBzdGF0aWNf
Y2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJh
bUdlbmVyYXRvcjxUMj4gPihnMl8pKSk7CkBAIC00NTM3LDggKzQ4NTksOCBAQCBDYXJ0ZXNpYW5Q
cm9kdWN0SG9sZGVyMyhjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIs
CiAgICAgY29uc3QgR2VuZXJhdG9yMyYgZzMpCiAgICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGcz
XyhnMykge30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUg
VDM+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMz4g
PigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwg
VDIsIFQzPiA+KAorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxU
MSwgVDIsIFQzPiA+KCkgY29uc3QgeworICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0
aW5nOjp0dXBsZTxUMSwgVDIsIFQzPiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdl
bmVyYXRvcjM8VDEsIFQyLCBUMz4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9y
PFQxPiA+KGcxXyksCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcy
XyksCkBAIC00NTYyLDggKzQ4ODQsOCBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNChjb25zdCBH
ZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgY29uc3QgR2VuZXJhdG9y
MyYgZzMsIGNvbnN0IEdlbmVyYXRvcjQmIGc0KQogICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBn
M18oZzMpLCBnNF8oZzQpIHt9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIs
IHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6
c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1H
ZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPigKKyAgb3BlcmF0b3IgUGFy
YW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+ID4oKSBjb25zdCB7
CisgICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0PiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQ8VDEsIFQyLCBU
MywgVDQ+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLAog
ICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pLApAQCAtNDU4OSw4
ICs0OTExLDggQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjUoY29uc3QgR2VuZXJhdG9yMSYgZzEs
IGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICAgIGNvbnN0IEdlbmVyYXRvcjMmIGczLCBjb25zdCBH
ZW5lcmF0b3I0JiBnNCwgY29uc3QgR2VuZXJhdG9yNSYgZzUpCiAgICAgICA6IGcxXyhnMSksIGcy
XyhnMiksIGczXyhnMyksIGc0XyhnNCksIGc1XyhnNSkge30KICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4K
LSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwg
VDU+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8
VDEsIFQyLCBUMywgVDQsIFQ1PiA+KAorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0
aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+ID4oKSBjb25zdCB7CisgICAgcmV0dXJuIFBh
cmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gPigKICAg
ICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1PFQxLCBUMiwgVDMsIFQ0LCBUNT4o
CiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcxXyksCiAgICAgICAg
IHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyksCkBAIC00NjIwLDggKzQ5NDIs
OCBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNihjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3Qg
R2VuZXJhdG9yMiYgZzIsCiAgICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhnMyksIGc0Xyhn
NCksIGc1XyhnNSksIGc2XyhnNikge30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICAgIHR5cGVu
YW1lIFQ2PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDY+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6
OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4gPigKKyAgb3BlcmF0b3IgUGFyYW1H
ZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4gPigpIGNv
bnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNj4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0
b3I2PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdl
bmVyYXRvcjxUMT4gPihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxU
Mj4gPihnMl8pLApAQCAtNDY1Myw5ICs0OTc1LDkgQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjco
Y29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICAgICAgOiBnMV8o
ZzEpLCBnMl8oZzIpLCBnM18oZzMpLCBnNF8oZzQpLCBnNV8oZzUpLCBnNl8oZzYpLCBnN18oZzcp
IHt9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0
eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+
Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNiwKICAgICAgIFQ3PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQ
YXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PiA+
KAorICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNz4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0
b3I3PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFy
YW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0
b3I8VDI+ID4oZzJfKSwKQEAgLTQ2OTEsOSArNTAxMyw5IEBAIENhcnRlc2lhblByb2R1Y3RIb2xk
ZXI4KGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKICAgICAgICAg
ICBnOF8oZzgpIHt9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVu
YW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgICB0eXBlbmFtZSBUNiwgdHlw
ZW5hbWUgVDcsIHR5cGVuYW1lIFQ4PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6
OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LAorICBvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywKICAgICAg
IFQ4PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxl
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4gPigKKyAgICByZXR1cm4gUGFyYW1HZW5l
cmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiA+
KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjg8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4PigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+
ID4oZzFfKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwK
QEAgLTQ3MzIsOSArNTA1NCw5IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXI5KGNvbnN0IEdlbmVy
YXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKICAgICAgICAgICBnOV8oZzkpIHt9CiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVu
YW1lIFQ4LCB0eXBlbmFtZSBUOT4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0
dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsCisgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwK
ICAgICAgIFQ5PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6
OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwKKyAgICByZXR1cm4gUGFyYW1H
ZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LAogICAgICAgICBUOT4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+KAogICAgICAgICBzdGF0aWNfY2Fz
dDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLApAQCAtNDc3NiwxMCArNTA5OCwxMCBAQCBDYXJ0
ZXNpYW5Qcm9kdWN0SG9sZGVyMTAoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRv
cjImIGcyLAogICAgICAgICAgIGc5XyhnOSksIGcxMF8oZzEwKSB7fQogICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1l
IFQ1LAogICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5h
bWUgVDksIHR5cGVuYW1lIFQxMD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0
dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsCi0gICAgICBUOSwgVDEwPiA+KCkg
Y29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwKLSAgICAgICAgVDksIFQxMD4gPigKKyAgb3BlcmF0b3Ig
UGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsIFQ4LCBUOSwKKyAgICAgIFQxMD4gPigpIGNvbnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5l
cmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBU
OSwKKyAgICAgICAgVDEwPiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjEwPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksCiAgICAgICAgICAgICBUMTA+
KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLApAQCAtNDgx
MCwxMSArNTEzMiw5IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXIxMChjb25zdCBHZW5lcmF0b3Ix
JiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgIGNvbnN0IEdlbmVyYXRvcjEwIGcxMF87CiB9
OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjEwCiAKLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX0NPTUJJTkUKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCiAKIH0gIC8vIG5hbWVz
cGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotI2VuZGlmICAvLyAgR1RF
U1RfSEFTX1BBUkFNX1RFU1QKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVS
TkFMX0dURVNUX1BBUkFNX1VUSUxfR0VORVJBVEVEX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2Vu
ZXJhdGVkLmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCmluZGV4IGJhZWRmYmMyZDdl
ODM0MWI1YjU1OWQ5Y2UzM2I4ZDg3NDUzZGVkNDIuLmFlOGM1N2I1MmJhMWY3ODU5MWM1M2E1OTI5
ODM2OTQ3NDE2NjhiYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFy
YW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCkBAIC0yOSw4ICsyOSw3IEBAICR2YXIgbWF4dHVwbGUg
PSAxMCAgJCQgTWF4aW11bSBudW1iZXIgb2YgQ29tYmluZSBhcmd1bWVudHMgd2Ugd2FudCB0byBz
dXBwb3J0LgogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ly8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKwogCiAvLyBUeXBl
IGFuZCBmdW5jdGlvbiB1dGlsaXRpZXMgZm9yIGltcGxlbWVudGluZyBwYXJhbWV0ZXJpemVkIHRl
c3RzLgogLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBhIFNDUklQVC4gIERPIE5PVCBFRElU
IEJZIEhBTkQhCkBAIC0zOSwxOSArMzgsMTYgQEAgJHZhciBtYXh0dXBsZSA9IDEwICAkJCBNYXhp
bXVtIG51bWJlciBvZiBDb21iaW5lIGFyZ3VtZW50cyB3ZSB3YW50IHRvIHN1cHBvcnQuCiAvLyBh
bmQgYXQgbW9zdCAkbWF4dHVwbGUgYXJndW1lbnRzIGluIENvbWJpbmUuIFBsZWFzZSBjb250YWN0
CiAvLyBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20gaWYgeW91IG5lZWQgbW9y
ZS4KIC8vIFBsZWFzZSBub3RlIHRoYXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgdG8gQ29tYmlu
ZSBpcyBsaW1pdGVkCi0vLyBieSB0aGUgbWF4aW11bSBhcml0eSBvZiB0aGUgaW1wbGVtZW50YXRp
b24gb2YgdHIxOjp0dXBsZSB3aGljaCBpcworLy8gYnkgdGhlIG1heGltdW0gYXJpdHkgb2YgdGhl
IGltcGxlbWVudGF0aW9uIG9mIHR1cGxlIHdoaWNoIGlzCiAvLyBjdXJyZW50bHkgc2V0IGF0ICRt
YXh0dXBsZS4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVm
IEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFURURf
SF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElM
X0dFTkVSQVRFRF9IXwogCi0vLyBzY3JpcHRzL2Z1c2VfZ3Rlc3QucHkgZGVwZW5kcyBvbiBndGVz
dCdzIG93biBoZWFkZXIgYmVpbmcgI2luY2x1ZGVkCi0vLyAqdW5jb25kaXRpb25hbGx5Ki4gIFRo
ZXJlZm9yZSB0aGVzZSAjaW5jbHVkZXMgY2Fubm90IGJlIG1vdmVkCi0vLyBpbnNpZGUgI2lmIEdU
RVNUX0hBU19QQVJBTV9URVNULgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFt
LXV0aWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+Ci0KLSNpZiBH
VEVTVF9IQVNfUEFSQU1fVEVTVAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFt
LXV0aWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKIG5hbWVz
cGFjZSB0ZXN0aW5nIHsKIApAQCAtNTksOCArNTUsOCBAQCBuYW1lc3BhY2UgdGVzdGluZyB7CiAv
LyBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBG
b3J3YXJkSXRlcmF0b3I+CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ci0gICAgdHlwZW5hbWUg
OjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiBWYWx1
ZXNJbigKLSAgICAgICAgRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5k
KTsKKyAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2Fy
ZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4KK1ZhbHVlc0luKEZvcndhcmRJdGVyYXRvciBiZWdpbiwg
Rm9yd2FyZEl0ZXJhdG9yIGVuZCk7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4K
IGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxUPiBWYWx1ZXNJbihjb25zdCBUICgmYXJyYXkpW05d
KTsKQEAgLTcyLDMzICs2OCwxOCBAQCBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dHlwZW5hbWUg
Q29udGFpbmVyOjp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAK
IC8vIFVzZWQgaW4gdGhlIFZhbHVlcygpIGZ1bmN0aW9uIHRvIHByb3ZpZGUgcG9seW1vcnBoaWMg
Y2FwYWJpbGl0aWVzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxPgotY2xhc3MgVmFsdWVBcnJheTEg
ewotIHB1YmxpYzoKLSAgZXhwbGljaXQgVmFsdWVBcnJheTEoVDEgdjEpIDogdjFfKHYxKSB7fQot
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigp
IGNvbnN0IHsgcmV0dXJuIFZhbHVlc0luKCZ2MV8sICZ2MV8gKyAxKTsgfQotCi0gcHJpdmF0ZToK
LSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2
b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MSYgb3RoZXIpOwotCi0gIGNvbnN0IFQxIHYx
XzsKLX07Ci0KLSRyYW5nZSBpIDIuLm4KKyRyYW5nZSBpIDEuLm4KICRmb3IgaSBbWwogJHJhbmdl
IGogMS4uaQogCiB0ZW1wbGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIFQkal1dPgogY2xhc3MgVmFs
dWVBcnJheSRpIHsKICBwdWJsaWM6Ci0gIFZhbHVlQXJyYXkkaSgkZm9yIGosIFtbVCRqIHYkal1d
KSA6ICRmb3IgaiwgW1t2JChqKV8odiRqKV1dIHt9CisgICRpZiBpPT0xIFtbZXhwbGljaXQgXV1W
YWx1ZUFycmF5JGkoJGZvciBqLCBbW1QkaiB2JGpdXSkgOiAkZm9yIGosIFtbdiQoailfKHYkaild
XSB7fQogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7JGZvciBqLCBbW3YkKGopX11d
fTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7JGZvciBqLCBbW3N0YXRpY19jYXN0PFQ+KHYkKGop
XyldXX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0xMTUsNyArOTYs
NyBAQCAkZm9yIGogW1sKIAogXV0KIAotI2lmIEdURVNUX0hBU19DT01CSU5FCisjIGlmIEdURVNU
X0hBU19DT01CSU5FCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4g
VVNFUiBDT0RFLgogLy8KIC8vIEdlbmVyYXRlcyB2YWx1ZXMgZnJvbSB0aGUgQ2FydGVzaWFuIHBy
b2R1Y3Qgb2YgdmFsdWVzIHByb2R1Y2VkCkBAIC0xMjgsOSArMTA5LDkgQEAgJHJhbmdlIGsgMi4u
aQogCiB0ZW1wbGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIFQkal1dPgogY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvciRpCi0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8
IDo6c3RkOjp0cjE6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4gPiB7CisgICAgOiBwdWJsaWMgUGFy
YW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8JGZvciBqLCBbW1Qkal1dPiA+
IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnRyMTo6dHVwbGU8JGZvciBqLCBbW1Qkal1d
PiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+
IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yJGkoJGZvciBqLCBbW2Nv
bnN0IFBhcmFtR2VuZXJhdG9yPFQkaj4mIGckal1dKQogICAgICAgOiAkZm9yIGosIFtbZyQoailf
KGckaildXSB7fQpAQCAtMTgwLDcgKzE2MSw3IEBAICRmb3IgayBbWwogICAgIHZpcnR1YWwgUGFy
YW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKICAgICAgIHJl
dHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwogICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFt
VHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQorICAgIHZp
cnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gY3VycmVudF92
YWx1ZV8uZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0
b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKICAgICAgIC8vIEhhdmluZyB0
aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCiAgICAgICAv
LyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCkBAIC0y
MTIsNyArMTkzLDcgQEAgJGZvciBrIFtbCiAKICAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUo
KSB7CiAgICAgICBpZiAoIUF0RW5kKCkpCi0gICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1U
eXBlKCRmb3IgaiwgW1sqY3VycmVudCQoailfXV0pOworICAgICAgICBjdXJyZW50X3ZhbHVlXy5y
ZXNldChuZXcgUGFyYW1UeXBlKCRmb3IgaiwgW1sqY3VycmVudCQoailfXV0pKTsKICAgICB9CiAg
ICAgYm9vbCBBdEVuZCgpIGNvbnN0IHsKICAgICAgIC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9y
IHBhc3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2hlbiBlaXRoZXIgb2YgdGhlCkBAIC0yMzcsNyAr
MjE4LDcgQEAgJGZvciBqIFtbCiAgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VCRqPjo6aXRl
cmF0b3IgY3VycmVudCQoailfOwogXV0KIAotICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsK
KyAgICBsaW5rZWRfcHRyPFBhcmFtVHlwZT4gY3VycmVudF92YWx1ZV87CiAgIH07ICAvLyBjbGFz
cyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yJGk6Okl0ZXJhdG9yCiAKICAgLy8gTm8gaW1wbGVt
ZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtMjY5LDggKzI1MCw4IEBA
IGNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXIkaSB7CiBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVy
JGkoJGZvciBqLCBbW2NvbnN0IEdlbmVyYXRvciRqJiBnJGpdXSkKICAgICAgIDogJGZvciBqLCBb
W2ckKGopXyhnJGopXV0ge30KICAgdGVtcGxhdGUgPCRmb3IgaiwgW1t0eXBlbmFtZSBUJGpdXT4K
LSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0cjE6OnR1cGxlPCRmb3IgaiwgW1tU
JGpdXT4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0cjE6
OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4gPigKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6
dGVzdGluZzo6dHVwbGU8JGZvciBqLCBbW1Qkal1dPiA+KCkgY29uc3QgeworICAgIHJldHVybiBQ
YXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4oCiAgICAg
ICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yJGk8JGZvciBqLCBbW1Qkal1dPigKICRm
b3IgaixbWwogCkBAIC0yOTEsMTEgKzI3Miw5IEBAICRmb3IgaiBbWwogCiBdXQogCi0jZW5kaWYg
IC8vIEdURVNUX0hBU19DT01CSU5FCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQogCiB9
ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAKLSNlbmRp
ZiAgLy8gIEdURVNUX0hBU19QQVJBTV9URVNUCi0KICNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9H
VEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0dFTkVSQVRFRF9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJh
bS11dGlsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXBhcmFtLXV0aWwuaAppbmRleCAwY2JiNThjMjFiN2I4OWNkNDhhOGQxYzVjYjUyMGYz
MTEzNzRjZGUyLi5kNjRmNjIwYzRjNjc0MzQ2NzNjMGE2MWUyMzk2MGI2MTVjMzRlNzg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXBhcmFtLXV0aWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaApAQCAtMjYsMjggKzI2LDQ5IEBACiAvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9y
OiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQorCiAKIC8vIFR5cGUgYW5kIGZ1bmN0aW9u
IHV0aWxpdGllcyBmb3IgaW1wbGVtZW50aW5nIHBhcmFtZXRlcml6ZWQgdGVzdHMuCiAKKy8vIEdP
T0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dU
RVNUX0lOVEVSTkFMX0dURVNUX1BBUkFNX1VUSUxfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9H
VEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0hfCiAKKyNpbmNsdWRlIDxjdHlwZS5oPgor
CiAjaW5jbHVkZSA8aXRlcmF0b3I+CisjaW5jbHVkZSA8c2V0PgogI2luY2x1ZGUgPHV0aWxpdHk+
CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0vLyBzY3JpcHRzL2Z1c2VfZ3Rlc3QucHkgZGVwZW5kcyBv
biBndGVzdCdzIG93biBoZWFkZXIgYmVpbmcgI2luY2x1ZGVkCi0vLyAqdW5jb25kaXRpb25hbGx5
Ki4gIFRoZXJlZm9yZSB0aGVzZSAjaW5jbHVkZXMgY2Fubm90IGJlIG1vdmVkCi0vLyBpbnNpZGUg
I2lmIEdURVNUX0hBU19QQVJBTV9URVNULgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0
LWludGVybmFsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5o
PgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLQotI2lmIEdURVNUX0hB
U19QQVJBTV9URVNUCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIK
KyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRyLmgiCisjaW5jbHVkZSAi
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXByaW50
ZXJzLmgiCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKKworLy8gSW5wdXQgdG8gYSBwYXJhbWV0ZXJp
emVkIHRlc3QgbmFtZSBnZW5lcmF0b3IsIGRlc2NyaWJpbmcgYSB0ZXN0IHBhcmFtZXRlci4KKy8v
IENvbnNpc3RzIG9mIHRoZSBwYXJhbWV0ZXIgdmFsdWUgYW5kIHRoZSBpbnRlZ2VyIHBhcmFtZXRl
ciBpbmRleC4KK3RlbXBsYXRlIDxjbGFzcyBQYXJhbVR5cGU+CitzdHJ1Y3QgVGVzdFBhcmFtSW5m
byB7CisgIFRlc3RQYXJhbUluZm8oY29uc3QgUGFyYW1UeXBlJiBhX3BhcmFtLCBzaXplX3QgYW5f
aW5kZXgpIDoKKyAgICBwYXJhbShhX3BhcmFtKSwKKyAgICBpbmRleChhbl9pbmRleCkge30KKyAg
UGFyYW1UeXBlIHBhcmFtOworICBzaXplX3QgaW5kZXg7Cit9OworCisvLyBBIGJ1aWx0aW4gcGFy
YW1ldGVyaXplZCB0ZXN0IG5hbWUgZ2VuZXJhdG9yIHdoaWNoIHJldHVybnMgdGhlIHJlc3VsdCBv
ZgorLy8gdGVzdGluZzo6UHJpbnRUb1N0cmluZy4KK3N0cnVjdCBQcmludFRvU3RyaW5nUGFyYW1O
YW1lIHsKKyAgdGVtcGxhdGUgPGNsYXNzIFBhcmFtVHlwZT4KKyAgc3RkOjpzdHJpbmcgb3BlcmF0
b3IoKShjb25zdCBUZXN0UGFyYW1JbmZvPFBhcmFtVHlwZT4mIGluZm8pIGNvbnN0IHsKKyAgICBy
ZXR1cm4gUHJpbnRUb1N0cmluZyhpbmZvLnBhcmFtKTsKKyAgfQorfTsKKwogbmFtZXNwYWNlIGlu
dGVybmFsIHsKIAogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVT
RVIgQ09ERS4KQEAgLTU3LDcgKzc4LDcgQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIC8vIFRFU1Rf
UCBtYWNybyBpcyB1c2VkIHRvIGRlZmluZSB0d28gdGVzdHMgd2l0aCB0aGUgc2FtZSBuYW1lCiAv
LyBidXQgaW4gZGlmZmVyZW50IG5hbWVzcGFjZXMuCiBHVEVTVF9BUElfIHZvaWQgUmVwb3J0SW52
YWxpZFRlc3RDYXNlVHlwZShjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5l
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlv
biBjb2RlX2xvY2F0aW9uKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFzcyBQYXJhbUdlbmVy
YXRvckludGVyZmFjZTsKIHRlbXBsYXRlIDx0eXBlbmFtZT4gY2xhc3MgUGFyYW1HZW5lcmF0b3I7
CkBAIC0xNzEsNyArMTkyLDcgQEAgY2xhc3MgUGFyYW1HZW5lcmF0b3IgewogICBpdGVyYXRvciBl
bmQoKSBjb25zdCB7IHJldHVybiBpdGVyYXRvcihpbXBsXy0+RW5kKCkpOyB9CiAKICBwcml2YXRl
OgotICA6OnRlc3Rpbmc6OmludGVybmFsOjpsaW5rZWRfcHRyPGNvbnN0IFBhcmFtR2VuZXJhdG9y
SW50ZXJmYWNlPFQ+ID4gaW1wbF87CisgIGxpbmtlZF9wdHI8Y29uc3QgUGFyYW1HZW5lcmF0b3JJ
bnRlcmZhY2U8VD4gPiBpbXBsXzsKIH07CiAKIC8vIEdlbmVyYXRlcyB2YWx1ZXMgZnJvbSBhIHJh
bmdlIG9mIHR3byBjb21wYXJhYmxlIHZhbHVlcy4gQ2FuIGJlIHVzZWQgdG8KQEAgLTIwNSw3ICsy
MjYsNyBAQCBjbGFzcyBSYW5nZUdlbmVyYXRvciA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVy
ZmFjZTxUPiB7CiAgICAgICByZXR1cm4gYmFzZV87CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBB
ZHZhbmNlKCkgewotICAgICAgdmFsdWVfID0gdmFsdWVfICsgc3RlcF87CisgICAgICB2YWx1ZV8g
PSBzdGF0aWNfY2FzdDxUPih2YWx1ZV8gKyBzdGVwXyk7CiAgICAgICBpbmRleF8rKzsKICAgICB9
CiAgICAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFQ+KiBDbG9uZSgpIGNvbnN0IHsK
QEAgLTI0Miw3ICsyNjMsNyBAQCBjbGFzcyBSYW5nZUdlbmVyYXRvciA6IHB1YmxpYyBQYXJhbUdl
bmVyYXRvckludGVyZmFjZTxUPiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVCYgZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEluY3JlbWVu
dFQmIHN0ZXApIHsKICAgICBpbnQgZW5kX2luZGV4ID0gMDsKLSAgICBmb3IgKFQgaSA9IGJlZ2lu
OyBpIDwgZW5kOyBpID0gaSArIHN0ZXApCisgICAgZm9yIChUIGkgPSBiZWdpbjsgaSA8IGVuZDsg
aSA9IHN0YXRpY19jYXN0PFQ+KGkgKyBzdGVwKSkKICAgICAgIGVuZF9pbmRleCsrOwogICAgIHJl
dHVybiBlbmRfaW5kZXg7CiAgIH0KQEAgLTI4NSw3ICszMDYsNyBAQCBjbGFzcyBWYWx1ZXNJbkl0
ZXJhdG9yUmFuZ2VHZW5lcmF0b3IgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4g
ewogICAgcHVibGljOgogICAgIEl0ZXJhdG9yKGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNl
PFQ+KiBiYXNlLAogICAgICAgICAgICAgIHR5cGVuYW1lIENvbnRhaW5lclR5cGU6OmNvbnN0X2l0
ZXJhdG9yIGl0ZXJhdG9yKQotICAgICAgICA6ICBiYXNlXyhiYXNlKSwgaXRlcmF0b3JfKGl0ZXJh
dG9yKSB7fQorICAgICAgICA6IGJhc2VfKGJhc2UpLCBpdGVyYXRvcl8oaXRlcmF0b3IpIHt9CiAg
ICAgdmlydHVhbCB+SXRlcmF0b3IoKSB7fQogCiAgICAgdmlydHVhbCBjb25zdCBQYXJhbUdlbmVy
YXRvckludGVyZmFjZTxUPiogQmFzZUdlbmVyYXRvcigpIGNvbnN0IHsKQEAgLTM0NCw2ICszNjUs
MzcgQEAgY2xhc3MgVmFsdWVzSW5JdGVyYXRvclJhbmdlR2VuZXJhdG9yIDogcHVibGljIFBhcmFt
R2VuZXJhdG9ySW50ZXJmYWNlPFQ+IHsKICAgY29uc3QgQ29udGFpbmVyVHlwZSBjb250YWluZXJf
OwogfTsgIC8vIGNsYXNzIFZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvcgogCisvLyBJTlRF
Uk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgorLy8KKy8vIERl
ZmF1bHQgcGFyYW1ldGVyaXplZCB0ZXN0IG5hbWUgZ2VuZXJhdG9yLCByZXR1cm5zIGEgc3RyaW5n
IGNvbnRhaW5pbmcgdGhlCisvLyBpbnRlZ2VyIHRlc3QgcGFyYW1ldGVyIGluZGV4LgordGVtcGxh
dGUgPGNsYXNzIFBhcmFtVHlwZT4KK3N0ZDo6c3RyaW5nIERlZmF1bHRQYXJhbU5hbWUoY29uc3Qg
VGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+JiBpbmZvKSB7CisgIE1lc3NhZ2UgbmFtZV9zdHJlYW07
CisgIG5hbWVfc3RyZWFtIDw8IGluZm8uaW5kZXg7CisgIHJldHVybiBuYW1lX3N0cmVhbS5HZXRT
dHJpbmcoKTsKK30KKworLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElO
IFVTRVIgQ09ERS4KKy8vCisvLyBQYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSBvdmVybG9hZCBoZWxw
ZXJzLCB3aGljaCBoZWxwIHRoZQorLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgbWFjcm8gY2hv
b3NlIGJldHdlZW4gdGhlIGRlZmF1bHQgcGFyYW1ldGVyaXplZAorLy8gdGVzdCBuYW1lIGdlbmVy
YXRvciBhbmQgdXNlciBwYXJhbSBuYW1lIGdlbmVyYXRvci4KK3RlbXBsYXRlIDxjbGFzcyBQYXJh
bVR5cGUsIGNsYXNzIFBhcmFtTmFtZUdlbkZ1bmN0b3I+CitQYXJhbU5hbWVHZW5GdW5jdG9yIEdl
dFBhcmFtTmFtZUdlbihQYXJhbU5hbWVHZW5GdW5jdG9yIGZ1bmMpIHsKKyAgcmV0dXJuIGZ1bmM7
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBQYXJhbVR5cGU+CitzdHJ1Y3QgUGFyYW1OYW1lR2VuRnVu
YyB7CisgIHR5cGVkZWYgc3RkOjpzdHJpbmcgVHlwZShjb25zdCBUZXN0UGFyYW1JbmZvPFBhcmFt
VHlwZT4mKTsKK307CisKK3RlbXBsYXRlIDxjbGFzcyBQYXJhbVR5cGU+Cit0eXBlbmFtZSBQYXJh
bU5hbWVHZW5GdW5jPFBhcmFtVHlwZT46OlR5cGUgKkdldFBhcmFtTmFtZUdlbigpIHsKKyAgcmV0
dXJuIERlZmF1bHRQYXJhbU5hbWU7Cit9CisKIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0g
RE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCiAvLwogLy8gU3RvcmVzIGEgcGFyYW1ldGVyIHZhbHVl
IGFuZCBsYXRlciBjcmVhdGVzIHRlc3RzIHBhcmFtZXRlcml6ZWQgd2l0aCB0aGF0CkBAIC00MTYs
NyArNDY4LDcgQEAgY2xhc3MgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UgewogICB2aXJ0
dWFsIH5QYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvQmFzZSgpIHt9CiAKICAgLy8gQmFzZSBwYXJ0
IG9mIHRlc3QgY2FzZSBuYW1lIGZvciBkaXNwbGF5IHB1cnBvc2VzLgotICB2aXJ0dWFsIGNvbnN0
IFN0cmluZyYgR2V0VGVzdENhc2VOYW1lKCkgY29uc3QgPSAwOworICB2aXJ0dWFsIGNvbnN0IHN0
ZDo6c3RyaW5nJiBHZXRUZXN0Q2FzZU5hbWUoKSBjb25zdCA9IDA7CiAgIC8vIFRlc3QgY2FzZSBp
ZCB0byB2ZXJpZnkgaWRlbnRpdHkuCiAgIHZpcnR1YWwgVHlwZUlkIEdldFRlc3RDYXNlVHlwZUlk
KCkgY29uc3QgPSAwOwogICAvLyBVbml0VGVzdCBjbGFzcyBpbnZva2VzIHRoaXMgbWV0aG9kIHRv
IHJlZ2lzdGVyIHRlc3RzIGluIHRoaXMKQEAgLTQ0OCwxMiArNTAwLDE0IEBAIGNsYXNzIFBhcmFt
ZXRlcml6ZWRUZXN0Q2FzZUluZm8gOiBwdWJsaWMgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jh
c2UgewogICB0eXBlZGVmIHR5cGVuYW1lIFRlc3RDYXNlOjpQYXJhbVR5cGUgUGFyYW1UeXBlOwog
ICAvLyBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBhcHByb3ByaWF0ZSBn
ZW5lcmF0b3IgdHlwZS4KICAgdHlwZWRlZiBQYXJhbUdlbmVyYXRvcjxQYXJhbVR5cGU+KEdlbmVy
YXRvckNyZWF0aW9uRnVuYykoKTsKKyAgdHlwZWRlZiB0eXBlbmFtZSBQYXJhbU5hbWVHZW5GdW5j
PFBhcmFtVHlwZT46OlR5cGUgUGFyYW1OYW1lR2VuZXJhdG9yRnVuYzsKIAotICBleHBsaWNpdCBQ
YXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvKGNvbnN0IGNoYXIqIG5hbWUpCi0gICAgICA6IHRlc3Rf
Y2FzZV9uYW1lXyhuYW1lKSB7fQorICBleHBsaWNpdCBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZv
KAorICAgICAgY29uc3QgY2hhciogbmFtZSwgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24pCisg
ICAgICA6IHRlc3RfY2FzZV9uYW1lXyhuYW1lKSwgY29kZV9sb2NhdGlvbl8oY29kZV9sb2NhdGlv
bikge30KIAogICAvLyBUZXN0IGNhc2UgYmFzZSBuYW1lIGZvciBkaXNwbGF5IHB1cnBvc2VzLgot
ICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgR2V0VGVzdENhc2VOYW1lKCkgY29uc3QgeyByZXR1cm4g
dGVzdF9jYXNlX25hbWVfOyB9CisgIHZpcnR1YWwgY29uc3Qgc3RkOjpzdHJpbmcmIEdldFRlc3RD
YXNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRlc3RfY2FzZV9uYW1lXzsgfQogICAvLyBUZXN0IGNh
c2UgaWQgdG8gdmVyaWZ5IGlkZW50aXR5LgogICB2aXJ0dWFsIFR5cGVJZCBHZXRUZXN0Q2FzZVR5
cGVJZCgpIGNvbnN0IHsgcmV0dXJuIEdldFR5cGVJZDxUZXN0Q2FzZT4oKTsgfQogICAvLyBURVNU
X1AgbWFjcm8gdXNlcyBBZGRUZXN0UGF0dGVybigpIHRvIHJlY29yZCBpbmZvcm1hdGlvbgpAQCAt
NDcxLDExICs1MjUsMTIgQEAgY2xhc3MgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbyA6IHB1Ymxp
YyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvQmFzZSB7CiAgIH0KICAgLy8gSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AgbWFjcm8gdXNlcyBBZGRHZW5lcmF0b3IoKSB0byByZWNvcmQgaW5mb3JtYXRp
b24KICAgLy8gYWJvdXQgYSBnZW5lcmF0b3IuCi0gIGludCBBZGRUZXN0Q2FzZUluc3RhbnRpYXRp
b24oY29uc3QgY2hhciogaW5zdGFudGlhdGlvbl9uYW1lLAorICBpbnQgQWRkVGVzdENhc2VJbnN0
YW50aWF0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnN0YW50aWF0aW9uX25hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdG9yQ3JlYXRpb25GdW5jKiBmdW5jLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qIGZpbGUgKi8sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IC8qIGxpbmUgKi8pIHsKLSAgICBpbnN0YW50
aWF0aW9uc18ucHVzaF9iYWNrKDo6c3RkOjptYWtlX3BhaXIoaW5zdGFudGlhdGlvbl9uYW1lLCBm
dW5jKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1OYW1lR2VuZXJhdG9y
RnVuYyogbmFtZV9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGZpbGUsIGludCBsaW5lKSB7CisgICAgaW5zdGFudGlhdGlvbnNfLnB1c2hfYmFjaygKKyAg
ICAgICAgSW5zdGFudGlhdGlvbkluZm8oaW5zdGFudGlhdGlvbl9uYW1lLCBmdW5jLCBuYW1lX2Z1
bmMsIGZpbGUsIGxpbmUpKTsKICAgICByZXR1cm4gMDsgIC8vIFJldHVybiB2YWx1ZSB1c2VkIG9u
bHkgdG8gcnVuIHRoaXMgbWV0aG9kIGluIG5hbWVzcGFjZSBzY29wZS4KICAgfQogICAvLyBVbml0
VGVzdCBjbGFzcyBpbnZva2VzIHRoaXMgbWV0aG9kIHRvIHJlZ2lzdGVyIHRlc3RzIGluIHRoaXMg
dGVzdCBjYXNlCkBAIC00OTAsMjYgKzU0NSw0NSBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENh
c2VJbmZvIDogcHVibGljIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9CYXNlIHsKICAgICAgIGZv
ciAodHlwZW5hbWUgSW5zdGFudGlhdGlvbkNvbnRhaW5lcjo6aXRlcmF0b3IgZ2VuX2l0ID0KICAg
ICAgICAgICAgICAgIGluc3RhbnRpYXRpb25zXy5iZWdpbigpOyBnZW5faXQgIT0gaW5zdGFudGlh
dGlvbnNfLmVuZCgpOwogICAgICAgICAgICAgICAgKytnZW5faXQpIHsKLSAgICAgICAgY29uc3Qg
U3RyaW5nJiBpbnN0YW50aWF0aW9uX25hbWUgPSBnZW5faXQtPmZpcnN0OwotICAgICAgICBQYXJh
bUdlbmVyYXRvcjxQYXJhbVR5cGU+IGdlbmVyYXRvcigoKmdlbl9pdC0+c2Vjb25kKSgpKTsKKyAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGluc3RhbnRpYXRpb25fbmFtZSA9IGdlbl9pdC0+bmFt
ZTsKKyAgICAgICAgUGFyYW1HZW5lcmF0b3I8UGFyYW1UeXBlPiBnZW5lcmF0b3IoKCpnZW5faXQt
PmdlbmVyYXRvcikoKSk7CisgICAgICAgIFBhcmFtTmFtZUdlbmVyYXRvckZ1bmMqIG5hbWVfZnVu
YyA9IGdlbl9pdC0+bmFtZV9mdW5jOworICAgICAgICBjb25zdCBjaGFyKiBmaWxlID0gZ2VuX2l0
LT5maWxlOworICAgICAgICBpbnQgbGluZSA9IGdlbl9pdC0+bGluZTsKIAotICAgICAgICBNZXNz
YWdlIHRlc3RfY2FzZV9uYW1lX3N0cmVhbTsKKyAgICAgICAgc3RkOjpzdHJpbmcgdGVzdF9jYXNl
X25hbWU7CiAgICAgICAgIGlmICggIWluc3RhbnRpYXRpb25fbmFtZS5lbXB0eSgpICkKLSAgICAg
ICAgICB0ZXN0X2Nhc2VfbmFtZV9zdHJlYW0gPDwgaW5zdGFudGlhdGlvbl9uYW1lLmNfc3RyKCkg
PDwgIi8iOwotICAgICAgICB0ZXN0X2Nhc2VfbmFtZV9zdHJlYW0gPDwgdGVzdF9pbmZvLT50ZXN0
X2Nhc2VfYmFzZV9uYW1lLmNfc3RyKCk7CisgICAgICAgICAgdGVzdF9jYXNlX25hbWUgPSBpbnN0
YW50aWF0aW9uX25hbWUgKyAiLyI7CisgICAgICAgIHRlc3RfY2FzZV9uYW1lICs9IHRlc3RfaW5m
by0+dGVzdF9jYXNlX2Jhc2VfbmFtZTsKIAotICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIHNp
emVfdCBpID0gMDsKKyAgICAgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IHRlc3RfcGFyYW1fbmFt
ZXM7CiAgICAgICAgIGZvciAodHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8UGFyYW1UeXBlPjo6aXRl
cmF0b3IgcGFyYW1faXQgPQogICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuYmVnaW4oKTsKICAg
ICAgICAgICAgICBwYXJhbV9pdCAhPSBnZW5lcmF0b3IuZW5kKCk7ICsrcGFyYW1faXQsICsraSkg
ewogICAgICAgICAgIE1lc3NhZ2UgdGVzdF9uYW1lX3N0cmVhbTsKLSAgICAgICAgICB0ZXN0X25h
bWVfc3RyZWFtIDw8IHRlc3RfaW5mby0+dGVzdF9iYXNlX25hbWUuY19zdHIoKSA8PCAiLyIgPDwg
aTsKLSAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpNYWtlQW5kUmVnaXN0ZXJUZXN0SW5m
bygKLSAgICAgICAgICAgICAgdGVzdF9jYXNlX25hbWVfc3RyZWFtLkdldFN0cmluZygpLmNfc3Ry
KCksCisKKyAgICAgICAgICBzdGQ6OnN0cmluZyBwYXJhbV9uYW1lID0gbmFtZV9mdW5jKAorICAg
ICAgICAgICAgICBUZXN0UGFyYW1JbmZvPFBhcmFtVHlwZT4oKnBhcmFtX2l0LCBpKSk7CisKKyAg
ICAgICAgICBHVEVTVF9DSEVDS18oSXNWYWxpZFBhcmFtTmFtZShwYXJhbV9uYW1lKSkKKyAgICAg
ICAgICAgICAgPDwgIlBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lICciIDw8IHBhcmFtX25hbWUKKyAg
ICAgICAgICAgICAgPDwgIicgaXMgaW52YWxpZCwgaW4gIiA8PCBmaWxlCisgICAgICAgICAgICAg
IDw8ICIgbGluZSAiIDw8IGxpbmUgPDwgc3RkOjplbmRsOworCisgICAgICAgICAgR1RFU1RfQ0hF
Q0tfKHRlc3RfcGFyYW1fbmFtZXMuY291bnQocGFyYW1fbmFtZSkgPT0gMCkKKyAgICAgICAgICAg
ICAgPDwgIkR1cGxpY2F0ZSBwYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSAnIiA8PCBwYXJhbV9uYW1l
CisgICAgICAgICAgICAgIDw8ICInLCBpbiAiIDw8IGZpbGUgPDwgIiBsaW5lICIgPDwgbGluZSA8
PCBzdGQ6OmVuZGw7CisKKyAgICAgICAgICB0ZXN0X3BhcmFtX25hbWVzLmluc2VydChwYXJhbV9u
YW1lKTsKKworICAgICAgICAgIHRlc3RfbmFtZV9zdHJlYW0gPDwgdGVzdF9pbmZvLT50ZXN0X2Jh
c2VfbmFtZSA8PCAiLyIgPDwgcGFyYW1fbmFtZTsKKyAgICAgICAgICBNYWtlQW5kUmVnaXN0ZXJU
ZXN0SW5mbygKKyAgICAgICAgICAgICAgdGVzdF9jYXNlX25hbWUuY19zdHIoKSwKICAgICAgICAg
ICAgICAgdGVzdF9uYW1lX3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0cigpLAotICAgICAgICAgICAg
ICAiIiwgIC8vIHRlc3RfY2FzZV9jb21tZW50Ci0gICAgICAgICAgICAgICIiLCAgLy8gY29tbWVu
dDsgVE9ETyh2bGFkbEBnb29nbGUuY29tKTogcHJvdmlkZSBwYXJhbWV0ZXIgdmFsdWUKLSAgICAg
ICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXByZXNl
bnRhdGlvbi4KKyAgICAgICAgICAgICAgTlVMTCwgIC8vIE5vIHR5cGUgcGFyYW1ldGVyLgorICAg
ICAgICAgICAgICBQcmludFRvU3RyaW5nKCpwYXJhbV9pdCkuY19zdHIoKSwKKyAgICAgICAgICAg
ICAgY29kZV9sb2NhdGlvbl8sCiAgICAgICAgICAgICAgIEdldFRlc3RDYXNlVHlwZUlkKCksCiAg
ICAgICAgICAgICAgIFRlc3RDYXNlOjpTZXRVcFRlc3RDYXNlLAogICAgICAgICAgICAgICBUZXN0
Q2FzZTo6VGVhckRvd25UZXN0Q2FzZSwKQEAgLTUzMCwxNyArNjA0LDUwIEBAIGNsYXNzIFBhcmFt
ZXRlcml6ZWRUZXN0Q2FzZUluZm8gOiBwdWJsaWMgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jh
c2UgewogICAgICAgICB0ZXN0X2Jhc2VfbmFtZShhX3Rlc3RfYmFzZV9uYW1lKSwKICAgICAgICAg
dGVzdF9tZXRhX2ZhY3RvcnkoYV90ZXN0X21ldGFfZmFjdG9yeSkge30KIAotICAgIGNvbnN0IFN0
cmluZyB0ZXN0X2Nhc2VfYmFzZV9uYW1lOwotICAgIGNvbnN0IFN0cmluZyB0ZXN0X2Jhc2VfbmFt
ZTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0X2Nhc2VfYmFzZV9uYW1lOworICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIHRlc3RfYmFzZV9uYW1lOwogICAgIGNvbnN0IHNjb3BlZF9wdHI8VGVzdE1l
dGFGYWN0b3J5QmFzZTxQYXJhbVR5cGU+ID4gdGVzdF9tZXRhX2ZhY3Rvcnk7CiAgIH07CiAgIHR5
cGVkZWYgOjpzdGQ6OnZlY3RvcjxsaW5rZWRfcHRyPFRlc3RJbmZvPiA+IFRlc3RJbmZvQ29udGFp
bmVyOwotICAvLyBLZWVwcyBwYWlycyBvZiA8SW5zdGFudGlhdGlvbiBuYW1lLCBTZXF1ZW5jZSBn
ZW5lcmF0b3IgY3JlYXRpb24gZnVuY3Rpb24+Ci0gIC8vIHJlY2VpdmVkIGZyb20gSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AgbWFjcm9zLgotICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8c3RkOjpwYWly
PFN0cmluZywgR2VuZXJhdG9yQ3JlYXRpb25GdW5jKj4gPgotICAgICAgSW5zdGFudGlhdGlvbkNv
bnRhaW5lcjsKKyAgLy8gUmVjb3JkcyBkYXRhIHJlY2VpdmVkIGZyb20gSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1AgbWFjcm9zOgorICAvLyAgPEluc3RhbnRpYXRpb24gbmFtZSwgU2VxdWVuY2UgZ2Vu
ZXJhdG9yIGNyZWF0aW9uIGZ1bmN0aW9uLAorICAvLyAgICAgTmFtZSBnZW5lcmF0b3IgZnVuY3Rp
b24sIFNvdXJjZSBmaWxlLCBTb3VyY2UgbGluZT4KKyAgc3RydWN0IEluc3RhbnRpYXRpb25JbmZv
IHsKKyAgICAgIEluc3RhbnRpYXRpb25JbmZvKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lX2luLAor
ICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdG9yQ3JlYXRpb25GdW5jKiBnZW5lcmF0b3Jf
aW4sCisgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbU5hbWVHZW5lcmF0b3JGdW5jKiBuYW1l
X2Z1bmNfaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlX2luLAor
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVfaW4pCisgICAgICAgICAgOiBuYW1lKG5h
bWVfaW4pLAorICAgICAgICAgICAgZ2VuZXJhdG9yKGdlbmVyYXRvcl9pbiksCisgICAgICAgICAg
ICBuYW1lX2Z1bmMobmFtZV9mdW5jX2luKSwKKyAgICAgICAgICAgIGZpbGUoZmlsZV9pbiksCisg
ICAgICAgICAgICBsaW5lKGxpbmVfaW4pIHt9CisKKyAgICAgIHN0ZDo6c3RyaW5nIG5hbWU7Cisg
ICAgICBHZW5lcmF0b3JDcmVhdGlvbkZ1bmMqIGdlbmVyYXRvcjsKKyAgICAgIFBhcmFtTmFtZUdl
bmVyYXRvckZ1bmMqIG5hbWVfZnVuYzsKKyAgICAgIGNvbnN0IGNoYXIqIGZpbGU7CisgICAgICBp
bnQgbGluZTsKKyAgfTsKKyAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPEluc3RhbnRpYXRpb25JbmZv
PiBJbnN0YW50aWF0aW9uQ29udGFpbmVyOwogCi0gIGNvbnN0IFN0cmluZyB0ZXN0X2Nhc2VfbmFt
ZV87CisgIHN0YXRpYyBib29sIElzVmFsaWRQYXJhbU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5h
bWUpIHsKKyAgICAvLyBDaGVjayBmb3IgZW1wdHkgc3RyaW5nCisgICAgaWYgKG5hbWUuZW1wdHko
KSkKKyAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENoZWNrIGZvciBpbnZhbGlkIGNoYXJh
Y3RlcnMKKyAgICBmb3IgKHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgaW5kZXggPSAwOyBpbmRleCA8
IG5hbWUuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICBpZiAoIWlzYWxudW0obmFtZVtpbmRleF0p
ICYmIG5hbWVbaW5kZXhdICE9ICdfJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIHJldHVybiB0cnVlOworICB9CisKKyAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdF9jYXNlX25h
bWVfOworICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbl87CiAgIFRlc3RJbmZvQ29udGFpbmVy
IHRlc3RzXzsKICAgSW5zdGFudGlhdGlvbkNvbnRhaW5lciBpbnN0YW50aWF0aW9uc187CiAKQEAg
LTU2OCw4ICs2NzUsNyBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSB7CiAg
IHRlbXBsYXRlIDxjbGFzcyBUZXN0Q2FzZT4KICAgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbzxU
ZXN0Q2FzZT4qIEdldFRlc3RDYXNlUGF0dGVybkhvbGRlcigKICAgICAgIGNvbnN0IGNoYXIqIHRl
c3RfY2FzZV9uYW1lLAotICAgICAgY29uc3QgY2hhciogZmlsZSwKLSAgICAgIGludCBsaW5lKSB7
CisgICAgICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbikgewogICAgIFBhcmFtZXRlcml6ZWRU
ZXN0Q2FzZUluZm88VGVzdENhc2U+KiB0eXBlZF90ZXN0X2luZm8gPSBOVUxMOwogICAgIGZvciAo
VGVzdENhc2VJbmZvQ29udGFpbmVyOjppdGVyYXRvciBpdCA9IHRlc3RfY2FzZV9pbmZvc18uYmVn
aW4oKTsKICAgICAgICAgIGl0ICE9IHRlc3RfY2FzZV9pbmZvc18uZW5kKCk7ICsraXQpIHsKQEAg
LTU3OCw4ICs2ODQsOCBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSB7CiAg
ICAgICAgICAgLy8gQ29tcGxhaW4gYWJvdXQgaW5jb3JyZWN0IHVzYWdlIG9mIEdvb2dsZSBUZXN0
IGZhY2lsaXRpZXMKICAgICAgICAgICAvLyBhbmQgdGVybWluYXRlIHRoZSBwcm9ncmFtIHNpbmNl
IHdlIGNhbm5vdCBndWFyYW50eSBjb3JyZWN0CiAgICAgICAgICAgLy8gdGVzdCBjYXNlIHNldHVw
IGFuZCB0ZWFyLWRvd24gaW4gdGhpcyBjYXNlLgotICAgICAgICAgIFJlcG9ydEludmFsaWRUZXN0
Q2FzZVR5cGUodGVzdF9jYXNlX25hbWUsICBmaWxlLCBsaW5lKTsKLSAgICAgICAgICBhYm9ydCgp
OworICAgICAgICAgIFJlcG9ydEludmFsaWRUZXN0Q2FzZVR5cGUodGVzdF9jYXNlX25hbWUsIGNv
ZGVfbG9jYXRpb24pOworICAgICAgICAgIHBvc2l4OjpBYm9ydCgpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UgYXJlIHN1cmUgdGhhdCB0aGUgb2JqZWN0
IHdlIGZvdW5kIGlzIG9mIHRoZSBzYW1lCiAgICAgICAgICAgLy8gdHlwZSB3ZSBhcmUgbG9va2lu
ZyBmb3IsIHNvIHdlIGRvd25jYXN0IGl0IHRvIHRoYXQgdHlwZQpAQCAtNTkxLDcgKzY5Nyw4IEBA
IGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IHsKICAgICAgIH0KICAgICB9CiAg
ICAgaWYgKHR5cGVkX3Rlc3RfaW5mbyA9PSBOVUxMKSB7Ci0gICAgICB0eXBlZF90ZXN0X2luZm8g
PSBuZXcgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbzxUZXN0Q2FzZT4odGVzdF9jYXNlX25hbWUp
OworICAgICAgdHlwZWRfdGVzdF9pbmZvID0gbmV3IFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm88
VGVzdENhc2U+KAorICAgICAgICAgIHRlc3RfY2FzZV9uYW1lLCBjb2RlX2xvY2F0aW9uKTsKICAg
ICAgIHRlc3RfY2FzZV9pbmZvc18ucHVzaF9iYWNrKHR5cGVkX3Rlc3RfaW5mbyk7CiAgICAgfQog
ICAgIHJldHVybiB0eXBlZF90ZXN0X2luZm87CkBAIC02MTQsNiArNzIxLDQgQEAgY2xhc3MgUGFy
YW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgewogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9
ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCi0jZW5kaWYgIC8vICBHVEVTVF9IQVNfUEFSQU1fVEVT
VAotCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1f
VVRJTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9ndGVzdC1wb3J0LWFyY2guaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC1hcmNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjgzNzAw
ZTA2ZDk4YzM2ZjY0ODcyOTFjM2Y5MzE4MDdhZjM1M2Y3NAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC1h
cmNoLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgor
Ly8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKy8vCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZy
YW1ld29yayAoR29vZ2xlIFRlc3QpCisvLworLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVzIHRo
ZSBHVEVTVF9PU18qIG1hY3JvLgorLy8gSXQgaXMgc2VwYXJhdGUgZnJvbSBndGVzdC1wb3J0Lmgg
c28gdGhhdCBjdXN0b20vZ3Rlc3QtcG9ydC5oIGNhbiBpbmNsdWRlIGl0LgorCisjaWZuZGVmIEdU
RVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUE9SVF9BUkNIX0hfCisjZGVmaW5lIEdU
RVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUE9SVF9BUkNIX0hfCisKKy8vIERldGVy
bWluZXMgdGhlIHBsYXRmb3JtIG9uIHdoaWNoIEdvb2dsZSBUZXN0IGlzIGNvbXBpbGVkLgorI2lm
ZGVmIF9fQ1lHV0lOX18KKyMgZGVmaW5lIEdURVNUX09TX0NZR1dJTiAxCisjZWxpZiBkZWZpbmVk
IF9fU1lNQklBTjMyX18KKyMgZGVmaW5lIEdURVNUX09TX1NZTUJJQU4gMQorI2VsaWYgZGVmaW5l
ZCBfV0lOMzIKKyMgZGVmaW5lIEdURVNUX09TX1dJTkRPV1MgMQorIyBpZmRlZiBfV0lOMzJfV0NF
CisjICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgMQorIyBlbGlmIGRlZmluZWQoX19N
SU5HV19fKSB8fCBkZWZpbmVkKF9fTUlOR1czMl9fKQorIyAgZGVmaW5lIEdURVNUX09TX1dJTkRP
V1NfTUlOR1cgMQorIyBlbGlmIGRlZmluZWQoV0lOQVBJX0ZBTUlMWSkKKyMgIGluY2x1ZGUgPHdp
bmFwaWZhbWlseS5oPgorIyAgaWYgV0lOQVBJX0ZBTUlMWV9QQVJUSVRJT04oV0lOQVBJX1BBUlRJ
VElPTl9ERVNLVE9QKQorIyAgIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1AgMQorIyAg
ZWxpZiBXSU5BUElfRkFNSUxZX1BBUlRJVElPTihXSU5BUElfUEFSVElUSU9OX1BIT05FX0FQUCkK
KyMgICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19QSE9ORSAxCisjICBlbGlmIFdJTkFQSV9GQU1J
TFlfUEFSVElUSU9OKFdJTkFQSV9QQVJUSVRJT05fQVBQKQorIyAgIGRlZmluZSBHVEVTVF9PU19X
SU5ET1dTX1JUIDEKKyMgIGVsaWYgV0lOQVBJX0ZBTUlMWV9QQVJUSVRJT04oV0lOQVBJX1BBUlRJ
VElPTl9UVl9USVRMRSkKKyMgICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19QSE9ORSAxCisjICAg
ZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfVFZfVElUTEUgMQorIyAgZWxzZQorICAgIC8vIFdJTkFQ
SV9GQU1JTFkgZGVmaW5lZCBidXQgbm8ga25vd24gcGFydGl0aW9uIG1hdGNoZWQuCisgICAgLy8g
RGVmYXVsdCB0byBkZXNrdG9wLgorIyAgIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1Ag
MQorIyAgZW5kaWYKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfREVTS1RPUCAx
CisjIGVuZGlmICAvLyBfV0lOMzJfV0NFCisjZWxpZiBkZWZpbmVkIF9fQVBQTEVfXworIyBkZWZp
bmUgR1RFU1RfT1NfTUFDIDEKKyMgaWYgVEFSR0VUX09TX0lQSE9ORQorIyAgZGVmaW5lIEdURVNU
X09TX0lPUyAxCisjIGVuZGlmCisjZWxpZiBkZWZpbmVkIF9fRnJlZUJTRF9fCisjIGRlZmluZSBH
VEVTVF9PU19GUkVFQlNEIDEKKyNlbGlmIGRlZmluZWQgX19GdWNoc2lhX18KKyMgZGVmaW5lIEdU
RVNUX09TX0ZVQ0hTSUEgMQorI2VsaWYgZGVmaW5lZCBfX2xpbnV4X18KKyMgZGVmaW5lIEdURVNU
X09TX0xJTlVYIDEKKyMgaWYgZGVmaW5lZCBfX0FORFJPSURfXworIyAgZGVmaW5lIEdURVNUX09T
X0xJTlVYX0FORFJPSUQgMQorIyBlbmRpZgorI2VsaWYgZGVmaW5lZCBfX01WU19fCisjIGRlZmlu
ZSBHVEVTVF9PU19aT1MgMQorI2VsaWYgZGVmaW5lZChfX3N1bikgJiYgZGVmaW5lZChfX1NWUjQp
CisjIGRlZmluZSBHVEVTVF9PU19TT0xBUklTIDEKKyNlbGlmIGRlZmluZWQoX0FJWCkKKyMgZGVm
aW5lIEdURVNUX09TX0FJWCAxCisjZWxpZiBkZWZpbmVkKF9faHB1eCkKKyMgZGVmaW5lIEdURVNU
X09TX0hQVVggMQorI2VsaWYgZGVmaW5lZCBfX25hdGl2ZV9jbGllbnRfXworIyBkZWZpbmUgR1RF
U1RfT1NfTkFDTCAxCisjZWxpZiBkZWZpbmVkIF9fTmV0QlNEX18KKyMgZGVmaW5lIEdURVNUX09T
X05FVEJTRCAxCisjZWxpZiBkZWZpbmVkIF9fT3BlbkJTRF9fCisjIGRlZmluZSBHVEVTVF9PU19P
UEVOQlNEIDEKKyNlbGlmIGRlZmluZWQgX19RTlhfXworIyBkZWZpbmUgR1RFU1RfT1NfUU5YIDEK
KyNlbmRpZiAgLy8gX19DWUdXSU5fXworCisjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1Rf
SU5URVJOQUxfR1RFU1RfUE9SVF9BUkNIX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oCmluZGV4IGY4
YmU4MDkyNmY4OTg3ZDNjOTU4Mjg2MTYwMjAxMGJmZjZlNjRkNmQuLjc4NjQ5N2Q4NTRjOTdmMWI2
YWI5MzcyYTI0MWMxZmExNTVhMzBhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oCkBAIC0yNywy
OSArMjcsNTcgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRo
b3JzOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KIC8vIExvdy1sZXZlbCB0eXBl
cyBhbmQgdXRpbGl0aWVzIGZvciBwb3J0aW5nIEdvb2dsZSBUZXN0IHRvIHZhcmlvdXMKLS8vIHBs
YXRmb3Jtcy4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLiAgRE8g
Tk9UIFVTRQotLy8gVEhFTSBJTiBVU0VSIENPREUuCisvLyBwbGF0Zm9ybXMuICBBbGwgbWFjcm9z
IGVuZGluZyB3aXRoIF8gYW5kIHN5bWJvbHMgZGVmaW5lZCBpbiBhbgorLy8gaW50ZXJuYWwgbmFt
ZXNwYWNlIGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4gIENvZGUKKy8vIG91
dHNpZGUgR29vZ2xlIFRlc3QgTVVTVCBOT1QgVVNFIFRIRU0gRElSRUNUTFkuICBNYWNyb3MgdGhh
dCBkb24ndAorLy8gZW5kIHdpdGggXyBhcmUgcGFydCBvZiBHb29nbGUgVGVzdCdzIHB1YmxpYyBB
UEkgYW5kIGNhbiBiZSB1c2VkIGJ5CisvLyBjb2RlIG91dHNpZGUgR29vZ2xlIFRlc3QuCisvLwor
Ly8gVGhpcyBmaWxlIGlzIGZ1bmRhbWVudGFsIHRvIEdvb2dsZSBUZXN0LiAgQWxsIG90aGVyIEdv
b2dsZSBUZXN0IHNvdXJjZQorLy8gZmlsZXMgYXJlIGV4cGVjdGVkIHRvICNpbmNsdWRlIHRoaXMu
ICBUaGVyZWZvcmUsIGl0IGNhbm5vdCAjaW5jbHVkZQorLy8gYW55IG90aGVyIEdvb2dsZSBUZXN0
IGhlYWRlci4KKworLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQogCiAjaWZuZGVm
IEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUE9SVF9IXwogI2RlZmluZSBHVEVT
VF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRfSF8KIAotLy8gVGhlIHVzZXIgY2Fu
IGRlZmluZSB0aGUgZm9sbG93aW5nIG1hY3JvcyBpbiB0aGUgYnVpbGQgc2NyaXB0IHRvCi0vLyBj
b250cm9sIEdvb2dsZSBUZXN0J3MgYmVoYXZpb3IuICBJZiB0aGUgdXNlciBkb2Vzbid0IGRlZmlu
ZSBhIG1hY3JvCi0vLyBpbiB0aGlzIGxpc3QsIEdvb2dsZSBUZXN0IHdpbGwgZGVmaW5lIGl0Lgor
Ly8gRW52aXJvbm1lbnQtZGVzY3JpYmluZyBtYWNyb3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLworLy8gR29vZ2xlIFRlc3QgY2FuIGJlIHVzZWQgaW4gbWFueSBkaWZmZXJl
bnQgZW52aXJvbm1lbnRzLiAgTWFjcm9zIGluCisvLyB0aGlzIHNlY3Rpb24gdGVsbCBHb29nbGUg
VGVzdCB3aGF0IGtpbmQgb2YgZW52aXJvbm1lbnQgaXQgaXMgYmVpbmcKKy8vIHVzZWQgaW4sIHN1
Y2ggdGhhdCBHb29nbGUgVGVzdCBjYW4gcHJvdmlkZSBlbnZpcm9ubWVudC1zcGVjaWZpYworLy8g
ZmVhdHVyZXMgYW5kIGltcGxlbWVudGF0aW9ucy4KKy8vCisvLyBHb29nbGUgVGVzdCB0cmllcyB0
byBhdXRvbWF0aWNhbGx5IGRldGVjdCB0aGUgcHJvcGVydGllcyBvZiBpdHMKKy8vIGVudmlyb25t
ZW50LCBzbyB1c2VycyB1c3VhbGx5IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlc2UKKy8v
IG1hY3Jvcy4gIEhvd2V2ZXIsIHRoZSBhdXRvbWF0aWMgZGV0ZWN0aW9uIGlzIG5vdCBwZXJmZWN0
LgorLy8gU29tZXRpbWVzIGl0J3MgbmVjZXNzYXJ5IGZvciBhIHVzZXIgdG8gZGVmaW5lIHNvbWUg
b2YgdGhlIGZvbGxvd2luZworLy8gbWFjcm9zIGluIHRoZSBidWlsZCBzY3JpcHQgdG8gb3ZlcnJp
ZGUgR29vZ2xlIFRlc3QncyBkZWNpc2lvbnMuCisvLworLy8gSWYgdGhlIHVzZXIgZG9lc24ndCBk
ZWZpbmUgYSBtYWNybyBpbiB0aGUgbGlzdCwgR29vZ2xlIFRlc3Qgd2lsbAorLy8gcHJvdmlkZSBh
IGRlZmF1bHQgZGVmaW5pdGlvbi4gIEFmdGVyIHRoaXMgaGVhZGVyIGlzICNpbmNsdWRlZCwgYWxs
CisvLyBtYWNyb3MgaW4gdGhpcyBsaXN0IHdpbGwgYmUgZGVmaW5lZCB0byBlaXRoZXIgMSBvciAw
LgorLy8KKy8vIE5vdGVzIHRvIG1haW50YWluZXJzOgorLy8gICAtIEVhY2ggbWFjcm8gaGVyZSBp
cyBhIHVzZXItdHdlYWthYmxlIGtub2I7IGRvIG5vdCBncm93IHRoZSBsaXN0CisvLyAgICAgbGln
aHRseS4KKy8vICAgLSBVc2UgI2lmIHRvIGtleSBvZmYgdGhlc2UgbWFjcm9zLiAgRG9uJ3QgdXNl
ICNpZmRlZiBvciAiI2lmCisvLyAgICAgZGVmaW5lZCguLi4pIiwgd2hpY2ggd2lsbCBub3Qgd29y
ayBhcyB0aGVzZSBtYWNyb3MgYXJlIEFMV0FZUworLy8gICAgIGRlZmluZWQuCiAvLwogLy8gICBH
VEVTVF9IQVNfQ0xPTkUgICAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRo
YXQgY2xvbmUoMikKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZh
aWxhYmxlLgogLy8gICBHVEVTVF9IQVNfRVhDRVBUSU9OUyAgICAgLSBEZWZpbmUgaXQgdG8gMS8w
IHRvIGluZGljYXRlIHRoYXQgZXhjZXB0aW9ucwogLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcmUgZW5hYmxlZC4KIC8vICAgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgIC0gRGVmaW5l
IGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB0aGF0IDo6c3RyaW5nCi0vLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlzL2lzbid0IGF2YWlsYWJsZSAoc29tZSBzeXN0ZW1zIGRlZmluZQotLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0cmluZywgd2hpY2ggaXMgZGlmZmVyZW50
IHRvIHN0ZDo6c3RyaW5nKS4KLS8vICAgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HIC0gRGVmaW5l
IGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB0aGF0IDo6c3RyaW5nCi0vLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlzL2lzbid0IGF2YWlsYWJsZSAoc29tZSBzeXN0ZW1zIGRlZmluZQotLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OndzdHJpbmcsIHdoaWNoIGlzIGRpZmZlcmVu
dCB0byBzdGQ6OndzdHJpbmcpLgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcy9p
c24ndCBhdmFpbGFibGUKKy8vICAgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HIC0gRGVmaW5lIGl0
IHRvIDEvMCB0byBpbmRpY2F0ZSB0aGF0IDo6d3N0cmluZworLy8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpcy9pc24ndCBhdmFpbGFibGUKKy8vICAgR1RFU1RfSEFTX1BPU0lYX1JFICAg
ICAgIC0gRGVmaW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB0aGF0IFBPU0lYIHJlZ3VsYXIKKy8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbnMgYXJlL2FyZW4ndCBhdmFp
bGFibGUuCiAvLyAgIEdURVNUX0hBU19QVEhSRUFEICAgICAgICAtIERlZmluZSBpdCB0byAxLzAg
dG8gaW5kaWNhdGUgdGhhdCA8cHRocmVhZC5oPgogLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpcy9pc24ndCBhdmFpbGFibGUuCiAvLyAgIEdURVNUX0hBU19SVFRJICAgICAgICAgICAt
IERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCBSVFRJIGlzL2lzbid0CkBAIC02Miwx
MCArOTAsMTYgQEAKIC8vICAgR1RFU1RfSEFTX1NFSCAgICAgICAgICAgIC0gRGVmaW5lIGl0IHRv
IDEvMCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZQogLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb21waWxlciBzdXBwb3J0cyBNaWNyb3NvZnQncyAiU3RydWN0dXJlZAogLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb24gSGFuZGxpbmciLgorLy8gICBHVEVTVF9I
QVNfU1RSRUFNX1JFRElSRUNUSU9OCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIERl
ZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUKKy8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGxhdGZvcm0gc3VwcG9ydHMgSS9PIHN0cmVhbSByZWRpcmVjdGlvbiB1
c2luZworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXAoKSBhbmQgZHVwMigpLgog
Ly8gICBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGlj
YXRlIHdoZXRoZXIgR29vZ2xlCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3Qn
cyBvd24gdHIxIHR1cGxlIGltcGxlbWVudGF0aW9uIHNob3VsZCBiZQogLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1c2VkLiAgVW51c2VkIHdoZW4gdGhlIHVzZXIgc2V0cwogLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9IQVNfVFIxX1RVUExFIHRvIDAuCisvLyAg
IEdURVNUX0xBTkdfQ1hYMTEgICAgICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUg
dGhhdCBHb29nbGUgVGVzdAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBidWls
ZGluZyBpbiBDKysxMS9DKys5OCBtb2RlLgogLy8gICBHVEVTVF9MSU5LRURfQVNfU0hBUkVEX0xJ
QlJBUlkKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gRGVmaW5lIHRvIDEgd2hlbiBj
b21waWxpbmcgdGVzdHMgdGhhdCB1c2UKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R29vZ2xlIFRlc3QgYXMgYSBzaGFyZWQgbGlicmFyeSAoa25vd24gYXMKQEAgLTczLDIzICsxMDcs
NDMgQEAKIC8vICAgR1RFU1RfQ1JFQVRFX1NIQVJFRF9MSUJSQVJZCiAvLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtIERlZmluZSB0byAxIHdoZW4gY29tcGlsaW5nIEdvb2dsZSBUZXN0IGl0
c2VsZgogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBhIHNoYXJlZCBsaWJyYXJ5
LgotCi0vLyBUaGlzIGhlYWRlciBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgdXRpbGl0aWVzOgorLy8g
ICBHVEVTVF9ERUZBVUxUX0RFQVRIX1RFU1RfU1RZTEUKKy8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC0gVGhlIGRlZmF1bHQgdmFsdWUgb2YgLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlLgor
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbGVnYWN5IGRlZmF1bHQgaGFzIGJl
ZW4gImZhc3QiIGluIHRoZSBvcGVuCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNv
dXJjZSB2ZXJzaW9uIHNpbmNlIDIwMDguIFRoZSByZWNvbW1lbmRlZCB2YWx1ZQorLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpcyAidGhyZWFkc2FmZSIsIGFuZCBjYW4gYmUgc2V0IGlu
CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbS9ndGVzdC1wb3J0LmguCisK
Ky8vIFBsYXRmb3JtLWluZGljYXRpbmcgbWFjcm9zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8KKy8vIE1hY3JvcyBpbmRpY2F0aW5nIHRoZSBwbGF0Zm9ybSBvbiB3aGljaCBHb29n
bGUgVGVzdCBpcyBiZWluZyB1c2VkCisvLyAoYSBtYWNybyBpcyBkZWZpbmVkIHRvIDEgaWYgY29t
cGlsZWQgb24gdGhlIGdpdmVuIHBsYXRmb3JtOworLy8gb3RoZXJ3aXNlIFVOREVGSU5FRCAtLSBp
dCdzIG5ldmVyIGRlZmluZWQgdG8gMC4pLiAgR29vZ2xlIFRlc3QKKy8vIGRlZmluZXMgdGhlc2Ug
bWFjcm9zIGF1dG9tYXRpY2FsbHkuICBDb2RlIG91dHNpZGUgR29vZ2xlIFRlc3QgTVVTVAorLy8g
Tk9UIGRlZmluZSB0aGVtLgogLy8KLS8vIE1hY3JvcyBpbmRpY2F0aW5nIHRoZSBjdXJyZW50IHBs
YXRmb3JtIChkZWZpbmVkIHRvIDEgaWYgY29tcGlsZWQgb24KLS8vIHRoZSBnaXZlbiBwbGF0Zm9y
bTsgb3RoZXJ3aXNlIHVuZGVmaW5lZCk6CiAvLyAgIEdURVNUX09TX0FJWCAgICAgIC0gSUJNIEFJ
WAogLy8gICBHVEVTVF9PU19DWUdXSU4gICAtIEN5Z3dpbgotLy8gICBHVEVTVF9PU19MSU5VWCAg
ICAtIExpbnV4CiAvLyAgIEdURVNUX09TX0ZSRUVCU0QgIC0gRnJlZUJTRAotLy8gICBHVEVTVF9P
U19IVVJEICAgICAtIEdOVS9IdXJkCisvLyAgIEdURVNUX09TX0ZVQ0hTSUEgIC0gRnVjaHNpYQor
Ly8gICBHVEVTVF9PU19IUFVYICAgICAtIEhQLVVYCisvLyAgIEdURVNUX09TX0xJTlVYICAgIC0g
TGludXgKKy8vICAgICBHVEVTVF9PU19MSU5VWF9BTkRST0lEIC0gR29vZ2xlIEFuZHJvaWQKIC8v
ICAgR1RFU1RfT1NfTUFDICAgICAgLSBNYWMgT1MgWAorLy8gICAgIEdURVNUX09TX0lPUyAgICAt
IGlPUworLy8gICBHVEVTVF9PU19OQUNMICAgICAtIEdvb2dsZSBOYXRpdmUgQ2xpZW50IChOYUNs
KQorLy8gICBHVEVTVF9PU19ORVRCU0QgICAtIE5ldEJTRAorLy8gICBHVEVTVF9PU19PUEVOQlNE
ICAtIE9wZW5CU0QKKy8vICAgR1RFU1RfT1NfUU5YICAgICAgLSBRTlgKIC8vICAgR1RFU1RfT1Nf
U09MQVJJUyAgLSBTdW4gU29sYXJpcwogLy8gICBHVEVTVF9PU19TWU1CSUFOICAtIFN5bWJpYW4K
IC8vICAgR1RFU1RfT1NfV0lORE9XUyAgLSBXaW5kb3dzIChEZXNrdG9wLCBNaW5HVywgb3IgTW9i
aWxlKQogLy8gICAgIEdURVNUX09TX1dJTkRPV1NfREVTS1RPUCAgLSBXaW5kb3dzIERlc2t0b3AK
IC8vICAgICBHVEVTVF9PU19XSU5ET1dTX01JTkdXICAgIC0gTWluR1cKIC8vICAgICBHVEVTVF9P
U19XSU5ET1dTX01PQklMRSAgIC0gV2luZG93cyBNb2JpbGUKKy8vICAgICBHVEVTVF9PU19XSU5E
T1dTX1BIT05FICAgIC0gV2luZG93cyBQaG9uZQorLy8gICAgIEdURVNUX09TX1dJTkRPV1NfUlQg
ICAgICAgLSBXaW5kb3dzIFN0b3JlIEFwcC9XaW5SVAogLy8gICBHVEVTVF9PU19aT1MgICAgICAt
IHovT1MKIC8vCiAvLyBBbW9uZyB0aGUgcGxhdGZvcm1zLCBDeWd3aW4sIExpbnV4LCBNYXggT1Mg
WCwgYW5kIFdpbmRvd3MgaGF2ZSB0aGUKQEAgLTk5LDIwICsxNTMsNTAgQEAKIC8vIGdvb2dsZXRl
c3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbSAocGF0Y2hlcyBmb3IgZml4aW5nIHRoZW0gYXJl
CiAvLyBldmVuIG1vcmUgd2VsY29tZSEpLgogLy8KLS8vIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJs
ZSB0aGF0IG5vbmUgb2YgdGhlIEdURVNUX09TXyogbWFjcm9zIGFyZSBkZWZpbmVkLgorLy8gSXQg
aXMgcG9zc2libGUgdGhhdCBub25lIG9mIHRoZSBHVEVTVF9PU18qIG1hY3JvcyBhcmUgZGVmaW5l
ZC4KKworLy8gRmVhdHVyZS1pbmRpY2F0aW5nIG1hY3JvcworLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8KKy8vIE1hY3JvcyBpbmRpY2F0aW5nIHdoaWNoIEdvb2dsZSBUZXN0IGZlYXR1
cmVzIGFyZSBhdmFpbGFibGUgKGEgbWFjcm8KKy8vIGlzIGRlZmluZWQgdG8gMSBpZiB0aGUgY29y
cmVzcG9uZGluZyBmZWF0dXJlIGlzIHN1cHBvcnRlZDsKKy8vIG90aGVyd2lzZSBVTkRFRklORUQg
LS0gaXQncyBuZXZlciBkZWZpbmVkIHRvIDAuKS4gIEdvb2dsZSBUZXN0CisvLyBkZWZpbmVzIHRo
ZXNlIG1hY3JvcyBhdXRvbWF0aWNhbGx5LiAgQ29kZSBvdXRzaWRlIEdvb2dsZSBUZXN0IE1VU1QK
Ky8vIE5PVCBkZWZpbmUgdGhlbS4KKy8vCisvLyBUaGVzZSBtYWNyb3MgYXJlIHB1YmxpYyBzbyB0
aGF0IHBvcnRhYmxlIHRlc3RzIGNhbiBiZSB3cml0dGVuLgorLy8gU3VjaCB0ZXN0cyB0eXBpY2Fs
bHkgc3Vycm91bmQgY29kZSB1c2luZyBhIGZlYXR1cmUgd2l0aCBhbiAjaWYKKy8vIHdoaWNoIGNv
bnRyb2xzIHRoYXQgY29kZS4gIEZvciBleGFtcGxlOgorLy8KKy8vICNpZiBHVEVTVF9IQVNfREVB
VEhfVEVTVAorLy8gICBFWFBFQ1RfREVBVEgoRG9Tb21ldGhpbmdEZWFkbHkoKSk7CisvLyAjZW5k
aWYKIC8vCi0vLyBNYWNyb3MgaW5kaWNhdGluZyBhdmFpbGFibGUgR29vZ2xlIFRlc3QgZmVhdHVy
ZXMgKGRlZmluZWQgdG8gMSBpZgotLy8gdGhlIGNvcnJlc3BvbmRpbmcgZmVhdHVyZSBpcyBzdXBw
b3J0ZWQ7IG90aGVyd2lzZSB1bmRlZmluZWQpOgogLy8gICBHVEVTVF9IQVNfQ09NQklORSAgICAg
IC0gdGhlIENvbWJpbmUoKSBmdW5jdGlvbiAoZm9yIHZhbHVlLXBhcmFtZXRlcml6ZWQKIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzKQogLy8gICBHVEVTVF9IQVNfREVBVEhfVEVT
VCAgIC0gZGVhdGggdGVzdHMKLS8vICAgR1RFU1RfSEFTX1BBUkFNX1RFU1QgICAtIHZhbHVlLXBh
cmFtZXRlcml6ZWQgdGVzdHMKIC8vICAgR1RFU1RfSEFTX1RZUEVEX1RFU1QgICAtIHR5cGVkIHRl
c3RzCiAvLyAgIEdURVNUX0hBU19UWVBFRF9URVNUX1AgLSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVz
dHMKLS8vICAgR1RFU1RfVVNFU19QT1NJWF9SRSAgICAtIGVuaGFuY2VkIFBPU0lYIHJlZ2V4IGlz
IHVzZWQuCisvLyAgIEdURVNUX0lTX1RIUkVBRFNBRkUgICAgLSBHb29nbGUgVGVzdCBpcyB0aHJl
YWQtc2FmZS4KKy8vICAgR09PR0xFVEVTVF9DTTAwMDcgRE8gTk9UIERFTEVURQorLy8gICBHVEVT
VF9VU0VTX1BPU0lYX1JFICAgIC0gZW5oYW5jZWQgUE9TSVggcmVnZXggaXMgdXNlZC4gRG8gbm90
IGNvbmZ1c2Ugd2l0aAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfSEFTX1BP
U0lYX1JFIChzZWUgYWJvdmUpIHdoaWNoIHVzZXJzIGNhbgorLy8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVmaW5lIHRoZW1zZWx2ZXMuCiAvLyAgIEdURVNUX1VTRVNfU0lNUExFX1JFICAg
LSBvdXIgb3duIHNpbXBsZSByZWdleCBpcyB1c2VkOwotLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhlIGFib3ZlIHR3byBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLgorLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhlIGFib3ZlIFJFXGIocykgYXJlIG11dHVhbGx5IGV4Y2x1c2l2
ZS4KIC8vICAgR1RFU1RfQ0FOX0NPTVBBUkVfTlVMTCAtIGFjY2VwdHMgdW50eXBlZCBOVUxMIGlu
IEVYUEVDVF9FUSgpLgorCisvLyBNaXNjIHB1YmxpYyBtYWNyb3MKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLQorLy8KKy8vICAgR1RFU1RfRkxBRyhmbGFnX25hbWUpICAtIHJlZmVyZW5jZXMgdGhlIHZh
cmlhYmxlIGNvcnJlc3BvbmRpbmcgdG8KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
ZSBnaXZlbiBHb29nbGUgVGVzdCBmbGFnLgorCisvLyBJbnRlcm5hbCB1dGlsaXRpZXMKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIFRoZSBmb2xsb3dpbmcgbWFjcm9zIGFuZCB1dGlsaXRp
ZXMgYXJlIGZvciBHb29nbGUgVGVzdCdzIElOVEVSTkFMCisvLyB1c2Ugb25seS4gIENvZGUgb3V0
c2lkZSBHb29nbGUgVGVzdCBNVVNUIE5PVCBVU0UgVEhFTSBESVJFQ1RMWS4KIC8vCiAvLyBNYWNy
b3MgZm9yIGJhc2ljIEMrKyBjb2Rpbmc6CiAvLyAgIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NL
RVJfIC0gZm9yIGRpc2FibGluZyBhIGdjYyB3YXJuaW5nLgpAQCAtMTIxLDI1ICsyMDUsMzQgQEAK
IC8vICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyAgIC0gZGlzYWJsZXMgb3BlcmF0b3I9LgogLy8g
ICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fIC0gZGlzYWJsZXMgY29weSBjdG9yIGFu
ZCBvcGVyYXRvcj0uCiAvLyAgIEdURVNUX01VU1RfVVNFX1JFU1VMVF8gICAtIGRlY2xhcmVzIHRo
YXQgYSBmdW5jdGlvbidzIHJlc3VsdCBtdXN0IGJlIHVzZWQuCisvLyAgIEdURVNUX0lOVEVOVElP
TkFMX0NPTlNUX0NPTkRfUFVTSF8gLSBzdGFydCBjb2RlIHNlY3Rpb24gd2hlcmUgTVNWQyBDNDEy
NyBpcworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3Nl
ZCAoY29uc3RhbnQgY29uZGl0aW9uYWwpLgorLy8gICBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9D
T05EX1BPUF8gIC0gZmluaXNoIGNvZGUgc2VjdGlvbiB3aGVyZSBNU1ZDIEM0MTI3CisvLyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBzdXBwcmVzc2VkLgorLy8KKy8v
IEMrKzExIGZlYXR1cmUgd3JhcHBlcnM6CisvLworLy8gICB0ZXN0aW5nOjppbnRlcm5hbDo6Zm9y
d2FyZCAtIHBvcnRhYmlsaXR5IHdyYXBwZXIgZm9yIHN0ZDo6Zm9yd2FyZC4KKy8vICAgdGVzdGlu
Zzo6aW50ZXJuYWw6Om1vdmUgIC0gcG9ydGFiaWxpdHkgd3JhcHBlciBmb3Igc3RkOjptb3ZlLgog
Ly8KIC8vIFN5bmNocm9uaXphdGlvbjoKIC8vICAgTXV0ZXgsIE11dGV4TG9jaywgVGhyZWFkTG9j
YWwsIEdldFRocmVhZENvdW50KCkKLS8vICAgICAgICAgICAgICAgICAgLSBzeW5jaHJvbml6YXRp
b24gcHJpbWl0aXZlcy4KLS8vICAgR1RFU1RfSVNfVEhSRUFEU0FGRSAtIGRlZmluZWQgdG8gMSB0
byBpbmRpY2F0ZSB0aGF0IHRoZSBhYm92ZQotLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3lu
Y2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaGF2ZSByZWFsIGltcGxlbWVudGF0aW9ucwotLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgYW5kIEdvb2dsZSBUZXN0IGlzIHRocmVhZC1zYWZlOyBvciAw
IG90aGVyd2lzZS4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gc3luY2hyb25pemF0
aW9uIHByaW1pdGl2ZXMuCiAvLwogLy8gVGVtcGxhdGUgbWV0YSBwcm9ncmFtbWluZzoKIC8vICAg
aXNfcG9pbnRlciAgICAgLSBhcyBpbiBUUjE7IG5lZWRlZCBvbiBTeW1iaWFuIGFuZCBJQk0gWEwg
Qy9DKysgb25seS4KKy8vICAgSXRlcmF0b3JUcmFpdHMgLSBwYXJ0aWFsIGltcGxlbWVudGF0aW9u
IG9mIHN0ZDo6aXRlcmF0b3JfdHJhaXRzLCB3aGljaAorLy8gICAgICAgICAgICAgICAgICAgIGlz
IG5vdCBhdmFpbGFibGUgaW4gbGliQ3N0ZCB3aGVuIGNvbXBpbGVkIHdpdGggU3VuIEMrKy4KIC8v
CiAvLyBTbWFydCBwb2ludGVyczoKIC8vICAgc2NvcGVkX3B0ciAgICAgLSBhcyBpbiBUUjIuCiAv
LwogLy8gUmVndWxhciBleHByZXNzaW9uczoKIC8vICAgUkUgICAgICAgICAgICAgLSBhIHNpbXBs
ZSByZWd1bGFyIGV4cHJlc3Npb24gY2xhc3MgdXNpbmcgdGhlIFBPU0lYCi0vLyAgICAgICAgICAg
ICAgICAgICAgRXh0ZW5kZWQgUmVndWxhciBFeHByZXNzaW9uIHN5bnRheC4gIE5vdCBhdmFpbGFi
bGUgb24KLS8vICAgICAgICAgICAgICAgICAgICBXaW5kb3dzLgotLy8KKy8vICAgICAgICAgICAg
ICAgICAgICBFeHRlbmRlZCBSZWd1bGFyIEV4cHJlc3Npb24gc3ludGF4IG9uIFVOSVgtbGlrZSBw
bGF0Zm9ybXMKKy8vICAgICAgICAgICAgICAgICAgICBHT09HTEVURVNUX0NNMDAwOCBETyBOT1Qg
REVMRVRFCisvLyAgICAgICAgICAgICAgICAgICAgb3IgYSByZWR1Y2VkIHJlZ3VsYXIgZXhjZXB0
aW9uIHN5bnRheCBvbiBvdGhlcgorLy8gICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtcywgaW5j
bHVkaW5nIFdpbmRvd3MuCiAvLyBMb2dnaW5nOgogLy8gICBHVEVTVF9MT0dfKCkgICAtIGxvZ3Mg
bWVzc2FnZXMgYXQgdGhlIHNwZWNpZmllZCBzZXZlcml0eSBsZXZlbC4KIC8vICAgTG9nVG9TdGRl
cnIoKSAgLSBkaXJlY3RzIGFsbCBsb2cgbWVzc2FnZXMgdG8gc3RkZXJyLgpAQCAtMTYwLDEwICsy
NTMsOSBAQAogLy8gICBCaWdnZXN0SW50ICAgICAtIHRoZSBiaWdnZXN0IHNpZ25lZCBpbnRlZ2Vy
IHR5cGUuCiAvLwogLy8gQ29tbWFuZC1saW5lIHV0aWxpdGllczoKLS8vICAgR1RFU1RfRkxBRygp
ICAgICAgIC0gcmVmZXJlbmNlcyBhIGZsYWcuCiAvLyAgIEdURVNUX0RFQ0xBUkVfKigpICAtIGRl
Y2xhcmVzIGEgZmxhZy4KIC8vICAgR1RFU1RfREVGSU5FXyooKSAgIC0gZGVmaW5lcyBhIGZsYWcu
Ci0vLyAgIEdldEFyZ3ZzKCkgICAgICAgICAtIHJldHVybnMgdGhlIGNvbW1hbmQgbGluZSBhcyBh
IHZlY3RvciBvZiBzdHJpbmdzLgorLy8gICBHZXRJbmplY3RhYmxlQXJndnMoKSAtIHJldHVybnMg
dGhlIGNvbW1hbmQgbGluZSBhcyBhIHZlY3RvciBvZiBzdHJpbmdzLgogLy8KIC8vIEVudmlyb25t
ZW50IHZhcmlhYmxlIHV0aWxpdGllczoKIC8vICAgR2V0RW52KCkgICAgICAgICAgICAgLSBnZXRz
IHRoZSB2YWx1ZSBvZiBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KQEAgLTE3MSwxNzEgKzI2Mywz
MDUgQEAKIC8vICAgSW50MzJGcm9tR1Rlc3RFbnYoKSAgLSBwYXJzZXMgYW4gSW50MzIgZW52aXJv
bm1lbnQgdmFyaWFibGUuCiAvLyAgIFN0cmluZ0Zyb21HVGVzdEVudigpIC0gcGFyc2VzIGEgc3Ry
aW5nIGVudmlyb25tZW50IHZhcmlhYmxlLgogCi0jaW5jbHVkZSA8c3RkZGVmLmg+ICAvLyBGb3Ig
cHRyZGlmZl90CisjaW5jbHVkZSA8Y3R5cGUuaD4gICAvLyBmb3IgaXNzcGFjZSwgZXRjCisjaW5j
bHVkZSA8c3RkZGVmLmg+ICAvLyBmb3IgcHRyZGlmZl90CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAj
aW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpZm5kZWYgX1dJTjMyX1dD
RQotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjIGluY2x1ZGUgPHN5cy90eXBlcy5oPgorIyBpbmNs
dWRlIDxzeXMvc3RhdC5oPgogI2VuZGlmICAvLyAhX1dJTjMyX1dDRQogCi0jaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+Ci0jaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jvcy5oPgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTRXhwb3J0TWFjcm9zLmg+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2lmIGRlZmluZWQgX19BUFBMRV9fCisj
IGluY2x1ZGUgPEF2YWlsYWJpbGl0eU1hY3Jvcy5oPgorIyBpbmNsdWRlIDxUYXJnZXRDb25kaXRp
b25hbHMuaD4KKyNlbmRpZgogCisvLyBCcmluZ3MgaW4gdGhlIGRlZmluaXRpb24gb2YgSEFTX0dM
T0JBTF9TVFJJTkcuICBUaGlzIG11c3QgYmUgZG9uZQorLy8gQkVGT1JFIHdlIHRlc3QgSEFTX0dM
T0JBTF9TVFJJTkcuCisjaW5jbHVkZSA8c3RyaW5nPiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8YWxn
b3JpdGhtPiAgLy8gTk9MSU5UCiAjaW5jbHVkZSA8aW9zdHJlYW0+ICAvLyBOT0xJTlQKICNpbmNs
dWRlIDxzc3RyZWFtPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8c3RyaW5nPiAgLy8gTk9MSU5UCisj
aW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+ICAvLyBOT0xJTlQKKworI2luY2x1
ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oIgorI2luY2x1ZGUgImd0ZXN0L2lu
dGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmgiCisKKyNpZiAhZGVmaW5lZChHVEVTVF9ERVZfRU1B
SUxfKQorIyBkZWZpbmUgR1RFU1RfREVWX0VNQUlMXyAiZ29vZ2xldGVzdGZyYW1ld29ya0BAZ29v
Z2xlZ3JvdXBzLmNvbSIKKyMgZGVmaW5lIEdURVNUX0ZMQUdfUFJFRklYXyAiZ3Rlc3RfIgorIyBk
ZWZpbmUgR1RFU1RfRkxBR19QUkVGSVhfREFTSF8gImd0ZXN0LSIKKyMgZGVmaW5lIEdURVNUX0ZM
QUdfUFJFRklYX1VQUEVSXyAiR1RFU1RfIgorIyBkZWZpbmUgR1RFU1RfTkFNRV8gIkdvb2dsZSBU
ZXN0IgorIyBkZWZpbmUgR1RFU1RfUFJPSkVDVF9VUkxfICJodHRwczovL2dpdGh1Yi5jb20vZ29v
Z2xlL2dvb2dsZXRlc3QvIgorI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9ERVZfRU1BSUxfKQog
Ci0jZGVmaW5lIEdURVNUX0RFVl9FTUFJTF8gImdvb2dsZXRlc3RmcmFtZXdvcmtAQGdvb2dsZWdy
b3Vwcy5jb20iCi0jZGVmaW5lIEdURVNUX0ZMQUdfUFJFRklYXyAiZ3Rlc3RfIgotI2RlZmluZSBH
VEVTVF9GTEFHX1BSRUZJWF9EQVNIXyAiZ3Rlc3QtIgotI2RlZmluZSBHVEVTVF9GTEFHX1BSRUZJ
WF9VUFBFUl8gIkdURVNUXyIKLSNkZWZpbmUgR1RFU1RfTkFNRV8gIkdvb2dsZSBUZXN0IgotI2Rl
ZmluZSBHVEVTVF9QUk9KRUNUX1VSTF8gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0
ZXN0LyIKKyNpZiAhZGVmaW5lZChHVEVTVF9JTklUX0dPT0dMRV9URVNUX05BTUVfKQorIyBkZWZp
bmUgR1RFU1RfSU5JVF9HT09HTEVfVEVTVF9OQU1FXyAidGVzdGluZzo6SW5pdEdvb2dsZVRlc3Qi
CisjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0lOSVRfR09PR0xFX1RFU1RfTkFNRV8pCiAKIC8v
IERldGVybWluZXMgdGhlIHZlcnNpb24gb2YgZ2NjIHRoYXQgaXMgdXNlZCB0byBjb21waWxlIHRo
aXMuCiAjaWZkZWYgX19HTlVDX18KIC8vIDQwMzAyIG1lYW5zIHZlcnNpb24gNC4zLjIuCi0jZGVm
aW5lIEdURVNUX0dDQ19WRVJfIFwKKyMgZGVmaW5lIEdURVNUX0dDQ19WRVJfIFwKICAgICAoX19H
TlVDX18qMTAwMDAgKyBfX0dOVUNfTUlOT1JfXyoxMDAgKyBfX0dOVUNfUEFUQ0hMRVZFTF9fKQog
I2VuZGlmICAvLyBfX0dOVUNfXwogCi0vLyBEZXRlcm1pbmVzIHRoZSBwbGF0Zm9ybSBvbiB3aGlj
aCBHb29nbGUgVGVzdCBpcyBjb21waWxlZC4KLSNpZmRlZiBfX0NZR1dJTl9fCi0jZGVmaW5lIEdU
RVNUX09TX0NZR1dJTiAxCi0jZWxpZiBkZWZpbmVkIF9fU1lNQklBTjMyX18KLSNkZWZpbmUgR1RF
U1RfT1NfU1lNQklBTiAxCi0jZWxpZiBkZWZpbmVkIF9XSU4zMgotI2RlZmluZSBHVEVTVF9PU19X
SU5ET1dTIDEKLSNpZmRlZiBfV0lOMzJfV0NFCi0jZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfTU9C
SUxFIDEKLSNlbGlmIGRlZmluZWQoX19NSU5HV19fKSB8fCBkZWZpbmVkKF9fTUlOR1czMl9fKQot
I2RlZmluZSBHVEVTVF9PU19XSU5ET1dTX01JTkdXIDEKKy8vIE1hY3JvcyBmb3IgZGlzYWJsaW5n
IE1pY3Jvc29mdCBWaXN1YWwgQysrIHdhcm5pbmdzLgorLy8KKy8vICAgR1RFU1RfRElTQUJMRV9N
U0NfV0FSTklOR1NfUFVTSF8oNDgwMCA0Mzg1KQorLy8gICAvKiBjb2RlIHRoYXQgdHJpZ2dlcnMg
d2FybmluZ3MgQzQ4MDAgYW5kIEM0Mzg1ICovCisvLyAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5J
TkdTX1BPUF8oKQorI2lmIF9NU0NfVkVSID49IDE0MDAKKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVf
TVNDX1dBUk5JTkdTX1BVU0hfKHdhcm5pbmdzKSBcCisgICAgX19wcmFnbWEod2FybmluZyhwdXNo
KSkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgX19wcmFnbWEod2FybmluZyhkaXNhYmxl
OiB3YXJuaW5ncykpCisjIGRlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkg
ICAgICAgICAgXAorICAgIF9fcHJhZ21hKHdhcm5pbmcocG9wKSkKICNlbHNlCi0jZGVmaW5lIEdU
RVNUX09TX1dJTkRPV1NfREVTS1RPUCAxCi0jZW5kaWYgIC8vIF9XSU4zMl9XQ0UKLSNlbGlmIGRl
ZmluZWQgX19BUFBMRV9fCi0jZGVmaW5lIEdURVNUX09TX01BQyAxCi0jZWxpZiBkZWZpbmVkIF9f
bGludXhfXwotI2RlZmluZSBHVEVTVF9PU19MSU5VWCAxCi0jZWxpZiBkZWZpbmVkIF9fR05VX18K
LSNkZWZpbmUgR1RFU1RfT1NfSFVSRCAxCi0jZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBk
ZWZpbmVkKF9fRHJhZ29uRmx5X18pIHx8IGRlZmluZWQoX19GcmVlQlNEX2tlcm5lbF9fKQotI2Rl
ZmluZSBHVEVTVF9PU19GUkVFQlNEIDEKLSNlbGlmIGRlZmluZWQgX19NVlNfXwotI2RlZmluZSBH
VEVTVF9PU19aT1MgMQotI2VsaWYgZGVmaW5lZChfX3N1bikgJiYgZGVmaW5lZChfX1NWUjQpCi0j
ZGVmaW5lIEdURVNUX09TX1NPTEFSSVMgMQotI2VsaWYgZGVmaW5lZChfQUlYKQotI2RlZmluZSBH
VEVTVF9PU19BSVggMQotI2VuZGlmICAvLyBfX0NZR1dJTl9fCi0KLSNpZiBHVEVTVF9PU19DWUdX
SU4gfHwgR1RFU1RfT1NfTElOVVggfHwgR1RFU1RfT1NfTUFDIHx8IEdURVNUX09TX1NZTUJJQU4g
fHwgXAotICAgIEdURVNUX09TX1NPTEFSSVMgfHwgR1RFU1RfT1NfQUlYIHx8IEdURVNUX09TX0ZS
RUVCU0QgfHwgR1RFU1RfT1NfSFVSRAorLy8gT2xkZXIgdmVyc2lvbnMgb2YgTVNWQyBkb24ndCBo
YXZlIF9fcHJhZ21hLgorIyBkZWZpbmUgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8o
d2FybmluZ3MpCisjIGRlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKyNl
bmRpZgorCisvLyBDbGFuZyBvbiBXaW5kb3dzIGRvZXMgbm90IHVuZGVyc3RhbmQgTVNWQydzIHBy
YWdtYSB3YXJuaW5nLgorLy8gV2UgbmVlZCBjbGFuZy1zcGVjaWZpYyB3YXkgdG8gZGlzYWJsZSBm
dW5jdGlvbiBkZXByZWNhdGlvbiB3YXJuaW5nLgorI2lmZGVmIF9fY2xhbmdfXworIyBkZWZpbmUg
R1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRFRF9QVVNIXygpICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICBfUHJhZ21hKCJjbGFuZyBkaWFnbm9zdGljIHB1c2giKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgX1ByYWdtYSgiY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkIFwiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9uc1wiIikgXAorICAgIF9QcmFnbWEoImNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCBcIi1XZGVwcmVjYXRlZC1pbXBsZW1lbnRhdGlvbnNcIiIpCisj
ZGVmaW5lIEdURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUE9QXygpIFwKKyAgICBfUHJhZ21h
KCJjbGFuZyBkaWFnbm9zdGljIHBvcCIpCisjZWxzZQorIyBkZWZpbmUgR1RFU1RfRElTQUJMRV9N
U0NfREVQUkVDQVRFRF9QVVNIXygpIFwKKyAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19Q
VVNIXyg0OTk2KQorIyBkZWZpbmUgR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRFRF9QT1BfKCkg
XAorICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQorI2VuZGlmCisKKyNpZm5k
ZWYgR1RFU1RfTEFOR19DWFgxMQorLy8gZ2NjIGFuZCBjbGFuZyBkZWZpbmUgX19HWFhfRVhQRVJJ
TUVOVEFMX0NYWDBYX18gd2hlbgorLy8gLXN0ZD17YyxnbnV9Kyt7MHgsMTF9IGlzIHBhc3NlZC4g
IFRoZSBDKysxMSBzdGFuZGFyZCBzcGVjaWZpZXMgYQorLy8gdmFsdWUgZm9yIF9fY3BsdXNwbHVz
LCBhbmQgcmVjZW50IHZlcnNpb25zIG9mIGNsYW5nLCBnY2MsIGFuZAorLy8gcHJvYmFibHkgb3Ro
ZXIgY29tcGlsZXJzIHNldCB0aGF0IHRvbyBpbiBDKysxMSBtb2RlLgorIyBpZiBfX0dYWF9FWFBF
UklNRU5UQUxfQ1hYMFhfXyB8fCBfX2NwbHVzcGx1cyA+PSAyMDExMDNMIHx8IF9NU0NfVkVSID49
IDE5MDAKKy8vIENvbXBpbGluZyBpbiBhdCBsZWFzdCBDKysxMSBtb2RlLgorIyAgZGVmaW5lIEdU
RVNUX0xBTkdfQ1hYMTEgMQorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfTEFOR19DWFgxMSAwCisj
IGVuZGlmCisjZW5kaWYKKworLy8gRGlzdGluY3QgZnJvbSBDKysxMSBsYW5ndWFnZSBzdXBwb3J0
LCBzb21lIGVudmlyb25tZW50cyBkb24ndCBwcm92aWRlCisvLyBwcm9wZXIgQysrMTEgbGlicmFy
eSBzdXBwb3J0LiBOb3RhYmx5LCBpdCdzIHBvc3NpYmxlIHRvIGJ1aWxkIGluCisvLyBDKysxMSBt
b2RlIHdoZW4gdGFyZ2V0aW5nIE1hYyBPUyBYIDEwLjYsIHdoaWNoIGhhcyBhbiBvbGQgbGlic3Rk
YysrCisvLyB3aXRoIG5vIEMrKzExIHN1cHBvcnQuCisvLworLy8gbGlic3RkYysrIGhhcyBzdWZm
aWNpZW50IEMrKzExIHN1cHBvcnQgYXMgb2YgR0NDIDQuNi4wLCBfX0dMSUJDWFhfXworLy8gMjAx
MTAzMjUsIGJ1dCBtYWludGVuYW5jZSByZWxlYXNlcyBpbiB0aGUgNC40IGFuZCA0LjUgc2VyaWVz
IGZvbGxvd2VkCisvLyB0aGlzIGRhdGUsIHNvIGNoZWNrIGZvciB0aG9zZSB2ZXJzaW9ucyBieSB0
aGVpciBkYXRlIHN0YW1wcy4KKy8vIGh0dHBzOi8vZ2NjLmdudS5vcmcvb25saW5lZG9jcy9saWJz
dGRjKysvbWFudWFsL2FiaS5odG1sI2FiaS52ZXJzaW9uaW5nCisjaWYgR1RFU1RfTEFOR19DWFgx
MSAmJiBcCisgICAgKCFkZWZpbmVkKF9fR0xJQkNYWF9fKSB8fCAoIFwKKyAgICAgICAgX19HTElC
Q1hYX18gPj0gMjAxMTAzMjV1bCAmJiAgLyogR0NDID49IDQuNi4wICovIFwKKyAgICAgICAgLyog
QmxhY2tsaXN0IG9mIHBhdGNoIHJlbGVhc2VzIG9mIG9sZGVyIGJyYW5jaGVzOiAqLyBcCisgICAg
ICAgIF9fR0xJQkNYWF9fICE9IDIwMTEwNDE2dWwgJiYgIC8qIEdDQyA0LjQuNiAqLyBcCisgICAg
ICAgIF9fR0xJQkNYWF9fICE9IDIwMTIwMzEzdWwgJiYgIC8qIEdDQyA0LjQuNyAqLyBcCisgICAg
ICAgIF9fR0xJQkNYWF9fICE9IDIwMTEwNDI4dWwgJiYgIC8qIEdDQyA0LjUuMyAqLyBcCisgICAg
ICAgIF9fR0xJQkNYWF9fICE9IDIwMTIwNzAydWwpKSAgIC8qIEdDQyA0LjUuNCAqLworIyBkZWZp
bmUgR1RFU1RfU1RETElCX0NYWDExIDEKKyNlbmRpZgorCisvLyBPbmx5IHVzZSBDKysxMSBsaWJy
YXJ5IGZlYXR1cmVzIGlmIHRoZSBsaWJyYXJ5IHByb3ZpZGVzIHRoZW0uCisjaWYgR1RFU1RfU1RE
TElCX0NYWDExCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX0JFR0lOX0FORF9FTkRfIDEKKyMgZGVm
aW5lIEdURVNUX0hBU19TVERfRk9SV0FSRF9MSVNUXyAxCisjIGlmICFkZWZpbmVkKF9NU0NfVkVS
KSB8fCAoX01TQ19GVUxMX1ZFUiA+PSAxOTAwMjM4MjQpCisvLyB3b3JrcyBvbmx5IHdpdGggVlMy
MDE1VTIgYW5kIGJldHRlcgorIyAgIGRlZmluZSBHVEVTVF9IQVNfU1REX0ZVTkNUSU9OXyAxCisj
IGVuZGlmCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX0lOSVRJQUxJWkVSX0xJU1RfIDEKKyMgZGVm
aW5lIEdURVNUX0hBU19TVERfTU9WRV8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9VTklRVUVf
UFRSXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX1NIQVJFRF9QVFJfIDEKKyMgZGVmaW5lIEdU
RVNUX0hBU19VTk9SREVSRURfTUFQXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfVU5PUkRFUkVEX1NF
VF8gMQorI2VuZGlmCisKKy8vIEMrKzExIHNwZWNpZmllcyB0aGF0IDx0dXBsZT4gcHJvdmlkZXMg
c3RkOjp0dXBsZS4KKy8vIFNvbWUgcGxhdGZvcm1zIHN0aWxsIG1pZ2h0IG5vdCBoYXZlIGl0LCBo
b3dldmVyLgorI2lmIEdURVNUX0xBTkdfQ1hYMTEKKyMgZGVmaW5lIEdURVNUX0hBU19TVERfVFVQ
TEVfIDEKKyMgaWYgZGVmaW5lZChfX2NsYW5nX18pCisvLyBJbnNwaXJlZCBieQorLy8gaHR0cHM6
Ly9jbGFuZy5sbHZtLm9yZy9kb2NzL0xhbmd1YWdlRXh0ZW5zaW9ucy5odG1sI2luY2x1ZGUtZmls
ZS1jaGVja2luZy1tYWNyb3MKKyMgIGlmIGRlZmluZWQoX19oYXNfaW5jbHVkZSkgJiYgIV9faGFz
X2luY2x1ZGUoPHR1cGxlPikKKyMgICB1bmRlZiBHVEVTVF9IQVNfU1REX1RVUExFXworIyAgZW5k
aWYKKyMgZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorLy8gSW5zcGlyZWQgYnkgYm9vc3QvY29uZmln
L3N0ZGxpYi9kaW5rdW13YXJlLmhwcAorIyAgaWYgZGVmaW5lZChfQ1BQTElCX1ZFUikgJiYgX0NQ
UExJQl9WRVIgPCA1MjAKKyMgICB1bmRlZiBHVEVTVF9IQVNfU1REX1RVUExFXworIyAgZW5kaWYK
KyMgZWxpZiBkZWZpbmVkKF9fR0xJQkNYWF9fKQorLy8gSW5zcGlyZWQgYnkgYm9vc3QvY29uZmln
L3N0ZGxpYi9saWJzdGRjcHAzLmhwcCwKKy8vIGh0dHA6Ly9nY2MuZ251Lm9yZy9nY2MtNC4yL2No
YW5nZXMuaHRtbCBhbmQKKy8vIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE0MDIyNzA0
NDQyOS9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2xpYnN0ZGMrKy9tYW51YWwvYmswMXB0MDFjaDAx
Lmh0bWwjbWFudWFsLmludHJvLnN0YXR1cy5zdGFuZGFyZC4yMDB4CisjICBpZiBfX0dOVUNfXyA8
IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCAyKQorIyAgIHVuZGVmIEdU
RVNUX0hBU19TVERfVFVQTEVfCisjICBlbmRpZgorIyBlbmRpZgorI2VuZGlmCisKKy8vIEJyaW5n
cyBpbiBkZWZpbml0aW9ucyBmb3IgZnVuY3Rpb25zIHVzZWQgaW4gdGhlIHRlc3Rpbmc6OmludGVy
bmFsOjpwb3NpeAorLy8gbmFtZXNwYWNlIChyZWFkLCB3cml0ZSwgY2xvc2UsIGNoZGlyLCBpc2F0
dHksIHN0YXQpLiBXZSBkbyBub3QgY3VycmVudGx5CisvLyB1c2UgdGhlbSBvbiBXaW5kb3dzIE1v
YmlsZS4KKyNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmICFHVEVTVF9PU19XSU5ET1dTX01PQklM
RQorIyAgaW5jbHVkZSA8ZGlyZWN0Lmg+CisjICBpbmNsdWRlIDxpby5oPgorIyBlbmRpZgorLy8g
SW4gb3JkZXIgdG8gYXZvaWQgaGF2aW5nIHRvIGluY2x1ZGUgPHdpbmRvd3MuaD4sIHVzZSBmb3J3
YXJkIGRlY2xhcmF0aW9uCisjaWYgR1RFU1RfT1NfV0lORE9XU19NSU5HVyAmJiAhZGVmaW5lZChf
X01JTkdXNjRfVkVSU0lPTl9NQUpPUikKKy8vIE1pbkdXIGRlZmluZWQgX0NSSVRJQ0FMX1NFQ1RJ
T04gYW5kIF9SVExfQ1JJVElDQUxfU0VDVElPTiBhcyB0d28KKy8vIHNlcGFyYXRlIChlcXVpdmFs
ZW50KSBzdHJ1Y3RzLCBpbnN0ZWFkIG9mIHVzaW5nIHR5cGVkZWYKK3R5cGVkZWYgc3RydWN0IF9D
UklUSUNBTF9TRUNUSU9OIEdURVNUX0NSSVRJQ0FMX1NFQ1RJT047CisjZWxzZQorLy8gQXNzdW1l
IENSSVRJQ0FMX1NFQ1RJT04gaXMgYSB0eXBlZGVmIG9mIF9SVExfQ1JJVElDQUxfU0VDVElPTi4K
Ky8vIFRoaXMgYXNzdW1wdGlvbiBpcyB2ZXJpZmllZCBieQorLy8gV2luZG93c1R5cGVzVGVzdC5D
UklUSUNBTF9TRUNUSU9OSXNfUlRMX0NSSVRJQ0FMX1NFQ1RJT04uCit0eXBlZGVmIHN0cnVjdCBf
UlRMX0NSSVRJQ0FMX1NFQ1RJT04gR1RFU1RfQ1JJVElDQUxfU0VDVElPTjsKKyNlbmRpZgorI2Vs
c2UKKy8vIFRoaXMgYXNzdW1lcyB0aGF0IG5vbi1XaW5kb3dzIE9TZXMgcHJvdmlkZSB1bmlzdGQu
aC4gRm9yIE9TZXMgd2hlcmUgdGhpcworLy8gaXMgbm90IHRoZSBjYXNlLCB3ZSBuZWVkIHRvIGlu
Y2x1ZGUgaGVhZGVycyB0aGF0IHByb3ZpZGUgdGhlIGZ1bmN0aW9ucworLy8gbWVudGlvbmVkIGFi
b3ZlLgorIyBpbmNsdWRlIDx1bmlzdGQuaD4KKyMgaW5jbHVkZSA8c3RyaW5ncy5oPgorI2VuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKyNpZiBHVEVTVF9PU19MSU5VWF9BTkRST0lECisvLyBV
c2VkIHRvIGRlZmluZSBfX0FORFJPSURfQVBJX18gbWF0Y2hpbmcgdGhlIHRhcmdldCBOREsgQVBJ
IGxldmVsLgorIyAgaW5jbHVkZSA8YW5kcm9pZC9hcGktbGV2ZWwuaD4gIC8vIE5PTElOVAorI2Vu
ZGlmCisKKy8vIERlZmluZXMgdGhpcyB0byB0cnVlIGlmZiBHb29nbGUgVGVzdCBjYW4gdXNlIFBP
U0lYIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCisjaWZuZGVmIEdURVNUX0hBU19QT1NJWF9SRQorIyBp
ZiBHVEVTVF9PU19MSU5VWF9BTkRST0lECisvLyBPbiBBbmRyb2lkLCA8cmVnZXguaD4gaXMgb25s
eSBhdmFpbGFibGUgc3RhcnRpbmcgd2l0aCBHaW5nZXJicmVhZC4KKyMgIGRlZmluZSBHVEVTVF9I
QVNfUE9TSVhfUkUgKF9fQU5EUk9JRF9BUElfXyA+PSA5KQorIyBlbHNlCisjICBkZWZpbmUgR1RF
U1RfSEFTX1BPU0lYX1JFICghR1RFU1RfT1NfV0lORE9XUykKKyMgZW5kaWYKKyNlbmRpZgorCisj
aWYgR1RFU1RfVVNFU19QQ1JFCisvLyBUaGUgYXBwcm9wcmlhdGUgaGVhZGVycyBoYXZlIGFscmVh
ZHkgYmVlbiBpbmNsdWRlZC4KKworI2VsaWYgR1RFU1RfSEFTX1BPU0lYX1JFCiAKIC8vIE9uIHNv
bWUgcGxhdGZvcm1zLCA8cmVnZXguaD4gbmVlZHMgc29tZW9uZSB0byBkZWZpbmUgc2l6ZV90LCBh
bmQKIC8vIHdvbid0IGNvbXBpbGUgb3RoZXJ3aXNlLiAgV2UgY2FuICNpbmNsdWRlIGl0IGhlcmUg
YXMgd2UgYWxyZWFkeQogLy8gaW5jbHVkZWQgPHN0ZGxpYi5oPiwgd2hpY2ggaXMgZ3VhcmFudGVl
ZCB0byBkZWZpbmUgc2l6ZV90IHRocm91Z2gKIC8vIDxzdGRkZWYuaD4uCi0jaWYgSEFWRShSRUdF
WF9IKQotI2luY2x1ZGUgPHJlZ2V4Lmg+ICAvLyBOT0xJTlQKLSNkZWZpbmUgR1RFU1RfVVNFU19Q
T1NJWF9SRSAxCi0jZWxzZQotI2RlZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9SRSAxCi0jZW5kaWYK
LSNpbmNsdWRlIDxzdHJpbmdzLmg+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4g
IC8vIE5PTElOVAotI2luY2x1ZGUgPHRpbWUuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHVuaXN0
ZC5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHJlZ2V4Lmg+ICAvLyBOT0xJTlQKIAorIyBkZWZp
bmUgR1RFU1RfVVNFU19QT1NJWF9SRSAxCiAKICNlbGlmIEdURVNUX09TX1dJTkRPV1MKIAotI2lm
ICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotI2luY2x1ZGUgPGRpcmVjdC5oPiAgLy8gTk9MSU5U
Ci0jaW5jbHVkZSA8aW8uaD4gIC8vIE5PTElOVAotI2VuZGlmCi0KIC8vIDxyZWdleC5oPiBpcyBu
b3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MuICBVc2Ugb3VyIG93biBzaW1wbGUgcmVnZXgKIC8vIGlt
cGxlbWVudGF0aW9uIGluc3RlYWQuCi0jZGVmaW5lIEdURVNUX1VTRVNfU0lNUExFX1JFIDEKKyMg
ZGVmaW5lIEdURVNUX1VTRVNfU0lNUExFX1JFIDEKIAogI2Vsc2UKIAogLy8gPHJlZ2V4Lmg+IG1h
eSBub3QgYmUgYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0uICBVc2Ugb3VyIG93bgogLy8gc2lt
cGxlIHJlZ2V4IGltcGxlbWVudGF0aW9uIGluc3RlYWQuCi0jZGVmaW5lIEdURVNUX1VTRVNfU0lN
UExFX1JFIDEKKyMgZGVmaW5lIEdURVNUX1VTRVNfU0lNUExFX1JFIDEKIAotI2VuZGlmICAvLyBH
VEVTVF9PU19DWUdXSU4gfHwgR1RFU1RfT1NfTElOVVggfHwgR1RFU1RfT1NfTUFDIHx8Ci0gICAg
ICAgIC8vIEdURVNUX09TX1NZTUJJQU4gfHwgR1RFU1RfT1NfU09MQVJJUyB8fCBHVEVTVF9PU19B
SVggfHwKLSAgICAgICAgLy8gR1RFU1RfT1NfRlJFRUJTRCB8fCBHVEVTVF9PU19IVVJECisjZW5k
aWYgIC8vIEdURVNUX1VTRVNfUENSRQogCiAjaWZuZGVmIEdURVNUX0hBU19FWENFUFRJT05TCiAv
LyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cyB3aGV0aGVyIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQs
IHNvIHdlIG5lZWQKIC8vIHRvIGZpZ3VyZSBpdCBvdXQuCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikg
fHwgZGVmaW5lZChfX0JPUkxBTkRDX18pCi0vLyBNU1ZDJ3MgYW5kIEMrK0J1aWxkZXIncyBpbXBs
ZW1lbnRhdGlvbnMgb2YgdGhlIFNUTCB1c2UgdGhlIF9IQVNfRVhDRVBUSU9OUworIyBpZiBkZWZp
bmVkKF9NU0NfVkVSKSAmJiBkZWZpbmVkKF9DUFBVTldJTkQpCisvLyBNU1ZDIGRlZmluZXMgX0NQ
UFVOV0lORCB0byAxIGlmZiBleGNlcHRpb25zIGFyZSBlbmFibGVkLgorIyAgZGVmaW5lIEdURVNU
X0hBU19FWENFUFRJT05TIDEKKyMgZWxpZiBkZWZpbmVkKF9fQk9STEFORENfXykKKy8vIEMrK0J1
aWxkZXIncyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU1RMIHVzZXMgdGhlIF9IQVNfRVhDRVBUSU9O
UwogLy8gbWFjcm8gdG8gZW5hYmxlIGV4Y2VwdGlvbnMsIHNvIHdlJ2xsIGRvIHRoZSBzYW1lLgog
Ly8gQXNzdW1lcyB0aGF0IGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdC4KLSNpZm5k
ZWYgX0hBU19FWENFUFRJT05TCi0jZGVmaW5lIF9IQVNfRVhDRVBUSU9OUyAxCi0jZW5kaWYgIC8v
IF9IQVNfRVhDRVBUSU9OUwotI2RlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyBfSEFTX0VYQ0VQ
VElPTlMKLSNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIF9fRVhDRVBUSU9OUworIyAgaWZuZGVm
IF9IQVNfRVhDRVBUSU9OUworIyAgIGRlZmluZSBfSEFTX0VYQ0VQVElPTlMgMQorIyAgZW5kaWYg
IC8vIF9IQVNfRVhDRVBUSU9OUworIyAgZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIF9IQVNf
RVhDRVBUSU9OUworIyBlbGlmIGRlZmluZWQoX19jbGFuZ19fKQorLy8gY2xhbmcgZGVmaW5lcyBf
X0VYQ0VQVElPTlMgaWZmIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQgYmVmb3JlIGNsYW5nIDIyMDcx
NCwKKy8vIGJ1dCBpZmYgY2xlYW51cHMgYXJlIGVuYWJsZWQgYWZ0ZXIgdGhhdC4gSW4gT2JqLUMr
KyBmaWxlcywgdGhlcmUgY2FuIGJlCisvLyBjbGVhbnVwcyBmb3IgT2JqQyBleGNlcHRpb25zIHdo
aWNoIGFsc28gbmVlZCBjbGVhbnVwcywgZXZlbiBpZiBDKysgZXhjZXB0aW9ucworLy8gYXJlIGRp
c2FibGVkLiBjbGFuZyBoYXMgX19oYXNfZmVhdHVyZShjeHhfZXhjZXB0aW9ucykgd2hpY2ggY2hl
Y2tzIGZvciBDKysKKy8vIGV4Y2VwdGlvbnMgc3RhcnRpbmcgYXQgY2xhbmcgcjIwNjM1MiwgYnV0
IHdoaWNoIGNoZWNrZWQgZm9yIGNsZWFudXBzIHByaW9yIHRvCisvLyB0aGF0LiBUbyByZWxpYWJs
eSBjaGVjayBmb3IgQysrIGV4Y2VwdGlvbiBhdmFpbGFiaWxpdHkgd2l0aCBjbGFuZywgY2hlY2sg
Zm9yCisvLyBfX0VYQ0VQVElPTlMgJiYgX19oYXNfZmVhdHVyZShjeHhfZXhjZXB0aW9ucykuCisj
ICBkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgKF9fRVhDRVBUSU9OUyAmJiBfX2hhc19mZWF0
dXJlKGN4eF9leGNlcHRpb25zKSkKKyMgZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0VYQ0VQ
VElPTlMKIC8vIGdjYyBkZWZpbmVzIF9fRVhDRVBUSU9OUyB0byAxIGlmZiBleGNlcHRpb25zIGFy
ZSBlbmFibGVkLgotI2RlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCi0jZWxpZiBkZWZpbmVk
KF9fU1VOUFJPX0NDKQorIyAgZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIDEKKyMgZWxpZiBk
ZWZpbmVkKF9fU1VOUFJPX0NDKQogLy8gU3VuIFBybyBDQyBzdXBwb3J0cyBleGNlcHRpb25zLiAg
SG93ZXZlciwgdGhlcmUgaXMgbm8gY29tcGlsZS10aW1lIHdheSBvZgogLy8gZGV0ZWN0aW5nIHdo
ZXRoZXIgdGhleSBhcmUgZW5hYmxlZCBvciBub3QuICBUaGVyZWZvcmUsIHdlIGFzc3VtZSB0aGF0
CiAvLyB0aGV5IGFyZSBlbmFibGVkIHVubGVzcyB0aGUgdXNlciB0ZWxscyB1cyBvdGhlcndpc2Uu
Ci0jZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIDEKLSNlbGlmIGRlZmluZWQoX19JQk1DUFBf
XykgJiYgX19FWENFUFRJT05TCisjICBkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMQorIyBl
bGlmIGRlZmluZWQoX19JQk1DUFBfXykgJiYgX19FWENFUFRJT05TCiAvLyB4bEMgZGVmaW5lcyBf
X0VYQ0VQVElPTlMgdG8gMSBpZmYgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZC4KLSNkZWZpbmUgR1RF
U1RfSEFTX0VYQ0VQVElPTlMgMQotI2Vsc2UKKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9O
UyAxCisjIGVsaWYgZGVmaW5lZChfX0hQX2FDQykKKy8vIEV4Y2VwdGlvbiBoYW5kbGluZyBpcyBp
biBlZmZlY3QgYnkgZGVmYXVsdCBpbiBIUCBhQ0MgY29tcGlsZXIuIEl0IGhhcyB0bworLy8gYmUg
dHVybmVkIG9mIGJ5ICtub2VoIGNvbXBpbGVyIG9wdGlvbiBpZiBkZXNpcmVkLgorIyAgZGVmaW5l
IEdURVNUX0hBU19FWENFUFRJT05TIDEKKyMgZWxzZQogLy8gRm9yIG90aGVyIGNvbXBpbGVycywg
d2UgYXNzdW1lIGV4Y2VwdGlvbnMgYXJlIGRpc2FibGVkIHRvIGJlCiAvLyBjb25zZXJ2YXRpdmUu
Ci0jZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIDAKLSNlbmRpZiAgLy8gZGVmaW5lZChfTVND
X1ZFUikgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pCisjICBkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQ
VElPTlMgMAorIyBlbmRpZiAgLy8gZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX0JPUkxB
TkRDX18pCiAjZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCiAKICNpZiAhZGVmaW5lZChH
VEVTVF9IQVNfU1REX1NUUklORykKIC8vIEV2ZW4gdGhvdWdoIHdlIGRvbid0IHVzZSB0aGlzIG1h
Y3JvIGFueSBsb25nZXIsIHdlIGtlZXAgaXQgaW4gY2FzZQogLy8gc29tZSBjbGllbnRzIHN0aWxs
IGRlcGVuZCBvbiBpdC4KLSNkZWZpbmUgR1RFU1RfSEFTX1NURF9TVFJJTkcgMQorIyBkZWZpbmUg
R1RFU1RfSEFTX1NURF9TVFJJTkcgMQogI2VsaWYgIUdURVNUX0hBU19TVERfU1RSSU5HCiAvLyBU
aGUgdXNlciB0b2xkIHVzIHRoYXQgOjpzdGQ6OnN0cmluZyBpc24ndCBhdmFpbGFibGUuCi0jZXJy
b3IgIkdvb2dsZSBUZXN0IGNhbm5vdCBiZSB1c2VkIHdoZXJlIDo6c3RkOjpzdHJpbmcgaXNuJ3Qg
YXZhaWxhYmxlLiIKKyMgZXJyb3IgIjo6c3RkOjpzdHJpbmcgaXNuJ3QgYXZhaWxhYmxlLiIKICNl
bmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfSEFTX1NURF9TVFJJTkcpCiAKICNpZm5kZWYgR1RFU1Rf
SEFTX0dMT0JBTF9TVFJJTkcKLS8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIHdoZXRoZXIgOjpz
dHJpbmcgaXMgYXZhaWxhYmxlLCBzbyB3ZSBuZWVkCi0vLyB0byBmaWd1cmUgaXQgb3V0LgotCi0j
ZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HIDAKLQorIyBkZWZpbmUgR1RFU1RfSEFTX0dM
T0JBTF9TVFJJTkcgMAogI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwogCiAjaWZu
ZGVmIEdURVNUX0hBU19TVERfV1NUUklORwogLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMgd2hl
dGhlciA6OnN0ZDo6d3N0cmluZyBpcyBhdmFpbGFibGUsIHNvIHdlIG5lZWQKIC8vIHRvIGZpZ3Vy
ZSBpdCBvdXQuCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogdXNlcyBhdXRvY29uZiB0byBkZXRl
Y3Qgd2hldGhlciA6OnN0ZDo6d3N0cmluZworLy8gRklYTUU6IHVzZXMgYXV0b2NvbmYgdG8gZGV0
ZWN0IHdoZXRoZXIgOjpzdGQ6OndzdHJpbmcKIC8vICAgaXMgYXZhaWxhYmxlLgogCi0vLyBDeWd3
aW4gMS41IGFuZCBiZWxvdyBkb2Vzbid0IHN1cHBvcnQgOjpzdGQ6OndzdHJpbmcuCi0vLyBDeWd3
aW4gMS43IG1pZ2h0IGFkZCB3c3RyaW5nIHN1cHBvcnQ7IHRoaXMgc2hvdWxkIGJlIHVwZGF0ZWQg
d2hlbiBjbGVhci4KLS8vIFNvbGFyaXMnIGxpYmMrKyBkb2Vzbid0IHN1cHBvcnQgaXQgZWl0aGVy
LgotI2RlZmluZSBHVEVTVF9IQVNfU1REX1dTVFJJTkcgKCEoR1RFU1RfT1NfQ1lHV0lOIHx8IEdU
RVNUX09TX1NPTEFSSVMpKQorLy8gQ3lnd2luIDEuNyBhbmQgYmVsb3cgZG9lc24ndCBzdXBwb3J0
IDo6c3RkOjp3c3RyaW5nLgorLy8gU29sYXJpcycgbGliYysrIGRvZXNuJ3Qgc3VwcG9ydCBpdCBl
aXRoZXIuICBBbmRyb2lkIGhhcworLy8gbm8gc3VwcG9ydCBmb3IgaXQgYXQgbGVhc3QgYXMgcmVj
ZW50IGFzIEZyb3lvICgyLjIpLgorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9XU1RSSU5HIFwKKyAg
ICAoIShHVEVTVF9PU19MSU5VWF9BTkRST0lEIHx8IEdURVNUX09TX0NZR1dJTiB8fCBHVEVTVF9P
U19TT0xBUklTKSkKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKIAogI2lmbmRl
ZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIHdo
ZXRoZXIgOjp3c3RyaW5nIGlzIGF2YWlsYWJsZSwgc28gd2UgbmVlZAogLy8gdG8gZmlndXJlIGl0
IG91dC4KLSNkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HIFwKKyMgZGVmaW5lIEdURVNU
X0hBU19HTE9CQUxfV1NUUklORyBcCiAgICAgKEdURVNUX0hBU19TVERfV1NUUklORyAmJiBHVEVT
VF9IQVNfR0xPQkFMX1NUUklORykKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5H
CiAKQEAgLTM0NCwxMzMgKzU3MCwyMTIgQEAKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIHdo
ZXRoZXIgUlRUSSBpcyBlbmFibGVkLCBzbyB3ZSBuZWVkIHRvCiAvLyBmaWd1cmUgaXQgb3V0Lgog
Ci0jaWZkZWYgX01TQ19WRVIKKyMgaWZkZWYgX01TQ19WRVIKIAotI2lmZGVmIF9DUFBSVFRJICAv
LyBNU1ZDIGRlZmluZXMgdGhpcyBtYWNybyBpZmYgUlRUSSBpcyBlbmFibGVkLgotI2RlZmluZSBH
VEVTVF9IQVNfUlRUSSAxCi0jZWxzZQotI2RlZmluZSBHVEVTVF9IQVNfUlRUSSAwCi0jZW5kaWYK
KyMgIGlmZGVmIF9DUFBSVFRJICAvLyBNU1ZDIGRlZmluZXMgdGhpcyBtYWNybyBpZmYgUlRUSSBp
cyBlbmFibGVkLgorIyAgIGRlZmluZSBHVEVTVF9IQVNfUlRUSSAxCisjICBlbHNlCisjICAgZGVm
aW5lIEdURVNUX0hBU19SVFRJIDAKKyMgIGVuZGlmCiAKIC8vIFN0YXJ0aW5nIHdpdGggdmVyc2lv
biA0LjMuMiwgZ2NjIGRlZmluZXMgX19HWFhfUlRUSSBpZmYgUlRUSSBpcyBlbmFibGVkLgotI2Vs
aWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMzAyKQotCi0jaWZk
ZWYgX19HWFhfUlRUSQotI2RlZmluZSBHVEVTVF9IQVNfUlRUSSAxCi0jZWxzZQotI2RlZmluZSBH
VEVTVF9IQVNfUlRUSSAwCi0jZW5kaWYgIC8vIF9fR1hYX1JUVEkKKyMgZWxpZiBkZWZpbmVkKF9f
R05VQ19fKSAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0gNDAzMDIpCisKKyMgIGlmZGVmIF9fR1hYX1JU
VEkKKy8vIFdoZW4gYnVpbGRpbmcgYWdhaW5zdCBTVExwb3J0IHdpdGggdGhlIEFuZHJvaWQgTkRL
IGFuZCB3aXRoCisvLyAtZnJ0dGkgLWZuby1leGNlcHRpb25zLCB0aGUgYnVpbGQgZmFpbHMgYXQg
bGluayB0aW1lIHdpdGggdW5kZWZpbmVkCisvLyByZWZlcmVuY2VzIHRvIF9fY3hhX2JhZF90eXBl
aWQuIE5vdGUgc3VyZSBpZiBTVEwgb3IgdG9vbGNoYWluIGJ1ZywKKy8vIHNvIGRpc2FibGUgUlRU
SSB3aGVuIGRldGVjdGVkLgorIyAgIGlmIEdURVNUX09TX0xJTlVYX0FORFJPSUQgJiYgZGVmaW5l
ZChfU1RMUE9SVF9NQUpPUikgJiYgXAorICAgICAgICFkZWZpbmVkKF9fRVhDRVBUSU9OUykKKyMg
ICAgZGVmaW5lIEdURVNUX0hBU19SVFRJIDAKKyMgICBlbHNlCisjICAgIGRlZmluZSBHVEVTVF9I
QVNfUlRUSSAxCisjICAgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYX0FORFJPSUQgJiYgX19TVExQ
T1JUX01BSk9SICYmICFfX0VYQ0VQVElPTlMKKyMgIGVsc2UKKyMgICBkZWZpbmUgR1RFU1RfSEFT
X1JUVEkgMAorIyAgZW5kaWYgIC8vIF9fR1hYX1JUVEkKKworLy8gQ2xhbmcgZGVmaW5lcyBfX0dY
WF9SVFRJIHN0YXJ0aW5nIHdpdGggdmVyc2lvbiAzLjAsIGJ1dCBpdHMgbWFudWFsIHJlY29tbWVu
ZHMKKy8vIHVzaW5nIGhhc19mZWF0dXJlIGluc3RlYWQuIGhhc19mZWF0dXJlKGN4eF9ydHRpKSBp
cyBzdXBwb3J0ZWQgc2luY2UgMi43LCB0aGUKKy8vIGZpcnN0IHZlcnNpb24gd2l0aCBDKysgc3Vw
cG9ydC4KKyMgZWxpZiBkZWZpbmVkKF9fY2xhbmdfXykKKworIyAgZGVmaW5lIEdURVNUX0hBU19S
VFRJIF9faGFzX2ZlYXR1cmUoY3h4X3J0dGkpCiAKIC8vIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiA5
LjAgSUJNIFZpc3VhbCBBZ2UgZGVmaW5lcyBfX1JUVElfQUxMX18gdG8gMSBpZgogLy8gYm90aCB0
aGUgdHlwZWlkIGFuZCBkeW5hbWljX2Nhc3QgZmVhdHVyZXMgYXJlIHByZXNlbnQuCi0jZWxpZiBk
ZWZpbmVkKF9fSUJNQ1BQX18pICYmIChfX0lCTUNQUF9fID49IDkwMCkKKyMgZWxpZiBkZWZpbmVk
KF9fSUJNQ1BQX18pICYmIChfX0lCTUNQUF9fID49IDkwMCkKIAotI2lmZGVmIF9fUlRUSV9BTExf
XwotI2RlZmluZSBHVEVTVF9IQVNfUlRUSSAxCi0jZWxzZQotI2RlZmluZSBHVEVTVF9IQVNfUlRU
SSAwCi0jZW5kaWYKKyMgIGlmZGVmIF9fUlRUSV9BTExfXworIyAgIGRlZmluZSBHVEVTVF9IQVNf
UlRUSSAxCisjICBlbHNlCisjICAgZGVmaW5lIEdURVNUX0hBU19SVFRJIDAKKyMgIGVuZGlmCiAK
LSNlbHNlCisjIGVsc2UKIAogLy8gRm9yIGFsbCBvdGhlciBjb21waWxlcnMsIHdlIGFzc3VtZSBS
VFRJIGlzIGVuYWJsZWQuCi0jZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKKyMgIGRlZmluZSBHVEVT
VF9IQVNfUlRUSSAxCiAKLSNlbmRpZiAgLy8gX01TQ19WRVIKKyMgZW5kaWYgIC8vIF9NU0NfVkVS
CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1JUVEkKIAogLy8gSXQncyB0aGlzIGhlYWRlcidzIHJl
c3BvbnNpYmlsaXR5IHRvICNpbmNsdWRlIDx0eXBlaW5mbz4gd2hlbiBSVFRJCiAvLyBpcyBlbmFi
bGVkLgogI2lmIEdURVNUX0hBU19SVFRJCi0jaW5jbHVkZSA8dHlwZWluZm8+CisjIGluY2x1ZGUg
PHR5cGVpbmZvPgogI2VuZGlmCiAKIC8vIERldGVybWluZXMgd2hldGhlciBHb29nbGUgVGVzdCBj
YW4gdXNlIHRoZSBwdGhyZWFkcyBsaWJyYXJ5LgogI2lmbmRlZiBHVEVTVF9IQVNfUFRIUkVBRAot
Ly8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMgZXhwbGljaXRseSwgc28gd2UgYXNzdW1lIHB0aHJl
YWRzIHN1cHBvcnQgaXMKLS8vIGF2YWlsYWJsZSBvbiBMaW51eCBhbmQgTWFjLgorLy8gVGhlIHVz
ZXIgZGlkbid0IHRlbGwgdXMgZXhwbGljaXRseSwgc28gd2UgbWFrZSByZWFzb25hYmxlIGFzc3Vt
cHRpb25zIGFib3V0CisvLyB3aGljaCBwbGF0Zm9ybXMgaGF2ZSBwdGhyZWFkcyBzdXBwb3J0Lgog
Ly8KIC8vIFRvIGRpc2FibGUgdGhyZWFkaW5nIHN1cHBvcnQgaW4gR29vZ2xlIFRlc3QsIGFkZCAt
REdURVNUX0hBU19QVEhSRUFEPTAKIC8vIHRvIHlvdXIgY29tcGlsZXIgZmxhZ3MuCi0jZGVmaW5l
IEdURVNUX0hBU19QVEhSRUFEIChHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19GUkVFQlNEIHx8
IEdURVNUX09TX0hVUkQgfHwgR1RFU1RfT1NfTUFDKQorI2RlZmluZSBHVEVTVF9IQVNfUFRIUkVB
RCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKEdURVNU
X09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19IUFVYIHx8IEdURVNUX09TX1FO
WCB8fCBcCisgICBHVEVTVF9PU19GUkVFQlNEIHx8IEdURVNUX09TX05BQ0wgfHwgR1RFU1RfT1Nf
TkVUQlNEIHx8IEdURVNUX09TX0ZVQ0hTSUEpCiAjZW5kaWYgIC8vIEdURVNUX0hBU19QVEhSRUFE
CiAKKyNpZiBHVEVTVF9IQVNfUFRIUkVBRAorLy8gZ3Rlc3QtcG9ydC5oIGd1YXJhbnRlZXMgdG8g
I2luY2x1ZGUgPHB0aHJlYWQuaD4gd2hlbiBHVEVTVF9IQVNfUFRIUkVBRCBpcworLy8gdHJ1ZS4K
KyMgaW5jbHVkZSA8cHRocmVhZC5oPiAgLy8gTk9MSU5UCisKKy8vIEZvciB0aW1lc3BlYyBhbmQg
bmFub3NsZWVwLCB1c2VkIGJlbG93LgorIyBpbmNsdWRlIDx0aW1lLmg+ICAvLyBOT0xJTlQKKyNl
bmRpZgorCisvLyBEZXRlcm1pbmVzIGlmIGhhc2hfbWFwL2hhc2hfc2V0IGFyZSBhdmFpbGFibGUu
CisvLyBPbmx5IHVzZWQgZm9yIHRlc3RpbmcgYWdhaW5zdCB0aG9zZSBjb250YWluZXJzLgorI2lm
ICFkZWZpbmVkKEdURVNUX0hBU19IQVNIX01BUF8pCisjIGlmIGRlZmluZWQoX01TQ19WRVIpICYm
IChfTVNDX1ZFUiA8IDE5MDApCisjICBkZWZpbmUgR1RFU1RfSEFTX0hBU0hfTUFQXyAxICAvLyBJ
bmRpY2F0ZXMgdGhhdCBoYXNoX21hcCBpcyBhdmFpbGFibGUuCisjICBkZWZpbmUgR1RFU1RfSEFT
X0hBU0hfU0VUXyAxICAvLyBJbmRpY2F0ZXMgdGhhdCBoYXNoX3NldCBpcyBhdmFpbGFibGUuCisj
IGVuZGlmICAvLyBfTVNDX1ZFUgorI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9IQVNfSEFTSF9N
QVBfKQorCiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgR29vZ2xlIFRlc3QgY2FuIHVzZSB0cjEvdHVw
bGUuICBZb3UgY2FuIGRlZmluZQogLy8gdGhpcyBtYWNybyB0byAwIHRvIHByZXZlbnQgR29vZ2xl
IFRlc3QgZnJvbSB1c2luZyB0dXBsZSAoYW55CiAvLyBmZWF0dXJlIGRlcGVuZGluZyBvbiB0dXBs
ZSB3aXRoIGJlIGRpc2FibGVkIGluIHRoaXMgbW9kZSkuCiAjaWZuZGVmIEdURVNUX0hBU19UUjFf
VFVQTEUKKyMgaWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRCAmJiBkZWZpbmVkKF9TVExQT1JUX01B
Sk9SKQorLy8gU1RMcG9ydCwgcHJvdmlkZWQgd2l0aCB0aGUgQW5kcm9pZCBOREssIGhhcyBuZWl0
aGVyIDx0cjEvdHVwbGU+IG9yIDx0dXBsZT4uCisjICBkZWZpbmUgR1RFU1RfSEFTX1RSMV9UVVBM
RSAwCisjIGVsaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDE5MTApCisvLyBQ
cmV2ZW50IGB3YXJuaW5nIEM0OTk2OiAnc3RkOjp0cjEnOiB3YXJuaW5nIFNUTDQwMDI6CisvLyBU
aGUgbm9uLVN0YW5kYXJkIHN0ZDo6dHIxIG5hbWVzcGFjZSBhbmQgVFIxLW9ubHkgbWFjaGluZXJ5
CisvLyBhcmUgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBSRU1PVkVELmAKKyMgIGRlZmluZSBHVEVT
VF9IQVNfVFIxX1RVUExFIDAKKyMgZWxpZiBHVEVTVF9MQU5HX0NYWDExICYmIGRlZmluZWQoX0xJ
QkNQUF9WRVJTSU9OKQorLy8gbGliYysrIGRvZXNuJ3Qgc3VwcG9ydCBUUjEuCisjICBkZWZpbmUg
R1RFU1RfSEFTX1RSMV9UVVBMRSAwCisjIGVsc2UKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVz
IG5vdCB0byBkbyBpdCwgc28gd2UgYXNzdW1lIGl0J3MgT0suCi0jZGVmaW5lIEdURVNUX0hBU19U
UjFfVFVQTEUgMQorIyAgZGVmaW5lIEdURVNUX0hBU19UUjFfVFVQTEUgMQorIyBlbmRpZgogI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfVFIxX1RVUExFCiAKIC8vIERldGVybWluZXMgd2hldGhlciBHb29n
bGUgVGVzdCdzIG93biB0cjEgdHVwbGUgaW1wbGVtZW50YXRpb24KIC8vIHNob3VsZCBiZSB1c2Vk
LgogI2lmbmRlZiBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRQorLy8gV2UgdXNlIG91ciBvd24gdHVw
bGUgaW1wbGVtZW50YXRpb24gb24gU3ltYmlhbi4KKyMgaWYgR1RFU1RfT1NfU1lNQklBTgorIyAg
ZGVmaW5lIEdURVNUX1VTRV9PV05fVFIxX1RVUExFIDEKKyMgZWxzZQogLy8gVGhlIHVzZXIgZGlk
bid0IHRlbGwgdXMsIHNvIHdlIG5lZWQgdG8gZmlndXJlIGl0IG91dC4KIAogLy8gV2UgdXNlIG91
ciBvd24gVFIxIHR1cGxlIGlmIHdlIGFyZW4ndCBzdXJlIHRoZSB1c2VyIGhhcyBhbgotLy8gaW1w
bGVtZW50YXRpb24gb2YgaXQgYWxyZWFkeS4gIEF0IHRoaXMgdGltZSwgR0NDIDQuMC4wKyBhbmQg
TVNWQwotLy8gMjAxMCBhcmUgdGhlIG9ubHkgbWFpbnN0cmVhbSBjb21waWxlcnMgdGhhdCBjb21l
IHdpdGggYSBUUjEgdHVwbGUKLS8vIGltcGxlbWVudGF0aW9uLiAgTlZJRElBJ3MgQ1VEQSBOVkND
IGNvbXBpbGVyIHByZXRlbmRzIHRvIGJlIEdDQyBieQotLy8gZGVmaW5pbmcgX19HTlVDX18gYW5k
IGZyaWVuZHMsIGJ1dCBjYW5ub3QgY29tcGlsZSBHQ0MncyB0dXBsZQotLy8gaW1wbGVtZW50YXRp
b24uICBNU1ZDIDIwMDggKDkuMCkgcHJvdmlkZXMgVFIxIHR1cGxlIGluIGEgMzIzIE1CCi0vLyBG
ZWF0dXJlIFBhY2sgZG93bmxvYWQsIHdoaWNoIHdlIGNhbm5vdCBhc3N1bWUgdGhlIHVzZXIgaGFz
LgotI2lmIChkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX0NVREFDQ19fKSAmJiAoR1RF
U1RfR0NDX1ZFUl8gPj0gNDAwMDApKSBcCi0gICAgfHwgX01TQ19WRVIgPj0gMTYwMAotI2RlZmlu
ZSBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSAwCi0jZWxzZQotI2RlZmluZSBHVEVTVF9VU0VfT1dO
X1RSMV9UVVBMRSAxCi0jZW5kaWYKLQorLy8gaW1wbGVtZW50YXRpb24gb2YgaXQgYWxyZWFkeS4g
IEF0IHRoaXMgdGltZSwgbGlic3RkYysrIDQuMC4wKyBhbmQKKy8vIE1TVkMgMjAxMCBhcmUgdGhl
IG9ubHkgbWFpbnN0cmVhbSBzdGFuZGFyZCBsaWJyYXJpZXMgdGhhdCBjb21lCisvLyB3aXRoIGEg
VFIxIHR1cGxlIGltcGxlbWVudGF0aW9uLiAgTlZJRElBJ3MgQ1VEQSBOVkNDIGNvbXBpbGVyCisv
LyBwcmV0ZW5kcyB0byBiZSBHQ0MgYnkgZGVmaW5pbmcgX19HTlVDX18gYW5kIGZyaWVuZHMsIGJ1
dCBjYW5ub3QKKy8vIGNvbXBpbGUgR0NDJ3MgdHVwbGUgaW1wbGVtZW50YXRpb24uICBNU1ZDIDIw
MDggKDkuMCkgcHJvdmlkZXMgVFIxCisvLyB0dXBsZSBpbiBhIDMyMyBNQiBGZWF0dXJlIFBhY2sg
ZG93bmxvYWQsIHdoaWNoIHdlIGNhbm5vdCBhc3N1bWUgdGhlCisvLyB1c2VyIGhhcy4gIFFOWCdz
IFFDQyBjb21waWxlciBpcyBhIG1vZGlmaWVkIEdDQyBidXQgaXQgZG9lc24ndAorLy8gc3VwcG9y
dCBUUjEgdHVwbGUuICBsaWJjKysgb25seSBwcm92aWRlcyBzdGQ6OnR1cGxlLCBpbiBDKysxMSBt
b2RlLAorLy8gYW5kIGl0IGNhbiBiZSB1c2VkIHdpdGggc29tZSBjb21waWxlcnMgdGhhdCBkZWZp
bmUgX19HTlVDX18uCisjIGlmIChkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX0NVREFD
Q19fKSAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0gNDAwMDApIFwKKyAgICAgICYmICFHVEVTVF9PU19R
TlggJiYgIWRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKSkgXAorICAgICAgfHwgKF9NU0NfVkVSID49
IDE2MDAgJiYgX01TQ19WRVIgPCAxOTAwKQorIyAgZGVmaW5lIEdURVNUX0VOVl9IQVNfVFIxX1RV
UExFXyAxCisjIGVuZGlmCisKKy8vIEMrKzExIHNwZWNpZmllcyB0aGF0IDx0dXBsZT4gcHJvdmlk
ZXMgc3RkOjp0dXBsZS4gVXNlIHRoYXQgaWYgZ3Rlc3QgaXMgdXNlZAorLy8gaW4gQysrMTEgbW9k
ZSBhbmQgbGlic3RkYysrIGlzbid0IHZlcnkgb2xkIChiaW5hcmllcyB0YXJnZXRpbmcgT1MgWCAx
MC42CisvLyBjYW4gYnVpbGQgd2l0aCBjbGFuZyBidXQgbmVlZCB0byB1c2UgZ2NjNC4yJ3MgbGli
c3RkYysrKS4KKyMgaWYgR1RFU1RfTEFOR19DWFgxMSAmJiAoIWRlZmluZWQoX19HTElCQ1hYX18p
IHx8IF9fR0xJQkNYWF9fID4gMjAxMTAzMjUpCisjICBkZWZpbmUgR1RFU1RfRU5WX0hBU19TVERf
VFVQTEVfIDEKKyMgZW5kaWYKKworIyBpZiBHVEVTVF9FTlZfSEFTX1RSMV9UVVBMRV8gfHwgR1RF
U1RfRU5WX0hBU19TVERfVFVQTEVfCisjICBkZWZpbmUgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUg
MAorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgMQorIyBlbmRpZgor
IyBlbmRpZiAgLy8gR1RFU1RfT1NfU1lNQklBTgogI2VuZGlmICAvLyBHVEVTVF9VU0VfT1dOX1RS
MV9UVVBMRQogCi0vLyBUbyBhdm9pZCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBldmVyeXdoZXJl
LCB3ZSBtYWtlIGl0Ci0vLyBndGVzdC1wb3J0LmgncyByZXNwb25zaWJpbGl0eSB0byAjaW5jbHVk
ZSB0aGUgaGVhZGVyIGltcGxlbWVudGluZwotLy8gdHIxL3R1cGxlLgorLy8gVG8gYXZvaWQgY29u
ZGl0aW9uYWwgY29tcGlsYXRpb24gd2UgbWFrZSBpdCBndGVzdC1wb3J0LmgncyByZXNwb25zaWJp
bGl0eQorLy8gdG8gI2luY2x1ZGUgdGhlIGhlYWRlciBpbXBsZW1lbnRpbmcgdHVwbGUuCisjaWYg
R1RFU1RfSEFTX1NURF9UVVBMRV8KKyMgaW5jbHVkZSA8dHVwbGU+ICAvLyBJV1lVIHByYWdtYTog
ZXhwb3J0CisjIGRlZmluZSBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfIDo6c3RkCisjZW5kaWYgIC8v
IEdURVNUX0hBU19TVERfVFVQTEVfCisKKy8vIFdlIGluY2x1ZGUgdHIxOjp0dXBsZSBldmVuIGlm
IHN0ZDo6dHVwbGUgaXMgYXZhaWxhYmxlIHRvIGRlZmluZSBwcmludGVycyBmb3IKKy8vIHRoZW0u
CiAjaWYgR1RFU1RfSEFTX1RSMV9UVVBMRQorIyBpZm5kZWYgR1RFU1RfVFVQTEVfTkFNRVNQQUNF
XworIyAgZGVmaW5lIEdURVNUX1RVUExFX05BTUVTUEFDRV8gOjpzdGQ6OnRyMQorIyBlbmRpZiAg
Ly8gR1RFU1RfVFVQTEVfTkFNRVNQQUNFXwogCi0jaWYgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUK
LSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oPgotI2VsaWYgR1RFU1RfT1Nf
U1lNQklBTgorIyBpZiBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRQorIyAgaW5jbHVkZSAiZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaCIgIC8vIElXWVUgcHJhZ21hOiBleHBvcnQgIC8vIE5PTElO
VAorIyBlbGlmIEdURVNUX09TX1NZTUJJQU4KIAogLy8gT24gU3ltYmlhbiwgQk9PU1RfSEFTX1RS
MV9UVVBMRSBjYXVzZXMgQm9vc3QncyBUUjEgdHVwbGUgbGlicmFyeSB0bwogLy8gdXNlIFNUTHBv
cnQncyB0dXBsZSBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggdW5mb3J0dW5hdGVseSBkb2Vzbid0CiAv
LyB3b3JrIGFzIHRoZSBjb3B5IG9mIFNUTHBvcnQgZGlzdHJpYnV0ZWQgd2l0aCBTeW1iaWFuIGlz
IGluY29tcGxldGUuCiAvLyBCeSBtYWtpbmcgc3VyZSBCT09TVF9IQVNfVFIxX1RVUExFIGlzIHVu
ZGVmaW5lZCwgd2UgZm9yY2UgQm9vc3QgdG8KIC8vIHVzZSBpdHMgb3duIHR1cGxlIGltcGxlbWVu
dGF0aW9uLgotI2lmZGVmIEJPT1NUX0hBU19UUjFfVFVQTEUKLSN1bmRlZiBCT09TVF9IQVNfVFIx
X1RVUExFCi0jZW5kaWYgIC8vIEJPT1NUX0hBU19UUjFfVFVQTEUKKyMgIGlmZGVmIEJPT1NUX0hB
U19UUjFfVFVQTEUKKyMgICB1bmRlZiBCT09TVF9IQVNfVFIxX1RVUExFCisjICBlbmRpZiAgLy8g
Qk9PU1RfSEFTX1RSMV9UVVBMRQogCiAvLyBUaGlzIHByZXZlbnRzIDxib29zdC90cjEvZGV0YWls
L2NvbmZpZy5ocHA+LCB3aGljaCBkZWZpbmVzCiAvLyBCT09TVF9IQVNfVFIxX1RVUExFLCBmcm9t
IGJlaW5nICNpbmNsdWRlZCBieSBCb29zdCdzIDx0dXBsZT4uCi0jZGVmaW5lIEJPT1NUX1RSMV9E
RVRBSUxfQ09ORklHX0hQUF9JTkNMVURFRAotI2luY2x1ZGUgPHR1cGxlPgorIyAgZGVmaW5lIEJP
T1NUX1RSMV9ERVRBSUxfQ09ORklHX0hQUF9JTkNMVURFRAorIyAgaW5jbHVkZSA8dHVwbGU+ICAv
LyBJV1lVIHByYWdtYTogZXhwb3J0ICAvLyBOT0xJTlQKIAotI2VsaWYgZGVmaW5lZChfX0dOVUNf
XykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMDAwKQorIyBlbGlmIGRlZmluZWQoX19HTlVDX18p
ICYmIChHVEVTVF9HQ0NfVkVSXyA+PSA0MDAwMCkKIC8vIEdDQyA0LjArIGltcGxlbWVudHMgdHIx
L3R1cGxlIGluIHRoZSA8dHIxL3R1cGxlPiBoZWFkZXIuICBUaGlzIGRvZXMKIC8vIG5vdCBjb25m
b3JtIHRvIHRoZSBUUjEgc3BlYywgd2hpY2ggcmVxdWlyZXMgdGhlIGhlYWRlciB0byBiZSA8dHVw
bGU+LgogCi0jaWYgIUdURVNUX0hBU19SVFRJICYmIEdURVNUX0dDQ19WRVJfIDwgNDAzMDIKKyMg
IGlmICFHVEVTVF9IQVNfUlRUSSAmJiBHVEVTVF9HQ0NfVkVSXyA8IDQwMzAyCiAvLyBVbnRpbCB2
ZXJzaW9uIDQuMy4yLCBnY2MgaGFzIGEgYnVnIHRoYXQgY2F1c2VzIDx0cjEvZnVuY3Rpb25hbD4s
CiAvLyB3aGljaCBpcyAjaW5jbHVkZWQgYnkgPHRyMS90dXBsZT4sIHRvIG5vdCBjb21waWxlIHdo
ZW4gUlRUSSBpcwogLy8gZGlzYWJsZWQuICBfVFIxX0ZVTkNUSU9OQUwgaXMgdGhlIGhlYWRlciBn
dWFyZCBmb3IKLS8vIDx0cjEvZnVuY3Rpb25hbD4uICBIZW5jZSB0aGUgZm9sbG93aW5nICNkZWZp
bmUgaXMgYSBoYWNrIHRvIHByZXZlbnQKKy8vIDx0cjEvZnVuY3Rpb25hbD4uICBIZW5jZSB0aGUg
Zm9sbG93aW5nICNkZWZpbmUgaXMgdXNlZCB0byBwcmV2ZW50CiAvLyA8dHIxL2Z1bmN0aW9uYWw+
IGZyb20gYmVpbmcgaW5jbHVkZWQuCi0jZGVmaW5lIF9UUjFfRlVOQ1RJT05BTCAxCi0jaW5jbHVk
ZSA8dHIxL3R1cGxlPgotI3VuZGVmIF9UUjFfRlVOQ1RJT05BTCAgLy8gQWxsb3dzIHRoZSB1c2Vy
IHRvICNpbmNsdWRlCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyA8dHIxL2Z1bmN0aW9uYWw+
IGlmIGhlIGNob29zZXMgdG8uCi0jZWxzZQotI2luY2x1ZGUgPHRyMS90dXBsZT4gIC8vIE5PTElO
VAotI2VuZGlmICAvLyAhR1RFU1RfSEFTX1JUVEkgJiYgR1RFU1RfR0NDX1ZFUl8gPCA0MDMwMgot
Ci0jZWxzZQotLy8gSWYgdGhlIGNvbXBpbGVyIGlzIG5vdCBHQ0MgNC4wKywgd2UgYXNzdW1lIHRo
ZSB1c2VyIGlzIHVzaW5nIGEKLS8vIHNwZWMtY29uZm9ybWluZyBUUjEgaW1wbGVtZW50YXRpb24u
Ci0jaW5jbHVkZSA8dHVwbGU+ICAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gR1RFU1RfVVNFX09XTl9U
UjFfVFVQTEUKKyMgICBkZWZpbmUgX1RSMV9GVU5DVElPTkFMIDEKKyMgICBpbmNsdWRlIDx0cjEv
dHVwbGU+CisjICAgdW5kZWYgX1RSMV9GVU5DVElPTkFMICAvLyBBbGxvd3MgdGhlIHVzZXIgdG8g
I2luY2x1ZGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIDx0cjEvZnVuY3Rpb25hbD4gaWYg
dGhleSBjaG9vc2UgdG8uCisjICBlbHNlCisjICAgaW5jbHVkZSA8dHIxL3R1cGxlPiAgLy8gTk9M
SU5UCisjICBlbmRpZiAgLy8gIUdURVNUX0hBU19SVFRJICYmIEdURVNUX0dDQ19WRVJfIDwgNDAz
MDIKKworLy8gVlMgMjAxMCBub3cgaGFzIHRyMSBzdXBwb3J0LgorIyBlbGlmIF9NU0NfVkVSID49
IDE2MDAKKyMgIGluY2x1ZGUgPHR1cGxlPiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydCAgLy8gTk9M
SU5UCisKKyMgZWxzZSAgLy8gR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUKKyMgIGluY2x1ZGUgPHRy
MS90dXBsZT4gIC8vIElXWVUgcHJhZ21hOiBleHBvcnQgIC8vIE5PTElOVAorIyBlbmRpZiAgLy8g
R1RFU1RfVVNFX09XTl9UUjFfVFVQTEUKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfVFIxX1RVUExF
CiAKQEAgLTQ4MSw1OSArNzg2LDgwIEBACiAjaWZuZGVmIEdURVNUX0hBU19DTE9ORQogLy8gVGhl
IHVzZXIgZGlkbid0IHRlbGwgdXMsIHNvIHdlIG5lZWQgdG8gZmlndXJlIGl0IG91dC4KIAotI2lm
IEdURVNUX09TX0xJTlVYICYmICFkZWZpbmVkKF9faWE2NF9fKQotI2RlZmluZSBHVEVTVF9IQVNf
Q0xPTkUgMQotI2Vsc2UKLSNkZWZpbmUgR1RFU1RfSEFTX0NMT05FIDAKLSNlbmRpZiAgLy8gR1RF
U1RfT1NfTElOVVggJiYgIWRlZmluZWQoX19pYTY0X18pCisjIGlmIEdURVNUX09TX0xJTlVYICYm
ICFkZWZpbmVkKF9faWE2NF9fKQorIyAgaWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRAorLy8gT24g
QW5kcm9pZCwgY2xvbmUoKSBiZWNhbWUgYXZhaWxhYmxlIGF0IGRpZmZlcmVudCBBUEkgbGV2ZWxz
IGZvciBlYWNoIDMyLWJpdAorLy8gYXJjaGl0ZWN0dXJlLgorIyAgICBpZiBkZWZpbmVkKF9fTFA2
NF9fKSB8fCBcCisgICAgICAgIChkZWZpbmVkKF9fYXJtX18pICYmIF9fQU5EUk9JRF9BUElfXyA+
PSA5KSB8fCBcCisgICAgICAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfX0FORFJPSURfQVBJX18g
Pj0gMTIpIHx8IFwKKyAgICAgICAgKGRlZmluZWQoX19pMzg2X18pICYmIF9fQU5EUk9JRF9BUElf
XyA+PSAxNykKKyMgICAgIGRlZmluZSBHVEVTVF9IQVNfQ0xPTkUgMQorIyAgICBlbHNlCisjICAg
ICBkZWZpbmUgR1RFU1RfSEFTX0NMT05FIDAKKyMgICAgZW5kaWYKKyMgIGVsc2UKKyMgICBkZWZp
bmUgR1RFU1RfSEFTX0NMT05FIDEKKyMgIGVuZGlmCisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9I
QVNfQ0xPTkUgMAorIyBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVggJiYgIWRlZmluZWQoX19pYTY0
X18pCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0NMT05FCiAKIC8vIERldGVybWluZXMgd2hldGhl
ciB0byBzdXBwb3J0IHN0cmVhbSByZWRpcmVjdGlvbi4gVGhpcyBpcyB1c2VkIHRvIHRlc3QKIC8v
IG91dHB1dCBjb3JyZWN0bmVzcyBhbmQgdG8gaW1wbGVtZW50IGRlYXRoIHRlc3RzLgotI2lmICFH
VEVTVF9PU19XSU5ET1dTX01PQklMRSAmJiAhR1RFU1RfT1NfU1lNQklBTgotI2RlZmluZSBHVEVT
VF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXyAxCi0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dT
X01PQklMRSAmJiAhR1RFU1RfT1NfU1lNQklBTgorI2lmbmRlZiBHVEVTVF9IQVNfU1RSRUFNX1JF
RElSRUNUSU9OCisvLyBCeSBkZWZhdWx0LCB3ZSBhc3N1bWUgdGhhdCBzdHJlYW0gcmVkaXJlY3Rp
b24gaXMgc3VwcG9ydGVkIG9uIGFsbAorLy8gcGxhdGZvcm1zIGV4Y2VwdCBrbm93biBtb2JpbGUg
b25lcy4KKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgfHwgR1RFU1RfT1NfU1lNQklBTiB8
fCBcCisgICAgR1RFU1RfT1NfV0lORE9XU19QSE9ORSB8fCBHVEVTVF9PU19XSU5ET1dTX1JUCisj
ICBkZWZpbmUgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTiAwCisjIGVsc2UKKyMgIGRlZmlu
ZSBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OIDEKKyMgZW5kaWYgIC8vICFHVEVTVF9PU19X
SU5ET1dTX01PQklMRSAmJiAhR1RFU1RfT1NfU1lNQklBTgorI2VuZGlmICAvLyBHVEVTVF9IQVNf
U1RSRUFNX1JFRElSRUNUSU9OCiAKIC8vIERldGVybWluZXMgd2hldGhlciB0byBzdXBwb3J0IGRl
YXRoIHRlc3RzLgogLy8gR29vZ2xlIFRlc3QgZG9lcyBub3Qgc3VwcG9ydCBkZWF0aCB0ZXN0cyBm
b3IgVkMgNy4xIGFuZCBlYXJsaWVyIGFzCiAvLyBhYm9ydCgpIGluIGEgVkMgNy4xIGFwcGxpY2F0
aW9uIGNvbXBpbGVkIGFzIEdVSSBpbiBkZWJ1ZyBjb25maWcKIC8vIHBvcHMgdXAgYSBkaWFsb2cg
d2luZG93IHRoYXQgY2Fubm90IGJlIHN1cHByZXNzZWQgcHJvZ3JhbW1hdGljYWxseS4KLSNpZiAo
R1RFU1RfT1NfTElOVVggfHwgR1RFU1RfT1NfRlJFRUJTRCB8fCBHVEVTVF9PU19IVVJEIHx8IFwK
LSAgICAgR1RFU1RfT1NfTUFDIHx8IEdURVNUX09TX0NZR1dJTiB8fCBHVEVTVF9PU19TT0xBUklT
IHx8IFwKLSAgICAgKEdURVNUX09TX1dJTkRPV1NfREVTS1RPUCAmJiBfTVNDX1ZFUiA+PSAxNDAw
KSB8fCBcCi0gICAgIEdURVNUX09TX1dJTkRPV1NfTUlOR1cgfHwgR1RFU1RfT1NfQUlYKQotI2Rl
ZmluZSBHVEVTVF9IQVNfREVBVEhfVEVTVCAxCi0jaW5jbHVkZSA8dmVjdG9yPiAgLy8gTk9MSU5U
CisjaWYgKEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX0NZR1dJTiB8fCBHVEVTVF9PU19TT0xB
UklTIHx8ICAgXAorICAgICAoR1RFU1RfT1NfTUFDICYmICFHVEVTVF9PU19JT1MpIHx8ICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKEdURVNUX09TX1dJTkRPV1NfREVTS1RPUCAmJiBf
TVNDX1ZFUiA+PSAxNDAwKSB8fCAgICAgICAgICBcCisgICAgIEdURVNUX09TX1dJTkRPV1NfTUlO
R1cgfHwgR1RFU1RfT1NfQUlYIHx8IEdURVNUX09TX0hQVVggfHwgXAorICAgICBHVEVTVF9PU19P
UEVOQlNEIHx8IEdURVNUX09TX1FOWCB8fCBHVEVTVF9PU19GUkVFQlNEIHx8IFwKKyAgICAgR1RF
U1RfT1NfTkVUQlNEIHx8IEdURVNUX09TX0ZVQ0hTSUEpCisjIGRlZmluZSBHVEVTVF9IQVNfREVB
VEhfVEVTVCAxCiAjZW5kaWYKIAotLy8gV2UgZG9uJ3Qgc3VwcG9ydCBNU1ZDIDcuMSB3aXRoIGV4
Y2VwdGlvbnMgZGlzYWJsZWQgbm93LiAgVGhlcmVmb3JlCi0vLyBhbGwgdGhlIGNvbXBpbGVycyB3
ZSBjYXJlIGFib3V0IGFyZSBhZGVxdWF0ZSBmb3Igc3VwcG9ydGluZwotLy8gdmFsdWUtcGFyYW1l
dGVyaXplZCB0ZXN0cy4KLSNkZWZpbmUgR1RFU1RfSEFTX1BBUkFNX1RFU1QgMQotCiAvLyBEZXRl
cm1pbmVzIHdoZXRoZXIgdG8gc3VwcG9ydCB0eXBlLWRyaXZlbiB0ZXN0cy4KIAogLy8gVHlwZWQg
dGVzdHMgbmVlZCA8dHlwZWluZm8+IGFuZCB2YXJpYWRpYyBtYWNyb3MsIHdoaWNoIEdDQywgVkMr
KyA4LjAsCi0vLyBTdW4gUHJvIENDLCBhbmQgSUJNIFZpc3VhbCBBZ2Ugc3VwcG9ydC4KKy8vIFN1
biBQcm8gQ0MsIElCTSBWaXN1YWwgQWdlLCBhbmQgSFAgYUNDIHN1cHBvcnQuCiAjaWYgZGVmaW5l
ZChfX0dOVUNfXykgfHwgKF9NU0NfVkVSID49IDE0MDApIHx8IGRlZmluZWQoX19TVU5QUk9fQ0Mp
IHx8IFwKLSAgICBkZWZpbmVkKF9fSUJNQ1BQX18pCi0jZGVmaW5lIEdURVNUX0hBU19UWVBFRF9U
RVNUIDEKLSNkZWZpbmUgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUCAxCisgICAgZGVmaW5lZChfX0lC
TUNQUF9fKSB8fCBkZWZpbmVkKF9fSFBfYUNDKQorIyBkZWZpbmUgR1RFU1RfSEFTX1RZUEVEX1RF
U1QgMQorIyBkZWZpbmUgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUCAxCiAjZW5kaWYKIAogLy8gRGV0
ZXJtaW5lcyB3aGV0aGVyIHRvIHN1cHBvcnQgQ29tYmluZSgpLiBUaGlzIG9ubHkgbWFrZXMgc2Vu
c2Ugd2hlbgogLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZW5hYmxlZC4gIFRoZSBp
bXBsZW1lbnRhdGlvbiBkb2Vzbid0CiAvLyB3b3JrIG9uIFN1biBTdHVkaW8gc2luY2UgaXQgZG9l
c24ndCB1bmRlcnN0YW5kIHRlbXBsYXRlZCBjb252ZXJzaW9uCiAvLyBvcGVyYXRvcnMuCi0jaWYg
R1RFU1RfSEFTX1BBUkFNX1RFU1QgJiYgR1RFU1RfSEFTX1RSMV9UVVBMRSAmJiAhZGVmaW5lZChf
X1NVTlBST19DQykKLSNkZWZpbmUgR1RFU1RfSEFTX0NPTUJJTkUgMQorI2lmIChHVEVTVF9IQVNf
VFIxX1RVUExFIHx8IEdURVNUX0hBU19TVERfVFVQTEVfKSAmJiAhZGVmaW5lZChfX1NVTlBST19D
QykKKyMgZGVmaW5lIEdURVNUX0hBU19DT01CSU5FIDEKICNlbmRpZgogCiAvLyBEZXRlcm1pbmVz
IHdoZXRoZXIgdGhlIHN5c3RlbSBjb21waWxlciB1c2VzIFVURi0xNiBmb3IgZW5jb2Rpbmcgd2lk
ZSBzdHJpbmdzLgogI2RlZmluZSBHVEVTVF9XSURFX1NUUklOR19VU0VTX1VURjE2XyBcCiAgICAg
KEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfQ1lHV0lOIHx8IEdURVNUX09TX1NZTUJJQU4g
fHwgR1RFU1RfT1NfQUlYKQogCisvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGVzdCByZXN1bHRzIGNh
biBiZSBzdHJlYW1lZCB0byBhIHNvY2tldC4KKyNpZiBHVEVTVF9PU19MSU5VWAorIyBkZWZpbmUg
R1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXyAxCisjZW5kaWYKKwogLy8gRGVmaW5lcyBzb21lIHV0
aWxpdHkgbWFjcm9zLgogCiAvLyBUaGUgR05VIGNvbXBpbGVyIGVtaXRzIGEgd2FybmluZyBpZiBu
ZXN0ZWQgImlmIiBzdGF0ZW1lbnRzIGFyZSBmb2xsb3dlZCBieQpAQCAtNTQ1LDkgKzg3MSw5IEBA
CiAvLwogLy8gVGhlICJzd2l0Y2ggKDApIGNhc2UgMDoiIGlkaW9tIGlzIHVzZWQgdG8gc3VwcHJl
c3MgdGhpcy4KICNpZmRlZiBfX0lOVEVMX0NPTVBJTEVSCi0jZGVmaW5lIEdURVNUX0FNQklHVU9V
U19FTFNFX0JMT0NLRVJfCisjIGRlZmluZSBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXwog
I2Vsc2UKLSNkZWZpbmUgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gc3dpdGNoICgwKSBj
YXNlIDA6ICAvLyBOT0xJTlQKKyMgZGVmaW5lIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJf
IHN3aXRjaCAoMCkgY2FzZSAwOiBkZWZhdWx0OiAgLy8gTk9MSU5UCiAjZW5kaWYKIAogLy8gVXNl
IHRoaXMgYW5ub3RhdGlvbiBhdCB0aGUgZW5kIG9mIGEgc3RydWN0L2NsYXNzIGRlZmluaXRpb24g
dG8KQEAgLTU2MiwyMCArODg4LDQ5IEBACiAvLyBBbHNvIHVzZSBpdCBhZnRlciBhIHZhcmlhYmxl
IG9yIHBhcmFtZXRlciBkZWNsYXJhdGlvbiB0byB0ZWxsIHRoZQogLy8gY29tcGlsZXIgdGhlIHZh
cmlhYmxlL3BhcmFtZXRlciBkb2VzIG5vdCBoYXZlIHRvIGJlIHVzZWQuCiAjaWYgZGVmaW5lZChf
X0dOVUNfXykgJiYgIWRlZmluZWQoQ09NUElMRVJfSUNDKQotI2RlZmluZSBHVEVTVF9BVFRSSUJV
VEVfVU5VU0VEXyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKKyMgZGVmaW5lIEdURVNUX0FUVFJJ
QlVURV9VTlVTRURfIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQorI2VsaWYgZGVmaW5lZChfX2Ns
YW5nX18pCisjIGlmIF9faGFzX2F0dHJpYnV0ZSh1bnVzZWQpCisjICBkZWZpbmUgR1RFU1RfQVRU
UklCVVRFX1VOVVNFRF8gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCisjIGVuZGlmCisjZW5kaWYK
KyNpZm5kZWYgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8KKyMgZGVmaW5lIEdURVNUX0FUVFJJQlVU
RV9VTlVTRURfCisjZW5kaWYKKworI2lmIEdURVNUX0xBTkdfQ1hYMTEKKyMgZGVmaW5lIEdURVNU
X0NYWDExX0VRVUFMU19ERUxFVEVfID0gZGVsZXRlCisjZWxzZSAgLy8gR1RFU1RfTEFOR19DWFgx
MQorIyBkZWZpbmUgR1RFU1RfQ1hYMTFfRVFVQUxTX0RFTEVURV8KKyNlbmRpZiAgLy8gR1RFU1Rf
TEFOR19DWFgxMQorCisvLyBVc2UgdGhpcyBhbm5vdGF0aW9uIGJlZm9yZSBhIGZ1bmN0aW9uIHRo
YXQgdGFrZXMgYSBwcmludGYgZm9ybWF0IHN0cmluZy4KKyNpZiAoZGVmaW5lZChfX0dOVUNfXykg
fHwgZGVmaW5lZChfX2NsYW5nX18pKSAmJiAhZGVmaW5lZChDT01QSUxFUl9JQ0MpCisjIGlmIGRl
ZmluZWQoX19NSU5HV19QUklOVEZfRk9STUFUKQorLy8gTWluR1cgaGFzIHR3byBkaWZmZXJlbnQg
cHJpbnRmIGltcGxlbWVudGF0aW9ucy4gRW5zdXJlIHRoZSBmb3JtYXQgbWFjcm8KKy8vIG1hdGNo
ZXMgdGhlIHNlbGVjdGVkIGltcGxlbWVudGF0aW9uLiBTZWUKKy8vIGh0dHBzOi8vc291cmNlZm9y
Z2UubmV0L3AvbWluZ3ctdzY0L3dpa2kyL2dudSUyMHByaW50Zi8uCisjICBkZWZpbmUgR1RFU1Rf
QVRUUklCVVRFX1BSSU5URl8oc3RyaW5nX2luZGV4LCBmaXJzdF90b19jaGVjaykgXAorICAgICAg
IF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18oX19NSU5HV19QUklOVEZfRk9STUFULCBzdHJpbmdf
aW5kZXgsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X3RvX2NoZWNr
KSkpCisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfUFJJTlRGXyhzdHJpbmdfaW5k
ZXgsIGZpcnN0X3RvX2NoZWNrKSBcCisgICAgICAgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhf
X3ByaW50Zl9fLCBzdHJpbmdfaW5kZXgsIGZpcnN0X3RvX2NoZWNrKSkpCisjIGVuZGlmCiAjZWxz
ZQotI2RlZmluZSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXworIyBkZWZpbmUgR1RFU1RfQVRUUklC
VVRFX1BSSU5URl8oc3RyaW5nX2luZGV4LCBmaXJzdF90b19jaGVjaykKICNlbmRpZgogCisKIC8v
IEEgbWFjcm8gdG8gZGlzYWxsb3cgb3BlcmF0b3I9CiAvLyBUaGlzIHNob3VsZCBiZSB1c2VkIGlu
IHRoZSBwcml2YXRlOiBkZWNsYXJhdGlvbnMgZm9yIGEgY2xhc3MuCi0jZGVmaW5lIEdURVNUX0RJ
U0FMTE9XX0FTU0lHTl8odHlwZSlcCi0gIHZvaWQgb3BlcmF0b3I9KHR5cGUgY29uc3QgJikKKyNk
ZWZpbmUgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyh0eXBlKSBcCisgIHZvaWQgb3BlcmF0b3I9KHR5
cGUgY29uc3QgJikgR1RFU1RfQ1hYMTFfRVFVQUxTX0RFTEVURV8KIAogLy8gQSBtYWNybyB0byBk
aXNhbGxvdyBjb3B5IGNvbnN0cnVjdG9yIGFuZCBvcGVyYXRvcj0KIC8vIFRoaXMgc2hvdWxkIGJl
IHVzZWQgaW4gdGhlIHByaXZhdGU6IGRlY2xhcmF0aW9ucyBmb3IgYSBjbGFzcy4KLSNkZWZpbmUg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyh0eXBlKVwKLSAgdHlwZSh0eXBlIGNvbnN0
ICYpO1wKKyNkZWZpbmUgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyh0eXBlKSBcCisg
IHR5cGUodHlwZSBjb25zdCAmKSBHVEVTVF9DWFgxMV9FUVVBTFNfREVMRVRFXzsgXAogICBHVEVT
VF9ESVNBTExPV19BU1NJR05fKHR5cGUpCiAKIC8vIFRlbGwgdGhlIGNvbXBpbGVyIHRvIHdhcm4g
YWJvdXQgdW51c2VkIHJldHVybiB2YWx1ZXMgZm9yIGZ1bmN0aW9ucyBkZWNsYXJlZApAQCAtNTg0
LDcyICs5MzksMjUwIEBACiAvLwogLy8gICBTcHJvY2tldCogQWxsb2NhdGVTcHJvY2tldCgpIEdU
RVNUX01VU1RfVVNFX1JFU1VMVF87CiAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKEdURVNUX0dD
Q19WRVJfID49IDMwNDAwKSAmJiAhZGVmaW5lZChDT01QSUxFUl9JQ0MpCi0jZGVmaW5lIEdURVNU
X01VU1RfVVNFX1JFU1VMVF8gX19hdHRyaWJ1dGVfXyAoKHdhcm5fdW51c2VkX3Jlc3VsdCkpCisj
IGRlZmluZSBHVEVTVF9NVVNUX1VTRV9SRVNVTFRfIF9fYXR0cmlidXRlX18gKCh3YXJuX3VudXNl
ZF9yZXN1bHQpKQogI2Vsc2UKLSNkZWZpbmUgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXworIyBkZWZp
bmUgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXwogI2VuZGlmICAvLyBfX0dOVUNfXyAmJiAoR1RFU1Rf
R0NDX1ZFUl8gPj0gMzA0MDApICYmICFDT01QSUxFUl9JQ0MKIAorLy8gTVMgQysrIGNvbXBpbGVy
IGVtaXRzIHdhcm5pbmcgd2hlbiBhIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29tcGlsZSB0
aW1lCisvLyBjb25zdGFudC4gSW4gc29tZSBjb250ZXh0cyB0aGlzIHdhcm5pbmcgaXMgZmFsc2Ug
cG9zaXRpdmUgYW5kIG5lZWRzIHRvIGJlCisvLyBzdXBwcmVzc2VkLiBVc2UgdGhlIGZvbGxvd2lu
ZyB0d28gbWFjcm9zIGluIHN1Y2ggY2FzZXM6CisvLworLy8gR1RFU1RfSU5URU5USU9OQUxfQ09O
U1RfQ09ORF9QVVNIXygpCisvLyB3aGlsZSAodHJ1ZSkgeworLy8gR1RFU1RfSU5URU5USU9OQUxf
Q09OU1RfQ09ORF9QT1BfKCkKKy8vIH0KKyMgZGVmaW5lIEdURVNUX0lOVEVOVElPTkFMX0NPTlNU
X0NPTkRfUFVTSF8oKSBcCisgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDEy
NykKKyMgZGVmaW5lIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUE9QXygpIFwKKyAgICBH
VEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKwogLy8gRGV0ZXJtaW5lIHdoZXRoZXIg
dGhlIGNvbXBpbGVyIHN1cHBvcnRzIE1pY3Jvc29mdCdzIFN0cnVjdHVyZWQgRXhjZXB0aW9uCiAv
LyBIYW5kbGluZy4gIFRoaXMgaXMgc3VwcG9ydGVkIGJ5IHNldmVyYWwgV2luZG93cyBjb21waWxl
cnMgYnV0IGdlbmVyYWxseQogLy8gZG9lcyBub3QgZXhpc3Qgb24gYW55IG90aGVyIHN5c3RlbS4K
ICNpZm5kZWYgR1RFU1RfSEFTX1NFSAogLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMsIHNvIHdl
IG5lZWQgdG8gZmlndXJlIGl0IG91dC4KIAotI2lmIGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmlu
ZWQoX19CT1JMQU5EQ19fKQorIyBpZiBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fQk9S
TEFORENfXykKIC8vIFRoZXNlIHR3byBjb21waWxlcnMgYXJlIGtub3duIHRvIHN1cHBvcnQgU0VI
LgotI2RlZmluZSBHVEVTVF9IQVNfU0VIIDEKLSNlbHNlCisjICBkZWZpbmUgR1RFU1RfSEFTX1NF
SCAxCisjIGVsc2UKIC8vIEFzc3VtZSBubyBTRUguCi0jZGVmaW5lIEdURVNUX0hBU19TRUggMAot
I2VuZGlmCisjICBkZWZpbmUgR1RFU1RfSEFTX1NFSCAwCisjIGVuZGlmCiAKLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1NFSAorI2RlZmluZSBHVEVTVF9JU19USFJFQURTQUZFIFwKKyAgICAoR1RFU1Rf
SEFTX01VVEVYX0FORF9USFJFQURfTE9DQUxfIFwKKyAgICAgfHwgKEdURVNUX09TX1dJTkRPV1Mg
JiYgIUdURVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQpIFwKKyAg
ICAgfHwgR1RFU1RfSEFTX1BUSFJFQUQpCiAKLSNpZmRlZiBfTVNDX1ZFUgorI2VuZGlmICAvLyBH
VEVTVF9IQVNfU0VICiAKLSNpZiBHVEVTVF9MSU5LRURfQVNfU0hBUkVEX0xJQlJBUlkKLSNkZWZp
bmUgR1RFU1RfQVBJXyBfX2RlY2xzcGVjKGRsbGltcG9ydCkKLSNlbGlmIEdURVNUX0NSRUFURV9T
SEFSRURfTElCUkFSWQotI2RlZmluZSBHVEVTVF9BUElfIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQot
I2VuZGlmCisvLyBHVEVTVF9BUElfIHF1YWxpZmllcyBhbGwgc3ltYm9scyB0aGF0IG11c3QgYmUg
ZXhwb3J0ZWQuIFRoZSBkZWZpbml0aW9ucyBiZWxvdworLy8gYXJlIGd1YXJkZWQgYnkgI2lmbmRl
ZiB0byBnaXZlIGVtYmVkZGVycyBhIGNoYW5jZSB0byBkZWZpbmUgR1RFU1RfQVBJXyBpbgorLy8g
Z3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXBvcnQuaAorI2lmbmRlZiBHVEVTVF9BUElfCiAK
KyNpZmRlZiBfTVNDX1ZFUgorIyBpZiBHVEVTVF9MSU5LRURfQVNfU0hBUkVEX0xJQlJBUlkKKyMg
IGRlZmluZSBHVEVTVF9BUElfIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorIyBlbGlmIEdURVNUX0NS
RUFURV9TSEFSRURfTElCUkFSWQorIyAgZGVmaW5lIEdURVNUX0FQSV8gX19kZWNsc3BlYyhkbGxl
eHBvcnQpCisjIGVuZGlmCisjZWxpZiBfX0dOVUNfXyA+PSA0IHx8IGRlZmluZWQoX19jbGFuZ19f
KQorIyBkZWZpbmUgR1RFU1RfQVBJXyBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVs
dCIpKSkKICNlbmRpZiAgLy8gX01TQ19WRVIKIAorI2VuZGlmICAvLyBHVEVTVF9BUElfCisKICNp
Zm5kZWYgR1RFU1RfQVBJXwotI2RlZmluZSBHVEVTVF9BUElfCisjIGRlZmluZSBHVEVTVF9BUElf
CisjZW5kaWYgIC8vIEdURVNUX0FQSV8KKworI2lmbmRlZiBHVEVTVF9ERUZBVUxUX0RFQVRIX1RF
U1RfU1RZTEUKKyMgZGVmaW5lIEdURVNUX0RFRkFVTFRfREVBVEhfVEVTVF9TVFlMRSAgImZhc3Qi
CisjZW5kaWYgIC8vIEdURVNUX0RFRkFVTFRfREVBVEhfVEVTVF9TVFlMRQorCisjaWZkZWYgX19H
TlVDX18KKy8vIEFzayB0aGUgY29tcGlsZXIgdG8gbmV2ZXIgaW5saW5lIGEgZ2l2ZW4gZnVuY3Rp
b24uCisjIGRlZmluZSBHVEVTVF9OT19JTkxJTkVfIF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkK
KyNlbHNlCisjIGRlZmluZSBHVEVTVF9OT19JTkxJTkVfCiAjZW5kaWYKIAorLy8gX0xJQkNQUF9W
RVJTSU9OIGlzIGRlZmluZWQgYnkgdGhlIGxpYmMrKyBsaWJyYXJ5IGZyb20gdGhlIExMVk0gcHJv
amVjdC4KKyNpZiAhZGVmaW5lZChHVEVTVF9IQVNfQ1hYQUJJX0hfKQorIyBpZiBkZWZpbmVkKF9f
R0xJQkNYWF9fKSB8fCAoZGVmaW5lZChfTElCQ1BQX1ZFUlNJT04pICYmICFkZWZpbmVkKF9NU0Nf
VkVSKSkKKyMgIGRlZmluZSBHVEVTVF9IQVNfQ1hYQUJJX0hfIDEKKyMgZWxzZQorIyAgZGVmaW5l
IEdURVNUX0hBU19DWFhBQklfSF8gMAorIyBlbmRpZgorI2VuZGlmCisKKy8vIEEgZnVuY3Rpb24g
bGV2ZWwgYXR0cmlidXRlIHRvIGRpc2FibGUgY2hlY2tpbmcgZm9yIHVzZSBvZiB1bmluaXRpYWxp
emVkCisvLyBtZW1vcnkgd2hlbiBidWlsdCB3aXRoIE1lbW9yeVNhbml0aXplci4KKyNpZiBkZWZp
bmVkKF9fY2xhbmdfXykKKyMgaWYgX19oYXNfZmVhdHVyZShtZW1vcnlfc2FuaXRpemVyKQorIyAg
ZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9NRU1PUllfIFwKKyAgICAgICBfX2F0
dHJpYnV0ZV9fKChub19zYW5pdGl6ZV9tZW1vcnkpKQorIyBlbHNlCisjICBkZWZpbmUgR1RFU1Rf
QVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8KKyMgZW5kaWYgIC8vIF9faGFzX2ZlYXR1cmUo
bWVtb3J5X3Nhbml0aXplcikKKyNlbHNlCisjIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FO
SVRJWkVfTUVNT1JZXworI2VuZGlmICAvLyBfX2NsYW5nX18KKworLy8gQSBmdW5jdGlvbiBsZXZl
bCBhdHRyaWJ1dGUgdG8gZGlzYWJsZSBBZGRyZXNzU2FuaXRpemVyIGluc3RydW1lbnRhdGlvbi4K
KyNpZiBkZWZpbmVkKF9fY2xhbmdfXykKKyMgaWYgX19oYXNfZmVhdHVyZShhZGRyZXNzX3Nhbml0
aXplcikKKyMgIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTU18gXAor
ICAgICAgIF9fYXR0cmlidXRlX18oKG5vX3Nhbml0aXplX2FkZHJlc3MpKQorIyBlbHNlCisjICBk
ZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX0FERFJFU1NfCisjIGVuZGlmICAvLyBf
X2hhc19mZWF0dXJlKGFkZHJlc3Nfc2FuaXRpemVyKQorI2Vsc2UKKyMgZGVmaW5lIEdURVNUX0FU
VFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTXworI2VuZGlmICAvLyBfX2NsYW5nX18KKworLy8g
QSBmdW5jdGlvbiBsZXZlbCBhdHRyaWJ1dGUgdG8gZGlzYWJsZSBUaHJlYWRTYW5pdGl6ZXIgaW5z
dHJ1bWVudGF0aW9uLgorI2lmIGRlZmluZWQoX19jbGFuZ19fKQorIyBpZiBfX2hhc19mZWF0dXJl
KHRocmVhZF9zYW5pdGl6ZXIpCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpF
X1RIUkVBRF8gXAorICAgICAgIF9fYXR0cmlidXRlX18oKG5vX3Nhbml0aXplX3RocmVhZCkpCisj
IGVsc2UKKyMgIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXworIyBl
bmRpZiAgLy8gX19oYXNfZmVhdHVyZSh0aHJlYWRfc2FuaXRpemVyKQorI2Vsc2UKKyMgZGVmaW5l
IEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9USFJFQURfCisjZW5kaWYgIC8vIF9fY2xhbmdf
XworCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKIGNsYXNzIE1lc3NhZ2U7CiAKKyNpZiBkZWZpbmVk
KEdURVNUX1RVUExFX05BTUVTUEFDRV8pCisvLyBJbXBvcnQgdHVwbGUgYW5kIGZyaWVuZHMgaW50
byB0aGUgOjp0ZXN0aW5nIG5hbWVzcGFjZS4KKy8vIEl0IGlzIHBhcnQgb2Ygb3VyIGludGVyZmFj
ZSwgaGF2aW5nIHRoZW0gaW4gOjp0ZXN0aW5nIGFsbG93cyB1cyB0byBjaGFuZ2UKKy8vIHRoZWly
IHR5cGVzIGFzIG5lZWRlZC4KK3VzaW5nIEdURVNUX1RVUExFX05BTUVTUEFDRV86OmdldDsKK3Vz
aW5nIEdURVNUX1RVUExFX05BTUVTUEFDRV86Om1ha2VfdHVwbGU7Cit1c2luZyBHVEVTVF9UVVBM
RV9OQU1FU1BBQ0VfOjp0dXBsZTsKK3VzaW5nIEdURVNUX1RVUExFX05BTUVTUEFDRV86OnR1cGxl
X3NpemU7Cit1c2luZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjp0dXBsZV9lbGVtZW50OworI2Vu
ZGlmICAvLyBkZWZpbmVkKEdURVNUX1RVUExFX05BTUVTUEFDRV8pCisKIG5hbWVzcGFjZSBpbnRl
cm5hbCB7CiAKLWNsYXNzIFN0cmluZzsKKy8vIEEgc2VjcmV0IHR5cGUgdGhhdCBHb29nbGUgVGVz
dCB1c2VycyBkb24ndCBrbm93IGFib3V0LiAgSXQgaGFzIG5vCisvLyBkZWZpbml0aW9uIG9uIHB1
cnBvc2UuICBUaGVyZWZvcmUgaXQncyBpbXBvc3NpYmxlIHRvIGNyZWF0ZSBhCisvLyBTZWNyZXQg
b2JqZWN0LCB3aGljaCBpcyB3aGF0IHdlIHdhbnQuCitjbGFzcyBTZWNyZXQ7CiAKLWNsYXNzIFN0
clN0cmVhbSA6IHB1YmxpYyA6OnN0ZDo6c3RyaW5nc3RyZWFtIHsKLSBwdWJsaWM6Ci0gIHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0KLSAgdm9pZCogb3Bl
cmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9CisvLyBUaGUgR1RFU1Rf
Q09NUElMRV9BU1NFUlRfIG1hY3JvIGNhbiBiZSB1c2VkIHRvIHZlcmlmeSB0aGF0IGEgY29tcGls
ZSB0aW1lCisvLyBleHByZXNzaW9uIGlzIHRydWUuIEZvciBleGFtcGxlLCB5b3UgY291bGQgdXNl
IGl0IHRvIHZlcmlmeSB0aGUKKy8vIHNpemUgb2YgYSBzdGF0aWMgYXJyYXk6CisvLworLy8gICBH
VEVTVF9DT01QSUxFX0FTU0VSVF8oR1RFU1RfQVJSQVlfU0laRV8obmFtZXMpID09IE5VTV9OQU1F
UywKKy8vICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzX2luY29ycmVjdF9zaXplKTsKKy8v
CisvLyBvciB0byBtYWtlIHN1cmUgYSBzdHJ1Y3QgaXMgc21hbGxlciB0aGFuIGEgY2VydGFpbiBz
aXplOgorLy8KKy8vICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKHNpemVvZihmb28pIDwgMTI4LCBm
b29fdG9vX2xhcmdlKTsKKy8vCisvLyBUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIHRoZSBtYWNybyBp
cyB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUuIElmCisvLyB0aGUgZXhwcmVzc2lvbiBpcyBmYWxz
ZSwgbW9zdCBjb21waWxlcnMgd2lsbCBpc3N1ZSBhIHdhcm5pbmcvZXJyb3IKKy8vIGNvbnRhaW5p
bmcgdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlLgorCisjaWYgR1RFU1RfTEFOR19DWFgxMQorIyBk
ZWZpbmUgR1RFU1RfQ09NUElMRV9BU1NFUlRfKGV4cHIsIG1zZykgc3RhdGljX2Fzc2VydChleHBy
LCAjbXNnKQorI2Vsc2UgIC8vICFHVEVTVF9MQU5HX0NYWDExCit0ZW1wbGF0ZSA8Ym9vbD4KKyAg
c3RydWN0IENvbXBpbGVBc3NlcnQgeworfTsKIAotICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
IHNpemUpIHsKLSAgICByZXR1cm4gbWFsbG9jKHNpemUpOwotICB9CisjIGRlZmluZSBHVEVTVF9D
T01QSUxFX0FTU0VSVF8oZXhwciwgbXNnKSBcCisgIHR5cGVkZWYgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q29tcGlsZUFzc2VydDwoc3RhdGljX2Nhc3Q8Ym9vbD4oZXhwcikpPiBcCisgICAgICBtc2db
c3RhdGljX2Nhc3Q8Ym9vbD4oZXhwcikgPyAxIDogLTFdIEdURVNUX0FUVFJJQlVURV9VTlVTRURf
CisjZW5kaWYgIC8vICFHVEVTVF9MQU5HX0NYWDExCiAKLSAgdm9pZCBvcGVyYXRvciBkZWxldGUo
dm9pZCogcCkgewotICAgIGZyZWUocCk7Ci0gIH0KKy8vIEltcGxlbWVudGF0aW9uIGRldGFpbHMg
b2YgR1RFU1RfQ09NUElMRV9BU1NFUlRfOgorLy8KKy8vIChJbiBDKysxMSwgd2Ugc2ltcGx5IHVz
ZSBzdGF0aWNfYXNzZXJ0IGluc3RlYWQgb2YgdGhlIGZvbGxvd2luZykKKy8vCisvLyAtIEdURVNU
X0NPTVBJTEVfQVNTRVJUXyB3b3JrcyBieSBkZWZpbmluZyBhbiBhcnJheSB0eXBlIHRoYXQgaGFz
IC0xCisvLyAgIGVsZW1lbnRzIChhbmQgdGh1cyBpcyBpbnZhbGlkKSB3aGVuIHRoZSBleHByZXNz
aW9uIGlzIGZhbHNlLgorLy8KKy8vIC0gVGhlIHNpbXBsZXIgZGVmaW5pdGlvbgorLy8KKy8vICAg
ICNkZWZpbmUgR1RFU1RfQ09NUElMRV9BU1NFUlRfKGV4cHIsIG1zZykgdHlwZWRlZiBjaGFyIG1z
Z1soZXhwcikgPyAxIDogLTFdCisvLworLy8gICBkb2VzIG5vdCB3b3JrLCBhcyBnY2Mgc3VwcG9y
dHMgdmFyaWFibGUtbGVuZ3RoIGFycmF5cyB3aG9zZSBzaXplcworLy8gICBhcmUgZGV0ZXJtaW5l
ZCBhdCBydW4tdGltZSAodGhpcyBpcyBnY2MncyBleHRlbnNpb24gYW5kIG5vdCBwYXJ0CisvLyAg
IG9mIHRoZSBDKysgc3RhbmRhcmQpLiAgQXMgYSByZXN1bHQsIGdjYyBmYWlscyB0byByZWplY3Qg
dGhlCisvLyAgIGZvbGxvd2luZyBjb2RlIHdpdGggdGhlIHNpbXBsZSBkZWZpbml0aW9uOgorLy8K
Ky8vICAgICBpbnQgZm9vOworLy8gICAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhmb28sIG1zZyk7
IC8vIG5vdCBzdXBwb3NlZCB0byBjb21waWxlIGFzIGZvbyBpcworLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdCBhIGNvbXBpbGUtdGltZSBjb25zdGFudC4KKy8v
CisvLyAtIEJ5IHVzaW5nIHRoZSB0eXBlIENvbXBpbGVBc3NlcnQ8KGJvb2woZXhwcikpPiwgd2Ug
ZW5zdXJlcyB0aGF0CisvLyAgIGV4cHIgaXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuICAoVGVt
cGxhdGUgYXJndW1lbnRzIG11c3QgYmUKKy8vICAgZGV0ZXJtaW5lZCBhdCBjb21waWxlLXRpbWUu
KQorLy8KKy8vIC0gVGhlIG91dHRlciBwYXJlbnRoZXNlcyBpbiBDb21waWxlQXNzZXJ0PChib29s
KGV4cHIpKT4gYXJlIG5lY2Vzc2FyeQorLy8gICB0byB3b3JrIGFyb3VuZCBhIGJ1ZyBpbiBnY2Mg
My40LjQgYW5kIDQuMC4xLiAgSWYgd2UgaGFkIHdyaXR0ZW4KKy8vCisvLyAgICAgQ29tcGlsZUFz
c2VydDxib29sKGV4cHIpPgorLy8KKy8vICAgaW5zdGVhZCwgdGhlc2UgY29tcGlsZXJzIHdpbGwg
cmVmdXNlIHRvIGNvbXBpbGUKKy8vCisvLyAgICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKDUgPiAw
LCBzb21lX21lc3NhZ2UpOworLy8KKy8vICAgKFRoZXkgc2VlbSB0byB0aGluayB0aGUgIj4iIGlu
ICI1ID4gMCIgbWFya3MgdGhlIGVuZCBvZiB0aGUKKy8vICAgdGVtcGxhdGUgYXJndW1lbnQgbGlz
dC4pCisvLworLy8gLSBUaGUgYXJyYXkgc2l6ZSBpcyAoYm9vbChleHByKSA/IDEgOiAtMSksIGlu
c3RlYWQgb2Ygc2ltcGx5CisvLworLy8gICAgICgoZXhwcikgPyAxIDogLTEpLgorLy8KKy8vICAg
VGhpcyBpcyB0byBhdm9pZCBydW5uaW5nIGludG8gYSBidWcgaW4gTVMgVkMgNy4xLCB3aGljaAor
Ly8gICBjYXVzZXMgKCgwLjApID8gMSA6IC0xKSB0byBpbmNvcnJlY3RseSBldmFsdWF0ZSB0byAx
LgogCi0gIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7Ci0gICAgcmV0dXJuIG1h
bGxvYyhzaXplKTsKLSAgfQorLy8gU3RhdGljQXNzZXJ0VHlwZUVxSGVscGVyIGlzIHVzZWQgYnkg
U3RhdGljQXNzZXJ0VHlwZUVxIGRlZmluZWQgaW4gZ3Rlc3QuaC4KKy8vCisvLyBUaGlzIHRlbXBs
YXRlIGlzIGRlY2xhcmVkLCBidXQgaW50ZW50aW9uYWxseSB1bmRlZmluZWQuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorc3RydWN0IFN0YXRpY0Fzc2VydFR5cGVFcUhlbHBl
cjsKIAotICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsKLSAgICBmcmVlKHApOwot
ICB9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBTdGF0aWNBc3NlcnRUeXBlRXFIZWxw
ZXI8VCwgVD4geworICBlbnVtIHsgdmFsdWUgPSB0cnVlIH07CiB9OwogCisvLyBTYW1lIGFzIHN0
ZDo6aXNfc2FtZTw+LgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitzdHJ1Y3Qg
SXNTYW1lIHsKKyAgZW51bSB7IHZhbHVlID0gZmFsc2UgfTsKK307Cit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK3N0cnVjdCBJc1NhbWU8VCwgVD4geworICBlbnVtIHsgdmFsdWUgPSB0cnVlIH07Cit9
OwogCisvLyBFdmFsdWF0ZXMgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiAnYXJyYXknLgor
I2RlZmluZSBHVEVTVF9BUlJBWV9TSVpFXyhhcnJheSkgKHNpemVvZihhcnJheSkgLyBzaXplb2Yo
YXJyYXlbMF0pKQorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK3R5cGVkZWYgOjpzdHJp
bmcgc3RyaW5nOworI2Vsc2UKK3R5cGVkZWYgOjpzdGQ6OnN0cmluZyBzdHJpbmc7CisjZW5kaWYg
IC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJ
TkcKK3R5cGVkZWYgOjp3c3RyaW5nIHdzdHJpbmc7CisjZWxpZiBHVEVTVF9IQVNfU1REX1dTVFJJ
TkcKK3R5cGVkZWYgOjpzdGQ6OndzdHJpbmcgd3N0cmluZzsKKyNlbmRpZiAgLy8gR1RFU1RfSEFT
X0dMT0JBTF9XU1RSSU5HCiAKIC8vIEEgaGVscGVyIGZvciBzdXBwcmVzc2luZyB3YXJuaW5ncyBv
biBjb25zdGFudCBjb25kaXRpb24uICBJdCBqdXN0CiAvLyByZXR1cm5zICdjb25kaXRpb24nLgpA
QCAtNjg1LDYgKzEyMTgsMTIgQEAgY2xhc3Mgc2NvcGVkX3B0ciB7CiAgICAgICBwdHJfID0gcDsK
ICAgICB9CiAgIH0KKworICBmcmllbmQgdm9pZCBzd2FwKHNjb3BlZF9wdHImIGEsIHNjb3BlZF9w
dHImIGIpIHsKKyAgICB1c2luZyBzdGQ6OnN3YXA7CisgICAgc3dhcChhLnB0cl8sIGIucHRyXyk7
CisgIH0KKwogIHByaXZhdGU6CiAgIFQqIHB0cl87CiAKQEAgLTY5Myw2ICsxMjMyLDEwIEBAIGNs
YXNzIHNjb3BlZF9wdHIgewogCiAvLyBEZWZpbmVzIFJFLgogCisjaWYgR1RFU1RfVVNFU19QQ1JF
CisvLyBpZiB1c2VkLCBQQ1JFIGlzIGluamVjdGVkIGJ5IGN1c3RvbS9ndGVzdC1wb3J0LmgKKyNl
bGlmIEdURVNUX1VTRVNfUE9TSVhfUkUgfHwgR1RFU1RfVVNFU19TSU1QTEVfUkUKKwogLy8gQSBz
aW1wbGUgQysrIHdyYXBwZXIgZm9yIDxyZWdleC5oPi4gIEl0IHVzZXMgdGhlIFBPU0lYIEV4dGVu
ZGVkCiAvLyBSZWd1bGFyIEV4cHJlc3Npb24gc3ludGF4LgogY2xhc3MgR1RFU1RfQVBJXyBSRSB7
CkBAIC03MDQsOSArMTI0NywxMSBAQCBjbGFzcyBHVEVTVF9BUElfIFJFIHsKICAgLy8gQ29uc3Ry
dWN0cyBhbiBSRSBmcm9tIGEgc3RyaW5nLgogICBSRShjb25zdCA6OnN0ZDo6c3RyaW5nJiByZWdl
eCkgeyBJbml0KHJlZ2V4LmNfc3RyKCkpOyB9ICAvLyBOT0xJTlQKIAotI2lmIEdURVNUX0hBU19H
TE9CQUxfU1RSSU5HCisjIGlmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKICAgUkUoY29uc3Qg
OjpzdHJpbmcmIHJlZ2V4KSB7IEluaXQocmVnZXguY19zdHIoKSk7IH0gIC8vIE5PTElOVAotI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCisjIGVuZGlmICAvLyBHVEVTVF9IQVNf
R0xPQkFMX1NUUklORwogCiAgIFJFKGNvbnN0IGNoYXIqIHJlZ2V4KSB7IEluaXQocmVnZXgpOyB9
ICAvLyBOT0xJTlQKICAgflJFKCk7CkBAIC03MTksNyArMTI2NCw3IEBAIGNsYXNzIEdURVNUX0FQ
SV8gUkUgewogICAvLyBQYXJ0aWFsTWF0Y2goc3RyLCByZSkgcmV0dXJucyB0cnVlIGlmZiByZWd1
bGFyIGV4cHJlc3Npb24gcmUKICAgLy8gbWF0Y2hlcyBhIHN1YnN0cmluZyBvZiBzdHIgKGluY2x1
ZGluZyBzdHIgaXRzZWxmKS4KICAgLy8KLSAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IG1ha2Ug
RnVsbE1hdGNoKCkgYW5kIFBhcnRpYWxNYXRjaCgpIHdvcmsKKyAgLy8gRklYTUU6IG1ha2UgRnVs
bE1hdGNoKCkgYW5kIFBhcnRpYWxNYXRjaCgpIHdvcmsKICAgLy8gd2hlbiBzdHIgY29udGFpbnMg
TlVMIGNoYXJhY3RlcnMuCiAgIHN0YXRpYyBib29sIEZ1bGxNYXRjaChjb25zdCA6OnN0ZDo6c3Ry
aW5nJiBzdHIsIGNvbnN0IFJFJiByZSkgewogICAgIHJldHVybiBGdWxsTWF0Y2goc3RyLmNfc3Ry
KCksIHJlKTsKQEAgLTcyOCwxNCArMTI3MywxNiBAQCBjbGFzcyBHVEVTVF9BUElfIFJFIHsKICAg
ICByZXR1cm4gUGFydGlhbE1hdGNoKHN0ci5jX3N0cigpLCByZSk7CiAgIH0KIAotI2lmIEdURVNU
X0hBU19HTE9CQUxfU1RSSU5HCisjIGlmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKICAgc3Rh
dGljIGJvb2wgRnVsbE1hdGNoKGNvbnN0IDo6c3RyaW5nJiBzdHIsIGNvbnN0IFJFJiByZSkgewog
ICAgIHJldHVybiBGdWxsTWF0Y2goc3RyLmNfc3RyKCksIHJlKTsKICAgfQogICBzdGF0aWMgYm9v
bCBQYXJ0aWFsTWF0Y2goY29uc3QgOjpzdHJpbmcmIHN0ciwgY29uc3QgUkUmIHJlKSB7CiAgICAg
cmV0dXJuIFBhcnRpYWxNYXRjaChzdHIuY19zdHIoKSwgcmUpOwogICB9Ci0jZW5kaWYgIC8vIEdU
RVNUX0hBU19HTE9CQUxfU1RSSU5HCisKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RS
SU5HCiAKICAgc3RhdGljIGJvb2wgRnVsbE1hdGNoKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgUkUm
IHJlKTsKICAgc3RhdGljIGJvb2wgUGFydGlhbE1hdGNoKGNvbnN0IGNoYXIqIHN0ciwgY29uc3Qg
UkUmIHJlKTsKQEAgLTc0MywyMiArMTI5MCwzOCBAQCBjbGFzcyBHVEVTVF9BUElfIFJFIHsKICBw
cml2YXRlOgogICB2b2lkIEluaXQoY29uc3QgY2hhciogcmVnZXgpOwogCi0gIC8vIFdlIHVzZSBh
IGNvbnN0IGNoYXIqIGluc3RlYWQgb2YgYSBzdHJpbmcsIGFzIEdvb2dsZSBUZXN0IG1heSBiZSB1
c2VkCi0gIC8vIHdoZXJlIHN0cmluZyBpcyBub3QgYXZhaWxhYmxlLiAgV2UgYWxzbyBkbyBub3Qg
dXNlIEdvb2dsZSBUZXN0J3Mgb3duCi0gIC8vIFN0cmluZyB0eXBlIGhlcmUsIGluIG9yZGVyIHRv
IHNpbXBsaWZ5IGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZQotICAvLyBmaWxlcy4KKyAgLy8gV2Ug
dXNlIGEgY29uc3QgY2hhciogaW5zdGVhZCBvZiBhbiBzdGQ6OnN0cmluZywgYXMgR29vZ2xlIFRl
c3QgdXNlZCB0byBiZQorICAvLyB1c2VkIHdoZXJlIHN0ZDo6c3RyaW5nIGlzIG5vdCBhdmFpbGFi
bGUuICBGSVhNRTogY2hhbmdlIHRvCisgIC8vIHN0ZDo6c3RyaW5nLgogICBjb25zdCBjaGFyKiBw
YXR0ZXJuXzsKICAgYm9vbCBpc192YWxpZF87Ci0jaWYgR1RFU1RfVVNFU19QT1NJWF9SRQorCisj
IGlmIEdURVNUX1VTRVNfUE9TSVhfUkUKKwogICByZWdleF90IGZ1bGxfcmVnZXhfOyAgICAgLy8g
Rm9yIEZ1bGxNYXRjaCgpLgogICByZWdleF90IHBhcnRpYWxfcmVnZXhfOyAgLy8gRm9yIFBhcnRp
YWxNYXRjaCgpLgotI2Vsc2UgIC8vIEdURVNUX1VTRVNfU0lNUExFX1JFCisKKyMgZWxzZSAgLy8g
R1RFU1RfVVNFU19TSU1QTEVfUkUKKwogICBjb25zdCBjaGFyKiBmdWxsX3BhdHRlcm5fOyAgLy8g
Rm9yIEZ1bGxNYXRjaCgpOwotI2VuZGlmCisKKyMgZW5kaWYKIAogICBHVEVTVF9ESVNBTExPV19B
U1NJR05fKFJFKTsKIH07CiAKKyNlbmRpZiAgLy8gR1RFU1RfVVNFU19QQ1JFCisKKy8vIEZvcm1h
dHMgYSBzb3VyY2UgZmlsZSBwYXRoIGFuZCBhIGxpbmUgbnVtYmVyIGFzIHRoZXkgd291bGQgYXBw
ZWFyCisvLyBpbiBhbiBlcnJvciBtZXNzYWdlIGZyb20gdGhlIGNvbXBpbGVyIHVzZWQgdG8gY29t
cGlsZSB0aGlzIGNvZGUuCitHVEVTVF9BUElfIDo6c3RkOjpzdHJpbmcgRm9ybWF0RmlsZUxvY2F0
aW9uKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKTsKKworLy8gRm9ybWF0cyBhIGZpbGUgbG9j
YXRpb24gZm9yIGNvbXBpbGVyLWluZGVwZW5kZW50IFhNTCBvdXRwdXQuCisvLyBBbHRob3VnaCB0
aGlzIGZ1bmN0aW9uIGlzIG5vdCBwbGF0Zm9ybSBkZXBlbmRlbnQsIHdlIHB1dCBpdCBuZXh0IHRv
CisvLyBGb3JtYXRGaWxlTG9jYXRpb24gaW4gb3JkZXIgdG8gY29udHJhc3QgdGhlIHR3byBmdW5j
dGlvbnMuCitHVEVTVF9BUElfIDo6c3RkOjpzdHJpbmcgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVu
dEZpbGVMb2NhdGlvbihjb25zdCBjaGFyKiBmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmUpOworCiAvLyBE
ZWZpbmVzIGxvZ2dpbmcgdXRpbGl0aWVzOgogLy8gICBHVEVTVF9MT0dfKHNldmVyaXR5KSAtIGxv
Z3MgbWVzc2FnZXMgYXQgdGhlIHNwZWNpZmllZCBzZXZlcml0eSBsZXZlbC4gVGhlCiAvLyAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSBpdHNlbGYgaXMgc3RyZWFtZWQgaW50byB0aGUg
bWFjcm8uCkBAIC03OTAsMTMgKzEzNTMsMTggQEAgY2xhc3MgR1RFU1RfQVBJXyBHVGVzdExvZyB7
CiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oR1Rlc3RMb2cpOwogfTsKIAotI2Rl
ZmluZSBHVEVTVF9MT0dfKHNldmVyaXR5KSBcCisjaWYgIWRlZmluZWQoR1RFU1RfTE9HXykKKwor
IyBkZWZpbmUgR1RFU1RfTE9HXyhzZXZlcml0eSkgXAogICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6
OkdUZXN0TG9nKDo6dGVzdGluZzo6aW50ZXJuYWw6OkdURVNUXyMjc2V2ZXJpdHksIFwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pLkdldFN0cmVh
bSgpCiAKIGlubGluZSB2b2lkIExvZ1RvU3RkZXJyKCkge30KIGlubGluZSB2b2lkIEZsdXNoSW5m
b0xvZygpIHsgZmZsdXNoKE5VTEwpOyB9CiAKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfTE9H
XykKKworI2lmICFkZWZpbmVkKEdURVNUX0NIRUNLXykKIC8vIElOVEVSTkFMIElNUExFTUVOVEFU
SU9OIC0gRE8gTk9UIFVTRS4KIC8vCiAvLyBHVEVTVF9DSEVDS18gaXMgYW4gYWxsLW1vZGUgYXNz
ZXJ0LiBJdCBhYm9ydHMgdGhlIHByb2dyYW0gaWYgdGhlIGNvbmRpdGlvbgpAQCAtODExLDEyICsx
Mzc5LDEzIEBAIGlubGluZSB2b2lkIEZsdXNoSW5mb0xvZygpIHsgZmZsdXNoKE5VTEwpOyB9CiAv
LyAgICBjb25kaXRpb24gaXRzZWxmLCBwbHVzIGFkZGl0aW9uYWwgbWVzc2FnZSBzdHJlYW1lZCBp
bnRvIGl0LCBpZiBhbnksCiAvLyAgICBhbmQgdGhlbiBpdCBhYm9ydHMgdGhlIHByb2dyYW0uIEl0
IGFib3J0cyB0aGUgcHJvZ3JhbSBpcnJlc3BlY3RpdmUgb2YKIC8vICAgIHdoZXRoZXIgaXQgaXMg
YnVpbHQgaW4gdGhlIGRlYnVnIG1vZGUgb3Igbm90LgotI2RlZmluZSBHVEVTVF9DSEVDS18oY29u
ZGl0aW9uKSBcCisjIGRlZmluZSBHVEVTVF9DSEVDS18oY29uZGl0aW9uKSBcCiAgICAgR1RFU1Rf
QU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAogICAgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpJ
c1RydWUoY29uZGl0aW9uKSkgXAogICAgICAgOyBcCiAgICAgZWxzZSBcCiAgICAgICBHVEVTVF9M
T0dfKEZBVEFMKSA8PCAiQ29uZGl0aW9uICIgI2NvbmRpdGlvbiAiIGZhaWxlZC4gIgorI2VuZGlm
ICAvLyAhZGVmaW5lZChHVEVTVF9DSEVDS18pCiAKIC8vIEFuIGFsbC1tb2RlIGFzc2VydCB0byB2
ZXJpZnkgdGhhdCB0aGUgZ2l2ZW4gUE9TSVgtc3R5bGUgZnVuY3Rpb24KIC8vIGNhbGwgcmV0dXJu
cyAwIChpbmRpY2F0aW5nIHN1Y2Nlc3MpLiAgS25vd24gbGltaXRhdGlvbjogdGhpcwpAQCAtODI4
LDggKzEzOTcsMTI1IEBAIGlubGluZSB2b2lkIEZsdXNoSW5mb0xvZygpIHsgZmZsdXNoKE5VTEwp
OyB9CiAgICAgR1RFU1RfTE9HXyhGQVRBTCkgPDwgI3Bvc2l4X2NhbGwgPDwgImZhaWxlZCB3aXRo
IGVycm9yICIgXAogICAgICAgICAgICAgICAgICAgICAgIDw8IGd0ZXN0X2Vycm9yCiAKKy8vIEFk
ZHMgcmVmZXJlbmNlIHRvIGEgdHlwZSBpZiBpdCBpcyBub3QgYSByZWZlcmVuY2UgdHlwZSwKKy8v
IG90aGVyd2lzZSBsZWF2ZXMgaXQgdW5jaGFuZ2VkLiAgVGhpcyBpcyB0aGUgc2FtZSBhcworLy8g
dHIxOjphZGRfcmVmZXJlbmNlLCB3aGljaCBpcyBub3Qgd2lkZWx5IGF2YWlsYWJsZSB5ZXQuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBBZGRSZWZlcmVuY2UgeyB0eXBlZGVmIFQmIHR5
cGU7IH07ICAvLyBOT0xJTlQKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEFkZFJlZmVy
ZW5jZTxUJj4geyB0eXBlZGVmIFQmIHR5cGU7IH07ICAvLyBOT0xJTlQKKworLy8gQSBoYW5keSB3
cmFwcGVyIGFyb3VuZCBBZGRSZWZlcmVuY2UgdGhhdCB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudCBU
CisvLyBkZXBlbmRzIG9uIHRlbXBsYXRlIHBhcmFtZXRlcnMuCisjZGVmaW5lIEdURVNUX0FERF9S
RUZFUkVOQ0VfKFQpIFwKKyAgICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpBZGRSZWZl
cmVuY2U8VD46OnR5cGUKKworLy8gVHJhbnNmb3JtcyAiVCIgaW50byAiY29uc3QgVCYiIGFjY29y
ZGluZyB0byBzdGFuZGFyZCByZWZlcmVuY2UgY29sbGFwc2luZworLy8gcnVsZXMgKHRoaXMgaXMg
b25seSBuZWVkZWQgYXMgYSBiYWNrcG9ydCBmb3IgQysrOTggY29tcGlsZXJzIHRoYXQgZG8gbm90
CisvLyBzdXBwb3J0IHJlZmVyZW5jZSBjb2xsYXBzaW5nKS4gU3BlY2lmaWNhbGx5LCBpdCB0cmFu
c2Zvcm1zOgorLy8KKy8vICAgY2hhciAgICAgICAgID09PiBjb25zdCBjaGFyJgorLy8gICBjb25z
dCBjaGFyICAgPT0+IGNvbnN0IGNoYXImCisvLyAgIGNoYXImICAgICAgICA9PT4gY2hhciYKKy8v
ICAgY29uc3QgY2hhciYgID09PiBjb25zdCBjaGFyJgorLy8KKy8vIE5vdGUgdGhhdCB0aGUgbm9u
LWNvbnN0IHJlZmVyZW5jZSB3aWxsIG5vdCBoYXZlICJjb25zdCIgYWRkZWQuIFRoaXMgaXMKKy8v
IHN0YW5kYXJkLCBhbmQgbmVjZXNzYXJ5IHNvIHRoYXQgIlQiIGNhbiBhbHdheXMgYmluZCB0byAi
Y29uc3QgVCYiLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQ29uc3RSZWYgeyB0eXBl
ZGVmIGNvbnN0IFQmIHR5cGU7IH07Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBDb25z
dFJlZjxUJj4geyB0eXBlZGVmIFQmIHR5cGU7IH07CisKKy8vIFRoZSBhcmd1bWVudCBUIG11c3Qg
ZGVwZW5kIG9uIHNvbWUgdGVtcGxhdGUgcGFyYW1ldGVycy4KKyNkZWZpbmUgR1RFU1RfUkVGRVJF
TkNFX1RPX0NPTlNUXyhUKSBcCisgIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvbnN0
UmVmPFQ+Ojp0eXBlCisKKyNpZiBHVEVTVF9IQVNfU1REX01PVkVfCit1c2luZyBzdGQ6OmZvcndh
cmQ7Cit1c2luZyBzdGQ6Om1vdmU7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IFJ2
YWx1ZVJlZiB7CisgIHR5cGVkZWYgVCYmIHR5cGU7Cit9OworI2Vsc2UgIC8vIEdURVNUX0hBU19T
VERfTU9WRV8KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3QgVCYgbW92ZShjb25zdCBUJiB0
KSB7CisgIHJldHVybiB0OworfQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitHVEVTVF9BRERfUkVG
RVJFTkNFXyhUKSBmb3J3YXJkKEdURVNUX0FERF9SRUZFUkVOQ0VfKFQpIHQpIHsgcmV0dXJuIHQ7
IH0KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUnZhbHVlUmVmIHsKKyAgdHlwZWRl
ZiBjb25zdCBUJiB0eXBlOworfTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9NT1ZFXworCiAv
LyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgogLy8K
Ky8vIFVzZSBJbXBsaWNpdENhc3RfIGFzIGEgc2FmZSB2ZXJzaW9uIG9mIHN0YXRpY19jYXN0IGZv
ciB1cGNhc3RpbmcgaW4KKy8vIHRoZSB0eXBlIGhpZXJhcmNoeSAoZS5nLiBjYXN0aW5nIGEgRm9v
KiB0byBhIFN1cGVyY2xhc3NPZkZvbyogb3IgYQorLy8gY29uc3QgRm9vKikuICBXaGVuIHlvdSB1
c2UgSW1wbGljaXRDYXN0XywgdGhlIGNvbXBpbGVyIGNoZWNrcyB0aGF0CisvLyB0aGUgY2FzdCBp
cyBzYWZlLiAgU3VjaCBleHBsaWNpdCBJbXBsaWNpdENhc3RfcyBhcmUgbmVjZXNzYXJ5IGluCisv
LyBzdXJwcmlzaW5nbHkgbWFueSBzaXR1YXRpb25zIHdoZXJlIEMrKyBkZW1hbmRzIGFuIGV4YWN0
IHR5cGUgbWF0Y2gKKy8vIGluc3RlYWQgb2YgYW4gYXJndW1lbnQgdHlwZSBjb252ZXJ0YWJsZSB0
byBhIHRhcmdldCB0eXBlLgorLy8KKy8vIFRoZSBzeW50YXggZm9yIHVzaW5nIEltcGxpY2l0Q2Fz
dF8gaXMgdGhlIHNhbWUgYXMgZm9yIHN0YXRpY19jYXN0OgorLy8KKy8vICAgSW1wbGljaXRDYXN0
XzxUb1R5cGU+KGV4cHIpCisvLworLy8gSW1wbGljaXRDYXN0XyB3b3VsZCBoYXZlIGJlZW4gcGFy
dCBvZiB0aGUgQysrIHN0YW5kYXJkIGxpYnJhcnksCisvLyBidXQgdGhlIHByb3Bvc2FsIHdhcyBz
dWJtaXR0ZWQgdG9vIGxhdGUuICBJdCB3aWxsIHByb2JhYmx5IG1ha2UKKy8vIGl0cyB3YXkgaW50
byB0aGUgbGFuZ3VhZ2UgaW4gdGhlIGZ1dHVyZS4KKy8vCisvLyBUaGlzIHJlbGF0aXZlbHkgdWds
eSBuYW1lIGlzIGludGVudGlvbmFsLiBJdCBwcmV2ZW50cyBjbGFzaGVzIHdpdGgKKy8vIHNpbWls
YXIgZnVuY3Rpb25zIHVzZXJzIG1heSBoYXZlIChlLmcuLCBpbXBsaWNpdF9jYXN0KS4gVGhlIGlu
dGVybmFsCisvLyBuYW1lc3BhY2UgYWxvbmUgaXMgbm90IGVub3VnaCBiZWNhdXNlIHRoZSBmdW5j
dGlvbiBjYW4gYmUgZm91bmQgYnkgQURMLgordGVtcGxhdGU8dHlwZW5hbWUgVG8+CitpbmxpbmUg
VG8gSW1wbGljaXRDYXN0XyhUbyB4KSB7IHJldHVybiB4OyB9CisKKy8vIFdoZW4geW91IHVwY2Fz
dCAodGhhdCBpcywgY2FzdCBhIHBvaW50ZXIgZnJvbSB0eXBlIEZvbyB0byB0eXBlCisvLyBTdXBl
cmNsYXNzT2ZGb28pLCBpdCdzIGZpbmUgdG8gdXNlIEltcGxpY2l0Q2FzdF88Piwgc2luY2UgdXBj
YXN0cworLy8gYWx3YXlzIHN1Y2NlZWQuICBXaGVuIHlvdSBkb3duY2FzdCAodGhhdCBpcywgY2Fz
dCBhIHBvaW50ZXIgZnJvbQorLy8gdHlwZSBGb28gdG8gdHlwZSBTdWJjbGFzc09mRm9vKSwgc3Rh
dGljX2Nhc3Q8PiBpc24ndCBzYWZlLCBiZWNhdXNlCisvLyBob3cgZG8geW91IGtub3cgdGhlIHBv
aW50ZXIgaXMgcmVhbGx5IG9mIHR5cGUgU3ViY2xhc3NPZkZvbz8gIEl0CisvLyBjb3VsZCBiZSBh
IGJhcmUgRm9vLCBvciBvZiB0eXBlIERpZmZlcmVudFN1YmNsYXNzT2ZGb28uICBUaHVzLAorLy8g
d2hlbiB5b3UgZG93bmNhc3QsIHlvdSBzaG91bGQgdXNlIHRoaXMgbWFjcm8uICBJbiBkZWJ1ZyBt
b2RlLCB3ZQorLy8gdXNlIGR5bmFtaWNfY2FzdDw+IHRvIGRvdWJsZS1jaGVjayB0aGUgZG93bmNh
c3QgaXMgbGVnYWwgKHdlIGRpZQorLy8gaWYgaXQncyBub3QpLiAgSW4gbm9ybWFsIG1vZGUsIHdl
IGRvIHRoZSBlZmZpY2llbnQgc3RhdGljX2Nhc3Q8PgorLy8gaW5zdGVhZC4gIFRodXMsIGl0J3Mg
aW1wb3J0YW50IHRvIHRlc3QgaW4gZGVidWcgbW9kZSB0byBtYWtlIHN1cmUKKy8vIHRoZSBjYXN0
IGlzIGxlZ2FsIQorLy8gICAgVGhpcyBpcyB0aGUgb25seSBwbGFjZSBpbiB0aGUgY29kZSB3ZSBz
aG91bGQgdXNlIGR5bmFtaWNfY2FzdDw+LgorLy8gSW4gcGFydGljdWxhciwgeW91IFNIT1VMRE4n
VCBiZSB1c2luZyBkeW5hbWljX2Nhc3Q8PiBpbiBvcmRlciB0bworLy8gZG8gUlRUSSAoZWcgY29k
ZSBsaWtlIHRoaXM6CisvLyAgICBpZiAoZHluYW1pY19jYXN0PFN1YmNsYXNzMT4oZm9vKSkgSGFu
ZGxlQVN1YmNsYXNzMU9iamVjdChmb28pOworLy8gICAgaWYgKGR5bmFtaWNfY2FzdDxTdWJjbGFz
czI+KGZvbykpIEhhbmRsZUFTdWJjbGFzczJPYmplY3QoZm9vKTsKKy8vIFlvdSBzaG91bGQgZGVz
aWduIHRoZSBjb2RlIHNvbWUgb3RoZXIgd2F5IG5vdCB0byBuZWVkIHRoaXMuCisvLworLy8gVGhp
cyByZWxhdGl2ZWx5IHVnbHkgbmFtZSBpcyBpbnRlbnRpb25hbC4gSXQgcHJldmVudHMgY2xhc2hl
cyB3aXRoCisvLyBzaW1pbGFyIGZ1bmN0aW9ucyB1c2VycyBtYXkgaGF2ZSAoZS5nLiwgZG93bl9j
YXN0KS4gVGhlIGludGVybmFsCisvLyBuYW1lc3BhY2UgYWxvbmUgaXMgbm90IGVub3VnaCBiZWNh
dXNlIHRoZSBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYnkgQURMLgordGVtcGxhdGU8dHlwZW5hbWUg
VG8sIHR5cGVuYW1lIEZyb20+ICAvLyB1c2UgbGlrZSB0aGlzOiBEb3duQ2FzdF88VCo+KGZvbyk7
CitpbmxpbmUgVG8gRG93bkNhc3RfKEZyb20qIGYpIHsgIC8vIHNvIHdlIG9ubHkgYWNjZXB0IHBv
aW50ZXJzCisgIC8vIEVuc3VyZXMgdGhhdCBUbyBpcyBhIHN1Yi10eXBlIG9mIEZyb20gKi4gIFRo
aXMgdGVzdCBpcyBoZXJlIG9ubHkKKyAgLy8gZm9yIGNvbXBpbGUtdGltZSB0eXBlIGNoZWNraW5n
LCBhbmQgaGFzIG5vIG92ZXJoZWFkIGluIGFuCisgIC8vIG9wdGltaXplZCBidWlsZCBhdCBydW4t
dGltZSwgYXMgaXQgd2lsbCBiZSBvcHRpbWl6ZWQgYXdheQorICAvLyBjb21wbGV0ZWx5LgorICBH
VEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BVU0hfKCkKKyAgaWYgKGZhbHNlKSB7CisgIEdU
RVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUE9QXygpCisgICAgY29uc3QgVG8gdG8gPSBOVUxM
OworICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88RnJvbSo+KHRvKTsKKyAg
fQorCisjaWYgR1RFU1RfSEFTX1JUVEkKKyAgLy8gUlRUSTogZGVidWcgbW9kZSBvbmx5IQorICBH
VEVTVF9DSEVDS18oZiA9PSBOVUxMIHx8IGR5bmFtaWNfY2FzdDxUbz4oZikgIT0gTlVMTCk7Cisj
ZW5kaWYKKyAgcmV0dXJuIHN0YXRpY19jYXN0PFRvPihmKTsKK30KKwogLy8gRG93bmNhc3RzIHRo
ZSBwb2ludGVyIG9mIHR5cGUgQmFzZSB0byBEZXJpdmVkLgogLy8gRGVyaXZlZCBtdXN0IGJlIGEg
c3ViY2xhc3Mgb2YgQmFzZS4gVGhlIHBhcmFtZXRlciBNVVNUCiAvLyBwb2ludCB0byBhIGNsYXNz
IG9mIHR5cGUgRGVyaXZlZCwgbm90IGFueSBzdWJjbGFzcyBvZiBpdC4KQEAgLTgzOSwxMyArMTUy
NSwxOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgRGVyaXZlZCwgY2xhc3MgQmFzZT4KIERlcml2ZWQqIENo
ZWNrZWREb3duY2FzdFRvQWN0dWFsVHlwZShCYXNlKiBiYXNlKSB7CiAjaWYgR1RFU1RfSEFTX1JU
VEkKICAgR1RFU1RfQ0hFQ0tfKHR5cGVpZCgqYmFzZSkgPT0gdHlwZWlkKERlcml2ZWQpKTsKKyNl
bmRpZgorCisjaWYgR1RFU1RfSEFTX0RPV05DQVNUXworICByZXR1cm4gOjpkb3duX2Nhc3Q8RGVy
aXZlZCo+KGJhc2UpOworI2VsaWYgR1RFU1RfSEFTX1JUVEkKICAgcmV0dXJuIGR5bmFtaWNfY2Fz
dDxEZXJpdmVkKj4oYmFzZSk7ICAvLyBOT0xJTlQKICNlbHNlCiAgIHJldHVybiBzdGF0aWNfY2Fz
dDxEZXJpdmVkKj4oYmFzZSk7ICAvLyBQb29yIG1hbidzIGRvd25jYXN0LgogI2VuZGlmCiB9CiAK
LSNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXworI2lmIEdURVNUX0hBU19TVFJFQU1f
UkVESVJFQ1RJT04KIAogLy8gRGVmaW5lcyB0aGUgc3RkZXJyIGNhcHR1cmVyOgogLy8gICBDYXB0
dXJlU3Rkb3V0ICAgICAtIHN0YXJ0cyBjYXB0dXJpbmcgc3Rkb3V0LgpAQCAtODU0LDMwICsxNTQ1
LDM5IEBAIERlcml2ZWQqIENoZWNrZWREb3duY2FzdFRvQWN0dWFsVHlwZShCYXNlKiBiYXNlKSB7
CiAvLyAgIEdldENhcHR1cmVkU3RkZXJyIC0gc3RvcHMgY2FwdHVyaW5nIHN0ZGVyciBhbmQgcmV0
dXJucyB0aGUgY2FwdHVyZWQgc3RyaW5nLgogLy8KIEdURVNUX0FQSV8gdm9pZCBDYXB0dXJlU3Rk
b3V0KCk7Ci1HVEVTVF9BUElfIFN0cmluZyBHZXRDYXB0dXJlZFN0ZG91dCgpOworR1RFU1RfQVBJ
XyBzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0ZG91dCgpOwogR1RFU1RfQVBJXyB2b2lkIENhcHR1
cmVTdGRlcnIoKTsKLUdURVNUX0FQSV8gU3RyaW5nIEdldENhcHR1cmVkU3RkZXJyKCk7CitHVEVT
VF9BUElfIHN0ZDo6c3RyaW5nIEdldENhcHR1cmVkU3RkZXJyKCk7CiAKLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9S
RURJUkVDVElPTgorLy8gUmV0dXJucyB0aGUgc2l6ZSAoaW4gYnl0ZXMpIG9mIGEgZmlsZS4KK0dU
RVNUX0FQSV8gc2l6ZV90IEdldEZpbGVTaXplKEZJTEUqIGZpbGUpOwogCisvLyBSZWFkcyB0aGUg
ZW50aXJlIGNvbnRlbnQgb2YgYSBmaWxlIGFzIGEgc3RyaW5nLgorR1RFU1RfQVBJXyBzdGQ6OnN0
cmluZyBSZWFkRW50aXJlRmlsZShGSUxFKiBmaWxlKTsKIAotI2lmIEdURVNUX0hBU19ERUFUSF9U
RVNUCisvLyBBbGwgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KK0dURVNUX0FQSV8gc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+IEdldEFyZ3ZzKCk7CiAKLS8vIEEgY29weSBvZiBhbGwgY29tbWFuZCBs
aW5lIGFyZ3VtZW50cy4gIFNldCBieSBJbml0R29vZ2xlVGVzdCgpLgotZXh0ZXJuIDo6c3RkOjp2
ZWN0b3I8U3RyaW5nPiBnX2FyZ3ZzOworI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCiAKLS8vIEdU
RVNUX0hBU19ERUFUSF9URVNUIGltcGxpZXMgd2UgaGF2ZSA6OnN0ZDo6c3RyaW5nLgotY29uc3Qg
OjpzdGQ6OnZlY3RvcjxTdHJpbmc+JiBHZXRBcmd2cygpOworc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+IEdldEluamVjdGFibGVBcmd2cygpOworLy8gRGVwcmVjYXRlZDogcGFzcyB0aGUgYXJncyB2
ZWN0b3IgYnkgdmFsdWUgaW5zdGVhZC4KK3ZvaWQgU2V0SW5qZWN0YWJsZUFyZ3ZzKGNvbnN0IHN0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiogbmV3X2FyZ3ZzKTsKK3ZvaWQgU2V0SW5qZWN0YWJsZUFy
Z3ZzKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgbmV3X2FyZ3ZzKTsKKyNpZiBHVEVT
VF9IQVNfR0xPQkFMX1NUUklORwordm9pZCBTZXRJbmplY3RhYmxlQXJndnMoY29uc3Qgc3RkOjp2
ZWN0b3I8IDo6c3RyaW5nPiYgbmV3X2FyZ3ZzKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JB
TF9TVFJJTkcKK3ZvaWQgQ2xlYXJJbmplY3RhYmxlQXJndnMoKTsKIAogI2VuZGlmICAvLyBHVEVT
VF9IQVNfREVBVEhfVEVTVAogCiAvLyBEZWZpbmVzIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVz
LgotCi0jaWYgR1RFU1RfSEFTX1BUSFJFQUQKLQotLy8gU2xlZXBzIGZvciAocm91Z2hseSkgbiBt
aWxsaS1zZWNvbmRzLiAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGZvcgotLy8gdGVzdGluZyBHb29n
bGUgVGVzdCdzIG93biBjb25zdHJ1Y3RzLiAgRG9uJ3QgdXNlIGl0IGluIHVzZXIgdGVzdHMsCi0v
LyBlaXRoZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseS4KKyNpZiBHVEVTVF9JU19USFJFQURTQUZF
CisjIGlmIEdURVNUX0hBU19QVEhSRUFECisvLyBTbGVlcHMgZm9yIChyb3VnaGx5KSBuIG1pbGxp
c2Vjb25kcy4gIFRoaXMgZnVuY3Rpb24gaXMgb25seSBmb3IgdGVzdGluZworLy8gR29vZ2xlIFRl
c3QncyBvd24gY29uc3RydWN0cy4gIERvbid0IHVzZSBpdCBpbiB1c2VyIHRlc3RzLCBlaXRoZXIK
Ky8vIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCiBpbmxpbmUgdm9pZCBTbGVlcE1pbGxpc2Vjb25k
cyhpbnQgbikgewogICBjb25zdCB0aW1lc3BlYyB0aW1lID0gewogICAgIDAsICAgICAgICAgICAg
ICAgICAgLy8gMCBzZWNvbmRzLgpAQCAtODg1LDcgKzE1ODUsMTMgQEAgaW5saW5lIHZvaWQgU2xl
ZXBNaWxsaXNlY29uZHMoaW50IG4pIHsKICAgfTsKICAgbmFub3NsZWVwKCZ0aW1lLCBOVUxMKTsK
IH0KKyMgZW5kaWYgIC8vIEdURVNUX0hBU19QVEhSRUFECiAKKyMgaWYgR1RFU1RfSEFTX05PVElG
SUNBVElPTl8KKy8vIE5vdGlmaWNhdGlvbiBoYXMgYWxyZWFkeSBiZWVuIGltcG9ydGVkIGludG8g
dGhlIG5hbWVzcGFjZS4KKy8vIE5vdGhpbmcgdG8gZG8gaGVyZS4KKworIyBlbGlmIEdURVNUX0hB
U19QVEhSRUFECiAvLyBBbGxvd3MgYSBjb250cm9sbGVyIHRocmVhZCB0byBwYXVzZSBleGVjdXRp
b24gb2YgbmV3bHkgY3JlYXRlZAogLy8gdGhyZWFkcyB1bnRpbCBub3RpZmllZC4gIEluc3RhbmNl
cyBvZiB0aGlzIGNsYXNzIG11c3QgYmUgY3JlYXRlZAogLy8gYW5kIGRlc3Ryb3llZCBpbiB0aGUg
Y29udHJvbGxlciB0aHJlYWQuCkBAIC04OTQsMjUgKzE2MDAsOTYgQEAgaW5saW5lIHZvaWQgU2xl
ZXBNaWxsaXNlY29uZHMoaW50IG4pIHsKIC8vIHVzZSBpdCBpbiB1c2VyIHRlc3RzLCBlaXRoZXIg
ZGlyZWN0bHkgb3IgaW5kaXJlY3RseS4KIGNsYXNzIE5vdGlmaWNhdGlvbiB7CiAgcHVibGljOgot
ICBOb3RpZmljYXRpb24oKSA6IG5vdGlmaWVkXyhmYWxzZSkge30KKyAgTm90aWZpY2F0aW9uKCkg
OiBub3RpZmllZF8oZmFsc2UpIHsKKyAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhy
ZWFkX211dGV4X2luaXQoJm11dGV4XywgTlVMTCkpOworICB9CisgIH5Ob3RpZmljYXRpb24oKSB7
CisgICAgcHRocmVhZF9tdXRleF9kZXN0cm95KCZtdXRleF8pOworICB9CiAKICAgLy8gTm90aWZp
ZXMgYWxsIHRocmVhZHMgY3JlYXRlZCB3aXRoIHRoaXMgbm90aWZpY2F0aW9uIHRvIHN0YXJ0LiBN
dXN0CiAgIC8vIGJlIGNhbGxlZCBmcm9tIHRoZSBjb250cm9sbGVyIHRocmVhZC4KLSAgdm9pZCBO
b3RpZnkoKSB7IG5vdGlmaWVkXyA9IHRydWU7IH0KKyAgdm9pZCBOb3RpZnkoKSB7CisgICAgcHRo
cmVhZF9tdXRleF9sb2NrKCZtdXRleF8pOworICAgIG5vdGlmaWVkXyA9IHRydWU7CisgICAgcHRo
cmVhZF9tdXRleF91bmxvY2soJm11dGV4Xyk7CisgIH0KIAogICAvLyBCbG9ja3MgdW50aWwgdGhl
IGNvbnRyb2xsZXIgdGhyZWFkIG5vdGlmaWVzLiBNdXN0IGJlIGNhbGxlZCBmcm9tIGEgdGVzdAog
ICAvLyB0aHJlYWQuCiAgIHZvaWQgV2FpdEZvck5vdGlmaWNhdGlvbigpIHsKLSAgICB3aGlsZSgh
bm90aWZpZWRfKSB7CisgICAgZm9yICg7OykgeworICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZt
dXRleF8pOworICAgICAgY29uc3QgYm9vbCBub3RpZmllZCA9IG5vdGlmaWVkXzsKKyAgICAgIHB0
aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleF8pOworICAgICAgaWYgKG5vdGlmaWVkKQorICAgICAg
ICBicmVhazsKICAgICAgIFNsZWVwTWlsbGlzZWNvbmRzKDEwKTsKICAgICB9CiAgIH0KIAogIHBy
aXZhdGU6Ci0gIHZvbGF0aWxlIGJvb2wgbm90aWZpZWRfOworICBwdGhyZWFkX211dGV4X3QgbXV0
ZXhfOworICBib29sIG5vdGlmaWVkXzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJ
R05fKE5vdGlmaWNhdGlvbik7Cit9OworCisjIGVsaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RF
U1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lORE9XU19SVAorCitHVEVTVF9BUElf
IHZvaWQgU2xlZXBNaWxsaXNlY29uZHMoaW50IG4pOworCisvLyBQcm92aWRlcyBsZWFrLXNhZmUg
V2luZG93cyBrZXJuZWwgaGFuZGxlIG93bmVyc2hpcC4KKy8vIFVzZWQgaW4gZGVhdGggdGVzdHMg
YW5kIGluIHRocmVhZGluZyBzdXBwb3J0LgorY2xhc3MgR1RFU1RfQVBJXyBBdXRvSGFuZGxlIHsK
KyBwdWJsaWM6CisgIC8vIEFzc3VtZSB0aGF0IFdpbjMyIEhBTkRMRSB0eXBlIGlzIGVxdWl2YWxl
bnQgdG8gdm9pZCouIERvaW5nIHNvIGFsbG93cyB1cyB0bworICAvLyBhdm9pZCBpbmNsdWRpbmcg
PHdpbmRvd3MuaD4gaW4gdGhpcyBoZWFkZXIgZmlsZS4gSW5jbHVkaW5nIDx3aW5kb3dzLmg+IGlz
CisgIC8vIHVuZGVzaXJhYmxlIGJlY2F1c2UgaXQgZGVmaW5lcyBhIGxvdCBvZiBzeW1ib2xzIGFu
ZCBtYWNyb3MgdGhhdCB0ZW5kIHRvCisgIC8vIGNvbmZsaWN0IHdpdGggY2xpZW50IGNvZGUuIFRo
aXMgYXNzdW1wdGlvbiBpcyB2ZXJpZmllZCBieQorICAvLyBXaW5kb3dzVHlwZXNUZXN0LkhBTkRM
RUlzVm9pZFN0YXIuCisgIHR5cGVkZWYgdm9pZCogSGFuZGxlOworICBBdXRvSGFuZGxlKCk7Cisg
IGV4cGxpY2l0IEF1dG9IYW5kbGUoSGFuZGxlIGhhbmRsZSk7CisKKyAgfkF1dG9IYW5kbGUoKTsK
KworICBIYW5kbGUgR2V0KCkgY29uc3Q7CisgIHZvaWQgUmVzZXQoKTsKKyAgdm9pZCBSZXNldChI
YW5kbGUgaGFuZGxlKTsKKworIHByaXZhdGU6CisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGhh
bmRsZSBpcyBhIHZhbGlkIGhhbmRsZSBvYmplY3QgdGhhdCBjYW4gYmUgY2xvc2VkLgorICBib29s
IElzQ2xvc2VhYmxlKCkgY29uc3Q7CisKKyAgSGFuZGxlIGhhbmRsZV87CisKKyAgR1RFU1RfRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhBdXRvSGFuZGxlKTsKK307CisKKy8vIEFsbG93cyBhIGNv
bnRyb2xsZXIgdGhyZWFkIHRvIHBhdXNlIGV4ZWN1dGlvbiBvZiBuZXdseSBjcmVhdGVkCisvLyB0
aHJlYWRzIHVudGlsIG5vdGlmaWVkLiAgSW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MgbXVzdCBiZSBj
cmVhdGVkCisvLyBhbmQgZGVzdHJveWVkIGluIHRoZSBjb250cm9sbGVyIHRocmVhZC4KKy8vCisv
LyBUaGlzIGNsYXNzIGlzIG9ubHkgZm9yIHRlc3RpbmcgR29vZ2xlIFRlc3QncyBvd24gY29uc3Ry
dWN0cy4gRG8gbm90CisvLyB1c2UgaXQgaW4gdXNlciB0ZXN0cywgZWl0aGVyIGRpcmVjdGx5IG9y
IGluZGlyZWN0bHkuCitjbGFzcyBHVEVTVF9BUElfIE5vdGlmaWNhdGlvbiB7CisgcHVibGljOgor
ICBOb3RpZmljYXRpb24oKTsKKyAgdm9pZCBOb3RpZnkoKTsKKyAgdm9pZCBXYWl0Rm9yTm90aWZp
Y2F0aW9uKCk7CisKKyBwcml2YXRlOgorICBBdXRvSGFuZGxlIGV2ZW50XzsKIAogICBHVEVTVF9E
SVNBTExPV19DT1BZX0FORF9BU1NJR05fKE5vdGlmaWNhdGlvbik7CiB9OworIyBlbmRpZiAgLy8g
R1RFU1RfSEFTX05PVElGSUNBVElPTl8KKworLy8gT24gTWluR1csIHdlIGNhbiBoYXZlIGJvdGgg
R1RFU1RfT1NfV0lORE9XUyBhbmQgR1RFU1RfSEFTX1BUSFJFQUQKKy8vIGRlZmluZWQsIGJ1dCB3
ZSBkb24ndCB3YW50IHRvIHVzZSBNaW5HVydzIHB0aHJlYWRzIGltcGxlbWVudGF0aW9uLCB3aGlj
aAorLy8gaGFzIGNvbmZvcm1hbmNlIHByb2JsZW1zIHdpdGggc29tZSB2ZXJzaW9ucyBvZiB0aGUg
UE9TSVggc3RhbmRhcmQuCisjIGlmIEdURVNUX0hBU19QVEhSRUFEICYmICFHVEVTVF9PU19XSU5E
T1dTX01JTkdXCiAKIC8vIEFzIGEgQy1mdW5jdGlvbiwgVGhyZWFkRnVuY1dpdGhDTGlua2FnZSBj
YW5ub3QgYmUgdGVtcGxhdGVkIGl0c2VsZi4KIC8vIENvbnNlcXVlbnRseSwgaXQgY2Fubm90IHNl
bGVjdCBhIGNvcnJlY3QgaW5zdGFudGlhdGlvbiBvZiBUaHJlYWRXaXRoUGFyYW0KQEAgLTk1MSwx
MCArMTcyOCw5IEBAIGV4dGVybiAiQyIgaW5saW5lIHZvaWQqIFRocmVhZEZ1bmNXaXRoQ0xpbmth
Z2Uodm9pZCogdGhyZWFkKSB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNsYXNzIFRocmVhZFdp
dGhQYXJhbSA6IHB1YmxpYyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKICBwdWJsaWM6Ci0gIHR5cGVk
ZWYgdm9pZCAoKlVzZXJUaHJlYWRGdW5jKShUKTsKKyAgdHlwZWRlZiB2b2lkIFVzZXJUaHJlYWRG
dW5jKFQpOwogCi0gIFRocmVhZFdpdGhQYXJhbSgKLSAgICAgIFVzZXJUaHJlYWRGdW5jIGZ1bmMs
IFQgcGFyYW0sIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydCkKKyAgVGhyZWFkV2l0aFBh
cmFtKFVzZXJUaHJlYWRGdW5jKiBmdW5jLCBUIHBhcmFtLCBOb3RpZmljYXRpb24qIHRocmVhZF9j
YW5fc3RhcnQpCiAgICAgICA6IGZ1bmNfKGZ1bmMpLAogICAgICAgICBwYXJhbV8ocGFyYW0pLAog
ICAgICAgICB0aHJlYWRfY2FuX3N0YXJ0Xyh0aHJlYWRfY2FuX3N0YXJ0KSwKQEAgLTk4MSw3ICsx
NzU3LDcgQEAgY2xhc3MgVGhyZWFkV2l0aFBhcmFtIDogcHVibGljIFRocmVhZFdpdGhQYXJhbUJh
c2UgewogICB9CiAKICBwcml2YXRlOgotICBjb25zdCBVc2VyVGhyZWFkRnVuYyBmdW5jXzsgIC8v
IFVzZXItc3VwcGxpZWQgdGhyZWFkIGZ1bmN0aW9uLgorICBVc2VyVGhyZWFkRnVuYyogY29uc3Qg
ZnVuY187ICAvLyBVc2VyLXN1cHBsaWVkIHRocmVhZCBmdW5jdGlvbi4KICAgY29uc3QgVCBwYXJh
bV87ICAvLyBVc2VyLXN1cHBsaWVkIHBhcmFtZXRlciB0byB0aGUgdGhyZWFkIGZ1bmN0aW9uLgog
ICAvLyBXaGVuIG5vbi1OVUxMLCB1c2VkIHRvIGJsb2NrIGV4ZWN1dGlvbiB1bnRpbCB0aGUgY29u
dHJvbGxlciB0aHJlYWQKICAgLy8gbm90aWZpZXMuCkBAIC05OTEsNTEgKzE3NjcsMzE2IEBAIGNs
YXNzIFRocmVhZFdpdGhQYXJhbSA6IHB1YmxpYyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKIAogICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRocmVhZFdpdGhQYXJhbSk7CiB9OworIyBl
bmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1MgJiYgR1RFU1RfSEFTX1BUSFJFQUQgfHwKKyAgICAg
ICAgIC8vIEdURVNUX0hBU19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMXwogCi0vLyBndGVzdC1wb3J0
LmggZ3VhcmFudGVlcyB0byAjaW5jbHVkZSA8cHRocmVhZC5oPiB3aGVuIEdURVNUX0hBU19QVEhS
RUFEIGlzCi0vLyB0cnVlLgotI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyMgaWYgR1RFU1RfSEFTX01V
VEVYX0FORF9USFJFQURfTE9DQUxfCisvLyBNdXRleCBhbmQgVGhyZWFkTG9jYWwgaGF2ZSBhbHJl
YWR5IGJlZW4gaW1wb3J0ZWQgaW50byB0aGUgbmFtZXNwYWNlLgorLy8gTm90aGluZyB0byBkbyBo
ZXJlLgogCi0vLyBNdXRleEJhc2UgYW5kIE11dGV4IGltcGxlbWVudCBtdXRleCBvbiBwdGhyZWFk
cy1iYXNlZCBwbGF0Zm9ybXMuIFRoZXkKLS8vIGFyZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGgg
Y2xhc3MgTXV0ZXhMb2NrOgorIyBlbGlmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJ
TkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQKKworLy8gTXV0ZXggaW1wbGVtZW50
cyBtdXRleCBvbiBXaW5kb3dzIHBsYXRmb3Jtcy4gIEl0IGlzIHVzZWQgaW4gY29uanVuY3Rpb24K
Ky8vIHdpdGggY2xhc3MgTXV0ZXhMb2NrOgogLy8KIC8vICAgTXV0ZXggbXV0ZXg7CiAvLyAgIC4u
LgotLy8gICBNdXRleExvY2sgbG9jaygmbXV0ZXgpOyAgLy8gQWNxdWlyZXMgdGhlIG11dGV4IGFu
ZCByZWxlYXNlcyBpdCBhdCB0aGUgZW5kCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBvZiB0aGUgY3VycmVudCBzY29wZS4KLS8vCi0vLyBNdXRleEJhc2UgaW1wbGVtZW50cyBiZWhh
dmlvciBmb3IgYm90aCBzdGF0aWNhbGx5IGFuZCBkeW5hbWljYWxseQotLy8gYWxsb2NhdGVkIG11
dGV4ZXMuICBEbyBub3QgdXNlIE11dGV4QmFzZSBkaXJlY3RseS4gIEluc3RlYWQsIHdyaXRlCi0v
LyB0aGUgZm9sbG93aW5nIHRvIGRlZmluZSBhIHN0YXRpYyBtdXRleDoKKy8vICAgTXV0ZXhMb2Nr
IGxvY2soJm11dGV4KTsgIC8vIEFjcXVpcmVzIHRoZSBtdXRleCBhbmQgcmVsZWFzZXMgaXQgYXQg
dGhlCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmQgb2YgdGhlIGN1cnJlbnQg
c2NvcGUuCiAvLworLy8gQSBzdGF0aWMgTXV0ZXggKm11c3QqIGJlIGRlZmluZWQgb3IgZGVjbGFy
ZWQgdXNpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmcKKy8vIG1hY3JvczoKIC8vICAgR1RFU1RfREVG
SU5FX1NUQVRJQ19NVVRFWF8oZ19zb21lX211dGV4KTsKKy8vICAgR1RFU1RfREVDTEFSRV9TVEFU
SUNfTVVURVhfKGdfc29tZV9tdXRleCk7CisvLworLy8gKEEgbm9uLXN0YXRpYyBNdXRleCBpcyBk
ZWZpbmVkL2RlY2xhcmVkIGluIHRoZSB1c3VhbCB3YXkpLgorY2xhc3MgR1RFU1RfQVBJXyBNdXRl
eCB7CisgcHVibGljOgorICBlbnVtIE11dGV4VHlwZSB7IGtTdGF0aWMgPSAwLCBrRHluYW1pYyA9
IDEgfTsKKyAgLy8gV2UgcmVseSBvbiBrU3RhdGljTXV0ZXggYmVpbmcgMCBhcyBpdCBpcyB0byB3
aGF0IHRoZSBsaW5rZXIgaW5pdGlhbGl6ZXMKKyAgLy8gdHlwZV8gaW4gc3RhdGljIG11dGV4ZXMu
ICBjcml0aWNhbF9zZWN0aW9uXyB3aWxsIGJlIGluaXRpYWxpemVkIGxhemlseQorICAvLyBpbiBU
aHJlYWRTYWZlTGF6eUluaXQoKS4KKyAgZW51bSBTdGF0aWNDb25zdHJ1Y3RvclNlbGVjdG9yIHsg
a1N0YXRpY011dGV4ID0gMCB9OworCisgIC8vIFRoaXMgY29uc3RydWN0b3IgaW50ZW50aW9uYWxs
eSBkb2VzIG5vdGhpbmcuICBJdCByZWxpZXMgb24gdHlwZV8gYmVpbmcKKyAgLy8gc3RhdGljYWxs
eSBpbml0aWFsaXplZCB0byAwIChlZmZlY3RpdmVseSBzZXR0aW5nIGl0IHRvIGtTdGF0aWMpIGFu
ZCBvbgorICAvLyBUaHJlYWRTYWZlTGF6eUluaXQoKSB0byBsYXppbHkgaW5pdGlhbGl6ZSB0aGUg
cmVzdCBvZiB0aGUgbWVtYmVycy4KKyAgZXhwbGljaXQgTXV0ZXgoU3RhdGljQ29uc3RydWN0b3JT
ZWxlY3RvciAvKmR1bW15Ki8pIHt9CisKKyAgTXV0ZXgoKTsKKyAgfk11dGV4KCk7CisKKyAgdm9p
ZCBMb2NrKCk7CisKKyAgdm9pZCBVbmxvY2soKTsKKworICAvLyBEb2VzIG5vdGhpbmcgaWYgdGhl
IGN1cnJlbnQgdGhyZWFkIGhvbGRzIHRoZSBtdXRleC4gT3RoZXJ3aXNlLCBjcmFzaGVzCisgIC8v
IHdpdGggaGlnaCBwcm9iYWJpbGl0eS4KKyAgdm9pZCBBc3NlcnRIZWxkKCk7CisKKyBwcml2YXRl
OgorICAvLyBJbml0aWFsaXplcyBvd25lcl90aHJlYWRfaWRfIGFuZCBjcml0aWNhbF9zZWN0aW9u
XyBpbiBzdGF0aWMgbXV0ZXhlcy4KKyAgdm9pZCBUaHJlYWRTYWZlTGF6eUluaXQoKTsKKworICAv
LyBQZXIgaHR0cHM6Ly9ibG9ncy5tc2RuLm1pY3Jvc29mdC5jb20vb2xkbmV3dGhpbmcvMjAwNDAy
MjMtMDAvP3A9NDA1MDMsCisgIC8vIHdlIGFzc3VtZSB0aGF0IDAgaXMgYW4gaW52YWxpZCB2YWx1
ZSBmb3IgdGhyZWFkIElEcy4KKyAgdW5zaWduZWQgaW50IG93bmVyX3RocmVhZF9pZF87CisKKyAg
Ly8gRm9yIHN0YXRpYyBtdXRleGVzLCB3ZSByZWx5IG9uIHRoZXNlIG1lbWJlcnMgYmVpbmcgaW5p
dGlhbGl6ZWQgdG8gemVyb3MKKyAgLy8gYnkgdGhlIGxpbmtlci4KKyAgTXV0ZXhUeXBlIHR5cGVf
OworICBsb25nIGNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFzZV87ICAvLyBOT0xJTlQKKyAgR1RF
U1RfQ1JJVElDQUxfU0VDVElPTiogY3JpdGljYWxfc2VjdGlvbl87CisKKyAgR1RFU1RfRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOXyhNdXRleCk7Cit9OworCisjIGRlZmluZSBHVEVTVF9ERUNMQVJF
X1NUQVRJQ19NVVRFWF8obXV0ZXgpIFwKKyAgICBleHRlcm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6
TXV0ZXggbXV0ZXgKKworIyBkZWZpbmUgR1RFU1RfREVGSU5FX1NUQVRJQ19NVVRFWF8obXV0ZXgp
IFwKKyAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpNdXRleCBtdXRleCg6OnRlc3Rpbmc6OmludGVy
bmFsOjpNdXRleDo6a1N0YXRpY011dGV4KQorCisvLyBXZSBjYW5ub3QgbmFtZSB0aGlzIGNsYXNz
IE11dGV4TG9jayBiZWNhdXNlIHRoZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCisvLyBjb25mbGlj
dCB3aXRoIGEgbWFjcm8gbmFtZWQgTXV0ZXhMb2NrLCB3aGljaCBpcyBkZWZpbmVkIG9uIHNvbWUK
Ky8vIHBsYXRmb3Jtcy4gVGhhdCBtYWNybyBpcyB1c2VkIGFzIGEgZGVmZW5zaXZlIG1lYXN1cmUg
dG8gcHJldmVudCBhZ2FpbnN0CisvLyBpbmFkdmVydGVudCBtaXN1c2VzIG9mIE11dGV4TG9jayBs
aWtlICJNdXRleExvY2soJm11KSIgcmF0aGVyIHRoYW4KKy8vICJNdXRleExvY2sgbCgmbXUpIi4g
IEhlbmNlIHRoZSB0eXBlZGVmIHRyaWNrIGJlbG93LgorY2xhc3MgR1Rlc3RNdXRleExvY2sgewor
IHB1YmxpYzoKKyAgZXhwbGljaXQgR1Rlc3RNdXRleExvY2soTXV0ZXgqIG11dGV4KQorICAgICAg
OiBtdXRleF8obXV0ZXgpIHsgbXV0ZXhfLT5Mb2NrKCk7IH0KKworICB+R1Rlc3RNdXRleExvY2so
KSB7IG11dGV4Xy0+VW5sb2NrKCk7IH0KKworIHByaXZhdGU6CisgIE11dGV4KiBjb25zdCBtdXRl
eF87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhHVGVzdE11dGV4TG9jayk7
Cit9OworCit0eXBlZGVmIEdUZXN0TXV0ZXhMb2NrIE11dGV4TG9jazsKKworLy8gQmFzZSBjbGFz
cyBmb3IgVmFsdWVIb2xkZXI8VD4uICBBbGxvd3MgYSBjYWxsZXIgdG8gaG9sZCBhbmQgZGVsZXRl
IGEgdmFsdWUKKy8vIHdpdGhvdXQga25vd2luZyBpdHMgdHlwZS4KK2NsYXNzIFRocmVhZExvY2Fs
VmFsdWVIb2xkZXJCYXNlIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgflRocmVhZExvY2FsVmFsdWVI
b2xkZXJCYXNlKCkge30KK307CisKKy8vIFByb3ZpZGVzIGEgd2F5IGZvciBhIHRocmVhZCB0byBz
ZW5kIG5vdGlmaWNhdGlvbnMgdG8gYSBUaHJlYWRMb2NhbAorLy8gcmVnYXJkbGVzcyBvZiBpdHMg
cGFyYW1ldGVyIHR5cGUuCitjbGFzcyBUaHJlYWRMb2NhbEJhc2UgeworIHB1YmxpYzoKKyAgLy8g
Q3JlYXRlcyBhIG5ldyBWYWx1ZUhvbGRlcjxUPiBvYmplY3QgaG9sZGluZyBhIGRlZmF1bHQgdmFs
dWUgcGFzc2VkIHRvCisgIC8vIHRoaXMgVGhyZWFkTG9jYWw8VD4ncyBjb25zdHJ1Y3RvciBhbmQg
cmV0dXJucyBpdC4gIEl0IGlzIHRoZSBjYWxsZXIncworICAvLyByZXNwb25zaWJpbGl0eSBub3Qg
dG8gY2FsbCB0aGlzIHdoZW4gdGhlIFRocmVhZExvY2FsPFQ+IGluc3RhbmNlIGFscmVhZHkKKyAg
Ly8gaGFzIGEgdmFsdWUgb24gdGhlIGN1cnJlbnQgdGhyZWFkLgorICB2aXJ0dWFsIFRocmVhZExv
Y2FsVmFsdWVIb2xkZXJCYXNlKiBOZXdWYWx1ZUZvckN1cnJlbnRUaHJlYWQoKSBjb25zdCA9IDA7
CisKKyBwcm90ZWN0ZWQ6CisgIFRocmVhZExvY2FsQmFzZSgpIHt9CisgIHZpcnR1YWwgflRocmVh
ZExvY2FsQmFzZSgpIHt9CisKKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKFRocmVhZExvY2FsQmFzZSk7Cit9OworCisvLyBNYXBzIGEgdGhyZWFkIHRvIGEgc2V0
IG9mIFRocmVhZExvY2FscyB0aGF0IGhhdmUgdmFsdWVzIGluc3RhbnRpYXRlZCBvbiB0aGF0Cisv
LyB0aHJlYWQgYW5kIG5vdGlmaWVzIHRoZW0gd2hlbiB0aGUgdGhyZWFkIGV4aXRzLiAgQSBUaHJl
YWRMb2NhbCBpbnN0YW5jZSBpcworLy8gZXhwZWN0ZWQgdG8gcGVyc2lzdCB1bnRpbCBhbGwgdGhy
ZWFkcyBpdCBoYXMgdmFsdWVzIG9uIGhhdmUgdGVybWluYXRlZC4KK2NsYXNzIEdURVNUX0FQSV8g
VGhyZWFkTG9jYWxSZWdpc3RyeSB7CisgcHVibGljOgorICAvLyBSZWdpc3RlcnMgdGhyZWFkX2xv
Y2FsX2luc3RhbmNlIGFzIGhhdmluZyB2YWx1ZSBvbiB0aGUgY3VycmVudCB0aHJlYWQuCisgIC8v
IFJldHVybnMgYSB2YWx1ZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IHRoZSB0aHJlYWQg
ZnJvbSBvdGhlciB0aHJlYWRzLgorICBzdGF0aWMgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2Uq
IEdldFZhbHVlT25DdXJyZW50VGhyZWFkKAorICAgICAgY29uc3QgVGhyZWFkTG9jYWxCYXNlKiB0
aHJlYWRfbG9jYWxfaW5zdGFuY2UpOworCisgIC8vIEludm9rZWQgd2hlbiBhIFRocmVhZExvY2Fs
IGluc3RhbmNlIGlzIGRlc3Ryb3llZC4KKyAgc3RhdGljIHZvaWQgT25UaHJlYWRMb2NhbERlc3Ry
b3llZCgKKyAgICAgIGNvbnN0IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2FsX2luc3RhbmNl
KTsKK307CisKK2NsYXNzIEdURVNUX0FQSV8gVGhyZWFkV2l0aFBhcmFtQmFzZSB7CisgcHVibGlj
OgorICB2b2lkIEpvaW4oKTsKKworIHByb3RlY3RlZDoKKyAgY2xhc3MgUnVubmFibGUgeworICAg
cHVibGljOgorICAgIHZpcnR1YWwgflJ1bm5hYmxlKCkge30KKyAgICB2aXJ0dWFsIHZvaWQgUnVu
KCkgPSAwOworICB9OworCisgIFRocmVhZFdpdGhQYXJhbUJhc2UoUnVubmFibGUgKnJ1bm5hYmxl
LCBOb3RpZmljYXRpb24qIHRocmVhZF9jYW5fc3RhcnQpOworICB2aXJ0dWFsIH5UaHJlYWRXaXRo
UGFyYW1CYXNlKCk7CisKKyBwcml2YXRlOgorICBBdXRvSGFuZGxlIHRocmVhZF87Cit9OworCisv
LyBIZWxwZXIgY2xhc3MgZm9yIHRlc3RpbmcgR29vZ2xlIFRlc3QncyBtdWx0aS10aHJlYWRpbmcg
Y29uc3RydWN0cy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVGhyZWFkV2l0aFBhcmFt
IDogcHVibGljIFRocmVhZFdpdGhQYXJhbUJhc2UgeworIHB1YmxpYzoKKyAgdHlwZWRlZiB2b2lk
IFVzZXJUaHJlYWRGdW5jKFQpOworCisgIFRocmVhZFdpdGhQYXJhbShVc2VyVGhyZWFkRnVuYyog
ZnVuYywgVCBwYXJhbSwgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KQorICAgICAgOiBU
aHJlYWRXaXRoUGFyYW1CYXNlKG5ldyBSdW5uYWJsZUltcGwoZnVuYywgcGFyYW0pLCB0aHJlYWRf
Y2FuX3N0YXJ0KSB7CisgIH0KKyAgdmlydHVhbCB+VGhyZWFkV2l0aFBhcmFtKCkge30KKworIHBy
aXZhdGU6CisgIGNsYXNzIFJ1bm5hYmxlSW1wbCA6IHB1YmxpYyBSdW5uYWJsZSB7CisgICBwdWJs
aWM6CisgICAgUnVubmFibGVJbXBsKFVzZXJUaHJlYWRGdW5jKiBmdW5jLCBUIHBhcmFtKQorICAg
ICAgICA6IGZ1bmNfKGZ1bmMpLAorICAgICAgICAgIHBhcmFtXyhwYXJhbSkgeworICAgIH0KKyAg
ICB2aXJ0dWFsIH5SdW5uYWJsZUltcGwoKSB7fQorICAgIHZpcnR1YWwgdm9pZCBSdW4oKSB7Cisg
ICAgICBmdW5jXyhwYXJhbV8pOworICAgIH0KKworICAgcHJpdmF0ZToKKyAgICBVc2VyVGhyZWFk
RnVuYyogY29uc3QgZnVuY187CisgICAgY29uc3QgVCBwYXJhbV87CisKKyAgICBHVEVTVF9ESVNB
TExPV19DT1BZX0FORF9BU1NJR05fKFJ1bm5hYmxlSW1wbCk7CisgIH07CisKKyAgR1RFU1RfRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJlYWRXaXRoUGFyYW0pOworfTsKKworLy8gSW1wbGVt
ZW50cyB0aHJlYWQtbG9jYWwgc3RvcmFnZSBvbiBXaW5kb3dzIHN5c3RlbXMuCiAvLwotLy8gWW91
IGNhbiBmb3J3YXJkIGRlY2xhcmUgYSBzdGF0aWMgbXV0ZXggbGlrZSB0aGlzOgorLy8gICAvLyBU
aHJlYWQgMQorLy8gICBUaHJlYWRMb2NhbDxpbnQ+IHRsKDEwMCk7ICAvLyAxMDAgaXMgdGhlIGRl
ZmF1bHQgdmFsdWUgZm9yIGVhY2ggdGhyZWFkLgogLy8KLS8vICAgR1RFU1RfREVDTEFSRV9TVEFU
SUNfTVVURVhfKGdfc29tZV9tdXRleCk7CisvLyAgIC8vIFRocmVhZCAyCisvLyAgIHRsLnNldCgx
NTApOyAgLy8gQ2hhbmdlcyB0aGUgdmFsdWUgZm9yIHRocmVhZCAyIG9ubHkuCisvLyAgIEVYUEVD
VF9FUSgxNTAsIHRsLmdldCgpKTsKIC8vCi0vLyBUbyBjcmVhdGUgYSBkeW5hbWljIG11dGV4LCBq
dXN0IGRlZmluZSBhbiBvYmplY3Qgb2YgdHlwZSBNdXRleC4KKy8vICAgLy8gVGhyZWFkIDEKKy8v
ICAgRVhQRUNUX0VRKDEwMCwgdGwuZ2V0KCkpOyAgLy8gSW4gdGhyZWFkIDEsIHRsIGhhcyB0aGUg
b3JpZ2luYWwgdmFsdWUuCisvLyAgIHRsLnNldCgyMDApOworLy8gICBFWFBFQ1RfRVEoMjAwLCB0
bC5nZXQoKSk7CisvLworLy8gVGhlIHRlbXBsYXRlIHR5cGUgYXJndW1lbnQgVCBtdXN0IGhhdmUg
YSBwdWJsaWMgY29weSBjb25zdHJ1Y3Rvci4KKy8vIEluIGFkZGl0aW9uLCB0aGUgZGVmYXVsdCBU
aHJlYWRMb2NhbCBjb25zdHJ1Y3RvciByZXF1aXJlcyBUIHRvIGhhdmUKKy8vIGEgcHVibGljIGRl
ZmF1bHQgY29uc3RydWN0b3IuCisvLworLy8gVGhlIHVzZXJzIG9mIGEgVGhlYWRMb2NhbCBpbnN0
YW5jZSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IGFsbCBidXQgb25lCisvLyB0aHJlYWRzIChpbmNs
dWRpbmcgdGhlIG1haW4gb25lKSB1c2luZyB0aGF0IGluc3RhbmNlIGhhdmUgZXhpdGVkIGJlZm9y
ZQorLy8gZGVzdHJveWluZyBpdC4gT3RoZXJ3aXNlLCB0aGUgcGVyLXRocmVhZCBvYmplY3RzIG1h
bmFnZWQgZm9yIHRoZW0gYnkgdGhlCisvLyBUaHJlYWRMb2NhbCBpbnN0YW5jZSBhcmUgbm90IGd1
YXJhbnRlZWQgdG8gYmUgZGVzdHJveWVkIG9uIGFsbCBwbGF0Zm9ybXMuCisvLworLy8gR29vZ2xl
IFRlc3Qgb25seSB1c2VzIGdsb2JhbCBUaHJlYWRMb2NhbCBvYmplY3RzLiAgVGhhdCBtZWFucyB0
aGV5CisvLyB3aWxsIGRpZSBhZnRlciBtYWluKCkgaGFzIHJldHVybmVkLiAgVGhlcmVmb3JlLCBu
byBwZXItdGhyZWFkCisvLyBvYmplY3QgbWFuYWdlZCBieSBHb29nbGUgVGVzdCB3aWxsIGJlIGxl
YWtlZCBhcyBsb25nIGFzIGFsbCB0aHJlYWRzCisvLyB1c2luZyBHb29nbGUgVGVzdCBoYXZlIGV4
aXRlZCB3aGVuIG1haW4oKSByZXR1cm5zLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBU
aHJlYWRMb2NhbCA6IHB1YmxpYyBUaHJlYWRMb2NhbEJhc2UgeworIHB1YmxpYzoKKyAgVGhyZWFk
TG9jYWwoKSA6IGRlZmF1bHRfZmFjdG9yeV8obmV3IERlZmF1bHRWYWx1ZUhvbGRlckZhY3Rvcnko
KSkge30KKyAgZXhwbGljaXQgVGhyZWFkTG9jYWwoY29uc3QgVCYgdmFsdWUpCisgICAgICA6IGRl
ZmF1bHRfZmFjdG9yeV8obmV3IEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5KHZhbHVlKSkge30K
KworICB+VGhyZWFkTG9jYWwoKSB7IFRocmVhZExvY2FsUmVnaXN0cnk6Ok9uVGhyZWFkTG9jYWxE
ZXN0cm95ZWQodGhpcyk7IH0KKworICBUKiBwb2ludGVyKCkgeyByZXR1cm4gR2V0T3JDcmVhdGVW
YWx1ZSgpOyB9CisgIGNvbnN0IFQqIHBvaW50ZXIoKSBjb25zdCB7IHJldHVybiBHZXRPckNyZWF0
ZVZhbHVlKCk7IH0KKyAgY29uc3QgVCYgZ2V0KCkgY29uc3QgeyByZXR1cm4gKnBvaW50ZXIoKTsg
fQorICB2b2lkIHNldChjb25zdCBUJiB2YWx1ZSkgeyAqcG9pbnRlcigpID0gdmFsdWU7IH0KKwor
IHByaXZhdGU6CisgIC8vIEhvbGRzIGEgdmFsdWUgb2YgVC4gIENhbiBiZSBkZWxldGVkIHZpYSBp
dHMgYmFzZSBjbGFzcyB3aXRob3V0IHRoZSBjYWxsZXIKKyAgLy8ga25vd2luZyB0aGUgdHlwZSBv
ZiBULgorICBjbGFzcyBWYWx1ZUhvbGRlciA6IHB1YmxpYyBUaHJlYWRMb2NhbFZhbHVlSG9sZGVy
QmFzZSB7CisgICBwdWJsaWM6CisgICAgVmFsdWVIb2xkZXIoKSA6IHZhbHVlXygpIHt9CisgICAg
ZXhwbGljaXQgVmFsdWVIb2xkZXIoY29uc3QgVCYgdmFsdWUpIDogdmFsdWVfKHZhbHVlKSB7fQor
CisgICAgVCogcG9pbnRlcigpIHsgcmV0dXJuICZ2YWx1ZV87IH0KKworICAgcHJpdmF0ZToKKyAg
ICBUIHZhbHVlXzsKKyAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFZhbHVlSG9s
ZGVyKTsKKyAgfTsKKworCisgIFQqIEdldE9yQ3JlYXRlVmFsdWUoKSBjb25zdCB7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFZhbHVlSG9sZGVyKj4oCisgICAgICAgIFRocmVhZExvY2FsUmVnaXN0
cnk6OkdldFZhbHVlT25DdXJyZW50VGhyZWFkKHRoaXMpKS0+cG9pbnRlcigpOworICB9CisKKyAg
dmlydHVhbCBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogTmV3VmFsdWVGb3JDdXJyZW50VGhy
ZWFkKCkgY29uc3QgeworICAgIHJldHVybiBkZWZhdWx0X2ZhY3RvcnlfLT5NYWtlTmV3SG9sZGVy
KCk7CisgIH0KKworICBjbGFzcyBWYWx1ZUhvbGRlckZhY3RvcnkgeworICAgcHVibGljOgorICAg
IFZhbHVlSG9sZGVyRmFjdG9yeSgpIHt9CisgICAgdmlydHVhbCB+VmFsdWVIb2xkZXJGYWN0b3J5
KCkge30KKyAgICB2aXJ0dWFsIFZhbHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkgY29uc3QgPSAw
OworCisgICBwcml2YXRlOgorICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVmFs
dWVIb2xkZXJGYWN0b3J5KTsKKyAgfTsKKworICBjbGFzcyBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0
b3J5IDogcHVibGljIFZhbHVlSG9sZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAgRGVmYXVs
dFZhbHVlSG9sZGVyRmFjdG9yeSgpIHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRlciogTWFrZU5l
d0hvbGRlcigpIGNvbnN0IHsgcmV0dXJuIG5ldyBWYWx1ZUhvbGRlcigpOyB9CisKKyAgIHByaXZh
dGU6CisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhEZWZhdWx0VmFsdWVIb2xk
ZXJGYWN0b3J5KTsKKyAgfTsKKworICBjbGFzcyBJbnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeSA6
IHB1YmxpYyBWYWx1ZUhvbGRlckZhY3RvcnkgeworICAgcHVibGljOgorICAgIGV4cGxpY2l0IElu
c3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5KGNvbnN0IFQmIHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkg
e30KKyAgICB2aXJ0dWFsIFZhbHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkgY29uc3QgeworICAg
ICAgcmV0dXJuIG5ldyBWYWx1ZUhvbGRlcih2YWx1ZV8pOworICAgIH0KKworICAgcHJpdmF0ZToK
KyAgICBjb25zdCBUIHZhbHVlXzsgIC8vIFRoZSB2YWx1ZSBmb3IgZWFjaCB0aHJlYWQuCisKKyAg
ICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0
b3J5KTsKKyAgfTsKKworICBzY29wZWRfcHRyPFZhbHVlSG9sZGVyRmFjdG9yeT4gZGVmYXVsdF9m
YWN0b3J5XzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRocmVhZExvY2Fs
KTsKK307CisKKyMgZWxpZiBHVEVTVF9IQVNfUFRIUkVBRAorCisvLyBNdXRleEJhc2UgYW5kIE11
dGV4IGltcGxlbWVudCBtdXRleCBvbiBwdGhyZWFkcy1iYXNlZCBwbGF0Zm9ybXMuCiBjbGFzcyBN
dXRleEJhc2UgewogIHB1YmxpYzoKICAgLy8gQWNxdWlyZXMgdGhpcyBtdXRleC4KICAgdm9pZCBM
b2NrKCkgewogICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhfbG9j
aygmbXV0ZXhfKSk7CiAgICAgb3duZXJfID0gcHRocmVhZF9zZWxmKCk7CisgICAgaGFzX293bmVy
XyA9IHRydWU7CiAgIH0KIAogICAvLyBSZWxlYXNlcyB0aGlzIG11dGV4LgogICB2b2lkIFVubG9j
aygpIHsKLSAgICAvLyBXZSBkb24ndCBwcm90ZWN0IHdyaXRpbmcgdG8gb3duZXJfIGhlcmUsIGFz
IGl0J3MgdGhlIGNhbGxlcidzCi0gICAgLy8gcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoYXQg
dGhlIGN1cnJlbnQgdGhyZWFkIGhvbGRzIHRoZQorICAgIC8vIFNpbmNlIHRoZSBsb2NrIGlzIGJl
aW5nIHJlbGVhc2VkIHRoZSBvd25lcl8gZmllbGQgc2hvdWxkIG5vIGxvbmdlciBiZQorICAgIC8v
IGNvbnNpZGVyZWQgdmFsaWQuIFdlIGRvbid0IHByb3RlY3Qgd3JpdGluZyB0byBoYXNfb3duZXJf
IGhlcmUsIGFzIGl0J3MKKyAgICAvLyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZW5z
dXJlIHRoYXQgdGhlIGN1cnJlbnQgdGhyZWFkIGhvbGRzIHRoZQogICAgIC8vIG11dGV4IHdoZW4g
dGhpcyBpcyBjYWxsZWQuCi0gICAgb3duZXJfID0gMDsKKyAgICBoYXNfb3duZXJfID0gZmFsc2U7
CiAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF91bmxvY2soJm11
dGV4XykpOwogICB9CiAKICAgLy8gRG9lcyBub3RoaW5nIGlmIHRoZSBjdXJyZW50IHRocmVhZCBo
b2xkcyB0aGUgbXV0ZXguIE90aGVyd2lzZSwgY3Jhc2hlcwogICAvLyB3aXRoIGhpZ2ggcHJvYmFi
aWxpdHkuCiAgIHZvaWQgQXNzZXJ0SGVsZCgpIGNvbnN0IHsKLSAgICBHVEVTVF9DSEVDS18ob3du
ZXJfID09IHB0aHJlYWRfc2VsZigpKQorICAgIEdURVNUX0NIRUNLXyhoYXNfb3duZXJfICYmIHB0
aHJlYWRfZXF1YWwob3duZXJfLCBwdGhyZWFkX3NlbGYoKSkpCiAgICAgICAgIDw8ICJUaGUgY3Vy
cmVudCB0aHJlYWQgaXMgbm90IGhvbGRpbmcgdGhlIG11dGV4IEAiIDw8IHRoaXM7CiAgIH0KIApA
QCAtMTA0NiwxNiArMjA4NywyOCBAQCBjbGFzcyBNdXRleEJhc2UgewogICAvLyBoYXZlIHRvIGJl
IHB1YmxpYy4KICBwdWJsaWM6CiAgIHB0aHJlYWRfbXV0ZXhfdCBtdXRleF87ICAvLyBUaGUgdW5k
ZXJseWluZyBwdGhyZWFkIG11dGV4LgotICBwdGhyZWFkX3Qgb3duZXJfOyAgLy8gVGhlIHRocmVh
ZCBob2xkaW5nIHRoZSBtdXRleDsgMCBtZWFucyBubyBvbmUgaG9sZHMgaXQuCisgIC8vIGhhc19v
d25lcl8gaW5kaWNhdGVzIHdoZXRoZXIgdGhlIG93bmVyXyBmaWVsZCBiZWxvdyBjb250YWlucyBh
IHZhbGlkIHRocmVhZAorICAvLyBJRCBhbmQgaXMgdGhlcmVmb3JlIHNhZmUgdG8gaW5zcGVjdCAo
ZS5nLiwgdG8gdXNlIGluIHB0aHJlYWRfZXF1YWwoKSkuIEFsbAorICAvLyBhY2Nlc3NlcyB0byB0
aGUgb3duZXJfIGZpZWxkIHNob3VsZCBiZSBwcm90ZWN0ZWQgYnkgYSBjaGVjayBvZiB0aGlzIGZp
ZWxkLgorICAvLyBBbiBhbHRlcm5hdGl2ZSBtaWdodCBiZSB0byBtZW1zZXQoKSBvd25lcl8gdG8g
YWxsIHplcm9zLCBidXQgdGhlcmUncyBubworICAvLyBndWFyYW50ZWUgdGhhdCBhIHplcm8nZCBw
dGhyZWFkX3QgaXMgbmVjZXNzYXJpbHkgaW52YWxpZCBvciBldmVuIGRpZmZlcmVudAorICAvLyBm
cm9tIHB0aHJlYWRfc2VsZigpLgorICBib29sIGhhc19vd25lcl87CisgIHB0aHJlYWRfdCBvd25l
cl87ICAvLyBUaGUgdGhyZWFkIGhvbGRpbmcgdGhlIG11dGV4LgogfTsKIAogLy8gRm9yd2FyZC1k
ZWNsYXJlcyBhIHN0YXRpYyBtdXRleC4KLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVU
RVhfKG11dGV4KSBcCi0gICAgZXh0ZXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4QmFzZSBt
dXRleAorIyAgZGVmaW5lIEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRleCkgXAorICAg
ICBleHRlcm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXhCYXNlIG11dGV4CiAKIC8vIERlZmlu
ZXMgYW5kIHN0YXRpY2FsbHkgKGkuZS4gYXQgbGluayB0aW1lKSBpbml0aWFsaXplcyBhIHN0YXRp
YyBtdXRleC4KKy8vIFRoZSBpbml0aWFsaXphdGlvbiBsaXN0IGhlcmUgZG9lcyBub3QgZXhwbGlj
aXRseSBpbml0aWFsaXplIGVhY2ggZmllbGQsCisvLyBpbnN0ZWFkIHJlbHlpbmcgb24gZGVmYXVs
dCBpbml0aWFsaXphdGlvbiBmb3IgdGhlIHVuc3BlY2lmaWVkIGZpZWxkcy4gSW4KKy8vIHBhcnRp
Y3VsYXIsIHRoZSBvd25lcl8gZmllbGQgKGEgcHRocmVhZF90KSBpcyBub3QgZXhwbGljaXRseSBp
bml0aWFsaXplZC4KKy8vIFRoaXMgYWxsb3dzIGluaXRpYWxpemF0aW9uIHRvIHdvcmsgd2hldGhl
ciBwdGhyZWFkX3QgaXMgYSBzY2FsYXIgb3Igc3RydWN0LgorLy8gVGhlIGZsYWcgLVdtaXNzaW5n
LWZpZWxkLWluaXRpYWxpemVycyBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgZm9yIHRoaXMgdG8gd29y
ay4KICNkZWZpbmUgR1RFU1RfREVGSU5FX1NUQVRJQ19NVVRFWF8obXV0ZXgpIFwKLSAgICA6OnRl
c3Rpbmc6OmludGVybmFsOjpNdXRleEJhc2UgbXV0ZXggPSB7IFBUSFJFQURfTVVURVhfSU5JVElB
TElaRVIsIDAgfQorICA6OnRlc3Rpbmc6OmludGVybmFsOjpNdXRleEJhc2UgbXV0ZXggPSB7UFRI
UkVBRF9NVVRFWF9JTklUSUFMSVpFUiwgZmFsc2UsIDB9CiAKIC8vIFRoZSBNdXRleCBjbGFzcyBj
YW4gb25seSBiZSB1c2VkIGZvciBtdXRleGVzIGNyZWF0ZWQgYXQgcnVudGltZS4gSXQKIC8vIHNo
YXJlcyBpdHMgQVBJIHdpdGggTXV0ZXhCYXNlIG90aGVyd2lzZS4KQEAgLTEwNjMsNyArMjExNiw3
IEBAIGNsYXNzIE11dGV4IDogcHVibGljIE11dGV4QmFzZSB7CiAgcHVibGljOgogICBNdXRleCgp
IHsKICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4X2luaXQoJm11
dGV4XywgTlVMTCkpOwotICAgIG93bmVyXyA9IDA7CisgICAgaGFzX293bmVyXyA9IGZhbHNlOwog
ICB9CiAgIH5NdXRleCgpIHsKICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFk
X211dGV4X2Rlc3Ryb3koJm11dGV4XykpOwpAQCAtMTA3Myw5ICsyMTI2LDExIEBAIGNsYXNzIE11
dGV4IDogcHVibGljIE11dGV4QmFzZSB7CiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oTXV0ZXgpOwogfTsKIAotLy8gV2UgY2Fubm90IG5hbWUgdGhpcyBjbGFzcyBNdXRleExvY2sg
YXMgdGhlIGN0b3IgZGVjbGFyYXRpb24gd291bGQKKy8vIFdlIGNhbm5vdCBuYW1lIHRoaXMgY2xh
c3MgTXV0ZXhMb2NrIGJlY2F1c2UgdGhlIGN0b3IgZGVjbGFyYXRpb24gd291bGQKIC8vIGNvbmZs
aWN0IHdpdGggYSBtYWNybyBuYW1lZCBNdXRleExvY2ssIHdoaWNoIGlzIGRlZmluZWQgb24gc29t
ZQotLy8gcGxhdGZvcm1zLiAgSGVuY2UgdGhlIHR5cGVkZWYgdHJpY2sgYmVsb3cuCisvLyBwbGF0
Zm9ybXMuIFRoYXQgbWFjcm8gaXMgdXNlZCBhcyBhIGRlZmVuc2l2ZSBtZWFzdXJlIHRvIHByZXZl
bnQgYWdhaW5zdAorLy8gaW5hZHZlcnRlbnQgbWlzdXNlcyBvZiBNdXRleExvY2sgbGlrZSAiTXV0
ZXhMb2NrKCZtdSkiIHJhdGhlciB0aGFuCisvLyAiTXV0ZXhMb2NrIGwoJm11KSIuICBIZW5jZSB0
aGUgdHlwZWRlZiB0cmljayBiZWxvdy4KIGNsYXNzIEdUZXN0TXV0ZXhMb2NrIHsKICBwdWJsaWM6
CiAgIGV4cGxpY2l0IEdUZXN0TXV0ZXhMb2NrKE11dGV4QmFzZSogbXV0ZXgpCkBAIC0xMTA5LDQx
ICsyMTY0LDE0IEBAIGV4dGVybiAiQyIgaW5saW5lIHZvaWQgRGVsZXRlVGhyZWFkTG9jYWxWYWx1
ZSh2b2lkKiB2YWx1ZV9ob2xkZXIpIHsKIH0KIAogLy8gSW1wbGVtZW50cyB0aHJlYWQtbG9jYWwg
c3RvcmFnZSBvbiBwdGhyZWFkcy1iYXNlZCBzeXN0ZW1zLgotLy8KLS8vICAgLy8gVGhyZWFkIDEK
LS8vICAgVGhyZWFkTG9jYWw8aW50PiB0bCgxMDApOyAgLy8gMTAwIGlzIHRoZSBkZWZhdWx0IHZh
bHVlIGZvciBlYWNoIHRocmVhZC4KLS8vCi0vLyAgIC8vIFRocmVhZCAyCi0vLyAgIHRsLnNldCgx
NTApOyAgLy8gQ2hhbmdlcyB0aGUgdmFsdWUgZm9yIHRocmVhZCAyIG9ubHkuCi0vLyAgIEVYUEVD
VF9FUSgxNTAsIHRsLmdldCgpKTsKLS8vCi0vLyAgIC8vIFRocmVhZCAxCi0vLyAgIEVYUEVDVF9F
USgxMDAsIHRsLmdldCgpKTsgIC8vIEluIHRocmVhZCAxLCB0bCBoYXMgdGhlIG9yaWdpbmFsIHZh
bHVlLgotLy8gICB0bC5zZXQoMjAwKTsKLS8vICAgRVhQRUNUX0VRKDIwMCwgdGwuZ2V0KCkpOwot
Ly8KLS8vIFRoZSB0ZW1wbGF0ZSB0eXBlIGFyZ3VtZW50IFQgbXVzdCBoYXZlIGEgcHVibGljIGNv
cHkgY29uc3RydWN0b3IuCi0vLyBJbiBhZGRpdGlvbiwgdGhlIGRlZmF1bHQgVGhyZWFkTG9jYWwg
Y29uc3RydWN0b3IgcmVxdWlyZXMgVCB0byBoYXZlCi0vLyBhIHB1YmxpYyBkZWZhdWx0IGNvbnN0
cnVjdG9yLgotLy8KLS8vIEFuIG9iamVjdCBtYW5hZ2VkIGZvciBhIHRocmVhZCBieSBhIFRocmVh
ZExvY2FsIGluc3RhbmNlIGlzIGRlbGV0ZWQKLS8vIHdoZW4gdGhlIHRocmVhZCBleGl0cy4gIE9y
LCBpZiB0aGUgVGhyZWFkTG9jYWwgaW5zdGFuY2UgZGllcyBpbgotLy8gdGhhdCB0aHJlYWQsIHdo
ZW4gdGhlIFRocmVhZExvY2FsIGRpZXMuICBJdCdzIHRoZSB1c2VyJ3MKLS8vIHJlc3BvbnNpYmls
aXR5IHRvIGVuc3VyZSB0aGF0IGFsbCBvdGhlciB0aHJlYWRzIHVzaW5nIGEgVGhyZWFkTG9jYWwK
LS8vIGhhdmUgZXhpdGVkIHdoZW4gaXQgZGllcywgb3IgdGhlIHBlci10aHJlYWQgb2JqZWN0cyBm
b3IgdGhvc2UKLS8vIHRocmVhZHMgd2lsbCBub3QgYmUgZGVsZXRlZC4KLS8vCi0vLyBHb29nbGUg
VGVzdCBvbmx5IHVzZXMgZ2xvYmFsIFRocmVhZExvY2FsIG9iamVjdHMuICBUaGF0IG1lYW5zIHRo
ZXkKLS8vIHdpbGwgZGllIGFmdGVyIG1haW4oKSBoYXMgcmV0dXJuZWQuICBUaGVyZWZvcmUsIG5v
IHBlci10aHJlYWQKLS8vIG9iamVjdCBtYW5hZ2VkIGJ5IEdvb2dsZSBUZXN0IHdpbGwgYmUgbGVh
a2VkIGFzIGxvbmcgYXMgYWxsIHRocmVhZHMKLS8vIHVzaW5nIEdvb2dsZSBUZXN0IGhhdmUgZXhp
dGVkIHdoZW4gbWFpbigpIHJldHVybnMuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFRo
cmVhZExvY2FsIHsKK2NsYXNzIEdURVNUX0FQSV8gVGhyZWFkTG9jYWwgewogIHB1YmxpYzoKLSAg
VGhyZWFkTG9jYWwoKSA6IGtleV8oQ3JlYXRlS2V5KCkpLAotICAgICAgICAgICAgICAgICAgZGVm
YXVsdF8oKSB7fQotICBleHBsaWNpdCBUaHJlYWRMb2NhbChjb25zdCBUJiB2YWx1ZSkgOiBrZXlf
KENyZWF0ZUtleSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdF8odmFsdWUpIHt9CisgIFRocmVhZExvY2FsKCkKKyAgICAgIDoga2V5XyhDcmVhdGVL
ZXkoKSksIGRlZmF1bHRfZmFjdG9yeV8obmV3IERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkoKSkg
e30KKyAgZXhwbGljaXQgVGhyZWFkTG9jYWwoY29uc3QgVCYgdmFsdWUpCisgICAgICA6IGtleV8o
Q3JlYXRlS2V5KCkpLAorICAgICAgICBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBJbnN0YW5jZVZhbHVl
SG9sZGVyRmFjdG9yeSh2YWx1ZSkpIHt9CiAKICAgflRocmVhZExvY2FsKCkgewogICAgIC8vIERl
c3Ryb3lzIHRoZSBtYW5hZ2VkIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkLCBpZiBhbnku
CkBAIC0xMTYzLDYgKzIxOTEsNyBAQCBjbGFzcyBUaHJlYWRMb2NhbCB7CiAgIC8vIEhvbGRzIGEg
dmFsdWUgb2YgdHlwZSBULgogICBjbGFzcyBWYWx1ZUhvbGRlciA6IHB1YmxpYyBUaHJlYWRMb2Nh
bFZhbHVlSG9sZGVyQmFzZSB7CiAgICBwdWJsaWM6CisgICAgVmFsdWVIb2xkZXIoKSA6IHZhbHVl
XygpIHt9CiAgICAgZXhwbGljaXQgVmFsdWVIb2xkZXIoY29uc3QgVCYgdmFsdWUpIDogdmFsdWVf
KHZhbHVlKSB7fQogCiAgICAgVCogcG9pbnRlcigpIHsgcmV0dXJuICZ2YWx1ZV87IH0KQEAgLTEx
ODgsMjIgKzIyMTcsNTQgQEAgY2xhc3MgVGhyZWFkTG9jYWwgewogICAgICAgcmV0dXJuIENoZWNr
ZWREb3duY2FzdFRvQWN0dWFsVHlwZTxWYWx1ZUhvbGRlcj4oaG9sZGVyKS0+cG9pbnRlcigpOwog
ICAgIH0KIAotICAgIFZhbHVlSG9sZGVyKiBjb25zdCBuZXdfaG9sZGVyID0gbmV3IFZhbHVlSG9s
ZGVyKGRlZmF1bHRfKTsKKyAgICBWYWx1ZUhvbGRlciogY29uc3QgbmV3X2hvbGRlciA9IGRlZmF1
bHRfZmFjdG9yeV8tPk1ha2VOZXdIb2xkZXIoKTsKICAgICBUaHJlYWRMb2NhbFZhbHVlSG9sZGVy
QmFzZSogY29uc3QgaG9sZGVyX2Jhc2UgPSBuZXdfaG9sZGVyOwogICAgIEdURVNUX0NIRUNLX1BP
U0lYX1NVQ0NFU1NfKHB0aHJlYWRfc2V0c3BlY2lmaWMoa2V5XywgaG9sZGVyX2Jhc2UpKTsKICAg
ICByZXR1cm4gbmV3X2hvbGRlci0+cG9pbnRlcigpOwogICB9CiAKKyAgY2xhc3MgVmFsdWVIb2xk
ZXJGYWN0b3J5IHsKKyAgIHB1YmxpYzoKKyAgICBWYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAg
IHZpcnR1YWwgflZhbHVlSG9sZGVyRmFjdG9yeSgpIHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRl
ciogTWFrZU5ld0hvbGRlcigpIGNvbnN0ID0gMDsKKworICAgcHJpdmF0ZToKKyAgICBHVEVTVF9E
SVNBTExPV19DT1BZX0FORF9BU1NJR05fKFZhbHVlSG9sZGVyRmFjdG9yeSk7CisgIH07CisKKyAg
Y2xhc3MgRGVmYXVsdFZhbHVlSG9sZGVyRmFjdG9yeSA6IHB1YmxpYyBWYWx1ZUhvbGRlckZhY3Rv
cnkgeworICAgcHVibGljOgorICAgIERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAg
IHZpcnR1YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCB7IHJldHVybiBuZXcg
VmFsdWVIb2xkZXIoKTsgfQorCisgICBwcml2YXRlOgorICAgIEdURVNUX0RJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTl8oRGVmYXVsdFZhbHVlSG9sZGVyRmFjdG9yeSk7CisgIH07CisKKyAgY2xhc3Mg
SW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkgOiBwdWJsaWMgVmFsdWVIb2xkZXJGYWN0b3J5IHsK
KyAgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBJbnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeShjb25z
dCBUJiB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRlciog
TWFrZU5ld0hvbGRlcigpIGNvbnN0IHsKKyAgICAgIHJldHVybiBuZXcgVmFsdWVIb2xkZXIodmFs
dWVfKTsKKyAgICB9CisKKyAgIHByaXZhdGU6CisgICAgY29uc3QgVCB2YWx1ZV87ICAvLyBUaGUg
dmFsdWUgZm9yIGVhY2ggdGhyZWFkLgorCisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOXyhJbnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeSk7CisgIH07CisKICAgLy8gQSBrZXkgcHRo
cmVhZHMgdXNlcyBmb3IgbG9va2luZyB1cCBwZXItdGhyZWFkIHZhbHVlcy4KICAgY29uc3QgcHRo
cmVhZF9rZXlfdCBrZXlfOwotICBjb25zdCBUIGRlZmF1bHRfOyAgLy8gVGhlIGRlZmF1bHQgdmFs
dWUgZm9yIGVhY2ggdGhyZWFkLgorICBzY29wZWRfcHRyPFZhbHVlSG9sZGVyRmFjdG9yeT4gZGVm
YXVsdF9mYWN0b3J5XzsKIAogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRocmVh
ZExvY2FsKTsKIH07CiAKLSNkZWZpbmUgR1RFU1RfSVNfVEhSRUFEU0FGRSAxCisjIGVuZGlmICAv
LyBHVEVTVF9IQVNfTVVURVhfQU5EX1RIUkVBRF9MT0NBTF8KIAotI2Vsc2UgIC8vIEdURVNUX0hB
U19QVEhSRUFECisjZWxzZSAgLy8gR1RFU1RfSVNfVEhSRUFEU0FGRQogCiAvLyBBIGR1bW15IGlt
cGxlbWVudGF0aW9uIG9mIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIChtdXRleCwgbG9jaywK
IC8vIGFuZCB0aHJlYWQtbG9jYWwgdmFyaWFibGUpLiAgTmVjZXNzYXJ5IGZvciBjb21waWxpbmcg
R29vZ2xlIFRlc3Qgd2hlcmUKQEAgLTEyMTMsMTQgKzIyNzQsMjEgQEAgY2xhc3MgVGhyZWFkTG9j
YWwgewogY2xhc3MgTXV0ZXggewogIHB1YmxpYzoKICAgTXV0ZXgoKSB7fQorICB2b2lkIExvY2so
KSB7fQorICB2b2lkIFVubG9jaygpIHt9CiAgIHZvaWQgQXNzZXJ0SGVsZCgpIGNvbnN0IHt9CiB9
OwogCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRleCkgXAorIyBkZWZp
bmUgR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVURVhfKG11dGV4KSBcCiAgIGV4dGVybiA6OnRlc3Rp
bmc6OmludGVybmFsOjpNdXRleCBtdXRleAogCi0jZGVmaW5lIEdURVNUX0RFRklORV9TVEFUSUNf
TVVURVhfKG11dGV4KSA6OnRlc3Rpbmc6OmludGVybmFsOjpNdXRleCBtdXRleAorIyBkZWZpbmUg
R1RFU1RfREVGSU5FX1NUQVRJQ19NVVRFWF8obXV0ZXgpIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11
dGV4IG11dGV4CiAKKy8vIFdlIGNhbm5vdCBuYW1lIHRoaXMgY2xhc3MgTXV0ZXhMb2NrIGJlY2F1
c2UgdGhlIGN0b3IgZGVjbGFyYXRpb24gd291bGQKKy8vIGNvbmZsaWN0IHdpdGggYSBtYWNybyBu
YW1lZCBNdXRleExvY2ssIHdoaWNoIGlzIGRlZmluZWQgb24gc29tZQorLy8gcGxhdGZvcm1zLiBU
aGF0IG1hY3JvIGlzIHVzZWQgYXMgYSBkZWZlbnNpdmUgbWVhc3VyZSB0byBwcmV2ZW50IGFnYWlu
c3QKKy8vIGluYWR2ZXJ0ZW50IG1pc3VzZXMgb2YgTXV0ZXhMb2NrIGxpa2UgIk11dGV4TG9jaygm
bXUpIiByYXRoZXIgdGhhbgorLy8gIk11dGV4TG9jayBsKCZtdSkiLiAgSGVuY2UgdGhlIHR5cGVk
ZWYgdHJpY2sgYmVsb3cuCiBjbGFzcyBHVGVzdE11dGV4TG9jayB7CiAgcHVibGljOgogICBleHBs
aWNpdCBHVGVzdE11dGV4TG9jayhNdXRleCopIHt9ICAvLyBOT0xJTlQKQEAgLTEyMjksNyArMjI5
Nyw3IEBAIGNsYXNzIEdUZXN0TXV0ZXhMb2NrIHsKIHR5cGVkZWYgR1Rlc3RNdXRleExvY2sgTXV0
ZXhMb2NrOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFRocmVhZExvY2FsIHsKK2Ns
YXNzIEdURVNUX0FQSV8gVGhyZWFkTG9jYWwgewogIHB1YmxpYzoKICAgVGhyZWFkTG9jYWwoKSA6
IHZhbHVlXygpIHt9CiAgIGV4cGxpY2l0IFRocmVhZExvY2FsKGNvbnN0IFQmIHZhbHVlKSA6IHZh
bHVlXyh2YWx1ZSkge30KQEAgLTEyNDEsMjggKzIzMDksMjUgQEAgY2xhc3MgVGhyZWFkTG9jYWwg
ewogICBUIHZhbHVlXzsKIH07CiAKLS8vIFRoZSBhYm92ZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0
aXZlcyBoYXZlIGR1bW15IGltcGxlbWVudGF0aW9ucy4KLS8vIFRoZXJlZm9yZSBHb29nbGUgVGVz
dCBpcyBub3QgdGhyZWFkLXNhZmUuCi0jZGVmaW5lIEdURVNUX0lTX1RIUkVBRFNBRkUgMAotCi0j
ZW5kaWYgIC8vIEdURVNUX0hBU19QVEhSRUFECisjZW5kaWYgIC8vIEdURVNUX0lTX1RIUkVBRFNB
RkUKIAogLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHRocmVhZHMgcnVubmluZyBpbiB0aGUgcHJv
Y2Vzcywgb3IgMCB0byBpbmRpY2F0ZSB0aGF0CiAvLyB3ZSBjYW5ub3QgZGV0ZWN0IGl0LgogR1RF
U1RfQVBJXyBzaXplX3QgR2V0VGhyZWFkQ291bnQoKTsKIAogLy8gUGFzc2luZyBub24tUE9EIGNs
YXNzZXMgdGhyb3VnaCBlbGxpcHNpcyAoLi4uKSBjcmFzaGVzIHRoZSBBUk0KLS8vIGNvbXBpbGVy
IGFuZCBnZW5lcmF0ZXMgYSB3YXJuaW5nIGluIFN1biBTdHVkaW8uICBUaGUgTm9raWEgU3ltYmlh
bgorLy8gY29tcGlsZXIgYW5kIGdlbmVyYXRlcyBhIHdhcm5pbmcgaW4gU3VuIFN0dWRpbyBiZWZv
cmUgMTJ1NC4gVGhlIE5va2lhIFN5bWJpYW4KIC8vIGFuZCB0aGUgSUJNIFhMIEMvQysrIGNvbXBp
bGVyIHRyeSB0byBpbnN0YW50aWF0ZSBhIGNvcHkgY29uc3RydWN0b3IKIC8vIGZvciBvYmplY3Rz
IHBhc3NlZCB0aHJvdWdoIGVsbGlwc2lzICguLi4pLCBmYWlsaW5nIGZvciB1bmNvcHlhYmxlCiAv
LyBvYmplY3RzLiAgV2UgZGVmaW5lIHRoaXMgdG8gZW5zdXJlIHRoYXQgb25seSBQT0QgaXMgcGFz
c2VkIHRocm91Z2gKIC8vIGVsbGlwc2lzIG9uIHRoZXNlIHN5c3RlbXMuCi0jaWYgZGVmaW5lZChf
X1NZTUJJQU4zMl9fKSB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pIHx8IGRlZmluZWQoX19TVU5QUk9f
Q0MpCisjaWYgZGVmaW5lZChfX1NZTUJJQU4zMl9fKSB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pIHx8
IFwKKyAgICAgKGRlZmluZWQoX19TVU5QUk9fQ0MpICYmIF9fU1VOUFJPX0NDIDwgMHg1MTMwKQog
Ly8gV2UgbG9zZSBzdXBwb3J0IGZvciBOVUxMIGRldGVjdGlvbiB3aGVyZSB0aGUgY29tcGlsZXIg
ZG9lc24ndCBsaWtlCiAvLyBwYXNzaW5nIG5vbi1QT0QgY2xhc3NlcyB0aHJvdWdoIGVsbGlwc2lz
ICguLi4pLgotI2RlZmluZSBHVEVTVF9FTExJUFNJU19ORUVEU19QT0RfIDEKKyMgZGVmaW5lIEdU
RVNUX0VMTElQU0lTX05FRURTX1BPRF8gMQogI2Vsc2UKLSNkZWZpbmUgR1RFU1RfQ0FOX0NPTVBB
UkVfTlVMTCAxCisjIGRlZmluZSBHVEVTVF9DQU5fQ09NUEFSRV9OVUxMIDEKICNlbmRpZgogCiAv
LyBUaGUgTm9raWEgU3ltYmlhbiBhbmQgSUJNIFhMIEMvQysrIGNvbXBpbGVycyBjYW5ub3QgZGVj
aWRlIGJldHdlZW4KQEAgLTEyNzAsNyArMjMzNSw3IEBAIEdURVNUX0FQSV8gc2l6ZV90IEdldFRo
cmVhZENvdW50KCk7CiAvLyBfY2FuXyBkZWNpZGUgYmV0d2VlbiBjbGFzcyB0ZW1wbGF0ZSBzcGVj
aWFsaXphdGlvbnMgZm9yIFQgYW5kIFQqLAogLy8gc28gYSB0cjE6OnR5cGVfdHJhaXRzLWxpa2Ug
aXNfcG9pbnRlciB3b3Jrcy4KICNpZiBkZWZpbmVkKF9fU1lNQklBTjMyX18pIHx8IGRlZmluZWQo
X19JQk1DUFBfXykKLSNkZWZpbmUgR1RFU1RfTkVFRFNfSVNfUE9JTlRFUl8gMQorIyBkZWZpbmUg
R1RFU1RfTkVFRFNfSVNfUE9JTlRFUl8gMQogI2VuZGlmCiAKIHRlbXBsYXRlIDxib29sIGJvb2xf
dmFsdWU+CkBAIC0xMjgzLDIzICsyMzQ4LDkzIEBAIHRlbXBsYXRlIDxib29sIGJvb2xfdmFsdWU+
IGNvbnN0IGJvb2wgYm9vbF9jb25zdGFudDxib29sX3ZhbHVlPjo6dmFsdWU7CiB0eXBlZGVmIGJv
b2xfY29uc3RhbnQ8ZmFsc2U+IGZhbHNlX3R5cGU7CiB0eXBlZGVmIGJvb2xfY29uc3RhbnQ8dHJ1
ZT4gdHJ1ZV90eXBlOwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3N0cnVj
dCBpc19zYW1lIDogcHVibGljIGZhbHNlX3R5cGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
Pgorc3RydWN0IGlzX3NhbWU8VCwgVD4gOiBwdWJsaWMgdHJ1ZV90eXBlIHt9OworCisKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogc3RydWN0IGlzX3BvaW50ZXIgOiBwdWJsaWMgZmFsc2VfdHlwZSB7
fTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgaXNfcG9pbnRlcjxUKj4gOiBwdWJs
aWMgdHJ1ZV90eXBlIHt9OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3I+CitzdHJ1Y3Qg
SXRlcmF0b3JUcmFpdHMgeworICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yOjp2YWx1ZV90eXBl
IHZhbHVlX3R5cGU7Cit9OworCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEl0ZXJh
dG9yVHJhaXRzPFQqPiB7CisgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOworfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXRlcmF0b3JUcmFpdHM8Y29uc3QgVCo+IHsKKyAgdHlwZWRl
ZiBUIHZhbHVlX3R5cGU7Cit9OworCiAjaWYgR1RFU1RfT1NfV0lORE9XUwotI2RlZmluZSBHVEVT
VF9QQVRIX1NFUF8gIlxcIgotI2RlZmluZSBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXyAxCisjIGRl
ZmluZSBHVEVTVF9QQVRIX1NFUF8gIlxcIgorIyBkZWZpbmUgR1RFU1RfSEFTX0FMVF9QQVRIX1NF
UF8gMQogLy8gVGhlIGJpZ2dlc3Qgc2lnbmVkIGludGVnZXIgdHlwZSB0aGUgY29tcGlsZXIgc3Vw
cG9ydHMuCiB0eXBlZGVmIF9faW50NjQgQmlnZ2VzdEludDsKICNlbHNlCi0jZGVmaW5lIEdURVNU
X1BBVEhfU0VQXyAiLyIKLSNkZWZpbmUgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8gMAorIyBkZWZp
bmUgR1RFU1RfUEFUSF9TRVBfICIvIgorIyBkZWZpbmUgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8g
MAogdHlwZWRlZiBsb25nIGxvbmcgQmlnZ2VzdEludDsgIC8vIE5PTElOVAogI2VuZGlmICAvLyBH
VEVTVF9PU19XSU5ET1dTCiAKKy8vIFV0aWxpdGllcyBmb3IgY2hhci4KKworLy8gaXNzcGFjZShp
bnQgY2gpIGFuZCBmcmllbmRzIGFjY2VwdCBhbiB1bnNpZ25lZCBjaGFyIG9yIEVPRi4gIGNoYXIK
Ky8vIG1heSBiZSBzaWduZWQsIGRlcGVuZGluZyBvbiB0aGUgY29tcGlsZXIgKG9yIGNvbXBpbGVy
IGZsYWdzKS4KKy8vIFRoZXJlZm9yZSB3ZSBuZWVkIHRvIGNhc3QgYSBjaGFyIHRvIHVuc2lnbmVk
IGNoYXIgYmVmb3JlIGNhbGxpbmcKKy8vIGlzc3BhY2UoKSwgZXRjLgorCitpbmxpbmUgYm9vbCBJ
c0FscGhhKGNoYXIgY2gpIHsKKyAgcmV0dXJuIGlzYWxwaGEoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oY2gpKSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNBbE51bShjaGFyIGNoKSB7CisgIHJl
dHVybiBpc2FsbnVtKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKK30KK2lu
bGluZSBib29sIElzRGlnaXQoY2hhciBjaCkgeworICByZXR1cm4gaXNkaWdpdChzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyPihjaCkpICE9IDA7Cit9CitpbmxpbmUgYm9vbCBJc0xvd2VyKGNoYXIg
Y2gpIHsKKyAgcmV0dXJuIGlzbG93ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAh
PSAwOworfQoraW5saW5lIGJvb2wgSXNTcGFjZShjaGFyIGNoKSB7CisgIHJldHVybiBpc3NwYWNl
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKK30KK2lubGluZSBib29sIElz
VXBwZXIoY2hhciBjaCkgeworICByZXR1cm4gaXN1cHBlcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihjaCkpICE9IDA7Cit9CitpbmxpbmUgYm9vbCBJc1hEaWdpdChjaGFyIGNoKSB7CisgIHJl
dHVybiBpc3hkaWdpdChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpICE9IDA7Cit9Citp
bmxpbmUgYm9vbCBJc1hEaWdpdCh3Y2hhcl90IGNoKSB7CisgIGNvbnN0IHVuc2lnbmVkIGNoYXIg
bG93X2J5dGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCk7CisgIHJldHVybiBjaCA9
PSBsb3dfYnl0ZSAmJiBpc3hkaWdpdChsb3dfYnl0ZSkgIT0gMDsKK30KKworaW5saW5lIGNoYXIg
VG9Mb3dlcihjaGFyIGNoKSB7CisgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyPih0b2xvd2VyKHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkpOworfQoraW5saW5lIGNoYXIgVG9VcHBlcihj
aGFyIGNoKSB7CisgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyPih0b3VwcGVyKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXI+KGNoKSkpOworfQorCitpbmxpbmUgc3RkOjpzdHJpbmcgU3RyaXBUcmFp
bGluZ1NwYWNlcyhzdGQ6OnN0cmluZyBzdHIpIHsKKyAgc3RkOjpzdHJpbmc6Oml0ZXJhdG9yIGl0
ID0gc3RyLmVuZCgpOworICB3aGlsZSAoaXQgIT0gc3RyLmJlZ2luKCkgJiYgSXNTcGFjZSgqLS1p
dCkpCisgICAgaXQgPSBzdHIuZXJhc2UoaXQpOworICByZXR1cm4gc3RyOworfQorCiAvLyBUaGUg
dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4IG5hbWVzcGFjZSBob2xkcyB3cmFwcGVycyBmb3IgY29t
bW9uCiAvLyBQT1NJWCBmdW5jdGlvbnMuICBUaGVzZSB3cmFwcGVycyBoaWRlIHRoZSBkaWZmZXJl
bmNlcyBiZXR3ZWVuCiAvLyBXaW5kb3dzL01TVkMgYW5kIFBPU0lYIHN5c3RlbXMuICBTaW5jZSBz
b21lIGNvbXBpbGVycyBkZWZpbmUgdGhlc2UKQEAgLTEzMTQsMzYgKzI0NDksMzYgQEAgbmFtZXNw
YWNlIHBvc2l4IHsKIAogdHlwZWRlZiBzdHJ1Y3QgX3N0YXQgU3RhdFN0cnVjdDsKIAotI2lmZGVm
IF9fQk9STEFORENfXworIyBpZmRlZiBfX0JPUkxBTkRDX18KIGlubGluZSBpbnQgSXNBVFRZKGlu
dCBmZCkgeyByZXR1cm4gaXNhdHR5KGZkKTsgfQogaW5saW5lIGludCBTdHJDYXNlQ21wKGNvbnN0
IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMikgewogICByZXR1cm4gc3RyaWNtcChzMSwgczIpOwog
fQogaW5saW5lIGNoYXIqIFN0ckR1cChjb25zdCBjaGFyKiBzcmMpIHsgcmV0dXJuIHN0cmR1cChz
cmMpOyB9Ci0jZWxzZSAgLy8gIV9fQk9STEFORENfXwotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9C
SUxFCisjIGVsc2UgIC8vICFfX0JPUkxBTkRDX18KKyMgIGlmIEdURVNUX09TX1dJTkRPV1NfTU9C
SUxFCiBpbmxpbmUgaW50IElzQVRUWShpbnQgLyogZmQgKi8pIHsgcmV0dXJuIDA7IH0KLSNlbHNl
CisjICBlbHNlCiBpbmxpbmUgaW50IElzQVRUWShpbnQgZmQpIHsgcmV0dXJuIF9pc2F0dHkoZmQp
OyB9Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjICBlbmRpZiAgLy8gR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKIGlubGluZSBpbnQgU3RyQ2FzZUNtcChjb25zdCBjaGFyKiBz
MSwgY29uc3QgY2hhciogczIpIHsKICAgcmV0dXJuIF9zdHJpY21wKHMxLCBzMik7CiB9CiBpbmxp
bmUgY2hhciogU3RyRHVwKGNvbnN0IGNoYXIqIHNyYykgeyByZXR1cm4gX3N0cmR1cChzcmMpOyB9
Ci0jZW5kaWYgIC8vIF9fQk9STEFORENfXworIyBlbmRpZiAgLy8gX19CT1JMQU5EQ19fCiAKLSNp
ZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQog
aW5saW5lIGludCBGaWxlTm8oRklMRSogZmlsZSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxp
bnQ+KF9maWxlbm8oZmlsZSkpOyB9CiAvLyBTdGF0KCksIFJtRGlyKCksIGFuZCBJc0RpcigpIGFy
ZSBub3QgbmVlZGVkIG9uIFdpbmRvd3MgQ0UgYXQgdGhpcwogLy8gdGltZSBhbmQgdGh1cyBub3Qg
ZGVmaW5lZCB0aGVyZS4KLSNlbHNlCisjIGVsc2UKIGlubGluZSBpbnQgRmlsZU5vKEZJTEUqIGZp
bGUpIHsgcmV0dXJuIF9maWxlbm8oZmlsZSk7IH0KIGlubGluZSBpbnQgU3RhdChjb25zdCBjaGFy
KiBwYXRoLCBTdGF0U3RydWN0KiBidWYpIHsgcmV0dXJuIF9zdGF0KHBhdGgsIGJ1Zik7IH0KIGlu
bGluZSBpbnQgUm1EaXIoY29uc3QgY2hhciogZGlyKSB7IHJldHVybiBfcm1kaXIoZGlyKTsgfQog
aW5saW5lIGJvb2wgSXNEaXIoY29uc3QgU3RhdFN0cnVjdCYgc3QpIHsKICAgcmV0dXJuIChfU19J
RkRJUiAmIHN0LnN0X21vZGUpICE9IDA7CiB9Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogCiAjZWxzZQogCkBA
IC0xMzYzLDExICsyNDk4LDcgQEAgaW5saW5lIGJvb2wgSXNEaXIoY29uc3QgU3RhdFN0cnVjdCYg
c3QpIHsgcmV0dXJuIFNfSVNESVIoc3Quc3RfbW9kZSk7IH0KIAogLy8gRnVuY3Rpb25zIGRlcHJl
Y2F0ZWQgYnkgTVNWQyA4LjAuCiAKLSNpZmRlZiBfTVNDX1ZFUgotLy8gVGVtcG9yYXJpbHkgZGlz
YWJsZSB3YXJuaW5nIDQ5OTYgKGRlcHJlY2F0ZWQgZnVuY3Rpb24pLgotI3ByYWdtYSB3YXJuaW5n
KHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0OTk2KQotI2VuZGlmCitHVEVTVF9ESVNB
QkxFX01TQ19ERVBSRUNBVEVEX1BVU0hfKCkKIAogaW5saW5lIGNvbnN0IGNoYXIqIFN0ck5DcHko
Y2hhciogZGVzdCwgY29uc3QgY2hhciogc3JjLCBzaXplX3QgbikgewogICByZXR1cm4gc3RybmNw
eShkZXN0LCBzcmMsIG4pOwpAQCAtMTM3Nyw3ICsyNTA4LDcgQEAgaW5saW5lIGNvbnN0IGNoYXIq
IFN0ck5DcHkoY2hhciogZGVzdCwgY29uc3QgY2hhciogc3JjLCBzaXplX3QgbikgewogLy8gU3Ry
RXJyb3IoKSBhcmVuJ3QgbmVlZGVkIG9uIFdpbmRvd3MgQ0UgYXQgdGhpcyB0aW1lIGFuZCB0aHVz
IG5vdAogLy8gZGVmaW5lZCB0aGVyZS4KIAotI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQor
I2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRSAmJiAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAm
JiAhR1RFU1RfT1NfV0lORE9XU19SVAogaW5saW5lIGludCBDaERpcihjb25zdCBjaGFyKiBkaXIp
IHsgcmV0dXJuIGNoZGlyKGRpcik7IH0KICNlbmRpZgogaW5saW5lIEZJTEUqIEZPcGVuKGNvbnN0
IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIqIG1vZGUpIHsKQEAgLTE0MDEsOCArMjUzMiw5IEBAIGlu
bGluZSBpbnQgQ2xvc2UoaW50IGZkKSB7IHJldHVybiBjbG9zZShmZCk7IH0KIGlubGluZSBjb25z
dCBjaGFyKiBTdHJFcnJvcihpbnQgZXJybnVtKSB7IHJldHVybiBzdHJlcnJvcihlcnJudW0pOyB9
CiAjZW5kaWYKIGlubGluZSBjb25zdCBjaGFyKiBHZXRFbnYoY29uc3QgY2hhciogbmFtZSkgewot
I2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUg
fHwgR1RFU1RfT1NfV0lORE9XU19QSE9ORSB8fCBHVEVTVF9PU19XSU5ET1dTX1JUCiAgIC8vIFdl
IGFyZSBvbiBXaW5kb3dzIENFLCB3aGljaCBoYXMgbm8gZW52aXJvbm1lbnQgdmFyaWFibGVzLgor
ICBzdGF0aWNfY2FzdDx2b2lkPihuYW1lKTsgIC8vIFRvIHByZXZlbnQgJ3VudXNlZCBhcmd1bWVu
dCcgd2FybmluZy4KICAgcmV0dXJuIE5VTEw7CiAjZWxpZiBkZWZpbmVkKF9fQk9STEFORENfXykg
fHwgZGVmaW5lZChfX1N1bk9TXzVfOCkgfHwgZGVmaW5lZChfX1N1bk9TXzVfOSkKICAgLy8gRW52
aXJvbm1lbnQgdmFyaWFibGVzIHdoaWNoIHdlIHByb2dyYW1tYXRpY2FsbHkgY2xlYXIgd2lsbCBi
ZSBzZXQgdG8gdGhlCkBAIC0xNDE0LDkgKzI1NDYsNyBAQCBpbmxpbmUgY29uc3QgY2hhciogR2V0
RW52KGNvbnN0IGNoYXIqIG5hbWUpIHsKICNlbmRpZgogfQogCi0jaWZkZWYgX01TQ19WRVIKLSNw
cmFnbWEgd2FybmluZyhwb3ApICAvLyBSZXN0b3JlcyB0aGUgd2FybmluZyBzdGF0ZS4KLSNlbmRp
ZgorR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRFRF9QT1BfKCkKIAogI2lmIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCiAvLyBXaW5kb3dzIENFIGhhcyBubyBDIGxpYnJhcnkuIFRoZSBhYm9ydCgp
IGZ1bmN0aW9uIGlzIHVzZWQgaW4KQEAgLTE0MjksNiArMjU1OSwyMyBAQCBpbmxpbmUgdm9pZCBB
Ym9ydCgpIHsgYWJvcnQoKTsgfQogCiB9ICAvLyBuYW1lc3BhY2UgcG9zaXgKIAorLy8gTVNWQyAi
ZGVwcmVjYXRlcyIgc25wcmludGYgYW5kIGlzc3VlcyB3YXJuaW5ncyB3aGVyZXZlciBpdCBpcyB1
c2VkLiAgSW4KKy8vIG9yZGVyIHRvIGF2b2lkIHRoZXNlIHdhcm5pbmdzLCB3ZSBuZWVkIHRvIHVz
ZSBfc25wcmludGYgb3IgX3NucHJpbnRmX3Mgb24KKy8vIE1TVkMtYmFzZWQgcGxhdGZvcm1zLiAg
V2UgbWFwIHRoZSBHVEVTVF9TTlBSSU5URl8gbWFjcm8gdG8gdGhlIGFwcHJvcHJpYXRlCisvLyBm
dW5jdGlvbiBpbiBvcmRlciB0byBhY2hpZXZlIHRoYXQuICBXZSB1c2UgbWFjcm8gZGVmaW5pdGlv
biBoZXJlIGJlY2F1c2UKKy8vIHNucHJpbnRmIGlzIGEgdmFyaWFkaWMgZnVuY3Rpb24uCisjaWYg
X01TQ19WRVIgPj0gMTQwMCAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKy8vIE1TVkMgMjAw
NSBhbmQgYWJvdmUgc3VwcG9ydCB2YXJpYWRpYyBtYWNyb3MuCisjIGRlZmluZSBHVEVTVF9TTlBS
SU5URl8oYnVmZmVyLCBzaXplLCBmb3JtYXQsIC4uLikgXAorICAgICBfc25wcmludGZfcyhidWZm
ZXIsIHNpemUsIHNpemUsIGZvcm1hdCwgX19WQV9BUkdTX18pCisjZWxpZiBkZWZpbmVkKF9NU0Nf
VkVSKQorLy8gV2luZG93cyBDRSBkb2VzIG5vdCBkZWZpbmUgX3NucHJpbnRmX3MgYW5kIE1TVkMg
cHJpb3IgdG8gMjAwNSBkb2Vzbid0CisvLyBjb21wbGFpbiBhYm91dCBfc25wcmludGYuCisjIGRl
ZmluZSBHVEVTVF9TTlBSSU5URl8gX3NucHJpbnRmCisjZWxzZQorIyBkZWZpbmUgR1RFU1RfU05Q
UklOVEZfIHNucHJpbnRmCisjZW5kaWYKKwogLy8gVGhlIG1heGltdW0gbnVtYmVyIGEgQmlnZ2Vz
dEludCBjYW4gcmVwcmVzZW50LiAgVGhpcyBkZWZpbml0aW9uCiAvLyB3b3JrcyBubyBtYXR0ZXIg
QmlnZ2VzdEludCBpcyByZXByZXNlbnRlZCBpbiBvbmUncyBjb21wbGVtZW50IG9yCiAvLyB0d28n
cyBjb21wbGVtZW50LgpAQCAtMTUwMCwyNyArMjY0Nyw0NCBAQCB0eXBlZGVmIFR5cGVXaXRoU2l6
ZTw4Pjo6SW50IFRpbWVJbk1pbGxpczsgIC8vIFJlcHJlc2VudHMgdGltZSBpbiBtaWxsaXNlY29u
ZHMuCiAvLyBVdGlsaXRpZXMgZm9yIGNvbW1hbmQgbGluZSBmbGFncyBhbmQgZW52aXJvbm1lbnQg
dmFyaWFibGVzLgogCiAvLyBNYWNybyBmb3IgcmVmZXJlbmNpbmcgZmxhZ3MuCi0jZGVmaW5lIEdU
RVNUX0ZMQUcobmFtZSkgRkxBR1NfZ3Rlc3RfIyNuYW1lCisjaWYgIWRlZmluZWQoR1RFU1RfRkxB
RykKKyMgZGVmaW5lIEdURVNUX0ZMQUcobmFtZSkgRkxBR1NfZ3Rlc3RfIyNuYW1lCisjZW5kaWYg
IC8vICFkZWZpbmVkKEdURVNUX0ZMQUcpCisKKyNpZiAhZGVmaW5lZChHVEVTVF9VU0VfT1dOX0ZM
QUdGSUxFX0ZMQUdfKQorIyBkZWZpbmUgR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXyAxCisj
ZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18pCisKKyNpZiAh
ZGVmaW5lZChHVEVTVF9ERUNMQVJFX2Jvb2xfKQorIyBkZWZpbmUgR1RFU1RfRkxBR19TQVZFUl8g
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6R1Rlc3RGbGFnU2F2ZXIKIAogLy8gTWFjcm9zIGZvciBkZWNs
YXJpbmcgZmxhZ3MuCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVfYm9vbF8obmFtZSkgR1RFU1RfQVBJ
XyBleHRlcm4gYm9vbCBHVEVTVF9GTEFHKG5hbWUpCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVfaW50
MzJfKG5hbWUpIFwKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfYm9vbF8obmFtZSkgR1RFU1RfQVBJ
XyBleHRlcm4gYm9vbCBHVEVTVF9GTEFHKG5hbWUpCisjIGRlZmluZSBHVEVTVF9ERUNMQVJFX2lu
dDMyXyhuYW1lKSBcCiAgICAgR1RFU1RfQVBJXyBleHRlcm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6
SW50MzIgR1RFU1RfRkxBRyhuYW1lKQotI2RlZmluZSBHVEVTVF9ERUNMQVJFX3N0cmluZ18obmFt
ZSkgXAotICAgIEdURVNUX0FQSV8gZXh0ZXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZyBH
VEVTVF9GTEFHKG5hbWUpCisjIGRlZmluZSBHVEVTVF9ERUNMQVJFX3N0cmluZ18obmFtZSkgXAor
ICAgIEdURVNUX0FQSV8gZXh0ZXJuIDo6c3RkOjpzdHJpbmcgR1RFU1RfRkxBRyhuYW1lKQogCiAv
LyBNYWNyb3MgZm9yIGRlZmluaW5nIGZsYWdzLgotI2RlZmluZSBHVEVTVF9ERUZJTkVfYm9vbF8o
bmFtZSwgZGVmYXVsdF92YWwsIGRvYykgXAorIyBkZWZpbmUgR1RFU1RfREVGSU5FX2Jvb2xfKG5h
bWUsIGRlZmF1bHRfdmFsLCBkb2MpIFwKICAgICBHVEVTVF9BUElfIGJvb2wgR1RFU1RfRkxBRyhu
YW1lKSA9IChkZWZhdWx0X3ZhbCkKLSNkZWZpbmUgR1RFU1RfREVGSU5FX2ludDMyXyhuYW1lLCBk
ZWZhdWx0X3ZhbCwgZG9jKSBcCisjIGRlZmluZSBHVEVTVF9ERUZJTkVfaW50MzJfKG5hbWUsIGRl
ZmF1bHRfdmFsLCBkb2MpIFwKICAgICBHVEVTVF9BUElfIDo6dGVzdGluZzo6aW50ZXJuYWw6Oklu
dDMyIEdURVNUX0ZMQUcobmFtZSkgPSAoZGVmYXVsdF92YWwpCi0jZGVmaW5lIEdURVNUX0RFRklO
RV9zdHJpbmdfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpIFwKLSAgICBHVEVTVF9BUElfIDo6dGVz
dGluZzo6aW50ZXJuYWw6OlN0cmluZyBHVEVTVF9GTEFHKG5hbWUpID0gKGRlZmF1bHRfdmFsKQor
IyBkZWZpbmUgR1RFU1RfREVGSU5FX3N0cmluZ18obmFtZSwgZGVmYXVsdF92YWwsIGRvYykgXAor
ICAgIEdURVNUX0FQSV8gOjpzdGQ6OnN0cmluZyBHVEVTVF9GTEFHKG5hbWUpID0gKGRlZmF1bHRf
dmFsKQorCisjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0RFQ0xBUkVfYm9vbF8pCisKKy8vIFRo
cmVhZCBhbm5vdGF0aW9ucworI2lmICFkZWZpbmVkKEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJ
UkVEXykKKyMgZGVmaW5lIEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhsb2NrcykKKyMg
ZGVmaW5lIEdURVNUX0xPQ0tfRVhDTFVERURfKGxvY2tzKQorI2VuZGlmICAvLyAhZGVmaW5lZChH
VEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8pCiAKIC8vIFBhcnNlcyAnc3RyJyBmb3IgYSAz
Mi1iaXQgc2lnbmVkIGludGVnZXIuICBJZiBzdWNjZXNzZnVsLCB3cml0ZXMgdGhlIHJlc3VsdAog
Ly8gdG8gKnZhbHVlIGFuZCByZXR1cm5zIHRydWU7IG90aGVyd2lzZSBsZWF2ZXMgKnZhbHVlIHVu
Y2hhbmdlZCBhbmQgcmV0dXJucwogLy8gZmFsc2UuCi0vLyBUT0RPKGNoYW5kbGVyYyk6IEZpbmQg
YSBiZXR0ZXIgd2F5IHRvIHJlZmFjdG9yIGZsYWcgYW5kIGVudmlyb25tZW50IHBhcnNpbmcKKy8v
IEZJWE1FOiBGaW5kIGEgYmV0dGVyIHdheSB0byByZWZhY3RvciBmbGFnIGFuZCBlbnZpcm9ubWVu
dCBwYXJzaW5nCiAvLyBvdXQgb2YgYm90aCBndGVzdC1wb3J0LmNjIGFuZCBndGVzdC5jYyB0byBh
dm9pZCBleHBvcnRpbmcgdGhpcyB1dGlsaXR5CiAvLyBmdW5jdGlvbi4KIGJvb2wgUGFyc2VJbnQz
Mihjb25zdCBNZXNzYWdlJiBzcmNfdGV4dCwgY29uc3QgY2hhciogc3RyLCBJbnQzMiogdmFsdWUp
OwpAQCAtMTUyOSw2ICsyNjkzLDcgQEAgYm9vbCBQYXJzZUludDMyKGNvbnN0IE1lc3NhZ2UmIHNy
Y190ZXh0LCBjb25zdCBjaGFyKiBzdHIsIEludDMyKiB2YWx1ZSk7CiAvLyBjb3JyZXNwb25kaW5n
IHRvIHRoZSBnaXZlbiBHb29nbGUgVGVzdCBmbGFnLgogYm9vbCBCb29sRnJvbUdUZXN0RW52KGNv
bnN0IGNoYXIqIGZsYWcsIGJvb2wgZGVmYXVsdF92YWwpOwogR1RFU1RfQVBJXyBJbnQzMiBJbnQz
MkZyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBJbnQzMiBkZWZhdWx0X3ZhbCk7CitzdGQ6
OnN0cmluZyBPdXRwdXRGbGFnQWxzb0NoZWNrRW52VmFyKCk7CiBjb25zdCBjaGFyKiBTdHJpbmdG
cm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywgY29uc3QgY2hhciogZGVmYXVsdF92YWwpOwog
CiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oCmluZGV4
IGFmZjA5M2RlYzhkYjM5OTA3NGVhM2I3MWJiNzIyN2RhN2U5NjczMGEuLjRjOWI2MjYyYzNjMTAz
NzI2YWEzY2FiNGMxOTk5NWJhZWY5NThiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaApA
QCAtMjcsNzAgKzI3LDM4IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwot
Ly8gQXV0aG9yczogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiksIGVlZmFjbUBnbWFpbC5j
b20gKFNlYW4gTWNhZmVlKQotLy8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3Jr
IChHb29nbGUgVGVzdCkKKy8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJh
bWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAvLyBUaGlzIGhlYWRlciBmaWxlIGRlY2xhcmVzIHRo
ZSBTdHJpbmcgY2xhc3MgYW5kIGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkgYnkKIC8vIEdvb2ds
ZSBUZXN0LiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuIFRoZXkg
c2hvdWxkIG5vdCB1c2VkCiAvLyBieSBjb2RlIGV4dGVybmFsIHRvIEdvb2dsZSBUZXN0LgogLy8K
LS8vIFRoaXMgaGVhZGVyIGZpbGUgaXMgI2luY2x1ZGVkIGJ5IDxndGVzdC9pbnRlcm5hbC9ndGVz
dC1pbnRlcm5hbC5oPi4KKy8vIFRoaXMgaGVhZGVyIGZpbGUgaXMgI2luY2x1ZGVkIGJ5IGd0ZXN0
LWludGVybmFsLmguCiAvLyBJdCBzaG91bGQgbm90IGJlICNpbmNsdWRlZCBieSBvdGhlciBmaWxl
cy4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNU
X0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfU1RSSU5HX0hfCiAjZGVmaW5lIEdURVNUX0lO
Q0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfU1RSSU5HX0hfCiAKICNpZmRlZiBfX0JPUkxBTkRD
X18KIC8vIHN0cmluZy5oIGlzIG5vdCBndWFyYW50ZWVkIHRvIHByb3ZpZGUgc3RyY3B5IG9uIEMr
KyBCdWlsZGVyLgotI2luY2x1ZGUgPG1lbS5oPgorIyBpbmNsdWRlIDxtZW0uaD4KICNlbmRpZgog
CiAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9y
dC5oPgotCiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oIgorCiBuYW1lc3BhY2UgdGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewog
Ci0vLyBTdHJpbmcgLSBhIFVURi04IHN0cmluZyBjbGFzcy4KLS8vCi0vLyBGb3IgaGlzdG9yaWMg
cmVhc29ucywgd2UgZG9uJ3QgdXNlIHN0ZDo6c3RyaW5nLgotLy8KLS8vIFRPRE8od2FuQGdvb2ds
ZS5jb20pOiByZXBsYWNlIHRoaXMgY2xhc3Mgd2l0aCBzdGQ6OnN0cmluZyBvcgotLy8gaW1wbGVt
ZW50IGl0IGluIHRlcm1zIG9mIHRoZSBsYXR0ZXIuCi0vLwotLy8gTm90ZSB0aGF0IFN0cmluZyBj
YW4gcmVwcmVzZW50IGJvdGggTlVMTCBhbmQgdGhlIGVtcHR5IHN0cmluZywKLS8vIHdoaWxlIHN0
ZDo6c3RyaW5nIGNhbm5vdCByZXByZXNlbnQgTlVMTC4KLS8vCi0vLyBOVUxMIGFuZCB0aGUgZW1w
dHkgc3RyaW5nIGFyZSBjb25zaWRlcmVkIGRpZmZlcmVudC4gIE5VTEwgaXMgbGVzcwotLy8gdGhh
biBhbnl0aGluZyAoaW5jbHVkaW5nIHRoZSBlbXB0eSBzdHJpbmcpIGV4Y2VwdCBpdHNlbGYuCi0v
LwotLy8gVGhpcyBjbGFzcyBvbmx5IHByb3ZpZGVzIG1pbmltdW0gZnVuY3Rpb25hbGl0eSBuZWNl
c3NhcnkgZm9yCi0vLyBpbXBsZW1lbnRpbmcgR29vZ2xlIFRlc3QuICBXZSBkbyBub3QgaW50ZW5k
IHRvIGltcGxlbWVudCBhIGZ1bGwtZmxlZGdlZAotLy8gc3RyaW5nIGNsYXNzIGhlcmUuCi0vLwot
Ly8gU2luY2UgdGhlIHB1cnBvc2Ugb2YgdGhpcyBjbGFzcyBpcyB0byBwcm92aWRlIGEgc3Vic3Rp
dHV0ZSBmb3IKLS8vIHN0ZDo6c3RyaW5nIG9uIHBsYXRmb3JtcyB3aGVyZSBpdCBjYW5ub3QgYmUg
dXNlZCwgd2UgZGVmaW5lIGEgY29weQotLy8gY29uc3RydWN0b3IgYW5kIGFzc2lnbm1lbnQgb3Bl
cmF0b3JzIHN1Y2ggdGhhdCB3ZSBkb24ndCBuZWVkCi0vLyBjb25kaXRpb25hbCBjb21waWxhdGlv
biBpbiBhIGxvdCBvZiBwbGFjZXMuCi0vLwotLy8gSW4gb3JkZXIgdG8gbWFrZSB0aGUgcmVwcmVz
ZW50YXRpb24gZWZmaWNpZW50LCB0aGUgZCd0b3Igb2YgU3RyaW5nCi0vLyBpcyBub3QgdmlydHVh
bC4gIFRoZXJlZm9yZSBETyBOT1QgSU5IRVJJVCBGUk9NIFN0cmluZy4KKy8vIFN0cmluZyAtIGFu
IGFic3RyYWN0IGNsYXNzIGhvbGRpbmcgc3RhdGljIHN0cmluZyB1dGlsaXRpZXMuCiBjbGFzcyBH
VEVTVF9BUElfIFN0cmluZyB7CiAgcHVibGljOgogICAvLyBTdGF0aWMgdXRpbGl0eSBtZXRob2Rz
CiAKLSAgLy8gUmV0dXJucyB0aGUgaW5wdXQgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcyBpZiBp
dCdzIG5vdCBOVUxMOwotICAvLyBvdGhlcndpc2UgcmV0dXJucyAiKG51bGwpIi4gIEZvciBleGFt
cGxlLCAiXCJIZWxsb1wiIiBpcyByZXR1cm5lZAotICAvLyBmb3IgaW5wdXQgIkhlbGxvIi4KLSAg
Ly8KLSAgLy8gVGhpcyBpcyB1c2VmdWwgZm9yIHByaW50aW5nIGEgQyBzdHJpbmcgaW4gdGhlIHN5
bnRheCBvZiBhIGxpdGVyYWwuCi0gIC8vCi0gIC8vIEtub3duIGlzc3VlOiBlc2NhcGUgc2VxdWVu
Y2VzIGFyZSBub3QgaGFuZGxlZCB5ZXQuCi0gIHN0YXRpYyBTdHJpbmcgU2hvd0NTdHJpbmdRdW90
ZWQoY29uc3QgY2hhciogY19zdHIpOwotCiAgIC8vIENsb25lcyBhIDAtdGVybWluYXRlZCBDIHN0
cmluZywgYWxsb2NhdGluZyBtZW1vcnkgdXNpbmcgbmV3LiAgVGhlCiAgIC8vIGNhbGxlciBpcyBy
ZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgdGhlIHJldHVybiB2YWx1ZSB1c2luZwogICAvLyBkZWxl
dGVbXS4gIFJldHVybnMgdGhlIGNsb25lZCBzdHJpbmcsIG9yIE5VTEwgaWYgdGhlIGlucHV0IGlz
CkBAIC0xMzcsMTEgKzEwNSw3IEBAIGNsYXNzIEdURVNUX0FQSV8gU3RyaW5nIHsKICAgLy8gTlVM
TCB3aWxsIGJlIGNvbnZlcnRlZCB0byAiKG51bGwpIi4gIElmIGFuIGVycm9yIG9jY3VycmVkIGR1
cmluZwogICAvLyB0aGUgY29udmVyc2lvbiwgIihmYWlsZWQgdG8gY29udmVydCBmcm9tIHdpZGUg
c3RyaW5nKSIgaXMKICAgLy8gcmV0dXJuZWQuCi0gIHN0YXRpYyBTdHJpbmcgU2hvd1dpZGVDU3Ry
aW5nKGNvbnN0IHdjaGFyX3QqIHdpZGVfY19zdHIpOwotCi0gIC8vIFNpbWlsYXIgdG8gU2hvd1dp
ZGVDU3RyaW5nKCksIGV4Y2VwdCB0aGF0IHRoaXMgZnVuY3Rpb24gZW5jbG9zZXMKLSAgLy8gdGhl
IGNvbnZlcnRlZCBzdHJpbmcgaW4gZG91YmxlIHF1b3Rlcy4KLSAgc3RhdGljIFN0cmluZyBTaG93
V2lkZUNTdHJpbmdRdW90ZWQoY29uc3Qgd2NoYXJfdCogd2lkZV9jX3N0cik7CisgIHN0YXRpYyBz
dGQ6OnN0cmluZyBTaG93V2lkZUNTdHJpbmcoY29uc3Qgd2NoYXJfdCogd2lkZV9jX3N0cik7CiAK
ICAgLy8gQ29tcGFyZXMgdHdvIHdpZGUgQyBzdHJpbmdzLiAgUmV0dXJucyB0cnVlIGlmZiB0aGV5
IGhhdmUgdGhlIHNhbWUKICAgLy8gY29udGVudC4KQEAgLTE3NSwxNzQgKzEzOSwyNyBAQCBjbGFz
cyBHVEVTVF9BUElfIFN0cmluZyB7CiAgIHN0YXRpYyBib29sIENhc2VJbnNlbnNpdGl2ZVdpZGVD
U3RyaW5nRXF1YWxzKGNvbnN0IHdjaGFyX3QqIGxocywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogcmhzKTsKIAotICAvLyBGb3Jt
YXRzIGEgbGlzdCBvZiBhcmd1bWVudHMgdG8gYSBTdHJpbmcsIHVzaW5nIHRoZSBzYW1lIGZvcm1h
dAotICAvLyBzcGVjIHN0cmluZyBhcyBmb3IgcHJpbnRmLgotICAvLwotICAvLyBXZSBkbyBub3Qg
dXNlIHRoZSBTdHJpbmdQcmludGYgY2xhc3MgYXMgaXQgaXMgbm90IHVuaXZlcnNhbGx5Ci0gIC8v
IGF2YWlsYWJsZS4KLSAgLy8KLSAgLy8gVGhlIHJlc3VsdCBpcyBsaW1pdGVkIHRvIDQwOTYgY2hh
cmFjdGVycyAoaW5jbHVkaW5nIHRoZSB0YWlsaW5nCi0gIC8vIDApLiAgSWYgNDA5NiBjaGFyYWN0
ZXJzIGFyZSBub3QgZW5vdWdoIHRvIGZvcm1hdCB0aGUgaW5wdXQsCi0gIC8vICI8YnVmZmVyIGV4
Y2VlZGVkPiIgaXMgcmV0dXJuZWQuCi0gIHN0YXRpYyBTdHJpbmcgRm9ybWF0KGNvbnN0IGNoYXIq
IGZvcm1hdCwgLi4uKTsKLQotICAvLyBDJ3RvcnMKLQotICAvLyBUaGUgZGVmYXVsdCBjJ3RvciBj
b25zdHJ1Y3RzIGEgTlVMTCBzdHJpbmcuCi0gIFN0cmluZygpIDogY19zdHJfKE5VTEwpLCBsZW5n
dGhfKDApIHt9Ci0KLSAgLy8gQ29uc3RydWN0cyBhIFN0cmluZyBieSBjbG9uaW5nIGEgMC10ZXJt
aW5hdGVkIEMgc3RyaW5nLgotICBTdHJpbmcoY29uc3QgY2hhciogYV9jX3N0cikgeyAgLy8gTk9M
SU5UCi0gICAgaWYgKGFfY19zdHIgPT0gTlVMTCkgewotICAgICAgY19zdHJfID0gTlVMTDsKLSAg
ICAgIGxlbmd0aF8gPSAwOwotICAgIH0gZWxzZSB7Ci0gICAgICBDb25zdHJ1Y3ROb25OdWxsKGFf
Y19zdHIsIHN0cmxlbihhX2Nfc3RyKSk7Ci0gICAgfQotICB9CisgIC8vIFJldHVybnMgdHJ1ZSBp
ZmYgdGhlIGdpdmVuIHN0cmluZyBlbmRzIHdpdGggdGhlIGdpdmVuIHN1ZmZpeCwgaWdub3JpbmcK
KyAgLy8gY2FzZS4gQW55IHN0cmluZyBpcyBjb25zaWRlcmVkIHRvIGVuZCB3aXRoIGFuIGVtcHR5
IHN1ZmZpeC4KKyAgc3RhdGljIGJvb2wgRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoCisgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgc3RyLCBjb25zdCBzdGQ6OnN0cmluZyYgc3VmZml4KTsKIAotICAv
LyBDb25zdHJ1Y3RzIGEgU3RyaW5nIGJ5IGNvcHlpbmcgYSBnaXZlbiBudW1iZXIgb2YgY2hhcnMg
ZnJvbSBhCi0gIC8vIGJ1ZmZlci4gIEUuZy4gU3RyaW5nKCJoZWxsbyIsIDMpIGNyZWF0ZXMgdGhl
IHN0cmluZyAiaGVsIiwKLSAgLy8gU3RyaW5nKCJhXDBiY2QiLCA0KSBjcmVhdGVzICJhXDBiYyIs
IFN0cmluZyhOVUxMLCAwKSBjcmVhdGVzICIiLAotICAvLyBhbmQgU3RyaW5nKE5VTEwsIDEpIHJl
c3VsdHMgaW4gYWNjZXNzIHZpb2xhdGlvbi4KLSAgU3RyaW5nKGNvbnN0IGNoYXIqIGJ1ZmZlciwg
c2l6ZV90IGFfbGVuZ3RoKSB7Ci0gICAgQ29uc3RydWN0Tm9uTnVsbChidWZmZXIsIGFfbGVuZ3Ro
KTsKLSAgfQorICAvLyBGb3JtYXRzIGFuIGludCB2YWx1ZSBhcyAiJTAyZCIuCisgIHN0YXRpYyBz
dGQ6OnN0cmluZyBGb3JtYXRJbnRXaWR0aDIoaW50IHZhbHVlKTsgIC8vICIlMDJkIiBmb3Igd2lk
dGggPT0gMgogCi0gIC8vIFRoZSBjb3B5IGMndG9yIGNyZWF0ZXMgYSBuZXcgY29weSBvZiB0aGUg
c3RyaW5nLiAgVGhlIHR3bwotICAvLyBTdHJpbmcgb2JqZWN0cyBkbyBub3Qgc2hhcmUgY29udGVu
dC4KLSAgU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyKSA6IGNfc3RyXyhOVUxMKSwgbGVuZ3RoXygw
KSB7ICp0aGlzID0gc3RyOyB9CisgIC8vIEZvcm1hdHMgYW4gaW50IHZhbHVlIGFzICIlWCIuCisg
IHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRIZXhJbnQoaW50IHZhbHVlKTsKIAotICAvLyBEJ3Rv
ci4gIFN0cmluZyBpcyBpbnRlbmRlZCB0byBiZSBhIGZpbmFsIGNsYXNzLCBzbyB0aGUgZCd0b3IK
LSAgLy8gZG9lc24ndCBuZWVkIHRvIGJlIHZpcnR1YWwuCi0gIH5TdHJpbmcoKSB7IGRlbGV0ZVtd
IGNfc3RyXzsgfQotCi0gIC8vIEFsbG93cyBhIFN0cmluZyB0byBiZSBpbXBsaWNpdGx5IGNvbnZl
cnRlZCB0byBhbiA6OnN0ZDo6c3RyaW5nIG9yCi0gIC8vIDo6c3RyaW5nLCBhbmQgdmljZSB2ZXJz
YS4gIENvbnZlcnRpbmcgYSBTdHJpbmcgY29udGFpbmluZyBhIE5VTEwKLSAgLy8gcG9pbnRlciB0
byA6OnN0ZDo6c3RyaW5nIG9yIDo6c3RyaW5nIGlzIHVuZGVmaW5lZCBiZWhhdmlvci4KLSAgLy8g
Q29udmVydGluZyBhIDo6c3RkOjpzdHJpbmcgb3IgOjpzdHJpbmcgY29udGFpbmluZyBhbiBlbWJl
ZGRlZCBOVUwKLSAgLy8gY2hhcmFjdGVyIHRvIGEgU3RyaW5nIHdpbGwgcmVzdWx0IGluIHRoZSBw
cmVmaXggdXAgdG8gdGhlIGZpcnN0Ci0gIC8vIE5VTCBjaGFyYWN0ZXIuCi0gIFN0cmluZyhjb25z
dCA6OnN0ZDo6c3RyaW5nJiBzdHIpIHsKLSAgICBDb25zdHJ1Y3ROb25OdWxsKHN0ci5jX3N0cigp
LCBzdHIubGVuZ3RoKCkpOwotICB9Ci0KLSAgb3BlcmF0b3IgOjpzdGQ6OnN0cmluZygpIGNvbnN0
IHsgcmV0dXJuIDo6c3RkOjpzdHJpbmcoY19zdHIoKSwgbGVuZ3RoKCkpOyB9Ci0KLSNpZiBHVEVT
VF9IQVNfR0xPQkFMX1NUUklORwotICBTdHJpbmcoY29uc3QgOjpzdHJpbmcmIHN0cikgewotICAg
IENvbnN0cnVjdE5vbk51bGwoc3RyLmNfc3RyKCksIHN0ci5sZW5ndGgoKSk7Ci0gIH0KLQotICBv
cGVyYXRvciA6OnN0cmluZygpIGNvbnN0IHsgcmV0dXJuIDo6c3RyaW5nKGNfc3RyKCksIGxlbmd0
aCgpKTsgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotCi0gIC8vIFJldHVy
bnMgdHJ1ZSBpZmYgdGhpcyBpcyBhbiBlbXB0eSBzdHJpbmcgKGkuZS4gIiIpLgotICBib29sIGVt
cHR5KCkgY29uc3QgeyByZXR1cm4gKGNfc3RyKCkgIT0gTlVMTCkgJiYgKGxlbmd0aCgpID09IDAp
OyB9Ci0KLSAgLy8gQ29tcGFyZXMgdGhpcyB3aXRoIGFub3RoZXIgU3RyaW5nLgotICAvLyBSZXR1
cm5zIDwgMCBpZiB0aGlzIGlzIGxlc3MgdGhhbiByaHMsIDAgaWYgdGhpcyBpcyBlcXVhbCB0byBy
aHMsIG9yID4gMAotICAvLyBpZiB0aGlzIGlzIGdyZWF0ZXIgdGhhbiByaHMuCi0gIGludCBDb21w
YXJlKGNvbnN0IFN0cmluZyYgcmhzKSBjb25zdDsKLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRo
aXMgU3RyaW5nIGVxdWFscyB0aGUgZ2l2ZW4gQyBzdHJpbmcuICBBIE5VTEwKLSAgLy8gc3RyaW5n
IGFuZCBhIG5vbi1OVUxMIHN0cmluZyBhcmUgY29uc2lkZXJlZCBub3QgZXF1YWwuCi0gIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBjaGFyKiBhX2Nfc3RyKSBjb25zdCB7IHJldHVybiBDb21wYXJlKGFf
Y19zdHIpID09IDA7IH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgU3RyaW5nIGlzIGxl
c3MgdGhhbiB0aGUgZ2l2ZW4gU3RyaW5nLiAgQQotICAvLyBOVUxMIHN0cmluZyBpcyBjb25zaWRl
cmVkIGxlc3MgdGhhbiAiIi4KLSAgYm9vbCBvcGVyYXRvcjwoY29uc3QgU3RyaW5nJiByaHMpIGNv
bnN0IHsgcmV0dXJuIENvbXBhcmUocmhzKSA8IDA7IH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWZm
IHRoaXMgU3RyaW5nIGRvZXNuJ3QgZXF1YWwgdGhlIGdpdmVuIEMgc3RyaW5nLiAgQSBOVUxMCi0g
IC8vIHN0cmluZyBhbmQgYSBub24tTlVMTCBzdHJpbmcgYXJlIGNvbnNpZGVyZWQgbm90IGVxdWFs
LgotICBib29sIG9wZXJhdG9yIT0oY29uc3QgY2hhciogYV9jX3N0cikgY29uc3QgeyByZXR1cm4g
ISgqdGhpcyA9PSBhX2Nfc3RyKTsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBTdHJp
bmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXguICAqQW55KgotICAvLyBTdHJpbmcgaXMgY29u
c2lkZXJlZCB0byBlbmQgd2l0aCBhIE5VTEwgb3IgZW1wdHkgc3VmZml4LgotICBib29sIEVuZHNX
aXRoKGNvbnN0IGNoYXIqIHN1ZmZpeCkgY29uc3Q7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0
aGlzIFN0cmluZyBlbmRzIHdpdGggdGhlIGdpdmVuIHN1ZmZpeCwgbm90IGNvbnNpZGVyaW5nCi0g
IC8vIGNhc2UuIEFueSBTdHJpbmcgaXMgY29uc2lkZXJlZCB0byBlbmQgd2l0aCBhIE5VTEwgb3Ig
ZW1wdHkgc3VmZml4LgotICBib29sIEVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKGNvbnN0IGNoYXIq
IHN1ZmZpeCkgY29uc3Q7Ci0KLSAgLy8gUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBlbmNhcHN1
bGF0ZWQgc3RyaW5nLCBvciAwIGlmIHRoZQotICAvLyBzdHJpbmcgaXMgTlVMTC4KLSAgc2l6ZV90
IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGxlbmd0aF87IH0KLQotICAvLyBHZXRzIHRoZSAwLXRl
cm1pbmF0ZWQgQyBzdHJpbmcgdGhpcyBTdHJpbmcgb2JqZWN0IHJlcHJlc2VudHMuCi0gIC8vIFRo
ZSBTdHJpbmcgb2JqZWN0IHN0aWxsIG93bnMgdGhlIHN0cmluZy4gIFRoZXJlZm9yZSB0aGUgY2Fs
bGVyCi0gIC8vIHNob3VsZCBOT1QgZGVsZXRlIHRoZSByZXR1cm4gdmFsdWUuCi0gIGNvbnN0IGNo
YXIqIGNfc3RyKCkgY29uc3QgeyByZXR1cm4gY19zdHJfOyB9Ci0KLSAgLy8gQXNzaWducyBhIEMg
c3RyaW5nIHRvIHRoaXMgb2JqZWN0LiAgU2VsZi1hc3NpZ25tZW50IHdvcmtzLgotICBjb25zdCBT
dHJpbmcmIG9wZXJhdG9yPShjb25zdCBjaGFyKiBhX2Nfc3RyKSB7Ci0gICAgcmV0dXJuICp0aGlz
ID0gU3RyaW5nKGFfY19zdHIpOwotICB9Ci0KLSAgLy8gQXNzaWducyBhIFN0cmluZyBvYmplY3Qg
dG8gdGhpcyBvYmplY3QuICBTZWxmLWFzc2lnbm1lbnQgd29ya3MuCi0gIGNvbnN0IFN0cmluZyYg
b3BlcmF0b3I9KGNvbnN0IFN0cmluZyYgcmhzKSB7Ci0gICAgaWYgKHRoaXMgIT0gJnJocykgewot
ICAgICAgZGVsZXRlW10gY19zdHJfOwotICAgICAgaWYgKHJocy5jX3N0cigpID09IE5VTEwpIHsK
LSAgICAgICAgY19zdHJfID0gTlVMTDsKLSAgICAgICAgbGVuZ3RoXyA9IDA7Ci0gICAgICB9IGVs
c2UgewotICAgICAgICBDb25zdHJ1Y3ROb25OdWxsKHJocy5jX3N0cigpLCByaHMubGVuZ3RoKCkp
OwotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiAqdGhpczsKLSAgfQorICAvLyBGb3JtYXRz
IGEgYnl0ZSBhcyAiJTAyWCIuCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRCeXRlKHVuc2ln
bmVkIGNoYXIgdmFsdWUpOwogCiAgcHJpdmF0ZToKLSAgLy8gQ29uc3RydWN0cyBhIG5vbi1OVUxM
IFN0cmluZyBmcm9tIHRoZSBnaXZlbiBjb250ZW50LiAgVGhpcwotICAvLyBmdW5jdGlvbiBjYW4g
b25seSBiZSBjYWxsZWQgd2hlbiBkYXRhXyBoYXMgbm90IGJlZW4gYWxsb2NhdGVkLgotICAvLyBD
b25zdHJ1Y3ROb25OdWxsKE5VTEwsIDApIHJlc3VsdHMgaW4gYW4gZW1wdHkgc3RyaW5nICgiIiku
Ci0gIC8vIENvbnN0cnVjdE5vbk51bGwoTlVMTCwgbm9uX3plcm8pIGlzIHVuZGVmaW5lZCBiZWhh
dmlvci4KLSAgdm9pZCBDb25zdHJ1Y3ROb25OdWxsKGNvbnN0IGNoYXIqIGJ1ZmZlciwgc2l6ZV90
IGFfbGVuZ3RoKSB7Ci0gICAgY2hhciogY29uc3Qgc3RyID0gbmV3IGNoYXJbYV9sZW5ndGggKyAx
XTsKLSAgICBtZW1jcHkoc3RyLCBidWZmZXIsIGFfbGVuZ3RoKTsKLSAgICBzdHJbYV9sZW5ndGhd
ID0gJ1wwJzsKLSAgICBjX3N0cl8gPSBzdHI7Ci0gICAgbGVuZ3RoXyA9IGFfbGVuZ3RoOwotICB9
Ci0KLSAgY29uc3QgY2hhciogY19zdHJfOwotICBzaXplX3QgbGVuZ3RoXzsKKyAgU3RyaW5nKCk7
ICAvLyBOb3QgbWVhbnQgdG8gYmUgaW5zdGFudGlhdGVkLgogfTsgIC8vIGNsYXNzIFN0cmluZwog
Ci0vLyBTdHJlYW1zIGEgU3RyaW5nIHRvIGFuIG9zdHJlYW0uICBFYWNoICdcMCcgY2hhcmFjdGVy
IGluIHRoZSBTdHJpbmcKLS8vIGlzIHJlcGxhY2VkIHdpdGggIlxcMCIuCi1pbmxpbmUgOjpzdGQ6
Om9zdHJlYW0mIG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBTdHJpbmcmIHN0
cikgewotICBpZiAoc3RyLmNfc3RyKCkgPT0gTlVMTCkgewotICAgIG9zIDw8ICIobnVsbCkiOwot
ICB9IGVsc2UgewotICAgIGNvbnN0IGNoYXIqIGNvbnN0IGNfc3RyID0gc3RyLmNfc3RyKCk7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gc3RyLmxlbmd0aCgpOyBpKyspIHsKLSAgICAgIGlm
IChjX3N0cltpXSA9PSAnXDAnKSB7Ci0gICAgICAgIG9zIDw8ICJcXDAiOwotICAgICAgfSBlbHNl
IHsKLSAgICAgICAgb3MgPDwgY19zdHJbaV07Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIHJldHVy
biBvczsKLX0KLQotLy8gR2V0cyB0aGUgY29udGVudCBvZiB0aGUgU3RyU3RyZWFtJ3MgYnVmZmVy
IGFzIGEgU3RyaW5nLiAgRWFjaCAnXDAnCisvLyBHZXRzIHRoZSBjb250ZW50IG9mIHRoZSBzdHJp
bmdzdHJlYW0ncyBidWZmZXIgYXMgYW4gc3RkOjpzdHJpbmcuICBFYWNoICdcMCcKIC8vIGNoYXJh
Y3RlciBpbiB0aGUgYnVmZmVyIGlzIHJlcGxhY2VkIHdpdGggIlxcMCIuCi1HVEVTVF9BUElfIFN0
cmluZyBTdHJTdHJlYW1Ub1N0cmluZyhTdHJTdHJlYW0qIHN0cmVhbSk7Ci0KLS8vIENvbnZlcnRz
IGEgc3RyZWFtYWJsZSB2YWx1ZSB0byBhIFN0cmluZy4gIEEgTlVMTCBwb2ludGVyIGlzCi0vLyBj
b252ZXJ0ZWQgdG8gIihudWxsKSIuICBXaGVuIHRoZSBpbnB1dCB2YWx1ZSBpcyBhIDo6c3RyaW5n
LAotLy8gOjpzdGQ6OnN0cmluZywgOjp3c3RyaW5nLCBvciA6OnN0ZDo6d3N0cmluZyBvYmplY3Qs
IGVhY2ggTlVMCi0vLyBjaGFyYWN0ZXIgaW4gaXQgaXMgcmVwbGFjZWQgd2l0aCAiXFwwIi4KLQot
Ly8gRGVjbGFyZWQgaGVyZSBidXQgZGVmaW5lZCBpbiBndGVzdC5oLCBzbyB0aGF0IGl0IGhhcyBh
Y2Nlc3MKLS8vIHRvIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBNZXNzYWdlIGNsYXNzLCByZXF1aXJl
ZCBieSB0aGUgQVJNCi0vLyBjb21waWxlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotU3RyaW5n
IFN0cmVhbWFibGVUb1N0cmluZyhjb25zdCBUJiBzdHJlYW1hYmxlKTsKK0dURVNUX0FQSV8gc3Rk
OjpzdHJpbmcgU3RyaW5nU3RyZWFtVG9TdHJpbmcoOjpzdGQ6OnN0cmluZ3N0cmVhbSogc3RyZWFt
KTsKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC10dXBsZS5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9p
bnRlcm5hbC9ndGVzdC10dXBsZS5oCmluZGV4IGMyN2YzYTQyMWQ5YzQ5NzFlZGU0OWNjMzMyOTEy
ZDRhODM2MGM1YTUuLjc4YTNhNmEwMWZhYzc1NTE3ZWFiODMxMzEyNDI3ZTE1ZDVlNGViYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtdHVwbGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgKQEAgLTEsNCArMSw2IEBACi0vLyBUaGlzIGZpbGUgd2Fz
IEdFTkVSQVRFRCBieSBhIHNjcmlwdC4gIERPIE5PVCBFRElUIEJZIEhBTkQhISEKKy8vIFRoaXMg
ZmlsZSB3YXMgR0VORVJBVEVEIGJ5IGNvbW1hbmQ6CisvLyAgICAgcHVtcC5weSBndGVzdC10dXBs
ZS5oLnB1bXAKKy8vIERPIE5PVCBFRElUIEJZIEhBTkQhISEKIAogLy8gQ29weXJpZ2h0IDIwMDkg
R29vZ2xlIEluYy4KIC8vIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCkBAIC0yOCwxMSArMzAsMTIgQEAK
IC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBB
dXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogLy8gSW1wbGVtZW50cyBh
IHN1YnNldCBvZiBUUjEgdHVwbGUgbmVlZGVkIGJ5IEdvb2dsZSBUZXN0IGFuZCBHb29nbGUgTW9j
ay4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNU
X0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFVQTEVfSF8KICNkZWZpbmUgR1RFU1RfSU5D
TFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UVVBMRV9IXwogCkBAIC00MCwxNyArNDMsMjUgQEAK
IAogLy8gVGhlIGNvbXBpbGVyIHVzZWQgaW4gU3ltYmlhbiBoYXMgYSBidWcgdGhhdCBwcmV2ZW50
cyB1cyBmcm9tIGRlY2xhcmluZyB0aGUKIC8vIHR1cGxlIHRlbXBsYXRlIGFzIGEgZnJpZW5kIChp
dCBjb21wbGFpbnMgdGhhdCB0dXBsZSBpcyByZWRlZmluZWQpLiAgVGhpcwotLy8gaGFjayBieXBh
c3NlcyB0aGUgYnVnIGJ5IGRlY2xhcmluZyB0aGUgbWVtYmVycyB0aGF0IHNob3VsZCBvdGhlcndp
c2UgYmUKKy8vIGJ5cGFzc2VzIHRoZSBidWcgYnkgZGVjbGFyaW5nIHRoZSBtZW1iZXJzIHRoYXQg
c2hvdWxkIG90aGVyd2lzZSBiZQogLy8gcHJpdmF0ZSBhcyBwdWJsaWMuCiAvLyBTdW4gU3R1ZGlv
IHZlcnNpb25zIDwgMTIgYWxzbyBoYXZlIHRoZSBhYm92ZSBidWcuCiAjaWYgZGVmaW5lZChfX1NZ
TUJJQU4zMl9fKSB8fCAoZGVmaW5lZChfX1NVTlBST19DQykgJiYgX19TVU5QUk9fQ0MgPCAweDU5
MCkKLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIHB1YmxpYzoKKyMgZGVm
aW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBwdWJsaWM6CiAjZWxzZQotI2RlZmlu
ZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8gXAorIyBkZWZpbmUgR1RFU1RfREVDTEFS
RV9UVVBMRV9BU19GUklFTkRfIFwKICAgICB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhV
KT4gZnJpZW5kIGNsYXNzIHR1cGxlOyBcCiAgICBwcml2YXRlOgogI2VuZGlmCiAKKy8vIFZpc3Vh
bCBTdHVkaW8gMjAxMCwgMjAxMiwgYW5kIDIwMTMgZGVmaW5lIHN5bWJvbHMgaW4gc3RkOjp0cjEg
dGhhdCBjb25mbGljdAorLy8gd2l0aCBvdXIgb3duIGRlZmluaXRpb25zLiBUaGVyZWZvcmUgdXNp
bmcgb3VyIG93biB0dXBsZSBkb2VzIG5vdCB3b3JrIG9uCisvLyB0aG9zZSBjb21waWxlcnMuCisj
aWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTYwMCAgLyogMTYwMCBpcyBWaXN1
YWwgU3R1ZGlvIDIwMTAgKi8KKyMgZXJyb3IgImd0ZXN0J3MgdHVwbGUgZG9lc24ndCBjb21waWxl
IG9uIFZpc3VhbCBTdHVkaW8gMjAxMCBvciBsYXRlci4gXAorR1RFU1RfVVNFX09XTl9UUjFfVFVQ
TEUgbXVzdCBiZSBzZXQgdG8gMCBvbiB0aG9zZSBjb21waWxlcnMuIgorI2VuZGlmCisKIC8vIEdU
RVNUX25fVFVQTEVfKFQpIGlzIHRoZSB0eXBlIG9mIGFuIG4tdHVwbGUuCiAjZGVmaW5lIEdURVNU
XzBfVFVQTEVfKFQpIHR1cGxlPD4KICNkZWZpbmUgR1RFU1RfMV9UVVBMRV8oVCkgdHVwbGU8VCMj
MCwgdm9pZCwgdm9pZCwgdm9pZCwgdm9pZCwgdm9pZCwgdm9pZCwgXApAQCAtMTQwLDM0ICsxNTEs
NTQgQEAgdGVtcGxhdGUgPGJvb2wga0luZGV4VmFsaWQsIGludCBrSW5kZXgsIGNsYXNzIFR1cGxl
Pgogc3RydWN0IFR1cGxlRWxlbWVudDsKIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18o
VCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDAsIEdURVNUXzEwX1RVUExFXyhUKT4geyB0
eXBlZGVmIFQwIHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDAsIEdURVNUXzEw
X1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUMCB0eXBlOworfTsKIAogdGVtcGxhdGUgPEdURVNU
XzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDEsIEdURVNUXzEw
X1RVUExFXyhUKT4geyB0eXBlZGVmIFQxIHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVFbGVtZW50PHRy
dWUsIDEsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUMSB0eXBlOworfTsKIAog
dGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRy
dWUsIDIsIEdURVNUXzEwX1RVUExFXyhUKT4geyB0eXBlZGVmIFQyIHR5cGU7IH07CitzdHJ1Y3Qg
VHVwbGVFbGVtZW50PHRydWUsIDIsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBU
MiB0eXBlOworfTsKIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3Qg
VHVwbGVFbGVtZW50PHRydWUsIDMsIEdURVNUXzEwX1RVUExFXyhUKT4geyB0eXBlZGVmIFQzIHR5
cGU7IH07CitzdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDMsIEdURVNUXzEwX1RVUExFXyhUKSA+
IHsKKyAgdHlwZWRlZiBUMyB0eXBlOworfTsKIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1F
U18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDQsIEdURVNUXzEwX1RVUExFXyhUKT4g
eyB0eXBlZGVmIFQ0IHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDQsIEdURVNU
XzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUNCB0eXBlOworfTsKIAogdGVtcGxhdGUgPEdU
RVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDUsIEdURVNU
XzEwX1RVUExFXyhUKT4geyB0eXBlZGVmIFQ1IHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVFbGVtZW50
PHRydWUsIDUsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUNSB0eXBlOworfTsK
IAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50
PHRydWUsIDYsIEdURVNUXzEwX1RVUExFXyhUKT4geyB0eXBlZGVmIFQ2IHR5cGU7IH07CitzdHJ1
Y3QgVHVwbGVFbGVtZW50PHRydWUsIDYsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRl
ZiBUNiB0eXBlOworfTsKIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1
Y3QgVHVwbGVFbGVtZW50PHRydWUsIDcsIEdURVNUXzEwX1RVUExFXyhUKT4geyB0eXBlZGVmIFQ3
IHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDcsIEdURVNUXzEwX1RVUExFXyhU
KSA+IHsKKyAgdHlwZWRlZiBUNyB0eXBlOworfTsKIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVO
QU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDgsIEdURVNUXzEwX1RVUExFXyhU
KT4geyB0eXBlZGVmIFQ4IHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDgsIEdU
RVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUOCB0eXBlOworfTsKIAogdGVtcGxhdGUg
PEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDksIEdU
RVNUXzEwX1RVUExFXyhUKT4geyB0eXBlZGVmIFQ5IHR5cGU7IH07CitzdHJ1Y3QgVHVwbGVFbGVt
ZW50PHRydWUsIDksIEdURVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRlZiBUOSB0eXBlOwor
fTsKIAogfSAgLy8gbmFtZXNwYWNlIGd0ZXN0X2ludGVybmFsCiAKQEAgLTcwOCwzNyArNzM5LDU5
IEBAIGlubGluZSBHVEVTVF8xMF9UVVBMRV8oVCkgbWFrZV90dXBsZShjb25zdCBUMCYgZjAsIGNv
bnN0IFQxJiBmMSwgY29uc3QgVDImIGYyLAogdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPiBzdHJ1
Y3QgdHVwbGVfc2l6ZTsKIAogdGVtcGxhdGUgPEdURVNUXzBfVFlQRU5BTUVTXyhUKT4KLXN0cnVj
dCB0dXBsZV9zaXplPEdURVNUXzBfVFVQTEVfKFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUg
PSAwOyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfMF9UVVBMRV8oVCkgPiB7CisgIHN0YXRp
YyBjb25zdCBpbnQgdmFsdWUgPSAwOworfTsKIAogdGVtcGxhdGUgPEdURVNUXzFfVFlQRU5BTUVT
XyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzFfVFVQTEVfKFQpPiB7IHN0YXRpYyBjb25z
dCBpbnQgdmFsdWUgPSAxOyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfMV9UVVBMRV8oVCkg
PiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAxOworfTsKIAogdGVtcGxhdGUgPEdURVNU
XzJfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzJfVFVQTEVfKFQpPiB7
IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAyOyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1Rf
Ml9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAyOworfTsKIAogdGVt
cGxhdGUgPEdURVNUXzNfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzNf
VFVQTEVfKFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAzOyB9Oworc3RydWN0IHR1cGxl
X3NpemU8R1RFU1RfM19UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAz
OworfTsKIAogdGVtcGxhdGUgPEdURVNUXzRfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9z
aXplPEdURVNUXzRfVFVQTEVfKFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA0OyB9Owor
c3RydWN0IHR1cGxlX3NpemU8R1RFU1RfNF9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBp
bnQgdmFsdWUgPSA0OworfTsKIAogdGVtcGxhdGUgPEdURVNUXzVfVFlQRU5BTUVTXyhUKT4KLXN0
cnVjdCB0dXBsZV9zaXplPEdURVNUXzVfVFVQTEVfKFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFs
dWUgPSA1OyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfNV9UVVBMRV8oVCkgPiB7CisgIHN0
YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA1OworfTsKIAogdGVtcGxhdGUgPEdURVNUXzZfVFlQRU5B
TUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzZfVFVQTEVfKFQpPiB7IHN0YXRpYyBj
b25zdCBpbnQgdmFsdWUgPSA2OyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfNl9UVVBMRV8o
VCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA2OworfTsKIAogdGVtcGxhdGUgPEdU
RVNUXzdfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzdfVFVQTEVfKFQp
PiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA3OyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RF
U1RfN19UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA3OworfTsKIAog
dGVtcGxhdGUgPEdURVNUXzhfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNU
XzhfVFVQTEVfKFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA4OyB9Oworc3RydWN0IHR1
cGxlX3NpemU8R1RFU1RfOF9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUg
PSA4OworfTsKIAogdGVtcGxhdGUgPEdURVNUXzlfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBs
ZV9zaXplPEdURVNUXzlfVFVQTEVfKFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA5OyB9
Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfOV9UVVBMRV8oVCkgPiB7CisgIHN0YXRpYyBjb25z
dCBpbnQgdmFsdWUgPSA5OworfTsKIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+
Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8xMF9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGlu
dCB2YWx1ZSA9IDEwOyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFQpID4g
eworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMTA7Cit9OwogCiB0ZW1wbGF0ZSA8aW50IGss
IGNsYXNzIFR1cGxlPgogc3RydWN0IHR1cGxlX2VsZW1lbnQgewpAQCAtOTEyLDcgKzk2NSw3IEBA
IHN0cnVjdCBTYW1lU2l6ZVR1cGxlUHJlZml4Q29tcGFyYXRvcjxrLCBrPiB7CiAgIHRlbXBsYXRl
IDxjbGFzcyBUdXBsZTEsIGNsYXNzIFR1cGxlMj4KICAgc3RhdGljIGJvb2wgRXEoY29uc3QgVHVw
bGUxJiB0MSwgY29uc3QgVHVwbGUyJiB0MikgewogICAgIHJldHVybiBTYW1lU2l6ZVR1cGxlUHJl
Zml4Q29tcGFyYXRvcjxrIC0gMSwgayAtIDE+OjpFcSh0MSwgdDIpICYmCi0gICAgICAgIDo6c3Rk
OjpnZXQ8ayAtIDE+KHQxKSA9PSA6OnN0ZDo6Z2V0PGsgLSAxPih0Mik7CisgICAgICAgIDo6c3Rk
Ojp0cjE6OmdldDxrIC0gMT4odDEpID09IDo6c3RkOjp0cjE6OmdldDxrIC0gMT4odDIpOwogICB9
CiB9OwogCkBAIC05MjIsOCArOTc1LDggQEAgdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18o
VCksIEdURVNUXzEwX1RZUEVOQU1FU18oVSk+CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEdURVNUXzEwX1RVUExFXyhUKSYgdCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR1RF
U1RfMTBfVFVQTEVfKFUpJiB1KSB7CiAgIHJldHVybiBndGVzdF9pbnRlcm5hbDo6U2FtZVNpemVU
dXBsZVByZWZpeENvbXBhcmF0b3I8Ci0gICAgICB0dXBsZV9zaXplPEdURVNUXzEwX1RVUExFXyhU
KT46OnZhbHVlLAotICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8xMF9UVVBMRV8oVSk+Ojp2YWx1ZT46
OkVxKHQsIHUpOworICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8xMF9UVVBMRV8oVCkgPjo6dmFsdWUs
CisgICAgICB0dXBsZV9zaXplPEdURVNUXzEwX1RVUExFXyhVKSA+Ojp2YWx1ZT46OkVxKHQsIHUp
OwogfQogCiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhUKSwgR1RFU1RfMTBfVFlQRU5B
TUVTXyhVKT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1wIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oLnB1bXAKaW5kZXggODVlYmM4MDYy
ZWUxMDQ0NzM3YjM2ZThhNDA4NWQyNjdmMThkYzIwNS4uYmI2MjZlMDQ5ZjA4NzgwZmZjZTk2ZDQ4
NTJjYjhlZDVkM2VmNWYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oLnB1bXAKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oLnB1bXAKQEAg
LTI5LDExICsyOSwxMiBAQCAkJCBUaGlzIG1ldGEgY29tbWVudCBmaXhlcyBhdXRvLWluZGVudGF0
aW9uIGluIEVtYWNzLiB9fQogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwog
CiAvLyBJbXBsZW1lbnRzIGEgc3Vic2V0IG9mIFRSMSB0dXBsZSBuZWVkZWQgYnkgR29vZ2xlIFRl
c3QgYW5kIEdvb2dsZSBNb2NrLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRF
CisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UVVBMRV9IXwog
I2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RVUExFX0hfCiAKQEAg
LTQxLDE3ICs0MiwyNSBAQCAkJCBUaGlzIG1ldGEgY29tbWVudCBmaXhlcyBhdXRvLWluZGVudGF0
aW9uIGluIEVtYWNzLiB9fQogCiAvLyBUaGUgY29tcGlsZXIgdXNlZCBpbiBTeW1iaWFuIGhhcyBh
IGJ1ZyB0aGF0IHByZXZlbnRzIHVzIGZyb20gZGVjbGFyaW5nIHRoZQogLy8gdHVwbGUgdGVtcGxh
dGUgYXMgYSBmcmllbmQgKGl0IGNvbXBsYWlucyB0aGF0IHR1cGxlIGlzIHJlZGVmaW5lZCkuICBU
aGlzCi0vLyBoYWNrIGJ5cGFzc2VzIHRoZSBidWcgYnkgZGVjbGFyaW5nIHRoZSBtZW1iZXJzIHRo
YXQgc2hvdWxkIG90aGVyd2lzZSBiZQorLy8gYnlwYXNzZXMgdGhlIGJ1ZyBieSBkZWNsYXJpbmcg
dGhlIG1lbWJlcnMgdGhhdCBzaG91bGQgb3RoZXJ3aXNlIGJlCiAvLyBwcml2YXRlIGFzIHB1Ymxp
Yy4KIC8vIFN1biBTdHVkaW8gdmVyc2lvbnMgPCAxMiBhbHNvIGhhdmUgdGhlIGFib3ZlIGJ1Zy4K
ICNpZiBkZWZpbmVkKF9fU1lNQklBTjMyX18pIHx8IChkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiBf
X1NVTlBST19DQyA8IDB4NTkwKQotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVO
RF8gcHVibGljOgorIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIHB1Ymxp
YzoKICNlbHNlCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBcCisjIGRl
ZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8gXAogICAgIHRlbXBsYXRlIDxHVEVT
VF8kKG4pX1RZUEVOQU1FU18oVSk+IGZyaWVuZCBjbGFzcyB0dXBsZTsgXAogICAgcHJpdmF0ZToK
ICNlbmRpZgogCisvLyBWaXN1YWwgU3R1ZGlvIDIwMTAsIDIwMTIsIGFuZCAyMDEzIGRlZmluZSBz
eW1ib2xzIGluIHN0ZDo6dHIxIHRoYXQgY29uZmxpY3QKKy8vIHdpdGggb3VyIG93biBkZWZpbml0
aW9ucy4gVGhlcmVmb3JlIHVzaW5nIG91ciBvd24gdHVwbGUgZG9lcyBub3Qgd29yayBvbgorLy8g
dGhvc2UgY29tcGlsZXJzLgorI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE2
MDAgIC8qIDE2MDAgaXMgVmlzdWFsIFN0dWRpbyAyMDEwICovCisjIGVycm9yICJndGVzdCdzIHR1
cGxlIGRvZXNuJ3QgY29tcGlsZSBvbiBWaXN1YWwgU3R1ZGlvIDIwMTAgb3IgbGF0ZXIuIFwKK0dU
RVNUX1VTRV9PV05fVFIxX1RVUExFIG11c3QgYmUgc2V0IHRvIDAgb24gdGhvc2UgY29tcGlsZXJz
LiIKKyNlbmRpZgorCiAKICRyYW5nZSBpIDAuLm4tMQogJHJhbmdlIGogMC4ubgpAQCAtMTE4LDgg
KzEyNyw5IEBAIHN0cnVjdCBUdXBsZUVsZW1lbnQ7CiAKICRmb3IgaSBbWwogdGVtcGxhdGUgPEdU
RVNUXyQobilfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgJGksIEdU
RVNUXyQobilfVFVQTEVfKFQpPiBbW11dCi17IHR5cGVkZWYgVCRpIHR5cGU7IH07CitzdHJ1Y3Qg
VHVwbGVFbGVtZW50PHRydWUsICRpLCBHVEVTVF8kKG4pX1RVUExFXyhUKSA+IHsKKyAgdHlwZWRl
ZiBUJGkgdHlwZTsKK307CiAKIAogXV0KQEAgLTIyMCw3ICsyMzAsOSBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVHVwbGU+IHN0cnVjdCB0dXBsZV9zaXplOwogCiAkZm9yIGogW1sKIHRlbXBsYXRlIDxH
VEVTVF8kKGopX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8kKGopX1RV
UExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gJGo7IH07CitzdHJ1Y3QgdHVwbGVf
c2l6ZTxHVEVTVF8kKGopX1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9
ICRqOworfTsKIAogCiBdXQpAQCAtMzAyLDggKzMxNCw4IEBAIHRlbXBsYXRlIDxHVEVTVF8kKG4p
X1RZUEVOQU1FU18oVCksIEdURVNUXyQobilfVFlQRU5BTUVTXyhVKT4KIGlubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgR1RFU1RfJChuKV9UVVBMRV8oVCkmIHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdURVNUXyQobilfVFVQTEVfKFUpJiB1KSB7CiAgIHJldHVybiBndGVzdF9p
bnRlcm5hbDo6U2FtZVNpemVUdXBsZVByZWZpeENvbXBhcmF0b3I8Ci0gICAgICB0dXBsZV9zaXpl
PEdURVNUXyQobilfVFVQTEVfKFQpPjo6dmFsdWUsCi0gICAgICB0dXBsZV9zaXplPEdURVNUXyQo
bilfVFVQTEVfKFUpPjo6dmFsdWU+OjpFcSh0LCB1KTsKKyAgICAgIHR1cGxlX3NpemU8R1RFU1Rf
JChuKV9UVVBMRV8oVCkgPjo6dmFsdWUsCisgICAgICB0dXBsZV9zaXplPEdURVNUXyQobilfVFVQ
TEVfKFUpID46OnZhbHVlPjo6RXEodCwgdSk7CiB9CiAKIHRlbXBsYXRlIDxHVEVTVF8kKG4pX1RZ
UEVOQU1FU18oVCksIEdURVNUXyQobilfVFlQRU5BTUVTXyhVKT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGls
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0
LXR5cGUtdXRpbC5oCmluZGV4IDA5M2VlZTZmMDE5NjM1NTY5ZjQwNGFlNjM1N2I4ZGU0OGI3MThl
ODEuLjI4ZTQxMTI0NTM2MWMwOGYyODcwN2U5MjQ4ZTZkMDMzMjBlNjg2MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlw
ZS11dGlsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC10eXBlLXV0aWwuaApAQCAtMzAsOCArMzAsNyBAQAogLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAog
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUeXBlIHV0aWxpdGllcyBuZWVkZWQgZm9yIGlt
cGxlbWVudGluZyB0eXBlZCBhbmQgdHlwZS1wYXJhbWV0ZXJpemVkCiAvLyB0ZXN0cy4gIFRoaXMg
ZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBETyBOT1QgRURJVCBCWSBIQU5EIQpAQCAt
NDEsNTggKzQwLDg0IEBACiAvLyBQbGVhc2UgY29udGFjdCBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdv
b2dsZWdyb3Vwcy5jb20gaWYgeW91IG5lZWQKIC8vIG1vcmUuCiAKKy8vIEdPT0dMRVRFU1RfQ00w
MDAxIERPIE5PVCBERUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFM
X0dURVNUX1RZUEVfVVRJTF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFM
X0dURVNUX1RZUEVfVVRJTF9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9y
dC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oPgotCi0jaWYgR1RF
U1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorI2luY2x1ZGUgImd0
ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKIAogLy8gI2lmZGVmIF9fR05VQ19fIGlzIHRvbyBn
ZW5lcmFsIGhlcmUuICBJdCBpcyBwb3NzaWJsZSB0byB1c2UgZ2NjIHdpdGhvdXQgdXNpbmcKIC8v
IGxpYnN0ZGMrKyAod2hpY2ggaXMgd2hlcmUgY3h4YWJpLmggY29tZXMgZnJvbSkuCi0jaWZkZWYg
X19HTElCQ1hYX18KLSNpbmNsdWRlIDxjeHhhYmkuaD4KLSNlbmRpZiAgLy8gX19HTElCQ1hYX18K
KyMgaWYgR1RFU1RfSEFTX0NYWEFCSV9IXworIyAgaW5jbHVkZSA8Y3h4YWJpLmg+CisjIGVsaWYg
ZGVmaW5lZChfX0hQX2FDQykKKyMgIGluY2x1ZGUgPGFjeHhfZGVtYW5nbGUuaD4KKyMgZW5kaWYg
IC8vIEdURVNUX0hBU0hfQ1hYQUJJX0hfCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFj
ZSBpbnRlcm5hbCB7CiAKLS8vIEFzc2VydHlUeXBlRXE8VDEsIFQyPjo6dHlwZSBpcyBkZWZpbmVk
IGlmZiBUMSBhbmQgVDIgYXJlIHRoZSBzYW1lCi0vLyB0eXBlLiAgVGhpcyBjYW4gYmUgdXNlZCBh
cyBhIGNvbXBpbGUtdGltZSBhc3NlcnRpb24gdG8gZW5zdXJlIHRoYXQKLS8vIHR3byB0eXBlcyBh
cmUgZXF1YWwuCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1zdHJ1Y3Qg
QXNzZXJ0VHlwZUVxOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBBc3NlcnRUeXBl
RXE8VCwgVD4gewotICB0eXBlZGVmIGJvb2wgdHlwZTsKLX07CisvLyBDYW5vbmljYWxpemVzIGEg
Z2l2ZW4gbmFtZSB3aXRoIHJlc3BlY3QgdG8gdGhlIFN0YW5kYXJkIEMrKyBMaWJyYXJ5LgorLy8g
VGhpcyBoYW5kbGVzIHJlbW92aW5nIHRoZSBpbmxpbmUgbmFtZXNwYWNlIHdpdGhpbiBgc3RkYCB0
aGF0IGlzCisvLyB1c2VkIGJ5IHZhcmlvdXMgc3RhbmRhcmQgbGlicmFyaWVzIChlLmcuLCBgc3Rk
OjpfXzFgKS4gIE5hbWVzIG91dHNpZGUKKy8vIG9mIG5hbWVzcGFjZSBzdGQgYXJlIHJldHVybmVk
IHVubW9kaWZpZWQuCitpbmxpbmUgc3RkOjpzdHJpbmcgQ2Fub25pY2FsaXplRm9yU3RkTGliVmVy
c2lvbmluZyhzdGQ6OnN0cmluZyBzKSB7CisgIHN0YXRpYyBjb25zdCBjaGFyIHByZWZpeFtdID0g
InN0ZDo6X18iOworICBpZiAocy5jb21wYXJlKDAsIHN0cmxlbihwcmVmaXgpLCBwcmVmaXgpID09
IDApIHsKKyAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGVuZCA9IHMuZmluZCgiOjoiLCBzdHJs
ZW4ocHJlZml4KSk7CisgICAgaWYgKGVuZCAhPSBzLm5wb3MpIHsKKyAgICAgIC8vIEVyYXNlIGV2
ZXJ5dGhpbmcgYmV0d2VlbiB0aGUgaW5pdGlhbCBgc3RkYCBhbmQgdGhlIHNlY29uZCBgOjpgLgor
ICAgICAgcy5lcmFzZShzdHJsZW4oInN0ZCIpLCBlbmQgLSBzdHJsZW4oInN0ZCIpKTsKKyAgICB9
CisgIH0KKyAgcmV0dXJuIHM7Cit9CiAKIC8vIEdldFR5cGVOYW1lPFQ+KCkgcmV0dXJucyBhIGh1
bWFuLXJlYWRhYmxlIG5hbWUgb2YgdHlwZSBULgorLy8gTkI6IFRoaXMgZnVuY3Rpb24gaXMgYWxz
byB1c2VkIGluIEdvb2dsZSBNb2NrLCBzbyBkb24ndCBtb3ZlIGl0IGluc2lkZSBvZgorLy8gdGhl
IHR5cGVkLXRlc3Qtb25seSBzZWN0aW9uIGJlbG93LgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1T
dHJpbmcgR2V0VHlwZU5hbWUoKSB7Ci0jaWYgR1RFU1RfSEFTX1JUVEkKK3N0ZDo6c3RyaW5nIEdl
dFR5cGVOYW1lKCkgeworIyBpZiBHVEVTVF9IQVNfUlRUSQogCiAgIGNvbnN0IGNoYXIqIGNvbnN0
IG5hbWUgPSB0eXBlaWQoVCkubmFtZSgpOwotI2lmZGVmIF9fR0xJQkNYWF9fCisjICBpZiBHVEVT
VF9IQVNfQ1hYQUJJX0hfIHx8IGRlZmluZWQoX19IUF9hQ0MpCiAgIGludCBzdGF0dXMgPSAwOwog
ICAvLyBnY2MncyBpbXBsZW1lbnRhdGlvbiBvZiB0eXBlaWQoVCkubmFtZSgpIG1hbmdsZXMgdGhl
IHR5cGUgbmFtZSwKICAgLy8gc28gd2UgaGF2ZSB0byBkZW1hbmdsZSBpdC4KLSAgY2hhciogY29u
c3QgcmVhZGFibGVfbmFtZSA9IGFiaTo6X19jeGFfZGVtYW5nbGUobmFtZSwgMCwgMCwgJnN0YXR1
cyk7Ci0gIGNvbnN0IFN0cmluZyBuYW1lX3N0cihzdGF0dXMgPT0gMCA/IHJlYWRhYmxlX25hbWUg
OiBuYW1lKTsKKyMgICBpZiBHVEVTVF9IQVNfQ1hYQUJJX0hfCisgIHVzaW5nIGFiaTo6X19jeGFf
ZGVtYW5nbGU7CisjICAgZW5kaWYgIC8vIEdURVNUX0hBU19DWFhBQklfSF8KKyAgY2hhciogY29u
c3QgcmVhZGFibGVfbmFtZSA9IF9fY3hhX2RlbWFuZ2xlKG5hbWUsIDAsIDAsICZzdGF0dXMpOwor
ICBjb25zdCBzdGQ6OnN0cmluZyBuYW1lX3N0cihzdGF0dXMgPT0gMCA/IHJlYWRhYmxlX25hbWUg
OiBuYW1lKTsKICAgZnJlZShyZWFkYWJsZV9uYW1lKTsKLSAgcmV0dXJuIG5hbWVfc3RyOwotI2Vs
c2UKKyAgcmV0dXJuIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcobmFtZV9zdHIpOwor
IyAgZWxzZQogICByZXR1cm4gbmFtZTsKLSNlbmRpZiAgLy8gX19HTElCQ1hYX18KKyMgIGVuZGlm
ICAvLyBHVEVTVF9IQVNfQ1hYQUJJX0hfIHx8IF9fSFBfYUNDCisKKyMgZWxzZQogCi0jZWxzZQog
ICByZXR1cm4gIjx0eXBlPiI7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19SVFRJCisKKyMgZW5kaWYg
IC8vIEdURVNUX0hBU19SVFRJCiB9CiAKKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVT
VF9IQVNfVFlQRURfVEVTVF9QCisKKy8vIEFzc2VydHlUeXBlRXE8VDEsIFQyPjo6dHlwZSBpcyBk
ZWZpbmVkIGlmZiBUMSBhbmQgVDIgYXJlIHRoZSBzYW1lCisvLyB0eXBlLiAgVGhpcyBjYW4gYmUg
dXNlZCBhcyBhIGNvbXBpbGUtdGltZSBhc3NlcnRpb24gdG8gZW5zdXJlIHRoYXQKKy8vIHR3byB0
eXBlcyBhcmUgZXF1YWwuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Citz
dHJ1Y3QgQXNzZXJ0VHlwZUVxOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBBc3Nl
cnRUeXBlRXE8VCwgVD4geworICB0eXBlZGVmIGJvb2wgdHlwZTsKK307CisKIC8vIEEgdW5pcXVl
IHR5cGUgdXNlZCBhcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGFyZ3VtZW50cyBvZiBjbGFz
cwogLy8gdGVtcGxhdGUgVHlwZXMuICBUaGlzIGFsbG93cyB1cyB0byBzaW11bGF0ZSB2YXJpYWRp
YyB0ZW1wbGF0ZXMKIC8vIChlLmcuIFR5cGVzPGludD4sIFR5cGU8aW50LCBkb3VibGU+LCBhbmQg
ZXRjKSwgd2hpY2ggQysrIGRvZXNuJ3QKQEAgLTE2MTEsNyArMTYzNiw3IEBAIHN0cnVjdCBUeXBl
czxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMs
IFQxNCwgVDE1LAogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCi0jZGVmaW5lIEdURVNUX1RFTVBM
QVRFXyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MKKyMgZGVmaW5lIEdURVNUX1RFTVBMQVRF
XyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MKIAogLy8gVGhlIHRlbXBsYXRlICJzZWxlY3Rv
ciIgc3RydWN0IFRlbXBsYXRlU2VsPFRtcGw+IGlzIHVzZWQgdG8KIC8vIHJlcHJlc2VudCBUbXBs
LCB3aGljaCBtdXN0IGJlIGEgY2xhc3MgdGVtcGxhdGUgd2l0aCBvbmUgdHlwZQpAQCAtMTYyOSw3
ICsxNjU0LDcgQEAgc3RydWN0IFRlbXBsYXRlU2VsIHsKICAgfTsKIH07CiAKLSNkZWZpbmUgR1RF
U1RfQklORF8oVG1wbFNlbCwgVCkgXAorIyBkZWZpbmUgR1RFU1RfQklORF8oVG1wbFNlbCwgVCkg
XAogICBUbXBsU2VsOjp0ZW1wbGF0ZSBCaW5kPFQ+Ojp0eXBlCiAKIC8vIEEgdW5pcXVlIHN0cnVj
dCB0ZW1wbGF0ZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUKQEAgLTMyOTEsNyAr
MzMxNiw5IEBAIHN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCiAvLyBJTlNUQU5USUFURV9UWVBFRF9URVNU
X0NBU0VfUCgpLgogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBUeXBlTGlzdCB7IHR5
cGVkZWYgVHlwZXMxPFQ+IHR5cGU7IH07CitzdHJ1Y3QgVHlwZUxpc3QgeworICB0eXBlZGVmIFR5
cGVzMTxUPiB0eXBlOworfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICB0eXBlbmFtZSBUNiwg
dHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLApAQCAt
MzMxMyw5ICszMzQwLDkgQEAgc3RydWN0IFR5cGVMaXN0PFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKICAgICAgIFQ0MSwgVDQyLCBU
NDMsIFQ0NCwgVDQ1LCBUNDYsIFQ0NywgVDQ4LCBUNDksIFQ1MD46OnR5cGUgdHlwZTsKIH07CiAK
KyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1Rf
UAorCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAK
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1Rf
UAotCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQRV9V
VElMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oLnB1bXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oLnB1bXAKaW5kZXggNWFl
ZDFlNTU0NGZhMmRhMTU4OTczNGNiYzNiNDE0MWI1ODdhMWYzMi4uMDAwMWE1ZDM5ZGZhNmQyNGM3
YzQxYTE2YTE1ZjJlMmE1Y2U5NDlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11
dGlsLmgucHVtcApAQCAtMjgsOCArMjgsNyBAQCAkdmFyIG4gPSA1MCAgJCQgTWF4aW11bSBsZW5n
dGggb2YgdHlwZSBsaXN0cyB3ZSB3YW50IHRvIHN1cHBvcnQuCiAvLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNv
bSAoWmhhbnlvbmcgV2FuKQorCiAKIC8vIFR5cGUgdXRpbGl0aWVzIG5lZWRlZCBmb3IgaW1wbGVt
ZW50aW5nIHR5cGVkIGFuZCB0eXBlLXBhcmFtZXRlcml6ZWQKIC8vIHRlc3RzLiAgVGhpcyBmaWxl
IGlzIGdlbmVyYXRlZCBieSBhIFNDUklQVC4gIERPIE5PVCBFRElUIEJZIEhBTkQhCkBAIC0zOSw1
OCArMzgsODQgQEAgJHZhciBuID0gNTAgICQkIE1heGltdW0gbGVuZ3RoIG9mIHR5cGUgbGlzdHMg
d2Ugd2FudCB0byBzdXBwb3J0LgogLy8gUGxlYXNlIGNvbnRhY3QgZ29vZ2xldGVzdGZyYW1ld29y
a0Bnb29nbGVncm91cHMuY29tIGlmIHlvdSBuZWVkCiAvLyBtb3JlLgogCisvLyBHT09HTEVURVNU
X0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRF
Uk5BTF9HVEVTVF9UWVBFX1VUSUxfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRF
Uk5BTF9HVEVTVF9UWVBFX1VUSUxfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0
LXBvcnQuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4KLQotI2lm
IEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AKKyNpbmNsdWRl
ICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKIC8vICNpZmRlZiBfX0dOVUNfXyBpcyB0
b28gZ2VuZXJhbCBoZXJlLiAgSXQgaXMgcG9zc2libGUgdG8gdXNlIGdjYyB3aXRob3V0IHVzaW5n
CiAvLyBsaWJzdGRjKysgKHdoaWNoIGlzIHdoZXJlIGN4eGFiaS5oIGNvbWVzIGZyb20pLgotI2lm
ZGVmIF9fR0xJQkNYWF9fCi0jaW5jbHVkZSA8Y3h4YWJpLmg+Ci0jZW5kaWYgIC8vIF9fR0xJQkNY
WF9fCisjIGlmIEdURVNUX0hBU19DWFhBQklfSF8KKyMgIGluY2x1ZGUgPGN4eGFiaS5oPgorIyBl
bGlmIGRlZmluZWQoX19IUF9hQ0MpCisjICBpbmNsdWRlIDxhY3h4X2RlbWFuZ2xlLmg+CisjIGVu
ZGlmICAvLyBHVEVTVF9IQVNIX0NYWEFCSV9IXwogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiBuYW1l
c3BhY2UgaW50ZXJuYWwgewogCi0vLyBBc3NlcnR5VHlwZUVxPFQxLCBUMj46OnR5cGUgaXMgZGVm
aW5lZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQotLy8gdHlwZS4gIFRoaXMgY2FuIGJlIHVz
ZWQgYXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0aGF0Ci0vLyB0d28gdHlw
ZXMgYXJlIGVxdWFsLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotc3Ry
dWN0IEFzc2VydFR5cGVFcTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgQXNzZXJ0
VHlwZUVxPFQsIFQ+IHsKLSAgdHlwZWRlZiBib29sIHR5cGU7Ci19OworLy8gQ2Fub25pY2FsaXpl
cyBhIGdpdmVuIG5hbWUgd2l0aCByZXNwZWN0IHRvIHRoZSBTdGFuZGFyZCBDKysgTGlicmFyeS4K
Ky8vIFRoaXMgaGFuZGxlcyByZW1vdmluZyB0aGUgaW5saW5lIG5hbWVzcGFjZSB3aXRoaW4gYHN0
ZGAgdGhhdCBpcworLy8gdXNlZCBieSB2YXJpb3VzIHN0YW5kYXJkIGxpYnJhcmllcyAoZS5nLiwg
YHN0ZDo6X18xYCkuICBOYW1lcyBvdXRzaWRlCisvLyBvZiBuYW1lc3BhY2Ugc3RkIGFyZSByZXR1
cm5lZCB1bm1vZGlmaWVkLgoraW5saW5lIHN0ZDo6c3RyaW5nIENhbm9uaWNhbGl6ZUZvclN0ZExp
YlZlcnNpb25pbmcoc3RkOjpzdHJpbmcgcykgeworICBzdGF0aWMgY29uc3QgY2hhciBwcmVmaXhb
XSA9ICJzdGQ6Ol9fIjsKKyAgaWYgKHMuY29tcGFyZSgwLCBzdHJsZW4ocHJlZml4KSwgcHJlZml4
KSA9PSAwKSB7CisgICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBlbmQgPSBzLmZpbmQoIjo6Iiwg
c3RybGVuKHByZWZpeCkpOworICAgIGlmIChlbmQgIT0gcy5ucG9zKSB7CisgICAgICAvLyBFcmFz
ZSBldmVyeXRoaW5nIGJldHdlZW4gdGhlIGluaXRpYWwgYHN0ZGAgYW5kIHRoZSBzZWNvbmQgYDo6
YC4KKyAgICAgIHMuZXJhc2Uoc3RybGVuKCJzdGQiKSwgZW5kIC0gc3RybGVuKCJzdGQiKSk7Cisg
ICAgfQorICB9CisgIHJldHVybiBzOworfQogCiAvLyBHZXRUeXBlTmFtZTxUPigpIHJldHVybnMg
YSBodW1hbi1yZWFkYWJsZSBuYW1lIG9mIHR5cGUgVC4KKy8vIE5COiBUaGlzIGZ1bmN0aW9uIGlz
IGFsc28gdXNlZCBpbiBHb29nbGUgTW9jaywgc28gZG9uJ3QgbW92ZSBpdCBpbnNpZGUgb2YKKy8v
IHRoZSB0eXBlZC10ZXN0LW9ubHkgc2VjdGlvbiBiZWxvdy4KIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotU3RyaW5nIEdldFR5cGVOYW1lKCkgewotI2lmIEdURVNUX0hBU19SVFRJCitzdGQ6OnN0cmlu
ZyBHZXRUeXBlTmFtZSgpIHsKKyMgaWYgR1RFU1RfSEFTX1JUVEkKIAogICBjb25zdCBjaGFyKiBj
b25zdCBuYW1lID0gdHlwZWlkKFQpLm5hbWUoKTsKLSNpZmRlZiBfX0dMSUJDWFhfXworIyAgaWYg
R1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBkZWZpbmVkKF9fSFBfYUNDKQogICBpbnQgc3RhdHVzID0g
MDsKICAgLy8gZ2NjJ3MgaW1wbGVtZW50YXRpb24gb2YgdHlwZWlkKFQpLm5hbWUoKSBtYW5nbGVz
IHRoZSB0eXBlIG5hbWUsCiAgIC8vIHNvIHdlIGhhdmUgdG8gZGVtYW5nbGUgaXQuCi0gIGNoYXIq
IGNvbnN0IHJlYWRhYmxlX25hbWUgPSBhYmk6Ol9fY3hhX2RlbWFuZ2xlKG5hbWUsIDAsIDAsICZz
dGF0dXMpOwotICBjb25zdCBTdHJpbmcgbmFtZV9zdHIoc3RhdHVzID09IDAgPyByZWFkYWJsZV9u
YW1lIDogbmFtZSk7CisjICAgaWYgR1RFU1RfSEFTX0NYWEFCSV9IXworICB1c2luZyBhYmk6Ol9f
Y3hhX2RlbWFuZ2xlOworIyAgIGVuZGlmICAvLyBHVEVTVF9IQVNfQ1hYQUJJX0hfCisgIGNoYXIq
IGNvbnN0IHJlYWRhYmxlX25hbWUgPSBfX2N4YV9kZW1hbmdsZShuYW1lLCAwLCAwLCAmc3RhdHVz
KTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZV9zdHIoc3RhdHVzID09IDAgPyByZWFkYWJsZV9u
YW1lIDogbmFtZSk7CiAgIGZyZWUocmVhZGFibGVfbmFtZSk7Ci0gIHJldHVybiBuYW1lX3N0cjsK
LSNlbHNlCisgIHJldHVybiBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKG5hbWVfc3Ry
KTsKKyMgIGVsc2UKICAgcmV0dXJuIG5hbWU7Ci0jZW5kaWYgIC8vIF9fR0xJQkNYWF9fCisjICBl
bmRpZiAgLy8gR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBfX0hQX2FDQworCisjIGVsc2UKIAotI2Vs
c2UKICAgcmV0dXJuICI8dHlwZT4iOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUlRUSQorCisjIGVu
ZGlmICAvLyBHVEVTVF9IQVNfUlRUSQogfQogCisjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwg
R1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorCisvLyBBc3NlcnR5VHlwZUVxPFQxLCBUMj46OnR5cGUg
aXMgZGVmaW5lZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQorLy8gdHlwZS4gIFRoaXMgY2Fu
IGJlIHVzZWQgYXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0aGF0CisvLyB0
d28gdHlwZXMgYXJlIGVxdWFsLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
Pgorc3RydWN0IEFzc2VydFR5cGVFcTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3Qg
QXNzZXJ0VHlwZUVxPFQsIFQ+IHsKKyAgdHlwZWRlZiBib29sIHR5cGU7Cit9OworCiAvLyBBIHVu
aXF1ZSB0eXBlIHVzZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBhcmd1bWVudHMgb2Yg
Y2xhc3MKIC8vIHRlbXBsYXRlIFR5cGVzLiAgVGhpcyBhbGxvd3MgdXMgdG8gc2ltdWxhdGUgdmFy
aWFkaWMgdGVtcGxhdGVzCiAvLyAoZS5nLiBUeXBlczxpbnQ+LCBUeXBlPGludCwgZG91YmxlPiwg
YW5kIGV0YyksIHdoaWNoIEMrKyBkb2Vzbid0CkBAIC0xNjksNyArMTk0LDcgQEAgc3RydWN0IFR5
cGVzPCRmb3IgaiwgW1tUJGpdXSRmb3Iga1tbLCBpbnRlcm5hbDo6Tm9uZV1dPiB7CiAKIG5hbWVz
cGFjZSBpbnRlcm5hbCB7CiAKLSNkZWZpbmUgR1RFU1RfVEVNUExBVEVfIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbGFzcworIyBkZWZpbmUgR1RFU1RfVEVNUExBVEVfIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjbGFzcwogCiAvLyBUaGUgdGVtcGxhdGUgInNlbGVjdG9yIiBzdHJ1Y3QgVGVtcGxhdGVT
ZWw8VG1wbD4gaXMgdXNlZCB0bwogLy8gcmVwcmVzZW50IFRtcGwsIHdoaWNoIG11c3QgYmUgYSBj
bGFzcyB0ZW1wbGF0ZSB3aXRoIG9uZSB0eXBlCkBAIC0xODcsNyArMjEyLDcgQEAgc3RydWN0IFRl
bXBsYXRlU2VsIHsKICAgfTsKIH07CiAKLSNkZWZpbmUgR1RFU1RfQklORF8oVG1wbFNlbCwgVCkg
XAorIyBkZWZpbmUgR1RFU1RfQklORF8oVG1wbFNlbCwgVCkgXAogICBUbXBsU2VsOjp0ZW1wbGF0
ZSBCaW5kPFQ+Ojp0eXBlCiAKIC8vIEEgdW5pcXVlIHN0cnVjdCB0ZW1wbGF0ZSB1c2VkIGFzIHRo
ZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUKQEAgLTI3MCw3ICsyOTUsOSBAQCBzdHJ1Y3QgVGVtcGxh
dGVzPCRmb3IgaiwgW1tUJGpdXSRmb3Iga1tbLCBOb25lVF1dPiB7CiAvLyBJTlNUQU5USUFURV9U
WVBFRF9URVNUX0NBU0VfUCgpLgogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBUeXBl
TGlzdCB7IHR5cGVkZWYgVHlwZXMxPFQ+IHR5cGU7IH07CitzdHJ1Y3QgVHlwZUxpc3QgeworICB0
eXBlZGVmIFR5cGVzMTxUPiB0eXBlOworfTsKIAogCiAkcmFuZ2UgaSAxLi5uCkBAIC0yNzksOSAr
MzA2LDkgQEAgc3RydWN0IFR5cGVMaXN0PFR5cGVzPCRmb3IgaSwgW1tUJGldXT4gPiB7CiAgIHR5
cGVkZWYgdHlwZW5hbWUgVHlwZXM8JGZvciBpLCBbW1QkaV1dPjo6dHlwZSB0eXBlOwogfTsKIAor
I2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9Q
CisKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAot
I2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9Q
Ci0KICNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UWVBFX1VU
SUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21ha2UvTWFrZWZpbGUg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tYWtlL01ha2VmaWxlCmluZGV4IDViMjdiNmEyY2Ji
MTNlMzgwZWU3NWQxODZmNTUzYmZiNWZhMTQ0YjUuLjlhYzc0NDkzYmE1NTI0NjU5N2U5MGI4OThm
YWU4NDdhZTM1OGVhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21ha2Uv
TWFrZWZpbGUKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbWFrZS9NYWtlZmlsZQpAQCAt
MjAsMTAgKzIwLDEyIEBAIEdURVNUX0RJUiA9IC4uCiBVU0VSX0RJUiA9IC4uL3NhbXBsZXMKIAog
IyBGbGFncyBwYXNzZWQgdG8gdGhlIHByZXByb2Nlc3Nvci4KLUNQUEZMQUdTICs9IC1JJChHVEVT
VF9ESVIpL2luY2x1ZGUKKyMgU2V0IEdvb2dsZSBUZXN0J3MgaGVhZGVyIGRpcmVjdG9yeSBhcyBh
IHN5c3RlbSBkaXJlY3RvcnksIHN1Y2ggdGhhdAorIyB0aGUgY29tcGlsZXIgZG9lc24ndCBnZW5l
cmF0ZSB3YXJuaW5ncyBpbiBHb29nbGUgVGVzdCBoZWFkZXJzLgorQ1BQRkxBR1MgKz0gLWlzeXN0
ZW0gJChHVEVTVF9ESVIpL2luY2x1ZGUKIAogIyBGbGFncyBwYXNzZWQgdG8gdGhlIEMrKyBjb21w
aWxlci4KLUNYWEZMQUdTICs9IC1nIC1XYWxsIC1XZXh0cmEKK0NYWEZMQUdTICs9IC1nIC1XYWxs
IC1XZXh0cmEgLXB0aHJlYWQKIAogIyBBbGwgdGVzdHMgcHJvZHVjZWQgYnkgdGhpcyBNYWtlZmls
ZS4gIFJlbWVtYmVyIHRvIGFkZCBuZXcgdGVzdHMgeW91CiAjIGNyZWF0ZWQgdG8gdGhlIGxpc3Qu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QtbWQu
c2xuIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1kLnNsbgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lMzZiMzNiNjIxNWMzNzRhZmMxMTZiNTIwODRiMTZmNDE0ODgwNDdhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1kLnNs
bgpAQCAtMCwwICsxLDU1IEBACitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxl
LCBGb3JtYXQgVmVyc2lvbiAxMS4wMAorIyBWaXN1YWwgQysrIEV4cHJlc3MgMjAxMAorUHJvamVj
dCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdC1tZCIs
ICJndGVzdC1tZC52Y3hwcm9qIiwgIntDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFC
RTh9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBD
OTFCQzk0Mn0iKSA9ICJndGVzdF9tYWluLW1kIiwgImd0ZXN0X21haW4tbWQudmN4cHJvaiIsICJ7
M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfSIKK0VuZFByb2plY3QKK1Byb2pl
Y3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3RfcHJv
ZF90ZXN0LW1kIiwgImd0ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qIiwgInsyNDg0ODU1MS1FRjRG
LTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0J9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4
LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdF91bml0dGVzdC1tZCIsICJn
dGVzdF91bml0dGVzdC1tZC52Y3hwcm9qIiwgIns0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVF
MEVENDgxQTJ9IgorRW5kUHJvamVjdAorR2xvYmFsCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNv
bmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24KKwkJRGVidWd8V2luMzIgPSBEZWJ1
Z3xXaW4zMgorCQlEZWJ1Z3x4NjQgPSBEZWJ1Z3x4NjQKKwkJUmVsZWFzZXxXaW4zMiA9IFJlbGVh
c2V8V2luMzIKKwkJUmVsZWFzZXx4NjQgPSBSZWxlYXNlfHg2NAorCUVuZEdsb2JhbFNlY3Rpb24K
KwlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHBvc3RTb2x1
dGlvbgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU4fS5EZWJ1Z3xXaW4z
Mi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNC
NDIzQjMxQkU4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJe0M4RjZDMTcy
LTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVn
fHg2NAorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU4fS5EZWJ1Z3x4NjQu
QnVpbGQuMCA9IERlYnVnfHg2NAorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMx
QkU4fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0M4RjZDMTcy
LTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVs
ZWFzZXxXaW4zMgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU4fS5SZWxl
YXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1
RkEtQzNCNDIzQjMxQkU4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezNB
RjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzM30uRGVidWd8V2luMzIuQWN0aXZlQ2Zn
ID0gRGVidWd8V2luMzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzM30u
RGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzIt
OTE0Ny1GNjhFRDk4NjIwMzN9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezNB
RjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzM30uRGVidWd8eDY0LkJ1aWxkLjAgPSBE
ZWJ1Z3x4NjQKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzM30uUmVsZWFz
ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzIt
OTE0Ny1GNjhFRDk4NjIwMzN9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIK
KwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzM30uUmVsZWFzZXx4NjQuQWN0
aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2
MjAzM30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXsyNDg0ODU1MS1FRjRG
LTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0J9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdp
bjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0J9LkRlYnVnfFdpbjMy
LkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5
QkMzRUNCfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXsyNDg0ODU1MS1FRjRG
LTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0J9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJ
CXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0J9LlJlbGVhc2V8V2luMzIuQWN0
aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5
QkMzRUNCfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXsyNDg0ODU1
MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0J9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJl
bGVhc2V8eDY0CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0J9LlJlbGVh
c2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0Mt
RjRFRTBFRDQ4MUEyfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7NEQ5
RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0g
RGVidWd8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uRGVi
dWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0Mt
RjRFRTBFRDQ4MUEyfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7NEQ5RkRGQjUt
OTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJl
bGVhc2V8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uUmVs
ZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7NEQ5RkRGQjUtOTg2QS00MTM5
LTgyM0MtRjRFRTBFRDQ4MUEyfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAor
CQl7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfS5SZWxlYXNlfHg2NC5CdWls
ZC4wID0gUmVsZWFzZXx4NjQKKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihTb2x1
dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24KKwkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNF
CisJRW5kR2xvYmFsU2VjdGlvbgorRW5kR2xvYmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QtbWQudmN4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC1tZC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2YTZmZjEyZjdi
NTc5MDE1YWJiMTQxNTgwZTJmMmQ0ZmRhNmY5YzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QtbWQudmN4cHJvagpAQCAtMCwwICsxLDE0
OSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0
IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8v
c2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdy
b3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJh
dGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Zzwv
Q29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Q
cm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0i
RGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgor
ICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlv
bj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+Cisg
ICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRm
b3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmln
dXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxh
dGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQ
cm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0M4RjZDMTcy
LTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH08L1Byb2plY3RHdWlkPgorICAgIDxLZXl3b3Jk
PldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8
UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRp
b25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJT
ZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9Q
bGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExh
YmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFy
eTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJh
Y3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAg
PC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24i
PgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlw
ZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0
Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+Cisg
IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9u
VHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0
Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxh
dGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChW
Q1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFi
ZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJS
b290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0i
ZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJv
cHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgor
ICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9q
ZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMi
IENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0lt
cG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAg
PEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3Jt
IiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVl
dHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4k
KFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilc
TWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERh
dGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9
IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJz
aW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8T3V0RGlyIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKFNv
bHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwv
T3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgor
ICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSkt
JChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKSQoUHJv
amVjdE5hbWUpXDwvSW50RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0k
KENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpJChQcm9qZWN0
TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RkPC9UYXJnZXROYW1lPgorICA8
L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29sdXRp
b25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXRE
aXI+CisgICAgPEludERpcj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8
VGFyZ2V0TmFtZT5ndGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJv
cGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RkPC9UYXJnZXROYW1lPgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0
PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1p
emF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19N
QVg9MTA7X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxk
PgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRp
bWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9S
dW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29t
cGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgor
ICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9y
bWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5c
aW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWIgLz4KKyAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxDbENvbXBp
bGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtfREVCVUc7X0xJ
QjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Cisg
ICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNo
ZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRp
bWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxl
ZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAg
ICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRp
b25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNs
dWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgorICA8L0l0ZW1E
ZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBp
bGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0x
MDtOREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGlt
ZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVk
SGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAg
IDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlv
bkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1
ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGliIC8+CisgIDwvSXRlbURl
ZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxDbENvbXBpbGU+
CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtO
REVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxp
YnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVh
ZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxE
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZv
cm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7
Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGliIC8+CisgIDwvSXRlbURlZmlu
aXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4u
XHNyY1xndGVzdC1hbGwuY2MiPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
Pi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMy
JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2
NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+
CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdl
dHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1w
b3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1kLnZjeHByb2ou
ZmlsdGVycyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC1tZC52Y3hw
cm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjllZGVmZjIzMDZlMWZhYzkzZTc3YzU1M2YwNTZiNzBm
ZDJhNjg1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMv
MjAxMC9ndGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxOCBAQAor77u/PD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0i
NC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWls
ZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxl
cyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEz
MkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4
eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVy
PgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVu
dGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVu
dGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRl
bnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xndGVzdC1hbGwuY2MiPgorICAgICAgPEZp
bHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3Jv
dXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LnNsbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC5zbG4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FjZDVjMGNlNmI5
MzI4NmJhNTI3MGY4MzExZjdkNjQ5MjFlMDJlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC5zbG4KQEAgLTAsMCArMSw1NSBAQAorTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTEuMDAK
KyMgVmlzdWFsIEMrKyBFeHByZXNzIDIwMTAKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAt
OEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3QiLCAiZ3Rlc3QudmN4cHJvaiIsICJ7QzhGNkMx
NzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4
QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3RfbWFpbiIsICJn
dGVzdF9tYWluLnZjeHByb2oiLCAiezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAz
Mn0iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5
MUJDOTQyfSIpID0gImd0ZXN0X3VuaXR0ZXN0IiwgImd0ZXN0X3VuaXR0ZXN0LnZjeHByb2oiLCAi
ezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0iCitFbmRQcm9qZWN0CitQcm9q
ZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0X3By
b2RfdGVzdCIsICJndGVzdF9wcm9kX3Rlc3QudmN4cHJvaiIsICJ7MjQ4NDg1NTEtRUY0Ri00N0U4
LTlBOUQtRUE0RDQ5QkMzRUNBfSIKK0VuZFByb2plY3QKK0dsb2JhbAorCUdsb2JhbFNlY3Rpb24o
U29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCisJCURlYnVnfFdp
bjMyID0gRGVidWd8V2luMzIKKwkJRGVidWd8eDY0ID0gRGVidWd8eDY0CisJCVJlbGVhc2V8V2lu
MzIgPSBSZWxlYXNlfFdpbjMyCisJCVJlbGVhc2V8eDY0ID0gUmVsZWFzZXx4NjQKKwlFbmRHbG9i
YWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3Jtcykg
PSBwb3N0U29sdXRpb24KKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30u
RGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0M4RjZDMTcyLTU2RjItNEU3
Ni1CNUZBLUMzQjQyM0IzMUJFN30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJ
CXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnfHg2NC5BY3RpdmVD
ZmcgPSBEZWJ1Z3x4NjQKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30u
RGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZB
LUMzQjQyM0IzMUJFN30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJ
CXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LlJlbGVhc2V8V2luMzIuQnVp
bGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0Iz
MUJFN30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0M4RjZDMTcyLTU2
RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8
eDY0CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzJ9LkRlYnVnfFdpbjMy
LkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhF
RDk4NjIwMzJ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7M0FGNTRDOEEt
MTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8
eDY0CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzJ9LkRlYnVnfHg2NC5C
dWlsZC4wID0gRGVidWd8eDY0CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIw
MzJ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7M0FGNTRDOEEt
MTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxl
YXNlfFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzJ9LlJlbGVh
c2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0
Ny1GNjhFRDk4NjIwMzJ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7NEQ5
RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUExfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcg
PSBEZWJ1Z3xXaW4zMgorCQl7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUExfS5E
ZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04
MjNDLUY0RUUwRUQ0ODFBMX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7NEQ5
RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUExfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERl
YnVnfHg2NAorCQl7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUExfS5SZWxlYXNl
fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04
MjNDLUY0RUUwRUQ0ODFBMX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgor
CQl7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUExfS5SZWxlYXNlfHg2NC5BY3Rp
dmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4
MUExfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezI0ODQ4NTUxLUVGNEYt
NDdFOC05QTlELUVBNEQ0OUJDM0VDQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2lu
MzIKKwkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQX0uRGVidWd8V2luMzIu
QnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlC
QzNFQ0F9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezI0ODQ4NTUxLUVGNEYt
NDdFOC05QTlELUVBNEQ0OUJDM0VDQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJ
ezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQX0uUmVsZWFzZXxXaW4zMi5BY3Rp
dmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlC
QzNFQ0F9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezI0ODQ4NTUx
LUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVs
ZWFzZXx4NjQKKwkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQX0uUmVsZWFz
ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNl
Y3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uCisJCUhpZGVTb2x1dGlvbk5v
ZGUgPSBGQUxTRQorCUVuZEdsb2JhbFNlY3Rpb24KK0VuZEdsb2JhbApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LnZjeHByb2ogYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDZmNWM3
YWYyNDUzOGQzOThjMzYyNmM4ZWNjZTkxNDhjOTZmMDFkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LnZjeHByb2oKQEAgLTAsMCArMSwx
NDkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVj
dCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDov
L3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1H
cm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3Vy
YXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8
L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwv
UHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9
IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4K
KyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRp
b24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgor
ICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0
Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8
UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZp
Z3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1Bs
YXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8
UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntDOEY2QzE3
Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9PC9Qcm9qZWN0R3VpZD4KKyAgICA8S2V5d29y
ZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9q
ZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0
aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVy
U2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwv
UGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBM
YWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJh
cnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFy
YWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+Cisg
IDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9u
Ij4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5
cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxh
dGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlv
blR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNl
dD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1Bs
YXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQo
VkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExh
YmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249
ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnBy
b3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4K
KyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJv
amVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3Bz
IiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9J
bXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAg
IDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3Jt
KS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0
LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9y
bSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hl
ZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBE
YXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVs
PSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVy
c2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPE91dERpciBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChT
b2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8
L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50
RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0
Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoT3V0RGly
KXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFBy
b3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3x4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQo
UGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERp
cil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0ZDwv
VGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAg
PE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZp
Z3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3RO
YW1lKVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Q
cm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3Rk
PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgor
ICAgIDxUYXJnZXROYW1lPmd0ZXN0PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+Cisg
IDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXph
dGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRp
b25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxk
PnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVG
YXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVs
dGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
cj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVs
MzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENv
bnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgor
ICAgIDxMaWIgLz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25H
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2
NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRp
bWl6YXRpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElD
X01BWD0xMDtfREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVj
a3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVh
ZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAg
ICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJu
aW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8
L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExp
YiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
PgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7
X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwv
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJl
YWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8
L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdM
ZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVi
dWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
Pi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGliIC8+
CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAg
IDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklB
RElDX01BWD0xMDtOREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwv
UnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNv
bXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4K
KyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZv
cm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4u
XGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGliIC8+CisgIDwv
SXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXC4uXHNyY1xndGVzdC1hbGwuY2MiPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
KTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9J
dGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQu
Q3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+
CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LnZj
eHByb2ouZmlsdGVycyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC52
Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjllZGVmZjIzMDZlMWZhYzkzZTc3YzU1M2YwNTZi
NzBmZDJhNjg1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21z
dmMvMjAxMC9ndGVzdC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxOCBAQAor77u/PD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0i
NC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWls
ZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxl
cyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEz
MkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4
eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVy
PgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVu
dGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVu
dGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRl
bnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xndGVzdC1hbGwuY2MiPgorICAgICAgPEZp
bHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3Jv
dXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X21haW4tbWQudmN4cHJvaiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9tYWluLW1kLnZjeHByb2oK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uM2Q3NzM4OTViNzAyM2RlODQ3NDBkNjJiYmE2M2VjOTAwZjc0YzkyNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9t
YWluLW1kLnZjeHByb2oKQEAgLTAsMCArMSwxNTQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xz
VmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9w
ZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRp
b25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgor
ICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZv
cm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFBy
b2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJh
dGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3Jt
PgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9u
IEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwv
Q29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Q
cm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0i
UmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlv
bj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3Vy
YXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+
CisgICAgPFByb2plY3RHdWlkPnszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9
PC9Qcm9qZWN0R3VpZD4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJv
cGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29m
dC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZp
Z3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1
cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pgor
ICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5
R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENv
bmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxD
aGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNl
dD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3Rh
dGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5
dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9v
bHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1
cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJh
dGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAg
ICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdy
b3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5w
cm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwv
SW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgor
ICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9z
b2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0
Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVy
dHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0
LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9v
dERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2Nh
bEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBM
YWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0
cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJyki
IExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPElt
cG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0
aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3Jv
dXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlH
cm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0Rmls
ZVZlcnNpb24+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQ
bGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE91dERp
cikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIp
JChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Cisg
ICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikk
KFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAg
ICA8SW50RGlyPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXRO
YW1lPmd0ZXN0X21haW5kPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9w
ZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXx4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQo
UGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERp
cikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluPC9U
YXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8
VGFyZ2V0TmFtZT5ndGVzdF9tYWluZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluPC9UYXJnZXRO
YW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8
Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgor
ICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RF
QlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRp
b25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAg
PEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+
CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGli
cmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFk
ZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9y
bWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsu
LlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWIgLz4KKyAgPC9JdGVtRGVmaW5p
dGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAg
ICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8UHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtfREVCVUc7X0xJQjslKFByZXBy
b2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QmFz
aWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAg
ICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5
PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4K
KyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4u
OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9u
R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAg
ICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtOREVCVUc7
X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+
CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+
CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgor
ICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0lu
Zm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4K
KyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGliIC8+CisgIDwvSXRlbURlZmluaXRpb25H
cm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0xJ
QjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Cisg
ICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Cisg
ICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAg
ICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9y
bWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAg
ICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGliIC8+CisgIDwvSXRlbURlZmluaXRpb25Hcm91
cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xndGVz
dF9tYWluLmNjIj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLjsuLlxp
bmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uOy4uXGlu
Y2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi4uOy4u
XGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLjsu
LlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRl
bUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Imd0ZXN0LW1kLnZjeHByb2oi
PgorICAgICAgPFByb2plY3Q+e2M4ZjZjMTcyLTU2ZjItNGU3Ni1iNWZhLWMzYjQyM2IzMWJlOH08
L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPElt
cG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4K
KyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91
cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qLmZp
bHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi1tZC52
Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI2Yzc3M2NjYjE3NzZhNThkNmY0ZmQ2NWExNmNi
NTBmNDIyZDE1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21z
dmMvMjAxMC9ndGVzdF9tYWluLW1kLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDE4IEBACivv
u788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNW
ZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Bl
ci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291
cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYt
QTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+
Y3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAg
PC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVu
aXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1Vu
aXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4
c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdy
b3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXGd0ZXN0X21haW4uY2MiPgor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAg
PC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X21haW4udmN4
cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9tYWluLnZjeHBy
b2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGZiMjU4OTdjOGIxYzJkYmIzY2Y2YzEzZTliNDE5M2ZjOWFlMDUwYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVz
dF9tYWluLnZjeHByb2oKQEAgLTAsMCArMSwxNjIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xz
VmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9w
ZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRp
b25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgor
ICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZv
cm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFBy
b2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJh
dGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3Jt
PgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9u
IEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwv
Q29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Q
cm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0i
UmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlv
bj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3Vy
YXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+
CisgICAgPFByb2plY3RHdWlkPnszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzJ9
PC9Qcm9qZWN0R3VpZD4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJv
cGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29m
dC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZp
Z3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1
cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pgor
ICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5
R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENv
bmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxD
aGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNl
dD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3Rh
dGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5
dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9v
bHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1
cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJh
dGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAg
ICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdy
b3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5w
cm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwv
SW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgor
ICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9z
b2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0
Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVy
dHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0
LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9v
dERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2Nh
bEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBM
YWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0
cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJyki
IExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPElt
cG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0
aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3Jv
dXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlH
cm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0Rmls
ZVZlcnNpb24+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQ
bGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE91dERp
cil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlv
bkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERp
cj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+
CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29s
dXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9P
dXREaXI+CisgICAgPEludERpcj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGly
PgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X21haW5kPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5
R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChT
b2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAg
PEludERpcj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJn
ZXROYW1lPmd0ZXN0X21haW48L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFBy
b3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3xXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X21haW5kPC9UYXJnZXROYW1lPgor
ICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxUYXJnZXROYW1l
Pmd0ZXN0X21haW48L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZp
bml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2Fi
bGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7
X1ZBUklBRElDX01BWD0xMDtfREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwv
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWlu
aW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8
L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVk
RGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAg
PC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5n
TGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0Rl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYj4K
KyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpZC5saWI8L091dHB1dEZp
bGU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0
aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwv
T3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJ
QURJQ19NQVg9MTA7X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0
Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlU
aHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4K
KyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwv
V2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFi
YXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAg
IDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKWQubGliPC9P
dXRwdXRGaWxlPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0xJQjslKFByZXByb2Nl
c3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGlt
ZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGls
ZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZl
bD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlBy
b2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29t
cGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFt
ZSkubGliPC9PdXRwdXRGaWxlPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+
CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXBy
b2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAg
PFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFBy
ZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJu
aW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZv
cm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAg
PC9DbENvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJv
amVjdE5hbWUpLmxpYjwvT3V0cHV0RmlsZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlv
bkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3Jj
XGd0ZXN0X21haW4uY2MiPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4u
Oy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Li47
Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+
Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCci
Pi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cisg
IDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iZ3Rlc3QudmN4cHJv
aiI+CisgICAgICA8UHJvamVjdD57YzhmNmMxNzItNTZmMi00ZTc2LWI1ZmEtYzNiNDIzYjMxYmU3
fTwvUHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8
SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAv
PgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdy
b3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9tYWluLnZjeHByb2ouZmls
dGVycyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9tYWluLnZjeHBy
b2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjZjNzczY2NiMTc3NmE1OGQ2ZjRmZDY1YTE2Y2I1MGY0
MjJkMTU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8y
MDEwL2d0ZXN0X21haW4udmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTggQEAKK++7vzw/eG1s
IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249
IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVp
bGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmls
ZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJB
MzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7Yztj
eHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRl
cj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRl
bnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRl
bnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0
ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3RfbWFpbi5jYyI+CisgICAgICA8
RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1H
cm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LW1kLnZj
eHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0
LW1kLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODMwZTVkY2U0MTA2MjNjMTViNjhmZWE3MThlZDk0YzQ1
N2YwNzBmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMv
MjAxMC9ndGVzdF9wcm9kX3Rlc3QtbWQudmN4cHJvagpAQCAtMCwwICsxLDE5OSBAQAor77u/PD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJn
ZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNy
b3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQ
cm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRl
PSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlv
bj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmln
dXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4K
KyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRm
b3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJv
amVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmln
dXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9Q
bGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmln
dXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxl
YXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAg
PC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3Vw
IExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezI0ODQ4NTUxLUVGNEYtNDdFOC05
QTlELUVBNEQ0OUJDM0VDQn08L1Byb2plY3RHdWlkPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwv
S2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJn
ZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxp
Y2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwv
Q2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0
PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJh
dGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9u
VHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQ
bGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+
CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3Vy
YXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVy
U2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwv
UGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFi
ZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwv
Q29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3Rl
clNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Q
cm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9z
b2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5n
cyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlT
aGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNw
cC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFw
cERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJl
bD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilc
TWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygn
JChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExh
YmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9y
dEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChV
c2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRp
b249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2Vy
LnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91
cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwv
SW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8
UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Q
cm9qZWN0RmlsZVZlcnNpb24+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9u
TmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGly
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVudGFs
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij50cnVlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0xpbmtJ
bmNyZW1lbnRhbD4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUp
XCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4k
KE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
PmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+ZmFsc2U8L0xp
bmtJbmNyZW1lbnRhbD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAg
IDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25m
aWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUp
XDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X3Byb2RfdGVzdDwvVGFyZ2V0TmFtZT4K
KyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE91dERpcj4kKFNv
bHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwv
T3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+Cisg
ICAgPFRhcmdldE5hbWU+Z3Rlc3RfcHJvZF90ZXN0PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5
R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9wcm9kX3Rl
c3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+
CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfcHJvZF90ZXN0PC9UYXJnZXROYW1lPgorICA8L1Byb3Bl
cnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAg
ICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nl
c3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19DT05TT0xFOyUo
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAg
IDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRp
bWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1
bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAg
ICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJu
aW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZv
cm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAg
PC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9u
PnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VG
aWxlPiQoT3V0RGlyKWd0ZXN0X3Byb2RfdGVzdC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Cisg
ICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5l
Pk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0
aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAg
IDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfQ09OU09MRTslKFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8
QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4K
KyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJy
YXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+Cisg
ICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5m
b3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pgor
ICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjsl
KEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJ
bmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3Jh
bURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF9wcm9kX3Rlc3QucGRiPC9Qcm9ncmFtRGF0YWJh
c2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5r
PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgor
ICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZB
UklBRElDX01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8
L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhy
ZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xl
dmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgor
ICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3Jt
YXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxPcHRp
bWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPEVuYWJsZUNP
TURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICAgIDxUYXJnZXRNYWNo
aW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZp
bml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8Q2xDb21waWxlPgor
ICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRF
QlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1l
TGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVy
PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1h
dD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5c
Li47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURl
YnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1
YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRy
dWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8
L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3Jv
dXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XGd0
ZXN0X3Byb2RfdGVzdC5jYyI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+
Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4u
LjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgICAgPC9Q
cmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgICAgPC9QcmVj
b21waWxlZEhlYWRlcj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi4u
Oy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4u
LjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgICA8
L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICAgIDwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24uY2MiPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3xXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
KTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVy
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4K
KyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVy
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0
JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0
ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHRl
c3RccHJvZHVjdGlvbi5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8
UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJndGVzdF9tYWluLW1kLnZjeHByb2oiPgorICAgICAg
PFByb2plY3Q+ezNhZjU0YzhhLTEwYmYtNDMzMi05MTQ3LWY2OGVkOTg2MjAzM308L1Byb2plY3Q+
CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9q
ZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9y
dEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJv
amVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjeHByb2ouZmlsdGVy
cyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9wcm9kX3Rlc3QtbWQu
dmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjMzY3MzEwYWVlNjI2ZjRlYzljMWRmZmRhNzMz
YTUwZjJhNWM1ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9t
c3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDI2
IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3Qg
VG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2Rl
dmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVk
ZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1
LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVu
c2lvbnM+Y3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+
CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAg
ICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJG
Qn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5s
O2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8
SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxndGVzdF9wcm9k
X3Rlc3QuY2MiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0Ns
Q29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RccHJvZHVjdGlvbi5j
YyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxl
PgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXC4uXHRlc3RccHJvZHVjdGlvbi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9G
aWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L21zdmMvMjAxMC9ndGVzdF9wcm9kX3Rlc3QudmN4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9wcm9kX3Rlc3QudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDJl
MTM1MTFkZjI4YTUzMjIyNDIwNTdlNzU0MWY5NjU2NzBkZGEyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC52Y3hwcm9q
CkBAIC0wLDAgKzEsMTkxIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYt
OCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIg
eG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAw
MyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFBy
b2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1
cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0
Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJh
dGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0Nv
bmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2pl
Y3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxl
YXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+
CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3Vy
YXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4K
KyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxh
dGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0
ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0
R3VpZD57MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfTwvUHJvamVjdEd1aWQ+
CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+Cisg
IDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQu
cHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAg
ICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAg
IDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9v
bHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3Bl
cnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+
QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlC
eXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRv
b2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25m
aWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3Vy
YXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Cisg
ICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlH
cm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZp
Z3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFj
dGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEw
MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVj
dD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3Jv
dXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9y
dEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIk
KFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRp
dGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVz
ZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdy
b3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9y
dCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIu
cHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQo
UGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgor
ICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+
CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxh
dGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNy
b3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBs
YXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVy
dHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0
LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9v
dERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2Nh
bEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAg
TGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZp
bGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8T3V0RGly
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRp
b24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKXRlbXBcJChQcm9qZWN0TmFtZSlc
PC9JbnREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgor
ICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPE91dERpciBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRp
b24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1l
KVw8L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50
YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgPC9Q
cm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRp
cikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4K
KyAgICA8SW50RGlyPiQoT3V0RGlyKXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgIDwv
UHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlv
bkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERp
cj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+Cisg
IDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBp
bGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtfREVCVUc7X0NP
TlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25z
PgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJh
c2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Cisg
ICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4K
KyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAg
PFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0
aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4K
KyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3Jt
YXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRh
YmFzZUZpbGU+JChPdXREaXIpZ3Rlc3RfcHJvZF90ZXN0LnBkYjwvUHJvZ3JhbURhdGFiYXNlRmls
ZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1h
Y2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURl
ZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8Q2xDb21waWxlPgor
ICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXBy
b2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19DT05TT0xF
OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAg
ICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hl
Y2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxp
YnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4K
KyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4u
OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1
Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9n
cmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKWd0ZXN0X3Byb2RfdGVzdC5wZGI8L1Byb2dyYW1EYXRh
YmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xp
bms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+
CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtf
VkFSSUFESUNfTUFYPTEwO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25z
KTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlU
aHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9Q
cmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2
ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4u
LlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+Cisg
ICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1h
dGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPE9wdGlt
aXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8RW5hYmxlQ09N
REFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPFRhcmdldE1hY2hp
bmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmlu
aXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxDbENvbXBpbGU+Cisg
ICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtOREVC
VUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmlu
aXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJy
YXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+Cisg
ICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5m
b3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pgor
ICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjsl
KEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJ
bmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lz
dGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwv
T3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5h
YmxlQ09NREFURm9sZGluZz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4K
KyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3Rf
cHJvZF90ZXN0LmNjIj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLjsu
LlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uOy4u
XGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgICA8L1ByZWNv
bXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgICA8L1ByZWNvbXBp
bGVkSGVhZGVyPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li47Li5c
aW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uOy4u
XGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICAgIDwvUHJl
Y29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgICAgPC9QcmVj
b21waWxlZEhlYWRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXC4uXHRlc3RccHJvZHVjdGlvbi5jYyI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgor
ICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAg
ICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxX
aW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+
CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4K
KyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdy
b3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxw
cm9kdWN0aW9uLmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9q
ZWN0UmVmZXJlbmNlIEluY2x1ZGU9Imd0ZXN0X21haW4udmN4cHJvaiI+CisgICAgICA8UHJvamVj
dD57M2FmNTRjOGEtMTBiZi00MzMyLTkxNDctZjY4ZWQ5ODYyMDMyfTwvUHJvamVjdD4KKyAgICA8
L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQo
VkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAg
TGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0Pgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9wcm9kX3Rlc3QudmN4cHJvai5maWx0ZXJzIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC52Y3hwcm9qLmZpbHRl
cnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWMzNjczMTBhZWU2MjZmNGVjOWMxZGZmZGE3MzNhNTBmMmE1YzVlYwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVz
dF9wcm9kX3Rlc3QudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMjYgQEAKK++7vzw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQu
MCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQv
MjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMi
PgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJE
NzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjeHg7
ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4K
KyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRp
Zmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRp
Zmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5z
aW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XGd0ZXN0X3Byb2RfdGVzdC5jYyI+CisgICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxwcm9kdWN0aW9uLmNjIj4KKyAgICAgIDxGaWx0
ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3Vw
PgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxwcm9k
dWN0aW9uLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0Ns
SW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0
ZXN0X3VuaXR0ZXN0LW1kLnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIw
MTAvZ3Rlc3RfdW5pdHRlc3QtbWQudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45M2IwZGM0ZTFhNGUwM2Fl
OGQ2M2VmZjM2YzY3YmZlODIzNjVmMTg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjeHByb2oKQEAgLTAsMCAr
MSwxODggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJv
amVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0
cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0
ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZp
Z3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVi
dWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAg
IDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlv
bj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3Vy
YXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIi
PgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQ
bGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAg
ICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENv
bmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8
L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgor
ICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPns0RDlG
REZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTJ9PC9Qcm9qZWN0R3VpZD4KKyAgICA8S2V5
d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQ
cm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4K
KyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1
cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3Rl
clNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8
L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIg
TGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlv
bjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJh
Y3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAg
PC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24i
PgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+
CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZv
cm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8
UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5
cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVs
dGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9y
bVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFy
Z2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0i
RXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIg
TGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlz
dHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycp
IiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJ
bXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9
IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29u
ZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0
R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1w
b3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+
CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+
CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxh
dGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNy
b3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBs
YXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNl
ck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+
MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRp
b25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXRE
aXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAg
PExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVt
ZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPE91dERpciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0aW9uRGly
KSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgor
ICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPExp
bmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVt
ZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFBy
b3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3x4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQo
UGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERp
cikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF91bml0dGVz
dDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Cisg
ICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENv
bmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpJChQcm9qZWN0TmFt
ZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfdW5pdHRlc3Q8L1RhcmdldE5hbWU+
CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxUYXJnZXROYW1l
Pmd0ZXN0X3VuaXR0ZXN0PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9w
ZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X3VuaXR0ZXN0PC9UYXJnZXROYW1l
PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xD
b21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAg
ICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVH
O19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAg
IDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tz
PgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxp
YnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4K
KyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4u
OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1
Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9n
cmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKWd0ZXN0X3VuaXR0ZXN0LnBkYjwvUHJvZ3JhbURhdGFi
YXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRh
cmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwv
SXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8Q2xDb21w
aWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAg
PFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19D
T05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50
aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwv
UnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxl
ZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAg
ICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRp
b25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNs
dWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2Vu
ZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAg
ICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKWd0ZXN0X3VuaXR0ZXN0LnBkYjwvUHJv
Z3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgor
ICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25H
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25z
PldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFy
eT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhl
YWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8
L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRh
YmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVE
ZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Cisg
ICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAg
IDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8
VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAg
PC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPENs
Q29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNf
TUFYPTEwO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERM
TDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21w
aWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Cisg
ICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxp
bmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8
R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4K
KyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPE9wdGltaXplUmVm
ZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8RW5hYmxlQ09NREFURm9s
ZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVm
aW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Li5cdGVzdFxndGVzdF91bml0dGVzdC5jYyI+CisgICAgICA8T3B0aW1pemF0aW9uIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5NaW5TcGFj
ZTwvT3B0aW1pemF0aW9uPgorICAgICAgPE9wdGltaXphdGlvbiBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPk1pblNwYWNlPC9PcHRpbWl6YXRp
b24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Li47Li5caW5jbHVkZTsl
KEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4uLjsuLlxpbmNsdWRlOyUo
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5EZWZhdWx0PC9CYXNpY1J1bnRpbWVDaGVj
a3M+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+RGVmYXVsdDwvQmFzaWNSdW50aW1lQ2hlY2tz
PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+
CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Cisg
ICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9y
bWF0aW9uRm9ybWF0PgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5Qcm9ncmFtRGF0YWJh
c2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVy
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0
JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0
ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJn
dGVzdF9tYWluLW1kLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+ezNhZjU0YzhhLTEwYmYtNDMz
Mi05MTQ3LWY2OGVkOTg2MjAzM308L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgor
ICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jv
c29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJn
ZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rl
c3RfdW5pdHRlc3QtbWQudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
bXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NDdkYWU1MTNlODYwMTUzYTVjZWMyZjQ1YjQ4Y2RiYzc1ZjliNmNlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0LW1kLnZj
eHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDE4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRw
Oi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRl
bUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlx
dWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9Vbmlx
dWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hw
ajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJ
bmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1Mzgw
LTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8
RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9G
aWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cLi5cdGVzdFxndGVzdF91bml0dGVzdC5jYyI+CisgICAgICA8RmlsdGVyPlNvdXJj
ZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJv
amVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfdW5pdHRlc3QudmN4cHJvaiBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC52Y3hwcm9qCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVjNmFiZGU3ZGExN2UyOWVkMjQ3NmY3MGM2OTQxNWFlOTY4ZjIxZjMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfdW5pdHRlc3Qu
dmN4cHJvagpAQCAtMCwwICsxLDE4MCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9u
PSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1
aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgor
ICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8
Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4z
MjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENv
bmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRl
YnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAg
PC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVk
ZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1
cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RD
b25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNl
fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAg
ICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4K
KyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8
UHJvamVjdEd1aWQ+ezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX08L1Byb2pl
Y3RHdWlkPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdy
b3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5E
ZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlv
biI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlw
ZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0
Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+Cisg
IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRp
b25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0
Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxh
dGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJl
bD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9D
b25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVy
U2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAg
IDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAg
PENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29s
c2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0
IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPElt
cG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+Cisg
IDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJv
amVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3Bz
IiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9J
bXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAg
IDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3Jt
KS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0
LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9y
bSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlT
aGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNw
cC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFw
cERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9
IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJl
bD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0
eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1By
b2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAg
PE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25m
aWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE91dERpcil0ZW1wXCQoUHJvamVj
dE5hbWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0xpbmtJbmNyZW1l
bnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxP
dXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25m
aWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKXRlbXBcJChQcm9q
ZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0lu
Y3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+
CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29s
dXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9P
dXREaXI+CisgICAgPEludERpcj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGly
PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8T3V0RGlyPiQo
U29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilc
PC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50
RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8
Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgor
ICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RF
QlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAg
ICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hl
Y2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxp
YnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4K
KyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4u
OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1
Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9n
cmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKWd0ZXN0X3VuaXR0ZXN0LnBkYjwvUHJvZ3JhbURhdGFi
YXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRh
cmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwv
SXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8Q2xDb21w
aWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAg
PFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19D
T05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50
aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVu
dGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhl
YWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8
RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25G
b3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRl
Oy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJh
dGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAg
IDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKWd0ZXN0X3VuaXR0ZXN0LnBkYjwvUHJvZ3Jh
bURhdGFiYXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAg
IDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJ
TjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5N
dWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5V
c2U8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5p
bmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwv
RGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGlu
az4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0lu
Zm9ybWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8
T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxFbmFi
bGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8VGFyZ2V0
TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVt
RGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPENsQ29tcGls
ZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEw
O05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGlt
ZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRl
cj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVi
dWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3Jt
YXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4u
XC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVE
ZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxT
dWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50
cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVl
PC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdy
b3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxn
dGVzdF91bml0dGVzdC5jYyI+CisgICAgICA8T3B0aW1pemF0aW9uIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5NaW5TcGFjZTwvT3B0aW1p
emF0aW9uPgorICAgICAgPE9wdGltaXphdGlvbiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPk1pblNwYWNlPC9PcHRpbWl6YXRpb24+CisgICAg
ICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAg
ICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAg
ICA8QmFzaWNSdW50aW1lQ2hlY2tzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8V2luMzInIj5EZWZhdWx0PC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAg
ICA8QmFzaWNSdW50aW1lQ2hlY2tzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8eDY0JyI+RGVmYXVsdDwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8
UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8RGVi
dWdJbmZvcm1hdGlvbkZvcm1hdCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9y
bWF0PgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0
JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAg
ICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAg
ICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4K
KyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJndGVzdF9tYWlu
LnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+ezNhZjU0YzhhLTEwYmYtNDMzMi05MTQ3LWY2OGVk
OTg2MjAzMn08L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91
cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFy
Z2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9J
bXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfdW5pdHRlc3Qu
dmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0
X3VuaXR0ZXN0LnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDdkYWU1MTNlODYwMTUzYTVj
ZWMyZjQ1YjQ4Y2RiYzc1ZjliNmNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0LnZjeHByb2ouZmlsdGVycwpAQCAtMCww
ICsxLDE4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFBy
b2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQu
Y29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIg
SW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdG
MS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAg
PEV4dGVuc2lvbnM+Y3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVu
c2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMi
PgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZC
RTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7
aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3Vw
PgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxndGVz
dF91bml0dGVzdC5jYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAg
IDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0
ZXN0LW1kLnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0LW1kLnZj
eHByb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwMDc4ZTRhYWI2OTE3MTJhMTAz
YzJlYjYzZWU3ZGFjMWVmNDk5YmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3hwcm9q
CisrKyAvZGV2L251bGwKQEAgLTEsMzYwICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xz
VmVyc2lvbj0iMTQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxv
cGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0
aW9ucyI+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnU3VmZml4fFdp
bjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnU3VmZml4PC9Db25maWd1cmF0aW9uPgot
ICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0
aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z1N1ZmZpeHx4NjQi
PgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWdTdWZmaXg8L0NvbmZpZ3VyYXRpb24+Ci0gICAg
ICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgot
ICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z19XaW5DYWlyb3xXaW4zMiI+
Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Z19XaW5DYWlybzwvQ29uZmlndXJhdGlvbj4KLSAg
ICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlv
bj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWdfV2luQ2Fpcm98eDY0
Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnX1dpbkNhaXJvPC9Db25maWd1cmF0aW9uPgot
ICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlv
bj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgotICAg
ICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+
V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2pl
Y3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlv
bj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgot
ICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIElu
Y2x1ZGU9IlByb2R1Y3Rpb258V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UHJvZHVjdGlv
bjwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAg
PC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVk
ZT0iUHJvZHVjdGlvbnx4NjQiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UHJvZHVjdGlvbjwvQ29u
ZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwvUHJvamVj
dENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVh
c2VfV2luQ2Fpcm98V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZV9XaW5DYWly
bzwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAg
PC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVk
ZT0iUmVsZWFzZV9XaW5DYWlyb3x4NjQiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZV9X
aW5DYWlybzwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgot
ICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIElu
Y2x1ZGU9IlJlbGVhc2V8V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29u
ZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9q
ZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVs
ZWFzZXx4NjQiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4K
LSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRp
b24+Ci0gIDwvSXRlbUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+Ci0g
ICAgPFByb2plY3RHdWlkPntDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9PC9Q
cm9qZWN0R3VpZD4KLSAgICA8Um9vdE5hbWVzcGFjZT5ndGVzdC1tZDwvUm9vdE5hbWVzcGFjZT4K
LSAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+Ci0gICAgPFdpbmRvd3NUYXJnZXRQbGF0
Zm9ybVZlcnNpb24+OC4xPC9XaW5kb3dzVGFyZ2V0UGxhdGZvcm1WZXJzaW9uPgotICA8L1Byb3Bl
cnR5R3JvdXA+Ci0gIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQu
Q3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1
cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJh
dGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAg
ICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdy
b3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25m
aWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hh
cmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+
djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9X
aW5DYWlyb3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlv
blR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNl
dD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1Bs
YXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98
eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0
aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0
ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29s
c2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciIExhYmVsPSJD
b25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29u
ZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNl
dD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9w
ZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgot
ICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4K
LSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9y
bVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQ
cm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25U
eXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+
TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0
Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0i
Q29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0Nv
bmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJT
ZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJv
cGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0
aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlv
blR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8
UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3Vw
PgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8
Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAg
PENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29s
c2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVy
dHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
U3VmZml4fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9u
VHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0
Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxh
dGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyIg
TGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJy
YXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hh
cmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0Pgot
ICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxN
aWNyb3NvZnQuQ3BwLnByb3BzIiAvPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNl
dHRpbmdzIj4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9w
ZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJS
b290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9Ikxv
Y2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGli
cmFyaWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4K
LSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJv
amVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3Bz
IiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8
SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24u
cHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIiBM
YWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0
cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJyki
IExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQo
V2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gIDwvSW1w
b3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRz
Ij4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRh
UGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRv
b2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0
aW9ufFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9
IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29u
ZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9y
dCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3Bz
IiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciIExhYmVsPSJQcm9wZXJ0
eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2Fs
QXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFy
aWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAg
PEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVj
dD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBD
b25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3Jt
KS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1w
b3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJv
cHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNo
ZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3Bw
LiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBw
RGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVz
KVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPElt
cG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWdfV2luQ2Fpcm98V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQg
UHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnBy
b3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBs
YXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAg
ICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21t
b24ucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciIExh
YmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3Rz
KCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIg
TGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChX
ZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBv
cnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgot
ICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9z
b2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0
Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNc
dnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9M
aWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcZGVidWdzdWZmaXgucHJvcHMiIC8+Ci0gIDwvSW1wb3J0
R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAg
PEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3Jt
IiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3By
b3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJh
cmllcylcdG9vbHNcdnNwcm9wc1xkZWJ1Z3N1ZmZpeC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91
cD4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+Ci0gIDxQcm9wZXJ0eUdy
b3VwPgotICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxl
VmVyc2lvbj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGly
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fp
cm98V2luMzInIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2lu
MzInIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
PC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxsaWIk
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAg
ICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXx4NjQnIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj4kKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERp
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2lu
Q2Fpcm98eDY0JyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCci
PiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091
dERpcj4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1l
PgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXx4NjQnIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICAg
IDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5hbWU+
Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5h
bWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFt
ZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4K
LSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAgICA8
VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5h
bWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5D
YWlyb3xXaW4zMiciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdl
dE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19X
aW5DYWlyb3x4NjQnIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJn
ZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdT
dWZmaXh8V2luMzInIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJn
ZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdT
dWZmaXh8eDY0JyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAgPC9Qcm9wZXJ0
eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAg
IDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVk
ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAg
PFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8
L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAg
ICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxl
RmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxM
aWI+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilndGVzdCQoRGVidWdTdWZmaXgpLmxpYjwv
T3V0cHV0RmlsZT4KLSAgICA8L0xpYj4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRl
bURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRp
c2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNs
dWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
KTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRI
ZWFkZXI+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2lj
UnVudGltZUNoZWNrcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliPgotICAgICAgPE91dHB1
dEZpbGU+JChPdXREaXIpZ3Rlc3QkKERlYnVnU3VmZml4KS5saWI8L091dHB1dEZpbGU+Ci0gICAg
PC9MaWI+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWly
b3xXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVk
PC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFBy
b2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHBy
aXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFy
eT4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+
Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGlt
ZUNoZWNrcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliPgotICAgICAgPE91dHB1dEZpbGU+
JChPdXREaXIpZ3Rlc3QubGliPC9PdXRwdXRGaWxlPgotICAgIDwvTGliPgotICA8L0l0ZW1EZWZp
bml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+Ci0gICAgPENsQ29t
cGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3RE
aXIpLi5cSW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZv
cndhcmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTsl
KEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJy
YXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxCYXNpY1J1bnRpbWVD
aGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgIDwvQ2xDb21w
aWxlPgotICAgIDxMaWI+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilndGVzdC5saWI8L091
dHB1dEZpbGU+Ci0gICAgPC9MaWI+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1E
ZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0
aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29t
cGlsZWRIZWFkZXI+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8
L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliPgotICAgICAg
PE91dHB1dEZpbGU+JChPdXREaXIpZ3Rlc3QkKERlYnVnU3VmZml4KS5saWI8L091dHB1dEZpbGU+
Ci0gICAgPC9MaWI+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9u
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1
ZmZpeHx4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxl
ZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQ
cm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVp
bGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxw
cml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVy
PgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRp
bWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYj4KLSAgICAgIDxPdXRwdXRGaWxl
PiQoT3V0RGlyKWd0ZXN0JChEZWJ1Z1N1ZmZpeCkubGliPC9PdXRwdXRGaWxlPgotICAgIDwvTGli
PgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgot
ICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFBy
b2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHBy
aXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAg
ICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+
X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+
Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYiAvPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+
Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJ
bmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0g
ICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAg
ICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWIg
Lz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98
V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
aW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlY29tcGlsZWRI
ZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFByZXByb2Nlc3NvckRl
ZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRl
ZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAgPC9JdGVtRGVmaW5p
dGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+Ci0gICAgPENsQ29t
cGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpciku
LjskKFByb2plY3REaXIpLi5cSW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNs
dWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZh
U2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVj
b21waWxlZEhlYWRlcj4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0Ns
Q29tcGlsZT4KLSAgICA8TGliIC8+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1E
ZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdQcm9kdWN0aW9ufFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVk
ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9Q
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliIC8+Ci0g
IDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPgotICAg
IDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2pl
Y3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZh
dGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAg
IDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJ
QjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0g
ICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYiAvPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0g
IDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QtZGVhdGgt
dGVzdC5jYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC1maWxlcGF0
aC5jYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC1wb3J0LmNjIiAv
PgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LXRlc3QtcGFydC5jYyIgLz4K
LSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC10eXBlZC10ZXN0LmNjIiAvPgot
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LmNjIiAvPgotICA8L0l0ZW1Hcm91
cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rl
c3RcaW50ZXJuYWxcZ3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5oIiAvPgotICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC1kZWF0aC10ZXN0LmgiIC8+Ci0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LWZpbGVw
YXRoLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QtaW50ZXJuYWwt
aW5sLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVy
bmFsXGd0ZXN0LWludGVybmFsLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNs
dWRlXGd0ZXN0XGd0ZXN0LW1lc3NhZ2UuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rlc3QtcG9ydC5oIiAvPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC1zcGkuaCIgLz4KLSAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rlc3Qtc3RyaW5nLmgiIC8+Ci0g
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0LmgiIC8+Ci0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0X3ByZWRfaW1wbC5oIiAv
PgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdF9wcm9kLmgi
IC8+Ci0gIDwvSXRlbUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClc
TWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lv
blRhcmdldHMiPgotICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0LW1kLnZjeHByb2ouZmlsdGVycwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDM3ZDFjOWI0ZGNhNmExNGVjNzA2YmM0YThjMTMxZjZi
NWM4MzgwMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0LW1kLnZjeHByb2ouZmlsdGVycworKysg
L2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rp
bmc9InV0Zi04Ij8+Ci08UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9z
Y2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxJdGVtR3Jv
dXA+Ci0gICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgotICAgICAgPFVuaXF1ZUlk
ZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlk
ZW50aWZpZXI+Ci0gICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2Jh
dDthc207YXNteDwvRXh0ZW5zaW9ucz4KLSAgICA8L0ZpbHRlcj4KLSAgICA8RmlsdGVyIEluY2x1
ZGU9IkhlYWRlciBGaWxlcyI+Ci0gICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlC
RC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KLSAgICAgIDxFeHRl
bnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KLSAgICA8L0ZpbHRl
cj4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxzcmNcZ3Rlc3QtZGVhdGgtdGVzdC5jYyI+Ci0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxl
czwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
c3JjXGd0ZXN0LWZpbGVwYXRoLmNjIj4KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0
ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rl
c3QtcG9ydC5jYyI+Ci0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgotICAgIDwv
Q2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LXRlc3QtcGFy
dC5jYyI+Ci0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xDb21w
aWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LXR5cGVkLXRlc3QuY2Mi
PgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4K
LSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC5jYyI+Ci0gICAgICA8RmlsdGVy
PlNvdXJjZSBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICA8L0l0ZW1Hcm91cD4K
LSAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3Rc
aW50ZXJuYWxcZ3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0LWRlYXRoLXRlc3QuaCI+Ci0gICAgICA8RmlsdGVy
PkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1maWxlcGF0aC5oIj4KLSAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiPgotICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rlc3QtaW50ZXJuYWwu
aCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRl
PgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC1tZXNzYWdl
LmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVk
ZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rl
c3QtcG9ydC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9D
bEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0
LXNwaS5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbElu
Y2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFs
XGd0ZXN0LXN0cmluZy5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0g
ICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0
XGd0ZXN0LmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0Ns
SW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3Rf
cHJlZF9pbXBsLmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8
L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rl
c3RfcHJvZC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9D
bEluY2x1ZGU+Ci0gIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3J1bl90ZXN0cy5w
eSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3J1bl90ZXN0cy5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggZTEwODQwNTZlMjNiZGQ1Y2ZjZjQ0ZjA2NzZjMWQ2MjhhZTYzZDc2MS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9ydW5fdGVzdHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBA
Ci0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0j
IG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJSdW5zIHRoZSBz
cGVjaWZpZWQgdGVzdHMgZm9yIEdvb2dsZSBUZXN0LgotCi1UaGlzIHNjcmlwdCByZXF1aXJlcyBQ
eXRob24gMi4zIG9yIGhpZ2hlci4gIFRvIGxlYXJuIHRoZSB1c2FnZSwgcnVuIGl0Ci13aXRoIC1o
LgotIiIiCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi1TQ1JJUFRfRElSID0gb3MucGF0aC5k
aXJuYW1lKF9fZmlsZV9fKSBvciAnLicKLQotc3lzLnBhdGguYXBwZW5kKG9zLnBhdGguam9pbihT
Q1JJUFRfRElSLCAndGVzdCcpKQotaW1wb3J0IHJ1bl90ZXN0c191dGlsCi0KLQotZGVmIF9NYWlu
KCk6Ci0gICIiIlJ1bnMgYWxsIHRlc3RzIGZvciBHb29nbGUgVGVzdC4iIiIKLQotICBvcHRpb25z
LCBhcmdzID0gcnVuX3Rlc3RzX3V0aWwuUGFyc2VBcmdzKCdndGVzdCcpCi0gIHRlc3RfcnVubmVy
ID0gcnVuX3Rlc3RzX3V0aWwuVGVzdFJ1bm5lcihzY3JpcHRfZGlyPVNDUklQVF9ESVIpCi0gIHRl
c3RzID0gdGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bihhcmdzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3B0aW9ucy5jb25maWd1cmF0aW9ucywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYnVpbHRfY29uZmlndXJhdGlvbnMpCi0gIGlm
IG5vdCB0ZXN0czoKLSAgICBzeXMuZXhpdCgxKSAgIyBJbmNvcnJlY3QgcGFyYW1ldGVycyBnaXZl
biwgYWJvcnQgZXhlY3V0aW9uLgotCi0gIHN5cy5leGl0KHRlc3RfcnVubmVyLlJ1blRlc3RzKHRl
c3RzWzBdLCB0ZXN0c1sxXSkpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIF9NYWlu
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvcHJpbWVfdGFi
bGVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3ByaW1lX3RhYmxlcy5oCmlu
ZGV4IDkyY2UxNmEwMTQ0ZDUwMmZkMGU0NWI3M2YzN2QzMmJiZWRmMWMzZjMuLjUyM2M1MGI5YWZi
MWEwOTE5MTY4MDk0ZDcxZmRmMzc2YjY0YWY2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3NhbXBsZXMvcHJpbWVfdGFibGVzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2FtcGxlcy9wcmltZV90YWJsZXMuaApAQCAtMjYsOSArMjYsOCBAQAogLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2Fu
QGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAo
VmxhZCBMb3NldikKKworCiAKIC8vIFRoaXMgcHJvdmlkZXMgaW50ZXJmYWNlIFByaW1lVGFibGUg
dGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgYSBudW1iZXIgaXMgYQogLy8gcHJpbWUgYW5kIGRldGVy
bWluZXMgYSBuZXh0IHByaW1lIG51bWJlci4gVGhpcyBpbnRlcmZhY2UgaXMgdXNlZApAQCAtMTAz
LDExICsxMDIsMTUgQEAgY2xhc3MgUHJlQ2FsY3VsYXRlZFByaW1lVGFibGUgOiBwdWJsaWMgUHJp
bWVUYWJsZSB7CiAgICAgOjpzdGQ6OmZpbGwoaXNfcHJpbWVfLCBpc19wcmltZV8gKyBpc19wcmlt
ZV9zaXplXywgdHJ1ZSk7CiAgICAgaXNfcHJpbWVfWzBdID0gaXNfcHJpbWVfWzFdID0gZmFsc2U7
CiAKLSAgICBmb3IgKGludCBpID0gMjsgaSA8PSBtYXg7IGkrKykgeworICAgIC8vIENoZWNrcyBl
dmVyeSBjYW5kaWRhdGUgZm9yIHByaW1lIG51bWJlciAod2Uga25vdyB0aGF0IDIgaXMgdGhlIG9u
bHkgZXZlbgorICAgIC8vIHByaW1lKS4KKyAgICBmb3IgKGludCBpID0gMjsgaSppIDw9IG1heDsg
aSArPSBpJTIrMSkgewogICAgICAgaWYgKCFpc19wcmltZV9baV0pIGNvbnRpbnVlOwogCiAgICAg
ICAvLyBNYXJrcyBhbGwgbXVsdGlwbGVzIG9mIGkgKGV4Y2VwdCBpIGl0c2VsZikgYXMgbm9uLXBy
aW1lLgotICAgICAgZm9yIChpbnQgaiA9IDIqaTsgaiA8PSBtYXg7IGogKz0gaSkgeworICAgICAg
Ly8gV2UgYXJlIHN0YXJ0aW5nIGhlcmUgZnJvbSBpLXRoIG11bHRpcGxpZXIsIGJlY2F1c2UgYWxs
IHNtYWxsZXIKKyAgICAgIC8vIGNvbXBsZXggbnVtYmVycyB3ZXJlIGFscmVhZHkgbWFya2VkLgor
ICAgICAgZm9yIChpbnQgaiA9IGkqaTsgaiA8PSBtYXg7IGogKz0gaSkgewogICAgICAgICBpc19w
cmltZV9bal0gPSBmYWxzZTsKICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zYW1wbGVzL3NhbXBsZTEuY2MKaW5kZXggZjE3MWUyNjA5ZDI1MTMyMjg0NjIxZmI2MmNmM2Jh
ODZlMWU2OTkyNS4uMTNjZWMxZDBmYmZhYmRhYWYxYzZjNDFiMWE4NmJjMWQwOTA4OTgzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMS5jYwpAQCAtMjgsOCArMjgs
NiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5n
IHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCiAjaW5jbHVkZSAic2FtcGxlMS5oIgogCkBAIC01
NSw3ICs1Myw3IEBAIGJvb2wgSXNQcmltZShpbnQgbikgewogCiAgIC8vIFRyeSB0byBkaXZpZGUg
biBieSBldmVyeSBvZGQgbnVtYmVyIGksIHN0YXJ0aW5nIGZyb20gMwogICBmb3IgKGludCBpID0g
MzsgOyBpICs9IDIpIHsKLSAgICAvLyBXZSBvbmx5IGhhdmUgdG8gdHJ5IGkgdXAgdG8gdGhlIHNx
dXJlIHJvb3Qgb2YgbgorICAgIC8vIFdlIG9ubHkgaGF2ZSB0byB0cnkgaSB1cCB0byB0aGUgc3F1
YXJlIHJvb3Qgb2YgbgogICAgIGlmIChpID4gbi9pKSBicmVhazsKIAogICAgIC8vIE5vdywgd2Ug
aGF2ZSBpIDw9IG4vaSA8IG4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9z
YW1wbGVzL3NhbXBsZTEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxl
MS5oCmluZGV4IDNkZmViOThjNDUwMzAxNDVmOWVhMThkNzk1MzFjOTFjODFlZTg0OWEuLjJjM2U5
ZjA1ZjFhMTBhNDQyNWY3N2IyODcxNmU4MDU5NjgyMTk2MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMS5oCkBAIC0yOCw4ICsyOCw2IEBACiAvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogCiAvLyBBIHNhbXBsZSBwcm9ncmFtIGRlbW9uc3RyYXRpbmcgdXNpbmcgR29vZ2xlIEMrKyB0
ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9u
ZyBXYW4pCiAKICNpZm5kZWYgR1RFU1RfU0FNUExFU19TQU1QTEUxX0hfCiAjZGVmaW5lIEdURVNU
X1NBTVBMRVNfU0FNUExFMV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nh
bXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MKaW5kZXggM2FkNmZkNjUzODI2MTdmN2Q2YjQwMWY0
ZDFiZDgzZmM4NmVkODRmZS4uN2NlOTU1MGY4ODNhYTM0MmQyNWIwNDg1OTNmYWE5NmNhYmQ4ZTFm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxMF91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEw
X3VuaXR0ZXN0LmNjCkBAIC0yNSw4ICsyNSw3IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChW
bGFkIExvc2V2KQorCiAKIC8vIFRoaXMgc2FtcGxlIHNob3dzIGhvdyB0byB1c2UgR29vZ2xlIFRl
c3QgbGlzdGVuZXIgQVBJIHRvIGltcGxlbWVudAogLy8gYSBwcmltaXRpdmUgbGVhayBjaGVja2Vy
LgpAQCAtMzQsMTkgKzMzLDE2IEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRs
aWIuaD4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KKyNpbmNsdWRlICJndGVzdC9ndGVz
dC5oIgogdXNpbmcgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyOwogdXNpbmcgOjp0
ZXN0aW5nOjpJbml0R29vZ2xlVGVzdDsKIHVzaW5nIDo6dGVzdGluZzo6VGVzdDsKLXVzaW5nIDo6
dGVzdGluZzo6VGVzdENhc2U7CiB1c2luZyA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyczsK
IHVzaW5nIDo6dGVzdGluZzo6VGVzdEluZm87CiB1c2luZyA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVz
dWx0OwogdXNpbmcgOjp0ZXN0aW5nOjpVbml0VGVzdDsKIAogbmFtZXNwYWNlIHsKLQogLy8gV2Ug
d2lsbCB0cmFjayBtZW1vcnkgdXNlZCBieSB0aGlzIGNsYXNzLgogY2xhc3MgV2F0ZXIgewogIHB1
YmxpYzoKQEAgLTg5LDggKzg1LDcgQEAgY2xhc3MgTGVha0NoZWNrZXIgOiBwdWJsaWMgRW1wdHlU
ZXN0RXZlbnRMaXN0ZW5lciB7CiAgICAgLy8gWW91IGNhbiBnZW5lcmF0ZSBhIGZhaWx1cmUgaW4g
YW55IGV2ZW50IGhhbmRsZXIgZXhjZXB0CiAgICAgLy8gT25UZXN0UGFydFJlc3VsdC4gSnVzdCB1
c2UgYW4gYXBwcm9wcmlhdGUgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIHRvIGRvCiAgICAgLy8gaXQu
Ci0gICAgRVhQRUNUX1RSVUUoZGlmZmVyZW5jZSA8PSAwKQotICAgICAgICA8PCAiTGVha2VkICIg
PDwgZGlmZmVyZW5jZSA8PCAiIHVuaXQocykgb2YgV2F0ZXIhIjsKKyAgICBFWFBFQ1RfTEUoZGlm
ZmVyZW5jZSwgMCkgPDwgIkxlYWtlZCAiIDw8IGRpZmZlcmVuY2UgPDwgIiB1bml0KHMpIG9mIFdh
dGVyISI7CiAgIH0KIAogICBpbnQgaW5pdGlhbGx5X2FsbG9jYXRlZF87CkBAIC0xMDcsNyArMTAy
LDYgQEAgVEVTVChMaXN0ZW5lcnNUZXN0LCBMZWFrc1dhdGVyKSB7CiAgIFdhdGVyKiB3YXRlciA9
IG5ldyBXYXRlcjsKICAgRVhQRUNUX1RSVUUod2F0ZXIgIT0gTlVMTCk7CiB9Ci0KIH0gIC8vIG5h
bWVzcGFjZQogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYwppbmRleCAw
MWViNTQ2MmY4MWFkNTRiMzhhYzVlZTYzMzc5NzJlYWEwNGQ3YWRlLi5jYjA4YjYxYTU5YTllMTZi
MzY1Nzg2MWYxYzk2MDkwMDFkMjA5NmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjCkBAIC0yOCw5ICsyOCw2IEBACiAvLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogCiAvLyBBIHNhbXBsZSBwcm9ncmFtIGRlbW9uc3RyYXRpbmcgdXNpbmcgR29v
Z2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29t
IChaaGFueW9uZyBXYW4pCi0KIAogLy8gVGhpcyBzYW1wbGUgc2hvd3MgaG93IHRvIHdyaXRlIGEg
c2ltcGxlIHVuaXQgdGVzdCBmb3IgYSBmdW5jdGlvbiwKIC8vIHVzaW5nIEdvb2dsZSBDKysgdGVz
dGluZyBmcmFtZXdvcmsuCkBAIC00NSw4ICs0Miw4IEBACiAKICNpbmNsdWRlIDxsaW1pdHMuaD4K
ICNpbmNsdWRlICJzYW1wbGUxLmgiCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQorI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCituYW1lc3BhY2UgewogCiAvLyBTdGVwIDIuIFVzZSB0aGUgVEVT
VCBtYWNybyB0byBkZWZpbmUgeW91ciB0ZXN0cy4KIC8vCkBAIC04MSw3ICs3OCw3IEBAIFRFU1Qo
RmFjdG9yaWFsVGVzdCwgTmVnYXRpdmUpIHsKICAgLy8gdGVzdCBjYXNlLgogICBFWFBFQ1RfRVEo
MSwgRmFjdG9yaWFsKC01KSk7CiAgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoLTEpKTsKLSAgRVhQ
RUNUX1RSVUUoRmFjdG9yaWFsKC0xMCkgPiAwKTsKKyAgRVhQRUNUX0dUKEZhY3RvcmlhbCgtMTAp
LCAwKTsKIAogICAvLyA8VGVjaG5pY2FsRGV0YWlscz4KICAgLy8KQEAgLTEzOSw2ICsxMzYsNyBA
QCBURVNUKElzUHJpbWVUZXN0LCBQb3NpdGl2ZSkgewogICBFWFBFQ1RfRkFMU0UoSXNQcmltZSg2
KSk7CiAgIEVYUEVDVF9UUlVFKElzUHJpbWUoMjMpKTsKIH0KK30gIC8vIG5hbWVzcGFjZQogCiAv
LyBTdGVwIDMuIENhbGwgUlVOX0FMTF9URVNUUygpIGluIG1haW4oKS4KIC8vCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTIuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTIuY2MKaW5kZXggNWY3NjNiOWJkZjhkN2FiYzEz
YzYxYzU2ODMzMWQyMWI5ZmE0OTc1ZC4uZjNiNzIyZmNhY2ZlZWU3ZDg5MGIyZDFmMTliYzk3NDE1
ZWNhNDlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1w
bGUyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMi5jYwpA
QCAtMjgsOCArMjgsNiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBk
ZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCiAjaW5jbHVkZSAic2FtcGxl
Mi5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBs
ZTIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMi5oCmluZGV4IDVi
NTdlNjA4MmZhNGY2YjcyNGJmYjU4MjY4N2JmZTBhNjMxOWYyYTcuLjU4ZjM2MGY0NWM3NjU4YzAx
OTdlM2ZmYzY1ZWM4YjM3NWZiMzM2YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NhbXBsZXMvc2FtcGxlMi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBs
ZXMvc2FtcGxlMi5oCkBAIC0yOCw4ICsyOCw2IEBACiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAvLyBBIHNh
bXBsZSBwcm9ncmFtIGRlbW9uc3RyYXRpbmcgdXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1l
d29yay4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAKICNp
Zm5kZWYgR1RFU1RfU0FNUExFU19TQU1QTEUyX0hfCiAjZGVmaW5lIEdURVNUX1NBTVBMRVNfU0FN
UExFMl9IXwpAQCAtNDQsNyArNDIsNiBAQCBjbGFzcyBNeVN0cmluZyB7CiAgIGNvbnN0IE15U3Ry
aW5nJiBvcGVyYXRvcj0oY29uc3QgTXlTdHJpbmcmIHJocyk7CiAKICBwdWJsaWM6Ci0KICAgLy8g
Q2xvbmVzIGEgMC10ZXJtaW5hdGVkIEMgc3RyaW5nLCBhbGxvY2F0aW5nIG1lbW9yeSB1c2luZyBu
ZXcuCiAgIHN0YXRpYyBjb25zdCBjaGFyKiBDbG9uZUNTdHJpbmcoY29uc3QgY2hhciogYV9jX3N0
cmluZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2Ft
cGxlMl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxl
Ml91bml0dGVzdC5jYwppbmRleCAzMjIzMmQ5OGMwYmQyNTQ4MjFjOGY2OTFhNmI4NTVmMWYxNjE2
ZmI4Li4wODQ4ODI2MTkyY2M2NmZjYjc5MDZlZjJjMGFhZWY2NmFmODQzZjkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0LmNjCkBA
IC0yOCw5ICsyOCw2IEBACiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAvLyBBIHNhbXBsZSBwcm9ncmFtIGRl
bW9uc3RyYXRpbmcgdXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBB
dXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KIAogLy8gVGhpcyBzYW1wbGUg
c2hvd3MgaG93IHRvIHdyaXRlIGEgbW9yZSBjb21wbGV4IHVuaXQgdGVzdCBmb3IgYSBjbGFzcwog
Ly8gdGhhdCBoYXMgbXVsdGlwbGUgbWVtYmVyIGZ1bmN0aW9ucy4KQEAgLTQxLDggKzM4LDggQEAK
IC8vIG5lZWRlZC4KIAogI2luY2x1ZGUgInNhbXBsZTIuaCIKLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgotCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKK25hbWVzcGFjZSB7CiAvLyBJbiB0aGlz
IGV4YW1wbGUsIHdlIHRlc3QgdGhlIE15U3RyaW5nIGNsYXNzIChhIHNpbXBsZSBzdHJpbmcpLgog
CiAvLyBUZXN0cyB0aGUgZGVmYXVsdCBjJ3Rvci4KQEAgLTc5LDcgKzc2LDcgQEAgY29uc3QgY2hh
ciBrSGVsbG9TdHJpbmdbXSA9ICJIZWxsbywgd29ybGQhIjsKIC8vIFRlc3RzIHRoZSBjJ3RvciB0
aGF0IGFjY2VwdHMgYSBDIHN0cmluZy4KIFRFU1QoTXlTdHJpbmcsIENvbnN0cnVjdG9yRnJvbUNT
dHJpbmcpIHsKICAgY29uc3QgTXlTdHJpbmcgcyhrSGVsbG9TdHJpbmcpOwotICBFWFBFQ1RfVFJV
RShzdHJjbXAocy5jX3N0cmluZygpLCBrSGVsbG9TdHJpbmcpID09IDApOworICBFWFBFQ1RfRVEo
MCwgc3RyY21wKHMuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSk7CiAgIEVYUEVDVF9FUShzaXpl
b2Yoa0hlbGxvU3RyaW5nKS9zaXplb2Yoa0hlbGxvU3RyaW5nWzBdKSAtIDEsCiAgICAgICAgICAg
ICBzLkxlbmd0aCgpKTsKIH0KQEAgLTg4LDcgKzg1LDcgQEAgVEVTVChNeVN0cmluZywgQ29uc3Ry
dWN0b3JGcm9tQ1N0cmluZykgewogVEVTVChNeVN0cmluZywgQ29weUNvbnN0cnVjdG9yKSB7CiAg
IGNvbnN0IE15U3RyaW5nIHMxKGtIZWxsb1N0cmluZyk7CiAgIGNvbnN0IE15U3RyaW5nIHMyID0g
czE7Ci0gIEVYUEVDVF9UUlVFKHN0cmNtcChzMi5jX3N0cmluZygpLCBrSGVsbG9TdHJpbmcpID09
IDApOworICBFWFBFQ1RfRVEoMCwgc3RyY21wKHMyLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykp
OwogfQogCiAvLyBUZXN0cyB0aGUgU2V0IG1ldGhvZC4KQEAgLTk2LDE0ICs5MywxNSBAQCBURVNU
KE15U3RyaW5nLCBTZXQpIHsKICAgTXlTdHJpbmcgczsKIAogICBzLlNldChrSGVsbG9TdHJpbmcp
OwotICBFWFBFQ1RfVFJVRShzdHJjbXAocy5jX3N0cmluZygpLCBrSGVsbG9TdHJpbmcpID09IDAp
OworICBFWFBFQ1RfRVEoMCwgc3RyY21wKHMuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSk7CiAK
ICAgLy8gU2V0IHNob3VsZCB3b3JrIHdoZW4gdGhlIGlucHV0IHBvaW50ZXIgaXMgdGhlIHNhbWUg
YXMgdGhlIG9uZQogICAvLyBhbHJlYWR5IGluIHRoZSBNeVN0cmluZyBvYmplY3QuCiAgIHMuU2V0
KHMuY19zdHJpbmcoKSk7Ci0gIEVYUEVDVF9UUlVFKHN0cmNtcChzLmNfc3RyaW5nKCksIGtIZWxs
b1N0cmluZykgPT0gMCk7CisgIEVYUEVDVF9FUSgwLCBzdHJjbXAocy5jX3N0cmluZygpLCBrSGVs
bG9TdHJpbmcpKTsKIAogICAvLyBDYW4gd2Ugc2V0IHRoZSBNeVN0cmluZyB0byBOVUxMPwogICBz
LlNldChOVUxMKTsKICAgRVhQRUNUX1NUUkVRKE5VTEwsIHMuY19zdHJpbmcoKSk7CiB9Cit9ICAv
LyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMv
c2FtcGxlMy1pbmwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMy1p
bmwuaAppbmRleCA0NjM2OWEwNzZkODVjNDExNDIzYWNhYTk4ZGQ0NTVlNTU5ZWQzMDBhLi4xYTI5
Y2U5Mjk2YTY0ZGZlOTdhOWY3ZmRjNmRhODYzODdkYzBiNzViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTMtaW5sLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzLWlubC5oCkBAIC0yOCw4ICsyOCw2IEBACiAvLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogCiAvLyBBIHNhbXBsZSBwcm9ncmFtIGRlbW9uc3RyYXRpbmcgdXNpbmcgR29v
Z2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29t
IChaaGFueW9uZyBXYW4pCiAKICNpZm5kZWYgR1RFU1RfU0FNUExFU19TQU1QTEUzX0lOTF9IXwog
I2RlZmluZSBHVEVTVF9TQU1QTEVTX1NBTVBMRTNfSU5MX0hfCkBAIC02MCw3ICs1OCw3IEBAIGNs
YXNzIFF1ZXVlTm9kZSB7CiAgcHJpdmF0ZToKICAgLy8gQ3JlYXRlcyBhIG5vZGUgd2l0aCBhIGdp
dmVuIGVsZW1lbnQgdmFsdWUuICBUaGUgbmV4dCBwb2ludGVyIGlzCiAgIC8vIHNldCB0byBOVUxM
LgotICBRdWV1ZU5vZGUoY29uc3QgRSYgYW5fZWxlbWVudCkgOiBlbGVtZW50Xyhhbl9lbGVtZW50
KSwgbmV4dF8oTlVMTCkge30KKyAgZXhwbGljaXQgUXVldWVOb2RlKGNvbnN0IEUmIGFuX2VsZW1l
bnQpIDogZWxlbWVudF8oYW5fZWxlbWVudCksIG5leHRfKE5VTEwpIHt9CiAKICAgLy8gV2UgZGlz
YWJsZSB0aGUgZGVmYXVsdCBhc3NpZ25tZW50IG9wZXJhdG9yIGFuZCBjb3B5IGMndG9yLgogICBj
b25zdCBRdWV1ZU5vZGUmIG9wZXJhdG9yID0gKGNvbnN0IFF1ZXVlTm9kZSYpOwpAQCAtNzIsOCAr
NzAsNyBAQCBjbGFzcyBRdWV1ZU5vZGUgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRT4gIC8vIEUg
aXMgdGhlIGVsZW1lbnQgdHlwZS4KIGNsYXNzIFF1ZXVlIHsKLXB1YmxpYzoKLQorIHB1YmxpYzoK
ICAgLy8gQ3JlYXRlcyBhbiBlbXB0eSBxdWV1ZS4KICAgUXVldWUoKSA6IGhlYWRfKE5VTEwpLCBs
YXN0XyhOVUxMKSwgc2l6ZV8oMCkge30KIApAQCAtMTY4LDYgKzE2NSw2IEBAIHB1YmxpYzoKICAg
Ly8gV2UgZGlzYWxsb3cgY29weWluZyBhIHF1ZXVlLgogICBRdWV1ZShjb25zdCBRdWV1ZSYpOwog
ICBjb25zdCBRdWV1ZSYgb3BlcmF0b3IgPSAoY29uc3QgUXVldWUmKTsKLSB9OworfTsKIAogI2Vu
ZGlmICAvLyBHVEVTVF9TQU1QTEVTX1NBTVBMRTNfSU5MX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MKaW5kZXggMzRjMWNhODY1
NmVhYjU2NDE4MTU2MGRiZjE0OWQwYTJhYTkyY2MxZC4uZTA5M2MyNTg4NTczZjk2MjcwYTVlZDQx
MjQ1YWM3ZTg5ZjQ4NTExOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ft
cGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nh
bXBsZXMvc2FtcGxlM191bml0dGVzdC5jYwpAQCAtMjgsOSArMjgsNiBAQAogLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysg
dGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlv
bmcgV2FuKQotCiAKIC8vIEluIHRoaXMgZXhhbXBsZSwgd2UgdXNlIGEgbW9yZSBhZHZhbmNlZCBm
ZWF0dXJlIG9mIEdvb2dsZSBUZXN0IGNhbGxlZAogLy8gdGVzdCBmaXh0dXJlLgpAQCAtNjQsMTUg
KzYxLDE1IEBACiAvLyA8L1RlY2huaWNhbERldGFpbHM+CiAKICNpbmNsdWRlICJzYW1wbGUzLWlu
bC5oIgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgorbmFtZXNwYWNlIHsKIC8vIFRvIHVzZSBhIHRlc3QgZml4dHVyZSwgZGVyaXZlIGEgY2xhc3Mg
ZnJvbSB0ZXN0aW5nOjpUZXN0LgotY2xhc3MgUXVldWVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgeworY2xhc3MgUXVldWVUZXN0U21wbDMgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgcHJv
dGVjdGVkOiAgLy8gWW91IHNob3VsZCBtYWtlIHRoZSBtZW1iZXJzIHByb3RlY3RlZCBzLnQuIHRo
ZXkgY2FuIGJlCiAgICAgICAgICAgICAgLy8gYWNjZXNzZWQgZnJvbSBzdWItY2xhc3Nlcy4KIAog
ICAvLyB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgZWFjaCB0ZXN0
IGlzIHJ1bi4gIFlvdQotICAvLyBzaG91bGQgZGVmaW5lIGl0IGlmIHlvdSBuZWVkIHRvIGluaXRp
YWxpemUgdGhlIHZhcmFpYmxlcy4KKyAgLy8gc2hvdWxkIGRlZmluZSBpdCBpZiB5b3UgbmVlZCB0
byBpbml0aWFsaXplIHRoZSB2YXJpYWJsZXMuCiAgIC8vIE90aGVyd2lzZSwgdGhpcyBjYW4gYmUg
c2tpcHBlZC4KICAgdmlydHVhbCB2b2lkIFNldFVwKCkgewogICAgIHExXy5FbnF1ZXVlKDEpOwpA
QCAtMTIwLDEzICsxMTcsMTMgQEAgY2xhc3MgUXVldWVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewogLy8gaW5zdGVhZCBvZiBURVNULgogCiAvLyBUZXN0cyB0aGUgZGVmYXVsdCBjJ3Rvci4K
LVRFU1RfRihRdWV1ZVRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvcikgeworVEVTVF9GKFF1ZXVlVGVz
dFNtcGwzLCBEZWZhdWx0Q29uc3RydWN0b3IpIHsKICAgLy8gWW91IGNhbiBhY2Nlc3MgZGF0YSBp
biB0aGUgdGVzdCBmaXh0dXJlIGhlcmUuCiAgIEVYUEVDVF9FUSgwdSwgcTBfLlNpemUoKSk7CiB9
CiAKIC8vIFRlc3RzIERlcXVldWUoKS4KLVRFU1RfRihRdWV1ZVRlc3QsIERlcXVldWUpIHsKK1RF
U1RfRihRdWV1ZVRlc3RTbXBsMywgRGVxdWV1ZSkgewogICBpbnQgKiBuID0gcTBfLkRlcXVldWUo
KTsKICAgRVhQRUNUX1RSVUUobiA9PSBOVUxMKTsKIApAQCAtMTQ0LDggKzE0MSw5IEBAIFRFU1Rf
RihRdWV1ZVRlc3QsIERlcXVldWUpIHsKIH0KIAogLy8gVGVzdHMgdGhlIFF1ZXVlOjpNYXAoKSBm
dW5jdGlvbi4KLVRFU1RfRihRdWV1ZVRlc3QsIE1hcCkgeworVEVTVF9GKFF1ZXVlVGVzdFNtcGwz
LCBNYXApIHsKICAgTWFwVGVzdGVyKCZxMF8pOwogICBNYXBUZXN0ZXIoJnExXyk7CiAgIE1hcFRl
c3RlcigmcTJfKTsKIH0KK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGU0LmNjCmluZGV4IGFlNDRiZGE2ZjFiYWQ1M2ZmM2M2ZjE0ZTAzMDJiZDNi
YjMwOWNiYTcuLmIwZWU2MDkzYjRhMjUwY2YxMTkzNmNjYzgyMDhhNjEyMjkxYjgxNDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTQuY2MKQEAgLTI4LDggKzI4LDYg
QEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1
c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdv
b2dsZS5jb20gKFpoYW55b25nIFdhbikKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKQEAgLTQwLDYg
KzM4LDE2IEBAIGludCBDb3VudGVyOjpJbmNyZW1lbnQoKSB7CiAgIHJldHVybiBjb3VudGVyXysr
OwogfQogCisvLyBSZXR1cm5zIHRoZSBjdXJyZW50IGNvdW50ZXIgdmFsdWUsIGFuZCBkZWNyZW1l
bnRzIGl0LgorLy8gY291bnRlciBjYW4gbm90IGJlIGxlc3MgdGhhbiAwLCByZXR1cm4gMCBpbiB0
aGlzIGNhc2UKK2ludCBDb3VudGVyOjpEZWNyZW1lbnQoKSB7CisgIGlmIChjb3VudGVyXyA9PSAw
KSB7CisgICAgcmV0dXJuIGNvdW50ZXJfOworICB9IGVsc2UgIHsKKyAgICByZXR1cm4gY291bnRl
cl8tLTsKKyAgfQorfQorCiAvLyBQcmludHMgdGhlIGN1cnJlbnQgY291bnRlciB2YWx1ZSB0byBT
VERPVVQuCiB2b2lkIENvdW50ZXI6OlByaW50KCkgY29uc3QgewogICBwcmludGYoIiVkIiwgY291
bnRlcl8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1w
bGU0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTQuaAppbmRleCBj
ZDYwZjBkZDJkMTg2MDczN2I3ZjBlYTQ1YzU2NzVhM2E4ZWE3MjFmLi5lMjU2ZjQwNjRmZTkxYTdm
MDFhOTQ1NTBkMzJjM2JiMTFiMGE0ZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1w
bGVzL3NhbXBsZTQuaApAQCAtMjgsOSArMjgsNiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBz
YW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFt
ZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCiAj
aWZuZGVmIEdURVNUX1NBTVBMRVNfU0FNUExFNF9IXwogI2RlZmluZSBHVEVTVF9TQU1QTEVTX1NB
TVBMRTRfSF8KIApAQCAtNDYsNiArNDMsOSBAQCBjbGFzcyBDb3VudGVyIHsKICAgLy8gUmV0dXJu
cyB0aGUgY3VycmVudCBjb3VudGVyIHZhbHVlLCBhbmQgaW5jcmVtZW50cyBpdC4KICAgaW50IElu
Y3JlbWVudCgpOwogCisgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgY291bnRlciB2YWx1ZSwgYW5k
IGRlY3JlbWVudHMgaXQuCisgIGludCBEZWNyZW1lbnQoKTsKKwogICAvLyBQcmludHMgdGhlIGN1
cnJlbnQgY291bnRlciB2YWx1ZSB0byBTVERPVVQuCiAgIHZvaWQgUHJpbnQoKSBjb25zdDsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTRfdW5p
dHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTRfdW5pdHRl
c3QuY2MKaW5kZXggYjRmYjM3MzZhYmJmZjgzZjc5YWY0NDdjYTRiYzZiOTEwNTg2OTMyZS4uZDUx
NDRjMGQwMGY1Yzc2MDA2OTNlYTAyNTgwMmMwZDdkNTI1MGQyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNF91bml0dGVzdC5jYwpAQCAtMjYsMjAg
KzI2LDI4IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCi0jaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KKwogI2luY2x1ZGUgInNhbXBsZTQuaCIKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgogCituYW1lc3BhY2UgewogLy8gVGVzdHMgdGhlIEluY3JlbWVudCgpIG1ldGhv
ZC4KKwogVEVTVChDb3VudGVyLCBJbmNyZW1lbnQpIHsKICAgQ291bnRlciBjOwogCisgIC8vIFRl
c3QgdGhhdCBjb3VudGVyIDAgcmV0dXJucyAwCisgIEVYUEVDVF9FUSgwLCBjLkRlY3JlbWVudCgp
KTsKKwogICAvLyBFWFBFQ1RfRVEoKSBldmFsdWF0ZXMgaXRzIGFyZ3VtZW50cyBleGFjdGx5IG9u
Y2UsIHNvIHRoZXkKICAgLy8gY2FuIGhhdmUgc2lkZSBlZmZlY3RzLgogCiAgIEVYUEVDVF9FUSgw
LCBjLkluY3JlbWVudCgpKTsKICAgRVhQRUNUX0VRKDEsIGMuSW5jcmVtZW50KCkpOwogICBFWFBF
Q1RfRVEoMiwgYy5JbmNyZW1lbnQoKSk7CisKKyAgRVhQRUNUX0VRKDMsIGMuRGVjcmVtZW50KCkp
OwogfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYwppbmRleCA0OWRhZTdjNjlmYTc2ZThhNDg2MDc3
MDZiNGExNjJjNjQyZjBhMDg1Li5kOGE4Nzg4YzZkMGZkYTIzODY0NmZlYTI5MGUwOTdjYzc2Mjc3
ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTVf
dW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU1
X3VuaXR0ZXN0LmNjCkBAIC0yNiw4ICsyNiw3IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhh
bnlvbmcgV2FuKQorCiAKIC8vIFRoaXMgc2FtcGxlIHRlYWNoZXMgaG93IHRvIHJldXNlIGEgdGVz
dCBmaXh0dXJlIGluIG11bHRpcGxlIHRlc3QKIC8vIGNhc2VzIGJ5IGRlcml2aW5nIHN1Yi1maXh0
dXJlcyBmcm9tIGl0LgpAQCAtNDYsMTAgKzQ1LDEwIEBACiAKICNpbmNsdWRlIDxsaW1pdHMuaD4K
ICNpbmNsdWRlIDx0aW1lLmg+Ci0jaW5jbHVkZSAic2FtcGxlMy1pbmwuaCIKLSNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAjaW5jbHVkZSAic2FtcGxl
MS5oIgotCisjaW5jbHVkZSAic2FtcGxlMy1pbmwuaCIKK25hbWVzcGFjZSB7CiAvLyBJbiB0aGlz
IHNhbXBsZSwgd2Ugd2FudCB0byBlbnN1cmUgdGhhdCBldmVyeSB0ZXN0IGZpbmlzaGVzIHdpdGhp
bgogLy8gfjUgc2Vjb25kcy4gIElmIGEgdGVzdCB0YWtlcyBsb25nZXIgdG8gcnVuLCB3ZSBjb25z
aWRlciBpdCBhCiAvLyBmYWlsdXJlLgpAQCAtMTAxLDcgKzEwMCw3IEBAIFRFU1RfRihJbnRlZ2Vy
RnVuY3Rpb25UZXN0LCBGYWN0b3JpYWwpIHsKICAgLy8gVGVzdHMgZmFjdG9yaWFsIG9mIG5lZ2F0
aXZlIG51bWJlcnMuCiAgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoLTUpKTsKICAgRVhQRUNUX0VR
KDEsIEZhY3RvcmlhbCgtMSkpOwotICBFWFBFQ1RfVFJVRShGYWN0b3JpYWwoLTEwKSA+IDApOwor
ICBFWFBFQ1RfR1QoRmFjdG9yaWFsKC0xMCksIDApOwogCiAgIC8vIFRlc3RzIGZhY3RvcmlhbCBv
ZiAwLgogICBFWFBFQ1RfRVEoMSwgRmFjdG9yaWFsKDApKTsKQEAgLTExNywyMCArMTE2LDIwIEBA
IFRFU1RfRihJbnRlZ2VyRnVuY3Rpb25UZXN0LCBGYWN0b3JpYWwpIHsKIC8vIFRlc3RzIElzUHJp
bWUoKQogVEVTVF9GKEludGVnZXJGdW5jdGlvblRlc3QsIElzUHJpbWUpIHsKICAgLy8gVGVzdHMg
bmVnYXRpdmUgaW5wdXQuCi0gIEVYUEVDVF9UUlVFKCFJc1ByaW1lKC0xKSk7Ci0gIEVYUEVDVF9U
UlVFKCFJc1ByaW1lKC0yKSk7Ci0gIEVYUEVDVF9UUlVFKCFJc1ByaW1lKElOVF9NSU4pKTsKKyAg
RVhQRUNUX0ZBTFNFKElzUHJpbWUoLTEpKTsKKyAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoLTIpKTsK
KyAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoSU5UX01JTikpOwogCiAgIC8vIFRlc3RzIHNvbWUgdHJp
dmlhbCBjYXNlcy4KLSAgRVhQRUNUX1RSVUUoIUlzUHJpbWUoMCkpOwotICBFWFBFQ1RfVFJVRSgh
SXNQcmltZSgxKSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKDApKTsKKyAgRVhQRUNUX0ZBTFNF
KElzUHJpbWUoMSkpOwogICBFWFBFQ1RfVFJVRShJc1ByaW1lKDIpKTsKICAgRVhQRUNUX1RSVUUo
SXNQcmltZSgzKSk7CiAKICAgLy8gVGVzdHMgcG9zaXRpdmUgaW5wdXQuCi0gIEVYUEVDVF9UUlVF
KCFJc1ByaW1lKDQpKTsKKyAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoNCkpOwogICBFWFBFQ1RfVFJV
RShJc1ByaW1lKDUpKTsKLSAgRVhQRUNUX1RSVUUoIUlzUHJpbWUoNikpOworICBFWFBFQ1RfRkFM
U0UoSXNQcmltZSg2KSk7CiAgIEVYUEVDVF9UUlVFKElzUHJpbWUoMjMpKTsKIH0KIApAQCAtMTkx
LDcgKzE5MCw3IEBAIFRFU1RfRihRdWV1ZVRlc3QsIERlcXVldWUpIHsKICAgRVhQRUNUX0VRKDF1
LCBxMl8uU2l6ZSgpKTsKICAgZGVsZXRlIG47CiB9Ci0KK30gIC8vIG5hbWVzcGFjZQogLy8gSWYg
bmVjZXNzYXJ5LCB5b3UgY2FuIGRlcml2ZSBmdXJ0aGVyIHRlc3QgZml4dHVyZXMgZnJvbSBhIGRl
cml2ZWQKIC8vIGZpeHR1cmUgaXRzZWxmLiAgRm9yIGV4YW1wbGUsIHlvdSBjYW4gZGVyaXZlIGFu
b3RoZXIgZml4dHVyZSBmcm9tCiAvLyBRdWV1ZVRlc3QuICBHb29nbGUgVGVzdCBpbXBvc2VzIG5v
IGxpbWl0IG9uIGhvdyBkZWVwIHRoZSBoaWVyYXJjaHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYwppbmRleCBkZDBkZjMxZjBiYjdj
YmYyNjE2MDczNDJlODY0MDRkNzVhODUzNDNlLi5kZGYyZjFjMTNiYmUwMzQ4MTM0NDkzNmIwYTcy
ZGJiMmEwYjI4NDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVz
L3NhbXBsZTZfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxl
cy9zYW1wbGU2X3VuaXR0ZXN0LmNjCkBAIC0yNiw4ICsyNiw3IEBACiAvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQorCiAKIC8vIFRoaXMgc2FtcGxlIHNob3dzIGhvdyB0byB0ZXN0
IGNvbW1vbiBwcm9wZXJ0aWVzIG9mIG11bHRpcGxlCiAvLyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhl
IHNhbWUgaW50ZXJmYWNlIChha2EgaW50ZXJmYWNlIHRlc3RzKS4KQEAgLTM1LDggKzM0LDggQEAK
IC8vIFRoZSBpbnRlcmZhY2UgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbnMgYXJlIGluIHRoaXMgaGVh
ZGVyLgogI2luY2x1ZGUgInByaW1lX3RhYmxlcy5oIgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KLQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCituYW1lc3BhY2UgewogLy8gRmlyc3QsIHdl
IGRlZmluZSBzb21lIGZhY3RvcnkgZnVuY3Rpb25zIGZvciBjcmVhdGluZyBpbnN0YW5jZXMgb2YK
IC8vIHRoZSBpbXBsZW1lbnRhdGlvbnMuICBZb3UgbWF5IGJlIGFibGUgdG8gc2tpcCB0aGlzIHN0
ZXAgaWYgYWxsIHlvdXIKIC8vIGltcGxlbWVudGF0aW9ucyBjYW4gYmUgY29uc3RydWN0ZWQgdGhl
IHNhbWUgd2F5LgpAQCAtMjIyLDMgKzIyMSw0IEBAIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FT
RV9QKE9uVGhlRmx5QW5kUHJlQ2FsY3VsYXRlZCwgICAgLy8gSW5zdGFuY2UgbmFtZQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWVUYWJsZUltcGxlbWVudGF0aW9ucyk7ICAvLyBU
eXBlIGxpc3QKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCit9ICAvLyBuYW1l
c3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxl
N191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlN191
bml0dGVzdC5jYwppbmRleCBmNDU1MjgyN2VkOWI4MzA2Y2RkMzE5YWE1N2YzZWQwNjc2MmI0ZjVm
Li5jMWFlOGJkZWRjOWFmYzlhMTFkMGQ5MjAyMWVmNzY3N2QzOThhOWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU3X3VuaXR0ZXN0LmNjCkBAIC0y
Niw4ICsyNiw3IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQorCiAKIC8v
IFRoaXMgc2FtcGxlIHNob3dzIGhvdyB0byB0ZXN0IGNvbW1vbiBwcm9wZXJ0aWVzIG9mIG11bHRp
cGxlCiAvLyBpbXBsZW1lbnRhdGlvbnMgb2YgYW4gaW50ZXJmYWNlIChha2EgaW50ZXJmYWNlIHRl
c3RzKSB1c2luZwpAQCAtMzgsMTkgKzM3LDE3IEBACiAvLyBUaGUgaW50ZXJmYWNlIGFuZCBpdHMg
aW1wbGVtZW50YXRpb25zIGFyZSBpbiB0aGlzIGhlYWRlci4KICNpbmNsdWRlICJwcmltZV90YWJs
ZXMuaCIKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLSNpZiBHVEVTVF9IQVNfUEFSQU1f
VEVTVAorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCituYW1lc3BhY2UgewogCiB1c2luZyA6OnRl
c3Rpbmc6OlRlc3RXaXRoUGFyYW07CiB1c2luZyA6OnRlc3Rpbmc6OlZhbHVlczsKIAotLy8gQXMg
YSBnZW5lcmFsIHJ1bGUsIHRlc3RlZCBvYmplY3RzIHNob3VsZCBub3QgYmUgcmV1c2VkIGJldHdl
ZW4gdGVzdHMuCi0vLyBBbHNvLCB0aGVpciBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzIG9m
IHRlc3RlZCBvYmplY3RzIGNhbiBoYXZlCi0vLyBzaWRlIGVmZmVjdHMuIFRodXMgeW91IHNob3Vs
ZCBjcmVhdGUgYW5kIGRlc3Ryb3kgdGhlbSBmb3IgZWFjaCB0ZXN0LgotLy8gSW4gdGhpcyBzYW1w
bGUgd2Ugd2lsbCBkZWZpbmUgYSBzaW1wbGUgZmFjdG9yeSBmdW5jdGlvbiBmb3IgUHJpbWVUYWJs
ZQotLy8gb2JqZWN0cy4gV2Ugd2lsbCBpbnN0YW50aWF0ZSBvYmplY3RzIGluIHRlc3QncyBTZXRV
cCgpIG1ldGhvZCBhbmQKLS8vIGRlbGV0ZSB0aGVtIGluIFRlYXJEb3duKCkgbWV0aG9kLgorLy8g
QXMgYSBnZW5lcmFsIHJ1bGUsIHRvIHByZXZlbnQgYSB0ZXN0IGZyb20gYWZmZWN0aW5nIHRoZSB0
ZXN0cyB0aGF0IGNvbWUKKy8vIGFmdGVyIGl0LCB5b3Ugc2hvdWxkIGNyZWF0ZSBhbmQgZGVzdHJv
eSB0aGUgdGVzdGVkIG9iamVjdHMgZm9yIGVhY2ggdGVzdAorLy8gaW5zdGVhZCBvZiByZXVzaW5n
IHRoZW0uICBJbiB0aGlzIHNhbXBsZSB3ZSB3aWxsIGRlZmluZSBhIHNpbXBsZSBmYWN0b3J5Cisv
LyBmdW5jdGlvbiBmb3IgUHJpbWVUYWJsZSBvYmplY3RzLiAgV2Ugd2lsbCBpbnN0YW50aWF0ZSBv
YmplY3RzIGluIHRlc3QncworLy8gU2V0VXAoKSBtZXRob2QgYW5kIGRlbGV0ZSB0aGVtIGluIFRl
YXJEb3duKCkgbWV0aG9kLgogdHlwZWRlZiBQcmltZVRhYmxlKiBDcmVhdGVQcmltZVRhYmxlRnVu
YygpOwogCiBQcmltZVRhYmxlKiBDcmVhdGVPblRoZUZseVByaW1lVGFibGUoKSB7CkBAIC02Miwx
NCArNTksMTMgQEAgUHJpbWVUYWJsZSogQ3JlYXRlUHJlQ2FsY3VsYXRlZFByaW1lVGFibGUoKSB7
CiAgIHJldHVybiBuZXcgUHJlQ2FsY3VsYXRlZFByaW1lVGFibGUobWF4X3ByZWNhbGN1bGF0ZWQp
OwogfQogCi0vLyBJbnNpZGUgdGhlIHRlc3QgYm9keSwgZml4dHVyZSBjb25zdHJ1Y3RvciwgU2V0
VXAoKSwgYW5kIFRlYXJEb3duKCkKLS8vIHlvdSBjYW4gcmVmZXIgdG8gdGhlIHRlc3QgcGFyYW1l
dGVyIGJ5IEdldFBhcmFtKCkuCi0vLyBJbiB0aGlzIGNhc2UsIHRoZSB0ZXN0IHBhcmFtZXRlciBp
cyBhIFByaW1lVGFibGVGYWN0b3J5IGludGVyZmFjZSBwb2ludGVyCi0vLyB3aGljaCB3ZSB1c2Ug
aW4gZml4dHVyZSdzIFNldFVwKCkgdG8gY3JlYXRlIGFuZCBzdG9yZSBhbiBpbnN0YW5jZSBvZgot
Ly8gUHJpbWVUYWJsZS4KLWNsYXNzIFByaW1lVGFibGVUZXN0IDogcHVibGljIFRlc3RXaXRoUGFy
YW08Q3JlYXRlUHJpbWVUYWJsZUZ1bmMqPiB7CisvLyBJbnNpZGUgdGhlIHRlc3QgYm9keSwgZml4
dHVyZSBjb25zdHJ1Y3RvciwgU2V0VXAoKSwgYW5kIFRlYXJEb3duKCkgeW91CisvLyBjYW4gcmVm
ZXIgdG8gdGhlIHRlc3QgcGFyYW1ldGVyIGJ5IEdldFBhcmFtKCkuICBJbiB0aGlzIGNhc2UsIHRo
ZSB0ZXN0CisvLyBwYXJhbWV0ZXIgaXMgYSBmYWN0b3J5IGZ1bmN0aW9uIHdoaWNoIHdlIGNhbGwg
aW4gZml4dHVyZSdzIFNldFVwKCkgdG8KKy8vIGNyZWF0ZSBhbmQgc3RvcmUgYW4gaW5zdGFuY2Ug
b2YgUHJpbWVUYWJsZS4KK2NsYXNzIFByaW1lVGFibGVUZXN0U21wbDcgOiBwdWJsaWMgVGVzdFdp
dGhQYXJhbTxDcmVhdGVQcmltZVRhYmxlRnVuYyo+IHsKICBwdWJsaWM6Ci0gIHZpcnR1YWwgflBy
aW1lVGFibGVUZXN0KCkgeyBkZWxldGUgdGFibGVfOyB9CisgIHZpcnR1YWwgflByaW1lVGFibGVU
ZXN0U21wbDcoKSB7IGRlbGV0ZSB0YWJsZV87IH0KICAgdmlydHVhbCB2b2lkIFNldFVwKCkgeyB0
YWJsZV8gPSAoKkdldFBhcmFtKCkpKCk7IH0KICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewog
ICAgIGRlbGV0ZSB0YWJsZV87CkBAIC04MCw3ICs3Niw3IEBAIGNsYXNzIFByaW1lVGFibGVUZXN0
IDogcHVibGljIFRlc3RXaXRoUGFyYW08Q3JlYXRlUHJpbWVUYWJsZUZ1bmMqPiB7CiAgIFByaW1l
VGFibGUqIHRhYmxlXzsKIH07CiAKLVRFU1RfUChQcmltZVRhYmxlVGVzdCwgUmV0dXJuc0ZhbHNl
Rm9yTm9uUHJpbWVzKSB7CitURVNUX1AoUHJpbWVUYWJsZVRlc3RTbXBsNywgUmV0dXJuc0ZhbHNl
Rm9yTm9uUHJpbWVzKSB7CiAgIEVYUEVDVF9GQUxTRSh0YWJsZV8tPklzUHJpbWUoLTUpKTsKICAg
RVhQRUNUX0ZBTFNFKHRhYmxlXy0+SXNQcmltZSgwKSk7CiAgIEVYUEVDVF9GQUxTRSh0YWJsZV8t
PklzUHJpbWUoMSkpOwpAQCAtODksNyArODUsNyBAQCBURVNUX1AoUHJpbWVUYWJsZVRlc3QsIFJl
dHVybnNGYWxzZUZvck5vblByaW1lcykgewogICBFWFBFQ1RfRkFMU0UodGFibGVfLT5Jc1ByaW1l
KDEwMCkpOwogfQogCi1URVNUX1AoUHJpbWVUYWJsZVRlc3QsIFJldHVybnNUcnVlRm9yUHJpbWVz
KSB7CitURVNUX1AoUHJpbWVUYWJsZVRlc3RTbXBsNywgUmV0dXJuc1RydWVGb3JQcmltZXMpIHsK
ICAgRVhQRUNUX1RSVUUodGFibGVfLT5Jc1ByaW1lKDIpKTsKICAgRVhQRUNUX1RSVUUodGFibGVf
LT5Jc1ByaW1lKDMpKTsKICAgRVhQRUNUX1RSVUUodGFibGVfLT5Jc1ByaW1lKDUpKTsKQEAgLTk4
LDcgKzk0LDcgQEAgVEVTVF9QKFByaW1lVGFibGVUZXN0LCBSZXR1cm5zVHJ1ZUZvclByaW1lcykg
ewogICBFWFBFQ1RfVFJVRSh0YWJsZV8tPklzUHJpbWUoMTMxKSk7CiB9CiAKLVRFU1RfUChQcmlt
ZVRhYmxlVGVzdCwgQ2FuR2V0TmV4dFByaW1lKSB7CitURVNUX1AoUHJpbWVUYWJsZVRlc3RTbXBs
NywgQ2FuR2V0TmV4dFByaW1lKSB7CiAgIEVYUEVDVF9FUSgyLCB0YWJsZV8tPkdldE5leHRQcmlt
ZSgwKSk7CiAgIEVYUEVDVF9FUSgzLCB0YWJsZV8tPkdldE5leHRQcmltZSgyKSk7CiAgIEVYUEVD
VF9FUSg1LCB0YWJsZV8tPkdldE5leHRQcmltZSgzKSk7CkBAIC0xMTQsMTkgKzExMCw4IEBAIFRF
U1RfUChQcmltZVRhYmxlVGVzdCwgQ2FuR2V0TmV4dFByaW1lKSB7CiAvLwogLy8gSGVyZSwgd2Ug
aW5zdGFudGlhdGUgb3VyIHRlc3RzIHdpdGggYSBsaXN0IG9mIHR3byBQcmltZVRhYmxlIG9iamVj
dAogLy8gZmFjdG9yeSBmdW5jdGlvbnM6Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUCgKLSAgICBP
blRoZUZseUFuZFByZUNhbGN1bGF0ZWQsCi0gICAgUHJpbWVUYWJsZVRlc3QsCi0gICAgVmFsdWVz
KCZDcmVhdGVPblRoZUZseVByaW1lVGFibGUsICZDcmVhdGVQcmVDYWxjdWxhdGVkUHJpbWVUYWJs
ZTwxMDAwPikpOwotCi0jZWxzZQotCi0vLyBHb29nbGUgVGVzdCBtYXkgbm90IHN1cHBvcnQgdmFs
dWUtcGFyYW1ldGVyaXplZCB0ZXN0cyB3aXRoIHNvbWUKLS8vIGNvbXBpbGVycy4gSWYgd2UgdXNl
IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIGNvbXBpbGUgb3V0IGFsbAotLy8gY29kZSByZWZl
cnJpbmcgdG8gdGhlIGd0ZXN0X21haW4gbGlicmFyeSwgTVNWQyBsaW5rZXIgd2lsbCBub3QgbGlu
awotLy8gdGhhdCBsaWJyYXJ5IGF0IGFsbCBhbmQgY29uc2VxdWVudGx5IGNvbXBsYWluIGFib3V0
IG1pc3NpbmcgZW50cnkKLS8vIHBvaW50IGRlZmluZWQgaW4gdGhhdCBsaWJyYXJ5IChmYXRhbCBl
cnJvciBMTksxNTYxOiBlbnRyeSBwb2ludAotLy8gbXVzdCBiZSBkZWZpbmVkKS4gVGhpcyBkdW1t
eSB0ZXN0IGtlZXBzIGd0ZXN0X21haW4gbGlua2VkIGluLgotVEVTVChEdW1teVRlc3QsIFZhbHVl
UGFyYW1ldGVyaXplZFRlc3RzQXJlTm90U3VwcG9ydGVkT25UaGlzUGxhdGZvcm0pIHt9CitJTlNU
QU5USUFURV9URVNUX0NBU0VfUChPblRoZUZseUFuZFByZUNhbGN1bGF0ZWQsIFByaW1lVGFibGVU
ZXN0U21wbDcsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoJkNyZWF0ZU9uVGhlRmx5
UHJpbWVUYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ3JlYXRlUHJlQ2Fs
Y3VsYXRlZFByaW1lVGFibGU8MTAwMD4pKTsKIAotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1f
VEVTVAorfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9z
YW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2MKaW5kZXggY2NmNjFkOTJiODVjMzEyZjdmMmVjMmY2
ZDhhNjczZGZmNGIwMmQ2Ni4uY2U3NWNmMDMwODcwYzM3NmRmZWM2MDMxZGIyNDcxMTA4NzAzODNm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU4X3Vu
aXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlOF91
bml0dGVzdC5jYwpAQCAtMjYsOCArMjYsNyBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxh
ZCBMb3NldikKKwogCiAvLyBUaGlzIHNhbXBsZSBzaG93cyBob3cgdG8gdGVzdCBjb2RlIHJlbHlp
bmcgb24gc29tZSBnbG9iYWwgZmxhZyB2YXJpYWJsZXMuCiAvLyBDb21iaW5lKCkgaGVscHMgd2l0
aCBnZW5lcmF0aW5nIGFsbCBwb3NzaWJsZSBjb21iaW5hdGlvbnMgb2Ygc3VjaCBmbGFncywKQEAg
LTM2LDggKzM1LDggQEAKIC8vIFVzZSBjbGFzcyBkZWZpbml0aW9ucyB0byB0ZXN0IGZyb20gdGhp
cyBoZWFkZXIuCiAjaW5jbHVkZSAicHJpbWVfdGFibGVzLmgiCiAKLSNpbmNsdWRlIDxndGVzdC9n
dGVzdC5oPgotCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKK25hbWVzcGFjZSB7CiAjaWYgR1RF
U1RfSEFTX0NPTUJJTkUKIAogLy8gU3VwcG9zZSB3ZSB3YW50IHRvIGludHJvZHVjZSBhIG5ldywg
aW1wcm92ZWQgaW1wbGVtZW50YXRpb24gb2YgUHJpbWVUYWJsZQpAQCAtOTAsNyArODksNyBAQCB1
c2luZyA6OnRlc3Rpbmc6OkNvbWJpbmU7CiAvLyBQcmVDYWxjdWxhdGVkUHJpbWVUYWJsZSBkaXNh
YmxlZC4gV2UgZG8gdGhpcyBieSBkZWZpbmluZyBmaXh0dXJlIHdoaWNoIHdpbGwKIC8vIGFjY2Vw
dCBkaWZmZXJlbnQgY29tYmluYXRpb25zIG9mIHBhcmFtZXRlcnMgZm9yIGluc3RhbnRpYXRpbmcg
YQogLy8gSHlicmlkUHJpbWVUYWJsZSBpbnN0YW5jZS4KLWNsYXNzIFByaW1lVGFibGVUZXN0IDog
cHVibGljIFRlc3RXaXRoUGFyYW08IDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludD4gPiB7Citj
bGFzcyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPCA6OnRlc3Rpbmc6OnR1
cGxlPGJvb2wsIGludD4gPiB7CiAgcHJvdGVjdGVkOgogICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7
CiAgICAgLy8gVGhpcyBjYW4gYmUgd3JpdHRlbiBhcwpAQCAtMTAxLDggKzEwMCw4IEBAIGNsYXNz
IFByaW1lVGFibGVUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08IDo6c3RkOjp0cjE6OnR1cGxl
PGJvb2wsIGludD4gPiB7CiAgICAgLy8KICAgICAvLyBvbmNlIHRoZSBHb29nbGUgQysrIFN0eWxl
IEd1aWRlIGFsbG93cyB1c2Ugb2YgOjpzdGQ6OnRyMTo6dGllLgogICAgIC8vCi0gICAgYm9vbCBm
b3JjZV9vbl90aGVfZmx5ID0gOjpzdGQ6OnRyMTo6Z2V0PDA+KEdldFBhcmFtKCkpOwotICAgIGlu
dCBtYXhfcHJlY2FsY3VsYXRlZCA9IDo6c3RkOjp0cjE6OmdldDwxPihHZXRQYXJhbSgpKTsKKyAg
ICBib29sIGZvcmNlX29uX3RoZV9mbHkgPSA6OnRlc3Rpbmc6OmdldDwwPihHZXRQYXJhbSgpKTsK
KyAgICBpbnQgbWF4X3ByZWNhbGN1bGF0ZWQgPSA6OnRlc3Rpbmc6OmdldDwxPihHZXRQYXJhbSgp
KTsKICAgICB0YWJsZV8gPSBuZXcgSHlicmlkUHJpbWVUYWJsZShmb3JjZV9vbl90aGVfZmx5LCBt
YXhfcHJlY2FsY3VsYXRlZCk7CiAgIH0KICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewpAQCAt
MTcxLDMgKzE3MCw0IEBAIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKE1lYW5pbmdmdWxUZXN0UGFy
YW1ldGVycywKIFRFU1QoRHVtbXlUZXN0LCBDb21iaW5lSXNOb3RTdXBwb3J0ZWRPblRoaXNQbGF0
Zm9ybSkge30KIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQorfSAgLy8gbmFtZXNwYWNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTlfdW5p
dHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTlfdW5pdHRl
c3QuY2MKaW5kZXggZDgyOGVmNGQ4NmI3NDZiMjU2OTdiZGQ0NmQyMTAwYTQ0NjE0MmQzMS4uNTNm
OWFmNWJhMWRmYzI2OTU2NjA3OGYyMzZmNjk1NTk5ZGM1MmFkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYwpAQCAtMjUsOCAr
MjUsNyBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ly8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKwogCiAvLyBUaGlz
IHNhbXBsZSBzaG93cyBob3cgdG8gdXNlIEdvb2dsZSBUZXN0IGxpc3RlbmVyIEFQSSB0byBpbXBs
ZW1lbnQKIC8vIGFuIGFsdGVybmF0aXZlIGNvbnNvbGUgb3V0cHV0IGFuZCBob3cgdG8gdXNlIHRo
ZSBVbml0VGVzdCByZWZsZWN0aW9uIEFQSQpAQCAtMzQsNyArMzMsNyBAQAogCiAjaW5jbHVkZSA8
c3RkaW8uaD4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKIAogdXNpbmcgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyOwogdXNpbmcg
Ojp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdDsKQEAgLTQ0LDkgKzQzLDcgQEAgdXNpbmcgOjp0ZXN0
aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7CiB1c2luZyA6OnRlc3Rpbmc6OlRlc3RJbmZvOwogdXNp
bmcgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDsKIHVzaW5nIDo6dGVzdGluZzo6VW5pdFRlc3Q7
Ci0KIG5hbWVzcGFjZSB7Ci0KIC8vIFByb3ZpZGVzIGFsdGVybmF0aXZlIG91dHB1dCBtb2RlIHdo
aWNoIHByb2R1Y2VzIG1pbmltYWwgYW1vdW50IG9mCiAvLyBpbmZvcm1hdGlvbiBhYm91dCB0ZXN0
cy4KIGNsYXNzIFRlcnNlUHJpbnRlciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsK
QEAgLTY5LDcgKzY2LDcgQEAgY2xhc3MgVGVyc2VQcmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2
ZW50TGlzdGVuZXIgewogICAgIGZmbHVzaChzdGRvdXQpOwogICB9CiAKLSAgLy8gQ2FsbGVkIGFm
dGVyIGEgZmFpbGVkIGFzc2VydGlvbiBvciBhIFNVQ0NFU1MoKS4KKyAgLy8gQ2FsbGVkIGFmdGVy
IGEgZmFpbGVkIGFzc2VydGlvbiBvciBhIFNVQ0NFRUQoKSBpbnZvY2F0aW9uLgogICB2aXJ0dWFs
IHZvaWQgT25UZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jl
c3VsdCkgewogICAgIGZwcmludGYoc3Rkb3V0LAogICAgICAgICAgICAgIiVzIGluICVzOiVkXG4l
c1xuIiwKQEAgLTEwMiw3ICs5OSw2IEBAIFRFU1QoQ3VzdG9tT3V0cHV0VGVzdCwgRmFpbHMpIHsK
ICAgRVhQRUNUX0VRKDEsIDIpCiAgICAgICA8PCAiVGhpcyB0ZXN0IGZhaWxzIGluIG9yZGVyIHRv
IGRlbW9uc3RyYXRlIGFsdGVybmF0aXZlIGZhaWx1cmUgbWVzc2FnZXMiOwogfQotCiB9ICAvLyBu
YW1lc3BhY2UKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2NvbW1vbi5weSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NjcmlwdHMvY29tbW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjMDM0N2E3NWJkZmYz
MTg4MDk3NzQ1MDE1YTU4MDM3NjRhZDc0MWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2NvbW1vbi5weQpAQCAtMCwwICsxLDgzIEBACisjIENvcHly
aWdodCAyMDEzIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisiIiJTaGFyZWQgdXRpbGl0aWVzIGZvciB3cml0aW5nIHNjcmlwdHMgZm9yIEdvb2ds
ZSBUZXN0L01vY2suIiIiCisKK19fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25n
IFdhbiknCisKKworaW1wb3J0IG9zCitpbXBvcnQgcmUKKworCisjIE1hdGNoZXMgdGhlIGxpbmUg
ZnJvbSAnc3ZuIGluZm8gLicgb3V0cHV0IHRoYXQgZGVzY3JpYmVzIHdoYXQgU1ZOCisjIHBhdGgg
dGhlIGN1cnJlbnQgbG9jYWwgZGlyZWN0b3J5IGNvcnJlc3BvbmRzIHRvLiAgRm9yIGV4YW1wbGUs
IGluCisjIGEgZ29vZ2xldGVzdCBTVk4gd29ya3NwYWNlJ3MgdHJ1bmsvdGVzdCBkaXJlY3Rvcnks
IHRoZSBvdXRwdXQgd2lsbCBiZToKKyMKKyMgVVJMOiBodHRwczovL2dvb2dsZXRlc3QuZ29vZ2xl
Y29kZS5jb20vc3ZuL3RydW5rL3Rlc3QKK19TVk5fSU5GT19VUkxfUkUgPSByZS5jb21waWxlKHIn
XlVSTDogaHR0cHM6Ly8oXHcrKVwuZ29vZ2xlY29kZVwuY29tL3N2biguKiknKQorCisKK2RlZiBH
ZXRDb21tYW5kT3V0cHV0KGNvbW1hbmQpOgorICAiIiJSdW5zIHRoZSBzaGVsbCBjb21tYW5kIGFu
ZCByZXR1cm5zIGl0cyBzdGRvdXQgYXMgYSBsaXN0IG9mIGxpbmVzLiIiIgorCisgIGYgPSBvcy5w
b3Blbihjb21tYW5kLCAncicpCisgIGxpbmVzID0gW2xpbmUuc3RyaXAoKSBmb3IgbGluZSBpbiBm
LnJlYWRsaW5lcygpXQorICBmLmNsb3NlKCkKKyAgcmV0dXJuIGxpbmVzCisKKworZGVmIEdldFN2
bkluZm8oKToKKyAgIiIiUmV0dXJucyB0aGUgcHJvamVjdCBuYW1lIGFuZCB0aGUgY3VycmVudCBT
Vk4gd29ya3NwYWNlJ3Mgcm9vdCBwYXRoLiIiIgorCisgIGZvciBsaW5lIGluIEdldENvbW1hbmRP
dXRwdXQoJ3N2biBpbmZvIC4nKToKKyAgICBtID0gX1NWTl9JTkZPX1VSTF9SRS5tYXRjaChsaW5l
KQorICAgIGlmIG06CisgICAgICBwcm9qZWN0ID0gbS5ncm91cCgxKSAgIyBnb29nbGV0ZXN0IG9y
IGdvb2dsZW1vY2sKKyAgICAgIHJlbF9wYXRoID0gbS5ncm91cCgyKQorICAgICAgcm9vdCA9IG9z
LnBhdGgucmVhbHBhdGgocmVsX3BhdGguY291bnQoJy8nKSAqICcuLi8nKQorICAgICAgcmV0dXJu
IHByb2plY3QsIHJvb3QKKworICByZXR1cm4gTm9uZSwgTm9uZQorCisKK2RlZiBHZXRTdm5UcnVu
aygpOgorICAiIiJSZXR1cm5zIHRoZSBjdXJyZW50IFNWTiB3b3Jrc3BhY2UncyB0cnVuayByb290
IHBhdGguIiIiCisKKyAgXywgcm9vdCA9IEdldFN2bkluZm8oKQorICByZXR1cm4gcm9vdCArICcv
dHJ1bmsnIGlmIHJvb3QgZWxzZSBOb25lCisKKworZGVmIElzSW5HVGVzdFN2bigpOgorICBwcm9q
ZWN0LCBfID0gR2V0U3ZuSW5mbygpCisgIHJldHVybiBwcm9qZWN0ID09ICdnb29nbGV0ZXN0Jwor
CisKK2RlZiBJc0luR01vY2tTdm4oKToKKyAgcHJvamVjdCwgXyA9IEdldFN2bkluZm8oKQorICBy
ZXR1cm4gcHJvamVjdCA9PSAnZ29vZ2xlbW9jaycKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3NjcmlwdHMvZnVzZV9ndGVzdF9maWxlcy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NjcmlwdHMvZnVzZV9ndGVzdF9maWxlcy5weQppbmRleCAxNDg0NDRjYTcxMWIxZWRh
YWFmZWE4ZDc4MjZkM2NmZDRjMDFkZTBiLi5kMGRkNDY0ZmU4YjU5YzU0MTBhM2QxYjg1ZGI0Nzk1
YmJkMDMxZDg5IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2Z1
c2VfZ3Rlc3RfZmlsZXMucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9m
dXNlX2d0ZXN0X2ZpbGVzLnB5CkBAIC01Miw3ICs1Miw3IEBAIEVYQU1QTEVTCiBUaGlzIHRvb2wg
aXMgZXhwZXJpbWVudGFsLiAgSW4gcGFydGljdWxhciwgaXQgYXNzdW1lcyB0aGF0IHRoZXJlIGlz
IG5vCiBjb25kaXRpb25hbCBpbmNsdXNpb24gb2YgR29vZ2xlIFRlc3QgaGVhZGVycy4gIFBsZWFz
ZSByZXBvcnQgYW55CiBwcm9ibGVtcyB0byBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vw
cy5jb20uICBZb3UgY2FuIHJlYWQKLWh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0
L3dpa2kvR29vZ2xlVGVzdEFkdmFuY2VkR3VpZGUgZm9yCitodHRwczovL2dpdGh1Yi5jb20vZ29v
Z2xlL2dvb2dsZXRlc3QvYmxvYi9tYXN0ZXIvZ29vZ2xldGVzdC9kb2NzL2FkdmFuY2VkLm1kIGZv
cgogbW9yZSBpbmZvcm1hdGlvbi4KICIiIgogCkBAIC02MCwxNSArNjAsMTggQEAgX19hdXRob3Jf
XyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKIAogaW1wb3J0IG9zCiBpbXBvcnQg
cmUKLWltcG9ydCBzZXRzCit0cnk6CisgIGZyb20gc2V0cyBpbXBvcnQgU2V0IGFzIHNldCAgIyBG
b3IgUHl0aG9uIDIuMyBjb21wYXRpYmlsaXR5CitleGNlcHQgSW1wb3J0RXJyb3I6CisgIHBhc3MK
IGltcG9ydCBzeXMKIAogIyBXZSBhc3N1bWUgdGhhdCB0aGlzIGZpbGUgaXMgaW4gdGhlIHNjcmlw
dHMvIGRpcmVjdG9yeSBpbiB0aGUgR29vZ2xlCiAjIFRlc3Qgcm9vdCBkaXJlY3RvcnkuCiBERUZB
VUxUX0dURVNUX1JPT1RfRElSID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVf
XyksICcuLicpCiAKLSMgUmVnZXggZm9yIG1hdGNoaW5nICcjaW5jbHVkZSA8Z3Rlc3QvLi4uPicu
Ci1JTkNMVURFX0dURVNUX0ZJTEVfUkVHRVggPSByZS5jb21waWxlKHInXlxzKiNccyppbmNsdWRl
XHMqPChndGVzdC8uKyk+JykKKyMgUmVnZXggZm9yIG1hdGNoaW5nICcjaW5jbHVkZSAiZ3Rlc3Qv
Li4uIicuCitJTkNMVURFX0dURVNUX0ZJTEVfUkVHRVggPSByZS5jb21waWxlKHInXlxzKiNccypp
bmNsdWRlXHMqIihndGVzdC8uKykiJykKIAogIyBSZWdleCBmb3IgbWF0Y2hpbmcgJyNpbmNsdWRl
ICJzcmMvLi4uIicuCiBJTkNMVURFX1NSQ19GSUxFX1JFR0VYID0gcmUuY29tcGlsZShyJ15ccyoj
XHMqaW5jbHVkZVxzKiIoc3JjLy4rKSInKQpAQCAtOTAsMTAgKzkzLDEwIEBAIGRlZiBWZXJpZnlG
aWxlRXhpc3RzKGRpcmVjdG9yeSwgcmVsYXRpdmVfcGF0aCk6CiAgICIiIgogCiAgIGlmIG5vdCBv
cy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCByZWxhdGl2ZV9wYXRoKSk6Ci0g
ICAgcHJpbnQgJ0VSUk9SOiBDYW5ub3QgZmluZCAlcyBpbiBkaXJlY3RvcnkgJXMuJyAlIChyZWxh
dGl2ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlyZWN0b3J5KQotICAgIHByaW50ICgnUGxlYXNlIGVpdGhlciBzcGVjaWZ5IGEg
dmFsaWQgcHJvamVjdCByb290IGRpcmVjdG9yeSAnCi0gICAgICAgICAgICdvciBvbWl0IGl0IG9u
IHRoZSBjb21tYW5kIGxpbmUuJykKKyAgICBwcmludCgnRVJST1I6IENhbm5vdCBmaW5kICVzIGlu
IGRpcmVjdG9yeSAlcy4nICUgKHJlbGF0aXZlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkpKQorICAgIHByaW50KCdQ
bGVhc2UgZWl0aGVyIHNwZWNpZnkgYSB2YWxpZCBwcm9qZWN0IHJvb3QgZGlyZWN0b3J5ICcKKyAg
ICAgICAgICAnb3Igb21pdCBpdCBvbiB0aGUgY29tbWFuZCBsaW5lLicpCiAgICAgc3lzLmV4aXQo
MSkKIAogCkBAIC0xMTksMTEgKzEyMiwxMSBAQCBkZWYgVmVyaWZ5T3V0cHV0RmlsZShvdXRwdXRf
ZGlyLCByZWxhdGl2ZV9wYXRoKToKICAgICAjIFRPRE8od2FuQGdvb2dsZS5jb20pOiBUaGUgZm9s
bG93aW5nIHVzZXItaW50ZXJhY3Rpb24gZG9lc24ndAogICAgICMgd29yayB3aXRoIGF1dG9tYXRl
ZCBwcm9jZXNzZXMuICBXZSBzaG91bGQgcHJvdmlkZSBhIHdheSBmb3IgdGhlCiAgICAgIyBNYWtl
ZmlsZSB0byBmb3JjZSBvdmVyd3JpdGluZyB0aGUgZmlsZXMuCi0gICAgcHJpbnQgKCclcyBhbHJl
YWR5IGV4aXN0cyBpbiBkaXJlY3RvcnkgJXMgLSBvdmVyd3JpdGUgaXQ/ICh5L04pICcgJQotICAg
ICAgICAgICAocmVsYXRpdmVfcGF0aCwgb3V0cHV0X2RpcikpCisgICAgcHJpbnQoJyVzIGFscmVh
ZHkgZXhpc3RzIGluIGRpcmVjdG9yeSAlcyAtIG92ZXJ3cml0ZSBpdD8gKHkvTikgJyAlCisgICAg
ICAgICAgKHJlbGF0aXZlX3BhdGgsIG91dHB1dF9kaXIpKQogICAgIGFuc3dlciA9IHN5cy5zdGRp
bi5yZWFkbGluZSgpLnN0cmlwKCkKICAgICBpZiBhbnN3ZXIgbm90IGluIFsneScsICdZJ106Ci0g
ICAgICBwcmludCAnQUJPUlRFRC4nCisgICAgICBwcmludCgnQUJPUlRFRC4nKQogICAgICAgc3lz
LmV4aXQoMSkKIAogICAjIE1ha2VzIHN1cmUgdGhlIGRpcmVjdG9yeSBob2xkaW5nIHRoZSBvdXRw
dXQgZmlsZSBleGlzdHM7IGNyZWF0ZXMKQEAgLTE0Niw4ICsxNDksOCBAQCBkZWYgVmFsaWRhdGVP
dXRwdXREaXIob3V0cHV0X2Rpcik6CiBkZWYgRnVzZUdUZXN0SChndGVzdF9yb290LCBvdXRwdXRf
ZGlyKToKICAgIiIiU2NhbnMgZm9sZGVyIGd0ZXN0X3Jvb3QgdG8gZ2VuZXJhdGUgZ3Rlc3QvZ3Rl
c3QuaCBpbiBvdXRwdXRfZGlyLiIiIgogCi0gIG91dHB1dF9maWxlID0gZmlsZShvcy5wYXRoLmpv
aW4ob3V0cHV0X2RpciwgR1RFU1RfSF9PVVRQVVQpLCAndycpCi0gIHByb2Nlc3NlZF9maWxlcyA9
IHNldHMuU2V0KCkgICMgSG9sZHMgYWxsIGd0ZXN0IGhlYWRlcnMgd2UndmUgcHJvY2Vzc2VkLgor
ICBvdXRwdXRfZmlsZSA9IG9wZW4ob3MucGF0aC5qb2luKG91dHB1dF9kaXIsIEdURVNUX0hfT1VU
UFVUKSwgJ3cnKQorICBwcm9jZXNzZWRfZmlsZXMgPSBzZXQoKSAgIyBIb2xkcyBhbGwgZ3Rlc3Qg
aGVhZGVycyB3ZSd2ZSBwcm9jZXNzZWQuCiAKICAgZGVmIFByb2Nlc3NGaWxlKGd0ZXN0X2hlYWRl
cl9wYXRoKToKICAgICAiIiJQcm9jZXNzZXMgdGhlIGdpdmVuIGd0ZXN0IGhlYWRlciBmaWxlLiIi
IgpAQCAtMTU5LDEwICsxNjIsMTAgQEAgZGVmIEZ1c2VHVGVzdEgoZ3Rlc3Rfcm9vdCwgb3V0cHV0
X2Rpcik6CiAgICAgcHJvY2Vzc2VkX2ZpbGVzLmFkZChndGVzdF9oZWFkZXJfcGF0aCkKIAogICAg
ICMgUmVhZHMgZWFjaCBsaW5lIGluIHRoZSBnaXZlbiBndGVzdCBoZWFkZXIuCi0gICAgZm9yIGxp
bmUgaW4gZmlsZShvcy5wYXRoLmpvaW4oZ3Rlc3Rfcm9vdCwgZ3Rlc3RfaGVhZGVyX3BhdGgpLCAn
cicpOgorICAgIGZvciBsaW5lIGluIG9wZW4ob3MucGF0aC5qb2luKGd0ZXN0X3Jvb3QsIGd0ZXN0
X2hlYWRlcl9wYXRoKSwgJ3InKToKICAgICAgIG0gPSBJTkNMVURFX0dURVNUX0ZJTEVfUkVHRVgu
bWF0Y2gobGluZSkKICAgICAgIGlmIG06Ci0gICAgICAgICMgSXQncyAnI2luY2x1ZGUgPGd0ZXN0
Ly4uLj4nIC0gbGV0J3MgcHJvY2VzcyBpdCByZWN1cnNpdmVseS4KKyAgICAgICAgIyBJdCdzICcj
aW5jbHVkZSAiZ3Rlc3QvLi4uIicgLSBsZXQncyBwcm9jZXNzIGl0IHJlY3Vyc2l2ZWx5LgogICAg
ICAgICBQcm9jZXNzRmlsZSgnaW5jbHVkZS8nICsgbS5ncm91cCgxKSkKICAgICAgIGVsc2U6CiAg
ICAgICAgICMgT3RoZXJ3aXNlIHdlIGNvcHkgdGhlIGxpbmUgdW5jaGFuZ2VkIHRvIHRoZSBvdXRw
dXQgZmlsZS4KQEAgLTE3NSw3ICsxNzgsNyBAQCBkZWYgRnVzZUdUZXN0SChndGVzdF9yb290LCBv
dXRwdXRfZGlyKToKIGRlZiBGdXNlR1Rlc3RBbGxDY1RvRmlsZShndGVzdF9yb290LCBvdXRwdXRf
ZmlsZSk6CiAgICIiIlNjYW5zIGZvbGRlciBndGVzdF9yb290IHRvIGdlbmVyYXRlIGd0ZXN0L2d0
ZXN0LWFsbC5jYyBpbiBvdXRwdXRfZmlsZS4iIiIKIAotICBwcm9jZXNzZWRfZmlsZXMgPSBzZXRz
LlNldCgpCisgIHByb2Nlc3NlZF9maWxlcyA9IHNldCgpCiAKICAgZGVmIFByb2Nlc3NGaWxlKGd0
ZXN0X3NvdXJjZV9maWxlKToKICAgICAiIiJQcm9jZXNzZXMgdGhlIGdpdmVuIGd0ZXN0IHNvdXJj
ZSBmaWxlLiIiIgpAQCAtMTg3LDIzICsxOTAsMjMgQEAgZGVmIEZ1c2VHVGVzdEFsbENjVG9GaWxl
KGd0ZXN0X3Jvb3QsIG91dHB1dF9maWxlKToKICAgICBwcm9jZXNzZWRfZmlsZXMuYWRkKGd0ZXN0
X3NvdXJjZV9maWxlKQogCiAgICAgIyBSZWFkcyBlYWNoIGxpbmUgaW4gdGhlIGdpdmVuIGd0ZXN0
IHNvdXJjZSBmaWxlLgotICAgIGZvciBsaW5lIGluIGZpbGUob3MucGF0aC5qb2luKGd0ZXN0X3Jv
b3QsIGd0ZXN0X3NvdXJjZV9maWxlKSwgJ3InKToKKyAgICBmb3IgbGluZSBpbiBvcGVuKG9zLnBh
dGguam9pbihndGVzdF9yb290LCBndGVzdF9zb3VyY2VfZmlsZSksICdyJyk6CiAgICAgICBtID0g
SU5DTFVERV9HVEVTVF9GSUxFX1JFR0VYLm1hdGNoKGxpbmUpCiAgICAgICBpZiBtOgogICAgICAg
ICBpZiAnaW5jbHVkZS8nICsgbS5ncm91cCgxKSA9PSBHVEVTVF9TUElfSF9TRUVEOgotICAgICAg
ICAgICMgSXQncyAnI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPicuICBUaGlzIGZpbGUgaXMg
bm90Ci0gICAgICAgICAgIyAjaW5jbHVkZWQgYnkgPGd0ZXN0L2d0ZXN0Lmg+LCBzbyB3ZSBuZWVk
IHRvIHByb2Nlc3MgaXQuCisgICAgICAgICAgIyBJdCdzICcjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qt
c3BpLmgiJy4gIFRoaXMgZmlsZSBpcyBub3QKKyAgICAgICAgICAjICNpbmNsdWRlZCBieSAiZ3Rl
c3QvZ3Rlc3QuaCIsIHNvIHdlIG5lZWQgdG8gcHJvY2VzcyBpdC4KICAgICAgICAgICBQcm9jZXNz
RmlsZShHVEVTVF9TUElfSF9TRUVEKQogICAgICAgICBlbHNlOgotICAgICAgICAgICMgSXQncyAn
I2luY2x1ZGUgPGd0ZXN0L2Zvby5oPicgd2hlcmUgZm9vIGlzIG5vdCBndGVzdC1zcGkuCi0gICAg
ICAgICAgIyBXZSB0cmVhdCBpdCBhcyAnI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+JywgYXMgYWxs
IG90aGVyCisgICAgICAgICAgIyBJdCdzICcjaW5jbHVkZSAiZ3Rlc3QvZm9vLmgiJyB3aGVyZSBm
b28gaXMgbm90IGd0ZXN0LXNwaS4KKyAgICAgICAgICAjIFdlIHRyZWF0IGl0IGFzICcjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCInLCBhcyBhbGwgb3RoZXIKICAgICAgICAgICAjIGd0ZXN0IGhlYWRl
cnMgYXJlIGJlaW5nIGZ1c2VkIGludG8gZ3Rlc3QuaCBhbmQgY2Fubm90IGJlCiAgICAgICAgICAg
IyAjaW5jbHVkZWQgZGlyZWN0bHkuCiAKLSAgICAgICAgICAjIFRoZXJlIGlzIG5vIG5lZWQgdG8g
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+IG1vcmUgdGhhbiBvbmNlLgorICAgICAgICAgICMgVGhl
cmUgaXMgbm8gbmVlZCB0byAjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIgbW9yZSB0aGFuIG9uY2Uu
CiAgICAgICAgICAgaWYgbm90IEdURVNUX0hfU0VFRCBpbiBwcm9jZXNzZWRfZmlsZXM6CiAgICAg
ICAgICAgICBwcm9jZXNzZWRfZmlsZXMuYWRkKEdURVNUX0hfU0VFRCkKLSAgICAgICAgICAgIG91
dHB1dF9maWxlLndyaXRlKCcjaW5jbHVkZSA8JXM+XG4nICUgKEdURVNUX0hfT1VUUFVULCkpCisg
ICAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZSgnI2luY2x1ZGUgIiVzIlxuJyAlIChHVEVTVF9I
X09VVFBVVCwpKQogICAgICAgZWxzZToKICAgICAgICAgbSA9IElOQ0xVREVfU1JDX0ZJTEVfUkVH
RVgubWF0Y2gobGluZSkKICAgICAgICAgaWYgbToKQEAgLTIxOCw3ICsyMjEsNyBAQCBkZWYgRnVz
ZUdUZXN0QWxsQ2NUb0ZpbGUoZ3Rlc3Rfcm9vdCwgb3V0cHV0X2ZpbGUpOgogZGVmIEZ1c2VHVGVz
dEFsbENjKGd0ZXN0X3Jvb3QsIG91dHB1dF9kaXIpOgogICAiIiJTY2FucyBmb2xkZXIgZ3Rlc3Rf
cm9vdCB0byBnZW5lcmF0ZSBndGVzdC9ndGVzdC1hbGwuY2MgaW4gb3V0cHV0X2Rpci4iIiIKIAot
ICBvdXRwdXRfZmlsZSA9IGZpbGUob3MucGF0aC5qb2luKG91dHB1dF9kaXIsIEdURVNUX0FMTF9D
Q19PVVRQVVQpLCAndycpCisgIG91dHB1dF9maWxlID0gb3Blbihvcy5wYXRoLmpvaW4ob3V0cHV0
X2RpciwgR1RFU1RfQUxMX0NDX09VVFBVVCksICd3JykKICAgRnVzZUdUZXN0QWxsQ2NUb0ZpbGUo
Z3Rlc3Rfcm9vdCwgb3V0cHV0X2ZpbGUpCiAgIG91dHB1dF9maWxlLmNsb3NlKCkKIApAQCAtMjQy
LDcgKzI0NSw3IEBAIGRlZiBtYWluKCk6CiAgICAgIyBmdXNlX2d0ZXN0X2ZpbGVzLnB5IEdURVNU
X1JPT1RfRElSIE9VVFBVVF9ESVIKICAgICBGdXNlR1Rlc3Qoc3lzLmFyZ3ZbMV0sIHN5cy5hcmd2
WzJdKQogICBlbHNlOgotICAgIHByaW50IF9fZG9jX18KKyAgICBwcmludChfX2RvY19fKQogICAg
IHN5cy5leGl0KDEpCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ny
aXB0cy9nZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ny
aXB0cy9nZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5CmluZGV4IDgzMDcxMzRhZGFmNGRhMmJlOGZhMjMz
MjI5MTUyMGQzOWM5NGJiMTIuLmI0M2VmZGY0MWU1YzAyNzQwZjcyYjM1NTMyYmU1Y2YwNDk3OTQ4
MzUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvZ2VuX2d0ZXN0
X3ByZWRfaW1wbC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2dlbl9n
dGVzdF9wcmVkX2ltcGwucHkKQEAgLTExNSwxMCArMTE1LDkgQEAgZGVmIEhlYWRlclByZWFtYmxl
KG4pOgogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BSRURfSU1QTF9IXwogI2Rl
ZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BSRURfSU1QTF9IXwogCi0vLyBNYWtlcyBz
dXJlIHRoaXMgaGVhZGVyIGlzIG5vdCBpbmNsdWRlZCBiZWZvcmUgZ3Rlc3QuaC4KLSNpZm5kZWYg
R1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9IXwotI2Vycm9yIERvIG5vdCBpbmNsdWRlIGd0ZXN0
X3ByZWRfaW1wbC5oIGRpcmVjdGx5LiAgSW5jbHVkZSBndGVzdC5oIGluc3RlYWQuCi0jZW5kaWYg
IC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgorCituYW1lc3BhY2UgdGVzdGluZyB7CiAKIC8vIFRoaXMgaGVhZGVyIGltcGxlbWVudHMgYSBm
YW1pbHkgb2YgZ2VuZXJpYyBwcmVkaWNhdGUgYXNzZXJ0aW9uCiAvLyBtYWNyb3M6CkBAIC0yMzgs
MjcgKzIzNywyNSBAQCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZCUobilzSGVscGVyKGNvbnN0
IGNoYXIqIHByZWRfdGV4dCIiIiAlIERFRlMKICAgaW1wbCArPSAiIiIpIHsKICAgaWYgKHByZWQo
JSh2cylzKSkgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICBNZXNzYWdlIG1zZzsKICIi
IiAlIERFRlMKIAotICBpbXBsICs9ICcgIG1zZyA8PCBwcmVkX3RleHQgPDwgIigiJworICBpbXBs
ICs9ICcgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgcHJlZF90ZXh0IDw8ICIoIicKIAog
ICBpbXBsICs9IEl0ZXIobiwgIiIiCi0gICAgICA8PCBlJXMiIiIsIHNlcD0nIDw8ICIsICInKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUlcyIiIiwgc2VwPScgPDwgIiwgIicpCiAK
ICAgaW1wbCArPSAnIDw8ICIpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmUiJwogCiAgIGltcGwg
Kz0gSXRlcihuLCAiIiIKLSAgICAgIDw8ICJcXG4iIDw8IGUlcyA8PCAiIGV2YWx1YXRlcyB0byAi
IDw8IHYlcyIiIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXFxuIiA8PCBlJXMg
PDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2JXMiIiIpCiAKICAgaW1wbCArPSAiIiI7Ci0gIHJldHVy
biBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBs
ZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRURfRk9STUFUJShuKXMuCiAvLyBEb24ndCB1c2Ug
dGhpcyBpbiB5b3VyIGNvZGUuCiAjZGVmaW5lIEdURVNUX1BSRURfRk9STUFUJShuKXNfKHByZWRf
Zm9ybWF0LCAlKHZzKXMsIG9uX2ZhaWx1cmUpXFwKLSAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1h
dCglKHZ0cylzLCAlKHZzKXMpLFxcCisgIEdURVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoJSh2dHMp
cywgJSh2cylzKSwgXFwKICAgICAgICAgICAgICAgICBvbl9mYWlsdXJlKQogCiAvLyBJbnRlcm5h
bCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEJShuKXMuICBEb24n
dCB1c2UKQEAgLTI5NywxNiArMjk0LDE3IEBAIGRlZiBIZWFkZXJQb3N0YW1ibGUoKToKIAogICBy
ZXR1cm4gIiIiCiAKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKICNlbmRpZiAgLy8gR1RFU1Rf
SU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KICIiIgogCiAKIGRlZiBHZW5lcmF0ZUZp
bGUocGF0aCwgY29udGVudCk6Ci0gICIiIkdpdmVuIGEgZmlsZSBwYXRoIGFuZCBhIGNvbnRlbnQg
c3RyaW5nLCBvdmVyd3JpdGVzIGl0IHdpdGggdGhlCi0gIGdpdmVuIGNvbnRlbnQuIiIiCi0KKyAg
IiIiR2l2ZW4gYSBmaWxlIHBhdGggYW5kIGEgY29udGVudCBzdHJpbmcKKyAgICAgb3ZlcndyaXRl
cyBpdCB3aXRoIHRoZSBnaXZlbiBjb250ZW50LgorICAiIiIKICAgcHJpbnQgJ1VwZGF0aW5nIGZp
bGUgJXMgLiAuIC4nICUgcGF0aAotCiAgIGYgPSBmaWxlKHBhdGgsICd3KycpCiAgIHByaW50ID4+
ZiwgY29udGVudCwKICAgZi5jbG9zZSgpCkBAIC0zMTYsOCArMzE0LDggQEAgZGVmIEdlbmVyYXRl
RmlsZShwYXRoLCBjb250ZW50KToKIAogZGVmIEdlbmVyYXRlSGVhZGVyKG4pOgogICAiIiJHaXZl
biB0aGUgbWF4aW11bSBhcml0eSBuLCB1cGRhdGVzIHRoZSBoZWFkZXIgZmlsZSB0aGF0IGltcGxl
bWVudHMKLSAgdGhlIHByZWRpY2F0ZSBhc3NlcnRpb25zLiIiIgotCisgIHRoZSBwcmVkaWNhdGUg
YXNzZXJ0aW9ucy4KKyAgIiIiCiAgIEdlbmVyYXRlRmlsZShIRUFERVIsCiAgICAgICAgICAgICAg
ICBIZWFkZXJQcmVhbWJsZShuKQogICAgICAgICAgICAgICAgKyAnJy5qb2luKFtJbXBsZW1lbnRh
dGlvbkZvckFyaXR5KGkpIGZvciBpIGluIE9uZVRvKG4pXSkKQEAgLTM4Niw4ICszODQsOCBAQCBk
ZWYgVW5pdFRlc3RQcmVhbWJsZSgpOgogCiAjaW5jbHVkZSA8aW9zdHJlYW0+CiAKLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgorI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCiAKIC8vIEEgdXNl
ci1kZWZpbmVkIGRhdGEgdHlwZS4KIHN0cnVjdCBCb29sIHsKQEAgLTQ3OCwxNSArNDc2LDE0IEBA
IHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rpb24lKG4pcygiIiIgJSBE
RUZTCiAgIGlmIChQcmVkRnVuY3Rpb24lKG4pcyglKHZzKXMpKQogICAgIHJldHVybiB0ZXN0aW5n
OjpBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgdGVzdGluZzo6TWVzc2FnZSBtc2c7Ci0gIG1zZyA8
PCAiIiIgJSBERUZTCisgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAg
IDw8ICIiIiAlIERFRlMKIAogICB0ZXN0cyArPSBJdGVyKG4sICdlJXMnLCBzZXA9JyA8PCAiICsg
IiA8PCAnKQogCiAgIHRlc3RzICs9ICIiIgogICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBiZSBw
b3NpdGl2ZSwgYnV0IGV2YWx1YXRlcyB0byAiCiAgICAgICA8PCAlKHZfc3VtKXMgPDwgIi4iOwot
ICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogIiIiICUgREVGUwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2d0ZXN0LWNvbmZp
Zy5pbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvZ3Rlc3QtY29uZmlnLmluCmlu
ZGV4IDljNzI2Mzg1NGI5Zjg2M2I2MThjNzA4ZGUxZWZlMGU4YjFmNzI4MGEuLjc4MGY4NDMyZWZj
YzFhZWVhYWFkMDcwNjA4NmQzZmY2NDEyODViNjggMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3NjcmlwdHMvZ3Rlc3QtY29uZmlnLmluCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NjcmlwdHMvZ3Rlc3QtY29uZmlnLmluCkBAIC0yMDksNyArMjA5LDcgQEAgaWYgdGVz
dCAiJHt0aGlzX2JpbmRpcn0iID0gIiR7dGhpc19iaW5kaXIlJHtiaW5kaXJ9fSI7IHRoZW4KICAg
IyBUaGUgcGF0aCB0byB0aGUgc2NyaXB0IGRvZXNuJ3QgZW5kIGluIHRoZSBiaW5kaXIgc2VxdWVu
Y2UgZnJvbSBBdXRvY29uZiwKICAgIyBhc3N1bWUgdGhhdCB3ZSBhcmUgaW4gYSBidWlsZCB0cmVl
LgogICBidWlsZF9kaXI9YGRpcm5hbWUgJHt0aGlzX2JpbmRpcn1gCi0gIHNyY19kaXI9YGNkICR7
dGhpc19iaW5kaXJ9L0B0b3Bfc3JjZGlyQDsgcHdkIC1QYAorICBzcmNfZGlyPWBjZCAke3RoaXNf
YmluZGlyfTsgY2QgQHRvcF9zcmNkaXJAOyBwd2QgLVBgCiAKICAgIyBUT0RPKGNoYW5kbGVyY0Bn
b29nbGUuY29tKTogVGhpcyBpcyBhIGRhbmdlcm91cyBkZXBlbmRlbmN5IG9uIGxpYnRvb2wsIHdl
CiAgICMgc2hvdWxkIHdvcmsgdG8gcmVtb3ZlIGl0LCBhbmQvb3IgcmVtb3ZlIGxpYnRvb2wgYWx0
b2dldGhlciwgcmVwbGFjaW5nIGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zY3JpcHRzL3B1bXAucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3B1bXAu
cHkKaW5kZXggZjE1YzFiNmNlYjRiOGIxYmIwYmY0ZTgzZTNlYTkzYjM4Yzc4NTgwMC4uNWVmYjY1
M2MyMDdkMWYxYzJhZWNjNGQ2OTBiZjczMmUzYzFkNzFhYiAxMDA3NTUKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9wdW1wLnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NjcmlwdHMvcHVtcC5weQpAQCAtMjksNyArMjksNyBAQAogIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KIAotIiIicHVtcCB2MC4xIC0gUHJldHR5IFVzZWZ1bCBmb3IgTWV0YSBQcm9n
cmFtbWluZy4KKyIiInB1bXAgdjAuMi4wIC0gUHJldHR5IFVzZWZ1bCBmb3IgTWV0YSBQcm9ncmFt
bWluZy4KIAogQSB0b29sIGZvciBwcmVwcm9jZXNzb3IgbWV0YSBwcm9ncmFtbWluZy4gIFVzZWZ1
bCBmb3IgZ2VuZXJhdGluZwogcmVwZXRpdGl2ZSBib2lsZXJwbGF0ZSBjb2RlLiAgRXNwZWNpYWxs
eSB1c2VmdWwgZm9yIHdyaXRpbmcgQysrCkBAIC03OCw3ICs3OCw2IEBAIFRPS0VOX1RBQkxFID0g
WwogICAgIChyZS5jb21waWxlKHInXCRyYW5nZVxzKycpLCAnJHJhbmdlJyksCiAgICAgKHJlLmNv
bXBpbGUocidcJFtfQS1aYS16XVx3KicpLCAnJGlkJyksCiAgICAgKHJlLmNvbXBpbGUocidcJFwo
XCRcKScpLCAnJCgkKScpLAotICAgIChyZS5jb21waWxlKHInXCRcJC4qJyksICckJCcpLAogICAg
IChyZS5jb21waWxlKHInXCQnKSwgJyQnKSwKICAgICAocmUuY29tcGlsZShyJ1xbXFtcbj8nKSwg
J1tbJyksCiAgICAgKHJlLmNvbXBpbGUocidcXVxdXG4/JyksICddXScpLApAQCAtMjI0LDYgKzIy
MywxNyBAQCBkZWYgU3ViU3RyaW5nKGxpbmVzLCBzdGFydCwgZW5kKToKICAgcmV0dXJuICcnLmpv
aW4ocmVzdWx0X2xpbmVzKQogCiAKK2RlZiBTdHJpcE1ldGFDb21tZW50cyhzdHIpOgorICAiIiJT
dHJpcCBtZXRhIGNvbW1lbnRzIGZyb20gZWFjaCBsaW5lIGluIHRoZSBnaXZlbiBzdHJpbmcuIiIi
CisKKyAgIyBGaXJzdCwgY29tcGxldGVseSByZW1vdmUgbGluZXMgY29udGFpbmluZyBub3RoaW5n
IGJ1dCBhIG1ldGEKKyAgIyBjb21tZW50LCBpbmNsdWRpbmcgdGhlIHRyYWlsaW5nIFxuLgorICBz
dHIgPSByZS5zdWIocideXHMqXCRcJC4qXG4nLCAnJywgc3RyKQorCisgICMgVGhlbiwgcmVtb3Zl
IG1ldGEgY29tbWVudHMgZnJvbSBjb250ZW50ZnVsIGxpbmVzLgorICByZXR1cm4gcmUuc3ViKHIn
XHMqXCRcJC4qJywgJycsIHN0cikKKworCiBkZWYgTWFrZVRva2VuKGxpbmVzLCBzdGFydCwgZW5k
LCB0b2tlbl90eXBlKToKICAgIiIiQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBUb2tlbi4iIiIK
IApAQCAtMzExLDExICszMjEsNyBAQCBkZWYgVG9rZW5pemVMaW5lcyhsaW5lcywgcG9zKToKICAg
ICAgIHByZXZfdG9rZW4gPSBNYWtlVG9rZW4obGluZXMsIHBvcywgZm91bmQuc3RhcnQsICdjb2Rl
JykKICAgICAgIHByZXZfdG9rZW5fcnN0cmlwcGVkID0gUlN0cmlwTmV3TGluZUZyb21Ub2tlbihw
cmV2X3Rva2VuKQogCi0gICAgaWYgZm91bmQudG9rZW5fdHlwZSA9PSAnJCQnOiAgIyBBIG1ldGEg
Y29tbWVudC4KLSAgICAgIGlmIHByZXZfdG9rZW5fcnN0cmlwcGVkOgotICAgICAgICB5aWVsZCBw
cmV2X3Rva2VuX3JzdHJpcHBlZAotICAgICAgcG9zID0gQ3Vyc29yKGZvdW5kLmVuZC5saW5lICsg
MSwgMCkKLSAgICBlbGlmIGZvdW5kLnRva2VuX3R5cGUgPT0gJyR2YXInOgorICAgIGlmIGZvdW5k
LnRva2VuX3R5cGUgPT0gJyR2YXInOgogICAgICAgaWYgcHJldl90b2tlbl9yc3RyaXBwZWQ6CiAg
ICAgICAgIHlpZWxkIHByZXZfdG9rZW5fcnN0cmlwcGVkCiAgICAgICB5aWVsZCBmb3VuZApAQCAt
Mzc0LDggKzM4MCwxMSBAQCBkZWYgVG9rZW5pemVMaW5lcyhsaW5lcywgcG9zKToKIAogCiBkZWYg
VG9rZW5pemUocyk6Ci0gIGxpbmVzID0gcy5zcGxpdGxpbmVzKFRydWUpCi0gIHJldHVybiBUb2tl
bml6ZUxpbmVzKGxpbmVzLCBDdXJzb3IoMCwgMCkpCisgICIiIkEgZ2VuZXJhdG9yIHRoYXQgeWll
bGRzIHRoZSB0b2tlbnMgaW4gdGhlIGdpdmVuIHN0cmluZy4iIiIKKyAgaWYgcyAhPSAnJzoKKyAg
ICBsaW5lcyA9IHMuc3BsaXRsaW5lcyhUcnVlKQorICAgIGZvciB0b2tlbiBpbiBUb2tlbml6ZUxp
bmVzKGxpbmVzLCBDdXJzb3IoMCwgMCkpOgorICAgICAgeWllbGQgdG9rZW4KIAogCiBjbGFzcyBD
b2RlTm9kZToKQEAgLTU2NSwxMSArNTc0LDkgQEAgZGVmIFBhcnNlQ29kZU5vZGUodG9rZW5zKToK
ICAgcmV0dXJuIENvZGVOb2RlKGF0b21pY19jb2RlX2xpc3QpCiAKIAotZGVmIENvbnZlcnQoZmls
ZV9wYXRoKToKLSAgcyA9IGZpbGUoZmlsZV9wYXRoLCAncicpLnJlYWQoKQotICB0b2tlbnMgPSBb
XQotICBmb3IgdG9rZW4gaW4gVG9rZW5pemUocyk6Ci0gICAgdG9rZW5zLmFwcGVuZCh0b2tlbikK
K2RlZiBQYXJzZVRvQVNUKHB1bXBfc3JjX3RleHQpOgorICAiIiJDb252ZXJ0IHRoZSBnaXZlbiBQ
dW1wIHNvdXJjZSB0ZXh0IGludG8gYW4gQVNULiIiIgorICB0b2tlbnMgPSBsaXN0KFRva2VuaXpl
KHB1bXBfc3JjX3RleHQpKQogICBjb2RlX25vZGUgPSBQYXJzZUNvZGVOb2RlKHRva2VucykKICAg
cmV0dXJuIGNvZGVfbm9kZQogCkBAIC02OTcsMTQgKzcwNCwxNCBAQCBkZWYgUnVuQ29kZShlbnYs
IGNvZGVfbm9kZSwgb3V0cHV0KToKICAgICBSdW5BdG9taWNDb2RlKGVudiwgYXRvbWljX2NvZGUs
IG91dHB1dCkKIAogCi1kZWYgSXNDb21tZW50KGN1cl9saW5lKToKK2RlZiBJc1NpbmdsZUxpbmVD
b21tZW50KGN1cl9saW5lKToKICAgcmV0dXJuICcvLycgaW4gY3VyX2xpbmUKIAogCi1kZWYgSXNJ
blByZXByb2Nlc3NvckRpcmV2YXRpdmUocHJldl9saW5lcywgY3VyX2xpbmUpOgorZGVmIElzSW5Q
cmVwcm9jZXNzb3JEaXJlY3RpdmUocHJldl9saW5lcywgY3VyX2xpbmUpOgogICBpZiBjdXJfbGlu
ZS5sc3RyaXAoKS5zdGFydHN3aXRoKCcjJyk6CiAgICAgcmV0dXJuIFRydWUKLSAgcmV0dXJuIHBy
ZXZfbGluZXMgIT0gW10gYW5kIHByZXZfbGluZXNbLTFdLmVuZHN3aXRoKCdcXCcpCisgIHJldHVy
biBwcmV2X2xpbmVzIGFuZCBwcmV2X2xpbmVzWy0xXS5lbmRzd2l0aCgnXFwnKQogCiAKIGRlZiBX
cmFwQ29tbWVudChsaW5lLCBvdXRwdXQpOgpAQCAtNzYxLDcgKzc2OCw3IEBAIGRlZiBXcmFwQ29k
ZShsaW5lLCBsaW5lX2NvbmNhdCwgb3V0cHV0KToKICAgICBvdXRwdXQuYXBwZW5kKHByZWZpeCAr
IGN1cl9saW5lLnN0cmlwKCkpCiAKIAotZGVmIFdyYXBQcmVwcm9jZXNzb3JEaXJldmF0aXZlKGxp
bmUsIG91dHB1dCk6CitkZWYgV3JhcFByZXByb2Nlc3NvckRpcmVjdGl2ZShsaW5lLCBvdXRwdXQp
OgogICBXcmFwQ29kZShsaW5lLCAnIFxcJywgb3V0cHV0KQogCiAKQEAgLTc2OSwyOSArNzc2LDM3
IEBAIGRlZiBXcmFwUGxhaW5Db2RlKGxpbmUsIG91dHB1dCk6CiAgIFdyYXBDb2RlKGxpbmUsICcn
LCBvdXRwdXQpCiAKIAotZGVmIElzSGVhZGVyR3VhcmRPckluY2x1ZGUobGluZSk6CitkZWYgSXNN
dWx0aUxpbmVJV1lVUHJhZ21hKGxpbmUpOgorICByZXR1cm4gcmUuc2VhcmNoKHInL1wqIElXWVUg
cHJhZ21hOiAnLCBsaW5lKQorCisKK2RlZiBJc0hlYWRlckd1YXJkSW5jbHVkZU9yT25lTGluZUlX
WVVQcmFnbWEobGluZSk6CiAgIHJldHVybiAocmUubWF0Y2gocideIyhpZm5kZWZ8ZGVmaW5lfGVu
ZGlmXHMqLy8pXHMqW1x3X10rXHMqJCcsIGxpbmUpIG9yCi0gICAgICAgICAgcmUubWF0Y2gocide
I2luY2x1ZGVccycsIGxpbmUpKQorICAgICAgICAgIHJlLm1hdGNoKHInXiNpbmNsdWRlXHMnLCBs
aW5lKSBvcgorICAgICAgICAgICMgRG9uJ3QgYnJlYWsgSVdZVSBwcmFnbWFzLCBlaXRoZXI7IHRo
YXQgY2F1c2VzIGl3eXUucHkgcHJvYmxlbXMuCisgICAgICAgICAgcmUuc2VhcmNoKHInLy8gSVdZ
VSBwcmFnbWE6ICcsIGxpbmUpKQogCiAKIGRlZiBXcmFwTG9uZ0xpbmUobGluZSwgb3V0cHV0KToK
ICAgbGluZSA9IGxpbmUucnN0cmlwKCkKICAgaWYgbGVuKGxpbmUpIDw9IDgwOgogICAgIG91dHB1
dC5hcHBlbmQobGluZSkKLSAgZWxpZiBJc0NvbW1lbnQobGluZSk6Ci0gICAgaWYgSXNIZWFkZXJH
dWFyZE9ySW5jbHVkZShsaW5lKToKLSAgICAgICMgVGhlIHN0eWxlIGd1aWRlIG1hZGUgYW4gZXhj
ZXB0aW9uIHRvIGFsbG93IGxvbmcgaGVhZGVyIGd1YXJkIGxpbmVzCi0gICAgICAjIGFuZCBpbmNs
dWRlcy4KKyAgZWxpZiBJc1NpbmdsZUxpbmVDb21tZW50KGxpbmUpOgorICAgIGlmIElzSGVhZGVy
R3VhcmRJbmNsdWRlT3JPbmVMaW5lSVdZVVByYWdtYShsaW5lKToKKyAgICAgICMgVGhlIHN0eWxl
IGd1aWRlIG1hZGUgYW4gZXhjZXB0aW9uIHRvIGFsbG93IGxvbmcgaGVhZGVyIGd1YXJkIGxpbmVz
LAorICAgICAgIyBpbmNsdWRlcyBhbmQgSVdZVSBwcmFnbWFzLgogICAgICAgb3V0cHV0LmFwcGVu
ZChsaW5lKQogICAgIGVsc2U6CiAgICAgICBXcmFwQ29tbWVudChsaW5lLCBvdXRwdXQpCi0gIGVs
aWYgSXNJblByZXByb2Nlc3NvckRpcmV2YXRpdmUob3V0cHV0LCBsaW5lKToKLSAgICBpZiBJc0hl
YWRlckd1YXJkT3JJbmNsdWRlKGxpbmUpOgotICAgICAgIyBUaGUgc3R5bGUgZ3VpZGUgbWFkZSBh
biBleGNlcHRpb24gdG8gYWxsb3cgbG9uZyBoZWFkZXIgZ3VhcmQgbGluZXMKLSAgICAgICMgYW5k
IGluY2x1ZGVzLgorICBlbGlmIElzSW5QcmVwcm9jZXNzb3JEaXJlY3RpdmUob3V0cHV0LCBsaW5l
KToKKyAgICBpZiBJc0hlYWRlckd1YXJkSW5jbHVkZU9yT25lTGluZUlXWVVQcmFnbWEobGluZSk6
CisgICAgICAjIFRoZSBzdHlsZSBndWlkZSBtYWRlIGFuIGV4Y2VwdGlvbiB0byBhbGxvdyBsb25n
IGhlYWRlciBndWFyZCBsaW5lcywKKyAgICAgICMgaW5jbHVkZXMgYW5kIElXWVUgcHJhZ21hcy4K
ICAgICAgIG91dHB1dC5hcHBlbmQobGluZSkKICAgICBlbHNlOgotICAgICAgV3JhcFByZXByb2Nl
c3NvckRpcmV2YXRpdmUobGluZSwgb3V0cHV0KQorICAgICAgV3JhcFByZXByb2Nlc3NvckRpcmVj
dGl2ZShsaW5lLCBvdXRwdXQpCisgIGVsaWYgSXNNdWx0aUxpbmVJV1lVUHJhZ21hKGxpbmUpOgor
ICAgIG91dHB1dC5hcHBlbmQobGluZSkKICAgZWxzZToKICAgICBXcmFwUGxhaW5Db2RlKGxpbmUs
IG91dHB1dCkKIApAQCAtODA1LDE2ICs4MjAsMjEgQEAgZGVmIEJlYXV0aWZ5Q29kZShzdHJpbmcp
OgogICByZXR1cm4gJ1xuJy5qb2luKG91dHB1dDIpICsgJ1xuJwogCiAKK2RlZiBDb252ZXJ0RnJv
bVB1bXBTb3VyY2Uoc3JjX3RleHQpOgorICAiIiJSZXR1cm4gdGhlIHRleHQgZ2VuZXJhdGVkIGZy
b20gdGhlIGdpdmVuIFB1bXAgc291cmNlIHRleHQuIiIiCisgIGFzdCA9IFBhcnNlVG9BU1QoU3Ry
aXBNZXRhQ29tbWVudHMoc3JjX3RleHQpKQorICBvdXRwdXQgPSBPdXRwdXQoKQorICBSdW5Db2Rl
KEVudigpLCBhc3QsIG91dHB1dCkKKyAgcmV0dXJuIEJlYXV0aWZ5Q29kZShvdXRwdXQuc3RyaW5n
KQorCisKIGRlZiBtYWluKGFyZ3YpOgogICBpZiBsZW4oYXJndikgPT0gMToKICAgICBwcmludCBf
X2RvY19fCiAgICAgc3lzLmV4aXQoMSkKIAogICBmaWxlX3BhdGggPSBhcmd2Wy0xXQotICBhc3Qg
PSBDb252ZXJ0KGZpbGVfcGF0aCkKLSAgb3V0cHV0ID0gT3V0cHV0KCkKLSAgUnVuQ29kZShFbnYo
KSwgYXN0LCBvdXRwdXQpCi0gIG91dHB1dF9zdHIgPSBCZWF1dGlmeUNvZGUob3V0cHV0LnN0cmlu
ZykKKyAgb3V0cHV0X3N0ciA9IENvbnZlcnRGcm9tUHVtcFNvdXJjZShmaWxlKGZpbGVfcGF0aCwg
J3InKS5yZWFkKCkpCiAgIGlmIGZpbGVfcGF0aC5lbmRzd2l0aCgnLnB1bXAnKToKICAgICBvdXRw
dXRfZmlsZV9wYXRoID0gZmlsZV9wYXRoWzotNV0KICAgZWxzZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcmVsZWFzZV9kb2NzLnB5IGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc2NyaXB0cy9yZWxlYXNlX2RvY3MucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI5MTM0N2Y2
NzRhZmQ3YWY4NDk2MTVhNzViMTM4ZDUyOTNmOWNmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcmVsZWFzZV9kb2NzLnB5CkBAIC0wLDAgKzEsMTU4
IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMTMgR29vZ2xlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlNjcmlwdCBm
b3IgYnJhbmNoaW5nIEdvb2dsZSBUZXN0L01vY2sgd2lraSBwYWdlcyBmb3IgYSBuZXcgdmVyc2lv
bi4KKworU1lOT1BTSVMKKyAgICAgICByZWxlYXNlX2RvY3MucHkgTkVXX1JFTEVBU0VfVkVSU0lP
TgorCisgICAgICAgR29vZ2xlIFRlc3QgYW5kIEdvb2dsZSBNb2NrJ3MgZXh0ZXJuYWwgdXNlciBk
b2N1bWVudGF0aW9uIGlzIGluCisgICAgICAgaW50ZXJsaW5rZWQgd2lraSBmaWxlcy4gIFdoZW4g
d2UgcmVsZWFzZSBhIG5ldyB2ZXJzaW9uIG9mCisgICAgICAgR29vZ2xlIFRlc3Qgb3IgR29vZ2xl
IE1vY2ssIHdlIG5lZWQgdG8gYnJhbmNoIHRoZSB3aWtpIGZpbGVzCisgICAgICAgc3VjaCB0aGF0
IHVzZXJzIG9mIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiBHb29nbGUgVGVzdC9Nb2NrIGNhbgorICAg
ICAgIGxvb2sgdXAgZG9jdW1lbmF0aW9uIHJlbGV2YW50IGZvciB0aGF0IHZlcnNpb24uICBUaGlz
IHNjcmlwdAorICAgICAgIGF1dG9tYXRlcyB0aGF0IHByb2Nlc3MgYnk6CisKKyAgICAgICAgIC0g
YnJhbmNoaW5nIHRoZSBjdXJyZW50IHdpa2kgcGFnZXMgKHdoaWNoIGRvY3VtZW50IHRoZQorICAg
ICAgICAgICBiZWhhdmlvciBvZiB0aGUgU1ZOIHRydW5rIGhlYWQpIHRvIHBhZ2VzIGZvciB0aGUg
c3BlY2lmaWVkCisgICAgICAgICAgIHZlcnNpb24gKGUuZy4gYnJhbmNoaW5nIEZBUS53aWtpIHRv
IFYyXzZfRkFRLndpa2kgd2hlbgorICAgICAgICAgICBORVdfUkVMRUFTRV9WRVJTSU9OIGlzIDIu
Nik7CisgICAgICAgICAtIHVwZGF0aW5nIHRoZSBsaW5rcyBpbiB0aGUgYnJhbmNoZWQgZmlsZXMg
dG8gcG9pbnQgdG8gdGhlIGJyYW5jaGVkCisgICAgICAgICAgIHZlcnNpb24gKGUuZy4gYSBsaW5r
IGluIFYyXzZfRkFRLndpa2kgdGhhdCBwb2ludGVkIHRvCisgICAgICAgICAgIFByaW1lci53aWtp
I0FuY2hvciB3aWxsIG5vdyBwb2ludCB0byBWMl82X1ByaW1lci53aWtpI0FuY2hvcikuCisKKyAg
ICAgICBOT1RFOiBORVdfUkVMRUFTRV9WRVJTSU9OIG11c3QgYmUgYSBORVcgdmVyc2lvbiBudW1i
ZXIgZm9yCisgICAgICAgd2hpY2ggdGhlIHdpa2kgcGFnZXMgZG9uJ3QgeWV0IGV4aXN0OyBvdGhl
cndpc2UgeW91J2xsIGdldCBTVk4KKyAgICAgICBlcnJvcnMgbGlrZSAic3ZuOiBQYXRoICdWMV83
X1B1bXBNYW51YWwud2lraScgaXMgbm90IGEKKyAgICAgICBkaXJlY3RvcnkiIHdoZW4gcnVubmlu
ZyB0aGUgc2NyaXB0LgorCitFWEFNUExFCisgICAgICAgJCBjZCBQQVRIL1RPL0dURVNUX1NWTl9X
T1JLU1BBQ0UvdHJ1bmsKKyAgICAgICAkIHNjcmlwdHMvcmVsZWFzZV9kb2NzLnB5IDIuNiAgIyBj
cmVhdGUgd2lraSBwYWdlcyBmb3IgdjIuNgorICAgICAgICQgc3ZuIHN0YXR1cyAgICAgICAgICAg
ICAgICAgICAjIHZlcmlmeSB0aGUgZmlsZSBsaXN0CisgICAgICAgJCBzdm4gZGlmZiAgICAgICAg
ICAgICAgICAgICAgICMgdmVyaWZ5IHRoZSBmaWxlIGNvbnRlbnRzCisgICAgICAgJCBzdm4gY29t
bWl0IC1tICJyZWxlYXNlIHdpa2kgcGFnZXMgZm9yIHYyLjYiCisiIiIKKworX19hdXRob3JfXyA9
ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKKworaW1wb3J0IG9zCitpbXBvcnQgcmUK
K2ltcG9ydCBzeXMKKworaW1wb3J0IGNvbW1vbgorCisKKyMgV2lraSBwYWdlcyB0aGF0IHNob3Vs
ZG4ndCBiZSBicmFuY2hlZCBmb3IgZXZlcnkgZ3Rlc3QvZ21vY2sgcmVsZWFzZS4KK0dURVNUX1VO
VkVSU0lPTkVEX1dJS0lTID0gWydEZXZHdWlkZS53aWtpJ10KK0dNT0NLX1VOVkVSU0lPTkVEX1dJ
S0lTID0gWworICAgICdEZXNpZ25Eb2Mud2lraScsCisgICAgJ0Rldkd1aWRlLndpa2knLAorICAg
ICdLbm93bklzc3Vlcy53aWtpJworICAgIF0KKworCitkZWYgRHJvcFdpa2lTdWZmaXgod2lraV9m
aWxlbmFtZSk6CisgICIiIlJlbW92ZXMgdGhlIC53aWtpIHN1ZmZpeCAoaWYgYW55KSBmcm9tIHRo
ZSBnaXZlbiBmaWxlbmFtZS4iIiIKKworICByZXR1cm4gKHdpa2lfZmlsZW5hbWVbOi1sZW4oJy53
aWtpJyldIGlmIHdpa2lfZmlsZW5hbWUuZW5kc3dpdGgoJy53aWtpJykKKyAgICAgICAgICBlbHNl
IHdpa2lfZmlsZW5hbWUpCisKKworY2xhc3MgV2lraUJyYW5jaGVyKG9iamVjdCk6CisgICIiIkJy
YW5jaGVzIC4uLiIiIgorCisgIGRlZiBfX2luaXRfXyhzZWxmLCBkb3RfdmVyc2lvbik6CisgICAg
c2VsZi5wcm9qZWN0LCBzdm5fcm9vdF9wYXRoID0gY29tbW9uLkdldFN2bkluZm8oKQorICAgIGlm
IHNlbGYucHJvamVjdCBub3QgaW4gKCdnb29nbGV0ZXN0JywgJ2dvb2dsZW1vY2snKToKKyAgICAg
IHN5cy5leGl0KCdUaGlzIHNjcmlwdCBtdXN0IGJlIHJ1biBpbiBhIGd0ZXN0IG9yIGdtb2NrIFNW
TiB3b3Jrc3BhY2UuJykKKyAgICBzZWxmLndpa2lfZGlyID0gc3ZuX3Jvb3RfcGF0aCArICcvd2lr
aScKKyAgICAjIFR1cm4gJzIuNicgdG8gJ1YyXzZfJy4KKyAgICBzZWxmLnZlcnNpb25fcHJlZml4
ID0gJ1YnICsgZG90X3ZlcnNpb24ucmVwbGFjZSgnLicsICdfJykgKyAnXycKKyAgICBzZWxmLmZp
bGVzX3RvX2JyYW5jaCA9IHNlbGYuR2V0RmlsZXNUb0JyYW5jaCgpCisgICAgcGFnZV9uYW1lcyA9
IFtEcm9wV2lraVN1ZmZpeChmKSBmb3IgZiBpbiBzZWxmLmZpbGVzX3RvX2JyYW5jaF0KKyAgICAj
IEEgbGluayB0byBGb28ud2lraSBpcyBpbiBvbmUgb2YgdGhlIGZvbGxvd2luZyBmb3JtczoKKyAg
ICAjICAgW0ZvbyB3b3Jkc10KKyAgICAjICAgW0ZvbyNBbmNob3Igd29yZHNdCisgICAgIyAgIFto
dHRwOi8vY29kZS5nb29nbGUuY29tLy4uLi93aWtpL0ZvbyB3b3Jkc10KKyAgICAjICAgW2h0dHA6
Ly9jb2RlLmdvb2dsZS5jb20vLi4uL3dpa2kvRm9vI0FuY2hvciB3b3Jkc10KKyAgICAjIFdlIHdh
bnQgdG8gcmVwbGFjZSAnRm9vJyB3aXRoICdWMl82X0ZvbycgaW4gdGhlIGFib3ZlIGNhc2VzLgor
ICAgIHNlbGYuc2VhcmNoX2Zvcl9yZSA9IHJlLmNvbXBpbGUoCisgICAgICAgICMgVGhpcyByZWdl
eCBtYXRjaGVzIGVpdGhlcgorICAgICAgICAjICAgW0ZvbworICAgICAgICAjIG9yCisgICAgICAg
ICMgICAvd2lraS9Gb28KKyAgICAgICAgIyBmb2xsb3dlZCBieSBhIHNwYWNlIG9yIGEgIywgd2hl
cmUgRm9vIGlzIHRoZSBuYW1lIG9mIGFuCisgICAgICAgICMgdW52ZXJzaW9uZWQgd2lraSBwYWdl
LgorICAgICAgICByJyhcW3wvd2lraS8pKCVzKShbICNdKScgJSAnfCcuam9pbihwYWdlX25hbWVz
KSkKKyAgICBzZWxmLnJlcGxhY2Vfd2l0aCA9IHInXDElc1wyXDMnICUgKHNlbGYudmVyc2lvbl9w
cmVmaXgsKQorCisgIGRlZiBHZXRGaWxlc1RvQnJhbmNoKHNlbGYpOgorICAgICIiIlJldHVybnMg
YSBsaXN0IG9mIC53aWtpIGZpbGUgbmFtZXMgdGhhdCBuZWVkIHRvIGJlIGJyYW5jaGVkLiIiIgor
CisgICAgdW52ZXJzaW9uZWRfd2lraXMgPSAoR1RFU1RfVU5WRVJTSU9ORURfV0lLSVMgaWYgc2Vs
Zi5wcm9qZWN0ID09ICdnb29nbGV0ZXN0JworICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ug
R01PQ0tfVU5WRVJTSU9ORURfV0lLSVMpCisgICAgcmV0dXJuIFtmIGZvciBmIGluIG9zLmxpc3Rk
aXIoc2VsZi53aWtpX2RpcikKKyAgICAgICAgICAgIGlmIChmLmVuZHN3aXRoKCcud2lraScpIGFu
ZAorICAgICAgICAgICAgICAgIG5vdCByZS5tYXRjaChyJ15WXGQnLCBmKSBhbmQgICMgRXhjbHVk
ZWQgdmVyc2lvbmVkIC53aWtpIGZpbGVzLgorICAgICAgICAgICAgICAgIGYgbm90IGluIHVudmVy
c2lvbmVkX3dpa2lzKV0KKworICBkZWYgQnJhbmNoRmlsZXMoc2VsZik6CisgICAgIiIiQnJhbmNo
ZXMgdGhlIC53aWtpIGZpbGVzIG5lZWRlZCB0byBiZSBicmFuY2hlZC4iIiIKKworICAgIHByaW50
ICdCcmFuY2hpbmcgJWQgLndpa2kgZmlsZXM6JyAlIChsZW4oc2VsZi5maWxlc190b19icmFuY2gp
LCkKKyAgICBvcy5jaGRpcihzZWxmLndpa2lfZGlyKQorICAgIGZvciBmIGluIHNlbGYuZmlsZXNf
dG9fYnJhbmNoOgorICAgICAgY29tbWFuZCA9ICdzdm4gY3AgJXMgJXMlcycgJSAoZiwgc2VsZi52
ZXJzaW9uX3ByZWZpeCwgZikKKyAgICAgIHByaW50IGNvbW1hbmQKKyAgICAgIG9zLnN5c3RlbShj
b21tYW5kKQorCisgIGRlZiBVcGRhdGVMaW5rc0luQnJhbmNoZWRGaWxlcyhzZWxmKToKKworICAg
IGZvciBmIGluIHNlbGYuZmlsZXNfdG9fYnJhbmNoOgorICAgICAgc291cmNlX2ZpbGUgPSBvcy5w
YXRoLmpvaW4oc2VsZi53aWtpX2RpciwgZikKKyAgICAgIHZlcnNpb25lZF9maWxlID0gb3MucGF0
aC5qb2luKHNlbGYud2lraV9kaXIsIHNlbGYudmVyc2lvbl9wcmVmaXggKyBmKQorICAgICAgcHJp
bnQgJ1VwZGF0aW5nIGxpbmtzIGluICVzLicgJSAodmVyc2lvbmVkX2ZpbGUsKQorICAgICAgdGV4
dCA9IGZpbGUoc291cmNlX2ZpbGUsICdyJykucmVhZCgpCisgICAgICBuZXdfdGV4dCA9IHNlbGYu
c2VhcmNoX2Zvcl9yZS5zdWIoc2VsZi5yZXBsYWNlX3dpdGgsIHRleHQpCisgICAgICBmaWxlKHZl
cnNpb25lZF9maWxlLCAndycpLndyaXRlKG5ld190ZXh0KQorCisKK2RlZiBtYWluKCk6CisgIGlm
IGxlbihzeXMuYXJndikgIT0gMjoKKyAgICBzeXMuZXhpdChfX2RvY19fKQorCisgIGJyYW5jaGVy
ID0gV2lraUJyYW5jaGVyKHN5cy5hcmd2WzFdKQorICBicmFuY2hlci5CcmFuY2hGaWxlcygpCisg
IGJyYW5jaGVyLlVwZGF0ZUxpbmtzSW5CcmFuY2hlZEZpbGVzKCkKKworCitpZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgorICBtYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NjcmlwdHMvdGVzdC9NYWtlZmlsZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Njcmlw
dHMvdGVzdC9NYWtlZmlsZQppbmRleCBmZmMwYzkwYWQ5OTU3MmRmOTRhZmI1YjY0MTM2YTljMjk0
ODhhZTA2Li5jZGZmNTg0NjM3YjdhNmU5ZGYxZmE0M2NlOGY1ODhjNDM4MTVlNTYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy90ZXN0L01ha2VmaWxlCkBAIC0yMSw3ICsy
MSw5IEBAIFNBTVBMRV9ESVIgPSAuLi8uLi9zYW1wbGVzCiBHVEVTVF9NQUlOX0NDID0gLi4vLi4v
c3JjL2d0ZXN0X21haW4uY2MKIAogIyBGbGFncyBwYXNzZWQgdG8gdGhlIHByZXByb2Nlc3Nvci4K
LUNQUEZMQUdTICs9IC1JJChGVVNFRF9HVEVTVF9ESVIpCisjIFdlIGhhdmUgbm8gaWRlYSBoZXJl
IHdoZXRoZXIgcHRocmVhZHMgaXMgYXZhaWxhYmxlIGluIHRoZSBzeXN0ZW0sIHNvCisjIGRpc2Fi
bGUgaXRzIHVzZS4KK0NQUEZMQUdTICs9IC1JJChGVVNFRF9HVEVTVF9ESVIpIC1ER1RFU1RfSEFT
X1BUSFJFQUQ9MAogCiAjIEZsYWdzIHBhc3NlZCB0byB0aGUgQysrIGNvbXBpbGVyLgogQ1hYRkxB
R1MgKz0gLWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvdXBs
b2FkLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy91cGxvYWQucHkKaW5kZXgg
NmU2ZjlhMTQ3MTllZjhjOWZkYjYwM2FkNTBiZGQzNWRjNzk5NmUyZC4uYzg1MmU0YzkxZTA2ZWY3
YzQ5ZTAzODY4MzUwOWZmZDk0OTVjODIwZiAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2NyaXB0cy91cGxvYWQucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ny
aXB0cy91cGxvYWQucHkKQEAgLTI0Miw3ICsyNDIsNyBAQCBjbGFzcyBBYnN0cmFjdFJwY1NlcnZl
cihvYmplY3QpOgogICAgIFRoZSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzIHdvcmtzIGFzIGZvbGxv
d3M6CiAgICAgIDEpIFdlIGdldCBhIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBmcm9tIHRoZSB1c2Vy
CiAgICAgIDIpIFdlIHVzZSBDbGllbnRMb2dpbiB0byBvYnRhaW4gYW4gQVVUSCB0b2tlbiBmb3Ig
dGhlIHVzZXIKLSAgICAgICAgKHNlZSBodHRwOi8vY29kZS5nb29nbGUuY29tL2FwaXMvYWNjb3Vu
dHMvQXV0aEZvckluc3RhbGxlZEFwcHMuaHRtbCkuCisgICAgICAgIChzZWUgaHR0cHM6Ly9kZXZl
bG9wZXJzLmdvb2dsZS5jb20vaWRlbnRpdHkvcHJvdG9jb2xzL0F1dGhGb3JJbnN0YWxsZWRBcHBz
KS4KICAgICAgMykgV2UgcGFzcyB0aGUgYXV0aCB0b2tlbiB0byAvX2FoL2xvZ2luIG9uIHRoZSBz
ZXJ2ZXIgdG8gb2J0YWluIGFuCiAgICAgICAgIGF1dGhlbnRpY2F0aW9uIGNvb2tpZS4gSWYgbG9n
aW4gd2FzIHN1Y2Nlc3NmdWwsIGl0IHRyaWVzIHRvIHJlZGlyZWN0CiAgICAgICAgIHVzIHRvIHRo
ZSBVUkwgd2UgcHJvdmlkZWQuCkBAIC01MDYsNyArNTA2LDcgQEAgZGVmIEVuY29kZU11bHRpcGFy
dEZvcm1EYXRhKGZpZWxkcywgZmlsZXMpOgogICAgIChjb250ZW50X3R5cGUsIGJvZHkpIHJlYWR5
IGZvciBodHRwbGliLkhUVFAgaW5zdGFuY2UuCiAKICAgU291cmNlOgotICAgIGh0dHA6Ly9hc3Bu
LmFjdGl2ZXN0YXRlLmNvbS9BU1BOL0Nvb2tib29rL1B5dGhvbi9SZWNpcGUvMTQ2MzA2CisgICAg
aHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTYwMTE2MDUyMDAxL2NvZGUuYWN0aXZlc3Rh
dGUuY29tL3JlY2lwZXMvMTQ2MzA2CiAgICIiIgogICBCT1VOREFSWSA9ICctTS1BLUctSS1DLS0t
Qi1PLVUtTi1ELUEtUi1ZLScKICAgQ1JMRiA9ICdcclxuJwpAQCAtNzMyLDcgKzczMiw3IEBAIGNs
YXNzIFN1YnZlcnNpb25WQ1MoVmVyc2lvbkNvbnRyb2xTeXN0ZW0pOgogICAgIGVsc2U6CiAgICAg
ICBzZWxmLnJldl9zdGFydCA9IHNlbGYucmV2X2VuZCA9IE5vbmUKICAgICAjIENhY2hlIG91dHB1
dCBmcm9tICJzdm4gbGlzdCAtciBSRVZOTyBkaXJuYW1lIi4KLSAgICAjIEtleXM6IGRpcm5hbWUs
IFZhbHVlczogMi10dXBsZSAob3VwdXQgZm9yIHN0YXJ0IHJldiBhbmQgZW5kIHJldikuCisgICAg
IyBLZXlzOiBkaXJuYW1lLCBWYWx1ZXM6IDItdHVwbGUgKG91dHB1dCBmb3Igc3RhcnQgcmV2IGFu
ZCBlbmQgcmV2KS4KICAgICBzZWxmLnN2bmxzX2NhY2hlID0ge30KICAgICAjIFNWTiBiYXNlIFVS
TCBpcyByZXF1aXJlZCB0byBmZXRjaCBmaWxlcyBkZWxldGVkIGluIGFuIG9sZGVyIHJldmlzaW9u
LgogICAgICMgUmVzdWx0IGlzIGNhY2hlZCB0byBub3QgZ3Vlc3MgaXQgb3ZlciBhbmQgb3ZlciBh
Z2FpbiBpbiBHZXRCYXNlRmlsZSgpLgpAQCAtODA3LDcgKzgwNyw3IEBAIGNsYXNzIFN1YnZlcnNp
b25WQ1MoVmVyc2lvbkNvbnRyb2xTeXN0ZW0pOgogICAgICMgc3ZuIGNhdCB0cmFuc2xhdGVzIGtl
eXdvcmRzIGJ1dCBzdm4gZGlmZiBkb2Vzbid0LiBBcyBhIHJlc3VsdCBvZiB0aGlzCiAgICAgIyBi
ZWhhdmlvciBwYXRjaGluZy5QYXRjaENodW5rcygpIGZhaWxzIHdpdGggYSBjaHVuayBtaXNtYXRj
aCBlcnJvci4KICAgICAjIFRoaXMgcGFydCB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGJ5IHRoZSBS
ZXZpZXcgQm9hcmQgZGV2ZWxvcG1lbnQgdGVhbQotICAgICMgd2hvIGhhZCB0aGUgc2FtZSBwcm9i
bGVtIChodHRwOi8vcmV2aWV3cy5yZXZpZXctYm9hcmQub3JnL3IvMjc2LykuCisgICAgIyB3aG8g
aGFkIHRoZSBzYW1lIHByb2JsZW0gKGh0dHBzOi8vcmV2aWV3cy5yZXZpZXdib2FyZC5vcmcvci8y
NzYvKS4KICAgICAjIE1hcHBpbmcgb2Yga2V5d29yZHMgdG8ga25vd24gYWxpYXNlcwogICAgIHN2
bl9rZXl3b3JkcyA9IHsKICAgICAgICMgU3RhbmRhcmQga2V5d29yZHMKQEAgLTg2MCw3ICs4NjAs
NyBAQCBjbGFzcyBTdWJ2ZXJzaW9uVkNTKFZlcnNpb25Db250cm9sU3lzdGVtKToKICAgICAgIHN0
YXR1c19saW5lcyA9IHN0YXR1cy5zcGxpdGxpbmVzKCkKICAgICAgICMgSWYgZmlsZSBpcyBpbiBh
IGNsLCB0aGUgb3V0cHV0IHdpbGwgYmVnaW4gd2l0aAogICAgICAgIyAiXG4tLS0gQ2hhbmdlbGlz
dCAnY2xfbmFtZSc6XG4iLiAgU2VlCi0gICAgICAjIGh0dHA6Ly9zdm4uY29sbGFiLm5ldC9yZXBv
cy9zdm4vdHJ1bmsvbm90ZXMvY2hhbmdlbGlzdC1kZXNpZ24udHh0CisgICAgICAjIGh0dHBzOi8v
d2ViLmFyY2hpdmUub3JnL3dlYi8yMDA5MDkxODIzNDgxNS9zdm4uY29sbGFiLm5ldC9yZXBvcy9z
dm4vdHJ1bmsvbm90ZXMvY2hhbmdlbGlzdC1kZXNpZ24udHh0CiAgICAgICBpZiAobGVuKHN0YXR1
c19saW5lcykgPT0gMyBhbmQKICAgICAgICAgICBub3Qgc3RhdHVzX2xpbmVzWzBdIGFuZAogICAg
ICAgICAgIHN0YXR1c19saW5lc1sxXS5zdGFydHN3aXRoKCItLS0gQ2hhbmdlbGlzdCIpKToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1hbGwuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtYWxsLmNjCmluZGV4IGZlMzQ3NjVmYjY3MjE4
YTU2Y2I1ZTI1MmE3MGU2OGEzNmJjODhkMDcuLmIyMTdhMTgwMDZiMGM4YmRhZjRhOWY5YjZkMDZk
ZTRmZDhhZDllZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVz
dC1hbGwuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWFsbC5jYwpA
QCAtMjYsMjIgKzI2LDIyIEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKIC8vCi0vLyBBdXRob3I6IG1oZXVsZUBnb29nbGUuY29tIChNYXJrdXMgSGV1
bGUpCi0vLwotLy8gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisv
LyBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkK
IC8vCiAvLyBTb21ldGltZXMgaXQncyBkZXNpcmFibGUgdG8gYnVpbGQgR29vZ2xlIFRlc3QgYnkg
Y29tcGlsaW5nIGEgc2luZ2xlIGZpbGUuCiAvLyBUaGlzIGZpbGUgc2VydmVzIHRoaXMgcHVycG9z
ZS4KIAogLy8gVGhpcyBsaW5lIGVuc3VyZXMgdGhhdCBndGVzdC5oIGNhbiBiZSBjb21waWxlZCBv
biBpdHMgb3duLCBldmVuCiAvLyB3aGVuIGl0J3MgZnVzZWQuCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAvLyBUaGUgZm9sbG93aW5nIGxpbmVz
IHB1bGwgaW4gdGhlIHJlYWwgZ3Rlc3QgKi5jYyBmaWxlcy4KICNpbmNsdWRlICJzcmMvZ3Rlc3Qu
Y2MiCiAjaW5jbHVkZSAic3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MiCiAjaW5jbHVkZSAic3JjL2d0
ZXN0LWZpbGVwYXRoLmNjIgogI2luY2x1ZGUgInNyYy9ndGVzdC1wb3J0LmNjIgorI2luY2x1ZGUg
InNyYy9ndGVzdC1wcmludGVycy5jYyIKICNpbmNsdWRlICJzcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNj
IgogI2luY2x1ZGUgInNyYy9ndGVzdC10eXBlZC10ZXN0LmNjIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtZGVhdGgtdGVzdC5jYwppbmRleCAwY2Y3ODI1YmNhYzc5ZmEz
NWQwYTEyNDhlMjMwOGEyNGFhNjI3YjhhLi4wOTA4MzU1MTYxMmUzYzNiOWIzYmQ3ZDFlZTYwNmMx
OGZmYjVmNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3Qt
ZGVhdGgtdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtZGVh
dGgtdGVzdC5jYwpAQCAtMjYsNTIgKzI2LDY1IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhh
bnlvbmcgV2FuKSwgdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKwogLy8KIC8vIFRoaXMg
ZmlsZSBpbXBsZW1lbnRzIGRlYXRoIHRlc3RzLgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtZGVh
dGgtdGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KKyNpbmNs
dWRlICJndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtcG9ydC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oIgog
CiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKIAotI2lmIEdURVNUX09TX01BQwotI2luY2x1ZGUg
PGNydF9leHRlcm5zLmg+Ci0jZW5kaWYgIC8vIEdURVNUX09TX01BQworIyBpZiBHVEVTVF9PU19N
QUMKKyMgIGluY2x1ZGUgPGNydF9leHRlcm5zLmg+CisjIGVuZGlmICAvLyBHVEVTVF9PU19NQUMK
IAotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxsaW1p
dHMuaD4KLSNpbmNsdWRlIDxzdGRhcmcuaD4KKyMgaW5jbHVkZSA8ZXJybm8uaD4KKyMgaW5jbHVk
ZSA8ZmNudGwuaD4KKyMgaW5jbHVkZSA8bGltaXRzLmg+CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dT
Ci0jaW5jbHVkZSA8d2luZG93cy5oPgotI2Vsc2UKLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgotI2lu
Y2x1ZGUgPHN5cy93YWl0Lmg+Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RF
U1RfT1NfTElOVVgKKyMgIGluY2x1ZGUgPHNpZ25hbC5oPgorIyBlbmRpZiAgLy8gR1RFU1RfT1Nf
TElOVVgKIAotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorIyBpbmNsdWRlIDxzdGRh
cmcuaD4KKworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisjICBpbmNsdWRlIDx3aW5kb3dzLmg+Cisj
IGVsc2UKKyMgIGluY2x1ZGUgPHN5cy9tbWFuLmg+CisjICBpbmNsdWRlIDxzeXMvd2FpdC5oPgor
IyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjIGlmIEdURVNUX09TX1FOWAorIyAgaW5j
bHVkZSA8c3Bhd24uaD4KKyMgZW5kaWYgIC8vIEdURVNUX09TX1FOWAorCisjIGlmIEdURVNUX09T
X0ZVQ0hTSUEKKyMgIGluY2x1ZGUgPGxpYi9mZGlvL2lvLmg+CisjICBpbmNsdWRlIDxsaWIvZmRp
by9zcGF3bi5oPgorIyAgaW5jbHVkZSA8emlyY29uL3Byb2Nlc3NhcmdzLmg+CisjICBpbmNsdWRl
IDx6aXJjb24vc3lzY2FsbHMuaD4KKyMgIGluY2x1ZGUgPHppcmNvbi9zeXNjYWxscy9wb3J0Lmg+
CisjIGVuZGlmICAvLyBHVEVTVF9PU19GVUNIU0lBCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1t
ZXNzYWdlLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+CisjZW5k
aWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCiAKLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJh
bnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9u
LiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVk
ZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8K
LS8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRl
cm5hbC1pbmwuaCBpbgotLy8gaGlzIGNvZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9O
XyAxCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgorI2luY2x1ZGUgImd0ZXN0L2lu
dGVybmFsL2d0ZXN0LXN0cmluZy5oIgogI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwu
aCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KIAogbmFtZXNwYWNlIHRlc3Rpbmcgewog
CiAvLyBDb25zdGFudHMuCiAKIC8vIFRoZSBkZWZhdWx0IGRlYXRoIHRlc3Qgc3R5bGUuCi1zdGF0
aWMgY29uc3QgY2hhciBrRGVmYXVsdERlYXRoVGVzdFN0eWxlW10gPSAiZmFzdCI7CisvLworLy8g
VGhpcyBpcyBkZWZpbmVkIGluIGludGVybmFsL2d0ZXN0LXBvcnQuaCBhcyAiZmFzdCIsIGJ1dCBj
YW4gYmUgb3ZlcnJpZGRlbiBieQorLy8gYSBkZWZpbml0aW9uIGluIGludGVybmFsL2N1c3RvbS9n
dGVzdC1wb3J0LmguIFRoZSByZWNvbW1lbmRlZCB2YWx1ZSwgd2hpY2ggaXMKKy8vIHVzZWQgaW50
ZXJuYWxseSBhdCBHb29nbGUsIGlzICJ0aHJlYWRzYWZlIi4KK3N0YXRpYyBjb25zdCBjaGFyIGtE
ZWZhdWx0RGVhdGhUZXN0U3R5bGVbXSA9IEdURVNUX0RFRkFVTFRfREVBVEhfVEVTVF9TVFlMRTsK
IAogR1RFU1RfREVGSU5FX3N0cmluZ18oCiAgICAgZGVhdGhfdGVzdF9zdHlsZSwKQEAgLTEwMCwz
NiArMTEzLDc5IEBAIEdURVNUX0RFRklORV9zdHJpbmdfKAogICAgICJJbmRpY2F0ZXMgdGhlIGZp
bGUsIGxpbmUgbnVtYmVyLCB0ZW1wb3JhbCBpbmRleCBvZiAiCiAgICAgInRoZSBzaW5nbGUgZGVh
dGggdGVzdCB0byBydW4sIGFuZCBhIGZpbGUgZGVzY3JpcHRvciB0byAiCiAgICAgIndoaWNoIGEg
c3VjY2VzcyBjb2RlIG1heSBiZSBzZW50LCBhbGwgc2VwYXJhdGVkIGJ5ICIKLSAgICAiY29sb25z
LiAgVGhpcyBmbGFnIGlzIHNwZWNpZmllZCBpZiBhbmQgb25seSBpZiB0aGUgY3VycmVudCAiCisg
ICAgInRoZSAnfCcgY2hhcmFjdGVycy4gIFRoaXMgZmxhZyBpcyBzcGVjaWZpZWQgaWYgYW5kIG9u
bHkgaWYgdGhlIGN1cnJlbnQgIgogICAgICJwcm9jZXNzIGlzIGEgc3ViLXByb2Nlc3MgbGF1bmNo
ZWQgZm9yIHJ1bm5pbmcgYSB0aHJlYWQtc2FmZSAiCiAgICAgImRlYXRoIHRlc3QuICBGT1IgSU5U
RVJOQUwgVVNFIE9OTFkuIik7CiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAogI2lmIEdURVNU
X0hBU19ERUFUSF9URVNUCiAKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIFZhbGlkIG9ubHkg
Zm9yIGZhc3QgZGVhdGggdGVzdHMuIEluZGljYXRlcyB0aGUgY29kZSBpcyBydW5uaW5nIGluIHRo
ZQorLy8gY2hpbGQgcHJvY2VzcyBvZiBhIGZhc3Qgc3R5bGUgZGVhdGggdGVzdC4KKyMgaWYgIUdU
RVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX0ZVQ0hTSUEKK3N0YXRpYyBib29sIGdfaW5fZmFz
dF9kZWF0aF90ZXN0X2NoaWxkID0gZmFsc2U7CisjIGVuZGlmCisKKy8vIFJldHVybnMgYSBCb29s
ZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgY2FsbGVyIGlzIGN1cnJlbnRseQorLy8g
ZXhlY3V0aW5nIGluIHRoZSBjb250ZXh0IG9mIHRoZSBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nlc3Mu
ICBUb29scyBzdWNoIGFzCisvLyBWYWxncmluZCBoZWFwIGNoZWNrZXJzIG1heSBuZWVkIHRoaXMg
dG8gbW9kaWZ5IHRoZWlyIGJlaGF2aW9yIGluIGRlYXRoCisvLyB0ZXN0cy4gIElNUE9SVEFOVDog
VGhpcyBpcyBhbiBpbnRlcm5hbCB1dGlsaXR5LiAgVXNpbmcgaXQgbWF5IGJyZWFrIHRoZQorLy8g
aW1wbGVtZW50YXRpb24gb2YgZGVhdGggdGVzdHMuICBVc2VyIGNvZGUgTVVTVCBOT1QgdXNlIGl0
LgorYm9vbCBJbkRlYXRoVGVzdENoaWxkKCkgeworIyBpZiBHVEVTVF9PU19XSU5ET1dTIHx8IEdU
RVNUX09TX0ZVQ0hTSUEKKworICAvLyBPbiBXaW5kb3dzIGFuZCBGdWNoc2lhLCBkZWF0aCB0ZXN0
cyBhcmUgdGhyZWFkLXNhZmUgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUKKyAgLy8gb2YgdGhlIGRl
YXRoX3Rlc3Rfc3R5bGUgZmxhZy4KKyAgcmV0dXJuICFHVEVTVF9GTEFHKGludGVybmFsX3J1bl9k
ZWF0aF90ZXN0KS5lbXB0eSgpOworCisjIGVsc2UKKworICBpZiAoR1RFU1RfRkxBRyhkZWF0aF90
ZXN0X3N0eWxlKSA9PSAidGhyZWFkc2FmZSIpCisgICAgcmV0dXJuICFHVEVTVF9GTEFHKGludGVy
bmFsX3J1bl9kZWF0aF90ZXN0KS5lbXB0eSgpOworICBlbHNlCisgICAgcmV0dXJuIGdfaW5fZmFz
dF9kZWF0aF90ZXN0X2NoaWxkOworI2VuZGlmCit9CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5h
bAorCiAvLyBFeGl0ZWRXaXRoQ29kZSBjb25zdHJ1Y3Rvci4KIEV4aXRlZFdpdGhDb2RlOjpFeGl0
ZWRXaXRoQ29kZShpbnQgZXhpdF9jb2RlKSA6IGV4aXRfY29kZV8oZXhpdF9jb2RlKSB7CiB9CiAK
IC8vIEV4aXRlZFdpdGhDb2RlIGZ1bmN0aW9uLWNhbGwgb3BlcmF0b3IuCiBib29sIEV4aXRlZFdp
dGhDb2RlOjpvcGVyYXRvcigpKGludCBleGl0X3N0YXR1cykgY29uc3QgewotI2lmIEdURVNUX09T
X1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19GVUNIU0lBCisKICAg
cmV0dXJuIGV4aXRfc3RhdHVzID09IGV4aXRfY29kZV87Ci0jZWxzZQorCisjIGVsc2UKKwogICBy
ZXR1cm4gV0lGRVhJVEVEKGV4aXRfc3RhdHVzKSAmJiBXRVhJVFNUQVRVUyhleGl0X3N0YXR1cykg
PT0gZXhpdF9jb2RlXzsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjIGVuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTIHx8IEdURVNUX09TX0ZVQ0hTSUEKIH0KIAotI2lmICFHVEVTVF9P
U19XSU5ET1dTCisjIGlmICFHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19GVUNIU0lBCiAv
LyBLaWxsZWRCeVNpZ25hbCBjb25zdHJ1Y3Rvci4KIEtpbGxlZEJ5U2lnbmFsOjpLaWxsZWRCeVNp
Z25hbChpbnQgc2lnbnVtKSA6IHNpZ251bV8oc2lnbnVtKSB7CiB9CiAKIC8vIEtpbGxlZEJ5U2ln
bmFsIGZ1bmN0aW9uLWNhbGwgb3BlcmF0b3IuCiBib29sIEtpbGxlZEJ5U2lnbmFsOjpvcGVyYXRv
cigpKGludCBleGl0X3N0YXR1cykgY29uc3QgeworIyAgaWYgZGVmaW5lZChHVEVTVF9LSUxMRURf
QllfU0lHTkFMX09WRVJSSURFXykKKyAgeworICAgIGJvb2wgcmVzdWx0OworICAgIGlmIChHVEVT
VF9LSUxMRURfQllfU0lHTkFMX09WRVJSSURFXyhzaWdudW1fLCBleGl0X3N0YXR1cywgJnJlc3Vs
dCkpIHsKKyAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICB9CisjICBlbmRpZiAgLy8gZGVm
aW5lZChHVEVTVF9LSUxMRURfQllfU0lHTkFMX09WRVJSSURFXykKICAgcmV0dXJuIFdJRlNJR05B
TEVEKGV4aXRfc3RhdHVzKSAmJiBXVEVSTVNJRyhleGl0X3N0YXR1cykgPT0gc2lnbnVtXzsKIH0K
LSNlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vICFHVEVTVF9PU19XSU5E
T1dTICYmICFHVEVTVF9PU19GVUNIU0lBCiAKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKQEAgLTEz
NywyMiArMTkzLDI3IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIC8vIEdlbmVyYXRlcyBhIHRl
eHR1YWwgZGVzY3JpcHRpb24gb2YgYSBnaXZlbiBleGl0IGNvZGUsIGluIHRoZSBmb3JtYXQKIC8v
IHNwZWNpZmllZCBieSB3YWl0KDIpLgotc3RhdGljIFN0cmluZyBFeGl0U3VtbWFyeShpbnQgZXhp
dF9jb2RlKSB7CitzdGF0aWMgc3RkOjpzdHJpbmcgRXhpdFN1bW1hcnkoaW50IGV4aXRfY29kZSkg
ewogICBNZXNzYWdlIG07Ci0jaWYgR1RFU1RfT1NfV0lORE9XUworCisjIGlmIEdURVNUX09TX1dJ
TkRPV1MgfHwgR1RFU1RfT1NfRlVDSFNJQQorCiAgIG0gPDwgIkV4aXRlZCB3aXRoIGV4aXQgc3Rh
dHVzICIgPDwgZXhpdF9jb2RlOwotI2Vsc2UKKworIyBlbHNlCisKICAgaWYgKFdJRkVYSVRFRChl
eGl0X2NvZGUpKSB7CiAgICAgbSA8PCAiRXhpdGVkIHdpdGggZXhpdCBzdGF0dXMgIiA8PCBXRVhJ
VFNUQVRVUyhleGl0X2NvZGUpOwogICB9IGVsc2UgaWYgKFdJRlNJR05BTEVEKGV4aXRfY29kZSkp
IHsKICAgICBtIDw8ICJUZXJtaW5hdGVkIGJ5IHNpZ25hbCAiIDw8IFdURVJNU0lHKGV4aXRfY29k
ZSk7CiAgIH0KLSNpZmRlZiBXQ09SRURVTVAKKyMgIGlmZGVmIFdDT1JFRFVNUAogICBpZiAoV0NP
UkVEVU1QKGV4aXRfY29kZSkpIHsKICAgICBtIDw8ICIgKGNvcmUgZHVtcGVkKSI7CiAgIH0KLSNl
bmRpZgotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisjICBlbmRpZgorIyBlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19GVUNIU0lBCisKICAgcmV0dXJuIG0uR2V0U3Ry
aW5nKCk7CiB9CiAKQEAgLTE2Miw0MiArMjIzLDU5IEBAIGJvb2wgRXhpdGVkVW5zdWNjZXNzZnVs
bHkoaW50IGV4aXRfc3RhdHVzKSB7CiAgIHJldHVybiAhRXhpdGVkV2l0aENvZGUoMCkoZXhpdF9z
dGF0dXMpOwogfQogCi0jaWYgIUdURVNUX09TX1dJTkRPV1MKKyMgaWYgIUdURVNUX09TX1dJTkRP
V1MgJiYgIUdURVNUX09TX0ZVQ0hTSUEKIC8vIEdlbmVyYXRlcyBhIHRleHR1YWwgZmFpbHVyZSBt
ZXNzYWdlIHdoZW4gYSBkZWF0aCB0ZXN0IGZpbmRzIG1vcmUgdGhhbgogLy8gb25lIHRocmVhZCBy
dW5uaW5nLCBvciBjYW5ub3QgZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgdGhyZWFkcywgcHJpb3IK
IC8vIHRvIGV4ZWN1dGluZyB0aGUgZ2l2ZW4gc3RhdGVtZW50LiAgSXQgaXMgdGhlIHJlc3BvbnNp
YmlsaXR5IG9mIHRoZQogLy8gY2FsbGVyIG5vdCB0byBwYXNzIGEgdGhyZWFkX2NvdW50IG9mIDEu
Ci1zdGF0aWMgU3RyaW5nIERlYXRoVGVzdFRocmVhZFdhcm5pbmcoc2l6ZV90IHRocmVhZF9jb3Vu
dCkgeworc3RhdGljIHN0ZDo6c3RyaW5nIERlYXRoVGVzdFRocmVhZFdhcm5pbmcoc2l6ZV90IHRo
cmVhZF9jb3VudCkgewogICBNZXNzYWdlIG1zZzsKICAgbXNnIDw8ICJEZWF0aCB0ZXN0cyB1c2Ug
Zm9yaygpLCB3aGljaCBpcyB1bnNhZmUgcGFydGljdWxhcmx5IgogICAgICAgPDwgIiBpbiBhIHRo
cmVhZGVkIGNvbnRleHQuIEZvciB0aGlzIHRlc3QsICIgPDwgR1RFU1RfTkFNRV8gPDwgIiAiOwot
ICBpZiAodGhyZWFkX2NvdW50ID09IDApCisgIGlmICh0aHJlYWRfY291bnQgPT0gMCkgewogICAg
IG1zZyA8PCAiY291bGRuJ3QgZGV0ZWN0IHRoZSBudW1iZXIgb2YgdGhyZWFkcy4iOwotICBlbHNl
CisgIH0gZWxzZSB7CiAgICAgbXNnIDw8ICJkZXRlY3RlZCAiIDw8IHRocmVhZF9jb3VudCA8PCAi
IHRocmVhZHMuIjsKKyAgfQorICBtc2cgPDwgIiBTZWUgIgorICAgICAgICAgImh0dHBzOi8vZ2l0
aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9ibG9iL21hc3Rlci9nb29nbGV0ZXN0L2RvY3MvIgor
ICAgICAgICAgImFkdmFuY2VkLm1kI2RlYXRoLXRlc3RzLWFuZC10aHJlYWRzIgorICAgICAgPDwg
IiBmb3IgbW9yZSBleHBsYW5hdGlvbiBhbmQgc3VnZ2VzdGVkIHNvbHV0aW9ucywgZXNwZWNpYWxs
eSBpZiIKKyAgICAgIDw8ICIgdGhpcyBpcyB0aGUgbGFzdCBtZXNzYWdlIHlvdSBzZWUgYmVmb3Jl
IHlvdXIgdGVzdCB0aW1lcyBvdXQuIjsKICAgcmV0dXJuIG1zZy5HZXRTdHJpbmcoKTsKIH0KLSNl
bmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dT
ICYmICFHVEVTVF9PU19GVUNIU0lBCiAKIC8vIEZsYWcgY2hhcmFjdGVycyBmb3IgcmVwb3J0aW5n
IGEgZGVhdGggdGVzdCB0aGF0IGRpZCBub3QgZGllLgogc3RhdGljIGNvbnN0IGNoYXIga0RlYXRo
VGVzdExpdmVkID0gJ0wnOwogc3RhdGljIGNvbnN0IGNoYXIga0RlYXRoVGVzdFJldHVybmVkID0g
J1InOworc3RhdGljIGNvbnN0IGNoYXIga0RlYXRoVGVzdFRocmV3ID0gJ1QnOwogc3RhdGljIGNv
bnN0IGNoYXIga0RlYXRoVGVzdEludGVybmFsRXJyb3IgPSAnSSc7CiAKLS8vIEFuIGVudW1lcmF0
aW9uIGRlc2NyaWJpbmcgYWxsIG9mIHRoZSBwb3NzaWJsZSB3YXlzIHRoYXQgYSBkZWF0aCB0ZXN0
Ci0vLyBjYW4gY29uY2x1ZGUuICBESUVEIG1lYW5zIHRoYXQgdGhlIHByb2Nlc3MgZGllZCB3aGls
ZSBleGVjdXRpbmcgdGhlCi0vLyB0ZXN0IGNvZGU7IExJVkVEIG1lYW5zIHRoYXQgcHJvY2VzcyBs
aXZlZCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgdGVzdAotLy8gY29kZTsgYW5kIFJFVFVSTkVEIG1l
YW5zIHRoYXQgdGhlIHRlc3Qgc3RhdGVtZW50IGF0dGVtcHRlZCBhICJyZXR1cm4sIgotLy8gd2hp
Y2ggaXMgbm90IGFsbG93ZWQuICBJTl9QUk9HUkVTUyBtZWFucyB0aGUgdGVzdCBoYXMgbm90IHll
dAotLy8gY29uY2x1ZGVkLgotZW51bSBEZWF0aFRlc3RPdXRjb21lIHsgSU5fUFJPR1JFU1MsIERJ
RUQsIExJVkVELCBSRVRVUk5FRCB9OworI2lmIEdURVNUX09TX0ZVQ0hTSUEKKworLy8gRmlsZSBk
ZXNjcmlwdG9yIHVzZWQgZm9yIHRoZSBwaXBlIGluIHRoZSBjaGlsZCBwcm9jZXNzLgorc3RhdGlj
IGNvbnN0IGludCBrRnVjaHNpYVJlYWRQaXBlRmQgPSAzOworCisjZW5kaWYKKworLy8gQW4gZW51
bWVyYXRpb24gZGVzY3JpYmluZyBhbGwgb2YgdGhlIHBvc3NpYmxlIHdheXMgdGhhdCBhIGRlYXRo
IHRlc3QgY2FuCisvLyBjb25jbHVkZS4gIERJRUQgbWVhbnMgdGhhdCB0aGUgcHJvY2VzcyBkaWVk
IHdoaWxlIGV4ZWN1dGluZyB0aGUgdGVzdAorLy8gY29kZTsgTElWRUQgbWVhbnMgdGhhdCBwcm9j
ZXNzIGxpdmVkIGJleW9uZCB0aGUgZW5kIG9mIHRoZSB0ZXN0IGNvZGU7CisvLyBSRVRVUk5FRCBt
ZWFucyB0aGF0IHRoZSB0ZXN0IHN0YXRlbWVudCBhdHRlbXB0ZWQgdG8gZXhlY3V0ZSBhIHJldHVy
bgorLy8gc3RhdGVtZW50LCB3aGljaCBpcyBub3QgYWxsb3dlZDsgVEhSRVcgbWVhbnMgdGhhdCB0
aGUgdGVzdCBzdGF0ZW1lbnQKKy8vIHJldHVybmVkIGNvbnRyb2wgYnkgdGhyb3dpbmcgYW4gZXhj
ZXB0aW9uLiAgSU5fUFJPR1JFU1MgbWVhbnMgdGhlIHRlc3QKKy8vIGhhcyBub3QgeWV0IGNvbmNs
dWRlZC4KKy8vIEZJWE1FOiBVbmlmeSBuYW1lcyBhbmQgcG9zc2libHkgdmFsdWVzIGZvcgorLy8g
QWJvcnRSZWFzb24sIERlYXRoVGVzdE91dGNvbWUsIGFuZCBmbGFnIGNoYXJhY3RlcnMgYWJvdmUu
CitlbnVtIERlYXRoVGVzdE91dGNvbWUgeyBJTl9QUk9HUkVTUywgRElFRCwgTElWRUQsIFJFVFVS
TkVELCBUSFJFVyB9OwogCiAvLyBSb3V0aW5lIGZvciBhYm9ydGluZyB0aGUgcHJvZ3JhbSB3aGlj
aCBpcyBzYWZlIHRvIGNhbGwgZnJvbSBhbgogLy8gZXhlYy1zdHlsZSBkZWF0aCB0ZXN0IGNoaWxk
IHByb2Nlc3MsIGluIHdoaWNoIGNhc2UgdGhlIGVycm9yCiAvLyBtZXNzYWdlIGlzIHByb3BhZ2F0
ZWQgYmFjayB0byB0aGUgcGFyZW50IHByb2Nlc3MuICBPdGhlcndpc2UsIHRoZQogLy8gbWVzc2Fn
ZSBpcyBzaW1wbHkgcHJpbnRlZCB0byBzdGRlcnIuICBJbiBlaXRoZXIgY2FzZSwgdGhlIHByb2dy
YW0KIC8vIHRoZW4gZXhpdHMgd2l0aCBzdGF0dXMgMS4KLXZvaWQgRGVhdGhUZXN0QWJvcnQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKSB7CitzdGF0aWMgdm9pZCBEZWF0aFRlc3RBYm9ydChjb25zdCBz
dGQ6OnN0cmluZyYgbWVzc2FnZSkgewogICAvLyBPbiBhIFBPU0lYIHN5c3RlbSwgdGhpcyBmdW5j
dGlvbiBtYXkgYmUgY2FsbGVkIGZyb20gYSB0aHJlYWRzYWZlLXN0eWxlCiAgIC8vIGRlYXRoIHRl
c3QgY2hpbGQgcHJvY2Vzcywgd2hpY2ggb3BlcmF0ZXMgb24gYSB2ZXJ5IHNtYWxsIHN0YWNrLiAg
VXNlCiAgIC8vIHRoZSBoZWFwIGZvciBhbnkgYWRkaXRpb25hbCBub24tbWludXNjdWxlIG1lbW9y
eSByZXF1aXJlbWVudHMuCkBAIC0yMTIsMTggKzI5MCwxOSBAQCB2b2lkIERlYXRoVGVzdEFib3J0
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewogICB9IGVsc2UgewogICAgIGZwcmludGYoc3RkZXJy
LCAiJXMiLCBtZXNzYWdlLmNfc3RyKCkpOwogICAgIGZmbHVzaChzdGRlcnIpOwotICAgIGFib3J0
KCk7CisgICAgcG9zaXg6OkFib3J0KCk7CiAgIH0KIH0KIAogLy8gQSByZXBsYWNlbWVudCBmb3Ig
Q0hFQ0sgdGhhdCBjYWxscyBEZWF0aFRlc3RBYm9ydCBpZiB0aGUgYXNzZXJ0aW9uCiAvLyBmYWls
cy4KLSNkZWZpbmUgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oZXhwcmVzc2lvbikgXAorIyBkZWZp
bmUgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oZXhwcmVzc2lvbikgXAogICBkbyB7IFwKICAgICBp
ZiAoITo6dGVzdGluZzo6aW50ZXJuYWw6OklzVHJ1ZShleHByZXNzaW9uKSkgeyBcCi0gICAgICBE
ZWF0aFRlc3RBYm9ydCg6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmc6OkZvcm1hdCggXAotICAg
ICAgICAgICJDSEVDSyBmYWlsZWQ6IEZpbGUgJXMsIGxpbmUgJWQ6ICVzIiwgXAotICAgICAgICAg
IF9fRklMRV9fLCBfX0xJTkVfXywgI2V4cHJlc3Npb24pKTsgXAorICAgICAgRGVhdGhUZXN0QWJv
cnQoIFwKKyAgICAgICAgICA6OnN0ZDo6c3RyaW5nKCJDSEVDSyBmYWlsZWQ6IEZpbGUgIikgKyBf
X0ZJTEVfXyArICAiLCBsaW5lICIgXAorICAgICAgICAgICsgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
U3RyZWFtYWJsZVRvU3RyaW5nKF9fTElORV9fKSArICI6ICIgXAorICAgICAgICAgICsgI2V4cHJl
c3Npb24pOyBcCiAgICAgfSBcCiAgIH0gd2hpbGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5
c0ZhbHNlKCkpCiAKQEAgLTIzNCwyMiArMzEzLDIzIEBAIHZvaWQgRGVhdGhUZXN0QWJvcnQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKSB7CiAvLyBldmFsdWF0ZXMgdGhlIGV4cHJlc3Npb24gYXMgbG9u
ZyBhcyBpdCBldmFsdWF0ZXMgdG8gLTEgYW5kIHNldHMKIC8vIGVycm5vIHRvIEVJTlRSLiAgSWYg
dGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIC0xIGJ1dCBlcnJubyBpcwogLy8gc29tZXRoaW5n
IG90aGVyIHRoYW4gRUlOVFIsIERlYXRoVGVzdEFib3J0IGlzIGNhbGxlZC4KLSNkZWZpbmUgR1RF
U1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhleHByZXNzaW9uKSBcCisjIGRlZmluZSBHVEVT
VF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGV4cHJlc3Npb24pIFwKICAgZG8geyBcCiAgICAg
aW50IGd0ZXN0X3JldHZhbDsgXAogICAgIGRvIHsgXAogICAgICAgZ3Rlc3RfcmV0dmFsID0gKGV4
cHJlc3Npb24pOyBcCiAgICAgfSB3aGlsZSAoZ3Rlc3RfcmV0dmFsID09IC0xICYmIGVycm5vID09
IEVJTlRSKTsgXAogICAgIGlmIChndGVzdF9yZXR2YWwgPT0gLTEpIHsgXAotICAgICAgRGVhdGhU
ZXN0QWJvcnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOjpGb3JtYXQoIFwKLSAgICAgICAg
ICAiQ0hFQ0sgZmFpbGVkOiBGaWxlICVzLCBsaW5lICVkOiAlcyAhPSAtMSIsIFwKLSAgICAgICAg
ICBfX0ZJTEVfXywgX19MSU5FX18sICNleHByZXNzaW9uKSk7IFwKKyAgICAgIERlYXRoVGVzdEFi
b3J0KCBcCisgICAgICAgICAgOjpzdGQ6OnN0cmluZygiQ0hFQ0sgZmFpbGVkOiBGaWxlICIpICsg
X19GSUxFX18gKyAiLCBsaW5lICIgXAorICAgICAgICAgICsgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
U3RyZWFtYWJsZVRvU3RyaW5nKF9fTElORV9fKSArICI6ICIgXAorICAgICAgICAgICsgI2V4cHJl
c3Npb24gKyAiICE9IC0xIik7IFwKICAgICB9IFwKICAgfSB3aGlsZSAoOjp0ZXN0aW5nOjppbnRl
cm5hbDo6QWx3YXlzRmFsc2UoKSkKIAogLy8gUmV0dXJucyB0aGUgbWVzc2FnZSBkZXNjcmliaW5n
IHRoZSBsYXN0IHN5c3RlbSBlcnJvciBpbiBlcnJuby4KLVN0cmluZyBHZXRMYXN0RXJybm9EZXNj
cmlwdGlvbigpIHsKLSAgICByZXR1cm4gU3RyaW5nKGVycm5vID09IDAgPyAiIiA6IHBvc2l4OjpT
dHJFcnJvcihlcnJubykpOworc3RkOjpzdHJpbmcgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKSB7
CisgICAgcmV0dXJuIGVycm5vID09IDAgPyAiIiA6IHBvc2l4OjpTdHJFcnJvcihlcnJubyk7CiB9
CiAKIC8vIFRoaXMgaXMgY2FsbGVkIGZyb20gYSBkZWF0aCB0ZXN0IHBhcmVudCBwcm9jZXNzIHRv
IHJlYWQgYSBmYWlsdXJlCkBAIC0yOTksMTEgKzM3OSwxMSBAQCBjb25zdCBjaGFyKiBEZWF0aFRl
c3Q6Okxhc3RNZXNzYWdlKCkgewogICByZXR1cm4gbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2VfLmNf
c3RyKCk7CiB9CiAKLXZvaWQgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2Uo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7Cit2b2lkIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVhdGhf
dGVzdF9tZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7CiAgIGxhc3RfZGVhdGhf
dGVzdF9tZXNzYWdlXyA9IG1lc3NhZ2U7CiB9CiAKLVN0cmluZyBEZWF0aFRlc3Q6Omxhc3RfZGVh
dGhfdGVzdF9tZXNzYWdlXzsKK3N0ZDo6c3RyaW5nIERlYXRoVGVzdDo6bGFzdF9kZWF0aF90ZXN0
X21lc3NhZ2VfOwogCiAvLyBQcm92aWRlcyBjcm9zcyBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbiBm
b3Igc29tZSBkZWF0aCBmdW5jdGlvbmFsaXR5LgogY2xhc3MgRGVhdGhUZXN0SW1wbCA6IHB1Ymxp
YyBEZWF0aFRlc3QgewpAQCAtMzg4LDYgKzQ2OCw5IEBAIHZvaWQgRGVhdGhUZXN0SW1wbDo6UmVh
ZEFuZEludGVycHJldFN0YXR1c0J5dGUoKSB7CiAgICAgICBjYXNlIGtEZWF0aFRlc3RSZXR1cm5l
ZDoKICAgICAgICAgc2V0X291dGNvbWUoUkVUVVJORUQpOwogICAgICAgICBicmVhazsKKyAgICAg
IGNhc2Uga0RlYXRoVGVzdFRocmV3OgorICAgICAgICBzZXRfb3V0Y29tZShUSFJFVyk7CisgICAg
ICAgIGJyZWFrOwogICAgICAgY2FzZSBrRGVhdGhUZXN0TGl2ZWQ6CiAgICAgICAgIHNldF9vdXRj
b21lKExJVkVEKTsKICAgICAgICAgYnJlYWs7CkBAIC00MTYsMTkgKzQ5OSw0NiBAQCB2b2lkIERl
YXRoVGVzdEltcGw6OkFib3J0KEFib3J0UmVhc29uIHJlYXNvbikgewogICAvLyBpdCBmaW5kcyBh
bnkgZGF0YSBpbiBvdXIgcGlwZS4gIFNvLCBoZXJlIHdlIHdyaXRlIGEgc2luZ2xlIGZsYWcgYnl0
ZQogICAvLyB0byB0aGUgcGlwZSwgdGhlbiBleGl0LgogICBjb25zdCBjaGFyIHN0YXR1c19jaCA9
Ci0gICAgICByZWFzb24gPT0gVEVTVF9ESURfTk9UX0RJRSA/IGtEZWF0aFRlc3RMaXZlZCA6IGtE
ZWF0aFRlc3RSZXR1cm5lZDsKKyAgICAgIHJlYXNvbiA9PSBURVNUX0RJRF9OT1RfRElFID8ga0Rl
YXRoVGVzdExpdmVkIDoKKyAgICAgIHJlYXNvbiA9PSBURVNUX1RIUkVXX0VYQ0VQVElPTiA/IGtE
ZWF0aFRlc3RUaHJldyA6IGtEZWF0aFRlc3RSZXR1cm5lZDsKKwogICBHVEVTVF9ERUFUSF9URVNU
X0NIRUNLX1NZU0NBTExfKHBvc2l4OjpXcml0ZSh3cml0ZV9mZCgpLCAmc3RhdHVzX2NoLCAxKSk7
Ci0gIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8ocG9zaXg6OkNsb3NlKHdyaXRlX2Zk
KCkpKTsKKyAgLy8gV2UgYXJlIGxlYWtpbmcgdGhlIGRlc2NyaXB0b3IgaGVyZSBiZWNhdXNlIG9u
IHNvbWUgcGxhdGZvcm1zIChpLmUuLAorICAvLyB3aGVuIGJ1aWx0IGFzIFdpbmRvd3MgRExMKSwg
ZGVzdHJ1Y3RvcnMgb2YgZ2xvYmFsIG9iamVjdHMgd2lsbCBzdGlsbAorICAvLyBydW4gYWZ0ZXIg
Y2FsbGluZyBfZXhpdCgpLiBPbiBzdWNoIHN5c3RlbXMsIHdyaXRlX2ZkXyB3aWxsIGJlCisgIC8v
IGluZGlyZWN0bHkgY2xvc2VkIGZyb20gdGhlIGRlc3RydWN0b3Igb2YgVW5pdFRlc3RJbXBsLCBj
YXVzaW5nIGRvdWJsZQorICAvLyBjbG9zZSBpZiBpdCBpcyBhbHNvIGNsb3NlZCBoZXJlLiBPbiBk
ZWJ1ZyBjb25maWd1cmF0aW9ucywgZG91YmxlIGNsb3NlCisgIC8vIG1heSBhc3NlcnQuIEFzIHRo
ZXJlIGFyZSBubyBpbi1wcm9jZXNzIGJ1ZmZlcnMgdG8gZmx1c2ggaGVyZSwgd2UgYXJlCisgIC8v
IHJlbHlpbmcgb24gdGhlIE9TIHRvIGNsb3NlIHRoZSBkZXNjcmlwdG9yIGFmdGVyIHRoZSBwcm9j
ZXNzIHRlcm1pbmF0ZXMKKyAgLy8gd2hlbiB0aGUgZGVzdHJ1Y3RvcnMgYXJlIG5vdCBydW4uCiAg
IF9leGl0KDEpOyAgLy8gRXhpdHMgdy9vIGFueSBub3JtYWwgZXhpdCBob29rcyAod2Ugd2VyZSBz
dXBwb3NlZCB0byBjcmFzaCkKIH0KIAorLy8gUmV0dXJucyBhbiBpbmRlbnRlZCBjb3B5IG9mIHN0
ZGVyciBvdXRwdXQgZm9yIGEgZGVhdGggdGVzdC4KKy8vIFRoaXMgbWFrZXMgZGlzdGluZ3Vpc2hp
bmcgZGVhdGggdGVzdCBvdXRwdXQgbGluZXMgZnJvbSByZWd1bGFyIGxvZyBsaW5lcworLy8gbXVj
aCBlYXNpZXIuCitzdGF0aWMgOjpzdGQ6OnN0cmluZyBGb3JtYXREZWF0aFRlc3RPdXRwdXQoY29u
c3QgOjpzdGQ6OnN0cmluZyYgb3V0cHV0KSB7CisgIDo6c3RkOjpzdHJpbmcgcmV0OworICBmb3Ig
KHNpemVfdCBhdCA9IDA7IDsgKSB7CisgICAgY29uc3Qgc2l6ZV90IGxpbmVfZW5kID0gb3V0cHV0
LmZpbmQoJ1xuJywgYXQpOworICAgIHJldCArPSAiWyAgREVBVEggICBdICI7CisgICAgaWYgKGxp
bmVfZW5kID09IDo6c3RkOjpzdHJpbmc6Om5wb3MpIHsKKyAgICAgIHJldCArPSBvdXRwdXQuc3Vi
c3RyKGF0KTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXQgKz0gb3V0cHV0LnN1YnN0cihh
dCwgbGluZV9lbmQgKyAxIC0gYXQpOworICAgIGF0ID0gbGluZV9lbmQgKyAxOworICB9CisgIHJl
dHVybiByZXQ7Cit9CisKIC8vIEFzc2Vzc2VzIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgYSBk
ZWF0aCB0ZXN0LCB1c2luZyBib3RoIHByaXZhdGUKIC8vIG1lbWJlcnMgd2hpY2ggaGF2ZSBwcmV2
aW91c2x5IGJlZW4gc2V0LCBhbmQgb25lIGFyZ3VtZW50OgogLy8KIC8vIFByaXZhdGUgZGF0YSBt
ZW1iZXJzOgogLy8gICBvdXRjb21lOiAgQW4gZW51bWVyYXRpb24gZGVzY3JpYmluZyBob3cgdGhl
IGRlYXRoIHRlc3QKLS8vICAgICAgICAgICAgIGNvbmNsdWRlZDogRElFRCwgTElWRUQsIG9yIFJF
VFVSTkVELiAgVGhlIGRlYXRoIHRlc3QgZmFpbHMKLS8vICAgICAgICAgICAgIGluIHRoZSBsYXR0
ZXIgdHdvIGNhc2VzLgorLy8gICAgICAgICAgICAgY29uY2x1ZGVkOiBESUVELCBMSVZFRCwgVEhS
RVcsIG9yIFJFVFVSTkVELiAgVGhlIGRlYXRoIHRlc3QKKy8vICAgICAgICAgICAgIGZhaWxzIGlu
IHRoZSBsYXR0ZXIgdGhyZWUgY2FzZXMuCiAvLyAgIHN0YXR1czogICBUaGUgZXhpdCBzdGF0dXMg
b2YgdGhlIGNoaWxkIHByb2Nlc3MuIE9uICpuaXgsIGl0IGlzIGluIHRoZQogLy8gICAgICAgICAg
ICAgaW4gdGhlIGZvcm1hdCBzcGVjaWZpZWQgYnkgd2FpdCgyKS4gT24gV2luZG93cywgdGhpcyBp
cyB0aGUKIC8vICAgICAgICAgICAgIHZhbHVlIHN1cHBsaWVkIHRvIHRoZSBFeGl0UHJvY2Vzcygp
IEFQSSBvciBhIG51bWVyaWMgY29kZQpAQCAtNDQ4LDcgKzU1OCw3IEBAIGJvb2wgRGVhdGhUZXN0
SW1wbDo6UGFzc2VkKGJvb2wgc3RhdHVzX29rKSB7CiAgIGlmICghc3Bhd25lZCgpKQogICAgIHJl
dHVybiBmYWxzZTsKIAotICBjb25zdCBTdHJpbmcgZXJyb3JfbWVzc2FnZSA9IEdldENhcHR1cmVk
U3RkZXJyKCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGVycm9yX21lc3NhZ2UgPSBHZXRDYXB0dXJl
ZFN0ZGVycigpOwogCiAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICBNZXNzYWdlIGJ1ZmZlcjsK
QEAgLTQ1NywyNSArNTY3LDM1IEBAIGJvb2wgRGVhdGhUZXN0SW1wbDo6UGFzc2VkKGJvb2wgc3Rh
dHVzX29rKSB7CiAgIHN3aXRjaCAob3V0Y29tZSgpKSB7CiAgICAgY2FzZSBMSVZFRDoKICAgICAg
IGJ1ZmZlciA8PCAiICAgIFJlc3VsdDogZmFpbGVkIHRvIGRpZS5cbiIKLSAgICAgICAgICAgICA8
PCAiIEVycm9yIG1zZzogIiA8PCBlcnJvcl9tZXNzYWdlOworICAgICAgICAgICAgIDw8ICIgRXJy
b3IgbXNnOlxuIiA8PCBGb3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2FnZSk7CisgICAg
ICBicmVhazsKKyAgICBjYXNlIFRIUkVXOgorICAgICAgYnVmZmVyIDw8ICIgICAgUmVzdWx0OiB0
aHJldyBhbiBleGNlcHRpb24uXG4iCisgICAgICAgICAgICAgPDwgIiBFcnJvciBtc2c6XG4iIDw8
IEZvcm1hdERlYXRoVGVzdE91dHB1dChlcnJvcl9tZXNzYWdlKTsKICAgICAgIGJyZWFrOwogICAg
IGNhc2UgUkVUVVJORUQ6CiAgICAgICBidWZmZXIgPDwgIiAgICBSZXN1bHQ6IGlsbGVnYWwgcmV0
dXJuIGluIHRlc3Qgc3RhdGVtZW50LlxuIgotICAgICAgICAgICAgIDw8ICIgRXJyb3IgbXNnOiAi
IDw8IGVycm9yX21lc3NhZ2U7CisgICAgICAgICAgICAgPDwgIiBFcnJvciBtc2c6XG4iIDw8IEZv
cm1hdERlYXRoVGVzdE91dHB1dChlcnJvcl9tZXNzYWdlKTsKICAgICAgIGJyZWFrOwogICAgIGNh
c2UgRElFRDoKICAgICAgIGlmIChzdGF0dXNfb2spIHsKKyMgaWYgR1RFU1RfVVNFU19QQ1JFCisg
ICAgICAgIC8vIFBDUkUgcmVnZXhlcyBzdXBwb3J0IGVtYmVkZGVkIE5VTHMuCisgICAgICAgIGNv
bnN0IGJvb2wgbWF0Y2hlZCA9IFJFOjpQYXJ0aWFsTWF0Y2goZXJyb3JfbWVzc2FnZSwgKnJlZ2V4
KCkpOworIyBlbHNlCiAgICAgICAgIGNvbnN0IGJvb2wgbWF0Y2hlZCA9IFJFOjpQYXJ0aWFsTWF0
Y2goZXJyb3JfbWVzc2FnZS5jX3N0cigpLCAqcmVnZXgoKSk7CisjIGVuZGlmICAvLyBHVEVTVF9V
U0VTX1BDUkUKICAgICAgICAgaWYgKG1hdGNoZWQpIHsKICAgICAgICAgICBzdWNjZXNzID0gdHJ1
ZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICBidWZmZXIgPDwgIiAgICBSZXN1bHQ6IGRp
ZWQgYnV0IG5vdCB3aXRoIGV4cGVjdGVkIGVycm9yLlxuIgogICAgICAgICAgICAgICAgICA8PCAi
ICBFeHBlY3RlZDogIiA8PCByZWdleCgpLT5wYXR0ZXJuKCkgPDwgIlxuIgotICAgICAgICAgICAg
ICAgICA8PCAiQWN0dWFsIG1zZzogIiA8PCBlcnJvcl9tZXNzYWdlOworICAgICAgICAgICAgICAg
ICA8PCAiQWN0dWFsIG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGVycm9yX21lc3Nh
Z2UpOwogICAgICAgICB9CiAgICAgICB9IGVsc2UgewogICAgICAgICBidWZmZXIgPDwgIiAgICBS
ZXN1bHQ6IGRpZWQgYnV0IG5vdCB3aXRoIGV4cGVjdGVkIGV4aXQgY29kZTpcbiIKLSAgICAgICAg
ICAgICAgIDw8ICIgICAgICAgICAgICAiIDw8IEV4aXRTdW1tYXJ5KHN0YXR1cygpKSA8PCAiXG4i
OworICAgICAgICAgICAgICAgPDwgIiAgICAgICAgICAgICIgPDwgRXhpdFN1bW1hcnkoc3RhdHVz
KCkpIDw8ICJcbiIKKyAgICAgICAgICAgICAgIDw8ICJBY3R1YWwgbXNnOlxuIiA8PCBGb3JtYXRE
ZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2FnZSk7CiAgICAgICB9CiAgICAgICBicmVhazsKICAg
ICBjYXNlIElOX1BST0dSRVNTOgpAQCAtNDg4LDcgKzYwOCw3IEBAIGJvb2wgRGVhdGhUZXN0SW1w
bDo6UGFzc2VkKGJvb2wgc3RhdHVzX29rKSB7CiAgIHJldHVybiBzdWNjZXNzOwogfQogCi0jaWYg
R1RFU1RfT1NfV0lORE9XUworIyBpZiBHVEVTVF9PU19XSU5ET1dTCiAvLyBXaW5kb3dzRGVhdGhU
ZXN0IGltcGxlbWVudHMgZGVhdGggdGVzdHMgb24gV2luZG93cy4gRHVlIHRvIHRoZQogLy8gc3Bl
Y2lmaWNzIG9mIHN0YXJ0aW5nIG5ldyBwcm9jZXNzZXMgb24gV2luZG93cywgZGVhdGggdGVzdHMg
dGhlcmUgYXJlCiAvLyBhbHdheXMgdGhyZWFkc2FmZSwgYW5kIEdvb2dsZSBUZXN0IGNvbnNpZGVy
cyB0aGUKQEAgLTUxOSwxMSArNjM5LDExIEBAIGJvb2wgRGVhdGhUZXN0SW1wbDo6UGFzc2VkKGJv
b2wgc3RhdHVzX29rKSB7CiAvLwogY2xhc3MgV2luZG93c0RlYXRoVGVzdCA6IHB1YmxpYyBEZWF0
aFRlc3RJbXBsIHsKICBwdWJsaWM6Ci0gIFdpbmRvd3NEZWF0aFRlc3QoY29uc3QgY2hhciogc3Rh
dGVtZW50LAotICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFKiByZWdleCwKKyAgV2luZG93c0Rl
YXRoVGVzdChjb25zdCBjaGFyKiBhX3N0YXRlbWVudCwKKyAgICAgICAgICAgICAgICAgICBjb25z
dCBSRSogYV9yZWdleCwKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLAogICAg
ICAgICAgICAgICAgICAgIGludCBsaW5lKQotICAgICAgOiBEZWF0aFRlc3RJbXBsKHN0YXRlbWVu
dCwgcmVnZXgpLCBmaWxlXyhmaWxlKSwgbGluZV8obGluZSkge30KKyAgICAgIDogRGVhdGhUZXN0
SW1wbChhX3N0YXRlbWVudCwgYV9yZWdleCksIGZpbGVfKGZpbGUpLCBsaW5lXyhsaW5lKSB7fQog
CiAgIC8vIEFsbCBvZiB0aGVzZSB2aXJ0dWFsIGZ1bmN0aW9ucyBhcmUgaW5oZXJpdGVkIGZyb20g
RGVhdGhUZXN0LgogICB2aXJ0dWFsIGludCBXYWl0KCk7CkBAIC01ODAsMTIgKzcwMCwxMiBAQCBp
bnQgV2luZG93c0RlYXRoVGVzdDo6V2FpdCgpIHsKICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18o
CiAgICAgICBXQUlUX09CSkVDVF8wID09IDo6V2FpdEZvclNpbmdsZU9iamVjdChjaGlsZF9oYW5k
bGVfLkdldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SU5GSU5JVEUpKTsKLSAgRFdPUkQgc3RhdHVzOwotICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyg6
OkdldEV4aXRDb2RlUHJvY2VzcyhjaGlsZF9oYW5kbGVfLkdldCgpLCAmc3RhdHVzKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAhPSBGQUxTRSk7CisgIERXT1JEIHN0YXR1c19jb2RlOworICBH
VEVTVF9ERUFUSF9URVNUX0NIRUNLXygKKyAgICAgIDo6R2V0RXhpdENvZGVQcm9jZXNzKGNoaWxk
X2hhbmRsZV8uR2V0KCksICZzdGF0dXNfY29kZSkgIT0gRkFMU0UpOwogICBjaGlsZF9oYW5kbGVf
LlJlc2V0KCk7Ci0gIHNldF9zdGF0dXMoc3RhdGljX2Nhc3Q8aW50PihzdGF0dXMpKTsKLSAgcmV0
dXJuIHRoaXMtPnN0YXR1cygpOworICBzZXRfc3RhdHVzKHN0YXRpY19jYXN0PGludD4oc3RhdHVz
X2NvZGUpKTsKKyAgcmV0dXJuIHN0YXR1cygpOwogfQogCiAvLyBUaGUgQXNzdW1lUm9sZSBwcm9j
ZXNzIGZvciBhIFdpbmRvd3MgZGVhdGggdGVzdC4gIEl0IGNyZWF0ZXMgYSBjaGlsZApAQCAtNjI1
LDIyICs3NDUsMTkgQEAgRGVhdGhUZXN0OjpUZXN0Um9sZSBXaW5kb3dzRGVhdGhUZXN0OjpBc3N1
bWVSb2xlKCkgewogICAgICAgRkFMU0UsICAgLy8gVGhlIGluaXRpYWwgc3RhdGUgaXMgbm9uLXNp
Z25hbGxlZC4KICAgICAgIE5VTEwpKTsgIC8vIFRoZSBldmVuIGlzIHVubmFtZWQuCiAgIEdURVNU
X0RFQVRIX1RFU1RfQ0hFQ0tfKGV2ZW50X2hhbmRsZV8uR2V0KCkgIT0gTlVMTCk7Ci0gIGNvbnN0
IFN0cmluZyBmaWx0ZXJfZmxhZyA9IFN0cmluZzo6Rm9ybWF0KCItLSVzJXM9JXMuJXMiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9GTEFHX1BSRUZJ
WF8sIGtGaWx0ZXJGbGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmZvLT50ZXN0X2Nhc2VfbmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmZvLT5uYW1lKCkpOwotICBjb25zdCBTdHJpbmcgaW50ZXJuYWxf
ZmxhZyA9IFN0cmluZzo6Rm9ybWF0KAotICAgICItLSVzJXM9JXN8JWR8JWR8JXV8JUl1fCVJdSIs
Ci0gICAgICBHVEVTVF9GTEFHX1BSRUZJWF8sCi0gICAgICBrSW50ZXJuYWxSdW5EZWF0aFRlc3RG
bGFnLAotICAgICAgZmlsZV8sIGxpbmVfLAotICAgICAgZGVhdGhfdGVzdF9pbmRleCwKLSAgICAg
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oOjpHZXRDdXJyZW50UHJvY2Vzc0lkKCkpLAotICAg
ICAgLy8gc2l6ZV90IGhhcyB0aGUgc2FtZSB3aXRoIGFzIHBvaW50ZXJzIG9uIGJvdGggMzItYml0
IGFuZCA2NC1iaXQKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsdGVyX2ZsYWcgPQorICAgICAgc3Rk
OjpzdHJpbmcoIi0tIikgKyBHVEVTVF9GTEFHX1BSRUZJWF8gKyBrRmlsdGVyRmxhZyArICI9IiAr
CisgICAgICBpbmZvLT50ZXN0X2Nhc2VfbmFtZSgpICsgIi4iICsgaW5mby0+bmFtZSgpOworICBj
b25zdCBzdGQ6OnN0cmluZyBpbnRlcm5hbF9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIp
ICsgR1RFU1RfRkxBR19QUkVGSVhfICsga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZyArCisgICAg
ICAiPSIgKyBmaWxlXyArICJ8IiArIFN0cmVhbWFibGVUb1N0cmluZyhsaW5lXykgKyAifCIgKwor
ICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKGRlYXRoX3Rlc3RfaW5kZXgpICsgInwiICsKKyAgICAg
IFN0cmVhbWFibGVUb1N0cmluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KDo6R2V0Q3VycmVu
dFByb2Nlc3NJZCgpKSkgKworICAgICAgLy8gc2l6ZV90IGhhcyB0aGUgc2FtZSB3aWR0aCBhcyBw
b2ludGVycyBvbiBib3RoIDMyLWJpdCBhbmQgNjQtYml0CiAgICAgICAvLyBXaW5kb3dzIHBsYXRm
b3Jtcy4KICAgICAgIC8vIFNlZSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJh
cnkvdGN4ZjFkdzYuYXNweC4KLSAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90Pih3cml0ZV9o
YW5kbGUpLAotICAgICAgcmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KGV2ZW50X2hhbmRsZV8uR2V0
KCkpKTsKKyAgICAgICJ8IiArIFN0cmVhbWFibGVUb1N0cmluZyhyZWludGVycHJldF9jYXN0PHNp
emVfdD4od3JpdGVfaGFuZGxlKSkgKworICAgICAgInwiICsgU3RyZWFtYWJsZVRvU3RyaW5nKHJl
aW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihldmVudF9oYW5kbGVfLkdldCgpKSk7CiAKICAgY2hhciBl
eGVjdXRhYmxlX3BhdGhbX01BWF9QQVRIICsgMV07ICAvLyBOT0xJTlQKICAgR1RFU1RfREVBVEhf
VEVTVF9DSEVDS18oCkBAIC02NDgsMTAgKzc2NSw5IEBAIERlYXRoVGVzdDo6VGVzdFJvbGUgV2lu
ZG93c0RlYXRoVGVzdDo6QXNzdW1lUm9sZSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZV9wYXRoLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfTUFYX1BBVEgpKTsKIAotICBTdHJpbmcgY29tbWFuZF9s
aW5lID0gU3RyaW5nOjpGb3JtYXQoIiVzICVzIFwiJXNcIiIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6OkdldENvbW1hbmRMaW5lQSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX2ZsYWcuY19zdHIoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsX2ZsYWcuY19zdHIoKSk7CisgIHN0
ZDo6c3RyaW5nIGNvbW1hbmRfbGluZSA9CisgICAgICBzdGQ6OnN0cmluZyg6OkdldENvbW1hbmRM
aW5lQSgpKSArICIgIiArIGZpbHRlcl9mbGFnICsgIiBcIiIgKworICAgICAgaW50ZXJuYWxfZmxh
ZyArICJcIiI7CiAKICAgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoIiIp
OwogCkBAIC02ODQsNyArODAwLDIwMCBAQCBEZWF0aFRlc3Q6OlRlc3RSb2xlIFdpbmRvd3NEZWF0
aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAgIHNldF9zcGF3bmVkKHRydWUpOwogICByZXR1cm4gT1ZF
UlNFRV9URVNUOwogfQotI2Vsc2UgIC8vIFdlIGFyZSBub3Qgb24gV2luZG93cy4KKworIyBlbGlm
IEdURVNUX09TX0ZVQ0hTSUEKKworY2xhc3MgRnVjaHNpYURlYXRoVGVzdCA6IHB1YmxpYyBEZWF0
aFRlc3RJbXBsIHsKKyBwdWJsaWM6CisgIEZ1Y2hzaWFEZWF0aFRlc3QoY29uc3QgY2hhciogYV9z
dGF0ZW1lbnQsCisgICAgICAgICAgICAgICAgICAgY29uc3QgUkUqIGFfcmVnZXgsCisgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwKKyAgICAgICAgICAgICAgICAgICBpbnQgbGlu
ZSkKKyAgICAgIDogRGVhdGhUZXN0SW1wbChhX3N0YXRlbWVudCwgYV9yZWdleCksIGZpbGVfKGZp
bGUpLCBsaW5lXyhsaW5lKSB7fQorICB2aXJ0dWFsIH5GdWNoc2lhRGVhdGhUZXN0KCkgeworICAg
IHp4X3N0YXR1c190IHN0YXR1cyA9IHp4X2hhbmRsZV9jbG9zZShjaGlsZF9wcm9jZXNzXyk7Cisg
ICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhdHVzID09IFpYX09LKTsKKyAgICBzdGF0dXMg
PSB6eF9oYW5kbGVfY2xvc2UocG9ydF8pOworICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0
YXR1cyA9PSBaWF9PSyk7CisgIH0KKworICAvLyBBbGwgb2YgdGhlc2UgdmlydHVhbCBmdW5jdGlv
bnMgYXJlIGluaGVyaXRlZCBmcm9tIERlYXRoVGVzdC4KKyAgdmlydHVhbCBpbnQgV2FpdCgpOwor
ICB2aXJ0dWFsIFRlc3RSb2xlIEFzc3VtZVJvbGUoKTsKKworIHByaXZhdGU6CisgIC8vIFRoZSBu
YW1lIG9mIHRoZSBmaWxlIGluIHdoaWNoIHRoZSBkZWF0aCB0ZXN0IGlzIGxvY2F0ZWQuCisgIGNv
bnN0IGNoYXIqIGNvbnN0IGZpbGVfOworICAvLyBUaGUgbGluZSBudW1iZXIgb24gd2hpY2ggdGhl
IGRlYXRoIHRlc3QgaXMgbG9jYXRlZC4KKyAgY29uc3QgaW50IGxpbmVfOworCisgIHp4X2hhbmRs
ZV90IGNoaWxkX3Byb2Nlc3NfID0gWlhfSEFORExFX0lOVkFMSUQ7CisgIHp4X2hhbmRsZV90IHBv
cnRfID0gWlhfSEFORExFX0lOVkFMSUQ7Cit9OworCisvLyBVdGlsaXR5IGNsYXNzIGZvciBhY2N1
bXVsYXRpbmcgY29tbWFuZC1saW5lIGFyZ3VtZW50cy4KK2NsYXNzIEFyZ3VtZW50cyB7CisgcHVi
bGljOgorICBBcmd1bWVudHMoKSB7CisgICAgYXJnc18ucHVzaF9iYWNrKE5VTEwpOworICB9CisK
KyAgfkFyZ3VtZW50cygpIHsKKyAgICBmb3IgKHN0ZDo6dmVjdG9yPGNoYXIqPjo6aXRlcmF0b3Ig
aSA9IGFyZ3NfLmJlZ2luKCk7IGkgIT0gYXJnc18uZW5kKCk7CisgICAgICAgICArK2kpIHsKKyAg
ICAgIGZyZWUoKmkpOworICAgIH0KKyAgfQorICB2b2lkIEFkZEFyZ3VtZW50KGNvbnN0IGNoYXIq
IGFyZ3VtZW50KSB7CisgICAgYXJnc18uaW5zZXJ0KGFyZ3NfLmVuZCgpIC0gMSwgcG9zaXg6OlN0
ckR1cChhcmd1bWVudCkpOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFN0cj4KKyAgdm9p
ZCBBZGRBcmd1bWVudHMoY29uc3QgOjpzdGQ6OnZlY3RvcjxTdHI+JiBhcmd1bWVudHMpIHsKKyAg
ICBmb3IgKHR5cGVuYW1lIDo6c3RkOjp2ZWN0b3I8U3RyPjo6Y29uc3RfaXRlcmF0b3IgaSA9IGFy
Z3VtZW50cy5iZWdpbigpOworICAgICAgICAgaSAhPSBhcmd1bWVudHMuZW5kKCk7CisgICAgICAg
ICArK2kpIHsKKyAgICAgIGFyZ3NfLmluc2VydChhcmdzXy5lbmQoKSAtIDEsIHBvc2l4OjpTdHJE
dXAoaS0+Y19zdHIoKSkpOworICAgIH0KKyAgfQorICBjaGFyKiBjb25zdCogQXJndigpIHsKKyAg
ICByZXR1cm4gJmFyZ3NfWzBdOworICB9CisKKyAgaW50IHNpemUoKSB7CisgICAgcmV0dXJuIGFy
Z3NfLnNpemUoKSAtIDE7CisgIH0KKworIHByaXZhdGU6CisgIHN0ZDo6dmVjdG9yPGNoYXIqPiBh
cmdzXzsKK307CisKKy8vIFdhaXRzIGZvciB0aGUgY2hpbGQgaW4gYSBkZWF0aCB0ZXN0IHRvIGV4
aXQsIHJldHVybmluZyBpdHMgZXhpdAorLy8gc3RhdHVzLCBvciAwIGlmIG5vIGNoaWxkIHByb2Nl
c3MgZXhpc3RzLiAgQXMgYSBzaWRlIGVmZmVjdCwgc2V0cyB0aGUKKy8vIG91dGNvbWUgZGF0YSBt
ZW1iZXIuCitpbnQgRnVjaHNpYURlYXRoVGVzdDo6V2FpdCgpIHsKKyAgaWYgKCFzcGF3bmVkKCkp
CisgICAgcmV0dXJuIDA7CisKKyAgLy8gUmVnaXN0ZXIgdG8gd2FpdCBmb3IgdGhlIGNoaWxkIHBy
b2Nlc3MgdG8gdGVybWluYXRlLgorICB6eF9zdGF0dXNfdCBzdGF0dXNfeng7CisgIHN0YXR1c196
eCA9IHp4X29iamVjdF93YWl0X2FzeW5jKGNoaWxkX3Byb2Nlc3NfLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwb3J0XywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCAvKiBrZXkgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpY
X1BST0NFU1NfVEVSTUlOQVRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WlhfV0FJVF9BU1lOQ19PTkNFKTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhdHVzX3p4
ID09IFpYX09LKTsKKworICAvLyBXYWl0IGZvciBpdCB0byB0ZXJtaW5hdGUsIG9yIGFuIGV4Y2Vw
dGlvbiB0byBiZSByZWNlaXZlZC4KKyAgenhfcG9ydF9wYWNrZXRfdCBwYWNrZXQ7CisgIHN0YXR1
c196eCA9IHp4X3BvcnRfd2FpdChwb3J0XywgWlhfVElNRV9JTkZJTklURSwgJnBhY2tldCk7Cisg
IEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1c196eCA9PSBaWF9PSyk7CisKKyAgaWYgKFpY
X1BLVF9JU19FWENFUFRJT04ocGFja2V0LnR5cGUpKSB7CisgICAgLy8gUHJvY2VzcyBlbmNvdW50
ZXJlZCBhbiBleGNlcHRpb24uIEtpbGwgaXQgZGlyZWN0bHkgcmF0aGVyIHRoYW4gbGV0dGluZwor
ICAgIC8vIG90aGVyIGhhbmRsZXJzIHByb2Nlc3MgdGhlIGV2ZW50LgorICAgIHN0YXR1c196eCA9
IHp4X3Rhc2tfa2lsbChjaGlsZF9wcm9jZXNzXyk7CisgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVD
S18oc3RhdHVzX3p4ID09IFpYX09LKTsKKworICAgIC8vIE5vdyB3YWl0IGZvciB8Y2hpbGRfcHJv
Y2Vzc198IHRvIHRlcm1pbmF0ZS4KKyAgICB6eF9zaWduYWxzX3Qgc2lnbmFscyA9IDA7CisgICAg
c3RhdHVzX3p4ID0genhfb2JqZWN0X3dhaXRfb25lKAorICAgICAgICBjaGlsZF9wcm9jZXNzXywg
WlhfUFJPQ0VTU19URVJNSU5BVEVELCBaWF9USU1FX0lORklOSVRFLCAmc2lnbmFscyk7CisgICAg
R1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhdHVzX3p4ID09IFpYX09LKTsKKyAgICBHVEVTVF9E
RUFUSF9URVNUX0NIRUNLXyhzaWduYWxzICYgWlhfUFJPQ0VTU19URVJNSU5BVEVEKTsKKyAgfSBl
bHNlIHsKKyAgICAvLyBQcm9jZXNzIHRlcm1pbmF0ZWQuCisgICAgR1RFU1RfREVBVEhfVEVTVF9D
SEVDS18oWlhfUEtUX0lTX1NJR05BTF9PTkUocGFja2V0LnR5cGUpKTsKKyAgICBHVEVTVF9ERUFU
SF9URVNUX0NIRUNLXyhwYWNrZXQuc2lnbmFsLm9ic2VydmVkICYgWlhfUFJPQ0VTU19URVJNSU5B
VEVEKTsKKyAgfQorCisgIFJlYWRBbmRJbnRlcnByZXRTdGF0dXNCeXRlKCk7CisKKyAgenhfaW5m
b19wcm9jZXNzX3QgYnVmZmVyOworICBzdGF0dXNfenggPSB6eF9vYmplY3RfZ2V0X2luZm8oCisg
ICAgICBjaGlsZF9wcm9jZXNzXywKKyAgICAgIFpYX0lORk9fUFJPQ0VTUywKKyAgICAgICZidWZm
ZXIsCisgICAgICBzaXplb2YoYnVmZmVyKSwKKyAgICAgIG51bGxwdHIsCisgICAgICBudWxscHRy
KTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhdHVzX3p4ID09IFpYX09LKTsKKworICBH
VEVTVF9ERUFUSF9URVNUX0NIRUNLXyhidWZmZXIuZXhpdGVkKTsKKyAgc2V0X3N0YXR1cyhidWZm
ZXIucmV0dXJuX2NvZGUpOworICByZXR1cm4gc3RhdHVzKCk7Cit9CisKKy8vIFRoZSBBc3N1bWVS
b2xlIHByb2Nlc3MgZm9yIGEgRnVjaHNpYSBkZWF0aCB0ZXN0LiAgSXQgY3JlYXRlcyBhIGNoaWxk
CisvLyBwcm9jZXNzIHdpdGggdGhlIHNhbWUgZXhlY3V0YWJsZSBhcyB0aGUgY3VycmVudCBwcm9j
ZXNzIHRvIHJ1biB0aGUKKy8vIGRlYXRoIHRlc3QuICBUaGUgY2hpbGQgcHJvY2VzcyBpcyBnaXZl
biB0aGUgLS1ndGVzdF9maWx0ZXIgYW5kCisvLyAtLWd0ZXN0X2ludGVybmFsX3J1bl9kZWF0aF90
ZXN0IGZsYWdzIHN1Y2ggdGhhdCBpdCBrbm93cyB0byBydW4gdGhlCisvLyBjdXJyZW50IGRlYXRo
IHRlc3Qgb25seS4KK0RlYXRoVGVzdDo6VGVzdFJvbGUgRnVjaHNpYURlYXRoVGVzdDo6QXNzdW1l
Um9sZSgpIHsKKyAgY29uc3QgVW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0gR2V0VW5pdFRlc3RJ
bXBsKCk7CisgIGNvbnN0IEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyogY29uc3QgZmxhZyA9Cisg
ICAgICBpbXBsLT5pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdF9mbGFnKCk7CisgIGNvbnN0IFRlc3RJ
bmZvKiBjb25zdCBpbmZvID0gaW1wbC0+Y3VycmVudF90ZXN0X2luZm8oKTsKKyAgY29uc3QgaW50
IGRlYXRoX3Rlc3RfaW5kZXggPSBpbmZvLT5yZXN1bHQoKS0+ZGVhdGhfdGVzdF9jb3VudCgpOwor
CisgIGlmIChmbGFnICE9IE5VTEwpIHsKKyAgICAvLyBQYXJzZUludGVybmFsUnVuRGVhdGhUZXN0
RmxhZygpIGhhcyBwZXJmb3JtZWQgYWxsIHRoZSBuZWNlc3NhcnkKKyAgICAvLyBwcm9jZXNzaW5n
LgorICAgIHNldF93cml0ZV9mZChrRnVjaHNpYVJlYWRQaXBlRmQpOworICAgIHJldHVybiBFWEVD
VVRFX1RFU1Q7CisgIH0KKworICBDYXB0dXJlU3RkZXJyKCk7CisgIC8vIEZsdXNoIHRoZSBsb2cg
YnVmZmVycyBzaW5jZSB0aGUgbG9nIHN0cmVhbXMgYXJlIHNoYXJlZCB3aXRoIHRoZSBjaGlsZC4K
KyAgRmx1c2hJbmZvTG9nKCk7CisKKyAgLy8gQnVpbGQgdGhlIGNoaWxkIHByb2Nlc3MgY29tbWFu
ZCBsaW5lLgorICBjb25zdCBzdGQ6OnN0cmluZyBmaWx0ZXJfZmxhZyA9CisgICAgICBzdGQ6OnN0
cmluZygiLS0iKSArIEdURVNUX0ZMQUdfUFJFRklYXyArIGtGaWx0ZXJGbGFnICsgIj0iCisgICAg
ICArIGluZm8tPnRlc3RfY2FzZV9uYW1lKCkgKyAiLiIgKyBpbmZvLT5uYW1lKCk7CisgIGNvbnN0
IHN0ZDo6c3RyaW5nIGludGVybmFsX2ZsYWcgPQorICAgICAgc3RkOjpzdHJpbmcoIi0tIikgKyBH
VEVTVF9GTEFHX1BSRUZJWF8gKyBrSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnICsgIj0iCisgICAg
ICArIGZpbGVfICsgInwiCisgICAgICArIFN0cmVhbWFibGVUb1N0cmluZyhsaW5lXykgKyAifCIK
KyAgICAgICsgU3RyZWFtYWJsZVRvU3RyaW5nKGRlYXRoX3Rlc3RfaW5kZXgpOworICBBcmd1bWVu
dHMgYXJnczsKKyAgYXJncy5BZGRBcmd1bWVudHMoR2V0SW5qZWN0YWJsZUFyZ3ZzKCkpOworICBh
cmdzLkFkZEFyZ3VtZW50KGZpbHRlcl9mbGFnLmNfc3RyKCkpOworICBhcmdzLkFkZEFyZ3VtZW50
KGludGVybmFsX2ZsYWcuY19zdHIoKSk7CisKKyAgLy8gQnVpbGQgdGhlIHBpcGUgZm9yIGNvbW11
bmljYXRpb24gd2l0aCB0aGUgY2hpbGQuCisgIHp4X3N0YXR1c190IHN0YXR1czsKKyAgenhfaGFu
ZGxlX3QgY2hpbGRfcGlwZV9oYW5kbGU7CisgIHVpbnQzMl90IHR5cGU7CisgIHN0YXR1cyA9IGZk
aW9fcGlwZV9oYWxmKCZjaGlsZF9waXBlX2hhbmRsZSwgJnR5cGUpOworICBHVEVTVF9ERUFUSF9U
RVNUX0NIRUNLXyhzdGF0dXMgPj0gMCk7CisgIHNldF9yZWFkX2ZkKHN0YXR1cyk7CisKKyAgLy8g
U2V0IHRoZSBwaXBlIGhhbmRsZSBmb3IgdGhlIGNoaWxkLgorICBmZGlvX3NwYXduX2FjdGlvbl90
IGFkZF9oYW5kbGVfYWN0aW9uID0ge307CisgIGFkZF9oYW5kbGVfYWN0aW9uLmFjdGlvbiA9IEZE
SU9fU1BBV05fQUNUSU9OX0FERF9IQU5ETEU7CisgIGFkZF9oYW5kbGVfYWN0aW9uLmguaWQgPSBQ
QV9ITkQodHlwZSwga0Z1Y2hzaWFSZWFkUGlwZUZkKTsKKyAgYWRkX2hhbmRsZV9hY3Rpb24uaC5o
YW5kbGUgPSBjaGlsZF9waXBlX2hhbmRsZTsKKworICAvLyBTcGF3biB0aGUgY2hpbGQgcHJvY2Vz
cy4KKyAgc3RhdHVzID0gZmRpb19zcGF3bl9ldGMoWlhfSEFORExFX0lOVkFMSUQsIEZESU9fU1BB
V05fQ0xPTkVfQUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLkFyZ3YoKVswXSwg
YXJncy5Bcmd2KCksIG51bGxwdHIsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGRf
aGFuZGxlX2FjdGlvbiwgJmNoaWxkX3Byb2Nlc3NfLCBudWxscHRyKTsKKyAgR1RFU1RfREVBVEhf
VEVTVF9DSEVDS18oc3RhdHVzID09IFpYX09LKTsKKworICAvLyBDcmVhdGUgYW4gZXhjZXB0aW9u
IHBvcnQgYW5kIGF0dGFjaCBpdCB0byB0aGUgfGNoaWxkX3Byb2Nlc3NffCwgdG8gYWxsb3cKKyAg
Ly8gdXMgdG8gc3VwcHJlc3MgdGhlIHN5c3RlbSBkZWZhdWx0IGV4Y2VwdGlvbiBoYW5kbGVyIGZy
b20gZmlyaW5nLgorICBzdGF0dXMgPSB6eF9wb3J0X2NyZWF0ZSgwLCAmcG9ydF8pOworICBHVEVT
VF9ERUFUSF9URVNUX0NIRUNLXyhzdGF0dXMgPT0gWlhfT0spOworICBzdGF0dXMgPSB6eF90YXNr
X2JpbmRfZXhjZXB0aW9uX3BvcnQoCisgICAgICBjaGlsZF9wcm9jZXNzXywgcG9ydF8sIDAgLyog
a2V5ICovLCAwIC8qb3B0aW9ucyAqLyk7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1
cyA9PSBaWF9PSyk7CisKKyAgc2V0X3NwYXduZWQodHJ1ZSk7CisgIHJldHVybiBPVkVSU0VFX1RF
U1Q7Cit9CisKKyNlbHNlICAvLyBXZSBhcmUgbmVpdGhlciBvbiBXaW5kb3dzLCBub3Igb24gRnVj
aHNpYS4KIAogLy8gRm9ya2luZ0RlYXRoVGVzdCBwcm92aWRlcyBpbXBsZW1lbnRhdGlvbnMgZm9y
IG1vc3Qgb2YgdGhlIGFic3RyYWN0CiAvLyBtZXRob2RzIG9mIHRoZSBEZWF0aFRlc3QgaW50ZXJm
YWNlLiAgT25seSB0aGUgQXNzdW1lUm9sZSBtZXRob2QgaXMKQEAgLTc2OCw2ICsxMDc3LDcgQEAg
RGVhdGhUZXN0OjpUZXN0Um9sZSBOb0V4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAgICAg
Ly8gRXZlbnQgZm9yd2FyZGluZyB0byB0aGUgbGlzdGVuZXJzIG9mIGV2ZW50IGxpc3RlbmVyIEFQ
SSBtdXNoIGJlIHNodXQKICAgICAvLyBkb3duIGluIGRlYXRoIHRlc3Qgc3VicHJvY2Vzc2VzLgog
ICAgIEdldFVuaXRUZXN0SW1wbCgpLT5saXN0ZW5lcnMoKS0+U3VwcHJlc3NFdmVudEZvcndhcmRp
bmcoKTsKKyAgICBnX2luX2Zhc3RfZGVhdGhfdGVzdF9jaGlsZCA9IHRydWU7CiAgICAgcmV0dXJu
IEVYRUNVVEVfVEVTVDsKICAgfSBlbHNlIHsKICAgICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZ
U0NBTExfKGNsb3NlKHBpcGVfZmRbMV0pKTsKQEAgLTc4Nyw2ICsxMDk3LDE1IEBAIGNsYXNzIEV4
ZWNEZWF0aFRlc3QgOiBwdWJsaWMgRm9ya2luZ0RlYXRoVGVzdCB7CiAgICAgICBGb3JraW5nRGVh
dGhUZXN0KGFfc3RhdGVtZW50LCBhX3JlZ2V4KSwgZmlsZV8oZmlsZSksIGxpbmVfKGxpbmUpIHsg
fQogICB2aXJ0dWFsIFRlc3RSb2xlIEFzc3VtZVJvbGUoKTsKICBwcml2YXRlOgorICBzdGF0aWMg
OjpzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0QXJndnNGb3JEZWF0aFRlc3RDaGlsZFByb2Nl
c3MoKSB7CisgICAgOjpzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gYXJncyA9IEdldEluamVjdGFi
bGVBcmd2cygpOworIyAgaWYgZGVmaW5lZChHVEVTVF9FWFRSQV9ERUFUSF9URVNUX0NPTU1BTkRf
TElORV9BUkdTXykKKyAgICA6OnN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBleHRyYV9hcmdzID0K
KyAgICAgICAgR1RFU1RfRVhUUkFfREVBVEhfVEVTVF9DT01NQU5EX0xJTkVfQVJHU18oKTsKKyAg
ICBhcmdzLmluc2VydChhcmdzLmVuZCgpLCBleHRyYV9hcmdzLmJlZ2luKCksIGV4dHJhX2FyZ3Mu
ZW5kKCkpOworIyAgZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfRVhUUkFfREVBVEhfVEVTVF9DT01N
QU5EX0xJTkVfQVJHU18pCisgICAgcmV0dXJuIGFyZ3M7CisgIH0KICAgLy8gVGhlIG5hbWUgb2Yg
dGhlIGZpbGUgaW4gd2hpY2ggdGhlIGRlYXRoIHRlc3QgaXMgbG9jYXRlZC4KICAgY29uc3QgY2hh
ciogY29uc3QgZmlsZV87CiAgIC8vIFRoZSBsaW5lIG51bWJlciBvbiB3aGljaCB0aGUgZGVhdGgg
dGVzdCBpcyBsb2NhdGVkLgpAQCAtODIxLDYgKzExNDAsNyBAQCBjbGFzcyBBcmd1bWVudHMgewog
ICBjaGFyKiBjb25zdCogQXJndigpIHsKICAgICByZXR1cm4gJmFyZ3NfWzBdOwogICB9CisKICBw
cml2YXRlOgogICBzdGQ6OnZlY3RvcjxjaGFyKj4gYXJnc187CiB9OwpAQCAtODMyLDYgKzExNTIs
MjEgQEAgc3RydWN0IEV4ZWNEZWF0aFRlc3RBcmdzIHsKICAgaW50IGNsb3NlX2ZkOyAgICAgICAv
LyBGaWxlIGRlc2NyaXB0b3IgdG8gY2xvc2U7IHRoZSByZWFkIGVuZCBvZiBhIHBpcGUKIH07CiAK
KyMgIGlmIEdURVNUX09TX01BQworaW5saW5lIGNoYXIqKiBHZXRFbnZpcm9uKCkgeworICAvLyBX
aGVuIEdvb2dsZSBUZXN0IGlzIGJ1aWx0IGFzIGEgZnJhbWV3b3JrIG9uIE1hY09TIFgsIHRoZSBl
bnZpcm9uIHZhcmlhYmxlCisgIC8vIGlzIHVuYXZhaWxhYmxlLiBBcHBsZSdzIGRvY3VtZW50YXRp
b24gKG1hbiBlbnZpcm9uKSByZWNvbW1lbmRzIHVzaW5nCisgIC8vIF9OU0dldEVudmlyb24oKSBp
bnN0ZWFkLgorICByZXR1cm4gKl9OU0dldEVudmlyb24oKTsKK30KKyMgIGVsc2UKKy8vIFNvbWUg
UE9TSVggcGxhdGZvcm1zIGV4cGVjdCB5b3UgdG8gZGVjbGFyZSBlbnZpcm9uLiBleHRlcm4gIkMi
IG1ha2VzCisvLyBpdCByZXNpZGUgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCitleHRlcm4gIkMi
IGNoYXIqKiBlbnZpcm9uOworaW5saW5lIGNoYXIqKiBHZXRFbnZpcm9uKCkgeyByZXR1cm4gZW52
aXJvbjsgfQorIyAgZW5kaWYgIC8vIEdURVNUX09TX01BQworCisjICBpZiAhR1RFU1RfT1NfUU5Y
CiAvLyBUaGUgbWFpbiBmdW5jdGlvbiBmb3IgYSB0aHJlYWRzYWZlLXN0eWxlIGRlYXRoIHRlc3Qg
Y2hpbGQgcHJvY2Vzcy4KIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIGEgY2xvbmUoKS1l
ZCBwcm9jZXNzIGFuZCB0aHVzIG11c3QgYXZvaWQKIC8vIGFueSBwb3RlbnRpYWxseSB1bnNhZmUg
b3BlcmF0aW9ucyBsaWtlIG1hbGxvYyBvciBsaWJjIGZ1bmN0aW9ucy4KQEAgLTg0Niw5ICsxMTgx
LDggQEAgc3RhdGljIGludCBFeGVjRGVhdGhUZXN0Q2hpbGRNYWluKHZvaWQqIGNoaWxkX2FyZykg
ewogICAgICAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPm9yaWdpbmFsX3dvcmtpbmdfZGlyKCk7
CiAgIC8vIFdlIGNhbiBzYWZlbHkgY2FsbCBjaGRpcigpIGFzIGl0J3MgYSBkaXJlY3Qgc3lzdGVt
IGNhbGwuCiAgIGlmIChjaGRpcihvcmlnaW5hbF9kaXIpICE9IDApIHsKLSAgICBEZWF0aFRlc3RB
Ym9ydChTdHJpbmc6OkZvcm1hdCgiY2hkaXIoXCIlc1wiKSBmYWlsZWQ6ICVzIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbF9kaXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKS5jX3N0cigpKSk7Cisg
ICAgRGVhdGhUZXN0QWJvcnQoc3RkOjpzdHJpbmcoImNoZGlyKFwiIikgKyBvcmlnaW5hbF9kaXIg
KyAiXCIpIGZhaWxlZDogIiArCisgICAgICAgICAgICAgICAgICAgR2V0TGFzdEVycm5vRGVzY3Jp
cHRpb24oKSk7CiAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgfQogCkBAIC04NTcsNDAgKzEx
OTEsOTcgQEAgc3RhdGljIGludCBFeGVjRGVhdGhUZXN0Q2hpbGRNYWluKHZvaWQqIGNoaWxkX2Fy
ZykgewogICAvLyB1bnNhZmUuICBTaW5jZSBleGVjdmUoKSBkb2Vzbid0IHNlYXJjaCB0aGUgUEFU
SCwgdGhlIHVzZXIgbXVzdAogICAvLyBpbnZva2UgdGhlIHRlc3QgcHJvZ3JhbSB2aWEgYSB2YWxp
ZCBwYXRoIHRoYXQgY29udGFpbnMgYXQgbGVhc3QKICAgLy8gb25lIHBhdGggc2VwYXJhdG9yLgot
ICAvLyBXZSBoYXZlIHJlcGxhY2VkIGV4ZWN2ZSgpIHdpdGggZXhlY3YoKSBmb3IgV2ViS2l0IHRv
IGF2b2lkIHVzaW5nCi0gIC8vIGVudmlyb24uIEl0IHNob3VsZCBiZSBzYWZlIGJlY2F1c2UgZXhl
Y3YoKSBpcyBqdXN0IGEgc2ltcGxlIHdyYXBwZXIKLSAgLy8gb2YgZXhlY3ZlKCkuCi0gIGV4ZWN2
KGFyZ3MtPmFyZ3ZbMF0sIGFyZ3MtPmFyZ3YpOwotICBEZWF0aFRlc3RBYm9ydChTdHJpbmc6OkZv
cm1hdCgiZXhlY3YoJXMsIC4uLikgaW4gJXMgZmFpbGVkOiAlcyIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFyZ3MtPmFyZ3ZbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9yaWdpbmFsX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0
TGFzdEVycm5vRGVzY3JpcHRpb24oKS5jX3N0cigpKSk7CisgIGV4ZWN2ZShhcmdzLT5hcmd2WzBd
LCBhcmdzLT5hcmd2LCBHZXRFbnZpcm9uKCkpOworICBEZWF0aFRlc3RBYm9ydChzdGQ6OnN0cmlu
ZygiZXhlY3ZlKCIpICsgYXJncy0+YXJndlswXSArICIsIC4uLikgaW4gIiArCisgICAgICAgICAg
ICAgICAgIG9yaWdpbmFsX2RpciArICIgZmFpbGVkOiAiICsKKyAgICAgICAgICAgICAgICAgR2V0
TGFzdEVycm5vRGVzY3JpcHRpb24oKSk7CiAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiB9CisjICBl
bmRpZiAgLy8gIUdURVNUX09TX1FOWAogCisjICBpZiBHVEVTVF9IQVNfQ0xPTkUKIC8vIFR3byB1
dGlsaXR5IHJvdXRpbmVzIHRoYXQgdG9nZXRoZXIgZGV0ZXJtaW5lIHRoZSBkaXJlY3Rpb24gdGhl
IHN0YWNrCiAvLyBncm93cy4KIC8vIFRoaXMgY291bGQgYmUgYWNjb21wbGlzaGVkIG1vcmUgZWxl
Z2FudGx5IGJ5IGEgc2luZ2xlIHJlY3Vyc2l2ZQogLy8gZnVuY3Rpb24sIGJ1dCB3ZSB3YW50IHRv
IGd1YXJkIGFnYWluc3QgdGhlIHVubGlrZWx5IHBvc3NpYmlsaXR5IG9mCiAvLyBhIHNtYXJ0IGNv
bXBpbGVyIG9wdGltaXppbmcgdGhlIHJlY3Vyc2lvbiBhd2F5LgotYm9vbCBTdGFja0xvd2VyVGhh
bkFkZHJlc3MoY29uc3Qgdm9pZCogcHRyKSB7CisvLworLy8gR1RFU1RfTk9fSU5MSU5FXyBpcyBy
ZXF1aXJlZCB0byBwcmV2ZW50IEdDQyA0LjYgZnJvbSBpbmxpbmluZworLy8gU3RhY2tMb3dlclRo
YW5BZGRyZXNzIGludG8gU3RhY2tHcm93c0Rvd24sIHdoaWNoIHRoZW4gZG9lc24ndCBnaXZlCisv
LyBjb3JyZWN0IGFuc3dlci4KK3N0YXRpYyB2b2lkIFN0YWNrTG93ZXJUaGFuQWRkcmVzcyhjb25z
dCB2b2lkKiBwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCogcmVz
dWx0KSBHVEVTVF9OT19JTkxJTkVfOworc3RhdGljIHZvaWQgU3RhY2tMb3dlclRoYW5BZGRyZXNz
KGNvbnN0IHZvaWQqIHB0ciwgYm9vbCogcmVzdWx0KSB7CiAgIGludCBkdW1teTsKLSAgcmV0dXJu
ICZkdW1teSA8IHB0cjsKKyAgKnJlc3VsdCA9ICgmZHVtbXkgPCBwdHIpOwogfQogCi1ib29sIFN0
YWNrR3Jvd3NEb3duKCkgeworLy8gTWFrZSBzdXJlIEFkZHJlc3NTYW5pdGl6ZXIgZG9lcyBub3Qg
dGFtcGVyIHdpdGggdGhlIHN0YWNrIGhlcmUuCitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVf
QUREUkVTU18KK3N0YXRpYyBib29sIFN0YWNrR3Jvd3NEb3duKCkgewogICBpbnQgZHVtbXk7Ci0g
IHJldHVybiBTdGFja0xvd2VyVGhhbkFkZHJlc3MoJmR1bW15KTsKKyAgYm9vbCByZXN1bHQ7Cisg
IFN0YWNrTG93ZXJUaGFuQWRkcmVzcygmZHVtbXksICZyZXN1bHQpOworICByZXR1cm4gcmVzdWx0
OwogfQotCi0vLyBBIHRocmVhZHNhZmUgaW1wbGVtZW50YXRpb24gb2YgZm9yaygyKSBmb3IgdGhy
ZWFkc2FmZS1zdHlsZSBkZWF0aCB0ZXN0cwotLy8gdGhhdCB1c2VzIGNsb25lKDIpLiAgSXQgZGll
cyB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaWYgYW55dGhpbmcgZ29lcwotLy8gd3JvbmcuCi1zdGF0
aWMgcGlkX3QgRXhlY0RlYXRoVGVzdEZvcmsoY2hhciogY29uc3QqIGFyZ3YsIGludCBjbG9zZV9m
ZCkgeworIyAgZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORQorCisvLyBTcGF3bnMgYSBjaGlsZCBw
cm9jZXNzIHdpdGggdGhlIHNhbWUgZXhlY3V0YWJsZSBhcyB0aGUgY3VycmVudCBwcm9jZXNzIGlu
CisvLyBhIHRocmVhZC1zYWZlIG1hbm5lciBhbmQgaW5zdHJ1Y3RzIGl0IHRvIHJ1biB0aGUgZGVh
dGggdGVzdC4gIFRoZQorLy8gaW1wbGVtZW50YXRpb24gdXNlcyBmb3JrKDIpICsgZXhlYy4gIE9u
IHN5c3RlbXMgd2hlcmUgY2xvbmUoMikgaXMKKy8vIGF2YWlsYWJsZSwgaXQgaXMgdXNlZCBpbnN0
ZWFkLCBiZWluZyBzbGlnaHRseSBtb3JlIHRocmVhZC1zYWZlLiAgT24gUU5YLAorLy8gZm9yayBz
dXBwb3J0cyBvbmx5IHNpbmdsZS10aHJlYWRlZCBlbnZpcm9ubWVudHMsIHNvIHRoaXMgZnVuY3Rp
b24gdXNlcworLy8gc3Bhd24oMikgdGhlcmUgaW5zdGVhZC4gIFRoZSBmdW5jdGlvbiBkaWVzIHdp
dGggYW4gZXJyb3IgbWVzc2FnZSBpZgorLy8gYW55dGhpbmcgZ29lcyB3cm9uZy4KK3N0YXRpYyBw
aWRfdCBFeGVjRGVhdGhUZXN0U3Bhd25DaGlsZChjaGFyKiBjb25zdCogYXJndiwgaW50IGNsb3Nl
X2ZkKSB7CiAgIEV4ZWNEZWF0aFRlc3RBcmdzIGFyZ3MgPSB7IGFyZ3YsIGNsb3NlX2ZkIH07CiAg
IHBpZF90IGNoaWxkX3BpZCA9IC0xOwogCi0jaWYgR1RFU1RfSEFTX0NMT05FCisjICBpZiBHVEVT
VF9PU19RTlgKKyAgLy8gT2J0YWlucyB0aGUgY3VycmVudCBkaXJlY3RvcnkgYW5kIHNldHMgaXQg
dG8gYmUgY2xvc2VkIGluIHRoZSBjaGlsZAorICAvLyBwcm9jZXNzLgorICBjb25zdCBpbnQgY3dk
X2ZkID0gb3BlbigiLiIsIE9fUkRPTkxZKTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oY3dk
X2ZkICE9IC0xKTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhmY250bChjd2Rf
ZmQsIEZfU0VURkQsIEZEX0NMT0VYRUMpKTsKKyAgLy8gV2UgbmVlZCB0byBleGVjdXRlIHRoZSB0
ZXN0IHByb2dyYW0gaW4gdGhlIHNhbWUgZW52aXJvbm1lbnQgd2hlcmUKKyAgLy8gaXQgd2FzIG9y
aWdpbmFsbHkgaW52b2tlZC4gIFRoZXJlZm9yZSB3ZSBjaGFuZ2UgdG8gdGhlIG9yaWdpbmFsCisg
IC8vIHdvcmtpbmcgZGlyZWN0b3J5IGZpcnN0LgorICBjb25zdCBjaGFyKiBjb25zdCBvcmlnaW5h
bF9kaXIgPQorICAgICAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPm9yaWdpbmFsX3dvcmtpbmdf
ZGlyKCk7CisgIC8vIFdlIGNhbiBzYWZlbHkgY2FsbCBjaGRpcigpIGFzIGl0J3MgYSBkaXJlY3Qg
c3lzdGVtIGNhbGwuCisgIGlmIChjaGRpcihvcmlnaW5hbF9kaXIpICE9IDApIHsKKyAgICBEZWF0
aFRlc3RBYm9ydChzdGQ6OnN0cmluZygiY2hkaXIoXCIiKSArIG9yaWdpbmFsX2RpciArICJcIikg
ZmFpbGVkOiAiICsKKyAgICAgICAgICAgICAgICAgICBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigp
KTsKKyAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICB9CisKKyAgaW50IGZkX2ZsYWdzOworICAv
LyBTZXQgY2xvc2VfZmQgdG8gYmUgY2xvc2VkIGFmdGVyIHNwYXduLgorICBHVEVTVF9ERUFUSF9U
RVNUX0NIRUNLX1NZU0NBTExfKGZkX2ZsYWdzID0gZmNudGwoY2xvc2VfZmQsIEZfR0VURkQpKTsK
KyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhmY250bChjbG9zZV9mZCwgRl9TRVRG
RCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZF9mbGFncyB8IEZE
X0NMT0VYRUMpKTsKKyAgc3RydWN0IGluaGVyaXRhbmNlIGluaGVyaXQgPSB7MH07CisgIC8vIHNw
YXduIGlzIGEgc3lzdGVtIGNhbGwuCisgIGNoaWxkX3BpZCA9IHNwYXduKGFyZ3MuYXJndlswXSwg
MCwgTlVMTCwgJmluaGVyaXQsIGFyZ3MuYXJndiwgR2V0RW52aXJvbigpKTsKKyAgLy8gUmVzdG9y
ZXMgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCisgIEdURVNUX0RFQVRIX1RFU1RfQ0hF
Q0tfKGZjaGRpcihjd2RfZmQpICE9IC0xKTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVND
QUxMXyhjbG9zZShjd2RfZmQpKTsKKworIyAgZWxzZSAgIC8vIEdURVNUX09TX1FOWAorIyAgIGlm
IEdURVNUX09TX0xJTlVYCisgIC8vIFdoZW4gYSBTSUdQUk9GIHNpZ25hbCBpcyByZWNlaXZlZCB3
aGlsZSBmb3JrKCkgb3IgY2xvbmUoKSBhcmUgZXhlY3V0aW5nLAorICAvLyB0aGUgcHJvY2VzcyBt
YXkgaGFuZy4gVG8gYXZvaWQgdGhpcywgd2UgaWdub3JlIFNJR1BST0YgaGVyZSBhbmQgcmUtZW5h
YmxlCisgIC8vIGl0IGFmdGVyIHRoZSBjYWxsIHRvIGZvcmsoKS9jbG9uZSgpIGlzIGNvbXBsZXRl
LgorICBzdHJ1Y3Qgc2lnYWN0aW9uIHNhdmVkX3NpZ3Byb2ZfYWN0aW9uOworICBzdHJ1Y3Qgc2ln
YWN0aW9uIGlnbm9yZV9zaWdwcm9mX2FjdGlvbjsKKyAgbWVtc2V0KCZpZ25vcmVfc2lncHJvZl9h
Y3Rpb24sIDAsIHNpemVvZihpZ25vcmVfc2lncHJvZl9hY3Rpb24pKTsKKyAgc2lnZW1wdHlzZXQo
Jmlnbm9yZV9zaWdwcm9mX2FjdGlvbi5zYV9tYXNrKTsKKyAgaWdub3JlX3NpZ3Byb2ZfYWN0aW9u
LnNhX2hhbmRsZXIgPSBTSUdfSUdOOworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExf
KHNpZ2FjdGlvbigKKyAgICAgIFNJR1BST0YsICZpZ25vcmVfc2lncHJvZl9hY3Rpb24sICZzYXZl
ZF9zaWdwcm9mX2FjdGlvbikpOworIyAgIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCisjICAg
aWYgR1RFU1RfSEFTX0NMT05FCiAgIGNvbnN0IGJvb2wgdXNlX2ZvcmsgPSBHVEVTVF9GTEFHKGRl
YXRoX3Rlc3RfdXNlX2ZvcmspOwogCiAgIGlmICghdXNlX2ZvcmspIHsKQEAgLTkwMCwyMSArMTI5
MSwzNyBAQCBzdGF0aWMgcGlkX3QgRXhlY0RlYXRoVGVzdEZvcmsoY2hhciogY29uc3QqIGFyZ3Ys
IGludCBjbG9zZV9mZCkgewogICAgIHZvaWQqIGNvbnN0IHN0YWNrID0gbW1hcChOVUxMLCBzdGFj
a19zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNQVBfQU5PTiB8IE1BUF9QUklWQVRFLCAtMSwgMCk7CiAgICAgR1RFU1RfREVBVEhfVEVT
VF9DSEVDS18oc3RhY2sgIT0gTUFQX0ZBSUxFRCk7CisKKyAgICAvLyBNYXhpbXVtIHN0YWNrIGFs
aWdubWVudCBpbiBieXRlczogIEZvciBhIGRvd253YXJkLWdyb3dpbmcgc3RhY2ssIHRoaXMKKyAg
ICAvLyBhbW91bnQgaXMgc3VidHJhY3RlZCBmcm9tIHNpemUgb2YgdGhlIHN0YWNrIHNwYWNlIHRv
IGdldCBhbiBhZGRyZXNzCisgICAgLy8gdGhhdCBpcyB3aXRoaW4gdGhlIHN0YWNrIHNwYWNlIGFu
ZCBpcyBhbGlnbmVkIG9uIGFsbCBzeXN0ZW1zIHdlIGNhcmUKKyAgICAvLyBhYm91dC4gIEFzIGZh
ciBhcyBJIGtub3cgdGhlcmUgaXMgbm8gQUJJIHdpdGggc3RhY2sgYWxpZ25tZW50IGdyZWF0ZXIK
KyAgICAvLyB0aGFuIDY0LiAgV2UgYXNzdW1lIHN0YWNrIGFuZCBzdGFja19zaXplIGFscmVhZHkg
aGF2ZSBhbGlnbm1lbnQgb2YKKyAgICAvLyBrTWF4U3RhY2tBbGlnbm1lbnQuCisgICAgY29uc3Qg
c2l6ZV90IGtNYXhTdGFja0FsaWdubWVudCA9IDY0OwogICAgIHZvaWQqIGNvbnN0IHN0YWNrX3Rv
cCA9Ci0gICAgICAgIHN0YXRpY19jYXN0PGNoYXIqPihzdGFjaykgKyAoc3RhY2tfZ3Jvd3NfZG93
biA/IHN0YWNrX3NpemUgOiAwKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y2hhcio+KHN0YWNrKSAr
CisgICAgICAgICAgICAoc3RhY2tfZ3Jvd3NfZG93biA/IHN0YWNrX3NpemUgLSBrTWF4U3RhY2tB
bGlnbm1lbnQgOiAwKTsKKyAgICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhzdGFja19zaXplID4g
a01heFN0YWNrQWxpZ25tZW50ICYmCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+
KHN0YWNrX3RvcCkgJSBrTWF4U3RhY2tBbGlnbm1lbnQgPT0gMCk7CiAKICAgICBjaGlsZF9waWQg
PSBjbG9uZSgmRXhlY0RlYXRoVGVzdENoaWxkTWFpbiwgc3RhY2tfdG9wLCBTSUdDSExELCAmYXJn
cyk7CiAKICAgICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhtdW5tYXAoc3RhY2ssIHN0YWNrX3Np
emUpICE9IC0xKTsKICAgfQotI2Vsc2UKKyMgICBlbHNlCiAgIGNvbnN0IGJvb2wgdXNlX2Zvcmsg
PSB0cnVlOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUKKyMgICBlbmRpZiAgLy8gR1RFU1Rf
SEFTX0NMT05FCiAKICAgaWYgKHVzZV9mb3JrICYmIChjaGlsZF9waWQgPSBmb3JrKCkpID09IDAp
IHsKICAgICAgIEV4ZWNEZWF0aFRlc3RDaGlsZE1haW4oJmFyZ3MpOwogICAgICAgX2V4aXQoMCk7
CiAgIH0KKyMgIGVuZGlmICAvLyBHVEVTVF9PU19RTlgKKyMgIGlmIEdURVNUX09TX0xJTlVYCisg
IEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oCisgICAgICBzaWdhY3Rpb24oU0lHUFJP
RiwgJnNhdmVkX3NpZ3Byb2ZfYWN0aW9uLCBOVUxMKSk7CisjICBlbmRpZiAgLy8gR1RFU1RfT1Nf
TElOVVgKIAogICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhjaGlsZF9waWQgIT0gLTEpOwogICBy
ZXR1cm4gY2hpbGRfcGlkOwpAQCAtOTQyLDE2ICsxMzQ5LDE2IEBAIERlYXRoVGVzdDo6VGVzdFJv
bGUgRXhlY0RlYXRoVGVzdDo6QXNzdW1lUm9sZSgpIHsKICAgLy8gaXQgYmUgY2xvc2VkIHdoZW4g
dGhlIGNoaWxkIHByb2Nlc3MgZG9lcyBhbiBleGVjOgogICBHVEVTVF9ERUFUSF9URVNUX0NIRUNL
XyhmY250bChwaXBlX2ZkWzFdLCBGX1NFVEZELCAwKSAhPSAtMSk7CiAKLSAgY29uc3QgU3RyaW5n
IGZpbHRlcl9mbGFnID0KLSAgICAgIFN0cmluZzo6Rm9ybWF0KCItLSVzJXM9JXMuJXMiLAotICAg
ICAgICAgICAgICAgICAgICAgR1RFU1RfRkxBR19QUkVGSVhfLCBrRmlsdGVyRmxhZywKLSAgICAg
ICAgICAgICAgICAgICAgIGluZm8tPnRlc3RfY2FzZV9uYW1lKCksIGluZm8tPm5hbWUoKSk7Ci0g
IGNvbnN0IFN0cmluZyBpbnRlcm5hbF9mbGFnID0KLSAgICAgIFN0cmluZzo6Rm9ybWF0KCItLSVz
JXM9JXN8JWR8JWR8JWQiLAotICAgICAgICAgICAgICAgICAgICAgR1RFU1RfRkxBR19QUkVGSVhf
LCBrSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnLAotICAgICAgICAgICAgICAgICAgICAgZmlsZV8s
IGxpbmVfLCBkZWF0aF90ZXN0X2luZGV4LCBwaXBlX2ZkWzFdKTsKKyAgY29uc3Qgc3RkOjpzdHJp
bmcgZmlsdGVyX2ZsYWcgPQorICAgICAgc3RkOjpzdHJpbmcoIi0tIikgKyBHVEVTVF9GTEFHX1BS
RUZJWF8gKyBrRmlsdGVyRmxhZyArICI9IgorICAgICAgKyBpbmZvLT50ZXN0X2Nhc2VfbmFtZSgp
ICsgIi4iICsgaW5mby0+bmFtZSgpOworICBjb25zdCBzdGQ6OnN0cmluZyBpbnRlcm5hbF9mbGFn
ID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsga0ludGVy
bmFsUnVuRGVhdGhUZXN0RmxhZyArICI9IgorICAgICAgKyBmaWxlXyArICJ8IiArIFN0cmVhbWFi
bGVUb1N0cmluZyhsaW5lXykgKyAifCIKKyAgICAgICsgU3RyZWFtYWJsZVRvU3RyaW5nKGRlYXRo
X3Rlc3RfaW5kZXgpICsgInwiCisgICAgICArIFN0cmVhbWFibGVUb1N0cmluZyhwaXBlX2ZkWzFd
KTsKICAgQXJndW1lbnRzIGFyZ3M7Ci0gIGFyZ3MuQWRkQXJndW1lbnRzKEdldEFyZ3ZzKCkpOwor
ICBhcmdzLkFkZEFyZ3VtZW50cyhHZXRBcmd2c0ZvckRlYXRoVGVzdENoaWxkUHJvY2VzcygpKTsK
ICAgYXJncy5BZGRBcmd1bWVudChmaWx0ZXJfZmxhZy5jX3N0cigpKTsKICAgYXJncy5BZGRBcmd1
bWVudChpbnRlcm5hbF9mbGFnLmNfc3RyKCkpOwogCkBAIC05NjIsNyArMTM2OSw3IEBAIERlYXRo
VGVzdDo6VGVzdFJvbGUgRXhlY0RlYXRoVGVzdDo6QXNzdW1lUm9sZSgpIHsKICAgLy8gaXMgbmVj
ZXNzYXJ5LgogICBGbHVzaEluZm9Mb2coKTsKIAotICBjb25zdCBwaWRfdCBjaGlsZF9waWQgPSBF
eGVjRGVhdGhUZXN0Rm9yayhhcmdzLkFyZ3YoKSwgcGlwZV9mZFswXSk7CisgIGNvbnN0IHBpZF90
IGNoaWxkX3BpZCA9IEV4ZWNEZWF0aFRlc3RTcGF3bkNoaWxkKGFyZ3MuQXJndigpLCBwaXBlX2Zk
WzBdKTsKICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhjbG9zZShwaXBlX2ZkWzFd
KSk7CiAgIHNldF9jaGlsZF9waWQoY2hpbGRfcGlkKTsKICAgc2V0X3JlYWRfZmQocGlwZV9mZFsw
XSk7CkBAIC05NzAsNyArMTM3Nyw3IEBAIERlYXRoVGVzdDo6VGVzdFJvbGUgRXhlY0RlYXRoVGVz
dDo6QXNzdW1lUm9sZSgpIHsKICAgcmV0dXJuIE9WRVJTRUVfVEVTVDsKIH0KIAotI2VuZGlmICAv
LyAhR1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1MKIAogLy8g
Q3JlYXRlcyBhIGNvbmNyZXRlIERlYXRoVGVzdC1kZXJpdmVkIGNsYXNzIHRoYXQgZGVwZW5kcyBv
biB0aGUKIC8vIC0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSBmbGFnLCBhbmQgc2V0cyB0aGUgcG9p
bnRlciBwb2ludGVkIHRvCkBAIC05ODgsOSArMTM5NSwxMCBAQCBib29sIERlZmF1bHREZWF0aFRl
c3RGYWN0b3J5OjpDcmVhdGUoY29uc3QgY2hhciogc3RhdGVtZW50LCBjb25zdCBSRSogcmVnZXgs
CiAKICAgaWYgKGZsYWcgIT0gTlVMTCkgewogICAgIGlmIChkZWF0aF90ZXN0X2luZGV4ID4gZmxh
Zy0+aW5kZXgoKSkgewotICAgICAgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3Nh
Z2UoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICAgIkRlYXRoIHRlc3QgY291bnQgKCVkKSBzb21l
aG93IGV4Y2VlZGVkIGV4cGVjdGVkIG1heGltdW0gKCVkKSIsCi0gICAgICAgICAgZGVhdGhfdGVz
dF9pbmRleCwgZmxhZy0+aW5kZXgoKSkpOworICAgICAgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0
aF90ZXN0X21lc3NhZ2UoCisgICAgICAgICAgIkRlYXRoIHRlc3QgY291bnQgKCIgKyBTdHJlYW1h
YmxlVG9TdHJpbmcoZGVhdGhfdGVzdF9pbmRleCkKKyAgICAgICAgICArICIpIHNvbWVob3cgZXhj
ZWVkZWQgZXhwZWN0ZWQgbWF4aW11bSAoIgorICAgICAgICAgICsgU3RyZWFtYWJsZVRvU3RyaW5n
KGZsYWctPmluZGV4KCkpICsgIikiKTsKICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTEwMDEsNjQgKzE0MDksNTYgQEAgYm9vbCBEZWZhdWx0RGVhdGhUZXN0RmFjdG9yeTo6Q3JlYXRl
KGNvbnN0IGNoYXIqIHN0YXRlbWVudCwgY29uc3QgUkUqIHJlZ2V4LAogICAgIH0KICAgfQogCi0j
aWYgR1RFU1RfT1NfV0lORE9XUworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisKICAgaWYgKEdURVNU
X0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPT0gInRocmVhZHNhZmUiIHx8CiAgICAgICBHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJmYXN0IikgewogICAgICp0ZXN0ID0gbmV3IFdpbmRv
d3NEZWF0aFRlc3Qoc3RhdGVtZW50LCByZWdleCwgZmlsZSwgbGluZSk7CiAgIH0KLSNlbHNlCisK
KyMgZWxpZiBHVEVTVF9PU19GVUNIU0lBCisKKyAgaWYgKEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9z
dHlsZSkgPT0gInRocmVhZHNhZmUiIHx8CisgICAgICBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5
bGUpID09ICJmYXN0IikgeworICAgICp0ZXN0ID0gbmV3IEZ1Y2hzaWFEZWF0aFRlc3Qoc3RhdGVt
ZW50LCByZWdleCwgZmlsZSwgbGluZSk7CisgIH0KKworIyBlbHNlCisKICAgaWYgKEdURVNUX0ZM
QUcoZGVhdGhfdGVzdF9zdHlsZSkgPT0gInRocmVhZHNhZmUiKSB7CiAgICAgKnRlc3QgPSBuZXcg
RXhlY0RlYXRoVGVzdChzdGF0ZW1lbnQsIHJlZ2V4LCBmaWxlLCBsaW5lKTsKICAgfSBlbHNlIGlm
IChHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJmYXN0IikgewogICAgICp0ZXN0ID0g
bmV3IE5vRXhlY0RlYXRoVGVzdChzdGF0ZW1lbnQsIHJlZ2V4KTsKICAgfQotI2VuZGlmICAvLyBH
VEVTVF9PU19XSU5ET1dTCisKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKwogICBlbHNl
IHsgIC8vIE5PTElOVCAtIHRoaXMgaXMgbW9yZSByZWFkYWJsZSB0aGFuIHVuYmFsYW5jZWQgYnJh
Y2tldHMgaW5zaWRlICNpZi4KLSAgICBEZWF0aFRlc3Q6OnNldF9sYXN0X2RlYXRoX3Rlc3RfbWVz
c2FnZShTdHJpbmc6OkZvcm1hdCgKLSAgICAgICAgIlVua25vd24gZGVhdGggdGVzdCBzdHlsZSBc
IiVzXCIgZW5jb3VudGVyZWQiLAotICAgICAgICBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUp
LmNfc3RyKCkpKTsKKyAgICBEZWF0aFRlc3Q6OnNldF9sYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZSgK
KyAgICAgICAgIlVua25vd24gZGVhdGggdGVzdCBzdHlsZSBcIiIgKyBHVEVTVF9GTEFHKGRlYXRo
X3Rlc3Rfc3R5bGUpCisgICAgICAgICsgIlwiIGVuY291bnRlcmVkIik7CiAgICAgcmV0dXJuIGZh
bHNlOwogICB9CiAKICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIFNwbGl0cyBhIGdpdmVuIHN0cmlu
ZyBvbiBhIGdpdmVuIGRlbGltaXRlciwgcG9wdWxhdGluZyBhIGdpdmVuCi0vLyB2ZWN0b3Igd2l0
aCB0aGUgZmllbGRzLiAgR1RFU1RfSEFTX0RFQVRIX1RFU1QgaW1wbGllcyB0aGF0IHdlIGhhdmUK
LS8vIDo6c3RkOjpzdHJpbmcsIHNvIHdlIGNhbiB1c2UgaXQgaGVyZS4KLXN0YXRpYyB2b2lkIFNw
bGl0U3RyaW5nKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgY2hhciBkZWxpbWl0ZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6c3RyaW5nPiogZGVzdCkg
ewotICA6OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6c3RyaW5nPiBwYXJzZWQ7Ci0gIDo6c3RkOjpzdHJp
bmc6OnNpemVfdHlwZSBwb3MgPSAwOwotICB3aGlsZSAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3
YXlzVHJ1ZSgpKSB7Ci0gICAgY29uc3QgOjpzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGNvbG9uID0g
c3RyLmZpbmQoZGVsaW1pdGVyLCBwb3MpOwotICAgIGlmIChjb2xvbiA9PSA6OnN0ZDo6c3RyaW5n
OjpucG9zKSB7Ci0gICAgICBwYXJzZWQucHVzaF9iYWNrKHN0ci5zdWJzdHIocG9zKSk7Ci0gICAg
ICBicmVhazsKLSAgICB9IGVsc2UgewotICAgICAgcGFyc2VkLnB1c2hfYmFjayhzdHIuc3Vic3Ry
KHBvcywgY29sb24gLSBwb3MpKTsKLSAgICAgIHBvcyA9IGNvbG9uICsgMTsKLSAgICB9Ci0gIH0K
LSAgZGVzdC0+c3dhcChwYXJzZWQpOwotfQotCi0jaWYgR1RFU1RfT1NfV0lORE9XUworIyBpZiBH
VEVTVF9PU19XSU5ET1dTCiAvLyBSZWNyZWF0ZXMgdGhlIHBpcGUgYW5kIGV2ZW50IGhhbmRsZXMg
ZnJvbSB0aGUgcHJvdmlkZWQgcGFyYW1ldGVycywKIC8vIHNpZ25hbHMgdGhlIGV2ZW50LCBhbmQg
cmV0dXJucyBhIGZpbGUgZGVzY3JpcHRvciB3cmFwcGVkIGFyb3VuZCB0aGUgcGlwZQogLy8gaGFu
ZGxlLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiB0aGUgY2hpbGQgcHJvY2VzcyBvbmx5Lgot
aW50IEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9yKHVuc2lnbmVkIGludCBwYXJlbnRfcHJvY2Vzc19p
ZCwKK3N0YXRpYyBpbnQgR2V0U3RhdHVzRmlsZURlc2NyaXB0b3IodW5zaWduZWQgaW50IHBhcmVu
dF9wcm9jZXNzX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3cml0ZV9o
YW5kbGVfYXNfc2l6ZV90LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBldmVu
dF9oYW5kbGVfYXNfc2l6ZV90KSB7CiAgIEF1dG9IYW5kbGUgcGFyZW50X3Byb2Nlc3NfaGFuZGxl
KDo6T3BlblByb2Nlc3MoUFJPQ0VTU19EVVBfSEFORExFLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsICAvLyBOb24taW5oZXJpdGFibGUu
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJl
bnRfcHJvY2Vzc19pZCkpOwogICBpZiAocGFyZW50X3Byb2Nlc3NfaGFuZGxlLkdldCgpID09IElO
VkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgRGVhdGhUZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQo
IlVuYWJsZSB0byBvcGVuIHBhcmVudCBwcm9jZXNzICV1IiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJlbnRfcHJvY2Vzc19pZCkpOworICAgIERlYXRoVGVzdEFib3J0KCJV
bmFibGUgdG8gb3BlbiBwYXJlbnQgcHJvY2VzcyAiICsKKyAgICAgICAgICAgICAgICAgICBTdHJl
YW1hYmxlVG9TdHJpbmcocGFyZW50X3Byb2Nlc3NfaWQpKTsKICAgfQogCi0gIC8vIFRPRE8odmxh
ZGxAZ29vZ2xlLmNvbSk6IFJlcGxhY2UgdGhlIGZvbGxvd2luZyBjaGVjayB3aXRoIGEKKyAgLy8g
RklYTUU6IFJlcGxhY2UgdGhlIGZvbGxvd2luZyBjaGVjayB3aXRoIGEKICAgLy8gY29tcGlsZS10
aW1lIGFzc2VydGlvbiB3aGVuIGF2YWlsYWJsZS4KICAgR1RFU1RfQ0hFQ0tfKHNpemVvZihIQU5E
TEUpIDw9IHNpemVvZihzaXplX3QpKTsKIApAQCAtMTA2Niw3ICsxNDY2LDcgQEAgaW50IEdldFN0
YXR1c0ZpbGVEZXNjcmlwdG9yKHVuc2lnbmVkIGludCBwYXJlbnRfcHJvY2Vzc19pZCwKICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPih3cml0ZV9oYW5kbGVfYXNfc2l6ZV90KTsKICAgSEFO
RExFIGR1cF93cml0ZV9oYW5kbGU7CiAKLSAgLy8gVGhlIG5ld2x5IGluaXRpYWxpemVkIGhhbmRs
ZSBpcyBhY2Nlc3NpYmxlIG9ubHkgaW4gaW4gdGhlIHBhcmVudAorICAvLyBUaGUgbmV3bHkgaW5p
dGlhbGl6ZWQgaGFuZGxlIGlzIGFjY2Vzc2libGUgb25seSBpbiB0aGUgcGFyZW50CiAgIC8vIHBy
b2Nlc3MuIFRvIG9idGFpbiBvbmUgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIGNoaWxkLCB3ZSBuZWVk
IHRvIHVzZQogICAvLyBEdXBsaWNhdGVIYW5kbGUuCiAgIGlmICghOjpEdXBsaWNhdGVIYW5kbGUo
cGFyZW50X3Byb2Nlc3NfaGFuZGxlLkdldCgpLCB3cml0ZV9oYW5kbGUsCkBAIC0xMDc1LDkgKzE0
NzUsMTAgQEAgaW50IEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9yKHVuc2lnbmVkIGludCBwYXJlbnRf
cHJvY2Vzc19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERVUExJQ0FU
RV9TQU1FX0FDQ0VTUyBpcyB1c2VkLgogICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCAg
Ly8gUmVxdWVzdCBub24taW5oZXJpdGFibGUgaGFuZGxlci4KICAgICAgICAgICAgICAgICAgICAg
ICAgICBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MpKSB7Ci0gICAgRGVhdGhUZXN0QWJvcnQoU3RyaW5n
OjpGb3JtYXQoCi0gICAgICAgICJVbmFibGUgdG8gZHVwbGljYXRlIHRoZSBwaXBlIGhhbmRsZSAl
SXUgZnJvbSB0aGUgcGFyZW50IHByb2Nlc3MgJXUiLAotICAgICAgICB3cml0ZV9oYW5kbGVfYXNf
c2l6ZV90LCBwYXJlbnRfcHJvY2Vzc19pZCkpOworICAgIERlYXRoVGVzdEFib3J0KCJVbmFibGUg
dG8gZHVwbGljYXRlIHRoZSBwaXBlIGhhbmRsZSAiICsKKyAgICAgICAgICAgICAgICAgICBTdHJl
YW1hYmxlVG9TdHJpbmcod3JpdGVfaGFuZGxlX2FzX3NpemVfdCkgKworICAgICAgICAgICAgICAg
ICAgICIgZnJvbSB0aGUgcGFyZW50IHByb2Nlc3MgIiArCisgICAgICAgICAgICAgICAgICAgU3Ry
ZWFtYWJsZVRvU3RyaW5nKHBhcmVudF9wcm9jZXNzX2lkKSk7CiAgIH0KIAogICBjb25zdCBIQU5E
TEUgZXZlbnRfaGFuZGxlID0gcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KGV2ZW50X2hhbmRsZV9h
c19zaXplX3QpOwpAQCAtMTA4OCwxNyArMTQ4OSwxOCBAQCBpbnQgR2V0U3RhdHVzRmlsZURlc2Ny
aXB0b3IodW5zaWduZWQgaW50IHBhcmVudF9wcm9jZXNzX2lkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4MCwKICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MpKSB7Ci0gICAgRGVhdGhUZXN0QWJv
cnQoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICJVbmFibGUgdG8gZHVwbGljYXRlIHRoZSBldmVu
dCBoYW5kbGUgJUl1IGZyb20gdGhlIHBhcmVudCBwcm9jZXNzICV1IiwKLSAgICAgICAgZXZlbnRf
aGFuZGxlX2FzX3NpemVfdCwgcGFyZW50X3Byb2Nlc3NfaWQpKTsKKyAgICBEZWF0aFRlc3RBYm9y
dCgiVW5hYmxlIHRvIGR1cGxpY2F0ZSB0aGUgZXZlbnQgaGFuZGxlICIgKworICAgICAgICAgICAg
ICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhldmVudF9oYW5kbGVfYXNfc2l6ZV90KSArCisgICAg
ICAgICAgICAgICAgICAgIiBmcm9tIHRoZSBwYXJlbnQgcHJvY2VzcyAiICsKKyAgICAgICAgICAg
ICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcocGFyZW50X3Byb2Nlc3NfaWQpKTsKICAgfQogCiAg
IGNvbnN0IGludCB3cml0ZV9mZCA9CiAgICAgICA6Ol9vcGVuX29zZmhhbmRsZShyZWludGVycHJl
dF9jYXN0PGludHB0cl90PihkdXBfd3JpdGVfaGFuZGxlKSwgT19BUFBFTkQpOwogICBpZiAod3Jp
dGVfZmQgPT0gLTEpIHsKLSAgICBEZWF0aFRlc3RBYm9ydChTdHJpbmc6OkZvcm1hdCgKLSAgICAg
ICAgIlVuYWJsZSB0byBjb252ZXJ0IHBpcGUgaGFuZGxlICVJdSB0byBhIGZpbGUgZGVzY3JpcHRv
ciIsCi0gICAgICAgIHdyaXRlX2hhbmRsZV9hc19zaXplX3QpKTsKKyAgICBEZWF0aFRlc3RBYm9y
dCgiVW5hYmxlIHRvIGNvbnZlcnQgcGlwZSBoYW5kbGUgIiArCisgICAgICAgICAgICAgICAgICAg
U3RyZWFtYWJsZVRvU3RyaW5nKHdyaXRlX2hhbmRsZV9hc19zaXplX3QpICsKKyAgICAgICAgICAg
ICAgICAgICAiIHRvIGEgZmlsZSBkZXNjcmlwdG9yIik7CiAgIH0KIAogICAvLyBTaWduYWxzIHRo
ZSBwYXJlbnQgdGhhdCB0aGUgd3JpdGUgZW5kIG9mIHRoZSBwaXBlIGhhcyBiZWVuIGFjcXVpcmVk
CkBAIC0xMTA3LDcgKzE1MDksNyBAQCBpbnQgR2V0U3RhdHVzRmlsZURlc2NyaXB0b3IodW5zaWdu
ZWQgaW50IHBhcmVudF9wcm9jZXNzX2lkLAogCiAgIHJldHVybiB3cml0ZV9mZDsKIH0KLSNlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCiAv
LyBSZXR1cm5zIGEgbmV3bHkgY3JlYXRlZCBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcgb2JqZWN0
IHdpdGggZmllbGRzCiAvLyBpbml0aWFsaXplZCBmcm9tIHRoZSBHVEVTVF9GTEFHKGludGVybmFs
X3J1bl9kZWF0aF90ZXN0KSBmbGFnIGlmCkBAIC0xMTIzLDcgKzE1MjUsOCBAQCBJbnRlcm5hbFJ1
bkRlYXRoVGVzdEZsYWcqIFBhcnNlSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKCkgewogICBTcGxp
dFN0cmluZyhHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KS5jX3N0cigpLCAnfCcs
ICZmaWVsZHMpOwogICBpbnQgd3JpdGVfZmQgPSAtMTsKIAotI2lmIEdURVNUX09TX1dJTkRPV1MK
KyMgaWYgR1RFU1RfT1NfV0lORE9XUworCiAgIHVuc2lnbmVkIGludCBwYXJlbnRfcHJvY2Vzc19p
ZCA9IDA7CiAgIHNpemVfdCB3cml0ZV9oYW5kbGVfYXNfc2l6ZV90ID0gMDsKICAgc2l6ZV90IGV2
ZW50X2hhbmRsZV9hc19zaXplX3QgPSAwOwpAQCAtMTEzNCwyMyArMTUzNywzNCBAQCBJbnRlcm5h
bFJ1bkRlYXRoVGVzdEZsYWcqIFBhcnNlSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKCkgewogICAg
ICAgfHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVsZHNbM10sICZwYXJlbnRfcHJvY2Vzc19pZCkK
ICAgICAgIHx8ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmllbGRzWzRdLCAmd3JpdGVfaGFuZGxlX2Fz
X3NpemVfdCkKICAgICAgIHx8ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmllbGRzWzVdLCAmZXZlbnRf
aGFuZGxlX2FzX3NpemVfdCkpIHsKLSAgICBEZWF0aFRlc3RBYm9ydChTdHJpbmc6OkZvcm1hdCgK
LSAgICAgICAgIkJhZCAtLWd0ZXN0X2ludGVybmFsX3J1bl9kZWF0aF90ZXN0IGZsYWc6ICVzIiwK
LSAgICAgICAgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkuY19zdHIoKSkpOwor
ICAgIERlYXRoVGVzdEFib3J0KCJCYWQgLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBm
bGFnOiAiICsKKyAgICAgICAgICAgICAgICAgICBHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0
aF90ZXN0KSk7CiAgIH0KICAgd3JpdGVfZmQgPSBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcihwYXJl
bnRfcHJvY2Vzc19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0
ZV9oYW5kbGVfYXNfc2l6ZV90LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV2ZW50X2hhbmRsZV9hc19zaXplX3QpOwotI2Vsc2UKKworIyBlbGlmIEdURVNUX09TX0ZVQ0hT
SUEKKworICBpZiAoZmllbGRzLnNpemUoKSAhPSAzCisgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVt
YmVyKGZpZWxkc1sxXSwgJmxpbmUpCisgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxk
c1syXSwgJmluZGV4KSkgeworICAgIERlYXRoVGVzdEFib3J0KCJCYWQgLS1ndGVzdF9pbnRlcm5h
bF9ydW5fZGVhdGhfdGVzdCBmbGFnOiAiCisgICAgICAgICsgR1RFU1RfRkxBRyhpbnRlcm5hbF9y
dW5fZGVhdGhfdGVzdCkpOworICB9CisKKyMgZWxzZQorCiAgIGlmIChmaWVsZHMuc2l6ZSgpICE9
IDQKICAgICAgIHx8ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmllbGRzWzFdLCAmbGluZSkKICAgICAg
IHx8ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmllbGRzWzJdLCAmaW5kZXgpCiAgICAgICB8fCAhUGFy
c2VOYXR1cmFsTnVtYmVyKGZpZWxkc1szXSwgJndyaXRlX2ZkKSkgewotICAgIERlYXRoVGVzdEFi
b3J0KFN0cmluZzo6Rm9ybWF0KAotICAgICAgICAiQmFkIC0tZ3Rlc3RfaW50ZXJuYWxfcnVuX2Rl
YXRoX3Rlc3QgZmxhZzogJXMiLAotICAgICAgICBHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0
aF90ZXN0KS5jX3N0cigpKSk7CisgICAgRGVhdGhUZXN0QWJvcnQoIkJhZCAtLWd0ZXN0X2ludGVy
bmFsX3J1bl9kZWF0aF90ZXN0IGZsYWc6ICIKKyAgICAgICAgKyBHVEVTVF9GTEFHKGludGVybmFs
X3J1bl9kZWF0aF90ZXN0KSk7CiAgIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisj
IGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKICAgcmV0dXJuIG5ldyBJbnRlcm5hbFJ1bkRl
YXRoVGVzdEZsYWcoZmllbGRzWzBdLCBsaW5lLCBpbmRleCwgd3JpdGVfZmQpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtZmlsZXBhdGguY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtZmlsZXBhdGguY2MKaW5kZXggYzFlZjkx
ODhhZDg1YWI4YTA0N2EzM2JmOTk0NWUxY2QwY2M3M2VmZi4uYTdlNjVjMDgyYTc1ZmM2ZmIwMzhh
MDIzZDViMWQzZTA5ZTQ3OWYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c3JjL2d0ZXN0LWZpbGVwYXRoLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9n
dGVzdC1maWxlcGF0aC5jYwpAQCAtMjYsMzkgKzI2LDM4IEBACiAvLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczoga2VpdGgucmF5QGdt
YWlsLmNvbSAoS2VpdGggUmF5KQogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmls
ZXBhdGguaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVk
ZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCIKIAogI2luY2x1ZGUgPHN0ZGxpYi5o
PgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC1tZXNzYWdlLmgiCiAKICNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotI2luY2x1
ZGUgPHdpbmRvd3MuaD4KKyMgaW5jbHVkZSA8d2luZG93cy5oPgogI2VsaWYgR1RFU1RfT1NfV0lO
RE9XUwotI2luY2x1ZGUgPGRpcmVjdC5oPgotI2luY2x1ZGUgPGlvLmg+CisjIGluY2x1ZGUgPGRp
cmVjdC5oPgorIyBpbmNsdWRlIDxpby5oPgogI2VsaWYgR1RFU1RfT1NfU1lNQklBTgogLy8gU3lt
YmlhbiBPcGVuQyBoYXMgUEFUSF9NQVggaW4gc3lzL3N5c2xpbWl0cy5oCi0jaW5jbHVkZSA8c3lz
L3N5c2xpbWl0cy5oPgorIyBpbmNsdWRlIDxzeXMvc3lzbGltaXRzLmg+CiAjZWxzZQotI2luY2x1
ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPGNsaW1pdHM+ICAvLyBTb21lIExpbnV4IGRpc3RyaWJ1
dGlvbnMgZGVmaW5lIFBBVEhfTUFYIGhlcmUuCisjIGluY2x1ZGUgPGxpbWl0cy5oPgorIyBpbmNs
dWRlIDxjbGltaXRzPiAgLy8gU29tZSBMaW51eCBkaXN0cmlidXRpb25zIGRlZmluZSBQQVRIX01B
WCBoZXJlLgogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogCisjaW5jbHVkZSAi
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgiCisKICNpZiBHVEVTVF9PU19XSU5ET1dTCi0j
ZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBfTUFYX1BBVEgKKyMgZGVmaW5lIEdURVNUX1BBVEhfTUFY
XyBfTUFYX1BBVEgKICNlbGlmIGRlZmluZWQoUEFUSF9NQVgpCi0jZGVmaW5lIEdURVNUX1BBVEhf
TUFYXyBQQVRIX01BWAorIyBkZWZpbmUgR1RFU1RfUEFUSF9NQVhfIFBBVEhfTUFYCiAjZWxpZiBk
ZWZpbmVkKF9YT1BFTl9QQVRIX01BWCkKLSNkZWZpbmUgR1RFU1RfUEFUSF9NQVhfIF9YT1BFTl9Q
QVRIX01BWAorIyBkZWZpbmUgR1RFU1RfUEFUSF9NQVhfIF9YT1BFTl9QQVRIX01BWAogI2Vsc2UK
LSNkZWZpbmUgR1RFU1RfUEFUSF9NQVhfIF9QT1NJWF9QQVRIX01BWAorIyBkZWZpbmUgR1RFU1Rf
UEFUSF9NQVhfIF9QT1NJWF9QQVRIX01BWAogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAK
LSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4KLQogbmFtZXNwYWNlIHRl
c3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsKIApAQCAtNjksMjEgKzY4LDE5IEBAIG5hbWVz
cGFjZSBpbnRlcm5hbCB7CiAvLyBvZiB0aGVtLgogY29uc3QgY2hhciBrUGF0aFNlcGFyYXRvciA9
ICdcXCc7CiBjb25zdCBjaGFyIGtBbHRlcm5hdGVQYXRoU2VwYXJhdG9yID0gJy8nOwotY29uc3Qg
Y2hhciBrUGF0aFNlcGFyYXRvclN0cmluZ1tdID0gIlxcIjsKIGNvbnN0IGNoYXIga0FsdGVybmF0
ZVBhdGhTZXBhcmF0b3JTdHJpbmdbXSA9ICIvIjsKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklM
RQorIyBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogLy8gV2luZG93cyBDRSBkb2Vzbid0IGhh
dmUgYSBjdXJyZW50IGRpcmVjdG9yeS4gWW91IHNob3VsZCBub3QgdXNlCiAvLyB0aGUgY3VycmVu
dCBkaXJlY3RvcnkgaW4gdGVzdHMgb24gV2luZG93cyBDRSwgYnV0IHRoaXMgYXQgbGVhc3QKIC8v
IHByb3ZpZGVzIGEgcmVhc29uYWJsZSBmYWxsYmFjay4KIGNvbnN0IGNoYXIga0N1cnJlbnREaXJl
Y3RvcnlTdHJpbmdbXSA9ICJcXCI7CiAvLyBXaW5kb3dzIENFIGRvZXNuJ3QgZGVmaW5lIElOVkFM
SURfRklMRV9BVFRSSUJVVEVTCiBjb25zdCBEV09SRCBrSW52YWxpZEZpbGVBdHRyaWJ1dGVzID0g
MHhmZmZmZmZmZjsKLSNlbHNlCisjIGVsc2UKIGNvbnN0IGNoYXIga0N1cnJlbnREaXJlY3RvcnlT
dHJpbmdbXSA9ICIuXFwiOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBl
bmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKICNlbHNlCiBjb25zdCBjaGFyIGtQYXRo
U2VwYXJhdG9yID0gJy8nOwotY29uc3QgY2hhciBrUGF0aFNlcGFyYXRvclN0cmluZ1tdID0gIi8i
OwogY29uc3QgY2hhciBrQ3VycmVudERpcmVjdG9yeVN0cmluZ1tdID0gIi4vIjsKICNlbmRpZiAg
Ly8gR1RFU1RfT1NfV0lORE9XUwogCkBAIC05OCw3ICs5NSw3IEBAIHN0YXRpYyBib29sIElzUGF0
aFNlcGFyYXRvcihjaGFyIGMpIHsKIAogLy8gUmV0dXJucyB0aGUgY3VycmVudCB3b3JraW5nIGRp
cmVjdG9yeSwgb3IgIiIgaWYgdW5zdWNjZXNzZnVsLgogRmlsZVBhdGggRmlsZVBhdGg6OkdldEN1
cnJlbnREaXIoKSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyNpZiBHVEVTVF9PU19X
SU5ET1dTX01PQklMRSB8fCBHVEVTVF9PU19XSU5ET1dTX1BIT05FIHx8IEdURVNUX09TX1dJTkRP
V1NfUlQKICAgLy8gV2luZG93cyBDRSBkb2Vzbid0IGhhdmUgYSBjdXJyZW50IGRpcmVjdG9yeSwg
c28gd2UganVzdCByZXR1cm4KICAgLy8gc29tZXRoaW5nIHJlYXNvbmFibGUuCiAgIHJldHVybiBG
aWxlUGF0aChrQ3VycmVudERpcmVjdG9yeVN0cmluZyk7CkBAIC0xMDcsNyArMTA0LDE0IEBAIEZp
bGVQYXRoIEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkgewogICByZXR1cm4gRmlsZVBhdGgoX2dl
dGN3ZChjd2QsIHNpemVvZihjd2QpKSA9PSBOVUxMID8gIiIgOiBjd2QpOwogI2Vsc2UKICAgY2hh
ciBjd2RbR1RFU1RfUEFUSF9NQVhfICsgMV0gPSB7ICdcMCcgfTsKLSAgcmV0dXJuIEZpbGVQYXRo
KGdldGN3ZChjd2QsIHNpemVvZihjd2QpKSA9PSBOVUxMID8gIiIgOiBjd2QpOworICBjaGFyKiBy
ZXN1bHQgPSBnZXRjd2QoY3dkLCBzaXplb2YoY3dkKSk7CisjIGlmIEdURVNUX09TX05BQ0wKKyAg
Ly8gZ2V0Y3dkIHdpbGwgbGlrZWx5IGZhaWwgaW4gTmFDbCBkdWUgdG8gdGhlIHNhbmRib3gsIHNv
IHJldHVybiBzb21ldGhpbmcKKyAgLy8gcmVhc29uYWJsZS4gVGhlIHVzZXIgbWF5IGhhdmUgcHJv
dmlkZWQgYSBzaGltIGltcGxlbWVudGF0aW9uIGZvciBnZXRjd2QsCisgIC8vIGhvd2V2ZXIsIHNv
IGZhbGxiYWNrIG9ubHkgd2hlbiBmYWlsdXJlIGlzIGRldGVjdGVkLgorICByZXR1cm4gRmlsZVBh
dGgocmVzdWx0ID09IE5VTEwgPyBrQ3VycmVudERpcmVjdG9yeVN0cmluZyA6IGN3ZCk7CisjIGVu
ZGlmICAvLyBHVEVTVF9PU19OQUNMCisgIHJldHVybiBGaWxlUGF0aChyZXN1bHQgPT0gTlVMTCA/
ICIiIDogY3dkKTsKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIH0KIApAQCAt
MTE2LDE0ICsxMjAsMTUgQEAgRmlsZVBhdGggRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKSB7CiAv
LyBGaWxlUGF0aCgiZGlyL2ZpbGUiKS4gSWYgYSBjYXNlLWluc2Vuc2l0aXZlIGV4dGVuc2lvbiBp
cyBub3QKIC8vIGZvdW5kLCByZXR1cm5zIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgRmlsZVBhdGgu
CiBGaWxlUGF0aCBGaWxlUGF0aDo6UmVtb3ZlRXh0ZW5zaW9uKGNvbnN0IGNoYXIqIGV4dGVuc2lv
bikgY29uc3QgewotICBTdHJpbmcgZG90X2V4dGVuc2lvbihTdHJpbmc6OkZvcm1hdCgiLiVzIiwg
ZXh0ZW5zaW9uKSk7Ci0gIGlmIChwYXRobmFtZV8uRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoZG90
X2V4dGVuc2lvbi5jX3N0cigpKSkgewotICAgIHJldHVybiBGaWxlUGF0aChTdHJpbmcocGF0aG5h
bWVfLmNfc3RyKCksIHBhdGhuYW1lXy5sZW5ndGgoKSAtIDQpKTsKKyAgY29uc3Qgc3RkOjpzdHJp
bmcgZG90X2V4dGVuc2lvbiA9IHN0ZDo6c3RyaW5nKCIuIikgKyBleHRlbnNpb247CisgIGlmIChT
dHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKHBhdGhuYW1lXywgZG90X2V4dGVuc2lvbikp
IHsKKyAgICByZXR1cm4gRmlsZVBhdGgocGF0aG5hbWVfLnN1YnN0cigKKyAgICAgICAgMCwgcGF0
aG5hbWVfLmxlbmd0aCgpIC0gZG90X2V4dGVuc2lvbi5sZW5ndGgoKSkpOwogICB9CiAgIHJldHVy
biAqdGhpczsKIH0KIAotLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGxhc3Qgb2NjdXJlbmNl
IG9mIGEgdmFsaWQgcGF0aCBzZXBhcmF0b3IgaW4KKy8vIFJldHVybnMgYSBwb2ludGVyIHRvIHRo
ZSBsYXN0IG9jY3VycmVuY2Ugb2YgYSB2YWxpZCBwYXRoIHNlcGFyYXRvciBpbgogLy8gdGhlIEZp
bGVQYXRoLiBPbiBXaW5kb3dzLCBmb3IgZXhhbXBsZSwgYm90aCAnLycgYW5kICdcJyBhcmUgdmFs
aWQgcGF0aAogLy8gc2VwYXJhdG9ycy4gUmV0dXJucyBOVUxMIGlmIG5vIHBhdGggc2VwYXJhdG9y
IHdhcyBmb3VuZC4KIGNvbnN0IGNoYXIqIEZpbGVQYXRoOjpGaW5kTGFzdFBhdGhTZXBhcmF0b3Io
KSBjb25zdCB7CkBAIC0xNDcsNyArMTUyLDcgQEAgY29uc3QgY2hhciogRmlsZVBhdGg6OkZpbmRM
YXN0UGF0aFNlcGFyYXRvcigpIGNvbnN0IHsKIC8vIE9uIFdpbmRvd3MgcGxhdGZvcm0sICdcJyBp
cyB0aGUgcGF0aCBzZXBhcmF0b3IsIG90aGVyd2lzZSBpdCBpcyAnLycuCiBGaWxlUGF0aCBGaWxl
UGF0aDo6UmVtb3ZlRGlyZWN0b3J5TmFtZSgpIGNvbnN0IHsKICAgY29uc3QgY2hhciogY29uc3Qg
bGFzdF9zZXAgPSBGaW5kTGFzdFBhdGhTZXBhcmF0b3IoKTsKLSAgcmV0dXJuIGxhc3Rfc2VwID8g
RmlsZVBhdGgoU3RyaW5nKGxhc3Rfc2VwICsgMSkpIDogKnRoaXM7CisgIHJldHVybiBsYXN0X3Nl
cCA/IEZpbGVQYXRoKGxhc3Rfc2VwICsgMSkgOiAqdGhpczsKIH0KIAogLy8gUmVtb3ZlRmlsZU5h
bWUgcmV0dXJucyB0aGUgZGlyZWN0b3J5IHBhdGggd2l0aCB0aGUgZmlsZW5hbWUgcmVtb3ZlZC4K
QEAgLTE1OCw5ICsxNjMsOSBAQCBGaWxlUGF0aCBGaWxlUGF0aDo6UmVtb3ZlRGlyZWN0b3J5TmFt
ZSgpIGNvbnN0IHsKIC8vIE9uIFdpbmRvd3MgcGxhdGZvcm0sICdcJyBpcyB0aGUgcGF0aCBzZXBh
cmF0b3IsIG90aGVyd2lzZSBpdCBpcyAnLycuCiBGaWxlUGF0aCBGaWxlUGF0aDo6UmVtb3ZlRmls
ZU5hbWUoKSBjb25zdCB7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGxhc3Rfc2VwID0gRmluZExhc3RQ
YXRoU2VwYXJhdG9yKCk7Ci0gIFN0cmluZyBkaXI7CisgIHN0ZDo6c3RyaW5nIGRpcjsKICAgaWYg
KGxhc3Rfc2VwKSB7Ci0gICAgZGlyID0gU3RyaW5nKGNfc3RyKCksIGxhc3Rfc2VwICsgMSAtIGNf
c3RyKCkpOworICAgIGRpciA9IHN0ZDo6c3RyaW5nKGNfc3RyKCksIGxhc3Rfc2VwICsgMSAtIGNf
c3RyKCkpOwogICB9IGVsc2UgewogICAgIGRpciA9IGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nOwog
ICB9CkBAIC0xNzcsMTEgKzE4MiwxMiBAQCBGaWxlUGF0aCBGaWxlUGF0aDo6TWFrZUZpbGVOYW1l
KGNvbnN0IEZpbGVQYXRoJiBkaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEZpbGVQYXRoJiBiYXNlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBudW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGV4dGVuc2lvbikgewotICBTdHJpbmcgZmlsZTsKKyAgc3RkOjpzdHJpbmcgZmlsZTsK
ICAgaWYgKG51bWJlciA9PSAwKSB7Ci0gICAgZmlsZSA9IFN0cmluZzo6Rm9ybWF0KCIlcy4lcyIs
IGJhc2VfbmFtZS5jX3N0cigpLCBleHRlbnNpb24pOworICAgIGZpbGUgPSBiYXNlX25hbWUuc3Ry
aW5nKCkgKyAiLiIgKyBleHRlbnNpb247CiAgIH0gZWxzZSB7Ci0gICAgZmlsZSA9IFN0cmluZzo6
Rm9ybWF0KCIlc18lZC4lcyIsIGJhc2VfbmFtZS5jX3N0cigpLCBudW1iZXIsIGV4dGVuc2lvbik7
CisgICAgZmlsZSA9IGJhc2VfbmFtZS5zdHJpbmcoKSArICJfIiArIFN0cmVhbWFibGVUb1N0cmlu
ZyhudW1iZXIpCisgICAgICAgICsgIi4iICsgZXh0ZW5zaW9uOwogICB9CiAgIHJldHVybiBDb25j
YXRQYXRocyhkaXJlY3RvcnksIEZpbGVQYXRoKGZpbGUpKTsKIH0KQEAgLTE5Myw4ICsxOTksNyBA
QCBGaWxlUGF0aCBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoY29uc3QgRmlsZVBhdGgmIGRpcmVjdG9y
eSwKICAgaWYgKGRpcmVjdG9yeS5Jc0VtcHR5KCkpCiAgICAgcmV0dXJuIHJlbGF0aXZlX3BhdGg7
CiAgIGNvbnN0IEZpbGVQYXRoIGRpcihkaXJlY3RvcnkuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJh
dG9yKCkpOwotICByZXR1cm4gRmlsZVBhdGgoU3RyaW5nOjpGb3JtYXQoIiVzJWMlcyIsIGRpci5j
X3N0cigpLCBrUGF0aFNlcGFyYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlbGF0aXZlX3BhdGguY19zdHIoKSkpOworICByZXR1cm4gRmlsZVBhdGgoZGlyLnN0cmluZygp
ICsga1BhdGhTZXBhcmF0b3IgKyByZWxhdGl2ZV9wYXRoLnN0cmluZygpKTsKIH0KIAogLy8gUmV0
dXJucyB0cnVlIGlmIHBhdGhuYW1lIGRlc2NyaWJlcyBzb21ldGhpbmcgZmluZGFibGUgaW4gdGhl
IGZpbGUtc3lzdGVtLApAQCAtMjQ1LDcgKzI1MCw3IEBAIGJvb2wgRmlsZVBhdGg6OkRpcmVjdG9y
eUV4aXN0cygpIGNvbnN0IHsKIC8vIHJvb3QgZGlyZWN0b3J5IHBlciBkaXNrIGRyaXZlLikKIGJv
b2wgRmlsZVBhdGg6OklzUm9vdERpcmVjdG9yeSgpIGNvbnN0IHsKICNpZiBHVEVTVF9PU19XSU5E
T1dTCi0gIC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBvbiBXaW5kb3dzIGEgbmV0d29yayBzaGFy
ZSBsaWtlCisgIC8vIEZJWE1FOiBvbiBXaW5kb3dzIGEgbmV0d29yayBzaGFyZSBsaWtlCiAgIC8v
IFxcc2VydmVyXHNoYXJlIGNhbiBiZSBhIHJvb3QgZGlyZWN0b3J5LCBhbHRob3VnaCBpdCBjYW5u
b3QgYmUgdGhlCiAgIC8vIGN1cnJlbnQgZGlyZWN0b3J5LiAgSGFuZGxlIHRoaXMgcHJvcGVybHku
CiAgIHJldHVybiBwYXRobmFtZV8ubGVuZ3RoKCkgPT0gMyAmJiBJc0Fic29sdXRlUGF0aCgpOwpA
QCAtMzM4LDE0ICszNDMsMTQgQEAgYm9vbCBGaWxlUGF0aDo6Q3JlYXRlRm9sZGVyKCkgY29uc3Qg
ewogLy8gT24gV2luZG93cyBwbGF0Zm9ybSwgdXNlcyBcIGFzIHRoZSBzZXBhcmF0b3IsIG90aGVy
IHBsYXRmb3JtcyB1c2UgLy4KIEZpbGVQYXRoIEZpbGVQYXRoOjpSZW1vdmVUcmFpbGluZ1BhdGhT
ZXBhcmF0b3IoKSBjb25zdCB7CiAgIHJldHVybiBJc0RpcmVjdG9yeSgpCi0gICAgICA/IEZpbGVQ
YXRoKFN0cmluZyhwYXRobmFtZV8uY19zdHIoKSwgcGF0aG5hbWVfLmxlbmd0aCgpIC0gMSkpCisg
ICAgICA/IEZpbGVQYXRoKHBhdGhuYW1lXy5zdWJzdHIoMCwgcGF0aG5hbWVfLmxlbmd0aCgpIC0g
MSkpCiAgICAgICA6ICp0aGlzOwogfQogCiAvLyBSZW1vdmVzIGFueSByZWR1bmRhbnQgc2VwYXJh
dG9ycyB0aGF0IG1pZ2h0IGJlIGluIHRoZSBwYXRobmFtZS4KIC8vIEZvciBleGFtcGxlLCAiYmFy
Ly8vZm9vIiBiZWNvbWVzICJiYXIvZm9vIi4gRG9lcyBub3QgZWxpbWluYXRlIG90aGVyCiAvLyBy
ZWR1bmRhbmNpZXMgdGhhdCBtaWdodCBiZSBpbiBhIHBhdGhuYW1lIGludm9sdmluZyAiLiIgb3Ig
Ii4uIi4KLS8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBoYW5kbGUgV2luZG93cyBuZXR3b3JrIHNo
YXJlcyAoZS5nLiBcXHNlcnZlclxzaGFyZSkuCisvLyBGSVhNRTogaGFuZGxlIFdpbmRvd3MgbmV0
d29yayBzaGFyZXMgKGUuZy4gXFxzZXJ2ZXJcc2hhcmUpLgogdm9pZCBGaWxlUGF0aDo6Tm9ybWFs
aXplKCkgewogICBpZiAocGF0aG5hbWVfLmNfc3RyKCkgPT0gTlVMTCkgewogICAgIHBhdGhuYW1l
XyA9ICIiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWlu
dGVybmFsLWlubC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWludGVybmFs
LWlubC5oCmluZGV4IDAxNDE1ZjdkOTU5ZGNhMDcwOWZhYzE3NjYxMGRiNzM4OGY2MDQ1NTkuLjQ3
OTAwNDE0OWI0OGMyODU2NGUyMDVlMDIxMGM2YzQzMTA0MThiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgKQEAgLTI3LDI2ICsyNywx
NSBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0vLyBVdGlsaXR5IGZ1bmN0
aW9ucyBhbmQgY2xhc3NlcyB1c2VkIGJ5IHRoZSBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3Jr
LgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCisvLyBV
dGlsaXR5IGZ1bmN0aW9ucyBhbmQgY2xhc3NlcyB1c2VkIGJ5IHRoZSBHb29nbGUgQysrIHRlc3Rp
bmcgZnJhbWV3b3JrLi8vCiAvLyBUaGlzIGZpbGUgY29udGFpbnMgcHVyZWx5IEdvb2dsZSBUZXN0
J3MgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24uICBQbGVhc2UKIC8vIERPIE5PVCAjSU5DTFVERSBJ
VCBJTiBBIFVTRVIgUFJPR1JBTS4KIAogI2lmbmRlZiBHVEVTVF9TUkNfR1RFU1RfSU5URVJOQUxf
SU5MX0hfCiAjZGVmaW5lIEdURVNUX1NSQ19HVEVTVF9JTlRFUk5BTF9JTkxfSF8KIAotLy8gR1RF
U1RfSU1QTEVNRU5UQVRJT05fIGlzIGRlZmluZWQgdG8gMSBpZmYgdGhlIGN1cnJlbnQgdHJhbnNs
YXRpb24gdW5pdCBpcwotLy8gcGFydCBvZiBHb29nbGUgVGVzdCdzIGltcGxlbWVudGF0aW9uOyBv
dGhlcndpc2UgaXQncyB1bmRlZmluZWQuCi0jaWYgIUdURVNUX0lNUExFTUVOVEFUSU9OXwotLy8g
QSB1c2VyIGlzIHRyeWluZyB0byBpbmNsdWRlIHRoaXMgZnJvbSBoaXMgY29kZSAtIGp1c3Qgc2F5
IG5vLgotI2Vycm9yICJndGVzdC1pbnRlcm5hbC1pbmwuaCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0
J3MgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24uIgotI2Vycm9yICJJdCBtdXN0IG5vdCBiZSBpbmNs
dWRlZCBleGNlcHQgYnkgR29vZ2xlIFRlc3QgaXRzZWxmLiIKLSNlbmRpZiAgLy8gR1RFU1RfSU1Q
TEVNRU5UQVRJT05fCi0KICNpZm5kZWYgX1dJTjMyX1dDRQotI2luY2x1ZGUgPGVycm5vLmg+Cisj
IGluY2x1ZGUgPGVycm5vLmg+CiAjZW5kaWYgIC8vICFfV0lOMzJfV0NFCiAjaW5jbHVkZSA8c3Rk
ZGVmLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+ICAvLyBGb3Igc3RydG9sbC9fc3RydG91bDY0L21h
bGxvYy9mcmVlLgpAQCAtNTYsMTQgKzQ1LDIyIEBACiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1
ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KKyNp
bmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCisKKyNpZiBHVEVTVF9DQU5fU1RS
RUFNX1JFU1VMVFNfCisjIGluY2x1ZGUgPGFycGEvaW5ldC5oPiAgLy8gTk9MSU5UCisjIGluY2x1
ZGUgPG5ldGRiLmg+ICAvLyBOT0xJTlQKKyNlbmRpZgogCiAjaWYgR1RFU1RfT1NfV0lORE9XUwot
I2luY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIEZvciBEV09SRC4KKyMgaW5jbHVkZSA8d2luZG93cy5o
PiAgLy8gTk9MSU5UCiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAotI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGkuaD4KKyNp
bmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgorCitH
VEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MjUxIFwKKy8qIGNsYXNzIEEgbmVlZHMg
dG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50cyBvZiBjbGFzcyBCICov
KQogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKQEAgLTg5LDExICs4NiwxNCBAQCBjb25zdCBjaGFy
IGtGaWx0ZXJGbGFnW10gPSAiZmlsdGVyIjsKIGNvbnN0IGNoYXIga0xpc3RUZXN0c0ZsYWdbXSA9
ICJsaXN0X3Rlc3RzIjsKIGNvbnN0IGNoYXIga091dHB1dEZsYWdbXSA9ICJvdXRwdXQiOwogY29u
c3QgY2hhciBrUHJpbnRUaW1lRmxhZ1tdID0gInByaW50X3RpbWUiOworY29uc3QgY2hhciBrUHJp
bnRVVEY4RmxhZ1tdID0gInByaW50X3V0ZjgiOwogY29uc3QgY2hhciBrUmFuZG9tU2VlZEZsYWdb
XSA9ICJyYW5kb21fc2VlZCI7CiBjb25zdCBjaGFyIGtSZXBlYXRGbGFnW10gPSAicmVwZWF0IjsK
IGNvbnN0IGNoYXIga1NodWZmbGVGbGFnW10gPSAic2h1ZmZsZSI7CiBjb25zdCBjaGFyIGtTdGFj
a1RyYWNlRGVwdGhGbGFnW10gPSAic3RhY2tfdHJhY2VfZGVwdGgiOworY29uc3QgY2hhciBrU3Ry
ZWFtUmVzdWx0VG9GbGFnW10gPSAic3RyZWFtX3Jlc3VsdF90byI7CiBjb25zdCBjaGFyIGtUaHJv
d09uRmFpbHVyZUZsYWdbXSA9ICJ0aHJvd19vbl9mYWlsdXJlIjsKK2NvbnN0IGNoYXIga0ZsYWdm
aWxlRmxhZ1tdID0gImZsYWdmaWxlIjsKIAogLy8gQSB2YWxpZCByYW5kb20gc2VlZCBtdXN0IGJl
IGluIFsxLCBrTWF4UmFuZG9tU2VlZF0uCiBjb25zdCBpbnQga01heFJhbmRvbVNlZWQgPSA5OTk5
OTsKQEAgLTExMSw2ICsxMTEsMTIgQEAgR1RFU1RfQVBJXyBib29sIFNob3VsZFVzZUNvbG9yKGJv
b2wgc3Rkb3V0X2lzX3R0eSk7CiAvLyBGb3JtYXRzIHRoZSBnaXZlbiB0aW1lIGluIG1pbGxpc2Vj
b25kcyBhcyBzZWNvbmRzLgogR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBGb3JtYXRUaW1lSW5NaWxs
aXNBc1NlY29uZHMoVGltZUluTWlsbGlzIG1zKTsKIAorLy8gQ29udmVydHMgdGhlIGdpdmVuIHRp
bWUgaW4gbWlsbGlzZWNvbmRzIHRvIGEgZGF0ZSBzdHJpbmcgaW4gdGhlIElTTyA4NjAxCisvLyBm
b3JtYXQsIHdpdGhvdXQgdGhlIHRpbWV6b25lIGluZm9ybWF0aW9uLiAgTi5CLjogZHVlIHRvIHRo
ZSB1c2UgdGhlCisvLyBub24tcmVlbnRyYW50IGxvY2FsdGltZSgpIGZ1bmN0aW9uLCB0aGlzIGZ1
bmN0aW9uIGlzIG5vdCB0aHJlYWQgc2FmZS4gIERvCisvLyBub3QgdXNlIGl0IGluIGFueSBjb2Rl
IHRoYXQgY2FuIGJlIGNhbGxlZCBmcm9tIG11bHRpcGxlIHRocmVhZHMuCitHVEVTVF9BUElfIHN0
ZDo6c3RyaW5nIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKFRpbWVJbk1pbGxpcyBt
cyk7CisKIC8vIFBhcnNlcyBhIHN0cmluZyBmb3IgYW4gSW50MzIgZmxhZywgaW4gdGhlIGZvcm0g
b2YgIi0tZmxhZz12YWx1ZSIuCiAvLwogLy8gT24gc3VjY2Vzcywgc3RvcmVzIHRoZSB2YWx1ZSBv
ZiB0aGUgZmxhZyBpbiAqdmFsdWUsIGFuZCByZXR1cm5zCkBAIC0xNjEsMTAgKzE2NywxMiBAQCBj
bGFzcyBHVGVzdEZsYWdTYXZlciB7CiAgICAgbGlzdF90ZXN0c18gPSBHVEVTVF9GTEFHKGxpc3Rf
dGVzdHMpOwogICAgIG91dHB1dF8gPSBHVEVTVF9GTEFHKG91dHB1dCk7CiAgICAgcHJpbnRfdGlt
ZV8gPSBHVEVTVF9GTEFHKHByaW50X3RpbWUpOworICAgIHByaW50X3V0ZjhfID0gR1RFU1RfRkxB
RyhwcmludF91dGY4KTsKICAgICByYW5kb21fc2VlZF8gPSBHVEVTVF9GTEFHKHJhbmRvbV9zZWVk
KTsKICAgICByZXBlYXRfID0gR1RFU1RfRkxBRyhyZXBlYXQpOwogICAgIHNodWZmbGVfID0gR1RF
U1RfRkxBRyhzaHVmZmxlKTsKICAgICBzdGFja190cmFjZV9kZXB0aF8gPSBHVEVTVF9GTEFHKHN0
YWNrX3RyYWNlX2RlcHRoKTsKKyAgICBzdHJlYW1fcmVzdWx0X3RvXyA9IEdURVNUX0ZMQUcoc3Ry
ZWFtX3Jlc3VsdF90byk7CiAgICAgdGhyb3dfb25fZmFpbHVyZV8gPSBHVEVTVF9GTEFHKHRocm93
X29uX2ZhaWx1cmUpOwogICB9CiAKQEAgLTE4MSw0MSArMTg5LDQ0IEBAIGNsYXNzIEdUZXN0Rmxh
Z1NhdmVyIHsKICAgICBHVEVTVF9GTEFHKGxpc3RfdGVzdHMpID0gbGlzdF90ZXN0c187CiAgICAg
R1RFU1RfRkxBRyhvdXRwdXQpID0gb3V0cHV0XzsKICAgICBHVEVTVF9GTEFHKHByaW50X3RpbWUp
ID0gcHJpbnRfdGltZV87CisgICAgR1RFU1RfRkxBRyhwcmludF91dGY4KSA9IHByaW50X3V0Zjhf
OwogICAgIEdURVNUX0ZMQUcocmFuZG9tX3NlZWQpID0gcmFuZG9tX3NlZWRfOwogICAgIEdURVNU
X0ZMQUcocmVwZWF0KSA9IHJlcGVhdF87CiAgICAgR1RFU1RfRkxBRyhzaHVmZmxlKSA9IHNodWZm
bGVfOwogICAgIEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpID0gc3RhY2tfdHJhY2VfZGVw
dGhfOworICAgIEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykgPSBzdHJlYW1fcmVzdWx0X3Rv
XzsKICAgICBHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdGhyb3dfb25fZmFpbHVyZV87
CiAgIH0KKwogIHByaXZhdGU6CiAgIC8vIEZpZWxkcyBmb3Igc2F2aW5nIHRoZSBvcmlnaW5hbCB2
YWx1ZXMgb2YgZmxhZ3MuCiAgIGJvb2wgYWxzb19ydW5fZGlzYWJsZWRfdGVzdHNfOwogICBib29s
IGJyZWFrX29uX2ZhaWx1cmVfOwogICBib29sIGNhdGNoX2V4Y2VwdGlvbnNfOwotICBTdHJpbmcg
Y29sb3JfOwotICBTdHJpbmcgZGVhdGhfdGVzdF9zdHlsZV87CisgIHN0ZDo6c3RyaW5nIGNvbG9y
XzsKKyAgc3RkOjpzdHJpbmcgZGVhdGhfdGVzdF9zdHlsZV87CiAgIGJvb2wgZGVhdGhfdGVzdF91
c2VfZm9ya187Ci0gIFN0cmluZyBmaWx0ZXJfOwotICBTdHJpbmcgaW50ZXJuYWxfcnVuX2RlYXRo
X3Rlc3RfOworICBzdGQ6OnN0cmluZyBmaWx0ZXJfOworICBzdGQ6OnN0cmluZyBpbnRlcm5hbF9y
dW5fZGVhdGhfdGVzdF87CiAgIGJvb2wgbGlzdF90ZXN0c187Ci0gIFN0cmluZyBvdXRwdXRfOwor
ICBzdGQ6OnN0cmluZyBvdXRwdXRfOwogICBib29sIHByaW50X3RpbWVfOworICBib29sIHByaW50
X3V0ZjhfOwogICBpbnRlcm5hbDo6SW50MzIgcmFuZG9tX3NlZWRfOwogICBpbnRlcm5hbDo6SW50
MzIgcmVwZWF0XzsKICAgYm9vbCBzaHVmZmxlXzsKICAgaW50ZXJuYWw6OkludDMyIHN0YWNrX3Ry
YWNlX2RlcHRoXzsKKyAgc3RkOjpzdHJpbmcgc3RyZWFtX3Jlc3VsdF90b187CiAgIGJvb2wgdGhy
b3dfb25fZmFpbHVyZV87CiB9IEdURVNUX0FUVFJJQlVURV9VTlVTRURfOwogCiAvLyBDb252ZXJ0
cyBhIFVuaWNvZGUgY29kZSBwb2ludCB0byBhIG5hcnJvdyBzdHJpbmcgaW4gVVRGLTggZW5jb2Rp
bmcuCiAvLyBjb2RlX3BvaW50IHBhcmFtZXRlciBpcyBvZiB0eXBlIFVJbnQzMiBiZWNhdXNlIHdj
aGFyX3QgbWF5IG5vdCBiZQogLy8gd2lkZSBlbm91Z2ggdG8gY29udGFpbiBhIGNvZGUgcG9pbnQu
Ci0vLyBUaGUgb3V0cHV0IGJ1ZmZlciBzdHIgbXVzdCBjb250YWludCBhdCBsZWFzdCAzMiBjaGFy
YWN0ZXJzLgotLy8gVGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIGFkZHJlc3Mgb2YgdGhlIG91dHB1
dCBidWZmZXIuCiAvLyBJZiB0aGUgY29kZV9wb2ludCBpcyBub3QgYSB2YWxpZCBVbmljb2RlIGNv
ZGUgcG9pbnQKLS8vIChpLmUuIG91dHNpZGUgb2YgVW5pY29kZSByYW5nZSBVKzAgdG8gVSsxMEZG
RkYpIGl0IHdpbGwgYmUgb3V0cHV0Ci0vLyBhcyAnKEludmFsaWQgVW5pY29kZSAweFhYWFhYWFhY
KScuCi1HVEVTVF9BUElfIGNoYXIqIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9wb2ludCwg
Y2hhciogc3RyKTsKKy8vIChpLmUuIG91dHNpZGUgb2YgVW5pY29kZSByYW5nZSBVKzAgdG8gVSsx
MEZGRkYpIGl0IHdpbGwgYmUgY29udmVydGVkCisvLyB0byAiKEludmFsaWQgVW5pY29kZSAweFhY
WFhYWFhYKSIuCitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIENvZGVQb2ludFRvVXRmOChVSW50MzIg
Y29kZV9wb2ludCk7CiAKIC8vIENvbnZlcnRzIGEgd2lkZSBzdHJpbmcgdG8gYSBuYXJyb3cgc3Ry
aW5nIGluIFVURi04IGVuY29kaW5nLgogLy8gVGhlIHdpZGUgc3RyaW5nIGlzIGFzc3VtZWQgdG8g
aGF2ZSB0aGUgZm9sbG93aW5nIGVuY29kaW5nOgpAQCAtMjMwLDcgKzI0MSw3IEBAIEdURVNUX0FQ
SV8gY2hhciogQ29kZVBvaW50VG9VdGY4KFVJbnQzMiBjb2RlX3BvaW50LCBjaGFyKiBzdHIpOwog
Ly8gYXMgJyhJbnZhbGlkIFVuaWNvZGUgMHhYWFhYWFhYWCknLiBJZiB0aGUgc3RyaW5nIGlzIGlu
IFVURjE2IGVuY29kaW5nCiAvLyBhbmQgY29udGFpbnMgaW52YWxpZCBVVEYtMTYgc3Vycm9nYXRl
IHBhaXJzLCB2YWx1ZXMgaW4gdGhvc2UgcGFpcnMKIC8vIHdpbGwgYmUgZW5jb2RlZCBhcyBpbmRp
dmlkdWFsIFVuaWNvZGUgY2hhcmFjdGVycyBmcm9tIEJhc2ljIE5vcm1hbCBQbGFuZS4KLUdURVNU
X0FQSV8gU3RyaW5nIFdpZGVTdHJpbmdUb1V0ZjgoY29uc3Qgd2NoYXJfdCogc3RyLCBpbnQgbnVt
X2NoYXJzKTsKK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgV2lkZVN0cmluZ1RvVXRmOChjb25zdCB3
Y2hhcl90KiBzdHIsIGludCBudW1fY2hhcnMpOwogCiAvLyBSZWFkcyB0aGUgR1RFU1RfU0hBUkRf
U1RBVFVTX0ZJTEUgZW52aXJvbm1lbnQgdmFyaWFibGUsIGFuZCBjcmVhdGVzIHRoZSBmaWxlCiAv
LyBpZiB0aGUgdmFyaWFibGUgaXMgcHJlc2VudC4gSWYgYSBmaWxlIGFscmVhZHkgZXhpc3RzIGF0
IHRoaXMgbG9jYXRpb24sIHRoaXMKQEAgLTI2Niw3ICsyNzcsMTQgQEAgR1RFU1RfQVBJXyBib29s
IFNob3VsZFJ1blRlc3RPblNoYXJkKAogLy8gdGhlIGdpdmVuIHByZWRpY2F0ZS4KIHRlbXBsYXRl
IDxjbGFzcyBDb250YWluZXIsIHR5cGVuYW1lIFByZWRpY2F0ZT4KIGlubGluZSBpbnQgQ291bnRJ
Zihjb25zdCBDb250YWluZXImIGMsIFByZWRpY2F0ZSBwcmVkaWNhdGUpIHsKLSAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4oc3RkOjpjb3VudF9pZihjLmJlZ2luKCksIGMuZW5kKCksIHByZWRpY2F0
ZSkpOworICAvLyBJbXBsZW1lbnRlZCBhcyBhbiBleHBsaWNpdCBsb29wIHNpbmNlIHN0ZDo6Y291
bnRfaWYoKSBpbiBsaWJDc3RkIG9uCisgIC8vIFNvbGFyaXMgaGFzIGEgbm9uLXN0YW5kYXJkIHNp
Z25hdHVyZS4KKyAgaW50IGNvdW50ID0gMDsKKyAgZm9yICh0eXBlbmFtZSBDb250YWluZXI6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gYy5iZWdpbigpOyBpdCAhPSBjLmVuZCgpOyArK2l0KSB7CisgICAg
aWYgKHByZWRpY2F0ZSgqaXQpKQorICAgICAgKytjb3VudDsKKyAgfQorICByZXR1cm4gY291bnQ7
CiB9CiAKIC8vIEFwcGxpZXMgYSBmdW5jdGlvbi9mdW5jdG9yIHRvIGVhY2ggZWxlbWVudCBpbiB0
aGUgY29udGFpbmVyLgpAQCAtMzI3LDk1ICszNDUsMTUgQEAgY2xhc3MgVGVzdFByb3BlcnR5S2V5
SXMgewogICAvLyBDb25zdHJ1Y3Rvci4KICAgLy8KICAgLy8gVGVzdFByb3BlcnR5S2V5SXMgaGFz
IE5PIGRlZmF1bHQgY29uc3RydWN0b3IuCi0gIGV4cGxpY2l0IFRlc3RQcm9wZXJ0eUtleUlzKGNv
bnN0IGNoYXIqIGtleSkKLSAgICAgIDoga2V5XyhrZXkpIHt9CisgIGV4cGxpY2l0IFRlc3RQcm9w
ZXJ0eUtleUlzKGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXkpIDoga2V5XyhrZXkpIHt9CiAKICAgLy8g
UmV0dXJucyB0cnVlIGlmZiB0aGUgdGVzdCBuYW1lIG9mIHRlc3QgcHJvcGVydHkgbWF0Y2hlcyBv
biBrZXlfLgogICBib29sIG9wZXJhdG9yKCkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3Bl
cnR5KSBjb25zdCB7Ci0gICAgcmV0dXJuIFN0cmluZyh0ZXN0X3Byb3BlcnR5LmtleSgpKS5Db21w
YXJlKGtleV8pID09IDA7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIFN0cmluZyBrZXlfOwotfTsKLQot
Y2xhc3MgVGVzdEluZm9JbXBsIHsKLSBwdWJsaWM6Ci0gIFRlc3RJbmZvSW1wbChUZXN0SW5mbyog
cGFyZW50LCBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9jb21tZW50LAotICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogY29tbWVudCwgVHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCi0gICAgICAg
ICAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5KTsKLSAgflRlc3RJbmZv
SW1wbCgpOwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRlc3Qgc2hvdWxkIHJ1bi4KLSAg
Ym9vbCBzaG91bGRfcnVuKCkgY29uc3QgeyByZXR1cm4gc2hvdWxkX3J1bl87IH0KLQotICAvLyBT
ZXRzIHRoZSBzaG91bGRfcnVuIG1lbWJlci4KLSAgdm9pZCBzZXRfc2hvdWxkX3J1bihib29sIHNo
b3VsZCkgeyBzaG91bGRfcnVuXyA9IHNob3VsZDsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiB0
aGlzIHRlc3QgaXMgZGlzYWJsZWQuIERpc2FibGVkIHRlc3RzIGFyZSBub3QgcnVuLgotICBib29s
IGlzX2Rpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gaXNfZGlzYWJsZWRfOyB9Ci0KLSAgLy8gU2V0
cyB0aGUgaXNfZGlzYWJsZWQgbWVtYmVyLgotICB2b2lkIHNldF9pc19kaXNhYmxlZChib29sIGlz
KSB7IGlzX2Rpc2FibGVkXyA9IGlzOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGVz
dCBtYXRjaGVzIHRoZSBmaWx0ZXIgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLgotICBib29sIG1hdGNo
ZXNfZmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbWF0Y2hlc19maWx0ZXJfOyB9Ci0KLSAgLy8gU2V0
cyB0aGUgbWF0Y2hlc19maWx0ZXIgbWVtYmVyLgotICB2b2lkIHNldF9tYXRjaGVzX2ZpbHRlcihi
b29sIG1hdGNoZXMpIHsgbWF0Y2hlc19maWx0ZXJfID0gbWF0Y2hlczsgfQotCi0gIC8vIFJldHVy
bnMgdGhlIHRlc3QgY2FzZSBuYW1lLgotICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIHRlc3RfY2FzZV9uYW1lXy5jX3N0cigpOyB9Ci0KLSAgLy8gUmV0dXJucyB0
aGUgdGVzdCBuYW1lLgotICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbmFtZV8u
Y19zdHIoKTsgfQotCi0gIC8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBjb21tZW50LgotICBjb25z
dCBjaGFyKiB0ZXN0X2Nhc2VfY29tbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRlc3RfY2FzZV9jb21t
ZW50Xy5jX3N0cigpOyB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBjb21tZW50LgotICBjb25z
dCBjaGFyKiBjb21tZW50KCkgY29uc3QgeyByZXR1cm4gY29tbWVudF8uY19zdHIoKTsgfQotCi0g
IC8vIFJldHVybnMgdGhlIElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuCi0gIFR5cGVJZCBm
aXh0dXJlX2NsYXNzX2lkKCkgY29uc3QgeyByZXR1cm4gZml4dHVyZV9jbGFzc19pZF87IH0KLQot
ICAvLyBSZXR1cm5zIHRoZSB0ZXN0IHJlc3VsdC4KLSAgVGVzdFJlc3VsdCogcmVzdWx0KCkgeyBy
ZXR1cm4gJnJlc3VsdF87IH0KLSAgY29uc3QgVGVzdFJlc3VsdCogcmVzdWx0KCkgY29uc3QgeyBy
ZXR1cm4gJnJlc3VsdF87IH0KLQotICAvLyBDcmVhdGVzIHRoZSB0ZXN0IG9iamVjdCwgcnVucyBp
dCwgcmVjb3JkcyBpdHMgcmVzdWx0LCBhbmQgdGhlbgotICAvLyBkZWxldGVzIGl0LgotICB2b2lk
IFJ1bigpOwotCi0gIC8vIENsZWFycyB0aGUgdGVzdCByZXN1bHQuCi0gIHZvaWQgQ2xlYXJSZXN1
bHQoKSB7IHJlc3VsdF8uQ2xlYXIoKTsgfQotCi0gIC8vIENsZWFycyB0aGUgdGVzdCByZXN1bHQg
aW4gdGhlIGdpdmVuIFRlc3RJbmZvIG9iamVjdC4KLSAgc3RhdGljIHZvaWQgQ2xlYXJUZXN0UmVz
dWx0KFRlc3RJbmZvICogdGVzdF9pbmZvKSB7Ci0gICAgdGVzdF9pbmZvLT5pbXBsKCktPkNsZWFy
UmVzdWx0KCk7CisgICAgcmV0dXJuIHRlc3RfcHJvcGVydHkua2V5KCkgPT0ga2V5XzsKICAgfQog
CiAgcHJpdmF0ZToKLSAgLy8gVGhlc2UgZmllbGRzIGFyZSBpbW11dGFibGUgcHJvcGVydGllcyBv
ZiB0aGUgdGVzdC4KLSAgVGVzdEluZm8qIGNvbnN0IHBhcmVudF87ICAgICAgICAgIC8vIFRoZSBv
d25lciBvZiB0aGlzIG9iamVjdAotICBjb25zdCBTdHJpbmcgdGVzdF9jYXNlX25hbWVfOyAgICAg
Ly8gVGVzdCBjYXNlIG5hbWUKLSAgY29uc3QgU3RyaW5nIG5hbWVfOyAgICAgICAgICAgICAgIC8v
IFRlc3QgbmFtZQotICBjb25zdCBTdHJpbmcgdGVzdF9jYXNlX2NvbW1lbnRfOyAgLy8gVGVzdCBj
YXNlIGNvbW1lbnQKLSAgY29uc3QgU3RyaW5nIGNvbW1lbnRfOyAgICAgICAgICAgIC8vIFRlc3Qg
Y29tbWVudAotICBjb25zdCBUeXBlSWQgZml4dHVyZV9jbGFzc19pZF87ICAgLy8gSUQgb2YgdGhl
IHRlc3QgZml4dHVyZSBjbGFzcwotICBib29sIHNob3VsZF9ydW5fOyAgICAgICAgICAgICAgICAg
Ly8gVHJ1ZSBpZmYgdGhpcyB0ZXN0IHNob3VsZCBydW4KLSAgYm9vbCBpc19kaXNhYmxlZF87ICAg
ICAgICAgICAgICAgIC8vIFRydWUgaWZmIHRoaXMgdGVzdCBpcyBkaXNhYmxlZAotICBib29sIG1h
dGNoZXNfZmlsdGVyXzsgICAgICAgICAgICAgLy8gVHJ1ZSBpZiB0aGlzIHRlc3QgbWF0Y2hlcyB0
aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZXItc3BlY2lmaWVk
IGZpbHRlci4KLSAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogY29uc3QgZmFjdG9yeV87ICAv
LyBUaGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB0aGUgdGVzdCBvYmplY3QKLQotICAvLyBUaGlzIGZpZWxkIGlz
IG11dGFibGUgYW5kIG5lZWRzIHRvIGJlIHJlc2V0IGJlZm9yZSBydW5uaW5nIHRoZQotICAvLyB0
ZXN0IGZvciB0aGUgc2Vjb25kIHRpbWUuCi0gIFRlc3RSZXN1bHQgcmVzdWx0XzsKLQotICBHVEVT
VF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRlc3RJbmZvSW1wbCk7CisgIHN0ZDo6c3RyaW5n
IGtleV87CiB9OwogCiAvLyBDbGFzcyBVbml0VGVzdE9wdGlvbnMuCkBAIC00MzMsMTIgKzM3MSwx
MiBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0T3B0aW9ucyB7CiAgIC8vIEZ1bmN0aW9ucyBm
b3IgcHJvY2Vzc2luZyB0aGUgZ3Rlc3Rfb3V0cHV0IGZsYWcuCiAKICAgLy8gUmV0dXJucyB0aGUg
b3V0cHV0IGZvcm1hdCwgb3IgIiIgZm9yIG5vcm1hbCBwcmludGVkIG91dHB1dC4KLSAgc3RhdGlj
IFN0cmluZyBHZXRPdXRwdXRGb3JtYXQoKTsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldE91dHB1
dEZvcm1hdCgpOwogCiAgIC8vIFJldHVybnMgdGhlIGFic29sdXRlIHBhdGggb2YgdGhlIHJlcXVl
c3RlZCBvdXRwdXQgZmlsZSwgb3IgdGhlCiAgIC8vIGRlZmF1bHQgKHRlc3RfZGV0YWlsLnhtbCBp
biB0aGUgb3JpZ2luYWwgd29ya2luZyBkaXJlY3RvcnkpIGlmCiAgIC8vIG5vbmUgd2FzIGV4cGxp
Y2l0bHkgc3BlY2lmaWVkLgotICBzdGF0aWMgU3RyaW5nIEdldEFic29sdXRlUGF0aFRvT3V0cHV0
RmlsZSgpOworICBzdGF0aWMgc3RkOjpzdHJpbmcgR2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxl
KCk7CiAKICAgLy8gRnVuY3Rpb25zIGZvciBwcm9jZXNzaW5nIHRoZSBndGVzdF9maWx0ZXIgZmxh
Zy4KIApAQCAtNDUxLDggKzM4OSw4IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RPcHRpb25z
IHsKIAogICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB1c2VyLXNwZWNpZmllZCBmaWx0ZXIgbWF0
Y2hlcyB0aGUgdGVzdCBjYXNlCiAgIC8vIG5hbWUgYW5kIHRoZSB0ZXN0IG5hbWUuCi0gIHN0YXRp
YyBib29sIEZpbHRlck1hdGNoZXNUZXN0KGNvbnN0IFN0cmluZyAmdGVzdF9jYXNlX25hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyAmdGVzdF9uYW1lKTsK
KyAgc3RhdGljIGJvb2wgRmlsdGVyTWF0Y2hlc1Rlc3QoY29uc3Qgc3RkOjpzdHJpbmcgJnRlc3Rf
Y2FzZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyAmdGVzdF9uYW1lKTsKIAogI2lmIEdURVNUX09TX1dJTkRPV1MKICAgLy8gRnVuY3Rpb24g
Zm9yIHN1cHBvcnRpbmcgdGhlIGd0ZXN0X2NhdGNoX2V4Y2VwdGlvbiBmbGFnLgpAQCAtNDY1LDcg
KzQwMyw3IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RPcHRpb25zIHsKIAogICAvLyBSZXR1
cm5zIHRydWUgaWYgIm5hbWUiIG1hdGNoZXMgdGhlICc6JyBzZXBhcmF0ZWQgbGlzdCBvZiBnbG9i
LXN0eWxlCiAgIC8vIGZpbHRlcnMgaW4gImZpbHRlciIuCi0gIHN0YXRpYyBib29sIE1hdGNoZXNG
aWx0ZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBjaGFyKiBmaWx0ZXIpOworICBzdGF0aWMg
Ym9vbCBNYXRjaGVzRmlsdGVyKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBjb25zdCBjaGFyKiBm
aWx0ZXIpOwogfTsKIAogLy8gUmV0dXJucyB0aGUgY3VycmVudCBhcHBsaWNhdGlvbidzIG5hbWUs
IHJlbW92aW5nIGRpcmVjdG9yeSBwYXRoIGlmIHRoYXQKQEAgLTQ3OCwxOSArNDE2LDIzIEBAIGNs
YXNzIE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSB7CiAgIE9zU3RhY2tUcmFjZUdldHRlcklu
dGVyZmFjZSgpIHt9CiAgIHZpcnR1YWwgfk9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSgpIHt9
CiAKLSAgLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBhcyBhIFN0cmluZy4g
IFBhcmFtZXRlcnM6CisgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMg
YW4gc3RkOjpzdHJpbmcuICBQYXJhbWV0ZXJzOgogICAvLwogICAvLyAgIG1heF9kZXB0aCAgLSB0
aGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIHRvIGJlIGluY2x1ZGVkCiAgIC8vICAg
ICAgICAgICAgICAgIGluIHRoZSB0cmFjZS4KICAgLy8gICBza2lwX2NvdW50IC0gdGhlIG51bWJl
ciBvZiB0b3AgZnJhbWVzIHRvIGJlIHNraXBwZWQ7IGRvZXNuJ3QgY291bnQKICAgLy8gICAgICAg
ICAgICAgICAgYWdhaW5zdCBtYXhfZGVwdGguCi0gIHZpcnR1YWwgU3RyaW5nIEN1cnJlbnRTdGFj
a1RyYWNlKGludCBtYXhfZGVwdGgsIGludCBza2lwX2NvdW50KSA9IDA7CisgIHZpcnR1YWwgc3Rk
OjpzdHJpbmcgQ3VycmVudFN0YWNrVHJhY2UoaW50IG1heF9kZXB0aCwgaW50IHNraXBfY291bnQp
ID0gMDsKIAogICAvLyBVcG9uTGVhdmluZ0dUZXN0KCkgc2hvdWxkIGJlIGNhbGxlZCBpbW1lZGlh
dGVseSBiZWZvcmUgR29vZ2xlIFRlc3QgY2FsbHMKICAgLy8gdXNlciBjb2RlLiBJdCBzYXZlcyBz
b21lIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IHN0YWNrIHRoYXQKICAgLy8gQ3VycmVu
dFN0YWNrVHJhY2UoKSB3aWxsIHVzZSB0byBmaW5kIGFuZCBoaWRlIEdvb2dsZSBUZXN0IHN0YWNr
IGZyYW1lcy4KICAgdmlydHVhbCB2b2lkIFVwb25MZWF2aW5nR1Rlc3QoKSA9IDA7CiAKKyAgLy8g
VGhpcyBzdHJpbmcgaXMgaW5zZXJ0ZWQgaW4gcGxhY2Ugb2Ygc3RhY2sgZnJhbWVzIHRoYXQgYXJl
IHBhcnQgb2YKKyAgLy8gR29vZ2xlIFRlc3QncyBpbXBsZW1lbnRhdGlvbi4KKyAgc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnN0IGtFbGlkZWRGcmFtZXNNYXJrZXI7CisKICBwcml2YXRlOgogICBHVEVT
VF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSk7
CiB9OwpAQCAtNDk4LDIyICs0NDAsMjEgQEAgY2xhc3MgT3NTdGFja1RyYWNlR2V0dGVySW50ZXJm
YWNlIHsKIC8vIEEgd29ya2luZyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgT3NTdGFja1RyYWNlR2V0
dGVySW50ZXJmYWNlIGludGVyZmFjZS4KIGNsYXNzIE9zU3RhY2tUcmFjZUdldHRlciA6IHB1Ymxp
YyBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UgewogIHB1YmxpYzoKLSAgT3NTdGFja1RyYWNl
R2V0dGVyKCkgOiBjYWxsZXJfZnJhbWVfKE5VTEwpIHt9Ci0gIHZpcnR1YWwgU3RyaW5nIEN1cnJl
bnRTdGFja1RyYWNlKGludCBtYXhfZGVwdGgsIGludCBza2lwX2NvdW50KTsKLSAgdmlydHVhbCB2
b2lkIFVwb25MZWF2aW5nR1Rlc3QoKTsKKyAgT3NTdGFja1RyYWNlR2V0dGVyKCkge30KIAotICAv
LyBUaGlzIHN0cmluZyBpcyBpbnNlcnRlZCBpbiBwbGFjZSBvZiBzdGFjayBmcmFtZXMgdGhhdCBh
cmUgcGFydCBvZgotICAvLyBHb29nbGUgVGVzdCdzIGltcGxlbWVudGF0aW9uLgotICBzdGF0aWMg
Y29uc3QgY2hhciogY29uc3Qga0VsaWRlZEZyYW1lc01hcmtlcjsKKyAgdmlydHVhbCBzdGQ6OnN0
cmluZyBDdXJyZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCk7Cisg
IHZpcnR1YWwgdm9pZCBVcG9uTGVhdmluZ0dUZXN0KCk7CiAKICBwcml2YXRlOgotICBNdXRleCBt
dXRleF87ICAvLyBwcm90ZWN0cyBhbGwgaW50ZXJuYWwgc3RhdGUKKyNpZiBHVEVTVF9IQVNfQUJT
TAorICBNdXRleCBtdXRleF87ICAvLyBQcm90ZWN0cyBhbGwgaW50ZXJuYWwgc3RhdGUuCiAKICAg
Ly8gV2Ugc2F2ZSB0aGUgc3RhY2sgZnJhbWUgYmVsb3cgdGhlIGZyYW1lIHRoYXQgY2FsbHMgdXNl
ciBjb2RlLgogICAvLyBXZSBkbyB0aGlzIGJlY2F1c2UgdGhlIGFkZHJlc3Mgb2YgdGhlIGZyYW1l
IGltbWVkaWF0ZWx5IGJlbG93CiAgIC8vIHRoZSB1c2VyIGNvZGUgY2hhbmdlcyBiZXR3ZWVuIHRo
ZSBjYWxsIHRvIFVwb25MZWF2aW5nR1Rlc3QoKQotICAvLyBhbmQgYW55IGNhbGxzIHRvIEN1cnJl
bnRTdGFja1RyYWNlKCkgZnJvbSB3aXRoaW4gdGhlIHVzZXIgY29kZS4KLSAgdm9pZCogY2FsbGVy
X2ZyYW1lXzsKKyAgLy8gYW5kIGFueSBjYWxscyB0byB0aGUgc3RhY2sgdHJhY2UgY29kZSBmcm9t
IHdpdGhpbiB0aGUgdXNlciBjb2RlLgorICB2b2lkKiBjYWxsZXJfZnJhbWVfID0gbnVsbHB0cjsK
KyNlbmRpZiAgLy8gR1RFU1RfSEFTX0FCU0wKIAogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKE9zU3RhY2tUcmFjZUdldHRlcik7CiB9OwpAQCAtNTIyLDcgKzQ2Myw3IEBAIGNsYXNz
IE9zU3RhY2tUcmFjZUdldHRlciA6IHB1YmxpYyBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2Ug
ewogc3RydWN0IFRyYWNlSW5mbyB7CiAgIGNvbnN0IGNoYXIqIGZpbGU7CiAgIGludCBsaW5lOwot
ICBTdHJpbmcgbWVzc2FnZTsKKyAgc3RkOjpzdHJpbmcgbWVzc2FnZTsKIH07CiAKIC8vIFRoaXMg
aXMgdGhlIGRlZmF1bHQgZ2xvYmFsIHRlc3QgcGFydCByZXN1bHQgcmVwb3J0ZXIgdXNlZCBpbiBV
bml0VGVzdEltcGwuCkBAIC02MDYsMTUgKzU0NywyNSBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRU
ZXN0SW1wbCB7CiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVzdHMuCiAgIGludCBm
YWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0OwogCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNh
YmxlZCB0ZXN0cyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhNTCByZXBvcnQuCisgIGlu
dCByZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdDsKKwogICAvLyBHZXRzIHRo
ZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMuCiAgIGludCBkaXNhYmxlZF90ZXN0X2NvdW50KCkg
Y29uc3Q7CiAKKyAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50ZWQgaW4g
dGhlIFhNTCByZXBvcnQuCisgIGludCByZXBvcnRhYmxlX3Rlc3RfY291bnQoKSBjb25zdDsKKwog
ICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgYWxsIHRlc3RzLgogICBpbnQgdG90YWxfdGVzdF9jb3Vu
dCgpIGNvbnN0OwogCiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0cyB0aGF0IHNob3VsZCBy
dW4uCiAgIGludCB0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0OwogCisgIC8vIEdldHMgdGhlIHRp
bWUgb2YgdGhlIHRlc3QgcHJvZ3JhbSBzdGFydCwgaW4gbXMgZnJvbSB0aGUgc3RhcnQgb2YgdGhl
CisgIC8vIFVOSVggZXBvY2guCisgIFRpbWVJbk1pbGxpcyBzdGFydF90aW1lc3RhbXAoKSBjb25z
dCB7IHJldHVybiBzdGFydF90aW1lc3RhbXBfOyB9CisKICAgLy8gR2V0cyB0aGUgZWxhcHNlZCB0
aW1lLCBpbiBtaWxsaXNlY29uZHMuCiAgIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3RpbWUoKSBjb25z
dCB7IHJldHVybiBlbGFwc2VkX3RpbWVfOyB9CiAKQEAgLTY2Myw3ICs2MTQsNyBAQCBjbGFzcyBH
VEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vIGdldHRlciwgYW5kIHJldHVybnMgaXQuCiAg
IE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSogb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCk7CiAK
LSAgLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBhcyBhIFN0cmluZy4KKyAg
Ly8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBhcyBhbiBzdGQ6OnN0cmluZy4K
ICAgLy8KICAgLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNs
dWRlZCBpcyBzcGVjaWZpZWQgYnkKICAgLy8gdGhlIGd0ZXN0X3N0YWNrX3RyYWNlX2RlcHRoIGZs
YWcuICBUaGUgc2tpcF9jb3VudCBwYXJhbWV0ZXIKQEAgLTY3Myw3ICs2MjQsNyBAQCBjbGFzcyBH
VEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vIEZvciBleGFtcGxlLCBpZiBGb28oKSBjYWxs
cyBCYXIoKSwgd2hpY2ggaW4gdHVybiBjYWxscwogICAvLyBDdXJyZW50T3NTdGFja1RyYWNlRXhj
ZXB0VG9wKDEpLCBGb28oKSB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZQogICAvLyB0cmFjZSBidXQg
QmFyKCkgYW5kIEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoKSB3b24ndC4KLSAgU3RyaW5n
IEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoaW50IHNraXBfY291bnQpOworICBzdGQ6OnN0
cmluZyBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKGludCBza2lwX2NvdW50KSBHVEVTVF9O
T19JTkxJTkVfOwogCiAgIC8vIEZpbmRzIGFuZCByZXR1cm5zIGEgVGVzdENhc2Ugd2l0aCB0aGUg
Z2l2ZW4gbmFtZS4gIElmIG9uZSBkb2Vzbid0CiAgIC8vIGV4aXN0LCBjcmVhdGVzIG9uZSBhbmQg
cmV0dXJucyBpdC4KQEAgLTY4MSwxMCArNjMyLDEyIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRl
c3RJbXBsIHsKICAgLy8gQXJndW1lbnRzOgogICAvLwogICAvLyAgIHRlc3RfY2FzZV9uYW1lOiBu
YW1lIG9mIHRoZSB0ZXN0IGNhc2UKKyAgLy8gICB0eXBlX3BhcmFtOiAgICAgdGhlIG5hbWUgb2Yg
dGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorICAvLyAgICAgICAgICAgICAg
ICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCiAg
IC8vICAgc2V0X3VwX3RjOiAgICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1
cCB0aGUgdGVzdCBjYXNlCiAgIC8vICAgdGVhcl9kb3duX3RjOiAgIHBvaW50ZXIgdG8gdGhlIGZ1
bmN0aW9uIHRoYXQgdGVhcnMgZG93biB0aGUgdGVzdCBjYXNlCiAgIFRlc3RDYXNlKiBHZXRUZXN0
Q2FzZShjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGNvbW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiB0eXBlX3BhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgVGVzdDo6U2V0VXBUZXN0Q2Fz
ZUZ1bmMgc2V0X3VwX3RjLAogICAgICAgICAgICAgICAgICAgICAgICAgVGVzdDo6VGVhckRvd25U
ZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3RjKTsKIApAQCAtNjk3LDcgKzY1MCw3IEBAIGNsYXNzIEdU
RVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gICB0ZXN0X2luZm86ICAgIHRoZSBUZXN0SW5m
byBvYmplY3QKICAgdm9pZCBBZGRUZXN0SW5mbyhUZXN0OjpTZXRVcFRlc3RDYXNlRnVuYyBzZXRf
dXBfdGMsCiAgICAgICAgICAgICAgICAgICAgVGVzdDo6VGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVh
cl9kb3duX3RjLAotICAgICAgICAgICAgICAgICAgIFRlc3RJbmZvICogdGVzdF9pbmZvKSB7Cisg
ICAgICAgICAgICAgICAgICAgVGVzdEluZm8qIHRlc3RfaW5mbykgewogICAgIC8vIEluIG9yZGVy
IHRvIHN1cHBvcnQgdGhyZWFkLXNhZmUgZGVhdGggdGVzdHMsIHdlIG5lZWQgdG8KICAgICAvLyBy
ZW1lbWJlciB0aGUgb3JpZ2luYWwgd29ya2luZyBkaXJlY3Rvcnkgd2hlbiB0aGUgdGVzdCBwcm9n
cmFtCiAgICAgLy8gd2FzIGZpcnN0IGludm9rZWQuICBXZSBjYW5ub3QgZG8gdGhpcyBpbiBSVU5f
QUxMX1RFU1RTKCksIGFzCkBAIC03MTIsMTggKzY2NSwxNiBAQCBjbGFzcyBHVEVTVF9BUElfIFVu
aXRUZXN0SW1wbCB7CiAgICAgfQogCiAgICAgR2V0VGVzdENhc2UodGVzdF9pbmZvLT50ZXN0X2Nh
c2VfbmFtZSgpLAotICAgICAgICAgICAgICAgIHRlc3RfaW5mby0+dGVzdF9jYXNlX2NvbW1lbnQo
KSwKKyAgICAgICAgICAgICAgICB0ZXN0X2luZm8tPnR5cGVfcGFyYW0oKSwKICAgICAgICAgICAg
ICAgICBzZXRfdXBfdGMsCiAgICAgICAgICAgICAgICAgdGVhcl9kb3duX3RjKS0+QWRkVGVzdElu
Zm8odGVzdF9pbmZvKTsKICAgfQogCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgLy8gUmV0
dXJucyBQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSBvYmplY3QgdXNlZCB0byBrZWVwIHRy
YWNrIG9mCiAgIC8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgYW5kIGluc3RhbnRpYXRlIGFu
ZCByZWdpc3RlciB0aGVtLgogICBpbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0
cnkmIHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpIHsKICAgICByZXR1cm4gcGFyYW1ldGVy
aXplZF90ZXN0X3JlZ2lzdHJ5XzsKICAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVT
VAogCiAgIC8vIFNldHMgdGhlIFRlc3RDYXNlIG9iamVjdCBmb3IgdGhlIHRlc3QgdGhhdCdzIGN1
cnJlbnRseSBydW5uaW5nLgogICB2b2lkIHNldF9jdXJyZW50X3Rlc3RfY2FzZShUZXN0Q2FzZSog
YV9jdXJyZW50X3Rlc3RfY2FzZSkgewpAQCAtNzM4LDI3ICs2ODksMzUgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBVbml0VGVzdEltcGwgewogICB9CiAKICAgLy8gUmVnaXN0ZXJzIGFsbCBwYXJhbWV0ZXJp
emVkIHRlc3RzIGRlZmluZWQgdXNpbmcgVEVTVF9QIGFuZAotICAvLyBJTlNUQU5USUFURV9URVNU
X1AsIGNyZWF0aW5nIHJlZ3VsYXIgdGVzdHMgZm9yIGVhY2ggdGVzdC9wYXJhbWV0ZXIKLSAgLy8g
Y29tYmluYXRpb24uIFRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgbW9yZSB0aGVuIG9uY2U7IGl0
IGhhcwotICAvLyBndWFyZHMgcHJvdGVjdGluZyBmcm9tIHJlZ2lzdGVyaW5nIHRoZSB0ZXN0cyBt
b3JlIHRoZW4gb25jZS4KLSAgLy8gSWYgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZGlz
YWJsZWQsIFJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzCi0gIC8vIGlzIHByZXNlbnQgYnV0IGRv
ZXMgbm90aGluZy4KKyAgLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AsIGNyZWF0aW5nIHJlZ3Vs
YXIgdGVzdHMgZm9yIGVhY2ggdGVzdC9wYXJhbWV0ZXIKKyAgLy8gY29tYmluYXRpb24uIFRoaXMg
bWV0aG9kIGNhbiBiZSBjYWxsZWQgbW9yZSB0aGVuIG9uY2U7IGl0IGhhcyBndWFyZHMKKyAgLy8g
cHJvdGVjdGluZyBmcm9tIHJlZ2lzdGVyaW5nIHRoZSB0ZXN0cyBtb3JlIHRoZW4gb25jZS4gIElm
CisgIC8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGRpc2FibGVkLCBSZWdpc3RlclBh
cmFtZXRlcml6ZWRUZXN0cyBpcworICAvLyBwcmVzZW50IGJ1dCBkb2VzIG5vdGhpbmcuCiAgIHZv
aWQgUmVnaXN0ZXJQYXJhbWV0ZXJpemVkVGVzdHMoKTsKIAogICAvLyBSdW5zIGFsbCB0ZXN0cyBp
biB0aGlzIFVuaXRUZXN0IG9iamVjdCwgcHJpbnRzIHRoZSByZXN1bHQsIGFuZAotICAvLyByZXR1
cm5zIDAgaWYgYWxsIHRlc3RzIGFyZSBzdWNjZXNzZnVsLCBvciAxIG90aGVyd2lzZS4gIElmIGFu
eQotICAvLyBleGNlcHRpb24gaXMgdGhyb3duIGR1cmluZyBhIHRlc3Qgb24gV2luZG93cywgdGhp
cyB0ZXN0IGlzCi0gIC8vIGNvbnNpZGVyZWQgdG8gYmUgZmFpbGVkLCBidXQgdGhlIHJlc3Qgb2Yg
dGhlIHRlc3RzIHdpbGwgc3RpbGwgYmUKLSAgLy8gcnVuLiAgKFdlIGRpc2FibGUgZXhjZXB0aW9u
cyBvbiBMaW51eCBhbmQgTWFjIE9TIFgsIHNvIHRoZSBpc3N1ZQotICAvLyBkb2Vzbid0IGFwcGx5
IHRoZXJlLikKLSAgaW50IFJ1bkFsbFRlc3RzKCk7Ci0KLSAgLy8gQ2xlYXJzIHRoZSByZXN1bHRz
IG9mIGFsbCB0ZXN0cywgaW5jbHVkaW5nIHRoZSBhZCBob2MgdGVzdC4KLSAgdm9pZCBDbGVhclJl
c3VsdCgpIHsKKyAgLy8gcmV0dXJucyB0cnVlIGlmIGFsbCB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bC4g
IElmIGFueSBleGNlcHRpb24gaXMKKyAgLy8gdGhyb3duIGR1cmluZyBhIHRlc3QsIHRoaXMgdGVz
dCBpcyBjb25zaWRlcmVkIHRvIGJlIGZhaWxlZCwgYnV0CisgIC8vIHRoZSByZXN0IG9mIHRoZSB0
ZXN0cyB3aWxsIHN0aWxsIGJlIHJ1bi4KKyAgYm9vbCBSdW5BbGxUZXN0cygpOworCisgIC8vIENs
ZWFycyB0aGUgcmVzdWx0cyBvZiBhbGwgdGVzdHMsIGV4Y2VwdCB0aGUgYWQgaG9jIHRlc3RzLgor
ICB2b2lkIENsZWFyTm9uQWRIb2NUZXN0UmVzdWx0KCkgewogICAgIEZvckVhY2godGVzdF9jYXNl
c18sIFRlc3RDYXNlOjpDbGVhclRlc3RDYXNlUmVzdWx0KTsKKyAgfQorCisgIC8vIENsZWFycyB0
aGUgcmVzdWx0cyBvZiBhZC1ob2MgdGVzdCBhc3NlcnRpb25zLgorICB2b2lkIENsZWFyQWRIb2NU
ZXN0UmVzdWx0KCkgewogICAgIGFkX2hvY190ZXN0X3Jlc3VsdF8uQ2xlYXIoKTsKICAgfQogCisg
IC8vIEFkZHMgYSBUZXN0UHJvcGVydHkgdG8gdGhlIGN1cnJlbnQgVGVzdFJlc3VsdCBvYmplY3Qg
d2hlbiBpbnZva2VkIGluIGEKKyAgLy8gY29udGV4dCBvZiBhIHRlc3Qgb3IgYSB0ZXN0IGNhc2Us
IG9yIHRvIHRoZSBnbG9iYWwgcHJvcGVydHkgc2V0LiBJZiB0aGUKKyAgLy8gcmVzdWx0IGFscmVh
ZHkgY29udGFpbnMgYSBwcm9wZXJ0eSB3aXRoIHRoZSBzYW1lIGtleSwgdGhlIHZhbHVlIHdpbGwg
YmUKKyAgLy8gdXBkYXRlZC4KKyAgdm9pZCBSZWNvcmRQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVy
dHkmIHRlc3RfcHJvcGVydHkpOworCiAgIGVudW0gUmVhY3Rpb25Ub1NoYXJkaW5nIHsKICAgICBI
T05PUl9TSEFSRElOR19QUk9UT0NPTCwKICAgICBJR05PUkVfU0hBUkRJTkdfUFJPVE9DT0wKQEAg
LTgxNyw2ICs3NzYsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBV
bml0VGVzdE9wdGlvbnMuIE11c3Qgbm90IGJlIGNhbGxlZCBiZWZvcmUgSW5pdEdvb2dsZVRlc3Qu
CiAgIHZvaWQgQ29uZmlndXJlWG1sT3V0cHV0KCk7CiAKKyNpZiBHVEVTVF9DQU5fU1RSRUFNX1JF
U1VMVFNfCisgIC8vIEluaXRpYWxpemVzIHRoZSBldmVudCBsaXN0ZW5lciBmb3Igc3RyZWFtaW5n
IHRlc3QgcmVzdWx0cyB0byBhIHNvY2tldC4KKyAgLy8gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9y
ZSBJbml0R29vZ2xlVGVzdC4KKyAgdm9pZCBDb25maWd1cmVTdHJlYW1pbmdPdXRwdXQoKTsKKyNl
bmRpZgorCiAgIC8vIFBlcmZvcm1zIGluaXRpYWxpemF0aW9uIGRlcGVuZGVudCB1cG9uIGZsYWcg
dmFsdWVzIG9idGFpbmVkIGluCiAgIC8vIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seS4gIElzIGNh
bGxlZCBmcm9tIEluaXRHb29nbGVUZXN0IGFmdGVyIHRoZSBjYWxsIHRvCiAgIC8vIFBhcnNlR29v
Z2xlVGVzdEZsYWdzT25seS4gIEluIGNhc2UgYSB1c2VyIG5lZ2xlY3RzIHRvIGNhbGwgSW5pdEdv
b2dsZVRlc3QKQEAgLTgzNyw5ICs4MDIsMTcgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdElt
cGwgewogICAvLyBSZXN0b3JlcyB0aGUgdGVzdCBjYXNlcyBhbmQgdGVzdHMgdG8gdGhlaXIgb3Jk
ZXIgYmVmb3JlIHRoZSBmaXJzdCBzaHVmZmxlLgogICB2b2lkIFVuc2h1ZmZsZVRlc3RzKCk7CiAK
KyAgLy8gUmV0dXJucyB0aGUgdmFsdWUgb2YgR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSBh
dCB0aGUgbW9tZW50CisgIC8vIFVuaXRUZXN0OjpSdW4oKSBzdGFydHMuCisgIGJvb2wgY2F0Y2hf
ZXhjZXB0aW9ucygpIGNvbnN0IHsgcmV0dXJuIGNhdGNoX2V4Y2VwdGlvbnNfOyB9CisKICBwcml2
YXRlOgogICBmcmllbmQgY2xhc3MgOjp0ZXN0aW5nOjpVbml0VGVzdDsKIAorICAvLyBVc2VkIGJ5
IFVuaXRUZXN0OjpSdW4oKSB0byBjYXB0dXJlIHRoZSBzdGF0ZSBvZgorICAvLyBHVEVTVF9GTEFH
KGNhdGNoX2V4Y2VwdGlvbnMpIGF0IHRoZSBtb21lbnQgaXQgc3RhcnRzLgorICB2b2lkIHNldF9j
YXRjaF9leGNlcHRpb25zKGJvb2wgdmFsdWUpIHsgY2F0Y2hfZXhjZXB0aW9uc18gPSB2YWx1ZTsg
fQorCiAgIC8vIFRoZSBVbml0VGVzdCBvYmplY3QgdGhhdCBvd25zIHRoaXMgaW1wbGVtZW50YXRp
b24gb2JqZWN0LgogICBVbml0VGVzdCogY29uc3QgcGFyZW50XzsKIApAQCAtODc2LDE0ICs4NDks
MTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBzaHVmZmxlZCBvcmRl
ci4KICAgc3RkOjp2ZWN0b3I8aW50PiB0ZXN0X2Nhc2VfaW5kaWNlc187CiAKLSNpZiBHVEVTVF9I
QVNfUEFSQU1fVEVTVAogICAvLyBQYXJhbWV0ZXJpemVkVGVzdFJlZ2lzdHJ5IG9iamVjdCB1c2Vk
IHRvIHJlZ2lzdGVyIHZhbHVlLXBhcmFtZXRlcml6ZWQKICAgLy8gdGVzdHMuCiAgIGludGVybmFs
OjpQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSBwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0
cnlfOwogCiAgIC8vIEluZGljYXRlcyB3aGV0aGVyIFJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3Rz
KCkgaGFzIGJlZW4gY2FsbGVkIGFscmVhZHkuCiAgIGJvb2wgcGFyYW1ldGVyaXplZF90ZXN0c19y
ZWdpc3RlcmVkXzsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIAogICAvLyBJbmRl
eCBvZiB0aGUgbGFzdCBkZWF0aCB0ZXN0IGNhc2UgcmVnaXN0ZXJlZC4gIEluaXRpYWxseSAtMS4K
ICAgaW50IGxhc3RfZGVhdGhfdGVzdF9jYXNlXzsKQEAgLTkyOSw2ICs5MDAsMTAgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBPdXIgcmFuZG9tIG51bWJlciBnZW5lcmF0
b3IuCiAgIGludGVybmFsOjpSYW5kb20gcmFuZG9tXzsKIAorICAvLyBUaGUgdGltZSBvZiB0aGUg
dGVzdCBwcm9ncmFtIHN0YXJ0LCBpbiBtcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUKKyAgLy8gVU5J
WCBlcG9jaC4KKyAgVGltZUluTWlsbGlzIHN0YXJ0X3RpbWVzdGFtcF87CisKICAgLy8gSG93IGxv
bmcgdGhlIHRlc3QgdG9vayB0byBydW4sIGluIG1pbGxpc2Vjb25kcy4KICAgVGltZUluTWlsbGlz
IGVsYXBzZWRfdGltZV87CiAKQEAgLTk0Miw2ICs5MTcsMTAgQEAgY2xhc3MgR1RFU1RfQVBJXyBV
bml0VGVzdEltcGwgewogICAvLyBBIHBlci10aHJlYWQgc3RhY2sgb2YgdHJhY2VzIGNyZWF0ZWQg
YnkgdGhlIFNDT1BFRF9UUkFDRSgpIG1hY3JvLgogICBpbnRlcm5hbDo6VGhyZWFkTG9jYWw8c3Rk
Ojp2ZWN0b3I8VHJhY2VJbmZvPiA+IGd0ZXN0X3RyYWNlX3N0YWNrXzsKIAorICAvLyBUaGUgdmFs
dWUgb2YgR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSBhdCB0aGUgbW9tZW50IFJ1bkFsbFRl
c3RzKCkKKyAgLy8gc3RhcnRzLgorICBib29sIGNhdGNoX2V4Y2VwdGlvbnNfOworCiAgIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVW5pdFRlc3RJbXBsKTsKIH07ICAvLyBjbGFzcyBV
bml0VGVzdEltcGwKIApAQCAtOTUxLDE0ICs5MzAsMTYgQEAgaW5saW5lIFVuaXRUZXN0SW1wbCog
R2V0VW5pdFRlc3RJbXBsKCkgewogICByZXR1cm4gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmlt
cGwoKTsKIH0KIAorI2lmIEdURVNUX1VTRVNfU0lNUExFX1JFCisKIC8vIEludGVybmFsIGhlbHBl
ciBmdW5jdGlvbnMgZm9yIGltcGxlbWVudGluZyB0aGUgc2ltcGxlIHJlZ3VsYXIKIC8vIGV4cHJl
c3Npb24gbWF0Y2hlci4KIEdURVNUX0FQSV8gYm9vbCBJc0luU2V0KGNoYXIgY2gsIGNvbnN0IGNo
YXIqIHN0cik7Ci1HVEVTVF9BUElfIGJvb2wgSXNEaWdpdChjaGFyIGNoKTsKLUdURVNUX0FQSV8g
Ym9vbCBJc1B1bmN0KGNoYXIgY2gpOworR1RFU1RfQVBJXyBib29sIElzQXNjaWlEaWdpdChjaGFy
IGNoKTsKK0dURVNUX0FQSV8gYm9vbCBJc0FzY2lpUHVuY3QoY2hhciBjaCk7CiBHVEVTVF9BUElf
IGJvb2wgSXNSZXBlYXQoY2hhciBjaCk7Ci1HVEVTVF9BUElfIGJvb2wgSXNXaGl0ZVNwYWNlKGNo
YXIgY2gpOwotR1RFU1RfQVBJXyBib29sIElzV29yZENoYXIoY2hhciBjaCk7CitHVEVTVF9BUElf
IGJvb2wgSXNBc2NpaVdoaXRlU3BhY2UoY2hhciBjaCk7CitHVEVTVF9BUElfIGJvb2wgSXNBc2Np
aVdvcmRDaGFyKGNoYXIgY2gpOwogR1RFU1RfQVBJXyBib29sIElzVmFsaWRFc2NhcGUoY2hhciBj
aCk7CiBHVEVTVF9BUElfIGJvb2wgQXRvbU1hdGNoZXNDaGFyKGJvb2wgZXNjYXBlZCwgY2hhciBw
YXR0ZXJuLCBjaGFyIGNoKTsKIEdURVNUX0FQSV8gYm9vbCBWYWxpZGF0ZVJlZ2V4KGNvbnN0IGNo
YXIqIHJlZ2V4KTsKQEAgLTk2Nyw2ICs5NDgsOCBAQCBHVEVTVF9BUElfIGJvb2wgTWF0Y2hSZXBl
dGl0aW9uQW5kUmVnZXhBdEhlYWQoCiAgICAgYm9vbCBlc2NhcGVkLCBjaGFyIGNoLCBjaGFyIHJl
cGVhdCwgY29uc3QgY2hhciogcmVnZXgsIGNvbnN0IGNoYXIqIHN0cik7CiBHVEVTVF9BUElfIGJv
b2wgTWF0Y2hSZWdleEFueXdoZXJlKGNvbnN0IGNoYXIqIHJlZ2V4LCBjb25zdCBjaGFyKiBzdHIp
OwogCisjZW5kaWYgIC8vIEdURVNUX1VTRVNfU0lNUExFX1JFCisKIC8vIFBhcnNlcyB0aGUgY29t
bWFuZCBsaW5lIGZvciBHb29nbGUgVGVzdCBmbGFncywgd2l0aG91dCBpbml0aWFsaXppbmcKIC8v
IG90aGVyIHBhcnRzIG9mIEdvb2dsZSBUZXN0LgogR1RFU1RfQVBJXyB2b2lkIFBhcnNlR29vZ2xl
VGVzdEZsYWdzT25seShpbnQqIGFyZ2MsIGNoYXIqKiBhcmd2KTsKQEAgLTk3NiwzMyArOTU5LDcg
QEAgR1RFU1RfQVBJXyB2b2lkIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seShpbnQqIGFyZ2MsIHdj
aGFyX3QqKiBhcmd2KTsKIAogLy8gUmV0dXJucyB0aGUgbWVzc2FnZSBkZXNjcmliaW5nIHRoZSBs
YXN0IHN5c3RlbSBlcnJvciwgcmVnYXJkbGVzcyBvZiB0aGUKIC8vIHBsYXRmb3JtLgotU3RyaW5n
IEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCk7Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0vLyBQ
cm92aWRlcyBsZWFrLXNhZmUgV2luZG93cyBrZXJuZWwgaGFuZGxlIG93bmVyc2hpcC4KLWNsYXNz
IEF1dG9IYW5kbGUgewotIHB1YmxpYzoKLSAgQXV0b0hhbmRsZSgpIDogaGFuZGxlXyhJTlZBTElE
X0hBTkRMRV9WQUxVRSkge30KLSAgZXhwbGljaXQgQXV0b0hhbmRsZShIQU5ETEUgaGFuZGxlKSA6
IGhhbmRsZV8oaGFuZGxlKSB7fQotCi0gIH5BdXRvSGFuZGxlKCkgeyBSZXNldCgpOyB9Ci0KLSAg
SEFORExFIEdldCgpIGNvbnN0IHsgcmV0dXJuIGhhbmRsZV87IH0KLSAgdm9pZCBSZXNldCgpIHsg
UmVzZXQoSU5WQUxJRF9IQU5ETEVfVkFMVUUpOyB9Ci0gIHZvaWQgUmVzZXQoSEFORExFIGhhbmRs
ZSkgewotICAgIGlmIChoYW5kbGUgIT0gaGFuZGxlXykgewotICAgICAgaWYgKGhhbmRsZV8gIT0g
SU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIDo6Q2xvc2VIYW5kbGUoaGFuZGxlXyk7Ci0g
ICAgICBoYW5kbGVfID0gaGFuZGxlOwotICAgIH0KLSAgfQotCi0gcHJpdmF0ZToKLSAgSEFORExF
IGhhbmRsZV87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhBdXRvSGFuZGxl
KTsKLX07Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKK0dURVNUX0FQSV8gc3RkOjpzdHJp
bmcgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKTsKIAogLy8gQXR0ZW1wdHMgdG8gcGFyc2UgYSBz
dHJpbmcgaW50byBhIHBvc2l0aXZlIGludGVnZXIgcG9pbnRlZCB0byBieSB0aGUKIC8vIG51bWJl
ciBwYXJhbWV0ZXIuICBSZXR1cm5zIHRydWUgaWYgdGhhdCBpcyBwb3NzaWJsZS4KQEAgLTEwMTMs
NyArOTcwLDcgQEAgYm9vbCBQYXJzZU5hdHVyYWxOdW1iZXIoY29uc3QgOjpzdGQ6OnN0cmluZyYg
c3RyLCBJbnRlZ2VyKiBudW1iZXIpIHsKICAgLy8gRmFpbCBmYXN0IGlmIHRoZSBnaXZlbiBzdHJp
bmcgZG9lcyBub3QgYmVnaW4gd2l0aCBhIGRpZ2l0OwogICAvLyB0aGlzIGJ5cGFzc2VzIHN0cnRv
WFhYJ3MgIm9wdGlvbmFsIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgcGx1cwogICAvLyBvciBtaW51
cyBzaWduIiBzZW1hbnRpY3MsIHdoaWNoIGFyZSB1bmRlc2lyYWJsZSBoZXJlLgotICBpZiAoc3Ry
LmVtcHR5KCkgfHwgIWlzZGlnaXQoc3RyWzBdKSkgeworICBpZiAoc3RyLmVtcHR5KCkgfHwgIUlz
RGlnaXQoc3RyWzBdKSkgewogICAgIHJldHVybiBmYWxzZTsKICAgfQogICBlcnJubyA9IDA7CkBA
IC0xMDIxLDE3ICs5NzgsMjMgQEAgYm9vbCBQYXJzZU5hdHVyYWxOdW1iZXIoY29uc3QgOjpzdGQ6
OnN0cmluZyYgc3RyLCBJbnRlZ2VyKiBudW1iZXIpIHsKICAgY2hhciogZW5kOwogICAvLyBCaWdn
ZXN0Q29udmVydGlibGUgaXMgdGhlIGxhcmdlc3QgaW50ZWdlciB0eXBlIHRoYXQgc3lzdGVtLXBy
b3ZpZGVkCiAgIC8vIHN0cmluZy10by1udW1iZXIgY29udmVyc2lvbiByb3V0aW5lcyBjYW4gcmV0
dXJuLgotI2lmIEdURVNUX09TX1dJTkRPV1MgJiYgIWRlZmluZWQoX19HTlVDX18pCisKKyMgaWYg
R1RFU1RfT1NfV0lORE9XUyAmJiAhZGVmaW5lZChfX0dOVUNfXykKKwogICAvLyBNU1ZDIGFuZCBD
KysgQnVpbGRlciBkZWZpbmUgX19pbnQ2NCBpbnN0ZWFkIG9mIHRoZSBzdGFuZGFyZCBsb25nIGxv
bmcuCiAgIHR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCBCaWdnZXN0Q29udmVydGlibGU7CiAgIGNv
bnN0IEJpZ2dlc3RDb252ZXJ0aWJsZSBwYXJzZWQgPSBfc3RydG91aTY0KHN0ci5jX3N0cigpLCAm
ZW5kLCAxMCk7Ci0jZWxzZQorCisjIGVsc2UKKwogICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9u
ZyBCaWdnZXN0Q29udmVydGlibGU7ICAvLyBOT0xJTlQKICAgY29uc3QgQmlnZ2VzdENvbnZlcnRp
YmxlIHBhcnNlZCA9IHN0cnRvdWxsKHN0ci5jX3N0cigpLCAmZW5kLCAxMCk7Ci0jZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1MgJiYgIWRlZmluZWQoX19HTlVDX18pCisKKyMgZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MgJiYgIWRlZmluZWQoX19HTlVDX18pCisKICAgY29uc3QgYm9vbCBwYXJz
ZV9zdWNjZXNzID0gKmVuZCA9PSAnXDAnICYmIGVycm5vID09IDA7CiAKLSAgLy8gVE9ETyh2bGFk
bEBnb29nbGUuY29tKTogQ29udmVydCB0aGlzIHRvIGNvbXBpbGUgdGltZSBhc3NlcnRpb24gd2hl
biBpdCBpcworICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGNvbXBpbGUgdGltZSBhc3NlcnRp
b24gd2hlbiBpdCBpcwogICAvLyBhdmFpbGFibGUuCiAgIEdURVNUX0NIRUNLXyhzaXplb2YoSW50
ZWdlcikgPD0gc2l6ZW9mKHBhcnNlZCkpOwogCkBAIC0xMDUzLDggKzEwMTYsOSBAQCBib29sIFBh
cnNlTmF0dXJhbE51bWJlcihjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIsIEludGVnZXIqIG51bWJl
cikgewogY2xhc3MgVGVzdFJlc3VsdEFjY2Vzc29yIHsKICBwdWJsaWM6CiAgIHN0YXRpYyB2b2lk
IFJlY29yZFByb3BlcnR5KFRlc3RSZXN1bHQqIHRlc3RfcmVzdWx0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgeG1sX2VsZW1lbnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgcHJvcGVydHkpIHsKLSAgICB0
ZXN0X3Jlc3VsdC0+UmVjb3JkUHJvcGVydHkocHJvcGVydHkpOworICAgIHRlc3RfcmVzdWx0LT5S
ZWNvcmRQcm9wZXJ0eSh4bWxfZWxlbWVudCwgcHJvcGVydHkpOwogICB9CiAKICAgc3RhdGljIHZv
aWQgQ2xlYXJUZXN0UGFydFJlc3VsdHMoVGVzdFJlc3VsdCogdGVzdF9yZXN1bHQpIHsKQEAgLTEw
NjcsNyArMTAzMSwxNTcgQEAgY2xhc3MgVGVzdFJlc3VsdEFjY2Vzc29yIHsKICAgfQogfTsKIAor
I2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKworLy8gU3RyZWFtcyB0ZXN0IHJlc3VsdHMg
dG8gdGhlIGdpdmVuIHBvcnQgb24gdGhlIGdpdmVuIGhvc3QgbWFjaGluZS4KK2NsYXNzIFN0cmVh
bWluZ0xpc3RlbmVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgeworIHB1YmxpYzoK
KyAgLy8gQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3Igd3JpdGluZyBzdHJpbmdzIHRvIGEgc29ja2V0
LgorICBjbGFzcyBBYnN0cmFjdFNvY2tldFdyaXRlciB7CisgICBwdWJsaWM6CisgICAgdmlydHVh
bCB+QWJzdHJhY3RTb2NrZXRXcml0ZXIoKSB7fQorCisgICAgLy8gU2VuZHMgYSBzdHJpbmcgdG8g
dGhlIHNvY2tldC4KKyAgICB2aXJ0dWFsIHZvaWQgU2VuZChjb25zdCBzdGQ6OnN0cmluZyYgbWVz
c2FnZSkgPSAwOworCisgICAgLy8gQ2xvc2VzIHRoZSBzb2NrZXQuCisgICAgdmlydHVhbCB2b2lk
IENsb3NlQ29ubmVjdGlvbigpIHt9CisKKyAgICAvLyBTZW5kcyBhIHN0cmluZyBhbmQgYSBuZXds
aW5lIHRvIHRoZSBzb2NrZXQuCisgICAgdm9pZCBTZW5kTG4oY29uc3Qgc3RkOjpzdHJpbmcmIG1l
c3NhZ2UpIHsgU2VuZChtZXNzYWdlICsgIlxuIik7IH0KKyAgfTsKKworICAvLyBDb25jcmV0ZSBj
bGFzcyBmb3IgYWN0dWFsbHkgd3JpdGluZyBzdHJpbmdzIHRvIGEgc29ja2V0LgorICBjbGFzcyBT
b2NrZXRXcml0ZXIgOiBwdWJsaWMgQWJzdHJhY3RTb2NrZXRXcml0ZXIgeworICAgcHVibGljOgor
ICAgIFNvY2tldFdyaXRlcihjb25zdCBzdGQ6OnN0cmluZyYgaG9zdCwgY29uc3Qgc3RkOjpzdHJp
bmcmIHBvcnQpCisgICAgICAgIDogc29ja2ZkXygtMSksIGhvc3RfbmFtZV8oaG9zdCksIHBvcnRf
bnVtXyhwb3J0KSB7CisgICAgICBNYWtlQ29ubmVjdGlvbigpOworICAgIH0KKworICAgIHZpcnR1
YWwgflNvY2tldFdyaXRlcigpIHsKKyAgICAgIGlmIChzb2NrZmRfICE9IC0xKQorICAgICAgICBD
bG9zZUNvbm5lY3Rpb24oKTsKKyAgICB9CisKKyAgICAvLyBTZW5kcyBhIHN0cmluZyB0byB0aGUg
c29ja2V0LgorICAgIHZpcnR1YWwgdm9pZCBTZW5kKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdl
KSB7CisgICAgICBHVEVTVF9DSEVDS18oc29ja2ZkXyAhPSAtMSkKKyAgICAgICAgICA8PCAiU2Vu
ZCgpIGNhbiBiZSBjYWxsZWQgb25seSB3aGVuIHRoZXJlIGlzIGEgY29ubmVjdGlvbi4iOworCisg
ICAgICBjb25zdCBpbnQgbGVuID0gc3RhdGljX2Nhc3Q8aW50PihtZXNzYWdlLmxlbmd0aCgpKTsK
KyAgICAgIGlmICh3cml0ZShzb2NrZmRfLCBtZXNzYWdlLmNfc3RyKCksIGxlbikgIT0gbGVuKSB7
CisgICAgICAgIEdURVNUX0xPR18oV0FSTklORykKKyAgICAgICAgICAgIDw8ICJzdHJlYW1fcmVz
dWx0X3RvOiBmYWlsZWQgdG8gc3RyZWFtIHRvICIKKyAgICAgICAgICAgIDw8IGhvc3RfbmFtZV8g
PDwgIjoiIDw8IHBvcnRfbnVtXzsKKyAgICAgIH0KKyAgICB9CisKKyAgIHByaXZhdGU6CisgICAg
Ly8gQ3JlYXRlcyBhIGNsaWVudCBzb2NrZXQgYW5kIGNvbm5lY3RzIHRvIHRoZSBzZXJ2ZXIuCisg
ICAgdm9pZCBNYWtlQ29ubmVjdGlvbigpOworCisgICAgLy8gQ2xvc2VzIHRoZSBzb2NrZXQuCisg
ICAgdm9pZCBDbG9zZUNvbm5lY3Rpb24oKSB7CisgICAgICBHVEVTVF9DSEVDS18oc29ja2ZkXyAh
PSAtMSkKKyAgICAgICAgICA8PCAiQ2xvc2VDb25uZWN0aW9uKCkgY2FuIGJlIGNhbGxlZCBvbmx5
IHdoZW4gdGhlcmUgaXMgYSBjb25uZWN0aW9uLiI7CisKKyAgICAgIGNsb3NlKHNvY2tmZF8pOwor
ICAgICAgc29ja2ZkXyA9IC0xOworICAgIH0KKworICAgIGludCBzb2NrZmRfOyAgLy8gc29ja2V0
IGZpbGUgZGVzY3JpcHRvcgorICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGhvc3RfbmFtZV87CisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgcG9ydF9udW1fOworCisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOXyhTb2NrZXRXcml0ZXIpOworICB9OyAgLy8gY2xhc3MgU29ja2V0V3JpdGVyCisK
KyAgLy8gRXNjYXBlcyAnPScsICcmJywgJyUnLCBhbmQgJ1xuJyBjaGFyYWN0ZXJzIGluIHN0ciBh
cyAiJXh4Ii4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIFVybEVuY29kZShjb25zdCBjaGFyKiBzdHIp
OworCisgIFN0cmVhbWluZ0xpc3RlbmVyKGNvbnN0IHN0ZDo6c3RyaW5nJiBob3N0LCBjb25zdCBz
dGQ6OnN0cmluZyYgcG9ydCkKKyAgICAgIDogc29ja2V0X3dyaXRlcl8obmV3IFNvY2tldFdyaXRl
cihob3N0LCBwb3J0KSkgeworICAgIFN0YXJ0KCk7CisgIH0KKworICBleHBsaWNpdCBTdHJlYW1p
bmdMaXN0ZW5lcihBYnN0cmFjdFNvY2tldFdyaXRlciogc29ja2V0X3dyaXRlcikKKyAgICAgIDog
c29ja2V0X3dyaXRlcl8oc29ja2V0X3dyaXRlcikgeyBTdGFydCgpOyB9CisKKyAgdm9pZCBPblRl
c3RQcm9ncmFtU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qIHVuaXRfdGVzdCAqLykgeworICAgIFNl
bmRMbigiZXZlbnQ9VGVzdFByb2dyYW1TdGFydCIpOworICB9CisKKyAgdm9pZCBPblRlc3RQcm9n
cmFtRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpIHsKKyAgICAvLyBOb3RlIHRoYXQgR29v
Z2xlIFRlc3QgY3VycmVudCBvbmx5IHJlcG9ydCBlbGFwc2VkIHRpbWUgZm9yIGVhY2gKKyAgICAv
LyB0ZXN0IGl0ZXJhdGlvbiwgbm90IGZvciB0aGUgZW50aXJlIHRlc3QgcHJvZ3JhbS4KKyAgICBT
ZW5kTG4oImV2ZW50PVRlc3RQcm9ncmFtRW5kJnBhc3NlZD0iICsgRm9ybWF0Qm9vbCh1bml0X3Rl
c3QuUGFzc2VkKCkpKTsKKworICAgIC8vIE5vdGlmeSB0aGUgc3RyZWFtaW5nIHNlcnZlciB0byBz
dG9wLgorICAgIHNvY2tldF93cml0ZXJfLT5DbG9zZUNvbm5lY3Rpb24oKTsKKyAgfQorCisgIHZv
aWQgT25UZXN0SXRlcmF0aW9uU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qIHVuaXRfdGVzdCAqLywg
aW50IGl0ZXJhdGlvbikgeworICAgIFNlbmRMbigiZXZlbnQ9VGVzdEl0ZXJhdGlvblN0YXJ0Jml0
ZXJhdGlvbj0iICsKKyAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKGl0ZXJhdGlvbikpOwor
ICB9CisKKyAgdm9pZCBPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVz
dCwgaW50IC8qIGl0ZXJhdGlvbiAqLykgeworICAgIFNlbmRMbigiZXZlbnQ9VGVzdEl0ZXJhdGlv
bkVuZCZwYXNzZWQ9IiArCisgICAgICAgICAgIEZvcm1hdEJvb2wodW5pdF90ZXN0LlBhc3NlZCgp
KSArICImZWxhcHNlZF90aW1lPSIgKworICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodW5p
dF90ZXN0LmVsYXBzZWRfdGltZSgpKSArICJtcyIpOworICB9CisKKyAgdm9pZCBPblRlc3RDYXNl
U3RhcnQoY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSkgeworICAgIFNlbmRMbihzdGQ6OnN0cmlu
ZygiZXZlbnQ9VGVzdENhc2VTdGFydCZuYW1lPSIpICsgdGVzdF9jYXNlLm5hbWUoKSk7CisgIH0K
KworICB2b2lkIE9uVGVzdENhc2VFbmQoY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSkgeworICAg
IFNlbmRMbigiZXZlbnQ9VGVzdENhc2VFbmQmcGFzc2VkPSIgKyBGb3JtYXRCb29sKHRlc3RfY2Fz
ZS5QYXNzZWQoKSkKKyAgICAgICAgICAgKyAiJmVsYXBzZWRfdGltZT0iICsgU3RyZWFtYWJsZVRv
U3RyaW5nKHRlc3RfY2FzZS5lbGFwc2VkX3RpbWUoKSkKKyAgICAgICAgICAgKyAibXMiKTsKKyAg
fQorCisgIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbykgeworICAg
IFNlbmRMbihzdGQ6OnN0cmluZygiZXZlbnQ9VGVzdFN0YXJ0Jm5hbWU9IikgKyB0ZXN0X2luZm8u
bmFtZSgpKTsKKyAgfQorCisgIHZvaWQgT25UZXN0RW5kKGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2lu
Zm8pIHsKKyAgICBTZW5kTG4oImV2ZW50PVRlc3RFbmQmcGFzc2VkPSIgKworICAgICAgICAgICBG
b3JtYXRCb29sKCh0ZXN0X2luZm8ucmVzdWx0KCkpLT5QYXNzZWQoKSkgKworICAgICAgICAgICAi
JmVsYXBzZWRfdGltZT0iICsKKyAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKCh0ZXN0X2lu
Zm8ucmVzdWx0KCkpLT5lbGFwc2VkX3RpbWUoKSkgKyAibXMiKTsKKyAgfQorCisgIHZvaWQgT25U
ZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgewor
ICAgIGNvbnN0IGNoYXIqIGZpbGVfbmFtZSA9IHRlc3RfcGFydF9yZXN1bHQuZmlsZV9uYW1lKCk7
CisgICAgaWYgKGZpbGVfbmFtZSA9PSBOVUxMKQorICAgICAgZmlsZV9uYW1lID0gIiI7CisgICAg
U2VuZExuKCJldmVudD1UZXN0UGFydFJlc3VsdCZmaWxlPSIgKyBVcmxFbmNvZGUoZmlsZV9uYW1l
KSArCisgICAgICAgICAgICImbGluZT0iICsgU3RyZWFtYWJsZVRvU3RyaW5nKHRlc3RfcGFydF9y
ZXN1bHQubGluZV9udW1iZXIoKSkgKworICAgICAgICAgICAiJm1lc3NhZ2U9IiArIFVybEVuY29k
ZSh0ZXN0X3BhcnRfcmVzdWx0Lm1lc3NhZ2UoKSkpOworICB9CisKKyBwcml2YXRlOgorICAvLyBT
ZW5kcyB0aGUgZ2l2ZW4gbWVzc2FnZSBhbmQgYSBuZXdsaW5lIHRvIHRoZSBzb2NrZXQuCisgIHZv
aWQgU2VuZExuKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7IHNvY2tldF93cml0ZXJfLT5T
ZW5kTG4obWVzc2FnZSk7IH0KKworICAvLyBDYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIHN0cmVhbWlu
ZyB0byBub3RpZnkgdGhlIHJlY2VpdmVyIHdoYXQKKyAgLy8gcHJvdG9jb2wgd2UgYXJlIHVzaW5n
LgorICB2b2lkIFN0YXJ0KCkgeyBTZW5kTG4oImd0ZXN0X3N0cmVhbWluZ19wcm90b2NvbF92ZXJz
aW9uPTEuMCIpOyB9CisKKyAgc3RkOjpzdHJpbmcgRm9ybWF0Qm9vbChib29sIHZhbHVlKSB7IHJl
dHVybiB2YWx1ZSA/ICIxIiA6ICIwIjsgfQorCisgIGNvbnN0IHNjb3BlZF9wdHI8QWJzdHJhY3RT
b2NrZXRXcml0ZXI+IHNvY2tldF93cml0ZXJfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8oU3RyZWFtaW5nTGlzdGVuZXIpOworfTsgIC8vIGNsYXNzIFN0cmVhbWluZ0xpc3Rl
bmVyCisKKyNlbmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworCiB9ICAvLyBuYW1l
c3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAKK0dURVNUX0RJU0FCTEVf
TVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQyNTEKKwogI2VuZGlmICAvLyBHVEVTVF9TUkNfR1RF
U1RfSU5URVJOQUxfSU5MX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9z
cmMvZ3Rlc3QtcG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1wb3J0
LmNjCmluZGV4IGI5NTA0ZjU2YWU2ZjkzZTEyNmQyYjU2OGE3ZDk3ZGI1MTdmYjgzZTQuLmZlY2I1
ZDExYzIxMjk2YTkxODFhMTEyODAyMjYwNjdiNjQzZWRkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1wb3J0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NyYy9ndGVzdC1wb3J0LmNjCkBAIC0yNiw0MiArMjYsNTIgQEAKIC8vIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBn
b29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVz
dC1wb3J0Lmg+CisKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKICNp
bmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdGRpby5o
PgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGZzdHJlYW0+CiAKLSNpZiBHVEVTVF9P
U19XSU5ET1dTX01PQklMRQotI2luY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIEZvciBUZXJtaW5hdGVQ
cm9jZXNzKCkKLSNlbGlmIEdURVNUX09TX1dJTkRPV1MKLSNpbmNsdWRlIDxpby5oPgotI2luY2x1
ZGUgPHN5cy9zdGF0Lmg+CisjaWYgR1RFU1RfT1NfV0lORE9XUworIyBpbmNsdWRlIDx3aW5kb3dz
Lmg+CisjIGluY2x1ZGUgPGlvLmg+CisjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+CisjIGluY2x1ZGUg
PG1hcD4gIC8vIFVzZWQgaW4gVGhyZWFkTG9jYWwuCiAjZWxzZQotI2luY2x1ZGUgPHVuaXN0ZC5o
PgotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBpbmNsdWRlIDx1bmlzdGQu
aD4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCiAjaWYgR1RFU1RfT1NfTUFDCi0jaW5j
bHVkZSA8bWFjaC9tYWNoX2luaXQuaD4KLSNpbmNsdWRlIDxtYWNoL3Rhc2suaD4KLSNpbmNsdWRl
IDxtYWNoL3ZtX21hcC5oPgorIyBpbmNsdWRlIDxtYWNoL21hY2hfaW5pdC5oPgorIyBpbmNsdWRl
IDxtYWNoL3Rhc2suaD4KKyMgaW5jbHVkZSA8bWFjaC92bV9tYXAuaD4KICNlbmRpZiAgLy8gR1RF
U1RfT1NfTUFDCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGkuaD4KLSNpbmNsdWRlIDxndGVz
dC9ndGVzdC1tZXNzYWdlLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5n
Lmg+Ci0KLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9m
IEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBn
dGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBj
b21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2VyIGZyb20g
YWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8gaGlzIGNv
ZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCisjaWYgR1RFU1RfT1NfUU5YCisj
IGluY2x1ZGUgPGRldmN0bC5oPgorIyBpbmNsdWRlIDxmY250bC5oPgorIyBpbmNsdWRlIDxzeXMv
cHJvY2ZzLmg+CisjZW5kaWYgIC8vIEdURVNUX09TX1FOWAorCisjaWYgR1RFU1RfT1NfQUlYCisj
IGluY2x1ZGUgPHByb2NpbmZvLmg+CisjIGluY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmICAv
LyBHVEVTVF9PU19BSVgKKworI2lmIEdURVNUX09TX0ZVQ0hTSUEKKyMgaW5jbHVkZSA8emlyY29u
L3Byb2Nlc3MuaD4KKyMgaW5jbHVkZSA8emlyY29uL3N5c2NhbGxzLmg+CisjZW5kaWYgIC8vIEdU
RVNUX09TX0ZVQ0hTSUEKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgorI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1p
bnRlcm5hbC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgogI2lu
Y2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRB
VElPTl8KIAogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsKQEAgLTc1
LDEwICs4NSwzMSBAQCBjb25zdCBpbnQga1N0ZE91dEZpbGVubyA9IFNURE9VVF9GSUxFTk87CiBj
b25zdCBpbnQga1N0ZEVyckZpbGVubyA9IFNUREVSUl9GSUxFTk87CiAjZW5kaWYgIC8vIF9NU0Nf
VkVSCiAKLSNpZiBHVEVTVF9PU19NQUMKKyNpZiBHVEVTVF9PU19MSU5VWAorCituYW1lc3BhY2Ug
ewordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitUIFJlYWRQcm9jRmlsZUZpZWxkKGNvbnN0IHN0ZDo6
c3RyaW5nJiBmaWxlbmFtZSwgaW50IGZpZWxkKSB7CisgIHN0ZDo6c3RyaW5nIGR1bW15OworICBz
dGQ6Omlmc3RyZWFtIGZpbGUoZmlsZW5hbWUuY19zdHIoKSk7CisgIHdoaWxlIChmaWVsZC0tID4g
MCkgeworICAgIGZpbGUgPj4gZHVtbXk7CisgIH0KKyAgVCBvdXRwdXQgPSAwOworICBmaWxlID4+
IG91dHB1dDsKKyAgcmV0dXJuIG91dHB1dDsKK30KK30gIC8vIG5hbWVzcGFjZQorCisvLyBSZXR1
cm5zIHRoZSBudW1iZXIgb2YgYWN0aXZlIHRocmVhZHMsIG9yIDAgd2hlbiB0aGVyZSBpcyBhbiBl
cnJvci4KK3NpemVfdCBHZXRUaHJlYWRDb3VudCgpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmls
ZW5hbWUgPQorICAgICAgKE1lc3NhZ2UoKSA8PCAiL3Byb2MvIiA8PCBnZXRwaWQoKSA8PCAiL3N0
YXQiKS5HZXRTdHJpbmcoKTsKKyAgcmV0dXJuIFJlYWRQcm9jRmlsZUZpZWxkPGludD4oZmlsZW5h
bWUsIDE5KTsKK30KKworI2VsaWYgR1RFU1RfT1NfTUFDCiAKLS8vIFJldHVybnMgdGhlIG51bWJl
ciBvZiB0aHJlYWRzIHJ1bm5pbmcgaW4gdGhlIHByb2Nlc3MsIG9yIDAgdG8gaW5kaWNhdGUgdGhh
dAotLy8gd2UgY2Fubm90IGRldGVjdCBpdC4KIHNpemVfdCBHZXRUaHJlYWRDb3VudCgpIHsKICAg
Y29uc3QgdGFza190IHRhc2sgPSBtYWNoX3Rhc2tfc2VsZigpOwogICBtYWNoX21zZ190eXBlX251
bWJlcl90IHRocmVhZF9jb3VudDsKQEAgLTk2LDYgKzEyNyw1OCBAQCBzaXplX3QgR2V0VGhyZWFk
Q291bnQoKSB7CiAgIH0KIH0KIAorI2VsaWYgR1RFU1RfT1NfUU5YCisKKy8vIFJldHVybnMgdGhl
IG51bWJlciBvZiB0aHJlYWRzIHJ1bm5pbmcgaW4gdGhlIHByb2Nlc3MsIG9yIDAgdG8gaW5kaWNh
dGUgdGhhdAorLy8gd2UgY2Fubm90IGRldGVjdCBpdC4KK3NpemVfdCBHZXRUaHJlYWRDb3VudCgp
IHsKKyAgY29uc3QgaW50IGZkID0gb3BlbigiL3Byb2Mvc2VsZi9hcyIsIE9fUkRPTkxZKTsKKyAg
aWYgKGZkIDwgMCkgeworICAgIHJldHVybiAwOworICB9CisgIHByb2Nmc19pbmZvIHByb2Nlc3Nf
aW5mbzsKKyAgY29uc3QgaW50IHN0YXR1cyA9CisgICAgICBkZXZjdGwoZmQsIERDTURfUFJPQ19J
TkZPLCAmcHJvY2Vzc19pbmZvLCBzaXplb2YocHJvY2Vzc19pbmZvKSwgTlVMTCk7CisgIGNsb3Nl
KGZkKTsKKyAgaWYgKHN0YXR1cyA9PSBFT0spIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6
ZV90Pihwcm9jZXNzX2luZm8ubnVtX3RocmVhZHMpOworICB9IGVsc2UgeworICAgIHJldHVybiAw
OworICB9Cit9CisKKyNlbGlmIEdURVNUX09TX0FJWAorCitzaXplX3QgR2V0VGhyZWFkQ291bnQo
KSB7CisgIHN0cnVjdCBwcm9jZW50cnk2NCBlbnRyeTsKKyAgcGlkX3QgcGlkID0gZ2V0cGlkKCk7
CisgIGludCBzdGF0dXMgPSBnZXRwcm9jczY0KCZlbnRyeSwgc2l6ZW9mKGVudHJ5KSwgTlVMTCwg
MCwgJnBpZCwgMSk7CisgIGlmIChzdGF0dXMgPT0gMSkgeworICAgIHJldHVybiBlbnRyeS5waV90
aGNvdW50OworICB9IGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKKyNlbGlmIEdURVNU
X09TX0ZVQ0hTSUEKKworc2l6ZV90IEdldFRocmVhZENvdW50KCkgeworICBpbnQgZHVtbXlfYnVm
ZmVyOworICBzaXplX3QgYXZhaWw7CisgIHp4X3N0YXR1c190IHN0YXR1cyA9IHp4X29iamVjdF9n
ZXRfaW5mbygKKyAgICAgIHp4X3Byb2Nlc3Nfc2VsZigpLAorICAgICAgWlhfSU5GT19QUk9DRVNT
X1RIUkVBRFMsCisgICAgICAmZHVtbXlfYnVmZmVyLAorICAgICAgMCwKKyAgICAgIG51bGxwdHIs
CisgICAgICAmYXZhaWwpOworICBpZiAoc3RhdHVzID09IFpYX09LKSB7CisgICAgcmV0dXJuIGF2
YWlsOworICB9IGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKICNlbHNlCiAKIHNpemVf
dCBHZXRUaHJlYWRDb3VudCgpIHsKQEAgLTEwNCw3ICsxODcsNDMyIEBAIHNpemVfdCBHZXRUaHJl
YWRDb3VudCgpIHsKICAgcmV0dXJuIDA7CiB9CiAKLSNlbmRpZiAgLy8gR1RFU1RfT1NfTUFDCisj
ZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCisKKyNpZiBHVEVTVF9JU19USFJFQURTQUZFICYmIEdU
RVNUX09TX1dJTkRPV1MKKwordm9pZCBTbGVlcE1pbGxpc2Vjb25kcyhpbnQgbikgeworICA6OlNs
ZWVwKG4pOworfQorCitBdXRvSGFuZGxlOjpBdXRvSGFuZGxlKCkKKyAgICA6IGhhbmRsZV8oSU5W
QUxJRF9IQU5ETEVfVkFMVUUpIHt9CisKK0F1dG9IYW5kbGU6OkF1dG9IYW5kbGUoSGFuZGxlIGhh
bmRsZSkKKyAgICA6IGhhbmRsZV8oaGFuZGxlKSB7fQorCitBdXRvSGFuZGxlOjp+QXV0b0hhbmRs
ZSgpIHsKKyAgUmVzZXQoKTsKK30KKworQXV0b0hhbmRsZTo6SGFuZGxlIEF1dG9IYW5kbGU6Okdl
dCgpIGNvbnN0IHsKKyAgcmV0dXJuIGhhbmRsZV87Cit9CisKK3ZvaWQgQXV0b0hhbmRsZTo6UmVz
ZXQoKSB7CisgIFJlc2V0KElOVkFMSURfSEFORExFX1ZBTFVFKTsKK30KKwordm9pZCBBdXRvSGFu
ZGxlOjpSZXNldChIQU5ETEUgaGFuZGxlKSB7CisgIC8vIFJlc2V0dGluZyB3aXRoIHRoZSBzYW1l
IGhhbmRsZSB3ZSBhbHJlYWR5IG93biBpcyBpbnZhbGlkLgorICBpZiAoaGFuZGxlXyAhPSBoYW5k
bGUpIHsKKyAgICBpZiAoSXNDbG9zZWFibGUoKSkgeworICAgICAgOjpDbG9zZUhhbmRsZShoYW5k
bGVfKTsKKyAgICB9CisgICAgaGFuZGxlXyA9IGhhbmRsZTsKKyAgfSBlbHNlIHsKKyAgICBHVEVT
VF9DSEVDS18oIUlzQ2xvc2VhYmxlKCkpCisgICAgICAgIDw8ICJSZXNldHRpbmcgYSB2YWxpZCBo
YW5kbGUgdG8gaXRzZWxmIGlzIGxpa2VseSBhIHByb2dyYW1tZXIgZXJyb3IgIgorICAgICAgICAg
ICAgImFuZCB0aHVzIG5vdCBhbGxvd2VkLiI7CisgIH0KK30KKworYm9vbCBBdXRvSGFuZGxlOjpJ
c0Nsb3NlYWJsZSgpIGNvbnN0IHsKKyAgLy8gRGlmZmVyZW50IFdpbmRvd3MgQVBJcyBtYXkgdXNl
IGVpdGhlciBvZiB0aGVzZSB2YWx1ZXMgdG8gcmVwcmVzZW50IGFuCisgIC8vIGludmFsaWQgaGFu
ZGxlLgorICByZXR1cm4gaGFuZGxlXyAhPSBOVUxMICYmIGhhbmRsZV8gIT0gSU5WQUxJRF9IQU5E
TEVfVkFMVUU7Cit9CisKK05vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKCkKKyAgICA6IGV2ZW50
Xyg6OkNyZWF0ZUV2ZW50KE5VTEwsICAgLy8gRGVmYXVsdCBzZWN1cml0eSBhdHRyaWJ1dGVzLgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwgICAvLyBEbyBub3QgcmVzZXQgYXV0b21h
dGljYWxseS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCAgLy8gSW5pdGlhbGx5
IHVuc2V0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkpIHsgIC8vIEFub255bW91
cyBldmVudC4KKyAgR1RFU1RfQ0hFQ0tfKGV2ZW50Xy5HZXQoKSAhPSBOVUxMKTsKK30KKwordm9p
ZCBOb3RpZmljYXRpb246Ok5vdGlmeSgpIHsKKyAgR1RFU1RfQ0hFQ0tfKDo6U2V0RXZlbnQoZXZl
bnRfLkdldCgpKSAhPSBGQUxTRSk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpXYWl0Rm9yTm90
aWZpY2F0aW9uKCkgeworICBHVEVTVF9DSEVDS18oCisgICAgICA6OldhaXRGb3JTaW5nbGVPYmpl
Y3QoZXZlbnRfLkdldCgpLCBJTkZJTklURSkgPT0gV0FJVF9PQkpFQ1RfMCk7Cit9CisKK011dGV4
OjpNdXRleCgpCisgICAgOiBvd25lcl90aHJlYWRfaWRfKDApLAorICAgICAgdHlwZV8oa0R5bmFt
aWMpLAorICAgICAgY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXygwKSwKKyAgICAgIGNyaXRp
Y2FsX3NlY3Rpb25fKG5ldyBDUklUSUNBTF9TRUNUSU9OKSB7CisgIDo6SW5pdGlhbGl6ZUNyaXRp
Y2FsU2VjdGlvbihjcml0aWNhbF9zZWN0aW9uXyk7Cit9CisKK011dGV4Ojp+TXV0ZXgoKSB7Cisg
IC8vIFN0YXRpYyBtdXRleGVzIGFyZSBsZWFrZWQgaW50ZW50aW9uYWxseS4gSXQgaXMgbm90IHRo
cmVhZC1zYWZlIHRvIHRyeQorICAvLyB0byBjbGVhbiB0aGVtIHVwLgorICAvLyBGSVhNRTogU3dp
dGNoIHRvIFNsaW0gUmVhZGVyL1dyaXRlciAoU1JXKSBMb2Nrcywgd2hpY2ggcmVxdWlyZXMKKyAg
Ly8gbm90aGluZyB0byBjbGVhbiBpdCB1cCBidXQgaXMgYXZhaWxhYmxlIG9ubHkgb24gVmlzdGEg
YW5kIGxhdGVyLgorICAvLyBodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dz
L2Rlc2t0b3AvU3luYy9zbGltLXJlYWRlci13cml0ZXItLXNydy0tbG9ja3MKKyAgaWYgKHR5cGVf
ID09IGtEeW5hbWljKSB7CisgICAgOjpEZWxldGVDcml0aWNhbFNlY3Rpb24oY3JpdGljYWxfc2Vj
dGlvbl8pOworICAgIGRlbGV0ZSBjcml0aWNhbF9zZWN0aW9uXzsKKyAgICBjcml0aWNhbF9zZWN0
aW9uXyA9IE5VTEw7CisgIH0KK30KKwordm9pZCBNdXRleDo6TG9jaygpIHsKKyAgVGhyZWFkU2Fm
ZUxhenlJbml0KCk7CisgIDo6RW50ZXJDcml0aWNhbFNlY3Rpb24oY3JpdGljYWxfc2VjdGlvbl8p
OworICBvd25lcl90aHJlYWRfaWRfID0gOjpHZXRDdXJyZW50VGhyZWFkSWQoKTsKK30KKwordm9p
ZCBNdXRleDo6VW5sb2NrKCkgeworICBUaHJlYWRTYWZlTGF6eUluaXQoKTsKKyAgLy8gV2UgZG9u
J3QgcHJvdGVjdCB3cml0aW5nIHRvIG93bmVyX3RocmVhZF9pZF8gaGVyZSwgYXMgaXQncyB0aGUK
KyAgLy8gY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoYXQgdGhlIGN1cnJlbnQg
dGhyZWFkIGhvbGRzIHRoZQorICAvLyBtdXRleCB3aGVuIHRoaXMgaXMgY2FsbGVkLgorICBvd25l
cl90aHJlYWRfaWRfID0gMDsKKyAgOjpMZWF2ZUNyaXRpY2FsU2VjdGlvbihjcml0aWNhbF9zZWN0
aW9uXyk7Cit9CisKKy8vIERvZXMgbm90aGluZyBpZiB0aGUgY3VycmVudCB0aHJlYWQgaG9sZHMg
dGhlIG11dGV4LiBPdGhlcndpc2UsIGNyYXNoZXMKKy8vIHdpdGggaGlnaCBwcm9iYWJpbGl0eS4K
K3ZvaWQgTXV0ZXg6OkFzc2VydEhlbGQoKSB7CisgIFRocmVhZFNhZmVMYXp5SW5pdCgpOworICBH
VEVTVF9DSEVDS18ob3duZXJfdGhyZWFkX2lkXyA9PSA6OkdldEN1cnJlbnRUaHJlYWRJZCgpKQor
ICAgICAgPDwgIlRoZSBjdXJyZW50IHRocmVhZCBpcyBub3QgaG9sZGluZyB0aGUgbXV0ZXggQCIg
PDwgdGhpczsKK30KKworbmFtZXNwYWNlIHsKKworLy8gVXNlIHRoZSBSQUlJIGlkaW9tIHRvIGZs
YWcgbWVtIGFsbG9jcyB0aGF0IGFyZSBpbnRlbnRpb25hbGx5IG5ldmVyCisvLyBkZWFsbG9jYXRl
ZC4gVGhlIG1vdGl2YXRpb24gaXMgdG8gc2lsZW5jZSB0aGUgZmFsc2UgcG9zaXRpdmUgbWVtIGxl
YWtzCisvLyB0aGF0IGFyZSByZXBvcnRlZCBieSB0aGUgZGVidWcgdmVyc2lvbiBvZiBNUydzIENS
VCB3aGljaCBjYW4gb25seSBkZXRlY3QKKy8vIGlmIGFuIGFsbG9jIGlzIG1pc3NpbmcgYSBtYXRj
aGluZyBkZWFsbG9jYXRpb24uCisvLyBFeGFtcGxlOgorLy8gICAgTWVtb3J5SXNOb3REZWFsbG9j
YXRlZCBtZW1vcnlfaXNfbm90X2RlYWxsb2NhdGVkOworLy8gICAgY3JpdGljYWxfc2VjdGlvbl8g
PSBuZXcgQ1JJVElDQUxfU0VDVElPTjsKKy8vCitjbGFzcyBNZW1vcnlJc05vdERlYWxsb2NhdGVk
Cit7CisgcHVibGljOgorICBNZW1vcnlJc05vdERlYWxsb2NhdGVkKCkgOiBvbGRfY3J0ZGJnX2Zs
YWdfKDApIHsKKyNpZmRlZiBfTVNDX1ZFUgorICAgIG9sZF9jcnRkYmdfZmxhZ18gPSBfQ3J0U2V0
RGJnRmxhZyhfQ1JUREJHX1JFUE9SVF9GTEFHKTsKKyAgICAvLyBTZXQgaGVhcCBhbGxvY2F0aW9u
IGJsb2NrIHR5cGUgdG8gX0lHTk9SRV9CTE9DSyBzbyB0aGF0IE1TIGRlYnVnIENSVAorICAgIC8v
IGRvZXNuJ3QgcmVwb3J0IG1lbSBsZWFrIGlmIHRoZXJlJ3Mgbm8gbWF0Y2hpbmcgZGVhbGxvY2F0
aW9uLgorICAgIF9DcnRTZXREYmdGbGFnKG9sZF9jcnRkYmdfZmxhZ18gJiB+X0NSVERCR19BTExP
Q19NRU1fREYpOworI2VuZGlmICAvLyAgX01TQ19WRVIKKyAgfQorCisgIH5NZW1vcnlJc05vdERl
YWxsb2NhdGVkKCkgeworI2lmZGVmIF9NU0NfVkVSCisgICAgLy8gUmVzdG9yZSB0aGUgb3JpZ2lu
YWwgX0NSVERCR19BTExPQ19NRU1fREYgZmxhZworICAgIF9DcnRTZXREYmdGbGFnKG9sZF9jcnRk
YmdfZmxhZ18pOworI2VuZGlmICAvLyAgX01TQ19WRVIKKyAgfQorCisgcHJpdmF0ZToKKyAgaW50
IG9sZF9jcnRkYmdfZmxhZ187CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhN
ZW1vcnlJc05vdERlYWxsb2NhdGVkKTsKK307CisKK30gIC8vIG5hbWVzcGFjZQorCisvLyBJbml0
aWFsaXplcyBvd25lcl90aHJlYWRfaWRfIGFuZCBjcml0aWNhbF9zZWN0aW9uXyBpbiBzdGF0aWMg
bXV0ZXhlcy4KK3ZvaWQgTXV0ZXg6OlRocmVhZFNhZmVMYXp5SW5pdCgpIHsKKyAgLy8gRHluYW1p
YyBtdXRleGVzIGFyZSBpbml0aWFsaXplZCBpbiB0aGUgY29uc3RydWN0b3IuCisgIGlmICh0eXBl
XyA9PSBrU3RhdGljKSB7CisgICAgc3dpdGNoICgKKyAgICAgICAgOjpJbnRlcmxvY2tlZENvbXBh
cmVFeGNoYW5nZSgmY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXywgMUwsIDBMKSkgeworICAg
ICAgY2FzZSAwOgorICAgICAgICAvLyBJZiBjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhhc2VfIHdh
cyAwIGJlZm9yZSB0aGUgZXhjaGFuZ2UsIHdlCisgICAgICAgIC8vIGFyZSB0aGUgZmlyc3QgdG8g
dGVzdCBpdCBhbmQgbmVlZCB0byBwZXJmb3JtIHRoZSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAg
b3duZXJfdGhyZWFkX2lkXyA9IDA7CisgICAgICAgIHsKKyAgICAgICAgICAvLyBVc2UgUkFJSSB0
byBmbGFnIHRoYXQgZm9sbG93aW5nIG1lbSBhbGxvYyBpcyBuZXZlciBkZWFsbG9jYXRlZC4KKyAg
ICAgICAgICBNZW1vcnlJc05vdERlYWxsb2NhdGVkIG1lbW9yeV9pc19ub3RfZGVhbGxvY2F0ZWQ7
CisgICAgICAgICAgY3JpdGljYWxfc2VjdGlvbl8gPSBuZXcgQ1JJVElDQUxfU0VDVElPTjsKKyAg
ICAgICAgfQorICAgICAgICA6OkluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oY3JpdGljYWxfc2Vj
dGlvbl8pOworICAgICAgICAvLyBVcGRhdGVzIHRoZSBjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhh
c2VfIHRvIDIgdG8gc2lnbmFsCisgICAgICAgIC8vIGluaXRpYWxpemF0aW9uIGNvbXBsZXRlLgor
ICAgICAgICBHVEVTVF9DSEVDS18oOjpJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgJmNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFzZV8sIDJMLCAx
TCkgPT0KKyAgICAgICAgICAgICAgICAgICAgICAxTCk7CisgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSAxOgorICAgICAgICAvLyBTb21lYm9keSBlbHNlIGlzIGFscmVhZHkgaW5pdGlhbGl6aW5n
IHRoZSBtdXRleDsgc3BpbiB1bnRpbCB0aGV5CisgICAgICAgIC8vIGFyZSBkb25lLgorICAgICAg
ICB3aGlsZSAoOjpJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSgmY3JpdGljYWxfc2VjdGlvbl9p
bml0X3BoYXNlXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MkwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDJMKSAhPSAy
TCkgeworICAgICAgICAgIC8vIFBvc3NpYmx5IHlpZWxkcyB0aGUgcmVzdCBvZiB0aGUgdGhyZWFk
J3MgdGltZSBzbGljZSB0byBvdGhlcgorICAgICAgICAgIC8vIHRocmVhZHMuCisgICAgICAgICAg
OjpTbGVlcCgwKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgY2FzZSAyOgor
ICAgICAgICBicmVhazsgIC8vIFRoZSBtdXRleCBpcyBhbHJlYWR5IGluaXRpYWxpemVkIGFuZCBy
ZWFkeSBmb3IgdXNlLgorCisgICAgICBkZWZhdWx0OgorICAgICAgICBHVEVTVF9DSEVDS18oZmFs
c2UpCisgICAgICAgICAgICA8PCAiVW5leHBlY3RlZCB2YWx1ZSBvZiBjcml0aWNhbF9zZWN0aW9u
X2luaXRfcGhhc2VfICIKKyAgICAgICAgICAgIDw8ICJ3aGlsZSBpbml0aWFsaXppbmcgYSBzdGF0
aWMgbXV0ZXguIjsKKyAgICB9CisgIH0KK30KKworbmFtZXNwYWNlIHsKKworY2xhc3MgVGhyZWFk
V2l0aFBhcmFtU3VwcG9ydCA6IHB1YmxpYyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKKyBwdWJsaWM6
CisgIHN0YXRpYyBIQU5ETEUgQ3JlYXRlVGhyZWFkKFJ1bm5hYmxlKiBydW5uYWJsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KSB7
CisgICAgVGhyZWFkTWFpblBhcmFtKiBwYXJhbSA9IG5ldyBUaHJlYWRNYWluUGFyYW0ocnVubmFi
bGUsIHRocmVhZF9jYW5fc3RhcnQpOworICAgIERXT1JEIHRocmVhZF9pZDsKKyAgICAvLyBGSVhN
RTogQ29uc2lkZXIgdG8gdXNlIF9iZWdpbnRocmVhZGV4IGluc3RlYWQuCisgICAgSEFORExFIHRo
cmVhZF9oYW5kbGUgPSA6OkNyZWF0ZVRocmVhZCgKKyAgICAgICAgTlVMTCwgICAgLy8gRGVmYXVs
dCBzZWN1cml0eS4KKyAgICAgICAgMCwgICAgICAgLy8gRGVmYXVsdCBzdGFjayBzaXplLgorICAg
ICAgICAmVGhyZWFkV2l0aFBhcmFtU3VwcG9ydDo6VGhyZWFkTWFpbiwKKyAgICAgICAgcGFyYW0s
ICAgLy8gUGFyYW1ldGVyIHRvIFRocmVhZE1haW5TdGF0aWMKKyAgICAgICAgMHgwLCAgICAgLy8g
RGVmYXVsdCBjcmVhdGlvbiBmbGFncy4KKyAgICAgICAgJnRocmVhZF9pZCk7ICAvLyBOZWVkIGEg
dmFsaWQgcG9pbnRlciBmb3IgdGhlIGNhbGwgdG8gd29yayB1bmRlciBXaW45OC4KKyAgICBHVEVT
VF9DSEVDS18odGhyZWFkX2hhbmRsZSAhPSBOVUxMKSA8PCAiQ3JlYXRlVGhyZWFkIGZhaWxlZCB3
aXRoIGVycm9yICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCA6
OkdldExhc3RFcnJvcigpIDw8ICIuIjsKKyAgICBpZiAodGhyZWFkX2hhbmRsZSA9PSBOVUxMKSB7
CisgICAgICBkZWxldGUgcGFyYW07CisgICAgfQorICAgIHJldHVybiB0aHJlYWRfaGFuZGxlOwor
ICB9CisKKyBwcml2YXRlOgorICBzdHJ1Y3QgVGhyZWFkTWFpblBhcmFtIHsKKyAgICBUaHJlYWRN
YWluUGFyYW0oUnVubmFibGUqIHJ1bm5hYmxlLCBOb3RpZmljYXRpb24qIHRocmVhZF9jYW5fc3Rh
cnQpCisgICAgICAgIDogcnVubmFibGVfKHJ1bm5hYmxlKSwKKyAgICAgICAgICB0aHJlYWRfY2Fu
X3N0YXJ0Xyh0aHJlYWRfY2FuX3N0YXJ0KSB7CisgICAgfQorICAgIHNjb3BlZF9wdHI8UnVubmFi
bGU+IHJ1bm5hYmxlXzsKKyAgICAvLyBEb2VzIG5vdCBvd24uCisgICAgTm90aWZpY2F0aW9uKiB0
aHJlYWRfY2FuX3N0YXJ0XzsKKyAgfTsKKworICBzdGF0aWMgRFdPUkQgV0lOQVBJIFRocmVhZE1h
aW4odm9pZCogcHRyKSB7CisgICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcC4KKyAgICBzY29wZWRf
cHRyPFRocmVhZE1haW5QYXJhbT4gcGFyYW0oc3RhdGljX2Nhc3Q8VGhyZWFkTWFpblBhcmFtKj4o
cHRyKSk7CisgICAgaWYgKHBhcmFtLT50aHJlYWRfY2FuX3N0YXJ0XyAhPSBOVUxMKQorICAgICAg
cGFyYW0tPnRocmVhZF9jYW5fc3RhcnRfLT5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7CisgICAgcGFy
YW0tPnJ1bm5hYmxlXy0+UnVuKCk7CisgICAgcmV0dXJuIDA7CisgIH0KKworICAvLyBQcm9oaWJp
dCBpbnN0YW50aWF0aW9uLgorICBUaHJlYWRXaXRoUGFyYW1TdXBwb3J0KCk7CisKKyAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJlYWRXaXRoUGFyYW1TdXBwb3J0KTsKK307CisK
K30gIC8vIG5hbWVzcGFjZQorCitUaHJlYWRXaXRoUGFyYW1CYXNlOjpUaHJlYWRXaXRoUGFyYW1C
YXNlKFJ1bm5hYmxlICpydW5uYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KQorICAgICAgOiB0aHJlYWRf
KFRocmVhZFdpdGhQYXJhbVN1cHBvcnQ6OkNyZWF0ZVRocmVhZChydW5uYWJsZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkX2Nhbl9z
dGFydCkpIHsKK30KKworVGhyZWFkV2l0aFBhcmFtQmFzZTo6flRocmVhZFdpdGhQYXJhbUJhc2Uo
KSB7CisgIEpvaW4oKTsKK30KKwordm9pZCBUaHJlYWRXaXRoUGFyYW1CYXNlOjpKb2luKCkgewor
ICBHVEVTVF9DSEVDS18oOjpXYWl0Rm9yU2luZ2xlT2JqZWN0KHRocmVhZF8uR2V0KCksIElORklO
SVRFKSA9PSBXQUlUX09CSkVDVF8wKQorICAgICAgPDwgIkZhaWxlZCB0byBqb2luIHRoZSB0aHJl
YWQgd2l0aCBlcnJvciAiIDw8IDo6R2V0TGFzdEVycm9yKCkgPDwgIi4iOworfQorCisvLyBNYXBz
IGEgdGhyZWFkIHRvIGEgc2V0IG9mIFRocmVhZElkVG9UaHJlYWRMb2NhbHMgdGhhdCBoYXZlIHZh
bHVlcworLy8gaW5zdGFudGlhdGVkIG9uIHRoYXQgdGhyZWFkIGFuZCBub3RpZmllcyB0aGVtIHdo
ZW4gdGhlIHRocmVhZCBleGl0cy4gIEEKKy8vIFRocmVhZExvY2FsIGluc3RhbmNlIGlzIGV4cGVj
dGVkIHRvIHBlcnNpc3QgdW50aWwgYWxsIHRocmVhZHMgaXQgaGFzCisvLyB2YWx1ZXMgb24gaGF2
ZSB0ZXJtaW5hdGVkLgorY2xhc3MgVGhyZWFkTG9jYWxSZWdpc3RyeUltcGwgeworIHB1YmxpYzoK
KyAgLy8gUmVnaXN0ZXJzIHRocmVhZF9sb2NhbF9pbnN0YW5jZSBhcyBoYXZpbmcgdmFsdWUgb24g
dGhlIGN1cnJlbnQgdGhyZWFkLgorICAvLyBSZXR1cm5zIGEgdmFsdWUgdGhhdCBjYW4gYmUgdXNl
ZCB0byBpZGVudGlmeSB0aGUgdGhyZWFkIGZyb20gb3RoZXIgdGhyZWFkcy4KKyAgc3RhdGljIFRo
cmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlKiBHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCgKKyAgICAg
IGNvbnN0IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2FsX2luc3RhbmNlKSB7CisgICAgRFdP
UkQgY3VycmVudF90aHJlYWQgPSA6OkdldEN1cnJlbnRUaHJlYWRJZCgpOworICAgIE11dGV4TG9j
ayBsb2NrKCZtdXRleF8pOworICAgIFRocmVhZElkVG9UaHJlYWRMb2NhbHMqIGNvbnN0IHRocmVh
ZF90b190aHJlYWRfbG9jYWxzID0KKyAgICAgICAgR2V0VGhyZWFkTG9jYWxzTWFwTG9ja2VkKCk7
CisgICAgVGhyZWFkSWRUb1RocmVhZExvY2Fsczo6aXRlcmF0b3IgdGhyZWFkX2xvY2FsX3BvcyA9
CisgICAgICAgIHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5maW5kKGN1cnJlbnRfdGhyZWFkKTsK
KyAgICBpZiAodGhyZWFkX2xvY2FsX3BvcyA9PSB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+ZW5k
KCkpIHsKKyAgICAgIHRocmVhZF9sb2NhbF9wb3MgPSB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+
aW5zZXJ0KAorICAgICAgICAgIHN0ZDo6bWFrZV9wYWlyKGN1cnJlbnRfdGhyZWFkLCBUaHJlYWRM
b2NhbFZhbHVlcygpKSkuZmlyc3Q7CisgICAgICBTdGFydFdhdGNoZXJUaHJlYWRGb3IoY3VycmVu
dF90aHJlYWQpOworICAgIH0KKyAgICBUaHJlYWRMb2NhbFZhbHVlcyYgdGhyZWFkX2xvY2FsX3Zh
bHVlcyA9IHRocmVhZF9sb2NhbF9wb3MtPnNlY29uZDsKKyAgICBUaHJlYWRMb2NhbFZhbHVlczo6
aXRlcmF0b3IgdmFsdWVfcG9zID0KKyAgICAgICAgdGhyZWFkX2xvY2FsX3ZhbHVlcy5maW5kKHRo
cmVhZF9sb2NhbF9pbnN0YW5jZSk7CisgICAgaWYgKHZhbHVlX3BvcyA9PSB0aHJlYWRfbG9jYWxf
dmFsdWVzLmVuZCgpKSB7CisgICAgICB2YWx1ZV9wb3MgPQorICAgICAgICAgIHRocmVhZF9sb2Nh
bF92YWx1ZXMKKyAgICAgICAgICAgICAgLmluc2VydChzdGQ6Om1ha2VfcGFpcigKKyAgICAgICAg
ICAgICAgICAgIHRocmVhZF9sb2NhbF9pbnN0YW5jZSwKKyAgICAgICAgICAgICAgICAgIGxpbmtl
ZF9wdHI8VGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2U+KAorICAgICAgICAgICAgICAgICAgICAg
IHRocmVhZF9sb2NhbF9pbnN0YW5jZS0+TmV3VmFsdWVGb3JDdXJyZW50VGhyZWFkKCkpKSkKKyAg
ICAgICAgICAgICAgLmZpcnN0OworICAgIH0KKyAgICByZXR1cm4gdmFsdWVfcG9zLT5zZWNvbmQu
Z2V0KCk7CisgIH0KKworICBzdGF0aWMgdm9pZCBPblRocmVhZExvY2FsRGVzdHJveWVkKAorICAg
ICAgY29uc3QgVGhyZWFkTG9jYWxCYXNlKiB0aHJlYWRfbG9jYWxfaW5zdGFuY2UpIHsKKyAgICBz
dGQ6OnZlY3RvcjxsaW5rZWRfcHRyPFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlPiA+IHZhbHVl
X2hvbGRlcnM7CisgICAgLy8gQ2xlYW4gdXAgdGhlIFRocmVhZExvY2FsVmFsdWVzIGRhdGEgc3Ry
dWN0dXJlIHdoaWxlIGhvbGRpbmcgdGhlIGxvY2ssIGJ1dAorICAgIC8vIGRlZmVyIHRoZSBkZXN0
cnVjdGlvbiBvZiB0aGUgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2VzLgorICAgIHsKKyAgICAg
IE11dGV4TG9jayBsb2NrKCZtdXRleF8pOworICAgICAgVGhyZWFkSWRUb1RocmVhZExvY2Fscyog
Y29uc3QgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMgPQorICAgICAgICAgIEdldFRocmVhZExvY2Fs
c01hcExvY2tlZCgpOworICAgICAgZm9yIChUaHJlYWRJZFRvVGhyZWFkTG9jYWxzOjppdGVyYXRv
ciBpdCA9CisgICAgICAgICAgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmJlZ2luKCk7CisgICAg
ICAgICAgaXQgIT0gdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmVuZCgpOworICAgICAgICAgICsr
aXQpIHsKKyAgICAgICAgVGhyZWFkTG9jYWxWYWx1ZXMmIHRocmVhZF9sb2NhbF92YWx1ZXMgPSBp
dC0+c2Vjb25kOworICAgICAgICBUaHJlYWRMb2NhbFZhbHVlczo6aXRlcmF0b3IgdmFsdWVfcG9z
ID0KKyAgICAgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMuZmluZCh0aHJlYWRfbG9jYWxfaW5z
dGFuY2UpOworICAgICAgICBpZiAodmFsdWVfcG9zICE9IHRocmVhZF9sb2NhbF92YWx1ZXMuZW5k
KCkpIHsKKyAgICAgICAgICB2YWx1ZV9ob2xkZXJzLnB1c2hfYmFjayh2YWx1ZV9wb3MtPnNlY29u
ZCk7CisgICAgICAgICAgdGhyZWFkX2xvY2FsX3ZhbHVlcy5lcmFzZSh2YWx1ZV9wb3MpOworICAg
ICAgICAgIC8vIFRoaXMgJ2lmJyBjYW4gb25seSBiZSBzdWNjZXNzZnVsIGF0IG1vc3Qgb25jZSwg
c28gdGhlb3JldGljYWxseSB3ZQorICAgICAgICAgIC8vIGNvdWxkIGJyZWFrIG91dCBvZiB0aGUg
bG9vcCBoZXJlLCBidXQgd2UgZG9uJ3QgYm90aGVyIGRvaW5nIHNvLgorICAgICAgICB9CisgICAg
ICB9CisgICAgfQorICAgIC8vIE91dHNpZGUgdGhlIGxvY2ssIGxldCB0aGUgZGVzdHJ1Y3RvciBm
b3IgJ3ZhbHVlX2hvbGRlcnMnIGRlYWxsb2NhdGUgdGhlCisgICAgLy8gVGhyZWFkTG9jYWxWYWx1
ZUhvbGRlckJhc2VzLgorICB9CisKKyAgc3RhdGljIHZvaWQgT25UaHJlYWRFeGl0KERXT1JEIHRo
cmVhZF9pZCkgeworICAgIEdURVNUX0NIRUNLXyh0aHJlYWRfaWQgIT0gMCkgPDwgOjpHZXRMYXN0
RXJyb3IoKTsKKyAgICBzdGQ6OnZlY3RvcjxsaW5rZWRfcHRyPFRocmVhZExvY2FsVmFsdWVIb2xk
ZXJCYXNlPiA+IHZhbHVlX2hvbGRlcnM7CisgICAgLy8gQ2xlYW4gdXAgdGhlIFRocmVhZElkVG9U
aHJlYWRMb2NhbHMgZGF0YSBzdHJ1Y3R1cmUgd2hpbGUgaG9sZGluZyB0aGUKKyAgICAvLyBsb2Nr
LCBidXQgZGVmZXIgdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBUaHJlYWRMb2NhbFZhbHVlSG9sZGVy
QmFzZXMuCisgICAgeworICAgICAgTXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7CisgICAgICBUaHJl
YWRJZFRvVGhyZWFkTG9jYWxzKiBjb25zdCB0aHJlYWRfdG9fdGhyZWFkX2xvY2FscyA9CisgICAg
ICAgICAgR2V0VGhyZWFkTG9jYWxzTWFwTG9ja2VkKCk7CisgICAgICBUaHJlYWRJZFRvVGhyZWFk
TG9jYWxzOjppdGVyYXRvciB0aHJlYWRfbG9jYWxfcG9zID0KKyAgICAgICAgICB0aHJlYWRfdG9f
dGhyZWFkX2xvY2Fscy0+ZmluZCh0aHJlYWRfaWQpOworICAgICAgaWYgKHRocmVhZF9sb2NhbF9w
b3MgIT0gdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmVuZCgpKSB7CisgICAgICAgIFRocmVhZExv
Y2FsVmFsdWVzJiB0aHJlYWRfbG9jYWxfdmFsdWVzID0gdGhyZWFkX2xvY2FsX3Bvcy0+c2Vjb25k
OworICAgICAgICBmb3IgKFRocmVhZExvY2FsVmFsdWVzOjppdGVyYXRvciB2YWx1ZV9wb3MgPQor
ICAgICAgICAgICAgdGhyZWFkX2xvY2FsX3ZhbHVlcy5iZWdpbigpOworICAgICAgICAgICAgdmFs
dWVfcG9zICE9IHRocmVhZF9sb2NhbF92YWx1ZXMuZW5kKCk7CisgICAgICAgICAgICArK3ZhbHVl
X3BvcykgeworICAgICAgICAgIHZhbHVlX2hvbGRlcnMucHVzaF9iYWNrKHZhbHVlX3Bvcy0+c2Vj
b25kKTsKKyAgICAgICAgfQorICAgICAgICB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+ZXJhc2Uo
dGhyZWFkX2xvY2FsX3Bvcyk7CisgICAgICB9CisgICAgfQorICAgIC8vIE91dHNpZGUgdGhlIGxv
Y2ssIGxldCB0aGUgZGVzdHJ1Y3RvciBmb3IgJ3ZhbHVlX2hvbGRlcnMnIGRlYWxsb2NhdGUgdGhl
CisgICAgLy8gVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2VzLgorICB9CisKKyBwcml2YXRlOgor
ICAvLyBJbiBhIHBhcnRpY3VsYXIgdGhyZWFkLCBtYXBzIGEgVGhyZWFkTG9jYWwgb2JqZWN0IHRv
IGl0cyB2YWx1ZS4KKyAgdHlwZWRlZiBzdGQ6Om1hcDxjb25zdCBUaHJlYWRMb2NhbEJhc2UqLAor
ICAgICAgICAgICAgICAgICAgIGxpbmtlZF9wdHI8VGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2U+
ID4gVGhyZWFkTG9jYWxWYWx1ZXM7CisgIC8vIFN0b3JlcyBhbGwgVGhyZWFkSWRUb1RocmVhZExv
Y2FscyBoYXZpbmcgdmFsdWVzIGluIGEgdGhyZWFkLCBpbmRleGVkIGJ5CisgIC8vIHRocmVhZCdz
IElELgorICB0eXBlZGVmIHN0ZDo6bWFwPERXT1JELCBUaHJlYWRMb2NhbFZhbHVlcz4gVGhyZWFk
SWRUb1RocmVhZExvY2FsczsKKworICAvLyBIb2xkcyB0aGUgdGhyZWFkIGlkIGFuZCB0aHJlYWQg
aGFuZGxlIHRoYXQgd2UgcGFzcyBmcm9tCisgIC8vIFN0YXJ0V2F0Y2hlclRocmVhZEZvciB0byBX
YXRjaGVyVGhyZWFkRnVuYy4KKyAgdHlwZWRlZiBzdGQ6OnBhaXI8RFdPUkQsIEhBTkRMRT4gVGhy
ZWFkSWRBbmRIYW5kbGU7CisKKyAgc3RhdGljIHZvaWQgU3RhcnRXYXRjaGVyVGhyZWFkRm9yKERX
T1JEIHRocmVhZF9pZCkgeworICAgIC8vIFRoZSByZXR1cm5lZCBoYW5kbGUgd2lsbCBiZSBrZXB0
IGluIHRocmVhZF9tYXAgYW5kIGNsb3NlZCBieQorICAgIC8vIHdhdGNoZXJfdGhyZWFkIGluIFdh
dGNoZXJUaHJlYWRGdW5jLgorICAgIEhBTkRMRSB0aHJlYWQgPSA6Ok9wZW5UaHJlYWQoU1lOQ0hS
T05JWkUgfCBUSFJFQURfUVVFUllfSU5GT1JNQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVh
ZF9pZCk7CisgICAgR1RFU1RfQ0hFQ0tfKHRocmVhZCAhPSBOVUxMKTsKKyAgICAvLyBXZSBuZWVk
IHRvIHBhc3MgYSB2YWxpZCB0aHJlYWQgSUQgcG9pbnRlciBpbnRvIENyZWF0ZVRocmVhZCBmb3Ig
aXQKKyAgICAvLyB0byB3b3JrIGNvcnJlY3RseSB1bmRlciBXaW45OC4KKyAgICBEV09SRCB3YXRj
aGVyX3RocmVhZF9pZDsKKyAgICBIQU5ETEUgd2F0Y2hlcl90aHJlYWQgPSA6OkNyZWF0ZVRocmVh
ZCgKKyAgICAgICAgTlVMTCwgICAvLyBEZWZhdWx0IHNlY3VyaXR5LgorICAgICAgICAwLCAgICAg
IC8vIERlZmF1bHQgc3RhY2sgc2l6ZQorICAgICAgICAmVGhyZWFkTG9jYWxSZWdpc3RyeUltcGw6
OldhdGNoZXJUaHJlYWRGdW5jLAorICAgICAgICByZWludGVycHJldF9jYXN0PExQVk9JRD4obmV3
IFRocmVhZElkQW5kSGFuZGxlKHRocmVhZF9pZCwgdGhyZWFkKSksCisgICAgICAgIENSRUFURV9T
VVNQRU5ERUQsCisgICAgICAgICZ3YXRjaGVyX3RocmVhZF9pZCk7CisgICAgR1RFU1RfQ0hFQ0tf
KHdhdGNoZXJfdGhyZWFkICE9IE5VTEwpOworICAgIC8vIEdpdmUgdGhlIHdhdGNoZXIgdGhyZWFk
IHRoZSBzYW1lIHByaW9yaXR5IGFzIG91cnMgdG8gYXZvaWQgYmVpbmcKKyAgICAvLyBibG9ja2Vk
IGJ5IGl0LgorICAgIDo6U2V0VGhyZWFkUHJpb3JpdHkod2F0Y2hlcl90aHJlYWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICA6OkdldFRocmVhZFByaW9yaXR5KDo6R2V0Q3VycmVudFRocmVhZCgp
KSk7CisgICAgOjpSZXN1bWVUaHJlYWQod2F0Y2hlcl90aHJlYWQpOworICAgIDo6Q2xvc2VIYW5k
bGUod2F0Y2hlcl90aHJlYWQpOworICB9CisKKyAgLy8gTW9uaXRvcnMgZXhpdCBmcm9tIGEgZ2l2
ZW4gdGhyZWFkIGFuZCBub3RpZmllcyB0aG9zZQorICAvLyBUaHJlYWRJZFRvVGhyZWFkTG9jYWxz
IGFib3V0IHRocmVhZCB0ZXJtaW5hdGlvbi4KKyAgc3RhdGljIERXT1JEIFdJTkFQSSBXYXRjaGVy
VGhyZWFkRnVuYyhMUFZPSUQgcGFyYW0pIHsKKyAgICBjb25zdCBUaHJlYWRJZEFuZEhhbmRsZSog
dGFoID0KKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUaHJlYWRJZEFuZEhhbmRsZSo+
KHBhcmFtKTsKKyAgICBHVEVTVF9DSEVDS18oCisgICAgICAgIDo6V2FpdEZvclNpbmdsZU9iamVj
dCh0YWgtPnNlY29uZCwgSU5GSU5JVEUpID09IFdBSVRfT0JKRUNUXzApOworICAgIE9uVGhyZWFk
RXhpdCh0YWgtPmZpcnN0KTsKKyAgICA6OkNsb3NlSGFuZGxlKHRhaC0+c2Vjb25kKTsKKyAgICBk
ZWxldGUgdGFoOworICAgIHJldHVybiAwOworICB9CisKKyAgLy8gUmV0dXJucyBtYXAgb2YgdGhy
ZWFkIGxvY2FsIGluc3RhbmNlcy4KKyAgc3RhdGljIFRocmVhZElkVG9UaHJlYWRMb2NhbHMqIEdl
dFRocmVhZExvY2Fsc01hcExvY2tlZCgpIHsKKyAgICBtdXRleF8uQXNzZXJ0SGVsZCgpOworICAg
IE1lbW9yeUlzTm90RGVhbGxvY2F0ZWQgbWVtb3J5X2lzX25vdF9kZWFsbG9jYXRlZDsKKyAgICBz
dGF0aWMgVGhyZWFkSWRUb1RocmVhZExvY2FscyogbWFwID0gbmV3IFRocmVhZElkVG9UaHJlYWRM
b2NhbHMoKTsKKyAgICByZXR1cm4gbWFwOworICB9CisKKyAgLy8gUHJvdGVjdHMgYWNjZXNzIHRv
IEdldFRocmVhZExvY2Fsc01hcExvY2tlZCgpIGFuZCBpdHMgcmV0dXJuIHZhbHVlLgorICBzdGF0
aWMgTXV0ZXggbXV0ZXhfOworICAvLyBQcm90ZWN0cyBhY2Nlc3MgdG8gR2V0VGhyZWFkTWFwTG9j
a2VkKCkgYW5kIGl0cyByZXR1cm4gdmFsdWUuCisgIHN0YXRpYyBNdXRleCB0aHJlYWRfbWFwX211
dGV4XzsKK307CisKK011dGV4IFRocmVhZExvY2FsUmVnaXN0cnlJbXBsOjptdXRleF8oTXV0ZXg6
OmtTdGF0aWNNdXRleCk7CitNdXRleCBUaHJlYWRMb2NhbFJlZ2lzdHJ5SW1wbDo6dGhyZWFkX21h
cF9tdXRleF8oTXV0ZXg6OmtTdGF0aWNNdXRleCk7CisKK1RocmVhZExvY2FsVmFsdWVIb2xkZXJC
YXNlKiBUaHJlYWRMb2NhbFJlZ2lzdHJ5OjpHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCgKKyAgICAg
IGNvbnN0IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2FsX2luc3RhbmNlKSB7CisgIHJldHVy
biBUaHJlYWRMb2NhbFJlZ2lzdHJ5SW1wbDo6R2V0VmFsdWVPbkN1cnJlbnRUaHJlYWQoCisgICAg
ICB0aHJlYWRfbG9jYWxfaW5zdGFuY2UpOworfQorCit2b2lkIFRocmVhZExvY2FsUmVnaXN0cnk6
Ok9uVGhyZWFkTG9jYWxEZXN0cm95ZWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRo
cmVhZF9sb2NhbF9pbnN0YW5jZSkgeworICBUaHJlYWRMb2NhbFJlZ2lzdHJ5SW1wbDo6T25UaHJl
YWRMb2NhbERlc3Ryb3llZCh0aHJlYWRfbG9jYWxfaW5zdGFuY2UpOworfQorCisjZW5kaWYgIC8v
IEdURVNUX0lTX1RIUkVBRFNBRkUgJiYgR1RFU1RfT1NfV0lORE9XUwogCiAjaWYgR1RFU1RfVVNF
U19QT1NJWF9SRQogCkBAIC0xODAsMjAgKzY4OCwyMCBAQCBib29sIElzSW5TZXQoY2hhciBjaCwg
Y29uc3QgY2hhciogc3RyKSB7CiAvLyBSZXR1cm5zIHRydWUgaWZmIGNoIGJlbG9uZ3MgdG8gdGhl
IGdpdmVuIGNsYXNzaWZpY2F0aW9uLiAgVW5saWtlCiAvLyBzaW1pbGFyIGZ1bmN0aW9ucyBpbiA8
Y3R5cGUuaD4sIHRoZXNlIGFyZW4ndCBhZmZlY3RlZCBieSB0aGUKIC8vIGN1cnJlbnQgbG9jYWxl
LgotYm9vbCBJc0RpZ2l0KGNoYXIgY2gpIHsgcmV0dXJuICcwJyA8PSBjaCAmJiBjaCA8PSAnOSc7
IH0KLWJvb2wgSXNQdW5jdChjaGFyIGNoKSB7Citib29sIElzQXNjaWlEaWdpdChjaGFyIGNoKSB7
IHJldHVybiAnMCcgPD0gY2ggJiYgY2ggPD0gJzknOyB9Citib29sIElzQXNjaWlQdW5jdChjaGFy
IGNoKSB7CiAgIHJldHVybiBJc0luU2V0KGNoLCAiXi0hXCIjJCUmJygpKissLi86Ozw9Pj9AW1xc
XV9ge3x9fiIpOwogfQogYm9vbCBJc1JlcGVhdChjaGFyIGNoKSB7IHJldHVybiBJc0luU2V0KGNo
LCAiPyorIik7IH0KLWJvb2wgSXNXaGl0ZVNwYWNlKGNoYXIgY2gpIHsgcmV0dXJuIElzSW5TZXQo
Y2gsICIgXGZcblxyXHRcdiIpOyB9Ci1ib29sIElzV29yZENoYXIoY2hhciBjaCkgeworYm9vbCBJ
c0FzY2lpV2hpdGVTcGFjZShjaGFyIGNoKSB7IHJldHVybiBJc0luU2V0KGNoLCAiIFxmXG5cclx0
XHYiKTsgfQorYm9vbCBJc0FzY2lpV29yZENoYXIoY2hhciBjaCkgewogICByZXR1cm4gKCdhJyA8
PSBjaCAmJiBjaCA8PSAneicpIHx8ICgnQScgPD0gY2ggJiYgY2ggPD0gJ1onKSB8fAogICAgICAg
KCcwJyA8PSBjaCAmJiBjaCA8PSAnOScpIHx8IGNoID09ICdfJzsKIH0KIAogLy8gUmV0dXJucyB0
cnVlIGlmZiAiXFxjIiBpcyBhIHN1cHBvcnRlZCBlc2NhcGUgc2VxdWVuY2UuCiBib29sIElzVmFs
aWRFc2NhcGUoY2hhciBjKSB7Ci0gIHJldHVybiAoSXNQdW5jdChjKSB8fCBJc0luU2V0KGMsICJk
RGZucnNTdHZ3VyIpKTsKKyAgcmV0dXJuIChJc0FzY2lpUHVuY3QoYykgfHwgSXNJblNldChjLCAi
ZERmbnJzU3R2d1ciKSk7CiB9CiAKIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGdpdmVuIGF0b20g
KHNwZWNpZmllZCBieSBlc2NhcGVkIGFuZCBwYXR0ZXJuKQpAQCAtMjAxLDI2ICs3MDksMjYgQEAg
Ym9vbCBJc1ZhbGlkRXNjYXBlKGNoYXIgYykgewogYm9vbCBBdG9tTWF0Y2hlc0NoYXIoYm9vbCBl
c2NhcGVkLCBjaGFyIHBhdHRlcm5fY2hhciwgY2hhciBjaCkgewogICBpZiAoZXNjYXBlZCkgeyAg
Ly8gIlxccCIgd2hlcmUgcCBpcyBwYXR0ZXJuX2NoYXIuCiAgICAgc3dpdGNoIChwYXR0ZXJuX2No
YXIpIHsKLSAgICAgIGNhc2UgJ2QnOiByZXR1cm4gSXNEaWdpdChjaCk7Ci0gICAgICBjYXNlICdE
JzogcmV0dXJuICFJc0RpZ2l0KGNoKTsKKyAgICAgIGNhc2UgJ2QnOiByZXR1cm4gSXNBc2NpaURp
Z2l0KGNoKTsKKyAgICAgIGNhc2UgJ0QnOiByZXR1cm4gIUlzQXNjaWlEaWdpdChjaCk7CiAgICAg
ICBjYXNlICdmJzogcmV0dXJuIGNoID09ICdcZic7CiAgICAgICBjYXNlICduJzogcmV0dXJuIGNo
ID09ICdcbic7CiAgICAgICBjYXNlICdyJzogcmV0dXJuIGNoID09ICdccic7Ci0gICAgICBjYXNl
ICdzJzogcmV0dXJuIElzV2hpdGVTcGFjZShjaCk7Ci0gICAgICBjYXNlICdTJzogcmV0dXJuICFJ
c1doaXRlU3BhY2UoY2gpOworICAgICAgY2FzZSAncyc6IHJldHVybiBJc0FzY2lpV2hpdGVTcGFj
ZShjaCk7CisgICAgICBjYXNlICdTJzogcmV0dXJuICFJc0FzY2lpV2hpdGVTcGFjZShjaCk7CiAg
ICAgICBjYXNlICd0JzogcmV0dXJuIGNoID09ICdcdCc7CiAgICAgICBjYXNlICd2JzogcmV0dXJu
IGNoID09ICdcdic7Ci0gICAgICBjYXNlICd3JzogcmV0dXJuIElzV29yZENoYXIoY2gpOwotICAg
ICAgY2FzZSAnVyc6IHJldHVybiAhSXNXb3JkQ2hhcihjaCk7CisgICAgICBjYXNlICd3JzogcmV0
dXJuIElzQXNjaWlXb3JkQ2hhcihjaCk7CisgICAgICBjYXNlICdXJzogcmV0dXJuICFJc0FzY2lp
V29yZENoYXIoY2gpOwogICAgIH0KLSAgICByZXR1cm4gSXNQdW5jdChwYXR0ZXJuX2NoYXIpICYm
IHBhdHRlcm5fY2hhciA9PSBjaDsKKyAgICByZXR1cm4gSXNBc2NpaVB1bmN0KHBhdHRlcm5fY2hh
cikgJiYgcGF0dGVybl9jaGFyID09IGNoOwogICB9CiAKICAgcmV0dXJuIChwYXR0ZXJuX2NoYXIg
PT0gJy4nICYmIGNoICE9ICdcbicpIHx8IHBhdHRlcm5fY2hhciA9PSBjaDsKIH0KIAogLy8gSGVs
cGVyIGZ1bmN0aW9uIHVzZWQgYnkgVmFsaWRhdGVSZWdleCgpIHRvIGZvcm1hdCBlcnJvciBtZXNz
YWdlcy4KLVN0cmluZyBGb3JtYXRSZWdleFN5bnRheEVycm9yKGNvbnN0IGNoYXIqIHJlZ2V4LCBp
bnQgaW5kZXgpIHsKK3N0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRSZWdleFN5bnRheEVycm9yKGNv
bnN0IGNoYXIqIHJlZ2V4LCBpbnQgaW5kZXgpIHsKICAgcmV0dXJuIChNZXNzYWdlKCkgPDwgIlN5
bnRheCBlcnJvciBhdCBpbmRleCAiIDw8IGluZGV4CiAgICAgICAgICAgPDwgIiBpbiBzaW1wbGUg
cmVndWxhciBleHByZXNzaW9uIFwiIiA8PCByZWdleCA8PCAiXCI6ICIpLkdldFN0cmluZygpOwog
fQpAQCAtMjI5LDcgKzczNyw3IEBAIFN0cmluZyBGb3JtYXRSZWdleFN5bnRheEVycm9yKGNvbnN0
IGNoYXIqIHJlZ2V4LCBpbnQgaW5kZXgpIHsKIC8vIG90aGVyd2lzZSByZXR1cm5zIHRydWUuCiBi
b29sIFZhbGlkYXRlUmVnZXgoY29uc3QgY2hhciogcmVnZXgpIHsKICAgaWYgKHJlZ2V4ID09IE5V
TEwpIHsKLSAgICAvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogZml4IHRoZSBzb3VyY2UgZmlsZSBs
b2NhdGlvbiBpbiB0aGUKKyAgICAvLyBGSVhNRTogZml4IHRoZSBzb3VyY2UgZmlsZSBsb2NhdGlv
biBpbiB0aGUKICAgICAvLyBhc3NlcnRpb24gZmFpbHVyZXMgdG8gbWF0Y2ggd2hlcmUgdGhlIHJl
Z2V4IGlzIHVzZWQgaW4gdXNlcgogICAgIC8vIGNvZGUuCiAgICAgQUREX0ZBSUxVUkUoKSA8PCAi
TlVMTCBpcyBub3QgYSB2YWxpZCBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uLiI7CkBAIC00MjIs
NiArOTMwLDM3IEBAIHZvaWQgUkU6OkluaXQoY29uc3QgY2hhciogcmVnZXgpIHsKIAogI2VuZGlm
ICAvLyBHVEVTVF9VU0VTX1BPU0lYX1JFCiAKK2NvbnN0IGNoYXIga1Vua25vd25GaWxlW10gPSAi
dW5rbm93biBmaWxlIjsKKworLy8gRm9ybWF0cyBhIHNvdXJjZSBmaWxlIHBhdGggYW5kIGEgbGlu
ZSBudW1iZXIgYXMgdGhleSB3b3VsZCBhcHBlYXIKKy8vIGluIGFuIGVycm9yIG1lc3NhZ2UgZnJv
bSB0aGUgY29tcGlsZXIgdXNlZCB0byBjb21waWxlIHRoaXMgY29kZS4KK0dURVNUX0FQSV8gOjpz
dGQ6OnN0cmluZyBGb3JtYXRGaWxlTG9jYXRpb24oY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUp
IHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsZV9uYW1lKGZpbGUgPT0gTlVMTCA/IGtVbmtub3du
RmlsZSA6IGZpbGUpOworCisgIGlmIChsaW5lIDwgMCkgeworICAgIHJldHVybiBmaWxlX25hbWUg
KyAiOiI7CisgIH0KKyNpZmRlZiBfTVNDX1ZFUgorICByZXR1cm4gZmlsZV9uYW1lICsgIigiICsg
U3RyZWFtYWJsZVRvU3RyaW5nKGxpbmUpICsgIik6IjsKKyNlbHNlCisgIHJldHVybiBmaWxlX25h
bWUgKyAiOiIgKyBTdHJlYW1hYmxlVG9TdHJpbmcobGluZSkgKyAiOiI7CisjZW5kaWYgIC8vIF9N
U0NfVkVSCit9CisKKy8vIEZvcm1hdHMgYSBmaWxlIGxvY2F0aW9uIGZvciBjb21waWxlci1pbmRl
cGVuZGVudCBYTUwgb3V0cHV0LgorLy8gQWx0aG91Z2ggdGhpcyBmdW5jdGlvbiBpcyBub3QgcGxh
dGZvcm0gZGVwZW5kZW50LCB3ZSBwdXQgaXQgbmV4dCB0bworLy8gRm9ybWF0RmlsZUxvY2F0aW9u
IGluIG9yZGVyIHRvIGNvbnRyYXN0IHRoZSB0d28gZnVuY3Rpb25zLgorLy8gTm90ZSB0aGF0IEZv
cm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oKSBkb2VzIE5PVCBhcHBlbmQgY29s
b24KKy8vIHRvIHRoZSBmaWxlIGxvY2F0aW9uIGl0IHByb2R1Y2VzLCB1bmxpa2UgRm9ybWF0Rmls
ZUxvY2F0aW9uKCkuCitHVEVTVF9BUElfIDo6c3RkOjpzdHJpbmcgRm9ybWF0Q29tcGlsZXJJbmRl
cGVuZGVudEZpbGVMb2NhdGlvbigKKyAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSkgewor
ICBjb25zdCBzdGQ6OnN0cmluZyBmaWxlX25hbWUoZmlsZSA9PSBOVUxMID8ga1Vua25vd25GaWxl
IDogZmlsZSk7CisKKyAgaWYgKGxpbmUgPCAwKQorICAgIHJldHVybiBmaWxlX25hbWU7CisgIGVs
c2UKKyAgICByZXR1cm4gZmlsZV9uYW1lICsgIjoiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGxpbmUp
OworfQogCiBHVGVzdExvZzo6R1Rlc3RMb2coR1Rlc3RMb2dTZXZlcml0eSBzZXZlcml0eSwgY29u
c3QgY2hhciogZmlsZSwgaW50IGxpbmUpCiAgICAgOiBzZXZlcml0eV8oc2V2ZXJpdHkpIHsKQEAg
LTQ0MSwyMSArOTgwLDE5IEBAIEdUZXN0TG9nOjp+R1Rlc3RMb2coKSB7CiAgICAgcG9zaXg6OkFi
b3J0KCk7CiAgIH0KIH0KKwogLy8gRGlzYWJsZSBNaWNyb3NvZnQgZGVwcmVjYXRpb24gd2Fybmlu
Z3MgZm9yIFBPU0lYIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbQogLy8gdGhpcyBjbGFzcyAoY3JlYXQs
IGR1cCwgZHVwMiwgYW5kIGNsb3NlKQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmco
cHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0OTk2KQotI2VuZGlmICAvLyBfTVNDX1ZF
UgorR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRFRF9QVVNIXygpCiAKLSNpZiBHVEVTVF9IQVNf
U1RSRUFNX1JFRElSRUNUSU9OXworI2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KIAog
Ly8gT2JqZWN0IHRoYXQgY2FwdHVyZXMgYW4gb3V0cHV0IHN0cmVhbSAoc3Rkb3V0L3N0ZGVyciku
CiBjbGFzcyBDYXB0dXJlZFN0cmVhbSB7CiAgcHVibGljOgogICAvLyBUaGUgY3RvciByZWRpcmVj
dHMgdGhlIHN0cmVhbSB0byBhIHRlbXBvcmFyeSBmaWxlLgotICBDYXB0dXJlZFN0cmVhbShpbnQg
ZmQpIDogZmRfKGZkKSwgdW5jYXB0dXJlZF9mZF8oZHVwKGZkKSkgewotI2lmIEdURVNUX09TX1dJ
TkRPV1MKKyAgZXhwbGljaXQgQ2FwdHVyZWRTdHJlYW0oaW50IGZkKSA6IGZkXyhmZCksIHVuY2Fw
dHVyZWRfZmRfKGR1cChmZCkpIHsKKyMgaWYgR1RFU1RfT1NfV0lORE9XUwogICAgIGNoYXIgdGVt
cF9kaXJfcGF0aFtNQVhfUEFUSCArIDFdID0geyAnXDAnIH07ICAvLyBOT0xJTlQKICAgICBjaGFy
IHRlbXBfZmlsZV9wYXRoW01BWF9QQVRIICsgMV0gPSB7ICdcMCcgfTsgIC8vIE5PTElOVAogCkBA
IC00NzAsMTQgKzEwMDcsMzMgQEAgY2xhc3MgQ2FwdHVyZWRTdHJlYW0gewogICAgIEdURVNUX0NI
RUNLXyhjYXB0dXJlZF9mZCAhPSAtMSkgPDwgIlVuYWJsZSB0byBvcGVuIHRlbXBvcmFyeSBmaWxl
ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHRlbXBfZmlsZV9wYXRo
OwogICAgIGZpbGVuYW1lXyA9IHRlbXBfZmlsZV9wYXRoOwotI2Vsc2UKLSAgICAvLyBUaGVyZSdz
IG5vIGd1YXJhbnRlZSB0aGF0IGEgdGVzdCBoYXMgd3JpdGUgYWNjZXNzIHRvIHRoZQotICAgIC8v
IGN1cnJlbnQgZGlyZWN0b3J5LCBzbyB3ZSBjcmVhdGUgdGhlIHRlbXBvcmFyeSBmaWxlIGluIHRo
ZSAvdG1wCi0gICAgLy8gZGlyZWN0b3J5IGluc3RlYWQuCisjIGVsc2UKKyAgICAvLyBUaGVyZSdz
IG5vIGd1YXJhbnRlZSB0aGF0IGEgdGVzdCBoYXMgd3JpdGUgYWNjZXNzIHRvIHRoZSBjdXJyZW50
CisgICAgLy8gZGlyZWN0b3J5LCBzbyB3ZSBjcmVhdGUgdGhlIHRlbXBvcmFyeSBmaWxlIGluIHRo
ZSAvdG1wIGRpcmVjdG9yeQorICAgIC8vIGluc3RlYWQuIFdlIHVzZSAvdG1wIG9uIG1vc3Qgc3lz
dGVtcywgYW5kIC9zZGNhcmQgb24gQW5kcm9pZC4KKyAgICAvLyBUaGF0J3MgYmVjYXVzZSBBbmRy
b2lkIGRvZXNuJ3QgaGF2ZSAvdG1wLgorIyAgaWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRAorICAg
IC8vIE5vdGU6IEFuZHJvaWQgYXBwbGljYXRpb25zIGFyZSBleHBlY3RlZCB0byBjYWxsIHRoZSBm
cmFtZXdvcmsncworICAgIC8vIENvbnRleHQuZ2V0RXh0ZXJuYWxTdG9yYWdlRGlyZWN0b3J5KCkg
bWV0aG9kIHRocm91Z2ggSk5JIHRvIGdldAorICAgIC8vIHRoZSBsb2NhdGlvbiBvZiB0aGUgd29y
bGQtd3JpdGFibGUgU0QgQ2FyZCBkaXJlY3RvcnkuIEhvd2V2ZXIsCisgICAgLy8gdGhpcyByZXF1
aXJlcyBhIENvbnRleHQgaGFuZGxlLCB3aGljaCBjYW5ub3QgYmUgcmV0cmlldmVkCisgICAgLy8g
Z2xvYmFsbHkgZnJvbSBuYXRpdmUgY29kZS4gRG9pbmcgc28gYWxzbyBwcmVjbHVkZXMgcnVubmlu
ZyB0aGUKKyAgICAvLyBjb2RlIGFzIHBhcnQgb2YgYSByZWd1bGFyIHN0YW5kYWxvbmUgZXhlY3V0
YWJsZSwgd2hpY2ggZG9lc24ndAorICAgIC8vIHJ1biBpbiBhIERhbHZpayBwcm9jZXNzIChlLmcu
IHdoZW4gcnVubmluZyBpdCB0aHJvdWdoICdhZGIgc2hlbGwnKS4KKyAgICAvLworICAgIC8vIFRo
ZSBsb2NhdGlvbiAvc2RjYXJkIGlzIGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSBuYXRpdmUgY29k
ZQorICAgIC8vIGFuZCBpcyB0aGUgb25seSBsb2NhdGlvbiAodW5vZmZpY2lhbGx5KSBzdXBwb3J0
ZWQgYnkgdGhlIEFuZHJvaWQKKyAgICAvLyB0ZWFtLiBJdCdzIGdlbmVyYWxseSBhIHN5bWxpbmsg
dG8gdGhlIHJlYWwgU0QgQ2FyZCBtb3VudCBwb2ludAorICAgIC8vIHdoaWNoIGNhbiBiZSAvbW50
L3NkY2FyZCwgL21udC9zZGNhcmQwLCAvc3lzdGVtL21lZGlhL3NkY2FyZCwgb3IKKyAgICAvLyBv
dGhlciBPRU0tY3VzdG9taXplZCBsb2NhdGlvbnMuIE5ldmVyIHJlbHkgb24gdGhlc2UsIGFuZCBh
bHdheXMKKyAgICAvLyB1c2UgL3NkY2FyZC4KKyAgICBjaGFyIG5hbWVfdGVtcGxhdGVbXSA9ICIv
c2RjYXJkL2d0ZXN0X2NhcHR1cmVkX3N0cmVhbS5YWFhYWFgiOworIyAgZWxzZQogICAgIGNoYXIg
bmFtZV90ZW1wbGF0ZVtdID0gIi90bXAvY2FwdHVyZWRfc3RyZWFtLlhYWFhYWCI7CisjICBlbmRp
ZiAgLy8gR1RFU1RfT1NfTElOVVhfQU5EUk9JRAogICAgIGNvbnN0IGludCBjYXB0dXJlZF9mZCA9
IG1rc3RlbXAobmFtZV90ZW1wbGF0ZSk7CiAgICAgZmlsZW5hbWVfID0gbmFtZV90ZW1wbGF0ZTsK
LSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9X
UwogICAgIGZmbHVzaChOVUxMKTsKICAgICBkdXAyKGNhcHR1cmVkX2ZkLCBmZF8pOwogICAgIGNs
b3NlKGNhcHR1cmVkX2ZkKTsKQEAgLTQ4Nyw3ICsxMDQzLDcgQEAgY2xhc3MgQ2FwdHVyZWRTdHJl
YW0gewogICAgIHJlbW92ZShmaWxlbmFtZV8uY19zdHIoKSk7CiAgIH0KIAotICBTdHJpbmcgR2V0
Q2FwdHVyZWRTdHJpbmcoKSB7CisgIHN0ZDo6c3RyaW5nIEdldENhcHR1cmVkU3RyaW5nKCkgewog
ICAgIGlmICh1bmNhcHR1cmVkX2ZkXyAhPSAtMSkgewogICAgICAgLy8gUmVzdG9yZXMgdGhlIG9y
aWdpbmFsIHN0cmVhbS4KICAgICAgIGZmbHVzaChOVUxMKTsKQEAgLTQ5NywxOCArMTA1MywxMiBA
QCBjbGFzcyBDYXB0dXJlZFN0cmVhbSB7CiAgICAgfQogCiAgICAgRklMRSogY29uc3QgZmlsZSA9
IHBvc2l4OjpGT3BlbihmaWxlbmFtZV8uY19zdHIoKSwgInIiKTsKLSAgICBjb25zdCBTdHJpbmcg
Y29udGVudCA9IFJlYWRFbnRpcmVGaWxlKGZpbGUpOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNv
bnRlbnQgPSBSZWFkRW50aXJlRmlsZShmaWxlKTsKICAgICBwb3NpeDo6RkNsb3NlKGZpbGUpOwog
ICAgIHJldHVybiBjb250ZW50OwogICB9CiAKICBwcml2YXRlOgotICAvLyBSZWFkcyB0aGUgZW50
aXJlIGNvbnRlbnQgb2YgYSBmaWxlIGFzIGEgU3RyaW5nLgotICBzdGF0aWMgU3RyaW5nIFJlYWRF
bnRpcmVGaWxlKEZJTEUqIGZpbGUpOwotCi0gIC8vIFJldHVybnMgdGhlIHNpemUgKGluIGJ5dGVz
KSBvZiBhIGZpbGUuCi0gIHN0YXRpYyBzaXplX3QgR2V0RmlsZVNpemUoRklMRSogZmlsZSk7Ci0K
ICAgY29uc3QgaW50IGZkXzsgIC8vIEEgc3RyZWFtIHRvIGNhcHR1cmUuCiAgIGludCB1bmNhcHR1
cmVkX2ZkXzsKICAgLy8gTmFtZSBvZiB0aGUgdGVtcG9yYXJ5IGZpbGUgaG9sZGluZyB0aGUgc3Rk
ZXJyIG91dHB1dC4KQEAgLTUxNyw0NCArMTA2NywxNCBAQCBjbGFzcyBDYXB0dXJlZFN0cmVhbSB7
CiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQ2FwdHVyZWRTdHJlYW0pOwogfTsK
IAotLy8gUmV0dXJucyB0aGUgc2l6ZSAoaW4gYnl0ZXMpIG9mIGEgZmlsZS4KLXNpemVfdCBDYXB0
dXJlZFN0cmVhbTo6R2V0RmlsZVNpemUoRklMRSogZmlsZSkgewotICBmc2VlayhmaWxlLCAwLCBT
RUVLX0VORCk7Ci0gIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGZ0ZWxsKGZpbGUpKTsKLX0K
LQotLy8gUmVhZHMgdGhlIGVudGlyZSBjb250ZW50IG9mIGEgZmlsZSBhcyBhIHN0cmluZy4KLVN0
cmluZyBDYXB0dXJlZFN0cmVhbTo6UmVhZEVudGlyZUZpbGUoRklMRSogZmlsZSkgewotICBjb25z
dCBzaXplX3QgZmlsZV9zaXplID0gR2V0RmlsZVNpemUoZmlsZSk7Ci0gIGNoYXIqIGNvbnN0IGJ1
ZmZlciA9IG5ldyBjaGFyW2ZpbGVfc2l6ZV07Ci0KLSAgc2l6ZV90IGJ5dGVzX2xhc3RfcmVhZCA9
IDA7ICAvLyAjIG9mIGJ5dGVzIHJlYWQgaW4gdGhlIGxhc3QgZnJlYWQoKQotICBzaXplX3QgYnl0
ZXNfcmVhZCA9IDA7ICAgICAgIC8vICMgb2YgYnl0ZXMgcmVhZCBzbyBmYXIKLQotICBmc2Vlayhm
aWxlLCAwLCBTRUVLX1NFVCk7Ci0KLSAgLy8gS2VlcHMgcmVhZGluZyB0aGUgZmlsZSB1bnRpbCB3
ZSBjYW5ub3QgcmVhZCBmdXJ0aGVyIG9yIHRoZQotICAvLyBwcmUtZGV0ZXJtaW5lZCBmaWxlIHNp
emUgaXMgcmVhY2hlZC4KLSAgZG8gewotICAgIGJ5dGVzX2xhc3RfcmVhZCA9IGZyZWFkKGJ1ZmZl
citieXRlc19yZWFkLCAxLCBmaWxlX3NpemUtYnl0ZXNfcmVhZCwgZmlsZSk7Ci0gICAgYnl0ZXNf
cmVhZCArPSBieXRlc19sYXN0X3JlYWQ7Ci0gIH0gd2hpbGUgKGJ5dGVzX2xhc3RfcmVhZCA+IDAg
JiYgYnl0ZXNfcmVhZCA8IGZpbGVfc2l6ZSk7Ci0KLSAgY29uc3QgU3RyaW5nIGNvbnRlbnQoYnVm
ZmVyLCBieXRlc19yZWFkKTsKLSAgZGVsZXRlW10gYnVmZmVyOwotCi0gIHJldHVybiBjb250ZW50
OwotfQotCi0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYgIC8v
IF9NU0NfVkVSCitHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BPUF8oKQogCiBzdGF0aWMg
Q2FwdHVyZWRTdHJlYW0qIGdfY2FwdHVyZWRfc3RkZXJyID0gTlVMTDsKIHN0YXRpYyBDYXB0dXJl
ZFN0cmVhbSogZ19jYXB0dXJlZF9zdGRvdXQgPSBOVUxMOwogCiAvLyBTdGFydHMgY2FwdHVyaW5n
IGFuIG91dHB1dCBzdHJlYW0gKHN0ZG91dC9zdGRlcnIpLgotdm9pZCBDYXB0dXJlU3RyZWFtKGlu
dCBmZCwgY29uc3QgY2hhciogc3RyZWFtX25hbWUsIENhcHR1cmVkU3RyZWFtKiogc3RyZWFtKSB7
CitzdGF0aWMgdm9pZCBDYXB0dXJlU3RyZWFtKGludCBmZCwgY29uc3QgY2hhciogc3RyZWFtX25h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIENhcHR1cmVkU3RyZWFtKiogc3RyZWFtKSB7
CiAgIGlmICgqc3RyZWFtICE9IE5VTEwpIHsKICAgICBHVEVTVF9MT0dfKEZBVEFMKSA8PCAiT25s
eSBvbmUgIiA8PCBzdHJlYW1fbmFtZQogICAgICAgICAgICAgICAgICAgICAgIDw8ICIgY2FwdHVy
ZXIgY2FuIGV4aXN0IGF0IGEgdGltZS4iOwpAQCAtNTYzLDggKzEwODMsOCBAQCB2b2lkIENhcHR1
cmVTdHJlYW0oaW50IGZkLCBjb25zdCBjaGFyKiBzdHJlYW1fbmFtZSwgQ2FwdHVyZWRTdHJlYW0q
KiBzdHJlYW0pIHsKIH0KIAogLy8gU3RvcHMgY2FwdHVyaW5nIHRoZSBvdXRwdXQgc3RyZWFtIGFu
ZCByZXR1cm5zIHRoZSBjYXB0dXJlZCBzdHJpbmcuCi1TdHJpbmcgR2V0Q2FwdHVyZWRTdHJlYW0o
Q2FwdHVyZWRTdHJlYW0qKiBjYXB0dXJlZF9zdHJlYW0pIHsKLSAgY29uc3QgU3RyaW5nIGNvbnRl
bnQgPSAoKmNhcHR1cmVkX3N0cmVhbSktPkdldENhcHR1cmVkU3RyaW5nKCk7CitzdGF0aWMgc3Rk
OjpzdHJpbmcgR2V0Q2FwdHVyZWRTdHJlYW0oQ2FwdHVyZWRTdHJlYW0qKiBjYXB0dXJlZF9zdHJl
YW0pIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgY29udGVudCA9ICgqY2FwdHVyZWRfc3RyZWFtKS0+
R2V0Q2FwdHVyZWRTdHJpbmcoKTsKIAogICBkZWxldGUgKmNhcHR1cmVkX3N0cmVhbTsKICAgKmNh
cHR1cmVkX3N0cmVhbSA9IE5VTEw7CkBAIC01ODMsMjEgKzExMDMsNzkgQEAgdm9pZCBDYXB0dXJl
U3RkZXJyKCkgewogfQogCiAvLyBTdG9wcyBjYXB0dXJpbmcgc3Rkb3V0IGFuZCByZXR1cm5zIHRo
ZSBjYXB0dXJlZCBzdHJpbmcuCi1TdHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKSB7IHJldHVybiBH
ZXRDYXB0dXJlZFN0cmVhbSgmZ19jYXB0dXJlZF9zdGRvdXQpOyB9CitzdGQ6OnN0cmluZyBHZXRD
YXB0dXJlZFN0ZG91dCgpIHsKKyAgcmV0dXJuIEdldENhcHR1cmVkU3RyZWFtKCZnX2NhcHR1cmVk
X3N0ZG91dCk7Cit9CiAKIC8vIFN0b3BzIGNhcHR1cmluZyBzdGRlcnIgYW5kIHJldHVybnMgdGhl
IGNhcHR1cmVkIHN0cmluZy4KLVN0cmluZyBHZXRDYXB0dXJlZFN0ZGVycigpIHsgcmV0dXJuIEdl
dENhcHR1cmVkU3RyZWFtKCZnX2NhcHR1cmVkX3N0ZGVycik7IH0KK3N0ZDo6c3RyaW5nIEdldENh
cHR1cmVkU3RkZXJyKCkgeworICByZXR1cm4gR2V0Q2FwdHVyZWRTdHJlYW0oJmdfY2FwdHVyZWRf
c3RkZXJyKTsKK30KIAotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXwor
I2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCisKKworCisKKworc2l6ZV90
IEdldEZpbGVTaXplKEZJTEUqIGZpbGUpIHsKKyAgZnNlZWsoZmlsZSwgMCwgU0VFS19FTkQpOwor
ICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihmdGVsbChmaWxlKSk7Cit9CisKK3N0ZDo6c3Ry
aW5nIFJlYWRFbnRpcmVGaWxlKEZJTEUqIGZpbGUpIHsKKyAgY29uc3Qgc2l6ZV90IGZpbGVfc2l6
ZSA9IEdldEZpbGVTaXplKGZpbGUpOworICBjaGFyKiBjb25zdCBidWZmZXIgPSBuZXcgY2hhcltm
aWxlX3NpemVdOworCisgIHNpemVfdCBieXRlc19sYXN0X3JlYWQgPSAwOyAgLy8gIyBvZiBieXRl
cyByZWFkIGluIHRoZSBsYXN0IGZyZWFkKCkKKyAgc2l6ZV90IGJ5dGVzX3JlYWQgPSAwOyAgICAg
ICAvLyAjIG9mIGJ5dGVzIHJlYWQgc28gZmFyCisKKyAgZnNlZWsoZmlsZSwgMCwgU0VFS19TRVQp
OworCisgIC8vIEtlZXBzIHJlYWRpbmcgdGhlIGZpbGUgdW50aWwgd2UgY2Fubm90IHJlYWQgZnVy
dGhlciBvciB0aGUKKyAgLy8gcHJlLWRldGVybWluZWQgZmlsZSBzaXplIGlzIHJlYWNoZWQuCisg
IGRvIHsKKyAgICBieXRlc19sYXN0X3JlYWQgPSBmcmVhZChidWZmZXIrYnl0ZXNfcmVhZCwgMSwg
ZmlsZV9zaXplLWJ5dGVzX3JlYWQsIGZpbGUpOworICAgIGJ5dGVzX3JlYWQgKz0gYnl0ZXNfbGFz
dF9yZWFkOworICB9IHdoaWxlIChieXRlc19sYXN0X3JlYWQgPiAwICYmIGJ5dGVzX3JlYWQgPCBm
aWxlX3NpemUpOworCisgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvbnRlbnQoYnVmZmVyLCBieXRlc19y
ZWFkKTsKKyAgZGVsZXRlW10gYnVmZmVyOworCisgIHJldHVybiBjb250ZW50OworfQogCiAjaWYg
R1RFU1RfSEFTX0RFQVRIX1RFU1QKK3N0YXRpYyBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4qIGdfaW5qZWN0ZWRfdGVzdF9hcmd2cyA9IE5VTEw7ICAvLyBPd25lZC4KIAotLy8gQSBjb3B5
IG9mIGFsbCBjb21tYW5kIGxpbmUgYXJndW1lbnRzLiAgU2V0IGJ5IEluaXRHb29nbGVUZXN0KCku
Ci06OnN0ZDo6dmVjdG9yPFN0cmluZz4gZ19hcmd2czsKK3N0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
PiBHZXRJbmplY3RhYmxlQXJndnMoKSB7CisgIGlmIChnX2luamVjdGVkX3Rlc3RfYXJndnMgIT0g
TlVMTCkgeworICAgIHJldHVybiAqZ19pbmplY3RlZF90ZXN0X2FyZ3ZzOworICB9CisgIHJldHVy
biBHZXRBcmd2cygpOworfQorCit2b2lkIFNldEluamVjdGFibGVBcmd2cyhjb25zdCBzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4qIG5ld19hcmd2cykgeworICBpZiAoZ19pbmplY3RlZF90ZXN0X2Fy
Z3ZzICE9IG5ld19hcmd2cykgZGVsZXRlIGdfaW5qZWN0ZWRfdGVzdF9hcmd2czsKKyAgZ19pbmpl
Y3RlZF90ZXN0X2FyZ3ZzID0gbmV3X2FyZ3ZzOworfQogCi0vLyBSZXR1cm5zIHRoZSBjb21tYW5k
IGxpbmUgYXMgYSB2ZWN0b3Igb2Ygc3RyaW5ncy4KLWNvbnN0IDo6c3RkOjp2ZWN0b3I8U3RyaW5n
PiYgR2V0QXJndnMoKSB7IHJldHVybiBnX2FyZ3ZzOyB9Cit2b2lkIFNldEluamVjdGFibGVBcmd2
cyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIG5ld19hcmd2cykgeworICBTZXRJbmpl
Y3RhYmxlQXJndnMoCisgICAgICBuZXcgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KG5ld19hcmd2
cy5iZWdpbigpLCBuZXdfYXJndnMuZW5kKCkpKTsKK30KKworI2lmIEdURVNUX0hBU19HTE9CQUxf
U1RSSU5HCit2b2lkIFNldEluamVjdGFibGVBcmd2cyhjb25zdCBzdGQ6OnZlY3RvcjwgOjpzdHJp
bmc+JiBuZXdfYXJndnMpIHsKKyAgU2V0SW5qZWN0YWJsZUFyZ3ZzKAorICAgICAgbmV3IHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPihuZXdfYXJndnMuYmVnaW4oKSwgbmV3X2FyZ3ZzLmVuZCgpKSk7
Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCiAKK3ZvaWQgQ2xlYXJJbmpl
Y3RhYmxlQXJndnMoKSB7CisgIGRlbGV0ZSBnX2luamVjdGVkX3Rlc3RfYXJndnM7CisgIGdfaW5q
ZWN0ZWRfdGVzdF9hcmd2cyA9IE5VTEw7Cit9CiAjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9U
RVNUCiAKICNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQpAQCAtNjEyLDEzICsxMTkwLDEzIEBA
IHZvaWQgQWJvcnQoKSB7CiAvLyBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2
YXJpYWJsZSBjb3JyZXNwb25kaW5nIHRvIHRoZQogLy8gZ2l2ZW4gZmxhZy4gIEZvciBleGFtcGxl
LCBGbGFnVG9FbnZWYXIoImZvbyIpIHdpbGwgcmV0dXJuCiAvLyAiR1RFU1RfRk9PIiBpbiB0aGUg
b3Blbi1zb3VyY2UgdmVyc2lvbi4KLXN0YXRpYyBTdHJpbmcgRmxhZ1RvRW52VmFyKGNvbnN0IGNo
YXIqIGZsYWcpIHsKLSAgY29uc3QgU3RyaW5nIGZ1bGxfZmxhZyA9CitzdGF0aWMgc3RkOjpzdHJp
bmcgRmxhZ1RvRW52VmFyKGNvbnN0IGNoYXIqIGZsYWcpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcg
ZnVsbF9mbGFnID0KICAgICAgIChNZXNzYWdlKCkgPDwgR1RFU1RfRkxBR19QUkVGSVhfIDw8IGZs
YWcpLkdldFN0cmluZygpOwogCiAgIE1lc3NhZ2UgZW52X3ZhcjsKICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgIT0gZnVsbF9mbGFnLmxlbmd0aCgpOyBpKyspIHsKLSAgICBlbnZfdmFyIDw8IHN0YXRp
Y19jYXN0PGNoYXI+KHRvdXBwZXIoZnVsbF9mbGFnLmNfc3RyKClbaV0pKTsKKyAgICBlbnZfdmFy
IDw8IFRvVXBwZXIoZnVsbF9mbGFnLmNfc3RyKClbaV0pOwogICB9CiAKICAgcmV0dXJuIGVudl92
YXIuR2V0U3RyaW5nKCk7CkBAIC02NzAsMTcgKzEyNDgsMjQgQEAgYm9vbCBQYXJzZUludDMyKGNv
bnN0IE1lc3NhZ2UmIHNyY190ZXh0LCBjb25zdCBjaGFyKiBzdHIsIEludDMyKiB2YWx1ZSkgewog
Ly8KIC8vIFRoZSB2YWx1ZSBpcyBjb25zaWRlcmVkIHRydWUgaWZmIGl0J3Mgbm90ICIwIi4KIGJv
b2wgQm9vbEZyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBib29sIGRlZmF1bHRfdmFsdWUp
IHsKLSAgY29uc3QgU3RyaW5nIGVudl92YXIgPSBGbGFnVG9FbnZWYXIoZmxhZyk7CisjaWYgZGVm
aW5lZChHVEVTVF9HRVRfQk9PTF9GUk9NX0VOVl8pCisgIHJldHVybiBHVEVTVF9HRVRfQk9PTF9G
Uk9NX0VOVl8oZmxhZywgZGVmYXVsdF92YWx1ZSk7CisjZWxzZQorICBjb25zdCBzdGQ6OnN0cmlu
ZyBlbnZfdmFyID0gRmxhZ1RvRW52VmFyKGZsYWcpOwogICBjb25zdCBjaGFyKiBjb25zdCBzdHJp
bmdfdmFsdWUgPSBwb3NpeDo6R2V0RW52KGVudl92YXIuY19zdHIoKSk7CiAgIHJldHVybiBzdHJp
bmdfdmFsdWUgPT0gTlVMTCA/CiAgICAgICBkZWZhdWx0X3ZhbHVlIDogc3RyY21wKHN0cmluZ192
YWx1ZSwgIjAiKSAhPSAwOworI2VuZGlmICAvLyBkZWZpbmVkKEdURVNUX0dFVF9CT09MX0ZST01f
RU5WXykKIH0KIAogLy8gUmVhZHMgYW5kIHJldHVybnMgYSAzMi1iaXQgaW50ZWdlciBzdG9yZWQg
aW4gdGhlIGVudmlyb25tZW50CiAvLyB2YXJpYWJsZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZl
biBmbGFnOyBpZiBpdCBpc24ndCBzZXQgb3IKIC8vIGRvZXNuJ3QgcmVwcmVzZW50IGEgdmFsaWQg
MzItYml0IGludGVnZXIsIHJldHVybnMgZGVmYXVsdF92YWx1ZS4KIEludDMyIEludDMyRnJvbUdU
ZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIEludDMyIGRlZmF1bHRfdmFsdWUpIHsKLSAgY29uc3Qg
U3RyaW5nIGVudl92YXIgPSBGbGFnVG9FbnZWYXIoZmxhZyk7CisjaWYgZGVmaW5lZChHVEVTVF9H
RVRfSU5UMzJfRlJPTV9FTlZfKQorICByZXR1cm4gR1RFU1RfR0VUX0lOVDMyX0ZST01fRU5WXyhm
bGFnLCBkZWZhdWx0X3ZhbHVlKTsKKyNlbHNlCisgIGNvbnN0IHN0ZDo6c3RyaW5nIGVudl92YXIg
PSBGbGFnVG9FbnZWYXIoZmxhZyk7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ192YWx1ZSA9
IHBvc2l4OjpHZXRFbnYoZW52X3Zhci5jX3N0cigpKTsKICAgaWYgKHN0cmluZ192YWx1ZSA9PSBO
VUxMKSB7CiAgICAgLy8gVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQuCkBAIC02
OTcsMTQgKzEyODIsMzYgQEAgSW50MzIgSW50MzJGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxh
ZywgSW50MzIgZGVmYXVsdF92YWx1ZSkgewogICB9CiAKICAgcmV0dXJuIHJlc3VsdDsKKyNlbmRp
ZiAgLy8gZGVmaW5lZChHVEVTVF9HRVRfSU5UMzJfRlJPTV9FTlZfKQorfQorCisvLyBBcyBhIHNw
ZWNpYWwgY2FzZSBmb3IgdGhlICdvdXRwdXQnIGZsYWcsIGlmIEdURVNUX09VVFBVVCBpcyBub3QK
Ky8vIHNldCwgd2UgbG9vayBmb3IgWE1MX09VVFBVVF9GSUxFLCB3aGljaCBpcyBzZXQgYnkgdGhl
IEJhemVsIGJ1aWxkCisvLyBzeXN0ZW0uICBUaGUgdmFsdWUgb2YgWE1MX09VVFBVVF9GSUxFIGlz
IGEgZmlsZW5hbWUgd2l0aG91dCB0aGUKKy8vICJ4bWw6IiBwcmVmaXggb2YgR1RFU1RfT1VUUFVU
LgorLy8gTm90ZSB0aGF0IHRoaXMgaXMgbWVhbnQgdG8gYmUgY2FsbGVkIGF0IHRoZSBjYWxsIHNp
dGUgc28gaXQgZG9lcworLy8gbm90IGNoZWNrIHRoYXQgdGhlIGZsYWcgaXMgJ291dHB1dCcKKy8v
IEluIGVzc2VuY2UgdGhpcyBjaGVja3MgYW4gZW52IHZhcmlhYmxlIGNhbGxlZCBYTUxfT1VUUFVU
X0ZJTEUKKy8vIGFuZCBpZiBpdCBpcyBzZXQgd2UgcHJlcGVuZCAieG1sOiIgdG8gaXRzIHZhbHVl
LCBpZiBpdCBub3Qgc2V0IHdlIHJldHVybiAiIgorc3RkOjpzdHJpbmcgT3V0cHV0RmxhZ0Fsc29D
aGVja0VudlZhcigpeworICBzdGQ6OnN0cmluZyBkZWZhdWx0X3ZhbHVlX2Zvcl9vdXRwdXRfZmxh
ZyA9ICIiOworICBjb25zdCBjaGFyKiB4bWxfb3V0cHV0X2ZpbGVfZW52ID0gcG9zaXg6OkdldEVu
digiWE1MX09VVFBVVF9GSUxFIik7CisgIGlmIChOVUxMICE9IHhtbF9vdXRwdXRfZmlsZV9lbnYp
IHsKKyAgICBkZWZhdWx0X3ZhbHVlX2Zvcl9vdXRwdXRfZmxhZyA9IHN0ZDo6c3RyaW5nKCJ4bWw6
IikgKyB4bWxfb3V0cHV0X2ZpbGVfZW52OworICB9CisgIHJldHVybiBkZWZhdWx0X3ZhbHVlX2Zv
cl9vdXRwdXRfZmxhZzsKIH0KIAogLy8gUmVhZHMgYW5kIHJldHVybnMgdGhlIHN0cmluZyBlbnZp
cm9ubWVudCB2YXJpYWJsZSBjb3JyZXNwb25kaW5nIHRvCiAvLyB0aGUgZ2l2ZW4gZmxhZzsgaWYg
aXQncyBub3Qgc2V0LCByZXR1cm5zIGRlZmF1bHRfdmFsdWUuCiBjb25zdCBjaGFyKiBTdHJpbmdG
cm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywgY29uc3QgY2hhciogZGVmYXVsdF92YWx1ZSkg
ewotICBjb25zdCBTdHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFnKTsKKyNpZiBkZWZp
bmVkKEdURVNUX0dFVF9TVFJJTkdfRlJPTV9FTlZfKQorICByZXR1cm4gR1RFU1RfR0VUX1NUUklO
R19GUk9NX0VOVl8oZmxhZywgZGVmYXVsdF92YWx1ZSk7CisjZWxzZQorICBjb25zdCBzdGQ6OnN0
cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52VmFyKGZsYWcpOwogICBjb25zdCBjaGFyKiBjb25zdCB2
YWx1ZSA9IHBvc2l4OjpHZXRFbnYoZW52X3Zhci5jX3N0cigpKTsKICAgcmV0dXJuIHZhbHVlID09
IE5VTEwgPyBkZWZhdWx0X3ZhbHVlIDogdmFsdWU7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1Rf
R0VUX1NUUklOR19GUk9NX0VOVl8pCiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXByaW50ZXJzLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXByaW50ZXJzLmNjCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRlNGQyNDVlOWZjODg5N2FmMjEzNzY3OWQ5MTNkNjY1ZmQ4NDM2ZTEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcHJpbnRlcnMuY2MKQEAgLTAs
MCArMSw0NTcgQEAKKy8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoK
Ky8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
Ly8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLwor
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworCisvLyBHb29nbGUgVGVzdCAtIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcg
RnJhbWV3b3JrCisvLworLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgYSB1bml2ZXJzYWwgdmFsdWUg
cHJpbnRlciB0aGF0IGNhbiBwcmludCBhCisvLyB2YWx1ZSBvZiBhbnkgdHlwZSBUOgorLy8KKy8v
ICAgdm9pZCA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCh2
YWx1ZSwgb3N0cmVhbV9wdHIpOworLy8KKy8vIEl0IHVzZXMgdGhlIDw8IG9wZXJhdG9yIHdoZW4g
cG9zc2libGUsIGFuZCBwcmludHMgdGhlIGJ5dGVzIGluIHRoZQorLy8gb2JqZWN0IG90aGVyd2lz
ZS4gIEEgdXNlciBjYW4gb3ZlcnJpZGUgaXRzIGJlaGF2aW9yIGZvciBhIGNsYXNzCisvLyB0eXBl
IEZvbyBieSBkZWZpbmluZyBlaXRoZXIgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYsIGNvbnN0
IEZvbyYpCisvLyBvciB2b2lkIFByaW50VG8oY29uc3QgRm9vJiwgOjpzdGQ6Om9zdHJlYW0qKSBp
biB0aGUgbmFtZXNwYWNlIHRoYXQKKy8vIGRlZmluZXMgRm9vLgorCisjaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3QtcHJpbnRlcnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGNjdHlwZT4K
KyNpbmNsdWRlIDxjd2NoYXI+CisjaW5jbHVkZSA8b3N0cmVhbT4gIC8vIE5PTElOVAorI2luY2x1
ZGUgPHN0cmluZz4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCisjaW5j
bHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgorCituYW1lc3BhY2UgdGVzdGluZyB7CisK
K25hbWVzcGFjZSB7CisKK3VzaW5nIDo6c3RkOjpvc3RyZWFtOworCisvLyBQcmludHMgYSBzZWdt
ZW50IG9mIGJ5dGVzIGluIHRoZSBnaXZlbiBvYmplY3QuCitHVEVTVF9BVFRSSUJVVEVfTk9fU0FO
SVRJWkVfTUVNT1JZXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX0FERFJFU1NfCitHVEVT
VF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXwordm9pZCBQcmludEJ5dGVTZWdtZW50SW5P
YmplY3RUbyhjb25zdCB1bnNpZ25lZCBjaGFyKiBvYmpfYnl0ZXMsIHNpemVfdCBzdGFydCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvdW50LCBvc3RyZWFtKiBvcykg
eworICBjaGFyIHRleHRbNV0gPSAiIjsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gY291bnQ7
IGkrKykgeworICAgIGNvbnN0IHNpemVfdCBqID0gc3RhcnQgKyBpOworICAgIGlmIChpICE9IDAp
IHsKKyAgICAgIC8vIE9yZ2FuaXplcyB0aGUgYnl0ZXMgaW50byBncm91cHMgb2YgMiBmb3IgZWFz
eSBwYXJzaW5nIGJ5CisgICAgICAvLyBodW1hbi4KKyAgICAgIGlmICgoaiAlIDIpID09IDApCisg
ICAgICAgICpvcyA8PCAnICc7CisgICAgICBlbHNlCisgICAgICAgICpvcyA8PCAnLSc7CisgICAg
fQorICAgIEdURVNUX1NOUFJJTlRGXyh0ZXh0LCBzaXplb2YodGV4dCksICIlMDJYIiwgb2JqX2J5
dGVzW2pdKTsKKyAgICAqb3MgPDwgdGV4dDsKKyAgfQorfQorCisvLyBQcmludHMgdGhlIGJ5dGVz
IGluIHRoZSBnaXZlbiB2YWx1ZSB0byB0aGUgZ2l2ZW4gb3N0cmVhbS4KK3ZvaWQgUHJpbnRCeXRl
c0luT2JqZWN0VG9JbXBsKGNvbnN0IHVuc2lnbmVkIGNoYXIqIG9ial9ieXRlcywgc2l6ZV90IGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3N0cmVhbSogb3MpIHsKKyAgLy8g
VGVsbHMgdGhlIHVzZXIgaG93IGJpZyB0aGUgb2JqZWN0IGlzLgorICAqb3MgPDwgY291bnQgPDwg
Ii1ieXRlIG9iamVjdCA8IjsKKworICBjb25zdCBzaXplX3Qga1RocmVzaG9sZCA9IDEzMjsKKyAg
Y29uc3Qgc2l6ZV90IGtDaHVua1NpemUgPSA2NDsKKyAgLy8gSWYgdGhlIG9iamVjdCBzaXplIGlz
IGJpZ2dlciB0aGFuIGtUaHJlc2hvbGQsIHdlJ2xsIGhhdmUgdG8gb21pdAorICAvLyBzb21lIGRl
dGFpbHMgYnkgcHJpbnRpbmcgb25seSB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0IGtDaHVua1NpemUK
KyAgLy8gYnl0ZXMuCisgIC8vIEZJWE1FOiBsZXQgdGhlIHVzZXIgY29udHJvbCB0aGUgdGhyZXNo
b2xkIHVzaW5nIGEgZmxhZy4KKyAgaWYgKGNvdW50IDwga1RocmVzaG9sZCkgeworICAgIFByaW50
Qnl0ZVNlZ21lbnRJbk9iamVjdFRvKG9ial9ieXRlcywgMCwgY291bnQsIG9zKTsKKyAgfSBlbHNl
IHsKKyAgICBQcmludEJ5dGVTZWdtZW50SW5PYmplY3RUbyhvYmpfYnl0ZXMsIDAsIGtDaHVua1Np
emUsIG9zKTsKKyAgICAqb3MgPDwgIiAuLi4gIjsKKyAgICAvLyBSb3VuZHMgdXAgdG8gMi1ieXRl
IGJvdW5kYXJ5LgorICAgIGNvbnN0IHNpemVfdCByZXN1bWVfcG9zID0gKGNvdW50IC0ga0NodW5r
U2l6ZSArIDEpLzIqMjsKKyAgICBQcmludEJ5dGVTZWdtZW50SW5PYmplY3RUbyhvYmpfYnl0ZXMs
IHJlc3VtZV9wb3MsIGNvdW50IC0gcmVzdW1lX3Bvcywgb3MpOworICB9CisgICpvcyA8PCAiPiI7
Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCituYW1lc3BhY2UgaW50ZXJuYWwyIHsKKworLy8gRGVs
ZWdhdGVzIHRvIFByaW50Qnl0ZXNJbk9iamVjdFRvSW1wbCgpIHRvIHByaW50IHRoZSBieXRlcyBp
biB0aGUKKy8vIGdpdmVuIG9iamVjdC4gIFRoZSBkZWxlZ2F0aW9uIHNpbXBsaWZpZXMgdGhlIGlt
cGxlbWVudGF0aW9uLCB3aGljaAorLy8gdXNlcyB0aGUgPDwgb3BlcmF0b3IgYW5kIHRodXMgaXMg
ZWFzaWVyIGRvbmUgb3V0c2lkZSBvZiB0aGUKKy8vIDo6dGVzdGluZzo6aW50ZXJuYWwgbmFtZXNw
YWNlLCB3aGljaCBjb250YWlucyBhIDw8IG9wZXJhdG9yIHRoYXQKKy8vIHNvbWV0aW1lcyBjb25m
bGljdHMgd2l0aCB0aGUgb25lIGluIFNUTC4KK3ZvaWQgUHJpbnRCeXRlc0luT2JqZWN0VG8oY29u
c3QgdW5zaWduZWQgY2hhciogb2JqX2J5dGVzLCBzaXplX3QgY291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9zdHJlYW0qIG9zKSB7CisgIFByaW50Qnl0ZXNJbk9iamVjdFRvSW1wbChv
YmpfYnl0ZXMsIGNvdW50LCBvcyk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbDIKKwor
bmFtZXNwYWNlIGludGVybmFsIHsKKworLy8gRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBhIGNo
YXIgKG9yIHdjaGFyX3QpLCB3ZSBwcmludCBpdCBpbiBvbmUKKy8vIG9mIHRocmVlIGZvcm1hdHM6
CisvLyAgIC0gYXMgaXMgaWYgaXQncyBhIHByaW50YWJsZSBBU0NJSSAoZS5nLiAnYScsICcyJywg
JyAnKSwKKy8vICAgLSBhcyBhIGhleGFkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZSAoZS5nLiAnXHg3
RicpLCBvcgorLy8gICAtIGFzIGEgc3BlY2lhbCBlc2NhcGUgc2VxdWVuY2UgKGUuZy4gJ1xyJywg
J1xuJykuCitlbnVtIENoYXJGb3JtYXQgeworICBrQXNJcywKKyAga0hleEVzY2FwZSwKKyAga1Nw
ZWNpYWxFc2NhcGUKK307CisKKy8vIFJldHVybnMgdHJ1ZSBpZiBjIGlzIGEgcHJpbnRhYmxlIEFT
Q0lJIGNoYXJhY3Rlci4gIFdlIHRlc3QgdGhlCisvLyB2YWx1ZSBvZiBjIGRpcmVjdGx5IGluc3Rl
YWQgb2YgY2FsbGluZyBpc3ByaW50KCksIHdoaWNoIGlzIGJ1Z2d5IG9uCisvLyBXaW5kb3dzIE1v
YmlsZS4KK2lubGluZSBib29sIElzUHJpbnRhYmxlQXNjaWkod2NoYXJfdCBjKSB7CisgIHJldHVy
biAweDIwIDw9IGMgJiYgYyA8PSAweDdFOworfQorCisvLyBQcmludHMgYSB3aWRlIG9yIG5hcnJv
dyBjaGFyIGMgYXMgYSBjaGFyYWN0ZXIgbGl0ZXJhbCB3aXRob3V0IHRoZQorLy8gcXVvdGVzLCBl
c2NhcGluZyBpdCB3aGVuIG5lY2Vzc2FyeTsgcmV0dXJucyBob3cgYyB3YXMgZm9ybWF0dGVkLgor
Ly8gVGhlIHRlbXBsYXRlIGFyZ3VtZW50IFVuc2lnbmVkQ2hhciBpcyB0aGUgdW5zaWduZWQgdmVy
c2lvbiBvZiBDaGFyLAorLy8gd2hpY2ggaXMgdGhlIHR5cGUgb2YgYy4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBVbnNpZ25lZENoYXIsIHR5cGVuYW1lIENoYXI+CitzdGF0aWMgQ2hhckZvcm1hdCBQcmlu
dEFzQ2hhckxpdGVyYWxUbyhDaGFyIGMsIG9zdHJlYW0qIG9zKSB7CisgIHN3aXRjaCAoc3RhdGlj
X2Nhc3Q8d2NoYXJfdD4oYykpIHsKKyAgICBjYXNlIEwnXDAnOgorICAgICAgKm9zIDw8ICJcXDAi
OworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1wnJzoKKyAgICAgICpvcyA8PCAiXFwnIjsKKyAg
ICAgIGJyZWFrOworICAgIGNhc2UgTCdcXCc6CisgICAgICAqb3MgPDwgIlxcXFwiOworICAgICAg
YnJlYWs7CisgICAgY2FzZSBMJ1xhJzoKKyAgICAgICpvcyA8PCAiXFxhIjsKKyAgICAgIGJyZWFr
OworICAgIGNhc2UgTCdcYic6CisgICAgICAqb3MgPDwgIlxcYiI7CisgICAgICBicmVhazsKKyAg
ICBjYXNlIEwnXGYnOgorICAgICAgKm9zIDw8ICJcXGYiOworICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBMJ1xuJzoKKyAgICAgICpvcyA8PCAiXFxuIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTCdc
cic6CisgICAgICAqb3MgPDwgIlxcciI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwnXHQnOgor
ICAgICAgKm9zIDw8ICJcXHQiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1x2JzoKKyAgICAg
ICpvcyA8PCAiXFx2IjsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBpZiAoSXNQ
cmludGFibGVBc2NpaShjKSkgeworICAgICAgICAqb3MgPDwgc3RhdGljX2Nhc3Q8Y2hhcj4oYyk7
CisgICAgICAgIHJldHVybiBrQXNJczsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIG9zdHJlYW06
OmZtdGZsYWdzIGZsYWdzID0gb3MtPmZsYWdzKCk7CisgICAgICAgICpvcyA8PCAiXFx4IiA8PCBz
dGQ6OmhleCA8PCBzdGQ6OnVwcGVyY2FzZQorICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8aW50
PihzdGF0aWNfY2FzdDxVbnNpZ25lZENoYXI+KGMpKTsKKyAgICAgICAgb3MtPmZsYWdzKGZsYWdz
KTsKKyAgICAgICAgcmV0dXJuIGtIZXhFc2NhcGU7CisgICAgICB9CisgIH0KKyAgcmV0dXJuIGtT
cGVjaWFsRXNjYXBlOworfQorCisvLyBQcmludHMgYSB3Y2hhcl90IGMgYXMgaWYgaXQncyBwYXJ0
IG9mIGEgc3RyaW5nIGxpdGVyYWwsIGVzY2FwaW5nIGl0IHdoZW4KKy8vIG5lY2Vzc2FyeTsgcmV0
dXJucyBob3cgYyB3YXMgZm9ybWF0dGVkLgorc3RhdGljIENoYXJGb3JtYXQgUHJpbnRBc1N0cmlu
Z0xpdGVyYWxUbyh3Y2hhcl90IGMsIG9zdHJlYW0qIG9zKSB7CisgIHN3aXRjaCAoYykgeworICAg
IGNhc2UgTCdcJyc6CisgICAgICAqb3MgPDwgIiciOworICAgICAgcmV0dXJuIGtBc0lzOworICAg
IGNhc2UgTCciJzoKKyAgICAgICpvcyA8PCAiXFxcIiI7CisgICAgICByZXR1cm4ga1NwZWNpYWxF
c2NhcGU7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBQcmludEFzQ2hhckxpdGVyYWxUbzx3
Y2hhcl90PihjLCBvcyk7CisgIH0KK30KKworLy8gUHJpbnRzIGEgY2hhciBjIGFzIGlmIGl0J3Mg
cGFydCBvZiBhIHN0cmluZyBsaXRlcmFsLCBlc2NhcGluZyBpdCB3aGVuCisvLyBuZWNlc3Nhcnk7
IHJldHVybnMgaG93IGMgd2FzIGZvcm1hdHRlZC4KK3N0YXRpYyBDaGFyRm9ybWF0IFByaW50QXNT
dHJpbmdMaXRlcmFsVG8oY2hhciBjLCBvc3RyZWFtKiBvcykgeworICByZXR1cm4gUHJpbnRBc1N0
cmluZ0xpdGVyYWxUbygKKyAgICAgIHN0YXRpY19jYXN0PHdjaGFyX3Q+KHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KGMpKSwgb3MpOworfQorCisvLyBQcmludHMgYSB3aWRlIG9yIG5hcnJvdyBj
aGFyYWN0ZXIgYyBhbmQgaXRzIGNvZGUuICAnXDAnIGlzIHByaW50ZWQKKy8vIGFzICInXFwwJyIs
IG90aGVyIHVucHJpbnRhYmxlIGNoYXJhY3RlcnMgYXJlIGFsc28gcHJvcGVybHkgZXNjYXBlZAor
Ly8gdXNpbmcgdGhlIHN0YW5kYXJkIEMrKyBlc2NhcGUgc2VxdWVuY2UuICBUaGUgdGVtcGxhdGUg
YXJndW1lbnQKKy8vIFVuc2lnbmVkQ2hhciBpcyB0aGUgdW5zaWduZWQgdmVyc2lvbiBvZiBDaGFy
LCB3aGljaCBpcyB0aGUgdHlwZSBvZiBjLgordGVtcGxhdGUgPHR5cGVuYW1lIFVuc2lnbmVkQ2hh
ciwgdHlwZW5hbWUgQ2hhcj4KK3ZvaWQgUHJpbnRDaGFyQW5kQ29kZVRvKENoYXIgYywgb3N0cmVh
bSogb3MpIHsKKyAgLy8gRmlyc3QsIHByaW50IGMgYXMgYSBsaXRlcmFsIGluIHRoZSBtb3N0IHJl
YWRhYmxlIGZvcm0gd2UgY2FuIGZpbmQuCisgICpvcyA8PCAoKHNpemVvZihjKSA+IDEpID8gIkwn
IiA6ICInIik7CisgIGNvbnN0IENoYXJGb3JtYXQgZm9ybWF0ID0gUHJpbnRBc0NoYXJMaXRlcmFs
VG88VW5zaWduZWRDaGFyPihjLCBvcyk7CisgICpvcyA8PCAiJyI7CisKKyAgLy8gVG8gYWlkIHVz
ZXIgZGVidWdnaW5nLCB3ZSBhbHNvIHByaW50IGMncyBjb2RlIGluIGRlY2ltYWwsIHVubGVzcwor
ICAvLyBpdCdzIDAgKGluIHdoaWNoIGNhc2UgYyB3YXMgcHJpbnRlZCBhcyAnXFwwJywgbWFraW5n
IHRoZSBjb2RlCisgIC8vIG9idmlvdXMpLgorICBpZiAoYyA9PSAwKQorICAgIHJldHVybjsKKyAg
Km9zIDw8ICIgKCIgPDwgc3RhdGljX2Nhc3Q8aW50PihjKTsKKworICAvLyBGb3IgbW9yZSBjb252
ZW5pZW5jZSwgd2UgcHJpbnQgYydzIGNvZGUgYWdhaW4gaW4gaGV4YWRlY2ltYWwsCisgIC8vIHVu
bGVzcyBjIHdhcyBhbHJlYWR5IHByaW50ZWQgaW4gdGhlIGZvcm0gJ1x4IyMnIG9yIHRoZSBjb2Rl
IGlzIGluCisgIC8vIFsxLCA5XS4KKyAgaWYgKGZvcm1hdCA9PSBrSGV4RXNjYXBlIHx8ICgxIDw9
IGMgJiYgYyA8PSA5KSkgeworICAgIC8vIERvIG5vdGhpbmcuCisgIH0gZWxzZSB7CisgICAgKm9z
IDw8ICIsIDB4IiA8PCBTdHJpbmc6OkZvcm1hdEhleEludChzdGF0aWNfY2FzdDxVbnNpZ25lZENo
YXI+KGMpKTsKKyAgfQorICAqb3MgPDwgIikiOworfQorCit2b2lkIFByaW50VG8odW5zaWduZWQg
Y2hhciBjLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRDaGFyQW5kQ29kZVRvPHVuc2ln
bmVkIGNoYXI+KGMsIG9zKTsKK30KK3ZvaWQgUHJpbnRUbyhzaWduZWQgY2hhciBjLCA6OnN0ZDo6
b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRDaGFyQW5kQ29kZVRvPHVuc2lnbmVkIGNoYXI+KGMsIG9z
KTsKK30KKworLy8gUHJpbnRzIGEgd2NoYXJfdCBhcyBhIHN5bWJvbCBpZiBpdCBpcyBwcmludGFi
bGUgb3IgYXMgaXRzIGludGVybmFsCisvLyBjb2RlIG90aGVyd2lzZSBhbmQgYWxzbyBhcyBpdHMg
Y29kZS4gIEwnXDAnIGlzIHByaW50ZWQgYXMgIkwnXFwwJyIuCit2b2lkIFByaW50VG8od2NoYXJf
dCB3Yywgb3N0cmVhbSogb3MpIHsKKyAgUHJpbnRDaGFyQW5kQ29kZVRvPHdjaGFyX3Q+KHdjLCBv
cyk7Cit9CisKKy8vIFByaW50cyB0aGUgZ2l2ZW4gYXJyYXkgb2YgY2hhcmFjdGVycyB0byB0aGUg
b3N0cmVhbS4gIENoYXJUeXBlIG11c3QgYmUgZWl0aGVyCisvLyBjaGFyIG9yIHdjaGFyX3QuCisv
LyBUaGUgYXJyYXkgc3RhcnRzIGF0IGJlZ2luLCB0aGUgbGVuZ3RoIGlzIGxlbiwgaXQgbWF5IGlu
Y2x1ZGUgJ1wwJyBjaGFyYWN0ZXJzCisvLyBhbmQgbWF5IG5vdCBiZSBOVUwtdGVybWluYXRlZC4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KK0dURVNUX0FUVFJJQlVURV9OT19TQU5JVEla
RV9NRU1PUllfCitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTU18KK0dURVNUX0FU
VFJJQlVURV9OT19TQU5JVElaRV9USFJFQURfCitzdGF0aWMgQ2hhckZvcm1hdCBQcmludENoYXJz
QXNTdHJpbmdUbygKKyAgICBjb25zdCBDaGFyVHlwZSogYmVnaW4sIHNpemVfdCBsZW4sIG9zdHJl
YW0qIG9zKSB7CisgIGNvbnN0IGNoYXIqIGNvbnN0IGtRdW90ZUJlZ2luID0gc2l6ZW9mKENoYXJU
eXBlKSA9PSAxID8gIlwiIiA6ICJMXCIiOworICAqb3MgPDwga1F1b3RlQmVnaW47CisgIGJvb2wg
aXNfcHJldmlvdXNfaGV4ID0gZmFsc2U7CisgIENoYXJGb3JtYXQgcHJpbnRfZm9ybWF0ID0ga0Fz
SXM7CisgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBsZW47ICsraW5kZXgpIHsKKyAg
ICBjb25zdCBDaGFyVHlwZSBjdXIgPSBiZWdpbltpbmRleF07CisgICAgaWYgKGlzX3ByZXZpb3Vz
X2hleCAmJiBJc1hEaWdpdChjdXIpKSB7CisgICAgICAvLyBQcmV2aW91cyBjaGFyYWN0ZXIgaXMg
b2YgJ1x4Li4nIGZvcm0gYW5kIHRoaXMgY2hhcmFjdGVyIGNhbiBiZQorICAgICAgLy8gaW50ZXJw
cmV0ZWQgYXMgYW5vdGhlciBoZXhhZGVjaW1hbCBkaWdpdCBpbiBpdHMgbnVtYmVyLiBCcmVhayBz
dHJpbmcgdG8KKyAgICAgIC8vIGRpc2FtYmlndWF0ZS4KKyAgICAgICpvcyA8PCAiXCIgIiA8PCBr
UXVvdGVCZWdpbjsKKyAgICB9CisgICAgaXNfcHJldmlvdXNfaGV4ID0gUHJpbnRBc1N0cmluZ0xp
dGVyYWxUbyhjdXIsIG9zKSA9PSBrSGV4RXNjYXBlOworICAgIC8vIFJlbWVtYmVyIGlmIGFueSBj
aGFyYWN0ZXJzIHJlcXVpcmVkIGhleCBlc2NhcGluZy4KKyAgICBpZiAoaXNfcHJldmlvdXNfaGV4
KSB7CisgICAgICBwcmludF9mb3JtYXQgPSBrSGV4RXNjYXBlOworICAgIH0KKyAgfQorICAqb3Mg
PDwgIlwiIjsKKyAgcmV0dXJuIHByaW50X2Zvcm1hdDsKK30KKworLy8gUHJpbnRzIGEgKGNvbnN0
KSBjaGFyL3djaGFyX3QgYXJyYXkgb2YgJ2xlbicgZWxlbWVudHMsIHN0YXJ0aW5nIGF0IGFkZHJl
c3MKKy8vICdiZWdpbicuICBDaGFyVHlwZSBtdXN0IGJlIGVpdGhlciBjaGFyIG9yIHdjaGFyX3Qu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJ
WkVfTUVNT1JZXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX0FERFJFU1NfCitHVEVTVF9B
VFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXworc3RhdGljIHZvaWQgVW5pdmVyc2FsUHJpbnRD
aGFyQXJyYXkoCisgICAgY29uc3QgQ2hhclR5cGUqIGJlZ2luLCBzaXplX3QgbGVuLCBvc3RyZWFt
KiBvcykgeworICAvLyBUaGUgY29kZQorICAvLyAgIGNvbnN0IGNoYXIga0Zvb1tdID0gImZvbyI7
CisgIC8vIGdlbmVyYXRlcyBhbiBhcnJheSBvZiA0LCBub3QgMywgZWxlbWVudHMsIHdpdGggdGhl
IGxhc3Qgb25lIGJlaW5nICdcMCcuCisgIC8vCisgIC8vIFRoZXJlZm9yZSB3aGVuIHByaW50aW5n
IGEgY2hhciBhcnJheSwgd2UgZG9uJ3QgcHJpbnQgdGhlIGxhc3QgZWxlbWVudCBpZgorICAvLyBp
dCdzICdcMCcsIHN1Y2ggdGhhdCB0aGUgb3V0cHV0IG1hdGNoZXMgdGhlIHN0cmluZyBsaXRlcmFs
IGFzIGl0J3MKKyAgLy8gd3JpdHRlbiBpbiB0aGUgc291cmNlIGNvZGUuCisgIGlmIChsZW4gPiAw
ICYmIGJlZ2luW2xlbiAtIDFdID09ICdcMCcpIHsKKyAgICBQcmludENoYXJzQXNTdHJpbmdUbyhi
ZWdpbiwgbGVuIC0gMSwgb3MpOworICAgIHJldHVybjsKKyAgfQorCisgIC8vIElmLCBob3dldmVy
LCB0aGUgbGFzdCBlbGVtZW50IGluIHRoZSBhcnJheSBpcyBub3QgJ1wwJywgZS5nLgorICAvLyAg
ICBjb25zdCBjaGFyIGtGb29bXSA9IHsgJ2YnLCAnbycsICdvJyB9OworICAvLyB3ZSBtdXN0IHBy
aW50IHRoZSBlbnRpcmUgYXJyYXkuICBXZSBhbHNvIHByaW50IGEgbWVzc2FnZSB0byBpbmRpY2F0
ZQorICAvLyB0aGF0IHRoZSBhcnJheSBpcyBub3QgTlVMLXRlcm1pbmF0ZWQuCisgIFByaW50Q2hh
cnNBc1N0cmluZ1RvKGJlZ2luLCBsZW4sIG9zKTsKKyAgKm9zIDw8ICIgKG5vIHRlcm1pbmF0aW5n
IE5VTCkiOworfQorCisvLyBQcmludHMgYSAoY29uc3QpIGNoYXIgYXJyYXkgb2YgJ2xlbicgZWxl
bWVudHMsIHN0YXJ0aW5nIGF0IGFkZHJlc3MgJ2JlZ2luJy4KK3ZvaWQgVW5pdmVyc2FsUHJpbnRB
cnJheShjb25zdCBjaGFyKiBiZWdpbiwgc2l6ZV90IGxlbiwgb3N0cmVhbSogb3MpIHsKKyAgVW5p
dmVyc2FsUHJpbnRDaGFyQXJyYXkoYmVnaW4sIGxlbiwgb3MpOworfQorCisvLyBQcmludHMgYSAo
Y29uc3QpIHdjaGFyX3QgYXJyYXkgb2YgJ2xlbicgZWxlbWVudHMsIHN0YXJ0aW5nIGF0IGFkZHJl
c3MKKy8vICdiZWdpbicuCit2b2lkIFVuaXZlcnNhbFByaW50QXJyYXkoY29uc3Qgd2NoYXJfdCog
YmVnaW4sIHNpemVfdCBsZW4sIG9zdHJlYW0qIG9zKSB7CisgIFVuaXZlcnNhbFByaW50Q2hhckFy
cmF5KGJlZ2luLCBsZW4sIG9zKTsKK30KKworLy8gUHJpbnRzIHRoZSBnaXZlbiBDIHN0cmluZyB0
byB0aGUgb3N0cmVhbS4KK3ZvaWQgUHJpbnRUbyhjb25zdCBjaGFyKiBzLCBvc3RyZWFtKiBvcykg
eworICBpZiAocyA9PSBOVUxMKSB7CisgICAgKm9zIDw8ICJOVUxMIjsKKyAgfSBlbHNlIHsKKyAg
ICAqb3MgPDwgSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocykgPDwgIiBwb2ludGluZyB0byAi
OworICAgIFByaW50Q2hhcnNBc1N0cmluZ1RvKHMsIHN0cmxlbihzKSwgb3MpOworICB9Cit9CisK
Ky8vIE1TVkMgY29tcGlsZXIgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gZGVmaW5lIHdoYXJfdCBhcyBh
IHR5cGVkZWYKKy8vIG9mIHVuc2lnbmVkIHNob3J0LiBEZWZpbmluZyBhbiBvdmVybG9hZCBmb3Ig
Y29uc3Qgd2NoYXJfdCogaW4gdGhhdCBjYXNlCisvLyB3b3VsZCBjYXVzZSBwb2ludGVycyB0byB1
bnNpZ25lZCBzaG9ydHMgYmUgcHJpbnRlZCBhcyB3aWRlIHN0cmluZ3MsCisvLyBwb3NzaWJseSBh
Y2Nlc3NpbmcgbW9yZSBtZW1vcnkgdGhhbiBpbnRlbmRlZCBhbmQgY2F1c2luZyBpbnZhbGlkCisv
LyBtZW1vcnkgYWNjZXNzZXMuIE1TVkMgZGVmaW5lcyBfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCBz
eW1ib2wgd2hlbgorLy8gd2NoYXJfdCBpcyBpbXBsZW1lbnRlZCBhcyBhIG5hdGl2ZSB0eXBlLgor
I2lmICFkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVE
KQorLy8gUHJpbnRzIHRoZSBnaXZlbiB3aWRlIEMgc3RyaW5nIHRvIHRoZSBvc3RyZWFtLgordm9p
ZCBQcmludFRvKGNvbnN0IHdjaGFyX3QqIHMsIG9zdHJlYW0qIG9zKSB7CisgIGlmIChzID09IE5V
TEwpIHsKKyAgICAqb3MgPDwgIk5VTEwiOworICB9IGVsc2UgeworICAgICpvcyA8PCBJbXBsaWNp
dENhc3RfPGNvbnN0IHZvaWQqPihzKSA8PCAiIHBvaW50aW5nIHRvICI7CisgICAgUHJpbnRDaGFy
c0FzU3RyaW5nVG8ocywgc3RkOjp3Y3NsZW4ocyksIG9zKTsKKyAgfQorfQorI2VuZGlmICAvLyB3
Y2hhcl90IGlzIG5hdGl2ZQorCituYW1lc3BhY2UgeworCitib29sIENvbnRhaW5zVW5wcmludGFi
bGVDb250cm9sQ29kZXMoY29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuZ3RoKSB7CisgIGNvbnN0
IHVuc2lnbmVkIGNoYXIgKnMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIg
Kj4oc3RyKTsKKworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAg
dW5zaWduZWQgY2hhciBjaCA9ICpzKys7CisgICAgaWYgKHN0ZDo6aXNjbnRybChjaCkpIHsKKyAg
ICAgICAgc3dpdGNoIChjaCkgeworICAgICAgICBjYXNlICdcdCc6CisgICAgICAgIGNhc2UgJ1xu
JzoKKyAgICAgICAgY2FzZSAnXHInOgorICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICB9CisgIH0KKyAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIElzVVRGOFRyYWlsQnl0ZSh1bnNpZ25lZCBjaGFyIHQpIHsg
cmV0dXJuIDB4ODAgPD0gdCAmJiB0PD0gMHhiZjsgfQorCitib29sIElzVmFsaWRVVEY4KGNvbnN0
IGNoYXIqIHN0ciwgc2l6ZV90IGxlbmd0aCkgeworICBjb25zdCB1bnNpZ25lZCBjaGFyICpzID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyICo+KHN0cik7CisKKyAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7KSB7CisgICAgdW5zaWduZWQgY2hhciBsZWFkID0gc1tp
KytdOworCisgICAgaWYgKGxlYWQgPD0gMHg3ZikgeworICAgICAgY29udGludWU7ICAvLyBzaW5n
bGUtYnl0ZSBjaGFyYWN0ZXIgKEFTQ0lJKSAwLi43RgorICAgIH0KKyAgICBpZiAobGVhZCA8IDB4
YzIpIHsKKyAgICAgIHJldHVybiBmYWxzZTsgIC8vIHRyYWlsIGJ5dGUgb3Igbm9uLXNob3J0ZXN0
IGZvcm0KKyAgICB9IGVsc2UgaWYgKGxlYWQgPD0gMHhkZiAmJiAoaSArIDEpIDw9IGxlbmd0aCAm
JiBJc1VURjhUcmFpbEJ5dGUoc1tpXSkpIHsKKyAgICAgICsraTsgIC8vIDItYnl0ZSBjaGFyYWN0
ZXIKKyAgICB9IGVsc2UgaWYgKDB4ZTAgPD0gbGVhZCAmJiBsZWFkIDw9IDB4ZWYgJiYgKGkgKyAy
KSA8PSBsZW5ndGggJiYKKyAgICAgICAgICAgICAgIElzVVRGOFRyYWlsQnl0ZShzW2ldKSAmJgor
ICAgICAgICAgICAgICAgSXNVVEY4VHJhaWxCeXRlKHNbaSArIDFdKSAmJgorICAgICAgICAgICAg
ICAgLy8gY2hlY2sgZm9yIG5vbi1zaG9ydGVzdCBmb3JtIGFuZCBzdXJyb2dhdGUKKyAgICAgICAg
ICAgICAgIChsZWFkICE9IDB4ZTAgfHwgc1tpXSA+PSAweGEwKSAmJgorICAgICAgICAgICAgICAg
KGxlYWQgIT0gMHhlZCB8fCBzW2ldIDwgMHhhMCkpIHsKKyAgICAgIGkgKz0gMjsgIC8vIDMtYnl0
ZSBjaGFyYWN0ZXIKKyAgICB9IGVsc2UgaWYgKDB4ZjAgPD0gbGVhZCAmJiBsZWFkIDw9IDB4ZjQg
JiYgKGkgKyAzKSA8PSBsZW5ndGggJiYKKyAgICAgICAgICAgICAgIElzVVRGOFRyYWlsQnl0ZShz
W2ldKSAmJgorICAgICAgICAgICAgICAgSXNVVEY4VHJhaWxCeXRlKHNbaSArIDFdKSAmJgorICAg
ICAgICAgICAgICAgSXNVVEY4VHJhaWxCeXRlKHNbaSArIDJdKSAmJgorICAgICAgICAgICAgICAg
Ly8gY2hlY2sgZm9yIG5vbi1zaG9ydGVzdCBmb3JtCisgICAgICAgICAgICAgICAobGVhZCAhPSAw
eGYwIHx8IHNbaV0gPj0gMHg5MCkgJiYKKyAgICAgICAgICAgICAgIChsZWFkICE9IDB4ZjQgfHwg
c1tpXSA8IDB4OTApKSB7CisgICAgICBpICs9IDM7ICAvLyA0LWJ5dGUgY2hhcmFjdGVyCisgICAg
fSBlbHNlIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgQ29uZGl0aW9uYWxQcmludEFzVGV4dChjb25zdCBjaGFyKiBzdHIsIHNpemVf
dCBsZW5ndGgsIG9zdHJlYW0qIG9zKSB7CisgIGlmICghQ29udGFpbnNVbnByaW50YWJsZUNvbnRy
b2xDb2RlcyhzdHIsIGxlbmd0aCkgJiYKKyAgICAgIElzVmFsaWRVVEY4KHN0ciwgbGVuZ3RoKSkg
eworICAgICpvcyA8PCAiXG4gICAgQXMgVGV4dDogXCIiIDw8IHN0ciA8PCAiXCIiOworICB9Cit9
CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKworLy8gUHJpbnRzIGEgOjpzdHJpbmcgb2Jq
ZWN0LgorI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCit2b2lkIFByaW50U3RyaW5nVG8oY29u
c3QgOjpzdHJpbmcmIHMsIG9zdHJlYW0qIG9zKSB7CisgIGlmIChQcmludENoYXJzQXNTdHJpbmdU
byhzLmRhdGEoKSwgcy5zaXplKCksIG9zKSA9PSBrSGV4RXNjYXBlKSB7CisgICAgaWYgKEdURVNU
X0ZMQUcocHJpbnRfdXRmOCkpIHsKKyAgICAgIENvbmRpdGlvbmFsUHJpbnRBc1RleHQocy5kYXRh
KCksIHMuc2l6ZSgpLCBvcyk7CisgICAgfQorICB9Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19H
TE9CQUxfU1RSSU5HCisKK3ZvaWQgUHJpbnRTdHJpbmdUbyhjb25zdCA6OnN0ZDo6c3RyaW5nJiBz
LCBvc3RyZWFtKiBvcykgeworICBpZiAoUHJpbnRDaGFyc0FzU3RyaW5nVG8ocy5kYXRhKCksIHMu
c2l6ZSgpLCBvcykgPT0ga0hleEVzY2FwZSkgeworICAgIGlmIChHVEVTVF9GTEFHKHByaW50X3V0
ZjgpKSB7CisgICAgICBDb25kaXRpb25hbFByaW50QXNUZXh0KHMuZGF0YSgpLCBzLnNpemUoKSwg
b3MpOworICAgIH0KKyAgfQorfQorCisvLyBQcmludHMgYSA6OndzdHJpbmcgb2JqZWN0LgorI2lm
IEdURVNUX0hBU19HTE9CQUxfV1NUUklORwordm9pZCBQcmludFdpZGVTdHJpbmdUbyhjb25zdCA6
OndzdHJpbmcmIHMsIG9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hhcnNBc1N0cmluZ1RvKHMuZGF0
YSgpLCBzLnNpemUoKSwgb3MpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJ
TkcKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORwordm9pZCBQcmludFdpZGVTdHJpbmdUbyhj
b25zdCA6OnN0ZDo6d3N0cmluZyYgcywgb3N0cmVhbSogb3MpIHsKKyAgUHJpbnRDaGFyc0FzU3Ry
aW5nVG8ocy5kYXRhKCksIHMuc2l6ZSgpLCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19T
VERfV1NUUklORworCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKworfSAgLy8gbmFtZXNwYWNl
IHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10
ZXN0LXBhcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0
LmNjCmluZGV4IDVkMTgzYTQ0NmYyOTRjZTllMWE4NTg3YzhiOTEyMGE5YmVjODg3ZGQuLmM4ODg2
MGQ5MjM4NTYxOWVhNjc2NDg4NDU4MzlkMTQ1ODNmMTExNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10ZXN0LXBhcnQuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXRlc3QtcGFydC5jYwpAQCAtMjYsMjEgKzI2LDEyIEBACiAv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0
aG9yOiBtaGV1bGVAZ29vZ2xlLmNvbSAoTWFya3VzIEhldWxlKQotLy8KLS8vIFRoZSBHb29nbGUg
QysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIAotI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0LXRlc3QtcGFydC5oPgorLy8KKy8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tp
bmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIAotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFu
c2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24u
ICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRl
ZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwot
Ly8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVy
bmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05f
IDEKKyNpbmNsdWRlICJndGVzdC9ndGVzdC10ZXN0LXBhcnQuaCIKICNpbmNsdWRlICJzcmMvZ3Rl
c3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCiAKIG5hbWVz
cGFjZSB0ZXN0aW5nIHsKIApAQCAtNDgsMTAgKzM5LDEwIEBAIHVzaW5nIGludGVybmFsOjpHZXRV
bml0VGVzdEltcGw7CiAKIC8vIEdldHMgdGhlIHN1bW1hcnkgb2YgdGhlIGZhaWx1cmUgbWVzc2Fn
ZSBieSBvbWl0dGluZyB0aGUgc3RhY2sgdHJhY2UKIC8vIGluIGl0LgotaW50ZXJuYWw6OlN0cmlu
ZyBUZXN0UGFydFJlc3VsdDo6RXh0cmFjdFN1bW1hcnkoY29uc3QgY2hhciogbWVzc2FnZSkgewor
c3RkOjpzdHJpbmcgVGVzdFBhcnRSZXN1bHQ6OkV4dHJhY3RTdW1tYXJ5KGNvbnN0IGNoYXIqIG1l
c3NhZ2UpIHsKICAgY29uc3QgY2hhciogY29uc3Qgc3RhY2tfdHJhY2UgPSBzdHJzdHIobWVzc2Fn
ZSwgaW50ZXJuYWw6OmtTdGFja1RyYWNlTWFya2VyKTsKLSAgcmV0dXJuIHN0YWNrX3RyYWNlID09
IE5VTEwgPyBpbnRlcm5hbDo6U3RyaW5nKG1lc3NhZ2UpIDoKLSAgICAgIGludGVybmFsOjpTdHJp
bmcobWVzc2FnZSwgc3RhY2tfdHJhY2UgLSBtZXNzYWdlKTsKKyAgcmV0dXJuIHN0YWNrX3RyYWNl
ID09IE5VTEwgPyBtZXNzYWdlIDoKKyAgICAgIHN0ZDo6c3RyaW5nKG1lc3NhZ2UsIHN0YWNrX3Ry
YWNlKTsKIH0KIAogLy8gUHJpbnRzIGEgVGVzdFBhcnRSZXN1bHQgb2JqZWN0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtdHlwZWQtdGVzdC5jYwppbmRleCAzY2M0YjVk
ZTJhYWNiNzU5ODkxMTljNWY5NmM3ZjRmODBlYWQ1Y2FlLi4xZGMyYWQzOGJhYjk4YmMxNDZjMTYx
NThhNDdkYTFlMzk0YmYzODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9z
cmMvZ3Rlc3QtdHlwZWQtdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMv
Z3Rlc3QtdHlwZWQtdGVzdC5jYwpAQCAtMjYsMTEgKzI2LDExIEBACiAvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5o
PgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC10eXBl
ZC10ZXN0LmgiCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2UgdGVzdGlu
ZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewpAQCAtNDAsMzggKzQwLDQ2IEBAIG5hbWVzcGFjZSBp
bnRlcm5hbCB7CiAvLyBTa2lwcyB0byB0aGUgZmlyc3Qgbm9uLXNwYWNlIGNoYXIgaW4gc3RyLiBS
ZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBpZiBzdHIKIC8vIGNvbnRhaW5zIG9ubHkgd2hpdGVzcGFj
ZSBjaGFyYWN0ZXJzLgogc3RhdGljIGNvbnN0IGNoYXIqIFNraXBTcGFjZXMoY29uc3QgY2hhciog
c3RyKSB7Ci0gIHdoaWxlIChpc3NwYWNlKCpzdHIpKQorICB3aGlsZSAoSXNTcGFjZSgqc3RyKSkK
ICAgICBzdHIrKzsKICAgcmV0dXJuIHN0cjsKIH0KIAorc3RhdGljIHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiBTcGxpdEludG9UZXN0TmFtZXMoY29uc3QgY2hhciogc3JjKSB7CisgIHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiBuYW1lX3ZlYzsKKyAgc3JjID0gU2tpcFNwYWNlcyhzcmMpOworICBm
b3IgKDsgc3JjICE9IE5VTEw7IHNyYyA9IFNraXBDb21tYShzcmMpKSB7CisgICAgbmFtZV92ZWMu
cHVzaF9iYWNrKFN0cmlwVHJhaWxpbmdTcGFjZXMoR2V0UHJlZml4VW50aWxDb21tYShzcmMpKSk7
CisgIH0KKyAgcmV0dXJuIG5hbWVfdmVjOworfQorCiAvLyBWZXJpZmllcyB0aGF0IHJlZ2lzdGVy
ZWRfdGVzdHMgbWF0Y2ggdGhlIHRlc3QgbmFtZXMgaW4KLS8vIGRlZmluZWRfdGVzdF9uYW1lc187
IHJldHVybnMgcmVnaXN0ZXJlZF90ZXN0cyBpZiBzdWNjZXNzZnVsLCBvcgorLy8gcmVnaXN0ZXJl
ZF90ZXN0c187IHJldHVybnMgcmVnaXN0ZXJlZF90ZXN0cyBpZiBzdWNjZXNzZnVsLCBvcgogLy8g
YWJvcnRzIHRoZSBwcm9ncmFtIG90aGVyd2lzZS4KIGNvbnN0IGNoYXIqIFR5cGVkVGVzdENhc2VQ
U3RhdGU6OlZlcmlmeVJlZ2lzdGVyZWRUZXN0TmFtZXMoCiAgICAgY29uc3QgY2hhciogZmlsZSwg
aW50IGxpbmUsIGNvbnN0IGNoYXIqIHJlZ2lzdGVyZWRfdGVzdHMpIHsKLSAgdHlwZWRlZiA6OnN0
ZDo6c2V0PGNvbnN0IGNoYXIqPjo6Y29uc3RfaXRlcmF0b3IgRGVmaW5lZFRlc3RJdGVyOworICB0
eXBlZGVmIFJlZ2lzdGVyZWRUZXN0c01hcDo6Y29uc3RfaXRlcmF0b3IgUmVnaXN0ZXJlZFRlc3RJ
dGVyOwogICByZWdpc3RlcmVkXyA9IHRydWU7CiAKLSAgLy8gU2tpcCBpbml0aWFsIHdoaXRlc3Bh
Y2UgaW4gcmVnaXN0ZXJlZF90ZXN0cyBzaW5jZSBzb21lCi0gIC8vIHByZXByb2Nlc3NvcnMgcHJl
Zml4IHN0cmluZ2l6aWVkIGxpdGVyYWxzIHdpdGggd2hpdGVzcGFjZS4KLSAgcmVnaXN0ZXJlZF90
ZXN0cyA9IFNraXBTcGFjZXMocmVnaXN0ZXJlZF90ZXN0cyk7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiBuYW1lX3ZlYyA9IFNwbGl0SW50b1Rlc3ROYW1lcyhyZWdpc3RlcmVkX3Rlc3RzKTsK
IAogICBNZXNzYWdlIGVycm9yczsKLSAgOjpzdGQ6OnNldDxTdHJpbmc+IHRlc3RzOwotICBmb3Ig
KGNvbnN0IGNoYXIqIG5hbWVzID0gcmVnaXN0ZXJlZF90ZXN0czsgbmFtZXMgIT0gTlVMTDsKLSAg
ICAgICBuYW1lcyA9IFNraXBDb21tYShuYW1lcykpIHsKLSAgICBjb25zdCBTdHJpbmcgbmFtZSA9
IEdldFByZWZpeFVudGlsQ29tbWEobmFtZXMpOworCisgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiB0
ZXN0czsKKyAgZm9yIChzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIG5h
bWVfaXQgPSBuYW1lX3ZlYy5iZWdpbigpOworICAgICAgIG5hbWVfaXQgIT0gbmFtZV92ZWMuZW5k
KCk7ICsrbmFtZV9pdCkgeworICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lID0gKm5hbWVfaXQ7
CiAgICAgaWYgKHRlc3RzLmNvdW50KG5hbWUpICE9IDApIHsKICAgICAgIGVycm9ycyA8PCAiVGVz
dCAiIDw8IG5hbWUgPDwgIiBpcyBsaXN0ZWQgbW9yZSB0aGFuIG9uY2UuXG4iOwogICAgICAgY29u
dGludWU7CiAgICAgfQogCiAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwotICAgIGZvciAoRGVmaW5l
ZFRlc3RJdGVyIGl0ID0gZGVmaW5lZF90ZXN0X25hbWVzXy5iZWdpbigpOwotICAgICAgICAgaXQg
IT0gZGVmaW5lZF90ZXN0X25hbWVzXy5lbmQoKTsKKyAgICBmb3IgKFJlZ2lzdGVyZWRUZXN0SXRl
ciBpdCA9IHJlZ2lzdGVyZWRfdGVzdHNfLmJlZ2luKCk7CisgICAgICAgICBpdCAhPSByZWdpc3Rl
cmVkX3Rlc3RzXy5lbmQoKTsKICAgICAgICAgICsraXQpIHsKLSAgICAgIGlmIChuYW1lID09ICpp
dCkgeworICAgICAgaWYgKG5hbWUgPT0gaXQtPmZpcnN0KSB7CiAgICAgICAgIGZvdW5kID0gdHJ1
ZTsKICAgICAgICAgYnJlYWs7CiAgICAgICB9CkBAIC04NSwxNSArOTMsMTUgQEAgY29uc3QgY2hh
ciogVHlwZWRUZXN0Q2FzZVBTdGF0ZTo6VmVyaWZ5UmVnaXN0ZXJlZFRlc3ROYW1lcygKICAgICB9
CiAgIH0KIAotICBmb3IgKERlZmluZWRUZXN0SXRlciBpdCA9IGRlZmluZWRfdGVzdF9uYW1lc18u
YmVnaW4oKTsKLSAgICAgICBpdCAhPSBkZWZpbmVkX3Rlc3RfbmFtZXNfLmVuZCgpOworICBmb3Ig
KFJlZ2lzdGVyZWRUZXN0SXRlciBpdCA9IHJlZ2lzdGVyZWRfdGVzdHNfLmJlZ2luKCk7CisgICAg
ICAgaXQgIT0gcmVnaXN0ZXJlZF90ZXN0c18uZW5kKCk7CiAgICAgICAgKytpdCkgewotICAgIGlm
ICh0ZXN0cy5jb3VudCgqaXQpID09IDApIHsKLSAgICAgIGVycm9ycyA8PCAiWW91IGZvcmdvdCB0
byBsaXN0IHRlc3QgIiA8PCAqaXQgPDwgIi5cbiI7CisgICAgaWYgKHRlc3RzLmNvdW50KGl0LT5m
aXJzdCkgPT0gMCkgeworICAgICAgZXJyb3JzIDw8ICJZb3UgZm9yZ290IHRvIGxpc3QgdGVzdCAi
IDw8IGl0LT5maXJzdCA8PCAiLlxuIjsKICAgICB9CiAgIH0KIAotICBjb25zdCBTdHJpbmcmIGVy
cm9yc19zdHIgPSBlcnJvcnMuR2V0U3RyaW5nKCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBlcnJv
cnNfc3RyID0gZXJyb3JzLkdldFN0cmluZygpOwogICBpZiAoZXJyb3JzX3N0ciAhPSAiIikgewog
ICAgIGZwcmludGYoc3RkZXJyLCAiJXMgJXMiLCBGb3JtYXRGaWxlTG9jYXRpb24oZmlsZSwgbGlu
ZSkuY19zdHIoKSwKICAgICAgICAgICAgIGVycm9yc19zdHIuY19zdHIoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zcmMvZ3Rlc3QuY2MKaW5kZXggNWI4NzFjMGFkYjBhMWM0Y2ZhMjM3NTU0MDU3ZDUx
NjA4NDYxOTUwZS4uOTc5NjYzNzc0OWE3YWRhOTQwM2Q2YWQ4ZDY1YzJhNjY3NTVkNDE0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LmNjCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC5jYwpAQCAtMjYsMTEyICsyNiwxMzEgQEAKIC8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwogLy8KLS8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBUaGUgR29vZ2xlIEMr
KyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0
aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAKLSNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgorI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LmgiCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCiAKICNpbmNsdWRlIDxjdHlwZS5oPgogI2luY2x1ZGUg
PG1hdGguaD4KICNpbmNsdWRlIDxzdGRhcmcuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1
ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDx3Y2hhci5oPgogI2lu
Y2x1ZGUgPHdjdHlwZS5oPgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPG9zdHJl
YW0+CisjaW5jbHVkZSA8aW9tYW5pcD4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bGlz
dD4KKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8b3N0cmVhbT4gIC8vIE5PTElOVAogI2luY2x1
ZGUgPHNzdHJlYW0+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaWYgR1RFU1RfT1NfTElOVVgKIAot
Ly8gVE9ETyhrZW50b25AZ29vZ2xlLmNvbSk6IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZhaWxh
YmlsaXR5IG9mCisvLyBGSVhNRTogVXNlIGF1dG9jb25mIHRvIGRldGVjdCBhdmFpbGFiaWxpdHkg
b2YKIC8vIGdldHRpbWVvZmRheSgpLgotI2RlZmluZSBHVEVTVF9IQVNfR0VUVElNRU9GREFZXyAx
CisjIGRlZmluZSBHVEVTVF9IQVNfR0VUVElNRU9GREFZXyAxCiAKLSNpbmNsdWRlIDxmY250bC5o
PgotI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHNjaGVkLmg+CisjIGluY2x1ZGUgPGZj
bnRsLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8bGltaXRzLmg+ICAvLyBOT0xJTlQKKyMgaW5j
bHVkZSA8c2NoZWQuaD4gIC8vIE5PTElOVAogLy8gRGVjbGFyZXMgdnNucHJpbnRmKCkuICBUaGlz
IGhlYWRlciBpcyBub3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCi0jaW5jbHVkZSA8c3RyaW5ncy5o
PgotI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSNpbmNsdWRl
IDx1bmlzdGQuaD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dmVjdG9yPgorIyBpbmNs
dWRlIDxzdHJpbmdzLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3lzL21tYW4uaD4gIC8vIE5P
TElOVAorIyBpbmNsdWRlIDxzeXMvdGltZS5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHVuaXN0
ZC5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN0cmluZz4KIAogI2VsaWYgR1RFU1RfT1NfU1lN
QklBTgotI2RlZmluZSBHVEVTVF9IQVNfR0VUVElNRU9GREFZXyAxCi0jaW5jbHVkZSA8c3lzL3Rp
bWUuaD4gIC8vIE5PTElOVAorIyBkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQorIyBp
bmNsdWRlIDxzeXMvdGltZS5oPiAgLy8gTk9MSU5UCiAKICNlbGlmIEdURVNUX09TX1pPUwotI2Rl
ZmluZSBHVEVTVF9IQVNfR0VUVElNRU9GREFZXyAxCi0jaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8v
IE5PTElOVAorIyBkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQorIyBpbmNsdWRlIDxz
eXMvdGltZS5oPiAgLy8gTk9MSU5UCiAKIC8vIE9uIHovT1Mgd2UgYWRkaXRpb25hbGx5IG5lZWQg
c3RyaW5ncy5oIGZvciBzdHJjYXNlY21wLgotI2luY2x1ZGUgPHN0cmluZ3MuaD4gIC8vIE5PTElO
VAorIyBpbmNsdWRlIDxzdHJpbmdzLmg+ICAvLyBOT0xJTlQKIAogI2VsaWYgR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUgIC8vIFdlIGFyZSBvbiBXaW5kb3dzIENFLgogCi0jaW5jbHVkZSA8d2luZG93
cy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAorIyB1bmRl
ZiBtaW4KIAogI2VsaWYgR1RFU1RfT1NfV0lORE9XUyAgLy8gV2UgYXJlIG9uIFdpbmRvd3MgcHJv
cGVyLgogCi0jaW5jbHVkZSA8aW8uaD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHN5cy90aW1lYi5o
PiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAvLyBOT0xJTlQKLSNpbmNsdWRl
IDxzeXMvc3RhdC5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPGlvLmg+ICAvLyBOT0xJTlQKKyMg
aW5jbHVkZSA8c3lzL3RpbWViLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+
ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3lzL3N0YXQuaD4gIC8vIE5PTElOVAogCi0jaWYgR1RF
U1RfT1NfV0lORE9XU19NSU5HVworIyBpZiBHVEVTVF9PU19XSU5ET1dTX01JTkdXCiAvLyBNaW5H
VyBoYXMgZ2V0dGltZW9mZGF5KCkgYnV0IG5vdCBfZnRpbWU2NCgpLgotLy8gVE9ETyhrZW50b25A
Z29vZ2xlLmNvbSk6IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZhaWxhYmlsaXR5IG9mCisvLyBG
SVhNRTogVXNlIGF1dG9jb25mIHRvIGRldGVjdCBhdmFpbGFiaWxpdHkgb2YKIC8vICAgZ2V0dGlt
ZW9mZGF5KCkuCi0vLyBUT0RPKGtlbnRvbkBnb29nbGUuY29tKTogVGhlcmUgYXJlIG90aGVyIHdh
eXMgdG8gZ2V0IHRoZSB0aW1lIG9uCisvLyBGSVhNRTogVGhlcmUgYXJlIG90aGVyIHdheXMgdG8g
Z2V0IHRoZSB0aW1lIG9uCiAvLyAgIFdpbmRvd3MsIGxpa2UgR2V0VGlja0NvdW50KCkgb3IgR2V0
U3lzdGVtVGltZUFzRmlsZVRpbWUoKS4gIE1pbkdXCiAvLyAgIHN1cHBvcnRzIHRoZXNlLiAgY29u
c2lkZXIgdXNpbmcgdGhlbSBpbnN0ZWFkLgotI2RlZmluZSBHVEVTVF9IQVNfR0VUVElNRU9GREFZ
XyAxCi0jaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAotI2VuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTX01JTkdXCisjICBkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQorIyAg
aW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAorIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lO
RE9XU19NSU5HVwogCiAvLyBjcHBsaW50IHRoaW5rcyB0aGF0IHRoZSBoZWFkZXIgaXMgYWxyZWFk
eSBpbmNsdWRlZCwgc28gd2Ugd2FudCB0bwogLy8gc2lsZW5jZSBpdC4KLSNpbmNsdWRlIDx3aW5k
b3dzLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gTk9MSU5UCisjIHVu
ZGVmIG1pbgogCiAjZWxzZQogCiAvLyBBc3N1bWUgb3RoZXIgcGxhdGZvcm1zIGhhdmUgZ2V0dGlt
ZW9mZGF5KCkuCi0vLyBUT0RPKGtlbnRvbkBnb29nbGUuY29tKTogVXNlIGF1dG9jb25mIHRvIGRl
dGVjdCBhdmFpbGFiaWxpdHkgb2YKKy8vIEZJWE1FOiBVc2UgYXV0b2NvbmYgdG8gZGV0ZWN0IGF2
YWlsYWJpbGl0eSBvZgogLy8gICBnZXR0aW1lb2ZkYXkoKS4KLSNkZWZpbmUgR1RFU1RfSEFTX0dF
VFRJTUVPRkRBWV8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQogCiAvLyBj
cHBsaW50IHRoaW5rcyB0aGF0IHRoZSBoZWFkZXIgaXMgYWxyZWFkeSBpbmNsdWRlZCwgc28gd2Ug
d2FudCB0bwogLy8gc2lsZW5jZSBpdC4KLSNpbmNsdWRlIDxzeXMvdGltZS5oPiAgLy8gTk9MSU5U
Ci0jaW5jbHVkZSA8dW5pc3RkLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4g
IC8vIE5PTElOVAorIyBpbmNsdWRlIDx1bmlzdGQuaD4gIC8vIE5PTElOVAogCiAjZW5kaWYgIC8v
IEdURVNUX09TX0xJTlVYCiAKICNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwotI2luY2x1ZGUgPHN0
ZGV4Y2VwdD4KKyMgaW5jbHVkZSA8c3RkZXhjZXB0PgorI2VuZGlmCisKKyNpZiBHVEVTVF9DQU5f
U1RSRUFNX1JFU1VMVFNfCisjIGluY2x1ZGUgPGFycGEvaW5ldC5oPiAgLy8gTk9MSU5UCisjIGlu
Y2x1ZGUgPG5ldGRiLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3lzL3NvY2tldC5oPiAgLy8g
Tk9MSU5UCisjIGluY2x1ZGUgPHN5cy90eXBlcy5oPiAgLy8gTk9MSU5UCiAjZW5kaWYKIAotLy8g
SW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRl
c3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVy
bmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVy
cm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFs
bHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZp
bmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKICNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwt
aW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCiAKICNpZiBHVEVTVF9PU19XSU5E
T1dTCi0jZGVmaW5lIHZzbnByaW50ZiBfdnNucHJpbnRmCisjIGRlZmluZSB2c25wcmludGYgX3Zz
bnByaW50ZgogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKKyNpZiBHVEVTVF9PU19NQUMK
KyNpZm5kZWYgR1RFU1RfT1NfSU9TCisjaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4KKyNlbmRpZgor
I2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfQUJTTAorI2luY2x1ZGUgImFic2wvZGVidWdnaW5nL2Zh
aWx1cmVfc2lnbmFsX2hhbmRsZXIuaCIKKyNpbmNsdWRlICJhYnNsL2RlYnVnZ2luZy9zdGFja3Ry
YWNlLmgiCisjaW5jbHVkZSAiYWJzbC9kZWJ1Z2dpbmcvc3ltYm9saXplLmgiCisjaW5jbHVkZSAi
YWJzbC9zdHJpbmdzL3N0cl9jYXQuaCIKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0FCU0wKKwogbmFt
ZXNwYWNlIHRlc3RpbmcgewogCiB1c2luZyBpbnRlcm5hbDo6Q291bnRJZjsKQEAgLTE1Myw4ICsx
NzIsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIga0RlYXRoVGVzdENhc2VGaWx0ZXJbXSA9ICIqRGVh
dGhUZXN0OipEZWF0aFRlc3QvKiI7CiAvLyBBIHRlc3QgZmlsdGVyIHRoYXQgbWF0Y2hlcyBldmVy
eXRoaW5nLgogc3RhdGljIGNvbnN0IGNoYXIga1VuaXZlcnNhbEZpbHRlcltdID0gIioiOwogCi0v
LyBUaGUgZGVmYXVsdCBvdXRwdXQgZmlsZSBmb3IgWE1MIG91dHB1dC4KLXN0YXRpYyBjb25zdCBj
aGFyIGtEZWZhdWx0T3V0cHV0RmlsZVtdID0gInRlc3RfZGV0YWlsLnhtbCI7CisvLyBUaGUgZGVm
YXVsdCBvdXRwdXQgZm9ybWF0Lgorc3RhdGljIGNvbnN0IGNoYXIga0RlZmF1bHRPdXRwdXRGb3Jt
YXRbXSA9ICJ4bWwiOworLy8gVGhlIGRlZmF1bHQgb3V0cHV0IGZpbGUuCitzdGF0aWMgY29uc3Qg
Y2hhciBrRGVmYXVsdE91dHB1dEZpbGVbXSA9ICJ0ZXN0X2RldGFpbCI7CiAKIC8vIFRoZSBlbnZp
cm9ubWVudCB2YXJpYWJsZSBuYW1lIGZvciB0aGUgdGVzdCBzaGFyZCBpbmRleC4KIHN0YXRpYyBj
b25zdCBjaGFyIGtUZXN0U2hhcmRJbmRleFtdID0gIkdURVNUX1NIQVJEX0lOREVYIjsKQEAgLTE3
Myw4ICsxOTQsMzQgQEAgY29uc3QgY2hhciBrU3RhY2tUcmFjZU1hcmtlcltdID0gIlxuU3RhY2sg
dHJhY2U6XG4iOwogLy8gc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCiBib29sIGdfaGVs
cF9mbGFnID0gZmFsc2U7CiAKKy8vIFV0aWx0eSBmdW5jdGlvbiB0byBPcGVuIEZpbGUgZm9yIFdy
aXRpbmcKK3N0YXRpYyBGSUxFKiBPcGVuRmlsZUZvcldyaXRpbmcoY29uc3Qgc3RkOjpzdHJpbmcm
IG91dHB1dF9maWxlKSB7CisgIEZJTEUqIGZpbGVvdXQgPSBOVUxMOworICBGaWxlUGF0aCBvdXRw
dXRfZmlsZV9wYXRoKG91dHB1dF9maWxlKTsKKyAgRmlsZVBhdGggb3V0cHV0X2RpcihvdXRwdXRf
ZmlsZV9wYXRoLlJlbW92ZUZpbGVOYW1lKCkpOworCisgIGlmIChvdXRwdXRfZGlyLkNyZWF0ZURp
cmVjdG9yaWVzUmVjdXJzaXZlbHkoKSkgeworICAgIGZpbGVvdXQgPSBwb3NpeDo6Rk9wZW4ob3V0
cHV0X2ZpbGUuY19zdHIoKSwgInciKTsKKyAgfQorICBpZiAoZmlsZW91dCA9PSBOVUxMKSB7Cisg
ICAgR1RFU1RfTE9HXyhGQVRBTCkgPDwgIlVuYWJsZSB0byBvcGVuIGZpbGUgXCIiIDw8IG91dHB1
dF9maWxlIDw8ICJcIiI7CisgIH0KKyAgcmV0dXJuIGZpbGVvdXQ7Cit9CisKIH0gIC8vIG5hbWVz
cGFjZSBpbnRlcm5hbAogCisvLyBCYXplbCBwYXNzZXMgaW4gdGhlIGFyZ3VtZW50IHRvICctLXRl
c3RfZmlsdGVyJyB2aWEgdGhlIFRFU1RCUklER0VfVEVTVF9PTkxZCisvLyBlbnZpcm9ubWVudCB2
YXJpYWJsZS4KK3N0YXRpYyBjb25zdCBjaGFyKiBHZXREZWZhdWx0RmlsdGVyKCkgeworICBjb25z
dCBjaGFyKiBjb25zdCB0ZXN0YnJpZGdlX3Rlc3Rfb25seSA9CisgICAgICBpbnRlcm5hbDo6cG9z
aXg6OkdldEVudigiVEVTVEJSSURHRV9URVNUX09OTFkiKTsKKyAgaWYgKHRlc3RicmlkZ2VfdGVz
dF9vbmx5ICE9IE5VTEwpIHsKKyAgICByZXR1cm4gdGVzdGJyaWRnZV90ZXN0X29ubHk7CisgIH0K
KyAgcmV0dXJuIGtVbml2ZXJzYWxGaWx0ZXI7Cit9CisKIEdURVNUX0RFRklORV9ib29sXygKICAg
ICBhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cywKICAgICBpbnRlcm5hbDo6Qm9vbEZyb21HVGVzdEVu
digiYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMiLCBmYWxzZSksCkBAIC0xODcsNyArMjM0LDcgQEAg
R1RFU1RfREVGSU5FX2Jvb2xfKAogCiBHVEVTVF9ERUZJTkVfYm9vbF8oCiAgICAgY2F0Y2hfZXhj
ZXB0aW9ucywKLSAgICBpbnRlcm5hbDo6Qm9vbEZyb21HVGVzdEVudigiY2F0Y2hfZXhjZXB0aW9u
cyIsIGZhbHNlKSwKKyAgICBpbnRlcm5hbDo6Qm9vbEZyb21HVGVzdEVudigiY2F0Y2hfZXhjZXB0
aW9ucyIsIHRydWUpLAogICAgICJUcnVlIGlmZiAiIEdURVNUX05BTUVfCiAgICAgIiBzaG91bGQg
Y2F0Y2ggZXhjZXB0aW9ucyBhbmQgdHJlYXQgdGhlbSBhcyB0ZXN0IGZhaWx1cmVzLiIpOwogCkBA
IC0xOTcsMjYgKzI0NCwzOSBAQCBHVEVTVF9ERUZJTkVfc3RyaW5nXygKICAgICAiV2hldGhlciB0
byB1c2UgY29sb3JzIGluIHRoZSBvdXRwdXQuICBWYWxpZCB2YWx1ZXM6IHllcywgbm8sICIKICAg
ICAiYW5kIGF1dG8uICAnYXV0bycgbWVhbnMgdG8gdXNlIGNvbG9ycyBpZiB0aGUgb3V0cHV0IGlz
ICIKICAgICAiYmVpbmcgc2VudCB0byBhIHRlcm1pbmFsIGFuZCB0aGUgVEVSTSBlbnZpcm9ubWVu
dCB2YXJpYWJsZSAiCi0gICAgImlzIHNldCB0byB4dGVybSwgeHRlcm0tY29sb3IsIHh0ZXJtLTI1
NmNvbG9yLCBsaW51eCBvciBjeWd3aW4uIik7CisgICAgImlzIHNldCB0byBhIHRlcm1pbmFsIHR5
cGUgdGhhdCBzdXBwb3J0cyBjb2xvcnMuIik7CiAKIEdURVNUX0RFRklORV9zdHJpbmdfKAogICAg
IGZpbHRlciwKLSAgICBpbnRlcm5hbDo6U3RyaW5nRnJvbUdUZXN0RW52KCJmaWx0ZXIiLCBrVW5p
dmVyc2FsRmlsdGVyKSwKKyAgICBpbnRlcm5hbDo6U3RyaW5nRnJvbUdUZXN0RW52KCJmaWx0ZXIi
LCBHZXREZWZhdWx0RmlsdGVyKCkpLAogICAgICJBIGNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mIGds
b2IgKG5vdCByZWdleCkgcGF0dGVybnMgIgogICAgICJmb3IgZmlsdGVyaW5nIHRoZSB0ZXN0cyB0
byBydW4sIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAiCiAgICAgIictJyBhbmQgYSA6IHNlcGFy
YXRlZCBsaXN0IG9mIG5lZ2F0aXZlIHBhdHRlcm5zICh0ZXN0cyB0byAiCiAgICAgImV4Y2x1ZGUp
LiAgQSB0ZXN0IGlzIHJ1biBpZiBpdCBtYXRjaGVzIG9uZSBvZiB0aGUgcG9zaXRpdmUgIgogICAg
ICJwYXR0ZXJucyBhbmQgZG9lcyBub3QgbWF0Y2ggYW55IG9mIHRoZSBuZWdhdGl2ZSBwYXR0ZXJu
cy4iKTsKIAorR1RFU1RfREVGSU5FX2Jvb2xfKAorICAgIGluc3RhbGxfZmFpbHVyZV9zaWduYWxf
aGFuZGxlciwKKyAgICBpbnRlcm5hbDo6Qm9vbEZyb21HVGVzdEVudigiaW5zdGFsbF9mYWlsdXJl
X3NpZ25hbF9oYW5kbGVyIiwgZmFsc2UpLAorICAgICJJZiB0cnVlIGFuZCBzdXBwb3J0ZWQgb24g
dGhlIGN1cnJlbnQgcGxhdGZvcm0sICIgR1RFU1RfTkFNRV8gIiBzaG91bGQgIgorICAgICJpbnN0
YWxsIGEgc2lnbmFsIGhhbmRsZXIgdGhhdCBkdW1wcyBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gd2hl
biBmYXRhbCAiCisgICAgInNpZ25hbHMgYXJlIHJhaXNlZC4iKTsKKwogR1RFU1RfREVGSU5FX2Jv
b2xfKGxpc3RfdGVzdHMsIGZhbHNlLAogICAgICAgICAgICAgICAgICAgICJMaXN0IGFsbCB0ZXN0
cyB3aXRob3V0IHJ1bm5pbmcgdGhlbS4iKTsKIAorLy8gVGhlIG5ldCBwcmlvcml0eSBvcmRlciBh
ZnRlciBmbGFnIHByb2Nlc3NpbmcgaXMgdGh1czoKKy8vICAgLS1ndGVzdF9vdXRwdXQgY29tbWFu
ZCBsaW5lIGZsYWcKKy8vICAgR1RFU1RfT1VUUFVUIGVudmlyb25tZW50IHZhcmlhYmxlCisvLyAg
IFhNTF9PVVRQVVRfRklMRSBlbnZpcm9ubWVudCB2YXJpYWJsZQorLy8gICAnJwogR1RFU1RfREVG
SU5FX3N0cmluZ18oCiAgICAgb3V0cHV0LAotICAgIGludGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RF
bnYoIm91dHB1dCIsICIiKSwKLSAgICAiQSBmb3JtYXQgKGN1cnJlbnRseSBtdXN0IGJlIFwieG1s
XCIpLCBvcHRpb25hbGx5IGZvbGxvd2VkICIKLSAgICAiYnkgYSBjb2xvbiBhbmQgYW4gb3V0cHV0
IGZpbGUgbmFtZSBvciBkaXJlY3RvcnkuIEEgZGlyZWN0b3J5ICIKLSAgICAiaXMgaW5kaWNhdGVk
IGJ5IGEgdHJhaWxpbmcgcGF0aG5hbWUgc2VwYXJhdG9yLiAiCisgICAgaW50ZXJuYWw6OlN0cmlu
Z0Zyb21HVGVzdEVudigib3V0cHV0IiwKKyAgICAgIGludGVybmFsOjpPdXRwdXRGbGFnQWxzb0No
ZWNrRW52VmFyKCkuY19zdHIoKSksCisgICAgIkEgZm9ybWF0IChkZWZhdWx0cyB0byBcInhtbFwi
IGJ1dCBjYW4gYmUgc3BlY2lmaWVkIHRvIGJlIFwianNvblwiKSwgIgorICAgICJvcHRpb25hbGx5
IGZvbGxvd2VkIGJ5IGEgY29sb24gYW5kIGFuIG91dHB1dCBmaWxlIG5hbWUgb3IgZGlyZWN0b3J5
LiAiCisgICAgIkEgZGlyZWN0b3J5IGlzIGluZGljYXRlZCBieSBhIHRyYWlsaW5nIHBhdGhuYW1l
IHNlcGFyYXRvci4gIgogICAgICJFeGFtcGxlczogXCJ4bWw6ZmlsZW5hbWUueG1sXCIsIFwieG1s
OjpkaXJlY3RvcnluYW1lL1wiLiAiCiAgICAgIklmIGEgZGlyZWN0b3J5IGlzIHNwZWNpZmllZCwg
b3V0cHV0IGZpbGVzIHdpbGwgYmUgY3JlYXRlZCAiCiAgICAgIndpdGhpbiB0aGF0IGRpcmVjdG9y
eSwgd2l0aCBmaWxlLW5hbWVzIGJhc2VkIG9uIHRoZSB0ZXN0ICIKQEAgLTIyOSw2ICsyODksMTIg
QEAgR1RFU1RfREVGSU5FX2Jvb2xfKAogICAgICJUcnVlIGlmZiAiIEdURVNUX05BTUVfCiAgICAg
IiBzaG91bGQgZGlzcGxheSBlbGFwc2VkIHRpbWUgaW4gdGV4dCBvdXRwdXQuIik7CiAKK0dURVNU
X0RFRklORV9ib29sXygKKyAgICBwcmludF91dGY4LAorICAgIGludGVybmFsOjpCb29sRnJvbUdU
ZXN0RW52KCJwcmludF91dGY4IiwgdHJ1ZSksCisgICAgIlRydWUgaWZmICIgR1RFU1RfTkFNRV8K
KyAgICAiIHByaW50cyBVVEY4IGNoYXJhY3RlcnMgYXMgdGV4dC4iKTsKKwogR1RFU1RfREVGSU5F
X2ludDMyXygKICAgICByYW5kb21fc2VlZCwKICAgICBpbnRlcm5hbDo6SW50MzJGcm9tR1Rlc3RF
bnYoInJhbmRvbV9zZWVkIiwgMCksCkBAIC0yNTgsMTIgKzMyNCwyNiBAQCBHVEVTVF9ERUZJTkVf
aW50MzJfKAogICAgICJUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIHRvIHByaW50
IHdoZW4gYW4gIgogICAgICJhc3NlcnRpb24gZmFpbHMuICBUaGUgdmFsaWQgcmFuZ2UgaXMgMCB0
aHJvdWdoIDEwMCwgaW5jbHVzaXZlLiIpOwogCitHVEVTVF9ERUZJTkVfc3RyaW5nXygKKyAgICBz
dHJlYW1fcmVzdWx0X3RvLAorICAgIGludGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYoInN0cmVh
bV9yZXN1bHRfdG8iLCAiIiksCisgICAgIlRoaXMgZmxhZyBzcGVjaWZpZXMgdGhlIGhvc3QgbmFt
ZSBhbmQgdGhlIHBvcnQgbnVtYmVyIG9uIHdoaWNoIHRvIHN0cmVhbSAiCisgICAgInRlc3QgcmVz
dWx0cy4gRXhhbXBsZTogXCJsb2NhbGhvc3Q6NTU1XCIuIFRoZSBmbGFnIGlzIGVmZmVjdGl2ZSBv
bmx5IG9uICIKKyAgICAiTGludXguIik7CisKIEdURVNUX0RFRklORV9ib29sXygKICAgICB0aHJv
d19vbl9mYWlsdXJlLAogICAgIGludGVybmFsOjpCb29sRnJvbUdUZXN0RW52KCJ0aHJvd19vbl9m
YWlsdXJlIiwgZmFsc2UpLAogICAgICJXaGVuIHRoaXMgZmxhZyBpcyBzcGVjaWZpZWQsIGEgZmFp
bGVkIGFzc2VydGlvbiB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiAiCiAgICAgImlmIGV4Y2VwdGlv
bnMgYXJlIGVuYWJsZWQgb3IgZXhpdCB0aGUgcHJvZ3JhbSB3aXRoIGEgbm9uLXplcm8gY29kZSAi
Ci0gICAgIm90aGVyd2lzZS4iKTsKKyAgICAib3RoZXJ3aXNlLiBGb3IgdXNlIHdpdGggYW4gZXh0
ZXJuYWwgdGVzdCBmcmFtZXdvcmsuIik7CisKKyNpZiBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZM
QUdfCitHVEVTVF9ERUZJTkVfc3RyaW5nXygKKyAgICBmbGFnZmlsZSwKKyAgICBpbnRlcm5hbDo6
U3RyaW5nRnJvbUdUZXN0RW52KCJmbGFnZmlsZSIsICIiKSwKKyAgICAiVGhpcyBmbGFnIHNwZWNp
ZmllcyB0aGUgZmxhZ2ZpbGUgdG8gcmVhZCBjb21tYW5kLWxpbmUgZmxhZ3MgZnJvbS4iKTsKKyNl
bmRpZiAgLy8gR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXwogCiBuYW1lc3BhY2UgaW50ZXJu
YWwgewogCkBAIC0yNzIsNyArMzUyLDggQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIC8vIHRoYW4g
a01heFJhbmdlLgogVUludDMyIFJhbmRvbTo6R2VuZXJhdGUoVUludDMyIHJhbmdlKSB7CiAgIC8v
IFRoZXNlIGNvbnN0YW50cyBhcmUgdGhlIHNhbWUgYXMgYXJlIHVzZWQgaW4gZ2xpYmMncyByYW5k
KDMpLgotICBzdGF0ZV8gPSAoMTEwMzUxNTI0NVUqc3RhdGVfICsgMTIzNDVVKSAlIGtNYXhSYW5n
ZTsKKyAgLy8gVXNlIHdpZGVyIHR5cGVzIHRoYW4gbmVjZXNzYXJ5IHRvIHByZXZlbnQgdW5zaWdu
ZWQgb3ZlcmZsb3cgZGlhZ25vc3RpY3MuCisgIHN0YXRlXyA9IHN0YXRpY19jYXN0PFVJbnQzMj4o
MTEwMzUxNTI0NVVMTCpzdGF0ZV8gKyAxMjM0NVUpICUga01heFJhbmdlOwogCiAgIEdURVNUX0NI
RUNLXyhyYW5nZSA+IDApCiAgICAgICA8PCAiQ2Fubm90IGdlbmVyYXRlIGEgbnVtYmVyIGluIHRo
ZSByYW5nZSBbMCwgMCkuIjsKQEAgLTI4OSwxMyArMzcwLDcgQEAgVUludDMyIFJhbmRvbTo6R2Vu
ZXJhdGUoVUludDMyIHJhbmdlKSB7CiAvLyBHVGVzdElzSW5pdGlhbGl6ZWQoKSByZXR1cm5zIHRy
dWUgaWZmIHRoZSB1c2VyIGhhcyBpbml0aWFsaXplZAogLy8gR29vZ2xlIFRlc3QuICBVc2VmdWwg
Zm9yIGNhdGNoaW5nIHRoZSB1c2VyIG1pc3Rha2Ugb2Ygbm90IGluaXRpYWxpemluZwogLy8gR29v
Z2xlIFRlc3QgYmVmb3JlIGNhbGxpbmcgUlVOX0FMTF9URVNUUygpLgotLy8KLS8vIEEgdXNlciBt
dXN0IGNhbGwgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKSB0byBpbml0aWFsaXplIEdvb2dsZQot
Ly8gVGVzdC4gIGdfaW5pdF9ndGVzdF9jb3VudCBpcyBzZXQgdG8gdGhlIG51bWJlciBvZiB0aW1l
cwotLy8gSW5pdEdvb2dsZVRlc3QoKSBoYXMgYmVlbiBjYWxsZWQuICBXZSBkb24ndCBwcm90ZWN0
IHRoaXMgdmFyaWFibGUKLS8vIHVuZGVyIGEgbXV0ZXggYXMgaXQgaXMgb25seSBhY2Nlc3NlZCBp
biB0aGUgbWFpbiB0aHJlYWQuCi1pbnQgZ19pbml0X2d0ZXN0X2NvdW50ID0gMDsKLXN0YXRpYyBi
b29sIEdUZXN0SXNJbml0aWFsaXplZCgpIHsgcmV0dXJuIGdfaW5pdF9ndGVzdF9jb3VudCAhPSAw
OyB9CitzdGF0aWMgYm9vbCBHVGVzdElzSW5pdGlhbGl6ZWQoKSB7IHJldHVybiBHZXRBcmd2cygp
LnNpemUoKSA+IDA7IH0KIAogLy8gSXRlcmF0ZXMgb3ZlciBhIHZlY3RvciBvZiBUZXN0Q2FzZXMs
IGtlZXBpbmcgYSBydW5uaW5nIHN1bSBvZiB0aGUKIC8vIHJlc3VsdHMgb2YgY2FsbGluZyBhIGdp
dmVuIGludC1yZXR1cm5pbmcgbWV0aG9kIG9uIGVhY2guCkBAIC0zNDksMTAgKzQyNCwyMSBAQCB2
b2lkIEFzc2VydEhlbHBlcjo6b3BlcmF0b3I9KGNvbnN0IE1lc3NhZ2UmIG1lc3NhZ2UpIGNvbnN0
IHsKIH0KIAogLy8gTXV0ZXggZm9yIGxpbmtlZCBwb2ludGVycy4KLUdURVNUX0RFRklORV9TVEFU
SUNfTVVURVhfKGdfbGlua2VkX3B0cl9tdXRleCk7CitHVEVTVF9BUElfIEdURVNUX0RFRklORV9T
VEFUSUNfTVVURVhfKGdfbGlua2VkX3B0cl9tdXRleCk7CiAKLS8vIEFwcGxpY2F0aW9uIHBhdGhu
YW1lIGdvdHRlbiBpbiBJbml0R29vZ2xlVGVzdC4KLVN0cmluZyBnX2V4ZWN1dGFibGVfcGF0aDsK
Ky8vIEEgY29weSBvZiBhbGwgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4gIFNldCBieSBJbml0R29v
Z2xlVGVzdCgpLgorOjpzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gZ19hcmd2czsKKworOjpzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0QXJndnMoKSB7CisjaWYgZGVmaW5lZChHVEVTVF9DVVNU
T01fR0VUX0FSR1ZTXykKKyAgLy8gR1RFU1RfQ1VTVE9NX0dFVF9BUkdWU18oKSBtYXkgcmV0dXJu
IGEgY29udGFpbmVyIG9mIHN0ZDo6c3RyaW5nIG9yCisgIC8vIDo6c3RyaW5nLiBUaGlzIGNvZGUg
Y29udmVydHMgaXQgdG8gdGhlIGFwcHJvcHJpYXRlIHR5cGUuCisgIGNvbnN0IGF1dG8mIGN1c3Rv
bSA9IEdURVNUX0NVU1RPTV9HRVRfQVJHVlNfKCk7CisgIHJldHVybiA6OnN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPihjdXN0b20uYmVnaW4oKSwgY3VzdG9tLmVuZCgpKTsKKyNlbHNlICAgLy8gZGVm
aW5lZChHVEVTVF9DVVNUT01fR0VUX0FSR1ZTXykKKyAgcmV0dXJuIGdfYXJndnM7CisjZW5kaWYg
IC8vIGRlZmluZWQoR1RFU1RfQ1VTVE9NX0dFVF9BUkdWU18pCit9CiAKIC8vIFJldHVybnMgdGhl
IGN1cnJlbnQgYXBwbGljYXRpb24ncyBuYW1lLCByZW1vdmluZyBkaXJlY3RvcnkgcGF0aCBpZiB0
aGF0CiAvLyBpcyBwcmVzZW50LgpAQCAtMzYwLDkgKzQ0Niw5IEBAIEZpbGVQYXRoIEdldEN1cnJl
bnRFeGVjdXRhYmxlTmFtZSgpIHsKICAgRmlsZVBhdGggcmVzdWx0OwogCiAjaWYgR1RFU1RfT1Nf
V0lORE9XUwotICByZXN1bHQuU2V0KEZpbGVQYXRoKGdfZXhlY3V0YWJsZV9wYXRoKS5SZW1vdmVF
eHRlbnNpb24oImV4ZSIpKTsKKyAgcmVzdWx0LlNldChGaWxlUGF0aChHZXRBcmd2cygpWzBdKS5S
ZW1vdmVFeHRlbnNpb24oImV4ZSIpKTsKICNlbHNlCi0gIHJlc3VsdC5TZXQoRmlsZVBhdGgoZ19l
eGVjdXRhYmxlX3BhdGgpKTsKKyAgcmVzdWx0LlNldChGaWxlUGF0aChHZXRBcmd2cygpWzBdKSk7
CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAogICByZXR1cm4gcmVzdWx0LlJlbW92ZURp
cmVjdG9yeU5hbWUoKTsKQEAgLTM3MSwzMyArNDU3LDM0IEBAIEZpbGVQYXRoIEdldEN1cnJlbnRF
eGVjdXRhYmxlTmFtZSgpIHsKIC8vIEZ1bmN0aW9ucyBmb3IgcHJvY2Vzc2luZyB0aGUgZ3Rlc3Rf
b3V0cHV0IGZsYWcuCiAKIC8vIFJldHVybnMgdGhlIG91dHB1dCBmb3JtYXQsIG9yICIiIGZvciBu
b3JtYWwgcHJpbnRlZCBvdXRwdXQuCi1TdHJpbmcgVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRG
b3JtYXQoKSB7CitzdGQ6OnN0cmluZyBVbml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdCgp
IHsKICAgY29uc3QgY2hhciogY29uc3QgZ3Rlc3Rfb3V0cHV0X2ZsYWcgPSBHVEVTVF9GTEFHKG91
dHB1dCkuY19zdHIoKTsKLSAgaWYgKGd0ZXN0X291dHB1dF9mbGFnID09IE5VTEwpIHJldHVybiBT
dHJpbmcoIiIpOwotCiAgIGNvbnN0IGNoYXIqIGNvbnN0IGNvbG9uID0gc3RyY2hyKGd0ZXN0X291
dHB1dF9mbGFnLCAnOicpOwogICByZXR1cm4gKGNvbG9uID09IE5VTEwpID8KLSAgICAgIFN0cmlu
ZyhndGVzdF9vdXRwdXRfZmxhZykgOgotICAgICAgU3RyaW5nKGd0ZXN0X291dHB1dF9mbGFnLCBj
b2xvbiAtIGd0ZXN0X291dHB1dF9mbGFnKTsKKyAgICAgIHN0ZDo6c3RyaW5nKGd0ZXN0X291dHB1
dF9mbGFnKSA6CisgICAgICBzdGQ6OnN0cmluZyhndGVzdF9vdXRwdXRfZmxhZywgY29sb24gLSBn
dGVzdF9vdXRwdXRfZmxhZyk7CiB9CiAKIC8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHJlcXVl
c3RlZCBvdXRwdXQgZmlsZSwgb3IgdGhlIGRlZmF1bHQgaWYgbm9uZQogLy8gd2FzIGV4cGxpY2l0
bHkgc3BlY2lmaWVkLgotU3RyaW5nIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9P
dXRwdXRGaWxlKCkgeworc3RkOjpzdHJpbmcgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBh
dGhUb091dHB1dEZpbGUoKSB7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGd0ZXN0X291dHB1dF9mbGFn
ID0gR1RFU1RfRkxBRyhvdXRwdXQpLmNfc3RyKCk7Ci0gIGlmIChndGVzdF9vdXRwdXRfZmxhZyA9
PSBOVUxMKQotICAgIHJldHVybiBTdHJpbmcoIiIpOworCisgIHN0ZDo6c3RyaW5nIGZvcm1hdCA9
IEdldE91dHB1dEZvcm1hdCgpOworICBpZiAoZm9ybWF0LmVtcHR5KCkpCisgICAgZm9ybWF0ID0g
c3RkOjpzdHJpbmcoa0RlZmF1bHRPdXRwdXRGb3JtYXQpOwogCiAgIGNvbnN0IGNoYXIqIGNvbnN0
IGNvbG9uID0gc3RyY2hyKGd0ZXN0X291dHB1dF9mbGFnLCAnOicpOwogICBpZiAoY29sb24gPT0g
TlVMTCkKLSAgICByZXR1cm4gU3RyaW5nKGludGVybmFsOjpGaWxlUGF0aDo6Q29uY2F0UGF0aHMo
Ci0gICAgICAgICAgICAgICBpbnRlcm5hbDo6RmlsZVBhdGgoCi0gICAgICAgICAgICAgICAgICAg
VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPm9yaWdpbmFsX3dvcmtpbmdfZGlyKCkpLAotICAgICAg
ICAgICAgICAgaW50ZXJuYWw6OkZpbGVQYXRoKGtEZWZhdWx0T3V0cHV0RmlsZSkpLlRvU3RyaW5n
KCkgKTsKKyAgICByZXR1cm4gaW50ZXJuYWw6OkZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoCisgICAg
ICAgIGludGVybmFsOjpGaWxlUGF0aCgKKyAgICAgICAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5j
ZSgpLT5vcmlnaW5hbF93b3JraW5nX2RpcigpKSwKKyAgICAgICAgaW50ZXJuYWw6OkZpbGVQYXRo
KGtEZWZhdWx0T3V0cHV0RmlsZSksIDAsCisgICAgICAgIGZvcm1hdC5jX3N0cigpKS5zdHJpbmco
KTsKIAogICBpbnRlcm5hbDo6RmlsZVBhdGggb3V0cHV0X25hbWUoY29sb24gKyAxKTsKICAgaWYg
KCFvdXRwdXRfbmFtZS5Jc0Fic29sdXRlUGF0aCgpKQotICAgIC8vIFRPRE8od2FuQGdvb2dsZS5j
b20pOiBvbiBXaW5kb3dzIFxzb21lXHBhdGggaXMgbm90IGFuIGFic29sdXRlCisgICAgLy8gRklY
TUU6IG9uIFdpbmRvd3MgXHNvbWVccGF0aCBpcyBub3QgYW4gYWJzb2x1dGUKICAgICAvLyBwYXRo
IChhcyBpdHMgbWVhbmluZyBkZXBlbmRzIG9uIHRoZSBjdXJyZW50IGRyaXZlKSwgeWV0IHRoZQog
ICAgIC8vIGZvbGxvd2luZyBsb2dpYyBmb3IgdHVybmluZyBpdCBpbnRvIGFuIGFic29sdXRlIHBh
dGggaXMgd3JvbmcuCiAgICAgLy8gRml4IGl0LgpAQCAtNDA2LDEyICs0OTMsMTIgQEAgU3RyaW5n
IFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkgewogICAgICAg
ICBpbnRlcm5hbDo6RmlsZVBhdGgoY29sb24gKyAxKSk7CiAKICAgaWYgKCFvdXRwdXRfbmFtZS5J
c0RpcmVjdG9yeSgpKQotICAgIHJldHVybiBvdXRwdXRfbmFtZS5Ub1N0cmluZygpOworICAgIHJl
dHVybiBvdXRwdXRfbmFtZS5zdHJpbmcoKTsKIAogICBpbnRlcm5hbDo6RmlsZVBhdGggcmVzdWx0
KGludGVybmFsOjpGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFtZSgKICAgICAgIG91dHB1
dF9uYW1lLCBpbnRlcm5hbDo6R2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCksCiAgICAgICBHZXRP
dXRwdXRGb3JtYXQoKS5jX3N0cigpKSk7Ci0gIHJldHVybiByZXN1bHQuVG9TdHJpbmcoKTsKKyAg
cmV0dXJuIHJlc3VsdC5zdHJpbmcoKTsKIH0KIAogLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgd2ls
ZGNhcmQgcGF0dGVybiBtYXRjaGVzIHRoZSBzdHJpbmcuICBUaGUKQEAgLTQzNiw3ICs1MjMsOCBA
QCBib29sIFVuaXRUZXN0T3B0aW9uczo6UGF0dGVybk1hdGNoZXNTdHJpbmcoY29uc3QgY2hhciAq
cGF0dGVybiwKICAgfQogfQogCi1ib29sIFVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcihj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IGNoYXIqIGZpbHRlcikgeworYm9vbCBVbml0VGVzdE9w
dGlvbnM6Ok1hdGNoZXNGaWx0ZXIoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIGNvbnN0
IGNoYXIqIGZpbHRlcikgewogICBjb25zdCBjaGFyICpjdXJfcGF0dGVybiA9IGZpbHRlcjsKICAg
Zm9yICg7OykgewogICAgIGlmIChQYXR0ZXJuTWF0Y2hlc1N0cmluZyhjdXJfcGF0dGVybiwgbmFt
ZS5jX3N0cigpKSkgewpAQCAtNDU2LDI4ICs1NDQsMjQgQEAgYm9vbCBVbml0VGVzdE9wdGlvbnM6
Ok1hdGNoZXNGaWx0ZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBjaGFyKiBmaWx0ZXIpIHsK
ICAgfQogfQogCi0vLyBUT0RPKGtlaXRocmF5KTogbW92ZSBTdHJpbmcgZnVuY3Rpb24gaW1wbGVt
ZW50YXRpb25zIHRvIGd0ZXN0LXN0cmluZy5jYy4KLQogLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUg
dXNlci1zcGVjaWZpZWQgZmlsdGVyIG1hdGNoZXMgdGhlIHRlc3QgY2FzZQogLy8gbmFtZSBhbmQg
dGhlIHRlc3QgbmFtZS4KLWJvb2wgVW5pdFRlc3RPcHRpb25zOjpGaWx0ZXJNYXRjaGVzVGVzdChj
b25zdCBTdHJpbmcgJnRlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFN0cmluZyAmdGVzdF9uYW1lKSB7Ci0gIGNvbnN0IFN0cmluZyYg
ZnVsbF9uYW1lID0gU3RyaW5nOjpGb3JtYXQoIiVzLiVzIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2VfbmFtZS5jX3N0cigpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbmFtZS5jX3N0cigpKTsKK2Jv
b2wgVW5pdFRlc3RPcHRpb25zOjpGaWx0ZXJNYXRjaGVzVGVzdChjb25zdCBzdGQ6OnN0cmluZyAm
dGVzdF9jYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnRlc3RfbmFtZSkgeworICBjb25zdCBzdGQ6OnN0cmluZyYgZnVs
bF9uYW1lID0gdGVzdF9jYXNlX25hbWUgKyAiLiIgKyB0ZXN0X25hbWUuY19zdHIoKTsKIAogICAv
LyBTcGxpdCAtLWd0ZXN0X2ZpbHRlciBhdCAnLScsIGlmIHRoZXJlIGlzIG9uZSwgdG8gc2VwYXJh
dGUgaW50bwogICAvLyBwb3NpdGl2ZSBmaWx0ZXIgYW5kIG5lZ2F0aXZlIGZpbHRlciBwb3J0aW9u
cwogICBjb25zdCBjaGFyKiBjb25zdCBwID0gR1RFU1RfRkxBRyhmaWx0ZXIpLmNfc3RyKCk7CiAg
IGNvbnN0IGNoYXIqIGNvbnN0IGRhc2ggPSBzdHJjaHIocCwgJy0nKTsKLSAgU3RyaW5nIHBvc2l0
aXZlOwotICBTdHJpbmcgbmVnYXRpdmU7CisgIHN0ZDo6c3RyaW5nIHBvc2l0aXZlOworICBzdGQ6
OnN0cmluZyBuZWdhdGl2ZTsKICAgaWYgKGRhc2ggPT0gTlVMTCkgewogICAgIHBvc2l0aXZlID0g
R1RFU1RfRkxBRyhmaWx0ZXIpLmNfc3RyKCk7ICAvLyBXaG9sZSBzdHJpbmcgaXMgYSBwb3NpdGl2
ZSBmaWx0ZXIKLSAgICBuZWdhdGl2ZSA9IFN0cmluZygiIik7CisgICAgbmVnYXRpdmUgPSAiIjsK
ICAgfSBlbHNlIHsKLSAgICBwb3NpdGl2ZSA9IFN0cmluZyhwLCBkYXNoIC0gcCk7ICAvLyBFdmVy
eXRoaW5nIHVwIHRvIHRoZSBkYXNoCi0gICAgbmVnYXRpdmUgPSBTdHJpbmcoZGFzaCsxKTsgICAg
ICAgLy8gRXZlcnl0aGluZyBhZnRlciB0aGUgZGFzaAorICAgIHBvc2l0aXZlID0gc3RkOjpzdHJp
bmcocCwgZGFzaCk7ICAgLy8gRXZlcnl0aGluZyB1cCB0byB0aGUgZGFzaAorICAgIG5lZ2F0aXZl
ID0gc3RkOjpzdHJpbmcoZGFzaCArIDEpOyAgLy8gRXZlcnl0aGluZyBhZnRlciB0aGUgZGFzaAog
ICAgIGlmIChwb3NpdGl2ZS5lbXB0eSgpKSB7CiAgICAgICAvLyBUcmVhdCAnLXRlc3QxJyBhcyB0
aGUgc2FtZSBhcyAnKi10ZXN0MScKICAgICAgIHBvc2l0aXZlID0ga1VuaXZlcnNhbEZpbHRlcjsK
QEAgLTQ5MCwyMCArNTc0LDMzIEBAIGJvb2wgVW5pdFRlc3RPcHRpb25zOjpGaWx0ZXJNYXRjaGVz
VGVzdChjb25zdCBTdHJpbmcgJnRlc3RfY2FzZV9uYW1lLAogICAgICAgICAgICFNYXRjaGVzRmls
dGVyKGZ1bGxfbmFtZSwgbmVnYXRpdmUuY19zdHIoKSkpOwogfQogCi0jaWYgR1RFU1RfT1NfV0lO
RE9XUworI2lmIEdURVNUX0hBU19TRUgKIC8vIFJldHVybnMgRVhDRVBUSU9OX0VYRUNVVEVfSEFO
RExFUiBpZiBHb29nbGUgVGVzdCBzaG91bGQgaGFuZGxlIHRoZQogLy8gZ2l2ZW4gU0VIIGV4Y2Vw
dGlvbiwgb3IgRVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJDSCBvdGhlcndpc2UuCiAvLyBUaGlzIGZ1
bmN0aW9uIGlzIHVzZWZ1bCBhcyBhbiBfX2V4Y2VwdCBjb25kaXRpb24uCiBpbnQgVW5pdFRlc3RP
cHRpb25zOjpHVGVzdFNob3VsZFByb2Nlc3NTRUgoRFdPUkQgZXhjZXB0aW9uX2NvZGUpIHsKLSAg
Ly8gR29vZ2xlIFRlc3Qgc2hvdWxkIGhhbmRsZSBhbiBleGNlcHRpb24gaWY6CisgIC8vIEdvb2ds
ZSBUZXN0IHNob3VsZCBoYW5kbGUgYSBTRUggZXhjZXB0aW9uIGlmOgogICAvLyAgIDEuIHRoZSB1
c2VyIHdhbnRzIGl0IHRvLCBBTkQKLSAgLy8gICAyLiB0aGlzIGlzIG5vdCBhIGJyZWFrcG9pbnQg
ZXhjZXB0aW9uLgotICByZXR1cm4gKEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgJiYKLSAg
ICAgICAgICBleGNlcHRpb25fY29kZSAhPSBFWENFUFRJT05fQlJFQUtQT0lOVCkgPwotICAgICAg
RVhDRVBUSU9OX0VYRUNVVEVfSEFORExFUiA6Ci0gICAgICBFWENFUFRJT05fQ09OVElOVUVfU0VB
UkNIOworICAvLyAgIDIuIHRoaXMgaXMgbm90IGEgYnJlYWtwb2ludCBleGNlcHRpb24sIEFORAor
ICAvLyAgIDMuIHRoaXMgaXMgbm90IGEgQysrIGV4Y2VwdGlvbiAoVkMrKyBpbXBsZW1lbnRzIHRo
ZW0gdmlhIFNFSCwKKyAgLy8gICAgICBhcHBhcmVudGx5KS4KKyAgLy8KKyAgLy8gU0VIIGV4Y2Vw
dGlvbiBjb2RlIGZvciBDKysgZXhjZXB0aW9ucy4KKyAgLy8gKHNlZSBodHRwOi8vc3VwcG9ydC5t
aWNyb3NvZnQuY29tL2tiLzE4NTI5NCBmb3IgbW9yZSBpbmZvcm1hdGlvbikuCisgIGNvbnN0IERX
T1JEIGtDeHhFeGNlcHRpb25Db2RlID0gMHhlMDZkNzM2MzsKKworICBib29sIHNob3VsZF9oYW5k
bGUgPSB0cnVlOworCisgIGlmICghR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSkKKyAgICBz
aG91bGRfaGFuZGxlID0gZmFsc2U7CisgIGVsc2UgaWYgKGV4Y2VwdGlvbl9jb2RlID09IEVYQ0VQ
VElPTl9CUkVBS1BPSU5UKQorICAgIHNob3VsZF9oYW5kbGUgPSBmYWxzZTsKKyAgZWxzZSBpZiAo
ZXhjZXB0aW9uX2NvZGUgPT0ga0N4eEV4Y2VwdGlvbkNvZGUpCisgICAgc2hvdWxkX2hhbmRsZSA9
IGZhbHNlOworCisgIHJldHVybiBzaG91bGRfaGFuZGxlID8gRVhDRVBUSU9OX0VYRUNVVEVfSEFO
RExFUiA6IEVYQ0VQVElPTl9DT05USU5VRV9TRUFSQ0g7CiB9Ci0jZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAogCiB9ICAvLyBuYW1lc3BhY2UgaW50
ZXJuYWwKIApAQCAtNTc4LDEzICs2NzUsMTMgQEAgZXh0ZXJuIGNvbnN0IFR5cGVJZCBrVGVzdFR5
cGVJZEluR29vZ2xlVGVzdCA9IEdldFRlc3RUeXBlSWQoKTsKIC8vIFRoaXMgcHJlZGljYXRlLWZv
cm1hdHRlciBjaGVja3MgdGhhdCAncmVzdWx0cycgY29udGFpbnMgYSB0ZXN0IHBhcnQKIC8vIGZh
aWx1cmUgb2YgdGhlIGdpdmVuIHR5cGUgYW5kIHRoYXQgdGhlIGZhaWx1cmUgbWVzc2FnZSBjb250
YWlucyB0aGUKIC8vIGdpdmVuIHN1YnN0cmluZy4KLUFzc2VydGlvblJlc3VsdCBIYXNPbmVGYWls
dXJlKGNvbnN0IGNoYXIqIC8qIHJlc3VsdHNfZXhwciAqLywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIC8qIHR5cGVfZXhwciAqLywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qIHN1YnN0cl9leHByICovLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFBhcnRSZXN1bHRBcnJheSYgcmVzdWx0cywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzdWJzdHIpIHsKLSAgY29u
c3QgU3RyaW5nIGV4cGVjdGVkKHR5cGUgPT0gVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUg
Pworc3RhdGljIEFzc2VydGlvblJlc3VsdCBIYXNPbmVGYWlsdXJlKGNvbnN0IGNoYXIqIC8qIHJl
c3VsdHNfZXhwciAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiAvKiB0eXBlX2V4cHIgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogLyogc3Vic3RyX2V4cHIgKi8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFBhcnRSZXN1bHRBcnJheSYgcmVzdWx0cywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBzdWJzdHIpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZXhwZWN0ZWQodHlwZSA9PSBUZXN0
UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAiMSBm
YXRhbCBmYWlsdXJlIiA6CiAgICAgICAgICAgICAgICAgICAgICAgICAiMSBub24tZmF0YWwgZmFp
bHVyZSIpOwogICBNZXNzYWdlIG1zZzsKQEAgLTU5NCwyMyArNjkxLDIxIEBAIEFzc2VydGlvblJl
c3VsdCBIYXNPbmVGYWlsdXJlKGNvbnN0IGNoYXIqIC8qIHJlc3VsdHNfZXhwciAqLywKICAgICBm
b3IgKGludCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyBpKyspIHsKICAgICAgIG1zZyA8PCAi
XG4iIDw8IHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoaSk7CiAgICAgfQotICAgIHJldHVybiBB
c3NlcnRpb25GYWlsdXJlKG1zZyk7CisgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBt
c2c7CiAgIH0KIAogICBjb25zdCBUZXN0UGFydFJlc3VsdCYgciA9IHJlc3VsdHMuR2V0VGVzdFBh
cnRSZXN1bHQoMCk7CiAgIGlmIChyLnR5cGUoKSAhPSB0eXBlKSB7Ci0gICAgbXNnIDw8ICJFeHBl
Y3RlZDogIiA8PCBleHBlY3RlZCA8PCAiXG4iCi0gICAgICAgIDw8ICIgIEFjdHVhbDpcbiIKLSAg
ICAgICAgPDwgcjsKLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICAgIHJldHVy
biBBc3NlcnRpb25GYWlsdXJlKCkgPDwgIkV4cGVjdGVkOiAiIDw8IGV4cGVjdGVkIDw8ICJcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgIEFjdHVhbDpcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8IHI7CiAgIH0KIAotICBpZiAoc3Ryc3RyKHIubWVzc2Fn
ZSgpLCBzdWJzdHIpID09IE5VTEwpIHsKLSAgICBtc2cgPDwgIkV4cGVjdGVkOiAiIDw8IGV4cGVj
dGVkIDw8ICIgY29udGFpbmluZyBcIiIKLSAgICAgICAgPDwgc3Vic3RyIDw8ICJcIlxuIgotICAg
ICAgICA8PCAiICBBY3R1YWw6XG4iCi0gICAgICAgIDw8IHI7Ci0gICAgcmV0dXJuIEFzc2VydGlv
bkZhaWx1cmUobXNnKTsKKyAgaWYgKHN0cnN0cihyLm1lc3NhZ2UoKSwgc3Vic3RyLmNfc3RyKCkp
ID09IE5VTEwpIHsKKyAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJFeHBlY3RlZDog
IiA8PCBleHBlY3RlZCA8PCAiIGNvbnRhaW5pbmcgXCIiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCBzdWJzdHIgPDwgIlwiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCAiICBBY3R1YWw6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCByOwog
ICB9CiAKICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKQEAgLTYxOSwyMCArNzE0LDE3IEBA
IEFzc2VydGlvblJlc3VsdCBIYXNPbmVGYWlsdXJlKGNvbnN0IGNoYXIqIC8qIHJlc3VsdHNfZXhw
ciAqLywKIC8vIFRoZSBjb25zdHJ1Y3RvciBvZiBTaW5nbGVGYWlsdXJlQ2hlY2tlciByZW1lbWJl
cnMgd2hlcmUgdG8gbG9vayB1cAogLy8gdGVzdCBwYXJ0IHJlc3VsdHMsIHdoYXQgdHlwZSBvZiBm
YWlsdXJlIHdlIGV4cGVjdCwgYW5kIHdoYXQKIC8vIHN1YnN0cmluZyB0aGUgZmFpbHVyZSBtZXNz
YWdlIHNob3VsZCBjb250YWluLgotU2luZ2xlRmFpbHVyZUNoZWNrZXI6OiBTaW5nbGVGYWlsdXJl
Q2hlY2tlcigKLSAgICBjb25zdCBUZXN0UGFydFJlc3VsdEFycmF5KiByZXN1bHRzLAotICAgIFRl
c3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUsCi0gICAgY29uc3QgY2hhciogc3Vic3RyKQotICAgIDog
cmVzdWx0c18ocmVzdWx0cyksCi0gICAgICB0eXBlXyh0eXBlKSwKLSAgICAgIHN1YnN0cl8oc3Vi
c3RyKSB7fQorU2luZ2xlRmFpbHVyZUNoZWNrZXI6OlNpbmdsZUZhaWx1cmVDaGVja2VyKGNvbnN0
IFRlc3RQYXJ0UmVzdWx0QXJyYXkqIHJlc3VsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGVzdFBhcnRSZXN1bHQ6OlR5cGUgdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgc3Vic3Ry
KQorICAgIDogcmVzdWx0c18ocmVzdWx0cyksIHR5cGVfKHR5cGUpLCBzdWJzdHJfKHN1YnN0cikg
e30KIAogLy8gVGhlIGRlc3RydWN0b3Igb2YgU2luZ2xlRmFpbHVyZUNoZWNrZXIgdmVyaWZpZXMg
dGhhdCB0aGUgZ2l2ZW4KIC8vIFRlc3RQYXJ0UmVzdWx0QXJyYXkgY29udGFpbnMgZXhhY3RseSBv
bmUgZmFpbHVyZSB0aGF0IGhhcyB0aGUgZ2l2ZW4KIC8vIHR5cGUgYW5kIGNvbnRhaW5zIHRoZSBn
aXZlbiBzdWJzdHJpbmcuICBJZiB0aGF0J3Mgbm90IHRoZSBjYXNlLCBhCiAvLyBub24tZmF0YWwg
ZmFpbHVyZSB3aWxsIGJlIGdlbmVyYXRlZC4KIFNpbmdsZUZhaWx1cmVDaGVja2VyOjp+U2luZ2xl
RmFpbHVyZUNoZWNrZXIoKSB7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDMoSGFzT25lRmFpbHVyZSwg
KnJlc3VsdHNfLCB0eXBlXywgc3Vic3RyXy5jX3N0cigpKTsKKyAgRVhQRUNUX1BSRURfRk9STUFU
MyhIYXNPbmVGYWlsdXJlLCAqcmVzdWx0c18sIHR5cGVfLCBzdWJzdHJfKTsKIH0KIAogRGVmYXVs
dEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6OkRlZmF1bHRHbG9iYWxUZXN0UGFydFJlc3Vs
dFJlcG9ydGVyKApAQCAtNzA5LDExICs4MDEsMjIgQEAgaW50IFVuaXRUZXN0SW1wbDo6ZmFpbGVk
X3Rlc3RfY291bnQoKSBjb25zdCB7CiAgIHJldHVybiBTdW1PdmVyVGVzdENhc2VMaXN0KHRlc3Rf
Y2FzZXNfLCAmVGVzdENhc2U6OmZhaWxlZF90ZXN0X2NvdW50KTsKIH0KIAorLy8gR2V0cyB0aGUg
bnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHRoYXQgd2lsbCBiZSByZXBvcnRlZCBpbiB0aGUgWE1M
IHJlcG9ydC4KK2ludCBVbml0VGVzdEltcGw6OnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3Vu
dCgpIGNvbnN0IHsKKyAgcmV0dXJuIFN1bU92ZXJUZXN0Q2FzZUxpc3QodGVzdF9jYXNlc18sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZUZXN0Q2FzZTo6cmVwb3J0YWJsZV9kaXNhYmxl
ZF90ZXN0X2NvdW50KTsKK30KKwogLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3Rz
LgogaW50IFVuaXRUZXN0SW1wbDo6ZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKICAgcmV0
dXJuIFN1bU92ZXJUZXN0Q2FzZUxpc3QodGVzdF9jYXNlc18sICZUZXN0Q2FzZTo6ZGlzYWJsZWRf
dGVzdF9jb3VudCk7CiB9CiAKKy8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0cyB0byBiZSBwcmlu
dGVkIGluIHRoZSBYTUwgcmVwb3J0LgoraW50IFVuaXRUZXN0SW1wbDo6cmVwb3J0YWJsZV90ZXN0
X2NvdW50KCkgY29uc3QgeworICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0ZXN0X2Nhc2Vz
XywgJlRlc3RDYXNlOjpyZXBvcnRhYmxlX3Rlc3RfY291bnQpOworfQorCiAvLyBHZXRzIHRoZSBu
dW1iZXIgb2YgYWxsIHRlc3RzLgogaW50IFVuaXRUZXN0SW1wbDo6dG90YWxfdGVzdF9jb3VudCgp
IGNvbnN0IHsKICAgcmV0dXJuIFN1bU92ZXJUZXN0Q2FzZUxpc3QodGVzdF9jYXNlc18sICZUZXN0
Q2FzZTo6dG90YWxfdGVzdF9jb3VudCk7CkBAIC03MjQsNyArODI3LDcgQEAgaW50IFVuaXRUZXN0
SW1wbDo6dGVzdF90b19ydW5fY291bnQoKSBjb25zdCB7CiAgIHJldHVybiBTdW1PdmVyVGVzdENh
c2VMaXN0KHRlc3RfY2FzZXNfLCAmVGVzdENhc2U6OnRlc3RfdG9fcnVuX2NvdW50KTsKIH0KIAot
Ly8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBhcyBhIFN0cmluZy4KKy8vIFJl
dHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYW4gc3RkOjpzdHJpbmcuCiAvLwog
Ly8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZCBpcyBz
cGVjaWZpZWQgYnkKIC8vIHRoZSBndGVzdF9zdGFja190cmFjZV9kZXB0aCBmbGFnLiAgVGhlIHNr
aXBfY291bnQgcGFyYW1ldGVyCkBAIC03MzQsOSArODM3LDEzIEBAIGludCBVbml0VGVzdEltcGw6
OnRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3QgewogLy8gRm9yIGV4YW1wbGUsIGlmIEZvbygpIGNh
bGxzIEJhcigpLCB3aGljaCBpbiB0dXJuIGNhbGxzCiAvLyBDdXJyZW50T3NTdGFja1RyYWNlRXhj
ZXB0VG9wKDEpLCBGb28oKSB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZQogLy8gdHJhY2UgYnV0IEJh
cigpIGFuZCBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKCkgd29uJ3QuCi1TdHJpbmcgVW5p
dFRlc3RJbXBsOjpDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKGludCBza2lwX2NvdW50KSB7
Ci0gICh2b2lkKXNraXBfY291bnQ7Ci0gIHJldHVybiBTdHJpbmcoIiIpOworc3RkOjpzdHJpbmcg
VW5pdFRlc3RJbXBsOjpDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKGludCBza2lwX2NvdW50
KSB7CisgIHJldHVybiBvc19zdGFja190cmFjZV9nZXR0ZXIoKS0+Q3VycmVudFN0YWNrVHJhY2Uo
CisgICAgICBzdGF0aWNfY2FzdDxpbnQ+KEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpKSwK
KyAgICAgIHNraXBfY291bnQgKyAxCisgICAgICAvLyBTa2lwcyB0aGUgdXNlci1zcGVjaWZpZWQg
bnVtYmVyIG9mIGZyYW1lcyBwbHVzIHRoaXMgZnVuY3Rpb24KKyAgICAgIC8vIGl0c2VsZi4KKyAg
ICAgICk7ICAvLyBOT0xJTlQKIH0KIAogLy8gUmV0dXJucyB0aGUgY3VycmVudCB0aW1lIGluIG1p
bGxpc2Vjb25kcy4KQEAgLTc1MSw3ICs4NTgsNyBAQCBUaW1lSW5NaWxsaXMgR2V0VGltZUluTWls
bGlzKCkgewogICBTWVNURU1USU1FIG5vd19zeXN0aW1lOwogICBGSUxFVElNRSBub3dfZmlsZXRp
bWU7CiAgIFVMQVJHRV9JTlRFR0VSIG5vd19pbnQ2NDsKLSAgLy8gVE9ETyhrZW50b25AZ29vZ2xl
LmNvbSk6IFNob3VsZG4ndCB0aGlzIGp1c3QgdXNlCisgIC8vIEZJWE1FOiBTaG91bGRuJ3QgdGhp
cyBqdXN0IHVzZQogICAvLyAgIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCk/CiAgIEdldFN5c3Rl
bVRpbWUoJm5vd19zeXN0aW1lKTsKICAgaWYgKFN5c3RlbVRpbWVUb0ZpbGVUaW1lKCZub3dfc3lz
dGltZSwgJm5vd19maWxldGltZSkpIHsKQEAgLTc2NCw2NSArODcxLDI4IEBAIFRpbWVJbk1pbGxp
cyBHZXRUaW1lSW5NaWxsaXMoKSB7CiAgIHJldHVybiAwOwogI2VsaWYgR1RFU1RfT1NfV0lORE9X
UyAmJiAhR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8KICAgX190aW1lYjY0IG5vdzsKLSNpZmRlZiBf
TVNDX1ZFUgorCiAgIC8vIE1TVkMgOCBkZXByZWNhdGVzIF9mdGltZTY0KCksIHNvIHdlIHdhbnQg
dG8gc3VwcHJlc3Mgd2FybmluZyA0OTk2CiAgIC8vIChkZXByZWNhdGVkIGZ1bmN0aW9uKSB0aGVy
ZS4KLSAgLy8gVE9ETyhrZW50b25AZ29vZ2xlLmNvbSk6IFVzZSBHZXRUaWNrQ291bnQoKT8gIE9y
IHVzZQorICAvLyBGSVhNRTogVXNlIEdldFRpY2tDb3VudCgpPyAgT3IgdXNlCiAgIC8vICAgU3lz
dGVtVGltZVRvRmlsZVRpbWUoKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gpICAgICAgICAgIC8vIFNh
dmVzIHRoZSBjdXJyZW50IHdhcm5pbmcgc3RhdGUuCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0
OTk2KSAgLy8gVGVtcG9yYXJpbHkgZGlzYWJsZXMgd2FybmluZyA0OTk2LgorICBHVEVTVF9ESVNB
QkxFX01TQ19ERVBSRUNBVEVEX1BVU0hfKCkKICAgX2Z0aW1lNjQoJm5vdyk7Ci0jcHJhZ21hIHdh
cm5pbmcocG9wKSAgICAgICAgICAgLy8gUmVzdG9yZXMgdGhlIHdhcm5pbmcgc3RhdGUuCi0jZWxz
ZQotICBfZnRpbWU2NCgmbm93KTsKLSNlbmRpZiAgLy8gX01TQ19WRVIKKyAgR1RFU1RfRElTQUJM
RV9NU0NfREVQUkVDQVRFRF9QT1BfKCkKKwogICByZXR1cm4gc3RhdGljX2Nhc3Q8VGltZUluTWls
bGlzPihub3cudGltZSkgKiAxMDAwICsgbm93Lm1pbGxpdG07CiAjZWxpZiBHVEVTVF9IQVNfR0VU
VElNRU9GREFZXwogICBzdHJ1Y3QgdGltZXZhbCBub3c7CiAgIGdldHRpbWVvZmRheSgmbm93LCBO
VUxMKTsKICAgcmV0dXJuIHN0YXRpY19jYXN0PFRpbWVJbk1pbGxpcz4obm93LnR2X3NlYykgKiAx
MDAwICsgbm93LnR2X3VzZWMgLyAxMDAwOwogI2Vsc2UKLSNlcnJvciAiRG9uJ3Qga25vdyBob3cg
dG8gZ2V0IHRoZSBjdXJyZW50IHRpbWUgb24geW91ciBzeXN0ZW0uIgorIyBlcnJvciAiRG9uJ3Qg
a25vdyBob3cgdG8gZ2V0IHRoZSBjdXJyZW50IHRpbWUgb24geW91ciBzeXN0ZW0uIgogI2VuZGlm
CiB9CiAKIC8vIFV0aWxpdGllcwogCi0vLyBjbGFzcyBTdHJpbmcKLQotLy8gUmV0dXJucyB0aGUg
aW5wdXQgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcyBpZiBpdCdzIG5vdCBOVUxMOwotLy8gb3Ro
ZXJ3aXNlIHJldHVybnMgIihudWxsKSIuICBGb3IgZXhhbXBsZSwgIlwiSGVsbG9cIiIgaXMgcmV0
dXJuZWQKLS8vIGZvciBpbnB1dCAiSGVsbG8iLgotLy8KLS8vIFRoaXMgaXMgdXNlZnVsIGZvciBw
cmludGluZyBhIEMgc3RyaW5nIGluIHRoZSBzeW50YXggb2YgYSBsaXRlcmFsLgotLy8KLS8vIEtu
b3duIGlzc3VlOiBlc2NhcGUgc2VxdWVuY2VzIGFyZSBub3QgaGFuZGxlZCB5ZXQuCi1TdHJpbmcg
U3RyaW5nOjpTaG93Q1N0cmluZ1F1b3RlZChjb25zdCBjaGFyKiBjX3N0cikgewotICByZXR1cm4g
Y19zdHIgPyBTdHJpbmc6OkZvcm1hdCgiXCIlc1wiIiwgY19zdHIpIDogU3RyaW5nKCIobnVsbCki
KTsKLX0KLQotLy8gQ29waWVzIGF0IG1vc3QgbGVuZ3RoIGNoYXJhY3RlcnMgZnJvbSBzdHIgaW50
byBhIG5ld2x5LWFsbG9jYXRlZAotLy8gcGllY2Ugb2YgbWVtb3J5IG9mIHNpemUgbGVuZ3RoKzEu
ICBUaGUgbWVtb3J5IGlzIGFsbG9jYXRlZCB3aXRoIG5ld1tdLgotLy8gQSB0ZXJtaW5hdGluZyBu
dWxsIGJ5dGUgaXMgd3JpdHRlbiB0byB0aGUgbWVtb3J5LCBhbmQgYSBwb2ludGVyIHRvIGl0Ci0v
LyBpcyByZXR1cm5lZC4gIElmIHN0ciBpcyBOVUxMLCBOVUxMIGlzIHJldHVybmVkLgotc3RhdGlj
IGNoYXIqIENsb25lU3RyaW5nKGNvbnN0IGNoYXIqIHN0ciwgc2l6ZV90IGxlbmd0aCkgewotICBp
ZiAoc3RyID09IE5VTEwpIHsKLSAgICByZXR1cm4gTlVMTDsKLSAgfSBlbHNlIHsKLSAgICBjaGFy
KiBjb25zdCBjbG9uZSA9IG5ldyBjaGFyW2xlbmd0aCArIDFdOwotICAgIHBvc2l4OjpTdHJOQ3B5
KGNsb25lLCBzdHIsIGxlbmd0aCk7Ci0gICAgY2xvbmVbbGVuZ3RoXSA9ICdcMCc7Ci0gICAgcmV0
dXJuIGNsb25lOwotICB9Ci19Ci0KLS8vIENsb25lcyBhIDAtdGVybWluYXRlZCBDIHN0cmluZywg
YWxsb2NhdGluZyBtZW1vcnkgdXNpbmcgbmV3LiAgVGhlCi0vLyBjYWxsZXIgaXMgcmVzcG9uc2li
bGUgZm9yIGRlbGV0aW5nW10gdGhlIHJldHVybiB2YWx1ZS4gIFJldHVybnMgdGhlCi0vLyBjbG9u
ZWQgc3RyaW5nLCBvciBOVUxMIGlmIHRoZSBpbnB1dCBpcyBOVUxMLgotY29uc3QgY2hhciAqIFN0
cmluZzo6Q2xvbmVDU3RyaW5nKGNvbnN0IGNoYXIqIGNfc3RyKSB7Ci0gIHJldHVybiAoY19zdHIg
PT0gTlVMTCkgPwotICAgICAgICAgICAgICAgICAgICBOVUxMIDogQ2xvbmVTdHJpbmcoY19zdHIs
IHN0cmxlbihjX3N0cikpOwotfQorLy8gY2xhc3MgU3RyaW5nLgogCiAjaWYgR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUKIC8vIENyZWF0ZXMgYSBVVEYtMTYgd2lkZSBzdHJpbmcgZnJvbSB0aGUgZ2l2
ZW4gQU5TSSBzdHJpbmcsIGFsbG9jYXRpbmcKQEAgLTg3OSwxMSArOTQ5LDYgQEAgYm9vbCBTdHJp
bmc6OkNTdHJpbmdFcXVhbHMoY29uc3QgY2hhciAqIGxocywgY29uc3QgY2hhciAqIHJocykgewog
Ly8gZW5jb2RpbmcsIGFuZCBzdHJlYW1zIHRoZSByZXN1bHQgdG8gdGhlIGdpdmVuIE1lc3NhZ2Ug
b2JqZWN0Lgogc3RhdGljIHZvaWQgU3RyZWFtV2lkZUNoYXJzVG9NZXNzYWdlKGNvbnN0IHdjaGFy
X3QqIHdzdHIsIHNpemVfdCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTWVzc2FnZSogbXNnKSB7Ci0gIC8vIFRPRE8od2FuKTogY29uc2lkZXIgYWxsb3dpbmcg
YSB0ZXN0aW5nOjpTdHJpbmcgb2JqZWN0IHRvCi0gIC8vIGNvbnRhaW4gJ1wwJy4gIFRoaXMgd2ls
bCBtYWtlIGl0IGJlaGF2ZSBtb3JlIGxpa2Ugc3RkOjpzdHJpbmcsCi0gIC8vIGFuZCB3aWxsIGFs
bG93IFRvVXRmOFN0cmluZygpIHRvIHJldHVybiB0aGUgY29ycmVjdCBlbmNvZGluZwotICAvLyBm
b3IgJ1wwJyBzLnQuIHdlIGNhbiBnZXQgcmlkIG9mIHRoZSBjb25kaXRpb25hbCBoZXJlIChhbmQg
aW4KLSAgLy8gc2V2ZXJhbCBvdGhlciBwbGFjZXMpLgogICBmb3IgKHNpemVfdCBpID0gMDsgaSAh
PSBsZW5ndGg7ICkgeyAgLy8gTk9MSU5UCiAgICAgaWYgKHdzdHJbaV0gIT0gTCdcMCcpIHsKICAg
ICAgICptc2cgPDwgV2lkZVN0cmluZ1RvVXRmOCh3c3RyICsgaSwgc3RhdGljX2Nhc3Q8aW50Pihs
ZW5ndGggLSBpKSk7CkBAIC04OTgsOCArOTYzLDQ1IEBAIHN0YXRpYyB2b2lkIFN0cmVhbVdpZGVD
aGFyc1RvTWVzc2FnZShjb25zdCB3Y2hhcl90KiB3c3RyLCBzaXplX3QgbGVuZ3RoLAogCiAjZW5k
aWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORyB8fCBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcK
IAordm9pZCBTcGxpdFN0cmluZyhjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIsIGNoYXIgZGVsaW1p
dGVyLAorICAgICAgICAgICAgICAgICA6OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6c3RyaW5nPiogZGVz
dCkgeworICA6OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6c3RyaW5nPiBwYXJzZWQ7CisgIDo6c3RkOjpz
dHJpbmc6OnNpemVfdHlwZSBwb3MgPSAwOworICB3aGlsZSAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
QWx3YXlzVHJ1ZSgpKSB7CisgICAgY29uc3QgOjpzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGNvbG9u
ID0gc3RyLmZpbmQoZGVsaW1pdGVyLCBwb3MpOworICAgIGlmIChjb2xvbiA9PSA6OnN0ZDo6c3Ry
aW5nOjpucG9zKSB7CisgICAgICBwYXJzZWQucHVzaF9iYWNrKHN0ci5zdWJzdHIocG9zKSk7Cisg
ICAgICBicmVhazsKKyAgICB9IGVsc2UgeworICAgICAgcGFyc2VkLnB1c2hfYmFjayhzdHIuc3Vi
c3RyKHBvcywgY29sb24gLSBwb3MpKTsKKyAgICAgIHBvcyA9IGNvbG9uICsgMTsKKyAgICB9Cisg
IH0KKyAgZGVzdC0+c3dhcChwYXJzZWQpOworfQorCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwK
IAorLy8gQ29uc3RydWN0cyBhbiBlbXB0eSBNZXNzYWdlLgorLy8gV2UgYWxsb2NhdGUgdGhlIHN0
cmluZ3N0cmVhbSBzZXBhcmF0ZWx5IGJlY2F1c2Ugb3RoZXJ3aXNlIGVhY2ggdXNlIG9mCisvLyBB
U1NFUlQvRVhQRUNUIGluIGEgcHJvY2VkdXJlIGFkZHMgb3ZlciAyMDAgYnl0ZXMgdG8gdGhlIHBy
b2NlZHVyZSdzCisvLyBzdGFjayBmcmFtZSBsZWFkaW5nIHRvIGh1Z2Ugc3RhY2sgZnJhbWVzIGlu
IHNvbWUgY2FzZXM7IGdjYyBkb2VzIG5vdCByZXVzZQorLy8gdGhlIHN0YWNrIHNwYWNlLgorTWVz
c2FnZTo6TWVzc2FnZSgpIDogc3NfKG5ldyA6OnN0ZDo6c3RyaW5nc3RyZWFtKSB7CisgIC8vIEJ5
IGRlZmF1bHQsIHdlIHdhbnQgdGhlcmUgdG8gYmUgZW5vdWdoIHByZWNpc2lvbiB3aGVuIHByaW50
aW5nCisgIC8vIGEgZG91YmxlIHRvIGEgTWVzc2FnZS4KKyAgKnNzXyA8PCBzdGQ6OnNldHByZWNp
c2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmRpZ2l0czEwICsgMik7Cit9CisKKy8v
IFRoZXNlIHR3byBvdmVybG9hZHMgYWxsb3cgc3RyZWFtaW5nIGEgd2lkZSBDIHN0cmluZyB0byBh
IE1lc3NhZ2UKKy8vIHVzaW5nIHRoZSBVVEYtOCBlbmNvZGluZy4KK01lc3NhZ2UmIE1lc3NhZ2U6
Om9wZXJhdG9yIDw8KGNvbnN0IHdjaGFyX3QqIHdpZGVfY19zdHIpIHsKKyAgcmV0dXJuICp0aGlz
IDw8IGludGVybmFsOjpTdHJpbmc6OlNob3dXaWRlQ1N0cmluZyh3aWRlX2Nfc3RyKTsKK30KK01l
c3NhZ2UmIE1lc3NhZ2U6Om9wZXJhdG9yIDw8KHdjaGFyX3QqIHdpZGVfY19zdHIpIHsKKyAgcmV0
dXJuICp0aGlzIDw8IGludGVybmFsOjpTdHJpbmc6OlNob3dXaWRlQ1N0cmluZyh3aWRlX2Nfc3Ry
KTsKK30KKwogI2lmIEdURVNUX0hBU19TVERfV1NUUklORwogLy8gQ29udmVydHMgdGhlIGdpdmVu
IHdpZGUgc3RyaW5nIHRvIGEgbmFycm93IHN0cmluZyB1c2luZyB0aGUgVVRGLTgKIC8vIGVuY29k
aW5nLCBhbmQgc3RyZWFtcyB0aGUgcmVzdWx0IHRvIHRoaXMgTWVzc2FnZSBvYmplY3QuCkBAIC05
MTgsNTUgKzEwMjAsMjYgQEAgTWVzc2FnZSYgTWVzc2FnZTo6b3BlcmF0b3IgPDwoY29uc3QgOjp3
c3RyaW5nJiB3c3RyKSB7CiB9CiAjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwog
Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBGb3JtYXRzIGEgdmFsdWUgdG8gYmUgdXNlZCBp
biBhIGZhaWx1cmUgbWVzc2FnZS4KLQotLy8gRm9yIGEgY2hhciB2YWx1ZSwgd2UgcHJpbnQgaXQg
YXMgYSBDKysgY2hhciBsaXRlcmFsIGFuZCBhcyBhbgotLy8gdW5zaWduZWQgaW50ZWdlciAoYm90
aCBpbiBkZWNpbWFsIGFuZCBpbiBoZXhhZGVjaW1hbCkuCi1TdHJpbmcgRm9ybWF0Rm9yRmFpbHVy
ZU1lc3NhZ2UoY2hhciBjaCkgewotICBjb25zdCB1bnNpZ25lZCBpbnQgY2hfYXNfdWludCA9IGNo
OwotICAvLyBBIFN0cmluZyBvYmplY3QgY2Fubm90IGNvbnRhaW4gJ1wwJywgc28gd2UgcHJpbnQg
IlxcMCIgd2hlbiBjaCBpcwotICAvLyAnXDAnLgotICByZXR1cm4gU3RyaW5nOjpGb3JtYXQoIicl
cycgKCV1LCAweCVYKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjaCA/IFN0cmluZzo6Rm9y
bWF0KCIlYyIsIGNoKS5jX3N0cigpIDogIlxcMCIsCi0gICAgICAgICAgICAgICAgICAgICAgICBj
aF9hc191aW50LCBjaF9hc191aW50KTsKLX0KLQotLy8gRm9yIGEgd2NoYXJfdCB2YWx1ZSwgd2Ug
cHJpbnQgaXQgYXMgYSBDKysgd2NoYXJfdCBsaXRlcmFsIGFuZCBhcyBhbgotLy8gdW5zaWduZWQg
aW50ZWdlciAoYm90aCBpbiBkZWNpbWFsIGFuZCBpbiBoZXhpZGVjaW1hbCkuCi1TdHJpbmcgRm9y
bWF0Rm9yRmFpbHVyZU1lc3NhZ2Uod2NoYXJfdCB3Y2hhcikgewotICAvLyBUaGUgQysrIHN0YW5k
YXJkIGRvZXNuJ3Qgc3BlY2lmeSB0aGUgZXhhY3Qgc2l6ZSBvZiB0aGUgd2NoYXJfdAotICAvLyB0
eXBlLiAgSXQganVzdCBzYXlzIHRoYXQgaXQgc2hhbGwgaGF2ZSB0aGUgc2FtZSBzaXplIGFzIGFu
b3RoZXIKLSAgLy8gaW50ZWdyYWwgdHlwZSwgY2FsbGVkIGl0cyB1bmRlcmx5aW5nIHR5cGUuCi0g
IC8vCi0gIC8vIFRoZXJlZm9yZSwgaW4gb3JkZXIgdG8gcHJpbnQgYSB3Y2hhcl90IHZhbHVlIGlu
IHRoZSBudW1lcmljIGZvcm0sCi0gIC8vIHdlIGZpcnN0IGNvbnZlcnQgaXQgdG8gdGhlIGxhcmdl
c3QgaW50ZWdyYWwgdHlwZSAoVUludDY0KSBhbmQKLSAgLy8gdGhlbiBwcmludCB0aGUgY29udmVy
dGVkIHZhbHVlLgotICAvLwotICAvLyBXZSB1c2Ugc3RyZWFtaW5nIHRvIHByaW50IHRoZSB2YWx1
ZSBhcyAiJWxsdSIgZG9lc24ndCB3b3JrCi0gIC8vIGNvcnJlY3RseSB3aXRoIE1TVkMgNy4xLgot
ICBjb25zdCBVSW50NjQgd2NoYXJfYXNfdWludDY0ID0gd2NoYXI7Ci0gIE1lc3NhZ2UgbXNnOwot
ICAvLyBBIFN0cmluZyBvYmplY3QgY2Fubm90IGNvbnRhaW4gJ1wwJywgc28gd2UgcHJpbnQgIlxc
MCIgd2hlbiB3Y2hhciBpcwotICAvLyBMJ1wwJy4KLSAgY2hhciBidWZmZXJbMzJdOyAgLy8gQ29k
ZVBvaW50VG9VdGY4IHJlcXVpcmVzIGEgYnVmZmVyIHRoYXQgYmlnLgotICBtc2cgPDwgIkwnIgot
ICAgICAgPDwgKHdjaGFyID8gQ29kZVBvaW50VG9VdGY4KHN0YXRpY19jYXN0PFVJbnQzMj4od2No
YXIpLCBidWZmZXIpIDogIlxcMCIpCi0gICAgICA8PCAiJyAoIiA8PCB3Y2hhcl9hc191aW50NjQg
PDwgIiwgMHgiIDw8IDo6c3RkOjpzZXRiYXNlKDE2KQotICAgICAgPDwgd2NoYXJfYXNfdWludDY0
IDw8ICIpIjsKLSAgcmV0dXJuIG1zZy5HZXRTdHJpbmcoKTsKKy8vIEdldHMgdGhlIHRleHQgc3Ry
ZWFtZWQgdG8gdGhpcyBvYmplY3Qgc28gZmFyIGFzIGFuIHN0ZDo6c3RyaW5nLgorLy8gRWFjaCAn
XDAnIGNoYXJhY3RlciBpbiB0aGUgYnVmZmVyIGlzIHJlcGxhY2VkIHdpdGggIlxcMCIuCitzdGQ6
OnN0cmluZyBNZXNzYWdlOjpHZXRTdHJpbmcoKSBjb25zdCB7CisgIHJldHVybiBpbnRlcm5hbDo6
U3RyaW5nU3RyZWFtVG9TdHJpbmcoc3NfLmdldCgpKTsKIH0KIAotfSAgLy8gbmFtZXNwYWNlIGlu
dGVybmFsCi0KIC8vIEFzc2VydGlvblJlc3VsdCBjb25zdHJ1Y3RvcnMuCiAvLyBVc2VkIGluIEVY
UEVDVF9UUlVFL0ZBTFNFKGFzc2VydGlvbl9yZXN1bHQpLgogQXNzZXJ0aW9uUmVzdWx0OjpBc3Nl
cnRpb25SZXN1bHQoY29uc3QgQXNzZXJ0aW9uUmVzdWx0JiBvdGhlcikKICAgICA6IHN1Y2Nlc3Nf
KG90aGVyLnN1Y2Nlc3NfKSwKICAgICAgIG1lc3NhZ2VfKG90aGVyLm1lc3NhZ2VfLmdldCgpICE9
IE5VTEwgPwotICAgICAgICAgICAgICAgbmV3IGludGVybmFsOjpTdHJpbmcoKm90aGVyLm1lc3Nh
Z2VfKSA6Ci0gICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRlcm5hbDo6U3RyaW5nKj4oTlVM
TCkpIHsKKyAgICAgICAgICAgICAgIG5ldyA6OnN0ZDo6c3RyaW5nKCpvdGhlci5tZXNzYWdlXykg
OgorICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8IDo6c3RkOjpzdHJpbmcqPihOVUxMKSkgewor
fQorCisvLyBTd2FwcyB0d28gQXNzZXJ0aW9uUmVzdWx0cy4KK3ZvaWQgQXNzZXJ0aW9uUmVzdWx0
Ojpzd2FwKEFzc2VydGlvblJlc3VsdCYgb3RoZXIpIHsKKyAgdXNpbmcgc3RkOjpzd2FwOworICBz
d2FwKHN1Y2Nlc3NfLCBvdGhlci5zdWNjZXNzXyk7CisgIHN3YXAobWVzc2FnZV8sIG90aGVyLm1l
c3NhZ2VfKTsKIH0KIAogLy8gUmV0dXJucyB0aGUgYXNzZXJ0aW9uJ3MgbmVnYXRpb24uIFVzZWQg
d2l0aCBFWFBFQ1QvQVNTRVJUX0ZBTFNFLgpAQCAtOTk1LDYgKzEwNjgsMjc2IEBAIEFzc2VydGlv
blJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKGNvbnN0IE1lc3NhZ2UmIG1lc3NhZ2UpIHsKIAogbmFt
ZXNwYWNlIGludGVybmFsIHsKIAorbmFtZXNwYWNlIGVkaXRfZGlzdGFuY2Ugeworc3RkOjp2ZWN0
b3I8RWRpdFR5cGU+IENhbGN1bGF0ZU9wdGltYWxFZGl0cyhjb25zdCBzdGQ6OnZlY3RvcjxzaXpl
X3Q+JiBsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+JiByaWdodCkgeworICBzdGQ6OnZlY3RvcjxzdGQ6OnZl
Y3Rvcjxkb3VibGU+ID4gY29zdHMoCisgICAgICBsZWZ0LnNpemUoKSArIDEsIHN0ZDo6dmVjdG9y
PGRvdWJsZT4ocmlnaHQuc2l6ZSgpICsgMSkpOworICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxF
ZGl0VHlwZT4gPiBiZXN0X21vdmUoCisgICAgICBsZWZ0LnNpemUoKSArIDEsIHN0ZDo6dmVjdG9y
PEVkaXRUeXBlPihyaWdodC5zaXplKCkgKyAxKSk7CisKKyAgLy8gUG9wdWxhdGUgZm9yIGVtcHR5
IHJpZ2h0LgorICBmb3IgKHNpemVfdCBsX2kgPSAwOyBsX2kgPCBjb3N0cy5zaXplKCk7ICsrbF9p
KSB7CisgICAgY29zdHNbbF9pXVswXSA9IHN0YXRpY19jYXN0PGRvdWJsZT4obF9pKTsKKyAgICBi
ZXN0X21vdmVbbF9pXVswXSA9IGtSZW1vdmU7CisgIH0KKyAgLy8gUG9wdWxhdGUgZm9yIGVtcHR5
IGxlZnQuCisgIGZvciAoc2l6ZV90IHJfaSA9IDE7IHJfaSA8IGNvc3RzWzBdLnNpemUoKTsgKyty
X2kpIHsKKyAgICBjb3N0c1swXVtyX2ldID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihyX2kpOworICAg
IGJlc3RfbW92ZVswXVtyX2ldID0ga0FkZDsKKyAgfQorCisgIGZvciAoc2l6ZV90IGxfaSA9IDA7
IGxfaSA8IGxlZnQuc2l6ZSgpOyArK2xfaSkgeworICAgIGZvciAoc2l6ZV90IHJfaSA9IDA7IHJf
aSA8IHJpZ2h0LnNpemUoKTsgKytyX2kpIHsKKyAgICAgIGlmIChsZWZ0W2xfaV0gPT0gcmlnaHRb
cl9pXSkgeworICAgICAgICAvLyBGb3VuZCBhIG1hdGNoLiBDb25zdW1lIGl0LgorICAgICAgICBj
b3N0c1tsX2kgKyAxXVtyX2kgKyAxXSA9IGNvc3RzW2xfaV1bcl9pXTsKKyAgICAgICAgYmVzdF9t
b3ZlW2xfaSArIDFdW3JfaSArIDFdID0ga01hdGNoOworICAgICAgICBjb250aW51ZTsKKyAgICAg
IH0KKworICAgICAgY29uc3QgZG91YmxlIGFkZCA9IGNvc3RzW2xfaSArIDFdW3JfaV07CisgICAg
ICBjb25zdCBkb3VibGUgcmVtb3ZlID0gY29zdHNbbF9pXVtyX2kgKyAxXTsKKyAgICAgIGNvbnN0
IGRvdWJsZSByZXBsYWNlID0gY29zdHNbbF9pXVtyX2ldOworICAgICAgaWYgKGFkZCA8IHJlbW92
ZSAmJiBhZGQgPCByZXBsYWNlKSB7CisgICAgICAgIGNvc3RzW2xfaSArIDFdW3JfaSArIDFdID0g
YWRkICsgMTsKKyAgICAgICAgYmVzdF9tb3ZlW2xfaSArIDFdW3JfaSArIDFdID0ga0FkZDsKKyAg
ICAgIH0gZWxzZSBpZiAocmVtb3ZlIDwgYWRkICYmIHJlbW92ZSA8IHJlcGxhY2UpIHsKKyAgICAg
ICAgY29zdHNbbF9pICsgMV1bcl9pICsgMV0gPSByZW1vdmUgKyAxOworICAgICAgICBiZXN0X21v
dmVbbF9pICsgMV1bcl9pICsgMV0gPSBrUmVtb3ZlOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
Ly8gV2UgbWFrZSByZXBsYWNlIGEgbGl0dGxlIG1vcmUgZXhwZW5zaXZlIHRoYW4gYWRkL3JlbW92
ZSB0byBsb3dlcgorICAgICAgICAvLyB0aGVpciBwcmlvcml0eS4KKyAgICAgICAgY29zdHNbbF9p
ICsgMV1bcl9pICsgMV0gPSByZXBsYWNlICsgMS4wMDAwMTsKKyAgICAgICAgYmVzdF9tb3ZlW2xf
aSArIDFdW3JfaSArIDFdID0ga1JlcGxhY2U7CisgICAgICB9CisgICAgfQorICB9CisKKyAgLy8g
UmVjb25zdHJ1Y3QgdGhlIGJlc3QgcGF0aC4gV2UgZG8gaXQgaW4gcmV2ZXJzZSBvcmRlci4KKyAg
c3RkOjp2ZWN0b3I8RWRpdFR5cGU+IGJlc3RfcGF0aDsKKyAgZm9yIChzaXplX3QgbF9pID0gbGVm
dC5zaXplKCksIHJfaSA9IHJpZ2h0LnNpemUoKTsgbF9pID4gMCB8fCByX2kgPiAwOykgeworICAg
IEVkaXRUeXBlIG1vdmUgPSBiZXN0X21vdmVbbF9pXVtyX2ldOworICAgIGJlc3RfcGF0aC5wdXNo
X2JhY2sobW92ZSk7CisgICAgbF9pIC09IG1vdmUgIT0ga0FkZDsKKyAgICByX2kgLT0gbW92ZSAh
PSBrUmVtb3ZlOworICB9CisgIHN0ZDo6cmV2ZXJzZShiZXN0X3BhdGguYmVnaW4oKSwgYmVzdF9w
YXRoLmVuZCgpKTsKKyAgcmV0dXJuIGJlc3RfcGF0aDsKK30KKworbmFtZXNwYWNlIHsKKworLy8g
SGVscGVyIGNsYXNzIHRvIGNvbnZlcnQgc3RyaW5nIGludG8gaWRzIHdpdGggZGVkdXBsaWNhdGlv
bi4KK2NsYXNzIEludGVybmFsU3RyaW5ncyB7CisgcHVibGljOgorICBzaXplX3QgR2V0SWQoY29u
c3Qgc3RkOjpzdHJpbmcmIHN0cikgeworICAgIElkTWFwOjppdGVyYXRvciBpdCA9IGlkc18uZmlu
ZChzdHIpOworICAgIGlmIChpdCAhPSBpZHNfLmVuZCgpKSByZXR1cm4gaXQtPnNlY29uZDsKKyAg
ICBzaXplX3QgaWQgPSBpZHNfLnNpemUoKTsKKyAgICByZXR1cm4gaWRzX1tzdHJdID0gaWQ7Cisg
IH0KKworIHByaXZhdGU6CisgIHR5cGVkZWYgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHNpemVfdD4g
SWRNYXA7CisgIElkTWFwIGlkc187Cit9OworCit9ICAvLyBuYW1lc3BhY2UKKworc3RkOjp2ZWN0
b3I8RWRpdFR5cGU+IENhbGN1bGF0ZU9wdGltYWxFZGl0cygKKyAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4mIGxlZnQsCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
JiByaWdodCkgeworICBzdGQ6OnZlY3RvcjxzaXplX3Q+IGxlZnRfaWRzLCByaWdodF9pZHM7Cisg
IHsKKyAgICBJbnRlcm5hbFN0cmluZ3MgaW50ZXJuX3RhYmxlOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGVmdC5zaXplKCk7ICsraSkgeworICAgICAgbGVmdF9pZHMucHVzaF9iYWNrKGlu
dGVybl90YWJsZS5HZXRJZChsZWZ0W2ldKSk7CisgICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcmlnaHQuc2l6ZSgpOyArK2kpIHsKKyAgICAgIHJpZ2h0X2lkcy5wdXNoX2JhY2soaW50
ZXJuX3RhYmxlLkdldElkKHJpZ2h0W2ldKSk7CisgICAgfQorICB9CisgIHJldHVybiBDYWxjdWxh
dGVPcHRpbWFsRWRpdHMobGVmdF9pZHMsIHJpZ2h0X2lkcyk7Cit9CisKK25hbWVzcGFjZSB7CisK
Ky8vIEhlbHBlciBjbGFzcyB0aGF0IGhvbGRzIHRoZSBzdGF0ZSBmb3Igb25lIGh1bmsgYW5kIHBy
aW50cyBpdCBvdXQgdG8gdGhlCisvLyBzdHJlYW0uCisvLyBJdCByZW9yZGVycyBhZGRzL3JlbW92
ZXMgd2hlbiBwb3NzaWJsZSB0byBncm91cCBhbGwgcmVtb3ZlcyBiZWZvcmUgYWxsCisvLyBhZGRz
LiBJdCBhbHNvIGFkZHMgdGhlIGh1bmsgaGVhZGVyIGJlZm9yZSBwcmludGludCBpbnRvIHRoZSBz
dHJlYW0uCitjbGFzcyBIdW5rIHsKKyBwdWJsaWM6CisgIEh1bmsoc2l6ZV90IGxlZnRfc3RhcnQs
IHNpemVfdCByaWdodF9zdGFydCkKKyAgICAgIDogbGVmdF9zdGFydF8obGVmdF9zdGFydCksCisg
ICAgICAgIHJpZ2h0X3N0YXJ0XyhyaWdodF9zdGFydCksCisgICAgICAgIGFkZHNfKCksCisgICAg
ICAgIHJlbW92ZXNfKCksCisgICAgICAgIGNvbW1vbl8oKSB7fQorCisgIHZvaWQgUHVzaExpbmUo
Y2hhciBlZGl0LCBjb25zdCBjaGFyKiBsaW5lKSB7CisgICAgc3dpdGNoIChlZGl0KSB7CisgICAg
ICBjYXNlICcgJzoKKyAgICAgICAgKytjb21tb25fOworICAgICAgICBGbHVzaEVkaXRzKCk7Cisg
ICAgICAgIGh1bmtfLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcignICcsIGxpbmUpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlICctJzoKKyAgICAgICAgKytyZW1vdmVzXzsKKyAgICAgICAg
aHVua19yZW1vdmVzXy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoJy0nLCBsaW5lKSk7CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSAnKyc6CisgICAgICAgICsrYWRkc187CisgICAgICAgIGh1
bmtfYWRkc18ucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKCcrJywgbGluZSkpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgIH0KKworICB2b2lkIFByaW50VG8oc3RkOjpvc3RyZWFtKiBvcykgewor
ICAgIFByaW50SGVhZGVyKG9zKTsKKyAgICBGbHVzaEVkaXRzKCk7CisgICAgZm9yIChzdGQ6Omxp
c3Q8c3RkOjpwYWlyPGNoYXIsIGNvbnN0IGNoYXIqPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9Cisg
ICAgICAgICAgICAgaHVua18uYmVnaW4oKTsKKyAgICAgICAgIGl0ICE9IGh1bmtfLmVuZCgpOyAr
K2l0KSB7CisgICAgICAqb3MgPDwgaXQtPmZpcnN0IDw8IGl0LT5zZWNvbmQgPDwgIlxuIjsKKyAg
ICB9CisgIH0KKworICBib29sIGhhc19lZGl0cygpIGNvbnN0IHsgcmV0dXJuIGFkZHNfIHx8IHJl
bW92ZXNfOyB9CisKKyBwcml2YXRlOgorICB2b2lkIEZsdXNoRWRpdHMoKSB7CisgICAgaHVua18u
c3BsaWNlKGh1bmtfLmVuZCgpLCBodW5rX3JlbW92ZXNfKTsKKyAgICBodW5rXy5zcGxpY2UoaHVu
a18uZW5kKCksIGh1bmtfYWRkc18pOworICB9CisKKyAgLy8gUHJpbnQgYSB1bmlmaWVkIGRpZmYg
aGVhZGVyIGZvciBvbmUgaHVuay4KKyAgLy8gVGhlIGZvcm1hdCBpcworICAvLyAgICJAQCAtPGxl
ZnRfc3RhcnQ+LDxsZWZ0X2xlbmd0aD4gKzxyaWdodF9zdGFydD4sPHJpZ2h0X2xlbmd0aD4gQEAi
CisgIC8vIHdoZXJlIHRoZSBsZWZ0L3JpZ2h0IHBhcnRzIGFyZSBvbWl0dGVkIGlmIHVubmVjZXNz
YXJ5LgorICB2b2lkIFByaW50SGVhZGVyKHN0ZDo6b3N0cmVhbSogc3MpIGNvbnN0IHsKKyAgICAq
c3MgPDwgIkBAICI7CisgICAgaWYgKHJlbW92ZXNfKSB7CisgICAgICAqc3MgPDwgIi0iIDw8IGxl
ZnRfc3RhcnRfIDw8ICIsIiA8PCAocmVtb3Zlc18gKyBjb21tb25fKTsKKyAgICB9CisgICAgaWYg
KHJlbW92ZXNfICYmIGFkZHNfKSB7CisgICAgICAqc3MgPDwgIiAiOworICAgIH0KKyAgICBpZiAo
YWRkc18pIHsKKyAgICAgICpzcyA8PCAiKyIgPDwgcmlnaHRfc3RhcnRfIDw8ICIsIiA8PCAoYWRk
c18gKyBjb21tb25fKTsKKyAgICB9CisgICAgKnNzIDw8ICIgQEBcbiI7CisgIH0KKworICBzaXpl
X3QgbGVmdF9zdGFydF8sIHJpZ2h0X3N0YXJ0XzsKKyAgc2l6ZV90IGFkZHNfLCByZW1vdmVzXywg
Y29tbW9uXzsKKyAgc3RkOjpsaXN0PHN0ZDo6cGFpcjxjaGFyLCBjb25zdCBjaGFyKj4gPiBodW5r
XywgaHVua19hZGRzXywgaHVua19yZW1vdmVzXzsKK307CisKK30gIC8vIG5hbWVzcGFjZQorCisv
LyBDcmVhdGUgYSBsaXN0IG9mIGRpZmYgaHVua3MgaW4gVW5pZmllZCBkaWZmIGZvcm1hdC4KKy8v
IEVhY2ggaHVuayBoYXMgYSBoZWFkZXIgZ2VuZXJhdGVkIGJ5IFByaW50SGVhZGVyIGFib3ZlIHBs
dXMgYSBib2R5IHdpdGgKKy8vIGxpbmVzIHByZWZpeGVkIHdpdGggJyAnIGZvciBubyBjaGFuZ2Us
ICctJyBmb3IgZGVsZXRpb24gYW5kICcrJyBmb3IKKy8vIGFkZGl0aW9uLgorLy8gJ2NvbnRleHQn
IHJlcHJlc2VudHMgdGhlIGRlc2lyZWQgdW5jaGFuZ2VkIHByZWZpeC9zdWZmaXggYXJvdW5kIHRo
ZSBkaWZmLgorLy8gSWYgdHdvIGh1bmtzIGFyZSBjbG9zZSBlbm91Z2ggdGhhdCB0aGVpciBjb250
ZXh0cyBvdmVybGFwLCB0aGVuIHRoZXkgYXJlCisvLyBqb2luZWQgaW50byBvbmUgaHVuay4KK3N0
ZDo6c3RyaW5nIENyZWF0ZVVuaWZpZWREaWZmKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
PiYgbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPiYgcmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgY29udGV4dCkgeworICBjb25zdCBzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gZWRpdHMgPSBDYWxj
dWxhdGVPcHRpbWFsRWRpdHMobGVmdCwgcmlnaHQpOworCisgIHNpemVfdCBsX2kgPSAwLCByX2kg
PSAwLCBlZGl0X2kgPSAwOworICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgd2hpbGUgKGVkaXRf
aSA8IGVkaXRzLnNpemUoKSkgeworICAgIC8vIEZpbmQgZmlyc3QgZWRpdC4KKyAgICB3aGlsZSAo
ZWRpdF9pIDwgZWRpdHMuc2l6ZSgpICYmIGVkaXRzW2VkaXRfaV0gPT0ga01hdGNoKSB7CisgICAg
ICArK2xfaTsKKyAgICAgICsrcl9pOworICAgICAgKytlZGl0X2k7CisgICAgfQorCisgICAgLy8g
RmluZCB0aGUgZmlyc3QgbGluZSB0byBpbmNsdWRlIGluIHRoZSBodW5rLgorICAgIGNvbnN0IHNp
emVfdCBwcmVmaXhfY29udGV4dCA9IHN0ZDo6bWluKGxfaSwgY29udGV4dCk7CisgICAgSHVuayBo
dW5rKGxfaSAtIHByZWZpeF9jb250ZXh0ICsgMSwgcl9pIC0gcHJlZml4X2NvbnRleHQgKyAxKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gcHJlZml4X2NvbnRleHQ7IGkgPiAwOyAtLWkpIHsKKyAgICAg
IGh1bmsuUHVzaExpbmUoJyAnLCBsZWZ0W2xfaSAtIGldLmNfc3RyKCkpOworICAgIH0KKworICAg
IC8vIEl0ZXJhdGUgdGhlIGVkaXRzIHVudGlsIHdlIGZvdW5kIGVub3VnaCBzdWZmaXggZm9yIHRo
ZSBodW5rIG9yIHRoZSBpbnB1dAorICAgIC8vIGlzIG92ZXIuCisgICAgc2l6ZV90IG5fc3VmZml4
ID0gMDsKKyAgICBmb3IgKDsgZWRpdF9pIDwgZWRpdHMuc2l6ZSgpOyArK2VkaXRfaSkgeworICAg
ICAgaWYgKG5fc3VmZml4ID49IGNvbnRleHQpIHsKKyAgICAgICAgLy8gQ29udGludWUgb25seSBp
ZiB0aGUgbmV4dCBodW5rIGlzIHZlcnkgY2xvc2UuCisgICAgICAgIHN0ZDo6dmVjdG9yPEVkaXRU
eXBlPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBlZGl0cy5iZWdpbigpICsgZWRpdF9pOworICAgICAg
ICB3aGlsZSAoaXQgIT0gZWRpdHMuZW5kKCkgJiYgKml0ID09IGtNYXRjaCkgKytpdDsKKyAgICAg
ICAgaWYgKGl0ID09IGVkaXRzLmVuZCgpIHx8IChpdCAtIGVkaXRzLmJlZ2luKCkpIC0gZWRpdF9p
ID49IGNvbnRleHQpIHsKKyAgICAgICAgICAvLyBUaGVyZSBpcyBubyBuZXh0IGVkaXQgb3IgaXQg
aXMgdG9vIGZhciBhd2F5LgorICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisK
KyAgICAgIEVkaXRUeXBlIGVkaXQgPSBlZGl0c1tlZGl0X2ldOworICAgICAgLy8gUmVzZXQgY291
bnQgd2hlbiBhIG5vbiBtYXRjaCBpcyBmb3VuZC4KKyAgICAgIG5fc3VmZml4ID0gZWRpdCA9PSBr
TWF0Y2ggPyBuX3N1ZmZpeCArIDEgOiAwOworCisgICAgICBpZiAoZWRpdCA9PSBrTWF0Y2ggfHwg
ZWRpdCA9PSBrUmVtb3ZlIHx8IGVkaXQgPT0ga1JlcGxhY2UpIHsKKyAgICAgICAgaHVuay5QdXNo
TGluZShlZGl0ID09IGtNYXRjaCA/ICcgJyA6ICctJywgbGVmdFtsX2ldLmNfc3RyKCkpOworICAg
ICAgfQorICAgICAgaWYgKGVkaXQgPT0ga0FkZCB8fCBlZGl0ID09IGtSZXBsYWNlKSB7CisgICAg
ICAgIGh1bmsuUHVzaExpbmUoJysnLCByaWdodFtyX2ldLmNfc3RyKCkpOworICAgICAgfQorCisg
ICAgICAvLyBBZHZhbmNlIGluZGljZXMsIGRlcGVuZGluZyBvbiBlZGl0IHR5cGUuCisgICAgICBs
X2kgKz0gZWRpdCAhPSBrQWRkOworICAgICAgcl9pICs9IGVkaXQgIT0ga1JlbW92ZTsKKyAgICB9
CisKKyAgICBpZiAoIWh1bmsuaGFzX2VkaXRzKCkpIHsKKyAgICAgIC8vIFdlIGFyZSBkb25lLiBX
ZSBkb24ndCB3YW50IHRoaXMgaHVuay4KKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIGh1bmsu
UHJpbnRUbygmc3MpOworICB9CisgIHJldHVybiBzcy5zdHIoKTsKK30KKworfSAgLy8gbmFtZXNw
YWNlIGVkaXRfZGlzdGFuY2UKKworbmFtZXNwYWNlIHsKKworLy8gVGhlIHN0cmluZyByZXByZXNl
bnRhdGlvbiBvZiB0aGUgdmFsdWVzIHJlY2VpdmVkIGluIEVxRmFpbHVyZSgpIGFyZSBhbHJlYWR5
CisvLyBlc2NhcGVkLiBTcGxpdCB0aGVtIG9uIGVzY2FwZWQgJ1xuJyBib3VuZGFyaWVzLiBMZWF2
ZSBhbGwgb3RoZXIgZXNjYXBlZAorLy8gY2hhcmFjdGVycyB0aGUgc2FtZS4KK3N0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPiBTcGxpdEVzY2FwZWRTdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikg
eworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbGluZXM7CisgIHNpemVfdCBzdGFydCA9IDAs
IGVuZCA9IHN0ci5zaXplKCk7CisgIGlmIChlbmQgPiAyICYmIHN0clswXSA9PSAnIicgJiYgc3Ry
W2VuZCAtIDFdID09ICciJykgeworICAgICsrc3RhcnQ7CisgICAgLS1lbmQ7CisgIH0KKyAgYm9v
bCBlc2NhcGVkID0gZmFsc2U7CisgIGZvciAoc2l6ZV90IGkgPSBzdGFydDsgaSArIDEgPCBlbmQ7
ICsraSkgeworICAgIGlmIChlc2NhcGVkKSB7CisgICAgICBlc2NhcGVkID0gZmFsc2U7CisgICAg
ICBpZiAoc3RyW2ldID09ICduJykgeworICAgICAgICBsaW5lcy5wdXNoX2JhY2soc3RyLnN1YnN0
cihzdGFydCwgaSAtIHN0YXJ0IC0gMSkpOworICAgICAgICBzdGFydCA9IGkgKyAxOworICAgICAg
fQorICAgIH0gZWxzZSB7CisgICAgICBlc2NhcGVkID0gc3RyW2ldID09ICdcXCc7CisgICAgfQor
ICB9CisgIGxpbmVzLnB1c2hfYmFjayhzdHIuc3Vic3RyKHN0YXJ0LCBlbmQgLSBzdGFydCkpOwor
ICByZXR1cm4gbGluZXM7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCiAvLyBDb25zdHJ1Y3RzIGFu
ZCByZXR1cm5zIHRoZSBtZXNzYWdlIGZvciBhbiBlcXVhbGl0eSBhc3NlcnRpb24KIC8vIChlLmcu
IEFTU0VSVF9FUSwgRVhQRUNUX1NUUkVRLCBldGMpIGZhaWx1cmUuCiAvLwpAQCAtMTAwMiw0MSAr
MTM0NSw1NCBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogLy8gYW5kIHRoZWlyIHZhbHVlcywgYXMg
c3RyaW5ncy4gIEZvciBleGFtcGxlLCBmb3IgQVNTRVJUX0VRKGZvbywgYmFyKQogLy8gd2hlcmUg
Zm9vIGlzIDUgYW5kIGJhciBpcyA2LCB3ZSBoYXZlOgogLy8KLS8vICAgZXhwZWN0ZWRfZXhwcmVz
c2lvbjogImZvbyIKLS8vICAgYWN0dWFsX2V4cHJlc3Npb246ICAgImJhciIKLS8vICAgZXhwZWN0
ZWRfdmFsdWU6ICAgICAgIjUiCi0vLyAgIGFjdHVhbF92YWx1ZTogICAgICAgICI2IgorLy8gICBs
aHNfZXhwcmVzc2lvbjogImZvbyIKKy8vICAgcmhzX2V4cHJlc3Npb246ICJiYXIiCisvLyAgIGxo
c192YWx1ZTogICAgICAiNSIKKy8vICAgcmhzX3ZhbHVlOiAgICAgICI2IgogLy8KIC8vIFRoZSBp
Z25vcmluZ19jYXNlIHBhcmFtZXRlciBpcyB0cnVlIGlmZiB0aGUgYXNzZXJ0aW9uIGlzIGEKLS8v
ICpfU1RSQ0FTRUVRKi4gIFdoZW4gaXQncyB0cnVlLCB0aGUgc3RyaW5nICIgKGlnbm9yaW5nIGNh
c2UpIiB3aWxsCisvLyAqX1NUUkNBU0VFUSouICBXaGVuIGl0J3MgdHJ1ZSwgdGhlIHN0cmluZyAi
SWdub3JpbmcgY2FzZSIgd2lsbAogLy8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgbWVzc2FnZS4KLUFz
c2VydGlvblJlc3VsdCBFcUZhaWx1cmUoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRfdmFsdWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgYWN0dWFsX3ZhbHVlLAor
QXNzZXJ0aW9uUmVzdWx0IEVxRmFpbHVyZShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBsaHNfdmFsdWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiByaHNfdmFsdWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdub3JpbmdfY2FzZSkgewogICBNZXNzYWdlIG1z
ZzsKLSAgbXNnIDw8ICJWYWx1ZSBvZjogIiA8PCBhY3R1YWxfZXhwcmVzc2lvbjsKLSAgaWYgKGFj
dHVhbF92YWx1ZSAhPSBhY3R1YWxfZXhwcmVzc2lvbikgewotICAgIG1zZyA8PCAiXG4gIEFjdHVh
bDogIiA8PCBhY3R1YWxfdmFsdWU7CisgIG1zZyA8PCAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhl
c2UgdmFsdWVzOiI7CisgIG1zZyA8PCAiXG4gICIgPDwgbGhzX2V4cHJlc3Npb247CisgIGlmIChs
aHNfdmFsdWUgIT0gbGhzX2V4cHJlc3Npb24pIHsKKyAgICBtc2cgPDwgIlxuICAgIFdoaWNoIGlz
OiAiIDw8IGxoc192YWx1ZTsKKyAgfQorICBtc2cgPDwgIlxuICAiIDw8IHJoc19leHByZXNzaW9u
OworICBpZiAocmhzX3ZhbHVlICE9IHJoc19leHByZXNzaW9uKSB7CisgICAgbXNnIDw8ICJcbiAg
ICBXaGljaCBpczogIiA8PCByaHNfdmFsdWU7CiAgIH0KIAotICBtc2cgPDwgIlxuRXhwZWN0ZWQ6
ICIgPDwgZXhwZWN0ZWRfZXhwcmVzc2lvbjsKICAgaWYgKGlnbm9yaW5nX2Nhc2UpIHsKLSAgICBt
c2cgPDwgIiAoaWdub3JpbmcgY2FzZSkiOworICAgIG1zZyA8PCAiXG5JZ25vcmluZyBjYXNlIjsK
ICAgfQotICBpZiAoZXhwZWN0ZWRfdmFsdWUgIT0gZXhwZWN0ZWRfZXhwcmVzc2lvbikgewotICAg
IG1zZyA8PCAiXG5XaGljaCBpczogIiA8PCBleHBlY3RlZF92YWx1ZTsKKworICBpZiAoIWxoc192
YWx1ZS5lbXB0eSgpICYmICFyaHNfdmFsdWUuZW1wdHkoKSkgeworICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiBsaHNfbGluZXMgPQorICAgICAgICBTcGxpdEVzY2FwZWRTdHJpbmco
bGhzX3ZhbHVlKTsKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gcmhzX2xpbmVz
ID0KKyAgICAgICAgU3BsaXRFc2NhcGVkU3RyaW5nKHJoc192YWx1ZSk7CisgICAgaWYgKGxoc19s
aW5lcy5zaXplKCkgPiAxIHx8IHJoc19saW5lcy5zaXplKCkgPiAxKSB7CisgICAgICBtc2cgPDwg
IlxuV2l0aCBkaWZmOlxuIgorICAgICAgICAgIDw8IGVkaXRfZGlzdGFuY2U6OkNyZWF0ZVVuaWZp
ZWREaWZmKGxoc19saW5lcywgcmhzX2xpbmVzKTsKKyAgICB9CiAgIH0KIAotICByZXR1cm4gQXNz
ZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG1zZzsK
IH0KIAogLy8gQ29uc3RydWN0cyBhIGZhaWx1cmUgbWVzc2FnZSBmb3IgQm9vbGVhbiBhc3NlcnRp
b25zIHN1Y2ggYXMgRVhQRUNUX1RSVUUuCi1TdHJpbmcgR2V0Qm9vbEFzc2VydGlvbkZhaWx1cmVN
ZXNzYWdlKGNvbnN0IEFzc2VydGlvblJlc3VsdCYgYXNzZXJ0aW9uX3Jlc3VsdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwcmVzc2lvbl90ZXh0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1
YWxfcHJlZGljYXRlX3ZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBleHBlY3RlZF9wcmVkaWNhdGVfdmFsdWUpIHsKK3N0ZDo6c3RyaW5nIEdl
dEJvb2xBc3NlcnRpb25GYWlsdXJlTWVzc2FnZSgKKyAgICBjb25zdCBBc3NlcnRpb25SZXN1bHQm
IGFzc2VydGlvbl9yZXN1bHQsCisgICAgY29uc3QgY2hhciogZXhwcmVzc2lvbl90ZXh0LAorICAg
IGNvbnN0IGNoYXIqIGFjdHVhbF9wcmVkaWNhdGVfdmFsdWUsCisgICAgY29uc3QgY2hhciogZXhw
ZWN0ZWRfcHJlZGljYXRlX3ZhbHVlKSB7CiAgIGNvbnN0IGNoYXIqIGFjdHVhbF9tZXNzYWdlID0g
YXNzZXJ0aW9uX3Jlc3VsdC5tZXNzYWdlKCk7CiAgIE1lc3NhZ2UgbXNnOwogICBtc2cgPDwgIlZh
bHVlIG9mOiAiIDw8IGV4cHJlc3Npb25fdGV4dApAQCAtMTA1NywxNSArMTQxMywxNCBAQCBBc3Nl
cnRpb25SZXN1bHQgRG91YmxlTmVhclByZWRGb3JtYXQoY29uc3QgY2hhciogZXhwcjEsCiAgIGNv
bnN0IGRvdWJsZSBkaWZmID0gZmFicyh2YWwxIC0gdmFsMik7CiAgIGlmIChkaWZmIDw9IGFic19l
cnJvcikgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICAvLyBUT0RPKHdhbik6IGRvIG5v
dCBwcmludCB0aGUgdmFsdWUgb2YgYW4gZXhwcmVzc2lvbiBpZiBpdCdzCisgIC8vIEZJWE1FOiBk
byBub3QgcHJpbnQgdGhlIHZhbHVlIG9mIGFuIGV4cHJlc3Npb24gaWYgaXQncwogICAvLyBhbHJl
YWR5IGEgbGl0ZXJhbC4KLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCAiVGhlIGRpZmZlcmVuY2Ug
YmV0d2VlbiAiIDw8IGV4cHIxIDw8ICIgYW5kICIgPDwgZXhwcjIKKyAgcmV0dXJuIEFzc2VydGlv
bkZhaWx1cmUoKQorICAgICAgPDwgIlRoZSBkaWZmZXJlbmNlIGJldHdlZW4gIiA8PCBleHByMSA8
PCAiIGFuZCAiIDw8IGV4cHIyCiAgICAgICA8PCAiIGlzICIgPDwgZGlmZiA8PCAiLCB3aGljaCBl
eGNlZWRzICIgPDwgYWJzX2Vycm9yX2V4cHIgPDwgIiwgd2hlcmVcbiIKICAgICAgIDw8IGV4cHIx
IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdmFsMSA8PCAiLFxuIgogICAgICAgPDwgZXhwcjIgPDwg
IiBldmFsdWF0ZXMgdG8gIiA8PCB2YWwyIDw8ICIsIGFuZFxuIgogICAgICAgPDwgYWJzX2Vycm9y
X2V4cHIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCBhYnNfZXJyb3IgPDwgIi4iOwotICByZXR1cm4g
QXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogCiAKQEAgLTEwOTAsMjAgKzE0NDUsMTggQEAgQXNz
ZXJ0aW9uUmVzdWx0IEZsb2F0aW5nUG9pbnRMRShjb25zdCBjaGFyKiBleHByMSwKICAgLy8gdmFs
MiBpcyBOYU4sIGFzIHRoZSBJRUVFIGZsb2F0aW5nLXBvaW50IHN0YW5kYXJkIHJlcXVpcmVzIHRo
YXQKICAgLy8gYW55IHByZWRpY2F0ZSBpbnZvbHZpbmcgYSBOYU4gbXVzdCByZXR1cm4gZmFsc2Uu
CiAKLSAgU3RyU3RyZWFtIHZhbDFfc3M7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gdmFsMV9zczsK
ICAgdmFsMV9zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5
cGU+OjpkaWdpdHMxMCArIDIpCiAgICAgICAgICAgPDwgdmFsMTsKIAotICBTdHJTdHJlYW0gdmFs
Ml9zczsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSB2YWwyX3NzOwogICB2YWwyX3NzIDw8IHN0ZDo6
c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8UmF3VHlwZT46OmRpZ2l0czEwICsgMikK
ICAgICAgICAgICA8PCB2YWwyOwogCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgIkV4cGVjdGVk
OiAoIiA8PCBleHByMSA8PCAiKSA8PSAoIiA8PCBleHByMiA8PCAiKVxuIgotICAgICAgPDwgIiAg
QWN0dWFsOiAiIDw8IFN0clN0cmVhbVRvU3RyaW5nKCZ2YWwxX3NzKSA8PCAiIHZzICIKLSAgICAg
IDw8IFN0clN0cmVhbVRvU3RyaW5nKCZ2YWwyX3NzKTsKLQotICByZXR1cm4gQXNzZXJ0aW9uRmFp
bHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCAiRXhwZWN0
ZWQ6ICgiIDw8IGV4cHIxIDw8ICIpIDw9ICgiIDw8IGV4cHIyIDw8ICIpXG4iCisgICAgICA8PCAi
ICBBY3R1YWw6ICIgPDwgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnZhbDFfc3MpIDw8ICIgdnMgIgor
ICAgICAgPDwgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnZhbDJfc3MpOwogfQogCiB9ICAvLyBuYW1l
c3BhY2UgaW50ZXJuYWwKQEAgLTExMjYsMTggKzE0NzksMTggQEAgbmFtZXNwYWNlIGludGVybmFs
IHsKIAogLy8gVGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X0VRIHdpdGgg
aW50IG9yIGVudW0KIC8vIGFyZ3VtZW50cy4KLUFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJFUShj
b25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEJpZ2dlc3RJbnQgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
QmlnZ2VzdEludCBhY3R1YWwpIHsKLSAgaWYgKGV4cGVjdGVkID09IGFjdHVhbCkgeworQXNzZXJ0
aW9uUmVzdWx0IENtcEhlbHBlckVRKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgbGhzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJpZ2dlc3RJbnQgcmhzKSB7CisgIGlmIChsaHMgPT0gcmhzKSB7CiAgICAgcmV0
dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQogCi0gIHJldHVybiBFcUZhaWx1cmUoZXhwZWN0
ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBhY3R1YWxfZXhwcmVzc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoZXhwZWN0
ZWQsIGFjdHVhbCksCi0gICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1
cmVNZXNzYWdlKGFjdHVhbCwgZXhwZWN0ZWQpLAorICByZXR1cm4gRXFGYWlsdXJlKGxoc19leHBy
ZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAg
ICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShsaHMsIHJocyksCisgICAg
ICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHJocywgbGhz
KSwKICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CiB9CiAKQEAgLTExNTAsMTEgKzE1MDMsMTAg
QEAgQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlciMjb3BfbmFtZShjb25zdCBjaGFyKiBleHByMSwg
Y29uc3QgY2hhciogZXhwcjIsIFwKICAgaWYgKHZhbDEgb3AgdmFsMikge1wKICAgICByZXR1cm4g
QXNzZXJ0aW9uU3VjY2VzcygpO1wKICAgfSBlbHNlIHtcCi0gICAgTWVzc2FnZSBtc2c7XAotICAg
IG1zZyA8PCAiRXhwZWN0ZWQ6ICgiIDw8IGV4cHIxIDw8ICIpICIgI29wICIgKCIgPDwgZXhwcjJc
CisgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSBcCisgICAgICAgIDw8ICJFeHBlY3RlZDog
KCIgPDwgZXhwcjEgPDwgIikgIiAjb3AgIiAoIiA8PCBleHByMlwKICAgICAgICAgPDwgIiksIGFj
dHVhbDogIiA8PCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UodmFsMSwgdmFsMilc
CiAgICAgICAgIDw8ICIgdnMgIiA8PCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uo
dmFsMiwgdmFsMSk7XAotICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7XAogICB9XAog
fQogCkBAIC0xMTc3LDM0ICsxNTI5LDM0IEBAIEdURVNUX0lNUExfQ01QX0hFTFBFUl8oR1QsID4g
KQogI3VuZGVmIEdURVNUX0lNUExfQ01QX0hFTFBFUl8KIAogLy8gVGhlIGhlbHBlciBmdW5jdGlv
biBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NUUkVRLgotQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNU
UkVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsKSB7Ci0gIGlmIChTdHJpbmc6OkNTdHJp
bmdFcXVhbHMoZXhwZWN0ZWQsIGFjdHVhbCkpIHsKK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJT
VFJFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogcmhzKSB7CisgIGlmIChTdHJpbmc6OkNTdHJpbmdFcXVhbHMobGhzLCBy
aHMpKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQogCi0gIHJldHVybiBF
cUZhaWx1cmUoZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBhY3R1YWxf
ZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBTdHJpbmc6OlNob3dDU3RyaW5nUXVvdGVk
KGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAgICAgICBTdHJpbmc6OlNob3dDU3RyaW5nUXVvdGVk
KGFjdHVhbCksCisgIHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Npb24sCisgICAgICAgICAg
ICAgICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgUHJpbnRUb1N0cmlu
ZyhsaHMpLAorICAgICAgICAgICAgICAgICAgIFByaW50VG9TdHJpbmcocmhzKSwKICAgICAgICAg
ICAgICAgICAgICBmYWxzZSk7CiB9CiAKIC8vIFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NF
UlR8RVhQRUNUfV9TVFJDQVNFRVEuCi1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSQ0FTRUVR
KGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHBlY3RlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsKSB7Ci0gIGlmIChTdHJp
bmc6OkNhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMoZXhwZWN0ZWQsIGFjdHVhbCkpIHsKK0Fz
c2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJDQVNFRVEoY29uc3QgY2hhciogbGhzX2V4cHJlc3Np
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19l
eHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJo
cykgeworICBpZiAoU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGxocywgcmhz
KSkgewogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAgIH0KIAotICByZXR1cm4gRXFG
YWlsdXJlKGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgYWN0dWFsX2V4
cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93Q1N0cmluZ1F1b3RlZChl
eHBlY3RlZCksCi0gICAgICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93Q1N0cmluZ1F1b3RlZChh
Y3R1YWwpLAorICByZXR1cm4gRXFGYWlsdXJlKGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAg
ICAgICAgIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIFByaW50VG9TdHJpbmco
bGhzKSwKKyAgICAgICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKHJocyksCiAgICAgICAgICAg
ICAgICAgICAgdHJ1ZSk7CiB9CiAKQEAgLTEyMTYsMTEgKzE1NjgsOSBAQCBBc3NlcnRpb25SZXN1
bHQgQ21wSGVscGVyU1RSTkUoY29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKICAgaWYgKCFTdHJp
bmc6OkNTdHJpbmdFcXVhbHMoczEsIHMyKSkgewogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNz
KCk7CiAgIH0gZWxzZSB7Ci0gICAgTWVzc2FnZSBtc2c7Ci0gICAgbXNnIDw8ICJFeHBlY3RlZDog
KCIgPDwgczFfZXhwcmVzc2lvbiA8PCAiKSAhPSAoIgotICAgICAgICA8PCBzMl9leHByZXNzaW9u
IDw8ICIpLCBhY3R1YWw6IFwiIgotICAgICAgICA8PCBzMSA8PCAiXCIgdnMgXCIiIDw8IHMyIDw8
ICJcIiI7Ci0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgICByZXR1cm4gQXNz
ZXJ0aW9uRmFpbHVyZSgpIDw8ICJFeHBlY3RlZDogKCIgPDwgczFfZXhwcmVzc2lvbiA8PCAiKSAh
PSAoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgczJfZXhwcmVzc2lvbiA8PCAi
KSwgYWN0dWFsOiBcIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHMxIDw8ICJc
IiB2cyBcIiIgPDwgczIgPDwgIlwiIjsKICAgfQogfQogCkBAIC0xMjMyLDExICsxNTgyLDEwIEBA
IEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJDQVNFTkUoY29uc3QgY2hhciogczFfZXhwcmVz
c2lvbiwKICAgaWYgKCFTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMoczEsIHMy
KSkgewogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAgIH0gZWxzZSB7Ci0gICAgTWVz
c2FnZSBtc2c7Ci0gICAgbXNnIDw8ICJFeHBlY3RlZDogKCIgPDwgczFfZXhwcmVzc2lvbiA8PCAi
KSAhPSAoIgorICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgICAgPDwgIkV4cGVj
dGVkOiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgiCiAgICAgICAgIDw8IHMyX2V4cHJl
c3Npb24gPDwgIikgKGlnbm9yaW5nIGNhc2UpLCBhY3R1YWw6IFwiIgogICAgICAgICA8PCBzMSA8
PCAiXCIgdnMgXCIiIDw8IHMyIDw8ICJcIiI7Ci0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUo
bXNnKTsKICAgfQogfQogCkBAIC0xMjg1LDEzICsxNjM0LDEyIEBAIEFzc2VydGlvblJlc3VsdCBJ
c1N1YnN0cmluZ0ltcGwoCiAKICAgY29uc3QgYm9vbCBpc193aWRlX3N0cmluZyA9IHNpemVvZihu
ZWVkbGVbMF0pID4gMTsKICAgY29uc3QgY2hhciogY29uc3QgYmVnaW5fc3RyaW5nX3F1b3RlID0g
aXNfd2lkZV9zdHJpbmcgPyAiTFwiIiA6ICJcIiI7Ci0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJl
KAotICAgICAgTWVzc2FnZSgpCisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkKICAgICAgIDw8
ICJWYWx1ZSBvZjogIiA8PCBuZWVkbGVfZXhwciA8PCAiXG4iCiAgICAgICA8PCAiICBBY3R1YWw6
ICIgPDwgYmVnaW5fc3RyaW5nX3F1b3RlIDw8IG5lZWRsZSA8PCAiXCJcbiIKICAgICAgIDw8ICJF
eHBlY3RlZDogIiA8PCAoZXhwZWN0ZWRfdG9fYmVfc3Vic3RyaW5nID8gIiIgOiAibm90ICIpCiAg
ICAgICA8PCAiYSBzdWJzdHJpbmcgb2YgIiA8PCBoYXlzdGFja19leHByIDw8ICJcbiIKLSAgICAg
IDw8ICJXaGljaCBpczogIiA8PCBiZWdpbl9zdHJpbmdfcXVvdGUgPDwgaGF5c3RhY2sgPDwgIlwi
Iik7CisgICAgICA8PCAiV2hpY2ggaXM6ICIgPDwgYmVnaW5fc3RyaW5nX3F1b3RlIDw8IGhheXN0
YWNrIDw8ICJcIiI7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZQpAQCAtMTM2MCwxNiArMTcwOCwxOSBA
QCBuYW1lc3BhY2UgewogQXNzZXJ0aW9uUmVzdWx0IEhSRVNVTFRGYWlsdXJlSGVscGVyKGNvbnN0
IGNoYXIqIGV4cHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9u
ZyBocikgeyAgLy8gTk9MSU5UCi0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaWYgR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUgfHwgR1RFU1RfT1NfV0lORE9XU19UVl9USVRMRQorCiAgIC8v
IFdpbmRvd3MgQ0UgZG9lc24ndCBzdXBwb3J0IEZvcm1hdE1lc3NhZ2UuCiAgIGNvbnN0IGNoYXIg
ZXJyb3JfdGV4dFtdID0gIiI7Ci0jZWxzZQorCisjIGVsc2UKKwogICAvLyBMb29rcyB1cCB0aGUg
aHVtYW4tcmVhZGFibGUgc3lzdGVtIG1lc3NhZ2UgZm9yIHRoZSBIUkVTVUxUIGNvZGUKICAgLy8g
YW5kIHNpbmNlIHdlJ3JlIG5vdCBwYXNzaW5nIGFueSBwYXJhbXMgdG8gRm9ybWF0TWVzc2FnZSwg
d2UgZG9uJ3QKICAgLy8gd2FudCBpbnNlcnRzIGV4cGFuZGVkLgogICBjb25zdCBEV09SRCBrRmxh
Z3MgPSBGT1JNQVRfTUVTU0FHRV9GUk9NX1NZU1RFTSB8CiAgICAgICAgICAgICAgICAgICAgICAg
IEZPUk1BVF9NRVNTQUdFX0lHTk9SRV9JTlNFUlRTOwotICBjb25zdCBEV09SRCBrQnVmU2l6ZSA9
IDQwOTY7ICAvLyBTdHJpbmc6OkZvcm1hdCBjYW4ndCBleGNlZWQgdGhpcyBsZW5ndGguCisgIGNv
bnN0IERXT1JEIGtCdWZTaXplID0gNDA5NjsKICAgLy8gR2V0cyB0aGUgc3lzdGVtJ3MgaHVtYW4g
cmVhZGFibGUgbWVzc2FnZSBzdHJpbmcgZm9yIHRoaXMgSFJFU1VMVC4KICAgY2hhciBlcnJvcl90
ZXh0W2tCdWZTaXplXSA9IHsgJ1wwJyB9OwogICBEV09SRCBtZXNzYWdlX2xlbmd0aCA9IDo6Rm9y
bWF0TWVzc2FnZUEoa0ZsYWdzLApAQCAtMTM3OSwxOSArMTczMCwxOCBAQCBBc3NlcnRpb25SZXN1
bHQgSFJFU1VMVEZhaWx1cmVIZWxwZXIoY29uc3QgY2hhciogZXhwciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3RleHQsICAvLyBvdXRwdXQgYnVmZmVy
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQnVmU2l6ZSwgIC8v
IGJ1ZiBzaXplCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM
KTsgIC8vIG5vIGFyZ3VtZW50cyBmb3IgaW5zZXJ0cwotICAvLyBUcmltcyB0YWlsaW5nIHdoaXRl
IHNwYWNlIChGb3JtYXRNZXNzYWdlIGxlYXZlcyBhIHRyYWlsaW5nIGNyLWxmKQotICBmb3IgKDsg
bWVzc2FnZV9sZW5ndGggJiYgaXNzcGFjZShlcnJvcl90ZXh0W21lc3NhZ2VfbGVuZ3RoIC0gMV0p
OworICAvLyBUcmltcyB0YWlsaW5nIHdoaXRlIHNwYWNlIChGb3JtYXRNZXNzYWdlIGxlYXZlcyBh
IHRyYWlsaW5nIENSLUxGKQorICBmb3IgKDsgbWVzc2FnZV9sZW5ndGggJiYgSXNTcGFjZShlcnJv
cl90ZXh0W21lc3NhZ2VfbGVuZ3RoIC0gMV0pOwogICAgICAgICAgIC0tbWVzc2FnZV9sZW5ndGgp
IHsKICAgICBlcnJvcl90ZXh0W21lc3NhZ2VfbGVuZ3RoIC0gMV0gPSAnXDAnOwogICB9Ci0jZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAKLSAgY29uc3QgU3RyaW5nIGVycm9yX2hl
eChTdHJpbmc6OkZvcm1hdCgiMHglMDhYICIsIGhyKSk7Ci0gIE1lc3NhZ2UgbXNnOwotICBtc2cg
PDwgIkV4cGVjdGVkOiAiIDw8IGV4cHIgPDwgIiAiIDw8IGV4cGVjdGVkIDw8ICIuXG4iCi0gICAg
ICA8PCAiICBBY3R1YWw6ICIgPDwgZXJyb3JfaGV4IDw8IGVycm9yX3RleHQgPDwgIlxuIjsKKyMg
ZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAKLSAgcmV0dXJuIDo6dGVzdGluZzo6
QXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICBjb25zdCBzdGQ6OnN0cmluZyBlcnJvcl9oZXgoIjB4
IiArIFN0cmluZzo6Rm9ybWF0SGV4SW50KGhyKSk7CisgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2Vy
dGlvbkZhaWx1cmUoKQorICAgICAgPDwgIkV4cGVjdGVkOiAiIDw8IGV4cHIgPDwgIiAiIDw8IGV4
cGVjdGVkIDw8ICIuXG4iCisgICAgICA8PCAiICBBY3R1YWw6ICIgPDwgZXJyb3JfaGV4IDw8ICIg
IiA8PCBlcnJvcl90ZXh0IDw8ICJcbiI7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZQpAQCAtMTQxNSw3
ICsxNzY1LDcgQEAgQXNzZXJ0aW9uUmVzdWx0IElzSFJFU1VMVEZhaWx1cmUoY29uc3QgY2hhciog
ZXhwciwgbG9uZyBocikgeyAgLy8gTk9MSU5UCiAvLyBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgZW5j
b2RpbmcgVW5pY29kZSB0ZXh0ICh3aWRlIHN0cmluZ3MpIGluCiAvLyBVVEYtOC4KIAotLy8gQSBV
bmljb2RlIGNvZGUtcG9pbnQgY2FuIGhhdmUgdXB0byAyMSBiaXRzLCBhbmQgaXMgZW5jb2RlZCBp
biBVVEYtOAorLy8gQSBVbmljb2RlIGNvZGUtcG9pbnQgY2FuIGhhdmUgdXAgdG8gMjEgYml0cywg
YW5kIGlzIGVuY29kZWQgaW4gVVRGLTgKIC8vIGxpa2UgdGhpczoKIC8vCiAvLyBDb2RlLXBvaW50
IGxlbmd0aCAgIEVuY29kaW5nCkBAIC0xNDQ4LDEyICsxNzk4LDE1IEBAIGlubGluZSBVSW50MzIg
Q2hvcExvd0JpdHMoVUludDMyKiBiaXRzLCBpbnQgbikgewogLy8gQ29udmVydHMgYSBVbmljb2Rl
IGNvZGUgcG9pbnQgdG8gYSBuYXJyb3cgc3RyaW5nIGluIFVURi04IGVuY29kaW5nLgogLy8gY29k
ZV9wb2ludCBwYXJhbWV0ZXIgaXMgb2YgdHlwZSBVSW50MzIgYmVjYXVzZSB3Y2hhcl90IG1heSBu
b3QgYmUKIC8vIHdpZGUgZW5vdWdoIHRvIGNvbnRhaW4gYSBjb2RlIHBvaW50LgotLy8gVGhlIG91
dHB1dCBidWZmZXIgc3RyIG11c3QgY29udGFpbnQgYXQgbGVhc3QgMzIgY2hhcmFjdGVycy4KLS8v
IFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBhZGRyZXNzIG9mIHRoZSBvdXRwdXQgYnVmZmVyLgog
Ly8gSWYgdGhlIGNvZGVfcG9pbnQgaXMgbm90IGEgdmFsaWQgVW5pY29kZSBjb2RlIHBvaW50Ci0v
LyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNvZGUgcmFuZ2UgVSswIHRvIFUrMTBGRkZGKSBpdCB3aWxs
IGJlIG91dHB1dAotLy8gYXMgJyhJbnZhbGlkIFVuaWNvZGUgMHhYWFhYWFhYWCknLgotY2hhciog
Q29kZVBvaW50VG9VdGY4KFVJbnQzMiBjb2RlX3BvaW50LCBjaGFyKiBzdHIpIHsKKy8vIChpLmUu
IG91dHNpZGUgb2YgVW5pY29kZSByYW5nZSBVKzAgdG8gVSsxMEZGRkYpIGl0IHdpbGwgYmUgY29u
dmVydGVkCisvLyB0byAiKEludmFsaWQgVW5pY29kZSAweFhYWFhYWFhYKSIuCitzdGQ6OnN0cmlu
ZyBDb2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQpIHsKKyAgaWYgKGNvZGVfcG9pbnQg
PiBrTWF4Q29kZVBvaW50NCkgeworICAgIHJldHVybiAiKEludmFsaWQgVW5pY29kZSAweCIgKyBT
dHJpbmc6OkZvcm1hdEhleEludChjb2RlX3BvaW50KSArICIpIjsKKyAgfQorCisgIGNoYXIgc3Ry
WzVdOyAgLy8gQmlnIGVub3VnaCBmb3IgdGhlIGxhcmdlc3QgdmFsaWQgY29kZSBwb2ludC4KICAg
aWYgKGNvZGVfcG9pbnQgPD0ga01heENvZGVQb2ludDEpIHsKICAgICBzdHJbMV0gPSAnXDAnOwog
ICAgIHN0clswXSA9IHN0YXRpY19jYXN0PGNoYXI+KGNvZGVfcG9pbnQpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gMHh4eHh4eHgKQEAgLTE0NjYsMjcgKzE4MTksMTcgQEAgY2hhciogQ29k
ZVBvaW50VG9VdGY4KFVJbnQzMiBjb2RlX3BvaW50LCBjaGFyKiBzdHIpIHsKICAgICBzdHJbMl0g
PSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVfcG9pbnQsIDYpKTsg
IC8vIDEweHh4eHh4CiAgICAgc3RyWzFdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHg4MCB8IENob3BM
b3dCaXRzKCZjb2RlX3BvaW50LCA2KSk7ICAvLyAxMHh4eHh4eAogICAgIHN0clswXSA9IHN0YXRp
Y19jYXN0PGNoYXI+KDB4RTAgfCBjb2RlX3BvaW50KTsgICAgICAgICAgICAgICAgICAgLy8gMTEx
MHh4eHgKLSAgfSBlbHNlIGlmIChjb2RlX3BvaW50IDw9IGtNYXhDb2RlUG9pbnQ0KSB7CisgIH0g
ZWxzZSB7ICAvLyBjb2RlX3BvaW50IDw9IGtNYXhDb2RlUG9pbnQ0CiAgICAgc3RyWzRdID0gJ1ww
JzsKICAgICBzdHJbM10gPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwgQ2hvcExvd0JpdHMoJmNv
ZGVfcG9pbnQsIDYpKTsgIC8vIDEweHh4eHh4CiAgICAgc3RyWzJdID0gc3RhdGljX2Nhc3Q8Y2hh
cj4oMHg4MCB8IENob3BMb3dCaXRzKCZjb2RlX3BvaW50LCA2KSk7ICAvLyAxMHh4eHh4eAogICAg
IHN0clsxXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgfCBDaG9wTG93Qml0cygmY29kZV9wb2lu
dCwgNikpOyAgLy8gMTB4eHh4eHgKICAgICBzdHJbMF0gPSBzdGF0aWNfY2FzdDxjaGFyPigweEYw
IHwgY29kZV9wb2ludCk7ICAgICAgICAgICAgICAgICAgIC8vIDExMTEweHh4Ci0gIH0gZWxzZSB7
Ci0gICAgLy8gVGhlIGxvbmdlc3Qgc3RyaW5nIFN0cmluZzo6Rm9ybWF0IGNhbiBwcm9kdWNlIHdo
ZW4gaW52b2tlZAotICAgIC8vIHdpdGggdGhlc2UgcGFyYW1ldGVycyBpcyAyOCBjaGFyYWN0ZXIg
bG9uZyAobm90IGluY2x1ZGluZwotICAgIC8vIHRoZSB0ZXJtaW5hdGluZyBudWwgY2hhcmFjdGVy
KS4gV2UgYXJlIGFza2luZyBmb3IgMzIgY2hhcmFjdGVyCi0gICAgLy8gYnVmZmVyIGp1c3QgaW4g
Y2FzZS4gVGhpcyBpcyBhbHNvIGVub3VnaCBmb3Igc3RybmNweSB0bwotICAgIC8vIG51bGwtdGVy
bWluYXRlIHRoZSBkZXN0aW5hdGlvbiBzdHJpbmcuCi0gICAgcG9zaXg6OlN0ck5DcHkoCi0gICAg
ICAgIHN0ciwgU3RyaW5nOjpGb3JtYXQoIihJbnZhbGlkIFVuaWNvZGUgMHglWCkiLCBjb2RlX3Bv
aW50KS5jX3N0cigpLCAzMik7Ci0gICAgc3RyWzMxXSA9ICdcMCc7ICAvLyBNYWtlcyBzdXJlIG5v
IGNoYW5nZSBpbiB0aGUgZm9ybWF0IHRvIHN0cm5jcHkgbGVhdmVzCi0gICAgICAgICAgICAgICAg
ICAgICAvLyB0aGUgcmVzdWx0IHVudGVybWluYXRlZC4KICAgfQogICByZXR1cm4gc3RyOwogfQog
Ci0vLyBUaGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMgb25seSBtYWtlIHNlbnNlIGlmIHRoZSB0
aGUgc3lzdGVtCisvLyBUaGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMgb25seSBtYWtlIHNlbnNl
IGlmIHRoZSBzeXN0ZW0KIC8vIHVzZXMgVVRGLTE2IGZvciB3aWRlIHN0cmluZyBlbmNvZGluZy4g
QWxsIHN1cHBvcnRlZCBzeXN0ZW1zCiAvLyB3aXRoIDE2IGJpdCB3Y2hhcl90IChXaW5kb3dzLCBD
eWd3aW4sIFN5bWJpYW4gT1MpIGRvIHVzZSBVVEYtMTYuCiAKQEAgLTE1MjIsMTEgKzE4NjUsMTEg
QEAgaW5saW5lIFVJbnQzMiBDcmVhdGVDb2RlUG9pbnRGcm9tVXRmMTZTdXJyb2dhdGVQYWlyKHdj
aGFyX3QgZmlyc3QsCiAvLyBhcyAnKEludmFsaWQgVW5pY29kZSAweFhYWFhYWFhYKScuIElmIHRo
ZSBzdHJpbmcgaXMgaW4gVVRGMTYgZW5jb2RpbmcKIC8vIGFuZCBjb250YWlucyBpbnZhbGlkIFVU
Ri0xNiBzdXJyb2dhdGUgcGFpcnMsIHZhbHVlcyBpbiB0aG9zZSBwYWlycwogLy8gd2lsbCBiZSBl
bmNvZGVkIGFzIGluZGl2aWR1YWwgVW5pY29kZSBjaGFyYWN0ZXJzIGZyb20gQmFzaWMgTm9ybWFs
IFBsYW5lLgotU3RyaW5nIFdpZGVTdHJpbmdUb1V0ZjgoY29uc3Qgd2NoYXJfdCogc3RyLCBpbnQg
bnVtX2NoYXJzKSB7CitzdGQ6OnN0cmluZyBXaWRlU3RyaW5nVG9VdGY4KGNvbnN0IHdjaGFyX3Qq
IHN0ciwgaW50IG51bV9jaGFycykgewogICBpZiAobnVtX2NoYXJzID09IC0xKQogICAgIG51bV9j
aGFycyA9IHN0YXRpY19jYXN0PGludD4od2NzbGVuKHN0cikpOwogCi0gIFN0clN0cmVhbSBzdHJl
YW07CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOwogICBmb3IgKGludCBpID0gMDsgaSA8
IG51bV9jaGFyczsgKytpKSB7CiAgICAgVUludDMyIHVuaWNvZGVfY29kZV9wb2ludDsKIApAQCAt
MTU0MCwyNyArMTg4MywxNyBAQCBTdHJpbmcgV2lkZVN0cmluZ1RvVXRmOChjb25zdCB3Y2hhcl90
KiBzdHIsIGludCBudW1fY2hhcnMpIHsKICAgICAgIHVuaWNvZGVfY29kZV9wb2ludCA9IHN0YXRp
Y19jYXN0PFVJbnQzMj4oc3RyW2ldKTsKICAgICB9CiAKLSAgICBjaGFyIGJ1ZmZlclszMl07ICAv
LyBDb2RlUG9pbnRUb1V0ZjggcmVxdWlyZXMgYSBidWZmZXIgdGhpcyBiaWcuCi0gICAgc3RyZWFt
IDw8IENvZGVQb2ludFRvVXRmOCh1bmljb2RlX2NvZGVfcG9pbnQsIGJ1ZmZlcik7CisgICAgc3Ry
ZWFtIDw8IENvZGVQb2ludFRvVXRmOCh1bmljb2RlX2NvZGVfcG9pbnQpOwogICB9Ci0gIHJldHVy
biBTdHJTdHJlYW1Ub1N0cmluZygmc3RyZWFtKTsKKyAgcmV0dXJuIFN0cmluZ1N0cmVhbVRvU3Ry
aW5nKCZzdHJlYW0pOwogfQogCi0vLyBDb252ZXJ0cyBhIHdpZGUgQyBzdHJpbmcgdG8gYSBTdHJp
bmcgdXNpbmcgdGhlIFVURi04IGVuY29kaW5nLgorLy8gQ29udmVydHMgYSB3aWRlIEMgc3RyaW5n
IHRvIGFuIHN0ZDo6c3RyaW5nIHVzaW5nIHRoZSBVVEYtOCBlbmNvZGluZy4KIC8vIE5VTEwgd2ls
bCBiZSBjb252ZXJ0ZWQgdG8gIihudWxsKSIuCi1TdHJpbmcgU3RyaW5nOjpTaG93V2lkZUNTdHJp
bmcoY29uc3Qgd2NoYXJfdCAqIHdpZGVfY19zdHIpIHsKLSAgaWYgKHdpZGVfY19zdHIgPT0gTlVM
TCkgcmV0dXJuIFN0cmluZygiKG51bGwpIik7Ci0KLSAgcmV0dXJuIFN0cmluZyhpbnRlcm5hbDo6
V2lkZVN0cmluZ1RvVXRmOCh3aWRlX2Nfc3RyLCAtMSkuY19zdHIoKSk7Ci19Ci0KLS8vIFNpbWls
YXIgdG8gU2hvd1dpZGVDU3RyaW5nKCksIGV4Y2VwdCB0aGF0IHRoaXMgZnVuY3Rpb24gZW5jbG9z
ZXMKLS8vIHRoZSBjb252ZXJ0ZWQgc3RyaW5nIGluIGRvdWJsZSBxdW90ZXMuCi1TdHJpbmcgU3Ry
aW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoY29uc3Qgd2NoYXJfdCogd2lkZV9jX3N0cikgewot
ICBpZiAod2lkZV9jX3N0ciA9PSBOVUxMKSByZXR1cm4gU3RyaW5nKCIobnVsbCkiKTsKK3N0ZDo6
c3RyaW5nIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKGNvbnN0IHdjaGFyX3QgKiB3aWRlX2Nfc3Ry
KSB7CisgIGlmICh3aWRlX2Nfc3RyID09IE5VTEwpICByZXR1cm4gIihudWxsKSI7CiAKLSAgcmV0
dXJuIFN0cmluZzo6Rm9ybWF0KCJMXCIlc1wiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFN0
cmluZzo6U2hvd1dpZGVDU3RyaW5nKHdpZGVfY19zdHIpLmNfc3RyKCkpOworICByZXR1cm4gaW50
ZXJuYWw6OldpZGVTdHJpbmdUb1V0Zjgod2lkZV9jX3N0ciwgLTEpOwogfQogCiAvLyBDb21wYXJl
cyB0d28gd2lkZSBDIHN0cmluZ3MuICBSZXR1cm5zIHRydWUgaWZmIHRoZXkgaGF2ZSB0aGUgc2Ft
ZQpAQCAtMTU3OCwxOCArMTkxMSwxOCBAQCBib29sIFN0cmluZzo6V2lkZUNTdHJpbmdFcXVhbHMo
Y29uc3Qgd2NoYXJfdCAqIGxocywgY29uc3Qgd2NoYXJfdCAqIHJocykgewogfQogCiAvLyBIZWxw
ZXIgZnVuY3Rpb24gZm9yICpfU1RSRVEgb24gd2lkZSBzdHJpbmdzLgotQXNzZXJ0aW9uUmVzdWx0
IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogZXhwZWN0ZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogYWN0dWFsKSB7Ci0g
IGlmIChTdHJpbmc6OldpZGVDU3RyaW5nRXF1YWxzKGV4cGVjdGVkLCBhY3R1YWwpKSB7CitBc3Nl
cnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogbGhzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIHJocykgeworICBpZiAo
U3RyaW5nOjpXaWRlQ1N0cmluZ0VxdWFscyhsaHMsIHJocykpIHsKICAgICByZXR1cm4gQXNzZXJ0
aW9uU3VjY2VzcygpOwogICB9CiAKLSAgcmV0dXJuIEVxRmFpbHVyZShleHBlY3RlZF9leHByZXNz
aW9uLAotICAgICAgICAgICAgICAgICAgIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAg
ICAgICAgIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVvdGVkKGV4cGVjdGVkKSwKLSAgICAgICAg
ICAgICAgICAgICBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChhY3R1YWwpLAorICByZXR1
cm4gRXFGYWlsdXJlKGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIHJoc19leHBy
ZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIFByaW50VG9TdHJpbmcobGhzKSwKKyAgICAgICAg
ICAgICAgICAgICBQcmludFRvU3RyaW5nKHJocyksCiAgICAgICAgICAgICAgICAgICAgZmFsc2Up
OwogfQogCkBAIC0xNjAyLDEyICsxOTM1LDEwIEBAIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJT
VFJORShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAogICAgIHJldHVybiBBc3NlcnRpb25TdWNj
ZXNzKCk7CiAgIH0KIAotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8ICJFeHBlY3RlZDogKCIgPDwg
czFfZXhwcmVzc2lvbiA8PCAiKSAhPSAoIgotICAgICAgPDwgczJfZXhwcmVzc2lvbiA8PCAiKSwg
YWN0dWFsOiAiCi0gICAgICA8PCBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChzMSkKLSAg
ICAgIDw8ICIgdnMgIiA8PCBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChzMik7Ci0gIHJl
dHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkg
PDwgIkV4cGVjdGVkOiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgczJfZXhwcmVzc2lvbiA8PCAiKSwgYWN0dWFsOiAiCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgUHJpbnRUb1N0cmluZyhzMSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCAiIHZzICIgPDwgUHJpbnRUb1N0cmluZyhzMik7CiB9CiAKIC8v
IENvbXBhcmVzIHR3byBDIHN0cmluZ3MsIGlnbm9yaW5nIGNhc2UuICBSZXR1cm5zIHRydWUgaWZm
IHRoZXkgaGF2ZQpAQCAtMTYzOCwxNyArMTk2OSwxNyBAQCBib29sIFN0cmluZzo6Q2FzZUluc2Vu
c2l0aXZlQ1N0cmluZ0VxdWFscyhjb25zdCBjaGFyICogbGhzLCBjb25zdCBjaGFyICogcmhzKSB7
CiAgIC8vIGN1cnJlbnQgbG9jYWxlLgogYm9vbCBTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZVdpZGVD
U3RyaW5nRXF1YWxzKGNvbnN0IHdjaGFyX3QqIGxocywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiByaHMpIHsKLSAgaWYgKCBsaHMg
PT0gTlVMTCApIHJldHVybiByaHMgPT0gTlVMTDsKKyAgaWYgKGxocyA9PSBOVUxMKSByZXR1cm4g
cmhzID09IE5VTEw7CiAKLSAgaWYgKCByaHMgPT0gTlVMTCApIHJldHVybiBmYWxzZTsKKyAgaWYg
KHJocyA9PSBOVUxMKSByZXR1cm4gZmFsc2U7CiAKICNpZiBHVEVTVF9PU19XSU5ET1dTCiAgIHJl
dHVybiBfd2NzaWNtcChsaHMsIHJocykgPT0gMDsKLSNlbGlmIEdURVNUX09TX0xJTlVYCisjZWxp
ZiBHVEVTVF9PU19MSU5VWCAmJiAhR1RFU1RfT1NfTElOVVhfQU5EUk9JRAogICByZXR1cm4gd2Nz
Y2FzZWNtcChsaHMsIHJocykgPT0gMDsKICNlbHNlCi0gIC8vIE1hYyBPUyBYIGFuZCBDeWd3aW4g
ZG9uJ3QgZGVmaW5lIHdjc2Nhc2VjbXAuICBPdGhlciB1bmtub3duIE9TZXMKLSAgLy8gbWF5IG5v
dCBkZWZpbmUgaXQgZWl0aGVyLgorICAvLyBBbmRyb2lkLCBNYWMgT1MgWCBhbmQgQ3lnd2luIGRv
bid0IGRlZmluZSB3Y3NjYXNlY21wLgorICAvLyBPdGhlciB1bmtub3duIE9TZXMgbWF5IG5vdCBk
ZWZpbmUgaXQgZWl0aGVyLgogICB3aW50X3QgbGVmdCwgcmlnaHQ7CiAgIGRvIHsKICAgICBsZWZ0
ID0gdG93bG93ZXIoKmxocysrKTsKQEAgLTE2NTgsMTMzICsxOTg5LDY5IEBAIGJvb2wgU3RyaW5n
OjpDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscyhjb25zdCB3Y2hhcl90KiBsaHMsCiAj
ZW5kaWYgIC8vIE9TIHNlbGVjdG9yCiB9CiAKLS8vIENvbXBhcmVzIHRoaXMgd2l0aCBhbm90aGVy
IFN0cmluZy4KLS8vIFJldHVybnMgPCAwIGlmIHRoaXMgaXMgbGVzcyB0aGFuIHJocywgMCBpZiB0
aGlzIGlzIGVxdWFsIHRvIHJocywgb3IgPiAwCi0vLyBpZiB0aGlzIGlzIGdyZWF0ZXIgdGhhbiBy
aHMuCi1pbnQgU3RyaW5nOjpDb21wYXJlKGNvbnN0IFN0cmluZyAmIHJocykgY29uc3QgewotICBj
b25zdCBjaGFyKiBjb25zdCBsaHNfY19zdHIgPSBjX3N0cigpOwotICBjb25zdCBjaGFyKiBjb25z
dCByaHNfY19zdHIgPSByaHMuY19zdHIoKTsKLQotICBpZiAobGhzX2Nfc3RyID09IE5VTEwpIHsK
LSAgICByZXR1cm4gcmhzX2Nfc3RyID09IE5VTEwgPyAwIDogLTE7ICAvLyBOVUxMIDwgYW55dGhp
bmcgZXhjZXB0IE5VTEwKLSAgfSBlbHNlIGlmIChyaHNfY19zdHIgPT0gTlVMTCkgewotICAgIHJl
dHVybiAxOwotICB9Ci0KLSAgY29uc3Qgc2l6ZV90IHNob3J0ZXJfc3RyX2xlbiA9Ci0gICAgICBs
ZW5ndGgoKSA8PSByaHMubGVuZ3RoKCkgPyBsZW5ndGgoKSA6IHJocy5sZW5ndGgoKTsKLSAgZm9y
IChzaXplX3QgaSA9IDA7IGkgIT0gc2hvcnRlcl9zdHJfbGVuOyBpKyspIHsKLSAgICBpZiAobGhz
X2Nfc3RyW2ldIDwgcmhzX2Nfc3RyW2ldKSB7Ci0gICAgICByZXR1cm4gLTE7Ci0gICAgfSBlbHNl
IGlmIChsaHNfY19zdHJbaV0gPiByaHNfY19zdHJbaV0pIHsKLSAgICAgIHJldHVybiAxOwotICAg
IH0KLSAgfQotICByZXR1cm4gKGxlbmd0aCgpIDwgcmhzLmxlbmd0aCgpKSA/IC0xIDoKLSAgICAg
IChsZW5ndGgoKSA+IHJocy5sZW5ndGgoKSkgPyAxIDogMDsKKy8vIFJldHVybnMgdHJ1ZSBpZmYg
c3RyIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LCBpZ25vcmluZyBjYXNlLgorLy8gQW55IHN0
cmluZyBpcyBjb25zaWRlcmVkIHRvIGVuZCB3aXRoIGFuIGVtcHR5IHN1ZmZpeC4KK2Jvb2wgU3Ry
aW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgc3Ry
LCBjb25zdCBzdGQ6OnN0cmluZyYgc3VmZml4KSB7CisgIGNvbnN0IHNpemVfdCBzdHJfbGVuID0g
c3RyLmxlbmd0aCgpOworICBjb25zdCBzaXplX3Qgc3VmZml4X2xlbiA9IHN1ZmZpeC5sZW5ndGgo
KTsKKyAgcmV0dXJuIChzdHJfbGVuID49IHN1ZmZpeF9sZW4pICYmCisgICAgICAgICBDYXNlSW5z
ZW5zaXRpdmVDU3RyaW5nRXF1YWxzKHN0ci5jX3N0cigpICsgc3RyX2xlbiAtIHN1ZmZpeF9sZW4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeC5jX3N0cigpKTsK
IH0KIAotLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIFN0cmluZyBlbmRzIHdpdGggdGhlIGdpdmVu
IHN1ZmZpeC4gICpBbnkqCi0vLyBTdHJpbmcgaXMgY29uc2lkZXJlZCB0byBlbmQgd2l0aCBhIE5V
TEwgb3IgZW1wdHkgc3VmZml4LgotYm9vbCBTdHJpbmc6OkVuZHNXaXRoKGNvbnN0IGNoYXIqIHN1
ZmZpeCkgY29uc3QgewotICBpZiAoc3VmZml4ID09IE5VTEwgfHwgQ1N0cmluZ0VxdWFscyhzdWZm
aXgsICIiKSkgcmV0dXJuIHRydWU7Ci0KLSAgaWYgKGNfc3RyKCkgPT0gTlVMTCkgcmV0dXJuIGZh
bHNlOwotCi0gIGNvbnN0IHNpemVfdCB0aGlzX2xlbiA9IHN0cmxlbihjX3N0cigpKTsKLSAgY29u
c3Qgc2l6ZV90IHN1ZmZpeF9sZW4gPSBzdHJsZW4oc3VmZml4KTsKLSAgcmV0dXJuICh0aGlzX2xl
biA+PSBzdWZmaXhfbGVuKSAmJgotICAgICAgICAgQ1N0cmluZ0VxdWFscyhjX3N0cigpICsgdGhp
c19sZW4gLSBzdWZmaXhfbGVuLCBzdWZmaXgpOworLy8gRm9ybWF0cyBhbiBpbnQgdmFsdWUgYXMg
IiUwMmQiLgorc3RkOjpzdHJpbmcgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIoaW50IHZhbHVlKSB7
CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICBzcyA8PCBzdGQ6OnNldGZpbGwoJzAnKSA8PCBz
dGQ6OnNldHcoMikgPDwgdmFsdWU7CisgIHJldHVybiBzcy5zdHIoKTsKIH0KIAotLy8gUmV0dXJu
cyB0cnVlIGlmZiB0aGlzIFN0cmluZyBlbmRzIHdpdGggdGhlIGdpdmVuIHN1ZmZpeCwgaWdub3Jp
bmcgY2FzZS4KLS8vIEFueSBTdHJpbmcgaXMgY29uc2lkZXJlZCB0byBlbmQgd2l0aCBhIE5VTEwg
b3IgZW1wdHkgc3VmZml4LgotYm9vbCBTdHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKGNv
bnN0IGNoYXIqIHN1ZmZpeCkgY29uc3QgewotICBpZiAoc3VmZml4ID09IE5VTEwgfHwgQ1N0cmlu
Z0VxdWFscyhzdWZmaXgsICIiKSkgcmV0dXJuIHRydWU7Ci0KLSAgaWYgKGNfc3RyKCkgPT0gTlVM
TCkgcmV0dXJuIGZhbHNlOwotCi0gIGNvbnN0IHNpemVfdCB0aGlzX2xlbiA9IHN0cmxlbihjX3N0
cigpKTsKLSAgY29uc3Qgc2l6ZV90IHN1ZmZpeF9sZW4gPSBzdHJsZW4oc3VmZml4KTsKLSAgcmV0
dXJuICh0aGlzX2xlbiA+PSBzdWZmaXhfbGVuKSAmJgotICAgICAgICAgQ2FzZUluc2Vuc2l0aXZl
Q1N0cmluZ0VxdWFscyhjX3N0cigpICsgdGhpc19sZW4gLSBzdWZmaXhfbGVuLCBzdWZmaXgpOwor
Ly8gRm9ybWF0cyBhbiBpbnQgdmFsdWUgYXMgIiVYIi4KK3N0ZDo6c3RyaW5nIFN0cmluZzo6Rm9y
bWF0SGV4SW50KGludCB2YWx1ZSkgeworICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgc3MgPDwg
c3RkOjpoZXggPDwgc3RkOjp1cHBlcmNhc2UgPDwgdmFsdWU7CisgIHJldHVybiBzcy5zdHIoKTsK
IH0KIAotLy8gRm9ybWF0cyBhIGxpc3Qgb2YgYXJndW1lbnRzIHRvIGEgU3RyaW5nLCB1c2luZyB0
aGUgc2FtZSBmb3JtYXQKLS8vIHNwZWMgc3RyaW5nIGFzIGZvciBwcmludGYuCi0vLwotLy8gV2Ug
ZG8gbm90IHVzZSB0aGUgU3RyaW5nUHJpbnRmIGNsYXNzIGFzIGl0IGlzIG5vdCB1bml2ZXJzYWxs
eQotLy8gYXZhaWxhYmxlLgotLy8KLS8vIFRoZSByZXN1bHQgaXMgbGltaXRlZCB0byA0MDk2IGNo
YXJhY3RlcnMgKGluY2x1ZGluZyB0aGUgdGFpbGluZyAwKS4KLS8vIElmIDQwOTYgY2hhcmFjdGVy
cyBhcmUgbm90IGVub3VnaCB0byBmb3JtYXQgdGhlIGlucHV0LCBvciBpZgotLy8gdGhlcmUncyBh
biBlcnJvciwgIjxmb3JtYXR0aW5nIGVycm9yIG9yIGJ1ZmZlciBleGNlZWRlZD4iIGlzCi0vLyBy
ZXR1cm5lZC4KLVN0cmluZyBTdHJpbmc6OkZvcm1hdChjb25zdCBjaGFyICogZm9ybWF0LCAuLi4p
IHsKLSAgdmFfbGlzdCBhcmdzOwotICB2YV9zdGFydChhcmdzLCBmb3JtYXQpOwotCi0gIGNoYXIg
YnVmZmVyWzQwOTZdOwotICBjb25zdCBpbnQga0J1ZmZlclNpemUgPSBzaXplb2YoYnVmZmVyKS9z
aXplb2YoYnVmZmVyWzBdKTsKLQotICAvLyBNU1ZDIDggZGVwcmVjYXRlcyB2c25wcmludGYoKSwg
c28gd2Ugd2FudCB0byBzdXBwcmVzcyB3YXJuaW5nCi0gIC8vIDQ5OTYgKGRlcHJlY2F0ZWQgZnVu
Y3Rpb24pIHRoZXJlLgotI2lmZGVmIF9NU0NfVkVSICAvLyBXZSBhcmUgdXNpbmcgTVNWQy4KLSNw
cmFnbWEgd2FybmluZyhwdXNoKSAgICAgICAgICAvLyBTYXZlcyB0aGUgY3VycmVudCB3YXJuaW5n
IHN0YXRlLgotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDk5NikgIC8vIFRlbXBvcmFyaWx5IGRp
c2FibGVzIHdhcm5pbmcgNDk5Ni4KLSAgY29uc3QgaW50IHNpemUgPSB2c25wcmludGYoYnVmZmVy
LCBrQnVmZmVyU2l6ZSwgZm9ybWF0LCBhcmdzKTsKLSNwcmFnbWEgd2FybmluZyhwb3ApICAgICAg
ICAgICAvLyBSZXN0b3JlcyB0aGUgd2FybmluZyBzdGF0ZS4KLSNlbHNlICAvLyBXZSBhcmUgbm90
IHVzaW5nIE1TVkMuCi0gIGNvbnN0IGludCBzaXplID0gdnNucHJpbnRmKGJ1ZmZlciwga0J1ZmZl
clNpemUsIGZvcm1hdCwgYXJncyk7Ci0jZW5kaWYgIC8vIF9NU0NfVkVSCi0gIHZhX2VuZChhcmdz
KTsKLQotICAvLyB2c25wcmludGYoKSdzIGJlaGF2aW9yIGlzIG5vdCBwb3J0YWJsZS4gIFdoZW4g
dGhlIGJ1ZmZlciBpcyBub3QKLSAgLy8gYmlnIGVub3VnaCwgaXQgcmV0dXJucyBhIG5lZ2F0aXZl
IHZhbHVlIGluIE1TVkMsIGFuZCByZXR1cm5zIHRoZQotICAvLyBuZWVkZWQgYnVmZmVyIHNpemUg
b24gTGludXguICBXaGVuIHRoZXJlIGlzIGFuIG91dHB1dCBlcnJvciwgaXQKLSAgLy8gYWx3YXlz
IHJldHVybnMgYSBuZWdhdGl2ZSB2YWx1ZS4gIEZvciBzaW1wbGljaXR5LCB3ZSBsdW1wIHRoZSB0
d28KLSAgLy8gZXJyb3IgY2FzZXMgdG9nZXRoZXIuCi0gIGlmIChzaXplIDwgMCB8fCBzaXplID49
IGtCdWZmZXJTaXplKSB7Ci0gICAgcmV0dXJuIFN0cmluZygiPGZvcm1hdHRpbmcgZXJyb3Igb3Ig
YnVmZmVyIGV4Y2VlZGVkPiIpOwotICB9IGVsc2UgewotICAgIHJldHVybiBTdHJpbmcoYnVmZmVy
LCBzaXplKTsKLSAgfQorLy8gRm9ybWF0cyBhIGJ5dGUgYXMgIiUwMlgiLgorc3RkOjpzdHJpbmcg
U3RyaW5nOjpGb3JtYXRCeXRlKHVuc2lnbmVkIGNoYXIgdmFsdWUpIHsKKyAgc3RkOjpzdHJpbmdz
dHJlYW0gc3M7CisgIHNzIDw8IHN0ZDo6c2V0ZmlsbCgnMCcpIDw8IHN0ZDo6c2V0dygyKSA8PCBz
dGQ6OmhleCA8PCBzdGQ6OnVwcGVyY2FzZQorICAgICA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBp
bnQ+KHZhbHVlKTsKKyAgcmV0dXJuIHNzLnN0cigpOwogfQogCi0vLyBDb252ZXJ0cyB0aGUgYnVm
ZmVyIGluIGEgU3RyU3RyZWFtIHRvIGEgU3RyaW5nLCBjb252ZXJ0aW5nIE5VTAorLy8gQ29udmVy
dHMgdGhlIGJ1ZmZlciBpbiBhIHN0cmluZ3N0cmVhbSB0byBhbiBzdGQ6OnN0cmluZywgY29udmVy
dGluZyBOVUwKIC8vIGJ5dGVzIHRvICJcXDAiIGFsb25nIHRoZSB3YXkuCi1TdHJpbmcgU3RyU3Ry
ZWFtVG9TdHJpbmcoU3RyU3RyZWFtKiBzcykgeworc3RkOjpzdHJpbmcgU3RyaW5nU3RyZWFtVG9T
dHJpbmcoOjpzdGQ6OnN0cmluZ3N0cmVhbSogc3MpIHsKICAgY29uc3QgOjpzdGQ6OnN0cmluZyYg
c3RyID0gc3MtPnN0cigpOwogICBjb25zdCBjaGFyKiBjb25zdCBzdGFydCA9IHN0ci5jX3N0cigp
OwogICBjb25zdCBjaGFyKiBjb25zdCBlbmQgPSBzdGFydCArIHN0ci5sZW5ndGgoKTsKIAotICAv
LyBXZSBuZWVkIHRvIHVzZSBhIGhlbHBlciBTdHJTdHJlYW0gdG8gZG8gdGhpcyB0cmFuc2Zvcm1h
dGlvbgotICAvLyBiZWNhdXNlIFN0cmluZyBkb2Vzbid0IHN1cHBvcnQgcHVzaF9iYWNrKCkuCi0g
IFN0clN0cmVhbSBoZWxwZXI7CisgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKKyAgcmVzdWx0LnJlc2Vy
dmUoMiAqIChlbmQgLSBzdGFydCkpOwogICBmb3IgKGNvbnN0IGNoYXIqIGNoID0gc3RhcnQ7IGNo
ICE9IGVuZDsgKytjaCkgewogICAgIGlmICgqY2ggPT0gJ1wwJykgewotICAgICAgaGVscGVyIDw8
ICJcXDAiOyAgLy8gUmVwbGFjZXMgTlVMIHdpdGggIlxcMCI7CisgICAgICByZXN1bHQgKz0gIlxc
MCI7ICAvLyBSZXBsYWNlcyBOVUwgd2l0aCAiXFwwIjsKICAgICB9IGVsc2UgewotICAgICAgaGVs
cGVyLnB1dCgqY2gpOworICAgICAgcmVzdWx0ICs9ICpjaDsKICAgICB9CiAgIH0KIAotICByZXR1
cm4gU3RyaW5nKGhlbHBlci5zdHIoKS5jX3N0cigpKTsKKyAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
Ly8gQXBwZW5kcyB0aGUgdXNlci1zdXBwbGllZCBtZXNzYWdlIHRvIHRoZSBHb29nbGUtVGVzdC1n
ZW5lcmF0ZWQgbWVzc2FnZS4KLVN0cmluZyBBcHBlbmRVc2VyTWVzc2FnZShjb25zdCBTdHJpbmcm
IGd0ZXN0X21zZywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNZXNzYWdlJiB1c2Vy
X21zZykgeworc3RkOjpzdHJpbmcgQXBwZW5kVXNlck1lc3NhZ2UoY29uc3Qgc3RkOjpzdHJpbmcm
IGd0ZXN0X21zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1lc3NhZ2Um
IHVzZXJfbXNnKSB7CiAgIC8vIEFwcGVuZHMgdGhlIHVzZXIgbWVzc2FnZSBpZiBpdCdzIG5vbi1l
bXB0eS4KLSAgY29uc3QgU3RyaW5nIHVzZXJfbXNnX3N0cmluZyA9IHVzZXJfbXNnLkdldFN0cmlu
ZygpOworICBjb25zdCBzdGQ6OnN0cmluZyB1c2VyX21zZ19zdHJpbmcgPSB1c2VyX21zZy5HZXRT
dHJpbmcoKTsKICAgaWYgKHVzZXJfbXNnX3N0cmluZy5lbXB0eSgpKSB7CiAgICAgcmV0dXJuIGd0
ZXN0X21zZzsKICAgfQogCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgZ3Rlc3RfbXNnIDw8ICJc
biIgPDwgdXNlcl9tc2dfc3RyaW5nOwotCi0gIHJldHVybiBtc2cuR2V0U3RyaW5nKCk7CisgIHJl
dHVybiBndGVzdF9tc2cgKyAiXG4iICsgdXNlcl9tc2dfc3RyaW5nOwogfQogCiB9ICAvLyBuYW1l
c3BhY2UgaW50ZXJuYWwKQEAgLTE4MzIsOCArMjA5OSw5IEBAIHZvaWQgVGVzdFJlc3VsdDo6QWRk
VGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsK
IC8vIEFkZHMgYSB0ZXN0IHByb3BlcnR5IHRvIHRoZSBsaXN0LiBJZiBhIHByb3BlcnR5IHdpdGgg
dGhlIHNhbWUga2V5IGFzIHRoZQogLy8gc3VwcGxpZWQgcHJvcGVydHkgaXMgYWxyZWFkeSByZXBy
ZXNlbnRlZCwgdGhlIHZhbHVlIG9mIHRoaXMgdGVzdF9wcm9wZXJ0eQogLy8gcmVwbGFjZXMgdGhl
IG9sZCB2YWx1ZSBmb3IgdGhhdCBrZXkuCi12b2lkIFRlc3RSZXN1bHQ6OlJlY29yZFByb3BlcnR5
KGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgewotICBpZiAoIVZhbGlkYXRlVGVz
dFByb3BlcnR5KHRlc3RfcHJvcGVydHkpKSB7Cit2b2lkIFRlc3RSZXN1bHQ6OlJlY29yZFByb3Bl
cnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiB4bWxfZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5KSB7CisgIGlmICgh
VmFsaWRhdGVUZXN0UHJvcGVydHkoeG1sX2VsZW1lbnQsIHRlc3RfcHJvcGVydHkpKSB7CiAgICAg
cmV0dXJuOwogICB9CiAgIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmdGVzdF9wcm9wZXJpdGVz
X211dGV4Xyk7CkBAIC0xODQ3LDIxICsyMTE1LDkwIEBAIHZvaWQgVGVzdFJlc3VsdDo6UmVjb3Jk
UHJvcGVydHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5KSB7CiAgIHByb3BlcnR5
X3dpdGhfbWF0Y2hpbmdfa2V5LT5TZXRWYWx1ZSh0ZXN0X3Byb3BlcnR5LnZhbHVlKCkpOwogfQog
Ci0vLyBBZGRzIGEgZmFpbHVyZSBpZiB0aGUga2V5IGlzIGEgcmVzZXJ2ZWQgYXR0cmlidXRlIG9m
IEdvb2dsZSBUZXN0Ci0vLyB0ZXN0Y2FzZSB0YWdzLiAgUmV0dXJucyB0cnVlIGlmIHRoZSBwcm9w
ZXJ0eSBpcyB2YWxpZC4KLWJvb2wgVGVzdFJlc3VsdDo6VmFsaWRhdGVUZXN0UHJvcGVydHkoY29u
c3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5KSB7Ci0gIGludGVybmFsOjpTdHJpbmcga2V5
KHRlc3RfcHJvcGVydHkua2V5KCkpOwotICBpZiAoa2V5ID09ICJuYW1lIiB8fCBrZXkgPT0gInN0
YXR1cyIgfHwga2V5ID09ICJ0aW1lIiB8fCBrZXkgPT0gImNsYXNzbmFtZSIpIHsKLSAgICBBRERf
RkFJTFVSRSgpCi0gICAgICAgIDw8ICJSZXNlcnZlZCBrZXkgdXNlZCBpbiBSZWNvcmRQcm9wZXJ0
eSgpOiAiCi0gICAgICAgIDw8IGtleQotICAgICAgICA8PCAiICgnbmFtZScsICdzdGF0dXMnLCAn
dGltZScsIGFuZCAnY2xhc3NuYW1lJyBhcmUgcmVzZXJ2ZWQgYnkgIgotICAgICAgICA8PCBHVEVT
VF9OQU1FXyA8PCAiKSI7CisvLyBUaGUgbGlzdCBvZiByZXNlcnZlZCBhdHRyaWJ1dGVzIHVzZWQg
aW4gdGhlIDx0ZXN0c3VpdGVzPiBlbGVtZW50IG9mIFhNTAorLy8gb3V0cHV0Lgorc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnN0IGtSZXNlcnZlZFRlc3RTdWl0ZXNBdHRyaWJ1dGVzW10gPSB7CisgICJk
aXNhYmxlZCIsCisgICJlcnJvcnMiLAorICAiZmFpbHVyZXMiLAorICAibmFtZSIsCisgICJyYW5k
b21fc2VlZCIsCisgICJ0ZXN0cyIsCisgICJ0aW1lIiwKKyAgInRpbWVzdGFtcCIKK307CisKKy8v
IFRoZSBsaXN0IG9mIHJlc2VydmVkIGF0dHJpYnV0ZXMgdXNlZCBpbiB0aGUgPHRlc3RzdWl0ZT4g
ZWxlbWVudCBvZiBYTUwKKy8vIG91dHB1dC4KK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBrUmVz
ZXJ2ZWRUZXN0U3VpdGVBdHRyaWJ1dGVzW10gPSB7CisgICJkaXNhYmxlZCIsCisgICJlcnJvcnMi
LAorICAiZmFpbHVyZXMiLAorICAibmFtZSIsCisgICJ0ZXN0cyIsCisgICJ0aW1lIgorfTsKKwor
Ly8gVGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgYXR0cmlidXRlcyB1c2VkIGluIHRoZSA8dGVzdGNhc2U+
IGVsZW1lbnQgb2YgWE1MIG91dHB1dC4KK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBrUmVzZXJ2
ZWRUZXN0Q2FzZUF0dHJpYnV0ZXNbXSA9IHsKKyAgICAiY2xhc3NuYW1lIiwgICJuYW1lIiwgICAg
ICAgICJzdGF0dXMiLCAidGltZSIsCisgICAgInR5cGVfcGFyYW0iLCAidmFsdWVfcGFyYW0iLCAi
ZmlsZSIsICAgImxpbmUifTsKKwordGVtcGxhdGUgPGludCBrU2l6ZT4KK3N0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiBBcnJheUFzVmVjdG9yKGNvbnN0IGNoYXIqIGNvbnN0ICgmYXJyYXkpW2tTaXpl
XSkgeworICByZXR1cm4gc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KGFycmF5LCBhcnJheSArIGtT
aXplKTsKK30KKworc3RhdGljIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRSZXNlcnZlZEF0
dHJpYnV0ZXNGb3JFbGVtZW50KAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB4bWxfZWxlbWVudCkg
eworICBpZiAoeG1sX2VsZW1lbnQgPT0gInRlc3RzdWl0ZXMiKSB7CisgICAgcmV0dXJuIEFycmF5
QXNWZWN0b3Ioa1Jlc2VydmVkVGVzdFN1aXRlc0F0dHJpYnV0ZXMpOworICB9IGVsc2UgaWYgKHht
bF9lbGVtZW50ID09ICJ0ZXN0c3VpdGUiKSB7CisgICAgcmV0dXJuIEFycmF5QXNWZWN0b3Ioa1Jl
c2VydmVkVGVzdFN1aXRlQXR0cmlidXRlcyk7CisgIH0gZWxzZSBpZiAoeG1sX2VsZW1lbnQgPT0g
InRlc3RjYXNlIikgeworICAgIHJldHVybiBBcnJheUFzVmVjdG9yKGtSZXNlcnZlZFRlc3RDYXNl
QXR0cmlidXRlcyk7CisgIH0gZWxzZSB7CisgICAgR1RFU1RfQ0hFQ0tfKGZhbHNlKSA8PCAiVW5y
ZWNvZ25pemVkIHhtbF9lbGVtZW50IHByb3ZpZGVkOiAiIDw8IHhtbF9lbGVtZW50OworICB9Cisg
IC8vIFRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBidXQgc29tZSBjb21waWxlcnMgbWF5IG5vdCBy
ZWFsaXplcyB0aGF0LgorICByZXR1cm4gc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KCk7Cit9CisK
K3N0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRXb3JkTGlzdChjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4mIHdvcmRzKSB7CisgIE1lc3NhZ2Ugd29yZF9saXN0OworICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHdvcmRzLnNpemUoKTsgKytpKSB7CisgICAgaWYgKGkgPiAwICYmIHdvcmRzLnNp
emUoKSA+IDIpIHsKKyAgICAgIHdvcmRfbGlzdCA8PCAiLCAiOworICAgIH0KKyAgICBpZiAoaSA9
PSB3b3Jkcy5zaXplKCkgLSAxKSB7CisgICAgICB3b3JkX2xpc3QgPDwgImFuZCAiOworICAgIH0K
KyAgICB3b3JkX2xpc3QgPDwgIiciIDw8IHdvcmRzW2ldIDw8ICInIjsKKyAgfQorICByZXR1cm4g
d29yZF9saXN0LkdldFN0cmluZygpOworfQorCitzdGF0aWMgYm9vbCBWYWxpZGF0ZVRlc3RQcm9w
ZXJ0eU5hbWUoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHByb3BlcnR5X25hbWUsCisgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiByZXNlcnZlZF9uYW1lcykgeworICBpZiAoc3Rk
OjpmaW5kKHJlc2VydmVkX25hbWVzLmJlZ2luKCksIHJlc2VydmVkX25hbWVzLmVuZCgpLCBwcm9w
ZXJ0eV9uYW1lKSAhPQorICAgICAgICAgIHJlc2VydmVkX25hbWVzLmVuZCgpKSB7CisgICAgQURE
X0ZBSUxVUkUoKSA8PCAiUmVzZXJ2ZWQga2V5IHVzZWQgaW4gUmVjb3JkUHJvcGVydHkoKTogIiA8
PCBwcm9wZXJ0eV9uYW1lCisgICAgICAgICAgICAgICAgICA8PCAiICgiIDw8IEZvcm1hdFdvcmRM
aXN0KHJlc2VydmVkX25hbWVzKQorICAgICAgICAgICAgICAgICAgPDwgIiBhcmUgcmVzZXJ2ZWQg
YnkgIiA8PCBHVEVTVF9OQU1FXyA8PCAiKSI7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAgIHJl
dHVybiB0cnVlOwogfQogCisvLyBBZGRzIGEgZmFpbHVyZSBpZiB0aGUga2V5IGlzIGEgcmVzZXJ2
ZWQgYXR0cmlidXRlIG9mIHRoZSBlbGVtZW50IG5hbWVkCisvLyB4bWxfZWxlbWVudC4gIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgcHJvcGVydHkgaXMgdmFsaWQuCitib29sIFRlc3RSZXN1bHQ6OlZhbGlk
YXRlVGVzdFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiB4bWxfZWxlbWVudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3By
b3BlcnR5KSB7CisgIHJldHVybiBWYWxpZGF0ZVRlc3RQcm9wZXJ0eU5hbWUodGVzdF9wcm9wZXJ0
eS5rZXkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRSZXNlcnZlZEF0
dHJpYnV0ZXNGb3JFbGVtZW50KHhtbF9lbGVtZW50KSk7Cit9CisKIC8vIENsZWFycyB0aGUgb2Jq
ZWN0Lgogdm9pZCBUZXN0UmVzdWx0OjpDbGVhcigpIHsKICAgdGVzdF9wYXJ0X3Jlc3VsdHNfLmNs
ZWFyKCk7CkBAIC0xOTE0LDE0ICsyMjUxLDE1IEBAIGludCBUZXN0UmVzdWx0Ojp0ZXN0X3Byb3Bl
cnR5X2NvdW50KCkgY29uc3QgewogCiAvLyBDcmVhdGVzIGEgVGVzdCBvYmplY3QuCiAKLS8vIFRo
ZSBjJ3RvciBzYXZlcyB0aGUgdmFsdWVzIG9mIGFsbCBHb29nbGUgVGVzdCBmbGFncy4KKy8vIFRo
ZSBjJ3RvciBzYXZlcyB0aGUgc3RhdGVzIG9mIGFsbCBmbGFncy4KIFRlc3Q6OlRlc3QoKQotICAg
IDogZ3Rlc3RfZmxhZ19zYXZlcl8obmV3IGludGVybmFsOjpHVGVzdEZsYWdTYXZlcikgeworICAg
IDogZ3Rlc3RfZmxhZ19zYXZlcl8obmV3IEdURVNUX0ZMQUdfU0FWRVJfKSB7CiB9CiAKLS8vIFRo
ZSBkJ3RvciByZXN0b3JlcyB0aGUgdmFsdWVzIG9mIGFsbCBHb29nbGUgVGVzdCBmbGFncy4KKy8v
IFRoZSBkJ3RvciByZXN0b3JlcyB0aGUgc3RhdGVzIG9mIGFsbCBmbGFncy4gIFRoZSBhY3R1YWwg
d29yayBpcworLy8gZG9uZSBieSB0aGUgZCd0b3Igb2YgdGhlIGd0ZXN0X2ZsYWdfc2F2ZXJfIGZp
ZWxkLCBhbmQgdGh1cyBub3QKKy8vIHZpc2libGUgaGVyZS4KIFRlc3Q6On5UZXN0KCkgewotICBk
ZWxldGUgZ3Rlc3RfZmxhZ19zYXZlcl87CiB9CiAKIC8vIFNldHMgdXAgdGhlIHRlc3QgZml4dHVy
ZS4KQEAgLTE5MzcsMTIgKzIyNzUsMTIgQEAgdm9pZCBUZXN0OjpUZWFyRG93bigpIHsKIH0KIAog
Ly8gQWxsb3dzIHVzZXIgc3VwcGxpZWQga2V5IHZhbHVlIHBhaXJzIHRvIGJlIHJlY29yZGVkIGZv
ciBsYXRlciBvdXRwdXQuCi12b2lkIFRlc3Q6OlJlY29yZFByb3BlcnR5KGNvbnN0IGNoYXIqIGtl
eSwgY29uc3QgY2hhciogdmFsdWUpIHsKLSAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPlJlY29y
ZFByb3BlcnR5Rm9yQ3VycmVudFRlc3Qoa2V5LCB2YWx1ZSk7Cit2b2lkIFRlc3Q6OlJlY29yZFBy
b3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkg
eworICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+UmVjb3JkUHJvcGVydHkoa2V5LCB2YWx1ZSk7
CiB9CiAKIC8vIEFsbG93cyB1c2VyIHN1cHBsaWVkIGtleSB2YWx1ZSBwYWlycyB0byBiZSByZWNv
cmRlZCBmb3IgbGF0ZXIgb3V0cHV0Lgotdm9pZCBUZXN0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBj
aGFyKiBrZXksIGludCB2YWx1ZSkgewordm9pZCBUZXN0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBz
dGQ6OnN0cmluZyYga2V5LCBpbnQgdmFsdWUpIHsKICAgTWVzc2FnZSB2YWx1ZV9tZXNzYWdlOwog
ICB2YWx1ZV9tZXNzYWdlIDw8IHZhbHVlOwogICBSZWNvcmRQcm9wZXJ0eShrZXksIHZhbHVlX21l
c3NhZ2UuR2V0U3RyaW5nKCkuY19zdHIoKSk7CkBAIC0xOTUxLDcgKzIyODksNyBAQCB2b2lkIFRl
c3Q6OlJlY29yZFByb3BlcnR5KGNvbnN0IGNoYXIqIGtleSwgaW50IHZhbHVlKSB7CiBuYW1lc3Bh
Y2UgaW50ZXJuYWwgewogCiB2b2lkIFJlcG9ydEZhaWx1cmVJblVua25vd25Mb2NhdGlvbihUZXN0
UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsKICAgLy8gVGhpcyBm
dW5jdGlvbiBpcyBhIGZyaWVuZCBvZiBVbml0VGVzdCBhbmQgYXMgc3VjaCBoYXMgYWNjZXNzIHRv
CiAgIC8vIEFkZFRlc3RQYXJ0UmVzdWx0LgogICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+QWRk
VGVzdFBhcnRSZXN1bHQoCkBAIC0xOTU5LDI3ICsyMjk3LDExIEBAIHZvaWQgUmVwb3J0RmFpbHVy
ZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAogICAg
ICAgTlVMTCwgIC8vIE5vIGluZm8gYWJvdXQgdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRoZSBleGNl
cHRpb24gb2NjdXJyZWQuCiAgICAgICAtMSwgICAgLy8gV2UgaGF2ZSBubyBpbmZvIG9uIHdoaWNo
IGxpbmUgY2F1c2VkIHRoZSBleGNlcHRpb24uCiAgICAgICBtZXNzYWdlLAotICAgICAgU3RyaW5n
KCkpOyAgLy8gTm8gc3RhY2sgdHJhY2UsIGVpdGhlci4KKyAgICAgICIiKTsgICAvLyBObyBzdGFj
ayB0cmFjZSwgZWl0aGVyLgogfQogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAotI2lmIEdU
RVNUX09TX1dJTkRPV1MKLS8vIFdlIGFyZSBvbiBXaW5kb3dzLgotCi0vLyBBZGRzIGFuICJleGNl
cHRpb24gdGhyb3duIiBmYXRhbCBmYWlsdXJlIHRvIHRoZSBjdXJyZW50IHRlc3QuCi1zdGF0aWMg
dm9pZCBBZGRFeGNlcHRpb25UaHJvd25GYWlsdXJlKERXT1JEIGV4Y2VwdGlvbl9jb2RlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBsb2NhdGlvbikg
ewotICBNZXNzYWdlIG1lc3NhZ2U7Ci0gIG1lc3NhZ2UgPDwgIkV4Y2VwdGlvbiB0aHJvd24gd2l0
aCBjb2RlIDB4IiA8PCBzdGQ6OnNldGJhc2UoMTYpIDw8Ci0gICAgZXhjZXB0aW9uX2NvZGUgPDwg
c3RkOjpzZXRiYXNlKDEwKSA8PCAiIGluICIgPDwgbG9jYXRpb24gPDwgIi4iOwotCi0gIGludGVy
bmFsOjpSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oVGVzdFBhcnRSZXN1bHQ6OmtGYXRh
bEZhaWx1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVz
c2FnZS5HZXRTdHJpbmcoKSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCiAv
LyBHb29nbGUgVGVzdCByZXF1aXJlcyBhbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIHRv
IHVzZSB0aGUgc2FtZSB0ZXN0CiAvLyBmaXh0dXJlIGNsYXNzLiAgVGhpcyBmdW5jdGlvbiBjaGVj
a3MgaWYgdGhlIGN1cnJlbnQgdGVzdCBoYXMgdGhlCiAvLyBzYW1lIGZpeHR1cmUgY2xhc3MgYXMg
dGhlIGZpcnN0IHRlc3QgaW4gdGhlIGN1cnJlbnQgdGVzdCBjYXNlLiAgSWYKQEAgLTE5OTAsMTUg
KzIzMTIsMTMgQEAgYm9vbCBUZXN0OjpIYXNTYW1lRml4dHVyZUNsYXNzKCkgewogICBjb25zdCBU
ZXN0Q2FzZSogY29uc3QgdGVzdF9jYXNlID0gaW1wbC0+Y3VycmVudF90ZXN0X2Nhc2UoKTsKIAog
ICAvLyBJbmZvIGFib3V0IHRoZSBmaXJzdCB0ZXN0IGluIHRoZSBjdXJyZW50IHRlc3QgY2FzZS4K
LSAgY29uc3QgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbCogY29uc3QgZmlyc3RfdGVzdF9pbmZvID0K
LSAgICAgIHRlc3RfY2FzZS0+dGVzdF9pbmZvX2xpc3QoKVswXS0+aW1wbCgpOwotICBjb25zdCBp
bnRlcm5hbDo6VHlwZUlkIGZpcnN0X2ZpeHR1cmVfaWQgPSBmaXJzdF90ZXN0X2luZm8tPmZpeHR1
cmVfY2xhc3NfaWQoKTsKKyAgY29uc3QgVGVzdEluZm8qIGNvbnN0IGZpcnN0X3Rlc3RfaW5mbyA9
IHRlc3RfY2FzZS0+dGVzdF9pbmZvX2xpc3QoKVswXTsKKyAgY29uc3QgaW50ZXJuYWw6OlR5cGVJ
ZCBmaXJzdF9maXh0dXJlX2lkID0gZmlyc3RfdGVzdF9pbmZvLT5maXh0dXJlX2NsYXNzX2lkXzsK
ICAgY29uc3QgY2hhciogY29uc3QgZmlyc3RfdGVzdF9uYW1lID0gZmlyc3RfdGVzdF9pbmZvLT5u
YW1lKCk7CiAKICAgLy8gSW5mbyBhYm91dCB0aGUgY3VycmVudCB0ZXN0LgotICBjb25zdCBpbnRl
cm5hbDo6VGVzdEluZm9JbXBsKiBjb25zdCB0aGlzX3Rlc3RfaW5mbyA9Ci0gICAgICBpbXBsLT5j
dXJyZW50X3Rlc3RfaW5mbygpLT5pbXBsKCk7Ci0gIGNvbnN0IGludGVybmFsOjpUeXBlSWQgdGhp
c19maXh0dXJlX2lkID0gdGhpc190ZXN0X2luZm8tPmZpeHR1cmVfY2xhc3NfaWQoKTsKKyAgY29u
c3QgVGVzdEluZm8qIGNvbnN0IHRoaXNfdGVzdF9pbmZvID0gaW1wbC0+Y3VycmVudF90ZXN0X2lu
Zm8oKTsKKyAgY29uc3QgaW50ZXJuYWw6OlR5cGVJZCB0aGlzX2ZpeHR1cmVfaWQgPSB0aGlzX3Rl
c3RfaW5mby0+Zml4dHVyZV9jbGFzc19pZF87CiAgIGNvbnN0IGNoYXIqIGNvbnN0IHRoaXNfdGVz
dF9uYW1lID0gdGhpc190ZXN0X2luZm8tPm5hbWUoKTsKIAogICBpZiAodGhpc19maXh0dXJlX2lk
ICE9IGZpcnN0X2ZpeHR1cmVfaWQpIHsKQEAgLTIwMDgsOCArMjMyOCw4IEBAIGJvb2wgVGVzdDo6
SGFzU2FtZUZpeHR1cmVDbGFzcygpIHsKICAgICBjb25zdCBib29sIHRoaXNfaXNfVEVTVCA9IHRo
aXNfZml4dHVyZV9pZCA9PSBpbnRlcm5hbDo6R2V0VGVzdFR5cGVJZCgpOwogCiAgICAgaWYgKGZp
cnN0X2lzX1RFU1QgfHwgdGhpc19pc19URVNUKSB7Ci0gICAgICAvLyBUaGUgdXNlciBtaXhlZCBU
RVNUIGFuZCBURVNUX0YgaW4gdGhpcyB0ZXN0IGNhc2UgLSB3ZSdsbCB0ZWxsCi0gICAgICAvLyBo
aW0vaGVyIGhvdyB0byBmaXggaXQuCisgICAgICAvLyBCb3RoIFRFU1QgYW5kIFRFU1RfRiBhcHBl
YXIgaW4gc2FtZSB0ZXN0IGNhc2UsIHdoaWNoIGlzIGluY29ycmVjdC4KKyAgICAgIC8vIFRlbGwg
dGhlIHVzZXIgaG93IHRvIGZpeCB0aGlzLgogCiAgICAgICAvLyBHZXRzIHRoZSBuYW1lIG9mIHRo
ZSBURVNUIGFuZCB0aGUgbmFtZSBvZiB0aGUgVEVTVF9GLiAgTm90ZQogICAgICAgLy8gdGhhdCBm
aXJzdF9pc19URVNUIGFuZCB0aGlzX2lzX1RFU1QgY2Fubm90IGJvdGggYmUgdHJ1ZSwgYXMKQEAg
LTIwMjksOCArMjM0OSw4IEBAIGJvb2wgVGVzdDo6SGFzU2FtZUZpeHR1cmVDbGFzcygpIHsKICAg
ICAgICAgICA8PCAid2FudCB0byBjaGFuZ2UgdGhlIFRFU1QgdG8gVEVTVF9GIG9yIG1vdmUgaXQg
dG8gYW5vdGhlciB0ZXN0XG4iCiAgICAgICAgICAgPDwgImNhc2UuIjsKICAgICB9IGVsc2Ugewot
ICAgICAgLy8gVGhlIHVzZXIgZGVmaW5lZCB0d28gZml4dHVyZSBjbGFzc2VzIHdpdGggdGhlIHNh
bWUgbmFtZSBpbgotICAgICAgLy8gdHdvIG5hbWVzcGFjZXMgLSB3ZSdsbCB0ZWxsIGhpbS9oZXIg
aG93IHRvIGZpeCBpdC4KKyAgICAgIC8vIFR3byBmaXh0dXJlIGNsYXNzZXMgd2l0aCB0aGUgc2Ft
ZSBuYW1lIGFwcGVhciBpbiB0d28gZGlmZmVyZW50CisgICAgICAvLyBuYW1lc3BhY2VzLCB3aGlj
aCBpcyBub3QgYWxsb3dlZC4gVGVsbCB0aGUgdXNlciBob3cgdG8gZml4IHRoaXMuCiAgICAgICBB
RERfRkFJTFVSRSgpCiAgICAgICAgICAgPDwgIkFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNh
c2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlXG4iCiAgICAgICAgICAgPDwgImNsYXNz
LiAgSG93ZXZlciwgaW4gdGVzdCBjYXNlICIKQEAgLTIwNDgsNjIgKzIzNjgsMTY0IEBAIGJvb2wg
VGVzdDo6SGFzU2FtZUZpeHR1cmVDbGFzcygpIHsKICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIFJ1
bnMgdGhlIHRlc3QgYW5kIHVwZGF0ZXMgdGhlIHRlc3QgcmVzdWx0Lgotdm9pZCBUZXN0OjpSdW4o
KSB7Ci0gIGlmICghSGFzU2FtZUZpeHR1cmVDbGFzcygpKSByZXR1cm47Ci0KLSAgaW50ZXJuYWw6
OlVuaXRUZXN0SW1wbCogY29uc3QgaW1wbCA9IGludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKTsK
ICNpZiBHVEVTVF9IQVNfU0VICi0gIC8vIENhdGNoIFNFSC1zdHlsZSBleGNlcHRpb25zLgotICBp
bXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotICBfX3Ry
eSB7Ci0gICAgU2V0VXAoKTsKLSAgfSBfX2V4Y2VwdChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25z
OjpHVGVzdFNob3VsZFByb2Nlc3NTRUgoCi0gICAgICBHZXRFeGNlcHRpb25Db2RlKCkpKSB7Ci0g
ICAgQWRkRXhjZXB0aW9uVGhyb3duRmFpbHVyZShHZXRFeGNlcHRpb25Db2RlKCksICJTZXRVcCgp
Iik7Ci0gIH0KIAotICAvLyBXZSB3aWxsIHJ1biB0aGUgdGVzdCBvbmx5IGlmIFNldFVwKCkgaGFk
IG5vIGZhdGFsIGZhaWx1cmUuCi0gIGlmICghSGFzRmF0YWxGYWlsdXJlKCkpIHsKLSAgICBpbXBs
LT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotICAgIF9fdHJ5
IHsKLSAgICAgIFRlc3RCb2R5KCk7Ci0gICAgfSBfX2V4Y2VwdChpbnRlcm5hbDo6VW5pdFRlc3RP
cHRpb25zOjpHVGVzdFNob3VsZFByb2Nlc3NTRUgoCi0gICAgICAgIEdldEV4Y2VwdGlvbkNvZGUo
KSkpIHsKLSAgICAgIEFkZEV4Y2VwdGlvblRocm93bkZhaWx1cmUoR2V0RXhjZXB0aW9uQ29kZSgp
LCAidGhlIHRlc3QgYm9keSIpOwotICAgIH0KLSAgfQorLy8gQWRkcyBhbiAiZXhjZXB0aW9uIHRo
cm93biIgZmF0YWwgZmFpbHVyZSB0byB0aGUgY3VycmVudCB0ZXN0LiAgVGhpcworLy8gZnVuY3Rp
b24gcmV0dXJucyBpdHMgcmVzdWx0IHZpYSBhbiBvdXRwdXQgcGFyYW1ldGVyIHBvaW50ZXIgYmVj
YXVzZSBWQysrCisvLyBwcm9oaWJpdHMgY3JlYXRpb24gb2Ygb2JqZWN0cyB3aXRoIGRlc3RydWN0
b3JzIG9uIHN0YWNrIGluIGZ1bmN0aW9ucworLy8gdXNpbmcgX190cnkgKHNlZSBlcnJvciBDMjcx
MikuCitzdGF0aWMgc3RkOjpzdHJpbmcqIEZvcm1hdFNlaEV4Y2VwdGlvbk1lc3NhZ2UoRFdPUkQg
ZXhjZXB0aW9uX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogbG9jYXRpb24pIHsKKyAgTWVzc2FnZSBtZXNzYWdlOworICBtZXNz
YWdlIDw8ICJTRUggZXhjZXB0aW9uIHdpdGggY29kZSAweCIgPDwgc3RkOjpzZXRiYXNlKDE2KSA8
PAorICAgIGV4Y2VwdGlvbl9jb2RlIDw8IHN0ZDo6c2V0YmFzZSgxMCkgPDwgIiB0aHJvd24gaW4g
IiA8PCBsb2NhdGlvbiA8PCAiLiI7CiAKLSAgLy8gSG93ZXZlciwgd2Ugd2FudCB0byBjbGVhbiB1
cCBhcyBtdWNoIGFzIHBvc3NpYmxlLiAgSGVuY2Ugd2Ugd2lsbAotICAvLyBhbHdheXMgY2FsbCBU
ZWFyRG93bigpLCBldmVuIGlmIFNldFVwKCkgb3IgdGhlIHRlc3QgYm9keSBoYXMKLSAgLy8gZmFp
bGVkLgotICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgp
OworICByZXR1cm4gbmV3IHN0ZDo6c3RyaW5nKG1lc3NhZ2UuR2V0U3RyaW5nKCkpOworfQorCisj
ZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKKworbmFtZXNwYWNlIGludGVybmFsIHsKKworI2lmIEdU
RVNUX0hBU19FWENFUFRJT05TCisKKy8vIEFkZHMgYW4gImV4Y2VwdGlvbiB0aHJvd24iIGZhdGFs
IGZhaWx1cmUgdG8gdGhlIGN1cnJlbnQgdGVzdC4KK3N0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRD
eHhFeGNlcHRpb25NZXNzYWdlKGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbG9jYXRpb24pIHsK
KyAgTWVzc2FnZSBtZXNzYWdlOworICBpZiAoZGVzY3JpcHRpb24gIT0gTlVMTCkgeworICAgIG1l
c3NhZ2UgPDwgIkMrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlvbiBcIiIgPDwgZGVzY3JpcHRp
b24gPDwgIlwiIjsKKyAgfSBlbHNlIHsKKyAgICBtZXNzYWdlIDw8ICJVbmtub3duIEMrKyBleGNl
cHRpb24iOworICB9CisgIG1lc3NhZ2UgPDwgIiB0aHJvd24gaW4gIiA8PCBsb2NhdGlvbiA8PCAi
LiI7CisKKyAgcmV0dXJuIG1lc3NhZ2UuR2V0U3RyaW5nKCk7Cit9CisKK3N0YXRpYyBzdGQ6OnN0
cmluZyBQcmludFRlc3RQYXJ0UmVzdWx0VG9TdHJpbmcoCisgICAgY29uc3QgVGVzdFBhcnRSZXN1
bHQmIHRlc3RfcGFydF9yZXN1bHQpOworCitHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbjo6R29v
Z2xlVGVzdEZhaWx1cmVFeGNlcHRpb24oCisgICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIGZhaWx1
cmUpCisgICAgOiA6OnN0ZDo6cnVudGltZV9lcnJvcihQcmludFRlc3RQYXJ0UmVzdWx0VG9TdHJp
bmcoZmFpbHVyZSkuY19zdHIoKSkge30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9O
UworCisvLyBXZSBwdXQgdGhlc2UgaGVscGVyIGZ1bmN0aW9ucyBpbiB0aGUgaW50ZXJuYWwgbmFt
ZXNwYWNlIGFzIElCTSdzIHhsQworLy8gY29tcGlsZXIgcmVqZWN0cyB0aGUgY29kZSBpZiB0aGV5
IHdlcmUgZGVjbGFyZWQgc3RhdGljLgorCisvLyBSdW5zIHRoZSBnaXZlbiBtZXRob2QgYW5kIGhh
bmRsZXMgU0VIIGV4Y2VwdGlvbnMgaXQgdGhyb3dzLCB3aGVuCisvLyBTRUggaXMgc3VwcG9ydGVk
OyByZXR1cm5zIHRoZSAwLXZhbHVlIGZvciB0eXBlIFJlc3VsdCBpbiBjYXNlIG9mIGFuCisvLyBT
RUggZXhjZXB0aW9uLiAgKE1pY3Jvc29mdCBjb21waWxlcnMgY2Fubm90IGhhbmRsZSBTRUggYW5k
IEMrKworLy8gZXhjZXB0aW9ucyBpbiB0aGUgc2FtZSBmdW5jdGlvbi4gIFRoZXJlZm9yZSwgd2Ug
cHJvdmlkZSBhIHNlcGFyYXRlCisvLyB3cmFwcGVyIGZ1bmN0aW9uIGZvciBoYW5kbGluZyBTRUgg
ZXhjZXB0aW9ucy4pCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgdHlwZW5hbWUgUmVzdWx0PgorUmVzdWx0
IEhhbmRsZVNlaEV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAorICAgIFQqIG9iamVjdCwg
UmVzdWx0IChUOjoqbWV0aG9kKSgpLCBjb25zdCBjaGFyKiBsb2NhdGlvbikgeworI2lmIEdURVNU
X0hBU19TRUgKICAgX190cnkgewotICAgIFRlYXJEb3duKCk7Ci0gIH0gX19leGNlcHQoaW50ZXJu
YWw6OlVuaXRUZXN0T3B0aW9uczo6R1Rlc3RTaG91bGRQcm9jZXNzU0VIKAorICAgIHJldHVybiAo
b2JqZWN0LT4qbWV0aG9kKSgpOworICB9IF9fZXhjZXB0IChpbnRlcm5hbDo6VW5pdFRlc3RPcHRp
b25zOjpHVGVzdFNob3VsZFByb2Nlc3NTRUgoICAvLyBOT0xJTlQKICAgICAgIEdldEV4Y2VwdGlv
bkNvZGUoKSkpIHsKLSAgICBBZGRFeGNlcHRpb25UaHJvd25GYWlsdXJlKEdldEV4Y2VwdGlvbkNv
ZGUoKSwgIlRlYXJEb3duKCkiKTsKKyAgICAvLyBXZSBjcmVhdGUgdGhlIGV4Y2VwdGlvbiBtZXNz
YWdlIG9uIHRoZSBoZWFwIGJlY2F1c2UgVkMrKyBwcm9oaWJpdHMKKyAgICAvLyBjcmVhdGlvbiBv
ZiBvYmplY3RzIHdpdGggZGVzdHJ1Y3RvcnMgb24gc3RhY2sgaW4gZnVuY3Rpb25zIHVzaW5nIF9f
dHJ5CisgICAgLy8gKHNlZSBlcnJvciBDMjcxMikuCisgICAgc3RkOjpzdHJpbmcqIGV4Y2VwdGlv
bl9tZXNzYWdlID0gRm9ybWF0U2VoRXhjZXB0aW9uTWVzc2FnZSgKKyAgICAgICAgR2V0RXhjZXB0
aW9uQ29kZSgpLCBsb2NhdGlvbik7CisgICAgaW50ZXJuYWw6OlJlcG9ydEZhaWx1cmVJblVua25v
d25Mb2NhdGlvbihUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpleGNlcHRpb25fbWVzc2FnZSk7CisgICAg
ZGVsZXRlIGV4Y2VwdGlvbl9tZXNzYWdlOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZXN1bHQ+
KDApOwogICB9CisjZWxzZQorICAodm9pZClsb2NhdGlvbjsKKyAgcmV0dXJuIChvYmplY3QtPipt
ZXRob2QpKCk7CisjZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKK30KIAotI2Vsc2UgIC8vIFdlIGFy
ZSBvbiBhIGNvbXBpbGVyIG9yIHBsYXRmb3JtIHRoYXQgZG9lc24ndCBzdXBwb3J0IFNFSC4KLSAg
aW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgU2V0
VXAoKTsKKy8vIFJ1bnMgdGhlIGdpdmVuIG1ldGhvZCBhbmQgY2F0Y2hlcyBhbmQgcmVwb3J0cyBD
KysgYW5kL29yIFNFSC1zdHlsZQorLy8gZXhjZXB0aW9ucywgaWYgdGhleSBhcmUgc3VwcG9ydGVk
OyByZXR1cm5zIHRoZSAwLXZhbHVlIGZvciB0eXBlCisvLyBSZXN1bHQgaW4gY2FzZSBvZiBhbiBT
RUggZXhjZXB0aW9uLgordGVtcGxhdGUgPGNsYXNzIFQsIHR5cGVuYW1lIFJlc3VsdD4KK1Jlc3Vs
dCBIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAgICBUKiBvYmplY3QsIFJl
c3VsdCAoVDo6Km1ldGhvZCkoKSwgY29uc3QgY2hhciogbG9jYXRpb24pIHsKKyAgLy8gTk9URTog
VGhlIHVzZXIgY29kZSBjYW4gYWZmZWN0IHRoZSB3YXkgaW4gd2hpY2ggR29vZ2xlIFRlc3QgaGFu
ZGxlcworICAvLyBleGNlcHRpb25zIGJ5IHNldHRpbmcgR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRp
b25zKSwgYnV0IG9ubHkgYmVmb3JlCisgIC8vIFJVTl9BTExfVEVTVFMoKSBzdGFydHMuIEl0IGlz
IHRlY2huaWNhbGx5IHBvc3NpYmxlIHRvIGNoZWNrIHRoZSBmbGFnCisgIC8vIGFmdGVyIHRoZSBl
eGNlcHRpb24gaXMgY2F1Z2h0IGFuZCBlaXRoZXIgcmVwb3J0IG9yIHJlLXRocm93IHRoZQorICAv
LyBleGNlcHRpb24gYmFzZWQgb24gdGhlIGZsYWcncyB2YWx1ZToKKyAgLy8KKyAgLy8gdHJ5IHsK
KyAgLy8gICAvLyBQZXJmb3JtIHRoZSB0ZXN0IG1ldGhvZC4KKyAgLy8gfSBjYXRjaCAoLi4uKSB7
CisgIC8vICAgaWYgKEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykpCisgIC8vICAgICAvLyBS
ZXBvcnQgdGhlIGV4Y2VwdGlvbiBhcyBmYWlsdXJlLgorICAvLyAgIGVsc2UKKyAgLy8gICAgIHRo
cm93OyAgLy8gUmUtdGhyb3dzIHRoZSBvcmlnaW5hbCBleGNlcHRpb24uCisgIC8vIH0KKyAgLy8K
KyAgLy8gSG93ZXZlciwgdGhlIHB1cnBvc2Ugb2YgdGhpcyBmbGFnIGlzIHRvIGFsbG93IHRoZSBw
cm9ncmFtIHRvIGRyb3AgaW50bworICAvLyB0aGUgZGVidWdnZXIgd2hlbiB0aGUgZXhjZXB0aW9u
IGlzIHRocm93bi4gT24gbW9zdCBwbGF0Zm9ybXMsIG9uY2UgdGhlCisgIC8vIGNvbnRyb2wgZW50
ZXJzIHRoZSBjYXRjaCBibG9jaywgdGhlIGV4Y2VwdGlvbiBvcmlnaW4gaW5mb3JtYXRpb24gaXMK
KyAgLy8gbG9zdCBhbmQgdGhlIGRlYnVnZ2VyIHdpbGwgc3RvcCB0aGUgcHJvZ3JhbSBhdCB0aGUg
cG9pbnQgb2YgdGhlCisgIC8vIHJlLXRocm93IGluIHRoaXMgZnVuY3Rpb24gLS0gaW5zdGVhZCBv
ZiBhdCB0aGUgcG9pbnQgb2YgdGhlIG9yaWdpbmFsCisgIC8vIHRocm93IHN0YXRlbWVudCBpbiB0
aGUgY29kZSB1bmRlciB0ZXN0LiAgRm9yIHRoaXMgcmVhc29uLCB3ZSBwZXJmb3JtCisgIC8vIHRo
ZSBjaGVjayBlYXJseSwgc2FjcmlmaWNpbmcgdGhlIGFiaWxpdHkgdG8gYWZmZWN0IEdvb2dsZSBU
ZXN0J3MKKyAgLy8gZXhjZXB0aW9uIGhhbmRsaW5nIGluIHRoZSBtZXRob2Qgd2hlcmUgdGhlIGV4
Y2VwdGlvbiBpcyB0aHJvd24uCisgIGlmIChpbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCktPmNh
dGNoX2V4Y2VwdGlvbnMoKSkgeworI2lmIEdURVNUX0hBU19FWENFUFRJT05TCisgICAgdHJ5IHsK
KyAgICAgIHJldHVybiBIYW5kbGVTZWhFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZChvYmpl
Y3QsIG1ldGhvZCwgbG9jYXRpb24pOworICAgIH0gY2F0Y2ggKGNvbnN0IEFzc2VydGlvbkV4Y2Vw
dGlvbiYpIHsgIC8vIE5PTElOVAorICAgICAgLy8gVGhpcyBmYWlsdXJlIHdhcyByZXBvcnRlZCBh
bHJlYWR5LgorICAgIH0gY2F0Y2ggKGNvbnN0IGludGVybmFsOjpHb29nbGVUZXN0RmFpbHVyZUV4
Y2VwdGlvbiYpIHsgIC8vIE5PTElOVAorICAgICAgLy8gVGhpcyBleGNlcHRpb24gdHlwZSBjYW4g
b25seSBiZSB0aHJvd24gYnkgYSBmYWlsZWQgR29vZ2xlCisgICAgICAvLyBUZXN0IGFzc2VydGlv
biB3aXRoIHRoZSBpbnRlbnRpb24gb2YgbGV0dGluZyBhbm90aGVyIHRlc3RpbmcKKyAgICAgIC8v
IGZyYW1ld29yayBjYXRjaCBpdC4gIFRoZXJlZm9yZSB3ZSBqdXN0IHJlLXRocm93IGl0LgorICAg
ICAgdGhyb3c7CisgICAgfSBjYXRjaCAoY29uc3Qgc3RkOjpleGNlcHRpb24mIGUpIHsgIC8vIE5P
TElOVAorICAgICAgaW50ZXJuYWw6OlJlcG9ydEZhaWx1cmVJblVua25vd25Mb2NhdGlvbigKKyAg
ICAgICAgICBUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKKyAgICAgICAgICBGb3JtYXRD
eHhFeGNlcHRpb25NZXNzYWdlKGUud2hhdCgpLCBsb2NhdGlvbikpOworICAgIH0gY2F0Y2ggKC4u
LikgeyAgLy8gTk9MSU5UCisgICAgICBpbnRlcm5hbDo6UmVwb3J0RmFpbHVyZUluVW5rbm93bkxv
Y2F0aW9uKAorICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLAorICAgICAg
ICAgIEZvcm1hdEN4eEV4Y2VwdGlvbk1lc3NhZ2UoTlVMTCwgbG9jYXRpb24pKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlc3VsdD4oMCk7CisjZWxzZQorICAgIHJldHVybiBIYW5k
bGVTZWhFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZChvYmplY3QsIG1ldGhvZCwgbG9jYXRp
b24pOworI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUworICB9IGVsc2UgeworICAgIHJl
dHVybiAob2JqZWN0LT4qbWV0aG9kKSgpOworICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZSBpbnRl
cm5hbAogCisvLyBSdW5zIHRoZSB0ZXN0IGFuZCB1cGRhdGVzIHRoZSB0ZXN0IHJlc3VsdC4KK3Zv
aWQgVGVzdDo6UnVuKCkgeworICBpZiAoIUhhc1NhbWVGaXh0dXJlQ2xhc3MoKSkgcmV0dXJuOwor
CisgIGludGVybmFsOjpVbml0VGVzdEltcGwqIGNvbnN0IGltcGwgPSBpbnRlcm5hbDo6R2V0VW5p
dFRlc3RJbXBsKCk7CisgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmlu
Z0dUZXN0KCk7CisgIGludGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRl
ZCh0aGlzLCAmVGVzdDo6U2V0VXAsICJTZXRVcCgpIik7CiAgIC8vIFdlIHdpbGwgcnVuIHRoZSB0
ZXN0IG9ubHkgaWYgU2V0VXAoKSB3YXMgc3VjY2Vzc2Z1bC4KICAgaWYgKCFIYXNGYXRhbEZhaWx1
cmUoKSkgewogICAgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dU
ZXN0KCk7Ci0gICAgVGVzdEJvZHkoKTsKKyAgICBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0lu
TWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgICAgIHRoaXMsICZUZXN0OjpUZXN0Qm9keSwgInRoZSB0
ZXN0IGJvZHkiKTsKICAgfQogCiAgIC8vIEhvd2V2ZXIsIHdlIHdhbnQgdG8gY2xlYW4gdXAgYXMg
bXVjaCBhcyBwb3NzaWJsZS4gIEhlbmNlIHdlIHdpbGwKICAgLy8gYWx3YXlzIGNhbGwgVGVhckRv
d24oKSwgZXZlbiBpZiBTZXRVcCgpIG9yIHRoZSB0ZXN0IGJvZHkgaGFzCiAgIC8vIGZhaWxlZC4K
ICAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAg
VGVhckRvd24oKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAorICBpbnRlcm5hbDo6SGFuZGxl
RXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgICB0aGlzLCAmVGVzdDo6VGVhckRv
d24sICJUZWFyRG93bigpIik7CiB9CiAKLQogLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgY3VycmVu
dCB0ZXN0IGhhcyBhIGZhdGFsIGZhaWx1cmUuCiBib29sIFRlc3Q6Okhhc0ZhdGFsRmFpbHVyZSgp
IHsKICAgcmV0dXJuIGludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKS0+Y3VycmVudF90ZXN0X3Jl
c3VsdCgpLT5IYXNGYXRhbEZhaWx1cmUoKTsKQEAgLTIxMTgsMjIgKzI1NDAsMjggQEAgYm9vbCBU
ZXN0OjpIYXNOb25mYXRhbEZhaWx1cmUoKSB7CiAvLyBjbGFzcyBUZXN0SW5mbwogCiAvLyBDb25z
dHJ1Y3RzIGEgVGVzdEluZm8gb2JqZWN0LiBJdCBhc3N1bWVzIG93bmVyc2hpcCBvZiB0aGUgdGVz
dCBmYWN0b3J5Ci0vLyBvYmplY3QgdmlhIGltcGxfLgotVGVzdEluZm86OlRlc3RJbmZvKGNvbnN0
IGNoYXIqIGFfdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
YV9uYW1lLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfdGVzdF9jYXNlX2NvbW1l
bnQsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV9jb21tZW50LAorLy8gb2JqZWN0
LgorVGVzdEluZm86OlRlc3RJbmZvKGNvbnN0IHN0ZDo6c3RyaW5nJiBhX3Rlc3RfY2FzZV9uYW1l
LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBhX25hbWUsCisgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogYV90eXBlX3BhcmFtLAorICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGFfdmFsdWVfcGFyYW0sCisgICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6
OkNvZGVMb2NhdGlvbiBhX2NvZGVfbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgaW50ZXJu
YWw6OlR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkLAotICAgICAgICAgICAgICAgICAgIGludGVybmFs
OjpUZXN0RmFjdG9yeUJhc2UqIGZhY3RvcnkpIHsKLSAgaW1wbF8gPSBuZXcgaW50ZXJuYWw6OlRl
c3RJbmZvSW1wbCh0aGlzLCBhX3Rlc3RfY2FzZV9uYW1lLCBhX25hbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYV90ZXN0X2Nhc2VfY29tbWVudCwgYV9jb21tZW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeHR1cmVfY2xhc3NfaWQsIGZh
Y3RvcnkpOwotfQorICAgICAgICAgICAgICAgICAgIGludGVybmFsOjpUZXN0RmFjdG9yeUJhc2Uq
IGZhY3RvcnkpCisgICAgOiB0ZXN0X2Nhc2VfbmFtZV8oYV90ZXN0X2Nhc2VfbmFtZSksCisgICAg
ICBuYW1lXyhhX25hbWUpLAorICAgICAgdHlwZV9wYXJhbV8oYV90eXBlX3BhcmFtID8gbmV3IHN0
ZDo6c3RyaW5nKGFfdHlwZV9wYXJhbSkgOiBOVUxMKSwKKyAgICAgIHZhbHVlX3BhcmFtXyhhX3Zh
bHVlX3BhcmFtID8gbmV3IHN0ZDo6c3RyaW5nKGFfdmFsdWVfcGFyYW0pIDogTlVMTCksCisgICAg
ICBsb2NhdGlvbl8oYV9jb2RlX2xvY2F0aW9uKSwKKyAgICAgIGZpeHR1cmVfY2xhc3NfaWRfKGZp
eHR1cmVfY2xhc3NfaWQpLAorICAgICAgc2hvdWxkX3J1bl8oZmFsc2UpLAorICAgICAgaXNfZGlz
YWJsZWRfKGZhbHNlKSwKKyAgICAgIG1hdGNoZXNfZmlsdGVyXyhmYWxzZSksCisgICAgICBmYWN0
b3J5XyhmYWN0b3J5KSwKKyAgICAgIHJlc3VsdF8oKSB7fQogCiAvLyBEZXN0cnVjdHMgYSBUZXN0
SW5mbyBvYmplY3QuCi1UZXN0SW5mbzo6flRlc3RJbmZvKCkgewotICBkZWxldGUgaW1wbF87Ci19
CitUZXN0SW5mbzo6flRlc3RJbmZvKCkgeyBkZWxldGUgZmFjdG9yeV87IH0KIAogbmFtZXNwYWNl
IGludGVybmFsIHsKIApAQCAtMjE0NCwxMCArMjU3MiwxMSBAQCBuYW1lc3BhY2UgaW50ZXJuYWwg
ewogLy8KIC8vICAgdGVzdF9jYXNlX25hbWU6ICAgbmFtZSBvZiB0aGUgdGVzdCBjYXNlCiAvLyAg
IG5hbWU6ICAgICAgICAgICAgIG5hbWUgb2YgdGhlIHRlc3QKLS8vICAgdGVzdF9jYXNlX2NvbW1l
bnQ6IGEgY29tbWVudCBvbiB0aGUgdGVzdCBjYXNlIHRoYXQgd2lsbCBiZSBpbmNsdWRlZCBpbgot
Ly8gICAgICAgICAgICAgICAgICAgICAgdGhlIHRlc3Qgb3V0cHV0Ci0vLyAgIGNvbW1lbnQ6ICAg
ICAgICAgIGEgY29tbWVudCBvbiB0aGUgdGVzdCB0aGF0IHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhl
Ci0vLyAgICAgICAgICAgICAgICAgICAgIHRlc3Qgb3V0cHV0CisvLyAgIHR5cGVfcGFyYW06ICAg
ICAgIHRoZSBuYW1lIG9mIHRoZSB0ZXN0J3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYKKy8v
ICAgICAgICAgICAgICAgICAgICAgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhIHR5cGUtcGFyYW1l
dGVyaXplZCB0ZXN0LgorLy8gICB2YWx1ZV9wYXJhbTogICAgICB0ZXh0IHJlcHJlc2VudGF0aW9u
IG9mIHRoZSB0ZXN0J3MgdmFsdWUgcGFyYW1ldGVyLAorLy8gICAgICAgICAgICAgICAgICAgICBv
ciBOVUxMIGlmIHRoaXMgaXMgbm90IGEgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0LgorLy8gICBj
b2RlX2xvY2F0aW9uOiAgICBjb2RlIGxvY2F0aW9uIHdoZXJlIHRoZSB0ZXN0IGlzIGRlZmluZWQK
IC8vICAgZml4dHVyZV9jbGFzc19pZDogSUQgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcwogLy8g
ICBzZXRfdXBfdGM6ICAgICAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHNldHMgdXAg
dGhlIHRlc3QgY2FzZQogLy8gICB0ZWFyX2Rvd25fdGM6ICAgICBwb2ludGVyIHRvIHRoZSBmdW5j
dGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQpAQCAtMjE1NSwyMiArMjU4NCwyNCBA
QCBuYW1lc3BhY2UgaW50ZXJuYWwgewogLy8gICAgICAgICAgICAgICAgICAgICBUaGUgbmV3bHkg
Y3JlYXRlZCBUZXN0SW5mbyBpbnN0YW5jZSB3aWxsIGFzc3VtZQogLy8gICAgICAgICAgICAgICAg
ICAgICBvd25lcnNoaXAgb2YgdGhlIGZhY3Rvcnkgb2JqZWN0LgogVGVzdEluZm8qIE1ha2VBbmRS
ZWdpc3RlclRlc3RJbmZvKAotICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLCBjb25zdCBj
aGFyKiBuYW1lLAotICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9jb21tZW50LCBjb25zdCBjaGFy
KiBjb21tZW50LAorICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAorICAgIGNvbnN0IGNo
YXIqIG5hbWUsCisgICAgY29uc3QgY2hhciogdHlwZV9wYXJhbSwKKyAgICBjb25zdCBjaGFyKiB2
YWx1ZV9wYXJhbSwKKyAgICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbiwKICAgICBUeXBlSWQg
Zml4dHVyZV9jbGFzc19pZCwKICAgICBTZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCiAgICAg
VGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3RjLAogICAgIFRlc3RGYWN0b3J5QmFzZSog
ZmFjdG9yeSkgewogICBUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KLSAgICAgIG5ldyBUZXN0
SW5mbyh0ZXN0X2Nhc2VfbmFtZSwgbmFtZSwgdGVzdF9jYXNlX2NvbW1lbnQsIGNvbW1lbnQsCi0g
ICAgICAgICAgICAgICAgICAgZml4dHVyZV9jbGFzc19pZCwgZmFjdG9yeSk7CisgICAgICBuZXcg
VGVzdEluZm8odGVzdF9jYXNlX25hbWUsIG5hbWUsIHR5cGVfcGFyYW0sIHZhbHVlX3BhcmFtLAor
ICAgICAgICAgICAgICAgICAgIGNvZGVfbG9jYXRpb24sIGZpeHR1cmVfY2xhc3NfaWQsIGZhY3Rv
cnkpOwogICBHZXRVbml0VGVzdEltcGwoKS0+QWRkVGVzdEluZm8oc2V0X3VwX3RjLCB0ZWFyX2Rv
d25fdGMsIHRlc3RfaW5mbyk7CiAgIHJldHVybiB0ZXN0X2luZm87CiB9CiAKLSNpZiBHVEVTVF9I
QVNfUEFSQU1fVEVTVAogdm9pZCBSZXBvcnRJbnZhbGlkVGVzdENhc2VUeXBlKGNvbnN0IGNoYXIq
IHRlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGZpbGUsIGludCBsaW5lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29k
ZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24pIHsKICAgTWVzc2FnZSBlcnJvcnM7CiAgIGVycm9ycwog
ICAgICAgPDwgIkF0dGVtcHRlZCByZWRlZmluaXRpb24gb2YgdGVzdCBjYXNlICIgPDwgdGVzdF9j
YXNlX25hbWUgPDwgIi5cbiIKQEAgLTIxODIsNDggKzI2MTMsMTIgQEAgdm9pZCBSZXBvcnRJbnZh
bGlkVGVzdENhc2VUeXBlKGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAogICAgICAgPDwgInBy
b2JhYmx5IHJlbmFtZSBvbmUgb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRp
ZmZlcmVudFxuIgogICAgICAgPDwgInRlc3QgY2FzZXMuIjsKIAotICBmcHJpbnRmKHN0ZGVyciwg
IiVzICVzIiwgRm9ybWF0RmlsZUxvY2F0aW9uKGZpbGUsIGxpbmUpLmNfc3RyKCksCi0gICAgICAg
ICAgZXJyb3JzLkdldFN0cmluZygpLmNfc3RyKCkpOworICBHVEVTVF9MT0dfKEVSUk9SKSA8PCBG
b3JtYXRGaWxlTG9jYXRpb24oY29kZV9sb2NhdGlvbi5maWxlLmNfc3RyKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlX2xvY2F0aW9uLmxpbmUpCisgICAg
ICAgICAgICAgICAgICAgIDw8ICIgIiA8PCBlcnJvcnMuR2V0U3RyaW5nKCk7CiB9Ci0jZW5kaWYg
IC8vIEdURVNUX0hBU19QQVJBTV9URVNUCi0KIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogCi0v
LyBSZXR1cm5zIHRoZSB0ZXN0IGNhc2UgbmFtZS4KLWNvbnN0IGNoYXIqIFRlc3RJbmZvOjp0ZXN0
X2Nhc2VfbmFtZSgpIGNvbnN0IHsKLSAgcmV0dXJuIGltcGxfLT50ZXN0X2Nhc2VfbmFtZSgpOwot
fQotCi0vLyBSZXR1cm5zIHRoZSB0ZXN0IG5hbWUuCi1jb25zdCBjaGFyKiBUZXN0SW5mbzo6bmFt
ZSgpIGNvbnN0IHsKLSAgcmV0dXJuIGltcGxfLT5uYW1lKCk7Ci19Ci0KLS8vIFJldHVybnMgdGhl
IHRlc3QgY2FzZSBjb21tZW50LgotY29uc3QgY2hhciogVGVzdEluZm86OnRlc3RfY2FzZV9jb21t
ZW50KCkgY29uc3QgewotICByZXR1cm4gaW1wbF8tPnRlc3RfY2FzZV9jb21tZW50KCk7Ci19Ci0K
LS8vIFJldHVybnMgdGhlIHRlc3QgY29tbWVudC4KLWNvbnN0IGNoYXIqIFRlc3RJbmZvOjpjb21t
ZW50KCkgY29uc3QgewotICByZXR1cm4gaW1wbF8tPmNvbW1lbnQoKTsKLX0KLQotLy8gUmV0dXJu
cyB0cnVlIGlmIHRoaXMgdGVzdCBzaG91bGQgcnVuLgotYm9vbCBUZXN0SW5mbzo6c2hvdWxkX3J1
bigpIGNvbnN0IHsgcmV0dXJuIGltcGxfLT5zaG91bGRfcnVuKCk7IH0KLQotLy8gUmV0dXJucyB0
cnVlIGlmIHRoaXMgdGVzdCBtYXRjaGVzIHRoZSB1c2VyLXNwZWNpZmllZCBmaWx0ZXIuCi1ib29s
IFRlc3RJbmZvOjptYXRjaGVzX2ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIGltcGxfLT5tYXRjaGVz
X2ZpbHRlcigpOyB9Ci0KLS8vIFJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgdGVzdC4KLWNvbnN0
IFRlc3RSZXN1bHQqIFRlc3RJbmZvOjpyZXN1bHQoKSBjb25zdCB7IHJldHVybiBpbXBsXy0+cmVz
dWx0KCk7IH0KLQotLy8gSW5jcmVtZW50cyB0aGUgbnVtYmVyIG9mIGRlYXRoIHRlc3RzIGVuY291
bnRlcmVkIGluIHRoaXMgdGVzdCBzbwotLy8gZmFyLgotaW50IFRlc3RJbmZvOjppbmNyZW1lbnRf
ZGVhdGhfdGVzdF9jb3VudCgpIHsKLSAgcmV0dXJuIGltcGxfLT5yZXN1bHQoKS0+aW5jcmVtZW50
X2RlYXRoX3Rlc3RfY291bnQoKTsKLX0KLQogbmFtZXNwYWNlIHsKIAogLy8gQSBwcmVkaWNhdGUg
dGhhdCBjaGVja3MgdGhlIHRlc3QgbmFtZSBvZiBhIFRlc3RJbmZvIGFnYWluc3QgYSBrbm93bgpA
QCAtMjI0NCwxMSArMjYzOSwxMSBAQCBjbGFzcyBUZXN0TmFtZUlzIHsKIAogICAvLyBSZXR1cm5z
IHRydWUgaWZmIHRoZSB0ZXN0IG5hbWUgb2YgdGVzdF9pbmZvIG1hdGNoZXMgbmFtZV8uCiAgIGJv
b2wgb3BlcmF0b3IoKShjb25zdCBUZXN0SW5mbyAqIHRlc3RfaW5mbykgY29uc3QgewotICAgIHJl
dHVybiB0ZXN0X2luZm8gJiYgaW50ZXJuYWw6OlN0cmluZyh0ZXN0X2luZm8tPm5hbWUoKSkuQ29t
cGFyZShuYW1lXykgPT0gMDsKKyAgICByZXR1cm4gdGVzdF9pbmZvICYmIHRlc3RfaW5mby0+bmFt
ZSgpID09IG5hbWVfOwogICB9CiAKICBwcml2YXRlOgotICBpbnRlcm5hbDo6U3RyaW5nIG5hbWVf
OworICBzdGQ6OnN0cmluZyBuYW1lXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZQpAQCAtMjI1OSw3
OCArMjY1NCw2MCBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogLy8gYW5kIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QIGludG8gcmVndWxhciB0ZXN0cyBhbmQgcmVnaXN0ZXJzIHRob3NlLgogLy8gVGhp
cyB3aWxsIGJlIGRvbmUganVzdCBvbmNlIGR1cmluZyB0aGUgcHJvZ3JhbSBydW50aW1lLgogdm9p
ZCBVbml0VGVzdEltcGw6OlJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzKCkgewotI2lmIEdURVNU
X0hBU19QQVJBTV9URVNUCiAgIGlmICghcGFyYW1ldGVyaXplZF90ZXN0c19yZWdpc3RlcmVkXykg
ewogICAgIHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeV8uUmVnaXN0ZXJUZXN0cygpOwogICAg
IHBhcmFtZXRlcml6ZWRfdGVzdHNfcmVnaXN0ZXJlZF8gPSB0cnVlOwogICB9Ci0jZW5kaWYKIH0K
IAorfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKIC8vIENyZWF0ZXMgdGhlIHRlc3Qgb2JqZWN0
LCBydW5zIGl0LCByZWNvcmRzIGl0cyByZXN1bHQsIGFuZCB0aGVuCiAvLyBkZWxldGVzIGl0Lgot
dm9pZCBUZXN0SW5mb0ltcGw6OlJ1bigpIHsKK3ZvaWQgVGVzdEluZm86OlJ1bigpIHsKICAgaWYg
KCFzaG91bGRfcnVuXykgcmV0dXJuOwogCiAgIC8vIFRlbGxzIFVuaXRUZXN0IHdoZXJlIHRvIHN0
b3JlIHRlc3QgcmVzdWx0LgotICBVbml0VGVzdEltcGwqIGNvbnN0IGltcGwgPSBpbnRlcm5hbDo6
R2V0VW5pdFRlc3RJbXBsKCk7Ci0gIGltcGwtPnNldF9jdXJyZW50X3Rlc3RfaW5mbyhwYXJlbnRf
KTsKKyAgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCogY29uc3QgaW1wbCA9IGludGVybmFsOjpHZXRV
bml0VGVzdEltcGwoKTsKKyAgaW1wbC0+c2V0X2N1cnJlbnRfdGVzdF9pbmZvKHRoaXMpOwogCiAg
IFRlc3RFdmVudExpc3RlbmVyKiByZXBlYXRlciA9IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5s
aXN0ZW5lcnMoKS5yZXBlYXRlcigpOwogCiAgIC8vIE5vdGlmaWVzIHRoZSB1bml0IHRlc3QgZXZl
bnQgbGlzdGVuZXJzIHRoYXQgYSB0ZXN0IGlzIGFib3V0IHRvIHN0YXJ0LgotICByZXBlYXRlci0+
T25UZXN0U3RhcnQoKnBhcmVudF8pOworICByZXBlYXRlci0+T25UZXN0U3RhcnQoKnRoaXMpOwog
Ci0gIGNvbnN0IFRpbWVJbk1pbGxpcyBzdGFydCA9IEdldFRpbWVJbk1pbGxpcygpOworICBjb25z
dCBUaW1lSW5NaWxsaXMgc3RhcnQgPSBpbnRlcm5hbDo6R2V0VGltZUluTWlsbGlzKCk7CiAKICAg
aW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSNpZiBH
VEVTVF9IQVNfU0VICi0gIC8vIENhdGNoIFNFSC1zdHlsZSBleGNlcHRpb25zLgotICBUZXN0KiB0
ZXN0ID0gTlVMTDsKLQotICBfX3RyeSB7Ci0gICAgLy8gQ3JlYXRlcyB0aGUgdGVzdCBvYmplY3Qu
Ci0gICAgdGVzdCA9IGZhY3RvcnlfLT5DcmVhdGVUZXN0KCk7Ci0gIH0gX19leGNlcHQoaW50ZXJu
YWw6OlVuaXRUZXN0T3B0aW9uczo6R1Rlc3RTaG91bGRQcm9jZXNzU0VIKAotICAgICAgR2V0RXhj
ZXB0aW9uQ29kZSgpKSkgewotICAgIEFkZEV4Y2VwdGlvblRocm93bkZhaWx1cmUoR2V0RXhjZXB0
aW9uQ29kZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSB0ZXN0IGZpeHR1
cmUncyBjb25zdHJ1Y3RvciIpOwotICAgIHJldHVybjsKLSAgfQotI2Vsc2UgIC8vIFdlIGFyZSBv
biBhIGNvbXBpbGVyIG9yIHBsYXRmb3JtIHRoYXQgZG9lc24ndCBzdXBwb3J0IFNFSC4KLQotICAv
LyBUT0RPKHdhbik6IElmIHRlc3QtPlJ1bigpIHRocm93cywgdGVzdCB3b24ndCBiZSBkZWxldGVk
LiAgVGhpcyBpcwotICAvLyBub3QgYSBwcm9ibGVtIG5vdyBhcyB3ZSBkb24ndCB1c2UgZXhjZXB0
aW9ucy4gIElmIHdlIHdlcmUgdG8KLSAgLy8gZW5hYmxlIGV4Y2VwdGlvbnMsIHdlIHNob3VsZCBy
ZXZpc2UgdGhlIGZvbGxvd2luZyB0byBiZQotICAvLyBleGNlcHRpb24tc2FmZS4KIAogICAvLyBD
cmVhdGVzIHRoZSB0ZXN0IG9iamVjdC4KLSAgVGVzdCogdGVzdCA9IGZhY3RvcnlfLT5DcmVhdGVU
ZXN0KCk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKKyAgVGVzdCogY29uc3QgdGVzdCA9IGlu
dGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAgICAgIGZhY3Rv
cnlfLCAmaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZTo6Q3JlYXRlVGVzdCwKKyAgICAgICJ0aGUg
dGVzdCBmaXh0dXJlJ3MgY29uc3RydWN0b3IiKTsKIAotICAvLyBSdW5zIHRoZSB0ZXN0IG9ubHkg
aWYgdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSB0ZXN0IGZpeHR1cmUgZGlkbid0Ci0gIC8vIGdlbmVy
YXRlIGEgZmF0YWwgZmFpbHVyZS4KKyAgLy8gUnVucyB0aGUgdGVzdCBpZiB0aGUgY29uc3RydWN0
b3IgZGlkbid0IGdlbmVyYXRlIGEgZmF0YWwgZmFpbHVyZS4KKyAgLy8gTm90ZSB0aGF0IHRoZSBv
YmplY3Qgd2lsbCBub3QgYmUgbnVsbAogICBpZiAoIVRlc3Q6Okhhc0ZhdGFsRmFpbHVyZSgpKSB7
CisgICAgLy8gVGhpcyBkb2Vzbid0IHRocm93IGFzIGFsbCB1c2VyIGNvZGUgdGhhdCBjYW4gdGhy
b3cgYXJlIHdyYXBwZWQgaW50bworICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGluZyBjb2RlLgogICAg
IHRlc3QtPlJ1bigpOwogICB9CiAKLSAgLy8gRGVsZXRlcyB0aGUgdGVzdCBvYmplY3QuCi0gIGlt
cGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7Ci0gIGRlbGV0
ZSB0ZXN0OwotICB0ZXN0ID0gTlVMTDsKKyAgICAvLyBEZWxldGVzIHRoZSB0ZXN0IG9iamVjdC4K
KyAgICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwor
ICAgIGludGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAgICAg
ICAgdGVzdCwgJlRlc3Q6OkRlbGV0ZVNlbGZfLCAidGhlIHRlc3QgZml4dHVyZSdzIGRlc3RydWN0
b3IiKTsKIAotICByZXN1bHRfLnNldF9lbGFwc2VkX3RpbWUoR2V0VGltZUluTWlsbGlzKCkgLSBz
dGFydCk7CisgIHJlc3VsdF8uc2V0X2VsYXBzZWRfdGltZShpbnRlcm5hbDo6R2V0VGltZUluTWls
bGlzKCkgLSBzdGFydCk7CiAKICAgLy8gTm90aWZpZXMgdGhlIHVuaXQgdGVzdCBldmVudCBsaXN0
ZW5lciB0aGF0IGEgdGVzdCBoYXMganVzdCBmaW5pc2hlZC4KLSAgcmVwZWF0ZXItPk9uVGVzdEVu
ZCgqcGFyZW50Xyk7CisgIHJlcGVhdGVyLT5PblRlc3RFbmQoKnRoaXMpOwogCiAgIC8vIFRlbGxz
IFVuaXRUZXN0IHRvIHN0b3AgYXNzb2NpYXRpbmcgYXNzZXJ0aW9uIHJlc3VsdHMgdG8gdGhpcwog
ICAvLyB0ZXN0LgogICBpbXBsLT5zZXRfY3VycmVudF90ZXN0X2luZm8oTlVMTCk7CiB9CiAKLX0g
IC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCiAvLyBjbGFzcyBUZXN0Q2FzZQogCiAvLyBHZXRzIHRo
ZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KQEAgLTIzNDMs
MTAgKzI3MjAsMjEgQEAgaW50IFRlc3RDYXNlOjpmYWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsK
ICAgcmV0dXJuIENvdW50SWYodGVzdF9pbmZvX2xpc3RfLCBUZXN0RmFpbGVkKTsKIH0KIAorLy8g
R2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHRoYXQgd2lsbCBiZSByZXBvcnRlZCBp
biB0aGUgWE1MIHJlcG9ydC4KK2ludCBUZXN0Q2FzZTo6cmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0
X2NvdW50KCkgY29uc3QgeworICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlzdF8sIFRlc3RS
ZXBvcnRhYmxlRGlzYWJsZWQpOworfQorCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQg
dGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCiBpbnQgVGVzdENhc2U6OmRpc2FibGVkX3Rlc3RfY291
bnQoKSBjb25zdCB7CiAgIHJldHVybiBDb3VudElmKHRlc3RfaW5mb19saXN0XywgVGVzdERpc2Fi
bGVkKTsKIH0KIAorLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50ZWQgaW4g
dGhlIFhNTCByZXBvcnQuCitpbnQgVGVzdENhc2U6OnJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNv
bnN0IHsKKyAgcmV0dXJuIENvdW50SWYodGVzdF9pbmZvX2xpc3RfLCBUZXN0UmVwb3J0YWJsZSk7
Cit9CisKIC8vIEdldCB0aGUgbnVtYmVyIG9mIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlIHRoYXQg
c2hvdWxkIHJ1bi4KIGludCBUZXN0Q2FzZTo6dGVzdF90b19ydW5fY291bnQoKSBjb25zdCB7CiAg
IHJldHVybiBDb3VudElmKHRlc3RfaW5mb19saXN0XywgU2hvdWxkUnVuVGVzdCk7CkBAIC0yMzYy
LDEzICsyNzUwLDE1IEBAIGludCBUZXN0Q2FzZTo6dG90YWxfdGVzdF9jb3VudCgpIGNvbnN0IHsK
IC8vIEFyZ3VtZW50czoKIC8vCiAvLyAgIG5hbWU6ICAgICAgICAgbmFtZSBvZiB0aGUgdGVzdCBj
YXNlCisvLyAgIGFfdHlwZV9wYXJhbTogdGhlIG5hbWUgb2YgdGhlIHRlc3QgY2FzZSdzIHR5cGUg
cGFyYW1ldGVyLCBvciBOVUxMIGlmCisvLyAgICAgICAgICAgICAgICAgdGhpcyBpcyBub3QgYSB0
eXBlZCBvciBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UuCiAvLyAgIHNldF91cF90Yzog
ICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSB0ZXN0IGNhc2UKIC8v
ICAgdGVhcl9kb3duX3RjOiBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24g
dGhlIHRlc3QgY2FzZQotVGVzdENhc2U6OlRlc3RDYXNlKGNvbnN0IGNoYXIqIGFfbmFtZSwgY29u
c3QgY2hhciogYV9jb21tZW50LAorVGVzdENhc2U6OlRlc3RDYXNlKGNvbnN0IGNoYXIqIGFfbmFt
ZSwgY29uc3QgY2hhciogYV90eXBlX3BhcmFtLAogICAgICAgICAgICAgICAgICAgIFRlc3Q6OlNl
dFVwVGVzdENhc2VGdW5jIHNldF91cF90YywKICAgICAgICAgICAgICAgICAgICBUZXN0OjpUZWFy
RG93blRlc3RDYXNlRnVuYyB0ZWFyX2Rvd25fdGMpCiAgICAgOiBuYW1lXyhhX25hbWUpLAotICAg
ICAgY29tbWVudF8oYV9jb21tZW50KSwKKyAgICAgIHR5cGVfcGFyYW1fKGFfdHlwZV9wYXJhbSA/
IG5ldyBzdGQ6OnN0cmluZyhhX3R5cGVfcGFyYW0pIDogTlVMTCksCiAgICAgICBzZXRfdXBfdGNf
KHNldF91cF90YyksCiAgICAgICB0ZWFyX2Rvd25fdGNfKHRlYXJfZG93bl90YyksCiAgICAgICBz
aG91bGRfcnVuXyhmYWxzZSksCkBAIC0yNDEzLDQ1ICsyODAzLDI3IEBAIHZvaWQgVGVzdENhc2U6
OlJ1bigpIHsKIAogICByZXBlYXRlci0+T25UZXN0Q2FzZVN0YXJ0KCp0aGlzKTsKICAgaW1wbC0+
b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgc2V0X3VwX3Rj
XygpOworICBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisg
ICAgICB0aGlzLCAmVGVzdENhc2U6OlJ1blNldFVwVGVzdENhc2UsICJTZXRVcFRlc3RDYXNlKCki
KTsKIAogICBjb25zdCBpbnRlcm5hbDo6VGltZUluTWlsbGlzIHN0YXJ0ID0gaW50ZXJuYWw6Okdl
dFRpbWVJbk1pbGxpcygpOwogICBmb3IgKGludCBpID0gMDsgaSA8IHRvdGFsX3Rlc3RfY291bnQo
KTsgaSsrKSB7Ci0gICAgR2V0TXV0YWJsZVRlc3RJbmZvKGkpLT5pbXBsKCktPlJ1bigpOworICAg
IEdldE11dGFibGVUZXN0SW5mbyhpKS0+UnVuKCk7CiAgIH0KICAgZWxhcHNlZF90aW1lXyA9IGlu
dGVybmFsOjpHZXRUaW1lSW5NaWxsaXMoKSAtIHN0YXJ0OwogCiAgIGltcGwtPm9zX3N0YWNrX3Ry
YWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7Ci0gIHRlYXJfZG93bl90Y18oKTsKKyAg
aW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAorICAgICAgdGhp
cywgJlRlc3RDYXNlOjpSdW5UZWFyRG93blRlc3RDYXNlLCAiVGVhckRvd25UZXN0Q2FzZSgpIik7
CisKICAgcmVwZWF0ZXItPk9uVGVzdENhc2VFbmQoKnRoaXMpOwogICBpbXBsLT5zZXRfY3VycmVu
dF90ZXN0X2Nhc2UoTlVMTCk7CiB9CiAKIC8vIENsZWFycyB0aGUgcmVzdWx0cyBvZiBhbGwgdGVz
dHMgaW4gdGhpcyB0ZXN0IGNhc2UuCiB2b2lkIFRlc3RDYXNlOjpDbGVhclJlc3VsdCgpIHsKLSAg
Rm9yRWFjaCh0ZXN0X2luZm9fbGlzdF8sIGludGVybmFsOjpUZXN0SW5mb0ltcGw6OkNsZWFyVGVz
dFJlc3VsdCk7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZmYgdGVzdCBwYXNzZWQuCi1ib29sIFRl
c3RDYXNlOjpUZXN0UGFzc2VkKGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKSB7Ci0gIGNvbnN0
IGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGNvbnN0IGltcGwgPSB0ZXN0X2luZm8tPmltcGwoKTsK
LSAgcmV0dXJuIGltcGwtPnNob3VsZF9ydW4oKSAmJiBpbXBsLT5yZXN1bHQoKS0+UGFzc2VkKCk7
Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZmYgdGVzdCBmYWlsZWQuCi1ib29sIFRlc3RDYXNlOjpU
ZXN0RmFpbGVkKGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKSB7Ci0gIGNvbnN0IGludGVybmFs
OjpUZXN0SW5mb0ltcGwqIGNvbnN0IGltcGwgPSB0ZXN0X2luZm8tPmltcGwoKTsKLSAgcmV0dXJu
IGltcGwtPnNob3VsZF9ydW4oKSAmJiBpbXBsLT5yZXN1bHQoKS0+RmFpbGVkKCk7Ci19Ci0KLS8v
IFJldHVybnMgdHJ1ZSBpZmYgdGVzdCBpcyBkaXNhYmxlZC4KLWJvb2wgVGVzdENhc2U6OlRlc3RE
aXNhYmxlZChjb25zdCBUZXN0SW5mbyAqIHRlc3RfaW5mbykgewotICByZXR1cm4gdGVzdF9pbmZv
LT5pbXBsKCktPmlzX2Rpc2FibGVkKCk7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2
ZW4gdGVzdCBzaG91bGQgcnVuLgotYm9vbCBUZXN0Q2FzZTo6U2hvdWxkUnVuVGVzdChjb25zdCBU
ZXN0SW5mbyAqdGVzdF9pbmZvKSB7Ci0gIHJldHVybiB0ZXN0X2luZm8tPmltcGwoKS0+c2hvdWxk
X3J1bigpOworICBhZF9ob2NfdGVzdF9yZXN1bHRfLkNsZWFyKCk7CisgIEZvckVhY2godGVzdF9p
bmZvX2xpc3RfLCBUZXN0SW5mbzo6Q2xlYXJUZXN0UmVzdWx0KTsKIH0KIAogLy8gU2h1ZmZsZXMg
dGhlIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlLgpAQCAtMjQ3MSwyMCArMjg0MywyMCBAQCB2b2lk
IFRlc3RDYXNlOjpVbnNodWZmbGVUZXN0cygpIHsKIC8vCiAvLyBGb3JtYXRDb3VudGFibGVOb3Vu
KDEsICJmb3JtdWxhIiwgImZvcm11bGkiKSByZXR1cm5zICIxIGZvcm11bGEiLgogLy8gRm9ybWF0
Q291bnRhYmxlTm91big1LCAiYm9vayIsICJib29rcyIpIHJldHVybnMgIjUgYm9va3MiLgotc3Rh
dGljIGludGVybmFsOjpTdHJpbmcgRm9ybWF0Q291bnRhYmxlTm91bihpbnQgY291bnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBzaW5n
dWxhcl9mb3JtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICogcGx1cmFsX2Zvcm0pIHsKLSAgcmV0dXJuIGludGVybmFsOjpTdHJpbmc6OkZv
cm1hdCgiJWQgJXMiLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b3VudCA9PSAxID8gc2luZ3VsYXJfZm9ybSA6IHBsdXJhbF9mb3JtKTsKK3N0YXRpYyBzdGQ6OnN0
cmluZyBGb3JtYXRDb3VudGFibGVOb3VuKGludCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBzaW5ndWxhcl9mb3JtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIHBsdXJhbF9mb3JtKSB7
CisgIHJldHVybiBpbnRlcm5hbDo6U3RyZWFtYWJsZVRvU3RyaW5nKGNvdW50KSArICIgIiArCisg
ICAgICAoY291bnQgPT0gMSA/IHNpbmd1bGFyX2Zvcm0gOiBwbHVyYWxfZm9ybSk7CiB9CiAKIC8v
IEZvcm1hdHMgdGhlIGNvdW50IG9mIHRlc3RzLgotc3RhdGljIGludGVybmFsOjpTdHJpbmcgRm9y
bWF0VGVzdENvdW50KGludCB0ZXN0X2NvdW50KSB7CitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0
VGVzdENvdW50KGludCB0ZXN0X2NvdW50KSB7CiAgIHJldHVybiBGb3JtYXRDb3VudGFibGVOb3Vu
KHRlc3RfY291bnQsICJ0ZXN0IiwgInRlc3RzIik7CiB9CiAKIC8vIEZvcm1hdHMgdGhlIGNvdW50
IG9mIHRlc3QgY2FzZXMuCi1zdGF0aWMgaW50ZXJuYWw6OlN0cmluZyBGb3JtYXRUZXN0Q2FzZUNv
dW50KGludCB0ZXN0X2Nhc2VfY291bnQpIHsKK3N0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRUZXN0
Q2FzZUNvdW50KGludCB0ZXN0X2Nhc2VfY291bnQpIHsKICAgcmV0dXJuIEZvcm1hdENvdW50YWJs
ZU5vdW4odGVzdF9jYXNlX2NvdW50LCAidGVzdCBjYXNlIiwgInRlc3QgY2FzZXMiKTsKIH0KIApA
QCAtMjUwNCwxMyArMjg3NiwxNSBAQCBzdGF0aWMgY29uc3QgY2hhciAqIFRlc3RQYXJ0UmVzdWx0
VHlwZVRvU3RyaW5nKFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUpIHsKICNlbHNlCiAgICAgICBy
ZXR1cm4gIkZhaWx1cmVcbiI7CiAjZW5kaWYKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuICJV
bmtub3duIHJlc3VsdCB0eXBlIjsKICAgfQotCi0gIHJldHVybiAiVW5rbm93biByZXN1bHQgdHlw
ZSI7CiB9CiAKLS8vIFByaW50cyBhIFRlc3RQYXJ0UmVzdWx0IHRvIGEgU3RyaW5nLgotc3RhdGlj
IGludGVybmFsOjpTdHJpbmcgUHJpbnRUZXN0UGFydFJlc3VsdFRvU3RyaW5nKAorbmFtZXNwYWNl
IGludGVybmFsIHsKKworLy8gUHJpbnRzIGEgVGVzdFBhcnRSZXN1bHQgdG8gYW4gc3RkOjpzdHJp
bmcuCitzdGF0aWMgc3RkOjpzdHJpbmcgUHJpbnRUZXN0UGFydFJlc3VsdFRvU3RyaW5nKAogICAg
IGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7CiAgIHJldHVybiAoTWVz
c2FnZSgpCiAgICAgICAgICAgPDwgaW50ZXJuYWw6OkZvcm1hdEZpbGVMb2NhdGlvbih0ZXN0X3Bh
cnRfcmVzdWx0LmZpbGVfbmFtZSgpLApAQCAtMjUyMSw3ICsyODk1LDcgQEAgc3RhdGljIGludGVy
bmFsOjpTdHJpbmcgUHJpbnRUZXN0UGFydFJlc3VsdFRvU3RyaW5nKAogCiAvLyBQcmludHMgYSBU
ZXN0UGFydFJlc3VsdC4KIHN0YXRpYyB2b2lkIFByaW50VGVzdFBhcnRSZXN1bHQoY29uc3QgVGVz
dFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKLSAgY29uc3QgaW50ZXJuYWw6OlN0cmlu
ZyYgcmVzdWx0ID0KKyAgY29uc3Qgc3RkOjpzdHJpbmcmIHJlc3VsdCA9CiAgICAgICBQcmludFRl
c3RQYXJ0UmVzdWx0VG9TdHJpbmcodGVzdF9wYXJ0X3Jlc3VsdCk7CiAgIHByaW50ZigiJXNcbiIs
IHJlc3VsdC5jX3N0cigpKTsKICAgZmZsdXNoKHN0ZG91dCk7CkBAIC0yNTQwLDggKzI5MTQsNiBA
QCBzdGF0aWMgdm9pZCBQcmludFRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0
ZXN0X3BhcnRfcmVzdWx0KSB7CiAKIC8vIGNsYXNzIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRl
cgogCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCiBlbnVtIEdUZXN0Q29sb3IgewogICBDT0xPUl9E
RUZBVUxULAogICBDT0xPUl9SRUQsCkBAIC0yNTQ5LDEwICsyOTIxLDExIEBAIGVudW0gR1Rlc3RD
b2xvciB7CiAgIENPTE9SX1lFTExPVwogfTsKIAotI2lmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdU
RVNUX09TX1dJTkRPV1NfTU9CSUxFCisjaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUgJiYgXAorICAgICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVT
VF9PU19XSU5ET1dTX1JUICYmICFHVEVTVF9PU19XSU5ET1dTX01JTkdXCiAKIC8vIFJldHVybnMg
dGhlIGNoYXJhY3RlciBhdHRyaWJ1dGUgZm9yIHRoZSBnaXZlbiBjb2xvci4KLVdPUkQgR2V0Q29s
b3JBdHRyaWJ1dGUoR1Rlc3RDb2xvciBjb2xvcikgeworc3RhdGljIFdPUkQgR2V0Q29sb3JBdHRy
aWJ1dGUoR1Rlc3RDb2xvciBjb2xvcikgewogICBzd2l0Y2ggKGNvbG9yKSB7CiAgICAgY2FzZSBD
T0xPUl9SRUQ6ICAgIHJldHVybiBGT1JFR1JPVU5EX1JFRDsKICAgICBjYXNlIENPTE9SX0dSRUVO
OiAgcmV0dXJuIEZPUkVHUk9VTkRfR1JFRU47CkBAIC0yNTYxLDExICsyOTM0LDQyIEBAIFdPUkQg
R2V0Q29sb3JBdHRyaWJ1dGUoR1Rlc3RDb2xvciBjb2xvcikgewogICB9CiB9CiAKK3N0YXRpYyBp
bnQgR2V0Qml0T2Zmc2V0KFdPUkQgY29sb3JfbWFzaykgeworICBpZiAoY29sb3JfbWFzayA9PSAw
KSByZXR1cm4gMDsKKworICBpbnQgYml0T2Zmc2V0ID0gMDsKKyAgd2hpbGUgKChjb2xvcl9tYXNr
ICYgMSkgPT0gMCkgeworICAgIGNvbG9yX21hc2sgPj49IDE7CisgICAgKytiaXRPZmZzZXQ7Cisg
IH0KKyAgcmV0dXJuIGJpdE9mZnNldDsKK30KKworc3RhdGljIFdPUkQgR2V0TmV3Q29sb3IoR1Rl
c3RDb2xvciBjb2xvciwgV09SRCBvbGRfY29sb3JfYXR0cnMpIHsKKyAgLy8gTGV0J3MgcmV1c2Ug
dGhlIEJHCisgIHN0YXRpYyBjb25zdCBXT1JEIGJhY2tncm91bmRfbWFzayA9IEJBQ0tHUk9VTkRf
QkxVRSB8IEJBQ0tHUk9VTkRfR1JFRU4gfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCQUNLR1JPVU5EX1JFRCB8IEJBQ0tHUk9VTkRfSU5URU5TSVRZOworICBzdGF0aWMg
Y29uc3QgV09SRCBmb3JlZ3JvdW5kX21hc2sgPSBGT1JFR1JPVU5EX0JMVUUgfCBGT1JFR1JPVU5E
X0dSRUVOIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk9SRUdST1VO
RF9SRUQgfCBGT1JFR1JPVU5EX0lOVEVOU0lUWTsKKyAgY29uc3QgV09SRCBleGlzdGluZ19iZyA9
IG9sZF9jb2xvcl9hdHRycyAmIGJhY2tncm91bmRfbWFzazsKKworICBXT1JEIG5ld19jb2xvciA9
CisgICAgICBHZXRDb2xvckF0dHJpYnV0ZShjb2xvcikgfCBleGlzdGluZ19iZyB8IEZPUkVHUk9V
TkRfSU5URU5TSVRZOworICBzdGF0aWMgY29uc3QgaW50IGJnX2JpdE9mZnNldCA9IEdldEJpdE9m
ZnNldChiYWNrZ3JvdW5kX21hc2spOworICBzdGF0aWMgY29uc3QgaW50IGZnX2JpdE9mZnNldCA9
IEdldEJpdE9mZnNldChmb3JlZ3JvdW5kX21hc2spOworCisgIGlmICgoKG5ld19jb2xvciAmIGJh
Y2tncm91bmRfbWFzaykgPj4gYmdfYml0T2Zmc2V0KSA9PQorICAgICAgKChuZXdfY29sb3IgJiBm
b3JlZ3JvdW5kX21hc2spID4+IGZnX2JpdE9mZnNldCkpIHsKKyAgICBuZXdfY29sb3IgXj0gRk9S
RUdST1VORF9JTlRFTlNJVFk7ICAvLyBpbnZlcnQgaW50ZW5zaXR5CisgIH0KKyAgcmV0dXJuIG5l
d19jb2xvcjsKK30KKwogI2Vsc2UKIAogLy8gUmV0dXJucyB0aGUgQU5TSSBjb2xvciBjb2RlIGZv
ciB0aGUgZ2l2ZW4gY29sb3IuICBDT0xPUl9ERUZBVUxUIGlzCiAvLyBhbiBpbnZhbGlkIGlucHV0
LgotY29uc3QgY2hhciogR2V0QW5zaUNvbG9yQ29kZShHVGVzdENvbG9yIGNvbG9yKSB7CitzdGF0
aWMgY29uc3QgY2hhciogR2V0QW5zaUNvbG9yQ29kZShHVGVzdENvbG9yIGNvbG9yKSB7CiAgIHN3
aXRjaCAoY29sb3IpIHsKICAgICBjYXNlIENPTE9SX1JFRDogICAgIHJldHVybiAiMSI7CiAgICAg
Y2FzZSBDT0xPUl9HUkVFTjogICByZXR1cm4gIjIiOwpAQCAtMjU4MSw3ICsyOTg1LDcgQEAgYm9v
bCBTaG91bGRVc2VDb2xvcihib29sIHN0ZG91dF9pc190dHkpIHsKICAgY29uc3QgY2hhciogY29u
c3QgZ3Rlc3RfY29sb3IgPSBHVEVTVF9GTEFHKGNvbG9yKS5jX3N0cigpOwogCiAgIGlmIChTdHJp
bmc6OkNhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMoZ3Rlc3RfY29sb3IsICJhdXRvIikpIHsK
LSNpZiBHVEVTVF9PU19XSU5ET1dTCisjaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1Nf
V0lORE9XU19NSU5HVwogICAgIC8vIE9uIFdpbmRvd3MgdGhlIFRFUk0gdmFyaWFibGUgaXMgdXN1
YWxseSBub3Qgc2V0LCBidXQgdGhlCiAgICAgLy8gY29uc29sZSB0aGVyZSBkb2VzIHN1cHBvcnQg
Y29sb3JzLgogICAgIHJldHVybiBzdGRvdXRfaXNfdHR5OwpAQCAtMjU5Miw2ICsyOTk2LDEyIEBA
IGJvb2wgU2hvdWxkVXNlQ29sb3IoYm9vbCBzdGRvdXRfaXNfdHR5KSB7CiAgICAgICAgIFN0cmlu
Zzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAieHRlcm0iKSB8fAogICAgICAgICBTdHJpbmc6OkNTdHJp
bmdFcXVhbHModGVybSwgInh0ZXJtLWNvbG9yIikgfHwKICAgICAgICAgU3RyaW5nOjpDU3RyaW5n
RXF1YWxzKHRlcm0sICJ4dGVybS0yNTZjb2xvciIpIHx8CisgICAgICAgIFN0cmluZzo6Q1N0cmlu
Z0VxdWFscyh0ZXJtLCAic2NyZWVuIikgfHwKKyAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxz
KHRlcm0sICJzY3JlZW4tMjU2Y29sb3IiKSB8fAorICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVh
bHModGVybSwgInRtdXgiKSB8fAorICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwg
InRtdXgtMjU2Y29sb3IiKSB8fAorICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwg
InJ4dnQtdW5pY29kZSIpIHx8CisgICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAi
cnh2dC11bmljb2RlLTI1NmNvbG9yIikgfHwKICAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxz
KHRlcm0sICJsaW51eCIpIHx8CiAgICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAi
Y3lnd2luIik7CiAgICAgcmV0dXJuIHN0ZG91dF9pc190dHkgJiYgdGVybV9zdXBwb3J0c19jb2xv
cjsKQEAgLTI2MTEsMTIgKzMwMjEsMTMgQEAgYm9vbCBTaG91bGRVc2VDb2xvcihib29sIHN0ZG91
dF9pc190dHkpIHsKIC8vIGNhbm5vdCBzaW1wbHkgZW1pdCBzcGVjaWFsIGNoYXJhY3RlcnMgYW5k
IGhhdmUgdGhlIHRlcm1pbmFsIGNoYW5nZSBjb2xvcnMuCiAvLyBUaGlzIHJvdXRpbmUgbXVzdCBh
Y3R1YWxseSBlbWl0IHRoZSBjaGFyYWN0ZXJzIHJhdGhlciB0aGFuIHJldHVybiBhIHN0cmluZwog
Ly8gdGhhdCB3b3VsZCBiZSBjb2xvcmVkIHdoZW4gcHJpbnRlZCwgYXMgY2FuIGJlIGRvbmUgb24g
TGludXguCi12b2lkIENvbG9yZWRQcmludGYoR1Rlc3RDb2xvciBjb2xvciwgY29uc3QgY2hhciog
Zm10LCAuLi4pIHsKK3N0YXRpYyB2b2lkIENvbG9yZWRQcmludGYoR1Rlc3RDb2xvciBjb2xvciwg
Y29uc3QgY2hhciogZm10LCAuLi4pIHsKICAgdmFfbGlzdCBhcmdzOwogICB2YV9zdGFydChhcmdz
LCBmbXQpOwogCi0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgfHwgR1RFU1RfT1NfU1lNQklB
TiB8fCBHVEVTVF9PU19aT1MKLSAgY29uc3QgYm9vbCB1c2VfY29sb3IgPSBmYWxzZTsKKyNpZiBH
VEVTVF9PU19XSU5ET1dTX01PQklMRSB8fCBHVEVTVF9PU19TWU1CSUFOIHx8IEdURVNUX09TX1pP
UyB8fCBcCisgICAgR1RFU1RfT1NfSU9TIHx8IEdURVNUX09TX1dJTkRPV1NfUEhPTkUgfHwgR1RF
U1RfT1NfV0lORE9XU19SVAorICBjb25zdCBib29sIHVzZV9jb2xvciA9IEFsd2F5c0ZhbHNlKCk7
CiAjZWxzZQogICBzdGF0aWMgY29uc3QgYm9vbCBpbl9jb2xvcl9tb2RlID0KICAgICAgIFNob3Vs
ZFVzZUNvbG9yKHBvc2l4OjpJc0FUVFkocG9zaXg6OkZpbGVObyhzdGRvdXQpKSAhPSAwKTsKQEAg
LTI2MzAsMjAgKzMwNDEsMjIgQEAgdm9pZCBDb2xvcmVkUHJpbnRmKEdUZXN0Q29sb3IgY29sb3Is
IGNvbnN0IGNoYXIqIGZtdCwgLi4uKSB7CiAgICAgcmV0dXJuOwogICB9CiAKLSNpZiBHVEVTVF9P
U19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorI2lmIEdURVNUX09TX1dJTkRP
V1MgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFICYmIFwKKyAgICAhR1RFU1RfT1NfV0lORE9X
U19QSE9ORSAmJiAhR1RFU1RfT1NfV0lORE9XU19SVCAmJiAhR1RFU1RfT1NfV0lORE9XU19NSU5H
VwogICBjb25zdCBIQU5ETEUgc3Rkb3V0X2hhbmRsZSA9IEdldFN0ZEhhbmRsZShTVERfT1VUUFVU
X0hBTkRMRSk7CiAKICAgLy8gR2V0cyB0aGUgY3VycmVudCB0ZXh0IGNvbG9yLgogICBDT05TT0xF
X1NDUkVFTl9CVUZGRVJfSU5GTyBidWZmZXJfaW5mbzsKICAgR2V0Q29uc29sZVNjcmVlbkJ1ZmZl
ckluZm8oc3Rkb3V0X2hhbmRsZSwgJmJ1ZmZlcl9pbmZvKTsKICAgY29uc3QgV09SRCBvbGRfY29s
b3JfYXR0cnMgPSBidWZmZXJfaW5mby53QXR0cmlidXRlczsKKyAgY29uc3QgV09SRCBuZXdfY29s
b3IgPSBHZXROZXdDb2xvcihjb2xvciwgb2xkX2NvbG9yX2F0dHJzKTsKIAogICAvLyBXZSBuZWVk
IHRvIGZsdXNoIHRoZSBzdHJlYW0gYnVmZmVycyBpbnRvIHRoZSBjb25zb2xlIGJlZm9yZSBlYWNo
CiAgIC8vIFNldENvbnNvbGVUZXh0QXR0cmlidXRlIGNhbGwgbGVzdCBpdCBhZmZlY3QgdGhlIHRl
eHQgdGhhdCBpcyBhbHJlYWR5CiAgIC8vIHByaW50ZWQgYnV0IGhhcyBub3QgeWV0IHJlYWNoZWQg
dGhlIGNvbnNvbGUuCiAgIGZmbHVzaChzdGRvdXQpOwotICBTZXRDb25zb2xlVGV4dEF0dHJpYnV0
ZShzdGRvdXRfaGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRDb2xvckF0dHJp
YnV0ZShjb2xvcikgfCBGT1JFR1JPVU5EX0lOVEVOU0lUWSk7CisgIFNldENvbnNvbGVUZXh0QXR0
cmlidXRlKHN0ZG91dF9oYW5kbGUsIG5ld19jb2xvcik7CisKICAgdnByaW50ZihmbXQsIGFyZ3Mp
OwogCiAgIGZmbHVzaChzdGRvdXQpOwpAQCAtMjY1Nyw2ICszMDcwLDI4IEBAIHZvaWQgQ29sb3Jl
ZFByaW50ZihHVGVzdENvbG9yIGNvbG9yLCBjb25zdCBjaGFyKiBmbXQsIC4uLikgewogICB2YV9l
bmQoYXJncyk7CiB9CiAKKy8vIFRleHQgcHJpbnRlZCBpbiBHb29nbGUgVGVzdCdzIHRleHQgb3V0
cHV0IGFuZCAtLWd0ZXN0X2xpc3RfdGVzdHMKKy8vIG91dHB1dCB0byBsYWJlbCB0aGUgdHlwZSBw
YXJhbWV0ZXIgYW5kIHZhbHVlIHBhcmFtZXRlciBmb3IgYSB0ZXN0Lgorc3RhdGljIGNvbnN0IGNo
YXIga1R5cGVQYXJhbUxhYmVsW10gPSAiVHlwZVBhcmFtIjsKK3N0YXRpYyBjb25zdCBjaGFyIGtW
YWx1ZVBhcmFtTGFiZWxbXSA9ICJHZXRQYXJhbSgpIjsKKworc3RhdGljIHZvaWQgUHJpbnRGdWxs
VGVzdENvbW1lbnRJZlByZXNlbnQoY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbykgeworICBjb25z
dCBjaGFyKiBjb25zdCB0eXBlX3BhcmFtID0gdGVzdF9pbmZvLnR5cGVfcGFyYW0oKTsKKyAgY29u
c3QgY2hhciogY29uc3QgdmFsdWVfcGFyYW0gPSB0ZXN0X2luZm8udmFsdWVfcGFyYW0oKTsKKwor
ICBpZiAodHlwZV9wYXJhbSAhPSBOVUxMIHx8IHZhbHVlX3BhcmFtICE9IE5VTEwpIHsKKyAgICBw
cmludGYoIiwgd2hlcmUgIik7CisgICAgaWYgKHR5cGVfcGFyYW0gIT0gTlVMTCkgeworICAgICAg
cHJpbnRmKCIlcyA9ICVzIiwga1R5cGVQYXJhbUxhYmVsLCB0eXBlX3BhcmFtKTsKKyAgICAgIGlm
ICh2YWx1ZV9wYXJhbSAhPSBOVUxMKQorICAgICAgICBwcmludGYoIiBhbmQgIik7CisgICAgfQor
ICAgIGlmICh2YWx1ZV9wYXJhbSAhPSBOVUxMKSB7CisgICAgICBwcmludGYoIiVzID0gJXMiLCBr
VmFsdWVQYXJhbUxhYmVsLCB2YWx1ZV9wYXJhbSk7CisgICAgfQorICB9Cit9CisKIC8vIFRoaXMg
Y2xhc3MgaW1wbGVtZW50cyB0aGUgVGVzdEV2ZW50TGlzdGVuZXIgaW50ZXJmYWNlLgogLy8KIC8v
IENsYXNzIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlciBpcyBjb3B5YWJsZS4KQEAgLTI2ODQs
OCArMzExOSw2IEBAIGNsYXNzIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlciA6IHB1YmxpYyBU
ZXN0RXZlbnRMaXN0ZW5lciB7CiAKICBwcml2YXRlOgogICBzdGF0aWMgdm9pZCBQcmludEZhaWxl
ZFRlc3RzKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpOwotCi0gIGludGVybmFsOjpTdHJpbmcg
dGVzdF9jYXNlX25hbWVfOwogfTsKIAogICAvLyBGaXJlZCBiZWZvcmUgZWFjaCBpdGVyYXRpb24g
b2YgdGVzdHMgc3RhcnRzLgpAQCAtMjY5OCwxNSArMzEzMSwxNiBAQCB2b2lkIFByZXR0eVVuaXRU
ZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0SXRlcmF0aW9uU3RhcnQoCiAKICAgLy8gUHJpbnRzIHRo
ZSBmaWx0ZXIgaWYgaXQncyBub3QgKi4gIFRoaXMgcmVtaW5kcyB0aGUgdXNlciB0aGF0IHNvbWUK
ICAgLy8gdGVzdHMgbWF5IGJlIHNraXBwZWQuCi0gIGlmICghaW50ZXJuYWw6OlN0cmluZzo6Q1N0
cmluZ0VxdWFscyhmaWx0ZXIsIGtVbml2ZXJzYWxGaWx0ZXIpKSB7CisgIGlmICghU3RyaW5nOjpD
U3RyaW5nRXF1YWxzKGZpbHRlciwga1VuaXZlcnNhbEZpbHRlcikpIHsKICAgICBDb2xvcmVkUHJp
bnRmKENPTE9SX1lFTExPVywKICAgICAgICAgICAgICAgICAgICJOb3RlOiAlcyBmaWx0ZXIgPSAl
c1xuIiwgR1RFU1RfTkFNRV8sIGZpbHRlcik7CiAgIH0KIAogICBpZiAoaW50ZXJuYWw6OlNob3Vs
ZFNoYXJkKGtUZXN0VG90YWxTaGFyZHMsIGtUZXN0U2hhcmRJbmRleCwgZmFsc2UpKSB7CisgICAg
Y29uc3QgSW50MzIgc2hhcmRfaW5kZXggPSBJbnQzMkZyb21FbnZPckRpZShrVGVzdFNoYXJkSW5k
ZXgsIC0xKTsKICAgICBDb2xvcmVkUHJpbnRmKENPTE9SX1lFTExPVywKLSAgICAgICAgICAgICAg
ICAgICJOb3RlOiBUaGlzIGlzIHRlc3Qgc2hhcmQgJXMgb2YgJXMuXG4iLAotICAgICAgICAgICAg
ICAgICAgaW50ZXJuYWw6OnBvc2l4OjpHZXRFbnYoa1Rlc3RTaGFyZEluZGV4KSwKKyAgICAgICAg
ICAgICAgICAgICJOb3RlOiBUaGlzIGlzIHRlc3Qgc2hhcmQgJWQgb2YgJXMuXG4iLAorICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihzaGFyZF9pbmRleCkgKyAxLAogICAgICAgICAg
ICAgICAgICAgaW50ZXJuYWw6OnBvc2l4OjpHZXRFbnYoa1Rlc3RUb3RhbFNoYXJkcykpOwogICB9
CiAKQEAgLTI3MzEsMjcgKzMxNjUsMjIgQEAgdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50
ZXI6Ok9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCgKIH0KIAogdm9pZCBQcmV0dHlVbml0VGVzdFJl
c3VsdFByaW50ZXI6Ok9uVGVzdENhc2VTdGFydChjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKSB7
Ci0gIHRlc3RfY2FzZV9uYW1lXyA9IHRlc3RfY2FzZS5uYW1lKCk7Ci0gIGNvbnN0IGludGVybmFs
OjpTdHJpbmcgY291bnRzID0KKyAgY29uc3Qgc3RkOjpzdHJpbmcgY291bnRzID0KICAgICAgIEZv
cm1hdENvdW50YWJsZU5vdW4odGVzdF9jYXNlLnRlc3RfdG9fcnVuX2NvdW50KCksICJ0ZXN0Iiwg
InRlc3RzIik7CiAgIENvbG9yZWRQcmludGYoQ09MT1JfR1JFRU4sICJbLS0tLS0tLS0tLV0gIik7
Ci0gIHByaW50ZigiJXMgZnJvbSAlcyIsIGNvdW50cy5jX3N0cigpLCB0ZXN0X2Nhc2VfbmFtZV8u
Y19zdHIoKSk7Ci0gIGlmICh0ZXN0X2Nhc2UuY29tbWVudCgpWzBdID09ICdcMCcpIHsKKyAgcHJp
bnRmKCIlcyBmcm9tICVzIiwgY291bnRzLmNfc3RyKCksIHRlc3RfY2FzZS5uYW1lKCkpOworICBp
ZiAodGVzdF9jYXNlLnR5cGVfcGFyYW0oKSA9PSBOVUxMKSB7CiAgICAgcHJpbnRmKCJcbiIpOwog
ICB9IGVsc2UgewotICAgIHByaW50ZigiLCB3aGVyZSAlc1xuIiwgdGVzdF9jYXNlLmNvbW1lbnQo
KSk7CisgICAgcHJpbnRmKCIsIHdoZXJlICVzID0gJXNcbiIsIGtUeXBlUGFyYW1MYWJlbCwgdGVz
dF9jYXNlLnR5cGVfcGFyYW0oKSk7CiAgIH0KICAgZmZsdXNoKHN0ZG91dCk7CiB9CiAKIHZvaWQg
UHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYg
dGVzdF9pbmZvKSB7CiAgIENvbG9yZWRQcmludGYoQ09MT1JfR1JFRU4sICAiWyBSVU4gICAgICBd
ICIpOwotICBQcmludFRlc3ROYW1lKHRlc3RfY2FzZV9uYW1lXy5jX3N0cigpLCB0ZXN0X2luZm8u
bmFtZSgpKTsKLSAgaWYgKHRlc3RfaW5mby5jb21tZW50KClbMF0gPT0gJ1wwJykgewotICAgIHBy
aW50ZigiXG4iKTsKLSAgfSBlbHNlIHsKLSAgICBwcmludGYoIiwgd2hlcmUgJXNcbiIsIHRlc3Rf
aW5mby5jb21tZW50KCkpOwotICB9CisgIFByaW50VGVzdE5hbWUodGVzdF9pbmZvLnRlc3RfY2Fz
ZV9uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOworICBwcmludGYoIlxuIik7CiAgIGZmbHVzaChz
dGRvdXQpOwogfQogCkBAIC0yNzczLDcgKzMyMDIsMTAgQEAgdm9pZCBQcmV0dHlVbml0VGVzdFJl
c3VsdFByaW50ZXI6Ok9uVGVzdEVuZChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CiAgIH0g
ZWxzZSB7CiAgICAgQ29sb3JlZFByaW50ZihDT0xPUl9SRUQsICJbICBGQUlMRUQgIF0gIik7CiAg
IH0KLSAgUHJpbnRUZXN0TmFtZSh0ZXN0X2Nhc2VfbmFtZV8uY19zdHIoKSwgdGVzdF9pbmZvLm5h
bWUoKSk7CisgIFByaW50VGVzdE5hbWUodGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3Rf
aW5mby5uYW1lKCkpOworICBpZiAodGVzdF9pbmZvLnJlc3VsdCgpLT5GYWlsZWQoKSkKKyAgICBQ
cmludEZ1bGxUZXN0Q29tbWVudElmUHJlc2VudCh0ZXN0X2luZm8pOworCiAgIGlmIChHVEVTVF9G
TEFHKHByaW50X3RpbWUpKSB7CiAgICAgcHJpbnRmKCIgKCVzIG1zKVxuIiwgaW50ZXJuYWw6OlN0
cmVhbWFibGVUb1N0cmluZygKICAgICAgICAgICAgdGVzdF9pbmZvLnJlc3VsdCgpLT5lbGFwc2Vk
X3RpbWUoKSkuY19zdHIoKSk7CkBAIC0yNzg2LDEyICszMjE4LDExIEBAIHZvaWQgUHJldHR5VW5p
dFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RFbmQoY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbykg
ewogdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdENhc2VFbmQoY29uc3Qg
VGVzdENhc2UmIHRlc3RfY2FzZSkgewogICBpZiAoIUdURVNUX0ZMQUcocHJpbnRfdGltZSkpIHJl
dHVybjsKIAotICB0ZXN0X2Nhc2VfbmFtZV8gPSB0ZXN0X2Nhc2UubmFtZSgpOwotICBjb25zdCBp
bnRlcm5hbDo6U3RyaW5nIGNvdW50cyA9CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvdW50cyA9CiAg
ICAgICBGb3JtYXRDb3VudGFibGVOb3VuKHRlc3RfY2FzZS50ZXN0X3RvX3J1bl9jb3VudCgpLCAi
dGVzdCIsICJ0ZXN0cyIpOwogICBDb2xvcmVkUHJpbnRmKENPTE9SX0dSRUVOLCAiWy0tLS0tLS0t
LS1dICIpOwogICBwcmludGYoIiVzIGZyb20gJXMgKCVzIG1zIHRvdGFsKVxuXG4iLAotICAgICAg
ICAgY291bnRzLmNfc3RyKCksIHRlc3RfY2FzZV9uYW1lXy5jX3N0cigpLAorICAgICAgICAgY291
bnRzLmNfc3RyKCksIHRlc3RfY2FzZS5uYW1lKCksCiAgICAgICAgICBpbnRlcm5hbDo6U3RyZWFt
YWJsZVRvU3RyaW5nKHRlc3RfY2FzZS5lbGFwc2VkX3RpbWUoKSkuY19zdHIoKSk7CiAgIGZmbHVz
aChzdGRvdXQpOwogfQpAQCAtMjgyMiwyMSArMzI1MywxNCBAQCB2b2lkIFByZXR0eVVuaXRUZXN0
UmVzdWx0UHJpbnRlcjo6UHJpbnRGYWlsZWRUZXN0cyhjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0
KSB7CiAgICAgICB9CiAgICAgICBDb2xvcmVkUHJpbnRmKENPTE9SX1JFRCwgIlsgIEZBSUxFRCAg
XSAiKTsKICAgICAgIHByaW50ZigiJXMuJXMiLCB0ZXN0X2Nhc2UubmFtZSgpLCB0ZXN0X2luZm8u
bmFtZSgpKTsKLSAgICAgIGlmICh0ZXN0X2Nhc2UuY29tbWVudCgpWzBdICE9ICdcMCcgfHwKLSAg
ICAgICAgICB0ZXN0X2luZm8uY29tbWVudCgpWzBdICE9ICdcMCcpIHsKLSAgICAgICAgcHJpbnRm
KCIsIHdoZXJlICVzIiwgdGVzdF9jYXNlLmNvbW1lbnQoKSk7Ci0gICAgICAgIGlmICh0ZXN0X2Nh
c2UuY29tbWVudCgpWzBdICE9ICdcMCcgJiYKLSAgICAgICAgICAgIHRlc3RfaW5mby5jb21tZW50
KClbMF0gIT0gJ1wwJykgewotICAgICAgICAgIHByaW50ZigiIGFuZCAiKTsKLSAgICAgICAgfQot
ICAgICAgfQotICAgICAgcHJpbnRmKCIlc1xuIiwgdGVzdF9pbmZvLmNvbW1lbnQoKSk7CisgICAg
ICBQcmludEZ1bGxUZXN0Q29tbWVudElmUHJlc2VudCh0ZXN0X2luZm8pOworICAgICAgcHJpbnRm
KCJcbiIpOwogICAgIH0KICAgfQogfQogCi0gdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50
ZXI6Ok9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IC8qaXRl
cmF0aW9uKi8pIHsKK3ZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RJdGVy
YXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IC8qaXRlcmF0aW9uKi8pIHsKICAg
Q29sb3JlZFByaW50ZihDT0xPUl9HUkVFTiwgICJbPT09PT09PT09PV0gIik7CiAgIHByaW50Zigi
JXMgZnJvbSAlcyByYW4uIiwKICAgICAgICAgIEZvcm1hdFRlc3RDb3VudCh1bml0X3Rlc3QudGVz
dF90b19ydW5fY291bnQoKSkuY19zdHIoKSwKQEAgLTI4NTksNyArMzI4Myw3IEBAIHZvaWQgUHJl
dHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludEZhaWxlZFRlc3RzKGNvbnN0IFVuaXRUZXN0
JiB1bml0X3Rlc3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG51bV9mYWlsdXJlcyA9PSAx
ID8gIlRFU1QiIDogIlRFU1RTIik7CiAgIH0KIAotICBpbnQgbnVtX2Rpc2FibGVkID0gdW5pdF90
ZXN0LmRpc2FibGVkX3Rlc3RfY291bnQoKTsKKyAgaW50IG51bV9kaXNhYmxlZCA9IHVuaXRfdGVz
dC5yZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKTsKICAgaWYgKG51bV9kaXNhYmxlZCAm
JiAhR1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cykpIHsKICAgICBpZiAoIW51bV9m
YWlsdXJlcykgewogICAgICAgcHJpbnRmKCJcbiIpOyAgLy8gQWRkIGEgc3BhY2VyIGlmIG5vIEZB
SUxVUkUgYmFubmVyIGlzIGRpc3BsYXllZC4KQEAgLTI5MjIsNyArMzM0Niw3IEBAIHZvaWQgVGVz
dEV2ZW50UmVwZWF0ZXI6OkFwcGVuZChUZXN0RXZlbnRMaXN0ZW5lciAqbGlzdGVuZXIpIHsKICAg
bGlzdGVuZXJzXy5wdXNoX2JhY2sobGlzdGVuZXIpOwogfQogCi0vLyBUT0RPKHZsYWRsQGdvb2ds
ZS5jb20pOiBGYWN0b3IgdGhlIHNlYXJjaCBmdW5jdGlvbmFsaXR5IGludG8gVmVjdG9yOjpGaW5k
LgorLy8gRklYTUU6IEZhY3RvciB0aGUgc2VhcmNoIGZ1bmN0aW9uYWxpdHkgaW50byBWZWN0b3I6
OkZpbmQuCiBUZXN0RXZlbnRMaXN0ZW5lciogVGVzdEV2ZW50UmVwZWF0ZXI6OlJlbGVhc2UoVGVz
dEV2ZW50TGlzdGVuZXIgKmxpc3RlbmVyKSB7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlz
dGVuZXJzXy5zaXplKCk7ICsraSkgewogICAgIGlmIChsaXN0ZW5lcnNfW2ldID09IGxpc3RlbmVy
KSB7CkBAIC0yOTk2LDYgKzM0MjAsMTEgQEAgY2xhc3MgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVy
IDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewogICBleHBsaWNpdCBYbWxVbml0VGVz
dFJlc3VsdFByaW50ZXIoY29uc3QgY2hhciogb3V0cHV0X2ZpbGUpOwogCiAgIHZpcnR1YWwgdm9p
ZCBPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwgaW50IGl0ZXJh
dGlvbik7CisgIHZvaWQgTGlzdFRlc3RzTWF0Y2hpbmdGaWx0ZXIoY29uc3Qgc3RkOjp2ZWN0b3I8
VGVzdENhc2UqPiYgdGVzdF9jYXNlcyk7CisKKyAgLy8gUHJpbnRzIGFuIFhNTCBzdW1tYXJ5IG9m
IGFsbCB1bml0IHRlc3RzLgorICBzdGF0aWMgdm9pZCBQcmludFhtbFRlc3RzTGlzdChzdGQ6Om9z
dHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8VGVzdENhc2UqPiYgdGVzdF9jYXNlcyk7CiAKICBwcml2YXRlOgogICAvLyBJcyBj
IGEgd2hpdGVzcGFjZSBjaGFyYWN0ZXIgdGhhdCBpcyBub3JtYWxpemVkIHRvIGEgc3BhY2UgY2hh
cmFjdGVyCkBAIC0zMDEzLDE4ICszNDQyLDI3IEBAIGNsYXNzIFhtbFVuaXRUZXN0UmVzdWx0UHJp
bnRlciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKICAgLy8gaXNfYXR0cmlidXRl
IGlzIHRydWUsIHRoZSB0ZXh0IGlzIG1lYW50IHRvIGFwcGVhciBhcyBhbiBhdHRyaWJ1dGUKICAg
Ly8gdmFsdWUsIGFuZCBub3JtYWxpemFibGUgd2hpdGVzcGFjZSBpcyBwcmVzZXJ2ZWQgYnkgcmVw
bGFjaW5nIGl0CiAgIC8vIHdpdGggY2hhcmFjdGVyIHJlZmVyZW5jZXMuCi0gIHN0YXRpYyBTdHJp
bmcgRXNjYXBlWG1sKGNvbnN0IGNoYXIqIHN0ciwgYm9vbCBpc19hdHRyaWJ1dGUpOworICBzdGF0
aWMgc3RkOjpzdHJpbmcgRXNjYXBlWG1sKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIsIGJvb2wgaXNf
YXR0cmlidXRlKTsKIAogICAvLyBSZXR1cm5zIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBhbGwgY2hh
cmFjdGVycyBpbnZhbGlkIGluIFhNTCByZW1vdmVkLgotICBzdGF0aWMgU3RyaW5nIFJlbW92ZUlu
dmFsaWRYbWxDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIHN0cik7CisgIHN0YXRpYyBzdGQ6OnN0cmlu
ZyBSZW1vdmVJbnZhbGlkWG1sQ2hhcmFjdGVycyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyKTsKIAog
ICAvLyBDb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCBFc2NhcGVYbWwgd2hlbiBzdHIgaXMgYW4g
YXR0cmlidXRlIHZhbHVlLgotICBzdGF0aWMgU3RyaW5nIEVzY2FwZVhtbEF0dHJpYnV0ZShjb25z
dCBjaGFyKiBzdHIpIHsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEVzY2FwZVhtbEF0dHJpYnV0ZShj
b25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7CiAgICAgcmV0dXJuIEVzY2FwZVhtbChzdHIsIHRydWUp
OwogICB9CiAKICAgLy8gQ29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgRXNjYXBlWG1sIHdoZW4g
c3RyIGlzIG5vdCBhbiBhdHRyaWJ1dGUgdmFsdWUuCi0gIHN0YXRpYyBTdHJpbmcgRXNjYXBlWG1s
VGV4dChjb25zdCBjaGFyKiBzdHIpIHsgcmV0dXJuIEVzY2FwZVhtbChzdHIsIGZhbHNlKTsgfQor
ICBzdGF0aWMgc3RkOjpzdHJpbmcgRXNjYXBlWG1sVGV4dChjb25zdCBjaGFyKiBzdHIpIHsKKyAg
ICByZXR1cm4gRXNjYXBlWG1sKHN0ciwgZmFsc2UpOworICB9CisKKyAgLy8gVmVyaWZpZXMgdGhh
dCB0aGUgZ2l2ZW4gYXR0cmlidXRlIGJlbG9uZ3MgdG8gdGhlIGdpdmVuIGVsZW1lbnQgYW5kCisg
IC8vIHN0cmVhbXMgdGhlIGF0dHJpYnV0ZSBhcyBYTUwuCisgIHN0YXRpYyB2b2lkIE91dHB1dFht
bEF0dHJpYnV0ZShzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBlbGVtZW50X25hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSk7CiAKICAgLy8g
U3RyZWFtcyBhbiBYTUwgQ0RBVEEgc2VjdGlvbiwgZXNjYXBpbmcgaW52YWxpZCBDREFUQSBzZXF1
ZW5jZXMgYXMgbmVlZGVkLgogICBzdGF0aWMgdm9pZCBPdXRwdXRYbWxDRGF0YVNlY3Rpb24oOjpz
dGQ6Om9zdHJlYW0qIHN0cmVhbSwgY29uc3QgY2hhciogZGF0YSk7CkBAIC0zMDM1LDE5ICszNDcz
LDI2IEBAIGNsYXNzIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlciA6IHB1YmxpYyBFbXB0eVRlc3RF
dmVudExpc3RlbmVyIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVz
dEluZm8mIHRlc3RfaW5mbyk7CiAKICAgLy8gUHJpbnRzIGFuIFhNTCByZXByZXNlbnRhdGlvbiBv
ZiBhIFRlc3RDYXNlIG9iamVjdAotICBzdGF0aWMgdm9pZCBQcmludFhtbFRlc3RDYXNlKEZJTEUq
IG91dCwgY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSk7CisgIHN0YXRpYyB2b2lkIFByaW50WG1s
VGVzdENhc2UoOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKTsKIAogICAvLyBQcmludHMgYW4gWE1M
IHN1bW1hcnkgb2YgdW5pdF90ZXN0IHRvIG91dHB1dCBzdHJlYW0gb3V0LgotICBzdGF0aWMgdm9p
ZCBQcmludFhtbFVuaXRUZXN0KEZJTEUqIG91dCwgY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCk7
CisgIHN0YXRpYyB2b2lkIFByaW50WG1sVW5pdFRlc3QoOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0
KTsKIAogICAvLyBQcm9kdWNlcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHRlc3QgcHJvcGVy
dGllcyBpbiBhIHJlc3VsdCBhcyBzcGFjZQogICAvLyBkZWxpbWl0ZWQgWE1MIGF0dHJpYnV0ZXMg
YmFzZWQgb24gdGhlIHByb3BlcnR5IGtleT0idmFsdWUiIHBhaXJzLgotICAvLyBXaGVuIHRoZSBT
dHJpbmcgaXMgbm90IGVtcHR5LCBpdCBpbmNsdWRlcyBhIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcs
CisgIC8vIFdoZW4gdGhlIHN0ZDo6c3RyaW5nIGlzIG5vdCBlbXB0eSwgaXQgaW5jbHVkZXMgYSBz
cGFjZSBhdCB0aGUgYmVnaW5uaW5nLAogICAvLyB0byBkZWxpbWl0IHRoaXMgYXR0cmlidXRlIGZy
b20gcHJpb3IgYXR0cmlidXRlcy4KLSAgc3RhdGljIFN0cmluZyBUZXN0UHJvcGVydGllc0FzWG1s
QXR0cmlidXRlcyhjb25zdCBUZXN0UmVzdWx0JiByZXN1bHQpOworICBzdGF0aWMgc3RkOjpzdHJp
bmcgVGVzdFByb3BlcnRpZXNBc1htbEF0dHJpYnV0ZXMoY29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0
KTsKKworICAvLyBTdHJlYW1zIGFuIFhNTCByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGVzdCBwcm9w
ZXJ0aWVzIG9mIGEgVGVzdFJlc3VsdAorICAvLyBvYmplY3QuCisgIHN0YXRpYyB2b2lkIE91dHB1
dFhtbFRlc3RQcm9wZXJ0aWVzKHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UmVzdWx0JiByZXN1bHQpOwogCiAgIC8v
IFRoZSBvdXRwdXQgZmlsZS4KLSAgY29uc3QgU3RyaW5nIG91dHB1dF9maWxlXzsKKyAgY29uc3Qg
c3RkOjpzdHJpbmcgb3V0cHV0X2ZpbGVfOwogCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyKTsKIH07CkBAIC0zMDU1LDQxICszNTAwLDI3
IEBAIGNsYXNzIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVu
dExpc3RlbmVyIHsKIC8vIENyZWF0ZXMgYSBuZXcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyLgog
WG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIoY29uc3Qg
Y2hhciogb3V0cHV0X2ZpbGUpCiAgICAgOiBvdXRwdXRfZmlsZV8ob3V0cHV0X2ZpbGUpIHsKLSAg
aWYgKG91dHB1dF9maWxlXy5jX3N0cigpID09IE5VTEwgfHwgb3V0cHV0X2ZpbGVfLmVtcHR5KCkp
IHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIlhNTCBvdXRwdXQgZmlsZSBtYXkgbm90IGJlIG51bGxc
biIpOwotICAgIGZmbHVzaChzdGRlcnIpOwotICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgaWYg
KG91dHB1dF9maWxlXy5lbXB0eSgpKSB7CisgICAgR1RFU1RfTE9HXyhGQVRBTCkgPDwgIlhNTCBv
dXRwdXQgZmlsZSBtYXkgbm90IGJlIG51bGwiOwogICB9CiB9CiAKIC8vIENhbGxlZCBhZnRlciB0
aGUgdW5pdCB0ZXN0IGVuZHMuCiB2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0
SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKml0ZXJhdGlvbiovKSB7Ci0g
IEZJTEUqIHhtbG91dCA9IE5VTEw7Ci0gIEZpbGVQYXRoIG91dHB1dF9maWxlKG91dHB1dF9maWxl
Xyk7Ci0gIEZpbGVQYXRoIG91dHB1dF9kaXIob3V0cHV0X2ZpbGUuUmVtb3ZlRmlsZU5hbWUoKSk7
CisgIEZJTEUqIHhtbG91dCA9IE9wZW5GaWxlRm9yV3JpdGluZyhvdXRwdXRfZmlsZV8pOworICBz
dGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07CisgIFByaW50WG1sVW5pdFRlc3QoJnN0cmVhbSwgdW5p
dF90ZXN0KTsKKyAgZnByaW50Zih4bWxvdXQsICIlcyIsIFN0cmluZ1N0cmVhbVRvU3RyaW5nKCZz
dHJlYW0pLmNfc3RyKCkpOworICBmY2xvc2UoeG1sb3V0KTsKK30KIAotICBpZiAob3V0cHV0X2Rp
ci5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpIHsKLSAgICB4bWxvdXQgPSBwb3NpeDo6
Rk9wZW4ob3V0cHV0X2ZpbGVfLmNfc3RyKCksICJ3Iik7Ci0gIH0KLSAgaWYgKHhtbG91dCA9PSBO
VUxMKSB7Ci0gICAgLy8gVE9ETyh3YW4pOiByZXBvcnQgdGhlIHJlYXNvbiBvZiB0aGUgZmFpbHVy
ZS4KLSAgICAvLwotICAgIC8vIFdlIGRvbid0IGRvIGl0IGZvciBub3cgYXM6Ci0gICAgLy8KLSAg
ICAvLyAgIDEuIFRoZXJlIGlzIG5vIHVyZ2VudCBuZWVkIGZvciBpdC4KLSAgICAvLyAgIDIuIEl0
J3MgYSBiaXQgaW52b2x2ZWQgdG8gbWFrZSB0aGUgZXJybm8gdmFyaWFibGUgdGhyZWFkLXNhZmUg
b24KLSAgICAvLyAgICAgIGFsbCB0aHJlZSBvcGVyYXRpbmcgc3lzdGVtcyAoTGludXgsIFdpbmRv
d3MsIGFuZCBNYWMgT1MpLgotICAgIC8vICAgMy4gVG8gaW50ZXJwcmV0IHRoZSBtZWFuaW5nIG9m
IGVycm5vIGluIGEgdGhyZWFkLXNhZmUgd2F5LAotICAgIC8vICAgICAgd2UgbmVlZCB0aGUgc3Ry
ZXJyb3JfcigpIGZ1bmN0aW9uLCB3aGljaCBpcyBub3QgYXZhaWxhYmxlIG9uCi0gICAgLy8gICAg
ICBXaW5kb3dzLgotICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgIlVuYWJsZSB0byBv
cGVuIGZpbGUgXCIlc1wiXG4iLAotICAgICAgICAgICAgb3V0cHV0X2ZpbGVfLmNfc3RyKCkpOwot
ICAgIGZmbHVzaChzdGRlcnIpOwotICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKLSAgfQotICBQcmlu
dFhtbFVuaXRUZXN0KHhtbG91dCwgdW5pdF90ZXN0KTsKK3ZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQ
cmludGVyOjpMaXN0VGVzdHNNYXRjaGluZ0ZpbHRlcigKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxU
ZXN0Q2FzZSo+JiB0ZXN0X2Nhc2VzKSB7CisgIEZJTEUqIHhtbG91dCA9IE9wZW5GaWxlRm9yV3Jp
dGluZyhvdXRwdXRfZmlsZV8pOworICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07CisgIFByaW50
WG1sVGVzdHNMaXN0KCZzdHJlYW0sIHRlc3RfY2FzZXMpOworICBmcHJpbnRmKHhtbG91dCwgIiVz
IiwgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnN0cmVhbSkuY19zdHIoKSk7CiAgIGZjbG9zZSh4bWxv
dXQpOwogfQogCkBAIC0zMTAzLDQ0ICszNTM0LDQ1IEBAIHZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQ
cmludGVyOjpPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwKIC8v
IG1vZHVsZSB3aWxsIGNvbnNpc3Qgb2Ygb3JkaW5hcnkgRW5nbGlzaCB0ZXh0LgogLy8gSWYgdGhp
cyBtb2R1bGUgaXMgZXZlciBtb2RpZmllZCB0byBwcm9kdWNlIHZlcnNpb24gMS4xIFhNTCBvdXRw
dXQsCiAvLyBtb3N0IGludmFsaWQgY2hhcmFjdGVycyBjYW4gYmUgcmV0YWluZWQgdXNpbmcgY2hh
cmFjdGVyIHJlZmVyZW5jZXMuCi0vLyBUT0RPKHdhbik6IEl0IG1pZ2h0IGJlIG5pY2UgdG8gaGF2
ZSBhIG1pbmltYWxseSBpbnZhc2l2ZSwgaHVtYW4tcmVhZGFibGUKKy8vIEZJWE1FOiBJdCBtaWdo
dCBiZSBuaWNlIHRvIGhhdmUgYSBtaW5pbWFsbHkgaW52YXNpdmUsIGh1bWFuLXJlYWRhYmxlCiAv
LyBlc2NhcGluZyBzY2hlbWUgZm9yIGludmFsaWQgY2hhcmFjdGVycywgcmF0aGVyIHRoYW4gZHJv
cHBpbmcgdGhlbS4KLVN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OkVzY2FwZVhtbChj
b25zdCBjaGFyKiBzdHIsIGJvb2wgaXNfYXR0cmlidXRlKSB7CitzdGQ6OnN0cmluZyBYbWxVbml0
VGVzdFJlc3VsdFByaW50ZXI6OkVzY2FwZVhtbCgKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgc3Ry
LCBib29sIGlzX2F0dHJpYnV0ZSkgewogICBNZXNzYWdlIG07CiAKLSAgaWYgKHN0ciAhPSBOVUxM
KSB7Ci0gICAgZm9yIChjb25zdCBjaGFyKiBzcmMgPSBzdHI7ICpzcmM7ICsrc3JjKSB7Ci0gICAg
ICBzd2l0Y2ggKCpzcmMpIHsKLSAgICAgICAgY2FzZSAnPCc6Ci0gICAgICAgICAgbSA8PCAiJmx0
OyI7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJz4nOgotICAgICAgICAgIG0gPDwg
IiZndDsiOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICcmJzoKLSAgICAgICAgICBt
IDw8ICImYW1wOyI7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1wnJzoKLSAgICAg
ICAgICBpZiAoaXNfYXR0cmlidXRlKQotICAgICAgICAgICAgbSA8PCAiJmFwb3M7IjsKLSAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtIDw8ICdcJyc7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgJyInOgotICAgICAgICAgIGlmIChpc19hdHRyaWJ1dGUpCi0gICAgICAgICAgICBt
IDw8ICImcXVvdDsiOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ci5zaXplKCk7ICsraSkg
eworICAgIGNvbnN0IGNoYXIgY2ggPSBzdHJbaV07CisgICAgc3dpdGNoIChjaCkgeworICAgICAg
Y2FzZSAnPCc6CisgICAgICAgIG0gPDwgIiZsdDsiOworICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgJz4nOgorICAgICAgICBtIDw8ICImZ3Q7IjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
ICcmJzoKKyAgICAgICAgbSA8PCAiJmFtcDsiOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
J1wnJzoKKyAgICAgICAgaWYgKGlzX2F0dHJpYnV0ZSkKKyAgICAgICAgICBtIDw8ICImYXBvczsi
OworICAgICAgICBlbHNlCisgICAgICAgICAgbSA8PCAnXCcnOworICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgJyInOgorICAgICAgICBpZiAoaXNfYXR0cmlidXRlKQorICAgICAgICAgIG0gPDwg
IiZxdW90OyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBtIDw8ICciJzsKKyAgICAgICAgYnJl
YWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBpZiAoSXNWYWxpZFhtbENoYXJhY3RlcihjaCkp
IHsKKyAgICAgICAgICBpZiAoaXNfYXR0cmlidXRlICYmIElzTm9ybWFsaXphYmxlV2hpdGVzcGFj
ZShjaCkpCisgICAgICAgICAgICBtIDw8ICImI3giIDw8IFN0cmluZzo6Rm9ybWF0Qnl0ZShzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpCisgICAgICAgICAgICAgIDw8ICI7IjsKICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtIDw8ICciJzsKLSAgICAgICAgICBicmVhazsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICBpZiAoSXNWYWxpZFhtbENoYXJhY3Rlcigqc3JjKSkgewot
ICAgICAgICAgICAgaWYgKGlzX2F0dHJpYnV0ZSAmJiBJc05vcm1hbGl6YWJsZVdoaXRlc3BhY2Uo
KnNyYykpCi0gICAgICAgICAgICAgIG0gPDwgU3RyaW5nOjpGb3JtYXQoIiYjeCUwMlg7IiwgdW5z
aWduZWQoKnNyYykpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICBtIDw8ICpzcmM7
Ci0gICAgICAgICAgfQotICAgICAgICAgIGJyZWFrOwotICAgICAgfQorICAgICAgICAgICAgbSA8
PCBjaDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICB9CiAgIH0KIApAQCAtMzE1MCwy
MSArMzU4MiwyMCBAQCBTdHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpFc2NhcGVYbWwo
Y29uc3QgY2hhciogc3RyLCBib29sIGlzX2F0dHJpYnV0ZSkgewogLy8gUmV0dXJucyB0aGUgZ2l2
ZW4gc3RyaW5nIHdpdGggYWxsIGNoYXJhY3RlcnMgaW52YWxpZCBpbiBYTUwgcmVtb3ZlZC4KIC8v
IEN1cnJlbnRseSBpbnZhbGlkIGNoYXJhY3RlcnMgYXJlIGRyb3BwZWQgZnJvbSB0aGUgc3RyaW5n
LiBBbgogLy8gYWx0ZXJuYXRpdmUgaXMgdG8gcmVwbGFjZSB0aGVtIHdpdGggY2VydGFpbiBjaGFy
YWN0ZXJzIHN1Y2ggYXMgLiBvciA/LgotU3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6
UmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoY29uc3QgY2hhciogc3RyKSB7Ci0gIGNoYXIqIGNv
bnN0IG91dHB1dCA9IG5ldyBjaGFyW3N0cmxlbihzdHIpICsgMV07Ci0gIGNoYXIqIGFwcGVuZGVy
ID0gb3V0cHV0OwotICBmb3IgKGNoYXIgY2ggPSAqc3RyOyBjaCAhPSAnXDAnOyBjaCA9ICorK3N0
cikKLSAgICBpZiAoSXNWYWxpZFhtbENoYXJhY3RlcihjaCkpCi0gICAgICAqYXBwZW5kZXIrKyA9
IGNoOwotICAqYXBwZW5kZXIgPSAnXDAnOworc3RkOjpzdHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQ
cmludGVyOjpSZW1vdmVJbnZhbGlkWG1sQ2hhcmFjdGVycygKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgc3RyKSB7CisgIHN0ZDo6c3RyaW5nIG91dHB1dDsKKyAgb3V0cHV0LnJlc2VydmUoc3RyLnNp
emUoKSk7CisgIGZvciAoc3RkOjpzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc3RyLmJlZ2lu
KCk7IGl0ICE9IHN0ci5lbmQoKTsgKytpdCkKKyAgICBpZiAoSXNWYWxpZFhtbENoYXJhY3Rlcigq
aXQpKQorICAgICAgb3V0cHV0LnB1c2hfYmFjaygqaXQpOwogCi0gIFN0cmluZyByZXRfdmFsdWUo
b3V0cHV0KTsKLSAgZGVsZXRlW10gb3V0cHV0OwotICByZXR1cm4gcmV0X3ZhbHVlOworICByZXR1
cm4gb3V0cHV0OwogfQogCiAvLyBUaGUgZm9sbG93aW5nIHJvdXRpbmVzIGdlbmVyYXRlIGFuIFhN
TCByZXByZXNlbnRhdGlvbiBvZiBhIFVuaXRUZXN0CiAvLyBvYmplY3QuCisvLyBHT09HTEVURVNU
X0NNMDAwOSBETyBOT1QgREVMRVRFCiAvLwogLy8gVGhpcyBpcyBob3cgR29vZ2xlIFRlc3QgY29u
Y2VwdHMgbWFwIHRvIHRoZSBEVEQ6CiAvLwpAQCAtMzE4MiwxMCArMzYxMyw0MSBAQCBTdHJpbmcg
WG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpSZW1vdmVJbnZhbGlkWG1sQ2hhcmFjdGVycyhjb25z
dCBjaGFyKiBzdHIpIHsKIC8vIEZvcm1hdHMgdGhlIGdpdmVuIHRpbWUgaW4gbWlsbGlzZWNvbmRz
IGFzIHNlY29uZHMuCiBzdGQ6OnN0cmluZyBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHMoVGlt
ZUluTWlsbGlzIG1zKSB7CiAgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0gIHNzIDw8IG1zLzEw
MDAuMDsKKyAgc3MgPDwgKHN0YXRpY19jYXN0PGRvdWJsZT4obXMpICogMWUtMyk7CiAgIHJldHVy
biBzcy5zdHIoKTsKIH0KIAorc3RhdGljIGJvb2wgUG9ydGFibGVMb2NhbHRpbWUodGltZV90IHNl
Y29uZHMsIHN0cnVjdCB0bSogb3V0KSB7CisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyAgcmV0dXJu
IGxvY2FsdGltZV9zKG91dCwgJnNlY29uZHMpID09IDA7CisjZWxpZiBkZWZpbmVkKF9fTUlOR1cz
Ml9fKSB8fCBkZWZpbmVkKF9fTUlOR1c2NF9fKQorICAvLyBNSU5HVyA8dGltZS5oPiBwcm92aWRl
cyBuZWl0aGVyIGxvY2FsdGltZV9yIG5vciBsb2NhbHRpbWVfcywgYnV0IHVzZXMKKyAgLy8gV2lu
ZG93cycgbG9jYWx0aW1lKCksIHdoaWNoIGhhcyBhIHRocmVhZC1sb2NhbCB0bSBidWZmZXIuCisg
IHN0cnVjdCB0bSogdG1fcHRyID0gbG9jYWx0aW1lKCZzZWNvbmRzKTsgIC8vIE5PTElOVAorICBp
ZiAodG1fcHRyID09IE5VTEwpCisgICAgcmV0dXJuIGZhbHNlOworICAqb3V0ID0gKnRtX3B0cjsK
KyAgcmV0dXJuIHRydWU7CisjZWxzZQorICByZXR1cm4gbG9jYWx0aW1lX3IoJnNlY29uZHMsIG91
dCkgIT0gTlVMTDsKKyNlbmRpZgorfQorCisvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gZXBvY2ggdGlt
ZSBpbiBtaWxsaXNlY29uZHMgdG8gYSBkYXRlIHN0cmluZyBpbiB0aGUgSVNPCisvLyA4NjAxIGZv
cm1hdCwgd2l0aG91dCB0aGUgdGltZXpvbmUgaW5mb3JtYXRpb24uCitzdGQ6OnN0cmluZyBGb3Jt
YXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMShUaW1lSW5NaWxsaXMgbXMpIHsKKyAgc3RydWN0
IHRtIHRpbWVfc3RydWN0OworICBpZiAoIVBvcnRhYmxlTG9jYWx0aW1lKHN0YXRpY19jYXN0PHRp
bWVfdD4obXMgLyAxMDAwKSwgJnRpbWVfc3RydWN0KSkKKyAgICByZXR1cm4gIiI7CisgIC8vIFlZ
WVktTU0tRERUaGg6bW06c3MKKyAgcmV0dXJuIFN0cmVhbWFibGVUb1N0cmluZyh0aW1lX3N0cnVj
dC50bV95ZWFyICsgMTkwMCkgKyAiLSIgKworICAgICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIo
dGltZV9zdHJ1Y3QudG1fbW9uICsgMSkgKyAiLSIgKworICAgICAgU3RyaW5nOjpGb3JtYXRJbnRX
aWR0aDIodGltZV9zdHJ1Y3QudG1fbWRheSkgKyAiVCIgKworICAgICAgU3RyaW5nOjpGb3JtYXRJ
bnRXaWR0aDIodGltZV9zdHJ1Y3QudG1faG91cikgKyAiOiIgKworICAgICAgU3RyaW5nOjpGb3Jt
YXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1fbWluKSArICI6IiArCisgICAgICBTdHJpbmc6OkZv
cm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9zZWMpOworfQorCiAvLyBTdHJlYW1zIGFuIFhN
TCBDREFUQSBzZWN0aW9uLCBlc2NhcGluZyBpbnZhbGlkIENEQVRBIHNlcXVlbmNlcyBhcyBuZWVk
ZWQuCiB2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T3V0cHV0WG1sQ0RhdGFTZWN0aW9u
KDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEpIHsKQEAgLTMyMDYsODkgKzM2
NjgsMTc5IEBAIHZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPdXRwdXRYbWxDRGF0YVNl
Y3Rpb24oOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKICAgKnN0cmVhbSA8PCAiXV0+IjsKIH0KIAor
dm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dFhtbEF0dHJpYnV0ZSgKKyAgICBz
dGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZWxlbWVudF9uYW1l
LAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2
YWx1ZSkgeworICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGFsbG93ZWRfbmFtZXMg
PQorICAgICAgR2V0UmVzZXJ2ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudChlbGVtZW50X25hbWUpOwor
CisgIEdURVNUX0NIRUNLXyhzdGQ6OmZpbmQoYWxsb3dlZF9uYW1lcy5iZWdpbigpLCBhbGxvd2Vk
X25hbWVzLmVuZCgpLCBuYW1lKSAhPQorICAgICAgICAgICAgICAgICAgIGFsbG93ZWRfbmFtZXMu
ZW5kKCkpCisgICAgICA8PCAiQXR0cmlidXRlICIgPDwgbmFtZSA8PCAiIGlzIG5vdCBhbGxvd2Vk
IGZvciBlbGVtZW50IDwiIDw8IGVsZW1lbnRfbmFtZQorICAgICAgPDwgIj4uIjsKKworICAqc3Ry
ZWFtIDw8ICIgIiA8PCBuYW1lIDw8ICI9XCIiIDw8IEVzY2FwZVhtbEF0dHJpYnV0ZSh2YWx1ZSkg
PDwgIlwiIjsKK30KKwogLy8gUHJpbnRzIGFuIFhNTCByZXByZXNlbnRhdGlvbiBvZiBhIFRlc3RJ
bmZvIG9iamVjdC4KLS8vIFRPRE8od2FuKTogVGhlcmUgaXMgYWxzbyB2YWx1ZSBpbiBwcmludGlu
ZyBwcm9wZXJ0aWVzIHdpdGggdGhlIHBsYWluIHByaW50ZXIuCisvLyBGSVhNRTogVGhlcmUgaXMg
YWxzbyB2YWx1ZSBpbiBwcmludGluZyBwcm9wZXJ0aWVzIHdpdGggdGhlIHBsYWluIHByaW50ZXIu
CiB2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T3V0cHV0WG1sVGVzdEluZm8oOjpzdGQ6
Om9zdHJlYW0qIHN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZv
KSB7CiAgIGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCA9ICp0ZXN0X2luZm8ucmVzdWx0KCk7Ci0g
ICpzdHJlYW0gPDwgIiAgICA8dGVzdGNhc2UgbmFtZT1cIiIKLSAgICAgICAgICA8PCBFc2NhcGVY
bWxBdHRyaWJ1dGUodGVzdF9pbmZvLm5hbWUoKSkuY19zdHIoKQotICAgICAgICAgIDw8ICJcIiBz
dGF0dXM9XCIiCi0gICAgICAgICAgPDwgKHRlc3RfaW5mby5zaG91bGRfcnVuKCkgPyAicnVuIiA6
ICJub3RydW4iKQotICAgICAgICAgIDw8ICJcIiB0aW1lPVwiIgotICAgICAgICAgIDw8IEZvcm1h
dFRpbWVJbk1pbGxpc0FzU2Vjb25kcyhyZXN1bHQuZWxhcHNlZF90aW1lKCkpCi0gICAgICAgICAg
PDwgIlwiIGNsYXNzbmFtZT1cIiIgPDwgRXNjYXBlWG1sQXR0cmlidXRlKHRlc3RfY2FzZV9uYW1l
KS5jX3N0cigpCi0gICAgICAgICAgPDwgIlwiIiA8PCBUZXN0UHJvcGVydGllc0FzWG1sQXR0cmli
dXRlcyhyZXN1bHQpLmNfc3RyKCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0Y2FzZSA9ICJ0
ZXN0Y2FzZSI7CisKKyAgaWYgKHRlc3RfaW5mby5pc19pbl9hbm90aGVyX3NoYXJkKCkpIHsKKyAg
ICByZXR1cm47CisgIH0KKworICAqc3RyZWFtIDw8ICIgICAgPHRlc3RjYXNlIjsKKyAgT3V0cHV0
WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNlLCAibmFtZSIsIHRlc3RfaW5mby5uYW1lKCkp
OworCisgIGlmICh0ZXN0X2luZm8udmFsdWVfcGFyYW0oKSAhPSBOVUxMKSB7CisgICAgT3V0cHV0
WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNlLCAidmFsdWVfcGFyYW0iLAorICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0X2luZm8udmFsdWVfcGFyYW0oKSk7CisgIH0KKyAgaWYgKHRlc3Rf
aW5mby50eXBlX3BhcmFtKCkgIT0gTlVMTCkgeworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJl
YW0sIGtUZXN0Y2FzZSwgInR5cGVfcGFyYW0iLCB0ZXN0X2luZm8udHlwZV9wYXJhbSgpKTsKKyAg
fQorICBpZiAoR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSkgeworICAgIE91dHB1dFhtbEF0dHJpYnV0
ZShzdHJlYW0sIGtUZXN0Y2FzZSwgImZpbGUiLCB0ZXN0X2luZm8uZmlsZSgpKTsKKyAgICBPdXRw
dXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJsaW5lIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHRlc3RfaW5mby5saW5lKCkpKTsKKyAgICAqc3Ry
ZWFtIDw8ICIgLz5cbiI7CisgICAgcmV0dXJuOworICB9CisKKyAgT3V0cHV0WG1sQXR0cmlidXRl
KHN0cmVhbSwga1Rlc3RjYXNlLCAic3RhdHVzIiwKKyAgICAgICAgICAgICAgICAgICAgIHRlc3Rf
aW5mby5zaG91bGRfcnVuKCkgPyAicnVuIiA6ICJub3RydW4iKTsKKyAgT3V0cHV0WG1sQXR0cmli
dXRlKHN0cmVhbSwga1Rlc3RjYXNlLCAidGltZSIsCisgICAgICAgICAgICAgICAgICAgICBGb3Jt
YXRUaW1lSW5NaWxsaXNBc1NlY29uZHMocmVzdWx0LmVsYXBzZWRfdGltZSgpKSk7CisgIE91dHB1
dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgImNsYXNzbmFtZSIsIHRlc3RfY2FzZV9u
YW1lKTsKIAogICBpbnQgZmFpbHVyZXMgPSAwOwogICBmb3IgKGludCBpID0gMDsgaSA8IHJlc3Vs
dC50b3RhbF9wYXJ0X2NvdW50KCk7ICsraSkgewogICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBw
YXJ0ID0gcmVzdWx0LkdldFRlc3RQYXJ0UmVzdWx0KGkpOwogICAgIGlmIChwYXJ0LmZhaWxlZCgp
KSB7Ci0gICAgICBpZiAoKytmYWlsdXJlcyA9PSAxKQorICAgICAgaWYgKCsrZmFpbHVyZXMgPT0g
MSkgewogICAgICAgICAqc3RyZWFtIDw8ICI+XG4iOworICAgICAgfQorICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgbG9jYXRpb24gPQorICAgICAgICAgIGludGVybmFsOjpGb3JtYXRDb21waWxlcklu
ZGVwZW5kZW50RmlsZUxvY2F0aW9uKHBhcnQuZmlsZV9uYW1lKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydC5saW5lX251bWJl
cigpKTsKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHN1bW1hcnkgPSBsb2NhdGlvbiArICJcbiIg
KyBwYXJ0LnN1bW1hcnkoKTsKICAgICAgICpzdHJlYW0gPDwgIiAgICAgIDxmYWlsdXJlIG1lc3Nh
Z2U9XCIiCi0gICAgICAgICAgICAgIDw8IEVzY2FwZVhtbEF0dHJpYnV0ZShwYXJ0LnN1bW1hcnko
KSkuY19zdHIoKQorICAgICAgICAgICAgICA8PCBFc2NhcGVYbWxBdHRyaWJ1dGUoc3VtbWFyeS5j
X3N0cigpKQogICAgICAgICAgICAgICA8PCAiXCIgdHlwZT1cIlwiPiI7Ci0gICAgICBjb25zdCBT
dHJpbmcgbWVzc2FnZSA9IFJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKFN0cmluZzo6Rm9ybWF0
KAotICAgICAgICAgICIlczolZFxuJXMiLAotICAgICAgICAgIHBhcnQuZmlsZV9uYW1lKCksIHBh
cnQubGluZV9udW1iZXIoKSwKLSAgICAgICAgICBwYXJ0Lm1lc3NhZ2UoKSkuY19zdHIoKSk7Ci0g
ICAgICBPdXRwdXRYbWxDRGF0YVNlY3Rpb24oc3RyZWFtLCBtZXNzYWdlLmNfc3RyKCkpOworICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgZGV0YWlsID0gbG9jYXRpb24gKyAiXG4iICsgcGFydC5tZXNz
YWdlKCk7CisgICAgICBPdXRwdXRYbWxDRGF0YVNlY3Rpb24oc3RyZWFtLCBSZW1vdmVJbnZhbGlk
WG1sQ2hhcmFjdGVycyhkZXRhaWwpLmNfc3RyKCkpOwogICAgICAgKnN0cmVhbSA8PCAiPC9mYWls
dXJlPlxuIjsKICAgICB9CiAgIH0KIAotICBpZiAoZmFpbHVyZXMgPT0gMCkKKyAgaWYgKGZhaWx1
cmVzID09IDAgJiYgcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKSA9PSAwKSB7CiAgICAgKnN0
cmVhbSA8PCAiIC8+XG4iOwotICBlbHNlCisgIH0gZWxzZSB7CisgICAgaWYgKGZhaWx1cmVzID09
IDApIHsKKyAgICAgICpzdHJlYW0gPDwgIj5cbiI7CisgICAgfQorICAgIE91dHB1dFhtbFRlc3RQ
cm9wZXJ0aWVzKHN0cmVhbSwgcmVzdWx0KTsKICAgICAqc3RyZWFtIDw8ICIgICAgPC90ZXN0Y2Fz
ZT5cbiI7CisgIH0KIH0KIAogLy8gUHJpbnRzIGFuIFhNTCByZXByZXNlbnRhdGlvbiBvZiBhIFRl
c3RDYXNlIG9iamVjdAotdm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlByaW50WG1sVGVz
dENhc2UoRklMRSogb3V0LAordm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlByaW50WG1s
VGVzdENhc2Uoc3RkOjpvc3RyZWFtKiBzdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKSB7Ci0gIGZw
cmludGYob3V0LAotICAgICAgICAgICIgIDx0ZXN0c3VpdGUgbmFtZT1cIiVzXCIgdGVzdHM9XCIl
ZFwiIGZhaWx1cmVzPVwiJWRcIiAiCi0gICAgICAgICAgImRpc2FibGVkPVwiJWRcIiAiLAotICAg
ICAgICAgIEVzY2FwZVhtbEF0dHJpYnV0ZSh0ZXN0X2Nhc2UubmFtZSgpKS5jX3N0cigpLAotICAg
ICAgICAgIHRlc3RfY2FzZS50b3RhbF90ZXN0X2NvdW50KCksCi0gICAgICAgICAgdGVzdF9jYXNl
LmZhaWxlZF90ZXN0X2NvdW50KCksCi0gICAgICAgICAgdGVzdF9jYXNlLmRpc2FibGVkX3Rlc3Rf
Y291bnQoKSk7Ci0gIGZwcmludGYob3V0LAotICAgICAgICAgICJlcnJvcnM9XCIwXCIgdGltZT1c
IiVzXCI+XG4iLAotICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyh0ZXN0X2Nh
c2UuZWxhcHNlZF90aW1lKCkpLmNfc3RyKCkpOworICBjb25zdCBzdGQ6OnN0cmluZyBrVGVzdHN1
aXRlID0gInRlc3RzdWl0ZSI7CisgICpzdHJlYW0gPDwgIiAgPCIgPDwga1Rlc3RzdWl0ZTsKKyAg
T3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZSwgIm5hbWUiLCB0ZXN0X2Nhc2Uu
bmFtZSgpKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZSwgInRlc3Rz
IiwKKyAgICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh0ZXN0X2Nhc2UucmVw
b3J0YWJsZV90ZXN0X2NvdW50KCkpKTsKKyAgaWYgKCFHVEVTVF9GTEFHKGxpc3RfdGVzdHMpKSB7
CisgICAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZSwgImZhaWx1cmVzIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHRlc3RfY2FzZS5mYWls
ZWRfdGVzdF9jb3VudCgpKSk7CisgICAgT3V0cHV0WG1sQXR0cmlidXRlKAorICAgICAgICBzdHJl
YW0sIGtUZXN0c3VpdGUsICJkaXNhYmxlZCIsCisgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh0
ZXN0X2Nhc2UucmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkpKTsKKyAgICBPdXRwdXRY
bWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlLCAiZXJyb3JzIiwgIjAiKTsKKyAgICBPdXRw
dXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlLCAidGltZSIsCisgICAgICAgICAgICAg
ICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyh0ZXN0X2Nhc2UuZWxhcHNlZF90
aW1lKCkpKTsKKyAgICAqc3RyZWFtIDw8IFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKHRl
c3RfY2FzZS5hZF9ob2NfdGVzdF9yZXN1bHQoKSk7CisgIH0KKyAgKnN0cmVhbSA8PCAiPlxuIjsK
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXN0X2Nhc2UudG90YWxfdGVzdF9jb3VudCgpOyArK2kp
IHsKLSAgICBTdHJTdHJlYW0gc3RyZWFtOwotICAgIE91dHB1dFhtbFRlc3RJbmZvKCZzdHJlYW0s
IHRlc3RfY2FzZS5uYW1lKCksICp0ZXN0X2Nhc2UuR2V0VGVzdEluZm8oaSkpOwotICAgIGZwcmlu
dGYob3V0LCAiJXMiLCBTdHJTdHJlYW1Ub1N0cmluZygmc3RyZWFtKS5jX3N0cigpKTsKKyAgICBp
ZiAodGVzdF9jYXNlLkdldFRlc3RJbmZvKGkpLT5pc19yZXBvcnRhYmxlKCkpCisgICAgICBPdXRw
dXRYbWxUZXN0SW5mbyhzdHJlYW0sIHRlc3RfY2FzZS5uYW1lKCksICp0ZXN0X2Nhc2UuR2V0VGVz
dEluZm8oaSkpOwogICB9Ci0gIGZwcmludGYob3V0LCAiICA8L3Rlc3RzdWl0ZT5cbiIpOworICAq
c3RyZWFtIDw8ICIgIDwvIiA8PCBrVGVzdHN1aXRlIDw8ICI+XG4iOwogfQogCiAvLyBQcmludHMg
YW4gWE1MIHN1bW1hcnkgb2YgdW5pdF90ZXN0IHRvIG91dHB1dCBzdHJlYW0gb3V0Lgotdm9pZCBY
bWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlByaW50WG1sVW5pdFRlc3QoRklMRSogb3V0LAordm9p
ZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlByaW50WG1sVW5pdFRlc3Qoc3RkOjpvc3RyZWFt
KiBzdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KSB7Ci0gIGZwcmludGYob3V0LCAiPD94bWwgdmVy
c2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIj8+XG4iKTsKLSAgZnByaW50ZihvdXQsCi0g
ICAgICAgICAgIjx0ZXN0c3VpdGVzIHRlc3RzPVwiJWRcIiBmYWlsdXJlcz1cIiVkXCIgZGlzYWJs
ZWQ9XCIlZFwiICIKLSAgICAgICAgICAiZXJyb3JzPVwiMFwiIHRpbWU9XCIlc1wiICIsCi0gICAg
ICAgICAgdW5pdF90ZXN0LnRvdGFsX3Rlc3RfY291bnQoKSwKLSAgICAgICAgICB1bml0X3Rlc3Qu
ZmFpbGVkX3Rlc3RfY291bnQoKSwKLSAgICAgICAgICB1bml0X3Rlc3QuZGlzYWJsZWRfdGVzdF9j
b3VudCgpLAotICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyh1bml0X3Rlc3Qu
ZWxhcHNlZF90aW1lKCkpLmNfc3RyKCkpOworICBjb25zdCBzdGQ6OnN0cmluZyBrVGVzdHN1aXRl
cyA9ICJ0ZXN0c3VpdGVzIjsKKworICAqc3RyZWFtIDw8ICI8P3htbCB2ZXJzaW9uPVwiMS4wXCIg
ZW5jb2Rpbmc9XCJVVEYtOFwiPz5cbiI7CisgICpzdHJlYW0gPDwgIjwiIDw8IGtUZXN0c3VpdGVz
OworCisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGVzLCAidGVzdHMiLAor
ICAgICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5yZXBvcnRh
YmxlX3Rlc3RfY291bnQoKSkpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1
aXRlcywgImZhaWx1cmVzIiwKKyAgICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmlu
Zyh1bml0X3Rlc3QuZmFpbGVkX3Rlc3RfY291bnQoKSkpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUo
CisgICAgICBzdHJlYW0sIGtUZXN0c3VpdGVzLCAiZGlzYWJsZWQiLAorICAgICAgU3RyZWFtYWJs
ZVRvU3RyaW5nKHVuaXRfdGVzdC5yZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSkpOwor
ICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlcywgImVycm9ycyIsICIwIik7
CisgIE91dHB1dFhtbEF0dHJpYnV0ZSgKKyAgICAgIHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0aW1l
c3RhbXAiLAorICAgICAgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEodW5pdF90ZXN0
LnN0YXJ0X3RpbWVzdGFtcCgpKSk7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0
c3VpdGVzLCAidGltZSIsCisgICAgICAgICAgICAgICAgICAgICBGb3JtYXRUaW1lSW5NaWxsaXNB
c1NlY29uZHModW5pdF90ZXN0LmVsYXBzZWRfdGltZSgpKSk7CisKICAgaWYgKEdURVNUX0ZMQUco
c2h1ZmZsZSkpIHsKLSAgICBmcHJpbnRmKG91dCwgInJhbmRvbV9zZWVkPVwiJWRcIiAiLCB1bml0
X3Rlc3QucmFuZG9tX3NlZWQoKSk7CisgICAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rl
c3RzdWl0ZXMsICJyYW5kb21fc2VlZCIsCisgICAgICAgICAgICAgICAgICAgICAgIFN0cmVhbWFi
bGVUb1N0cmluZyh1bml0X3Rlc3QucmFuZG9tX3NlZWQoKSkpOworICB9CisgICpzdHJlYW0gPDwg
VGVzdFByb3BlcnRpZXNBc1htbEF0dHJpYnV0ZXModW5pdF90ZXN0LmFkX2hvY190ZXN0X3Jlc3Vs
dCgpKTsKKworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlcywgIm5hbWUi
LCAiQWxsVGVzdHMiKTsKKyAgKnN0cmVhbSA8PCAiPlxuIjsKKworICBmb3IgKGludCBpID0gMDsg
aSA8IHVuaXRfdGVzdC50b3RhbF90ZXN0X2Nhc2VfY291bnQoKTsgKytpKSB7CisgICAgaWYgKHVu
aXRfdGVzdC5HZXRUZXN0Q2FzZShpKS0+cmVwb3J0YWJsZV90ZXN0X2NvdW50KCkgPiAwKQorICAg
ICAgUHJpbnRYbWxUZXN0Q2FzZShzdHJlYW0sICp1bml0X3Rlc3QuR2V0VGVzdENhc2UoaSkpOwog
ICB9Ci0gIGZwcmludGYob3V0LCAibmFtZT1cIkFsbFRlc3RzXCI+XG4iKTsKLSAgZm9yIChpbnQg
aSA9IDA7IGkgPCB1bml0X3Rlc3QudG90YWxfdGVzdF9jYXNlX2NvdW50KCk7ICsraSkKLSAgICBQ
cmludFhtbFRlc3RDYXNlKG91dCwgKnVuaXRfdGVzdC5HZXRUZXN0Q2FzZShpKSk7Ci0gIGZwcmlu
dGYob3V0LCAiPC90ZXN0c3VpdGVzPlxuIik7CisgICpzdHJlYW0gPDwgIjwvIiA8PCBrVGVzdHN1
aXRlcyA8PCAiPlxuIjsKK30KKwordm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlByaW50
WG1sVGVzdHNMaXN0KAorICAgIHN0ZDo6b3N0cmVhbSogc3RyZWFtLCBjb25zdCBzdGQ6OnZlY3Rv
cjxUZXN0Q2FzZSo+JiB0ZXN0X2Nhc2VzKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0c3Vp
dGVzID0gInRlc3RzdWl0ZXMiOworCisgICpzdHJlYW0gPDwgIjw/eG1sIHZlcnNpb249XCIxLjBc
IiBlbmNvZGluZz1cIlVURi04XCI/PlxuIjsKKyAgKnN0cmVhbSA8PCAiPCIgPDwga1Rlc3RzdWl0
ZXM7CisKKyAgaW50IHRvdGFsX3Rlc3RzID0gMDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0
ZXN0X2Nhc2VzLnNpemUoKTsgKytpKSB7CisgICAgdG90YWxfdGVzdHMgKz0gdGVzdF9jYXNlc1tp
XS0+dG90YWxfdGVzdF9jb3VudCgpOworICB9CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0s
IGtUZXN0c3VpdGVzLCAidGVzdHMiLAorICAgICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRv
U3RyaW5nKHRvdGFsX3Rlc3RzKSk7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0
c3VpdGVzLCAibmFtZSIsICJBbGxUZXN0cyIpOworICAqc3RyZWFtIDw8ICI+XG4iOworCisgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdGVzdF9jYXNlcy5zaXplKCk7ICsraSkgeworICAgIFByaW50
WG1sVGVzdENhc2Uoc3RyZWFtLCAqdGVzdF9jYXNlc1tpXSk7CisgIH0KKyAgKnN0cmVhbSA8PCAi
PC8iIDw8IGtUZXN0c3VpdGVzIDw8ICI+XG4iOwogfQogCiAvLyBQcm9kdWNlcyBhIHN0cmluZyBy
ZXByZXNlbnRpbmcgdGhlIHRlc3QgcHJvcGVydGllcyBpbiBhIHJlc3VsdCBhcyBzcGFjZQogLy8g
ZGVsaW1pdGVkIFhNTCBhdHRyaWJ1dGVzIGJhc2VkIG9uIHRoZSBwcm9wZXJ0eSBrZXk9InZhbHVl
IiBwYWlycy4KLVN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlRlc3RQcm9wZXJ0aWVz
QXNYbWxBdHRyaWJ1dGVzKAorc3RkOjpzdHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpU
ZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRlcygKICAgICBjb25zdCBUZXN0UmVzdWx0JiByZXN1
bHQpIHsKICAgTWVzc2FnZSBhdHRyaWJ1dGVzOwogICBmb3IgKGludCBpID0gMDsgaSA8IHJlc3Vs
dC50ZXN0X3Byb3BlcnR5X2NvdW50KCk7ICsraSkgewpAQCAtMzI5OSw1MiArMzg1MSw1NjIgQEAg
U3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6VGVzdFByb3BlcnRpZXNBc1htbEF0dHJp
YnV0ZXMoCiAgIHJldHVybiBhdHRyaWJ1dGVzLkdldFN0cmluZygpOwogfQogCit2b2lkIFhtbFVu
aXRUZXN0UmVzdWx0UHJpbnRlcjo6T3V0cHV0WG1sVGVzdFByb3BlcnRpZXMoCisgICAgc3RkOjpv
c3RyZWFtKiBzdHJlYW0sIGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCkgeworICBjb25zdCBzdGQ6
OnN0cmluZyBrUHJvcGVydGllcyA9ICJwcm9wZXJ0aWVzIjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcg
a1Byb3BlcnR5ID0gInByb3BlcnR5IjsKKworICBpZiAocmVzdWx0LnRlc3RfcHJvcGVydHlfY291
bnQoKSA8PSAwKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgKnN0cmVhbSA8PCAiPCIgPDwga1By
b3BlcnRpZXMgPDwgIj5cbiI7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0LnRlc3RfcHJv
cGVydHlfY291bnQoKTsgKytpKSB7CisgICAgY29uc3QgVGVzdFByb3BlcnR5JiBwcm9wZXJ0eSA9
IHJlc3VsdC5HZXRUZXN0UHJvcGVydHkoaSk7CisgICAgKnN0cmVhbSA8PCAiPCIgPDwga1Byb3Bl
cnR5OworICAgICpzdHJlYW0gPDwgIiBuYW1lPVwiIiA8PCBFc2NhcGVYbWxBdHRyaWJ1dGUocHJv
cGVydHkua2V5KCkpIDw8ICJcIiI7CisgICAgKnN0cmVhbSA8PCAiIHZhbHVlPVwiIiA8PCBFc2Nh
cGVYbWxBdHRyaWJ1dGUocHJvcGVydHkudmFsdWUoKSkgPDwgIlwiIjsKKyAgICAqc3RyZWFtIDw8
ICIvPlxuIjsKKyAgfQorICAqc3RyZWFtIDw8ICI8LyIgPDwga1Byb3BlcnRpZXMgPDwgIj5cbiI7
Cit9CisKIC8vIEVuZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIKIAotLy8gQ2xhc3MgU2NvcGVk
VHJhY2UKKy8vIFRoaXMgY2xhc3MgZ2VuZXJhdGVzIGFuIEpTT04gb3V0cHV0IGZpbGUuCitjbGFz
cyBKc29uVW5pdFRlc3RSZXN1bHRQcmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVu
ZXIgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcihjb25z
dCBjaGFyKiBvdXRwdXRfZmlsZSk7CiAKLS8vIFB1c2hlcyB0aGUgZ2l2ZW4gc291cmNlIGZpbGUg
bG9jYXRpb24gYW5kIG1lc3NhZ2Ugb250byBhIHBlci10aHJlYWQKLS8vIHRyYWNlIHN0YWNrIG1h
aW50YWluZWQgYnkgR29vZ2xlIFRlc3QuCi0vLyBMIDwgVW5pdFRlc3Q6Om11dGV4XwotU2NvcGVk
VHJhY2U6OlNjb3BlZFRyYWNlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBNZXNz
YWdlJiBtZXNzYWdlKSB7Ci0gIFRyYWNlSW5mbyB0cmFjZTsKLSAgdHJhY2UuZmlsZSA9IGZpbGU7
Ci0gIHRyYWNlLmxpbmUgPSBsaW5lOwotICB0cmFjZS5tZXNzYWdlID0gbWVzc2FnZS5HZXRTdHJp
bmcoKTsKKyAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYg
dW5pdF90ZXN0LCBpbnQgaXRlcmF0aW9uKTsKIAotICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+
UHVzaEdUZXN0VHJhY2UodHJhY2UpOworICAvLyBQcmludHMgYW4gSlNPTiBzdW1tYXJ5IG9mIGFs
bCB1bml0IHRlc3RzLgorICBzdGF0aWMgdm9pZCBQcmludEpzb25UZXN0TGlzdCg6OnN0ZDo6b3N0
cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxUZXN0Q2FzZSo+JiB0ZXN0X2Nhc2VzKTsKKworIHByaXZhdGU6CisgIC8vIFJldHVy
bnMgYW4gSlNPTi1lc2NhcGVkIGNvcHkgb2YgdGhlIGlucHV0IHN0cmluZyBzdHIuCisgIHN0YXRp
YyBzdGQ6OnN0cmluZyBFc2NhcGVKc29uKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpOworCisgIC8v
Ly8gVmVyaWZpZXMgdGhhdCB0aGUgZ2l2ZW4gYXR0cmlidXRlIGJlbG9uZ3MgdG8gdGhlIGdpdmVu
IGVsZW1lbnQgYW5kCisgIC8vLy8gc3RyZWFtcyB0aGUgYXR0cmlidXRlIGFzIEpTT04uCisgIHN0
YXRpYyB2b2lkIE91dHB1dEpzb25LZXkoc3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGVsZW1lbnRfbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGluZGVudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGNvbW1hID0gdHJ1ZSk7CisgIHN0YXRpYyB2b2lkIE91dHB1
dEpzb25LZXkoc3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIGVsZW1lbnRfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIGluZGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbW1hID0g
dHJ1ZSk7CisKKyAgLy8gU3RyZWFtcyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgYSBUZXN0SW5m
byBvYmplY3QuCisgIHN0YXRpYyB2b2lkIE91dHB1dEpzb25UZXN0SW5mbyg6OnN0ZDo6b3N0cmVh
bSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
dGVzdF9jYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
ZXN0SW5mbyYgdGVzdF9pbmZvKTsKKworICAvLyBQcmludHMgYSBKU09OIHJlcHJlc2VudGF0aW9u
IG9mIGEgVGVzdENhc2Ugb2JqZWN0CisgIHN0YXRpYyB2b2lkIFByaW50SnNvblRlc3RDYXNlKDo6
c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpOworCisgIC8vIFByaW50cyBhIEpTT04gc3VtbWFyeSBv
ZiB1bml0X3Rlc3QgdG8gb3V0cHV0IHN0cmVhbSBvdXQuCisgIHN0YXRpYyB2b2lkIFByaW50SnNv
blVuaXRUZXN0KDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpOworCisgIC8vIFByb2R1Y2VzIGEg
c3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdGVzdCBwcm9wZXJ0aWVzIGluIGEgcmVzdWx0IGFzCisg
IC8vIGEgSlNPTiBkaWN0aW9uYXJ5LgorICBzdGF0aWMgc3RkOjpzdHJpbmcgVGVzdFByb3BlcnRp
ZXNBc0pzb24oY29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGluZGVudCk7CisKKyAgLy8g
VGhlIG91dHB1dCBmaWxlLgorICBjb25zdCBzdGQ6OnN0cmluZyBvdXRwdXRfZmlsZV87CisKKyAg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhKc29uVW5pdFRlc3RSZXN1bHRQcmludGVy
KTsKK307CisKKy8vIENyZWF0ZXMgYSBuZXcgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlci4KK0pz
b25Vbml0VGVzdFJlc3VsdFByaW50ZXI6Okpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIoY29uc3Qg
Y2hhciogb3V0cHV0X2ZpbGUpCisgICAgOiBvdXRwdXRfZmlsZV8ob3V0cHV0X2ZpbGUpIHsKKyAg
aWYgKG91dHB1dF9maWxlXy5lbXB0eSgpKSB7CisgICAgR1RFU1RfTE9HXyhGQVRBTCkgPDwgIkpT
T04gb3V0cHV0IGZpbGUgbWF5IG5vdCBiZSBudWxsIjsKKyAgfQogfQogCi0vLyBQb3BzIHRoZSBp
bmZvIHB1c2hlZCBieSB0aGUgYyd0b3IuCi0vLyBMIDwgVW5pdFRlc3Q6Om11dGV4XwotU2NvcGVk
VHJhY2U6On5TY29wZWRUcmFjZSgpIHsKLSAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPlBvcEdU
ZXN0VHJhY2UoKTsKK3ZvaWQgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0SXRlcmF0
aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKml0ZXJhdGlvbiovKSB7CisgIEZJTEUq
IGpzb25vdXQgPSBPcGVuRmlsZUZvcldyaXRpbmcob3V0cHV0X2ZpbGVfKTsKKyAgc3RkOjpzdHJp
bmdzdHJlYW0gc3RyZWFtOworICBQcmludEpzb25Vbml0VGVzdCgmc3RyZWFtLCB1bml0X3Rlc3Qp
OworICBmcHJpbnRmKGpzb25vdXQsICIlcyIsIFN0cmluZ1N0cmVhbVRvU3RyaW5nKCZzdHJlYW0p
LmNfc3RyKCkpOworICBmY2xvc2UoanNvbm91dCk7CiB9CiAKKy8vIFJldHVybnMgYW4gSlNPTi1l
c2NhcGVkIGNvcHkgb2YgdGhlIGlucHV0IHN0cmluZyBzdHIuCitzdGQ6OnN0cmluZyBKc29uVW5p
dFRlc3RSZXN1bHRQcmludGVyOjpFc2NhcGVKc29uKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsK
KyAgTWVzc2FnZSBtOwogCi0vLyBjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXIKKyAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzdHIuc2l6ZSgpOyArK2kpIHsKKyAgICBjb25zdCBjaGFyIGNoID0gc3Ry
W2ldOworICAgIHN3aXRjaCAoY2gpIHsKKyAgICAgIGNhc2UgJ1xcJzoKKyAgICAgIGNhc2UgJyIn
OgorICAgICAgY2FzZSAnLyc6CisgICAgICAgIG0gPDwgJ1xcJyA8PCBjaDsKKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlICdcYic6CisgICAgICAgIG0gPDwgIlxcYiI7CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSAnXHQnOgorICAgICAgICBtIDw8ICJcXHQiOworICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgJ1xuJzoKKyAgICAgICAgbSA8PCAiXFxuIjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlICdcZic6CisgICAgICAgIG0gPDwgIlxcZiI7CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSAnXHInOgorICAgICAgICBtIDw8ICJcXHIiOworICAgICAgICBicmVhazsKKyAgICAg
IGRlZmF1bHQ6CisgICAgICAgIGlmIChjaCA8ICcgJykgeworICAgICAgICAgIG0gPDwgIlxcdTAw
IiA8PCBTdHJpbmc6OkZvcm1hdEJ5dGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBtIDw8IGNoOworICAgICAgICB9CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgfQogCi0vLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRy
YWNlIGFzIGEgU3RyaW5nLiAgUGFyYW1ldGVyczoKLS8vCi0vLyAgIG1heF9kZXB0aCAgLSB0aGUg
bWF4aW11bSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIHRvIGJlIGluY2x1ZGVkCi0vLyAgICAgICAg
ICAgICAgICBpbiB0aGUgdHJhY2UuCi0vLyAgIHNraXBfY291bnQgLSB0aGUgbnVtYmVyIG9mIHRv
cCBmcmFtZXMgdG8gYmUgc2tpcHBlZDsgZG9lc24ndCBjb3VudAotLy8gICAgICAgICAgICAgICAg
YWdhaW5zdCBtYXhfZGVwdGguCi0vLwotLy8gTCA8IG11dGV4XwotLy8gV2UgdXNlICJMIDwgbXV0
ZXhfIiB0byBkZW5vdGUgdGhhdCB0aGUgZnVuY3Rpb24gbWF5IGFjcXVpcmUgbXV0ZXhfLgotU3Ry
aW5nIE9zU3RhY2tUcmFjZUdldHRlcjo6Q3VycmVudFN0YWNrVHJhY2UoaW50LCBpbnQpIHsKLSAg
cmV0dXJuIFN0cmluZygiIik7CisgIHJldHVybiBtLkdldFN0cmluZygpOwogfQogCi0vLyBMIDwg
bXV0ZXhfCi12b2lkIE9zU3RhY2tUcmFjZUdldHRlcjo6VXBvbkxlYXZpbmdHVGVzdCgpIHsKKy8v
IFRoZSBmb2xsb3dpbmcgcm91dGluZXMgZ2VuZXJhdGUgYW4gSlNPTiByZXByZXNlbnRhdGlvbiBv
ZiBhIFVuaXRUZXN0CisvLyBvYmplY3QuCisKKy8vIEZvcm1hdHMgdGhlIGdpdmVuIHRpbWUgaW4g
bWlsbGlzZWNvbmRzIGFzIHNlY29uZHMuCitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0VGltZUlu
TWlsbGlzQXNEdXJhdGlvbihUaW1lSW5NaWxsaXMgbXMpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVh
bSBzczsKKyAgc3MgPDwgKHN0YXRpY19jYXN0PGRvdWJsZT4obXMpICogMWUtMykgPDwgInMiOwor
ICByZXR1cm4gc3Muc3RyKCk7CiB9CiAKLWNvbnN0IGNoYXIqIGNvbnN0Ci1Pc1N0YWNrVHJhY2VH
ZXR0ZXI6OmtFbGlkZWRGcmFtZXNNYXJrZXIgPQorLy8gQ29udmVydHMgdGhlIGdpdmVuIGVwb2No
IHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIGEgZGF0ZSBzdHJpbmcgaW4gdGhlCisvLyBSRkMzMzM5
IGZvcm1hdCwgd2l0aG91dCB0aGUgdGltZXpvbmUgaW5mb3JtYXRpb24uCitzdGF0aWMgc3RkOjpz
dHJpbmcgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc1JGQzMzMzkoVGltZUluTWlsbGlzIG1zKSB7
CisgIHN0cnVjdCB0bSB0aW1lX3N0cnVjdDsKKyAgaWYgKCFQb3J0YWJsZUxvY2FsdGltZShzdGF0
aWNfY2FzdDx0aW1lX3Q+KG1zIC8gMTAwMCksICZ0aW1lX3N0cnVjdCkpCisgICAgcmV0dXJuICIi
OworICAvLyBZWVlZLU1NLUREVGhoOm1tOnNzCisgIHJldHVybiBTdHJlYW1hYmxlVG9TdHJpbmco
dGltZV9zdHJ1Y3QudG1feWVhciArIDE5MDApICsgIi0iICsKKyAgICAgIFN0cmluZzo6Rm9ybWF0
SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX21vbiArIDEpICsgIi0iICsKKyAgICAgIFN0cmluZzo6
Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX21kYXkpICsgIlQiICsKKyAgICAgIFN0cmlu
Zzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX2hvdXIpICsgIjoiICsKKyAgICAgIFN0
cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX21pbikgKyAiOiIgKworICAgICAg
U3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1fc2VjKSArICJaIjsKK30KKwor
c3RhdGljIGlubGluZSBzdGQ6OnN0cmluZyBJbmRlbnQoaW50IHdpZHRoKSB7CisgIHJldHVybiBz
dGQ6OnN0cmluZyh3aWR0aCwgJyAnKTsKK30KKwordm9pZCBKc29uVW5pdFRlc3RSZXN1bHRQcmlu
dGVyOjpPdXRwdXRKc29uS2V5KAorICAgIHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBlbGVtZW50X25hbWUsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUs
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBp
bmRlbnQsCisgICAgYm9vbCBjb21tYSkgeworICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4mIGFsbG93ZWRfbmFtZXMgPQorICAgICAgR2V0UmVzZXJ2ZWRBdHRyaWJ1dGVzRm9yRWxlbWVu
dChlbGVtZW50X25hbWUpOworCisgIEdURVNUX0NIRUNLXyhzdGQ6OmZpbmQoYWxsb3dlZF9uYW1l
cy5iZWdpbigpLCBhbGxvd2VkX25hbWVzLmVuZCgpLCBuYW1lKSAhPQorICAgICAgICAgICAgICAg
ICAgIGFsbG93ZWRfbmFtZXMuZW5kKCkpCisgICAgICA8PCAiS2V5IFwiIiA8PCBuYW1lIDw8ICJc
IiBpcyBub3QgYWxsb3dlZCBmb3IgdmFsdWUgXCIiIDw8IGVsZW1lbnRfbmFtZQorICAgICAgPDwg
IlwiLiI7CisKKyAgKnN0cmVhbSA8PCBpbmRlbnQgPDwgIlwiIiA8PCBuYW1lIDw8ICJcIjogXCIi
IDw8IEVzY2FwZUpzb24odmFsdWUpIDw8ICJcIiI7CisgIGlmIChjb21tYSkKKyAgICAqc3RyZWFt
IDw8ICIsXG4iOworfQorCit2b2lkIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dEpz
b25LZXkoCisgICAgc3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IGVsZW1lbnRfbmFtZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKKyAgICBpbnQgdmFs
dWUsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGluZGVudCwKKyAgICBib29sIGNvbW1hKSB7Cisg
IGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgYWxsb3dlZF9uYW1lcyA9CisgICAgICBH
ZXRSZXNlcnZlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KGVsZW1lbnRfbmFtZSk7CisKKyAgR1RFU1Rf
Q0hFQ0tfKHN0ZDo6ZmluZChhbGxvd2VkX25hbWVzLmJlZ2luKCksIGFsbG93ZWRfbmFtZXMuZW5k
KCksIG5hbWUpICE9CisgICAgICAgICAgICAgICAgICAgYWxsb3dlZF9uYW1lcy5lbmQoKSkKKyAg
ICAgIDw8ICJLZXkgXCIiIDw8IG5hbWUgPDwgIlwiIGlzIG5vdCBhbGxvd2VkIGZvciB2YWx1ZSBc
IiIgPDwgZWxlbWVudF9uYW1lCisgICAgICA8PCAiXCIuIjsKKworICAqc3RyZWFtIDw8IGluZGVu
dCA8PCAiXCIiIDw8IG5hbWUgPDwgIlwiOiAiIDw8IFN0cmVhbWFibGVUb1N0cmluZyh2YWx1ZSk7
CisgIGlmIChjb21tYSkKKyAgICAqc3RyZWFtIDw8ICIsXG4iOworfQorCisvLyBQcmludHMgYSBK
U09OIHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdEluZm8gb2JqZWN0Lgordm9pZCBKc29uVW5pdFRl
c3RSZXN1bHRQcmludGVyOjpPdXRwdXRKc29uVGVzdEluZm8oOjpzdGQ6Om9zdHJlYW0qIHN0cmVh
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbykgeworICBjb25z
dCBUZXN0UmVzdWx0JiByZXN1bHQgPSAqdGVzdF9pbmZvLnJlc3VsdCgpOworICBjb25zdCBzdGQ6
OnN0cmluZyBrVGVzdGNhc2UgPSAidGVzdGNhc2UiOworICBjb25zdCBzdGQ6OnN0cmluZyBrSW5k
ZW50ID0gSW5kZW50KDEwKTsKKworICAqc3RyZWFtIDw8IEluZGVudCg4KSA8PCAie1xuIjsKKyAg
T3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0Y2FzZSwgIm5hbWUiLCB0ZXN0X2luZm8ubmFtZSgp
LCBrSW5kZW50KTsKKworICBpZiAodGVzdF9pbmZvLnZhbHVlX3BhcmFtKCkgIT0gTlVMTCkgewor
ICAgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdGNhc2UsICJ2YWx1ZV9wYXJhbSIsCisgICAg
ICAgICAgICAgICAgICB0ZXN0X2luZm8udmFsdWVfcGFyYW0oKSwga0luZGVudCk7CisgIH0KKyAg
aWYgKHRlc3RfaW5mby50eXBlX3BhcmFtKCkgIT0gTlVMTCkgeworICAgIE91dHB1dEpzb25LZXko
c3RyZWFtLCBrVGVzdGNhc2UsICJ0eXBlX3BhcmFtIiwgdGVzdF9pbmZvLnR5cGVfcGFyYW0oKSwK
KyAgICAgICAgICAgICAgICAgIGtJbmRlbnQpOworICB9CisgIGlmIChHVEVTVF9GTEFHKGxpc3Rf
dGVzdHMpKSB7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0Y2FzZSwgImZpbGUiLCB0
ZXN0X2luZm8uZmlsZSgpLCBrSW5kZW50KTsKKyAgICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rl
c3RjYXNlLCAibGluZSIsIHRlc3RfaW5mby5saW5lKCksIGtJbmRlbnQsIGZhbHNlKTsKKyAgICAq
c3RyZWFtIDw8ICJcbiIgPDwgSW5kZW50KDgpIDw8ICJ9IjsKKyAgICByZXR1cm47CisgIH0KKwor
ICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RjYXNlLCAic3RhdHVzIiwKKyAgICAgICAgICAg
ICAgICB0ZXN0X2luZm8uc2hvdWxkX3J1bigpID8gIlJVTiIgOiAiTk9UUlVOIiwga0luZGVudCk7
CisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdGNhc2UsICJ0aW1lIiwKKyAgICAgICAgICAg
ICAgICBGb3JtYXRUaW1lSW5NaWxsaXNBc0R1cmF0aW9uKHJlc3VsdC5lbGFwc2VkX3RpbWUoKSks
IGtJbmRlbnQpOworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RjYXNlLCAiY2xhc3NuYW1l
IiwgdGVzdF9jYXNlX25hbWUsIGtJbmRlbnQsIGZhbHNlKTsKKyAgKnN0cmVhbSA8PCBUZXN0UHJv
cGVydGllc0FzSnNvbihyZXN1bHQsIGtJbmRlbnQpOworCisgIGludCBmYWlsdXJlcyA9IDA7Cisg
IGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0LnRvdGFsX3BhcnRfY291bnQoKTsgKytpKSB7Cisg
ICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIHBhcnQgPSByZXN1bHQuR2V0VGVzdFBhcnRSZXN1bHQo
aSk7CisgICAgaWYgKHBhcnQuZmFpbGVkKCkpIHsKKyAgICAgICpzdHJlYW0gPDwgIixcbiI7Cisg
ICAgICBpZiAoKytmYWlsdXJlcyA9PSAxKSB7CisgICAgICAgICpzdHJlYW0gPDwga0luZGVudCA8
PCAiXCIiIDw8ICJmYWlsdXJlcyIgPDwgIlwiOiBbXG4iOworICAgICAgfQorICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgbG9jYXRpb24gPQorICAgICAgICAgIGludGVybmFsOjpGb3JtYXRDb21waWxl
ckluZGVwZW5kZW50RmlsZUxvY2F0aW9uKHBhcnQuZmlsZV9uYW1lKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydC5saW5lX251
bWJlcigpKTsKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIG1lc3NhZ2UgPSBFc2NhcGVKc29uKGxv
Y2F0aW9uICsgIlxuIiArIHBhcnQubWVzc2FnZSgpKTsKKyAgICAgICpzdHJlYW0gPDwga0luZGVu
dCA8PCAiICB7XG4iCisgICAgICAgICAgICAgIDw8IGtJbmRlbnQgPDwgIiAgICBcImZhaWx1cmVc
IjogXCIiIDw8IG1lc3NhZ2UgPDwgIlwiLFxuIgorICAgICAgICAgICAgICA8PCBrSW5kZW50IDw8
ICIgICAgXCJ0eXBlXCI6IFwiXCJcbiIKKyAgICAgICAgICAgICAgPDwga0luZGVudCA8PCAiICB9
IjsKKyAgICB9CisgIH0KKworICBpZiAoZmFpbHVyZXMgPiAwKQorICAgICpzdHJlYW0gPDwgIlxu
IiA8PCBrSW5kZW50IDw8ICJdIjsKKyAgKnN0cmVhbSA8PCAiXG4iIDw8IEluZGVudCg4KSA8PCAi
fSI7Cit9CisKKy8vIFByaW50cyBhbiBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdENhc2Ug
b2JqZWN0Cit2b2lkIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6OlByaW50SnNvblRlc3RDYXNl
KHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKSB7CisgIGNvbnN0IHN0
ZDo6c3RyaW5nIGtUZXN0c3VpdGUgPSAidGVzdHN1aXRlIjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcg
a0luZGVudCA9IEluZGVudCg2KTsKKworICAqc3RyZWFtIDw8IEluZGVudCg0KSA8PCAie1xuIjsK
KyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGUsICJuYW1lIiwgdGVzdF9jYXNlLm5h
bWUoKSwga0luZGVudCk7CisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRlLCAidGVz
dHMiLCB0ZXN0X2Nhc2UucmVwb3J0YWJsZV90ZXN0X2NvdW50KCksCisgICAgICAgICAgICAgICAg
a0luZGVudCk7CisgIGlmICghR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSkgeworICAgIE91dHB1dEpz
b25LZXkoc3RyZWFtLCBrVGVzdHN1aXRlLCAiZmFpbHVyZXMiLCB0ZXN0X2Nhc2UuZmFpbGVkX3Rl
c3RfY291bnQoKSwKKyAgICAgICAgICAgICAgICAgIGtJbmRlbnQpOworICAgIE91dHB1dEpzb25L
ZXkoc3RyZWFtLCBrVGVzdHN1aXRlLCAiZGlzYWJsZWQiLAorICAgICAgICAgICAgICAgICAgdGVz
dF9jYXNlLnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpLCBrSW5kZW50KTsKKyAgICBP
dXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZSwgImVycm9ycyIsIDAsIGtJbmRlbnQpOwor
ICAgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRlLCAidGltZSIsCisgICAgICAgICAg
ICAgICAgICBGb3JtYXRUaW1lSW5NaWxsaXNBc0R1cmF0aW9uKHRlc3RfY2FzZS5lbGFwc2VkX3Rp
bWUoKSksCisgICAgICAgICAgICAgICAgICBrSW5kZW50LCBmYWxzZSk7CisgICAgKnN0cmVhbSA8
PCBUZXN0UHJvcGVydGllc0FzSnNvbih0ZXN0X2Nhc2UuYWRfaG9jX3Rlc3RfcmVzdWx0KCksIGtJ
bmRlbnQpCisgICAgICAgICAgICA8PCAiLFxuIjsKKyAgfQorCisgICpzdHJlYW0gPDwga0luZGVu
dCA8PCAiXCIiIDw8IGtUZXN0c3VpdGUgPDwgIlwiOiBbXG4iOworCisgIGJvb2wgY29tbWEgPSBm
YWxzZTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXN0X2Nhc2UudG90YWxfdGVzdF9jb3VudCgp
OyArK2kpIHsKKyAgICBpZiAodGVzdF9jYXNlLkdldFRlc3RJbmZvKGkpLT5pc19yZXBvcnRhYmxl
KCkpIHsKKyAgICAgIGlmIChjb21tYSkgeworICAgICAgICAqc3RyZWFtIDw8ICIsXG4iOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgY29tbWEgPSB0cnVlOworICAgICAgfQorICAgICAgT3V0cHV0
SnNvblRlc3RJbmZvKHN0cmVhbSwgdGVzdF9jYXNlLm5hbWUoKSwgKnRlc3RfY2FzZS5HZXRUZXN0
SW5mbyhpKSk7CisgICAgfQorICB9CisgICpzdHJlYW0gPDwgIlxuIiA8PCBrSW5kZW50IDw8ICJd
XG4iIDw8IEluZGVudCg0KSA8PCAifSI7Cit9CisKKy8vIFByaW50cyBhIEpTT04gc3VtbWFyeSBv
ZiB1bml0X3Rlc3QgdG8gb3V0cHV0IHN0cmVhbSBvdXQuCit2b2lkIEpzb25Vbml0VGVzdFJlc3Vs
dFByaW50ZXI6OlByaW50SnNvblVuaXRUZXN0KHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbml0VGVz
dCYgdW5pdF90ZXN0KSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0c3VpdGVzID0gInRlc3Rz
dWl0ZXMiOworICBjb25zdCBzdGQ6OnN0cmluZyBrSW5kZW50ID0gSW5kZW50KDIpOworICAqc3Ry
ZWFtIDw8ICJ7XG4iOworCisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRlcywgInRl
c3RzIiwgdW5pdF90ZXN0LnJlcG9ydGFibGVfdGVzdF9jb3VudCgpLAorICAgICAgICAgICAgICAg
IGtJbmRlbnQpOworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJmYWlsdXJl
cyIsIHVuaXRfdGVzdC5mYWlsZWRfdGVzdF9jb3VudCgpLAorICAgICAgICAgICAgICAgIGtJbmRl
bnQpOworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJkaXNhYmxlZCIsCisg
ICAgICAgICAgICAgICAgdW5pdF90ZXN0LnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgp
LCBrSW5kZW50KTsKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAiZXJyb3Jz
IiwgMCwga0luZGVudCk7CisgIGlmIChHVEVTVF9GTEFHKHNodWZmbGUpKSB7CisgICAgT3V0cHV0
SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAicmFuZG9tX3NlZWQiLCB1bml0X3Rlc3QucmFu
ZG9tX3NlZWQoKSwKKyAgICAgICAgICAgICAgICAgIGtJbmRlbnQpOworICB9CisgIE91dHB1dEpz
b25LZXkoc3RyZWFtLCBrVGVzdHN1aXRlcywgInRpbWVzdGFtcCIsCisgICAgICAgICAgICAgICAg
Rm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc1JGQzMzMzkodW5pdF90ZXN0LnN0YXJ0X3RpbWVzdGFt
cCgpKSwKKyAgICAgICAgICAgICAgICBrSW5kZW50KTsKKyAgT3V0cHV0SnNvbktleShzdHJlYW0s
IGtUZXN0c3VpdGVzLCAidGltZSIsCisgICAgICAgICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlz
QXNEdXJhdGlvbih1bml0X3Rlc3QuZWxhcHNlZF90aW1lKCkpLCBrSW5kZW50LAorICAgICAgICAg
ICAgICAgIGZhbHNlKTsKKworICAqc3RyZWFtIDw8IFRlc3RQcm9wZXJ0aWVzQXNKc29uKHVuaXRf
dGVzdC5hZF9ob2NfdGVzdF9yZXN1bHQoKSwga0luZGVudCkKKyAgICAgICAgICA8PCAiLFxuIjsK
KworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJuYW1lIiwgIkFsbFRlc3Rz
Iiwga0luZGVudCk7CisgICpzdHJlYW0gPDwga0luZGVudCA8PCAiXCIiIDw8IGtUZXN0c3VpdGVz
IDw8ICJcIjogW1xuIjsKKworICBib29sIGNvbW1hID0gZmFsc2U7CisgIGZvciAoaW50IGkgPSAw
OyBpIDwgdW5pdF90ZXN0LnRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpOyArK2kpIHsKKyAgICBpZiAo
dW5pdF90ZXN0LkdldFRlc3RDYXNlKGkpLT5yZXBvcnRhYmxlX3Rlc3RfY291bnQoKSA+IDApIHsK
KyAgICAgIGlmIChjb21tYSkgeworICAgICAgICAqc3RyZWFtIDw8ICIsXG4iOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgY29tbWEgPSB0cnVlOworICAgICAgfQorICAgICAgUHJpbnRKc29uVGVz
dENhc2Uoc3RyZWFtLCAqdW5pdF90ZXN0LkdldFRlc3RDYXNlKGkpKTsKKyAgICB9CisgIH0KKwor
ICAqc3RyZWFtIDw8ICJcbiIgPDwga0luZGVudCA8PCAiXVxuIiA8PCAifVxuIjsKK30KKwordm9p
ZCBKc29uVW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludEpzb25UZXN0TGlzdCgKKyAgICBzdGQ6
Om9zdHJlYW0qIHN0cmVhbSwgY29uc3Qgc3RkOjp2ZWN0b3I8VGVzdENhc2UqPiYgdGVzdF9jYXNl
cykgeworICBjb25zdCBzdGQ6OnN0cmluZyBrVGVzdHN1aXRlcyA9ICJ0ZXN0c3VpdGVzIjsKKyAg
Y29uc3Qgc3RkOjpzdHJpbmcga0luZGVudCA9IEluZGVudCgyKTsKKyAgKnN0cmVhbSA8PCAie1xu
IjsKKyAgaW50IHRvdGFsX3Rlc3RzID0gMDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0
X2Nhc2VzLnNpemUoKTsgKytpKSB7CisgICAgdG90YWxfdGVzdHMgKz0gdGVzdF9jYXNlc1tpXS0+
dG90YWxfdGVzdF9jb3VudCgpOworICB9CisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1
aXRlcywgInRlc3RzIiwgdG90YWxfdGVzdHMsIGtJbmRlbnQpOworCisgIE91dHB1dEpzb25LZXko
c3RyZWFtLCBrVGVzdHN1aXRlcywgIm5hbWUiLCAiQWxsVGVzdHMiLCBrSW5kZW50KTsKKyAgKnN0
cmVhbSA8PCBrSW5kZW50IDw8ICJcIiIgPDwga1Rlc3RzdWl0ZXMgPDwgIlwiOiBbXG4iOworCisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGVzdF9jYXNlcy5zaXplKCk7ICsraSkgeworICAgIGlm
IChpICE9IDApIHsKKyAgICAgICpzdHJlYW0gPDwgIixcbiI7CisgICAgfQorICAgIFByaW50SnNv
blRlc3RDYXNlKHN0cmVhbSwgKnRlc3RfY2FzZXNbaV0pOworICB9CisKKyAgKnN0cmVhbSA8PCAi
XG4iCisgICAgICAgICAgPDwga0luZGVudCA8PCAiXVxuIgorICAgICAgICAgIDw8ICJ9XG4iOwor
fQorLy8gUHJvZHVjZXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0ZXN0IHByb3BlcnRpZXMg
aW4gYSByZXN1bHQgYXMKKy8vIGEgSlNPTiBkaWN0aW9uYXJ5Lgorc3RkOjpzdHJpbmcgSnNvblVu
aXRUZXN0UmVzdWx0UHJpbnRlcjo6VGVzdFByb3BlcnRpZXNBc0pzb24oCisgICAgY29uc3QgVGVz
dFJlc3VsdCYgcmVzdWx0LCBjb25zdCBzdGQ6OnN0cmluZyYgaW5kZW50KSB7CisgIE1lc3NhZ2Ug
YXR0cmlidXRlczsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHQudGVzdF9wcm9wZXJ0eV9j
b3VudCgpOyArK2kpIHsKKyAgICBjb25zdCBUZXN0UHJvcGVydHkmIHByb3BlcnR5ID0gcmVzdWx0
LkdldFRlc3RQcm9wZXJ0eShpKTsKKyAgICBhdHRyaWJ1dGVzIDw8ICIsXG4iIDw8IGluZGVudCA8
PCAiXCIiIDw8IHByb3BlcnR5LmtleSgpIDw8ICJcIjogIgorICAgICAgICAgICAgICAgPDwgIlwi
IiA8PCBFc2NhcGVKc29uKHByb3BlcnR5LnZhbHVlKCkpIDw8ICJcIiI7CisgIH0KKyAgcmV0dXJu
IGF0dHJpYnV0ZXMuR2V0U3RyaW5nKCk7Cit9CisKKy8vIEVuZCBKc29uVW5pdFRlc3RSZXN1bHRQ
cmludGVyCisKKyNpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKKy8vIENoZWNrcyBpZiBz
dHIgY29udGFpbnMgJz0nLCAnJicsICclJyBvciAnXG4nIGNoYXJhY3RlcnMuIElmIHllcywKKy8v
IHJlcGxhY2VzIHRoZW0gYnkgIiV4eCIgd2hlcmUgeHggaXMgdGhlaXIgaGV4YWRlY2ltYWwgdmFs
dWUuIEZvcgorLy8gZXhhbXBsZSwgcmVwbGFjZXMgIj0iIHdpdGggIiUzRCIuICBUaGlzIGFsZ29y
aXRobSBpcyBPKHN0cmxlbihzdHIpKQorLy8gaW4gYm90aCB0aW1lIGFuZCBzcGFjZSAtLSBpbXBv
cnRhbnQgYXMgdGhlIGlucHV0IHN0ciBtYXkgY29udGFpbiBhbgorLy8gYXJiaXRyYXJpbHkgbG9u
ZyB0ZXN0IGZhaWx1cmUgbWVzc2FnZSBhbmQgc3RhY2sgdHJhY2UuCitzdGQ6OnN0cmluZyBTdHJl
YW1pbmdMaXN0ZW5lcjo6VXJsRW5jb2RlKGNvbnN0IGNoYXIqIHN0cikgeworICBzdGQ6OnN0cmlu
ZyByZXN1bHQ7CisgIHJlc3VsdC5yZXNlcnZlKHN0cmxlbihzdHIpICsgMSk7CisgIGZvciAoY2hh
ciBjaCA9ICpzdHI7IGNoICE9ICdcMCc7IGNoID0gKisrc3RyKSB7CisgICAgc3dpdGNoIChjaCkg
eworICAgICAgY2FzZSAnJSc6CisgICAgICBjYXNlICc9JzoKKyAgICAgIGNhc2UgJyYnOgorICAg
ICAgY2FzZSAnXG4nOgorICAgICAgICByZXN1bHQuYXBwZW5kKCIlIiArIFN0cmluZzo6Rm9ybWF0
Qnl0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBkZWZhdWx0OgorICAgICAgICByZXN1bHQucHVzaF9iYWNrKGNoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgU3RyZWFtaW5nTGlz
dGVuZXI6OlNvY2tldFdyaXRlcjo6TWFrZUNvbm5lY3Rpb24oKSB7CisgIEdURVNUX0NIRUNLXyhz
b2NrZmRfID09IC0xKQorICAgICAgPDwgIk1ha2VDb25uZWN0aW9uKCkgY2FuJ3QgYmUgY2FsbGVk
IHdoZW4gdGhlcmUgaXMgYWxyZWFkeSBhIGNvbm5lY3Rpb24uIjsKKworICBhZGRyaW5mbyBoaW50
czsKKyAgbWVtc2V0KCZoaW50cywgMCwgc2l6ZW9mKGhpbnRzKSk7CisgIGhpbnRzLmFpX2ZhbWls
eSA9IEFGX1VOU1BFQzsgICAgLy8gVG8gYWxsb3cgYm90aCBJUHY0IGFuZCBJUHY2IGFkZHJlc3Nl
cy4KKyAgaGludHMuYWlfc29ja3R5cGUgPSBTT0NLX1NUUkVBTTsKKyAgYWRkcmluZm8qIHNlcnZp
bmZvID0gTlVMTDsKKworICAvLyBVc2UgdGhlIGdldGFkZHJpbmZvKCkgdG8gZ2V0IGEgbGlua2Vk
IGxpc3Qgb2YgSVAgYWRkcmVzc2VzIGZvcgorICAvLyB0aGUgZ2l2ZW4gaG9zdCBuYW1lLgorICBj
b25zdCBpbnQgZXJyb3JfbnVtID0gZ2V0YWRkcmluZm8oCisgICAgICBob3N0X25hbWVfLmNfc3Ry
KCksIHBvcnRfbnVtXy5jX3N0cigpLCAmaGludHMsICZzZXJ2aW5mbyk7CisgIGlmIChlcnJvcl9u
dW0gIT0gMCkgeworICAgIEdURVNUX0xPR18oV0FSTklORykgPDwgInN0cmVhbV9yZXN1bHRfdG86
IGdldGFkZHJpbmZvKCkgZmFpbGVkOiAiCisgICAgICAgICAgICAgICAgICAgICAgICA8PCBnYWlf
c3RyZXJyb3IoZXJyb3JfbnVtKTsKKyAgfQorCisgIC8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIHJl
c3VsdHMgYW5kIGNvbm5lY3QgdG8gdGhlIGZpcnN0IHdlIGNhbi4KKyAgZm9yIChhZGRyaW5mbyog
Y3VyX2FkZHIgPSBzZXJ2aW5mbzsgc29ja2ZkXyA9PSAtMSAmJiBjdXJfYWRkciAhPSBOVUxMOwor
ICAgICAgIGN1cl9hZGRyID0gY3VyX2FkZHItPmFpX25leHQpIHsKKyAgICBzb2NrZmRfID0gc29j
a2V0KAorICAgICAgICBjdXJfYWRkci0+YWlfZmFtaWx5LCBjdXJfYWRkci0+YWlfc29ja3R5cGUs
IGN1cl9hZGRyLT5haV9wcm90b2NvbCk7CisgICAgaWYgKHNvY2tmZF8gIT0gLTEpIHsKKyAgICAg
IC8vIENvbm5lY3QgdGhlIGNsaWVudCBzb2NrZXQgdG8gdGhlIHNlcnZlciBzb2NrZXQuCisgICAg
ICBpZiAoY29ubmVjdChzb2NrZmRfLCBjdXJfYWRkci0+YWlfYWRkciwgY3VyX2FkZHItPmFpX2Fk
ZHJsZW4pID09IC0xKSB7CisgICAgICAgIGNsb3NlKHNvY2tmZF8pOworICAgICAgICBzb2NrZmRf
ID0gLTE7CisgICAgICB9CisgICAgfQorICB9CisKKyAgZnJlZWFkZHJpbmZvKHNlcnZpbmZvKTsg
IC8vIGFsbCBkb25lIHdpdGggdGhpcyBzdHJ1Y3R1cmUKKworICBpZiAoc29ja2ZkXyA9PSAtMSkg
eworICAgIEdURVNUX0xPR18oV0FSTklORykgPDwgInN0cmVhbV9yZXN1bHRfdG86IGZhaWxlZCB0
byBjb25uZWN0IHRvICIKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8IGhvc3RfbmFtZV8gPDwg
IjoiIDw8IHBvcnRfbnVtXzsKKyAgfQorfQorCisvLyBFbmQgb2YgY2xhc3MgU3RyZWFtaW5nIExp
c3RlbmVyCisjZW5kaWYgIC8vIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU19fCisKKy8vIGNsYXNz
IE9zU3RhY2tUcmFjZUdldHRlcgorCitjb25zdCBjaGFyKiBjb25zdCBPc1N0YWNrVHJhY2VHZXR0
ZXJJbnRlcmZhY2U6OmtFbGlkZWRGcmFtZXNNYXJrZXIgPQogICAgICIuLi4gIiBHVEVTVF9OQU1F
XyAiIGludGVybmFsIGZyYW1lcyAuLi4iOwogCitzdGQ6OnN0cmluZyBPc1N0YWNrVHJhY2VHZXR0
ZXI6OkN1cnJlbnRTdGFja1RyYWNlKGludCBtYXhfZGVwdGgsIGludCBza2lwX2NvdW50KQorICAg
IEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4XykgeworI2lmIEdURVNUX0hBU19BQlNMCisgIHN0
ZDo6c3RyaW5nIHJlc3VsdDsKKworICBpZiAobWF4X2RlcHRoIDw9IDApIHsKKyAgICByZXR1cm4g
cmVzdWx0OworICB9CisKKyAgbWF4X2RlcHRoID0gc3RkOjptaW4obWF4X2RlcHRoLCBrTWF4U3Rh
Y2tUcmFjZURlcHRoKTsKKworICBzdGQ6OnZlY3Rvcjx2b2lkKj4gcmF3X3N0YWNrKG1heF9kZXB0
aCk7CisgIC8vIFNraXBzIHRoZSBmcmFtZXMgcmVxdWVzdGVkIGJ5IHRoZSBjYWxsZXIsIHBsdXMg
dGhpcyBmdW5jdGlvbi4KKyAgY29uc3QgaW50IHJhd19zdGFja19zaXplID0KKyAgICAgIGFic2w6
OkdldFN0YWNrVHJhY2UoJnJhd19zdGFja1swXSwgbWF4X2RlcHRoLCBza2lwX2NvdW50ICsgMSk7
CisKKyAgdm9pZCogY2FsbGVyX2ZyYW1lID0gbnVsbHB0cjsKKyAgeworICAgIE11dGV4TG9jayBs
b2NrKCZtdXRleF8pOworICAgIGNhbGxlcl9mcmFtZSA9IGNhbGxlcl9mcmFtZV87CisgIH0KKwor
ICBmb3IgKGludCBpID0gMDsgaSA8IHJhd19zdGFja19zaXplOyArK2kpIHsKKyAgICBpZiAocmF3
X3N0YWNrW2ldID09IGNhbGxlcl9mcmFtZSAmJgorICAgICAgICAhR1RFU1RfRkxBRyhzaG93X2lu
dGVybmFsX3N0YWNrX2ZyYW1lcykpIHsKKyAgICAgIC8vIEFkZCBhIG1hcmtlciB0byB0aGUgdHJh
Y2UgYW5kIHN0b3AgYWRkaW5nIGZyYW1lcy4KKyAgICAgIGFic2w6OlN0ckFwcGVuZCgmcmVzdWx0
LCBrRWxpZGVkRnJhbWVzTWFya2VyLCAiXG4iKTsKKyAgICAgIGJyZWFrOworICAgIH0KKworICAg
IGNoYXIgdG1wWzEwMjRdOworICAgIGNvbnN0IGNoYXIqIHN5bWJvbCA9ICIodW5rbm93bikiOwor
ICAgIGlmIChhYnNsOjpTeW1ib2xpemUocmF3X3N0YWNrW2ldLCB0bXAsIHNpemVvZih0bXApKSkg
eworICAgICAgc3ltYm9sID0gdG1wOworICAgIH0KKworICAgIGNoYXIgbGluZVsxMDI0XTsKKyAg
ICBzbnByaW50ZihsaW5lLCBzaXplb2YobGluZSksICIgICVwOiAlc1xuIiwgcmF3X3N0YWNrW2ld
LCBzeW1ib2wpOworICAgIHJlc3VsdCArPSBsaW5lOworICB9CisKKyAgcmV0dXJuIHJlc3VsdDsK
KworI2Vsc2UgIC8vICFHVEVTVF9IQVNfQUJTTAorICBzdGF0aWNfY2FzdDx2b2lkPihtYXhfZGVw
dGgpOworICBzdGF0aWNfY2FzdDx2b2lkPihza2lwX2NvdW50KTsKKyAgcmV0dXJuICIiOworI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfQUJTTAorfQorCit2b2lkIE9zU3RhY2tUcmFjZUdldHRlcjo6VXBv
bkxlYXZpbmdHVGVzdCgpIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4XykgeworI2lmIEdURVNU
X0hBU19BQlNMCisgIHZvaWQqIGNhbGxlcl9mcmFtZSA9IG51bGxwdHI7CisgIGlmIChhYnNsOjpH
ZXRTdGFja1RyYWNlKCZjYWxsZXJfZnJhbWUsIDEsIDMpIDw9IDApIHsKKyAgICBjYWxsZXJfZnJh
bWUgPSBudWxscHRyOworICB9CisKKyAgTXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7CisgIGNhbGxl
cl9mcmFtZV8gPSBjYWxsZXJfZnJhbWU7CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCit9CisK
Ky8vIEEgaGVscGVyIGNsYXNzIHRoYXQgY3JlYXRlcyB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZSBp
biBpdHMKKy8vIGNvbnN0cnVjdG9yIGFuZCBkZWxldGVzIHRoZSBmaWxlIGluIGl0cyBkZXN0cnVj
dG9yLgorY2xhc3MgU2NvcGVkUHJlbWF0dXJlRXhpdEZpbGUgeworIHB1YmxpYzoKKyAgZXhwbGlj
aXQgU2NvcGVkUHJlbWF0dXJlRXhpdEZpbGUoY29uc3QgY2hhciogcHJlbWF0dXJlX2V4aXRfZmls
ZXBhdGgpCisgICAgICA6IHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoXyhwcmVtYXR1cmVfZXhpdF9m
aWxlcGF0aCA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVtYXR1cmVfZXhp
dF9maWxlcGF0aCA6ICIiKSB7CisgICAgLy8gSWYgYSBwYXRoIHRvIHRoZSBwcmVtYXR1cmUtZXhp
dCBmaWxlIGlzIHNwZWNpZmllZC4uLgorICAgIGlmICghcHJlbWF0dXJlX2V4aXRfZmlsZXBhdGhf
LmVtcHR5KCkpIHsKKyAgICAgIC8vIGNyZWF0ZSB0aGUgZmlsZSB3aXRoIGEgc2luZ2xlICIwIiBj
aGFyYWN0ZXIgaW4gaXQuICBJL08KKyAgICAgIC8vIGVycm9ycyBhcmUgaWdub3JlZCBhcyB0aGVy
ZSdzIG5vdGhpbmcgYmV0dGVyIHdlIGNhbiBkbyBhbmQgd2UKKyAgICAgIC8vIGRvbid0IHdhbnQg
dG8gZmFpbCB0aGUgdGVzdCBiZWNhdXNlIG9mIHRoaXMuCisgICAgICBGSUxFKiBwZmlsZSA9IHBv
c2l4OjpGT3BlbihwcmVtYXR1cmVfZXhpdF9maWxlcGF0aCwgInciKTsKKyAgICAgIGZ3cml0ZSgi
MCIsIDEsIDEsIHBmaWxlKTsKKyAgICAgIGZjbG9zZShwZmlsZSk7CisgICAgfQorICB9CisKKyAg
flNjb3BlZFByZW1hdHVyZUV4aXRGaWxlKCkgeworICAgIGlmICghcHJlbWF0dXJlX2V4aXRfZmls
ZXBhdGhfLmVtcHR5KCkpIHsKKyAgICAgIGludCByZXR2YWwgPSByZW1vdmUocHJlbWF0dXJlX2V4
aXRfZmlsZXBhdGhfLmNfc3RyKCkpOworICAgICAgaWYgKHJldHZhbCkgeworICAgICAgICBHVEVT
VF9MT0dfKEVSUk9SKSA8PCAiRmFpbGVkIHRvIHJlbW92ZSBwcmVtYXR1cmUgZXhpdCBmaWxlcGF0
aCBcIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcHJlbWF0dXJlX2V4aXRfZmlsZXBh
dGhfIDw8ICJcIiB3aXRoIGVycm9yICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcmV0
dmFsOworICAgICAgfQorICAgIH0KKyAgfQorCisgcHJpdmF0ZToKKyAgY29uc3Qgc3RkOjpzdHJp
bmcgcHJlbWF0dXJlX2V4aXRfZmlsZXBhdGhfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8oU2NvcGVkUHJlbWF0dXJlRXhpdEZpbGUpOworfTsKKwogfSAgLy8gbmFtZXNwYWNl
IGludGVybmFsCiAKIC8vIGNsYXNzIFRlc3RFdmVudExpc3RlbmVycwpAQCAtMzQzMSw3ICs0NDkz
LDcgQEAgdm9pZCBUZXN0RXZlbnRMaXN0ZW5lcnM6OlN1cHByZXNzRXZlbnRGb3J3YXJkaW5nKCkg
ewogLy8gV2UgZG9uJ3QgcHJvdGVjdCB0aGlzIHVuZGVyIG11dGV4XyBhcyBhIHVzZXIgaXMgbm90
IHN1cHBvc2VkIHRvCiAvLyBjYWxsIHRoaXMgYmVmb3JlIG1haW4oKSBzdGFydHMsIGZyb20gd2hp
Y2ggcG9pbnQgb24gdGhlIHJldHVybgogLy8gdmFsdWUgd2lsbCBuZXZlciBjaGFuZ2UuCi1Vbml0
VGVzdCAqIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpIHsKK1VuaXRUZXN0KiBVbml0VGVzdDo6R2V0
SW5zdGFuY2UoKSB7CiAgIC8vIFdoZW4gY29tcGlsZWQgd2l0aCBNU1ZDIDcuMSBpbiBvcHRpbWl6
ZWQgbW9kZSwgZGVzdHJveWluZyB0aGUKICAgLy8gVW5pdFRlc3Qgb2JqZWN0IHVwb24gZXhpdGlu
ZyB0aGUgcHJvZ3JhbSBtZXNzZXMgdXAgdGhlIGV4aXQgY29kZSwKICAgLy8gY2F1c2luZyBzdWNj
ZXNzZnVsIHRlc3RzIHRvIGFwcGVhciBmYWlsZWQuICBXZSBoYXZlIHRvIHVzZSBhCkBAIC0zNDgx
LDE3ICs0NTQzLDMzIEBAIGludCBVbml0VGVzdDo6c3VjY2Vzc2Z1bF90ZXN0X2NvdW50KCkgY29u
c3QgewogLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cy4KIGludCBVbml0VGVzdDo6
ZmFpbGVkX3Rlc3RfY291bnQoKSBjb25zdCB7IHJldHVybiBpbXBsKCktPmZhaWxlZF90ZXN0X2Nv
dW50KCk7IH0KIAorLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHRoYXQgd2ls
bCBiZSByZXBvcnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KK2ludCBVbml0VGVzdDo6cmVwb3J0YWJs
ZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3QgeworICByZXR1cm4gaW1wbCgpLT5yZXBvcnRh
YmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKTsKK30KKwogLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRp
c2FibGVkIHRlc3RzLgogaW50IFVuaXRUZXN0OjpkaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3Qg
ewogICByZXR1cm4gaW1wbCgpLT5kaXNhYmxlZF90ZXN0X2NvdW50KCk7CiB9CiAKKy8vIEdldHMg
dGhlIG51bWJlciBvZiB0ZXN0cyB0byBiZSBwcmludGVkIGluIHRoZSBYTUwgcmVwb3J0LgoraW50
IFVuaXRUZXN0OjpyZXBvcnRhYmxlX3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBpbXBs
KCktPnJlcG9ydGFibGVfdGVzdF9jb3VudCgpOworfQorCiAvLyBHZXRzIHRoZSBudW1iZXIgb2Yg
YWxsIHRlc3RzLgogaW50IFVuaXRUZXN0Ojp0b3RhbF90ZXN0X2NvdW50KCkgY29uc3QgeyByZXR1
cm4gaW1wbCgpLT50b3RhbF90ZXN0X2NvdW50KCk7IH0KIAogLy8gR2V0cyB0aGUgbnVtYmVyIG9m
IHRlc3RzIHRoYXQgc2hvdWxkIHJ1bi4KIGludCBVbml0VGVzdDo6dGVzdF90b19ydW5fY291bnQo
KSBjb25zdCB7IHJldHVybiBpbXBsKCktPnRlc3RfdG9fcnVuX2NvdW50KCk7IH0KIAorLy8gR2V0
cyB0aGUgdGltZSBvZiB0aGUgdGVzdCBwcm9ncmFtIHN0YXJ0LCBpbiBtcyBmcm9tIHRoZSBzdGFy
dCBvZiB0aGUKKy8vIFVOSVggZXBvY2guCitpbnRlcm5hbDo6VGltZUluTWlsbGlzIFVuaXRUZXN0
OjpzdGFydF90aW1lc3RhbXAoKSBjb25zdCB7CisgICAgcmV0dXJuIGltcGwoKS0+c3RhcnRfdGlt
ZXN0YW1wKCk7Cit9CisKIC8vIEdldHMgdGhlIGVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRz
LgogaW50ZXJuYWw6OlRpbWVJbk1pbGxpcyBVbml0VGVzdDo6ZWxhcHNlZF90aW1lKCkgY29uc3Qg
ewogICByZXR1cm4gaW1wbCgpLT5lbGFwc2VkX3RpbWUoKTsKQEAgLTM1MTAsNiArNDU4OCwxMiBA
QCBjb25zdCBUZXN0Q2FzZSogVW5pdFRlc3Q6OkdldFRlc3RDYXNlKGludCBpKSBjb25zdCB7CiAg
IHJldHVybiBpbXBsKCktPkdldFRlc3RDYXNlKGkpOwogfQogCisvLyBSZXR1cm5zIHRoZSBUZXN0
UmVzdWx0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gb24gdGVzdCBmYWlsdXJlcyBhbmQKKy8vIHBy
b3BlcnRpZXMgbG9nZ2VkIG91dHNpZGUgb2YgaW5kaXZpZHVhbCB0ZXN0IGNhc2VzLgorY29uc3Qg
VGVzdFJlc3VsdCYgVW5pdFRlc3Q6OmFkX2hvY190ZXN0X3Jlc3VsdCgpIGNvbnN0IHsKKyAgcmV0
dXJuICppbXBsKCktPmFkX2hvY190ZXN0X3Jlc3VsdCgpOworfQorCiAvLyBHZXRzIHRoZSBpLXRo
IHRlc3QgY2FzZSBhbW9uZyBhbGwgdGhlIHRlc3QgY2FzZXMuIGkgY2FuIHJhbmdlIGZyb20gMCB0
bwogLy8gdG90YWxfdGVzdF9jYXNlX2NvdW50KCkgLSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJh
bmdlLCByZXR1cm5zIE5VTEwuCiBUZXN0Q2FzZSogVW5pdFRlc3Q6OkdldE11dGFibGVUZXN0Q2Fz
ZShpbnQgaSkgewpAQCAtMzU0MSwyOSArNDYyNSwxNiBAQCBFbnZpcm9ubWVudCogVW5pdFRlc3Q6
OkFkZEVudmlyb25tZW50KEVudmlyb25tZW50KiBlbnYpIHsKICAgcmV0dXJuIGVudjsKIH0KIAot
I2lmIEdURVNUX0hBU19FWENFUFRJT05TCi0vLyBBIGZhaWxlZCBHb29nbGUgVGVzdCBhc3NlcnRp
b24gd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gb2YgdGhpcyB0eXBlCi0vLyB3aGVuIGV4Y2VwdGlv
bnMgYXJlIGVuYWJsZWQuICBXZSBkZXJpdmUgaXQgZnJvbSBzdGQ6OnJ1bnRpbWVfZXJyb3IsCi0v
LyB3aGljaCBpcyBmb3IgZXJyb3JzIHByZXN1bWFibHkgZGV0ZWN0YWJsZSBvbmx5IGF0IHJ1biB0
aW1lLiAgU2luY2UKLS8vIHN0ZDo6cnVudGltZV9lcnJvciBpbmhlcml0cyBmcm9tIHN0ZDo6ZXhj
ZXB0aW9uLCBtYW55IHRlc3RpbmcKLS8vIGZyYW1ld29ya3Mga25vdyBob3cgdG8gZXh0cmFjdCBh
bmQgcHJpbnQgdGhlIG1lc3NhZ2UgaW5zaWRlIGl0LgotY2xhc3MgR29vZ2xlVGVzdEZhaWx1cmVF
eGNlcHRpb24gOiBwdWJsaWMgOjpzdGQ6OnJ1bnRpbWVfZXJyb3IgewotIHB1YmxpYzoKLSAgZXhw
bGljaXQgR29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24oY29uc3QgVGVzdFBhcnRSZXN1bHQmIGZh
aWx1cmUpCi0gICAgICA6IDo6c3RkOjpydW50aW1lX2Vycm9yKFByaW50VGVzdFBhcnRSZXN1bHRU
b1N0cmluZyhmYWlsdXJlKS5jX3N0cigpKSB7fQotfTsKLSNlbmRpZgotCiAvLyBBZGRzIGEgVGVz
dFBhcnRSZXN1bHQgdG8gdGhlIGN1cnJlbnQgVGVzdFJlc3VsdCBvYmplY3QuICBBbGwgR29vZ2xl
IFRlc3QKIC8vIGFzc2VydGlvbiBtYWNyb3MgKGUuZy4gQVNTRVJUX1RSVUUsIEVYUEVDVF9FUSwg
ZXRjKSBldmVudHVhbGx5IGNhbGwKIC8vIHRoaXMgdG8gcmVwb3J0IHRoZWlyIHJlc3VsdHMuICBU
aGUgdXNlciBjb2RlIHNob3VsZCB1c2UgdGhlCiAvLyBhc3NlcnRpb24gbWFjcm9zIGluc3RlYWQg
b2YgY2FsbGluZyB0aGlzIGRpcmVjdGx5LgotLy8gTCA8IG11dGV4Xwotdm9pZCBVbml0VGVzdDo6
QWRkVGVzdFBhcnRSZXN1bHQoVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlX25hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZV9udW1iZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnRlcm5hbDo6U3RyaW5nJiBtZXNzYWdlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyYg
b3Nfc3RhY2tfdHJhY2UpIHsKK3ZvaWQgVW5pdFRlc3Q6OkFkZFRlc3RQYXJ0UmVzdWx0KAorICAg
IFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAorICAgIGNvbnN0IGNoYXIqIGZpbGVf
bmFtZSwKKyAgICBpbnQgbGluZV9udW1iZXIsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3Nh
Z2UsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9zX3N0YWNrX3RyYWNlKSBHVEVTVF9MT0NLX0VY
Q0xVREVEXyhtdXRleF8pIHsKICAgTWVzc2FnZSBtc2c7CiAgIG1zZyA8PCBtZXNzYWdlOwogCkBA
IC0zNTk2LDE3ICs0NjY3LDI2IEBAIHZvaWQgVW5pdFRlc3Q6OkFkZFRlc3RQYXJ0UmVzdWx0KFRl
c3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAogICAgIC8vIHdpdGggYW5vdGhlciB0ZXN0
aW5nIGZyYW1ld29yaykgYW5kIHNwZWNpZnkgdGhlIGZvcm1lciBvbiB0aGUKICAgICAvLyBjb21t
YW5kIGxpbmUgZm9yIGRlYnVnZ2luZy4KICAgICBpZiAoR1RFU1RfRkxBRyhicmVha19vbl9mYWls
dXJlKSkgewotI2lmIEdURVNUX09TX1dJTkRPV1MKKyNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFH
VEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUCiAgICAgICAvLyBV
c2luZyBEZWJ1Z0JyZWFrIG9uIFdpbmRvd3MgYWxsb3dzIGd0ZXN0IHRvIHN0aWxsIGJyZWFrIGlu
dG8gYSBkZWJ1Z2dlcgogICAgICAgLy8gd2hlbiBhIGZhaWx1cmUgaGFwcGVucyBhbmQgYm90aCB0
aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGFuZAogICAgICAgLy8gdGhlIC0tZ3Rlc3RfY2F0
Y2hfZXhjZXB0aW9ucyBmbGFncyBhcmUgc3BlY2lmaWVkLgogICAgICAgRGVidWdCcmVhaygpOwor
I2VsaWYgKCFkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKSkgJiYgICAgICAgICAgICBcCisgICAg
KChkZWZpbmVkKF9fY2xhbmdfXykgfHwgZGVmaW5lZChfX0dOVUNfXykpICYmIFwKKyAgICAgKGRl
ZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2kzODZfXykpKQorICAgICAgLy8gd2l0aCBj
bGFuZy9nY2Mgd2UgY2FuIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IG9uIHg4NiBieSBpbnZva2lu
ZyBpbnQzCisgICAgICBhc20oImludDMiKTsKICNlbHNlCisgICAgICAvLyBEZXJlZmVyZW5jZSBO
VUxMIHRocm91Z2ggYSB2b2xhdGlsZSBwb2ludGVyIHRvIHByZXZlbnQgdGhlIGNvbXBpbGVyCisg
ICAgICAvLyBmcm9tIHJlbW92aW5nLiBXZSB1c2UgdGhpcyByYXRoZXIgdGhhbiBhYm9ydCgpIG9y
IF9fYnVpbHRpbl90cmFwKCkgZm9yCisgICAgICAvLyBwb3J0YWJpbGl0eTogU3ltYmlhbiBkb2Vz
bid0IGltcGxlbWVudCBhYm9ydCgpIHdlbGwsIGFuZCBzb21lIGRlYnVnZ2VycworICAgICAgLy8g
ZG9uJ3QgY29ycmVjdGx5IHRyYXAgYWJvcnQoKS4KICAgICAgICpzdGF0aWNfY2FzdDx2b2xhdGls
ZSBpbnQqPihOVUxMKSA9IDE7CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKICAgICB9IGVs
c2UgaWYgKEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkpIHsKICNpZiBHVEVTVF9IQVNfRVhD
RVBUSU9OUwotICAgICAgdGhyb3cgR29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24ocmVzdWx0KTsK
KyAgICAgIHRocm93IGludGVybmFsOjpHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbihyZXN1bHQp
OwogI2Vsc2UKICAgICAgIC8vIFdlIGNhbm5vdCBjYWxsIGFib3J0KCkgYXMgaXQgZ2VuZXJhdGVz
IGEgcG9wLXVwIGluIGRlYnVnIG1vZGUKICAgICAgIC8vIHRoYXQgY2Fubm90IGJlIHN1cHByZXNz
ZWQgaW4gVkMgNy4xIG9yIGJlbG93LgpAQCAtMzYxNiwxMiArNDY5NiwxNCBAQCB2b2lkIFVuaXRU
ZXN0OjpBZGRUZXN0UGFydFJlc3VsdChUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwK
ICAgfQogfQogCi0vLyBDcmVhdGVzIGFuZCBhZGRzIGEgcHJvcGVydHkgdG8gdGhlIGN1cnJlbnQg
VGVzdFJlc3VsdC4gSWYgYSBwcm9wZXJ0eSBtYXRjaGluZwotLy8gdGhlIHN1cHBsaWVkIHZhbHVl
IGFscmVhZHkgZXhpc3RzLCB1cGRhdGVzIGl0cyB2YWx1ZSBpbnN0ZWFkLgotdm9pZCBVbml0VGVz
dDo6UmVjb3JkUHJvcGVydHlGb3JDdXJyZW50VGVzdChjb25zdCBjaGFyKiBrZXksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHZhbHVlKSB7
Ci0gIGNvbnN0IFRlc3RQcm9wZXJ0eSB0ZXN0X3Byb3BlcnR5KGtleSwgdmFsdWUpOwotICBpbXBs
Xy0+Y3VycmVudF90ZXN0X3Jlc3VsdCgpLT5SZWNvcmRQcm9wZXJ0eSh0ZXN0X3Byb3BlcnR5KTsK
Ky8vIEFkZHMgYSBUZXN0UHJvcGVydHkgdG8gdGhlIGN1cnJlbnQgVGVzdFJlc3VsdCBvYmplY3Qg
d2hlbiBpbnZva2VkIGZyb20KKy8vIGluc2lkZSBhIHRlc3QsIHRvIGN1cnJlbnQgVGVzdENhc2Un
cyBhZF9ob2NfdGVzdF9yZXN1bHRfIHdoZW4gaW52b2tlZAorLy8gZnJvbSBTZXRVcFRlc3RDYXNl
IG9yIFRlYXJEb3duVGVzdENhc2UsIG9yIHRvIHRoZSBnbG9iYWwgcHJvcGVydHkgc2V0CisvLyB3
aGVuIGludm9rZWQgZWxzZXdoZXJlLiAgSWYgdGhlIHJlc3VsdCBhbHJlYWR5IGNvbnRhaW5zIGEg
cHJvcGVydHkgd2l0aAorLy8gdGhlIHNhbWUga2V5LCB0aGUgdmFsdWUgd2lsbCBiZSB1cGRhdGVk
Lgordm9pZCBVbml0VGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkg
eworICBpbXBsXy0+UmVjb3JkUHJvcGVydHkoVGVzdFByb3BlcnR5KGtleSwgdmFsdWUpKTsKIH0K
IAogLy8gUnVucyBhbGwgdGVzdHMgaW4gdGhpcyBVbml0VGVzdCBvYmplY3QgYW5kIHByaW50cyB0
aGUgcmVzdWx0LgpAQCAtMzYzMCwzMSArNDcxMiw1OCBAQCB2b2lkIFVuaXRUZXN0OjpSZWNvcmRQ
cm9wZXJ0eUZvckN1cnJlbnRUZXN0KGNvbnN0IGNoYXIqIGtleSwKIC8vIFdlIGRvbid0IHByb3Rl
Y3QgdGhpcyB1bmRlciBtdXRleF8sIGFzIHdlIG9ubHkgc3VwcG9ydCBjYWxsaW5nIGl0CiAvLyBm
cm9tIHRoZSBtYWluIHRocmVhZC4KIGludCBVbml0VGVzdDo6UnVuKCkgewotI2lmIEdURVNUX0hB
U19TRUgKLSAgLy8gQ2F0Y2ggU0VILXN0eWxlIGV4Y2VwdGlvbnMuCi0KICAgY29uc3QgYm9vbCBp
bl9kZWF0aF90ZXN0X2NoaWxkX3Byb2Nlc3MgPQogICAgICAgaW50ZXJuYWw6OkdURVNUX0ZMQUco
aW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpLmxlbmd0aCgpID4gMDsKIAorICAvLyBHb29nbGUgVGVz
dCBpbXBsZW1lbnRzIHRoaXMgcHJvdG9jb2wgZm9yIGNhdGNoaW5nIHRoYXQgYSB0ZXN0CisgIC8v
IHByb2dyYW0gZXhpdHMgYmVmb3JlIHJldHVybmluZyBjb250cm9sIHRvIEdvb2dsZSBUZXN0Ogor
ICAvLworICAvLyAgIDEuIFVwb24gc3RhcnQsIEdvb2dsZSBUZXN0IGNyZWF0ZXMgYSBmaWxlIHdo
b3NlIGFic29sdXRlIHBhdGgKKyAgLy8gICAgICBpcyBzcGVjaWZpZWQgYnkgdGhlIGVudmlyb25t
ZW50IHZhcmlhYmxlCisgIC8vICAgICAgVEVTVF9QUkVNQVRVUkVfRVhJVF9GSUxFLgorICAvLyAg
IDIuIFdoZW4gR29vZ2xlIFRlc3QgaGFzIGZpbmlzaGVkIGl0cyB3b3JrLCBpdCBkZWxldGVzIHRo
ZSBmaWxlLgorICAvLworICAvLyBUaGlzIGFsbG93cyBhIHRlc3QgcnVubmVyIHRvIHNldCBURVNU
X1BSRU1BVFVSRV9FWElUX0ZJTEUgYmVmb3JlCisgIC8vIHJ1bm5pbmcgYSBHb29nbGUtVGVzdC1i
YXNlZCB0ZXN0IHByb2dyYW0gYW5kIGNoZWNrIHRoZSBleGlzdGVuY2UKKyAgLy8gb2YgdGhlIGZp
bGUgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdCBleGVjdXRpb24gdG8gc2VlIGlmIGl0IGhhcworICAv
LyBleGl0ZWQgcHJlbWF0dXJlbHkuCisKKyAgLy8gSWYgd2UgYXJlIGluIHRoZSBjaGlsZCBwcm9j
ZXNzIG9mIGEgZGVhdGggdGVzdCwgZG9uJ3QKKyAgLy8gY3JlYXRlL2RlbGV0ZSB0aGUgcHJlbWF0
dXJlIGV4aXQgZmlsZSwgYXMgZG9pbmcgc28gaXMgdW5uZWNlc3NhcnkKKyAgLy8gYW5kIHdpbGwg
Y29uZnVzZSB0aGUgcGFyZW50IHByb2Nlc3MuICBPdGhlcndpc2UsIGNyZWF0ZS9kZWxldGUKKyAg
Ly8gdGhlIGZpbGUgdXBvbiBlbnRlcmluZy9sZWF2aW5nIHRoaXMgZnVuY3Rpb24uICBJZiB0aGUg
cHJvZ3JhbQorICAvLyBzb21laG93IGV4aXRzIGJlZm9yZSB0aGlzIGZ1bmN0aW9uIGhhcyBhIGNo
YW5jZSB0byByZXR1cm4sIHRoZQorICAvLyBwcmVtYXR1cmUtZXhpdCBmaWxlIHdpbGwgYmUgbGVm
dCB1bmRlbGV0ZWQsIGNhdXNpbmcgYSB0ZXN0IHJ1bm5lcgorICAvLyB0aGF0IHVuZGVyc3RhbmRz
IHRoZSBwcmVtYXR1cmUtZXhpdC1maWxlIHByb3RvY29sIHRvIHJlcG9ydCB0aGUKKyAgLy8gdGVz
dCBhcyBoYXZpbmcgZmFpbGVkLgorICBjb25zdCBpbnRlcm5hbDo6U2NvcGVkUHJlbWF0dXJlRXhp
dEZpbGUgcHJlbWF0dXJlX2V4aXRfZmlsZSgKKyAgICAgIGluX2RlYXRoX3Rlc3RfY2hpbGRfcHJv
Y2VzcyA/CisgICAgICBOVUxMIDogaW50ZXJuYWw6OnBvc2l4OjpHZXRFbnYoIlRFU1RfUFJFTUFU
VVJFX0VYSVRfRklMRSIpKTsKKworICAvLyBDYXB0dXJlcyB0aGUgdmFsdWUgb2YgR1RFU1RfRkxB
RyhjYXRjaF9leGNlcHRpb25zKS4gIFRoaXMgdmFsdWUgd2lsbCBiZQorICAvLyB1c2VkIGZvciB0
aGUgZHVyYXRpb24gb2YgdGhlIHByb2dyYW0uCisgIGltcGwoKS0+c2V0X2NhdGNoX2V4Y2VwdGlv
bnMoR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSk7CisKKyNpZiBHVEVTVF9PU19XSU5ET1dT
CiAgIC8vIEVpdGhlciB0aGUgdXNlciB3YW50cyBHb29nbGUgVGVzdCB0byBjYXRjaCBleGNlcHRp
b25zIHRocm93biBieSB0aGUKICAgLy8gdGVzdHMgb3IgdGhpcyBpcyBleGVjdXRpbmcgaW4gdGhl
IGNvbnRleHQgb2YgZGVhdGggdGVzdCBjaGlsZAogICAvLyBwcm9jZXNzLiBJbiBlaXRoZXIgY2Fz
ZSB0aGUgdXNlciBkb2VzIG5vdCB3YW50IHRvIHNlZSBwb3AtdXAgZGlhbG9ncwotICAvLyBhYm91
dCBjcmFzaGVzIC0gdGhleSBhcmUgZXhwZWN0ZWQuLgotICBpZiAoR1RFU1RfRkxBRyhjYXRjaF9l
eGNlcHRpb25zKSB8fCBpbl9kZWF0aF90ZXN0X2NoaWxkX3Byb2Nlc3MpIHsKLSNpZiAhR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKKyAgLy8gYWJvdXQgY3Jhc2hlcyAtIHRoZXkgYXJlIGV4cGVjdGVk
LgorICBpZiAoaW1wbCgpLT5jYXRjaF9leGNlcHRpb25zKCkgfHwgaW5fZGVhdGhfdGVzdF9jaGls
ZF9wcm9jZXNzKSB7CisjIGlmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRSAmJiAhR1RFU1RfT1Nf
V0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lORE9XU19SVAogICAgIC8vIFNldEVycm9yTW9k
ZSBkb2Vzbid0IGV4aXN0IG9uIENFLgogICAgIFNldEVycm9yTW9kZShTRU1fRkFJTENSSVRJQ0FM
RVJST1JTIHwgU0VNX05PQUxJR05NRU5URkFVTFRFWENFUFQgfAogICAgICAgICAgICAgICAgICBT
RU1fTk9HUEZBVUxURVJST1JCT1ggfCBTRU1fTk9PUEVORklMRUVSUk9SQk9YKTsKLSNlbmRpZiAg
Ly8gIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGVuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKIAotI2lmIChkZWZpbmVkKF9NU0NfVkVSKSB8fCBHVEVTVF9PU19XSU5ET1dTX01J
TkdXKSAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaWYgKGRlZmluZWQoX01TQ19WRVIp
IHx8IEdURVNUX09TX1dJTkRPV1NfTUlOR1cpICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQog
ICAgIC8vIERlYXRoIHRlc3QgY2hpbGRyZW4gY2FuIGJlIHRlcm1pbmF0ZWQgd2l0aCBfYWJvcnQo
KS4gIE9uIFdpbmRvd3MsCiAgICAgLy8gX2Fib3J0KCkgY2FuIHNob3cgYSBkaWFsb2cgd2l0aCBh
IHdhcm5pbmcgbWVzc2FnZS4gIFRoaXMgZm9yY2VzIHRoZQogICAgIC8vIGFib3J0IG1lc3NhZ2Ug
dG8gZ28gdG8gc3RkZXJyIGluc3RlYWQuCiAgICAgX3NldF9lcnJvcl9tb2RlKF9PVVRfVE9fU1RE
RVJSKTsKLSNlbmRpZgorIyBlbmRpZgogCi0jaWYgX01TQ19WRVIgPj0gMTQwMCAmJiAhR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKKyMgaWYgX01TQ19WRVIgPj0gMTQwMCAmJiAhR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUKICAgICAvLyBJbiB0aGUgZGVidWcgdmVyc2lvbiwgVmlzdWFsIFN0dWRpbyBw
b3BzIHVwIGEgc2VwYXJhdGUgZGlhbG9nCiAgICAgLy8gb2ZmZXJpbmcgYSBjaG9pY2UgdG8gZGVi
dWcgdGhlIGFib3J0ZWQgcHJvZ3JhbS4gV2UgbmVlZCB0byBzdXBwcmVzcwogICAgIC8vIHRoaXMg
ZGlhbG9nIG9yIGl0IHdpbGwgcG9wIHVwIGZvciBldmVyeSBFWFBFQ1QvQVNTRVJUX0RFQVRIIHN0
YXRlbWVudApAQCAtMzY2NCwyOCArNDc3MywyMCBAQCBpbnQgVW5pdFRlc3Q6OlJ1bigpIHsKICAg
ICAvLyBWQysrIGRvZXNuJ3QgZGVmaW5lIF9zZXRfYWJvcnRfYmVoYXZpb3IoKSBwcmlvciB0byB0
aGUgdmVyc2lvbiA4LjAuCiAgICAgLy8gVXNlcnMgb2YgcHJpb3IgVkMgdmVyc2lvbnMgc2hhbGwg
c3VmZmVyIHRoZSBhZ29ueSBhbmQgcGFpbiBvZgogICAgIC8vIGNsaWNraW5nIHRocm91Z2ggdGhl
IGNvdW50bGVzcyBkZWJ1ZyBkaWFsb2dzLgotICAgIC8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6
IGZpbmQgYSB3YXkgdG8gc3VwcHJlc3MgdGhlIGFib3J0IGRpYWxvZygpIGluIHRoZQorICAgIC8v
IEZJWE1FOiBmaW5kIGEgd2F5IHRvIHN1cHByZXNzIHRoZSBhYm9ydCBkaWFsb2coKSBpbiB0aGUK
ICAgICAvLyBkZWJ1ZyBtb2RlIHdoZW4gY29tcGlsZWQgd2l0aCBWQyA3LjEgb3IgbG93ZXIuCiAg
ICAgaWYgKCFHVEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpKQogICAgICAgX3NldF9hYm9ydF9i
ZWhhdmlvcigKICAgICAgICAgICAweDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gQ2xlYXIgdGhlIGZvbGxvd2luZyBmbGFnczoKICAgICAgICAgICBfV1JJVEVfQUJPUlRf
TVNHIHwgX0NBTExfUkVQT1JURkFVTFQpOyAgLy8gcG9wLXVwIHdpbmRvdywgY29yZSBkdW1wLgot
I2VuZGlmCisjIGVuZGlmCiAgIH0KKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCi0gIF9f
dHJ5IHsKLSAgICByZXR1cm4gaW1wbF8tPlJ1bkFsbFRlc3RzKCk7Ci0gIH0gX19leGNlcHQoaW50
ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6R1Rlc3RTaG91bGRQcm9jZXNzU0VIKAotICAgICAgR2V0
RXhjZXB0aW9uQ29kZSgpKSkgewotICAgIHByaW50ZigiRXhjZXB0aW9uIHRocm93biB3aXRoIGNv
ZGUgMHgleC5cbkZBSUxcbiIsIEdldEV4Y2VwdGlvbkNvZGUoKSk7Ci0gICAgZmZsdXNoKHN0ZG91
dCk7Ci0gICAgcmV0dXJuIDE7Ci0gIH0KLQotI2Vsc2UgIC8vIFdlIGFyZSBvbiBhIGNvbXBpbGVy
IG9yIHBsYXRmb3JtIHRoYXQgZG9lc24ndCBzdXBwb3J0IFNFSC4KLQotICByZXR1cm4gaW1wbF8t
PlJ1bkFsbFRlc3RzKCk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKKyAgcmV0dXJuIGludGVy
bmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAgICAgIGltcGwoKSwK
KyAgICAgICZpbnRlcm5hbDo6VW5pdFRlc3RJbXBsOjpSdW5BbGxUZXN0cywKKyAgICAgICJhdXhp
bGlhcnkgdGVzdCBjb2RlIChlbnZpcm9ubWVudHMgb3IgZXZlbnQgbGlzdGVuZXJzKSIpID8gMCA6
IDE7CiB9CiAKIC8vIFJldHVybnMgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IHdoZW4gdGhlIGZpcnN0
IFRFU1QoKSBvciBURVNUX0YoKSB3YXMKQEAgLTM2OTYsMTYgKzQ3OTcsMTYgQEAgY29uc3QgY2hh
ciogVW5pdFRlc3Q6Om9yaWdpbmFsX3dvcmtpbmdfZGlyKCkgY29uc3QgewogCiAvLyBSZXR1cm5z
IHRoZSBUZXN0Q2FzZSBvYmplY3QgZm9yIHRoZSB0ZXN0IHRoYXQncyBjdXJyZW50bHkgcnVubmlu
ZywKIC8vIG9yIE5VTEwgaWYgbm8gdGVzdCBpcyBydW5uaW5nLgotLy8gTCA8IG11dGV4XwotY29u
c3QgVGVzdENhc2UqIFVuaXRUZXN0OjpjdXJyZW50X3Rlc3RfY2FzZSgpIGNvbnN0IHsKK2NvbnN0
IFRlc3RDYXNlKiBVbml0VGVzdDo6Y3VycmVudF90ZXN0X2Nhc2UoKSBjb25zdAorICAgIEdURVNU
X0xPQ0tfRVhDTFVERURfKG11dGV4XykgewogICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGxvY2soJm11
dGV4Xyk7CiAgIHJldHVybiBpbXBsXy0+Y3VycmVudF90ZXN0X2Nhc2UoKTsKIH0KIAogLy8gUmV0
dXJucyB0aGUgVGVzdEluZm8gb2JqZWN0IGZvciB0aGUgdGVzdCB0aGF0J3MgY3VycmVudGx5IHJ1
bm5pbmcsCiAvLyBvciBOVUxMIGlmIG5vIHRlc3QgaXMgcnVubmluZy4KLS8vIEwgPCBtdXRleF8K
LWNvbnN0IFRlc3RJbmZvKiBVbml0VGVzdDo6Y3VycmVudF90ZXN0X2luZm8oKSBjb25zdCB7Citj
b25zdCBUZXN0SW5mbyogVW5pdFRlc3Q6OmN1cnJlbnRfdGVzdF9pbmZvKCkgY29uc3QKKyAgICBH
VEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pIHsKICAgaW50ZXJuYWw6Ok11dGV4TG9jayBsb2Nr
KCZtdXRleF8pOwogICByZXR1cm4gaW1wbF8tPmN1cnJlbnRfdGVzdF9pbmZvKCk7CiB9CkBAIC0z
NzEzLDE1ICs0ODE0LDEzIEBAIGNvbnN0IFRlc3RJbmZvKiBVbml0VGVzdDo6Y3VycmVudF90ZXN0
X2luZm8oKSBjb25zdCB7CiAvLyBSZXR1cm5zIHRoZSByYW5kb20gc2VlZCB1c2VkIGF0IHRoZSBz
dGFydCBvZiB0aGUgY3VycmVudCB0ZXN0IHJ1bi4KIGludCBVbml0VGVzdDo6cmFuZG9tX3NlZWQo
KSBjb25zdCB7IHJldHVybiBpbXBsXy0+cmFuZG9tX3NlZWQoKTsgfQogCi0jaWYgR1RFU1RfSEFT
X1BBUkFNX1RFU1QKIC8vIFJldHVybnMgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgb2Jq
ZWN0IHVzZWQgdG8ga2VlcCB0cmFjayBvZgogLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBh
bmQgaW5zdGFudGlhdGUgYW5kIHJlZ2lzdGVyIHRoZW0uCi0vLyBMIDwgbXV0ZXhfCiBpbnRlcm5h
bDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkmCi0gICAgVW5pdFRlc3Q6OnBhcmFtZXRl
cml6ZWRfdGVzdF9yZWdpc3RyeSgpIHsKKyAgICBVbml0VGVzdDo6cGFyYW1ldGVyaXplZF90ZXN0
X3JlZ2lzdHJ5KCkKKyAgICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7CiAgIHJl
dHVybiBpbXBsXy0+cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCk7CiB9Ci0jZW5kaWYgIC8v
IEdURVNUX0hBU19QQVJBTV9URVNUCiAKIC8vIENyZWF0ZXMgYW4gZW1wdHkgVW5pdFRlc3QuCiBV
bml0VGVzdDo6VW5pdFRlc3QoKSB7CkBAIC0zNzM1LDE1ICs0ODM0LDE1IEBAIFVuaXRUZXN0Ojp+
VW5pdFRlc3QoKSB7CiAKIC8vIFB1c2hlcyBhIHRyYWNlIGRlZmluZWQgYnkgU0NPUEVEX1RSQUNF
KCkgb24gdG8gdGhlIHBlci10aHJlYWQKIC8vIEdvb2dsZSBUZXN0IHRyYWNlIHN0YWNrLgotLy8g
TCA8IG11dGV4Xwotdm9pZCBVbml0VGVzdDo6UHVzaEdUZXN0VHJhY2UoY29uc3QgaW50ZXJuYWw6
OlRyYWNlSW5mbyYgdHJhY2UpIHsKK3ZvaWQgVW5pdFRlc3Q6OlB1c2hHVGVzdFRyYWNlKGNvbnN0
IGludGVybmFsOjpUcmFjZUluZm8mIHRyYWNlKQorICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11
dGV4XykgewogICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7CiAgIGltcGxfLT5n
dGVzdF90cmFjZV9zdGFjaygpLnB1c2hfYmFjayh0cmFjZSk7CiB9CiAKIC8vIFBvcHMgYSB0cmFj
ZSBmcm9tIHRoZSBwZXItdGhyZWFkIEdvb2dsZSBUZXN0IHRyYWNlIHN0YWNrLgotLy8gTCA8IG11
dGV4Xwotdm9pZCBVbml0VGVzdDo6UG9wR1Rlc3RUcmFjZSgpIHsKK3ZvaWQgVW5pdFRlc3Q6OlBv
cEdUZXN0VHJhY2UoKQorICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4XykgewogICBpbnRl
cm5hbDo6TXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7CiAgIGltcGxfLT5ndGVzdF90cmFjZV9zdGFj
aygpLnBvcF9iYWNrKCk7CiB9CkBAIC0zNzUyLDI1ICs0ODUxLDE2IEBAIG5hbWVzcGFjZSBpbnRl
cm5hbCB7CiAKIFVuaXRUZXN0SW1wbDo6VW5pdFRlc3RJbXBsKFVuaXRUZXN0KiBwYXJlbnQpCiAg
ICAgOiBwYXJlbnRfKHBhcmVudCksCi0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhw
dXNoKSAgICAgICAgICAgICAgICAgICAgLy8gU2F2ZXMgdGhlIGN1cnJlbnQgd2FybmluZyBzdGF0
ZS4KLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQzNTUpICAgICAgICAgICAgLy8gVGVtcG9yYXJp
bHkgZGlzYWJsZXMgd2FybmluZyA0MzU1Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vICh1c2luZyB0aGlzIGluIGluaXRpYWxpemVyKS4KLSAgICAgIGRlZmF1bHRf
Z2xvYmFsX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfKHRoaXMpLAotICAgICAgZGVmYXVsdF9w
ZXJfdGhyZWFkX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfKHRoaXMpLAotI3ByYWdtYSB3YXJu
aW5nKHBvcCkgICAgICAgICAgICAgICAgICAgICAvLyBSZXN0b3JlcyB0aGUgd2FybmluZyBzdGF0
ZSBhZ2Fpbi4KLSNlbHNlCisgICAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0
MzU1IC8qIHVzaW5nIHRoaXMgaW4gaW5pdGlhbGl6ZXIgKi8pCiAgICAgICBkZWZhdWx0X2dsb2Jh
bF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXyh0aGlzKSwKICAgICAgIGRlZmF1bHRfcGVyX3Ro
cmVhZF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXyh0aGlzKSwKLSNlbmRpZiAgLy8gX01TQ19W
RVIKKyAgICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQogICAgICAgZ2xvYmFs
X3Rlc3RfcGFydF9yZXN1bHRfcmVwb3Rlcl8oCiAgICAgICAgICAgJmRlZmF1bHRfZ2xvYmFsX3Rl
c3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfKSwKICAgICAgIHBlcl90aHJlYWRfdGVzdF9wYXJ0X3Jl
c3VsdF9yZXBvcnRlcl8oCiAgICAgICAgICAgJmRlZmF1bHRfcGVyX3RocmVhZF90ZXN0X3BhcnRf
cmVzdWx0X3JlcG9ydGVyXyksCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgICAgIHBhcmFt
ZXRlcml6ZWRfdGVzdF9yZWdpc3RyeV8oKSwKICAgICAgIHBhcmFtZXRlcml6ZWRfdGVzdHNfcmVn
aXN0ZXJlZF8oZmFsc2UpLAotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogICAgICAg
bGFzdF9kZWF0aF90ZXN0X2Nhc2VfKC0xKSwKICAgICAgIGN1cnJlbnRfdGVzdF9jYXNlXyhOVUxM
KSwKICAgICAgIGN1cnJlbnRfdGVzdF9pbmZvXyhOVUxMKSwKQEAgLTM3NzksMTMgKzQ4NjksMTMg
QEAgVW5pdFRlc3RJbXBsOjpVbml0VGVzdEltcGwoVW5pdFRlc3QqIHBhcmVudCkKICAgICAgIHBv
c3RfZmxhZ19wYXJzZV9pbml0X3BlcmZvcm1lZF8oZmFsc2UpLAogICAgICAgcmFuZG9tX3NlZWRf
KDApLCAgLy8gV2lsbCBiZSBvdmVycmlkZGVuIGJ5IHRoZSBmbGFnIGJlZm9yZSBmaXJzdCB1c2Uu
CiAgICAgICByYW5kb21fKDApLCAgLy8gV2lsbCBiZSByZXNlZWRlZCBiZWZvcmUgZmlyc3QgdXNl
LgotI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCisgICAgICBzdGFydF90aW1lc3RhbXBfKDApLAog
ICAgICAgZWxhcHNlZF90aW1lXygwKSwKLSAgICAgIGludGVybmFsX3J1bl9kZWF0aF90ZXN0X2Zs
YWdfKE5VTEwpLAotICAgICAgZGVhdGhfdGVzdF9mYWN0b3J5XyhuZXcgRGVmYXVsdERlYXRoVGVz
dEZhY3RvcnkpIHsKLSNlbHNlCi0gICAgICBlbGFwc2VkX3RpbWVfKDApIHsKLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX0RFQVRIX1RFU1QKKyNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorICAgICAgZGVh
dGhfdGVzdF9mYWN0b3J5XyhuZXcgRGVmYXVsdERlYXRoVGVzdEZhY3RvcnkpLAorI2VuZGlmCisg
ICAgICAvLyBXaWxsIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGZsYWcgYmVmb3JlIGZpcnN0IHVzZS4K
KyAgICAgIGNhdGNoX2V4Y2VwdGlvbnNfKGZhbHNlKSB7CiAgIGxpc3RlbmVycygpLT5TZXREZWZh
dWx0UmVzdWx0UHJpbnRlcihuZXcgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyKTsKIH0KIApA
QCAtMzc5OSw2ICs0ODg5LDI4IEBAIFVuaXRUZXN0SW1wbDo6flVuaXRUZXN0SW1wbCgpIHsKICAg
ZGVsZXRlIG9zX3N0YWNrX3RyYWNlX2dldHRlcl87CiB9CiAKKy8vIEFkZHMgYSBUZXN0UHJvcGVy
dHkgdG8gdGhlIGN1cnJlbnQgVGVzdFJlc3VsdCBvYmplY3Qgd2hlbiBpbnZva2VkIGluIGEKKy8v
IGNvbnRleHQgb2YgYSB0ZXN0LCB0byBjdXJyZW50IHRlc3QgY2FzZSdzIGFkX2hvY190ZXN0X3Jl
c3VsdCB3aGVuIGludm9rZQorLy8gZnJvbSBTZXRVcFRlc3RDYXNlL1RlYXJEb3duVGVzdENhc2Us
IG9yIHRvIHRoZSBnbG9iYWwgcHJvcGVydHkgc2V0CisvLyBvdGhlcndpc2UuICBJZiB0aGUgcmVz
dWx0IGFscmVhZHkgY29udGFpbnMgYSBwcm9wZXJ0eSB3aXRoIHRoZSBzYW1lIGtleSwKKy8vIHRo
ZSB2YWx1ZSB3aWxsIGJlIHVwZGF0ZWQuCit2b2lkIFVuaXRUZXN0SW1wbDo6UmVjb3JkUHJvcGVy
dHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5KSB7CisgIHN0ZDo6c3RyaW5nIHht
bF9lbGVtZW50OworICBUZXN0UmVzdWx0KiB0ZXN0X3Jlc3VsdDsgIC8vIFRlc3RSZXN1bHQgYXBw
cm9wcmlhdGUgZm9yIHByb3BlcnR5IHJlY29yZGluZy4KKworICBpZiAoY3VycmVudF90ZXN0X2lu
Zm9fICE9IE5VTEwpIHsKKyAgICB4bWxfZWxlbWVudCA9ICJ0ZXN0Y2FzZSI7CisgICAgdGVzdF9y
ZXN1bHQgPSAmKGN1cnJlbnRfdGVzdF9pbmZvXy0+cmVzdWx0Xyk7CisgIH0gZWxzZSBpZiAoY3Vy
cmVudF90ZXN0X2Nhc2VfICE9IE5VTEwpIHsKKyAgICB4bWxfZWxlbWVudCA9ICJ0ZXN0c3VpdGUi
OworICAgIHRlc3RfcmVzdWx0ID0gJihjdXJyZW50X3Rlc3RfY2FzZV8tPmFkX2hvY190ZXN0X3Jl
c3VsdF8pOworICB9IGVsc2UgeworICAgIHhtbF9lbGVtZW50ID0gInRlc3RzdWl0ZXMiOworICAg
IHRlc3RfcmVzdWx0ID0gJmFkX2hvY190ZXN0X3Jlc3VsdF87CisgIH0KKyAgdGVzdF9yZXN1bHQt
PlJlY29yZFByb3BlcnR5KHhtbF9lbGVtZW50LCB0ZXN0X3Byb3BlcnR5KTsKK30KKwogI2lmIEdU
RVNUX0hBU19ERUFUSF9URVNUCiAvLyBEaXNhYmxlcyBldmVudCBmb3J3YXJkaW5nIGlmIHRoZSBj
b250cm9sIGlzIGN1cnJlbnRseSBpbiBhIGRlYXRoIHRlc3QKIC8vIHN1YnByb2Nlc3MuIE11c3Qg
bm90IGJlIGNhbGxlZCBiZWZvcmUgSW5pdEdvb2dsZVRlc3QuCkBAIC0zODExLDE3ICs0OTIzLDM3
IEBAIHZvaWQgVW5pdFRlc3RJbXBsOjpTdXBwcmVzc1Rlc3RFdmVudHNJZkluU3VicHJvY2Vzcygp
IHsKIC8vIEluaXRpYWxpemVzIGV2ZW50IGxpc3RlbmVycyBwZXJmb3JtaW5nIFhNTCBvdXRwdXQg
YXMgc3BlY2lmaWVkIGJ5CiAvLyBVbml0VGVzdE9wdGlvbnMuIE11c3Qgbm90IGJlIGNhbGxlZCBi
ZWZvcmUgSW5pdEdvb2dsZVRlc3QuCiB2b2lkIFVuaXRUZXN0SW1wbDo6Q29uZmlndXJlWG1sT3V0
cHV0KCkgewotICBjb25zdCBTdHJpbmcmIG91dHB1dF9mb3JtYXQgPSBVbml0VGVzdE9wdGlvbnM6
OkdldE91dHB1dEZvcm1hdCgpOworICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2Zvcm1hdCA9
IFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCk7CiAgIGlmIChvdXRwdXRfZm9ybWF0
ID09ICJ4bWwiKSB7CiAgICAgbGlzdGVuZXJzKCktPlNldERlZmF1bHRYbWxHZW5lcmF0b3IobmV3
IFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcigKICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRB
YnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0cigpKSk7CisgIH0gZWxzZSBpZiAob3V0cHV0
X2Zvcm1hdCA9PSAianNvbiIpIHsKKyAgICBsaXN0ZW5lcnMoKS0+U2V0RGVmYXVsdFhtbEdlbmVy
YXRvcihuZXcgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcigKKyAgICAgICAgVW5pdFRlc3RPcHRp
b25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0cigpKSk7CiAgIH0gZWxzZSBp
ZiAob3V0cHV0X2Zvcm1hdCAhPSAiIikgewotICAgIHByaW50ZigiV0FSTklORzogdW5yZWNvZ25p
emVkIG91dHB1dCBmb3JtYXQgXCIlc1wiIGlnbm9yZWQuXG4iLAotICAgICAgICAgICBvdXRwdXRf
Zm9ybWF0LmNfc3RyKCkpOwotICAgIGZmbHVzaChzdGRvdXQpOworICAgIEdURVNUX0xPR18oV0FS
TklORykgPDwgIldBUk5JTkc6IHVucmVjb2duaXplZCBvdXRwdXQgZm9ybWF0IFwiIgorICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgb3V0cHV0X2Zvcm1hdCA8PCAiXCIgaWdub3JlZC4iOwogICB9
CiB9CiAKKyNpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisvLyBJbml0aWFsaXplcyBldmVu
dCBsaXN0ZW5lcnMgZm9yIHN0cmVhbWluZyB0ZXN0IHJlc3VsdHMgaW4gc3RyaW5nIGZvcm0uCisv
LyBNdXN0IG5vdCBiZSBjYWxsZWQgYmVmb3JlIEluaXRHb29nbGVUZXN0Lgordm9pZCBVbml0VGVz
dEltcGw6OkNvbmZpZ3VyZVN0cmVhbWluZ091dHB1dCgpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcm
IHRhcmdldCA9IEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90byk7CisgIGlmICghdGFyZ2V0LmVt
cHR5KCkpIHsKKyAgICBjb25zdCBzaXplX3QgcG9zID0gdGFyZ2V0LmZpbmQoJzonKTsKKyAgICBp
ZiAocG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7CisgICAgICBsaXN0ZW5lcnMoKS0+QXBwZW5k
KG5ldyBTdHJlYW1pbmdMaXN0ZW5lcih0YXJnZXQuc3Vic3RyKDAsIHBvcyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3Vic3RyKHBvcysx
KSkpOworICAgIH0gZWxzZSB7CisgICAgICBHVEVTVF9MT0dfKFdBUk5JTkcpIDw8ICJ1bnJlY29n
bml6ZWQgc3RyZWFtaW5nIHRhcmdldCBcIiIgPDwgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICJcIiBpZ25vcmVkLiI7CisgICAgfQorICB9Cit9CisjZW5kaWYgIC8vIEdURVNU
X0NBTl9TVFJFQU1fUkVTVUxUU18KKwogLy8gUGVyZm9ybXMgaW5pdGlhbGl6YXRpb24gZGVwZW5k
ZW50IHVwb24gZmxhZyB2YWx1ZXMgb2J0YWluZWQgaW4KIC8vIFBhcnNlR29vZ2xlVGVzdEZsYWdz
T25seS4gIElzIGNhbGxlZCBmcm9tIEluaXRHb29nbGVUZXN0IGFmdGVyIHRoZSBjYWxsIHRvCiAv
LyBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkuICBJbiBjYXNlIGEgdXNlciBuZWdsZWN0cyB0byBj
YWxsIEluaXRHb29nbGVUZXN0CkBAIC0zODMyLDYgKzQ5NjQsMTEgQEAgdm9pZCBVbml0VGVzdElt
cGw6OlBvc3RGbGFnUGFyc2luZ0luaXQoKSB7CiAgIGlmICghcG9zdF9mbGFnX3BhcnNlX2luaXRf
cGVyZm9ybWVkXykgewogICAgIHBvc3RfZmxhZ19wYXJzZV9pbml0X3BlcmZvcm1lZF8gPSB0cnVl
OwogCisjaWYgZGVmaW5lZChHVEVTVF9DVVNUT01fVEVTVF9FVkVOVF9MSVNURU5FUl8pCisgICAg
Ly8gUmVnaXN0ZXIgdG8gc2VuZCBub3RpZmljYXRpb25zIGFib3V0IGtleSBwcm9jZXNzIHN0YXRl
IGNoYW5nZXMuCisgICAgbGlzdGVuZXJzKCktPkFwcGVuZChuZXcgR1RFU1RfQ1VTVE9NX1RFU1Rf
RVZFTlRfTElTVEVORVJfKCkpOworI2VuZGlmICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9URVNU
X0VWRU5UX0xJU1RFTkVSXykKKwogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCiAgICAgSW5pdERl
YXRoVGVzdFN1YnByb2Nlc3NDb250cm9sSW5mbygpOwogICAgIFN1cHByZXNzVGVzdEV2ZW50c0lm
SW5TdWJwcm9jZXNzKCk7CkBAIC0zODQ1LDYgKzQ5ODIsMTggQEAgdm9pZCBVbml0VGVzdEltcGw6
OlBvc3RGbGFnUGFyc2luZ0luaXQoKSB7CiAgICAgLy8gQ29uZmlndXJlcyBsaXN0ZW5lcnMgZm9y
IFhNTCBvdXRwdXQuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgZm9yIHVzZXJzCiAgICAgLy8gdG8g
c2h1dCBkb3duIHRoZSBkZWZhdWx0IFhNTCBvdXRwdXQgYmVmb3JlIGludm9raW5nIFJVTl9BTExf
VEVTVFMuCiAgICAgQ29uZmlndXJlWG1sT3V0cHV0KCk7CisKKyNpZiBHVEVTVF9DQU5fU1RSRUFN
X1JFU1VMVFNfCisgICAgLy8gQ29uZmlndXJlcyBsaXN0ZW5lcnMgZm9yIHN0cmVhbWluZyB0ZXN0
IHJlc3VsdHMgdG8gdGhlIHNwZWNpZmllZCBzZXJ2ZXIuCisgICAgQ29uZmlndXJlU3RyZWFtaW5n
T3V0cHV0KCk7CisjZW5kaWYgIC8vIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKworI2lmIEdU
RVNUX0hBU19BQlNMCisgICAgaWYgKEdURVNUX0ZMQUcoaW5zdGFsbF9mYWlsdXJlX3NpZ25hbF9o
YW5kbGVyKSkgeworICAgICAgYWJzbDo6RmFpbHVyZVNpZ25hbEhhbmRsZXJPcHRpb25zIG9wdGlv
bnM7CisgICAgICBhYnNsOjpJbnN0YWxsRmFpbHVyZVNpZ25hbEhhbmRsZXIob3B0aW9ucyk7Cisg
ICAgfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfQUJTTAogICB9CiB9CiAKQEAgLTM4NTksNyArNTAw
OCw3IEBAIHZvaWQgVW5pdFRlc3RJbXBsOjpQb3N0RmxhZ1BhcnNpbmdJbml0KCkgewogY2xhc3Mg
VGVzdENhc2VOYW1lSXMgewogIHB1YmxpYzoKICAgLy8gQ29uc3RydWN0b3IuCi0gIGV4cGxpY2l0
IFRlc3RDYXNlTmFtZUlzKGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgZXhwbGljaXQgVGVzdENhc2VO
YW1lSXMoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpCiAgICAgICA6IG5hbWVfKG5hbWUpIHt9CiAK
ICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgbmFtZSBvZiB0ZXN0X2Nhc2UgbWF0Y2hlcyBuYW1l
Xy4KQEAgLTM4NjgsNyArNTAxNyw3IEBAIGNsYXNzIFRlc3RDYXNlTmFtZUlzIHsKICAgfQogCiAg
cHJpdmF0ZToKLSAgU3RyaW5nIG5hbWVfOworICBzdGQ6OnN0cmluZyBuYW1lXzsKIH07CiAKIC8v
IEZpbmRzIGFuZCByZXR1cm5zIGEgVGVzdENhc2Ugd2l0aCB0aGUgZ2l2ZW4gbmFtZS4gIElmIG9u
ZSBkb2Vzbid0CkBAIC0zODc5LDI2ICs1MDI4LDI4IEBAIGNsYXNzIFRlc3RDYXNlTmFtZUlzIHsK
IC8vIEFyZ3VtZW50czoKIC8vCiAvLyAgIHRlc3RfY2FzZV9uYW1lOiBuYW1lIG9mIHRoZSB0ZXN0
IGNhc2UKKy8vICAgdHlwZV9wYXJhbTogICAgIHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UncyB0
eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorLy8gICAgICAgICAgICAgICAgICAgdGhpcyBpcyBu
b3QgYSB0eXBlZCBvciBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UuCiAvLyAgIHNldF91
cF90YzogICAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIHRlc3Qg
Y2FzZQogLy8gICB0ZWFyX2Rvd25fdGM6ICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCB0
ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UKIFRlc3RDYXNlKiBVbml0VGVzdEltcGw6OkdldFRlc3RD
YXNlKGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogY29tbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXN0OjpTZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0OjpUZWFyRG93blRlc3RDYXNlRnVu
YyB0ZWFyX2Rvd25fdGMpIHsKICAgLy8gQ2FuIHdlIGZpbmQgYSBUZXN0Q2FzZSB3aXRoIHRoZSBn
aXZlbiBuYW1lPwotICBjb25zdCBzdGQ6OnZlY3RvcjxUZXN0Q2FzZSo+Ojpjb25zdF9pdGVyYXRv
ciB0ZXN0X2Nhc2UgPQotICAgICAgc3RkOjpmaW5kX2lmKHRlc3RfY2FzZXNfLmJlZ2luKCksIHRl
c3RfY2FzZXNfLmVuZCgpLAorICBjb25zdCBzdGQ6OnZlY3RvcjxUZXN0Q2FzZSo+Ojpjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yIHRlc3RfY2FzZSA9CisgICAgICBzdGQ6OmZpbmRfaWYodGVzdF9jYXNl
c18ucmJlZ2luKCksIHRlc3RfY2FzZXNfLnJlbmQoKSwKICAgICAgICAgICAgICAgICAgICBUZXN0
Q2FzZU5hbWVJcyh0ZXN0X2Nhc2VfbmFtZSkpOwogCi0gIGlmICh0ZXN0X2Nhc2UgIT0gdGVzdF9j
YXNlc18uZW5kKCkpCisgIGlmICh0ZXN0X2Nhc2UgIT0gdGVzdF9jYXNlc18ucmVuZCgpKQogICAg
IHJldHVybiAqdGVzdF9jYXNlOwogCiAgIC8vIE5vLiAgTGV0J3MgY3JlYXRlIG9uZS4KICAgVGVz
dENhc2UqIGNvbnN0IG5ld190ZXN0X2Nhc2UgPQotICAgICAgbmV3IFRlc3RDYXNlKHRlc3RfY2Fz
ZV9uYW1lLCBjb21tZW50LCBzZXRfdXBfdGMsIHRlYXJfZG93bl90Yyk7CisgICAgICBuZXcgVGVz
dENhc2UodGVzdF9jYXNlX25hbWUsIHR5cGVfcGFyYW0sIHNldF91cF90YywgdGVhcl9kb3duX3Rj
KTsKIAogICAvLyBJcyB0aGlzIGEgZGVhdGggdGVzdCBjYXNlPwotICBpZiAoaW50ZXJuYWw6OlVu
aXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcihTdHJpbmcodGVzdF9jYXNlX25hbWUpLAorICBp
ZiAoaW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcih0ZXN0X2Nhc2VfbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0RlYXRo
VGVzdENhc2VGaWx0ZXIpKSB7CiAgICAgLy8gWWVzLiAgSW5zZXJ0cyB0aGUgdGVzdCBjYXNlIGFm
dGVyIHRoZSBsYXN0IGRlYXRoIHRlc3QgY2FzZQogICAgIC8vIGRlZmluZWQgc28gZmFyLiAgVGhp
cyBvbmx5IHdvcmtzIHdoZW4gdGhlIHRlc3QgY2FzZXMgaGF2ZW4ndApAQCAtMzkyMiwyNyArNTA3
MywyMSBAQCBzdGF0aWMgdm9pZCBTZXRVcEVudmlyb25tZW50KEVudmlyb25tZW50KiBlbnYpIHsg
ZW52LT5TZXRVcCgpOyB9CiBzdGF0aWMgdm9pZCBUZWFyRG93bkVudmlyb25tZW50KEVudmlyb25t
ZW50KiBlbnYpIHsgZW52LT5UZWFyRG93bigpOyB9CiAKIC8vIFJ1bnMgYWxsIHRlc3RzIGluIHRo
aXMgVW5pdFRlc3Qgb2JqZWN0LCBwcmludHMgdGhlIHJlc3VsdCwgYW5kCi0vLyByZXR1cm5zIDAg
aWYgYWxsIHRlc3RzIGFyZSBzdWNjZXNzZnVsLCBvciAxIG90aGVyd2lzZS4gIElmIGFueQotLy8g
ZXhjZXB0aW9uIGlzIHRocm93biBkdXJpbmcgYSB0ZXN0IG9uIFdpbmRvd3MsIHRoaXMgdGVzdCBp
cwotLy8gY29uc2lkZXJlZCB0byBiZSBmYWlsZWQsIGJ1dCB0aGUgcmVzdCBvZiB0aGUgdGVzdHMg
d2lsbCBzdGlsbCBiZQotLy8gcnVuLiAgKFdlIGRpc2FibGUgZXhjZXB0aW9ucyBvbiBMaW51eCBh
bmQgTWFjIE9TIFgsIHNvIHRoZSBpc3N1ZQotLy8gZG9lc24ndCBhcHBseSB0aGVyZS4pCisvLyBy
ZXR1cm5zIHRydWUgaWYgYWxsIHRlc3RzIGFyZSBzdWNjZXNzZnVsLiAgSWYgYW55IGV4Y2VwdGlv
biBpcworLy8gdGhyb3duIGR1cmluZyBhIHRlc3QsIHRoZSB0ZXN0IGlzIGNvbnNpZGVyZWQgdG8g
YmUgZmFpbGVkLCBidXQgdGhlCisvLyByZXN0IG9mIHRoZSB0ZXN0cyB3aWxsIHN0aWxsIGJlIHJ1
bi4KKy8vCiAvLyBXaGVuIHBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQsIGl0IGV4cGFu
ZHMgYW5kIHJlZ2lzdGVycwogLy8gcGFyYW1ldGVyaXplZCB0ZXN0cyBmaXJzdCBpbiBSZWdpc3Rl
clBhcmFtZXRlcml6ZWRUZXN0cygpLgogLy8gQWxsIG90aGVyIGZ1bmN0aW9ucyBjYWxsZWQgZnJv
bSBSdW5BbGxUZXN0cygpIG1heSBzYWZlbHkgYXNzdW1lIHRoYXQKIC8vIHBhcmFtZXRlcml6ZWQg
dGVzdHMgYXJlIHJlYWR5IHRvIGJlIGNvdW50ZWQgYW5kIHJ1bi4KLWludCBVbml0VGVzdEltcGw6
OlJ1bkFsbFRlc3RzKCkgewotICAvLyBNYWtlcyBzdXJlIEluaXRHb29nbGVUZXN0KCkgd2FzIGNh
bGxlZC4KLSAgaWYgKCFHVGVzdElzSW5pdGlhbGl6ZWQoKSkgewotICAgIHByaW50ZigiJXMiLAot
ICAgICAgICAgICAiXG5UaGlzIHRlc3QgcHJvZ3JhbSBkaWQgTk9UIGNhbGwgOjp0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdCAiCi0gICAgICAgICAgICJiZWZvcmUgY2FsbGluZyBSVU5fQUxMX1RFU1RT
KCkuICBQbGVhc2UgZml4IGl0LlxuIik7Ci0gICAgcmV0dXJuIDE7Ci0gIH0KK2Jvb2wgVW5pdFRl
c3RJbXBsOjpSdW5BbGxUZXN0cygpIHsKKyAgLy8gVHJ1ZSBpZmYgR29vZ2xlIFRlc3QgaXMgaW5p
dGlhbGl6ZWQgYmVmb3JlIFJVTl9BTExfVEVTVFMoKSBpcyBjYWxsZWQuCisgIGNvbnN0IGJvb2wg
Z3Rlc3RfaXNfaW5pdGlhbGl6ZWRfYmVmb3JlX3J1bl9hbGxfdGVzdHMgPSBHVGVzdElzSW5pdGlh
bGl6ZWQoKTsKIAogICAvLyBEbyBub3QgcnVuIGFueSB0ZXN0IGlmIHRoZSAtLWhlbHAgZmxhZyB3
YXMgc3BlY2lmaWVkLgogICBpZiAoZ19oZWxwX2ZsYWcpCi0gICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIHRydWU7CiAKICAgLy8gUmVwZWF0cyB0aGUgY2FsbCB0byB0aGUgcG9zdC1mbGFnIHBhcnNp
bmcgaW5pdGlhbGl6YXRpb24gaW4gY2FzZSB0aGUKICAgLy8gdXNlciBkaWRuJ3QgY2FsbCBJbml0
R29vZ2xlVGVzdC4KQEAgLTM5NTksNiArNTEwNCwxMSBAQCBpbnQgVW5pdFRlc3RJbXBsOjpSdW5B
bGxUZXN0cygpIHsKIAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCiAgIGluX3N1YnByb2Nlc3Nf
Zm9yX2RlYXRoX3Rlc3QgPSAoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfZmxhZ18uZ2V0KCkgIT0g
TlVMTCk7CisjIGlmIGRlZmluZWQoR1RFU1RfRVhUUkFfREVBVEhfVEVTVF9DSElMRF9TRVRVUF8p
CisgIGlmIChpbl9zdWJwcm9jZXNzX2Zvcl9kZWF0aF90ZXN0KSB7CisgICAgR1RFU1RfRVhUUkFf
REVBVEhfVEVTVF9DSElMRF9TRVRVUF8oKTsKKyAgfQorIyBlbmRpZiAgLy8gZGVmaW5lZChHVEVT
VF9FWFRSQV9ERUFUSF9URVNUX0NISUxEX1NFVFVQXykKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0RF
QVRIX1RFU1QKIAogICBjb25zdCBib29sIHNob3VsZF9zaGFyZCA9IFNob3VsZFNoYXJkKGtUZXN0
VG90YWxTaGFyZHMsIGtUZXN0U2hhcmRJbmRleCwKQEAgLTM5NzQsNyArNTEyNCw3IEBAIGludCBV
bml0VGVzdEltcGw6OlJ1bkFsbFRlc3RzKCkgewogICBpZiAoR1RFU1RfRkxBRyhsaXN0X3Rlc3Rz
KSkgewogICAgIC8vIFRoaXMgbXVzdCBiZSBjYWxsZWQgKmFmdGVyKiBGaWx0ZXJUZXN0cygpIGhh
cyBiZWVuIGNhbGxlZC4KICAgICBMaXN0VGVzdHNNYXRjaGluZ0ZpbHRlcigpOwotICAgIHJldHVy
biAwOworICAgIHJldHVybiB0cnVlOwogICB9CiAKICAgcmFuZG9tX3NlZWRfID0gR1RFU1RfRkxB
RyhzaHVmZmxlKSA/CkBAIC0zOTg1LDYgKzUxMzUsNyBAQCBpbnQgVW5pdFRlc3RJbXBsOjpSdW5B
bGxUZXN0cygpIHsKIAogICBUZXN0RXZlbnRMaXN0ZW5lciogcmVwZWF0ZXIgPSBsaXN0ZW5lcnMo
KS0+cmVwZWF0ZXIoKTsKIAorICBzdGFydF90aW1lc3RhbXBfID0gR2V0VGltZUluTWlsbGlzKCk7
CiAgIHJlcGVhdGVyLT5PblRlc3RQcm9ncmFtU3RhcnQoKnBhcmVudF8pOwogCiAgIC8vIEhvdyBt
YW55IHRpbWVzIHRvIHJlcGVhdCB0aGUgdGVzdHM/ICBXZSBkb24ndCB3YW50IHRvIHJlcGVhdCB0
aGVtCkBAIC0zOTkzLDcgKzUxNDQsOSBAQCBpbnQgVW5pdFRlc3RJbXBsOjpSdW5BbGxUZXN0cygp
IHsKICAgLy8gUmVwZWF0cyBmb3JldmVyIGlmIHRoZSByZXBlYXQgY291bnQgaXMgbmVnYXRpdmUu
CiAgIGNvbnN0IGJvb2wgZm9yZXZlciA9IHJlcGVhdCA8IDA7CiAgIGZvciAoaW50IGkgPSAwOyBm
b3JldmVyIHx8IGkgIT0gcmVwZWF0OyBpKyspIHsKLSAgICBDbGVhclJlc3VsdCgpOworICAgIC8v
IFdlIHdhbnQgdG8gcHJlc2VydmUgZmFpbHVyZXMgZ2VuZXJhdGVkIGJ5IGFkLWhvYyB0ZXN0Cisg
ICAgLy8gYXNzZXJ0aW9ucyBleGVjdXRlZCBiZWZvcmUgUlVOX0FMTF9URVNUUygpLgorICAgIENs
ZWFyTm9uQWRIb2NUZXN0UmVzdWx0KCk7CiAKICAgICBjb25zdCBUaW1lSW5NaWxsaXMgc3RhcnQg
PSBHZXRUaW1lSW5NaWxsaXMoKTsKIApAQCAtNDA1OCw4ICs1MjExLDIxIEBAIGludCBVbml0VGVz
dEltcGw6OlJ1bkFsbFRlc3RzKCkgewogCiAgIHJlcGVhdGVyLT5PblRlc3RQcm9ncmFtRW5kKCpw
YXJlbnRfKTsKIAotICAvLyBSZXR1cm5zIDAgaWYgYWxsIHRlc3RzIHBhc3NlZCwgb3IgMSBvdGhl
ciB3aXNlLgotICByZXR1cm4gZmFpbGVkID8gMSA6IDA7CisgIGlmICghZ3Rlc3RfaXNfaW5pdGlh
bGl6ZWRfYmVmb3JlX3J1bl9hbGxfdGVzdHMpIHsKKyAgICBDb2xvcmVkUHJpbnRmKAorICAgICAg
ICBDT0xPUl9SRUQsCisgICAgICAgICJcbklNUE9SVEFOVCBOT1RJQ0UgLSBETyBOT1QgSUdOT1JF
OlxuIgorICAgICAgICAiVGhpcyB0ZXN0IHByb2dyYW0gZGlkIE5PVCBjYWxsICIgR1RFU1RfSU5J
VF9HT09HTEVfVEVTVF9OQU1FXworICAgICAgICAiKCkgYmVmb3JlIGNhbGxpbmcgUlVOX0FMTF9U
RVNUUygpLiBUaGlzIGlzIElOVkFMSUQuIFNvb24gIiBHVEVTVF9OQU1FXworICAgICAgICAiIHdp
bGwgc3RhcnQgdG8gZW5mb3JjZSB0aGUgdmFsaWQgdXNhZ2UuICIKKyAgICAgICAgIlBsZWFzZSBm
aXggaXQgQVNBUCwgb3IgSVQgV0lMTCBTVEFSVCBUTyBGQUlMLlxuIik7ICAvLyBOT0xJTlQKKyNp
ZiBHVEVTVF9GT1JfR09PR0xFXworICAgIENvbG9yZWRQcmludGYoQ09MT1JfUkVELAorICAgICAg
ICAgICAgICAgICAgIkZvciBtb3JlIGRldGFpbHMsIHNlZSBodHRwOi8vd2lraS9NYWluL1ZhbGlk
R1VuaXRNYWluLlxuIik7CisjZW5kaWYgIC8vIEdURVNUX0ZPUl9HT09HTEVfCisgIH0KKworICBy
ZXR1cm4gIWZhaWxlZDsKIH0KIAogLy8gUmVhZHMgdGhlIEdURVNUX1NIQVJEX1NUQVRVU19GSUxF
IGVudmlyb25tZW50IHZhcmlhYmxlLCBhbmQgY3JlYXRlcyB0aGUgZmlsZQpAQCAtNDEzMyw3ICs1
Mjk5LDcgQEAgYm9vbCBTaG91bGRTaGFyZChjb25zdCBjaGFyKiB0b3RhbF9zaGFyZHNfZW52LAog
Ly8gUGFyc2VzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB2YXIgYXMgYW4gSW50MzIuIElmIGl0
IGlzIHVuc2V0LAogLy8gcmV0dXJucyBkZWZhdWx0X3ZhbC4gSWYgaXQgaXMgbm90IGFuIEludDMy
LCBwcmludHMgYW4gZXJyb3IKIC8vIGFuZCBhYm9ydHMuCi1JbnQzMiBJbnQzMkZyb21FbnZPckRp
ZShjb25zdCBjaGFyKiBjb25zdCB2YXIsIEludDMyIGRlZmF1bHRfdmFsKSB7CitJbnQzMiBJbnQz
MkZyb21FbnZPckRpZShjb25zdCBjaGFyKiB2YXIsIEludDMyIGRlZmF1bHRfdmFsKSB7CiAgIGNv
bnN0IGNoYXIqIHN0cl92YWwgPSBwb3NpeDo6R2V0RW52KHZhcik7CiAgIGlmIChzdHJfdmFsID09
IE5VTEwpIHsKICAgICByZXR1cm4gZGVmYXVsdF92YWw7CkBAIC00MTYwLDggKzUzMjYsOCBAQCBi
b29sIFNob3VsZFJ1blRlc3RPblNoYXJkKGludCB0b3RhbF9zaGFyZHMsIGludCBzaGFyZF9pbmRl
eCwgaW50IHRlc3RfaWQpIHsKIC8vIGVhY2ggVGVzdENhc2UgYW5kIFRlc3RJbmZvIG9iamVjdC4K
IC8vIElmIHNoYXJkX3Rlc3RzID09IHRydWUsIGZ1cnRoZXIgZmlsdGVycyB0ZXN0cyBiYXNlZCBv
biBzaGFyZGluZwogLy8gdmFyaWFibGVzIGluIHRoZSBlbnZpcm9ubWVudCAtIHNlZQotLy8gaHR0
cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvd2lraS9Hb29nbGVUZXN0QWR2YW5jZWRH
dWlkZS4KLS8vIFJldHVybnMgdGhlIG51bWJlciBvZiB0ZXN0cyB0aGF0IHNob3VsZCBydW4uCisv
LyBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvYmxvYi9tYXN0ZXIvZ29vZ2xl
dGVzdC9kb2NzL2FkdmFuY2VkLm1kCisvLyAuIFJldHVybnMgdGhlIG51bWJlciBvZiB0ZXN0cyB0
aGF0IHNob3VsZCBydW4uCiBpbnQgVW5pdFRlc3RJbXBsOjpGaWx0ZXJUZXN0cyhSZWFjdGlvblRv
U2hhcmRpbmcgc2hhcmRfdGVzdHMpIHsKICAgY29uc3QgSW50MzIgdG90YWxfc2hhcmRzID0gc2hh
cmRfdGVzdHMgPT0gSE9OT1JfU0hBUkRJTkdfUFJPVE9DT0wgPwogICAgICAgSW50MzJGcm9tRW52
T3JEaWUoa1Rlc3RUb3RhbFNoYXJkcywgLTEpIDogLTE7CkBAIC00MTc2LDEyICs1MzQyLDEyIEBA
IGludCBVbml0VGVzdEltcGw6OkZpbHRlclRlc3RzKFJlYWN0aW9uVG9TaGFyZGluZyBzaGFyZF90
ZXN0cykgewogICBpbnQgbnVtX3NlbGVjdGVkX3Rlc3RzID0gMDsKICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB0ZXN0X2Nhc2VzXy5zaXplKCk7IGkrKykgewogICAgIFRlc3RDYXNlKiBjb25zdCB0
ZXN0X2Nhc2UgPSB0ZXN0X2Nhc2VzX1tpXTsKLSAgICBjb25zdCBTdHJpbmcgJnRlc3RfY2FzZV9u
YW1lID0gdGVzdF9jYXNlLT5uYW1lKCk7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnRlc3RfY2Fz
ZV9uYW1lID0gdGVzdF9jYXNlLT5uYW1lKCk7CiAgICAgdGVzdF9jYXNlLT5zZXRfc2hvdWxkX3J1
bihmYWxzZSk7CiAKICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHRlc3RfY2FzZS0+dGVzdF9p
bmZvX2xpc3QoKS5zaXplKCk7IGorKykgewogICAgICAgVGVzdEluZm8qIGNvbnN0IHRlc3RfaW5m
byA9IHRlc3RfY2FzZS0+dGVzdF9pbmZvX2xpc3QoKVtqXTsKLSAgICAgIGNvbnN0IFN0cmluZyB0
ZXN0X25hbWUodGVzdF9pbmZvLT5uYW1lKCkpOworICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVz
dF9uYW1lKHRlc3RfaW5mby0+bmFtZSgpKTsKICAgICAgIC8vIEEgdGVzdCBpcyBkaXNhYmxlZCBp
ZiB0ZXN0IGNhc2UgbmFtZSBvciB0ZXN0IG5hbWUgbWF0Y2hlcwogICAgICAgLy8ga0Rpc2FibGVU
ZXN0RmlsdGVyLgogICAgICAgY29uc3QgYm9vbCBpc19kaXNhYmxlZCA9CkBAIC00MTg5LDM0ICs1
MzU1LDYwIEBAIGludCBVbml0VGVzdEltcGw6OkZpbHRlclRlc3RzKFJlYWN0aW9uVG9TaGFyZGlu
ZyBzaGFyZF90ZXN0cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga0Rpc2FibGVUZXN0RmlsdGVyKSB8fAogICAgICAgICAgIGludGVybmFsOjpV
bml0VGVzdE9wdGlvbnM6Ok1hdGNoZXNGaWx0ZXIodGVzdF9uYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0Rpc2FibGVUZXN0RmlsdGVyKTsK
LSAgICAgIHRlc3RfaW5mby0+aW1wbCgpLT5zZXRfaXNfZGlzYWJsZWQoaXNfZGlzYWJsZWQpOwor
ICAgICAgdGVzdF9pbmZvLT5pc19kaXNhYmxlZF8gPSBpc19kaXNhYmxlZDsKIAogICAgICAgY29u
c3QgYm9vbCBtYXRjaGVzX2ZpbHRlciA9CiAgICAgICAgICAgaW50ZXJuYWw6OlVuaXRUZXN0T3B0
aW9uczo6RmlsdGVyTWF0Y2hlc1Rlc3QodGVzdF9jYXNlX25hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9uYW1lKTsKLSAgICAg
IHRlc3RfaW5mby0+aW1wbCgpLT5zZXRfbWF0Y2hlc19maWx0ZXIobWF0Y2hlc19maWx0ZXIpOwor
ICAgICAgdGVzdF9pbmZvLT5tYXRjaGVzX2ZpbHRlcl8gPSBtYXRjaGVzX2ZpbHRlcjsKIAogICAg
ICAgY29uc3QgYm9vbCBpc19ydW5uYWJsZSA9CiAgICAgICAgICAgKEdURVNUX0ZMQUcoYWxzb19y
dW5fZGlzYWJsZWRfdGVzdHMpIHx8ICFpc19kaXNhYmxlZCkgJiYKICAgICAgICAgICBtYXRjaGVz
X2ZpbHRlcjsKIAotICAgICAgY29uc3QgYm9vbCBpc19zZWxlY3RlZCA9IGlzX3J1bm5hYmxlICYm
Ci0gICAgICAgICAgKHNoYXJkX3Rlc3RzID09IElHTk9SRV9TSEFSRElOR19QUk9UT0NPTCB8fAot
ICAgICAgICAgICBTaG91bGRSdW5UZXN0T25TaGFyZCh0b3RhbF9zaGFyZHMsIHNoYXJkX2luZGV4
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fcnVubmFibGVfdGVzdHMpKTsK
KyAgICAgIGNvbnN0IGJvb2wgaXNfaW5fYW5vdGhlcl9zaGFyZCA9CisgICAgICAgICAgc2hhcmRf
dGVzdHMgIT0gSUdOT1JFX1NIQVJESU5HX1BST1RPQ09MICYmCisgICAgICAgICAgIVNob3VsZFJ1
blRlc3RPblNoYXJkKHRvdGFsX3NoYXJkcywgc2hhcmRfaW5kZXgsIG51bV9ydW5uYWJsZV90ZXN0
cyk7CisgICAgICB0ZXN0X2luZm8tPmlzX2luX2Fub3RoZXJfc2hhcmRfID0gaXNfaW5fYW5vdGhl
cl9zaGFyZDsKKyAgICAgIGNvbnN0IGJvb2wgaXNfc2VsZWN0ZWQgPSBpc19ydW5uYWJsZSAmJiAh
aXNfaW5fYW5vdGhlcl9zaGFyZDsKIAogICAgICAgbnVtX3J1bm5hYmxlX3Rlc3RzICs9IGlzX3J1
bm5hYmxlOwogICAgICAgbnVtX3NlbGVjdGVkX3Rlc3RzICs9IGlzX3NlbGVjdGVkOwogCi0gICAg
ICB0ZXN0X2luZm8tPmltcGwoKS0+c2V0X3Nob3VsZF9ydW4oaXNfc2VsZWN0ZWQpOworICAgICAg
dGVzdF9pbmZvLT5zaG91bGRfcnVuXyA9IGlzX3NlbGVjdGVkOwogICAgICAgdGVzdF9jYXNlLT5z
ZXRfc2hvdWxkX3J1bih0ZXN0X2Nhc2UtPnNob3VsZF9ydW4oKSB8fCBpc19zZWxlY3RlZCk7CiAg
ICAgfQogICB9CiAgIHJldHVybiBudW1fc2VsZWN0ZWRfdGVzdHM7CiB9CiAKKy8vIFByaW50cyB0
aGUgZ2l2ZW4gQy1zdHJpbmcgb24gYSBzaW5nbGUgbGluZSBieSByZXBsYWNpbmcgYWxsICdcbicK
Ky8vIGNoYXJhY3RlcnMgd2l0aCBzdHJpbmcgIlxcbiIuICBJZiB0aGUgb3V0cHV0IHRha2VzIG1v
cmUgdGhhbgorLy8gbWF4X2xlbmd0aCBjaGFyYWN0ZXJzLCBvbmx5IHByaW50cyB0aGUgZmlyc3Qg
bWF4X2xlbmd0aCBjaGFyYWN0ZXJzCisvLyBhbmQgIi4uLiIuCitzdGF0aWMgdm9pZCBQcmludE9u
T25lTGluZShjb25zdCBjaGFyKiBzdHIsIGludCBtYXhfbGVuZ3RoKSB7CisgIGlmIChzdHIgIT0g
TlVMTCkgeworICAgIGZvciAoaW50IGkgPSAwOyAqc3RyICE9ICdcMCc7ICsrc3RyKSB7CisgICAg
ICBpZiAoaSA+PSBtYXhfbGVuZ3RoKSB7CisgICAgICAgIHByaW50ZigiLi4uIik7CisgICAgICAg
IGJyZWFrOworICAgICAgfQorICAgICAgaWYgKCpzdHIgPT0gJ1xuJykgeworICAgICAgICBwcmlu
dGYoIlxcbiIpOworICAgICAgICBpICs9IDI7CisgICAgICB9IGVsc2UgeworICAgICAgICBwcmlu
dGYoIiVjIiwgKnN0cik7CisgICAgICAgICsraTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKwog
Ly8gUHJpbnRzIHRoZSBuYW1lcyBvZiB0aGUgdGVzdHMgbWF0Y2hpbmcgdGhlIHVzZXItc3BlY2lm
aWVkIGZpbHRlciBmbGFnLgogdm9pZCBVbml0VGVzdEltcGw6Okxpc3RUZXN0c01hdGNoaW5nRmls
dGVyKCkgeworICAvLyBQcmludCBhdCBtb3N0IHRoaXMgbWFueSBjaGFyYWN0ZXJzIGZvciBlYWNo
IHR5cGUvdmFsdWUgcGFyYW1ldGVyLgorICBjb25zdCBpbnQga01heFBhcmFtTGVuZ3RoID0gMjUw
OworCiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGVzdF9jYXNlc18uc2l6ZSgpOyBpKyspIHsK
ICAgICBjb25zdCBUZXN0Q2FzZSogY29uc3QgdGVzdF9jYXNlID0gdGVzdF9jYXNlc19baV07CiAg
ICAgYm9vbCBwcmludGVkX3Rlc3RfY2FzZV9uYW1lID0gZmFsc2U7CkBAIC00MjI0LDE2ICs1NDE2
LDQ3IEBAIHZvaWQgVW5pdFRlc3RJbXBsOjpMaXN0VGVzdHNNYXRjaGluZ0ZpbHRlcigpIHsKICAg
ICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHRlc3RfY2FzZS0+dGVzdF9pbmZvX2xpc3QoKS5zaXpl
KCk7IGorKykgewogICAgICAgY29uc3QgVGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CiAgICAg
ICAgICAgdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpW2pdOwotICAgICAgaWYgKHRlc3RfaW5m
by0+bWF0Y2hlc19maWx0ZXIoKSkgeworICAgICAgaWYgKHRlc3RfaW5mby0+bWF0Y2hlc19maWx0
ZXJfKSB7CiAgICAgICAgIGlmICghcHJpbnRlZF90ZXN0X2Nhc2VfbmFtZSkgewogICAgICAgICAg
IHByaW50ZWRfdGVzdF9jYXNlX25hbWUgPSB0cnVlOwotICAgICAgICAgIHByaW50ZigiJXMuXG4i
LCB0ZXN0X2Nhc2UtPm5hbWUoKSk7CisgICAgICAgICAgcHJpbnRmKCIlcy4iLCB0ZXN0X2Nhc2Ut
Pm5hbWUoKSk7CisgICAgICAgICAgaWYgKHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgpICE9IE5VTEwp
IHsKKyAgICAgICAgICAgIHByaW50ZigiICAjICVzID0gIiwga1R5cGVQYXJhbUxhYmVsKTsKKyAg
ICAgICAgICAgIC8vIFdlIHByaW50IHRoZSB0eXBlIHBhcmFtZXRlciBvbiBhIHNpbmdsZSBsaW5l
IHRvIG1ha2UKKyAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgZWFzeSB0byBwYXJzZSBieSBhIHBy
b2dyYW0uCisgICAgICAgICAgICBQcmludE9uT25lTGluZSh0ZXN0X2Nhc2UtPnR5cGVfcGFyYW0o
KSwga01heFBhcmFtTGVuZ3RoKTsKKyAgICAgICAgICB9CisgICAgICAgICAgcHJpbnRmKCJcbiIp
OworICAgICAgICB9CisgICAgICAgIHByaW50ZigiICAlcyIsIHRlc3RfaW5mby0+bmFtZSgpKTsK
KyAgICAgICAgaWYgKHRlc3RfaW5mby0+dmFsdWVfcGFyYW0oKSAhPSBOVUxMKSB7CisgICAgICAg
ICAgcHJpbnRmKCIgICMgJXMgPSAiLCBrVmFsdWVQYXJhbUxhYmVsKTsKKyAgICAgICAgICAvLyBX
ZSBwcmludCB0aGUgdmFsdWUgcGFyYW1ldGVyIG9uIGEgc2luZ2xlIGxpbmUgdG8gbWFrZSB0aGUK
KyAgICAgICAgICAvLyBvdXRwdXQgZWFzeSB0byBwYXJzZSBieSBhIHByb2dyYW0uCisgICAgICAg
ICAgUHJpbnRPbk9uZUxpbmUodGVzdF9pbmZvLT52YWx1ZV9wYXJhbSgpLCBrTWF4UGFyYW1MZW5n
dGgpOwogICAgICAgICB9Ci0gICAgICAgIHByaW50ZigiICAlc1xuIiwgdGVzdF9pbmZvLT5uYW1l
KCkpOworICAgICAgICBwcmludGYoIlxuIik7CiAgICAgICB9CiAgICAgfQogICB9CiAgIGZmbHVz
aChzdGRvdXQpOworICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2Zvcm1hdCA9IFVuaXRUZXN0
T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCk7CisgIGlmIChvdXRwdXRfZm9ybWF0ID09ICJ4bWwi
IHx8IG91dHB1dF9mb3JtYXQgPT0gImpzb24iKSB7CisgICAgRklMRSogZmlsZW91dCA9IE9wZW5G
aWxlRm9yV3JpdGluZygKKyAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhU
b091dHB1dEZpbGUoKS5jX3N0cigpKTsKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07Cisg
ICAgaWYgKG91dHB1dF9mb3JtYXQgPT0gInhtbCIpIHsKKyAgICAgIFhtbFVuaXRUZXN0UmVzdWx0
UHJpbnRlcigKKyAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0
cHV0RmlsZSgpLmNfc3RyKCkpCisgICAgICAgICAgLlByaW50WG1sVGVzdHNMaXN0KCZzdHJlYW0s
IHRlc3RfY2FzZXNfKTsKKyAgICB9IGVsc2UgaWYgKG91dHB1dF9mb3JtYXQgPT0gImpzb24iKSB7
CisgICAgICBKc29uVW5pdFRlc3RSZXN1bHRQcmludGVyKAorICAgICAgICAgIFVuaXRUZXN0T3B0
aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSkKKyAgICAgICAgICAu
UHJpbnRKc29uVGVzdExpc3QoJnN0cmVhbSwgdGVzdF9jYXNlc18pOworICAgIH0KKyAgICBmcHJp
bnRmKGZpbGVvdXQsICIlcyIsIFN0cmluZ1N0cmVhbVRvU3RyaW5nKCZzdHJlYW0pLmNfc3RyKCkp
OworICAgIGZjbG9zZShmaWxlb3V0KTsKKyAgfQogfQogCiAvLyBTZXRzIHRoZSBPUyBzdGFjayB0
cmFjZSBnZXR0ZXIuCkBAIC00MjU0LDE3ICs1NDc3LDI1IEBAIHZvaWQgVW5pdFRlc3RJbXBsOjpz
ZXRfb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKAogLy8gZ2V0dGVyLCBhbmQgcmV0dXJucyBpdC4KIE9z
U3RhY2tUcmFjZUdldHRlckludGVyZmFjZSogVW5pdFRlc3RJbXBsOjpvc19zdGFja190cmFjZV9n
ZXR0ZXIoKSB7CiAgIGlmIChvc19zdGFja190cmFjZV9nZXR0ZXJfID09IE5VTEwpIHsKKyNpZmRl
ZiBHVEVTVF9PU19TVEFDS19UUkFDRV9HRVRURVJfCisgICAgb3Nfc3RhY2tfdHJhY2VfZ2V0dGVy
XyA9IG5ldyBHVEVTVF9PU19TVEFDS19UUkFDRV9HRVRURVJfOworI2Vsc2UKICAgICBvc19zdGFj
a190cmFjZV9nZXR0ZXJfID0gbmV3IE9zU3RhY2tUcmFjZUdldHRlcjsKKyNlbmRpZiAgLy8gR1RF
U1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVSXwogICB9CiAKICAgcmV0dXJuIG9zX3N0YWNrX3RyYWNl
X2dldHRlcl87CiB9CiAKLS8vIFJldHVybnMgdGhlIFRlc3RSZXN1bHQgZm9yIHRoZSB0ZXN0IHRo
YXQncyBjdXJyZW50bHkgcnVubmluZywgb3IKLS8vIHRoZSBUZXN0UmVzdWx0IGZvciB0aGUgYWQg
aG9jIHRlc3QgaWYgbm8gdGVzdCBpcyBydW5uaW5nLgorLy8gUmV0dXJucyB0aGUgbW9zdCBzcGVj
aWZpYyBUZXN0UmVzdWx0IGN1cnJlbnRseSBydW5uaW5nLgogVGVzdFJlc3VsdCogVW5pdFRlc3RJ
bXBsOjpjdXJyZW50X3Rlc3RfcmVzdWx0KCkgewotICByZXR1cm4gY3VycmVudF90ZXN0X2luZm9f
ID8KLSAgICBjdXJyZW50X3Rlc3RfaW5mb18tPmltcGwoKS0+cmVzdWx0KCkgOiAmYWRfaG9jX3Rl
c3RfcmVzdWx0XzsKKyAgaWYgKGN1cnJlbnRfdGVzdF9pbmZvXyAhPSBOVUxMKSB7CisgICAgcmV0
dXJuICZjdXJyZW50X3Rlc3RfaW5mb18tPnJlc3VsdF87CisgIH0KKyAgaWYgKGN1cnJlbnRfdGVz
dF9jYXNlXyAhPSBOVUxMKSB7CisgICAgcmV0dXJuICZjdXJyZW50X3Rlc3RfY2FzZV8tPmFkX2hv
Y190ZXN0X3Jlc3VsdF87CisgIH0KKyAgcmV0dXJuICZhZF9ob2NfdGVzdF9yZXN1bHRfOwogfQog
CiAvLyBTaHVmZmxlcyBhbGwgdGVzdCBjYXNlcywgYW5kIHRoZSB0ZXN0cyB3aXRoaW4gZWFjaCB0
ZXN0IGNhc2UsCkBAIC00MjkzLDMzICs1NTI0LDcgQEAgdm9pZCBVbml0VGVzdEltcGw6OlVuc2h1
ZmZsZVRlc3RzKCkgewogICB9CiB9CiAKLS8vIFRlc3RJbmZvSW1wbCBjb25zdHJ1Y3Rvci4gVGhl
IG5ldyBpbnN0YW5jZSBhc3N1bWVzIG93bmVyc2hpcCBvZiB0aGUgdGVzdAotLy8gZmFjdG9yeSBv
YmplY3QuCi1UZXN0SW5mb0ltcGw6OlRlc3RJbmZvSW1wbChUZXN0SW5mbyogcGFyZW50LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV90ZXN0X2Nhc2VfbmFtZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfdGVzdF9jYXNlX2NvbW1lbnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX2NvbW1lbnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBUeXBlSWQgYV9maXh0dXJlX2NsYXNzX2lkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSkgOgotICAgIHBh
cmVudF8ocGFyZW50KSwKLSAgICB0ZXN0X2Nhc2VfbmFtZV8oU3RyaW5nKGFfdGVzdF9jYXNlX25h
bWUpKSwKLSAgICBuYW1lXyhTdHJpbmcoYV9uYW1lKSksCi0gICAgdGVzdF9jYXNlX2NvbW1lbnRf
KFN0cmluZyhhX3Rlc3RfY2FzZV9jb21tZW50KSksCi0gICAgY29tbWVudF8oU3RyaW5nKGFfY29t
bWVudCkpLAotICAgIGZpeHR1cmVfY2xhc3NfaWRfKGFfZml4dHVyZV9jbGFzc19pZCksCi0gICAg
c2hvdWxkX3J1bl8oZmFsc2UpLAotICAgIGlzX2Rpc2FibGVkXyhmYWxzZSksCi0gICAgbWF0Y2hl
c19maWx0ZXJfKGZhbHNlKSwKLSAgICBmYWN0b3J5XyhmYWN0b3J5KSB7Ci19Ci0KLS8vIFRlc3RJ
bmZvSW1wbCBkZXN0cnVjdG9yLgotVGVzdEluZm9JbXBsOjp+VGVzdEluZm9JbXBsKCkgewotICBk
ZWxldGUgZmFjdG9yeV87Ci19Ci0KLS8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJh
Y2UgYXMgYSBTdHJpbmcuCisvLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFz
IGFuIHN0ZDo6c3RyaW5nLgogLy8KIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFt
ZXMgdG8gYmUgaW5jbHVkZWQgaXMgc3BlY2lmaWVkIGJ5CiAvLyB0aGUgZ3Rlc3Rfc3RhY2tfdHJh
Y2VfZGVwdGggZmxhZy4gIFRoZSBza2lwX2NvdW50IHBhcmFtZXRlcgpAQCAtNDMyOSwxNSArNTUz
NCwxNSBAQCBUZXN0SW5mb0ltcGw6On5UZXN0SW5mb0ltcGwoKSB7CiAvLyBGb3IgZXhhbXBsZSwg
aWYgRm9vKCkgY2FsbHMgQmFyKCksIHdoaWNoIGluIHR1cm4gY2FsbHMKIC8vIEdldEN1cnJlbnRP
c1N0YWNrVHJhY2VFeGNlcHRUb3AoLi4uLCAxKSwgRm9vKCkgd2lsbCBiZSBpbmNsdWRlZCBpbgog
Ly8gdGhlIHRyYWNlIGJ1dCBCYXIoKSBhbmQgR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRv
cCgpIHdvbid0LgotU3RyaW5nIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoVW5pdFRl
c3QqIC8qdW5pdF90ZXN0Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgc2tpcF9jb3VudCkgeworc3RkOjpzdHJpbmcgR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4
Y2VwdFRvcChVbml0VGVzdCogLyp1bml0X3Rlc3QqLywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IHNraXBfY291bnQpIHsKICAgLy8gV2UgcGFzcyBza2lw
X2NvdW50ICsgMSB0byBza2lwIHRoaXMgd3JhcHBlciBmdW5jdGlvbiBpbiBhZGRpdGlvbgogICAv
LyB0byB3aGF0IHRoZSB1c2VyIHJlYWxseSB3YW50cyB0byBza2lwLgogICByZXR1cm4gR2V0VW5p
dFRlc3RJbXBsKCktPkN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3Aoc2tpcF9jb3VudCArIDEp
OwogfQogCi0vLyBVc2VkIGJ5IHRoZSBHVEVTVF9ISURFX1VOUkVBQ0hBQkxFX0NPREVfIG1hY3Jv
IHRvIHN1cHByZXNzIHVucmVhY2hhYmxlCi0vLyBjb2RlIHdhcm5pbmdzLgorLy8gVXNlZCBieSB0
aGUgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyBtYWNybyB0
bworLy8gc3VwcHJlc3MgdW5yZWFjaGFibGUgY29kZSB3YXJuaW5ncy4KIG5hbWVzcGFjZSB7CiBj
bGFzcyBDbGFzc1VuaXF1ZVRvQWx3YXlzVHJ1ZSB7fTsKIH0KQEAgLTQzNzEsMTQgKzU1NzYsMTMg
QEAgYm9vbCBTa2lwUHJlZml4KGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgY2hhcioqIHBzdHIp
IHsKIC8vIHBhcnQgY2FuIGJlIG9taXR0ZWQuCiAvLwogLy8gUmV0dXJucyB0aGUgdmFsdWUgb2Yg
dGhlIGZsYWcsIG9yIE5VTEwgaWYgdGhlIHBhcnNpbmcgZmFpbGVkLgotY29uc3QgY2hhciogUGFy
c2VGbGFnVmFsdWUoY29uc3QgY2hhciogc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogZmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVmX29w
dGlvbmFsKSB7CitzdGF0aWMgY29uc3QgY2hhciogUGFyc2VGbGFnVmFsdWUoY29uc3QgY2hhciog
c3RyLCBjb25zdCBjaGFyKiBmbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgZGVmX29wdGlvbmFsKSB7CiAgIC8vIHN0ciBhbmQgZmxhZyBtdXN0IG5vdCBiZSBOVUxM
LgogICBpZiAoc3RyID09IE5VTEwgfHwgZmxhZyA9PSBOVUxMKSByZXR1cm4gTlVMTDsKIAogICAv
LyBUaGUgZmxhZyBtdXN0IHN0YXJ0IHdpdGggIi0tIiBmb2xsb3dlZCBieSBHVEVTVF9GTEFHX1BS
RUZJWF8uCi0gIGNvbnN0IFN0cmluZyBmbGFnX3N0ciA9IFN0cmluZzo6Rm9ybWF0KCItLSVzJXMi
LCBHVEVTVF9GTEFHX1BSRUZJWF8sIGZsYWcpOworICBjb25zdCBzdGQ6OnN0cmluZyBmbGFnX3N0
ciA9IHN0ZDo6c3RyaW5nKCItLSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsgZmxhZzsKICAgY29u
c3Qgc2l6ZV90IGZsYWdfbGVuID0gZmxhZ19zdHIubGVuZ3RoKCk7CiAgIGlmIChzdHJuY21wKHN0
ciwgZmxhZ19zdHIuY19zdHIoKSwgZmxhZ19sZW4pICE9IDApIHJldHVybiBOVUxMOwogCkBAIC00
NDA5LDcgKzU2MTMsNyBAQCBjb25zdCBjaGFyKiBQYXJzZUZsYWdWYWx1ZShjb25zdCBjaGFyKiBz
dHIsCiAvLwogLy8gT24gc3VjY2Vzcywgc3RvcmVzIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyBpbiAq
dmFsdWUsIGFuZCByZXR1cm5zCiAvLyB0cnVlLiAgT24gZmFpbHVyZSwgcmV0dXJucyBmYWxzZSB3
aXRob3V0IGNoYW5naW5nICp2YWx1ZS4KLWJvb2wgUGFyc2VCb29sRmxhZyhjb25zdCBjaGFyKiBz
dHIsIGNvbnN0IGNoYXIqIGZsYWcsIGJvb2wqIHZhbHVlKSB7CitzdGF0aWMgYm9vbCBQYXJzZUJv
b2xGbGFnKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgY2hhciogZmxhZywgYm9vbCogdmFsdWUpIHsK
ICAgLy8gR2V0cyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcgYXMgYSBzdHJpbmcuCiAgIGNvbnN0IGNo
YXIqIGNvbnN0IHZhbHVlX3N0ciA9IFBhcnNlRmxhZ1ZhbHVlKHN0ciwgZmxhZywgdHJ1ZSk7CiAK
QEAgLTQ0NDMsNyArNTY0Nyw4IEBAIGJvb2wgUGFyc2VJbnQzMkZsYWcoY29uc3QgY2hhciogc3Ry
LCBjb25zdCBjaGFyKiBmbGFnLCBJbnQzMiogdmFsdWUpIHsKIC8vCiAvLyBPbiBzdWNjZXNzLCBz
dG9yZXMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIGluICp2YWx1ZSwgYW5kIHJldHVybnMKIC8vIHRy
dWUuICBPbiBmYWlsdXJlLCByZXR1cm5zIGZhbHNlIHdpdGhvdXQgY2hhbmdpbmcgKnZhbHVlLgot
Ym9vbCBQYXJzZVN0cmluZ0ZsYWcoY29uc3QgY2hhciogc3RyLCBjb25zdCBjaGFyKiBmbGFnLCBT
dHJpbmcqIHZhbHVlKSB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyaW5nPgorc3RhdGljIGJvb2wg
UGFyc2VTdHJpbmdGbGFnKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgY2hhciogZmxhZywgU3RyaW5n
KiB2YWx1ZSkgewogICAvLyBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyBhcyBhIHN0cmluZy4K
ICAgY29uc3QgY2hhciogY29uc3QgdmFsdWVfc3RyID0gUGFyc2VGbGFnVmFsdWUoc3RyLCBmbGFn
LCBmYWxzZSk7CiAKQEAgLTQ0NzksNyArNTY4NCw3IEBAIHN0YXRpYyBib29sIEhhc0dvb2dsZVRl
c3RGbGFnUHJlZml4KGNvbnN0IGNoYXIqIHN0cikgewogLy8gICBAWSAgICBjaGFuZ2VzIHRoZSBj
b2xvciB0byB5ZWxsb3cuCiAvLyAgIEBEICAgIGNoYW5nZXMgdG8gdGhlIGRlZmF1bHQgdGVybWlu
YWwgdGV4dCBjb2xvci4KIC8vCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogV3JpdGUgdGVzdHMg
Zm9yIHRoaXMgb25jZSB3ZSBhZGQgc3Rkb3V0CisvLyBGSVhNRTogV3JpdGUgdGVzdHMgZm9yIHRo
aXMgb25jZSB3ZSBhZGQgc3Rkb3V0CiAvLyBjYXB0dXJpbmcgdG8gR29vZ2xlIFRlc3QuCiBzdGF0
aWMgdm9pZCBQcmludENvbG9yRW5jb2RlZChjb25zdCBjaGFyKiBzdHIpIHsKICAgR1Rlc3RDb2xv
ciBjb2xvciA9IENPTE9SX0RFRkFVTFQ7ICAvLyBUaGUgY3VycmVudCBjb2xvci4KQEAgLTQ0OTUs
NyArNTcwMCw3IEBAIHN0YXRpYyB2b2lkIFByaW50Q29sb3JFbmNvZGVkKGNvbnN0IGNoYXIqIHN0
cikgewogICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIENvbG9yZWRQcmludGYoY29sb3IsICIl
cyIsIFN0cmluZyhzdHIsIHAgLSBzdHIpLmNfc3RyKCkpOworICAgIENvbG9yZWRQcmludGYoY29s
b3IsICIlcyIsIHN0ZDo6c3RyaW5nKHN0ciwgcCkuY19zdHIoKSk7CiAKICAgICBjb25zdCBjaGFy
IGNoID0gcFsxXTsKICAgICBzdHIgPSBwICsgMjsKQEAgLTQ1NDUsMjQgKzU3NTAsMjggQEAgc3Rh
dGljIGNvbnN0IGNoYXIga0NvbG9yRW5jb2RlZEhlbHBNZXNzYWdlW10gPQogIiAgICAgIEVuYWJs
ZS9kaXNhYmxlIGNvbG9yZWQgb3V0cHV0LiBUaGUgZGVmYXVsdCBpcyBAR2F1dG9ARC5cbiIKICIg
IC1ARy0iIEdURVNUX0ZMQUdfUFJFRklYXyAicHJpbnRfdGltZT0wQERcbiIKICIgICAgICBEb24n
dCBwcmludCB0aGUgZWxhcHNlZCB0aW1lIG9mIGVhY2ggdGVzdC5cbiIKLSIgIEBHLS0iIEdURVNU
X0ZMQUdfUFJFRklYXyAib3V0cHV0PXhtbEBZW0BHOkBZRElSRUNUT1JZX1BBVEhARyIKKyIgIEBH
LS0iIEdURVNUX0ZMQUdfUFJFRklYXyAib3V0cHV0PUBZKEBHanNvbkBZfEBHeG1sQFkpW0BHOkBZ
RElSRUNUT1JZX1BBVEhARyIKICAgICBHVEVTVF9QQVRIX1NFUF8gIkBZfEBHOkBZRklMRV9QQVRI
XUBEXG4iCi0iICAgICAgR2VuZXJhdGUgYW4gWE1MIHJlcG9ydCBpbiB0aGUgZ2l2ZW4gZGlyZWN0
b3J5IG9yIHdpdGggdGhlIGdpdmVuIGZpbGVcbiIKLSIgICAgICBuYW1lLiBAWUZJTEVfUEFUSEBE
IGRlZmF1bHRzIHRvIEBHdGVzdF9kZXRhaWxzLnhtbEBELlxuIgorIiAgICAgIEdlbmVyYXRlIGEg
SlNPTiBvciBYTUwgcmVwb3J0IGluIHRoZSBnaXZlbiBkaXJlY3Rvcnkgb3Igd2l0aCB0aGUgZ2l2
ZW5cbiIKKyIgICAgICBmaWxlIG5hbWUuIEBZRklMRV9QQVRIQEQgZGVmYXVsdHMgdG8gQEd0ZXN0
X2RldGFpbHMueG1sQEQuXG4iCisjIGlmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKyIgIEBH
LS0iIEdURVNUX0ZMQUdfUFJFRklYXyAic3RyZWFtX3Jlc3VsdF90bz1AWUhPU1RARzpAWVBPUlRA
RFxuIgorIiAgICAgIFN0cmVhbSB0ZXN0IHJlc3VsdHMgdG8gdGhlIGdpdmVuIHNlcnZlci5cbiIK
KyMgZW5kaWYgIC8vIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KICJcbiIKICJBc3NlcnRpb24g
QmVoYXZpb3I6XG4iCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QgJiYgIUdURVNUX09TX1dJTkRP
V1MKKyMgaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QgJiYgIUdURVNUX09TX1dJTkRPV1MKICIgIEBH
LS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiZGVhdGhfdGVzdF9zdHlsZT1AWShAR2Zhc3RAWXxAR3Ro
cmVhZHNhZmVAWSlARFxuIgogIiAgICAgIFNldCB0aGUgZGVmYXVsdCBkZWF0aCB0ZXN0IHN0eWxl
LlxuIgotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVCAmJiAhR1RFU1RfT1NfV0lORE9X
UworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QgJiYgIUdURVNUX09TX1dJTkRPV1MK
ICIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiYnJlYWtfb25fZmFpbHVyZUBEXG4iCiAiICAg
ICAgVHVybiBhc3NlcnRpb24gZmFpbHVyZXMgaW50byBkZWJ1Z2dlciBicmVhay1wb2ludHMuXG4i
CiAiICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gInRocm93X29uX2ZhaWx1cmVARFxuIgotIiAg
ICAgIFR1cm4gYXNzZXJ0aW9uIGZhaWx1cmVzIGludG8gQysrIGV4Y2VwdGlvbnMuXG4iCi0jaWYg
R1RFU1RfT1NfV0lORE9XUwotIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJjYXRjaF9leGNl
cHRpb25zQERcbiIKLSIgICAgICBTdXBwcmVzcyBwb3AtdXBzIGNhdXNlZCBieSBleGNlcHRpb25z
LlxuIgotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisiICAgICAgVHVybiBhc3NlcnRpb24g
ZmFpbHVyZXMgaW50byBDKysgZXhjZXB0aW9ucyBmb3IgdXNlIGJ5IGFuIGV4dGVybmFsXG4iCisi
ICAgICAgdGVzdCBmcmFtZXdvcmsuXG4iCisiICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImNh
dGNoX2V4Y2VwdGlvbnM9MEBEXG4iCisiICAgICAgRG8gbm90IHJlcG9ydCBleGNlcHRpb25zIGFz
IHRlc3QgZmFpbHVyZXMuIEluc3RlYWQsIGFsbG93IHRoZW1cbiIKKyIgICAgICB0byBjcmFzaCB0
aGUgcHJvZ3JhbSBvciB0aHJvdyBhIHBvcC11cCAob24gV2luZG93cykuXG4iCiAiXG4iCiAiRXhj
ZXB0IGZvciBARy0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImxpc3RfdGVzdHNARCwgeW91IGNhbiBh
bHRlcm5hdGl2ZWx5IHNldCAiCiAgICAgInRoZSBjb3JyZXNwb25kaW5nXG4iCkBAIC00NTc2LDQ1
ICs1Nzg1LDg3IEBAIHN0YXRpYyBjb25zdCBjaGFyIGtDb2xvckVuY29kZWRIZWxwTWVzc2FnZVtd
ID0KICIobm90IG9uZSBpbiB5b3VyIG93biBjb2RlIG9yIHRlc3RzKSwgcGxlYXNlIHJlcG9ydCBp
dCB0b1xuIgogIkBHPCIgR1RFU1RfREVWX0VNQUlMXyAiPkBELlxuIjsKIAorc3RhdGljIGJvb2wg
UGFyc2VHb29nbGVUZXN0RmxhZyhjb25zdCBjaGFyKiBjb25zdCBhcmcpIHsKKyAgcmV0dXJuIFBh
cnNlQm9vbEZsYWcoYXJnLCBrQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnLAorICAgICAgICAgICAg
ICAgICAgICAgICAmR1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cykpIHx8CisgICAg
ICBQYXJzZUJvb2xGbGFnKGFyZywga0JyZWFrT25GYWlsdXJlRmxhZywKKyAgICAgICAgICAgICAg
ICAgICAgJkdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSkpIHx8CisgICAgICBQYXJzZUJvb2xG
bGFnKGFyZywga0NhdGNoRXhjZXB0aW9uc0ZsYWcsCisgICAgICAgICAgICAgICAgICAgICZHVEVT
VF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKSB8fAorICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywg
a0NvbG9yRmxhZywgJkdURVNUX0ZMQUcoY29sb3IpKSB8fAorICAgICAgUGFyc2VTdHJpbmdGbGFn
KGFyZywga0RlYXRoVGVzdFN0eWxlRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAmR1RFU1Rf
RkxBRyhkZWF0aF90ZXN0X3N0eWxlKSkgfHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrRGVh
dGhUZXN0VXNlRm9yaywKKyAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoZGVhdGhfdGVz
dF91c2VfZm9yaykpIHx8CisgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrRmlsdGVyRmxhZywg
JkdURVNUX0ZMQUcoZmlsdGVyKSkgfHwKKyAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtJbnRl
cm5hbFJ1bkRlYXRoVGVzdEZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUco
aW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpKSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtM
aXN0VGVzdHNGbGFnLCAmR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSkgfHwKKyAgICAgIFBhcnNlU3Ry
aW5nRmxhZyhhcmcsIGtPdXRwdXRGbGFnLCAmR1RFU1RfRkxBRyhvdXRwdXQpKSB8fAorICAgICAg
UGFyc2VCb29sRmxhZyhhcmcsIGtQcmludFRpbWVGbGFnLCAmR1RFU1RfRkxBRyhwcmludF90aW1l
KSkgfHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrUHJpbnRVVEY4RmxhZywgJkdURVNUX0ZM
QUcocHJpbnRfdXRmOCkpIHx8CisgICAgICBQYXJzZUludDMyRmxhZyhhcmcsIGtSYW5kb21TZWVk
RmxhZywgJkdURVNUX0ZMQUcocmFuZG9tX3NlZWQpKSB8fAorICAgICAgUGFyc2VJbnQzMkZsYWco
YXJnLCBrUmVwZWF0RmxhZywgJkdURVNUX0ZMQUcocmVwZWF0KSkgfHwKKyAgICAgIFBhcnNlQm9v
bEZsYWcoYXJnLCBrU2h1ZmZsZUZsYWcsICZHVEVTVF9GTEFHKHNodWZmbGUpKSB8fAorICAgICAg
UGFyc2VJbnQzMkZsYWcoYXJnLCBrU3RhY2tUcmFjZURlcHRoRmxhZywKKyAgICAgICAgICAgICAg
ICAgICAgICZHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSkgfHwKKyAgICAgIFBhcnNlU3Ry
aW5nRmxhZyhhcmcsIGtTdHJlYW1SZXN1bHRUb0ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAg
JkdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykpIHx8CisgICAgICBQYXJzZUJvb2xGbGFnKGFy
Zywga1Rocm93T25GYWlsdXJlRmxhZywKKyAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUco
dGhyb3dfb25fZmFpbHVyZSkpOworfQorCisjaWYgR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFH
Xworc3RhdGljIHZvaWQgTG9hZEZsYWdzRnJvbUZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgp
IHsKKyAgRklMRSogZmxhZ2ZpbGUgPSBwb3NpeDo6Rk9wZW4ocGF0aC5jX3N0cigpLCAiciIpOwor
ICBpZiAoIWZsYWdmaWxlKSB7CisgICAgR1RFU1RfTE9HXyhGQVRBTCkgPDwgIlVuYWJsZSB0byBv
cGVuIGZpbGUgXCIiIDw8IEdURVNUX0ZMQUcoZmxhZ2ZpbGUpCisgICAgICAgICAgICAgICAgICAg
ICAgPDwgIlwiIjsKKyAgfQorICBzdGQ6OnN0cmluZyBjb250ZW50cyhSZWFkRW50aXJlRmlsZShm
bGFnZmlsZSkpOworICBwb3NpeDo6RkNsb3NlKGZsYWdmaWxlKTsKKyAgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+IGxpbmVzOworICBTcGxpdFN0cmluZyhjb250ZW50cywgJ1xuJywgJmxpbmVzKTsK
KyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaW5lcy5zaXplKCk7ICsraSkgeworICAgIGlmIChs
aW5lc1tpXS5lbXB0eSgpKQorICAgICAgY29udGludWU7CisgICAgaWYgKCFQYXJzZUdvb2dsZVRl
c3RGbGFnKGxpbmVzW2ldLmNfc3RyKCkpKQorICAgICAgZ19oZWxwX2ZsYWcgPSB0cnVlOworICB9
Cit9CisjZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KKwogLy8gUGFyc2Vz
IHRoZSBjb21tYW5kIGxpbmUgZm9yIEdvb2dsZSBUZXN0IGZsYWdzLCB3aXRob3V0IGluaXRpYWxp
emluZwogLy8gb3RoZXIgcGFydHMgb2YgR29vZ2xlIFRlc3QuICBUaGUgdHlwZSBwYXJhbWV0ZXIg
Q2hhclR5cGUgY2FuIGJlCiAvLyBpbnN0YW50aWF0ZWQgdG8gZWl0aGVyIGNoYXIgb3Igd2NoYXJf
dC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KIHZvaWQgUGFyc2VHb29nbGVUZXN0Rmxh
Z3NPbmx5SW1wbChpbnQqIGFyZ2MsIENoYXJUeXBlKiogYXJndikgewogICBmb3IgKGludCBpID0g
MTsgaSA8ICphcmdjOyBpKyspIHsKLSAgICBjb25zdCBTdHJpbmcgYXJnX3N0cmluZyA9IFN0cmVh
bWFibGVUb1N0cmluZyhhcmd2W2ldKTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBhcmdfc3RyaW5n
ID0gU3RyZWFtYWJsZVRvU3RyaW5nKGFyZ3ZbaV0pOwogICAgIGNvbnN0IGNoYXIqIGNvbnN0IGFy
ZyA9IGFyZ19zdHJpbmcuY19zdHIoKTsKIAogICAgIHVzaW5nIGludGVybmFsOjpQYXJzZUJvb2xG
bGFnOwogICAgIHVzaW5nIGludGVybmFsOjpQYXJzZUludDMyRmxhZzsKICAgICB1c2luZyBpbnRl
cm5hbDo6UGFyc2VTdHJpbmdGbGFnOwogCi0gICAgLy8gRG8gd2Ugc2VlIGEgR29vZ2xlIFRlc3Qg
ZmxhZz8KLSAgICBpZiAoUGFyc2VCb29sRmxhZyhhcmcsIGtBbHNvUnVuRGlzYWJsZWRUZXN0c0Zs
YWcsCi0gICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRf
dGVzdHMpKSB8fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0JyZWFrT25GYWlsdXJlRmxh
ZywKLSAgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJlKSkg
fHwKLSAgICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtDYXRjaEV4Y2VwdGlvbnNGbGFnLAotICAg
ICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKSB8fAotICAg
ICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrQ29sb3JGbGFnLCAmR1RFU1RfRkxBRyhjb2xvcikp
IHx8Ci0gICAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtEZWF0aFRlc3RTdHlsZUZsYWcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSkgfHwK
LSAgICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtEZWF0aFRlc3RVc2VGb3JrLAotICAgICAgICAg
ICAgICAgICAgICAgICZHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspKSB8fAotICAgICAg
ICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrRmlsdGVyRmxhZywgJkdURVNUX0ZMQUcoZmlsdGVyKSkg
fHwKLSAgICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga0ludGVybmFsUnVuRGVhdGhUZXN0Rmxh
ZywKLSAgICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0
aF90ZXN0KSkgfHwKLSAgICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtMaXN0VGVzdHNGbGFnLCAm
R1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSkgfHwKLSAgICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywg
a091dHB1dEZsYWcsICZHVEVTVF9GTEFHKG91dHB1dCkpIHx8Ci0gICAgICAgIFBhcnNlQm9vbEZs
YWcoYXJnLCBrUHJpbnRUaW1lRmxhZywgJkdURVNUX0ZMQUcocHJpbnRfdGltZSkpIHx8Ci0gICAg
ICAgIFBhcnNlSW50MzJGbGFnKGFyZywga1JhbmRvbVNlZWRGbGFnLCAmR1RFU1RfRkxBRyhyYW5k
b21fc2VlZCkpIHx8Ci0gICAgICAgIFBhcnNlSW50MzJGbGFnKGFyZywga1JlcGVhdEZsYWcsICZH
VEVTVF9GTEFHKHJlcGVhdCkpIHx8Ci0gICAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrU2h1ZmZs
ZUZsYWcsICZHVEVTVF9GTEFHKHNodWZmbGUpKSB8fAotICAgICAgICBQYXJzZUludDMyRmxhZyhh
cmcsIGtTdGFja1RyYWNlRGVwdGhGbGFnLAotICAgICAgICAgICAgICAgICAgICAgICAmR1RFU1Rf
RkxBRyhzdGFja190cmFjZV9kZXB0aCkpIHx8Ci0gICAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBr
VGhyb3dPbkZhaWx1cmVGbGFnLCAmR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSkKLSAgICAg
ICAgKSB7Ci0gICAgICAvLyBZZXMuICBTaGlmdCB0aGUgcmVtYWluZGVyIG9mIHRoZSBhcmd2IGxp
c3QgbGVmdCBieSBvbmUuICBOb3RlCisgICAgYm9vbCByZW1vdmVfZmxhZyA9IGZhbHNlOworICAg
IGlmIChQYXJzZUdvb2dsZVRlc3RGbGFnKGFyZykpIHsKKyAgICAgIHJlbW92ZV9mbGFnID0gdHJ1
ZTsKKyNpZiBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCisgICAgfSBlbHNlIGlmIChQYXJz
ZVN0cmluZ0ZsYWcoYXJnLCBrRmxhZ2ZpbGVGbGFnLCAmR1RFU1RfRkxBRyhmbGFnZmlsZSkpKSB7
CisgICAgICBMb2FkRmxhZ3NGcm9tRmlsZShHVEVTVF9GTEFHKGZsYWdmaWxlKSk7CisgICAgICBy
ZW1vdmVfZmxhZyA9IHRydWU7CisjZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxB
R18KKyAgICB9IGVsc2UgaWYgKGFyZ19zdHJpbmcgPT0gIi0taGVscCIgfHwgYXJnX3N0cmluZyA9
PSAiLWgiIHx8CisgICAgICAgICAgICAgICBhcmdfc3RyaW5nID09ICItPyIgfHwgYXJnX3N0cmlu
ZyA9PSAiLz8iIHx8CisgICAgICAgICAgICAgICBIYXNHb29nbGVUZXN0RmxhZ1ByZWZpeChhcmcp
KSB7CisgICAgICAvLyBCb3RoIGhlbHAgZmxhZyBhbmQgdW5yZWNvZ25pemVkIEdvb2dsZSBUZXN0
IGZsYWdzIChleGNsdWRpbmcKKyAgICAgIC8vIGludGVybmFsIG9uZXMpIHRyaWdnZXIgaGVscCBk
aXNwbGF5LgorICAgICAgZ19oZWxwX2ZsYWcgPSB0cnVlOworICAgIH0KKworICAgIGlmIChyZW1v
dmVfZmxhZykgeworICAgICAgLy8gU2hpZnQgdGhlIHJlbWFpbmRlciBvZiB0aGUgYXJndiBsaXN0
IGxlZnQgYnkgb25lLiAgTm90ZQogICAgICAgLy8gdGhhdCBhcmd2IGhhcyAoKmFyZ2MgKyAxKSBl
bGVtZW50cywgdGhlIGxhc3Qgb25lIGFsd2F5cyBiZWluZwogICAgICAgLy8gTlVMTC4gIFRoZSBm
b2xsb3dpbmcgbG9vcCBtb3ZlcyB0aGUgdHJhaWxpbmcgTlVMTCBlbGVtZW50IGFzCiAgICAgICAv
LyB3ZWxsLgpAQCAtNDYyOCwxMiArNTg3OSw2IEBAIHZvaWQgUGFyc2VHb29nbGVUZXN0RmxhZ3NP
bmx5SW1wbChpbnQqIGFyZ2MsIENoYXJUeXBlKiogYXJndikgewogICAgICAgLy8gV2UgYWxzbyBu
ZWVkIHRvIGRlY3JlbWVudCB0aGUgaXRlcmF0b3IgYXMgd2UganVzdCByZW1vdmVkCiAgICAgICAv
LyBhbiBlbGVtZW50LgogICAgICAgaS0tOwotICAgIH0gZWxzZSBpZiAoYXJnX3N0cmluZyA9PSAi
LS1oZWxwIiB8fCBhcmdfc3RyaW5nID09ICItaCIgfHwKLSAgICAgICAgICAgICAgIGFyZ19zdHJp
bmcgPT0gIi0/IiB8fCBhcmdfc3RyaW5nID09ICIvPyIgfHwKLSAgICAgICAgICAgICAgIEhhc0dv
b2dsZVRlc3RGbGFnUHJlZml4KGFyZykpIHsKLSAgICAgIC8vIEJvdGggaGVscCBmbGFnIGFuZCB1
bnJlY29nbml6ZWQgR29vZ2xlIFRlc3QgZmxhZ3MgKGV4Y2x1ZGluZwotICAgICAgLy8gaW50ZXJu
YWwgb25lcykgdHJpZ2dlciBoZWxwIGRpc3BsYXkuCi0gICAgICBnX2hlbHBfZmxhZyA9IHRydWU7
CiAgICAgfQogICB9CiAKQEAgLTQ2NDksNiArNTg5NCwxNyBAQCB2b2lkIFBhcnNlR29vZ2xlVGVz
dEZsYWdzT25seUltcGwoaW50KiBhcmdjLCBDaGFyVHlwZSoqIGFyZ3YpIHsKIC8vIG90aGVyIHBh
cnRzIG9mIEdvb2dsZSBUZXN0Lgogdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoaW50KiBh
cmdjLCBjaGFyKiogYXJndikgewogICBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHlJbXBsKGFyZ2Ms
IGFyZ3YpOworCisgIC8vIEZpeCB0aGUgdmFsdWUgb2YgKl9OU0dldEFyZ2MoKSBvbiBtYWNPUywg
YnV0IGlmZgorICAvLyAqX05TR2V0QXJndigpID09IGFyZ3YKKyAgLy8gT25seSBhcHBsaWNhYmxl
IHRvIGNoYXIqKiB2ZXJzaW9uIG9mIGFyZ3YKKyNpZiBHVEVTVF9PU19NQUMKKyNpZm5kZWYgR1RF
U1RfT1NfSU9TCisgIGlmICgqX05TR2V0QXJndigpID09IGFyZ3YpIHsKKyAgICAqX05TR2V0QXJn
YygpID0gKmFyZ2M7CisgIH0KKyNlbmRpZgorI2VuZGlmCiB9CiB2b2lkIFBhcnNlR29vZ2xlVGVz
dEZsYWdzT25seShpbnQqIGFyZ2MsIHdjaGFyX3QqKiBhcmd2KSB7CiAgIFBhcnNlR29vZ2xlVGVz
dEZsYWdzT25seUltcGwoYXJnYywgYXJndik7CkBAIC00NjYwLDIxICs1OTE2LDE5IEBAIHZvaWQg
UGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5KGludCogYXJnYywgd2NoYXJfdCoqIGFyZ3YpIHsKIC8v
IHdjaGFyX3QuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiB2b2lkIEluaXRHb29nbGVU
ZXN0SW1wbChpbnQqIGFyZ2MsIENoYXJUeXBlKiogYXJndikgewotICBnX2luaXRfZ3Rlc3RfY291
bnQrKzsKLQogICAvLyBXZSBkb24ndCB3YW50IHRvIHJ1biB0aGUgaW5pdGlhbGl6YXRpb24gY29k
ZSB0d2ljZS4KLSAgaWYgKGdfaW5pdF9ndGVzdF9jb3VudCAhPSAxKSByZXR1cm47CisgIGlmIChH
VGVzdElzSW5pdGlhbGl6ZWQoKSkgcmV0dXJuOwogCiAgIGlmICgqYXJnYyA8PSAwKSByZXR1cm47
CiAKLSAgaW50ZXJuYWw6OmdfZXhlY3V0YWJsZV9wYXRoID0gaW50ZXJuYWw6OlN0cmVhbWFibGVU
b1N0cmluZyhhcmd2WzBdKTsKLQotI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCiAgIGdfYXJndnMu
Y2xlYXIoKTsKICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gKmFyZ2M7IGkrKykgewogICAgIGdfYXJn
dnMucHVzaF9iYWNrKFN0cmVhbWFibGVUb1N0cmluZyhhcmd2W2ldKSk7CiAgIH0KLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworI2lmIEdURVNUX0hBU19BQlNMCisgIGFic2w6Oklu
aXRpYWxpemVTeW1ib2xpemVyKGdfYXJndnNbMF0uY19zdHIoKSk7CisjZW5kaWYgIC8vIEdURVNU
X0hBU19BQlNMCiAKICAgUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5KGFyZ2MsIGFyZ3YpOwogICBH
ZXRVbml0VGVzdEltcGwoKS0+UG9zdEZsYWdQYXJzaW5nSW5pdCgpOwpAQCAtNDY5MiwxMyArNTk0
Niw2MiBAQCB2b2lkIEluaXRHb29nbGVUZXN0SW1wbChpbnQqIGFyZ2MsIENoYXJUeXBlKiogYXJn
dikgewogLy8KIC8vIENhbGxpbmcgdGhlIGZ1bmN0aW9uIGZvciB0aGUgc2Vjb25kIHRpbWUgaGFz
IG5vIHVzZXItdmlzaWJsZSBlZmZlY3QuCiB2b2lkIEluaXRHb29nbGVUZXN0KGludCogYXJnYywg
Y2hhcioqIGFyZ3YpIHsKKyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNU
X0ZVTkNUSU9OXykKKyAgR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKGFy
Z2MsIGFyZ3YpOworI2Vsc2UgIC8vIGRlZmluZWQoR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RF
U1RfRlVOQ1RJT05fKQogICBpbnRlcm5hbDo6SW5pdEdvb2dsZVRlc3RJbXBsKGFyZ2MsIGFyZ3Yp
OworI2VuZGlmICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNU
SU9OXykKIH0KIAogLy8gVGhpcyBvdmVybG9hZGVkIHZlcnNpb24gY2FuIGJlIHVzZWQgaW4gV2lu
ZG93cyBwcm9ncmFtcyBjb21waWxlZCBpbgogLy8gVU5JQ09ERSBtb2RlLgogdm9pZCBJbml0R29v
Z2xlVGVzdChpbnQqIGFyZ2MsIHdjaGFyX3QqKiBhcmd2KSB7CisjaWYgZGVmaW5lZChHVEVTVF9D
VVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8pCisgIEdURVNUX0NVU1RPTV9JTklUX0dP
T0dMRV9URVNUX0ZVTkNUSU9OXyhhcmdjLCBhcmd2KTsKKyNlbHNlICAvLyBkZWZpbmVkKEdURVNU
X0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9OXykKICAgaW50ZXJuYWw6OkluaXRHb29n
bGVUZXN0SW1wbChhcmdjLCBhcmd2KTsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01f
SU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8pCit9CisKK3N0ZDo6c3RyaW5nIFRlbXBEaXIoKSB7
CisjaWYgZGVmaW5lZChHVEVTVF9DVVNUT01fVEVNUERJUl9GVU5DVElPTl8pCisgIHJldHVybiBH
VEVTVF9DVVNUT01fVEVNUERJUl9GVU5DVElPTl8oKTsKKyNlbmRpZgorCisjaWYgR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUKKyAgcmV0dXJuICJcXHRlbXBcXCI7CisjZWxpZiBHVEVTVF9PU19XSU5E
T1dTCisgIGNvbnN0IGNoYXIqIHRlbXBfZGlyID0gaW50ZXJuYWw6OnBvc2l4OjpHZXRFbnYoIlRF
TVAiKTsKKyAgaWYgKHRlbXBfZGlyID09IE5VTEwgfHwgdGVtcF9kaXJbMF0gPT0gJ1wwJykKKyAg
ICByZXR1cm4gIlxcdGVtcFxcIjsKKyAgZWxzZSBpZiAodGVtcF9kaXJbc3RybGVuKHRlbXBfZGly
KSAtIDFdID09ICdcXCcpCisgICAgcmV0dXJuIHRlbXBfZGlyOworICBlbHNlCisgICAgcmV0dXJu
IHN0ZDo6c3RyaW5nKHRlbXBfZGlyKSArICJcXCI7CisjZWxpZiBHVEVTVF9PU19MSU5VWF9BTkRS
T0lECisgIHJldHVybiAiL3NkY2FyZC8iOworI2Vsc2UKKyAgcmV0dXJuICIvdG1wLyI7CisjZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCit9CisKKy8vIENsYXNzIFNjb3BlZFRyYWNl
CisKKy8vIFB1c2hlcyB0aGUgZ2l2ZW4gc291cmNlIGZpbGUgbG9jYXRpb24gYW5kIG1lc3NhZ2Ug
b250byBhIHBlci10aHJlYWQKKy8vIHRyYWNlIHN0YWNrIG1haW50YWluZWQgYnkgR29vZ2xlIFRl
c3QuCit2b2lkIFNjb3BlZFRyYWNlOjpQdXNoVHJhY2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxp
bmUsIHN0ZDo6c3RyaW5nIG1lc3NhZ2UpIHsKKyAgaW50ZXJuYWw6OlRyYWNlSW5mbyB0cmFjZTsK
KyAgdHJhY2UuZmlsZSA9IGZpbGU7CisgIHRyYWNlLmxpbmUgPSBsaW5lOworICB0cmFjZS5tZXNz
YWdlLnN3YXAobWVzc2FnZSk7CisKKyAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPlB1c2hHVGVz
dFRyYWNlKHRyYWNlKTsKK30KKworLy8gUG9wcyB0aGUgaW5mbyBwdXNoZWQgYnkgdGhlIGMndG9y
LgorU2NvcGVkVHJhY2U6On5TY29wZWRUcmFjZSgpCisgICAgR1RFU1RfTE9DS19FWENMVURFRF8o
JlVuaXRUZXN0OjptdXRleF8pIHsKKyAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPlBvcEdUZXN0
VHJhY2UoKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdF9tYWluLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc3JjL2d0ZXN0X21haW4uY2MKaW5kZXggZDIwYzAyZmRmYjBhOTQ2MWRjYzJhMjc4OWM0
OTIyYjViMzA1NjM1Mi4uMjExM2Y2MjFlNjU0MzBlNTU3MGRmYjIwMTU4ODRhMmQ0ZjRjZjBiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0X21haW4uY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0X21haW4uY2MKQEAgLTI3LDEzICsy
NywxMSBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaW5jbHVkZSA8aW9z
dHJlYW0+Ci0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1pbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqKmFyZ3YpIHsKLSAgc3RkOjpjb3V0IDw8ICJSdW5uaW5nIG1haW4oKSBmcm9tIGd0ZXN0
X21haW4uY2NcbiI7CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgogCitHVEVTVF9BUElfIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICBwcmlu
dGYoIlJ1bm5pbmcgbWFpbigpIGZyb20gJXNcbiIsIF9fRklMRV9fKTsKICAgdGVzdGluZzo6SW5p
dEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwogICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9CVUlMRC5iYXplbCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvQlVJTEQuYmF6ZWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkzMGQ2
NWUwNDQwMTQ0NDE2YWU4OGFiMjc1OGZkOTM0MGEwOTM3YgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvQlVJTEQuYmF6ZWwKQEAgLTAsMCArMSw1MjcgQEAK
KyMgQ29weXJpZ2h0IDIwMTcgR29vZ2xlIEluYy4KKyMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMK
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisjCisjIEF1dGhvcjogbWlzdGVyZ0Bnb29nbGUuY29tIChHZW5u
YWRpeSBDaXZpbCkKKyMKKyMgQmF6ZWwgQlVJTEQgZm9yIFRoZSBHb29nbGUgQysrIFRlc3Rpbmcg
RnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKworbGljZW5zZXMoWyJub3RpY2UiXSkKKworY29uZmln
X3NldHRpbmcoCisgICAgbmFtZSA9ICJ3aW5kb3dzIiwKKyAgICB2YWx1ZXMgPSB7ImNwdSI6ICJ4
NjRfd2luZG93cyJ9LAorKQorCitjb25maWdfc2V0dGluZygKKyAgICBuYW1lID0gIndpbmRvd3Nf
bXN2YyIsCisgICAgdmFsdWVzID0geyJjcHUiOiAieDY0X3dpbmRvd3NfbXN2YyJ9LAorKQorCitj
b25maWdfc2V0dGluZygKKyAgICBuYW1lID0gImhhc19hYnNsIiwKKyAgICB2YWx1ZXMgPSB7ImRl
ZmluZSI6ICJhYnNsPTEifSwKKykKKworI29uIHdpbmRvd3MgZXhjbHVkZSBndGVzdC10dXBsZS5o
IGFuZCBnb29nbGV0ZXN0LXR1cGxlLXRlc3QuY2MKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJndGVz
dF9hbGxfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IGdsb2IoCisgICAg
ICAgIGluY2x1ZGUgPSBbCisgICAgICAgICAgICAiZ3Rlc3QtKi5jYyIsCisgICAgICAgICAgICAi
Z29vZ2xldGVzdC0qLmNjIiwKKyAgICAgICAgICAgICIqLmgiLAorICAgICAgICAgICAgImdvb2ds
ZXRlc3QvaW5jbHVkZS9ndGVzdC8qKi8qLmgiLAorICAgICAgICBdLAorICAgICAgICBleGNsdWRl
ID0gWworICAgICAgICAgICAgImd0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjIiwKKyAgICAgICAg
ICAgICJnb29nbGV0ZXN0LXR1cGxlLXRlc3QuY2MiLAorICAgICAgICAgICAgImdvb2dsZXRlc3Qv
c3JjL2d0ZXN0LWFsbC5jYyIsCisgICAgICAgICAgICAiZ3Rlc3RfYWxsX3Rlc3QuY2MiLAorICAg
ICAgICAgICAgImd0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYyIsCisgICAgICAgICAgICAiZ3Rl
c3QtbGlzdGVuZXJfdGVzdC5jYyIsCisgICAgICAgICAgICAiZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rl
c3QuY2MiLAorICAgICAgICAgICAgImdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmNjIiwKKyAg
ICAgICAgICAgICJnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdF8uY2MiLAorICAgICAg
ICAgICAgImdvb2dsZXRlc3QtY29sb3ItdGVzdF8uY2MiLAorICAgICAgICAgICAgImdvb2dsZXRl
c3QtZW52LXZhci10ZXN0Xy5jYyIsCisgICAgICAgICAgICAiZ29vZ2xldGVzdC1maWx0ZXItdW5p
dHRlc3RfLmNjIiwKKyAgICAgICAgICAgICJnb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5p
dHRlc3RfLmNjIiwKKyAgICAgICAgICAgICAiZ29vZ2xldGVzdC1saXN0ZW5lci10ZXN0LmNjIiwK
KyAgICAgICAgICAgICAiZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2MiLAorICAgICAgICAgICAg
ICJnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfLmNjIiwKKyAgICAgICAgICAgICAiZ29v
Z2xldGVzdC1zaHVmZmxlLXRlc3RfLmNjIiwKKyAgICAgICAgICAgICAiZ29vZ2xldGVzdC11bmlu
aXRpYWxpemVkLXRlc3RfLmNjIiwKKyAgICAgICAgICAgICAiZ29vZ2xldGVzdC1kZWF0aC10ZXN0
X2V4X3Rlc3QuY2MiLAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdCIs
CisgICAgICAgICAgICAgImdvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0Xy5jYyIsCisg
ICAgICAgICAgICAgImdvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3RfLmNj
IiwKKyAgICAgICAgICAgICAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTItdGVz
dF8uY2MiLAorCisgICAgICAgIF0sCisgICAgKSArIHNlbGVjdCh7CisgICAgICAgICIvLzp3aW5k
b3dzIjogW10sCisgICAgICAgICIvLzp3aW5kb3dzX21zdmMiOiBbXSwKKyAgICAgICAgIi8vY29u
ZGl0aW9uczpkZWZhdWx0IjogWworICAgICAgICAgICAgImdvb2dsZXRlc3QtdHVwbGUtdGVzdC5j
YyIsCisgICAgICAgIF0sCisgICAgfSksCisgICAgY29wdHMgPSBzZWxlY3QoeworICAgICAgICAi
Ly86d2luZG93cyI6IFsiLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0wIl0sCisgICAgICAgICIv
Lzp3aW5kb3dzX21zdmMiOiBbIi1ER1RFU1RfVVNFX09XTl9UUjFfVFVQTEU9MCJdLAorICAgICAg
ICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi1ER1RFU1RfVVNFX09XTl9UUjFfVFVQTEU9MSJd
LAorICAgIH0pLAorICAgIGluY2x1ZGVzID0gWworICAgICAgICAiZ29vZ2xldGVzdCIsCisgICAg
ICAgICJnb29nbGV0ZXN0L2luY2x1ZGUiLAorICAgICAgICAiZ29vZ2xldGVzdC9pbmNsdWRlL2lu
dGVybmFsIiwKKyAgICAgICAgImdvb2dsZXRlc3QvdGVzdCIsCisgICAgXSwKKyAgICBsaW5rb3B0
cyA9IHNlbGVjdCh7CisgICAgICAgICIvLzp3aW5kb3dzIjogW10sCisgICAgICAgICIvLzp3aW5k
b3dzX21zdmMiOiBbXSwKKyAgICAgICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogWworICAgICAg
ICAgICAgIi1wdGhyZWFkIiwKKyAgICAgICAgXSwKKyAgICB9KSwKKyAgICBkZXBzID0gWyIvLzpn
dGVzdF9tYWluIl0sCispCisKKworIyBUZXN0cyBkZWF0aCB0ZXN0cy4KK2NjX3Rlc3QoCisgICAg
bmFtZSA9ICJnb29nbGV0ZXN0LWRlYXRoLXRlc3QtdGVzdCIsCisgICAgc2l6ZSA9ICJtZWRpdW0i
LAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtZGVhdGgtdGVzdC10ZXN0LmNjIl0sCisgICAgZGVw
cyA9IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQorCitjY190ZXN0KAorICAgIG5hbWUgPSAiZ3Rlc3Rf
dGVzdF9tYWNyb19zdGFja19mb290cHJpbnRfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisg
ICAgc3JjcyA9IFsiZ3Rlc3RfdGVzdF9tYWNyb19zdGFja19mb290cHJpbnRfdGVzdC5jYyJdLAor
ICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisKKyNUaGVzZSBnb29nbGV0ZXN0IHRlc3RzIGhh
dmUgdGhlaXIgb3duIG1haW4oKQorY2NfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtbGlz
dGVuZXItdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVz
dC1saXN0ZW5lci10ZXN0LmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQor
CitjY190ZXN0KAorICAgIG5hbWUgPSAiZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QiLAorICAgIHNp
emUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbCisgICAgICAgICJndGVzdC11bml0dGVzdC1hcGlf
dGVzdC5jYyIsCisgICAgXSwKKyAgICBkZXBzID0gWworICAgICAgICAiLy86Z3Rlc3QiLAorICAg
IF0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVz
dCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImdvb2dsZXRl
c3QtcGFyYW0tdGVzdC10ZXN0LmNjIiwKKyAgICAgICAgImdvb2dsZXRlc3QtcGFyYW0tdGVzdC10
ZXN0LmgiLAorICAgICAgICAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0Mi10ZXN0LmNjIiwKKyAgICBd
LAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJn
dGVzdF91bml0dGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ3Rlc3Rf
dW5pdHRlc3QuY2MiXSwKKyAgICBhcmdzID0gWyItLWhlYXBfY2hlY2s9c3RyaWN0Il0sCisgICAg
c2hhcmRfY291bnQgPSAyLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0X21haW4iXSwKKykKKworIyAg
UHkgdGVzdHMKKworcHlfbGlicmFyeSgKKyAgICBuYW1lID0gImd0ZXN0X3Rlc3RfdXRpbHMiLAor
ICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJndGVzdF90ZXN0X3V0aWxzLnB5Il0sCisp
CisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImd0ZXN0X2hlbHBfdGVzdF8iLAorICAgIHRlc3Rv
bmx5ID0gMSwKKyAgICBzcmNzID0gWyJndGVzdF9oZWxwX3Rlc3RfLmNjIl0sCisgICAgZGVwcyA9
IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ3Rlc3RfaGVs
cF90ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJndGVzdF9oZWxwX3Rl
c3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z3Rlc3RfaGVscF90ZXN0XyJdLAorICAgIGRlcHMgPSBb
IjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ29v
Z2xldGVzdC1vdXRwdXQtdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQor
CisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LW91dHB1dC10ZXN0IiwKKyAgICBz
aXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LW91dHB1dC10ZXN0LnB5Il0s
CisgICAgYXJncyA9IHNlbGVjdCh7CisgICAgICAgICI6aGFzX2Fic2wiOiBbXSwKKyAgICAgICAg
Ii8vY29uZGl0aW9uczpkZWZhdWx0IjogWyItLW5vX3N0YWNrdHJhY2Vfc3VwcG9ydCJdLAorICAg
IH0pLAorICAgIGRhdGEgPSBbCisgICAgICAgICJnb29nbGV0ZXN0LW91dHB1dC10ZXN0LWdvbGRl
bi1saW4udHh0IiwKKyAgICAgICAgIjpnb29nbGV0ZXN0LW91dHB1dC10ZXN0XyIsCisgICAgXSwK
KyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAg
bmFtZSA9ICJnb29nbGV0ZXN0LWNvbG9yLXRlc3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAg
c3JjcyA9IFsiZ29vZ2xldGVzdC1jb2xvci10ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0
ZXN0Il0sCispCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWNvbG9yLXRlc3Qi
LAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtY29sb3ItdGVz
dC5weSJdLAorICAgIGRhdGEgPSBbIjpnb29nbGV0ZXN0LWNvbG9yLXRlc3RfIl0sCisgICAgZGVw
cyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAi
Z29vZ2xldGVzdC1lbnYtdmFyLXRlc3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9
IFsiZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3Qi
XSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtZW52LXZhci10ZXN0IiwK
KyAgICBzaXplID0gIm1lZGl1bSIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1lbnYtdmFyLXRl
c3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z29vZ2xldGVzdC1lbnYtdmFyLXRlc3RfIl0sCisgICAg
ZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUg
PSAiZ29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAg
c3JjcyA9IFsiZ29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsi
Ly86Z3Rlc3QiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtZmlsdGVy
LXVuaXR0ZXN0IiwKKyAgICBzaXplID0gIm1lZGl1bSIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVz
dC1maWx0ZXItdW5pdHRlc3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z29vZ2xldGVzdC1maWx0ZXIt
dW5pdHRlc3RfIl0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworCitj
Y19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRl
c3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1icmVhay1v
bi1mYWlsdXJlLXVuaXR0ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisK
KworCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVu
aXR0ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWJy
ZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z29vZ2xldGVzdC1i
cmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0XyJdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0
aWxzIl0sCispCisKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0X2Fzc2VydF9ieV9leGNl
cHRpb25fdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ3Rlc3RfYXNz
ZXJ0X2J5X2V4Y2VwdGlvbl90ZXN0LmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykK
KworCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVy
ZS10ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtdGhy
b3ctb24tZmFpbHVyZS10ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisK
K3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdCIs
CisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC10aHJvdy1vbi1m
YWlsdXJlLXRlc3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z29vZ2xldGVzdC10aHJvdy1vbi1mYWls
dXJlLXRlc3RfIl0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworCitj
Y19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfIiwK
KyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVu
aXR0ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisKK3B5X3Rlc3QoCisg
ICAgbmFtZSA9ICJnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3QiLAorICAgIHNpemUgPSAi
c21hbGwiLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdC5weSJd
LAorICAgIGRhdGEgPSBbIjpnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfIl0sCisgICAg
ZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUg
PSAiZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LXNo
dWZmbGUtdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0
KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3QiLAorICAgIHNpemUgPSAic21h
bGwiLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0LnB5Il0sCisgICAgZGF0
YSA9IFsiOmdvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0XyJdLAorICAgIGRlcHMgPSBbIjpndGVzdF90
ZXN0X3V0aWxzIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtY2F0
Y2gtZXhjZXB0aW9ucy1uby1leC10ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3Mg
PSBbImdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBb
Ii8vOmd0ZXN0X21haW4iXSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ29vZ2xldGVz
dC1jYXRjaC1leGNlcHRpb25zLWV4LXRlc3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3Jj
cyA9IFsiZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3RfLmNjIl0sCisgICAgY29wdHMg
PSBbIi1mZXhjZXB0aW9ucyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0X21haW4iXSwKKykKKwor
cHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0IiwK
KyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWNhdGNoLWV4Y2Vw
dGlvbnMtdGVzdC5weSJdLAorICAgIGRhdGEgPSBbCisgICAgICAgICI6Z29vZ2xldGVzdC1jYXRj
aC1leGNlcHRpb25zLWV4LXRlc3RfIiwKKyAgICAgICAgIjpnb29nbGV0ZXN0LWNhdGNoLWV4Y2Vw
dGlvbnMtbm8tZXgtdGVzdF8iLAorICAgIF0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRp
bHMiXSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ3Rlc3RfeG1sX291dHB1dF91bml0
dGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJndGVzdF94bWxfb3V0cHV0
X3VuaXR0ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisKK2NjX3Rlc3Qo
CisgICAgbmFtZSA9ICJndGVzdF9ub190ZXN0X3VuaXR0ZXN0IiwKKyAgICBzaXplID0gInNtYWxs
IiwKKyAgICBzcmNzID0gWyJndGVzdF9ub190ZXN0X3VuaXR0ZXN0LmNjIl0sCisgICAgZGVwcyA9
IFsiLy86Z3Rlc3QiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbCisgICAgICAg
ICJndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0LnB5IiwKKyAgICAgICAgImd0ZXN0X3htbF90ZXN0
X3V0aWxzLnB5IiwKKyAgICBdLAorICAgIGFyZ3MgPSBzZWxlY3QoeworICAgICAgICAiOmhhc19h
YnNsIjogW10sCisgICAgICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsiLS1ub19zdGFja3Ry
YWNlX3N1cHBvcnQiXSwKKyAgICB9KSwKKyAgICBkYXRhID0gWworICAgICAgICAjIFdlIGludm9r
ZSBndGVzdF9ub190ZXN0X3VuaXR0ZXN0IHRvIHZlcmlmeSB0aGUgWE1MIG91dHB1dAorICAgICAg
ICAjIHdoZW4gdGhlIHRlc3QgcHJvZ3JhbSBjb250YWlucyBubyB0ZXN0IGRlZmluaXRpb24uCisg
ICAgICAgICI6Z3Rlc3Rfbm9fdGVzdF91bml0dGVzdCIsCisgICAgICAgICI6Z3Rlc3RfeG1sX291
dHB1dF91bml0dGVzdF8iLAorICAgIF0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMi
XSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3Rf
IiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ3Rlc3RfeG1sX291dGZpbGUxX3Rl
c3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQorCitjY19iaW5hcnko
CisgICAgbmFtZSA9ICJndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0g
MSwKKyAgICBzcmNzID0gWyJndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8uY2MiXSwKKyAgICBkZXBz
ID0gWyIvLzpndGVzdF9tYWluIl0sCispCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJndGVzdF94
bWxfb3V0ZmlsZXNfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAg
ICAgICAgImd0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5IiwKKyAgICAgICAgImd0ZXN0X3htbF90
ZXN0X3V0aWxzLnB5IiwKKyAgICBdLAorICAgIGRhdGEgPSBbCisgICAgICAgICI6Z3Rlc3RfeG1s
X291dGZpbGUxX3Rlc3RfIiwKKyAgICAgICAgIjpndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8iLAor
ICAgIF0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworY2NfYmluYXJ5
KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3RfIiwKKyAgICB0ZXN0
b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3RfLmNj
Il0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0g
Imdvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0IiwKKyAgICBzaXplID0gIm1lZGl1bSIsCisg
ICAgc3JjcyA9IFsiZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3QucHkiXSwKKyAgICBkYXRh
ID0gWyJnb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rl
c3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJndGVzdF90ZXN0
YnJpZGdlX3Rlc3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ3Rlc3RfdGVz
dGJyaWRnZV90ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0X21haW4iXSwKKykKKwor
IyBUZXN0cyB0aGF0IGZpbHRlcmluZyB2aWEgdGVzdGJyaWRnZSB3b3JrcworcHlfdGVzdCgKKyAg
ICBuYW1lID0gImd0ZXN0X3Rlc3RicmlkZ2VfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisg
ICAgc3JjcyA9IFsiZ3Rlc3RfdGVzdGJyaWRnZV90ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmd0
ZXN0X3Rlc3RicmlkZ2VfdGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJd
LAorKQorCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWpzb24tb3V0ZmlsZXMt
dGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImdvb2ds
ZXRlc3QtanNvbi1vdXRmaWxlcy10ZXN0LnB5IiwKKyAgICAgICAgImd0ZXN0X2pzb25fdGVzdF91
dGlscy5weSIsCisgICAgXSwKKyAgICBkYXRhID0gWworICAgICAgICAiOmd0ZXN0X3htbF9vdXRm
aWxlMV90ZXN0XyIsCisgICAgICAgICI6Z3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfIiwKKyAgICBd
LAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK3B5X3Rlc3QoCisgICAg
bmFtZSA9ICJnb29nbGV0ZXN0LWpzb24tb3V0cHV0LXVuaXR0ZXN0IiwKKyAgICBzaXplID0gIm1l
ZGl1bSIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImdvb2dsZXRlc3QtanNvbi1vdXRwdXQtdW5p
dHRlc3QucHkiLAorICAgICAgICAiZ3Rlc3RfanNvbl90ZXN0X3V0aWxzLnB5IiwKKyAgICBdLAor
ICAgIGRhdGEgPSBbCisgICAgICAgICMgV2UgaW52b2tlIGd0ZXN0X25vX3Rlc3RfdW5pdHRlc3Qg
dG8gdmVyaWZ5IHRoZSBKU09OIG91dHB1dAorICAgICAgICAjIHdoZW4gdGhlIHRlc3QgcHJvZ3Jh
bSBjb250YWlucyBubyB0ZXN0IGRlZmluaXRpb24uCisgICAgICAgICI6Z3Rlc3Rfbm9fdGVzdF91
bml0dGVzdCIsCisgICAgICAgICI6Z3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8iLAorICAgIF0s
CisgICAgYXJncyA9IHNlbGVjdCh7CisgICAgICAgICI6aGFzX2Fic2wiOiBbXSwKKyAgICAgICAg
Ii8vY29uZGl0aW9uczpkZWZhdWx0IjogWyItLW5vX3N0YWNrdHJhY2Vfc3VwcG9ydCJdLAorICAg
IH0pLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisjIFZlcmlmaWVzIGlu
dGVyYWN0aW9uIG9mIGRlYXRoIHRlc3RzIGFuZCBleGNlcHRpb25zLgorY2NfdGVzdCgKKyAgICBu
YW1lID0gImdvb2dsZXRlc3QtZGVhdGgtdGVzdF9leF9jYXRjaF90ZXN0IiwKKyAgICBzaXplID0g
Im1lZGl1bSIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2Mi
XSwKKyAgICBjb3B0cyA9IFsiLWZleGNlcHRpb25zIl0sCisgICAgZGVmaW5lcyA9IFsiR1RFU1Rf
RU5BQkxFX0NBVENIX0VYQ0VQVElPTlNfPTEiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAor
KQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxp
ZC1uYW1lMS10ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImdvb2dsZXRl
c3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86
Z3Rlc3QiXSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1wYXJhbS10
ZXN0LWludmFsaWQtbmFtZTItdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0g
WyJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0Xy5jYyJdLAorICAgIGRl
cHMgPSBbIi8vOmd0ZXN0Il0sCispCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0
LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMS10ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAg
ICBzcmNzID0gWyJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMS10ZXN0LnB5Il0s
CisgICAgZGF0YSA9IFsiOmdvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3Rf
Il0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworcHlfdGVzdCgKKyAg
ICBuYW1lID0gImdvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRlc3QiLAorICAg
IHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZh
bGlkLW5hbWUyLXRlc3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z29vZ2xldGVzdC1wYXJhbS10ZXN0
LWludmFsaWQtbmFtZTItdGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJd
LAorKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0
LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
NWRmYmM2OTNiNDNhMWIxOWUzODQ3ZGNiY2FiODg2ZDJmNGQyOGU2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1
cmUtdW5pdHRlc3QucHkKQEAgLTAsMCArMSwyMDggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgor
IworIyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyBicmVh
ay1vbi1mYWlsdXJlIG1vZGUuCisKK0EgdXNlciBjYW4gYXNrIEdvb2dsZSBUZXN0IHRvIHNlZy1m
YXVsdCB3aGVuIGFuIGFzc2VydGlvbiBmYWlscywgdXNpbmcKK2VpdGhlciB0aGUgR1RFU1RfQlJF
QUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUKKy0tZ3Rlc3RfYnJlYWtf
b25fZmFpbHVyZSBmbGFnLiAgVGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5Citi
eSBpbnZva2luZyBnb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3RfIChhIHByb2dy
YW0gd3JpdHRlbiB3aXRoCitHb29nbGUgVGVzdCkgd2l0aCBkaWZmZXJlbnQgZW52aXJvbm1lbnRz
IGFuZCBjb21tYW5kIGxpbmUgZmxhZ3MuCisiIiIKKworaW1wb3J0IG9zCitpbXBvcnQgZ3Rlc3Rf
dGVzdF91dGlscworCisjIENvbnN0YW50cy4KKworSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250
JworCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRo
ZSBicmVhay1vbi1mYWlsdXJlIG1vZGUuCitCUkVBS19PTl9GQUlMVVJFX0VOVl9WQVIgPSAnR1RF
U1RfQlJFQUtfT05fRkFJTFVSRScKKworIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgZm9yIGVuYWJs
aW5nL2Rpc2FibGluZyB0aGUgYnJlYWstb24tZmFpbHVyZSBtb2RlLgorQlJFQUtfT05fRkFJTFVS
RV9GTEFHID0gJ2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmUnCisKKyMgVGhlIGVudmlyb25tZW50IHZh
cmlhYmxlIGZvciBlbmFibGluZy9kaXNhYmxpbmcgdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZS4K
K1RIUk9XX09OX0ZBSUxVUkVfRU5WX1ZBUiA9ICdHVEVTVF9USFJPV19PTl9GQUlMVVJFJworCisj
IFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBjYXRj
aC1leGNlcHRpb25zIG1vZGUuCitDQVRDSF9FWENFUFRJT05TX0VOVl9WQVIgPSAnR1RFU1RfQ0FU
Q0hfRVhDRVBUSU9OUycKKworIyBQYXRoIHRvIHRoZSBnb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1
cmUtdW5pdHRlc3RfIHByb2dyYW0uCitFWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVz
dEV4ZWN1dGFibGVQYXRoKAorICAgICdnb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRl
c3RfJykKKworCitlbnZpcm9uID0gZ3Rlc3RfdGVzdF91dGlscy5lbnZpcm9uCitTZXRFbnZWYXIg
PSBndGVzdF90ZXN0X3V0aWxzLlNldEVudlZhcgorCisjIFRlc3RzIGluIHRoaXMgZmlsZSBydW4g
YSBHb29nbGUtVGVzdC1iYXNlZCB0ZXN0IHByb2dyYW0gYW5kIGV4cGVjdCBpdAorIyB0byB0ZXJt
aW5hdGUgcHJlbWF0dXJlbHkuICBUaGVyZWZvcmUgdGhleSBhcmUgaW5jb21wYXRpYmxlIHdpdGgK
KyMgdGhlIHByZW1hdHVyZS1leGl0LWZpbGUgcHJvdG9jb2wgYnkgZGVzaWduLiAgVW5zZXQgdGhl
CisjIHByZW1hdHVyZS1leGl0IGZpbGVwYXRoIHRvIHByZXZlbnQgR29vZ2xlIFRlc3QgZnJvbSBj
cmVhdGluZworIyB0aGUgZmlsZS4KK1NldEVudlZhcihndGVzdF90ZXN0X3V0aWxzLlBSRU1BVFVS
RV9FWElUX0ZJTEVfRU5WX1ZBUiwgTm9uZSkKKworCitkZWYgUnVuKGNvbW1hbmQpOgorICAiIiJS
dW5zIGEgY29tbWFuZDsgcmV0dXJucyAxIGlmIGl0IHdhcyBraWxsZWQgYnkgYSBzaWduYWwsIG9y
IDAgb3RoZXJ3aXNlLiIiIgorCisgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29t
bWFuZCwgZW52PWVudmlyb24pCisgIGlmIHAudGVybWluYXRlZF9ieV9zaWduYWw6CisgICAgcmV0
dXJuIDEKKyAgZWxzZToKKyAgICByZXR1cm4gMAorCisKKyMgVGhlIHRlc3RzLgorCisKK2NsYXNz
IEdUZXN0QnJlYWtPbkZhaWx1cmVVbml0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToK
KyAgIiIiVGVzdHMgdXNpbmcgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQg
dmFyaWFibGUgb3IKKyAgdGhlIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnIHRvIHR1cm4g
YXNzZXJ0aW9uIGZhaWx1cmVzIGludG8KKyAgc2VnbWVudGF0aW9uIGZhdWx0cy4KKyAgIiIiCisK
KyAgZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBlbnZfdmFyX3ZhbHVlLCBmbGFnX3ZhbHVlLCBleHBl
Y3Rfc2VnX2ZhdWx0KToKKyAgICAiIiJSdW5zIGdvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11
bml0dGVzdF8gYW5kIHZlcmlmaWVzIHRoYXQgaXQgZG9lcworICAgIChvciBkb2VzIG5vdCkgaGF2
ZSBhIHNlZy1mYXVsdC4KKworICAgIEFyZ3M6CisgICAgICBlbnZfdmFyX3ZhbHVlOiAgICB2YWx1
ZSBvZiB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudAorICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyaWFibGU7IE5vbmUgaWYgdGhlIHZhcmlhYmxlIHNob3VsZCBiZSB1bnNl
dC4KKyAgICAgIGZsYWdfdmFsdWU6ICAgICAgIHZhbHVlIG9mIHRoZSAtLWd0ZXN0X2JyZWFrX29u
X2ZhaWx1cmUgZmxhZzsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUgaWYgdGhlIGZsYWcg
c2hvdWxkIG5vdCBiZSBwcmVzZW50LgorICAgICAgZXhwZWN0X3NlZ19mYXVsdDogMSBpZiB0aGUg
cHJvZ3JhbSBpcyBleHBlY3RlZCB0byBnZW5lcmF0ZSBhIHNlZy1mYXVsdDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIDAgb3RoZXJ3aXNlLgorICAgICIiIgorCisgICAgU2V0RW52VmFyKEJSRUFL
X09OX0ZBSUxVUkVfRU5WX1ZBUiwgZW52X3Zhcl92YWx1ZSkKKworICAgIGlmIGVudl92YXJfdmFs
dWUgaXMgTm9uZToKKyAgICAgIGVudl92YXJfdmFsdWVfbXNnID0gJyBpcyBub3Qgc2V0JworICAg
IGVsc2U6CisgICAgICBlbnZfdmFyX3ZhbHVlX21zZyA9ICc9JyArIGVudl92YXJfdmFsdWUKKwor
ICAgIGlmIGZsYWdfdmFsdWUgaXMgTm9uZToKKyAgICAgIGZsYWcgPSAnJworICAgIGVsaWYgZmxh
Z192YWx1ZSA9PSAnMCc6CisgICAgICBmbGFnID0gJy0tJXM9MCcgJSBCUkVBS19PTl9GQUlMVVJF
X0ZMQUcKKyAgICBlbHNlOgorICAgICAgZmxhZyA9ICctLSVzJyAlIEJSRUFLX09OX0ZBSUxVUkVf
RkxBRworCisgICAgY29tbWFuZCA9IFtFWEVfUEFUSF0KKyAgICBpZiBmbGFnOgorICAgICAgY29t
bWFuZC5hcHBlbmQoZmxhZykKKworICAgIGlmIGV4cGVjdF9zZWdfZmF1bHQ6CisgICAgICBzaG91
bGRfb3Jfbm90ID0gJ3Nob3VsZCcKKyAgICBlbHNlOgorICAgICAgc2hvdWxkX29yX25vdCA9ICdz
aG91bGQgbm90JworCisgICAgaGFzX3NlZ19mYXVsdCA9IFJ1bihjb21tYW5kKQorCisgICAgU2V0
RW52VmFyKEJSRUFLX09OX0ZBSUxVUkVfRU5WX1ZBUiwgTm9uZSkKKworICAgIG1zZyA9ICgnd2hl
biAlcyVzLCBhbiBhc3NlcnRpb24gZmFpbHVyZSBpbiAiJXMiICVzIGNhdXNlIGEgc2VnLWZhdWx0
LicgJQorICAgICAgICAgICAoQlJFQUtfT05fRkFJTFVSRV9FTlZfVkFSLCBlbnZfdmFyX3ZhbHVl
X21zZywgJyAnLmpvaW4oY29tbWFuZCksCisgICAgICAgICAgICBzaG91bGRfb3Jfbm90KSkKKyAg
ICBzZWxmLmFzc2VydF8oaGFzX3NlZ19mYXVsdCA9PSBleHBlY3Rfc2VnX2ZhdWx0LCBtc2cpCisK
KyAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3Ioc2VsZik6CisgICAgIiIiVGVzdHMgdGhlIGJlaGF2
aW9yIG9mIHRoZSBkZWZhdWx0IG1vZGUuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZf
dmFyX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT1Ob25lLAor
ICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MCkKKworICBkZWYgdGVzdEVu
dlZhcihzZWxmKToKKyAgICAiIiJUZXN0cyB1c2luZyB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVS
RSBlbnZpcm9ubWVudCB2YXJpYWJsZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92
YXJfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCisgICAgc2VsZi5SdW5BbmRW
ZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1
ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKKworICBk
ZWYgdGVzdEZsYWcoc2VsZik6CisgICAgIiIiVGVzdHMgdXNpbmcgdGhlIC0tZ3Rlc3RfYnJlYWtf
b25fZmFpbHVyZSBmbGFnLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1
ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAnLAorICAgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MCkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShl
bnZfdmFyX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScs
CisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0xKQorCisgIGRlZiB0ZXN0
RmxhZ092ZXJyaWRlc0VudlZhcihzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0IHRoZSBmbGFnIG92
ZXJyaWRlcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZl
cmlmeShlbnZfdmFyX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVl
PScwJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCisgICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0x
KQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAorICAgICAgICAgICAg
ICAgICAgICAgIGZsYWdfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9z
ZWdfZmF1bHQ9MCkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKKyAg
ICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAg
ICBleHBlY3Rfc2VnX2ZhdWx0PTEpCisKKyAgZGVmIHRlc3RCcmVha09uRmFpbHVyZU92ZXJyaWRl
c1Rocm93T25GYWlsdXJlKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgZ3Rlc3RfYnJlYWtfb25f
ZmFpbHVyZSBvdmVycmlkZXMgZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZS4iIiIKKworICAgIFNldEVu
dlZhcihUSFJPV19PTl9GQUlMVVJFX0VOVl9WQVIsICcxJykKKyAgICB0cnk6CisgICAgICBzZWxm
LlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAg
ICBmbGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1
bHQ9MSkKKyAgICBmaW5hbGx5OgorICAgICAgU2V0RW52VmFyKFRIUk9XX09OX0ZBSUxVUkVfRU5W
X1ZBUiwgTm9uZSkKKworICBpZiBJU19XSU5ET1dTOgorICAgIGRlZiB0ZXN0Q2F0Y2hFeGNlcHRp
b25zRG9lc05vdEludGVyZmVyZShzZWxmKToKKyAgICAgICIiIlRlc3RzIHRoYXQgZ3Rlc3RfY2F0
Y2hfZXhjZXB0aW9ucyBkb2Vzbid0IGludGVyZmVyZS4iIiIKKworICAgICAgU2V0RW52VmFyKENB
VENIX0VYQ0VQVElPTlNfRU5WX1ZBUiwgJzEnKQorICAgICAgdHJ5OgorICAgICAgICBzZWxmLlJ1
bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1
bHQ9MSkKKyAgICAgIGZpbmFsbHk6CisgICAgICAgIFNldEVudlZhcihDQVRDSF9FWENFUFRJT05T
X0VOVl9WQVIsIE5vbmUpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rlc3Rf
dGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0Xy5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mODQ5NTdhMmQwM2I1NjI2MGM4ZTJjMGFlOGY1YTI3YmViNmY2Mzc4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0
LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3RfLmNjCkBAIC0wLDAgKzEsODYgQEAKKy8vIENvcHly
aWdodCAyMDA2LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0
aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
Ly8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBVbml0IHRlc3QgZm9y
IEdvb2dsZSBUZXN0J3MgYnJlYWstb24tZmFpbHVyZSBtb2RlLgorLy8KKy8vIEEgdXNlciBjYW4g
YXNrIEdvb2dsZSBUZXN0IHRvIHNlZy1mYXVsdCB3aGVuIGFuIGFzc2VydGlvbiBmYWlscywgdXNp
bmcKKy8vIGVpdGhlciB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2YXJp
YWJsZSBvciB0aGUKKy8vIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnLiAgVGhpcyBmaWxl
IGlzIHVzZWQgZm9yIHRlc3Rpbmcgc3VjaAorLy8gZnVuY3Rpb25hbGl0eS4KKy8vCisvLyBUaGlz
IHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRob24gdW5pdCB0ZXN0LiAgSXQgaXMK
Ky8vIGV4cGVjdGVkIHRvIGZhaWwuICBEb24ndCBydW4gaXQgZGlyZWN0bHkuCisKKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgorCisjaWYgR1RFU1RfT1NfV0lORE9XUworIyBpbmNsdWRlIDx3aW5k
b3dzLmg+CisjIGluY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisKK25hbWVzcGFjZSB7CisKKy8v
IEEgdGVzdCB0aGF0J3MgZXhwZWN0ZWQgdG8gZmFpbC4KK1RFU1QoRm9vLCBCYXIpIHsKKyAgRVhQ
RUNUX0VRKDIsIDMpOworfQorCisjaWYgR1RFU1RfSEFTX1NFSCAmJiAhR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKKy8vIE9uIFdpbmRvd3MgTW9iaWxlIGdsb2JhbCBleGNlcHRpb24gaGFuZGxlcnMg
YXJlIG5vdCBzdXBwb3J0ZWQuCitMT05HIFdJTkFQSSBFeGl0V2l0aEV4Y2VwdGlvbkNvZGUoCisg
ICAgc3RydWN0IF9FWENFUFRJT05fUE9JTlRFUlMqIGV4Y2VwdGlvbl9wb2ludGVycykgeworICBl
eGl0KGV4Y2VwdGlvbl9wb2ludGVycy0+RXhjZXB0aW9uUmVjb3JkLT5FeGNlcHRpb25Db2RlKTsK
K30KKyNlbmRpZgorCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg
Kiphcmd2KSB7CisjaWYgR1RFU1RfT1NfV0lORE9XUworICAvLyBTdXBwcmVzc2VzIGRpc3BsYXkg
b2YgdGhlIFdpbmRvd3MgZXJyb3IgZGlhbG9nIHVwb24gZW5jb3VudGVyaW5nCisgIC8vIGEgZ2Vu
ZXJhbCBwcm90ZWN0aW9uIGZhdWx0IChzZWdtZW50IHZpb2xhdGlvbikuCisgIFNldEVycm9yTW9k
ZShTRU1fTk9HUEZBVUxURVJST1JCT1ggfCBTRU1fRkFJTENSSVRJQ0FMRVJST1JTKTsKKworIyBp
ZiBHVEVTVF9IQVNfU0VIICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCisgIC8vIFRoZSBk
ZWZhdWx0IHVuaGFuZGxlZCBleGNlcHRpb24gZmlsdGVyIGRvZXMgbm90IGFsd2F5cyBleGl0Cisg
IC8vIHdpdGggdGhlIGV4Y2VwdGlvbiBjb2RlIGFzIGV4aXQgY29kZSAtIGZvciBleGFtcGxlIGl0
IGV4aXRzIHdpdGgKKyAgLy8gMCBmb3IgRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT04gYW5kIDEg
Zm9yIEVYQ0VQVElPTl9CUkVBS1BPSU5UCisgIC8vIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBjb21w
aWxlZCBpbiBkZWJ1ZyBtb2RlLiBUaHVzIHdlIHVzZSBvdXIgb3duCisgIC8vIGZpbHRlciB3aGlj
aCBhbHdheXMgZXhpdHMgd2l0aCB0aGUgZXhjZXB0aW9uIGNvZGUgZm9yIHVuaGFuZGxlZAorICAv
LyBleGNlcHRpb25zLgorICBTZXRVbmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIoRXhpdFdpdGhFeGNl
cHRpb25Db2RlKTsKKworIyBlbmRpZgorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisgIHRl
c3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICByZXR1cm4gUlVOX0FMTF9U
RVNUUygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3QucHkKbmV3IGZpbGUgbW9kZSAx
MDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQ0
OWMxMDIzYzUwZWYxNjgzM2U2YjhlMmE4ZTYyMDI0ODQzMmFjMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25z
LXRlc3QucHkKQEAgLTAsMCArMSwyMzMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBD
b3B5cmlnaHQgMjAxMCBHb29nbGUgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKyIiIlRlc3RzIEdvb2dsZSBUZXN0J3MgZXhjZXB0aW9uIGNhdGNoaW5nIGJl
aGF2aW9yLgorCitUaGlzIHNjcmlwdCBpbnZva2VzIGdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9u
cy10ZXN0XyBhbmQKK2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy1leC10ZXN0XyAocHJvZ3Jh
bXMgd3JpdHRlbiB3aXRoCitHb29nbGUgVGVzdCkgYW5kIHZlcmlmaWVzIHRoZWlyIG91dHB1dC4K
KyIiIgorCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCisjIENvbnN0YW50cy4KK0ZMQUdfUFJF
RklYID0gJy0tZ3Rlc3RfJworTElTVF9URVNUU19GTEFHID0gRkxBR19QUkVGSVggKyAnbGlzdF90
ZXN0cycKK05PX0NBVENIX0VYQ0VQVElPTlNfRkxBRyA9IEZMQUdfUFJFRklYICsgJ2NhdGNoX2V4
Y2VwdGlvbnM9MCcKK0ZJTFRFUl9GTEFHID0gRkxBR19QUkVGSVggKyAnZmlsdGVyJworCisjIFBh
dGggdG8gdGhlIGdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy1leC10ZXN0XyBiaW5hcnksIGNv
bXBpbGVkIHdpdGgKKyMgZXhjZXB0aW9ucyBlbmFibGVkLgorRVhfRVhFX1BBVEggPSBndGVzdF90
ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKKyAgICAnZ29vZ2xldGVzdC1jYXRjaC1l
eGNlcHRpb25zLWV4LXRlc3RfJykKKworIyBQYXRoIHRvIHRoZSBnb29nbGV0ZXN0LWNhdGNoLWV4
Y2VwdGlvbnMtdGVzdF8gYmluYXJ5LCBjb21waWxlZCB3aXRoCisjIGV4Y2VwdGlvbnMgZGlzYWJs
ZWQuCitFWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKAor
ICAgICdnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtbm8tZXgtdGVzdF8nKQorCitlbnZpcm9u
ID0gZ3Rlc3RfdGVzdF91dGlscy5lbnZpcm9uCitTZXRFbnZWYXIgPSBndGVzdF90ZXN0X3V0aWxz
LlNldEVudlZhcgorCisjIFRlc3RzIGluIHRoaXMgZmlsZSBydW4gYSBHb29nbGUtVGVzdC1iYXNl
ZCB0ZXN0IHByb2dyYW0gYW5kIGV4cGVjdCBpdAorIyB0byB0ZXJtaW5hdGUgcHJlbWF0dXJlbHku
ICBUaGVyZWZvcmUgdGhleSBhcmUgaW5jb21wYXRpYmxlIHdpdGgKKyMgdGhlIHByZW1hdHVyZS1l
eGl0LWZpbGUgcHJvdG9jb2wgYnkgZGVzaWduLiAgVW5zZXQgdGhlCisjIHByZW1hdHVyZS1leGl0
IGZpbGVwYXRoIHRvIHByZXZlbnQgR29vZ2xlIFRlc3QgZnJvbSBjcmVhdGluZworIyB0aGUgZmls
ZS4KK1NldEVudlZhcihndGVzdF90ZXN0X3V0aWxzLlBSRU1BVFVSRV9FWElUX0ZJTEVfRU5WX1ZB
UiwgTm9uZSkKKworVEVTVF9MSVNUID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAorICAg
IFtFWEVfUEFUSCwgTElTVF9URVNUU19GTEFHXSwgZW52PWVudmlyb24pLm91dHB1dAorCitTVVBQ
T1JUU19TRUhfRVhDRVBUSU9OUyA9ICdUaHJvd3NTZWhFeGNlcHRpb24nIGluIFRFU1RfTElTVAor
CitpZiBTVVBQT1JUU19TRUhfRVhDRVBUSU9OUzoKKyAgQklOQVJZX09VVFBVVCA9IGd0ZXN0X3Rl
c3RfdXRpbHMuU3VicHJvY2VzcyhbRVhFX1BBVEhdLCBlbnY9ZW52aXJvbikub3V0cHV0CisKK0VY
X0JJTkFSWV9PVVRQVVQgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgW0VYX0VY
RV9QQVRIXSwgZW52PWVudmlyb24pLm91dHB1dAorCisKKyMgVGhlIHRlc3RzLgoraWYgU1VQUE9S
VFNfU0VIX0VYQ0VQVElPTlM6CisgICMgcHlsaW50OmRpc2FibGUtbXNnPUM2MzAyCisgIGNsYXNz
IENhdGNoU2VoRXhjZXB0aW9uc1Rlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICAg
IiIiVGVzdHMgZXhjZXB0aW9uLWNhdGNoaW5nIGJlaGF2aW9yLiIiIgorCisKKyAgICBkZWYgVGVz
dFNlaEV4Y2VwdGlvbnMoc2VsZiwgdGVzdF9vdXRwdXQpOgorICAgICAgc2VsZi5hc3NlcnRfKCdT
RUggZXhjZXB0aW9uIHdpdGggY29kZSAweDJhIHRocm93biAnCisgICAgICAgICAgICAgICAgICAg
J2luIHRoZSB0ZXN0IGZpeHR1cmVcJ3MgY29uc3RydWN0b3InCisgICAgICAgICAgICAgICAgICAg
aW4gdGVzdF9vdXRwdXQpCisgICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBj
b2RlIDB4MmEgdGhyb3duICcKKyAgICAgICAgICAgICAgICAgICAnaW4gdGhlIHRlc3QgZml4dHVy
ZVwncyBkZXN0cnVjdG9yJworICAgICAgICAgICAgICAgICAgIGluIHRlc3Rfb3V0cHV0KQorICAg
ICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGggY29kZSAweDJhIHRocm93biBpbiBT
ZXRVcFRlc3RDYXNlKCknCisgICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCisgICAg
ICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhyb3duIGluIFRl
YXJEb3duVGVzdENhc2UoKScKKyAgICAgICAgICAgICAgICAgICBpbiB0ZXN0X291dHB1dCkKKyAg
ICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24gaW4g
U2V0VXAoKScKKyAgICAgICAgICAgICAgICAgICBpbiB0ZXN0X291dHB1dCkKKyAgICAgIHNlbGYu
YXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24gaW4gVGVhckRvd24o
KScKKyAgICAgICAgICAgICAgICAgICBpbiB0ZXN0X291dHB1dCkKKyAgICAgIHNlbGYuYXNzZXJ0
XygnU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24gaW4gdGhlIHRlc3QgYm9keScK
KyAgICAgICAgICAgICAgICAgICBpbiB0ZXN0X291dHB1dCkKKworICAgIGRlZiB0ZXN0Q2F0Y2hl
c1NlaEV4Y2VwdGlvbnNXaXRoQ3h4RXhjZXB0aW9uc0VuYWJsZWQoc2VsZik6CisgICAgICBzZWxm
LlRlc3RTZWhFeGNlcHRpb25zKEVYX0JJTkFSWV9PVVRQVVQpCisKKyAgICBkZWYgdGVzdENhdGNo
ZXNTZWhFeGNlcHRpb25zV2l0aEN4eEV4Y2VwdGlvbnNEaXNhYmxlZChzZWxmKToKKyAgICAgIHNl
bGYuVGVzdFNlaEV4Y2VwdGlvbnMoQklOQVJZX09VVFBVVCkKKworCitjbGFzcyBDYXRjaEN4eEV4
Y2VwdGlvbnNUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJUZXN0cyBDKysg
ZXhjZXB0aW9uLWNhdGNoaW5nIGJlaGF2aW9yLgorCisgICAgIFRlc3RzIGluIHRoaXMgdGVzdCBj
YXNlIHZlcmlmeSB0aGF0OgorICAgICAqIEMrKyBleGNlcHRpb25zIGFyZSBjYXVnaHQgYW5kIGxv
Z2dlZCBhcyBDKysgKG5vdCBTRUgpIGV4Y2VwdGlvbnMKKyAgICAgKiBFeGNlcHRpb24gdGhyb3du
IGFmZmVjdCB0aGUgcmVtYWluZGVyIG9mIHRoZSB0ZXN0IHdvcmsgZmxvdyBpbiB0aGUKKyAgICAg
ICBleHBlY3RlZCBtYW5uZXIuCisgICIiIgorCisgIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlv
bnNJbkZpeHR1cmVDb25zdHJ1Y3RvcihzZWxmKToKKyAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNl
cHRpb24gd2l0aCBkZXNjcmlwdGlvbiAnCisgICAgICAgICAgICAgICAgICciU3RhbmRhcmQgQysr
IGV4Y2VwdGlvbiIgdGhyb3duICcKKyAgICAgICAgICAgICAgICAgJ2luIHRoZSB0ZXN0IGZpeHR1
cmVcJ3MgY29uc3RydWN0b3InCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQp
CisgICAgc2VsZi5hc3NlcnRfKCd1bmV4cGVjdGVkJyBub3QgaW4gRVhfQklOQVJZX09VVFBVVCwK
KyAgICAgICAgICAgICAgICAgJ1RoaXMgZmFpbHVyZSBiZWxvbmdzIGluIHRoaXMgdGVzdCBvbmx5
IGlmICcKKyAgICAgICAgICAgICAgICAgJyJDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCIg
KG5vIHF1b3RlcykgJworICAgICAgICAgICAgICAgICAnYXBwZWFycyBvbiB0aGUgc2FtZSBsaW5l
IGFzIHdvcmRzICJjYWxsZWQgdW5leHBlY3RlZGx5IicpCisKKyAgaWYgKCdDeHhFeGNlcHRpb25J
bkRlc3RydWN0b3JUZXN0LlRocm93c0V4Y2VwdGlvbkluRGVzdHJ1Y3RvcicgaW4KKyAgICAgIEVY
X0JJTkFSWV9PVVRQVVQpOgorCisgICAgZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luRml4
dHVyZURlc3RydWN0b3Ioc2VsZik6CisgICAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24g
d2l0aCBkZXNjcmlwdGlvbiAnCisgICAgICAgICAgICAgICAgICAgJyJTdGFuZGFyZCBDKysgZXhj
ZXB0aW9uIiB0aHJvd24gJworICAgICAgICAgICAgICAgICAgICdpbiB0aGUgdGVzdCBmaXh0dXJl
XCdzIGRlc3RydWN0b3InCisgICAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkK
KyAgICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdDo6VGVhckRv
d25UZXN0Q2FzZSgpICcKKyAgICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicK
KyAgICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorCisgIGRlZiB0ZXN0Q2F0
Y2hlc0N4eEV4Y2VwdGlvbnNJblNldFVwVGVzdENhc2Uoc2VsZik6CisgICAgc2VsZi5hc3NlcnRf
KCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gIlN0YW5kYXJkIEMrKyBleGNlcHRpb24i
JworICAgICAgICAgICAgICAgICAnIHRocm93biBpbiBTZXRVcFRlc3RDYXNlKCknCisgICAgICAg
ICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNl
cHRpb25JbkNvbnN0cnVjdG9yVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICcKKyAgICAgICAgICAg
ICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFS
WV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VU
ZXN0IGNvbnN0cnVjdG9yICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4n
CisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRf
KCdDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0IGRlc3RydWN0b3IgJworICAgICAgICAg
ICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklO
QVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2Fz
ZVRlc3Q6OlNldFVwKCkgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicK
KyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8o
J0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3Q6OlRlYXJEb3duKCkgJworICAgICAgICAg
ICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklO
QVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2Fz
ZVRlc3QgdGVzdCBib2R5ICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4n
CisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisKKyAgZGVmIHRlc3RDYXRj
aGVzQ3h4RXhjZXB0aW9uc0luVGVhckRvd25UZXN0Q2FzZShzZWxmKToKKyAgICBzZWxmLmFzc2Vy
dF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlvbiAiU3RhbmRhcmQgQysrIGV4Y2VwdGlv
biInCisgICAgICAgICAgICAgICAgICcgdGhyb3duIGluIFRlYXJEb3duVGVzdENhc2UoKScKKyAg
ICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKworICBkZWYgdGVzdENhdGNoZXND
eHhFeGNlcHRpb25zSW5TZXRVcChzZWxmKToKKyAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRp
b24gd2l0aCBkZXNjcmlwdGlvbiAiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiInCisgICAgICAgICAg
ICAgICAgICcgdGhyb3duIGluIFNldFVwKCknCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFS
WV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVzdDo6VGVh
ckRvd25UZXN0Q2FzZSgpICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4n
CisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRf
KCdDeHhFeGNlcHRpb25JblNldFVwVGVzdCBkZXN0cnVjdG9yICcKKyAgICAgICAgICAgICAgICAg
J2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQ
VVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVzdDo6VGVhckRvd24o
KSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAg
ICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygndW5leHBlY3RlZCcg
bm90IGluIEVYX0JJTkFSWV9PVVRQVVQsCisgICAgICAgICAgICAgICAgICdUaGlzIGZhaWx1cmUg
YmVsb25ncyBpbiB0aGlzIHRlc3Qgb25seSBpZiAnCisgICAgICAgICAgICAgICAgICciQ3h4RXhj
ZXB0aW9uSW5TZXRVcFRlc3QiIChubyBxdW90ZXMpICcKKyAgICAgICAgICAgICAgICAgJ2FwcGVh
cnMgb24gdGhlIHNhbWUgbGluZSBhcyB3b3JkcyAiY2FsbGVkIHVuZXhwZWN0ZWRseSInKQorCisg
IGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJblRlYXJEb3duKHNlbGYpOgorICAgIHNlbGYu
YXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICJTdGFuZGFyZCBDKysgZXhj
ZXB0aW9uIicKKyAgICAgICAgICAgICAgICAgJyB0aHJvd24gaW4gVGVhckRvd24oKScKKyAgICAg
ICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4
Y2VwdGlvbkluVGVhckRvd25UZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgJworICAgICAgICAgICAg
ICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZ
X09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0IGRl
c3RydWN0b3IgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAg
ICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKworICBkZWYgdGVzdENhdGNoZXNDeHhF
eGNlcHRpb25zSW5UZXN0Qm9keShzZWxmKToKKyAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRp
b24gd2l0aCBkZXNjcmlwdGlvbiAiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiInCisgICAgICAgICAg
ICAgICAgICcgdGhyb3duIGluIHRoZSB0ZXN0IGJvZHknCisgICAgICAgICAgICAgICAgIGluIEVY
X0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblRlc3RCb2R5
VGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBl
eHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2Vs
Zi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdCBkZXN0cnVjdG9yICcKKyAgICAg
ICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVY
X0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblRlc3RCb2R5
VGVzdDo6VGVhckRvd24oKSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQu
JworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorCisgIGRlZiB0ZXN0Q2F0
Y2hlc05vblN0ZEN4eEV4Y2VwdGlvbnMoc2VsZik6CisgICAgc2VsZi5hc3NlcnRfKCdVbmtub3du
IEMrKyBleGNlcHRpb24gdGhyb3duIGluIHRoZSB0ZXN0IGJvZHknCisgICAgICAgICAgICAgICAg
IGluIEVYX0JJTkFSWV9PVVRQVVQpCisKKyAgZGVmIHRlc3RVbmhhbmRsZWRDeHhFeGNlcHRpb25z
QWJvcnRUaGVQcm9ncmFtKHNlbGYpOgorICAgICMgRmlsdGVycyBvdXQgU0VIIGV4Y2VwdGlvbiB0
ZXN0cyBvbiBXaW5kb3dzLiBVbmhhbmRsZWQgU0VIIGV4Y2VwdGlvbnMKKyAgICAjIGNhdXNlIHRl
c3RzIHRvIHNob3cgcG9wLXVwIHdpbmRvd3MgdGhlcmUuCisgICAgRklUTEVSX09VVF9TRUhfVEVT
VFNfRkxBRyA9IEZJTFRFUl9GTEFHICsgJz0tKlNlaConCisgICAgIyBCeSBkZWZhdWx0LCBHb29n
bGUgVGVzdCBkb2Vzbid0IGNhdGNoIHRoZSBleGNlcHRpb25zLgorICAgIHVuY2F1Z2h0X2V4Y2Vw
dGlvbnNfZXhfYmluYXJ5X291dHB1dCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKKyAg
ICAgICAgW0VYX0VYRV9QQVRILAorICAgICAgICAgTk9fQ0FUQ0hfRVhDRVBUSU9OU19GTEFHLAor
ICAgICAgICAgRklUTEVSX09VVF9TRUhfVEVTVFNfRkxBR10sCisgICAgICAgIGVudj1lbnZpcm9u
KS5vdXRwdXQKKworICAgIHNlbGYuYXNzZXJ0XygnVW5oYW5kbGVkIEMrKyBleGNlcHRpb24gdGVy
bWluYXRpbmcgdGhlIHByb2dyYW0nCisgICAgICAgICAgICAgICAgIGluIHVuY2F1Z2h0X2V4Y2Vw
dGlvbnNfZXhfYmluYXJ5X291dHB1dCkKKyAgICBzZWxmLmFzc2VydF8oJ3VuZXhwZWN0ZWQnIG5v
dCBpbiB1bmNhdWdodF9leGNlcHRpb25zX2V4X2JpbmFyeV9vdXRwdXQpCisKKworaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25z
LXRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNhdGNo
LWV4Y2VwdGlvbnMtdGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDlkYWU3MDAzMGEzM2FlYWJhMDYwYWFl
Zjk3YTk3OWE4ZjU4MDRhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3RfLmNjCkBAIC0wLDAgKzEs
MzExIEBACisvLyBDb3B5cmlnaHQgMjAxMCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLwor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8v
CisvLyBUZXN0cyBmb3IgR29vZ2xlIFRlc3QgaXRzZWxmLiBUZXN0cyBpbiB0aGlzIGZpbGUgdGhy
b3cgQysrIG9yIFNFSAorLy8gZXhjZXB0aW9ucywgYW5kIHRoZSBvdXRwdXQgaXMgdmVyaWZpZWQg
YnkKKy8vIGdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0LnB5LgorCisjaW5jbHVkZSA8
c3RkaW8uaD4gIC8vIE5PTElOVAorI2luY2x1ZGUgPHN0ZGxpYi5oPiAgLy8gRm9yIGV4aXQoKS4K
KworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpZiBHVEVTVF9IQVNfU0VICisjIGluY2x1
ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKyMgaW5j
bHVkZSA8ZXhjZXB0aW9uPiAgLy8gRm9yIHNldF90ZXJtaW5hdGUoKS4KKyMgaW5jbHVkZSA8c3Rk
ZXhjZXB0PgorI2VuZGlmCisKK3VzaW5nIHRlc3Rpbmc6OlRlc3Q7CisKKyNpZiBHVEVTVF9IQVNf
U0VICisKK2NsYXNzIFNlaEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0IDogcHVibGljIFRlc3Qg
eworIHB1YmxpYzoKKyAgU2VoRXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QoKSB7IFJhaXNlRXhj
ZXB0aW9uKDQyLCAwLCAwLCBOVUxMKTsgfQorfTsKKworVEVTVF9GKFNlaEV4Y2VwdGlvbkluQ29u
c3RydWN0b3JUZXN0LCBUaHJvd3NFeGNlcHRpb25JbkNvbnN0cnVjdG9yKSB7fQorCitjbGFzcyBT
ZWhFeGNlcHRpb25JbkRlc3RydWN0b3JUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAg
flNlaEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3QoKSB7IFJhaXNlRXhjZXB0aW9uKDQyLCAwLCAw
LCBOVUxMKTsgfQorfTsKKworVEVTVF9GKFNlaEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3QsIFRo
cm93c0V4Y2VwdGlvbkluRGVzdHJ1Y3Rvcikge30KKworY2xhc3MgU2VoRXhjZXB0aW9uSW5TZXRV
cFRlc3RDYXNlVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFNl
dFVwVGVzdENhc2UoKSB7IFJhaXNlRXhjZXB0aW9uKDQyLCAwLCAwLCBOVUxMKTsgfQorfTsKKwor
VEVTVF9GKFNlaEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QsIFRocm93c0V4Y2VwdGlvbklu
U2V0VXBUZXN0Q2FzZSkge30KKworY2xhc3MgU2VoRXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNl
VGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVz
dENhc2UoKSB7IFJhaXNlRXhjZXB0aW9uKDQyLCAwLCAwLCBOVUxMKTsgfQorfTsKKworVEVTVF9G
KFNlaEV4Y2VwdGlvbkluVGVhckRvd25UZXN0Q2FzZVRlc3QsIFRocm93c0V4Y2VwdGlvbkluVGVh
ckRvd25UZXN0Q2FzZSkge30KKworY2xhc3MgU2VoRXhjZXB0aW9uSW5TZXRVcFRlc3QgOiBwdWJs
aWMgVGVzdCB7CisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IFJhaXNlRXhj
ZXB0aW9uKDQyLCAwLCAwLCBOVUxMKTsgfQorfTsKKworVEVTVF9GKFNlaEV4Y2VwdGlvbkluU2V0
VXBUZXN0LCBUaHJvd3NFeGNlcHRpb25JblNldFVwKSB7fQorCitjbGFzcyBTZWhFeGNlcHRpb25J
blRlYXJEb3duVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitU
RVNUX0YoU2VoRXhjZXB0aW9uSW5UZWFyRG93blRlc3QsIFRocm93c0V4Y2VwdGlvbkluVGVhckRv
d24pIHt9CisKK1RFU1QoU2VoRXhjZXB0aW9uVGVzdCwgVGhyb3dzU2VoRXhjZXB0aW9uKSB7Cisg
IFJhaXNlRXhjZXB0aW9uKDQyLCAwLCAwLCBOVUxMKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9I
QVNfU0VICisKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworCitjbGFzcyBDeHhFeGNlcHRpb25J
bkNvbnN0cnVjdG9yVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIEN4eEV4Y2VwdGlv
bkluQ29uc3RydWN0b3JUZXN0KCkgeworICAgIC8vIFdpdGhvdXQgdGhpcyBtYWNybyBWQysrIGNv
bXBsYWlucyBhYm91dCB1bnJlYWNoYWJsZSBjb2RlIGF0IHRoZSBlbmQgb2YKKyAgICAvLyB0aGUg
Y29uc3RydWN0b3IuCisgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5H
X0JFTE9XXygKKyAgICAgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysg
ZXhjZXB0aW9uIikpOworICB9CisKKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsK
KyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JU
ZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVk
LlxuIik7CisgIH0KKworIHByb3RlY3RlZDoKKyAgfkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JU
ZXN0KCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JU
ZXN0IGRlc3RydWN0b3IgIgorICAgICAgICAgICAgICAgICAgPDwgImNhbGxlZCB1bmV4cGVjdGVk
bHkuIjsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBBRERfRkFJTFVSRSgp
IDw8ICJDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdDo6U2V0VXAoKSAiCisgICAgICAgICAg
ICAgICAgICA8PCAiY2FsbGVkIHVuZXhwZWN0ZWRseS4iOworICB9CisKKyAgdmlydHVhbCB2b2lk
IFRlYXJEb3duKCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkN4eEV4Y2VwdGlvbkluQ29uc3Ry
dWN0b3JUZXN0OjpUZWFyRG93bigpICIKKyAgICAgICAgICAgICAgICAgIDw8ICJjYWxsZWQgdW5l
eHBlY3RlZGx5LiI7CisgIH0KK307CisKK1RFU1RfRihDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9y
VGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5Db25zdHJ1Y3RvcikgeworICBBRERfRkFJTFVSRSgpIDw8
ICJDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCB0ZXN0IGJvZHkgIgorICAgICAgICAgICAg
ICAgIDw8ICJjYWxsZWQgdW5leHBlY3RlZGx5LiI7Cit9CisKKy8vIEV4Y2VwdGlvbnMgaW4gZGVz
dHJ1Y3RvcnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gQysrMTEuCisjaWYgIUdURVNUX0xBTkdfQ1hY
MTEKK2NsYXNzIEN4eEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3QgOiBwdWJsaWMgVGVzdCB7Cisg
cHVibGljOgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHByaW50Zigi
JXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdDo6VGVhckRvd25U
ZXN0Q2FzZSgpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisK
KyBwcm90ZWN0ZWQ6CisgIH5DeHhFeGNlcHRpb25JbkRlc3RydWN0b3JUZXN0KCkgeworICAgIEdU
RVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oCisgICAgICAgIHRo
cm93IHN0ZDo6cnVudGltZV9lcnJvcigiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIpKTsKKyAgfQor
fTsKKworVEVTVF9GKEN4eEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3QsIFRocm93c0V4Y2VwdGlv
bkluRGVzdHJ1Y3Rvcikge30KKyNlbmRpZiAgLy8gQysrMTEgbW9kZQorCitjbGFzcyBDeHhFeGNl
cHRpb25JblNldFVwVGVzdENhc2VUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgQ3h4
RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAg
ICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgY29uc3RydWN0b3IgIgorICAg
ICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworICBzdGF0aWMgdm9pZCBT
ZXRVcFRlc3RDYXNlKCkgeworICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcigiU3RhbmRhcmQg
QysrIGV4Y2VwdGlvbiIpOworICB9CisKKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgp
IHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0
Q2FzZVRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhw
ZWN0ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICB+Q3h4RXhjZXB0aW9uSW5TZXRVcFRl
c3RDYXNlVGVzdCgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlv
bkluU2V0VXBUZXN0Q2FzZVRlc3QgZGVzdHJ1Y3RvciAiCisgICAgICAgICAgICJjYWxsZWQgYXMg
ZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBwcmlu
dGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3Q6OlNl
dFVwKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworICB2
aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJD
eHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0OjpUZWFyRG93bigpICIKKyAgICAgICAgICAg
ImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9Cit9OworCitURVNUX0YoQ3h4RXhjZXB0aW9u
SW5TZXRVcFRlc3RDYXNlVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlKSB7Cisg
IHByaW50ZigiJXMiLAorICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3Qg
dGVzdCBib2R5ICIKKyAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKK30KKworY2xh
c3MgQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNlVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBw
dWJsaWM6CisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7CisgICAgdGhyb3cgc3Rk
OjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIik7CisgIH0KK307CisKK1RF
U1RfRihDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdENhc2VUZXN0LCBUaHJvd3NFeGNlcHRpb25J
blRlYXJEb3duVGVzdENhc2UpIHt9CisKK2NsYXNzIEN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0IDog
cHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgp
IHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0
OjpUZWFyRG93blRlc3RDYXNlKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxu
Iik7CisgIH0KKworIHByb3RlY3RlZDoKKyAgfkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0KCkgewor
ICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QgZGVz
dHJ1Y3RvciAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisg
IHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFy
ZCBDKysgZXhjZXB0aW9uIik7IH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAg
cHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblNldFVwVGVzdDo6VGVhckRv
d24oKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorfTsKKwor
VEVTVF9GKEN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0LCBUaHJvd3NFeGNlcHRpb25JblNldFVwKSB7
CisgIEFERF9GQUlMVVJFKCkgPDwgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0IHRlc3QgYm9keSAi
CisgICAgICAgICAgICAgICAgPDwgImNhbGxlZCB1bmV4cGVjdGVkbHkuIjsKK30KKworY2xhc3Mg
Q3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBz
dGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAg
ICAgICAiQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCisg
ICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVjdGVkOgor
ICB+Q3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3QoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAg
ICAgICAgICJDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCBkZXN0cnVjdG9yICIKKyAgICAgICAg
ICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJE
b3duKCkgeworICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcigiU3RhbmRhcmQgQysrIGV4Y2Vw
dGlvbiIpOworICB9Cit9OworCitURVNUX0YoQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3QsIFRo
cm93c0V4Y2VwdGlvbkluVGVhckRvd24pIHt9CisKK2NsYXNzIEN4eEV4Y2VwdGlvbkluVGVzdEJv
ZHlUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgVGVhckRvd25U
ZXN0Q2FzZSgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbklu
VGVzdEJvZHlUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFz
IGV4cGVjdGVkLlxuIik7CisgIH0KKworIHByb3RlY3RlZDoKKyAgfkN4eEV4Y2VwdGlvbkluVGVz
dEJvZHlUZXN0KCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9u
SW5UZXN0Qm9keVRlc3QgZGVzdHJ1Y3RvciAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0
ZWQuXG4iKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBwcmludGYo
IiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0OjpUZWFyRG93bigp
ICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9Cit9OworCitURVNU
X0YoQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QsIFRocm93c1N0ZEN4eEV4Y2VwdGlvbikgewor
ICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iKTsKK30K
KworVEVTVChDeHhFeGNlcHRpb25UZXN0LCBUaHJvd3NOb25TdGRDeHhFeGNlcHRpb24pIHsKKyAg
dGhyb3cgIkMtc3RyaW5nIjsKK30KKworLy8gVGhpcyB0ZXJtaW5hdGUgaGFuZGxlciBhYm9ydHMg
dGhlIHByb2dyYW0gdXNpbmcgZXhpdCgpIHJhdGhlciB0aGFuIGFib3J0KCkuCisvLyBUaGlzIGF2
b2lkcyBzaG93aW5nIHBvcC11cHMgb24gV2luZG93cyBzeXN0ZW1zIGFuZCBjb3JlIGR1bXBzIG9u
IFVuaXgtbGlrZQorLy8gb25lcy4KK3ZvaWQgVGVybWluYXRlSGFuZGxlcigpIHsKKyAgZnByaW50
ZihzdGRlcnIsICIlc1xuIiwgIlVuaGFuZGxlZCBDKysgZXhjZXB0aW9uIHRlcm1pbmF0aW5nIHRo
ZSBwcm9ncmFtLiIpOworICBmZmx1c2goTlVMTCk7CisgIGV4aXQoMyk7Cit9CisKKyNlbmRpZiAg
Ly8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2
KSB7CisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKyAgc3RkOjpzZXRfdGVybWluYXRlKCZUZXJt
aW5hdGVIYW5kbGVyKTsKKyNlbmRpZgorICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywg
YXJndik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY29sb3ItdGVzdC5weSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1jb2xvci10ZXN0LnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmYzYjdjOTk5MGJjZjQ0YTY1MDM2YzI1M2U3YTAxODQ1YWY5YzM3MTcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY29sb3ItdGVzdC5w
eQpAQCAtMCwwICsxLDEyNyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdo
dCAyMDA4LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworIiIiVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCBjb3JyZWN0bHkgZGV0ZXJtaW5l
cyB3aGV0aGVyIHRvIHVzZSBjb2xvcnMuIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IGd0ZXN0X3Rl
c3RfdXRpbHMKKworSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250JworCitDT0xPUl9FTlZfVkFS
ID0gJ0dURVNUX0NPTE9SJworQ09MT1JfRkxBRyA9ICdndGVzdF9jb2xvcicKK0NPTU1BTkQgPSBn
dGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ29vZ2xldGVzdC1jb2xvci10
ZXN0XycpCisKKworZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6CisgICIiIlNldHMgdGhl
IGVudiB2YXJpYWJsZSB0byAndmFsdWUnOyB1bnNldHMgaXQgd2hlbiAndmFsdWUnIGlzIE5vbmUu
IiIiCisKKyAgaWYgdmFsdWUgaXMgbm90IE5vbmU6CisgICAgb3MuZW52aXJvbltlbnZfdmFyXSA9
IHZhbHVlCisgIGVsaWYgZW52X3ZhciBpbiBvcy5lbnZpcm9uOgorICAgIGRlbCBvcy5lbnZpcm9u
W2Vudl92YXJdCisKKworZGVmIFVzZXNDb2xvcih0ZXJtLCBjb2xvcl9lbnZfdmFyLCBjb2xvcl9m
bGFnKToKKyAgIiIiUnVucyBnb29nbGV0ZXN0LWNvbG9yLXRlc3RfIGFuZCByZXR1cm5zIGl0cyBl
eGl0IGNvZGUuIiIiCisKKyAgU2V0RW52VmFyKCdURVJNJywgdGVybSkKKyAgU2V0RW52VmFyKENP
TE9SX0VOVl9WQVIsIGNvbG9yX2Vudl92YXIpCisKKyAgaWYgY29sb3JfZmxhZyBpcyBOb25lOgor
ICAgIGFyZ3MgPSBbXQorICBlbHNlOgorICAgIGFyZ3MgPSBbJy0tJXM9JXMnICUgKENPTE9SX0ZM
QUcsIGNvbG9yX2ZsYWcpXQorICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtDT01N
QU5EXSArIGFyZ3MpCisgIHJldHVybiBub3QgcC5leGl0ZWQgb3IgcC5leGl0X2NvZGUKKworCitj
bGFzcyBHVGVzdENvbG9yVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgZGVmIHRl
c3ROb0VudlZhck5vRmxhZyhzZWxmKToKKyAgICAiIiJUZXN0cyB0aGUgY2FzZSB3aGVuIHRoZXJl
J3MgbmVpdGhlciBHVEVTVF9DT0xPUiBub3IgLS1ndGVzdF9jb2xvci4iIiIKKworICAgIGlmIG5v
dCBJU19XSU5ET1dTOgorICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ2R1bWInLCBO
b25lLCBOb25lKSkKKyAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdlbWFjcycsIE5v
bmUsIE5vbmUpKQorICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtLW1vbm8n
LCBOb25lLCBOb25lKSkKKyAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd1bmtub3du
JywgTm9uZSwgTm9uZSkpCisgICAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcihOb25lLCBO
b25lLCBOb25lKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdsaW51eCcsIE5vbmUsIE5v
bmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2N5Z3dpbicsIE5vbmUsIE5vbmUpKQor
ICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwgTm9uZSkpCisgICAgc2Vs
Zi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tY29sb3InLCBOb25lLCBOb25lKSkKKyAgICBzZWxm
LmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS0yNTZjb2xvcicsIE5vbmUsIE5vbmUpKQorCisgIGRl
ZiB0ZXN0RmxhZ09ubHkoc2VsZik6CisgICAgIiIiVGVzdHMgdGhlIGNhc2Ugd2hlbiB0aGVyZSdz
IC0tZ3Rlc3RfY29sb3IgYnV0IG5vdCBHVEVTVF9DT0xPUi4iIiIKKworICAgIHNlbGYuYXNzZXJ0
Xyhub3QgVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ25vJykpCisgICAgc2VsZi5hc3NlcnRfKG5v
dCBVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywgTm9uZSwgJ25vJykpCisgICAgaWYgbm90IElTX1dJ
TkRPV1M6CisgICAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcignZW1hY3MnLCBOb25lLCAn
YXV0bycpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwgJ2F1dG8n
KSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ3llcycpKQorICAg
IHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwgJ3llcycpKQorCisgIGRlZiB0
ZXN0RW52VmFyT25seShzZWxmKToKKyAgICAiIiJUZXN0cyB0aGUgY2FzZSB3aGVuIHRoZXJlJ3Mg
R1RFU1RfQ09MT1IgYnV0IG5vdCAtLWd0ZXN0X2NvbG9yLiIiIgorCisgICAgc2VsZi5hc3NlcnRf
KG5vdCBVc2VzQ29sb3IoJ2R1bWInLCAnbm8nLCBOb25lKSkKKyAgICBzZWxmLmFzc2VydF8obm90
IFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAnbm8nLCBOb25lKSkKKyAgICBpZiBub3QgSVNfV0lO
RE9XUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdkdW1iJywgJ2F1dG8nLCBO
b25lKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsICdhdXRvJywg
Tm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsICd5ZXMnLCBOb25lKSkK
KyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsICd5ZXMnLCBOb25lKSkK
KworICBkZWYgdGVzdEVudlZhckFuZEZsYWcoc2VsZik6CisgICAgIiIiVGVzdHMgdGhlIGNhc2Ug
d2hlbiB0aGVyZSBhcmUgYm90aCBHVEVTVF9DT0xPUiBhbmQgLS1ndGVzdF9jb2xvci4iIiIKKwor
ICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsICdubycsICdubycp
KQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCAnbm8nLCAneWVzJykpCisgICAg
c2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAnbm8nLCAnYXV0bycpKQorCisg
IGRlZiB0ZXN0QWxpYXNlc09mWWVzQW5kTm8oc2VsZik6CisgICAgIiIiVGVzdHMgdXNpbmcgYWxp
YXNlcyBpbiBzcGVjaWZ5aW5nIC0tZ3Rlc3RfY29sb3IuIiIiCisKKyAgICBzZWxmLmFzc2VydF8o
VXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ3RydWUnKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0Nv
bG9yKCdkdW1iJywgTm9uZSwgJ1lFUycpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1
bWInLCBOb25lLCAnVCcpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCBOb25l
LCAnMScpKQorCisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwg
J2YnKSkKKyAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0nLCBOb25lLCAnZmFs
c2UnKSkKKyAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0nLCBOb25lLCAnMCcp
KQorICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybScsIE5vbmUsICd1bmtub3du
JykpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rlc3RfdGVzdF91dGlscy5N
YWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVz
dC1jb2xvci10ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVz
dC1jb2xvci10ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjBhM2EwMDU0OGZkYjFlOTM1YTNkYTE2ZGY1
NjNhNTBlMTc5YThhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9nb29nbGV0ZXN0LWNvbG9yLXRlc3RfLmNjCkBAIC0wLDAgKzEsNjIgQEAKKy8vIENvcHly
aWdodCAyMDA4LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0
aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
Ly8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBBIGhlbHBlciBwcm9n
cmFtIGZvciB0ZXN0aW5nIGhvdyBHb29nbGUgVGVzdCBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNl
CisvLyBjb2xvcnMgaW4gdGhlIG91dHB1dC4gIEl0IHByaW50cyAiWUVTIiBhbmQgcmV0dXJucyAx
IGlmIEdvb2dsZSBUZXN0CisvLyBkZWNpZGVzIHRvIHVzZSBjb2xvcnMsIGFuZCBwcmludHMgIk5P
IiBhbmQgcmV0dXJucyAwIG90aGVyd2lzZS4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIK
KwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlNob3VsZFVzZUNvbG9yOworCisvLyBUaGUgcHVy
cG9zZSBvZiB0aGlzIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSBVbml0VGVzdCBzaW5nbGV0b24gaXMK
Ky8vIGNyZWF0ZWQgYmVmb3JlIG1haW4oKSBpcyBlbnRlcmVkLCBhbmQgdGh1cyB0aGF0IFNob3Vs
ZFVzZUNvbG9yKCkKKy8vIHdvcmtzIHRoZSBzYW1lIHdheSBhcyBpbiBhIHJlYWwgR29vZ2xlLVRl
c3QtYmFzZWQgdGVzdC4gIFdlIGRvbid0IGFjdHVhbAorLy8gcnVuIHRoZSBURVNUIGl0c2VsZi4K
K1RFU1QoR1Rlc3RDb2xvclRlc3QsIER1bW15KSB7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBj
aGFyKiogYXJndikgeworICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisK
KyAgaWYgKFNob3VsZFVzZUNvbG9yKHRydWUpKSB7CisgICAgLy8gR29vZ2xlIFRlc3QgZGVjaWRl
cyB0byB1c2UgY29sb3JzIGluIHRoZSBvdXRwdXQgKGFzc3VtaW5nIGl0CisgICAgLy8gZ29lcyB0
byBhIFRUWSkuCisgICAgcHJpbnRmKCJZRVNcbiIpOworICAgIHJldHVybiAxOworICB9IGVsc2Ug
eworICAgIC8vIEdvb2dsZSBUZXN0IGRlY2lkZXMgbm90IHRvIHVzZSBjb2xvcnMgaW4gdGhlIG91
dHB1dC4KKyAgICBwcmludGYoIk5PXG4iKTsKKyAgICByZXR1cm4gMDsKKyAgfQorfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWRlYXRoLXRlc3Qt
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1kZWF0aC10
ZXN0LXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBjMzAyNmZiNTg5NTY2MGFkMmM5ZDY1ZmJkOTliNWZh
ZjlhZDQ4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z29vZ2xldGVzdC1kZWF0aC10ZXN0LXRlc3QuY2MKQEAgLTAsMCArMSwxNDIzIEBACisvLyBDb3B5
cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
Ky8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1
dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
Ky8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vCisvLyBUZXN0cyBmb3Ig
ZGVhdGggdGVzdHMuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgiCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1maWxl
cGF0aC5oIgorCit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2U7Cit1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZTsKKworI2lmIEdURVNUX0hBU19ERUFUSF9URVNU
CisKKyMgaWYgR1RFU1RfT1NfV0lORE9XUworIyAgaW5jbHVkZSA8ZGlyZWN0Lmg+ICAgICAgICAg
IC8vIEZvciBjaGRpcigpLgorIyBlbHNlCisjICBpbmNsdWRlIDx1bmlzdGQuaD4KKyMgIGluY2x1
ZGUgPHN5cy93YWl0Lmg+ICAgICAgICAvLyBGb3Igd2FpdHBpZC4KKyMgZW5kaWYgIC8vIEdURVNU
X09TX1dJTkRPV1MKKworIyBpbmNsdWRlIDxsaW1pdHMuaD4KKyMgaW5jbHVkZSA8c2lnbmFsLmg+
CisjIGluY2x1ZGUgPHN0ZGlvLmg+CisKKyMgaWYgR1RFU1RfT1NfTElOVVgKKyMgIGluY2x1ZGUg
PHN5cy90aW1lLmg+CisjIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCisjIGluY2x1ZGUgImd0
ZXN0L2d0ZXN0LXNwaS5oIgorIyBpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCisK
K25hbWVzcGFjZSBwb3NpeCA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OworCit1c2luZyB0
ZXN0aW5nOjpNZXNzYWdlOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVzdDsKK3Vz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3RGYWN0b3J5OwordXNpbmcgdGVzdGluZzo6
aW50ZXJuYWw6OkZpbGVQYXRoOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldExhc3RFcnJu
b0Rlc2NyaXB0aW9uOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbDsK
K3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJbkRlYXRoVGVzdENoaWxkOwordXNpbmcgdGVzdGlu
Zzo6aW50ZXJuYWw6OlBhcnNlTmF0dXJhbE51bWJlcjsKKworbmFtZXNwYWNlIHRlc3Rpbmcgewor
bmFtZXNwYWNlIGludGVybmFsIHsKKworLy8gQSBoZWxwZXIgY2xhc3Mgd2hvc2Ugb2JqZWN0cyBy
ZXBsYWNlIHRoZSBkZWF0aCB0ZXN0IGZhY3RvcnkgZm9yIGEKKy8vIHNpbmdsZSBVbml0VGVzdCBv
YmplY3QgZHVyaW5nIHRoZWlyIGxpZmV0aW1lcy4KK2NsYXNzIFJlcGxhY2VEZWF0aFRlc3RGYWN0
b3J5IHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KERlYXRo
VGVzdEZhY3RvcnkqIG5ld19mYWN0b3J5KQorICAgICAgOiB1bml0X3Rlc3RfaW1wbF8oR2V0VW5p
dFRlc3RJbXBsKCkpIHsKKyAgICBvbGRfZmFjdG9yeV8gPSB1bml0X3Rlc3RfaW1wbF8tPmRlYXRo
X3Rlc3RfZmFjdG9yeV8ucmVsZWFzZSgpOworICAgIHVuaXRfdGVzdF9pbXBsXy0+ZGVhdGhfdGVz
dF9mYWN0b3J5Xy5yZXNldChuZXdfZmFjdG9yeSk7CisgIH0KKworICB+UmVwbGFjZURlYXRoVGVz
dEZhY3RvcnkoKSB7CisgICAgdW5pdF90ZXN0X2ltcGxfLT5kZWF0aF90ZXN0X2ZhY3RvcnlfLnJl
bGVhc2UoKTsKKyAgICB1bml0X3Rlc3RfaW1wbF8tPmRlYXRoX3Rlc3RfZmFjdG9yeV8ucmVzZXQo
b2xkX2ZhY3RvcnlfKTsKKyAgfQorIHByaXZhdGU6CisgIC8vIFByZXZlbnRzIGNvcHlpbmcgUmVw
bGFjZURlYXRoVGVzdEZhY3Rvcnkgb2JqZWN0cy4KKyAgUmVwbGFjZURlYXRoVGVzdEZhY3Rvcnko
Y29uc3QgUmVwbGFjZURlYXRoVGVzdEZhY3RvcnkmKTsKKyAgdm9pZCBvcGVyYXRvcj0oY29uc3Qg
UmVwbGFjZURlYXRoVGVzdEZhY3RvcnkmKTsKKworICBVbml0VGVzdEltcGwqIHVuaXRfdGVzdF9p
bXBsXzsKKyAgRGVhdGhUZXN0RmFjdG9yeSogb2xkX2ZhY3RvcnlfOworfTsKKworfSAgLy8gbmFt
ZXNwYWNlIGludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCit2b2lkIERpZVdpdGhN
ZXNzYWdlKGNvbnN0IDo6c3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsKKyAgZnByaW50ZihzdGRlcnIs
ICIlcyIsIG1lc3NhZ2UuY19zdHIoKSk7CisgIGZmbHVzaChzdGRlcnIpOyAgLy8gTWFrZSBzdXJl
IHRoZSB0ZXh0IGlzIHByaW50ZWQgYmVmb3JlIHRoZSBwcm9jZXNzIGV4aXRzLgorCisgIC8vIFdl
IGNhbGwgX2V4aXQoKSBpbnN0ZWFkIG9mIGV4aXQoKSwgYXMgdGhlIGZvcm1lciBpcyBhIGRpcmVj
dAorICAvLyBzeXN0ZW0gY2FsbCBhbmQgdGh1cyBzYWZlciBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhy
ZWFkcy4gIGV4aXQoKQorICAvLyB3aWxsIGludm9rZSB1c2VyLWRlZmluZWQgZXhpdC1ob29rcywg
d2hpY2ggbWF5IGRvIGRhbmdlcm91cworICAvLyB0aGluZ3MgdGhhdCBjb25mbGljdCB3aXRoIGRl
YXRoIHRlc3RzLgorICAvLworICAvLyBTb21lIGNvbXBpbGVycyBjYW4gcmVjb2duaXplIHRoYXQg
X2V4aXQoKSBuZXZlciByZXR1cm5zIGFuZCBpc3N1ZSB0aGUKKyAgLy8gJ3VucmVhY2hhYmxlIGNv
ZGUnIHdhcm5pbmcgZm9yIGNvZGUgZm9sbG93aW5nIHRoaXMgZnVuY3Rpb24sIHVubGVzcworICAv
LyBmb29sZWQgYnkgYSBmYWtlIGNvbmRpdGlvbi4KKyAgaWYgKEFsd2F5c1RydWUoKSkKKyAgICBf
ZXhpdCgxKTsKK30KKwordm9pZCBEaWVJbnNpZGUoY29uc3QgOjpzdGQ6OnN0cmluZyYgZnVuY3Rp
b24pIHsKKyAgRGllV2l0aE1lc3NhZ2UoImRlYXRoIGluc2lkZSAiICsgZnVuY3Rpb24gKyAiKCku
Iik7Cit9CisKKy8vIFRlc3RzIHRoYXQgZGVhdGggdGVzdHMgd29yay4KKworY2xhc3MgVGVzdEZv
ckRlYXRoVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIFRlc3RG
b3JEZWF0aFRlc3QoKSA6IG9yaWdpbmFsX2Rpcl8oRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKSkg
e30KKworICB2aXJ0dWFsIH5UZXN0Rm9yRGVhdGhUZXN0KCkgeworICAgIHBvc2l4OjpDaERpcihv
cmlnaW5hbF9kaXJfLmNfc3RyKCkpOworICB9CisKKyAgLy8gQSBzdGF0aWMgbWVtYmVyIGZ1bmN0
aW9uIHRoYXQncyBleHBlY3RlZCB0byBkaWUuCisgIHN0YXRpYyB2b2lkIFN0YXRpY01lbWJlckZ1
bmN0aW9uKCkgeyBEaWVJbnNpZGUoIlN0YXRpY01lbWJlckZ1bmN0aW9uIik7IH0KKworICAvLyBB
IG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJlIHRoYXQgbWF5IGRpZS4KKyAgdm9pZCBNZW1iZXJG
dW5jdGlvbigpIHsKKyAgICBpZiAoc2hvdWxkX2RpZV8pCisgICAgICBEaWVJbnNpZGUoIk1lbWJl
ckZ1bmN0aW9uIik7CisgIH0KKworICAvLyBUcnVlIGlmZiBNZW1iZXJGdW5jdGlvbigpIHNob3Vs
ZCBkaWUuCisgIGJvb2wgc2hvdWxkX2RpZV87CisgIGNvbnN0IEZpbGVQYXRoIG9yaWdpbmFsX2Rp
cl87Cit9OworCisvLyBBIGNsYXNzIHdpdGggYSBtZW1iZXIgZnVuY3Rpb24gdGhhdCBtYXkgZGll
LgorY2xhc3MgTWF5RGllIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IE1heURpZShib29sIHNob3Vs
ZF9kaWUpIDogc2hvdWxkX2RpZV8oc2hvdWxkX2RpZSkge30KKworICAvLyBBIG1lbWJlciBmdW5j
dGlvbiB0aGF0IG1heSBkaWUuCisgIHZvaWQgTWVtYmVyRnVuY3Rpb24oKSBjb25zdCB7CisgICAg
aWYgKHNob3VsZF9kaWVfKQorICAgICAgRGllSW5zaWRlKCJNYXlEaWU6Ok1lbWJlckZ1bmN0aW9u
Iik7CisgIH0KKworIHByaXZhdGU6CisgIC8vIFRydWUgaWZmIE1lbWJlckZ1bmN0aW9uKCkgc2hv
dWxkIGRpZS4KKyAgYm9vbCBzaG91bGRfZGllXzsKK307CisKKy8vIEEgZ2xvYmFsIGZ1bmN0aW9u
IHRoYXQncyBleHBlY3RlZCB0byBkaWUuCit2b2lkIEdsb2JhbEZ1bmN0aW9uKCkgeyBEaWVJbnNp
ZGUoIkdsb2JhbEZ1bmN0aW9uIik7IH0KKworLy8gQSBub24tdm9pZCBmdW5jdGlvbiB0aGF0J3Mg
ZXhwZWN0ZWQgdG8gZGllLgoraW50IE5vblZvaWRGdW5jdGlvbigpIHsKKyAgRGllSW5zaWRlKCJO
b25Wb2lkRnVuY3Rpb24iKTsKKyAgcmV0dXJuIDE7Cit9CisKKy8vIEEgdW5hcnkgZnVuY3Rpb24g
dGhhdCBtYXkgZGllLgordm9pZCBEaWVJZihib29sIHNob3VsZF9kaWUpIHsKKyAgaWYgKHNob3Vs
ZF9kaWUpCisgICAgRGllSW5zaWRlKCJEaWVJZiIpOworfQorCisvLyBBIGJpbmFyeSBmdW5jdGlv
biB0aGF0IG1heSBkaWUuCitib29sIERpZUlmTGVzc1RoYW4oaW50IHgsIGludCB5KSB7CisgIGlm
ICh4IDwgeSkgeworICAgIERpZUluc2lkZSgiRGllSWZMZXNzVGhhbiIpOworICB9CisgIHJldHVy
biB0cnVlOworfQorCisvLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUFUSCBjYW4gYmUgdXNlZCBvdXRz
aWRlIGEgVEVTVCwgVEVTVF9GLCBvciB0ZXN0IGZpeHR1cmUuCit2b2lkIERlYXRoVGVzdFN1YnJv
dXRpbmUoKSB7CisgIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCAiZGVhdGguKkdsb2Jh
bEZ1bmN0aW9uIik7CisgIEFTU0VSVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCAiZGVhdGguKkds
b2JhbEZ1bmN0aW9uIik7Cit9CisKKy8vIERlYXRoIGluIGRiZywgbm90IG9wdC4KK2ludCBEaWVJ
bkRlYnVnRWxzZTEyKGludCogc2lkZWVmZmVjdCkgeworICBpZiAoc2lkZWVmZmVjdCkgKnNpZGVl
ZmZlY3QgPSAxMjsKKworIyBpZm5kZWYgTkRFQlVHCisKKyAgRGllSW5zaWRlKCJEaWVJbkRlYnVn
RWxzZTEyIik7CisKKyMgZW5kaWYgIC8vIE5ERUJVRworCisgIHJldHVybiAxMjsKK30KKworIyBp
ZiBHVEVTVF9PU19XSU5ET1dTIHx8IEdURVNUX09TX0ZVQ0hTSUEKKworLy8gVGVzdHMgdGhlIEV4
aXRlZFdpdGhDb2RlIHByZWRpY2F0ZS4KK1RFU1QoRXhpdFN0YXR1c1ByZWRpY2F0ZVRlc3QsIEV4
aXRlZFdpdGhDb2RlKSB7CisgIC8vIE9uIFdpbmRvd3MsIHRoZSBwcm9jZXNzJ3MgZXhpdCBjb2Rl
IGlzIHRoZSBzYW1lIGFzIGl0cyBleGl0IHN0YXR1cywKKyAgLy8gc28gdGhlIHByZWRpY2F0ZSBq
dXN0IGNvbXBhcmVzIHRoZSBpdHMgaW5wdXQgd2l0aCBpdHMgcGFyYW1ldGVyLgorICBFWFBFQ1Rf
VFJVRSh0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgwKSgwKSk7CisgIEVYUEVDVF9UUlVFKHRlc3Rp
bmc6OkV4aXRlZFdpdGhDb2RlKDEpKDEpKTsKKyAgRVhQRUNUX1RSVUUodGVzdGluZzo6RXhpdGVk
V2l0aENvZGUoNDIpKDQyKSk7CisgIEVYUEVDVF9GQUxTRSh0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29k
ZSgwKSgxKSk7CisgIEVYUEVDVF9GQUxTRSh0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSgwKSk7
Cit9CisKKyMgZWxzZQorCisvLyBSZXR1cm5zIHRoZSBleGl0IHN0YXR1cyBvZiBhIHByb2Nlc3Mg
dGhhdCBjYWxscyBfZXhpdCgyKSB3aXRoIGEKKy8vIGdpdmVuIGV4aXQgY29kZS4gIFRoaXMgaXMg
YSBoZWxwZXIgZnVuY3Rpb24gZm9yIHRoZQorLy8gRXhpdFN0YXR1c1ByZWRpY2F0ZVRlc3QgdGVz
dCBzdWl0ZS4KK3N0YXRpYyBpbnQgTm9ybWFsRXhpdFN0YXR1cyhpbnQgZXhpdF9jb2RlKSB7Cisg
IHBpZF90IGNoaWxkX3BpZCA9IGZvcmsoKTsKKyAgaWYgKGNoaWxkX3BpZCA9PSAwKSB7CisgICAg
X2V4aXQoZXhpdF9jb2RlKTsKKyAgfQorICBpbnQgc3RhdHVzOworICB3YWl0cGlkKGNoaWxkX3Bp
ZCwgJnN0YXR1cywgMCk7CisgIHJldHVybiBzdGF0dXM7Cit9CisKKy8vIFJldHVybnMgdGhlIGV4
aXQgc3RhdHVzIG9mIGEgcHJvY2VzcyB0aGF0IHJhaXNlcyBhIGdpdmVuIHNpZ25hbC4KKy8vIElm
IHRoZSBzaWduYWwgZG9lcyBub3QgY2F1c2UgdGhlIHByb2Nlc3MgdG8gZGllLCB0aGVuIGl0IHJl
dHVybnMKKy8vIGluc3RlYWQgdGhlIGV4aXQgc3RhdHVzIG9mIGEgcHJvY2VzcyB0aGF0IGV4aXRz
IG5vcm1hbGx5IHdpdGggZXhpdAorLy8gY29kZSAxLiAgVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlv
biBmb3IgdGhlIEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0CisvLyB0ZXN0IHN1aXRlLgorc3RhdGlj
IGludCBLaWxsZWRFeGl0U3RhdHVzKGludCBzaWdudW0pIHsKKyAgcGlkX3QgY2hpbGRfcGlkID0g
Zm9yaygpOworICBpZiAoY2hpbGRfcGlkID09IDApIHsKKyAgICByYWlzZShzaWdudW0pOworICAg
IF9leGl0KDEpOworICB9CisgIGludCBzdGF0dXM7CisgIHdhaXRwaWQoY2hpbGRfcGlkLCAmc3Rh
dHVzLCAwKTsKKyAgcmV0dXJuIHN0YXR1czsKK30KKworLy8gVGVzdHMgdGhlIEV4aXRlZFdpdGhD
b2RlIHByZWRpY2F0ZS4KK1RFU1QoRXhpdFN0YXR1c1ByZWRpY2F0ZVRlc3QsIEV4aXRlZFdpdGhD
b2RlKSB7CisgIGNvbnN0IGludCBzdGF0dXMwICA9IE5vcm1hbEV4aXRTdGF0dXMoMCk7CisgIGNv
bnN0IGludCBzdGF0dXMxICA9IE5vcm1hbEV4aXRTdGF0dXMoMSk7CisgIGNvbnN0IGludCBzdGF0
dXM0MiA9IE5vcm1hbEV4aXRTdGF0dXMoNDIpOworICBjb25zdCB0ZXN0aW5nOjpFeGl0ZWRXaXRo
Q29kZSBwcmVkMCgwKTsKKyAgY29uc3QgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUgcHJlZDEoMSk7
CisgIGNvbnN0IHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlIHByZWQ0Mig0Mik7CisgIEVYUEVDVF9Q
UkVEMShwcmVkMCwgIHN0YXR1czApOworICBFWFBFQ1RfUFJFRDEocHJlZDEsICBzdGF0dXMxKTsK
KyAgRVhQRUNUX1BSRUQxKHByZWQ0Miwgc3RhdHVzNDIpOworICBFWFBFQ1RfRkFMU0UocHJlZDAo
c3RhdHVzMSkpOworICBFWFBFQ1RfRkFMU0UocHJlZDQyKHN0YXR1czApKTsKKyAgRVhQRUNUX0ZB
TFNFKHByZWQxKHN0YXR1czQyKSk7Cit9CisKKy8vIFRlc3RzIHRoZSBLaWxsZWRCeVNpZ25hbCBw
cmVkaWNhdGUuCitURVNUKEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0LCBLaWxsZWRCeVNpZ25hbCkg
eworICBjb25zdCBpbnQgc3RhdHVzX3NlZ3YgPSBLaWxsZWRFeGl0U3RhdHVzKFNJR1NFR1YpOwor
ICBjb25zdCBpbnQgc3RhdHVzX2tpbGwgPSBLaWxsZWRFeGl0U3RhdHVzKFNJR0tJTEwpOworICBj
b25zdCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbCBwcmVkX3NlZ3YoU0lHU0VHVik7CisgIGNvbnN0
IHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsIHByZWRfa2lsbChTSUdLSUxMKTsKKyAgRVhQRUNUX1BS
RUQxKHByZWRfc2Vndiwgc3RhdHVzX3NlZ3YpOworICBFWFBFQ1RfUFJFRDEocHJlZF9raWxsLCBz
dGF0dXNfa2lsbCk7CisgIEVYUEVDVF9GQUxTRShwcmVkX3NlZ3Yoc3RhdHVzX2tpbGwpKTsKKyAg
RVhQRUNUX0ZBTFNFKHByZWRfa2lsbChzdGF0dXNfc2VndikpOworfQorCisjIGVuZGlmICAvLyBH
VEVTVF9PU19XSU5ET1dTIHx8IEdURVNUX09TX0ZVQ0hTSUEKKworLy8gVGVzdHMgdGhhdCB0aGUg
ZGVhdGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUgd2hpY2ggbWF5IG9yIG1heSBub3QKKy8v
IGJlIGZvbGxvd2VkIGJ5IG9wZXJhdG9yPDwsIGFuZCB0aGF0IGluIGVpdGhlciBjYXNlIHRoZSBj
b21wbGV0ZSB0ZXh0CisvLyBjb21wcmlzZXMgb25seSBhIHNpbmdsZSBDKysgc3RhdGVtZW50Lgor
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFNpbmdsZVN0YXRlbWVudCkgeworICBpZiAoQWx3YXlz
RmFsc2UoKSkKKyAgICAvLyBUaGlzIHdvdWxkIGZhaWwgaWYgZXhlY3V0ZWQ7IHRoaXMgaXMgYSBj
b21waWxhdGlvbiB0ZXN0IG9ubHkKKyAgICBBU1NFUlRfREVBVEgocmV0dXJuLCAiIik7CisKKyAg
aWYgKEFsd2F5c1RydWUoKSkKKyAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKTsKKyAgZWxz
ZQorICAgIC8vIFRoaXMgZW1wdHkgImVsc2UiIGJyYW5jaCBpcyBtZWFudCB0byBlbnN1cmUgdGhh
dCBFWFBFQ1RfREVBVEgKKyAgICAvLyBkb2Vzbid0IGV4cGFuZCBpbnRvIGFuICJpZiIgc3RhdGVt
ZW50IHdpdGhvdXQgYW4gImVsc2UiCisgICAgOworCisgIGlmIChBbHdheXNGYWxzZSgpKQorICAg
IEFTU0VSVF9ERUFUSChyZXR1cm4sICIiKSA8PCAiZGlkIG5vdCBkaWUiOworCisgIGlmIChBbHdh
eXNGYWxzZSgpKQorICAgIDsKKyAgZWxzZQorICAgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIp
IDw8IDEgPDwgMiA8PCAzOworfQorCit2b2lkIERpZVdpdGhFbWJlZGRlZE51bCgpIHsKKyAgZnBy
aW50ZihzdGRlcnIsICJIZWxsbyVjbXkgbnVsbCB3b3JsZC5cbiIsICdcMCcpOworICBmZmx1c2go
c3RkZXJyKTsKKyAgX2V4aXQoMSk7Cit9CisKKyMgaWYgR1RFU1RfVVNFU19QQ1JFCisKKy8vIFRl
c3RzIHRoYXQgRVhQRUNUX0RFQVRIIGFuZCBBU1NFUlRfREVBVEggd29yayB3aGVuIHRoZSBlcnJv
cgorLy8gbWVzc2FnZSBoYXMgYSBOVUwgY2hhcmFjdGVyIGluIGl0LgorVEVTVF9GKFRlc3RGb3JE
ZWF0aFRlc3QsIEVtYmVkZGVkTnVsSW5NZXNzYWdlKSB7CisgIEVYUEVDVF9ERUFUSChEaWVXaXRo
RW1iZWRkZWROdWwoKSwgIm15IG51bGwgd29ybGQiKTsKKyAgQVNTRVJUX0RFQVRIKERpZVdpdGhF
bWJlZGRlZE51bCgpLCAibXkgbnVsbCB3b3JsZCIpOworfQorCisjIGVuZGlmICAvLyBHVEVTVF9V
U0VTX1BDUkUKKworLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29k
ZSB3aGljaCBpbnRlcmFjdHMgd2VsbCB3aXRoIHN3aXRjaAorLy8gc3RhdGVtZW50cy4KK1RFU1Rf
RihUZXN0Rm9yRGVhdGhUZXN0LCBTd2l0Y2hTdGF0ZW1lbnQpIHsKKyAgLy8gTWljcm9zb2Z0IGNv
bXBpbGVyIHVzdWFsbHkgY29tcGxhaW5zIGFib3V0IHN3aXRjaCBzdGF0ZW1lbnRzIHdpdGhvdXQK
KyAgLy8gY2FzZSBsYWJlbHMuIFdlIHN1cHByZXNzIHRoYXQgd2FybmluZyBmb3IgdGhpcyB0ZXN0
LgorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MDY1KQorCisgIHN3aXRjaCAo
MCkKKyAgICBkZWZhdWx0OgorICAgICAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgImV4
aXQgaW4gZGVmYXVsdCBzd2l0Y2ggaGFuZGxlciI7CisKKyAgc3dpdGNoICgwKQorICAgIGNhc2Ug
MDoKKyAgICAgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8ICJleGl0IGluIHN3aXRjaCBj
YXNlIjsKKworICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKK30KKworLy8gVGVz
dHMgdGhhdCBhIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24gY2FuIGJlIHVzZWQgaW4gYSAiZmFzdCIg
c3R5bGUKKy8vIGRlYXRoIHRlc3QuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU3RhdGljTWVt
YmVyRnVuY3Rpb25GYXN0U3R5bGUpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0
X3N0eWxlKSA9ICJmYXN0IjsKKyAgQVNTRVJUX0RFQVRIKFN0YXRpY01lbWJlckZ1bmN0aW9uKCks
ICJkZWF0aC4qU3RhdGljTWVtYmVyIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBtZXRob2Qgb2Yg
dGhlIHRlc3QgZml4dHVyZSBjYW4gYmUgdXNlZCBpbiBhICJmYXN0IgorLy8gc3R5bGUgZGVhdGgg
dGVzdC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNZW1iZXJGdW5jdGlvbkZhc3RTdHlsZSkg
eworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOworICBz
aG91bGRfZGllXyA9IHRydWU7CisgIEVYUEVDVF9ERUFUSChNZW1iZXJGdW5jdGlvbigpLCAiaW5z
aWRlLipNZW1iZXJGdW5jdGlvbiIpOworfQorCit2b2lkIENoYW5nZVRvUm9vdERpcigpIHsgcG9z
aXg6OkNoRGlyKEdURVNUX1BBVEhfU0VQXyk7IH0KKworLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0
cyB3b3JrIGV2ZW4gaWYgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGhhcyBiZWVuCisvLyBjaGFuZ2Vk
LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEZhc3REZWF0aFRlc3RJbkNoYW5nZWREaXIpIHsK
KyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKworICBD
aGFuZ2VUb1Jvb3REaXIoKTsKKyAgRVhQRUNUX0VYSVQoX2V4aXQoMSksIHRlc3Rpbmc6OkV4aXRl
ZFdpdGhDb2RlKDEpLCAiIik7CisKKyAgQ2hhbmdlVG9Sb290RGlyKCk7CisgIEFTU0VSVF9ERUFU
SChfZXhpdCgxKSwgIiIpOworfQorCisjIGlmIEdURVNUX09TX0xJTlVYCit2b2lkIFNpZ3Byb2ZB
Y3Rpb24oaW50LCBzaWdpbmZvX3QqLCB2b2lkKikgeyAvKiBubyBvcCAqLyB9CisKKy8vIFNldHMg
U0lHUFJPRiBhY3Rpb24gYW5kIElUSU1FUl9QUk9GIHRpbWVyIChpbnRlcnZhbDogMW1zKS4KK3Zv
aWQgU2V0U2lncHJvZkFjdGlvbkFuZFRpbWVyKCkgeworICBzdHJ1Y3QgaXRpbWVydmFsIHRpbWVy
OworICB0aW1lci5pdF9pbnRlcnZhbC50dl9zZWMgPSAwOworICB0aW1lci5pdF9pbnRlcnZhbC50
dl91c2VjID0gMTsKKyAgdGltZXIuaXRfdmFsdWUgPSB0aW1lci5pdF9pbnRlcnZhbDsKKyAgQVNT
RVJUX0VRKDAsIHNldGl0aW1lcihJVElNRVJfUFJPRiwgJnRpbWVyLCBOVUxMKSk7CisgIHN0cnVj
dCBzaWdhY3Rpb24gc2lnbmFsX2FjdGlvbjsKKyAgbWVtc2V0KCZzaWduYWxfYWN0aW9uLCAwLCBz
aXplb2Yoc2lnbmFsX2FjdGlvbikpOworICBzaWdlbXB0eXNldCgmc2lnbmFsX2FjdGlvbi5zYV9t
YXNrKTsKKyAgc2lnbmFsX2FjdGlvbi5zYV9zaWdhY3Rpb24gPSBTaWdwcm9mQWN0aW9uOworICBz
aWduYWxfYWN0aW9uLnNhX2ZsYWdzID0gU0FfUkVTVEFSVCB8IFNBX1NJR0lORk87CisgIEFTU0VS
VF9FUSgwLCBzaWdhY3Rpb24oU0lHUFJPRiwgJnNpZ25hbF9hY3Rpb24sIE5VTEwpKTsKK30KKwor
Ly8gRGlzYWJsZXMgSVRJTUVSX1BST0YgdGltZXIgYW5kIGlnbm9yZXMgU0lHUFJPRiBzaWduYWwu
Cit2b2lkIERpc2FibGVTaWdwcm9mQWN0aW9uQW5kVGltZXIoc3RydWN0IHNpZ2FjdGlvbiogb2xk
X3NpZ25hbF9hY3Rpb24pIHsKKyAgc3RydWN0IGl0aW1lcnZhbCB0aW1lcjsKKyAgdGltZXIuaXRf
aW50ZXJ2YWwudHZfc2VjID0gMDsKKyAgdGltZXIuaXRfaW50ZXJ2YWwudHZfdXNlYyA9IDA7Cisg
IHRpbWVyLml0X3ZhbHVlID0gdGltZXIuaXRfaW50ZXJ2YWw7CisgIEFTU0VSVF9FUSgwLCBzZXRp
dGltZXIoSVRJTUVSX1BST0YsICZ0aW1lciwgTlVMTCkpOworICBzdHJ1Y3Qgc2lnYWN0aW9uIHNp
Z25hbF9hY3Rpb247CisgIG1lbXNldCgmc2lnbmFsX2FjdGlvbiwgMCwgc2l6ZW9mKHNpZ25hbF9h
Y3Rpb24pKTsKKyAgc2lnZW1wdHlzZXQoJnNpZ25hbF9hY3Rpb24uc2FfbWFzayk7CisgIHNpZ25h
bF9hY3Rpb24uc2FfaGFuZGxlciA9IFNJR19JR047CisgIEFTU0VSVF9FUSgwLCBzaWdhY3Rpb24o
U0lHUFJPRiwgJnNpZ25hbF9hY3Rpb24sIG9sZF9zaWduYWxfYWN0aW9uKSk7Cit9CisKKy8vIFRl
c3RzIHRoYXQgZGVhdGggdGVzdHMgd29yayB3aGVuIFNJR1BST0YgaGFuZGxlciBhbmQgdGltZXIg
YXJlIHNldC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBGYXN0U2lncHJvZkFjdGlvblNldCkg
eworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOworICBT
ZXRTaWdwcm9mQWN0aW9uQW5kVGltZXIoKTsKKyAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIik7
CisgIHN0cnVjdCBzaWdhY3Rpb24gb2xkX3NpZ25hbF9hY3Rpb247CisgIERpc2FibGVTaWdwcm9m
QWN0aW9uQW5kVGltZXIoJm9sZF9zaWduYWxfYWN0aW9uKTsKKyAgRVhQRUNUX1RSVUUob2xkX3Np
Z25hbF9hY3Rpb24uc2Ffc2lnYWN0aW9uID09IFNpZ3Byb2ZBY3Rpb24pOworfQorCitURVNUX0Yo
VGVzdEZvckRlYXRoVGVzdCwgVGhyZWFkU2FmZVNpZ3Byb2ZBY3Rpb25TZXQpIHsKKyAgdGVzdGlu
Zzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKKyAgU2V0U2ln
cHJvZkFjdGlvbkFuZFRpbWVyKCk7CisgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOworICBz
dHJ1Y3Qgc2lnYWN0aW9uIG9sZF9zaWduYWxfYWN0aW9uOworICBEaXNhYmxlU2lncHJvZkFjdGlv
bkFuZFRpbWVyKCZvbGRfc2lnbmFsX2FjdGlvbik7CisgIEVYUEVDVF9UUlVFKG9sZF9zaWduYWxf
YWN0aW9uLnNhX3NpZ2FjdGlvbiA9PSBTaWdwcm9mQWN0aW9uKTsKK30KKyMgZW5kaWYgIC8vIEdU
RVNUX09TX0xJTlVYCisKKy8vIFJlcGVhdHMgYSByZXByZXNlbnRhdGl2ZSBzYW1wbGUgb2YgZGVh
dGggdGVzdHMgaW4gdGhlICJ0aHJlYWRzYWZlIiBzdHlsZToKKworVEVTVF9GKFRlc3RGb3JEZWF0
aFRlc3QsIFN0YXRpY01lbWJlckZ1bmN0aW9uVGhyZWFkc2FmZVN0eWxlKSB7CisgIHRlc3Rpbmc6
OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7CisgIEFTU0VSVF9E
RUFUSChTdGF0aWNNZW1iZXJGdW5jdGlvbigpLCAiZGVhdGguKlN0YXRpY01lbWJlciIpOworfQor
CitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgTWVtYmVyRnVuY3Rpb25UaHJlYWRzYWZlU3R5bGUp
IHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZl
IjsKKyAgc2hvdWxkX2RpZV8gPSB0cnVlOworICBFWFBFQ1RfREVBVEgoTWVtYmVyRnVuY3Rpb24o
KSwgImluc2lkZS4qTWVtYmVyRnVuY3Rpb24iKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIFRocmVhZHNhZmVEZWF0aFRlc3RJbkxvb3ApIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhk
ZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKKworICBmb3IgKGludCBpID0gMDsgaSA8
IDM7ICsraSkKKyAgICBFWFBFQ1RfRVhJVChfZXhpdChpKSwgdGVzdGluZzo6RXhpdGVkV2l0aENv
ZGUoaSksICIiKSA8PCAiOiBpID0gIiA8PCBpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVz
dCwgVGhyZWFkc2FmZURlYXRoVGVzdEluQ2hhbmdlZERpcikgeworICB0ZXN0aW5nOjpHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOworCisgIENoYW5nZVRvUm9vdERp
cigpOworICBFWFBFQ1RfRVhJVChfZXhpdCgxKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSks
ICIiKTsKKworICBDaGFuZ2VUb1Jvb3REaXIoKTsKKyAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAi
Iik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNaXhlZFN0eWxlcykgeworICB0ZXN0
aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOworICBFWFBF
Q1RfREVBVEgoX2V4aXQoMSksICIiKTsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0
X3N0eWxlKSA9ICJmYXN0IjsKKyAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIik7Cit9CisKKyMg
aWYgR1RFU1RfSEFTX0NMT05FICYmIEdURVNUX0hBU19QVEhSRUFECisKK25hbWVzcGFjZSB7CisK
K2Jvb2wgcHRocmVhZF9mbGFnOworCit2b2lkIFNldFB0aHJlYWRGbGFnKCkgeworICBwdGhyZWFk
X2ZsYWcgPSB0cnVlOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworVEVTVF9GKFRlc3RGb3JEZWF0
aFRlc3QsIERvZXNOb3RFeGVjdXRlQXRmb3JrSG9va3MpIHsKKyAgaWYgKCF0ZXN0aW5nOjpHVEVT
VF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspKSB7CisgICAgdGVzdGluZzo6R1RFU1RfRkxBRyhk
ZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKKyAgICBwdGhyZWFkX2ZsYWcgPSBmYWxz
ZTsKKyAgICBBU1NFUlRfRVEoMCwgcHRocmVhZF9hdGZvcmsoJlNldFB0aHJlYWRGbGFnLCBOVUxM
LCBOVUxMKSk7CisgICAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAiIik7CisgICAgQVNTRVJUX0ZB
TFNFKHB0aHJlYWRfZmxhZyk7CisgIH0KK30KKworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0NMT05F
ICYmIEdURVNUX0hBU19QVEhSRUFECisKKy8vIFRlc3RzIHRoYXQgYSBtZXRob2Qgb2YgYW5vdGhl
ciBjbGFzcyBjYW4gYmUgdXNlZCBpbiBhIGRlYXRoIHRlc3QuCitURVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgTWV0aG9kT2ZBbm90aGVyQ2xhc3MpIHsKKyAgY29uc3QgTWF5RGllIHgodHJ1ZSk7Cisg
IEFTU0VSVF9ERUFUSCh4Lk1lbWJlckZ1bmN0aW9uKCksICJNYXlEaWVcXDpcXDpNZW1iZXJGdW5j
dGlvbiIpOworfQorCisvLyBUZXN0cyB0aGF0IGEgZ2xvYmFsIGZ1bmN0aW9uIGNhbiBiZSB1c2Vk
IGluIGEgZGVhdGggdGVzdC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBHbG9iYWxGdW5jdGlv
bikgeworICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgIkdsb2JhbEZ1bmN0aW9uIik7
Cit9CisKKy8vIFRlc3RzIHRoYXQgYW55IHZhbHVlIGNvbnZlcnRpYmxlIHRvIGFuIFJFIHdvcmtz
IGFzIGEgc2Vjb25kCisvLyBhcmd1bWVudCB0byBFWFBFQ1RfREVBVEguCitURVNUX0YoVGVzdEZv
ckRlYXRoVGVzdCwgQWNjZXB0c0FueXRoaW5nQ29udmVydGlibGVUb1JFKSB7CisgIHN0YXRpYyBj
b25zdCBjaGFyIHJlZ2V4X2Nfc3RyW10gPSAiR2xvYmFsRnVuY3Rpb24iOworICBFWFBFQ1RfREVB
VEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXhfY19zdHIpOworCisgIGNvbnN0IHRlc3Rpbmc6Omlu
dGVybmFsOjpSRSByZWdleChyZWdleF9jX3N0cik7CisgIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5j
dGlvbigpLCByZWdleCk7CisKKyMgaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKworICBjb25z
dCA6OnN0cmluZyByZWdleF9zdHIocmVnZXhfY19zdHIpOworICBFWFBFQ1RfREVBVEgoR2xvYmFs
RnVuY3Rpb24oKSwgcmVnZXhfc3RyKTsKKworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9T
VFJJTkcKKworIyBpZiAhR1RFU1RfVVNFU19QQ1JFCisKKyAgY29uc3QgOjpzdGQ6OnN0cmluZyBy
ZWdleF9zdGRfc3RyKHJlZ2V4X2Nfc3RyKTsKKyAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9u
KCksIHJlZ2V4X3N0ZF9zdHIpOworCisjIGVuZGlmICAvLyAhR1RFU1RfVVNFU19QQ1JFCit9CisK
Ky8vIFRlc3RzIHRoYXQgYSBub24tdm9pZCBmdW5jdGlvbiBjYW4gYmUgdXNlZCBpbiBhIGRlYXRo
IHRlc3QuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgTm9uVm9pZEZ1bmN0aW9uKSB7CisgIEFT
U0VSVF9ERUFUSChOb25Wb2lkRnVuY3Rpb24oKSwgIk5vblZvaWRGdW5jdGlvbiIpOworfQorCisv
LyBUZXN0cyB0aGF0IGZ1bmN0aW9ucyB0aGF0IHRha2UgcGFyYW1ldGVyKHMpIGNhbiBiZSB1c2Vk
IGluIGEgZGVhdGggdGVzdC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBGdW5jdGlvbldpdGhQ
YXJhbWV0ZXIpIHsKKyAgRVhQRUNUX0RFQVRIKERpZUlmKHRydWUpLCAiRGllSWZcXChcXCkiKTsK
KyAgRVhQRUNUX0RFQVRIKERpZUlmTGVzc1RoYW4oMiwgMyksICJEaWVJZkxlc3NUaGFuIik7Cit9
CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQVRIIGNhbiBiZSB1c2VkIG91dHNpZGUgYSBURVNU
LCBURVNUX0YsIG9yIHRlc3QgZml4dHVyZS4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBPdXRz
aWRlRml4dHVyZSkgeworICBEZWF0aFRlc3RTdWJyb3V0aW5lKCk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgZGVhdGggdGVzdHMgY2FuIGJlIGRvbmUgaW5zaWRlIGEgbG9vcC4KK1RFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBJbnNpZGVMb29wKSB7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7
CisgICAgRVhQRUNUX0RFQVRIKERpZUlmTGVzc1RoYW4oLTEsIGkpLCAiRGllSWZMZXNzVGhhbiIp
IDw8ICJ3aGVyZSBpID09ICIgPDwgaTsKKyAgfQorfQorCisvLyBUZXN0cyB0aGF0IGEgY29tcG91
bmQgc3RhdGVtZW50IGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KK1RFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBDb21wb3VuZFN0YXRlbWVudCkgeworICBFWFBFQ1RfREVBVEgoeyAgLy8gTk9M
SU5UCisgICAgY29uc3QgaW50IHggPSAyOworICAgIGNvbnN0IGludCB5ID0geCArIDE7CisgICAg
RGllSWZMZXNzVGhhbih4LCB5KTsKKyAgfSwKKyAgIkRpZUlmTGVzc1RoYW4iKTsKK30KKworLy8g
VGVzdHMgdGhhdCBjb2RlIHRoYXQgZG9lc24ndCBkaWUgY2F1c2VzIGEgZGVhdGggdGVzdCB0byBm
YWlsLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERvZXNOb3REaWUpIHsKKyAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKERpZUlmKGZhbHNlKSwgIkRpZUlmIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZGllIik7Cit9CisKKy8vIFRlc3RzIHRo
YXQgYSBkZWF0aCB0ZXN0IGZhaWxzIHdoZW4gdGhlIGVycm9yIG1lc3NhZ2UgaXNuJ3QgZXhwZWN0
ZWQuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRXJyb3JNZXNzYWdlTWlzbWF0Y2gpIHsKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX0RFQVRIKERp
ZUlmKHRydWUpLCAiRGllSWZMZXNzVGhhbiIpIDw8ICJFbmQgb2YgZGVhdGggdGVzdCBtZXNzYWdl
LiI7CisgIH0sICJkaWVkIGJ1dCBub3Qgd2l0aCBleHBlY3RlZCBlcnJvciIpOworfQorCisvLyBP
biBleGl0LCAqYWJvcnRlZCB3aWxsIGJlIHRydWUgaWZmIHRoZSBFWFBFQ1RfREVBVEgoKSBzdGF0
ZW1lbnQKKy8vIGFib3J0ZWQgdGhlIGZ1bmN0aW9uLgordm9pZCBFeHBlY3REZWF0aFRlc3RIZWxw
ZXIoYm9vbCogYWJvcnRlZCkgeworICAqYWJvcnRlZCA9IHRydWU7CisgIEVYUEVDVF9ERUFUSChE
aWVJZihmYWxzZSksICJEaWVJZiIpOyAgLy8gVGhpcyBhc3NlcnRpb24gc2hvdWxkIGZhaWwuCisg
ICphYm9ydGVkID0gZmFsc2U7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRIIGRvZXNu
J3QgYWJvcnQgdGhlIHRlc3Qgb24gZmFpbHVyZS4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBF
WFBFQ1RfREVBVEgpIHsKKyAgYm9vbCBhYm9ydGVkID0gdHJ1ZTsKKyAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRXhwZWN0RGVhdGhUZXN0SGVscGVyKCZhYm9ydGVkKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgImZhaWxlZCB0byBkaWUiKTsKKyAgRVhQRUNUX0ZBTFNFKGFib3J0ZWQpOwor
fQorCisvLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUFUSCBkb2VzIGFib3J0IHRoZSB0ZXN0IG9uIGZh
aWx1cmUuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQVNTRVJUX0RFQVRIKSB7CisgIHN0YXRp
YyBib29sIGFib3J0ZWQ7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAg
IGFib3J0ZWQgPSB0cnVlOworICAgIEFTU0VSVF9ERUFUSChEaWVJZihmYWxzZSksICJEaWVJZiIp
OyAgLy8gVGhpcyBhc3NlcnRpb24gc2hvdWxkIGZhaWwuCisgICAgYWJvcnRlZCA9IGZhbHNlOwor
ICB9LCAiZmFpbGVkIHRvIGRpZSIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfREVBVEggZXZhbHVhdGVzIHRoZSBhcmd1bWVudHMgZXhhY3RseSBv
bmNlLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFNpbmdsZUV2YWx1YXRpb24pIHsKKyAgaW50
IHggPSAzOworICBFWFBFQ1RfREVBVEgoRGllSWYoKCsreCkgPT0gNCksICJEaWVJZiIpOworCisg
IGNvbnN0IGNoYXIqIHJlZ2V4ID0gIkRpZUlmIjsKKyAgY29uc3QgY2hhciogcmVnZXhfc2F2ZSA9
IHJlZ2V4OworICBFWFBFQ1RfREVBVEgoRGllSWZMZXNzVGhhbigzLCA0KSwgcmVnZXgrKyk7Cisg
IEVYUEVDVF9FUShyZWdleF9zYXZlICsgMSwgcmVnZXgpOworfQorCisvLyBUZXN0cyB0aGF0IHJ1
bi1hd2F5IGRlYXRoIHRlc3RzIGFyZSByZXBvcnRlZCBhcyBmYWlsdXJlcy4KK1RFU1RfRihUZXN0
Rm9yRGVhdGhUZXN0LCBSdW5hd2F5SXNGYWlsdXJlKSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEVYUEVDVF9ERUFUSChzdGF0aWNfY2FzdDx2b2lkPigwKSwgIkZvbyIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGRpZS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBk
ZWF0aCB0ZXN0cyByZXBvcnQgZXhlY3V0aW5nICdyZXR1cm4nIGluIHRoZSBzdGF0ZW1lbnQgYXMK
Ky8vIGZhaWx1cmUuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgUmV0dXJuSXNGYWlsdXJlKSB7
CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9ERUFUSChyZXR1cm4sICJCYXIiKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgImlsbGVnYWwgcmV0dXJuIGluIHRlc3Qgc3RhdGVtZW50LiIp
OworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUJVR19ERUFUSCB3b3JrcyBhcyBleHBlY3Rl
ZCwgdGhhdCBpcywgeW91IGNhbiBzdHJlYW0gYQorLy8gbWVzc2FnZSB0byBpdCwgYW5kIGluIGRl
YnVnIG1vZGUgaXQ6CisvLyAxLiBBc3NlcnRzIG9uIGRlYXRoLgorLy8gMi4gSGFzIG5vIHNpZGUg
ZWZmZWN0LgorLy8KKy8vIEFuZCBpbiBvcHQgbW9kZSwgaXQ6CisvLyAxLiAgSGFzIHNpZGUgZWZm
ZWN0cyBidXQgZG9lcyBub3QgYXNzZXJ0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRlc3RF
eHBlY3REZWJ1Z0RlYXRoKSB7CisgIGludCBzaWRlZWZmZWN0ID0gMDsKKworICAvLyBQdXQgdGhl
IHJlZ2V4IGluIGEgbG9jYWwgdmFyaWFibGUgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGdldCBhbiAi
dW51c2VkIgorICAvLyB3YXJuaW5nIGluIG9wdCBtb2RlLgorICBjb25zdCBjaGFyKiByZWdleCA9
ICJkZWF0aC4qRGllSW5EZWJ1Z0Vsc2UxMiI7CisKKyAgRVhQRUNUX0RFQlVHX0RFQVRIKERpZUlu
RGVidWdFbHNlMTIoJnNpZGVlZmZlY3QpLCByZWdleCkKKyAgICAgIDw8ICJNdXN0IGFjY2VwdCBh
IHN0cmVhbWVkIG1lc3NhZ2UiOworCisjIGlmZGVmIE5ERUJVRworCisgIC8vIENoZWNrcyB0aGF0
IHRoZSBhc3NpZ25tZW50IG9jY3VycyBpbiBvcHQgbW9kZSAoc2lkZWVmZmVjdCkuCisgIEVYUEVD
VF9FUSgxMiwgc2lkZWVmZmVjdCk7CisKKyMgZWxzZQorCisgIC8vIENoZWNrcyB0aGF0IHRoZSBh
c3NpZ25tZW50IGRvZXMgbm90IG9jY3VyIGluIGRiZyBtb2RlIChubyBzaWRlZWZmZWN0KS4KKyAg
RVhQRUNUX0VRKDAsIHNpZGVlZmZlY3QpOworCisjIGVuZGlmCit9CisKKy8vIFRlc3RzIHRoYXQg
QVNTRVJUX0RFQlVHX0RFQVRIIHdvcmtzIGFzIGV4cGVjdGVkLCB0aGF0IGlzLCB5b3UgY2FuIHN0
cmVhbSBhCisvLyBtZXNzYWdlIHRvIGl0LCBhbmQgaW4gZGVidWcgbW9kZSBpdDoKKy8vIDEuIEFz
c2VydHMgb24gZGVhdGguCisvLyAyLiBIYXMgbm8gc2lkZSBlZmZlY3QuCisvLworLy8gQW5kIGlu
IG9wdCBtb2RlLCBpdDoKKy8vIDEuICBIYXMgc2lkZSBlZmZlY3RzIGJ1dCBkb2VzIG5vdCBhc3Nl
cnQuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgVGVzdEFzc2VydERlYnVnRGVhdGgpIHsKKyAg
aW50IHNpZGVlZmZlY3QgPSAwOworCisgIEFTU0VSVF9ERUJVR19ERUFUSChEaWVJbkRlYnVnRWxz
ZTEyKCZzaWRlZWZmZWN0KSwgImRlYXRoLipEaWVJbkRlYnVnRWxzZTEyIikKKyAgICAgIDw8ICJN
dXN0IGFjY2VwdCBhIHN0cmVhbWVkIG1lc3NhZ2UiOworCisjIGlmZGVmIE5ERUJVRworCisgIC8v
IENoZWNrcyB0aGF0IHRoZSBhc3NpZ25tZW50IG9jY3VycyBpbiBvcHQgbW9kZSAoc2lkZWVmZmVj
dCkuCisgIEVYUEVDVF9FUSgxMiwgc2lkZWVmZmVjdCk7CisKKyMgZWxzZQorCisgIC8vIENoZWNr
cyB0aGF0IHRoZSBhc3NpZ25tZW50IGRvZXMgbm90IG9jY3VyIGluIGRiZyBtb2RlIChubyBzaWRl
ZWZmZWN0KS4KKyAgRVhQRUNUX0VRKDAsIHNpZGVlZmZlY3QpOworCisjIGVuZGlmCit9CisKKyMg
aWZuZGVmIE5ERUJVRworCit2b2lkIEV4cGVjdERlYnVnRGVhdGhIZWxwZXIoYm9vbCogYWJvcnRl
ZCkgeworICAqYWJvcnRlZCA9IHRydWU7CisgIEVYUEVDVF9ERUJVR19ERUFUSChyZXR1cm4sICIi
KSA8PCAiVGhpcyBpcyBleHBlY3RlZCB0byBmYWlsLiI7CisgICphYm9ydGVkID0gZmFsc2U7Cit9
CisKKyMgIGlmIEdURVNUX09TX1dJTkRPV1MKK1RFU1QoUG9wVXBEZWF0aFRlc3QsIERvZXNOb3RT
aG93UG9wVXBPbkFib3J0KSB7CisgIHByaW50ZigiVGhpcyB0ZXN0IHNob3VsZCBiZSBjb25zaWRl
cmVkIGZhaWxpbmcgaWYgaXQgc2hvd3MgIgorICAgICAgICAgImFueSBwb3AtdXAgZGlhbG9ncy5c
biIpOworICBmZmx1c2goc3Rkb3V0KTsKKworICBFWFBFQ1RfREVBVEgoeworICAgIHRlc3Rpbmc6
OkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgPSBmYWxzZTsKKyAgICBhYm9ydCgpOworICB9
LCAiIik7Cit9CisjICBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisvLyBUZXN0cyB0aGF0
IEVYUEVDVF9ERUJVR19ERUFUSCBpbiBkZWJ1ZyBtb2RlIGRvZXMgbm90IGFib3J0CisvLyB0aGUg
ZnVuY3Rpb24uCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRXhwZWN0RGVidWdEZWF0aERvZXNO
b3RBYm9ydCkgeworICBib29sIGFib3J0ZWQgPSB0cnVlOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShFeHBlY3REZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwgIiIpOworICBFWFBFQ1RfRkFM
U0UoYWJvcnRlZCk7Cit9CisKK3ZvaWQgQXNzZXJ0RGVidWdEZWF0aEhlbHBlcihib29sKiBhYm9y
dGVkKSB7CisgICphYm9ydGVkID0gdHJ1ZTsKKyAgR1RFU1RfTE9HXyhJTkZPKSA8PCAiQmVmb3Jl
IEFTU0VSVF9ERUJVR19ERUFUSCI7CisgIEFTU0VSVF9ERUJVR19ERUFUSChHVEVTVF9MT0dfKElO
Rk8pIDw8ICJJbiBBU1NFUlRfREVCVUdfREVBVEgiOyByZXR1cm4sICIiKQorICAgICAgPDwgIlRo
aXMgaXMgZXhwZWN0ZWQgdG8gZmFpbC4iOworICBHVEVTVF9MT0dfKElORk8pIDw8ICJBZnRlciBB
U1NFUlRfREVCVUdfREVBVEgiOworICAqYWJvcnRlZCA9IGZhbHNlOworfQorCisvLyBUZXN0cyB0
aGF0IEFTU0VSVF9ERUJVR19ERUFUSCBpbiBkZWJ1ZyBtb2RlIGFib3J0cyB0aGUgZnVuY3Rpb24g
b24KKy8vIGZhaWx1cmUuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0
aEFib3J0cykgeworICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7Cisg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAi
Iik7CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVz
dCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0czIpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAg
YWJvcnRlZCA9IGZhbHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRo
SGVscGVyKCZhYm9ydGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHMzKSB7CisgIHN0YXRp
YyBib29sIGFib3J0ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUo
YWJvcnRlZCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRo
QWJvcnRzNCkgeworICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7Cisg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAi
Iik7CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVz
dCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0czUpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAg
YWJvcnRlZCA9IGZhbHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRo
SGVscGVyKCZhYm9ydGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM2KSB7CisgIHN0YXRp
YyBib29sIGFib3J0ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUo
YWJvcnRlZCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRo
QWJvcnRzNykgeworICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7Cisg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAi
Iik7CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVz
dCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0czgpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAg
YWJvcnRlZCA9IGZhbHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRo
SGVscGVyKCZhYm9ydGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM5KSB7CisgIHN0YXRp
YyBib29sIGFib3J0ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUo
YWJvcnRlZCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRo
QWJvcnRzMTApIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZhbHNlOwor
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwg
IiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworIyBlbmRpZiAgLy8gX05ERUJVRwor
CisvLyBUZXN0cyB0aGUgKl9FWElUIGZhbWlseSBvZiBtYWNyb3MsIHVzaW5nIGEgdmFyaWV0eSBv
ZiBwcmVkaWNhdGVzLgorc3RhdGljIHZvaWQgVGVzdEV4aXRNYWNyb3MoKSB7CisgIEVYUEVDVF9F
WElUKF9leGl0KDEpLCAgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSksICAiIik7CisgIEFTU0VS
VF9FWElUKF9leGl0KDQyKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoNDIpLCAiIik7CisKKyMg
aWYgR1RFU1RfT1NfV0lORE9XUworCisgIC8vIE9mIGFsbCBzaWduYWxzIGVmZmVjdHMgb24gdGhl
IHByb2Nlc3MgZXhpdCBjb2RlLCBvbmx5IHRob3NlIG9mIFNJR0FCUlQKKyAgLy8gYXJlIGRvY3Vt
ZW50ZWQgb24gV2luZG93cy4KKyAgLy8gU2VlIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2Vu
LXVzL3F1ZXJ5LWJpL20vZHd3emt0NGMuCisgIEVYUEVDVF9FWElUKHJhaXNlKFNJR0FCUlQpLCB0
ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgzKSwgIiIpIDw8ICJiX2FyIjsKKworIyBlbGlmICFHVEVT
VF9PU19GVUNIU0lBCisKKyAgLy8gRnVjaHNpYSBoYXMgbm8gdW5peCBzaWduYWxzLgorICBFWFBF
Q1RfRVhJVChyYWlzZShTSUdLSUxMKSwgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHS0lMTCks
ICIiKSA8PCAiZm9vIjsKKyAgQVNTRVJUX0VYSVQocmFpc2UoU0lHVVNSMiksIHRlc3Rpbmc6Oktp
bGxlZEJ5U2lnbmFsKFNJR1VTUjIpLCAiIikgPDwgImJhciI7CisKKyAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoeyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX0VYSVQoX2V4aXQoMCksIHRlc3Rpbmc6Oktp
bGxlZEJ5U2lnbmFsKFNJR1NFR1YpLCAiIikKKyAgICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhw
ZWN0ZWQsIHRvby4iOworICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCB0b28uIik7CisK
KyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfRVhJVChyYWlzZShTSUdTRUdWKSwgdGVzdGluZzo6
RXhpdGVkV2l0aENvZGUoMCksICIiKQorICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZC4iOworICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOworfQorCitURVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgRXhpdE1hY3JvcykgeworICBUZXN0RXhpdE1hY3JvcygpOworfQorCitU
RVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRXhpdE1hY3Jvc1VzaW5nRm9yaykgeworICB0ZXN0aW5n
OjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspID0gdHJ1ZTsKKyAgVGVzdEV4aXRNYWNy
b3MoKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEludmFsaWRTdHlsZSkgeworICB0
ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInJvY29jbyI7CisgIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9ERUFUSChfZXhpdCgw
KSwgIiIpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIjsKKyAgfSwgIlRoaXMgZmFpbHVy
ZSBpcyBleHBlY3RlZC4iKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERlYXRoVGVz
dEZhaWxlZE91dHB1dCkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUp
ID0gImZhc3QiOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKKyAgICAgIEVYUEVDVF9ERUFU
SChEaWVXaXRoTWVzc2FnZSgiZGVhdGhcbiIpLAorICAgICAgICAgICAgICAgICAgICJleHBlY3Rl
ZCBtZXNzYWdlIiksCisgICAgICAiQWN0dWFsIG1zZzpcbiIKKyAgICAgICJbICBERUFUSCAgIF0g
ZGVhdGhcbiIpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRGVhdGhUZXN0VW5leHBl
Y3RlZFJldHVybk91dHB1dCkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5
bGUpID0gImZhc3QiOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKKyAgICAgIEVYUEVDVF9E
RUFUSCh7CisgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJyZXR1cm5pbmdcbiIpOworICAgICAg
ICAgIGZmbHVzaChzdGRlcnIpOworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSwgIiIpLAor
ICAgICAgIiAgICBSZXN1bHQ6IGlsbGVnYWwgcmV0dXJuIGluIHRlc3Qgc3RhdGVtZW50LlxuIgor
ICAgICAgIiBFcnJvciBtc2c6XG4iCisgICAgICAiWyAgREVBVEggICBdIHJldHVybmluZ1xuIik7
Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEZWF0aFRlc3RCYWRFeGl0Q29kZU91dHB1
dCkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOwor
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKKyAgICAgIEVYUEVDVF9FWElUKERpZVdpdGhNZXNz
YWdlKCJleGl0aW5nIHdpdGggcmMgMVxuIiksCisgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpF
eGl0ZWRXaXRoQ29kZSgzKSwKKyAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBtZXNzYWdlIiks
CisgICAgICAiICAgIFJlc3VsdDogZGllZCBidXQgbm90IHdpdGggZXhwZWN0ZWQgZXhpdCBjb2Rl
OlxuIgorICAgICAgIiAgICAgICAgICAgIEV4aXRlZCB3aXRoIGV4aXQgc3RhdHVzIDFcbiIKKyAg
ICAgICJBY3R1YWwgbXNnOlxuIgorICAgICAgIlsgIERFQVRIICAgXSBleGl0aW5nIHdpdGggcmMg
MVxuIik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEZWF0aFRlc3RNdWx0aUxpbmVN
YXRjaEZhaWwpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJm
YXN0IjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBFWFBFQ1RfREVBVEgoRGll
V2l0aE1lc3NhZ2UoImxpbmUgMVxubGluZSAyXG5saW5lIDNcbiIpLAorICAgICAgICAgICAgICAg
ICAgICJsaW5lIDFcbnh5elxubGluZSAzXG4iKSwKKyAgICAgICJBY3R1YWwgbXNnOlxuIgorICAg
ICAgIlsgIERFQVRIICAgXSBsaW5lIDFcbiIKKyAgICAgICJbICBERUFUSCAgIF0gbGluZSAyXG4i
CisgICAgICAiWyAgREVBVEggICBdIGxpbmUgM1xuIik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBEZWF0aFRlc3RNdWx0aUxpbmVNYXRjaFBhc3MpIHsKKyAgdGVzdGluZzo6R1RFU1Rf
RkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAgRVhQRUNUX0RFQVRIKERpZVdpdGhN
ZXNzYWdlKCJsaW5lIDFcbmxpbmUgMlxubGluZSAzXG4iKSwKKyAgICAgICAgICAgICAgICJsaW5l
IDFcbmxpbmUgMlxubGluZSAzXG4iKTsKK30KKworLy8gQSBEZWF0aFRlc3RGYWN0b3J5IHRoYXQg
cmV0dXJucyBNb2NrRGVhdGhUZXN0cy4KK2NsYXNzIE1vY2tEZWF0aFRlc3RGYWN0b3J5IDogcHVi
bGljIERlYXRoVGVzdEZhY3RvcnkgeworIHB1YmxpYzoKKyAgTW9ja0RlYXRoVGVzdEZhY3Rvcnko
KTsKKyAgdmlydHVhbCBib29sIENyZWF0ZShjb25zdCBjaGFyKiBzdGF0ZW1lbnQsCisgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UkUqIHJlZ2V4LAorICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBEZWF0aFRlc3Qq
KiB0ZXN0KTsKKworICAvLyBTZXRzIHRoZSBwYXJhbWV0ZXJzIGZvciBzdWJzZXF1ZW50IGNhbGxz
IHRvIENyZWF0ZS4KKyAgdm9pZCBTZXRQYXJhbWV0ZXJzKGJvb2wgY3JlYXRlLCBEZWF0aFRlc3Q6
OlRlc3RSb2xlIHJvbGUsCisgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdHVzLCBib29sIHBh
c3NlZCk7CisKKyAgLy8gQWNjZXNzb3JzLgorICBpbnQgQXNzdW1lUm9sZUNhbGxzKCkgY29uc3Qg
eyByZXR1cm4gYXNzdW1lX3JvbGVfY2FsbHNfOyB9CisgIGludCBXYWl0Q2FsbHMoKSBjb25zdCB7
IHJldHVybiB3YWl0X2NhbGxzXzsgfQorICBzaXplX3QgUGFzc2VkQ2FsbHMoKSBjb25zdCB7IHJl
dHVybiBwYXNzZWRfYXJnc18uc2l6ZSgpOyB9CisgIGJvb2wgUGFzc2VkQXJndW1lbnQoaW50IG4p
IGNvbnN0IHsgcmV0dXJuIHBhc3NlZF9hcmdzX1tuXTsgfQorICBzaXplX3QgQWJvcnRDYWxscygp
IGNvbnN0IHsgcmV0dXJuIGFib3J0X2FyZ3NfLnNpemUoKTsgfQorICBEZWF0aFRlc3Q6OkFib3J0
UmVhc29uIEFib3J0QXJndW1lbnQoaW50IG4pIGNvbnN0IHsKKyAgICByZXR1cm4gYWJvcnRfYXJn
c19bbl07CisgIH0KKyAgYm9vbCBUZXN0RGVsZXRlZCgpIGNvbnN0IHsgcmV0dXJuIHRlc3RfZGVs
ZXRlZF87IH0KKworIHByaXZhdGU6CisgIGZyaWVuZCBjbGFzcyBNb2NrRGVhdGhUZXN0OworICAv
LyBJZiB0cnVlLCBDcmVhdGUgd2lsbCByZXR1cm4gYSBNb2NrRGVhdGhUZXN0OyBvdGhlcndpc2Ug
aXQgcmV0dXJucworICAvLyBOVUxMLgorICBib29sIGNyZWF0ZV87CisgIC8vIFRoZSB2YWx1ZSBh
IE1vY2tEZWF0aFRlc3Qgd2lsbCByZXR1cm4gZnJvbSBpdHMgQXNzdW1lUm9sZSBtZXRob2QuCisg
IERlYXRoVGVzdDo6VGVzdFJvbGUgcm9sZV87CisgIC8vIFRoZSB2YWx1ZSBhIE1vY2tEZWF0aFRl
c3Qgd2lsbCByZXR1cm4gZnJvbSBpdHMgV2FpdCBtZXRob2QuCisgIGludCBzdGF0dXNfOworICAv
LyBUaGUgdmFsdWUgYSBNb2NrRGVhdGhUZXN0IHdpbGwgcmV0dXJuIGZyb20gaXRzIFBhc3NlZCBt
ZXRob2QuCisgIGJvb2wgcGFzc2VkXzsKKworICAvLyBOdW1iZXIgb2YgdGltZXMgQXNzdW1lUm9s
ZSB3YXMgY2FsbGVkLgorICBpbnQgYXNzdW1lX3JvbGVfY2FsbHNfOworICAvLyBOdW1iZXIgb2Yg
dGltZXMgV2FpdCB3YXMgY2FsbGVkLgorICBpbnQgd2FpdF9jYWxsc187CisgIC8vIFRoZSBhcmd1
bWVudHMgdG8gdGhlIGNhbGxzIHRvIFBhc3NlZCBzaW5jZSB0aGUgbGFzdCBjYWxsIHRvCisgIC8v
IFNldFBhcmFtZXRlcnMuCisgIHN0ZDo6dmVjdG9yPGJvb2w+IHBhc3NlZF9hcmdzXzsKKyAgLy8g
VGhlIGFyZ3VtZW50cyB0byB0aGUgY2FsbHMgdG8gQWJvcnQgc2luY2UgdGhlIGxhc3QgY2FsbCB0
bworICAvLyBTZXRQYXJhbWV0ZXJzLgorICBzdGQ6OnZlY3RvcjxEZWF0aFRlc3Q6OkFib3J0UmVh
c29uPiBhYm9ydF9hcmdzXzsKKyAgLy8gVHJ1ZSBpZiB0aGUgbGFzdCBNb2NrRGVhdGhUZXN0IHJl
dHVybmVkIGJ5IENyZWF0ZSBoYXMgYmVlbgorICAvLyBkZWxldGVkLgorICBib29sIHRlc3RfZGVs
ZXRlZF87Cit9OworCisKKy8vIEEgRGVhdGhUZXN0IGltcGxlbWVudGF0aW9uIHVzZWZ1bCBpbiB0
ZXN0aW5nLiAgSXQgcmV0dXJucyB2YWx1ZXMgc2V0CisvLyBhdCBpdHMgY3JlYXRpb24gZnJvbSBp
dHMgdmFyaW91cyBpbmhlcml0ZWQgRGVhdGhUZXN0IG1ldGhvZHMsIGFuZAorLy8gcmVwb3J0cyBj
YWxscyB0byB0aG9zZSBtZXRob2RzIHRvIGl0cyBwYXJlbnQgTW9ja0RlYXRoVGVzdEZhY3RvcnkK
Ky8vIG9iamVjdC4KK2NsYXNzIE1vY2tEZWF0aFRlc3QgOiBwdWJsaWMgRGVhdGhUZXN0IHsKKyBw
dWJsaWM6CisgIE1vY2tEZWF0aFRlc3QoTW9ja0RlYXRoVGVzdEZhY3RvcnkgKnBhcmVudCwKKyAg
ICAgICAgICAgICAgICBUZXN0Um9sZSByb2xlLCBpbnQgc3RhdHVzLCBib29sIHBhc3NlZCkgOgor
ICAgICAgcGFyZW50XyhwYXJlbnQpLCByb2xlXyhyb2xlKSwgc3RhdHVzXyhzdGF0dXMpLCBwYXNz
ZWRfKHBhc3NlZCkgeworICB9CisgIHZpcnR1YWwgfk1vY2tEZWF0aFRlc3QoKSB7CisgICAgcGFy
ZW50Xy0+dGVzdF9kZWxldGVkXyA9IHRydWU7CisgIH0KKyAgdmlydHVhbCBUZXN0Um9sZSBBc3N1
bWVSb2xlKCkgeworICAgICsrcGFyZW50Xy0+YXNzdW1lX3JvbGVfY2FsbHNfOworICAgIHJldHVy
biByb2xlXzsKKyAgfQorICB2aXJ0dWFsIGludCBXYWl0KCkgeworICAgICsrcGFyZW50Xy0+d2Fp
dF9jYWxsc187CisgICAgcmV0dXJuIHN0YXR1c187CisgIH0KKyAgdmlydHVhbCBib29sIFBhc3Nl
ZChib29sIGV4aXRfc3RhdHVzX29rKSB7CisgICAgcGFyZW50Xy0+cGFzc2VkX2FyZ3NfLnB1c2hf
YmFjayhleGl0X3N0YXR1c19vayk7CisgICAgcmV0dXJuIHBhc3NlZF87CisgIH0KKyAgdmlydHVh
bCB2b2lkIEFib3J0KEFib3J0UmVhc29uIHJlYXNvbikgeworICAgIHBhcmVudF8tPmFib3J0X2Fy
Z3NfLnB1c2hfYmFjayhyZWFzb24pOworICB9CisKKyBwcml2YXRlOgorICBNb2NrRGVhdGhUZXN0
RmFjdG9yeSogY29uc3QgcGFyZW50XzsKKyAgY29uc3QgVGVzdFJvbGUgcm9sZV87CisgIGNvbnN0
IGludCBzdGF0dXNfOworICBjb25zdCBib29sIHBhc3NlZF87Cit9OworCisKKy8vIE1vY2tEZWF0
aFRlc3RGYWN0b3J5IGNvbnN0cnVjdG9yLgorTW9ja0RlYXRoVGVzdEZhY3Rvcnk6Ok1vY2tEZWF0
aFRlc3RGYWN0b3J5KCkKKyAgICA6IGNyZWF0ZV8odHJ1ZSksCisgICAgICByb2xlXyhEZWF0aFRl
c3Q6Ok9WRVJTRUVfVEVTVCksCisgICAgICBzdGF0dXNfKDApLAorICAgICAgcGFzc2VkXyh0cnVl
KSwKKyAgICAgIGFzc3VtZV9yb2xlX2NhbGxzXygwKSwKKyAgICAgIHdhaXRfY2FsbHNfKDApLAor
ICAgICAgcGFzc2VkX2FyZ3NfKCksCisgICAgICBhYm9ydF9hcmdzXygpIHsKK30KKworCisvLyBT
ZXRzIHRoZSBwYXJhbWV0ZXJzIGZvciBzdWJzZXF1ZW50IGNhbGxzIHRvIENyZWF0ZS4KK3ZvaWQg
TW9ja0RlYXRoVGVzdEZhY3Rvcnk6OlNldFBhcmFtZXRlcnMoYm9vbCBjcmVhdGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlYXRoVGVzdDo6VGVzdFJvbGUgcm9s
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXR1cywg
Ym9vbCBwYXNzZWQpIHsKKyAgY3JlYXRlXyA9IGNyZWF0ZTsKKyAgcm9sZV8gPSByb2xlOworICBz
dGF0dXNfID0gc3RhdHVzOworICBwYXNzZWRfID0gcGFzc2VkOworCisgIGFzc3VtZV9yb2xlX2Nh
bGxzXyA9IDA7CisgIHdhaXRfY2FsbHNfID0gMDsKKyAgcGFzc2VkX2FyZ3NfLmNsZWFyKCk7Cisg
IGFib3J0X2FyZ3NfLmNsZWFyKCk7Cit9CisKKworLy8gU2V0cyB0ZXN0IHRvIE5VTEwgKGlmIGNy
ZWF0ZV8gaXMgZmFsc2UpIG9yIHRvIHRoZSBhZGRyZXNzIG9mIGEgbmV3CisvLyBNb2NrRGVhdGhU
ZXN0IG9iamVjdCB3aXRoIHBhcmFtZXRlcnMgdGFrZW4gZnJvbSB0aGUgbGFzdCBjYWxsCisvLyB0
byBTZXRQYXJhbWV0ZXJzIChpZiBjcmVhdGVfIGlzIHRydWUpLiAgQWx3YXlzIHJldHVybnMgdHJ1
ZS4KK2Jvb2wgTW9ja0RlYXRoVGVzdEZhY3Rvcnk6OkNyZWF0ZShjb25zdCBjaGFyKiAvKnN0YXRl
bWVudCovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OlJFKiAvKnJlZ2V4Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogLypmaWxlKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IC8qbGluZSovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERl
YXRoVGVzdCoqIHRlc3QpIHsKKyAgdGVzdF9kZWxldGVkXyA9IGZhbHNlOworICBpZiAoY3JlYXRl
XykgeworICAgICp0ZXN0ID0gbmV3IE1vY2tEZWF0aFRlc3QodGhpcywgcm9sZV8sIHN0YXR1c18s
IHBhc3NlZF8pOworICB9IGVsc2UgeworICAgICp0ZXN0ID0gTlVMTDsKKyAgfQorICByZXR1cm4g
dHJ1ZTsKK30KKworLy8gQSB0ZXN0IGZpeHR1cmUgZm9yIHRlc3RpbmcgdGhlIGxvZ2ljIG9mIHRo
ZSBHVEVTVF9ERUFUSF9URVNUXyBtYWNyby4KKy8vIEl0IGluc3RhbGxzIGEgTW9ja0RlYXRoVGVz
dEZhY3RvcnkgdGhhdCBpcyB1c2VkIGZvciB0aGUgZHVyYXRpb24KKy8vIG9mIHRoZSB0ZXN0IGNh
c2UuCitjbGFzcyBNYWNyb0xvZ2ljRGVhdGhUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewor
IHByb3RlY3RlZDoKKyAgc3RhdGljIHRlc3Rpbmc6OmludGVybmFsOjpSZXBsYWNlRGVhdGhUZXN0
RmFjdG9yeSogcmVwbGFjZXJfOworICBzdGF0aWMgTW9ja0RlYXRoVGVzdEZhY3RvcnkqIGZhY3Rv
cnlfOworCisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7CisgICAgZmFjdG9yeV8gPSBu
ZXcgTW9ja0RlYXRoVGVzdEZhY3Rvcnk7CisgICAgcmVwbGFjZXJfID0gbmV3IHRlc3Rpbmc6Omlu
dGVybmFsOjpSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeShmYWN0b3J5Xyk7CisgIH0KKworICBzdGF0
aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIGRlbGV0ZSByZXBsYWNlcl87CisgICAg
cmVwbGFjZXJfID0gTlVMTDsKKyAgICBkZWxldGUgZmFjdG9yeV87CisgICAgZmFjdG9yeV8gPSBO
VUxMOworICB9CisKKyAgLy8gUnVucyBhIGRlYXRoIHRlc3QgdGhhdCBicmVha3MgdGhlIHJ1bGVz
IGJ5IHJldHVybmluZy4gIFN1Y2ggYSBkZWF0aAorICAvLyB0ZXN0IGNhbm5vdCBiZSBydW4gZGly
ZWN0bHkgZnJvbSBhIHRlc3Qgcm91dGluZSB0aGF0IHVzZXMgYQorICAvLyBNb2NrRGVhdGhUZXN0
LCBvciB0aGUgcmVtYWluZGVyIG9mIHRoZSByb3V0aW5lIHdpbGwgbm90IGJlIGV4ZWN1dGVkLgor
ICBzdGF0aWMgdm9pZCBSdW5SZXR1cm5pbmdEZWF0aFRlc3QoYm9vbCogZmxhZykgeworICAgIEFT
U0VSVF9ERUFUSCh7ICAvLyBOT0xJTlQKKyAgICAgICpmbGFnID0gdHJ1ZTsKKyAgICAgIHJldHVy
bjsKKyAgICB9LCAiIik7CisgIH0KK307CisKK3Rlc3Rpbmc6OmludGVybmFsOjpSZXBsYWNlRGVh
dGhUZXN0RmFjdG9yeSogTWFjcm9Mb2dpY0RlYXRoVGVzdDo6cmVwbGFjZXJfCisgICAgPSBOVUxM
OworTW9ja0RlYXRoVGVzdEZhY3RvcnkqIE1hY3JvTG9naWNEZWF0aFRlc3Q6OmZhY3RvcnlfID0g
TlVMTDsKKworCisvLyBUZXN0IHRoYXQgbm90aGluZyBoYXBwZW5zIHdoZW4gdGhlIGZhY3Rvcnkg
ZG9lc24ndCByZXR1cm4gYSBEZWF0aFRlc3Q6CitURVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwg
Tm90aGluZ0hhcHBlbnMpIHsKKyAgYm9vbCBmbGFnID0gZmFsc2U7CisgIGZhY3RvcnlfLT5TZXRQ
YXJhbWV0ZXJzKGZhbHNlLCBEZWF0aFRlc3Q6Ok9WRVJTRUVfVEVTVCwgMCwgdHJ1ZSk7CisgIEVY
UEVDVF9ERUFUSChmbGFnID0gdHJ1ZSwgIiIpOworICBFWFBFQ1RfRkFMU0UoZmxhZyk7CisgIEVY
UEVDVF9FUSgwLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOworICBFWFBFQ1RfRVEoMCwg
ZmFjdG9yeV8tPldhaXRDYWxscygpKTsKKyAgRVhQRUNUX0VRKDBVLCBmYWN0b3J5Xy0+UGFzc2Vk
Q2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7CisgIEVY
UEVDVF9GQUxTRShmYWN0b3J5Xy0+VGVzdERlbGV0ZWQoKSk7Cit9CisKKy8vIFRlc3QgdGhhdCB0
aGUgcGFyZW50IHByb2Nlc3MgZG9lc24ndCBydW4gdGhlIGRlYXRoIHRlc3QgY29kZSwKKy8vIGFu
ZCB0aGF0IHRoZSBQYXNzZWQgbWV0aG9kIHJldHVybnMgZmFsc2Ugd2hlbiB0aGUgKHNpbXVsYXRl
ZCkKKy8vIGNoaWxkIHByb2Nlc3MgZXhpdHMgd2l0aCBzdGF0dXMgMDoKK1RFU1RfRihNYWNyb0xv
Z2ljRGVhdGhUZXN0LCBDaGlsZEV4aXRzU3VjY2Vzc2Z1bGx5KSB7CisgIGJvb2wgZmxhZyA9IGZh
bHNlOworICBmYWN0b3J5Xy0+U2V0UGFyYW1ldGVycyh0cnVlLCBEZWF0aFRlc3Q6Ok9WRVJTRUVf
VEVTVCwgMCwgdHJ1ZSk7CisgIEVYUEVDVF9ERUFUSChmbGFnID0gdHJ1ZSwgIiIpOworICBFWFBF
Q1RfRkFMU0UoZmxhZyk7CisgIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxz
KCkpOworICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPldhaXRDYWxscygpKTsKKyAgQVNTRVJUX0VR
KDFVLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7CisgIEVYUEVDVF9GQUxTRShmYWN0b3J5Xy0+
UGFzc2VkQXJndW1lbnQoMCkpOworICBFWFBFQ1RfRVEoMFUsIGZhY3RvcnlfLT5BYm9ydENhbGxz
KCkpOworICBFWFBFQ1RfVFJVRShmYWN0b3J5Xy0+VGVzdERlbGV0ZWQoKSk7Cit9CisKKy8vIFRl
c3RzIHRoYXQgdGhlIFBhc3NlZCBtZXRob2Qgd2FzIGdpdmVuIHRoZSBhcmd1bWVudCAidHJ1ZSIg
d2hlbgorLy8gdGhlIChzaW11bGF0ZWQpIGNoaWxkIHByb2Nlc3MgZXhpdHMgd2l0aCBzdGF0dXMg
MToKK1RFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBDaGlsZEV4aXRzVW5zdWNjZXNzZnVsbHkp
IHsKKyAgYm9vbCBmbGFnID0gZmFsc2U7CisgIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJzKHRydWUs
IERlYXRoVGVzdDo6T1ZFUlNFRV9URVNULCAxLCB0cnVlKTsKKyAgRVhQRUNUX0RFQVRIKGZsYWcg
PSB0cnVlLCAiIik7CisgIEVYUEVDVF9GQUxTRShmbGFnKTsKKyAgRVhQRUNUX0VRKDEsIGZhY3Rv
cnlfLT5Bc3N1bWVSb2xlQ2FsbHMoKSk7CisgIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+V2FpdENh
bGxzKCkpOworICBBU1NFUlRfRVEoMVUsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKKyAgRVhQ
RUNUX1RSVUUoZmFjdG9yeV8tPlBhc3NlZEFyZ3VtZW50KDApKTsKKyAgRVhQRUNUX0VRKDBVLCBm
YWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKKyAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3REZWxl
dGVkKCkpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSAoc2ltdWxhdGVkKSBjaGlsZCBwcm9jZXNz
IGV4ZWN1dGVzIHRoZSBkZWF0aCB0ZXN0CisvLyBjb2RlLCBhbmQgaXMgYWJvcnRlZCB3aXRoIHRo
ZSBjb3JyZWN0IEFib3J0UmVhc29uIGlmIGl0CisvLyBleGVjdXRlcyBhIHJldHVybiBzdGF0ZW1l
bnQuCitURVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwgQ2hpbGRQZXJmb3Jtc1JldHVybikgewor
ICBib29sIGZsYWcgPSBmYWxzZTsKKyAgZmFjdG9yeV8tPlNldFBhcmFtZXRlcnModHJ1ZSwgRGVh
dGhUZXN0OjpFWEVDVVRFX1RFU1QsIDAsIHRydWUpOworICBSdW5SZXR1cm5pbmdEZWF0aFRlc3Qo
JmZsYWcpOworICBFWFBFQ1RfVFJVRShmbGFnKTsKKyAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5B
c3N1bWVSb2xlQ2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+V2FpdENhbGxzKCkp
OworICBFWFBFQ1RfRVEoMFUsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKKyAgRVhQRUNUX0VR
KDFVLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKKyAgRVhQRUNUX0VRKERlYXRoVGVzdDo6VEVT
VF9FTkNPVU5URVJFRF9SRVRVUk5fU1RBVEVNRU5ULAorICAgICAgICAgICAgZmFjdG9yeV8tPkFi
b3J0QXJndW1lbnQoMCkpOworICBFWFBFQ1RfVFJVRShmYWN0b3J5Xy0+VGVzdERlbGV0ZWQoKSk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIChzaW11bGF0ZWQpIGNoaWxkIHByb2Nlc3MgaXMgYWJv
cnRlZCB3aXRoIHRoZQorLy8gY29ycmVjdCBBYm9ydFJlYXNvbiBpZiBpdCBkb2VzIG5vdCBkaWUu
CitURVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwgQ2hpbGREb2VzTm90RGllKSB7CisgIGJvb2wg
ZmxhZyA9IGZhbHNlOworICBmYWN0b3J5Xy0+U2V0UGFyYW1ldGVycyh0cnVlLCBEZWF0aFRlc3Q6
OkVYRUNVVEVfVEVTVCwgMCwgdHJ1ZSk7CisgIEVYUEVDVF9ERUFUSChmbGFnID0gdHJ1ZSwgIiIp
OworICBFWFBFQ1RfVFJVRShmbGFnKTsKKyAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5Bc3N1bWVS
b2xlQ2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+V2FpdENhbGxzKCkpOworICBF
WFBFQ1RfRVEoMFUsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKKyAgLy8gVGhpcyB0aW1lIHRo
ZXJlIGFyZSB0d28gY2FsbHMgdG8gQWJvcnQ6IG9uZSBzaW5jZSB0aGUgdGVzdCBkaWRuJ3QKKyAg
Ly8gZGllLCBhbmQgYW5vdGhlciBmcm9tIHRoZSBSZXR1cm5TZW50aW5lbCB3aGVuIGl0J3MgZGVz
dHJveWVkLiAgVGhlCisgIC8vIHNlbnRpbmVsIG5vcm1hbGx5IGlzbid0IGRlc3Ryb3llZCBpZiBh
IHRlc3QgZG9lc24ndCBkaWUsIHNpbmNlCisgIC8vIF9leGl0KDIpIGlzIGNhbGxlZCBpbiB0aGF0
IGNhc2UgYnkgRm9ya2luZ0RlYXRoVGVzdCwgYnV0IG5vdCBieQorICAvLyBvdXIgTW9ja0RlYXRo
VGVzdC4KKyAgQVNTRVJUX0VRKDJVLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKKyAgRVhQRUNU
X0VRKERlYXRoVGVzdDo6VEVTVF9ESURfTk9UX0RJRSwKKyAgICAgICAgICAgIGZhY3RvcnlfLT5B
Ym9ydEFyZ3VtZW50KDApKTsKKyAgRVhQRUNUX0VRKERlYXRoVGVzdDo6VEVTVF9FTkNPVU5URVJF
RF9SRVRVUk5fU1RBVEVNRU5ULAorICAgICAgICAgICAgZmFjdG9yeV8tPkFib3J0QXJndW1lbnQo
MSkpOworICBFWFBFQ1RfVFJVRShmYWN0b3J5Xy0+VGVzdERlbGV0ZWQoKSk7Cit9CisKKy8vIFRl
c3RzIHRoYXQgYSBzdWNjZXNzZnVsIGRlYXRoIHRlc3QgZG9lcyBub3QgcmVnaXN0ZXIgYSBzdWNj
ZXNzZnVsCisvLyB0ZXN0IHBhcnQuCitURVNUKFN1Y2Nlc3NSZWdpc3RyYXRpb25EZWF0aFRlc3Qs
IE5vU3VjY2Vzc1BhcnQpIHsKKyAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIik7CisgIEVYUEVD
VF9FUSgwLCBHZXRVbml0VGVzdEltcGwoKS0+Y3VycmVudF90ZXN0X3Jlc3VsdCgpLT50b3RhbF9w
YXJ0X2NvdW50KCkpOworfQorCitURVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNEZWF0aFRlc3QsIERl
YXRoVGVzdCkgeworICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKSA8PCAidW5leHBlY3RlZCBm
YWlsdXJlIjsKKyAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgInVuZXhwZWN0ZWQgZmFp
bHVyZSI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVD
VF9ERUFUSChfZXhpdCgwKSwgIiIpIDw8ICJleHBlY3RlZCBmYWlsdXJlIjsKKyAgfSwgImV4cGVj
dGVkIGZhaWx1cmUiKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAg
QVNTRVJUX0RFQVRIKF9leGl0KDApLCAiIikgPDwgImV4cGVjdGVkIGZhaWx1cmUiOworICB9LCAi
ZXhwZWN0ZWQgZmFpbHVyZSIpOworfQorCisvLyBUZXN0cyB0aGF0IEdldExhc3RFcnJub0Rlc2Ny
aXB0aW9uIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nIHdoZW4gdGhlCisvLyBsYXN0IGVycm9yIGlz
IDAgYW5kIG5vbi1lbXB0eSBzdHJpbmcgd2hlbiBpdCBpcyBub24temVyby4KK1RFU1QoR2V0TGFz
dEVycm5vRGVzY3JpcHRpb24sIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uV29ya3MpIHsKKyAgZXJy
bm8gPSBFTk9FTlQ7CisgIEVYUEVDVF9TVFJORSgiIiwgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24o
KS5jX3N0cigpKTsKKyAgZXJybm8gPSAwOworICBFWFBFQ1RfU1RSRVEoIiIsIEdldExhc3RFcnJu
b0Rlc2NyaXB0aW9uKCkuY19zdHIoKSk7Cit9CisKKyMgaWYgR1RFU1RfT1NfV0lORE9XUworVEVT
VChBdXRvSGFuZGxlVGVzdCwgQXV0b0hhbmRsZVdvcmtzKSB7CisgIEhBTkRMRSBoYW5kbGUgPSA6
OkNyZWF0ZUV2ZW50KE5VTEwsIEZBTFNFLCBGQUxTRSwgTlVMTCk7CisgIEFTU0VSVF9ORShJTlZB
TElEX0hBTkRMRV9WQUxVRSwgaGFuZGxlKTsKKworICAvLyBUZXN0cyB0aGF0IHRoZSBBdXRvSGFu
ZGxlIGlzIGNvcnJlY3RseSBpbml0aWFsaXplZCB3aXRoIGEgaGFuZGxlLgorICB0ZXN0aW5nOjpp
bnRlcm5hbDo6QXV0b0hhbmRsZSBhdXRvX2hhbmRsZShoYW5kbGUpOworICBFWFBFQ1RfRVEoaGFu
ZGxlLCBhdXRvX2hhbmRsZS5HZXQoKSk7CisKKyAgLy8gVGVzdHMgdGhhdCBSZXNldCBhc3NpZ25z
IElOVkFMSURfSEFORExFX1ZBTFVFLgorICAvLyBOb3RlIHRoYXQgdGhpcyBjYW5ub3QgdmVyaWZ5
IHdoZXRoZXIgdGhlIG9yaWdpbmFsIGhhbmRsZSBpcyBjbG9zZWQuCisgIGF1dG9faGFuZGxlLlJl
c2V0KCk7CisgIEVYUEVDVF9FUShJTlZBTElEX0hBTkRMRV9WQUxVRSwgYXV0b19oYW5kbGUuR2V0
KCkpOworCisgIC8vIFRlc3RzIHRoYXQgUmVzZXQgYXNzaWducyB0aGUgbmV3IGhhbmRsZS4KKyAg
Ly8gTm90ZSB0aGF0IHRoaXMgY2Fubm90IHZlcmlmeSB3aGV0aGVyIHRoZSBvcmlnaW5hbCBoYW5k
bGUgaXMgY2xvc2VkLgorICBoYW5kbGUgPSA6OkNyZWF0ZUV2ZW50KE5VTEwsIEZBTFNFLCBGQUxT
RSwgTlVMTCk7CisgIEFTU0VSVF9ORShJTlZBTElEX0hBTkRMRV9WQUxVRSwgaGFuZGxlKTsKKyAg
YXV0b19oYW5kbGUuUmVzZXQoaGFuZGxlKTsKKyAgRVhQRUNUX0VRKGhhbmRsZSwgYXV0b19oYW5k
bGUuR2V0KCkpOworCisgIC8vIFRlc3RzIHRoYXQgQXV0b0hhbmRsZSBjb250YWlucyBJTlZBTElE
X0hBTkRMRV9WQUxVRSBieSBkZWZhdWx0LgorICB0ZXN0aW5nOjppbnRlcm5hbDo6QXV0b0hhbmRs
ZSBhdXRvX2hhbmRsZTI7CisgIEVYUEVDVF9FUShJTlZBTElEX0hBTkRMRV9WQUxVRSwgYXV0b19o
YW5kbGUyLkdldCgpKTsKK30KKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworIyBpZiBH
VEVTVF9PU19XSU5ET1dTCit0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgQmlnZ2VzdFBhcnNhYmxl
OwordHlwZWRlZiBzaWduZWQgX19pbnQ2NCBCaWdnZXN0U2lnbmVkUGFyc2FibGU7CisjIGVsc2UK
K3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEJpZ2dlc3RQYXJzYWJsZTsKK3R5cGVkZWYgc2ln
bmVkIGxvbmcgbG9uZyBCaWdnZXN0U2lnbmVkUGFyc2FibGU7CisjIGVuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCisKKy8vIFdlIGNhbm5vdCB1c2Ugc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4
KCkgYXMgaXQgY2xhc2hlcyB3aXRoIHRoZQorLy8gbWF4KCkgbWFjcm8gZGVmaW5lZCBieSA8d2lu
ZG93cy5oPi4KK2NvbnN0IEJpZ2dlc3RQYXJzYWJsZSBrQmlnZ2VzdFBhcnNhYmxlTWF4ID0gVUxM
T05HX01BWDsKK2NvbnN0IEJpZ2dlc3RTaWduZWRQYXJzYWJsZSBrQmlnZ2VzdFNpZ25lZFBhcnNh
YmxlTWF4ID0gTExPTkdfTUFYOworCitURVNUKFBhcnNlTmF0dXJhbE51bWJlclRlc3QsIFJlamVj
dHNJbnZhbGlkRm9ybWF0KSB7CisgIEJpZ2dlc3RQYXJzYWJsZSByZXN1bHQgPSAwOworCisgIC8v
IFJlamVjdHMgbm9uLW51bWJlcnMuCisgIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIo
Im5vbi1udW1iZXIgc3RyaW5nIiwgJnJlc3VsdCkpOworCisgIC8vIFJlamVjdHMgbnVtYmVycyB3
aXRoIHdoaXRlc3BhY2UgcHJlZml4LgorICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVy
KCIgMTIzIiwgJnJlc3VsdCkpOworCisgIC8vIFJlamVjdHMgbmVnYXRpdmUgbnVtYmVycy4KKyAg
RVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcigiLTEyMyIsICZyZXN1bHQpKTsKKworICAv
LyBSZWplY3RzIG51bWJlcnMgc3RhcnRpbmcgd2l0aCBhIHBsdXMgc2lnbi4KKyAgRVhQRUNUX0ZB
TFNFKFBhcnNlTmF0dXJhbE51bWJlcigiKzEyMyIsICZyZXN1bHQpKTsKKyAgZXJybm8gPSAwOwor
fQorCitURVNUKFBhcnNlTmF0dXJhbE51bWJlclRlc3QsIFJlamVjdHNPdmVyZmxvd25OdW1iZXJz
KSB7CisgIEJpZ2dlc3RQYXJzYWJsZSByZXN1bHQgPSAwOworCisgIEVYUEVDVF9GQUxTRShQYXJz
ZU5hdHVyYWxOdW1iZXIoIjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5IiwgJnJlc3VsdCkpOworCisg
IHNpZ25lZCBjaGFyIGNoYXJfcmVzdWx0ID0gMDsKKyAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJh
bE51bWJlcigiMjAwIiwgJmNoYXJfcmVzdWx0KSk7CisgIGVycm5vID0gMDsKK30KKworVEVTVChQ
YXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBBY2NlcHRzVmFsaWROdW1iZXJzKSB7CisgIEJpZ2dlc3RQ
YXJzYWJsZSByZXN1bHQgPSAwOworCisgIHJlc3VsdCA9IDA7CisgIEFTU0VSVF9UUlVFKFBhcnNl
TmF0dXJhbE51bWJlcigiMTIzIiwgJnJlc3VsdCkpOworICBFWFBFQ1RfRVEoMTIzVSwgcmVzdWx0
KTsKKworICAvLyBDaGVjayAwIGFzIGFuIGVkZ2UgY2FzZS4KKyAgcmVzdWx0ID0gMTsKKyAgQVNT
RVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKCIwIiwgJnJlc3VsdCkpOworICBFWFBFQ1RfRVEo
MFUsIHJlc3VsdCk7CisKKyAgcmVzdWx0ID0gMTsKKyAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFs
TnVtYmVyKCIwMDAwMCIsICZyZXN1bHQpKTsKKyAgRVhQRUNUX0VRKDBVLCByZXN1bHQpOworfQor
CitURVNUKFBhcnNlTmF0dXJhbE51bWJlclRlc3QsIEFjY2VwdHNUeXBlTGltaXRzKSB7CisgIE1l
c3NhZ2UgbXNnOworICBtc2cgPDwga0JpZ2dlc3RQYXJzYWJsZU1heDsKKworICBCaWdnZXN0UGFy
c2FibGUgcmVzdWx0ID0gMDsKKyAgRVhQRUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKG1zZy5H
ZXRTdHJpbmcoKSwgJnJlc3VsdCkpOworICBFWFBFQ1RfRVEoa0JpZ2dlc3RQYXJzYWJsZU1heCwg
cmVzdWx0KTsKKworICBNZXNzYWdlIG1zZzI7CisgIG1zZzIgPDwga0JpZ2dlc3RTaWduZWRQYXJz
YWJsZU1heDsKKworICBCaWdnZXN0U2lnbmVkUGFyc2FibGUgc2lnbmVkX3Jlc3VsdCA9IDA7Cisg
IEVYUEVDVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihtc2cyLkdldFN0cmluZygpLCAmc2lnbmVk
X3Jlc3VsdCkpOworICBFWFBFQ1RfRVEoa0JpZ2dlc3RTaWduZWRQYXJzYWJsZU1heCwgc2lnbmVk
X3Jlc3VsdCk7CisKKyAgTWVzc2FnZSBtc2czOworICBtc2czIDw8IElOVF9NQVg7CisKKyAgaW50
IGludF9yZXN1bHQgPSAwOworICBFWFBFQ1RfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIobXNnMy5H
ZXRTdHJpbmcoKSwgJmludF9yZXN1bHQpKTsKKyAgRVhQRUNUX0VRKElOVF9NQVgsIGludF9yZXN1
bHQpOworCisgIE1lc3NhZ2UgbXNnNDsKKyAgbXNnNCA8PCBVSU5UX01BWDsKKworICB1bnNpZ25l
ZCBpbnQgdWludF9yZXN1bHQgPSAwOworICBFWFBFQ1RfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIo
bXNnNC5HZXRTdHJpbmcoKSwgJnVpbnRfcmVzdWx0KSk7CisgIEVYUEVDVF9FUShVSU5UX01BWCwg
dWludF9yZXN1bHQpOworfQorCitURVNUKFBhcnNlTmF0dXJhbE51bWJlclRlc3QsIFdvcmtzRm9y
U2hvcnRlckludGVnZXJzKSB7CisgIHNob3J0IHNob3J0X3Jlc3VsdCA9IDA7CisgIEFTU0VSVF9U
UlVFKFBhcnNlTmF0dXJhbE51bWJlcigiMTIzIiwgJnNob3J0X3Jlc3VsdCkpOworICBFWFBFQ1Rf
RVEoMTIzLCBzaG9ydF9yZXN1bHQpOworCisgIHNpZ25lZCBjaGFyIGNoYXJfcmVzdWx0ID0gMDsK
KyAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKCIxMjMiLCAmY2hhcl9yZXN1bHQpKTsK
KyAgRVhQRUNUX0VRKDEyMywgY2hhcl9yZXN1bHQpOworfQorCisjIGlmIEdURVNUX09TX1dJTkRP
V1MKK1RFU1QoRW52aXJvbm1lbnRUZXN0LCBIYW5kbGVGaXRzSW50b1NpemVUKSB7CisgIC8vIEZJ
WE1FOiBSZW1vdmUgdGhpcyB0ZXN0IGFmdGVyIHRoaXMgY29uZGl0aW9uIGlzIHZlcmlmaWVkCisg
IC8vIGluIGEgc3RhdGljIGFzc2VydGlvbiBpbiBndGVzdC1kZWF0aC10ZXN0LmNjIGluIHRoZSBm
dW5jdGlvbgorICAvLyBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvci4KKyAgQVNTRVJUX1RSVUUoc2l6
ZW9mKEhBTkRMRSkgPD0gc2l6ZW9mKHNpemVfdCkpOworfQorIyBlbmRpZiAgLy8gR1RFU1RfT1Nf
V0lORE9XUworCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQvQVNTRVJU
X0RFQVRIX0lGX1NVUFBPUlRFRCB0cmlnZ2VyCisvLyBmYWlsdXJlcyB3aGVuIGRlYXRoIHRlc3Rz
IGFyZSBhdmFpbGFibGUgb24gdGhlIHN5c3RlbS4KK1RFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jv
c0RlYXRoVGVzdCwgRXhwZWN0c0RlYXRoV2hlbkRlYXRoVGVzdHNBdmFpbGFibGUpIHsKKyAgRVhQ
RUNUX0RFQVRIX0lGX1NVUFBPUlRFRChEaWVJbnNpZGUoIkNvbmREZWF0aFRlc3RFeHBlY3RNYWNy
byIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWF0aCBpbnNpZGUgQ29uZERlYXRo
VGVzdEV4cGVjdE1hY3JvIik7CisgIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoRGllSW5zaWRl
KCJDb25kRGVhdGhUZXN0QXNzZXJ0TWFjcm8iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZGVhdGggaW5zaWRlIENvbmREZWF0aFRlc3RBc3NlcnRNYWNybyIpOworCisgIC8vIEVtcHR5
IHN0YXRlbWVudCB3aWxsIG5vdCBjcmFzaCwgd2hpY2ggbXVzdCB0cmlnZ2VyIGEgZmFpbHVyZS4K
KyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAi
IiksICIiKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRF
RCg7LCAiIiksICIiKTsKK30KKworVEVTVChJbkRlYXRoVGVzdENoaWxkRGVhdGhUZXN0LCBSZXBv
cnRzRGVhdGhUZXN0Q29ycmVjdGx5SW5GYXN0U3R5bGUpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxB
RyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKKyAgRVhQRUNUX0ZBTFNFKEluRGVhdGhUZXN0
Q2hpbGQoKSk7CisgIEVYUEVDVF9ERUFUSCh7CisgICAgZnByaW50ZihzdGRlcnIsIEluRGVhdGhU
ZXN0Q2hpbGQoKSA/ICJJbnNpZGUiIDogIk91dHNpZGUiKTsKKyAgICBmZmx1c2goc3RkZXJyKTsK
KyAgICBfZXhpdCgxKTsKKyAgfSwgIkluc2lkZSIpOworfQorCitURVNUKEluRGVhdGhUZXN0Q2hp
bGREZWF0aFRlc3QsIFJlcG9ydHNEZWF0aFRlc3RDb3JyZWN0bHlJblRocmVhZFNhZmVTdHlsZSkg
eworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUi
OworICBFWFBFQ1RfRkFMU0UoSW5EZWF0aFRlc3RDaGlsZCgpKTsKKyAgRVhQRUNUX0RFQVRIKHsK
KyAgICBmcHJpbnRmKHN0ZGVyciwgSW5EZWF0aFRlc3RDaGlsZCgpID8gIkluc2lkZSIgOiAiT3V0
c2lkZSIpOworICAgIGZmbHVzaChzdGRlcnIpOworICAgIF9leGl0KDEpOworICB9LCAiSW5zaWRl
Iik7Cit9CisKKyNlbHNlICAvLyAhR1RFU1RfSEFTX0RFQVRIX1RFU1QgZm9sbG93cworCit1c2lu
ZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q2FwdHVyZVN0ZGVycjsKK3VzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpHZXRDYXB0dXJlZFN0ZGVycjsKKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEhfSUZf
U1VQUE9SVEVEL0FTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgYXJlIHN0aWxsCisvLyBkZWZpbmVk
IGJ1dCBkbyBub3QgdHJpZ2dlciBmYWlsdXJlcyB3aGVuIGRlYXRoIHRlc3RzIGFyZSBub3QgYXZh
aWxhYmxlIG9uCisvLyB0aGUgc3lzdGVtLgorVEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zVGVz
dCwgV2FybnNXaGVuRGVhdGhUZXN0c05vdEF2YWlsYWJsZSkgeworICAvLyBFbXB0eSBzdGF0ZW1l
bnQgd2lsbCBub3QgY3Jhc2gsIGJ1dCB0aGF0IHNob3VsZCBub3QgdHJpZ2dlciBhIGZhaWx1cmUK
KyAgLy8gd2hlbiBkZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZC4KKyAgQ2FwdHVyZVN0ZGVy
cigpOworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKTsKKyAgc3RkOjpzdHJpbmcg
b3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKKyAgQVNTRVJUX1RSVUUoTlVMTCAhPSBzdHJz
dHIob3V0cHV0LmNfc3RyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWF0aCB0
ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikpOworICBBU1NFUlRfVFJV
RShOVUxMICE9IHN0cnN0cihvdXRwdXQuY19zdHIoKSwgIjsiKSk7CisKKyAgLy8gVGhlIHN0cmVh
bWVkIG1lc3NhZ2Ugc2hvdWxkIG5vdCBiZSBwcmludGVkIGFzIHRoZXJlIGlzIG5vIHRlc3QgZmFp
bHVyZS4KKyAgQ2FwdHVyZVN0ZGVycigpOworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDss
ICIiKSA8PCAic3RyZWFtZWQgbWVzc2FnZSI7CisgIG91dHB1dCA9IEdldENhcHR1cmVkU3RkZXJy
KCk7CisgIEFTU0VSVF9UUlVFKE5VTEwgPT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLCAic3RyZWFt
ZWQgbWVzc2FnZSIpKTsKKworICBDYXB0dXJlU3RkZXJyKCk7CisgIEFTU0VSVF9ERUFUSF9JRl9T
VVBQT1JURUQoOywgIiIpOyAgLy8gTk9MSU5UCisgIG91dHB1dCA9IEdldENhcHR1cmVkU3RkZXJy
KCk7CisgIEFTU0VSVF9UUlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiRGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24g
dGhpcyBwbGF0Zm9ybSIpKTsKKyAgQVNTRVJUX1RSVUUoTlVMTCAhPSBzdHJzdHIob3V0cHV0LmNf
c3RyKCksICI7IikpOworCisgIENhcHR1cmVTdGRlcnIoKTsKKyAgQVNTRVJUX0RFQVRIX0lGX1NV
UFBPUlRFRCg7LCAiIikgPDwgInN0cmVhbWVkIG1lc3NhZ2UiOyAgLy8gTk9MSU5UCisgIG91dHB1
dCA9IEdldENhcHR1cmVkU3RkZXJyKCk7CisgIEFTU0VSVF9UUlVFKE5VTEwgPT0gc3Ryc3RyKG91
dHB1dC5jX3N0cigpLCAic3RyZWFtZWQgbWVzc2FnZSIpKTsKK30KKwordm9pZCBGdW5jV2l0aEFz
c2VydChpbnQqIG4pIHsKKyAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChyZXR1cm47LCAiIik7
CisgICgqbikrKzsKK30KKworLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVE
IGRvZXMgbm90IHJldHVybiBmcm9tIHRoZSBjdXJyZW50CisvLyBmdW5jdGlvbiAoYXMgQVNTRVJU
X0RFQVRIIGRvZXMpIGlmIGRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkLgorVEVTVChDb25k
aXRpb25hbERlYXRoTWFjcm9zVGVzdCwgQXNzZXJ0RGVhdERvZXNOb3RSZXR1cm5oSWZVbnN1cHBv
cnRlZCkgeworICBpbnQgbiA9IDA7CisgIEZ1bmNXaXRoQXNzZXJ0KCZuKTsKKyAgRVhQRUNUX0VR
KDEsIG4pOworfQorCisjZW5kaWYgIC8vICFHVEVTVF9IQVNfREVBVEhfVEVTVAorCisvLyBUZXN0
cyB0aGF0IHRoZSBkZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29kZSB3aGljaCBtYXkgb3Ig
bWF5IG5vdAorLy8gYmUgZm9sbG93ZWQgYnkgb3BlcmF0b3I8PCwgYW5kIHRoYXQgaW4gZWl0aGVy
IGNhc2UgdGhlIGNvbXBsZXRlIHRleHQKKy8vIGNvbXByaXNlcyBvbmx5IGEgc2luZ2xlIEMrKyBz
dGF0ZW1lbnQuCisvLworLy8gVGhlIHN5bnRheCBzaG91bGQgd29yayB3aGV0aGVyIGRlYXRoIHRl
c3RzIGFyZSBhdmFpbGFibGUgb3Igbm90LgorVEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zU3lu
dGF4RGVhdGhUZXN0LCBTaW5nbGVTdGF0ZW1lbnQpIHsKKyAgaWYgKEFsd2F5c0ZhbHNlKCkpCisg
ICAgLy8gVGhpcyB3b3VsZCBmYWlsIGlmIGV4ZWN1dGVkOyB0aGlzIGlzIGEgY29tcGlsYXRpb24g
dGVzdCBvbmx5CisgICAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChyZXR1cm4sICIiKTsKKwor
ICBpZiAoQWx3YXlzVHJ1ZSgpKQorICAgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQo
MSksICIiKTsKKyAgZWxzZQorICAgIC8vIFRoaXMgZW1wdHkgImVsc2UiIGJyYW5jaCBpcyBtZWFu
dCB0byBlbnN1cmUgdGhhdCBFWFBFQ1RfREVBVEgKKyAgICAvLyBkb2Vzbid0IGV4cGFuZCBpbnRv
IGFuICJpZiIgc3RhdGVtZW50IHdpdGhvdXQgYW4gImVsc2UiCisgICAgOyAgLy8gTk9MSU5UCisK
KyAgaWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChyZXR1
cm4sICIiKSA8PCAiZGlkIG5vdCBkaWUiOworCisgIGlmIChBbHdheXNGYWxzZSgpKQorICAgIDsg
IC8vIE5PTElOVAorICBlbHNlCisgICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChfZXhpdCgx
KSwgIiIpIDw8IDEgPDwgMiA8PCAzOworfQorCisvLyBUZXN0cyB0aGF0IGNvbmRpdGlvbmFsIGRl
YXRoIHRlc3QgbWFjcm9zIGV4cGFuZCB0byBjb2RlIHdoaWNoIGludGVyYWN0cworLy8gd2VsbCB3
aXRoIHN3aXRjaCBzdGF0ZW1lbnRzLgorVEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zU3ludGF4
RGVhdGhUZXN0LCBTd2l0Y2hTdGF0ZW1lbnQpIHsKKyAgLy8gTWljcm9zb2Z0IGNvbXBpbGVyIHVz
dWFsbHkgY29tcGxhaW5zIGFib3V0IHN3aXRjaCBzdGF0ZW1lbnRzIHdpdGhvdXQKKyAgLy8gY2Fz
ZSBsYWJlbHMuIFdlIHN1cHByZXNzIHRoYXQgd2FybmluZyBmb3IgdGhpcyB0ZXN0LgorICBHVEVT
VF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MDY1KQorCisgIHN3aXRjaCAoMCkKKyAgICBk
ZWZhdWx0OgorICAgICAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChfZXhpdCgxKSwgIiIpCisg
ICAgICAgICAgPDwgImV4aXQgaW4gZGVmYXVsdCBzd2l0Y2ggaGFuZGxlciI7CisKKyAgc3dpdGNo
ICgwKQorICAgIGNhc2UgMDoKKyAgICAgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQo
MSksICIiKSA8PCAiZXhpdCBpbiBzd2l0Y2ggY2FzZSI7CisKKyAgR1RFU1RfRElTQUJMRV9NU0Nf
V0FSTklOR1NfUE9QXygpCit9CisKKy8vIFRlc3RzIHRoYXQgYSB0ZXN0IGNhc2Ugd2hvc2UgbmFt
ZSBlbmRzIHdpdGggIkRlYXRoVGVzdCIgd29ya3MgZmluZQorLy8gb24gV2luZG93cy4KK1RFU1Qo
Tm90QURlYXRoVGVzdCwgVGVzdCkgeworICBTVUNDRUVEKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWRlYXRoLXRlc3RfZXhf
dGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iOGI5NDcwZmM4OGFkMTdhYWViNjY0ZDQ3YzI3MGNmY2FhNzMx
YmVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYwpAQCAtMCwwICsxLDkyIEBACisvLyBDb3B5cmln
aHQgMjAxMCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8v
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlv
bi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vCisvLyBUZXN0cyB0aGF0IHZl
cmlmeSBpbnRlcmFjdGlvbiBvZiBleGNlcHRpb25zIGFuZCBkZWF0aCB0ZXN0cy4KKworI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgor
CisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworIyBpZiBHVEVTVF9IQVNfU0VICisjICBpbmNs
dWRlIDx3aW5kb3dzLmg+ICAgICAgICAgIC8vIEZvciBSYWlzZUV4Y2VwdGlvbigpLgorIyBlbmRp
ZgorCisjIGluY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgorCisjIGlmIEdURVNUX0hBU19FWENF
UFRJT05TCisKKyMgIGluY2x1ZGUgPGV4Y2VwdGlvbj4gIC8vIEZvciBzdGQ6OmV4Y2VwdGlvbi4K
KworLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyByZXBvcnQgdGhyb3duIGV4Y2VwdGlvbnMgYXMg
ZmFpbHVyZXMgYW5kIHRoYXQgdGhlCisvLyBleGNlcHRpb25zIGRvIG5vdCBlc2NhcGUgZGVhdGgg
dGVzdCBtYWNyb3MuCitURVNUKEN4eEV4Y2VwdGlvbkRlYXRoVGVzdCwgRXhjZXB0aW9uSXNGYWls
dXJlKSB7CisgIHRyeSB7CisgICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRI
KHRocm93IDEsICIiKSwgInRocmV3IGFuIGV4Y2VwdGlvbiIpOworICB9IGNhdGNoICguLi4pIHsg
IC8vIE5PTElOVAorICAgIEZBSUwoKSA8PCAiQW4gZXhjZXB0aW9uIGVzY2FwZWQgYSBkZWF0aCB0
ZXN0IG1hY3JvIGludm9jYXRpb24gIgorICAgICAgICAgICA8PCAid2l0aCBjYXRjaF9leGNlcHRp
b25zICIKKyAgICAgICAgICAgPDwgKHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9u
cykgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKKyAgfQorfQorCitjbGFzcyBUZXN0RXhjZXB0
aW9uIDogcHVibGljIHN0ZDo6ZXhjZXB0aW9uIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgY29uc3Qg
Y2hhciogd2hhdCgpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gImV4Y2VwdGlvbmFsIG1lc3NhZ2Ui
OyB9Cit9OworCitURVNUKEN4eEV4Y2VwdGlvbkRlYXRoVGVzdCwgUHJpbnRzTWVzc2FnZUZvclN0
ZEV4Y2VwdGlvbnMpIHsKKyAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgZXhjZXB0aW9uIG1lc3NhZ2Ug
aXMgcXVvdGVkIGluIHRoZSBmYWlsdXJlIHRleHQuCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEVYUEVDVF9ERUFUSCh0aHJvdyBUZXN0RXhjZXB0aW9uKCksICIiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgImV4Y2VwdGlvbmFsIG1lc3NhZ2UiKTsKKyAgLy8gVmVyaWZpZXMgdGhhdCB0
aGUgbG9jYXRpb24gaXMgbWVudGlvbmVkIGluIHRoZSBmYWlsdXJlIHRleHQuCisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ERUFUSCh0aHJvdyBUZXN0RXhjZXB0aW9uKCksICIiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgImdvb2dsZXRlc3QtZGVhdGgtdGVzdF9leF90ZXN0
LmNjIik7Cit9CisjIGVuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisjIGlmIEdURVNU
X0hBU19TRUgKKy8vIFRlc3RzIHRoYXQgZW5hYmxpbmcgaW50ZXJjZXB0aW9uIG9mIFNFSCBleGNl
cHRpb25zIHdpdGggdGhlCisvLyBjYXRjaF9leGNlcHRpb25zIGZsYWcgZG9lcyBub3QgaW50ZXJm
ZXJlIHdpdGggU0VIIGV4Y2VwdGlvbnMgYmVpbmcKKy8vIHRyZWF0ZWQgYXMgZGVhdGggYnkgZGVh
dGggdGVzdHMuCitURVNUKFNlaEV4Y2VwdGlvbkRlYXNUZXN0LCBDYXRjaEV4Y2VwdGlvbnNEb2Vz
Tm90SW50ZXJmZXJlKSB7CisgIEVYUEVDVF9ERUFUSChSYWlzZUV4Y2VwdGlvbig0MiwgMHgwLCAw
LCBOVUxMKSwgIiIpCisgICAgICA8PCAid2l0aCBjYXRjaF9leGNlcHRpb25zICIKKyAgICAgIDw8
ICh0ZXN0aW5nOjpHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpID8gImVuYWJsZWQiIDogImRp
c2FibGVkIik7Cit9CisjIGVuZGlmCisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QK
KworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIHRlc3Rpbmc6OkluaXRHb29n
bGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRp
b25zKSA9IEdURVNUX0VOQUJMRV9DQVRDSF9FWENFUFRJT05TXyAhPSAwOworICByZXR1cm4gUlVO
X0FMTF9URVNUUygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9nb29nbGV0ZXN0LWVudi12YXItdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTFlZmVlZTFlYWI4YzZk
YWNiNWQyOTI2ZjRiNWM5MDgwOTM4ZGIxMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3QucHkKQEAgLTAsMCArMSwx
MTcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xl
IEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlZl
cmlmaWVzIHRoYXQgR29vZ2xlIFRlc3QgY29ycmVjdGx5IHBhcnNlcyBlbnZpcm9ubWVudCB2YXJp
YWJsZXMuIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworCitJU19X
SU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCitJU19MSU5VWCA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBh
bmQgb3MudW5hbWUoKVswXSA9PSAnTGludXgnCisKK0NPTU1BTkQgPSBndGVzdF90ZXN0X3V0aWxz
LkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3RfJykKKworZW52
aXJvbiA9IG9zLmVudmlyb24uY29weSgpCisKKworZGVmIEFzc2VydEVxKGV4cGVjdGVkLCBhY3R1
YWwpOgorICBpZiBleHBlY3RlZCAhPSBhY3R1YWw6CisgICAgcHJpbnQgJ0V4cGVjdGVkOiAlcycg
JSAoZXhwZWN0ZWQsKQorICAgIHByaW50ICcgIEFjdHVhbDogJXMnICUgKGFjdHVhbCwpCisgICAg
cmFpc2UgQXNzZXJ0aW9uRXJyb3IKKworCitkZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToK
KyAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxlIHRvICd2YWx1ZSc7IHVuc2V0cyBpdCB3aGVuICd2
YWx1ZScgaXMgTm9uZS4iIiIKKworICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKKyAgICBlbnZpcm9u
W2Vudl92YXJdID0gdmFsdWUKKyAgZWxpZiBlbnZfdmFyIGluIGVudmlyb246CisgICAgZGVsIGVu
dmlyb25bZW52X3Zhcl0KKworCitkZWYgR2V0RmxhZyhmbGFnKToKKyAgIiIiUnVucyBnb29nbGV0
ZXN0LWVudi12YXItdGVzdF8gYW5kIHJldHVybnMgaXRzIG91dHB1dC4iIiIKKworICBhcmdzID0g
W0NPTU1BTkRdCisgIGlmIGZsYWcgaXMgbm90IE5vbmU6CisgICAgYXJncyArPSBbZmxhZ10KKyAg
cmV0dXJuIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhhcmdzLCBlbnY9ZW52aXJvbikub3V0
cHV0CisKKworZGVmIFRlc3RGbGFnKGZsYWcsIHRlc3RfdmFsLCBkZWZhdWx0X3ZhbCk6CisgICIi
IlZlcmlmaWVzIHRoYXQgdGhlIGdpdmVuIGZsYWcgaXMgYWZmZWN0ZWQgYnkgdGhlIGNvcnJlc3Bv
bmRpbmcgZW52IHZhci4iIiIKKworICBlbnZfdmFyID0gJ0dURVNUXycgKyBmbGFnLnVwcGVyKCkK
KyAgU2V0RW52VmFyKGVudl92YXIsIHRlc3RfdmFsKQorICBBc3NlcnRFcSh0ZXN0X3ZhbCwgR2V0
RmxhZyhmbGFnKSkKKyAgU2V0RW52VmFyKGVudl92YXIsIE5vbmUpCisgIEFzc2VydEVxKGRlZmF1
bHRfdmFsLCBHZXRGbGFnKGZsYWcpKQorCisKK2NsYXNzIEdUZXN0RW52VmFyVGVzdChndGVzdF90
ZXN0X3V0aWxzLlRlc3RDYXNlKToKKworICBkZWYgdGVzdEVudlZhckFmZmVjdHNGbGFnKHNlbGYp
OgorICAgICIiIlRlc3RzIHRoYXQgZW52aXJvbm1lbnQgdmFyaWFibGUgc2hvdWxkIGFmZmVjdCB0
aGUgY29ycmVzcG9uZGluZyBmbGFnLiIiIgorCisgICAgVGVzdEZsYWcoJ2JyZWFrX29uX2ZhaWx1
cmUnLCAnMScsICcwJykKKyAgICBUZXN0RmxhZygnY29sb3InLCAneWVzJywgJ2F1dG8nKQorICAg
IFRlc3RGbGFnKCdmaWx0ZXInLCAnRm9vVGVzdC5CYXInLCAnKicpCisgICAgU2V0RW52VmFyKCdY
TUxfT1VUUFVUX0ZJTEUnLCBOb25lKSAgIyBGb3IgJ291dHB1dCcgdGVzdAorICAgIFRlc3RGbGFn
KCdvdXRwdXQnLCAneG1sOnRtcC9mb28ueG1sJywgJycpCisgICAgVGVzdEZsYWcoJ3ByaW50X3Rp
bWUnLCAnMCcsICcxJykKKyAgICBUZXN0RmxhZygncmVwZWF0JywgJzk5OScsICcxJykKKyAgICBU
ZXN0RmxhZygndGhyb3dfb25fZmFpbHVyZScsICcxJywgJzAnKQorICAgIFRlc3RGbGFnKCdkZWF0
aF90ZXN0X3N0eWxlJywgJ3RocmVhZHNhZmUnLCAnZmFzdCcpCisgICAgVGVzdEZsYWcoJ2NhdGNo
X2V4Y2VwdGlvbnMnLCAnMCcsICcxJykKKworICAgIGlmIElTX0xJTlVYOgorICAgICAgVGVzdEZs
YWcoJ2RlYXRoX3Rlc3RfdXNlX2ZvcmsnLCAnMScsICcwJykKKyAgICAgIFRlc3RGbGFnKCdzdGFj
a190cmFjZV9kZXB0aCcsICcwJywgJzEwMCcpCisKKworICBkZWYgdGVzdFhtbE91dHB1dEZpbGUo
c2VsZik6CisgICAgIiIiVGVzdHMgdGhhdCAkWE1MX09VVFBVVF9GSUxFIGFmZmVjdHMgdGhlIG91
dHB1dCBmbGFnLiIiIgorCisgICAgU2V0RW52VmFyKCdHVEVTVF9PVVRQVVQnLCBOb25lKQorICAg
IFNldEVudlZhcignWE1MX09VVFBVVF9GSUxFJywgJ3RtcC9iYXIueG1sJykKKyAgICBBc3NlcnRF
cSgneG1sOnRtcC9iYXIueG1sJywgR2V0RmxhZygnb3V0cHV0JykpCisKKyAgZGVmIHRlc3RYbWxP
dXRwdXRGaWxlT3ZlcnJpZGUoc2VsZik6CisgICAgIiIiVGVzdHMgdGhhdCAkWE1MX09VVFBVVF9G
SUxFIGlzIG92ZXJyaWRkZW4gYnkgJEdURVNUX09VVFBVVC4iIiIKKworICAgIFNldEVudlZhcign
R1RFU1RfT1VUUFVUJywgJ3htbDp0bXAvZm9vLnhtbCcpCisgICAgU2V0RW52VmFyKCdYTUxfT1VU
UFVUX0ZJTEUnLCAndG1wL2Jhci54bWwnKQorICAgIEFzc2VydEVxKCd4bWw6dG1wL2Zvby54bWwn
LCBHZXRGbGFnKCdvdXRwdXQnKSkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rl
c3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LWVudi12YXItdGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQyYWE4MmY3
NGZhYTIxMjAxZTc5YWUwZTVjM2I1Njg1NTNkZjMzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3RfLmNjCkBAIC0w
LDAgKzEsMTIyIEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKworLy8gQSBoZWxwZXIgcHJvZ3JhbSBmb3IgdGVzdGluZyB0aGF0IEdvb2dsZSBUZXN0IHBh
cnNlcyB0aGUgZW52aXJvbm1lbnQKKy8vIHZhcmlhYmxlcyBjb3JyZWN0bHkuCisKKyNpbmNsdWRl
IDxpb3N0cmVhbT4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAic3JjL2d0
ZXN0LWludGVybmFsLWlubC5oIgorCit1c2luZyA6OnN0ZDo6Y291dDsKKworbmFtZXNwYWNlIHRl
c3RpbmcgeworCisvLyBUaGUgcHVycG9zZSBvZiB0aGlzIGlzIHRvIG1ha2UgdGhlIHRlc3QgbW9y
ZSByZWFsaXN0aWMgYnkgZW5zdXJpbmcKKy8vIHRoYXQgdGhlIFVuaXRUZXN0IHNpbmdsZXRvbiBp
cyBjcmVhdGVkIGJlZm9yZSBtYWluKCkgaXMgZW50ZXJlZC4KKy8vIFdlIGRvbid0IGFjdHVhbCBy
dW4gdGhlIFRFU1QgaXRzZWxmLgorVEVTVChHVGVzdEVudlZhclRlc3QsIER1bW15KSB7Cit9CisK
K3ZvaWQgUHJpbnRGbGFnKGNvbnN0IGNoYXIqIGZsYWcpIHsKKyAgaWYgKHN0cmNtcChmbGFnLCAi
YnJlYWtfb25fZmFpbHVyZSIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZMQUcoYnJlYWtf
b25fZmFpbHVyZSk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChmbGFnLCAiY2F0
Y2hfZXhjZXB0aW9ucyIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZMQUcoY2F0Y2hfZXhj
ZXB0aW9ucyk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChmbGFnLCAiY29sb3Ii
KSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKGNvbG9yKTsKKyAgICByZXR1cm47Cisg
IH0KKworICBpZiAoc3RyY21wKGZsYWcsICJkZWF0aF90ZXN0X3N0eWxlIikgPT0gMCkgeworICAg
IGNvdXQgPDwgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKTsKKyAgICByZXR1cm47CisgIH0K
KworICBpZiAoc3RyY21wKGZsYWcsICJkZWF0aF90ZXN0X3VzZV9mb3JrIikgPT0gMCkgeworICAg
IGNvdXQgPDwgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKTsKKyAgICByZXR1cm47Cisg
IH0KKworICBpZiAoc3RyY21wKGZsYWcsICJmaWx0ZXIiKSA9PSAwKSB7CisgICAgY291dCA8PCBH
VEVTVF9GTEFHKGZpbHRlcik7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChmbGFn
LCAib3V0cHV0IikgPT0gMCkgeworICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhvdXRwdXQpOworICAg
IHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgInByaW50X3RpbWUiKSA9PSAwKSB7
CisgICAgY291dCA8PCBHVEVTVF9GTEFHKHByaW50X3RpbWUpOworICAgIHJldHVybjsKKyAgfQor
CisgIGlmIChzdHJjbXAoZmxhZywgInJlcGVhdCIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNU
X0ZMQUcocmVwZWF0KTsKKyAgICByZXR1cm47CisgIH0KKworICBpZiAoc3RyY21wKGZsYWcsICJz
dGFja190cmFjZV9kZXB0aCIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZMQUcoc3RhY2tf
dHJhY2VfZGVwdGgpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgInRo
cm93X29uX2ZhaWx1cmUiKSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKHRocm93X29u
X2ZhaWx1cmUpOworICAgIHJldHVybjsKKyAgfQorCisgIGNvdXQgPDwgIkludmFsaWQgZmxhZyBu
YW1lICIgPDwgZmxhZworICAgICAgIDw8ICIuICBWYWxpZCBuYW1lcyBhcmUgYnJlYWtfb25fZmFp
bHVyZSwgY29sb3IsIGZpbHRlciwgZXRjLlxuIjsKKyAgZXhpdCgxKTsKK30KKworfSAgLy8gbmFt
ZXNwYWNlIHRlc3RpbmcKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIHRl
c3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICBpZiAoYXJnYyAhPSAyKSB7
CisgICAgY291dCA8PCAiVXNhZ2U6IGdvb2dsZXRlc3QtZW52LXZhci10ZXN0XyBOQU1FX09GX0ZM
QUdcbiI7CisgICAgcmV0dXJuIDE7CisgIH0KKworICB0ZXN0aW5nOjpQcmludEZsYWcoYXJndlsx
XSk7CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9nb29nbGV0ZXN0LWZpbGVwYXRoLXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2dvb2dsZXRlc3QtZmlsZXBhdGgtdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zN2YwMmZiNGJk
Nzc5N2QxNGQzODNhMDVmYTE5N2MzNmIzMTgyNWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWZpbGVwYXRoLXRlc3QuY2MKQEAgLTAs
MCArMSw2NTEgQEAKKy8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoK
Ky8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
Ly8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLwor
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
Ky8vCisvLyBHb29nbGUgVGVzdCBmaWxlcGF0aCB1dGlsaXRpZXMKKy8vCisvLyBUaGlzIGZpbGUg
dGVzdHMgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIHVzZWQgaW50ZXJuYWxseSBieQorLy8gR29vZ2xl
IFRlc3QuICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4KKy8vCisv
LyBUaGlzIGZpbGUgaXMgI2luY2x1ZGVkIGZyb20gZ3Rlc3QtaW50ZXJuYWwuaC4KKy8vIERvIG5v
dCAjaW5jbHVkZSB0aGlzIGZpbGUgYW55d2hlcmUgZWxzZSEKKworI2luY2x1ZGUgImd0ZXN0L2lu
dGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNs
dWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCisKKyNpZiBHVEVTVF9PU19XSU5ET1dTX01P
QklMRQorIyBpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBOT0xJTlQKKyNlbGlmIEdURVNUX09TX1dJ
TkRPV1MKKyMgaW5jbHVkZSA8ZGlyZWN0Lmg+ICAvLyBOT0xJTlQKKyNlbmRpZiAgLy8gR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKKworbmFtZXNwYWNlIHRlc3RpbmcgeworbmFtZXNwYWNlIGludGVy
bmFsIHsKK25hbWVzcGFjZSB7CisKKyNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorLy8gRklY
TUU6IE1vdmUgdGhlc2UgdG8gdGhlIFBPU0lYIGFkYXB0ZXIgc2VjdGlvbiBpbgorLy8gZ3Rlc3Qt
cG9ydC5oLgorCisvLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSB0aGUgcmVtb3ZlIEMgZnVuY3Rp
b24uCitpbnQgcmVtb3ZlKGNvbnN0IGNoYXIqIHBhdGgpIHsKKyAgTFBDV1NUUiB3cGF0aCA9IFN0
cmluZzo6QW5zaVRvVXRmMTYocGF0aCk7CisgIGludCByZXQgPSBEZWxldGVGaWxlKHdwYXRoKSA/
IDAgOiAtMTsKKyAgZGVsZXRlIFtdIHdwYXRoOworICByZXR1cm4gcmV0OworfQorLy8gV2luZG93
cyBDRSBkb2Vzbid0IGhhdmUgdGhlIF9ybWRpciBDIGZ1bmN0aW9uLgoraW50IF9ybWRpcihjb25z
dCBjaGFyKiBwYXRoKSB7CisgIEZpbGVQYXRoIGZpbGVwYXRoKHBhdGgpOworICBMUENXU1RSIHdw
YXRoID0gU3RyaW5nOjpBbnNpVG9VdGYxNigKKyAgICAgIGZpbGVwYXRoLlJlbW92ZVRyYWlsaW5n
UGF0aFNlcGFyYXRvcigpLmNfc3RyKCkpOworICBpbnQgcmV0ID0gUmVtb3ZlRGlyZWN0b3J5KHdw
YXRoKSA/IDAgOiAtMTsKKyAgZGVsZXRlIFtdIHdwYXRoOworICByZXR1cm4gcmV0OworfQorCisj
ZWxzZQorCitURVNUKEdldEN1cnJlbnREaXJUZXN0LCBSZXR1cm5zQ3VycmVudERpcikgeworICBj
b25zdCBGaWxlUGF0aCBvcmlnaW5hbF9kaXIgPSBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpOwor
ICBFWFBFQ1RfRkFMU0Uob3JpZ2luYWxfZGlyLklzRW1wdHkoKSk7CisKKyAgcG9zaXg6OkNoRGly
KEdURVNUX1BBVEhfU0VQXyk7CisgIGNvbnN0IEZpbGVQYXRoIGN3ZCA9IEZpbGVQYXRoOjpHZXRD
dXJyZW50RGlyKCk7CisgIHBvc2l4OjpDaERpcihvcmlnaW5hbF9kaXIuY19zdHIoKSk7CisKKyMg
aWYgR1RFU1RfT1NfV0lORE9XUworCisgIC8vIFNraXBzIHRoZSAiOiIuCisgIGNvbnN0IGNoYXIq
IGNvbnN0IGN3ZF93aXRob3V0X2RyaXZlID0gc3RyY2hyKGN3ZC5jX3N0cigpLCAnOicpOworICBB
U1NFUlRfVFJVRShjd2Rfd2l0aG91dF9kcml2ZSAhPSBOVUxMKTsKKyAgRVhQRUNUX1NUUkVRKEdU
RVNUX1BBVEhfU0VQXywgY3dkX3dpdGhvdXRfZHJpdmUgKyAxKTsKKworIyBlbHNlCisKKyAgRVhQ
RUNUX0VRKEdURVNUX1BBVEhfU0VQXywgY3dkLnN0cmluZygpKTsKKworIyBlbmRpZgorfQorCisj
ZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisKK1RFU1QoSXNFbXB0eVRlc3QsIFJl
dHVybnNUcnVlRm9yRW1wdHlQYXRoKSB7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIiKS5Jc0Vt
cHR5KCkpOworfQorCitURVNUKElzRW1wdHlUZXN0LCBSZXR1cm5zRmFsc2VGb3JOb25FbXB0eVBh
dGgpIHsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJhIikuSXNFbXB0eSgpKTsKKyAgRVhQRUNU
X0ZBTFNFKEZpbGVQYXRoKCIuIikuSXNFbXB0eSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRo
KCJhL2IiKS5Jc0VtcHR5KCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImFcXGJcXCIpLklz
RW1wdHkoKSk7Cit9CisKKy8vIFJlbW92ZURpcmVjdG9yeU5hbWUgIiIgLT4gIiIKK1RFU1QoUmVt
b3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFdoZW5FbXB0eU5hbWUpIHsKKyAgRVhQRUNUX0VRKCIiLCBG
aWxlUGF0aCgiIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKK30KKworLy8gUmVt
b3ZlRGlyZWN0b3J5TmFtZSAiYWZpbGUiIC0+ICJhZmlsZSIKK1RFU1QoUmVtb3ZlRGlyZWN0b3J5
TmFtZVRlc3QsIEJ1dE5vRGlyZWN0b3J5KSB7CisgIEVYUEVDVF9FUSgiYWZpbGUiLAorICAgICAg
RmlsZVBhdGgoImFmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKK30KKwor
Ly8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiL2FmaWxlIiAtPiAiYWZpbGUiCitURVNUKFJlbW92ZURp
cmVjdG9yeU5hbWVUZXN0LCBSb290RmlsZVNob3VsZEdpdmVGaWxlTmFtZSkgeworICBFWFBFQ1Rf
RVEoImFmaWxlIiwKKyAgICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1v
dmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1l
ICJhZGlyLyIgLT4gIiIKK1RFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFdoZXJlVGhlcmVJ
c05vRmlsZU5hbWUpIHsKKyAgRVhQRUNUX0VRKCIiLAorICAgICAgRmlsZVBhdGgoImFkaXIiIEdU
RVNUX1BBVEhfU0VQXykuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKK30KKworLy8g
UmVtb3ZlRGlyZWN0b3J5TmFtZSAiYWRpci9hZmlsZSIgLT4gImFmaWxlIgorVEVTVChSZW1vdmVE
aXJlY3RvcnlOYW1lVGVzdCwgU2hvdWxkR2l2ZUZpbGVOYW1lKSB7CisgIEVYUEVDVF9FUSgiYWZp
bGUiLAorICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1v
dmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1l
ICJhZGlyL3N1YmRpci9hZmlsZSIgLT4gImFmaWxlIgorVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1l
VGVzdCwgU2hvdWxkQWxzb0dpdmVGaWxlTmFtZSkgeworICBFWFBFQ1RfRVEoImFmaWxlIiwKKyAg
ICAgIEZpbGVQYXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9T
RVBfICJhZmlsZSIpCisgICAgICAuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKK30K
KworI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCisKKy8vIFRlc3RzIHRoYXQgUmVtb3ZlRGly
ZWN0b3J5TmFtZSgpIHdvcmtzIHdpdGggdGhlIGFsdGVybmF0ZSBzZXBhcmF0b3IKKy8vIG9uIFdp
bmRvd3MuCisKKy8vIFJlbW92ZURpcmVjdG9yeU5hbWUoIi9hZmlsZSIpIC0+ICJhZmlsZSIKK1RF
U1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFJvb3RGaWxlU2hvdWxkR2l2ZUZpbGVOYW1lRm9y
QWx0ZXJuYXRlU2VwYXJhdG9yKSB7CisgIEVYUEVDVF9FUSgiYWZpbGUiLCBGaWxlUGF0aCgiL2Fm
aWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlRGly
ZWN0b3J5TmFtZSgiYWRpci8iKSAtPiAiIgorVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwg
V2hlcmVUaGVyZUlzTm9GaWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgeworICBFWFBFQ1Rf
RVEoIiIsIEZpbGVQYXRoKCJhZGlyLyIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7
Cit9CisKKy8vIFJlbW92ZURpcmVjdG9yeU5hbWUoImFkaXIvYWZpbGUiKSAtPiAiYWZpbGUiCitU
RVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRHaXZlRmlsZU5hbWVGb3JBbHRlcm5h
dGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNUX0VRKCJhZmlsZSIsIEZpbGVQYXRoKCJhZGlyL2FmaWxl
IikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlRGlyZWN0
b3J5TmFtZSgiYWRpci9zdWJkaXIvYWZpbGUiKSAtPiAiYWZpbGUiCitURVNUKFJlbW92ZURpcmVj
dG9yeU5hbWVUZXN0LCBTaG91bGRBbHNvR2l2ZUZpbGVOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9y
KSB7CisgIEVYUEVDVF9FUSgiYWZpbGUiLAorICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvc3Vi
ZGlyL2FmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKK30KKworI2VuZGlm
CisKKy8vIFJlbW92ZUZpbGVOYW1lICIiIC0+ICIuLyIKK1RFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0
LCBFbXB0eU5hbWUpIHsKKyNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorICAvLyBPbiBXaW5k
b3dzIENFLCB3ZSB1c2UgdGhlIHJvb3QgYXMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorICBFWFBF
Q1RfRVEoR1RFU1RfUEFUSF9TRVBfLCBGaWxlUGF0aCgiIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJp
bmcoKSk7CisjZWxzZQorICBFWFBFQ1RfRVEoIi4iIEdURVNUX1BBVEhfU0VQXywgRmlsZVBhdGgo
IiIpLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOworI2VuZGlmCit9CisKKy8vIFJlbW92ZUZp
bGVOYW1lICJhZGlyLyIgLT4gImFkaXIvIgorVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEJ1dE5v
RmlsZSkgeworICBFWFBFQ1RfRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXywKKyAgICAgIEZpbGVQ
YXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8pLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOwor
fQorCisvLyBSZW1vdmVGaWxlTmFtZSAiYWRpci9hZmlsZSIgLT4gImFkaXIvIgorVEVTVChSZW1v
dmVGaWxlTmFtZVRlc3QsIEdpdmVzRGlyTmFtZSkgeworICBFWFBFQ1RfRVEoImFkaXIiIEdURVNU
X1BBVEhfU0VQXywKKyAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8g
ImFmaWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZUZpbGVO
YW1lICJhZGlyL3N1YmRpci9hZmlsZSIgLT4gImFkaXIvc3ViZGlyLyIKK1RFU1QoUmVtb3ZlRmls
ZU5hbWVUZXN0LCBHaXZlc0RpckFuZFN1YkRpck5hbWUpIHsKKyAgRVhQRUNUX0VRKCJhZGlyIiBH
VEVTVF9QQVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgRmlsZVBhdGgo
ImFkaXIiIEdURVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikK
KyAgICAgIC5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlRmlsZU5h
bWUgIi9hZmlsZSIgLT4gIi8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNSb290RGly
KSB7CisgIEVYUEVDVF9FUShHVEVTVF9QQVRIX1NFUF8sCisgICAgICBGaWxlUGF0aChHVEVTVF9Q
QVRIX1NFUF8gImFmaWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKyNpZiBH
VEVTVF9IQVNfQUxUX1BBVEhfU0VQXworCisvLyBUZXN0cyB0aGF0IFJlbW92ZUZpbGVOYW1lKCkg
d29ya3Mgd2l0aCB0aGUgYWx0ZXJuYXRlIHNlcGFyYXRvciBvbgorLy8gV2luZG93cy4KKworLy8g
UmVtb3ZlRmlsZU5hbWUoImFkaXIvIikgLT4gImFkaXIvIgorVEVTVChSZW1vdmVGaWxlTmFtZVRl
c3QsIEJ1dE5vRmlsZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEoImFkaXIi
IEdURVNUX1BBVEhfU0VQXywKKyAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyLyIpLlJlbW92ZUZp
bGVOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVGaWxlTmFtZSgiYWRpci9hZmlsZSIp
IC0+ICJhZGlyLyIKK1RFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc0Rpck5hbWVGb3JBbHRl
cm5hdGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNUX0VRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8sCisg
ICAgICAgICAgICBGaWxlUGF0aCgiYWRpci9hZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5n
KCkpOworfQorCisvLyBSZW1vdmVGaWxlTmFtZSgiYWRpci9zdWJkaXIvYWZpbGUiKSAtPiAiYWRp
ci9zdWJkaXIvIgorVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzRGlyQW5kU3ViRGlyTmFt
ZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEoImFkaXIiIEdURVNUX1BBVEhf
U0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8sCisgICAgICAgICAgICBGaWxlUGF0aCgiYWRp
ci9zdWJkaXIvYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKK30KKworLy8gUmVt
b3ZlRmlsZU5hbWUoIi9hZmlsZSIpIC0+ICJcIgorVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdp
dmVzUm9vdERpckZvckFsdGVybmF0ZVNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEoR1RFU1RfUEFU
SF9TRVBfLCBGaWxlUGF0aCgiL2FmaWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Cit9
CisKKyNlbmRpZgorCitURVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlV2hlbk51bWJlcklz
WmVybykgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQ
YXRoKCJmb28iKSwgRmlsZVBhdGgoImJhciIpLAorICAgICAgMCwgInhtbCIpOworICBFWFBFQ1Rf
RVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFsLnN0cmluZygpKTsKK30K
KworVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZUZpbGVOYW1lTnVtYmVyR3RaZXJvKSB7
CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoImZv
byIpLCBGaWxlUGF0aCgiYmFyIiksCisgICAgICAxMiwgInhtbCIpOworICBFWFBFQ1RfRVEoImZv
byIgR1RFU1RfUEFUSF9TRVBfICJiYXJfMTIueG1sIiwgYWN0dWFsLnN0cmluZygpKTsKK30KKwor
VEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZUZpbGVOYW1lV2l0aFNsYXNoTnVtYmVySXNa
ZXJvKSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBh
dGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKSwKKyAgICAgIEZpbGVQYXRoKCJiYXIiKSwgMCwgInht
bCIpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFs
LnN0cmluZygpKTsKK30KKworVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZUZpbGVOYW1l
V2l0aFNsYXNoTnVtYmVyR3RaZXJvKSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpN
YWtlRmlsZU5hbWUoRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKSwKKyAgICAgIEZpbGVQ
YXRoKCJiYXIiKSwgMTIsICJ4bWwiKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQ
XyAiYmFyXzEyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoTWFrZUZpbGVOYW1l
VGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVySXNaZXJvQW5kRGlySXNFbXB0eSkgeworICBGaWxlUGF0
aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCIiKSwgRmlsZVBhdGgo
ImJhciIpLAorICAgICAgMCwgInhtbCIpOworICBFWFBFQ1RfRVEoImJhci54bWwiLCBhY3R1YWwu
c3RyaW5nKCkpOworfQorCitURVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlV2hlbk51bWJl
cklzTm90WmVyb0FuZERpcklzRW1wdHkpIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6
Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiIiksIEZpbGVQYXRoKCJiYXIiKSwKKyAgICAgIDE0LCAi
eG1sIik7CisgIEVYUEVDVF9FUSgiYmFyXzE0LnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisK
K1RFU1QoQ29uY2F0UGF0aHNUZXN0LCBXb3Jrc1doZW5EaXJEb2VzTm90RW5kV2l0aFBhdGhTZXAp
IHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJm
b28iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRo
KCJiYXIueG1sIikpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1s
IiwgYWN0dWFsLnN0cmluZygpKTsKK30KKworVEVTVChDb25jYXRQYXRoc1Rlc3QsIFdvcmtzV2hl
blBhdGgxRW5kc1dpdGhQYXRoU2VwKSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpD
b25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJhci54bWwiKSk7CisgIEVY
UEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuc3RyaW5nKCkp
OworfQorCitURVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDFCZWluZ0VtcHR5KSB7CisgIEZpbGVQ
YXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiYmFyLnhtbCIpKTsK
KyAgRVhQRUNUX0VRKCJiYXIueG1sIiwgYWN0dWFsLnN0cmluZygpKTsKK30KKworVEVTVChDb25j
YXRQYXRoc1Rlc3QsIFBhdGgyQmVpbmdFbXB0eSkgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxl
UGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIpLCBGaWxlUGF0aCgiIikpOworICBFWFBF
Q1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNU
KENvbmNhdFBhdGhzVGVzdCwgQm90aFBhdGhCZWluZ0VtcHR5KSB7CisgIEZpbGVQYXRoIGFjdHVh
bCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiIiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiIikpOworICBFWFBFQ1RfRVEoIiIs
IGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMUNvbnRh
aW5zUGF0aFNlcCkgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMo
RmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb29iYXIueG1sIikpOworICBFWFBF
Q1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXyAiZm9vYmFy
LnhtbCIsCisgICAgICAgICAgICBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKENvbmNhdFBh
dGhzVGVzdCwgUGF0aDJDb250YWluc1BhdGhTZXApIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmls
ZVBhdGg6OkNvbmNhdFBhdGhzKAorICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBf
KSwKKyAgICAgIEZpbGVQYXRoKCJiYXIiIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIpKTsKKyAg
RVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBHVEVTVF9QQVRIX1NFUF8gImJh
ci54bWwiLAorICAgICAgICAgICAgYWN0dWFsLnN0cmluZygpKTsKK30KKworVEVTVChDb25jYXRQ
YXRoc1Rlc3QsIFBhdGgyRW5kc1dpdGhQYXRoU2VwKSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZp
bGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiYmFyIiBHVEVTVF9QQVRIX1NFUF8pKTsK
KyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBHVEVTVF9QQVRIX1NFUF8s
IGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAi
IiAtPiAiIgorVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBFbXB0eVN0cmlu
ZykgeworICBFWFBFQ1RfRVEoIiIsIEZpbGVQYXRoKCIiKS5SZW1vdmVUcmFpbGluZ1BhdGhTZXBh
cmF0b3IoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAi
Zm9vIiAtPiAiZm9vIgorVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBGaWxl
Tm9TbGFzaFN0cmluZykgeworICBFWFBFQ1RfRVEoImZvbyIsIEZpbGVQYXRoKCJmb28iKS5SZW1v
dmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZVRyYWls
aW5nUGF0aFNlcGFyYXRvciAiZm9vLyIgLT4gImZvbyIKK1RFU1QoUmVtb3ZlVHJhaWxpbmdQYXRo
U2VwYXJhdG9yVGVzdCwgU2hvdWxkUmVtb3ZlVHJhaWxpbmdTZXBhcmF0b3IpIHsKKyAgRVhQRUNU
X0VRKCJmb28iLAorICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKS5SZW1vdmVU
cmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5zdHJpbmcoKSk7CisjaWYgR1RFU1RfSEFTX0FMVF9QQVRI
X1NFUF8KKyAgRVhQRUNUX0VRKCJmb28iLCBGaWxlUGF0aCgiZm9vLyIpLlJlbW92ZVRyYWlsaW5n
UGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKKyNlbmRpZgorfQorCisvLyBSZW1vdmVUcmFpbGlu
Z1BhdGhTZXBhcmF0b3IgImZvby9iYXIvIiAtPiAiZm9vL2Jhci8iCitURVNUKFJlbW92ZVRyYWls
aW5nUGF0aFNlcGFyYXRvclRlc3QsIFNob3VsZFJlbW92ZUxhc3RTZXBhcmF0b3IpIHsKKyAgRVhQ
RUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKKyAgICAgICAgICAgIEZpbGVQYXRo
KCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBHVEVTVF9QQVRIX1NFUF8pCisgICAgICAgICAg
ICAgICAgLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKK30KKworLy8g
UmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28vYmFyIiAtPiAiZm9vL2JhciIKK1RFU1Qo
UmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgU2hvdWxkUmV0dXJuVW5tb2RpZmllZCkg
eworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgICAgICAgICAg
RmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiKQorICAgICAgICAgICAgICAgIC5S
ZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5zdHJpbmcoKSk7Cit9CisKK1RFU1QoRGlyZWN0
b3J5VGVzdCwgUm9vdERpcmVjdG9yeUV4aXN0cykgeworI2lmIEdURVNUX09TX1dJTkRPV1MgIC8v
IFdlIGFyZSBvbiBXaW5kb3dzLgorICBjaGFyIGN1cnJlbnRfZHJpdmVbX01BWF9QQVRIXTsgIC8v
IE5PTElOVAorICBjdXJyZW50X2RyaXZlWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oX2dldGRyaXZl
KCkgKyAnQScgLSAxKTsKKyAgY3VycmVudF9kcml2ZVsxXSA9ICc6JzsKKyAgY3VycmVudF9kcml2
ZVsyXSA9ICdcXCc7CisgIGN1cnJlbnRfZHJpdmVbM10gPSAnXDAnOworICBFWFBFQ1RfVFJVRShG
aWxlUGF0aChjdXJyZW50X2RyaXZlKS5EaXJlY3RvcnlFeGlzdHMoKSk7CisjZWxzZQorICBFWFBF
Q1RfVFJVRShGaWxlUGF0aCgiLyIpLkRpcmVjdG9yeUV4aXN0cygpKTsKKyNlbmRpZiAgLy8gR1RF
U1RfT1NfV0lORE9XUworfQorCisjaWYgR1RFU1RfT1NfV0lORE9XUworVEVTVChEaXJlY3RvcnlU
ZXN0LCBSb290T2ZXcm9uZ0RyaXZlRG9lc05vdEV4aXN0cykgeworICBjb25zdCBpbnQgc2F2ZWRf
ZHJpdmVfID0gX2dldGRyaXZlKCk7CisgIC8vIEZpbmQgYSBkcml2ZSB0aGF0IGRvZXNuJ3QgZXhp
c3QuIFN0YXJ0IHdpdGggJ1onIHRvIGF2b2lkIGNvbW1vbiBvbmVzLgorICBmb3IgKGNoYXIgZHJp
dmUgPSAnWic7IGRyaXZlID49ICdBJzsgZHJpdmUtLSkKKyAgICBpZiAoX2NoZHJpdmUoZHJpdmUg
LSAnQScgKyAxKSA9PSAtMSkgeworICAgICAgY2hhciBub25fZHJpdmVbX01BWF9QQVRIXTsgIC8v
IE5PTElOVAorICAgICAgbm9uX2RyaXZlWzBdID0gZHJpdmU7CisgICAgICBub25fZHJpdmVbMV0g
PSAnOic7CisgICAgICBub25fZHJpdmVbMl0gPSAnXFwnOworICAgICAgbm9uX2RyaXZlWzNdID0g
J1wwJzsKKyAgICAgIEVYUEVDVF9GQUxTRShGaWxlUGF0aChub25fZHJpdmUpLkRpcmVjdG9yeUV4
aXN0cygpKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgX2NoZHJpdmUoc2F2ZWRfZHJpdmVfKTsK
K30KKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjaWYgIUdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFCisvLyBXaW5kb3dzIENFIF9kb2VzXyBjb25zaWRlciBhbiBlbXB0eSBkaXJlY3Rvcnkg
dG8gZXhpc3QuCitURVNUKERpcmVjdG9yeVRlc3QsIEVtcHR5UGF0aERpcmVjdG9yeURvZXNOb3RF
eGlzdCkgeworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIiIpLkRpcmVjdG9yeUV4aXN0cygpKTsK
K30KKyNlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisKK1RFU1QoRGlyZWN0b3J5
VGVzdCwgQ3VycmVudERpcmVjdG9yeUV4aXN0cykgeworI2lmIEdURVNUX09TX1dJTkRPV1MgIC8v
IFdlIGFyZSBvbiBXaW5kb3dzLgorIyBpZm5kZWYgX1dJTjMyX0NFICAvLyBXaW5kb3dzIENFIGRv
ZXNuJ3QgaGF2ZSBhIGN1cnJlbnQgZGlyZWN0b3J5LgorCisgIEVYUEVDVF9UUlVFKEZpbGVQYXRo
KCIuIikuRGlyZWN0b3J5RXhpc3RzKCkpOworICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiLlxcIiku
RGlyZWN0b3J5RXhpc3RzKCkpOworCisjIGVuZGlmICAvLyBfV0lOMzJfQ0UKKyNlbHNlCisgIEVY
UEVDVF9UUlVFKEZpbGVQYXRoKCIuIikuRGlyZWN0b3J5RXhpc3RzKCkpOworICBFWFBFQ1RfVFJV
RShGaWxlUGF0aCgiLi8iKS5EaXJlY3RvcnlFeGlzdHMoKSk7CisjZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKK30KKworLy8gImZvby9iYXIiID09IGZvby8vYmFyIiA9PSAiZm9vLy8vYmFyIgor
VEVTVChOb3JtYWxpemVUZXN0LCBNdWx0aXBsZUNvbnNlY3V0aXZlU2VwYXBhcmF0b3JzSW5NaWRz
dHJpbmcpIHsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKKyAgICAg
ICAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOwor
ICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgICAgICAgICAgRmls
ZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuc3RyaW5n
KCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgICAgICAg
ICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXworICAgICAg
ICAgICAgICAgICAgICAgR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5zdHJpbmcoKSk7Cit9CisKKy8v
ICIvYmFyIiA9PSAvL2JhciIgPT0gIi8vL2JhciIKK1RFU1QoTm9ybWFsaXplVGVzdCwgTXVsdGlw
bGVDb25zZWN1dGl2ZVNlcGFwYXJhdG9yc0F0U3RyaW5nU3RhcnQpIHsKKyAgRVhQRUNUX0VRKEdU
RVNUX1BBVEhfU0VQXyAiYmFyIiwKKyAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gImJhciIp
LnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKKyAgICBGaWxl
UGF0aChHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5zdHJpbmcoKSk7Cisg
IEVYUEVDVF9FUShHVEVTVF9QQVRIX1NFUF8gImJhciIsCisgICAgRmlsZVBhdGgoR1RFU1RfUEFU
SF9TRVBfIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gImJhciIpLnN0cmluZygpKTsK
K30KKworLy8gImZvby8iID09IGZvby8vIiA9PSAiZm9vLy8vIgorVEVTVChOb3JtYWxpemVUZXN0
LCBNdWx0aXBsZUNvbnNlY3V0aXZlU2VwYXBhcmF0b3JzQXRTdHJpbmdFbmQpIHsKKyAgRVhQRUNU
X0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKKyAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRI
X1NFUF8pLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKKyAg
ICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfKS5zdHJpbmco
KSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCisgICAgRmlsZVBhdGgoImZv
byIgR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8pLnN0cmlu
ZygpKTsKK30KKworI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCisKKy8vIFRlc3RzIHRoYXQg
c2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgYXJlIG5vcm1hbGl6ZWQKKy8vIHJl
Z2FyZGxlc3Mgb2YgdGhlaXIgY29tYmluYXRpb24gKGUuZy4gImZvb1wiID09ImZvby9cIiA9PQor
Ly8gImZvb1xcLyIpLgorVEVTVChOb3JtYWxpemVUZXN0LCBNaXhBbHRlcm5hdGVTZXBhcmF0b3JB
dFN0cmluZ0VuZCkgeworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAg
ICAgICAgRmlsZVBhdGgoImZvby8iKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVT
VF9QQVRIX1NFUF8sCisgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8g
Ii8iKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCisgICAg
ICAgICAgICBGaWxlUGF0aCgiZm9vLy8iIEdURVNUX1BBVEhfU0VQXykuc3RyaW5nKCkpOworfQor
CisjZW5kaWYKKworVEVTVChBc3NpZ25tZW50T3BlcmF0b3JUZXN0LCBEZWZhdWx0QXNzaWduZWRU
b05vbkRlZmF1bHQpIHsKKyAgRmlsZVBhdGggZGVmYXVsdF9wYXRoOworICBGaWxlUGF0aCBub25f
ZGVmYXVsdF9wYXRoKCJwYXRoIik7CisgIG5vbl9kZWZhdWx0X3BhdGggPSBkZWZhdWx0X3BhdGg7
CisgIEVYUEVDVF9FUSgiIiwgbm9uX2RlZmF1bHRfcGF0aC5zdHJpbmcoKSk7CisgIEVYUEVDVF9F
USgiIiwgZGVmYXVsdF9wYXRoLnN0cmluZygpKTsgIC8vIFJIUyB2YXIgaXMgdW5jaGFuZ2VkLgor
fQorCitURVNUKEFzc2lnbm1lbnRPcGVyYXRvclRlc3QsIE5vbkRlZmF1bHRBc3NpZ25lZFRvRGVm
YXVsdCkgeworICBGaWxlUGF0aCBub25fZGVmYXVsdF9wYXRoKCJwYXRoIik7CisgIEZpbGVQYXRo
IGRlZmF1bHRfcGF0aDsKKyAgZGVmYXVsdF9wYXRoID0gbm9uX2RlZmF1bHRfcGF0aDsKKyAgRVhQ
RUNUX0VRKCJwYXRoIiwgZGVmYXVsdF9wYXRoLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJwYXRo
Iiwgbm9uX2RlZmF1bHRfcGF0aC5zdHJpbmcoKSk7ICAvLyBSSFMgdmFyIGlzIHVuY2hhbmdlZC4K
K30KKworVEVTVChBc3NpZ25tZW50T3BlcmF0b3JUZXN0LCBDb25zdEFzc2lnbmVkVG9Ob25Db25z
dCkgeworICBjb25zdCBGaWxlUGF0aCBjb25zdF9kZWZhdWx0X3BhdGgoImNvbnN0X3BhdGgiKTsK
KyAgRmlsZVBhdGggbm9uX2RlZmF1bHRfcGF0aCgicGF0aCIpOworICBub25fZGVmYXVsdF9wYXRo
ID0gY29uc3RfZGVmYXVsdF9wYXRoOworICBFWFBFQ1RfRVEoImNvbnN0X3BhdGgiLCBub25fZGVm
YXVsdF9wYXRoLnN0cmluZygpKTsKK30KKworY2xhc3MgRGlyZWN0b3J5Q3JlYXRpb25UZXN0IDog
cHVibGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAg
IHRlc3RkYXRhX3BhdGhfLlNldChGaWxlUGF0aCgKKyAgICAgICAgVGVtcERpcigpICsgR2V0Q3Vy
cmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKworICAgICAgICAiX2RpcmVjdG9yeV9jcmVh
dGlvbiIgR1RFU1RfUEFUSF9TRVBfICJ0ZXN0IiBHVEVTVF9QQVRIX1NFUF8pKTsKKyAgICB0ZXN0
ZGF0YV9maWxlXy5TZXQodGVzdGRhdGFfcGF0aF8uUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9y
KCkpOworCisgICAgdW5pcXVlX2ZpbGUwXy5TZXQoRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZSh0ZXN0
ZGF0YV9wYXRoXywgRmlsZVBhdGgoInVuaXF1ZSIpLAorICAgICAgICAwLCAidHh0IikpOworICAg
IHVuaXF1ZV9maWxlMV8uU2V0KEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUodGVzdGRhdGFfcGF0aF8s
IEZpbGVQYXRoKCJ1bmlxdWUiKSwKKyAgICAgICAgMSwgInR4dCIpKTsKKworICAgIHJlbW92ZSh0
ZXN0ZGF0YV9maWxlXy5jX3N0cigpKTsKKyAgICByZW1vdmUodW5pcXVlX2ZpbGUwXy5jX3N0cigp
KTsKKyAgICByZW1vdmUodW5pcXVlX2ZpbGUxXy5jX3N0cigpKTsKKyAgICBwb3NpeDo6Um1EaXIo
dGVzdGRhdGFfcGF0aF8uY19zdHIoKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24o
KSB7CisgICAgcmVtb3ZlKHRlc3RkYXRhX2ZpbGVfLmNfc3RyKCkpOworICAgIHJlbW92ZSh1bmlx
dWVfZmlsZTBfLmNfc3RyKCkpOworICAgIHJlbW92ZSh1bmlxdWVfZmlsZTFfLmNfc3RyKCkpOwor
ICAgIHBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKKyAgfQorCisgIHZvaWQg
Q3JlYXRlVGV4dEZpbGUoY29uc3QgY2hhciogZmlsZW5hbWUpIHsKKyAgICBGSUxFKiBmID0gcG9z
aXg6OkZPcGVuKGZpbGVuYW1lLCAidyIpOworICAgIGZwcmludGYoZiwgInRleHRcbiIpOworICAg
IGZjbG9zZShmKTsKKyAgfQorCisgIC8vIFN0cmluZ3MgcmVwcmVzZW50aW5nIGEgZGlyZWN0b3J5
IGFuZCBhIGZpbGUsIHdpdGggaWRlbnRpY2FsIHBhdGhzCisgIC8vIGV4Y2VwdCBmb3IgdGhlIHRy
YWlsaW5nIHNlcGFyYXRvciBjaGFyYWN0ZXIgdGhhdCBkaXN0aW5xdWlzaGVzCisgIC8vIGEgZGly
ZWN0b3J5IG5hbWVkICd0ZXN0JyBmcm9tIGEgZmlsZSBuYW1lZCAndGVzdCcuIEV4YW1wbGUgbmFt
ZXM6CisgIEZpbGVQYXRoIHRlc3RkYXRhX3BhdGhfOyAgLy8gIi90bXAvZGlyZWN0b3J5X2NyZWF0
aW9uL3Rlc3QvIgorICBGaWxlUGF0aCB0ZXN0ZGF0YV9maWxlXzsgIC8vICIvdG1wL2RpcmVjdG9y
eV9jcmVhdGlvbi90ZXN0IgorICBGaWxlUGF0aCB1bmlxdWVfZmlsZTBfOyAgLy8gIi90bXAvZGly
ZWN0b3J5X2NyZWF0aW9uL3Rlc3QvdW5pcXVlLnR4dCIKKyAgRmlsZVBhdGggdW5pcXVlX2ZpbGUx
XzsgIC8vICIvdG1wL2RpcmVjdG9yeV9jcmVhdGlvbi90ZXN0L3VuaXF1ZV8xLnR4dCIKK307CisK
K1RFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZl
bHkpIHsKKyAgRVhQRUNUX0ZBTFNFKHRlc3RkYXRhX3BhdGhfLkRpcmVjdG9yeUV4aXN0cygpKSA8
PCB0ZXN0ZGF0YV9wYXRoXy5zdHJpbmcoKTsKKyAgRVhQRUNUX1RSVUUodGVzdGRhdGFfcGF0aF8u
Q3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKTsKKyAgRVhQRUNUX1RSVUUodGVzdGRhdGFf
cGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkpOworfQorCitURVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25U
ZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0ZvckFscmVhZHlFeGlzdGluZ1BhdGgpIHsKKyAgRVhQRUNU
X0ZBTFNFKHRlc3RkYXRhX3BhdGhfLkRpcmVjdG9yeUV4aXN0cygpKSA8PCB0ZXN0ZGF0YV9wYXRo
Xy5zdHJpbmcoKTsKKyAgRVhQRUNUX1RSVUUodGVzdGRhdGFfcGF0aF8uQ3JlYXRlRGlyZWN0b3Jp
ZXNSZWN1cnNpdmVseSgpKTsKKyAgLy8gQ2FsbCAnY3JlYXRlJyBhZ2Fpbi4uLiBzaG91bGQgc3Rp
bGwgc3VjY2VlZC4KKyAgRVhQRUNUX1RSVUUodGVzdGRhdGFfcGF0aF8uQ3JlYXRlRGlyZWN0b3Jp
ZXNSZWN1cnNpdmVseSgpKTsKK30KKworVEVTVF9GKERpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3Jl
YXRlRGlyZWN0b3JpZXNBbmRVbmlxdWVGaWxlbmFtZSkgeworICBGaWxlUGF0aCBmaWxlX3BhdGgo
RmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5hbWUodGVzdGRhdGFfcGF0aF8sCisgICAgICBG
aWxlUGF0aCgidW5pcXVlIiksICJ0eHQiKSk7CisgIEVYUEVDVF9FUSh1bmlxdWVfZmlsZTBfLnN0
cmluZygpLCBmaWxlX3BhdGguc3RyaW5nKCkpOworICBFWFBFQ1RfRkFMU0UoZmlsZV9wYXRoLkZp
bGVPckRpcmVjdG9yeUV4aXN0cygpKTsgIC8vIGZpbGUgbm90IHRoZXJlCisKKyAgdGVzdGRhdGFf
cGF0aF8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpOworICBFWFBFQ1RfRkFMU0UoZmls
ZV9wYXRoLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsgIC8vIGZpbGUgc3RpbGwgbm90IHRoZXJl
CisgIENyZWF0ZVRleHRGaWxlKGZpbGVfcGF0aC5jX3N0cigpKTsKKyAgRVhQRUNUX1RSVUUoZmls
ZV9wYXRoLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsKKworICBGaWxlUGF0aCBmaWxlX3BhdGgy
KEZpbGVQYXRoOjpHZW5lcmF0ZVVuaXF1ZUZpbGVOYW1lKHRlc3RkYXRhX3BhdGhfLAorICAgICAg
RmlsZVBhdGgoInVuaXF1ZSIpLCAidHh0IikpOworICBFWFBFQ1RfRVEodW5pcXVlX2ZpbGUxXy5z
dHJpbmcoKSwgZmlsZV9wYXRoMi5zdHJpbmcoKSk7CisgIEVYUEVDVF9GQUxTRShmaWxlX3BhdGgy
LkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsgIC8vIGZpbGUgbm90IHRoZXJlCisgIENyZWF0ZVRl
eHRGaWxlKGZpbGVfcGF0aDIuY19zdHIoKSk7CisgIEVYUEVDVF9UUlVFKGZpbGVfcGF0aDIuRmls
ZU9yRGlyZWN0b3J5RXhpc3RzKCkpOworfQorCitURVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25UZXN0
LCBDcmVhdGVEaXJlY3Rvcmllc0ZhaWwpIHsKKyAgLy8gZm9yY2UgYSBmYWlsdXJlIGJ5IHB1dHRp
bmcgYSBmaWxlIHdoZXJlIHdlIHdpbGwgdHJ5IHRvIGNyZWF0ZSBhIGRpcmVjdG9yeS4KKyAgQ3Jl
YXRlVGV4dEZpbGUodGVzdGRhdGFfZmlsZV8uY19zdHIoKSk7CisgIEVYUEVDVF9UUlVFKHRlc3Rk
YXRhX2ZpbGVfLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsKKyAgRVhQRUNUX0ZBTFNFKHRlc3Rk
YXRhX2ZpbGVfLkRpcmVjdG9yeUV4aXN0cygpKTsKKyAgRVhQRUNUX0ZBTFNFKHRlc3RkYXRhX2Zp
bGVfLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKSk7Cit9CisKK1RFU1QoTm9EaXJlY3Rv
cnlDcmVhdGlvblRlc3QsIENyZWF0ZU5vRGlyZWN0b3JpZXNGb3JEZWZhdWx0WG1sRmlsZSkgewor
ICBjb25zdCBGaWxlUGF0aCB0ZXN0X2RldGFpbF94bWwoInRlc3RfZGV0YWlsLnhtbCIpOworICBF
WFBFQ1RfRkFMU0UodGVzdF9kZXRhaWxfeG1sLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHko
KSk7Cit9CisKK1RFU1QoRmlsZVBhdGhUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3IpIHsKKyAgRmls
ZVBhdGggZnA7CisgIEVYUEVDVF9FUSgiIiwgZnAuc3RyaW5nKCkpOworfQorCitURVNUKEZpbGVQ
YXRoVGVzdCwgQ2hhckFuZENvcHlDb25zdHJ1Y3RvcnMpIHsKKyAgY29uc3QgRmlsZVBhdGggZnAo
InNwaWN5Iik7CisgIEVYUEVDVF9FUSgic3BpY3kiLCBmcC5zdHJpbmcoKSk7CisKKyAgY29uc3Qg
RmlsZVBhdGggZnBfY29weShmcCk7CisgIEVYUEVDVF9FUSgic3BpY3kiLCBmcF9jb3B5LnN0cmlu
ZygpKTsKK30KKworVEVTVChGaWxlUGF0aFRlc3QsIFN0cmluZ0NvbnN0cnVjdG9yKSB7CisgIGNv
bnN0IEZpbGVQYXRoIGZwKHN0ZDo6c3RyaW5nKCJjaWRlciIpKTsKKyAgRVhQRUNUX0VRKCJjaWRl
ciIsIGZwLnN0cmluZygpKTsKK30KKworVEVTVChGaWxlUGF0aFRlc3QsIFNldCkgeworICBjb25z
dCBGaWxlUGF0aCBhcHBsZSgiYXBwbGUiKTsKKyAgRmlsZVBhdGggbWFjKCJtYWMiKTsKKyAgbWFj
LlNldChhcHBsZSk7ICAvLyBJbXBsZW1lbnQgU2V0KCkgc2luY2Ugb3ZlcmxvYWRpbmcgb3BlcmF0
b3I9IGlzIGZvcmJpZGRlbi4KKyAgRVhQRUNUX0VRKCJhcHBsZSIsIG1hYy5zdHJpbmcoKSk7Cisg
IEVYUEVDVF9FUSgiYXBwbGUiLCBhcHBsZS5zdHJpbmcoKSk7Cit9CisKK1RFU1QoRmlsZVBhdGhU
ZXN0LCBUb1N0cmluZykgeworICBjb25zdCBGaWxlUGF0aCBmaWxlKCJkcmluayIpOworICBFWFBF
Q1RfRVEoImRyaW5rIiwgZmlsZS5zdHJpbmcoKSk7Cit9CisKK1RFU1QoRmlsZVBhdGhUZXN0LCBS
ZW1vdmVFeHRlbnNpb24pIHsKKyAgRVhQRUNUX0VRKCJhcHAiLCBGaWxlUGF0aCgiYXBwLmNjIiku
UmVtb3ZlRXh0ZW5zaW9uKCJjYyIpLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJhcHAiLCBGaWxl
UGF0aCgiYXBwLmV4ZSIpLlJlbW92ZUV4dGVuc2lvbigiZXhlIikuc3RyaW5nKCkpOworICBFWFBF
Q1RfRVEoIkFQUCIsIEZpbGVQYXRoKCJBUFAuRVhFIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5z
dHJpbmcoKSk7Cit9CisKK1RFU1QoRmlsZVBhdGhUZXN0LCBSZW1vdmVFeHRlbnNpb25XaGVuVGhl
cmVJc05vRXh0ZW5zaW9uKSB7CisgIEVYUEVDVF9FUSgiYXBwIiwgRmlsZVBhdGgoImFwcCIpLlJl
bW92ZUV4dGVuc2lvbigiZXhlIikuc3RyaW5nKCkpOworfQorCitURVNUKEZpbGVQYXRoVGVzdCwg
SXNEaXJlY3RvcnkpIHsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJjb2xhIikuSXNEaXJlY3Rv
cnkoKSk7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJrb2FsYSIgR1RFU1RfUEFUSF9TRVBfKS5J
c0RpcmVjdG9yeSgpKTsKKyNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXworICBFWFBFQ1RfVFJV
RShGaWxlUGF0aCgia29hbGEvIikuSXNEaXJlY3RvcnkoKSk7CisjZW5kaWYKK30KKworVEVTVChG
aWxlUGF0aFRlc3QsIElzQWJzb2x1dGVQYXRoKSB7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgi
aXMiIEdURVNUX1BBVEhfU0VQXyAicmVsYXRpdmUiKS5Jc0Fic29sdXRlUGF0aCgpKTsKKyAgRVhQ
RUNUX0ZBTFNFKEZpbGVQYXRoKCIiKS5Jc0Fic29sdXRlUGF0aCgpKTsKKyNpZiBHVEVTVF9PU19X
SU5ET1dTCisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJjOlxcIiBHVEVTVF9QQVRIX1NFUF8gImlz
X25vdCIKKyAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIp
LklzQWJzb2x1dGVQYXRoKCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImM6Zm9vIiBHVEVT
VF9QQVRIX1NFUF8gImJhciIpLklzQWJzb2x1dGVQYXRoKCkpOworICBFWFBFQ1RfVFJVRShGaWxl
UGF0aCgiYzovIiBHVEVTVF9QQVRIX1NFUF8gImlzX25vdCIKKyAgICAgICAgICAgICAgICAgICAg
ICAgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIpLklzQWJzb2x1dGVQYXRoKCkpOworI2Vsc2UK
KyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfICJpc19ub3QiIEdURVNUX1BB
VEhfU0VQXyAicmVsYXRpdmUiKQorICAgICAgICAgICAgICAuSXNBYnNvbHV0ZVBhdGgoKSk7Cisj
ZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKK30KKworVEVTVChGaWxlUGF0aFRlc3QsIElzUm9v
dERpcmVjdG9yeSkgeworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgRVhQRUNUX1RSVUUoRmlsZVBh
dGgoImE6XFwiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJa
Oi8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJlOi8vIiku
SXNSb290RGlyZWN0b3J5KCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIiIpLklzUm9vdERp
cmVjdG9yeSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJiOiIpLklzUm9vdERpcmVjdG9y
eSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJiOmEiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7
CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiODovIikuSXNSb290RGlyZWN0b3J5KCkpOworICBF
WFBFQ1RfRkFMU0UoRmlsZVBhdGgoImN8LyIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyNlbHNlCisg
IEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIvIikuSXNSb290RGlyZWN0b3J5KCkpOworICBFWFBFQ1Rf
VFJVRShGaWxlUGF0aCgiLy8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9GQUxTRShG
aWxlUGF0aCgiIikuSXNSb290RGlyZWN0b3J5KCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgo
IlxcIikuSXNSb290RGlyZWN0b3J5KCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIi94Iiku
SXNSb290RGlyZWN0b3J5KCkpOworI2VuZGlmCit9CisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8g
bmFtZXNwYWNlIGludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdC5w
eSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1maWx0ZXItdW5pdHRl
c3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGMwYjViZDlhNWNmYzViZmU4YzY4YWYxYjY0Nzg5OWUxZmViZGE2
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xl
dGVzdC1maWx0ZXItdW5pdHRlc3QucHkKQEAgLTAsMCArMSw2MzYgQEAKKyMhL3Vzci9iaW4vZW52
IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAwNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCB0
ZXN0IGZpbHRlcnMuCisKK0EgdXNlciBjYW4gc3BlY2lmeSB3aGljaCB0ZXN0KHMpIGluIGEgR29v
Z2xlIFRlc3QgcHJvZ3JhbSB0byBydW4gdmlhIGVpdGhlcgordGhlIEdURVNUX0ZJTFRFUiBlbnZp
cm9ubWVudCB2YXJpYWJsZSBvciB0aGUgLS1ndGVzdF9maWx0ZXIgZmxhZy4KK1RoaXMgc2NyaXB0
IHRlc3RzIHN1Y2ggZnVuY3Rpb25hbGl0eSBieSBpbnZva2luZworZ29vZ2xldGVzdC1maWx0ZXIt
dW5pdHRlc3RfIChhIHByb2dyYW0gd3JpdHRlbiB3aXRoIEdvb2dsZSBUZXN0KSB3aXRoIGRpZmZl
cmVudAorZW52aXJvbm1lbnRzIGFuZCBjb21tYW5kIGxpbmUgZmxhZ3MuCisKK05vdGUgdGhhdCB0
ZXN0IHNoYXJkaW5nIG1heSBhbHNvIGluZmx1ZW5jZSB3aGljaCB0ZXN0cyBhcmUgZmlsdGVyZWQu
IFRoZXJlZm9yZSwKK3dlIHRlc3QgdGhhdCBoZXJlIGFsc28uCisiIiIKKworaW1wb3J0IG9zCitp
bXBvcnQgcmUKK2ltcG9ydCBzZXRzCitpbXBvcnQgc3lzCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGls
cworCisjIENvbnN0YW50cy4KKworIyBDaGVja3MgaWYgdGhpcyBwbGF0Zm9ybSBjYW4gcGFzcyBl
bXB0eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gY2hpbGQKKyMgcHJvY2Vzc2VzLiAgV2Ugc2V0
IGFuIGVudiB2YXJpYWJsZSB0byBhbiBlbXB0eSBzdHJpbmcgYW5kIGludm9rZSBhIHB5dGhvbgor
IyBzY3JpcHQgaW4gYSBzdWJwcm9jZXNzIHRvIHByaW50IHdoZXRoZXIgdGhlIHZhcmlhYmxlIGlz
IFNUSUxMIGluCisjIG9zLmVudmlyb24uICBXZSB0aGVuIHVzZSAnZXZhbCcgdG8gcGFyc2UgdGhl
IGNoaWxkJ3Mgb3V0cHV0IHNvIHRoYXQgYW4KKyMgZXhjZXB0aW9uIGlzIHRocm93biBpZiB0aGUg
aW5wdXQgaXMgYW55dGhpbmcgb3RoZXIgdGhhbiAnVHJ1ZScgbm9yICdGYWxzZScuCitDQU5fUEFT
U19FTVBUWV9FTlYgPSBGYWxzZQoraWYgc3lzLmV4ZWN1dGFibGU6CisgIG9zLmVudmlyb25bJ0VN
UFRZX1ZBUiddID0gJycKKyAgY2hpbGQgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisg
ICAgICBbc3lzLmV4ZWN1dGFibGUsICctYycsICdpbXBvcnQgb3M7IHByaW50IFwnRU1QVFlfVkFS
XCcgaW4gb3MuZW52aXJvbiddKQorICBDQU5fUEFTU19FTVBUWV9FTlYgPSBldmFsKGNoaWxkLm91
dHB1dCkKKworCisjIENoZWNrIGlmIHRoaXMgcGxhdGZvcm0gY2FuIHVuc2V0IGVudmlyb25tZW50
IHZhcmlhYmxlcyBpbiBjaGlsZCBwcm9jZXNzZXMuCisjIFdlIHNldCBhbiBlbnYgdmFyaWFibGUg
dG8gYSBub24tZW1wdHkgc3RyaW5nLCB1bnNldCBpdCwgYW5kIGludm9rZQorIyBhIHB5dGhvbiBz
Y3JpcHQgaW4gYSBzdWJwcm9jZXNzIHRvIHByaW50IHdoZXRoZXIgdGhlIHZhcmlhYmxlCisjIGlz
IE5PIExPTkdFUiBpbiBvcy5lbnZpcm9uLgorIyBXZSB1c2UgJ2V2YWwnIHRvIHBhcnNlIHRoZSBj
aGlsZCdzIG91dHB1dCBzbyB0aGF0IGFuIGV4Y2VwdGlvbgorIyBpcyB0aHJvd24gaWYgdGhlIGlu
cHV0IGlzIG5laXRoZXIgJ1RydWUnIG5vciAnRmFsc2UnLgorQ0FOX1VOU0VUX0VOViA9IEZhbHNl
CitpZiBzeXMuZXhlY3V0YWJsZToKKyAgb3MuZW52aXJvblsnVU5TRVRfVkFSJ10gPSAnWCcKKyAg
ZGVsIG9zLmVudmlyb25bJ1VOU0VUX1ZBUiddCisgIGNoaWxkID0gZ3Rlc3RfdGVzdF91dGlscy5T
dWJwcm9jZXNzKAorICAgICAgW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAnaW1wb3J0IG9zOyBwcmlu
dCBcJ1VOU0VUX1ZBUlwnIG5vdCBpbiBvcy5lbnZpcm9uJworICAgICAgXSkKKyAgQ0FOX1VOU0VU
X0VOViA9IGV2YWwoY2hpbGQub3V0cHV0KQorCisKKyMgQ2hlY2tzIGlmIHdlIHNob3VsZCB0ZXN0
IHdpdGggYW4gZW1wdHkgZmlsdGVyLiBUaGlzIGRvZXNuJ3QKKyMgbWFrZSBzZW5zZSBvbiBwbGF0
Zm9ybXMgdGhhdCBjYW5ub3QgcGFzcyBlbXB0eSBlbnYgdmFyaWFibGVzIChXaW4zMikKKyMgYW5k
IG9uIHBsYXRmb3JtcyB0aGF0IGNhbm5vdCB1bnNldCB2YXJpYWJsZXMgKHNpbmNlIHdlIGNhbm5v
dCB0ZWxsCisjIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gIiIgYW5kIE5VTEwgLS0gQm9ybGFuZCBh
bmQgU29sYXJpcyA8IDUuMTApCitDQU5fVEVTVF9FTVBUWV9GSUxURVIgPSAoQ0FOX1BBU1NfRU1Q
VFlfRU5WIGFuZCBDQU5fVU5TRVRfRU5WKQorCisKKyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxl
IGZvciBzcGVjaWZ5aW5nIHRoZSB0ZXN0IGZpbHRlcnMuCitGSUxURVJfRU5WX1ZBUiA9ICdHVEVT
VF9GSUxURVInCisKKyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBzaGFyZGlu
Zy4KK1RPVEFMX1NIQVJEU19FTlZfVkFSID0gJ0dURVNUX1RPVEFMX1NIQVJEUycKK1NIQVJEX0lO
REVYX0VOVl9WQVIgPSAnR1RFU1RfU0hBUkRfSU5ERVgnCitTSEFSRF9TVEFUVVNfRklMRV9FTlZf
VkFSID0gJ0dURVNUX1NIQVJEX1NUQVRVU19GSUxFJworCisjIFRoZSBjb21tYW5kIGxpbmUgZmxh
ZyBmb3Igc3BlY2lmeWluZyB0aGUgdGVzdCBmaWx0ZXJzLgorRklMVEVSX0ZMQUcgPSAnZ3Rlc3Rf
ZmlsdGVyJworCisjIFRoZSBjb21tYW5kIGxpbmUgZmxhZyBmb3IgaW5jbHVkaW5nIGRpc2FibGVk
IHRlc3RzLgorQUxTT19SVU5fRElTQUJMRURfVEVTVFNfRkxBRyA9ICdndGVzdF9hbHNvX3J1bl9k
aXNhYmxlZF90ZXN0cycKKworIyBDb21tYW5kIHRvIHJ1biB0aGUgZ29vZ2xldGVzdC1maWx0ZXIt
dW5pdHRlc3RfIHByb2dyYW0uCitDT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhl
Y3V0YWJsZVBhdGgoJ2dvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0XycpCisKKyMgUmVnZXggZm9y
IGRldGVybWluaW5nIHdoZXRoZXIgcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZW5hYmxlZCBpbiB0
aGUgYmluYXJ5LgorUEFSQU1fVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocicvUGFyYW1UZXN0JykK
KworIyBSZWdleCBmb3IgcGFyc2luZyB0ZXN0IGNhc2UgbmFtZXMgZnJvbSBHb29nbGUgVGVzdCdz
IG91dHB1dC4KK1RFU1RfQ0FTRV9SRUdFWCA9IHJlLmNvbXBpbGUocideXFtcLStcXSBcZCsgdGVz
dHM/IGZyb20gKFx3KygvXHcrKT8pJykKKworIyBSZWdleCBmb3IgcGFyc2luZyB0ZXN0IG5hbWVz
IGZyb20gR29vZ2xlIFRlc3QncyBvdXRwdXQuCitURVNUX1JFR0VYID0gcmUuY29tcGlsZShyJ15c
W1xzKlJVTlxzKlxdLipcLihcdysoL1x3Kyk/KScpCisKKyMgVGhlIGNvbW1hbmQgbGluZSBmbGFn
IHRvIHRlbGwgR29vZ2xlIFRlc3QgdG8gb3V0cHV0IHRoZSBsaXN0IG9mIHRlc3RzIGl0CisjIHdp
bGwgcnVuLgorTElTVF9URVNUU19GTEFHID0gJy0tZ3Rlc3RfbGlzdF90ZXN0cycKKworIyBJbmRp
Y2F0ZXMgd2hldGhlciBHb29nbGUgVGVzdCBzdXBwb3J0cyBkZWF0aCB0ZXN0cy4KK1NVUFBPUlRT
X0RFQVRIX1RFU1RTID0gJ0hhc0RlYXRoVGVzdCcgaW4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9j
ZXNzKAorICAgIFtDT01NQU5ELCBMSVNUX1RFU1RTX0ZMQUddKS5vdXRwdXQKKworIyBGdWxsIG5h
bWVzIG9mIGFsbCB0ZXN0cyBpbiBnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdHNfLgorUEFSQU1f
VEVTVFMgPSBbCisgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzAnLAorICAgICdTZXFQL1BhcmFt
VGVzdC5UZXN0WC8xJywKKyAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMCcsCisgICAgJ1NlcVAv
UGFyYW1UZXN0LlRlc3RZLzEnLAorICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WC8wJywKKyAgICAn
U2VxUS9QYXJhbVRlc3QuVGVzdFgvMScsCisgICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RZLzAnLAor
ICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WS8xJywKKyAgICBdCisKK0RJU0FCTEVEX1RFU1RTID0g
WworICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rlc3RGb3VyJywKKyAgICAnQmFyVGVzdC5ESVNBQkxF
RF9UZXN0Rml2ZScsCisgICAgJ0JhelRlc3QuRElTQUJMRURfVGVzdEMnLAorICAgICdESVNBQkxF
RF9Gb29iYXJUZXN0LlRlc3QxJywKKyAgICAnRElTQUJMRURfRm9vYmFyVGVzdC5ESVNBQkxFRF9U
ZXN0MicsCisgICAgJ0RJU0FCTEVEX0Zvb2JhcmJhelRlc3QuVGVzdEEnLAorICAgIF0KKworaWYg
U1VQUE9SVFNfREVBVEhfVEVTVFM6CisgIERFQVRIX1RFU1RTID0gWworICAgICdIYXNEZWF0aFRl
c3QuVGVzdDEnLAorICAgICdIYXNEZWF0aFRlc3QuVGVzdDInLAorICAgIF0KK2Vsc2U6CisgIERF
QVRIX1RFU1RTID0gW10KKworIyBBbGwgdGhlIG5vbi1kaXNhYmxlZCB0ZXN0cy4KK0FDVElWRV9U
RVNUUyA9IFsKKyAgICAnRm9vVGVzdC5BYmMnLAorICAgICdGb29UZXN0Llh5eicsCisKKyAgICAn
QmFyVGVzdC5UZXN0T25lJywKKyAgICAnQmFyVGVzdC5UZXN0VHdvJywKKyAgICAnQmFyVGVzdC5U
ZXN0VGhyZWUnLAorCisgICAgJ0JhelRlc3QuVGVzdE9uZScsCisgICAgJ0JhelRlc3QuVGVzdEEn
LAorICAgICdCYXpUZXN0LlRlc3RCJywKKyAgICBdICsgREVBVEhfVEVTVFMgKyBQQVJBTV9URVNU
UworCitwYXJhbV90ZXN0c19wcmVzZW50ID0gTm9uZQorCisjIFV0aWxpdGllcy4KKworZW52aXJv
biA9IG9zLmVudmlyb24uY29weSgpCisKKworZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6
CisgICIiIlNldHMgdGhlIGVudiB2YXJpYWJsZSB0byAndmFsdWUnOyB1bnNldHMgaXQgd2hlbiAn
dmFsdWUnIGlzIE5vbmUuIiIiCisKKyAgaWYgdmFsdWUgaXMgbm90IE5vbmU6CisgICAgZW52aXJv
bltlbnZfdmFyXSA9IHZhbHVlCisgIGVsaWYgZW52X3ZhciBpbiBlbnZpcm9uOgorICAgIGRlbCBl
bnZpcm9uW2Vudl92YXJdCisKKworZGVmIFJ1bkFuZFJldHVybk91dHB1dChhcmdzID0gTm9uZSk6
CisgICIiIlJ1bnMgdGhlIHRlc3QgcHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgb3V0cHV0LiIiIgor
CisgIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0NPTU1BTkRdICsgKGFyZ3Mg
b3IgW10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnZpcm9u
KS5vdXRwdXQKKworCitkZWYgUnVuQW5kRXh0cmFjdFRlc3RMaXN0KGFyZ3MgPSBOb25lKToKKyAg
IiIiUnVucyB0aGUgdGVzdCBwcm9ncmFtIGFuZCByZXR1cm5zIGl0cyBleGl0IGNvZGUgYW5kIGEg
bGlzdCBvZiB0ZXN0cyBydW4uIiIiCisKKyAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vz
cyhbQ09NTUFORF0gKyAoYXJncyBvciBbXSksIGVudj1lbnZpcm9uKQorICB0ZXN0c19ydW4gPSBb
XQorICB0ZXN0X2Nhc2UgPSAnJworICB0ZXN0ID0gJycKKyAgZm9yIGxpbmUgaW4gcC5vdXRwdXQu
c3BsaXQoJ1xuJyk6CisgICAgbWF0Y2ggPSBURVNUX0NBU0VfUkVHRVgubWF0Y2gobGluZSkKKyAg
ICBpZiBtYXRjaCBpcyBub3QgTm9uZToKKyAgICAgIHRlc3RfY2FzZSA9IG1hdGNoLmdyb3VwKDEp
CisgICAgZWxzZToKKyAgICAgIG1hdGNoID0gVEVTVF9SRUdFWC5tYXRjaChsaW5lKQorICAgICAg
aWYgbWF0Y2ggaXMgbm90IE5vbmU6CisgICAgICAgIHRlc3QgPSBtYXRjaC5ncm91cCgxKQorICAg
ICAgICB0ZXN0c19ydW4uYXBwZW5kKHRlc3RfY2FzZSArICcuJyArIHRlc3QpCisgIHJldHVybiAo
dGVzdHNfcnVuLCBwLmV4aXRfY29kZSkKKworCitkZWYgSW52b2tlV2l0aE1vZGlmaWVkRW52KGV4
dHJhX2VudiwgZnVuY3Rpb24sICphcmdzLCAqKmt3YXJncyk6CisgICIiIlJ1bnMgdGhlIGdpdmVu
IGZ1bmN0aW9uIGFuZCBhcmd1bWVudHMgaW4gYSBtb2RpZmllZCBlbnZpcm9ubWVudC4iIiIKKyAg
dHJ5OgorICAgIG9yaWdpbmFsX2VudiA9IGVudmlyb24uY29weSgpCisgICAgZW52aXJvbi51cGRh
dGUoZXh0cmFfZW52KQorICAgIHJldHVybiBmdW5jdGlvbigqYXJncywgKiprd2FyZ3MpCisgIGZp
bmFsbHk6CisgICAgZW52aXJvbi5jbGVhcigpCisgICAgZW52aXJvbi51cGRhdGUob3JpZ2luYWxf
ZW52KQorCisKK2RlZiBSdW5XaXRoU2hhcmRpbmcodG90YWxfc2hhcmRzLCBzaGFyZF9pbmRleCwg
Y29tbWFuZCk6CisgICIiIlJ1bnMgYSB0ZXN0IHByb2dyYW0gc2hhcmQgYW5kIHJldHVybnMgZXhp
dCBjb2RlIGFuZCBhIGxpc3Qgb2YgdGVzdHMgcnVuLiIiIgorCisgIGV4dHJhX2VudiA9IHtTSEFS
RF9JTkRFWF9FTlZfVkFSOiBzdHIoc2hhcmRfaW5kZXgpLAorICAgICAgICAgICAgICAgVE9UQUxf
U0hBUkRTX0VOVl9WQVI6IHN0cih0b3RhbF9zaGFyZHMpfQorICByZXR1cm4gSW52b2tlV2l0aE1v
ZGlmaWVkRW52KGV4dHJhX2VudiwgUnVuQW5kRXh0cmFjdFRlc3RMaXN0LCBjb21tYW5kKQorCisj
IFRoZSB1bml0IHRlc3QuCisKKworY2xhc3MgR1Rlc3RGaWx0ZXJVbml0VGVzdChndGVzdF90ZXN0
X3V0aWxzLlRlc3RDYXNlKToKKyAgIiIiVGVzdHMgdGhlIGVudiB2YXJpYWJsZSBvciB0aGUgY29t
bWFuZCBsaW5lIGZsYWcgdG8gZmlsdGVyIHRlc3RzLiIiIgorCisgICMgVXRpbGl0aWVzLgorCisg
IGRlZiBBc3NlcnRTZXRFcXVhbChzZWxmLCBsaHMsIHJocyk6CisgICAgIiIiQXNzZXJ0cyB0aGF0
IHR3byBzZXRzIGFyZSBlcXVhbC4iIiIKKworICAgIGZvciBlbGVtIGluIGxoczoKKyAgICAgIHNl
bGYuYXNzZXJ0XyhlbGVtIGluIHJocywgJyVzIGluICVzJyAlIChlbGVtLCByaHMpKQorCisgICAg
Zm9yIGVsZW0gaW4gcmhzOgorICAgICAgc2VsZi5hc3NlcnRfKGVsZW0gaW4gbGhzLCAnJXMgaW4g
JXMnICUgKGVsZW0sIGxocykpCisKKyAgZGVmIEFzc2VydFBhcnRpdGlvbklzVmFsaWQoc2VsZiwg
c2V0X3ZhciwgbGlzdF9vZl9zZXRzKToKKyAgICAiIiJBc3NlcnRzIHRoYXQgbGlzdF9vZl9zZXRz
IGlzIGEgdmFsaWQgcGFydGl0aW9uIG9mIHNldF92YXIuIiIiCisKKyAgICBmdWxsX3BhcnRpdGlv
biA9IFtdCisgICAgZm9yIHNsaWNlX3ZhciBpbiBsaXN0X29mX3NldHM6CisgICAgICBmdWxsX3Bh
cnRpdGlvbi5leHRlbmQoc2xpY2VfdmFyKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNldF92
YXIpLCBsZW4oZnVsbF9wYXJ0aXRpb24pKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0cy5TZXQo
c2V0X3ZhciksIHNldHMuU2V0KGZ1bGxfcGFydGl0aW9uKSkKKworICBkZWYgQWRqdXN0Rm9yUGFy
YW1ldGVyaXplZFRlc3RzKHNlbGYsIHRlc3RzX3RvX3J1bik6CisgICAgIiIiQWRqdXN0IHRlc3Rz
X3RvX3J1biBpbiBjYXNlIHZhbHVlIHBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGRpc2FibGVkLiIi
IgorCisgICAgZ2xvYmFsIHBhcmFtX3Rlc3RzX3ByZXNlbnQKKyAgICBpZiBub3QgcGFyYW1fdGVz
dHNfcHJlc2VudDoKKyAgICAgIHJldHVybiBsaXN0KHNldHMuU2V0KHRlc3RzX3RvX3J1bikgLSBz
ZXRzLlNldChQQVJBTV9URVNUUykpCisgICAgZWxzZToKKyAgICAgIHJldHVybiB0ZXN0c190b19y
dW4KKworICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGd0ZXN0X2ZpbHRlciwgdGVzdHNfdG9fcnVu
KToKKyAgICAiIiJDaGVja3MgdGhhdCB0aGUgYmluYXJ5IHJ1bnMgY29ycmVjdCBzZXQgb2YgdGVz
dHMgZm9yIGEgZ2l2ZW4gZmlsdGVyLiIiIgorCisgICAgdGVzdHNfdG9fcnVuID0gc2VsZi5BZGp1
c3RGb3JQYXJhbWV0ZXJpemVkVGVzdHModGVzdHNfdG9fcnVuKQorCisgICAgIyBGaXJzdCwgdGVz
dHMgdXNpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLgorCisgICAgIyBXaW5kb3dzIHJlbW92
ZXMgZW1wdHkgdmFyaWFibGVzIGZyb20gdGhlIGVudmlyb25tZW50IHdoZW4gcGFzc2luZyBpdAor
ICAgICMgdG8gYSBuZXcgcHJvY2Vzcy4gIFRoaXMgbWVhbnMgaXQgaXMgaW1wb3NzaWJsZSB0byBw
YXNzIGFuIGVtcHR5IGZpbHRlcgorICAgICMgaW50byBhIHByb2Nlc3MgdXNpbmcgdGhlIGVudmly
b25tZW50IHZhcmlhYmxlLiAgSG93ZXZlciwgd2UgY2FuIHN0aWxsCisgICAgIyB0ZXN0IHRoZSBj
YXNlIHdoZW4gdGhlIHZhcmlhYmxlIGlzIG5vdCBzdXBwbGllZCAoaS5lLiwgZ3Rlc3RfZmlsdGVy
IGlzCisgICAgIyBOb25lKS4KKyAgICAjIHB5bGludDogZGlzYWJsZS1tc2c9QzY0MDMKKyAgICBp
ZiBDQU5fVEVTVF9FTVBUWV9GSUxURVIgb3IgZ3Rlc3RfZmlsdGVyICE9ICcnOgorICAgICAgU2V0
RW52VmFyKEZJTFRFUl9FTlZfVkFSLCBndGVzdF9maWx0ZXIpCisgICAgICB0ZXN0c19ydW4gPSBS
dW5BbmRFeHRyYWN0VGVzdExpc3QoKVswXQorICAgICAgU2V0RW52VmFyKEZJTFRFUl9FTlZfVkFS
LCBOb25lKQorICAgICAgc2VsZi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIHRlc3RzX3RvX3J1
bikKKyAgICAjIHB5bGludDogZW5hYmxlLW1zZz1DNjQwMworCisgICAgIyBOZXh0LCB0ZXN0cyB1
c2luZyB0aGUgY29tbWFuZCBsaW5lIGZsYWcuCisKKyAgICBpZiBndGVzdF9maWx0ZXIgaXMgTm9u
ZToKKyAgICAgIGFyZ3MgPSBbXQorICAgIGVsc2U6CisgICAgICBhcmdzID0gWyctLSVzPSVzJyAl
IChGSUxURVJfRkxBRywgZ3Rlc3RfZmlsdGVyKV0KKworICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4
dHJhY3RUZXN0TGlzdChhcmdzKVswXQorICAgIHNlbGYuQXNzZXJ0U2V0RXF1YWwodGVzdHNfcnVu
LCB0ZXN0c190b19ydW4pCisKKyAgZGVmIFJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhzZWxmLCBn
dGVzdF9maWx0ZXIsIHRvdGFsX3NoYXJkcywgdGVzdHNfdG9fcnVuLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFyZ3M9Tm9uZSwgY2hlY2tfZXhpdF8wPUZhbHNlKToKKyAgICAiIiJD
aGVja3MgdGhhdCBiaW5hcnkgcnVucyBjb3JyZWN0IHRlc3RzIGZvciB0aGUgZ2l2ZW4gZmlsdGVy
IGFuZCBzaGFyZC4KKworICAgIFJ1bnMgYWxsIHNoYXJkcyBvZiBnb29nbGV0ZXN0LWZpbHRlci11
bml0dGVzdF8gd2l0aCB0aGUgZ2l2ZW4gZmlsdGVyLCBhbmQKKyAgICB2ZXJpZmllcyB0aGF0IHRo
ZSByaWdodCBzZXQgb2YgdGVzdHMgd2VyZSBydW4uIFRoZSB1bmlvbiBvZiB0ZXN0cyBydW4KKyAg
ICBvbiBlYWNoIHNoYXJkIHNob3VsZCBiZSBpZGVudGljYWwgdG8gdGVzdHNfdG9fcnVuLCB3aXRo
b3V0IGR1cGxpY2F0ZXMuCisgICAgSWYgY2hlY2tfZXhpdF8wLCAuCisKKyAgICBBcmdzOgorICAg
ICAgZ3Rlc3RfZmlsdGVyOiBBIGZpbHRlciB0byBhcHBseSB0byB0aGUgdGVzdHMuCisgICAgICB0
b3RhbF9zaGFyZHM6IEEgdG90YWwgbnVtYmVyIG9mIHNoYXJkcyB0byBzcGxpdCB0ZXN0IHJ1biBp
bnRvLgorICAgICAgdGVzdHNfdG9fcnVuOiBBIHNldCBvZiB0ZXN0cyBleHBlY3RlZCB0byBydW4u
CisgICAgICBhcmdzICAgOiAgICAgIEFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSB0byB0aGUgdGVz
dCBiaW5hcnkuCisgICAgICBjaGVja19leGl0XzA6IFdoZW4gc2V0IHRvIGEgdHJ1ZSB2YWx1ZSwg
bWFrZSBzdXJlIHRoYXQgYWxsIHNoYXJkcworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMC4K
KyAgICAiIiIKKworICAgIHRlc3RzX3RvX3J1biA9IHNlbGYuQWRqdXN0Rm9yUGFyYW1ldGVyaXpl
ZFRlc3RzKHRlc3RzX3RvX3J1bikKKworICAgICMgV2luZG93cyByZW1vdmVzIGVtcHR5IHZhcmlh
YmxlcyBmcm9tIHRoZSBlbnZpcm9ubWVudCB3aGVuIHBhc3NpbmcgaXQKKyAgICAjIHRvIGEgbmV3
IHByb2Nlc3MuICBUaGlzIG1lYW5zIGl0IGlzIGltcG9zc2libGUgdG8gcGFzcyBhbiBlbXB0eSBm
aWx0ZXIKKyAgICAjIGludG8gYSBwcm9jZXNzIHVzaW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJs
ZS4gIEhvd2V2ZXIsIHdlIGNhbiBzdGlsbAorICAgICMgdGVzdCB0aGUgY2FzZSB3aGVuIHRoZSB2
YXJpYWJsZSBpcyBub3Qgc3VwcGxpZWQgKGkuZS4sIGd0ZXN0X2ZpbHRlciBpcworICAgICMgTm9u
ZSkuCisgICAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2NDAzCisgICAgaWYgQ0FOX1RFU1RfRU1Q
VFlfRklMVEVSIG9yIGd0ZXN0X2ZpbHRlciAhPSAnJzoKKyAgICAgIFNldEVudlZhcihGSUxURVJf
RU5WX1ZBUiwgZ3Rlc3RfZmlsdGVyKQorICAgICAgcGFydGl0aW9uID0gW10KKyAgICAgIGZvciBp
IGluIHJhbmdlKDAsIHRvdGFsX3NoYXJkcyk6CisgICAgICAgICh0ZXN0c19ydW4sIGV4aXRfY29k
ZSkgPSBSdW5XaXRoU2hhcmRpbmcodG90YWxfc2hhcmRzLCBpLCBhcmdzKQorICAgICAgICBpZiBj
aGVja19leGl0XzA6CisgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBleGl0X2NvZGUpCisg
ICAgICAgIHBhcnRpdGlvbi5hcHBlbmQodGVzdHNfcnVuKQorCisgICAgICBzZWxmLkFzc2VydFBh
cnRpdGlvbklzVmFsaWQodGVzdHNfdG9fcnVuLCBwYXJ0aXRpb24pCisgICAgICBTZXRFbnZWYXIo
RklMVEVSX0VOVl9WQVIsIE5vbmUpCisgICAgIyBweWxpbnQ6IGVuYWJsZS1tc2c9QzY0MDMKKwor
ICBkZWYgUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZChzZWxmLCBndGVzdF9maWx0ZXIsIHRl
c3RzX3RvX3J1bik6CisgICAgIiIiQ2hlY2tzIHRoYXQgdGhlIGJpbmFyeSBydW5zIGNvcnJlY3Qg
c2V0IG9mIHRlc3RzIGZvciB0aGUgZ2l2ZW4gZmlsdGVyLgorCisgICAgUnVucyBnb29nbGV0ZXN0
LWZpbHRlci11bml0dGVzdF8gd2l0aCB0aGUgZ2l2ZW4gZmlsdGVyLCBhbmQgZW5hYmxlcworICAg
IGRpc2FibGVkIHRlc3RzLiBWZXJpZmllcyB0aGF0IHRoZSByaWdodCBzZXQgb2YgdGVzdHMgd2Vy
ZSBydW4uCisKKyAgICBBcmdzOgorICAgICAgZ3Rlc3RfZmlsdGVyOiBBIGZpbHRlciB0byBhcHBs
eSB0byB0aGUgdGVzdHMuCisgICAgICB0ZXN0c190b19ydW46IEEgc2V0IG9mIHRlc3RzIGV4cGVj
dGVkIHRvIHJ1bi4KKyAgICAiIiIKKworICAgIHRlc3RzX3RvX3J1biA9IHNlbGYuQWRqdXN0Rm9y
UGFyYW1ldGVyaXplZFRlc3RzKHRlc3RzX3RvX3J1bikKKworICAgICMgQ29uc3RydWN0IHRoZSBj
b21tYW5kIGxpbmUuCisgICAgYXJncyA9IFsnLS0lcycgJSBBTFNPX1JVTl9ESVNBQkxFRF9URVNU
U19GTEFHXQorICAgIGlmIGd0ZXN0X2ZpbHRlciBpcyBub3QgTm9uZToKKyAgICAgIGFyZ3MuYXBw
ZW5kKCctLSVzPSVzJyAlIChGSUxURVJfRkxBRywgZ3Rlc3RfZmlsdGVyKSkKKworICAgIHRlc3Rz
X3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0TGlzdChhcmdzKVswXQorICAgIHNlbGYuQXNzZXJ0U2V0
RXF1YWwodGVzdHNfcnVuLCB0ZXN0c190b19ydW4pCisKKyAgZGVmIHNldFVwKHNlbGYpOgorICAg
ICIiIlNldHMgdXAgdGVzdCBjYXNlLgorCisgICAgRGV0ZXJtaW5lcyB3aGV0aGVyIHZhbHVlLXBh
cmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQgaW4gdGhlIGJpbmFyeSBhbmQKKyAgICBzZXRz
IHRoZSBmbGFncyBhY2NvcmRpbmdseS4KKyAgICAiIiIKKworICAgIGdsb2JhbCBwYXJhbV90ZXN0
c19wcmVzZW50CisgICAgaWYgcGFyYW1fdGVzdHNfcHJlc2VudCBpcyBOb25lOgorICAgICAgcGFy
YW1fdGVzdHNfcHJlc2VudCA9IFBBUkFNX1RFU1RfUkVHRVguc2VhcmNoKAorICAgICAgICAgIFJ1
bkFuZFJldHVybk91dHB1dCgpKSBpcyBub3QgTm9uZQorCisgIGRlZiB0ZXN0RGVmYXVsdEJlaGF2
aW9yKHNlbGYpOgorICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiBub3Qgc3BlY2lmeWluZyB0
aGUgZmlsdGVyLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoTm9uZSwgQUNUSVZFX1RFU1RT
KQorCisgIGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9yV2l0aFNoYXJkcyhzZWxmKToKKyAgICAiIiJU
ZXN0cyB0aGUgYmVoYXZpb3Igd2l0aG91dCB0aGUgZmlsdGVyLCB3aXRoIHNoYXJkaW5nIGVuYWJs
ZWQuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhOb25lLCAxLCBBQ1RJ
VkVfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgMiwgQUNU
SVZFX1RFU1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKE5vbmUsIGxlbihB
Q1RJVkVfVEVTVFMpIC0gMSwgQUNUSVZFX1RFU1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0
aFNoYXJkaW5nKE5vbmUsIGxlbihBQ1RJVkVfVEVTVFMpLCBBQ1RJVkVfVEVTVFMpCisgICAgc2Vs
Zi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgbGVuKEFDVElWRV9URVNUUykgKyAxLCBB
Q1RJVkVfVEVTVFMpCisKKyAgZGVmIHRlc3RFbXB0eUZpbHRlcihzZWxmKToKKyAgICAiIiJUZXN0
cyBhbiBlbXB0eSBmaWx0ZXIuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnJywgW10pCisg
ICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJycsIDEsIFtdKQorICAgIHNlbGYuUnVu
QW5kVmVyaWZ5V2l0aFNoYXJkaW5nKCcnLCAyLCBbXSkKKworICBkZWYgdGVzdEJhZEZpbHRlcihz
ZWxmKToKKyAgICAiIiJUZXN0cyBhIGZpbHRlciB0aGF0IG1hdGNoZXMgbm90aGluZy4iIiIKKwor
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdCYWRGaWx0ZXInLCBbXSkKKyAgICBzZWxmLlJ1bkFuZFZl
cmlmeUFsbG93aW5nRGlzYWJsZWQoJ0JhZEZpbHRlcicsIFtdKQorCisgIGRlZiB0ZXN0RnVsbE5h
bWUoc2VsZik6CisgICAgIiIiVGVzdHMgZmlsdGVyaW5nIGJ5IGZ1bGwgbmFtZS4iIiIKKworICAg
IHNlbGYuUnVuQW5kVmVyaWZ5KCdGb29UZXN0Llh5eicsIFsnRm9vVGVzdC5YeXonXSkKKyAgICBz
ZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0Zvb1Rlc3QuWHl6JywgWydGb29UZXN0
Llh5eiddKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKCdGb29UZXN0Llh5eics
IDUsIFsnRm9vVGVzdC5YeXonXSkKKworICBkZWYgdGVzdFVuaXZlcnNhbEZpbHRlcnMoc2VsZik6
CisgICAgIiIiVGVzdHMgZmlsdGVycyB0aGF0IG1hdGNoIGV2ZXJ5dGhpbmcuIiIiCisKKyAgICBz
ZWxmLlJ1bkFuZFZlcmlmeSgnKicsIEFDVElWRV9URVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlm
eSgnKi4qJywgQUNUSVZFX1RFU1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5n
KCcqLionLCBsZW4oQUNUSVZFX1RFU1RTKSAtIDMsIEFDVElWRV9URVNUUykKKyAgICBzZWxmLlJ1
bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJyonLCBBQ1RJVkVfVEVTVFMgKyBESVNBQkxFRF9U
RVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJyouKicsIEFDVElW
RV9URVNUUyArIERJU0FCTEVEX1RFU1RTKQorCisgIGRlZiB0ZXN0RmlsdGVyQnlUZXN0Q2FzZShz
ZWxmKToKKyAgICAiIiJUZXN0cyBmaWx0ZXJpbmcgYnkgdGVzdCBjYXNlIG5hbWUuIiIiCisKKyAg
ICBzZWxmLlJ1bkFuZFZlcmlmeSgnRm9vVGVzdC4qJywgWydGb29UZXN0LkFiYycsICdGb29UZXN0
Llh5eiddKQorCisgICAgQkFaX1RFU1RTID0gWydCYXpUZXN0LlRlc3RPbmUnLCAnQmF6VGVzdC5U
ZXN0QScsICdCYXpUZXN0LlRlc3RCJ10KKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnQmF6VGVzdC4q
JywgQkFaX1RFU1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnQmF6
VGVzdC4qJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkFaX1RFU1RT
ICsgWydCYXpUZXN0LkRJU0FCTEVEX1Rlc3RDJ10pCisKKyAgZGVmIHRlc3RGaWx0ZXJCeVRlc3Qo
c2VsZik6CisgICAgIiIiVGVzdHMgZmlsdGVyaW5nIGJ5IHRlc3QgbmFtZS4iIiIKKworICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KCcqLlRlc3RPbmUnLCBbJ0JhclRlc3QuVGVzdE9uZScsICdCYXpUZXN0
LlRlc3RPbmUnXSkKKworICBkZWYgdGVzdEZpbHRlckRpc2FibGVkVGVzdHMoc2VsZik6CisgICAg
IiIiU2VsZWN0IG9ubHkgdGhlIGRpc2FibGVkIHRlc3RzIHRvIHJ1bi4iIiIKKworICAgIHNlbGYu
UnVuQW5kVmVyaWZ5KCdESVNBQkxFRF9Gb29iYXJUZXN0LlRlc3QxJywgW10pCisgICAgc2VsZi5S
dW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdESVNBQkxFRF9Gb29iYXJUZXN0LlRlc3QxJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydESVNBQkxFRF9Gb29iYXJU
ZXN0LlRlc3QxJ10pCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKkRJU0FCTEVEXyonLCBbXSkK
KyAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJypESVNBQkxFRF8qJywgRElT
QUJMRURfVEVTVFMpCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi5ESVNBQkxFRF8qJywgW10p
CisgICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCcqLkRJU0FCTEVEXyonLCBb
CisgICAgICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rlc3RGb3VyJywKKyAgICAgICAgJ0JhclRlc3Qu
RElTQUJMRURfVGVzdEZpdmUnLAorICAgICAgICAnQmF6VGVzdC5ESVNBQkxFRF9UZXN0QycsCisg
ICAgICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywKKyAgICAgICAgXSkK
KworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdESVNBQkxFRF8qJywgW10pCisgICAgc2VsZi5SdW5B
bmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdESVNBQkxFRF8qJywgWworICAgICAgICAnRElTQUJM
RURfRm9vYmFyVGVzdC5UZXN0MScsCisgICAgICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LkRJU0FC
TEVEX1Rlc3QyJywKKyAgICAgICAgJ0RJU0FCTEVEX0Zvb2JhcmJhelRlc3QuVGVzdEEnLAorICAg
ICAgICBdKQorCisgIGRlZiB0ZXN0V2lsZGNhcmRJblRlc3RDYXNlTmFtZShzZWxmKToKKyAgICAi
IiJUZXN0cyB1c2luZyB3aWxkY2FyZCBpbiB0aGUgdGVzdCBjYXNlIG5hbWUuIiIiCisKKyAgICBz
ZWxmLlJ1bkFuZFZlcmlmeSgnKmEqLionLCBbCisgICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAor
ICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKKyAgICAgICAgJ0JhclRlc3QuVGVzdFRocmVlJywK
KworICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKKyAgICAgICAgJ0JhelRlc3QuVGVzdEEnLAor
ICAgICAgICAnQmF6VGVzdC5UZXN0QicsIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTKQor
CisgIGRlZiB0ZXN0V2lsZGNhcmRJblRlc3ROYW1lKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5n
IHdpbGRjYXJkIGluIHRoZSB0ZXN0IG5hbWUuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgn
Ki4qQSonLCBbJ0Zvb1Rlc3QuQWJjJywgJ0JhelRlc3QuVGVzdEEnXSkKKworICBkZWYgdGVzdEZp
bHRlcldpdGhvdXREb3Qoc2VsZik6CisgICAgIiIiVGVzdHMgYSBmaWx0ZXIgdGhhdCBoYXMgbm8g
Jy4nIGluIGl0LiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyp6KicsIFsKKyAgICAgICAg
J0Zvb1Rlc3QuWHl6JywKKworICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKKyAgICAgICAgJ0Jh
elRlc3QuVGVzdEEnLAorICAgICAgICAnQmF6VGVzdC5UZXN0QicsCisgICAgICAgIF0pCisKKyAg
ZGVmIHRlc3RUd29QYXR0ZXJucyhzZWxmKToKKyAgICAiIiJUZXN0cyBmaWx0ZXJzIHRoYXQgY29u
c2lzdCBvZiB0d28gcGF0dGVybnMuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnRm9vKi4q
OipBKicsIFsKKyAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKKyAgICAgICAgJ0Zvb1Rlc3QuWHl6JywK
KworICAgICAgICAnQmF6VGVzdC5UZXN0QScsCisgICAgICAgIF0pCisKKyAgICAjIEFuIGVtcHR5
IHBhdHRlcm4gKyBhIG5vbi1lbXB0eSBvbmUKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnOipBKics
IFsnRm9vVGVzdC5BYmMnLCAnQmF6VGVzdC5UZXN0QSddKQorCisgIGRlZiB0ZXN0VGhyZWVQYXR0
ZXJucyhzZWxmKToKKyAgICAiIiJUZXN0cyBmaWx0ZXJzIHRoYXQgY29uc2lzdCBvZiB0aHJlZSBw
YXR0ZXJucy4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqb28qOipBKjoqT25lJywgWwor
ICAgICAgICAnRm9vVGVzdC5BYmMnLAorICAgICAgICAnRm9vVGVzdC5YeXonLAorCisgICAgICAg
ICdCYXJUZXN0LlRlc3RPbmUnLAorCisgICAgICAgICdCYXpUZXN0LlRlc3RPbmUnLAorICAgICAg
ICAnQmF6VGVzdC5UZXN0QScsCisgICAgICAgIF0pCisKKyAgICAjIFRoZSAybmQgcGF0dGVybiBp
cyBlbXB0eS4KKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKm9vKjo6Kk9uZScsIFsKKyAgICAgICAg
J0Zvb1Rlc3QuQWJjJywKKyAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKKworICAgICAgICAnQmFyVGVz
dC5UZXN0T25lJywKKworICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKKyAgICAgICAgXSkKKwor
ICAgICMgVGhlIGxhc3QgMiBwYXR0ZXJucyBhcmUgZW1wdHkuCisgICAgc2VsZi5SdW5BbmRWZXJp
ZnkoJypvbyo6OicsIFsKKyAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKKyAgICAgICAgJ0Zvb1Rlc3Qu
WHl6JywKKyAgICAgICAgXSkKKworICBkZWYgdGVzdE5lZ2F0aXZlRmlsdGVycyhzZWxmKToKKyAg
ICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi1CYXpUZXN0LlRlc3RPbmUnLCBbCisgICAgICAgICdGb29U
ZXN0LkFiYycsCisgICAgICAgICdGb29UZXN0Llh5eicsCisKKyAgICAgICAgJ0JhclRlc3QuVGVz
dE9uZScsCisgICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAorICAgICAgICAnQmFyVGVzdC5UZXN0
VGhyZWUnLAorCisgICAgICAgICdCYXpUZXN0LlRlc3RBJywKKyAgICAgICAgJ0JhelRlc3QuVGVz
dEInLAorICAgICAgICBdICsgREVBVEhfVEVTVFMgKyBQQVJBTV9URVNUUykKKworICAgIHNlbGYu
UnVuQW5kVmVyaWZ5KCcqLUZvb1Rlc3QuQWJjOkJhelRlc3QuKicsIFsKKyAgICAgICAgJ0Zvb1Rl
c3QuWHl6JywKKworICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKKyAgICAgICAgJ0JhclRlc3Qu
VGVzdFR3bycsCisgICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCisgICAgICAgIF0gKyBERUFU
SF9URVNUUyArIFBBUkFNX1RFU1RTKQorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0JhclRlc3Qu
Ki1CYXJUZXN0LlRlc3RPbmUnLCBbCisgICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAorICAgICAg
ICAnQmFyVGVzdC5UZXN0VGhyZWUnLAorICAgICAgICBdKQorCisgICAgIyBUZXN0cyB3aXRob3V0
IGxlYWRpbmcgJyonLgorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCctRm9vVGVzdC5BYmM6Rm9vVGVz
dC5YeXo6QmF6VGVzdC4qJywgWworICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKKyAgICAgICAg
J0JhclRlc3QuVGVzdFR3bycsCisgICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCisgICAgICAg
IF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTKQorCisgICAgIyBWYWx1ZSBwYXJhbWV0ZXJp
emVkIHRlc3RzLgorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLyonLCBQQVJBTV9URVNUUykKKwor
ICAgICMgVmFsdWUgcGFyYW1ldGVyaXplZCB0ZXN0cyBmaWx0ZXJpbmcgYnkgdGhlIHNlcXVlbmNl
IG5hbWUuCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ1NlcVAvKicsIFsKKyAgICAgICAgJ1NlcVAv
UGFyYW1UZXN0LlRlc3RYLzAnLAorICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMScsCisg
ICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8wJywKKyAgICAgICAgJ1NlcVAvUGFyYW1UZXN0
LlRlc3RZLzEnLAorICAgICAgICBdKQorCisgICAgIyBWYWx1ZSBwYXJhbWV0ZXJpemVkIHRlc3Rz
IGZpbHRlcmluZyBieSB0aGUgdGVzdCBuYW1lLgorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLzAn
LCBbCisgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywKKyAgICAgICAgJ1NlcVAvUGFy
YW1UZXN0LlRlc3RZLzAnLAorICAgICAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFgvMCcsCisgICAg
ICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WS8wJywKKyAgICAgICAgXSkKKworICBkZWYgdGVzdEZs
YWdPdmVycmlkZXNFbnZWYXIoc2VsZik6CisgICAgIiIiVGVzdHMgdGhhdCB0aGUgZmlsdGVyIGZs
YWcgb3ZlcnJpZGVzIHRoZSBmaWx0ZXJpbmcgZW52LiB2YXJpYWJsZS4iIiIKKworICAgIFNldEVu
dlZhcihGSUxURVJfRU5WX1ZBUiwgJ0ZvbyonKQorICAgIGFyZ3MgPSBbJy0tJXM9JXMnICUgKEZJ
TFRFUl9GTEFHLCAnKk9uZScpXQorICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0TGlz
dChhcmdzKVswXQorICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgTm9uZSkKKworICAgIHNl
bGYuQXNzZXJ0U2V0RXF1YWwodGVzdHNfcnVuLCBbJ0JhclRlc3QuVGVzdE9uZScsICdCYXpUZXN0
LlRlc3RPbmUnXSkKKworICBkZWYgdGVzdFNoYXJkU3RhdHVzRmlsZUlzQ3JlYXRlZChzZWxmKToK
KyAgICAiIiJUZXN0cyB0aGF0IHRoZSBzaGFyZCBmaWxlIGlzIGNyZWF0ZWQgaWYgc3BlY2lmaWVk
IGluIHRoZSBlbnZpcm9ubWVudC4iIiIKKworICAgIHNoYXJkX3N0YXR1c19maWxlID0gb3MucGF0
aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdzaGFyZF9zdGF0dXNfZmlsZScpCisgICAgc2VsZi5hc3NlcnRf
KG5vdCBvcy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkpCisKKyAgICBleHRyYV9lbnYg
PSB7U0hBUkRfU1RBVFVTX0ZJTEVfRU5WX1ZBUjogc2hhcmRfc3RhdHVzX2ZpbGV9CisgICAgdHJ5
OgorICAgICAgSW52b2tlV2l0aE1vZGlmaWVkRW52KGV4dHJhX2VudiwgUnVuQW5kUmV0dXJuT3V0
cHV0KQorICAgIGZpbmFsbHk6CisgICAgICBzZWxmLmFzc2VydF8ob3MucGF0aC5leGlzdHMoc2hh
cmRfc3RhdHVzX2ZpbGUpKQorICAgICAgb3MucmVtb3ZlKHNoYXJkX3N0YXR1c19maWxlKQorCisg
IGRlZiB0ZXN0U2hhcmRTdGF0dXNGaWxlSXNDcmVhdGVkV2l0aExpc3RUZXN0cyhzZWxmKToKKyAg
ICAiIiJUZXN0cyB0aGF0IHRoZSBzaGFyZCBmaWxlIGlzIGNyZWF0ZWQgd2l0aCB0aGUgImxpc3Rf
dGVzdHMiIGZsYWcuIiIiCisKKyAgICBzaGFyZF9zdGF0dXNfZmlsZSA9IG9zLnBhdGguam9pbihn
dGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnc2hhcmRfc3RhdHVzX2ZpbGUyJykKKyAgICBzZWxmLmFzc2VydF8obm90IG9z
LnBhdGguZXhpc3RzKHNoYXJkX3N0YXR1c19maWxlKSkKKworICAgIGV4dHJhX2VudiA9IHtTSEFS
RF9TVEFUVVNfRklMRV9FTlZfVkFSOiBzaGFyZF9zdGF0dXNfZmlsZX0KKyAgICB0cnk6CisgICAg
ICBvdXRwdXQgPSBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bkFuZFJldHVybk91dHB1dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbTElTVF9URVNUU19GTEFHXSkKKyAgICBmaW5hbGx5
OgorICAgICAgIyBUaGlzIGFzc2VydGlvbiBlbnN1cmVzIHRoYXQgR29vZ2xlIFRlc3QgZW51bWVy
YXRlZCB0aGUgdGVzdHMgYXMKKyAgICAgICMgb3Bwb3NlZCB0byBydW5uaW5nIHRoZW0uCisgICAg
ICBzZWxmLmFzc2VydF8oJ1s9PT09PT09PT09XScgbm90IGluIG91dHB1dCwKKyAgICAgICAgICAg
ICAgICAgICAnVW5leHBlY3RlZCBvdXRwdXQgZHVyaW5nIHRlc3QgZW51bWVyYXRpb24uXG4nCisg
ICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBlbnN1cmUgdGhhdCBMSVNUX1RFU1RTX0ZMQUcgaXMg
YXNzaWduZWQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJ2NvcnJlY3QgZmxhZyB2YWx1ZSBm
b3IgbGlzdGluZyBHb29nbGUgVGVzdCB0ZXN0cy4nKQorCisgICAgICBzZWxmLmFzc2VydF8ob3Mu
cGF0aC5leGlzdHMoc2hhcmRfc3RhdHVzX2ZpbGUpKQorICAgICAgb3MucmVtb3ZlKHNoYXJkX3N0
YXR1c19maWxlKQorCisgIGlmIFNVUFBPUlRTX0RFQVRIX1RFU1RTOgorICAgIGRlZiB0ZXN0U2hh
cmRpbmdXb3Jrc1dpdGhEZWF0aFRlc3RzKHNlbGYpOgorICAgICAgIiIiVGVzdHMgaW50ZWdyYXRp
b24gd2l0aCBkZWF0aCB0ZXN0cyBhbmQgc2hhcmRpbmcuIiIiCisKKyAgICAgIGd0ZXN0X2ZpbHRl
ciA9ICdIYXNEZWF0aFRlc3QuKjpTZXFQLyonCisgICAgICBleHBlY3RlZF90ZXN0cyA9IFsKKyAg
ICAgICAgICAnSGFzRGVhdGhUZXN0LlRlc3QxJywKKyAgICAgICAgICAnSGFzRGVhdGhUZXN0LlRl
c3QyJywKKworICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywKKyAgICAgICAgICAn
U2VxUC9QYXJhbVRlc3QuVGVzdFgvMScsCisgICAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZ
LzAnLAorICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8xJywKKyAgICAgICAgICBdCisK
KyAgICAgIGZvciBmbGFnIGluIFsnLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlPXRocmVhZHNhZmUn
LAorICAgICAgICAgICAgICAgICAgICctLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGU9ZmFzdCddOgor
ICAgICAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhndGVzdF9maWx0ZXIsIDMsIGV4
cGVjdGVkX3Rlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVj
a19leGl0XzA9VHJ1ZSwgYXJncz1bZmxhZ10pCisgICAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0
aFNoYXJkaW5nKGd0ZXN0X2ZpbHRlciwgNSwgZXhwZWN0ZWRfdGVzdHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2V4aXRfMD1UcnVlLCBhcmdzPVtmbGFnXSkK
KworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1maWx0
ZXItdW5pdHRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0
LWZpbHRlci11bml0dGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDMzNWI2MDM5MWQxZDQ2OGE0MTE2MWIz
OGMxNGVjY2JmMWQxMzgwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3RfLmNjCkBAIC0wLDAgKzEsMTM3IEBA
CisvLyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8v
IGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gVW5p
dCB0ZXN0IGZvciBHb29nbGUgVGVzdCB0ZXN0IGZpbHRlcnMuCisvLworLy8gQSB1c2VyIGNhbiBz
cGVjaWZ5IHdoaWNoIHRlc3QocykgaW4gYSBHb29nbGUgVGVzdCBwcm9ncmFtIHRvIHJ1biB2aWEK
Ky8vIGVpdGhlciB0aGUgR1RFU1RfRklMVEVSIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZSAt
LWd0ZXN0X2ZpbHRlcgorLy8gZmxhZy4gIFRoaXMgaXMgdXNlZCBmb3IgdGVzdGluZyBzdWNoIGZ1
bmN0aW9uYWxpdHkuCisvLworLy8gVGhlIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQ
eXRob24gdW5pdCB0ZXN0LiAgRG9uJ3QgcnVuIGl0CisvLyBkaXJlY3RseS4KKworI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CisKKy8vIFRlc3QgY2FzZSBGb29UZXN0Lgor
CitjbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKworVEVTVF9GKEZv
b1Rlc3QsIEFiYykgeworfQorCitURVNUX0YoRm9vVGVzdCwgWHl6KSB7CisgIEZBSUwoKSA8PCAi
RXhwZWN0ZWQgZmFpbHVyZS4iOworfQorCisvLyBUZXN0IGNhc2UgQmFyVGVzdC4KKworVEVTVChC
YXJUZXN0LCBUZXN0T25lKSB7Cit9CisKK1RFU1QoQmFyVGVzdCwgVGVzdFR3bykgeworfQorCitU
RVNUKEJhclRlc3QsIFRlc3RUaHJlZSkgeworfQorCitURVNUKEJhclRlc3QsIERJU0FCTEVEX1Rl
c3RGb3VyKSB7CisgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOworfQorCitURVNUKEJh
clRlc3QsIERJU0FCTEVEX1Rlc3RGaXZlKSB7CisgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVy
ZS4iOworfQorCisvLyBUZXN0IGNhc2UgQmF6VGVzdC4KKworVEVTVChCYXpUZXN0LCBUZXN0T25l
KSB7CisgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOworfQorCitURVNUKEJhelRlc3Qs
IFRlc3RBKSB7Cit9CisKK1RFU1QoQmF6VGVzdCwgVGVzdEIpIHsKK30KKworVEVTVChCYXpUZXN0
LCBESVNBQkxFRF9UZXN0QykgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKK30K
KworLy8gVGVzdCBjYXNlIEhhc0RlYXRoVGVzdAorCitURVNUKEhhc0RlYXRoVGVzdCwgVGVzdDEp
IHsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChleGl0KDEpLCAiLioiKTsKK30KKworLy8g
V2UgbmVlZCBhdCBsZWFzdCB0d28gZGVhdGggdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGFs
bCBkZWF0aCB0ZXN0cworLy8gYXJlbid0IG9uIHRoZSBmaXJzdCBzaGFyZC4KK1RFU1QoSGFzRGVh
dGhUZXN0LCBUZXN0MikgeworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKGV4aXQoMSksICIu
KiIpOworfQorCisvLyBUZXN0IGNhc2UgRm9vYmFyVGVzdAorCitURVNUKERJU0FCTEVEX0Zvb2Jh
clRlc3QsIFRlc3QxKSB7CisgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOworfQorCitU
RVNUKERJU0FCTEVEX0Zvb2JhclRlc3QsIERJU0FCTEVEX1Rlc3QyKSB7CisgIEZBSUwoKSA8PCAi
RXhwZWN0ZWQgZmFpbHVyZS4iOworfQorCisvLyBUZXN0IGNhc2UgRm9vYmFyYmF6VGVzdAorCitU
RVNUKERJU0FCTEVEX0Zvb2JhcmJhelRlc3QsIFRlc3RBKSB7CisgIEZBSUwoKSA8PCAiRXhwZWN0
ZWQgZmFpbHVyZS4iOworfQorCitjbGFzcyBQYXJhbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dFdpdGhQYXJhbTxpbnQ+IHsKK307CisKK1RFU1RfUChQYXJhbVRlc3QsIFRlc3RYKSB7Cit9CisK
K1RFU1RfUChQYXJhbVRlc3QsIFRlc3RZKSB7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KFNlcVAsIFBhcmFtVGVzdCwgdGVzdGluZzo6VmFsdWVzKDEsIDIpKTsKK0lOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKFNlcVEsIFBhcmFtVGVzdCwgdGVzdGluZzo6VmFsdWVzKDUsIDYpKTsKKworfSAg
Ly8gbmFtZXNwYWNlCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICA6OnRl
c3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICByZXR1cm4gUlVOX0FMTF9U
RVNUUygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LWpzb24tb3V0ZmlsZXMtdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ29vZ2xldGVzdC1qc29uLW91dGZpbGVzLXRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzk5YmU0OGU4
YWMzNjUwOWVkMzJlYTJmYjhlNGZhMWVhN2ZjODM2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1qc29uLW91dGZpbGVzLXRlc3QucHkK
QEAgLTAsMCArMSwxNjIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgMjAx
OCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyIiIlVuaXQgdGVzdCBmb3IgdGhlIGd0ZXN0X2pzb25fb3V0cHV0IG1vZHVsZS4iIiIKKwor
aW1wb3J0IGpzb24KK2ltcG9ydCBvcworaW1wb3J0IGd0ZXN0X2pzb25fdGVzdF91dGlscworaW1w
b3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworR1RFU1RfT1VUUFVUX1NVQkRJUiA9ICdqc29uX291dGZp
bGVzJworR1RFU1RfT1VUUFVUXzFfVEVTVCA9ICdndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8nCitH
VEVTVF9PVVRQVVRfMl9URVNUID0gJ2d0ZXN0X3htbF9vdXRmaWxlMl90ZXN0XycKKworRVhQRUNU
RURfMSA9IHsKKyAgICB1J3Rlc3RzJzogMSwKKyAgICB1J2ZhaWx1cmVzJzogMCwKKyAgICB1J2Rp
c2FibGVkJzogMCwKKyAgICB1J2Vycm9ycyc6IDAsCisgICAgdSd0aW1lJzogdScqJywKKyAgICB1
J3RpbWVzdGFtcCc6IHUnKicsCisgICAgdSduYW1lJzogdSdBbGxUZXN0cycsCisgICAgdSd0ZXN0
c3VpdGVzJzogW3sKKyAgICAgICAgdSduYW1lJzogdSdQcm9wZXJ0eU9uZScsCisgICAgICAgIHUn
dGVzdHMnOiAxLAorICAgICAgICB1J2ZhaWx1cmVzJzogMCwKKyAgICAgICAgdSdkaXNhYmxlZCc6
IDAsCisgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAg
ICAgdSd0ZXN0c3VpdGUnOiBbeworICAgICAgICAgICAgdSduYW1lJzogdSdUZXN0U29tZVByb3Bl
cnRpZXMnLAorICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICB1J3Rp
bWUnOiB1JyonLAorICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1Byb3BlcnR5T25lJywKKyAg
ICAgICAgICAgIHUnU2V0VXBQcm9wJzogdScxJywKKyAgICAgICAgICAgIHUnVGVzdFNvbWVQcm9w
ZXJ0eSc6IHUnMScsCisgICAgICAgICAgICB1J1RlYXJEb3duUHJvcCc6IHUnMScsCisgICAgICAg
IH1dLAorICAgIH1dLAorfQorCitFWFBFQ1RFRF8yID0geworICAgIHUndGVzdHMnOiAxLAorICAg
IHUnZmFpbHVyZXMnOiAwLAorICAgIHUnZGlzYWJsZWQnOiAwLAorICAgIHUnZXJyb3JzJzogMCwK
KyAgICB1J3RpbWUnOiB1JyonLAorICAgIHUndGltZXN0YW1wJzogdScqJywKKyAgICB1J25hbWUn
OiB1J0FsbFRlc3RzJywKKyAgICB1J3Rlc3RzdWl0ZXMnOiBbeworICAgICAgICB1J25hbWUnOiB1
J1Byb3BlcnR5VHdvJywKKyAgICAgICAgdSd0ZXN0cyc6IDEsCisgICAgICAgIHUnZmFpbHVyZXMn
OiAwLAorICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgdSdlcnJvcnMnOiAwLAorICAg
ICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICB1J3Rlc3RzdWl0ZSc6IFt7CisgICAgICAgICAg
ICB1J25hbWUnOiB1J1Rlc3RTb21lUHJvcGVydGllcycsCisgICAgICAgICAgICB1J3N0YXR1cyc6
IHUnUlVOJywKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J2NsYXNz
bmFtZSc6IHUnUHJvcGVydHlUd28nLAorICAgICAgICAgICAgdSdTZXRVcFByb3AnOiB1JzInLAor
ICAgICAgICAgICAgdSdUZXN0U29tZVByb3BlcnR5JzogdScyJywKKyAgICAgICAgICAgIHUnVGVh
ckRvd25Qcm9wJzogdScyJywKKyAgICAgICAgfV0sCisgICAgfV0sCit9CisKKworY2xhc3MgR1Rl
c3RKc29uT3V0RmlsZXNUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJVbml0
IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgSlNPTiBvdXRwdXQgZnVuY3Rpb25hbGl0eS4iIiIKKwor
ICBkZWYgc2V0VXAoc2VsZik6CisgICAgIyBXZSB3YW50IHRoZSB0cmFpbGluZyAnLycgdGhhdCB0
aGUgbGFzdCAiIiBwcm92aWRlcyBpbiBvcy5wYXRoLmpvaW4sIGZvcgorICAgICMgdGVsbGluZyBH
b29nbGUgVGVzdCB0byBjcmVhdGUgYW4gb3V0cHV0IGRpcmVjdG9yeSBpbnN0ZWFkIG9mIGEgc2lu
Z2xlIGZpbGUKKyAgICAjIGZvciB4bWwgb3V0cHV0LgorICAgIHNlbGYub3V0cHV0X2Rpcl8gPSBv
cy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9PVVRQVVRfU1VCRElSLCAnJykKKyAgICBzZWxm
LkRlbGV0ZUZpbGVzQW5kRGlyKCkKKworICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgc2VsZi5E
ZWxldGVGaWxlc0FuZERpcigpCisKKyAgZGVmIERlbGV0ZUZpbGVzQW5kRGlyKHNlbGYpOgorICAg
IHRyeToKKyAgICAgIG9zLnJlbW92ZShvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGlyXywgR1RF
U1RfT1VUUFVUXzFfVEVTVCArICcuanNvbicpKQorICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAg
IHBhc3MKKyAgICB0cnk6CisgICAgICBvcy5yZW1vdmUob3MucGF0aC5qb2luKHNlbGYub3V0cHV0
X2Rpcl8sIEdURVNUX09VVFBVVF8yX1RFU1QgKyAnLmpzb24nKSkKKyAgICBleGNlcHQgb3MuZXJy
b3I6CisgICAgICBwYXNzCisgICAgdHJ5OgorICAgICAgb3Mucm1kaXIoc2VsZi5vdXRwdXRfZGly
XykKKyAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICBwYXNzCisKKyAgZGVmIHRlc3RPdXRmaWxl
MShzZWxmKToKKyAgICBzZWxmLl9UZXN0T3V0RmlsZShHVEVTVF9PVVRQVVRfMV9URVNULCBFWFBF
Q1RFRF8xKQorCisgIGRlZiB0ZXN0T3V0ZmlsZTIoc2VsZik6CisgICAgc2VsZi5fVGVzdE91dEZp
bGUoR1RFU1RfT1VUUFVUXzJfVEVTVCwgRVhQRUNURURfMikKKworICBkZWYgX1Rlc3RPdXRGaWxl
KHNlbGYsIHRlc3RfbmFtZSwgZXhwZWN0ZWQpOgorICAgIGd0ZXN0X3Byb2dfcGF0aCA9IGd0ZXN0
X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKHRlc3RfbmFtZSkKKyAgICBjb21tYW5k
ID0gW2d0ZXN0X3Byb2dfcGF0aCwgJy0tZ3Rlc3Rfb3V0cHV0PWpzb246JXMnICUgc2VsZi5vdXRw
dXRfZGlyX10KKyAgICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JraW5nX2Rpcj1ndGVzdF90ZXN0
X3V0aWxzLkdldFRlbXBEaXIoKSkKKyAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCisgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoMCwgcC5leGl0X2NvZGUpCisKKyAgICAjIEZJWE1FOiBsaWJ0b29sIGNh
dXNlcyB0aGUgYnVpbHQgdGVzdCBiaW5hcnkgdG8gYmUKKyAgICAjICAgbmFtZWQgbHQtZ3Rlc3Rf
eG1sX291dGZpbGVzX3Rlc3RfIGluc3RlYWQgb2YKKyAgICAjICAgZ3Rlc3RfeG1sX291dGZpbGVz
X3Rlc3RfLiAgVG8gYWNjb3VudCBmb3IgdGhpcyBwb3NzaWJpbGl0eSwgd2UKKyAgICAjICAgYWxs
b3cgYm90aCBuYW1lcyBpbiB0aGUgZm9sbG93aW5nIGNvZGUuICBXZSBzaG91bGQgcmVtb3ZlIHRo
aXMKKyAgICAjICAgd2hlbiBsaWJ0b29sIHJlcGxhY2VtZW50IHRvb2wgaXMgcmVhZHkuCisgICAg
b3V0cHV0X2ZpbGVfbmFtZTEgPSB0ZXN0X25hbWUgKyAnLmpzb24nCisgICAgb3V0cHV0X2ZpbGUx
ID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2Rpcl8sIG91dHB1dF9maWxlX25hbWUxKQorICAg
IG91dHB1dF9maWxlX25hbWUyID0gJ2x0LScgKyBvdXRwdXRfZmlsZV9uYW1lMQorICAgIG91dHB1
dF9maWxlMiA9IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXJfLCBvdXRwdXRfZmlsZV9uYW1l
MikKKyAgICBzZWxmLmFzc2VydF8ob3MucGF0aC5pc2ZpbGUob3V0cHV0X2ZpbGUxKSBvciBvcy5w
YXRoLmlzZmlsZShvdXRwdXRfZmlsZTIpLAorICAgICAgICAgICAgICAgICBvdXRwdXRfZmlsZTEp
CisKKyAgICBpZiBvcy5wYXRoLmlzZmlsZShvdXRwdXRfZmlsZTEpOgorICAgICAgd2l0aCBvcGVu
KG91dHB1dF9maWxlMSkgYXMgZjoKKyAgICAgICAgYWN0dWFsID0ganNvbi5sb2FkKGYpCisgICAg
ZWxzZToKKyAgICAgIHdpdGggb3BlbihvdXRwdXRfZmlsZTIpIGFzIGY6CisgICAgICAgIGFjdHVh
bCA9IGpzb24ubG9hZChmKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGd0ZXN0X2pz
b25fdGVzdF91dGlscy5ub3JtYWxpemUoYWN0dWFsKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19t
YWluX18nOgorICBvcy5lbnZpcm9uWydHVEVTVF9TVEFDS19UUkFDRV9ERVBUSCddID0gJzAnCisg
IGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtanNvbi1vdXRwdXQtdW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtanNvbi1vdXRwdXQtdW5pdHRlc3QucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTdkY2Q1ZmExYzQ2MzlmMTUyZmI1NGU1MGZiOWMwNTk4YTBlNDZhMAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1qc29u
LW91dHB1dC11bml0dGVzdC5weQpAQCAtMCwwICsxLDYxOCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCisjIENvcHlyaWdodCAyMDE4LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVW5pdCB0ZXN0IGZvciB0aGUgZ3Rlc3RfanNvbl9v
dXRwdXQgbW9kdWxlLiIiIgorCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBlcnJubworaW1wb3J0
IGpzb24KK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCisKK2ltcG9ydCBndGVzdF9q
c29uX3Rlc3RfdXRpbHMKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKK0dURVNUX0ZJTFRFUl9G
TEFHID0gJy0tZ3Rlc3RfZmlsdGVyJworR1RFU1RfTElTVF9URVNUU19GTEFHID0gJy0tZ3Rlc3Rf
bGlzdF90ZXN0cycKK0dURVNUX09VVFBVVF9GTEFHID0gJy0tZ3Rlc3Rfb3V0cHV0JworR1RFU1Rf
REVGQVVMVF9PVVRQVVRfRklMRSA9ICd0ZXN0X2RldGFpbC5qc29uJworR1RFU1RfUFJPR1JBTV9O
QU1FID0gJ2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfJworCisjIFRoZSBmbGFnIGluZGljYXRp
bmcgc3RhY2t0cmFjZXMgYXJlIG5vdCBzdXBwb3J0ZWQKK05PX1NUQUNLVFJBQ0VfU1VQUE9SVF9G
TEFHID0gJy0tbm9fc3RhY2t0cmFjZV9zdXBwb3J0JworCitTVVBQT1JUU19TVEFDS19UUkFDRVMg
PSBOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRyBub3QgaW4gc3lzLmFyZ3YKKworaWYgU1VQUE9S
VFNfU1RBQ0tfVFJBQ0VTOgorICBTVEFDS19UUkFDRV9URU1QTEFURSA9ICdcblN0YWNrIHRyYWNl
OlxuKicKK2Vsc2U6CisgIFNUQUNLX1RSQUNFX1RFTVBMQVRFID0gJycKKworRVhQRUNURURfTk9O
X0VNUFRZID0geworICAgIHUndGVzdHMnOiAyMywKKyAgICB1J2ZhaWx1cmVzJzogNCwKKyAgICB1
J2Rpc2FibGVkJzogMiwKKyAgICB1J2Vycm9ycyc6IDAsCisgICAgdSd0aW1lc3RhbXAnOiB1Jyon
LAorICAgIHUndGltZSc6IHUnKicsCisgICAgdSdhZF9ob2NfcHJvcGVydHknOiB1JzQyJywKKyAg
ICB1J25hbWUnOiB1J0FsbFRlc3RzJywKKyAgICB1J3Rlc3RzdWl0ZXMnOiBbCisgICAgICAgIHsK
KyAgICAgICAgICAgIHUnbmFtZSc6IHUnU3VjY2Vzc2Z1bFRlc3QnLAorICAgICAgICAgICAgdSd0
ZXN0cyc6IDEsCisgICAgICAgICAgICB1J2ZhaWx1cmVzJzogMCwKKyAgICAgICAgICAgIHUnZGlz
YWJsZWQnOiAwLAorICAgICAgICAgICAgdSdlcnJvcnMnOiAwLAorICAgICAgICAgICAgdSd0aW1l
JzogdScqJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRlJzogWworICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdTdWNjZWVkcycsCisgICAgICAgICAgICAg
ICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1
JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnU3VjY2Vzc2Z1bFRlc3Qn
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICB1J25hbWUnOiB1J0ZhaWxlZFRlc3QnLAorICAgICAgICAgICAgdSd0ZXN0
cyc6IDEsCisgICAgICAgICAgICB1J2ZhaWx1cmVzJzogMSwKKyAgICAgICAgICAgIHUnZGlzYWJs
ZWQnOiAwLAorICAgICAgICAgICAgdSdlcnJvcnMnOiAwLAorICAgICAgICAgICAgdSd0aW1lJzog
dScqJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRlJzogWworICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdGYWlscycsCisgICAgICAgICAgICAgICAgICAg
IHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAor
ICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnRmFpbGVkVGVzdCcsCisgICAgICAg
ICAgICAgICAgICAgIHUnZmFpbHVyZXMnOiBbCisgICAgICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdmYWlsdXJlJzoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdSdndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqXG4nCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2Ug
dmFsdWVzOlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1JyAgMVxuICAyJyAr
IFNUQUNLX1RSQUNFX1RFTVBMQVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUndHlw
ZSc6IHUnJworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBd
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICB1J25hbWUnOiB1J0Rpc2FibGVkVGVzdCcsCisgICAgICAgICAgICB1J3Rl
c3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAwLAorICAgICAgICAgICAgdSdkaXNh
YmxlZCc6IDEsCisgICAgICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgICAgICB1J3RpbWUn
OiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBbCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0RJU0FCTEVEX3Rlc3Rfbm90X3J1bicsCisg
ICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdOT1RSVU4nLAorICAgICAgICAgICAgICAg
ICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUn
RGlzYWJsZWRUZXN0JworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdNaXhlZFJlc3VsdFRlc3QnLAor
ICAgICAgICAgICAgdSd0ZXN0cyc6IDMsCisgICAgICAgICAgICB1J2ZhaWx1cmVzJzogMSwKKyAg
ICAgICAgICAgIHUnZGlzYWJsZWQnOiAxLAorICAgICAgICAgICAgdSdlcnJvcnMnOiAwLAorICAg
ICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRlJzogWworICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdTdWNjZWVkcycs
CisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAg
ICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUn
TWl4ZWRSZXN1bHRUZXN0JworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0ZhaWxzJywKKyAgICAgICAgICAgICAgICAg
ICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKics
CisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdNaXhlZFJlc3VsdFRlc3QnLAor
ICAgICAgICAgICAgICAgICAgICB1J2ZhaWx1cmVzJzogWworICAgICAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnZmFpbHVyZSc6CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHUnZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6Klxu
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J0V4cGVjdGVkIGVxdWFsaXR5IG9m
IHRoZXNlIHZhbHVlczpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdScgIDFc
biAgMicgKyBTVEFDS19UUkFDRV9URU1QTEFURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1J3R5cGUnOiB1JycKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdmYWlsdXJlJzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0
Xy5jYzoqXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnRXhwZWN0ZWQgZXF1
YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1JyAgMlxuICAzJyArIFNUQUNLX1RSQUNFX1RFTVBMQVRFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHUndHlwZSc6IHUnJworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnRElTQUJMRURfdGVzdCcsCisgICAgICAgICAg
ICAgICAgICAgIHUnc3RhdHVzJzogdSdOT1RSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3Rp
bWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnTWl4ZWRSZXN1
bHRUZXN0JworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAg
ICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdYbWxRdW90aW5nVGVzdCcsCisgICAgICAg
ICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAxLAorICAgICAgICAg
ICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgICAg
ICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBbCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J091dHB1dHNDRGF0YScsCisg
ICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAg
ICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnWG1s
UXVvdGluZ1Rlc3QnLAorICAgICAgICAgICAgICAgICAgICB1J2ZhaWx1cmVzJzogWworICAgICAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnZmFpbHVy
ZSc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnZ3Rlc3RfeG1sX291dHB1dF91
bml0dGVzdF8uY2M6KlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J0ZhaWxl
ZFxuWE1MIG91dHB1dDogPD94bWwgZW5jb2Rpbmc9InV0Zi04Ij4nCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHUnPHRvcD48IVtDREFUQVtjZGF0YSB0ZXh0XV0+PC90b3A+JyArCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQUNLX1RSQUNFX1RFTVBMQVRFLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHUndHlwZSc6IHUnJworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1J0lu
dmFsaWRDaGFyYWN0ZXJzVGVzdCcsCisgICAgICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAg
ICAgIHUnZmFpbHVyZXMnOiAxLAorICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAg
ICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAg
ICAgdSd0ZXN0c3VpdGUnOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICB1J25hbWUnOiB1J0ludmFsaWRDaGFyYWN0ZXJzSW5NZXNzYWdlJywKKyAgICAgICAgICAgICAg
ICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUn
KicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdJbnZhbGlkQ2hhcmFjdGVy
c1Rlc3QnLAorICAgICAgICAgICAgICAgICAgICB1J2ZhaWx1cmVzJzogWworICAgICAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnZmFpbHVyZSc6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnZ3Rlc3RfeG1sX291dHB1dF91bml0dGVz
dF8uY2M6KlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J0ZhaWxlZFxuSW52
YWxpZCBjaGFyYWN0ZXJzIGluIGJyYWNrZXRzJworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1JyBbXHgwMVx4MDJdJyArIFNUQUNLX1RSQUNFX1RFTVBMQVRFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHUndHlwZSc6IHUnJworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQor
ICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1J1Byb3BlcnR5UmVj
b3JkaW5nVGVzdCcsCisgICAgICAgICAgICB1J3Rlc3RzJzogNCwKKyAgICAgICAgICAgIHUnZmFp
bHVyZXMnOiAwLAorICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vy
cm9ycyc6IDAsCisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSdTZXRV
cFRlc3RDYXNlJzogdSd5ZXMnLAorICAgICAgICAgICAgdSdUZWFyRG93blRlc3RDYXNlJzogdSdh
eWUnLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBbCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J09uZVByb3BlcnR5JywKKyAgICAgICAgICAgICAg
ICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUn
KicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdQcm9wZXJ0eVJlY29yZGlu
Z1Rlc3QnLAorICAgICAgICAgICAgICAgICAgICB1J2tleV8xJzogdScxJworICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1
J0ludFZhbHVlZFByb3BlcnR5JywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JV
TicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAg
ICAgIHUnY2xhc3NuYW1lJzogdSdQcm9wZXJ0eVJlY29yZGluZ1Rlc3QnLAorICAgICAgICAgICAg
ICAgICAgICB1J2tleV9pbnQnOiB1JzEnCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnVGhyZWVQcm9wZXJ0aWVzJywK
KyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAg
ICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdQ
cm9wZXJ0eVJlY29yZGluZ1Rlc3QnLAorICAgICAgICAgICAgICAgICAgICB1J2tleV8xJzogdScx
JywKKyAgICAgICAgICAgICAgICAgICAgdSdrZXlfMic6IHUnMicsCisgICAgICAgICAgICAgICAg
ICAgIHUna2V5XzMnOiB1JzMnCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnVHdvVmFsdWVzRm9yT25lS2V5VXNlc0xh
c3RWYWx1ZScsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAg
ICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNz
bmFtZSc6IHUnUHJvcGVydHlSZWNvcmRpbmdUZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdr
ZXlfMSc6IHUnMicKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnTm9GaXh0dXJlVGVzdCcsCisgICAg
ICAgICAgICB1J3Rlc3RzJzogMywKKyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAwLAorICAgICAg
ICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAg
ICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBbCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J1JlY29yZFByb3BlcnR5
JywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAg
ICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzog
dSdOb0ZpeHR1cmVUZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdrZXknOiB1JzEnCisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUn
bmFtZSc6IHUnRXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkSW50VmFsdWVkUHJvcGVydHkn
LAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAg
ICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1
J05vRml4dHVyZVRlc3QnLAorICAgICAgICAgICAgICAgICAgICB1J2tleV9mb3JfdXRpbGl0eV9p
bnQnOiB1JzEnCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHUnbmFtZSc6CisgICAgICAgICAgICAgICAgICAgICAgICB1J0V4dGVybmFs
VXRpbGl0eVRoYXRDYWxsc1JlY29yZFN0cmluZ1ZhbHVlZFByb3BlcnR5JywKKyAgICAgICAgICAg
ICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6
IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdOb0ZpeHR1cmVUZXN0
JywKKyAgICAgICAgICAgICAgICAgICAgdSdrZXlfZm9yX3V0aWxpdHlfc3RyaW5nJzogdScxJwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgewor
ICAgICAgICAgICAgdSduYW1lJzogdSdUeXBlZFRlc3QvMCcsCisgICAgICAgICAgICB1J3Rlc3Rz
JzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAwLAorICAgICAgICAgICAgdSdkaXNhYmxl
ZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgICAgICB1J3RpbWUnOiB1
JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBbCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0hhc1R5cGVQYXJhbUF0dHJpYnV0ZScsCisgICAg
ICAgICAgICAgICAgICAgIHUndHlwZV9wYXJhbSc6IHUnaW50JywKKyAgICAgICAgICAgICAgICAg
ICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKics
CisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdUeXBlZFRlc3QvMCcKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHUnbmFtZSc6IHUnVHlwZWRUZXN0LzEnLAorICAgICAgICAgICAgdSd0ZXN0cyc6IDEs
CisgICAgICAgICAgICB1J2ZhaWx1cmVzJzogMCwKKyAgICAgICAgICAgIHUnZGlzYWJsZWQnOiAw
LAorICAgICAgICAgICAgdSdlcnJvcnMnOiAwLAorICAgICAgICAgICAgdSd0aW1lJzogdScqJywK
KyAgICAgICAgICAgIHUndGVzdHN1aXRlJzogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgdSduYW1lJzogdSdIYXNUeXBlUGFyYW1BdHRyaWJ1dGUnLAorICAgICAgICAg
ICAgICAgICAgICB1J3R5cGVfcGFyYW0nOiB1J2xvbmcnLAorICAgICAgICAgICAgICAgICAgICB1
J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAg
ICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1R5cGVkVGVzdC8xJworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAg
ICAgdSduYW1lJzogdSdTaW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8wJywKKyAgICAg
ICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAg
ICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAg
ICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnSGFzVHlwZVBhcmFtQXR0
cmlidXRlJywKKyAgICAgICAgICAgICAgICAgICAgdSd0eXBlX3BhcmFtJzogdSdpbnQnLAorICAg
ICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAg
dSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1Npbmds
ZS9UeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLzAnCisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1J1Np
bmdsZS9UeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLzEnLAorICAgICAgICAgICAgdSd0ZXN0cyc6
IDEsCisgICAgICAgICAgICB1J2ZhaWx1cmVzJzogMCwKKyAgICAgICAgICAgIHUnZGlzYWJsZWQn
OiAwLAorICAgICAgICAgICAgdSdlcnJvcnMnOiAwLAorICAgICAgICAgICAgdSd0aW1lJzogdScq
JywKKyAgICAgICAgICAgIHUndGVzdHN1aXRlJzogWworICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgdSduYW1lJzogdSdIYXNUeXBlUGFyYW1BdHRyaWJ1dGUnLAorICAgICAg
ICAgICAgICAgICAgICB1J3R5cGVfcGFyYW0nOiB1J2xvbmcnLAorICAgICAgICAgICAgICAgICAg
ICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywK
KyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1NpbmdsZS9UeXBlUGFyYW1ldGVy
aXplZFRlc3RDYXNlLzEnCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAg
ICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1J1NpbmdsZS9WYWx1ZVBhcmFt
VGVzdCcsCisgICAgICAgICAgICB1J3Rlc3RzJzogNCwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMn
OiAwLAorICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6
IDAsCisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUn
OiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0hh
c1ZhbHVlUGFyYW1BdHRyaWJ1dGUvMCcsCisgICAgICAgICAgICAgICAgICAgIHUndmFsdWVfcGFy
YW0nOiB1JzMzJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAg
ICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xh
c3NuYW1lJzogdSdTaW5nbGUvVmFsdWVQYXJhbVRlc3QnCisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnSGFzVmFsdWVQ
YXJhbUF0dHJpYnV0ZS8xJywKKyAgICAgICAgICAgICAgICAgICAgdSd2YWx1ZV9wYXJhbSc6IHUn
NDInLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAg
ICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUn
OiB1J1NpbmdsZS9WYWx1ZVBhcmFtVGVzdCcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdBbm90aGVyVGVzdFRoYXRI
YXNWYWx1ZVBhcmFtQXR0cmlidXRlLzAnLAorICAgICAgICAgICAgICAgICAgICB1J3ZhbHVlX3Bh
cmFtJzogdSczMycsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAg
ICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2Ns
YXNzbmFtZSc6IHUnU2luZ2xlL1ZhbHVlUGFyYW1UZXN0JworICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0Fub3RoZXJU
ZXN0VGhhdEhhc1ZhbHVlUGFyYW1BdHRyaWJ1dGUvMScsCisgICAgICAgICAgICAgICAgICAgIHUn
dmFsdWVfcGFyYW0nOiB1JzQyJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JV
TicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAg
ICAgIHUnY2xhc3NuYW1lJzogdSdTaW5nbGUvVmFsdWVQYXJhbVRlc3QnCisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXQorfQorCitFWFBFQ1RFRF9GSUxU
RVJFRCA9IHsKKyAgICB1J3Rlc3RzJzogMSwKKyAgICB1J2ZhaWx1cmVzJzogMCwKKyAgICB1J2Rp
c2FibGVkJzogMCwKKyAgICB1J2Vycm9ycyc6IDAsCisgICAgdSd0aW1lJzogdScqJywKKyAgICB1
J3RpbWVzdGFtcCc6IHUnKicsCisgICAgdSduYW1lJzogdSdBbGxUZXN0cycsCisgICAgdSdhZF9o
b2NfcHJvcGVydHknOiB1JzQyJywKKyAgICB1J3Rlc3RzdWl0ZXMnOiBbeworICAgICAgICB1J25h
bWUnOiB1J1N1Y2Nlc3NmdWxUZXN0JywKKyAgICAgICAgdSd0ZXN0cyc6IDEsCisgICAgICAgIHUn
ZmFpbHVyZXMnOiAwLAorICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgdSdlcnJvcnMn
OiAwLAorICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICB1J3Rlc3RzdWl0ZSc6IFt7Cisg
ICAgICAgICAgICB1J25hbWUnOiB1J1N1Y2NlZWRzJywKKyAgICAgICAgICAgIHUnc3RhdHVzJzog
dSdSVU4nLAorICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgIHUnY2xhc3Nu
YW1lJzogdSdTdWNjZXNzZnVsVGVzdCcsCisgICAgICAgIH1dCisgICAgfV0sCit9CisKK0VYUEVD
VEVEX0VNUFRZID0geworICAgIHUndGVzdHMnOiAwLAorICAgIHUnZmFpbHVyZXMnOiAwLAorICAg
IHUnZGlzYWJsZWQnOiAwLAorICAgIHUnZXJyb3JzJzogMCwKKyAgICB1J3RpbWUnOiB1JyonLAor
ICAgIHUndGltZXN0YW1wJzogdScqJywKKyAgICB1J25hbWUnOiB1J0FsbFRlc3RzJywKKyAgICB1
J3Rlc3RzdWl0ZXMnOiBbXSwKK30KKworR1RFU1RfUFJPR1JBTV9QQVRIID0gZ3Rlc3RfdGVzdF91
dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoR1RFU1RfUFJPR1JBTV9OQU1FKQorCitTVVBQT1JU
U19UWVBFRF9URVNUUyA9ICdUeXBlZFRlc3QnIGluIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vz
cygKKyAgICBbR1RFU1RfUFJPR1JBTV9QQVRILCBHVEVTVF9MSVNUX1RFU1RTX0ZMQUddLCBjYXB0
dXJlX3N0ZGVycj1GYWxzZSkub3V0cHV0CisKKworY2xhc3MgR1Rlc3RKc29uT3V0cHV0VW5pdFRl
c3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICIiIlVuaXQgdGVzdCBmb3IgR29vZ2xl
IFRlc3QncyBKU09OIG91dHB1dCBmdW5jdGlvbmFsaXR5LgorICAiIiIKKworICAjIFRoaXMgdGVz
dCBjdXJyZW50bHkgYnJlYWtzIG9uIHBsYXRmb3JtcyB0aGF0IGRvIG5vdCBzdXBwb3J0IHR5cGVk
IGFuZAorICAjIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cywgc28gd2UgZG9uJ3QgcnVuIGl0IHVu
ZGVyIHRoZW0uCisgIGlmIFNVUFBPUlRTX1RZUEVEX1RFU1RTOgorCisgICAgZGVmIHRlc3ROb25F
bXB0eUpzb25PdXRwdXQoc2VsZik6CisgICAgICAiIiJWZXJpZmllcyBKU09OIG91dHB1dCBmb3Ig
YSBHb29nbGUgVGVzdCBiaW5hcnkgd2l0aCBub24tZW1wdHkgb3V0cHV0LgorCisgICAgICBSdW5z
IGEgdGVzdCBwcm9ncmFtIHRoYXQgZ2VuZXJhdGVzIGEgbm9uLWVtcHR5IEpTT04gb3V0cHV0LCBh
bmQKKyAgICAgIHRlc3RzIHRoYXQgdGhlIEpTT04gb3V0cHV0IGlzIGV4cGVjdGVkLgorICAgICAg
IiIiCisgICAgICBzZWxmLl9UZXN0SnNvbk91dHB1dChHVEVTVF9QUk9HUkFNX05BTUUsIEVYUEVD
VEVEX05PTl9FTVBUWSwgMSkKKworICBkZWYgdGVzdEVtcHR5SnNvbk91dHB1dChzZWxmKToKKyAg
ICAiIiJWZXJpZmllcyBKU09OIG91dHB1dCBmb3IgYSBHb29nbGUgVGVzdCBiaW5hcnkgd2l0aG91
dCBhY3R1YWwgdGVzdHMuCisKKyAgICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRoYXQgZ2VuZXJhdGVz
IGFuIGVtcHR5IEpTT04gb3V0cHV0LCBhbmQKKyAgICB0ZXN0cyB0aGF0IHRoZSBKU09OIG91dHB1
dCBpcyBleHBlY3RlZC4KKyAgICAiIiIKKworICAgIHNlbGYuX1Rlc3RKc29uT3V0cHV0KCdndGVz
dF9ub190ZXN0X3VuaXR0ZXN0JywgRVhQRUNURURfRU1QVFksIDApCisKKyAgZGVmIHRlc3RUaW1l
c3RhbXBWYWx1ZShzZWxmKToKKyAgICAiIiJDaGVja3Mgd2hldGhlciB0aGUgdGltZXN0YW1wIGF0
dHJpYnV0ZSBpbiB0aGUgSlNPTiBvdXRwdXQgaXMgdmFsaWQuCisKKyAgICBSdW5zIGEgdGVzdCBw
cm9ncmFtIHRoYXQgZ2VuZXJhdGVzIGFuIGVtcHR5IEpTT04gb3V0cHV0LCBhbmQgY2hlY2tzIGlm
CisgICAgdGhlIHRpbWVzdGFtcCBhdHRyaWJ1dGUgaW4gdGhlIHRlc3RzdWl0ZXMgdGFnIGlzIHZh
bGlkLgorICAgICIiIgorICAgIGFjdHVhbCA9IHNlbGYuX0dldEpzb25PdXRwdXQoJ2d0ZXN0X25v
X3Rlc3RfdW5pdHRlc3QnLCBbXSwgMCkKKyAgICBkYXRlX3RpbWVfc3RyID0gYWN0dWFsWyd0aW1l
c3RhbXAnXQorICAgICMgZGF0ZXRpbWUuc3RycHRpbWUoKSBpcyBvbmx5IGF2YWlsYWJsZSBpbiBQ
eXRob24gMi41KyBzbyB3ZSBoYXZlIHRvCisgICAgIyBwYXJzZSB0aGUgZXhwZWN0ZWQgZGF0ZXRp
bWUgbWFudWFsbHkuCisgICAgbWF0Y2ggPSByZS5tYXRjaChyJyhcZCspLShcZFxkKS0oXGRcZClU
KFxkXGQpOihcZFxkKTooXGRcZCknLCBkYXRlX3RpbWVfc3RyKQorICAgIHNlbGYuYXNzZXJ0VHJ1
ZSgKKyAgICAgICAgcmUubWF0Y2gsCisgICAgICAgICdKU09OIGRhdGV0dGltZSBzdHJpbmcgJXMg
aGFzIGluY29ycmVjdCBmb3JtYXQnICUgZGF0ZV90aW1lX3N0cikKKyAgICBkYXRlX3RpbWVfZnJv
bV9qc29uID0gZGF0ZXRpbWUuZGF0ZXRpbWUoCisgICAgICAgIHllYXI9aW50KG1hdGNoLmdyb3Vw
KDEpKSwgbW9udGg9aW50KG1hdGNoLmdyb3VwKDIpKSwKKyAgICAgICAgZGF5PWludChtYXRjaC5n
cm91cCgzKSksIGhvdXI9aW50KG1hdGNoLmdyb3VwKDQpKSwKKyAgICAgICAgbWludXRlPWludCht
YXRjaC5ncm91cCg1KSksIHNlY29uZD1pbnQobWF0Y2guZ3JvdXAoNikpKQorCisgICAgdGltZV9k
ZWx0YSA9IGFicyhkYXRldGltZS5kYXRldGltZS5ub3coKSAtIGRhdGVfdGltZV9mcm9tX2pzb24p
CisgICAgIyB0aW1lc3RhbXAgdmFsdWUgc2hvdWxkIGJlIG5lYXIgdGhlIGN1cnJlbnQgbG9jYWwg
dGltZQorICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0aW1lX2RlbHRhIDwgZGF0ZXRpbWUudGltZWRlbHRh
KHNlY29uZHM9NjAwKSwKKyAgICAgICAgICAgICAgICAgICAgJ3RpbWVfZGVsdGEgaXMgJXMnICUg
dGltZV9kZWx0YSkKKworICBkZWYgdGVzdERlZmF1bHRPdXRwdXRGaWxlKHNlbGYpOgorICAgICIi
IlZlcmlmaWVzIHRoZSBkZWZhdWx0IG91dHB1dCBmaWxlIG5hbWUuCisKKyAgICBDb25maXJtcyB0
aGF0IEdvb2dsZSBUZXN0IHByb2R1Y2VzIGFuIEpTT04gb3V0cHV0IGZpbGUgd2l0aCB0aGUgZXhw
ZWN0ZWQKKyAgICBkZWZhdWx0IG5hbWUgaWYgbm8gbmFtZSBpcyBleHBsaWNpdGx5IHNwZWNpZmll
ZC4KKyAgICAiIiIKKyAgICBvdXRwdXRfZmlsZSA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0
aWxzLkdldFRlbXBEaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9E
RUZBVUxUX09VVFBVVF9GSUxFKQorICAgIGd0ZXN0X3Byb2dfcGF0aCA9IGd0ZXN0X3Rlc3RfdXRp
bHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKAorICAgICAgICAnZ3Rlc3Rfbm9fdGVzdF91bml0dGVz
dCcpCisgICAgdHJ5OgorICAgICAgb3MucmVtb3ZlKG91dHB1dF9maWxlKQorICAgIGV4Y2VwdCBP
U0Vycm9yOgorICAgICAgZSA9IHN5cy5leGNfaW5mbygpWzFdCisgICAgICBpZiBlLmVycm5vICE9
IGVycm5vLkVOT0VOVDoKKyAgICAgICAgcmFpc2UKKworICAgIHAgPSBndGVzdF90ZXN0X3V0aWxz
LlN1YnByb2Nlc3MoCisgICAgICAgIFtndGVzdF9wcm9nX3BhdGgsICclcz1qc29uJyAlIEdURVNU
X09VVFBVVF9GTEFHXSwKKyAgICAgICAgd29ya2luZ19kaXI9Z3Rlc3RfdGVzdF91dGlscy5HZXRU
ZW1wRGlyKCkpCisgICAgc2VsZi5hc3NlcnRfKHAuZXhpdGVkKQorICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKDAsIHAuZXhpdF9jb2RlKQorICAgIHNlbGYuYXNzZXJ0Xyhvcy5wYXRoLmlzZmlsZShvdXRw
dXRfZmlsZSkpCisKKyAgZGVmIHRlc3RTdXBwcmVzc2VkSnNvbk91dHB1dChzZWxmKToKKyAgICAi
IiJWZXJpZmllcyB0aGF0IG5vIEpTT04gb3V0cHV0IGlzIGdlbmVyYXRlZC4KKworICAgIFRlc3Rz
IHRoYXQgbm8gSlNPTiBmaWxlIGlzIGdlbmVyYXRlZCBpZiB0aGUgZGVmYXVsdCBKU09OIGxpc3Rl
bmVyIGlzCisgICAgc2h1dCBkb3duIGJlZm9yZSBSVU5fQUxMX1RFU1RTIGlzIGludm9rZWQuCisg
ICAgIiIiCisKKyAgICBqc29uX3BhdGggPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5H
ZXRUZW1wRGlyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1BST0dSQU1f
TkFNRSArICdvdXQuanNvbicpCisgICAgaWYgb3MucGF0aC5pc2ZpbGUoanNvbl9wYXRoKToKKyAg
ICAgIG9zLnJlbW92ZShqc29uX3BhdGgpCisKKyAgICBjb21tYW5kID0gW0dURVNUX1BST0dSQU1f
UEFUSCwKKyAgICAgICAgICAgICAgICclcz1qc29uOiVzJyAlIChHVEVTVF9PVVRQVVRfRkxBRywg
anNvbl9wYXRoKSwKKyAgICAgICAgICAgICAgICctLXNodXRfZG93bl94bWwnXQorICAgIHAgPSBn
dGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKKyAgICBpZiBwLnRlcm1pbmF0ZWRf
Ynlfc2lnbmFsOgorICAgICAgIyBwLnNpZ25hbCBpcyBhdmFpbGFibGUgb25seSBpZiBwLnRlcm1p
bmF0ZWRfYnlfc2lnbmFsIGlzIFRydWUuCisgICAgICBzZWxmLmFzc2VydEZhbHNlKAorICAgICAg
ICAgIHAudGVybWluYXRlZF9ieV9zaWduYWwsCisgICAgICAgICAgJyVzIHdhcyBraWxsZWQgYnkg
c2lnbmFsICVkJyAlIChHVEVTVF9QUk9HUkFNX05BTUUsIHAuc2lnbmFsKSkKKyAgICBlbHNlOgor
ICAgICAgc2VsZi5hc3NlcnRfKHAuZXhpdGVkKQorICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwg
cC5leGl0X2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyBleGl0ZWQgd2l0aCBj
b2RlICVzLCB3aGljaCBkb2Vzbid0IG1hdGNoICIKKyAgICAgICAgICAgICAgICAgICAgICAgICd0
aGUgZXhwZWN0ZWQgZXhpdCBjb2RlICVzLicKKyAgICAgICAgICAgICAgICAgICAgICAgICUgKGNv
bW1hbmQsIHAuZXhpdF9jb2RlLCAxKSkKKworICAgIHNlbGYuYXNzZXJ0Xyhub3Qgb3MucGF0aC5p
c2ZpbGUoanNvbl9wYXRoKSkKKworICBkZWYgdGVzdEZpbHRlcmVkVGVzdEpzb25PdXRwdXQoc2Vs
Zik6CisgICAgIiIiVmVyaWZpZXMgSlNPTiBvdXRwdXQgd2hlbiBhIGZpbHRlciBpcyBhcHBsaWVk
LgorCisgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGV4ZWN1dGVzIG9ubHkgc29tZSB0ZXN0
cyBhbmQgdmVyaWZpZXMgdGhhdAorICAgIG5vbi1zZWxlY3RlZCB0ZXN0cyBkbyBub3Qgc2hvdyB1
cCBpbiB0aGUgSlNPTiBvdXRwdXQuCisgICAgIiIiCisKKyAgICBzZWxmLl9UZXN0SnNvbk91dHB1
dChHVEVTVF9QUk9HUkFNX05BTUUsIEVYUEVDVEVEX0ZJTFRFUkVELCAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4dHJhX2FyZ3M9Wyclcz1TdWNjZXNzZnVsVGVzdC4qJyAlIEdURVNUX0ZJ
TFRFUl9GTEFHXSkKKworICBkZWYgX0dldEpzb25PdXRwdXQoc2VsZiwgZ3Rlc3RfcHJvZ19uYW1l
LCBleHRyYV9hcmdzLCBleHBlY3RlZF9leGl0X2NvZGUpOgorICAgICIiIlJldHVybnMgdGhlIEpT
T04gb3V0cHV0IGdlbmVyYXRlZCBieSBydW5uaW5nIHRoZSBwcm9ncmFtIGd0ZXN0X3Byb2dfbmFt
ZS4KKworICAgIEZ1cnRoZXJtb3JlLCB0aGUgcHJvZ3JhbSdzIGV4aXQgY29kZSBtdXN0IGJlIGV4
cGVjdGVkX2V4aXRfY29kZS4KKworICAgIEFyZ3M6CisgICAgICBndGVzdF9wcm9nX25hbWU6IEdv
b2dsZSBUZXN0IGJpbmFyeSBuYW1lLgorICAgICAgZXh0cmFfYXJnczogZXh0cmEgYXJndW1lbnRz
IHRvIGJpbmFyeSBpbnZvY2F0aW9uLgorICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlOiBwcm9ncmFt
J3MgZXhpdCBjb2RlLgorICAgICIiIgorICAgIGpzb25fcGF0aCA9IG9zLnBhdGguam9pbihndGVz
dF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z3Rlc3RfcHJvZ19uYW1lICsgJ291dC5qc29uJykKKyAgICBndGVzdF9wcm9nX3BhdGggPSBndGVz
dF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aChndGVzdF9wcm9nX25hbWUpCisKKyAg
ICBjb21tYW5kID0gKAorICAgICAgICBbZ3Rlc3RfcHJvZ19wYXRoLCAnJXM9anNvbjolcycgJSAo
R1RFU1RfT1VUUFVUX0ZMQUcsIGpzb25fcGF0aCldICsKKyAgICAgICAgZXh0cmFfYXJncworICAg
ICkKKyAgICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCisgICAgaWYg
cC50ZXJtaW5hdGVkX2J5X3NpZ25hbDoKKyAgICAgIHNlbGYuYXNzZXJ0XyhGYWxzZSwKKyAgICAg
ICAgICAgICAgICAgICAnJXMgd2FzIGtpbGxlZCBieSBzaWduYWwgJWQnICUgKGd0ZXN0X3Byb2df
bmFtZSwgcC5zaWduYWwpKQorICAgIGVsc2U6CisgICAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQp
CisgICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZF9leGl0X2NvZGUsIHAuZXhpdF9jb2Rl
LAorICAgICAgICAgICAgICAgICAgICAgICAgIiclcycgZXhpdGVkIHdpdGggY29kZSAlcywgd2hp
Y2ggZG9lc24ndCBtYXRjaCAiCisgICAgICAgICAgICAgICAgICAgICAgICAndGhlIGV4cGVjdGVk
IGV4aXQgY29kZSAlcy4nCisgICAgICAgICAgICAgICAgICAgICAgICAlIChjb21tYW5kLCBwLmV4
aXRfY29kZSwgZXhwZWN0ZWRfZXhpdF9jb2RlKSkKKyAgICB3aXRoIG9wZW4oanNvbl9wYXRoKSBh
cyBmOgorICAgICAgYWN0dWFsID0ganNvbi5sb2FkKGYpCisgICAgcmV0dXJuIGFjdHVhbAorCisg
IGRlZiBfVGVzdEpzb25PdXRwdXQoc2VsZiwgZ3Rlc3RfcHJvZ19uYW1lLCBleHBlY3RlZCwKKyAg
ICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGUsIGV4dHJhX2FyZ3M9Tm9uZSk6
CisgICAgIiIiQ2hlY2tzIHRoZSBKU09OIG91dHB1dCBnZW5lcmF0ZWQgYnkgdGhlIEdvb2dsZSBU
ZXN0IGJpbmFyeS4KKworICAgIEFzc2VydHMgdGhhdCB0aGUgSlNPTiBkb2N1bWVudCBnZW5lcmF0
ZWQgYnkgcnVubmluZyB0aGUgcHJvZ3JhbQorICAgIGd0ZXN0X3Byb2dfbmFtZSBtYXRjaGVzIGV4
cGVjdGVkX2pzb24sIGEgc3RyaW5nIGNvbnRhaW5pbmcgYW5vdGhlcgorICAgIEpTT04gZG9jdW1l
bnQuICBGdXJ0aGVybW9yZSwgdGhlIHByb2dyYW0ncyBleGl0IGNvZGUgbXVzdCBiZQorICAgIGV4
cGVjdGVkX2V4aXRfY29kZS4KKworICAgIEFyZ3M6CisgICAgICBndGVzdF9wcm9nX25hbWU6IEdv
b2dsZSBUZXN0IGJpbmFyeSBuYW1lLgorICAgICAgZXhwZWN0ZWQ6IGV4cGVjdGVkIG91dHB1dC4K
KyAgICAgIGV4cGVjdGVkX2V4aXRfY29kZTogcHJvZ3JhbSdzIGV4aXQgY29kZS4KKyAgICAgIGV4
dHJhX2FyZ3M6IGV4dHJhIGFyZ3VtZW50cyB0byBiaW5hcnkgaW52b2NhdGlvbi4KKyAgICAiIiIK
KworICAgIGFjdHVhbCA9IHNlbGYuX0dldEpzb25PdXRwdXQoZ3Rlc3RfcHJvZ19uYW1lLCBleHRy
YV9hcmdzIG9yIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRf
ZXhpdF9jb2RlKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGd0ZXN0X2pzb25fdGVz
dF91dGlscy5ub3JtYWxpemUoYWN0dWFsKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgorICBpZiBOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRyBpbiBzeXMuYXJndjoKKyAgICAjIHVu
aXR0ZXN0Lm1haW4oKSBjYW4ndCBoYW5kbGUgdW5rbm93biBmbGFncworICAgIHN5cy5hcmd2LnJl
bW92ZShOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRykKKworICBvcy5lbnZpcm9uWydHVEVTVF9T
VEFDS19UUkFDRV9ERVBUSCddID0gJzEnCisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlua2VkLXB0
ci10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWxpbmtl
ZC1wdHItdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTAwZjM0Mjk2YmQ1Nzk0YzE2NDQ3OWYyMmE4OGRk
NGY3MzYwMDFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9nb29nbGV0ZXN0LWxpbmtlZC1wdHItdGVzdC5jYwpAQCAtMCwwICsxLDE1MSBAQAorLy8gQ29w
eXJpZ2h0IDIwMDMsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmli
dXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSA8c3RkbGli
Lmg+CisKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRyLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsKKwordXNpbmcgdGVzdGluZzo6TWVz
c2FnZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpsaW5rZWRfcHRyOworCitpbnQgbnVtOwor
TWVzc2FnZSogaGlzdG9yeSA9IE5VTEw7CisKKy8vIENsYXNzIHdoaWNoIHRyYWNrcyBhbGxvY2F0
aW9uL2RlYWxsb2NhdGlvbgorY2xhc3MgQSB7CisgcHVibGljOgorICBBKCk6IG15bnVtKG51bSsr
KSB7ICpoaXN0b3J5IDw8ICJBIiA8PCBteW51bSA8PCAiIGN0b3JcbiI7IH0KKyAgdmlydHVhbCB+
QSgpIHsgKmhpc3RvcnkgPDwgIkEiIDw8IG15bnVtIDw8ICIgZHRvclxuIjsgfQorICB2aXJ0dWFs
IHZvaWQgVXNlKCkgeyAqaGlzdG9yeSA8PCAiQSIgPDwgbXludW0gPDwgIiB1c2VcbiI7IH0KKyBw
cm90ZWN0ZWQ6CisgIGludCBteW51bTsKK307CisKKy8vIFN1YmNsYXNzCitjbGFzcyBCIDogcHVi
bGljIEEgeworIHB1YmxpYzoKKyAgQigpIHsgKmhpc3RvcnkgPDwgIkIiIDw8IG15bnVtIDw8ICIg
Y3RvclxuIjsgfQorICB+QigpIHsgKmhpc3RvcnkgPDwgIkIiIDw8IG15bnVtIDw8ICIgZHRvclxu
IjsgfQorICB2aXJ0dWFsIHZvaWQgVXNlKCkgeyAqaGlzdG9yeSA8PCAiQiIgPDwgbXludW0gPDwg
IiB1c2VcbiI7IH0KK307CisKK2NsYXNzIExpbmtlZFB0clRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7CisgcHVibGljOgorICBMaW5rZWRQdHJUZXN0KCkgeworICAgIG51bSA9IDA7CisgICAg
aGlzdG9yeSA9IG5ldyBNZXNzYWdlOworICB9CisKKyAgdmlydHVhbCB+TGlua2VkUHRyVGVzdCgp
IHsKKyAgICBkZWxldGUgaGlzdG9yeTsKKyAgICBoaXN0b3J5ID0gTlVMTDsKKyAgfQorfTsKKwor
VEVTVF9GKExpbmtlZFB0clRlc3QsIEdlbmVyYWxUZXN0KSB7CisgIHsKKyAgICBsaW5rZWRfcHRy
PEE+IGEwLCBhMSwgYTI7CisgICAgLy8gVXNlIGV4cGxpY2l0IGZ1bmN0aW9uIGNhbGwgbm90YXRp
b24gaGVyZSB0byBzdXBwcmVzcyBzZWxmLWFzc2lnbiB3YXJuaW5nLgorICAgIGEwLm9wZXJhdG9y
PShhMCk7CisgICAgYTEgPSBhMjsKKyAgICBBU1NFUlRfRVEoYTAuZ2V0KCksIHN0YXRpY19jYXN0
PEEqPihOVUxMKSk7CisgICAgQVNTRVJUX0VRKGExLmdldCgpLCBzdGF0aWNfY2FzdDxBKj4oTlVM
TCkpOworICAgIEFTU0VSVF9FUShhMi5nZXQoKSwgc3RhdGljX2Nhc3Q8QSo+KE5VTEwpKTsKKyAg
ICBBU1NFUlRfVFJVRShhMCA9PSBOVUxMKTsKKyAgICBBU1NFUlRfVFJVRShhMSA9PSBOVUxMKTsK
KyAgICBBU1NFUlRfVFJVRShhMiA9PSBOVUxMKTsKKworICAgIHsKKyAgICAgIGxpbmtlZF9wdHI8
QT4gYTMobmV3IEEpOworICAgICAgYTAgPSBhMzsKKyAgICAgIEFTU0VSVF9UUlVFKGEwID09IGEz
KTsKKyAgICAgIEFTU0VSVF9UUlVFKGEwICE9IE5VTEwpOworICAgICAgQVNTRVJUX1RSVUUoYTAu
Z2V0KCkgPT0gYTMpOworICAgICAgQVNTRVJUX1RSVUUoYTAgPT0gYTMuZ2V0KCkpOworICAgICAg
bGlua2VkX3B0cjxBPiBhNChhMCk7CisgICAgICBhMSA9IGE0OworICAgICAgbGlua2VkX3B0cjxB
PiBhNShuZXcgQSk7CisgICAgICBBU1NFUlRfVFJVRShhNS5nZXQoKSAhPSBhMyk7CisgICAgICBB
U1NFUlRfVFJVRShhNSAhPSBhMy5nZXQoKSk7CisgICAgICBhMiA9IGE1OworICAgICAgbGlua2Vk
X3B0cjxCPiBiMChuZXcgQik7CisgICAgICBsaW5rZWRfcHRyPEE+IGE2KGIwKTsKKyAgICAgIEFT
U0VSVF9UUlVFKGIwID09IGE2KTsKKyAgICAgIEFTU0VSVF9UUlVFKGE2ID09IGIwKTsKKyAgICAg
IEFTU0VSVF9UUlVFKGIwICE9IE5VTEwpOworICAgICAgYTUgPSBiMDsKKyAgICAgIGE1ID0gYjA7
CisgICAgICBhMy0+VXNlKCk7CisgICAgICBhNC0+VXNlKCk7CisgICAgICBhNS0+VXNlKCk7Cisg
ICAgICBhNi0+VXNlKCk7CisgICAgICBiMC0+VXNlKCk7CisgICAgICAoKmIwKS5Vc2UoKTsKKyAg
ICAgIGIwLmdldCgpLT5Vc2UoKTsKKyAgICB9CisKKyAgICBhMC0+VXNlKCk7CisgICAgYTEtPlVz
ZSgpOworICAgIGEyLT5Vc2UoKTsKKworICAgIGExID0gYTI7CisgICAgYTIucmVzZXQobmV3IEEp
OworICAgIGEwLnJlc2V0KCk7CisKKyAgICBsaW5rZWRfcHRyPEE+IGE3OworICB9CisKKyAgQVNT
RVJUX1NUUkVRKAorICAgICJBMCBjdG9yXG4iCisgICAgIkExIGN0b3JcbiIKKyAgICAiQTIgY3Rv
clxuIgorICAgICJCMiBjdG9yXG4iCisgICAgIkEwIHVzZVxuIgorICAgICJBMCB1c2VcbiIKKyAg
ICAiQjIgdXNlXG4iCisgICAgIkIyIHVzZVxuIgorICAgICJCMiB1c2VcbiIKKyAgICAiQjIgdXNl
XG4iCisgICAgIkIyIHVzZVxuIgorICAgICJCMiBkdG9yXG4iCisgICAgIkEyIGR0b3JcbiIKKyAg
ICAiQTAgdXNlXG4iCisgICAgIkEwIHVzZVxuIgorICAgICJBMSB1c2VcbiIKKyAgICAiQTMgY3Rv
clxuIgorICAgICJBMCBkdG9yXG4iCisgICAgIkEzIGR0b3JcbiIKKyAgICAiQTEgZHRvclxuIiwK
KyAgICBoaXN0b3J5LT5HZXRTdHJpbmcoKS5jX3N0cigpKTsKK30KKworfSAgLy8gVW5uYW1lZCBu
YW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xl
dGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9nb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODE0MjNhMzM5
ZThmZDI4YWEyYjQyNTMwMTNiM2MyM2NlMzUzMzc0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0LnB5
CkBAIC0wLDAgKzEsMjA1IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0
IDIwMDYsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisiIiJVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgLS1ndGVzdF9saXN0X3Rlc3Rz
IGZsYWcuCisKK0EgdXNlciBjYW4gYXNrIEdvb2dsZSBUZXN0IHRvIGxpc3QgYWxsIHRlc3RzIGJ5
IHNwZWNpZnlpbmcgdGhlCistLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4gIFRoaXMgc2NyaXB0IHRl
c3RzIHN1Y2ggZnVuY3Rpb25hbGl0eQorYnkgaW52b2tpbmcgZ29vZ2xldGVzdC1saXN0LXRlc3Rz
LXVuaXR0ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aAorR29vZ2xlIFRlc3QpIHRoZSBjb21t
YW5kIGxpbmUgZmxhZ3MuCisiIiIKKworaW1wb3J0IHJlCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGls
cworCisjIENvbnN0YW50cy4KKworIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgZm9yIGVuYWJsaW5n
L2Rpc2FibGluZyBsaXN0aW5nIGFsbCB0ZXN0cy4KK0xJU1RfVEVTVFNfRkxBRyA9ICdndGVzdF9s
aXN0X3Rlc3RzJworCisjIFBhdGggdG8gdGhlIGdvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVz
dF8gcHJvZ3JhbS4KK0VYRV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJs
ZVBhdGgoJ2dvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdF8nKQorCisjIFRoZSBleHBlY3Rl
ZCBvdXRwdXQgd2hlbiBydW5uaW5nIGdvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdF8gd2l0
aAorIyAtLWd0ZXN0X2xpc3RfdGVzdHMKK0VYUEVDVEVEX09VVFBVVF9OT19GSUxURVJfUkUgPSBy
ZS5jb21waWxlKHIiIiJGb29EZWF0aFRlc3RcLgorICBUZXN0MQorRm9vXC4KKyAgQmFyMQorICBC
YXIyCisgIERJU0FCTEVEX0JhcjMKK0FiY1wuCisgIFh5egorICBEZWYKK0Zvb0JhclwuCisgIEJh
egorRm9vVGVzdFwuCisgIFRlc3QxCisgIERJU0FCTEVEX1Rlc3QyCisgIFRlc3QzCitUeXBlZFRl
c3QvMFwuICAjIFR5cGVQYXJhbSA9IChWZXJ5TG97MjQ1fXxjbGFzcyBWZXJ5TG97MjM5fSlcLlwu
XC4KKyAgVGVzdEEKKyAgVGVzdEIKK1R5cGVkVGVzdC8xXC4gICMgVHlwZVBhcmFtID0gaW50XHMq
XCooIF9fcHRyNjQpPworICBUZXN0QQorICBUZXN0QgorVHlwZWRUZXN0LzJcLiAgIyBUeXBlUGFy
YW0gPSAuKk15QXJyYXk8Ym9vbCxccyo0Mj4KKyAgVGVzdEEKKyAgVGVzdEIKK015L1R5cGVQYXJh
bVRlc3QvMFwuICAjIFR5cGVQYXJhbSA9IChWZXJ5TG97MjQ1fXxjbGFzcyBWZXJ5TG97MjM5fSlc
LlwuXC4KKyAgVGVzdEEKKyAgVGVzdEIKK015L1R5cGVQYXJhbVRlc3QvMVwuICAjIFR5cGVQYXJh
bSA9IGludFxzKlwqKCBfX3B0cjY0KT8KKyAgVGVzdEEKKyAgVGVzdEIKK015L1R5cGVQYXJhbVRl
c3QvMlwuICAjIFR5cGVQYXJhbSA9IC4qTXlBcnJheTxib29sLFxzKjQyPgorICBUZXN0QQorICBU
ZXN0QgorTXlJbnN0YW50aWF0aW9uL1ZhbHVlUGFyYW1UZXN0XC4KKyAgVGVzdEEvMCAgIyBHZXRQ
YXJhbVwoXCkgPSBvbmUgbGluZQorICBUZXN0QS8xICAjIEdldFBhcmFtXChcKSA9IHR3b1xcbmxp
bmVzCisgIFRlc3RBLzIgICMgR2V0UGFyYW1cKFwpID0gYSB2ZXJ5XFxubG97MjQxfVwuXC5cLgor
ICBUZXN0Qi8wICAjIEdldFBhcmFtXChcKSA9IG9uZSBsaW5lCisgIFRlc3RCLzEgICMgR2V0UGFy
YW1cKFwpID0gdHdvXFxubGluZXMKKyAgVGVzdEIvMiAgIyBHZXRQYXJhbVwoXCkgPSBhIHZlcnlc
XG5sb3syNDF9XC5cLlwuCisiIiIpCisKKyMgVGhlIGV4cGVjdGVkIG91dHB1dCB3aGVuIHJ1bm5p
bmcgZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0XyB3aXRoCisjIC0tZ3Rlc3RfbGlzdF90
ZXN0cyBhbmQgLS1ndGVzdF9maWx0ZXI9Rm9vKi4KK0VYUEVDVEVEX09VVFBVVF9GSUxURVJfRk9P
X1JFID0gcmUuY29tcGlsZShyIiIiRm9vRGVhdGhUZXN0XC4KKyAgVGVzdDEKK0Zvb1wuCisgIEJh
cjEKKyAgQmFyMgorICBESVNBQkxFRF9CYXIzCitGb29CYXJcLgorICBCYXoKK0Zvb1Rlc3RcLgor
ICBUZXN0MQorICBESVNBQkxFRF9UZXN0MgorICBUZXN0MworIiIiKQorCisjIFV0aWxpdGllcy4K
KworCitkZWYgUnVuKGFyZ3MpOgorICAiIiJSdW5zIGdvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0
dGVzdF8gYW5kIHJldHVybnMgdGhlIGxpc3Qgb2YgdGVzdHMgcHJpbnRlZC4iIiIKKworICByZXR1
cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtFWEVfUEFUSF0gKyBhcmdzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVfc3RkZXJyPUZhbHNlKS5vdXRw
dXQKKworCisjIFRoZSB1bml0IHRlc3QuCisKKworY2xhc3MgR1Rlc3RMaXN0VGVzdHNVbml0VGVz
dChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgIiIiVGVzdHMgdXNpbmcgdGhlIC0tZ3Rl
c3RfbGlzdF90ZXN0cyBmbGFnIHRvIGxpc3QgYWxsIHRlc3RzLiIiIgorCisgIGRlZiBSdW5BbmRW
ZXJpZnkoc2VsZiwgZmxhZ192YWx1ZSwgZXhwZWN0ZWRfb3V0cHV0X3JlLCBvdGhlcl9mbGFnKToK
KyAgICAiIiJSdW5zIGdvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdF8gYW5kIHZlcmlmaWVz
IHRoYXQgaXQgcHJpbnRzCisgICAgdGhlIGNvcnJlY3QgdGVzdHMuCisKKyAgICBBcmdzOgorICAg
ICAgZmxhZ192YWx1ZTogICAgICAgICB2YWx1ZSBvZiB0aGUgLS1ndGVzdF9saXN0X3Rlc3RzIGZs
YWc7CisgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5v
dCBiZSBwcmVzZW50LgorICAgICAgZXhwZWN0ZWRfb3V0cHV0X3JlOiByZWd1bGFyIGV4cHJlc3Np
b24gdGhhdCBtYXRjaGVzIHRoZSBleHBlY3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICBv
dXRwdXQgYWZ0ZXIgcnVubmluZyBjb21tYW5kOworICAgICAgb3RoZXJfZmxhZzogICAgICAgICBh
IGRpZmZlcmVudCBmbGFnIHRvIGJlIHBhc3NlZCB0byBjb21tYW5kCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFsb25nIHdpdGggZ3Rlc3RfbGlzdF90ZXN0czsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgTm9uZSBpZiB0aGUgZmxhZyBzaG91bGQgbm90IGJlIHByZXNlbnQuCisgICAgIiIi
CisKKyAgICBpZiBmbGFnX3ZhbHVlIGlzIE5vbmU6CisgICAgICBmbGFnID0gJycKKyAgICAgIGZs
YWdfZXhwcmVzc2lvbiA9ICdub3Qgc2V0JworICAgIGVsaWYgZmxhZ192YWx1ZSA9PSAnMCc6Cisg
ICAgICBmbGFnID0gJy0tJXM9MCcgJSBMSVNUX1RFU1RTX0ZMQUcKKyAgICAgIGZsYWdfZXhwcmVz
c2lvbiA9ICcwJworICAgIGVsc2U6CisgICAgICBmbGFnID0gJy0tJXMnICUgTElTVF9URVNUU19G
TEFHCisgICAgICBmbGFnX2V4cHJlc3Npb24gPSAnMScKKworICAgIGFyZ3MgPSBbZmxhZ10KKwor
ICAgIGlmIG90aGVyX2ZsYWcgaXMgbm90IE5vbmU6CisgICAgICBhcmdzICs9IFtvdGhlcl9mbGFn
XQorCisgICAgb3V0cHV0ID0gUnVuKGFyZ3MpCisKKyAgICBpZiBleHBlY3RlZF9vdXRwdXRfcmU6
CisgICAgICBzZWxmLmFzc2VydF8oCisgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0X3JlLm1hdGNo
KG91dHB1dCksCisgICAgICAgICAgKCd3aGVuICVzIGlzICVzLCB0aGUgb3V0cHV0IG9mICIlcyIg
aXMgIiVzIixcbicKKyAgICAgICAgICAgJ3doaWNoIGRvZXMgbm90IG1hdGNoIHJlZ2V4ICIlcyIn
ICUKKyAgICAgICAgICAgKExJU1RfVEVTVFNfRkxBRywgZmxhZ19leHByZXNzaW9uLCAnICcuam9p
bihhcmdzKSwgb3V0cHV0LAorICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0X3JlLnBhdHRlcm4p
KSkKKyAgICBlbHNlOgorICAgICAgc2VsZi5hc3NlcnRfKAorICAgICAgICAgIG5vdCBFWFBFQ1RF
RF9PVVRQVVRfTk9fRklMVEVSX1JFLm1hdGNoKG91dHB1dCksCisgICAgICAgICAgKCd3aGVuICVz
IGlzICVzLCB0aGUgb3V0cHV0IG9mICIlcyIgaXMgIiVzIiclCisgICAgICAgICAgIChMSVNUX1RF
U1RTX0ZMQUcsIGZsYWdfZXhwcmVzc2lvbiwgJyAnLmpvaW4oYXJncyksIG91dHB1dCkpKQorCisg
IGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9yKHNlbGYpOgorICAgICIiIlRlc3RzIHRoZSBiZWhhdmlv
ciBvZiB0aGUgZGVmYXVsdCBtb2RlLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZmxhZ192
YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dF9yZT1Ob25l
LAorICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2ZsYWc9Tm9uZSkKKworICBkZWYgdGVzdEZs
YWcoc2VsZik6CisgICAgIiIiVGVzdHMgdXNpbmcgdGhlIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFn
LiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZmxhZ192YWx1ZT0nMCcsCisgICAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0X3JlPU5vbmUsCisgICAgICAgICAgICAgICAgICAg
ICAgb3RoZXJfZmxhZz1Ob25lKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFsdWU9JzEn
LAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dF9yZT1FWFBFQ1RFRF9PVVRQ
VVRfTk9fRklMVEVSX1JFLAorICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2ZsYWc9Tm9uZSkK
KworICBkZWYgdGVzdE92ZXJyaWRlTm9uRmlsdGVyRmxhZ3Moc2VsZik6CisgICAgIiIiVGVzdHMg
dGhhdCAtLWd0ZXN0X2xpc3RfdGVzdHMgb3ZlcnJpZGVzIHRoZSBub24tZmlsdGVyIGZsYWdzLiIi
IgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0X3JlPUVYUEVDVEVEX09VVFBVVF9OT19GSUxURVJfUkUs
CisgICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz0nLS1ndGVzdF9icmVha19vbl9mYWls
dXJlJykKKworICBkZWYgdGVzdFdpdGhGaWx0ZXJGbGFncyhzZWxmKToKKyAgICAiIiJUZXN0cyB0
aGF0IC0tZ3Rlc3RfbGlzdF90ZXN0cyB0YWtlcyBpbnRvIGFjY291bnQgdGhlCisgICAgLS1ndGVz
dF9maWx0ZXIgZmxhZy4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFsdWU9JzEn
LAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dF9yZT1FWFBFQ1RFRF9PVVRQ
VVRfRklMVEVSX0ZPT19SRSwKKyAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPSctLWd0
ZXN0X2ZpbHRlcj1Gb28qJykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVz
dF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9nb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfLmNjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY0NzNjN2QxYTQ1ZjFmMTk2YjEzNzQ4M2IwNTNjYTU5ODAwN2QyODgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlzdC10ZXN0
cy11bml0dGVzdF8uY2MKQEAgLTAsMCArMSwxNTYgQEAKKy8vIENvcHlyaWdodCAyMDA2LCBHb29n
bGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3Mg
LS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuCisvLworLy8gQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRl
c3QgdG8gbGlzdCBhbGwgdGVzdHMgdGhhdCB3aWxsIHJ1bgorLy8gc28gdGhhdCB3aGVuIHVzaW5n
IGEgZmlsdGVyLCBhIHVzZXIgd2lsbCBrbm93IHdoYXQKKy8vIHRlc3RzIHRvIGxvb2sgZm9yLiBU
aGUgdGVzdHMgd2lsbCBub3QgYmUgcnVuIGFmdGVyIGxpc3RpbmcuCisvLworLy8gVGhpcyBwcm9n
cmFtIHdpbGwgYmUgaW52b2tlZCBmcm9tIGEgUHl0aG9uIHVuaXQgdGVzdC4KKy8vIERvbid0IHJ1
biBpdCBkaXJlY3RseS4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKy8vIFNldmVyYWwg
ZGlmZmVyZW50IHRlc3QgY2FzZXMgYW5kIHRlc3RzIHRoYXQgd2lsbCBiZSBsaXN0ZWQuCitURVNU
KEZvbywgQmFyMSkgeworfQorCitURVNUKEZvbywgQmFyMikgeworfQorCitURVNUKEZvbywgRElT
QUJMRURfQmFyMykgeworfQorCitURVNUKEFiYywgWHl6KSB7Cit9CisKK1RFU1QoQWJjLCBEZWYp
IHsKK30KKworVEVTVChGb29CYXIsIEJheikgeworfQorCitjbGFzcyBGb29UZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgeworfTsKKworVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7Cit9CisKK1RF
U1RfRihGb29UZXN0LCBESVNBQkxFRF9UZXN0MikgeworfQorCitURVNUX0YoRm9vVGVzdCwgVGVz
dDMpIHsKK30KKworVEVTVChGb29EZWF0aFRlc3QsIFRlc3QxKSB7Cit9CisKKy8vIEEgZ3JvdXAg
b2YgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKworY2xhc3MgTXlUeXBlIHsKKyBwdWJsaWM6
CisgIGV4cGxpY2l0IE15VHlwZShjb25zdCBzdGQ6OnN0cmluZyYgYV92YWx1ZSkgOiB2YWx1ZV8o
YV92YWx1ZSkge30KKworICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUoKSBjb25zdCB7IHJldHVy
biB2YWx1ZV87IH0KKworIHByaXZhdGU6CisgIHN0ZDo6c3RyaW5nIHZhbHVlXzsKK307CisKKy8v
IFRlYWNoZXMgR29vZ2xlIFRlc3QgaG93IHRvIHByaW50IGEgTXlUeXBlLgordm9pZCBQcmludFRv
KGNvbnN0IE15VHlwZSYgeCwgc3RkOjpvc3RyZWFtKiBvcykgeworICAqb3MgPDwgeC52YWx1ZSgp
OworfQorCitjbGFzcyBWYWx1ZVBhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBh
cmFtPE15VHlwZT4geworfTsKKworVEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBUZXN0QSkgeworfQor
CitURVNUX1AoVmFsdWVQYXJhbVRlc3QsIFRlc3RCKSB7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QKAorICAgIE15SW5zdGFudGlhdGlvbiwgVmFsdWVQYXJhbVRlc3QsCisgICAgdGVzdGlu
Zzo6VmFsdWVzKE15VHlwZSgib25lIGxpbmUiKSwKKyAgICAgICAgICAgICAgICAgICAgTXlUeXBl
KCJ0d29cbmxpbmVzIiksCisgICAgICAgICAgICAgICAgICAgIE15VHlwZSgiYSB2ZXJ5XG5sb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb25nIGxpbmUiKSkpOyAgLy8gTk9MSU5UCisKKy8vIEEgZ3JvdXAg
b2YgdHlwZWQgdGVzdHMuCisKKy8vIEEgZGVsaWJlcmF0ZWx5IGxvbmcgdHlwZSBuYW1lIGZvciB0
ZXN0aW5nIHRoZSBsaW5lLXRydW5jYXRpbmcKKy8vIGJlaGF2aW9yIHdoZW4gcHJpbnRpbmcgYSB0
eXBlIHBhcmFtZXRlci4KK2NsYXNzIFZlcnlMb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb2dOYW1lIHsg
IC8vIE5PTElOVAorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlZFRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgaW50
IGtTaXplPgorY2xhc3MgTXlBcnJheSB7Cit9OworCit0eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPFZl
cnlMb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb2dOYW1lLCAgLy8gTk9MSU5UCisgICAgICAgICAgICAg
ICAgICAgICAgIGludCosIE15QXJyYXk8Ym9vbCwgNDI+ID4gTXlUeXBlczsKKworVFlQRURfVEVT
VF9DQVNFKFR5cGVkVGVzdCwgTXlUeXBlcyk7CisKK1RZUEVEX1RFU1QoVHlwZWRUZXN0LCBUZXN0
QSkgeworfQorCitUWVBFRF9URVNUKFR5cGVkVGVzdCwgVGVzdEIpIHsKK30KKworLy8gQSBncm91
cCBvZiB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
Y2xhc3MgVHlwZVBhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK1RZUEVE
X1RFU1RfQ0FTRV9QKFR5cGVQYXJhbVRlc3QpOworCitUWVBFRF9URVNUX1AoVHlwZVBhcmFtVGVz
dCwgVGVzdEEpIHsKK30KKworVFlQRURfVEVTVF9QKFR5cGVQYXJhbVRlc3QsIFRlc3RCKSB7Cit9
CisKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKFR5cGVQYXJhbVRlc3QsIFRlc3RBLCBUZXN0
Qik7CisKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBUeXBlUGFyYW1UZXN0LCBN
eVR5cGVzKTsKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIDo6dGVzdGlu
Zzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIHJldHVybiBSVU5fQUxMX1RFU1RT
KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtbGlzdGVuZXItdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xl
dGVzdC1saXN0ZW5lci10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzNTU1OTcxNTFkMDlkNmMzMTU2NzFm
NDJkYjY2Y2M0YmQ0ODUwZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlzdGVuZXItdGVzdC5jYwpAQCAtMCwwICsxLDMxMSBAQAor
Ly8gQ29weXJpZ2h0IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisv
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJp
YnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8KKy8vIFRoZSBHb29n
bGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vCisv
LyBUaGlzIGZpbGUgdmVyaWZpZXMgR29vZ2xlIFRlc3QgZXZlbnQgbGlzdGVuZXJzIHJlY2VpdmUg
ZXZlbnRzIGF0IHRoZQorLy8gcmlnaHQgdGltZXMuCisKKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNp
bmNsdWRlICJndGVzdC9ndGVzdC5oIgorCit1c2luZyA6OnRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RF
bnZpcm9ubWVudDsKK3VzaW5nIDo6dGVzdGluZzo6RW52aXJvbm1lbnQ7Cit1c2luZyA6OnRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0OwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0OwordXNpbmcgOjp0ZXN0
aW5nOjpUZXN0Q2FzZTsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXI7Cit1c2lu
ZyA6OnRlc3Rpbmc6OlRlc3RJbmZvOwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDsK
K3VzaW5nIDo6dGVzdGluZzo6VW5pdFRlc3Q7CisKKy8vIFVzZWQgYnkgdGVzdHMgdG8gcmVnaXN0
ZXIgdGhlaXIgZXZlbnRzLgorc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiBnX2V2ZW50cyA9IE5V
TEw7CisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKK2NsYXNz
IEV2ZW50UmVjb3JkaW5nTGlzdGVuZXIgOiBwdWJsaWMgVGVzdEV2ZW50TGlzdGVuZXIgeworIHB1
YmxpYzoKKyAgZXhwbGljaXQgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lcihjb25zdCBjaGFyKiBuYW1l
KSA6IG5hbWVfKG5hbWUpIHt9CisKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9pZCBPblRlc3RQ
cm9ncmFtU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKKyAgICBnX2V2ZW50
cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RQcm9ncmFtU3RhcnQiKSk7Cisg
IH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uU3RhcnQoY29uc3QgVW5pdFRlc3Qm
IC8qdW5pdF90ZXN0Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
aXRlcmF0aW9uKSB7CisgICAgTWVzc2FnZSBtZXNzYWdlOworICAgIG1lc3NhZ2UgPDwgR2V0RnVs
bE1ldGhvZE5hbWUoIk9uVGVzdEl0ZXJhdGlvblN0YXJ0IikKKyAgICAgICAgICAgIDw8ICIoIiA8
PCBpdGVyYXRpb24gPDwgIikiOworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2sobWVzc2FnZS5HZXRT
dHJpbmcoKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0
KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFj
ayhHZXRGdWxsTWV0aG9kTmFtZSgiT25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0IikpOworICB9CisK
KyAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzU2V0VXBFbmQoY29uc3QgVW5pdFRlc3QmIC8q
dW5pdF90ZXN0Ki8pIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1l
KCJPbkVudmlyb25tZW50c1NldFVwRW5kIikpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVz
dENhc2VTdGFydChjb25zdCBUZXN0Q2FzZSYgLyp0ZXN0X2Nhc2UqLykgeworICAgIGdfZXZlbnRz
LT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdENhc2VTdGFydCIpKTsKKyAgfQor
CisgIHZpcnR1YWwgdm9pZCBPblRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYgLyp0ZXN0X2luZm8q
LykgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdFN0
YXJ0IikpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVz
dFBhcnRSZXN1bHQmIC8qdGVzdF9wYXJ0X3Jlc3VsdCovKSB7CisgICAgZ19ldmVudHMtPnB1c2hf
YmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0UGFydFJlc3VsdCIpKTsKKyAgfQorCisgIHZp
cnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3QgVGVzdEluZm8mIC8qdGVzdF9pbmZvKi8pIHsKKyAg
ICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RFbmQiKSk7Cisg
IH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0Q2FzZUVuZChjb25zdCBUZXN0Q2FzZSYgLyp0ZXN0
X2Nhc2UqLykgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9u
VGVzdENhc2VFbmQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNUZWFy
RG93blN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7CisgICAgZ19ldmVudHMt
PnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0
IikpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQoY29u
c3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdl
dEZ1bGxNZXRob2ROYW1lKCJPbkVudmlyb25tZW50c1RlYXJEb3duRW5kIikpOworICB9CisKKyAg
dmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rl
c3QqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaXRlcmF0aW9uKSB7
CisgICAgTWVzc2FnZSBtZXNzYWdlOworICAgIG1lc3NhZ2UgPDwgR2V0RnVsbE1ldGhvZE5hbWUo
Ik9uVGVzdEl0ZXJhdGlvbkVuZCIpCisgICAgICAgICAgICA8PCAiKCIgIDw8IGl0ZXJhdGlvbiA8
PCAiKSI7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhtZXNzYWdlLkdldFN0cmluZygpKTsKKyAg
fQorCisgIHZpcnR1YWwgdm9pZCBPblRlc3RQcm9ncmFtRW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVu
aXRfdGVzdCovKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgi
T25UZXN0UHJvZ3JhbUVuZCIpKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgc3RkOjpzdHJpbmcgR2V0
RnVsbE1ldGhvZE5hbWUoY29uc3QgY2hhciogbmFtZSkgeworICAgIHJldHVybiBuYW1lXyArICIu
IiArIG5hbWU7CisgIH0KKworICBzdGQ6OnN0cmluZyBuYW1lXzsKK307CisKK2NsYXNzIEVudmly
b25tZW50SW52b2NhdGlvbkNhdGNoZXIgOiBwdWJsaWMgRW52aXJvbm1lbnQgeworIHByb3RlY3Rl
ZDoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkVu
dmlyb25tZW50OjpTZXRVcCIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewor
ICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkVudmlyb25tZW50OjpUZWFyRG93biIpOworICB9Cit9
OworCitjbGFzcyBMaXN0ZW5lclRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgorICBz
dGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxp
c3RlbmVyVGVzdDo6U2V0VXBUZXN0Q2FzZSIpOworICB9CisKKyAgc3RhdGljIHZvaWQgVGVhckRv
d25UZXN0Q2FzZSgpIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKCJMaXN0ZW5lclRlc3Q6OlRl
YXJEb3duVGVzdENhc2UiKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBn
X2V2ZW50cy0+cHVzaF9iYWNrKCJMaXN0ZW5lclRlc3Q6OlNldFVwIik7CisgIH0KKworICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJU
ZXN0OjpUZWFyRG93biIpOworICB9Cit9OworCitURVNUX0YoTGlzdGVuZXJUZXN0LCBEb2VzRm9v
KSB7CisgIC8vIFRlc3QgZXhlY3V0aW9uIG9yZGVyIHdpdGhpbiBhIHRlc3QgY2FzZSBpcyBub3Qg
Z3VhcmFudGVlZCBzbyB3ZSBhcmUgbm90CisgIC8vIHJlY29yZGluZyB0aGUgdGVzdCBuYW1lLgor
ICBnX2V2ZW50cy0+cHVzaF9iYWNrKCJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5Iik7CisgIFNV
Q0NFRUQoKTsgIC8vIFRyaWdnZXJzIE9uVGVzdFBhcnRSZXN1bHQuCit9CisKK1RFU1RfRihMaXN0
ZW5lclRlc3QsIERvZXNCYXIpIHsKKyAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0
OjoqIFRlc3QgQm9keSIpOworICBTVUNDRUVEKCk7ICAvLyBUcmlnZ2VycyBPblRlc3RQYXJ0UmVz
dWx0LgorfQorCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKworfSAgLy8gbmFtZXNwYWNlIHRl
c3RpbmcKKwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RW52aXJvbm1lbnRJbnZvY2F0aW9u
Q2F0Y2hlcjsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OkV2ZW50UmVjb3JkaW5nTGlzdGVu
ZXI7CisKK3ZvaWQgVmVyaWZ5UmVzdWx0cyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4m
IGRhdGEsCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogY29uc3QqIGV4cGVjdGVkX2Rh
dGEsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90IGV4cGVjdGVkX2RhdGFfc2l6ZSkgeworICBj
b25zdCBzaXplX3QgYWN0dWFsX3NpemUgPSBkYXRhLnNpemUoKTsKKyAgLy8gSWYgdGhlIGZvbGxv
d2luZyBhc3NlcnRpb24gZmFpbHMsIGEgbmV3IGVudHJ5IHdpbGwgYmUgYXBwZW5kZWQgdG8KKyAg
Ly8gZGF0YS4gIEhlbmNlIHdlIHNhdmUgZGF0YS5zaXplKCkgZmlyc3QuCisgIEVYUEVDVF9FUShl
eHBlY3RlZF9kYXRhX3NpemUsIGFjdHVhbF9zaXplKTsKKworICAvLyBDb21wYXJlcyB0aGUgY29t
bW9uIHByZWZpeC4KKyAgY29uc3Qgc2l6ZV90IHNob3J0ZXJfc2l6ZSA9IGV4cGVjdGVkX2RhdGFf
c2l6ZSA8PSBhY3R1YWxfc2l6ZSA/CisgICAgICBleHBlY3RlZF9kYXRhX3NpemUgOiBhY3R1YWxf
c2l6ZTsKKyAgc2l6ZV90IGkgPSAwOworICBmb3IgKDsgaSA8IHNob3J0ZXJfc2l6ZTsgKytpKSB7
CisgICAgQVNTRVJUX1NUUkVRKGV4cGVjdGVkX2RhdGFbaV0sIGRhdGFbaV0uY19zdHIoKSkKKyAg
ICAgICAgPDwgImF0IHBvc2l0aW9uICIgPDwgaTsKKyAgfQorCisgIC8vIFByaW50cyBleHRyYSBl
bGVtZW50cyBpbiB0aGUgYWN0dWFsIGRhdGEuCisgIGZvciAoOyBpIDwgYWN0dWFsX3NpemU7ICsr
aSkgeworICAgIHByaW50ZigiICBBY3R1YWwgZXZlbnQgIyVsdTogJXNcbiIsCisgICAgICAgIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGkpLCBkYXRhW2ldLmNfc3RyKCkpOworICB9Cit9CisK
K2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4gZXZlbnRzOworICBnX2V2ZW50cyA9ICZldmVudHM7CisgIEluaXRHb29nbGVUZXN0KCZh
cmdjLCBhcmd2KTsKKworICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCkuQXBw
ZW5kKAorICAgICAgbmV3IEV2ZW50UmVjb3JkaW5nTGlzdGVuZXIoIjFzdCIpKTsKKyAgVW5pdFRl
c3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpLkFwcGVuZCgKKyAgICAgIG5ldyBFdmVudFJl
Y29yZGluZ0xpc3RlbmVyKCIybmQiKSk7CisKKyAgQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5l
dyBFbnZpcm9ubWVudEludm9jYXRpb25DYXRjaGVyKTsKKworICBHVEVTVF9DSEVDS18oZXZlbnRz
LnNpemUoKSA9PSAwKQorICAgICAgPDwgIkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCBzaG91bGQg
bm90IGdlbmVyYXRlIGFueSBldmVudHMgaXRzZWxmLiI7CisKKyAgOjp0ZXN0aW5nOjpHVEVTVF9G
TEFHKHJlcGVhdCkgPSAyOworICBpbnQgcmV0X3ZhbCA9IFJVTl9BTExfVEVTVFMoKTsKKworICBj
b25zdCBjaGFyKiBjb25zdCBleHBlY3RlZF9ldmVudHNbXSA9IHsKKyAgICAiMXN0Lk9uVGVzdFBy
b2dyYW1TdGFydCIsCisgICAgIjJuZC5PblRlc3RQcm9ncmFtU3RhcnQiLAorICAgICIxc3QuT25U
ZXN0SXRlcmF0aW9uU3RhcnQoMCkiLAorICAgICIybmQuT25UZXN0SXRlcmF0aW9uU3RhcnQoMCki
LAorICAgICIxc3QuT25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0IiwKKyAgICAiMm5kLk9uRW52aXJv
bm1lbnRzU2V0VXBTdGFydCIsCisgICAgIkVudmlyb25tZW50OjpTZXRVcCIsCisgICAgIjJuZC5P
bkVudmlyb25tZW50c1NldFVwRW5kIiwKKyAgICAiMXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBFbmQi
LAorICAgICIxc3QuT25UZXN0Q2FzZVN0YXJ0IiwKKyAgICAiMm5kLk9uVGVzdENhc2VTdGFydCIs
CisgICAgIkxpc3RlbmVyVGVzdDo6U2V0VXBUZXN0Q2FzZSIsCisgICAgIjFzdC5PblRlc3RTdGFy
dCIsCisgICAgIjJuZC5PblRlc3RTdGFydCIsCisgICAgIkxpc3RlbmVyVGVzdDo6U2V0VXAiLAor
ICAgICJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5IiwKKyAgICAiMXN0Lk9uVGVzdFBhcnRSZXN1
bHQiLAorICAgICIybmQuT25UZXN0UGFydFJlc3VsdCIsCisgICAgIkxpc3RlbmVyVGVzdDo6VGVh
ckRvd24iLAorICAgICIybmQuT25UZXN0RW5kIiwKKyAgICAiMXN0Lk9uVGVzdEVuZCIsCisgICAg
IjFzdC5PblRlc3RTdGFydCIsCisgICAgIjJuZC5PblRlc3RTdGFydCIsCisgICAgIkxpc3RlbmVy
VGVzdDo6U2V0VXAiLAorICAgICJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5IiwKKyAgICAiMXN0
Lk9uVGVzdFBhcnRSZXN1bHQiLAorICAgICIybmQuT25UZXN0UGFydFJlc3VsdCIsCisgICAgIkxp
c3RlbmVyVGVzdDo6VGVhckRvd24iLAorICAgICIybmQuT25UZXN0RW5kIiwKKyAgICAiMXN0Lk9u
VGVzdEVuZCIsCisgICAgIkxpc3RlbmVyVGVzdDo6VGVhckRvd25UZXN0Q2FzZSIsCisgICAgIjJu
ZC5PblRlc3RDYXNlRW5kIiwKKyAgICAiMXN0Lk9uVGVzdENhc2VFbmQiLAorICAgICIxc3QuT25F
bnZpcm9ubWVudHNUZWFyRG93blN0YXJ0IiwKKyAgICAiMm5kLk9uRW52aXJvbm1lbnRzVGVhckRv
d25TdGFydCIsCisgICAgIkVudmlyb25tZW50OjpUZWFyRG93biIsCisgICAgIjJuZC5PbkVudmly
b25tZW50c1RlYXJEb3duRW5kIiwKKyAgICAiMXN0Lk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQi
LAorICAgICIybmQuT25UZXN0SXRlcmF0aW9uRW5kKDApIiwKKyAgICAiMXN0Lk9uVGVzdEl0ZXJh
dGlvbkVuZCgwKSIsCisgICAgIjFzdC5PblRlc3RJdGVyYXRpb25TdGFydCgxKSIsCisgICAgIjJu
ZC5PblRlc3RJdGVyYXRpb25TdGFydCgxKSIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVw
U3RhcnQiLAorICAgICIybmQuT25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0IiwKKyAgICAiRW52aXJv
bm1lbnQ6OlNldFVwIiwKKyAgICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiLAorICAgICIx
c3QuT25FbnZpcm9ubWVudHNTZXRVcEVuZCIsCisgICAgIjFzdC5PblRlc3RDYXNlU3RhcnQiLAor
ICAgICIybmQuT25UZXN0Q2FzZVN0YXJ0IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcFRlc3RD
YXNlIiwKKyAgICAiMXN0Lk9uVGVzdFN0YXJ0IiwKKyAgICAiMm5kLk9uVGVzdFN0YXJ0IiwKKyAg
ICAiTGlzdGVuZXJUZXN0OjpTZXRVcCIsCisgICAgIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHki
LAorICAgICIxc3QuT25UZXN0UGFydFJlc3VsdCIsCisgICAgIjJuZC5PblRlc3RQYXJ0UmVzdWx0
IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93biIsCisgICAgIjJuZC5PblRlc3RFbmQiLAor
ICAgICIxc3QuT25UZXN0RW5kIiwKKyAgICAiMXN0Lk9uVGVzdFN0YXJ0IiwKKyAgICAiMm5kLk9u
VGVzdFN0YXJ0IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcCIsCisgICAgIkxpc3RlbmVyVGVz
dDo6KiBUZXN0IEJvZHkiLAorICAgICIxc3QuT25UZXN0UGFydFJlc3VsdCIsCisgICAgIjJuZC5P
blRlc3RQYXJ0UmVzdWx0IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93biIsCisgICAgIjJu
ZC5PblRlc3RFbmQiLAorICAgICIxc3QuT25UZXN0RW5kIiwKKyAgICAiTGlzdGVuZXJUZXN0OjpU
ZWFyRG93blRlc3RDYXNlIiwKKyAgICAiMm5kLk9uVGVzdENhc2VFbmQiLAorICAgICIxc3QuT25U
ZXN0Q2FzZUVuZCIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiLAorICAg
ICIybmQuT25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0IiwKKyAgICAiRW52aXJvbm1lbnQ6OlRl
YXJEb3duIiwKKyAgICAiMm5kLk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiLAorICAgICIxc3Qu
T25FbnZpcm9ubWVudHNUZWFyRG93bkVuZCIsCisgICAgIjJuZC5PblRlc3RJdGVyYXRpb25FbmQo
MSkiLAorICAgICIxc3QuT25UZXN0SXRlcmF0aW9uRW5kKDEpIiwKKyAgICAiMm5kLk9uVGVzdFBy
b2dyYW1FbmQiLAorICAgICIxc3QuT25UZXN0UHJvZ3JhbUVuZCIKKyAgfTsKKyAgVmVyaWZ5UmVz
dWx0cyhldmVudHMsCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXZlbnRzLAorICAgICAgICAg
ICAgICAgIHNpemVvZihleHBlY3RlZF9ldmVudHMpL3NpemVvZihleHBlY3RlZF9ldmVudHNbMF0p
KTsKKworICAvLyBXZSBuZWVkIHRvIGNoZWNrIG1hbnVhbGx5IGZvciBhZCBob2MgdGVzdCBmYWls
dXJlcyB0aGF0IGhhcHBlbiBhZnRlcgorICAvLyBSVU5fQUxMX1RFU1RTIGZpbmlzaGVzLgorICBp
ZiAoVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPkZhaWxlZCgpKQorICAgIHJldF92YWwgPSAxOwor
CisgIHJldHVybiByZXRfdmFsOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LW1lc3NhZ2UtdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ29vZ2xldGVzdC1tZXNzYWdlLXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzY0NDU4NTNl
NDMzZDNjMTQzNDUyNTczOTFhNmI5ODhhOWQzODBlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1tZXNzYWdlLXRlc3QuY2MKQEAgLTAs
MCArMSwxNTggQEAKKy8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoK
Ky8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
Ly8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLwor
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworLy8KKy8vIFRlc3RzIGZvciB0aGUgTWVzc2FnZSBjbGFzcy4KKworI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LW1lc3NhZ2UuaCIKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFj
ZSB7CisKK3VzaW5nIDo6dGVzdGluZzo6TWVzc2FnZTsKKworLy8gVGVzdHMgdGhlIHRlc3Rpbmc6
Ok1lc3NhZ2UgY2xhc3MKKworLy8gVGVzdHMgdGhlIGRlZmF1bHQgY29uc3RydWN0b3IuCitURVNU
KE1lc3NhZ2VUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3IpIHsKKyAgY29uc3QgTWVzc2FnZSBtc2c7
CisgIEVYUEVDVF9FUSgiIiwgbXNnLkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMgdGhlIGNv
cHkgY29uc3RydWN0b3IuCitURVNUKE1lc3NhZ2VUZXN0LCBDb3B5Q29uc3RydWN0b3IpIHsKKyAg
Y29uc3QgTWVzc2FnZSBtc2cxKCJIZWxsbyIpOworICBjb25zdCBNZXNzYWdlIG1zZzIobXNnMSk7
CisgIEVYUEVDVF9FUSgiSGVsbG8iLCBtc2cyLkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMg
Y29uc3RydWN0aW5nIGEgTWVzc2FnZSBmcm9tIGEgQy1zdHJpbmcuCitURVNUKE1lc3NhZ2VUZXN0
LCBDb25zdHJ1Y3RzRnJvbUNTdHJpbmcpIHsKKyAgTWVzc2FnZSBtc2coIkhlbGxvIik7CisgIEVY
UEVDVF9FUSgiSGVsbG8iLCBtc2cuR2V0U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyBzdHJlYW1p
bmcgYSBmbG9hdC4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNGbG9hdCkgeworICBjb25zdCBz
dGQ6OnN0cmluZyBzID0gKE1lc3NhZ2UoKSA8PCAxLjIzNDU2RiA8PCAiICIgPDwgMi4zNDU2N0Yp
LkdldFN0cmluZygpOworICAvLyBCb3RoIG51bWJlcnMgc2hvdWxkIGJlIHByaW50ZWQgd2l0aCBl
bm91Z2ggcHJlY2lzaW9uLgorICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6OklzU3Vic3Ry
aW5nLCAiMS4yMzQ1NjAiLCBzLmNfc3RyKCkpOworICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rp
bmc6OklzU3Vic3RyaW5nLCAiIDIuMzQ1NjY5Iiwgcy5jX3N0cigpKTsKK30KKworLy8gVGVzdHMg
c3RyZWFtaW5nIGEgZG91YmxlLgorVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc0RvdWJsZSkgewor
ICBjb25zdCBzdGQ6OnN0cmluZyBzID0gKE1lc3NhZ2UoKSA8PCAxMjYwNTcwODgwLjQ1NTU0OTcg
PDwgIiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMTI2MDU3MjI2NS4x
OTU0NTM0KS5HZXRTdHJpbmcoKTsKKyAgLy8gQm90aCBudW1iZXJzIHNob3VsZCBiZSBwcmludGVk
IHdpdGggZW5vdWdoIHByZWNpc2lvbi4KKyAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5nOjpJ
c1N1YnN0cmluZywgIjEyNjA1NzA4ODAuNDUiLCBzLmNfc3RyKCkpOworICBFWFBFQ1RfUFJFRF9G
T1JNQVQyKHRlc3Rpbmc6OklzU3Vic3RyaW5nLCAiIDEyNjA1NzIyNjUuMTkiLCBzLmNfc3RyKCkp
OworfQorCisvLyBUZXN0cyBzdHJlYW1pbmcgYSBub24tY2hhciBwb2ludGVyLgorVEVTVChNZXNz
YWdlVGVzdCwgU3RyZWFtc1BvaW50ZXIpIHsKKyAgaW50IG4gPSAwOworICBpbnQqIHAgPSAmbjsK
KyAgRVhQRUNUX05FKCIobnVsbCkiLCAoTWVzc2FnZSgpIDw8IHApLkdldFN0cmluZygpKTsKK30K
KworLy8gVGVzdHMgc3RyZWFtaW5nIGEgTlVMTCBub24tY2hhciBwb2ludGVyLgorVEVTVChNZXNz
YWdlVGVzdCwgU3RyZWFtc051bGxQb2ludGVyKSB7CisgIGludCogcCA9IE5VTEw7CisgIEVYUEVD
VF9FUSgiKG51bGwpIiwgKE1lc3NhZ2UoKSA8PCBwKS5HZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRl
c3RzIHN0cmVhbWluZyBhIEMgc3RyaW5nLgorVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc0NTdHJp
bmcpIHsKKyAgRVhQRUNUX0VRKCJGb28iLCAoTWVzc2FnZSgpIDw8ICJGb28iKS5HZXRTdHJpbmco
KSk7Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIE5VTEwgQyBzdHJpbmcuCitURVNUKE1lc3Nh
Z2VUZXN0LCBTdHJlYW1zTnVsbENTdHJpbmcpIHsKKyAgY2hhciogcCA9IE5VTEw7CisgIEVYUEVD
VF9FUSgiKG51bGwpIiwgKE1lc3NhZ2UoKSA8PCBwKS5HZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRl
c3RzIHN0cmVhbWluZyBzdGQ6OnN0cmluZy4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNTdHJp
bmcpIHsKKyAgY29uc3QgOjpzdGQ6OnN0cmluZyBzdHIoIkhlbGxvIik7CisgIEVYUEVDVF9FUSgi
SGVsbG8iLCAoTWVzc2FnZSgpIDw8IHN0cikuR2V0U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyB0
aGF0IHdlIGNhbiBvdXRwdXQgc3RyaW5ncyBjb250YWluaW5nIGVtYmVkZGVkIE5VTHMuCitURVNU
KE1lc3NhZ2VUZXN0LCBTdHJlYW1zU3RyaW5nV2l0aEVtYmVkZGVkTlVMKSB7CisgIGNvbnN0IGNo
YXIgY2hhcl9hcnJheV93aXRoX251bFtdID0KKyAgICAgICJIZXJlJ3MgYSBOVUxcMCBhbmQgc29t
ZSBtb3JlIHN0cmluZyI7CisgIGNvbnN0IDo6c3RkOjpzdHJpbmcgc3RyaW5nX3dpdGhfbnVsKGNo
YXJfYXJyYXlfd2l0aF9udWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVvZihjaGFyX2FycmF5X3dpdGhfbnVsKSAtIDEpOworICBFWFBFQ1RfRVEoIkhlcmUncyBh
IE5VTFxcMCBhbmQgc29tZSBtb3JlIHN0cmluZyIsCisgICAgICAgICAgICAoTWVzc2FnZSgpIDw8
IHN0cmluZ193aXRoX251bCkuR2V0U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyBzdHJlYW1pbmcg
YSBOVUwgY2hhci4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNOVUxDaGFyKSB7CisgIEVYUEVD
VF9FUSgiXFwwIiwgKE1lc3NhZ2UoKSA8PCAnXDAnKS5HZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRl
c3RzIHN0cmVhbWluZyBpbnQuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zSW50KSB7CisgIEVY
UEVDVF9FUSgiMTIzIiwgKE1lc3NhZ2UoKSA8PCAxMjMpLkdldFN0cmluZygpKTsKK30KKworLy8g
VGVzdHMgdGhhdCBiYXNpYyBJTyBtYW5pcHVsYXRvcnMgKGVuZGwsIGVuZHMsIGFuZCBmbHVzaCkg
Y2FuIGJlCisvLyBzdHJlYW1lZCB0byBNZXNzYWdlLgorVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFt
c0Jhc2ljSW9NYW5pcCkgeworICBFWFBFQ1RfRVEoIkxpbmUgMS5cbkEgTlVMIGNoYXIgXFwwIGlu
IGxpbmUgMi4iLAorICAgICAgICAgICAgICAgKE1lc3NhZ2UoKSA8PCAiTGluZSAxLiIgPDwgc3Rk
OjplbmRsCisgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIkEgTlVMIGNoYXIgIiA8PCBzdGQ6
OmVuZHMgPDwgc3RkOjpmbHVzaAorICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgaW4gbGlu
ZSAyLiIpLkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMgTWVzc2FnZTo6R2V0U3RyaW5nKCkK
K1RFU1QoTWVzc2FnZVRlc3QsIEdldFN0cmluZykgeworICBNZXNzYWdlIG1zZzsKKyAgbXNnIDw8
IDEgPDwgIiBsYW1iIjsKKyAgRVhQRUNUX0VRKCIxIGxhbWIiLCBtc2cuR2V0U3RyaW5nKCkpOwor
fQorCisvLyBUZXN0cyBzdHJlYW1pbmcgYSBNZXNzYWdlIG9iamVjdCB0byBhbiBvc3RyZWFtLgor
VEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc1RvT1N0cmVhbSkgeworICBNZXNzYWdlIG1zZygiSGVs
bG8iKTsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgc3MgPDwgbXNnOworICBFWFBFQ1Rf
RVEoIkhlbGxvIiwgdGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZ1N0cmVhbVRvU3RyaW5nKCZzcykp
OworfQorCisvLyBUZXN0cyB0aGF0IGEgTWVzc2FnZSBvYmplY3QgZG9lc24ndCB0YWtlIHVwIHRv
byBtdWNoIHN0YWNrIHNwYWNlLgorVEVTVChNZXNzYWdlVGVzdCwgRG9lc05vdFRha2VVcE11Y2hT
dGFja1NwYWNlKSB7CisgIEVYUEVDVF9MRShzaXplb2YoTWVzc2FnZSksIDE2VSk7Cit9CisKK30g
IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
b29nbGV0ZXN0LW9wdGlvbnMtdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z29vZ2xldGVzdC1vcHRpb25zLXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWRkNGViYTNiZDMxMDk1OTUw
YThkOThjZjNkYWY2ZjM0ZDY0OTY5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1vcHRpb25zLXRlc3QuY2MKQEAgLTAsMCArMSwyMTEg
QEAKKy8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
Ly8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBH
b29nbGUgVGVzdCBVbml0VGVzdE9wdGlvbnMgdGVzdHMKKy8vCisvLyBUaGlzIGZpbGUgdGVzdHMg
Y2xhc3NlcyBhbmQgZnVuY3Rpb25zIHVzZWQgaW50ZXJuYWxseSBieQorLy8gR29vZ2xlIFRlc3Qu
ICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4KKy8vCisvLyBUaGlz
IGZpbGUgaXMgI2luY2x1ZGVkIGZyb20gZ3Rlc3QuY2MsIHRvIGF2b2lkIGNoYW5naW5nIGJ1aWxk
IG9yCisvLyBtYWtlLWZpbGVzIG9uIFdpbmRvd3MgYW5kIG90aGVyIHBsYXRmb3Jtcy4gRG8gbm90
ICNpbmNsdWRlIHRoaXMgZmlsZQorLy8gYW55d2hlcmUgZWxzZSEKKworI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCisKKyNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBpbmNsdWRlIDx3aW5k
b3dzLmg+CisjZWxpZiBHVEVTVF9PU19XSU5ET1dTCisjIGluY2x1ZGUgPGRpcmVjdC5oPgorI2Vu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCisjaW5jbHVkZSAic3JjL2d0ZXN0LWlu
dGVybmFsLWlubC5oIgorCituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwg
eworbmFtZXNwYWNlIHsKKworLy8gVHVybnMgdGhlIGdpdmVuIHJlbGF0aXZlIHBhdGggaW50byBh
biBhYnNvbHV0ZSBwYXRoLgorRmlsZVBhdGggR2V0QWJzb2x1dGVQYXRoT2YoY29uc3QgRmlsZVBh
dGgmIHJlbGF0aXZlX3BhdGgpIHsKKyAgcmV0dXJuIEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxl
UGF0aDo6R2V0Q3VycmVudERpcigpLCByZWxhdGl2ZV9wYXRoKTsKK30KKworLy8gVGVzdGluZyBV
bml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdC9HZXRPdXRwdXRGaWxlLgorCitURVNUKFht
bE91dHB1dFRlc3QsIEdldE91dHB1dEZvcm1hdERlZmF1bHQpIHsKKyAgR1RFU1RfRkxBRyhvdXRw
dXQpID0gIiI7CisgIEVYUEVDVF9TVFJFUSgiIiwgVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRG
b3JtYXQoKS5jX3N0cigpKTsKK30KKworVEVTVChYbWxPdXRwdXRUZXN0LCBHZXRPdXRwdXRGb3Jt
YXQpIHsKKyAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbDpmaWxlbmFtZSI7CisgIEVYUEVDVF9T
VFJFUSgieG1sIiwgVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQoKS5jX3N0cigpKTsK
K30KKworVEVTVChYbWxPdXRwdXRUZXN0LCBHZXRPdXRwdXRGaWxlRGVmYXVsdCkgeworICBHVEVT
VF9GTEFHKG91dHB1dCkgPSAiIjsKKyAgRVhQRUNUX0VRKEdldEFic29sdXRlUGF0aE9mKEZpbGVQ
YXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuc3RyaW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9w
dGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKK30KKworVEVTVChYbWxPdXRw
dXRUZXN0LCBHZXRPdXRwdXRGaWxlU2luZ2xlRmlsZSkgeworICBHVEVTVF9GTEFHKG91dHB1dCkg
PSAieG1sOmZpbGVuYW1lLmFiYyI7CisgIEVYUEVDVF9FUShHZXRBYnNvbHV0ZVBhdGhPZihGaWxl
UGF0aCgiZmlsZW5hbWUuYWJjIikpLnN0cmluZygpLAorICAgICAgICAgICAgVW5pdFRlc3RPcHRp
b25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSk7Cit9CisKK1RFU1QoWG1sT3V0cHV0
VGVzdCwgR2V0T3V0cHV0RmlsZUZyb21EaXJlY3RvcnlQYXRoKSB7CisgIEdURVNUX0ZMQUcob3V0
cHV0KSA9ICJ4bWw6cGF0aCIgR1RFU1RfUEFUSF9TRVBfOworICBjb25zdCBzdGQ6OnN0cmluZyBl
eHBlY3RlZF9vdXRwdXRfZmlsZSA9CisgICAgICBHZXRBYnNvbHV0ZVBhdGhPZigKKyAgICAgICAg
ICBGaWxlUGF0aChzdGQ6OnN0cmluZygicGF0aCIpICsgR1RFU1RfUEFUSF9TRVBfICsKKyAgICAg
ICAgICAgICAgICAgICBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmcoKSArICIueG1s
IikpLnN0cmluZygpOworICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2ZpbGUgPQorICAgICAg
VW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKTsKKyNpZiBHVEVT
VF9PU19XSU5ET1dTCisgIEVYUEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUuY19z
dHIoKSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7CisjZWxzZQorICBFWFBFQ1RfRVEoZXhwZWN0ZWRf
b3V0cHV0X2ZpbGUsIG91dHB1dF9maWxlLmNfc3RyKCkpOworI2VuZGlmCit9CisKK1RFU1QoT3V0
cHV0RmlsZUhlbHBlcnNUZXN0LCBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUpIHsKKyAgY29uc3Qg
c3RkOjpzdHJpbmcgZXhlX3N0ciA9IEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLnN0cmluZygp
OworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgY29uc3QgYm9vbCBzdWNjZXNzID0KKyAgICAgIF9z
dHJjbXBpKCJnb29nbGV0ZXN0LW9wdGlvbnMtdGVzdCIsIGV4ZV9zdHIuY19zdHIoKSkgPT0gMCB8
fAorICAgICAgX3N0cmNtcGkoImd0ZXN0LW9wdGlvbnMtZXhfdGVzdCIsIGV4ZV9zdHIuY19zdHIo
KSkgPT0gMCB8fAorICAgICAgX3N0cmNtcGkoImd0ZXN0X2FsbF90ZXN0IiwgZXhlX3N0ci5jX3N0
cigpKSA9PSAwIHx8CisgICAgICBfc3RyY21waSgiZ3Rlc3RfZGxsX3Rlc3QiLCBleGVfc3RyLmNf
c3RyKCkpID09IDA7CisjZWxpZiBHVEVTVF9PU19GVUNIU0lBCisgIGNvbnN0IGJvb2wgc3VjY2Vz
cyA9IGV4ZV9zdHIgPT0gImFwcCI7CisjZWxzZQorICAvLyBGSVhNRTogcmVtb3ZlIHRoZSBoYXJk
LWNvZGVkICJsdC0iIHByZWZpeCB3aGVuIGxpYnRvb2wgcmVwbGFjZW1lbnQgaXMgcmVhZHkKKyAg
Y29uc3QgYm9vbCBzdWNjZXNzID0KKyAgICAgIGV4ZV9zdHIgPT0gImdvb2dsZXRlc3Qtb3B0aW9u
cy10ZXN0IiB8fAorICAgICAgZXhlX3N0ciA9PSAiZ3Rlc3RfYWxsX3Rlc3QiIHx8CisgICAgICBl
eGVfc3RyID09ICJsdC1ndGVzdF9hbGxfdGVzdCIgfHwKKyAgICAgIGV4ZV9zdHIgPT0gImd0ZXN0
X2RsbF90ZXN0IjsKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworICBpZiAoIXN1Y2Nlc3Mp
CisgICAgRkFJTCgpIDw8ICJHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKSByZXR1cm5zICIgPDwg
ZXhlX3N0cjsKK30KKworI2lmICFHVEVTVF9PU19GVUNIU0lBCisKK2NsYXNzIFhtbE91dHB1dENo
YW5nZURpclRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIHZvaWQg
U2V0VXAoKSB7CisgICAgb3JpZ2luYWxfd29ya2luZ19kaXJfID0gRmlsZVBhdGg6OkdldEN1cnJl
bnREaXIoKTsKKyAgICBwb3NpeDo6Q2hEaXIoIi4uIik7CisgICAgLy8gVGhpcyB3aWxsIG1ha2Ug
dGhlIHRlc3QgZmFpbCBpZiBydW4gZnJvbSB0aGUgcm9vdCBkaXJlY3RvcnkuCisgICAgRVhQRUNU
X05FKG9yaWdpbmFsX3dvcmtpbmdfZGlyXy5zdHJpbmcoKSwKKyAgICAgICAgICAgICAgRmlsZVBh
dGg6OkdldEN1cnJlbnREaXIoKS5zdHJpbmcoKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVh
ckRvd24oKSB7CisgICAgcG9zaXg6OkNoRGlyKG9yaWdpbmFsX3dvcmtpbmdfZGlyXy5zdHJpbmco
KS5jX3N0cigpKTsKKyAgfQorCisgIEZpbGVQYXRoIG9yaWdpbmFsX3dvcmtpbmdfZGlyXzsKK307
CisKK1RFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2lu
Z0RpcldpdGhEZWZhdWx0KSB7CisgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICIiOworICBFWFBFQ1Rf
RVEoRmlsZVBhdGg6OkNvbmNhdFBhdGhzKG9yaWdpbmFsX3dvcmtpbmdfZGlyXywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgidGVzdF9kZXRhaWwueG1sIikpLnN0
cmluZygpLAorICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091
dHB1dEZpbGUoKSk7Cit9CisKK1RFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2
ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhEZWZhdWx0WE1MKSB7CisgIEdURVNUX0ZMQUcob3V0cHV0
KSA9ICJ4bWwiOworICBFWFBFQ1RfRVEoRmlsZVBhdGg6OkNvbmNhdFBhdGhzKG9yaWdpbmFsX3dv
cmtpbmdfZGlyXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgi
dGVzdF9kZXRhaWwueG1sIikpLnN0cmluZygpLAorICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25z
OjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSk7Cit9CisKK1RFU1RfRihYbWxPdXRwdXRD
aGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhSZWxhdGl2ZUZpbGUp
IHsKKyAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbDpmaWxlbmFtZS5hYmMiOworICBFWFBFQ1Rf
RVEoRmlsZVBhdGg6OkNvbmNhdFBhdGhzKG9yaWdpbmFsX3dvcmtpbmdfZGlyXywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiZmlsZW5hbWUuYWJjIikpLnN0cmlu
ZygpLAorICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1
dEZpbGUoKSk7Cit9CisKK1RFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9y
aWdpbmFsV29ya2luZ0RpcldpdGhSZWxhdGl2ZVBhdGgpIHsKKyAgR1RFU1RfRkxBRyhvdXRwdXQp
ID0gInhtbDpwYXRoIiBHVEVTVF9QQVRIX1NFUF87CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVj
dGVkX291dHB1dF9maWxlID0KKyAgICAgIEZpbGVQYXRoOjpDb25jYXRQYXRocygKKyAgICAgICAg
ICBvcmlnaW5hbF93b3JraW5nX2Rpcl8sCisgICAgICAgICAgRmlsZVBhdGgoc3RkOjpzdHJpbmco
InBhdGgiKSArIEdURVNUX1BBVEhfU0VQXyArCisgICAgICAgICAgICAgICAgICAgR2V0Q3VycmVu
dEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKyAiLnhtbCIpKS5zdHJpbmcoKTsKKyAgY29uc3Qg
c3RkOjpzdHJpbmcmIG91dHB1dF9maWxlID0KKyAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJz
b2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7CisjaWYgR1RFU1RfT1NfV0lORE9XUworICBFWFBFQ1Rf
U1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxlLmNfc3RyKCksIG91dHB1dF9maWxlLmNfc3Ry
KCkpOworI2Vsc2UKKyAgRVhQRUNUX0VRKGV4cGVjdGVkX291dHB1dF9maWxlLCBvdXRwdXRfZmls
ZS5jX3N0cigpKTsKKyNlbmRpZgorfQorCitURVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwg
UHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoQWJzb2x1dGVGaWxlKSB7CisjaWYgR1RFU1Rf
T1NfV0lORE9XUworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOmM6XFx0bXBcXGZpbGVuYW1l
LmFiYyI7CisgIEVYUEVDVF9FUShGaWxlUGF0aCgiYzpcXHRtcFxcZmlsZW5hbWUuYWJjIikuc3Ry
aW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0
cHV0RmlsZSgpKTsKKyNlbHNlCisgIEdURVNUX0ZMQUcob3V0cHV0KSA9InhtbDovdG1wL2ZpbGVu
YW1lLmFiYyI7CisgIEVYUEVDVF9FUShGaWxlUGF0aCgiL3RtcC9maWxlbmFtZS5hYmMiKS5zdHJp
bmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRw
dXRGaWxlKCkpOworI2VuZGlmCit9CisKK1RFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQ
cmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhBYnNvbHV0ZVBhdGgpIHsKKyNpZiBHVEVTVF9P
U19XSU5ET1dTCisgIGNvbnN0IHN0ZDo6c3RyaW5nIHBhdGggPSAiYzpcXHRtcFxcIjsKKyNlbHNl
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHBhdGggPSAiL3RtcC8iOworI2VuZGlmCisKKyAgR1RFU1Rf
RkxBRyhvdXRwdXQpID0gInhtbDoiICsgcGF0aDsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZXhwZWN0
ZWRfb3V0cHV0X2ZpbGUgPQorICAgICAgcGF0aCArIEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgp
LnN0cmluZygpICsgIi54bWwiOworICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2ZpbGUgPQor
ICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKTsKKwor
I2lmIEdURVNUX09TX1dJTkRPV1MKKyAgRVhQRUNUX1NUUkNBU0VFUShleHBlY3RlZF9vdXRwdXRf
ZmlsZS5jX3N0cigpLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKKyNlbHNlCisgIEVYUEVDVF9FUShl
eHBlY3RlZF9vdXRwdXRfZmlsZSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7CisjZW5kaWYKK30KKwor
I2VuZGlmICAvLyAhR1RFU1RfT1NfRlVDSFNJQQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5h
bWVzcGFjZSBpbnRlcm5hbAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1vdXRwdXQtdGVzdC1nb2xkZW4t
bGluLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1vdXRwdXQt
dGVzdC1nb2xkZW4tbGluLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzExY2RjNjhhZTUzOGNjZTllMzk4NGJj
ZTFiN2FiNjVhYTYyYTUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0LWdvbGRlbi1saW4udHh0CkBAIC0wLDAgKzEs
MTA0NyBAQAorVGhlIG5vbi10ZXN0IHBhcnQgb2YgdGhlIGNvZGUgaXMgZXhwZWN0ZWQgdG8gaGF2
ZSAyIGZhaWx1cmVzLgorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitW
YWx1ZSBvZjogZmFsc2UKKyAgQWN0dWFsOiBmYWxzZQorRXhwZWN0ZWQ6IHRydWUKK1N0YWNrIHRy
YWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQor
RXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAyCisgIDMKK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworG1swOzMybVs9PT09PT09PT09XSAbW21SdW5uaW5nIDc2IHRlc3RzIGZy
b20gMzQgdGVzdCBjYXNlcy4KKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttR2xvYmFsIHRlc3QgZW52
aXJvbm1lbnQgc2V0LXVwLgorRm9vRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLgorQmFyRW52
aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLgorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3Qg
ZnJvbSBBRGVhdGhUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUFEZWF0aFRlc3QuU2hvdWxk
UnVuRmlyc3QKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttQURlYXRoVGVzdC5TaG91bGRSdW5GaXJz
dAorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBBVHlwZWREZWF0aFRlc3QvMCwg
d2hlcmUgVHlwZVBhcmFtID0gaW50CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUFUeXBlZERlYXRo
VGVzdC8wLlNob3VsZFJ1bkZpcnN0CisbWzA7MzJtWyAgICAgICBPSyBdIBtbbUFUeXBlZERlYXRo
VGVzdC8wLlNob3VsZFJ1bkZpcnN0CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9t
IEFUeXBlZERlYXRoVGVzdC8xLCB3aGVyZSBUeXBlUGFyYW0gPSBkb3VibGUKKxtbMDszMm1bIFJV
TiAgICAgIF0gG1ttQVR5cGVkRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1bICAg
ICAgIE9LIF0gG1ttQVR5cGVkRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1bLS0t
LS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8wLCB3aGVyZSBU
eXBlUGFyYW0gPSBpbnQKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttTXkvQVR5cGVQYXJhbURlYXRo
VGVzdC8wLlNob3VsZFJ1bkZpcnN0CisbWzA7MzJtWyAgICAgICBPSyBdIBtbbU15L0FUeXBlUGFy
YW1EZWF0aFRlc3QvMC5TaG91bGRSdW5GaXJzdAorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRl
c3QgZnJvbSBNeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEsIHdoZXJlIFR5cGVQYXJhbSA9IGRvdWJs
ZQorG1swOzMybVsgUlVOICAgICAgXSAbW21NeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEuU2hvdWxk
UnVuRmlyc3QKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8x
LlNob3VsZFJ1bkZpcnN0CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBQYXNz
aW5nVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDEK
KxtbMDszMm1bICAgICAgIE9LIF0gG1ttUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QxCisbWzA7MzJt
WyBSVU4gICAgICBdIBtbbVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgorG1swOzMybVsgICAgICAg
T0sgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDIKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1tt
MiB0ZXN0cyBmcm9tIE5vbmZhdGFsRmFpbHVyZVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1tt
Tm9uZmF0YWxGYWlsdXJlVGVzdC5Fc2NhcGVzU3RyaW5nT3BlcmFuZHMKK2dvb2dsZXRlc3Qtb3V0
cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVl
czoKKyAga0dvbGRlblN0cmluZworICAgIFdoaWNoIGlzOiAiXCJMaW5lIgorICBhY3R1YWwKKyAg
ICBXaGljaCBpczogImFjdHVhbCBcInN0cmluZ1wiIgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQor
Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0
eSBvZiB0aGVzZSB2YWx1ZXM6CisgIGdvbGRlbgorICAgIFdoaWNoIGlzOiAiXCJMaW5lIgorICBh
Y3R1YWwKKyAgICBXaGljaCBpczogImFjdHVhbCBcInN0cmluZ1wiIgorU3RhY2sgdHJhY2U6IChv
bWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbmZhdGFsRmFpbHVyZVRlc3QuRXNj
YXBlc1N0cmluZ09wZXJhbmRzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbU5vbmZhdGFsRmFpbHVy
ZVRlc3QuRGlmZkZvckxvbmdTdHJpbmdzCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBG
YWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIGdvbGRlbl9zdHIK
KyAgICBXaGljaCBpczogIlwiTGluZVwwIDFcIlxuTGluZSAyIgorICAiTGluZSAyIgorV2l0aCBk
aWZmOgorQEAgLTEsMiBAQAorLVwiTGluZVwwIDFcIgorIExpbmUgMgorCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uZmF0YWxGYWlsdXJlVGVzdC5E
aWZmRm9yTG9uZ1N0cmluZ3MKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMyB0ZXN0cyBmcm9tIEZh
dGFsRmFpbHVyZVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5G
YXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKKyhleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91
bGQgYmUgMSkKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVk
IGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICB4CisgICAgV2hpY2ggaXM6IDIKK1N0
YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1
cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQorG1swOzMybVsgUlVOICAgICAgXSAbW21G
YXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQorKGV4cGVjdGlu
ZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8u
Y2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxCisg
IHgKKyAgICBXaGljaCBpczogMgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0
aW5lCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWls
dXJlSW5TdWJyb3V0aW5lCisoZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiBmYWxzZSkKK2dvb2dsZXRl
c3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK1ZhbHVlIG9mOiBmYWxzZQorICBBY3R1YWw6
IGZhbHNlCitFeHBlY3RlZDogdHJ1ZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFt
WyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0
aW5lCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIExvZ2dpbmdUZXN0CisbWzA7
MzJtWyBSVU4gICAgICBdIBtbbUxvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3Nl
cnRpb25zCisoZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24gKDMpID49IChhW2ldKSkKK2kgPT0gMAor
aSA9PSAxCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDog
KDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDkKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKwor
aSA9PSAyCitpID09IDMKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4
cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgNgorU3RhY2sgdHJhY2U6IChvbWl0
dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUxvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xv
Z2dpbmdBbmRBc3NlcnRpb25zCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTcgdGVzdHMgZnJvbSBT
Q09QRURfVFJBQ0VUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3Qu
QWNjZXB0ZWRWYWx1ZXMKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0Zh
aWxlZAorSnVzdCBjaGVja2luZyB0aGF0IGFsbCB0aGVzZSB2YWx1ZXMgd29yayBmaW5lLgorR29v
Z2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiAobnVsbCkKK2dv
b2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IDEzMzcKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
LmNjOiM6IHN0ZDo6c3RyaW5nCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBsaXRlcmFs
IHN0cmluZworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bVNDT1BFRF9UUkFDRVRlc3QuQWNjZXB0ZWRWYWx1ZXMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1tt
U0NPUEVEX1RSQUNFVGVzdC5PYmV5c1Njb3BlcworKGV4cGVjdGVkIHRvIGZhaWwpCitnb29nbGV0
ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK1RoaXMgZmFpbHVyZSBpcyBl
eHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuCitTdGFjayB0cmFjZTogKG9taXR0
ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorVGhp
cyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGhhdmUgYSB0cmFjZS4KK0dvb2dsZSBU
ZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRXhwZWN0ZWQgdHJhY2UK
K1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izog
RmFpbHVyZQorRmFpbGVkCitUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGRuJ3Qg
aGF2ZSBhIHRyYWNlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMKKxtbMDszMm1bIFJVTiAgICAgIF0g
G1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAorKGV4cGVjdGVkIHRvIGZhaWwpCitnb29n
bGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0
aGVzZSB2YWx1ZXM6CisgIDIKKyAgbgorICAgIFdoaWNoIGlzOiAxCitHb29nbGUgVGVzdCB0cmFj
ZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IGkgPSAxCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVk
IGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICBuCisgICAgV2hpY2ggaXM6IDIKK0dv
b2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogaSA9IDIKK1N0
YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJB
Q0VUZXN0LldvcmtzSW5Mb29wCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRl
c3QuV29ya3NJblN1YnJvdXRpbmUKKyhleHBlY3RlZCB0byBmYWlsKQorZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVz
OgorICAyCisgIG4KKyAgICBXaGljaCBpczogMQorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0
ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBuID0gMQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitn
b29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBv
ZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAgbgorICAgIFdoaWNoIGlzOiAyCitHb29nbGUgVGVzdCB0
cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IG4gPSAyCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jr
c0luU3Vicm91dGluZQorG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNh
bkJlTmVzdGVkCisoZXhwZWN0ZWQgdG8gZmFpbCkKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNj
OiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICBu
CisgICAgV2hpY2ggaXM6IDIKK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQt
dGVzdF8uY2M6IzogbiA9IDIKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IAorU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRl
c3QuQ2FuQmVOZXN0ZWQKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5D
YW5CZVJlcGVhdGVkCisoZXhwZWN0ZWQgdG8gZmFpbCkKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hv
dWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQS4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogQQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0
ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK1RoaXMgZmFpbHVyZSBpcyBl
eHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEgYW5kIEIuCitHb29nbGUg
VGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEIKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IEEKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitUaGlzIGZhaWx1cmUgaXMgZXhw
ZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQgQy4KK0dvb2ds
ZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogQworZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogQgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogQQor
U3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBG
YWlsdXJlCitGYWlsZWQKK1RoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250
YWluIHRyYWNlIHBvaW50IEEsIEIsIGFuZCBELgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0
ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBECitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBC
Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBBCitTdGFjayB0cmFjZTogKG9taXR0ZWQp
CisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZVJlcGVhdGVk
CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NDb25jdXJyZW50
bHkKKyhleHBlY3RpbmcgNiBmYWlsdXJlcykKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6
IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMSAoaW4gdGhyZWFkIEIsIG9ubHkg
dHJhY2UgQiBhbGl2ZSkuCitHb29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRl
c3RfLmNjOiM6IFRyYWNlIEIKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1v
dXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMyIChp
biB0aHJlYWQgQSwgdHJhY2UgQSAmIEIgYm90aCBhbGl2ZSkuCitHb29nbGUgVGVzdCB0cmFjZToK
K2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IFRyYWNlIEEKK1N0YWNrIHRyYWNlOiAob21p
dHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitF
eHBlY3RlZCBmYWlsdXJlICMzIChpbiB0aHJlYWQgQiwgdHJhY2UgQSAmIEIgYm90aCBhbGl2ZSku
CitHb29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IFRyYWNl
IEIKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6
IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICM0IChpbiB0aHJlYWQgQiwgb25s
eSB0cmFjZSBBIGFsaXZlKS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1v
dXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICM1IChp
biB0aHJlYWQgQSwgb25seSB0cmFjZSBBIGFsaXZlKS4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29v
Z2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogVHJhY2UgQQorU3RhY2sgdHJhY2U6IChvbWl0dGVk
KQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVj
dGVkIGZhaWx1cmUgIzYgKGluIHRocmVhZCBBLCBubyB0cmFjZSBhbGl2ZSkuCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5X
b3Jrc0NvbmN1cnJlbnRseQorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBTY29w
ZWRUcmFjZVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttU2NvcGVkVHJhY2VUZXN0LldpdGhF
eHBsaWNpdEZpbGVBbmRMaW5lCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJl
CitGYWlsZWQKK0NoZWNrIHRoYXQgdGhlIHRyYWNlIGlzIGF0dGFjaGVkIHRvIGEgcGFydGljdWxh
ciBsb2NhdGlvbi4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZXhwbGljaXRfZmlsZS5jYzoxMjM6IGV4
cGVjdGVkIHRyYWNlIG1lc3NhZ2UKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21TY29wZWRUcmFjZVRlc3QuV2l0aEV4cGxpY2l0RmlsZUFuZExpbmUKKxtb
MDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJl
Q29uc3RydWN0b3JUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbU5vbkZhdGFsRmFpbHVyZUlu
Rml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgorKGV4cGVjdGluZyA1
IGZhaWx1cmVzKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVk
CitFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGMndG9yLgorU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJl
CitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFNldFVwKCkuCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxl
ZAorRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgYm9keS4KK1N0YWNrIHRyYWNlOiAo
b21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVk
CitFeHBlY3RlZCBmYWlsdXJlICM0LCBpbiBUZWFyRG93bi4KK1N0YWNrIHRyYWNlOiAob21pdHRl
ZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBl
Y3RlZCBmYWlsdXJlICM1LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgorU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluRml4
dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgorG1swOzMybVstLS0tLS0t
LS0tXSAbW20xIHRlc3QgZnJvbSBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QK
KxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JU
ZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCisoZXhwZWN0aW5nIDIgZmFpbHVyZXMpCitnb29nbGV0
ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUg
IzEsIGluIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisK
K2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQg
ZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KK1N0YWNrIHRyYWNlOiAob21p
dHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25z
dHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1tt
MSB0ZXN0IGZyb20gTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QKKxtbMDszMm1bIFJVTiAgICAg
IF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKKyhleHBlY3Rp
bmcgNCBmYWlsdXJlcykKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0Zh
aWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gU2V0VXAoKS4KK1N0YWNrIHRyYWNlOiAob21p
dHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitF
eHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmdW5jdGlvbi4KK1N0YWNrIHRyYWNlOiAo
b21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVk
CitFeHBlY3RlZCBmYWlsdXJlICMzLCBpbiBUZWFyRG93bigpLgorU3RhY2sgdHJhY2U6IChvbWl0
dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4
cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5T
ZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZy
b20gRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxG
YWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKKyhleHBlY3RpbmcgMyBmYWlsdXJlcykK
K2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQg
ZmFpbHVyZSAjMSwgaW4gU2V0VXAoKS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJl
ICMyLCBpbiBUZWFyRG93bigpLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0
LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzMs
IGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtb
MDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0
VXAKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gQWRkRmFpbHVyZUF0VGVzdAor
G1swOzMybVsgUlVOICAgICAgXSAbW21BZGRGYWlsdXJlQXRUZXN0Lk1lc3NhZ2VDb250YWluc1Nw
ZWNpZmllZEZpbGVBbmRMaW5lTnVtYmVyCitmb28uY2M6NDI6IEZhaWx1cmUKK0ZhaWxlZAorRXhw
ZWN0ZWQgZmFpbHVyZSBpbiBmb28uY2MKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21BZGRGYWlsdXJlQXRUZXN0Lk1lc3NhZ2VDb250YWluc1NwZWNpZmll
ZEZpbGVBbmRMaW5lTnVtYmVyCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTQgdGVzdHMgZnJvbSBN
aXhlZFVwVGVzdENhc2VUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2Fz
ZVRlc3QuRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbworG1swOzMybVsgICAgICAgT0sgXSAbW21N
aXhlZFVwVGVzdENhc2VUZXN0LkZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28KKxtbMDszMm1bIFJV
TiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5TZWNvbmRUZXN0RnJvbU5hbWVzcGFjZUZv
bworG1swOzMybVsgICAgICAgT0sgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlNlY29uZFRlc3RG
cm9tTmFtZXNwYWNlRm9vCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRl
c3QuVGhpc1Nob3VsZEZhaWwKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorQWxsIHRlc3Rz
IGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKK2Ns
YXNzLiAgSG93ZXZlciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVRlc3QsCit5b3UgZGVm
aW5lZCB0ZXN0IEZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28gYW5kIHRlc3QgVGhpc1Nob3VsZEZh
aWwKK3VzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBo
YXBwZW4gaWYKK3RoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBv
ciB0cmFuc2xhdGlvbgordW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQg
cHJvYmFibHkgcmVuYW1lIG9uZQorb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRv
IGRpZmZlcmVudCB0ZXN0IGNhc2VzLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFt
WyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwKKxtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbFRvbwor
Z3Rlc3QuY2M6IzogRmFpbHVyZQorRmFpbGVkCitBbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBj
YXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQorY2xhc3MuICBIb3dldmVyLCBpbiB0
ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlVGVzdCwKK3lvdSBkZWZpbmVkIHRlc3QgRmlyc3RUZXN0
RnJvbU5hbWVzcGFjZUZvbyBhbmQgdGVzdCBUaGlzU2hvdWxkRmFpbFRvbwordXNpbmcgdHdvIGRp
ZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBlbiBpZgordGhlIHR3
byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCit1
bml0cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAgWW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUg
b25lCitvZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3Qg
Y2FzZXMuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
TWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbFRvbworG1swOzMybVstLS0tLS0tLS0t
XSAbW20yIHRlc3RzIGZyb20gTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QKKxtb
MDszMm1bIFJVTiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3Qu
VGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKKxtbMDszMm1bICAgICAgIE9LIF0g
G1ttTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhU
aGlzTmFtZVNob3VsZEZhaWwKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNl
V2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwK
K2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3Qg
Y2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKK2NsYXNzLiAgSG93ZXZlciwgaW4g
dGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAoreW91IGRlZmlu
ZWQgdGVzdCBUaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbCBhbmQgdGVzdCBUaGVT
ZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAordXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0
IGZpeHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBlbiBpZgordGhlIHR3byBjbGFzc2VzIGFy
ZSBmcm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCit1bml0cyBhbmQgaGF2
ZSB0aGUgc2FtZSBuYW1lLiAgWW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25lCitvZiB0aGUg
Y2xhc3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMuCitTdGFj
ayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RD
YXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZh
aWwKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFRFU1RfRl9iZWZvcmVfVEVT
VF9pbl9zYW1lX3Rlc3RfY2FzZQorG1swOzMybVsgUlVOICAgICAgXSAbW21URVNUX0ZfYmVmb3Jl
X1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GCisbWzA7MzJtWyAgICAg
ICBPSyBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNp
bmdURVNUX0YKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2luX3Nh
bWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsCitndGVzdC5jYzojOiBG
YWlsdXJlCitGYWlsZWQKK0FsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2Ug
dGhlIHNhbWUgdGVzdCBmaXh0dXJlCitjbGFzcywgc28gbWl4aW5nIFRFU1RfRiBhbmQgVEVTVCBp
biB0aGUgc2FtZSB0ZXN0IGNhc2UgaXMKK2lsbGVnYWwuICBJbiB0ZXN0IGNhc2UgVEVTVF9GX2Jl
Zm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLAordGVzdCBEZWZpbmVkVXNpbmdURVNUX0YgaXMg
ZGVmaW5lZCB1c2luZyBURVNUX0YgYnV0Cit0ZXN0IERlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRG
YWlsIGlzIGRlZmluZWQgdXNpbmcgVEVTVC4gIFlvdSBwcm9iYWJseQord2FudCB0byBjaGFuZ2Ug
dGhlIFRFU1QgdG8gVEVTVF9GIG9yIG1vdmUgaXQgdG8gYW5vdGhlciB0ZXN0CitjYXNlLgorU3Rh
Y2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVRFU1RfRl9iZWZv
cmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxkRmFpbAor
G1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVEVTVF9iZWZvcmVfVEVTVF9GX2lu
X3NhbWVfdGVzdF9jYXNlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVRFU1RfYmVmb3JlX1RFU1Rf
Rl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUCisbWzA7MzJtWyAgICAgICBPSyBd
IBtbbVRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNU
CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3Rf
Y2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsCitndGVzdC5jYzojOiBGYWlsdXJl
CitGYWlsZWQKK0FsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNh
bWUgdGVzdCBmaXh0dXJlCitjbGFzcywgc28gbWl4aW5nIFRFU1RfRiBhbmQgVEVTVCBpbiB0aGUg
c2FtZSB0ZXN0IGNhc2UgaXMKK2lsbGVnYWwuICBJbiB0ZXN0IGNhc2UgVEVTVF9iZWZvcmVfVEVT
VF9GX2luX3NhbWVfdGVzdF9jYXNlLAordGVzdCBEZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRG
YWlsIGlzIGRlZmluZWQgdXNpbmcgVEVTVF9GIGJ1dAordGVzdCBEZWZpbmVkVXNpbmdURVNUIGlz
IGRlZmluZWQgdXNpbmcgVEVTVC4gIFlvdSBwcm9iYWJseQord2FudCB0byBjaGFuZ2UgdGhlIFRF
U1QgdG8gVEVTVF9GIG9yIG1vdmUgaXQgdG8gYW5vdGhlciB0ZXN0CitjYXNlLgorU3RhY2sgdHJh
Y2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVRFU1RfYmVmb3JlX1RFU1Rf
Rl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsCisbWzA7
MzJtWy0tLS0tLS0tLS1dIBtbbTggdGVzdHMgZnJvbSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVm
ZXJlbmNlR2xvYmFsVmFyaWFibGVzCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdE5vbmZh
dGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCisbWzA7MzJtWyBSVU4g
ICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxWYXJp
YWJsZXMKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5D
YW5SZWZlcmVuY2VMb2NhbFZhcmlhYmxlcworG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUK
KxtbMDszMm1bICAgICAgIE9LIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5TdWNjZWVk
c1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJl
CisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAx
IG5vbi1mYXRhbCBmYWlsdXJlCisgIEFjdHVhbDogMCBmYWlsdXJlcworU3RhY2sgdHJhY2U6IChv
bWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRl
c3QuRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJlCisbWzA7MzJtWyBSVU4gICAgICBd
IBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRh
bEZhaWx1cmVzCisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4
cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCisgIEFjdHVhbDogMiBmYWlsdXJlcworZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVj
dGVkIG5vbi1mYXRhbCBmYWlsdXJlIDEuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworZ29v
Z2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4
cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDIuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKwor
U3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1cmVzCisb
WzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVu
VGhlcmVJc09uZUZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyBhIGZhaWx1cmUpCitndGVzdC5jYzoj
OiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6Citnb29n
bGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgorRmFpbGVkCitFeHBlY3Rl
ZCBmYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1
cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKKxtbMDszMm1bIFJVTiAgICAg
IF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5z
CisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAx
IG5vbi1mYXRhbCBmYWlsdXJlCisgIEFjdHVhbDogMCBmYWlsdXJlcworU3RhY2sgdHJhY2U6IChv
bWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRl
c3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucworG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cworKGV4cGVjdGlu
ZyBhIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwg
ZmFpbHVyZQorICBBY3R1YWw6IDAgZmFpbHVyZXMKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKwor
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hl
blN0YXRlbWVudFRocm93cworG1swOzMybVstLS0tLS0tLS0tXSAbW204IHRlc3RzIGZyb20gRXhw
ZWN0RmF0YWxGYWlsdXJlVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcworG1swOzMybVsgICAgICAgT0sg
XSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwor
G1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5j
ZUxvY2FsU3RhdGljVmFyaWFibGVzCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdEZhdGFs
RmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxTdGF0aWNWYXJpYWJsZXMKKxtbMDszMm1bIFJV
TiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1doZW5UaGVyZUlzT25l
RmF0YWxGYWlsdXJlCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRl
c3QuU3VjY2VlZHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQorG1swOzMybVsgUlVOICAgICAg
XSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVy
ZQorKGV4cGVjdGluZyBhIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDog
MSBmYXRhbCBmYWlsdXJlCisgIEFjdHVhbDogMCBmYWlsdXJlcworU3RhY2sgdHJhY2U6IChvbWl0
dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFp
bHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVj
dEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzCisoZXhw
ZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFs
IGZhaWx1cmUKKyAgQWN0dWFsOiAyIGZhaWx1cmVzCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5j
YzojOiBGYXRhbCBmYWlsdXJlOgorRmFpbGVkCitFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgorU3Rh
Y2sgdHJhY2U6IChvbWl0dGVkKQorCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZh
dGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29GYXRh
bEZhaWx1cmVzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qu
RmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyBhIGZhaWx1cmUp
CitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCisgIEFjdHVh
bDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgorRmFp
bGVkCitFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkK
KworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhw
ZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCisb
WzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3Rh
dGVtZW50UmV0dXJucworKGV4cGVjdGluZyBhIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJl
CitFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCisgIEFjdHVhbDogMCBmYWlsdXJlcworU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFp
bHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucworG1swOzMybVsgUlVOICAgICAgXSAb
W21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cworKGV4cGVj
dGluZyBhIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBmYXRhbCBm
YWlsdXJlCisgIEFjdHVhbDogMCBmYWlsdXJlcworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisb
WzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3Rh
dGVtZW50VGhyb3dzCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBUeXBlZFRl
c3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVR5cGVk
VGVzdC8wLlN1Y2Nlc3MKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttVHlwZWRUZXN0LzAuU3VjY2Vz
cworG1swOzMybVsgUlVOICAgICAgXSAbW21UeXBlZFRlc3QvMC5GYWlsdXJlCitnb29nbGV0ZXN0
LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2
YWx1ZXM6CisgIDEKKyAgVHlwZVBhcmFtKCkKKyAgICBXaGljaCBpczogMAorRXhwZWN0ZWQgZmFp
bHVyZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVR5
cGVkVGVzdC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IGludAorG1swOzMybVstLS0tLS0t
LS0tXSAbW20yIHRlc3RzIGZyb20gVHlwZWRUZXN0V2l0aE5hbWVzL2NoYXJfMCwgd2hlcmUgVHlw
ZVBhcmFtID0gY2hhcgorG1swOzMybVsgUlVOICAgICAgXSAbW21UeXBlZFRlc3RXaXRoTmFtZXMv
Y2hhcl8wLlN1Y2Nlc3MKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVz
L2NoYXJfMC5TdWNjZXNzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVR5cGVkVGVzdFdpdGhOYW1l
cy9jaGFyXzAuRmFpbHVyZQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQor
RmFpbGVkCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
VHlwZWRUZXN0V2l0aE5hbWVzL2NoYXJfMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSBjaGFy
CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBUeXBlZFRlc3RXaXRoTmFtZXMv
aW50XzEsIHdoZXJlIFR5cGVQYXJhbSA9IGludAorG1swOzMybVsgUlVOICAgICAgXSAbW21UeXBl
ZFRlc3RXaXRoTmFtZXMvaW50XzEuU3VjY2VzcworG1swOzMybVsgICAgICAgT0sgXSAbW21UeXBl
ZFRlc3RXaXRoTmFtZXMvaW50XzEuU3VjY2VzcworG1swOzMybVsgUlVOICAgICAgXSAbW21UeXBl
ZFRlc3RXaXRoTmFtZXMvaW50XzEuRmFpbHVyZQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6
IzogRmFpbHVyZQorRmFpbGVkCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVzL2ludF8xLkZhaWx1cmUsIHdoZXJlIFR5cGVQ
YXJhbSA9IGludAorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVW5zaWduZWQv
VHlwZWRUZXN0UC8wLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBjaGFyCisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5TdWNjZXNzCisbWzA7MzJtWyAgICAg
ICBPSyBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5TdWNjZXNzCisbWzA7MzJtWyBSVU4gICAg
ICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5GYWlsdXJlCitnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6Cisg
IDFVCisgICAgV2hpY2ggaXM6IDEKKyAgVHlwZVBhcmFtKCkKKyAgICBXaGljaCBpczogJ1wwJwor
RXhwZWN0ZWQgZmFpbHVyZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0g
PSB1bnNpZ25lZCBjaGFyCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBVbnNp
Z25lZC9UeXBlZFRlc3RQLzEsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAorG1swOzMy
bVsgUlVOICAgICAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzEuU3VjY2VzcworG1swOzMybVsg
ICAgICAgT0sgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzEuU3VjY2VzcworG1swOzMybVsgUlVO
ICAgICAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZQorZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVz
OgorICAxVQorICAgIFdoaWNoIGlzOiAxCisgIFR5cGVQYXJhbSgpCisgICAgV2hpY2ggaXM6IDAK
K0V4cGVjdGVkIGZhaWx1cmUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFt
ID0gdW5zaWduZWQgaW50CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBVbnNp
Z25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZF9jaGFyXzAsIHdoZXJlIFR5cGVQYXJh
bSA9IHVuc2lnbmVkIGNoYXIKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWRDdXN0b21O
YW1lL1R5cGVkVGVzdFAvdW5zaWduZWRfY2hhcl8wLlN1Y2Nlc3MKKxtbMDszMm1bICAgICAgIE9L
IF0gG1ttVW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRfY2hhcl8wLlN1Y2Nl
c3MKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAv
dW5zaWduZWRfY2hhcl8wLkZhaWx1cmUKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZh
aWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMVUKKyAgICBXaGlj
aCBpczogMQorICBUeXBlUGFyYW0oKQorICAgIFdoaWNoIGlzOiAnXDAnCitFeHBlY3RlZCBmYWls
dXJlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5z
aWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRfY2hhcl8wLkZhaWx1cmUsIHdoZXJl
IFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0
cyBmcm9tIFVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkX2ludF8xLCB3aGVy
ZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWdu
ZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRfaW50XzEuU3VjY2VzcworG1swOzMybVsg
ICAgICAgT0sgXSAbW21VbnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZF9pbnRf
MS5TdWNjZXNzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBl
ZFRlc3RQL3Vuc2lnbmVkX2ludF8xLkZhaWx1cmUKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNj
OiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMVUKKyAg
ICBXaGljaCBpczogMQorICBUeXBlUGFyYW0oKQorICAgIFdoaWNoIGlzOiAwCitFeHBlY3RlZCBm
YWlsdXJlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
VW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRfaW50XzEuRmFpbHVyZSwgd2hl
cmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTQgdGVz
dHMgZnJvbSBFeHBlY3RGYWlsdXJlVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RG
YWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKKyhleHBlY3RpbmcgMSBmYWlsdXJlKQorZ3Rl
c3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6Citn
b29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBTdWNjZXNzOgorU3VjY2VlZGVkCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisoZXhwZWN0aW5n
IDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1
cmUKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZh
aWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworKGV4cGVjdGluZyAxIGZh
aWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlIGNv
bnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBlY3RlZC4iCisgIEFjdHVhbDoK
K2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4
cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVU
ZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWls
dXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKKyhleHBlY3RpbmcgMSBmYWlsdXJlKQorZ3Rl
c3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFs
OgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogU3VjY2VzczoKK1N1Y2NlZWRlZAorU3Rh
Y2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworKGV4cGVj
dGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0
YWwgZmFpbHVyZQorICBBY3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYXRh
bCBmYWlsdXJlOgorRmFpbGVkCitFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworKGV4cGVjdGluZyAxIGZh
aWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVy
ZSBjb250YWluaW5nICJTb21lIG90aGVyIG5vbi1mYXRhbCBmYWlsdXJlLiIKKyAgQWN0dWFsOgor
Z29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6CitGYWlsZWQK
K0V4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisK
K1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RG
YWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1tt
RXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCisoZXhwZWN0
aW5nIDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZh
aWx1cmUKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogU3VjY2VzczoK
K1N1Y2NlZWRlZAorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21p
dHRlZCkKKworKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBl
Y3RlZDogMSBmYXRhbCBmYWlsdXJlCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
LmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgorRmFpbGVkCitFeHBlY3RlZCBub24tZmF0YWwgZmFp
bHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQp
CisKKyhleHBlY3RpbmcgMSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6
IDEgZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUgZXhw
ZWN0ZWQuIgorICBBY3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYXRhbCBm
YWlsdXJlOgorRmFpbGVkCitFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChv
bWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKKxtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWls
dXJlT25BbGxUaHJlYWRzCisoZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1
cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IFN1Y2Nlc3M6CitTdWNjZWVkZWQKK1N0YWNrIHRyYWNlOiAob21p
dHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKyhleHBlY3RpbmcgMSBmYWlsdXJl
KQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAg
QWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKK0Zh
aWxlZAorRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKwor
CitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKyhleHBlY3RpbmcgMSBmYWlsdXJlKQorZ3Rlc3Qu
Y2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAi
U29tZSBvdGhlciBub24tZmF0YWwgZmFpbHVyZS4iCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0
cHV0LXRlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgorRmFpbGVkCitFeHBlY3RlZCBub24t
ZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhw
ZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIg
dGVzdHMgZnJvbSBFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0CisbWzA7MzJtWyBSVU4gICAg
ICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCiso
ZXhwZWN0aW5nIDIgZmFpbHVyZXMpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWls
dXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0
ZWQpCisKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKKyAg
QWN0dWFsOiAwIGZhaWx1cmVzCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3RGYXRhbEZhaWx1
cmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5F
eHBlY3ROb25GYXRhbEZhaWx1cmUKKyhleHBlY3RpbmcgMiBmYWlsdXJlcykKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZh
aWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4
cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCisgIEFjdHVhbDogMCBmYWlsdXJlcworU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVX
aXRoVGhyZWFkc1Rlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCisbWzA7MzJtWy0tLS0tLS0tLS1d
IBtbbTEgdGVzdCBmcm9tIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdAorG1sw
OzMybVsgUlVOICAgICAgXSAbW21TY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3Qu
SW50ZXJjZXB0T25seUN1cnJlbnRUaHJlYWQKKyhleHBlY3RpbmcgMiBmYWlsdXJlcykKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwg
ZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVz
dF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KK1N0
YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TY29wZWRGYWtl
VGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3QuSW50ZXJjZXB0T25seUN1cnJlbnRUaHJlYWQKKxtb
MDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gUHJpbnRpbmdGYWlsaW5nUGFyYW1zL0Zh
aWxpbmdQYXJhbVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttUHJpbnRpbmdGYWlsaW5nUGFy
YW1zL0ZhaWxpbmdQYXJhbVRlc3QuRmFpbHMvMAorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6
IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxCisgIEdl
dFBhcmFtKCkKKyAgICBXaGljaCBpczogMgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbVByaW50aW5nRmFpbGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1UZXN0
LkZhaWxzLzAsIHdoZXJlIEdldFBhcmFtKCkgPSAyCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIg
dGVzdHMgZnJvbSBQcmludGluZ1N0cmluZ3MvUGFyYW1UZXN0CisbWzA7MzJtWyBSVU4gICAgICBd
IBtbbVByaW50aW5nU3RyaW5ncy9QYXJhbVRlc3QuU3VjY2Vzcy9hCisbWzA7MzJtWyAgICAgICBP
SyBdIBtbbVByaW50aW5nU3RyaW5ncy9QYXJhbVRlc3QuU3VjY2Vzcy9hCisbWzA7MzJtWyBSVU4g
ICAgICBdIBtbbVByaW50aW5nU3RyaW5ncy9QYXJhbVRlc3QuRmFpbHVyZS9hCitnb29nbGV0ZXN0
LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2
YWx1ZXM6CisgICJiIgorICBHZXRQYXJhbSgpCisgICAgV2hpY2ggaXM6ICJhIgorRXhwZWN0ZWQg
ZmFpbHVyZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bVByaW50aW5nU3RyaW5ncy9QYXJhbVRlc3QuRmFpbHVyZS9hLCB3aGVyZSBHZXRQYXJhbSgpID0g
ImEiCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbUdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXIt
ZG93bgorQmFyRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLgorZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVy
ZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworRm9vRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkg
Y2FsbGVkLgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitF
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzJt
Wz09PT09PT09PT1dIBtbbTc2IHRlc3RzIGZyb20gMzQgdGVzdCBjYXNlcyByYW4uCisbWzA7MzJt
WyAgUEFTU0VEICBdIBtbbTI2IHRlc3RzLgorG1swOzMxbVsgIEZBSUxFRCAgXSAbW201MCB0ZXN0
cywgbGlzdGVkIGJlbG93OgorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25mYXRhbEZhaWx1cmVU
ZXN0LkVzY2FwZXNTdHJpbmdPcGVyYW5kcworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25mYXRh
bEZhaWx1cmVUZXN0LkRpZmZGb3JMb25nU3RyaW5ncworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21G
YXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQorG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQor
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUlu
U3Vicm91dGluZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Mb2dnaW5nVGVzdC5JbnRlcmxlYXZp
bmdMb2dnaW5nQW5kQXNzZXJ0aW9ucworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJB
Q0VUZXN0LkFjY2VwdGVkVmFsdWVzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFD
RVRlc3QuT2JleXNTY29wZXMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVz
dC5Xb3Jrc0luTG9vcAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lldv
cmtzSW5TdWJyb3V0aW5lCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3Qu
Q2FuQmVOZXN0ZWQKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5C
ZVJlcGVhdGVkCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3ND
b25jdXJyZW50bHkKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU2NvcGVkVHJhY2VUZXN0LldpdGhF
eHBsaWNpdEZpbGVBbmRMaW5lCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVy
ZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgorG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVy
ZUluQ29uc3RydWN0b3IKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5T
ZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWls
dXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttQWRk
RmFpbHVyZUF0VGVzdC5NZXNzYWdlQ29udGFpbnNTcGVjaWZpZWRGaWxlQW5kTGluZU51bWJlcgor
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWls
CisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZh
aWxUb28KKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0
TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRV
c2luZ1RFU1RBbmRTaG91bGRGYWlsCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVRFU1RfYmVmb3Jl
X1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWls
CisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNX
aGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJlCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVj
dE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1cmVz
CisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNX
aGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRU
aHJvd3MKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWls
c1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMKKxtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlz
T25lTm9uZmF0YWxGYWlsdXJlCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFp
bHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucworG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cworG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3QvMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSBp
bnQKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVzL2NoYXJfMC5GYWls
dXJlLCB3aGVyZSBUeXBlUGFyYW0gPSBjaGFyCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVR5cGVk
VGVzdFdpdGhOYW1lcy9pbnRfMS5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUsIHdoZXJlIFR5
cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQv
VHlwZWRUZXN0UC8xLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAorG1sw
OzMxbVsgIEZBSUxFRCAgXSAbW21VbnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25l
ZF9jaGFyXzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgorG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21VbnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZF9p
bnRfMS5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCisbWzA7MzFt
WyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQor
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1
cmVPbkFsbFRocmVhZHMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3Qu
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCisbWzA7MzFt
WyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0Tm9uRmF0
YWxGYWlsdXJlCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNjb3BlZEZha2VUZXN0UGFydFJlc3Vs
dFJlcG9ydGVyVGVzdC5JbnRlcmNlcHRPbmx5Q3VycmVudFRocmVhZAorG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21QcmludGluZ0ZhaWxpbmdQYXJhbXMvRmFpbGluZ1BhcmFtVGVzdC5GYWlscy8wLCB3
aGVyZSBHZXRQYXJhbSgpID0gMgorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21QcmludGluZ1N0cmlu
Z3MvUGFyYW1UZXN0LkZhaWx1cmUvYSwgd2hlcmUgR2V0UGFyYW0oKSA9ICJhIgorCis1MCBGQUlM
RUQgVEVTVFMKKxtbMDszM20gIFlPVSBIQVZFIDEgRElTQUJMRUQgVEVTVAorCisbW21Ob3RlOiBH
b29nbGUgVGVzdCBmaWx0ZXIgPSBGYXRhbEZhaWx1cmVUZXN0Lio6TG9nZ2luZ1Rlc3QuKgorWz09
PT09PT09PT1dIFJ1bm5pbmcgNCB0ZXN0cyBmcm9tIDIgdGVzdCBjYXNlcy4KK1stLS0tLS0tLS0t
XSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCitbLS0tLS0tLS0tLV0gMyB0ZXN0cyBm
cm9tIEZhdGFsRmFpbHVyZVRlc3QKK1sgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFs
RmFpbHVyZUluU3Vicm91dGluZQorKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBi
ZSAxKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1
YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxCisgIHgKKyAgICBXaGljaCBpczogMgorU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCitbICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZh
aWx1cmVJblN1YnJvdXRpbmUgKD8gbXMpCitbIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5G
YXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKKyhleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQg
eCBzaG91bGQgYmUgMSkKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4
cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICB4CisgICAgV2hpY2ggaXM6
IDIKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRl
c3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lICg/IG1zKQorWyBSVU4gICAgICBdIEZh
dGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCisoZXhwZWN0aW5nIGEg
ZmFpbHVyZSBvbiBmYWxzZSkKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUK
K1ZhbHVlIG9mOiBmYWxzZQorICBBY3R1YWw6IGZhbHNlCitFeHBlY3RlZDogdHJ1ZQorU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCitbICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRh
bEZhaWx1cmVJblN1YnJvdXRpbmUgKD8gbXMpCitbLS0tLS0tLS0tLV0gMyB0ZXN0cyBmcm9tIEZh
dGFsRmFpbHVyZVRlc3QgKD8gbXMgdG90YWwpCisKK1stLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBM
b2dnaW5nVGVzdAorWyBSVU4gICAgICBdIExvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdB
bmRBc3NlcnRpb25zCisoZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24gKDMpID49IChhW2ldKSkKK2kg
PT0gMAoraSA9PSAxCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBl
Y3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDkKK1N0YWNrIHRyYWNlOiAob21pdHRl
ZCkKKworaSA9PSAyCitpID09IDMKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1
cmUKK0V4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgNgorU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCitbICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2lu
Z0FuZEFzc2VydGlvbnMgKD8gbXMpCitbLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTG9nZ2luZ1Rl
c3QgKD8gbXMgdG90YWwpCisKK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0
ZWFyLWRvd24KK1s9PT09PT09PT09XSA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2VzIHJhbi4gKD8g
bXMgdG90YWwpCitbICBQQVNTRUQgIF0gMCB0ZXN0cy4KK1sgIEZBSUxFRCAgXSA0IHRlc3RzLCBs
aXN0ZWQgYmVsb3c6CitbICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJ
blN1YnJvdXRpbmUKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUlu
TmVzdGVkU3Vicm91dGluZQorWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxG
YWlsdXJlSW5TdWJyb3V0aW5lCitbICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5n
TG9nZ2luZ0FuZEFzc2VydGlvbnMKKworIDQgRkFJTEVEIFRFU1RTCitOb3RlOiBHb29nbGUgVGVz
dCBmaWx0ZXIgPSAqRElTQUJMRURfKgorWz09PT09PT09PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20g
MSB0ZXN0IGNhc2UuCitbLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVw
LgorWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdAorWyBS
VU4gICAgICBdIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJs
ZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2FybmluZworWyAgICAgICBPSyBdIERpc2FibGVkVGVzdHNX
YXJuaW5nVGVzdC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2Fy
bmluZworWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgorWz09
PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlIHJhbi4KK1sgIFBBU1NFRCAgXSAxIHRl
c3QuCitOb3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSBQYXNzaW5nVGVzdC4qCitOb3RlOiBUaGlz
IGlzIHRlc3Qgc2hhcmQgMiBvZiAyLgorWz09PT09PT09PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20g
MSB0ZXN0IGNhc2UuCitbLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVw
LgorWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIFBhc3NpbmdUZXN0CitbIFJVTiAgICAgIF0gUGFz
c2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCitbICAgICAgIE9LIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rl
c3QyCitbLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCitbPT09
PT09PT09PV0gMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UgcmFuLgorWyAgUEFTU0VEICBdIDEgdGVz
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1v
dXRwdXQtdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1v
dXRwdXQtdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZDY5ZTM1M2ExOWUzNjk0NjUzM2JmNWY3ZTBhMmM5
MjQ2ZjdkY2U3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0LnB5CkBAIC0wLDAgKzEsMzQ3IEBACisjIS91c3IvYmlu
L2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMK
KyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
IyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJUZXN0cyB0aGUgdGV4dCBvdXRw
dXQgb2YgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yay4KKworVG8gdXBk
YXRlIHRoZSBnb2xkZW4gZmlsZToKK2dvb2dsZXRlc3Rfb3V0cHV0X3Rlc3QucHkgLS1idWlsZF9k
aXI9QlVJTEQvRElSIC0tZ2VuZ29sZGVuCit3aGVyZSBCVUlMRC9ESVIgY29udGFpbnMgdGhlIGJ1
aWx0IGdvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfIGZpbGUuCitnb29nbGV0ZXN0X291dHB1dF90ZXN0
LnB5IC0tZ2VuZ29sZGVuCitnb29nbGV0ZXN0X291dHB1dF90ZXN0LnB5CisiIiIKKworaW1wb3J0
IGRpZmZsaWIKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgZ3Rlc3Rf
dGVzdF91dGlscworCisKKyMgVGhlIGZsYWcgZm9yIGdlbmVyYXRpbmcgdGhlIGdvbGRlbiBmaWxl
CitHRU5HT0xERU5fRkxBRyA9ICctLWdlbmdvbGRlbicKK0NBVENIX0VYQ0VQVElPTlNfRU5WX1ZB
Ul9OQU1FID0gJ0dURVNUX0NBVENIX0VYQ0VQVElPTlMnCisKKyMgVGhlIGZsYWcgaW5kaWNhdGlu
ZyBzdGFja3RyYWNlcyBhcmUgbm90IHN1cHBvcnRlZAorTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZM
QUcgPSAnLS1ub19zdGFja3RyYWNlX3N1cHBvcnQnCisKK0lTX0xJTlVYID0gb3MubmFtZSA9PSAn
cG9zaXgnIGFuZCBvcy51bmFtZSgpWzBdID09ICdMaW51eCcKK0lTX1dJTkRPV1MgPSBvcy5uYW1l
ID09ICdudCcKKworIyBGSVhNRTogcmVtb3ZlIHRoZSBfbGluIHN1ZmZpeC4KK0dPTERFTl9OQU1F
ID0gJ2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3QtZ29sZGVuLWxpbi50eHQnCisKK1BST0dSQU1fUEFU
SCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdnb29nbGV0ZXN0LW91
dHB1dC10ZXN0XycpCisKKyMgQXQgbGVhc3Qgb25lIGNvbW1hbmQgd2UgZXhlcmNpc2UgbXVzdCBu
b3QgaGF2ZSB0aGUKKyMgJ2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0
cycgYXJndW1lbnQuCitDT01NQU5EX0xJU1RfVEVTVFMgPSAoe30sIFtQUk9HUkFNX1BBVEgsICct
LWd0ZXN0X2xpc3RfdGVzdHMnXSkKK0NPTU1BTkRfV0lUSF9DT0xPUiA9ICh7fSwgW1BST0dSQU1f
UEFUSCwgJy0tZ3Rlc3RfY29sb3I9eWVzJ10pCitDT01NQU5EX1dJVEhfVElNRSA9ICh7fSwgW1BS
T0dSQU1fUEFUSCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZ3Rlc3RfcHJpbnRfdGlt
ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50
X2FuZF9hZF9ob2NfdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ndGVzdF9m
aWx0ZXI9RmF0YWxGYWlsdXJlVGVzdC4qOkxvZ2dpbmdUZXN0LionXSkKK0NPTU1BTkRfV0lUSF9E
SVNBQkxFRCA9ICgKKyAgICB7fSwgW1BST0dSQU1fUEFUSCwKKyAgICAgICAgICctLWd0ZXN0X2Fs
c29fcnVuX2Rpc2FibGVkX3Rlc3RzJywKKyAgICAgICAgICdpbnRlcm5hbF9za2lwX2Vudmlyb25t
ZW50X2FuZF9hZF9ob2NfdGVzdHMnLAorICAgICAgICAgJy0tZ3Rlc3RfZmlsdGVyPSpESVNBQkxF
RF8qJ10pCitDT01NQU5EX1dJVEhfU0hBUkRJTkcgPSAoCisgICAgeydHVEVTVF9TSEFSRF9JTkRF
WCc6ICcxJywgJ0dURVNUX1RPVEFMX1NIQVJEUyc6ICcyJ30sCisgICAgW1BST0dSQU1fUEFUSCwK
KyAgICAgJ2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cycsCisgICAg
ICctLWd0ZXN0X2ZpbHRlcj1QYXNzaW5nVGVzdC4qJ10pCisKK0dPTERFTl9QQVRIID0gb3MucGF0
aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNlRGlyKCksIEdPTERFTl9OQU1FKQorCisK
K2RlZiBUb1VuaXhMaW5lRW5kaW5nKHMpOgorICAiIiJDaGFuZ2VzIGFsbCBXaW5kb3dzL01hYyBs
aW5lIGVuZGluZ3MgaW4gcyB0byBVTklYIGxpbmUgZW5kaW5ncy4iIiIKKworICByZXR1cm4gcy5y
ZXBsYWNlKCdcclxuJywgJ1xuJykucmVwbGFjZSgnXHInLCAnXG4nKQorCisKK2RlZiBSZW1vdmVM
b2NhdGlvbnModGVzdF9vdXRwdXQpOgorICAiIiJSZW1vdmVzIGFsbCBmaWxlIGxvY2F0aW9uIGlu
Zm8gZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuCisKKyAgQXJnczoKKyAgICAg
ICB0ZXN0X291dHB1dDogIHRoZSBvdXRwdXQgb2YgYSBHb29nbGUgVGVzdCBwcm9ncmFtLgorCisg
IFJldHVybnM6CisgICAgICAgb3V0cHV0IHdpdGggYWxsIGZpbGUgbG9jYXRpb24gaW5mbyAoaW4g
dGhlIGZvcm0gb2YKKyAgICAgICAnRElSRUNUT1JZL0ZJTEVfTkFNRTpMSU5FX05VTUJFUjogJ29y
CisgICAgICAgJ0RJUkVDVE9SWVxcRklMRV9OQU1FKExJTkVfTlVNQkVSKTogJykgcmVwbGFjZWQg
YnkKKyAgICAgICAnRklMRV9OQU1FOiM6ICcuCisgICIiIgorCisgIHJldHVybiByZS5zdWIocicu
KlsvXFxdKChnb29nbGV0ZXN0LW91dHB1dC10ZXN0X3xndGVzdCkuY2MpKFw6XGQrfFwoXGQrXCkp
XDogJywKKyAgICAgICAgICAgICAgICByJ1wxOiM6ICcsIHRlc3Rfb3V0cHV0KQorCisKK2RlZiBS
ZW1vdmVTdGFja1RyYWNlRGV0YWlscyhvdXRwdXQpOgorICAiIiJSZW1vdmVzIGFsbCBzdGFjayB0
cmFjZXMgZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCisKKyAgIyAqPyBt
ZWFucyAiZmluZCB0aGUgc2hvcnRlc3Qgc3RyaW5nIHRoYXQgbWF0Y2hlcyIuCisgIHJldHVybiBy
ZS5zdWIocidTdGFjayB0cmFjZTooLnxcbikqP1xuXG4nLAorICAgICAgICAgICAgICAgICdTdGFj
ayB0cmFjZTogKG9taXR0ZWQpXG5cbicsIG91dHB1dCkKKworCitkZWYgUmVtb3ZlU3RhY2tUcmFj
ZXMob3V0cHV0KToKKyAgIiIiUmVtb3ZlcyBhbGwgdHJhY2VzIG9mIHN0YWNrIHRyYWNlcyBmcm9t
IGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4iIiIKKworICAjICo/IG1lYW5zICJmaW5k
IHRoZSBzaG9ydGVzdCBzdHJpbmcgdGhhdCBtYXRjaGVzIi4KKyAgcmV0dXJuIHJlLnN1YihyJ1N0
YWNrIHRyYWNlOigufFxuKSo/XG5cbicsICcnLCBvdXRwdXQpCisKKworZGVmIFJlbW92ZVRpbWUo
b3V0cHV0KToKKyAgIiIiUmVtb3ZlcyBhbGwgdGltZSBpbmZvcm1hdGlvbiBmcm9tIGEgR29vZ2xl
IFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4iIiIKKworICByZXR1cm4gcmUuc3ViKHInXChcZCsgbXMn
LCAnKD8gbXMnLCBvdXRwdXQpCisKKworZGVmIFJlbW92ZVR5cGVJbmZvRGV0YWlscyh0ZXN0X291
dHB1dCk6CisgICIiIlJlbW92ZXMgY29tcGlsZXItc3BlY2lmaWMgdHlwZSBpbmZvIGZyb20gR29v
Z2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4KKworICBBcmdzOgorICAgICAgIHRlc3Rfb3V0cHV0
OiAgdGhlIG91dHB1dCBvZiBhIEdvb2dsZSBUZXN0IHByb2dyYW0uCisKKyAgUmV0dXJuczoKKyAg
ICAgICBvdXRwdXQgd2l0aCB0eXBlIGluZm9ybWF0aW9uIG5vcm1hbGl6ZWQgdG8gY2Fub25pY2Fs
IGZvcm0uCisgICIiIgorCisgICMgc29tZSBjb21waWxlcnMgb3V0cHV0IHRoZSBuYW1lIG9mIHR5
cGUgJ3Vuc2lnbmVkIGludCcgYXMgJ3Vuc2lnbmVkJworICByZXR1cm4gcmUuc3ViKHIndW5zaWdu
ZWQgaW50JywgJ3Vuc2lnbmVkJywgdGVzdF9vdXRwdXQpCisKKworZGVmIE5vcm1hbGl6ZVRvQ3Vy
cmVudFBsYXRmb3JtKHRlc3Rfb3V0cHV0KToKKyAgIiIiTm9ybWFsaXplcyBwbGF0Zm9ybSBzcGVj
aWZpYyBvdXRwdXQgZGV0YWlscyBmb3IgZWFzaWVyIGNvbXBhcmlzb24uIiIiCisKKyAgaWYgSVNf
V0lORE9XUzoKKyAgICAjIFJlbW92ZXMgdGhlIGNvbG9yIGluZm9ybWF0aW9uIHRoYXQgaXMgbm90
IHByZXNlbnQgb24gV2luZG93cy4KKyAgICB0ZXN0X291dHB1dCA9IHJlLnN1YignXHgxYlxcWygw
OzNcZCk/bScsICcnLCB0ZXN0X291dHB1dCkKKyAgICAjIENoYW5nZXMgZmFpbHVyZSBtZXNzYWdl
IGhlYWRlcnMgaW50byB0aGUgV2luZG93cyBmb3JtYXQuCisgICAgdGVzdF9vdXRwdXQgPSByZS5z
dWIocic6IEZhaWx1cmVcbicsIHInOiBlcnJvcjogJywgdGVzdF9vdXRwdXQpCisgICAgIyBDaGFu
Z2VzIGZpbGUobGluZV9udW1iZXIpIHRvIGZpbGU6bGluZV9udW1iZXIuCisgICAgdGVzdF9vdXRw
dXQgPSByZS5zdWIocicoKFx3fFwuKSspXCgoXGQrKVwpOicsIHInXDE6XDM6JywgdGVzdF9vdXRw
dXQpCisKKyAgcmV0dXJuIHRlc3Rfb3V0cHV0CisKKworZGVmIFJlbW92ZVRlc3RDb3VudHMob3V0
cHV0KToKKyAgIiIiUmVtb3ZlcyB0ZXN0IGNvdW50cyBmcm9tIGEgR29vZ2xlIFRlc3QgcHJvZ3Jh
bSdzIG91dHB1dC4iIiIKKworICBvdXRwdXQgPSByZS5zdWIocidcZCsgdGVzdHM/LCBsaXN0ZWQg
YmVsb3cnLAorICAgICAgICAgICAgICAgICAgJz8gdGVzdHMsIGxpc3RlZCBiZWxvdycsIG91dHB1
dCkKKyAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIEZBSUxFRCBURVNUUycsCisgICAgICAgICAgICAg
ICAgICAnPyBGQUlMRUQgVEVTVFMnLCBvdXRwdXQpCisgIG91dHB1dCA9IHJlLnN1YihyJ1xkKyB0
ZXN0cz8gZnJvbSBcZCsgdGVzdCBjYXNlcz8nLAorICAgICAgICAgICAgICAgICAgJz8gdGVzdHMg
ZnJvbSA/IHRlc3QgY2FzZXMnLCBvdXRwdXQpCisgIG91dHB1dCA9IHJlLnN1YihyJ1xkKyB0ZXN0
cz8gZnJvbSAoW2EtekEtWl9dKScsCisgICAgICAgICAgICAgICAgICByJz8gdGVzdHMgZnJvbSBc
MScsIG91dHB1dCkKKyAgcmV0dXJuIHJlLnN1YihyJ1xkKyB0ZXN0cz9cLicsICc/IHRlc3RzLics
IG91dHB1dCkKKworCitkZWYgUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwgcGF0dGVy
bik6CisgICIiIlJlbW92ZXMgb3V0cHV0IG9mIHNwZWNpZmllZCB0ZXN0cyBmcm9tIGEgR29vZ2xl
IFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4KKworICBUaGlzIGZ1bmN0aW9uIHN0cmlwcyBub3Qgb25s
eSB0aGUgYmVnaW5uaW5nIGFuZCB0aGUgZW5kIG9mIGEgdGVzdCBidXQgYWxzbworICBhbGwgb3V0
cHV0IGluIGJldHdlZW4uCisKKyAgQXJnczoKKyAgICB0ZXN0X291dHB1dDogICAgICAgQSBzdHJp
bmcgY29udGFpbmluZyB0aGUgdGVzdCBvdXRwdXQuCisgICAgcGF0dGVybjogICAgICAgICAgIEEg
cmVnZXggc3RyaW5nIHRoYXQgbWF0Y2hlcyBuYW1lcyBvZiB0ZXN0IGNhc2VzIG9yCisgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RzIHRvIHJlbW92ZS4KKworICBSZXR1cm5zOgorICAgIENvbnRl
bnRzIG9mIHRlc3Rfb3V0cHV0IHdpdGggdGVzdHMgd2hvc2UgbmFtZXMgbWF0Y2ggcGF0dGVybiBy
ZW1vdmVkLgorICAiIiIKKworICB0ZXN0X291dHB1dCA9IHJlLnN1YigKKyAgICAgIHInLipcWyBS
VU4gICAgICBcXSAuKiVzKC58XG4pKj9cWyggIEZBSUxFRCAgfCAgICAgICBPSyApXF0gLiolcy4q
XG4nICUgKAorICAgICAgICAgIHBhdHRlcm4sIHBhdHRlcm4pLAorICAgICAgJycsCisgICAgICB0
ZXN0X291dHB1dCkKKyAgcmV0dXJuIHJlLnN1YihyJy4qJXMuKlxuJyAlIHBhdHRlcm4sICcnLCB0
ZXN0X291dHB1dCkKKworCitkZWYgTm9ybWFsaXplT3V0cHV0KG91dHB1dCk6CisgICIiIk5vcm1h
bGl6ZXMgb3V0cHV0ICh0aGUgb3V0cHV0IG9mIGdvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmV4ZSku
IiIiCisKKyAgb3V0cHV0ID0gVG9Vbml4TGluZUVuZGluZyhvdXRwdXQpCisgIG91dHB1dCA9IFJl
bW92ZUxvY2F0aW9ucyhvdXRwdXQpCisgIG91dHB1dCA9IFJlbW92ZVN0YWNrVHJhY2VEZXRhaWxz
KG91dHB1dCkKKyAgb3V0cHV0ID0gUmVtb3ZlVGltZShvdXRwdXQpCisgIHJldHVybiBvdXRwdXQK
KworCitkZWYgR2V0U2hlbGxDb21tYW5kT3V0cHV0KGVudl9jbWQpOgorICAiIiJSdW5zIGEgY29t
bWFuZCBpbiBhIHN1Yi1wcm9jZXNzLCBhbmQgcmV0dXJucyBpdHMgb3V0cHV0IGluIGEgc3RyaW5n
LgorCisgIEFyZ3M6CisgICAgZW52X2NtZDogVGhlIHNoZWxsIGNvbW1hbmQuIEEgMi10dXBsZSB3
aGVyZSBlbGVtZW50IDAgaXMgYSBkaWN0IG9mIGV4dHJhCisgICAgICAgICAgICAgZW52aXJvbm1l
bnQgdmFyaWFibGVzIHRvIHNldCwgYW5kIGVsZW1lbnQgMSBpcyBhIHN0cmluZyB3aXRoCisgICAg
ICAgICAgICAgdGhlIGNvbW1hbmQgYW5kIGFueSBmbGFncy4KKworICBSZXR1cm5zOgorICAgIEEg
c3RyaW5nIHdpdGggdGhlIGNvbW1hbmQncyBjb21iaW5lZCBzdGFuZGFyZCBhbmQgZGlhZ25vc3Rp
YyBvdXRwdXQuCisgICIiIgorCisgICMgU3Bhd25zIGNtZCBpbiBhIHN1Yi1wcm9jZXNzLCBhbmQg
Z2V0cyBpdHMgc3RhbmRhcmQgSS9PIGZpbGUgb2JqZWN0cy4KKyAgIyBTZXQgYW5kIHNhdmUgdGhl
IGVudmlyb25tZW50IHByb3Blcmx5LgorICBlbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkKKyAg
ZW52aXJvbi51cGRhdGUoZW52X2NtZFswXSkKKyAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJv
Y2VzcyhlbnZfY21kWzFdLCBlbnY9ZW52aXJvbikKKworICByZXR1cm4gcC5vdXRwdXQKKworCitk
ZWYgR2V0Q29tbWFuZE91dHB1dChlbnZfY21kKToKKyAgIiIiUnVucyBhIGNvbW1hbmQgYW5kIHJl
dHVybnMgaXRzIG91dHB1dCB3aXRoIGFsbCBmaWxlIGxvY2F0aW9uCisgIGluZm8gc3RyaXBwZWQg
b2ZmLgorCisgIEFyZ3M6CisgICAgZW52X2NtZDogIFRoZSBzaGVsbCBjb21tYW5kLiBBIDItdHVw
bGUgd2hlcmUgZWxlbWVudCAwIGlzIGEgZGljdCBvZiBleHRyYQorICAgICAgICAgICAgICBlbnZp
cm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0LCBhbmQgZWxlbWVudCAxIGlzIGEgc3RyaW5nIHdpdGgK
KyAgICAgICAgICAgICAgdGhlIGNvbW1hbmQgYW5kIGFueSBmbGFncy4KKyAgIiIiCisKKyAgIyBE
aXNhYmxlcyBleGNlcHRpb24gcG9wLXVwcyBvbiBXaW5kb3dzLgorICBlbnZpcm9uLCBjbWRsaW5l
ID0gZW52X2NtZAorICBlbnZpcm9uID0gZGljdChlbnZpcm9uKSAgIyBFbnN1cmVzIHdlIGFyZSBt
b2RpZnlpbmcgYSBjb3B5LgorICBlbnZpcm9uW0NBVENIX0VYQ0VQVElPTlNfRU5WX1ZBUl9OQU1F
XSA9ICcxJworICByZXR1cm4gTm9ybWFsaXplT3V0cHV0KEdldFNoZWxsQ29tbWFuZE91dHB1dCgo
ZW52aXJvbiwgY21kbGluZSkpKQorCisKK2RlZiBHZXRPdXRwdXRPZkFsbENvbW1hbmRzKCk6Cisg
ICIiIlJldHVybnMgY29uY2F0ZW5hdGVkIG91dHB1dCBmcm9tIHNldmVyYWwgcmVwcmVzZW50YXRp
dmUgY29tbWFuZHMuIiIiCisKKyAgcmV0dXJuIChHZXRDb21tYW5kT3V0cHV0KENPTU1BTkRfV0lU
SF9DT0xPUikgKworICAgICAgICAgIEdldENvbW1hbmRPdXRwdXQoQ09NTUFORF9XSVRIX1RJTUUp
ICsKKyAgICAgICAgICBHZXRDb21tYW5kT3V0cHV0KENPTU1BTkRfV0lUSF9ESVNBQkxFRCkgKwor
ICAgICAgICAgIEdldENvbW1hbmRPdXRwdXQoQ09NTUFORF9XSVRIX1NIQVJESU5HKSkKKworCit0
ZXN0X2xpc3QgPSBHZXRTaGVsbENvbW1hbmRPdXRwdXQoQ09NTUFORF9MSVNUX1RFU1RTKQorU1VQ
UE9SVFNfREVBVEhfVEVTVFMgPSAnRGVhdGhUZXN0JyBpbiB0ZXN0X2xpc3QKK1NVUFBPUlRTX1RZ
UEVEX1RFU1RTID0gJ1R5cGVkVGVzdCcgaW4gdGVzdF9saXN0CitTVVBQT1JUU19USFJFQURTID0g
J0V4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QnIGluIHRlc3RfbGlzdAorU1VQUE9SVFNfU1RB
Q0tfVFJBQ0VTID0gTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZMQUcgbm90IGluIHN5cy5hcmd2CisK
K0NBTl9HRU5FUkFURV9HT0xERU5fRklMRSA9IChTVVBQT1JUU19ERUFUSF9URVNUUyBhbmQKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTVVBQT1JUU19UWVBFRF9URVNUUyBhbmQKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTVVBQT1JUU19USFJFQURTIGFuZAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNVUFBPUlRTX1NUQUNLX1RSQUNFUykKKworY2xhc3MgR1Rlc3RPdXRw
dXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICBkZWYgUmVtb3ZlVW5zdXBwb3J0
ZWRUZXN0cyhzZWxmLCB0ZXN0X291dHB1dCk6CisgICAgaWYgbm90IFNVUFBPUlRTX0RFQVRIX1RF
U1RTOgorICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0
LCAnRGVhdGhUZXN0JykKKyAgICBpZiBub3QgU1VQUE9SVFNfVFlQRURfVEVTVFM6CisgICAgICB0
ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdUeXBlZFRlc3Qn
KQorICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCAn
VHlwZWREZWF0aFRlc3QnKQorICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3Rz
KHRlc3Rfb3V0cHV0LCAnVHlwZVBhcmFtRGVhdGhUZXN0JykKKyAgICBpZiBub3QgU1VQUE9SVFNf
VEhSRUFEUzoKKyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291
dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRXhwZWN0RmFp
bHVyZVdpdGhUaHJlYWRzVGVzdCcpCisgICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5n
VGVzdHModGVzdF9vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ1Njb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdCcpCisgICAgICB0ZXN0X291
dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ1dvcmtzQ29uY3VycmVudGx5JykKKyAgICBpZiBub3Qg
U1VQUE9SVFNfU1RBQ0tfVFJBQ0VTOgorICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVTdGFja1Ry
YWNlcyh0ZXN0X291dHB1dCkKKworICAgIHJldHVybiB0ZXN0X291dHB1dAorCisgIGRlZiB0ZXN0
T3V0cHV0KHNlbGYpOgorICAgIG91dHB1dCA9IEdldE91dHB1dE9mQWxsQ29tbWFuZHMoKQorCisg
ICAgZ29sZGVuX2ZpbGUgPSBvcGVuKEdPTERFTl9QQVRILCAncmInKQorICAgICMgQSBtaXMtY29u
ZmlndXJlZCBzb3VyY2UgY29udHJvbCBzeXN0ZW0gY2FuIGNhdXNlIFxyIGFwcGVhciBpbiBFT0wK
KyAgICAjIHNlcXVlbmNlcyB3aGVuIHdlIHJlYWQgdGhlIGdvbGRlbiBmaWxlIGlycmVzcGVjdGl2
ZSBvZiBhbiBvcGVyYXRpbmcKKyAgICAjIHN5c3RlbSB1c2VkLiBUaGVyZWZvcmUsIHdlIG5lZWQg
dG8gc3RyaXAgdGhvc2UgXHIncyBmcm9tIG5ld2xpbmVzCisgICAgIyB1bmNvbmRpdGlvbmFsbHku
CisgICAgZ29sZGVuID0gVG9Vbml4TGluZUVuZGluZyhnb2xkZW5fZmlsZS5yZWFkKCkpCisgICAg
Z29sZGVuX2ZpbGUuY2xvc2UoKQorCisgICAgIyBXZSB3YW50IHRoZSB0ZXN0IHRvIHBhc3MgcmVn
YXJkbGVzcyBvZiBjZXJ0YWluIGZlYXR1cmVzIGJlaW5nCisgICAgIyBzdXBwb3J0ZWQgb3Igbm90
LgorCisgICAgIyBXZSBzdGlsbCBoYXZlIHRvIHJlbW92ZSB0eXBlIG5hbWUgc3BlY2lmaWNzIGlu
IGFsbCBjYXNlcy4KKyAgICBub3JtYWxpemVkX2FjdHVhbCA9IFJlbW92ZVR5cGVJbmZvRGV0YWls
cyhvdXRwdXQpCisgICAgbm9ybWFsaXplZF9nb2xkZW4gPSBSZW1vdmVUeXBlSW5mb0RldGFpbHMo
Z29sZGVuKQorCisgICAgaWYgQ0FOX0dFTkVSQVRFX0dPTERFTl9GSUxFOgorICAgICAgc2VsZi5h
c3NlcnRFcXVhbChub3JtYWxpemVkX2dvbGRlbiwgbm9ybWFsaXplZF9hY3R1YWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICdcbicuam9pbihkaWZmbGliLnVuaWZpZWRfZGlmZigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRfZ29sZGVuLnNwbGl0KCdcbicpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZF9hY3R1YWwuc3BsaXQoJ1xuJyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnZ29sZGVuJywgJ2FjdHVhbCcpKSkKKyAgICBlbHNlOgor
ICAgICAgbm9ybWFsaXplZF9hY3R1YWwgPSBOb3JtYWxpemVUb0N1cnJlbnRQbGF0Zm9ybSgKKyAg
ICAgICAgICBSZW1vdmVUZXN0Q291bnRzKG5vcm1hbGl6ZWRfYWN0dWFsKSkKKyAgICAgIG5vcm1h
bGl6ZWRfZ29sZGVuID0gTm9ybWFsaXplVG9DdXJyZW50UGxhdGZvcm0oCisgICAgICAgICAgUmVt
b3ZlVGVzdENvdW50cyhzZWxmLlJlbW92ZVVuc3VwcG9ydGVkVGVzdHMobm9ybWFsaXplZF9nb2xk
ZW4pKSkKKworICAgICAgIyBUaGlzIGNvZGUgaXMgdmVyeSBoYW5keSB3aGVuIGRlYnVnZ2luZyBn
b2xkZW4gZmlsZSBkaWZmZXJlbmNlczoKKyAgICAgIGlmIG9zLmdldGVudignREVCVUdfR1RFU1Rf
T1VUUFVUX1RFU1QnKToKKyAgICAgICAgb3Blbihvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICBn
dGVzdF90ZXN0X3V0aWxzLkdldFNvdXJjZURpcigpLAorICAgICAgICAgICAgJ19nb29nbGV0ZXN0
LW91dHB1dC10ZXN0X25vcm1hbGl6ZWRfYWN0dWFsLnR4dCcpLCAnd2InKS53cml0ZSgKKyAgICAg
ICAgICAgICAgICBub3JtYWxpemVkX2FjdHVhbCkKKyAgICAgICAgb3Blbihvcy5wYXRoLmpvaW4o
CisgICAgICAgICAgICBndGVzdF90ZXN0X3V0aWxzLkdldFNvdXJjZURpcigpLAorICAgICAgICAg
ICAgJ19nb29nbGV0ZXN0LW91dHB1dC10ZXN0X25vcm1hbGl6ZWRfZ29sZGVuLnR4dCcpLCAnd2In
KS53cml0ZSgKKyAgICAgICAgICAgICAgICBub3JtYWxpemVkX2dvbGRlbikKKworICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChub3JtYWxpemVkX2dvbGRlbiwgbm9ybWFsaXplZF9hY3R1YWwpCisKKwor
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgaWYgTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZM
QUcgaW4gc3lzLmFyZ3Y6CisgICAgIyB1bml0dGVzdC5tYWluKCkgY2FuJ3QgaGFuZGxlIHVua25v
d24gZmxhZ3MKKyAgICBzeXMuYXJndi5yZW1vdmUoTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZMQUcp
CisKKyAgaWYgR0VOR09MREVOX0ZMQUcgaW4gc3lzLmFyZ3Y6CisgICAgaWYgQ0FOX0dFTkVSQVRF
X0dPTERFTl9GSUxFOgorICAgICAgb3V0cHV0ID0gR2V0T3V0cHV0T2ZBbGxDb21tYW5kcygpCisg
ICAgICBnb2xkZW5fZmlsZSA9IG9wZW4oR09MREVOX1BBVEgsICd3YicpCisgICAgICBnb2xkZW5f
ZmlsZS53cml0ZShvdXRwdXQpCisgICAgICBnb2xkZW5fZmlsZS5jbG9zZSgpCisgICAgZWxzZToK
KyAgICAgIG1lc3NhZ2UgPSAoCisgICAgICAgICAgIiIiVW5hYmxlIHRvIHdyaXRlIGEgZ29sZGVu
IGZpbGUgd2hlbiBjb21waWxlZCBpbiBhbiBlbnZpcm9ubWVudAordGhhdCBkb2VzIG5vdCBzdXBw
b3J0IGFsbCB0aGUgcmVxdWlyZWQgZmVhdHVyZXMgKGRlYXRoIHRlc3RzLAordHlwZWQgdGVzdHMs
IHN0YWNrIHRyYWNlcywgYW5kIG11bHRpcGxlIHRocmVhZHMpLgorUGxlYXNlIGJ1aWxkIHRoaXMg
dGVzdCBhbmQgZ2VuZXJhdGUgdGhlIGdvbGRlbiBmaWxlIHVzaW5nIEJsYXplIG9uIExpbnV4LiIi
IikKKworICAgICAgc3lzLnN0ZGVyci53cml0ZShtZXNzYWdlKQorICAgICAgc3lzLmV4aXQoMSkK
KyAgZWxzZToKKyAgICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgwNjMwZTI4MmIwMzhhN2U5OWM2ZjIzMTUyMzZmMTM4M2RhOTFhNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1vdXRwdXQt
dGVzdF8uY2MKQEAgLTAsMCArMSwxMTA5IEBACisvLyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIElu
Yy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8v
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
Ky8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisvLworLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBmaWxlIGlzIHRvIGdl
bmVyYXRlIEdvb2dsZSBUZXN0IG91dHB1dCB1bmRlcgorLy8gdmFyaW91cyBjb25kaXRpb25zLiAg
VGhlIG91dHB1dCB3aWxsIHRoZW4gYmUgdmVyaWZpZWQgYnkKKy8vIGdvb2dsZXRlc3Qtb3V0cHV0
LXRlc3QucHkgdG8gZW5zdXJlIHRoYXQgR29vZ2xlIFRlc3QgZ2VuZXJhdGVzIHRoZQorLy8gZGVz
aXJlZCBtZXNzYWdlcy4gIFRoZXJlZm9yZSwgbW9zdCB0ZXN0cyBpbiB0aGlzIGZpbGUgYXJlIE1F
QU5UIFRPCisvLyBGQUlMLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCisK
KyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2lmIF9NU0NfVkVSCisgIEdURVNUX0RJU0FCTEVfTVND
X1dBUk5JTkdTX1BVU0hfKDQxMjcgLyogY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFu
dCAqLykKKyNlbmRpZiAgLy8gLiBfTVNDX1ZFUiAgICAKKworI2lmIEdURVNUX0lTX1RIUkVBRFNB
RkUKK3VzaW5nIHRlc3Rpbmc6OlNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOwordXNp
bmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHRBcnJheTsKKwordXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6Ok5vdGlmaWNhdGlvbjsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpUaHJlYWRXaXRoUGFy
YW07CisjZW5kaWYKKworbmFtZXNwYWNlIHBvc2l4ID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9z
aXg7CisKKy8vIFRlc3RzIGNhdGNoaW5nIGZhdGFsIGZhaWx1cmVzLgorCisvLyBBIHN1YnJvdXRp
bmUgdXNlZCBieSB0aGUgZm9sbG93aW5nIHRlc3QuCit2b2lkIFRlc3RFcTEoaW50IHgpIHsKKyAg
QVNTRVJUX0VRKDEsIHgpOworfQorCisvLyBUaGlzIGZ1bmN0aW9uIGNhbGxzIGEgdGVzdCBzdWJy
b3V0aW5lLCBjYXRjaGVzIHRoZSBmYXRhbCBmYWlsdXJlIGl0CisvLyBnZW5lcmF0ZXMsIGFuZCB0
aGVuIHJldHVybnMgZWFybHkuCit2b2lkIFRyeVRlc3RTdWJyb3V0aW5lKCkgeworICAvLyBDYWxs
cyBhIHN1YnJvdW50aW5lIHRoYXQgeWllbGRzIGEgZmF0YWwgZmFpbHVyZS4KKyAgVGVzdEVxMSgy
KTsKKworICAvLyBDYXRjaGVzIHRoZSBmYXRhbCBmYWlsdXJlIGFuZCBhYm9ydHMgdGhlIHRlc3Qu
CisgIC8vCisgIC8vIFRoZSB0ZXN0aW5nOjpUZXN0OjogcHJlZml4IGlzIG5lY2Vzc2FyeSB3aGVu
IGNhbGxpbmcKKyAgLy8gSGFzRmF0YWxGYWlsdXJlKCkgb3V0c2lkZSBvZiBhIFRFU1QsIFRFU1Rf
Riwgb3IgdGVzdCBmaXh0dXJlLgorICBpZiAodGVzdGluZzo6VGVzdDo6SGFzRmF0YWxGYWlsdXJl
KCkpIHJldHVybjsKKworICAvLyBJZiB3ZSBnZXQgaGVyZSwgc29tZXRoaW5nIGlzIHdyb25nLgor
ICBGQUlMKCkgPDwgIlRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQuIjsKK30KKworVEVTVChQ
YXNzaW5nVGVzdCwgUGFzc2luZ1Rlc3QxKSB7Cit9CisKK1RFU1QoUGFzc2luZ1Rlc3QsIFBhc3Np
bmdUZXN0MikgeworfQorCisvLyBUZXN0cyB0aGF0IHBhcmFtZXRlcnMgb2YgZmFpbGluZyBwYXJh
bWV0ZXJpemVkIHRlc3RzIGFyZSBwcmludGVkIGluIHRoZQorLy8gZmFpbGluZyB0ZXN0IHN1bW1h
cnkuCitjbGFzcyBGYWlsaW5nUGFyYW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08aW50PiB7fTsKKworVEVTVF9QKEZhaWxpbmdQYXJhbVRlc3QsIEZhaWxzKSB7CisgIEVYUEVD
VF9FUSgxLCBHZXRQYXJhbSgpKTsKK30KKworLy8gVGhpcyBnZW5lcmF0ZXMgYSB0ZXN0IHdoaWNo
IHdpbGwgZmFpbC4gR29vZ2xlIFRlc3QgaXMgZXhwZWN0ZWQgdG8gcHJpbnQKKy8vIGl0cyBwYXJh
bWV0ZXIgd2hlbiBpdCBvdXRwdXRzIHRoZSBsaXN0IG9mIGFsbCBmYWlsZWQgdGVzdHMuCitJTlNU
QU5USUFURV9URVNUX0NBU0VfUChQcmludGluZ0ZhaWxpbmdQYXJhbXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICBGYWlsaW5nUGFyYW1UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dGluZzo6VmFsdWVzKDIpKTsKKworc3RhdGljIGNvbnN0IGNoYXIga0dvbGRlblN0cmluZ1tdID0g
IlwiTGluZVwwIDFcIlxuTGluZSAyIjsKKworVEVTVChOb25mYXRhbEZhaWx1cmVUZXN0LCBFc2Nh
cGVzU3RyaW5nT3BlcmFuZHMpIHsKKyAgc3RkOjpzdHJpbmcgYWN0dWFsID0gImFjdHVhbCBcInN0
cmluZ1wiIjsKKyAgRVhQRUNUX0VRKGtHb2xkZW5TdHJpbmcsIGFjdHVhbCk7CisKKyAgY29uc3Qg
Y2hhciogZ29sZGVuID0ga0dvbGRlblN0cmluZzsKKyAgRVhQRUNUX0VRKGdvbGRlbiwgYWN0dWFs
KTsKK30KKworVEVTVChOb25mYXRhbEZhaWx1cmVUZXN0LCBEaWZmRm9yTG9uZ1N0cmluZ3MpIHsK
KyAgc3RkOjpzdHJpbmcgZ29sZGVuX3N0cihrR29sZGVuU3RyaW5nLCBzaXplb2Yoa0dvbGRlblN0
cmluZykgLSAxKTsKKyAgRVhQRUNUX0VRKGdvbGRlbl9zdHIsICJMaW5lIDIiKTsKK30KKworLy8g
VGVzdHMgY2F0Y2hpbmcgYSBmYXRhbCBmYWlsdXJlIGluIGEgc3Vicm91dGluZS4KK1RFU1QoRmF0
YWxGYWlsdXJlVGVzdCwgRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lKSB7CisgIHByaW50ZigiKGV4
cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKVxuIik7CisKKyAgVHJ5VGVzdFN1
YnJvdXRpbmUoKTsKK30KKworLy8gVGVzdHMgY2F0Y2hpbmcgYSBmYXRhbCBmYWlsdXJlIGluIGEg
bmVzdGVkIHN1YnJvdXRpbmUuCitURVNUKEZhdGFsRmFpbHVyZVRlc3QsIEZhdGFsRmFpbHVyZUlu
TmVzdGVkU3Vicm91dGluZSkgeworICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQg
eCBzaG91bGQgYmUgMSlcbiIpOworCisgIC8vIENhbGxzIGEgc3Vicm91bnRpbmUgdGhhdCB5aWVs
ZHMgYSBmYXRhbCBmYWlsdXJlLgorICBUcnlUZXN0U3Vicm91dGluZSgpOworCisgIC8vIENhdGNo
ZXMgdGhlIGZhdGFsIGZhaWx1cmUgYW5kIGFib3J0cyB0aGUgdGVzdC4KKyAgLy8KKyAgLy8gV2hl
biBjYWxsaW5nIEhhc0ZhdGFsRmFpbHVyZSgpIGluc2lkZSBhIFRFU1QsIFRFU1RfRiwgb3IgdGVz
dAorICAvLyBmaXh0dXJlLCB0aGUgdGVzdGluZzo6VGVzdDo6IHByZWZpeCBpcyBub3QgbmVlZGVk
LgorICBpZiAoSGFzRmF0YWxGYWlsdXJlKCkpIHJldHVybjsKKworICAvLyBJZiB3ZSBnZXQgaGVy
ZSwgc29tZXRoaW5nIGlzIHdyb25nLgorICBGQUlMKCkgPDwgIlRoaXMgc2hvdWxkIG5ldmVyIGJl
IHJlYWNoZWQuIjsKK30KKworLy8gVGVzdHMgSGFzRmF0YWxGYWlsdXJlKCkgYWZ0ZXIgYSBmYWls
ZWQgRVhQRUNUIGNoZWNrLgorVEVTVChGYXRhbEZhaWx1cmVUZXN0LCBOb25mYXRhbEZhaWx1cmVJ
blN1YnJvdXRpbmUpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiBmYWxzZSlc
biIpOworICBFWFBFQ1RfVFJVRShmYWxzZSk7ICAvLyBHZW5lcmF0ZXMgYSBub25mYXRhbCBmYWls
dXJlCisgIEFTU0VSVF9GQUxTRShIYXNGYXRhbEZhaWx1cmUoKSk7ICAvLyBUaGlzIHNob3VsZCBz
dWNjZWVkLgorfQorCisvLyBUZXN0cyBpbnRlcmxlYXZpbmcgdXNlciBsb2dnaW5nIGFuZCBHb29n
bGUgVGVzdCBhc3NlcnRpb25zLgorVEVTVChMb2dnaW5nVGVzdCwgSW50ZXJsZWF2aW5nTG9nZ2lu
Z0FuZEFzc2VydGlvbnMpIHsKKyAgc3RhdGljIGNvbnN0IGludCBhWzRdID0geworICAgIDMsIDks
IDIsIDYKKyAgfTsKKworICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0g
KGFbaV0pKVxuIik7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoYSkvc2l6ZW9mKCphKSk7IGkrKykgeworICAgIHByaW50ZigiaSA9PSAlZFxuIiwgaSk7Cisg
ICAgRVhQRUNUX0dFKDMsIGFbaV0pOworICB9Cit9CisKKy8vIFRlc3RzIHRoZSBTQ09QRURfVFJB
Q0UgbWFjcm8uCisKKy8vIEEgaGVscGVyIGZ1bmN0aW9uIGZvciB0ZXN0aW5nIFNDT1BFRF9UUkFD
RS4KK3ZvaWQgU3ViV2l0aG91dFRyYWNlKGludCBuKSB7CisgIEVYUEVDVF9FUSgxLCBuKTsKKyAg
QVNTRVJUX0VRKDIsIG4pOworfQorCisvLyBBbm90aGVyIGhlbHBlciBmdW5jdGlvbiBmb3IgdGVz
dGluZyBTQ09QRURfVFJBQ0UuCit2b2lkIFN1YldpdGhUcmFjZShpbnQgbikgeworICBTQ09QRURf
VFJBQ0UodGVzdGluZzo6TWVzc2FnZSgpIDw8ICJuID0gIiA8PCBuKTsKKworICBTdWJXaXRob3V0
VHJhY2Uobik7Cit9CisKK1RFU1QoU0NPUEVEX1RSQUNFVGVzdCwgQWNjZXB0ZWRWYWx1ZXMpIHsK
KyAgU0NPUEVEX1RSQUNFKCJsaXRlcmFsIHN0cmluZyIpOworICBTQ09QRURfVFJBQ0Uoc3RkOjpz
dHJpbmcoInN0ZDo6c3RyaW5nIikpOworICBTQ09QRURfVFJBQ0UoMTMzNyk7ICAvLyBzdHJlYW1h
YmxlIHR5cGUKKyAgY29uc3QgY2hhciogbnVsbF92YWx1ZSA9IE5VTEw7CisgIFNDT1BFRF9UUkFD
RShudWxsX3ZhbHVlKTsKKworICBBRERfRkFJTFVSRSgpIDw8ICJKdXN0IGNoZWNraW5nIHRoYXQg
YWxsIHRoZXNlIHZhbHVlcyB3b3JrIGZpbmUuIjsKK30KKworLy8gVGVzdHMgdGhhdCBTQ09QRURf
VFJBQ0UoKSBvYmV5cyBsZXhpY2FsIHNjb3Blcy4KK1RFU1QoU0NPUEVEX1RSQUNFVGVzdCwgT2Jl
eXNTY29wZXMpIHsKKyAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIpOworCisgIC8vIFRo
ZXJlIHNob3VsZCBiZSBubyB0cmFjZSBiZWZvcmUgU0NPUEVEX1RSQUNFKCkgaXMgaW52b2tlZC4K
KyAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxk
bid0IGhhdmUgYSB0cmFjZS4iOworCisgIHsKKyAgICBTQ09QRURfVFJBQ0UoIkV4cGVjdGVkIHRy
YWNlIik7CisgICAgLy8gQWZ0ZXIgU0NPUEVEX1RSQUNFKCksIGEgZmFpbHVyZSBpbiB0aGUgY3Vy
cmVudCBzY29wZSBzaG91bGQgY29udGFpbgorICAgIC8vIHRoZSB0cmFjZS4KKyAgICBBRERfRkFJ
TFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgaGF2ZSBhIHRy
YWNlLiI7CisgIH0KKworICAvLyBPbmNlIHRoZSBjb250cm9sIGxlYXZlcyB0aGUgc2NvcGUgb2Yg
dGhlIFNDT1BFRF9UUkFDRSgpLCB0aGVyZQorICAvLyBzaG91bGQgYmUgbm8gdHJhY2UgYWdhaW4u
CisgIEFERF9GQUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3Vs
ZG4ndCBoYXZlIGEgdHJhY2UuIjsKK30KKworLy8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0Ugd29y
a3MgaW5zaWRlIGEgbG9vcC4KK1RFU1QoU0NPUEVEX1RSQUNFVGVzdCwgV29ya3NJbkxvb3ApIHsK
KyAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIpOworCisgIGZvciAoaW50IGkgPSAxOyBp
IDw9IDI7IGkrKykgeworICAgIFNDT1BFRF9UUkFDRSh0ZXN0aW5nOjpNZXNzYWdlKCkgPDwgImkg
PSAiIDw8IGkpOworCisgICAgU3ViV2l0aG91dFRyYWNlKGkpOworICB9Cit9CisKKy8vIFRlc3Rz
IHRoYXQgU0NPUEVEX1RSQUNFIHdvcmtzIGluIGEgc3Vicm91dGluZS4KK1RFU1QoU0NPUEVEX1RS
QUNFVGVzdCwgV29ya3NJblN1YnJvdXRpbmUpIHsKKyAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFp
bClcbiIpOworCisgIFN1YldpdGhUcmFjZSgxKTsKKyAgU3ViV2l0aFRyYWNlKDIpOworfQorCisv
LyBUZXN0cyB0aGF0IFNDT1BFRF9UUkFDRSBjYW4gYmUgbmVzdGVkLgorVEVTVChTQ09QRURfVFJB
Q0VUZXN0LCBDYW5CZU5lc3RlZCkgeworICBwcmludGYoIihleHBlY3RlZCB0byBmYWlsKVxuIik7
CisKKyAgU0NPUEVEX1RSQUNFKCIiKTsgIC8vIEEgdHJhY2Ugd2l0aG91dCBhIG1lc3NhZ2UuCisK
KyAgU3ViV2l0aFRyYWNlKDIpOworfQorCisvLyBUZXN0cyB0aGF0IG11bHRpcGxlIFNDT1BFRF9U
UkFDRXMgY2FuIGJlIHVzZWQgaW4gdGhlIHNhbWUgc2NvcGUuCitURVNUKFNDT1BFRF9UUkFDRVRl
c3QsIENhbkJlUmVwZWF0ZWQpIHsKKyAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIpOwor
CisgIFNDT1BFRF9UUkFDRSgiQSIpOworICBBRERfRkFJTFVSRSgpCisgICAgICA8PCAiVGhpcyBm
YWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQS4iOwor
CisgIFNDT1BFRF9UUkFDRSgiQiIpOworICBBRERfRkFJTFVSRSgpCisgICAgICA8PCAiVGhpcyBm
YWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSBhbmQg
Qi4iOworCisgIHsKKyAgICBTQ09QRURfVFJBQ0UoIkMiKTsKKyAgICBBRERfRkFJTFVSRSgpIDw8
ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgIgorICAgICAgICAgICAgICAg
ICAgPDwgImNvbnRhaW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEMuIjsKKyAgfQorCisgIFNDT1BF
RF9UUkFDRSgiRCIpOworICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0
ZWQsIGFuZCBzaG91bGQgIgorICAgICAgICAgICAgICAgIDw8ICJjb250YWluIHRyYWNlIHBvaW50
IEEsIEIsIGFuZCBELiI7Cit9CisKKyNpZiBHVEVTVF9JU19USFJFQURTQUZFCisvLyBUZXN0cyB0
aGF0IFNDT1BFRF9UUkFDRSgpcyBjYW4gYmUgdXNlZCBjb25jdXJyZW50bHkgZnJvbSBtdWx0aXBs
ZQorLy8gdGhyZWFkcy4gIE5hbWVseSwgYW4gYXNzZXJ0aW9uIHNob3VsZCBiZSBhZmZlY3RlZCBi
eQorLy8gU0NPUEVEX1RSQUNFKClzIGluIGl0cyBvd24gdGhyZWFkIG9ubHkuCisKKy8vIEhlcmUn
cyB0aGUgc2VxdWVuY2Ugb2YgYWN0aW9ucyB0aGF0IGhhcHBlbiBpbiB0aGUgdGVzdDoKKy8vCisv
LyAgIFRocmVhZCBBIChtYWluKSAgICAgICAgICAgICAgICB8IFRocmVhZCBCIChzcGF3bmVkKQor
Ly8gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09fD09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CisvLyAgIHNwYXducyB0aHJlYWQgQiAgICAgICAgICAgICAgICB8CisvLyAg
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKy8vICAgd2FpdHMgZm9yIG4xICAgICAgICAgICAgICAgICAgIHwgU0NPUEVEX1RS
QUNFKCJUcmFjZSBCIik7CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdl
bmVyYXRlcyBmYWlsdXJlICMxCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IG5vdGlmaWVzIG4xCisvLyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgU0NPUEVEX1RSQUNFKCJUcmFjZSBBIik7
ICAgICAgIHwgd2FpdHMgZm9yIG4yCisvLyAgIGdlbmVyYXRlcyBmYWlsdXJlICMyICAgICAgICAg
ICB8CisvLyAgIG5vdGlmaWVzIG4yICAgICAgICAgICAgICAgICAgICB8CisvLyAgIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vICAgd2FpdHMgZm9yIG4zICAgICAgICAgICAgICAgICAgIHwgZ2VuZXJhdGVzIGZhaWx1cmUg
IzMKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhY2UgQiBkaWVzCisv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdlbmVyYXRlcyBmYWlsdXJlICM0
CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG5vdGlmaWVzIG4zCisvLyAg
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKy8vICAgZ2VuZXJhdGVzIGZhaWx1cmUgIzUgICAgICAgICAgIHwgZmluaXNoZXMK
Ky8vICAgdHJhY2UgQSBkaWVzICAgICAgICAgICAgICAgICAgIHwKKy8vICAgZ2VuZXJhdGVzIGZh
aWx1cmUgIzYgICAgICAgICAgIHwKKy8vICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICB3YWl0cyBmb3IgdGhyZWFk
IEIgdG8gZmluaXNoICAgfAorCitzdHJ1Y3QgQ2hlY2tQb2ludHMgeworICBOb3RpZmljYXRpb24g
bjE7CisgIE5vdGlmaWNhdGlvbiBuMjsKKyAgTm90aWZpY2F0aW9uIG4zOworfTsKKworc3RhdGlj
IHZvaWQgVGhyZWFkV2l0aFNjb3BlZFRyYWNlKENoZWNrUG9pbnRzKiBjaGVja19wb2ludHMpIHsK
KyAgeworICAgIFNDT1BFRF9UUkFDRSgiVHJhY2UgQiIpOworICAgIEFERF9GQUlMVVJFKCkKKyAg
ICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzEgKGluIHRocmVhZCBCLCBvbmx5IHRyYWNlIEIg
YWxpdmUpLiI7CisgICAgY2hlY2tfcG9pbnRzLT5uMS5Ob3RpZnkoKTsKKyAgICBjaGVja19wb2lu
dHMtPm4yLldhaXRGb3JOb3RpZmljYXRpb24oKTsKKworICAgIEFERF9GQUlMVVJFKCkKKyAgICAg
ICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMgKGluIHRocmVhZCBCLCB0cmFjZSBBICYgQiBib3Ro
IGFsaXZlKS4iOworICB9ICAvLyBUcmFjZSBCIGRpZXMgaGVyZS4KKyAgQUREX0ZBSUxVUkUoKQor
ICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzQgKGluIHRocmVhZCBCLCBvbmx5IHRyYWNlIEEg
YWxpdmUpLiI7CisgIGNoZWNrX3BvaW50cy0+bjMuTm90aWZ5KCk7Cit9CisKK1RFU1QoU0NPUEVE
X1RSQUNFVGVzdCwgV29ya3NDb25jdXJyZW50bHkpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDYg
ZmFpbHVyZXMpXG4iKTsKKworICBDaGVja1BvaW50cyBjaGVja19wb2ludHM7CisgIFRocmVhZFdp
dGhQYXJhbTxDaGVja1BvaW50cyo+IHRocmVhZCgmVGhyZWFkV2l0aFNjb3BlZFRyYWNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNoZWNrX3BvaW50cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICBjaGVja19wb2ludHMu
bjEuV2FpdEZvck5vdGlmaWNhdGlvbigpOworCisgIHsKKyAgICBTQ09QRURfVFJBQ0UoIlRyYWNl
IEEiKTsKKyAgICBBRERfRkFJTFVSRSgpCisgICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMy
IChpbiB0aHJlYWQgQSwgdHJhY2UgQSAmIEIgYm90aCBhbGl2ZSkuIjsKKyAgICBjaGVja19wb2lu
dHMubjIuTm90aWZ5KCk7CisgICAgY2hlY2tfcG9pbnRzLm4zLldhaXRGb3JOb3RpZmljYXRpb24o
KTsKKworICAgIEFERF9GQUlMVVJFKCkKKyAgICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzUg
KGluIHRocmVhZCBBLCBvbmx5IHRyYWNlIEEgYWxpdmUpLiI7CisgIH0gIC8vIFRyYWNlIEEgZGll
cyBoZXJlLgorICBBRERfRkFJTFVSRSgpCisgICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNiAo
aW4gdGhyZWFkIEEsIG5vIHRyYWNlIGFsaXZlKS4iOworICB0aHJlYWQuSm9pbigpOworfQorI2Vu
ZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCisKKy8vIFRlc3RzIGJhc2ljIGZ1bmN0aW9uYWxp
dHkgb2YgdGhlIFNjb3BlZFRyYWNlIHV0aWxpdHkgKG1vc3Qgb2YgaXRzIGZlYXR1cmVzCisvLyBh
cmUgYWxyZWFkeSB0ZXN0ZWQgaW4gU0NPUEVEX1RSQUNFVGVzdCkuCitURVNUKFNjb3BlZFRyYWNl
VGVzdCwgV2l0aEV4cGxpY2l0RmlsZUFuZExpbmUpIHsKKyAgdGVzdGluZzo6U2NvcGVkVHJhY2Ug
dHJhY2UoImV4cGxpY2l0X2ZpbGUuY2MiLCAxMjMsICJleHBlY3RlZCB0cmFjZSBtZXNzYWdlIik7
CisgIEFERF9GQUlMVVJFKCkgPDwgIkNoZWNrIHRoYXQgdGhlIHRyYWNlIGlzIGF0dGFjaGVkIHRv
IGEgcGFydGljdWxhciBsb2NhdGlvbi4iOworfQorCitURVNUKERpc2FibGVkVGVzdHNXYXJuaW5n
VGVzdCwKKyAgICAgRElTQUJMRURfQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnU3VwcHJlc3Nlc1dh
cm5pbmcpIHsKKyAgLy8gVGhpcyB0ZXN0IGJvZHkgaXMgaW50ZW50aW9uYWxseSBlbXB0eS4gIEl0
cyBzb2xlIHB1cnBvc2UgaXMgZm9yCisgIC8vIHZlcmlmeWluZyB0aGF0IHRoZSAtLWd0ZXN0X2Fs
c29fcnVuX2Rpc2FibGVkX3Rlc3RzIGZsYWcKKyAgLy8gc3VwcHJlc3NlcyB0aGUgIllPVSBIQVZF
IDEyIERJU0FCTEVEIFRFU1RTIiB3YXJuaW5nIGF0IHRoZSBlbmQgb2YKKyAgLy8gdGhlIHRlc3Qg
b3V0cHV0LgorfQorCisvLyBUZXN0cyB1c2luZyBhc3NlcnRpb25zIG91dHNpZGUgb2YgVEVTVCBh
bmQgVEVTVF9GLgorLy8KKy8vIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyB0d28gZmFpbHVyZXMgaW50
ZW50aW9uYWxseS4KK3ZvaWQgQWRIb2NUZXN0KCkgeworICBwcmludGYoIlRoZSBub24tdGVzdCBw
YXJ0IG9mIHRoZSBjb2RlIGlzIGV4cGVjdGVkIHRvIGhhdmUgMiBmYWlsdXJlcy5cblxuIik7Cisg
IEVYUEVDVF9UUlVFKGZhbHNlKTsKKyAgRVhQRUNUX0VRKDIsIDMpOworfQorCisvLyBSdW5zIGFs
bCBURVNUcywgYWxsIFRFU1RfRnMsIGFuZCB0aGUgYWQgaG9jIHRlc3QuCitpbnQgUnVuQWxsVGVz
dHMoKSB7CisgIEFkSG9jVGVzdCgpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQorCisv
LyBUZXN0cyBub24tZmF0YWwgZmFpbHVyZXMgaW4gdGhlIGZpeHR1cmUgY29uc3RydWN0b3IuCitj
bGFzcyBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25z
dHJ1Y3RvclRlc3QoKSB7CisgICAgcHJpbnRmKCIoZXhwZWN0aW5nIDUgZmFpbHVyZXMpXG4iKTsK
KyAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBm
aXh0dXJlIGMndG9yLiI7CisgIH0KKworICB+Tm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3Ry
dWN0b3JUZXN0KCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzUs
IGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBTZXRV
cCgpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBTZXRV
cCgpLiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgQUREX0ZBSUxV
UkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gVGVhckRvd24uIjsKKyAgfQorfTsKKwor
VEVTVF9GKE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCwgRmFpbHVyZUlu
Q29uc3RydWN0b3IpIHsKKyAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMywg
aW4gdGhlIHRlc3QgYm9keS4iOworfQorCisvLyBUZXN0cyBmYXRhbCBmYWlsdXJlcyBpbiB0aGUg
Zml4dHVyZSBjb25zdHJ1Y3Rvci4KK2NsYXNzIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVj
dG9yVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIEZhdGFsRmFp
bHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCgpIHsKKyAgICBwcmludGYoIihleHBlY3Rpbmcg
MiBmYWlsdXJlcylcbiIpOworICAgIEluaXQoKTsKKyAgfQorCisgIH5GYXRhbEZhaWx1cmVJbkZp
eHR1cmVDb25zdHJ1Y3RvclRlc3QoKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQg
ZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4iOworICB9CisKKyAgdmlydHVh
bCB2b2lkIFNldFVwKCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIlVORVhQRUNURUQgZmFpbHVy
ZSBpbiBTZXRVcCgpLiAgIgorICAgICAgICAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBn
ZXQgaGVyZSwgYXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciAiCisgICAgICAgICAgICAgICAgICA8
PCAiaGFkIGEgZmF0YWwgZmFpbHVyZS4iOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3du
KCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiBUZWFyRG93
bigpLiAgIgorICAgICAgICAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwg
YXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciAiCisgICAgICAgICAgICAgICAgICA8PCAiaGFkIGEg
ZmF0YWwgZmFpbHVyZS4iOworICB9CisKKyBwcml2YXRlOgorICB2b2lkIEluaXQoKSB7CisgICAg
RkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGMndG9y
LiI7CisgIH0KK307CisKK1RFU1RfRihGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRl
c3QsIEZhaWx1cmVJbkNvbnN0cnVjdG9yKSB7CisgIEFERF9GQUlMVVJFKCkgPDwgIlVORVhQRUNU
RUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBib2R5LiAgIgorICAgICAgICAgICAgICAgIDw8ICJXZSBz
aG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgIgorICAgICAg
ICAgICAgICAgIDw8ICJoYWQgYSBmYXRhbCBmYWlsdXJlLiI7Cit9CisKKy8vIFRlc3RzIG5vbi1m
YXRhbCBmYWlsdXJlcyBpbiBTZXRVcCgpLgorY2xhc3MgTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIH5Ob25G
YXRhbEZhaWx1cmVJblNldFVwVGVzdCgpIHsKKyAgICBEZWluaXQoKTsKKyAgfQorCisgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBwcmludGYoIihleHBlY3RpbmcgNCBmYWlsdXJlcylcbiIp
OworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCku
IjsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBGQUlMKCkgPDwgIkV4
cGVjdGVkIGZhaWx1cmUgIzMsIGluIFRlYXJEb3duKCkuIjsKKyAgfQorIHByaXZhdGU6CisgIHZv
aWQgRGVpbml0KCkgeworICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gdGhl
IHRlc3QgZml4dHVyZSBkJ3Rvci4iOworICB9Cit9OworCitURVNUX0YoTm9uRmF0YWxGYWlsdXJl
SW5TZXRVcFRlc3QsIEZhaWx1cmVJblNldFVwKSB7CisgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFp
bHVyZSAjMiwgaW4gdGhlIHRlc3QgZnVuY3Rpb24uIjsKK30KKworLy8gVGVzdHMgZmF0YWwgZmFp
bHVyZXMgaW4gU2V0VXAoKS4KK2NsYXNzIEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB+RmF0YWxGYWlsdXJlSW5T
ZXRVcFRlc3QoKSB7CisgICAgRGVpbml0KCk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgU2V0VXAo
KSB7CisgICAgcHJpbnRmKCIoZXhwZWN0aW5nIDMgZmFpbHVyZXMpXG4iKTsKKyAgICBGQUlMKCkg
PDwgIkV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCkuIjsKKyAgfQorCisgIHZpcnR1YWwg
dm9pZCBUZWFyRG93bigpIHsKKyAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGlu
IFRlYXJEb3duKCkuIjsKKyAgfQorIHByaXZhdGU6CisgIHZvaWQgRGVpbml0KCkgeworICAgIEZB
SUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4i
OworICB9Cit9OworCitURVNUX0YoRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QsIEZhaWx1cmVJblNl
dFVwKSB7CisgIEZBSUwoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIHRoZSB0ZXN0IGZ1bmN0
aW9uLiAgIgorICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgU2V0VXAo
KSBmYWlsZWQuIjsKK30KKworVEVTVChBZGRGYWlsdXJlQXRUZXN0LCBNZXNzYWdlQ29udGFpbnNT
cGVjaWZpZWRGaWxlQW5kTGluZU51bWJlcikgeworICBBRERfRkFJTFVSRV9BVCgiZm9vLmNjIiwg
NDIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlIGluIGZvby5jYyI7Cit9CisKKyNpZiBHVEVTVF9JU19U
SFJFQURTQUZFCisKKy8vIEEgdW5hcnkgZnVuY3Rpb24gdGhhdCBtYXkgZGllLgordm9pZCBEaWVJ
Zihib29sIHNob3VsZF9kaWUpIHsKKyAgR1RFU1RfQ0hFQ0tfKCFzaG91bGRfZGllKSA8PCAiIC0g
ZGVhdGggaW5zaWRlIERpZUlmKCkuIjsKK30KKworLy8gVGVzdHMgcnVubmluZyBkZWF0aCB0ZXN0
cyBpbiBhIG11bHRpLXRocmVhZGVkIGNvbnRleHQuCisKKy8vIFVzZWQgZm9yIGNvb3JkaW5hdGlv
biBiZXR3ZWVuIHRoZSBtYWluIGFuZCB0aGUgc3Bhd24gdGhyZWFkLgorc3RydWN0IFNwYXduVGhy
ZWFkTm90aWZpY2F0aW9ucyB7CisgIFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucygpIHt9CisKKyAg
Tm90aWZpY2F0aW9uIHNwYXduX3RocmVhZF9zdGFydGVkOworICBOb3RpZmljYXRpb24gc3Bhd25f
dGhyZWFkX29rX3RvX3Rlcm1pbmF0ZTsKKworIHByaXZhdGU6CisgIEdURVNUX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTl8oU3Bhd25UaHJlYWROb3RpZmljYXRpb25zKTsKK307CisKKy8vIFRoZSBm
dW5jdGlvbiB0byBiZSBleGVjdXRlZCBpbiB0aGUgdGhyZWFkIHNwYXduIGJ5IHRoZQorLy8gTXVs
dGlwbGVUaHJlYWRzIHRlc3QgKGJlbG93KS4KK3N0YXRpYyB2b2lkIFRocmVhZFJvdXRpbmUoU3Bh
d25UaHJlYWROb3RpZmljYXRpb25zKiBub3RpZmljYXRpb25zKSB7CisgIC8vIFNpZ25hbHMgdGhl
IG1haW4gdGhyZWFkIHRoYXQgdGhpcyB0aHJlYWQgaGFzIHN0YXJ0ZWQuCisgIG5vdGlmaWNhdGlv
bnMtPnNwYXduX3RocmVhZF9zdGFydGVkLk5vdGlmeSgpOworCisgIC8vIFdhaXRzIGZvciBwZXJt
aXNzaW9uIHRvIGZpbmlzaCBmcm9tIHRoZSBtYWluIHRocmVhZC4KKyAgbm90aWZpY2F0aW9ucy0+
c3Bhd25fdGhyZWFkX29rX3RvX3Rlcm1pbmF0ZS5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7Cit9CisK
Ky8vIFRoaXMgaXMgYSBkZWF0aC10ZXN0IHRlc3QsIGJ1dCBpdCdzIG5vdCBuYW1lZCB3aXRoIGEg
RGVhdGhUZXN0CisvLyBzdWZmaXguICBJdCBzdGFydHMgdGhyZWFkcyB3aGljaCBtaWdodCBpbnRl
cmZlcmUgd2l0aCBsYXRlcgorLy8gZGVhdGggdGVzdHMsIHNvIGl0IG11c3QgcnVuIGFmdGVyIGFs
bCBvdGhlciBkZWF0aCB0ZXN0cy4KK2NsYXNzIERlYXRoVGVzdEFuZE11bHRpVGhyZWFkc1Rlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAvLyBTdGFydHMgYSB0aHJl
YWQgYW5kIHdhaXRzIGZvciBpdCB0byBiZWdpbi4KKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgewor
ICAgIHRocmVhZF8ucmVzZXQobmV3IFRocmVhZFdpdGhQYXJhbTxTcGF3blRocmVhZE5vdGlmaWNh
dGlvbnMqPigKKyAgICAgICAgJlRocmVhZFJvdXRpbmUsICZub3RpZmljYXRpb25zXywgTlVMTCkp
OworICAgIG5vdGlmaWNhdGlvbnNfLnNwYXduX3RocmVhZF9zdGFydGVkLldhaXRGb3JOb3RpZmlj
YXRpb24oKTsKKyAgfQorICAvLyBUZWxscyB0aGUgdGhyZWFkIHRvIGZpbmlzaCwgYW5kIHJlYXBz
IGl0LgorICAvLyBEZXBlbmRpbmcgb24gdGhlIHZlcnNpb24gb2YgdGhlIHRocmVhZCBsaWJyYXJ5
IGluIHVzZSwKKyAgLy8gYSBtYW5hZ2VyIHRocmVhZCBtaWdodCBzdGlsbCBiZSBsZWZ0IHJ1bm5p
bmcgdGhhdCB3aWxsIGludGVyZmVyZQorICAvLyB3aXRoIGxhdGVyIGRlYXRoIHRlc3RzLiAgVGhp
cyBpcyB1bmZvcnR1bmF0ZSwgYnV0IHRoaXMgY2xhc3MKKyAgLy8gY2xlYW5zIHVwIGFmdGVyIGl0
c2VsZiBhcyBiZXN0IGl0IGNhbi4KKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIG5v
dGlmaWNhdGlvbnNfLnNwYXduX3RocmVhZF9va190b190ZXJtaW5hdGUuTm90aWZ5KCk7CisgIH0K
KworIHByaXZhdGU6CisgIFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyBub3RpZmljYXRpb25zXzsK
KyAgdGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI8VGhyZWFkV2l0aFBhcmFtPFNwYXduVGhy
ZWFkTm90aWZpY2F0aW9ucyo+ID4KKyAgICAgIHRocmVhZF87Cit9OworCisjZW5kaWYgIC8vIEdU
RVNUX0lTX1RIUkVBRFNBRkUKKworLy8gVGhlIE1peGVkVXBUZXN0Q2FzZVRlc3QgdGVzdCBjYXNl
IHZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3Qgd2lsbCBmYWlsIGEKKy8vIHRlc3QgaWYgaXQgdXNl
cyBhIGRpZmZlcmVudCBmaXh0dXJlIGNsYXNzIHRoYW4gd2hhdCBvdGhlciB0ZXN0cyBpbgorLy8g
dGhlIHNhbWUgdGVzdCBjYXNlIHVzZS4gIEl0IGRlbGliZXJhdGVseSBjb250YWlucyB0d28gZml4
dHVyZQorLy8gY2xhc3NlcyB3aXRoIHRoZSBzYW1lIG5hbWUgYnV0IGRlZmluZWQgaW4gZGlmZmVy
ZW50IG5hbWVzcGFjZXMuCisKKy8vIFRoZSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1l
VGVzdCB0ZXN0IGNhc2UgdmVyaWZpZXMgdGhhdAorLy8gd2hlbiB0aGUgdXNlciBkZWZpbmVzIHR3
byB0ZXN0cyB3aXRoIHRoZSBzYW1lIHRlc3QgY2FzZSBuYW1lIEFORAorLy8gc2FtZSB0ZXN0IG5h
bWUgKGJ1dCBpbiBkaWZmZXJlbnQgbmFtZXNwYWNlcyksIHRoZSBzZWNvbmQgdGVzdCB3aWxsCisv
LyBmYWlsLgorCituYW1lc3BhY2UgZm9vIHsKKworY2xhc3MgTWl4ZWRVcFRlc3RDYXNlVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK1RFU1RfRihNaXhlZFVwVGVzdENhc2VUZXN0
LCBGaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vKSB7fQorVEVTVF9GKE1peGVkVXBUZXN0Q2FzZVRl
c3QsIFNlY29uZFRlc3RGcm9tTmFtZXNwYWNlRm9vKSB7fQorCitjbGFzcyBNaXhlZFVwVGVzdENh
c2VXaXRoU2FtZVRlc3ROYW1lVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK1RF
U1RfRihNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdCwKKyAgICAgICBUaGVTZWNv
bmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbCkge30KKworfSAgLy8gbmFtZXNwYWNlIGZvbwor
CituYW1lc3BhY2UgYmFyIHsKKworY2xhc3MgTWl4ZWRVcFRlc3RDYXNlVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0IHsKK307CisKKy8vIFRoZSBmb2xsb3dpbmcgdHdvIHRlc3RzIGFyZSBleHBl
Y3RlZCB0byBmYWlsLiAgV2UgcmVseSBvbiB0aGUKKy8vIGdvbGRlbiBmaWxlIHRvIGNoZWNrIHRo
YXQgR29vZ2xlIFRlc3QgZ2VuZXJhdGVzIHRoZSByaWdodCBlcnJvciBtZXNzYWdlLgorVEVTVF9G
KE1peGVkVXBUZXN0Q2FzZVRlc3QsIFRoaXNTaG91bGRGYWlsKSB7fQorVEVTVF9GKE1peGVkVXBU
ZXN0Q2FzZVRlc3QsIFRoaXNTaG91bGRGYWlsVG9vKSB7fQorCitjbGFzcyBNaXhlZFVwVGVzdENh
c2VXaXRoU2FtZVRlc3ROYW1lVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisKKy8v
IEV4cGVjdGVkIHRvIGZhaWwuICBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmlsZSB0byBjaGVjayB0
aGF0IEdvb2dsZSBUZXN0CisvLyBnZW5lcmF0ZXMgdGhlIHJpZ2h0IGVycm9yIG1lc3NhZ2UuCitU
RVNUX0YoTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCisgICAgICAgVGhlU2Vj
b25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwpIHt9CisKK30gIC8vIG5hbWVzcGFjZSBiYXIK
KworLy8gVGhlIGZvbGxvd2luZyB0d28gdGVzdCBjYXNlcyB2ZXJpZnkgdGhhdCBHb29nbGUgVGVz
dCBjYXRjaGVzIHRoZSB1c2VyCisvLyBlcnJvciBvZiBtaXhpbmcgVEVTVCBhbmQgVEVTVF9GIGlu
IHRoZSBzYW1lIHRlc3QgY2FzZS4gIFRoZSBmaXJzdAorLy8gdGVzdCBjYXNlIGNoZWNrcyB0aGUg
c2NlbmFyaW8gd2hlcmUgVEVTVF9GIGFwcGVhcnMgYmVmb3JlIFRFU1QsIGFuZAorLy8gdGhlIHNl
Y29uZCBvbmUgY2hlY2tzIHdoZXJlIFRFU1QgYXBwZWFycyBiZWZvcmUgVEVTVF9GLgorCitjbGFz
cyBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Cit9OworCitURVNUX0YoVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNl
LCBEZWZpbmVkVXNpbmdURVNUX0YpIHt9CisKKy8vIEV4cGVjdGVkIHRvIGZhaWwuICBXZSByZWx5
IG9uIHRoZSBnb2xkZW4gZmlsZSB0byBjaGVjayB0aGF0IEdvb2dsZSBUZXN0CisvLyBnZW5lcmF0
ZXMgdGhlIHJpZ2h0IGVycm9yIG1lc3NhZ2UuCitURVNUKFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9z
YW1lX3Rlc3RfY2FzZSwgRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwpIHt9CisKK2NsYXNz
IFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZSA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKK307CisKK1RFU1QoVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLCBE
ZWZpbmVkVXNpbmdURVNUKSB7fQorCisvLyBFeHBlY3RlZCB0byBmYWlsLiAgV2UgcmVseSBvbiB0
aGUgZ29sZGVuIGZpbGUgdG8gY2hlY2sgdGhhdCBHb29nbGUgVGVzdAorLy8gZ2VuZXJhdGVzIHRo
ZSByaWdodCBlcnJvciBtZXNzYWdlLgorVEVTVF9GKFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1l
X3Rlc3RfY2FzZSwgRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbCkgeworfQorCisvLyBV
c2VkIGZvciB0ZXN0aW5nIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgYW5kIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKCkuCitpbnQgZ2xvYmFsX2ludGVnZXIgPSAwOworCisvLyBUZXN0cyB0aGF0IEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgY2FuIHJlZmVyZW5jZSBnbG9iYWwgdmFyaWFibGVzLgor
VEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBDYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJs
ZXMpIHsKKyAgZ2xvYmFsX2ludGVnZXIgPSAwOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7
CisgICAgRVhQRUNUX0VRKDEsIGdsb2JhbF9pbnRlZ2VyKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFs
IGZhaWx1cmUuIjsKKyAgfSwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOworfQorCisv
LyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgY2FuIHJlZmVyZW5jZSBsb2Nh
bCB2YXJpYWJsZXMKKy8vIChzdGF0aWMgb3Igbm90KS4KK1RFU1QoRXhwZWN0Tm9uZmF0YWxGYWls
dXJlVGVzdCwgQ2FuUmVmZXJlbmNlTG9jYWxWYXJpYWJsZXMpIHsKKyAgaW50IG0gPSAwOworICBz
dGF0aWMgaW50IG47CisgIG4gPSAxOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAg
RVhQRUNUX0VRKG0sIG4pIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOworICB9LCAi
RXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoKSBzdWNjZWVkcyB3aGVuIHRoZXJlIGlzIGV4YWN0bHkKKy8vIG9u
ZSBub24tZmF0YWwgZmFpbHVyZSBhbmQgbm8gZmF0YWwgZmFpbHVyZS4KK1RFU1QoRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdCwgU3VjY2VlZHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZSkg
eworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhw
ZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKKyAgfSwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWls
dXJlLiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgZmFp
bHMgd2hlbiB0aGVyZSBpcyBubworLy8gbm9uLWZhdGFsIGZhaWx1cmUuCitURVNUKEV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlSXNOb05vbmZhdGFsRmFpbHVyZSkgewor
ICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKHsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBhcmUgdHdvCisvLyBub24tZmF0YWwgZmFpbHVyZXMu
CitURVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlQXJlVHdvTm9u
ZmF0YWxGYWlsdXJlcykgeworICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Cisg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3Rl
ZCBub24tZmF0YWwgZmFpbHVyZSAxLiI7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQg
bm9uLWZhdGFsIGZhaWx1cmUgMi4iOworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZXJlIGlzIG9uZSBmYXRhbAorLy8g
ZmFpbHVyZS4KK1RFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVJ
c09uZUZhdGFsRmFpbHVyZSkgeworICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKKyAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZh
dGFsIGZhaWx1cmUuIjsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGUgc3RhdGVtZW50IGJlaW5nCisvLyB0ZXN0ZWQg
cmV0dXJucy4KK1RFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuU3RhdGVt
ZW50UmV0dXJucykgeworICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7CisgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKKyAgICByZXR1cm47CisgIH0sICIiKTsKK30KKworI2lm
IEdURVNUX0hBU19FWENFUFRJT05TCisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoKSBmYWlscyB3aGVuIHRoZSBzdGF0ZW1lbnQgYmVpbmcKKy8vIHRlc3RlZCB0aHJvd3Mu
CitURVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblN0YXRlbWVudFRocm93
cykgeworICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7CisgIHRyeSB7CisgICAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgICAgdGhyb3cgMDsKKyAgICB9LCAiIik7Cisg
IH0gY2F0Y2goaW50KSB7ICAvLyBOT0xJTlQKKyAgfQorfQorCisjZW5kaWYgIC8vIEdURVNUX0hB
U19FWENFUFRJT05TCisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBjYW4g
cmVmZXJlbmNlIGdsb2JhbCB2YXJpYWJsZXMuCitURVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qs
IENhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcykgeworICBnbG9iYWxfaW50ZWdlciA9IDA7Cisg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKKyAgICBBU1NFUlRfRVEoMSwgZ2xvYmFsX2ludGVnZXIp
IDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7CisgIH0sICJFeHBlY3RlZCBmYXRhbCBmYWls
dXJlLiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgY2FuIHJl
ZmVyZW5jZSBsb2NhbCBzdGF0aWMKKy8vIHZhcmlhYmxlcy4KK1RFU1QoRXhwZWN0RmF0YWxGYWls
dXJlVGVzdCwgQ2FuUmVmZXJlbmNlTG9jYWxTdGF0aWNWYXJpYWJsZXMpIHsKKyAgc3RhdGljIGlu
dCBuOworICBuID0gMTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeworICAgIEFTU0VSVF9FUSgw
LCBuKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOworICB9LCAiRXhwZWN0ZWQgZmF0YWwg
ZmFpbHVyZS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIHN1
Y2NlZWRzIHdoZW4gdGhlcmUgaXMgZXhhY3RseQorLy8gb25lIGZhdGFsIGZhaWx1cmUgYW5kIG5v
IG5vbi1mYXRhbCBmYWlsdXJlLgorVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBTdWNjZWVk
c1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlKSB7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsK
KyAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKKyAgfSwgIkV4cGVjdGVk
IGZhdGFsIGZhaWx1cmUuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoKSBmYWlscyB3aGVuIHRoZXJlIGlzIG5vIGZhdGFsCisvLyBmYWlsdXJlLgorVEVTVChFeHBl
Y3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUpIHsKKyAg
cHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RSh7CisgIH0sICIiKTsKK30KKworLy8gQSBoZWxwZXIgZm9yIGdlbmVyYXRpbmcgYSBmYXRhbCBm
YWlsdXJlLgordm9pZCBGYXRhbEZhaWx1cmUoKSB7CisgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0
YWwgZmFpbHVyZS4iOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkg
ZmFpbHMgd2hlbiB0aGVyZSBhcmUgdHdvCisvLyBmYXRhbCBmYWlsdXJlcy4KK1RFU1QoRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzKSB7Cisg
IHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoeworICAgIEZhdGFsRmFpbHVyZSgpOworICAgIEZhdGFsRmFpbHVyZSgpOworICB9LCAiIik7
Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRo
ZXJlIGlzIG9uZSBub24tZmF0YWwKKy8vIGZhaWx1cmUuCitURVNUKEV4cGVjdEZhdGFsRmFpbHVy
ZVRlc3QsIEZhaWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUpIHsKKyAgcHJpbnRmKCIo
ZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CisgICAg
QUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKKyAgfSwgIiIp
OworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0
aGUgc3RhdGVtZW50IGJlaW5nCisvLyB0ZXN0ZWQgcmV0dXJucy4KK1RFU1QoRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdCwgRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucykgeworICBwcmludGYoIihleHBl
Y3RpbmcgYSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKKyAgICByZXR1
cm47CisgIH0sICIiKTsKK30KKworI2lmIEdURVNUX0hBU19FWENFUFRJT05TCisKKy8vIFRlc3Rz
IHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZSBzdGF0ZW1lbnQgYmVp
bmcKKy8vIHRlc3RlZCB0aHJvd3MuCitURVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEZhaWxz
V2hlblN0YXRlbWVudFRocm93cykgeworICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxu
Iik7CisgIHRyeSB7CisgICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeworICAgICAgdGhyb3cgMDsK
KyAgICB9LCAiIik7CisgIH0gY2F0Y2goaW50KSB7ICAvLyBOT0xJTlQKKyAgfQorfQorCisjZW5k
aWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCisKKy8vIFRoaXMgI2lmZGVmIGJsb2NrIHRlc3Rz
IHRoZSBvdXRwdXQgb2YgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKworc3RkOjpzdHJpbmcg
UGFyYW1OYW1lRnVuYyhjb25zdCB0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHN0ZDo6c3RyaW5nPiYg
aW5mbykgeworICByZXR1cm4gaW5mby5wYXJhbTsKK30KKworY2xhc3MgUGFyYW1UZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08c3RkOjpzdHJpbmc+IHsKK307CisKK1RFU1RfUChQ
YXJhbVRlc3QsIFN1Y2Nlc3MpIHsKKyAgRVhQRUNUX0VRKCJhIiwgR2V0UGFyYW0oKSk7Cit9CisK
K1RFU1RfUChQYXJhbVRlc3QsIEZhaWx1cmUpIHsKKyAgRVhQRUNUX0VRKCJiIiwgR2V0UGFyYW0o
KSkgPDwgIkV4cGVjdGVkIGZhaWx1cmUiOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChQ
cmludGluZ1N0cmluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbVRlc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXMoc3RkOjpzdHJpbmcoImEiKSksCisg
ICAgICAgICAgICAgICAgICAgICAgICBQYXJhbU5hbWVGdW5jKTsKKworLy8gVGhpcyAjaWZkZWYg
YmxvY2sgdGVzdHMgdGhlIG91dHB1dCBvZiB0eXBlZCB0ZXN0cy4KKyNpZiBHVEVTVF9IQVNfVFlQ
RURfVEVTVAorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVkVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK1RZUEVEX1RFU1RfQ0FTRShUeXBlZFRlc3QsIHRlc3Rp
bmc6OlR5cGVzPGludD4pOworCitUWVBFRF9URVNUKFR5cGVkVGVzdCwgU3VjY2VzcykgeworICBF
WFBFQ1RfRVEoMCwgVHlwZVBhcmFtKCkpOworfQorCitUWVBFRF9URVNUKFR5cGVkVGVzdCwgRmFp
bHVyZSkgeworICBFWFBFQ1RfRVEoMSwgVHlwZVBhcmFtKCkpIDw8ICJFeHBlY3RlZCBmYWlsdXJl
IjsKK30KKwordHlwZWRlZiB0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQ+IFR5cGVzRm9yVGVzdFdp
dGhOYW1lczsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlZFRlc3RXaXRoTmFt
ZXMgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7fTsKKworY2xhc3MgVHlwZWRUZXN0TmFtZXMgewor
IHB1YmxpYzoKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBH
ZXROYW1lKGludCBpKSB7CisgICAgaWYgKHRlc3Rpbmc6OmludGVybmFsOjpJc1NhbWU8VCwgY2hh
cj46OnZhbHVlKQorICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCJjaGFyXyIpICsgOjp0ZXN0aW5n
OjpQcmludFRvU3RyaW5nKGkpOworICAgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFQs
IGludD46OnZhbHVlKQorICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCJpbnRfIikgKyA6OnRlc3Rp
bmc6OlByaW50VG9TdHJpbmcoaSk7CisgIH0KK307CisKK1RZUEVEX1RFU1RfQ0FTRShUeXBlZFRl
c3RXaXRoTmFtZXMsIFR5cGVzRm9yVGVzdFdpdGhOYW1lcywgVHlwZWRUZXN0TmFtZXMpOworCitU
WVBFRF9URVNUKFR5cGVkVGVzdFdpdGhOYW1lcywgU3VjY2Vzcykge30KKworVFlQRURfVEVTVChU
eXBlZFRlc3RXaXRoTmFtZXMsIEZhaWx1cmUpIHsgRkFJTCgpOyB9CisKKyNlbmRpZiAgLy8gR1RF
U1RfSEFTX1RZUEVEX1RFU1QKKworLy8gVGhpcyAjaWZkZWYgYmxvY2sgdGVzdHMgdGhlIG91dHB1
dCBvZiB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCisjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1Rf
UAorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVkVGVzdFAgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7Cit9OworCitUWVBFRF9URVNUX0NBU0VfUChUeXBlZFRlc3RQKTsKKworVFlQ
RURfVEVTVF9QKFR5cGVkVGVzdFAsIFN1Y2Nlc3MpIHsKKyAgRVhQRUNUX0VRKDBVLCBUeXBlUGFy
YW0oKSk7Cit9CisKK1RZUEVEX1RFU1RfUChUeXBlZFRlc3RQLCBGYWlsdXJlKSB7CisgIEVYUEVD
VF9FUSgxVSwgVHlwZVBhcmFtKCkpIDw8ICJFeHBlY3RlZCBmYWlsdXJlIjsKK30KKworUkVHSVNU
RVJfVFlQRURfVEVTVF9DQVNFX1AoVHlwZWRUZXN0UCwgU3VjY2VzcywgRmFpbHVyZSk7CisKK3R5
cGVkZWYgdGVzdGluZzo6VHlwZXM8dW5zaWduZWQgY2hhciwgdW5zaWduZWQgaW50PiBVbnNpZ25l
ZFR5cGVzOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoVW5zaWduZWQsIFR5cGVkVGVz
dFAsIFVuc2lnbmVkVHlwZXMpOworCitjbGFzcyBUeXBlZFRlc3RQTmFtZXMgeworIHB1YmxpYzoK
KyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBHZXROYW1lKGlu
dCBpKSB7CisgICAgaWYgKHRlc3Rpbmc6OmludGVybmFsOjpJc1NhbWU8VCwgdW5zaWduZWQgY2hh
cj46OnZhbHVlKSB7CisgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoInVuc2lnbmVkX2NoYXJfIikg
KyA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoaSk7CisgICAgfQorICAgIGlmICh0ZXN0aW5nOjpp
bnRlcm5hbDo6SXNTYW1lPFQsIHVuc2lnbmVkIGludD46OnZhbHVlKSB7CisgICAgICByZXR1cm4g
c3RkOjpzdHJpbmcoInVuc2lnbmVkX2ludF8iKSArIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhp
KTsKKyAgICB9CisgIH0KK307CisKK0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFVuc2ln
bmVkQ3VzdG9tTmFtZSwgVHlwZWRUZXN0UCwgVW5zaWduZWRUeXBlcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFR5cGVkVGVzdFBOYW1lcyk7CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFT
X1RZUEVEX1RFU1RfUAorCisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworLy8gV2UgcmVseSBv
biB0aGUgZ29sZGVuIGZpbGUgdG8gdmVyaWZ5IHRoYXQgdGVzdHMgd2hvc2UgdGVzdCBjYXNlCisv
LyBuYW1lIGVuZHMgd2l0aCBEZWF0aFRlc3QgYXJlIHJ1biBmaXJzdC4KKworVEVTVChBRGVhdGhU
ZXN0LCBTaG91bGRSdW5GaXJzdCkgeworfQorCisjIGlmIEdURVNUX0hBU19UWVBFRF9URVNUCisK
Ky8vIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIHZlcmlmeSB0aGF0IHR5cGVkIHRlc3Rz
IHdob3NlIHRlc3QKKy8vIGNhc2UgbmFtZSBlbmRzIHdpdGggRGVhdGhUZXN0IGFyZSBydW4gZmly
c3QuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQVR5cGVkRGVhdGhUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKwordHlwZWRlZiB0ZXN0aW5nOjpUeXBlczxpbnQsIGRv
dWJsZT4gTnVtZXJpY1R5cGVzOworVFlQRURfVEVTVF9DQVNFKEFUeXBlZERlYXRoVGVzdCwgTnVt
ZXJpY1R5cGVzKTsKKworVFlQRURfVEVTVChBVHlwZWREZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0
KSB7Cit9CisKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUCisKKyMgaWYgR1RFU1Rf
SEFTX1RZUEVEX1RFU1RfUAorCisKKy8vIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIHZl
cmlmeSB0aGF0IHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cworLy8gd2hvc2UgdGVzdCBjYXNlIG5h
bWUgZW5kcyB3aXRoIERlYXRoVGVzdCBhcmUgcnVuIGZpcnN0LgorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK2NsYXNzIEFUeXBlUGFyYW1EZWF0aFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
Cit9OworCitUWVBFRF9URVNUX0NBU0VfUChBVHlwZVBhcmFtRGVhdGhUZXN0KTsKKworVFlQRURf
VEVTVF9QKEFUeXBlUGFyYW1EZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0KSB7Cit9CisKK1JFR0lT
VEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEFUeXBlUGFyYW1EZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0
KTsKKworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEFUeXBlUGFyYW1EZWF0aFRl
c3QsIE51bWVyaWNUeXBlcyk7CisKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUX1AK
KworI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisvLyBUZXN0cyB2YXJpb3VzIGZh
aWx1cmUgY29uZGl0aW9ucyBvZgorLy8gRVhQRUNUX3ssTk9OfUZBVEFMX0ZBSUxVUkV7LF9PTl9B
TExfVEhSRUFEU30uCitjbGFzcyBFeHBlY3RGYWlsdXJlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKKyBwdWJsaWM6ICAvLyBNdXN0IGJlIHB1YmxpYyBhbmQgbm90IHByb3RlY3RlZCBkdWUg
dG8gYSBidWcgaW4gZysrIDMuNC4yLgorICBlbnVtIEZhaWx1cmVNb2RlIHsKKyAgICBGQVRBTF9G
QUlMVVJFLAorICAgIE5PTkZBVEFMX0ZBSUxVUkUKKyAgfTsKKyAgc3RhdGljIHZvaWQgQWRkRmFp
bHVyZShGYWlsdXJlTW9kZSBmYWlsdXJlKSB7CisgICAgaWYgKGZhaWx1cmUgPT0gRkFUQUxfRkFJ
TFVSRSkgeworICAgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7CisgICAg
fSBlbHNlIHsKKyAgICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWls
dXJlLiI7CisgICAgfQorICB9Cit9OworCitURVNUX0YoRXhwZWN0RmFpbHVyZVRlc3QsIEV4cGVj
dEZhdGFsRmFpbHVyZSkgeworICAvLyBFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLCBidXQgc3VjY2Vl
ZHMuCisgIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoU1VDQ0VFRCgpLCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKKyAgLy8gRXhw
ZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0IGdvdCBhIG5vbi1mYXRhbCBmYWlsdXJlLgorICBwcmlu
dGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFk
ZEZhaWx1cmUoTk9ORkFUQUxfRkFJTFVSRSksICJFeHBlY3RlZCBub24tZmF0YWwgIgorICAgICAg
ICAgICAgICAgICAgICAgICAiZmFpbHVyZS4iKTsKKyAgLy8gV3JvbmcgbWVzc2FnZS4KKyAgcHJp
bnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShB
ZGRGYWlsdXJlKEZBVEFMX0ZBSUxVUkUpLCAiU29tZSBvdGhlciBmYXRhbCBmYWlsdXJlICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkLiIpOworfQorCitURVNUX0YoRXhwZWN0RmFp
bHVyZVRlc3QsIEV4cGVjdE5vbkZhdGFsRmFpbHVyZSkgeworICAvLyBFeHBlY3RlZCBub24tZmF0
YWwgZmFpbHVyZSwgYnV0IHN1Y2NlZWRzLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJl
KVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKFNVQ0NFRUQoKSwgIkV4cGVjdGVkIG5v
bi1mYXRhbCBmYWlsdXJlLiIpOworICAvLyBFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSwgYnV0
IGdvdCBhIGZhdGFsIGZhaWx1cmUuCisgIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4i
KTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJFKSwg
IkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7CisgIC8vIFdyb25nIG1lc3NhZ2UuCisgIHByaW50
ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
QWRkRmFpbHVyZShOT05GQVRBTF9GQUlMVVJFKSwgIlNvbWUgb3RoZXIgbm9uLWZhdGFsICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgImZhaWx1cmUuIik7Cit9CisKKyNpZiBHVEVTVF9JU19U
SFJFQURTQUZFCisKK2NsYXNzIEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QgOiBwdWJsaWMg
RXhwZWN0RmFpbHVyZVRlc3QgeworIHByb3RlY3RlZDoKKyAgc3RhdGljIHZvaWQgQWRkRmFpbHVy
ZUluT3RoZXJUaHJlYWQoRmFpbHVyZU1vZGUgZmFpbHVyZSkgeworICAgIFRocmVhZFdpdGhQYXJh
bTxGYWlsdXJlTW9kZT4gdGhyZWFkKCZBZGRGYWlsdXJlLCBmYWlsdXJlLCBOVUxMKTsKKyAgICB0
aHJlYWQuSm9pbigpOworICB9Cit9OworCitURVNUX0YoRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRz
VGVzdCwgRXhwZWN0RmF0YWxGYWlsdXJlKSB7CisgIC8vIFdlIG9ubHkgaW50ZXJjZXB0IHRoZSBj
dXJyZW50IHRocmVhZC4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMpXG4iKTsKKyAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoRkFUQUxfRkFJTFVS
RSksCisgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOwor
fQorCitURVNUX0YoRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCwgRXhwZWN0Tm9uRmF0YWxG
YWlsdXJlKSB7CisgIC8vIFdlIG9ubHkgaW50ZXJjZXB0IHRoZSBjdXJyZW50IHRocmVhZC4KKyAg
cHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMpXG4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoQWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoTk9ORkFUQUxfRkFJTFVSRSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKK30KKwor
dHlwZWRlZiBFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0IFNjb3BlZEZha2VUZXN0UGFydFJl
c3VsdFJlcG9ydGVyVGVzdDsKKworLy8gVGVzdHMgdGhhdCB0aGUgU2NvcGVkRmFrZVRlc3RQYXJ0
UmVzdWx0UmVwb3J0ZXIgb25seSBjYXRjaGVzIGZhaWx1cmVzIGZyb20KKy8vIHRoZSBjdXJyZW50
IHRocmVhZCBpZiBpdCBpcyBpbnN0YW50aWF0ZWQgd2l0aCBJTlRFUkNFUFRfT05MWV9DVVJSRU5U
X1RIUkVBRC4KK1RFU1RfRihTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3QsIElu
dGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkKSB7CisgIHByaW50ZigiKGV4cGVjdGluZyAyIGZhaWx1
cmVzKVxuIik7CisgIFRlc3RQYXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsKKyAgeworICAgIFNjb3Bl
ZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyIHJlcG9ydGVyKAorICAgICAgICBTY29wZWRGYWtl
VGVzdFBhcnRSZXN1bHRSZXBvcnRlcjo6SU5URVJDRVBUX09OTFlfQ1VSUkVOVF9USFJFQUQsCisg
ICAgICAgICZyZXN1bHRzKTsKKyAgICBBZGRGYWlsdXJlSW5PdGhlclRocmVhZChGQVRBTF9GQUlM
VVJFKTsKKyAgICBBZGRGYWlsdXJlSW5PdGhlclRocmVhZChOT05GQVRBTF9GQUlMVVJFKTsKKyAg
fQorICAvLyBUaGUgdHdvIGZhaWx1cmVzIHNob3VsZCBub3QgaGF2ZSBiZWVuIGludGVyY2VwdGVk
LgorICBFWFBFQ1RfRVEoMCwgcmVzdWx0cy5zaXplKCkpIDw8ICJUaGlzIHNob3VsZG4ndCBmYWls
LiI7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFEU0FGRQorCitURVNUX0YoRXhwZWN0
RmFpbHVyZVRlc3QsIEV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcykgeworICAvLyBFeHBl
Y3RlZCBmYXRhbCBmYWlsdXJlLCBidXQgc3VjY2VlZHMuCisgIHByaW50ZigiKGV4cGVjdGluZyAx
IGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoU1VD
Q0VFRCgpLCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKKyAgLy8gRXhwZWN0ZWQgZmF0YWwg
ZmFpbHVyZSwgYnV0IGdvdCBhIG5vbi1mYXRhbCBmYWlsdXJlLgorICBwcmludGYoIihleHBlY3Rp
bmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURT
KEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJTFVSRSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKKyAgLy8gV3Jvbmcg
bWVzc2FnZS4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlKEZBVEFMX0ZBSUxVUkUpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU29tZSBvdGhlciBmYXRhbCBm
YWlsdXJlIGV4cGVjdGVkLiIpOworfQorCitURVNUX0YoRXhwZWN0RmFpbHVyZVRlc3QsIEV4cGVj
dE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcykgeworICAvLyBFeHBlY3RlZCBub24tZmF0YWwg
ZmFpbHVyZSwgYnV0IHN1Y2NlZWRzLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxu
Iik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKFNVQ0NFRUQoKSwg
IkV4cGVjdGVkIG5vbi1mYXRhbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJmYWlsdXJlLiIpOworICAvLyBFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSwgYnV0
IGdvdCBhIGZhdGFsIGZhaWx1cmUuCisgIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4i
KTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoQWRkRmFpbHVyZShG
QVRBTF9GQUlMVVJFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7CisgIC8vIFdyb25nIG1lc3NhZ2UuCisgIHByaW50
ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVf
T05fQUxMX1RIUkVBRFMoQWRkRmFpbHVyZShOT05GQVRBTF9GQUlMVVJFKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1
cmUuIik7Cit9CisKKworLy8gVHdvIHRlc3QgZW52aXJvbm1lbnRzIGZvciB0ZXN0aW5nIHRlc3Rp
bmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpLgorCitjbGFzcyBGb29FbnZpcm9ubWVudCA6
IHB1YmxpYyB0ZXN0aW5nOjpFbnZpcm9ubWVudCB7CisgcHVibGljOgorICB2aXJ0dWFsIHZvaWQg
U2V0VXAoKSB7CisgICAgcHJpbnRmKCIlcyIsICJGb29FbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxs
ZWQuXG4iKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBwcmludGYo
IiVzIiwgIkZvb0Vudmlyb25tZW50OjpUZWFyRG93bigpIGNhbGxlZC5cbiIpOworICAgIEZBSUwo
KSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOworICB9Cit9OworCitjbGFzcyBCYXJFbnZp
cm9ubWVudCA6IHB1YmxpYyB0ZXN0aW5nOjpFbnZpcm9ubWVudCB7CisgcHVibGljOgorICB2aXJ0
dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgcHJpbnRmKCIlcyIsICJCYXJFbnZpcm9ubWVudDo6U2V0
VXAoKSBjYWxsZWQuXG4iKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAg
ICBwcmludGYoIiVzIiwgIkJhckVudmlyb25tZW50OjpUZWFyRG93bigpIGNhbGxlZC5cbiIpOwor
ICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7CisgIH0K
K307CisKKy8vIFRoZSBtYWluIGZ1bmN0aW9uLgorLy8KKy8vIFRoZSBpZGVhIGlzIHRvIHVzZSBH
b29nbGUgVGVzdCB0byBydW4gYWxsIHRoZSB0ZXN0cyB3ZSBoYXZlIGRlZmluZWQgKHNvbWUKKy8v
IG9mIHRoZW0gYXJlIGludGVuZGVkIHRvIGZhaWwpLCBhbmQgdGhlbiBjb21wYXJlIHRoZSB0ZXN0
IHJlc3VsdHMKKy8vIHdpdGggdGhlICJnb2xkZW4iIGZpbGUuCitpbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqKmFyZ3YpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhwcmludF90aW1lKSA9IGZhbHNl
OworCisgIC8vIFdlIGp1c3QgcnVuIHRoZSB0ZXN0cywga25vd2luZyBzb21lIG9mIHRoZW0gYXJl
IGludGVuZGVkIHRvIGZhaWwuCisgIC8vIFdlIHdpbGwgdXNlIGEgc2VwYXJhdGUgUHl0aG9uIHNj
cmlwdCB0byBjb21wYXJlIHRoZSBvdXRwdXQgb2YKKyAgLy8gdGhpcyBwcm9ncmFtIHdpdGggdGhl
IGdvbGRlbiBmaWxlLgorCisgIC8vIEl0J3MgaGFyZCB0byB0ZXN0IEluaXRHb29nbGVUZXN0KCkg
ZGlyZWN0bHksIGFzIGl0IGhhcyBtYW55CisgIC8vIGdsb2JhbCBzaWRlIGVmZmVjdHMuICBUaGUg
Zm9sbG93aW5nIGxpbmUgc2VydmVzIGFzIGEgc2FuaXR5IHRlc3QKKyAgLy8gZm9yIGl0LgorICB0
ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIGJvb2wgaW50ZXJuYWxfc2tp
cF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzID0KKyAgICAgIHN0ZDo6Y291bnQoYXJndiwg
YXJndiArIGFyZ2MsCisgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKCJpbnRlcm5hbF9za2lw
X2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMiKSkgPiAwOworCisjaWYgR1RFU1RfSEFTX0RF
QVRIX1RFU1QKKyAgaWYgKHRlc3Rpbmc6OmludGVybmFsOjpHVEVTVF9GTEFHKGludGVybmFsX3J1
bl9kZWF0aF90ZXN0KSAhPSAiIikgeworICAgIC8vIFNraXAgdGhlIHVzdWFsIG91dHB1dCBjYXB0
dXJpbmcgaWYgd2UncmUgcnVubmluZyBhcyB0aGUgY2hpbGQKKyAgICAvLyBwcm9jZXNzIG9mIGFu
IHRocmVhZHNhZmUtc3R5bGUgZGVhdGggdGVzdC4KKyMgaWYgR1RFU1RfT1NfV0lORE9XUworICAg
IHBvc2l4OjpGUmVvcGVuKCJudWw6IiwgInciLCBzdGRvdXQpOworIyBlbHNlCisgICAgcG9zaXg6
OkZSZW9wZW4oIi9kZXYvbnVsbCIsICJ3Iiwgc3Rkb3V0KTsKKyMgZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKKyAgICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworICB9CisjZW5kaWYgIC8vIEdU
RVNUX0hBU19ERUFUSF9URVNUCisKKyAgaWYgKGludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5k
X2FkX2hvY190ZXN0cykKKyAgICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworCisgIC8vIFJlZ2lz
dGVycyB0d28gZ2xvYmFsIHRlc3QgZW52aXJvbm1lbnRzLgorICAvLyBUaGUgZ29sZGVuIGZpbGUg
dmVyaWZpZXMgdGhhdCB0aGV5IGFyZSBzZXQgdXAgaW4gdGhlIG9yZGVyIHRoZXkKKyAgLy8gYXJl
IHJlZ2lzdGVyZWQsIGFuZCB0b3JuIGRvd24gaW4gdGhlIHJldmVyc2Ugb3JkZXIuCisgIHRlc3Rp
bmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgRm9vRW52aXJvbm1lbnQpOworICB0ZXN0
aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEJhckVudmlyb25tZW50KTsKKyNpZiBf
TVNDX1ZFUgorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkgIC8vICA0MTI3Cisj
ZW5kaWYgIC8vIC4gX01TQ19WRVIgICAgCisgIHJldHVybiBSdW5BbGxUZXN0cygpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRl
c3QtaW52YWxpZC1uYW1lMS10ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
b29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMS10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJh
MDg0NzdhNzdlYmRmMGFhNTVmMjM0NDRhYmQ2YjgzOWQ5MGJhNDMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZh
bGlkLW5hbWUxLXRlc3QucHkKQEAgLTAsMCArMSw2MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
CisjCisjIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24u
CisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisiIiJWZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IHdhcm5zIHRo
ZSB1c2VyIHdoZW4gbm90IGluaXRpYWxpemVkIHByb3Blcmx5LiIiIgorCitpbXBvcnQgZ3Rlc3Rf
dGVzdF91dGlscworCitiaW5hcnlfbmFtZSA9ICdnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxp
ZC1uYW1lMS10ZXN0XycKK0NPTU1BTkQgPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRh
YmxlUGF0aChiaW5hcnlfbmFtZSkKKworCitkZWYgQXNzZXJ0KGNvbmRpdGlvbik6CisgIGlmIG5v
dCBjb25kaXRpb246CisgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKKworCitkZWYgVGVzdEV4aXRD
b2RlQW5kT3V0cHV0KGNvbW1hbmQpOgorICAiIiJSdW5zIHRoZSBnaXZlbiBjb21tYW5kIGFuZCB2
ZXJpZmllcyBpdHMgZXhpdCBjb2RlIGFuZCBvdXRwdXQuIiIiCisKKyAgZXJyID0gKCdQYXJhbWV0
ZXJpemVkIHRlc3QgbmFtZSBcJyJJbnZhbGlkV2l0aFF1b3RlcyJcJyBpcyBpbnZhbGlkJykKKwor
ICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCisgIEFzc2VydChwLnRl
cm1pbmF0ZWRfYnlfc2lnbmFsKQorCisgICMgVmVyaWZ5IHRoZSBvdXRwdXQgbWVzc2FnZSBjb250
YWlucyBhcHByb3ByaWF0ZSBvdXRwdXQKKyAgQXNzZXJ0KGVyciBpbiBwLm91dHB1dCkKKworCitj
bGFzcyBHVGVzdFBhcmFtVGVzdEludmFsaWROYW1lMVRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0
Q2FzZSk6CisKKyAgZGVmIHRlc3RFeGl0Q29kZUFuZE91dHB1dChzZWxmKToKKyAgICBUZXN0RXhp
dENvZGVBbmRPdXRwdXQoQ09NTUFORCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgor
ICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMS10ZXN0Xy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFs
aWQtbmFtZTEtdGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE5NTE1NWIyM2E3ODcxZGI1ZDI1NDlhMGU5
ZjkwNTA3NWE5Mzk5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdF8uY2MKQEAgLTAs
MCArMSw1MCBAQAorLy8gQ29weXJpZ2h0IDIwMTUsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0Ogor
Ly8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisv
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworY2xhc3MgRHVtbXlU
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBjaGFyICo+IHt9Owor
CitURVNUX1AoRHVtbXlUZXN0LCBEdW1teSkgeworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0Vf
UChJbnZhbGlkVGVzdE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBEdW1teVRlc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygiSW52YWxpZFdpdGhRdW90
ZXMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZ1Bh
cmFtTmFtZSgpKTsKKworfSAgLy8gbmFtZXNwYWNlCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFy
ICphcmd2W10pIHsKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICBy
ZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRlc3QucHkg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZh
bGlkLW5hbWUyLXRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWI4MzhmNDYzMjI5MWQxY2I3OGU0YTExZWMz
YWIwYzc3M2I5NGQ1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTItdGVzdC5weQpAQCAtMCww
ICsxLDYyIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMTUgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlZl
cmlmaWVzIHRoYXQgR29vZ2xlIFRlc3Qgd2FybnMgdGhlIHVzZXIgd2hlbiBub3QgaW5pdGlhbGl6
ZWQgcHJvcGVybHkuIiIiCisKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKK2JpbmFyeV9uYW1l
ID0gJ2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRlc3RfJworQ09NTUFORCA9
IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKGJpbmFyeV9uYW1lKQorCisK
K2RlZiBBc3NlcnQoY29uZGl0aW9uKToKKyAgaWYgbm90IGNvbmRpdGlvbjoKKyAgICByYWlzZSBB
c3NlcnRpb25FcnJvcgorCisKK2RlZiBUZXN0RXhpdENvZGVBbmRPdXRwdXQoY29tbWFuZCk6Cisg
ICIiIlJ1bnMgdGhlIGdpdmVuIGNvbW1hbmQgYW5kIHZlcmlmaWVzIGl0cyBleGl0IGNvZGUgYW5k
IG91dHB1dC4iIiIKKworICBlcnIgPSAoJ0R1cGxpY2F0ZSBwYXJhbWV0ZXJpemVkIHRlc3QgbmFt
ZSBcJ2FcJycpCisKKyAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kKQor
ICBBc3NlcnQocC50ZXJtaW5hdGVkX2J5X3NpZ25hbCkKKworICAjIENoZWNrIGZvciBhcHByb3By
aWF0ZSBvdXRwdXQKKyAgQXNzZXJ0KGVyciBpbiBwLm91dHB1dCkKKworCitjbGFzcyBHVGVzdFBh
cmFtVGVzdEludmFsaWROYW1lMlRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisKKyAg
ZGVmIHRlc3RFeGl0Q29kZUFuZE91dHB1dChzZWxmKToKKyAgICBUZXN0RXhpdENvZGVBbmRPdXRw
dXQoQ09NTUFORCkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rlc3RfdGVzdF91
dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTItdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRlc3Rf
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVmMDkzNDkwZTlkYTJmMDJlZDI4YTJkMDcxMjQ0NWUyNDE3Y2JkYTMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRlc3RfLmNjCkBAIC0wLDAgKzEsNTUgQEAKKy8v
IENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
CisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlz
dHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
Ly8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsKK2NsYXNzIER1bW15VGVzdCA6IHB1YmxpYyA6
OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08Y29uc3QgY2hhciAqPiB7fTsKKworc3RkOjpzdHJpbmcg
U3RyaW5nUGFyYW1UZXN0U3VmZml4KAorICAgIGNvbnN0IHRlc3Rpbmc6OlRlc3RQYXJhbUluZm88
Y29uc3QgY2hhcio+JiBpbmZvKSB7CisgIHJldHVybiBzdGQ6OnN0cmluZyhpbmZvLnBhcmFtKTsK
K30KKworVEVTVF9QKER1bW15VGVzdCwgRHVtbXkpIHsKK30KKworSU5TVEFOVElBVEVfVEVTVF9D
QVNFX1AoRHVwbGljYXRlVGVzdE5hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgRHVtbXlU
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMoImEiLCAiYiIs
ICJhIiwgImMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ1BhcmFtVGVzdFN1ZmZp
eCk7Cit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkg
eworICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIHJldHVybiBSVU5f
QUxMX1RFU1RTKCk7Cit9CisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc4OWNh
YjI3MDc0MTRjNDY0ODQ5NmQ3YjlmYmFiNGZlNTMxZjBiNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MK
QEAgLTAsMCArMSwxMTA5IEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisv
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKy8vCisvLyBUZXN0cyBmb3IgR29vZ2xlIFRlc3QgaXRzZWxmLiBUaGlzIGZpbGUg
dmVyaWZpZXMgdGhhdCB0aGUgcGFyYW1ldGVyCisvLyBnZW5lcmF0b3JzIG9iamVjdHMgcHJvZHVj
ZSBjb3JyZWN0IHBhcmFtZXRlciBzZXF1ZW5jZXMgYW5kIHRoYXQKKy8vIEdvb2dsZSBUZXN0IHJ1
bnRpbWUgaW5zdGFudGlhdGVzIGNvcnJlY3QgdGVzdHMgZnJvbSB0aG9zZSBzZXF1ZW5jZXMuCisK
KyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisjIGluY2x1ZGUgPGFsZ29yaXRobT4KKyMgaW5j
bHVkZSA8aW9zdHJlYW0+CisjIGluY2x1ZGUgPGxpc3Q+CisjIGluY2x1ZGUgPHNzdHJlYW0+Cisj
IGluY2x1ZGUgPHN0cmluZz4KKyMgaW5jbHVkZSA8dmVjdG9yPgorCisjIGluY2x1ZGUgInNyYy9n
dGVzdC1pbnRlcm5hbC1pbmwuaCIgIC8vIGZvciBVbml0VGVzdE9wdGlvbnMKKyMgaW5jbHVkZSAi
dGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5oIgorCit1c2luZyA6OnN0ZDo6dmVjdG9y
OwordXNpbmcgOjpzdGQ6OnNvcnQ7CisKK3VzaW5nIDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVu
dmlyb25tZW50OwordXNpbmcgOjp0ZXN0aW5nOjpCb29sOwordXNpbmcgOjp0ZXN0aW5nOjpNZXNz
YWdlOwordXNpbmcgOjp0ZXN0aW5nOjpSYW5nZTsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdFdpdGhQ
YXJhbTsKK3VzaW5nIDo6dGVzdGluZzo6VmFsdWVzOwordXNpbmcgOjp0ZXN0aW5nOjpWYWx1ZXNJ
bjsKKworIyBpZiBHVEVTVF9IQVNfQ09NQklORQordXNpbmcgOjp0ZXN0aW5nOjpDb21iaW5lOwor
dXNpbmcgOjp0ZXN0aW5nOjpnZXQ7Cit1c2luZyA6OnRlc3Rpbmc6Om1ha2VfdHVwbGU7Cit1c2lu
ZyA6OnRlc3Rpbmc6OnR1cGxlOworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKKwordXNp
bmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I7Cit1c2luZyA6OnRlc3Rpbmc6
OmludGVybmFsOjpVbml0VGVzdE9wdGlvbnM7CisKKy8vIFByaW50cyBhIHZhbHVlIHRvIGEgc3Ry
aW5nLgorLy8KKy8vIEZJWE1FOiByZW1vdmUgUHJpbnRWYWx1ZSgpIHdoZW4gd2UgbW92ZSBtYXRj
aGVycyBhbmQKKy8vIEVYUEVDVF9USEFUKCkgZnJvbSBHb29nbGUgTW9jayB0byBHb29nbGUgVGVz
dC4gIEF0IHRoYXQgdGltZSwgd2UKKy8vIGNhbiB3cml0ZSBFWFBFQ1RfVEhBVCh4LCBFcSh5KSkg
dG8gY29tcGFyZSB0d28gdHVwbGVzIHggYW5kIHksIGFzCisvLyBFWFBFQ1RfVEhBVCgpIGFuZCB0
aGUgbWF0Y2hlcnMga25vdyBob3cgdG8gcHJpbnQgdHVwbGVzLgordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Cis6OnN0ZDo6c3RyaW5nIFByaW50VmFsdWUoY29uc3QgVCYgdmFsdWUpIHsKKyAgOjpzdGQ6
OnN0cmluZ3N0cmVhbSBzdHJlYW07CisgIHN0cmVhbSA8PCB2YWx1ZTsKKyAgcmV0dXJuIHN0cmVh
bS5zdHIoKTsKK30KKworIyBpZiBHVEVTVF9IQVNfQ09NQklORQorCisvLyBUaGVzZSBvdmVybG9h
ZHMgYWxsb3cgcHJpbnRpbmcgdHVwbGVzIGluIG91ciB0ZXN0cy4gIFdlIGNhbm5vdAorLy8gZGVm
aW5lIGFuIG9wZXJhdG9yPDwgZm9yIHR1cGxlcywgYXMgdGhhdCBkZWZpbml0aW9uIG5lZWRzIHRv
IGJlIGluCisvLyB0aGUgc3RkIG5hbWVzcGFjZSBpbiBvcmRlciB0byBiZSBwaWNrZWQgdXAgYnkg
R29vZ2xlIFRlc3QgdmlhCisvLyBBcmd1bWVudC1EZXBlbmRlbnQgTG9va3VwLCB5ZXQgZGVmaW5p
bmcgYW55dGhpbmcgaW4gdGhlIHN0ZAorLy8gbmFtZXNwYWNlIGluIG5vbi1TVEwgY29kZSBpcyB1
bmRlZmluZWQgYmVoYXZpb3IuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+
Cis6OnN0ZDo6c3RyaW5nIFByaW50VmFsdWUoY29uc3QgdHVwbGU8VDEsIFQyPiYgdmFsdWUpIHsK
KyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07CisgIHN0cmVhbSA8PCAiKCIgPDwgZ2V0PDA+
KHZhbHVlKSA8PCAiLCAiIDw8IGdldDwxPih2YWx1ZSkgPDwgIikiOworICByZXR1cm4gc3RyZWFt
LnN0cigpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMz4KKzo6c3RkOjpzdHJpbmcgUHJpbnRWYWx1ZShjb25zdCB0dXBsZTxUMSwgVDIsIFQzPiYg
dmFsdWUpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07CisgIHN0cmVhbSA8PCAiKCIg
PDwgZ2V0PDA+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDwxPih2YWx1ZSkKKyAgICAgICAgIDw8ICIs
ICI8PCBnZXQ8Mj4odmFsdWUpIDw8ICIpIjsKKyAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5
cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgorOjpzdGQ6OnN0cmluZyBQcmlu
dFZhbHVlKAorICAgIGNvbnN0IHR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksIFQxMD4mIHZhbHVlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOworICBzdHJl
YW0gPDwgIigiIDw8IGdldDwwPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8MT4odmFsdWUpCisgICAg
ICAgICA8PCAiLCAiPDwgZ2V0PDI+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDwzPih2YWx1ZSkKKyAg
ICAgICAgIDw8ICIsICI8PCBnZXQ8ND4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDU+KHZhbHVlKQor
ICAgICAgICAgPDwgIiwgIjw8IGdldDw2Pih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8Nz4odmFsdWUp
CisgICAgICAgICA8PCAiLCAiPDwgZ2V0PDg+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDw5Pih2YWx1
ZSkgPDwgIikiOworICByZXR1cm4gc3RyZWFtLnN0cigpOworfQorCisjIGVuZGlmICAvLyBHVEVT
VF9IQVNfQ09NQklORQorCisvLyBWZXJpZmllcyB0aGF0IGEgc2VxdWVuY2UgZ2VuZXJhdGVkIGJ5
IHRoZSBnZW5lcmF0b3IgYW5kIGFjY2Vzc2VkCisvLyB2aWEgdGhlIGl0ZXJhdG9yIG9iamVjdCBt
YXRjaGVzIHRoZSBleHBlY3RlZCBvbmUgdXNpbmcgR29vZ2xlIFRlc3QKKy8vIGFzc2VydGlvbnMu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+Cit2b2lkIFZlcmlmeUdlbmVyYXRvcihj
b25zdCBQYXJhbUdlbmVyYXRvcjxUPiYgZ2VuZXJhdG9yLAorICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVCAoJmV4cGVjdGVkX3ZhbHVlcylbTl0pIHsKKyAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0
b3I8VD46Oml0ZXJhdG9yIGl0ID0gZ2VuZXJhdG9yLmJlZ2luKCk7CisgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgTjsgKytpKSB7CisgICAgQVNTRVJUX0ZBTFNFKGl0ID09IGdlbmVyYXRvci5lbmQo
KSkKKyAgICAgICAgPDwgIkF0IGVsZW1lbnQgIiA8PCBpIDw8ICIgd2hlbiBhY2Nlc3Npbmcgdmlh
IGFuIGl0ZXJhdG9yICIKKyAgICAgICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1
Y3Rvci5cbiI7CisgICAgLy8gV2UgY2Fubm90IHVzZSBFWFBFQ1RfRVEoKSBoZXJlIGFzIHRoZSB2
YWx1ZXMgbWF5IGJlIHR1cGxlcywKKyAgICAvLyB3aGljaCBkb24ndCBzdXBwb3J0IDw8LgorICAg
IEVYUEVDVF9UUlVFKGV4cGVjdGVkX3ZhbHVlc1tpXSA9PSAqaXQpCisgICAgICAgIDw8ICJ3aGVy
ZSBpIGlzICIgPDwgaQorICAgICAgICA8PCAiLCBleHBlY3RlZF92YWx1ZXNbaV0gaXMgIiA8PCBQ
cmludFZhbHVlKGV4cGVjdGVkX3ZhbHVlc1tpXSkKKyAgICAgICAgPDwgIiwgKml0IGlzICIgPDwg
UHJpbnRWYWx1ZSgqaXQpCisgICAgICAgIDw8ICIsIGFuZCAnaXQnIGlzIGFuIGl0ZXJhdG9yIGNy
ZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rvci5cbiI7CisgICAgKytpdDsKKyAgfQorICBF
WFBFQ1RfVFJVRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpCisgICAgICAgIDw8ICJBdCB0aGUgcHJl
c3VtZWQgZW5kIG9mIHNlcXVlbmNlIHdoZW4gYWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRvciAiCisg
ICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhlIGNvcHkgY29uc3RydWN0b3IuXG4iOworCisgIC8v
IFRlc3QgdGhlIGl0ZXJhdG9yIGFzc2lnbm1lbnQuIFRoZSBmb2xsb3dpbmcgbGluZXMgdmVyaWZ5
IHRoYXQKKyAgLy8gdGhlIHNlcXVlbmNlIGFjY2Vzc2VkIHZpYSBhbiBpdGVyYXRvciBpbml0aWFs
aXplZCB2aWEgdGhlCisgIC8vIGFzc2lnbm1lbnQgb3BlcmF0b3IgKGFzIG9wcG9zZWQgdG8gYSBj
b3B5IGNvbnN0cnVjdG9yKSBtYXRjaGVzCisgIC8vIGp1c3QgdGhlIHNhbWUuCisgIGl0ID0gZ2Vu
ZXJhdG9yLmJlZ2luKCk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgTjsgKytpKSB7CisgICAg
QVNTRVJUX0ZBTFNFKGl0ID09IGdlbmVyYXRvci5lbmQoKSkKKyAgICAgICAgPDwgIkF0IGVsZW1l
bnQgIiA8PCBpIDw8ICIgd2hlbiBhY2Nlc3NpbmcgdmlhIGFuIGl0ZXJhdG9yICIKKyAgICAgICAg
PDwgImNyZWF0ZWQgd2l0aCB0aGUgYXNzaWdubWVudCBvcGVyYXRvci5cbiI7CisgICAgRVhQRUNU
X1RSVUUoZXhwZWN0ZWRfdmFsdWVzW2ldID09ICppdCkKKyAgICAgICAgPDwgIndoZXJlIGkgaXMg
IiA8PCBpCisgICAgICAgIDw8ICIsIGV4cGVjdGVkX3ZhbHVlc1tpXSBpcyAiIDw8IFByaW50VmFs
dWUoZXhwZWN0ZWRfdmFsdWVzW2ldKQorICAgICAgICA8PCAiLCAqaXQgaXMgIiA8PCBQcmludFZh
bHVlKCppdCkKKyAgICAgICAgPDwgIiwgYW5kICdpdCcgaXMgYW4gaXRlcmF0b3IgY3JlYXRlZCB3
aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9yLlxuIjsKKyAgICArK2l0OworICB9CisgIEVYUEVDVF9U
UlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSkKKyAgICAgICAgPDwgIkF0IHRoZSBwcmVzdW1lZCBl
bmQgb2Ygc2VxdWVuY2Ugd2hlbiBhY2Nlc3NpbmcgdmlhIGFuIGl0ZXJhdG9yICIKKyAgICAgICAg
PDwgImNyZWF0ZWQgd2l0aCB0aGUgYXNzaWdubWVudCBvcGVyYXRvci5cbiI7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgordm9pZCBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGNvbnN0IFBhcmFt
R2VuZXJhdG9yPFQ+JiBnZW5lcmF0b3IpIHsKKyAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VD46
Oml0ZXJhdG9yIGl0ID0gZ2VuZXJhdG9yLmJlZ2luKCk7CisgIEVYUEVDVF9UUlVFKGl0ID09IGdl
bmVyYXRvci5lbmQoKSk7CisKKyAgaXQgPSBnZW5lcmF0b3IuYmVnaW4oKTsKKyAgRVhQRUNUX1RS
VUUoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKTsKK30KKworLy8gR2VuZXJhdG9yIHRlc3RzLiBUaGV5
IHRlc3QgdGhhdCBlYWNoIG9mIHRoZSBwcm92aWRlZCBnZW5lcmF0b3IgZnVuY3Rpb25zCisvLyBn
ZW5lcmF0ZXMgYW4gZXhwZWN0ZWQgc2VxdWVuY2Ugb2YgdmFsdWVzLiBUaGUgZ2VuZXJhbCB0ZXN0
IHBhdHRlcm4KKy8vIGluc3RhbnRpYXRlcyBhIGdlbmVyYXRvciB1c2luZyBvbmUgb2YgdGhlIGdl
bmVyYXRvciBmdW5jdGlvbnMsCisvLyBjaGVja3MgdGhlIHNlcXVlbmNlIHByb2R1Y2VkIGJ5IHRo
ZSBnZW5lcmF0b3IgdXNpbmcgaXRzIGl0ZXJhdG9yIEFQSSwKKy8vIGFuZCB0aGVuIHJlc2V0cyB0
aGUgaXRlcmF0b3IgYmFjayB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZXF1ZW5jZQorLy8gYW5k
IGNoZWNrcyB0aGUgc2VxdWVuY2UgYWdhaW4uCisKKy8vIFRlc3RzIHRoYXQgaXRlcmF0b3JzIHBy
b2R1Y2VkIGJ5IGdlbmVyYXRvciBmdW5jdGlvbnMgY29uZm9ybSB0byB0aGUKKy8vIEZvcndhcmRJ
dGVyYXRvciBjb25jZXB0LgorVEVTVChJdGVyYXRvclRlc3QsIFBhcmFtSXRlcmF0b3JDb25mb3Jt
c1RvRm9yd2FyZEl0ZXJhdG9yQ29uY2VwdCkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+
IGdlbiA9IFJhbmdlKDAsIDEwKTsKKyAgUGFyYW1HZW5lcmF0b3I8aW50Pjo6aXRlcmF0b3IgaXQg
PSBnZW4uYmVnaW4oKTsKKworICAvLyBWZXJpZmllcyB0aGF0IGl0ZXJhdG9yIGluaXRpYWxpemF0
aW9uIHdvcmtzIGFzIGV4cGVjdGVkLgorICBQYXJhbUdlbmVyYXRvcjxpbnQ+OjppdGVyYXRvciBp
dDIgPSBpdDsKKyAgRVhQRUNUX1RSVUUoKml0ID09ICppdDIpIDw8ICJJbml0aWFsaXplZCBpdGVy
YXRvcnMgbXVzdCBwb2ludCB0byB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
ImVsZW1lbnQgc2FtZSBhcyBpdHMgc291cmNlIHBvaW50cyB0byI7CisKKyAgLy8gVmVyaWZpZXMg
dGhhdCBpdGVyYXRvciBhc3NpZ25tZW50IHdvcmtzIGFzIGV4cGVjdGVkLgorICArK2l0OworICBF
WFBFQ1RfRkFMU0UoKml0ID09ICppdDIpOworICBpdDIgPSBpdDsKKyAgRVhQRUNUX1RSVUUoKml0
ID09ICppdDIpIDw8ICJBc3NpZ25lZCBpdGVyYXRvcnMgbXVzdCBwb2ludCB0byB0aGUgIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgImVsZW1lbnQgc2FtZSBhcyBpdHMgc291cmNlIHBv
aW50cyB0byI7CisKKyAgLy8gVmVyaWZpZXMgdGhhdCBwcmVmaXggb3BlcmF0b3IrKygpIHJldHVy
bnMgKnRoaXMuCisgIEVYUEVDVF9FUSgmaXQsICYoKytpdCkpIDw8ICJSZXN1bHQgb2YgdGhlIHBy
ZWZpeCBvcGVyYXRvcisrIG11c3QgYmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAi
cmVmZXIgdG8gdGhlIG9yaWdpbmFsIG9iamVjdCI7CisKKyAgLy8gVmVyaWZpZXMgdGhhdCB0aGUg
cmVzdWx0IG9mIHRoZSBwb3N0Zml4IG9wZXJhdG9yKysgcG9pbnRzIHRvIHRoZSB2YWx1ZQorICAv
LyBwb2ludGVkIHRvIGJ5IHRoZSBvcmlnaW5hbCBpdGVyYXRvci4KKyAgaW50IG9yaWdpbmFsX3Zh
bHVlID0gKml0OyAgLy8gSGF2ZSB0byBjb21wdXRlIGl0IG91dHNpZGUgb2YgbWFjcm8gY2FsbCB0
byBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1bmFmZmVjdGVkIGJ5IHRoZSBw
YXJhbWV0ZXIgZXZhbHVhdGlvbiBvcmRlci4KKyAgRVhQRUNUX0VRKG9yaWdpbmFsX3ZhbHVlLCAq
KGl0KyspKTsKKworICAvLyBWZXJpZmllcyB0aGF0IHByZWZpeCBhbmQgcG9zdGZpeCBvcGVyYXRv
cisrKCkgYWR2YW5jZSBhbiBpdGVyYXRvcgorICAvLyBhbGwgdGhlIHNhbWUuCisgIGl0MiA9IGl0
OworICArK2l0OworICArK2l0MjsKKyAgRVhQRUNUX1RSVUUoKml0ID09ICppdDIpOworfQorCisv
LyBUZXN0cyB0aGF0IFJhbmdlKCkgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RF
U1QoUmFuZ2VUZXN0LCBJbnRSYW5nZVdpdGhEZWZhdWx0U3RlcCkgeworICBjb25zdCBQYXJhbUdl
bmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDMpOworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFs
dWVzW10gPSB7MCwgMSwgMn07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVl
cyk7Cit9CisKKy8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBSYW5nZSgpIGdlbmVyYXRlcyB0aGUg
c2luZ2xlIGVsZW1lbnQgc2VxdWVuY2UKKy8vIGFzIGV4cGVjdGVkIHdoZW4gcHJvdmlkZWQgd2l0
aCByYW5nZSBsaW1pdHMgdGhhdCBhcmUgZXF1YWwuCitURVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VT
aW5nbGVWYWx1ZSkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAs
IDEpOworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MH07CisgIFZlcmlmeUdlbmVy
YXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhh
dCBSYW5nZSgpIHdpdGggZ2VuZXJhdGVzIGVtcHR5IHNlcXVlbmNlIHdoZW4KKy8vIHN1cHBsaWVk
IHdpdGggYW4gZW1wdHkgcmFuZ2UuCitURVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VFbXB0eSkgewor
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDApOworICBWZXJpZnlH
ZW5lcmF0b3JJc0VtcHR5KGdlbik7Cit9CisKKy8vIFRlc3RzIHRoYXQgUmFuZ2UoKSB3aXRoIGN1
c3RvbSBzdGVwIChncmVhdGVyIHRoZW4gb25lKSBnZW5lcmF0ZXMKKy8vIHRoZSBleHBlY3RlZCBz
ZXF1ZW5jZS4KK1RFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZVdpdGhDdXN0b21TdGVwKSB7CisgIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgOSwgMyk7CisgIGNvbnN0IGlu
dCBleHBlY3RlZF92YWx1ZXNbXSA9IHswLCAzLCA2fTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwg
ZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gVGVzdHMgdGhhdCBSYW5nZSgpIHdpdGggY3VzdG9t
IHN0ZXAgKGdyZWF0ZXIgdGhlbiBvbmUpIGdlbmVyYXRlcworLy8gdGhlIGV4cGVjdGVkIHNlcXVl
bmNlIHdoZW4gdGhlIGxhc3QgZWxlbWVudCBkb2VzIG5vdCBmYWxsIG9uIHRoZQorLy8gdXBwZXIg
cmFuZ2UgbGltaXQuIFNlcXVlbmNlcyBnZW5lcmF0ZWQgYnkgUmFuZ2UoKSBtdXN0IG5vdCBoYXZl
CisvLyBlbGVtZW50cyBiZXlvbmQgdGhlIHJhbmdlIGxpbWl0cy4KK1RFU1QoUmFuZ2VUZXN0LCBJ
bnRSYW5nZVdpdGhDdXN0b21TdGVwT3ZlclVwcGVyQm91bmQpIHsKKyAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCA0LCAzKTsKKyAgY29uc3QgaW50IGV4cGVjdGVkX3Zh
bHVlc1tdID0gezAsIDN9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMp
OworfQorCisvLyBWZXJpZmllcyB0aGF0IFJhbmdlIHdvcmtzIHdpdGggdXNlci1kZWZpbmVkIHR5
cGVzIHRoYXQgZGVmaW5lCisvLyBjb3B5IGNvbnN0cnVjdG9yLCBvcGVyYXRvcj0oKSwgb3BlcmF0
b3IrKCksIGFuZCBvcGVyYXRvcjwoKS4KK2NsYXNzIERvZ0FkZGVyIHsKKyBwdWJsaWM6CisgIGV4
cGxpY2l0IERvZ0FkZGVyKGNvbnN0IGNoYXIqIGFfdmFsdWUpIDogdmFsdWVfKGFfdmFsdWUpIHt9
CisgIERvZ0FkZGVyKGNvbnN0IERvZ0FkZGVyJiBvdGhlcikgOiB2YWx1ZV8ob3RoZXIudmFsdWVf
LmNfc3RyKCkpIHt9CisKKyAgRG9nQWRkZXIgb3BlcmF0b3I9KGNvbnN0IERvZ0FkZGVyJiBvdGhl
cikgeworICAgIGlmICh0aGlzICE9ICZvdGhlcikKKyAgICAgIHZhbHVlXyA9IG90aGVyLnZhbHVl
XzsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKyAgRG9nQWRkZXIgb3BlcmF0b3IrKGNvbnN0IERv
Z0FkZGVyJiBvdGhlcikgY29uc3QgeworICAgIE1lc3NhZ2UgbXNnOworICAgIG1zZyA8PCB2YWx1
ZV8uY19zdHIoKSA8PCBvdGhlci52YWx1ZV8uY19zdHIoKTsKKyAgICByZXR1cm4gRG9nQWRkZXIo
bXNnLkdldFN0cmluZygpLmNfc3RyKCkpOworICB9CisgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IERv
Z0FkZGVyJiBvdGhlcikgY29uc3QgeworICAgIHJldHVybiB2YWx1ZV8gPCBvdGhlci52YWx1ZV87
CisgIH0KKyAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVf
OyB9CisKKyBwcml2YXRlOgorICBzdGQ6OnN0cmluZyB2YWx1ZV87Cit9OworCitURVNUKFJhbmdl
VGVzdCwgV29ya3NXaXRoQUN1c3RvbVR5cGUpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8RG9n
QWRkZXI+IGdlbiA9CisgICAgICBSYW5nZShEb2dBZGRlcigiY2F0IiksIERvZ0FkZGVyKCJjYXRk
b2dkb2ciKSwgRG9nQWRkZXIoImRvZyIpKTsKKyAgUGFyYW1HZW5lcmF0b3I8RG9nQWRkZXI+Ojpp
dGVyYXRvciBpdCA9IGdlbi5iZWdpbigpOworCisgIEFTU0VSVF9GQUxTRShpdCA9PSBnZW4uZW5k
KCkpOworICBFWFBFQ1RfU1RSRVEoImNhdCIsIGl0LT52YWx1ZSgpLmNfc3RyKCkpOworCisgIEFT
U0VSVF9GQUxTRSgrK2l0ID09IGdlbi5lbmQoKSk7CisgIEVYUEVDVF9TVFJFUSgiY2F0ZG9nIiwg
aXQtPnZhbHVlKCkuY19zdHIoKSk7CisKKyAgRVhQRUNUX1RSVUUoKytpdCA9PSBnZW4uZW5kKCkp
OworfQorCitjbGFzcyBJbnRXcmFwcGVyIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEludFdyYXBw
ZXIoaW50IGFfdmFsdWUpIDogdmFsdWVfKGFfdmFsdWUpIHt9CisgIEludFdyYXBwZXIoY29uc3Qg
SW50V3JhcHBlciYgb3RoZXIpIDogdmFsdWVfKG90aGVyLnZhbHVlXykge30KKworICBJbnRXcmFw
cGVyIG9wZXJhdG9yPShjb25zdCBJbnRXcmFwcGVyJiBvdGhlcikgeworICAgIHZhbHVlXyA9IG90
aGVyLnZhbHVlXzsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKyAgLy8gb3BlcmF0b3IrKCkgYWRk
cyBhIGRpZmZlcmVudCB0eXBlLgorICBJbnRXcmFwcGVyIG9wZXJhdG9yKyhpbnQgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIEludFdyYXBwZXIodmFsdWVfICsgb3RoZXIpOyB9CisgIGJvb2wgb3BlcmF0
b3I8KGNvbnN0IEludFdyYXBwZXImIG90aGVyKSBjb25zdCB7CisgICAgcmV0dXJuIHZhbHVlXyA8
IG90aGVyLnZhbHVlXzsKKyAgfQorICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87
IH0KKworIHByaXZhdGU6CisgIGludCB2YWx1ZV87Cit9OworCitURVNUKFJhbmdlVGVzdCwgV29y
a3NXaXRoQUN1c3RvbVR5cGVXaXRoRGlmZmVyZW50SW5jcmVtZW50VHlwZSkgeworICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxJbnRXcmFwcGVyPiBnZW4gPSBSYW5nZShJbnRXcmFwcGVyKDApLCBJbnRX
cmFwcGVyKDIpKTsKKyAgUGFyYW1HZW5lcmF0b3I8SW50V3JhcHBlcj46Oml0ZXJhdG9yIGl0ID0g
Z2VuLmJlZ2luKCk7CisKKyAgQVNTRVJUX0ZBTFNFKGl0ID09IGdlbi5lbmQoKSk7CisgIEVYUEVD
VF9FUSgwLCBpdC0+dmFsdWUoKSk7CisKKyAgQVNTRVJUX0ZBTFNFKCsraXQgPT0gZ2VuLmVuZCgp
KTsKKyAgRVhQRUNUX0VRKDEsIGl0LT52YWx1ZSgpKTsKKworICBFWFBFQ1RfVFJVRSgrK2l0ID09
IGdlbi5lbmQoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSB3aXRoIGFuIGFycmF5
IHBhcmFtZXRlciBnZW5lcmF0ZXMKKy8vIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoVmFs
dWVzSW5UZXN0LCBWYWx1ZXNJbkFycmF5KSB7CisgIGludCBhcnJheVtdID0gezMsIDUsIDh9Owor
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKGFycmF5KTsKKyAgVmVy
aWZ5R2VuZXJhdG9yKGdlbiwgYXJyYXkpOworfQorCisvLyBUZXN0cyB0aGF0IFZhbHVlc0luKCkg
d2l0aCBhIGNvbnN0IGFycmF5IHBhcmFtZXRlciBnZW5lcmF0ZXMKKy8vIHRoZSBleHBlY3RlZCBz
ZXF1ZW5jZS4KK1RFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJbkNvbnN0QXJyYXkpIHsKKyAgY29u
c3QgaW50IGFycmF5W10gPSB7MywgNSwgOH07CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4g
Z2VuID0gVmFsdWVzSW4oYXJyYXkpOworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBhcnJheSk7Cit9
CisKKy8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIHdpdGggYW4gYXJyYXkgcGFy
YW1ldGVyIGNvbnRhaW5pbmcgYQorLy8gc2luZ2xlIGVsZW1lbnQgZ2VuZXJhdGVzIHRoZSBzaW5n
bGUgZWxlbWVudCBzZXF1ZW5jZS4KK1RFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJblNpbmdsZUVs
ZW1lbnRBcnJheSkgeworICBpbnQgYXJyYXlbXSA9IHs0Mn07CisgIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPGludD4gZ2VuID0gVmFsdWVzSW4oYXJyYXkpOworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBh
cnJheSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSBnZW5lcmF0ZXMgdGhlIGV4cGVj
dGVkIHNlcXVlbmNlIGZvciBhbiBTVEwKKy8vIGNvbnRhaW5lciAodmVjdG9yKS4KK1RFU1QoVmFs
dWVzSW5UZXN0LCBWYWx1ZXNJblZlY3RvcikgeworICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8aW50
PiBDb250YWluZXJUeXBlOworICBDb250YWluZXJUeXBlIHZhbHVlczsKKyAgdmFsdWVzLnB1c2hf
YmFjaygzKTsKKyAgdmFsdWVzLnB1c2hfYmFjayg1KTsKKyAgdmFsdWVzLnB1c2hfYmFjayg4KTsK
KyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbih2YWx1ZXMpOworCisg
IGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHszLCA1LCA4fTsKKyAgVmVyaWZ5R2VuZXJh
dG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gVGVzdHMgdGhhdCBWYWx1ZXNJbigp
IGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCitURVNUKFZhbHVlc0luVGVzdCwgVmFs
dWVzSW5JdGVyYXRvclJhbmdlKSB7CisgIHR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxpbnQ+IENvbnRh
aW5lclR5cGU7CisgIENvbnRhaW5lclR5cGUgdmFsdWVzOworICB2YWx1ZXMucHVzaF9iYWNrKDMp
OworICB2YWx1ZXMucHVzaF9iYWNrKDUpOworICB2YWx1ZXMucHVzaF9iYWNrKDgpOworICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVlcy5iZWdpbigpLCB2YWx1
ZXMuZW5kKCkpOworCisgIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHszLCA1LCA4fTsK
KyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gRWRnZSBj
YXNlLiBUZXN0cyB0aGF0IFZhbHVlc0luKCkgcHJvdmlkZWQgd2l0aCBhbiBpdGVyYXRvciByYW5n
ZSBzcGVjaWZ5aW5nIGEKKy8vIHNpbmdsZSB2YWx1ZSBnZW5lcmF0ZXMgYSBzaW5nbGUtZWxlbWVu
dCBzZXF1ZW5jZS4KK1RFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJblNpbmdsZUVsZW1lbnRJdGVy
YXRvclJhbmdlKSB7CisgIHR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxpbnQ+IENvbnRhaW5lclR5cGU7
CisgIENvbnRhaW5lclR5cGUgdmFsdWVzOworICB2YWx1ZXMucHVzaF9iYWNrKDQyKTsKKyAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbih2YWx1ZXMuYmVnaW4oKSwgdmFs
dWVzLmVuZCgpKTsKKworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7NDJ9OworICBW
ZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBFZGdlIGNhc2Uu
IFRlc3RzIHRoYXQgVmFsdWVzSW4oKSBwcm92aWRlZCB3aXRoIGFuIGVtcHR5IGl0ZXJhdG9yIHJh
bmdlCisvLyBnZW5lcmF0ZXMgYW4gZW1wdHkgc2VxdWVuY2UuCitURVNUKFZhbHVlc0luVGVzdCwg
VmFsdWVzSW5FbXB0eUl0ZXJhdG9yUmFuZ2UpIHsKKyAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGlu
dD4gQ29udGFpbmVyVHlwZTsKKyAgQ29udGFpbmVyVHlwZSB2YWx1ZXM7CisgIGNvbnN0IFBhcmFt
R2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4odmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQo
KSk7CisKKyAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShnZW4pOworfQorCisvLyBUZXN0cyB0aGF0
IHRoZSBWYWx1ZXMoKSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgorVEVTVChWYWx1
ZXNUZXN0LCBWYWx1ZXNXb3JrcykgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9
IFZhbHVlcygzLCA1LCA4KTsKKworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7Mywg
NSwgOH07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgVmFsdWVzKCkgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZXMgZnJv
bSBlbGVtZW50cyBvZgorLy8gZGlmZmVyZW50IHR5cGVzIGNvbnZlcnRpYmxlIHRvIFBhcmFtR2Vu
ZXJhdG9yJ3MgcGFyYW1ldGVyIHR5cGUuCitURVNUKFZhbHVlc1Rlc3QsIFZhbHVlc1dvcmtzRm9y
VmFsdWVzT2ZDb21wYXRpYmxlVHlwZXMpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8ZG91Ymxl
PiBnZW4gPSBWYWx1ZXMoMywgNS4wZiwgOC4wKTsKKworICBjb25zdCBkb3VibGUgZXhwZWN0ZWRf
dmFsdWVzW10gPSB7My4wLCA1LjAsIDguMH07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVj
dGVkX3ZhbHVlcyk7Cit9CisKK1RFU1QoVmFsdWVzVGVzdCwgVmFsdWVzV29ya3NGb3JNYXhMZW5n
dGhMaXN0KSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzKAorICAg
ICAgMTAsIDIwLCAzMCwgNDAsIDUwLCA2MCwgNzAsIDgwLCA5MCwgMTAwLAorICAgICAgMTEwLCAx
MjAsIDEzMCwgMTQwLCAxNTAsIDE2MCwgMTcwLCAxODAsIDE5MCwgMjAwLAorICAgICAgMjEwLCAy
MjAsIDIzMCwgMjQwLCAyNTAsIDI2MCwgMjcwLCAyODAsIDI5MCwgMzAwLAorICAgICAgMzEwLCAz
MjAsIDMzMCwgMzQwLCAzNTAsIDM2MCwgMzcwLCAzODAsIDM5MCwgNDAwLAorICAgICAgNDEwLCA0
MjAsIDQzMCwgNDQwLCA0NTAsIDQ2MCwgNDcwLCA0ODAsIDQ5MCwgNTAwKTsKKworICBjb25zdCBp
bnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7CisgICAgICAxMCwgMjAsIDMwLCA0MCwgNTAsIDYwLCA3
MCwgODAsIDkwLCAxMDAsCisgICAgICAxMTAsIDEyMCwgMTMwLCAxNDAsIDE1MCwgMTYwLCAxNzAs
IDE4MCwgMTkwLCAyMDAsCisgICAgICAyMTAsIDIyMCwgMjMwLCAyNDAsIDI1MCwgMjYwLCAyNzAs
IDI4MCwgMjkwLCAzMDAsCisgICAgICAzMTAsIDMyMCwgMzMwLCAzNDAsIDM1MCwgMzYwLCAzNzAs
IDM4MCwgMzkwLCA0MDAsCisgICAgICA0MTAsIDQyMCwgNDMwLCA0NDAsIDQ1MCwgNDYwLCA0NzAs
IDQ4MCwgNDkwLCA1MDB9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMp
OworfQorCisvLyBFZGdlIGNhc2UgdGVzdC4gVGVzdHMgdGhhdCBzaW5nbGUtcGFyYW1ldGVyIFZh
bHVlcygpIGdlbmVyYXRlcyB0aGUgc2VxdWVuY2UKKy8vIHdpdGggdGhlIHNpbmdsZSB2YWx1ZS4K
K1RFU1QoVmFsdWVzVGVzdCwgVmFsdWVzV2l0aFNpbmdsZVBhcmFtZXRlcikgeworICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlcyg0Mik7CisKKyAgY29uc3QgaW50IGV4cGVj
dGVkX3ZhbHVlc1tdID0gezQyfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFs
dWVzKTsKK30KKworLy8gVGVzdHMgdGhhdCBCb29sKCkgZ2VuZXJhdGVzIHNlcXVlbmNlIChmYWxz
ZSwgdHJ1ZSkuCitURVNUKEJvb2xUZXN0LCBCb29sV29ya3MpIHsKKyAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8Ym9vbD4gZ2VuID0gQm9vbCgpOworCisgIGNvbnN0IGJvb2wgZXhwZWN0ZWRfdmFsdWVz
W10gPSB7ZmFsc2UsIHRydWV9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1
ZXMpOworfQorCisjIGlmIEdURVNUX0hBU19DT01CSU5FCisKKy8vIFRlc3RzIHRoYXQgQ29tYmlu
ZSgpIHdpdGggdHdvIHBhcmFtZXRlcnMgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4K
K1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoVHdvUGFyYW1ldGVycykgeworICBjb25zdCBj
aGFyKiBmb28gPSAiZm9vIjsKKyAgY29uc3QgY2hhciogYmFyID0gImJhciI7CisgIGNvbnN0IFBh
cmFtR2VuZXJhdG9yPHR1cGxlPGNvbnN0IGNoYXIqLCBpbnQ+ID4gZ2VuID0KKyAgICAgIENvbWJp
bmUoVmFsdWVzKGZvbywgYmFyKSwgVmFsdWVzKDMsIDQpKTsKKworICB0dXBsZTxjb25zdCBjaGFy
KiwgaW50PiBleHBlY3RlZF92YWx1ZXNbXSA9IHsKKyAgICBtYWtlX3R1cGxlKGZvbywgMyksIG1h
a2VfdHVwbGUoZm9vLCA0KSwKKyAgICBtYWtlX3R1cGxlKGJhciwgMyksIG1ha2VfdHVwbGUoYmFy
LCA0KX07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgQ29tYmluZSgpIHdpdGggdGhyZWUgcGFyYW1ldGVycyBnZW5lcmF0ZXMgdGhl
IGV4cGVjdGVkIHNlcXVlbmNlLgorVEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdpdGhUaHJlZVBh
cmFtZXRlcnMpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBpbnQsIGludD4g
PiBnZW4gPSBDb21iaW5lKFZhbHVlcygwLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygzLCA0KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVl
cyg1LCA2KSk7CisgIHR1cGxlPGludCwgaW50LCBpbnQ+IGV4cGVjdGVkX3ZhbHVlc1tdID0gewor
ICAgIG1ha2VfdHVwbGUoMCwgMywgNSksIG1ha2VfdHVwbGUoMCwgMywgNiksCisgICAgbWFrZV90
dXBsZSgwLCA0LCA1KSwgbWFrZV90dXBsZSgwLCA0LCA2KSwKKyAgICBtYWtlX3R1cGxlKDEsIDMs
IDUpLCBtYWtlX3R1cGxlKDEsIDMsIDYpLAorICAgIG1ha2VfdHVwbGUoMSwgNCwgNSksIG1ha2Vf
dHVwbGUoMSwgNCwgNil9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMp
OworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBDb21iaW5lKCkgd2l0aCB0aGUgZmlyc3QgcGFyYW1l
dGVyIGdlbmVyYXRpbmcgYSBzaW5nbGUgdmFsdWUKKy8vIHNlcXVlbmNlIGdlbmVyYXRlcyBhIHNl
cXVlbmNlIHdpdGggdGhlIG51bWJlciBvZiBlbGVtZW50cyBlcXVhbCB0byB0aGUKKy8vIG51bWJl
ciBvZiBlbGVtZW50cyBpbiB0aGUgc2VxdWVuY2UgZ2VuZXJhdGVkIGJ5IHRoZSBzZWNvbmQgcGFy
YW1ldGVyLgorVEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdpdGhGaXJzdFBhcmFtZXRlclNpbmds
ZVZhbHVlKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50PiA+IGdlbiA9
IENvbWJpbmUoVmFsdWVzKDQyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMCwgMSkpOworCisgIHR1cGxlPGludCwgaW50PiBl
eHBlY3RlZF92YWx1ZXNbXSA9IHttYWtlX3R1cGxlKDQyLCAwKSwgbWFrZV90dXBsZSg0MiwgMSl9
OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBUZXN0
cyB0aGF0IHRoZSBDb21iaW5lKCkgd2l0aCB0aGUgc2Vjb25kIHBhcmFtZXRlciBnZW5lcmF0aW5n
IGEgc2luZ2xlIHZhbHVlCisvLyBzZXF1ZW5jZSBnZW5lcmF0ZXMgYSBzZXF1ZW5jZSB3aXRoIHRo
ZSBudW1iZXIgb2YgZWxlbWVudHMgZXF1YWwgdG8gdGhlCisvLyBudW1iZXIgb2YgZWxlbWVudHMg
aW4gdGhlIHNlcXVlbmNlIGdlbmVyYXRlZCBieSB0aGUgZmlyc3QgcGFyYW1ldGVyLgorVEVTVChD
b21iaW5lVGVzdCwgQ29tYmluZVdpdGhTZWNvbmRQYXJhbWV0ZXJTaW5nbGVWYWx1ZSkgeworICBj
b25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVl
cygwLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWx1ZXMoNDIpKTsKKworICB0dXBsZTxpbnQsIGludD4gZXhwZWN0ZWRfdmFsdWVz
W10gPSB7bWFrZV90dXBsZSgwLCA0MiksIG1ha2VfdHVwbGUoMSwgNDIpfTsKKyAgVmVyaWZ5R2Vu
ZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gVGVzdHMgdGhhdCB3aGVuIHRo
ZSBmaXJzdCBwYXJhbWV0ZXIgcHJvZHVjZXMgYW4gZW1wdHkgc2VxdWVuY2UsCisvLyBDb21iaW5l
KCkgcHJvZHVjZXMgYW4gZW1wdHkgc2VxdWVuY2UsIHRvby4KK1RFU1QoQ29tYmluZVRlc3QsIENv
bWJpbmVXaXRoRmlyc3RQYXJhbWV0ZXJFbXB0eVJhbmdlKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPHR1cGxlPGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUoUmFuZ2UoMCwgMCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDAs
IDEpKTsKKyAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShnZW4pOworfQorCisvLyBUZXN0cyB0aGF0
IHdoZW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIgcHJvZHVjZXMgYW4gZW1wdHkgc2VxdWVuY2UsCisv
LyBDb21iaW5lKCkgcHJvZHVjZXMgYW4gZW1wdHkgc2VxdWVuY2UsIHRvby4KK1RFU1QoQ29tYmlu
ZVRlc3QsIENvbWJpbmVXaXRoU2Vjb25kUGFyYW1ldGVyRW1wdHlSYW5nZSkgeworICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcygwLCAx
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSYW5nZSgxLCAxKSk7CisgIFZlcmlmeUdlbmVyYXRvcklzRW1wdHkoZ2VuKTsKK30KKworLy8g
RWRnZSBjYXNlLiBUZXN0cyB0aGF0IGNvbWJpbmUgd29ya3Mgd2l0aCB0aGUgbWF4aW11bSBudW1i
ZXIKKy8vIG9mIHBhcmFtZXRlcnMgc3VwcG9ydGVkIGJ5IEdvb2dsZSBUZXN0IChjdXJyZW50bHkg
MTApLgorVEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdpdGhNYXhOdW1iZXJPZlBhcmFtZXRlcnMp
IHsKKyAgY29uc3QgY2hhciogZm9vID0gImZvbyI7CisgIGNvbnN0IGNoYXIqIGJhciA9ICJiYXIi
OworICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxjb25zdCBjaGFyKiwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQs
IGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcyhmb28sIGJhciksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDEpLCBWYWx1ZXMo
MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsdWVzKDMpLCBWYWx1ZXMoNCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDUpLCBWYWx1ZXMoNiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDcpLCBW
YWx1ZXMoOCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsdWVzKDkpKTsKKworICB0dXBsZTxjb25zdCBjaGFyKiwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludD4KKyAgICAgIGV4cGVjdGVkX3ZhbHVlc1td
ID0ge21ha2VfdHVwbGUoZm9vLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1ha2VfdHVwbGUoYmFyLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4
LCA5KX07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKyNp
ZiBHVEVTVF9MQU5HX0NYWDExCisKK2NsYXNzIE5vbkRlZmF1bHRDb25zdHJ1Y3RBc3NpZ25TdHJp
bmcgeworIHB1YmxpYzoKKyAgTm9uRGVmYXVsdENvbnN0cnVjdEFzc2lnblN0cmluZyhjb25zdCBz
dGQ6OnN0cmluZyYgcykgOiBzdHJfKHMpIHt9CisKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cigp
IGNvbnN0IHsgcmV0dXJuIHN0cl87IH0KKworIHByaXZhdGU6CisgIHN0ZDo6c3RyaW5nIHN0cl87
CisKKyAgLy8gTm90IGRlZmF1bHQgY29uc3RydWN0aWJsZQorICBOb25EZWZhdWx0Q29uc3RydWN0
QXNzaWduU3RyaW5nKCk7CisgIC8vIE5vdCBhc3NpZ25hYmxlCisgIHZvaWQgb3BlcmF0b3I9KGNv
bnN0IE5vbkRlZmF1bHRDb25zdHJ1Y3RBc3NpZ25TdHJpbmcmKTsKK307CisKK1RFU1QoQ29tYmlu
ZVRlc3QsIE5vbkRlZmF1bHRDb25zdHJ1Y3RBc3NpZ24pIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0
b3I8dHVwbGU8aW50LCBOb25EZWZhdWx0Q29uc3RydWN0QXNzaWduU3RyaW5nPiA+IGdlbiA9Cisg
ICAgICBDb21iaW5lKFZhbHVlcygwLCAxKSwgVmFsdWVzKE5vbkRlZmF1bHRDb25zdHJ1Y3RBc3Np
Z25TdHJpbmcoIkEiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uRGVm
YXVsdENvbnN0cnVjdEFzc2lnblN0cmluZygiQiIpKSk7CisKKyAgUGFyYW1HZW5lcmF0b3I8dHVw
bGU8aW50LCBOb25EZWZhdWx0Q29uc3RydWN0QXNzaWduU3RyaW5nPiA+OjppdGVyYXRvciBpdCA9
CisgICAgICBnZW4uYmVnaW4oKTsKKworICBFWFBFQ1RfRVEoMCwgc3RkOjpnZXQ8MD4oKml0KSk7
CisgIEVYUEVDVF9FUSgiQSIsIHN0ZDo6Z2V0PDE+KCppdCkuc3RyKCkpOworICArK2l0OworCisg
IEVYUEVDVF9FUSgwLCBzdGQ6OmdldDwwPigqaXQpKTsKKyAgRVhQRUNUX0VRKCJCIiwgc3RkOjpn
ZXQ8MT4oKml0KS5zdHIoKSk7CisgICsraXQ7CisKKyAgRVhQRUNUX0VRKDEsIHN0ZDo6Z2V0PDA+
KCppdCkpOworICBFWFBFQ1RfRVEoIkEiLCBzdGQ6OmdldDwxPigqaXQpLnN0cigpKTsKKyAgKytp
dDsKKworICBFWFBFQ1RfRVEoMSwgc3RkOjpnZXQ8MD4oKml0KSk7CisgIEVYUEVDVF9FUSgiQiIs
IHN0ZDo6Z2V0PDE+KCppdCkuc3RyKCkpOworICArK2l0OworCisgIEVYUEVDVF9UUlVFKGl0ID09
IGdlbi5lbmQoKSk7Cit9CisKKyNlbmRpZiAgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKyMgZW5kaWYg
IC8vIEdURVNUX0hBU19DT01CSU5FCisKKy8vIFRlc3RzIHRoYXQgYW4gZ2VuZXJhdG9yIHByb2R1
Y2VzIGNvcnJlY3Qgc2VxdWVuY2UgYWZ0ZXIgYmVpbmcKKy8vIGFzc2lnbmVkIGZyb20gYW5vdGhl
ciBnZW5lcmF0b3IuCitURVNUKFBhcmFtR2VuZXJhdG9yVGVzdCwgQXNzaWdubWVudFdvcmtzKSB7
CisgIFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzKDEsIDIpOworICBjb25zdCBQYXJh
bUdlbmVyYXRvcjxpbnQ+IGdlbjIgPSBWYWx1ZXMoMywgNCk7CisgIGdlbiA9IGdlbjI7CisKKyAg
Y29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezMsIDR9OworICBWZXJpZnlHZW5lcmF0b3Io
Z2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0
aGUgdGVzdHMgYXJlIGV4cGFuZGVkIGFuZCBydW4gYXMgc3BlY2lmaWVkOgorLy8gb25lIHRlc3Qg
cGVyIGVsZW1lbnQgZnJvbSB0aGUgc2VxdWVuY2UgcHJvZHVjZWQgYnkgdGhlIGdlbmVyYXRvcgor
Ly8gc3BlY2lmaWVkIGluIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QLiBJdCBhbHNvIHZlcmlmaWVz
IHRoYXQgdGhlIHRlc3QncworLy8gZml4dHVyZSBjb25zdHJ1Y3RvciwgU2V0VXAoKSwgYW5kIFRl
YXJEb3duKCkgaGF2ZSBydW4gYW5kIGhhdmUgYmVlbgorLy8gc3VwcGxpZWQgd2l0aCB0aGUgY29y
cmVjdCBwYXJhbWV0ZXJzLgorCisvLyBUaGUgdXNlIG9mIGVudmlyb25tZW50IG9iamVjdCBhbGxv
d3MgZGV0ZWN0aW9uIG9mIHRoZSBjYXNlIHdoZXJlIG5vIHRlc3QKKy8vIGNhc2UgZnVuY3Rpb25h
bGl0eSBpcyBydW4gYXQgYWxsLiBJbiB0aGlzIGNhc2UgVGVzdENhc2VUZWFyRG93biB3aWxsIG5v
dAorLy8gYmUgYWJsZSB0byBkZXRlY3QgbWlzc2luZyB0ZXN0cywgbmF0dXJhbGx5LgordGVtcGxh
dGUgPGludCBrRXhwZWN0ZWRDYWxscz4KK2NsYXNzIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpFbnZpcm9ubWVudCB7CisgcHVibGljOgorICBzdGF0aWMgVGVz
dEdlbmVyYXRpb25FbnZpcm9ubWVudCogSW5zdGFuY2UoKSB7CisgICAgc3RhdGljIFRlc3RHZW5l
cmF0aW9uRW52aXJvbm1lbnQqIGluc3RhbmNlID0gbmV3IFRlc3RHZW5lcmF0aW9uRW52aXJvbm1l
bnQ7CisgICAgcmV0dXJuIGluc3RhbmNlOworICB9CisKKyAgdm9pZCBGaXh0dXJlQ29uc3RydWN0
b3JFeGVjdXRlZCgpIHsgZml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3VudF8rKzsgfQorICB2b2lkIFNl
dFVwRXhlY3V0ZWQoKSB7IHNldF91cF9jb3VudF8rKzsgfQorICB2b2lkIFRlYXJEb3duRXhlY3V0
ZWQoKSB7IHRlYXJfZG93bl9jb3VudF8rKzsgfQorICB2b2lkIFRlc3RCb2R5RXhlY3V0ZWQoKSB7
IHRlc3RfYm9keV9jb3VudF8rKzsgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAg
ICAvLyBJZiBhbGwgTXVsdGlwbGVUZXN0R2VuZXJhdGlvblRlc3QgdGVzdHMgaGF2ZSBiZWVuIGRl
LXNlbGVjdGVkCisgICAgLy8gYnkgdGhlIGZpbHRlciBmbGFnLCB0aGUgZm9sbG93aW5nIGNoZWNr
cyBtYWtlIG5vIHNlbnNlLgorICAgIGJvb2wgcGVyZm9ybV9jaGVjayA9IGZhbHNlOworCisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBrRXhwZWN0ZWRDYWxsczsgKytpKSB7CisgICAgICBNZXNzYWdl
IG1zZzsKKyAgICAgIG1zZyA8PCAiVGVzdHNFeHBhbmRlZEFuZFJ1bi8iIDw8IGk7CisgICAgICBp
ZiAoVW5pdFRlc3RPcHRpb25zOjpGaWx0ZXJNYXRjaGVzVGVzdCgKKyAgICAgICAgICAgICAiVGVz
dEV4cGFuc2lvbk1vZHVsZS9NdWx0aXBsZVRlc3RHZW5lcmF0aW9uVGVzdCIsCisgICAgICAgICAg
ICAgIG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKSkgeworICAgICAgICBwZXJmb3JtX2NoZWNrID0g
dHJ1ZTsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKHBlcmZvcm1fY2hlY2spIHsKKyAgICAgIEVY
UEVDVF9FUShrRXhwZWN0ZWRDYWxscywgZml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3VudF8pCisgICAg
ICAgICAgPDwgIkZpeHR1cmUgY29uc3RydWN0b3Igb2YgUGFyYW1UZXN0R2VuZXJhdGlvblRlc3Qg
dGVzdCBjYXNlICIKKyAgICAgICAgICA8PCAiaGFzIG5vdCBiZWVuIHJ1biBhcyBleHBlY3RlZC4i
OworICAgICAgRVhQRUNUX0VRKGtFeHBlY3RlZENhbGxzLCBzZXRfdXBfY291bnRfKQorICAgICAg
ICAgIDw8ICJGaXh0dXJlIFNldFVwIG1ldGhvZCBvZiBQYXJhbVRlc3RHZW5lcmF0aW9uVGVzdCB0
ZXN0IGNhc2UgIgorICAgICAgICAgIDw8ICJoYXMgbm90IGJlZW4gcnVuIGFzIGV4cGVjdGVkLiI7
CisgICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2FsbHMsIHRlYXJfZG93bl9jb3VudF8pCisgICAg
ICAgICAgPDwgIkZpeHR1cmUgVGVhckRvd24gbWV0aG9kIG9mIFBhcmFtVGVzdEdlbmVyYXRpb25U
ZXN0IHRlc3QgY2FzZSAiCisgICAgICAgICAgPDwgImhhcyBub3QgYmVlbiBydW4gYXMgZXhwZWN0
ZWQuIjsKKyAgICAgIEVYUEVDVF9FUShrRXhwZWN0ZWRDYWxscywgdGVzdF9ib2R5X2NvdW50XykK
KyAgICAgICAgICA8PCAiVGVzdCBpbiBQYXJhbVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2Ug
IgorICAgICAgICAgIDw8ICJoYXMgbm90IGJlZW4gcnVuIGFzIGV4cGVjdGVkLiI7CisgICAgfQor
ICB9CisKKyBwcml2YXRlOgorICBUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50KCkgOiBmaXh0dXJl
X2NvbnN0cnVjdG9yX2NvdW50XygwKSwgc2V0X3VwX2NvdW50XygwKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVhcl9kb3duX2NvdW50XygwKSwgdGVzdF9ib2R5X2NvdW50Xygw
KSB7fQorCisgIGludCBmaXh0dXJlX2NvbnN0cnVjdG9yX2NvdW50XzsKKyAgaW50IHNldF91cF9j
b3VudF87CisgIGludCB0ZWFyX2Rvd25fY291bnRfOworICBpbnQgdGVzdF9ib2R5X2NvdW50XzsK
KworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRlc3RHZW5lcmF0aW9uRW52aXJv
bm1lbnQpOworfTsKKworY29uc3QgaW50IHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXNbXSA9IHszNiwg
NDIsIDcyfTsKKworY2xhc3MgVGVzdEdlbmVyYXRpb25UZXN0IDogcHVibGljIFRlc3RXaXRoUGFy
YW08aW50PiB7CisgcHVibGljOgorICBlbnVtIHsKKyAgICBQQVJBTUVURVJfQ09VTlQgPQorICAg
ICAgICBzaXplb2YodGVzdF9nZW5lcmF0aW9uX3BhcmFtcykvc2l6ZW9mKHRlc3RfZ2VuZXJhdGlv
bl9wYXJhbXNbMF0pCisgIH07CisKKyAgdHlwZWRlZiBUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50
PFBBUkFNRVRFUl9DT1VOVD4gRW52aXJvbm1lbnQ7CisKKyAgVGVzdEdlbmVyYXRpb25UZXN0KCkg
eworICAgIEVudmlyb25tZW50OjpJbnN0YW5jZSgpLT5GaXh0dXJlQ29uc3RydWN0b3JFeGVjdXRl
ZCgpOworICAgIGN1cnJlbnRfcGFyYW1ldGVyXyA9IEdldFBhcmFtKCk7CisgIH0KKyAgdmlydHVh
bCB2b2lkIFNldFVwKCkgeworICAgIEVudmlyb25tZW50OjpJbnN0YW5jZSgpLT5TZXRVcEV4ZWN1
dGVkKCk7CisgICAgRVhQRUNUX0VRKGN1cnJlbnRfcGFyYW1ldGVyXywgR2V0UGFyYW0oKSk7Cisg
IH0KKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIEVudmlyb25tZW50OjpJbnN0YW5j
ZSgpLT5UZWFyRG93bkV4ZWN1dGVkKCk7CisgICAgRVhQRUNUX0VRKGN1cnJlbnRfcGFyYW1ldGVy
XywgR2V0UGFyYW0oKSk7CisgIH0KKworICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgewor
ICAgIGJvb2wgYWxsX3Rlc3RzX2luX3Rlc3RfY2FzZV9zZWxlY3RlZCA9IHRydWU7CisKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IFBBUkFNRVRFUl9DT1VOVDsgKytpKSB7CisgICAgICBNZXNzYWdl
IHRlc3RfbmFtZTsKKyAgICAgIHRlc3RfbmFtZSA8PCAiVGVzdHNFeHBhbmRlZEFuZFJ1bi8iIDw8
IGk7CisgICAgICBpZiAoICFVbml0VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KAorICAg
ICAgICAgICAgICAgICJUZXN0RXhwYW5zaW9uTW9kdWxlL011bHRpcGxlVGVzdEdlbmVyYXRpb25U
ZXN0IiwKKyAgICAgICAgICAgICAgICB0ZXN0X25hbWUuR2V0U3RyaW5nKCkpKSB7CisgICAgICAg
IGFsbF90ZXN0c19pbl90ZXN0X2Nhc2Vfc2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgIH0KKyAgICB9
CisgICAgRVhQRUNUX1RSVUUoYWxsX3Rlc3RzX2luX3Rlc3RfY2FzZV9zZWxlY3RlZCkKKyAgICAg
ICAgPDwgIldoZW4gcnVubmluZyB0aGUgVGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZSBhbGwg
b2YgaXRzIHRlc3RzXG4iCisgICAgICAgIDw8ICJtdXN0IGJlIHNlbGVjdGVkIGJ5IHRoZSBmaWx0
ZXIgZmxhZyBmb3IgdGhlIHRlc3QgY2FzZSB0byBwYXNzLlxuIgorICAgICAgICA8PCAiSWYgbm90
IGFsbCBvZiB0aGVtIGFyZSBlbmFibGVkLCB3ZSBjYW4ndCByZWxpYWJseSBjb25jbHVkZVxuIgor
ICAgICAgICA8PCAidGhhdCB0aGUgY29ycmVjdCBudW1iZXIgb2YgdGVzdHMgaGF2ZSBiZWVuIGdl
bmVyYXRlZC4iOworCisgICAgY29sbGVjdGVkX3BhcmFtZXRlcnNfLmNsZWFyKCk7CisgIH0KKwor
ICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHZlY3RvcjxpbnQ+IGV4cGVj
dGVkX3ZhbHVlcyh0ZXN0X2dlbmVyYXRpb25fcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0X2dlbmVyYXRpb25fcGFyYW1zICsgUEFSQU1FVEVSX0NPVU5UKTsKKyAg
ICAvLyBUZXN0IGV4ZWN1dGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCBieSBHb29nbGUgVGVz
dCwKKyAgICAvLyBzbyB0aGUgb3JkZXIgb2YgdmFsdWVzIGluIGNvbGxlY3RlZF9wYXJhbWV0ZXJz
XyBjYW4gYmUKKyAgICAvLyBkaWZmZXJlbnQgYW5kIHdlIGhhdmUgdG8gc29ydCB0byBjb21wYXJl
LgorICAgIHNvcnQoZXhwZWN0ZWRfdmFsdWVzLmJlZ2luKCksIGV4cGVjdGVkX3ZhbHVlcy5lbmQo
KSk7CisgICAgc29ydChjb2xsZWN0ZWRfcGFyYW1ldGVyc18uYmVnaW4oKSwgY29sbGVjdGVkX3Bh
cmFtZXRlcnNfLmVuZCgpKTsKKworICAgIEVYUEVDVF9UUlVFKGNvbGxlY3RlZF9wYXJhbWV0ZXJz
XyA9PSBleHBlY3RlZF92YWx1ZXMpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIGludCBjdXJyZW50
X3BhcmFtZXRlcl87CisgIHN0YXRpYyB2ZWN0b3I8aW50PiBjb2xsZWN0ZWRfcGFyYW1ldGVyc187
CisKKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRlc3RHZW5l
cmF0aW9uVGVzdCk7Cit9OwordmVjdG9yPGludD4gVGVzdEdlbmVyYXRpb25UZXN0Ojpjb2xsZWN0
ZWRfcGFyYW1ldGVyc187CisKK1RFU1RfUChUZXN0R2VuZXJhdGlvblRlc3QsIFRlc3RzRXhwYW5k
ZWRBbmRSdW4pIHsKKyAgRW52aXJvbm1lbnQ6Okluc3RhbmNlKCktPlRlc3RCb2R5RXhlY3V0ZWQo
KTsKKyAgRVhQRUNUX0VRKGN1cnJlbnRfcGFyYW1ldGVyXywgR2V0UGFyYW0oKSk7CisgIGNvbGxl
Y3RlZF9wYXJhbWV0ZXJzXy5wdXNoX2JhY2soR2V0UGFyYW0oKSk7Cit9CitJTlNUQU5USUFURV9U
RVNUX0NBU0VfUChUZXN0RXhwYW5zaW9uTW9kdWxlLCBUZXN0R2VuZXJhdGlvblRlc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICBWYWx1ZXNJbih0ZXN0X2dlbmVyYXRpb25fcGFyYW1zKSk7CisK
Ky8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSBlbGVtZW50IHNlcXVlbmNlICh0aGlyZCBw
YXJhbWV0ZXIgb2YKKy8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKSBpcyBldmFsdWF0ZWQgaW4g
SW5pdEdvb2dsZVRlc3QoKSBhbmQgbmVpdGhlciBhdAorLy8gdGhlIGNhbGwgc2l0ZSBvZiBJTlNU
QU5USUFURV9URVNUX0NBU0VfUCBub3IgaW4gUlVOX0FMTF9URVNUUygpLiAgRm9yCisvLyB0aGF0
LCB3ZSBkZWNsYXJlIHBhcmFtX3ZhbHVlXyB0byBiZSBhIHN0YXRpYyBtZW1iZXIgb2YKKy8vIEdl
bmVyYXRvckV2YWx1YXRpb25UZXN0IGFuZCBpbml0aWFsaXplIGl0IHRvIDAuICBXZSBzZXQgaXQg
dG8gMSBpbgorLy8gbWFpbigpLCBqdXN0IGJlZm9yZSBpbnZvY2F0aW9uIG9mIEluaXRHb29nbGVU
ZXN0KCkuICBBZnRlciBjYWxsaW5nCisvLyBJbml0R29vZ2xlVGVzdCgpLCB3ZSBzZXQgdGhlIHZh
bHVlIHRvIDIuICBJZiB0aGUgc2VxdWVuY2UgaXMgZXZhbHVhdGVkCisvLyBiZWZvcmUgb3IgYWZ0
ZXIgSW5pdEdvb2dsZVRlc3QsIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIHdpbGwgY3JlYXRlIGEK
Ky8vIHRlc3Qgd2l0aCBwYXJhbWV0ZXIgb3RoZXIgdGhhbiAxLCBhbmQgdGhlIHRlc3QgYm9keSB3
aWxsIGZhaWwgdGhlCisvLyBhc3NlcnRpb24uCitjbGFzcyBHZW5lcmF0b3JFdmFsdWF0aW9uVGVz
dCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4geworIHB1YmxpYzoKKyAgc3RhdGljIGludCBw
YXJhbV92YWx1ZSgpIHsgcmV0dXJuIHBhcmFtX3ZhbHVlXzsgfQorICBzdGF0aWMgdm9pZCBzZXRf
cGFyYW1fdmFsdWUoaW50IHBhcmFtX3ZhbHVlKSB7IHBhcmFtX3ZhbHVlXyA9IHBhcmFtX3ZhbHVl
OyB9CisKKyBwcml2YXRlOgorICBzdGF0aWMgaW50IHBhcmFtX3ZhbHVlXzsKK307CitpbnQgR2Vu
ZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnBhcmFtX3ZhbHVlXyA9IDA7CisKK1RFU1RfUChHZW5lcmF0
b3JFdmFsdWF0aW9uVGVzdCwgR2VuZXJhdG9yc0V2YWx1YXRlZEluTWFpbikgeworICBFWFBFQ1Rf
RVEoMSwgR2V0UGFyYW0oKSk7Cit9CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChHZW5FdmFsTW9k
dWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoR2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnBh
cmFtX3ZhbHVlKCkpKTsKKworLy8gVGVzdHMgdGhhdCBnZW5lcmF0b3JzIGRlZmluZWQgaW4gYSBk
aWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdCBhcmUKKy8vIGZ1bmN0aW9uYWwuIEdlbmVyYXRvciBl
eHRlcm5fZ2VuIGlzIGRlZmluZWQgaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0Mi5jYy4KK2V4dGVy
biBQYXJhbUdlbmVyYXRvcjxpbnQ+IGV4dGVybl9nZW47CitjbGFzcyBFeHRlcm5hbEdlbmVyYXRv
clRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHt9OworVEVTVF9QKEV4dGVybmFsR2Vu
ZXJhdG9yVGVzdCwgRXh0ZXJuYWxHZW5lcmF0b3IpIHsKKyAgLy8gU2VxdWVuY2UgcHJvZHVjZWQg
YnkgZXh0ZXJuX2dlbiBjb250YWlucyBvbmx5IGEgc2luZ2xlIHZhbHVlCisgIC8vIHdoaWNoIHdl
IHZlcmlmeSBoZXJlLgorICBFWFBFQ1RfRVEoR2V0UGFyYW0oKSwgMzMpOworfQorSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoRXh0ZXJuYWxHZW5lcmF0b3JNb2R1bGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICBFeHRlcm5hbEdlbmVyYXRvclRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBl
eHRlcm5fZ2VuKTsKKworLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNh
biBiZSBkZWZpbmVkIGluIG9uZSB0cmFuc2xhdGlvbgorLy8gdW5pdCBhbmQgaW5zdGFudGlhdGVk
IGluIGFub3RoZXIuIFRoaXMgdGVzdCB3aWxsIGJlIGluc3RhbnRpYXRlZCBpbgorLy8gZ3Rlc3Qt
cGFyYW0tdGVzdF90ZXN0Mi5jYy4gRXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCBmaXh0dXJlIGNs
YXNzIGlzCisvLyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oLgorVEVTVF9QKEV4
dGVybmFsSW5zdGFudGlhdGlvblRlc3QsIElzTXVsdGlwbGVPZjMzKSB7CisgIEVYUEVDVF9FUSgw
LCBHZXRQYXJhbSgpICUgMzMpOworfQorCisvLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0
ZXN0IGNhc2UgY2FuIGJlIGluc3RhbnRpYXRlZCB3aXRoIG11bHRpcGxlCisvLyBnZW5lcmF0b3Jz
LgorY2xhc3MgTXVsdGlwbGVJbnN0YW50aWF0aW9uVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFt
PGludD4ge307CitURVNUX1AoTXVsdGlwbGVJbnN0YW50aWF0aW9uVGVzdCwgQWxsb3dzTXVsdGlw
bGVJbnN0YW5jZXMpIHsKK30KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMSwgTXVs
dGlwbGVJbnN0YW50aWF0aW9uVGVzdCwgVmFsdWVzKDEsIDIpKTsKK0lOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QKFNlcXVlbmNlMiwgTXVsdGlwbGVJbnN0YW50aWF0aW9uVGVzdCwgUmFuZ2UoMywgNSkp
OworCisvLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGluc3Rh
bnRpYXRlZAorLy8gaW4gbXVsdGlwbGUgdHJhbnNsYXRpb24gdW5pdHMuIFRoaXMgdGVzdCB3aWxs
IGJlIGluc3RhbnRpYXRlZAorLy8gaGVyZSBhbmQgaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0Mi5j
Yy4KKy8vIEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYXRpb25Vbml0c1Rlc3QgZml4dHVy
ZSBjbGFzcworLy8gaXMgZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaC4KK1RFU1Rf
UChJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QsIElzTXVsdGlwbGVP
ZjQyKSB7CisgIEVYUEVDVF9FUSgwLCBHZXRQYXJhbSgpICUgNDIpOworfQorSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoU2VxdWVuY2UxLAorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlh
dGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsdWVzKDQyLCA0MioyKSk7CisKKy8vIFRlc3RzIHRoYXQgZWFjaCBpdGVyYXRpb24gb2Yg
cGFyYW1ldGVyaXplZCB0ZXN0IHJ1bnMgaW4gYSBzZXBhcmF0ZSB0ZXN0CisvLyBvYmplY3QuCitj
bGFzcyBTZXBhcmF0ZUluc3RhbmNlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4gewor
IHB1YmxpYzoKKyAgU2VwYXJhdGVJbnN0YW5jZVRlc3QoKSA6IGNvdW50XygwKSB7fQorCisgIHN0
YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7CisgICAgRVhQRUNUX0dFKGdsb2JhbF9jb3Vu
dF8sIDIpCisgICAgICAgIDw8ICJJZiBzb21lIChidXQgbm90IGFsbCkgU2VwYXJhdGVJbnN0YW5j
ZVRlc3QgdGVzdHMgaGF2ZSBiZWVuICIKKyAgICAgICAgPDwgImZpbHRlcmVkIG91dCB0aGlzIHRl
c3Qgd2lsbCBmYWlsLiBNYWtlIHN1cmUgdGhhdCBhbGwgIgorICAgICAgICA8PCAiR2VuZXJhdG9y
RXZhbHVhdGlvblRlc3QgYXJlIHNlbGVjdGVkIG9yIGRlLXNlbGVjdGVkIHRvZ2V0aGVyICIKKyAg
ICAgICAgPDwgImJ5IHRoZSB0ZXN0IGZpbHRlci4iOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIGlu
dCBjb3VudF87CisgIHN0YXRpYyBpbnQgZ2xvYmFsX2NvdW50XzsKK307CitpbnQgU2VwYXJhdGVJ
bnN0YW5jZVRlc3Q6Omdsb2JhbF9jb3VudF8gPSAwOworCitURVNUX1AoU2VwYXJhdGVJbnN0YW5j
ZVRlc3QsIFRlc3RzUnVuSW5TZXBhcmF0ZUluc3RhbmNlcykgeworICBFWFBFQ1RfRVEoMCwgY291
bnRfKyspOworICBnbG9iYWxfY291bnRfKys7Cit9CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChG
b3VyRWxlbVNlcXVlbmNlLCBTZXBhcmF0ZUluc3RhbmNlVGVzdCwgUmFuZ2UoMSwgNCkpOworCisv
LyBUZXN0cyB0aGF0IGFsbCBpbnN0YW50aWF0aW9ucyBvZiBhIHRlc3QgaGF2ZSBuYW1lZCBhcHBy
b3ByaWF0ZWx5LiBUZXN0CisvLyBkZWZpbmVkIHdpdGggVEVTVF9QKFRlc3RDYXNlTmFtZSwgVGVz
dE5hbWUpIGFuZCBpbnN0YW50aWF0ZWQgd2l0aAorLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ao
U2VxdWVuY2VOYW1lLCBUZXN0Q2FzZU5hbWUsIGdlbmVyYXRvcikgbXVzdCBiZSBuYW1lZAorLy8g
U2VxdWVuY2VOYW1lL1Rlc3RDYXNlTmFtZS5UZXN0TmFtZS9pLCB3aGVyZSBpIGlzIHRoZSAwLWJh
c2VkIGluZGV4IG9mIHRoZQorLy8gc2VxdWVuY2UgZWxlbWVudCB1c2VkIHRvIGluc3RhbnRpYXRl
IHRoZSB0ZXN0LgorY2xhc3MgTmFtaW5nVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4g
e307CisKK1RFU1RfUChOYW1pbmdUZXN0LCBUZXN0c1JlcG9ydENvcnJlY3ROYW1lc0FuZFBhcmFt
ZXRlcnMpIHsKKyAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0K
KyAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2lu
Zm8oKTsKKworICBFWFBFQ1RfU1RSRVEoIlplcm9Ub0ZpdmVTZXF1ZW5jZS9OYW1pbmdUZXN0Iiwg
dGVzdF9pbmZvLT50ZXN0X2Nhc2VfbmFtZSgpKTsKKworICBNZXNzYWdlIGluZGV4X3N0cmVhbTsK
KyAgaW5kZXhfc3RyZWFtIDw8ICJUZXN0c1JlcG9ydENvcnJlY3ROYW1lc0FuZFBhcmFtZXRlcnMv
IiA8PCBHZXRQYXJhbSgpOworICBFWFBFQ1RfU1RSRVEoaW5kZXhfc3RyZWFtLkdldFN0cmluZygp
LmNfc3RyKCksIHRlc3RfaW5mby0+bmFtZSgpKTsKKworICBFWFBFQ1RfRVEoOjp0ZXN0aW5nOjpQ
cmludFRvU3RyaW5nKEdldFBhcmFtKCkpLCB0ZXN0X2luZm8tPnZhbHVlX3BhcmFtKCkpOworfQor
CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChaZXJvVG9GaXZlU2VxdWVuY2UsIE5hbWluZ1Rlc3Qs
IFJhbmdlKDAsIDUpKTsKKworLy8gVGVzdHMgdGhhdCBtYWNyb3MgaW4gdGVzdCBuYW1lcyBhcmUg
ZXhwYW5kZWQgY29ycmVjdGx5LgorY2xhc3MgTWFjcm9OYW1pbmdUZXN0IDogcHVibGljIFRlc3RX
aXRoUGFyYW08aW50PiB7fTsKKworI2RlZmluZSBQUkVGSVhfV0lUSF9GT08odGVzdF9uYW1lKSBG
b28jI3Rlc3RfbmFtZQorI2RlZmluZSBQUkVGSVhfV0lUSF9NQUNSTyh0ZXN0X25hbWUpIE1hY3Jv
IyN0ZXN0X25hbWUKKworVEVTVF9QKFBSRUZJWF9XSVRIX01BQ1JPKE5hbWluZ1Rlc3QpLCBQUkVG
SVhfV0lUSF9GT08oU29tZVRlc3ROYW1lKSkgeworICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZv
KiBjb25zdCB0ZXN0X2luZm8gPQorICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5j
ZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOworCisgIEVYUEVDVF9TVFJFUSgiRm9ydHlUd28vTWFj
cm9OYW1pbmdUZXN0IiwgdGVzdF9pbmZvLT50ZXN0X2Nhc2VfbmFtZSgpKTsKKyAgRVhQRUNUX1NU
UkVRKCJGb29Tb21lVGVzdE5hbWUiLCB0ZXN0X2luZm8tPm5hbWUoKSk7Cit9CisKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKEZvcnR5VHdvLCBNYWNyb05hbWluZ1Rlc3QsIFZhbHVlcyg0MikpOwor
CisvLyBUZXN0cyB0aGUgc2FtZSB0aGluZyBmb3Igbm9uLXBhcmFtZXRyaXplZCB0ZXN0cy4KK2Ns
YXNzIE1hY3JvTmFtaW5nVGVzdE5vblBhcmFtZXRyaXplZCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3Qge307CisKK1RFU1RfRihQUkVGSVhfV0lUSF9NQUNSTyhOYW1pbmdUZXN0Tm9uUGFyYW1ldHJp
emVkKSwKKyAgICAgICBQUkVGSVhfV0lUSF9GT08oU29tZVRlc3ROYW1lKSkgeworICBjb25zdCA6
OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQorICAgICA6OnRlc3Rpbmc6OlVu
aXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOworCisgIEVYUEVDVF9T
VFJFUSgiTWFjcm9OYW1pbmdUZXN0Tm9uUGFyYW1ldHJpemVkIiwgdGVzdF9pbmZvLT50ZXN0X2Nh
c2VfbmFtZSgpKTsKKyAgRVhQRUNUX1NUUkVRKCJGb29Tb21lVGVzdE5hbWUiLCB0ZXN0X2luZm8t
Pm5hbWUoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdXNlciBzdXBwbGllZCBjdXN0b20gcGFyYW1l
dGVyIG5hbWVzIGFyZSB3b3JraW5nIGNvcnJlY3RseS4KKy8vIFJ1bnMgdGhlIHRlc3Qgd2l0aCBh
IGJ1aWx0aW4gaGVscGVyIG1ldGhvZCB3aGljaCB1c2VzIFByaW50VG9TdHJpbmcsCisvLyBhcyB3
ZWxsIGFzIGEgY3VzdG9tIGZ1bmN0aW9uIGFuZCBjdXN0b20gZnVuY3RvciB0byBlbnN1cmUgYWxs
IHBvc3NpYmxlCisvLyB1c2VzIHdvcmsgY29ycmVjdGx5LgorY2xhc3MgQ3VzdG9tRnVuY3Rvck5h
bWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxzdGQ6OnN0cmluZz4ge307CitURVNUX1Ao
Q3VzdG9tRnVuY3Rvck5hbWluZ1Rlc3QsIEN1c3RvbVRlc3ROYW1lcykge30KKworc3RydWN0IEN1
c3RvbVBhcmFtTmFtZUZ1bmN0b3IgeworICBzdGQ6OnN0cmluZyBvcGVyYXRvcigpKGNvbnN0IDo6
dGVzdGluZzo6VGVzdFBhcmFtSW5mbzxzdGQ6OnN0cmluZz4mIGluZikgeworICAgIHJldHVybiBp
bmYucGFyYW07CisgIH0KK307CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEN1c3RvbVBhcmFt
TmFtZUZ1bmN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GdW5jdG9yTmFtaW5n
VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhzdGQ6OnN0cmluZygiRnVuY3Rv
ck5hbWUiKSksCisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21QYXJhbU5hbWVGdW5jdG9y
KCkpOworCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChBbGxBbGxvd2VkQ2hhcmFjdGVycywKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZ1bmN0b3JOYW1pbmdUZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsdWVzKCJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMDEyMzQ1Njc4OTBfIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICBDdXN0b21QYXJhbU5hbWVGdW5jdG9yKCkpOworCitpbmxpbmUgc3Rk
OjpzdHJpbmcgQ3VzdG9tUGFyYW1OYW1lRnVuY3Rpb24oCisgICAgY29uc3QgOjp0ZXN0aW5nOjpU
ZXN0UGFyYW1JbmZvPHN0ZDo6c3RyaW5nPiYgaW5mKSB7CisgIHJldHVybiBpbmYucGFyYW07Cit9
CisKK2NsYXNzIEN1c3RvbUZ1bmN0aW9uTmFtaW5nVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFt
PHN0ZDo6c3RyaW5nPiB7fTsKK1RFU1RfUChDdXN0b21GdW5jdGlvbk5hbWluZ1Rlc3QsIEN1c3Rv
bVRlc3ROYW1lcykge30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQ3VzdG9tUGFyYW1OYW1l
RnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GdW5jdGlvbk5hbWluZ1Rl
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoc3RkOjpzdHJpbmcoIkZ1bmN0aW9u
TmFtZSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbVBhcmFtTmFtZUZ1bmN0aW9u
KTsKKworI2lmIEdURVNUX0xBTkdfQ1hYMTEKKworLy8gVGVzdCBjdXN0b20gbmFtaW5nIHdpdGgg
YSBsYW1iZGEKKworY2xhc3MgQ3VzdG9tTGFtYmRhTmFtaW5nVGVzdCA6IHB1YmxpYyBUZXN0V2l0
aFBhcmFtPHN0ZDo6c3RyaW5nPiB7fTsKK1RFU1RfUChDdXN0b21MYW1iZGFOYW1pbmdUZXN0LCBD
dXN0b21UZXN0TmFtZXMpIHt9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEN1c3RvbVBhcmFt
TmFtZUxhbWJkYSwgQ3VzdG9tTGFtYmRhTmFtaW5nVGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcyhzdGQ6OnN0cmluZygiTGFtYmRhTmFtZSIpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFtdKGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzxzdGQ6OnN0cmluZz4mIGlu
ZikgeworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5mLnBhcmFtOworICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CisKKyNlbmRpZiAgLy8gR1RFU1RfTEFOR19DWFgxMQorCitU
RVNUKEN1c3RvbU5hbWluZ1Rlc3QsIENoZWNrTmFtZVJlZ2lzdHJ5KSB7CisgIDo6dGVzdGluZzo6
VW5pdFRlc3QqIHVuaXRfdGVzdCA9IDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCk7
CisgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiB0ZXN0X25hbWVzOworICBmb3IgKGludCBjYXNlX251
bSA9IDA7CisgICAgICAgY2FzZV9udW0gPCB1bml0X3Rlc3QtPnRvdGFsX3Rlc3RfY2FzZV9jb3Vu
dCgpOworICAgICAgICsrY2FzZV9udW0pIHsKKyAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RDYXNl
KiB0ZXN0X2Nhc2UgPSB1bml0X3Rlc3QtPkdldFRlc3RDYXNlKGNhc2VfbnVtKTsKKyAgICBmb3Ig
KGludCB0ZXN0X251bSA9IDA7CisgICAgICAgICB0ZXN0X251bSA8IHRlc3RfY2FzZS0+dG90YWxf
dGVzdF9jb3VudCgpOworICAgICAgICAgKyt0ZXN0X251bSkgeworICAgICAgY29uc3QgOjp0ZXN0
aW5nOjpUZXN0SW5mbyogdGVzdF9pbmZvID0gdGVzdF9jYXNlLT5HZXRUZXN0SW5mbyh0ZXN0X251
bSk7CisgICAgICB0ZXN0X25hbWVzLmluc2VydChzdGQ6OnN0cmluZyh0ZXN0X2luZm8tPm5hbWUo
KSkpOworICAgIH0KKyAgfQorICBFWFBFQ1RfRVEoMXUsIHRlc3RfbmFtZXMuY291bnQoIkN1c3Rv
bVRlc3ROYW1lcy9GdW5jdG9yTmFtZSIpKTsKKyAgRVhQRUNUX0VRKDF1LCB0ZXN0X25hbWVzLmNv
dW50KCJDdXN0b21UZXN0TmFtZXMvRnVuY3Rpb25OYW1lIikpOworI2lmIEdURVNUX0xBTkdfQ1hY
MTEKKyAgRVhQRUNUX0VRKDF1LCB0ZXN0X25hbWVzLmNvdW50KCJDdXN0b21UZXN0TmFtZXMvTGFt
YmRhTmFtZSIpKTsKKyNlbmRpZiAgLy8gR1RFU1RfTEFOR19DWFgxMQorfQorCisvLyBUZXN0IGEg
bnVtZXJpYyBuYW1lIHRvIGVuc3VyZSBQcmludFRvU3RyaW5nUGFyYW1OYW1lIHdvcmtzIGNvcnJl
Y3RseS4KKworY2xhc3MgQ3VzdG9tSW50ZWdlck5hbWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQ
YXJhbTxpbnQ+IHt9OworCitURVNUX1AoQ3VzdG9tSW50ZWdlck5hbWluZ1Rlc3QsIFRlc3RzUmVw
b3J0Q29ycmVjdE5hbWVzKSB7CisgIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRl
c3RfaW5mbyA9CisgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJl
bnRfdGVzdF9pbmZvKCk7CisgIE1lc3NhZ2UgdGVzdF9uYW1lX3N0cmVhbTsKKyAgdGVzdF9uYW1l
X3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMvIiA8PCBHZXRQYXJhbSgpOworICBF
WFBFQ1RfU1RSRVEodGVzdF9uYW1lX3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0cigpLCB0ZXN0X2lu
Zm8tPm5hbWUoKSk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFByaW50VG9TdHJpbmcs
CisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21JbnRlZ2VyTmFtaW5nVGVzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFJhbmdlKDAsIDUpLAorICAgICAgICAgICAgICAgICAgICAgICAg
Ojp0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1OYW1lKCkpOworCisvLyBUZXN0IGEgY3VzdG9t
IHN0cnVjdCB3aXRoIFByaW50VG9TdHJpbmcuCisKK3N0cnVjdCBDdXN0b21TdHJ1Y3QgeworICBl
eHBsaWNpdCBDdXN0b21TdHJ1Y3QoaW50IHZhbHVlKSA6IHgodmFsdWUpIHt9CisgIGludCB4Owor
fTsKKworc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgc3RyZWFtLCBjb25z
dCBDdXN0b21TdHJ1Y3QmIHZhbCkgeworICBzdHJlYW0gPDwgdmFsLng7CisgIHJldHVybiBzdHJl
YW07Cit9CisKK2NsYXNzIEN1c3RvbVN0cnVjdE5hbWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQ
YXJhbTxDdXN0b21TdHJ1Y3Q+IHt9OworCitURVNUX1AoQ3VzdG9tU3RydWN0TmFtaW5nVGVzdCwg
VGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMpIHsKKyAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyog
Y29uc3QgdGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2Uo
KS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKyAgTWVzc2FnZSB0ZXN0X25hbWVfc3RyZWFtOworICB0
ZXN0X25hbWVfc3RyZWFtIDw8ICJUZXN0c1JlcG9ydENvcnJlY3ROYW1lcy8iIDw8IEdldFBhcmFt
KCk7CisgIEVYUEVDVF9TVFJFUSh0ZXN0X25hbWVfc3RyZWFtLkdldFN0cmluZygpLmNfc3RyKCks
IHRlc3RfaW5mby0+bmFtZSgpKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoUHJpbnRU
b1N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbVN0cnVjdE5hbWluZ1Rlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoQ3VzdG9tU3RydWN0KDApLCBDdXN0b21T
dHJ1Y3QoMSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpQcmludFRvU3Ry
aW5nUGFyYW1OYW1lKCkpOworCisvLyBUZXN0IHRoYXQgdXNpbmcgYSBzdGF0ZWZ1bCBwYXJhbWV0
ZXIgbmFtaW5nIGZ1bmN0aW9uIHdvcmtzIGFzIGV4cGVjdGVkLgorCitzdHJ1Y3QgU3RhdGVmdWxO
YW1pbmdGdW5jdG9yIHsKKyAgU3RhdGVmdWxOYW1pbmdGdW5jdG9yKCkgOiBzdW0oMCkge30KKyAg
c3RkOjpzdHJpbmcgb3BlcmF0b3IoKShjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88aW50
PiYgaW5mbykgeworICAgIGludCB2YWx1ZSA9IGluZm8ucGFyYW0gKyBzdW07CisgICAgc3VtICs9
IGluZm8ucGFyYW07CisgICAgcmV0dXJuIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyh2YWx1ZSk7
CisgIH0KKyAgaW50IHN1bTsKK307CisKK2NsYXNzIFN0YXRlZnVsTmFtaW5nVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7CisgcHJvdGVjdGVkOgorICBTdGF0ZWZ1
bE5hbWluZ1Rlc3QoKSA6IHN1bV8oMCkge30KKyAgaW50IHN1bV87Cit9OworCitURVNUX1AoU3Rh
dGVmdWxOYW1pbmdUZXN0LCBUZXN0c1JlcG9ydENvcnJlY3ROYW1lcykgeworICBjb25zdCA6OnRl
c3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQorICAgICA6OnRlc3Rpbmc6OlVuaXRU
ZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOworICBzdW1fICs9IEdldFBh
cmFtKCk7CisgIE1lc3NhZ2UgdGVzdF9uYW1lX3N0cmVhbTsKKyAgdGVzdF9uYW1lX3N0cmVhbSA8
PCAiVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMvIiA8PCBzdW1fOworICBFWFBFQ1RfU1RSRVEodGVz
dF9uYW1lX3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0cigpLCB0ZXN0X2luZm8tPm5hbWUoKSk7Cit9
CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFN0YXRlZnVsTmFtaW5nRnVuY3RvciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFN0YXRlZnVsTmFtaW5nVGVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFJhbmdlKDAsIDUpLAorICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVmdWxOYW1p
bmdGdW5jdG9yKCkpOworCisvLyBDbGFzcyB0aGF0IGNhbm5vdCBiZSBzdHJlYW1lZCBpbnRvIGFu
IG9zdHJlYW0uICBJdCBuZWVkcyB0byBiZSBjb3B5YWJsZQorLy8gKGFuZCwgaW4gY2FzZSBvZiBN
U1ZDLCBhbHNvIGFzc2lnbmFibGUpIGluIG9yZGVyIHRvIGJlIGEgdGVzdCBwYXJhbWV0ZXIKKy8v
IHR5cGUuICBJdHMgZGVmYXVsdCBjb3B5IGNvbnN0cnVjdG9yIGFuZCBhc3NpZ25tZW50IG9wZXJh
dG9yIGRvIGV4YWN0bHkKKy8vIHdoYXQgd2UgbmVlZC4KK2NsYXNzIFVuc3RyZWFtYWJsZSB7Cisg
cHVibGljOgorICBleHBsaWNpdCBVbnN0cmVhbWFibGUoaW50IHZhbHVlKSA6IHZhbHVlXyh2YWx1
ZSkge30KKworIHByaXZhdGU6CisgIGludCB2YWx1ZV87Cit9OworCitjbGFzcyBDb21tZW50VGVz
dCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPFVuc3RyZWFtYWJsZT4ge307CisKK1RFU1RfUChDb21t
ZW50VGVzdCwgVGVzdHNDb3JyZWN0bHlSZXBvcnRVbnN0cmVhbWFibGVQYXJhbXMpIHsKKyAgY29u
c3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0aW5n
OjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKworICBFWFBF
Q1RfRVEoOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKEdldFBhcmFtKCkpLCB0ZXN0X2luZm8tPnZh
bHVlX3BhcmFtKCkpOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChJbnN0YW50aWF0aW9u
V2l0aENvbW1lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWVudFRlc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoVW5zdHJlYW1hYmxlKDEpKSk7CisKKy8vIFZlcmlm
eSB0aGF0IHdlIGNhbiBjcmVhdGUgYSBoaWVyYXJjaHkgb2YgdGVzdCBmaXh0dXJlcywgd2hlcmUg
dGhlIGJhc2UKKy8vIGNsYXNzIGZpeHR1cmUgaXMgbm90IHBhcmFtZXRlcml6ZWQgYW5kIHRoZSBk
ZXJpdmVkIGNsYXNzIGlzLiBJbiB0aGlzIGNhc2UKKy8vIFBhcmFtZXRlcml6ZWREZXJpdmVkVGVz
dCBpbmhlcml0cyBmcm9tIE5vblBhcmFtZXRlcml6ZWRCYXNlVGVzdC4gIFdlCisvLyBwZXJmb3Jt
IHNpbXBsZSB0ZXN0cyBvbiBib3RoLgorY2xhc3MgTm9uUGFyYW1ldGVyaXplZEJhc2VUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHVibGljOgorICBOb25QYXJhbWV0ZXJpemVkQmFz
ZVRlc3QoKSA6IG5fKDE3KSB7IH0KKyBwcm90ZWN0ZWQ6CisgIGludCBuXzsKK307CisKK2NsYXNz
IFBhcmFtZXRlcml6ZWREZXJpdmVkVGVzdCA6IHB1YmxpYyBOb25QYXJhbWV0ZXJpemVkQmFzZVRl
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgOjp0ZXN0aW5nOjpX
aXRoUGFyYW1JbnRlcmZhY2U8aW50PiB7CisgcHJvdGVjdGVkOgorICBQYXJhbWV0ZXJpemVkRGVy
aXZlZFRlc3QoKSA6IGNvdW50XygwKSB7IH0KKyAgaW50IGNvdW50XzsKKyAgc3RhdGljIGludCBn
bG9iYWxfY291bnRfOworfTsKKworaW50IFBhcmFtZXRlcml6ZWREZXJpdmVkVGVzdDo6Z2xvYmFs
X2NvdW50XyA9IDA7CisKK1RFU1RfRihOb25QYXJhbWV0ZXJpemVkQmFzZVRlc3QsIEZpeHR1cmVJ
c0luaXRpYWxpemVkKSB7CisgIEVYUEVDVF9FUSgxNywgbl8pOworfQorCitURVNUX1AoUGFyYW1l
dGVyaXplZERlcml2ZWRUZXN0LCBTZWVzU2VxdWVuY2UpIHsKKyAgRVhQRUNUX0VRKDE3LCBuXyk7
CisgIEVYUEVDVF9FUSgwLCBjb3VudF8rKyk7CisgIEVYUEVDVF9FUShHZXRQYXJhbSgpLCBnbG9i
YWxfY291bnRfKyspOworfQorCitjbGFzcyBQYXJhbWV0ZXJpemVkRGVhdGhUZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHsgfTsKKworVEVTVF9GKFBhcmFtZXRlcml6
ZWREZWF0aFRlc3QsIEdldFBhcmFtRGllc0Zyb21UZXN0RikgeworICBFWFBFQ1RfREVBVEhfSUZf
U1VQUE9SVEVEKEdldFBhcmFtKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi4qIHZh
bHVlLXBhcmFtZXRlcml6ZWQgdGVzdCAuKiIpOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0Vf
UChSYW5nZVplcm9Ub0ZpdmUsIFBhcmFtZXRlcml6ZWREZXJpdmVkVGVzdCwgUmFuZ2UoMCwgNSkp
OworCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICAvLyBVc2VkIGluIFRl
c3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UuCisgIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChU
ZXN0R2VuZXJhdGlvblRlc3Q6OkVudmlyb25tZW50OjpJbnN0YW5jZSgpKTsKKyAgLy8gVXNlZCBp
biBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCB0ZXN0IGNhc2UuIFRlc3RzIHRoYXQgdGhlIHVwZGF0
ZWQgdmFsdWUKKyAgLy8gd2lsbCBiZSBwaWNrZWQgdXAgZm9yIGluc3RhbnRpYXRpbmcgdGVzdHMg
aW4gR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QuCisgIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0Ojpz
ZXRfcGFyYW1fdmFsdWUoMSk7CisKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywg
YXJndik7CisKKyAgLy8gVXNlZCBpbiBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCB0ZXN0IGNhc2Uu
IFRlc3RzIHRoYXQgdmFsdWUgdXBkYXRlZAorICAvLyBoZXJlIHdpbGwgTk9UIGJlIHVzZWQgZm9y
IGluc3RhbnRpYXRpbmcgdGVzdHMgaW4KKyAgLy8gR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QuCisg
IEdlbmVyYXRvckV2YWx1YXRpb25UZXN0OjpzZXRfcGFyYW1fdmFsdWUoMik7CisKKyAgcmV0dXJu
IFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzJhNjFm
NDkyNmJhOTIyNTE1OWRiNDY5ODEwZTQxY2FjMGQyMGM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5oCkBA
IC0wLDAgKzEsNTEgQEAKKy8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKy8vCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAo
R29vZ2xlIFRlc3QpCisvLworLy8gVGhpcyBoZWFkZXIgZmlsZSBwcm92aWRlcyBjbGFzc2VzIGFu
ZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5CisvLyBmb3IgdGVzdGluZyBHb29nbGUgVGVzdCBp
dHNlbGYuCisKKyNpZm5kZWYgR1RFU1RfVEVTVF9HVEVTVF9QQVJBTV9URVNUX1RFU1RfSF8KKyNk
ZWZpbmUgR1RFU1RfVEVTVF9HVEVTVF9QQVJBTV9URVNUX1RFU1RfSF8KKworI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LmgiCisKKy8vIFRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyBkZWZpbml0aW9uIGFu
ZCBpbnN0YW50aWF0aW9uIG9mIGEgdGVzdAorLy8gaW4gc2VwYXJhdGUgdHJhbnNsYXRpb24gdW5p
dHMuCitjbGFzcyBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0IDogcHVibGljIDo6dGVzdGluZzo6
VGVzdFdpdGhQYXJhbTxpbnQ+IHsKK307CisKKy8vIFRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyBp
bnN0YW50aWF0aW9uIG9mIGEgdGVzdCBpbiBtdWx0aXBsZQorLy8gdHJhbnNsYXRpb24gdW5pdHMu
CitjbGFzcyBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QKKyAgICA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7Cit9OworCisjZW5kaWYgIC8v
IEdURVNUX1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdDItdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0Mi10ZXN0LmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI1YmI5NDVjMmY4ZWQyOWZkOTA4NTZiMjNlMDNjMDFlMmE4NDMwNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qt
cGFyYW0tdGVzdDItdGVzdC5jYwpAQCAtMCwwICsxLDYxIEBACisvLyBDb3B5cmlnaHQgMjAwOCwg
R29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
Ky8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vCisvLyBUZXN0cyBmb3IgR29vZ2xlIFRlc3Qg
aXRzZWxmLiAgVGhpcyB2ZXJpZmllcyB0aGF0IHRoZSBiYXNpYyBjb25zdHJ1Y3RzIG9mCisvLyBH
b29nbGUgVGVzdCB3b3JrLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJ0
ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmgiCisKK3VzaW5nIDo6dGVzdGluZzo6VmFs
dWVzOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I7CisKKy8vIFRl
c3RzIHRoYXQgZ2VuZXJhdG9ycyBkZWZpbmVkIGluIGEgZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVu
aXQKKy8vIGFyZSBmdW5jdGlvbmFsLiBUaGUgdGVzdCB1c2luZyBleHRlcm5fZ2VuIGlzIGRlZmlu
ZWQKKy8vIGluIGdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmNjLgorUGFyYW1HZW5lcmF0b3I8
aW50PiBleHRlcm5fZ2VuID0gVmFsdWVzKDMzKTsKKworLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRl
cml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBkZWZpbmVkIGluIG9uZSB0cmFuc2xhdGlvbiB1bml0Cisv
LyBhbmQgaW5zdGFudGlhdGVkIGluIGFub3RoZXIuIFRoZSB0ZXN0IGlzIGRlZmluZWQgaW4KKy8v
IGdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmNjIGFuZCBFeHRlcm5hbEluc3RhbnRpYXRpb25U
ZXN0IGZpeHR1cmUgY2xhc3MgaXMKKy8vIGRlZmluZWQgaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0
LmguCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChNdWx0aXBsZXNPZjMzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgRXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbHVlcygzMywgNjYpKTsKKworLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQg
dGVzdCBjYXNlIGNhbiBiZSBpbnN0YW50aWF0ZWQKKy8vIGluIG11bHRpcGxlIHRyYW5zbGF0aW9u
IHVuaXRzLiBBbm90aGVyIGluc3RhbnRpYXRpb24gaXMgZGVmaW5lZAorLy8gaW4gZ29vZ2xldGVz
dC1wYXJhbS10ZXN0LXRlc3QuY2MgYW5kCisvLyBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5z
bGFpb25Vbml0c1Rlc3QgZml4dHVyZSBpcyBkZWZpbmVkIGluCisvLyBndGVzdC1wYXJhbS10ZXN0
X3Rlc3QuaAorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2UyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDQyKjMsIDQyKjQsIDQyKjUpKTsKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBvcnQtdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wb3J0LXRlc3Qu
Y2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzk5MzE2Zjk1YjYzN2FjYTkyZmI1YTE1NDRlYzdmYzI3YzJlZmIyNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVz
dC1wb3J0LXRlc3QuY2MKQEAgLTAsMCArMSwxMzAwIEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29v
Z2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gVGhpcyBmaWxlIHRlc3RzIHRoZSBpbnRlcm5h
bCBjcm9zcy1wbGF0Zm9ybSBzdXBwb3J0IHV0aWxpdGllcy4KKyNpbmNsdWRlIDxzdGRpby5oPgor
CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorCisjaWYgR1RFU1RfT1Nf
TUFDCisjIGluY2x1ZGUgPHRpbWUuaD4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfTUFDCisKKyNpbmNs
dWRlIDxsaXN0PgorI2luY2x1ZGUgPHV0aWxpdHk+ICAvLyBGb3Igc3RkOjpwYWlyIGFuZCBzdGQ6
Om1ha2VfcGFpci4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRl
cm5hbC1pbmwuaCIKKwordXNpbmcgc3RkOjptYWtlX3BhaXI7Cit1c2luZyBzdGQ6OnBhaXI7CisK
K25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKK1RFU1QoSXNYRGln
aXRUZXN0LCBXb3Jrc0Zvck5hcnJvd0FzY2lpKSB7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KCcw
JykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgnOScpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGln
aXQoJ0EnKSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KCdGJykpOworICBFWFBFQ1RfVFJVRShJ
c1hEaWdpdCgnYScpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoJ2YnKSk7CisKKyAgRVhQRUNU
X0ZBTFNFKElzWERpZ2l0KCctJykpOworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoJ2cnKSk7Cisg
IEVYUEVDVF9GQUxTRShJc1hEaWdpdCgnRycpKTsKK30KKworVEVTVChJc1hEaWdpdFRlc3QsIFJl
dHVybnNGYWxzZUZvck5hcnJvd05vbkFzY2lpKSB7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdChz
dGF0aWNfY2FzdDxjaGFyPignXHg4MCcpKSk7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdChzdGF0
aWNfY2FzdDxjaGFyPignMCcgfCAnXHg4MCcpKSk7Cit9CisKK1RFU1QoSXNYRGlnaXRUZXN0LCBX
b3Jrc0ZvcldpZGVBc2NpaSkgeworICBFWFBFQ1RfVFJVRShJc1hEaWdpdChMJzAnKSk7CisgIEVY
UEVDVF9UUlVFKElzWERpZ2l0KEwnOScpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoTCdBJykp
OworICBFWFBFQ1RfVFJVRShJc1hEaWdpdChMJ0YnKSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0
KEwnYScpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoTCdmJykpOworCisgIEVYUEVDVF9GQUxT
RShJc1hEaWdpdChMJy0nKSk7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdChMJ2cnKSk7CisgIEVY
UEVDVF9GQUxTRShJc1hEaWdpdChMJ0cnKSk7Cit9CisKK1RFU1QoSXNYRGlnaXRUZXN0LCBSZXR1
cm5zRmFsc2VGb3JXaWRlTm9uQXNjaWkpIHsKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KHN0YXRp
Y19jYXN0PHdjaGFyX3Q+KDB4ODApKSk7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdChzdGF0aWNf
Y2FzdDx3Y2hhcl90PihMJzAnIHwgMHg4MCkpKTsKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KHN0
YXRpY19jYXN0PHdjaGFyX3Q+KEwnMCcgfCAweDEwMCkpKTsKK30KKworY2xhc3MgQmFzZSB7Cisg
cHVibGljOgorICAvLyBDb3B5IGNvbnN0cnVjdG9yIGFuZCBhc3NpZ25tZW50IG9wZXJhdG9yIGRv
IGV4YWN0bHkgd2hhdCB3ZSBuZWVkLCBzbyB3ZQorICAvLyB1c2UgdGhlbS4KKyAgQmFzZSgpIDog
bWVtYmVyXygwKSB7fQorICBleHBsaWNpdCBCYXNlKGludCBuKSA6IG1lbWJlcl8obikge30KKyAg
dmlydHVhbCB+QmFzZSgpIHt9CisgIGludCBtZW1iZXIoKSB7IHJldHVybiBtZW1iZXJfOyB9CisK
KyBwcml2YXRlOgorICBpbnQgbWVtYmVyXzsKK307CisKK2NsYXNzIERlcml2ZWQgOiBwdWJsaWMg
QmFzZSB7CisgcHVibGljOgorICBleHBsaWNpdCBEZXJpdmVkKGludCBuKSA6IEJhc2Uobikge30K
K307CisKK1RFU1QoSW1wbGljaXRDYXN0VGVzdCwgQ29udmVydHNQb2ludGVycykgeworICBEZXJp
dmVkIGRlcml2ZWQoMCk7CisgIEVYUEVDVF9UUlVFKCZkZXJpdmVkID09IDo6dGVzdGluZzo6aW50
ZXJuYWw6OkltcGxpY2l0Q2FzdF88QmFzZSo+KCZkZXJpdmVkKSk7Cit9CisKK1RFU1QoSW1wbGlj
aXRDYXN0VGVzdCwgQ2FuVXNlSW5oZXJpdGFuY2UpIHsKKyAgRGVyaXZlZCBkZXJpdmVkKDEpOwor
ICBCYXNlIGJhc2UgPSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+KGRl
cml2ZWQpOworICBFWFBFQ1RfRVEoZGVyaXZlZC5tZW1iZXIoKSwgYmFzZS5tZW1iZXIoKSk7Cit9
CisKK2NsYXNzIENhc3RhYmxlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IENhc3RhYmxlKGJvb2wq
IGNvbnZlcnRlZCkgOiBjb252ZXJ0ZWRfKGNvbnZlcnRlZCkge30KKyAgb3BlcmF0b3IgQmFzZSgp
IHsKKyAgICAqY29udmVydGVkXyA9IHRydWU7CisgICAgcmV0dXJuIEJhc2UoKTsKKyAgfQorCisg
cHJpdmF0ZToKKyAgYm9vbCogY29udmVydGVkXzsKK307CisKK1RFU1QoSW1wbGljaXRDYXN0VGVz
dCwgQ2FuVXNlTm9uQ29uc3RDYXN0T3BlcmF0b3IpIHsKKyAgYm9vbCBjb252ZXJ0ZWQgPSBmYWxz
ZTsKKyAgQ2FzdGFibGUgY2FzdGFibGUoJmNvbnZlcnRlZCk7CisgIEJhc2UgYmFzZSA9IDo6dGVz
dGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88QmFzZT4oY2FzdGFibGUpOworICBFWFBFQ1Rf
VFJVRShjb252ZXJ0ZWQpOworfQorCitjbGFzcyBDb25zdENhc3RhYmxlIHsKKyBwdWJsaWM6Cisg
IGV4cGxpY2l0IENvbnN0Q2FzdGFibGUoYm9vbCogY29udmVydGVkKSA6IGNvbnZlcnRlZF8oY29u
dmVydGVkKSB7fQorICBvcGVyYXRvciBCYXNlKCkgY29uc3QgeworICAgICpjb252ZXJ0ZWRfID0g
dHJ1ZTsKKyAgICByZXR1cm4gQmFzZSgpOworICB9CisKKyBwcml2YXRlOgorICBib29sKiBjb252
ZXJ0ZWRfOworfTsKKworVEVTVChJbXBsaWNpdENhc3RUZXN0LCBDYW5Vc2VDb25zdENhc3RPcGVy
YXRvck9uQ29uc3RWYWx1ZXMpIHsKKyAgYm9vbCBjb252ZXJ0ZWQgPSBmYWxzZTsKKyAgY29uc3Qg
Q29uc3RDYXN0YWJsZSBjb25zdF9jYXN0YWJsZSgmY29udmVydGVkKTsKKyAgQmFzZSBiYXNlID0g
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlPihjb25zdF9jYXN0YWJsZSk7
CisgIEVYUEVDVF9UUlVFKGNvbnZlcnRlZCk7Cit9CisKK2NsYXNzIENvbnN0QW5kTm9uQ29uc3RD
YXN0YWJsZSB7CisgcHVibGljOgorICBDb25zdEFuZE5vbkNvbnN0Q2FzdGFibGUoYm9vbCogY29u
dmVydGVkLCBib29sKiBjb25zdF9jb252ZXJ0ZWQpCisgICAgICA6IGNvbnZlcnRlZF8oY29udmVy
dGVkKSwgY29uc3RfY29udmVydGVkXyhjb25zdF9jb252ZXJ0ZWQpIHt9CisgIG9wZXJhdG9yIEJh
c2UoKSB7CisgICAgKmNvbnZlcnRlZF8gPSB0cnVlOworICAgIHJldHVybiBCYXNlKCk7CisgIH0K
KyAgb3BlcmF0b3IgQmFzZSgpIGNvbnN0IHsKKyAgICAqY29uc3RfY29udmVydGVkXyA9IHRydWU7
CisgICAgcmV0dXJuIEJhc2UoKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgYm9vbCogY29udmVydGVk
XzsKKyAgYm9vbCogY29uc3RfY29udmVydGVkXzsKK307CisKK1RFU1QoSW1wbGljaXRDYXN0VGVz
dCwgQ2FuU2VsZWN0QmV0d2VlbkNvbnN0QW5kTm9uQ29uc3RDYXNyQXBwcm9wcmlhdGVseSkgewor
ICBib29sIGNvbnZlcnRlZCA9IGZhbHNlOworICBib29sIGNvbnN0X2NvbnZlcnRlZCA9IGZhbHNl
OworICBDb25zdEFuZE5vbkNvbnN0Q2FzdGFibGUgY2FzdGFibGUoJmNvbnZlcnRlZCwgJmNvbnN0
X2NvbnZlcnRlZCk7CisgIEJhc2UgYmFzZSA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0
Q2FzdF88QmFzZT4oY2FzdGFibGUpOworICBFWFBFQ1RfVFJVRShjb252ZXJ0ZWQpOworICBFWFBF
Q1RfRkFMU0UoY29uc3RfY29udmVydGVkKTsKKworICBjb252ZXJ0ZWQgPSBmYWxzZTsKKyAgY29u
c3RfY29udmVydGVkID0gZmFsc2U7CisgIGNvbnN0IENvbnN0QW5kTm9uQ29uc3RDYXN0YWJsZSBj
b25zdF9jYXN0YWJsZSgmY29udmVydGVkLCAmY29uc3RfY29udmVydGVkKTsKKyAgYmFzZSA9IDo6
dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88QmFzZT4oY29uc3RfY2FzdGFibGUpOwor
ICBFWFBFQ1RfRkFMU0UoY29udmVydGVkKTsKKyAgRVhQRUNUX1RSVUUoY29uc3RfY29udmVydGVk
KTsKK30KKworY2xhc3MgVG8geworIHB1YmxpYzoKKyAgVG8oYm9vbCogY29udmVydGVkKSB7ICpj
b252ZXJ0ZWQgPSB0cnVlOyB9ICAvLyBOT0xJTlQKK307CisKK1RFU1QoSW1wbGljaXRDYXN0VGVz
dCwgQ2FuVXNlSW1wbGljaXRDb25zdHJ1Y3RvcikgeworICBib29sIGNvbnZlcnRlZCA9IGZhbHNl
OworICBUbyB0byA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88VG8+KCZjb252
ZXJ0ZWQpOworICAodm9pZCl0bzsKKyAgRVhQRUNUX1RSVUUoY29udmVydGVkKTsKK30KKworVEVT
VChJdGVyYXRvclRyYWl0c1Rlc3QsIFdvcmtzRm9yU1RMQ29udGFpbmVySXRlcmF0b3JzKSB7Cisg
IFN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsCisgICAgICBJdGVyYXRvclRyYWl0czwgOjpzdGQ6OnZl
Y3RvcjxpbnQ+Ojpjb25zdF9pdGVyYXRvcj46OnZhbHVlX3R5cGU+KCk7CisgIFN0YXRpY0Fzc2Vy
dFR5cGVFcTxib29sLAorICAgICAgSXRlcmF0b3JUcmFpdHM8IDo6c3RkOjpsaXN0PGJvb2w+Ojpp
dGVyYXRvcj46OnZhbHVlX3R5cGU+KCk7Cit9CisKK1RFU1QoSXRlcmF0b3JUcmFpdHNUZXN0LCBX
b3Jrc0ZvclBvaW50ZXJUb05vbkNvbnN0KSB7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxjaGFyLCBJ
dGVyYXRvclRyYWl0czxjaGFyKj46OnZhbHVlX3R5cGU+KCk7CisgIFN0YXRpY0Fzc2VydFR5cGVF
cTxjb25zdCB2b2lkKiwgSXRlcmF0b3JUcmFpdHM8Y29uc3Qgdm9pZCoqPjo6dmFsdWVfdHlwZT4o
KTsKK30KKworVEVTVChJdGVyYXRvclRyYWl0c1Rlc3QsIFdvcmtzRm9yUG9pbnRlclRvQ29uc3Qp
IHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGNoYXIsIEl0ZXJhdG9yVHJhaXRzPGNvbnN0IGNoYXIq
Pjo6dmFsdWVfdHlwZT4oKTsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IHZvaWQqLAorICAg
ICAgSXRlcmF0b3JUcmFpdHM8Y29uc3Qgdm9pZCogY29uc3QqPjo6dmFsdWVfdHlwZT4oKTsKK30K
KworLy8gVGVzdHMgdGhhdCB0aGUgZWxlbWVudF90eXBlIHR5cGVkZWYgaXMgYXZhaWxhYmxlIGlu
IHNjb3BlZF9wdHIgYW5kIHJlZmVycworLy8gdG8gdGhlIHBhcmFtZXRlciB0eXBlLgorVEVTVChT
Y29wZWRQdHJUZXN0LCBEZWZpbmVzRWxlbWVudFR5cGUpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVx
PGludCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVkX3B0cjxpbnQ+OjplbGVtZW50X3R5cGU+
KCk7Cit9CisKKy8vIEZJWE1FOiBJbXBsZW1lbnQgVEhFIFJFU1Qgb2Ygc2NvcGVkX3B0ciB0ZXN0
cy4KKworVEVTVChHdGVzdENoZWNrU3ludGF4VGVzdCwgQmVoYXZlc0xpa2VBU2luZ2xlU3RhdGVt
ZW50KSB7CisgIGlmIChBbHdheXNGYWxzZSgpKQorICAgIEdURVNUX0NIRUNLXyhmYWxzZSkgPDwg
IlRoaXMgc2hvdWxkIG5ldmVyIGJlIGV4ZWN1dGVkOyAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiSXQncyBhIGNvbXBpbGF0aW9uIHRlc3Qgb25seS4iOworCisgIGlmIChBbHdheXNUcnVl
KCkpCisgICAgR1RFU1RfQ0hFQ0tfKHRydWUpOworICBlbHNlCisgICAgOyAgLy8gTk9MSU5UCisK
KyAgaWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgOyAgLy8gTk9MSU5UCisgIGVsc2UKKyAgICBHVEVT
VF9DSEVDS18odHJ1ZSkgPDwgIiI7Cit9CisKK1RFU1QoR3Rlc3RDaGVja1N5bnRheFRlc3QsIFdv
cmtzV2l0aFN3aXRjaCkgeworICBzd2l0Y2ggKDApIHsKKyAgICBjYXNlIDE6CisgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgR1RFU1RfQ0hFQ0tfKHRydWUpOworICB9CisKKyAgc3dp
dGNoICgwKQorICAgIGNhc2UgMDoKKyAgICAgIEdURVNUX0NIRUNLXyh0cnVlKSA8PCAiQ2hlY2sg
ZmFpbGVkIGluIHN3aXRjaCBjYXNlIjsKK30KKworLy8gVmVyaWZpZXMgYmVoYXZpb3Igb2YgRm9y
bWF0RmlsZUxvY2F0aW9uLgorVEVTVChGb3JtYXRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzRmls
ZUxvY2F0aW9uKSB7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICJmb28uY2Mi
LCBGb3JtYXRGaWxlTG9jYXRpb24oImZvby5jYyIsIDQyKSk7CisgIEVYUEVDVF9QUkVEX0ZPUk1B
VDIoSXNTdWJzdHJpbmcsICI0MiIsIEZvcm1hdEZpbGVMb2NhdGlvbigiZm9vLmNjIiwgNDIpKTsK
K30KKworVEVTVChGb3JtYXRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzVW5rbm93bkZpbGUpIHsK
KyAgRVhQRUNUX1BSRURfRk9STUFUMigKKyAgICAgIElzU3Vic3RyaW5nLCAidW5rbm93biBmaWxl
IiwgRm9ybWF0RmlsZUxvY2F0aW9uKE5VTEwsIDQyKSk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIo
SXNTdWJzdHJpbmcsICI0MiIsIEZvcm1hdEZpbGVMb2NhdGlvbihOVUxMLCA0MikpOworfQorCitU
RVNUKEZvcm1hdEZpbGVMb2NhdGlvblRlc3QsIEZvcm1hdHNVa25vd25MaW5lKSB7CisgIEVYUEVD
VF9FUSgiZm9vLmNjOiIsIEZvcm1hdEZpbGVMb2NhdGlvbigiZm9vLmNjIiwgLTEpKTsKK30KKwor
VEVTVChGb3JtYXRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzVWtub3duRmlsZUFuZExpbmUpIHsK
KyAgRVhQRUNUX0VRKCJ1bmtub3duIGZpbGU6IiwgRm9ybWF0RmlsZUxvY2F0aW9uKE5VTEwsIC0x
KSk7Cit9CisKKy8vIFZlcmlmaWVzIGJlaGF2aW9yIG9mIEZvcm1hdENvbXBpbGVySW5kZXBlbmRl
bnRGaWxlTG9jYXRpb24uCitURVNUKEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRp
b25UZXN0LCBGb3JtYXRzRmlsZUxvY2F0aW9uKSB7CisgIEVYUEVDVF9FUSgiZm9vLmNjOjQyIiwg
Rm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvbigiZm9vLmNjIiwgNDIpKTsKK30K
KworVEVTVChGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0
c1Vrbm93bkZpbGUpIHsKKyAgRVhQRUNUX0VRKCJ1bmtub3duIGZpbGU6NDIiLAorICAgICAgICAg
ICAgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvbihOVUxMLCA0MikpOworfQor
CitURVNUKEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRz
VWtub3duTGluZSkgeworICBFWFBFQ1RfRVEoImZvby5jYyIsIEZvcm1hdENvbXBpbGVySW5kZXBl
bmRlbnRGaWxlTG9jYXRpb24oImZvby5jYyIsIC0xKSk7Cit9CisKK1RFU1QoRm9ybWF0Q29tcGls
ZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvblRlc3QsIEZvcm1hdHNVa25vd25GaWxlQW5kTGluZSkg
eworICBFWFBFQ1RfRVEoInVua25vd24gZmlsZSIsIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRG
aWxlTG9jYXRpb24oTlVMTCwgLTEpKTsKK30KKworI2lmIEdURVNUX09TX0xJTlVYIHx8IEdURVNU
X09TX01BQyB8fCBHVEVTVF9PU19RTlggfHwgR1RFU1RfT1NfRlVDSFNJQQordm9pZCogVGhyZWFk
RnVuYyh2b2lkKiBkYXRhKSB7CisgIGludGVybmFsOjpNdXRleCogbXV0ZXggPSBzdGF0aWNfY2Fz
dDxpbnRlcm5hbDo6TXV0ZXgqPihkYXRhKTsKKyAgbXV0ZXgtPkxvY2soKTsKKyAgbXV0ZXgtPlVu
bG9jaygpOworICByZXR1cm4gTlVMTDsKK30KKworVEVTVChHZXRUaHJlYWRDb3VudFRlc3QsIFJl
dHVybnNDb3JyZWN0VmFsdWUpIHsKKyAgY29uc3Qgc2l6ZV90IHN0YXJ0aW5nX2NvdW50ID0gR2V0
VGhyZWFkQ291bnQoKTsKKyAgcHRocmVhZF90ICAgICAgIHRocmVhZF9pZDsKKworICBpbnRlcm5h
bDo6TXV0ZXggbXV0ZXg7CisgIHsKKyAgICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGxvY2soJm11dGV4
KTsKKyAgICBwdGhyZWFkX2F0dHJfdCAgYXR0cjsKKyAgICBBU1NFUlRfRVEoMCwgcHRocmVhZF9h
dHRyX2luaXQoJmF0dHIpKTsKKyAgICBBU1NFUlRfRVEoMCwgcHRocmVhZF9hdHRyX3NldGRldGFj
aHN0YXRlKCZhdHRyLCBQVEhSRUFEX0NSRUFURV9KT0lOQUJMRSkpOworCisgICAgY29uc3QgaW50
IHN0YXR1cyA9IHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRfaWQsICZhdHRyLCAmVGhyZWFkRnVuYywg
Jm11dGV4KTsKKyAgICBBU1NFUlRfRVEoMCwgcHRocmVhZF9hdHRyX2Rlc3Ryb3koJmF0dHIpKTsK
KyAgICBBU1NFUlRfRVEoMCwgc3RhdHVzKTsKKyAgICBFWFBFQ1RfRVEoc3RhcnRpbmdfY291bnQg
KyAxLCBHZXRUaHJlYWRDb3VudCgpKTsKKyAgfQorCisgIHZvaWQqIGR1bW15OworICBBU1NFUlRf
RVEoMCwgcHRocmVhZF9qb2luKHRocmVhZF9pZCwgJmR1bW15KSk7CisKKyAgLy8gVGhlIE9TIG1h
eSBub3QgaW1tZWRpYXRlbHkgcmVwb3J0IHRoZSB1cGRhdGVkIHRocmVhZCBjb3VudCBhZnRlcgor
ICAvLyBqb2luaW5nIGEgdGhyZWFkLCBjYXVzaW5nIGZsYWtpbmVzcyBpbiB0aGlzIHRlc3QuIFRv
IGNvdW50ZXIgdGhhdCwgd2UKKyAgLy8gd2FpdCBmb3IgdXAgdG8gLjUgc2Vjb25kcyBmb3IgdGhl
IE9TIHRvIHJlcG9ydCB0aGUgY29ycmVjdCB2YWx1ZS4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA1
OyArK2kpIHsKKyAgICBpZiAoR2V0VGhyZWFkQ291bnQoKSA9PSBzdGFydGluZ19jb3VudCkKKyAg
ICAgIGJyZWFrOworCisgICAgU2xlZXBNaWxsaXNlY29uZHMoMTAwKTsKKyAgfQorCisgIEVYUEVD
VF9FUShzdGFydGluZ19jb3VudCwgR2V0VGhyZWFkQ291bnQoKSk7Cit9CisjZWxzZQorVEVTVChH
ZXRUaHJlYWRDb3VudFRlc3QsIFJldHVybnNaZXJvV2hlblVuYWJsZVRvQ291bnRUaHJlYWRzKSB7
CisgIEVYUEVDVF9FUSgwVSwgR2V0VGhyZWFkQ291bnQoKSk7Cit9CisjZW5kaWYgIC8vIEdURVNU
X09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19RTlggfHwgR1RFU1RfT1NfRlVD
SFNJQQorCitURVNUKEd0ZXN0Q2hlY2tEZWF0aFRlc3QsIERpZXNXaXRoQ29ycmVjdE91dHB1dE9u
RmFpbHVyZSkgeworICBjb25zdCBib29sIGFfZmFsc2VfY29uZGl0aW9uID0gZmFsc2U7CisgIGNv
bnN0IGNoYXIgcmVnZXhbXSA9CisjaWZkZWYgX01TQ19WRVIKKyAgICAgImdvb2dsZXRlc3QtcG9y
dC10ZXN0XFwuY2NcXChcXGQrXFwpOiIKKyNlbGlmIEdURVNUX1VTRVNfUE9TSVhfUkUKKyAgICAg
Imdvb2dsZXRlc3QtcG9ydC10ZXN0XFwuY2M6WzAtOV0rIgorI2Vsc2UKKyAgICAgImdvb2dsZXRl
c3QtcG9ydC10ZXN0XFwuY2M6XFxkKyIKKyNlbmRpZiAgLy8gX01TQ19WRVIKKyAgICAgIi4qYV9m
YWxzZV9jb25kaXRpb24uKkV4dHJhIGluZm8uKiI7CisKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBP
UlRFRChHVEVTVF9DSEVDS18oYV9mYWxzZV9jb25kaXRpb24pIDw8ICJFeHRyYSBpbmZvIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWdleCk7Cit9CisKKyNpZiBHVEVTVF9IQVNfREVB
VEhfVEVTVAorCitURVNUKEd0ZXN0Q2hlY2tEZWF0aFRlc3QsIExpdmVzU2lsZW50bHlPblN1Y2Nl
c3MpIHsKKyAgRVhQRUNUX0VYSVQoeworICAgICAgR1RFU1RfQ0hFQ0tfKHRydWUpIDw8ICJFeHRy
YSBpbmZvIjsKKyAgICAgIDo6c3RkOjpjZXJyIDw8ICJTdWNjZXNzXG4iOworICAgICAgZXhpdCgw
KTsgfSwKKyAgICAgIDo6dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCksICJTdWNjZXNzIik7Cit9
CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworLy8gVmVyaWZpZXMgdGhhdCBH
b29nbGUgVGVzdCBjaG9vc2UgcmVndWxhciBleHByZXNzaW9uIGVuZ2luZSBhcHByb3ByaWF0ZSB0
bworLy8gdGhlIHBsYXRmb3JtLiBUaGUgdGVzdCB3aWxsIHByb2R1Y2UgY29tcGlsZXIgZXJyb3Jz
IGluIGNhc2Ugb2YgZmFpbHVyZS4KKy8vIEZvciBzaW1wbGljaXR5LCB3ZSBvbmx5IGNvdmVyIHRo
ZSBtb3N0IGltcG9ydGFudCBwbGF0Zm9ybXMgaGVyZS4KK1RFU1QoUmVnZXhFbmdpbmVTZWxlY3Rp
b25UZXN0LCBTZWxlY3RzQ29ycmVjdFJlZ2V4RW5naW5lKSB7CisjaWYgIUdURVNUX1VTRVNfUENS
RQorIyBpZiBHVEVTVF9IQVNfUE9TSVhfUkUKKworICBFWFBFQ1RfVFJVRShHVEVTVF9VU0VTX1BP
U0lYX1JFKTsKKworIyBlbHNlCisKKyAgRVhQRUNUX1RSVUUoR1RFU1RfVVNFU19TSU1QTEVfUkUp
OworCisjIGVuZGlmCisjZW5kaWYgIC8vICFHVEVTVF9VU0VTX1BDUkUKK30KKworI2lmIEdURVNU
X1VTRVNfUE9TSVhfUkUKKworIyBpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgU3RyPgorY2xhc3MgUkVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsK
KworLy8gRGVmaW5lcyBTdHJpbmdUeXBlcyBhcyB0aGUgbGlzdCBvZiBhbGwgc3RyaW5nIHR5cGVz
IHRoYXQgY2xhc3MgUkUKKy8vIHN1cHBvcnRzLgordHlwZWRlZiB0ZXN0aW5nOjpUeXBlczwKKyAg
ICA6OnN0ZDo6c3RyaW5nLAorIyAgaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKyAgICA6OnN0
cmluZywKKyMgIGVuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworICAgIGNvbnN0IGNo
YXIqPiBTdHJpbmdUeXBlczsKKworVFlQRURfVEVTVF9DQVNFKFJFVGVzdCwgU3RyaW5nVHlwZXMp
OworCisvLyBUZXN0cyBSRSdzIGltcGxpY2l0IGNvbnN0cnVjdG9ycy4KK1RZUEVEX1RFU1QoUkVU
ZXN0LCBJbXBsaWNpdENvbnN0cnVjdG9yV29ya3MpIHsKKyAgY29uc3QgUkUgZW1wdHkoVHlwZVBh
cmFtKCIiKSk7CisgIEVYUEVDVF9TVFJFUSgiIiwgZW1wdHkucGF0dGVybigpKTsKKworICBjb25z
dCBSRSBzaW1wbGUoVHlwZVBhcmFtKCJoZWxsbyIpKTsKKyAgRVhQRUNUX1NUUkVRKCJoZWxsbyIs
IHNpbXBsZS5wYXR0ZXJuKCkpOworCisgIGNvbnN0IFJFIG5vcm1hbChUeXBlUGFyYW0oIi4qKFxc
dyspIikpOworICBFWFBFQ1RfU1RSRVEoIi4qKFxcdyspIiwgbm9ybWFsLnBhdHRlcm4oKSk7Cit9
CisKKy8vIFRlc3RzIHRoYXQgUkUncyBjb25zdHJ1Y3RvcnMgcmVqZWN0IGludmFsaWQgcmVndWxh
ciBleHByZXNzaW9ucy4KK1RZUEVEX1RFU1QoUkVUZXN0LCBSZWplY3RzSW52YWxpZFJlZ2V4KSB7
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKKyAgICBjb25zdCBSRSBpbnZhbGlkKFR5cGVQ
YXJhbSgiPyIpKTsKKyAgfSwgIlwiP1wiIGlzIG5vdCBhIHZhbGlkIFBPU0lYIEV4dGVuZGVkIHJl
Z3VsYXIgZXhwcmVzc2lvbi4iKTsKK30KKworLy8gVGVzdHMgUkU6OkZ1bGxNYXRjaCgpLgorVFlQ
RURfVEVTVChSRVRlc3QsIEZ1bGxNYXRjaFdvcmtzKSB7CisgIGNvbnN0IFJFIGVtcHR5KFR5cGVQ
YXJhbSgiIikpOworICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiIiksIGVt
cHR5KSk7CisgIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYSIpLCBlbXB0
eSkpOworCisgIGNvbnN0IFJFIHJlKFR5cGVQYXJhbSgiYS4qeiIpKTsKKyAgRVhQRUNUX1RSVUUo
UkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oImF6IiksIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpG
dWxsTWF0Y2goVHlwZVBhcmFtKCJheHl6IiksIHJlKSk7CisgIEVYUEVDVF9GQUxTRShSRTo6RnVs
bE1hdGNoKFR5cGVQYXJhbSgiYmF6IiksIHJlKSk7CisgIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1h
dGNoKFR5cGVQYXJhbSgiYXp5IiksIHJlKSk7Cit9CisKKy8vIFRlc3RzIFJFOjpQYXJ0aWFsTWF0
Y2goKS4KK1RZUEVEX1RFU1QoUkVUZXN0LCBQYXJ0aWFsTWF0Y2hXb3JrcykgeworICBjb25zdCBS
RSBlbXB0eShUeXBlUGFyYW0oIiIpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChU
eXBlUGFyYW0oIiIpLCBlbXB0eSkpOworICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5
cGVQYXJhbSgiYSIpLCBlbXB0eSkpOworCisgIGNvbnN0IFJFIHJlKFR5cGVQYXJhbSgiYS4qeiIp
KTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oImF6IiksIHJlKSk7
CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCJheHl6IiksIHJlKSk7
CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCJiYXoiKSwgcmUpKTsK
KyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oImF6eSIpLCByZSkpOwor
ICBFWFBFQ1RfRkFMU0UoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oInp6YSIpLCByZSkpOwor
fQorCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAorCisjZWxpZiBHVEVTVF9VU0VT
X1NJTVBMRV9SRQorCitURVNUKElzSW5TZXRUZXN0LCBOdWxDaGFySXNOb3RJbkFueVNldCkgewor
ICBFWFBFQ1RfRkFMU0UoSXNJblNldCgnXDAnLCAiIikpOworICBFWFBFQ1RfRkFMU0UoSXNJblNl
dCgnXDAnLCAiXDAiKSk7CisgIEVYUEVDVF9GQUxTRShJc0luU2V0KCdcMCcsICJhIikpOworfQor
CitURVNUKElzSW5TZXRUZXN0LCBXb3Jrc0Zvck5vbk51bENoYXJzKSB7CisgIEVYUEVDVF9GQUxT
RShJc0luU2V0KCdhJywgIkFiIikpOworICBFWFBFQ1RfRkFMU0UoSXNJblNldCgnYycsICIiKSk7
CisKKyAgRVhQRUNUX1RSVUUoSXNJblNldCgnYicsICJiY2QiKSk7CisgIEVYUEVDVF9UUlVFKElz
SW5TZXQoJ2InLCAiYWIiKSk7Cit9CisKK1RFU1QoSXNBc2NpaURpZ2l0VGVzdCwgSXNGYWxzZUZv
ck5vbkRpZ2l0KSB7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpRGlnaXQoJ1wwJykpOworICBFWFBF
Q1RfRkFMU0UoSXNBc2NpaURpZ2l0KCcgJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaURpZ2l0
KCcrJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaURpZ2l0KCctJykpOworICBFWFBFQ1RfRkFM
U0UoSXNBc2NpaURpZ2l0KCcuJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaURpZ2l0KCdhJykp
OworfQorCitURVNUKElzQXNjaWlEaWdpdFRlc3QsIElzVHJ1ZUZvckRpZ2l0KSB7CisgIEVYUEVD
VF9UUlVFKElzQXNjaWlEaWdpdCgnMCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaURpZ2l0KCcx
JykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpRGlnaXQoJzUnKSk7CisgIEVYUEVDVF9UUlVFKElz
QXNjaWlEaWdpdCgnOScpKTsKK30KKworVEVTVChJc0FzY2lpUHVuY3RUZXN0LCBJc0ZhbHNlRm9y
Tm9uUHVuY3QpIHsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlQdW5jdCgnXDAnKSk7CisgIEVYUEVD
VF9GQUxTRShJc0FzY2lpUHVuY3QoJyAnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3Qo
J1xuJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVB1bmN0KCdhJykpOworICBFWFBFQ1RfRkFM
U0UoSXNBc2NpaVB1bmN0KCcwJykpOworfQorCitURVNUKElzQXNjaWlQdW5jdFRlc3QsIElzVHJ1
ZUZvclB1bmN0KSB7CisgIGZvciAoY29uc3QgY2hhciogcCA9ICJeLSFcIiMkJSYnKCkqKywuLzo7
PD0+P0BbXFxdX2B7fH1+IjsgKnA7IHArKykgeworICAgIEVYUEVDVF9QUkVEMShJc0FzY2lpUHVu
Y3QsICpwKTsKKyAgfQorfQorCitURVNUKElzUmVwZWF0VGVzdCwgSXNGYWxzZUZvck5vblJlcGVh
dENoYXIpIHsKKyAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNF
KElzUmVwZWF0KCcgJykpOworICBFWFBFQ1RfRkFMU0UoSXNSZXBlYXQoJ2EnKSk7CisgIEVYUEVD
VF9GQUxTRShJc1JlcGVhdCgnMScpKTsKKyAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCctJykpOwor
fQorCitURVNUKElzUmVwZWF0VGVzdCwgSXNUcnVlRm9yUmVwZWF0Q2hhcikgeworICBFWFBFQ1Rf
VFJVRShJc1JlcGVhdCgnPycpKTsKKyAgRVhQRUNUX1RSVUUoSXNSZXBlYXQoJyonKSk7CisgIEVY
UEVDVF9UUlVFKElzUmVwZWF0KCcrJykpOworfQorCitURVNUKElzQXNjaWlXaGl0ZVNwYWNlVGVz
dCwgSXNGYWxzZUZvck5vbldoaXRlU3BhY2UpIHsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXaGl0
ZVNwYWNlKCdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXaGl0ZVNwYWNlKCdhJykpOwor
ICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdoaXRlU3BhY2UoJzEnKSk7CisgIEVYUEVDVF9GQUxTRShJ
c0FzY2lpV2hpdGVTcGFjZSgnKycpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXaGl0ZVNwYWNl
KCdfJykpOworfQorCitURVNUKElzQXNjaWlXaGl0ZVNwYWNlVGVzdCwgSXNUcnVlRm9yV2hpdGVT
cGFjZSkgeworICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnICcpKTsKKyAgRVhQRUNU
X1RSVUUoSXNBc2NpaVdoaXRlU3BhY2UoJ1xuJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hp
dGVTcGFjZSgnXHInKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXaGl0ZVNwYWNlKCdcdCcpKTsK
KyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdoaXRlU3BhY2UoJ1x2JykpOworICBFWFBFQ1RfVFJVRShJ
c0FzY2lpV2hpdGVTcGFjZSgnXGYnKSk7Cit9CisKK1RFU1QoSXNBc2NpaVdvcmRDaGFyVGVzdCwg
SXNGYWxzZUZvck5vbldvcmRDaGFyKSB7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV29yZENoYXIo
J1wwJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdvcmRDaGFyKCcrJykpOworICBFWFBFQ1Rf
RkFMU0UoSXNBc2NpaVdvcmRDaGFyKCcuJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdvcmRD
aGFyKCcgJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdvcmRDaGFyKCdcbicpKTsKK30KKwor
VEVTVChJc0FzY2lpV29yZENoYXJUZXN0LCBJc1RydWVGb3JMZXR0ZXIpIHsKKyAgRVhQRUNUX1RS
VUUoSXNBc2NpaVdvcmRDaGFyKCdhJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIo
J2InKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignQScpKTsKKyAgRVhQRUNUX1RS
VUUoSXNBc2NpaVdvcmRDaGFyKCdaJykpOworfQorCitURVNUKElzQXNjaWlXb3JkQ2hhclRlc3Qs
IElzVHJ1ZUZvckRpZ2l0KSB7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignMCcpKTsK
KyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCcxJykpOworICBFWFBFQ1RfVFJVRShJc0Fz
Y2lpV29yZENoYXIoJzcnKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignOScpKTsK
K30KKworVEVTVChJc0FzY2lpV29yZENoYXJUZXN0LCBJc1RydWVGb3JVbmRlcnNjb3JlKSB7Cisg
IEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignXycpKTsKK30KKworVEVTVChJc1ZhbGlkRXNj
YXBlVGVzdCwgSXNGYWxzZUZvck5vblByaW50YWJsZSkgeworICBFWFBFQ1RfRkFMU0UoSXNWYWxp
ZEVzY2FwZSgnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdcMDA3JykpOwor
fQorCitURVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc0ZhbHNlRm9yRGlnaXQpIHsKKyAgRVhQRUNU
X0ZBTFNFKElzVmFsaWRFc2NhcGUoJzAnKSk7CisgIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBl
KCc5JykpOworfQorCitURVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc0ZhbHNlRm9yV2hpdGVTcGFj
ZSkgeworICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnICcpKTsKKyAgRVhQRUNUX0ZBTFNF
KElzVmFsaWRFc2NhcGUoJ1xuJykpOworfQorCitURVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc0Zh
bHNlRm9yU29tZUxldHRlcikgeworICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnYScpKTsK
KyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJ1onKSk7Cit9CisKK1RFU1QoSXNWYWxpZEVz
Y2FwZVRlc3QsIElzVHJ1ZUZvclB1bmN0KSB7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUo
Jy4nKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJy0nKSk7CisgIEVYUEVDVF9UUlVF
KElzVmFsaWRFc2NhcGUoJ14nKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJyQnKSk7
CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJygnKSk7CisgIEVYUEVDVF9UUlVFKElzVmFs
aWRFc2NhcGUoJ10nKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ3snKSk7CisgIEVY
UEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ3wnKSk7Cit9CisKK1RFU1QoSXNWYWxpZEVzY2FwZVRl
c3QsIElzVHJ1ZUZvclNvbWVMZXR0ZXIpIHsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgn
ZCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnRCcpKTsKKyAgRVhQRUNUX1RSVUUo
SXNWYWxpZEVzY2FwZSgncycpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnUycpKTsK
KyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgndycpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxp
ZEVzY2FwZSgnVycpKTsKK30KKworVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkUHVu
Y3QpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXFwnLCAnXDAnKSk7
CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1xcJywgJyAnKSk7CisgIEVY
UEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ18nLCAnLicpKTsKKyAgRVhQRUNUX0ZB
TFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnLicsICdhJykpOworCisgIEVYUEVDVF9UUlVFKEF0
b21NYXRjaGVzQ2hhcih0cnVlLCAnXFwnLCAnXFwnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAnXycsICdfJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJysnLCAnKycpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICcu
JywgJy4nKSk7Cit9CisKK1RFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF9kKSB7Cisg
IEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnXDAnKSk7CisgIEVYUEVD
VF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnYScpKTsKKyAgRVhQRUNUX0ZBTFNF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICcuJykpOworCisgIEVYUEVDVF9UUlVFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAnZCcsICcwJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ2QnLCAnOScpKTsKK30KKworVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2Nh
cGVkX0QpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcsICcwJykp
OworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJzknKSk7CisKKyAg
RVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJ1wwJykpOworICBFWFBFQ1Rf
VFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0QnLCAnYScpKTsKKyAgRVhQRUNUX1RSVUUoQXRv
bU1hdGNoZXNDaGFyKHRydWUsICdEJywgJy0nKSk7Cit9CisKK1RFU1QoQXRvbU1hdGNoZXNDaGFy
VGVzdCwgRXNjYXBlZF9zKSB7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwg
J3MnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAn
YScpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICcuJykpOwor
ICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJzknKSk7CisKKyAgRVhQ
RUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJyAnKSk7CisgIEVYUEVDVF9UUlVF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICdcbicpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICdzJywgJ1x0JykpOworfQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRl
c3QsIEVzY2FwZWRfUykgeworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdT
JywgJyAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnXHIn
KSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdTJywgJ1wwJykpOwor
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnYScpKTsKKyAgRVhQRUNU
X1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdTJywgJzknKSk7Cit9CisKK1RFU1QoQXRvbU1h
dGNoZXNDaGFyVGVzdCwgRXNjYXBlZF93KSB7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ3cnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ3cnLCAnKycpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycs
ICcgJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJ1xuJykp
OworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICcwJykpOworICBF
WFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnYicpKTsKKyAgRVhQRUNUX1RS
VUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJ0MnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAndycsICdfJykpOworfQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRl
c3QsIEVzY2FwZWRfVykgeworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdX
JywgJ0EnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnYicp
KTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICc5JykpOworICBF
WFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJ18nKSk7CisKKyAgRVhQRUNU
X1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJ1wwJykpOworICBFWFBFQ1RfVFJVRShB
dG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnKicpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNo
ZXNDaGFyKHRydWUsICdXJywgJ1xuJykpOworfQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3Qs
IEVzY2FwZWRXaGl0ZVNwYWNlKSB7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ2YnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2Yn
LCAnXG4nKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ24nLCAnXDAn
KSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ24nLCAnXHInKSk7Cisg
IEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3InLCAnXDAnKSk7CisgIEVYUEVD
VF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3InLCAnYScpKTsKKyAgRVhQRUNUX0ZBTFNF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndCcsICdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAndCcsICd0JykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICd2JywgJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICd2JywgJ1xmJykpOworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
ZicsICdcZicpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICduJywgJ1xu
JykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3InLCAnXHInKSk7Cisg
IEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndCcsICdcdCcpKTsKKyAgRVhQRUNU
X1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd2JywgJ1x2JykpOworfQorCitURVNUKEF0b21N
YXRjaGVzQ2hhclRlc3QsIFVuZXNjYXBlZERvdCkgeworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNo
ZXNDaGFyKGZhbHNlLCAnLicsICdcbicpKTsKKworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0No
YXIoZmFsc2UsICcuJywgJ1wwJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFs
c2UsICcuJywgJy4nKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4n
LCAnYScpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnLicsICcgJykp
OworfQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIFVuZXNjYXBlZENoYXIpIHsKKyAgRVhQ
RUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJ2EnLCAnXDAnKSk7CisgIEVYUEVDVF9G
QUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICdhJywgJ2InKSk7CisgIEVYUEVDVF9GQUxTRShB
dG9tTWF0Y2hlc0NoYXIoZmFsc2UsICckJywgJ2EnKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1h
dGNoZXNDaGFyKGZhbHNlLCAnJCcsICckJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0No
YXIoZmFsc2UsICc1JywgJzUnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxz
ZSwgJ1onLCAnWicpKTsKK30KKworVEVTVChWYWxpZGF0ZVJlZ2V4VGVzdCwgR2VuZXJhdGVzRmFp
bHVyZUFuZFJldHVybnNGYWxzZUZvckludmFsaWQpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoTlVMTCkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAiTlVMTCBpcyBub3QgYSB2YWxpZCBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uIik7
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAorICAgICAgQVNTRVJUX0ZBTFNFKFZhbGlkYXRl
UmVnZXgoImFcXCIpKSwKKyAgICAgICJTeW50YXggZXJyb3IgYXQgaW5kZXggMSBpbiBzaW1wbGUg
cmVndWxhciBleHByZXNzaW9uIFwiYVxcXCI6ICIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiYVxcIikpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAiJ1xcJyBjYW5ub3QgYXBwZWFyIGF0IHRoZSBlbmQiKTsKKyAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIlxcblxcIikpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiJ1xcJyBjYW5ub3QgYXBwZWFyIGF0IHRoZSBlbmQiKTsKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIlxcc1xc
aGIiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGVzY2FwZSBzZXF1ZW5j
ZSBcIlxcaFwiIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxp
ZGF0ZVJlZ2V4KCJeXiIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIideJyBjYW4gb25s
eSBhcHBlYXIgYXQgdGhlIGJlZ2lubmluZyIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShB
U1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiLipeYiIpKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIideJyBjYW4gb25seSBhcHBlYXIgYXQgdGhlIGJlZ2lubmluZyIpOworICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiJCQiKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICInJCcgY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBlbmQiKTsK
KyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIl4k
YSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIickJyBjYW4gb25seSBhcHBlYXIgYXQg
dGhlIGVuZCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRh
dGVSZWdleCgiYShiIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJygnIGlzIHVuc3Vw
cG9ydGVkIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0
ZVJlZ2V4KCJhYikiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICInKScgaXMgdW5zdXBw
b3J0ZWQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRl
UmVnZXgoIlthYiIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIidbJyBpcyB1bnN1cHBv
cnRlZCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVS
ZWdleCgiYXsyIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3snIGlzIHVuc3VwcG9y
dGVkIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJl
Z2V4KCI/IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJz8nIGNhbiBvbmx5IGZvbGxv
dyBhIHJlcGVhdGFibGUgdG9rZW4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJU
X0ZBTFNFKFZhbGlkYXRlUmVnZXgoIl4qIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAi
JyonIGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVhdGFibGUgdG9rZW4iKTsKKyAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIjUqKyIpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIicrJyBjYW4gb25seSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2Vu
Iik7Cit9CisKK1RFU1QoVmFsaWRhdGVSZWdleFRlc3QsIFJldHVybnNUcnVlRm9yVmFsaWQpIHsK
KyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiIikpOworICBFWFBFQ1RfVFJVRShWYWxpZGF0
ZVJlZ2V4KCJhIikpOworICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCIuKiIpKTsKKyAgRVhQ
RUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiXmFfKyIpKTsKKyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVS
ZWdleCgiXmFcXHRcXCY/IikpOworICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCIwOSokIikp
OworICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCJeWiQiKSk7CisgIEVYUEVDVF9UUlVFKFZh
bGlkYXRlUmVnZXgoImFcXF5aXFwkXFwoXFwpXFx8XFxbXFxdXFx7XFx9IikpOworfQorCitURVNU
KE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NGb3JaZXJvT3JPbmUpIHsK
KyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnYScs
ICc/JywgImEiLCAiYmEiKSk7CisgIC8vIFJlcGVhdGluZyBtb3JlIHRoYW4gb25jZS4KKyAgRVhQ
RUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnYScsICc/Jywg
ImIiLCAiYWFiIikpOworCisgIC8vIFJlcGVhdGluZyB6ZXJvIHRpbWVzLgorICBFWFBFQ1RfVFJV
RShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJ2EnLCAnPycsICJiIiwgImJh
IikpOworICAvLyBSZXBlYXRpbmcgb25jZS4KKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9u
QW5kUmVnZXhBdEhlYWQoZmFsc2UsICdhJywgJz8nLCAiYiIsICJhYiIpKTsKKyAgRVhQRUNUX1RS
VUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcjJywgJz8nLCAiLiIsICIj
IyIpKTsKK30KKworVEVTVChNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZFRlc3QsIFdvcmtz
Rm9yWmVyb09yTWFueSkgeworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhB
dEhlYWQoZmFsc2UsICcuJywgJyonLCAiYSQiLCAiYmFhYiIpKTsKKworICAvLyBSZXBlYXRpbmcg
emVybyB0aW1lcy4KKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQo
ZmFsc2UsICcuJywgJyonLCAiYiIsICJiYyIpKTsKKyAgLy8gUmVwZWF0aW5nIG9uY2UuCisgIEVY
UEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcqJywg
ImIiLCAiYWJjIikpOworICAvLyBSZXBlYXRpbmcgbW9yZSB0aGFuIG9uY2UuCisgIEVYUEVDVF9U
UlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKHRydWUsICd3JywgJyonLCAiLSIsICJh
Yl8xLWciKSk7Cit9CisKK1RFU1QoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWRUZXN0LCBX
b3Jrc0Zvck9uZU9yTWFueSkgeworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVn
ZXhBdEhlYWQoZmFsc2UsICcuJywgJysnLCAiYSQiLCAiYmFhYiIpKTsKKyAgLy8gUmVwZWF0aW5n
IHplcm8gdGltZXMuCisgIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVh
ZChmYWxzZSwgJy4nLCAnKycsICJiIiwgImJjIikpOworCisgIC8vIFJlcGVhdGluZyBvbmNlLgor
ICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAn
KycsICJiIiwgImFiYyIpKTsKKyAgLy8gUmVwZWF0aW5nIG1vcmUgdGhhbiBvbmNlLgorICBFWFBF
Q1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZCh0cnVlLCAndycsICcrJywgIi0i
LCAiYWJfMS1nIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBSZXR1cm5zVHJ1
ZUZvckVtcHR5UmVnZXgpIHsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiIiwgIiIp
KTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiIiwgImFiIikpOworfQorCitURVNU
KE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc1doZW5Eb2xsYXJJc0luUmVnZXgpIHsKKyAgRVhQ
RUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIiQiLCAiYSIpKTsKKworICBFWFBFQ1RfVFJVRShN
YXRjaFJlZ2V4QXRIZWFkKCIkIiwgIiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVh
ZCgiYSQiLCAiYSIpKTsKK30KKworVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NXaGVu
UmVnZXhTdGFydHNXaXRoRXNjYXBlU2VxdWVuY2UpIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVn
ZXhBdEhlYWQoIlxcdyIsICIrIikpOworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgi
XFxXIiwgImFiIikpOworCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcc2EiLCAi
XG5hYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxkIiwgIjFhIikpOwor
fQorCitURVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhS
ZXBldGl0aW9uKSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCIuK2EiLCAiYWJj
IikpOworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiYT9iIiwgImFhYiIpKTsKKwor
ICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCIuKmEiLCAiYmMxMi1hYiIpKTsKKyAgRVhQ
RUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiYT9iIiwgImIiKSk7CisgIEVYUEVDVF9UUlVFKE1h
dGNoUmVnZXhBdEhlYWQoImE/YiIsICJhYiIpKTsKK30KKworVEVTVChNYXRjaFJlZ2V4QXRIZWFk
VGVzdCwKKyAgICAgV29ya3NXaGVuUmVnZXhTdGFydHNXaXRoUmVwZXRpb25PZkVzY2FwZVNlcXVl
bmNlKSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJcXC4rYSIsICJhYmMiKSk7
CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJcXHM/YiIsICIgIGIiKSk7CisKKyAg
RVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFwoKmEiLCAiKCgoKGFiIikpOworICBFWFBF
Q1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXF4/YiIsICJeYiIpKTsKKyAgRVhQRUNUX1RSVUUo
TWF0Y2hSZWdleEF0SGVhZCgiXFxcXD9iIiwgImIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVn
ZXhBdEhlYWQoIlxcXFw/YiIsICJcXGIiKSk7Cit9CisKK1RFU1QoTWF0Y2hSZWdleEF0SGVhZFRl
c3QsIE1hdGNoZXNTZXF1ZW50aWFsbHkpIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhl
YWQoImFiLipjIiwgImFjYWJjIikpOworCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQo
ImFiLipjIiwgImFiLWZzYyIpKTsKK30KKworVEVTVChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBS
ZXR1cm5zRmFsc2VXaGVuU3RyaW5nSXNOdWxsKSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4
QW55d2hlcmUoIiIsIE5VTEwpKTsKK30KKworVEVTVChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBX
b3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhDYXJldCkgeworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdl
eEFueXdoZXJlKCJeYSIsICJiYSIpKTsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVy
ZSgiXiQiLCAiYSIpKTsKKworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIl5hIiwg
ImFiIikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIl4iLCAiYWIiKSk7Cisg
IEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXiQiLCAiIikpOworfQorCitURVNUKE1h
dGNoUmVnZXhBbnl3aGVyZVRlc3QsIFJldHVybnNGYWxzZVdoZW5Ob01hdGNoKSB7CisgIEVYUEVD
VF9GQUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoImEiLCAiYmNkZTEyMyIpKTsKKyAgRVhQRUNUX0ZB
TFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiYS4rYSIsICItLWFhODg4ODg4ODgiKSk7Cit9CisKK1RF
U1QoTWF0Y2hSZWdleEFueXdoZXJlVGVzdCwgUmV0dXJuc1RydWVXaGVuTWF0Y2hpbmdQcmVmaXgp
IHsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJcXHcrIiwgImFiMV8gLSA1Iikp
OworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIi4qPSIsICI9IikpOworICBFWFBF
Q1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoInguKmFiPy4qYmMiLCAieGFhYWJjIikpOworfQor
CitURVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFJldHVybnNUcnVlV2hlbk1hdGNoaW5nTm9u
UHJlZml4KSB7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXFx3KyIsICIkJCQg
YWIxXyAtIDUiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXFwuKz0iLCAi
PSAgLi4uPSIpKTsKK30KKworLy8gVGVzdHMgUkUncyBpbXBsaWNpdCBjb25zdHJ1Y3RvcnMuCitU
RVNUKFJFVGVzdCwgSW1wbGljaXRDb25zdHJ1Y3RvcldvcmtzKSB7CisgIGNvbnN0IFJFIGVtcHR5
KCIiKTsKKyAgRVhQRUNUX1NUUkVRKCIiLCBlbXB0eS5wYXR0ZXJuKCkpOworCisgIGNvbnN0IFJF
IHNpbXBsZSgiaGVsbG8iKTsKKyAgRVhQRUNUX1NUUkVRKCJoZWxsbyIsIHNpbXBsZS5wYXR0ZXJu
KCkpOworfQorCisvLyBUZXN0cyB0aGF0IFJFJ3MgY29uc3RydWN0b3JzIHJlamVjdCBpbnZhbGlk
IHJlZ3VsYXIgZXhwcmVzc2lvbnMuCitURVNUKFJFVGVzdCwgUmVqZWN0c0ludmFsaWRSZWdleCkg
eworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAgY29uc3QgUkUgbm9ybWFsKE5VTEwp
OworICB9LCAiTlVMTCBpcyBub3QgYSB2YWxpZCBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uIik7
CisKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIGNvbnN0IFJFIG5vcm1hbCgiLioo
XFx3KyIpOworICB9LCAiJygnIGlzIHVuc3VwcG9ydGVkIik7CisKKyAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoeworICAgIGNvbnN0IFJFIGludmFsaWQoIl4/Iik7CisgIH0sICInPycgY2FuIG9u
bHkgZm9sbG93IGEgcmVwZWF0YWJsZSB0b2tlbiIpOworfQorCisvLyBUZXN0cyBSRTo6RnVsbE1h
dGNoKCkuCitURVNUKFJFVGVzdCwgRnVsbE1hdGNoV29ya3MpIHsKKyAgY29uc3QgUkUgZW1wdHko
IiIpOworICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKCIiLCBlbXB0eSkpOworICBFWFBFQ1Rf
RkFMU0UoUkU6OkZ1bGxNYXRjaCgiYSIsIGVtcHR5KSk7CisKKyAgY29uc3QgUkUgcmUxKCJhIik7
CisgIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goImEiLCByZTEpKTsKKworICBjb25zdCBSRSBy
ZSgiYS4qeiIpOworICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKCJheiIsIHJlKSk7CisgIEVY
UEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goImF4eXoiLCByZSkpOworICBFWFBFQ1RfRkFMU0UoUkU6
OkZ1bGxNYXRjaCgiYmF6IiwgcmUpKTsKKyAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goImF6
eSIsIHJlKSk7Cit9CisKKy8vIFRlc3RzIFJFOjpQYXJ0aWFsTWF0Y2goKS4KK1RFU1QoUkVUZXN0
LCBQYXJ0aWFsTWF0Y2hXb3JrcykgeworICBjb25zdCBSRSBlbXB0eSgiIik7CisgIEVYUEVDVF9U
UlVFKFJFOjpQYXJ0aWFsTWF0Y2goIiIsIGVtcHR5KSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0
aWFsTWF0Y2goImEiLCBlbXB0eSkpOworCisgIGNvbnN0IFJFIHJlKCJhLip6Iik7CisgIEVYUEVD
VF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImF6IiwgcmUpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBh
cnRpYWxNYXRjaCgiYXh5eiIsIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2go
ImJheiIsIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImF6eSIsIHJlKSk7
CisgIEVYUEVDVF9GQUxTRShSRTo6UGFydGlhbE1hdGNoKCJ6emEiLCByZSkpOworfQorCisjZW5k
aWYgIC8vIEdURVNUX1VTRVNfUE9TSVhfUkUKKworI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklM
RQorCitURVNUKENhcHR1cmVUZXN0LCBDYXB0dXJlc1N0ZG91dCkgeworICBDYXB0dXJlU3Rkb3V0
KCk7CisgIGZwcmludGYoc3Rkb3V0LCAiYWJjIik7CisgIEVYUEVDVF9TVFJFUSgiYWJjIiwgR2V0
Q2FwdHVyZWRTdGRvdXQoKS5jX3N0cigpKTsKKworICBDYXB0dXJlU3Rkb3V0KCk7CisgIGZwcmlu
dGYoc3Rkb3V0LCAiZGVmJWNnaGkiLCAnXDAnKTsKKyAgRVhQRUNUX0VRKDo6c3RkOjpzdHJpbmco
ImRlZlwwZ2hpIiwgNyksIDo6c3RkOjpzdHJpbmcoR2V0Q2FwdHVyZWRTdGRvdXQoKSkpOworfQor
CitURVNUKENhcHR1cmVUZXN0LCBDYXB0dXJlc1N0ZGVycikgeworICBDYXB0dXJlU3RkZXJyKCk7
CisgIGZwcmludGYoc3RkZXJyLCAiamtsIik7CisgIEVYUEVDVF9TVFJFUSgiamtsIiwgR2V0Q2Fw
dHVyZWRTdGRlcnIoKS5jX3N0cigpKTsKKworICBDYXB0dXJlU3RkZXJyKCk7CisgIGZwcmludGYo
c3RkZXJyLCAiamtsJWNtbm8iLCAnXDAnKTsKKyAgRVhQRUNUX0VRKDo6c3RkOjpzdHJpbmcoImpr
bFwwbW5vIiwgNyksIDo6c3RkOjpzdHJpbmcoR2V0Q2FwdHVyZWRTdGRlcnIoKSkpOworfQorCisv
LyBUZXN0cyB0aGF0IHN0ZG91dCBhbmQgc3RkZXJyIGNhcHR1cmUgZG9uJ3QgaW50ZXJmZXJlIHdp
dGggZWFjaCBvdGhlci4KK1RFU1QoQ2FwdHVyZVRlc3QsIENhcHR1cmVzU3Rkb3V0QW5kU3RkZXJy
KSB7CisgIENhcHR1cmVTdGRvdXQoKTsKKyAgQ2FwdHVyZVN0ZGVycigpOworICBmcHJpbnRmKHN0
ZG91dCwgInBxciIpOworICBmcHJpbnRmKHN0ZGVyciwgInN0dSIpOworICBFWFBFQ1RfU1RSRVEo
InBxciIsIEdldENhcHR1cmVkU3Rkb3V0KCkuY19zdHIoKSk7CisgIEVYUEVDVF9TVFJFUSgic3R1
IiwgR2V0Q2FwdHVyZWRTdGRlcnIoKS5jX3N0cigpKTsKK30KKworVEVTVChDYXB0dXJlRGVhdGhU
ZXN0LCBDYW5ub3RSZWVudGVyU3Rkb3V0Q2FwdHVyZSkgeworICBDYXB0dXJlU3Rkb3V0KCk7Cisg
IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoQ2FwdHVyZVN0ZG91dCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJPbmx5IG9uZSBzdGRvdXQgY2FwdHVyZXIgY2FuIGV4aXN0IGF0IGEg
dGltZSIpOworICBHZXRDYXB0dXJlZFN0ZG91dCgpOworCisgIC8vIFdlIGNhbm5vdCB0ZXN0IHN0
ZGVyciBjYXB0dXJpbmcgdXNpbmcgZGVhdGggdGVzdHMgYXMgdGhleSB1c2UgaXQKKyAgLy8gdGhl
bXNlbHZlcy4KK30KKworI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKworVEVT
VChUaHJlYWRMb2NhbFRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvckluaXRpYWxpemVzVG9EZWZhdWx0
VmFsdWVzKSB7CisgIFRocmVhZExvY2FsPGludD4gdDE7CisgIEVYUEVDVF9FUSgwLCB0MS5nZXQo
KSk7CisKKyAgVGhyZWFkTG9jYWw8dm9pZCo+IHQyOworICBFWFBFQ1RfVFJVRSh0Mi5nZXQoKSA9
PSBOVUxMKTsKK30KKworVEVTVChUaHJlYWRMb2NhbFRlc3QsIFNpbmdsZVBhcmFtQ29uc3RydWN0
b3JJbml0aWFsaXplc1RvUGFyYW0pIHsKKyAgVGhyZWFkTG9jYWw8aW50PiB0MSgxMjMpOworICBF
WFBFQ1RfRVEoMTIzLCB0MS5nZXQoKSk7CisKKyAgaW50IGkgPSAwOworICBUaHJlYWRMb2NhbDxp
bnQqPiB0MigmaSk7CisgIEVYUEVDVF9FUSgmaSwgdDIuZ2V0KCkpOworfQorCitjbGFzcyBOb0Rl
ZmF1bHRDb250cnVjdG9yIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IE5vRGVmYXVsdENvbnRydWN0
b3IoY29uc3QgY2hhciopIHt9CisgIE5vRGVmYXVsdENvbnRydWN0b3IoY29uc3QgTm9EZWZhdWx0
Q29udHJ1Y3RvciYpIHt9Cit9OworCitURVNUKFRocmVhZExvY2FsVGVzdCwgVmFsdWVEZWZhdWx0
Q29udHJ1Y3RvcklzTm90UmVxdWlyZWRGb3JQYXJhbVZlcnNpb24pIHsKKyAgVGhyZWFkTG9jYWw8
Tm9EZWZhdWx0Q29udHJ1Y3Rvcj4gYmFyKE5vRGVmYXVsdENvbnRydWN0b3IoImZvbyIpKTsKKyAg
YmFyLnBvaW50ZXIoKTsKK30KKworVEVTVChUaHJlYWRMb2NhbFRlc3QsIEdldEFuZFBvaW50ZXJS
ZXR1cm5TYW1lVmFsdWUpIHsKKyAgVGhyZWFkTG9jYWw8c3RkOjpzdHJpbmc+IHRocmVhZF9sb2Nh
bF9zdHJpbmc7CisKKyAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpLCAm
KHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkpKTsKKworICAvLyBWZXJpZmllcyB0aGUgY29uZGl0
aW9uIHN0aWxsIGhvbGRzIGFmdGVyIGNhbGxpbmcgc2V0LgorICB0aHJlYWRfbG9jYWxfc3RyaW5n
LnNldCgiZm9vIik7CisgIEVYUEVDVF9FUSh0aHJlYWRfbG9jYWxfc3RyaW5nLnBvaW50ZXIoKSwg
Jih0aHJlYWRfbG9jYWxfc3RyaW5nLmdldCgpKSk7Cit9CisKK1RFU1QoVGhyZWFkTG9jYWxUZXN0
LCBQb2ludGVyQW5kQ29uc3RQb2ludGVyUmV0dXJuU2FtZVZhbHVlKSB7CisgIFRocmVhZExvY2Fs
PHN0ZDo6c3RyaW5nPiB0aHJlYWRfbG9jYWxfc3RyaW5nOworICBjb25zdCBUaHJlYWRMb2NhbDxz
dGQ6OnN0cmluZz4mIGNvbnN0X3RocmVhZF9sb2NhbF9zdHJpbmcgPQorICAgICAgdGhyZWFkX2xv
Y2FsX3N0cmluZzsKKworICBFWFBFQ1RfRVEodGhyZWFkX2xvY2FsX3N0cmluZy5wb2ludGVyKCks
IGNvbnN0X3RocmVhZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpKTsKKworICB0aHJlYWRfbG9jYWxf
c3RyaW5nLnNldCgiZm9vIik7CisgIEVYUEVDVF9FUSh0aHJlYWRfbG9jYWxfc3RyaW5nLnBvaW50
ZXIoKSwgY29uc3RfdGhyZWFkX2xvY2FsX3N0cmluZy5wb2ludGVyKCkpOworfQorCisjaWYgR1RF
U1RfSVNfVEhSRUFEU0FGRQorCit2b2lkIEFkZFR3byhpbnQqIHBhcmFtKSB7ICpwYXJhbSArPSAy
OyB9CisKK1RFU1QoVGhyZWFkV2l0aFBhcmFtVGVzdCwgQ29uc3RydWN0b3JFeGVjdXRlc1RocmVh
ZEZ1bmMpIHsKKyAgaW50IGkgPSA0MDsKKyAgVGhyZWFkV2l0aFBhcmFtPGludCo+IHRocmVhZCgm
QWRkVHdvLCAmaSwgTlVMTCk7CisgIHRocmVhZC5Kb2luKCk7CisgIEVYUEVDVF9FUSg0MiwgaSk7
Cit9CisKK1RFU1QoTXV0ZXhEZWF0aFRlc3QsIEFzc2VydEhlbGRTaG91bGRBc3NlcnRXaGVuTm90
TG9ja2VkKSB7CisgIC8vIEFzc2VydEhlbGQoKSBpcyBmbGFreSBvbmx5IGluIHRoZSBwcmVzZW5j
ZSBvZiBtdWx0aXBsZSB0aHJlYWRzIGFjY2Vzc2luZworICAvLyB0aGUgbG9jay4gSW4gdGhpcyBj
YXNlLCB0aGUgdGVzdCBpcyByb2J1c3QuCisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoewor
ICAgIE11dGV4IG07CisgICAgeyBNdXRleExvY2sgbG9jaygmbSk7IH0KKyAgICBtLkFzc2VydEhl
bGQoKTsKKyAgfSwKKyAgInRocmVhZCAuKmhvbGQiKTsKK30KKworVEVTVChNdXRleFRlc3QsIEFz
c2VydEhlbGRTaG91bGROb3RBc3NlcnRXaGVuTG9ja2VkKSB7CisgIE11dGV4IG07CisgIE11dGV4
TG9jayBsb2NrKCZtKTsKKyAgbS5Bc3NlcnRIZWxkKCk7Cit9CisKK2NsYXNzIEF0b21pY0NvdW50
ZXJXaXRoTXV0ZXggeworIHB1YmxpYzoKKyAgZXhwbGljaXQgQXRvbWljQ291bnRlcldpdGhNdXRl
eChNdXRleCogbXV0ZXgpIDoKKyAgICB2YWx1ZV8oMCksIG11dGV4XyhtdXRleCksIHJhbmRvbV8o
NDIpIHt9CisKKyAgdm9pZCBJbmNyZW1lbnQoKSB7CisgICAgTXV0ZXhMb2NrIGxvY2sobXV0ZXhf
KTsKKyAgICBpbnQgdGVtcCA9IHZhbHVlXzsKKyAgICB7CisgICAgICAvLyBXZSBuZWVkIHRvIHB1
dCB1cCBhIG1lbW9yeSBiYXJyaWVyIHRvIHByZXZlbnQgcmVhZHMgYW5kIHdyaXRlcyB0bworICAg
ICAgLy8gdmFsdWVfIHJlYXJyYW5nZWQgd2l0aCB0aGUgY2FsbCB0byBTbGVlcE1pbGxpc2Vjb25k
cyB3aGVuIG9ic2VydmVkCisgICAgICAvLyBmcm9tIG90aGVyIHRocmVhZHMuCisjaWYgR1RFU1Rf
SEFTX1BUSFJFQUQKKyAgICAgIC8vIE9uIFBPU0lYLCBsb2NraW5nIGEgbXV0ZXggcHV0cyB1cCBh
IG1lbW9yeSBiYXJyaWVyLiAgV2UgY2Fubm90IHVzZQorICAgICAgLy8gTXV0ZXggYW5kIE11dGV4
TG9jayBoZXJlIG9yIHJlbHkgb24gdGhlaXIgbWVtb3J5IGJhcnJpZXIKKyAgICAgIC8vIGZ1bmN0
aW9uYWxpdHkgYXMgd2UgYXJlIHRlc3RpbmcgdGhlbSBoZXJlLgorICAgICAgcHRocmVhZF9tdXRl
eF90IG1lbW9yeV9iYXJyaWVyX211dGV4OworICAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VT
U18oCisgICAgICAgICAgcHRocmVhZF9tdXRleF9pbml0KCZtZW1vcnlfYmFycmllcl9tdXRleCwg
TlVMTCkpOworICAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9s
b2NrKCZtZW1vcnlfYmFycmllcl9tdXRleCkpOworCisgICAgICBTbGVlcE1pbGxpc2Vjb25kcyhy
YW5kb21fLkdlbmVyYXRlKDMwKSk7CisKKyAgICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1Nf
KHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtZW1vcnlfYmFycmllcl9tdXRleCkpOworICAgICAgR1RF
U1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9kZXN0cm95KCZtZW1vcnlfYmFy
cmllcl9tdXRleCkpOworI2VsaWYgR1RFU1RfT1NfV0lORE9XUworICAgICAgLy8gT24gV2luZG93
cywgcGVyZm9ybWluZyBhbiBpbnRlcmxvY2tlZCBhY2Nlc3MgcHV0cyB1cCBhIG1lbW9yeSBiYXJy
aWVyLgorICAgICAgdm9sYXRpbGUgTE9ORyBkdW1teSA9IDA7CisgICAgICA6OkludGVybG9ja2Vk
SW5jcmVtZW50KCZkdW1teSk7CisgICAgICBTbGVlcE1pbGxpc2Vjb25kcyhyYW5kb21fLkdlbmVy
YXRlKDMwKSk7CisgICAgICA6OkludGVybG9ja2VkSW5jcmVtZW50KCZkdW1teSk7CisjZWxzZQor
IyBlcnJvciAiTWVtb3J5IGJhcnJpZXIgbm90IGltcGxlbWVudGVkIG9uIHRoaXMgcGxhdGZvcm0u
IgorI2VuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVBRAorICAgIH0KKyAgICB2YWx1ZV8gPSB0ZW1w
ICsgMTsKKyAgfQorICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KKworIHBy
aXZhdGU6CisgIHZvbGF0aWxlIGludCB2YWx1ZV87CisgIE11dGV4KiBjb25zdCBtdXRleF87ICAv
LyBQcm90ZWN0cyB2YWx1ZV8uCisgIFJhbmRvbSAgICAgICByYW5kb21fOworfTsKKwordm9pZCBD
b3VudGluZ1RocmVhZEZ1bmMocGFpcjxBdG9taWNDb3VudGVyV2l0aE11dGV4KiwgaW50PiBwYXJh
bSkgeworICBmb3IgKGludCBpID0gMDsgaSA8IHBhcmFtLnNlY29uZDsgKytpKQorICAgICAgcGFy
YW0uZmlyc3QtPkluY3JlbWVudCgpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBtdXRleCBvbmx5
IGxldHMgb25lIHRocmVhZCBhdCBhIHRpbWUgdG8gbG9jayBpdC4KK1RFU1QoTXV0ZXhUZXN0LCBP
bmx5T25lVGhyZWFkQ2FuTG9ja0F0QVRpbWUpIHsKKyAgTXV0ZXggbXV0ZXg7CisgIEF0b21pY0Nv
dW50ZXJXaXRoTXV0ZXggbG9ja2VkX2NvdW50ZXIoJm11dGV4KTsKKworICB0eXBlZGVmIFRocmVh
ZFdpdGhQYXJhbTxwYWlyPEF0b21pY0NvdW50ZXJXaXRoTXV0ZXgqLCBpbnQ+ID4gVGhyZWFkVHlw
ZTsKKyAgY29uc3QgaW50IGtDeWNsZUNvdW50ID0gMjA7CisgIGNvbnN0IGludCBrVGhyZWFkQ291
bnQgPSA3OworICBzY29wZWRfcHRyPFRocmVhZFR5cGU+IGNvdW50aW5nX3RocmVhZHNba1RocmVh
ZENvdW50XTsKKyAgTm90aWZpY2F0aW9uIHRocmVhZHNfY2FuX3N0YXJ0OworICAvLyBDcmVhdGVz
IGFuZCBydW5zIGtUaHJlYWRDb3VudCB0aHJlYWRzIHRoYXQgaW5jcmVtZW50IGxvY2tlZF9jb3Vu
dGVyCisgIC8vIGtDeWNsZUNvdW50IHRpbWVzIGVhY2guCisgIGZvciAoaW50IGkgPSAwOyBpIDwg
a1RocmVhZENvdW50OyArK2kpIHsKKyAgICBjb3VudGluZ190aHJlYWRzW2ldLnJlc2V0KG5ldyBU
aHJlYWRUeXBlKCZDb3VudGluZ1RocmVhZEZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYWtlX3BhaXIoJmxvY2tlZF9jb3VudGVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDeWNsZUNvdW50
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aHJlYWRz
X2Nhbl9zdGFydCkpOworICB9CisgIHRocmVhZHNfY2FuX3N0YXJ0Lk5vdGlmeSgpOworICBmb3Ig
KGludCBpID0gMDsgaSA8IGtUaHJlYWRDb3VudDsgKytpKQorICAgIGNvdW50aW5nX3RocmVhZHNb
aV0tPkpvaW4oKTsKKworICAvLyBJZiB0aGUgbXV0ZXggbGV0cyBtb3JlIHRoYW4gb25lIHRocmVh
ZCB0byBpbmNyZW1lbnQgdGhlIGNvdW50ZXIgYXQgYQorICAvLyB0aW1lLCB0aGV5IGFyZSBsaWtl
bHkgdG8gZW5jb3VudGVyIGEgcmFjZSBjb25kaXRpb24gYW5kIGhhdmUgc29tZQorICAvLyBpbmNy
ZW1lbnRzIG92ZXJ3cml0dGVuLCByZXN1bHRpbmcgaW4gdGhlIGxvd2VyIHRoZW4gZXhwZWN0ZWQg
Y291bnRlcgorICAvLyB2YWx1ZS4KKyAgRVhQRUNUX0VRKGtDeWNsZUNvdW50ICoga1RocmVhZENv
dW50LCBsb2NrZWRfY291bnRlci52YWx1ZSgpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Cit2b2lkIFJ1bkZyb21UaHJlYWQodm9pZCAoZnVuYykoVCksIFQgcGFyYW0pIHsKKyAgVGhyZWFk
V2l0aFBhcmFtPFQ+IHRocmVhZChmdW5jLCBwYXJhbSwgTlVMTCk7CisgIHRocmVhZC5Kb2luKCk7
Cit9CisKK3ZvaWQgUmV0cmlldmVUaHJlYWRMb2NhbFZhbHVlKAorICAgIHBhaXI8VGhyZWFkTG9j
YWw8c3RkOjpzdHJpbmc+Kiwgc3RkOjpzdHJpbmcqPiBwYXJhbSkgeworICAqcGFyYW0uc2Vjb25k
ID0gcGFyYW0uZmlyc3QtPmdldCgpOworfQorCitURVNUKFRocmVhZExvY2FsVGVzdCwgUGFyYW1l
dGVyaXplZENvbnN0cnVjdG9yU2V0c0RlZmF1bHQpIHsKKyAgVGhyZWFkTG9jYWw8c3RkOjpzdHJp
bmc+IHRocmVhZF9sb2NhbF9zdHJpbmcoImZvbyIpOworICBFWFBFQ1RfU1RSRVEoImZvbyIsIHRo
cmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkuY19zdHIoKSk7CisKKyAgdGhyZWFkX2xvY2FsX3N0cmlu
Zy5zZXQoImJhciIpOworICBFWFBFQ1RfU1RSRVEoImJhciIsIHRocmVhZF9sb2NhbF9zdHJpbmcu
Z2V0KCkuY19zdHIoKSk7CisKKyAgc3RkOjpzdHJpbmcgcmVzdWx0OworICBSdW5Gcm9tVGhyZWFk
KCZSZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUsCisgICAgICAgICAgICAgICAgbWFrZV9wYWlyKCZ0
aHJlYWRfbG9jYWxfc3RyaW5nLCAmcmVzdWx0KSk7CisgIEVYUEVDVF9TVFJFUSgiZm9vIiwgcmVz
dWx0LmNfc3RyKCkpOworfQorCisvLyBLZWVwcyB0cmFjayBvZiB3aGV0aGVyIG9mIGRlc3RydWN0
b3JzIGJlaW5nIGNhbGxlZCBvbiBpbnN0YW5jZXMgb2YKKy8vIERlc3RydWN0b3JUcmFja2VyLiAg
T24gV2luZG93cywgd2FpdHMgZm9yIHRoZSBkZXN0cnVjdG9yIGNhbGwgcmVwb3J0cy4KK2NsYXNz
IERlc3RydWN0b3JDYWxsIHsKKyBwdWJsaWM6CisgIERlc3RydWN0b3JDYWxsKCkgeworICAgIGlu
dm9rZWRfID0gZmFsc2U7CisjaWYgR1RFU1RfT1NfV0lORE9XUworICAgIHdhaXRfZXZlbnRfLlJl
c2V0KDo6Q3JlYXRlRXZlbnQoTlVMTCwgVFJVRSwgRkFMU0UsIE5VTEwpKTsKKyAgICBHVEVTVF9D
SEVDS18od2FpdF9ldmVudF8uR2V0KCkgIT0gTlVMTCk7CisjZW5kaWYKKyAgfQorCisgIGJvb2wg
Q2hlY2tEZXN0cm95ZWQoKSBjb25zdCB7CisjaWYgR1RFU1RfT1NfV0lORE9XUworICAgIGlmICg6
OldhaXRGb3JTaW5nbGVPYmplY3Qod2FpdF9ldmVudF8uR2V0KCksIDEwMDApICE9IFdBSVRfT0JK
RUNUXzApCisgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICByZXR1cm4gaW52b2tlZF87
CisgIH0KKworICB2b2lkIFJlcG9ydERlc3Ryb3llZCgpIHsKKyAgICBpbnZva2VkXyA9IHRydWU7
CisjaWYgR1RFU1RfT1NfV0lORE9XUworICAgIDo6U2V0RXZlbnQod2FpdF9ldmVudF8uR2V0KCkp
OworI2VuZGlmCisgIH0KKworICBzdGF0aWMgc3RkOjp2ZWN0b3I8RGVzdHJ1Y3RvckNhbGwqPiYg
TGlzdCgpIHsgcmV0dXJuICpsaXN0XzsgfQorCisgIHN0YXRpYyB2b2lkIFJlc2V0TGlzdCgpIHsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RfLT5zaXplKCk7ICsraSkgeworICAgICAg
ZGVsZXRlIGxpc3RfLT5hdChpKTsKKyAgICB9CisgICAgbGlzdF8tPmNsZWFyKCk7CisgIH0KKwor
IHByaXZhdGU6CisgIGJvb2wgaW52b2tlZF87CisjaWYgR1RFU1RfT1NfV0lORE9XUworICBBdXRv
SGFuZGxlIHdhaXRfZXZlbnRfOworI2VuZGlmCisgIHN0YXRpYyBzdGQ6OnZlY3RvcjxEZXN0cnVj
dG9yQ2FsbCo+KiBjb25zdCBsaXN0XzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJ
R05fKERlc3RydWN0b3JDYWxsKTsKK307CisKK3N0ZDo6dmVjdG9yPERlc3RydWN0b3JDYWxsKj4q
IGNvbnN0IERlc3RydWN0b3JDYWxsOjpsaXN0XyA9CisgICAgbmV3IHN0ZDo6dmVjdG9yPERlc3Ry
dWN0b3JDYWxsKj47CisKKy8vIERlc3RydWN0b3JUcmFja2VyIGtlZXBzIHRyYWNrIG9mIHdoZXRo
ZXIgaXRzIGluc3RhbmNlcyBoYXZlIGJlZW4KKy8vIGRlc3Ryb3llZC4KK2NsYXNzIERlc3RydWN0
b3JUcmFja2VyIHsKKyBwdWJsaWM6CisgIERlc3RydWN0b3JUcmFja2VyKCkgOiBpbmRleF8oR2V0
TmV3SW5kZXgoKSkge30KKyAgRGVzdHJ1Y3RvclRyYWNrZXIoY29uc3QgRGVzdHJ1Y3RvclRyYWNr
ZXImIC8qIHJocyAqLykKKyAgICAgIDogaW5kZXhfKEdldE5ld0luZGV4KCkpIHt9CisgIH5EZXN0
cnVjdG9yVHJhY2tlcigpIHsKKyAgICAvLyBXZSBuZXZlciBhY2Nlc3MgRGVzdHJ1Y3RvckNhbGw6
Okxpc3QoKSBjb25jdXJyZW50bHksIHNvIHdlIGRvbid0IG5lZWQKKyAgICAvLyB0byBwcm90ZWN0
IHRoaXMgYWNjZXNzIHdpdGggYSBtdXRleC4KKyAgICBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpW2lu
ZGV4X10tPlJlcG9ydERlc3Ryb3llZCgpOworICB9CisKKyBwcml2YXRlOgorICBzdGF0aWMgc2l6
ZV90IEdldE5ld0luZGV4KCkgeworICAgIERlc3RydWN0b3JDYWxsOjpMaXN0KCkucHVzaF9iYWNr
KG5ldyBEZXN0cnVjdG9yQ2FsbCk7CisgICAgcmV0dXJuIERlc3RydWN0b3JDYWxsOjpMaXN0KCku
c2l6ZSgpIC0gMTsKKyAgfQorICBjb25zdCBzaXplX3QgaW5kZXhfOworCisgIEdURVNUX0RJU0FM
TE9XX0FTU0lHTl8oRGVzdHJ1Y3RvclRyYWNrZXIpOworfTsKKwordHlwZWRlZiBUaHJlYWRMb2Nh
bDxEZXN0cnVjdG9yVHJhY2tlcj4qIFRocmVhZFBhcmFtOworCit2b2lkIENhbGxUaHJlYWRMb2Nh
bEdldChUaHJlYWRQYXJhbSB0aHJlYWRfbG9jYWxfcGFyYW0pIHsKKyAgdGhyZWFkX2xvY2FsX3Bh
cmFtLT5nZXQoKTsKK30KKworLy8gVGVzdHMgdGhhdCB3aGVuIGEgVGhyZWFkTG9jYWwgb2JqZWN0
IGRpZXMgaW4gYSB0aHJlYWQsIGl0IGRlc3Ryb3lzCisvLyB0aGUgbWFuYWdlZCBvYmplY3QgZm9y
IHRoYXQgdGhyZWFkLgorVEVTVChUaHJlYWRMb2NhbFRlc3QsIERlc3Ryb3lzTWFuYWdlZE9iamVj
dEZvck93blRocmVhZFdoZW5EeWluZykgeworICBEZXN0cnVjdG9yQ2FsbDo6UmVzZXRMaXN0KCk7
CisKKyAgeworICAgIFRocmVhZExvY2FsPERlc3RydWN0b3JUcmFja2VyPiB0aHJlYWRfbG9jYWxf
dHJhY2tlcjsKKyAgICBBU1NFUlRfRVEoMFUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgp
KTsKKworICAgIC8vIFRoaXMgY3JlYXRlcyBhbm90aGVyIERlc3RydWN0b3JUcmFja2VyIG9iamVj
dCBmb3IgdGhlIG1haW4gdGhyZWFkLgorICAgIHRocmVhZF9sb2NhbF90cmFja2VyLmdldCgpOwor
ICAgIEFTU0VSVF9FUSgxVSwgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKS5zaXplKCkpOworICAgIEFT
U0VSVF9GQUxTRShEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpWzBdLT5DaGVja0Rlc3Ryb3llZCgpKTsK
KyAgfQorCisgIC8vIE5vdyB0aHJlYWRfbG9jYWxfdHJhY2tlciBoYXMgZGllZC4KKyAgQVNTRVJU
X0VRKDFVLCBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnNpemUoKSk7CisgIEVYUEVDVF9UUlVFKERl
c3RydWN0b3JDYWxsOjpMaXN0KClbMF0tPkNoZWNrRGVzdHJveWVkKCkpOworCisgIERlc3RydWN0
b3JDYWxsOjpSZXNldExpc3QoKTsKK30KKworLy8gVGVzdHMgdGhhdCB3aGVuIGEgdGhyZWFkIGV4
aXRzLCB0aGUgdGhyZWFkLWxvY2FsIG9iamVjdCBmb3IgdGhhdAorLy8gdGhyZWFkIGlzIGRlc3Ry
b3llZC4KK1RFU1QoVGhyZWFkTG9jYWxUZXN0LCBEZXN0cm95c01hbmFnZWRPYmplY3RBdFRocmVh
ZEV4aXQpIHsKKyAgRGVzdHJ1Y3RvckNhbGw6OlJlc2V0TGlzdCgpOworCisgIHsKKyAgICBUaHJl
YWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4gdGhyZWFkX2xvY2FsX3RyYWNrZXI7CisgICAgQVNT
RVJUX0VRKDBVLCBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnNpemUoKSk7CisKKyAgICAvLyBUaGlz
IGNyZWF0ZXMgYW5vdGhlciBEZXN0cnVjdG9yVHJhY2tlciBvYmplY3QgaW4gdGhlIG5ldyB0aHJl
YWQuCisgICAgVGhyZWFkV2l0aFBhcmFtPFRocmVhZFBhcmFtPiB0aHJlYWQoCisgICAgICAgICZD
YWxsVGhyZWFkTG9jYWxHZXQsICZ0aHJlYWRfbG9jYWxfdHJhY2tlciwgTlVMTCk7CisgICAgdGhy
ZWFkLkpvaW4oKTsKKworICAgIC8vIFRoZSB0aHJlYWQgaGFzIGV4aXRlZCwgYW5kIHdlIHNob3Vs
ZCBoYXZlIGEgRGVzdHJveWVkVHJhY2tlcgorICAgIC8vIGluc3RhbmNlIGNyZWF0ZWQgZm9yIGl0
LiBCdXQgaXQgbWF5IG5vdCBoYXZlIGJlZW4gZGVzdHJveWVkIHlldC4KKyAgICBBU1NFUlRfRVEo
MVUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpKTsKKyAgfQorCisgIC8vIFRoZSB0aHJl
YWQgaGFzIGV4aXRlZCBhbmQgdGhyZWFkX2xvY2FsX3RyYWNrZXIgaGFzIGRpZWQuCisgIEFTU0VS
VF9FUSgxVSwgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKS5zaXplKCkpOworICBFWFBFQ1RfVFJVRShE
ZXN0cnVjdG9yQ2FsbDo6TGlzdCgpWzBdLT5DaGVja0Rlc3Ryb3llZCgpKTsKKworICBEZXN0cnVj
dG9yQ2FsbDo6UmVzZXRMaXN0KCk7Cit9CisKK1RFU1QoVGhyZWFkTG9jYWxUZXN0LCBUaHJlYWRM
b2NhbE11dGF0aW9uc0FmZmVjdE9ubHlDdXJyZW50VGhyZWFkKSB7CisgIFRocmVhZExvY2FsPHN0
ZDo6c3RyaW5nPiB0aHJlYWRfbG9jYWxfc3RyaW5nOworICB0aHJlYWRfbG9jYWxfc3RyaW5nLnNl
dCgiRm9vIik7CisgIEVYUEVDVF9TVFJFUSgiRm9vIiwgdGhyZWFkX2xvY2FsX3N0cmluZy5nZXQo
KS5jX3N0cigpKTsKKworICBzdGQ6OnN0cmluZyByZXN1bHQ7CisgIFJ1bkZyb21UaHJlYWQoJlJl
dHJpZXZlVGhyZWFkTG9jYWxWYWx1ZSwKKyAgICAgICAgICAgICAgICBtYWtlX3BhaXIoJnRocmVh
ZF9sb2NhbF9zdHJpbmcsICZyZXN1bHQpKTsKKyAgRVhQRUNUX1RSVUUocmVzdWx0LmVtcHR5KCkp
OworfQorCisjZW5kaWYgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUKKworI2lmIEdURVNUX09TX1dJ
TkRPV1MKK1RFU1QoV2luZG93c1R5cGVzVGVzdCwgSEFORExFSXNWb2lkU3RhcikgeworICBTdGF0
aWNBc3NlcnRUeXBlRXE8SEFORExFLCB2b2lkKj4oKTsKK30KKworI2lmIEdURVNUX09TX1dJTkRP
V1NfTUlOR1cgJiYgIWRlZmluZWQoX19NSU5HVzY0X1ZFUlNJT05fTUFKT1IpCitURVNUKFdpbmRv
d3NUeXBlc1Rlc3QsIF9DUklUSUNBTF9TRUNUSU9OSXNfQ1JJVElDQUxfU0VDVElPTikgeworICBT
dGF0aWNBc3NlcnRUeXBlRXE8Q1JJVElDQUxfU0VDVElPTiwgX0NSSVRJQ0FMX1NFQ1RJT04+KCk7
Cit9CisjZWxzZQorVEVTVChXaW5kb3dzVHlwZXNUZXN0LCBDUklUSUNBTF9TRUNUSU9OSXNfUlRM
X0NSSVRJQ0FMX1NFQ1RJT04pIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPENSSVRJQ0FMX1NFQ1RJ
T04sIF9SVExfQ1JJVElDQUxfU0VDVElPTj4oKTsKK30KKyNlbmRpZgorCisjZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MKKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCit9ICAvLyBuYW1lc3Bh
Y2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LXByaW50ZXJzLXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3QtcHJpbnRlcnMtdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTgzNjlkMjdlNTA0NzBmMWVh
YmUzYWYyODA0ZDM0NTQ5M2FkZWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXByaW50ZXJzLXRlc3QuY2MKQEAgLTAsMCArMSwxNzQ4
IEBACisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
Ky8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8g
R29vZ2xlIFRlc3QgLSBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29y
aworLy8KKy8vIFRoaXMgZmlsZSB0ZXN0cyB0aGUgdW5pdmVyc2FsIHZhbHVlIHByaW50ZXIuCisK
KyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHN0cmlu
Zy5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxkZXF1ZT4KKyNpbmNsdWRlIDxs
aXN0PgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxzZXQ+CisjaW5jbHVkZSA8c3N0cmVhbT4K
KyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+
CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1wcmludGVycy5oIgorI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCisKKyNpZiBHVEVTVF9IQVNfVU5PUkRFUkVEX01BUF8KKyMgaW5jbHVkZSA8dW5vcmRl
cmVkX21hcD4gIC8vIE5PTElOVAorI2VuZGlmICAvLyBHVEVTVF9IQVNfVU5PUkRFUkVEX01BUF8K
KworI2lmIEdURVNUX0hBU19VTk9SREVSRURfU0VUXworIyBpbmNsdWRlIDx1bm9yZGVyZWRfc2V0
PiAgLy8gTk9MSU5UCisjZW5kaWYgIC8vIEdURVNUX0hBU19VTk9SREVSRURfU0VUXworCisjaWYg
R1RFU1RfSEFTX1NURF9GT1JXQVJEX0xJU1RfCisjIGluY2x1ZGUgPGZvcndhcmRfbGlzdD4gLy8g
Tk9MSU5UCisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfRk9SV0FSRF9MSVNUXworCisvLyBTb21l
IHVzZXItZGVmaW5lZCB0eXBlcyBmb3IgdGVzdGluZyB0aGUgdW5pdmVyc2FsIHZhbHVlIHByaW50
ZXIuCisKKy8vIEFuIGFub255bW91cyBlbnVtIHR5cGUuCitlbnVtIEFub255bW91c0VudW0gewor
ICBrQUUxID0gLTEsCisgIGtBRTIgPSAxCit9OworCisvLyBBbiBlbnVtIHdpdGhvdXQgYSB1c2Vy
LWRlZmluZWQgcHJpbnRlci4KK2VudW0gRW51bVdpdGhvdXRQcmludGVyIHsKKyAga0VXUDEgPSAt
MiwKKyAga0VXUDIgPSA0MgorfTsKKworLy8gQW4gZW51bSB3aXRoIGEgPDwgb3BlcmF0b3IuCitl
bnVtIEVudW1XaXRoU3RyZWFtaW5nIHsKKyAga0VXUzEgPSAxMAorfTsKKworc3RkOjpvc3RyZWFt
JiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIEVudW1XaXRoU3RyZWFtaW5nIGUpIHsKKyAg
cmV0dXJuIG9zIDw8IChlID09IGtFV1MxID8gImtFV1MxIiA6ICJpbnZhbGlkIik7Cit9CisKKy8v
IEFuIGVudW0gd2l0aCBhIFByaW50VG8oKSBmdW5jdGlvbi4KK2VudW0gRW51bVdpdGhQcmludFRv
IHsKKyAga0VXUFQxID0gMQorfTsKKwordm9pZCBQcmludFRvKEVudW1XaXRoUHJpbnRUbyBlLCBz
dGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCAoZSA9PSBrRVdQVDEgPyAia0VXUFQxIiA6ICJp
bnZhbGlkIik7Cit9CisKKy8vIEEgY2xhc3MgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0byBCaWdn
ZXN0SW50LgorY2xhc3MgQmlnZ2VzdEludENvbnZlcnRpYmxlIHsKKyBwdWJsaWM6CisgIG9wZXJh
dG9yIDo6dGVzdGluZzo6aW50ZXJuYWw6OkJpZ2dlc3RJbnQoKSBjb25zdCB7IHJldHVybiA0Mjsg
fQorfTsKKworLy8gQSB1c2VyLWRlZmluZWQgdW5wcmludGFibGUgY2xhc3MgdGVtcGxhdGUgaW4g
dGhlIGdsb2JhbCBuYW1lc3BhY2UuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFVucHJp
bnRhYmxlVGVtcGxhdGVJbkdsb2JhbCB7CisgcHVibGljOgorICBVbnByaW50YWJsZVRlbXBsYXRl
SW5HbG9iYWwoKSA6IHZhbHVlXygpIHt9CisgcHJpdmF0ZToKKyAgVCB2YWx1ZV87Cit9OworCisv
LyBBIHVzZXItZGVmaW5lZCBzdHJlYW1hYmxlIHR5cGUgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2Uu
CitjbGFzcyBTdHJlYW1hYmxlSW5HbG9iYWwgeworIHB1YmxpYzoKKyAgdmlydHVhbCB+U3RyZWFt
YWJsZUluR2xvYmFsKCkge30KK307CisKK2lubGluZSB2b2lkIG9wZXJhdG9yPDwoOjpzdGQ6Om9z
dHJlYW0mIG9zLCBjb25zdCBTdHJlYW1hYmxlSW5HbG9iYWwmIC8qIHggKi8pIHsKKyAgb3MgPDwg
IlN0cmVhbWFibGVJbkdsb2JhbCI7Cit9CisKK3ZvaWQgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVh
bSYgb3MsIGNvbnN0IFN0cmVhbWFibGVJbkdsb2JhbCogLyogeCAqLykgeworICBvcyA8PCAiU3Ry
ZWFtYWJsZUluR2xvYmFsKiI7Cit9CisKK25hbWVzcGFjZSBmb28geworCisvLyBBIHVzZXItZGVm
aW5lZCB1bnByaW50YWJsZSB0eXBlIGluIGEgdXNlciBuYW1lc3BhY2UuCitjbGFzcyBVbnByaW50
YWJsZUluRm9vIHsKKyBwdWJsaWM6CisgIFVucHJpbnRhYmxlSW5Gb28oKSA6IHpfKDApIHsgbWVt
Y3B5KHh5XywgIlx4RUZceDEyXHgwXHgwXHgzNFx4QUJceDBceDAiLCA4KTsgfQorICBkb3VibGUg
eigpIGNvbnN0IHsgcmV0dXJuIHpfOyB9CisgcHJpdmF0ZToKKyAgY2hhciB4eV9bOF07CisgIGRv
dWJsZSB6XzsKK307CisKKy8vIEEgdXNlci1kZWZpbmVkIHByaW50YWJsZSB0eXBlIGluIGEgdXNl
ci1jaG9zZW4gbmFtZXNwYWNlLgorc3RydWN0IFByaW50YWJsZVZpYVByaW50VG8geworICBQcmlu
dGFibGVWaWFQcmludFRvKCkgOiB2YWx1ZSgpIHt9CisgIGludCB2YWx1ZTsKK307CisKK3ZvaWQg
UHJpbnRUbyhjb25zdCBQcmludGFibGVWaWFQcmludFRvJiB4LCA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgKm9zIDw8ICJQcmludGFibGVWaWFQcmludFRvOiAiIDw8IHgudmFsdWU7Cit9CisKKy8v
IEEgdHlwZSB3aXRoIGEgdXNlci1kZWZpbmVkIDw8IGZvciBwcmludGluZyBpdHMgcG9pbnRlci4K
K3N0cnVjdCBQb2ludGVyUHJpbnRhYmxlIHsKK307CisKKzo6c3RkOjpvc3RyZWFtJiBvcGVyYXRv
cjw8KDo6c3RkOjpvc3RyZWFtJiBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFBvaW50ZXJQcmludGFibGUqIC8qIHggKi8pIHsKKyAgcmV0dXJuIG9zIDw8ICJQb2ludGVyUHJp
bnRhYmxlKiI7Cit9CisKKy8vIEEgdXNlci1kZWZpbmVkIHByaW50YWJsZSBjbGFzcyB0ZW1wbGF0
ZSBpbiBhIHVzZXItY2hvc2VuIG5hbWVzcGFjZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xh
c3MgUHJpbnRhYmxlVmlhUHJpbnRUb1RlbXBsYXRlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFBy
aW50YWJsZVZpYVByaW50VG9UZW1wbGF0ZShjb25zdCBUJiBhX3ZhbHVlKSA6IHZhbHVlXyhhX3Zh
bHVlKSB7fQorCisgIGNvbnN0IFQmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9Cisg
cHJpdmF0ZToKKyAgVCB2YWx1ZV87Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQg
UHJpbnRUbyhjb25zdCBQcmludGFibGVWaWFQcmludFRvVGVtcGxhdGU8VD4mIHgsIDo6c3RkOjpv
c3RyZWFtKiBvcykgeworICAqb3MgPDwgIlByaW50YWJsZVZpYVByaW50VG9UZW1wbGF0ZTogIiA8
PCB4LnZhbHVlKCk7Cit9CisKKy8vIEEgdXNlci1kZWZpbmVkIHN0cmVhbWFibGUgY2xhc3MgdGVt
cGxhdGUgaW4gYSB1c2VyIG5hbWVzcGFjZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3Mg
U3RyZWFtYWJsZVRlbXBsYXRlSW5Gb28geworIHB1YmxpYzoKKyAgU3RyZWFtYWJsZVRlbXBsYXRl
SW5Gb28oKSA6IHZhbHVlXygpIHt9CisKKyAgY29uc3QgVCYgdmFsdWUoKSBjb25zdCB7IHJldHVy
biB2YWx1ZV87IH0KKyBwcml2YXRlOgorICBUIHZhbHVlXzsKK307CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgoraW5saW5lIDo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFt
JiBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJlYW1hYmxl
VGVtcGxhdGVJbkZvbzxUPiYgeCkgeworICByZXR1cm4gb3MgPDwgIlN0cmVhbWFibGVUZW1wbGF0
ZUluRm9vOiAiIDw8IHgudmFsdWUoKTsKK30KKworLy8gQSB1c2VyLWRlZmluZWQgc3RyZWFtYWJs
ZSBidXQgcmVjdXJzaXZseS1kZWZpbmVkIGNvbnRhaW5lciB0eXBlIGluCisvLyBhIHVzZXIgbmFt
ZXNwYWNlLCBpdCBtaW1pY3MgdGhlcmVmb3JlIHN0ZDo6ZmlsZXN5c3RlbTo6cGF0aCBvcgorLy8g
Ym9vc3Q6OmZpbGVzeXN0ZW06OnBhdGguCitjbGFzcyBQYXRoTGlrZSB7CisgcHVibGljOgorICBz
dHJ1Y3QgaXRlcmF0b3IgeworICAgIHR5cGVkZWYgUGF0aExpa2UgdmFsdWVfdHlwZTsKKyAgfTsK
KworICBQYXRoTGlrZSgpIHt9CisKKyAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBp
dGVyYXRvcigpOyB9CisgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCk7
IH0KKworICBmcmllbmQgOjpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0m
IG9zLCBjb25zdCBQYXRoTGlrZSYpIHsKKyAgICByZXR1cm4gb3MgPDwgIlN0cmVhbWFibGUtUGF0
aExpa2UiOworICB9Cit9OworCit9ICAvLyBuYW1lc3BhY2UgZm9vCisKK25hbWVzcGFjZSB0ZXN0
aW5nIHsKK25hbWVzcGFjZSBndGVzdF9wcmludGVyc190ZXN0IHsKKwordXNpbmcgOjpzdGQ6OmRl
cXVlOwordXNpbmcgOjpzdGQ6Omxpc3Q7Cit1c2luZyA6OnN0ZDo6bWFrZV9wYWlyOwordXNpbmcg
OjpzdGQ6Om1hcDsKK3VzaW5nIDo6c3RkOjptdWx0aW1hcDsKK3VzaW5nIDo6c3RkOjptdWx0aXNl
dDsKK3VzaW5nIDo6c3RkOjpwYWlyOwordXNpbmcgOjpzdGQ6OnNldDsKK3VzaW5nIDo6c3RkOjp2
ZWN0b3I7Cit1c2luZyA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmc7Cit1c2luZyA6OnRlc3Rpbmc6
OmludGVybmFsOjpGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2U7Cit1c2luZyA6OnRl
c3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6TmF0aXZlQXJyYXk7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpSRTsKK3VzaW5nIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2U7Cit1c2luZyA6OnRl
c3Rpbmc6OmludGVybmFsOjpTdHJpbmdzOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5p
dmVyc2FsUHJpbnQ7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxQcmludGVy
OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludDsKKyNpZiBH
VEVTVF9IQVNfVFIxX1RVUExFIHx8IEdURVNUX0hBU19TVERfVFVQTEVfCit1c2luZyA6OnRlc3Rp
bmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3M7Cisj
ZW5kaWYKKworLy8gUHJpbnRzIGEgdmFsdWUgdG8gYSBzdHJpbmcgdXNpbmcgdGhlIHVuaXZlcnNh
bCB2YWx1ZSBwcmludGVyLiAgVGhpcworLy8gaXMgYSBoZWxwZXIgZm9yIHRlc3RpbmcgVW5pdmVy
c2FsUHJpbnRlcjxUPjo6UHJpbnQoKSBmb3IgdmFyaW91cyB0eXBlcy4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgorc3RkOjpzdHJpbmcgUHJpbnQoY29uc3QgVCYgdmFsdWUpIHsKKyAgOjpzdGQ6OnN0
cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2FsUHJpbnRlcjxUPjo6UHJpbnQodmFsdWUsICZzcyk7
CisgIHJldHVybiBzcy5zdHIoKTsKK30KKworLy8gUHJpbnRzIGEgdmFsdWUgcGFzc2VkIGJ5IHJl
ZmVyZW5jZSB0byBhIHN0cmluZywgdXNpbmcgdGhlIHVuaXZlcnNhbAorLy8gdmFsdWUgcHJpbnRl
ci4gIFRoaXMgaXMgYSBoZWxwZXIgZm9yIHRlc3RpbmcKKy8vIFVuaXZlcnNhbFByaW50ZXI8VCY+
OjpQcmludCgpIGZvciB2YXJpb3VzIHR5cGVzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGQ6
OnN0cmluZyBQcmludEJ5UmVmKGNvbnN0IFQmIHZhbHVlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJl
YW0gc3M7CisgIFVuaXZlcnNhbFByaW50ZXI8VCY+OjpQcmludCh2YWx1ZSwgJnNzKTsKKyAgcmV0
dXJuIHNzLnN0cigpOworfQorCisvLyBUZXN0cyBwcmludGluZyB2YXJpb3VzIGVudW0gdHlwZXMu
CisKK1RFU1QoUHJpbnRFbnVtVGVzdCwgQW5vbnltb3VzRW51bSkgeworICBFWFBFQ1RfRVEoIi0x
IiwgUHJpbnQoa0FFMSkpOworICBFWFBFQ1RfRVEoIjEiLCBQcmludChrQUUyKSk7Cit9CisKK1RF
U1QoUHJpbnRFbnVtVGVzdCwgRW51bVdpdGhvdXRQcmludGVyKSB7CisgIEVYUEVDVF9FUSgiLTIi
LCBQcmludChrRVdQMSkpOworICBFWFBFQ1RfRVEoIjQyIiwgUHJpbnQoa0VXUDIpKTsKK30KKwor
VEVTVChQcmludEVudW1UZXN0LCBFbnVtV2l0aFN0cmVhbWluZykgeworICBFWFBFQ1RfRVEoImtF
V1MxIiwgUHJpbnQoa0VXUzEpKTsKKyAgRVhQRUNUX0VRKCJpbnZhbGlkIiwgUHJpbnQoc3RhdGlj
X2Nhc3Q8RW51bVdpdGhTdHJlYW1pbmc+KDApKSk7Cit9CisKK1RFU1QoUHJpbnRFbnVtVGVzdCwg
RW51bVdpdGhQcmludFRvKSB7CisgIEVYUEVDVF9FUSgia0VXUFQxIiwgUHJpbnQoa0VXUFQxKSk7
CisgIEVYUEVDVF9FUSgiaW52YWxpZCIsIFByaW50KHN0YXRpY19jYXN0PEVudW1XaXRoUHJpbnRU
bz4oMCkpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgYSBjbGFzcyBpbXBsaWNpdGx5IGNvbnZl
cnRpYmxlIHRvIEJpZ2dlc3RJbnQuCisKK1RFU1QoUHJpbnRDbGFzc1Rlc3QsIEJpZ2dlc3RJbnRD
b252ZXJ0aWJsZSkgeworICBFWFBFQ1RfRVEoIjQyIiwgUHJpbnQoQmlnZ2VzdEludENvbnZlcnRp
YmxlKCkpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgdmFyaW91cyBjaGFyIHR5cGVzLgorCisv
LyBjaGFyLgorVEVTVChQcmludENoYXJUZXN0LCBQbGFpbkNoYXIpIHsKKyAgRVhQRUNUX0VRKCIn
XFwwJyIsIFByaW50KCdcMCcpKTsKKyAgRVhQRUNUX0VRKCInXFwnJyAoMzksIDB4MjcpIiwgUHJp
bnQoJ1wnJykpOworICBFWFBFQ1RfRVEoIidcIicgKDM0LCAweDIyKSIsIFByaW50KCciJykpOwor
ICBFWFBFQ1RfRVEoIic/JyAoNjMsIDB4M0YpIiwgUHJpbnQoJz8nKSk7CisgIEVYUEVDVF9FUSgi
J1xcXFwnICg5MiwgMHg1QykiLCBQcmludCgnXFwnKSk7CisgIEVYUEVDVF9FUSgiJ1xcYScgKDcp
IiwgUHJpbnQoJ1xhJykpOworICBFWFBFQ1RfRVEoIidcXGInICg4KSIsIFByaW50KCdcYicpKTsK
KyAgRVhQRUNUX0VRKCInXFxmJyAoMTIsIDB4QykiLCBQcmludCgnXGYnKSk7CisgIEVYUEVDVF9F
USgiJ1xcbicgKDEwLCAweEEpIiwgUHJpbnQoJ1xuJykpOworICBFWFBFQ1RfRVEoIidcXHInICgx
MywgMHhEKSIsIFByaW50KCdccicpKTsKKyAgRVhQRUNUX0VRKCInXFx0JyAoOSkiLCBQcmludCgn
XHQnKSk7CisgIEVYUEVDVF9FUSgiJ1xcdicgKDExLCAweEIpIiwgUHJpbnQoJ1x2JykpOworICBF
WFBFQ1RfRVEoIidcXHg3RicgKDEyNykiLCBQcmludCgnXHg3RicpKTsKKyAgRVhQRUNUX0VRKCIn
XFx4RkYnICgyNTUpIiwgUHJpbnQoJ1x4RkYnKSk7CisgIEVYUEVDVF9FUSgiJyAnICgzMiwgMHgy
MCkiLCBQcmludCgnICcpKTsKKyAgRVhQRUNUX0VRKCInYScgKDk3LCAweDYxKSIsIFByaW50KCdh
JykpOworfQorCisvLyBzaWduZWQgY2hhci4KK1RFU1QoUHJpbnRDaGFyVGVzdCwgU2lnbmVkQ2hh
cikgeworICBFWFBFQ1RfRVEoIidcXDAnIiwgUHJpbnQoc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+
KCdcMCcpKSk7CisgIEVYUEVDVF9FUSgiJ1xceENFJyAoLTUwKSIsCisgICAgICAgICAgICBQcmlu
dChzdGF0aWNfY2FzdDxzaWduZWQgY2hhcj4oLTUwKSkpOworfQorCisvLyB1bnNpZ25lZCBjaGFy
LgorVEVTVChQcmludENoYXJUZXN0LCBVbnNpZ25lZENoYXIpIHsKKyAgRVhQRUNUX0VRKCInXFww
JyIsIFByaW50KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCdcMCcpKSk7CisgIEVYUEVDVF9F
USgiJ2InICg5OCwgMHg2MikiLAorICAgICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4oJ2InKSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyBvdGhlciBzaW1wbGUsIGJ1
aWx0LWluIHR5cGVzLgorCisvLyBib29sLgorVEVTVChQcmludEJ1aWx0SW5UeXBlVGVzdCwgQm9v
bCkgeworICBFWFBFQ1RfRVEoImZhbHNlIiwgUHJpbnQoZmFsc2UpKTsKKyAgRVhQRUNUX0VRKCJ0
cnVlIiwgUHJpbnQodHJ1ZSkpOworfQorCisvLyB3Y2hhcl90LgorVEVTVChQcmludEJ1aWx0SW5U
eXBlVGVzdCwgV2NoYXJfdCkgeworICBFWFBFQ1RfRVEoIkwnXFwwJyIsIFByaW50KEwnXDAnKSk7
CisgIEVYUEVDVF9FUSgiTCdcXCcnICgzOSwgMHgyNykiLCBQcmludChMJ1wnJykpOworICBFWFBF
Q1RfRVEoIkwnXCInICgzNCwgMHgyMikiLCBQcmludChMJyInKSk7CisgIEVYUEVDVF9FUSgiTCc/
JyAoNjMsIDB4M0YpIiwgUHJpbnQoTCc/JykpOworICBFWFBFQ1RfRVEoIkwnXFxcXCcgKDkyLCAw
eDVDKSIsIFByaW50KEwnXFwnKSk7CisgIEVYUEVDVF9FUSgiTCdcXGEnICg3KSIsIFByaW50KEwn
XGEnKSk7CisgIEVYUEVDVF9FUSgiTCdcXGInICg4KSIsIFByaW50KEwnXGInKSk7CisgIEVYUEVD
VF9FUSgiTCdcXGYnICgxMiwgMHhDKSIsIFByaW50KEwnXGYnKSk7CisgIEVYUEVDVF9FUSgiTCdc
XG4nICgxMCwgMHhBKSIsIFByaW50KEwnXG4nKSk7CisgIEVYUEVDVF9FUSgiTCdcXHInICgxMywg
MHhEKSIsIFByaW50KEwnXHInKSk7CisgIEVYUEVDVF9FUSgiTCdcXHQnICg5KSIsIFByaW50KEwn
XHQnKSk7CisgIEVYUEVDVF9FUSgiTCdcXHYnICgxMSwgMHhCKSIsIFByaW50KEwnXHYnKSk7Cisg
IEVYUEVDVF9FUSgiTCdcXHg3RicgKDEyNykiLCBQcmludChMJ1x4N0YnKSk7CisgIEVYUEVDVF9F
USgiTCdcXHhGRicgKDI1NSkiLCBQcmludChMJ1x4RkYnKSk7CisgIEVYUEVDVF9FUSgiTCcgJyAo
MzIsIDB4MjApIiwgUHJpbnQoTCcgJykpOworICBFWFBFQ1RfRVEoIkwnYScgKDk3LCAweDYxKSIs
IFByaW50KEwnYScpKTsKKyAgRVhQRUNUX0VRKCJMJ1xceDU3NicgKDEzOTgpIiwgUHJpbnQoc3Rh
dGljX2Nhc3Q8d2NoYXJfdD4oMHg1NzYpKSk7CisgIEVYUEVDVF9FUSgiTCdcXHhDNzREJyAoNTEw
MjEpIiwgUHJpbnQoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHhDNzREKSkpOworfQorCisvLyBUZXN0
IHRoYXQgSW50NjQgcHJvdmlkZXMgbW9yZSBzdG9yYWdlIHRoYW4gd2NoYXJfdC4KK1RFU1QoUHJp
bnRUeXBlU2l6ZVRlc3QsIFdjaGFyX3QpIHsKKyAgRVhQRUNUX0xUKHNpemVvZih3Y2hhcl90KSwg
c2l6ZW9mKHRlc3Rpbmc6OmludGVybmFsOjpJbnQ2NCkpOworfQorCisvLyBWYXJpb3VzIGludGVn
ZXIgdHlwZXMuCitURVNUKFByaW50QnVpbHRJblR5cGVUZXN0LCBJbnRlZ2VyKSB7CisgIEVYUEVD
VF9FUSgiJ1xceEZGJyAoMjU1KSIsIFByaW50KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1
NSkpKTsgIC8vIHVpbnQ4CisgIEVYUEVDVF9FUSgiJ1xceDgwJyAoLTEyOCkiLCBQcmludChzdGF0
aWNfY2FzdDxzaWduZWQgY2hhcj4oLTEyOCkpKTsgIC8vIGludDgKKyAgRVhQRUNUX0VRKCI2NTUz
NSIsIFByaW50KFVTSFJUX01BWCkpOyAgLy8gdWludDE2CisgIEVYUEVDVF9FUSgiLTMyNzY4Iiwg
UHJpbnQoU0hSVF9NSU4pKTsgIC8vIGludDE2CisgIEVYUEVDVF9FUSgiNDI5NDk2NzI5NSIsIFBy
aW50KFVJTlRfTUFYKSk7ICAvLyB1aW50MzIKKyAgRVhQRUNUX0VRKCItMjE0NzQ4MzY0OCIsIFBy
aW50KElOVF9NSU4pKTsgIC8vIGludDMyCisgIEVYUEVDVF9FUSgiMTg0NDY3NDQwNzM3MDk1NTE2
MTUiLAorICAgICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8dGVzdGluZzo6aW50ZXJuYWw6OlVJ
bnQ2ND4oLTEpKSk7ICAvLyB1aW50NjQKKyAgRVhQRUNUX0VRKCItOTIyMzM3MjAzNjg1NDc3NTgw
OCIsCisgICAgICAgICAgICBQcmludChzdGF0aWNfY2FzdDx0ZXN0aW5nOjppbnRlcm5hbDo6SW50
NjQ+KDEpIDw8IDYzKSk7ICAvLyBpbnQ2NAorfQorCisvLyBTaXplIHR5cGVzLgorVEVTVChQcmlu
dEJ1aWx0SW5UeXBlVGVzdCwgU2l6ZV90KSB7CisgIEVYUEVDVF9FUSgiMSIsIFByaW50KHNpemVv
ZignYScpKSk7ICAvLyBzaXplX3QuCisjaWYgIUdURVNUX09TX1dJTkRPV1MKKyAgLy8gV2luZG93
cyBoYXMgbm8gc3NpemVfdCB0eXBlLgorICBFWFBFQ1RfRVEoIi0yIiwgUHJpbnQoc3RhdGljX2Nh
c3Q8c3NpemVfdD4oLTIpKSk7ICAvLyBzc2l6ZV90LgorI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lO
RE9XUworfQorCisvLyBGbG9hdGluZy1wb2ludHMuCitURVNUKFByaW50QnVpbHRJblR5cGVUZXN0
LCBGbG9hdGluZ1BvaW50cykgeworICBFWFBFQ1RfRVEoIjEuNSIsIFByaW50KDEuNWYpKTsgICAv
LyBmbG9hdAorICBFWFBFQ1RfRVEoIi0yLjUiLCBQcmludCgtMi41KSk7ICAvLyBkb3VibGUKK30K
KworLy8gU2luY2UgOjpzdGQ6OnN0cmluZ3N0cmVhbTo6b3BlcmF0b3I8PChjb25zdCB2b2lkICop
IGZvcm1hdHMgdGhlIHBvaW50ZXIKKy8vIG91dHB1dCBkaWZmZXJlbnRseSB3aXRoIGRpZmZlcmVu
dCBjb21waWxlcnMsIHdlIGhhdmUgdG8gY3JlYXRlIHRoZSBleHBlY3RlZAorLy8gb3V0cHV0IGZp
cnN0IGFuZCB1c2UgaXQgYXMgb3VyIGV4cGVjdGF0aW9uLgorc3RhdGljIHN0ZDo6c3RyaW5nIFBy
aW50UG9pbnRlcihjb25zdCB2b2lkKiBwKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gZXhwZWN0
ZWRfcmVzdWx0X3N0cmVhbTsKKyAgZXhwZWN0ZWRfcmVzdWx0X3N0cmVhbSA8PCBwOworICByZXR1
cm4gZXhwZWN0ZWRfcmVzdWx0X3N0cmVhbS5zdHIoKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcg
QyBzdHJpbmdzLgorCisvLyBjb25zdCBjaGFyKi4KK1RFU1QoUHJpbnRDU3RyaW5nVGVzdCwgQ29u
c3QpIHsKKyAgY29uc3QgY2hhciogcCA9ICJXb3JsZCI7CisgIEVYUEVDVF9FUShQcmludFBvaW50
ZXIocCkgKyAiIHBvaW50aW5nIHRvIFwiV29ybGRcIiIsIFByaW50KHApKTsKK30KKworLy8gY2hh
ciouCitURVNUKFByaW50Q1N0cmluZ1Rlc3QsIE5vbkNvbnN0KSB7CisgIGNoYXIgcFtdID0gIkhp
IjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSArICIgcG9pbnRpbmcgdG8gXCJIaVwiIiwK
KyAgICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0PGNoYXIqPihwKSkpOworfQorCisvLyBOVUxM
IEMgc3RyaW5nLgorVEVTVChQcmludENTdHJpbmdUZXN0LCBOdWxsKSB7CisgIGNvbnN0IGNoYXIq
IHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9CisKKy8vIFRlc3Rz
IHRoYXQgQyBzdHJpbmdzIGFyZSBlc2NhcGVkIHByb3Blcmx5LgorVEVTVChQcmludENTdHJpbmdU
ZXN0LCBFc2NhcGVzUHJvcGVybHkpIHsKKyAgY29uc3QgY2hhciogcCA9ICInXCI/XFxcYVxiXGZc
blxyXHRcdlx4N0ZceEZGIGEiOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApICsgIiBwb2lu
dGluZyB0byBcIidcXFwiP1xcXFxcXGFcXGJcXGYiCisgICAgICAgICAgICAiXFxuXFxyXFx0XFx2
XFx4N0ZcXHhGRiBhXCIiLAorICAgICAgICAgICAgUHJpbnQocCkpOworfQorCisvLyBNU1ZDIGNv
bXBpbGVyIGNhbiBiZSBjb25maWd1cmVkIHRvIGRlZmluZSB3aGFyX3QgYXMgYSB0eXBlZGVmCisv
LyBvZiB1bnNpZ25lZCBzaG9ydC4gRGVmaW5pbmcgYW4gb3ZlcmxvYWQgZm9yIGNvbnN0IHdjaGFy
X3QqIGluIHRoYXQgY2FzZQorLy8gd291bGQgY2F1c2UgcG9pbnRlcnMgdG8gdW5zaWduZWQgc2hv
cnRzIGJlIHByaW50ZWQgYXMgd2lkZSBzdHJpbmdzLAorLy8gcG9zc2libHkgYWNjZXNzaW5nIG1v
cmUgbWVtb3J5IHRoYW4gaW50ZW5kZWQgYW5kIGNhdXNpbmcgaW52YWxpZAorLy8gbWVtb3J5IGFj
Y2Vzc2VzLiBNU1ZDIGRlZmluZXMgX05BVElWRV9XQ0hBUl9UX0RFRklORUQgc3ltYm9sIHdoZW4K
Ky8vIHdjaGFyX3QgaXMgaW1wbGVtZW50ZWQgYXMgYSBuYXRpdmUgdHlwZS4KKyNpZiAhZGVmaW5l
ZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkKKworLy8gY29u
c3Qgd2NoYXJfdCouCitURVNUKFByaW50V2lkZUNTdHJpbmdUZXN0LCBDb25zdCkgeworICBjb25z
dCB3Y2hhcl90KiBwID0gTCJXb3JsZCI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCkgKyAi
IHBvaW50aW5nIHRvIExcIldvcmxkXCIiLCBQcmludChwKSk7Cit9CisKKy8vIHdjaGFyX3QqLgor
VEVTVChQcmludFdpZGVDU3RyaW5nVGVzdCwgTm9uQ29uc3QpIHsKKyAgd2NoYXJfdCBwW10gPSBM
IkhpIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSArICIgcG9pbnRpbmcgdG8gTFwiSGlc
IiIsCisgICAgICAgICAgICBQcmludChzdGF0aWNfY2FzdDx3Y2hhcl90Kj4ocCkpKTsKK30KKwor
Ly8gTlVMTCB3aWRlIEMgc3RyaW5nLgorVEVTVChQcmludFdpZGVDU3RyaW5nVGVzdCwgTnVsbCkg
eworICBjb25zdCB3Y2hhcl90KiBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQo
cCkpOworfQorCisvLyBUZXN0cyB0aGF0IHdpZGUgQyBzdHJpbmdzIGFyZSBlc2NhcGVkIHByb3Bl
cmx5LgorVEVTVChQcmludFdpZGVDU3RyaW5nVGVzdCwgRXNjYXBlc1Byb3Blcmx5KSB7CisgIGNv
bnN0IHdjaGFyX3Qgc1tdID0geydcJycsICciJywgJz8nLCAnXFwnLCAnXGEnLCAnXGInLCAnXGYn
LCAnXG4nLCAnXHInLAorICAgICAgICAgICAgICAgICAgICAgICAnXHQnLCAnXHYnLCAweEQzLCAw
eDU3NiwgMHg4RDMsIDB4Qzc0RCwgJyAnLCAnYScsICdcMCd9OworICBFWFBFQ1RfRVEoUHJpbnRQ
b2ludGVyKHMpICsgIiBwb2ludGluZyB0byBMXCInXFxcIj9cXFxcXFxhXFxiXFxmIgorICAgICAg
ICAgICAgIlxcblxcclxcdFxcdlxceEQzXFx4NTc2XFx4OEQzXFx4Qzc0RCBhXCIiLAorICAgICAg
ICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8Y29uc3Qgd2NoYXJfdCo+KHMpKSk7Cit9CisjZW5kaWYg
IC8vIG5hdGl2ZSB3Y2hhcl90CisKKy8vIFRlc3RzIHByaW50aW5nIHBvaW50ZXJzIHRvIG90aGVy
IGNoYXIgdHlwZXMuCisKKy8vIHNpZ25lZCBjaGFyKi4KK1RFU1QoUHJpbnRDaGFyUG9pbnRlclRl
c3QsIFNpZ25lZENoYXIpIHsKKyAgc2lnbmVkIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PHNp
Z25lZCBjaGFyKj4oMHgxMjM0KTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQo
cCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisv
LyBjb25zdCBzaWduZWQgY2hhciouCitURVNUKFByaW50Q2hhclBvaW50ZXJUZXN0LCBDb25zdFNp
Z25lZENoYXIpIHsKKyAgc2lnbmVkIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PHNpZ25lZCBj
aGFyKj4oMHgxMjM0KTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOwor
ICBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyB1bnNp
Z25lZCBjaGFyKi4KK1RFU1QoUHJpbnRDaGFyUG9pbnRlclRlc3QsIFVuc2lnbmVkQ2hhcikgewor
ICB1bnNpZ25lZCBjaGFyKiBwID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oMHgx
MjM0KTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0gTlVM
TDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBjb25zdCB1bnNpZ25l
ZCBjaGFyKi4KK1RFU1QoUHJpbnRDaGFyUG9pbnRlclRlc3QsIENvbnN0VW5zaWduZWRDaGFyKSB7
CisgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2ln
bmVkIGNoYXIqPigweDEyMzQpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChw
KSk7CisgIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9CisKKy8v
IFRlc3RzIHByaW50aW5nIHBvaW50ZXJzIHRvIHNpbXBsZSwgYnVpbHQtaW4gdHlwZXMuCisKKy8v
IGJvb2wqLgorVEVTVChQcmludFBvaW50ZXJUb0J1aWx0SW5UeXBlVGVzdCwgQm9vbCkgeworICBi
b29sKiBwID0gcmVpbnRlcnByZXRfY2FzdDxib29sKj4oMHhBQkNEKTsKKyAgRVhQRUNUX0VRKFBy
aW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxM
IiwgUHJpbnQocCkpOworfQorCisvLyB2b2lkKi4KK1RFU1QoUHJpbnRQb2ludGVyVG9CdWlsdElu
VHlwZVRlc3QsIFZvaWQpIHsKKyAgdm9pZCogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4
QUJDRCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5V
TEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gY29uc3Qgdm9pZCou
CitURVNUKFByaW50UG9pbnRlclRvQnVpbHRJblR5cGVUZXN0LCBDb25zdFZvaWQpIHsKKyAgY29u
c3Qgdm9pZCogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KDB4QUJDRCk7CisgIEVY
UEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVD
VF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgcG9pbnRlcnMg
dG8gcG9pbnRlcnMuCitURVNUKFByaW50UG9pbnRlclRvUG9pbnRlclRlc3QsIEludFBvaW50ZXJQ
b2ludGVyKSB7CisgIGludCoqIHAgPSByZWludGVycHJldF9jYXN0PGludCoqPigweEFCQ0QpOwor
ICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7CisgIHAgPSBOVUxMOworICBF
WFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIChub24t
bWVtYmVyKSBmdW5jdGlvbiBwb2ludGVycy4KKwordm9pZCBNeUZ1bmN0aW9uKGludCAvKiBuICov
KSB7fQorCitURVNUKFByaW50UG9pbnRlclRlc3QsIE5vbk1lbWJlckZ1bmN0aW9uUG9pbnRlcikg
eworICAvLyBXZSBjYW5ub3QgZGlyZWN0bHkgY2FzdCAmTXlGdW5jdGlvbiB0byBjb25zdCB2b2lk
KiBiZWNhdXNlIHRoZQorICAvLyBzdGFuZGFyZCBkaXNhbGxvd3MgY2FzdGluZyBiZXR3ZWVuIHBv
aW50ZXJzIHRvIGZ1bmN0aW9ucyBhbmQKKyAgLy8gcG9pbnRlcnMgdG8gb2JqZWN0cywgYW5kIHNv
bWUgY29tcGlsZXJzIChlLmcuIEdDQyAzLjQpIGVuZm9yY2UKKyAgLy8gdGhpcyBsaW1pdGF0aW9u
LgorICBFWFBFQ1RfRVEoCisgICAgICBQcmludFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB2b2lkKj4oCisgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxpbnRlcm5hbDo6QmlnZ2VzdElu
dD4oJk15RnVuY3Rpb24pKSksCisgICAgICBQcmludCgmTXlGdW5jdGlvbikpOworICBpbnQgKCpw
KShib29sKSA9IE5VTEw7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkp
OworfQorCisvLyBBbiBhc3NlcnRpb24gcHJlZGljYXRlIGRldGVybWluaW5nIHdoZXRoZXIgYSBv
bmUgc3RyaW5nIGlzIGEgcHJlZml4IGZvcgorLy8gYW5vdGhlci4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBTdHJpbmdUeXBlPgorQXNzZXJ0aW9uUmVzdWx0IEhhc1ByZWZpeChjb25zdCBTdHJpbmdUeXBl
JiBzdHIsIGNvbnN0IFN0cmluZ1R5cGUmIHByZWZpeCkgeworICBpZiAoc3RyLmZpbmQocHJlZml4
LCAwKSA9PSAwKQorICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CisKKyAgY29uc3QgYm9v
bCBpc193aWRlX3N0cmluZyA9IHNpemVvZihwcmVmaXhbMF0pID4gMTsKKyAgY29uc3QgY2hhciog
Y29uc3QgYmVnaW5fc3RyaW5nX3F1b3RlID0gaXNfd2lkZV9zdHJpbmcgPyAiTFwiIiA6ICJcIiI7
CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IGJlZ2luX3N0cmluZ19xdW90
ZSA8PCBwcmVmaXggPDwgIlwiIGlzIG5vdCBhIHByZWZpeCBvZiAiCisgICAgICA8PCBiZWdpbl9z
dHJpbmdfcXVvdGUgPDwgc3RyIDw8ICJcIlxuIjsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgbWVt
YmVyIHZhcmlhYmxlIHBvaW50ZXJzLiAgQWx0aG91Z2ggdGhleSBhcmUgY2FsbGVkCisvLyBwb2lu
dGVycywgdGhleSBkb24ndCBwb2ludCB0byBhIGxvY2F0aW9uIGluIHRoZSBhZGRyZXNzIHNwYWNl
LgorLy8gVGhlaXIgcmVwcmVzZW50YXRpb24gaXMgaW1wbGVtZW50YXRpb24tZGVmaW5lZC4gIFRo
dXMgdGhleSB3aWxsIGJlCisvLyBwcmludGVkIGFzIHJhdyBieXRlcy4KKworc3RydWN0IEZvbyB7
CisgcHVibGljOgorICB2aXJ0dWFsIH5Gb28oKSB7fQorICBpbnQgTXlNZXRob2QoY2hhciB4KSB7
IHJldHVybiB4ICsgMTsgfQorICB2aXJ0dWFsIGNoYXIgTXlWaXJ0dWFsTWV0aG9kKGludCAvKiBu
ICovKSB7IHJldHVybiAnYSc7IH0KKworICBpbnQgdmFsdWU7Cit9OworCitURVNUKFByaW50UG9p
bnRlclRlc3QsIE1lbWJlclZhcmlhYmxlUG9pbnRlcikgeworICBFWFBFQ1RfVFJVRShIYXNQcmVm
aXgoUHJpbnQoJkZvbzo6dmFsdWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgUHJpbnQoc2l6
ZW9mKCZGb286OnZhbHVlKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKKyAgaW50IEZvbzo6KnAgPSBO
VUxMOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9UUlVFKEhhc1ByZWZpeChQcmludChwKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFByaW50KHNpemVvZihwKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsK
K30KKworLy8gVGVzdHMgcHJpbnRpbmcgbWVtYmVyIGZ1bmN0aW9uIHBvaW50ZXJzLiAgQWx0aG91
Z2ggdGhleSBhcmUgY2FsbGVkCisvLyBwb2ludGVycywgdGhleSBkb24ndCBwb2ludCB0byBhIGxv
Y2F0aW9uIGluIHRoZSBhZGRyZXNzIHNwYWNlLgorLy8gVGhlaXIgcmVwcmVzZW50YXRpb24gaXMg
aW1wbGVtZW50YXRpb24tZGVmaW5lZC4gIFRodXMgdGhleSB3aWxsIGJlCisvLyBwcmludGVkIGFz
IHJhdyBieXRlcy4KK1RFU1QoUHJpbnRQb2ludGVyVGVzdCwgTWVtYmVyRnVuY3Rpb25Qb2ludGVy
KSB7CisgIEVYUEVDVF9UUlVFKEhhc1ByZWZpeChQcmludCgmRm9vOjpNeU1ldGhvZCksCisgICAg
ICAgICAgICAgICAgICAgICAgICBQcmludChzaXplb2YoJkZvbzo6TXlNZXRob2QpKSArICItYnl0
ZSBvYmplY3QgIikpOworICBFWFBFQ1RfVFJVRSgKKyAgICAgIEhhc1ByZWZpeChQcmludCgmRm9v
OjpNeVZpcnR1YWxNZXRob2QpLAorICAgICAgICAgICAgICAgIFByaW50KHNpemVvZigoJkZvbzo6
TXlWaXJ0dWFsTWV0aG9kKSkpICsgIi1ieXRlIG9iamVjdCAiKSk7CisgIGludCAoRm9vOjoqcCko
Y2hhcikgPSBOVUxMOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9UUlVFKEhhc1ByZWZpeChQcmludChw
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFByaW50KHNpemVvZihwKSkgKyAiLWJ5dGUgb2Jq
ZWN0ICIpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgQyBhcnJheXMuCisKKy8vIFRoZSBkaWZm
ZXJlbmNlIGJldHdlZW4gdGhpcyBhbmQgUHJpbnQoKSBpcyB0aGF0IGl0IGVuc3VyZXMgdGhhdCB0
aGUKKy8vIGFyZ3VtZW50IGlzIGEgcmVmZXJlbmNlIHRvIGFuIGFycmF5LgordGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHNpemVfdCBOPgorc3RkOjpzdHJpbmcgUHJpbnRBcnJheUhlbHBlcihUICgmYSlb
Tl0pIHsKKyAgcmV0dXJuIFByaW50KGEpOworfQorCisvLyBPbmUtZGltZW5zaW9uYWwgYXJyYXku
CitURVNUKFByaW50QXJyYXlUZXN0LCBPbmVEaW1lbnNpb25hbEFycmF5KSB7CisgIGludCBhWzVd
ID0geyAxLCAyLCAzLCA0LCA1IH07CisgIEVYUEVDVF9FUSgieyAxLCAyLCAzLCA0LCA1IH0iLCBQ
cmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8gVHdvLWRpbWVuc2lvbmFsIGFycmF5LgorVEVT
VChQcmludEFycmF5VGVzdCwgVHdvRGltZW5zaW9uYWxBcnJheSkgeworICBpbnQgYVsyXVs1XSA9
IHsKKyAgICB7IDEsIDIsIDMsIDQsIDUgfSwKKyAgICB7IDYsIDcsIDgsIDksIDAgfQorICB9Owor
ICBFWFBFQ1RfRVEoInsgeyAxLCAyLCAzLCA0LCA1IH0sIHsgNiwgNywgOCwgOSwgMCB9IH0iLCBQ
cmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8gQXJyYXkgb2YgY29uc3QgZWxlbWVudHMuCitU
RVNUKFByaW50QXJyYXlUZXN0LCBDb25zdEFycmF5KSB7CisgIGNvbnN0IGJvb2wgYVsxXSA9IHsg
ZmFsc2UgfTsKKyAgRVhQRUNUX0VRKCJ7IGZhbHNlIH0iLCBQcmludEFycmF5SGVscGVyKGEpKTsK
K30KKworLy8gY2hhciBhcnJheSB3aXRob3V0IHRlcm1pbmF0aW5nIE5VTC4KK1RFU1QoUHJpbnRB
cnJheVRlc3QsIENoYXJBcnJheVdpdGhOb1Rlcm1pbmF0aW5nTnVsKSB7CisgIC8vIEFycmF5IGEg
Y29udGFpbnMgJ1wwJyBpbiB0aGUgbWlkZGxlIGFuZCBkb2Vzbid0IGVuZCB3aXRoICdcMCcuCisg
IGNoYXIgYVtdID0geyAnSCcsICdcMCcsICdpJyB9OworICBFWFBFQ1RfRVEoIlwiSFxcMGlcIiAo
bm8gdGVybWluYXRpbmcgTlVMKSIsIFByaW50QXJyYXlIZWxwZXIoYSkpOworfQorCisvLyBjb25z
dCBjaGFyIGFycmF5IHdpdGggdGVybWluYXRpbmcgTlVMLgorVEVTVChQcmludEFycmF5VGVzdCwg
Q29uc3RDaGFyQXJyYXlXaXRoVGVybWluYXRpbmdOdWwpIHsKKyAgY29uc3QgY2hhciBhW10gPSAi
XDBIaSI7CisgIEVYUEVDVF9FUSgiXCJcXDBIaVwiIiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Cit9
CisKKy8vIGNvbnN0IHdjaGFyX3QgYXJyYXkgd2l0aG91dCB0ZXJtaW5hdGluZyBOVUwuCitURVNU
KFByaW50QXJyYXlUZXN0LCBXQ2hhckFycmF5V2l0aE5vVGVybWluYXRpbmdOdWwpIHsKKyAgLy8g
QXJyYXkgYSBjb250YWlucyAnXDAnIGluIHRoZSBtaWRkbGUgYW5kIGRvZXNuJ3QgZW5kIHdpdGgg
J1wwJy4KKyAgY29uc3Qgd2NoYXJfdCBhW10gPSB7IEwnSCcsIEwnXDAnLCBMJ2knIH07CisgIEVY
UEVDVF9FUSgiTFwiSFxcMGlcIiAobm8gdGVybWluYXRpbmcgTlVMKSIsIFByaW50QXJyYXlIZWxw
ZXIoYSkpOworfQorCisvLyB3Y2hhcl90IGFycmF5IHdpdGggdGVybWluYXRpbmcgTlVMLgorVEVT
VChQcmludEFycmF5VGVzdCwgV0NvbnN0Q2hhckFycmF5V2l0aFRlcm1pbmF0aW5nTnVsKSB7Cisg
IGNvbnN0IHdjaGFyX3QgYVtdID0gTCJcMEhpIjsKKyAgRVhQRUNUX0VRKCJMXCJcXDBIaVwiIiwg
UHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIEFycmF5IG9mIG9iamVjdHMuCitURVNUKFBy
aW50QXJyYXlUZXN0LCBPYmplY3RBcnJheSkgeworICBzdGQ6OnN0cmluZyBhWzNdID0geyJIaSIs
ICJIZWxsbyIsICJOaSBoYW8ifTsKKyAgRVhQRUNUX0VRKCJ7IFwiSGlcIiwgXCJIZWxsb1wiLCBc
Ik5pIGhhb1wiIH0iLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8gQXJyYXkgd2l0aCBt
YW55IGVsZW1lbnRzLgorVEVTVChQcmludEFycmF5VGVzdCwgQmlnQXJyYXkpIHsKKyAgaW50IGFb
MTAwXSA9IHsgMSwgMiwgMyB9OworICBFWFBFQ1RfRVEoInsgMSwgMiwgMywgMCwgMCwgMCwgMCwg
MCwgLi4uLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIH0iLAorICAgICAgICAgICAgUHJpbnRBcnJh
eUhlbHBlcihhKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIDo6c3RyaW5nIGFuZCA6OnN0ZDo6
c3RyaW5nLgorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKy8vIDo6c3RyaW5nLgorVEVT
VChQcmludFN0cmluZ1Rlc3QsIFN0cmluZ0luR2xvYmFsTmFtZXNwYWNlKSB7CisgIGNvbnN0IGNo
YXIgc1tdID0gIidcIj9cXFxhXGJcZlxuXDBcclx0XHZceDdGXHhGRiBhIjsKKyAgY29uc3QgOjpz
dHJpbmcgc3RyKHMsIHNpemVvZihzKSk7CisgIEVYUEVDVF9FUSgiXCInXFxcIj9cXFxcXFxhXFxi
XFxmXFxuXFwwXFxyXFx0XFx2XFx4N0ZcXHhGRiBhXFwwXCIiLAorICAgICAgICAgICAgUHJpbnQo
c3RyKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKKy8vIDo6c3Rk
OjpzdHJpbmcuCitURVNUKFByaW50U3RyaW5nVGVzdCwgU3RyaW5nSW5TdGROYW1lc3BhY2UpIHsK
KyAgY29uc3QgY2hhciBzW10gPSAiJ1wiP1xcXGFcYlxmXG5cMFxyXHRcdlx4N0ZceEZGIGEiOwor
ICBjb25zdCA6OnN0ZDo6c3RyaW5nIHN0cihzLCBzaXplb2YocykpOworICBFWFBFQ1RfRVEoIlwi
J1xcXCI/XFxcXFxcYVxcYlxcZlxcblxcMFxcclxcdFxcdlxceDdGXFx4RkYgYVxcMFwiIiwKKyAg
ICAgICAgICAgIFByaW50KHN0cikpOworfQorCitURVNUKFByaW50U3RyaW5nVGVzdCwgU3RyaW5n
QW1iaWd1b3VzSGV4KSB7CisgIC8vICJceDZCQU5BTkEiIGlzIGFtYmlndW91cywgaXQgY2FuIGJl
IGludGVycHJldGVkIGFzIHN0YXJ0aW5nIHdpdGggZWl0aGVyIG9mOgorICAvLyAnXHg2JywgJ1x4
NkInLCBvciAnXHg2QkEnLgorCisgIC8vIGEgaGV4IGVzY2FwaW5nIHNlcXVlbmNlIGZvbGxvd2lu
ZyBieSBhIGRlY2ltYWwgZGlnaXQKKyAgRVhQRUNUX0VRKCJcIjBcXHgxMlwiIFwiM1wiIiwgUHJp
bnQoOjpzdGQ6OnN0cmluZygiMFx4MTIiICIzIikpKTsKKyAgLy8gYSBoZXggZXNjYXBpbmcgc2Vx
dWVuY2UgZm9sbG93aW5nIGJ5IGEgaGV4IGRpZ2l0IChsb3dlci1jYXNlKQorICBFWFBFQ1RfRVEo
IlwibW1cXHg2XCIgXCJiYW5hbmFzXCIiLCBQcmludCg6OnN0ZDo6c3RyaW5nKCJtbVx4NiIgImJh
bmFuYXMiKSkpOworICAvLyBhIGhleCBlc2NhcGluZyBzZXF1ZW5jZSBmb2xsb3dpbmcgYnkgYSBo
ZXggZGlnaXQgKHVwcGVyLWNhc2UpCisgIEVYUEVDVF9FUSgiXCJOT01cXHg2XCIgXCJCQU5BTkFc
IiIsIFByaW50KDo6c3RkOjpzdHJpbmcoIk5PTVx4NiIgIkJBTkFOQSIpKSk7CisgIC8vIGEgaGV4
IGVzY2FwaW5nIHNlcXVlbmNlIGZvbGxvd2luZyBieSBhIG5vbi14ZGlnaXQKKyAgRVhQRUNUX0VR
KCJcIiFcXHg1LSFcIiIsIFByaW50KDo6c3RkOjpzdHJpbmcoIiFceDUtISIpKSk7Cit9CisKKy8v
IFRlc3RzIHByaW50aW5nIDo6d3N0cmluZyBhbmQgOjpzdGQ6OndzdHJpbmcuCisKKyNpZiBHVEVT
VF9IQVNfR0xPQkFMX1dTVFJJTkcKKy8vIDo6d3N0cmluZy4KK1RFU1QoUHJpbnRXaWRlU3RyaW5n
VGVzdCwgU3RyaW5nSW5HbG9iYWxOYW1lc3BhY2UpIHsKKyAgY29uc3Qgd2NoYXJfdCBzW10gPSBM
IidcIj9cXFxhXGJcZlxuXDBcclx0XHZceEQzXHg1NzZceDhEM1x4Qzc0RCBhIjsKKyAgY29uc3Qg
Ojp3c3RyaW5nIHN0cihzLCBzaXplb2Yocykvc2l6ZW9mKHdjaGFyX3QpKTsKKyAgRVhQRUNUX0VR
KCJMXCInXFxcIj9cXFxcXFxhXFxiXFxmXFxuXFwwXFxyXFx0XFx2IgorICAgICAgICAgICAgIlxc
eEQzXFx4NTc2XFx4OEQzXFx4Qzc0RCBhXFwwXCIiLAorICAgICAgICAgICAgUHJpbnQoc3RyKSk7
Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORworCisjaWYgR1RFU1RfSEFT
X1NURF9XU1RSSU5HCisvLyA6OnN0ZDo6d3N0cmluZy4KK1RFU1QoUHJpbnRXaWRlU3RyaW5nVGVz
dCwgU3RyaW5nSW5TdGROYW1lc3BhY2UpIHsKKyAgY29uc3Qgd2NoYXJfdCBzW10gPSBMIidcIj9c
XFxhXGJcZlxuXDBcclx0XHZceEQzXHg1NzZceDhEM1x4Qzc0RCBhIjsKKyAgY29uc3QgOjpzdGQ6
OndzdHJpbmcgc3RyKHMsIHNpemVvZihzKS9zaXplb2Yod2NoYXJfdCkpOworICBFWFBFQ1RfRVEo
IkxcIidcXFwiP1xcXFxcXGFcXGJcXGZcXG5cXDBcXHJcXHRcXHYiCisgICAgICAgICAgICAiXFx4
RDNcXHg1NzZcXHg4RDNcXHhDNzREIGFcXDBcIiIsCisgICAgICAgICAgICBQcmludChzdHIpKTsK
K30KKworVEVTVChQcmludFdpZGVTdHJpbmdUZXN0LCBTdHJpbmdBbWJpZ3VvdXNIZXgpIHsKKyAg
Ly8gc2FtZSBmb3Igd2lkZSBzdHJpbmdzLgorICBFWFBFQ1RfRVEoIkxcIjBcXHgxMlwiIExcIjNc
IiIsIFByaW50KDo6c3RkOjp3c3RyaW5nKEwiMFx4MTIiIEwiMyIpKSk7CisgIEVYUEVDVF9FUSgi
TFwibW1cXHg2XCIgTFwiYmFuYW5hc1wiIiwKKyAgICAgICAgICAgIFByaW50KDo6c3RkOjp3c3Ry
aW5nKEwibW1ceDYiIEwiYmFuYW5hcyIpKSk7CisgIEVYUEVDVF9FUSgiTFwiTk9NXFx4NlwiIExc
IkJBTkFOQVwiIiwKKyAgICAgICAgICAgIFByaW50KDo6c3RkOjp3c3RyaW5nKEwiTk9NXHg2IiBM
IkJBTkFOQSIpKSk7CisgIEVYUEVDVF9FUSgiTFwiIVxceDUtIVwiIiwgUHJpbnQoOjpzdGQ6Ondz
dHJpbmcoTCIhXHg1LSEiKSkpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcK
KworLy8gVGVzdHMgcHJpbnRpbmcgdHlwZXMgdGhhdCBzdXBwb3J0IGdlbmVyaWMgc3RyZWFtaW5n
IChpLmUuIHN0cmVhbWluZworLy8gdG8gc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFp
dHM+IGZvciBhbnkgdmFsaWQgQ2hhciBhbmQKKy8vIENoYXJUcmFpdHMgdHlwZXMpLgorCisvLyBU
ZXN0cyBwcmludGluZyBhIG5vbi10ZW1wbGF0ZSB0eXBlIHRoYXQgc3VwcG9ydHMgZ2VuZXJpYyBz
dHJlYW1pbmcuCisKK2NsYXNzIEFsbG93c0dlbmVyaWNTdHJlYW1pbmcge307CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyLCB0eXBlbmFtZSBDaGFyVHJhaXRzPgorc3RkOjpiYXNpY19vc3RyZWFt
PENoYXIsIENoYXJUcmFpdHM+JiBvcGVyYXRvcjw8KAorICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxD
aGFyLCBDaGFyVHJhaXRzPiYgb3MsCisgICAgY29uc3QgQWxsb3dzR2VuZXJpY1N0cmVhbWluZyYg
LyogYSAqLykgeworICByZXR1cm4gb3MgPDwgIkFsbG93c0dlbmVyaWNTdHJlYW1pbmciOworfQor
CitURVNUKFByaW50VHlwZVdpdGhHZW5lcmljU3RyZWFtaW5nVGVzdCwgTm9uVGVtcGxhdGVUeXBl
KSB7CisgIEFsbG93c0dlbmVyaWNTdHJlYW1pbmcgYTsKKyAgRVhQRUNUX0VRKCJBbGxvd3NHZW5l
cmljU3RyZWFtaW5nIiwgUHJpbnQoYSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyBhIHRlbXBs
YXRlIHR5cGUgdGhhdCBzdXBwb3J0cyBnZW5lcmljIHN0cmVhbWluZy4KKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitjbGFzcyBBbGxvd3NHZW5lcmljU3RyZWFtaW5nVGVtcGxhdGUge307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyLCB0eXBlbmFtZSBDaGFyVHJhaXRzLCB0eXBlbmFtZSBUPgor
c3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcGVyYXRvcjw8KAorICAgIHN0
ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYgb3MsCisgICAgY29uc3QgQWxsb3dz
R2VuZXJpY1N0cmVhbWluZ1RlbXBsYXRlPFQ+JiAvKiBhICovKSB7CisgIHJldHVybiBvcyA8PCAi
QWxsb3dzR2VuZXJpY1N0cmVhbWluZ1RlbXBsYXRlIjsKK30KKworVEVTVChQcmludFR5cGVXaXRo
R2VuZXJpY1N0cmVhbWluZ1Rlc3QsIFRlbXBsYXRlVHlwZSkgeworICBBbGxvd3NHZW5lcmljU3Ry
ZWFtaW5nVGVtcGxhdGU8aW50PiBhOworICBFWFBFQ1RfRVEoIkFsbG93c0dlbmVyaWNTdHJlYW1p
bmdUZW1wbGF0ZSIsIFByaW50KGEpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgYSB0eXBlIHRo
YXQgc3VwcG9ydHMgZ2VuZXJpYyBzdHJlYW1pbmcgYW5kIGNhbiBiZQorLy8gaW1wbGljaXRseSBj
b252ZXJ0ZWQgdG8gYW5vdGhlciBwcmludGFibGUgdHlwZS4KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitjbGFzcyBBbGxvd3NHZW5lcmljU3RyZWFtaW5nQW5kSW1wbGljaXRDb252ZXJzaW9uVGVt
cGxhdGUgeworIHB1YmxpYzoKKyAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhciwgdHlwZW5hbWUgQ2hhclRyYWl0cywg
dHlwZW5hbWUgVD4KK3N0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYgb3BlcmF0
b3I8PCgKKyAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9zLAorICAg
IGNvbnN0IEFsbG93c0dlbmVyaWNTdHJlYW1pbmdBbmRJbXBsaWNpdENvbnZlcnNpb25UZW1wbGF0
ZTxUPiYgLyogYSAqLykgeworICByZXR1cm4gb3MgPDwgIkFsbG93c0dlbmVyaWNTdHJlYW1pbmdB
bmRJbXBsaWNpdENvbnZlcnNpb25UZW1wbGF0ZSI7Cit9CisKK1RFU1QoUHJpbnRUeXBlV2l0aEdl
bmVyaWNTdHJlYW1pbmdUZXN0LCBUeXBlSW1wbGljaXRseUNvbnZlcnRpYmxlKSB7CisgIEFsbG93
c0dlbmVyaWNTdHJlYW1pbmdBbmRJbXBsaWNpdENvbnZlcnNpb25UZW1wbGF0ZTxpbnQ+IGE7Cisg
IEVYUEVDVF9FUSgiQWxsb3dzR2VuZXJpY1N0cmVhbWluZ0FuZEltcGxpY2l0Q29udmVyc2lvblRl
bXBsYXRlIiwgUHJpbnQoYSkpOworfQorCisjaWYgR1RFU1RfSEFTX0FCU0wKKworLy8gVGVzdHMg
cHJpbnRpbmcgOjphYnNsOjpzdHJpbmdfdmlldy4KKworVEVTVChQcmludFN0cmluZ1ZpZXdUZXN0
LCBTaW1wbGVTdHJpbmdWaWV3KSB7CisgIGNvbnN0IDo6YWJzbDo6c3RyaW5nX3ZpZXcgc3AgPSAi
SGVsbG8iOworICBFWFBFQ1RfRVEoIlwiSGVsbG9cIiIsIFByaW50KHNwKSk7Cit9CisKK1RFU1Qo
UHJpbnRTdHJpbmdWaWV3VGVzdCwgVW5wcmludGFibGVDaGFyYWN0ZXJzKSB7CisgIGNvbnN0IGNo
YXIgc3RyW10gPSAiTlVMIChcMCkgYW5kIFxyXHQiOworICBjb25zdCA6OmFic2w6OnN0cmluZ192
aWV3IHNwKHN0ciwgc2l6ZW9mKHN0cikgLSAxKTsKKyAgRVhQRUNUX0VRKCJcIk5VTCAoXFwwKSBh
bmQgXFxyXFx0XCIiLCBQcmludChzcCkpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNM
CisKKy8vIFRlc3RzIHByaW50aW5nIFNUTCBjb250YWluZXJzLgorCitURVNUKFByaW50U3RsQ29u
dGFpbmVyVGVzdCwgRW1wdHlEZXF1ZSkgeworICBkZXF1ZTxjaGFyPiBlbXB0eTsKKyAgRVhQRUNU
X0VRKCJ7fSIsIFByaW50KGVtcHR5KSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0
LCBOb25FbXB0eURlcXVlKSB7CisgIGRlcXVlPGludD4gbm9uX2VtcHR5OworICBub25fZW1wdHku
cHVzaF9iYWNrKDEpOworICBub25fZW1wdHkucHVzaF9iYWNrKDMpOworICBFWFBFQ1RfRVEoInsg
MSwgMyB9IiwgUHJpbnQobm9uX2VtcHR5KSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfVU5PUkRFUkVE
X01BUF8KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIE9uZUVsZW1lbnRIYXNoTWFwKSB7
CisgIDo6c3RkOjp1bm9yZGVyZWRfbWFwPGludCwgY2hhcj4gbWFwMTsKKyAgbWFwMVsxXSA9ICdh
JzsKKyAgRVhQRUNUX0VRKCJ7ICgxLCAnYScgKDk3LCAweDYxKSkgfSIsIFByaW50KG1hcDEpKTsK
K30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIEhhc2hNdWx0aU1hcCkgeworICA6OnN0
ZDo6dW5vcmRlcmVkX211bHRpbWFwPGludCwgYm9vbD4gbWFwMTsKKyAgbWFwMS5pbnNlcnQobWFr
ZV9wYWlyKDUsIHRydWUpKTsKKyAgbWFwMS5pbnNlcnQobWFrZV9wYWlyKDUsIGZhbHNlKSk7CisK
KyAgLy8gRWxlbWVudHMgb2YgaGFzaF9tdWx0aW1hcCBjYW4gYmUgcHJpbnRlZCBpbiBhbnkgb3Jk
ZXIuCisgIGNvbnN0IHN0ZDo6c3RyaW5nIHJlc3VsdCA9IFByaW50KG1hcDEpOworICBFWFBFQ1Rf
VFJVRShyZXN1bHQgPT0gInsgKDUsIHRydWUpLCAoNSwgZmFsc2UpIH0iIHx8CisgICAgICAgICAg
ICAgIHJlc3VsdCA9PSAieyAoNSwgZmFsc2UpLCAoNSwgdHJ1ZSkgfSIpCisgICAgICAgICAgICAg
ICAgICA8PCAiIHdoZXJlIFByaW50KG1hcDEpIHJldHVybnMgXCIiIDw8IHJlc3VsdCA8PCAiXCIu
IjsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfVU5PUkRFUkVEX01BUF8KKworI2lmIEdURVNU
X0hBU19VTk9SREVSRURfU0VUXworCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgSGFzaFNl
dCkgeworICA6OnN0ZDo6dW5vcmRlcmVkX3NldDxpbnQ+IHNldDE7CisgIHNldDEuaW5zZXJ0KDEp
OworICBFWFBFQ1RfRVEoInsgMSB9IiwgUHJpbnQoc2V0MSkpOworfQorCitURVNUKFByaW50U3Rs
Q29udGFpbmVyVGVzdCwgSGFzaE11bHRpU2V0KSB7CisgIGNvbnN0IGludCBrU2l6ZSA9IDU7Cisg
IGludCBhW2tTaXplXSA9IHsgMSwgMSwgMiwgNSwgMSB9OworICA6OnN0ZDo6dW5vcmRlcmVkX211
bHRpc2V0PGludD4gc2V0MShhLCBhICsga1NpemUpOworCisgIC8vIEVsZW1lbnRzIG9mIGhhc2hf
bXVsdGlzZXQgY2FuIGJlIHByaW50ZWQgaW4gYW55IG9yZGVyLgorICBjb25zdCBzdGQ6OnN0cmlu
ZyByZXN1bHQgPSBQcmludChzZXQxKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZXhwZWN0ZWRfcGF0
dGVybiA9ICJ7IGQsIGQsIGQsIGQsIGQgfSI7ICAvLyBkIG1lYW5zIGEgZGlnaXQuCisKKyAgLy8g
VmVyaWZpZXMgdGhlIHJlc3VsdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBwYXR0ZXJuOyBhbHNvIGV4
dHJhY3RzCisgIC8vIHRoZSBudW1iZXJzIGluIHRoZSByZXN1bHQuCisgIEFTU0VSVF9FUShleHBl
Y3RlZF9wYXR0ZXJuLmxlbmd0aCgpLCByZXN1bHQubGVuZ3RoKCkpOworICBzdGQ6OnZlY3Rvcjxp
bnQ+IG51bWJlcnM7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHJlc3VsdC5sZW5ndGgoKTsg
aSsrKSB7CisgICAgaWYgKGV4cGVjdGVkX3BhdHRlcm5baV0gPT0gJ2QnKSB7CisgICAgICBBU1NF
UlRfTkUoaXNkaWdpdChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihyZXN1bHRbaV0pKSwgMCk7
CisgICAgICBudW1iZXJzLnB1c2hfYmFjayhyZXN1bHRbaV0gLSAnMCcpOworICAgIH0gZWxzZSB7
CisgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfcGF0dGVybltpXSwgcmVzdWx0W2ldKSA8PCAiIHdo
ZXJlIHJlc3VsdCBpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCByZXN1bHQ7CisgICAgfQorICB9CisKKyAgLy8gTWFrZXMgc3VyZSB0aGUgcmVz
dWx0IGNvbnRhaW5zIHRoZSByaWdodCBudW1iZXJzLgorICBzdGQ6OnNvcnQobnVtYmVycy5iZWdp
bigpLCBudW1iZXJzLmVuZCgpKTsKKyAgc3RkOjpzb3J0KGEsIGEgKyBrU2l6ZSk7CisgIEVYUEVD
VF9UUlVFKHN0ZDo6ZXF1YWwoYSwgYSArIGtTaXplLCBudW1iZXJzLmJlZ2luKCkpKTsKK30KKwor
I2VuZGlmICAvLyAgR1RFU1RfSEFTX1VOT1JERVJFRF9TRVRfCisKK1RFU1QoUHJpbnRTdGxDb250
YWluZXJUZXN0LCBMaXN0KSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGFbXSA9IHsiaGVsbG8iLCAi
d29ybGQifTsKKyAgY29uc3QgbGlzdDxzdGQ6OnN0cmluZz4gc3RyaW5ncyhhLCBhICsgMik7Cisg
IEVYUEVDVF9FUSgieyBcImhlbGxvXCIsIFwid29ybGRcIiB9IiwgUHJpbnQoc3RyaW5ncykpOwor
fQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgTWFwKSB7CisgIG1hcDxpbnQsIGJvb2w+
IG1hcDE7CisgIG1hcDFbMV0gPSB0cnVlOworICBtYXAxWzVdID0gZmFsc2U7CisgIG1hcDFbM10g
PSB0cnVlOworICBFWFBFQ1RfRVEoInsgKDEsIHRydWUpLCAoMywgdHJ1ZSksICg1LCBmYWxzZSkg
fSIsIFByaW50KG1hcDEpKTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIE11bHRp
TWFwKSB7CisgIG11bHRpbWFwPGJvb2wsIGludD4gbWFwMTsKKyAgLy8gVGhlIG1ha2VfcGFpciB0
ZW1wbGF0ZSBmdW5jdGlvbiB3b3VsZCBkZWR1Y2UgdGhlIHR5cGUgYXMKKyAgLy8gcGFpcjxib29s
LCBpbnQ+IGhlcmUsIGFuZCBzaW5jZSB0aGUga2V5IHBhcnQgaW4gYSBtdWx0aW1hcCBoYXMgdG8K
KyAgLy8gYmUgY29uc3RhbnQsIHdpdGhvdXQgYSB0ZW1wbGF0ZWQgY3RvciBpbiB0aGUgcGFpciBj
bGFzcyAoYXMgaW4KKyAgLy8gbGliQ3N0ZCBvbiBTb2xhcmlzKSwgbWFrZV9wYWlyIGNhbGwgd291
bGQgZmFpbCB0byBjb21waWxlIGFzIG5vCisgIC8vIGltcGxpY2l0IGNvbnZlcnNpb24gaXMgZm91
bmQuICBUaHVzIGV4cGxpY2l0IHR5cGVuYW1lIGlzIHVzZWQKKyAgLy8gaGVyZSBpbnN0ZWFkLgor
ICBtYXAxLmluc2VydChwYWlyPGNvbnN0IGJvb2wsIGludD4odHJ1ZSwgMCkpOworICBtYXAxLmlu
c2VydChwYWlyPGNvbnN0IGJvb2wsIGludD4odHJ1ZSwgMSkpOworICBtYXAxLmluc2VydChwYWly
PGNvbnN0IGJvb2wsIGludD4oZmFsc2UsIDIpKTsKKyAgRVhQRUNUX0VRKCJ7IChmYWxzZSwgMiks
ICh0cnVlLCAwKSwgKHRydWUsIDEpIH0iLCBQcmludChtYXAxKSk7Cit9CisKK1RFU1QoUHJpbnRT
dGxDb250YWluZXJUZXN0LCBTZXQpIHsKKyAgY29uc3QgdW5zaWduZWQgaW50IGFbXSA9IHsgMywg
MCwgNSB9OworICBzZXQ8dW5zaWduZWQgaW50PiBzZXQxKGEsIGEgKyAzKTsKKyAgRVhQRUNUX0VR
KCJ7IDAsIDMsIDUgfSIsIFByaW50KHNldDEpKTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5l
clRlc3QsIE11bHRpU2V0KSB7CisgIGNvbnN0IGludCBhW10gPSB7IDEsIDEsIDIsIDUsIDEgfTsK
KyAgbXVsdGlzZXQ8aW50PiBzZXQxKGEsIGEgKyA1KTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDEsIDEs
IDIsIDUgfSIsIFByaW50KHNldDEpKTsKK30KKworI2lmIEdURVNUX0hBU19TVERfRk9SV0FSRF9M
SVNUXworCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgU2luZ2x5TGlua2VkTGlzdCkgewor
ICBpbnQgYVtdID0geyA5LCAyLCA4IH07CisgIGNvbnN0IHN0ZDo6Zm9yd2FyZF9saXN0PGludD4g
aW50cyhhLCBhICsgMyk7CisgIEVYUEVDVF9FUSgieyA5LCAyLCA4IH0iLCBQcmludChpbnRzKSk7
Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfRk9SV0FSRF9MSVNUXworCitURVNUKFByaW50
U3RsQ29udGFpbmVyVGVzdCwgUGFpcikgeworICBwYWlyPGNvbnN0IGJvb2wsIGludD4gcCh0cnVl
LCA1KTsKKyAgRVhQRUNUX0VRKCIodHJ1ZSwgNSkiLCBQcmludChwKSk7Cit9CisKK1RFU1QoUHJp
bnRTdGxDb250YWluZXJUZXN0LCBWZWN0b3IpIHsKKyAgdmVjdG9yPGludD4gdjsKKyAgdi5wdXNo
X2JhY2soMSk7CisgIHYucHVzaF9iYWNrKDIpOworICBFWFBFQ1RfRVEoInsgMSwgMiB9IiwgUHJp
bnQodikpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgTG9uZ1NlcXVlbmNlKSB7
CisgIGNvbnN0IGludCBhWzEwMF0gPSB7IDEsIDIsIDMgfTsKKyAgY29uc3QgdmVjdG9yPGludD4g
dihhLCBhICsgMTAwKTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDIsIDMsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsICIKKyAgICAgICAgICAgICIwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAuLi4gfSIsIFByaW50KHYpKTsKK30KKworVEVT
VChQcmludFN0bENvbnRhaW5lclRlc3QsIE5lc3RlZENvbnRhaW5lcikgeworICBjb25zdCBpbnQg
YTFbXSA9IHsgMSwgMiB9OworICBjb25zdCBpbnQgYTJbXSA9IHsgMywgNCwgNSB9OworICBjb25z
dCBsaXN0PGludD4gbDEoYTEsIGExICsgMik7CisgIGNvbnN0IGxpc3Q8aW50PiBsMihhMiwgYTIg
KyAzKTsKKworICB2ZWN0b3I8bGlzdDxpbnQ+ID4gdjsKKyAgdi5wdXNoX2JhY2sobDEpOworICB2
LnB1c2hfYmFjayhsMik7CisgIEVYUEVDVF9FUSgieyB7IDEsIDIgfSwgeyAzLCA0LCA1IH0gfSIs
IFByaW50KHYpKTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIE9uZURpbWVuc2lv
bmFsTmF0aXZlQXJyYXkpIHsKKyAgY29uc3QgaW50IGFbM10gPSB7IDEsIDIsIDMgfTsKKyAgTmF0
aXZlQXJyYXk8aW50PiBiKGEsIDMsIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSk7CisgIEVY
UEVDVF9FUSgieyAxLCAyLCAzIH0iLCBQcmludChiKSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250
YWluZXJUZXN0LCBUd29EaW1lbnNpb25hbE5hdGl2ZUFycmF5KSB7CisgIGNvbnN0IGludCBhWzJd
WzNdID0geyB7IDEsIDIsIDMgfSwgeyA0LCA1LCA2IH0gfTsKKyAgTmF0aXZlQXJyYXk8aW50WzNd
PiBiKGEsIDIsIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSk7CisgIEVYUEVDVF9FUSgieyB7
IDEsIDIsIDMgfSwgeyA0LCA1LCA2IH0gfSIsIFByaW50KGIpKTsKK30KKworLy8gVGVzdHMgdGhh
dCBhIGNsYXNzIG5hbWVkIGl0ZXJhdG9yIGlzbid0IHRyZWF0ZWQgYXMgYSBjb250YWluZXIuCisK
K3N0cnVjdCBpdGVyYXRvciB7CisgIGNoYXIgeDsKK307CisKK1RFU1QoUHJpbnRTdGxDb250YWlu
ZXJUZXN0LCBJdGVyYXRvcikgeworICBpdGVyYXRvciBpdCA9IHt9OworICBFWFBFQ1RfRVEoIjEt
Ynl0ZSBvYmplY3QgPDAwPiIsIFByaW50KGl0KSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBjbGFz
cyBuYW1lZCBjb25zdF9pdGVyYXRvciBpc24ndCB0cmVhdGVkIGFzIGEgY29udGFpbmVyLgorCitz
dHJ1Y3QgY29uc3RfaXRlcmF0b3IgeworICBjaGFyIHg7Cit9OworCitURVNUKFByaW50U3RsQ29u
dGFpbmVyVGVzdCwgQ29uc3RJdGVyYXRvcikgeworICBjb25zdF9pdGVyYXRvciBpdCA9IHt9Owor
ICBFWFBFQ1RfRVEoIjEtYnl0ZSBvYmplY3QgPDAwPiIsIFByaW50KGl0KSk7Cit9CisKKyNpZiBH
VEVTVF9IQVNfVFIxX1RVUExFCisvLyBUZXN0cyBwcmludGluZyA6OnN0ZDo6dHIxOjp0dXBsZXMu
CisKKy8vIFR1cGxlcyBvZiB2YXJpb3VzIGFyaXRpZXMuCitURVNUKFByaW50VHIxVHVwbGVUZXN0
LCBWYXJpb3VzU2l6ZXMpIHsKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8PiB0MDsKKyAgRVhQRUNUX0VR
KCIoKSIsIFByaW50KHQwKSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8aW50PiB0MSg1KTsKKyAg
RVhQRUNUX0VRKCIoNSkiLCBQcmludCh0MSkpOworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGNoYXIs
IGJvb2w+IHQyKCdhJywgdHJ1ZSk7CisgIEVYUEVDVF9FUSgiKCdhJyAoOTcsIDB4NjEpLCB0cnVl
KSIsIFByaW50KHQyKSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBpbnQ+IHQz
KGZhbHNlLCAyLCAzKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMpIiwgUHJpbnQodDMpKTsK
KworICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50PiB0NChmYWxzZSwgMiwg
MywgNCk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0KSIsIFByaW50KHQ0KSk7CisKKyAg
OjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbD4gdDUoZmFsc2UsIDIs
IDMsIDQsIHRydWUpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSkiLCBQcmlu
dCh0NSkpOworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2ws
IGludD4gdDYoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYpOworICBFWFBFQ1RfRVEoIihmYWxzZSwg
MiwgMywgNCwgdHJ1ZSwgNikiLCBQcmludCh0NikpOworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGJv
b2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50PiB0NygKKyAgICAgIGZhbHNlLCAyLCAz
LCA0LCB0cnVlLCA2LCA3KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYs
IDcpIiwgUHJpbnQodDcpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQsIGludCwg
aW50LCBib29sLCBpbnQsIGludCwgYm9vbD4gdDgoCisgICAgICBmYWxzZSwgMiwgMywgNCwgdHJ1
ZSwgNiwgNywgdHJ1ZSk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3
LCB0cnVlKSIsIFByaW50KHQ4KSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBp
bnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGJvb2wsIGludD4gdDkoCisgICAgICBmYWxzZSwgMiwg
MywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSwgOSk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0
LCB0cnVlLCA2LCA3LCB0cnVlLCA5KSIsIFByaW50KHQ5KSk7CisKKyAgY29uc3QgY2hhciogY29u
c3Qgc3RyID0gIjgiOworICAvLyBWQysrIDIwMTAncyBpbXBsZW1lbnRhdGlvbiBvZiB0dXBsZSBv
ZiBDKysweCBpcyBkZWZpY2llbnQsIHJlcXVpcmluZworICAvLyBhbiBleHBsaWNpdCB0eXBlIGNh
c3Qgb2YgTlVMTCB0byBiZSB1c2VkLgorICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBjaGFyLCBz
aG9ydCwgdGVzdGluZzo6aW50ZXJuYWw6OkludDMyLCAgLy8gTk9MSU5UCisgICAgICAgICAgICAg
ICAgICAgIHRlc3Rpbmc6OmludGVybmFsOjpJbnQ2NCwgZmxvYXQsIGRvdWJsZSwgY29uc3QgY2hh
ciosIHZvaWQqLAorICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZz4KKyAgICAgIHQxMChm
YWxzZSwgJ2EnLCBzdGF0aWNfY2FzdDxzaG9ydD4oMyksIDQsIDUsIDEuNUYsIC0yLjUsIHN0ciwg
IC8vIE5PTElOVAorICAgICAgICAgIEltcGxpY2l0Q2FzdF88dm9pZCo+KE5VTEwpLCAiMTAiKTsK
KyAgRVhQRUNUX0VRKCIoZmFsc2UsICdhJyAoOTcsIDB4NjEpLCAzLCA0LCA1LCAxLjUsIC0yLjUs
ICIgKyBQcmludFBvaW50ZXIoc3RyKSArCisgICAgICAgICAgICAiIHBvaW50aW5nIHRvIFwiOFwi
LCBOVUxMLCBcIjEwXCIpIiwKKyAgICAgICAgICAgIFByaW50KHQxMCkpOworfQorCisvLyBOZXN0
ZWQgdHVwbGVzLgorVEVTVChQcmludFRyMVR1cGxlVGVzdCwgTmVzdGVkVHVwbGUpIHsKKyAgOjpz
dGQ6OnRyMTo6dHVwbGU8IDo6c3RkOjp0cjE6OnR1cGxlPGludCwgYm9vbD4sIGNoYXI+IG5lc3Rl
ZCgKKyAgICAgIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGUoNSwgdHJ1ZSksICdhJyk7CisgIEVYUEVD
VF9FUSgiKCg1LCB0cnVlKSwgJ2EnICg5NywgMHg2MSkpIiwgUHJpbnQobmVzdGVkKSk7Cit9CisK
KyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRQorCisjaWYgR1RFU1RfSEFTX1NURF9UVVBM
RV8KKy8vIFRlc3RzIHByaW50aW5nIDo6c3RkOjp0dXBsZXMuCisKKy8vIFR1cGxlcyBvZiB2YXJp
b3VzIGFyaXRpZXMuCitURVNUKFByaW50U3RkVHVwbGVUZXN0LCBWYXJpb3VzU2l6ZXMpIHsKKyAg
OjpzdGQ6OnR1cGxlPD4gdDA7CisgIEVYUEVDVF9FUSgiKCkiLCBQcmludCh0MCkpOworCisgIDo6
c3RkOjp0dXBsZTxpbnQ+IHQxKDUpOworICBFWFBFQ1RfRVEoIig1KSIsIFByaW50KHQxKSk7CisK
KyAgOjpzdGQ6OnR1cGxlPGNoYXIsIGJvb2w+IHQyKCdhJywgdHJ1ZSk7CisgIEVYUEVDVF9FUSgi
KCdhJyAoOTcsIDB4NjEpLCB0cnVlKSIsIFByaW50KHQyKSk7CisKKyAgOjpzdGQ6OnR1cGxlPGJv
b2wsIGludCwgaW50PiB0MyhmYWxzZSwgMiwgMyk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAz
KSIsIFByaW50KHQzKSk7CisKKyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQ+IHQ0
KGZhbHNlLCAyLCAzLCA0KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQpIiwgUHJpbnQo
dDQpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbD4gdDUoZmFs
c2UsIDIsIDMsIDQsIHRydWUpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSki
LCBQcmludCh0NSkpOworCisgIDo6c3RkOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29s
LCBpbnQ+IHQ2KGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2Us
IDIsIDMsIDQsIHRydWUsIDYpIiwgUHJpbnQodDYpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwg
aW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQ+IHQ3KAorICAgICAgZmFsc2UsIDIsIDMsIDQs
IHRydWUsIDYsIDcpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNyki
LCBQcmludCh0NykpOworCisgIDo6c3RkOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29s
LCBpbnQsIGludCwgYm9vbD4gdDgoCisgICAgICBmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywg
dHJ1ZSk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlKSIs
IFByaW50KHQ4KSk7CisKKyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2ws
IGludCwgaW50LCBib29sLCBpbnQ+IHQ5KAorICAgICAgZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYs
IDcsIHRydWUsIDkpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywg
dHJ1ZSwgOSkiLCBQcmludCh0OSkpOworCisgIGNvbnN0IGNoYXIqIGNvbnN0IHN0ciA9ICI4IjsK
KyAgLy8gVkMrKyAyMDEwJ3MgaW1wbGVtZW50YXRpb24gb2YgdHVwbGUgb2YgQysrMHggaXMgZGVm
aWNpZW50LCByZXF1aXJpbmcKKyAgLy8gYW4gZXhwbGljaXQgdHlwZSBjYXN0IG9mIE5VTEwgdG8g
YmUgdXNlZC4KKyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGNoYXIsIHNob3J0LCB0ZXN0aW5nOjppbnRl
cm5hbDo6SW50MzIsICAvLyBOT0xJTlQKKyAgICAgICAgICAgICAgIHRlc3Rpbmc6OmludGVybmFs
OjpJbnQ2NCwgZmxvYXQsIGRvdWJsZSwgY29uc3QgY2hhciosIHZvaWQqLAorICAgICAgICAgICAg
ICAgc3RkOjpzdHJpbmc+CisgICAgICB0MTAoZmFsc2UsICdhJywgc3RhdGljX2Nhc3Q8c2hvcnQ+
KDMpLCA0LCA1LCAxLjVGLCAtMi41LCBzdHIsICAvLyBOT0xJTlQKKyAgICAgICAgICBJbXBsaWNp
dENhc3RfPHZvaWQqPihOVUxMKSwgIjEwIik7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAnYScgKDk3
LCAweDYxKSwgMywgNCwgNSwgMS41LCAtMi41LCAiICsgUHJpbnRQb2ludGVyKHN0cikgKworICAg
ICAgICAgICAgIiBwb2ludGluZyB0byBcIjhcIiwgTlVMTCwgXCIxMFwiKSIsCisgICAgICAgICAg
ICBQcmludCh0MTApKTsKK30KKworLy8gTmVzdGVkIHR1cGxlcy4KK1RFU1QoUHJpbnRTdGRUdXBs
ZVRlc3QsIE5lc3RlZFR1cGxlKSB7CisgIDo6c3RkOjp0dXBsZTwgOjpzdGQ6OnR1cGxlPGludCwg
Ym9vbD4sIGNoYXI+IG5lc3RlZCgKKyAgICAgIDo6c3RkOjptYWtlX3R1cGxlKDUsIHRydWUpLCAn
YScpOworICBFWFBFQ1RfRVEoIigoNSwgdHJ1ZSksICdhJyAoOTcsIDB4NjEpKSIsIFByaW50KG5l
c3RlZCkpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKworI2lmIEdURVNUX0xB
TkdfQ1hYMTEKK1RFU1QoUHJpbnROdWxscHRyVCwgQmFzaWMpIHsKKyAgRVhQRUNUX0VRKCIobnVs
bHB0cikiLCBQcmludChudWxscHRyKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEK
KworLy8gVGVzdHMgcHJpbnRpbmcgdXNlci1kZWZpbmVkIHVucHJpbnRhYmxlIHR5cGVzLgorCisv
LyBVbnByaW50YWJsZSB0eXBlcyBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KK1RFU1QoUHJpbnRV
bnByaW50YWJsZVR5cGVUZXN0LCBJbkdsb2JhbE5hbWVzcGFjZSkgeworICBFWFBFQ1RfRVEoIjEt
Ynl0ZSBvYmplY3QgPDAwPiIsCisgICAgICAgICAgICBQcmludChVbnByaW50YWJsZVRlbXBsYXRl
SW5HbG9iYWw8Y2hhcj4oKSkpOworfQorCisvLyBVbnByaW50YWJsZSB0eXBlcyBpbiBhIHVzZXIg
bmFtZXNwYWNlLgorVEVTVChQcmludFVucHJpbnRhYmxlVHlwZVRlc3QsIEluVXNlck5hbWVzcGFj
ZSkgeworICBFWFBFQ1RfRVEoIjE2LWJ5dGUgb2JqZWN0IDxFRi0xMiAwMC0wMCAzNC1BQiAwMC0w
MCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMD4iLAorICAgICAgICAgICAgUHJpbnQoOjpmb286OlVu
cHJpbnRhYmxlSW5Gb28oKSkpOworfQorCisvLyBVbnByaW50YWJsZSB0eXBlcyBhcmUgdGhhdCB0
b28gYmlnIHRvIGJlIHByaW50ZWQgY29tcGxldGVseS4KKworc3RydWN0IEJpZyB7CisgIEJpZygp
IHsgbWVtc2V0KGFycmF5LCAwLCBzaXplb2YoYXJyYXkpKTsgfQorICBjaGFyIGFycmF5WzI1N107
Cit9OworCitURVNUKFByaW50VW5wcml0YWJsZVR5cGVUZXN0LCBCaWdPYmplY3QpIHsKKyAgRVhQ
RUNUX0VRKCIyNTctYnl0ZSBvYmplY3QgPDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAw
LTAwICIKKyAgICAgICAgICAgICIwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAw
MC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAiCisgICAgICAgICAgICAiMDAtMDAgMDAtMDAgMDAtMDAg
MDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgIgorICAgICAgICAgICAg
IjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIC4uLiAwMC0wMCAwMC0wMCAwMC0w
MCAiCisgICAgICAgICAgICAiMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAt
MDAgMDAtMDAgMDAtMDAgMDAtMDAgIgorICAgICAgICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAw
LTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwICIKKyAgICAgICAgICAgICIw
MC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMD4iLAorICAg
ICAgICAgICAgUHJpbnQoQmlnKCkpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgdXNlci1kZWZp
bmVkIHN0cmVhbWFibGUgdHlwZXMuCisKKy8vIFN0cmVhbWFibGUgdHlwZXMgaW4gdGhlIGdsb2Jh
bCBuYW1lc3BhY2UuCitURVNUKFByaW50U3RyZWFtYWJsZVR5cGVUZXN0LCBJbkdsb2JhbE5hbWVz
cGFjZSkgeworICBTdHJlYW1hYmxlSW5HbG9iYWwgeDsKKyAgRVhQRUNUX0VRKCJTdHJlYW1hYmxl
SW5HbG9iYWwiLCBQcmludCh4KSk7CisgIEVYUEVDVF9FUSgiU3RyZWFtYWJsZUluR2xvYmFsKiIs
IFByaW50KCZ4KSk7Cit9CisKKy8vIFByaW50YWJsZSB0ZW1wbGF0ZSB0eXBlcyBpbiBhIHVzZXIg
bmFtZXNwYWNlLgorVEVTVChQcmludFN0cmVhbWFibGVUeXBlVGVzdCwgVGVtcGxhdGVUeXBlSW5V
c2VyTmFtZXNwYWNlKSB7CisgIEVYUEVDVF9FUSgiU3RyZWFtYWJsZVRlbXBsYXRlSW5Gb286IDAi
LAorICAgICAgICAgICAgUHJpbnQoOjpmb286OlN0cmVhbWFibGVUZW1wbGF0ZUluRm9vPGludD4o
KSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyBhIHVzZXItZGVmaW5lZCByZWN1cnNpdmUgY29u
dGFpbmVyIHR5cGUgdGhhdCBoYXMgYSA8PAorLy8gb3BlcmF0b3IuCitURVNUKFByaW50U3RyZWFt
YWJsZVR5cGVUZXN0LCBQYXRoTGlrZUluVXNlck5hbWVzcGFjZSkgeworICA6OmZvbzo6UGF0aExp
a2UgeDsKKyAgRVhQRUNUX0VRKCJTdHJlYW1hYmxlLVBhdGhMaWtlIiwgUHJpbnQoeCkpOworICBj
b25zdCA6OmZvbzo6UGF0aExpa2UgY3g7CisgIEVYUEVDVF9FUSgiU3RyZWFtYWJsZS1QYXRoTGlr
ZSIsIFByaW50KGN4KSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIHVzZXItZGVmaW5lZCB0eXBl
cyB0aGF0IGhhdmUgYSBQcmludFRvKCkgZnVuY3Rpb24uCitURVNUKFByaW50UHJpbnRhYmxlVHlw
ZVRlc3QsIEluVXNlck5hbWVzcGFjZSkgeworICBFWFBFQ1RfRVEoIlByaW50YWJsZVZpYVByaW50
VG86IDAiLAorICAgICAgICAgICAgUHJpbnQoOjpmb286OlByaW50YWJsZVZpYVByaW50VG8oKSkp
OworfQorCisvLyBUZXN0cyBwcmludGluZyBhIHBvaW50ZXIgdG8gYSB1c2VyLWRlZmluZWQgdHlw
ZSB0aGF0IGhhcyBhIDw8CisvLyBvcGVyYXRvciBmb3IgaXRzIHBvaW50ZXIuCitURVNUKFByaW50
UHJpbnRhYmxlVHlwZVRlc3QsIFBvaW50ZXJJblVzZXJOYW1lc3BhY2UpIHsKKyAgOjpmb286OlBv
aW50ZXJQcmludGFibGUgeDsKKyAgRVhQRUNUX0VRKCJQb2ludGVyUHJpbnRhYmxlKiIsIFByaW50
KCZ4KSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIHVzZXItZGVmaW5lZCBjbGFzcyB0ZW1wbGF0
ZSB0aGF0IGhhdmUgYSBQcmludFRvKCkgZnVuY3Rpb24uCitURVNUKFByaW50UHJpbnRhYmxlVHlw
ZVRlc3QsIFRlbXBsYXRlSW5Vc2VyTmFtZXNwYWNlKSB7CisgIEVYUEVDVF9FUSgiUHJpbnRhYmxl
VmlhUHJpbnRUb1RlbXBsYXRlOiA1IiwKKyAgICAgICAgICAgIFByaW50KDo6Zm9vOjpQcmludGFi
bGVWaWFQcmludFRvVGVtcGxhdGU8aW50Pig1KSkpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSB1
bml2ZXJzYWwgcHJpbnRlciBwcmludHMgYm90aCB0aGUgYWRkcmVzcyBhbmQgdGhlCisvLyB2YWx1
ZSBvZiBhIHJlZmVyZW5jZS4KK1RFU1QoUHJpbnRSZWZlcmVuY2VUZXN0LCBQcmludHNBZGRyZXNz
QW5kVmFsdWUpIHsKKyAgaW50IG4gPSA1OworICBFWFBFQ1RfRVEoIkAiICsgUHJpbnRQb2ludGVy
KCZuKSArICIgNSIsIFByaW50QnlSZWYobikpOworCisgIGludCBhWzJdWzNdID0geworICAgIHsg
MCwgMSwgMiB9LAorICAgIHsgMywgNCwgNSB9CisgIH07CisgIEVYUEVDVF9FUSgiQCIgKyBQcmlu
dFBvaW50ZXIoYSkgKyAiIHsgeyAwLCAxLCAyIH0sIHsgMywgNCwgNSB9IH0iLAorICAgICAgICAg
ICAgUHJpbnRCeVJlZihhKSk7CisKKyAgY29uc3QgOjpmb286OlVucHJpbnRhYmxlSW5Gb28geDsK
KyAgRVhQRUNUX0VRKCJAIiArIFByaW50UG9pbnRlcigmeCkgKyAiIDE2LWJ5dGUgb2JqZWN0ICIK
KyAgICAgICAgICAgICI8RUYtMTIgMDAtMDAgMzQtQUIgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAg
MDAtMDA+IiwKKyAgICAgICAgICAgIFByaW50QnlSZWYoeCkpOworfQorCisvLyBUZXN0cyB0aGF0
IHRoZSB1bml2ZXJzYWwgcHJpbnRlciBwcmludHMgYSBmdW5jdGlvbiBwb2ludGVyIHBhc3NlZCBi
eQorLy8gcmVmZXJlbmNlLgorVEVTVChQcmludFJlZmVyZW5jZVRlc3QsIEhhbmRsZXNGdW5jdGlv
blBvaW50ZXIpIHsKKyAgdm9pZCAoKmZwKShpbnQgbikgPSAmTXlGdW5jdGlvbjsKKyAgY29uc3Qg
c3RkOjpzdHJpbmcgZnBfcG9pbnRlcl9zdHJpbmcgPQorICAgICAgUHJpbnRQb2ludGVyKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KCZmcCkpOworICAvLyBXZSBjYW5ub3QgZGlyZWN0bHkg
Y2FzdCAmTXlGdW5jdGlvbiB0byBjb25zdCB2b2lkKiBiZWNhdXNlIHRoZQorICAvLyBzdGFuZGFy
ZCBkaXNhbGxvd3MgY2FzdGluZyBiZXR3ZWVuIHBvaW50ZXJzIHRvIGZ1bmN0aW9ucyBhbmQKKyAg
Ly8gcG9pbnRlcnMgdG8gb2JqZWN0cywgYW5kIHNvbWUgY29tcGlsZXJzIChlLmcuIEdDQyAzLjQp
IGVuZm9yY2UKKyAgLy8gdGhpcyBsaW1pdGF0aW9uLgorICBjb25zdCBzdGQ6OnN0cmluZyBmcF9z
dHJpbmcgPSBQcmludFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oCisgICAg
ICByZWludGVycHJldF9jYXN0PGludGVybmFsOjpCaWdnZXN0SW50PihmcCkpKTsKKyAgRVhQRUNU
X0VRKCJAIiArIGZwX3BvaW50ZXJfc3RyaW5nICsgIiAiICsgZnBfc3RyaW5nLAorICAgICAgICAg
ICAgUHJpbnRCeVJlZihmcCkpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSB1bml2ZXJzYWwgcHJp
bnRlciBwcmludHMgYSBtZW1iZXIgZnVuY3Rpb24gcG9pbnRlcgorLy8gcGFzc2VkIGJ5IHJlZmVy
ZW5jZS4KK1RFU1QoUHJpbnRSZWZlcmVuY2VUZXN0LCBIYW5kbGVzTWVtYmVyRnVuY3Rpb25Qb2lu
dGVyKSB7CisgIGludCAoRm9vOjoqcCkoY2hhciBjaCkgPSAmRm9vOjpNeU1ldGhvZDsKKyAgRVhQ
RUNUX1RSVUUoSGFzUHJlZml4KAorICAgICAgUHJpbnRCeVJlZihwKSwKKyAgICAgICJAIiArIFBy
aW50UG9pbnRlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigmcCkpICsgIiAiICsKKyAg
ICAgICAgICBQcmludChzaXplb2YocCkpICsgIi1ieXRlIG9iamVjdCAiKSk7CisKKyAgY2hhciAo
Rm9vOjoqcDIpKGludCBuKSA9ICZGb286Ok15VmlydHVhbE1ldGhvZDsKKyAgRVhQRUNUX1RSVUUo
SGFzUHJlZml4KAorICAgICAgUHJpbnRCeVJlZihwMiksCisgICAgICAiQCIgKyBQcmludFBvaW50
ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oJnAyKSkgKyAiICIgKworICAgICAgICAg
IFByaW50KHNpemVvZihwMikpICsgIi1ieXRlIG9iamVjdCAiKSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgdGhlIHVuaXZlcnNhbCBwcmludGVyIHByaW50cyBhIG1lbWJlciB2YXJpYWJsZSBwb2ludGVy
CisvLyBwYXNzZWQgYnkgcmVmZXJlbmNlLgorVEVTVChQcmludFJlZmVyZW5jZVRlc3QsIEhhbmRs
ZXNNZW1iZXJWYXJpYWJsZVBvaW50ZXIpIHsKKyAgaW50IEZvbzo6KnAgPSAmRm9vOjp2YWx1ZTsg
IC8vIE5PTElOVAorICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoCisgICAgICBQcmludEJ5UmVmKHAp
LAorICAgICAgIkAiICsgUHJpbnRQb2ludGVyKCZwKSArICIgIiArIFByaW50KHNpemVvZihwKSkg
KyAiLWJ5dGUgb2JqZWN0ICIpKTsKK30KKworLy8gVGVzdHMgdGhhdCBGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2UoKSwgd2hpY2ggaXMgdXNlZCB0byBwcmludAorLy8gYW4gb3BlcmFu
ZCBpbiBhIGNvbXBhcmlzb24gYXNzZXJ0aW9uIChlLmcuIEFTU0VSVF9FUSkgd2hlbiB0aGUgYXNz
ZXJ0aW9uCisvLyBmYWlscywgZm9ybWF0cyB0aGUgb3BlcmFuZCBpbiB0aGUgZGVzaXJlZCB3YXku
CisKKy8vIHNjYWxhcgorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0
LCBXb3Jrc0ZvclNjYWxhcikgeworICBFWFBFQ1RfU1RSRVEoIjEyMyIsCisgICAgICAgICAgICAg
ICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoMTIzLCAxMjQpLmNfc3RyKCkpOwor
fQorCisvLyBub24tY2hhciBwb2ludGVyCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJl
TWVzc2FnZVRlc3QsIFdvcmtzRm9yTm9uQ2hhclBvaW50ZXIpIHsKKyAgaW50IG4gPSAwOworICBF
WFBFQ1RfRVEoUHJpbnRQb2ludGVyKCZuKSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlz
b25GYWlsdXJlTWVzc2FnZSgmbiwgJm4pLmNfc3RyKCkpOworfQorCisvLyBub24tY2hhciBhcnJh
eQorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBGb3JtYXRzTm9u
Q2hhckFycmF5QXNQb2ludGVyKSB7CisgIC8vIEluIGV4cHJlc3Npb24gJ2FycmF5ID09IHgnLCAn
YXJyYXknIGlzIGNvbXBhcmVkIGJ5IHBvaW50ZXIuCisgIC8vIFRoZXJlZm9yZSB3ZSB3YW50IHRv
IHByaW50IGFuIGFycmF5IG9wZXJhbmQgYXMgYSBwb2ludGVyLgorICBpbnQgbltdID0geyAxLCAy
LCAzIH07CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIobiksCisgICAgICAgICAgICBGb3JtYXRG
b3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UobiwgbikuY19zdHIoKSk7Cit9CisKKy8vIFRlc3Rz
IGZvcm1hdHRpbmcgYSBjaGFyIHBvaW50ZXIgd2hlbiBpdCdzIGNvbXBhcmVkIHdpdGggYW5vdGhl
ciBwb2ludGVyLgorLy8gSW4gdGhpcyBjYXNlIHdlIHdhbnQgdG8gcHJpbnQgaXQgYXMgYSByYXcg
cG9pbnRlciwgYXMgdGhlIGNvbXBhcmlzb24gaXMgYnkKKy8vIHBvaW50ZXIuCisKKy8vIGNoYXIg
cG9pbnRlciB2cyBwb2ludGVyCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2Fn
ZVRlc3QsIFdvcmtzRm9yQ2hhclBvaW50ZXJWc1BvaW50ZXIpIHsKKyAgLy8gSW4gZXhwcmVzc2lv
biAncCA9PSB4Jywgd2hlcmUgJ3AnIGFuZCAneCcgYXJlIChjb25zdCBvciBub3QpIGNoYXIKKyAg
Ly8gcG9pbnRlcnMsIHRoZSBvcGVyYW5kcyBhcmUgY29tcGFyZWQgYnkgcG9pbnRlci4gIFRoZXJl
Zm9yZSB3ZQorICAvLyB3YW50IHRvIHByaW50ICdwJyBhcyBhIHBvaW50ZXIgaW5zdGVhZCBvZiBh
IEMgc3RyaW5nICh3ZSBkb24ndAorICAvLyBldmVuIGtub3cgaWYgaXQncyBzdXBwb3NlZCB0byBw
b2ludCB0byBhIHZhbGlkIEMgc3RyaW5nKS4KKworICAvLyBjb25zdCBjaGFyKgorICBjb25zdCBj
aGFyKiBzID0gImhlbGxvIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihzKSwKKyAgICAgICAg
ICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzLCBzKS5jX3N0cigpKTsKKwor
ICAvLyBjaGFyKgorICBjaGFyIGNoID0gJ2EnOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKCZj
aCksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoJmNoLCAm
Y2gpLmNfc3RyKCkpOworfQorCisvLyB3Y2hhcl90IHBvaW50ZXIgdnMgcG9pbnRlcgorVEVTVChG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvcldDaGFyUG9pbnRl
clZzUG9pbnRlcikgeworICAvLyBJbiBleHByZXNzaW9uICdwID09IHgnLCB3aGVyZSAncCcgYW5k
ICd4JyBhcmUgKGNvbnN0IG9yIG5vdCkgY2hhcgorICAvLyBwb2ludGVycywgdGhlIG9wZXJhbmRz
IGFyZSBjb21wYXJlZCBieSBwb2ludGVyLiAgVGhlcmVmb3JlIHdlCisgIC8vIHdhbnQgdG8gcHJp
bnQgJ3AnIGFzIGEgcG9pbnRlciBpbnN0ZWFkIG9mIGEgd2lkZSBDIHN0cmluZyAod2UgZG9uJ3QK
KyAgLy8gZXZlbiBrbm93IGlmIGl0J3Mgc3VwcG9zZWQgdG8gcG9pbnQgdG8gYSB2YWxpZCB3aWRl
IEMgc3RyaW5nKS4KKworICAvLyBjb25zdCB3Y2hhcl90KgorICBjb25zdCB3Y2hhcl90KiBzID0g
TCJoZWxsbyI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocyksCisgICAgICAgICAgICBGb3Jt
YXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgcykuY19zdHIoKSk7CisKKyAgLy8gd2No
YXJfdCoKKyAgd2NoYXJfdCBjaCA9IEwnYSc7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIoJmNo
KSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSgmY2gsICZj
aCkuY19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIGZvcm1hdHRpbmcgYSBjaGFyIHBvaW50ZXIgd2hl
biBpdCdzIGNvbXBhcmVkIHRvIGEgc3RyaW5nIG9iamVjdC4KKy8vIEluIHRoaXMgY2FzZSB3ZSB3
YW50IHRvIHByaW50IHRoZSBjaGFyIHBvaW50ZXIgYXMgYSBDIHN0cmluZy4KKworI2lmIEdURVNU
X0hBU19HTE9CQUxfU1RSSU5HCisvLyBjaGFyIHBvaW50ZXIgdnMgOjpzdHJpbmcKK1RFU1QoRm9y
bWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JDaGFyUG9pbnRlclZz
U3RyaW5nKSB7CisgIGNvbnN0IGNoYXIqIHMgPSAiaGVsbG8gXCJ3b3JsZCI7CisgIEVYUEVDVF9T
VFJFUSgiXCJoZWxsbyBcXFwid29ybGRcIiIsICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxk
IGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2UocywgOjpzdHJpbmcoKSkuY19zdHIoKSk7CisKKyAgLy8gY2hhcioKKyAgY2hhciBzdHJb
XSA9ICJoaVwxIjsKKyAgY2hhciogcCA9IHN0cjsKKyAgRVhQRUNUX1NUUkVRKCJcImhpXFx4MVwi
IiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAg
ICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShwLCA6OnN0cmluZygpKS5jX3N0
cigpKTsKK30KKyNlbmRpZgorCisvLyBjaGFyIHBvaW50ZXIgdnMgc3RkOjpzdHJpbmcKK1RFU1Qo
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JDaGFyUG9pbnRl
clZzU3RkU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIqIHMgPSAiaGVsbG8gXCJ3b3JsZCI7CisgIEVY
UEVDVF9TVFJFUSgiXCJoZWxsbyBcXFwid29ybGRcIiIsICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQg
c2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFp
bHVyZU1lc3NhZ2UocywgOjpzdGQ6OnN0cmluZygpKS5jX3N0cigpKTsKKworICAvLyBjaGFyKgor
ICBjaGFyIHN0cltdID0gImhpXDEiOworICBjaGFyKiBwID0gc3RyOworICBFWFBFQ1RfU1RSRVEo
IlwiaGlcXHgxXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgor
ICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHAsIDo6c3Rk
OjpzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcK
Ky8vIHdjaGFyX3QgcG9pbnRlciB2cyA6OndzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNv
bkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhclBvaW50ZXJWc1dTdHJpbmcpIHsKKyAg
Y29uc3Qgd2NoYXJfdCogcyA9IEwiaGkgXCJ3b3JsZCI7CisgIEVYUEVDVF9TVFJFUSgiTFwiaGkg
XFxcIndvcmxkXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgor
ICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHMsIDo6d3N0
cmluZygpKS5jX3N0cigpKTsKKworICAvLyB3Y2hhcl90KgorICB3Y2hhcl90IHN0cltdID0gTCJo
aVwxIjsKKyAgd2NoYXJfdCogcCA9IHN0cjsKKyAgRVhQRUNUX1NUUkVRKCJMXCJoaVxceDFcIiIs
ICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAg
ICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocCwgOjp3c3RyaW5nKCkpLmNfc3Ry
KCkpOworfQorI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKKy8vIHdjaGFyX3Qg
cG9pbnRlciB2cyBzdGQ6OndzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVN
ZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhclBvaW50ZXJWc1N0ZFdTdHJpbmcpIHsKKyAgY29uc3Qg
d2NoYXJfdCogcyA9IEwiaGkgXCJ3b3JsZCI7CisgIEVYUEVDVF9TVFJFUSgiTFwiaGkgXFxcIndv
cmxkXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAg
ICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHMsIDo6c3RkOjp3c3Ry
aW5nKCkpLmNfc3RyKCkpOworCisgIC8vIHdjaGFyX3QqCisgIHdjaGFyX3Qgc3RyW10gPSBMImhp
XDEiOworICB3Y2hhcl90KiBwID0gc3RyOworICBFWFBFQ1RfU1RSRVEoIkxcImhpXFx4MVwiIiwg
IC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAg
IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShwLCA6OnN0ZDo6d3N0cmluZygpKS5j
X3N0cigpKTsKK30KKyNlbmRpZgorCisvLyBUZXN0cyBmb3JtYXR0aW5nIGEgY2hhciBhcnJheSB3
aGVuIGl0J3MgY29tcGFyZWQgd2l0aCBhIHBvaW50ZXIgb3IgYXJyYXkuCisvLyBJbiB0aGlzIGNh
c2Ugd2Ugd2FudCB0byBwcmludCB0aGUgYXJyYXkgYXMgYSByb3cgcG9pbnRlciwgYXMgdGhlIGNv
bXBhcmlzb24KKy8vIGlzIGJ5IHBvaW50ZXIuCisKKy8vIGNoYXIgYXJyYXkgdnMgcG9pbnRlcgor
VEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJB
cnJheVZzUG9pbnRlcikgeworICBjaGFyIHN0cltdID0gImhpIFwid29ybGRcIiI7CisgIGNoYXIq
IHAgPSBOVUxMOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHN0ciksCisgICAgICAgICAgICBG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCBwKS5jX3N0cigpKTsKK30KKwor
Ly8gY2hhciBhcnJheSB2cyBjaGFyIGFycmF5CitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWls
dXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhckFycmF5VnNDaGFyQXJyYXkpIHsKKyAgY29uc3Qg
Y2hhciBzdHJbXSA9ICJoaSBcIndvcmxkXCIiOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHN0
ciksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCBz
dHIpLmNfc3RyKCkpOworfQorCisvLyB3Y2hhcl90IGFycmF5IHZzIHBvaW50ZXIKK1RFU1QoRm9y
bWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhckFycmF5VnNQ
b2ludGVyKSB7CisgIHdjaGFyX3Qgc3RyW10gPSBMImhpIFwid29ybGRcIiI7CisgIHdjaGFyX3Qq
IHAgPSBOVUxMOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHN0ciksCisgICAgICAgICAgICBG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCBwKS5jX3N0cigpKTsKK30KKwor
Ly8gd2NoYXJfdCBhcnJheSB2cyB3Y2hhcl90IGFycmF5CitURVNUKEZvcm1hdEZvckNvbXBhcmlz
b25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJBcnJheVZzV0NoYXJBcnJheSkgewor
ICBjb25zdCB3Y2hhcl90IHN0cltdID0gTCJoaSBcIndvcmxkXCIiOworICBFWFBFQ1RfRVEoUHJp
bnRQb2ludGVyKHN0ciksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2Uoc3RyLCBzdHIpLmNfc3RyKCkpOworfQorCisvLyBUZXN0cyBmb3JtYXR0aW5nIGEgY2hh
ciBhcnJheSB3aGVuIGl0J3MgY29tcGFyZWQgd2l0aCBhIHN0cmluZyBvYmplY3QuCisvLyBJbiB0
aGlzIGNhc2Ugd2Ugd2FudCB0byBwcmludCB0aGUgYXJyYXkgYXMgYSBDIHN0cmluZy4KKworI2lm
IEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisvLyBjaGFyIGFycmF5IHZzIHN0cmluZworVEVTVChG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVZz
U3RyaW5nKSB7CisgIGNvbnN0IGNoYXIgc3RyW10gPSAiaGkgXCJ3XDBybGRcIiI7CisgIEVYUEVD
VF9TVFJFUSgiXCJoaSBcXFwid1wiIiwgIC8vIFRoZSBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVk
LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFbWJlZGRlZCBOVUwgdGVybWlu
YXRlcyB0aGUgc3RyaW5nLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1
cmVNZXNzYWdlKHN0ciwgOjpzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisjZW5kaWYKKworLy8gY2hh
ciBhcnJheSB2cyBzdGQ6OnN0cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVZzU3RkU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIg
c3RyW10gPSAiaGkgXCJ3b3JsZFwiIjsKKyAgRVhQRUNUX1NUUkVRKCJcImhpIFxcXCJ3b3JsZFxc
XCJcIiIsICAvLyBUaGUgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAg
IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzdHIsIDo6c3RkOjpzdHJpbmcoKSku
Y19zdHIoKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKKy8vIHdjaGFyX3Qg
YXJyYXkgdnMgd3N0cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VU
ZXN0LCBXb3Jrc0ZvcldDaGFyQXJyYXlWc1dTdHJpbmcpIHsKKyAgY29uc3Qgd2NoYXJfdCBzdHJb
XSA9IEwiaGkgXCJ3b3JsZFwiIjsKKyAgRVhQRUNUX1NUUkVRKCJMXCJoaSBcXFwid29ybGRcXFwi
XCIiLCAgLy8gVGhlIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCA6OndzdHJpbmcoKSkuY19zdHIo
KSk7Cit9CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORworLy8gd2NoYXJfdCBh
cnJheSB2cyBzdGQ6OndzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNz
YWdlVGVzdCwgV29ya3NGb3JXQ2hhckFycmF5VnNTdGRXU3RyaW5nKSB7CisgIGNvbnN0IHdjaGFy
X3Qgc3RyW10gPSBMImhpIFwid1wwcmxkXCIiOworICBFWFBFQ1RfU1RSRVEoCisgICAgICAiTFwi
aGkgXFxcIndcIiIsICAvLyBUaGUgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEVtYmVkZGVkIE5VTCB0ZXJtaW5hdGVzIHRoZSBzdHJpbmcuCisg
ICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCA6OnN0ZDo6d3N0cmlu
ZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisvLyBVc2VmdWwgZm9yIHRlc3RpbmcgUHJpbnRU
b1N0cmluZygpLiAgV2UgY2Fubm90IHVzZSBFWFBFQ1RfRVEoKQorLy8gdGhlcmUgYXMgaXRzIGlt
cGxlbWVudGF0aW9uIHVzZXMgUHJpbnRUb1N0cmluZygpLiAgVGhlIGNhbGxlciBtdXN0CisvLyBl
bnN1cmUgdGhhdCAndmFsdWUnIGhhcyBubyBzaWRlIGVmZmVjdC4KKyNkZWZpbmUgRVhQRUNUX1BS
SU5UX1RPX1NUUklOR18odmFsdWUsIGV4cGVjdGVkX3N0cmluZykgICAgICAgICBcCisgIEVYUEVD
VF9UUlVFKFByaW50VG9TdHJpbmcodmFsdWUpID09IChleHBlY3RlZF9zdHJpbmcpKSAgICAgICAg
XAorICAgICAgPDwgIiB3aGVyZSAiICN2YWx1ZSAiIHByaW50cyBhcyAiIDw8IChQcmludFRvU3Ry
aW5nKHZhbHVlKSkKKworVEVTVChQcmludFRvU3RyaW5nVGVzdCwgV29ya3NGb3JTY2FsYXIpIHsK
KyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18oMTIzLCAiMTIzIik7Cit9CisKK1RFU1QoUHJpbnRU
b1N0cmluZ1Rlc3QsIFdvcmtzRm9yUG9pbnRlclRvQ29uc3RDaGFyKSB7CisgIGNvbnN0IGNoYXIq
IHAgPSAiaGVsbG8iOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhwLCAiXCJoZWxsb1wiIik7
Cit9CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIFdvcmtzRm9yUG9pbnRlclRvTm9uQ29uc3RD
aGFyKSB7CisgIGNoYXIgc1tdID0gImhlbGxvIjsKKyAgY2hhciogcCA9IHM7CisgIEVYUEVDVF9Q
UklOVF9UT19TVFJJTkdfKHAsICJcImhlbGxvXCIiKTsKK30KKworVEVTVChQcmludFRvU3RyaW5n
VGVzdCwgRXNjYXBlc0ZvclBvaW50ZXJUb0NvbnN0Q2hhcikgeworICBjb25zdCBjaGFyKiBwID0g
ImhlbGxvXG4iOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhwLCAiXCJoZWxsb1xcblwiIik7
Cit9CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIEVzY2FwZXNGb3JQb2ludGVyVG9Ob25Db25z
dENoYXIpIHsKKyAgY2hhciBzW10gPSAiaGVsbG9cMSI7CisgIGNoYXIqIHAgPSBzOworICBFWFBF
Q1RfUFJJTlRfVE9fU1RSSU5HXyhwLCAiXCJoZWxsb1xceDFcIiIpOworfQorCitURVNUKFByaW50
VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvckFycmF5KSB7CisgIGludCBuWzNdID0geyAxLCAyLCAzIH07
CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKG4sICJ7IDEsIDIsIDMgfSIpOworfQorCitURVNU
KFByaW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheSkgeworICBjaGFyIHNbXSA9ICJo
ZWxsbyI7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKHMsICJcImhlbGxvXCIiKTsKK30KKwor
VEVTVChQcmludFRvU3RyaW5nVGVzdCwgV29ya3NGb3JDaGFyQXJyYXlXaXRoRW1iZWRkZWROdWwp
IHsKKyAgY29uc3QgY2hhciBzdHJfd2l0aF9udWxbXSA9ICJoZWxsb1wwIHdvcmxkIjsKKyAgRVhQ
RUNUX1BSSU5UX1RPX1NUUklOR18oc3RyX3dpdGhfbnVsLCAiXCJoZWxsb1xcMCB3b3JsZFwiIik7
CisKKyAgY2hhciBtdXRhYmxlX3N0cl93aXRoX251bFtdID0gImhlbGxvXDAgd29ybGQiOworICBF
WFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhtdXRhYmxlX3N0cl93aXRoX251bCwgIlwiaGVsbG9cXDAg
d29ybGRcIiIpOworfQorCisgIFRFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIENvbnRhaW5zTm9uTGF0
aW4pIHsKKyAgLy8gU2FuaXR5IHRlc3Qgd2l0aCB2YWxpZCBVVEYtOC4gUHJpbnRzIGJvdGggaW4g
aGV4IGFuZCBhcyB0ZXh0LgorICBzdGQ6OnN0cmluZyBub25fYXNjaWlfc3RyID0gOjpzdGQ6OnN0
cmluZygi7Jik7KCEIDQ6MzAiKTsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18obm9uX2FzY2lp
X3N0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlwiXFx4RUNcXHg5OFxceEE0XFx4RUNc
XHhBMFxceDg0IDQ6MzBcIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIEFzIFRl
eHQ6IFwi7Jik7KCEIDQ6MzBcIiIpOworICBub25fYXNjaWlfc3RyID0gOjpzdGQ6OnN0cmluZygi
RnJvbSDDpCDigJQg4bqRIik7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKG5vbl9hc2NpaV9z
dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcIkZyb20gXFx4QzNcXHhBNCBcXHhFMlxc
eDgwXFx4OTQgXFx4RTFcXHhCQVxceDkxXCIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJc
biAgICBBcyBUZXh0OiBcIkZyb20gw6Qg4oCUIOG6kVwiIik7Cit9CisKK1RFU1QoSXNWYWxpZFVU
RjhUZXN0LCBJbGxGb3JtZWRVVEY4KSB7CisgIC8vIFRoZSBmb2xsb3dpbmcgdGVzdCBzdHJpbmdz
IGFyZSBpbGwtZm9ybWVkIFVURi04IGFuZCBhcmUgcHJpbnRlZAorICAvLyBhcyBoZXggb25seSAo
b3IgQVNDSUksIGluIGNhc2Ugb2YgQVNDSUkgYnl0ZXMpIGJlY2F1c2UgSXNWYWxpZFVURjgoKSBp
cworICAvLyBleHBlY3RlZCB0byBmYWlsLCB0aHVzIG91dHB1dCBkb2VzIG5vdCBjb250YWluICJB
cyBUZXh0OiIuCisKKyAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGtUZXN0ZGF0YVtdWzJdID0g
eworICAgIC8vIDItYnl0ZSBsZWFkIGJ5dGUgZm9sbG93ZWQgYnkgYSBzaW5nbGUtYnl0ZSBjaGFy
YWN0ZXIuCisgICAgeyJceEMzXHg3NCIsICJcIlxceEMzdFwiIn0sCisgICAgLy8gVmFsaWQgMi1i
eXRlIGNoYXJhY3RlciBmb2xsb3dlZCBieSBhbiBvcnBoYW4gdHJhaWwgYnl0ZS4KKyAgICB7Ilx4
QzNceDg0XHhBNCIsICJcIlxceEMzXFx4ODRcXHhBNFwiIn0sCisgICAgLy8gTGVhZCBieXRlIHdp
dGhvdXQgdHJhaWwgYnl0ZS4KKyAgICB7ImFiY1x4QzMiLCAiXCJhYmNcXHhDM1wiIn0sCisgICAg
Ly8gMy1ieXRlIGxlYWQgYnl0ZSwgc2luZ2xlLWJ5dGUgY2hhcmFjdGVyLCBvcnBoYW4gdHJhaWwg
Ynl0ZS4KKyAgICB7InhceEUyXHg3MFx4OTQiLCAiXCJ4XFx4RTJwXFx4OTRcIiJ9LAorICAgIC8v
IFRydW5jYXRlZCAzLWJ5dGUgY2hhcmFjdGVyLgorICAgIHsiXHhFMlx4ODAiLCAiXCJcXHhFMlxc
eDgwXCIifSwKKyAgICAvLyBUcnVuY2F0ZWQgMy1ieXRlIGNoYXJhY3RlciBmb2xsb3dlZCBieSB2
YWxpZCAyLWJ5dGUgY2hhci4KKyAgICB7Ilx4RTJceDgwXHhDM1x4ODQiLCAiXCJcXHhFMlxceDgw
XFx4QzNcXHg4NFwiIn0sCisgICAgLy8gVHJ1bmNhdGVkIDMtYnl0ZSBjaGFyYWN0ZXIgZm9sbG93
ZWQgYnkgYSBzaW5nbGUtYnl0ZSBjaGFyYWN0ZXIuCisgICAgeyJceEUyXHg4MFx4N0EiLCAiXCJc
XHhFMlxceDgwelwiIn0sCisgICAgLy8gMy1ieXRlIGxlYWQgYnl0ZSBmb2xsb3dlZCBieSB2YWxp
ZCAzLWJ5dGUgY2hhcmFjdGVyLgorICAgIHsiXHhFMlx4RTJceDgwXHg5NCIsICJcIlxceEUyXFx4
RTJcXHg4MFxceDk0XCIifSwKKyAgICAvLyA0LWJ5dGUgbGVhZCBieXRlIGZvbGxvd2VkIGJ5IHZh
bGlkIDMtYnl0ZSBjaGFyYWN0ZXIuCisgICAgeyJceEYwXHhFMlx4ODBceDk0IiwgIlwiXFx4RjBc
XHhFMlxceDgwXFx4OTRcIiJ9LAorICAgIC8vIFRydW5jYXRlZCA0LWJ5dGUgY2hhcmFjdGVyLgor
ICAgIHsiXHhGMFx4RTJceDgwIiwgIlwiXFx4RjBcXHhFMlxceDgwXCIifSwKKyAgICAgLy8gSW52
YWxpZCBVVEYtOCBieXRlIHNlcXVlbmNlcyBlbWJlZGRlZCBpbiBvdGhlciBjaGFycy4KKyAgICB7
ImFiY1x4RTJceDgwXHg5NFx4QzNceDc0eHljIiwgIlwiYWJjXFx4RTJcXHg4MFxceDk0XFx4QzN0
eHljXCIifSwKKyAgICB7ImFiY1x4QzNceDg0XHhFMlx4ODBceEMzXHg4NHh5eiIsCisgICAgICJc
ImFiY1xceEMzXFx4ODRcXHhFMlxceDgwXFx4QzNcXHg4NHh5elwiIn0sCisgICAgLy8gTm9uLXNo
b3J0ZXN0IFVURi04IGJ5dGUgc2VxdWVuY2VzIGFyZSBhbHNvIGlsbC1mb3JtZWQuCisgICAgLy8g
VGhlIGNsYXNzaWNzOiB4QzAsIHhDMSBsZWFkIGJ5dGUuCisgICAgeyJceEMwXHg4MCIsICJcIlxc
eEMwXFx4ODBcIiJ9LAorICAgIHsiXHhDMVx4ODEiLCAiXCJcXHhDMVxceDgxXCIifSwKKyAgICAv
LyBOb24tc2hvcnRlc3Qgc2VxdWVuY2VzLgorICAgIHsiXHhFMFx4ODBceDgwIiwgIlwiXFx4RTBc
XHg4MFxceDgwXCIifSwKKyAgICB7Ilx4ZjBceDgwXHg4MFx4ODAiLCAiXCJcXHhGMFxceDgwXFx4
ODBcXHg4MFwiIn0sCisgICAgLy8gTGFzdCB2YWxpZCBjb2RlIHBvaW50IGJlZm9yZSBzdXJyb2dh
dGUgcmFuZ2UsIHNob3VsZCBiZSBwcmludGVkIGFzIHRleHQsCisgICAgLy8gdG9vLgorICAgIHsi
XHhFRFx4OUZceEJGIiwgIlwiXFx4RURcXHg5RlxceEJGXCJcbiAgICBBcyBUZXh0OiBcIu2fv1wi
In0sCisgICAgLy8gU3RhcnQgb2Ygc3Vycm9nYXRlIGxlYWQuIFN1cnJvZ2F0ZXMgYXJlIG5vdCBw
cmludGVkIGFzIHRleHQuCisgICAgeyJceEVEXHhBMFx4ODAiLCAiXCJcXHhFRFxceEEwXFx4ODBc
IiJ9LAorICAgIC8vIExhc3Qgbm9uLXByaXZhdGUgc3Vycm9nYXRlIGxlYWQuCisgICAgeyJceEVE
XHhBRFx4QkYiLCAiXCJcXHhFRFxceEFEXFx4QkZcIiJ9LAorICAgIC8vIEZpcnN0IHByaXZhdGUt
dXNlIHN1cnJvZ2F0ZSBsZWFkLgorICAgIHsiXHhFRFx4QUVceDgwIiwgIlwiXFx4RURcXHhBRVxc
eDgwXCIifSwKKyAgICAvLyBMYXN0IHByaXZhdGUtdXNlIHN1cnJvZ2F0ZSBsZWFkLgorICAgIHsi
XHhFRFx4QUZceEJGIiwgIlwiXFx4RURcXHhBRlxceEJGXCIifSwKKyAgICAvLyBNaWQtcG9pbnQg
b2Ygc3Vycm9nYXRlIHRyYWlsLgorICAgIHsiXHhFRFx4QjNceEJGIiwgIlwiXFx4RURcXHhCM1xc
eEJGXCIifSwKKyAgICAvLyBGaXJzdCB2YWxpZCBjb2RlIHBvaW50IGFmdGVyIHN1cnJvZ2F0ZSBy
YW5nZSwgc2hvdWxkIGJlIHByaW50ZWQgYXMgdGV4dCwKKyAgICAvLyB0b28uCisgICAgeyJceEVF
XHg4MFx4ODAiLCAiXCJcXHhFRVxceDgwXFx4ODBcIlxuICAgIEFzIFRleHQ6IFwi7oCAXCIifQor
ICB9OworCisgIGZvciAoaW50IGkgPSAwOyBpIDwgaW50KHNpemVvZihrVGVzdGRhdGEpL3NpemVv
ZihrVGVzdGRhdGFbMF0pKTsgKytpKSB7CisgICAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18oa1Rl
c3RkYXRhW2ldWzBdLCBrVGVzdGRhdGFbaV1bMV0pOworICB9Cit9CisKKyN1bmRlZiBFWFBFQ1Rf
UFJJTlRfVE9fU1RSSU5HXworCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUZXN0LCBXb3Jrc0Zv
ck5vblJlZmVyZW5jZSkgeworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICBVbml2ZXJzYWxU
ZXJzZVByaW50KDEyMywgJnNzKTsKKyAgRVhQRUNUX0VRKCIxMjMiLCBzcy5zdHIoKSk7Cit9CisK
K1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFRlc3QsIFdvcmtzRm9yUmVmZXJlbmNlKSB7CisgIGNv
bnN0IGludCYgbiA9IDEyMzsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2Fs
VGVyc2VQcmludChuLCAmc3MpOworICBFWFBFQ1RfRVEoIjEyMyIsIHNzLnN0cigpKTsKK30KKwor
VEVTVChVbml2ZXJzYWxUZXJzZVByaW50VGVzdCwgV29ya3NGb3JDU3RyaW5nKSB7CisgIGNvbnN0
IGNoYXIqIHMxID0gImFiYyI7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3MxOworICBVbml2ZXJz
YWxUZXJzZVByaW50KHMxLCAmc3MxKTsKKyAgRVhQRUNUX0VRKCJcImFiY1wiIiwgc3MxLnN0cigp
KTsKKworICBjaGFyKiBzMiA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHMxKTsKKyAgOjpzdGQ6OnN0cmlu
Z3N0cmVhbSBzczI7CisgIFVuaXZlcnNhbFRlcnNlUHJpbnQoczIsICZzczIpOworICBFWFBFQ1Rf
RVEoIlwiYWJjXCIiLCBzczIuc3RyKCkpOworCisgIGNvbnN0IGNoYXIqIHMzID0gTlVMTDsKKyAg
OjpzdGQ6OnN0cmluZ3N0cmVhbSBzczM7CisgIFVuaXZlcnNhbFRlcnNlUHJpbnQoczMsICZzczMp
OworICBFWFBFQ1RfRVEoIk5VTEwiLCBzczMuc3RyKCkpOworfQorCitURVNUKFVuaXZlcnNhbFBy
aW50VGVzdCwgV29ya3NGb3JOb25SZWZlcmVuY2UpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBz
czsKKyAgVW5pdmVyc2FsUHJpbnQoMTIzLCAmc3MpOworICBFWFBFQ1RfRVEoIjEyMyIsIHNzLnN0
cigpKTsKK30KKworVEVTVChVbml2ZXJzYWxQcmludFRlc3QsIFdvcmtzRm9yUmVmZXJlbmNlKSB7
CisgIGNvbnN0IGludCYgbiA9IDEyMzsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgVW5p
dmVyc2FsUHJpbnQobiwgJnNzKTsKKyAgRVhQRUNUX0VRKCIxMjMiLCBzcy5zdHIoKSk7Cit9CisK
K1RFU1QoVW5pdmVyc2FsUHJpbnRUZXN0LCBXb3Jrc0ZvckNTdHJpbmcpIHsKKyAgY29uc3QgY2hh
ciogczEgPSAiYWJjIjsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczE7CisgIFVuaXZlcnNhbFBy
aW50KHMxLCAmc3MxKTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihzMSkgKyAiIHBvaW50aW5n
IHRvIFwiYWJjXCIiLCBzdGQ6OnN0cmluZyhzczEuc3RyKCkpKTsKKworICBjaGFyKiBzMiA9IGNv
bnN0X2Nhc3Q8Y2hhcio+KHMxKTsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczI7CisgIFVuaXZl
cnNhbFByaW50KHMyLCAmc3MyKTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihzMikgKyAiIHBv
aW50aW5nIHRvIFwiYWJjXCIiLCBzdGQ6OnN0cmluZyhzczIuc3RyKCkpKTsKKworICBjb25zdCBj
aGFyKiBzMyA9IE5VTEw7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3MzOworICBVbml2ZXJzYWxQ
cmludChzMywgJnNzMyk7CisgIEVYUEVDVF9FUSgiTlVMTCIsIHNzMy5zdHIoKSk7Cit9CisKK1RF
U1QoVW5pdmVyc2FsUHJpbnRUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheSkgeworICBjb25zdCBjaGFy
IHN0cltdID0gIlwiTGluZVwwIDFcIlxuTGluZSAyIjsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBz
czE7CisgIFVuaXZlcnNhbFByaW50KHN0ciwgJnNzMSk7CisgIEVYUEVDVF9FUSgiXCJcXFwiTGlu
ZVxcMCAxXFxcIlxcbkxpbmUgMlwiIiwgc3MxLnN0cigpKTsKKworICBjb25zdCBjaGFyIG11dGFi
bGVfc3RyW10gPSAiXCJMaW5lXDAgMVwiXG5MaW5lIDIiOworICA6OnN0ZDo6c3RyaW5nc3RyZWFt
IHNzMjsKKyAgVW5pdmVyc2FsUHJpbnQobXV0YWJsZV9zdHIsICZzczIpOworICBFWFBFQ1RfRVEo
IlwiXFxcIkxpbmVcXDAgMVxcXCJcXG5MaW5lIDJcIiIsIHNzMi5zdHIoKSk7Cit9CisKKyNpZiBH
VEVTVF9IQVNfVFIxX1RVUExFCisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRz
VG9TdHJpbmdzVGVzdFdpdGhUcjEsIFByaW50c0VtcHR5VHVwbGUpIHsKKyAgU3RyaW5ncyByZXN1
bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoCisgICAgICA6OnN0
ZDo6dHIxOjptYWtlX3R1cGxlKCkpOworICBFWFBFQ1RfRVEoMHUsIHJlc3VsdC5zaXplKCkpOwor
fQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRo
VHIxLCBQcmludHNPbmVUdXBsZSkgeworICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNl
UHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKKyAgICAgIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGUo
MSkpOworICBBU1NFUlRfRVEoMXUsIHJlc3VsdC5zaXplKCkpOworICBFWFBFQ1RfRVEoIjEiLCBy
ZXN1bHRbMF0pOworfQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3Ry
aW5nc1Rlc3RXaXRoVHIxLCBQcmludHNUd29UdXBsZSkgeworICBTdHJpbmdzIHJlc3VsdCA9IFVu
aXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKKyAgICAgIDo6c3RkOjp0cjE6
Om1ha2VfdHVwbGUoMSwgJ2EnKSk7CisgIEFTU0VSVF9FUSgydSwgcmVzdWx0LnNpemUoKSk7Cisg
IEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7CisgIEVYUEVDVF9FUSgiJ2EnICg5NywgMHg2MSki
LCByZXN1bHRbMV0pOworfQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1Rv
U3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmludHNUZXJzZWx5KSB7CisgIGNvbnN0IGludCBuID0gMTsK
KyAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmlu
Z3MoCisgICAgICA6OnN0ZDo6dHIxOjp0dXBsZTxjb25zdCBpbnQmLCBjb25zdCBjaGFyKj4obiwg
ImEiKSk7CisgIEFTU0VSVF9FUSgydSwgcmVzdWx0LnNpemUoKSk7CisgIEVYUEVDVF9FUSgiMSIs
IHJlc3VsdFswXSk7CisgIEVYUEVDVF9FUSgiXCJhXCIiLCByZXN1bHRbMV0pOworfQorCisjZW5k
aWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUKKworI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCisK
K1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhTdGQs
IFByaW50c0VtcHR5VHVwbGUpIHsKKyAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVBy
aW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoOjpzdGQ6Om1ha2VfdHVwbGUoKSk7CisgIEVYUEVDVF9F
USgwdSwgcmVzdWx0LnNpemUoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxl
RmllbGRzVG9TdHJpbmdzVGVzdFdpdGhTdGQsIFByaW50c09uZVR1cGxlKSB7CisgIFN0cmluZ3Mg
cmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAorICAgICAg
OjpzdGQ6Om1ha2VfdHVwbGUoMSkpOworICBBU1NFUlRfRVEoMXUsIHJlc3VsdC5zaXplKCkpOwor
ICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRbMF0pOworfQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJp
bnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoU3RkLCBQcmludHNUd29UdXBsZSkgeworICBT
dHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygK
KyAgICAgIDo6c3RkOjptYWtlX3R1cGxlKDEsICdhJykpOworICBBU1NFUlRfRVEoMnUsIHJlc3Vs
dC5zaXplKCkpOworICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRbMF0pOworICBFWFBFQ1RfRVEoIidh
JyAoOTcsIDB4NjEpIiwgcmVzdWx0WzFdKTsKK30KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50
VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0aFN0ZCwgUHJpbnRzVGVyc2VseSkgeworICBjb25z
dCBpbnQgbiA9IDE7CisgIFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxl
RmllbGRzVG9TdHJpbmdzKAorICAgICAgOjpzdGQ6OnR1cGxlPGNvbnN0IGludCYsIGNvbnN0IGNo
YXIqPihuLCAiYSIpKTsKKyAgQVNTRVJUX0VRKDJ1LCByZXN1bHQuc2l6ZSgpKTsKKyAgRVhQRUNU
X0VRKCIxIiwgcmVzdWx0WzBdKTsKKyAgRVhQRUNUX0VRKCJcImFcIiIsIHJlc3VsdFsxXSk7Cit9
CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9UVVBMRV8KKworI2lmIEdURVNUX0hBU19BQlNM
CisKK1RFU1QoUHJpbnRPcHRpb25hbFRlc3QsIEJhc2ljKSB7CisgIGFic2w6Om9wdGlvbmFsPGlu
dD4gdmFsdWU7CisgIEVYUEVDVF9FUSgiKG51bGxvcHQpIiwgUHJpbnRUb1N0cmluZyh2YWx1ZSkp
OworICB2YWx1ZSA9IHs3fTsKKyAgRVhQRUNUX0VRKCIoNykiLCBQcmludFRvU3RyaW5nKHZhbHVl
KSk7CisgIEVYUEVDVF9FUSgiKDEuMSkiLCBQcmludFRvU3RyaW5nKGFic2w6Om9wdGlvbmFsPGRv
dWJsZT57MS4xfSkpOworICBFWFBFQ1RfRVEoIihcIkFcIikiLCBQcmludFRvU3RyaW5nKGFic2w6
Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPnsiQSJ9KSk7Cit9CisKK3N0cnVjdCBOb25QcmludGFibGUg
eworICB1bnNpZ25lZCBjaGFyIGNvbnRlbnRzID0gMTc7Cit9OworCitURVNUKFByaW50T25lb2ZU
ZXN0LCBCYXNpYykgeworICB1c2luZyBUeXBlID0gYWJzbDo6dmFyaWFudDxpbnQsIFN0cmVhbWFi
bGVJbkdsb2JhbCwgTm9uUHJpbnRhYmxlPjsKKyAgRVhQRUNUX0VRKCIoJ2ludCcgd2l0aCB2YWx1
ZSA3KSIsIFByaW50VG9TdHJpbmcoVHlwZSg3KSkpOworICBFWFBFQ1RfRVEoIignU3RyZWFtYWJs
ZUluR2xvYmFsJyB3aXRoIHZhbHVlIFN0cmVhbWFibGVJbkdsb2JhbCkiLAorICAgICAgICAgICAg
UHJpbnRUb1N0cmluZyhUeXBlKFN0cmVhbWFibGVJbkdsb2JhbHt9KSkpOworICBFWFBFQ1RfRVEo
CisgICAgICAiKCd0ZXN0aW5nOjpndGVzdF9wcmludGVyc190ZXN0OjpOb25QcmludGFibGUnIHdp
dGggdmFsdWUgMS1ieXRlIG9iamVjdCAiCisgICAgICAiPDExPikiLAorICAgICAgUHJpbnRUb1N0
cmluZyhUeXBlKE5vblByaW50YWJsZXt9KSkpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfQUJT
TAorCit9ICAvLyBuYW1lc3BhY2UgZ3Rlc3RfcHJpbnRlcnNfdGVzdAorfSAgLy8gbmFtZXNwYWNl
IHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xl
dGVzdC1zaHVmZmxlLXRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3Qtc2h1ZmZsZS10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3M2NjNWVjYTNmY2U0NThhYTNhYzNl
Mzk4NTBmNDdiYjM4MmU1NWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0LnB5CkBAIC0wLDAgKzEsMzIzIEBACisj
IS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDkgR29vZ2xlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlZlcmlmaWVzIHRoYXQg
dGVzdCBzaHVmZmxpbmcgd29ya3MuIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IGd0ZXN0X3Rlc3Rf
dXRpbHMKKworIyBDb21tYW5kIHRvIHJ1biB0aGUgZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfIHBy
b2dyYW0uCitDT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgo
J2dvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0XycpCisKKyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxl
cyBmb3IgdGVzdCBzaGFyZGluZy4KK1RPVEFMX1NIQVJEU19FTlZfVkFSID0gJ0dURVNUX1RPVEFM
X1NIQVJEUycKK1NIQVJEX0lOREVYX0VOVl9WQVIgPSAnR1RFU1RfU0hBUkRfSU5ERVgnCisKK1RF
U1RfRklMVEVSID0gJ0EqLkE6QSouQjpDKicKKworQUxMX1RFU1RTID0gW10KK0FDVElWRV9URVNU
UyA9IFtdCitGSUxURVJFRF9URVNUUyA9IFtdCitTSEFSREVEX1RFU1RTID0gW10KKworU0hVRkZM
RURfQUxMX1RFU1RTID0gW10KK1NIVUZGTEVEX0FDVElWRV9URVNUUyA9IFtdCitTSFVGRkxFRF9G
SUxURVJFRF9URVNUUyA9IFtdCitTSFVGRkxFRF9TSEFSREVEX1RFU1RTID0gW10KKworCitkZWYg
QWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKCk6CisgIHJldHVybiAnLS1ndGVzdF9hbHNvX3J1bl9k
aXNhYmxlZF90ZXN0cycKKworCitkZWYgRmlsdGVyRmxhZyh0ZXN0X2ZpbHRlcik6CisgIHJldHVy
biAnLS1ndGVzdF9maWx0ZXI9JXMnICUgKHRlc3RfZmlsdGVyLCkKKworCitkZWYgUmVwZWF0Rmxh
ZyhuKToKKyAgcmV0dXJuICctLWd0ZXN0X3JlcGVhdD0lcycgJSAobiwpCisKKworZGVmIFNodWZm
bGVGbGFnKCk6CisgIHJldHVybiAnLS1ndGVzdF9zaHVmZmxlJworCisKK2RlZiBSYW5kb21TZWVk
RmxhZyhuKToKKyAgcmV0dXJuICctLWd0ZXN0X3JhbmRvbV9zZWVkPSVzJyAlIChuLCkKKworCitk
ZWYgUnVuQW5kUmV0dXJuT3V0cHV0KGV4dHJhX2VudiwgYXJncyk6CisgICIiIlJ1bnMgdGhlIHRl
c3QgcHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgb3V0cHV0LiIiIgorCisgIGVudmlyb25fY29weSA9
IG9zLmVudmlyb24uY29weSgpCisgIGVudmlyb25fY29weS51cGRhdGUoZXh0cmFfZW52KQorCisg
IHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0NPTU1BTkRdICsgYXJncywgZW52
PWVudmlyb25fY29weSkub3V0cHV0CisKKworZGVmIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyhl
eHRyYV9lbnYsIGFyZ3MpOgorICAiIiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0gYW5kIHJldHVybnMg
YSBsaXN0IG9mIHRlc3QgbGlzdHMuCisKKyAgQXJnczoKKyAgICBleHRyYV9lbnY6IGEgbWFwIGZy
b20gZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHRoZWlyIHZhbHVlcworICAgIGFyZ3M6IGNvbW1h
bmQgbGluZSBmbGFncyB0byBwYXNzIHRvIGdvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0XworCisgIFJl
dHVybnM6CisgICAgQSBsaXN0IHdoZXJlIHRoZSBpLXRoIGVsZW1lbnQgaXMgdGhlIGxpc3Qgb2Yg
dGVzdHMgcnVuIGluIHRoZSBpLXRoCisgICAgdGVzdCBpdGVyYXRpb24uCisgICIiIgorCisgIHRl
c3RfaXRlcmF0aW9ucyA9IFtdCisgIGZvciBsaW5lIGluIFJ1bkFuZFJldHVybk91dHB1dChleHRy
YV9lbnYsIGFyZ3MpLnNwbGl0KCdcbicpOgorICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnLS0tLScp
OgorICAgICAgdGVzdHMgPSBbXQorICAgICAgdGVzdF9pdGVyYXRpb25zLmFwcGVuZCh0ZXN0cykK
KyAgICBlbGlmIGxpbmUuc3RyaXAoKToKKyAgICAgIHRlc3RzLmFwcGVuZChsaW5lLnN0cmlwKCkp
ICAjICdUZXN0Q2FzZU5hbWUuVGVzdE5hbWUnCisKKyAgcmV0dXJuIHRlc3RfaXRlcmF0aW9ucwor
CisKK2RlZiBHZXRUZXN0Q2FzZXModGVzdHMpOgorICAiIiJSZXR1cm5zIGEgbGlzdCBvZiB0ZXN0
IGNhc2VzIGluIHRoZSBnaXZlbiBmdWxsIHRlc3QgbmFtZXMuCisKKyAgQXJnczoKKyAgICB0ZXN0
czogYSBsaXN0IG9mIGZ1bGwgdGVzdCBuYW1lcworCisgIFJldHVybnM6CisgICAgQSBsaXN0IG9m
IHRlc3QgY2FzZXMgZnJvbSAndGVzdHMnLCBpbiB0aGVpciBvcmlnaW5hbCBvcmRlci4KKyAgICBD
b25zZWN1dGl2ZSBkdXBsaWNhdGVzIGFyZSByZW1vdmVkLgorICAiIiIKKworICB0ZXN0X2Nhc2Vz
ID0gW10KKyAgZm9yIHRlc3QgaW4gdGVzdHM6CisgICAgdGVzdF9jYXNlID0gdGVzdC5zcGxpdCgn
LicpWzBdCisgICAgaWYgbm90IHRlc3RfY2FzZSBpbiB0ZXN0X2Nhc2VzOgorICAgICAgdGVzdF9j
YXNlcy5hcHBlbmQodGVzdF9jYXNlKQorCisgIHJldHVybiB0ZXN0X2Nhc2VzCisKKworZGVmIENh
bGN1bGF0ZVRlc3RMaXN0cygpOgorICAiIiJDYWxjdWxhdGVzIHRoZSBsaXN0IG9mIHRlc3RzIHJ1
biB1bmRlciBkaWZmZXJlbnQgZmxhZ3MuIiIiCisKKyAgaWYgbm90IEFMTF9URVNUUzoKKyAgICBB
TExfVEVTVFMuZXh0ZW5kKAorICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe30sIFtB
bHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcoKV0pWzBdKQorCisgIGlmIG5vdCBBQ1RJVkVfVEVTVFM6
CisgICAgQUNUSVZFX1RFU1RTLmV4dGVuZChHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe30sIFtd
KVswXSkKKworICBpZiBub3QgRklMVEVSRURfVEVTVFM6CisgICAgRklMVEVSRURfVEVTVFMuZXh0
ZW5kKAorICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe30sIFtGaWx0ZXJGbGFnKFRF
U1RfRklMVEVSKV0pWzBdKQorCisgIGlmIG5vdCBTSEFSREVEX1RFU1RTOgorICAgIFNIQVJERURf
VEVTVFMuZXh0ZW5kKAorICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe1RPVEFMX1NI
QVJEU19FTlZfVkFSOiAnMycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hB
UkRfSU5ERVhfRU5WX1ZBUjogJzEnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtdKVswXSkKKworICBpZiBub3QgU0hVRkZMRURfQUxMX1RFU1RTOgorICAgIFNIVUZGTEVEX0FM
TF9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICB7fSwgW0Fs
c29SdW5EaXNhYmxlZFRlc3RzRmxhZygpLCBTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygx
KV0pWzBdKQorCisgIGlmIG5vdCBTSFVGRkxFRF9BQ1RJVkVfVEVTVFM6CisgICAgU0hVRkZMRURf
QUNUSVZFX1RFU1RTLmV4dGVuZChHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisgICAgICAgIHt9
LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSldKVswXSkKKworICBpZiBub3QgU0hV
RkZMRURfRklMVEVSRURfVEVTVFM6CisgICAgU0hVRkZMRURfRklMVEVSRURfVEVTVFMuZXh0ZW5k
KEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKKyAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBS
YW5kb21TZWVkRmxhZygxKSwgRmlsdGVyRmxhZyhURVNUX0ZJTFRFUildKVswXSkKKworICBpZiBu
b3QgU0hVRkZMRURfU0hBUkRFRF9URVNUUzoKKyAgICBTSFVGRkxFRF9TSEFSREVEX1RFU1RTLmV4
dGVuZCgKKyAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9TSEFSRFNfRU5W
X1ZBUjogJzMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQVJEX0lOREVY
X0VOVl9WQVI6ICcxJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU2h1ZmZs
ZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSldKVswXSkKKworCitjbGFzcyBHVGVzdFNodWZmbGVV
bml0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgIiIiVGVzdHMgdGVzdCBzaHVm
ZmxpbmcuIiIiCisKKyAgZGVmIHNldFVwKHNlbGYpOgorICAgIENhbGN1bGF0ZVRlc3RMaXN0cygp
CisKKyAgZGVmIHRlc3RTaHVmZmxlUHJlc2VydmVzTnVtYmVyT2ZUZXN0cyhzZWxmKToKKyAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihBTExfVEVTVFMpLCBsZW4oU0hVRkZMRURfQUxMX1RFU1RTKSkK
KyAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihBQ1RJVkVfVEVTVFMpLCBsZW4oU0hVRkZMRURfQUNU
SVZFX1RFU1RTKSkKKyAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihGSUxURVJFRF9URVNUUyksIGxl
bihTSFVGRkxFRF9GSUxURVJFRF9URVNUUykpCisgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oU0hB
UkRFRF9URVNUUyksIGxlbihTSFVGRkxFRF9TSEFSREVEX1RFU1RTKSkKKworICBkZWYgdGVzdFNo
dWZmbGVDaGFuZ2VzVGVzdE9yZGVyKHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0XyhTSFVGRkxFRF9B
TExfVEVTVFMgIT0gQUxMX1RFU1RTLCBTSFVGRkxFRF9BTExfVEVTVFMpCisgICAgc2VsZi5hc3Nl
cnRfKFNIVUZGTEVEX0FDVElWRV9URVNUUyAhPSBBQ1RJVkVfVEVTVFMsIFNIVUZGTEVEX0FDVElW
RV9URVNUUykKKyAgICBzZWxmLmFzc2VydF8oU0hVRkZMRURfRklMVEVSRURfVEVTVFMgIT0gRklM
VEVSRURfVEVTVFMsCisgICAgICAgICAgICAgICAgIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTKQor
ICAgIHNlbGYuYXNzZXJ0XyhTSFVGRkxFRF9TSEFSREVEX1RFU1RTICE9IFNIQVJERURfVEVTVFMs
CisgICAgICAgICAgICAgICAgIFNIVUZGTEVEX1NIQVJERURfVEVTVFMpCisKKyAgZGVmIHRlc3RT
aHVmZmxlQ2hhbmdlc1Rlc3RDYXNlT3JkZXIoc2VsZik6CisgICAgc2VsZi5hc3NlcnRfKEdldFRl
c3RDYXNlcyhTSFVGRkxFRF9BTExfVEVTVFMpICE9IEdldFRlc3RDYXNlcyhBTExfVEVTVFMpLAor
ICAgICAgICAgICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfQUxMX1RFU1RTKSkKKyAgICBz
ZWxmLmFzc2VydF8oCisgICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9BQ1RJVkVfVEVTVFMp
ICE9IEdldFRlc3RDYXNlcyhBQ1RJVkVfVEVTVFMpLAorICAgICAgICBHZXRUZXN0Q2FzZXMoU0hV
RkZMRURfQUNUSVZFX1RFU1RTKSkKKyAgICBzZWxmLmFzc2VydF8oCisgICAgICAgIEdldFRlc3RD
YXNlcyhTSFVGRkxFRF9GSUxURVJFRF9URVNUUykgIT0gR2V0VGVzdENhc2VzKEZJTFRFUkVEX1RF
U1RTKSwKKyAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTKSkKKyAg
ICBzZWxmLmFzc2VydF8oCisgICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9TSEFSREVEX1RF
U1RTKSAhPSBHZXRUZXN0Q2FzZXMoU0hBUkRFRF9URVNUUyksCisgICAgICAgIEdldFRlc3RDYXNl
cyhTSFVGRkxFRF9TSEFSREVEX1RFU1RTKSkKKworICBkZWYgdGVzdFNodWZmbGVEb2VzTm90UmVw
ZWF0VGVzdChzZWxmKToKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9BTExfVEVTVFM6CisgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDEsIFNIVUZGTEVEX0FMTF9URVNUUy5jb3VudCh0ZXN0KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UnICUgKHRlc3Qs
KSkKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9BQ1RJVkVfVEVTVFM6CisgICAgICBzZWxmLmFz
c2VydEVxdWFsKDEsIFNIVUZGTEVEX0FDVElWRV9URVNUUy5jb3VudCh0ZXN0KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UnICUgKHRlc3QsKSkKKyAg
ICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9GSUxURVJFRF9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoMSwgU0hVRkZMRURfRklMVEVSRURfVEVTVFMuY291bnQodGVzdCksCisgICAgICAgICAg
ICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0ZXN0LCkpCisgICAg
Zm9yIHRlc3QgaW4gU0hVRkZMRURfU0hBUkRFRF9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMSwgU0hVRkZMRURfU0hBUkRFRF9URVNUUy5jb3VudCh0ZXN0KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgJyVzIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UnICUgKHRlc3QsKSkKKworICBkZWYg
dGVzdFNodWZmbGVEb2VzTm90Q3JlYXRlTmV3VGVzdChzZWxmKToKKyAgICBmb3IgdGVzdCBpbiBT
SFVGRkxFRF9BTExfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBBTExfVEVTVFMs
ICclcyBpcyBhbiBpbnZhbGlkIHRlc3QnICUgKHRlc3QsKSkKKyAgICBmb3IgdGVzdCBpbiBTSFVG
RkxFRF9BQ1RJVkVfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBBQ1RJVkVfVEVT
VFMsICclcyBpcyBhbiBpbnZhbGlkIHRlc3QnICUgKHRlc3QsKSkKKyAgICBmb3IgdGVzdCBpbiBT
SFVGRkxFRF9GSUxURVJFRF9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIEZJTFRF
UkVEX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCisgICAgZm9yIHRl
c3QgaW4gU0hVRkZMRURfU0hBUkRFRF9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGlu
IFNIQVJERURfVEVTVFMsICclcyBpcyBhbiBpbnZhbGlkIHRlc3QnICUgKHRlc3QsKSkKKworICBk
ZWYgdGVzdFNodWZmbGVJbmNsdWRlc0FsbFRlc3RzKHNlbGYpOgorICAgIGZvciB0ZXN0IGluIEFM
TF9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIVUZGTEVEX0FMTF9URVNUUywg
JyVzIGlzIG1pc3NpbmcnICUgKHRlc3QsKSkKKyAgICBmb3IgdGVzdCBpbiBBQ1RJVkVfVEVTVFM6
CisgICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMsICclcyBp
cyBtaXNzaW5nJyAlICh0ZXN0LCkpCisgICAgZm9yIHRlc3QgaW4gRklMVEVSRURfVEVTVFM6Cisg
ICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVGRkxFRF9GSUxURVJFRF9URVNUUywgJyVzIGlz
IG1pc3NpbmcnICUgKHRlc3QsKSkKKyAgICBmb3IgdGVzdCBpbiBTSEFSREVEX1RFU1RTOgorICAg
ICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfU0hBUkRFRF9URVNUUywgJyVzIGlzIG1p
c3NpbmcnICUgKHRlc3QsKSkKKworICBkZWYgdGVzdFNodWZmbGVMZWF2ZXNEZWF0aFRlc3RzQXRG
cm9udChzZWxmKToKKyAgICBub25fZGVhdGhfdGVzdF9mb3VuZCA9IEZhbHNlCisgICAgZm9yIHRl
c3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTOgorICAgICAgaWYgJ0RlYXRoVGVzdC4nIGluIHRl
c3Q6CisgICAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qgbm9uX2RlYXRoX3Rlc3RfZm91bmQsCisgICAg
ICAgICAgICAgICAgICAgICAnJXMgYXBwZWFycyBhZnRlciBhIG5vbi1kZWF0aCB0ZXN0JyAlICh0
ZXN0LCkpCisgICAgICBlbHNlOgorICAgICAgICBub25fZGVhdGhfdGVzdF9mb3VuZCA9IFRydWUK
KworICBkZWYgX1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50ZXJsZWF2ZShzZWxmLCB0ZXN0cyk6Cisg
ICAgdGVzdF9jYXNlcyA9IFtdCisgICAgZm9yIHRlc3QgaW4gdGVzdHM6CisgICAgICBbdGVzdF9j
YXNlLCBfXSA9IHRlc3Quc3BsaXQoJy4nKQorICAgICAgaWYgdGVzdF9jYXNlcyBhbmQgdGVzdF9j
YXNlc1stMV0gIT0gdGVzdF9jYXNlOgorICAgICAgICB0ZXN0X2Nhc2VzLmFwcGVuZCh0ZXN0X2Nh
c2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgdGVzdF9jYXNlcy5jb3VudCh0ZXN0X2Nh
c2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdUZXN0IGNhc2UgJXMgaXMgbm90IGdyb3Vw
ZWQgdG9nZXRoZXIgaW4gJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAodGVzdF9jYXNl
LCB0ZXN0cykpCisKKyAgZGVmIHRlc3RTaHVmZmxlRG9lc05vdEludGVybGVhdmVUZXN0Q2FzZXMo
c2VsZik6CisgICAgc2VsZi5fVmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRlcmxlYXZlKFNIVUZGTEVE
X0FMTF9URVNUUykKKyAgICBzZWxmLl9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUoU0hV
RkZMRURfQUNUSVZFX1RFU1RTKQorICAgIHNlbGYuX1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50ZXJs
ZWF2ZShTSFVGRkxFRF9GSUxURVJFRF9URVNUUykKKyAgICBzZWxmLl9WZXJpZnlUZXN0Q2FzZXNE
b05vdEludGVybGVhdmUoU0hVRkZMRURfU0hBUkRFRF9URVNUUykKKworICBkZWYgdGVzdFNodWZm
bGVSZXN0b3Jlc09yZGVyQWZ0ZXJFYWNoSXRlcmF0aW9uKHNlbGYpOgorICAgICMgR2V0IHRoZSB0
ZXN0IGxpc3RzIGluIGFsbCAzIGl0ZXJhdGlvbnMsIHVzaW5nIHJhbmRvbSBzZWVkIDEsIDIsCisg
ICAgIyBhbmQgMyByZXNwZWN0aXZlbHkuICBHb29nbGUgVGVzdCBwaWNrcyBhIGRpZmZlcmVudCBz
ZWVkIGluIGVhY2gKKyAgICAjIGl0ZXJhdGlvbiwgYW5kIHRoaXMgdGVzdCBkZXBlbmRzIG9uIHRo
ZSBjdXJyZW50IGltcGxlbWVudGF0aW9uCisgICAgIyBwaWNraW5nIHN1Y2Nlc3NpdmUgbnVtYmVy
cy4gIFRoaXMgZGVwZW5kZW5jeSBpcyBub3QgaWRlYWwsIGJ1dAorICAgICMgbWFrZXMgdGhlIHRl
c3QgbXVjaCBlYXNpZXIgdG8gd3JpdGUuCisgICAgW3Rlc3RzX2luX2l0ZXJhdGlvbjEsIHRlc3Rz
X2luX2l0ZXJhdGlvbjIsIHRlc3RzX2luX2l0ZXJhdGlvbjNdID0gKAorICAgICAgICBHZXRUZXN0
c0ZvckFsbEl0ZXJhdGlvbnMoCisgICAgICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRv
bVNlZWRGbGFnKDEpLCBSZXBlYXRGbGFnKDMpXSkpCisKKyAgICAjIE1ha2Ugc3VyZSBydW5uaW5n
IHRoZSB0ZXN0cyB3aXRoIHJhbmRvbSBzZWVkIDEgZ2V0cyB0aGUgc2FtZQorICAgICMgb3JkZXIg
YXMgaW4gaXRlcmF0aW9uIDEgYWJvdmUuCisgICAgW3Rlc3RzX3dpdGhfc2VlZDFdID0gR2V0VGVz
dHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNl
ZWRGbGFnKDEpXSkKKyAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzX2luX2l0ZXJhdGlvbjEsIHRl
c3RzX3dpdGhfc2VlZDEpCisKKyAgICAjIE1ha2Ugc3VyZSBydW5uaW5nIHRoZSB0ZXN0cyB3aXRo
IHJhbmRvbSBzZWVkIDIgZ2V0cyB0aGUgc2FtZQorICAgICMgb3JkZXIgYXMgaW4gaXRlcmF0aW9u
IDIgYWJvdmUuICBTdWNjZXNzIG1lYW5zIHRoYXQgR29vZ2xlIFRlc3QKKyAgICAjIGNvcnJlY3Rs
eSByZXN0b3JlcyB0aGUgdGVzdCBvcmRlciBiZWZvcmUgcmUtc2h1ZmZsaW5nIGF0IHRoZQorICAg
ICMgYmVnaW5uaW5nIG9mIGl0ZXJhdGlvbiAyLgorICAgIFt0ZXN0c193aXRoX3NlZWQyXSA9IEdl
dFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKKyAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5k
b21TZWVkRmxhZygyKV0pCisgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0c19pbl9pdGVyYXRpb24y
LCB0ZXN0c193aXRoX3NlZWQyKQorCisgICAgIyBNYWtlIHN1cmUgcnVubmluZyB0aGUgdGVzdHMg
d2l0aCByYW5kb20gc2VlZCAzIGdldHMgdGhlIHNhbWUKKyAgICAjIG9yZGVyIGFzIGluIGl0ZXJh
dGlvbiAzIGFib3ZlLiAgU3VjY2VzcyBtZWFucyB0aGF0IEdvb2dsZSBUZXN0CisgICAgIyBjb3Jy
ZWN0bHkgcmVzdG9yZXMgdGhlIHRlc3Qgb3JkZXIgYmVmb3JlIHJlLXNodWZmbGluZyBhdCB0aGUK
KyAgICAjIGJlZ2lubmluZyBvZiBpdGVyYXRpb24gMy4KKyAgICBbdGVzdHNfd2l0aF9zZWVkM10g
PSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisgICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwg
UmFuZG9tU2VlZEZsYWcoMyldKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHNfaW5faXRlcmF0
aW9uMywgdGVzdHNfd2l0aF9zZWVkMykKKworICBkZWYgdGVzdFNodWZmbGVHZW5lcmF0ZXNOZXdP
cmRlckluRWFjaEl0ZXJhdGlvbihzZWxmKToKKyAgICBbdGVzdHNfaW5faXRlcmF0aW9uMSwgdGVz
dHNfaW5faXRlcmF0aW9uMiwgdGVzdHNfaW5faXRlcmF0aW9uM10gPSAoCisgICAgICAgIEdldFRl
c3RzRm9yQWxsSXRlcmF0aW9ucygKKyAgICAgICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFu
ZG9tU2VlZEZsYWcoMSksIFJlcGVhdEZsYWcoMyldKSkKKworICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0
c19pbl9pdGVyYXRpb24xICE9IHRlc3RzX2luX2l0ZXJhdGlvbjIsCisgICAgICAgICAgICAgICAg
IHRlc3RzX2luX2l0ZXJhdGlvbjEpCisgICAgc2VsZi5hc3NlcnRfKHRlc3RzX2luX2l0ZXJhdGlv
bjEgIT0gdGVzdHNfaW5faXRlcmF0aW9uMywKKyAgICAgICAgICAgICAgICAgdGVzdHNfaW5faXRl
cmF0aW9uMSkKKyAgICBzZWxmLmFzc2VydF8odGVzdHNfaW5faXRlcmF0aW9uMiAhPSB0ZXN0c19p
bl9pdGVyYXRpb24zLAorICAgICAgICAgICAgICAgICB0ZXN0c19pbl9pdGVyYXRpb24yKQorCisg
IGRlZiB0ZXN0U2h1ZmZsZVNoYXJkZWRUZXN0c1ByZXNlcnZlc1BhcnRpdGlvbihzZWxmKToKKyAg
ICAjIElmIHdlIHJ1biBNIHRlc3RzIG9uIE4gc2hhcmRzLCB0aGUgc2FtZSBNIHRlc3RzIHNob3Vs
ZCBiZSBydW4gaW4KKyAgICAjIHRvdGFsLCByZWdhcmRsZXNzIG9mIHRoZSByYW5kb20gc2VlZHMg
dXNlZCBieSB0aGUgc2hhcmRzLgorICAgIFt0ZXN0czFdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRp
b25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMCd9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxh
ZygxKV0pCisgICAgW3Rlc3RzMl0gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe1RPVEFMX1NI
QVJEU19FTlZfVkFSOiAnMycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcxJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDIwKV0pCisgICAg
W3Rlc3RzM10gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe1RPVEFMX1NIQVJEU19FTlZfVkFS
OiAnMycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQVJEX0lO
REVYX0VOVl9WQVI6ICcyJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDI1KV0pCisgICAgc29ydGVkX3NoYXJk
ZWRfdGVzdHMgPSB0ZXN0czEgKyB0ZXN0czIgKyB0ZXN0czMKKyAgICBzb3J0ZWRfc2hhcmRlZF90
ZXN0cy5zb3J0KCkKKyAgICBzb3J0ZWRfYWN0aXZlX3Rlc3RzID0gW10KKyAgICBzb3J0ZWRfYWN0
aXZlX3Rlc3RzLmV4dGVuZChBQ1RJVkVfVEVTVFMpCisgICAgc29ydGVkX2FjdGl2ZV90ZXN0cy5z
b3J0KCkKKyAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZF9hY3RpdmVfdGVzdHMsIHNvcnRlZF9z
aGFyZGVkX3Rlc3RzKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0
X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
b29nbGV0ZXN0LXNodWZmbGUtdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmU1ZjZhYmEyYTVlMGZm
Y2FiOTE1ZTQ2MzhkMjNmNThjZjQ4ZmYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8uY2MKQEAgLTAsMCArMSwx
MDIgQEAKKy8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisv
LyBWZXJpZmllcyB0aGF0IHRlc3Qgc2h1ZmZsaW5nIHdvcmtzLgorCisjaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3QuaCIKKworbmFtZXNwYWNlIHsKKwordXNpbmcgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVu
dExpc3RlbmVyOwordXNpbmcgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdDsKK3VzaW5nIDo6dGVz
dGluZzo6TWVzc2FnZTsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6
VGVzdEV2ZW50TGlzdGVuZXJzOwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0SW5mbzsKK3VzaW5nIDo6
dGVzdGluZzo6VW5pdFRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpzY29wZWRfcHRy
OworCisvLyBUaGUgdGVzdCBtZXRob2RzIGFyZSBlbXB0eSwgYXMgdGhlIHNvbGUgcHVycG9zZSBv
ZiB0aGlzIHByb2dyYW0gaXMKKy8vIHRvIHByaW50IHRoZSB0ZXN0IG5hbWVzIGJlZm9yZS9hZnRl
ciBzaHVmZmxpbmcuCisKK2NsYXNzIEEgOiBwdWJsaWMgVGVzdCB7fTsKK1RFU1RfRihBLCBBKSB7
fQorVEVTVF9GKEEsIEIpIHt9CisKK1RFU1QoQURlYXRoVGVzdCwgQSkge30KK1RFU1QoQURlYXRo
VGVzdCwgQikge30KK1RFU1QoQURlYXRoVGVzdCwgQykge30KKworVEVTVChCLCBBKSB7fQorVEVT
VChCLCBCKSB7fQorVEVTVChCLCBDKSB7fQorVEVTVChCLCBESVNBQkxFRF9EKSB7fQorVEVTVChC
LCBESVNBQkxFRF9FKSB7fQorCitURVNUKEJEZWF0aFRlc3QsIEEpIHt9CitURVNUKEJEZWF0aFRl
c3QsIEIpIHt9CisKK1RFU1QoQywgQSkge30KK1RFU1QoQywgQikge30KK1RFU1QoQywgQykge30K
K1RFU1QoQywgRElTQUJMRURfRCkge30KKworVEVTVChDRGVhdGhUZXN0LCBBKSB7fQorCitURVNU
KERJU0FCTEVEX0QsIEEpIHt9CitURVNUKERJU0FCTEVEX0QsIERJU0FCTEVEX0IpIHt9CisKKy8v
IFRoaXMgcHJpbnRlciBwcmludHMgdGhlIGZ1bGwgdGVzdCBuYW1lcyBvbmx5LCBzdGFydGluZyBl
YWNoIHRlc3QKKy8vIGl0ZXJhdGlvbiB3aXRoIGEgIi0tLS0iIG1hcmtlci4KK2NsYXNzIFRlc3RO
YW1lUHJpbnRlciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKKyBwdWJsaWM6Cisg
IHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25TdGFydChjb25zdCBVbml0VGVzdCYgLyogdW5p
dF90ZXN0ICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IC8qIGl0
ZXJhdGlvbiAqLykgeworICAgIHByaW50ZigiLS0tLVxuIik7CisgIH0KKworICB2aXJ0dWFsIHZv
aWQgT25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbykgeworICAgIHByaW50Zigi
JXMuJXNcbiIsIHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsK
KyAgfQorfTsKKworfSAgLy8gbmFtZXNwYWNlCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoq
YXJndikgeworICBJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgLy8gUmVwbGFjZXMg
dGhlIGRlZmF1bHQgcHJpbnRlciB3aXRoIFRlc3ROYW1lUHJpbnRlciwgd2hpY2ggcHJpbnRzCisg
IC8vIHRoZSB0ZXN0IG5hbWUgb25seS4KKyAgVGVzdEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMg
PSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCk7CisgIGRlbGV0ZSBsaXN0ZW5l
cnMuUmVsZWFzZShsaXN0ZW5lcnMuZGVmYXVsdF9yZXN1bHRfcHJpbnRlcigpKTsKKyAgbGlzdGVu
ZXJzLkFwcGVuZChuZXcgVGVzdE5hbWVQcmludGVyKTsKKworICByZXR1cm4gUlVOX0FMTF9URVNU
UygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LXRlc3QtcGFydC10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LXRlc3QtcGFydC10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkMmQ2ZjllODU4ZjUyNzliYTVh
MTZhNWQxYTZlMzdhZmZlOTEwYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdGVzdC1wYXJ0LXRlc3QuY2MKQEAgLTAsMCArMSwyMDUg
QEAKKy8vIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJbmMuCisvLyBBbGwgUmlnaHRzIFJlc2VydmVk
LgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisv
LyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgiCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgor
Cit1c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwordXNpbmcgdGVzdGluZzo6VGVzdDsKK3VzaW5nIHRl
c3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OwordXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHRBcnJh
eTsKKworbmFtZXNwYWNlIHsKKworLy8gVGVzdHMgdGhlIFRlc3RQYXJ0UmVzdWx0IGNsYXNzLgor
CisvLyBUaGUgdGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIFRlc3RQYXJ0UmVzdWx0LgorY2xhc3Mg
VGVzdFBhcnRSZXN1bHRUZXN0IDogcHVibGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAgVGVzdFBh
cnRSZXN1bHRUZXN0KCkKKyAgICAgIDogcjFfKFRlc3RQYXJ0UmVzdWx0OjprU3VjY2VzcywgImZv
by9iYXIuY2MiLCAxMCwgIlN1Y2Nlc3MhIiksCisgICAgICAgIHIyXyhUZXN0UGFydFJlc3VsdDo6
a05vbkZhdGFsRmFpbHVyZSwgImZvby9iYXIuY2MiLCAtMSwgIkZhaWx1cmUhIiksCisgICAgICAg
IHIzXyhUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwgTlVMTCwgLTEsICJGYWlsdXJlISIp
IHt9CisKKyAgVGVzdFBhcnRSZXN1bHQgcjFfLCByMl8sIHIzXzsKK307CisKKworVEVTVF9GKFRl
c3RQYXJ0UmVzdWx0VGVzdCwgQ29uc3RydWN0b3JXb3JrcykgeworICBNZXNzYWdlIG1lc3NhZ2U7
CisgIG1lc3NhZ2UgPDwgInNvbWV0aGluZyBpcyB0ZXJyaWJseSB3cm9uZyI7CisgIG1lc3NhZ2Ug
PDwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHRlc3Rpbmc6OmludGVybmFsOjprU3RhY2tUcmFj
ZU1hcmtlcik7CisgIG1lc3NhZ2UgPDwgInNvbWUgdW5pbXBvcnRhbnQgc3RhY2sgdHJhY2UiOwor
CisgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IHJlc3VsdChUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFs
RmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb21lX2ZpbGUuY2MiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtZXNzYWdlLkdldFN0cmluZygpLmNfc3RyKCkpOworCisgIEVYUEVDVF9FUShUZXN0
UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwgcmVzdWx0LnR5cGUoKSk7CisgIEVYUEVDVF9T
VFJFUSgic29tZV9maWxlLmNjIiwgcmVzdWx0LmZpbGVfbmFtZSgpKTsKKyAgRVhQRUNUX0VRKDQy
LCByZXN1bHQubGluZV9udW1iZXIoKSk7CisgIEVYUEVDVF9TVFJFUShtZXNzYWdlLkdldFN0cmlu
ZygpLmNfc3RyKCksIHJlc3VsdC5tZXNzYWdlKCkpOworICBFWFBFQ1RfU1RSRVEoInNvbWV0aGlu
ZyBpcyB0ZXJyaWJseSB3cm9uZyIsIHJlc3VsdC5zdW1tYXJ5KCkpOworfQorCitURVNUX0YoVGVz
dFBhcnRSZXN1bHRUZXN0LCBSZXN1bHRBY2Nlc3NvcnNXb3JrKSB7CisgIGNvbnN0IFRlc3RQYXJ0
UmVzdWx0IHN1Y2Nlc3MoVGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJmaWxlLmNjIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSIpOworICBFWFBF
Q1RfVFJVRShzdWNjZXNzLnBhc3NlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MuZmFpbGVk
KCkpOworICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcy5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKKyAgRVhQ
RUNUX0ZBTFNFKHN1Y2Nlc3MuZmF0YWxseV9mYWlsZWQoKSk7CisKKyAgY29uc3QgVGVzdFBhcnRS
ZXN1bHQgbm9uZmF0YWxfZmFpbHVyZShUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5jYyIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UiKTsKKyAgRVhQRUNUX0ZBTFNFKG5vbmZh
dGFsX2ZhaWx1cmUucGFzc2VkKCkpOworICBFWFBFQ1RfVFJVRShub25mYXRhbF9mYWlsdXJlLmZh
aWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUobm9uZmF0YWxfZmFpbHVyZS5ub25mYXRhbGx5X2ZhaWxl
ZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKG5vbmZhdGFsX2ZhaWx1cmUuZmF0YWxseV9mYWlsZWQoKSk7
CisKKyAgY29uc3QgVGVzdFBhcnRSZXN1bHQgZmF0YWxfZmFpbHVyZShUZXN0UGFydFJlc3VsdDo6
a0ZhdGFsRmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmls
ZS5jYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UiKTsKKyAgRVhQRUNUX0ZBTFNF
KGZhdGFsX2ZhaWx1cmUucGFzc2VkKCkpOworICBFWFBFQ1RfVFJVRShmYXRhbF9mYWlsdXJlLmZh
aWxlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKGZhdGFsX2ZhaWx1cmUubm9uZmF0YWxseV9mYWlsZWQo
KSk7CisgIEVYUEVDVF9UUlVFKGZhdGFsX2ZhaWx1cmUuZmF0YWxseV9mYWlsZWQoKSk7Cit9CisK
Ky8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0Ojp0eXBlKCkuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRU
ZXN0LCB0eXBlKSB7CisgIEVYUEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a1N1Y2Nlc3MsIHIxXy50
eXBlKCkpOworICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsIHIy
Xy50eXBlKCkpOworICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsIHIz
Xy50eXBlKCkpOworfQorCisvLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6ZmlsZV9uYW1lKCkuCitU
RVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBmaWxlX25hbWUpIHsKKyAgRVhQRUNUX1NUUkVRKCJm
b28vYmFyLmNjIiwgcjFfLmZpbGVfbmFtZSgpKTsKKyAgRVhQRUNUX1NUUkVRKE5VTEwsIHIzXy5m
aWxlX25hbWUoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpsaW5lX251bWJlcigp
LgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgbGluZV9udW1iZXIpIHsKKyAgRVhQRUNUX0VR
KDEwLCByMV8ubGluZV9udW1iZXIoKSk7CisgIEVYUEVDVF9FUSgtMSwgcjJfLmxpbmVfbnVtYmVy
KCkpOworfQorCisvLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6bWVzc2FnZSgpLgorVEVTVF9GKFRl
c3RQYXJ0UmVzdWx0VGVzdCwgbWVzc2FnZSkgeworICBFWFBFQ1RfU1RSRVEoIlN1Y2Nlc3MhIiwg
cjFfLm1lc3NhZ2UoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpwYXNzZWQoKS4K
K1RFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIFBhc3NlZCkgeworICBFWFBFQ1RfVFJVRShyMV8u
cGFzc2VkKCkpOworICBFWFBFQ1RfRkFMU0UocjJfLnBhc3NlZCgpKTsKKyAgRVhQRUNUX0ZBTFNF
KHIzXy5wYXNzZWQoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpmYWlsZWQoKS4K
K1RFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIEZhaWxlZCkgeworICBFWFBFQ1RfRkFMU0UocjFf
LmZhaWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUocjJfLmZhaWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUo
cjNfLmZhaWxlZCgpKTsKK30KKworLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6OmZhdGFsbHlfZmFp
bGVkKCkuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBGYXRhbGx5RmFpbGVkKSB7CisgIEVY
UEVDVF9GQUxTRShyMV8uZmF0YWxseV9mYWlsZWQoKSk7CisgIEVYUEVDVF9GQUxTRShyMl8uZmF0
YWxseV9mYWlsZWQoKSk7CisgIEVYUEVDVF9UUlVFKHIzXy5mYXRhbGx5X2ZhaWxlZCgpKTsKK30K
KworLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6Om5vbmZhdGFsbHlfZmFpbGVkKCkuCitURVNUX0Yo
VGVzdFBhcnRSZXN1bHRUZXN0LCBOb25mYXRhbGx5RmFpbGVkKSB7CisgIEVYUEVDVF9GQUxTRShy
MV8ubm9uZmF0YWxseV9mYWlsZWQoKSk7CisgIEVYUEVDVF9UUlVFKHIyXy5ub25mYXRhbGx5X2Zh
aWxlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHIzXy5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKK30KKwor
Ly8gVGVzdHMgdGhlIFRlc3RQYXJ0UmVzdWx0QXJyYXkgY2xhc3MuCisKK2NsYXNzIFRlc3RQYXJ0
UmVzdWx0QXJyYXlUZXN0IDogcHVibGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAgVGVzdFBhcnRS
ZXN1bHRBcnJheVRlc3QoKQorICAgICAgOiByMV8oVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZh
aWx1cmUsICJmb28vYmFyLmNjIiwgLTEsICJGYWlsdXJlIDEiKSwKKyAgICAgICAgcjJfKFRlc3RQ
YXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLCAiZm9vL2Jhci5jYyIsIC0xLCAiRmFpbHVyZSAyIikg
e30KKworICBjb25zdCBUZXN0UGFydFJlc3VsdCByMV8sIHIyXzsKK307CisKKy8vIFRlc3RzIHRo
YXQgVGVzdFBhcnRSZXN1bHRBcnJheSBpbml0aWFsbHkgaGFzIHNpemUgMC4KK1RFU1RfRihUZXN0
UGFydFJlc3VsdEFycmF5VGVzdCwgSW5pdGlhbFNpemVJc1plcm8pIHsKKyAgVGVzdFBhcnRSZXN1
bHRBcnJheSByZXN1bHRzOworICBFWFBFQ1RfRVEoMCwgcmVzdWx0cy5zaXplKCkpOworfQorCisv
LyBUZXN0cyB0aGF0IFRlc3RQYXJ0UmVzdWx0QXJyYXkgY29udGFpbnMgdGhlIGdpdmVuIFRlc3RQ
YXJ0UmVzdWx0CisvLyBhZnRlciBvbmUgQXBwZW5kKCkgb3BlcmF0aW9uLgorVEVTVF9GKFRlc3RQ
YXJ0UmVzdWx0QXJyYXlUZXN0LCBDb250YWluc0dpdmVuUmVzdWx0QWZ0ZXJBcHBlbmQpIHsKKyAg
VGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOworICByZXN1bHRzLkFwcGVuZChyMV8pOworICBF
WFBFQ1RfRVEoMSwgcmVzdWx0cy5zaXplKCkpOworICBFWFBFQ1RfU1RSRVEoIkZhaWx1cmUgMSIs
IHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMCkubWVzc2FnZSgpKTsKK30KKworLy8gVGVzdHMg
dGhhdCBUZXN0UGFydFJlc3VsdEFycmF5IGNvbnRhaW5zIHRoZSBnaXZlbiBUZXN0UGFydFJlc3Vs
dHMKKy8vIGFmdGVyIHR3byBBcHBlbmQoKSBvcGVyYXRpb25zLgorVEVTVF9GKFRlc3RQYXJ0UmVz
dWx0QXJyYXlUZXN0LCBDb250YWluc0dpdmVuUmVzdWx0c0FmdGVyVHdvQXBwZW5kcykgeworICBU
ZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7CisgIHJlc3VsdHMuQXBwZW5kKHIxXyk7CisgIHJl
c3VsdHMuQXBwZW5kKHIyXyk7CisgIEVYUEVDVF9FUSgyLCByZXN1bHRzLnNpemUoKSk7CisgIEVY
UEVDVF9TVFJFUSgiRmFpbHVyZSAxIiwgcmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgwKS5tZXNz
YWdlKCkpOworICBFWFBFQ1RfU1RSRVEoIkZhaWx1cmUgMiIsIHJlc3VsdHMuR2V0VGVzdFBhcnRS
ZXN1bHQoMSkubWVzc2FnZSgpKTsKK30KKwordHlwZWRlZiBUZXN0UGFydFJlc3VsdEFycmF5VGVz
dCBUZXN0UGFydFJlc3VsdEFycmF5RGVhdGhUZXN0OworCisvLyBUZXN0cyB0aGF0IHRoZSBwcm9n
cmFtIGRpZXMgd2hlbiBHZXRUZXN0UGFydFJlc3VsdCgpIGlzIGNhbGxlZCB3aXRoCisvLyBhbiBp
bnZhbGlkIGluZGV4LgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0QXJyYXlEZWF0aFRlc3QsIERpZXNX
aGVuSW5kZXhJc091dE9mQm91bmQpIHsKKyAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOwor
ICByZXN1bHRzLkFwcGVuZChyMV8pOworCisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQocmVz
dWx0cy5HZXRUZXN0UGFydFJlc3VsdCgtMSksICIiKTsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBP
UlRFRChyZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDEpLCAiIik7Cit9CisKKy8vIEZJWE1FOiBB
ZGQgYSB0ZXN0IGZvciB0aGUgY2xhc3MgSGFzTmV3RmF0YWxGYWlsdXJlSGVscGVyLgorCit9ICAv
LyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC10ZXN0Ml90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LXRlc3QyX3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJmOThkYzdkMWMzZTkwOTc1OGJhNjA3
NzJlOTc3NDk4Y2U4MWZmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ29vZ2xldGVzdC10ZXN0Ml90ZXN0LmNjCkBAIC0wLDAgKzEsNjEgQEAKKy8vIENv
cHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisv
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJp
YnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8KKy8vIFRlc3RzIGZv
ciBHb29nbGUgVGVzdCBpdHNlbGYuICBUaGlzIHZlcmlmaWVzIHRoYXQgdGhlIGJhc2ljIGNvbnN0
cnVjdHMgb2YKKy8vIEdvb2dsZSBUZXN0IHdvcmsuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgorI2luY2x1ZGUgImdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmgiCisKK3VzaW5nIDo6dGVz
dGluZzo6VmFsdWVzOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I7
CisKKy8vIFRlc3RzIHRoYXQgZ2VuZXJhdG9ycyBkZWZpbmVkIGluIGEgZGlmZmVyZW50IHRyYW5z
bGF0aW9uIHVuaXQKKy8vIGFyZSBmdW5jdGlvbmFsLiBUaGUgdGVzdCB1c2luZyBleHRlcm5fZ2Vu
XzIgaXMgZGVmaW5lZAorLy8gaW4gZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MuCitQYXJh
bUdlbmVyYXRvcjxpbnQ+IGV4dGVybl9nZW5fMiA9IFZhbHVlcygzMyk7CisKKy8vIFRlc3RzIHRo
YXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgdHJhbnNs
YXRpb24gdW5pdAorLy8gYW5kIGluc3RhbnRpYXRlZCBpbiBhbm90aGVyLiBUaGUgdGVzdCBpcyBk
ZWZpbmVkIGluCisvLyBnb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYyBhbmQgRXh0ZXJuYWxJ
bnN0YW50aWF0aW9uVGVzdCBmaXh0dXJlIGNsYXNzIGlzCisvLyBkZWZpbmVkIGluIGd0ZXN0LXBh
cmFtLXRlc3RfdGVzdC5oLgorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoTXVsdGlwbGVzT2YzMywK
KyAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMzMsIDY2KSk7CisKKy8vIFRlc3RzIHRoYXQgYSBw
YXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgaW5zdGFudGlhdGVkCisvLyBpbiBtdWx0aXBs
ZSB0cmFuc2xhdGlvbiB1bml0cy4gQW5vdGhlciBpbnN0YW50aWF0aW9uIGlzIGRlZmluZWQKKy8v
IGluIGdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmNjIGFuZAorLy8gSW5zdGFudGlhdGlvbklu
TXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0IGZpeHR1cmUgaXMgZGVmaW5lZCBpbgorLy8gZ3Rl
c3QtcGFyYW0tdGVzdF90ZXN0LmgKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlv
blVuaXRzVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg0MiozLCA0Mio0LCA0
Mio1KSk7CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xl
dGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2Y2I5
ZjZkYTMxZGVhZGZkN2VlZmQyMzVlOWIzN2RmMjlmYjNiYWYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10
ZXN0LnB5CkBAIC0wLDAgKzEsMTY5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29w
eXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisiIiJUZXN0cyBHb29nbGUgVGVzdCdzIHRocm93LW9uLWZhaWx1cmUgbW9k
ZSB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQuCisKK1RoaXMgc2NyaXB0IGludm9rZXMgZ29vZ2xl
dGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfIChhIHByb2dyYW0gd3JpdHRlbiB3aXRoCitHb29n
bGUgVGVzdCkgd2l0aCBkaWZmZXJlbnQgZW52aXJvbm1lbnRzIGFuZCBjb21tYW5kIGxpbmUgZmxh
Z3MuCisiIiIKKworaW1wb3J0IG9zCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCisKKyMgQ29u
c3RhbnRzLgorCisjIFRoZSBjb21tYW5kIGxpbmUgZmxhZyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5n
IHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUuCitUSFJPV19PTl9GQUlMVVJFID0gJ2d0ZXN0X3Ro
cm93X29uX2ZhaWx1cmUnCisKKyMgUGF0aCB0byB0aGUgZ29vZ2xldGVzdC10aHJvdy1vbi1mYWls
dXJlLXRlc3RfIHByb2dyYW0sIGNvbXBpbGVkIHdpdGgKKyMgZXhjZXB0aW9ucyBkaXNhYmxlZC4K
K0VYRV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisgICAg
J2dvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0XycpCisKKworIyBVdGlsaXRpZXMuCisK
KworZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6CisgICIiIlNldHMgYW4gZW52aXJvbm1l
bnQgdmFyaWFibGUgdG8gYSBnaXZlbiB2YWx1ZTsgdW5zZXRzIGl0IHdoZW4gdGhlCisgIGdpdmVu
IHZhbHVlIGlzIE5vbmUuCisgICIiIgorCisgIGVudl92YXIgPSBlbnZfdmFyLnVwcGVyKCkKKyAg
aWYgdmFsdWUgaXMgbm90IE5vbmU6CisgICAgb3MuZW52aXJvbltlbnZfdmFyXSA9IHZhbHVlCisg
IGVsaWYgZW52X3ZhciBpbiBvcy5lbnZpcm9uOgorICAgIGRlbCBvcy5lbnZpcm9uW2Vudl92YXJd
CisKKworZGVmIFJ1bihjb21tYW5kKToKKyAgIiIiUnVucyBhIGNvbW1hbmQ7IHJldHVybnMgVHJ1
ZS9GYWxzZSBpZiBpdHMgZXhpdCBjb2RlIGlzL2lzbid0IDAuIiIiCisKKyAgcHJpbnQgJ1J1bm5p
bmcgIiVzIi4gLiAuJyAlICcgJy5qb2luKGNvbW1hbmQpCisgIHAgPSBndGVzdF90ZXN0X3V0aWxz
LlN1YnByb2Nlc3MoY29tbWFuZCkKKyAgcmV0dXJuIHAuZXhpdGVkIGFuZCBwLmV4aXRfY29kZSA9
PSAwCisKKworIyBUaGUgdGVzdHMuICBGSVhNRTogcmVmYWN0b3IgdGhlIGNsYXNzIHRvIHNoYXJl
IGNvbW1vbgorIyBsb2dpYyB3aXRoIGNvZGUgaW4gZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJl
LXVuaXR0ZXN0LnB5LgorY2xhc3MgVGhyb3dPbkZhaWx1cmVUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMu
VGVzdENhc2UpOgorICAiIiJUZXN0cyB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLiIiIgorCisg
IGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwgZW52X3Zhcl92YWx1ZSwgZmxhZ192YWx1ZSwgc2hvdWxk
X2ZhaWwpOgorICAgICIiIlJ1bnMgZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfIGFu
ZCB2ZXJpZmllcyB0aGF0IGl0IGRvZXMKKyAgICAob3IgZG9lcyBub3QpIGV4aXQgd2l0aCBhIG5v
bi16ZXJvIGNvZGUuCisKKyAgICBBcmdzOgorICAgICAgZW52X3Zhcl92YWx1ZTogICAgdmFsdWUg
b2YgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHZhcmlhYmxlOyBOb25lIGlmIHRoZSB2YXJpYWJsZSBzaG91bGQgYmUgdW5zZXQu
CisgICAgICBmbGFnX3ZhbHVlOiAgICAgICB2YWx1ZSBvZiB0aGUgLS1ndGVzdF9icmVha19vbl9m
YWlsdXJlIGZsYWc7CisgICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNo
b3VsZCBub3QgYmUgcHJlc2VudC4KKyAgICAgIHNob3VsZF9mYWlsOiAgICAgIFRydWUgaWZmIHRo
ZSBwcm9ncmFtIGlzIGV4cGVjdGVkIHRvIGZhaWwuCisgICAgIiIiCisKKyAgICBTZXRFbnZWYXIo
VEhST1dfT05fRkFJTFVSRSwgZW52X3Zhcl92YWx1ZSkKKworICAgIGlmIGVudl92YXJfdmFsdWUg
aXMgTm9uZToKKyAgICAgIGVudl92YXJfdmFsdWVfbXNnID0gJyBpcyBub3Qgc2V0JworICAgIGVs
c2U6CisgICAgICBlbnZfdmFyX3ZhbHVlX21zZyA9ICc9JyArIGVudl92YXJfdmFsdWUKKworICAg
IGlmIGZsYWdfdmFsdWUgaXMgTm9uZToKKyAgICAgIGZsYWcgPSAnJworICAgIGVsaWYgZmxhZ192
YWx1ZSA9PSAnMCc6CisgICAgICBmbGFnID0gJy0tJXM9MCcgJSBUSFJPV19PTl9GQUlMVVJFCisg
ICAgZWxzZToKKyAgICAgIGZsYWcgPSAnLS0lcycgJSBUSFJPV19PTl9GQUlMVVJFCisKKyAgICBj
b21tYW5kID0gW0VYRV9QQVRIXQorICAgIGlmIGZsYWc6CisgICAgICBjb21tYW5kLmFwcGVuZChm
bGFnKQorCisgICAgaWYgc2hvdWxkX2ZhaWw6CisgICAgICBzaG91bGRfb3Jfbm90ID0gJ3Nob3Vs
ZCcKKyAgICBlbHNlOgorICAgICAgc2hvdWxkX29yX25vdCA9ICdzaG91bGQgbm90JworCisgICAg
ZmFpbGVkID0gbm90IFJ1bihjb21tYW5kKQorCisgICAgU2V0RW52VmFyKFRIUk9XX09OX0ZBSUxV
UkUsIE5vbmUpCisKKyAgICBtc2cgPSAoJ3doZW4gJXMlcywgYW4gYXNzZXJ0aW9uIGZhaWx1cmUg
aW4gIiVzIiAlcyBjYXVzZSBhIG5vbi16ZXJvICcKKyAgICAgICAgICAgJ2V4aXQgY29kZS4nICUK
KyAgICAgICAgICAgKFRIUk9XX09OX0ZBSUxVUkUsIGVudl92YXJfdmFsdWVfbXNnLCAnICcuam9p
bihjb21tYW5kKSwKKyAgICAgICAgICAgIHNob3VsZF9vcl9ub3QpKQorICAgIHNlbGYuYXNzZXJ0
XyhmYWlsZWQgPT0gc2hvdWxkX2ZhaWwsIG1zZykKKworICBkZWYgdGVzdERlZmF1bHRCZWhhdmlv
cihzZWxmKToKKyAgICAiIiJUZXN0cyB0aGUgYmVoYXZpb3Igb2YgdGhlIGRlZmF1bHQgbW9kZS4i
IiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwgZmxhZ192YWx1
ZT1Ob25lLCBzaG91bGRfZmFpbD1GYWxzZSkKKworICBkZWYgdGVzdFRocm93T25GYWlsdXJlRW52
VmFyKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5nIHRoZSBHVEVTVF9USFJPV19PTl9GQUlMVVJF
IGVudmlyb25tZW50IHZhcmlhYmxlLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zh
cl92YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT1Ob25lLAorICAg
ICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPUZhbHNlKQorICAgIHNlbGYuUnVuQW5kVmVy
aWZ5KGVudl92YXJfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9
Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1UcnVlKQorCisgIGRlZiB0
ZXN0VGhyb3dPbkZhaWx1cmVGbGFnKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5nIHRoZSAtLWd0
ZXN0X3Rocm93X29uX2ZhaWx1cmUgZmxhZy4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVu
dl92YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywK
KyAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1GYWxzZSkKKyAgICBzZWxmLlJ1bkFu
ZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192
YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9VHJ1ZSkKKworICBk
ZWYgdGVzdFRocm93T25GYWlsdXJlRmxhZ092ZXJyaWRlc0VudlZhcihzZWxmKToKKyAgICAiIiJU
ZXN0cyB0aGF0IC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZSBvdmVycmlkZXMgR1RFU1RfVEhST1df
T05fRkFJTFVSRS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAn
LAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAg
ICAgICAgIHNob3VsZF9mYWlsPUZhbHNlKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJf
dmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAorICAgICAg
ICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPVRydWUpCisgICAgc2VsZi5SdW5BbmRWZXJpZnko
ZW52X3Zhcl92YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcs
CisgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9RmFsc2UpCisgICAgc2VsZi5SdW5B
bmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192
YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9VHJ1ZSkKKworCitp
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRocm93LW9u
LWZhaWx1cmUtdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOWEyYzY0NDhhMjljYTI5
NjQ5YTEyNDgwNTlhOTg1YTUxYWY4NjM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8uY2MKQEAg
LTAsMCArMSw3MSBAQAorLy8gQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisvLyBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0
OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8v
CisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisKKy8vIFRlc3RzIEdvb2dsZSBUZXN0J3MgdGhyb3ctb24tZmFpbHVyZSBtb2RlIHdpdGgg
ZXhjZXB0aW9ucyBkaXNhYmxlZC4KKy8vCisvLyBUaGlzIHByb2dyYW0gbXVzdCBiZSBjb21waWxl
ZCB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQuICBJdCB3aWxsIGJlCisvLyBpbnZva2VkIGJ5IGdv
b2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0LnB5LCBhbmQgaXMgZXhwZWN0ZWQgdG8gZXhp
dAorLy8gd2l0aCBub24temVybyBpbiB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlIG9yIDAgb3Ro
ZXJ3aXNlLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+
ICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBmZmx1c2gsIGZwcmludGYsIE5VTEwsIGV0Yy4K
KyNpbmNsdWRlIDxzdGRsaWIuaD4gICAgICAgICAgICAgICAgICAgICAvLyBmb3IgZXhpdAorI2lu
Y2x1ZGUgPGV4Y2VwdGlvbj4gICAgICAgICAgICAgICAgICAgIC8vIGZvciBzZXRfdGVybWluYXRl
CisKKy8vIFRoaXMgdGVybWluYXRlIGhhbmRsZXIgYWJvcnRzIHRoZSBwcm9ncmFtIHVzaW5nIGV4
aXQoKSByYXRoZXIgdGhhbiBhYm9ydCgpLgorLy8gVGhpcyBhdm9pZHMgc2hvd2luZyBwb3AtdXBz
IG9uIFdpbmRvd3Mgc3lzdGVtcyBhbmQgY29yZSBkdW1wcyBvbiBVbml4LWxpa2UKKy8vIG9uZXMu
Cit2b2lkIFRlcm1pbmF0ZUhhbmRsZXIoKSB7CisgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsICJV
bmhhbmRsZWQgQysrIGV4Y2VwdGlvbiB0ZXJtaW5hdGluZyB0aGUgcHJvZ3JhbS4iKTsKKyAgZmZs
dXNoKE5VTEwpOworICBleGl0KDEpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFy
Z3YpIHsKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworICBzdGQ6OnNldF90ZXJtaW5hdGUoJlRl
cm1pbmF0ZUhhbmRsZXIpOworI2VuZGlmCisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdj
LCBhcmd2KTsKKworICAvLyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IHBlb3BsZSBjYW4gdXNlIEdv
b2dsZSBUZXN0IGFzc2VydGlvbnMgaW4KKyAgLy8gb3RoZXIgdGVzdGluZyBmcmFtZXdvcmtzLCBh
cyBsb25nIGFzIHRoZXkgaW5pdGlhbGl6ZSBHb29nbGUgVGVzdAorICAvLyBwcm9wZXJseSBhbmQg
c2V0IHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUuICBUaGVyZWZvcmUsIHdlIGRvbid0CisgIC8v
IHVzZSBHb29nbGUgVGVzdCdzIGNvbnN0cnVjdHMgZm9yIGRlZmluaW5nIGFuZCBydW5uaW5nIHRl
c3RzCisgIC8vIChlLmcuIFRFU1QgYW5kIFJVTl9BTExfVEVTVFMpIGhlcmUuCisKKyAgLy8gSW4g
dGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQsIHRoaXMK
KyAgLy8gYXNzZXJ0aW9uIHdpbGwgY2F1c2UgdGhlIHByb2dyYW0gdG8gZXhpdCB3aXRoIGEgbm9u
LXplcm8gY29kZS4KKyAgRVhQRUNUX0VRKDIsIDMpOworCisgIC8vIFdoZW4gbm90IGluIHRoZSB0
aHJvdy1vbi1mYWlsdXJlIG1vZGUsIHRoZSBjb250cm9sIHdpbGwgcmVhY2gKKyAgLy8gaGVyZS4K
KyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtdHVwbGUtdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z29vZ2xldGVzdC10dXBsZS10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkODJjMTYwZjE3N2Q2ZjNiYWRk
NzcwNjRhYjhjN2U5OGJkMjk3NjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdHVwbGUtdGVzdC5jYwpAQCAtMCwwICsxLDMxOSBAQAor
Ly8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBk
aXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyNpbmNsdWRl
ICJndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oIgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsKKwordXNpbmcgOjpzdGQ6OnRyMTo6
Z2V0OwordXNpbmcgOjpzdGQ6OnRyMTo6bWFrZV90dXBsZTsKK3VzaW5nIDo6c3RkOjp0cjE6OnR1
cGxlOwordXNpbmcgOjpzdGQ6OnRyMTo6dHVwbGVfZWxlbWVudDsKK3VzaW5nIDo6c3RkOjp0cjE6
OnR1cGxlX3NpemU7Cit1c2luZyA6OnRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTsKKworLy8g
VGVzdHMgdGhhdCB0dXBsZV9lbGVtZW50PEssIHR1cGxlPFQwLCBUMSwgLi4uLCBUTj4gPjo6dHlw
ZSByZXR1cm5zIFRLLgorVEVTVCh0dXBsZV9lbGVtZW50X1Rlc3QsIFJldHVybnNFbGVtZW50VHlw
ZSkgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50LCB0dXBsZV9lbGVtZW50PDAsIHR1cGxlPGlu
dCwgY2hhcj4gPjo6dHlwZT4oKTsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCYsIHR1cGxlX2Vs
ZW1lbnQ8MSwgdHVwbGU8ZG91YmxlLCBpbnQmPiA+Ojp0eXBlPigpOworICBTdGF0aWNBc3NlcnRU
eXBlRXE8Ym9vbCwgdHVwbGVfZWxlbWVudDwyLCB0dXBsZTxkb3VibGUsIGludCwgYm9vbD4gPjo6
dHlwZT4oKTsKK30KKworLy8gVGVzdHMgdGhhdCB0dXBsZV9zaXplPFQ+Ojp2YWx1ZSBnaXZlcyB0
aGUgbnVtYmVyIG9mIGZpZWxkcyBpbiB0dXBsZQorLy8gdHlwZSBULgorVEVTVCh0dXBsZV9zaXpl
X1Rlc3QsIFJldHVybnNOdW1iZXJPZkZpZWxkcykgeworICBFWFBFQ1RfRVEoMCwgK3R1cGxlX3Np
emU8dHVwbGU8PiA+Ojp2YWx1ZSk7CisgIEVYUEVDVF9FUSgxLCArdHVwbGVfc2l6ZTx0dXBsZTx2
b2lkKj4gPjo6dmFsdWUpOworICBFWFBFQ1RfRVEoMSwgK3R1cGxlX3NpemU8dHVwbGU8Y2hhcj4g
Pjo6dmFsdWUpOworICBFWFBFQ1RfRVEoMSwgKyh0dXBsZV9zaXplPHR1cGxlPHR1cGxlPGludCwg
ZG91YmxlPiA+ID46OnZhbHVlKSk7CisgIEVYUEVDVF9FUSgyLCArKHR1cGxlX3NpemU8dHVwbGU8
aW50JiwgY29uc3QgY2hhcj4gPjo6dmFsdWUpKTsKKyAgRVhQRUNUX0VRKDMsICsodHVwbGVfc2l6
ZTx0dXBsZTxjaGFyKiwgdm9pZCwgY29uc3QgYm9vbCY+ID46OnZhbHVlKSk7Cit9CisKKy8vIFRl
c3RzIGNvbXBhcmluZyBhIHR1cGxlIHdpdGggaXRzZWxmLgorVEVTVChDb21wYXJpc29uVGVzdCwg
Q29tcGFyZXNXaXRoU2VsZikgeworICBjb25zdCB0dXBsZTxpbnQsIGNoYXIsIGJvb2w+IGEoNSwg
J2EnLCBmYWxzZSk7CisKKyAgRVhQRUNUX1RSVUUoYSA9PSBhKTsKKyAgRVhQRUNUX0ZBTFNFKGEg
IT0gYSk7Cit9CisKKy8vIFRlc3RzIGNvbXBhcmluZyB0d28gdHVwbGVzIHdpdGggdGhlIHNhbWUg
dmFsdWUuCitURVNUKENvbXBhcmlzb25UZXN0LCBDb21wYXJlc0VxdWFsVHVwbGVzKSB7CisgIGNv
bnN0IHR1cGxlPGludCwgYm9vbD4gYSg1LCB0cnVlKSwgYig1LCB0cnVlKTsKKworICBFWFBFQ1Rf
VFJVRShhID09IGIpOworICBFWFBFQ1RfRkFMU0UoYSAhPSBiKTsKK30KKworLy8gVGVzdHMgY29t
cGFyaW5nIHR3byBkaWZmZXJlbnQgdHVwbGVzIHRoYXQgaGF2ZSBubyByZWZlcmVuY2UgZmllbGRz
LgorVEVTVChDb21wYXJpc29uVGVzdCwgQ29tcGFyZXNVbmVxdWFsVHVwbGVzV2l0aG91dFJlZmVy
ZW5jZUZpZWxkcykgeworICB0eXBlZGVmIHR1cGxlPGNvbnN0IGludCwgY2hhcj4gRm9vVHVwbGU7
CisKKyAgY29uc3QgRm9vVHVwbGUgYSgwLCAneCcpOworICBjb25zdCBGb29UdXBsZSBiKDEsICdh
Jyk7CisKKyAgRVhQRUNUX1RSVUUoYSAhPSBiKTsKKyAgRVhQRUNUX0ZBTFNFKGEgPT0gYik7CisK
KyAgY29uc3QgRm9vVHVwbGUgYygxLCAnYicpOworCisgIEVYUEVDVF9UUlVFKGIgIT0gYyk7Cisg
IEVYUEVDVF9GQUxTRShiID09IGMpOworfQorCisvLyBUZXN0cyBjb21wYXJpbmcgdHdvIGRpZmZl
cmVudCB0dXBsZXMgdGhhdCBoYXZlIHJlZmVyZW5jZSBmaWVsZHMuCitURVNUKENvbXBhcmlzb25U
ZXN0LCBDb21wYXJlc1VuZXF1YWxUdXBsZXNXaXRoUmVmZXJlbmNlRmllbGRzKSB7CisgIHR5cGVk
ZWYgdHVwbGU8aW50JiwgY29uc3QgY2hhciY+IEZvb1R1cGxlOworCisgIGludCBpID0gNTsKKyAg
Y29uc3QgY2hhciBjaCA9ICdhJzsKKyAgY29uc3QgRm9vVHVwbGUgYShpLCBjaCk7CisKKyAgaW50
IGogPSA2OworICBjb25zdCBGb29UdXBsZSBiKGosIGNoKTsKKworICBFWFBFQ1RfVFJVRShhICE9
IGIpOworICBFWFBFQ1RfRkFMU0UoYSA9PSBiKTsKKworICBqID0gNTsKKyAgY29uc3QgY2hhciBj
aDIgPSAnYic7CisgIGNvbnN0IEZvb1R1cGxlIGMoaiwgY2gyKTsKKworICBFWFBFQ1RfVFJVRShi
ICE9IGMpOworICBFWFBFQ1RfRkFMU0UoYiA9PSBjKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIHR1
cGxlIGZpZWxkIHdpdGggYSByZWZlcmVuY2UgdHlwZSBpcyBhbiBhbGlhcyBvZiB0aGUKKy8vIHZh
cmlhYmxlIGl0J3Mgc3VwcG9zZWQgdG8gcmVmZXJlbmNlLgorVEVTVChSZWZlcmVuY2VGaWVsZFRl
c3QsIElzQWxpYXNPZlJlZmVyZW5jZWRWYXJpYWJsZSkgeworICBpbnQgbiA9IDA7CisgIHR1cGxl
PGJvb2wsIGludCY+IHQodHJ1ZSwgbik7CisKKyAgbiA9IDE7CisgIEVYUEVDVF9FUShuLCBnZXQ8
MT4odCkpCisgICAgICA8PCAiQ2hhbmdpbmcgYSB1bmRlcmx5aW5nIHZhcmlhYmxlIHNob3VsZCB1
cGRhdGUgdGhlIHJlZmVyZW5jZSBmaWVsZC4iOworCisgIC8vIE1ha2VzIHN1cmUgdGhhdCB0aGUg
aW1wbGVtZW50YXRpb24gZG9lc24ndCBkbyBhbnl0aGluZyBmdW5ueSB3aXRoCisgIC8vIHRoZSAm
IG9wZXJhdG9yIGZvciB0aGUgcmV0dXJuIHR5cGUgb2YgZ2V0PD4oKS4KKyAgRVhQRUNUX0VRKCZu
LCAmKGdldDwxPih0KSkpCisgICAgICA8PCAiVGhlIGFkZHJlc3Mgb2YgYSByZWZlcmVuY2UgZmll
bGQgc2hvdWxkIGVxdWFsIHRoZSBhZGRyZXNzIG9mICIKKyAgICAgIDw8ICJ0aGUgdW5kZXJseWlu
ZyB2YXJpYWJsZS4iOworCisgIGdldDwxPih0KSA9IDI7CisgIEVYUEVDVF9FUSgyLCBuKQorICAg
ICAgPDwgIkNoYW5naW5nIGEgcmVmZXJlbmNlIGZpZWxkIHNob3VsZCB1cGRhdGUgdGhlIHVuZGVy
bHlpbmcgdmFyaWFibGUuIjsKK30KKworLy8gVGVzdHMgdGhhdCB0dXBsZSdzIGRlZmF1bHQgY29u
c3RydWN0b3IgZGVmYXVsdCBpbml0aWFsaXplcyBlYWNoIGZpZWxkLgorLy8gVGhpcyB0ZXN0IG5l
ZWRzIHRvIGNvbXBpbGUgd2l0aG91dCBnZW5lcmF0aW5nIHdhcm5pbmdzLgorVEVTVChUdXBsZUNv
bnN0cnVjdG9yVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yRGVmYXVsdEluaXRpYWxpemVzRWFjaEZp
ZWxkKSB7CisgIC8vIFRoZSBUUjEgcmVwb3J0IHJlcXVpcmVzIHRoYXQgdHVwbGUncyBkZWZhdWx0
IGNvbnN0cnVjdG9yIGRlZmF1bHQKKyAgLy8gaW5pdGlhbGl6ZXMgZWFjaCBmaWVsZCwgZXZlbiBp
ZiBpdCdzIGEgcHJpbWl0aXZlIHR5cGUuICBJZiB0aGUKKyAgLy8gaW1wbGVtZW50YXRpb24gZm9y
Z2V0cyB0byBkbyB0aGlzLCB0aGlzIHRlc3Qgd2lsbCBjYXRjaCBpdCBieQorICAvLyBnZW5lcmF0
aW5nIHdhcm5pbmdzIGFib3V0IHVzaW5nIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIChhc3N1bWlu
ZworICAvLyBhIGRlY2VudCBjb21waWxlcikuCisKKyAgdHVwbGU8PiBlbXB0eTsKKworICB0dXBs
ZTxpbnQ+IGExLCBiMTsKKyAgYjEgPSBhMTsKKyAgRVhQRUNUX0VRKDAsIGdldDwwPihiMSkpOwor
CisgIHR1cGxlPGludCwgZG91YmxlPiBhMiwgYjI7CisgIGIyID0gYTI7CisgIEVYUEVDVF9FUSgw
LCBnZXQ8MD4oYjIpKTsKKyAgRVhQRUNUX0VRKDAuMCwgZ2V0PDE+KGIyKSk7CisKKyAgdHVwbGU8
ZG91YmxlLCBjaGFyLCBib29sKj4gYTMsIGIzOworICBiMyA9IGEzOworICBFWFBFQ1RfRVEoMC4w
LCBnZXQ8MD4oYjMpKTsKKyAgRVhQRUNUX0VRKCdcMCcsIGdldDwxPihiMykpOworICBFWFBFQ1Rf
VFJVRShnZXQ8Mj4oYjMpID09IE5VTEwpOworCisgIHR1cGxlPGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludD4gYTEwLCBiMTA7CisgIGIxMCA9IGExMDsKKyAg
RVhQRUNUX0VRKDAsIGdldDwwPihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDwxPihiMTApKTsK
KyAgRVhQRUNUX0VRKDAsIGdldDwyPihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDwzPihiMTAp
KTsKKyAgRVhQRUNUX0VRKDAsIGdldDw0PihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDw1Pihi
MTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDw2PihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDw3
PihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDw4PihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdl
dDw5PihiMTApKTsKK30KKworLy8gVGVzdHMgY29uc3RydWN0aW5nIGEgdHVwbGUgZnJvbSBpdHMg
ZmllbGRzLgorVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgQ29uc3RydWN0c0Zyb21GaWVsZHMp
IHsKKyAgaW50IG4gPSAxOworICAvLyBSZWZlcmVuY2UgZmllbGQuCisgIHR1cGxlPGludCY+IGEo
bik7CisgIEVYUEVDVF9FUSgmbiwgJihnZXQ8MD4oYSkpKTsKKworICAvLyBOb24tcmVmZXJlbmNl
IGZpZWxkcy4KKyAgdHVwbGU8aW50LCBjaGFyPiBiKDUsICdhJyk7CisgIEVYUEVDVF9FUSg1LCBn
ZXQ8MD4oYikpOworICBFWFBFQ1RfRVEoJ2EnLCBnZXQ8MT4oYikpOworCisgIC8vIENvbnN0IHJl
ZmVyZW5jZSBmaWVsZC4KKyAgY29uc3QgaW50IG0gPSAyOworICB0dXBsZTxib29sLCBjb25zdCBp
bnQmPiBjKHRydWUsIG0pOworICBFWFBFQ1RfVFJVRShnZXQ8MD4oYykpOworICBFWFBFQ1RfRVEo
Jm0sICYoZ2V0PDE+KGMpKSk7Cit9CisKKy8vIFRlc3RzIHR1cGxlJ3MgY29weSBjb25zdHJ1Y3Rv
ci4KK1RFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3QsIENvcHlDb25zdHJ1Y3RvcikgeworICB0dXBs
ZTxkb3VibGUsIGJvb2w+IGEoMC4wLCB0cnVlKTsKKyAgdHVwbGU8ZG91YmxlLCBib29sPiBiKGEp
OworCisgIEVYUEVDVF9ET1VCTEVfRVEoMC4wLCBnZXQ8MD4oYikpOworICBFWFBFQ1RfVFJVRShn
ZXQ8MT4oYikpOworfQorCisvLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSB0dXBsZSBmcm9tIGFub3Ro
ZXIgdHVwbGUgdGhhdCBoYXMgYSBjb21wYXRpYmxlCisvLyBidXQgZGlmZmVyZW50IHR5cGUuCitU
RVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBDb25zdHJ1Y3RzRnJvbURpZmZlcmVudFR1cGxlVHlw
ZSkgeworICB0dXBsZTxpbnQsIGludCwgY2hhcj4gYSgwLCAxLCAnYScpOworICB0dXBsZTxkb3Vi
bGUsIGxvbmcsIGludD4gYihhKTsKKworICBFWFBFQ1RfRE9VQkxFX0VRKDAuMCwgZ2V0PDA+KGIp
KTsKKyAgRVhQRUNUX0VRKDEsIGdldDwxPihiKSk7CisgIEVYUEVDVF9FUSgnYScsIGdldDwyPihi
KSk7Cit9CisKKy8vIFRlc3RzIGNvbnN0cnVjdGluZyBhIDItdHVwbGUgZnJvbSBhbiBzdGQ6OnBh
aXIuCitURVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBDb25zdHJ1Y3RzRnJvbVBhaXIpIHsKKyAg
OjpzdGQ6OnBhaXI8aW50LCBjaGFyPiBhKDEsICdhJyk7CisgIHR1cGxlPGludCwgY2hhcj4gYihh
KTsKKyAgdHVwbGU8aW50LCBjb25zdCBjaGFyJj4gYyhhKTsKK30KKworLy8gVGVzdHMgYXNzaWdu
aW5nIGEgdHVwbGUgdG8gYW5vdGhlciB0dXBsZSB3aXRoIHRoZSBzYW1lIHR5cGUuCitURVNUKFR1
cGxlQXNzaWdubWVudFRlc3QsIEFzc2lnbnNUb1NhbWVUdXBsZVR5cGUpIHsKKyAgY29uc3QgdHVw
bGU8aW50LCBsb25nPiBhKDUsIDdMKTsKKyAgdHVwbGU8aW50LCBsb25nPiBiOworICBiID0gYTsK
KyAgRVhQRUNUX0VRKDUsIGdldDwwPihiKSk7CisgIEVYUEVDVF9FUSg3TCwgZ2V0PDE+KGIpKTsK
K30KKworLy8gVGVzdHMgYXNzaWduaW5nIGEgdHVwbGUgdG8gYW5vdGhlciB0dXBsZSB3aXRoIGEg
ZGlmZmVyZW50IGJ1dAorLy8gY29tcGF0aWJsZSB0eXBlLgorVEVTVChUdXBsZUFzc2lnbm1lbnRU
ZXN0LCBBc3NpZ25zVG9EaWZmZXJlbnRUdXBsZVR5cGUpIHsKKyAgY29uc3QgdHVwbGU8aW50LCBs
b25nLCBib29sPiBhKDEsIDdMLCB0cnVlKTsKKyAgdHVwbGU8bG9uZywgaW50LCBib29sPiBiOwor
ICBiID0gYTsKKyAgRVhQRUNUX0VRKDFMLCBnZXQ8MD4oYikpOworICBFWFBFQ1RfRVEoNywgZ2V0
PDE+KGIpKTsKKyAgRVhQRUNUX1RSVUUoZ2V0PDI+KGIpKTsKK30KKworLy8gVGVzdHMgYXNzaWdu
aW5nIGFuIHN0ZDo6cGFpciB0byBhIDItdHVwbGUuCitURVNUKFR1cGxlQXNzaWdubWVudFRlc3Qs
IEFzc2lnbnNGcm9tUGFpcikgeworICBjb25zdCA6OnN0ZDo6cGFpcjxpbnQsIGJvb2w+IGEoNSwg
dHJ1ZSk7CisgIHR1cGxlPGludCwgYm9vbD4gYjsKKyAgYiA9IGE7CisgIEVYUEVDVF9FUSg1LCBn
ZXQ8MD4oYikpOworICBFWFBFQ1RfVFJVRShnZXQ8MT4oYikpOworCisgIHR1cGxlPGxvbmcsIGJv
b2w+IGM7CisgIGMgPSBhOworICBFWFBFQ1RfRVEoNUwsIGdldDwwPihjKSk7CisgIEVYUEVDVF9U
UlVFKGdldDwxPihjKSk7Cit9CisKKy8vIEEgZml4dHVyZSBmb3IgdGVzdGluZyBiaWcgdHVwbGVz
LgorY2xhc3MgQmlnVHVwbGVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3Rl
ZDoKKyAgdHlwZWRlZiB0dXBsZTxpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQ+IEJpZ1R1cGxlOworCisgIEJpZ1R1cGxlVGVzdCgpIDoKKyAgICAgIGFfKDEs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIpLAorICAgICAgYl8oMSwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMykge30KKworICBCaWdUdXBsZSBhXywgYl87Cit9OworCisvLyBUZXN0cyBjb25z
dHJ1Y3RpbmcgYmlnIHR1cGxlcy4KK1RFU1RfRihCaWdUdXBsZVRlc3QsIENvbnN0cnVjdGlvbikg
eworICBCaWdUdXBsZSBhOworICBCaWdUdXBsZSBiKGJfKTsKK30KKworLy8gVGVzdHMgdGhhdCBn
ZXQ8Tj4odCkgcmV0dXJucyB0aGUgTi10aCAoMC1iYXNlZCkgZmllbGQgb2YgdHVwbGUgdC4KK1RF
U1RfRihCaWdUdXBsZVRlc3QsIGdldCkgeworICBFWFBFQ1RfRVEoMSwgZ2V0PDA+KGFfKSk7Cisg
IEVYUEVDVF9FUSgyLCBnZXQ8OT4oYV8pKTsKKworICAvLyBUZXN0cyB0aGF0IGdldCgpIHdvcmtz
IG9uIGEgY29uc3QgdHVwbGUgdG9vLgorICBjb25zdCBCaWdUdXBsZSBhKGFfKTsKKyAgRVhQRUNU
X0VRKDEsIGdldDwwPihhKSk7CisgIEVYUEVDVF9FUSgyLCBnZXQ8OT4oYSkpOworfQorCisvLyBU
ZXN0cyBjb21wYXJpbmcgYmlnIHR1cGxlcy4KK1RFU1RfRihCaWdUdXBsZVRlc3QsIENvbXBhcmlz
b25zKSB7CisgIEVYUEVDVF9UUlVFKGFfID09IGFfKTsKKyAgRVhQRUNUX0ZBTFNFKGFfICE9IGFf
KTsKKworICBFWFBFQ1RfVFJVRShhXyAhPSBiXyk7CisgIEVYUEVDVF9GQUxTRShhXyA9PSBiXyk7
Cit9CisKK1RFU1QoTWFrZVR1cGxlVGVzdCwgV29ya3NGb3JTY2FsYXJUeXBlcykgeworICB0dXBs
ZTxib29sLCBpbnQ+IGE7CisgIGEgPSBtYWtlX3R1cGxlKHRydWUsIDUpOworICBFWFBFQ1RfVFJV
RShnZXQ8MD4oYSkpOworICBFWFBFQ1RfRVEoNSwgZ2V0PDE+KGEpKTsKKworICB0dXBsZTxjaGFy
LCBpbnQsIGxvbmc+IGI7CisgIGIgPSBtYWtlX3R1cGxlKCdhJywgJ2InLCA1KTsKKyAgRVhQRUNU
X0VRKCdhJywgZ2V0PDA+KGIpKTsKKyAgRVhQRUNUX0VRKCdiJywgZ2V0PDE+KGIpKTsKKyAgRVhQ
RUNUX0VRKDUsIGdldDwyPihiKSk7Cit9CisKK1RFU1QoTWFrZVR1cGxlVGVzdCwgV29ya3NGb3JQ
b2ludGVycykgeworICBpbnQgYVtdID0geyAxLCAyLCAzLCA0IH07CisgIGNvbnN0IGNoYXIqIGNv
bnN0IHN0ciA9ICJoaSI7CisgIGludCogY29uc3QgcCA9IGE7CisKKyAgdHVwbGU8Y29uc3QgY2hh
ciosIGludCo+IHQ7CisgIHQgPSBtYWtlX3R1cGxlKHN0ciwgcCk7CisgIEVYUEVDVF9FUShzdHIs
IGdldDwwPih0KSk7CisgIEVYUEVDVF9FUShwLCBnZXQ8MT4odCkpOworfQorCit9ICAvLyBuYW1l
c3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVz
dC11bmluaXRpYWxpemVkLXRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViN2QxZTc0ZjY3ZmNi
MDBjYjg0ODU1Nzk2N2RlZjRmNmE1NmNjOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0LnB5CkBAIC0w
LDAgKzEsNjcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAwOCwg
R29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3Qgd2FybnMgdGhlIHVzZXIgd2hlbiBub3QgaW5p
dGlhbGl6ZWQgcHJvcGVybHkuIiIiCisKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKK0NPTU1B
TkQgPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ29vZ2xldGVzdC11
bmluaXRpYWxpemVkLXRlc3RfJykKKworCitkZWYgQXNzZXJ0KGNvbmRpdGlvbik6CisgIGlmIG5v
dCBjb25kaXRpb246CisgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKKworCitkZWYgQXNzZXJ0RXEo
ZXhwZWN0ZWQsIGFjdHVhbCk6CisgIGlmIGV4cGVjdGVkICE9IGFjdHVhbDoKKyAgICBwcmludCAn
RXhwZWN0ZWQ6ICVzJyAlIChleHBlY3RlZCwpCisgICAgcHJpbnQgJyAgQWN0dWFsOiAlcycgJSAo
YWN0dWFsLCkKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCisKK2RlZiBUZXN0RXhpdENvZGVB
bmRPdXRwdXQoY29tbWFuZCk6CisgICIiIlJ1bnMgdGhlIGdpdmVuIGNvbW1hbmQgYW5kIHZlcmlm
aWVzIGl0cyBleGl0IGNvZGUgYW5kIG91dHB1dC4iIiIKKworICAjIFZlcmlmaWVzIHRoYXQgJ2Nv
bW1hbmQnIGV4aXRzIHdpdGggY29kZSAxLgorICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9j
ZXNzKGNvbW1hbmQpCisgIGlmIHAuZXhpdGVkIGFuZCBwLmV4aXRfY29kZSA9PSAwOgorICAgIEFz
c2VydCgnSU1QT1JUQU5UIE5PVElDRScgaW4gcC5vdXRwdXQpOworICBBc3NlcnQoJ0luaXRHb29n
bGVUZXN0JyBpbiBwLm91dHB1dCkKKworCitjbGFzcyBHVGVzdFVuaW5pdGlhbGl6ZWRUZXN0KGd0
ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICBkZWYgdGVzdEV4aXRDb2RlQW5kT3V0cHV0KHNl
bGYpOgorICAgIFRlc3RFeGl0Q29kZUFuZE91dHB1dChDT01NQU5EKQorCisKK2lmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0
Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC11bmluaXRpYWxp
emVkLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0NDM0ZDUxZWViZmQ4NzI2YmQzZjA0YzJkMDQyNmJi
YTk2MDI5OGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0Xy5jYwpAQCAtMCwwICsxLDQyIEBACisvLyBD
b3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3Ry
aWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LmgiCisKK1RFU1QoRHVtbXlUZXN0LCBEdW1teSkgeworICAvLyBUaGlzIHRlc3Qg
ZG9lc24ndCB2ZXJpZnkgYW55dGhpbmcuICBXZSBqdXN0IG5lZWQgaXQgdG8gY3JlYXRlIGEKKyAg
Ly8gcmVhbGlzdGljIHN0YWdlIGZvciB0ZXN0aW5nIHRoZSBiZWhhdmlvciBvZiBHb29nbGUgVGVz
dCB3aGVuCisgIC8vIFJVTl9BTExfVEVTVFMoKSBpcyBjYWxsZWQgd2l0aG91dAorICAvLyB0ZXN0
aW5nOjpJbml0R29vZ2xlVGVzdCgpIGJlaW5nIGNhbGxlZCBmaXJzdC4KK30KKworaW50IG1haW4o
KSB7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdF90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlZDViNTNiNzFhZjJmNzk1NjBkNzE3MmFhNjdjYzc0MGJhNzA0MDEx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdF90ZXN0LmNjCisrKyAvZGV2L251
bGwKQEAgLTEsMTIzMCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KLS8v
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQot
Ly8KLS8vIFRlc3RzIGZvciBkZWF0aCB0ZXN0cy4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LWRl
YXRoLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2lu
dGVybmFsL2d0ZXN0LWZpbGVwYXRoLmg+Ci0KLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBbHdh
eXNGYWxzZTsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlOwotCi0jaWYgR1RF
U1RfSEFTX0RFQVRIX1RFU1QKLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLSNpbmNsdWRlIDxkaXJl
Y3QuaD4gICAgICAgICAgLy8gRm9yIGNoZGlyKCkuCi0jZWxzZQotI2luY2x1ZGUgPHVuaXN0ZC5o
PgotI2luY2x1ZGUgPHN5cy93YWl0Lmg+ICAgICAgICAvLyBGb3Igd2FpdHBpZC4KLSNpbmNsdWRl
IDxsaW1pdHM+ICAgICAgICAgICAgLy8gRm9yIHN0ZDo6bnVtZXJpY19saW1pdHMuCi0jZW5kaWYg
IC8vIEdURVNUX09TX1dJTkRPV1MKLQotI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHNp
Z25hbC5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGku
aD4KLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2Yg
R29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0
ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNv
bXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBh
Y2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29k
ZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3Qt
aW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLW5hbWVzcGFj
ZSBwb3NpeCA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OwotCi11c2luZyB0ZXN0aW5nOjpN
ZXNzYWdlOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVzdDsKLXVzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpEZWF0aFRlc3RGYWN0b3J5OwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OkZpbGVQYXRoOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldExhc3RFcnJub0Rlc2NyaXB0
aW9uOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbDsKLXVzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpQYXJzZU5hdHVyYWxOdW1iZXI7Ci11c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6U3RyaW5nOwotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwg
ewotCi0vLyBBIGhlbHBlciBjbGFzcyB3aG9zZSBvYmplY3RzIHJlcGxhY2UgdGhlIGRlYXRoIHRl
c3QgZmFjdG9yeSBmb3IgYQotLy8gc2luZ2xlIFVuaXRUZXN0IG9iamVjdCBkdXJpbmcgdGhlaXIg
bGlmZXRpbWVzLgotY2xhc3MgUmVwbGFjZURlYXRoVGVzdEZhY3RvcnkgewotIHB1YmxpYzoKLSAg
ZXhwbGljaXQgUmVwbGFjZURlYXRoVGVzdEZhY3RvcnkoRGVhdGhUZXN0RmFjdG9yeSogbmV3X2Zh
Y3RvcnkpCi0gICAgICA6IHVuaXRfdGVzdF9pbXBsXyhHZXRVbml0VGVzdEltcGwoKSkgewotICAg
IG9sZF9mYWN0b3J5XyA9IHVuaXRfdGVzdF9pbXBsXy0+ZGVhdGhfdGVzdF9mYWN0b3J5Xy5yZWxl
YXNlKCk7Ci0gICAgdW5pdF90ZXN0X2ltcGxfLT5kZWF0aF90ZXN0X2ZhY3RvcnlfLnJlc2V0KG5l
d19mYWN0b3J5KTsKLSAgfQotCi0gIH5SZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSgpIHsKLSAgICB1
bml0X3Rlc3RfaW1wbF8tPmRlYXRoX3Rlc3RfZmFjdG9yeV8ucmVsZWFzZSgpOwotICAgIHVuaXRf
dGVzdF9pbXBsXy0+ZGVhdGhfdGVzdF9mYWN0b3J5Xy5yZXNldChvbGRfZmFjdG9yeV8pOwotICB9
Ci0gcHJpdmF0ZToKLSAgLy8gUHJldmVudHMgY29weWluZyBSZXBsYWNlRGVhdGhUZXN0RmFjdG9y
eSBvYmplY3RzLgotICBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeShjb25zdCBSZXBsYWNlRGVhdGhU
ZXN0RmFjdG9yeSYpOwotICB2b2lkIG9wZXJhdG9yPShjb25zdCBSZXBsYWNlRGVhdGhUZXN0RmFj
dG9yeSYpOwotCi0gIFVuaXRUZXN0SW1wbCogdW5pdF90ZXN0X2ltcGxfOwotICBEZWF0aFRlc3RG
YWN0b3J5KiBvbGRfZmFjdG9yeV87Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0g
IC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLXZvaWQgRGllSW5zaWRlKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uKSB7Ci0gIGZwcmludGYoc3RkZXJyLCAiZGVhdGggaW5zaWRlICVzKCkuIiwgZnVuY3Rpb24p
OwotICBmZmx1c2goc3RkZXJyKTsKLSAgLy8gV2UgY2FsbCBfZXhpdCgpIGluc3RlYWQgb2YgZXhp
dCgpLCBhcyB0aGUgZm9ybWVyIGlzIGEgZGlyZWN0Ci0gIC8vIHN5c3RlbSBjYWxsIGFuZCB0aHVz
IHNhZmVyIGluIHRoZSBwcmVzZW5jZSBvZiB0aHJlYWRzLiAgZXhpdCgpCi0gIC8vIHdpbGwgaW52
b2tlIHVzZXItZGVmaW5lZCBleGl0LWhvb2tzLCB3aGljaCBtYXkgZG8gZGFuZ2Vyb3VzCi0gIC8v
IHRoaW5ncyB0aGF0IGNvbmZsaWN0IHdpdGggZGVhdGggdGVzdHMuCi0gIC8vCi0gIC8vIFNvbWUg
Y29tcGlsZXJzIGNhbiByZWNvZ25pemUgdGhhdCBfZXhpdCgpIG5ldmVyIHJldHVybnMgYW5kIGlz
c3VlIHRoZQotICAvLyAndW5yZWFjaGFibGUgY29kZScgd2FybmluZyBmb3IgY29kZSBmb2xsb3dp
bmcgdGhpcyBmdW5jdGlvbiwgdW5sZXNzCi0gIC8vIGZvb2xlZCBieSBhIGZha2UgY29uZGl0aW9u
LgotICBpZiAoQWx3YXlzVHJ1ZSgpKQotICAgIF9leGl0KDEpOwotfQotCi0vLyBUZXN0cyB0aGF0
IGRlYXRoIHRlc3RzIHdvcmsuCi0KLWNsYXNzIFRlc3RGb3JEZWF0aFRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICBUZXN0Rm9yRGVhdGhUZXN0KCkgOiBvcmlnaW5h
bF9kaXJfKEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkpIHt9Ci0KLSAgdmlydHVhbCB+VGVzdEZv
ckRlYXRoVGVzdCgpIHsKLSAgICBwb3NpeDo6Q2hEaXIob3JpZ2luYWxfZGlyXy5jX3N0cigpKTsK
LSAgfQotCi0gIC8vIEEgc3RhdGljIG1lbWJlciBmdW5jdGlvbiB0aGF0J3MgZXhwZWN0ZWQgdG8g
ZGllLgotICBzdGF0aWMgdm9pZCBTdGF0aWNNZW1iZXJGdW5jdGlvbigpIHsgRGllSW5zaWRlKCJT
dGF0aWNNZW1iZXJGdW5jdGlvbiIpOyB9Ci0KLSAgLy8gQSBtZXRob2Qgb2YgdGhlIHRlc3QgZml4
dHVyZSB0aGF0IG1heSBkaWUuCi0gIHZvaWQgTWVtYmVyRnVuY3Rpb24oKSB7Ci0gICAgaWYgKHNo
b3VsZF9kaWVfKQotICAgICAgRGllSW5zaWRlKCJNZW1iZXJGdW5jdGlvbiIpOwotICB9Ci0KLSAg
Ly8gVHJ1ZSBpZmYgTWVtYmVyRnVuY3Rpb24oKSBzaG91bGQgZGllLgotICBib29sIHNob3VsZF9k
aWVfOwotICBjb25zdCBGaWxlUGF0aCBvcmlnaW5hbF9kaXJfOwotfTsKLQotLy8gQSBjbGFzcyB3
aXRoIGEgbWVtYmVyIGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KLWNsYXNzIE1heURpZSB7Ci0gcHVi
bGljOgotICBleHBsaWNpdCBNYXlEaWUoYm9vbCBzaG91bGRfZGllKSA6IHNob3VsZF9kaWVfKHNo
b3VsZF9kaWUpIHt9Ci0KLSAgLy8gQSBtZW1iZXIgZnVuY3Rpb24gdGhhdCBtYXkgZGllLgotICB2
b2lkIE1lbWJlckZ1bmN0aW9uKCkgY29uc3QgewotICAgIGlmIChzaG91bGRfZGllXykKLSAgICAg
IERpZUluc2lkZSgiTWF5RGllOjpNZW1iZXJGdW5jdGlvbiIpOwotICB9Ci0KLSBwcml2YXRlOgot
ICAvLyBUcnVlIGlmZiBNZW1iZXJGdW5jdGlvbigpIHNob3VsZCBkaWUuCi0gIGJvb2wgc2hvdWxk
X2RpZV87Ci19OwotCi0vLyBBIGdsb2JhbCBmdW5jdGlvbiB0aGF0J3MgZXhwZWN0ZWQgdG8gZGll
Lgotdm9pZCBHbG9iYWxGdW5jdGlvbigpIHsgRGllSW5zaWRlKCJHbG9iYWxGdW5jdGlvbiIpOyB9
Ci0KLS8vIEEgbm9uLXZvaWQgZnVuY3Rpb24gdGhhdCdzIGV4cGVjdGVkIHRvIGRpZS4KLWludCBO
b25Wb2lkRnVuY3Rpb24oKSB7Ci0gIERpZUluc2lkZSgiTm9uVm9pZEZ1bmN0aW9uIik7Ci0gIHJl
dHVybiAxOwotfQotCi0vLyBBIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KLXZvaWQgRGll
SWYoYm9vbCBzaG91bGRfZGllKSB7Ci0gIGlmIChzaG91bGRfZGllKQotICAgIERpZUluc2lkZSgi
RGllSWYiKTsKLX0KLQotLy8gQSBiaW5hcnkgZnVuY3Rpb24gdGhhdCBtYXkgZGllLgotYm9vbCBE
aWVJZkxlc3NUaGFuKGludCB4LCBpbnQgeSkgewotICBpZiAoeCA8IHkpIHsKLSAgICBEaWVJbnNp
ZGUoIkRpZUlmTGVzc1RoYW4iKTsKLSAgfQotICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBBU1NFUlRfREVBVEggY2FuIGJlIHVzZWQgb3V0c2lkZSBhIFRFU1QsIFRFU1RfRiwgb3Ig
dGVzdCBmaXh0dXJlLgotdm9pZCBEZWF0aFRlc3RTdWJyb3V0aW5lKCkgewotICBFWFBFQ1RfREVB
VEgoR2xvYmFsRnVuY3Rpb24oKSwgImRlYXRoLipHbG9iYWxGdW5jdGlvbiIpOwotICBBU1NFUlRf
REVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgImRlYXRoLipHbG9iYWxGdW5jdGlvbiIpOwotfQotCi0v
LyBEZWF0aCBpbiBkYmcsIG5vdCBvcHQuCi1pbnQgRGllSW5EZWJ1Z0Vsc2UxMihpbnQqIHNpZGVl
ZmZlY3QpIHsKLSAgaWYgKHNpZGVlZmZlY3QpICpzaWRlZWZmZWN0ID0gMTI7Ci0jaWZuZGVmIE5E
RUJVRwotICBEaWVJbnNpZGUoIkRpZUluRGVidWdFbHNlMTIiKTsKLSNlbmRpZiAgLy8gTkRFQlVH
Ci0gIHJldHVybiAxMjsKLX0KLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLQotLy8gVGVzdHMgdGhl
IEV4aXRlZFdpdGhDb2RlIHByZWRpY2F0ZS4KLVRFU1QoRXhpdFN0YXR1c1ByZWRpY2F0ZVRlc3Qs
IEV4aXRlZFdpdGhDb2RlKSB7Ci0gIC8vIE9uIFdpbmRvd3MsIHRoZSBwcm9jZXNzJ3MgZXhpdCBj
b2RlIGlzIHRoZSBzYW1lIGFzIGl0cyBleGl0IHN0YXR1cywKLSAgLy8gc28gdGhlIHByZWRpY2F0
ZSBqdXN0IGNvbXBhcmVzIHRoZSBpdHMgaW5wdXQgd2l0aCBpdHMgcGFyYW1ldGVyLgotICBFWFBF
Q1RfVFJVRSh0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgwKSgwKSk7Ci0gIEVYUEVDVF9UUlVFKHRl
c3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEpKDEpKTsKLSAgRVhQRUNUX1RSVUUodGVzdGluZzo6RXhp
dGVkV2l0aENvZGUoNDIpKDQyKSk7Ci0gIEVYUEVDVF9GQUxTRSh0ZXN0aW5nOjpFeGl0ZWRXaXRo
Q29kZSgwKSgxKSk7Ci0gIEVYUEVDVF9GQUxTRSh0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSgw
KSk7Ci19Ci0KLSNlbHNlCi0KLS8vIFJldHVybnMgdGhlIGV4aXQgc3RhdHVzIG9mIGEgcHJvY2Vz
cyB0aGF0IGNhbGxzIF9leGl0KDIpIHdpdGggYQotLy8gZ2l2ZW4gZXhpdCBjb2RlLiAgVGhpcyBp
cyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgdGhlCi0vLyBFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCB0
ZXN0IHN1aXRlLgotc3RhdGljIGludCBOb3JtYWxFeGl0U3RhdHVzKGludCBleGl0X2NvZGUpIHsK
LSAgcGlkX3QgY2hpbGRfcGlkID0gZm9yaygpOwotICBpZiAoY2hpbGRfcGlkID09IDApIHsKLSAg
ICBfZXhpdChleGl0X2NvZGUpOwotICB9Ci0gIGludCBzdGF0dXM7Ci0gIHdhaXRwaWQoY2hpbGRf
cGlkLCAmc3RhdHVzLCAwKTsKLSAgcmV0dXJuIHN0YXR1czsKLX0KLQotLy8gUmV0dXJucyB0aGUg
ZXhpdCBzdGF0dXMgb2YgYSBwcm9jZXNzIHRoYXQgcmFpc2VzIGEgZ2l2ZW4gc2lnbmFsLgotLy8g
SWYgdGhlIHNpZ25hbCBkb2VzIG5vdCBjYXVzZSB0aGUgcHJvY2VzcyB0byBkaWUsIHRoZW4gaXQg
cmV0dXJucwotLy8gaW5zdGVhZCB0aGUgZXhpdCBzdGF0dXMgb2YgYSBwcm9jZXNzIHRoYXQgZXhp
dHMgbm9ybWFsbHkgd2l0aCBleGl0Ci0vLyBjb2RlIDEuICBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0
aW9uIGZvciB0aGUgRXhpdFN0YXR1c1ByZWRpY2F0ZVRlc3QKLS8vIHRlc3Qgc3VpdGUuCi1zdGF0
aWMgaW50IEtpbGxlZEV4aXRTdGF0dXMoaW50IHNpZ251bSkgewotICBwaWRfdCBjaGlsZF9waWQg
PSBmb3JrKCk7Ci0gIGlmIChjaGlsZF9waWQgPT0gMCkgewotICAgIHJhaXNlKHNpZ251bSk7Ci0g
ICAgX2V4aXQoMSk7Ci0gIH0KLSAgaW50IHN0YXR1czsKLSAgd2FpdHBpZChjaGlsZF9waWQsICZz
dGF0dXMsIDApOwotICByZXR1cm4gc3RhdHVzOwotfQotCi0vLyBUZXN0cyB0aGUgRXhpdGVkV2l0
aENvZGUgcHJlZGljYXRlLgotVEVTVChFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCwgRXhpdGVkV2l0
aENvZGUpIHsKLSAgY29uc3QgaW50IHN0YXR1czAgID0gTm9ybWFsRXhpdFN0YXR1cygwKTsKLSAg
Y29uc3QgaW50IHN0YXR1czEgID0gTm9ybWFsRXhpdFN0YXR1cygxKTsKLSAgY29uc3QgaW50IHN0
YXR1czQyID0gTm9ybWFsRXhpdFN0YXR1cyg0Mik7Ci0gIGNvbnN0IHRlc3Rpbmc6OkV4aXRlZFdp
dGhDb2RlIHByZWQwKDApOwotICBjb25zdCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSBwcmVkMSgx
KTsKLSAgY29uc3QgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUgcHJlZDQyKDQyKTsKLSAgRVhQRUNU
X1BSRUQxKHByZWQwLCAgc3RhdHVzMCk7Ci0gIEVYUEVDVF9QUkVEMShwcmVkMSwgIHN0YXR1czEp
OwotICBFWFBFQ1RfUFJFRDEocHJlZDQyLCBzdGF0dXM0Mik7Ci0gIEVYUEVDVF9GQUxTRShwcmVk
MChzdGF0dXMxKSk7Ci0gIEVYUEVDVF9GQUxTRShwcmVkNDIoc3RhdHVzMCkpOwotICBFWFBFQ1Rf
RkFMU0UocHJlZDEoc3RhdHVzNDIpKTsKLX0KLQotLy8gVGVzdHMgdGhlIEtpbGxlZEJ5U2lnbmFs
IHByZWRpY2F0ZS4KLVRFU1QoRXhpdFN0YXR1c1ByZWRpY2F0ZVRlc3QsIEtpbGxlZEJ5U2lnbmFs
KSB7Ci0gIGNvbnN0IGludCBzdGF0dXNfc2VndiA9IEtpbGxlZEV4aXRTdGF0dXMoU0lHU0VHVik7
Ci0gIGNvbnN0IGludCBzdGF0dXNfa2lsbCA9IEtpbGxlZEV4aXRTdGF0dXMoU0lHS0lMTCk7Ci0g
IGNvbnN0IHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsIHByZWRfc2VndihTSUdTRUdWKTsKLSAgY29u
c3QgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwgcHJlZF9raWxsKFNJR0tJTEwpOwotICBFWFBFQ1Rf
UFJFRDEocHJlZF9zZWd2LCBzdGF0dXNfc2Vndik7Ci0gIEVYUEVDVF9QUkVEMShwcmVkX2tpbGws
IHN0YXR1c19raWxsKTsKLSAgRVhQRUNUX0ZBTFNFKHByZWRfc2VndihzdGF0dXNfa2lsbCkpOwot
ICBFWFBFQ1RfRkFMU0UocHJlZF9raWxsKHN0YXR1c19zZWd2KSk7Ci19Ci0KLSNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUwotCi0vLyBUZXN0cyB0aGF0IHRoZSBkZWF0aCB0ZXN0IG1hY3JvcyBl
eHBhbmQgdG8gY29kZSB3aGljaCBtYXkgb3IgbWF5IG5vdAotLy8gYmUgZm9sbG93ZWQgYnkgb3Bl
cmF0b3I8PCwgYW5kIHRoYXQgaW4gZWl0aGVyIGNhc2UgdGhlIGNvbXBsZXRlIHRleHQKLS8vIGNv
bXByaXNlcyBvbmx5IGEgc2luZ2xlIEMrKyBzdGF0ZW1lbnQuCi1URVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgU2luZ2xlU3RhdGVtZW50KSB7Ci0gIGlmIChBbHdheXNGYWxzZSgpKQotICAgIC8vIFRo
aXMgd291bGQgZmFpbCBpZiBleGVjdXRlZDsgdGhpcyBpcyBhIGNvbXBpbGF0aW9uIHRlc3Qgb25s
eQotICAgIEFTU0VSVF9ERUFUSChyZXR1cm4sICIiKTsKLQotICBpZiAoQWx3YXlzVHJ1ZSgpKQot
ICAgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOwotICBlbHNlCi0gICAgLy8gVGhpcyBlbXB0
eSAiZWxzZSIgYnJhbmNoIGlzIG1lYW50IHRvIGVuc3VyZSB0aGF0IEVYUEVDVF9ERUFUSAotICAg
IC8vIGRvZXNuJ3QgZXhwYW5kIGludG8gYW4gImlmIiBzdGF0ZW1lbnQgd2l0aG91dCBhbiAiZWxz
ZSIKLSAgICA7Ci0KLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgQVNTRVJUX0RFQVRIKHJldHVy
biwgIiIpIDw8ICJkaWQgbm90IGRpZSI7Ci0KLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgOwot
ICBlbHNlCi0gICAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgMSA8PCAyIDw8IDM7Ci19
Ci0KLXZvaWQgRGllV2l0aEVtYmVkZGVkTnVsKCkgewotICBmcHJpbnRmKHN0ZGVyciwgIkhlbGxv
JWNteSBudWxsIHdvcmxkLlxuIiwgJ1wwJyk7Ci0gIGZmbHVzaChzdGRlcnIpOwotICBfZXhpdCgx
KTsKLX0KLQotI2lmIEdURVNUX1VTRVNfUENSRQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEgg
YW5kIEFTU0VSVF9ERUFUSCB3b3JrIHdoZW4gdGhlIGVycm9yCi0vLyBtZXNzYWdlIGhhcyBhIE5V
TCBjaGFyYWN0ZXIgaW4gaXQuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRW1iZWRkZWROdWxJ
bk1lc3NhZ2UpIHsKLSAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IDxyZWdleC5oPiBkb2Vzbid0
IHN1cHBvcnQgbWF0Y2hpbmcgc3RyaW5ncwotICAvLyB3aXRoIGVtYmVkZGVkIE5VTCBjaGFyYWN0
ZXJzIC0gZmluZCBhIHdheSB0byB3b3JrYXJvdW5kIGl0LgotICBFWFBFQ1RfREVBVEgoRGllV2l0
aEVtYmVkZGVkTnVsKCksICJteSBudWxsIHdvcmxkIik7Ci0gIEFTU0VSVF9ERUFUSChEaWVXaXRo
RW1iZWRkZWROdWwoKSwgIm15IG51bGwgd29ybGQiKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfVVNF
U19QQ1JFCi0KLS8vIFRlc3RzIHRoYXQgZGVhdGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUg
d2hpY2ggaW50ZXJhY3RzIHdlbGwgd2l0aCBzd2l0Y2gKLS8vIHN0YXRlbWVudHMuCi1URVNUX0Yo
VGVzdEZvckRlYXRoVGVzdCwgU3dpdGNoU3RhdGVtZW50KSB7Ci0vLyBNaWNyb3NvZnQgY29tcGls
ZXIgdXN1YWxseSBjb21wbGFpbnMgYWJvdXQgc3dpdGNoIHN0YXRlbWVudHMgd2l0aG91dAotLy8g
Y2FzZSBsYWJlbHMuIFdlIHN1cHByZXNzIHRoYXQgd2FybmluZyBmb3IgdGhpcyB0ZXN0LgotI2lm
ZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNh
YmxlOiA0MDY1KQotI2VuZGlmICAvLyBfTVNDX1ZFUgotCi0gIHN3aXRjaCAoMCkKLSAgICBkZWZh
dWx0OgotICAgICAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgImV4aXQgaW4gZGVmYXVs
dCBzd2l0Y2ggaGFuZGxlciI7Ci0KLSAgc3dpdGNoICgwKQotICAgIGNhc2UgMDoKLSAgICAgIEVY
UEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8ICJleGl0IGluIHN3aXRjaCBjYXNlIjsKLQotI2lm
ZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmICAvLyBfTVNDX1ZFUgot
fQotCi0vLyBUZXN0cyB0aGF0IGEgc3RhdGljIG1lbWJlciBmdW5jdGlvbiBjYW4gYmUgdXNlZCBp
biBhICJmYXN0IiBzdHlsZQotLy8gZGVhdGggdGVzdC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0
LCBTdGF0aWNNZW1iZXJGdW5jdGlvbkZhc3RTdHlsZSkgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFH
KGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOwotICBBU1NFUlRfREVBVEgoU3RhdGljTWVtYmVy
RnVuY3Rpb24oKSwgImRlYXRoLipTdGF0aWNNZW1iZXIiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBh
IG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNhbiBiZSB1c2VkIGluIGEgImZhc3QiCi0vLyBz
dHlsZSBkZWF0aCB0ZXN0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE1lbWJlckZ1bmN0aW9u
RmFzdFN0eWxlKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAi
ZmFzdCI7Ci0gIHNob3VsZF9kaWVfID0gdHJ1ZTsKLSAgRVhQRUNUX0RFQVRIKE1lbWJlckZ1bmN0
aW9uKCksICJpbnNpZGUuKk1lbWJlckZ1bmN0aW9uIik7Ci19Ci0KLXZvaWQgQ2hhbmdlVG9Sb290
RGlyKCkgeyBwb3NpeDo6Q2hEaXIoR1RFU1RfUEFUSF9TRVBfKTsgfQotCi0vLyBUZXN0cyB0aGF0
IGRlYXRoIHRlc3RzIHdvcmsgZXZlbiBpZiB0aGUgY3VycmVudCBkaXJlY3RvcnkgaGFzIGJlZW4K
LS8vIGNoYW5nZWQuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRmFzdERlYXRoVGVzdEluQ2hh
bmdlZERpcikgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZh
c3QiOwotCi0gIENoYW5nZVRvUm9vdERpcigpOwotICBFWFBFQ1RfRVhJVChfZXhpdCgxKSwgdGVz
dGluZzo6RXhpdGVkV2l0aENvZGUoMSksICIiKTsKLQotICBDaGFuZ2VUb1Jvb3REaXIoKTsKLSAg
QVNTRVJUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci19Ci0KLS8vIFJlcGVhdHMgYSByZXByZXNlbnRh
dGl2ZSBzYW1wbGUgb2YgZGVhdGggdGVzdHMgaW4gdGhlICJ0aHJlYWRzYWZlIiBzdHlsZToKLQot
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFN0YXRpY01lbWJlckZ1bmN0aW9uVGhyZWFkc2FmZVN0
eWxlKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFk
c2FmZSI7Ci0gIEFTU0VSVF9ERUFUSChTdGF0aWNNZW1iZXJGdW5jdGlvbigpLCAiZGVhdGguKlN0
YXRpY01lbWJlciIpOwotfQotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgTWVtYmVyRnVuY3Rp
b25UaHJlYWRzYWZlU3R5bGUpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0
eWxlKSA9ICJ0aHJlYWRzYWZlIjsKLSAgc2hvdWxkX2RpZV8gPSB0cnVlOwotICBFWFBFQ1RfREVB
VEgoTWVtYmVyRnVuY3Rpb24oKSwgImluc2lkZS4qTWVtYmVyRnVuY3Rpb24iKTsKLX0KLQotVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRocmVhZHNhZmVEZWF0aFRlc3RJbkxvb3ApIHsKLSAgdGVz
dGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKLQotICBm
b3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkKLSAgICBFWFBFQ1RfRVhJVChfZXhpdChpKSwgdGVz
dGluZzo6RXhpdGVkV2l0aENvZGUoaSksICIiKSA8PCAiOiBpID0gIiA8PCBpOwotfQotCi1URVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgVGhyZWFkc2FmZURlYXRoVGVzdEluQ2hhbmdlZERpcikgewot
ICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOwot
Ci0gIENoYW5nZVRvUm9vdERpcigpOwotICBFWFBFQ1RfRVhJVChfZXhpdCgxKSwgdGVzdGluZzo6
RXhpdGVkV2l0aENvZGUoMSksICIiKTsKLQotICBDaGFuZ2VUb1Jvb3REaXIoKTsKLSAgQVNTRVJU
X0RFQVRIKF9leGl0KDEpLCAiIik7Ci19Ci0KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNaXhl
ZFN0eWxlcykgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRo
cmVhZHNhZmUiOwotICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKTsKLSAgdGVzdGluZzo6R1RF
U1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKLSAgRVhQRUNUX0RFQVRIKF9leGl0
KDEpLCAiIik7Ci19Ci0KLW5hbWVzcGFjZSB7Ci0KLWJvb2wgcHRocmVhZF9mbGFnOwotCi12b2lk
IFNldFB0aHJlYWRGbGFnKCkgewotICBwdGhyZWFkX2ZsYWcgPSB0cnVlOwotfQotCi19ICAvLyBu
YW1lc3BhY2UKLQotI2lmIEdURVNUX0hBU19DTE9ORSAmJiBHVEVTVF9IQVNfUFRIUkVBRAotCi1U
RVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRG9lc05vdEV4ZWN1dGVBdGZvcmtIb29rcykgewotICBp
ZiAoIXRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yaykpIHsKLSAgICB0ZXN0
aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOwotICAgIHB0
aHJlYWRfZmxhZyA9IGZhbHNlOwotICAgIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0Zm9yaygmU2V0
UHRocmVhZEZsYWcsIE5VTEwsIE5VTEwpKTsKLSAgICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIi
KTsKLSAgICBBU1NFUlRfRkFMU0UocHRocmVhZF9mbGFnKTsKLSAgfQotfQotCi0jZW5kaWYgIC8v
IEdURVNUX0hBU19DTE9ORSAmJiBHVEVTVF9IQVNfUFRIUkVBRAotCi0vLyBUZXN0cyB0aGF0IGEg
bWV0aG9kIG9mIGFub3RoZXIgY2xhc3MgY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgotVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIE1ldGhvZE9mQW5vdGhlckNsYXNzKSB7Ci0gIGNvbnN0IE1h
eURpZSB4KHRydWUpOwotICBBU1NFUlRfREVBVEgoeC5NZW1iZXJGdW5jdGlvbigpLCAiTWF5RGll
XFw6XFw6TWVtYmVyRnVuY3Rpb24iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIGdsb2JhbCBmdW5j
dGlvbiBjYW4gYmUgdXNlZCBpbiBhIGRlYXRoIHRlc3QuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVz
dCwgR2xvYmFsRnVuY3Rpb24pIHsKLSAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksICJH
bG9iYWxGdW5jdGlvbiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IGFueSB2YWx1ZSBjb252ZXJ0aWJs
ZSB0byBhbiBSRSB3b3JrcyBhcyBhIHNlY29uZAotLy8gYXJndW1lbnQgdG8gRVhQRUNUX0RFQVRI
LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFjY2VwdHNBbnl0aGluZ0NvbnZlcnRpYmxlVG9S
RSkgewotICBzdGF0aWMgY29uc3QgY2hhciByZWdleF9jX3N0cltdID0gIkdsb2JhbEZ1bmN0aW9u
IjsKLSAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksIHJlZ2V4X2Nfc3RyKTsKLQotICBj
b25zdCB0ZXN0aW5nOjppbnRlcm5hbDo6UkUgcmVnZXgocmVnZXhfY19zdHIpOwotICBFWFBFQ1Rf
REVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXgpOwotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9T
VFJJTkcKLSAgY29uc3Qgc3RyaW5nIHJlZ2V4X3N0cihyZWdleF9jX3N0cik7Ci0gIEVYUEVDVF9E
RUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleF9zdHIpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNf
R0xPQkFMX1NUUklORwotCi0gIGNvbnN0IDo6c3RkOjpzdHJpbmcgcmVnZXhfc3RkX3N0cihyZWdl
eF9jX3N0cik7Ci0gIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleF9zdGRfc3Ry
KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIG5vbi12b2lkIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGlu
IGEgZGVhdGggdGVzdC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBOb25Wb2lkRnVuY3Rpb24p
IHsKLSAgQVNTRVJUX0RFQVRIKE5vblZvaWRGdW5jdGlvbigpLCAiTm9uVm9pZEZ1bmN0aW9uIik7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgZnVuY3Rpb25zIHRoYXQgdGFrZSBwYXJhbWV0ZXIocykgY2Fu
IGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEZ1bmN0
aW9uV2l0aFBhcmFtZXRlcikgewotICBFWFBFQ1RfREVBVEgoRGllSWYodHJ1ZSksICJEaWVJZlxc
KFxcKSIpOwotICBFWFBFQ1RfREVBVEgoRGllSWZMZXNzVGhhbigyLCAzKSwgIkRpZUlmTGVzc1Ro
YW4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVBVEggY2FuIGJlIHVzZWQgb3V0c2lk
ZSBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdCBmaXh0dXJlLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIE91dHNpZGVGaXh0dXJlKSB7Ci0gIERlYXRoVGVzdFN1YnJvdXRpbmUoKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyBjYW4gYmUgZG9uZSBpbnNpZGUgYSBsb29wLgotVEVTVF9G
KFRlc3RGb3JEZWF0aFRlc3QsIEluc2lkZUxvb3ApIHsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCA1
OyBpKyspIHsKLSAgICBFWFBFQ1RfREVBVEgoRGllSWZMZXNzVGhhbigtMSwgaSksICJEaWVJZkxl
c3NUaGFuIikgPDwgIndoZXJlIGkgPT0gIiA8PCBpOwotICB9Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
YSBjb21wb3VuZCBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgotVEVTVF9G
KFRlc3RGb3JEZWF0aFRlc3QsIENvbXBvdW5kU3RhdGVtZW50KSB7Ci0gIEVYUEVDVF9ERUFUSCh7
ICAvLyBOT0xJTlQKLSAgICBjb25zdCBpbnQgeCA9IDI7Ci0gICAgY29uc3QgaW50IHkgPSB4ICsg
MTsKLSAgICBEaWVJZkxlc3NUaGFuKHgsIHkpOwotICB9LAotICAiRGllSWZMZXNzVGhhbiIpOwot
fQotCi0vLyBUZXN0cyB0aGF0IGNvZGUgdGhhdCBkb2Vzbid0IGRpZSBjYXVzZXMgYSBkZWF0aCB0
ZXN0IHRvIGZhaWwuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRG9lc05vdERpZSkgewotICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgoRGllSWYoZmFsc2UpLCAiRGllSWYi
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBkaWUiKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBhIGRlYXRoIHRlc3QgZmFpbHMgd2hlbiB0aGUgZXJyb3IgbWVzc2FnZSBpc24n
dCBleHBlY3RlZC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFcnJvck1lc3NhZ2VNaXNtYXRj
aCkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1Rf
REVBVEgoRGllSWYodHJ1ZSksICJEaWVJZkxlc3NUaGFuIikgPDwgIkVuZCBvZiBkZWF0aCB0ZXN0
IG1lc3NhZ2UuIjsKLSAgfSwgImRpZWQgYnV0IG5vdCB3aXRoIGV4cGVjdGVkIGVycm9yIik7Ci19
Ci0KLS8vIE9uIGV4aXQsICphYm9ydGVkIHdpbGwgYmUgdHJ1ZSBpZmYgdGhlIEVYUEVDVF9ERUFU
SCgpIHN0YXRlbWVudAotLy8gYWJvcnRlZCB0aGUgZnVuY3Rpb24uCi12b2lkIEV4cGVjdERlYXRo
VGVzdEhlbHBlcihib29sKiBhYm9ydGVkKSB7Ci0gICphYm9ydGVkID0gdHJ1ZTsKLSAgRVhQRUNU
X0RFQVRIKERpZUlmKGZhbHNlKSwgIkRpZUlmIik7ICAvLyBUaGlzIGFzc2VydGlvbiBzaG91bGQg
ZmFpbC4KLSAgKmFib3J0ZWQgPSBmYWxzZTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVB
VEggZG9lc24ndCBhYm9ydCB0aGUgdGVzdCBvbiBmYWlsdXJlLgotVEVTVF9GKFRlc3RGb3JEZWF0
aFRlc3QsIEVYUEVDVF9ERUFUSCkgewotICBib29sIGFib3J0ZWQgPSB0cnVlOwotICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShFeHBlY3REZWF0aFRlc3RIZWxwZXIoJmFib3J0ZWQpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGRpZSIpOwotICBFWFBFQ1RfRkFMU0UoYWJv
cnRlZCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQVRIIGRvZXMgYWJvcnQgdGhlIHRl
c3Qgb24gZmFpbHVyZS4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBU1NFUlRfREVBVEgpIHsK
LSAgc3RhdGljIGJvb2wgYWJvcnRlZDsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9M
SU5UCi0gICAgYWJvcnRlZCA9IHRydWU7Ci0gICAgQVNTRVJUX0RFQVRIKERpZUlmKGZhbHNlKSwg
IkRpZUlmIik7ICAvLyBUaGlzIGFzc2VydGlvbiBzaG91bGQgZmFpbC4KLSAgICBhYm9ydGVkID0g
ZmFsc2U7Ci0gIH0sICJmYWlsZWQgdG8gZGllIik7Ci0gIEVYUEVDVF9UUlVFKGFib3J0ZWQpOwot
fQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSCBldmFsdWF0ZXMgdGhlIGFyZ3VtZW50cyBl
eGFjdGx5IG9uY2UuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU2luZ2xlRXZhbHVhdGlvbikg
ewotICBpbnQgeCA9IDM7Ci0gIEVYUEVDVF9ERUFUSChEaWVJZigoKyt4KSA9PSA0KSwgIkRpZUlm
Iik7Ci0KLSAgY29uc3QgY2hhciogcmVnZXggPSAiRGllSWYiOwotICBjb25zdCBjaGFyKiByZWdl
eF9zYXZlID0gcmVnZXg7Ci0gIEVYUEVDVF9ERUFUSChEaWVJZkxlc3NUaGFuKDMsIDQpLCByZWdl
eCsrKTsKLSAgRVhQRUNUX0VRKHJlZ2V4X3NhdmUgKyAxLCByZWdleCk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgcnVuLWF3YXkgZGVhdGggdGVzdHMgYXJlIHJlcG9ydGVkIGFzIGZhaWx1cmVzLgotVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIFJ1bmF3YXkpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoRVhQRUNUX0RFQVRIKHN0YXRpY19jYXN0PHZvaWQ+KDApLCAiRm9vIiksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZGllLiIpOwotCi0gIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEFTU0VSVF9ERUFUSChyZXR1cm4sICJCYXIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ImlsbGVnYWwgcmV0dXJuIGluIHRlc3Qgc3RhdGVtZW50LiIpOwotfQotCi0KLS8vIFRlc3RzIHRo
YXQgRVhQRUNUX0RFQlVHX0RFQVRIIHdvcmtzIGFzIGV4cGVjdGVkLAotLy8gdGhhdCBpcywgaW4g
ZGVidWcgbW9kZSwgaXQ6Ci0vLyAxLiBBc3NlcnRzIG9uIGRlYXRoLgotLy8gMi4gSGFzIG5vIHNp
ZGUgZWZmZWN0LgotLy8KLS8vIEFuZCBpbiBvcHQgbW9kZSwgaXQ6Ci0vLyAxLiAgSGFzIHNpZGUg
ZWZmZWN0cyBidXQgZG9lcyBub3QgYXNzZXJ0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRl
c3RFeHBlY3REZWJ1Z0RlYXRoKSB7Ci0gIGludCBzaWRlZWZmZWN0ID0gMDsKLQotICBFWFBFQ1Rf
REVCVUdfREVBVEgoRGllSW5EZWJ1Z0Vsc2UxMigmc2lkZWVmZmVjdCksCi0gICAgICAgICAgICAg
ICAgICAgICAiZGVhdGguKkRpZUluRGVidWdFbHNlMTIiKTsKLQotI2lmZGVmIE5ERUJVRwotICAv
LyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBvY2N1cnMgaW4gb3B0IG1vZGUgKHNpZGVlZmZl
Y3QpLgotICBFWFBFQ1RfRVEoMTIsIHNpZGVlZmZlY3QpOwotI2Vsc2UKLSAgLy8gQ2hlY2tzIHRo
YXQgdGhlIGFzc2lnbm1lbnQgZG9lcyBub3Qgb2NjdXIgaW4gZGJnIG1vZGUgKG5vIHNpZGVlZmZl
Y3QpLgotICBFWFBFQ1RfRVEoMCwgc2lkZWVmZmVjdCk7Ci0jZW5kaWYKLX0KLQotLy8gVGVzdHMg
dGhhdCBBU1NFUlRfREVCVUdfREVBVEggd29ya3MgYXMgZXhwZWN0ZWQKLS8vIEluIGRlYnVnIG1v
ZGU6Ci0vLyAxLiBBc3NlcnRzIG9uIGRlYnVnIGRlYXRoLgotLy8gMi4gSGFzIG5vIHNpZGUgZWZm
ZWN0LgotLy8KLS8vIEluIG9wdCBtb2RlOgotLy8gMS4gSGFzIHNpZGUgZWZmZWN0cyBhbmQgcmV0
dXJucyB0aGUgZXhwZWN0ZWQgdmFsdWUgKDEyKS4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBU
ZXN0QXNzZXJ0RGVidWdEZWF0aCkgewotICBpbnQgc2lkZWVmZmVjdCA9IDA7Ci0KLSAgQVNTRVJU
X0RFQlVHX0RFQVRIKHsgIC8vIE5PTElOVAotICAgIC8vIFRlc3RzIHRoYXQgdGhlIHJldHVybiB2
YWx1ZSBpcyAxMiBpbiBvcHQgbW9kZS4KLSAgICBFWFBFQ1RfRVEoMTIsIERpZUluRGVidWdFbHNl
MTIoJnNpZGVlZmZlY3QpKTsKLSAgICAvLyBUZXN0cyB0aGF0IHRoZSBzaWRlIGVmZmVjdCBvY2N1
cnJlZCBpbiBvcHQgbW9kZS4KLSAgICBFWFBFQ1RfRVEoMTIsIHNpZGVlZmZlY3QpOwotICB9LCAi
ZGVhdGguKkRpZUluRGVidWdFbHNlMTIiKTsKLQotI2lmZGVmIE5ERUJVRwotICAvLyBDaGVja3Mg
dGhhdCB0aGUgYXNzaWdubWVudCBvY2N1cnMgaW4gb3B0IG1vZGUgKHNpZGVlZmZlY3QpLgotICBF
WFBFQ1RfRVEoMTIsIHNpZGVlZmZlY3QpOwotI2Vsc2UKLSAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFz
c2lnbm1lbnQgZG9lcyBub3Qgb2NjdXIgaW4gZGJnIG1vZGUgKG5vIHNpZGVlZmZlY3QpLgotICBF
WFBFQ1RfRVEoMCwgc2lkZWVmZmVjdCk7Ci0jZW5kaWYKLX0KLQotI2lmbmRlZiBOREVCVUcKLQot
dm9pZCBFeHBlY3REZWJ1Z0RlYXRoSGVscGVyKGJvb2wqIGFib3J0ZWQpIHsKLSAgKmFib3J0ZWQg
PSB0cnVlOwotICBFWFBFQ1RfREVCVUdfREVBVEgocmV0dXJuLCAiIikgPDwgIlRoaXMgaXMgZXhw
ZWN0ZWQgdG8gZmFpbC4iOwotICAqYWJvcnRlZCA9IGZhbHNlOwotfQotCi0jaWYgR1RFU1RfT1Nf
V0lORE9XUwotVEVTVChQb3BVcERlYXRoVGVzdCwgRG9lc05vdFNob3dQb3BVcE9uQWJvcnQpIHsK
LSAgcHJpbnRmKCJUaGlzIHRlc3Qgc2hvdWxkIGJlIGNvbnNpZGVyZWQgZmFpbGluZyBpZiBpdCBz
aG93cyAiCi0gICAgICAgICAiYW55IHBvcC11cCBkaWFsb2dzLlxuIik7Ci0gIGZmbHVzaChzdGRv
dXQpOwotCi0gIEVYUEVDVF9ERUFUSCh7Ci0gICAgdGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9l
eGNlcHRpb25zKSA9IGZhbHNlOwotICAgIGFib3J0KCk7Ci0gIH0sICIiKTsKLX0KLQotVEVTVChQ
b3BVcERlYXRoVGVzdCwgRG9lc05vdFNob3dQb3BVcE9uVGhyb3cpIHsKLSAgcHJpbnRmKCJUaGlz
IHRlc3Qgc2hvdWxkIGJlIGNvbnNpZGVyZWQgZmFpbGluZyBpZiBpdCBzaG93cyAiCi0gICAgICAg
ICAiYW55IHBvcC11cCBkaWFsb2dzLlxuIik7Ci0gIGZmbHVzaChzdGRvdXQpOwotCi0gIEVYUEVD
VF9ERUFUSCh7Ci0gICAgdGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA9IGZh
bHNlOwotICAgIHRocm93IDE7Ci0gIH0sICIiKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lO
RE9XUwotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUJVR19ERUFUSCBpbiBkZWJ1ZyBtb2RlIGRv
ZXMgbm90IGFib3J0Ci0vLyB0aGUgZnVuY3Rpb24uCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
RXhwZWN0RGVidWdEZWF0aERvZXNOb3RBYm9ydCkgewotICBib29sIGFib3J0ZWQgPSB0cnVlOwot
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFeHBlY3REZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVk
KSwgIiIpOwotICBFWFBFQ1RfRkFMU0UoYWJvcnRlZCk7Ci19Ci0KLXZvaWQgQXNzZXJ0RGVidWdE
ZWF0aEhlbHBlcihib29sKiBhYm9ydGVkKSB7Ci0gICphYm9ydGVkID0gdHJ1ZTsKLSAgQVNTRVJU
X0RFQlVHX0RFQVRIKHJldHVybiwgIiIpIDw8ICJUaGlzIGlzIGV4cGVjdGVkIHRvIGZhaWwuIjsK
LSAgKmFib3J0ZWQgPSBmYWxzZTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVCVUdfREVB
VEggaW4gZGVidWcgbW9kZSBhYm9ydHMgdGhlIGZ1bmN0aW9uIG9uCi0vLyBmYWlsdXJlLgotVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHMpIHsKLSAgc3RhdGlj
IGJvb2wgYWJvcnRlZDsKLSAgYWJvcnRlZCA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwgIiIpOwotICBFWFBFQ1RfVFJVRShh
Ym9ydGVkKTsKLX0KLQotI2VuZGlmICAvLyBfTkRFQlVHCi0KLS8vIFRlc3RzIHRoZSAqX0VYSVQg
ZmFtaWx5IG9mIG1hY3JvcywgdXNpbmcgYSB2YXJpZXR5IG9mIHByZWRpY2F0ZXMuCi1zdGF0aWMg
dm9pZCBUZXN0RXhpdE1hY3JvcygpIHsKLSAgRVhQRUNUX0VYSVQoX2V4aXQoMSksICB0ZXN0aW5n
OjpFeGl0ZWRXaXRoQ29kZSgxKSwgICIiKTsKLSAgQVNTRVJUX0VYSVQoX2V4aXQoNDIpLCB0ZXN0
aW5nOjpFeGl0ZWRXaXRoQ29kZSg0MiksICIiKTsKLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAg
Ly8gT2YgYWxsIHNpZ25hbHMgZWZmZWN0cyBvbiB0aGUgcHJvY2VzcyBleGl0IGNvZGUsIG9ubHkg
dGhvc2Ugb2YgU0lHQUJSVAotICAvLyBhcmUgZG9jdW1lbnRlZCBvbiBXaW5kb3dzLgotICAvLyBT
ZWUgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2R3d3prdDRjKFZTLjcx
KS5hc3B4LgotICBFWFBFQ1RfRVhJVChyYWlzZShTSUdBQlJUKSwgdGVzdGluZzo6RXhpdGVkV2l0
aENvZGUoMyksICIiKTsKLSNlbHNlCi0gIEVYUEVDVF9FWElUKHJhaXNlKFNJR0tJTEwpLCB0ZXN0
aW5nOjpLaWxsZWRCeVNpZ25hbChTSUdLSUxMKSwgIiIpIDw8ICJmb28iOwotICBBU1NFUlRfRVhJ
VChyYWlzZShTSUdVU1IyKSwgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHVVNSMiksICIiKSA8
PCAiYmFyIjsKLQotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NF
UlRfRVhJVChfZXhpdCgwKSwgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHU0VHViksICIiKQot
ICAgICAgICA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCB0b28uIjsKLSAgfSwgIlRoaXMg
ZmFpbHVyZSBpcyBleHBlY3RlZCwgdG9vLiIpOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dT
Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX0VY
SVQocmFpc2UoU0lHU0VHViksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApLCAiIikKLSAgICAg
ICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4iOwotICB9LCAiVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkLiIpOwotfQotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRXhpdE1hY3Jvcykg
ewotICBUZXN0RXhpdE1hY3JvcygpOwotfQotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRXhp
dE1hY3Jvc1VzaW5nRm9yaykgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNl
X2ZvcmspID0gdHJ1ZTsKLSAgVGVzdEV4aXRNYWNyb3MoKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JE
ZWF0aFRlc3QsIEludmFsaWRTdHlsZSkgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rl
c3Rfc3R5bGUpID0gInJvY29jbyI7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5P
TElOVAotICAgIEVYUEVDVF9ERUFUSChfZXhpdCgwKSwgIiIpIDw8ICJUaGlzIGZhaWx1cmUgaXMg
ZXhwZWN0ZWQuIjsKLSAgfSwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4iKTsKLX0KLQotLy8g
QSBEZWF0aFRlc3RGYWN0b3J5IHRoYXQgcmV0dXJucyBNb2NrRGVhdGhUZXN0cy4KLWNsYXNzIE1v
Y2tEZWF0aFRlc3RGYWN0b3J5IDogcHVibGljIERlYXRoVGVzdEZhY3RvcnkgewotIHB1YmxpYzoK
LSAgTW9ja0RlYXRoVGVzdEZhY3RvcnkoKTsKLSAgdmlydHVhbCBib29sIENyZWF0ZShjb25zdCBj
aGFyKiBzdGF0ZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6UkUqIHJlZ2V4LAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lLCBEZWF0aFRlc3QqKiB0ZXN0KTsKLQotICAvLyBTZXRzIHRoZSBwYXJhbWV0
ZXJzIGZvciBzdWJzZXF1ZW50IGNhbGxzIHRvIENyZWF0ZS4KLSAgdm9pZCBTZXRQYXJhbWV0ZXJz
KGJvb2wgY3JlYXRlLCBEZWF0aFRlc3Q6OlRlc3RSb2xlIHJvbGUsCi0gICAgICAgICAgICAgICAg
ICAgICBpbnQgc3RhdHVzLCBib29sIHBhc3NlZCk7Ci0KLSAgLy8gQWNjZXNzb3JzLgotICBpbnQg
QXNzdW1lUm9sZUNhbGxzKCkgY29uc3QgeyByZXR1cm4gYXNzdW1lX3JvbGVfY2FsbHNfOyB9Ci0g
IGludCBXYWl0Q2FsbHMoKSBjb25zdCB7IHJldHVybiB3YWl0X2NhbGxzXzsgfQotICBpbnQgUGFz
c2VkQ2FsbHMoKSBjb25zdCB7IHJldHVybiBwYXNzZWRfYXJnc18uc2l6ZSgpOyB9Ci0gIGJvb2wg
UGFzc2VkQXJndW1lbnQoaW50IG4pIGNvbnN0IHsgcmV0dXJuIHBhc3NlZF9hcmdzX1tuXTsgfQot
ICBpbnQgQWJvcnRDYWxscygpIGNvbnN0IHsgcmV0dXJuIGFib3J0X2FyZ3NfLnNpemUoKTsgfQot
ICBEZWF0aFRlc3Q6OkFib3J0UmVhc29uIEFib3J0QXJndW1lbnQoaW50IG4pIGNvbnN0IHsKLSAg
ICByZXR1cm4gYWJvcnRfYXJnc19bbl07Ci0gIH0KLSAgYm9vbCBUZXN0RGVsZXRlZCgpIGNvbnN0
IHsgcmV0dXJuIHRlc3RfZGVsZXRlZF87IH0KLQotIHByaXZhdGU6Ci0gIGZyaWVuZCBjbGFzcyBN
b2NrRGVhdGhUZXN0OwotICAvLyBJZiB0cnVlLCBDcmVhdGUgd2lsbCByZXR1cm4gYSBNb2NrRGVh
dGhUZXN0OyBvdGhlcndpc2UgaXQgcmV0dXJucwotICAvLyBOVUxMLgotICBib29sIGNyZWF0ZV87
Ci0gIC8vIFRoZSB2YWx1ZSBhIE1vY2tEZWF0aFRlc3Qgd2lsbCByZXR1cm4gZnJvbSBpdHMgQXNz
dW1lUm9sZSBtZXRob2QuCi0gIERlYXRoVGVzdDo6VGVzdFJvbGUgcm9sZV87Ci0gIC8vIFRoZSB2
YWx1ZSBhIE1vY2tEZWF0aFRlc3Qgd2lsbCByZXR1cm4gZnJvbSBpdHMgV2FpdCBtZXRob2QuCi0g
IGludCBzdGF0dXNfOwotICAvLyBUaGUgdmFsdWUgYSBNb2NrRGVhdGhUZXN0IHdpbGwgcmV0dXJu
IGZyb20gaXRzIFBhc3NlZCBtZXRob2QuCi0gIGJvb2wgcGFzc2VkXzsKLQotICAvLyBOdW1iZXIg
b2YgdGltZXMgQXNzdW1lUm9sZSB3YXMgY2FsbGVkLgotICBpbnQgYXNzdW1lX3JvbGVfY2FsbHNf
OwotICAvLyBOdW1iZXIgb2YgdGltZXMgV2FpdCB3YXMgY2FsbGVkLgotICBpbnQgd2FpdF9jYWxs
c187Ci0gIC8vIFRoZSBhcmd1bWVudHMgdG8gdGhlIGNhbGxzIHRvIFBhc3NlZCBzaW5jZSB0aGUg
bGFzdCBjYWxsIHRvCi0gIC8vIFNldFBhcmFtZXRlcnMuCi0gIHN0ZDo6dmVjdG9yPGJvb2w+IHBh
c3NlZF9hcmdzXzsKLSAgLy8gVGhlIGFyZ3VtZW50cyB0byB0aGUgY2FsbHMgdG8gQWJvcnQgc2lu
Y2UgdGhlIGxhc3QgY2FsbCB0bwotICAvLyBTZXRQYXJhbWV0ZXJzLgotICBzdGQ6OnZlY3RvcjxE
ZWF0aFRlc3Q6OkFib3J0UmVhc29uPiBhYm9ydF9hcmdzXzsKLSAgLy8gVHJ1ZSBpZiB0aGUgbGFz
dCBNb2NrRGVhdGhUZXN0IHJldHVybmVkIGJ5IENyZWF0ZSBoYXMgYmVlbgotICAvLyBkZWxldGVk
LgotICBib29sIHRlc3RfZGVsZXRlZF87Ci19OwotCi0KLS8vIEEgRGVhdGhUZXN0IGltcGxlbWVu
dGF0aW9uIHVzZWZ1bCBpbiB0ZXN0aW5nLiAgSXQgcmV0dXJucyB2YWx1ZXMgc2V0Ci0vLyBhdCBp
dHMgY3JlYXRpb24gZnJvbSBpdHMgdmFyaW91cyBpbmhlcml0ZWQgRGVhdGhUZXN0IG1ldGhvZHMs
IGFuZAotLy8gcmVwb3J0cyBjYWxscyB0byB0aG9zZSBtZXRob2RzIHRvIGl0cyBwYXJlbnQgTW9j
a0RlYXRoVGVzdEZhY3RvcnkKLS8vIG9iamVjdC4KLWNsYXNzIE1vY2tEZWF0aFRlc3QgOiBwdWJs
aWMgRGVhdGhUZXN0IHsKLSBwdWJsaWM6Ci0gIE1vY2tEZWF0aFRlc3QoTW9ja0RlYXRoVGVzdEZh
Y3RvcnkgKnBhcmVudCwKLSAgICAgICAgICAgICAgICBUZXN0Um9sZSByb2xlLCBpbnQgc3RhdHVz
LCBib29sIHBhc3NlZCkgOgotICAgICAgcGFyZW50XyhwYXJlbnQpLCByb2xlXyhyb2xlKSwgc3Rh
dHVzXyhzdGF0dXMpLCBwYXNzZWRfKHBhc3NlZCkgewotICB9Ci0gIHZpcnR1YWwgfk1vY2tEZWF0
aFRlc3QoKSB7Ci0gICAgcGFyZW50Xy0+dGVzdF9kZWxldGVkXyA9IHRydWU7Ci0gIH0KLSAgdmly
dHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCkgewotICAgICsrcGFyZW50Xy0+YXNzdW1lX3JvbGVf
Y2FsbHNfOwotICAgIHJldHVybiByb2xlXzsKLSAgfQotICB2aXJ0dWFsIGludCBXYWl0KCkgewot
ICAgICsrcGFyZW50Xy0+d2FpdF9jYWxsc187Ci0gICAgcmV0dXJuIHN0YXR1c187Ci0gIH0KLSAg
dmlydHVhbCBib29sIFBhc3NlZChib29sIGV4aXRfc3RhdHVzX29rKSB7Ci0gICAgcGFyZW50Xy0+
cGFzc2VkX2FyZ3NfLnB1c2hfYmFjayhleGl0X3N0YXR1c19vayk7Ci0gICAgcmV0dXJuIHBhc3Nl
ZF87Ci0gIH0KLSAgdmlydHVhbCB2b2lkIEFib3J0KEFib3J0UmVhc29uIHJlYXNvbikgewotICAg
IHBhcmVudF8tPmFib3J0X2FyZ3NfLnB1c2hfYmFjayhyZWFzb24pOwotICB9Ci0gcHJpdmF0ZToK
LSAgTW9ja0RlYXRoVGVzdEZhY3RvcnkqIGNvbnN0IHBhcmVudF87Ci0gIGNvbnN0IFRlc3RSb2xl
IHJvbGVfOwotICBjb25zdCBpbnQgc3RhdHVzXzsKLSAgY29uc3QgYm9vbCBwYXNzZWRfOwotfTsK
LQotCi0vLyBNb2NrRGVhdGhUZXN0RmFjdG9yeSBjb25zdHJ1Y3Rvci4KLU1vY2tEZWF0aFRlc3RG
YWN0b3J5OjpNb2NrRGVhdGhUZXN0RmFjdG9yeSgpCi0gICAgOiBjcmVhdGVfKHRydWUpLAotICAg
ICAgcm9sZV8oRGVhdGhUZXN0OjpPVkVSU0VFX1RFU1QpLAotICAgICAgc3RhdHVzXygwKSwKLSAg
ICAgIHBhc3NlZF8odHJ1ZSksCi0gICAgICBhc3N1bWVfcm9sZV9jYWxsc18oMCksCi0gICAgICB3
YWl0X2NhbGxzXygwKSwKLSAgICAgIHBhc3NlZF9hcmdzXygpLAotICAgICAgYWJvcnRfYXJnc18o
KSB7Ci19Ci0KLQotLy8gU2V0cyB0aGUgcGFyYW1ldGVycyBmb3Igc3Vic2VxdWVudCBjYWxscyB0
byBDcmVhdGUuCi12b2lkIE1vY2tEZWF0aFRlc3RGYWN0b3J5OjpTZXRQYXJhbWV0ZXJzKGJvb2wg
Y3JlYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWF0aFRl
c3Q6OlRlc3RSb2xlIHJvbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBzdGF0dXMsIGJvb2wgcGFzc2VkKSB7Ci0gIGNyZWF0ZV8gPSBjcmVhdGU7Ci0gIHJv
bGVfID0gcm9sZTsKLSAgc3RhdHVzXyA9IHN0YXR1czsKLSAgcGFzc2VkXyA9IHBhc3NlZDsKLQot
ICBhc3N1bWVfcm9sZV9jYWxsc18gPSAwOwotICB3YWl0X2NhbGxzXyA9IDA7Ci0gIHBhc3NlZF9h
cmdzXy5jbGVhcigpOwotICBhYm9ydF9hcmdzXy5jbGVhcigpOwotfQotCi0KLS8vIFNldHMgdGVz
dCB0byBOVUxMIChpZiBjcmVhdGVfIGlzIGZhbHNlKSBvciB0byB0aGUgYWRkcmVzcyBvZiBhIG5l
dwotLy8gTW9ja0RlYXRoVGVzdCBvYmplY3Qgd2l0aCBwYXJhbWV0ZXJzIHRha2VuIGZyb20gdGhl
IGxhc3QgY2FsbAotLy8gdG8gU2V0UGFyYW1ldGVycyAoaWYgY3JlYXRlXyBpcyB0cnVlKS4gIEFs
d2F5cyByZXR1cm5zIHRydWUuCi1ib29sIE1vY2tEZWF0aFRlc3RGYWN0b3J5OjpDcmVhdGUoY29u
c3QgY2hhciogLypzdGF0ZW1lbnQqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpSRSogLypyZWdleCovLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qZmlsZSovLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCAvKmxpbmUqLywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEZWF0aFRlc3QqKiB0ZXN0KSB7Ci0gIHRlc3RfZGVsZXRlZF8gPSBmYWxz
ZTsKLSAgaWYgKGNyZWF0ZV8pIHsKLSAgICAqdGVzdCA9IG5ldyBNb2NrRGVhdGhUZXN0KHRoaXMs
IHJvbGVfLCBzdGF0dXNfLCBwYXNzZWRfKTsKLSAgfSBlbHNlIHsKLSAgICAqdGVzdCA9IE5VTEw7
Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIEEgdGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5n
IHRoZSBsb2dpYyBvZiB0aGUgR1RFU1RfREVBVEhfVEVTVF8gbWFjcm8uCi0vLyBJdCBpbnN0YWxs
cyBhIE1vY2tEZWF0aFRlc3RGYWN0b3J5IHRoYXQgaXMgdXNlZCBmb3IgdGhlIGR1cmF0aW9uCi0v
LyBvZiB0aGUgdGVzdCBjYXNlLgotY2xhc3MgTWFjcm9Mb2dpY0RlYXRoVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHN0YXRpYyB0ZXN0aW5nOjppbnRlcm5hbDo6
UmVwbGFjZURlYXRoVGVzdEZhY3RvcnkqIHJlcGxhY2VyXzsKLSAgc3RhdGljIE1vY2tEZWF0aFRl
c3RGYWN0b3J5KiBmYWN0b3J5XzsKLQotICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgewot
ICAgIGZhY3RvcnlfID0gbmV3IE1vY2tEZWF0aFRlc3RGYWN0b3J5OwotICAgIHJlcGxhY2VyXyA9
IG5ldyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVwbGFjZURlYXRoVGVzdEZhY3RvcnkoZmFjdG9yeV8p
OwotICB9Ci0KLSAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKLSAgICBkZWxldGUg
cmVwbGFjZXJfOwotICAgIHJlcGxhY2VyXyA9IE5VTEw7Ci0gICAgZGVsZXRlIGZhY3RvcnlfOwot
ICAgIGZhY3RvcnlfID0gTlVMTDsKLSAgfQotCi0gIC8vIFJ1bnMgYSBkZWF0aCB0ZXN0IHRoYXQg
YnJlYWtzIHRoZSBydWxlcyBieSByZXR1cm5pbmcuICBTdWNoIGEgZGVhdGgKLSAgLy8gdGVzdCBj
YW5ub3QgYmUgcnVuIGRpcmVjdGx5IGZyb20gYSB0ZXN0IHJvdXRpbmUgdGhhdCB1c2VzIGEKLSAg
Ly8gTW9ja0RlYXRoVGVzdCwgb3IgdGhlIHJlbWFpbmRlciBvZiB0aGUgcm91dGluZSB3aWxsIG5v
dCBiZSBleGVjdXRlZC4KLSAgc3RhdGljIHZvaWQgUnVuUmV0dXJuaW5nRGVhdGhUZXN0KGJvb2wq
IGZsYWcpIHsKLSAgICBBU1NFUlRfREVBVEgoeyAgLy8gTk9MSU5UCi0gICAgICAqZmxhZyA9IHRy
dWU7Ci0gICAgICByZXR1cm47Ci0gICAgfSwgIiIpOwotICB9Ci19OwotCi10ZXN0aW5nOjppbnRl
cm5hbDo6UmVwbGFjZURlYXRoVGVzdEZhY3RvcnkqIE1hY3JvTG9naWNEZWF0aFRlc3Q6OnJlcGxh
Y2VyXwotICAgID0gTlVMTDsKLU1vY2tEZWF0aFRlc3RGYWN0b3J5KiBNYWNyb0xvZ2ljRGVhdGhU
ZXN0OjpmYWN0b3J5XyA9IE5VTEw7Ci0KLQotLy8gVGVzdCB0aGF0IG5vdGhpbmcgaGFwcGVucyB3
aGVuIHRoZSBmYWN0b3J5IGRvZXNuJ3QgcmV0dXJuIGEgRGVhdGhUZXN0OgotVEVTVF9GKE1hY3Jv
TG9naWNEZWF0aFRlc3QsIE5vdGhpbmdIYXBwZW5zKSB7Ci0gIGJvb2wgZmxhZyA9IGZhbHNlOwot
ICBmYWN0b3J5Xy0+U2V0UGFyYW1ldGVycyhmYWxzZSwgRGVhdGhUZXN0OjpPVkVSU0VFX1RFU1Qs
IDAsIHRydWUpOwotICBFWFBFQ1RfREVBVEgoZmxhZyA9IHRydWUsICIiKTsKLSAgRVhQRUNUX0ZB
TFNFKGZsYWcpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsK
LSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgwLCBm
YWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+QWJvcnRD
YWxscygpKTsKLSAgRVhQRUNUX0ZBTFNFKGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsKLX0KLQot
Ly8gVGVzdCB0aGF0IHRoZSBwYXJlbnQgcHJvY2VzcyBkb2Vzbid0IHJ1biB0aGUgZGVhdGggdGVz
dCBjb2RlLAotLy8gYW5kIHRoYXQgdGhlIFBhc3NlZCBtZXRob2QgcmV0dXJucyBmYWxzZSB3aGVu
IHRoZSAoc2ltdWxhdGVkKQotLy8gY2hpbGQgcHJvY2VzcyBleGl0cyB3aXRoIHN0YXR1cyAwOgot
VEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxkRXhpdHNTdWNjZXNzZnVsbHkpIHsKLSAg
Ym9vbCBmbGFnID0gZmFsc2U7Ci0gIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJzKHRydWUsIERlYXRo
VGVzdDo6T1ZFUlNFRV9URVNULCAwLCB0cnVlKTsKLSAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0cnVl
LCAiIik7Ci0gIEVYUEVDVF9GQUxTRShmbGFnKTsKLSAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5B
c3N1bWVSb2xlQ2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+V2FpdENhbGxzKCkp
OwotICBBU1NFUlRfRVEoMSwgZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOwotICBFWFBFQ1RfRkFM
U0UoZmFjdG9yeV8tPlBhc3NlZEFyZ3VtZW50KDApKTsKLSAgRVhQRUNUX0VRKDAsIGZhY3Rvcnlf
LT5BYm9ydENhbGxzKCkpOwotICBFWFBFQ1RfVFJVRShmYWN0b3J5Xy0+VGVzdERlbGV0ZWQoKSk7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIFBhc3NlZCBtZXRob2Qgd2FzIGdpdmVuIHRoZSBhcmd1
bWVudCAidHJ1ZSIgd2hlbgotLy8gdGhlIChzaW11bGF0ZWQpIGNoaWxkIHByb2Nlc3MgZXhpdHMg
d2l0aCBzdGF0dXMgMToKLVRFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBDaGlsZEV4aXRzVW5z
dWNjZXNzZnVsbHkpIHsKLSAgYm9vbCBmbGFnID0gZmFsc2U7Ci0gIGZhY3RvcnlfLT5TZXRQYXJh
bWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6T1ZFUlNFRV9URVNULCAxLCB0cnVlKTsKLSAgRVhQRUNU
X0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7Ci0gIEVYUEVDVF9GQUxTRShmbGFnKTsKLSAgRVhQRUNU
X0VRKDEsIGZhY3RvcnlfLT5Bc3N1bWVSb2xlQ2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgxLCBmYWN0
b3J5Xy0+V2FpdENhbGxzKCkpOwotICBBU1NFUlRfRVEoMSwgZmFjdG9yeV8tPlBhc3NlZENhbGxz
KCkpOwotICBFWFBFQ1RfVFJVRShmYWN0b3J5Xy0+UGFzc2VkQXJndW1lbnQoMCkpOwotICBFWFBF
Q1RfRVEoMCwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7Ci0gIEVYUEVDVF9UUlVFKGZhY3Rvcnlf
LT5UZXN0RGVsZXRlZCgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgKHNpbXVsYXRlZCkgY2hp
bGQgcHJvY2VzcyBleGVjdXRlcyB0aGUgZGVhdGggdGVzdAotLy8gY29kZSwgYW5kIGlzIGFib3J0
ZWQgd2l0aCB0aGUgY29ycmVjdCBBYm9ydFJlYXNvbiBpZiBpdAotLy8gZXhlY3V0ZXMgYSByZXR1
cm4gc3RhdGVtZW50LgotVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxkUGVyZm9ybXNS
ZXR1cm4pIHsKLSAgYm9vbCBmbGFnID0gZmFsc2U7Ci0gIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJz
KHRydWUsIERlYXRoVGVzdDo6RVhFQ1VURV9URVNULCAwLCB0cnVlKTsKLSAgUnVuUmV0dXJuaW5n
RGVhdGhUZXN0KCZmbGFnKTsKLSAgRVhQRUNUX1RSVUUoZmxhZyk7Ci0gIEVYUEVDVF9FUSgxLCBm
YWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPldh
aXRDYWxscygpKTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKLSAg
RVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOwotICBFWFBFQ1RfRVEoRGVhdGhU
ZXN0OjpURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQsCi0gICAgICAgICAgICBmYWN0
b3J5Xy0+QWJvcnRBcmd1bWVudCgwKSk7Ci0gIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5UZXN0RGVs
ZXRlZCgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgKHNpbXVsYXRlZCkgY2hpbGQgcHJvY2Vz
cyBpcyBhYm9ydGVkIHdpdGggdGhlCi0vLyBjb3JyZWN0IEFib3J0UmVhc29uIGlmIGl0IGRvZXMg
bm90IGRpZS4KLVRFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBDaGlsZERvZXNOb3REaWUpIHsK
LSAgYm9vbCBmbGFnID0gZmFsc2U7Ci0gIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJzKHRydWUsIERl
YXRoVGVzdDo6RVhFQ1VURV9URVNULCAwLCB0cnVlKTsKLSAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0
cnVlLCAiIik7Ci0gIEVYUEVDVF9UUlVFKGZsYWcpOwotICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8t
PkFzc3VtZVJvbGVDYWxscygpKTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5XYWl0Q2FsbHMo
KSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7Ci0gIC8vIFRoaXMg
dGltZSB0aGVyZSBhcmUgdHdvIGNhbGxzIHRvIEFib3J0OiBvbmUgc2luY2UgdGhlIHRlc3QgZGlk
bid0Ci0gIC8vIGRpZSwgYW5kIGFub3RoZXIgZnJvbSB0aGUgUmV0dXJuU2VudGluZWwgd2hlbiBp
dCdzIGRlc3Ryb3llZC4gIFRoZQotICAvLyBzZW50aW5lbCBub3JtYWxseSBpc24ndCBkZXN0cm95
ZWQgaWYgYSB0ZXN0IGRvZXNuJ3QgZGllLCBzaW5jZQotICAvLyBfZXhpdCgyKSBpcyBjYWxsZWQg
aW4gdGhhdCBjYXNlIGJ5IEZvcmtpbmdEZWF0aFRlc3QsIGJ1dCBub3QgYnkKLSAgLy8gb3VyIE1v
Y2tEZWF0aFRlc3QuCi0gIEFTU0VSVF9FUSgyLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKLSAg
RVhQRUNUX0VRKERlYXRoVGVzdDo6VEVTVF9ESURfTk9UX0RJRSwKLSAgICAgICAgICAgIGZhY3Rv
cnlfLT5BYm9ydEFyZ3VtZW50KDApKTsKLSAgRVhQRUNUX0VRKERlYXRoVGVzdDo6VEVTVF9FTkNP
VU5URVJFRF9SRVRVUk5fU1RBVEVNRU5ULAotICAgICAgICAgICAgZmFjdG9yeV8tPkFib3J0QXJn
dW1lbnQoMSkpOwotICBFWFBFQ1RfVFJVRShmYWN0b3J5Xy0+VGVzdERlbGV0ZWQoKSk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgYSBzdWNjZXNzZnVsIGRlYXRoIHRlc3QgZG9lcyBub3QgcmVnaXN0ZXIg
YSBzdWNjZXNzZnVsCi0vLyB0ZXN0IHBhcnQuCi1URVNUKFN1Y2Nlc3NSZWdpc3RyYXRpb25EZWF0
aFRlc3QsIE5vU3VjY2Vzc1BhcnQpIHsKLSAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci0g
IEVYUEVDVF9FUSgwLCBHZXRVbml0VGVzdEltcGwoKS0+Y3VycmVudF90ZXN0X3Jlc3VsdCgpLT50
b3RhbF9wYXJ0X2NvdW50KCkpOwotfQotCi1URVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNEZWF0aFRl
c3QsIERlYXRoVGVzdCkgewotICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKSA8PCAidW5leHBl
Y3RlZCBmYWlsdXJlIjsKLSAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgInVuZXhwZWN0
ZWQgZmFpbHVyZSI7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAg
IEVYUEVDVF9ERUFUSChfZXhpdCgwKSwgIiIpIDw8ICJleHBlY3RlZCBmYWlsdXJlIjsKLSAgfSwg
ImV4cGVjdGVkIGZhaWx1cmUiKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
Ci0gICAgQVNTRVJUX0RFQVRIKF9leGl0KDApLCAiIikgPDwgImV4cGVjdGVkIGZhaWx1cmUiOwot
ICB9LCAiZXhwZWN0ZWQgZmFpbHVyZSIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEdldExhc3RFcnJu
b0Rlc2NyaXB0aW9uIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nIHdoZW4gdGhlCi0vLyBsYXN0IGVy
cm9yIGlzIDAgYW5kIG5vbi1lbXB0eSBzdHJpbmcgd2hlbiBpdCBpcyBub24temVyby4KLVRFU1Qo
R2V0TGFzdEVycm5vRGVzY3JpcHRpb24sIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uV29ya3MpIHsK
LSAgZXJybm8gPSBFTk9FTlQ7Ci0gIEVYUEVDVF9TVFJORSgiIiwgR2V0TGFzdEVycm5vRGVzY3Jp
cHRpb24oKS5jX3N0cigpKTsKLSAgZXJybm8gPSAwOwotICBFWFBFQ1RfU1RSRVEoIiIsIEdldExh
c3RFcnJub0Rlc2NyaXB0aW9uKCkuY19zdHIoKSk7Ci19Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dT
Ci1URVNUKEF1dG9IYW5kbGVUZXN0LCBBdXRvSGFuZGxlV29ya3MpIHsKLSAgSEFORExFIGhhbmRs
ZSA9IDo6Q3JlYXRlRXZlbnQoTlVMTCwgRkFMU0UsIEZBTFNFLCBOVUxMKTsKLSAgQVNTRVJUX05F
KElOVkFMSURfSEFORExFX1ZBTFVFLCBoYW5kbGUpOwotCi0gIC8vIFRlc3RzIHRoYXQgdGhlIEF1
dG9IYW5kbGUgaXMgY29ycmVjdGx5IGluaXRpYWxpemVkIHdpdGggYSBoYW5kbGUuCi0gIHRlc3Rp
bmc6OmludGVybmFsOjpBdXRvSGFuZGxlIGF1dG9faGFuZGxlKGhhbmRsZSk7Ci0gIEVYUEVDVF9F
UShoYW5kbGUsIGF1dG9faGFuZGxlLkdldCgpKTsKLQotICAvLyBUZXN0cyB0aGF0IFJlc2V0IGFz
c2lnbnMgSU5WQUxJRF9IQU5ETEVfVkFMVUUuCi0gIC8vIE5vdGUgdGhhdCB0aGlzIGNhbm5vdCB2
ZXJpZnkgd2hldGhlciB0aGUgb3JpZ2luYWwgaGFuZGxlIGlzIGNsb3NlZC4KLSAgYXV0b19oYW5k
bGUuUmVzZXQoKTsKLSAgRVhQRUNUX0VRKElOVkFMSURfSEFORExFX1ZBTFVFLCBhdXRvX2hhbmRs
ZS5HZXQoKSk7Ci0KLSAgLy8gVGVzdHMgdGhhdCBSZXNldCBhc3NpZ25zIHRoZSBuZXcgaGFuZGxl
LgotICAvLyBOb3RlIHRoYXQgdGhpcyBjYW5ub3QgdmVyaWZ5IHdoZXRoZXIgdGhlIG9yaWdpbmFs
IGhhbmRsZSBpcyBjbG9zZWQuCi0gIGhhbmRsZSA9IDo6Q3JlYXRlRXZlbnQoTlVMTCwgRkFMU0Us
IEZBTFNFLCBOVUxMKTsKLSAgQVNTRVJUX05FKElOVkFMSURfSEFORExFX1ZBTFVFLCBoYW5kbGUp
OwotICBhdXRvX2hhbmRsZS5SZXNldChoYW5kbGUpOwotICBFWFBFQ1RfRVEoaGFuZGxlLCBhdXRv
X2hhbmRsZS5HZXQoKSk7Ci0KLSAgLy8gVGVzdHMgdGhhdCBBdXRvSGFuZGxlIGNvbnRhaW5zIElO
VkFMSURfSEFORExFX1ZBTFVFIGJ5IGRlZmF1bHQuCi0gIHRlc3Rpbmc6OmludGVybmFsOjpBdXRv
SGFuZGxlIGF1dG9faGFuZGxlMjsKLSAgRVhQRUNUX0VRKElOVkFMSURfSEFORExFX1ZBTFVFLCBh
dXRvX2hhbmRsZTIuR2V0KCkpOwotfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSNp
ZiBHVEVTVF9PU19XSU5ET1dTCi10eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgQmlnZ2VzdFBhcnNh
YmxlOwotdHlwZWRlZiBzaWduZWQgX19pbnQ2NCBCaWdnZXN0U2lnbmVkUGFyc2FibGU7Ci1jb25z
dCBCaWdnZXN0UGFyc2FibGUga0JpZ2dlc3RQYXJzYWJsZU1heCA9IFVMTE9OR19NQVg7Ci1jb25z
dCBCaWdnZXN0UGFyc2FibGUga0JpZ2dlc3RTaWduZWRQYXJzYWJsZU1heCA9IExMT05HX01BWDsK
LSNlbHNlCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBCaWdnZXN0UGFyc2FibGU7Ci10eXBl
ZGVmIHNpZ25lZCBsb25nIGxvbmcgQmlnZ2VzdFNpZ25lZFBhcnNhYmxlOwotY29uc3QgQmlnZ2Vz
dFBhcnNhYmxlIGtCaWdnZXN0UGFyc2FibGVNYXggPQotICAgIDo6c3RkOjpudW1lcmljX2xpbWl0
czxCaWdnZXN0UGFyc2FibGU+OjptYXgoKTsKLWNvbnN0IEJpZ2dlc3RTaWduZWRQYXJzYWJsZSBr
QmlnZ2VzdFNpZ25lZFBhcnNhYmxlTWF4ID0KLSAgICA6OnN0ZDo6bnVtZXJpY19saW1pdHM8Qmln
Z2VzdFNpZ25lZFBhcnNhYmxlPjo6bWF4KCk7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MK
LQotVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBSZWplY3RzSW52YWxpZEZvcm1hdCkgewot
ICBCaWdnZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsKLQotICAvLyBSZWplY3RzIG5vbi1udW1iZXJz
LgotICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygibm9uLW51bWJlciBz
dHJpbmciKSwgJnJlc3VsdCkpOwotCi0gIC8vIFJlamVjdHMgbnVtYmVycyB3aXRoIHdoaXRlc3Bh
Y2UgcHJlZml4LgotICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygiIDEy
MyIpLCAmcmVzdWx0KSk7Ci0KLSAgLy8gUmVqZWN0cyBuZWdhdGl2ZSBudW1iZXJzLgotICBFWFBF
Q1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygiLTEyMyIpLCAmcmVzdWx0KSk7Ci0K
LSAgLy8gUmVqZWN0cyBudW1iZXJzIHN0YXJ0aW5nIHdpdGggYSBwbHVzIHNpZ24uCi0gIEVYUEVD
VF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCIrMTIzIiksICZyZXN1bHQpKTsKLSAg
ZXJybm8gPSAwOwotfQotCi1URVNUKFBhcnNlTmF0dXJhbE51bWJlclRlc3QsIFJlamVjdHNPdmVy
Zmxvd25OdW1iZXJzKSB7Ci0gIEJpZ2dlc3RQYXJzYWJsZSByZXN1bHQgPSAwOwotCi0gIEVYUEVD
VF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCI5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OSIpLCAmcmVzdWx0KSk7Ci0KLSAgc2lnbmVkIGNoYXIgY2hhcl9yZXN1bHQgPSAwOwotICBFWFBF
Q1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygiMjAwIiksICZjaGFyX3Jlc3VsdCkp
OwotICBlcnJubyA9IDA7Ci19Ci0KLVRFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgQWNjZXB0
c1ZhbGlkTnVtYmVycykgewotICBCaWdnZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsKLQotICByZXN1
bHQgPSAwOwotICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCIxMjMiKSwg
JnJlc3VsdCkpOwotICBFWFBFQ1RfRVEoMTIzVSwgcmVzdWx0KTsKLQotICAvLyBDaGVjayAwIGFz
IGFuIGVkZ2UgY2FzZS4KLSAgcmVzdWx0ID0gMTsKLSAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFs
TnVtYmVyKFN0cmluZygiMCIpLCAmcmVzdWx0KSk7Ci0gIEVYUEVDVF9FUSgwVSwgcmVzdWx0KTsK
LQotICByZXN1bHQgPSAxOwotICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5n
KCIwMDAwMCIpLCAmcmVzdWx0KSk7Ci0gIEVYUEVDVF9FUSgwVSwgcmVzdWx0KTsKLX0KLQotVEVT
VChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBBY2NlcHRzVHlwZUxpbWl0cykgewotICBNZXNzYWdl
IG1zZzsKLSAgbXNnIDw8IGtCaWdnZXN0UGFyc2FibGVNYXg7Ci0KLSAgQmlnZ2VzdFBhcnNhYmxl
IHJlc3VsdCA9IDA7Ci0gIEVYUEVDVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihtc2cuR2V0U3Ry
aW5nKCksICZyZXN1bHQpKTsKLSAgRVhQRUNUX0VRKGtCaWdnZXN0UGFyc2FibGVNYXgsIHJlc3Vs
dCk7Ci0KLSAgTWVzc2FnZSBtc2cyOwotICBtc2cyIDw8IGtCaWdnZXN0U2lnbmVkUGFyc2FibGVN
YXg7Ci0KLSAgQmlnZ2VzdFNpZ25lZFBhcnNhYmxlIHNpZ25lZF9yZXN1bHQgPSAwOwotICBFWFBF
Q1RfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIobXNnMi5HZXRTdHJpbmcoKSwgJnNpZ25lZF9yZXN1
bHQpKTsKLSAgRVhQRUNUX0VRKGtCaWdnZXN0U2lnbmVkUGFyc2FibGVNYXgsIHNpZ25lZF9yZXN1
bHQpOwotCi0gIE1lc3NhZ2UgbXNnMzsKLSAgbXNnMyA8PCBJTlRfTUFYOwotCi0gIGludCBpbnRf
cmVzdWx0ID0gMDsKLSAgRVhQRUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKG1zZzMuR2V0U3Ry
aW5nKCksICZpbnRfcmVzdWx0KSk7Ci0gIEVYUEVDVF9FUShJTlRfTUFYLCBpbnRfcmVzdWx0KTsK
LQotICBNZXNzYWdlIG1zZzQ7Ci0gIG1zZzQgPDwgVUlOVF9NQVg7Ci0KLSAgdW5zaWduZWQgaW50
IHVpbnRfcmVzdWx0ID0gMDsKLSAgRVhQRUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKG1zZzQu
R2V0U3RyaW5nKCksICZ1aW50X3Jlc3VsdCkpOwotICBFWFBFQ1RfRVEoVUlOVF9NQVgsIHVpbnRf
cmVzdWx0KTsKLX0KLQotVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBXb3Jrc0ZvclNob3J0
ZXJJbnRlZ2VycykgewotICBzaG9ydCBzaG9ydF9yZXN1bHQgPSAwOwotICBBU1NFUlRfVFJVRShQ
YXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCIxMjMiKSwgJnNob3J0X3Jlc3VsdCkpOwotICBFWFBF
Q1RfRVEoMTIzLCBzaG9ydF9yZXN1bHQpOwotCi0gIHNpZ25lZCBjaGFyIGNoYXJfcmVzdWx0ID0g
MDsKLSAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygiMTIzIiksICZjaGFy
X3Jlc3VsdCkpOwotICBFWFBFQ1RfRVEoMTIzLCBjaGFyX3Jlc3VsdCk7Ci19Ci0KLSNpZiBHVEVT
VF9PU19XSU5ET1dTCi1URVNUKEVudmlyb25tZW50VGVzdCwgSGFuZGxlRml0c0ludG9TaXplVCkg
ewotICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBSZW1vdmUgdGhpcyB0ZXN0IGFmdGVyIHRo
aXMgY29uZGl0aW9uIGlzIHZlcmlmaWVkCi0gIC8vIGluIGEgc3RhdGljIGFzc2VydGlvbiBpbiBn
dGVzdC1kZWF0aC10ZXN0LmNjIGluIHRoZSBmdW5jdGlvbgotICAvLyBHZXRTdGF0dXNGaWxlRGVz
Y3JpcHRvci4KLSAgQVNTRVJUX1RSVUUoc2l6ZW9mKEhBTkRMRSkgPD0gc2l6ZW9mKHNpemVfdCkp
OwotfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLS8vIFRlc3RzIHRoYXQgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRC9BU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEIHRyaWdnZXIKLS8v
IGZhaWx1cmVzIHdoZW4gZGVhdGggdGVzdHMgYXJlIGF2YWlsYWJsZSBvbiB0aGUgc3lzdGVtLgot
VEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zRGVhdGhUZXN0LCBFeHBlY3RzRGVhdGhXaGVuRGVh
dGhUZXN0c0F2YWlsYWJsZSkgewotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKERpZUluc2lk
ZSgiQ29uZERlYXRoVGVzdEV4cGVjdE1hY3JvIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImRlYXRoIGluc2lkZSBDb25kRGVhdGhUZXN0RXhwZWN0TWFjcm8iKTsKLSAgQVNTRVJUX0RF
QVRIX0lGX1NVUFBPUlRFRChEaWVJbnNpZGUoIkNvbmREZWF0aFRlc3RBc3NlcnRNYWNybyIpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWF0aCBpbnNpZGUgQ29uZERlYXRoVGVzdEFz
c2VydE1hY3JvIik7Ci0KLSAgLy8gRW1wdHkgc3RhdGVtZW50IHdpbGwgbm90IGNyYXNoLCB3aGlj
aCBtdXN0IHRyaWdnZXIgYSBmYWlsdXJlLgotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBF
Q1RfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKSwgIiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RShBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKSwgIiIpOwotfQotCi0jZWxzZQotCi11
c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q2FwdHVyZVN0ZGVycjsKLXVzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpHZXRDYXB0dXJlZFN0ZGVycjsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTdHJp
bmc7Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRC9BU1NFUlRfREVB
VEhfSUZfU1VQUE9SVEVEIGFyZSBzdGlsbAotLy8gZGVmaW5lZCBidXQgZG8gbm90IHRyaWdnZXIg
ZmFpbHVyZXMgd2hlbiBkZWF0aCB0ZXN0cyBhcmUgbm90IGF2YWlsYWJsZSBvbgotLy8gdGhlIHN5
c3RlbS4KLVRFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc1Rlc3QsIFdhcm5zV2hlbkRlYXRoVGVz
dHNOb3RBdmFpbGFibGUpIHsKLSAgLy8gRW1wdHkgc3RhdGVtZW50IHdpbGwgbm90IGNyYXNoLCBi
dXQgdGhhdCBzaG91bGQgbm90IHRyaWdnZXIgYSBmYWlsdXJlCi0gIC8vIHdoZW4gZGVhdGggdGVz
dHMgYXJlIG5vdCBzdXBwb3J0ZWQuCi0gIENhcHR1cmVTdGRlcnIoKTsKLSAgRVhQRUNUX0RFQVRI
X0lGX1NVUFBPUlRFRCg7LCAiIik7Ci0gIFN0cmluZyBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVy
cigpOwotICBBU1NFUlRfVFJVRShOVUxMICE9IHN0cnN0cihvdXRwdXQuY19zdHIoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkIG9u
IHRoaXMgcGxhdGZvcm0iKSk7Ci0gIEFTU0VSVF9UUlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5j
X3N0cigpLCAiOyIpKTsKLQotICAvLyBUaGUgc3RyZWFtZWQgbWVzc2FnZSBzaG91bGQgbm90IGJl
IHByaW50ZWQgYXMgdGhlcmUgaXMgbm8gdGVzdCBmYWlsdXJlLgotICBDYXB0dXJlU3RkZXJyKCk7
Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIpIDw8ICJzdHJlYW1lZCBtZXNzYWdl
IjsKLSAgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCA9
PSBzdHJzdHIob3V0cHV0LmNfc3RyKCksICJzdHJlYW1lZCBtZXNzYWdlIikpOwotCi0gIENhcHR1
cmVTdGRlcnIoKTsKLSAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIik7ICAvLyBOT0xJ
TlQKLSAgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCAh
PSBzdHJzdHIob3V0cHV0LmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJE
ZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikpOwotICBBU1NF
UlRfVFJVRShOVUxMICE9IHN0cnN0cihvdXRwdXQuY19zdHIoKSwgIjsiKSk7Ci0KLSAgQ2FwdHVy
ZVN0ZGVycigpOwotICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKSA8PCAic3RyZWFt
ZWQgbWVzc2FnZSI7ICAvLyBOT0xJTlQKLSAgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsK
LSAgQVNTRVJUX1RSVUUoTlVMTCA9PSBzdHJzdHIob3V0cHV0LmNfc3RyKCksICJzdHJlYW1lZCBt
ZXNzYWdlIikpOwotfQotCi12b2lkIEZ1bmNXaXRoQXNzZXJ0KGludCogbikgewotICBBU1NFUlRf
REVBVEhfSUZfU1VQUE9SVEVEKHJldHVybjssICIiKTsKLSAgKCpuKSsrOwotfQotCi0vLyBUZXN0
cyB0aGF0IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgZG9lcyBub3QgcmV0dXJuIGZyb20gdGhl
IGN1cnJlbnQKLS8vIGZ1bmN0aW9uIChhcyBBU1NFUlRfREVBVEggZG9lcykgaWYgZGVhdGggdGVz
dHMgYXJlIG5vdCBzdXBwb3J0ZWQuCi1URVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NUZXN0LCBB
c3NlcnREZWF0RG9lc05vdFJldHVybmhJZlVuc3VwcG9ydGVkKSB7Ci0gIGludCBuID0gMDsKLSAg
RnVuY1dpdGhBc3NlcnQoJm4pOwotICBFWFBFQ1RfRVEoMSwgbik7Ci19Ci0jZW5kaWYgIC8vIEdU
RVNUX0hBU19ERUFUSF9URVNUCi0KLS8vIFRlc3RzIHRoYXQgdGhlIGRlYXRoIHRlc3QgbWFjcm9z
IGV4cGFuZCB0byBjb2RlIHdoaWNoIG1heSBvciBtYXkgbm90Ci0vLyBiZSBmb2xsb3dlZCBieSBv
cGVyYXRvcjw8LCBhbmQgdGhhdCBpbiBlaXRoZXIgY2FzZSB0aGUgY29tcGxldGUgdGV4dAotLy8g
Y29tcHJpc2VzIG9ubHkgYSBzaW5nbGUgQysrIHN0YXRlbWVudC4KLS8vCi0vLyBUaGUgc3ludGF4
IHNob3VsZCB3b3JrIHdoZXRoZXIgZGVhdGggdGVzdHMgYXJlIGF2YWlsYWJsZSBvciBub3QuCi1U
RVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NTeW50YXhEZWF0aFRlc3QsIFNpbmdsZVN0YXRlbWVu
dCkgewotICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAgICAvLyBUaGlzIHdvdWxkIGZhaWwgaWYgZXhl
Y3V0ZWQ7IHRoaXMgaXMgYSBjb21waWxhdGlvbiB0ZXN0IG9ubHkKLSAgICBBU1NFUlRfREVBVEhf
SUZfU1VQUE9SVEVEKHJldHVybiwgIiIpOwotCi0gIGlmIChBbHdheXNUcnVlKCkpCi0gICAgRVhQ
RUNUX0RFQVRIX0lGX1NVUFBPUlRFRChfZXhpdCgxKSwgIiIpOwotICBlbHNlCi0gICAgLy8gVGhp
cyBlbXB0eSAiZWxzZSIgYnJhbmNoIGlzIG1lYW50IHRvIGVuc3VyZSB0aGF0IEVYUEVDVF9ERUFU
SAotICAgIC8vIGRvZXNuJ3QgZXhwYW5kIGludG8gYW4gImlmIiBzdGF0ZW1lbnQgd2l0aG91dCBh
biAiZWxzZSIKLSAgICA7ICAvLyBOT0xJTlQKLQotICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAgICBB
U1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHJldHVybiwgIiIpIDw8ICJkaWQgbm90IGRpZSI7Ci0K
LSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgOyAgLy8gTk9MSU5UCi0gIGVsc2UKLSAgICBFWFBF
Q1RfREVBVEhfSUZfU1VQUE9SVEVEKF9leGl0KDEpLCAiIikgPDwgMSA8PCAyIDw8IDM7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgY29uZGl0aW9uYWwgZGVhdGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNv
ZGUgd2hpY2ggaW50ZXJhY3RzCi0vLyB3ZWxsIHdpdGggc3dpdGNoIHN0YXRlbWVudHMuCi1URVNU
KENvbmRpdGlvbmFsRGVhdGhNYWNyb3NTeW50YXhEZWF0aFRlc3QsIFN3aXRjaFN0YXRlbWVudCkg
ewotLy8gTWljcm9zb2Z0IGNvbXBpbGVyIHVzdWFsbHkgY29tcGxhaW5zIGFib3V0IHN3aXRjaCBz
dGF0ZW1lbnRzIHdpdGhvdXQKLS8vIGNhc2UgbGFiZWxzLiBXZSBzdXBwcmVzcyB0aGF0IHdhcm5p
bmcgZm9yIHRoaXMgdGVzdC4KLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHB1c2gp
Ci0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDA2NSkKLSNlbmRpZiAgLy8gX01TQ19WRVIKLQot
ICBzd2l0Y2ggKDApCi0gICAgZGVmYXVsdDoKLSAgICAgIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JU
RUQoX2V4aXQoMSksICIiKQotICAgICAgICAgIDw8ICJleGl0IGluIGRlZmF1bHQgc3dpdGNoIGhh
bmRsZXIiOwotCi0gIHN3aXRjaCAoMCkKLSAgICBjYXNlIDA6Ci0gICAgICBFWFBFQ1RfREVBVEhf
SUZfU1VQUE9SVEVEKF9leGl0KDEpLCAiIikgPDwgImV4aXQgaW4gc3dpdGNoIGNhc2UiOwotCi0j
aWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYgIC8vIF9NU0NfVkVS
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSB0ZXN0IGNhc2Ugd2hvc2UgbmFtZSBlbmRzIHdpdGggIkRl
YXRoVGVzdCIgd29ya3MgZmluZQotLy8gb24gV2luZG93cy4KLVRFU1QoTm90QURlYXRoVGVzdCwg
VGVzdCkgewotICBTVUNDRUVEKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDYyNTAyODI3NThkZmIzYzkzZjQ3ZjA5MWM1MmEyZGJmOTJjYWNlZWIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdC1maWxlcGF0aF90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNjkwICsw
LDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0v
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0v
LyBBdXRob3JzOiBrZWl0aC5yYXlAZ21haWwuY29tIChLZWl0aCBSYXkpCi0vLwotLy8gR29vZ2xl
IFRlc3QgZmlsZXBhdGggdXRpbGl0aWVzCi0vLwotLy8gVGhpcyBmaWxlIHRlc3RzIGNsYXNzZXMg
YW5kIGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkgYnkKLS8vIEdvb2dsZSBUZXN0LiAgVGhleSBh
cmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCi0vLwotLy8gVGhpcyBmaWxlIGlz
ICNpbmNsdWRlZCBmcm9tIGd0ZXN0X3VuaXR0ZXN0LmNjLCB0byBhdm9pZCBjaGFuZ2luZwotLy8g
YnVpbGQgb3IgbWFrZS1maWxlcyBmb3Igc29tZSBleGlzdGluZyBHb29nbGUgVGVzdCBjbGllbnRz
LiBEbyBub3QKLS8vICNpbmNsdWRlIHRoaXMgZmlsZSBhbnl3aGVyZSBlbHNlIQotCi0jaW5jbHVk
ZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBv
ZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUg
Z3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEg
Y29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9t
IGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBj
b2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQotI2luY2x1ZGUgInNyYy9ndGVz
dC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KLQotI2lmIEdU
RVNUX09TX1dJTkRPV1NfTU9CSUxFCi0jaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gTk9MSU5UCi0j
ZWxpZiBHVEVTVF9PU19XSU5ET1dTCi0jaW5jbHVkZSA8ZGlyZWN0Lmg+ICAvLyBOT0xJTlQKLSNl
bmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLQotbmFtZXNwYWNlIHRlc3Rpbmcgewot
bmFtZXNwYWNlIGludGVybmFsIHsKLW5hbWVzcGFjZSB7Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dT
X01PQklMRQotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IE1vdmUgdGhlc2UgdG8gdGhlIFBPU0lY
IGFkYXB0ZXIgc2VjdGlvbiBpbgotLy8gZ3Rlc3QtcG9ydC5oLgotCi0vLyBXaW5kb3dzIENFIGRv
ZXNuJ3QgaGF2ZSB0aGUgcmVtb3ZlIEMgZnVuY3Rpb24uCi1pbnQgcmVtb3ZlKGNvbnN0IGNoYXIq
IHBhdGgpIHsKLSAgTFBDV1NUUiB3cGF0aCA9IFN0cmluZzo6QW5zaVRvVXRmMTYocGF0aCk7Ci0g
IGludCByZXQgPSBEZWxldGVGaWxlKHdwYXRoKSA/IDAgOiAtMTsKLSAgZGVsZXRlIFtdIHdwYXRo
OwotICByZXR1cm4gcmV0OwotfQotLy8gV2luZG93cyBDRSBkb2Vzbid0IGhhdmUgdGhlIF9ybWRp
ciBDIGZ1bmN0aW9uLgotaW50IF9ybWRpcihjb25zdCBjaGFyKiBwYXRoKSB7Ci0gIEZpbGVQYXRo
IGZpbGVwYXRoKHBhdGgpOwotICBMUENXU1RSIHdwYXRoID0gU3RyaW5nOjpBbnNpVG9VdGYxNigK
LSAgICAgIGZpbGVwYXRoLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLmNfc3RyKCkpOwot
ICBpbnQgcmV0ID0gUmVtb3ZlRGlyZWN0b3J5KHdwYXRoKSA/IDAgOiAtMTsKLSAgZGVsZXRlIFtd
IHdwYXRoOwotICByZXR1cm4gcmV0OwotfQotCi0jZWxzZQotCi1URVNUKEdldEN1cnJlbnREaXJU
ZXN0LCBSZXR1cm5zQ3VycmVudERpcikgewotICBjb25zdCBGaWxlUGF0aCBvcmlnaW5hbF9kaXIg
PSBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpOwotICBFWFBFQ1RfRkFMU0Uob3JpZ2luYWxfZGly
LklzRW1wdHkoKSk7Ci0KLSAgcG9zaXg6OkNoRGlyKEdURVNUX1BBVEhfU0VQXyk7Ci0gIGNvbnN0
IEZpbGVQYXRoIGN3ZCA9IEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCk7Ci0gIHBvc2l4OjpDaERp
cihvcmlnaW5hbF9kaXIuY19zdHIoKSk7Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIC8vIFNr
aXBzIHRoZSAiOiIuCi0gIGNvbnN0IGNoYXIqIGNvbnN0IGN3ZF93aXRob3V0X2RyaXZlID0gc3Ry
Y2hyKGN3ZC5jX3N0cigpLCAnOicpOwotICBBU1NFUlRfVFJVRShjd2Rfd2l0aG91dF9kcml2ZSAh
PSBOVUxMKTsKLSAgRVhQRUNUX1NUUkVRKEdURVNUX1BBVEhfU0VQXywgY3dkX3dpdGhvdXRfZHJp
dmUgKyAxKTsKLSNlbHNlCi0gIEVYUEVDVF9TVFJFUShHVEVTVF9QQVRIX1NFUF8sIGN3ZC5jX3N0
cigpKTsKLSNlbmRpZgotfQotCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0K
LVRFU1QoSXNFbXB0eVRlc3QsIFJldHVybnNUcnVlRm9yRW1wdHlQYXRoKSB7Ci0gIEVYUEVDVF9U
UlVFKEZpbGVQYXRoKCIiKS5Jc0VtcHR5KCkpOwotICBFWFBFQ1RfVFJVRShGaWxlUGF0aChOVUxM
KS5Jc0VtcHR5KCkpOwotfQotCi1URVNUKElzRW1wdHlUZXN0LCBSZXR1cm5zRmFsc2VGb3JOb25F
bXB0eVBhdGgpIHsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJhIikuSXNFbXB0eSgpKTsKLSAg
RVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIuIikuSXNFbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZp
bGVQYXRoKCJhL2IiKS5Jc0VtcHR5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImFcXGJc
XCIpLklzRW1wdHkoKSk7Ci19Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5hbWUgIiIgLT4gIiIKLVRF
U1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFdoZW5FbXB0eU5hbWUpIHsKLSAgRVhQRUNUX1NU
UkVRKCIiLCBGaWxlUGF0aCgiIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOwotfQot
Ci0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZmlsZSIgLT4gImFmaWxlIgotVEVTVChSZW1vdmVE
aXJlY3RvcnlOYW1lVGVzdCwgQnV0Tm9EaXJlY3RvcnkpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZmls
ZSIsCi0gICAgICBGaWxlUGF0aCgiYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIo
KSk7Ci19Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5hbWUgIi9hZmlsZSIgLT4gImFmaWxlIgotVEVT
VChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgUm9vdEZpbGVTaG91bGRHaXZlRmlsZU5hbWUpIHsK
LSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8g
ImFmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVE
aXJlY3RvcnlOYW1lICJhZGlyLyIgLT4gIiIKLVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3Qs
IFdoZXJlVGhlcmVJc05vRmlsZU5hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCIiLAotICAgICAgRmls
ZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXykuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3Ry
KCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZGlyL2FmaWxlIiAtPiAiYWZpbGUi
Ci1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRHaXZlRmlsZU5hbWUpIHsKLSAg
RVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9T
RVBfICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVt
b3ZlRGlyZWN0b3J5TmFtZSAiYWRpci9zdWJkaXIvYWZpbGUiIC0+ICJhZmlsZSIKLVRFU1QoUmVt
b3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEFsc29HaXZlRmlsZU5hbWUpIHsKLSAgRVhQRUNU
X1NUUkVRKCJhZmlsZSIsCi0gICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJz
dWJkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKQotICAgICAgLlJlbW92ZURpcmVjdG9yeU5h
bWUoKS5jX3N0cigpKTsKLX0KLQotI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCi0KLS8vIFRl
c3RzIHRoYXQgUmVtb3ZlRGlyZWN0b3J5TmFtZSgpIHdvcmtzIHdpdGggdGhlIGFsdGVybmF0ZSBz
ZXBhcmF0b3IKLS8vIG9uIFdpbmRvd3MuCi0KLS8vIFJlbW92ZURpcmVjdG9yeU5hbWUoIi9hZmls
ZSIpIC0+ICJhZmlsZSIKLVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFJvb3RGaWxlU2hv
dWxkR2l2ZUZpbGVOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgi
YWZpbGUiLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoIi9hZmlsZSIpLlJlbW92ZURpcmVjdG9y
eU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgiYWRpci8iKSAt
PiAiIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgV2hlcmVUaGVyZUlzTm9GaWxlTmFt
ZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoIiIsCi0gICAgICAgICAg
ICAgICBGaWxlUGF0aCgiYWRpci8iKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIoKSk7Ci19
Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5hbWUoImFkaXIvYWZpbGUiKSAtPiAiYWZpbGUiCi1URVNU
KFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRHaXZlRmlsZU5hbWVGb3JBbHRlcm5hdGVT
ZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAgICAgICAgICAgICBGaWxl
UGF0aCgiYWRpci9hZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0cigpKTsKLX0KLQot
Ly8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgiYWRpci9zdWJkaXIvYWZpbGUiKSAtPiAiYWZpbGUiCi1U
RVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRBbHNvR2l2ZUZpbGVOYW1lRm9yQWx0
ZXJuYXRlU2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWZpbGUiLAotICAgICAgICAgICAg
ICAgRmlsZVBhdGgoImFkaXIvc3ViZGlyL2FmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNf
c3RyKCkpOwotfQotCi0jZW5kaWYKLQotLy8gUmVtb3ZlRmlsZU5hbWUgIiIgLT4gIi4vIgotVEVT
VChSZW1vdmVGaWxlTmFtZVRlc3QsIEVtcHR5TmFtZSkgewotI2lmIEdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFCi0gIC8vIE9uIFdpbmRvd3MgQ0UsIHdlIHVzZSB0aGUgcm9vdCBhcyB0aGUgY3VycmVu
dCBkaXJlY3RvcnkuCi0gIEVYUEVDVF9TVFJFUShHVEVTVF9QQVRIX1NFUF8sCi0gICAgICBGaWxl
UGF0aCgiIikuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKLSNlbHNlCi0gIEVYUEVDVF9TVFJF
USgiLiIgR1RFU1RfUEFUSF9TRVBfLAotICAgICAgRmlsZVBhdGgoIiIpLlJlbW92ZUZpbGVOYW1l
KCkuY19zdHIoKSk7Ci0jZW5kaWYKLX0KLQotLy8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvIiAtPiAi
YWRpci8iCi1URVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgQnV0Tm9GaWxlKSB7Ci0gIEVYUEVDVF9T
VFJFUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAotICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNU
X1BBVEhfU0VQXykuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRmls
ZU5hbWUgImFkaXIvYWZpbGUiIC0+ICJhZGlyLyIKLVRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBH
aXZlc0Rpck5hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8sCi0g
ICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIpCi0gICAgICAuUmVt
b3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvc3Vi
ZGlyL2FmaWxlIiAtPiAiYWRpci9zdWJkaXIvIgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdp
dmVzRGlyQW5kU3ViRGlyTmFtZSkgewotICBFWFBFQ1RfU1RSRVEoImFkaXIiIEdURVNUX1BBVEhf
U0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICBGaWxlUGF0aCgiYWRpciIgR1RF
U1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKQotICAgICAgLlJl
bW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZUZpbGVOYW1lICIvYWZpbGUi
IC0+ICIvIgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzUm9vdERpcikgewotICBFWFBF
Q1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLAotICAgICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBf
ICJhZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNf
QUxUX1BBVEhfU0VQXwotCi0vLyBUZXN0cyB0aGF0IFJlbW92ZUZpbGVOYW1lKCkgd29ya3Mgd2l0
aCB0aGUgYWx0ZXJuYXRlIHNlcGFyYXRvciBvbgotLy8gV2luZG93cy4KLQotLy8gUmVtb3ZlRmls
ZU5hbWUoImFkaXIvIikgLT4gImFkaXIvIgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEJ1dE5v
RmlsZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoImFkaXIiIEdURVNU
X1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyLyIpLlJlbW92ZUZpbGVO
YW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZUZpbGVOYW1lKCJhZGlyL2FmaWxlIikgLT4g
ImFkaXIvIgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzRGlyTmFtZUZvckFsdGVybmF0
ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXywKLSAg
ICAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL2FmaWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0
cigpKTsKLX0KLQotLy8gUmVtb3ZlRmlsZU5hbWUoImFkaXIvc3ViZGlyL2FmaWxlIikgLT4gImFk
aXIvc3ViZGlyLyIKLVRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc0RpckFuZFN1YkRpck5h
bWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZGlyIiBHVEVTVF9Q
QVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9TRVBfLAotICAgICAgICAgICAgICAgRmlsZVBh
dGgoImFkaXIvc3ViZGlyL2FmaWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKLX0KLQot
Ly8gUmVtb3ZlRmlsZU5hbWUoIi9hZmlsZSIpIC0+ICJcIgotVEVTVChSZW1vdmVGaWxlTmFtZVRl
c3QsIEdpdmVzUm9vdERpckZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEo
R1RFU1RfUEFUSF9TRVBfLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoIi9hZmlsZSIpLlJlbW92
ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLSNlbmRpZgotCi1URVNUKE1ha2VGaWxlTmFtZVRl
c3QsIEdlbmVyYXRlV2hlbk51bWJlcklzWmVybykgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxl
UGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCJmb28iKSwgRmlsZVBhdGgoImJhciIpLAotICAg
ICAgMCwgInhtbCIpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIu
eG1sIiwgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVy
YXRlRmlsZU5hbWVOdW1iZXJHdFplcm8pIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6
Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiksIEZpbGVQYXRoKCJiYXIiKSwKLSAgICAgIDEy
LCAieG1sIik7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhcl8xMi54
bWwiLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJh
dGVGaWxlTmFtZVdpdGhTbGFzaE51bWJlcklzWmVybykgewotICBGaWxlUGF0aCBhY3R1YWwgPSBG
aWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyksCi0g
ICAgICBGaWxlUGF0aCgiYmFyIiksIDAsICJ4bWwiKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdU
RVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChNYWtl
RmlsZU5hbWVUZXN0LCBHZW5lcmF0ZUZpbGVOYW1lV2l0aFNsYXNoTnVtYmVyR3RaZXJvKSB7Ci0g
IEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoImZvbyIg
R1RFU1RfUEFUSF9TRVBfKSwKLSAgICAgIEZpbGVQYXRoKCJiYXIiKSwgMTIsICJ4bWwiKTsKLSAg
RVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyXzEyLnhtbCIsIGFjdHVhbC5j
X3N0cigpKTsKLX0KLQotVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZVdoZW5OdW1iZXJJ
c1plcm9BbmREaXJJc0VtcHR5KSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtl
RmlsZU5hbWUoRmlsZVBhdGgoIiIpLCBGaWxlUGF0aCgiYmFyIiksCi0gICAgICAwLCAieG1sIik7
Ci0gIEVYUEVDVF9TVFJFUSgiYmFyLnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChN
YWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZVdoZW5OdW1iZXJJc05vdFplcm9BbmREaXJJc0VtcHR5
KSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgo
IiIpLCBGaWxlUGF0aCgiYmFyIiksCi0gICAgICAxNCwgInhtbCIpOwotICBFWFBFQ1RfU1RSRVEo
ImJhcl8xNC54bWwiLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1QoQ29uY2F0UGF0aHNUZXN0
LCBXb3Jrc1doZW5EaXJEb2VzTm90RW5kV2l0aFBhdGhTZXApIHsKLSAgRmlsZVBhdGggYWN0dWFs
ID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJiYXIueG1sIikpOwotICBFWFBF
Q1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFsLmNfc3RyKCkp
OwotfQotCi1URVNUKENvbmNhdFBhdGhzVGVzdCwgV29ya3NXaGVuUGF0aDFFbmRzV2l0aFBhdGhT
ZXApIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRo
KCJmb28iIEdURVNUX1BBVEhfU0VQXyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGaWxlUGF0aCgiYmFyLnhtbCIpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdU
RVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChDb25j
YXRQYXRoc1Rlc3QsIFBhdGgxQmVpbmdFbXB0eSkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxl
UGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoIiIpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJhci54bWwiKSk7Ci0gIEVYUEVDVF9TVFJFUSgi
YmFyLnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChDb25jYXRQYXRoc1Rlc3QsIFBh
dGgyQmVpbmdFbXB0eSkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0
aHMoRmlsZVBhdGgoImZvbyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRmlsZVBhdGgoIiIpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQ
XywgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNUKENvbmNhdFBhdGhzVGVzdCwgQm90aFBhdGhC
ZWluZ0VtcHR5KSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhG
aWxlUGF0aCgiIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
aWxlUGF0aCgiIikpOwotICBFWFBFQ1RfU1RSRVEoIiIsIGFjdHVhbC5jX3N0cigpKTsKLX0KLQot
VEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgxQ29udGFpbnNQYXRoU2VwKSB7Ci0gIEZpbGVQYXRo
IGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRI
X1NFUF8gImJhciIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RmlsZVBhdGgoImZvb2Jhci54bWwiKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRI
X1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBfICJmb29iYXIueG1sIiwKLSAgICAgICAgICAgICAg
IGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgyQ29udGFp
bnNQYXRoU2VwKSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocygK
LSAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyksCi0gICAgICBGaWxlUGF0aCgi
YmFyIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBH
VEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwKLSAgICAgICAg
ICAgICAgIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgy
RW5kc1dpdGhQYXRoU2VwKSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQ
YXRocyhGaWxlUGF0aCgiZm9vIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGaWxlUGF0aCgiYmFyIiBHVEVTVF9QQVRIX1NFUF8pKTsKLSAgRVhQRUNUX1NUUkVR
KCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBHVEVTVF9QQVRIX1NFUF8sIGFjdHVhbC5jX3N0
cigpKTsKLX0KLQotLy8gUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICIiIC0+ICIiCi1URVNU
KFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvclRlc3QsIEVtcHR5U3RyaW5nKSB7Ci0gIEVYUEVD
VF9TVFJFUSgiIiwKLSAgICAgIEZpbGVQYXRoKCIiKS5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0
b3IoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28i
IC0+ICJmb28iCi1URVNUKFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvclRlc3QsIEZpbGVOb1Ns
YXNoU3RyaW5nKSB7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiwKLSAgICAgIEZpbGVQYXRoKCJmb28i
KS5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3Zl
VHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28vIiAtPiAiZm9vIgotVEVTVChSZW1vdmVUcmFpbGlu
Z1BhdGhTZXBhcmF0b3JUZXN0LCBTaG91bGRSZW1vdmVUcmFpbGluZ1NlcGFyYXRvcikgewotICBF
WFBFQ1RfU1RSRVEoCi0gICAgICAiZm9vIiwKLSAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BB
VEhfU0VQXykuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7Ci0jaWYgR1RF
U1RfSEFTX0FMVF9QQVRIX1NFUF8KLSAgRVhQRUNUX1NUUkVRKCJmb28iLAotICAgICAgICAgICAg
ICAgRmlsZVBhdGgoImZvby8iKS5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0cigp
KTsKLSNlbmRpZgotfQotCi0vLyBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IgImZvby9iYXIv
IiAtPiAiZm9vL2Jhci8iCi1URVNUKFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvclRlc3QsIFNo
b3VsZFJlbW92ZUxhc3RTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BB
VEhfU0VQXyAiYmFyIiwKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhf
U0VQXyAiYmFyIiBHVEVTVF9QQVRIX1NFUF8pCi0gICAgICAgICAgICAgICAuUmVtb3ZlVHJhaWxp
bmdQYXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZVRyYWlsaW5nUGF0aFNl
cGFyYXRvciAiZm9vL2JhciIgLT4gImZvby9iYXIiCi1URVNUKFJlbW92ZVRyYWlsaW5nUGF0aFNl
cGFyYXRvclRlc3QsIFNob3VsZFJldHVyblVubW9kaWZpZWQpIHsKLSAgRVhQRUNUX1NUUkVRKCJm
b28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28i
IEdURVNUX1BBVEhfU0VQXyAiYmFyIikKLSAgICAgICAgICAgICAgIC5SZW1vdmVUcmFpbGluZ1Bh
dGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKLX0KLQotVEVTVChEaXJlY3RvcnlUZXN0LCBSb290RGly
ZWN0b3J5RXhpc3RzKSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUyAgLy8gV2UgYXJlIG9uIFdpbmRv
d3MuCi0gIGNoYXIgY3VycmVudF9kcml2ZVtfTUFYX1BBVEhdOyAgLy8gTk9MSU5UCi0gIGN1cnJl
bnRfZHJpdmVbMF0gPSBzdGF0aWNfY2FzdDxjaGFyPihfZ2V0ZHJpdmUoKSArICdBJyAtIDEpOwot
ICBjdXJyZW50X2RyaXZlWzFdID0gJzonOwotICBjdXJyZW50X2RyaXZlWzJdID0gJ1xcJzsKLSAg
Y3VycmVudF9kcml2ZVszXSA9ICdcMCc7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKGN1cnJlbnRf
ZHJpdmUpLkRpcmVjdG9yeUV4aXN0cygpKTsKLSNlbHNlCi0gIEVYUEVDVF9UUlVFKEZpbGVQYXRo
KCIvIikuRGlyZWN0b3J5RXhpc3RzKCkpOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi19
Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi1URVNUKERpcmVjdG9yeVRlc3QsIFJvb3RPZldyb25n
RHJpdmVEb2VzTm90RXhpc3RzKSB7Ci0gIGNvbnN0IGludCBzYXZlZF9kcml2ZV8gPSBfZ2V0ZHJp
dmUoKTsKLSAgLy8gRmluZCBhIGRyaXZlIHRoYXQgZG9lc24ndCBleGlzdC4gU3RhcnQgd2l0aCAn
WicgdG8gYXZvaWQgY29tbW9uIG9uZXMuCi0gIGZvciAoY2hhciBkcml2ZSA9ICdaJzsgZHJpdmUg
Pj0gJ0EnOyBkcml2ZS0tKQotICAgIGlmIChfY2hkcml2ZShkcml2ZSAtICdBJyArIDEpID09IC0x
KSB7Ci0gICAgICBjaGFyIG5vbl9kcml2ZVtfTUFYX1BBVEhdOyAgLy8gTk9MSU5UCi0gICAgICBu
b25fZHJpdmVbMF0gPSBkcml2ZTsKLSAgICAgIG5vbl9kcml2ZVsxXSA9ICc6JzsKLSAgICAgIG5v
bl9kcml2ZVsyXSA9ICdcXCc7Ci0gICAgICBub25fZHJpdmVbM10gPSAnXDAnOwotICAgICAgRVhQ
RUNUX0ZBTFNFKEZpbGVQYXRoKG5vbl9kcml2ZSkuRGlyZWN0b3J5RXhpc3RzKCkpOwotICAgICAg
YnJlYWs7Ci0gICAgfQotICBfY2hkcml2ZShzYXZlZF9kcml2ZV8pOwotfQotI2VuZGlmICAvLyBH
VEVTVF9PU19XSU5ET1dTCi0KLSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLS8vIFdpbmRv
d3MgQ0UgX2RvZXNfIGNvbnNpZGVyIGFuIGVtcHR5IGRpcmVjdG9yeSB0byBleGlzdC4KLVRFU1Qo
RGlyZWN0b3J5VGVzdCwgRW1wdHlQYXRoRGlyZWN0b3J5RG9lc05vdEV4aXN0KSB7Ci0gIEVYUEVD
VF9GQUxTRShGaWxlUGF0aCgiIikuRGlyZWN0b3J5RXhpc3RzKCkpOwotfQotI2VuZGlmICAvLyAh
R1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLQotVEVTVChEaXJlY3RvcnlUZXN0LCBDdXJyZW50RGly
ZWN0b3J5RXhpc3RzKSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUyAgLy8gV2UgYXJlIG9uIFdpbmRv
d3MuCi0jaWZuZGVmIF9XSU4zMl9DRSAgLy8gV2luZG93cyBDRSBkb2Vzbid0IGhhdmUgYSBjdXJy
ZW50IGRpcmVjdG9yeS4KLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi4iKS5EaXJlY3RvcnlFeGlz
dHMoKSk7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIuXFwiKS5EaXJlY3RvcnlFeGlzdHMoKSk7
Ci0jZW5kaWYgIC8vIF9XSU4zMl9DRQotI2Vsc2UKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi4i
KS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIuLyIpLkRpcmVj
dG9yeUV4aXN0cygpKTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotfQotCi1URVNUKE5v
cm1hbGl6ZVRlc3QsIE51bGxTdHJpbmdzRXF1YWxFbXB0eURpcmVjdG9yeSkgewotICBFWFBFQ1Rf
U1RSRVEoIiIsIEZpbGVQYXRoKE5VTEwpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIEZp
bGVQYXRoKFN0cmluZyhOVUxMKSkuY19zdHIoKSk7Ci19Ci0KLS8vICJmb28vYmFyIiA9PSBmb28v
L2JhciIgPT0gImZvby8vL2JhciIKLVRFU1QoTm9ybWFsaXplVGVzdCwgTXVsdGlwbGVDb25zZWN1
dGl2ZVNlcGFwYXJhdG9yc0luTWlkc3RyaW5nKSB7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVT
VF9QQVRIX1NFUF8gImJhciIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8gImJhciIpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFU
SF9TRVBfICJiYXIiLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9T
RVBfIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBH
VEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfCi0gICAgICAgICAgICAgICAgICAgICAgICBH
VEVTVF9QQVRIX1NFUF8gImJhciIpLmNfc3RyKCkpOwotfQotCi0vLyAiL2JhciIgPT0gLy9iYXIi
ID09ICIvLy9iYXIiCi1URVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRpcGxlQ29uc2VjdXRpdmVTZXBh
cGFyYXRvcnNBdFN0cmluZ1N0YXJ0KSB7Ci0gIEVYUEVDVF9TVFJFUShHVEVTVF9QQVRIX1NFUF8g
ImJhciIsCi0gICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5jX3N0cigpKTsKLSAg
RVhQRUNUX1NUUkVRKEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICBGaWxlUGF0aChHVEVTVF9Q
QVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVR
KEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gR1RF
U1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuY19zdHIoKSk7Ci19Ci0KLS8vICJm
b28vIiA9PSBmb28vLyIgPT0gImZvby8vLyIKLVRFU1QoTm9ybWFsaXplVGVzdCwgTXVsdGlwbGVD
b25zZWN1dGl2ZVNlcGFwYXJhdG9yc0F0U3RyaW5nRW5kKSB7Ci0gIEVYUEVDVF9TVFJFUSgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKS5j
X3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKLSAgICBGaWxl
UGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfKS5jX3N0cigpKTsKLSAg
RVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKLSAgICBGaWxlUGF0aCgiZm9vIiBH
VEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXykuY19zdHIoKSk7
Ci19Ci0KLSNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXwotCi0vLyBUZXN0cyB0aGF0IHNlcGFy
YXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGFyZSBub3JtYWxpemVkCi0vLyByZWdhcmRs
ZXNzIG9mIHRoZWlyIGNvbWJpbmF0aW9uIChlLmcuICJmb29cIiA9PSJmb28vXCIgPT0KLS8vICJm
b29cXC8iKS4KLVRFU1QoTm9ybWFsaXplVGVzdCwgTWl4QWx0ZXJuYXRlU2VwYXJhdG9yQXRTdHJp
bmdFbmQpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAg
ICAgICAgIEZpbGVQYXRoKCJmb28vIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBH
VEVTVF9QQVRIX1NFUF8sCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRI
X1NFUF8gIi8iKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQ
XywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28vLyIgR1RFU1RfUEFUSF9TRVBfKS5jX3N0
cigpKTsKLX0KLQotI2VuZGlmCi0KLVRFU1QoQXNzaWdubWVudE9wZXJhdG9yVGVzdCwgRGVmYXVs
dEFzc2lnbmVkVG9Ob25EZWZhdWx0KSB7Ci0gIEZpbGVQYXRoIGRlZmF1bHRfcGF0aDsKLSAgRmls
ZVBhdGggbm9uX2RlZmF1bHRfcGF0aCgicGF0aCIpOwotICBub25fZGVmYXVsdF9wYXRoID0gZGVm
YXVsdF9wYXRoOwotICBFWFBFQ1RfU1RSRVEoIiIsIG5vbl9kZWZhdWx0X3BhdGguY19zdHIoKSk7
Ci0gIEVYUEVDVF9TVFJFUSgiIiwgZGVmYXVsdF9wYXRoLmNfc3RyKCkpOyAgLy8gUkhTIHZhciBp
cyB1bmNoYW5nZWQuCi19Ci0KLVRFU1QoQXNzaWdubWVudE9wZXJhdG9yVGVzdCwgTm9uRGVmYXVs
dEFzc2lnbmVkVG9EZWZhdWx0KSB7Ci0gIEZpbGVQYXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgi
KTsKLSAgRmlsZVBhdGggZGVmYXVsdF9wYXRoOwotICBkZWZhdWx0X3BhdGggPSBub25fZGVmYXVs
dF9wYXRoOwotICBFWFBFQ1RfU1RSRVEoInBhdGgiLCBkZWZhdWx0X3BhdGguY19zdHIoKSk7Ci0g
IEVYUEVDVF9TVFJFUSgicGF0aCIsIG5vbl9kZWZhdWx0X3BhdGguY19zdHIoKSk7ICAvLyBSSFMg
dmFyIGlzIHVuY2hhbmdlZC4KLX0KLQotVEVTVChBc3NpZ25tZW50T3BlcmF0b3JUZXN0LCBDb25z
dEFzc2lnbmVkVG9Ob25Db25zdCkgewotICBjb25zdCBGaWxlUGF0aCBjb25zdF9kZWZhdWx0X3Bh
dGgoImNvbnN0X3BhdGgiKTsKLSAgRmlsZVBhdGggbm9uX2RlZmF1bHRfcGF0aCgicGF0aCIpOwot
ICBub25fZGVmYXVsdF9wYXRoID0gY29uc3RfZGVmYXVsdF9wYXRoOwotICBFWFBFQ1RfU1RSRVEo
ImNvbnN0X3BhdGgiLCBub25fZGVmYXVsdF9wYXRoLmNfc3RyKCkpOwotfQotCi1jbGFzcyBEaXJl
Y3RvcnlDcmVhdGlvblRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFs
IHZvaWQgU2V0VXAoKSB7Ci0gICAgdGVzdGRhdGFfcGF0aF8uU2V0KEZpbGVQYXRoKFN0cmluZzo6
Rm9ybWF0KCIlcyVzJXMiLAotICAgICAgICBUZW1wRGlyKCkuY19zdHIoKSwgR2V0Q3VycmVudEV4
ZWN1dGFibGVOYW1lKCkuY19zdHIoKSwKLSAgICAgICAgIl9kaXJlY3RvcnlfY3JlYXRpb24iIEdU
RVNUX1BBVEhfU0VQXyAidGVzdCIgR1RFU1RfUEFUSF9TRVBfKSkpOwotICAgIHRlc3RkYXRhX2Zp
bGVfLlNldCh0ZXN0ZGF0YV9wYXRoXy5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKSk7Ci0K
LSAgICB1bmlxdWVfZmlsZTBfLlNldChGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKHRlc3RkYXRhX3Bh
dGhfLCBGaWxlUGF0aCgidW5pcXVlIiksCi0gICAgICAgIDAsICJ0eHQiKSk7Ci0gICAgdW5pcXVl
X2ZpbGUxXy5TZXQoRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZSh0ZXN0ZGF0YV9wYXRoXywgRmlsZVBh
dGgoInVuaXF1ZSIpLAotICAgICAgICAxLCAidHh0IikpOwotCi0gICAgcmVtb3ZlKHRlc3RkYXRh
X2ZpbGVfLmNfc3RyKCkpOwotICAgIHJlbW92ZSh1bmlxdWVfZmlsZTBfLmNfc3RyKCkpOwotICAg
IHJlbW92ZSh1bmlxdWVfZmlsZTFfLmNfc3RyKCkpOwotICAgIHBvc2l4OjpSbURpcih0ZXN0ZGF0
YV9wYXRoXy5jX3N0cigpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAg
ICByZW1vdmUodGVzdGRhdGFfZmlsZV8uY19zdHIoKSk7Ci0gICAgcmVtb3ZlKHVuaXF1ZV9maWxl
MF8uY19zdHIoKSk7Ci0gICAgcmVtb3ZlKHVuaXF1ZV9maWxlMV8uY19zdHIoKSk7Ci0gICAgcG9z
aXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhfLmNfc3RyKCkpOwotICB9Ci0KLSAgU3RyaW5nIFRlbXBE
aXIoKSBjb25zdCB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSAgICByZXR1cm4gU3Ry
aW5nKCJcXHRlbXBcXCIpOwotI2VsaWYgR1RFU1RfT1NfV0lORE9XUwotICAgIGNvbnN0IGNoYXIq
IHRlbXBfZGlyID0gcG9zaXg6OkdldEVudigiVEVNUCIpOwotICAgIGlmICh0ZW1wX2RpciA9PSBO
VUxMIHx8IHRlbXBfZGlyWzBdID09ICdcMCcpCi0gICAgICByZXR1cm4gU3RyaW5nKCJcXHRlbXBc
XCIpOwotICAgIGVsc2UgaWYgKFN0cmluZyh0ZW1wX2RpcikuRW5kc1dpdGgoIlxcIikpCi0gICAg
ICByZXR1cm4gU3RyaW5nKHRlbXBfZGlyKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gU3RyaW5n
OjpGb3JtYXQoIiVzXFwiLCB0ZW1wX2Rpcik7Ci0jZWxzZQotICAgIHJldHVybiBTdHJpbmcoIi90
bXAvIik7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0gIH0KLQotICB2b2lk
IENyZWF0ZVRleHRGaWxlKGNvbnN0IGNoYXIqIGZpbGVuYW1lKSB7Ci0gICAgRklMRSogZiA9IHBv
c2l4OjpGT3BlbihmaWxlbmFtZSwgInciKTsKLSAgICBmcHJpbnRmKGYsICJ0ZXh0XG4iKTsKLSAg
ICBmY2xvc2UoZik7Ci0gIH0KLQotICAvLyBTdHJpbmdzIHJlcHJlc2VudGluZyBhIGRpcmVjdG9y
eSBhbmQgYSBmaWxlLCB3aXRoIGlkZW50aWNhbCBwYXRocwotICAvLyBleGNlcHQgZm9yIHRoZSB0
cmFpbGluZyBzZXBhcmF0b3IgY2hhcmFjdGVyIHRoYXQgZGlzdGlucXVpc2hlcwotICAvLyBhIGRp
cmVjdG9yeSBuYW1lZCAndGVzdCcgZnJvbSBhIGZpbGUgbmFtZWQgJ3Rlc3QnLiBFeGFtcGxlIG5h
bWVzOgotICBGaWxlUGF0aCB0ZXN0ZGF0YV9wYXRoXzsgIC8vICIvdG1wL2RpcmVjdG9yeV9jcmVh
dGlvbi90ZXN0LyIKLSAgRmlsZVBhdGggdGVzdGRhdGFfZmlsZV87ICAvLyAiL3RtcC9kaXJlY3Rv
cnlfY3JlYXRpb24vdGVzdCIKLSAgRmlsZVBhdGggdW5pcXVlX2ZpbGUwXzsgIC8vICIvdG1wL2Rp
cmVjdG9yeV9jcmVhdGlvbi90ZXN0L3VuaXF1ZS50eHQiCi0gIEZpbGVQYXRoIHVuaXF1ZV9maWxl
MV87ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRpb24vdGVzdC91bmlxdWVfMS50eHQiCi19Owot
Ci1URVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2
ZWx5KSB7Ci0gIEVYUEVDVF9GQUxTRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlzdHMoKSkg
PDwgdGVzdGRhdGFfcGF0aF8uY19zdHIoKTsKLSAgRVhQRUNUX1RSVUUodGVzdGRhdGFfcGF0aF8u
Q3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKTsKLSAgRVhQRUNUX1RSVUUodGVzdGRhdGFf
cGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkpOwotfQotCi1URVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25U
ZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0ZvckFscmVhZHlFeGlzdGluZ1BhdGgpIHsKLSAgRVhQRUNU
X0ZBTFNFKHRlc3RkYXRhX3BhdGhfLkRpcmVjdG9yeUV4aXN0cygpKSA8PCB0ZXN0ZGF0YV9wYXRo
Xy5jX3N0cigpOwotICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmll
c1JlY3Vyc2l2ZWx5KCkpOwotICAvLyBDYWxsICdjcmVhdGUnIGFnYWluLi4uIHNob3VsZCBzdGls
bCBzdWNjZWVkLgotICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmll
c1JlY3Vyc2l2ZWx5KCkpOwotfQotCi1URVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVh
dGVEaXJlY3Rvcmllc0FuZFVuaXF1ZUZpbGVuYW1lKSB7Ci0gIEZpbGVQYXRoIGZpbGVfcGF0aChG
aWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFtZSh0ZXN0ZGF0YV9wYXRoXywKLSAgICAgIEZp
bGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIpKTsKLSAgRVhQRUNUX1NUUkVRKHVuaXF1ZV9maWxlMF8u
Y19zdHIoKSwgZmlsZV9wYXRoLmNfc3RyKCkpOwotICBFWFBFQ1RfRkFMU0UoZmlsZV9wYXRoLkZp
bGVPckRpcmVjdG9yeUV4aXN0cygpKTsgIC8vIGZpbGUgbm90IHRoZXJlCi0KLSAgdGVzdGRhdGFf
cGF0aF8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpOwotICBFWFBFQ1RfRkFMU0UoZmls
ZV9wYXRoLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsgIC8vIGZpbGUgc3RpbGwgbm90IHRoZXJl
Ci0gIENyZWF0ZVRleHRGaWxlKGZpbGVfcGF0aC5jX3N0cigpKTsKLSAgRVhQRUNUX1RSVUUoZmls
ZV9wYXRoLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsKLQotICBGaWxlUGF0aCBmaWxlX3BhdGgy
KEZpbGVQYXRoOjpHZW5lcmF0ZVVuaXF1ZUZpbGVOYW1lKHRlc3RkYXRhX3BhdGhfLAotICAgICAg
RmlsZVBhdGgoInVuaXF1ZSIpLCAidHh0IikpOwotICBFWFBFQ1RfU1RSRVEodW5pcXVlX2ZpbGUx
Xy5jX3N0cigpLCBmaWxlX3BhdGgyLmNfc3RyKCkpOwotICBFWFBFQ1RfRkFMU0UoZmlsZV9wYXRo
Mi5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAvLyBmaWxlIG5vdCB0aGVyZQotICBDcmVhdGVU
ZXh0RmlsZShmaWxlX3BhdGgyLmNfc3RyKCkpOwotICBFWFBFQ1RfVFJVRShmaWxlX3BhdGgyLkZp
bGVPckRpcmVjdG9yeUV4aXN0cygpKTsKLX0KLQotVEVTVF9GKERpcmVjdG9yeUNyZWF0aW9uVGVz
dCwgQ3JlYXRlRGlyZWN0b3JpZXNGYWlsKSB7Ci0gIC8vIGZvcmNlIGEgZmFpbHVyZSBieSBwdXR0
aW5nIGEgZmlsZSB3aGVyZSB3ZSB3aWxsIHRyeSB0byBjcmVhdGUgYSBkaXJlY3RvcnkuCi0gIENy
ZWF0ZVRleHRGaWxlKHRlc3RkYXRhX2ZpbGVfLmNfc3RyKCkpOwotICBFWFBFQ1RfVFJVRSh0ZXN0
ZGF0YV9maWxlXy5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7Ci0gIEVYUEVDVF9GQUxTRSh0ZXN0
ZGF0YV9maWxlXy5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0gIEVYUEVDVF9GQUxTRSh0ZXN0ZGF0YV9m
aWxlXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOwotfQotCi1URVNUKE5vRGlyZWN0
b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVOb0RpcmVjdG9yaWVzRm9yRGVmYXVsdFhtbEZpbGUpIHsK
LSAgY29uc3QgRmlsZVBhdGggdGVzdF9kZXRhaWxfeG1sKCJ0ZXN0X2RldGFpbC54bWwiKTsKLSAg
RVhQRUNUX0ZBTFNFKHRlc3RfZGV0YWlsX3htbC5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5
KCkpOwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yKSB7Ci0gIEZp
bGVQYXRoIGZwOwotICBFWFBFQ1RfU1RSRVEoIiIsIGZwLmNfc3RyKCkpOwotfQotCi1URVNUKEZp
bGVQYXRoVGVzdCwgQ2hhckFuZENvcHlDb25zdHJ1Y3RvcnMpIHsKLSAgY29uc3QgRmlsZVBhdGgg
ZnAoInNwaWN5Iik7Ci0gIEVYUEVDVF9TVFJFUSgic3BpY3kiLCBmcC5jX3N0cigpKTsKLQotICBj
b25zdCBGaWxlUGF0aCBmcF9jb3B5KGZwKTsKLSAgRVhQRUNUX1NUUkVRKCJzcGljeSIsIGZwX2Nv
cHkuY19zdHIoKSk7Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0LCBTdHJpbmdDb25zdHJ1Y3Rvcikg
ewotICBjb25zdCBGaWxlUGF0aCBmcChTdHJpbmcoImNpZGVyIikpOwotICBFWFBFQ1RfU1RSRVEo
ImNpZGVyIiwgZnAuY19zdHIoKSk7Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0LCBTZXQpIHsKLSAg
Y29uc3QgRmlsZVBhdGggYXBwbGUoImFwcGxlIik7Ci0gIEZpbGVQYXRoIG1hYygibWFjIik7Ci0g
IG1hYy5TZXQoYXBwbGUpOyAgLy8gSW1wbGVtZW50IFNldCgpIHNpbmNlIG92ZXJsb2FkaW5nIG9w
ZXJhdG9yPSBpcyBmb3JiaWRkZW4uCi0gIEVYUEVDVF9TVFJFUSgiYXBwbGUiLCBtYWMuY19zdHIo
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiYXBwbGUiLCBhcHBsZS5jX3N0cigpKTsKLX0KLQotVEVTVChG
aWxlUGF0aFRlc3QsIFRvU3RyaW5nKSB7Ci0gIGNvbnN0IEZpbGVQYXRoIGZpbGUoImRyaW5rIik7
Ci0gIFN0cmluZyBzdHIoZmlsZS5Ub1N0cmluZygpKTsKLSAgRVhQRUNUX1NUUkVRKCJkcmluayIs
IHN0ci5jX3N0cigpKTsKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIFJlbW92ZUV4dGVuc2lvbikg
ewotICBFWFBFQ1RfU1RSRVEoImFwcCIsIEZpbGVQYXRoKCJhcHAuZXhlIikuUmVtb3ZlRXh0ZW5z
aW9uKCJleGUiKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJBUFAiLCBGaWxlUGF0aCgiQVBQ
LkVYRSIpLlJlbW92ZUV4dGVuc2lvbigiZXhlIikuY19zdHIoKSk7Ci19Ci0KLVRFU1QoRmlsZVBh
dGhUZXN0LCBSZW1vdmVFeHRlbnNpb25XaGVuVGhlcmVJc05vRXh0ZW5zaW9uKSB7Ci0gIEVYUEVD
VF9TVFJFUSgiYXBwIiwgRmlsZVBhdGgoImFwcCIpLlJlbW92ZUV4dGVuc2lvbigiZXhlIikuY19z
dHIoKSk7Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0LCBJc0RpcmVjdG9yeSkgewotICBFWFBFQ1Rf
RkFMU0UoRmlsZVBhdGgoImNvbGEiKS5Jc0RpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX1RSVUUoRmls
ZVBhdGgoImtvYWxhIiBHVEVTVF9QQVRIX1NFUF8pLklzRGlyZWN0b3J5KCkpOwotI2lmIEdURVNU
X0hBU19BTFRfUEFUSF9TRVBfCi0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJrb2FsYS8iKS5Jc0Rp
cmVjdG9yeSgpKTsKLSNlbmRpZgotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgSXNBYnNvbHV0ZVBh
dGgpIHsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJpcyIgR1RFU1RfUEFUSF9TRVBfICJyZWxh
dGl2ZSIpLklzQWJzb2x1dGVQYXRoKCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIiIpLklz
QWJzb2x1dGVQYXRoKCkpOwotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgRVhQRUNUX1RSVUUoRmls
ZVBhdGgoImM6XFwiIEdURVNUX1BBVEhfU0VQXyAiaXNfbm90IgotICAgICAgICAgICAgICAgICAg
ICAgICBHVEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIikuSXNBYnNvbHV0ZVBhdGgoKSk7Ci0gIEVY
UEVDVF9GQUxTRShGaWxlUGF0aCgiYzpmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuSXNBYnNv
bHV0ZVBhdGgoKSk7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJjOi8iIEdURVNUX1BBVEhfU0VQ
XyAiaXNfbm90IgotICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8gInJlbGF0
aXZlIikuSXNBYnNvbHV0ZVBhdGgoKSk7Ci0jZWxzZQotICBFWFBFQ1RfVFJVRShGaWxlUGF0aChH
VEVTVF9QQVRIX1NFUF8gImlzX25vdCIgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIpCi0gICAg
ICAgICAgICAgIC5Jc0Fic29sdXRlUGF0aCgpKTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9X
UwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgSXNSb290RGlyZWN0b3J5KSB7Ci0jaWYgR1RFU1Rf
T1NfV0lORE9XUwotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiYTpcXCIpLklzUm9vdERpcmVjdG9y
eSgpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIlo6LyIpLklzUm9vdERpcmVjdG9yeSgpKTsK
LSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImU6Ly8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVY
UEVDVF9GQUxTRShGaWxlUGF0aCgiIikuSXNSb290RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfRkFM
U0UoRmlsZVBhdGgoImI6IikuSXNSb290RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmls
ZVBhdGgoImI6YSIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRo
KCI4Oi8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiY3wv
IikuSXNSb290RGlyZWN0b3J5KCkpOwotI2Vsc2UKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi8i
KS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIvLyIpLklzUm9v
dERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIiKS5Jc1Jvb3REaXJlY3Rv
cnkoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiXFwiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7
Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiL3giKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0jZW5k
aWYKLX0KLQotfSAgLy8gbmFtZXNwYWNlCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8v
IG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlYWU4MjI5NmM5MjFmMGFmZTQyZmMyMzM1NzQ5NzBlZTc3MDllNWJkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICsw
LDAgQEAKLS8vIENvcHlyaWdodCAyMDAzLCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0v
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0v
LyBBdXRob3JzOiBEYW4gRWdub3IgKGVnbm9yQGdvb2dsZS5jb20pCi0vLyBQb3J0ZWQgdG8gV2lu
ZG93czogVmFkaW0gQmVybWFuICh2YWRpbWJAZ29vZ2xlLmNvbSkKLQotI2luY2x1ZGUgPGd0ZXN0
L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaD4KLQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLW5hbWVzcGFjZSB7Ci0KLXVzaW5nIHRlc3Rpbmc6Ok1l
c3NhZ2U7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjsKLQotaW50IG51bTsK
LU1lc3NhZ2UqIGhpc3RvcnkgPSBOVUxMOwotCi0vLyBDbGFzcyB3aGljaCB0cmFja3MgYWxsb2Nh
dGlvbi9kZWFsbG9jYXRpb24KLWNsYXNzIEEgewotIHB1YmxpYzoKLSAgQSgpOiBteW51bShudW0r
KykgeyAqaGlzdG9yeSA8PCAiQSIgPDwgbXludW0gPDwgIiBjdG9yXG4iOyB9Ci0gIHZpcnR1YWwg
fkEoKSB7ICpoaXN0b3J5IDw8ICJBIiA8PCBteW51bSA8PCAiIGR0b3JcbiI7IH0KLSAgdmlydHVh
bCB2b2lkIFVzZSgpIHsgKmhpc3RvcnkgPDwgIkEiIDw8IG15bnVtIDw8ICIgdXNlXG4iOyB9Ci0g
cHJvdGVjdGVkOgotICBpbnQgbXludW07Ci19OwotCi0vLyBTdWJjbGFzcwotY2xhc3MgQiA6IHB1
YmxpYyBBIHsKLSBwdWJsaWM6Ci0gIEIoKSB7ICpoaXN0b3J5IDw8ICJCIiA8PCBteW51bSA8PCAi
IGN0b3JcbiI7IH0KLSAgfkIoKSB7ICpoaXN0b3J5IDw8ICJCIiA8PCBteW51bSA8PCAiIGR0b3Jc
biI7IH0KLSAgdmlydHVhbCB2b2lkIFVzZSgpIHsgKmhpc3RvcnkgPDwgIkIiIDw8IG15bnVtIDw8
ICIgdXNlXG4iOyB9Ci19OwotCi1jbGFzcyBMaW5rZWRQdHJUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgewotIHB1YmxpYzoKLSAgTGlua2VkUHRyVGVzdCgpIHsKLSAgICBudW0gPSAwOwotICAg
IGhpc3RvcnkgPSBuZXcgTWVzc2FnZTsKLSAgfQotCi0gIHZpcnR1YWwgfkxpbmtlZFB0clRlc3Qo
KSB7Ci0gICAgZGVsZXRlIGhpc3Rvcnk7Ci0gICAgaGlzdG9yeSA9IE5VTEw7Ci0gIH0KLX07Ci0K
LVRFU1RfRihMaW5rZWRQdHJUZXN0LCBHZW5lcmFsVGVzdCkgewotICB7Ci0gICAgbGlua2VkX3B0
cjxBPiBhMCwgYTEsIGEyOwotICAgIGEwID0gYTA7Ci0gICAgYTEgPSBhMjsKLSAgICBBU1NFUlRf
RVEoYTAuZ2V0KCksIHN0YXRpY19jYXN0PEEqPihOVUxMKSk7Ci0gICAgQVNTRVJUX0VRKGExLmdl
dCgpLCBzdGF0aWNfY2FzdDxBKj4oTlVMTCkpOwotICAgIEFTU0VSVF9FUShhMi5nZXQoKSwgc3Rh
dGljX2Nhc3Q8QSo+KE5VTEwpKTsKLSAgICBBU1NFUlRfVFJVRShhMCA9PSBOVUxMKTsKLSAgICBB
U1NFUlRfVFJVRShhMSA9PSBOVUxMKTsKLSAgICBBU1NFUlRfVFJVRShhMiA9PSBOVUxMKTsKLQot
ICAgIHsKLSAgICAgIGxpbmtlZF9wdHI8QT4gYTMobmV3IEEpOwotICAgICAgYTAgPSBhMzsKLSAg
ICAgIEFTU0VSVF9UUlVFKGEwID09IGEzKTsKLSAgICAgIEFTU0VSVF9UUlVFKGEwICE9IE5VTEwp
OwotICAgICAgQVNTRVJUX1RSVUUoYTAuZ2V0KCkgPT0gYTMpOwotICAgICAgQVNTRVJUX1RSVUUo
YTAgPT0gYTMuZ2V0KCkpOwotICAgICAgbGlua2VkX3B0cjxBPiBhNChhMCk7Ci0gICAgICBhMSA9
IGE0OwotICAgICAgbGlua2VkX3B0cjxBPiBhNShuZXcgQSk7Ci0gICAgICBBU1NFUlRfVFJVRShh
NS5nZXQoKSAhPSBhMyk7Ci0gICAgICBBU1NFUlRfVFJVRShhNSAhPSBhMy5nZXQoKSk7Ci0gICAg
ICBhMiA9IGE1OwotICAgICAgbGlua2VkX3B0cjxCPiBiMChuZXcgQik7Ci0gICAgICBsaW5rZWRf
cHRyPEE+IGE2KGIwKTsKLSAgICAgIEFTU0VSVF9UUlVFKGIwID09IGE2KTsKLSAgICAgIEFTU0VS
VF9UUlVFKGE2ID09IGIwKTsKLSAgICAgIEFTU0VSVF9UUlVFKGIwICE9IE5VTEwpOwotICAgICAg
YTUgPSBiMDsKLSAgICAgIGE1ID0gYjA7Ci0gICAgICBhMy0+VXNlKCk7Ci0gICAgICBhNC0+VXNl
KCk7Ci0gICAgICBhNS0+VXNlKCk7Ci0gICAgICBhNi0+VXNlKCk7Ci0gICAgICBiMC0+VXNlKCk7
Ci0gICAgICAoKmIwKS5Vc2UoKTsKLSAgICAgIGIwLmdldCgpLT5Vc2UoKTsKLSAgICB9Ci0KLSAg
ICBhMC0+VXNlKCk7Ci0gICAgYTEtPlVzZSgpOwotICAgIGEyLT5Vc2UoKTsKLQotICAgIGExID0g
YTI7Ci0gICAgYTIucmVzZXQobmV3IEEpOwotICAgIGEwLnJlc2V0KCk7Ci0KLSAgICBsaW5rZWRf
cHRyPEE+IGE3OwotICB9Ci0KLSAgQVNTRVJUX1NUUkVRKAotICAgICJBMCBjdG9yXG4iCi0gICAg
IkExIGN0b3JcbiIKLSAgICAiQTIgY3RvclxuIgotICAgICJCMiBjdG9yXG4iCi0gICAgIkEwIHVz
ZVxuIgotICAgICJBMCB1c2VcbiIKLSAgICAiQjIgdXNlXG4iCi0gICAgIkIyIHVzZVxuIgotICAg
ICJCMiB1c2VcbiIKLSAgICAiQjIgdXNlXG4iCi0gICAgIkIyIHVzZVxuIgotICAgICJCMiBkdG9y
XG4iCi0gICAgIkEyIGR0b3JcbiIKLSAgICAiQTAgdXNlXG4iCi0gICAgIkEwIHVzZVxuIgotICAg
ICJBMSB1c2VcbiIKLSAgICAiQTMgY3RvclxuIgotICAgICJBMCBkdG9yXG4iCi0gICAgIkEzIGR0
b3JcbiIKLSAgICAiQTEgZHRvclxuIiwKLSAgICBoaXN0b3J5LT5HZXRTdHJpbmcoKS5jX3N0cigp
Ci0gICk7Ci19Ci0KLX0gIC8vIFVubmFtZWQgbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWxpc3RlbmVyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWxpc3RlbmVyX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGM5YmUzOWE4N2U4OGQ4OTYwMWI5YmM5MzcyYTE0ZWRhYWY2MTI5NDMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saXN0ZW5lcl90ZXN0LmNjCisrKyAvZGV2L251bGwK
QEAgLTEsMzEzICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6
Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8K
LS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQotLy8KLS8vIFRo
ZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKLS8vCi0vLyBUaGlz
IGZpbGUgdmVyaWZpZXMgR29vZ2xlIFRlc3QgZXZlbnQgbGlzdGVuZXJzIHJlY2VpdmUgZXZlbnRz
IGF0IHRoZQotLy8gcmlnaHQgdGltZXMuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotI2lu
Y2x1ZGUgPHZlY3Rvcj4KLQotdXNpbmcgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1l
bnQ7Ci11c2luZyA6OnRlc3Rpbmc6OkVudmlyb25tZW50OwotdXNpbmcgOjp0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6VGVz
dENhc2U7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyOwotdXNpbmcgOjp0ZXN0
aW5nOjpUZXN0SW5mbzsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ7Ci11c2luZyA6
OnRlc3Rpbmc6OlVuaXRUZXN0OwotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOwot
Ci0vLyBVc2VkIGJ5IHRlc3RzIHRvIHJlZ2lzdGVyIHRoZWlyIGV2ZW50cy4KLXN0ZDo6dmVjdG9y
PFN0cmluZz4qIGdfZXZlbnRzID0gTlVMTDsKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNw
YWNlIGludGVybmFsIHsKLQotY2xhc3MgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lciA6IHB1YmxpYyBU
ZXN0RXZlbnRMaXN0ZW5lciB7Ci0gcHVibGljOgotICBFdmVudFJlY29yZGluZ0xpc3RlbmVyKGNv
bnN0IGNoYXIqIG5hbWUpIDogbmFtZV8obmFtZSkge30KLQotIHByb3RlY3RlZDoKLSAgdmlydHVh
bCB2b2lkIE9uVGVzdFByb2dyYW1TdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykg
ewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdFByb2dy
YW1TdGFydCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25TdGFydChj
b25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpdGVyYXRpb24pIHsKLSAgICBNZXNzYWdlIG1lc3NhZ2U7Ci0gICAgbWVz
c2FnZSA8PCBHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0SXRlcmF0aW9uU3RhcnQiKQotICAgICAg
ICAgICAgPDwgIigiIDw8IGl0ZXJhdGlvbiA8PCAiKSI7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFj
ayhtZXNzYWdlLkdldFN0cmluZygpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPbkVudmlyb25t
ZW50c1NldFVwU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKLSAgICBnX2V2
ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPbkVudmlyb25tZW50c1NldFVwU3Rh
cnQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNTZXRVcEVuZChjb25z
dCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0
RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiKSk7Ci0gIH0KLQotICB2aXJ0
dWFsIHZvaWQgT25UZXN0Q2FzZVN0YXJ0KGNvbnN0IFRlc3RDYXNlJiAvKnRlc3RfY2FzZSovKSB7
Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0Q2FzZVN0
YXJ0IikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZv
JiAvKnRlc3RfaW5mbyovKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9k
TmFtZSgiT25UZXN0U3RhcnQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJl
c3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgLyp0ZXN0X3BhcnRfcmVzdWx0Ki8pIHsKLSAgICBn
X2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RQYXJ0UmVzdWx0Iikp
OwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdEVuZChjb25zdCBUZXN0SW5mbyYgLyp0ZXN0
X2luZm8qLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9u
VGVzdEVuZCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RDYXNlRW5kKGNvbnN0IFRl
c3RDYXNlJiAvKnRlc3RfY2FzZSovKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxs
TWV0aG9kTmFtZSgiT25UZXN0Q2FzZUVuZCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPbkVu
dmlyb25tZW50c1RlYXJEb3duU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsK
LSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPbkVudmlyb25tZW50
c1RlYXJEb3duU3RhcnQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNU
ZWFyRG93bkVuZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewotICAgIGdfZXZlbnRz
LT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQi
KSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRU
ZXN0JiAvKnVuaXRfdGVzdCovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBpdGVyYXRpb24pIHsKLSAgICBNZXNzYWdlIG1lc3NhZ2U7Ci0gICAgbWVzc2FnZSA8PCBHZXRG
dWxsTWV0aG9kTmFtZSgiT25UZXN0SXRlcmF0aW9uRW5kIikKLSAgICAgICAgICAgIDw8ICIoIiAg
PDwgaXRlcmF0aW9uIDw8ICIpIjsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKG1lc3NhZ2UuR2V0
U3RyaW5nKCkpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdFByb2dyYW1FbmQoY29uc3Qg
VW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1
bGxNZXRob2ROYW1lKCJPblRlc3RQcm9ncmFtRW5kIikpOwotICB9Ci0KLSBwcml2YXRlOgotICBT
dHJpbmcgR2V0RnVsbE1ldGhvZE5hbWUoY29uc3QgY2hhciogbmFtZSkgewotICAgIE1lc3NhZ2Ug
bWVzc2FnZTsKLSAgICBtZXNzYWdlIDw8IG5hbWVfIDw8ICIuIiA8PCBuYW1lOwotICAgIHJldHVy
biBtZXNzYWdlLkdldFN0cmluZygpOwotICB9Ci0KLSAgU3RyaW5nIG5hbWVfOwotfTsKLQotY2xh
c3MgRW52aXJvbm1lbnRJbnZvY2F0aW9uQ2F0Y2hlciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7Ci0g
cHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hf
YmFjayhTdHJpbmcoIkVudmlyb25tZW50OjpTZXRVcCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKFN0cmluZygiRW52aXJvbm1l
bnQ6OlRlYXJEb3duIikpOwotICB9Ci19OwotCi1jbGFzcyBMaXN0ZW5lclRlc3QgOiBwdWJsaWMg
VGVzdCB7Ci0gcHJvdGVjdGVkOgotICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgewotICAg
IGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJMaXN0ZW5lclRlc3Q6OlNldFVwVGVzdENhc2Ui
KSk7Ci0gIH0KLQotICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgewotICAgIGdfZXZl
bnRzLT5wdXNoX2JhY2soU3RyaW5nKCJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duVGVzdENhc2UiKSk7
Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFj
ayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6U2V0VXAiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkxpc3RlbmVyVGVz
dDo6VGVhckRvd24iKSk7Ci0gIH0KLX07Ci0KLVRFU1RfRihMaXN0ZW5lclRlc3QsIERvZXNGb28p
IHsKLSAgLy8gVGVzdCBleGVjdXRpb24gb3JkZXIgd2l0aGluIGEgdGVzdCBjYXNlIGlzIG5vdCBn
dWFyYW50ZWVkIHNvIHdlIGFyZSBub3QKLSAgLy8gcmVjb3JkaW5nIHRoZSB0ZXN0IG5hbWUuCi0g
IGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5Iikp
OwotICBTVUNDRUVEKCk7ICAvLyBUcmlnZ2VycyBPblRlc3RQYXJ0UmVzdWx0LgotfQotCi1URVNU
X0YoTGlzdGVuZXJUZXN0LCBEb2VzQmFyKSB7Ci0gIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5n
KCJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5IikpOwotICBTVUNDRUVEKCk7ICAvLyBUcmlnZ2Vy
cyBPblRlc3RQYXJ0UmVzdWx0LgotfQotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotfSAg
Ly8gbmFtZXNwYWNlIHRlc3RpbmcKLQotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RW52aXJv
bm1lbnRJbnZvY2F0aW9uQ2F0Y2hlcjsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OkV2ZW50
UmVjb3JkaW5nTGlzdGVuZXI7Ci0KLXZvaWQgVmVyaWZ5UmVzdWx0cyhjb25zdCBzdGQ6OnZlY3Rv
cjxTdHJpbmc+JiBkYXRhLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0KiBl
eHBlY3RlZF9kYXRhLAotICAgICAgICAgICAgICAgICAgIGludCBleHBlY3RlZF9kYXRhX3NpemUp
IHsKLSAgY29uc3QgaW50IGFjdHVhbF9zaXplID0gZGF0YS5zaXplKCk7Ci0gIC8vIElmIHRoZSBm
b2xsb3dpbmcgYXNzZXJ0aW9uIGZhaWxzLCBhIG5ldyBlbnRyeSB3aWxsIGJlIGFwcGVuZGVkIHRv
Ci0gIC8vIGRhdGEuICBIZW5jZSB3ZSBzYXZlIGRhdGEuc2l6ZSgpIGZpcnN0LgotICBFWFBFQ1Rf
RVEoZXhwZWN0ZWRfZGF0YV9zaXplLCBhY3R1YWxfc2l6ZSk7Ci0KLSAgLy8gQ29tcGFyZXMgdGhl
IGNvbW1vbiBwcmVmaXguCi0gIGNvbnN0IGludCBzaG9ydGVyX3NpemUgPSBleHBlY3RlZF9kYXRh
X3NpemUgPD0gYWN0dWFsX3NpemUgPwotICAgICAgZXhwZWN0ZWRfZGF0YV9zaXplIDogYWN0dWFs
X3NpemU7Ci0gIGludCBpID0gMDsKLSAgZm9yICg7IGkgPCBzaG9ydGVyX3NpemU7ICsraSkgewot
ICAgIEFTU0VSVF9TVFJFUShleHBlY3RlZF9kYXRhW2ldLCBkYXRhW2ldLmNfc3RyKCkpCi0gICAg
ICAgIDw8ICJhdCBwb3NpdGlvbiAiIDw8IGk7Ci0gIH0KLQotICAvLyBQcmludHMgZXh0cmEgZWxl
bWVudHMgaW4gdGhlIGFjdHVhbCBkYXRhLgotICBmb3IgKDsgaSA8IGFjdHVhbF9zaXplOyArK2kp
IHsKLSAgICBwcmludGYoIiAgQWN0dWFsIGV2ZW50ICMlZDogJXNcbiIsIGksIGRhdGFbaV0uY19z
dHIoKSk7Ci0gIH0KLX0KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7Ci0gIHN0
ZDo6dmVjdG9yPFN0cmluZz4gZXZlbnRzOwotICBnX2V2ZW50cyA9ICZldmVudHM7Ci0gIEluaXRH
b29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlz
dGVuZXJzKCkuQXBwZW5kKAotICAgICAgbmV3IEV2ZW50UmVjb3JkaW5nTGlzdGVuZXIoIjFzdCIp
KTsKLSAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpLkFwcGVuZCgKLSAgICAg
IG5ldyBFdmVudFJlY29yZGluZ0xpc3RlbmVyKCIybmQiKSk7Ci0KLSAgQWRkR2xvYmFsVGVzdEVu
dmlyb25tZW50KG5ldyBFbnZpcm9ubWVudEludm9jYXRpb25DYXRjaGVyKTsKLQotICBHVEVTVF9D
SEVDS18oZXZlbnRzLnNpemUoKSA9PSAwKQotICAgICAgPDwgIkFkZEdsb2JhbFRlc3RFbnZpcm9u
bWVudCBzaG91bGQgbm90IGdlbmVyYXRlIGFueSBldmVudHMgaXRzZWxmLiI7Ci0KLSAgOjp0ZXN0
aW5nOjpHVEVTVF9GTEFHKHJlcGVhdCkgPSAyOwotICBpbnQgcmV0X3ZhbCA9IFJVTl9BTExfVEVT
VFMoKTsKLQotICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZF9ldmVudHNbXSA9IHsKLSAgICAi
MXN0Lk9uVGVzdFByb2dyYW1TdGFydCIsCi0gICAgIjJuZC5PblRlc3RQcm9ncmFtU3RhcnQiLAot
ICAgICIxc3QuT25UZXN0SXRlcmF0aW9uU3RhcnQoMCkiLAotICAgICIybmQuT25UZXN0SXRlcmF0
aW9uU3RhcnQoMCkiLAotICAgICIxc3QuT25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0IiwKLSAgICAi
Mm5kLk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIsCi0gICAgIkVudmlyb25tZW50OjpTZXRVcCIs
Ci0gICAgIjJuZC5PbkVudmlyb25tZW50c1NldFVwRW5kIiwKLSAgICAiMXN0Lk9uRW52aXJvbm1l
bnRzU2V0VXBFbmQiLAotICAgICIxc3QuT25UZXN0Q2FzZVN0YXJ0IiwKLSAgICAiMm5kLk9uVGVz
dENhc2VTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6U2V0VXBUZXN0Q2FzZSIsCi0gICAgIjFz
dC5PblRlc3RTdGFydCIsCi0gICAgIjJuZC5PblRlc3RTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVz
dDo6U2V0VXAiLAotICAgICJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5IiwKLSAgICAiMXN0Lk9u
VGVzdFBhcnRSZXN1bHQiLAotICAgICIybmQuT25UZXN0UGFydFJlc3VsdCIsCi0gICAgIkxpc3Rl
bmVyVGVzdDo6VGVhckRvd24iLAotICAgICIybmQuT25UZXN0RW5kIiwKLSAgICAiMXN0Lk9uVGVz
dEVuZCIsCi0gICAgIjFzdC5PblRlc3RTdGFydCIsCi0gICAgIjJuZC5PblRlc3RTdGFydCIsCi0g
ICAgIkxpc3RlbmVyVGVzdDo6U2V0VXAiLAotICAgICJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5
IiwKLSAgICAiMXN0Lk9uVGVzdFBhcnRSZXN1bHQiLAotICAgICIybmQuT25UZXN0UGFydFJlc3Vs
dCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6VGVhckRvd24iLAotICAgICIybmQuT25UZXN0RW5kIiwK
LSAgICAiMXN0Lk9uVGVzdEVuZCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6VGVhckRvd25UZXN0Q2Fz
ZSIsCi0gICAgIjJuZC5PblRlc3RDYXNlRW5kIiwKLSAgICAiMXN0Lk9uVGVzdENhc2VFbmQiLAot
ICAgICIxc3QuT25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0IiwKLSAgICAiMm5kLk9uRW52aXJv
bm1lbnRzVGVhckRvd25TdGFydCIsCi0gICAgIkVudmlyb25tZW50OjpUZWFyRG93biIsCi0gICAg
IjJuZC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5kIiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRz
VGVhckRvd25FbmQiLAotICAgICIybmQuT25UZXN0SXRlcmF0aW9uRW5kKDApIiwKLSAgICAiMXN0
Lk9uVGVzdEl0ZXJhdGlvbkVuZCgwKSIsCi0gICAgIjFzdC5PblRlc3RJdGVyYXRpb25TdGFydCgx
KSIsCi0gICAgIjJuZC5PblRlc3RJdGVyYXRpb25TdGFydCgxKSIsCi0gICAgIjFzdC5PbkVudmly
b25tZW50c1NldFVwU3RhcnQiLAotICAgICIybmQuT25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0IiwK
LSAgICAiRW52aXJvbm1lbnQ6OlNldFVwIiwKLSAgICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0VXBF
bmQiLAotICAgICIxc3QuT25FbnZpcm9ubWVudHNTZXRVcEVuZCIsCi0gICAgIjFzdC5PblRlc3RD
YXNlU3RhcnQiLAotICAgICIybmQuT25UZXN0Q2FzZVN0YXJ0IiwKLSAgICAiTGlzdGVuZXJUZXN0
OjpTZXRVcFRlc3RDYXNlIiwKLSAgICAiMXN0Lk9uVGVzdFN0YXJ0IiwKLSAgICAiMm5kLk9uVGVz
dFN0YXJ0IiwKLSAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6
KiBUZXN0IEJvZHkiLAotICAgICIxc3QuT25UZXN0UGFydFJlc3VsdCIsCi0gICAgIjJuZC5PblRl
c3RQYXJ0UmVzdWx0IiwKLSAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93biIsCi0gICAgIjJuZC5P
blRlc3RFbmQiLAotICAgICIxc3QuT25UZXN0RW5kIiwKLSAgICAiMXN0Lk9uVGVzdFN0YXJ0IiwK
LSAgICAiMm5kLk9uVGVzdFN0YXJ0IiwKLSAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcCIsCi0gICAg
Ikxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHkiLAotICAgICIxc3QuT25UZXN0UGFydFJlc3VsdCIs
Ci0gICAgIjJuZC5PblRlc3RQYXJ0UmVzdWx0IiwKLSAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93
biIsCi0gICAgIjJuZC5PblRlc3RFbmQiLAotICAgICIxc3QuT25UZXN0RW5kIiwKLSAgICAiTGlz
dGVuZXJUZXN0OjpUZWFyRG93blRlc3RDYXNlIiwKLSAgICAiMm5kLk9uVGVzdENhc2VFbmQiLAot
ICAgICIxc3QuT25UZXN0Q2FzZUVuZCIsCi0gICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3du
U3RhcnQiLAotICAgICIybmQuT25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0IiwKLSAgICAiRW52
aXJvbm1lbnQ6OlRlYXJEb3duIiwKLSAgICAiMm5kLk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQi
LAotICAgICIxc3QuT25FbnZpcm9ubWVudHNUZWFyRG93bkVuZCIsCi0gICAgIjJuZC5PblRlc3RJ
dGVyYXRpb25FbmQoMSkiLAotICAgICIxc3QuT25UZXN0SXRlcmF0aW9uRW5kKDEpIiwKLSAgICAi
Mm5kLk9uVGVzdFByb2dyYW1FbmQiLAotICAgICIxc3QuT25UZXN0UHJvZ3JhbUVuZCIKLSAgfTsK
LSAgVmVyaWZ5UmVzdWx0cyhldmVudHMsCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXZlbnRz
LAotICAgICAgICAgICAgICAgIHNpemVvZihleHBlY3RlZF9ldmVudHMpL3NpemVvZihleHBlY3Rl
ZF9ldmVudHNbMF0pKTsKLQotICAvLyBXZSBuZWVkIHRvIGNoZWNrIG1hbnVhbGx5IGZvciBhZCBo
b2MgdGVzdCBmYWlsdXJlcyB0aGF0IGhhcHBlbiBhZnRlcgotICAvLyBSVU5fQUxMX1RFU1RTIGZp
bmlzaGVzLgotICBpZiAoVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPkZhaWxlZCgpKQotICAgIHJl
dF92YWwgPSAxOwotCi0gIHJldHVybiByZXRfdmFsOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1tZXNzYWdlX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LW1lc3NhZ2VfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTQyYjAzNDQ3ODcyZTNlOGYwN2E5YTRhZGQyYmU1ZGQ0Njk4MGI1NS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LW1lc3NhZ2VfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0x
LDE2NyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6
Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8K
LS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRl
c3RzIGZvciB0aGUgTWVzc2FnZSBjbGFzcy4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LW1lc3Nh
Z2UuaD4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLW5hbWVzcGFjZSB7Ci0KLXVzaW5n
IDo6dGVzdGluZzo6TWVzc2FnZTsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0clN0cmVh
bTsKLQotLy8gQSBoZWxwZXIgZnVuY3Rpb24gdGhhdCB0dXJucyBhIE1lc3NhZ2UgaW50byBhIEMg
c3RyaW5nLgotY29uc3QgY2hhciogVG9DU3RyaW5nKGNvbnN0IE1lc3NhZ2UmIG1zZykgewotICBz
dGF0aWMgdGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZyByZXN1bHQ7Ci0gIHJlc3VsdCA9IG1zZy5H
ZXRTdHJpbmcoKTsKLSAgcmV0dXJuIHJlc3VsdC5jX3N0cigpOwotfQotCi0vLyBUZXN0cyB0aGUg
dGVzdGluZzo6TWVzc2FnZSBjbGFzcwotCi0vLyBUZXN0cyB0aGUgZGVmYXVsdCBjb25zdHJ1Y3Rv
ci4KLVRFU1QoTWVzc2FnZVRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvcikgewotICBjb25zdCBNZXNz
YWdlIG1zZzsKLSAgRVhQRUNUX1NUUkVRKCIiLCBUb0NTdHJpbmcobXNnKSk7Ci19Ci0KLS8vIFRl
c3RzIHRoZSBjb3B5IGNvbnN0cnVjdG9yLgotVEVTVChNZXNzYWdlVGVzdCwgQ29weUNvbnN0cnVj
dG9yKSB7Ci0gIGNvbnN0IE1lc3NhZ2UgbXNnMSgiSGVsbG8iKTsKLSAgY29uc3QgTWVzc2FnZSBt
c2cyKG1zZzEpOwotICBFWFBFQ1RfU1RSRVEoIkhlbGxvIiwgVG9DU3RyaW5nKG1zZzIpKTsKLX0K
LQotLy8gVGVzdHMgY29uc3RydWN0aW5nIGEgTWVzc2FnZSBmcm9tIGEgQy1zdHJpbmcuCi1URVNU
KE1lc3NhZ2VUZXN0LCBDb25zdHJ1Y3RzRnJvbUNTdHJpbmcpIHsKLSAgTWVzc2FnZSBtc2coIkhl
bGxvIik7Ci0gIEVYUEVDVF9TVFJFUSgiSGVsbG8iLCBUb0NTdHJpbmcobXNnKSk7Ci19Ci0KLS8v
IFRlc3RzIHN0cmVhbWluZyBhIGZsb2F0LgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc0Zsb2F0
KSB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IHMgPSBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8IDEuMjM0
NTZGIDw8ICIgIiA8PCAyLjM0NTY3Rik7Ci0gIC8vIEJvdGggbnVtYmVycyBzaG91bGQgYmUgcHJp
bnRlZCB3aXRoIGVub3VnaCBwcmVjaXNpb24uCi0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGlu
Zzo6SXNTdWJzdHJpbmcsICIxLjIzNDU2MCIsIHMpOwotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRl
c3Rpbmc6OklzU3Vic3RyaW5nLCAiIDIuMzQ1NjY5Iiwgcyk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVh
bWluZyBhIGRvdWJsZS4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNEb3VibGUpIHsKLSAgY29u
c3QgY2hhciogY29uc3QgcyA9IFRvQ1N0cmluZyhNZXNzYWdlKCkgPDwgMTI2MDU3MDg4MC40NTU1
NDk3IDw8ICIgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDEyNjA1NzIy
NjUuMTk1NDUzNCk7Ci0gIC8vIEJvdGggbnVtYmVycyBzaG91bGQgYmUgcHJpbnRlZCB3aXRoIGVu
b3VnaCBwcmVjaXNpb24uCi0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJp
bmcsICIxMjYwNTcwODgwLjQ1Iiwgcyk7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6
SXNTdWJzdHJpbmcsICIgMTI2MDU3MjI2NS4xOSIsIHMpOwotfQotCi0vLyBUZXN0cyBzdHJlYW1p
bmcgYSBub24tY2hhciBwb2ludGVyLgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc1BvaW50ZXIp
IHsKLSAgaW50IG4gPSAwOwotICBpbnQqIHAgPSAmbjsKLSAgRVhQRUNUX1NUUk5FKCIobnVsbCki
LCBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8IHApKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFtaW5nIGEg
TlVMTCBub24tY2hhciBwb2ludGVyLgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc051bGxQb2lu
dGVyKSB7Ci0gIGludCogcCA9IE5VTEw7Ci0gIEVYUEVDVF9TVFJFUSgiKG51bGwpIiwgVG9DU3Ry
aW5nKE1lc3NhZ2UoKSA8PCBwKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBhIEMgc3RyaW5n
LgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc0NTdHJpbmcpIHsKLSAgRVhQRUNUX1NUUkVRKCJG
b28iLCBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8ICJGb28iKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVh
bWluZyBhIE5VTEwgQyBzdHJpbmcuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zTnVsbENTdHJp
bmcpIHsKLSAgY2hhciogcCA9IE5VTEw7Ci0gIEVYUEVDVF9TVFJFUSgiKG51bGwpIiwgVG9DU3Ry
aW5nKE1lc3NhZ2UoKSA8PCBwKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBzdGQ6OnN0cmlu
Zy4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNTdHJpbmcpIHsKLSAgY29uc3QgOjpzdGQ6OnN0
cmluZyBzdHIoIkhlbGxvIik7Ci0gIEVYUEVDVF9TVFJFUSgiSGVsbG8iLCBUb0NTdHJpbmcoTWVz
c2FnZSgpIDw8IHN0cikpOwotfQotCi0vLyBUZXN0cyB0aGF0IHdlIGNhbiBvdXRwdXQgc3RyaW5n
cyBjb250YWluaW5nIGVtYmVkZGVkIE5VTHMuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zU3Ry
aW5nV2l0aEVtYmVkZGVkTlVMKSB7Ci0gIGNvbnN0IGNoYXIgY2hhcl9hcnJheV93aXRoX251bFtd
ID0KLSAgICAgICJIZXJlJ3MgYSBOVUxcMCBhbmQgc29tZSBtb3JlIHN0cmluZyI7Ci0gIGNvbnN0
IDo6c3RkOjpzdHJpbmcgc3RyaW5nX3dpdGhfbnVsKGNoYXJfYXJyYXlfd2l0aF9udWwsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihjaGFyX2FycmF5X3dpdGhf
bnVsKSAtIDEpOwotICBFWFBFQ1RfU1RSRVEoIkhlcmUncyBhIE5VTFxcMCBhbmQgc29tZSBtb3Jl
IHN0cmluZyIsCi0gICAgICAgICAgICAgICBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8IHN0cmluZ193
aXRoX251bCkpOwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcgYSBOVUwgY2hhci4KLVRFU1QoTWVz
c2FnZVRlc3QsIFN0cmVhbXNOVUxDaGFyKSB7Ci0gIEVYUEVDVF9TVFJFUSgiXFwwIiwgVG9DU3Ry
aW5nKE1lc3NhZ2UoKSA8PCAnXDAnKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBpbnQuCi1U
RVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zSW50KSB7Ci0gIEVYUEVDVF9TVFJFUSgiMTIzIiwgVG9D
U3RyaW5nKE1lc3NhZ2UoKSA8PCAxMjMpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBiYXNpYyBJTyBt
YW5pcHVsYXRvcnMgKGVuZGwsIGVuZHMsIGFuZCBmbHVzaCkgY2FuIGJlCi0vLyBzdHJlYW1lZCB0
byBNZXNzYWdlLgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc0Jhc2ljSW9NYW5pcCkgewotICBF
WFBFQ1RfU1RSRVEoIkxpbmUgMS5cbkEgTlVMIGNoYXIgXFwwIGluIGxpbmUgMi4iLAotICAgICAg
ICAgICAgICAgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCAiTGluZSAxLiIgPDwgc3RkOjplbmRsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgIkEgTlVMIGNoYXIgIiA8PCBzdGQ6OmVuZHMgPDwg
c3RkOjpmbHVzaAotICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgaW4gbGluZSAyLiIpKTsK
LX0KLQotLy8gVGVzdHMgTWVzc2FnZTo6R2V0U3RyaW5nKCkKLVRFU1QoTWVzc2FnZVRlc3QsIEdl
dFN0cmluZykgewotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IDEgPDwgIiBsYW1iIjsKLSAgRVhQ
RUNUX1NUUkVRKCIxIGxhbWIiLCBtc2cuR2V0U3RyaW5nKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFRl
c3RzIHN0cmVhbWluZyBhIE1lc3NhZ2Ugb2JqZWN0IHRvIGFuIG9zdHJlYW0uCi1URVNUKE1lc3Nh
Z2VUZXN0LCBTdHJlYW1zVG9PU3RyZWFtKSB7Ci0gIE1lc3NhZ2UgbXNnKCJIZWxsbyIpOwotICBT
dHJTdHJlYW0gc3M7Ci0gIHNzIDw8IG1zZzsKLSAgRVhQRUNUX1NUUkVRKCJIZWxsbyIsIHRlc3Rp
bmc6OmludGVybmFsOjpTdHJTdHJlYW1Ub1N0cmluZygmc3MpLmNfc3RyKCkpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IGEgTWVzc2FnZSBvYmplY3QgZG9lc24ndCB0YWtlIHVwIHRvbyBtdWNoIHN0YWNr
IHNwYWNlLgotVEVTVChNZXNzYWdlVGVzdCwgRG9lc05vdFRha2VVcE11Y2hTdGFja1NwYWNlKSB7
Ci0gIEVYUEVDVF9MRShzaXplb2YoTWVzc2FnZSksIDE2VSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1vcHRpb25z
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LW9wdGlvbnNfdGVz
dC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmUyY2JjOTJlNWUwMjhjNzRjODJm
MDc1MGZkZDhiZGZiNGU4ODMxZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LW9wdGlvbnNfdGVz
dC5jYworKysgL2Rldi9udWxsCkBAIC0xLDIxMiArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwg
R29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0v
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczoga2VpdGgucmF5QGdtYWls
LmNvbSAoS2VpdGggUmF5KQotLy8KLS8vIEdvb2dsZSBUZXN0IFVuaXRUZXN0T3B0aW9ucyB0ZXN0
cwotLy8KLS8vIFRoaXMgZmlsZSB0ZXN0cyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRl
cm5hbGx5IGJ5Ci0vLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdp
dGhvdXQgbm90aWNlLgotLy8KLS8vIFRoaXMgZmlsZSBpcyAjaW5jbHVkZWQgZnJvbSBndGVzdC5j
YywgdG8gYXZvaWQgY2hhbmdpbmcgYnVpbGQgb3IKLS8vIG1ha2UtZmlsZXMgb24gV2luZG93cyBh
bmQgb3RoZXIgcGxhdGZvcm1zLiBEbyBub3QgI2luY2x1ZGUgdGhpcyBmaWxlCi0vLyBhbnl3aGVy
ZSBlbHNlIQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2lmIEdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2VsaWYgR1RFU1RfT1NfV0lORE9XUwot
I2luY2x1ZGUgPGRpcmVjdC5oPgotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQot
Ci0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29n
bGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3Qt
aW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGls
ZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lk
ZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgot
I2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRl
cm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KLQotbmFtZXNwYWNlIHRl
c3RpbmcgewotbmFtZXNwYWNlIGludGVybmFsIHsKLW5hbWVzcGFjZSB7Ci0KLS8vIFR1cm5zIHRo
ZSBnaXZlbiByZWxhdGl2ZSBwYXRoIGludG8gYW4gYWJzb2x1dGUgcGF0aC4KLUZpbGVQYXRoIEdl
dEFic29sdXRlUGF0aE9mKGNvbnN0IEZpbGVQYXRoJiByZWxhdGl2ZV9wYXRoKSB7Ci0gIHJldHVy
biBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKSwgcmVsYXRp
dmVfcGF0aCk7Ci19Ci0KLS8vIFRlc3RpbmcgVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3Jt
YXQvR2V0T3V0cHV0RmlsZS4KLQotVEVTVChYbWxPdXRwdXRUZXN0LCBHZXRPdXRwdXRGb3JtYXRE
ZWZhdWx0KSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICIiOwotICBFWFBFQ1RfU1RSRVEoIiIs
IFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCkuY19zdHIoKSk7Ci19Ci0KLVRFU1Qo
WG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0Rm9ybWF0KSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9
ICJ4bWw6ZmlsZW5hbWUiOwotICBFWFBFQ1RfU1RSRVEoInhtbCIsIFVuaXRUZXN0T3B0aW9uczo6
R2V0T3V0cHV0Rm9ybWF0KCkuY19zdHIoKSk7Ci19Ci0KLVRFU1QoWG1sT3V0cHV0VGVzdCwgR2V0
T3V0cHV0RmlsZURlZmF1bHQpIHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0gIiI7Ci0gIEVYUEVD
VF9TVFJFUShHZXRBYnNvbHV0ZVBhdGhPZihGaWxlUGF0aCgidGVzdF9kZXRhaWwueG1sIikpLmNf
c3RyKCksCi0gICAgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRv
T3V0cHV0RmlsZSgpLmNfc3RyKCkpOwotfQotCi1URVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1
dEZpbGVTaW5nbGVGaWxlKSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6ZmlsZW5hbWUu
YWJjIjsKLSAgRVhQRUNUX1NUUkVRKEdldEFic29sdXRlUGF0aE9mKEZpbGVQYXRoKCJmaWxlbmFt
ZS5hYmMiKSkuY19zdHIoKSwKLSAgICAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJz
b2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSk7Ci19Ci0KLVRFU1QoWG1sT3V0cHV0VGVz
dCwgR2V0T3V0cHV0RmlsZUZyb21EaXJlY3RvcnlQYXRoKSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0
KSA9ICJ4bWw6cGF0aCIgR1RFU1RfUEFUSF9TRVBfOwotICBjb25zdCBzdGQ6OnN0cmluZyBleHBl
Y3RlZF9vdXRwdXRfZmlsZSA9Ci0gICAgICBHZXRBYnNvbHV0ZVBhdGhPZigKLSAgICAgICAgICBG
aWxlUGF0aChzdGQ6OnN0cmluZygicGF0aCIpICsgR1RFU1RfUEFUSF9TRVBfICsKLSAgICAgICAg
ICAgICAgICAgICBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5jX3N0cigpICsgIi54bWwiKSku
Y19zdHIoKTsKLSAgY29uc3QgU3RyaW5nJiBvdXRwdXRfZmlsZSA9IFVuaXRUZXN0T3B0aW9uczo6
R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICBF
WFBFQ1RfU1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxlLmNfc3RyKCksIG91dHB1dF9maWxl
LmNfc3RyKCkpOwotI2Vsc2UKLSAgRVhQRUNUX0VRKGV4cGVjdGVkX291dHB1dF9maWxlLCBvdXRw
dXRfZmlsZS5jX3N0cigpKTsKLSNlbmRpZgotfQotCi1URVNUKE91dHB1dEZpbGVIZWxwZXJzVGVz
dCwgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGV4ZV9z
dHIgPSBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5jX3N0cigpOwotI2lmIEdURVNUX09TX1dJ
TkRPV1MKLSAgY29uc3QgYm9vbCBzdWNjZXNzID0KLSAgICAgIF9zdHJjbXBpKCJndGVzdC1vcHRp
b25zX3Rlc3QiLCBleGVfc3RyLmNfc3RyKCkpID09IDAgfHwKLSAgICAgIF9zdHJjbXBpKCJndGVz
dC1vcHRpb25zLWV4X3Rlc3QiLCBleGVfc3RyLmNfc3RyKCkpID09IDAgfHwKLSAgICAgIF9zdHJj
bXBpKCJndGVzdF9hbGxfdGVzdCIsIGV4ZV9zdHIuY19zdHIoKSkgPT0gMCB8fAotICAgICAgX3N0
cmNtcGkoImd0ZXN0X2RsbF90ZXN0IiwgZXhlX3N0ci5jX3N0cigpKSA9PSAwOwotI2Vsc2UKLSAg
Ly8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHJlbW92ZSB0aGUgaGFyZC1jb2RlZCAibHQtIiBwcmVm
aXggd2hlbgotICAvLyAgIENoYW5kbGVyIENhcnJ1dGgncyBsaWJ0b29sIHJlcGxhY2VtZW50IGlz
IHJlYWR5LgotICBjb25zdCBib29sIHN1Y2Nlc3MgPQotICAgICAgZXhlX3N0ciA9PSAiZ3Rlc3Qt
b3B0aW9uc190ZXN0IiB8fAotICAgICAgZXhlX3N0ciA9PSAiZ3Rlc3RfYWxsX3Rlc3QiIHx8Ci0g
ICAgICBleGVfc3RyID09ICJsdC1ndGVzdF9hbGxfdGVzdCIgfHwKLSAgICAgIGV4ZV9zdHIgPT0g
Imd0ZXN0X2RsbF90ZXN0IjsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotICBpZiAoIXN1
Y2Nlc3MpCi0gICAgRkFJTCgpIDw8ICJHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKSByZXR1cm5z
ICIgPDwgZXhlX3N0cjsKLX0KLQotY2xhc3MgWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCA6IHB1Ymxp
YyBUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBvcmln
aW5hbF93b3JraW5nX2Rpcl8gPSBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpOwotICAgIHBvc2l4
OjpDaERpcigiLi4iKTsKLSAgICAvLyBUaGlzIHdpbGwgbWFrZSB0aGUgdGVzdCBmYWlsIGlmIHJ1
biBmcm9tIHRoZSByb290IGRpcmVjdG9yeS4KLSAgICBFWFBFQ1RfU1RSTkUob3JpZ2luYWxfd29y
a2luZ19kaXJfLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgIEZpbGVQYXRoOjpHZXRDdXJyZW50
RGlyKCkuY19zdHIoKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAg
cG9zaXg6OkNoRGlyKG9yaWdpbmFsX3dvcmtpbmdfZGlyXy5jX3N0cigpKTsKLSAgfQotCi0gIEZp
bGVQYXRoIG9yaWdpbmFsX3dvcmtpbmdfZGlyXzsKLX07Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFu
Z2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhEZWZhdWx0KSB7Ci0gIEdU
RVNUX0ZMQUcob3V0cHV0KSA9ICIiOwotICBFWFBFQ1RfU1RSRVEoRmlsZVBhdGg6OkNvbmNhdFBh
dGhzKG9yaWdpbmFsX3dvcmtpbmdfZGlyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGaWxlUGF0aCgidGVzdF9kZXRhaWwueG1sIikpLmNfc3RyKCksCi0gICAgICAgICAg
ICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3Ry
KCkpOwotfQotCi1URVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5h
bFdvcmtpbmdEaXJXaXRoRGVmYXVsdFhNTCkgewotICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1s
IjsKLSAgRVhQRUNUX1NUUkVRKEZpbGVQYXRoOjpDb25jYXRQYXRocyhvcmlnaW5hbF93b3JraW5n
X2Rpcl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoInRl
c3RfZGV0YWlsLnhtbCIpKS5jX3N0cigpLAotICAgICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25z
OjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0cigpKTsKLX0KLQotVEVTVF9GKFht
bE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aFJlbGF0
aXZlRmlsZSkgewotICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOmZpbGVuYW1lLmFiYyI7Ci0g
IEVYUEVDVF9TVFJFUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJf
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmaWxlbmFt
ZS5hYmMiKSkuY19zdHIoKSwKLSAgICAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJz
b2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSk7Ci19Ci0KLVRFU1RfRihYbWxPdXRwdXRD
aGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhSZWxhdGl2ZVBhdGgp
IHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbDpwYXRoIiBHVEVTVF9QQVRIX1NFUF87Ci0g
IGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdGVkX291dHB1dF9maWxlID0KLSAgICAgIEZpbGVQYXRo
OjpDb25jYXRQYXRocygKLSAgICAgICAgICBvcmlnaW5hbF93b3JraW5nX2Rpcl8sCi0gICAgICAg
ICAgRmlsZVBhdGgoc3RkOjpzdHJpbmcoInBhdGgiKSArIEdURVNUX1BBVEhfU0VQXyArCi0gICAg
ICAgICAgICAgICAgICAgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuY19zdHIoKSArICIueG1s
IikpLmNfc3RyKCk7Ci0gIGNvbnN0IFN0cmluZyYgb3V0cHV0X2ZpbGUgPSBVbml0VGVzdE9wdGlv
bnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpOwotI2lmIEdURVNUX09TX1dJTkRPV1MK
LSAgRVhQRUNUX1NUUkNBU0VFUShleHBlY3RlZF9vdXRwdXRfZmlsZS5jX3N0cigpLCBvdXRwdXRf
ZmlsZS5jX3N0cigpKTsKLSNlbHNlCi0gIEVYUEVDVF9FUShleHBlY3RlZF9vdXRwdXRfZmlsZSwg
b3V0cHV0X2ZpbGUuY19zdHIoKSk7Ci0jZW5kaWYKLX0KLQotVEVTVF9GKFhtbE91dHB1dENoYW5n
ZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aEFic29sdXRlRmlsZSkgewot
I2lmIEdURVNUX09TX1dJTkRPV1MKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbDpjOlxcdG1w
XFxmaWxlbmFtZS5hYmMiOwotICBFWFBFQ1RfU1RSRVEoRmlsZVBhdGgoImM6XFx0bXBcXGZpbGVu
YW1lLmFiYyIpLmNfc3RyKCksCi0gICAgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFi
c29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOwotI2Vsc2UKLSAgR1RFU1RfRkxBRyhv
dXRwdXQpID0ieG1sOi90bXAvZmlsZW5hbWUuYWJjIjsKLSAgRVhQRUNUX1NUUkVRKEZpbGVQYXRo
KCIvdG1wL2ZpbGVuYW1lLmFiYyIpLmNfc3RyKCksCi0gICAgICAgICAgICAgICBVbml0VGVzdE9w
dGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOwotI2VuZGlmCi19
Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2lu
Z0RpcldpdGhBYnNvbHV0ZVBhdGgpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIGNvbnN0IHN0
ZDo6c3RyaW5nIHBhdGggPSAiYzpcXHRtcFxcIjsKLSNlbHNlCi0gIGNvbnN0IHN0ZDo6c3RyaW5n
IHBhdGggPSAiL3RtcC8iOwotI2VuZGlmCi0KLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbDoi
ICsgcGF0aDsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZXhwZWN0ZWRfb3V0cHV0X2ZpbGUgPQotICAg
ICAgcGF0aCArIEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLmNfc3RyKCkgKyAiLnhtbCI7Ci0g
IGNvbnN0IFN0cmluZyYgb3V0cHV0X2ZpbGUgPSBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRl
UGF0aFRvT3V0cHV0RmlsZSgpOwotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotICBFWFBFQ1RfU1RS
Q0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxlLmNfc3RyKCksIG91dHB1dF9maWxlLmNfc3RyKCkp
OwotI2Vsc2UKLSAgRVhQRUNUX0VRKGV4cGVjdGVkX291dHB1dF9maWxlLCBvdXRwdXRfZmlsZS5j
X3N0cigpKTsKLSNlbmRpZgotfQotCi19ICAvLyBuYW1lc3BhY2UKLX0gIC8vIG5hbWVzcGFjZSBp
bnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdDJfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdDJfdGVzdC5jYwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggY2NiNmNmYWM5ZTc2YjgyN2YxN2FlMTE4MjllMjM2ZDZmOTdlZTY0
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3QyX3Rlc3QuY2MKKysrIC9kZXYv
bnVsbApAQCAtMSw2NSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8v
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQot
Ly8KLS8vIFRlc3RzIGZvciBHb29nbGUgVGVzdCBpdHNlbGYuICBUaGlzIHZlcmlmaWVzIHRoYXQg
dGhlIGJhc2ljIGNvbnN0cnVjdHMgb2YKLS8vIEdvb2dsZSBUZXN0IHdvcmsuCi0KLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgotCi0jaW5jbHVkZSAidGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3Qu
aCIKLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLXVzaW5nIDo6dGVzdGluZzo6VmFsdWVz
OwotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I7Ci0KLS8vIFRlc3Rz
IHRoYXQgZ2VuZXJhdG9ycyBkZWZpbmVkIGluIGEgZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXQK
LS8vIGFyZSBmdW5jdGlvbmFsLiBUaGUgdGVzdCB1c2luZyBleHRlcm5fZ2VuIGlzIGRlZmluZWQK
LS8vIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYy4KLVBhcmFtR2VuZXJhdG9yPGludD4gZXh0
ZXJuX2dlbiA9IFZhbHVlcygzMyk7Ci0KLS8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRl
c3QgY2FzZSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgdHJhbnNsYXRpb24gdW5pdAotLy8gYW5kIGlu
c3RhbnRpYXRlZCBpbiBhbm90aGVyLiBUaGUgdGVzdCBpcyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFt
LXRlc3RfdGVzdC5jYwotLy8gYW5kIEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3QgZml4dHVyZSBj
bGFzcyBpcyBkZWZpbmVkIGluCi0vLyBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaC4KLUlOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKE11bHRpcGxlc09mMzMsCi0gICAgICAgICAgICAgICAgICAgICAgICBF
eHRlcm5hbEluc3RhbnRpYXRpb25UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVz
KDMzLCA2NikpOwotCi0vLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2Fu
IGJlIGluc3RhbnRpYXRlZAotLy8gaW4gbXVsdGlwbGUgdHJhbnNsYXRpb24gdW5pdHMuIEFub3Ro
ZXIgaW5zdGFudGlhdGlvbiBpcyBkZWZpbmVkCi0vLyBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3Qu
Y2MgYW5kIEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdAotLy8gZml4
dHVyZSBpcyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oCi1JTlNUQU5USUFURV9U
RVNUX0NBU0VfUChTZXF1ZW5jZTIsCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0
aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBWYWx1ZXMoNDIqMywgNDIqNCwgNDIqNSkpOwotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJB
TV9URVNUCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBh
cmFtLXRlc3RfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFy
YW0tdGVzdF90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGEwZTczNWMw
Yjk4OGVmMWEyMmI3ZDdhZTY5MDI3MDE4YmRiOGNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Qt
cGFyYW0tdGVzdF90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsODM1ICswLDAgQEAKLS8vIENv
cHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0v
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJp
YnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZs
YWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0vLwotLy8gVGVzdHMgZm9yIEdvb2dsZSBUZXN0
IGl0c2VsZi4gVGhpcyBmaWxlIHZlcmlmaWVzIHRoYXQgdGhlIHBhcmFtZXRlcgotLy8gZ2VuZXJh
dG9ycyBvYmplY3RzIHByb2R1Y2UgY29ycmVjdCBwYXJhbWV0ZXIgc2VxdWVuY2VzIGFuZCB0aGF0
Ci0vLyBHb29nbGUgVGVzdCBydW50aW1lIGluc3RhbnRpYXRlcyBjb3JyZWN0IHRlc3RzIGZyb20g
dGhvc2Ugc2VxdWVuY2VzLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2lmIEdURVNU
X0hBU19QQVJBTV9URVNUCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8aW9zdHJl
YW0+Ci0jaW5jbHVkZSA8bGlzdD4KLSNpbmNsdWRlIDxzc3RyZWFtPgotI2luY2x1ZGUgPHN0cmlu
Zz4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLS8vIFRvIGluY2x1ZGUgZ3Rlc3QtaW50ZXJuYWwtaW5s
LmguCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0
LWludGVybmFsLWlubC5oIiAgLy8gZm9yIFVuaXRUZXN0T3B0aW9ucwotI3VuZGVmIEdURVNUX0lN
UExFTUVOVEFUSU9OXwotCi0jaW5jbHVkZSAidGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaCIK
LQotdXNpbmcgOjpzdGQ6OnZlY3RvcjsKLXVzaW5nIDo6c3RkOjpzb3J0OwotCi11c2luZyA6OnRl
c3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudDsKLXVzaW5nIDo6dGVzdGluZzo6Qm9vbDsK
LXVzaW5nIDo6dGVzdGluZzo6TWVzc2FnZTsKLXVzaW5nIDo6dGVzdGluZzo6UmFuZ2U7Ci11c2lu
ZyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW07Ci11c2luZyA6OnRlc3Rpbmc6OlZhbHVlczsKLXVz
aW5nIDo6dGVzdGluZzo6VmFsdWVzSW47Ci0KLSNpZiBHVEVTVF9IQVNfQ09NQklORQotdXNpbmcg
Ojp0ZXN0aW5nOjpDb21iaW5lOwotdXNpbmcgOjpzdGQ6OnRyMTo6Z2V0OwotdXNpbmcgOjpzdGQ6
OnRyMTo6bWFrZV90dXBsZTsKLXVzaW5nIDo6c3RkOjp0cjE6OnR1cGxlOwotI2VuZGlmICAvLyBH
VEVTVF9IQVNfQ09NQklORQotCi11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVy
YXRvcjsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczsKLQotLy8g
UHJpbnRzIGEgdmFsdWUgdG8gYSBzdHJpbmcuCi0vLwotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6
IHJlbW92ZSBQcmludFZhbHVlKCkgd2hlbiB3ZSBtb3ZlIG1hdGNoZXJzIGFuZAotLy8gRVhQRUNU
X1RIQVQoKSBmcm9tIEdvb2dsZSBNb2NrIHRvIEdvb2dsZSBUZXN0LiAgQXQgdGhhdCB0aW1lLCB3
ZQotLy8gY2FuIHdyaXRlIEVYUEVDVF9USEFUKHgsIEVxKHkpKSB0byBjb21wYXJlIHR3byB0dXBs
ZXMgeCBhbmQgeSwgYXMKLS8vIEVYUEVDVF9USEFUKCkgYW5kIHRoZSBtYXRjaGVycyBrbm93IGhv
dyB0byBwcmludCB0dXBsZXMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLTo6c3RkOjpzdHJpbmcg
UHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSkgewotICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVh
bTsKLSAgc3RyZWFtIDw8IHZhbHVlOwotICByZXR1cm4gc3RyZWFtLnN0cigpOwotfQotCi0jaWYg
R1RFU1RfSEFTX0NPTUJJTkUKLQotLy8gVGhlc2Ugb3ZlcmxvYWRzIGFsbG93IHByaW50aW5nIHR1
cGxlcyBpbiBvdXIgdGVzdHMuICBXZSBjYW5ub3QKLS8vIGRlZmluZSBhbiBvcGVyYXRvcjw8IGZv
ciB0dXBsZXMsIGFzIHRoYXQgZGVmaW5pdGlvbiBuZWVkcyB0byBiZSBpbgotLy8gdGhlIHN0ZCBu
YW1lc3BhY2UgaW4gb3JkZXIgdG8gYmUgcGlja2VkIHVwIGJ5IEdvb2dsZSBUZXN0IHZpYQotLy8g
QXJndW1lbnQtRGVwZW5kZW50IExvb2t1cCwgeWV0IGRlZmluaW5nIGFueXRoaW5nIGluIHRoZSBz
dGQKLS8vIG5hbWVzcGFjZSBpbiBub24tU1RMIGNvZGUgaXMgdW5kZWZpbmVkIGJlaGF2aW9yLgot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotOjpzdGQ6OnN0cmluZyBQcmlu
dFZhbHVlKGNvbnN0IHR1cGxlPFQxLCBUMj4mIHZhbHVlKSB7Ci0gIDo6c3RkOjpzdHJpbmdzdHJl
YW0gc3RyZWFtOwotICBzdHJlYW0gPDwgIigiIDw8IGdldDwwPih2YWx1ZSkgPDwgIiwgIiA8PCBn
ZXQ8MT4odmFsdWUpIDw8ICIpIjsKLSAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKLX0KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci06OnN0ZDo6c3RyaW5n
IFByaW50VmFsdWUoY29uc3QgdHVwbGU8VDEsIFQyLCBUMz4mIHZhbHVlKSB7Ci0gIDo6c3RkOjpz
dHJpbmdzdHJlYW0gc3RyZWFtOwotICBzdHJlYW0gPDwgIigiIDw8IGdldDwwPih2YWx1ZSkgPDwg
IiwgIiA8PCBnZXQ8MT4odmFsdWUpCi0gICAgICAgICA8PCAiLCAiPDwgZ2V0PDI+KHZhbHVlKSA8
PCAiKSI7Ci0gIHJldHVybiBzdHJlYW0uc3RyKCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
MSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0g
ICAgICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUg
VDksIHR5cGVuYW1lIFQxMD4KLTo6c3RkOjpzdHJpbmcgUHJpbnRWYWx1ZSgKLSAgICBjb25zdCB0
dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTA+JiB2YWx1ZSkgewot
ICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKLSAgc3RyZWFtIDw8ICIoIiA8PCBnZXQ8MD4o
dmFsdWUpIDw8ICIsICIgPDwgZ2V0PDE+KHZhbHVlKQotICAgICAgICAgPDwgIiwgIjw8IGdldDwy
Pih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8Mz4odmFsdWUpCi0gICAgICAgICA8PCAiLCAiPDwgZ2V0
PDQ+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDw1Pih2YWx1ZSkKLSAgICAgICAgIDw8ICIsICI8PCBn
ZXQ8Nj4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDc+KHZhbHVlKQotICAgICAgICAgPDwgIiwgIjw8
IGdldDw4Pih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8OT4odmFsdWUpIDw8ICIpIjsKLSAgcmV0dXJu
IHN0cmVhbS5zdHIoKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQotCi0vLyBW
ZXJpZmllcyB0aGF0IGEgc2VxdWVuY2UgZ2VuZXJhdGVkIGJ5IHRoZSBnZW5lcmF0b3IgYW5kIGFj
Y2Vzc2VkCi0vLyB2aWEgdGhlIGl0ZXJhdG9yIG9iamVjdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBv
bmUgdXNpbmcgR29vZ2xlIFRlc3QKLS8vIGFzc2VydGlvbnMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgc2l6ZV90IE4+Ci12b2lkIFZlcmlmeUdlbmVyYXRvcihjb25zdCBQYXJhbUdlbmVyYXRvcjxU
PiYgZ2VuZXJhdG9yLAotICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCAoJmV4cGVjdGVkX3Zh
bHVlcylbTl0pIHsKLSAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VD46Oml0ZXJhdG9yIGl0ID0g
Z2VuZXJhdG9yLmJlZ2luKCk7Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgTjsgKytpKSB7Ci0g
ICAgQVNTRVJUX0ZBTFNFKGl0ID09IGdlbmVyYXRvci5lbmQoKSkKLSAgICAgICAgPDwgIkF0IGVs
ZW1lbnQgIiA8PCBpIDw8ICIgd2hlbiBhY2Nlc3NpbmcgdmlhIGFuIGl0ZXJhdG9yICIKLSAgICAg
ICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rvci5cbiI7Ci0gICAgLy8gV2Ug
Y2Fubm90IHVzZSBFWFBFQ1RfRVEoKSBoZXJlIGFzIHRoZSB2YWx1ZXMgbWF5IGJlIHR1cGxlcywK
LSAgICAvLyB3aGljaCBkb24ndCBzdXBwb3J0IDw8LgotICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVk
X3ZhbHVlc1tpXSA9PSAqaXQpCi0gICAgICAgIDw8ICJ3aGVyZSBpIGlzICIgPDwgaQotICAgICAg
ICA8PCAiLCBleHBlY3RlZF92YWx1ZXNbaV0gaXMgIiA8PCBQcmludFZhbHVlKGV4cGVjdGVkX3Zh
bHVlc1tpXSkKLSAgICAgICAgPDwgIiwgKml0IGlzICIgPDwgUHJpbnRWYWx1ZSgqaXQpCi0gICAg
ICAgIDw8ICIsIGFuZCAnaXQnIGlzIGFuIGl0ZXJhdG9yIGNyZWF0ZWQgd2l0aCB0aGUgY29weSBj
b25zdHJ1Y3Rvci5cbiI7Ci0gICAgaXQrKzsKLSAgfQotICBFWFBFQ1RfVFJVRShpdCA9PSBnZW5l
cmF0b3IuZW5kKCkpCi0gICAgICAgIDw8ICJBdCB0aGUgcHJlc3VtZWQgZW5kIG9mIHNlcXVlbmNl
IHdoZW4gYWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRvciAiCi0gICAgICAgIDw8ICJjcmVhdGVkIHdp
dGggdGhlIGNvcHkgY29uc3RydWN0b3IuXG4iOwotCi0gIC8vIFRlc3QgdGhlIGl0ZXJhdG9yIGFz
c2lnbm1lbnQuIFRoZSBmb2xsb3dpbmcgbGluZXMgdmVyaWZ5IHRoYXQKLSAgLy8gdGhlIHNlcXVl
bmNlIGFjY2Vzc2VkIHZpYSBhbiBpdGVyYXRvciBpbml0aWFsaXplZCB2aWEgdGhlCi0gIC8vIGFz
c2lnbm1lbnQgb3BlcmF0b3IgKGFzIG9wcG9zZWQgdG8gYSBjb3B5IGNvbnN0cnVjdG9yKSBtYXRj
aGVzCi0gIC8vIGp1c3QgdGhlIHNhbWUuCi0gIGl0ID0gZ2VuZXJhdG9yLmJlZ2luKCk7Ci0gIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgTjsgKytpKSB7Ci0gICAgQVNTRVJUX0ZBTFNFKGl0ID09IGdl
bmVyYXRvci5lbmQoKSkKLSAgICAgICAgPDwgIkF0IGVsZW1lbnQgIiA8PCBpIDw8ICIgd2hlbiBh
Y2Nlc3NpbmcgdmlhIGFuIGl0ZXJhdG9yICIKLSAgICAgICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUg
YXNzaWdubWVudCBvcGVyYXRvci5cbiI7Ci0gICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWRfdmFsdWVz
W2ldID09ICppdCkKLSAgICAgICAgPDwgIndoZXJlIGkgaXMgIiA8PCBpCi0gICAgICAgIDw8ICIs
IGV4cGVjdGVkX3ZhbHVlc1tpXSBpcyAiIDw8IFByaW50VmFsdWUoZXhwZWN0ZWRfdmFsdWVzW2ld
KQotICAgICAgICA8PCAiLCAqaXQgaXMgIiA8PCBQcmludFZhbHVlKCppdCkKLSAgICAgICAgPDwg
IiwgYW5kICdpdCcgaXMgYW4gaXRlcmF0b3IgY3JlYXRlZCB3aXRoIHRoZSBjb3B5IGNvbnN0cnVj
dG9yLlxuIjsKLSAgICBpdCsrOwotICB9Ci0gIEVYUEVDVF9UUlVFKGl0ID09IGdlbmVyYXRvci5l
bmQoKSkKLSAgICAgICAgPDwgIkF0IHRoZSBwcmVzdW1lZCBlbmQgb2Ygc2VxdWVuY2Ugd2hlbiBh
Y2Nlc3NpbmcgdmlhIGFuIGl0ZXJhdG9yICIKLSAgICAgICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUg
YXNzaWdubWVudCBvcGVyYXRvci5cbiI7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9p
ZCBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ+JiBnZW5lcmF0
b3IpIHsKLSAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VD46Oml0ZXJhdG9yIGl0ID0gZ2VuZXJh
dG9yLmJlZ2luKCk7Ci0gIEVYUEVDVF9UUlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSk7Ci0KLSAg
aXQgPSBnZW5lcmF0b3IuYmVnaW4oKTsKLSAgRVhQRUNUX1RSVUUoaXQgPT0gZ2VuZXJhdG9yLmVu
ZCgpKTsKLX0KLQotLy8gR2VuZXJhdG9yIHRlc3RzLiBUaGV5IHRlc3QgdGhhdCBlYWNoIG9mIHRo
ZSBwcm92aWRlZCBnZW5lcmF0b3IgZnVuY3Rpb25zCi0vLyBnZW5lcmF0ZXMgYW4gZXhwZWN0ZWQg
c2VxdWVuY2Ugb2YgdmFsdWVzLiBUaGUgZ2VuZXJhbCB0ZXN0IHBhdHRlcm4KLS8vIGluc3RhbnRp
YXRlcyBhIGdlbmVyYXRvciB1c2luZyBvbmUgb2YgdGhlIGdlbmVyYXRvciBmdW5jdGlvbnMsCi0v
LyBjaGVja3MgdGhlIHNlcXVlbmNlIHByb2R1Y2VkIGJ5IHRoZSBnZW5lcmF0b3IgdXNpbmcgaXRz
IGl0ZXJhdG9yIEFQSSwKLS8vIGFuZCB0aGVuIHJlc2V0cyB0aGUgaXRlcmF0b3IgYmFjayB0byB0
aGUgYmVnaW5uaW5nIG9mIHRoZSBzZXF1ZW5jZQotLy8gYW5kIGNoZWNrcyB0aGUgc2VxdWVuY2Ug
YWdhaW4uCi0KLS8vIFRlc3RzIHRoYXQgaXRlcmF0b3JzIHByb2R1Y2VkIGJ5IGdlbmVyYXRvciBm
dW5jdGlvbnMgY29uZm9ybSB0byB0aGUKLS8vIEZvcndhcmRJdGVyYXRvciBjb25jZXB0LgotVEVT
VChJdGVyYXRvclRlc3QsIFBhcmFtSXRlcmF0b3JDb25mb3Jtc1RvRm9yd2FyZEl0ZXJhdG9yQ29u
Y2VwdCkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDEwKTsK
LSAgUGFyYW1HZW5lcmF0b3I8aW50Pjo6aXRlcmF0b3IgaXQgPSBnZW4uYmVnaW4oKTsKLQotICAv
LyBWZXJpZmllcyB0aGF0IGl0ZXJhdG9yIGluaXRpYWxpemF0aW9uIHdvcmtzIGFzIGV4cGVjdGVk
LgotICBQYXJhbUdlbmVyYXRvcjxpbnQ+OjppdGVyYXRvciBpdDIgPSBpdDsKLSAgRVhQRUNUX1RS
VUUoKml0ID09ICppdDIpIDw8ICJJbml0aWFsaXplZCBpdGVyYXRvcnMgbXVzdCBwb2ludCB0byB0
aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgImVsZW1lbnQgc2FtZSBhcyBpdHMg
c291cmNlIHBvaW50cyB0byI7Ci0KLSAgLy8gVmVyaWZpZXMgdGhhdCBpdGVyYXRvciBhc3NpZ25t
ZW50IHdvcmtzIGFzIGV4cGVjdGVkLgotICBpdCsrOwotICBFWFBFQ1RfRkFMU0UoKml0ID09ICpp
dDIpOwotICBpdDIgPSBpdDsKLSAgRVhQRUNUX1RSVUUoKml0ID09ICppdDIpIDw8ICJBc3NpZ25l
ZCBpdGVyYXRvcnMgbXVzdCBwb2ludCB0byB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgImVsZW1lbnQgc2FtZSBhcyBpdHMgc291cmNlIHBvaW50cyB0byI7Ci0KLSAgLy8gVmVy
aWZpZXMgdGhhdCBwcmVmaXggb3BlcmF0b3IrKygpIHJldHVybnMgKnRoaXMuCi0gIEVYUEVDVF9F
USgmaXQsICYoKytpdCkpIDw8ICJSZXN1bHQgb2YgdGhlIHByZWZpeCBvcGVyYXRvcisrIG11c3Qg
YmUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAicmVmZXIgdG8gdGhlIG9yaWdpbmFs
IG9iamVjdCI7Ci0KLSAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgcmVzdWx0IG9mIHRoZSBwb3N0Zml4
IG9wZXJhdG9yKysgcG9pbnRzIHRvIHRoZSB2YWx1ZQotICAvLyBwb2ludGVkIHRvIGJ5IHRoZSBv
cmlnaW5hbCBpdGVyYXRvci4KLSAgaW50IG9yaWdpbmFsX3ZhbHVlID0gKml0OyAgLy8gSGF2ZSB0
byBjb21wdXRlIGl0IG91dHNpZGUgb2YgbWFjcm8gY2FsbCB0byBiZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyB1bmFmZmVjdGVkIGJ5IHRoZSBwYXJhbWV0ZXIgZXZhbHVhdGlvbiBv
cmRlci4KLSAgRVhQRUNUX0VRKG9yaWdpbmFsX3ZhbHVlLCAqKGl0KyspKTsKLQotICAvLyBWZXJp
ZmllcyB0aGF0IHByZWZpeCBhbmQgcG9zdGZpeCBvcGVyYXRvcisrKCkgYWR2YW5jZSBhbiBpdGVy
YXRvcgotICAvLyBhbGwgdGhlIHNhbWUuCi0gIGl0MiA9IGl0OwotICBpdCsrOwotICArK2l0MjsK
LSAgRVhQRUNUX1RSVUUoKml0ID09ICppdDIpOwotfQotCi0vLyBUZXN0cyB0aGF0IFJhbmdlKCkg
Z2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KLVRFU1QoUmFuZ2VUZXN0LCBJbnRSYW5n
ZVdpdGhEZWZhdWx0U3RlcCkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJh
bmdlKDAsIDMpOwotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MCwgMSwgMn07Ci0g
IFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIEVkZ2UgY2Fz
ZS4gVGVzdHMgdGhhdCBSYW5nZSgpIGdlbmVyYXRlcyB0aGUgc2luZ2xlIGVsZW1lbnQgc2VxdWVu
Y2UKLS8vIGFzIGV4cGVjdGVkIHdoZW4gcHJvdmlkZWQgd2l0aCByYW5nZSBsaW1pdHMgdGhhdCBh
cmUgZXF1YWwuCi1URVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VTaW5nbGVWYWx1ZSkgewotICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDEpOwotICBjb25zdCBpbnQgZXhw
ZWN0ZWRfdmFsdWVzW10gPSB7MH07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3Zh
bHVlcyk7Ci19Ci0KLS8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBSYW5nZSgpIHdpdGggZ2VuZXJh
dGVzIGVtcHR5IHNlcXVlbmNlIHdoZW4KLS8vIHN1cHBsaWVkIHdpdGggYW4gZW1wdHkgcmFuZ2Uu
Ci1URVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VFbXB0eSkgewotICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDApOwotICBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUmFuZ2UoKSB3aXRoIGN1c3RvbSBzdGVwIChncmVhdGVyIHRo
ZW4gb25lKSBnZW5lcmF0ZXMKLS8vIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KLVRFU1QoUmFuZ2VU
ZXN0LCBJbnRSYW5nZVdpdGhDdXN0b21TdGVwKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGlu
dD4gZ2VuID0gUmFuZ2UoMCwgOSwgMyk7Ci0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9
IHswLCAzLCA2fTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBSYW5nZSgpIHdpdGggY3VzdG9tIHN0ZXAgKGdyZWF0ZXIgdGhlbiBv
bmUpIGdlbmVyYXRlcwotLy8gdGhlIGV4cGVjdGVkIHNlcXVlbmNlIHdoZW4gdGhlIGxhc3QgZWxl
bWVudCBkb2VzIG5vdCBmYWxsIG9uIHRoZQotLy8gdXBwZXIgcmFuZ2UgbGltaXQuIFNlcXVlbmNl
cyBnZW5lcmF0ZWQgYnkgUmFuZ2UoKSBtdXN0IG5vdCBoYXZlCi0vLyBlbGVtZW50cyBiZXlvbmQg
dGhlIHJhbmdlIGxpbWl0cy4KLVRFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZVdpdGhDdXN0b21TdGVw
T3ZlclVwcGVyQm91bmQpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5n
ZSgwLCA0LCAzKTsKLSAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezAsIDN9OwotICBW
ZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBWZXJpZmllcyB0
aGF0IFJhbmdlIHdvcmtzIHdpdGggdXNlci1kZWZpbmVkIHR5cGVzIHRoYXQgZGVmaW5lCi0vLyBj
b3B5IGNvbnN0cnVjdG9yLCBvcGVyYXRvcj0oKSwgb3BlcmF0b3IrKCksIGFuZCBvcGVyYXRvcjwo
KS4KLWNsYXNzIERvZ0FkZGVyIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IERvZ0FkZGVyKGNvbnN0
IGNoYXIqIGFfdmFsdWUpIDogdmFsdWVfKGFfdmFsdWUpIHt9Ci0gIERvZ0FkZGVyKGNvbnN0IERv
Z0FkZGVyJiBvdGhlcikgOiB2YWx1ZV8ob3RoZXIudmFsdWVfLmNfc3RyKCkpIHt9Ci0KLSAgRG9n
QWRkZXIgb3BlcmF0b3I9KGNvbnN0IERvZ0FkZGVyJiBvdGhlcikgewotICAgIGlmICh0aGlzICE9
ICZvdGhlcikKLSAgICAgIHZhbHVlXyA9IG90aGVyLnZhbHVlXzsKLSAgICByZXR1cm4gKnRoaXM7
Ci0gIH0KLSAgRG9nQWRkZXIgb3BlcmF0b3IrKGNvbnN0IERvZ0FkZGVyJiBvdGhlcikgY29uc3Qg
ewotICAgIE1lc3NhZ2UgbXNnOwotICAgIG1zZyA8PCB2YWx1ZV8uY19zdHIoKSA8PCBvdGhlci52
YWx1ZV8uY19zdHIoKTsKLSAgICByZXR1cm4gRG9nQWRkZXIobXNnLkdldFN0cmluZygpLmNfc3Ry
KCkpOwotICB9Ci0gIGJvb2wgb3BlcmF0b3I8KGNvbnN0IERvZ0FkZGVyJiBvdGhlcikgY29uc3Qg
ewotICAgIHJldHVybiB2YWx1ZV8gPCBvdGhlci52YWx1ZV87Ci0gIH0KLSAgY29uc3QgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6U3RyaW5nJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQot
Ci0gcHJpdmF0ZToKLSAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nIHZhbHVlXzsKLX07Ci0K
LVRFU1QoUmFuZ2VUZXN0LCBXb3Jrc1dpdGhBQ3VzdG9tVHlwZSkgewotICBjb25zdCBQYXJhbUdl
bmVyYXRvcjxEb2dBZGRlcj4gZ2VuID0KLSAgICAgIFJhbmdlKERvZ0FkZGVyKCJjYXQiKSwgRG9n
QWRkZXIoImNhdGRvZ2RvZyIpLCBEb2dBZGRlcigiZG9nIikpOwotICBQYXJhbUdlbmVyYXRvcjxE
b2dBZGRlcj46Oml0ZXJhdG9yIGl0ID0gZ2VuLmJlZ2luKCk7Ci0KLSAgQVNTRVJUX0ZBTFNFKGl0
ID09IGdlbi5lbmQoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiY2F0IiwgaXQtPnZhbHVlKCkuY19zdHIo
KSk7Ci0KLSAgQVNTRVJUX0ZBTFNFKCsraXQgPT0gZ2VuLmVuZCgpKTsKLSAgRVhQRUNUX1NUUkVR
KCJjYXRkb2ciLCBpdC0+dmFsdWUoKS5jX3N0cigpKTsKLQotICBFWFBFQ1RfVFJVRSgrK2l0ID09
IGdlbi5lbmQoKSk7Ci19Ci0KLWNsYXNzIEludFdyYXBwZXIgewotIHB1YmxpYzoKLSAgZXhwbGlj
aXQgSW50V3JhcHBlcihpbnQgYV92YWx1ZSkgOiB2YWx1ZV8oYV92YWx1ZSkge30KLSAgSW50V3Jh
cHBlcihjb25zdCBJbnRXcmFwcGVyJiBvdGhlcikgOiB2YWx1ZV8ob3RoZXIudmFsdWVfKSB7fQot
Ci0gIEludFdyYXBwZXIgb3BlcmF0b3I9KGNvbnN0IEludFdyYXBwZXImIG90aGVyKSB7Ci0gICAg
dmFsdWVfID0gb3RoZXIudmFsdWVfOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotICAvLyBvcGVy
YXRvcisoKSBhZGRzIGEgZGlmZmVyZW50IHR5cGUuCi0gIEludFdyYXBwZXIgb3BlcmF0b3IrKGlu
dCBvdGhlcikgY29uc3QgeyByZXR1cm4gSW50V3JhcHBlcih2YWx1ZV8gKyBvdGhlcik7IH0KLSAg
Ym9vbCBvcGVyYXRvcjwoY29uc3QgSW50V3JhcHBlciYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1
cm4gdmFsdWVfIDwgb3RoZXIudmFsdWVfOwotICB9Ci0gIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIHZhbHVlXzsgfQotCi0gcHJpdmF0ZToKLSAgaW50IHZhbHVlXzsKLX07Ci0KLVRFU1QoUmFu
Z2VUZXN0LCBXb3Jrc1dpdGhBQ3VzdG9tVHlwZVdpdGhEaWZmZXJlbnRJbmNyZW1lbnRUeXBlKSB7
Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPEludFdyYXBwZXI+IGdlbiA9IFJhbmdlKEludFdyYXBw
ZXIoMCksIEludFdyYXBwZXIoMikpOwotICBQYXJhbUdlbmVyYXRvcjxJbnRXcmFwcGVyPjo6aXRl
cmF0b3IgaXQgPSBnZW4uYmVnaW4oKTsKLQotICBBU1NFUlRfRkFMU0UoaXQgPT0gZ2VuLmVuZCgp
KTsKLSAgRVhQRUNUX0VRKDAsIGl0LT52YWx1ZSgpKTsKLQotICBBU1NFUlRfRkFMU0UoKytpdCA9
PSBnZW4uZW5kKCkpOwotICBFWFBFQ1RfRVEoMSwgaXQtPnZhbHVlKCkpOwotCi0gIEVYUEVDVF9U
UlVFKCsraXQgPT0gZ2VuLmVuZCgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIHdp
dGggYW4gYXJyYXkgcGFyYW1ldGVyIGdlbmVyYXRlcwotLy8gdGhlIGV4cGVjdGVkIHNlcXVlbmNl
LgotVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luQXJyYXkpIHsKLSAgaW50IGFycmF5W10gPSB7
MywgNSwgOH07Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4oYXJy
YXkpOwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBhcnJheSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
VmFsdWVzSW4oKSB3aXRoIGEgY29uc3QgYXJyYXkgcGFyYW1ldGVyIGdlbmVyYXRlcwotLy8gdGhl
IGV4cGVjdGVkIHNlcXVlbmNlLgotVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luQ29uc3RBcnJh
eSkgewotICBjb25zdCBpbnQgYXJyYXlbXSA9IHszLCA1LCA4fTsKLSAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbihhcnJheSk7Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4s
IGFycmF5KTsKLX0KLQotLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFZhbHVlc0luKCkgd2l0aCBh
biBhcnJheSBwYXJhbWV0ZXIgY29udGFpbmluZyBhCi0vLyBzaW5nbGUgZWxlbWVudCBnZW5lcmF0
ZXMgdGhlIHNpbmdsZSBlbGVtZW50IHNlcXVlbmNlLgotVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVl
c0luU2luZ2xlRWxlbWVudEFycmF5KSB7Ci0gIGludCBhcnJheVtdID0gezQyfTsKLSAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbihhcnJheSk7Ci0gIFZlcmlmeUdlbmVy
YXRvcihnZW4sIGFycmF5KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIGdlbmVyYXRl
cyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UgZm9yIGFuIFNUTAotLy8gY29udGFpbmVyICh2ZWN0b3Ip
LgotVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luVmVjdG9yKSB7Ci0gIHR5cGVkZWYgOjpzdGQ6
OnZlY3RvcjxpbnQ+IENvbnRhaW5lclR5cGU7Ci0gIENvbnRhaW5lclR5cGUgdmFsdWVzOwotICB2
YWx1ZXMucHVzaF9iYWNrKDMpOwotICB2YWx1ZXMucHVzaF9iYWNrKDUpOwotICB2YWx1ZXMucHVz
aF9iYWNrKDgpOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKHZh
bHVlcyk7Ci0KLSAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezMsIDUsIDh9OwotICBW
ZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBUZXN0cyB0aGF0
IFZhbHVlc0luKCkgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KLVRFU1QoVmFsdWVz
SW5UZXN0LCBWYWx1ZXNJbkl0ZXJhdG9yUmFuZ2UpIHsKLSAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9y
PGludD4gQ29udGFpbmVyVHlwZTsKLSAgQ29udGFpbmVyVHlwZSB2YWx1ZXM7Ci0gIHZhbHVlcy5w
dXNoX2JhY2soMyk7Ci0gIHZhbHVlcy5wdXNoX2JhY2soNSk7Ci0gIHZhbHVlcy5wdXNoX2JhY2so
OCk7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4odmFsdWVzLmJl
Z2luKCksIHZhbHVlcy5lbmQoKSk7Ci0KLSAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0g
ezMsIDUsIDh9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQot
Ci0vLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSBwcm92aWRlZCB3aXRoIGFuIGl0
ZXJhdG9yIHJhbmdlIHNwZWNpZnlpbmcgYQotLy8gc2luZ2xlIHZhbHVlIGdlbmVyYXRlcyBhIHNp
bmdsZS1lbGVtZW50IHNlcXVlbmNlLgotVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luU2luZ2xl
RWxlbWVudEl0ZXJhdG9yUmFuZ2UpIHsKLSAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGludD4gQ29u
dGFpbmVyVHlwZTsKLSAgQ29udGFpbmVyVHlwZSB2YWx1ZXM7Ci0gIHZhbHVlcy5wdXNoX2JhY2so
NDIpOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVlcy5i
ZWdpbigpLCB2YWx1ZXMuZW5kKCkpOwotCi0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9
IHs0Mn07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8v
IEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIHByb3ZpZGVkIHdpdGggYW4gZW1wdHkg
aXRlcmF0b3IgcmFuZ2UKLS8vIGdlbmVyYXRlcyBhbiBlbXB0eSBzZXF1ZW5jZS4KLVRFU1QoVmFs
dWVzSW5UZXN0LCBWYWx1ZXNJbkVtcHR5SXRlcmF0b3JSYW5nZSkgewotICB0eXBlZGVmIDo6c3Rk
Ojp2ZWN0b3I8aW50PiBDb250YWluZXJUeXBlOwotICBDb250YWluZXJUeXBlIHZhbHVlczsKLSAg
Y29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbih2YWx1ZXMuYmVnaW4oKSwg
dmFsdWVzLmVuZCgpKTsKLQotICBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgdGhlIFZhbHVlcygpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2Uu
Ci1URVNUKFZhbHVlc1Rlc3QsIFZhbHVlc1dvcmtzKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9y
PGludD4gZ2VuID0gVmFsdWVzKDMsIDUsIDgpOwotCi0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1
ZXNbXSA9IHszLCA1LCA4fTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVz
KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBWYWx1ZXMoKSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNl
cXVlbmNlcyBmcm9tIGVsZW1lbnRzIG9mCi0vLyBkaWZmZXJlbnQgdHlwZXMgY29udmVydGlibGUg
dG8gUGFyYW1HZW5lcmF0b3IncyBwYXJhbWV0ZXIgdHlwZS4KLVRFU1QoVmFsdWVzVGVzdCwgVmFs
dWVzV29ya3NGb3JWYWx1ZXNPZkNvbXBhdGlibGVUeXBlcykgewotICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxkb3VibGU+IGdlbiA9IFZhbHVlcygzLCA1LjBmLCA4LjApOwotCi0gIGNvbnN0IGRvdWJs
ZSBleHBlY3RlZF92YWx1ZXNbXSA9IHszLjAsIDUuMCwgOC4wfTsKLSAgVmVyaWZ5R2VuZXJhdG9y
KGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotVEVTVChWYWx1ZXNUZXN0LCBWYWx1ZXNXb3Jr
c0Zvck1heExlbmd0aExpc3QpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBW
YWx1ZXMoCi0gICAgICAxMCwgMjAsIDMwLCA0MCwgNTAsIDYwLCA3MCwgODAsIDkwLCAxMDAsCi0g
ICAgICAxMTAsIDEyMCwgMTMwLCAxNDAsIDE1MCwgMTYwLCAxNzAsIDE4MCwgMTkwLCAyMDAsCi0g
ICAgICAyMTAsIDIyMCwgMjMwLCAyNDAsIDI1MCwgMjYwLCAyNzAsIDI4MCwgMjkwLCAzMDAsCi0g
ICAgICAzMTAsIDMyMCwgMzMwLCAzNDAsIDM1MCwgMzYwLCAzNzAsIDM4MCwgMzkwLCA0MDAsCi0g
ICAgICA0MTAsIDQyMCwgNDMwLCA0NDAsIDQ1MCwgNDYwLCA0NzAsIDQ4MCwgNDkwLCA1MDApOwot
Ci0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHsKLSAgICAgIDEwLCAyMCwgMzAsIDQw
LCA1MCwgNjAsIDcwLCA4MCwgOTAsIDEwMCwKLSAgICAgIDExMCwgMTIwLCAxMzAsIDE0MCwgMTUw
LCAxNjAsIDE3MCwgMTgwLCAxOTAsIDIwMCwKLSAgICAgIDIxMCwgMjIwLCAyMzAsIDI0MCwgMjUw
LCAyNjAsIDI3MCwgMjgwLCAyOTAsIDMwMCwKLSAgICAgIDMxMCwgMzIwLCAzMzAsIDM0MCwgMzUw
LCAzNjAsIDM3MCwgMzgwLCAzOTAsIDQwMCwKLSAgICAgIDQxMCwgNDIwLCA0MzAsIDQ0MCwgNDUw
LCA0NjAsIDQ3MCwgNDgwLCA0OTAsIDUwMH07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVj
dGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIEVkZ2UgY2FzZSB0ZXN0LiBUZXN0cyB0aGF0IHNpbmdsZS1w
YXJhbWV0ZXIgVmFsdWVzKCkgZ2VuZXJhdGVzIHRoZSBzZXF1ZW5jZQotLy8gd2l0aCB0aGUgc2lu
Z2xlIHZhbHVlLgotVEVTVChWYWx1ZXNUZXN0LCBWYWx1ZXNXaXRoU2luZ2xlUGFyYW1ldGVyKSB7
Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzKDQyKTsKLQotICBjb25z
dCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7NDJ9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBl
eHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBUZXN0cyB0aGF0IEJvb2woKSBnZW5lcmF0ZXMgc2Vx
dWVuY2UgKGZhbHNlLCB0cnVlKS4KLVRFU1QoQm9vbFRlc3QsIEJvb2xXb3JrcykgewotICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxib29sPiBnZW4gPSBCb29sKCk7Ci0KLSAgY29uc3QgYm9vbCBleHBl
Y3RlZF92YWx1ZXNbXSA9IHtmYWxzZSwgdHJ1ZX07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4
cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfQ09NQklORQotCi0vLyBUZXN0cyB0
aGF0IENvbWJpbmUoKSB3aXRoIHR3byBwYXJhbWV0ZXJzIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQg
c2VxdWVuY2UuCi1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFR3b1BhcmFtZXRlcnMpIHsK
LSAgY29uc3QgY2hhciogZm9vID0gImZvbyI7Ci0gIGNvbnN0IGNoYXIqIGJhciA9ICJiYXIiOwot
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxjb25zdCBjaGFyKiwgaW50PiA+IGdlbiA9Ci0g
ICAgICBDb21iaW5lKFZhbHVlcyhmb28sIGJhciksIFZhbHVlcygzLCA0KSk7Ci0KLSAgdHVwbGU8
Y29uc3QgY2hhciosIGludD4gZXhwZWN0ZWRfdmFsdWVzW10gPSB7Ci0gICAgbWFrZV90dXBsZShm
b28sIDMpLCBtYWtlX3R1cGxlKGZvbywgNCksCi0gICAgbWFrZV90dXBsZShiYXIsIDMpLCBtYWtl
X3R1cGxlKGJhciwgNCl9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMp
OwotfQotCi0vLyBUZXN0cyB0aGF0IENvbWJpbmUoKSB3aXRoIHRocmVlIHBhcmFtZXRlcnMgZ2Vu
ZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KLVRFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVX
aXRoVGhyZWVQYXJhbWV0ZXJzKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwg
aW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoMCwgMSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMywgNCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWx1ZXMoNSwgNikpOwotICB0dXBsZTxpbnQsIGludCwgaW50PiBleHBlY3RlZF92YWx1
ZXNbXSA9IHsKLSAgICBtYWtlX3R1cGxlKDAsIDMsIDUpLCBtYWtlX3R1cGxlKDAsIDMsIDYpLAot
ICAgIG1ha2VfdHVwbGUoMCwgNCwgNSksIG1ha2VfdHVwbGUoMCwgNCwgNiksCi0gICAgbWFrZV90
dXBsZSgxLCAzLCA1KSwgbWFrZV90dXBsZSgxLCAzLCA2KSwKLSAgICBtYWtlX3R1cGxlKDEsIDQs
IDUpLCBtYWtlX3R1cGxlKDEsIDQsIDYpfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0
ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgQ29tYmluZSgpIHdpdGggdGhlIGZp
cnN0IHBhcmFtZXRlciBnZW5lcmF0aW5nIGEgc2luZ2xlIHZhbHVlCi0vLyBzZXF1ZW5jZSBnZW5l
cmF0ZXMgYSBzZXF1ZW5jZSB3aXRoIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZXF1YWwgdG8gdGhl
Ci0vLyBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHNlcXVlbmNlIGdlbmVyYXRlZCBieSB0aGUg
c2Vjb25kIHBhcmFtZXRlci4KLVRFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoRmlyc3RQYXJh
bWV0ZXJTaW5nbGVWYWx1ZSkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGlu
dD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcyg0MiksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDAsIDEpKTsKLQotICB0dXBsZTxp
bnQsIGludD4gZXhwZWN0ZWRfdmFsdWVzW10gPSB7bWFrZV90dXBsZSg0MiwgMCksIG1ha2VfdHVw
bGUoNDIsIDEpfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCB0aGUgQ29tYmluZSgpIHdpdGggdGhlIHNlY29uZCBwYXJhbWV0ZXIg
Z2VuZXJhdGluZyBhIHNpbmdsZSB2YWx1ZQotLy8gc2VxdWVuY2UgZ2VuZXJhdGVzIGEgc2VxdWVu
Y2Ugd2l0aCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGVxdWFsIHRvIHRoZQotLy8gbnVtYmVyIG9m
IGVsZW1lbnRzIGluIHRoZSBzZXF1ZW5jZSBnZW5lcmF0ZWQgYnkgdGhlIGZpcnN0IHBhcmFtZXRl
ci4KLVRFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoU2Vjb25kUGFyYW1ldGVyU2luZ2xlVmFs
dWUpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0gQ29t
YmluZShWYWx1ZXMoMCwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsdWVzKDQyKSk7Ci0KLSAgdHVwbGU8aW50LCBpbnQ+IGV4cGVj
dGVkX3ZhbHVlc1tdID0ge21ha2VfdHVwbGUoMCwgNDIpLCBtYWtlX3R1cGxlKDEsIDQyKX07Ci0g
IFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgd2hlbiB0aGUgZmlyc3QgcGFyYW1ldGVyIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLAot
Ly8gQ29tYmluZSgpIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLCB0b28uCi1URVNUKENvbWJp
bmVUZXN0LCBDb21iaW5lV2l0aEZpcnN0UGFyYW1ldGVyRW1wdHlSYW5nZSkgewotICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFJhbmdlKDAsIDAp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbHVlcygwLCAxKSk7Ci0gIFZlcmlmeUdlbmVyYXRvcklzRW1wdHkoZ2VuKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCB3aGVuIHRoZSBzZWNvbmQgcGFyYW1ldGVyIHByb2R1Y2VzIGFuIGVtcHR5IHNl
cXVlbmNlLAotLy8gQ29tYmluZSgpIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLCB0b28uCi1U
RVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFNlY29uZFBhcmFtZXRlckVtcHR5UmFuZ2UpIHsK
LSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShW
YWx1ZXMoMCwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUmFuZ2UoMSwgMSkpOwotICBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7
Ci19Ci0KLS8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBjb21iaW5lIHdvcmtzIHdpdGggdGhlIG1h
eGltdW0gbnVtYmVyCi0vLyBvZiBwYXJhbWV0ZXJzIHN1cHBvcnRlZCBieSBHb29nbGUgVGVzdCAo
Y3VycmVudGx5IDEwKS4KLVRFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoTWF4TnVtYmVyT2ZQ
YXJhbWV0ZXJzKSB7Ci0gIGNvbnN0IGNoYXIqIGZvbyA9ICJmb28iOwotICBjb25zdCBjaGFyKiBi
YXIgPSAiYmFyIjsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8Y29uc3QgY2hhciosIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoZm9vLCBiYXIpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygx
KSwgVmFsdWVzKDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbHVlcygzKSwgVmFsdWVzKDQpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg1KSwgVmFsdWVzKDYpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bHVlcyg3KSwgVmFsdWVzKDgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbHVlcyg5KSk7Ci0KLSAgdHVwbGU8Y29uc3QgY2hhciosIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQ+Ci0gICAgICBleHBlY3Rl
ZF92YWx1ZXNbXSA9IHttYWtlX3R1cGxlKGZvbywgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3R1cGxlKGJhciwgMSwgMiwgMywgNCwg
NSwgNiwgNywgOCwgOSl9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMp
OwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCi0KLS8vIFRlc3RzIHRoYXQgYW4g
Z2VuZXJhdG9yIHByb2R1Y2VzIGNvcnJlY3Qgc2VxdWVuY2UgYWZ0ZXIgYmVpbmcKLS8vIGFzc2ln
bmVkIGZyb20gYW5vdGhlciBnZW5lcmF0b3IuCi1URVNUKFBhcmFtR2VuZXJhdG9yVGVzdCwgQXNz
aWdubWVudFdvcmtzKSB7Ci0gIFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzKDEsIDIp
OwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbjIgPSBWYWx1ZXMoMywgNCk7Ci0gIGdl
biA9IGdlbjI7Ci0KLSAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezMsIDR9OwotICBW
ZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBUaGlzIHRlc3Qg
dmVyaWZpZXMgdGhhdCB0aGUgdGVzdHMgYXJlIGV4cGFuZGVkIGFuZCBydW4gYXMgc3BlY2lmaWVk
OgotLy8gb25lIHRlc3QgcGVyIGVsZW1lbnQgZnJvbSB0aGUgc2VxdWVuY2UgcHJvZHVjZWQgYnkg
dGhlIGdlbmVyYXRvcgotLy8gc3BlY2lmaWVkIGluIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QLiBJ
dCBhbHNvIHZlcmlmaWVzIHRoYXQgdGhlIHRlc3QncwotLy8gZml4dHVyZSBjb25zdHJ1Y3Rvciwg
U2V0VXAoKSwgYW5kIFRlYXJEb3duKCkgaGF2ZSBydW4gYW5kIGhhdmUgYmVlbgotLy8gc3VwcGxp
ZWQgd2l0aCB0aGUgY29ycmVjdCBwYXJhbWV0ZXJzLgotCi0vLyBUaGUgdXNlIG9mIGVudmlyb25t
ZW50IG9iamVjdCBhbGxvd3MgZGV0ZWN0aW9uIG9mIHRoZSBjYXNlIHdoZXJlIG5vIHRlc3QKLS8v
IGNhc2UgZnVuY3Rpb25hbGl0eSBpcyBydW4gYXQgYWxsLiBJbiB0aGlzIGNhc2UgVGVzdENhc2VU
ZWFyRG93biB3aWxsIG5vdAotLy8gYmUgYWJsZSB0byBkZXRlY3QgbWlzc2luZyB0ZXN0cywgbmF0
dXJhbGx5LgotdGVtcGxhdGUgPGludCBrRXhwZWN0ZWRDYWxscz4KLWNsYXNzIFRlc3RHZW5lcmF0
aW9uRW52aXJvbm1lbnQgOiBwdWJsaWMgOjp0ZXN0aW5nOjpFbnZpcm9ubWVudCB7Ci0gcHVibGlj
OgotICBzdGF0aWMgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudCogSW5zdGFuY2UoKSB7Ci0gICAg
c3RhdGljIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQqIGluc3RhbmNlID0gbmV3IFRlc3RHZW5l
cmF0aW9uRW52aXJvbm1lbnQ7Ci0gICAgcmV0dXJuIGluc3RhbmNlOwotICB9Ci0KLSAgdm9pZCBG
aXh0dXJlQ29uc3RydWN0b3JFeGVjdXRlZCgpIHsgZml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3VudF8r
KzsgfQotICB2b2lkIFNldFVwRXhlY3V0ZWQoKSB7IHNldF91cF9jb3VudF8rKzsgfQotICB2b2lk
IFRlYXJEb3duRXhlY3V0ZWQoKSB7IHRlYXJfZG93bl9jb3VudF8rKzsgfQotICB2b2lkIFRlc3RC
b2R5RXhlY3V0ZWQoKSB7IHRlc3RfYm9keV9jb3VudF8rKzsgfQotCi0gIHZpcnR1YWwgdm9pZCBU
ZWFyRG93bigpIHsKLSAgICAvLyBJZiBhbGwgTXVsdGlwbGVUZXN0R2VuZXJhdGlvblRlc3QgdGVz
dHMgaGF2ZSBiZWVuIGRlLXNlbGVjdGVkCi0gICAgLy8gYnkgdGhlIGZpbHRlciBmbGFnLCB0aGUg
Zm9sbG93aW5nIGNoZWNrcyBtYWtlIG5vIHNlbnNlLgotICAgIGJvb2wgcGVyZm9ybV9jaGVjayA9
IGZhbHNlOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrRXhwZWN0ZWRDYWxsczsgKytpKSB7
Ci0gICAgICBNZXNzYWdlIG1zZzsKLSAgICAgIG1zZyA8PCAiVGVzdHNFeHBhbmRlZEFuZFJ1bi8i
IDw8IGk7Ci0gICAgICBpZiAoVW5pdFRlc3RPcHRpb25zOjpGaWx0ZXJNYXRjaGVzVGVzdCgKLSAg
ICAgICAgICAgICAiVGVzdEV4cGFuc2lvbk1vZHVsZS9NdWx0aXBsZVRlc3RHZW5lcmF0aW9uVGVz
dCIsCi0gICAgICAgICAgICAgIG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKSkgewotICAgICAgICBw
ZXJmb3JtX2NoZWNrID0gdHJ1ZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHBlcmZvcm1fY2hl
Y2spIHsKLSAgICAgIEVYUEVDVF9FUShrRXhwZWN0ZWRDYWxscywgZml4dHVyZV9jb25zdHJ1Y3Rv
cl9jb3VudF8pCi0gICAgICAgICAgPDwgIkZpeHR1cmUgY29uc3RydWN0b3Igb2YgUGFyYW1UZXN0
R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlICIKLSAgICAgICAgICA8PCAiaGFzIG5vdCBiZWVuIHJ1
biBhcyBleHBlY3RlZC4iOwotICAgICAgRVhQRUNUX0VRKGtFeHBlY3RlZENhbGxzLCBzZXRfdXBf
Y291bnRfKQotICAgICAgICAgIDw8ICJGaXh0dXJlIFNldFVwIG1ldGhvZCBvZiBQYXJhbVRlc3RH
ZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgotICAgICAgICAgIDw8ICJoYXMgbm90IGJlZW4gcnVu
IGFzIGV4cGVjdGVkLiI7Ci0gICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2FsbHMsIHRlYXJfZG93
bl9jb3VudF8pCi0gICAgICAgICAgPDwgIkZpeHR1cmUgVGVhckRvd24gbWV0aG9kIG9mIFBhcmFt
VGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZSAiCi0gICAgICAgICAgPDwgImhhcyBub3QgYmVl
biBydW4gYXMgZXhwZWN0ZWQuIjsKLSAgICAgIEVYUEVDVF9FUShrRXhwZWN0ZWRDYWxscywgdGVz
dF9ib2R5X2NvdW50XykKLSAgICAgICAgICA8PCAiVGVzdCBpbiBQYXJhbVRlc3RHZW5lcmF0aW9u
VGVzdCB0ZXN0IGNhc2UgIgotICAgICAgICAgIDw8ICJoYXMgbm90IGJlZW4gcnVuIGFzIGV4cGVj
dGVkLiI7Ci0gICAgfQotICB9Ci0gcHJpdmF0ZToKLSAgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVu
dCgpIDogZml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3VudF8oMCksIHNldF91cF9jb3VudF8oMCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlYXJfZG93bl9jb3VudF8oMCksIHRlc3Rf
Ym9keV9jb3VudF8oMCkge30KLQotICBpbnQgZml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3VudF87Ci0g
IGludCBzZXRfdXBfY291bnRfOwotICBpbnQgdGVhcl9kb3duX2NvdW50XzsKLSAgaW50IHRlc3Rf
Ym9keV9jb3VudF87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0R2Vu
ZXJhdGlvbkVudmlyb25tZW50KTsKLX07Ci0KLWNvbnN0IGludCB0ZXN0X2dlbmVyYXRpb25fcGFy
YW1zW10gPSB7MzYsIDQyLCA3Mn07Ci0KLWNsYXNzIFRlc3RHZW5lcmF0aW9uVGVzdCA6IHB1Ymxp
YyBUZXN0V2l0aFBhcmFtPGludD4gewotIHB1YmxpYzoKLSAgZW51bSB7Ci0gICAgUEFSQU1FVEVS
X0NPVU5UID0KLSAgICAgICAgc2l6ZW9mKHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMpL3NpemVvZih0
ZXN0X2dlbmVyYXRpb25fcGFyYW1zWzBdKQotICB9OwotCi0gIHR5cGVkZWYgVGVzdEdlbmVyYXRp
b25FbnZpcm9ubWVudDxQQVJBTUVURVJfQ09VTlQ+IEVudmlyb25tZW50OwotCi0gIFRlc3RHZW5l
cmF0aW9uVGVzdCgpIHsKLSAgICBFbnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+Rml4dHVyZUNvbnN0
cnVjdG9yRXhlY3V0ZWQoKTsKLSAgICBjdXJyZW50X3BhcmFtZXRlcl8gPSBHZXRQYXJhbSgpOwot
ICB9Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBFbnZpcm9ubWVudDo6SW5zdGFuY2Uo
KS0+U2V0VXBFeGVjdXRlZCgpOwotICAgIEVYUEVDVF9FUShjdXJyZW50X3BhcmFtZXRlcl8sIEdl
dFBhcmFtKCkpOwotICB9Ci0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBFbnZpcm9u
bWVudDo6SW5zdGFuY2UoKS0+VGVhckRvd25FeGVjdXRlZCgpOwotICAgIEVYUEVDVF9FUShjdXJy
ZW50X3BhcmFtZXRlcl8sIEdldFBhcmFtKCkpOwotICB9Ci0KLSAgc3RhdGljIHZvaWQgU2V0VXBU
ZXN0Q2FzZSgpIHsKLSAgICBib29sIGFsbF90ZXN0c19pbl90ZXN0X2Nhc2Vfc2VsZWN0ZWQgPSB0
cnVlOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBQQVJBTUVURVJfQ09VTlQ7ICsraSkgewot
ICAgICAgTWVzc2FnZSB0ZXN0X25hbWU7Ci0gICAgICB0ZXN0X25hbWUgPDwgIlRlc3RzRXhwYW5k
ZWRBbmRSdW4vIiA8PCBpOwotICAgICAgaWYgKCAhVW5pdFRlc3RPcHRpb25zOjpGaWx0ZXJNYXRj
aGVzVGVzdCgKLSAgICAgICAgICAgICAgICAiVGVzdEV4cGFuc2lvbk1vZHVsZS9NdWx0aXBsZVRl
c3RHZW5lcmF0aW9uVGVzdCIsCi0gICAgICAgICAgICAgICAgdGVzdF9uYW1lLkdldFN0cmluZygp
KSkgewotICAgICAgICBhbGxfdGVzdHNfaW5fdGVzdF9jYXNlX3NlbGVjdGVkID0gZmFsc2U7Ci0g
ICAgICB9Ci0gICAgfQotICAgIEVYUEVDVF9UUlVFKGFsbF90ZXN0c19pbl90ZXN0X2Nhc2Vfc2Vs
ZWN0ZWQpCi0gICAgICAgIDw8ICJXaGVuIHJ1bm5pbmcgdGhlIFRlc3RHZW5lcmF0aW9uVGVzdCB0
ZXN0IGNhc2UgYWxsIG9mIGl0cyB0ZXN0c1xuIgotICAgICAgICA8PCAibXVzdCBiZSBzZWxlY3Rl
ZCBieSB0aGUgZmlsdGVyIGZsYWcgZm9yIHRoZSB0ZXN0IGNhc2UgdG8gcGFzcy5cbiIKLSAgICAg
ICAgPDwgIklmIG5vdCBhbGwgb2YgdGhlbSBhcmUgZW5hYmxlZCwgd2UgY2FuJ3QgcmVsaWFibHkg
Y29uY2x1ZGVcbiIKLSAgICAgICAgPDwgInRoYXQgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIHRlc3Rz
IGhhdmUgYmVlbiBnZW5lcmF0ZWQuIjsKLQotICAgIGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5jbGVh
cigpOwotICB9Ci0KLSAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKLSAgICB2ZWN0
b3I8aW50PiBleHBlY3RlZF92YWx1ZXModGVzdF9nZW5lcmF0aW9uX3BhcmFtcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9nZW5lcmF0aW9uX3BhcmFtcyArIFBBUkFNRVRF
Ul9DT1VOVCk7Ci0gICAgLy8gVGVzdCBleGVjdXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQg
YnkgR29vZ2xlIFRlc3QsCi0gICAgLy8gc28gdGhlIG9yZGVyIG9mIHZhbHVlcyBpbiBjb2xsZWN0
ZWRfcGFyYW1ldGVyc18gY2FuIGJlCi0gICAgLy8gZGlmZmVyZW50IGFuZCB3ZSBoYXZlIHRvIHNv
cnQgdG8gY29tcGFyZS4KLSAgICBzb3J0KGV4cGVjdGVkX3ZhbHVlcy5iZWdpbigpLCBleHBlY3Rl
ZF92YWx1ZXMuZW5kKCkpOwotICAgIHNvcnQoY29sbGVjdGVkX3BhcmFtZXRlcnNfLmJlZ2luKCks
IGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5lbmQoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShjb2xsZWN0
ZWRfcGFyYW1ldGVyc18gPT0gZXhwZWN0ZWRfdmFsdWVzKTsKLSAgfQotIHByb3RlY3RlZDoKLSAg
aW50IGN1cnJlbnRfcGFyYW1ldGVyXzsKLSAgc3RhdGljIHZlY3RvcjxpbnQ+IGNvbGxlY3RlZF9w
YXJhbWV0ZXJzXzsKLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oVGVzdEdlbmVyYXRpb25UZXN0KTsKLX07Ci12ZWN0b3I8aW50PiBUZXN0R2VuZXJhdGlvblRl
c3Q6OmNvbGxlY3RlZF9wYXJhbWV0ZXJzXzsKLQotVEVTVF9QKFRlc3RHZW5lcmF0aW9uVGVzdCwg
VGVzdHNFeHBhbmRlZEFuZFJ1bikgewotICBFbnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+VGVzdEJv
ZHlFeGVjdXRlZCgpOwotICBFWFBFQ1RfRVEoY3VycmVudF9wYXJhbWV0ZXJfLCBHZXRQYXJhbSgp
KTsKLSAgY29sbGVjdGVkX3BhcmFtZXRlcnNfLnB1c2hfYmFjayhHZXRQYXJhbSgpKTsKLX0KLUlO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFRlc3RFeHBhbnNpb25Nb2R1bGUsIFRlc3RHZW5lcmF0aW9u
VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlc0luKHRlc3RfZ2VuZXJhdGlvbl9w
YXJhbXMpKTsKLQotLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIGVsZW1lbnQgc2VxdWVu
Y2UgKHRoaXJkIHBhcmFtZXRlciBvZgotLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1ApIGlzIGV2
YWx1YXRlZCBpbiBJbml0R29vZ2xlVGVzdCgpIGFuZCBuZWl0aGVyIGF0Ci0vLyB0aGUgY2FsbCBz
aXRlIG9mIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIG5vciBpbiBSVU5fQUxMX1RFU1RTKCkuICBG
b3IKLS8vIHRoYXQsIHdlIGRlY2xhcmUgcGFyYW1fdmFsdWVfIHRvIGJlIGEgc3RhdGljIG1lbWJl
ciBvZgotLy8gR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QgYW5kIGluaXRpYWxpemUgaXQgdG8gMC4g
IFdlIHNldCBpdCB0byAxIGluCi0vLyBtYWluKCksIGp1c3QgYmVmb3JlIGludm9jYXRpb24gb2Yg
SW5pdEdvb2dsZVRlc3QoKS4gIEFmdGVyIGNhbGxpbmcKLS8vIEluaXRHb29nbGVUZXN0KCksIHdl
IHNldCB0aGUgdmFsdWUgdG8gMi4gIElmIHRoZSBzZXF1ZW5jZSBpcyBldmFsdWF0ZWQKLS8vIGJl
Zm9yZSBvciBhZnRlciBJbml0R29vZ2xlVGVzdCwgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Agd2ls
bCBjcmVhdGUgYQotLy8gdGVzdCB3aXRoIHBhcmFtZXRlciBvdGhlciB0aGFuIDEsIGFuZCB0aGUg
dGVzdCBib2R5IHdpbGwgZmFpbCB0aGUKLS8vIGFzc2VydGlvbi4KLWNsYXNzIEdlbmVyYXRvckV2
YWx1YXRpb25UZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7Ci0gcHVibGljOgotICBz
dGF0aWMgaW50IHBhcmFtX3ZhbHVlKCkgeyByZXR1cm4gcGFyYW1fdmFsdWVfOyB9Ci0gIHN0YXRp
YyB2b2lkIHNldF9wYXJhbV92YWx1ZShpbnQgcGFyYW1fdmFsdWUpIHsgcGFyYW1fdmFsdWVfID0g
cGFyYW1fdmFsdWU7IH0KLQotIHByaXZhdGU6Ci0gIHN0YXRpYyBpbnQgcGFyYW1fdmFsdWVfOwot
fTsKLWludCBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6cGFyYW1fdmFsdWVfID0gMDsKLQotVEVT
VF9QKEdlbmVyYXRvckV2YWx1YXRpb25UZXN0LCBHZW5lcmF0b3JzRXZhbHVhdGVkSW5NYWluKSB7
Ci0gIEVYUEVDVF9FUSgxLCBHZXRQYXJhbSgpKTsKLX0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KEdlbkV2YWxNb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3JFdmFsdWF0
aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhHZW5lcmF0b3JFdmFsdWF0
aW9uVGVzdDo6cGFyYW1fdmFsdWUoKSkpOwotCi0vLyBUZXN0cyB0aGF0IGdlbmVyYXRvcnMgZGVm
aW5lZCBpbiBhIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0IGFyZQotLy8gZnVuY3Rpb25hbC4g
R2VuZXJhdG9yIGV4dGVybl9nZW4gaXMgZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3Qy
LmNjLgotZXh0ZXJuIFBhcmFtR2VuZXJhdG9yPGludD4gZXh0ZXJuX2dlbjsKLWNsYXNzIEV4dGVy
bmFsR2VuZXJhdG9yVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4ge307Ci1URVNUX1Ao
RXh0ZXJuYWxHZW5lcmF0b3JUZXN0LCBFeHRlcm5hbEdlbmVyYXRvcikgewotICAvLyBTZXF1ZW5j
ZSBwcm9kdWNlZCBieSBleHRlcm5fZ2VuIGNvbnRhaW5zIG9ubHkgYSBzaW5nbGUgdmFsdWUKLSAg
Ly8gd2hpY2ggd2UgdmVyaWZ5IGhlcmUuCi0gIEVYUEVDVF9FUShHZXRQYXJhbSgpLCAzMyk7Ci19
Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUChFeHRlcm5hbEdlbmVyYXRvck1vZHVsZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIEV4dGVybmFsR2VuZXJhdG9yVGVzdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGV4dGVybl9nZW4pOwotCi0vLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0
ZXN0IGNhc2UgY2FuIGJlIGRlZmluZWQgaW4gb25lIHRyYW5zbGF0aW9uCi0vLyB1bml0IGFuZCBp
bnN0YW50aWF0ZWQgaW4gYW5vdGhlci4gVGhpcyB0ZXN0IHdpbGwgYmUgaW5zdGFudGlhdGVkIGlu
Ci0vLyBndGVzdC1wYXJhbS10ZXN0X3Rlc3QyLmNjLiBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0
IGZpeHR1cmUgY2xhc3MgaXMKLS8vIGRlZmluZWQgaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0Lmgu
Ci1URVNUX1AoRXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCwgSXNNdWx0aXBsZU9mMzMpIHsKLSAg
RVhQRUNUX0VRKDAsIEdldFBhcmFtKCkgJSAzMyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBwYXJh
bWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgaW5zdGFudGlhdGVkIHdpdGggbXVsdGlwbGUKLS8v
IGdlbmVyYXRvcnMuCi1jbGFzcyBNdWx0aXBsZUluc3RhbnRpYXRpb25UZXN0IDogcHVibGljIFRl
c3RXaXRoUGFyYW08aW50PiB7fTsKLVRFU1RfUChNdWx0aXBsZUluc3RhbnRpYXRpb25UZXN0LCBB
bGxvd3NNdWx0aXBsZUluc3RhbmNlcykgewotfQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2Vx
dWVuY2UxLCBNdWx0aXBsZUluc3RhbnRpYXRpb25UZXN0LCBWYWx1ZXMoMSwgMikpOwotSU5TVEFO
VElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2UyLCBNdWx0aXBsZUluc3RhbnRpYXRpb25UZXN0LCBS
YW5nZSgzLCA1KSk7Ci0KLS8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBj
YW4gYmUgaW5zdGFudGlhdGVkCi0vLyBpbiBtdWx0aXBsZSB0cmFuc2xhdGlvbiB1bml0cy4gVGhp
cyB0ZXN0IHdpbGwgYmUgaW5zdGFudGlhdGVkCi0vLyBoZXJlIGFuZCBpbiBndGVzdC1wYXJhbS10
ZXN0X3Rlc3QyLmNjLgotLy8gSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhdGlvblVuaXRz
VGVzdCBmaXh0dXJlIGNsYXNzCi0vLyBpcyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVz
dC5oLgotVEVTVF9QKEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCwg
SXNNdWx0aXBsZU9mNDIpIHsKLSAgRVhQRUNUX0VRKDAsIEdldFBhcmFtKCkgJSA0Mik7Ci19Ci1J
TlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5jZTEsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBWYWx1ZXMoNDIsIDQyKjIpKTsKLQotLy8gVGVzdHMgdGhhdCBlYWNoIGl0
ZXJhdGlvbiBvZiBwYXJhbWV0ZXJpemVkIHRlc3QgcnVucyBpbiBhIHNlcGFyYXRlIHRlc3QKLS8v
IG9iamVjdC4KLWNsYXNzIFNlcGFyYXRlSW5zdGFuY2VUZXN0IDogcHVibGljIFRlc3RXaXRoUGFy
YW08aW50PiB7Ci0gcHVibGljOgotICBTZXBhcmF0ZUluc3RhbmNlVGVzdCgpIDogY291bnRfKDAp
IHt9Ci0KLSAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKLSAgICBFWFBFQ1RfR0Uo
Z2xvYmFsX2NvdW50XywgMikKLSAgICAgICAgPDwgIklmIHNvbWUgKGJ1dCBub3QgYWxsKSBTZXBh
cmF0ZUluc3RhbmNlVGVzdCB0ZXN0cyBoYXZlIGJlZW4gIgotICAgICAgICA8PCAiZmlsdGVyZWQg
b3V0IHRoaXMgdGVzdCB3aWxsIGZhaWwuIE1ha2Ugc3VyZSB0aGF0IGFsbCAiCi0gICAgICAgIDw8
ICJHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCBhcmUgc2VsZWN0ZWQgb3IgZGUtc2VsZWN0ZWQgdG9n
ZXRoZXIgIgotICAgICAgICA8PCAiYnkgdGhlIHRlc3QgZmlsdGVyLiI7Ci0gIH0KLQotIHByb3Rl
Y3RlZDoKLSAgaW50IGNvdW50XzsKLSAgc3RhdGljIGludCBnbG9iYWxfY291bnRfOwotfTsKLWlu
dCBTZXBhcmF0ZUluc3RhbmNlVGVzdDo6Z2xvYmFsX2NvdW50XyA9IDA7Ci0KLVRFU1RfUChTZXBh
cmF0ZUluc3RhbmNlVGVzdCwgVGVzdHNSdW5JblNlcGFyYXRlSW5zdGFuY2VzKSB7Ci0gIEVYUEVD
VF9FUSgwLCBjb3VudF8rKyk7Ci0gIGdsb2JhbF9jb3VudF8rKzsKLX0KLUlOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKEZvdXJFbGVtU2VxdWVuY2UsIFNlcGFyYXRlSW5zdGFuY2VUZXN0LCBSYW5nZSgx
LCA0KSk7Ci0KLS8vIFRlc3RzIHRoYXQgYWxsIGluc3RhbnRpYXRpb25zIG9mIGEgdGVzdCBoYXZl
IG5hbWVkIGFwcHJvcHJpYXRlbHkuIFRlc3QKLS8vIGRlZmluZWQgd2l0aCBURVNUX1AoVGVzdENh
c2VOYW1lLCBUZXN0TmFtZSkgYW5kIGluc3RhbnRpYXRlZCB3aXRoCi0vLyBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUChTZXF1ZW5jZU5hbWUsIFRlc3RDYXNlTmFtZSwgZ2VuZXJhdG9yKSBtdXN0IGJl
IG5hbWVkCi0vLyBTZXF1ZW5jZU5hbWUvVGVzdENhc2VOYW1lLlRlc3ROYW1lL2ksIHdoZXJlIGkg
aXMgdGhlIDAtYmFzZWQgaW5kZXggb2YgdGhlCi0vLyBzZXF1ZW5jZSBlbGVtZW50IHVzZWQgdG8g
aW5zdGFudGlhdGUgdGhlIHRlc3QuCi1jbGFzcyBOYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRo
UGFyYW08aW50PiB7fTsKLQotVEVTVF9QKE5hbWluZ1Rlc3QsIFRlc3RzQXJlTmFtZWRBcHByb3By
aWF0ZWx5KSB7Ci0gIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9
Ci0gICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9p
bmZvKCk7Ci0KLSAgRVhQRUNUX1NUUkVRKCJaZXJvVG9GaXZlU2VxdWVuY2UvTmFtaW5nVGVzdCIs
IHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7Ci0KLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8
PCAiVGVzdHNBcmVOYW1lZEFwcHJvcHJpYXRlbHkvIiA8PCBHZXRQYXJhbSgpOwotICBFWFBFQ1Rf
U1RSRVEobXNnLkdldFN0cmluZygpLmNfc3RyKCksIHRlc3RfaW5mby0+bmFtZSgpKTsKLX0KLQot
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoWmVyb1RvRml2ZVNlcXVlbmNlLCBOYW1pbmdUZXN0LCBS
YW5nZSgwLCA1KSk7Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotVEVTVChD
b21waWxlVGVzdCwgQ29tYmluZUlzRGVmaW5lZE9ubHlXaGVuR3Rlc3RIYXNQYXJhbVRlc3RJc0Rl
ZmluZWQpIHsKLSNpZiBHVEVTVF9IQVNfQ09NQklORSAmJiAhR1RFU1RfSEFTX1BBUkFNX1RFU1QK
LSAgRkFJTCgpIDw8ICJHVEVTVF9IQVNfQ09NQklORSBpcyBkZWZpbmVkIHdoaWxlIEdURVNUX0hB
U19QQVJBTV9URVNUIGlzIG5vdFxuIgotI2VuZGlmCi19Ci0KLWludCBtYWluKGludCBhcmdjLCBj
aGFyICoqYXJndikgewotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0gIC8vIFVzZWQgaW4gVGVz
dEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZS4KLSAgQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KFRl
c3RHZW5lcmF0aW9uVGVzdDo6RW52aXJvbm1lbnQ6Okluc3RhbmNlKCkpOwotICAvLyBVc2VkIGlu
IEdlbmVyYXRvckV2YWx1YXRpb25UZXN0IHRlc3QgY2FzZS4gVGVzdHMgdGhhdCB0aGUgdXBkYXRl
ZCB2YWx1ZQotICAvLyB3aWxsIGJlIHBpY2tlZCB1cCBmb3IgaW5zdGFudGlhdGluZyB0ZXN0cyBp
biBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdC4KLSAgR2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnNl
dF9wYXJhbV92YWx1ZSgxKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotICA6
OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotI2lmIEdURVNUX0hBU19Q
QVJBTV9URVNUCi0gIC8vIFVzZWQgaW4gR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QgdGVzdCBjYXNl
LiBUZXN0cyB0aGF0IHZhbHVlIHVwZGF0ZWQKLSAgLy8gaGVyZSB3aWxsIE5PVCBiZSB1c2VkIGZv
ciBpbnN0YW50aWF0aW5nIHRlc3RzIGluCi0gIC8vIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0Lgot
ICBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6c2V0X3BhcmFtX3ZhbHVlKDIpOwotI2VuZGlmICAv
LyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3Rf
dGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rl
c3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjdmOTQ5MzYxMzdkZmM1ZjNmMmQ1
N2ZhNDBkY2FmN2ExNWNiNmI1ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3Rf
dGVzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgs
IEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0v
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcnM6IHZsYWRsQGdvb2dsZS5j
b20gKFZsYWQgTG9zZXYpCi0vLwotLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsg
KEdvb2dsZSBUZXN0KQotLy8KLS8vIFRoaXMgaGVhZGVyIGZpbGUgcHJvdmlkZXMgY2xhc3NlcyBh
bmQgZnVuY3Rpb25zIHVzZWQgaW50ZXJuYWxseQotLy8gZm9yIHRlc3RpbmcgR29vZ2xlIFRlc3Qg
aXRzZWxmLgotCi0jaWZuZGVmIEdURVNUX1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9URVNUX0hfCi0j
ZGVmaW5lIEdURVNUX1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9URVNUX0hfCi0KLSNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPgotCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotLy8gVGVzdCBmaXh0
dXJlIGZvciB0ZXN0aW5nIGRlZmluaXRpb24gYW5kIGluc3RhbnRpYXRpb24gb2YgYSB0ZXN0Ci0v
LyBpbiBzZXBhcmF0ZSB0cmFuc2xhdGlvbiB1bml0cy4KLWNsYXNzIEV4dGVybmFsSW5zdGFudGlh
dGlvblRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4ge307Ci0KLS8v
IFRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyBpbnN0YW50aWF0aW9uIG9mIGEgdGVzdCBpbiBtdWx0
aXBsZQotLy8gdHJhbnNsYXRpb24gdW5pdHMuCi1jbGFzcyBJbnN0YW50aWF0aW9uSW5NdWx0aXBs
ZVRyYW5zbGFpb25Vbml0c1Rlc3QKLSAgICA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08aW50PiB7fTsKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi0jZW5kaWYg
IC8vIEdURVNUX1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcG9ydF90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzNzI1ODYwMmZhNWNmNWE3Nzk5NDdjZDQyN2UyMGU5MDlmYzkyNThkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcG9ydF90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTAx
OCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0v
LwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0v
LwotLy8gQXV0aG9yczogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldiksIHdhbkBnb29nbGUu
Y29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGhpcyBmaWxlIHRlc3RzIHRoZSBpbnRlcm5hbCBj
cm9zcy1wbGF0Zm9ybSBzdXBwb3J0IHV0aWxpdGllcy4KLQotI2luY2x1ZGUgPGd0ZXN0L2ludGVy
bmFsL2d0ZXN0LXBvcnQuaD4KLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLSNpZiBHVEVTVF9PU19N
QUMKLSNpbmNsdWRlIDx0aW1lLmg+Ci0jZW5kaWYgIC8vIEdURVNUX09TX01BQwotCi0jaW5jbHVk
ZSA8dXRpbGl0eT4gIC8vIEZvciBzdGQ6OnBhaXIgYW5kIHN0ZDo6bWFrZV9wYWlyLgotCi0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGkuaD4KLQotLy8g
SW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRl
c3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVy
bmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVy
cm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFs
bHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZp
bmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwt
aW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLXVzaW5nIHN0ZDo6bWFrZV9w
YWlyOwotdXNpbmcgc3RkOjpwYWlyOwotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci1uYW1lc3BhY2Ug
aW50ZXJuYWwgewotCi0vLyBUZXN0cyB0aGF0IHRoZSBlbGVtZW50X3R5cGUgdHlwZWRlZiBpcyBh
dmFpbGFibGUgaW4gc2NvcGVkX3B0ciBhbmQgcmVmZXJzCi0vLyB0byB0aGUgcGFyYW1ldGVyIHR5
cGUuCi1URVNUKFNjb3BlZFB0clRlc3QsIERlZmluZXNFbGVtZW50VHlwZSkgewotICBTdGF0aWNB
c3NlcnRUeXBlRXE8aW50LCA6OnRlc3Rpbmc6OmludGVybmFsOjpzY29wZWRfcHRyPGludD46OmVs
ZW1lbnRfdHlwZT4oKTsKLX0KLQotLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogSW1wbGVtZW50
IFRIRSBSRVNUIG9mIHNjb3BlZF9wdHIgdGVzdHMuCi0KLVRFU1QoR3Rlc3RDaGVja1N5bnRheFRl
c3QsIEJlaGF2ZXNMaWtlQVNpbmdsZVN0YXRlbWVudCkgewotICBpZiAoQWx3YXlzRmFsc2UoKSkK
LSAgICBHVEVTVF9DSEVDS18oZmFsc2UpIDw8ICJUaGlzIHNob3VsZCBuZXZlciBiZSBleGVjdXRl
ZDsgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIkl0J3MgYSBjb21waWxhdGlvbiB0ZXN0
IG9ubHkuIjsKLQotICBpZiAoQWx3YXlzVHJ1ZSgpKQotICAgIEdURVNUX0NIRUNLXyh0cnVlKTsK
LSAgZWxzZQotICAgIDsgIC8vIE5PTElOVAotCi0gIGlmIChBbHdheXNGYWxzZSgpKQotICAgIDsg
IC8vIE5PTElOVAotICBlbHNlCi0gICAgR1RFU1RfQ0hFQ0tfKHRydWUpIDw8ICIiOwotfQotCi1U
RVNUKEd0ZXN0Q2hlY2tTeW50YXhUZXN0LCBXb3Jrc1dpdGhTd2l0Y2gpIHsKLSAgc3dpdGNoICgw
KSB7Ci0gICAgY2FzZSAxOgotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIEdURVNU
X0NIRUNLXyh0cnVlKTsKLSAgfQotCi0gIHN3aXRjaCgwKQotICAgIGNhc2UgMDoKLSAgICAgIEdU
RVNUX0NIRUNLXyh0cnVlKSA8PCAiQ2hlY2sgZmFpbGVkIGluIHN3aXRjaCBjYXNlIjsKLX0KLQot
I2lmIEdURVNUX09TX01BQwotdm9pZCogVGhyZWFkRnVuYyh2b2lkKiBkYXRhKSB7Ci0gIHB0aHJl
YWRfbXV0ZXhfdCogbXV0ZXggPSBzdGF0aWNfY2FzdDxwdGhyZWFkX211dGV4X3QqPihkYXRhKTsK
LSAgcHRocmVhZF9tdXRleF9sb2NrKG11dGV4KTsKLSAgcHRocmVhZF9tdXRleF91bmxvY2sobXV0
ZXgpOwotICByZXR1cm4gTlVMTDsKLX0KLQotVEVTVChHZXRUaHJlYWRDb3VudFRlc3QsIFJldHVy
bnNDb3JyZWN0VmFsdWUpIHsKLSAgRVhQRUNUX0VRKDFVLCBHZXRUaHJlYWRDb3VudCgpKTsKLSAg
cHRocmVhZF9tdXRleF90IG11dGV4OwotICBwdGhyZWFkX2F0dHJfdCAgYXR0cjsKLSAgcHRocmVh
ZF90ICAgICAgIHRocmVhZF9pZDsKLQotICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiB0dXJu
IG11dGV4IGludG8gaW50ZXJuYWw6Ok11dGV4IGZvciBhdXRvbWF0aWMKLSAgLy8gZGVzdHJ1Y3Rp
b24uCi0gIHB0aHJlYWRfbXV0ZXhfaW5pdCgmbXV0ZXgsIE5VTEwpOwotICBwdGhyZWFkX211dGV4
X2xvY2soJm11dGV4KTsKLSAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXR0cl9pbml0KCZhdHRyKSk7
Ci0gIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0dHJfc2V0ZGV0YWNoc3RhdGUoJmF0dHIsIFBUSFJF
QURfQ1JFQVRFX0pPSU5BQkxFKSk7Ci0KLSAgY29uc3QgaW50IHN0YXR1cyA9IHB0aHJlYWRfY3Jl
YXRlKCZ0aHJlYWRfaWQsICZhdHRyLCAmVGhyZWFkRnVuYywgJm11dGV4KTsKLSAgQVNTRVJUX0VR
KDAsIHB0aHJlYWRfYXR0cl9kZXN0cm95KCZhdHRyKSk7Ci0gIEFTU0VSVF9FUSgwLCBzdGF0dXMp
OwotICBFWFBFQ1RfRVEoMlUsIEdldFRocmVhZENvdW50KCkpOwotICBwdGhyZWFkX211dGV4X3Vu
bG9jaygmbXV0ZXgpOwotCi0gIHZvaWQqIGR1bW15OwotICBBU1NFUlRfRVEoMCwgcHRocmVhZF9q
b2luKHRocmVhZF9pZCwgJmR1bW15KSk7Ci0KLSAgLy8gTWFjT1MgWCBtYXkgbm90IGltbWVkaWF0
ZWx5IHJlcG9ydCB0aGUgdXBkYXRlZCB0aHJlYWQgY291bnQgYWZ0ZXIKLSAgLy8gam9pbmluZyBh
IHRocmVhZCwgY2F1c2luZyBmbGFraW5lc3MgaW4gdGhpcyB0ZXN0LiBUbyBjb3VudGVyIHRoYXQs
IHdlCi0gIC8vIHdhaXQgZm9yIHVwIHRvIC41IHNlY29uZHMgZm9yIHRoZSBPUyB0byByZXBvcnQg
dGhlIGNvcnJlY3QgdmFsdWUuCi0gIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgKytpKSB7Ci0gICAg
aWYgKEdldFRocmVhZENvdW50KCkgPT0gMSkKLSAgICAgIGJyZWFrOwotCi0gICAgU2xlZXBNaWxs
aXNlY29uZHMoMTAwKTsKLSAgfQotICBFWFBFQ1RfRVEoMVUsIEdldFRocmVhZENvdW50KCkpOwot
ICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm11dGV4KTsKLX0KLSNlbHNlCi1URVNUKEdldFRocmVh
ZENvdW50VGVzdCwgUmV0dXJuc1plcm9XaGVuVW5hYmxlVG9Db3VudFRocmVhZHMpIHsKLSAgRVhQ
RUNUX0VRKDBVLCBHZXRUaHJlYWRDb3VudCgpKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfTUFD
Ci0KLVRFU1QoR3Rlc3RDaGVja0RlYXRoVGVzdCwgRGllc1dpdGhDb3JyZWN0T3V0cHV0T25GYWls
dXJlKSB7Ci0gIGNvbnN0IGJvb2wgYV9mYWxzZV9jb25kaXRpb24gPSBmYWxzZTsKLSAgY29uc3Qg
Y2hhciByZWdleFtdID0KLSNpZmRlZiBfTVNDX1ZFUgotICAgICAiZ3Rlc3QtcG9ydF90ZXN0XFwu
Y2NcXChcXGQrXFwpOiIKLSNlbHNlCi0gICAgICJndGVzdC1wb3J0X3Rlc3RcXC5jYzpbMC05XSsi
Ci0jZW5kaWYgIC8vIF9NU0NfVkVSCi0gICAgICIuKmFfZmFsc2VfY29uZGl0aW9uLipFeHRyYSBp
bmZvLioiOwotCi0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoR1RFU1RfQ0hFQ0tfKGFfZmFs
c2VfY29uZGl0aW9uKSA8PCAiRXh0cmEgaW5mbyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVnZXgpOwotfQotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotVEVTVChHdGVzdENo
ZWNrRGVhdGhUZXN0LCBMaXZlc1NpbGVudGx5T25TdWNjZXNzKSB7Ci0gIEVYUEVDVF9FWElUKHsK
LSAgICAgIEdURVNUX0NIRUNLXyh0cnVlKSA8PCAiRXh0cmEgaW5mbyI7Ci0gICAgICA6OnN0ZDo6
Y2VyciA8PCAiU3VjY2Vzc1xuIjsKLSAgICAgIGV4aXQoMCk7IH0sCi0gICAgICA6OnRlc3Rpbmc6
OkV4aXRlZFdpdGhDb2RlKDApLCAiU3VjY2VzcyIpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hB
U19ERUFUSF9URVNUCi0KLSNpZiBHVEVTVF9VU0VTX1BPU0lYX1JFCi0KLSNpZiBHVEVTVF9IQVNf
VFlQRURfVEVTVAotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyPgotY2xhc3MgUkVUZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7fTsKLQotLy8gRGVmaW5lcyBTdHJpbmdUeXBlcyBhcyB0aGUg
bGlzdCBvZiBhbGwgc3RyaW5nIHR5cGVzIHRoYXQgY2xhc3MgUkUKLS8vIHN1cHBvcnRzLgotdHlw
ZWRlZiB0ZXN0aW5nOjpUeXBlczwKLSAgICA6OnN0ZDo6c3RyaW5nLAotI2lmIEdURVNUX0hBU19H
TE9CQUxfU1RSSU5HCi0gICAgOjpzdHJpbmcsCi0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxf
U1RSSU5HCi0gICAgY29uc3QgY2hhcio+IFN0cmluZ1R5cGVzOwotCi1UWVBFRF9URVNUX0NBU0Uo
UkVUZXN0LCBTdHJpbmdUeXBlcyk7Ci0KLS8vIFRlc3RzIFJFJ3MgaW1wbGljaXQgY29uc3RydWN0
b3JzLgotVFlQRURfVEVTVChSRVRlc3QsIEltcGxpY2l0Q29uc3RydWN0b3JXb3JrcykgewotICBj
b25zdCBSRSBlbXB0eShUeXBlUGFyYW0oIiIpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCBlbXB0eS5w
YXR0ZXJuKCkpOwotCi0gIGNvbnN0IFJFIHNpbXBsZShUeXBlUGFyYW0oImhlbGxvIikpOwotICBF
WFBFQ1RfU1RSRVEoImhlbGxvIiwgc2ltcGxlLnBhdHRlcm4oKSk7Ci0KLSAgY29uc3QgUkUgbm9y
bWFsKFR5cGVQYXJhbSgiLiooXFx3KykiKSk7Ci0gIEVYUEVDVF9TVFJFUSgiLiooXFx3KykiLCBu
b3JtYWwucGF0dGVybigpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBSRSdzIGNvbnN0cnVjdG9ycyBy
ZWplY3QgaW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb25zLgotVFlQRURfVEVTVChSRVRlc3QsIFJl
amVjdHNJbnZhbGlkUmVnZXgpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIGNv
bnN0IFJFIGludmFsaWQoVHlwZVBhcmFtKCI/IikpOwotICB9LCAiXCI/XCIgaXMgbm90IGEgdmFs
aWQgUE9TSVggRXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9uLiIpOwotfQotCi0vLyBUZXN0cyBS
RTo6RnVsbE1hdGNoKCkuCi1UWVBFRF9URVNUKFJFVGVzdCwgRnVsbE1hdGNoV29ya3MpIHsKLSAg
Y29uc3QgUkUgZW1wdHkoVHlwZVBhcmFtKCIiKSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0
Y2goVHlwZVBhcmFtKCIiKSwgZW1wdHkpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2go
VHlwZVBhcmFtKCJhIiksIGVtcHR5KSk7Ci0KLSAgY29uc3QgUkUgcmUoVHlwZVBhcmFtKCJhLip6
IikpOwotICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYXoiKSwgcmUpKTsK
LSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oImF4eXoiKSwgcmUpKTsKLSAg
RVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJiYXoiKSwgcmUpKTsKLSAgRVhQ
RUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJhenkiKSwgcmUpKTsKLX0KLQotLy8g
VGVzdHMgUkU6OlBhcnRpYWxNYXRjaCgpLgotVFlQRURfVEVTVChSRVRlc3QsIFBhcnRpYWxNYXRj
aFdvcmtzKSB7Ci0gIGNvbnN0IFJFIGVtcHR5KFR5cGVQYXJhbSgiIikpOwotICBFWFBFQ1RfVFJV
RShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiIiksIGVtcHR5KSk7Ci0gIEVYUEVDVF9UUlVF
KFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCJhIiksIGVtcHR5KSk7Ci0KLSAgY29uc3QgUkUg
cmUoVHlwZVBhcmFtKCJhLip6IikpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5
cGVQYXJhbSgiYXoiKSwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBl
UGFyYW0oImF4eXoiKSwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBl
UGFyYW0oImJheiIpLCByZSkpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQ
YXJhbSgiYXp5IiksIHJlKSk7Ci0gIEVYUEVDVF9GQUxTRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQ
YXJhbSgienphIiksIHJlKSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QK
LQotI2VsaWYgR1RFU1RfVVNFU19TSU1QTEVfUkUKLQotVEVTVChJc0luU2V0VGVzdCwgTnVsQ2hh
cklzTm90SW5BbnlTZXQpIHsKLSAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ1wwJywgIiIpKTsKLSAg
RVhQRUNUX0ZBTFNFKElzSW5TZXQoJ1wwJywgIlwwIikpOwotICBFWFBFQ1RfRkFMU0UoSXNJblNl
dCgnXDAnLCAiYSIpKTsKLX0KLQotVEVTVChJc0luU2V0VGVzdCwgV29ya3NGb3JOb25OdWxDaGFy
cykgewotICBFWFBFQ1RfRkFMU0UoSXNJblNldCgnYScsICJBYiIpKTsKLSAgRVhQRUNUX0ZBTFNF
KElzSW5TZXQoJ2MnLCAiIikpOwotCi0gIEVYUEVDVF9UUlVFKElzSW5TZXQoJ2InLCAiYmNkIikp
OwotICBFWFBFQ1RfVFJVRShJc0luU2V0KCdiJywgImFiIikpOwotfQotCi1URVNUKElzRGlnaXRU
ZXN0LCBJc0ZhbHNlRm9yTm9uRGlnaXQpIHsKLSAgRVhQRUNUX0ZBTFNFKElzRGlnaXQoJ1wwJykp
OwotICBFWFBFQ1RfRkFMU0UoSXNEaWdpdCgnICcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzRGlnaXQo
JysnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0RpZ2l0KCctJykpOwotICBFWFBFQ1RfRkFMU0UoSXNE
aWdpdCgnLicpKTsKLSAgRVhQRUNUX0ZBTFNFKElzRGlnaXQoJ2EnKSk7Ci19Ci0KLVRFU1QoSXNE
aWdpdFRlc3QsIElzVHJ1ZUZvckRpZ2l0KSB7Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQoJzAnKSk7
Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQoJzEnKSk7Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQoJzUn
KSk7Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQoJzknKSk7Ci19Ci0KLVRFU1QoSXNQdW5jdFRlc3Qs
IElzRmFsc2VGb3JOb25QdW5jdCkgewotICBFWFBFQ1RfRkFMU0UoSXNQdW5jdCgnXDAnKSk7Ci0g
IEVYUEVDVF9GQUxTRShJc1B1bmN0KCcgJykpOwotICBFWFBFQ1RfRkFMU0UoSXNQdW5jdCgnXG4n
KSk7Ci0gIEVYUEVDVF9GQUxTRShJc1B1bmN0KCdhJykpOwotICBFWFBFQ1RfRkFMU0UoSXNQdW5j
dCgnMCcpKTsKLX0KLQotVEVTVChJc1B1bmN0VGVzdCwgSXNUcnVlRm9yUHVuY3QpIHsKLSAgZm9y
IChjb25zdCBjaGFyKiBwID0gIl4tIVwiIyQlJicoKSorLC4vOjs8PT4/QFtcXF1fYHt8fX4iOyAq
cDsgcCsrKSB7Ci0gICAgRVhQRUNUX1BSRUQxKElzUHVuY3QsICpwKTsKLSAgfQotfQotCi1URVNU
KElzUmVwZWF0VGVzdCwgSXNGYWxzZUZvck5vblJlcGVhdENoYXIpIHsKLSAgRVhQRUNUX0ZBTFNF
KElzUmVwZWF0KCdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCcgJykpOwotICBFWFBF
Q1RfRkFMU0UoSXNSZXBlYXQoJ2EnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1JlcGVhdCgnMScpKTsK
LSAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCctJykpOwotfQotCi1URVNUKElzUmVwZWF0VGVzdCwg
SXNUcnVlRm9yUmVwZWF0Q2hhcikgewotICBFWFBFQ1RfVFJVRShJc1JlcGVhdCgnPycpKTsKLSAg
RVhQRUNUX1RSVUUoSXNSZXBlYXQoJyonKSk7Ci0gIEVYUEVDVF9UUlVFKElzUmVwZWF0KCcrJykp
OwotfQotCi1URVNUKElzV2hpdGVTcGFjZVRlc3QsIElzRmFsc2VGb3JOb25XaGl0ZVNwYWNlKSB7
Ci0gIEVYUEVDVF9GQUxTRShJc1doaXRlU3BhY2UoJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNX
aGl0ZVNwYWNlKCdhJykpOwotICBFWFBFQ1RfRkFMU0UoSXNXaGl0ZVNwYWNlKCcxJykpOwotICBF
WFBFQ1RfRkFMU0UoSXNXaGl0ZVNwYWNlKCcrJykpOwotICBFWFBFQ1RfRkFMU0UoSXNXaGl0ZVNw
YWNlKCdfJykpOwotfQotCi1URVNUKElzV2hpdGVTcGFjZVRlc3QsIElzVHJ1ZUZvcldoaXRlU3Bh
Y2UpIHsKLSAgRVhQRUNUX1RSVUUoSXNXaGl0ZVNwYWNlKCcgJykpOwotICBFWFBFQ1RfVFJVRShJ
c1doaXRlU3BhY2UoJ1xuJykpOwotICBFWFBFQ1RfVFJVRShJc1doaXRlU3BhY2UoJ1xyJykpOwot
ICBFWFBFQ1RfVFJVRShJc1doaXRlU3BhY2UoJ1x0JykpOwotICBFWFBFQ1RfVFJVRShJc1doaXRl
U3BhY2UoJ1x2JykpOwotICBFWFBFQ1RfVFJVRShJc1doaXRlU3BhY2UoJ1xmJykpOwotfQotCi1U
RVNUKElzV29yZENoYXJUZXN0LCBJc0ZhbHNlRm9yTm9uV29yZENoYXIpIHsKLSAgRVhQRUNUX0ZB
TFNFKElzV29yZENoYXIoJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNXb3JkQ2hhcignKycpKTsK
LSAgRVhQRUNUX0ZBTFNFKElzV29yZENoYXIoJy4nKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1dvcmRD
aGFyKCcgJykpOwotICBFWFBFQ1RfRkFMU0UoSXNXb3JkQ2hhcignXG4nKSk7Ci19Ci0KLVRFU1Qo
SXNXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvckxldHRlcikgewotICBFWFBFQ1RfVFJVRShJc1dvcmRD
aGFyKCdhJykpOwotICBFWFBFQ1RfVFJVRShJc1dvcmRDaGFyKCdiJykpOwotICBFWFBFQ1RfVFJV
RShJc1dvcmRDaGFyKCdBJykpOwotICBFWFBFQ1RfVFJVRShJc1dvcmRDaGFyKCdaJykpOwotfQot
Ci1URVNUKElzV29yZENoYXJUZXN0LCBJc1RydWVGb3JEaWdpdCkgewotICBFWFBFQ1RfVFJVRShJ
c1dvcmRDaGFyKCcwJykpOwotICBFWFBFQ1RfVFJVRShJc1dvcmRDaGFyKCcxJykpOwotICBFWFBF
Q1RfVFJVRShJc1dvcmRDaGFyKCc3JykpOwotICBFWFBFQ1RfVFJVRShJc1dvcmRDaGFyKCc5Jykp
OwotfQotCi1URVNUKElzV29yZENoYXJUZXN0LCBJc1RydWVGb3JVbmRlcnNjb3JlKSB7Ci0gIEVY
UEVDVF9UUlVFKElzV29yZENoYXIoJ18nKSk7Ci19Ci0KLVRFU1QoSXNWYWxpZEVzY2FwZVRlc3Qs
IElzRmFsc2VGb3JOb25QcmludGFibGUpIHsKLSAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUo
J1wwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnXDAwNycpKTsKLX0KLQotVEVT
VChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZvckRpZ2l0KSB7Ci0gIEVYUEVDVF9GQUxTRShJ
c1ZhbGlkRXNjYXBlKCcwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnOScpKTsK
LX0KLQotVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZvcldoaXRlU3BhY2UpIHsKLSAg
RVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJyAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlk
RXNjYXBlKCdcbicpKTsKLX0KLQotVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZvclNv
bWVMZXR0ZXIpIHsKLSAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJ2EnKSk7Ci0gIEVYUEVD
VF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdaJykpOwotfQotCi1URVNUKElzVmFsaWRFc2NhcGVUZXN0
LCBJc1RydWVGb3JQdW5jdCkgewotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCcuJykpOwot
ICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCctJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlk
RXNjYXBlKCdeJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCckJykpOwotICBFWFBF
Q1RfVFJVRShJc1ZhbGlkRXNjYXBlKCcoJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBl
KCddJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCd7JykpOwotICBFWFBFQ1RfVFJV
RShJc1ZhbGlkRXNjYXBlKCd8JykpOwotfQotCi1URVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc1Ry
dWVGb3JTb21lTGV0dGVyKSB7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ2QnKSk7Ci0g
IEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ0QnKSk7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRF
c2NhcGUoJ3MnKSk7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ1MnKSk7Ci0gIEVYUEVD
VF9UUlVFKElzVmFsaWRFc2NhcGUoJ3cnKSk7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUo
J1cnKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZFB1bmN0KSB7Ci0g
IEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1xcJywgJ1wwJykpOwotICBFWFBF
Q1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdcXCcsICcgJykpOwotICBFWFBFQ1RfRkFM
U0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdfJywgJy4nKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJy4nLCAnYScpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ1xcJywgJ1xcJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ18nLCAnXycpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICcr
JywgJysnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnLicsICcuJykp
OwotfQotCi1URVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfZCkgewotICBFWFBFQ1Rf
RkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0Uo
QXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywgJ2EnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0
Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnLicpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ2QnLCAnMCcpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICdkJywgJzknKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF9EKSB7
Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0QnLCAnMCcpKTsKLSAgRVhQ
RUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcsICc5JykpOwotCi0gIEVYUEVDVF9U
UlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcsICdcMCcpKTsKLSAgRVhQRUNUX1RSVUUoQXRv
bU1hdGNoZXNDaGFyKHRydWUsICdEJywgJ2EnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAnRCcsICctJykpOwotfQotCi1URVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVz
Y2FwZWRfcykgewotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJ1ww
JykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJ2EnKSk7Ci0g
IEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnLicpKTsKLSAgRVhQRUNU
X0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICc5JykpOwotCi0gIEVYUEVDVF9UUlVF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICcgJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0
Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnXG4nKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hh
cih0cnVlLCAncycsICdcdCcpKTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2Nh
cGVkX1MpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICcgJykp
OwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdTJywgJ1xyJykpOwotCi0g
IEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICdcMCcpKTsKLSAgRVhQRUNU
X1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdTJywgJ2EnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0
b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICc5JykpOwotfQotCi1URVNUKEF0b21NYXRjaGVzQ2hh
clRlc3QsIEVzY2FwZWRfdykgewotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICd3JywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3Jywg
JysnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnICcpKTsK
LSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdcbicpKTsKLQotICBF
WFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnMCcpKTsKLSAgRVhQRUNUX1RS
VUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJ2InKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAndycsICdDJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ3cnLCAnXycpKTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2Nh
cGVkX1cpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICdBJykp
OwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJ2InKSk7Ci0gIEVY
UEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnOScpKTsKLSAgRVhQRUNUX0ZB
TFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICdfJykpOwotCi0gIEVYUEVDVF9UUlVFKEF0
b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICdcMCcpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNo
ZXNDaGFyKHRydWUsICdXJywgJyonKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAnVycsICdcbicpKTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVk
V2hpdGVTcGFjZSkgewotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdmJywg
J1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdmJywgJ1xuJykp
OwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICduJywgJ1wwJykpOwotICBF
WFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICduJywgJ1xyJykpOwotICBFWFBFQ1Rf
RkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdyJywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0Uo
QXRvbU1hdGNoZXNDaGFyKHRydWUsICdyJywgJ2EnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0
Y2hlc0NoYXIodHJ1ZSwgJ3QnLCAnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ3QnLCAndCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVl
LCAndicsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndics
ICdcZicpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2YnLCAnXGYn
KSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnbicsICdcbicpKTsKLSAg
RVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdyJywgJ1xyJykpOwotICBFWFBFQ1Rf
VFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3QnLCAnXHQnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0
b21NYXRjaGVzQ2hhcih0cnVlLCAndicsICdcdicpKTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0No
YXJUZXN0LCBVbmVzY2FwZWREb3QpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcihm
YWxzZSwgJy4nLCAnXG4nKSk7Ci0KLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNl
LCAnLicsICdcMCcpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnLics
ICcuJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICcuJywgJ2EnKSk7
Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4nLCAnICcpKTsKLX0KLQot
VEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBVbmVzY2FwZWRDaGFyKSB7Ci0gIEVYUEVDVF9GQUxT
RShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICdhJywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRv
bU1hdGNoZXNDaGFyKGZhbHNlLCAnYScsICdiJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNo
ZXNDaGFyKGZhbHNlLCAnJCcsICdhJykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hh
cihmYWxzZSwgJyQnLCAnJCcpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNl
LCAnNScsICc1JykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICdaJywg
J1onKSk7Ci19Ci0KLVRFU1QoVmFsaWRhdGVSZWdleFRlc3QsIEdlbmVyYXRlc0ZhaWx1cmVBbmRS
ZXR1cm5zRmFsc2VGb3JJbnZhbGlkKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VS
VF9GQUxTRShWYWxpZGF0ZVJlZ2V4KE5VTEwpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
Ik5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiIpOwotICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRSgKLSAgICAgIEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJh
XFwiKSksCi0gICAgICAiU3ludGF4IGVycm9yIGF0IGluZGV4IDEgaW4gc2ltcGxlIHJlZ3VsYXIg
ZXhwcmVzc2lvbiBcImFcXFwiOiAiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJU
X0ZBTFNFKFZhbGlkYXRlUmVnZXgoImFcXCIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IidcXCcgY2Fubm90IGFwcGVhciBhdCB0aGUgZW5kIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJcXG5cXCIpKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIidcXCcgY2Fubm90IGFwcGVhciBhdCB0aGUgZW5kIik7Ci0gIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJcXHNcXGhiIikpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBlc2NhcGUgc2VxdWVuY2UgXCJcXGhc
IiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdl
eCgiXl4iKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInXicgY2FuIG9ubHkgYXBwZWFy
IGF0IHRoZSBiZWdpbm5pbmciKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZB
TFNFKFZhbGlkYXRlUmVnZXgoIi4qXmIiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIn
XicgY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBiZWdpbm5pbmciKTsKLSAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIiQkIikpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAiJyQnIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgZW5kIik7Ci0gIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJeJGEiKSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICInJCcgY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBlbmQi
KTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgo
ImEoYiIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIicoJyBpcyB1bnN1cHBvcnRlZCIp
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgi
YWIpIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJyknIGlzIHVuc3VwcG9ydGVkIik7
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJb
YWIiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInWycgaXMgdW5zdXBwb3J0ZWQiKTsK
LSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImF7
MiIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIid7JyBpcyB1bnN1cHBvcnRlZCIpOwot
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiPyIp
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIic/JyBjYW4gb25seSBmb2xsb3cgYSByZXBl
YXRhYmxlIHRva2VuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShW
YWxpZGF0ZVJlZ2V4KCJeKiIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIicqJyBjYW4g
b25seSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2VuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCI1KisiKSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICInKycgY2FuIG9ubHkgZm9sbG93IGEgcmVwZWF0YWJsZSB0b2tlbiIpOwotfQot
Ci1URVNUKFZhbGlkYXRlUmVnZXhUZXN0LCBSZXR1cm5zVHJ1ZUZvclZhbGlkKSB7Ci0gIEVYUEVD
VF9UUlVFKFZhbGlkYXRlUmVnZXgoIiIpKTsKLSAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgi
YSIpKTsKLSAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiLioiKSk7Ci0gIEVYUEVDVF9UUlVF
KFZhbGlkYXRlUmVnZXgoIl5hXysiKSk7Ci0gIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIl5h
XFx0XFwmPyIpKTsKLSAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiMDkqJCIpKTsKLSAgRVhQ
RUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiXlokIikpOwotICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJl
Z2V4KCJhXFxeWlxcJFxcKFxcKVxcfFxcW1xcXVxce1xcfSIpKTsKLX0KLQotVEVTVChNYXRjaFJl
cGV0aXRpb25BbmRSZWdleEF0SGVhZFRlc3QsIFdvcmtzRm9yWmVyb09yT25lKSB7Ci0gIEVYUEVD
VF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJ2EnLCAnPycsICJh
IiwgImJhIikpOwotICAvLyBSZXBlYXRpbmcgbW9yZSB0aGFuIG9uY2UuCi0gIEVYUEVDVF9GQUxT
RShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJ2EnLCAnPycsICJiIiwgImFh
YiIpKTsKLQotICAvLyBSZXBlYXRpbmcgemVybyB0aW1lcy4KLSAgRVhQRUNUX1RSVUUoTWF0Y2hS
ZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICdhJywgJz8nLCAiYiIsICJiYSIpKTsKLSAg
Ly8gUmVwZWF0aW5nIG9uY2UuCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4
QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImIiLCAiYWIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNo
UmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnIycsICc/JywgIi4iLCAiIyMiKSk7Ci19
Ci0KLVRFU1QoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc0Zvclplcm9P
ck1hbnkpIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZh
bHNlLCAnLicsICcqJywgImEkIiwgImJhYWIiKSk7Ci0KLSAgLy8gUmVwZWF0aW5nIHplcm8gdGlt
ZXMuCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAn
LicsICcqJywgImIiLCAiYmMiKSk7Ci0gIC8vIFJlcGVhdGluZyBvbmNlLgotICBFWFBFQ1RfVFJV
RShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKicsICJiIiwgImFi
YyIpKTsKLSAgLy8gUmVwZWF0aW5nIG1vcmUgdGhhbiBvbmNlLgotICBFWFBFQ1RfVFJVRShNYXRj
aFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZCh0cnVlLCAndycsICcqJywgIi0iLCAiYWJfMS1nIikp
OwotfQotCi1URVNUKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NGb3JP
bmVPck1hbnkpIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFk
KGZhbHNlLCAnLicsICcrJywgImEkIiwgImJhYWIiKSk7Ci0gIC8vIFJlcGVhdGluZyB6ZXJvIHRp
bWVzLgotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2Us
ICcuJywgJysnLCAiYiIsICJiYyIpKTsKLQotICAvLyBSZXBlYXRpbmcgb25jZS4KLSAgRVhQRUNU
X1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJysnLCAiYiIs
ICJhYmMiKSk7Ci0gIC8vIFJlcGVhdGluZyBtb3JlIHRoYW4gb25jZS4KLSAgRVhQRUNUX1RSVUUo
TWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQodHJ1ZSwgJ3cnLCAnKycsICItIiwgImFiXzEt
ZyIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgUmV0dXJuc1RydWVGb3JFbXB0
eVJlZ2V4KSB7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIiIsICIiKSk7Ci0gIEVY
UEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIiIsICJhYiIpKTsKLX0KLQotVEVTVChNYXRjaFJl
Z2V4QXRIZWFkVGVzdCwgV29ya3NXaGVuRG9sbGFySXNJblJlZ2V4KSB7Ci0gIEVYUEVDVF9GQUxT
RShNYXRjaFJlZ2V4QXRIZWFkKCIkIiwgImEiKSk7Ci0KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdl
eEF0SGVhZCgiJCIsICIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoImEkIiwg
ImEiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIFdvcmtzV2hlblJlZ2V4U3Rh
cnRzV2l0aEVzY2FwZVNlcXVlbmNlKSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFk
KCJcXHciLCAiKyIpKTsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIlxcVyIsICJh
YiIpKTsKLQotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXHNhIiwgIlxuYWIiKSk7
Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcZCIsICIxYSIpKTsKLX0KLQotVEVT
VChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NXaGVuUmVnZXhTdGFydHNXaXRoUmVwZXRpdGlv
bikgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiLithIiwgImFiYyIpKTsKLSAg
RVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoImE/YiIsICJhYWIiKSk7Ci0KLSAgRVhQRUNU
X1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiLiphIiwgImJjMTItYWIiKSk7Ci0gIEVYUEVDVF9UUlVF
KE1hdGNoUmVnZXhBdEhlYWQoImE/YiIsICJiIikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4
QXRIZWFkKCJhP2IiLCAiYWIiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsCi0g
ICAgIFdvcmtzV2hlblJlZ2V4U3RhcnRzV2l0aFJlcGV0aW9uT2ZFc2NhcGVTZXF1ZW5jZSkgewot
ICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiXFwuK2EiLCAiYWJjIikpOwotICBFWFBF
Q1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiXFxzP2IiLCAiICBiIikpOwotCi0gIEVYUEVDVF9U
UlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcKCphIiwgIigoKChhYiIpKTsKLSAgRVhQRUNUX1RSVUUo
TWF0Y2hSZWdleEF0SGVhZCgiXFxeP2IiLCAiXmIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVn
ZXhBdEhlYWQoIlxcXFw/YiIsICJiIikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFk
KCJcXFxcP2IiLCAiXFxiIikpOwotfQotCi1URVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBNYXRj
aGVzU2VxdWVudGlhbGx5KSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJhYi4q
YyIsICJhY2FiYyIpKTsKLQotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJhYi4qYyIs
ICJhYi1mc2MiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEFueXdoZXJlVGVzdCwgUmV0dXJuc0Zh
bHNlV2hlblN0cmluZ0lzTnVsbCkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJl
KCIiLCBOVUxMKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEFueXdoZXJlVGVzdCwgV29ya3NXaGVu
UmVnZXhTdGFydHNXaXRoQ2FyZXQpIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVy
ZSgiXmEiLCAiYmEiKSk7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoIl4kIiwg
ImEiKSk7Ci0KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJeYSIsICJhYiIpKTsK
LSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJeIiwgImFiIikpOwotICBFWFBFQ1Rf
VFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIl4kIiwgIiIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4
QW55d2hlcmVUZXN0LCBSZXR1cm5zRmFsc2VXaGVuTm9NYXRjaCkgewotICBFWFBFQ1RfRkFMU0Uo
TWF0Y2hSZWdleEFueXdoZXJlKCJhIiwgImJjZGUxMjMiKSk7Ci0gIEVYUEVDVF9GQUxTRShNYXRj
aFJlZ2V4QW55d2hlcmUoImEuK2EiLCAiLS1hYTg4ODg4ODg4IikpOwotfQotCi1URVNUKE1hdGNo
UmVnZXhBbnl3aGVyZVRlc3QsIFJldHVybnNUcnVlV2hlbk1hdGNoaW5nUHJlZml4KSB7Ci0gIEVY
UEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXFx3KyIsICJhYjFfIC0gNSIpKTsKLSAgRVhQ
RUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCIuKj0iLCAiPSIpKTsKLSAgRVhQRUNUX1RSVUUo
TWF0Y2hSZWdleEFueXdoZXJlKCJ4LiphYj8uKmJjIiwgInhhYWFiYyIpKTsKLX0KLQotVEVTVChN
YXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5zVHJ1ZVdoZW5NYXRjaGluZ05vblByZWZpeCkg
ewotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIlxcdysiLCAiJCQkIGFiMV8gLSA1
IikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIlxcLis9IiwgIj0gIC4uLj0i
KSk7Ci19Ci0KLS8vIFRlc3RzIFJFJ3MgaW1wbGljaXQgY29uc3RydWN0b3JzLgotVEVTVChSRVRl
c3QsIEltcGxpY2l0Q29uc3RydWN0b3JXb3JrcykgewotICBjb25zdCBSRSBlbXB0eSgiIik7Ci0g
IEVYUEVDVF9TVFJFUSgiIiwgZW1wdHkucGF0dGVybigpKTsKLQotICBjb25zdCBSRSBzaW1wbGUo
ImhlbGxvIik7Ci0gIEVYUEVDVF9TVFJFUSgiaGVsbG8iLCBzaW1wbGUucGF0dGVybigpKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBSRSdzIGNvbnN0cnVjdG9ycyByZWplY3QgaW52YWxpZCByZWd1bGFy
IGV4cHJlc3Npb25zLgotVEVTVChSRVRlc3QsIFJlamVjdHNJbnZhbGlkUmVnZXgpIHsKLSAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIGNvbnN0IFJFIG5vcm1hbChOVUxMKTsKLSAgfSwg
Ik5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiIpOwotCi0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBjb25zdCBSRSBub3JtYWwoIi4qKFxcdysiKTsK
LSAgfSwgIicoJyBpcyB1bnN1cHBvcnRlZCIpOwotCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KHsKLSAgICBjb25zdCBSRSBpbnZhbGlkKCJePyIpOwotICB9LCAiJz8nIGNhbiBvbmx5IGZvbGxv
dyBhIHJlcGVhdGFibGUgdG9rZW4iKTsKLX0KLQotLy8gVGVzdHMgUkU6OkZ1bGxNYXRjaCgpLgot
VEVTVChSRVRlc3QsIEZ1bGxNYXRjaFdvcmtzKSB7Ci0gIGNvbnN0IFJFIGVtcHR5KCIiKTsKLSAg
RVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaCgiIiwgZW1wdHkpKTsKLSAgRVhQRUNUX0ZBTFNFKFJF
OjpGdWxsTWF0Y2goImEiLCBlbXB0eSkpOwotCi0gIGNvbnN0IFJFIHJlMSgiYSIpOwotICBFWFBF
Q1RfVFJVRShSRTo6RnVsbE1hdGNoKCJhIiwgcmUxKSk7Ci0KLSAgY29uc3QgUkUgcmUoImEuKnoi
KTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaCgiYXoiLCByZSkpOwotICBFWFBFQ1RfVFJV
RShSRTo6RnVsbE1hdGNoKCJheHl6IiwgcmUpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0
Y2goImJheiIsIHJlKSk7Ci0gIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKCJhenkiLCByZSkp
OwotfQotCi0vLyBUZXN0cyBSRTo6UGFydGlhbE1hdGNoKCkuCi1URVNUKFJFVGVzdCwgUGFydGlh
bE1hdGNoV29ya3MpIHsKLSAgY29uc3QgUkUgZW1wdHkoIiIpOwotICBFWFBFQ1RfVFJVRShSRTo6
UGFydGlhbE1hdGNoKCIiLCBlbXB0eSkpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNo
KCJhIiwgZW1wdHkpKTsKLQotICBjb25zdCBSRSByZSgiYS4qeiIpOwotICBFWFBFQ1RfVFJVRShS
RTo6UGFydGlhbE1hdGNoKCJheiIsIHJlKSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0
Y2goImF4eXoiLCByZSkpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCJiYXoiLCBy
ZSkpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCJhenkiLCByZSkpOwotICBFWFBF
Q1RfRkFMU0UoUkU6OlBhcnRpYWxNYXRjaCgienphIiwgcmUpKTsKLX0KLQotI2VuZGlmICAvLyBH
VEVTVF9VU0VTX1BPU0lYX1JFCi0KLSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLQotVEVT
VChDYXB0dXJlVGVzdCwgQ2FwdHVyZXNTdGRvdXQpIHsKLSAgQ2FwdHVyZVN0ZG91dCgpOwotICBm
cHJpbnRmKHN0ZG91dCwgImFiYyIpOwotICBFWFBFQ1RfU1RSRVEoImFiYyIsIEdldENhcHR1cmVk
U3Rkb3V0KCkuY19zdHIoKSk7Ci0KLSAgQ2FwdHVyZVN0ZG91dCgpOwotICBmcHJpbnRmKHN0ZG91
dCwgImRlZiVjZ2hpIiwgJ1wwJyk7Ci0gIEVYUEVDVF9FUSg6OnN0ZDo6c3RyaW5nKCJkZWZcMGdo
aSIsIDcpLCA6OnN0ZDo6c3RyaW5nKEdldENhcHR1cmVkU3Rkb3V0KCkpKTsKLX0KLQotVEVTVChD
YXB0dXJlVGVzdCwgQ2FwdHVyZXNTdGRlcnIpIHsKLSAgQ2FwdHVyZVN0ZGVycigpOwotICBmcHJp
bnRmKHN0ZGVyciwgImprbCIpOwotICBFWFBFQ1RfU1RSRVEoImprbCIsIEdldENhcHR1cmVkU3Rk
ZXJyKCkuY19zdHIoKSk7Ci0KLSAgQ2FwdHVyZVN0ZGVycigpOwotICBmcHJpbnRmKHN0ZGVyciwg
ImprbCVjbW5vIiwgJ1wwJyk7Ci0gIEVYUEVDVF9FUSg6OnN0ZDo6c3RyaW5nKCJqa2xcMG1ubyIs
IDcpLCA6OnN0ZDo6c3RyaW5nKEdldENhcHR1cmVkU3RkZXJyKCkpKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBzdGRvdXQgYW5kIHN0ZGVyciBjYXB0dXJlIGRvbid0IGludGVyZmVyZSB3aXRoIGVhY2gg
b3RoZXIuCi1URVNUKENhcHR1cmVUZXN0LCBDYXB0dXJlc1N0ZG91dEFuZFN0ZGVycikgewotICBD
YXB0dXJlU3Rkb3V0KCk7Ci0gIENhcHR1cmVTdGRlcnIoKTsKLSAgZnByaW50ZihzdGRvdXQsICJw
cXIiKTsKLSAgZnByaW50ZihzdGRlcnIsICJzdHUiKTsKLSAgRVhQRUNUX1NUUkVRKCJwcXIiLCBH
ZXRDYXB0dXJlZFN0ZG91dCgpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoInN0dSIsIEdldENh
cHR1cmVkU3RkZXJyKCkuY19zdHIoKSk7Ci19Ci0KLVRFU1QoQ2FwdHVyZURlYXRoVGVzdCwgQ2Fu
bm90UmVlbnRlclN0ZG91dENhcHR1cmUpIHsKLSAgQ2FwdHVyZVN0ZG91dCgpOwotICBFWFBFQ1Rf
REVBVEhfSUZfU1VQUE9SVEVEKENhcHR1cmVTdGRvdXQoKTssCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIk9ubHkgb25lIHN0ZG91dCBjYXB0dXJlciBjYW4gZXhpc3QgYXQgYSB0aW1lIik7
Ci0gIEdldENhcHR1cmVkU3Rkb3V0KCk7Ci0KLSAgLy8gV2UgY2Fubm90IHRlc3Qgc3RkZXJyIGNh
cHR1cmluZyB1c2luZyBkZWF0aCB0ZXN0cyBhcyB0aGV5IHVzZSBpdAotICAvLyB0aGVtc2VsdmVz
LgotfQotCi0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi1URVNUKFRocmVh
ZExvY2FsVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9ySW5pdGlhbGl6ZXNUb0RlZmF1bHRWYWx1ZXMp
IHsKLSAgVGhyZWFkTG9jYWw8aW50PiB0MTsKLSAgRVhQRUNUX0VRKDAsIHQxLmdldCgpKTsKLQot
ICBUaHJlYWRMb2NhbDx2b2lkKj4gdDI7Ci0gIEVYUEVDVF9UUlVFKHQyLmdldCgpID09IE5VTEwp
OwotfQotCi1URVNUKFRocmVhZExvY2FsVGVzdCwgU2luZ2xlUGFyYW1Db25zdHJ1Y3RvckluaXRp
YWxpemVzVG9QYXJhbSkgewotICBUaHJlYWRMb2NhbDxpbnQ+IHQxKDEyMyk7Ci0gIEVYUEVDVF9F
USgxMjMsIHQxLmdldCgpKTsKLQotICBpbnQgaSA9IDA7Ci0gIFRocmVhZExvY2FsPGludCo+IHQy
KCZpKTsKLSAgRVhQRUNUX0VRKCZpLCB0Mi5nZXQoKSk7Ci19Ci0KLWNsYXNzIE5vRGVmYXVsdENv
bnRydWN0b3IgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgTm9EZWZhdWx0Q29udHJ1Y3Rvcihjb25z
dCBjaGFyKikge30KLSAgTm9EZWZhdWx0Q29udHJ1Y3Rvcihjb25zdCBOb0RlZmF1bHRDb250cnVj
dG9yJikge30KLX07Ci0KLVRFU1QoVGhyZWFkTG9jYWxUZXN0LCBWYWx1ZURlZmF1bHRDb250cnVj
dG9ySXNOb3RSZXF1aXJlZEZvclBhcmFtVmVyc2lvbikgewotICBUaHJlYWRMb2NhbDxOb0RlZmF1
bHRDb250cnVjdG9yPiBiYXIoTm9EZWZhdWx0Q29udHJ1Y3RvcigiZm9vIikpOwotICBiYXIucG9p
bnRlcigpOwotfQotCi1URVNUKFRocmVhZExvY2FsVGVzdCwgR2V0QW5kUG9pbnRlclJldHVyblNh
bWVWYWx1ZSkgewotICBUaHJlYWRMb2NhbDxTdHJpbmc+IHRocmVhZF9sb2NhbDsKLQotICBFWFBF
Q1RfRVEodGhyZWFkX2xvY2FsLnBvaW50ZXIoKSwgJih0aHJlYWRfbG9jYWwuZ2V0KCkpKTsKLQot
ICAvLyBWZXJpZmllcyB0aGUgY29uZGl0aW9uIHN0aWxsIGhvbGRzIGFmdGVyIGNhbGxpbmcgc2V0
LgotICB0aHJlYWRfbG9jYWwuc2V0KCJmb28iKTsKLSAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbC5w
b2ludGVyKCksICYodGhyZWFkX2xvY2FsLmdldCgpKSk7Ci19Ci0KLVRFU1QoVGhyZWFkTG9jYWxU
ZXN0LCBQb2ludGVyQW5kQ29uc3RQb2ludGVyUmV0dXJuU2FtZVZhbHVlKSB7Ci0gIFRocmVhZExv
Y2FsPFN0cmluZz4gdGhyZWFkX2xvY2FsOwotICBjb25zdCBUaHJlYWRMb2NhbDxTdHJpbmc+JiBj
b25zdF90aHJlYWRfbG9jYWwgPSB0aHJlYWRfbG9jYWw7Ci0KLSAgRVhQRUNUX0VRKHRocmVhZF9s
b2NhbC5wb2ludGVyKCksIGNvbnN0X3RocmVhZF9sb2NhbC5wb2ludGVyKCkpOwotCi0gIHRocmVh
ZF9sb2NhbC5zZXQoImZvbyIpOwotICBFWFBFQ1RfRVEodGhyZWFkX2xvY2FsLnBvaW50ZXIoKSwg
Y29uc3RfdGhyZWFkX2xvY2FsLnBvaW50ZXIoKSk7Ci19Ci0KLSNpZiBHVEVTVF9JU19USFJFQURT
QUZFCi0KLXZvaWQgQWRkVHdvKGludCogcGFyYW0pIHsgKnBhcmFtICs9IDI7IH0KLQotVEVTVChU
aHJlYWRXaXRoUGFyYW1UZXN0LCBDb25zdHJ1Y3RvckV4ZWN1dGVzVGhyZWFkRnVuYykgewotICBp
bnQgaSA9IDQwOwotICBUaHJlYWRXaXRoUGFyYW08aW50Kj4gdGhyZWFkKCZBZGRUd28sICZpLCBO
VUxMKTsKLSAgdGhyZWFkLkpvaW4oKTsKLSAgRVhQRUNUX0VRKDQyLCBpKTsKLX0KLQotVEVTVChN
dXRleERlYXRoVGVzdCwgQXNzZXJ0SGVsZFNob3VsZEFzc2VydFdoZW5Ob3RMb2NrZWQpIHsKLSAg
Ly8gQXNzZXJ0SGVsZCgpIGlzIGZsYWt5IG9ubHkgaW4gdGhlIHByZXNlbmNlIG9mIG11bHRpcGxl
IHRocmVhZHMgYWNjZXNzaW5nCi0gIC8vIHRoZSBsb2NrLiBJbiB0aGlzIGNhc2UsIHRoZSB0ZXN0
IGlzIHJvYnVzdC4KLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh7Ci0gICAgTXV0ZXggbTsK
LSAgICB7IE11dGV4TG9jayBsb2NrKCZtKTsgfQotICAgIG0uQXNzZXJ0SGVsZCgpOwotICB9LAot
ICAidGhyZWFkIC4qaG9sZCIpOwotfQotCi1URVNUKE11dGV4VGVzdCwgQXNzZXJ0SGVsZFNob3Vs
ZE5vdEFzc2VydFdoZW5Mb2NrZWQpIHsKLSAgTXV0ZXggbTsKLSAgTXV0ZXhMb2NrIGxvY2soJm0p
OwotICBtLkFzc2VydEhlbGQoKTsKLX0KLQotY2xhc3MgQXRvbWljQ291bnRlcldpdGhNdXRleCB7
Ci0gcHVibGljOgotICBleHBsaWNpdCBBdG9taWNDb3VudGVyV2l0aE11dGV4KE11dGV4KiBtdXRl
eCkgOgotICAgIHZhbHVlXygwKSwgbXV0ZXhfKG11dGV4KSwgcmFuZG9tXyg0Mikge30KLQotICB2
b2lkIEluY3JlbWVudCgpIHsKLSAgICBNdXRleExvY2sgbG9jayhtdXRleF8pOwotICAgIGludCB0
ZW1wID0gdmFsdWVfOwotICAgIHsKLSAgICAgIC8vIExvY2tpbmcgYSBtdXRleCBwdXRzIHVwIGEg
bWVtb3J5IGJhcnJpZXIsIHByZXZlbnRpbmcgcmVhZHMgYW5kCi0gICAgICAvLyB3cml0ZXMgdG8g
dmFsdWVfIHJlYXJyYW5nZWQgd2hlbiBvYnNlcnZlZCBmcm9tIG90aGVyIHRocmVhZHMuCi0gICAg
ICAvLwotICAgICAgLy8gV2UgY2Fubm90IHVzZSBNdXRleCBhbmQgTXV0ZXhMb2NrIGhlcmUgb3Ig
cmVseSBvbiB0aGVpciBtZW1vcnkKLSAgICAgIC8vIGJhcnJpZXIgZnVuY3Rpb25hbGl0eSBhcyB3
ZSBhcmUgdGVzdGluZyB0aGVtIGhlcmUuCi0gICAgICBwdGhyZWFkX211dGV4X3QgbWVtb3J5X2Jh
cnJpZXJfbXV0ZXg7Ci0gICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXygKLSAgICAgICAg
ICBwdGhyZWFkX211dGV4X2luaXQoJm1lbW9yeV9iYXJyaWVyX211dGV4LCBOVUxMKSk7Ci0gICAg
ICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4X2xvY2soJm1lbW9yeV9i
YXJyaWVyX211dGV4KSk7Ci0KLSAgICAgIFNsZWVwTWlsbGlzZWNvbmRzKHJhbmRvbV8uR2VuZXJh
dGUoMzApKTsKLQotICAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRl
eF91bmxvY2soJm1lbW9yeV9iYXJyaWVyX211dGV4KSk7Ci0gICAgfQotICAgIHZhbHVlXyA9IHRl
bXAgKyAxOwotICB9Ci0gIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQotCi0g
cHJpdmF0ZToKLSAgdm9sYXRpbGUgaW50IHZhbHVlXzsKLSAgTXV0ZXgqIGNvbnN0IG11dGV4Xzsg
IC8vIFByb3RlY3RzIHZhbHVlXy4KLSAgUmFuZG9tICAgICAgIHJhbmRvbV87Ci19OwotCi12b2lk
IENvdW50aW5nVGhyZWFkRnVuYyhwYWlyPEF0b21pY0NvdW50ZXJXaXRoTXV0ZXgqLCBpbnQ+IHBh
cmFtKSB7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW0uc2Vjb25kOyArK2kpCi0gICAgICBw
YXJhbS5maXJzdC0+SW5jcmVtZW50KCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIG11dGV4IG9u
bHkgbGV0cyBvbmUgdGhyZWFkIGF0IGEgdGltZSB0byBsb2NrIGl0LgotVEVTVChNdXRleFRlc3Qs
IE9ubHlPbmVUaHJlYWRDYW5Mb2NrQXRBVGltZSkgewotICBNdXRleCBtdXRleDsKLSAgQXRvbWlj
Q291bnRlcldpdGhNdXRleCBsb2NrZWRfY291bnRlcigmbXV0ZXgpOwotCi0gIHR5cGVkZWYgVGhy
ZWFkV2l0aFBhcmFtPHBhaXI8QXRvbWljQ291bnRlcldpdGhNdXRleCosIGludD4gPiBUaHJlYWRU
eXBlOwotICBjb25zdCBpbnQga0N5Y2xlQ291bnQgPSAyMDsKLSAgY29uc3QgaW50IGtUaHJlYWRD
b3VudCA9IDc7Ci0gIHNjb3BlZF9wdHI8VGhyZWFkVHlwZT4gY291bnRpbmdfdGhyZWFkc1trVGhy
ZWFkQ291bnRdOwotICBOb3RpZmljYXRpb24gdGhyZWFkc19jYW5fc3RhcnQ7Ci0gIC8vIENyZWF0
ZXMgYW5kIHJ1bnMga1RocmVhZENvdW50IHRocmVhZHMgdGhhdCBpbmNyZW1lbnQgbG9ja2VkX2Nv
dW50ZXIKLSAgLy8ga0N5Y2xlQ291bnQgdGltZXMgZWFjaC4KLSAgZm9yIChpbnQgaSA9IDA7IGkg
PCBrVGhyZWFkQ291bnQ7ICsraSkgewotICAgIGNvdW50aW5nX3RocmVhZHNbaV0ucmVzZXQobmV3
IFRocmVhZFR5cGUoJkNvdW50aW5nVGhyZWFkRnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1ha2VfcGFpcigmbG9ja2VkX2NvdW50ZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0N5Y2xlQ291
bnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRocmVh
ZHNfY2FuX3N0YXJ0KSk7Ci0gIH0KLSAgdGhyZWFkc19jYW5fc3RhcnQuTm90aWZ5KCk7Ci0gIGZv
ciAoaW50IGkgPSAwOyBpIDwga1RocmVhZENvdW50OyArK2kpCi0gICAgY291bnRpbmdfdGhyZWFk
c1tpXS0+Sm9pbigpOwotCi0gIC8vIElmIHRoZSBtdXRleCBsZXRzIG1vcmUgdGhhbiBvbmUgdGhy
ZWFkIHRvIGluY3JlbWVudCB0aGUgY291bnRlciBhdCBhCi0gIC8vIHRpbWUsIHRoZXkgYXJlIGxp
a2VseSB0byBlbmNvdW50ZXIgYSByYWNlIGNvbmRpdGlvbiBhbmQgaGF2ZSBzb21lCi0gIC8vIGlu
Y3JlbWVudHMgb3ZlcndyaXR0ZW4sIHJlc3VsdGluZyBpbiB0aGUgbG93ZXIgdGhlbiBleHBlY3Rl
ZCBjb3VudGVyCi0gIC8vIHZhbHVlLgotICBFWFBFQ1RfRVEoa0N5Y2xlQ291bnQgKiBrVGhyZWFk
Q291bnQsIGxvY2tlZF9jb3VudGVyLnZhbHVlKCkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLXZvaWQgUnVuRnJvbVRocmVhZCh2b2lkIChmdW5jKShUKSwgVCBwYXJhbSkgewotICBUaHJl
YWRXaXRoUGFyYW08VD4gdGhyZWFkKGZ1bmMsIHBhcmFtLCBOVUxMKTsKLSAgdGhyZWFkLkpvaW4o
KTsKLX0KLQotdm9pZCBSZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUocGFpcjxUaHJlYWRMb2NhbDxT
dHJpbmc+KiwgU3RyaW5nKj4gcGFyYW0pIHsKLSAgKnBhcmFtLnNlY29uZCA9IHBhcmFtLmZpcnN0
LT5nZXQoKTsKLX0KLQotVEVTVChUaHJlYWRMb2NhbFRlc3QsIFBhcmFtZXRlcml6ZWRDb25zdHJ1
Y3RvclNldHNEZWZhdWx0KSB7Ci0gIFRocmVhZExvY2FsPFN0cmluZz4gdGhyZWFkX2xvY2FsKCJm
b28iKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iLCB0aHJlYWRfbG9jYWwuZ2V0KCkuY19zdHIoKSk7
Ci0KLSAgdGhyZWFkX2xvY2FsLnNldCgiYmFyIik7Ci0gIEVYUEVDVF9TVFJFUSgiYmFyIiwgdGhy
ZWFkX2xvY2FsLmdldCgpLmNfc3RyKCkpOwotCi0gIFN0cmluZyByZXN1bHQ7Ci0gIFJ1bkZyb21U
aHJlYWQoJlJldHJpZXZlVGhyZWFkTG9jYWxWYWx1ZSwgbWFrZV9wYWlyKCZ0aHJlYWRfbG9jYWws
ICZyZXN1bHQpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iLCByZXN1bHQuY19zdHIoKSk7Ci19Ci0K
LS8vIERlc3RydWN0b3JUcmFja2VyIGtlZXBzIHRyYWNrIG9mIHdoZXRoZXIgaXRzIGluc3RhbmNl
cyBoYXZlIGJlZW4KLS8vIGRlc3Ryb3llZC4KLXN0YXRpYyBzdGQ6OnZlY3Rvcjxib29sPiBnX2Rl
c3Ryb3llZDsKLQotY2xhc3MgRGVzdHJ1Y3RvclRyYWNrZXIgewotIHB1YmxpYzoKLSAgRGVzdHJ1
Y3RvclRyYWNrZXIoKSA6IGluZGV4XyhHZXROZXdJbmRleCgpKSB7fQotICBEZXN0cnVjdG9yVHJh
Y2tlcihjb25zdCBEZXN0cnVjdG9yVHJhY2tlciYgLyogcmhzICovKQotICAgICAgOiBpbmRleF8o
R2V0TmV3SW5kZXgoKSkge30KLSAgfkRlc3RydWN0b3JUcmFja2VyKCkgewotICAgIC8vIFdlIG5l
dmVyIGFjY2VzcyBnX2Rlc3Ryb3llZCBjb25jdXJyZW50bHksIHNvIHdlIGRvbid0IG5lZWQgdG8K
LSAgICAvLyBwcm90ZWN0IHRoZSB3cml0ZSBvcGVyYXRpb24gdW5kZXIgYSBtdXRleC4KLSAgICBn
X2Rlc3Ryb3llZFtpbmRleF9dID0gdHJ1ZTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgc3RhdGljIGlu
dCBHZXROZXdJbmRleCgpIHsKLSAgICBnX2Rlc3Ryb3llZC5wdXNoX2JhY2soZmFsc2UpOwotICAg
IHJldHVybiBnX2Rlc3Ryb3llZC5zaXplKCkgLSAxOwotICB9Ci0gIGNvbnN0IGludCBpbmRleF87
Ci19OwotCi10eXBlZGVmIFRocmVhZExvY2FsPERlc3RydWN0b3JUcmFja2VyPiogVGhyZWFkUGFy
YW07Ci0KLXZvaWQgQ2FsbFRocmVhZExvY2FsR2V0KFRocmVhZFBhcmFtIHRocmVhZF9sb2NhbCkg
ewotICB0aHJlYWRfbG9jYWwtPmdldCgpOwotfQotCi0vLyBUZXN0cyB0aGF0IHdoZW4gYSBUaHJl
YWRMb2NhbCBvYmplY3QgZGllcyBpbiBhIHRocmVhZCwgaXQgZGVzdHJveXMKLS8vIHRoZSBtYW5h
Z2VkIG9iamVjdCBmb3IgdGhhdCB0aHJlYWQuCi1URVNUKFRocmVhZExvY2FsVGVzdCwgRGVzdHJv
eXNNYW5hZ2VkT2JqZWN0Rm9yT3duVGhyZWFkV2hlbkR5aW5nKSB7Ci0gIGdfZGVzdHJveWVkLmNs
ZWFyKCk7Ci0KLSAgewotICAgIC8vIFRoZSBuZXh0IGxpbmUgZGVmYXVsdCBjb25zdHJ1Y3RzIGEg
RGVzdHJ1Y3RvclRyYWNrZXIgb2JqZWN0IGFzCi0gICAgLy8gdGhlIGRlZmF1bHQgdmFsdWUgb2Yg
b2JqZWN0cyBtYW5hZ2VkIGJ5IHRocmVhZF9sb2NhbC4KLSAgICBUaHJlYWRMb2NhbDxEZXN0cnVj
dG9yVHJhY2tlcj4gdGhyZWFkX2xvY2FsOwotICAgIEFTU0VSVF9FUSgxVSwgZ19kZXN0cm95ZWQu
c2l6ZSgpKTsKLSAgICBBU1NFUlRfRkFMU0UoZ19kZXN0cm95ZWRbMF0pOwotCi0gICAgLy8gVGhp
cyBjcmVhdGVzIGFub3RoZXIgRGVzdHJ1Y3RvclRyYWNrZXIgb2JqZWN0IGZvciB0aGUgbWFpbiB0
aHJlYWQuCi0gICAgdGhyZWFkX2xvY2FsLmdldCgpOwotICAgIEFTU0VSVF9FUSgyVSwgZ19kZXN0
cm95ZWQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRkFMU0UoZ19kZXN0cm95ZWRbMF0pOwotICAgIEFT
U0VSVF9GQUxTRShnX2Rlc3Ryb3llZFsxXSk7Ci0gIH0KLQotICAvLyBOb3cgdGhyZWFkX2xvY2Fs
IGhhcyBkaWVkLiAgSXQgc2hvdWxkIGhhdmUgZGVzdHJveWVkIGJvdGggdGhlCi0gIC8vIGRlZmF1
bHQgdmFsdWUgc2hhcmVkIGJ5IGFsbCB0aHJlYWRzIGFuZCB0aGUgdmFsdWUgZm9yIHRoZSBtYWlu
Ci0gIC8vIHRocmVhZC4KLSAgQVNTRVJUX0VRKDJVLCBnX2Rlc3Ryb3llZC5zaXplKCkpOwotICBF
WFBFQ1RfVFJVRShnX2Rlc3Ryb3llZFswXSk7Ci0gIEVYUEVDVF9UUlVFKGdfZGVzdHJveWVkWzFd
KTsKLQotICBnX2Rlc3Ryb3llZC5jbGVhcigpOwotfQotCi0vLyBUZXN0cyB0aGF0IHdoZW4gYSB0
aHJlYWQgZXhpdHMsIHRoZSB0aHJlYWQtbG9jYWwgb2JqZWN0IGZvciB0aGF0Ci0vLyB0aHJlYWQg
aXMgZGVzdHJveWVkLgotVEVTVChUaHJlYWRMb2NhbFRlc3QsIERlc3Ryb3lzTWFuYWdlZE9iamVj
dEF0VGhyZWFkRXhpdCkgewotICBnX2Rlc3Ryb3llZC5jbGVhcigpOwotCi0gIHsKLSAgICAvLyBU
aGUgbmV4dCBsaW5lIGRlZmF1bHQgY29uc3RydWN0cyBhIERlc3RydWN0b3JUcmFja2VyIG9iamVj
dCBhcwotICAgIC8vIHRoZSBkZWZhdWx0IHZhbHVlIG9mIG9iamVjdHMgbWFuYWdlZCBieSB0aHJl
YWRfbG9jYWwuCi0gICAgVGhyZWFkTG9jYWw8RGVzdHJ1Y3RvclRyYWNrZXI+IHRocmVhZF9sb2Nh
bDsKLSAgICBBU1NFUlRfRVEoMVUsIGdfZGVzdHJveWVkLnNpemUoKSk7Ci0gICAgQVNTRVJUX0ZB
TFNFKGdfZGVzdHJveWVkWzBdKTsKLQotICAgIC8vIFRoaXMgY3JlYXRlcyBhbm90aGVyIERlc3Ry
dWN0b3JUcmFja2VyIG9iamVjdCBpbiB0aGUgbmV3IHRocmVhZC4KLSAgICBUaHJlYWRXaXRoUGFy
YW08VGhyZWFkUGFyYW0+IHRocmVhZCgKLSAgICAgICAgJkNhbGxUaHJlYWRMb2NhbEdldCwgJnRo
cmVhZF9sb2NhbCwgTlVMTCk7Ci0gICAgdGhyZWFkLkpvaW4oKTsKLQotICAgIC8vIE5vdyB0aGUg
bmV3IHRocmVhZCBoYXMgZXhpdGVkLiAgVGhlIHBlci10aHJlYWQgb2JqZWN0IGZvciBpdAotICAg
IC8vIHNob3VsZCBoYXZlIGJlZW4gZGVzdHJveWVkLgotICAgIEFTU0VSVF9FUSgyVSwgZ19kZXN0
cm95ZWQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRkFMU0UoZ19kZXN0cm95ZWRbMF0pOwotICAgIEFT
U0VSVF9UUlVFKGdfZGVzdHJveWVkWzFdKTsKLSAgfQotCi0gIC8vIE5vdyB0aHJlYWRfbG9jYWwg
aGFzIGRpZWQuICBUaGUgZGVmYXVsdCB2YWx1ZSBzaG91bGQgaGF2ZSBiZWVuCi0gIC8vIGRlc3Ry
b3llZCB0b28uCi0gIEFTU0VSVF9FUSgyVSwgZ19kZXN0cm95ZWQuc2l6ZSgpKTsKLSAgRVhQRUNU
X1RSVUUoZ19kZXN0cm95ZWRbMF0pOwotICBFWFBFQ1RfVFJVRShnX2Rlc3Ryb3llZFsxXSk7Ci0K
LSAgZ19kZXN0cm95ZWQuY2xlYXIoKTsKLX0KLQotVEVTVChUaHJlYWRMb2NhbFRlc3QsIFRocmVh
ZExvY2FsTXV0YXRpb25zQWZmZWN0T25seUN1cnJlbnRUaHJlYWQpIHsKLSAgVGhyZWFkTG9jYWw8
U3RyaW5nPiB0aHJlYWRfbG9jYWw7Ci0gIHRocmVhZF9sb2NhbC5zZXQoIkZvbyIpOwotICBFWFBF
Q1RfU1RSRVEoIkZvbyIsIHRocmVhZF9sb2NhbC5nZXQoKS5jX3N0cigpKTsKLQotICBTdHJpbmcg
cmVzdWx0OwotICBSdW5Gcm9tVGhyZWFkKCZSZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUsIG1ha2Vf
cGFpcigmdGhyZWFkX2xvY2FsLCAmcmVzdWx0KSk7Ci0gIEVYUEVDVF9UUlVFKHJlc3VsdC5jX3N0
cigpID09IE5VTEwpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUKLQotfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2MKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhM2U5MTk2YWI5NmU0MTNmZWYzMzA3NTI0YjE4
YzkyZjVlZGFkYjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYwor
KysgL2Rldi9udWxsCkBAIC0xLDIwOCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCBHb29nbGUg
SW5jLgotLy8gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
Ly8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IG1oZXVsZUBnb29nbGUuY29tIChNYXJr
dXMgSGV1bGUpCi0vLwotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0Lmg+Ci0KLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi11c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwotdXNpbmcg
dGVzdGluZzo6VGVzdDsKLXVzaW5nIHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OwotdXNpbmcgdGVz
dGluZzo6VGVzdFBhcnRSZXN1bHRBcnJheTsKLQotbmFtZXNwYWNlIHsKLQotLy8gVGVzdHMgdGhl
IFRlc3RQYXJ0UmVzdWx0IGNsYXNzLgotCi0vLyBUaGUgdGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5n
IFRlc3RQYXJ0UmVzdWx0LgotY2xhc3MgVGVzdFBhcnRSZXN1bHRUZXN0IDogcHVibGljIFRlc3Qg
ewotIHByb3RlY3RlZDoKLSAgVGVzdFBhcnRSZXN1bHRUZXN0KCkKLSAgICAgIDogcjFfKFRlc3RQ
YXJ0UmVzdWx0OjprU3VjY2VzcywgImZvby9iYXIuY2MiLCAxMCwgIlN1Y2Nlc3MhIiksCi0gICAg
ICAgIHIyXyhUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwgImZvby9iYXIuY2MiLCAt
MSwgIkZhaWx1cmUhIiksCi0gICAgICAgIHIzXyhUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVy
ZSwgTlVMTCwgLTEsICJGYWlsdXJlISIpIHt9Ci0KLSAgVGVzdFBhcnRSZXN1bHQgcjFfLCByMl8s
IHIzXzsKLX07Ci0KLQotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgQ29uc3RydWN0b3JXb3Jr
cykgewotICBNZXNzYWdlIG1lc3NhZ2U7Ci0gIG1lc3NhZ2UgPDwgInNvbWV0aGluZyBpcyB0ZXJy
aWJseSB3cm9uZyI7Ci0gIG1lc3NhZ2UgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHRlc3Rp
bmc6OmludGVybmFsOjprU3RhY2tUcmFjZU1hcmtlcik7Ci0gIG1lc3NhZ2UgPDwgInNvbWUgdW5p
bXBvcnRhbnQgc3RhY2sgdHJhY2UiOwotCi0gIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IHJlc3VsdChU
ZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJzb21lX2ZpbGUuY2MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLkdldFN0cmluZygpLmNfc3Ry
KCkpOwotCi0gIEVYUEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwgcmVz
dWx0LnR5cGUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgic29tZV9maWxlLmNjIiwgcmVzdWx0LmZpbGVf
bmFtZSgpKTsKLSAgRVhQRUNUX0VRKDQyLCByZXN1bHQubGluZV9udW1iZXIoKSk7Ci0gIEVYUEVD
VF9TVFJFUShtZXNzYWdlLkdldFN0cmluZygpLmNfc3RyKCksIHJlc3VsdC5tZXNzYWdlKCkpOwot
ICBFWFBFQ1RfU1RSRVEoInNvbWV0aGluZyBpcyB0ZXJyaWJseSB3cm9uZyIsIHJlc3VsdC5zdW1t
YXJ5KCkpOwotfQotCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBSZXN1bHRBY2Nlc3NvcnNX
b3JrKSB7Ci0gIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IHN1Y2Nlc3MoVGVzdFBhcnRSZXN1bHQ6OmtT
dWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlLmNjIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAibWVzc2FnZSIpOwotICBFWFBFQ1RfVFJVRShzdWNjZXNzLnBhc3NlZCgpKTsKLSAgRVhQ
RUNUX0ZBTFNFKHN1Y2Nlc3MuZmFpbGVkKCkpOwotICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcy5ub25m
YXRhbGx5X2ZhaWxlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MuZmF0YWxseV9mYWlsZWQo
KSk7Ci0KLSAgY29uc3QgVGVzdFBhcnRSZXN1bHQgbm9uZmF0YWxfZmFpbHVyZShUZXN0UGFydFJl
c3VsdDo6a05vbkZhdGFsRmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZmlsZS5jYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3NhZ2Ui
KTsKLSAgRVhQRUNUX0ZBTFNFKG5vbmZhdGFsX2ZhaWx1cmUucGFzc2VkKCkpOwotICBFWFBFQ1Rf
VFJVRShub25mYXRhbF9mYWlsdXJlLmZhaWxlZCgpKTsKLSAgRVhQRUNUX1RSVUUobm9uZmF0YWxf
ZmFpbHVyZS5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKG5vbmZhdGFsX2Zh
aWx1cmUuZmF0YWxseV9mYWlsZWQoKSk7Ci0KLSAgY29uc3QgVGVzdFBhcnRSZXN1bHQgZmF0YWxf
ZmFpbHVyZShUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZmlsZS5jYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1l
c3NhZ2UiKTsKLSAgRVhQRUNUX0ZBTFNFKGZhdGFsX2ZhaWx1cmUucGFzc2VkKCkpOwotICBFWFBF
Q1RfVFJVRShmYXRhbF9mYWlsdXJlLmZhaWxlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKGZhdGFsX2Zh
aWx1cmUubm9uZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKGZhdGFsX2ZhaWx1cmUu
ZmF0YWxseV9mYWlsZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0Ojp0eXBlKCku
Ci1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCB0eXBlKSB7Ci0gIEVYUEVDVF9FUShUZXN0UGFy
dFJlc3VsdDo6a1N1Y2Nlc3MsIHIxXy50eXBlKCkpOwotICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1
bHQ6OmtOb25GYXRhbEZhaWx1cmUsIHIyXy50eXBlKCkpOwotICBFWFBFQ1RfRVEoVGVzdFBhcnRS
ZXN1bHQ6OmtGYXRhbEZhaWx1cmUsIHIzXy50eXBlKCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UGFy
dFJlc3VsdDo6ZmlsZV9uYW1lKCkuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBmaWxlX25h
bWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28vYmFyLmNjIiwgcjFfLmZpbGVfbmFtZSgpKTsKLSAg
RVhQRUNUX1NUUkVRKE5VTEwsIHIzXy5maWxlX25hbWUoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQ
YXJ0UmVzdWx0OjpsaW5lX251bWJlcigpLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgbGlu
ZV9udW1iZXIpIHsKLSAgRVhQRUNUX0VRKDEwLCByMV8ubGluZV9udW1iZXIoKSk7Ci0gIEVYUEVD
VF9FUSgtMSwgcjJfLmxpbmVfbnVtYmVyKCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UGFydFJlc3Vs
dDo6bWVzc2FnZSgpLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgbWVzc2FnZSkgewotICBF
WFBFQ1RfU1RSRVEoIlN1Y2Nlc3MhIiwgcjFfLm1lc3NhZ2UoKSk7Ci19Ci0KLS8vIFRlc3RzIFRl
c3RQYXJ0UmVzdWx0OjpwYXNzZWQoKS4KLVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIFBhc3Nl
ZCkgewotICBFWFBFQ1RfVFJVRShyMV8ucGFzc2VkKCkpOwotICBFWFBFQ1RfRkFMU0UocjJfLnBh
c3NlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKHIzXy5wYXNzZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIFRl
c3RQYXJ0UmVzdWx0OjpmYWlsZWQoKS4KLVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIEZhaWxl
ZCkgewotICBFWFBFQ1RfRkFMU0UocjFfLmZhaWxlZCgpKTsKLSAgRVhQRUNUX1RSVUUocjJfLmZh
aWxlZCgpKTsKLSAgRVhQRUNUX1RSVUUocjNfLmZhaWxlZCgpKTsKLX0KLQotLy8gVGVzdHMgVGVz
dFBhcnRSZXN1bHQ6OmZhdGFsbHlfZmFpbGVkKCkuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0
LCBGYXRhbGx5RmFpbGVkKSB7Ci0gIEVYUEVDVF9GQUxTRShyMV8uZmF0YWxseV9mYWlsZWQoKSk7
Ci0gIEVYUEVDVF9GQUxTRShyMl8uZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHIz
Xy5mYXRhbGx5X2ZhaWxlZCgpKTsKLX0KLQotLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6Om5vbmZh
dGFsbHlfZmFpbGVkKCkuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBOb25mYXRhbGx5RmFp
bGVkKSB7Ci0gIEVYUEVDVF9GQUxTRShyMV8ubm9uZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVD
VF9UUlVFKHIyXy5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKHIzXy5ub25m
YXRhbGx5X2ZhaWxlZCgpKTsKLX0KLQotLy8gVGVzdHMgdGhlIFRlc3RQYXJ0UmVzdWx0QXJyYXkg
Y2xhc3MuCi0KLWNsYXNzIFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0IDogcHVibGljIFRlc3Qgewot
IHByb3RlY3RlZDoKLSAgVGVzdFBhcnRSZXN1bHRBcnJheVRlc3QoKQotICAgICAgOiByMV8oVGVz
dFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsICJmb28vYmFyLmNjIiwgLTEsICJGYWlsdXJl
IDEiKSwKLSAgICAgICAgcjJfKFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLCAiZm9vL2Jh
ci5jYyIsIC0xLCAiRmFpbHVyZSAyIikge30KLQotICBjb25zdCBUZXN0UGFydFJlc3VsdCByMV8s
IHIyXzsKLX07Ci0KLS8vIFRlc3RzIHRoYXQgVGVzdFBhcnRSZXN1bHRBcnJheSBpbml0aWFsbHkg
aGFzIHNpemUgMC4KLVRFU1RfRihUZXN0UGFydFJlc3VsdEFycmF5VGVzdCwgSW5pdGlhbFNpemVJ
c1plcm8pIHsKLSAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOwotICBFWFBFQ1RfRVEoMCwg
cmVzdWx0cy5zaXplKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFRlc3RQYXJ0UmVzdWx0QXJyYXkg
Y29udGFpbnMgdGhlIGdpdmVuIFRlc3RQYXJ0UmVzdWx0Ci0vLyBhZnRlciBvbmUgQXBwZW5kKCkg
b3BlcmF0aW9uLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0LCBDb250YWluc0dpdmVu
UmVzdWx0QWZ0ZXJBcHBlbmQpIHsKLSAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOwotICBy
ZXN1bHRzLkFwcGVuZChyMV8pOwotICBFWFBFQ1RfRVEoMSwgcmVzdWx0cy5zaXplKCkpOwotICBF
WFBFQ1RfU1RSRVEoIkZhaWx1cmUgMSIsIHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMCkubWVz
c2FnZSgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBUZXN0UGFydFJlc3VsdEFycmF5IGNvbnRhaW5z
IHRoZSBnaXZlbiBUZXN0UGFydFJlc3VsdHMKLS8vIGFmdGVyIHR3byBBcHBlbmQoKSBvcGVyYXRp
b25zLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0LCBDb250YWluc0dpdmVuUmVzdWx0
c0FmdGVyVHdvQXBwZW5kcykgewotICBUZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7Ci0gIHJl
c3VsdHMuQXBwZW5kKHIxXyk7Ci0gIHJlc3VsdHMuQXBwZW5kKHIyXyk7Ci0gIEVYUEVDVF9FUSgy
LCByZXN1bHRzLnNpemUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiRmFpbHVyZSAxIiwgcmVzdWx0cy5H
ZXRUZXN0UGFydFJlc3VsdCgwKS5tZXNzYWdlKCkpOwotICBFWFBFQ1RfU1RSRVEoIkZhaWx1cmUg
MiIsIHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMSkubWVzc2FnZSgpKTsKLX0KLQotdHlwZWRl
ZiBUZXN0UGFydFJlc3VsdEFycmF5VGVzdCBUZXN0UGFydFJlc3VsdEFycmF5RGVhdGhUZXN0Owot
Ci0vLyBUZXN0cyB0aGF0IHRoZSBwcm9ncmFtIGRpZXMgd2hlbiBHZXRUZXN0UGFydFJlc3VsdCgp
IGlzIGNhbGxlZCB3aXRoCi0vLyBhbiBpbnZhbGlkIGluZGV4LgotVEVTVF9GKFRlc3RQYXJ0UmVz
dWx0QXJyYXlEZWF0aFRlc3QsIERpZXNXaGVuSW5kZXhJc091dE9mQm91bmQpIHsKLSAgVGVzdFBh
cnRSZXN1bHRBcnJheSByZXN1bHRzOwotICByZXN1bHRzLkFwcGVuZChyMV8pOwotCi0gIEVYUEVD
VF9ERUFUSF9JRl9TVVBQT1JURUQocmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgtMSksICIiKTsK
LSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChyZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDEp
LCAiIik7Ci19Ci0KLS8vIFRPRE8obWhldWxlQGdvb2dsZS5jb20pOiBBZGQgYSB0ZXN0IGZvciB0
aGUgY2xhc3MgSGFzTmV3RmF0YWxGYWlsdXJlSGVscGVyLgotCi19ICAvLyBuYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHVwbGVfdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHVwbGVfdGVzdC5jYwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTMyZjcwYjNkNGU5MDcwZjQ1OTY4NjI1YjNmZjk3
YzM5ODQ3NTdkNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR1cGxlX3Rlc3QuY2MKKysrIC9k
ZXYvbnVsbApAQCAtMSwzMjAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMu
Ci0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0v
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdh
bikKLQotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmg+Ci0jaW5jbHVkZSA8
dXRpbGl0eT4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1uYW1lc3BhY2UgewotCi11c2lu
ZyA6OnN0ZDo6dHIxOjpnZXQ7Ci11c2luZyA6OnN0ZDo6dHIxOjptYWtlX3R1cGxlOwotdXNpbmcg
OjpzdGQ6OnRyMTo6dHVwbGU7Ci11c2luZyA6OnN0ZDo6dHIxOjp0dXBsZV9lbGVtZW50OwotdXNp
bmcgOjpzdGQ6OnRyMTo6dHVwbGVfc2l6ZTsKLXVzaW5nIDo6dGVzdGluZzo6U3RhdGljQXNzZXJ0
VHlwZUVxOwotCi0vLyBUZXN0cyB0aGF0IHR1cGxlX2VsZW1lbnQ8SywgdHVwbGU8VDAsIFQxLCAu
Li4sIFROPiA+Ojp0eXBlIHJldHVybnMgVEsuCi1URVNUKHR1cGxlX2VsZW1lbnRfVGVzdCwgUmV0
dXJuc0VsZW1lbnRUeXBlKSB7Ci0gIFN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIHR1cGxlX2VsZW1l
bnQ8MCwgdHVwbGU8aW50LCBjaGFyPiA+Ojp0eXBlPigpOwotICBTdGF0aWNBc3NlcnRUeXBlRXE8
aW50JiwgdHVwbGVfZWxlbWVudDwxLCB0dXBsZTxkb3VibGUsIGludCY+ID46OnR5cGU+KCk7Ci0g
IFN0YXRpY0Fzc2VydFR5cGVFcTxib29sLCB0dXBsZV9lbGVtZW50PDIsIHR1cGxlPGRvdWJsZSwg
aW50LCBib29sPiA+Ojp0eXBlPigpOwotfQotCi0vLyBUZXN0cyB0aGF0IHR1cGxlX3NpemU8VD46
OnZhbHVlIGdpdmVzIHRoZSBudW1iZXIgb2YgZmllbGRzIGluIHR1cGxlCi0vLyB0eXBlIFQuCi1U
RVNUKHR1cGxlX3NpemVfVGVzdCwgUmV0dXJuc051bWJlck9mRmllbGRzKSB7Ci0gIEVYUEVDVF9F
USgwLCArdHVwbGVfc2l6ZTx0dXBsZTw+ID46OnZhbHVlKTsKLSAgRVhQRUNUX0VRKDEsICt0dXBs
ZV9zaXplPHR1cGxlPHZvaWQqPiA+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9FUSgxLCArdHVwbGVfc2l6
ZTx0dXBsZTxjaGFyPiA+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9FUSgxLCArKHR1cGxlX3NpemU8dHVw
bGU8dHVwbGU8aW50LCBkb3VibGU+ID4gPjo6dmFsdWUpKTsKLSAgRVhQRUNUX0VRKDIsICsodHVw
bGVfc2l6ZTx0dXBsZTxpbnQmLCBjb25zdCBjaGFyPiA+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfRVEo
MywgKyh0dXBsZV9zaXplPHR1cGxlPGNoYXIqLCB2b2lkLCBjb25zdCBib29sJj4gPjo6dmFsdWUp
KTsKLX0KLQotLy8gVGVzdHMgY29tcGFyaW5nIGEgdHVwbGUgd2l0aCBpdHNlbGYuCi1URVNUKENv
bXBhcmlzb25UZXN0LCBDb21wYXJlc1dpdGhTZWxmKSB7Ci0gIGNvbnN0IHR1cGxlPGludCwgY2hh
ciwgYm9vbD4gYSg1LCAnYScsIGZhbHNlKTsKLQotICBFWFBFQ1RfVFJVRShhID09IGEpOwotICBF
WFBFQ1RfRkFMU0UoYSAhPSBhKTsKLX0KLQotLy8gVGVzdHMgY29tcGFyaW5nIHR3byB0dXBsZXMg
d2l0aCB0aGUgc2FtZSB2YWx1ZS4KLVRFU1QoQ29tcGFyaXNvblRlc3QsIENvbXBhcmVzRXF1YWxU
dXBsZXMpIHsKLSAgY29uc3QgdHVwbGU8aW50LCBib29sPiBhKDUsIHRydWUpLCBiKDUsIHRydWUp
OwotCi0gIEVYUEVDVF9UUlVFKGEgPT0gYik7Ci0gIEVYUEVDVF9GQUxTRShhICE9IGIpOwotfQot
Ci0vLyBUZXN0cyBjb21wYXJpbmcgdHdvIGRpZmZlcmVudCB0dXBsZXMgdGhhdCBoYXZlIG5vIHJl
ZmVyZW5jZSBmaWVsZHMuCi1URVNUKENvbXBhcmlzb25UZXN0LCBDb21wYXJlc1VuZXF1YWxUdXBs
ZXNXaXRob3V0UmVmZXJlbmNlRmllbGRzKSB7Ci0gIHR5cGVkZWYgdHVwbGU8Y29uc3QgaW50LCBj
aGFyPiBGb29UdXBsZTsKLQotICBjb25zdCBGb29UdXBsZSBhKDAsICd4Jyk7Ci0gIGNvbnN0IEZv
b1R1cGxlIGIoMSwgJ2EnKTsKLQotICBFWFBFQ1RfVFJVRShhICE9IGIpOwotICBFWFBFQ1RfRkFM
U0UoYSA9PSBiKTsKLQotICBjb25zdCBGb29UdXBsZSBjKDEsICdiJyk7Ci0KLSAgRVhQRUNUX1RS
VUUoYiAhPSBjKTsKLSAgRVhQRUNUX0ZBTFNFKGIgPT0gYyk7Ci19Ci0KLS8vIFRlc3RzIGNvbXBh
cmluZyB0d28gZGlmZmVyZW50IHR1cGxlcyB0aGF0IGhhdmUgcmVmZXJlbmNlIGZpZWxkcy4KLVRF
U1QoQ29tcGFyaXNvblRlc3QsIENvbXBhcmVzVW5lcXVhbFR1cGxlc1dpdGhSZWZlcmVuY2VGaWVs
ZHMpIHsKLSAgdHlwZWRlZiB0dXBsZTxpbnQmLCBjb25zdCBjaGFyJj4gRm9vVHVwbGU7Ci0KLSAg
aW50IGkgPSA1OwotICBjb25zdCBjaGFyIGNoID0gJ2EnOwotICBjb25zdCBGb29UdXBsZSBhKGks
IGNoKTsKLQotICBpbnQgaiA9IDY7Ci0gIGNvbnN0IEZvb1R1cGxlIGIoaiwgY2gpOwotCi0gIEVY
UEVDVF9UUlVFKGEgIT0gYik7Ci0gIEVYUEVDVF9GQUxTRShhID09IGIpOwotCi0gIGogPSA1Owot
ICBjb25zdCBjaGFyIGNoMiA9ICdiJzsKLSAgY29uc3QgRm9vVHVwbGUgYyhqLCBjaDIpOwotCi0g
IEVYUEVDVF9UUlVFKGIgIT0gYyk7Ci0gIEVYUEVDVF9GQUxTRShiID09IGMpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IGEgdHVwbGUgZmllbGQgd2l0aCBhIHJlZmVyZW5jZSB0eXBlIGlzIGFuIGFsaWFz
IG9mIHRoZQotLy8gdmFyaWFibGUgaXQncyBzdXBwb3NlZCB0byByZWZlcmVuY2UuCi1URVNUKFJl
ZmVyZW5jZUZpZWxkVGVzdCwgSXNBbGlhc09mUmVmZXJlbmNlZFZhcmlhYmxlKSB7Ci0gIGludCBu
ID0gMDsKLSAgdHVwbGU8Ym9vbCwgaW50Jj4gdCh0cnVlLCBuKTsKLQotICBuID0gMTsKLSAgRVhQ
RUNUX0VRKG4sIGdldDwxPih0KSkKLSAgICAgIDw8ICJDaGFuZ2luZyBhIHVuZGVybHlpbmcgdmFy
aWFibGUgc2hvdWxkIHVwZGF0ZSB0aGUgcmVmZXJlbmNlIGZpZWxkLiI7Ci0KLSAgLy8gTWFrZXMg
c3VyZSB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IGRvIGFueXRoaW5nIGZ1bm55IHdp
dGgKLSAgLy8gdGhlICYgb3BlcmF0b3IgZm9yIHRoZSByZXR1cm4gdHlwZSBvZiBnZXQ8PigpLgot
ICBFWFBFQ1RfRVEoJm4sICYoZ2V0PDE+KHQpKSkKLSAgICAgIDw8ICJUaGUgYWRkcmVzcyBvZiBh
IHJlZmVyZW5jZSBmaWVsZCBzaG91bGQgZXF1YWwgdGhlIGFkZHJlc3Mgb2YgIgotICAgICAgPDwg
InRoZSB1bmRlcmx5aW5nIHZhcmlhYmxlLiI7Ci0KLSAgZ2V0PDE+KHQpID0gMjsKLSAgRVhQRUNU
X0VRKDIsIG4pCi0gICAgICA8PCAiQ2hhbmdpbmcgYSByZWZlcmVuY2UgZmllbGQgc2hvdWxkIHVw
ZGF0ZSB0aGUgdW5kZXJseWluZyB2YXJpYWJsZS4iOwotfQotCi0vLyBUZXN0cyB0aGF0IHR1cGxl
J3MgZGVmYXVsdCBjb25zdHJ1Y3RvciBkZWZhdWx0IGluaXRpYWxpemVzIGVhY2ggZmllbGQuCi0v
LyBUaGlzIHRlc3QgbmVlZHMgdG8gY29tcGlsZSB3aXRob3V0IGdlbmVyYXRpbmcgd2FybmluZ3Mu
Ci1URVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3JEZWZhdWx0SW5p
dGlhbGl6ZXNFYWNoRmllbGQpIHsKLSAgLy8gVGhlIFRSMSByZXBvcnQgcmVxdWlyZXMgdGhhdCB0
dXBsZSdzIGRlZmF1bHQgY29uc3RydWN0b3IgZGVmYXVsdAotICAvLyBpbml0aWFsaXplcyBlYWNo
IGZpZWxkLCBldmVuIGlmIGl0J3MgYSBwcmltaXRpdmUgdHlwZS4gIElmIHRoZQotICAvLyBpbXBs
ZW1lbnRhdGlvbiBmb3JnZXRzIHRvIGRvIHRoaXMsIHRoaXMgdGVzdCB3aWxsIGNhdGNoIGl0IGJ5
Ci0gIC8vIGdlbmVyYXRpbmcgd2FybmluZ3MgYWJvdXQgdXNpbmcgdW5pbml0aWFsaXplZCB2YXJp
YWJsZXMgKGFzc3VtaW5nCi0gIC8vIGEgZGVjZW50IGNvbXBpbGVyKS4KLQotICB0dXBsZTw+IGVt
cHR5OwotCi0gIHR1cGxlPGludD4gYTEsIGIxOwotICBiMSA9IGExOwotICBFWFBFQ1RfRVEoMCwg
Z2V0PDA+KGIxKSk7Ci0KLSAgdHVwbGU8aW50LCBkb3VibGU+IGEyLCBiMjsKLSAgYjIgPSBhMjsK
LSAgRVhQRUNUX0VRKDAsIGdldDwwPihiMikpOwotICBFWFBFQ1RfRVEoMC4wLCBnZXQ8MT4oYjIp
KTsKLQotICB0dXBsZTxkb3VibGUsIGNoYXIsIGJvb2wqPiBhMywgYjM7Ci0gIGIzID0gYTM7Ci0g
IEVYUEVDVF9FUSgwLjAsIGdldDwwPihiMykpOwotICBFWFBFQ1RfRVEoJ1wwJywgZ2V0PDE+KGIz
KSk7Ci0gIEVYUEVDVF9UUlVFKGdldDwyPihiMykgPT0gTlVMTCk7Ci0KLSAgdHVwbGU8aW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50PiBhMTAsIGIxMDsKLSAg
YjEwID0gYTEwOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDA+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwg
Z2V0PDE+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDI+KGIxMCkpOwotICBFWFBFQ1RfRVEo
MCwgZ2V0PDM+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDQ+KGIxMCkpOwotICBFWFBFQ1Rf
RVEoMCwgZ2V0PDU+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDY+KGIxMCkpOwotICBFWFBF
Q1RfRVEoMCwgZ2V0PDc+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDg+KGIxMCkpOwotICBF
WFBFQ1RfRVEoMCwgZ2V0PDk+KGIxMCkpOwotfQotCi0vLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSB0
dXBsZSBmcm9tIGl0cyBmaWVsZHMuCi1URVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBDb25zdHJ1
Y3RzRnJvbUZpZWxkcykgewotICBpbnQgbiA9IDE7Ci0gIC8vIFJlZmVyZW5jZSBmaWVsZC4KLSAg
dHVwbGU8aW50Jj4gYShuKTsKLSAgRVhQRUNUX0VRKCZuLCAmKGdldDwwPihhKSkpOwotCi0gIC8v
IE5vbi1yZWZlcmVuY2UgZmllbGRzLgotICB0dXBsZTxpbnQsIGNoYXI+IGIoNSwgJ2EnKTsKLSAg
RVhQRUNUX0VRKDUsIGdldDwwPihiKSk7Ci0gIEVYUEVDVF9FUSgnYScsIGdldDwxPihiKSk7Ci0K
LSAgLy8gQ29uc3QgcmVmZXJlbmNlIGZpZWxkLgotICBjb25zdCBpbnQgbSA9IDI7Ci0gIHR1cGxl
PGJvb2wsIGNvbnN0IGludCY+IGModHJ1ZSwgbSk7Ci0gIEVYUEVDVF9UUlVFKGdldDwwPihjKSk7
Ci0gIEVYUEVDVF9FUSgmbSwgJihnZXQ8MT4oYykpKTsKLX0KLQotLy8gVGVzdHMgdHVwbGUncyBj
b3B5IGNvbnN0cnVjdG9yLgotVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgQ29weUNvbnN0cnVj
dG9yKSB7Ci0gIHR1cGxlPGRvdWJsZSwgYm9vbD4gYSgwLjAsIHRydWUpOwotICB0dXBsZTxkb3Vi
bGUsIGJvb2w+IGIoYSk7Ci0KLSAgRVhQRUNUX0RPVUJMRV9FUSgwLjAsIGdldDwwPihiKSk7Ci0g
IEVYUEVDVF9UUlVFKGdldDwxPihiKSk7Ci19Ci0KLS8vIFRlc3RzIGNvbnN0cnVjdGluZyBhIHR1
cGxlIGZyb20gYW5vdGhlciB0dXBsZSB0aGF0IGhhcyBhIGNvbXBhdGlibGUKLS8vIGJ1dCBkaWZm
ZXJlbnQgdHlwZS4KLVRFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3QsIENvbnN0cnVjdHNGcm9tRGlm
ZmVyZW50VHVwbGVUeXBlKSB7Ci0gIHR1cGxlPGludCwgaW50LCBjaGFyPiBhKDAsIDEsICdhJyk7
Ci0gIHR1cGxlPGRvdWJsZSwgbG9uZywgaW50PiBiKGEpOwotCi0gIEVYUEVDVF9ET1VCTEVfRVEo
MC4wLCBnZXQ8MD4oYikpOwotICBFWFBFQ1RfRVEoMSwgZ2V0PDE+KGIpKTsKLSAgRVhQRUNUX0VR
KCdhJywgZ2V0PDI+KGIpKTsKLX0KLQotLy8gVGVzdHMgY29uc3RydWN0aW5nIGEgMi10dXBsZSBm
cm9tIGFuIHN0ZDo6cGFpci4KLVRFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3QsIENvbnN0cnVjdHNG
cm9tUGFpcikgewotICA6OnN0ZDo6cGFpcjxpbnQsIGNoYXI+IGEoMSwgJ2EnKTsKLSAgdHVwbGU8
aW50LCBjaGFyPiBiKGEpOwotICB0dXBsZTxpbnQsIGNvbnN0IGNoYXImPiBjKGEpOwotfQotCi0v
LyBUZXN0cyBhc3NpZ25pbmcgYSB0dXBsZSB0byBhbm90aGVyIHR1cGxlIHdpdGggdGhlIHNhbWUg
dHlwZS4KLVRFU1QoVHVwbGVBc3NpZ25tZW50VGVzdCwgQXNzaWduc1RvU2FtZVR1cGxlVHlwZSkg
ewotICBjb25zdCB0dXBsZTxpbnQsIGxvbmc+IGEoNSwgN0wpOwotICB0dXBsZTxpbnQsIGxvbmc+
IGI7Ci0gIGIgPSBhOwotICBFWFBFQ1RfRVEoNSwgZ2V0PDA+KGIpKTsKLSAgRVhQRUNUX0VRKDdM
LCBnZXQ8MT4oYikpOwotfQotCi0vLyBUZXN0cyBhc3NpZ25pbmcgYSB0dXBsZSB0byBhbm90aGVy
IHR1cGxlIHdpdGggYSBkaWZmZXJlbnQgYnV0Ci0vLyBjb21wYXRpYmxlIHR5cGUuCi1URVNUKFR1
cGxlQXNzaWdubWVudFRlc3QsIEFzc2lnbnNUb0RpZmZlcmVudFR1cGxlVHlwZSkgewotICBjb25z
dCB0dXBsZTxpbnQsIGxvbmcsIGJvb2w+IGEoMSwgN0wsIHRydWUpOwotICB0dXBsZTxsb25nLCBp
bnQsIGJvb2w+IGI7Ci0gIGIgPSBhOwotICBFWFBFQ1RfRVEoMUwsIGdldDwwPihiKSk7Ci0gIEVY
UEVDVF9FUSg3LCBnZXQ8MT4oYikpOwotICBFWFBFQ1RfVFJVRShnZXQ8Mj4oYikpOwotfQotCi0v
LyBUZXN0cyBhc3NpZ25pbmcgYW4gc3RkOjpwYWlyIHRvIGEgMi10dXBsZS4KLVRFU1QoVHVwbGVB
c3NpZ25tZW50VGVzdCwgQXNzaWduc0Zyb21QYWlyKSB7Ci0gIGNvbnN0IDo6c3RkOjpwYWlyPGlu
dCwgYm9vbD4gYSg1LCB0cnVlKTsKLSAgdHVwbGU8aW50LCBib29sPiBiOwotICBiID0gYTsKLSAg
RVhQRUNUX0VRKDUsIGdldDwwPihiKSk7Ci0gIEVYUEVDVF9UUlVFKGdldDwxPihiKSk7Ci0KLSAg
dHVwbGU8bG9uZywgYm9vbD4gYzsKLSAgYyA9IGE7Ci0gIEVYUEVDVF9FUSg1TCwgZ2V0PDA+KGMp
KTsKLSAgRVhQRUNUX1RSVUUoZ2V0PDE+KGMpKTsKLX0KLQotLy8gQSBmaXh0dXJlIGZvciB0ZXN0
aW5nIGJpZyB0dXBsZXMuCi1jbGFzcyBCaWdUdXBsZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7Ci0gcHJvdGVjdGVkOgotICB0eXBlZGVmIHR1cGxlPGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQsIGludD4gQmlnVHVwbGU7Ci0KLSAgQmlnVHVwbGVUZXN0KCkg
OgotICAgICAgYV8oMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMiksCi0gICAgICBiXygxLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzKSB7fQotCi0gIEJpZ1R1cGxlIGFfLCBiXzsKLX07Ci0K
LS8vIFRlc3RzIGNvbnN0cnVjdGluZyBiaWcgdHVwbGVzLgotVEVTVF9GKEJpZ1R1cGxlVGVzdCwg
Q29uc3RydWN0aW9uKSB7Ci0gIEJpZ1R1cGxlIGE7Ci0gIEJpZ1R1cGxlIGIoYl8pOwotfQotCi0v
LyBUZXN0cyB0aGF0IGdldDxOPih0KSByZXR1cm5zIHRoZSBOLXRoICgwLWJhc2VkKSBmaWVsZCBv
ZiB0dXBsZSB0LgotVEVTVF9GKEJpZ1R1cGxlVGVzdCwgZ2V0KSB7Ci0gIEVYUEVDVF9FUSgxLCBn
ZXQ8MD4oYV8pKTsKLSAgRVhQRUNUX0VRKDIsIGdldDw5PihhXykpOwotCi0gIC8vIFRlc3RzIHRo
YXQgZ2V0KCkgd29ya3Mgb24gYSBjb25zdCB0dXBsZSB0b28uCi0gIGNvbnN0IEJpZ1R1cGxlIGEo
YV8pOwotICBFWFBFQ1RfRVEoMSwgZ2V0PDA+KGEpKTsKLSAgRVhQRUNUX0VRKDIsIGdldDw5Pihh
KSk7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyBiaWcgdHVwbGVzLgotVEVTVF9GKEJpZ1R1cGxl
VGVzdCwgQ29tcGFyaXNvbnMpIHsKLSAgRVhQRUNUX1RSVUUoYV8gPT0gYV8pOwotICBFWFBFQ1Rf
RkFMU0UoYV8gIT0gYV8pOwotCi0gIEVYUEVDVF9UUlVFKGFfICE9IGJfKTsKLSAgRVhQRUNUX0ZB
TFNFKGFfID09IGJfKTsKLX0KLQotVEVTVChNYWtlVHVwbGVUZXN0LCBXb3Jrc0ZvclNjYWxhclR5
cGVzKSB7Ci0gIHR1cGxlPGJvb2wsIGludD4gYTsKLSAgYSA9IG1ha2VfdHVwbGUodHJ1ZSwgNSk7
Ci0gIEVYUEVDVF9UUlVFKGdldDwwPihhKSk7Ci0gIEVYUEVDVF9FUSg1LCBnZXQ8MT4oYSkpOwot
Ci0gIHR1cGxlPGNoYXIsIGludCwgbG9uZz4gYjsKLSAgYiA9IG1ha2VfdHVwbGUoJ2EnLCAnYics
IDUpOwotICBFWFBFQ1RfRVEoJ2EnLCBnZXQ8MD4oYikpOwotICBFWFBFQ1RfRVEoJ2InLCBnZXQ8
MT4oYikpOwotICBFWFBFQ1RfRVEoNSwgZ2V0PDI+KGIpKTsKLX0KLQotVEVTVChNYWtlVHVwbGVU
ZXN0LCBXb3Jrc0ZvclBvaW50ZXJzKSB7Ci0gIGludCBhW10gPSB7IDEsIDIsIDMsIDQgfTsKLSAg
Y29uc3QgY2hhciogY29uc3Qgc3RyID0gImhpIjsKLSAgaW50KiBjb25zdCBwID0gYTsKLQotICB0
dXBsZTxjb25zdCBjaGFyKiwgaW50Kj4gdDsKLSAgdCA9IG1ha2VfdHVwbGUoc3RyLCBwKTsKLSAg
RVhQRUNUX0VRKHN0ciwgZ2V0PDA+KHQpKTsKLSAgRVhQRUNUX0VRKHAsIGdldDwxPih0KSk7Ci19
Ci0KLX0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdC10eXBlZC10ZXN0Ml90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdC10eXBlZC10ZXN0Ml90ZXN0LmNjCmluZGV4IDc5YThhODdkY2ZkYmRlNTNjMWUw
ZDhjNmQxMWE5ODY5MjJiMDJmZjguLmVkOTY0MjFjNjdjYThhMmZiMzhmM2Q4ODk2MDIzMWVmMjJi
ZWE2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlw
ZWQtdGVzdDJfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
LXR5cGVkLXRlc3QyX3Rlc3QuY2MKQEAgLTI2LDEzICsyNiwxMiBAQAogLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAog
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAi
dGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuaCIKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKICNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVz
dF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0
X3Rlc3QuY2MKaW5kZXggZjJjMzk3MjMxMDE3NzllNzcxODQ3ZDU5MmQ5ZmFiYjU2ZjNiNDVjNi4u
YzM4YmI5NGEyOTBkOTE0MDMyMjkxMTllMzBiOWZkYzU1ODk2YTRlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MKQEAg
LTI2LDE0ICsyNiwxOCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwor
CisjaW5jbHVkZSAidGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuaCIKIAogI2luY2x1ZGUgPHNl
dD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXR5cGVkLXRlc3Rf
dGVzdC5oIgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKKworI2lmIF9NU0NfVkVSCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MTI3
IC8qIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29uc3RhbnQgKi8pCisjZW5kaWYgIC8vICBf
TVNDX1ZFUgogCiB1c2luZyB0ZXN0aW5nOjpUZXN0OwogCkBAIC0xNjUsNiArMTY5LDQwIEBAIFRZ
UEVEX1RFU1QoTnVtZXJpY1Rlc3QsIERlZmF1bHRJc1plcm8pIHsKIAogfSAgLy8gbmFtZXNwYWNl
IGxpYnJhcnkxCiAKKy8vIFRlc3RzIHRoYXQgY3VzdG9tIG5hbWVzIHdvcmsuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVkVGVzdFdpdGhOYW1lcyA6IHB1YmxpYyBUZXN0IHt9Owor
CitjbGFzcyBUeXBlZFRlc3ROYW1lcyB7CisgcHVibGljOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldE5hbWUoaW50IGkpIHsKKyAgICBpZiAodGVzdGlu
Zzo6aW50ZXJuYWw6OklzU2FtZTxULCBjaGFyPjo6dmFsdWUpIHsKKyAgICAgIHJldHVybiBzdGQ6
OnN0cmluZygiY2hhcl8iKSArIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhpKTsKKyAgICB9Cisg
ICAgaWYgKHRlc3Rpbmc6OmludGVybmFsOjpJc1NhbWU8VCwgaW50Pjo6dmFsdWUpIHsKKyAgICAg
IHJldHVybiBzdGQ6OnN0cmluZygiaW50XyIpICsgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGkp
OworICAgIH0KKyAgfQorfTsKKworVFlQRURfVEVTVF9DQVNFKFR5cGVkVGVzdFdpdGhOYW1lcywg
VHdvVHlwZXMsIFR5cGVkVGVzdE5hbWVzKTsKKworVFlQRURfVEVTVChUeXBlZFRlc3RXaXRoTmFt
ZXMsIFRlc3RDYXNlTmFtZSkgeworICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxUeXBl
UGFyYW0sIGNoYXI+Ojp2YWx1ZSkgeworICAgIEVYUEVDVF9TVFJFUSg6OnRlc3Rpbmc6OlVuaXRU
ZXN0OjpHZXRJbnN0YW5jZSgpCisgICAgICAgICAgICAgICAgICAgICAtPmN1cnJlbnRfdGVzdF9p
bmZvKCkKKyAgICAgICAgICAgICAgICAgICAgIC0+dGVzdF9jYXNlX25hbWUoKSwKKyAgICAgICAg
ICAgICAgICAgIlR5cGVkVGVzdFdpdGhOYW1lcy9jaGFyXzAiKTsKKyAgfQorICBpZiAodGVzdGlu
Zzo6aW50ZXJuYWw6OklzU2FtZTxUeXBlUGFyYW0sIGludD46OnZhbHVlKSB7CisgICAgRVhQRUNU
X1NUUkVRKDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCkKKyAgICAgICAgICAgICAg
ICAgICAgIC0+Y3VycmVudF90ZXN0X2luZm8oKQorICAgICAgICAgICAgICAgICAgICAgLT50ZXN0
X2Nhc2VfbmFtZSgpLAorICAgICAgICAgICAgICAgICAiVHlwZWRUZXN0V2l0aE5hbWVzL2ludF8x
Iik7CisgIH0KK30KKwogI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAogCiAvLyBUaGlz
ICNpZmRlZiBibG9jayB0ZXN0cyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCkBAIC0yNjUsNiAr
MzAzLDQ2IEBAIFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKERlcml2ZWRUZXN0LAogdHlwZWRl
ZiBUeXBlczxzaG9ydCwgbG9uZz4gTXlUd29UeXBlczsKIElOU1RBTlRJQVRFX1RZUEVEX1RFU1Rf
Q0FTRV9QKE15LCBEZXJpdmVkVGVzdCwgTXlUd29UeXBlcyk7CiAKKy8vIFRlc3RzIHRoYXQgY3Vz
dG9tIG5hbWVzIHdvcmsgd2l0aCB0eXBlIHBhcmFtZXRyaXplZCB0ZXN0cy4gV2UgcmV1c2UgdGhl
CisvLyBUd29UeXBlcyBmcm9tIGFib3ZlIGhlcmUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIFR5cGVQYXJhbWV0cml6ZWRUZXN0V2l0aE5hbWVzIDogcHVibGljIFRlc3Qge307CisKK1RZ
UEVEX1RFU1RfQ0FTRV9QKFR5cGVQYXJhbWV0cml6ZWRUZXN0V2l0aE5hbWVzKTsKKworVFlQRURf
VEVTVF9QKFR5cGVQYXJhbWV0cml6ZWRUZXN0V2l0aE5hbWVzLCBUZXN0Q2FzZU5hbWUpIHsKKyAg
aWYgKHRlc3Rpbmc6OmludGVybmFsOjpJc1NhbWU8VHlwZVBhcmFtLCBjaGFyPjo6dmFsdWUpIHsK
KyAgICBFWFBFQ1RfU1RSRVEoOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKQorICAg
ICAgICAgICAgICAgICAgICAgLT5jdXJyZW50X3Rlc3RfaW5mbygpCisgICAgICAgICAgICAgICAg
ICAgICAtPnRlc3RfY2FzZV9uYW1lKCksCisgICAgICAgICAgICAgICAgICJDdXN0b21OYW1lL1R5
cGVQYXJhbWV0cml6ZWRUZXN0V2l0aE5hbWVzL3BfY2hhcl8wIik7CisgIH0KKyAgaWYgKHRlc3Rp
bmc6OmludGVybmFsOjpJc1NhbWU8VHlwZVBhcmFtLCBpbnQ+Ojp2YWx1ZSkgeworICAgIEVYUEVD
VF9TVFJFUSg6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpCisgICAgICAgICAgICAg
ICAgICAgICAtPmN1cnJlbnRfdGVzdF9pbmZvKCkKKyAgICAgICAgICAgICAgICAgICAgIC0+dGVz
dF9jYXNlX25hbWUoKSwKKyAgICAgICAgICAgICAgICAgIkN1c3RvbU5hbWUvVHlwZVBhcmFtZXRy
aXplZFRlc3RXaXRoTmFtZXMvcF9pbnRfMSIpOworICB9Cit9CisKK1JFR0lTVEVSX1RZUEVEX1RF
U1RfQ0FTRV9QKFR5cGVQYXJhbWV0cml6ZWRUZXN0V2l0aE5hbWVzLCBUZXN0Q2FzZU5hbWUpOwor
CitjbGFzcyBUeXBlUGFyYW1ldHJpemVkVGVzdE5hbWVzIHsKKyBwdWJsaWM6CisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgorICBzdGF0aWMgc3RkOjpzdHJpbmcgR2V0TmFtZShpbnQgaSkgeworICAg
IGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFQsIGNoYXI+Ojp2YWx1ZSkgeworICAgICAg
cmV0dXJuIHN0ZDo6c3RyaW5nKCJwX2NoYXJfIikgKyA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmco
aSk7CisgICAgfQorICAgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFQsIGludD46OnZh
bHVlKSB7CisgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoInBfaW50XyIpICsgOjp0ZXN0aW5nOjpQ
cmludFRvU3RyaW5nKGkpOworICAgIH0KKyAgfQorfTsKKworSU5TVEFOVElBVEVfVFlQRURfVEVT
VF9DQVNFX1AoQ3VzdG9tTmFtZSwgVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRoTmFtZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUd29UeXBlcywgVHlwZVBhcmFtZXRyaXplZFRlc3RO
YW1lcyk7CisKIC8vIFRlc3RzIHRoYXQgbXVsdGlwbGUgVFlQRURfVEVTVF9DQVNFX1AncyBjYW4g
YmUgZGVmaW5lZCBpbiB0aGUgc2FtZQogLy8gdHJhbnNsYXRpb24gdW5pdC4KIApAQCAtMzQzLDYg
KzQyMSwyNSBAQCBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChOdW1lcmljVGVzdCwKIHR5cGVk
ZWYgVHlwZXM8aW50LCBkb3VibGU+IE51bWVyaWNUeXBlczsKIElOU1RBTlRJQVRFX1RZUEVEX1RF
U1RfQ0FTRV9QKE15LCBOdW1lcmljVGVzdCwgTnVtZXJpY1R5cGVzKTsKIAorc3RhdGljIGNvbnN0
IGNoYXIqIEdldFRlc3ROYW1lKCkgeworICByZXR1cm4gdGVzdGluZzo6VW5pdFRlc3Q6OkdldElu
c3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCktPm5hbWUoKTsKK30KKy8vIFRlc3QgdGhlIHN0
cmlwcGluZyBvZiBzcGFjZSBmcm9tIHRlc3QgbmFtZXMKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBj
bGFzcyBUcmltbWVkVGVzdCA6IHB1YmxpYyBUZXN0IHsgfTsKK1RZUEVEX1RFU1RfQ0FTRV9QKFRy
aW1tZWRUZXN0KTsKK1RZUEVEX1RFU1RfUChUcmltbWVkVGVzdCwgVGVzdDEpIHsgRVhQRUNUX1NU
UkVRKCJUZXN0MSIsIEdldFRlc3ROYW1lKCkpOyB9CitUWVBFRF9URVNUX1AoVHJpbW1lZFRlc3Qs
IFRlc3QyKSB7IEVYUEVDVF9TVFJFUSgiVGVzdDIiLCBHZXRUZXN0TmFtZSgpKTsgfQorVFlQRURf
VEVTVF9QKFRyaW1tZWRUZXN0LCBUZXN0MykgeyBFWFBFQ1RfU1RSRVEoIlRlc3QzIiwgR2V0VGVz
dE5hbWUoKSk7IH0KK1RZUEVEX1RFU1RfUChUcmltbWVkVGVzdCwgVGVzdDQpIHsgRVhQRUNUX1NU
UkVRKCJUZXN0NCIsIEdldFRlc3ROYW1lKCkpOyB9CitUWVBFRF9URVNUX1AoVHJpbW1lZFRlc3Qs
IFRlc3Q1KSB7IEVYUEVDVF9TVFJFUSgiVGVzdDUiLCBHZXRUZXN0TmFtZSgpKTsgfQorUkVHSVNU
RVJfVFlQRURfVEVTVF9DQVNFX1AoCisgICAgVHJpbW1lZFRlc3QsCisgICAgVGVzdDEsIFRlc3Qy
LFRlc3QzICwgVGVzdDQgLFRlc3Q1ICk7ICAvLyBOT0xJTlQKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
MSwgdHlwZW5hbWUgVDI+IHN0cnVjdCBNeVBhaXIge307CisvLyBCZSBzdXJlIHRvIHRyeSBhIHR5
cGUgd2l0aCBhIGNvbW1hIGluIGl0cyBuYW1lIGp1c3QgaW4gY2FzZSBpdCBtYXR0ZXJzLgordHlw
ZWRlZiBUeXBlczxpbnQsIGRvdWJsZSwgTXlQYWlyPGludCwgaW50PiA+IFRyaW1UeXBlczsKK0lO
U1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBUcmltbWVkVGVzdCwgVHJpbVR5cGVzKTsK
KwogfSAgLy8gbmFtZXNwYWNlIGxpYnJhcnkyCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVE
X1RFU1RfUApAQCAtMzU3LDQgKzQ1NCw4IEBAIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9Q
KE15LCBOdW1lcmljVGVzdCwgTnVtZXJpY1R5cGVzKTsKIC8vIG11c3QgYmUgZGVmaW5lZCkuIFRo
aXMgZHVtbXkgdGVzdCBrZWVwcyBndGVzdF9tYWluIGxpbmtlZCBpbi4KIFRFU1QoRHVtbXlUZXN0
LCBUeXBlZFRlc3RzQXJlTm90U3VwcG9ydGVkT25UaGlzUGxhdGZvcm0pIHt9CiAKKyNpZiBfTVND
X1ZFUgorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDEyNworI2VuZGlm
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgX01TQ19WRVIKKwogI2VuZGlmICAvLyAj
aWYgIWRlZmluZWQoR1RFU1RfSEFTX1RZUEVEX1RFU1QpICYmICFkZWZpbmVkKEdURVNUX0hBU19U
WVBFRF9URVNUX1ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0LXR5cGVkLXRlc3RfdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dC10eXBlZC10ZXN0X3Rlc3QuaAppbmRleCA0MGRmZWFjNmUwMWQ5N2VjZjdmZWJiODY1ZmNlNjY4
NDhiYThlOGRiLi4yY2NlNjdjODI1YTZjYWJkYjlhNTRiOTE5MjljMDBjOTkyYTBkNDdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVz
dC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90
ZXN0LmgKQEAgLTI2LDEzICsyNiwxMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25n
IFdhbikKKwogCiAjaWZuZGVmIEdURVNUX1RFU1RfR1RFU1RfVFlQRURfVEVTVF9URVNUX0hfCiAj
ZGVmaW5lIEdURVNUX1RFU1RfR1RFU1RfVFlQRURfVEVTVF9URVNUX0hfCiAKLSNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKICNpZiBHVEVTVF9IQVNf
VFlQRURfVEVTVF9QCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjCmluZGV4IDdlMGY4ZjgwNDVkNzFjMDE1ZDEyOTRm
ZmVmNGNhNTQ1ZGRjNTUxZjkuLmYzZWEwM2E1OTZkMGY5OWEzOTEyNTI2MzBkY2ExMDYyMjkzMTEy
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdW5pdHRl
c3QtYXBpX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC11
bml0dGVzdC1hcGlfdGVzdC5jYwpAQCAtMjUsMTUgKzI1LDE0IEBACiAvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKIC8vCi0vLyBBdXRob3I6IHZsYWRsQGdv
b2dsZS5jb20gKFZsYWQgTG9zZXYpCi0vLwotLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFt
ZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2lu
ZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogLy8KIC8vIFRoaXMgZmlsZSBjb250YWlucyB0ZXN0
cyB2ZXJpZnlpbmcgY29ycmVjdG5lc3Mgb2YgZGF0YSBwcm92aWRlZCB2aWEKIC8vIFVuaXRUZXN0
J3MgcHVibGljIG1ldGhvZHMuCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4gIC8vIEZvciBzdHJjbXAuCiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtNTQsNyArNTMsNyBAQCBjbGFzcyBVbml0VGVzdEhlbHBl
ciB7CiAgcHVibGljOgogICAvLyBSZXR1cm5zIHRoZSBhcnJheSBvZiBwb2ludGVycyB0byBhbGwg
dGVzdCBjYXNlcyBzb3J0ZWQgYnkgdGhlIHRlc3QgY2FzZQogICAvLyBuYW1lLiAgVGhlIGNhbGxl
ciBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgdGhlIGFycmF5LgotICBzdGF0aWMgVGVzdENh
c2UgY29uc3QqKiBjb25zdCBHZXRTb3J0ZWRUZXN0Q2FzZXMoKSB7CisgIHN0YXRpYyBUZXN0Q2Fz
ZSBjb25zdCoqIEdldFNvcnRlZFRlc3RDYXNlcygpIHsKICAgICBVbml0VGVzdCYgdW5pdF90ZXN0
ID0gKlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpOwogICAgIFRlc3RDYXNlIGNvbnN0KiogY29uc3Qg
dGVzdF9jYXNlcyA9CiAgICAgICAgIG5ldyBjb25zdCBUZXN0Q2FzZSpbdW5pdF90ZXN0LnRvdGFs
X3Rlc3RfY2FzZV9jb3VudCgpXTsKQEAgLTgzLDcgKzgyLDcgQEAgY2xhc3MgVW5pdFRlc3RIZWxw
ZXIgewogICAvLyBSZXR1cm5zIHRoZSBhcnJheSBvZiBwb2ludGVycyB0byBhbGwgdGVzdHMgaW4g
YSBwYXJ0aWN1bGFyIHRlc3QgY2FzZQogICAvLyBzb3J0ZWQgYnkgdGhlIHRlc3QgbmFtZS4gIFRo
ZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZQogICAvLyBhcnJheS4KLSAg
c3RhdGljIFRlc3RJbmZvIGNvbnN0KiogY29uc3QgR2V0U29ydGVkVGVzdHMoY29uc3QgVGVzdENh
c2UqIHRlc3RfY2FzZSkgeworICBzdGF0aWMgVGVzdEluZm8gY29uc3QqKiBHZXRTb3J0ZWRUZXN0
cyhjb25zdCBUZXN0Q2FzZSogdGVzdF9jYXNlKSB7CiAgICAgVGVzdEluZm8gY29uc3QqKiBjb25z
dCB0ZXN0cyA9CiAgICAgICAgIG5ldyBjb25zdCBUZXN0SW5mbypbdGVzdF9jYXNlLT50b3RhbF90
ZXN0X2NvdW50KCldOwogCkBAIC0xMDMsMTIgKzEwMiw2IEBAIFRZUEVEX1RFU1QoVGVzdENhc2VX
aXRoQ29tbWVudFRlc3QsIER1bW15KSB7fQogCiBjb25zdCBpbnQga1R5cGVkVGVzdENhc2VzID0g
MTsKIGNvbnN0IGludCBrVHlwZWRUZXN0cyA9IDE7Ci0KLVN0cmluZyBHZXRFeHBlY3RlZFRlc3RD
YXNlQ29tbWVudCgpIHsKLSAgTWVzc2FnZSBjb21tZW50OwotICBjb21tZW50IDw8ICJUeXBlUGFy
YW0gPSAiIDw8IEdldFR5cGVOYW1lPGludD4oKS5jX3N0cigpOwotICByZXR1cm4gY29tbWVudC5H
ZXRTdHJpbmcoKTsKLX0KICNlbHNlCiBjb25zdCBpbnQga1R5cGVkVGVzdENhc2VzID0gMDsKIGNv
bnN0IGludCBrVHlwZWRUZXN0cyA9IDA7CkBAIC0xNDMsMTIgKzEzNiwxOSBAQCBURVNUKEFwaVRl
c3QsIFVuaXRUZXN0SW1tdXRhYmxlQWNjZXNzb3JzV29yaykgewogICBSZWNvcmRQcm9wZXJ0eSgi
a2V5IiwgInZhbHVlIik7CiB9CiAKK0Fzc2VydGlvblJlc3VsdCBJc051bGwoY29uc3QgY2hhciog
c3RyKSB7CisgIGlmIChzdHIgIT0gTlVMTCkgeworICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRp
b25GYWlsdXJlKCkgPDwgImFyZ3VtZW50IGlzICIgPDwgc3RyOworICB9CisgIHJldHVybiBBc3Nl
cnRpb25TdWNjZXNzKCk7Cit9CisKIFRFU1QoQXBpVGVzdCwgVGVzdENhc2VJbW11dGFibGVBY2Nl
c3NvcnNXb3JrKSB7CiAgIGNvbnN0IFRlc3RDYXNlKiB0ZXN0X2Nhc2UgPSBVbml0VGVzdEhlbHBl
cjo6RmluZFRlc3RDYXNlKCJBcGlUZXN0Iik7CiAgIEFTU0VSVF9UUlVFKHRlc3RfY2FzZSAhPSBO
VUxMKTsKIAogICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0X2Nhc2UtPm5hbWUoKSk7Ci0g
IEVYUEVDVF9TVFJFUSgiIiwgdGVzdF9jYXNlLT5jb21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJ
c051bGwodGVzdF9jYXNlLT50eXBlX3BhcmFtKCkpKTsKICAgRVhQRUNUX1RSVUUodGVzdF9jYXNl
LT5zaG91bGRfcnVuKCkpOwogICBFWFBFQ1RfRVEoMSwgdGVzdF9jYXNlLT5kaXNhYmxlZF90ZXN0
X2NvdW50KCkpOwogICBFWFBFQ1RfRVEoMywgdGVzdF9jYXNlLT50ZXN0X3RvX3J1bl9jb3VudCgp
KTsKQEAgLTE1OCwyNiArMTU4LDI2IEBAIFRFU1QoQXBpVGVzdCwgVGVzdENhc2VJbW11dGFibGVB
Y2Nlc3NvcnNXb3JrKSB7CiAKICAgRVhQRUNUX1NUUkVRKCJESVNBQkxFRF9EdW1teTEiLCB0ZXN0
c1swXS0+bmFtZSgpKTsKICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbMF0tPnRlc3Rf
Y2FzZV9uYW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzBdLT5jb21tZW50KCkpOwot
ICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzBdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgRVhQ
RUNUX1RSVUUoSXNOdWxsKHRlc3RzWzBdLT52YWx1ZV9wYXJhbSgpKSk7CisgIEVYUEVDVF9UUlVF
KElzTnVsbCh0ZXN0c1swXS0+dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVDVF9GQUxTRSh0ZXN0c1sw
XS0+c2hvdWxkX3J1bigpKTsKIAogICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlRGlzYWJsZWRBY2Nl
c3NvcnNXb3JrIiwgdGVzdHNbMV0tPm5hbWUoKSk7CiAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIs
IHRlc3RzWzFdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1sx
XS0+Y29tbWVudCgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1sxXS0+dGVzdF9jYXNlX2Nv
bW1lbnQoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1sxXS0+dmFsdWVfcGFyYW0oKSkp
OworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMV0tPnR5cGVfcGFyYW0oKSkpOwogICBFWFBF
Q1RfVFJVRSh0ZXN0c1sxXS0+c2hvdWxkX3J1bigpKTsKIAogICBFWFBFQ1RfU1RSRVEoIlRlc3RD
YXNlSW1tdXRhYmxlQWNjZXNzb3JzV29yayIsIHRlc3RzWzJdLT5uYW1lKCkpOwogICBFWFBFQ1Rf
U1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1syXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9T
VFJFUSgiIiwgdGVzdHNbMl0tPmNvbW1lbnQoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNb
Ml0tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMl0t
PnZhbHVlX3BhcmFtKCkpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzJdLT50eXBlX3Bh
cmFtKCkpKTsKICAgRVhQRUNUX1RSVUUodGVzdHNbMl0tPnNob3VsZF9ydW4oKSk7CiAKICAgRVhQ
RUNUX1NUUkVRKCJVbml0VGVzdEltbXV0YWJsZUFjY2Vzc29yc1dvcmsiLCB0ZXN0c1szXS0+bmFt
ZSgpKTsKICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbM10tPnRlc3RfY2FzZV9uYW1l
KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzNdLT5jb21tZW50KCkpOwotICBFWFBFQ1Rf
U1RSRVEoIiIsIHRlc3RzWzNdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgRVhQRUNUX1RSVUUo
SXNOdWxsKHRlc3RzWzNdLT52YWx1ZV9wYXJhbSgpKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0
ZXN0c1szXS0+dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVDVF9UUlVFKHRlc3RzWzNdLT5zaG91bGRf
cnVuKCkpOwogCiAgIGRlbGV0ZVtdIHRlc3RzOwpAQCAtMTg4LDcgKzE4OCw3IEBAIFRFU1QoQXBp
VGVzdCwgVGVzdENhc2VJbW11dGFibGVBY2Nlc3NvcnNXb3JrKSB7CiAgIEFTU0VSVF9UUlVFKHRl
c3RfY2FzZSAhPSBOVUxMKTsKIAogICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlV2l0aENvbW1lbnRU
ZXN0LzAiLCB0ZXN0X2Nhc2UtPm5hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUShHZXRFeHBlY3RlZFRl
c3RDYXNlQ29tbWVudCgpLmNfc3RyKCksIHRlc3RfY2FzZS0+Y29tbWVudCgpKTsKKyAgRVhQRUNU
X1NUUkVRKEdldFR5cGVOYW1lPGludD4oKS5jX3N0cigpLCB0ZXN0X2Nhc2UtPnR5cGVfcGFyYW0o
KSk7CiAgIEVYUEVDVF9UUlVFKHRlc3RfY2FzZS0+c2hvdWxkX3J1bigpKTsKICAgRVhQRUNUX0VR
KDAsIHRlc3RfY2FzZS0+ZGlzYWJsZWRfdGVzdF9jb3VudCgpKTsKICAgRVhQRUNUX0VRKDEsIHRl
c3RfY2FzZS0+dGVzdF90b19ydW5fY291bnQoKSk7CkBAIC0xOTgsOSArMTk4LDggQEAgVEVTVChB
cGlUZXN0LCBUZXN0Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dvcmspIHsKIAogICBFWFBFQ1RfU1RS
RVEoIkR1bW15IiwgdGVzdHNbMF0tPm5hbWUoKSk7CiAgIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VX
aXRoQ29tbWVudFRlc3QvMCIsIHRlc3RzWzBdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgRVhQRUNU
X1NUUkVRKCIiLCB0ZXN0c1swXS0+Y29tbWVudCgpKTsKLSAgRVhQRUNUX1NUUkVRKEdldEV4cGVj
dGVkVGVzdENhc2VDb21tZW50KCkuY19zdHIoKSwKLSAgICAgICAgICAgICAgIHRlc3RzWzBdLT50
ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzBdLT52YWx1
ZV9wYXJhbSgpKSk7CisgIEVYUEVDVF9TVFJFUShHZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIoKSwg
dGVzdHNbMF0tPnR5cGVfcGFyYW0oKSk7CiAgIEVYUEVDVF9UUlVFKHRlc3RzWzBdLT5zaG91bGRf
cnVuKCkpOwogCiAgIGRlbGV0ZVtdIHRlc3RzOwpAQCAtMjEyLDcgKzIxMSw3IEBAIFRFU1QoQXBp
VGVzdCwgVGVzdENhc2VEaXNhYmxlZEFjY2Vzc29yc1dvcmspIHsKICAgQVNTRVJUX1RSVUUodGVz
dF9jYXNlICE9IE5VTEwpOwogCiAgIEVYUEVDVF9TVFJFUSgiRElTQUJMRURfVGVzdCIsIHRlc3Rf
Y2FzZS0+bmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0X2Nhc2UtPmNvbW1lbnQoKSk7
CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0X2Nhc2UtPnR5cGVfcGFyYW0oKSkpOwogICBFWFBF
Q1RfRkFMU0UodGVzdF9jYXNlLT5zaG91bGRfcnVuKCkpOwogICBFWFBFQ1RfRVEoMSwgdGVzdF9j
YXNlLT5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOwogICBFWFBFQ1RfRVEoMCwgdGVzdF9jYXNlLT50
ZXN0X3RvX3J1bl9jb3VudCgpKTsKQEAgLTIyMSw4ICsyMjAsOCBAQCBURVNUKEFwaVRlc3QsIFRl
c3RDYXNlRGlzYWJsZWRBY2Nlc3NvcnNXb3JrKSB7CiAgIGNvbnN0IFRlc3RJbmZvKiBjb25zdCB0
ZXN0X2luZm8gPSB0ZXN0X2Nhc2UtPkdldFRlc3RJbmZvKDApOwogICBFWFBFQ1RfU1RSRVEoIkR1
bW15MiIsIHRlc3RfaW5mby0+bmFtZSgpKTsKICAgRVhQRUNUX1NUUkVRKCJESVNBQkxFRF9UZXN0
IiwgdGVzdF9pbmZvLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0
X2luZm8tPmNvbW1lbnQoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdF9pbmZvLT50ZXN0X2Nh
c2VfY29tbWVudCgpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfaW5mby0+dmFsdWVfcGFy
YW0oKSkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdF9pbmZvLT50eXBlX3BhcmFtKCkpKTsK
ICAgRVhQRUNUX0ZBTFNFKHRlc3RfaW5mby0+c2hvdWxkX3J1bigpKTsKIH0KIApAQCAtMjQ3LDcg
KzI0Niw3IEBAIGNsYXNzIEZpbmFsU3VjY2Vzc0NoZWNrZXIgOiBwdWJsaWMgRW52aXJvbm1lbnQg
ewogICAgIGNvbnN0IFRlc3RDYXNlKiogY29uc3QgdGVzdF9jYXNlcyA9IFVuaXRUZXN0SGVscGVy
OjpHZXRTb3J0ZWRUZXN0Q2FzZXMoKTsKIAogICAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRl
c3RfY2FzZXNbMF0tPm5hbWUoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0X2Nhc2VzWzBd
LT5jb21tZW50KCkpOworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0X2Nhc2VzWzBdLT50eXBl
X3BhcmFtKCkpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0X2Nhc2VzWzBdLT5zaG91bGRfcnVuKCkp
OwogICAgIEVYUEVDVF9FUSgxLCB0ZXN0X2Nhc2VzWzBdLT5kaXNhYmxlZF90ZXN0X2NvdW50KCkp
OwogICAgIEFTU0VSVF9FUSg0LCB0ZXN0X2Nhc2VzWzBdLT50b3RhbF90ZXN0X2NvdW50KCkpOwpA
QCAtMjU3LDcgKzI1Niw3IEBAIGNsYXNzIEZpbmFsU3VjY2Vzc0NoZWNrZXIgOiBwdWJsaWMgRW52
aXJvbm1lbnQgewogICAgIEVYUEVDVF9GQUxTRSh0ZXN0X2Nhc2VzWzBdLT5GYWlsZWQoKSk7CiAK
ICAgICBFWFBFQ1RfU1RSRVEoIkRJU0FCTEVEX1Rlc3QiLCB0ZXN0X2Nhc2VzWzFdLT5uYW1lKCkp
OwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdF9jYXNlc1sxXS0+Y29tbWVudCgpKTsKKyAgICBF
WFBFQ1RfVFJVRShJc051bGwodGVzdF9jYXNlc1sxXS0+dHlwZV9wYXJhbSgpKSk7CiAgICAgRVhQ
RUNUX0ZBTFNFKHRlc3RfY2FzZXNbMV0tPnNob3VsZF9ydW4oKSk7CiAgICAgRVhQRUNUX0VRKDEs
IHRlc3RfY2FzZXNbMV0tPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgICAgQVNTRVJUX0VRKDEs
IHRlc3RfY2FzZXNbMV0tPnRvdGFsX3Rlc3RfY291bnQoKSk7CkBAIC0yNjYsOCArMjY1LDcgQEAg
Y2xhc3MgRmluYWxTdWNjZXNzQ2hlY2tlciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7CiAKICNpZiBH
VEVTVF9IQVNfVFlQRURfVEVTVAogICAgIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VXaXRoQ29tbWVu
dFRlc3QvMCIsIHRlc3RfY2FzZXNbMl0tPm5hbWUoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKEdldEV4
cGVjdGVkVGVzdENhc2VDb21tZW50KCkuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgdGVzdF9j
YXNlc1syXS0+Y29tbWVudCgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoR2V0VHlwZU5hbWU8aW50Pigp
LmNfc3RyKCksIHRlc3RfY2FzZXNbMl0tPnR5cGVfcGFyYW0oKSk7CiAgICAgRVhQRUNUX1RSVUUo
dGVzdF9jYXNlc1syXS0+c2hvdWxkX3J1bigpKTsKICAgICBFWFBFQ1RfRVEoMCwgdGVzdF9jYXNl
c1syXS0+ZGlzYWJsZWRfdGVzdF9jb3VudCgpKTsKICAgICBBU1NFUlRfRVEoMSwgdGVzdF9jYXNl
c1syXS0+dG90YWxfdGVzdF9jb3VudCgpKTsKQEAgLTI4NSwyNCArMjgzLDI0IEBAIGNsYXNzIEZp
bmFsU3VjY2Vzc0NoZWNrZXIgOiBwdWJsaWMgRW52aXJvbm1lbnQgewogCiAgICAgRVhQRUNUX1NU
UkVRKCJUZXN0Q2FzZURpc2FibGVkQWNjZXNzb3JzV29yayIsIHRlc3RzWzFdLT5uYW1lKCkpOwog
ICAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzFdLT50ZXN0X2Nhc2VfbmFtZSgpKTsK
LSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzFdLT5jb21tZW50KCkpOwotICAgIEVYUEVDVF9T
VFJFUSgiIiwgdGVzdHNbMV0tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICAgIEVYUEVDVF9UUlVF
KElzTnVsbCh0ZXN0c1sxXS0+dmFsdWVfcGFyYW0oKSkpOworICAgIEVYUEVDVF9UUlVFKElzTnVs
bCh0ZXN0c1sxXS0+dHlwZV9wYXJhbSgpKSk7CiAgICAgRVhQRUNUX1RSVUUodGVzdHNbMV0tPnNo
b3VsZF9ydW4oKSk7CiAgICAgRVhQRUNUX1RSVUUodGVzdHNbMV0tPnJlc3VsdCgpLT5QYXNzZWQo
KSk7CiAgICAgRVhQRUNUX0VRKDAsIHRlc3RzWzFdLT5yZXN1bHQoKS0+dGVzdF9wcm9wZXJ0eV9j
b3VudCgpKTsKIAogICAgIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VJbW11dGFibGVBY2Nlc3NvcnNX
b3JrIiwgdGVzdHNbMl0tPm5hbWUoKSk7CiAgICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVz
dHNbMl0tPnRlc3RfY2FzZV9uYW1lKCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMl0t
PmNvbW1lbnQoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1syXS0+dGVzdF9jYXNlX2Nv
bW1lbnQoKSk7CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzJdLT52YWx1ZV9wYXJhbSgp
KSk7CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzJdLT50eXBlX3BhcmFtKCkpKTsKICAg
ICBFWFBFQ1RfVFJVRSh0ZXN0c1syXS0+c2hvdWxkX3J1bigpKTsKICAgICBFWFBFQ1RfVFJVRSh0
ZXN0c1syXS0+cmVzdWx0KCktPlBhc3NlZCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgdGVzdHNbMl0t
PnJlc3VsdCgpLT50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwogCiAgICAgRVhQRUNUX1NUUkVRKCJV
bml0VGVzdEltbXV0YWJsZUFjY2Vzc29yc1dvcmsiLCB0ZXN0c1szXS0+bmFtZSgpKTsKICAgICBF
WFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1szXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gICAg
RVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1szXS0+Y29tbWVudCgpKTsKLSAgICBFWFBFQ1RfU1RSRVEo
IiIsIHRlc3RzWzNdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051
bGwodGVzdHNbM10tPnZhbHVlX3BhcmFtKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVz
dHNbM10tPnR5cGVfcGFyYW0oKSkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzNdLT5zaG91bGRf
cnVuKCkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzNdLT5yZXN1bHQoKS0+UGFzc2VkKCkpOwog
ICAgIEVYUEVDVF9FUSgxLCB0ZXN0c1szXS0+cmVzdWx0KCktPnRlc3RfcHJvcGVydHlfY291bnQo
KSk7CkBAIC0zMTgsOSArMzE2LDggQEAgY2xhc3MgRmluYWxTdWNjZXNzQ2hlY2tlciA6IHB1Ymxp
YyBFbnZpcm9ubWVudCB7CiAKICAgICBFWFBFQ1RfU1RSRVEoIkR1bW15IiwgdGVzdHNbMF0tPm5h
bWUoKSk7CiAgICAgRVhQRUNUX1NUUkVRKCJUZXN0Q2FzZVdpdGhDb21tZW50VGVzdC8wIiwgdGVz
dHNbMF0tPnRlc3RfY2FzZV9uYW1lKCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMF0t
PmNvbW1lbnQoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKEdldEV4cGVjdGVkVGVzdENhc2VDb21tZW50
KCkuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgdGVzdHNbMF0tPnRlc3RfY2FzZV9jb21tZW50
KCkpOworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1swXS0+dmFsdWVfcGFyYW0oKSkpOwor
ICAgIEVYUEVDVF9TVFJFUShHZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIoKSwgdGVzdHNbMF0tPnR5
cGVfcGFyYW0oKSk7CiAgICAgRVhQRUNUX1RSVUUodGVzdHNbMF0tPnNob3VsZF9ydW4oKSk7CiAg
ICAgRVhQRUNUX1RSVUUodGVzdHNbMF0tPnJlc3VsdCgpLT5QYXNzZWQoKSk7CiAgICAgRVhQRUNU
X0VRKDAsIHRlc3RzWzBdLT5yZXN1bHQoKS0+dGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYWxsX3Rlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2FsbF90ZXN0LmNjCmluZGV4IGUxZWRi
MDhlMzNhMThjMjM5MTE1ZGFkNWU0YTBkNmZiNjMyZGJiMTcuLmU2MWUzNmIxZGZlOGRhMDMwMTZh
ZjU3ODU1YjJjNzgxZWU3ZDkxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfYWxsX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF9hbGxfdGVzdC5jYwpAQCAtMjYsMjMgKzI2LDIxIEBACiAvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKIC8vCi0vLyBBdXRob3I6IHdhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGVzdHMgZm9yIEdvb2dsZSBDKysgVGVzdGlu
ZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gVGVzdHMgZm9yIEdvb2dsZSBDKysgVGVzdGlu
ZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogLy8KIC8vIFNvbWV0aW1lcyBp
dCdzIGRlc2lyYWJsZSB0byBidWlsZCBtb3N0IG9mIEdvb2dsZSBUZXN0J3Mgb3duIHRlc3RzCiAv
LyBieSBjb21waWxpbmcgYSBzaW5nbGUgZmlsZS4gIFRoaXMgZmlsZSBzZXJ2ZXMgdGhpcyBwdXJw
b3NlLgotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtZmlsZXBhdGhfdGVzdC5jYyIKLSNpbmNsdWRlICJ0
ZXN0L2d0ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYyIKLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LW1lc3Nh
Z2VfdGVzdC5jYyIKLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LW9wdGlvbnNfdGVzdC5jYyIKLSNpbmNs
dWRlICJ0ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYyIKKyNpbmNsdWRlICJ0ZXN0L2dvb2dsZXRlc3Qt
ZmlsZXBhdGgtdGVzdC5jYyIKKyNpbmNsdWRlICJ0ZXN0L2dvb2dsZXRlc3QtbGlua2VkLXB0ci10
ZXN0LmNjIgorI2luY2x1ZGUgInRlc3QvZ29vZ2xldGVzdC1tZXNzYWdlLXRlc3QuY2MiCisjaW5j
bHVkZSAidGVzdC9nb29nbGV0ZXN0LW9wdGlvbnMtdGVzdC5jYyIKKyNpbmNsdWRlICJ0ZXN0L2dv
b2dsZXRlc3QtcG9ydC10ZXN0LmNjIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3RfcHJlZF9pbXBsX3Vu
aXR0ZXN0LmNjIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3RfcHJvZF90ZXN0LmNjIgotI2luY2x1ZGUg
InRlc3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2MiCisjaW5jbHVkZSAidGVzdC9nb29nbGV0ZXN0
LXRlc3QtcGFydC10ZXN0LmNjIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0
LmNjIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYyIKICNpbmNsdWRl
ICJ0ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjIgogI2luY2x1ZGUgInRlc3QvcHJvZHVjdGlvbi5jYyIK
LSNpbmNsdWRlICJzcmMvZ3Rlc3RfbWFpbi5jYyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYXNzZXJ0X2J5X2V4Y2VwdGlvbl90ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9hc3NlcnRfYnlfZXhjZXB0aW9uX3Rlc3QuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGVhZTg1NzVmM2ZlZTMwYmFjNjQyYmExNTg5ZmYyMzRkMDdmOTQ1NAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYXNzZXJ0
X2J5X2V4Y2VwdGlvbl90ZXN0LmNjCkBAIC0wLDAgKzEsMTE4IEBACisvLyBDb3B5cmlnaHQgMjAw
OSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gVGVzdHMgR29vZ2xlIFRlc3QncyBh
c3NlcnQtYnktZXhjZXB0aW9uIG1vZGUgd2l0aCBleGNlcHRpb25zIGVuYWJsZWQuCisKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3Rk
aW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRleGNlcHQ+CisKK2NsYXNz
IFRocm93TGlzdGVuZXIgOiBwdWJsaWMgdGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7
CisgIHZvaWQgT25UZXN0UGFydFJlc3VsdChjb25zdCB0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdCYg
cmVzdWx0KSBvdmVycmlkZSB7CisgICAgaWYgKHJlc3VsdC50eXBlKCkgPT0gdGVzdGluZzo6VGVz
dFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUpIHsKKyAgICAgIHRocm93IHRlc3Rpbmc6OkFzc2Vy
dGlvbkV4Y2VwdGlvbihyZXN1bHQpOworICAgIH0KKyAgfQorfTsKKworLy8gUHJpbnRzIHRoZSBn
aXZlbiBmYWlsdXJlIG1lc3NhZ2UgYW5kIGV4aXRzIHRoZSBwcm9ncmFtIHdpdGgKKy8vIG5vbi16
ZXJvLiAgV2UgdXNlIHRoaXMgaW5zdGVhZCBvZiBhIEdvb2dsZSBUZXN0IGFzc2VydGlvbiB0bwor
Ly8gaW5kaWNhdGUgYSBmYWlsdXJlLCBhcyB0aGUgbGF0dGVyIGlzIGJlZW4gdGVzdGVkIGFuZCBj
YW5ub3QgYmUKKy8vIHJlbGllZCBvbi4KK3ZvaWQgRmFpbChjb25zdCBjaGFyKiBtc2cpIHsKKyAg
cHJpbnRmKCJGQUlMVVJFOiAlc1xuIiwgbXNnKTsKKyAgZmZsdXNoKHN0ZG91dCk7CisgIGV4aXQo
MSk7Cit9CisKK3N0YXRpYyB2b2lkIEFzc2VydEZhbHNlKCkgeworICBBU1NFUlRfRVEoMiwgMykg
PDwgIkV4cGVjdGVkIGZhaWx1cmUiOworfQorCisvLyBUZXN0cyB0aGF0IGFuIGFzc2VydGlvbiBm
YWlsdXJlIHRocm93cyBhIHN1YmNsYXNzIG9mCisvLyBzdGQ6OnJ1bnRpbWVfZXJyb3IuCitURVNU
KFRlc3QsIFRlc3QpIHsKKyAgLy8gQSBzdWNjZXNzZnVsIGFzc2VydGlvbiBzaG91bGRuJ3QgdGhy
b3cuCisgIHRyeSB7CisgICAgRVhQRUNUX0VRKDMsIDMpOworICB9IGNhdGNoKC4uLikgeworICAg
IEZhaWwoIkEgc3VjY2Vzc2Z1bCBhc3NlcnRpb24gd3JvbmdmdWxseSB0aHJldy4iKTsKKyAgfQor
CisgIC8vIEEgc3VjY2Vzc2Z1bCBhc3NlcnRpb24gc2hvdWxkbid0IHRocm93LgorICB0cnkgewor
ICAgIEVYUEVDVF9FUSgzLCA0KTsKKyAgfSBjYXRjaCguLi4pIHsKKyAgICBGYWlsKCJBIGZhaWxl
ZCBub24tZmF0YWwgYXNzZXJ0aW9uIHdyb25nZnVsbHkgdGhyZXcuIik7CisgIH0KKworICAvLyBB
IGZhaWxlZCBhc3NlcnRpb24gc2hvdWxkIHRocm93LgorICB0cnkgeworICAgIEFzc2VydEZhbHNl
KCk7CisgIH0gY2F0Y2goY29uc3QgdGVzdGluZzo6QXNzZXJ0aW9uRXhjZXB0aW9uJiBlKSB7Cisg
ICAgaWYgKHN0cnN0cihlLndoYXQoKSwgIkV4cGVjdGVkIGZhaWx1cmUiKSAhPSBOVUxMKQorICAg
ICAgdGhyb3c7CisKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkEgZmFpbGVkIGFzc2Vy
dGlvbiBkaWQgdGhyb3cgYW4gZXhjZXB0aW9uIG9mIHRoZSByaWdodCB0eXBlLCAiCisgICAgICAg
ICAgICJidXQgdGhlIG1lc3NhZ2UgaXMgaW5jb3JyZWN0LiAgSW5zdGVhZCBvZiBjb250YWluaW5n
IFwiRXhwZWN0ZWQgIgorICAgICAgICAgICAiZmFpbHVyZVwiLCBpdCBpczpcbiIpOworICAgIEZh
aWwoZS53aGF0KCkpOworICB9IGNhdGNoKC4uLikgeworICAgIEZhaWwoIkEgZmFpbGVkIGFzc2Vy
dGlvbiB0aHJldyB0aGUgd3JvbmcgdHlwZSBvZiBleGNlcHRpb24uIik7CisgIH0KKyAgRmFpbCgi
QSBmYWlsZWQgYXNzZXJ0aW9uIHNob3VsZCd2ZSB0aHJvd24gYnV0IGRpZG4ndC4iKTsKK30KKwor
aW50IGtUZXN0Rm9yQ29udGludWluZ1Rlc3QgPSAwOworCitURVNUKFRlc3QsIFRlc3QyKSB7Cisg
IC8vIEZJWE1FOiBob3cgdG8gZm9yY2UgVGVzdDIgdG8gYmUgYWZ0ZXIgVGVzdD8KKyAga1Rlc3RG
b3JDb250aW51aW5nVGVzdCA9IDE7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJn
dikgeworICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIHRlc3Rpbmc6
OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKS5BcHBlbmQobmV3IFRocm93TGlz
dGVuZXIpOworCisgIGludCByZXN1bHQgPSBSVU5fQUxMX1RFU1RTKCk7CisgIGlmIChyZXN1bHQg
PT0gMCkgeworICAgIHByaW50ZigiUlVOX0FMTF9URVNUUyByZXR1cm5lZCAlZFxuIiwgcmVzdWx0
KTsKKyAgICBGYWlsKCJFeHBlY3RlZCBmYWlsdXJlIGluc3RlYWQuIik7CisgIH0KKworICBpZiAo
a1Rlc3RGb3JDb250aW51aW5nVGVzdCA9PSAwKSB7CisgICAgRmFpbCgiU2hvdWxkIGhhdmUgY29u
dGludWVkIHdpdGggb3RoZXIgdGVzdHMsIGJ1dCBkaWQgbm90LiIpOworICB9CisgIHJldHVybiAw
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9icmVh
a19vbl9mYWlsdXJlX3VuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1
NQppbmRleCBjODE5MTgzMzEyMjc1ZGVjYTA1Yzc2MzE4NjA0MDQ3MWJmZjQ5ZjMzLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdC5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDIxOCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJp
Z2h0IDIwMDYsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi0iIiJVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgYnJlYWstb24tZmFpbHVy
ZSBtb2RlLgotCi1BIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBzZWctZmF1bHQgd2hlbiBh
biBhc3NlcnRpb24gZmFpbHMsIHVzaW5nCi1laXRoZXIgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxV
UkUgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCi0tLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUg
ZmxhZy4gIFRoaXMgc2NyaXB0IHRlc3RzIHN1Y2ggZnVuY3Rpb25hbGl0eQotYnkgaW52b2tpbmcg
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8gKGEgcHJvZ3JhbSB3cml0dGVuIHdpdGgK
LUdvb2dsZSBUZXN0KSB3aXRoIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgYW5kIGNvbW1hbmQgbGlu
ZSBmbGFncy4KLSIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBX
YW4pJwotCi1pbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0K
LQotIyBDb25zdGFudHMuCi0KLUlTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdudCcKLQotIyBUaGUg
ZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgYnJlYWstb24t
ZmFpbHVyZSBtb2RlLgotQlJFQUtfT05fRkFJTFVSRV9FTlZfVkFSID0gJ0dURVNUX0JSRUFLX09O
X0ZBSUxVUkUnCi0KLSMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciBlbmFibGluZy9kaXNhYmxp
bmcgdGhlIGJyZWFrLW9uLWZhaWx1cmUgbW9kZS4KLUJSRUFLX09OX0ZBSUxVUkVfRkxBRyA9ICdn
dGVzdF9icmVha19vbl9mYWlsdXJlJwotCi0jIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3Ig
ZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUuCi1USFJPV19PTl9G
QUlMVVJFX0VOVl9WQVIgPSAnR1RFU1RfVEhST1dfT05fRkFJTFVSRScKLQotIyBUaGUgZW52aXJv
bm1lbnQgdmFyaWFibGUgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgY2F0Y2gtZXhjZXB0aW9u
cyBtb2RlLgotQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSID0gJ0dURVNUX0NBVENIX0VYQ0VQVElP
TlMnCi0KLSMgUGF0aCB0byB0aGUgZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8gcHJv
Z3JhbS4KLUVYRV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgo
Ci0gICAgJ2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfJykKLQotCi0jIFV0aWxpdGll
cy4KLQotCi1lbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkKLQotCi1kZWYgU2V0RW52VmFyKGVu
dl92YXIsIHZhbHVlKToKLSAgIiIiU2V0cyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIGdp
dmVuIHZhbHVlOyB1bnNldHMgaXQgd2hlbiB0aGUKLSAgZ2l2ZW4gdmFsdWUgaXMgTm9uZS4KLSAg
IiIiCi0KLSAgaWYgdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgZW52aXJvbltlbnZfdmFyXSA9IHZh
bHVlCi0gIGVsaWYgZW52X3ZhciBpbiBlbnZpcm9uOgotICAgIGRlbCBlbnZpcm9uW2Vudl92YXJd
Ci0KLQotZGVmIFJ1bihjb21tYW5kKToKLSAgIiIiUnVucyBhIGNvbW1hbmQ7IHJldHVybnMgMSBp
ZiBpdCB3YXMga2lsbGVkIGJ5IGEgc2lnbmFsLCBvciAwIG90aGVyd2lzZS4iIiIKLQotICBwID0g
Z3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQsIGVudj1lbnZpcm9uKQotICBpZiBw
LnRlcm1pbmF0ZWRfYnlfc2lnbmFsOgotICAgIHJldHVybiAxCi0gIGVsc2U6Ci0gICAgcmV0dXJu
IDAKLQotCi0jIFRoZSB0ZXN0cy4KLQotCi1jbGFzcyBHVGVzdEJyZWFrT25GYWlsdXJlVW5pdFRl
c3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gICIiIlRlc3RzIHVzaW5nIHRoZSBHVEVT
VF9CUkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlhYmxlIG9yCi0gIHRoZSAtLWd0ZXN0
X2JyZWFrX29uX2ZhaWx1cmUgZmxhZyB0byB0dXJuIGFzc2VydGlvbiBmYWlsdXJlcyBpbnRvCi0g
IHNlZ21lbnRhdGlvbiBmYXVsdHMuCi0gICIiIgotCi0gIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwg
ZW52X3Zhcl92YWx1ZSwgZmxhZ192YWx1ZSwgZXhwZWN0X3NlZ19mYXVsdCk6Ci0gICAgIiIiUnVu
cyBndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0XyBhbmQgdmVyaWZpZXMgdGhhdCBpdCBk
b2VzCi0gICAgKG9yIGRvZXMgbm90KSBoYXZlIGEgc2VnLWZhdWx0LgotCi0gICAgQXJnczoKLSAg
ICAgIGVudl92YXJfdmFsdWU6ICAgIHZhbHVlIG9mIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJF
IGVudmlyb25tZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZTsgTm9uZSBpZiB0
aGUgdmFyaWFibGUgc2hvdWxkIGJlIHVuc2V0LgotICAgICAgZmxhZ192YWx1ZTogICAgICAgdmFs
dWUgb2YgdGhlIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnOwotICAgICAgICAgICAgICAg
ICAgICAgICAgTm9uZSBpZiB0aGUgZmxhZyBzaG91bGQgbm90IGJlIHByZXNlbnQuCi0gICAgICBl
eHBlY3Rfc2VnX2ZhdWx0OiAxIGlmIHRoZSBwcm9ncmFtIGlzIGV4cGVjdGVkIHRvIGdlbmVyYXRl
IGEgc2VnLWZhdWx0OwotICAgICAgICAgICAgICAgICAgICAgICAgMCBvdGhlcndpc2UuCi0gICAg
IiIiCi0KLSAgICBTZXRFbnZWYXIoQlJFQUtfT05fRkFJTFVSRV9FTlZfVkFSLCBlbnZfdmFyX3Zh
bHVlKQotCi0gICAgaWYgZW52X3Zhcl92YWx1ZSBpcyBOb25lOgotICAgICAgZW52X3Zhcl92YWx1
ZV9tc2cgPSAnIGlzIG5vdCBzZXQnCi0gICAgZWxzZToKLSAgICAgIGVudl92YXJfdmFsdWVfbXNn
ID0gJz0nICsgZW52X3Zhcl92YWx1ZQotCi0gICAgaWYgZmxhZ192YWx1ZSBpcyBOb25lOgotICAg
ICAgZmxhZyA9ICcnCi0gICAgZWxpZiBmbGFnX3ZhbHVlID09ICcwJzoKLSAgICAgIGZsYWcgPSAn
LS0lcz0wJyAlIEJSRUFLX09OX0ZBSUxVUkVfRkxBRwotICAgIGVsc2U6Ci0gICAgICBmbGFnID0g
Jy0tJXMnICUgQlJFQUtfT05fRkFJTFVSRV9GTEFHCi0KLSAgICBjb21tYW5kID0gW0VYRV9QQVRI
XQotICAgIGlmIGZsYWc6Ci0gICAgICBjb21tYW5kLmFwcGVuZChmbGFnKQotCi0gICAgaWYgZXhw
ZWN0X3NlZ19mYXVsdDoKLSAgICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxkJwotICAgIGVsc2U6
Ci0gICAgICBzaG91bGRfb3Jfbm90ID0gJ3Nob3VsZCBub3QnCi0KLSAgICBoYXNfc2VnX2ZhdWx0
ID0gUnVuKGNvbW1hbmQpCi0KLSAgICBTZXRFbnZWYXIoQlJFQUtfT05fRkFJTFVSRV9FTlZfVkFS
LCBOb25lKQotCi0gICAgbXNnID0gKCd3aGVuICVzJXMsIGFuIGFzc2VydGlvbiBmYWlsdXJlIGlu
ICIlcyIgJXMgY2F1c2UgYSBzZWctZmF1bHQuJyAlCi0gICAgICAgICAgIChCUkVBS19PTl9GQUlM
VVJFX0VOVl9WQVIsIGVudl92YXJfdmFsdWVfbXNnLCAnICcuam9pbihjb21tYW5kKSwKLSAgICAg
ICAgICAgIHNob3VsZF9vcl9ub3QpKQotICAgIHNlbGYuYXNzZXJ0XyhoYXNfc2VnX2ZhdWx0ID09
IGV4cGVjdF9zZWdfZmF1bHQsIG1zZykKLQotICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcihzZWxm
KToKLSAgICAiIiJUZXN0cyB0aGUgYmVoYXZpb3Igb2YgdGhlIGRlZmF1bHQgbW9kZS4iIiIKLQot
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKLSAgICAgICAgICAgICAg
ICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3Nl
Z19mYXVsdD0wKQotCi0gIGRlZiB0ZXN0RW52VmFyKHNlbGYpOgotICAgICIiIlRlc3RzIHVzaW5n
IHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlhYmxlLiIiIgotCi0g
ICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgZmxhZ192YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdf
ZmF1bHQ9MCkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAg
ICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0X3NlZ19mYXVsdD0xKQotCi0gIGRlZiB0ZXN0RmxhZyhzZWxmKToKLSAgICAiIiJUZXN0
cyB1c2luZyB0aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWcuIiIiCi0KLSAgICBzZWxm
LlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAg
ZmxhZ192YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0w
KQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKLSAgICAgICAgICAg
ICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rf
c2VnX2ZhdWx0PTEpCi0KLSAgZGVmIHRlc3RGbGFnT3ZlcnJpZGVzRW52VmFyKHNlbGYpOgotICAg
ICIiIlRlc3RzIHRoYXQgdGhlIGZsYWcgb3ZlcnJpZGVzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJs
ZS4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAotICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIGV4
cGVjdF9zZWdfZmF1bHQ9MCkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScw
JywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAg
ICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zh
cl92YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0wKQotICAgIHNlbGYuUnVuQW5kVmVy
aWZ5KGVudl92YXJfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9
JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKLQotICBkZWYg
dGVzdEJyZWFrT25GYWlsdXJlT3ZlcnJpZGVzVGhyb3dPbkZhaWx1cmUoc2VsZik6Ci0gICAgIiIi
VGVzdHMgdGhhdCBndGVzdF9icmVha19vbl9mYWlsdXJlIG92ZXJyaWRlcyBndGVzdF90aHJvd19v
bl9mYWlsdXJlLiIiIgotCi0gICAgU2V0RW52VmFyKFRIUk9XX09OX0ZBSUxVUkVfRU5WX1ZBUiwg
JzEnKQotICAgIHRyeToKLSAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9u
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0xKQotICAgIGZpbmFsbHk6Ci0gICAgICBTZXRF
bnZWYXIoVEhST1dfT05fRkFJTFVSRV9FTlZfVkFSLCBOb25lKQotCi0gIGlmIElTX1dJTkRPV1M6
Ci0gICAgZGVmIHRlc3RDYXRjaEV4Y2VwdGlvbnNEb2VzTm90SW50ZXJmZXJlKHNlbGYpOgotICAg
ICAgIiIiVGVzdHMgdGhhdCBndGVzdF9jYXRjaF9leGNlcHRpb25zIGRvZXNuJ3QgaW50ZXJmZXJl
LiIiIgotCi0gICAgICBTZXRFbnZWYXIoQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSLCAnMScpCi0g
ICAgICB0cnk6Ci0gICAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0xKQotICAgICAgZmluYWxseToKLSAgICAgICAg
U2V0RW52VmFyKENBVENIX0VYQ0VQVElPTlNfRU5WX1ZBUiwgTm9uZSkKLQotCi1pZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgotICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0
ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFp
bHVyZV91bml0dGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyOGQxZDNk
YWQ0NmI4ZmRmM2MzNDA5NjdkYmZjYTg1MmY1OWU0YTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0Xy5jYworKysgL2Rldi9udWxsCkBAIC0xLDg2ICsw
LDAgQEAKLS8vIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0v
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0v
LyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIFVuaXQgdGVzdCBm
b3IgR29vZ2xlIFRlc3QncyBicmVhay1vbi1mYWlsdXJlIG1vZGUuCi0vLwotLy8gQSB1c2VyIGNh
biBhc2sgR29vZ2xlIFRlc3QgdG8gc2VnLWZhdWx0IHdoZW4gYW4gYXNzZXJ0aW9uIGZhaWxzLCB1
c2luZwotLy8gZWl0aGVyIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50IHZh
cmlhYmxlIG9yIHRoZQotLy8gLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWcuICBUaGlzIGZp
bGUgaXMgdXNlZCBmb3IgdGVzdGluZyBzdWNoCi0vLyBmdW5jdGlvbmFsaXR5LgotLy8KLS8vIFRo
aXMgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRlc3QuICBJdCBp
cwotLy8gZXhwZWN0ZWQgdG8gZmFpbC4gIERvbid0IHJ1biBpdCBkaXJlY3RseS4KLQotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0jaW5jbHVkZSA8d2lu
ZG93cy5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSB7Ci0KLS8v
IEEgdGVzdCB0aGF0J3MgZXhwZWN0ZWQgdG8gZmFpbC4KLVRFU1QoRm9vLCBCYXIpIHsKLSAgRVhQ
RUNUX0VRKDIsIDMpOwotfQotCi0jaWYgR1RFU1RfSEFTX1NFSCAmJiAhR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKLS8vIE9uIFdpbmRvd3MgTW9iaWxlIGdsb2JhbCBleGNlcHRpb24gaGFuZGxlcnMg
YXJlIG5vdCBzdXBwb3J0ZWQuCi1MT05HIFdJTkFQSSBFeGl0V2l0aEV4Y2VwdGlvbkNvZGUoCi0g
ICAgc3RydWN0IF9FWENFUFRJT05fUE9JTlRFUlMqIGV4Y2VwdGlvbl9wb2ludGVycykgewotICBl
eGl0KGV4Y2VwdGlvbl9wb2ludGVycy0+RXhjZXB0aW9uUmVjb3JkLT5FeGNlcHRpb25Db2RlKTsK
LX0KLSNlbmRpZgotCi19ICAvLyBuYW1lc3BhY2UKLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg
Kiphcmd2KSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICAvLyBTdXBwcmVzc2VzIGRpc3BsYXkg
b2YgdGhlIFdpbmRvd3MgZXJyb3IgZGlhbG9nIHVwb24gZW5jb3VudGVyaW5nCi0gIC8vIGEgZ2Vu
ZXJhbCBwcm90ZWN0aW9uIGZhdWx0IChzZWdtZW50IHZpb2xhdGlvbikuCi0gIFNldEVycm9yTW9k
ZShTRU1fTk9HUEZBVUxURVJST1JCT1ggfCBTRU1fRkFJTENSSVRJQ0FMRVJST1JTKTsKLQotI2lm
ICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotICAvLyBUaGUgZGVmYXVsdCB1bmhhbmRsZWQgZXhj
ZXB0aW9uIGZpbHRlciBkb2VzIG5vdCBhbHdheXMgZXhpdAotICAvLyB3aXRoIHRoZSBleGNlcHRp
b24gY29kZSBhcyBleGl0IGNvZGUgLSBmb3IgZXhhbXBsZSBpdCBleGl0cyB3aXRoCi0gIC8vIDAg
Zm9yIEVYQ0VQVElPTl9BQ0NFU1NfVklPTEFUSU9OIGFuZCAxIGZvciBFWENFUFRJT05fQlJFQUtQ
T0lOVAotICAvLyBpZiB0aGUgYXBwbGljYXRpb24gaXMgY29tcGlsZWQgaW4gZGVidWcgbW9kZS4g
VGh1cyB3ZSB1c2Ugb3VyIG93bgotICAvLyBmaWx0ZXIgd2hpY2ggYWx3YXlzIGV4aXRzIHdpdGgg
dGhlIGV4Y2VwdGlvbiBjb2RlIGZvciB1bmhhbmRsZWQKLSAgLy8gZXhjZXB0aW9ucy4KLSAgU2V0
VW5oYW5kbGVkRXhjZXB0aW9uRmlsdGVyKEV4aXRXaXRoRXhjZXB0aW9uQ29kZSk7Ci0jZW5kaWYK
LSNlbmRpZgotCi0gIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICBy
ZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBk
MDJhNTNlZDg1N2M3NGM4MDBiY2NkNjdiYzQxOGE1MWEwOWQ2OTM3Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfY29sb3JfdGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi0j
IS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0j
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0j
IG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJWZXJpZmllcyB0
aGF0IEdvb2dsZSBUZXN0IGNvcnJlY3RseSBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlIGNvbG9y
cy4iIiIKLQotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQot
aW1wb3J0IG9zCi1pbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwotCi0KLUlTX1dJTkRPV1MgPSBvcy5u
YW1lID0gJ250JwotCi1DT0xPUl9FTlZfVkFSID0gJ0dURVNUX0NPTE9SJwotQ09MT1JfRkxBRyA9
ICdndGVzdF9jb2xvcicKLUNPTU1BTkQgPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRh
YmxlUGF0aCgnZ3Rlc3RfY29sb3JfdGVzdF8nKQotCi0KLWRlZiBTZXRFbnZWYXIoZW52X3Zhciwg
dmFsdWUpOgotICAiIiJTZXRzIHRoZSBlbnYgdmFyaWFibGUgdG8gJ3ZhbHVlJzsgdW5zZXRzIGl0
IHdoZW4gJ3ZhbHVlJyBpcyBOb25lLiIiIgotCi0gIGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAg
IG9zLmVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQotICBlbGlmIGVudl92YXIgaW4gb3MuZW52aXJv
bjoKLSAgICBkZWwgb3MuZW52aXJvbltlbnZfdmFyXQotCi0KLWRlZiBVc2VzQ29sb3IodGVybSwg
Y29sb3JfZW52X3ZhciwgY29sb3JfZmxhZyk6Ci0gICIiIlJ1bnMgZ3Rlc3RfY29sb3JfdGVzdF8g
YW5kIHJldHVybnMgaXRzIGV4aXQgY29kZS4iIiIKLQotICBTZXRFbnZWYXIoJ1RFUk0nLCB0ZXJt
KQotICBTZXRFbnZWYXIoQ09MT1JfRU5WX1ZBUiwgY29sb3JfZW52X3ZhcikKLQotICBpZiBjb2xv
cl9mbGFnIGlzIE5vbmU6Ci0gICAgYXJncyA9IFtdCi0gIGVsc2U6Ci0gICAgYXJncyA9IFsnLS0l
cz0lcycgJSAoQ09MT1JfRkxBRywgY29sb3JfZmxhZyldCi0gIHAgPSBndGVzdF90ZXN0X3V0aWxz
LlN1YnByb2Nlc3MoW0NPTU1BTkRdICsgYXJncykKLSAgcmV0dXJuIG5vdCBwLmV4aXRlZCBvciBw
LmV4aXRfY29kZQotCi0KLWNsYXNzIEdUZXN0Q29sb3JUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVz
dENhc2UpOgotICBkZWYgdGVzdE5vRW52VmFyTm9GbGFnKHNlbGYpOgotICAgICIiIlRlc3RzIHRo
ZSBjYXNlIHdoZW4gdGhlcmUncyBuZWl0aGVyIEdURVNUX0NPTE9SIG5vciAtLWd0ZXN0X2NvbG9y
LiIiIgotCi0gICAgaWYgbm90IElTX1dJTkRPV1M6Ci0gICAgICBzZWxmLmFzc2VydF8obm90IFVz
ZXNDb2xvcignZHVtYicsIE5vbmUsIE5vbmUpKQotICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2Vz
Q29sb3IoJ2VtYWNzJywgTm9uZSwgTm9uZSkpCi0gICAgICBzZWxmLmFzc2VydF8obm90IFVzZXND
b2xvcigneHRlcm0tbW9ubycsIE5vbmUsIE5vbmUpKQotICAgICAgc2VsZi5hc3NlcnRfKG5vdCBV
c2VzQ29sb3IoJ3Vua25vd24nLCBOb25lLCBOb25lKSkKLSAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qg
VXNlc0NvbG9yKE5vbmUsIE5vbmUsIE5vbmUpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3Io
J2xpbnV4JywgTm9uZSwgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignY3lnd2lu
JywgTm9uZSwgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0nLCBOb25l
LCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsIE5vbmUs
IE5vbmUpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLTI1NmNvbG9yJywgTm9u
ZSwgTm9uZSkpCi0KLSAgZGVmIHRlc3RGbGFnT25seShzZWxmKToKLSAgICAiIiJUZXN0cyB0aGUg
Y2FzZSB3aGVuIHRoZXJlJ3MgLS1ndGVzdF9jb2xvciBidXQgbm90IEdURVNUX0NPTE9SLiIiIgot
Ci0gICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAnbm8nKSkKLSAg
ICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0tY29sb3InLCBOb25lLCAnbm8nKSkK
LSAgICBpZiBub3QgSVNfV0lORE9XUzoKLSAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9y
KCdlbWFjcycsIE5vbmUsICdhdXRvJykpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRl
cm0nLCBOb25lLCAnYXV0bycpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCBO
b25lLCAneWVzJykpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0nLCBOb25lLCAn
eWVzJykpCi0KLSAgZGVmIHRlc3RFbnZWYXJPbmx5KHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBj
YXNlIHdoZW4gdGhlcmUncyBHVEVTVF9DT0xPUiBidXQgbm90IC0tZ3Rlc3RfY29sb3IuIiIiCi0K
LSAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcignZHVtYicsICdubycsIE5vbmUpKQotICAg
IHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsICdubycsIE5vbmUpKQot
ICAgIGlmIG5vdCBJU19XSU5ET1dTOgotICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3Io
J2R1bWInLCAnYXV0bycsIE5vbmUpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJt
LWNvbG9yJywgJ2F1dG8nLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1i
JywgJ3llcycsIE5vbmUpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9y
JywgJ3llcycsIE5vbmUpKQotCi0gIGRlZiB0ZXN0RW52VmFyQW5kRmxhZyhzZWxmKToKLSAgICAi
IiJUZXN0cyB0aGUgY2FzZSB3aGVuIHRoZXJlIGFyZSBib3RoIEdURVNUX0NPTE9SIGFuZCAtLWd0
ZXN0X2NvbG9yLiIiIgotCi0gICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtLWNv
bG9yJywgJ25vJywgJ25vJykpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsICdu
bycsICd5ZXMnKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsICdu
bycsICdhdXRvJykpCi0KLSAgZGVmIHRlc3RBbGlhc2VzT2ZZZXNBbmRObyhzZWxmKToKLSAgICAi
IiJUZXN0cyB1c2luZyBhbGlhc2VzIGluIHNwZWNpZnlpbmcgLS1ndGVzdF9jb2xvci4iIiIKLQot
ICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAndHJ1ZScpKQotICAgIHNl
bGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAnWUVTJykpCi0gICAgc2VsZi5hc3Nl
cnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUsICdUJykpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXND
b2xvcignZHVtYicsIE5vbmUsICcxJykpCi0KLSAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xv
cigneHRlcm0nLCBOb25lLCAnZicpKQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4
dGVybScsIE5vbmUsICdmYWxzZScpKQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4
dGVybScsIE5vbmUsICcwJykpCi0gICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJt
JywgTm9uZSwgJ3Vua25vd24nKSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBn
dGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfY29sb3JfdGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4
ZDM3N2M5YjJhZjBiZmU4MTk1Y2EyYzBhOTAyMTM5ZDkxMTA2NDIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF9jb2xvcl90ZXN0Xy5jYworKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8v
IENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8v
Ci0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlz
dHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
Ly8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6
IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEEgaGVscGVyIHByb2dyYW0gZm9y
IHRlc3RpbmcgaG93IEdvb2dsZSBUZXN0IGRldGVybWluZXMgd2hldGhlciB0byB1c2UKLS8vIGNv
bG9ycyBpbiB0aGUgb3V0cHV0LiAgSXQgcHJpbnRzICJZRVMiIGFuZCByZXR1cm5zIDEgaWYgR29v
Z2xlIFRlc3QKLS8vIGRlY2lkZXMgdG8gdXNlIGNvbG9ycywgYW5kIHByaW50cyAiTk8iIGFuZCBy
ZXR1cm5zIDAgb3RoZXJ3aXNlLgotCi0jaW5jbHVkZSA8c3RkaW8uaD4KLQotI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+Ci0KLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBp
cyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21l
IGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdp
bGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1
c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgot
Ly8gaGlzIGNvZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAi
c3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwot
Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxkVXNlQ29sb3I7Ci0KLS8vIFRoZSBwdXJw
b3NlIG9mIHRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIFVuaXRUZXN0IHNpbmdsZXRvbiBpcwot
Ly8gY3JlYXRlZCBiZWZvcmUgbWFpbigpIGlzIGVudGVyZWQsIGFuZCB0aHVzIHRoYXQgU2hvdWxk
VXNlQ29sb3IoKQotLy8gd29ya3MgdGhlIHNhbWUgd2F5IGFzIGluIGEgcmVhbCBHb29nbGUtVGVz
dC1iYXNlZCB0ZXN0LiAgV2UgZG9uJ3QgYWN0dWFsCi0vLyBydW4gdGhlIFRFU1QgaXRzZWxmLgot
VEVTVChHVGVzdENvbG9yVGVzdCwgRHVtbXkpIHsKLX0KLQotaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KSB7Ci0gIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQot
ICBpZiAoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpIHsKLSAgICAvLyBHb29nbGUgVGVzdCBkZWNpZGVz
IHRvIHVzZSBjb2xvcnMgaW4gdGhlIG91dHB1dCAoYXNzdW1pbmcgaXQKLSAgICAvLyBnb2VzIHRv
IGEgVFRZKS4KLSAgICBwcmludGYoIllFU1xuIik7Ci0gICAgcmV0dXJuIDE7Ci0gIH0gZWxzZSB7
Ci0gICAgLy8gR29vZ2xlIFRlc3QgZGVjaWRlcyBub3QgdG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0
cHV0LgotICAgIHByaW50ZigiTk9cbiIpOwotICAgIHJldHVybiAwOwotICB9Ci19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0LnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiY2MwYmZkNTUzMjk3MjY4MDc2MTU3NzM2YzgzZTRh
ODRjYWUwNTZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0LnB5CisrKyAv
ZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBD
b3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLSIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3QgY29ycmVjdGx5IHBh
cnNlcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBvcwotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRp
bHMKLQotCi1JU19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCi1JU19MSU5VWCA9IG9zLm5hbWUg
PT0gJ3Bvc2l4JyBhbmQgb3MudW5hbWUoKVswXSA9PSAnTGludXgnCi0KLUNPTU1BTkQgPSBndGVz
dF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ3Rlc3RfZW52X3Zhcl90ZXN0Xycp
Ci0KLWVudmlyb24gPSBvcy5lbnZpcm9uLmNvcHkoKQotCi0KLWRlZiBBc3NlcnRFcShleHBlY3Rl
ZCwgYWN0dWFsKToKLSAgaWYgZXhwZWN0ZWQgIT0gYWN0dWFsOgotICAgIHByaW50ICdFeHBlY3Rl
ZDogJXMnICUgKGV4cGVjdGVkLCkKLSAgICBwcmludCAnICBBY3R1YWw6ICVzJyAlIChhY3R1YWws
KQotICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCi0KLQotZGVmIFNldEVudlZhcihlbnZfdmFyLCB2
YWx1ZSk6Ci0gICIiIlNldHMgdGhlIGVudiB2YXJpYWJsZSB0byAndmFsdWUnOyB1bnNldHMgaXQg
d2hlbiAndmFsdWUnIGlzIE5vbmUuIiIiCi0KLSAgaWYgdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAg
ZW52aXJvbltlbnZfdmFyXSA9IHZhbHVlCi0gIGVsaWYgZW52X3ZhciBpbiBlbnZpcm9uOgotICAg
IGRlbCBlbnZpcm9uW2Vudl92YXJdCi0KLQotZGVmIEdldEZsYWcoZmxhZyk6Ci0gICIiIlJ1bnMg
Z3Rlc3RfZW52X3Zhcl90ZXN0XyBhbmQgcmV0dXJucyBpdHMgb3V0cHV0LiIiIgotCi0gIGFyZ3Mg
PSBbQ09NTUFORF0KLSAgaWYgZmxhZyBpcyBub3QgTm9uZToKLSAgICBhcmdzICs9IFtmbGFnXQot
ICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGFyZ3MsIGVudj1lbnZpcm9uKS5v
dXRwdXQKLQotCi1kZWYgVGVzdEZsYWcoZmxhZywgdGVzdF92YWwsIGRlZmF1bHRfdmFsKToKLSAg
IiIiVmVyaWZpZXMgdGhhdCB0aGUgZ2l2ZW4gZmxhZyBpcyBhZmZlY3RlZCBieSB0aGUgY29ycmVz
cG9uZGluZyBlbnYgdmFyLiIiIgotCi0gIGVudl92YXIgPSAnR1RFU1RfJyArIGZsYWcudXBwZXIo
KQotICBTZXRFbnZWYXIoZW52X3ZhciwgdGVzdF92YWwpCi0gIEFzc2VydEVxKHRlc3RfdmFsLCBH
ZXRGbGFnKGZsYWcpKQotICBTZXRFbnZWYXIoZW52X3ZhciwgTm9uZSkKLSAgQXNzZXJ0RXEoZGVm
YXVsdF92YWwsIEdldEZsYWcoZmxhZykpCi0KLQotY2xhc3MgR1Rlc3RFbnZWYXJUZXN0KGd0ZXN0
X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgotICBkZWYgdGVzdEVudlZhckFmZmVjdHNGbGFnKHNlbGYp
OgotICAgICIiIlRlc3RzIHRoYXQgZW52aXJvbm1lbnQgdmFyaWFibGUgc2hvdWxkIGFmZmVjdCB0
aGUgY29ycmVzcG9uZGluZyBmbGFnLiIiIgotCi0gICAgVGVzdEZsYWcoJ2JyZWFrX29uX2ZhaWx1
cmUnLCAnMScsICcwJykKLSAgICBUZXN0RmxhZygnY29sb3InLCAneWVzJywgJ2F1dG8nKQotICAg
IFRlc3RGbGFnKCdmaWx0ZXInLCAnRm9vVGVzdC5CYXInLCAnKicpCi0gICAgVGVzdEZsYWcoJ291
dHB1dCcsICd4bWw6dG1wL2Zvby54bWwnLCAnJykKLSAgICBUZXN0RmxhZygncHJpbnRfdGltZScs
ICcwJywgJzEnKQotICAgIFRlc3RGbGFnKCdyZXBlYXQnLCAnOTk5JywgJzEnKQotICAgIFRlc3RG
bGFnKCd0aHJvd19vbl9mYWlsdXJlJywgJzEnLCAnMCcpCi0gICAgVGVzdEZsYWcoJ2RlYXRoX3Rl
c3Rfc3R5bGUnLCAndGhyZWFkc2FmZScsICdmYXN0JykKLQotICAgIGlmIElTX1dJTkRPV1M6Ci0g
ICAgICBUZXN0RmxhZygnY2F0Y2hfZXhjZXB0aW9ucycsICcxJywgJzAnKQotCi0gICAgaWYgSVNf
TElOVVg6Ci0gICAgICBUZXN0RmxhZygnZGVhdGhfdGVzdF91c2VfZm9yaycsICcxJywgJzAnKQot
ICAgICAgVGVzdEZsYWcoJ3N0YWNrX3RyYWNlX2RlcHRoJywgJzAnLCAnMTAwJykKLQotCi1pZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgotICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3RfLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3RfLmNjCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2M3OGZjZjMwNTMxMmE2NmMyNjViMTgxMGE2
OTEwNzdkYjc3MWY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0Xy5jYwor
KysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xl
IEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlv
bmcgV2FuKQotCi0vLyBBIGhlbHBlciBwcm9ncmFtIGZvciB0ZXN0aW5nIHRoYXQgR29vZ2xlIFRl
c3QgcGFyc2VzIHRoZSBlbnZpcm9ubWVudAotLy8gdmFyaWFibGVzIGNvcnJlY3RseS4KLQotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotI2RlZmluZSBH
VEVTVF9JTVBMRU1FTlRBVElPTl8gMQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwu
aCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KLQotdXNpbmcgOjpzdGQ6OmNvdXQ7Ci0K
LW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBpcyB0byBtYWtl
IHRoZSB0ZXN0IG1vcmUgcmVhbGlzdGljIGJ5IGVuc3VyaW5nCi0vLyB0aGF0IHRoZSBVbml0VGVz
dCBzaW5nbGV0b24gaXMgY3JlYXRlZCBiZWZvcmUgbWFpbigpIGlzIGVudGVyZWQuCi0vLyBXZSBk
b24ndCBhY3R1YWwgcnVuIHRoZSBURVNUIGl0c2VsZi4KLVRFU1QoR1Rlc3RFbnZWYXJUZXN0LCBE
dW1teSkgewotfQotCi12b2lkIFByaW50RmxhZyhjb25zdCBjaGFyKiBmbGFnKSB7Ci0gIGlmIChz
dHJjbXAoZmxhZywgImJyZWFrX29uX2ZhaWx1cmUiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVT
VF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJj
bXAoZmxhZywgImNhdGNoX2V4Y2VwdGlvbnMiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9G
TEFHKGNhdGNoX2V4Y2VwdGlvbnMpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAo
ZmxhZywgImNvbG9yIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhjb2xvcik7Ci0g
ICAgcmV0dXJuOwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAiZGVhdGhfdGVzdF9zdHlsZSIp
ID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSk7Ci0gICAg
cmV0dXJuOwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAiZGVhdGhfdGVzdF91c2VfZm9yayIp
ID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yayk7Ci0g
ICAgcmV0dXJuOwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAiZmlsdGVyIikgPT0gMCkgewot
ICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhmaWx0ZXIpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlm
IChzdHJjbXAoZmxhZywgIm91dHB1dCIpID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUco
b3V0cHV0KTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcsICJwcmludF90
aW1lIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhwcmludF90aW1lKTsKLSAgICBy
ZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcsICJyZXBlYXQiKSA9PSAwKSB7Ci0gICAg
Y291dCA8PCBHVEVTVF9GTEFHKHJlcGVhdCk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaWYgKHN0
cmNtcChmbGFnLCAic3RhY2tfdHJhY2VfZGVwdGgiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVT
VF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3Ry
Y21wKGZsYWcsICJ0aHJvd19vbl9mYWlsdXJlIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1Rf
RkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBjb3V0IDw8ICJJ
bnZhbGlkIGZsYWcgbmFtZSAiIDw8IGZsYWcKLSAgICAgICA8PCAiLiAgVmFsaWQgbmFtZXMgYXJl
IGJyZWFrX29uX2ZhaWx1cmUsIGNvbG9yLCBmaWx0ZXIsIGV0Yy5cbiI7Ci0gIGV4aXQoMSk7Ci19
Ci0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiog
YXJndikgewotICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgaWYg
KGFyZ2MgIT0gMikgewotICAgIGNvdXQgPDwgIlVzYWdlOiBndGVzdF9lbnZfdmFyX3Rlc3RfIE5B
TUVfT0ZfRkxBR1xuIjsKLSAgICByZXR1cm4gMTsKLSAgfQotCi0gIHRlc3Rpbmc6OlByaW50Rmxh
Zyhhcmd2WzFdKTsKLSAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudmlyb25tZW50X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudmlyb25tZW50X3Rlc3QuY2MKaW5kZXggYzkzOTI2MTRkNzRk
N2ZjMjMyZTg2YjJjM2Q2Y2RiMWIxZTJiNjEzMS4uYmM5NTI0ZDY2MzczZTcxOTUxY2FjY2Q5MDZj
MDY2ZWY0YWY5NGI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVzdC5jYwpAQCAtMjYsMTQgKzI2LDE0IEBACiAvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCiAvLwogLy8gVGVzdHMgdXNpbmcgZ2xvYmFs
IHRlc3QgZW52aXJvbm1lbnRzLgogCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3Rk
aW8uaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CisjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgogCiBuYW1lc3BhY2UgdGVzdGlu
ZyB7CiBHVEVTVF9ERUNMQVJFX3N0cmluZ18oZmlsdGVyKTsKQEAgLTkyLDYgKzkyLDcgQEAgY2xh
c3MgTXlFbnZpcm9ubWVudCA6IHB1YmxpYyB0ZXN0aW5nOjpFbnZpcm9ubWVudCB7CiAKICAgLy8g
V2FzIFRlYXJEb3duKCkgcnVuPwogICBib29sIHRlYXJfZG93bl93YXNfcnVuKCkgY29uc3QgeyBy
ZXR1cm4gdGVhcl9kb3duX3dhc19ydW5fOyB9CisKICBwcml2YXRlOgogICBGYWlsdXJlVHlwZSBm
YWlsdXJlX2luX3NldF91cF87CiAgIGJvb2wgc2V0X3VwX3dhc19ydW5fOwpAQCAtMTExLDcgKzEx
Miw3IEBAIFRFU1QoRm9vVGVzdCwgQmFyKSB7CiB2b2lkIENoZWNrKGJvb2wgY29uZGl0aW9uLCBj
b25zdCBjaGFyKiBtc2cpIHsKICAgaWYgKCFjb25kaXRpb24pIHsKICAgICBwcmludGYoIkZBSUxF
RDogJXNcbiIsIG1zZyk7Ci0gICAgYWJvcnQoKTsKKyAgICB0ZXN0aW5nOjppbnRlcm5hbDo6cG9z
aXg6OkFib3J0KCk7CiAgIH0KIH0KIApAQCAtMTIzLDYgKzEyNCw3IEBAIGludCBSdW5BbGxUZXN0
cyhNeUVudmlyb25tZW50KiBlbnYsIEZhaWx1cmVUeXBlIGZhaWx1cmUpIHsKICAgZW52LT5SZXNl
dCgpOwogICBlbnYtPnNldF9mYWlsdXJlX2luX3NldF91cChmYWlsdXJlKTsKICAgdGVzdF93YXNf
cnVuID0gZmFsc2U7CisgIHRlc3Rpbmc6OmludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKS0+Q2xl
YXJBZEhvY1Rlc3RSZXN1bHQoKTsKICAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRl
c3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2ZpbHRlcl91bml0dGVz
dC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMGQxYTc3MDA1OGNjYjkwMTE1NDY4
MDkyNGNiZDNjNjRkOGM4ZDE3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2ZpbHRlcl91bml0
dGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDYzMyArMCwwIEBACi0jIS91c3IvYmluL2VudiBw
eXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1
dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QgdGVz
dCBmaWx0ZXJzLgotCi1BIHVzZXIgY2FuIHNwZWNpZnkgd2hpY2ggdGVzdChzKSBpbiBhIEdvb2ds
ZSBUZXN0IHByb2dyYW0gdG8gcnVuIHZpYSBlaXRoZXIKLXRoZSBHVEVTVF9GSUxURVIgZW52aXJv
bm1lbnQgdmFyaWFibGUgb3IgdGhlIC0tZ3Rlc3RfZmlsdGVyIGZsYWcuCi1UaGlzIHNjcmlwdCB0
ZXN0cyBzdWNoIGZ1bmN0aW9uYWxpdHkgYnkgaW52b2tpbmcKLWd0ZXN0X2ZpbHRlcl91bml0dGVz
dF8gKGEgcHJvZ3JhbSB3cml0dGVuIHdpdGggR29vZ2xlIFRlc3QpIHdpdGggZGlmZmVyZW50Ci1l
bnZpcm9ubWVudHMgYW5kIGNvbW1hbmQgbGluZSBmbGFncy4KLQotTm90ZSB0aGF0IHRlc3Qgc2hh
cmRpbmcgbWF5IGFsc28gaW5mbHVlbmNlIHdoaWNoIHRlc3RzIGFyZSBmaWx0ZXJlZC4gVGhlcmVm
b3JlLAotd2UgdGVzdCB0aGF0IGhlcmUgYWxzby4KLSIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBn
b29nbGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0
IHNldHMKLWltcG9ydCBzeXMKLQotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLQotIyBDb25zdGFu
dHMuCi0KLSMgQ2hlY2tzIGlmIHRoaXMgcGxhdGZvcm0gY2FuIHBhc3MgZW1wdHkgZW52aXJvbm1l
bnQgdmFyaWFibGVzIHRvIGNoaWxkCi0jIHByb2Nlc3Nlcy4gIFdlIHNldCBhbiBlbnYgdmFyaWFi
bGUgdG8gYW4gZW1wdHkgc3RyaW5nIGFuZCBpbnZva2UgYSBweXRob24KLSMgc2NyaXB0IGluIGEg
c3VicHJvY2VzcyB0byBwcmludCB3aGV0aGVyIHRoZSB2YXJpYWJsZSBpcyBTVElMTCBpbgotIyBv
cy5lbnZpcm9uLiAgV2UgdGhlbiB1c2UgJ2V2YWwnIHRvIHBhcnNlIHRoZSBjaGlsZCdzIG91dHB1
dCBzbyB0aGF0IGFuCi0jIGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgdGhlIGlucHV0IGlzIGFueXRo
aW5nIG90aGVyIHRoYW4gJ1RydWUnIG5vciAnRmFsc2UnLgotb3MuZW52aXJvblsnRU1QVFlfVkFS
J10gPSAnJwotY2hpbGQgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCi0gICAgW3N5cy5l
eGVjdXRhYmxlLCAnLWMnLCAnaW1wb3J0IG9zOyBwcmludCBcJ0VNUFRZX1ZBUlwnIGluIG9zLmVu
dmlyb24nXSkKLUNBTl9QQVNTX0VNUFRZX0VOViA9IGV2YWwoY2hpbGQub3V0cHV0KQotCi0KLSMg
Q2hlY2sgaWYgdGhpcyBwbGF0Zm9ybSBjYW4gdW5zZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGlu
IGNoaWxkIHByb2Nlc3Nlcy4KLSMgV2Ugc2V0IGFuIGVudiB2YXJpYWJsZSB0byBhIG5vbi1lbXB0
eSBzdHJpbmcsIHVuc2V0IGl0LCBhbmQgaW52b2tlCi0jIGEgcHl0aG9uIHNjcmlwdCBpbiBhIHN1
YnByb2Nlc3MgdG8gcHJpbnQgd2hldGhlciB0aGUgdmFyaWFibGUKLSMgaXMgTk8gTE9OR0VSIGlu
IG9zLmVudmlyb24uCi0jIFdlIHVzZSAnZXZhbCcgdG8gcGFyc2UgdGhlIGNoaWxkJ3Mgb3V0cHV0
IHNvIHRoYXQgYW4gZXhjZXB0aW9uCi0jIGlzIHRocm93biBpZiB0aGUgaW5wdXQgaXMgbmVpdGhl
ciAnVHJ1ZScgbm9yICdGYWxzZScuCi1vcy5lbnZpcm9uWydVTlNFVF9WQVInXSA9ICdYJwotZGVs
IG9zLmVudmlyb25bJ1VOU0VUX1ZBUiddCi1jaGlsZCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJv
Y2VzcygKLSAgICBbc3lzLmV4ZWN1dGFibGUsICctYycsICdpbXBvcnQgb3M7IHByaW50IFwnVU5T
RVRfVkFSXCcgbm90IGluIG9zLmVudmlyb24nXSkKLUNBTl9VTlNFVF9FTlYgPSBldmFsKGNoaWxk
Lm91dHB1dCkKLQotCi0jIENoZWNrcyBpZiB3ZSBzaG91bGQgdGVzdCB3aXRoIGFuIGVtcHR5IGZp
bHRlci4gVGhpcyBkb2Vzbid0Ci0jIG1ha2Ugc2Vuc2Ugb24gcGxhdGZvcm1zIHRoYXQgY2Fubm90
IHBhc3MgZW1wdHkgZW52IHZhcmlhYmxlcyAoV2luMzIpCi0jIGFuZCBvbiBwbGF0Zm9ybXMgdGhh
dCBjYW5ub3QgdW5zZXQgdmFyaWFibGVzIChzaW5jZSB3ZSBjYW5ub3QgdGVsbAotIyB0aGUgZGlm
ZmVyZW5jZSBiZXR3ZWVuICIiIGFuZCBOVUxMIC0tIEJvcmxhbmQgYW5kIFNvbGFyaXMgPCA1LjEw
KQotQ0FOX1RFU1RfRU1QVFlfRklMVEVSID0gKENBTl9QQVNTX0VNUFRZX0VOViBhbmQgQ0FOX1VO
U0VUX0VOVikKLQotCi0jIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3Igc3BlY2lmeWluZyB0
aGUgdGVzdCBmaWx0ZXJzLgotRklMVEVSX0VOVl9WQVIgPSAnR1RFU1RfRklMVEVSJwotCi0jIFRo
ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRlc3Qgc2hhcmRpbmcuCi1UT1RBTF9TSEFSRFNf
RU5WX1ZBUiA9ICdHVEVTVF9UT1RBTF9TSEFSRFMnCi1TSEFSRF9JTkRFWF9FTlZfVkFSID0gJ0dU
RVNUX1NIQVJEX0lOREVYJwotU0hBUkRfU1RBVFVTX0ZJTEVfRU5WX1ZBUiA9ICdHVEVTVF9TSEFS
RF9TVEFUVVNfRklMRScKLQotIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgZm9yIHNwZWNpZnlpbmcg
dGhlIHRlc3QgZmlsdGVycy4KLUZJTFRFUl9GTEFHID0gJ2d0ZXN0X2ZpbHRlcicKLQotIyBUaGUg
Y29tbWFuZCBsaW5lIGZsYWcgZm9yIGluY2x1ZGluZyBkaXNhYmxlZCB0ZXN0cy4KLUFMU09fUlVO
X0RJU0FCRURfVEVTVFNfRkxBRyA9ICdndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cycKLQot
IyBDb21tYW5kIHRvIHJ1biB0aGUgZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0XyBwcm9ncmFtLgotQ09N
TUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9maWx0
ZXJfdW5pdHRlc3RfJykKLQotIyBSZWdleCBmb3IgZGV0ZXJtaW5pbmcgd2hldGhlciBwYXJhbWV0
ZXJpemVkIHRlc3RzIGFyZSBlbmFibGVkIGluIHRoZSBiaW5hcnkuCi1QQVJBTV9URVNUX1JFR0VY
ID0gcmUuY29tcGlsZShyJy9QYXJhbVRlc3QnKQotCi0jIFJlZ2V4IGZvciBwYXJzaW5nIHRlc3Qg
Y2FzZSBuYW1lcyBmcm9tIEdvb2dsZSBUZXN0J3Mgb3V0cHV0LgotVEVTVF9DQVNFX1JFR0VYID0g
cmUuY29tcGlsZShyJ15cW1wtK1xdIFxkKyB0ZXN0cz8gZnJvbSAoXHcrKC9cdyspPyknKQotCi0j
IFJlZ2V4IGZvciBwYXJzaW5nIHRlc3QgbmFtZXMgZnJvbSBHb29nbGUgVGVzdCdzIG91dHB1dC4K
LVRFU1RfUkVHRVggPSByZS5jb21waWxlKHInXlxbXHMqUlVOXHMqXF0uKlwuKFx3KygvXHcrKT8p
JykKLQotIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgdG8gdGVsbCBHb29nbGUgVGVzdCB0byBvdXRw
dXQgdGhlIGxpc3Qgb2YgdGVzdHMgaXQKLSMgd2lsbCBydW4uCi1MSVNUX1RFU1RTX0ZMQUcgPSAn
LS1ndGVzdF9saXN0X3Rlc3RzJwotCi0jIEluZGljYXRlcyB3aGV0aGVyIEdvb2dsZSBUZXN0IHN1
cHBvcnRzIGRlYXRoIHRlc3RzLgotU1VQUE9SVFNfREVBVEhfVEVTVFMgPSAnSGFzRGVhdGhUZXN0
JyBpbiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCi0gICAgW0NPTU1BTkQsIExJU1RfVEVT
VFNfRkxBR10pLm91dHB1dAotCi0jIEZ1bGwgbmFtZXMgb2YgYWxsIHRlc3RzIGluIGd0ZXN0X2Zp
bHRlcl91bml0dGVzdHNfLgotUEFSQU1fVEVTVFMgPSBbCi0gICAgJ1NlcVAvUGFyYW1UZXN0LlRl
c3RYLzAnLAotICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8xJywKLSAgICAnU2VxUC9QYXJhbVRl
c3QuVGVzdFkvMCcsCi0gICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzEnLAotICAgICdTZXFRL1Bh
cmFtVGVzdC5UZXN0WC8wJywKLSAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFgvMScsCi0gICAgJ1Nl
cVEvUGFyYW1UZXN0LlRlc3RZLzAnLAotICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WS8xJywKLSAg
ICBdCi0KLURJU0FCTEVEX1RFU1RTID0gWwotICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rlc3RGb3Vy
JywKLSAgICAnQmFyVGVzdC5ESVNBQkxFRF9UZXN0Rml2ZScsCi0gICAgJ0JhelRlc3QuRElTQUJM
RURfVGVzdEMnLAotICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LlRlc3QxJywKLSAgICAnRElTQUJM
RURfRm9vYmFyVGVzdC5ESVNBQkxFRF9UZXN0MicsCi0gICAgJ0RJU0FCTEVEX0Zvb2JhcmJhelRl
c3QuVGVzdEEnLAotICAgIF0KLQotaWYgU1VQUE9SVFNfREVBVEhfVEVTVFM6Ci0gIERFQVRIX1RF
U1RTID0gWwotICAgICdIYXNEZWF0aFRlc3QuVGVzdDEnLAotICAgICdIYXNEZWF0aFRlc3QuVGVz
dDInLAotICAgIF0KLWVsc2U6Ci0gIERFQVRIX1RFU1RTID0gW10KLQotIyBBbGwgdGhlIG5vbi1k
aXNhYmxlZCB0ZXN0cy4KLUFDVElWRV9URVNUUyA9IFsKLSAgICAnRm9vVGVzdC5BYmMnLAotICAg
ICdGb29UZXN0Llh5eicsCi0KLSAgICAnQmFyVGVzdC5UZXN0T25lJywKLSAgICAnQmFyVGVzdC5U
ZXN0VHdvJywKLSAgICAnQmFyVGVzdC5UZXN0VGhyZWUnLAotCi0gICAgJ0JhelRlc3QuVGVzdE9u
ZScsCi0gICAgJ0JhelRlc3QuVGVzdEEnLAotICAgICdCYXpUZXN0LlRlc3RCJywKLSAgICBdICsg
REVBVEhfVEVTVFMgKyBQQVJBTV9URVNUUwotCi1wYXJhbV90ZXN0c19wcmVzZW50ID0gTm9uZQot
Ci0jIFV0aWxpdGllcy4KLQotZW52aXJvbiA9IG9zLmVudmlyb24uY29weSgpCi0KLQotZGVmIFNl
dEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6Ci0gICIiIlNldHMgdGhlIGVudiB2YXJpYWJsZSB0byAn
dmFsdWUnOyB1bnNldHMgaXQgd2hlbiAndmFsdWUnIGlzIE5vbmUuIiIiCi0KLSAgaWYgdmFsdWUg
aXMgbm90IE5vbmU6Ci0gICAgZW52aXJvbltlbnZfdmFyXSA9IHZhbHVlCi0gIGVsaWYgZW52X3Zh
ciBpbiBlbnZpcm9uOgotICAgIGRlbCBlbnZpcm9uW2Vudl92YXJdCi0KLQotZGVmIFJ1bkFuZFJl
dHVybk91dHB1dChhcmdzID0gTm9uZSk6Ci0gICIiIlJ1bnMgdGhlIHRlc3QgcHJvZ3JhbSBhbmQg
cmV0dXJucyBpdHMgb3V0cHV0LiIiIgotCi0gIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnBy
b2Nlc3MoW0NPTU1BTkRdICsgKGFyZ3Mgb3IgW10pLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVudj1lbnZpcm9uKS5vdXRwdXQKLQotCi1kZWYgUnVuQW5kRXh0cmFjdFRl
c3RMaXN0KGFyZ3MgPSBOb25lKToKLSAgIiIiUnVucyB0aGUgdGVzdCBwcm9ncmFtIGFuZCByZXR1
cm5zIGl0cyBleGl0IGNvZGUgYW5kIGEgbGlzdCBvZiB0ZXN0cyBydW4uIiIiCi0KLSAgcCA9IGd0
ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhbQ09NTUFORF0gKyAoYXJncyBvciBbXSksIGVudj1l
bnZpcm9uKQotICB0ZXN0c19ydW4gPSBbXQotICB0ZXN0X2Nhc2UgPSAnJwotICB0ZXN0ID0gJycK
LSAgZm9yIGxpbmUgaW4gcC5vdXRwdXQuc3BsaXQoJ1xuJyk6Ci0gICAgbWF0Y2ggPSBURVNUX0NB
U0VfUkVHRVgubWF0Y2gobGluZSkKLSAgICBpZiBtYXRjaCBpcyBub3QgTm9uZToKLSAgICAgIHRl
c3RfY2FzZSA9IG1hdGNoLmdyb3VwKDEpCi0gICAgZWxzZToKLSAgICAgIG1hdGNoID0gVEVTVF9S
RUdFWC5tYXRjaChsaW5lKQotICAgICAgaWYgbWF0Y2ggaXMgbm90IE5vbmU6Ci0gICAgICAgIHRl
c3QgPSBtYXRjaC5ncm91cCgxKQotICAgICAgICB0ZXN0c19ydW4uYXBwZW5kKHRlc3RfY2FzZSAr
ICcuJyArIHRlc3QpCi0gIHJldHVybiAodGVzdHNfcnVuLCBwLmV4aXRfY29kZSkKLQotCi1kZWYg
SW52b2tlV2l0aE1vZGlmaWVkRW52KGV4dHJhX2VudiwgZnVuY3Rpb24sICphcmdzLCAqKmt3YXJn
cyk6Ci0gICIiIlJ1bnMgdGhlIGdpdmVuIGZ1bmN0aW9uIGFuZCBhcmd1bWVudHMgaW4gYSBtb2Rp
ZmllZCBlbnZpcm9ubWVudC4iIiIKLSAgdHJ5OgotICAgIG9yaWdpbmFsX2VudiA9IGVudmlyb24u
Y29weSgpCi0gICAgZW52aXJvbi51cGRhdGUoZXh0cmFfZW52KQotICAgIHJldHVybiBmdW5jdGlv
bigqYXJncywgKiprd2FyZ3MpCi0gIGZpbmFsbHk6Ci0gICAgZW52aXJvbi5jbGVhcigpCi0gICAg
ZW52aXJvbi51cGRhdGUob3JpZ2luYWxfZW52KQotCi0KLWRlZiBSdW5XaXRoU2hhcmRpbmcodG90
YWxfc2hhcmRzLCBzaGFyZF9pbmRleCwgY29tbWFuZCk6Ci0gICIiIlJ1bnMgYSB0ZXN0IHByb2dy
YW0gc2hhcmQgYW5kIHJldHVybnMgZXhpdCBjb2RlIGFuZCBhIGxpc3Qgb2YgdGVzdHMgcnVuLiIi
IgotCi0gIGV4dHJhX2VudiA9IHtTSEFSRF9JTkRFWF9FTlZfVkFSOiBzdHIoc2hhcmRfaW5kZXgp
LAotICAgICAgICAgICAgICAgVE9UQUxfU0hBUkRTX0VOVl9WQVI6IHN0cih0b3RhbF9zaGFyZHMp
fQotICByZXR1cm4gSW52b2tlV2l0aE1vZGlmaWVkRW52KGV4dHJhX2VudiwgUnVuQW5kRXh0cmFj
dFRlc3RMaXN0LCBjb21tYW5kKQotCi0jIFRoZSB1bml0IHRlc3QuCi0KLQotY2xhc3MgR1Rlc3RG
aWx0ZXJVbml0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAgIiIiVGVzdHMgdGhl
IGVudiB2YXJpYWJsZSBvciB0aGUgY29tbWFuZCBsaW5lIGZsYWcgdG8gZmlsdGVyIHRlc3RzLiIi
IgotCi0gICMgVXRpbGl0aWVzLgotCi0gIGRlZiBBc3NlcnRTZXRFcXVhbChzZWxmLCBsaHMsIHJo
cyk6Ci0gICAgIiIiQXNzZXJ0cyB0aGF0IHR3byBzZXRzIGFyZSBlcXVhbC4iIiIKLQotICAgIGZv
ciBlbGVtIGluIGxoczoKLSAgICAgIHNlbGYuYXNzZXJ0XyhlbGVtIGluIHJocywgJyVzIGluICVz
JyAlIChlbGVtLCByaHMpKQotCi0gICAgZm9yIGVsZW0gaW4gcmhzOgotICAgICAgc2VsZi5hc3Nl
cnRfKGVsZW0gaW4gbGhzLCAnJXMgaW4gJXMnICUgKGVsZW0sIGxocykpCi0KLSAgZGVmIEFzc2Vy
dFBhcnRpdGlvbklzVmFsaWQoc2VsZiwgc2V0X3ZhciwgbGlzdF9vZl9zZXRzKToKLSAgICAiIiJB
c3NlcnRzIHRoYXQgbGlzdF9vZl9zZXRzIGlzIGEgdmFsaWQgcGFydGl0aW9uIG9mIHNldF92YXIu
IiIiCi0KLSAgICBmdWxsX3BhcnRpdGlvbiA9IFtdCi0gICAgZm9yIHNsaWNlX3ZhciBpbiBsaXN0
X29mX3NldHM6Ci0gICAgICBmdWxsX3BhcnRpdGlvbi5leHRlbmQoc2xpY2VfdmFyKQotICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGVuKHNldF92YXIpLCBsZW4oZnVsbF9wYXJ0aXRpb24pKQotICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2V0cy5TZXQoc2V0X3ZhciksIHNldHMuU2V0KGZ1bGxfcGFydGl0aW9u
KSkKLQotICBkZWYgQWRqdXN0Rm9yUGFyYW1ldGVyaXplZFRlc3RzKHNlbGYsIHRlc3RzX3RvX3J1
bik6Ci0gICAgIiIiQWRqdXN0IHRlc3RzX3RvX3J1biBpbiBjYXNlIHZhbHVlIHBhcmFtZXRlcml6
ZWQgdGVzdHMgYXJlIGRpc2FibGVkLiIiIgotCi0gICAgZ2xvYmFsIHBhcmFtX3Rlc3RzX3ByZXNl
bnQKLSAgICBpZiBub3QgcGFyYW1fdGVzdHNfcHJlc2VudDoKLSAgICAgIHJldHVybiBsaXN0KHNl
dHMuU2V0KHRlc3RzX3RvX3J1bikgLSBzZXRzLlNldChQQVJBTV9URVNUUykpCi0gICAgZWxzZToK
LSAgICAgIHJldHVybiB0ZXN0c190b19ydW4KLQotICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGd0
ZXN0X2ZpbHRlciwgdGVzdHNfdG9fcnVuKToKLSAgICAiIiJDaGVja3MgdGhhdCB0aGUgYmluYXJ5
IHJ1bnMgY29ycmVjdCBzZXQgb2YgdGVzdHMgZm9yIGEgZ2l2ZW4gZmlsdGVyLiIiIgotCi0gICAg
dGVzdHNfdG9fcnVuID0gc2VsZi5BZGp1c3RGb3JQYXJhbWV0ZXJpemVkVGVzdHModGVzdHNfdG9f
cnVuKQotCi0gICAgIyBGaXJzdCwgdGVzdHMgdXNpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxl
LgotCi0gICAgIyBXaW5kb3dzIHJlbW92ZXMgZW1wdHkgdmFyaWFibGVzIGZyb20gdGhlIGVudmly
b25tZW50IHdoZW4gcGFzc2luZyBpdAotICAgICMgdG8gYSBuZXcgcHJvY2Vzcy4gIFRoaXMgbWVh
bnMgaXQgaXMgaW1wb3NzaWJsZSB0byBwYXNzIGFuIGVtcHR5IGZpbHRlcgotICAgICMgaW50byBh
IHByb2Nlc3MgdXNpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLiAgSG93ZXZlciwgd2UgY2Fu
IHN0aWxsCi0gICAgIyB0ZXN0IHRoZSBjYXNlIHdoZW4gdGhlIHZhcmlhYmxlIGlzIG5vdCBzdXBw
bGllZCAoaS5lLiwgZ3Rlc3RfZmlsdGVyIGlzCi0gICAgIyBOb25lKS4KLSAgICAjIHB5bGludDog
ZGlzYWJsZS1tc2c9QzY0MDMKLSAgICBpZiBDQU5fVEVTVF9FTVBUWV9GSUxURVIgb3IgZ3Rlc3Rf
ZmlsdGVyICE9ICcnOgotICAgICAgU2V0RW52VmFyKEZJTFRFUl9FTlZfVkFSLCBndGVzdF9maWx0
ZXIpCi0gICAgICB0ZXN0c19ydW4gPSBSdW5BbmRFeHRyYWN0VGVzdExpc3QoKVswXQotICAgICAg
U2V0RW52VmFyKEZJTFRFUl9FTlZfVkFSLCBOb25lKQotICAgICAgc2VsZi5Bc3NlcnRTZXRFcXVh
bCh0ZXN0c19ydW4sIHRlc3RzX3RvX3J1bikKLSAgICAjIHB5bGludDogZW5hYmxlLW1zZz1DNjQw
MwotCi0gICAgIyBOZXh0LCB0ZXN0cyB1c2luZyB0aGUgY29tbWFuZCBsaW5lIGZsYWcuCi0KLSAg
ICBpZiBndGVzdF9maWx0ZXIgaXMgTm9uZToKLSAgICAgIGFyZ3MgPSBbXQotICAgIGVsc2U6Ci0g
ICAgICBhcmdzID0gWyctLSVzPSVzJyAlIChGSUxURVJfRkxBRywgZ3Rlc3RfZmlsdGVyKV0KLQot
ICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0TGlzdChhcmdzKVswXQotICAgIHNlbGYu
QXNzZXJ0U2V0RXF1YWwodGVzdHNfcnVuLCB0ZXN0c190b19ydW4pCi0KLSAgZGVmIFJ1bkFuZFZl
cmlmeVdpdGhTaGFyZGluZyhzZWxmLCBndGVzdF9maWx0ZXIsIHRvdGFsX3NoYXJkcywgdGVzdHNf
dG9fcnVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9Tm9uZSwgY2hlY2tf
ZXhpdF8wPUZhbHNlKToKLSAgICAiIiJDaGVja3MgdGhhdCBiaW5hcnkgcnVucyBjb3JyZWN0IHRl
c3RzIGZvciB0aGUgZ2l2ZW4gZmlsdGVyIGFuZCBzaGFyZC4KLQotICAgIFJ1bnMgYWxsIHNoYXJk
cyBvZiBndGVzdF9maWx0ZXJfdW5pdHRlc3RfIHdpdGggdGhlIGdpdmVuIGZpbHRlciwgYW5kCi0g
ICAgdmVyaWZpZXMgdGhhdCB0aGUgcmlnaHQgc2V0IG9mIHRlc3RzIHdlcmUgcnVuLiBUaGUgdW5p
b24gb2YgdGVzdHMgcnVuCi0gICAgb24gZWFjaCBzaGFyZCBzaG91bGQgYmUgaWRlbnRpY2FsIHRv
IHRlc3RzX3RvX3J1biwgd2l0aG91dCBkdXBsaWNhdGVzLgotCi0gICAgQXJnczoKLSAgICAgIGd0
ZXN0X2ZpbHRlcjogQSBmaWx0ZXIgdG8gYXBwbHkgdG8gdGhlIHRlc3RzLgotICAgICAgdG90YWxf
c2hhcmRzOiBBIHRvdGFsIG51bWJlciBvZiBzaGFyZHMgdG8gc3BsaXQgdGVzdCBydW4gaW50by4K
LSAgICAgIHRlc3RzX3RvX3J1bjogQSBzZXQgb2YgdGVzdHMgZXhwZWN0ZWQgdG8gcnVuLgotICAg
ICAgYXJncyAgIDogICAgICBBcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgdG8gdGhlIHRlc3QgYmlu
YXJ5LgotICAgICAgY2hlY2tfZXhpdF8wOiBXaGVuIHNldCB0byBhIHRydWUgdmFsdWUsIG1ha2Ug
c3VyZSB0aGF0IGFsbCBzaGFyZHMKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuCi0gICAg
IiIiCi0KLSAgICB0ZXN0c190b19ydW4gPSBzZWxmLkFkanVzdEZvclBhcmFtZXRlcml6ZWRUZXN0
cyh0ZXN0c190b19ydW4pCi0KLSAgICAjIFdpbmRvd3MgcmVtb3ZlcyBlbXB0eSB2YXJpYWJsZXMg
ZnJvbSB0aGUgZW52aXJvbm1lbnQgd2hlbiBwYXNzaW5nIGl0Ci0gICAgIyB0byBhIG5ldyBwcm9j
ZXNzLiAgVGhpcyBtZWFucyBpdCBpcyBpbXBvc3NpYmxlIHRvIHBhc3MgYW4gZW1wdHkgZmlsdGVy
Ci0gICAgIyBpbnRvIGEgcHJvY2VzcyB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuICBI
b3dldmVyLCB3ZSBjYW4gc3RpbGwKLSAgICAjIHRlc3QgdGhlIGNhc2Ugd2hlbiB0aGUgdmFyaWFi
bGUgaXMgbm90IHN1cHBsaWVkIChpLmUuLCBndGVzdF9maWx0ZXIgaXMKLSAgICAjIE5vbmUpLgot
ICAgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwMwotICAgIGlmIENBTl9URVNUX0VNUFRZX0ZJ
TFRFUiBvciBndGVzdF9maWx0ZXIgIT0gJyc6Ci0gICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9W
QVIsIGd0ZXN0X2ZpbHRlcikKLSAgICAgIHBhcnRpdGlvbiA9IFtdCi0gICAgICBmb3IgaSBpbiBy
YW5nZSgwLCB0b3RhbF9zaGFyZHMpOgotICAgICAgICAodGVzdHNfcnVuLCBleGl0X2NvZGUpID0g
UnVuV2l0aFNoYXJkaW5nKHRvdGFsX3NoYXJkcywgaSwgYXJncykKLSAgICAgICAgaWYgY2hlY2tf
ZXhpdF8wOgotICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZXhpdF9jb2RlKQotICAgICAg
ICBwYXJ0aXRpb24uYXBwZW5kKHRlc3RzX3J1bikKLQotICAgICAgc2VsZi5Bc3NlcnRQYXJ0aXRp
b25Jc1ZhbGlkKHRlc3RzX3RvX3J1biwgcGFydGl0aW9uKQotICAgICAgU2V0RW52VmFyKEZJTFRF
Ul9FTlZfVkFSLCBOb25lKQotICAgICMgcHlsaW50OiBlbmFibGUtbXNnPUM2NDAzCi0KLSAgZGVm
IFJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoc2VsZiwgZ3Rlc3RfZmlsdGVyLCB0ZXN0c190
b19ydW4pOgotICAgICIiIkNoZWNrcyB0aGF0IHRoZSBiaW5hcnkgcnVucyBjb3JyZWN0IHNldCBv
ZiB0ZXN0cyBmb3IgdGhlIGdpdmVuIGZpbHRlci4KLQotICAgIFJ1bnMgZ3Rlc3RfZmlsdGVyX3Vu
aXR0ZXN0XyB3aXRoIHRoZSBnaXZlbiBmaWx0ZXIsIGFuZCBlbmFibGVzCi0gICAgZGlzYWJsZWQg
dGVzdHMuIFZlcmlmaWVzIHRoYXQgdGhlIHJpZ2h0IHNldCBvZiB0ZXN0cyB3ZXJlIHJ1bi4KLQot
ICAgIEFyZ3M6Ci0gICAgICBndGVzdF9maWx0ZXI6IEEgZmlsdGVyIHRvIGFwcGx5IHRvIHRoZSB0
ZXN0cy4KLSAgICAgIHRlc3RzX3RvX3J1bjogQSBzZXQgb2YgdGVzdHMgZXhwZWN0ZWQgdG8gcnVu
LgotICAgICIiIgotCi0gICAgdGVzdHNfdG9fcnVuID0gc2VsZi5BZGp1c3RGb3JQYXJhbWV0ZXJp
emVkVGVzdHModGVzdHNfdG9fcnVuKQotCi0gICAgIyBDb25zdHJ1Y3QgdGhlIGNvbW1hbmQgbGlu
ZS4KLSAgICBhcmdzID0gWyctLSVzJyAlIEFMU09fUlVOX0RJU0FCRURfVEVTVFNfRkxBR10KLSAg
ICBpZiBndGVzdF9maWx0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICBhcmdzLmFwcGVuZCgnLS0lcz0l
cycgJSAoRklMVEVSX0ZMQUcsIGd0ZXN0X2ZpbHRlcikpCi0KLSAgICB0ZXN0c19ydW4gPSBSdW5B
bmRFeHRyYWN0VGVzdExpc3QoYXJncylbMF0KLSAgICBzZWxmLkFzc2VydFNldEVxdWFsKHRlc3Rz
X3J1biwgdGVzdHNfdG9fcnVuKQotCi0gIGRlZiBzZXRVcChzZWxmKToKLSAgICAiIiJTZXRzIHVw
IHRlc3QgY2FzZS4KLQotICAgIERldGVybWluZXMgd2hldGhlciB2YWx1ZS1wYXJhbWV0ZXJpemVk
IHRlc3RzIGFyZSBlbmFibGVkIGluIHRoZSBiaW5hcnkgYW5kCi0gICAgc2V0cyB0aGUgZmxhZ3Mg
YWNjb3JkaW5nbHkuCi0gICAgIiIiCi0KLSAgICBnbG9iYWwgcGFyYW1fdGVzdHNfcHJlc2VudAot
ICAgIGlmIHBhcmFtX3Rlc3RzX3ByZXNlbnQgaXMgTm9uZToKLSAgICAgIHBhcmFtX3Rlc3RzX3By
ZXNlbnQgPSBQQVJBTV9URVNUX1JFR0VYLnNlYXJjaCgKLSAgICAgICAgICBSdW5BbmRSZXR1cm5P
dXRwdXQoKSkgaXMgbm90IE5vbmUKLQotICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcihzZWxmKToK
LSAgICAiIiJUZXN0cyB0aGUgYmVoYXZpb3Igb2Ygbm90IHNwZWNpZnlpbmcgdGhlIGZpbHRlci4i
IiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KE5vbmUsIEFDVElWRV9URVNUUykKLQotICBkZWYg
dGVzdERlZmF1bHRCZWhhdmlvcldpdGhTaGFyZHMoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhlIGJl
aGF2aW9yIHdpdGhvdXQgdGhlIGZpbHRlciwgd2l0aCBzaGFyZGluZyBlbmFibGVkLiIiIgotCi0g
ICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgMSwgQUNUSVZFX1RFU1RTKQot
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKE5vbmUsIDIsIEFDVElWRV9URVNUUykK
LSAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhOb25lLCBsZW4oQUNUSVZFX1RFU1RT
KSAtIDEsIEFDVElWRV9URVNUUykKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhO
b25lLCBsZW4oQUNUSVZFX1RFU1RTKSwgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVy
aWZ5V2l0aFNoYXJkaW5nKE5vbmUsIGxlbihBQ1RJVkVfVEVTVFMpICsgMSwgQUNUSVZFX1RFU1RT
KQotCi0gIGRlZiB0ZXN0RW1wdHlGaWx0ZXIoc2VsZik6Ci0gICAgIiIiVGVzdHMgYW4gZW1wdHkg
ZmlsdGVyLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJycsIFtdKQotICAgIHNlbGYuUnVu
QW5kVmVyaWZ5V2l0aFNoYXJkaW5nKCcnLCAxLCBbXSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeVdp
dGhTaGFyZGluZygnJywgMiwgW10pCi0KLSAgZGVmIHRlc3RCYWRGaWx0ZXIoc2VsZik6Ci0gICAg
IiIiVGVzdHMgYSBmaWx0ZXIgdGhhdCBtYXRjaGVzIG5vdGhpbmcuIiIiCi0KLSAgICBzZWxmLlJ1
bkFuZFZlcmlmeSgnQmFkRmlsdGVyJywgW10pCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2lu
Z0Rpc2FibGVkKCdCYWRGaWx0ZXInLCBbXSkKLQotICBkZWYgdGVzdEZ1bGxOYW1lKHNlbGYpOgot
ICAgICIiIlRlc3RzIGZpbHRlcmluZyBieSBmdWxsIG5hbWUuIiIiCi0KLSAgICBzZWxmLlJ1bkFu
ZFZlcmlmeSgnRm9vVGVzdC5YeXonLCBbJ0Zvb1Rlc3QuWHl6J10pCi0gICAgc2VsZi5SdW5BbmRW
ZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdGb29UZXN0Llh5eicsIFsnRm9vVGVzdC5YeXonXSkKLSAg
ICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZygnRm9vVGVzdC5YeXonLCA1LCBbJ0Zvb1Rl
c3QuWHl6J10pCi0KLSAgZGVmIHRlc3RVbml2ZXJzYWxGaWx0ZXJzKHNlbGYpOgotICAgICIiIlRl
c3RzIGZpbHRlcnMgdGhhdCBtYXRjaCBldmVyeXRoaW5nLiIiIgotCi0gICAgc2VsZi5SdW5BbmRW
ZXJpZnkoJyonLCBBQ1RJVkVfVEVTVFMpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJyouKicsIEFD
VElWRV9URVNUUykKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZygnKi4qJywgbGVu
KEFDVElWRV9URVNUUykgLSAzLCBBQ1RJVkVfVEVTVFMpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlB
bGxvd2luZ0Rpc2FibGVkKCcqJywgQUNUSVZFX1RFU1RTICsgRElTQUJMRURfVEVTVFMpCi0gICAg
c2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCcqLionLCBBQ1RJVkVfVEVTVFMgKyBE
SVNBQkxFRF9URVNUUykKLQotICBkZWYgdGVzdEZpbHRlckJ5VGVzdENhc2Uoc2VsZik6Ci0gICAg
IiIiVGVzdHMgZmlsdGVyaW5nIGJ5IHRlc3QgY2FzZSBuYW1lLiIiIgotCi0gICAgc2VsZi5SdW5B
bmRWZXJpZnkoJ0Zvb1Rlc3QuKicsIFsnRm9vVGVzdC5BYmMnLCAnRm9vVGVzdC5YeXonXSkKLQot
ICAgIEJBWl9URVNUUyA9IFsnQmF6VGVzdC5UZXN0T25lJywgJ0JhelRlc3QuVGVzdEEnLCAnQmF6
VGVzdC5UZXN0QiddCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0JhelRlc3QuKicsIEJBWl9URVNU
UykKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0JhelRlc3QuKicsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJBWl9URVNUUyArIFsnQmF6VGVz
dC5ESVNBQkxFRF9UZXN0QyddKQotCi0gIGRlZiB0ZXN0RmlsdGVyQnlUZXN0KHNlbGYpOgotICAg
ICIiIlRlc3RzIGZpbHRlcmluZyBieSB0ZXN0IG5hbWUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeSgnKi5UZXN0T25lJywgWydCYXJUZXN0LlRlc3RPbmUnLCAnQmF6VGVzdC5UZXN0T25lJ10p
Ci0KLSAgZGVmIHRlc3RGaWx0ZXJEaXNhYmxlZFRlc3RzKHNlbGYpOgotICAgICIiIlNlbGVjdCBv
bmx5IHRoZSBkaXNhYmxlZCB0ZXN0cyB0byBydW4uIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlm
eSgnRElTQUJMRURfRm9vYmFyVGVzdC5UZXN0MScsIFtdKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5
QWxsb3dpbmdEaXNhYmxlZCgnRElTQUJMRURfRm9vYmFyVGVzdC5UZXN0MScsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnRElTQUJMRURfRm9vYmFyVGVzdC5UZXN0MSdd
KQotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJypESVNBQkxFRF8qJywgW10pCi0gICAgc2VsZi5S
dW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCcqRElTQUJMRURfKicsIERJU0FCTEVEX1RFU1RT
KQotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJyouRElTQUJMRURfKicsIFtdKQotICAgIHNlbGYu
UnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnKi5ESVNBQkxFRF8qJywgWwotICAgICAgICAn
QmFyVGVzdC5ESVNBQkxFRF9UZXN0Rm91cicsCi0gICAgICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rl
c3RGaXZlJywKLSAgICAgICAgJ0JhelRlc3QuRElTQUJMRURfVGVzdEMnLAotICAgICAgICAnRElT
QUJMRURfRm9vYmFyVGVzdC5ESVNBQkxFRF9UZXN0MicsCi0gICAgICAgIF0pCi0KLSAgICBzZWxm
LlJ1bkFuZFZlcmlmeSgnRElTQUJMRURfKicsIFtdKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxs
b3dpbmdEaXNhYmxlZCgnRElTQUJMRURfKicsIFsKLSAgICAgICAgJ0RJU0FCTEVEX0Zvb2JhclRl
c3QuVGVzdDEnLAotICAgICAgICAnRElTQUJMRURfRm9vYmFyVGVzdC5ESVNBQkxFRF9UZXN0Mics
Ci0gICAgICAgICdESVNBQkxFRF9Gb29iYXJiYXpUZXN0LlRlc3RBJywKLSAgICAgICAgXSkKLQot
ICBkZWYgdGVzdFdpbGRjYXJkSW5UZXN0Q2FzZU5hbWUoc2VsZik6Ci0gICAgIiIiVGVzdHMgdXNp
bmcgd2lsZGNhcmQgaW4gdGhlIHRlc3QgY2FzZSBuYW1lLiIiIgotCi0gICAgc2VsZi5SdW5BbmRW
ZXJpZnkoJyphKi4qJywgWwotICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKLSAgICAgICAgJ0Jh
clRlc3QuVGVzdFR3bycsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCi0KLSAgICAgICAg
J0JhelRlc3QuVGVzdE9uZScsCi0gICAgICAgICdCYXpUZXN0LlRlc3RBJywKLSAgICAgICAgJ0Jh
elRlc3QuVGVzdEInLCBdICsgREVBVEhfVEVTVFMgKyBQQVJBTV9URVNUUykKLQotICBkZWYgdGVz
dFdpbGRjYXJkSW5UZXN0TmFtZShzZWxmKToKLSAgICAiIiJUZXN0cyB1c2luZyB3aWxkY2FyZCBp
biB0aGUgdGVzdCBuYW1lLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJyouKkEqJywgWydG
b29UZXN0LkFiYycsICdCYXpUZXN0LlRlc3RBJ10pCi0KLSAgZGVmIHRlc3RGaWx0ZXJXaXRob3V0
RG90KHNlbGYpOgotICAgICIiIlRlc3RzIGEgZmlsdGVyIHRoYXQgaGFzIG5vICcuJyBpbiBpdC4i
IiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqeionLCBbCi0gICAgICAgICdGb29UZXN0Llh5
eicsCi0KLSAgICAgICAgJ0JhelRlc3QuVGVzdE9uZScsCi0gICAgICAgICdCYXpUZXN0LlRlc3RB
JywKLSAgICAgICAgJ0JhelRlc3QuVGVzdEInLAotICAgICAgICBdKQotCi0gIGRlZiB0ZXN0VHdv
UGF0dGVybnMoc2VsZik6Ci0gICAgIiIiVGVzdHMgZmlsdGVycyB0aGF0IGNvbnNpc3Qgb2YgdHdv
IHBhdHRlcm5zLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0ZvbyouKjoqQSonLCBbCi0g
ICAgICAgICdGb29UZXN0LkFiYycsCi0gICAgICAgICdGb29UZXN0Llh5eicsCi0KLSAgICAgICAg
J0JhelRlc3QuVGVzdEEnLAotICAgICAgICBdKQotCi0gICAgIyBBbiBlbXB0eSBwYXR0ZXJuICsg
YSBub24tZW1wdHkgb25lCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJzoqQSonLCBbJ0Zvb1Rlc3Qu
QWJjJywgJ0JhelRlc3QuVGVzdEEnXSkKLQotICBkZWYgdGVzdFRocmVlUGF0dGVybnMoc2VsZik6
Ci0gICAgIiIiVGVzdHMgZmlsdGVycyB0aGF0IGNvbnNpc3Qgb2YgdGhyZWUgcGF0dGVybnMuIiIi
Ci0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKm9vKjoqQSo6Kk9uZScsIFsKLSAgICAgICAgJ0Zv
b1Rlc3QuQWJjJywKLSAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICAgICAnQmFyVGVzdC5U
ZXN0T25lJywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAgICAgICAgJ0JhelRlc3Qu
VGVzdEEnLAotICAgICAgICBdKQotCi0gICAgIyBUaGUgMm5kIHBhdHRlcm4gaXMgZW1wdHkuCi0g
ICAgc2VsZi5SdW5BbmRWZXJpZnkoJypvbyo6OipPbmUnLCBbCi0gICAgICAgICdGb29UZXN0LkFi
YycsCi0gICAgICAgICdGb29UZXN0Llh5eicsCi0KLSAgICAgICAgJ0JhclRlc3QuVGVzdE9uZScs
Ci0KLSAgICAgICAgJ0JhelRlc3QuVGVzdE9uZScsCi0gICAgICAgIF0pCi0KLSAgICAjIFRoZSBs
YXN0IDIgcGF0dGVybnMgYXJlIGVtcHR5LgotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqb28qOjon
LCBbCi0gICAgICAgICdGb29UZXN0LkFiYycsCi0gICAgICAgICdGb29UZXN0Llh5eicsCi0gICAg
ICAgIF0pCi0KLSAgZGVmIHRlc3ROZWdhdGl2ZUZpbHRlcnMoc2VsZik6Ci0gICAgc2VsZi5SdW5B
bmRWZXJpZnkoJyotQmF6VGVzdC5UZXN0T25lJywgWwotICAgICAgICAnRm9vVGVzdC5BYmMnLAot
ICAgICAgICAnRm9vVGVzdC5YeXonLAotCi0gICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAotICAg
ICAgICAnQmFyVGVzdC5UZXN0VHdvJywKLSAgICAgICAgJ0JhclRlc3QuVGVzdFRocmVlJywKLQot
ICAgICAgICAnQmF6VGVzdC5UZXN0QScsCi0gICAgICAgICdCYXpUZXN0LlRlc3RCJywKLSAgICAg
ICAgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMpCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlm
eSgnKi1Gb29UZXN0LkFiYzpCYXpUZXN0LionLCBbCi0gICAgICAgICdGb29UZXN0Llh5eicsCi0K
LSAgICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAot
ICAgICAgICAnQmFyVGVzdC5UZXN0VGhyZWUnLAotICAgICAgICBdICsgREVBVEhfVEVTVFMgKyBQ
QVJBTV9URVNUUykKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdCYXJUZXN0LiotQmFyVGVzdC5U
ZXN0T25lJywgWwotICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKLSAgICAgICAgJ0JhclRlc3Qu
VGVzdFRocmVlJywKLSAgICAgICAgXSkKLQotICAgICMgVGVzdHMgd2l0aG91dCBsZWFkaW5nICcq
Jy4KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnLUZvb1Rlc3QuQWJjOkZvb1Rlc3QuWHl6OkJhelRl
c3QuKicsIFsKLSAgICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCi0gICAgICAgICdCYXJUZXN0LlRl
c3RUd28nLAotICAgICAgICAnQmFyVGVzdC5UZXN0VGhyZWUnLAotICAgICAgICBdICsgREVBVEhf
VEVTVFMgKyBQQVJBTV9URVNUUykKLQotICAgICMgVmFsdWUgcGFyYW1ldGVyaXplZCB0ZXN0cy4K
LSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi8qJywgUEFSQU1fVEVTVFMpCi0KLSAgICAjIFZhbHVl
IHBhcmFtZXRlcml6ZWQgdGVzdHMgZmlsdGVyaW5nIGJ5IHRoZSBzZXF1ZW5jZSBuYW1lLgotICAg
IHNlbGYuUnVuQW5kVmVyaWZ5KCdTZXFQLyonLCBbCi0gICAgICAgICdTZXFQL1BhcmFtVGVzdC5U
ZXN0WC8wJywKLSAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzEnLAotICAgICAgICAnU2Vx
UC9QYXJhbVRlc3QuVGVzdFkvMCcsCi0gICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8xJywK
LSAgICAgICAgXSkKLQotICAgICMgVmFsdWUgcGFyYW1ldGVyaXplZCB0ZXN0cyBmaWx0ZXJpbmcg
YnkgdGhlIHRlc3QgbmFtZS4KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi8wJywgWwotICAgICAg
ICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMCcsCi0gICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0
WS8wJywKLSAgICAgICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RYLzAnLAotICAgICAgICAnU2VxUS9Q
YXJhbVRlc3QuVGVzdFkvMCcsCi0gICAgICAgIF0pCi0KLSAgZGVmIHRlc3RGbGFnT3ZlcnJpZGVz
RW52VmFyKHNlbGYpOgotICAgICIiIlRlc3RzIHRoYXQgdGhlIGZpbHRlciBmbGFnIG92ZXJyaWRl
cyB0aGUgZmlsdGVyaW5nIGVudi4gdmFyaWFibGUuIiIiCi0KLSAgICBTZXRFbnZWYXIoRklMVEVS
X0VOVl9WQVIsICdGb28qJykKLSAgICBhcmdzID0gWyctLSVzPSVzJyAlIChGSUxURVJfRkxBRywg
JypPbmUnKV0KLSAgICB0ZXN0c19ydW4gPSBSdW5BbmRFeHRyYWN0VGVzdExpc3QoYXJncylbMF0K
LSAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIE5vbmUpCi0KLSAgICBzZWxmLkFzc2VydFNl
dEVxdWFsKHRlc3RzX3J1biwgWydCYXJUZXN0LlRlc3RPbmUnLCAnQmF6VGVzdC5UZXN0T25lJ10p
Ci0KLSAgZGVmIHRlc3RTaGFyZFN0YXR1c0ZpbGVJc0NyZWF0ZWQoc2VsZik6Ci0gICAgIiIiVGVz
dHMgdGhhdCB0aGUgc2hhcmQgZmlsZSBpcyBjcmVhdGVkIGlmIHNwZWNpZmllZCBpbiB0aGUgZW52
aXJvbm1lbnQuIiIiCi0KLSAgICBzaGFyZF9zdGF0dXNfZmlsZSA9IG9zLnBhdGguam9pbihndGVz
dF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnc2hhcmRfc3RhdHVzX2ZpbGUnKQotICAgIHNlbGYuYXNzZXJ0Xyhub3Qgb3MucGF0
aC5leGlzdHMoc2hhcmRfc3RhdHVzX2ZpbGUpKQotCi0gICAgZXh0cmFfZW52ID0ge1NIQVJEX1NU
QVRVU19GSUxFX0VOVl9WQVI6IHNoYXJkX3N0YXR1c19maWxlfQotICAgIHRyeToKLSAgICAgIElu
dm9rZVdpdGhNb2RpZmllZEVudihleHRyYV9lbnYsIFJ1bkFuZFJldHVybk91dHB1dCkKLSAgICBm
aW5hbGx5OgotICAgICAgc2VsZi5hc3NlcnRfKG9zLnBhdGguZXhpc3RzKHNoYXJkX3N0YXR1c19m
aWxlKSkKLSAgICAgIG9zLnJlbW92ZShzaGFyZF9zdGF0dXNfZmlsZSkKLQotICBkZWYgdGVzdFNo
YXJkU3RhdHVzRmlsZUlzQ3JlYXRlZFdpdGhMaXN0VGVzdHMoc2VsZik6Ci0gICAgIiIiVGVzdHMg
dGhhdCB0aGUgc2hhcmQgZmlsZSBpcyBjcmVhdGVkIHdpdGggdGhlICJsaXN0X3Rlc3RzIiBmbGFn
LiIiIgotCi0gICAgc2hhcmRfc3RhdHVzX2ZpbGUgPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91
dGlscy5HZXRUZW1wRGlyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3NoYXJkX3N0YXR1c19maWxlMicpCi0gICAgc2VsZi5hc3NlcnRfKG5vdCBvcy5wYXRoLmV4aXN0
cyhzaGFyZF9zdGF0dXNfZmlsZSkpCi0KLSAgICBleHRyYV9lbnYgPSB7U0hBUkRfU1RBVFVTX0ZJ
TEVfRU5WX1ZBUjogc2hhcmRfc3RhdHVzX2ZpbGV9Ci0gICAgdHJ5OgotICAgICAgb3V0cHV0ID0g
SW52b2tlV2l0aE1vZGlmaWVkRW52KGV4dHJhX2VudiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSdW5BbmRSZXR1cm5PdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW0xJU1RfVEVTVFNfRkxBR10pCi0gICAgZmluYWxseToKLSAgICAgICMg
VGhpcyBhc3NlcnRpb24gZW5zdXJlcyB0aGF0IEdvb2dsZSBUZXN0IGVudW1lcmF0ZWQgdGhlIHRl
c3RzIGFzCi0gICAgICAjIG9wcG9zZWQgdG8gcnVubmluZyB0aGVtLgotICAgICAgc2VsZi5hc3Nl
cnRfKCdbPT09PT09PT09PV0nIG5vdCBpbiBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgJ1Vu
ZXhwZWN0ZWQgb3V0cHV0IGR1cmluZyB0ZXN0IGVudW1lcmF0aW9uLlxuJwotICAgICAgICAgICAg
ICAgICAgICdQbGVhc2UgZW5zdXJlIHRoYXQgTElTVF9URVNUU19GTEFHIGlzIGFzc2lnbmVkIHRo
ZVxuJwotICAgICAgICAgICAgICAgICAgICdjb3JyZWN0IGZsYWcgdmFsdWUgZm9yIGxpc3Rpbmcg
R29vZ2xlIFRlc3QgdGVzdHMuJykKLQotICAgICAgc2VsZi5hc3NlcnRfKG9zLnBhdGguZXhpc3Rz
KHNoYXJkX3N0YXR1c19maWxlKSkKLSAgICAgIG9zLnJlbW92ZShzaGFyZF9zdGF0dXNfZmlsZSkK
LQotICBpZiBTVVBQT1JUU19ERUFUSF9URVNUUzoKLSAgICBkZWYgdGVzdFNoYXJkaW5nV29ya3NX
aXRoRGVhdGhUZXN0cyhzZWxmKToKLSAgICAgICIiIlRlc3RzIGludGVncmF0aW9uIHdpdGggZGVh
dGggdGVzdHMgYW5kIHNoYXJkaW5nLiIiIgotCi0gICAgICBndGVzdF9maWx0ZXIgPSAnSGFzRGVh
dGhUZXN0Lio6U2VxUC8qJwotICAgICAgZXhwZWN0ZWRfdGVzdHMgPSBbCi0gICAgICAgICAgJ0hh
c0RlYXRoVGVzdC5UZXN0MScsCi0gICAgICAgICAgJ0hhc0RlYXRoVGVzdC5UZXN0MicsCi0KLSAg
ICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMCcsCi0gICAgICAgICAgJ1NlcVAvUGFyYW1U
ZXN0LlRlc3RYLzEnLAotICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAg
ICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMScsCi0gICAgICAgICAgXQotCi0gICAgICBmb3Ig
ZmxhZyBpbiBbJy0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZT10aHJlYWRzYWZlJywKLSAgICAgICAg
ICAgICAgICAgICAnLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlPWZhc3QnXToKLSAgICAgICAgc2Vs
Zi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoZ3Rlc3RfZmlsdGVyLCAzLCBleHBlY3RlZF90ZXN0
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfZXhpdF8wPVRy
dWUsIGFyZ3M9W2ZsYWddKQotICAgICAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhn
dGVzdF9maWx0ZXIsIDUsIGV4cGVjdGVkX3Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGVja19leGl0XzA9VHJ1ZSwgYXJncz1bZmxhZ10pCi0KLWlmIF9fbmFt
ZV9fID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2ZpbHRlcl91bml0dGVzdF8uY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2ZpbHRlcl91bml0dGVzdF8uY2MK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyNTUwNGZlOTRhZmMxNzdjNDZjYmMxMzVm
ZWM2NzVjNTU0ZDJlMGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3Rf
LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1LCBH
b29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
Ly8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tICha
aGFueW9uZyBXYW4pCi0KLS8vIFVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QgdGVzdCBmaWx0ZXJz
LgotLy8KLS8vIEEgdXNlciBjYW4gc3BlY2lmeSB3aGljaCB0ZXN0KHMpIGluIGEgR29vZ2xlIFRl
c3QgcHJvZ3JhbSB0byBydW4gdmlhCi0vLyBlaXRoZXIgdGhlIEdURVNUX0ZJTFRFUiBlbnZpcm9u
bWVudCB2YXJpYWJsZSBvciB0aGUgLS1ndGVzdF9maWx0ZXIKLS8vIGZsYWcuICBUaGlzIGlzIHVz
ZWQgZm9yIHRlc3Rpbmcgc3VjaCBmdW5jdGlvbmFsaXR5LgotLy8KLS8vIFRoZSBwcm9ncmFtIHdp
bGwgYmUgaW52b2tlZCBmcm9tIGEgUHl0aG9uIHVuaXQgdGVzdC4gIERvbid0IHJ1biBpdAotLy8g
ZGlyZWN0bHkuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1uYW1lc3BhY2UgewotCi0v
LyBUZXN0IGNhc2UgRm9vVGVzdC4KLQotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKLX07Ci0KLVRFU1RfRihGb29UZXN0LCBBYmMpIHsKLX0KLQotVEVTVF9GKEZvb1Rlc3Qs
IFh5eikgewotICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKLX0KLQotLy8gVGVzdCBj
YXNlIEJhclRlc3QuCi0KLVRFU1QoQmFyVGVzdCwgVGVzdE9uZSkgewotfQotCi1URVNUKEJhclRl
c3QsIFRlc3RUd28pIHsKLX0KLQotVEVTVChCYXJUZXN0LCBUZXN0VGhyZWUpIHsKLX0KLQotVEVT
VChCYXJUZXN0LCBESVNBQkxFRF9UZXN0Rm91cikgewotICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZh
aWx1cmUuIjsKLX0KLQotVEVTVChCYXJUZXN0LCBESVNBQkxFRF9UZXN0Rml2ZSkgewotICBGQUlM
KCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKLX0KLQotLy8gVGVzdCBjYXNlIEJhelRlc3QuCi0K
LVRFU1QoQmF6VGVzdCwgVGVzdE9uZSkgewotICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUu
IjsKLX0KLQotVEVTVChCYXpUZXN0LCBUZXN0QSkgewotfQotCi1URVNUKEJhelRlc3QsIFRlc3RC
KSB7Ci19Ci0KLVRFU1QoQmF6VGVzdCwgRElTQUJMRURfVGVzdEMpIHsKLSAgRkFJTCgpIDw8ICJF
eHBlY3RlZCBmYWlsdXJlLiI7Ci19Ci0KLS8vIFRlc3QgY2FzZSBIYXNEZWF0aFRlc3QKLQotVEVT
VChIYXNEZWF0aFRlc3QsIFRlc3QxKSB7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoZXhp
dCgxKSwgIi4qIik7Ci19Ci0KLS8vIFdlIG5lZWQgYXQgbGVhc3QgdHdvIGRlYXRoIHRlc3RzIHRv
IG1ha2Ugc3VyZSB0aGF0IHRoZSBhbGwgZGVhdGggdGVzdHMKLS8vIGFyZW4ndCBvbiB0aGUgZmly
c3Qgc2hhcmQuCi1URVNUKEhhc0RlYXRoVGVzdCwgVGVzdDIpIHsKLSAgRVhQRUNUX0RFQVRIX0lG
X1NVUFBPUlRFRChleGl0KDEpLCAiLioiKTsKLX0KLQotLy8gVGVzdCBjYXNlIEZvb2JhclRlc3QK
LQotVEVTVChESVNBQkxFRF9Gb29iYXJUZXN0LCBUZXN0MSkgewotICBGQUlMKCkgPDwgIkV4cGVj
dGVkIGZhaWx1cmUuIjsKLX0KLQotVEVTVChESVNBQkxFRF9Gb29iYXJUZXN0LCBESVNBQkxFRF9U
ZXN0MikgewotICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKLX0KLQotLy8gVGVzdCBj
YXNlIEZvb2JhcmJhelRlc3QKLQotVEVTVChESVNBQkxFRF9Gb29iYXJiYXpUZXN0LCBUZXN0QSkg
ewotICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKLX0KLQotI2lmIEdURVNUX0hBU19Q
QVJBTV9URVNUCi1jbGFzcyBQYXJhbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJh
bTxpbnQ+IHsKLX07Ci0KLVRFU1RfUChQYXJhbVRlc3QsIFRlc3RYKSB7Ci19Ci0KLVRFU1RfUChQ
YXJhbVRlc3QsIFRlc3RZKSB7Ci19Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNlcVAsIFBh
cmFtVGVzdCwgdGVzdGluZzo6VmFsdWVzKDEsIDIpKTsKLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KFNlcVEsIFBhcmFtVGVzdCwgdGVzdGluZzo6VmFsdWVzKDUsIDYpKTsKLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX1BBUkFNX1RFU1QKLQotfSAgLy8gbmFtZXNwYWNlCi0KLWludCBtYWluKGludCBhcmdj
LCBjaGFyICoqYXJndikgewotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2
KTsKLQotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVzdC5weQppbmRleCAzY2I0YzQ4ZTBiNDYyOGQ5YWE3
YzZmMzIwN2FiN2VlMTBjZDIyYmEzLi41ODJkMjRjMmRjY2U4OTQ1MzhhYTYzY2NiZDYxMjBiZGQ0
YjM1MGEwIDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2hl
bHBfdGVzdC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2hlbHBf
dGVzdC5weQpAQCAtMjksMjcgKzI5LDI2IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogCi0iIiJUZXN0cyB0aGUgLS1oZWxwIGZsYWcgb2YgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1l
d29yay4KKyIiIlRlc3RzIHRoZSAtLWhlbHAgZmxhZyBvZiBHb29nbGUgQysrIFRlc3RpbmcgYW5k
IE1vY2tpbmcgRnJhbWV3b3JrLgogCiBTWU5PUFNJUwotICAgICAgIGd0ZXN0X2hlbHBfdGVzdC5w
eSAtLWd0ZXN0X2J1aWxkX2Rpcj1CVUlMRC9ESVIKKyAgICAgICBndGVzdF9oZWxwX3Rlc3QucHkg
LS1idWlsZF9kaXI9QlVJTEQvRElSCiAgICAgICAgICAjIHdoZXJlIEJVSUxEL0RJUiBjb250YWlu
cyB0aGUgYnVpbHQgZ3Rlc3RfaGVscF90ZXN0XyBmaWxlLgogICAgICAgIGd0ZXN0X2hlbHBfdGVz
dC5weQogIiIiCiAKLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikn
Ci0KIGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwogCiAKK0lT
X0xJTlVYID0gb3MubmFtZSA9PSAncG9zaXgnIGFuZCBvcy51bmFtZSgpWzBdID09ICdMaW51eCcK
IElTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdudCcKIAogUFJPR1JBTV9QQVRIID0gZ3Rlc3RfdGVz
dF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2d0ZXN0X2hlbHBfdGVzdF8nKQogRkxBR19Q
UkVGSVggPSAnLS1ndGVzdF8nCi1DQVRDSF9FWENFUFRJT05TX0ZMQUcgPSBGTEFHX1BSRUZJWCAr
ICdjYXRjaF9leGNlcHRpb25zJwogREVBVEhfVEVTVF9TVFlMRV9GTEFHID0gRkxBR19QUkVGSVgg
KyAnZGVhdGhfdGVzdF9zdHlsZScKK1NUUkVBTV9SRVNVTFRfVE9fRkxBRyA9IEZMQUdfUFJFRklY
ICsgJ3N0cmVhbV9yZXN1bHRfdG8nCiBVTktOT1dOX0ZMQUcgPSBGTEFHX1BSRUZJWCArICd1bmtu
b3duX2ZsYWdfZm9yX3Rlc3RpbmcnCiBMSVNUX1RFU1RTX0ZMQUcgPSBGTEFHX1BSRUZJWCArICds
aXN0X3Rlc3RzJwogSU5DT1JSRUNUX0ZMQUdfVkFSSUFOVFMgPSBbcmUuc3ViKCdeLS0nLCAnLScs
IExJU1RfVEVTVFNfRkxBRyksCkBAIC03Miw3ICs3MSw4IEBAIEhFTFBfUkVHRVggPSByZS5jb21w
aWxlKAogICAgIEZMQUdfUFJFRklYICsgcidwcmludF90aW1lLionICsKICAgICBGTEFHX1BSRUZJ
WCArIHInb3V0cHV0PS4qJyArCiAgICAgRkxBR19QUkVGSVggKyByJ2JyZWFrX29uX2ZhaWx1cmUu
KicgKwotICAgIEZMQUdfUFJFRklYICsgcid0aHJvd19vbl9mYWlsdXJlLionLAorICAgIEZMQUdf
UFJFRklYICsgcid0aHJvd19vbl9mYWlsdXJlLionICsKKyAgICBGTEFHX1BSRUZJWCArIHInY2F0
Y2hfZXhjZXB0aW9ucz0wLionLAogICAgIHJlLkRPVEFMTCkKIAogCkBAIC0xMDksMTAgKzEwOSwx
MSBAQCBjbGFzcyBHVGVzdEhlbHBUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgogICAg
IGV4aXRfY29kZSwgb3V0cHV0ID0gUnVuV2l0aEZsYWcoZmxhZykKICAgICBzZWxmLmFzc2VydEVx
dWFscygwLCBleGl0X2NvZGUpCiAgICAgc2VsZi5hc3NlcnRfKEhFTFBfUkVHRVguc2VhcmNoKG91
dHB1dCksIG91dHB1dCkKLSAgICBpZiBJU19XSU5ET1dTOgotICAgICAgc2VsZi5hc3NlcnRfKENB
VENIX0VYQ0VQVElPTlNfRkxBRyBpbiBvdXRwdXQsIG91dHB1dCkKKworICAgIGlmIElTX0xJTlVY
OgorICAgICAgc2VsZi5hc3NlcnRfKFNUUkVBTV9SRVNVTFRfVE9fRkxBRyBpbiBvdXRwdXQsIG91
dHB1dCkKICAgICBlbHNlOgotICAgICAgc2VsZi5hc3NlcnRfKENBVENIX0VYQ0VQVElPTlNfRkxB
RyBub3QgaW4gb3V0cHV0LCBvdXRwdXQpCisgICAgICBzZWxmLmFzc2VydF8oU1RSRUFNX1JFU1VM
VF9UT19GTEFHIG5vdCBpbiBvdXRwdXQsIG91dHB1dCkKIAogICAgIGlmIFNVUFBPUlRTX0RFQVRI
X1RFU1RTIGFuZCBub3QgSVNfV0lORE9XUzoKICAgICAgIHNlbGYuYXNzZXJ0XyhERUFUSF9URVNU
X1NUWUxFX0ZMQUcgaW4gb3V0cHV0LCBvdXRwdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVzdF8uY2MKaW5kZXggYWFkMGQ3MmQ3Njc1MzVlMWI3YTcy
MjI0Nzc1NDMwMTAzM2U3MTA2Zi4uNzUwYWU2Y2U5NWZjYmNiMzM4ZWQ1ZGIyYjU4OGYxNWNkZDVj
MmY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9oZWxw
X3Rlc3RfLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90
ZXN0Xy5jYwpAQCAtMjYsMTMgKzI2LDEyIEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlv
bmcgV2FuKQorCiAKIC8vIFRoaXMgcHJvZ3JhbSBpcyBtZWFudCB0byBiZSBydW4gYnkgZ3Rlc3Rf
aGVscF90ZXN0LnB5LiAgRG8gbm90IHJ1bgogLy8gaXQgZGlyZWN0bHkuCiAKLSNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIC8vIFdoZW4gYSBoZWxw
IGZsYWcgaXMgc3BlY2lmaWVkLCB0aGlzIHByb2dyYW0gc2hvdWxkIHNraXAgdGhlIHRlc3RzCiAv
LyBhbmQgZXhpdCB3aXRoIDA7IG90aGVyd2lzZSB0aGUgZm9sbG93aW5nIHRlc3Qgd2lsbCBiZSBl
eGVjdXRlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
anNvbl90ZXN0X3V0aWxzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9q
c29uX3Rlc3RfdXRpbHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJiYmZjMjg4ZjgyYjM4N2NkODM0NDZjMGEw
NWJhMTY3YjFhYTc1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfanNvbl90ZXN0X3V0aWxzLnB5CkBAIC0wLDAgKzEsNjAgQEAKKyMgQ29weXJp
Z2h0IDIwMTgsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisiIiJVbml0IHRlc3QgdXRpbGl0aWVzIGZvciBndGVzdF9qc29uX291dHB1dC4i
IiIKKworaW1wb3J0IHJlCisKKworZGVmIG5vcm1hbGl6ZShvYmopOgorICAiIiJOb3JtYWxpemUg
b3V0cHV0IG9iamVjdC4KKworICBBcmdzOgorICAgICBvYmo6IEdvb2dsZSBUZXN0J3MgSlNPTiBv
dXRwdXQgb2JqZWN0IHRvIG5vcm1hbGl6ZS4KKworICBSZXR1cm5zOgorICAgICBOb3JtYWxpemVk
IG91dHB1dCB3aXRob3V0IGFueSByZWZlcmVuY2VzIHRvIHRyYW5zaWVudCBpbmZvcm1hdGlvbiB0
aGF0IG1heQorICAgICBjaGFuZ2UgZnJvbSBydW4gdG8gcnVuLgorICAiIiIKKyAgZGVmIF9ub3Jt
YWxpemUoa2V5LCB2YWx1ZSk6CisgICAgaWYga2V5ID09ICd0aW1lJzoKKyAgICAgIHJldHVybiBy
ZS5zdWIocideXGQrKFwuXGQrKT9zJCcsICcqJywgdmFsdWUpCisgICAgZWxpZiBrZXkgPT0gJ3Rp
bWVzdGFtcCc6CisgICAgICByZXR1cm4gcmUuc3ViKHInXlxkezR9LVxkXGQtXGRcZFRcZFxkOlxk
XGQ6XGRcZFokJywgJyonLCB2YWx1ZSkKKyAgICBlbGlmIGtleSA9PSAnZmFpbHVyZSc6CisgICAg
ICB2YWx1ZSA9IHJlLnN1YihyJ14uKlsvXFxdKC4qOilcZCtcbicsICdcXDEqXG4nLCB2YWx1ZSkK
KyAgICAgIHJldHVybiByZS5zdWIocidTdGFjayB0cmFjZTpcbigufFxuKSonLCAnU3RhY2sgdHJh
Y2U6XG4qJywgdmFsdWUpCisgICAgZWxzZToKKyAgICAgIHJldHVybiBub3JtYWxpemUodmFsdWUp
CisgIGlmIGlzaW5zdGFuY2Uob2JqLCBkaWN0KToKKyAgICByZXR1cm4ge2s6IF9ub3JtYWxpemUo
aywgdikgZm9yIGssIHYgaW4gb2JqLml0ZW1zKCl9CisgIGlmIGlzaW5zdGFuY2Uob2JqLCBsaXN0
KToKKyAgICByZXR1cm4gW25vcm1hbGl6ZSh4KSBmb3IgeCBpbiBvYmpdCisgIGVsc2U6CisgICAg
cmV0dXJuIG9iagpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9saXN0X291dHB1dF91bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2JiYTdlYTJjZmQzN2Nh
ZDU1MDlmNDBmOGU4YjAwMjI3MDZiZTc4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3QucHkKQEAgLTAsMCAr
MSwxNDEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAwNiwgR29v
Z2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJV
bml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuCisKK0Eg
dXNlciBjYW4gYXNrIEdvb2dsZSBUZXN0IHRvIGxpc3QgYWxsIHRlc3RzIGJ5IHNwZWNpZnlpbmcg
dGhlCistLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4gSWYgb3V0cHV0IGlzIHJlcXVlc3RlZCwgdmlh
IC0tZ3Rlc3Rfb3V0cHV0PXhtbAorb3IgLS1ndGVzdF9vdXRwdXQ9anNvbiwgdGhlIHRlc3RzIGFy
ZSBsaXN0ZWQsIHdpdGggZXh0cmEgaW5mb3JtYXRpb24gaW4gdGhlCitvdXRwdXQgZmlsZS4KK1Ro
aXMgc2NyaXB0IHRlc3RzIHN1Y2ggZnVuY3Rpb25hbGl0eSBieSBpbnZva2luZyBndGVzdF9saXN0
X291dHB1dF91bml0dGVzdF8KKyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aCBHb29nbGUgVGVzdCkg
dGhlIGNvbW1hbmQgbGluZSBmbGFncy4KKyIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1w
b3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworR1RFU1RfTElTVF9URVNUU19GTEFHID0gJy0tZ3Rlc3Rf
bGlzdF90ZXN0cycKK0dURVNUX09VVFBVVF9GTEFHID0gJy0tZ3Rlc3Rfb3V0cHV0JworCitFWFBF
Q1RFRF9YTUwgPSAiIiI8XD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiXD8+Cis8
dGVzdHN1aXRlcyB0ZXN0cz0iMiIgbmFtZT0iQWxsVGVzdHMiPgorICA8dGVzdHN1aXRlIG5hbWU9
IkZvb1Rlc3QiIHRlc3RzPSIyIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iVGVzdDEiIGZpbGU9Ii4q
Z3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3RfLmNjIiBsaW5lPSI0MyIgLz4KKyAgICA8dGVzdGNh
c2UgbmFtZT0iVGVzdDIiIGZpbGU9Ii4qZ3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3RfLmNjIiBs
aW5lPSI0NSIgLz4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rlc3RzdWl0ZXM+CisiIiIKKworRVhQRUNU
RURfSlNPTiA9ICIiInsKKyAgInRlc3RzIjogMiwKKyAgIm5hbWUiOiAiQWxsVGVzdHMiLAorICAi
dGVzdHN1aXRlcyI6IFxbCisgICAgeworICAgICAgIm5hbWUiOiAiRm9vVGVzdCIsCisgICAgICAi
dGVzdHMiOiAyLAorICAgICAgInRlc3RzdWl0ZSI6IFxbCisgICAgICAgIHsKKyAgICAgICAgICAi
bmFtZSI6ICJUZXN0MSIsCisgICAgICAgICAgImZpbGUiOiAiLipndGVzdF9saXN0X291dHB1dF91
bml0dGVzdF8uY2MiLAorICAgICAgICAgICJsaW5lIjogNDMKKyAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICJuYW1lIjogIlRlc3QyIiwKKyAgICAgICAgICAiZmlsZSI6ICIuKmd0ZXN0
X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0Xy5jYyIsCisgICAgICAgICAgImxpbmUiOiA0NQorICAgICAg
ICB9CisgICAgICBcXQorICAgIH0KKyAgXF0KK30KKyIiIgorCisKK2NsYXNzIEdUZXN0TGlzdFRl
c3RzT3V0cHV0VW5pdFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICIiIlVuaXQg
dGVzdCBmb3IgR29vZ2xlIFRlc3QncyBsaXN0IHRlc3RzIHdpdGggb3V0cHV0IHRvIGZpbGUgZnVu
Y3Rpb25hbGl0eS4KKyAgIiIiCisKKyAgZGVmIHRlc3RYbWwoc2VsZik6CisgICAgIiIiVmVyaWZp
ZXMgWE1MIG91dHB1dCBmb3IgbGlzdGluZyB0ZXN0cyBpbiBhIEdvb2dsZSBUZXN0IGJpbmFyeS4K
KworICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkgWE1MIG91
dHB1dCwgYW5kCisgICAgdGVzdHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBleHBlY3RlZC4KKyAg
ICAiIiIKKyAgICBzZWxmLl9UZXN0T3V0cHV0KCd4bWwnLCBFWFBFQ1RFRF9YTUwpCisKKyAgZGVm
IHRlc3RKU09OKHNlbGYpOgorICAgICIiIlZlcmlmaWVzIFhNTCBvdXRwdXQgZm9yIGxpc3Rpbmcg
dGVzdHMgaW4gYSBHb29nbGUgVGVzdCBiaW5hcnkuCisKKyAgICBSdW5zIGEgdGVzdCBwcm9ncmFt
IHRoYXQgZ2VuZXJhdGVzIGFuIGVtcHR5IFhNTCBvdXRwdXQsIGFuZAorICAgIHRlc3RzIHRoYXQg
dGhlIFhNTCBvdXRwdXQgaXMgZXhwZWN0ZWQuCisgICAgIiIiCisgICAgc2VsZi5fVGVzdE91dHB1
dCgnanNvbicsIEVYUEVDVEVEX0pTT04pCisKKyAgZGVmIF9HZXRPdXRwdXQoc2VsZiwgb3V0X2Zv
cm1hdCk6CisgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0
VGVtcERpcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdF9vdXQuJyArIG91
dF9mb3JtYXQpCisgICAgZ3Rlc3RfcHJvZ19wYXRoID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0
RXhlY3V0YWJsZVBhdGgoCisgICAgICAgICdndGVzdF9saXN0X291dHB1dF91bml0dGVzdF8nKQor
CisgICAgY29tbWFuZCA9IChbCisgICAgICAgIGd0ZXN0X3Byb2dfcGF0aCwKKyAgICAgICAgJyVz
PSVzOiVzJyAlIChHVEVTVF9PVVRQVVRfRkxBRywgb3V0X2Zvcm1hdCwgZmlsZV9wYXRoKSwKKyAg
ICAgICAgJy0tZ3Rlc3RfbGlzdF90ZXN0cycKKyAgICBdKQorICAgIGVudmlyb25fY29weSA9IG9z
LmVudmlyb24uY29weSgpCisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKKyAg
ICAgICAgY29tbWFuZCwgZW52PWVudmlyb25fY29weSwgd29ya2luZ19kaXI9Z3Rlc3RfdGVzdF91
dGlscy5HZXRUZW1wRGlyKCkpCisKKyAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCisgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoMCwgcC5leGl0X2NvZGUpCisgICAgd2l0aCBvcGVuKGZpbGVfcGF0aCkg
YXMgZjoKKyAgICAgIHJlc3VsdCA9IGYucmVhZCgpCisgICAgcmV0dXJuIHJlc3VsdAorCisgIGRl
ZiBfVGVzdE91dHB1dChzZWxmLCB0ZXN0X2Zvcm1hdCwgZXhwZWN0ZWRfb3V0cHV0KToKKyAgICBh
Y3R1YWwgPSBzZWxmLl9HZXRPdXRwdXQodGVzdF9mb3JtYXQpCisgICAgYWN0dWFsX2xpbmVzID0g
YWN0dWFsLnNwbGl0bGluZXMoKQorICAgIGV4cGVjdGVkX2xpbmVzID0gZXhwZWN0ZWRfb3V0cHV0
LnNwbGl0bGluZXMoKQorICAgIGxpbmVfY291bnQgPSAwCisgICAgZm9yIGFjdHVhbF9saW5lIGlu
IGFjdHVhbF9saW5lczoKKyAgICAgIGV4cGVjdGVkX2xpbmUgPSBleHBlY3RlZF9saW5lc1tsaW5l
X2NvdW50XQorICAgICAgZXhwZWN0ZWRfbGluZV9yZSA9IHJlLmNvbXBpbGUoZXhwZWN0ZWRfbGlu
ZS5zdHJpcCgpKQorICAgICAgc2VsZi5hc3NlcnRfKAorICAgICAgICAgIGV4cGVjdGVkX2xpbmVf
cmUubWF0Y2goYWN0dWFsX2xpbmUuc3RyaXAoKSksCisgICAgICAgICAgKCdhY3R1YWwgb3V0cHV0
IG9mICIlcyIsXG4nCisgICAgICAgICAgICd3aGljaCBkb2VzIG5vdCBtYXRjaCBleHBlY3RlZCBy
ZWdleCBvZiAiJXMiXG4nCisgICAgICAgICAgICdvbiBsaW5lICVkJyAlIChhY3R1YWwsIGV4cGVj
dGVkX291dHB1dCwgbGluZV9jb3VudCkpKQorICAgICAgbGluZV9jb3VudCA9IGxpbmVfY291bnQg
KyAxCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgb3MuZW52aXJvblsnR1RFU1Rf
U1RBQ0tfVFJBQ0VfREVQVEgnXSA9ICcxJworICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X291dHB1dF91
bml0dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3Rfb3V0
cHV0X3VuaXR0ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWM3YjRkZTM0NjFmYzE2NDVmNDExYjcxZjll
MzdmODIyNGZkOGE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF9saXN0X291dHB1dF91bml0dGVzdF8uY2MKQEAgLTAsMCArMSw1MSBAQAorLy8g
Q29weXJpZ2h0IDIwMTgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0
cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisv
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEF1dGhvcjog
ZGF2aWQuc2NodWxkZW5mcmVpQGdtYWlsLmNvbSAoRGF2aWQgU2NodWxkZW5mcmVpKQorCisvLyBV
bml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgLS1ndGVzdF9saXN0X3Rlc3RzIGFuZCAtLWd0ZXN0
X291dHB1dCBmbGFnLgorLy8KKy8vIEEgdXNlciBjYW4gYXNrIEdvb2dsZSBUZXN0IHRvIGxpc3Qg
YWxsIHRlc3RzIHRoYXQgd2lsbCBydW4sCisvLyBhbmQgaGF2ZSB0aGUgb3V0cHV0IHNhdmVkIGlu
IGEgSnNvbi9YbWwgZmlsZS4KKy8vIFRoZSB0ZXN0cyB3aWxsIG5vdCBiZSBydW4gYWZ0ZXIgbGlz
dGluZy4KKy8vCisvLyBUaGlzIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRob24g
dW5pdCB0ZXN0LgorLy8gRG9uJ3QgcnVuIGl0IGRpcmVjdGx5LgorCisjaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3QuaCIKKworVEVTVChGb29UZXN0LCBUZXN0MSkge30KKworVEVTVChGb29UZXN0LCBUZXN0
Mikge30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIDo6dGVzdGluZzo6
SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3Rf
dGVzdHNfdW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xp
c3RfdGVzdHNfdW5pdHRlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGNlOGMz
ZWYwNWY2NjAwZTg3MjE0YTZkNDAxNjI4ZWQ5MjNhMTUyZGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTc3ICswLDAg
QEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlVuaXQg
dGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4KLQotQSB1c2Vy
IGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gbGlzdCBhbGwgdGVzdHMgYnkgc3BlY2lmeWluZyB0aGUK
LS0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLiAgVGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5jdGlv
bmFsaXR5Ci1ieSBpbnZva2luZyBndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0XyAoYSBwcm9ncmFt
IHdyaXR0ZW4gd2l0aAotR29vZ2xlIFRlc3QpIHRoZSBjb21tYW5kIGxpbmUgZmxhZ3MuCi0iIiIK
LQotX19hdXRob3JfXyA9ICdwaGFubmFAZ29vZ2xlLmNvbSAoUGF0cmljayBIYW5uYSknCi0KLWlt
cG9ydCBndGVzdF90ZXN0X3V0aWxzCi0KLQotIyBDb25zdGFudHMuCi0KLSMgVGhlIGNvbW1hbmQg
bGluZSBmbGFnIGZvciBlbmFibGluZy9kaXNhYmxpbmcgbGlzdGluZyBhbGwgdGVzdHMuCi1MSVNU
X1RFU1RTX0ZMQUcgPSAnZ3Rlc3RfbGlzdF90ZXN0cycKLQotIyBQYXRoIHRvIHRoZSBndGVzdF9s
aXN0X3Rlc3RzX3VuaXR0ZXN0XyBwcm9ncmFtLgotRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxz
LkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8nKQotCi0j
IFRoZSBleHBlY3RlZCBvdXRwdXQgd2hlbiBydW5uaW5nIGd0ZXN0X2xpc3RfdGVzdHNfdW5pdHRl
c3RfIHdpdGgKLSMgLS1ndGVzdF9saXN0X3Rlc3RzCi1FWFBFQ1RFRF9PVVRQVVRfTk9fRklMVEVS
ID0gIiIiRm9vRGVhdGhUZXN0LgotICBUZXN0MQotRm9vLgotICBCYXIxCi0gIEJhcjIKLSAgRElT
QUJMRURfQmFyMwotQWJjLgotICBYeXoKLSAgRGVmCi1Gb29CYXIuCi0gIEJhegotRm9vVGVzdC4K
LSAgVGVzdDEKLSAgRElTQUJMRURfVGVzdDIKLSAgVGVzdDMKLSIiIgotCi0jIFRoZSBleHBlY3Rl
ZCBvdXRwdXQgd2hlbiBydW5uaW5nIGd0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfIHdpdGgKLSMg
LS1ndGVzdF9saXN0X3Rlc3RzIGFuZCAtLWd0ZXN0X2ZpbHRlcj1Gb28qLgotRVhQRUNURURfT1VU
UFVUX0ZJTFRFUl9GT08gPSAiIiJGb29EZWF0aFRlc3QuCi0gIFRlc3QxCi1Gb28uCi0gIEJhcjEK
LSAgQmFyMgotICBESVNBQkxFRF9CYXIzCi1Gb29CYXIuCi0gIEJhegotRm9vVGVzdC4KLSAgVGVz
dDEKLSAgRElTQUJMRURfVGVzdDIKLSAgVGVzdDMKLSIiIgotCi0jIFV0aWxpdGllcy4KLQotCi1k
ZWYgUnVuKGFyZ3MpOgotICAiIiJSdW5zIGd0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfIGFuZCBy
ZXR1cm5zIHRoZSBsaXN0IG9mIHRlc3RzIHByaW50ZWQuIiIiCi0KLSAgcmV0dXJuIGd0ZXN0X3Rl
c3RfdXRpbHMuU3VicHJvY2VzcyhbRVhFX1BBVEhdICsgYXJncywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjYXB0dXJlX3N0ZGVycj1GYWxzZSkub3V0cHV0Ci0KLQotIyBU
aGUgdW5pdCB0ZXN0LgotCi1jbGFzcyBHVGVzdExpc3RUZXN0c1VuaXRUZXN0KGd0ZXN0X3Rlc3Rf
dXRpbHMuVGVzdENhc2UpOgotICAiIiJUZXN0cyB1c2luZyB0aGUgLS1ndGVzdF9saXN0X3Rlc3Rz
IGZsYWcgdG8gbGlzdCBhbGwgdGVzdHMuIiIiCi0KLSAgZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBm
bGFnX3ZhbHVlLCBleHBlY3RlZF9vdXRwdXQsIG90aGVyX2ZsYWcpOgotICAgICIiIlJ1bnMgZ3Rl
c3RfbGlzdF90ZXN0c191bml0dGVzdF8gYW5kIHZlcmlmaWVzIHRoYXQgaXQgcHJpbnRzCi0gICAg
dGhlIGNvcnJlY3QgdGVzdHMuCi0KLSAgICBBcmdzOgotICAgICAgZmxhZ192YWx1ZTogICAgICAg
dmFsdWUgb2YgdGhlIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnOwotICAgICAgICAgICAgICAgICAg
ICAgICAgTm9uZSBpZiB0aGUgZmxhZyBzaG91bGQgbm90IGJlIHByZXNlbnQuCi0KLSAgICAgIGV4
cGVjdGVkX291dHB1dDogIHRoZSBleHBlY3RlZCBvdXRwdXQgYWZ0ZXIgcnVubmluZyBjb21tYW5k
OwotCi0gICAgICBvdGhlcl9mbGFnOiAgICAgICBhIGRpZmZlcmVudCBmbGFnIHRvIGJlIHBhc3Nl
ZCB0byBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBhbG9uZyB3aXRoIGd0ZXN0X2xp
c3RfdGVzdHM7Ci0gICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3Vs
ZCBub3QgYmUgcHJlc2VudC4KLSAgICAiIiIKLQotICAgIGlmIGZsYWdfdmFsdWUgaXMgTm9uZToK
LSAgICAgIGZsYWcgPSAnJwotICAgICAgZmxhZ19leHByZXNzaW9uID0gJ25vdCBzZXQnCi0gICAg
ZWxpZiBmbGFnX3ZhbHVlID09ICcwJzoKLSAgICAgIGZsYWcgPSAnLS0lcz0wJyAlIExJU1RfVEVT
VFNfRkxBRwotICAgICAgZmxhZ19leHByZXNzaW9uID0gJzAnCi0gICAgZWxzZToKLSAgICAgIGZs
YWcgPSAnLS0lcycgJSBMSVNUX1RFU1RTX0ZMQUcKLSAgICAgIGZsYWdfZXhwcmVzc2lvbiA9ICcx
JwotCi0gICAgYXJncyA9IFtmbGFnXQotCi0gICAgaWYgb3RoZXJfZmxhZyBpcyBub3QgTm9uZToK
LSAgICAgIGFyZ3MgKz0gW290aGVyX2ZsYWddCi0KLSAgICBvdXRwdXQgPSBSdW4oYXJncykKLQot
ICAgIG1zZyA9ICgnd2hlbiAlcyBpcyAlcywgdGhlIG91dHB1dCBvZiAiJXMiIGlzICIlcyIuJyAl
Ci0gICAgICAgICAgIChMSVNUX1RFU1RTX0ZMQUcsIGZsYWdfZXhwcmVzc2lvbiwgJyAnLmpvaW4o
YXJncyksIG91dHB1dCkpCi0KLSAgICBpZiBleHBlY3RlZF9vdXRwdXQgaXMgbm90IE5vbmU6Ci0g
ICAgICBzZWxmLmFzc2VydF8ob3V0cHV0ID09IGV4cGVjdGVkX291dHB1dCwgbXNnKQotICAgIGVs
c2U6Ci0gICAgICBzZWxmLmFzc2VydF8ob3V0cHV0ICE9IEVYUEVDVEVEX09VVFBVVF9OT19GSUxU
RVIsIG1zZykKLQotICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcihzZWxmKToKLSAgICAiIiJUZXN0
cyB0aGUgYmVoYXZpb3Igb2YgdGhlIGRlZmF1bHQgbW9kZS4iIiIKLQotICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KGZsYWdfdmFsdWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9v
dXRwdXQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPU5vbmUpCi0KLSAg
ZGVmIHRlc3RGbGFnKHNlbGYpOgotICAgICIiIlRlc3RzIHVzaW5nIHRoZSAtLWd0ZXN0X2xpc3Rf
dGVzdHMgZmxhZy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFsdWU9JzAnLAot
ICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dD1Ob25lLAotICAgICAgICAgICAg
ICAgICAgICAgIG90aGVyX2ZsYWc9Tm9uZSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3Zh
bHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXQ9RVhQRUNURURf
T1VUUFVUX05PX0ZJTFRFUiwKLSAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPU5vbmUp
Ci0KLSAgZGVmIHRlc3RPdmVycmlkZU5vbkZpbHRlckZsYWdzKHNlbGYpOgotICAgICIiIlRlc3Rz
IHRoYXQgLS1ndGVzdF9saXN0X3Rlc3RzIG92ZXJyaWRlcyB0aGUgbm9uLWZpbHRlciBmbGFncy4i
IiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFsdWU9JzEnLAotICAgICAgICAgICAg
ICAgICAgICAgIGV4cGVjdGVkX291dHB1dD1FWFBFQ1RFRF9PVVRQVVRfTk9fRklMVEVSLAotICAg
ICAgICAgICAgICAgICAgICAgIG90aGVyX2ZsYWc9Jy0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZScp
Ci0KLSAgZGVmIHRlc3RXaXRoRmlsdGVyRmxhZ3Moc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCAt
LWd0ZXN0X2xpc3RfdGVzdHMgdGFrZXMgaW50byBhY2NvdW50IHRoZQotICAgIC0tZ3Rlc3RfZmls
dGVyIGZsYWcuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPScxJywKLSAg
ICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXQ9RVhQRUNURURfT1VUUFVUX0ZJTFRF
Ul9GT08sCi0gICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz0nLS1ndGVzdF9maWx0ZXI9
Rm9vKicpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGls
cy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
bGlzdF90ZXN0c191bml0dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBhMGVkMDgyNWI1ZDg4OTY5MjMwMWM1YTRkNGYwZWI3NWJhYmM1YmM4Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSw4
NSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0v
LwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0v
LwotLy8gQXV0aG9yOiBwaGFubmFAZ29vZ2xlLmNvbSAoUGF0cmljayBIYW5uYSkKLQotLy8gVW5p
dCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLgotLy8KLS8v
IEEgdXNlciBjYW4gYXNrIEdvb2dsZSBUZXN0IHRvIGxpc3QgYWxsIHRlc3RzIHRoYXQgd2lsbCBy
dW4KLS8vIHNvIHRoYXQgd2hlbiB1c2luZyBhIGZpbHRlciwgYSB1c2VyIHdpbGwga25vdyB3aGF0
Ci0vLyB0ZXN0cyB0byBsb29rIGZvci4gVGhlIHRlc3RzIHdpbGwgbm90IGJlIHJ1biBhZnRlciBs
aXN0aW5nLgotLy8KLS8vIFRoaXMgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhv
biB1bml0IHRlc3QuCi0vLyBEb24ndCBydW4gaXQgZGlyZWN0bHkuCi0KLSNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgotCi1uYW1lc3BhY2UgewotCi0vLyBTZXZlcmFsIGRpZmZlcmVudCB0ZXN0IGNh
c2VzIGFuZCB0ZXN0cyB0aGF0IHdpbGwgYmUgbGlzdGVkLgotVEVTVChGb28sIEJhcjEpIHsKLX0K
LQotVEVTVChGb28sIEJhcjIpIHsKLX0KLQotVEVTVChGb28sIERJU0FCTEVEX0JhcjMpIHsKLX0K
LQotVEVTVChBYmMsIFh5eikgewotfQotCi1URVNUKEFiYywgRGVmKSB7Ci19Ci0KLVRFU1QoRm9v
QmFyLCBCYXopIHsKLX0KLQotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
LX07Ci0KLVRFU1RfRihGb29UZXN0LCBUZXN0MSkgewotfQotCi1URVNUX0YoRm9vVGVzdCwgRElT
QUJMRURfVGVzdDIpIHsKLX0KLQotVEVTVF9GKEZvb1Rlc3QsIFRlc3QzKSB7Ci19Ci0KLVRFU1Qo
Rm9vRGVhdGhUZXN0LCBUZXN0MSkgewotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7Ci0gIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOwotCi0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X21haW5fdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X21haW5fdW5pdHRlc3QuY2MKaW5kZXggN2Ez
ZjBhZGZhZGY2ZDdlNWMxOTViMzE5NDQ3MTRkNWFjNDFiYjhlMy4uZWRkZWRlYWJlOGYzYmIwODNk
YWJjYTYwMGU3MmY0NTFiOGQ5NGNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF9tYWluX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfbWFpbl91bml0dGVzdC5jYwpAQCAtMjYsMTAgKzI2LDkgQEAKIC8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6
IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5o
PgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogLy8gVGVzdHMgdGhhdCB3ZSBkb24ndCBo
YXZlIHRvIGRlZmluZSBtYWluKCkgd2hlbiB3ZSBsaW5rIHRvCiAvLyBndGVzdF9tYWluIGluc3Rl
YWQgb2YgZ3Rlc3QuCkBAIC00MSw1ICs0MCw1IEBAIFRFU1QoR1Rlc3RNYWluVGVzdCwgU2hvdWxk
U3VjY2VlZCkgewogCiB9ICAvLyBuYW1lc3BhY2UKIAotLy8gV2UgYXJlIHVzaW5nIHRoZSBtYWlu
KCkgZnVuY3Rpb24gZGVmaW5lZCBpbiBzcmMvZ3Rlc3RfbWFpbi5jYywgc28KLS8vIHdlIGRvbid0
IGRlZmluZSBpdCBoZXJlLgorLy8gV2UgYXJlIHVzaW5nIHRoZSBtYWluKCkgZnVuY3Rpb24gZGVm
aW5lZCBpbiBndGVzdF9tYWluLmNjLCBzbyB3ZQorLy8gZG9uJ3QgZGVmaW5lIGl0IGhlcmUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X25jLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9uYy5jYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNzNiNWRiNmQ0MTgzMDlhNDdhMjNkZmYxODAwNTNiNzVkMzIwMTI0Zi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X25jLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMjM0ICswLDAg
QEAKLS8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
Ly8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBB
dXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIFRoaXMgZmlsZSBpcyB0
aGUgaW5wdXQgdG8gYSBuZWdhdGl2ZS1jb21waWxhdGlvbiB0ZXN0IGZvciBHb29nbGUKLS8vIFRl
c3QuICBDb2RlIGhlcmUgaXMgTk9UIHN1cHBvc2VkIHRvIGNvbXBpbGUuICBJdHMgcHVycG9zZSBp
cyB0bwotLy8gdmVyaWZ5IHRoYXQgY2VydGFpbiBpbmNvcnJlY3QgdXNhZ2VzIG9mIHRoZSBHb29n
bGUgVGVzdCBBUEkgYXJlCi0vLyBpbmRlZWQgcmVqZWN0ZWQgYnkgdGhlIGNvbXBpbGVyLgotLy8K
LS8vIFdlIHN0aWxsIG5lZWQgdG8gd3JpdGUgdGhlIG5lZ2F0aXZlLWNvbXBpbGF0aW9uIHRlc3Qg
aXRzZWxmLCB3aGljaAotLy8gd2lsbCBiZSB0aWdodGx5IGNvdXBsZWQgd2l0aCB0aGUgYnVpbGQg
ZW52aXJvbm1lbnQuCi0vLwotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IGZpbmlzaCB0aGUgbmVn
YXRpdmUtY29tcGlsYXRpb24gdGVzdC4KLQotI2lmZGVmIFRFU1RfQ0FOTk9UX0lHTk9SRV9SVU5f
QUxMX1RFU1RTX1JFU1VMVAotLy8gVGVzdHMgdGhhdCB0aGUgcmVzdWx0IG9mIFJVTl9BTExfVEVT
VFMoKSBjYW5ub3QgYmUgaWdub3JlZC4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLWlu
dCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewotICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVz
dCgmYXJnYywgYXJndik7Ci0gIFJVTl9BTExfVEVTVFMoKTsgIC8vIFRoaXMgbGluZSBzaG91bGRu
J3QgY29tcGlsZS4KLX0KLQotI2VsaWYgZGVmaW5lZChURVNUX1VTRVJfQ0FOTk9UX0lOQ0xVREVf
R1RFU1RfSU5URVJOQUxfSU5MX0gpCi0vLyBUZXN0cyB0aGF0IGEgdXNlciBjYW5ub3QgaW5jbHVk
ZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbiBoaXMgY29kZS4KLQotI2luY2x1ZGUgInNyYy9ndGVz
dC1pbnRlcm5hbC1pbmwuaCIKLQotI2VsaWYgZGVmaW5lZChURVNUX0NBVENIRVNfREVDTEFSSU5H
X1NFVFVQX0lOX1RFU1RfRklYVFVSRV9XSVRIX1RZUE8pCi0vLyBUZXN0cyB0aGF0IHRoZSBjb21w
aWxlciBjYXRjaGVzIHRoZSB0eXBvIHdoZW4gYSB1c2VyIGRlY2xhcmVzIGEKLS8vIFNldHVwKCkg
bWV0aG9kIGluIGEgdGVzdCBmaXh0dXJlLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQot
Y2xhc3MgTXlUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdm9p
ZCBTZXR1cCgpIHt9Ci19OwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19DQUxMSU5HX1NF
VFVQX0lOX1RFU1RfV0lUSF9UWVBPKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0Y2hl
cyB0aGUgdHlwbyB3aGVuIGEgdXNlciBjYWxscyBTZXR1cCgpCi0vLyBmcm9tIGEgdGVzdCBmaXh0
dXJlLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotY2xhc3MgTXlUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewot
ICAgIHRlc3Rpbmc6OlRlc3Q6OlNldHVwKCk7ICAvLyBUcmllcyB0byBjYWxsIFNldFVwKCkgaW4g
dGhlIHBhcmVudCBjbGFzcy4KLSAgfQotfTsKLQotI2VsaWYgZGVmaW5lZChURVNUX0NBVENIRVNf
REVDTEFSSU5HX1NFVFVQX0lOX0VOVklST05NRU5UX1dJVEhfVFlQTykKLS8vIFRlc3RzIHRoYXQg
dGhlIGNvbXBpbGVyIGNhdGNoZXMgdGhlIHR5cG8gd2hlbiBhIHVzZXIgZGVjbGFyZXMgYQotLy8g
U2V0dXAoKSBtZXRob2QgaW4gYSBzdWJjbGFzcyBvZiBFbnZpcm9ubWVudC4KLQotI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+Ci0KLWNsYXNzIE15RW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6
RW52aXJvbm1lbnQgewotIHB1YmxpYzoKLSAgdm9pZCBTZXR1cCgpIHt9Ci19OwotCi0jZWxpZiBk
ZWZpbmVkKFRFU1RfQ0FUQ0hFU19DQUxMSU5HX1NFVFVQX0lOX0VOVklST05NRU5UX1dJVEhfVFlQ
TykKLS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgdGhlIHR5cG8gd2hlbiBhIHVz
ZXIgY2FsbHMgU2V0dXAoKQotLy8gaW4gYW4gRW52aXJvbm1lbnQuCi0KLSNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgotCi1jbGFzcyBNeUVudmlyb25tZW50IDogcHVibGljIHRlc3Rpbmc6OkVudmly
b25tZW50IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICAvLyBU
cmllcyB0byBjYWxsIFNldFVwKCkgaW4gdGhlIHBhcmVudCBjbGFzcy4KLSAgICB0ZXN0aW5nOjpF
bnZpcm9ubWVudDo6U2V0dXAoKTsKLSAgfQotfTsKLQotI2VsaWYgZGVmaW5lZChURVNUX0NBVENI
RVNfV1JPTkdfQ0FTRV9JTl9UWVBFRF9URVNUX1ApCi0vLyBUZXN0cyB0aGF0IHRoZSBjb21waWxl
ciBjYXRjaGVzIHVzaW5nIHRoZSB3cm9uZyB0ZXN0IGNhc2UgbmFtZSBpbgotLy8gVFlQRURfVEVT
VF9QLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBCYXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsK
LQotVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7Ci1UWVBFRF9URVNUX1AoQmFyVGVzdCwgQSkg
e30gIC8vIFdyb25nIHRlc3QgY2FzZSBuYW1lLgotUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1Ao
Rm9vVGVzdCwgQSk7Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwg
dGVzdGluZzo6VHlwZXM8aW50Pik7Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRDSEVTX1dST05H
X0NBU0VfSU5fUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1ApCi0vLyBUZXN0cyB0aGF0IHRoZSBj
b21waWxlciBjYXRjaGVzIHVzaW5nIHRoZSB3cm9uZyB0ZXN0IGNhc2UgbmFtZSBpbgotLy8gUkVH
SVNURVJfVFlQRURfVEVTVF9DQVNFX1AuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEJhclRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0KTsKLVRZUEVE
X1RFU1RfUChGb29UZXN0LCBBKSB7fQotUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoQmFyVGVz
dCwgQSk7ICAvLyBXcm9uZyB0ZXN0IGNhc2UgbmFtZS4KLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1Rf
Q0FTRV9QKE15LCBGb29UZXN0LCB0ZXN0aW5nOjpUeXBlczxpbnQ+KTsKLQotI2VsaWYgZGVmaW5l
ZChURVNUX0NBVENIRVNfV1JPTkdfQ0FTRV9JTl9JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0Vf
UCkKLS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgdXNpbmcgdGhlIHdyb25nIHRl
c3QgY2FzZSBuYW1lIGluCi0vLyBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUC4KLQotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgRm9v
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotY2xhc3MgQmFyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RF
U1RfQ0FTRV9QKEZvb1Rlc3QpOwotVFlQRURfVEVTVF9QKEZvb1Rlc3QsIEEpIHt9Ci1SRUdJU1RF
Ul9UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0LCBBKTsKLQotLy8gV3JvbmcgdGVzdCBjYXNlIG5h
bWUuCi1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgQmFyVGVzdCwgdGVzdGluZzo6
VHlwZXM8aW50Pik7Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRDSEVTX0lOU1RBTlRJQVRFX1RZ
UEVEX1RFU0VUX0NBU0VfUF9XSVRIX1NBTUVfTkFNRV9QUkVGSVgpCi0vLyBUZXN0cyB0aGF0IHRo
ZSBjb21waWxlciBjYXRjaGVzIGluc3RhbnRpYXRpbmcgVFlQRURfVEVTVF9DQVNFX1AKLS8vIHR3
aWNlIHdpdGggdGhlIHNhbWUgbmFtZSBwcmVmaXguCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5o
PgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0KTsKLVRZUEVEX1RFU1Rf
UChGb29UZXN0LCBBKSB7fQotUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCwgQSk7
Ci0KLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCB0ZXN0aW5nOjpU
eXBlczxpbnQ+KTsKLQotLy8gV3JvbmcgbmFtZSBwcmVmaXg6ICJNeSIgaGFzIGJlZW4gdXNlZC4K
LUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCB0ZXN0aW5nOjpUeXBl
czxkb3VibGU+KTsKLQotI2VsaWYgZGVmaW5lZChURVNUX1NUQVRJQ19BU1NFUlRfVFlQRV9FUV9J
U19OT1RfQV9UWVBFKQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotLy8gVGVzdHMgdGhh
dCBTdGF0aWNBc3NlcnRUeXBlRXE8VDEsIFQyPiBjYW5ub3QgYmUgdXNlZCBhcyBhIHR5cGUuCi10
ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8aW50LCBpbnQ+IGR1bW15OwotCi0jZWxpZiBkZWZp
bmVkKFRFU1RfU1RBVElDX0FTU0VSVF9UWVBFX0VRX1dPUktTX0lOX05BTUVTUEFDRSkKLQotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLS8vIFRlc3RzIHRoYXQgU3RhdGljQXNzZXJ0VHlwZUVx
PFQxLCBUMj4gd29ya3MgaW4gYSBuYW1lc3BhY2Ugc2NvcGUuCi1zdGF0aWMgYm9vbCBkdW1teSA9
IHRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIGNvbnN0IGludD4oKTsKLQotI2VsaWYg
ZGVmaW5lZChURVNUX1NUQVRJQ19BU1NFUlRfVFlQRV9FUV9XT1JLU19JTl9DTEFTUykKLQotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgSGVs
cGVyIHsKLSBwdWJsaWM6Ci0gIC8vIFRlc3RzIHRoYXQgU3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBU
Mj4gd29ya3MgaW4gYSBjbGFzcy4KLSAgSGVscGVyKCkgeyB0ZXN0aW5nOjpTdGF0aWNBc3NlcnRU
eXBlRXE8aW50LCBUPigpOyB9Ci0KLSAgdm9pZCBEb1NvbWV0aGluZygpIHt9Ci19OwotCi12b2lk
IFRlc3QoKSB7Ci0gIEhlbHBlcjxib29sPiBoOwotICBoLkRvU29tZXRoaW5nKCk7ICAvLyBUbyBh
dm9pZCB0aGUgInVudXNlZCB2YXJpYWJsZSIgd2FybmluZy4KLX0KLQotI2VsaWYgZGVmaW5lZChU
RVNUX1NUQVRJQ19BU1NFUlRfVFlQRV9FUV9XT1JLU19JTl9GVU5DVElPTikKLQotI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+Ci0KLXZvaWQgVGVzdCgpIHsKLSAgLy8gVGVzdHMgdGhhdCBTdGF0aWNB
c3NlcnRUeXBlRXE8VDEsIFQyPiB3b3JrcyBpbnNpZGUgYSBmdW5jdGlvbi4KLSAgdGVzdGluZzo6
U3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGludCwgaW50PigpOwotfQotCi0jZWxzZQotLy8gQSBz
YW5pdHkgdGVzdC4gIFRoaXMgc2hvdWxkIGNvbXBpbGUuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgotCi1pbnQgbWFpbigpIHsKLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X25jX3Rl
c3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X25jX3Rlc3QucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDA2ZmZiM2Y4MDM4ZjBhNTc5NmU0YjZkNjI5ZDAy
ZTgwNTY1YTI0MzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9uY190ZXN0LnB5CisrKyAvZGV2
L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5
cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLSIiIk5lZ2F0aXZlIGNvbXBpbGF0aW9uIHRlc3QgZm9yIEdvb2dsZSBUZXN0
LiIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1p
bXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotCi0KLUlTX0xJTlVYID0gb3Mu
bmFtZSA9PSAncG9zaXgnIGFuZCBvcy51bmFtZSgpWzBdID09ICdMaW51eCcKLWlmIG5vdCBJU19M
SU5VWDoKLSAgc3lzLmV4aXQoMCkgICMgTmVnYXRpdmUgY29tcGlsYXRpb24gdGVzdHMgYXJlIG5v
dCBzdXBwb3J0ZWQgb24gV2luZG93cyAmIE1hYy4KLQotCi1jbGFzcyBHVGVzdE5DVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6Ci0gICIiIk5lZ2F0aXZlIGNvbXBpbGF0aW9uIHRlc3QgZm9yIEdvb2ds
ZSBUZXN0LiIiIgotCi0gIGRlZiB0ZXN0Q29tcGlsZXJFcnJvcihzZWxmKToKLSAgICAiIiJWZXJp
ZmllcyB0aGF0IGVycm9uZW91cyBjb2RlIGxlYWRzIHRvIGV4cGVjdGVkIGNvbXBpbGVyCi0gICAg
bWVzc2FnZXMuIiIiCi0KLSAgICAjIERlZmluZXMgYSBsaXN0IG9mIHRlc3Qgc3BlY3MsIHdoZXJl
IGVhY2ggZWxlbWVudCBpcyBhIHR1cGxlCi0gICAgIyAodGVzdCBuYW1lLCBsaXN0IG9mIHJlZ2V4
ZXMgZm9yIG1hdGNoaW5nIHRoZSBjb21waWxlciBlcnJvcnMpLgotICAgIHRlc3Rfc3BlY3MgPSBb
Ci0gICAgICAoJ0NBTk5PVF9JR05PUkVfUlVOX0FMTF9URVNUU19SRVNVTFQnLAotICAgICAgIFty
J2lnbm9yaW5nIHJldHVybiB2YWx1ZSddKSwKLQotICAgICAgKCdVU0VSX0NBTk5PVF9JTkNMVURF
X0dURVNUX0lOVEVSTkFMX0lOTF9IJywKLSAgICAgICBbcidtdXN0IG5vdCBiZSBpbmNsdWRlZCBl
eGNlcHQgYnkgR29vZ2xlIFRlc3QgaXRzZWxmJ10pLAotCi0gICAgICAoJ0NBVENIRVNfREVDTEFS
SU5HX1NFVFVQX0lOX1RFU1RfRklYVFVSRV9XSVRIX1RZUE8nLAotICAgICAgIFtyJ1NldHVwX3No
b3VsZF9iZV9zcGVsbGVkX1NldFVwJ10pLAotCi0gICAgICAoJ0NBVENIRVNfQ0FMTElOR19TRVRV
UF9JTl9URVNUX1dJVEhfVFlQTycsCi0gICAgICAgW3InU2V0dXBfc2hvdWxkX2JlX3NwZWxsZWRf
U2V0VXAnXSksCi0KLSAgICAgICgnQ0FUQ0hFU19ERUNMQVJJTkdfU0VUVVBfSU5fRU5WSVJPTk1F
TlRfV0lUSF9UWVBPJywKLSAgICAgICBbcidTZXR1cF9zaG91bGRfYmVfc3BlbGxlZF9TZXRVcCdd
KSwKLQotICAgICAgKCdDQVRDSEVTX0NBTExJTkdfU0VUVVBfSU5fRU5WSVJPTk1FTlRfV0lUSF9U
WVBPJywKLSAgICAgICBbcidTZXR1cF9zaG91bGRfYmVfc3BlbGxlZF9TZXRVcCddKSwKLQotICAg
ICAgKCdDQVRDSEVTX1dST05HX0NBU0VfSU5fVFlQRURfVEVTVF9QJywKLSAgICAgICBbcidCYXJU
ZXN0Lip3YXMgbm90IGRlY2xhcmVkJ10pLAotCi0gICAgICAoJ0NBVENIRVNfV1JPTkdfQ0FTRV9J
Tl9SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUCcsCi0gICAgICAgW3InQmFyVGVzdC4qd2FzIG5v
dCBkZWNsYXJlZCddKSwKLQotICAgICAgKCdDQVRDSEVTX1dST05HX0NBU0VfSU5fSU5TVEFOVElB
VEVfVFlQRURfVEVTVF9DQVNFX1AnLAotICAgICAgIFtyJ0JhclRlc3QuKm5vdCBkZWNsYXJlZCdd
KSwKLQotICAgICAgKCdDQVRDSEVTX0lOU1RBTlRJQVRFX1RZUEVEX1RFU0VUX0NBU0VfUF9XSVRI
X1NBTUVfTkFNRV9QUkVGSVgnLAotICAgICAgIFtyJ3JlZGVmaW5pdGlvbiBvZi4qTXkuKkZvb1Rl
c3QnXSksCi0KLSAgICAgICgnU1RBVElDX0FTU0VSVF9UWVBFX0VRX0lTX05PVF9BX1RZUEUnLAot
ICAgICAgIFtyJ1N0YXRpY0Fzc2VydFR5cGVFcS4qIGRvZXMgbm90IG5hbWUgYSB0eXBlJ10pLAot
Ci0gICAgICAoJ1NUQVRJQ19BU1NFUlRfVFlQRV9FUV9XT1JLU19JTl9OQU1FU1BBQ0UnLAotICAg
ICAgIFtyJ1N0YXRpY0Fzc2VydFR5cGVFcS4qaW50Lipjb25zdCBpbnQnXSksCi0KLSAgICAgICgn
U1RBVElDX0FTU0VSVF9UWVBFX0VRX1dPUktTX0lOX0NMQVNTJywKLSAgICAgICBbcidTdGF0aWNB
c3NlcnRUeXBlRXEuKmludC4qYm9vbCddKSwKLQotICAgICAgKCdTVEFUSUNfQVNTRVJUX1RZUEVf
RVFfV09SS1NfSU5fRlVOQ1RJT04nLAotICAgICAgIFtyJ1N0YXRpY0Fzc2VydFR5cGVFcS4qY29u
c3QgaW50LippbnQnXSksCi0KLSAgICAgICgnU0FOSVRZJywKLSAgICAgICBOb25lKQotICAgICAg
XQotCi0gICAgIyBUT0RPKHdhbkBnb29nbGUuY29tKTogdmVyaWZ5IHRoYXQgdGhlIHRlc3Qgc3Bl
Y3MgYXJlIHNhdGlzZmllZC4KLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICB1bml0
dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3Rfbm9fdGVzdF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3Rfbm9fdGVzdF91bml0dGVzdC5jYwppbmRleCBhZmUyZGMwYzkyZmU0M2FlOTM1YjIyY2VmMzE3
N2U1MTg0YjdmZmExLi5kNGY4OGRiZmRmYTY4ZTZhMGM0MGJiOTlmYWM2ZTRkYmNjZmY4ZjNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X25vX3Rlc3RfdW5p
dHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9ub190ZXN0
X3VuaXR0ZXN0LmNjCkBAIC0yOSwyNiArMjksMjYgQEAKIAogLy8gVGVzdHMgdGhhdCBhIEdvb2ds
ZSBUZXN0IHByb2dyYW0gdGhhdCBoYXMgbm8gdGVzdCBkZWZpbmVkIGNhbiBydW4KIC8vIHN1Y2Nl
c3NmdWxseS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0K
LSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAog
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CiAgIHRlc3Rpbmc6OkluaXRHb29nbGVU
ZXN0KCZhcmdjLCBhcmd2KTsKIAogICAvLyBBbiBhZC1ob2MgYXNzZXJ0aW9uIG91dHNpZGUgb2Yg
YWxsIHRlc3RzLgogICAvLwotICAvLyBUaGlzIHNlcnZlcyB0d28gcHVycG9zZXM6CisgIC8vIFRo
aXMgc2VydmVzIHRocmVlIHB1cnBvc2VzOgogICAvLwogICAvLyAxLiBJdCB2ZXJpZmllcyB0aGF0
IGFuIGFkLWhvYyBhc3NlcnRpb24gY2FuIGJlIGV4ZWN1dGVkIGV2ZW4gaWYKICAgLy8gICAgbm8g
dGVzdCBpcyBkZWZpbmVkLgotICAvLyAyLiBXZSBoYWQgYSBidWcgd2hlcmUgdGhlIFhNTCBvdXRw
dXQgd29uJ3QgYmUgZ2VuZXJhdGVkIGlmIGFuCisgIC8vIDIuIEl0IHZlcmlmaWVzIHRoYXQgYSBm
YWlsZWQgYWQtaG9jIGFzc2VydGlvbiBjYXVzZXMgdGhlIHRlc3QKKyAgLy8gICAgcHJvZ3JhbSB0
byBmYWlsLgorICAvLyAzLiBXZSBoYWQgYSBidWcgd2hlcmUgdGhlIFhNTCBvdXRwdXQgd29uJ3Qg
YmUgZ2VuZXJhdGVkIGlmIGFuCiAgIC8vICAgIGFzc2VydGlvbiBpcyBleGVjdXRlZCBiZWZvcmUg
UlVOX0FMTF9URVNUUygpIGlzIGNhbGxlZCwgZXZlbgogICAvLyAgICB0aG91Z2ggLS1ndGVzdF9v
dXRwdXQ9eG1sIGlzIHNwZWNpZmllZC4gIFRoaXMgbWFrZXMgc3VyZSB0aGUKICAgLy8gICAgYnVn
IGlzIGZpeGVkIGFuZCBkb2Vzbid0IHJlZ3Jlc3MuCi0gIEVYUEVDVF9FUSgxLCAxKTsKKyAgRVhQ
RUNUX0VRKDEsIDIpOwogCi0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CisgIC8vIFRoZSBhYm92
ZSBFWFBFQ1RfRVEoKSBzaG91bGQgY2F1c2UgUlVOX0FMTF9URVNUUygpIHRvIHJldHVybiBub24t
emVyby4KKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKSA/IDAgOiAxOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdC5weSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDE5MjAzMGEyMDIwYmZkNDFlOTRjNGU0OTE0Y2FiYTM4ZGI3NGYy
ZmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdC5weQorKysgL2Rldi9udWxs
CkBAIC0xLDMyNyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0
IDIwMDgsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotCi0iIiJUZXN0cyB0aGUgdGV4dCBvdXRwdXQgb2YgR29vZ2xlIEMrKyBUZXN0aW5nIEZy
YW1ld29yay4KLQotU1lOT1BTSVMKLSAgICAgICBndGVzdF9vdXRwdXRfdGVzdC5weSAtLWd0ZXN0
X2J1aWxkX2Rpcj1CVUlMRC9ESVIgLS1nZW5nb2xkZW4KLSAgICAgICAgICMgd2hlcmUgQlVJTEQv
RElSIGNvbnRhaW5zIHRoZSBidWlsdCBndGVzdF9vdXRwdXRfdGVzdF8gZmlsZS4KLSAgICAgICBn
dGVzdF9vdXRwdXRfdGVzdC5weSAtLWdlbmdvbGRlbgotICAgICAgIGd0ZXN0X291dHB1dF90ZXN0
LnB5Ci0iIiIKLQotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScK
LQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzeXMKLWltcG9ydCBndGVzdF90ZXN0X3V0
aWxzCi0KLQotIyBUaGUgZmxhZyBmb3IgZ2VuZXJhdGluZyB0aGUgZ29sZGVuIGZpbGUKLUdFTkdP
TERFTl9GTEFHID0gJy0tZ2VuZ29sZGVuJwotQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSX05BTUUg
PSAnR1RFU1RfQ0FUQ0hfRVhDRVBUSU9OUycKLQotSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250
JwotCi1pZiBJU19XSU5ET1dTOgotICBHT0xERU5fTkFNRSA9ICdndGVzdF9vdXRwdXRfdGVzdF9n
b2xkZW5fd2luLnR4dCcKLWVsc2U6Ci0gIEdPTERFTl9OQU1FID0gJ2d0ZXN0X291dHB1dF90ZXN0
X2dvbGRlbl9saW4udHh0JwotCi1QUk9HUkFNX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRl
c3RFeGVjdXRhYmxlUGF0aCgnZ3Rlc3Rfb3V0cHV0X3Rlc3RfJykKLQotIyBBdCBsZWFzdCBvbmUg
Y29tbWFuZCB3ZSBleGVyY2lzZSBtdXN0IG5vdCBoYXZlIHRoZQotIyAtLWd0ZXN0X2ludGVybmFs
X3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cyBmbGFnLgotQ09NTUFORF9MSVNUX1RF
U1RTID0gKHt9LCBbUFJPR1JBTV9QQVRILCAnLS1ndGVzdF9saXN0X3Rlc3RzJ10pCi1DT01NQU5E
X1dJVEhfQ09MT1IgPSAoe30sIFtQUk9HUkFNX1BBVEgsICctLWd0ZXN0X2NvbG9yPXllcyddKQot
Q09NTUFORF9XSVRIX1RJTUUgPSAoe30sIFtQUk9HUkFNX1BBVEgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICctLWd0ZXN0X3ByaW50X3RpbWUnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAnLS1ndGVzdF9pbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ndGVzdF9maWx0ZXI9RmF0YWxGYWlsdXJlVGVz
dC4qOkxvZ2dpbmdUZXN0LionXSkKLUNPTU1BTkRfV0lUSF9ESVNBQkxFRCA9ICgKLSAgICB7fSwg
W1BST0dSQU1fUEFUSCwKLSAgICAgICAgICctLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3Rz
JywKLSAgICAgICAgICctLWd0ZXN0X2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hv
Y190ZXN0cycsCi0gICAgICAgICAnLS1ndGVzdF9maWx0ZXI9KkRJU0FCTEVEXyonXSkKLUNPTU1B
TkRfV0lUSF9TSEFSRElORyA9ICgKLSAgICB7J0dURVNUX1NIQVJEX0lOREVYJzogJzEnLCAnR1RF
U1RfVE9UQUxfU0hBUkRTJzogJzInfSwKLSAgICBbUFJPR1JBTV9QQVRILAotICAgICAnLS1ndGVz
dF9pbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMnLAotICAgICAnLS1n
dGVzdF9maWx0ZXI9UGFzc2luZ1Rlc3QuKiddKQotCi1HT0xERU5fUEFUSCA9IG9zLnBhdGguam9p
bihndGVzdF90ZXN0X3V0aWxzLkdldFNvdXJjZURpcigpLCBHT0xERU5fTkFNRSkKLQotCi1kZWYg
VG9Vbml4TGluZUVuZGluZyhzKToKLSAgIiIiQ2hhbmdlcyBhbGwgV2luZG93cy9NYWMgbGluZSBl
bmRpbmdzIGluIHMgdG8gVU5JWCBsaW5lIGVuZGluZ3MuIiIiCi0KLSAgcmV0dXJuIHMucmVwbGFj
ZSgnXHJcbicsICdcbicpLnJlcGxhY2UoJ1xyJywgJ1xuJykKLQotCi1kZWYgUmVtb3ZlTG9jYXRp
b25zKHRlc3Rfb3V0cHV0KToKLSAgIiIiUmVtb3ZlcyBhbGwgZmlsZSBsb2NhdGlvbiBpbmZvIGZy
b20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LgotCi0gIEFyZ3M6Ci0gICAgICAgdGVz
dF9vdXRwdXQ6ICB0aGUgb3V0cHV0IG9mIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbS4KLQotICBSZXR1
cm5zOgotICAgICAgIG91dHB1dCB3aXRoIGFsbCBmaWxlIGxvY2F0aW9uIGluZm8gKGluIHRoZSBm
b3JtIG9mCi0gICAgICAgJ0RJUkVDVE9SWS9GSUxFX05BTUU6TElORV9OVU1CRVI6ICdvcgotICAg
ICAgICdESVJFQ1RPUllcXEZJTEVfTkFNRShMSU5FX05VTUJFUik6ICcpIHJlcGxhY2VkIGJ5Ci0g
ICAgICAgJ0ZJTEVfTkFNRTojOiAnLgotICAiIiIKLQotICByZXR1cm4gcmUuc3ViKHInLipbL1xc
XSguKykoXDpcZCt8XChcZCtcKSlcOiAnLCByJ1wxOiM6ICcsIHRlc3Rfb3V0cHV0KQotCi0KLWRl
ZiBSZW1vdmVTdGFja1RyYWNlRGV0YWlscyhvdXRwdXQpOgotICAiIiJSZW1vdmVzIGFsbCBzdGFj
ayB0cmFjZXMgZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCi0KLSAgIyAq
PyBtZWFucyAiZmluZCB0aGUgc2hvcnRlc3Qgc3RyaW5nIHRoYXQgbWF0Y2hlcyIuCi0gIHJldHVy
biByZS5zdWIocidTdGFjayB0cmFjZTooLnxcbikqP1xuXG4nLAotICAgICAgICAgICAgICAgICdT
dGFjayB0cmFjZTogKG9taXR0ZWQpXG5cbicsIG91dHB1dCkKLQotCi1kZWYgUmVtb3ZlU3RhY2tU
cmFjZXMob3V0cHV0KToKLSAgIiIiUmVtb3ZlcyBhbGwgdHJhY2VzIG9mIHN0YWNrIHRyYWNlcyBm
cm9tIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4iIiIKLQotICAjICo/IG1lYW5zICJm
aW5kIHRoZSBzaG9ydGVzdCBzdHJpbmcgdGhhdCBtYXRjaGVzIi4KLSAgcmV0dXJuIHJlLnN1Yihy
J1N0YWNrIHRyYWNlOigufFxuKSo/XG5cbicsICcnLCBvdXRwdXQpCi0KLQotZGVmIFJlbW92ZVRp
bWUob3V0cHV0KToKLSAgIiIiUmVtb3ZlcyBhbGwgdGltZSBpbmZvcm1hdGlvbiBmcm9tIGEgR29v
Z2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4iIiIKLQotICByZXR1cm4gcmUuc3ViKHInXChcZCsg
bXMnLCAnKD8gbXMnLCBvdXRwdXQpCi0KLQotZGVmIFJlbW92ZVR5cGVJbmZvRGV0YWlscyh0ZXN0
X291dHB1dCk6Ci0gICIiIlJlbW92ZXMgY29tcGlsZXItc3BlY2lmaWMgdHlwZSBpbmZvIGZyb20g
R29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4KLQotICBBcmdzOgotICAgICAgIHRlc3Rfb3V0
cHV0OiAgdGhlIG91dHB1dCBvZiBhIEdvb2dsZSBUZXN0IHByb2dyYW0uCi0KLSAgUmV0dXJuczoK
LSAgICAgICBvdXRwdXQgd2l0aCB0eXBlIGluZm9ybWF0aW9uIG5vcm1hbGl6ZWQgdG8gY2Fub25p
Y2FsIGZvcm0uCi0gICIiIgotCi0gICMgc29tZSBjb21waWxlcnMgb3V0cHV0IHRoZSBuYW1lIG9m
IHR5cGUgJ3Vuc2lnbmVkIGludCcgYXMgJ3Vuc2lnbmVkJwotICByZXR1cm4gcmUuc3ViKHIndW5z
aWduZWQgaW50JywgJ3Vuc2lnbmVkJywgdGVzdF9vdXRwdXQpCi0KLQotZGVmIFJlbW92ZVRlc3RD
b3VudHMob3V0cHV0KToKLSAgIiIiUmVtb3ZlcyB0ZXN0IGNvdW50cyBmcm9tIGEgR29vZ2xlIFRl
c3QgcHJvZ3JhbSdzIG91dHB1dC4iIiIKLQotICBvdXRwdXQgPSByZS5zdWIocidcZCsgdGVzdHM/
LCBsaXN0ZWQgYmVsb3cnLAotICAgICAgICAgICAgICAgICAgJz8gdGVzdHMsIGxpc3RlZCBiZWxv
dycsIG91dHB1dCkKLSAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIEZBSUxFRCBURVNUUycsCi0gICAg
ICAgICAgICAgICAgICAnPyBGQUlMRUQgVEVTVFMnLCBvdXRwdXQpCi0gIG91dHB1dCA9IHJlLnN1
YihyJ1xkKyB0ZXN0cz8gZnJvbSBcZCsgdGVzdCBjYXNlcz8nLAotICAgICAgICAgICAgICAgICAg
Jz8gdGVzdHMgZnJvbSA/IHRlc3QgY2FzZXMnLCBvdXRwdXQpCi0gIG91dHB1dCA9IHJlLnN1Yihy
J1xkKyB0ZXN0cz8gZnJvbSAoW2EtekEtWl9dKScsCi0gICAgICAgICAgICAgICAgICByJz8gdGVz
dHMgZnJvbSBcMScsIG91dHB1dCkKLSAgcmV0dXJuIHJlLnN1YihyJ1xkKyB0ZXN0cz9cLicsICc/
IHRlc3RzLicsIG91dHB1dCkKLQotCi1kZWYgUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1
dCwgcGF0dGVybik6Ci0gICIiIlJlbW92ZXMgb3V0cHV0IG9mIHNwZWNpZmllZCB0ZXN0cyBmcm9t
IGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4KLQotICBUaGlzIGZ1bmN0aW9uIHN0cmlw
cyBub3Qgb25seSB0aGUgYmVnaW5uaW5nIGFuZCB0aGUgZW5kIG9mIGEgdGVzdCBidXQgYWxzbwot
ICBhbGwgb3V0cHV0IGluIGJldHdlZW4uCi0KLSAgQXJnczoKLSAgICB0ZXN0X291dHB1dDogICAg
ICAgQSBzdHJpbmcgY29udGFpbmluZyB0aGUgdGVzdCBvdXRwdXQuCi0gICAgcGF0dGVybjogICAg
ICAgICAgIEEgcmVnZXggc3RyaW5nIHRoYXQgbWF0Y2hlcyBuYW1lcyBvZiB0ZXN0IGNhc2VzIG9y
Ci0gICAgICAgICAgICAgICAgICAgICAgIHRlc3RzIHRvIHJlbW92ZS4KLQotICBSZXR1cm5zOgot
ICAgIENvbnRlbnRzIG9mIHRlc3Rfb3V0cHV0IHdpdGggdGVzdHMgd2hvc2UgbmFtZXMgbWF0Y2gg
cGF0dGVybiByZW1vdmVkLgotICAiIiIKLQotICB0ZXN0X291dHB1dCA9IHJlLnN1YigKLSAgICAg
IHInLipcWyBSVU4gICAgICBcXSAuKiVzKC58XG4pKj9cWyggIEZBSUxFRCAgfCAgICAgICBPSyAp
XF0gLiolcy4qXG4nICUgKAotICAgICAgICAgIHBhdHRlcm4sIHBhdHRlcm4pLAotICAgICAgJycs
Ci0gICAgICB0ZXN0X291dHB1dCkKLSAgcmV0dXJuIHJlLnN1YihyJy4qJXMuKlxuJyAlIHBhdHRl
cm4sICcnLCB0ZXN0X291dHB1dCkKLQotCi1kZWYgTm9ybWFsaXplT3V0cHV0KG91dHB1dCk6Ci0g
ICIiIk5vcm1hbGl6ZXMgb3V0cHV0ICh0aGUgb3V0cHV0IG9mIGd0ZXN0X291dHB1dF90ZXN0Xy5l
eGUpLiIiIgotCi0gIG91dHB1dCA9IFRvVW5peExpbmVFbmRpbmcob3V0cHV0KQotICBvdXRwdXQg
PSBSZW1vdmVMb2NhdGlvbnMob3V0cHV0KQotICBvdXRwdXQgPSBSZW1vdmVTdGFja1RyYWNlRGV0
YWlscyhvdXRwdXQpCi0gIG91dHB1dCA9IFJlbW92ZVRpbWUob3V0cHV0KQotICByZXR1cm4gb3V0
cHV0Ci0KLQotZGVmIEdldFNoZWxsQ29tbWFuZE91dHB1dChlbnZfY21kKToKLSAgIiIiUnVucyBh
IGNvbW1hbmQgaW4gYSBzdWItcHJvY2VzcywgYW5kIHJldHVybnMgaXRzIG91dHB1dCBpbiBhIHN0
cmluZy4KLQotICBBcmdzOgotICAgIGVudl9jbWQ6IFRoZSBzaGVsbCBjb21tYW5kLiBBIDItdHVw
bGUgd2hlcmUgZWxlbWVudCAwIGlzIGEgZGljdCBvZiBleHRyYQotICAgICAgICAgICAgIGVudmly
b25tZW50IHZhcmlhYmxlcyB0byBzZXQsIGFuZCBlbGVtZW50IDEgaXMgYSBzdHJpbmcgd2l0aAot
ICAgICAgICAgICAgIHRoZSBjb21tYW5kIGFuZCBhbnkgZmxhZ3MuCi0KLSAgUmV0dXJuczoKLSAg
ICBBIHN0cmluZyB3aXRoIHRoZSBjb21tYW5kJ3MgY29tYmluZWQgc3RhbmRhcmQgYW5kIGRpYWdu
b3N0aWMgb3V0cHV0LgotICAiIiIKLQotICAjIFNwYXducyBjbWQgaW4gYSBzdWItcHJvY2Vzcywg
YW5kIGdldHMgaXRzIHN0YW5kYXJkIEkvTyBmaWxlIG9iamVjdHMuCi0gICMgU2V0IGFuZCBzYXZl
IHRoZSBlbnZpcm9ubWVudCBwcm9wZXJseS4KLSAgZW52aXJvbiA9IG9zLmVudmlyb24uY29weSgp
Ci0gIGVudmlyb24udXBkYXRlKGVudl9jbWRbMF0pCi0gIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1
YnByb2Nlc3MoZW52X2NtZFsxXSwgZW52PWVudmlyb24pCi0KLSAgcmV0dXJuIHAub3V0cHV0Ci0K
LQotZGVmIEdldENvbW1hbmRPdXRwdXQoZW52X2NtZCk6Ci0gICIiIlJ1bnMgYSBjb21tYW5kIGFu
ZCByZXR1cm5zIGl0cyBvdXRwdXQgd2l0aCBhbGwgZmlsZSBsb2NhdGlvbgotICBpbmZvIHN0cmlw
cGVkIG9mZi4KLQotICBBcmdzOgotICAgIGVudl9jbWQ6ICBUaGUgc2hlbGwgY29tbWFuZC4gQSAy
LXR1cGxlIHdoZXJlIGVsZW1lbnQgMCBpcyBhIGRpY3Qgb2YgZXh0cmEKLSAgICAgICAgICAgICAg
ZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCwgYW5kIGVsZW1lbnQgMSBpcyBhIHN0cmluZyB3
aXRoCi0gICAgICAgICAgICAgIHRoZSBjb21tYW5kIGFuZCBhbnkgZmxhZ3MuCi0gICIiIgotCi0g
ICMgRGlzYWJsZXMgZXhjZXB0aW9uIHBvcC11cHMgb24gV2luZG93cy4KLSAgZW52aXJvbiwgY21k
bGluZSA9IGVudl9jbWQKLSAgZW52aXJvbiA9IGRpY3QoZW52aXJvbikgICMgRW5zdXJlcyB3ZSBh
cmUgbW9kaWZ5aW5nIGEgY29weS4KLSAgZW52aXJvbltDQVRDSF9FWENFUFRJT05TX0VOVl9WQVJf
TkFNRV0gPSAnMScKLSAgcmV0dXJuIE5vcm1hbGl6ZU91dHB1dChHZXRTaGVsbENvbW1hbmRPdXRw
dXQoKGVudmlyb24sIGNtZGxpbmUpKSkKLQotCi1kZWYgR2V0T3V0cHV0T2ZBbGxDb21tYW5kcygp
OgotICAiIiJSZXR1cm5zIGNvbmNhdGVuYXRlZCBvdXRwdXQgZnJvbSBzZXZlcmFsIHJlcHJlc2Vu
dGF0aXZlIGNvbW1hbmRzLiIiIgotCi0gIHJldHVybiAoR2V0Q29tbWFuZE91dHB1dChDT01NQU5E
X1dJVEhfQ09MT1IpICsKLSAgICAgICAgICBHZXRDb21tYW5kT3V0cHV0KENPTU1BTkRfV0lUSF9U
SU1FKSArCi0gICAgICAgICAgR2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJVEhfRElTQUJMRUQp
ICsKLSAgICAgICAgICBHZXRDb21tYW5kT3V0cHV0KENPTU1BTkRfV0lUSF9TSEFSRElORykpCi0K
LQotdGVzdF9saXN0ID0gR2V0U2hlbGxDb21tYW5kT3V0cHV0KENPTU1BTkRfTElTVF9URVNUUykK
LVNVUFBPUlRTX0RFQVRIX1RFU1RTID0gJ0RlYXRoVGVzdCcgaW4gdGVzdF9saXN0Ci1TVVBQT1JU
U19UWVBFRF9URVNUUyA9ICdUeXBlZFRlc3QnIGluIHRlc3RfbGlzdAotU1VQUE9SVFNfVEhSRUFE
UyA9ICdFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0JyBpbiB0ZXN0X2xpc3QKLVNVUFBPUlRT
X1NUQUNLX1RSQUNFUyA9IEZhbHNlCi0KLUNBTl9HRU5FUkFURV9HT0xERU5fRklMRSA9IChTVVBQ
T1JUU19ERUFUSF9URVNUUyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVVBQT1JU
U19UWVBFRF9URVNUUyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVVBQT1JUU19U
SFJFQURTKQotCi0KLWNsYXNzIEdUZXN0T3V0cHV0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RD
YXNlKToKLSAgZGVmIFJlbW92ZVVuc3VwcG9ydGVkVGVzdHMoc2VsZiwgdGVzdF9vdXRwdXQpOgot
ICAgIGlmIG5vdCBTVVBQT1JUU19ERUFUSF9URVNUUzoKLSAgICAgIHRlc3Rfb3V0cHV0ID0gUmVt
b3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwgJ0RlYXRoVGVzdCcpCi0gICAgaWYgbm90IFNV
UFBPUlRTX1RZUEVEX1RFU1RTOgotICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rl
c3RzKHRlc3Rfb3V0cHV0LCAnVHlwZWRUZXN0JykKLSAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3Zl
TWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwgJ1R5cGVkRGVhdGhUZXN0JykKLSAgICAgIHRlc3Rf
b3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwgJ1R5cGVQYXJhbURlYXRo
VGVzdCcpCi0gICAgaWYgbm90IFNVUFBPUlRTX1RIUkVBRFM6Ci0gICAgICB0ZXN0X291dHB1dCA9
IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0V4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QnKQotICAgICAg
dGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRS
ZXBvcnRlclRlc3QnKQotICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRl
c3Rfb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdXb3Jr
c0NvbmN1cnJlbnRseScpCi0gICAgaWYgbm90IFNVUFBPUlRTX1NUQUNLX1RSQUNFUzoKLSAgICAg
IHRlc3Rfb3V0cHV0ID0gUmVtb3ZlU3RhY2tUcmFjZXModGVzdF9vdXRwdXQpCi0KLSAgICByZXR1
cm4gdGVzdF9vdXRwdXQKLQotICBkZWYgdGVzdE91dHB1dChzZWxmKToKLSAgICBvdXRwdXQgPSBH
ZXRPdXRwdXRPZkFsbENvbW1hbmRzKCkKLQotICAgIGdvbGRlbl9maWxlID0gb3BlbihHT0xERU5f
UEFUSCwgJ3JiJykKLSAgICAjIEEgbWlzLWNvbmZpZ3VyZWQgc291cmNlIGNvbnRyb2wgc3lzdGVt
IGNhbiBjYXVzZSBcciBhcHBlYXIgaW4gRU9MCi0gICAgIyBzZXF1ZW5jZXMgd2hlbiB3ZSByZWFk
IHRoZSBnb2xkZW4gZmlsZSBpcnJlc3BlY3RpdmUgb2YgYW4gb3BlcmF0aW5nCi0gICAgIyBzeXN0
ZW0gdXNlZC4gVGhlcmVmb3JlLCB3ZSBuZWVkIHRvIHN0cmlwIHRob3NlIFxyJ3MgZnJvbSBuZXds
aW5lcwotICAgICMgdW5jb25kaXRpb25hbGx5LgotICAgIGdvbGRlbiA9IFRvVW5peExpbmVFbmRp
bmcoZ29sZGVuX2ZpbGUucmVhZCgpKQotICAgIGdvbGRlbl9maWxlLmNsb3NlKCkKLQotICAgICMg
V2Ugd2FudCB0aGUgdGVzdCB0byBwYXNzIHJlZ2FyZGxlc3Mgb2YgY2VydGFpbiBmZWF0dXJlcyBi
ZWluZwotICAgICMgc3VwcG9ydGVkIG9yIG5vdC4KLQotICAgICMgV2Ugc3RpbGwgaGF2ZSB0byBy
ZW1vdmUgdHlwZSBuYW1lIHNwZWNpZmljcyBpbiBhbGwgY2FzZXMuCi0gICAgbm9ybWFsaXplZF9h
Y3R1YWwgPSBSZW1vdmVUeXBlSW5mb0RldGFpbHMob3V0cHV0KQotICAgIG5vcm1hbGl6ZWRfZ29s
ZGVuID0gUmVtb3ZlVHlwZUluZm9EZXRhaWxzKGdvbGRlbikKLQotICAgIGlmIENBTl9HRU5FUkFU
RV9HT0xERU5fRklMRToKLSAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWFsaXplZF9nb2xkZW4s
IG5vcm1hbGl6ZWRfYWN0dWFsKQotICAgIGVsc2U6Ci0gICAgICBub3JtYWxpemVkX2FjdHVhbCA9
IFJlbW92ZVRlc3RDb3VudHMobm9ybWFsaXplZF9hY3R1YWwpCi0gICAgICBub3JtYWxpemVkX2dv
bGRlbiA9IFJlbW92ZVRlc3RDb3VudHMoc2VsZi5SZW1vdmVVbnN1cHBvcnRlZFRlc3RzKAotICAg
ICAgICAgIG5vcm1hbGl6ZWRfZ29sZGVuKSkKLQotICAgICAgIyBUaGlzIGNvZGUgaXMgdmVyeSBo
YW5keSB3aGVuIGRlYnVnZ2luZyBnb2xkZW4gZmlsZSBkaWZmZXJlbmNlczoKLSAgICAgIGlmIG9z
LmdldGVudignREVCVUdfR1RFU1RfT1VUUFVUX1RFU1QnKToKLSAgICAgICAgb3Blbihvcy5wYXRo
LmpvaW4oCi0gICAgICAgICAgICBndGVzdF90ZXN0X3V0aWxzLkdldFNvdXJjZURpcigpLAotICAg
ICAgICAgICAgJ19ndGVzdF9vdXRwdXRfdGVzdF9ub3JtYWxpemVkX2FjdHVhbC50eHQnKSwgJ3di
Jykud3JpdGUoCi0gICAgICAgICAgICAgICAgbm9ybWFsaXplZF9hY3R1YWwpCi0gICAgICAgIG9w
ZW4ob3MucGF0aC5qb2luKAotICAgICAgICAgICAgZ3Rlc3RfdGVzdF91dGlscy5HZXRTb3VyY2VE
aXIoKSwKLSAgICAgICAgICAgICdfZ3Rlc3Rfb3V0cHV0X3Rlc3Rfbm9ybWFsaXplZF9nb2xkZW4u
dHh0JyksICd3YicpLndyaXRlKAotICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRfZ29sZGVuKQot
Ci0gICAgICBzZWxmLmFzc2VydEVxdWFsKG5vcm1hbGl6ZWRfZ29sZGVuLCBub3JtYWxpemVkX2Fj
dHVhbCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBpZiBzeXMuYXJndlsxOl0g
PT0gW0dFTkdPTERFTl9GTEFHXToKLSAgICBpZiBDQU5fR0VORVJBVEVfR09MREVOX0ZJTEU6Ci0g
ICAgICBvdXRwdXQgPSBHZXRPdXRwdXRPZkFsbENvbW1hbmRzKCkKLSAgICAgIGdvbGRlbl9maWxl
ID0gb3BlbihHT0xERU5fUEFUSCwgJ3diJykKLSAgICAgIGdvbGRlbl9maWxlLndyaXRlKG91dHB1
dCkKLSAgICAgIGdvbGRlbl9maWxlLmNsb3NlKCkKLSAgICBlbHNlOgotICAgICAgbWVzc2FnZSA9
ICgKLSAgICAgICAgICAiIiJVbmFibGUgdG8gd3JpdGUgYSBnb2xkZW4gZmlsZSB3aGVuIGNvbXBp
bGVkIGluIGFuIGVudmlyb25tZW50Ci10aGF0IGRvZXMgbm90IHN1cHBvcnQgYWxsIHRoZSByZXF1
aXJlZCBmZWF0dXJlcyAoZGVhdGggdGVzdHMiIiIpCi0gICAgICBpZiBJU19XSU5ET1dTOgotICAg
ICAgICBtZXNzYWdlICs9ICgKLSAgICAgICAgICAgICIiIlxuYW5kIHR5cGVkIHRlc3RzKS4gUGxl
YXNlIGNoZWNrIHRoYXQgeW91IGFyZSB1c2luZyBWQysrIDguMCBTUDEKLW9yIGhpZ2hlciBhcyB5
b3VyIGNvbXBpbGVyLiIiIikKLSAgICAgIGVsc2U6Ci0gICAgICAgIG1lc3NhZ2UgKz0gIiIiXG50
eXBlZCB0ZXN0cywgYW5kIHRocmVhZHMpLiAgUGxlYXNlIGdlbmVyYXRlIHRoZQotZ29sZGVuIGZp
bGUgdXNpbmcgYSBiaW5hcnkgYnVpbHQgd2l0aCB0aG9zZSBmZWF0dXJlcyBlbmFibGVkLiIiIgot
Ci0gICAgICBzeXMuc3RkZXJyLndyaXRlKG1lc3NhZ2UpCi0gICAgICBzeXMuZXhpdCgxKQotICBl
bHNlOgotICAgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyNzNlOGU5M2ViMDU5ZjVkYjY5MzdjOGM3ZDc3NzY2Zjg3ODA1MjcwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjCisrKyAvZGV2L251bGwKQEAgLTEs
MTEzNSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6
Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8K
LS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0vLwotLy8gQSB1bml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZi4gIFRoaXMgdmVyaWZp
ZXMgdGhhdCB0aGUgYmFzaWMKLS8vIGNvbnN0cnVjdHMgb2YgR29vZ2xlIFRlc3Qgd29yay4KLS8v
Ci0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLSNpbmNsdWRlIDxn
dGVzdC9ndGVzdC1zcGkuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0vLyBJbmRpY2F0
ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0v
LyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5s
LmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBU
aGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNs
dWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVT
VF9JTVBMRU1FTlRBVElPTl8gMQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIK
LSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KLQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotCi0j
aWYgR1RFU1RfSVNfVEhSRUFEU0FGRQotdXNpbmcgdGVzdGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0
UmVzdWx0UmVwb3J0ZXI7Ci11c2luZyB0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdEFycmF5OwotCi11
c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Tm90aWZpY2F0aW9uOwotdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OlRocmVhZFdpdGhQYXJhbTsKLSNlbmRpZgotCi1uYW1lc3BhY2UgcG9zaXggPSA6OnRl
c3Rpbmc6OmludGVybmFsOjpwb3NpeDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmc7
Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVkX3B0cjsKLQotLy8gVGVzdHMgY2F0Y2hp
bmcgZmF0YWwgZmFpbHVyZXMuCi0KLS8vIEEgc3Vicm91dGluZSB1c2VkIGJ5IHRoZSBmb2xsb3dp
bmcgdGVzdC4KLXZvaWQgVGVzdEVxMShpbnQgeCkgewotICBBU1NFUlRfRVEoMSwgeCk7Ci19Ci0K
LS8vIFRoaXMgZnVuY3Rpb24gY2FsbHMgYSB0ZXN0IHN1YnJvdXRpbmUsIGNhdGNoZXMgdGhlIGZh
dGFsIGZhaWx1cmUgaXQKLS8vIGdlbmVyYXRlcywgYW5kIHRoZW4gcmV0dXJucyBlYXJseS4KLXZv
aWQgVHJ5VGVzdFN1YnJvdXRpbmUoKSB7Ci0gIC8vIENhbGxzIGEgc3Vicm91bnRpbmUgdGhhdCB5
aWVsZHMgYSBmYXRhbCBmYWlsdXJlLgotICBUZXN0RXExKDIpOwotCi0gIC8vIENhdGNoZXMgdGhl
IGZhdGFsIGZhaWx1cmUgYW5kIGFib3J0cyB0aGUgdGVzdC4KLSAgLy8KLSAgLy8gVGhlIHRlc3Rp
bmc6OlRlc3Q6OiBwcmVmaXggaXMgbmVjZXNzYXJ5IHdoZW4gY2FsbGluZwotICAvLyBIYXNGYXRh
bEZhaWx1cmUoKSBvdXRzaWRlIG9mIGEgVEVTVCwgVEVTVF9GLCBvciB0ZXN0IGZpeHR1cmUuCi0g
IGlmICh0ZXN0aW5nOjpUZXN0OjpIYXNGYXRhbEZhaWx1cmUoKSkgcmV0dXJuOwotCi0gIC8vIElm
IHdlIGdldCBoZXJlLCBzb21ldGhpbmcgaXMgd3JvbmcuCi0gIEZBSUwoKSA8PCAiVGhpcyBzaG91
bGQgbmV2ZXIgYmUgcmVhY2hlZC4iOwotfQotCi1URVNUKFBhc3NpbmdUZXN0LCBQYXNzaW5nVGVz
dDEpIHsKLX0KLQotVEVTVChQYXNzaW5nVGVzdCwgUGFzc2luZ1Rlc3QyKSB7Ci19Ci0KLS8vIFRl
c3RzIGNhdGNoaW5nIGEgZmF0YWwgZmFpbHVyZSBpbiBhIHN1YnJvdXRpbmUuCi1URVNUKEZhdGFs
RmFpbHVyZVRlc3QsIEZhdGFsRmFpbHVyZUluU3Vicm91dGluZSkgewotICBwcmludGYoIihleHBl
Y3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSlcbiIpOwotCi0gIFRyeVRlc3RTdWJy
b3V0aW5lKCk7Ci19Ci0KLS8vIFRlc3RzIGNhdGNoaW5nIGEgZmF0YWwgZmFpbHVyZSBpbiBhIG5l
c3RlZCBzdWJyb3V0aW5lLgotVEVTVChGYXRhbEZhaWx1cmVUZXN0LCBGYXRhbEZhaWx1cmVJbk5l
c3RlZFN1YnJvdXRpbmUpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHgg
c2hvdWxkIGJlIDEpXG4iKTsKLQotICAvLyBDYWxscyBhIHN1YnJvdW50aW5lIHRoYXQgeWllbGRz
IGEgZmF0YWwgZmFpbHVyZS4KLSAgVHJ5VGVzdFN1YnJvdXRpbmUoKTsKLQotICAvLyBDYXRjaGVz
IHRoZSBmYXRhbCBmYWlsdXJlIGFuZCBhYm9ydHMgdGhlIHRlc3QuCi0gIC8vCi0gIC8vIFdoZW4g
Y2FsbGluZyBIYXNGYXRhbEZhaWx1cmUoKSBpbnNpZGUgYSBURVNULCBURVNUX0YsIG9yIHRlc3QK
LSAgLy8gZml4dHVyZSwgdGhlIHRlc3Rpbmc6OlRlc3Q6OiBwcmVmaXggaXMgbm90IG5lZWRlZC4K
LSAgaWYgKEhhc0ZhdGFsRmFpbHVyZSgpKSByZXR1cm47Ci0KLSAgLy8gSWYgd2UgZ2V0IGhlcmUs
IHNvbWV0aGluZyBpcyB3cm9uZy4KLSAgRkFJTCgpIDw8ICJUaGlzIHNob3VsZCBuZXZlciBiZSBy
ZWFjaGVkLiI7Ci19Ci0KLS8vIFRlc3RzIEhhc0ZhdGFsRmFpbHVyZSgpIGFmdGVyIGEgZmFpbGVk
IEVYUEVDVCBjaGVjay4KLVRFU1QoRmF0YWxGYWlsdXJlVGVzdCwgTm9uZmF0YWxGYWlsdXJlSW5T
dWJyb3V0aW5lKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUgb24gZmFsc2UpXG4i
KTsKLSAgRVhQRUNUX1RSVUUoZmFsc2UpOyAgLy8gR2VuZXJhdGVzIGEgbm9uZmF0YWwgZmFpbHVy
ZQotICBBU1NFUlRfRkFMU0UoSGFzRmF0YWxGYWlsdXJlKCkpOyAgLy8gVGhpcyBzaG91bGQgc3Vj
Y2VlZC4KLX0KLQotLy8gVGVzdHMgaW50ZXJsZWF2aW5nIHVzZXIgbG9nZ2luZyBhbmQgR29vZ2xl
IFRlc3QgYXNzZXJ0aW9ucy4KLVRFU1QoTG9nZ2luZ1Rlc3QsIEludGVybGVhdmluZ0xvZ2dpbmdB
bmRBc3NlcnRpb25zKSB7Ci0gIHN0YXRpYyBjb25zdCBpbnQgYVs0XSA9IHsKLSAgICAzLCA5LCAy
LCA2Ci0gIH07Ci0KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24gKDMpID49IChh
W2ldKSlcbiIpOwotICBmb3IgKGludCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KGEpL3NpemVvZigqYSkpOyBpKyspIHsKLSAgICBwcmludGYoImkgPT0gJWRcbiIsIGkpOwotICAg
IEVYUEVDVF9HRSgzLCBhW2ldKTsKLSAgfQotfQotCi0vLyBUZXN0cyB0aGUgU0NPUEVEX1RSQUNF
IG1hY3JvLgotCi0vLyBBIGhlbHBlciBmdW5jdGlvbiBmb3IgdGVzdGluZyBTQ09QRURfVFJBQ0Uu
Ci12b2lkIFN1YldpdGhvdXRUcmFjZShpbnQgbikgewotICBFWFBFQ1RfRVEoMSwgbik7Ci0gIEFT
U0VSVF9FUSgyLCBuKTsKLX0KLQotLy8gQW5vdGhlciBoZWxwZXIgZnVuY3Rpb24gZm9yIHRlc3Rp
bmcgU0NPUEVEX1RSQUNFLgotdm9pZCBTdWJXaXRoVHJhY2UoaW50IG4pIHsKLSAgU0NPUEVEX1RS
QUNFKHRlc3Rpbmc6Ok1lc3NhZ2UoKSA8PCAibiA9ICIgPDwgbik7Ci0KLSAgU3ViV2l0aG91dFRy
YWNlKG4pOwotfQotCi0vLyBUZXN0cyB0aGF0IFNDT1BFRF9UUkFDRSgpIG9iZXlzIGxleGljYWwg
c2NvcGVzLgotVEVTVChTQ09QRURfVFJBQ0VUZXN0LCBPYmV5c1Njb3BlcykgewotICBwcmludGYo
IihleHBlY3RlZCB0byBmYWlsKVxuIik7Ci0KLSAgLy8gVGhlcmUgc2hvdWxkIGJlIG5vIHRyYWNl
IGJlZm9yZSBTQ09QRURfVFJBQ0UoKSBpcyBpbnZva2VkLgotICBBRERfRkFJTFVSRSgpIDw8ICJU
aGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNlLiI7Ci0K
LSAgewotICAgIFNDT1BFRF9UUkFDRSgiRXhwZWN0ZWQgdHJhY2UiKTsKLSAgICAvLyBBZnRlciBT
Q09QRURfVFJBQ0UoKSwgYSBmYWlsdXJlIGluIHRoZSBjdXJyZW50IHNjb3BlIHNob3VsZCBjb250
YWluCi0gICAgLy8gdGhlIHRyYWNlLgotICAgIEFERF9GQUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVy
ZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBoYXZlIGEgdHJhY2UuIjsKLSAgfQotCi0gIC8vIE9u
Y2UgdGhlIGNvbnRyb2wgbGVhdmVzIHRoZSBzY29wZSBvZiB0aGUgU0NPUEVEX1RSQUNFKCksIHRo
ZXJlCi0gIC8vIHNob3VsZCBiZSBubyB0cmFjZSBhZ2Fpbi4KLSAgQUREX0ZBSUxVUkUoKSA8PCAi
VGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkbid0IGhhdmUgYSB0cmFjZS4iOwot
fQotCi0vLyBUZXN0cyB0aGF0IFNDT1BFRF9UUkFDRSB3b3JrcyBpbnNpZGUgYSBsb29wLgotVEVT
VChTQ09QRURfVFJBQ0VUZXN0LCBXb3Jrc0luTG9vcCkgewotICBwcmludGYoIihleHBlY3RlZCB0
byBmYWlsKVxuIik7Ci0KLSAgZm9yIChpbnQgaSA9IDE7IGkgPD0gMjsgaSsrKSB7Ci0gICAgU0NP
UEVEX1RSQUNFKHRlc3Rpbmc6Ok1lc3NhZ2UoKSA8PCAiaSA9ICIgPDwgaSk7Ci0KLSAgICBTdWJX
aXRob3V0VHJhY2UoaSk7Ci0gIH0KLX0KLQotLy8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0Ugd29y
a3MgaW4gYSBzdWJyb3V0aW5lLgotVEVTVChTQ09QRURfVFJBQ0VUZXN0LCBXb3Jrc0luU3Vicm91
dGluZSkgewotICBwcmludGYoIihleHBlY3RlZCB0byBmYWlsKVxuIik7Ci0KLSAgU3ViV2l0aFRy
YWNlKDEpOwotICBTdWJXaXRoVHJhY2UoMik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgU0NPUEVEX1RS
QUNFIGNhbiBiZSBuZXN0ZWQuCi1URVNUKFNDT1BFRF9UUkFDRVRlc3QsIENhbkJlTmVzdGVkKSB7
Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKLQotICBTQ09QRURfVFJBQ0UoIiIp
OyAgLy8gQSB0cmFjZSB3aXRob3V0IGEgbWVzc2FnZS4KLQotICBTdWJXaXRoVHJhY2UoMik7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgbXVsdGlwbGUgU0NPUEVEX1RSQUNFcyBjYW4gYmUgdXNlZCBpbiB0
aGUgc2FtZSBzY29wZS4KLVRFU1QoU0NPUEVEX1RSQUNFVGVzdCwgQ2FuQmVSZXBlYXRlZCkgewot
ICBwcmludGYoIihleHBlY3RlZCB0byBmYWlsKVxuIik7Ci0KLSAgU0NPUEVEX1RSQUNFKCJBIik7
Ci0gIEFERF9GQUlMVVJFKCkKLSAgICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFu
ZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLiI7Ci0KLSAgU0NPUEVEX1RSQUNFKCJCIik7
Ci0gIEFERF9GQUlMVVJFKCkKLSAgICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFu
ZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBIGFuZCBCLiI7Ci0KLSAgewotICAgIFNDT1BF
RF9UUkFDRSgiQyIpOwotICAgIEFERF9GQUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBl
Y3RlZCwgYW5kIHNob3VsZCBjb250YWluICIKLSAgICAgICAgICAgICAgICAgIDw8ICJ0cmFjZSBw
b2ludCBBLCBCLCBhbmQgQy4iOwotICB9Ci0KLSAgU0NPUEVEX1RSQUNFKCJEIik7Ci0gIEFERF9G
QUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWlu
ICIKLSAgICAgICAgICAgICAgICA8PCAidHJhY2UgcG9pbnQgQSwgQiwgYW5kIEQuIjsKLX0KLQot
I2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKLS8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFKClzIGNh
biBiZSB1c2VkIGNvbmN1cnJlbnRseSBmcm9tIG11bHRpcGxlCi0vLyB0aHJlYWRzLiAgTmFtZWx5
LCBhbiBhc3NlcnRpb24gc2hvdWxkIGJlIGFmZmVjdGVkIGJ5Ci0vLyBTQ09QRURfVFJBQ0UoKXMg
aW4gaXRzIG93biB0aHJlYWQgb25seS4KLQotLy8gSGVyZSdzIHRoZSBzZXF1ZW5jZSBvZiBhY3Rp
b25zIHRoYXQgaGFwcGVuIGluIHRoZSB0ZXN0OgotLy8KLS8vICAgVGhyZWFkIEEgKG1haW4pICAg
ICAgICAgICAgICAgIHwgVGhyZWFkIEIgKHNwYXduZWQpCi0vLyAgID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT18PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vICAgc3Bh
d25zIHRocmVhZCBCICAgICAgICAgICAgICAgIHwKLS8vICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gICB3YWl0cyBm
b3IgbjEgICAgICAgICAgICAgICAgICAgfCBTQ09QRURfVFJBQ0UoIlRyYWNlIEIiKTsKLS8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2VuZXJhdGVzIGZhaWx1cmUgIzEKLS8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbm90aWZpZXMgbjEKLS8vICAgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotLy8gICBTQ09QRURfVFJBQ0UoIlRyYWNlIEEiKTsgICAgICAgfCB3YWl0cyBmb3IgbjIK
LS8vICAgZ2VuZXJhdGVzIGZhaWx1cmUgIzIgICAgICAgICAgIHwKLS8vICAgbm90aWZpZXMgbjIg
ICAgICAgICAgICAgICAgICAgIHwKLS8vICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gICB3YWl0cyBmb3IgbjMgICAg
ICAgICAgICAgICAgICAgfCBnZW5lcmF0ZXMgZmFpbHVyZSAjMwotLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCB0cmFjZSBCIGRpZXMKLS8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgZ2VuZXJhdGVzIGZhaWx1cmUgIzQKLS8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgbm90aWZpZXMgbjMKLS8vICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gICBnZW5lcmF0
ZXMgZmFpbHVyZSAjNSAgICAgICAgICAgfCBmaW5pc2hlcwotLy8gICB0cmFjZSBBIGRpZXMgICAg
ICAgICAgICAgICAgICAgfAotLy8gICBnZW5lcmF0ZXMgZmFpbHVyZSAjNiAgICAgICAgICAgfAot
Ly8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0vLyAgIHdhaXRzIGZvciB0aHJlYWQgQiB0byBmaW5pc2ggICB8Ci0KLXN0
cnVjdCBDaGVja1BvaW50cyB7Ci0gIE5vdGlmaWNhdGlvbiBuMTsKLSAgTm90aWZpY2F0aW9uIG4y
OwotICBOb3RpZmljYXRpb24gbjM7Ci19OwotCi1zdGF0aWMgdm9pZCBUaHJlYWRXaXRoU2NvcGVk
VHJhY2UoQ2hlY2tQb2ludHMqIGNoZWNrX3BvaW50cykgewotICB7Ci0gICAgU0NPUEVEX1RSQUNF
KCJUcmFjZSBCIik7Ci0gICAgQUREX0ZBSUxVUkUoKQotICAgICAgICA8PCAiRXhwZWN0ZWQgZmFp
bHVyZSAjMSAoaW4gdGhyZWFkIEIsIG9ubHkgdHJhY2UgQiBhbGl2ZSkuIjsKLSAgICBjaGVja19w
b2ludHMtPm4xLk5vdGlmeSgpOwotICAgIGNoZWNrX3BvaW50cy0+bjIuV2FpdEZvck5vdGlmaWNh
dGlvbigpOwotCi0gICAgQUREX0ZBSUxVUkUoKQotICAgICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVy
ZSAjMyAoaW4gdGhyZWFkIEIsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLiI7Ci0gIH0gIC8vIFRy
YWNlIEIgZGllcyBoZXJlLgotICBBRERfRkFJTFVSRSgpCi0gICAgICA8PCAiRXhwZWN0ZWQgZmFp
bHVyZSAjNCAoaW4gdGhyZWFkIEIsIG9ubHkgdHJhY2UgQSBhbGl2ZSkuIjsKLSAgY2hlY2tfcG9p
bnRzLT5uMy5Ob3RpZnkoKTsKLX0KLQotVEVTVChTQ09QRURfVFJBQ0VUZXN0LCBXb3Jrc0NvbmN1
cnJlbnRseSkgewotICBwcmludGYoIihleHBlY3RpbmcgNiBmYWlsdXJlcylcbiIpOwotCi0gIENo
ZWNrUG9pbnRzIGNoZWNrX3BvaW50czsKLSAgVGhyZWFkV2l0aFBhcmFtPENoZWNrUG9pbnRzKj4g
dGhyZWFkKCZUaHJlYWRXaXRoU2NvcGVkVHJhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmY2hlY2tfcG9pbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTlVMTCk7Ci0gIGNoZWNrX3BvaW50cy5uMS5XYWl0Rm9yTm90aWZpY2F0aW9u
KCk7Ci0KLSAgewotICAgIFNDT1BFRF9UUkFDRSgiVHJhY2UgQSIpOwotICAgIEFERF9GQUlMVVJF
KCkKLSAgICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIgKGluIHRocmVhZCBBLCB0cmFjZSBB
ICYgQiBib3RoIGFsaXZlKS4iOwotICAgIGNoZWNrX3BvaW50cy5uMi5Ob3RpZnkoKTsKLSAgICBj
aGVja19wb2ludHMubjMuV2FpdEZvck5vdGlmaWNhdGlvbigpOwotCi0gICAgQUREX0ZBSUxVUkUo
KQotICAgICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNSAoaW4gdGhyZWFkIEEsIG9ubHkgdHJh
Y2UgQSBhbGl2ZSkuIjsKLSAgfSAgLy8gVHJhY2UgQSBkaWVzIGhlcmUuCi0gIEFERF9GQUlMVVJF
KCkKLSAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM2IChpbiB0aHJlYWQgQSwgbm8gdHJhY2Ug
YWxpdmUpLiI7Ci0gIHRocmVhZC5Kb2luKCk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0lTX1RIUkVB
RFNBRkUKLQotVEVTVChEaXNhYmxlZFRlc3RzV2FybmluZ1Rlc3QsCi0gICAgIERJU0FCTEVEX0Fs
c29SdW5EaXNhYmxlZFRlc3RzRmxhZ1N1cHByZXNzZXNXYXJuaW5nKSB7Ci0gIC8vIFRoaXMgdGVz
dCBib2R5IGlzIGludGVudGlvbmFsbHkgZW1wdHkuICBJdHMgc29sZSBwdXJwb3NlIGlzIGZvcgot
ICAvLyB2ZXJpZnlpbmcgdGhhdCB0aGUgLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBm
bGFnCi0gIC8vIHN1cHByZXNzZXMgdGhlICJZT1UgSEFWRSAxMiBESVNBQkxFRCBURVNUUyIgd2Fy
bmluZyBhdCB0aGUgZW5kIG9mCi0gIC8vIHRoZSB0ZXN0IG91dHB1dC4KLX0KLQotLy8gVGVzdHMg
dXNpbmcgYXNzZXJ0aW9ucyBvdXRzaWRlIG9mIFRFU1QgYW5kIFRFU1RfRi4KLS8vCi0vLyBUaGlz
IGZ1bmN0aW9uIGNyZWF0ZXMgdHdvIGZhaWx1cmVzIGludGVudGlvbmFsbHkuCi12b2lkIEFkSG9j
VGVzdCgpIHsKLSAgcHJpbnRmKCJUaGUgbm9uLXRlc3QgcGFydCBvZiB0aGUgY29kZSBpcyBleHBl
Y3RlZCB0byBoYXZlIDIgZmFpbHVyZXMuXG5cbiIpOwotICBFWFBFQ1RfVFJVRShmYWxzZSk7Ci0g
IEVYUEVDVF9FUSgyLCAzKTsKLX0KLQotLy8gUnVucyBhbGwgVEVTVHMsIGFsbCBURVNUX0ZzLCBh
bmQgdGhlIGFkIGhvYyB0ZXN0LgotaW50IFJ1bkFsbFRlc3RzKCkgewotICBBZEhvY1Rlc3QoKTsK
LSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KLQotLy8gVGVzdHMgbm9uLWZhdGFsIGZhaWx1
cmVzIGluIHRoZSBmaXh0dXJlIGNvbnN0cnVjdG9yLgotY2xhc3MgTm9uRmF0YWxGYWlsdXJlSW5G
aXh0dXJlQ29uc3RydWN0b3JUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3Rl
ZDoKLSAgTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0KCkgewotICAgIHBy
aW50ZigiKGV4cGVjdGluZyA1IGZhaWx1cmVzKVxuIik7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAi
RXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4iOwotICB9Ci0K
LSAgfk5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCgpIHsKLSAgICBBRERf
RkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM1LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQn
dG9yLiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgQUREX0ZBSUxVUkUo
KSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gU2V0VXAoKS4iOwotICB9Ci0KLSAgdmlydHVh
bCB2b2lkIFRlYXJEb3duKCkgewotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1
cmUgIzQsIGluIFRlYXJEb3duLiI7Ci0gIH0KLX07Ci0KLVRFU1RfRihOb25GYXRhbEZhaWx1cmVJ
bkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QsIEZhaWx1cmVJbkNvbnN0cnVjdG9yKSB7Ci0gIEFERF9G
QUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGJvZHkuIjsKLX0K
LQotLy8gVGVzdHMgZmF0YWwgZmFpbHVyZXMgaW4gdGhlIGZpeHR1cmUgY29uc3RydWN0b3IuCi1j
bGFzcyBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3Rv
clRlc3QoKSB7Ci0gICAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMpXG4iKTsKLSAgICBJ
bml0KCk7Ci0gIH0KLQotICB+RmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0KCkg
ewotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0
IGZpeHR1cmUgZCd0b3IuIjsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBB
RERfRkFJTFVSRSgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gU2V0VXAoKS4gICIKLSAgICAg
ICAgICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZp
eHR1cmUgYyd0b3IgIgotICAgICAgICAgICAgICAgICAgPDwgImhhZCBhIGZhdGFsIGZhaWx1cmUu
IjsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBBRERfRkFJTFVSRSgp
IDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gVGVhckRvd24oKS4gICIKLSAgICAgICAgICAgICAg
ICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0
b3IgIgotICAgICAgICAgICAgICAgICAgPDwgImhhZCBhIGZhdGFsIGZhaWx1cmUuIjsKLSAgfQot
IHByaXZhdGU6Ci0gIHZvaWQgSW5pdCgpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1
cmUgIzEsIGluIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IuIjsKLSAgfQotfTsKLQotVEVTVF9GKEZh
dGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCwgRmFpbHVyZUluQ29uc3RydWN0b3Ip
IHsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIHRoZSB0ZXN0IGJv
ZHkuICAiCi0gICAgICAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMg
dGhlIHRlc3QgZml4dHVyZSBjJ3RvciAiCi0gICAgICAgICAgICAgICAgPDwgImhhZCBhIGZhdGFs
IGZhaWx1cmUuIjsKLX0KLQotLy8gVGVzdHMgbm9uLWZhdGFsIGZhaWx1cmVzIGluIFNldFVwKCku
Ci1jbGFzcyBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgfk5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0KCkg
ewotICAgIERlaW5pdCgpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIHBy
aW50ZigiKGV4cGVjdGluZyA0IGZhaWx1cmVzKVxuIik7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAi
RXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gU2V0VXAoKS4iOwotICB9Ci0KLSAgdmlydHVhbCB2b2lk
IFRlYXJEb3duKCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gVGVh
ckRvd24oKS4iOwotICB9Ci0gcHJpdmF0ZToKLSAgdm9pZCBEZWluaXQoKSB7Ci0gICAgRkFJTCgp
IDw8ICJFeHBlY3RlZCBmYWlsdXJlICM0LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLiI7Ci0g
IH0KLX07Ci0KLVRFU1RfRihOb25GYXRhbEZhaWx1cmVJblNldFVwVGVzdCwgRmFpbHVyZUluU2V0
VXApIHsKLSAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmdW5j
dGlvbi4iOwotfQotCi0vLyBUZXN0cyBmYXRhbCBmYWlsdXJlcyBpbiBTZXRVcCgpLgotY2xhc3Mg
RmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVj
dGVkOgotICB2aXJ0dWFsIH5GYXRhbEZhaWx1cmVJblNldFVwVGVzdCgpIHsKLSAgICBEZWluaXQo
KTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBwcmludGYoIihleHBlY3Rp
bmcgMyBmYWlsdXJlcylcbiIpOwotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSwg
aW4gU2V0VXAoKS4iOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIEZB
SUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4iOwotICB9Ci0gcHJp
dmF0ZToKLSAgdm9pZCBEZWluaXQoKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJl
ICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLiI7Ci0gIH0KLX07Ci0KLVRFU1RfRihGYXRh
bEZhaWx1cmVJblNldFVwVGVzdCwgRmFpbHVyZUluU2V0VXApIHsKLSAgRkFJTCgpIDw8ICJVTkVY
UEVDVEVEIGZhaWx1cmUgaW4gdGhlIHRlc3QgZnVuY3Rpb24uICAiCi0gICAgICAgICA8PCAiV2Ug
c2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyBTZXRVcCgpIGZhaWxlZC4iOwotfQotCi0jaWYgR1RF
U1RfT1NfV0lORE9XUwotCi0vLyBUaGlzIGdyb3VwIG9mIHRlc3RzIHZlcmlmaWVzIHRoYXQgR29v
Z2xlIFRlc3QgaGFuZGxlcyBTRUggYW5kIEMrKwotLy8gZXhjZXB0aW9ucyBjb3JyZWN0bHkuCi0K
LS8vIEEgZnVuY3Rpb24gdGhhdCB0aHJvd3MgYW4gU0VIIGV4Y2VwdGlvbi4KLXN0YXRpYyB2b2lk
IFRocm93U0VIKCkgewotICBpbnQqIHAgPSBOVUxMOwotICAqcCA9IDA7ICAvLyBSYWlzZXMgYW4g
YWNjZXNzIHZpb2xhdGlvbi4KLX0KLQotLy8gVGVzdHMgZXhjZXB0aW9ucyB0aHJvd24gaW4gdGhl
IHRlc3QgZml4dHVyZSBjb25zdHJ1Y3Rvci4KLWNsYXNzIEV4Y2VwdGlvbkluRml4dHVyZUN0b3JU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgRXhjZXB0aW9uSW5G
aXh0dXJlQ3RvclRlc3QoKSB7Ci0gICAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiB0
aHJvd24gZXhjZXB0aW9uICIKLSAgICAgICAgICAgImluIHRoZSB0ZXN0IGZpeHR1cmUncyBjb25z
dHJ1Y3RvcilcbiIpOwotCi0gICAgVGhyb3dTRUgoKTsKLSAgfQotCi0gIHZpcnR1YWwgfkV4Y2Vw
dGlvbkluRml4dHVyZUN0b3JUZXN0KCkgewotICAgIERlaW5pdCgpOwotICB9Ci0KLSAgdmlydHVh
bCB2b2lkIFNldFVwKCkgewotICAgIEZBSUwoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIFNl
dFVwKCkuICAiCi0gICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRo
ZSB0ZXN0IGZpeHR1cmUgYyd0b3IgdGhyZXcuIjsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpIHsKLSAgICBGQUlMKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiBUZWFyRG93bigp
LiAgIgotICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVz
dCBmaXh0dXJlIGMndG9yIHRocmV3LiI7Ci0gIH0KLSBwcml2YXRlOgotICB2b2lkIERlaW5pdCgp
IHsKLSAgICBGQUlMKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgZCd0b3IuICAiCi0g
ICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1
cmUgYyd0b3IgdGhyZXcuIjsKLSAgfQotfTsKLQotVEVTVF9GKEV4Y2VwdGlvbkluRml4dHVyZUN0
b3JUZXN0LCBFeGNlcHRpb25JbkZpeHR1cmVDdG9yKSB7Ci0gIEZBSUwoKSA8PCAiVU5FWFBFQ1RF
RCBmYWlsdXJlIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLiAgIgotICAgICAgICAgPDwgIldlIHNob3Vs
ZCBuZXZlciBnZXQgaGVyZSwgYXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciB0aHJldy4iOwotfQot
Ci0vLyBUZXN0cyBleGNlcHRpb25zIHRocm93biBpbiBTZXRVcCgpLgotY2xhc3MgRXhjZXB0aW9u
SW5TZXRVcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0
dWFsIH5FeGNlcHRpb25JblNldFVwVGVzdCgpIHsKLSAgICBEZWluaXQoKTsKLSAgfQotCi0gIHZp
cnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBwcmludGYoIihleHBlY3RpbmcgMyBmYWlsdXJlcylc
biIpOwotCi0gICAgVGhyb3dTRUgoKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigp
IHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRlYXJEb3duKCkuIjsK
LSAgfQotIHByaXZhdGU6Ci0gIHZvaWQgRGVpbml0KCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0
ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4iOwotICB9Ci19OwotCi1U
RVNUX0YoRXhjZXB0aW9uSW5TZXRVcFRlc3QsIEV4Y2VwdGlvbkluU2V0VXApIHsKLSAgRkFJTCgp
IDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gdGhlIHRlc3QgZnVuY3Rpb24uICAiCi0gICAgICAg
ICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyBTZXRVcCgpIHRocmV3LiI7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgVGVhckRvd24oKSBhbmQgdGhlIHRlc3QgZml4dHVyZSBkJ3RvciBhcmUg
YWx3YXlzIGNhbGxlZCwKLS8vIGV2ZW4gd2hlbiB0aGUgdGVzdCBmdW5jdGlvbiB0aHJvd3MgYW4g
ZXhjZXB0aW9uLgotY2xhc3MgRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB+RXhjZXB0aW9uSW5UZXN0RnVu
Y3Rpb25UZXN0KCkgewotICAgIERlaW5pdCgpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJE
b3duKCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24o
KS4iOwotICB9Ci0gcHJpdmF0ZToKLSAgdm9pZCBEZWluaXQoKSB7Ci0gICAgRkFJTCgpIDw8ICJF
eHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLiI7Ci0gIH0KLX07
Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIHRlc3QgZml4dHVyZSBkJ3RvciBpcyBhbHdheXMgY2FsbGVk
LCBldmVuIHdoZW4gdGhlCi0vLyB0ZXN0IGZ1bmN0aW9uIHRocm93cyBhbiBTRUggZXhjZXB0aW9u
LgotVEVTVF9GKEV4Y2VwdGlvbkluVGVzdEZ1bmN0aW9uVGVzdCwgU0VIKSB7Ci0gIHByaW50Zigi
KGV4cGVjdGluZyAzIGZhaWx1cmVzKVxuIik7Ci0KLSAgVGhyb3dTRUgoKTsKLX0KLQotI2lmIEdU
RVNUX0hBU19FWENFUFRJT05TCi0KLS8vIFRlc3RzIHRoYXQgdGhlIHRlc3QgZml4dHVyZSBkJ3Rv
ciBpcyBhbHdheXMgY2FsbGVkLCBldmVuIHdoZW4gdGhlCi0vLyB0ZXN0IGZ1bmN0aW9uIHRocm93
cyBhIEMrKyBleGNlcHRpb24uICBXZSBkbyB0aGlzIG9ubHkgd2hlbgotLy8gR1RFU1RfSEFTX0VY
Q0VQVElPTlMgaXMgbm9uLXplcm8sIGkuZS4gQysrIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQuCi1U
RVNUX0YoRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0LCBDcHBFeGNlcHRpb24pIHsKLSAgdGhy
b3cgMTsKLX0KLQotLy8gVGVzdHMgZXhjZXB0aW9ucyB0aHJvd24gaW4gVGVhckRvd24oKS4KLWNs
YXNzIEV4Y2VwdGlvbkluVGVhckRvd25UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHBy
b3RlY3RlZDoKLSAgdmlydHVhbCB+RXhjZXB0aW9uSW5UZWFyRG93blRlc3QoKSB7Ci0gICAgRGVp
bml0KCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgdGhyb3cgMTsK
LSAgfQotIHByaXZhdGU6Ci0gIHZvaWQgRGVpbml0KCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0
ZWQgZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4iOwotICB9Ci19OwotCi1U
RVNUX0YoRXhjZXB0aW9uSW5UZWFyRG93blRlc3QsIEV4Y2VwdGlvbkluVGVhckRvd24pIHsKLSAg
cHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMpXG4iKTsKLX0KLQotI2VuZGlmICAvLyBHVEVT
VF9IQVNfRVhDRVBUSU9OUwotCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotI2lmIEdU
RVNUX0lTX1RIUkVBRFNBRkUKLQotLy8gQSB1bmFyeSBmdW5jdGlvbiB0aGF0IG1heSBkaWUuCi12
b2lkIERpZUlmKGJvb2wgc2hvdWxkX2RpZSkgewotICBHVEVTVF9DSEVDS18oIXNob3VsZF9kaWUp
IDw8ICIgLSBkZWF0aCBpbnNpZGUgRGllSWYoKS4iOwotfQotCi0vLyBUZXN0cyBydW5uaW5nIGRl
YXRoIHRlc3RzIGluIGEgbXVsdGktdGhyZWFkZWQgY29udGV4dC4KLQotLy8gVXNlZCBmb3IgY29v
cmRpbmF0aW9uIGJldHdlZW4gdGhlIG1haW4gYW5kIHRoZSBzcGF3biB0aHJlYWQuCi1zdHJ1Y3Qg
U3Bhd25UaHJlYWROb3RpZmljYXRpb25zIHsKLSAgU3Bhd25UaHJlYWROb3RpZmljYXRpb25zKCkg
e30KLQotICBOb3RpZmljYXRpb24gc3Bhd25fdGhyZWFkX3N0YXJ0ZWQ7Ci0gIE5vdGlmaWNhdGlv
biBzcGF3bl90aHJlYWRfb2tfdG9fdGVybWluYXRlOwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMpOwotfTsKLQot
Ly8gVGhlIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIGluIHRoZSB0aHJlYWQgc3Bhd24gYnkgdGhl
Ci0vLyBNdWx0aXBsZVRocmVhZHMgdGVzdCAoYmVsb3cpLgotc3RhdGljIHZvaWQgVGhyZWFkUm91
dGluZShTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMqIG5vdGlmaWNhdGlvbnMpIHsKLSAgLy8gU2ln
bmFscyB0aGUgbWFpbiB0aHJlYWQgdGhhdCB0aGlzIHRocmVhZCBoYXMgc3RhcnRlZC4KLSAgbm90
aWZpY2F0aW9ucy0+c3Bhd25fdGhyZWFkX3N0YXJ0ZWQuTm90aWZ5KCk7Ci0KLSAgLy8gV2FpdHMg
Zm9yIHBlcm1pc3Npb24gdG8gZmluaXNoIGZyb20gdGhlIG1haW4gdGhyZWFkLgotICBub3RpZmlj
YXRpb25zLT5zcGF3bl90aHJlYWRfb2tfdG9fdGVybWluYXRlLldhaXRGb3JOb3RpZmljYXRpb24o
KTsKLX0KLQotLy8gVGhpcyBpcyBhIGRlYXRoLXRlc3QgdGVzdCwgYnV0IGl0J3Mgbm90IG5hbWVk
IHdpdGggYSBEZWF0aFRlc3QKLS8vIHN1ZmZpeC4gIEl0IHN0YXJ0cyB0aHJlYWRzIHdoaWNoIG1p
Z2h0IGludGVyZmVyZSB3aXRoIGxhdGVyCi0vLyBkZWF0aCB0ZXN0cywgc28gaXQgbXVzdCBydW4g
YWZ0ZXIgYWxsIG90aGVyIGRlYXRoIHRlc3RzLgotY2xhc3MgRGVhdGhUZXN0QW5kTXVsdGlUaHJl
YWRzVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIC8vIFN0YXJ0
cyBhIHRocmVhZCBhbmQgd2FpdHMgZm9yIGl0IHRvIGJlZ2luLgotICB2aXJ0dWFsIHZvaWQgU2V0
VXAoKSB7Ci0gICAgdGhyZWFkXy5yZXNldChuZXcgVGhyZWFkV2l0aFBhcmFtPFNwYXduVGhyZWFk
Tm90aWZpY2F0aW9ucyo+KAotICAgICAgICAmVGhyZWFkUm91dGluZSwgJm5vdGlmaWNhdGlvbnNf
LCBOVUxMKSk7Ci0gICAgbm90aWZpY2F0aW9uc18uc3Bhd25fdGhyZWFkX3N0YXJ0ZWQuV2FpdEZv
ck5vdGlmaWNhdGlvbigpOwotICB9Ci0gIC8vIFRlbGxzIHRoZSB0aHJlYWQgdG8gZmluaXNoLCBh
bmQgcmVhcHMgaXQuCi0gIC8vIERlcGVuZGluZyBvbiB0aGUgdmVyc2lvbiBvZiB0aGUgdGhyZWFk
IGxpYnJhcnkgaW4gdXNlLAotICAvLyBhIG1hbmFnZXIgdGhyZWFkIG1pZ2h0IHN0aWxsIGJlIGxl
ZnQgcnVubmluZyB0aGF0IHdpbGwgaW50ZXJmZXJlCi0gIC8vIHdpdGggbGF0ZXIgZGVhdGggdGVz
dHMuICBUaGlzIGlzIHVuZm9ydHVuYXRlLCBidXQgdGhpcyBjbGFzcwotICAvLyBjbGVhbnMgdXAg
YWZ0ZXIgaXRzZWxmIGFzIGJlc3QgaXQgY2FuLgotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7
Ci0gICAgbm90aWZpY2F0aW9uc18uc3Bhd25fdGhyZWFkX29rX3RvX3Rlcm1pbmF0ZS5Ob3RpZnko
KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgU3Bhd25UaHJlYWROb3RpZmljYXRpb25zIG5vdGlmaWNh
dGlvbnNfOwotICBzY29wZWRfcHRyPFRocmVhZFdpdGhQYXJhbTxTcGF3blRocmVhZE5vdGlmaWNh
dGlvbnMqPiA+IHRocmVhZF87Ci19OwotCi0jZW5kaWYgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUK
LQotLy8gVGhlIE1peGVkVXBUZXN0Q2FzZVRlc3QgdGVzdCBjYXNlIHZlcmlmaWVzIHRoYXQgR29v
Z2xlIFRlc3Qgd2lsbCBmYWlsIGEKLS8vIHRlc3QgaWYgaXQgdXNlcyBhIGRpZmZlcmVudCBmaXh0
dXJlIGNsYXNzIHRoYW4gd2hhdCBvdGhlciB0ZXN0cyBpbgotLy8gdGhlIHNhbWUgdGVzdCBjYXNl
IHVzZS4gIEl0IGRlbGliZXJhdGVseSBjb250YWlucyB0d28gZml4dHVyZQotLy8gY2xhc3NlcyB3
aXRoIHRoZSBzYW1lIG5hbWUgYnV0IGRlZmluZWQgaW4gZGlmZmVyZW50IG5hbWVzcGFjZXMuCi0K
LS8vIFRoZSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdCB0ZXN0IGNhc2UgdmVy
aWZpZXMgdGhhdAotLy8gd2hlbiB0aGUgdXNlciBkZWZpbmVzIHR3byB0ZXN0cyB3aXRoIHRoZSBz
YW1lIHRlc3QgY2FzZSBuYW1lIEFORAotLy8gc2FtZSB0ZXN0IG5hbWUgKGJ1dCBpbiBkaWZmZXJl
bnQgbmFtZXNwYWNlcyksIHRoZSBzZWNvbmQgdGVzdCB3aWxsCi0vLyBmYWlsLgotCi1uYW1lc3Bh
Y2UgZm9vIHsKLQotY2xhc3MgTWl4ZWRVcFRlc3RDYXNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKLX07Ci0KLVRFU1RfRihNaXhlZFVwVGVzdENhc2VUZXN0LCBGaXJzdFRlc3RGcm9tTmFt
ZXNwYWNlRm9vKSB7fQotVEVTVF9GKE1peGVkVXBUZXN0Q2FzZVRlc3QsIFNlY29uZFRlc3RGcm9t
TmFtZXNwYWNlRm9vKSB7fQotCi1jbGFzcyBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1l
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRFU1RfRihNaXhlZFVwVGVzdENh
c2VXaXRoU2FtZVRlc3ROYW1lVGVzdCwKLSAgICAgICBUaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1l
U2hvdWxkRmFpbCkge30KLQotfSAgLy8gbmFtZXNwYWNlIGZvbwotCi1uYW1lc3BhY2UgYmFyIHsK
LQotY2xhc3MgTWl4ZWRVcFRlc3RDYXNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07
Ci0KLS8vIFRoZSBmb2xsb3dpbmcgdHdvIHRlc3RzIGFyZSBleHBlY3RlZCB0byBmYWlsLiAgV2Ug
cmVseSBvbiB0aGUKLS8vIGdvbGRlbiBmaWxlIHRvIGNoZWNrIHRoYXQgR29vZ2xlIFRlc3QgZ2Vu
ZXJhdGVzIHRoZSByaWdodCBlcnJvciBtZXNzYWdlLgotVEVTVF9GKE1peGVkVXBUZXN0Q2FzZVRl
c3QsIFRoaXNTaG91bGRGYWlsKSB7fQotVEVTVF9GKE1peGVkVXBUZXN0Q2FzZVRlc3QsIFRoaXNT
aG91bGRGYWlsVG9vKSB7fQotCi1jbGFzcyBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1l
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLS8vIEV4cGVjdGVkIHRvIGZhaWwu
ICBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmlsZSB0byBjaGVjayB0aGF0IEdvb2dsZSBUZXN0Ci0v
LyBnZW5lcmF0ZXMgdGhlIHJpZ2h0IGVycm9yIG1lc3NhZ2UuCi1URVNUX0YoTWl4ZWRVcFRlc3RD
YXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCi0gICAgICAgVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFt
ZVNob3VsZEZhaWwpIHt9Ci0KLX0gIC8vIG5hbWVzcGFjZSBiYXIKLQotLy8gVGhlIGZvbGxvd2lu
ZyB0d28gdGVzdCBjYXNlcyB2ZXJpZnkgdGhhdCBHb29nbGUgVGVzdCBjYXRjaGVzIHRoZSB1c2Vy
Ci0vLyBlcnJvciBvZiBtaXhpbmcgVEVTVCBhbmQgVEVTVF9GIGluIHRoZSBzYW1lIHRlc3QgY2Fz
ZS4gIFRoZSBmaXJzdAotLy8gdGVzdCBjYXNlIGNoZWNrcyB0aGUgc2NlbmFyaW8gd2hlcmUgVEVT
VF9GIGFwcGVhcnMgYmVmb3JlIFRFU1QsIGFuZAotLy8gdGhlIHNlY29uZCBvbmUgY2hlY2tzIHdo
ZXJlIFRFU1QgYXBwZWFycyBiZWZvcmUgVEVTVF9GLgotCi1jbGFzcyBURVNUX0ZfYmVmb3JlX1RF
U1RfaW5fc2FtZV90ZXN0X2Nhc2UgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1URVNU
X0YoVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLCBEZWZpbmVkVXNpbmdURVNU
X0YpIHt9Ci0KLS8vIEV4cGVjdGVkIHRvIGZhaWwuICBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmls
ZSB0byBjaGVjayB0aGF0IEdvb2dsZSBUZXN0Ci0vLyBnZW5lcmF0ZXMgdGhlIHJpZ2h0IGVycm9y
IG1lc3NhZ2UuCi1URVNUKFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSwgRGVm
aW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwpIHt9Ci0KLWNsYXNzIFRFU1RfYmVmb3JlX1RFU1Rf
Rl9pbl9zYW1lX3Rlc3RfY2FzZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRFU1Qo
VEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLCBEZWZpbmVkVXNpbmdURVNUKSB7
fQotCi0vLyBFeHBlY3RlZCB0byBmYWlsLiAgV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8g
Y2hlY2sgdGhhdCBHb29nbGUgVGVzdAotLy8gZ2VuZXJhdGVzIHRoZSByaWdodCBlcnJvciBtZXNz
YWdlLgotVEVTVF9GKFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZSwgRGVmaW5l
ZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbCkgewotfQotCi0vLyBVc2VkIGZvciB0ZXN0aW5nIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgYW5kIEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkuCi1pbnQg
Z2xvYmFsX2ludGVnZXIgPSAwOwotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKCkgY2FuIHJlZmVyZW5jZSBnbG9iYWwgdmFyaWFibGVzLgotVEVTVChFeHBlY3ROb25mYXRh
bEZhaWx1cmVUZXN0LCBDYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMpIHsKLSAgZ2xvYmFsX2lu
dGVnZXIgPSAwOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAgRVhQRUNUX0VRKDEs
IGdsb2JhbF9pbnRlZ2VyKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKLSAgfSwg
IkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKCkgY2FuIHJlZmVyZW5jZSBsb2NhbCB2YXJpYWJsZXMKLS8vIChz
dGF0aWMgb3Igbm90KS4KLVRFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQ2FuUmVmZXJl
bmNlTG9jYWxWYXJpYWJsZXMpIHsKLSAgaW50IG0gPSAwOwotICBzdGF0aWMgaW50IG47Ci0gIG4g
PSAxOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAgRVhQRUNUX0VRKG0sIG4pIDw8
ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiRXhwZWN0ZWQgbm9uLWZhdGFs
IGZhaWx1cmUuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
KSBzdWNjZWVkcyB3aGVuIHRoZXJlIGlzIGV4YWN0bHkKLS8vIG9uZSBub24tZmF0YWwgZmFpbHVy
ZSBhbmQgbm8gZmF0YWwgZmFpbHVyZS4KLVRFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwg
U3VjY2VlZHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZSkgewotICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSh7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZh
aWx1cmUuIjsKLSAgfSwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBu
bwotLy8gbm9uLWZhdGFsIGZhaWx1cmUuCi1URVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qs
IEZhaWxzV2hlblRoZXJlSXNOb05vbmZhdGFsRmFpbHVyZSkgewotICBwcmludGYoIihleHBlY3Rp
bmcgYSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgfSwgIiIp
OwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hl
biB0aGVyZSBhcmUgdHdvCi0vLyBub24tZmF0YWwgZmFpbHVyZXMuCi1URVNUKEV4cGVjdE5vbmZh
dGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlQXJlVHdvTm9uZmF0YWxGYWlsdXJlcykgewot
ICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKHsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVy
ZSAxLiI7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUg
Mi4iOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoKSBmYWlscyB3aGVuIHRoZXJlIGlzIG9uZSBmYXRhbAotLy8gZmFpbHVyZS4KLVRFU1QoRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZSkg
ewotICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKLSAg
fSwgIiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgZmFp
bHMgd2hlbiB0aGUgc3RhdGVtZW50IGJlaW5nCi0vLyB0ZXN0ZWQgcmV0dXJucy4KLVRFU1QoRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucykgewotICBw
cmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKHsKLSAgICByZXR1cm47Ci0gIH0sICIiKTsKLX0KLQotI2lmIEdURVNUX0hBU19FWENFUFRJ
T05TCi0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVu
IHRoZSBzdGF0ZW1lbnQgYmVpbmcKLS8vIHRlc3RlZCB0aHJvd3MuCi1URVNUKEV4cGVjdE5vbmZh
dGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblN0YXRlbWVudFRocm93cykgewotICBwcmludGYoIihl
eHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0gIHRyeSB7Ci0gICAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoewotICAgICAgdGhyb3cgMDsKLSAgICB9LCAiIik7Ci0gIH0gY2F0Y2goaW50KSB7ICAv
LyBOT0xJTlQKLSAgfQotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCi0KLS8v
IFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBjYW4gcmVmZXJlbmNlIGdsb2JhbCB2
YXJpYWJsZXMuCi1URVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIENhblJlZmVyZW5jZUdsb2Jh
bFZhcmlhYmxlcykgewotICBnbG9iYWxfaW50ZWdlciA9IDA7Ci0gIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKHsKLSAgICBBU1NFUlRfRVEoMSwgZ2xvYmFsX2ludGVnZXIpIDw8ICJFeHBlY3RlZCBmYXRh
bCBmYWlsdXJlLiI7Ci0gIH0sICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgY2FuIHJlZmVyZW5jZSBsb2NhbCBzdGF0
aWMKLS8vIHZhcmlhYmxlcy4KLVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgQ2FuUmVmZXJl
bmNlTG9jYWxTdGF0aWNWYXJpYWJsZXMpIHsKLSAgc3RhdGljIGludCBuOwotICBuID0gMTsKLSAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICAgIEFTU0VSVF9FUSgwLCBuKSA8PCAiRXhwZWN0ZWQg
ZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIHN1Y2NlZWRzIHdoZW4gdGhlcmUg
aXMgZXhhY3RseQotLy8gb25lIGZhdGFsIGZhaWx1cmUgYW5kIG5vIG5vbi1mYXRhbCBmYWlsdXJl
LgotVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBTdWNjZWVkc1doZW5UaGVyZUlzT25lRmF0
YWxGYWlsdXJlKSB7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKLSAgICBGQUlMKCkgPDwgIkV4
cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKLSAgfSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRo
ZXJlIGlzIG5vIGZhdGFsCi0vLyBmYWlsdXJlLgotVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0
LCBGYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5n
IGEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0gIH0sICIiKTsKLX0K
LQotLy8gQSBoZWxwZXIgZm9yIGdlbmVyYXRpbmcgYSBmYXRhbCBmYWlsdXJlLgotdm9pZCBGYXRh
bEZhaWx1cmUoKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOwotfQot
Ci0vLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBh
cmUgdHdvCi0vLyBmYXRhbCBmYWlsdXJlcy4KLVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwg
RmFpbHNXaGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzKSB7Ci0gIHByaW50ZigiKGV4cGVjdGlu
ZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICAgIEZhdGFsRmFp
bHVyZSgpOwotICAgIEZhdGFsRmFpbHVyZSgpOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZXJlIGlzIG9uZSBub24tZmF0
YWwKLS8vIGZhaWx1cmUuCi1URVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRo
ZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVy
ZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAi
RXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyB0
aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGUgc3RhdGVtZW50IGJlaW5n
Ci0vLyB0ZXN0ZWQgcmV0dXJucy4KLVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNX
aGVuU3RhdGVtZW50UmV0dXJucykgewotICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxu
Iik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKLSAgICByZXR1cm47Ci0gIH0sICIiKTsKLX0K
LQotI2lmIEdURVNUX0hBU19FWENFUFRJT05TCi0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZSBzdGF0ZW1lbnQgYmVpbmcKLS8vIHRlc3RlZCB0aHJv
d3MuCi1URVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblN0YXRlbWVudFRocm93
cykgewotICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0gIHRyeSB7Ci0gICAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICAgICAgdGhyb3cgMDsKLSAgICB9LCAiIik7Ci0gIH0g
Y2F0Y2goaW50KSB7ICAvLyBOT0xJTlQKLSAgfQotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19F
WENFUFRJT05TCi0KLS8vIFRoaXMgI2lmZGVmIGJsb2NrIHRlc3RzIHRoZSBvdXRwdXQgb2YgdHlw
ZWQgdGVzdHMuCi0jaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1jbGFzcyBUeXBlZFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1UWVBF
RF9URVNUX0NBU0UoVHlwZWRUZXN0LCB0ZXN0aW5nOjpUeXBlczxpbnQ+KTsKLQotVFlQRURfVEVT
VChUeXBlZFRlc3QsIFN1Y2Nlc3MpIHsKLSAgRVhQRUNUX0VRKDAsIFR5cGVQYXJhbSgpKTsKLX0K
LQotVFlQRURfVEVTVChUeXBlZFRlc3QsIEZhaWx1cmUpIHsKLSAgRVhQRUNUX0VRKDEsIFR5cGVQ
YXJhbSgpKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X1RZUEVEX1RFU1QKLQotLy8gVGhpcyAjaWZkZWYgYmxvY2sgdGVzdHMgdGhlIG91dHB1dCBvZiB0
eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCi0jaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFR5cGVkVGVzdFAgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChUeXBlZFRlc3RQKTsKLQotVFlQRURfVEVT
VF9QKFR5cGVkVGVzdFAsIFN1Y2Nlc3MpIHsKLSAgRVhQRUNUX0VRKDBVLCBUeXBlUGFyYW0oKSk7
Ci19Ci0KLVRZUEVEX1RFU1RfUChUeXBlZFRlc3RQLCBGYWlsdXJlKSB7Ci0gIEVYUEVDVF9FUSgx
VSwgVHlwZVBhcmFtKCkpIDw8ICJFeHBlY3RlZCBmYWlsdXJlIjsKLX0KLQotUkVHSVNURVJfVFlQ
RURfVEVTVF9DQVNFX1AoVHlwZWRUZXN0UCwgU3VjY2VzcywgRmFpbHVyZSk7Ci0KLXR5cGVkZWYg
dGVzdGluZzo6VHlwZXM8dW5zaWduZWQgY2hhciwgdW5zaWduZWQgaW50PiBVbnNpZ25lZFR5cGVz
OwotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoVW5zaWduZWQsIFR5cGVkVGVzdFAsIFVu
c2lnbmVkVHlwZXMpOwotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUX1AKLQotI2lm
IEdURVNUX0hBU19ERUFUSF9URVNUCi0KLS8vIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRv
IHZlcmlmeSB0aGF0IHRlc3RzIHdob3NlIHRlc3QgY2FzZQotLy8gbmFtZSBlbmRzIHdpdGggRGVh
dGhUZXN0IGFyZSBydW4gZmlyc3QuCi0KLVRFU1QoQURlYXRoVGVzdCwgU2hvdWxkUnVuRmlyc3Qp
IHsKLX0KLQotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUCi0KLS8vIFdlIHJlbHkgb24gdGhlIGdv
bGRlbiBmaWxlIHRvIHZlcmlmeSB0aGF0IHR5cGVkIHRlc3RzIHdob3NlIHRlc3QKLS8vIGNhc2Ug
bmFtZSBlbmRzIHdpdGggRGVhdGhUZXN0IGFyZSBydW4gZmlyc3QuCi0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotY2xhc3MgQVR5cGVkRGVhdGhUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewot
fTsKLQotdHlwZWRlZiB0ZXN0aW5nOjpUeXBlczxpbnQsIGRvdWJsZT4gTnVtZXJpY1R5cGVzOwot
VFlQRURfVEVTVF9DQVNFKEFUeXBlZERlYXRoVGVzdCwgTnVtZXJpY1R5cGVzKTsKLQotVFlQRURf
VEVTVChBVHlwZWREZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0KSB7Ci19Ci0KLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1RZUEVEX1RFU1QKLQotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUX1AKLQotCi0v
LyBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmlsZSB0byB2ZXJpZnkgdGhhdCB0eXBlLXBhcmFtZXRl
cml6ZWQgdGVzdHMKLS8vIHdob3NlIHRlc3QgY2FzZSBuYW1lIGVuZHMgd2l0aCBEZWF0aFRlc3Qg
YXJlIHJ1biBmaXJzdC4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBBVHlwZVBhcmFt
RGVhdGhUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVFlQRURfVEVTVF9DQVNF
X1AoQVR5cGVQYXJhbURlYXRoVGVzdCk7Ci0KLVRZUEVEX1RFU1RfUChBVHlwZVBhcmFtRGVhdGhU
ZXN0LCBTaG91bGRSdW5GaXJzdCkgewotfQotCi1SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChB
VHlwZVBhcmFtRGVhdGhUZXN0LCBTaG91bGRSdW5GaXJzdCk7Ci0KLUlOU1RBTlRJQVRFX1RZUEVE
X1RFU1RfQ0FTRV9QKE15LCBBVHlwZVBhcmFtRGVhdGhUZXN0LCBOdW1lcmljVHlwZXMpOwotCi0j
ZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUX1AKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNf
REVBVEhfVEVTVAotCi0vLyBUZXN0cyB2YXJpb3VzIGZhaWx1cmUgY29uZGl0aW9ucyBvZgotLy8g
RVhQRUNUX3ssTk9OfUZBVEFMX0ZBSUxVUkV7LF9PTl9BTExfVEhSRUFEU30uCi1jbGFzcyBFeHBl
Y3RGYWlsdXJlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwdWJsaWM6ICAvLyBNdXN0
IGJlIHB1YmxpYyBhbmQgbm90IHByb3RlY3RlZCBkdWUgdG8gYSBidWcgaW4gZysrIDMuNC4yLgot
ICBlbnVtIEZhaWx1cmVNb2RlIHsKLSAgICBGQVRBTF9GQUlMVVJFLAotICAgIE5PTkZBVEFMX0ZB
SUxVUkUKLSAgfTsKLSAgc3RhdGljIHZvaWQgQWRkRmFpbHVyZShGYWlsdXJlTW9kZSBmYWlsdXJl
KSB7Ci0gICAgaWYgKGZhaWx1cmUgPT0gRkFUQUxfRkFJTFVSRSkgewotICAgICAgRkFJTCgpIDw8
ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7Ci0gICAgfSBlbHNlIHsKLSAgICAgIEFERF9GQUlM
VVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7Ci0gICAgfQotICB9Ci19Owot
Ci1URVNUX0YoRXhwZWN0RmFpbHVyZVRlc3QsIEV4cGVjdEZhdGFsRmFpbHVyZSkgewotICAvLyBF
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLCBidXQgc3VjY2VlZHMuCi0gIHByaW50ZigiKGV4cGVjdGlu
ZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoU1VDQ0VFRCgpLCAiRXhw
ZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKLSAgLy8gRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0
IGdvdCBhIG5vbi1mYXRhbCBmYWlsdXJlLgotICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJl
KVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJTFVS
RSksICJFeHBlY3RlZCBub24tZmF0YWwgIgotICAgICAgICAgICAgICAgICAgICAgICAiZmFpbHVy
ZS4iKTsKLSAgLy8gV3JvbmcgbWVzc2FnZS4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVy
ZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlKEZBVEFMX0ZBSUxVUkUp
LCAiU29tZSBvdGhlciBmYXRhbCBmYWlsdXJlICIKLSAgICAgICAgICAgICAgICAgICAgICAgImV4
cGVjdGVkLiIpOwotfQotCi1URVNUX0YoRXhwZWN0RmFpbHVyZVRlc3QsIEV4cGVjdE5vbkZhdGFs
RmFpbHVyZSkgewotICAvLyBFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSwgYnV0IHN1Y2NlZWRz
LgotICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKFNVQ0NFRUQoKSwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwotICAv
LyBFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSwgYnV0IGdvdCBhIGZhdGFsIGZhaWx1cmUuCi0g
IHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJFKSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUu
Iik7Ci0gIC8vIFdyb25nIG1lc3NhZ2UuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUp
XG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVyZShOT05GQVRBTF9GQUlM
VVJFKSwgIlNvbWUgb3RoZXIgbm9uLWZhdGFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ImZhaWx1cmUuIik7Ci19Ci0KLSNpZiBHVEVTVF9JU19USFJFQURTQUZFCi0KLWNsYXNzIEV4cGVj
dEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QgOiBwdWJsaWMgRXhwZWN0RmFpbHVyZVRlc3QgewotIHBy
b3RlY3RlZDoKLSAgc3RhdGljIHZvaWQgQWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoRmFpbHVyZU1v
ZGUgZmFpbHVyZSkgewotICAgIFRocmVhZFdpdGhQYXJhbTxGYWlsdXJlTW9kZT4gdGhyZWFkKCZB
ZGRGYWlsdXJlLCBmYWlsdXJlLCBOVUxMKTsKLSAgICB0aHJlYWQuSm9pbigpOwotICB9Ci19Owot
Ci1URVNUX0YoRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCwgRXhwZWN0RmF0YWxGYWlsdXJl
KSB7Ci0gIC8vIFdlIG9ubHkgaW50ZXJjZXB0IHRoZSBjdXJyZW50IHRocmVhZC4KLSAgcHJpbnRm
KCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRk
RmFpbHVyZUluT3RoZXJUaHJlYWQoRkFUQUxfRkFJTFVSRSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOwotfQotCi1URVNUX0YoRXhwZWN0RmFpbHVy
ZVdpdGhUaHJlYWRzVGVzdCwgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlKSB7Ci0gIC8vIFdlIG9ubHkg
aW50ZXJjZXB0IHRoZSBjdXJyZW50IHRocmVhZC4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFp
bHVyZXMpXG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVyZUluT3RoZXJU
aHJlYWQoTk9ORkFUQUxfRkFJTFVSRSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBl
Y3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotdHlwZWRlZiBFeHBlY3RGYWlsdXJlV2l0
aFRocmVhZHNUZXN0IFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdDsKLQotLy8g
VGVzdHMgdGhhdCB0aGUgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIgb25seSBjYXRj
aGVzIGZhaWx1cmVzIGZyb20KLS8vIHRoZSBjdXJyZW50IHRocmVhZCBpZiBpdCBpcyBpbnN0YW50
aWF0ZWQgd2l0aCBJTlRFUkNFUFRfT05MWV9DVVJSRU5UX1RIUkVBRC4KLVRFU1RfRihTY29wZWRG
YWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3QsIEludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFk
KSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7Ci0gIFRlc3RQYXJ0UmVz
dWx0QXJyYXkgcmVzdWx0czsKLSAgewotICAgIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9y
dGVyIHJlcG9ydGVyKAotICAgICAgICBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjo6
SU5URVJDRVBUX09OTFlfQ1VSUkVOVF9USFJFQUQsCi0gICAgICAgICZyZXN1bHRzKTsKLSAgICBB
ZGRGYWlsdXJlSW5PdGhlclRocmVhZChGQVRBTF9GQUlMVVJFKTsKLSAgICBBZGRGYWlsdXJlSW5P
dGhlclRocmVhZChOT05GQVRBTF9GQUlMVVJFKTsKLSAgfQotICAvLyBUaGUgdHdvIGZhaWx1cmVz
IHNob3VsZCBub3QgaGF2ZSBiZWVuIGludGVyY2VwdGVkLgotICBFWFBFQ1RfRVEoMCwgcmVzdWx0
cy5zaXplKCkpIDw8ICJUaGlzIHNob3VsZG4ndCBmYWlsLiI7Ci19Ci0KLSNlbmRpZiAgLy8gR1RF
U1RfSVNfVEhSRUFEU0FGRQotCi1URVNUX0YoRXhwZWN0RmFpbHVyZVRlc3QsIEV4cGVjdEZhdGFs
RmFpbHVyZU9uQWxsVGhyZWFkcykgewotICAvLyBFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLCBidXQg
c3VjY2VlZHMuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoU1VDQ0VFRCgpLCAiRXhwZWN0ZWQgZmF0YWwg
ZmFpbHVyZS4iKTsKLSAgLy8gRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0IGdvdCBhIG5vbi1m
YXRhbCBmYWlsdXJlLgotICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVY
UEVDVF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJ
TFVSRSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBu
b24tZmF0YWwgZmFpbHVyZS4iKTsKLSAgLy8gV3JvbmcgbWVzc2FnZS4KLSAgcHJpbnRmKCIoZXhw
ZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhS
RUFEUyhBZGRGYWlsdXJlKEZBVEFMX0ZBSUxVUkUpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiU29tZSBvdGhlciBmYXRhbCBmYWlsdXJlIGV4cGVjdGVkLiIpOwotfQot
Ci1URVNUX0YoRXhwZWN0RmFpbHVyZVRlc3QsIEV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhy
ZWFkcykgewotICAvLyBFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSwgYnV0IHN1Y2NlZWRzLgot
ICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFX09OX0FMTF9USFJFQURTKFNVQ0NFRUQoKSwgIkV4cGVjdGVkIG5vbi1mYXRhbCAiCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsdXJlLiIpOwotICAv
LyBFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSwgYnV0IGdvdCBhIGZhdGFsIGZhaWx1cmUuCi0g
IHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkVfT05fQUxMX1RIUkVBRFMoQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJFKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUu
Iik7Ci0gIC8vIFdyb25nIG1lc3NhZ2UuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUp
XG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoQWRkRmFpbHVy
ZShOT05GQVRBTF9GQUlMVVJFKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1cmUuIik7Ci19Ci0KLQotLy8gVHdvIHRl
c3QgZW52aXJvbm1lbnRzIGZvciB0ZXN0aW5nIHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9u
bWVudCgpLgotCi1jbGFzcyBGb29FbnZpcm9ubWVudCA6IHB1YmxpYyB0ZXN0aW5nOjpFbnZpcm9u
bWVudCB7Ci0gcHVibGljOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgcHJpbnRmKCIl
cyIsICJGb29FbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuXG4iKTsKLSAgfQotCi0gIHZpcnR1
YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBwcmludGYoIiVzIiwgIkZvb0Vudmlyb25tZW50OjpU
ZWFyRG93bigpIGNhbGxlZC5cbiIpOwotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFp
bHVyZS4iOwotICB9Ci19OwotCi1jbGFzcyBCYXJFbnZpcm9ubWVudCA6IHB1YmxpYyB0ZXN0aW5n
OjpFbnZpcm9ubWVudCB7Ci0gcHVibGljOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAg
cHJpbnRmKCIlcyIsICJCYXJFbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuXG4iKTsKLSAgfQot
Ci0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBwcmludGYoIiVzIiwgIkJhckVudmly
b25tZW50OjpUZWFyRG93bigpIGNhbGxlZC5cbiIpOwotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4
cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7Ci0gIH0KLX07Ci0KLUdURVNUX0RFRklORV9ib29s
XyhpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMsIGZhbHNlLAotICAg
ICAgICAgICAgICAgICAgICJUaGlzIGZsYWcgY2F1c2VzIHRoZSBwcm9ncmFtIHRvIHNraXAgdGVz
dCBlbnZpcm9ubWVudCAiCi0gICAgICAgICAgICAgICAgICAgInRlc3RzIGFuZCBhZCBob2MgdGVz
dHMuIik7Ci0KLS8vIFRoZSBtYWluIGZ1bmN0aW9uLgotLy8KLS8vIFRoZSBpZGVhIGlzIHRvIHVz
ZSBHb29nbGUgVGVzdCB0byBydW4gYWxsIHRoZSB0ZXN0cyB3ZSBoYXZlIGRlZmluZWQgKHNvbWUK
LS8vIG9mIHRoZW0gYXJlIGludGVuZGVkIHRvIGZhaWwpLCBhbmQgdGhlbiBjb21wYXJlIHRoZSB0
ZXN0IHJlc3VsdHMKLS8vIHdpdGggdGhlICJnb2xkZW4iIGZpbGUuCi1pbnQgbWFpbihpbnQgYXJn
YywgY2hhciAqKmFyZ3YpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhwcmludF90aW1lKSA9IGZh
bHNlOwotCi0gIC8vIFdlIGp1c3QgcnVuIHRoZSB0ZXN0cywga25vd2luZyBzb21lIG9mIHRoZW0g
YXJlIGludGVuZGVkIHRvIGZhaWwuCi0gIC8vIFdlIHdpbGwgdXNlIGEgc2VwYXJhdGUgUHl0aG9u
IHNjcmlwdCB0byBjb21wYXJlIHRoZSBvdXRwdXQgb2YKLSAgLy8gdGhpcyBwcm9ncmFtIHdpdGgg
dGhlIGdvbGRlbiBmaWxlLgotCi0gIC8vIEl0J3MgaGFyZCB0byB0ZXN0IEluaXRHb29nbGVUZXN0
KCkgZGlyZWN0bHksIGFzIGl0IGhhcyBtYW55Ci0gIC8vIGdsb2JhbCBzaWRlIGVmZmVjdHMuICBU
aGUgZm9sbG93aW5nIGxpbmUgc2VydmVzIGFzIGEgc2FuaXR5IHRlc3QKLSAgLy8gZm9yIGl0Lgot
ICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0gIGlmIChhcmdjID49IDIg
JiYKLSAgICAgIFN0cmluZyhhcmd2WzFdKSA9PSAiLS1ndGVzdF9pbnRlcm5hbF9za2lwX2Vudmly
b25tZW50X2FuZF9hZF9ob2NfdGVzdHMiKQotICAgIEdURVNUX0ZMQUcoaW50ZXJuYWxfc2tpcF9l
bnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzKSA9IHRydWU7Ci0KLSNpZiBHVEVTVF9IQVNfREVB
VEhfVEVTVAotICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OkdURVNUX0ZMQUcoaW50ZXJuYWxfcnVu
X2RlYXRoX3Rlc3QpICE9ICIiKSB7Ci0gICAgLy8gU2tpcCB0aGUgdXN1YWwgb3V0cHV0IGNhcHR1
cmluZyBpZiB3ZSdyZSBydW5uaW5nIGFzIHRoZSBjaGlsZAotICAgIC8vIHByb2Nlc3Mgb2YgYW4g
dGhyZWFkc2FmZS1zdHlsZSBkZWF0aCB0ZXN0LgotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgICBw
b3NpeDo6RlJlb3BlbigibnVsOiIsICJ3Iiwgc3Rkb3V0KTsKLSNlbHNlCi0gICAgcG9zaXg6OkZS
ZW9wZW4oIi9kZXYvbnVsbCIsICJ3Iiwgc3Rkb3V0KTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lO
RE9XUwotICAgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci0gIH0KLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX0RFQVRIX1RFU1QKLQotICBpZiAoR1RFU1RfRkxBRyhpbnRlcm5hbF9za2lwX2Vudmlyb25t
ZW50X2FuZF9hZF9ob2NfdGVzdHMpKQotICAgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci0KLSAg
Ly8gUmVnaXN0ZXJzIHR3byBnbG9iYWwgdGVzdCBlbnZpcm9ubWVudHMuCi0gIC8vIFRoZSBnb2xk
ZW4gZmlsZSB2ZXJpZmllcyB0aGF0IHRoZXkgYXJlIHNldCB1cCBpbiB0aGUgb3JkZXIgdGhleQot
ICAvLyBhcmUgcmVnaXN0ZXJlZCwgYW5kIHRvcm4gZG93biBpbiB0aGUgcmV2ZXJzZSBvcmRlci4K
LSAgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBGb29FbnZpcm9ubWVudCk7
Ci0gIHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgQmFyRW52aXJvbm1lbnQp
OwotCi0gIHJldHVybiBSdW5BbGxUZXN0cygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fbGluLnR4dCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjNjA0MzdhY2FhNzY0MGRmYmYzZGIyODNj
ZjFkMTUwMzRjMDYyMmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xk
ZW5fbGluLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDY5NiArMCwwIEBACi1UaGUgbm9uLXRlc3Qg
cGFydCBvZiB0aGUgY29kZSBpcyBleHBlY3RlZCB0byBoYXZlIDIgZmFpbHVyZXMuCi0KLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogZmFsc2UKLSAgQWN0dWFsOiBm
YWxzZQotRXhwZWN0ZWQ6IHRydWUKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1W
YWx1ZSBvZjogMwotRXhwZWN0ZWQ6IDIKLRtbMDszMm1bPT09PT09PT09PV0gG1ttUnVubmluZyA2
MCB0ZXN0cyBmcm9tIDI1IHRlc3QgY2FzZXMuCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbUdsb2Jh
bCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KLUZvb0Vudmlyb25tZW50OjpTZXRVcCgpIGNhbGxl
ZC4KLUJhckVudmlyb25tZW50OjpTZXRVcCgpIGNhbGxlZC4KLRtbMDszMm1bLS0tLS0tLS0tLV0g
G1ttMSB0ZXN0IGZyb20gQURlYXRoVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21BRGVhdGhU
ZXN0LlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJtWyAgICAgICBPSyBdIBtbbUFEZWF0aFRlc3QuU2hv
dWxkUnVuRmlyc3QKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gQVR5cGVkRGVh
dGhUZXN0LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGludAotG1swOzMybVsgUlVOICAgICAgXSAbW21B
VHlwZWREZWF0aFRlc3QvMC5TaG91bGRSdW5GaXJzdAotG1swOzMybVsgICAgICAgT0sgXSAbW21B
VHlwZWREZWF0aFRlc3QvMC5TaG91bGRSdW5GaXJzdAotG1swOzMybVstLS0tLS0tLS0tXSAbW20x
IHRlc3QgZnJvbSBBVHlwZWREZWF0aFRlc3QvMSwgd2hlcmUgVHlwZVBhcmFtID0gZG91YmxlCi0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbUFUeXBlZERlYXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0Ci0b
WzA7MzJtWyAgICAgICBPSyBdIBtbbUFUeXBlZERlYXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0Ci0b
WzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIE15L0FUeXBlUGFyYW1EZWF0aFRlc3Qv
MCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU15L0FUeXBl
UGFyYW1EZWF0aFRlc3QvMC5TaG91bGRSdW5GaXJzdAotG1swOzMybVsgICAgICAgT0sgXSAbW21N
eS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bLS0tLS0tLS0t
LV0gG1ttMSB0ZXN0IGZyb20gTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8xLCB3aGVyZSBUeXBlUGFy
YW0gPSBkb3VibGUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttTXkvQVR5cGVQYXJhbURlYXRoVGVz
dC8xLlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJtWyAgICAgICBPSyBdIBtbbU15L0FUeXBlUGFyYW1E
ZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAotG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3Rz
IGZyb20gUGFzc2luZ1Rlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttUGFzc2luZ1Rlc3QuUGFz
c2luZ1Rlc3QxCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0
MQotG1swOzMybVsgUlVOICAgICAgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDIKLRtbMDsz
Mm1bICAgICAgIE9LIF0gG1ttUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi0bWzA7MzJtWy0tLS0t
LS0tLS1dIBtbbTMgdGVzdHMgZnJvbSBGYXRhbEZhaWx1cmVUZXN0Ci0bWzA7MzJtWyBSVU4gICAg
ICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0
aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogRmFpbHVyZQotVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGlu
ZQotG1swOzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUlu
TmVzdGVkU3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAx
KQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiB4Ci0gIEFjdHVh
bDogMgotRXhwZWN0ZWQ6IDEKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVz
dC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
RmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLShleHBlY3Rpbmcg
YSBmYWlsdXJlIG9uIGZhbHNlKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZh
bHVlIG9mOiBmYWxzZQotICBBY3R1YWw6IGZhbHNlCi1FeHBlY3RlZDogdHJ1ZQotG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGlu
ZQotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBMb2dnaW5nVGVzdAotG1swOzMy
bVsgUlVOICAgICAgXSAbW21Mb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0
aW9ucwotKGV4cGVjdGluZyAyIGZhaWx1cmVzIG9uICgzKSA+PSAoYVtpXSkpCi1pID09IDAKLWkg
PT0gMQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAoMykgPj0g
KGFbaV0pLCBhY3R1YWw6IDMgdnMgOQotaSA9PSAyCi1pID09IDMKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDYK
LRtbMDszMW1bICBGQUlMRUQgIF0gG1ttTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0Fu
ZEFzc2VydGlvbnMKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttNiB0ZXN0cyBmcm9tIFNDT1BFRF9U
UkFDRVRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5PYmV5c1Nj
b3BlcwotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVy
ZQotRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBh
IHRyYWNlLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotVGhpcyBm
YWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGhhdmUgYSB0cmFjZS4KLUdvb2dsZSBUZXN0
IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEV4cGVjdGVkIHRyYWNlCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0
ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNlLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21T
Q09QRURfVFJBQ0VUZXN0Lk9iZXlzU2NvcGVzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BF
RF9UUkFDRVRlc3QuV29ya3NJbkxvb3AKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMQotRXhwZWN0ZWQ6
IDIKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGkgPSAxCi1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAy
Ci1FeHBlY3RlZDogMQotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogaSA9IDIKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0lu
TG9vcAotG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJy
b3V0aW5lCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWls
dXJlCi1WYWx1ZSBvZjogbgotICBBY3R1YWw6IDEKLUV4cGVjdGVkOiAyCi1Hb29nbGUgVGVzdCB0
cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBuID0gMQotZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLUdv
b2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4gPSAyCi0bWzA7MzFt
WyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJblN1YnJvdXRpbmUKLRtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZU5lc3RlZAotKGV4cGVjdGVk
IHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IG4K
LSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogbiA9IDIKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiAKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZU5lc3RlZAotG1swOzMybVsgUlVO
ICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKLShleHBlY3RlZCB0byBm
YWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotVGhpcyBmYWls
dXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQS4KLUdvb2ds
ZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEEKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5k
IHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEgYW5kIEIuCi1Hb29nbGUgVGVzdCB0cmFjZToK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBCCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQQot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEMuCi1H
b29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBDCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEEKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwg
YW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEsIEIsIGFuZCBELgotR29vZ2xlIFRlc3Qg
dHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRAotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IEIKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBBCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtb
bVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVSZXBlYXRlZAotG1swOzMybVsgUlVOICAgICAgXSAbW21T
Q09QRURfVFJBQ0VUZXN0LldvcmtzQ29uY3VycmVudGx5Ci0oZXhwZWN0aW5nIDYgZmFpbHVyZXMp
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWls
dXJlICMxIChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBCIGFsaXZlKS4KLUdvb2dsZSBUZXN0IHRy
YWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFRyYWNlIEIKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIgKGluIHRocmVhZCBB
LCB0cmFjZSBBICYgQiBib3RoIGFsaXZlKS4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IFRyYWNlIEEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMgKGluIHRocmVhZCBCLCB0cmFjZSBBICYgQiBi
b3RoIGFsaXZlKS4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IFRyYWNlIEIKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVj
dGVkIGZhaWx1cmUgIzQgKGluIHRocmVhZCBCLCBvbmx5IHRyYWNlIEEgYWxpdmUpLgotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjNSAo
aW4gdGhyZWFkIEEsIG9ubHkgdHJhY2UgQSBhbGl2ZSkuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBUcmFjZSBBCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICM2IChpbiB0aHJlYWQgQSwgbm8gdHJh
Y2UgYWxpdmUpLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lldvcmtz
Q29uY3VycmVudGx5Ci0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIE5vbkZhdGFs
RmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21O
b25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0
b3IKLShleHBlY3RpbmcgNSBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWls
dXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0IGZpeHR1cmUgYyd0
b3IuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBm
YWlsdXJlICMyLCBpbiBTZXRVcCgpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUK
LUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgYm9keS4KLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzQsIGlu
IFRlYXJEb3duLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhw
ZWN0ZWQgZmFpbHVyZSAjNSwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLRtbMDszMW1bICBG
QUlMRUQgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1
cmVJbkNvbnN0cnVjdG9yCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEZhdGFs
RmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21G
YXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IK
LShleHBlY3RpbmcgMiBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3Iu
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWls
dXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0
b3IKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gTm9uRmF0YWxGYWlsdXJlSW5T
ZXRVcFRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRl
c3QuRmFpbHVyZUluU2V0VXAKLShleHBlY3RpbmcgNCBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVw
KCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBm
YWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmdW5jdGlvbi4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIFRlYXJEb3duKCkuCi1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJl
ICM0LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21O
b25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotG1swOzMybVstLS0tLS0t
LS0tXSAbW20xIHRlc3QgZnJvbSBGYXRhbEZhaWx1cmVJblNldFVwVGVzdAotG1swOzMybVsgUlVO
ICAgICAgXSAbW21GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotKGV4cGVj
dGluZyAzIGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxl
ZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRlYXJEb3duKCku
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWls
dXJlICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotG1swOzMybVstLS0tLS0t
LS0tXSAbW200IHRlc3RzIGZyb20gTWl4ZWRVcFRlc3RDYXNlVGVzdAotG1swOzMybVsgUlVOICAg
ICAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LkZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28KLRtb
MDszMm1bICAgICAgIE9LIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5GaXJzdFRlc3RGcm9tTmFt
ZXNwYWNlRm9vCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuU2Vj
b25kVGVzdEZyb21OYW1lc3BhY2VGb28KLRtbMDszMm1bICAgICAgIE9LIF0gG1ttTWl4ZWRVcFRl
c3RDYXNlVGVzdC5TZWNvbmRUZXN0RnJvbU5hbWVzcGFjZUZvbwotG1swOzMybVsgUlVOICAgICAg
XSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsCi1ndGVzdC5jYzojOiBGYWls
dXJlCi1GYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhl
IHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcy4gIEhvd2V2ZXIsIGluIHRlc3QgY2FzZSBNaXhlZFVw
VGVzdENhc2VUZXN0LAoteW91IGRlZmluZWQgdGVzdCBGaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9v
IGFuZCB0ZXN0IFRoaXNTaG91bGRGYWlsCi11c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVy
ZSBjbGFzc2VzLiAgVGhpcyBjYW4gaGFwcGVuIGlmCi10aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20g
ZGlmZmVyZW50IG5hbWVzcGFjZXMgb3IgdHJhbnNsYXRpb24KLXVuaXRzIGFuZCBoYXZlIHRoZSBz
YW1lIG5hbWUuICBZb3Ugc2hvdWxkIHByb2JhYmx5IHJlbmFtZSBvbmUKLW9mIHRoZSBjbGFzc2Vz
IHRvIHB1dCB0aGUgdGVzdHMgaW50byBkaWZmZXJlbnQgdGVzdCBjYXNlcy4KLRtbMDszMW1bICBG
QUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbAotG1swOzMybVsg
UlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCi1ndGVz
dC5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2Ug
bXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcy4gIEhvd2V2ZXIsIGluIHRlc3Qg
Y2FzZSBNaXhlZFVwVGVzdENhc2VUZXN0LAoteW91IGRlZmluZWQgdGVzdCBGaXJzdFRlc3RGcm9t
TmFtZXNwYWNlRm9vIGFuZCB0ZXN0IFRoaXNTaG91bGRGYWlsVG9vCi11c2luZyB0d28gZGlmZmVy
ZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAgVGhpcyBjYW4gaGFwcGVuIGlmCi10aGUgdHdvIGNs
YXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMgb3IgdHJhbnNsYXRpb24KLXVuaXRz
IGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZb3Ugc2hvdWxkIHByb2JhYmx5IHJlbmFtZSBvbmUK
LW9mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50byBkaWZmZXJlbnQgdGVzdCBjYXNl
cy4KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxk
RmFpbFRvbwotG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gTWl4ZWRVcFRlc3RD
YXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttTWl4ZWRVcFRl
c3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3Vs
ZEZhaWwKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0
TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLRtbMDszMm1bIFJV
TiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25k
VGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUZhaWxlZAot
QWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZp
eHR1cmUKLWNsYXNzLiAgSG93ZXZlciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVdpdGhT
YW1lVGVzdE5hbWVUZXN0LAoteW91IGRlZmluZWQgdGVzdCBUaGVTZWNvbmRUZXN0V2l0aFRoaXNO
YW1lU2hvdWxkRmFpbCBhbmQgdGVzdCBUaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFp
bAotdXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhh
cHBlbiBpZgotdGhlIHR3byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIG9y
IHRyYW5zbGF0aW9uCi11bml0cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAgWW91IHNob3VsZCBw
cm9iYWJseSByZW5hbWUgb25lCi1vZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8g
ZGlmZmVyZW50IHRlc3QgY2FzZXMuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0
Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRG
YWlsCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBURVNUX0ZfYmVmb3JlX1RF
U1RfaW5fc2FtZV90ZXN0X2Nhc2UKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttVEVTVF9GX2JlZm9y
ZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRgotG1swOzMybVsgICAg
ICAgT0sgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVz
aW5nVEVTVF9GCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9z
YW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxkRmFpbAotZ3Rlc3QuY2M6Izog
RmFpbHVyZQotRmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNl
IHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3MsIHNvIG1peGluZyBURVNUX0YgYW5kIFRFU1Qg
aW4gdGhlIHNhbWUgdGVzdCBjYXNlIGlzCi1pbGxlZ2FsLiAgSW4gdGVzdCBjYXNlIFRFU1RfRl9i
ZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSwKLXRlc3QgRGVmaW5lZFVzaW5nVEVTVF9GIGlz
IGRlZmluZWQgdXNpbmcgVEVTVF9GIGJ1dAotdGVzdCBEZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxk
RmFpbCBpcyBkZWZpbmVkIHVzaW5nIFRFU1QuICBZb3UgcHJvYmFibHkKLXdhbnQgdG8gY2hhbmdl
IHRoZSBURVNUIHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRvIGFub3RoZXIgdGVzdAotY2FzZS4KLRtb
MDszMW1bICBGQUlMRUQgIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNl
LkRlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIg
dGVzdHMgZnJvbSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UKLRtbMDszMm1b
IFJVTiAgICAgIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmlu
ZWRVc2luZ1RFU1QKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9GX2lu
X3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
VEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFu
ZFNob3VsZEZhaWwKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotQWxsIHRlc3RzIGluIHRo
ZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLCBz
byBtaXhpbmcgVEVTVF9GIGFuZCBURVNUIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBpcwotaWxsZWdh
bC4gIEluIHRlc3QgY2FzZSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UsCi10
ZXN0IERlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwgaXMgZGVmaW5lZCB1c2luZyBURVNU
X0YgYnV0Ci10ZXN0IERlZmluZWRVc2luZ1RFU1QgaXMgZGVmaW5lZCB1c2luZyBURVNULiAgWW91
IHByb2JhYmx5Ci13YW50IHRvIGNoYW5nZSB0aGUgVEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0
byBhbm90aGVyIHRlc3QKLWNhc2UuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVRFU1RfYmVmb3Jl
X1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWls
Ci0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTggdGVzdHMgZnJvbSBFeHBlY3ROb25mYXRhbEZhaWx1
cmVUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qu
Q2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVj
dE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCi0bWzA7MzJt
WyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9j
YWxWYXJpYWJsZXMKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJl
VGVzdC5DYW5SZWZlcmVuY2VMb2NhbFZhcmlhYmxlcwotG1swOzMybVsgUlVOICAgICAgXSAbW21F
eHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZh
aWx1cmUKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5T
dWNjZWVkc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi0bWzA7MzJtWyBSVU4gICAgICBd
IBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxG
YWlsdXJlCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVj
dGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNO
b05vbmZhdGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvTm9uZmF0YWxGYWlsdXJlcwotKGV4cGVjdGlu
ZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0YWwg
ZmFpbHVyZQotICBBY3R1YWw6IDIgZmFpbHVyZXMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBO
b24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMS4K
LQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1F
eHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSAyLgotCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1
cmVzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFp
bHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVz
dC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0
ZWQgZmF0YWwgZmFpbHVyZS4KLQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRh
bEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJV
TiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRS
ZXR1cm5zCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVj
dGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVu
dFJldHVybnMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVz
dC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3Qu
Y2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAw
IGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRl
c3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTggdGVz
dHMgZnJvbSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4
cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCi0bWzA7MzJt
WyAgICAgICBPSyBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFs
VmFyaWFibGVzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qu
Q2FuUmVmZXJlbmNlTG9jYWxTdGF0aWNWYXJpYWJsZXMKLRtbMDszMm1bICAgICAgIE9LIF0gG1tt
RXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFN0YXRpY1ZhcmlhYmxlcwot
G1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hl
blRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi0bWzA7MzJt
WyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05v
RmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUK
LUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi0bWzA7MzFt
WyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05v
RmF0YWxGYWlsdXJlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRl
c3QuRmFpbHNXaGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzCi0oZXhwZWN0aW5nIGEgZmFpbHVy
ZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0
dWFsOiAyIGZhaWx1cmVzCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToK
LUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLRtb
MDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVy
ZUFyZVR3b0ZhdGFsRmFpbHVyZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5n
IGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1
cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJl
OgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVOb25mYXRh
bEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5G
YWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNj
OiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1
cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNX
aGVuU3RhdGVtZW50UmV0dXJucwotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotKGV4cGVjdGluZyBhIGZhaWx1cmUp
Ci1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVh
bDogMCBmYWlsdXJlcwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRl
c3RzIGZyb20gVHlwZWRUZXN0LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGludAotG1swOzMybVsgUlVO
ICAgICAgXSAbW21UeXBlZFRlc3QvMC5TdWNjZXNzCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbVR5
cGVkVGVzdC8wLlN1Y2Nlc3MKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttVHlwZWRUZXN0LzAuRmFp
bHVyZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiBUeXBlUGFy
YW0oKQotICBBY3R1YWw6IDAKLUV4cGVjdGVkOiAxCi1FeHBlY3RlZCBmYWlsdXJlCi0bWzA7MzFt
WyAgRkFJTEVEICBdIBtbbVR5cGVkVGVzdC8wLkZhaWx1cmUKLRtbMDszMm1bLS0tLS0tLS0tLV0g
G1ttMiB0ZXN0cyBmcm9tIFVuc2lnbmVkL1R5cGVkVGVzdFAvMCwgd2hlcmUgVHlwZVBhcmFtID0g
dW5zaWduZWQgY2hhcgotG1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQ
LzAuU3VjY2VzcwotG1swOzMybVsgICAgICAgT0sgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAu
U3VjY2VzcwotG1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFp
bHVyZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiBUeXBlUGFy
YW0oKQotICBBY3R1YWw6IFwwCi1FeHBlY3RlZDogMVUKLVdoaWNoIGlzOiAxCi1FeHBlY3RlZCBm
YWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5GYWls
dXJlCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBVbnNpZ25lZC9UeXBlZFRl
c3RQLzEsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAotG1swOzMybVsgUlVOICAgICAg
XSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzEuU3VjY2VzcwotG1swOzMybVsgICAgICAgT0sgXSAb
W21VbnNpZ25lZC9UeXBlZFRlc3RQLzEuU3VjY2VzcwotG1swOzMybVsgUlVOICAgICAgXSAbW21V
bnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZh
aWx1cmUKLVZhbHVlIG9mOiBUeXBlUGFyYW0oKQotICBBY3R1YWw6IDAKLUV4cGVjdGVkOiAxVQot
V2hpY2ggaXM6IDEKLUV4cGVjdGVkIGZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5z
aWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttNCB0ZXN0
cyBmcm9tIEV4cGVjdEZhaWx1cmVUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZh
aWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVz
dC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBTdWNjZXNzOgotU3VjY2VlZGVkCi0KLShleHBlY3Rpbmcg
MSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVy
ZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6
Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0aW5nIDEgZmFp
bHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUgY29u
dGFpbmluZyAiU29tZSBvdGhlciBmYXRhbCBmYWlsdXJlIGV4cGVjdGVkLiIKLSAgQWN0dWFsOgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVk
IGZhdGFsIGZhaWx1cmUuCi0KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRl
c3QuRXhwZWN0RmF0YWxGYWlsdXJlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1
cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVz
dC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2NlZWRlZAotCi0oZXhwZWN0
aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRh
bCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWls
dXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0aW5nIDEgZmFp
bHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJl
IGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1cmUuIgotICBBY3R1YWw6Ci1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVj
dGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZh
aWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAgICAgXSAbW21F
eHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLShleHBlY3Rp
bmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFp
bHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2Nl
ZWRlZAotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVj
dGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4K
LQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDog
MSBmYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBl
Y3RlZC4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJl
OgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJTEVEICBd
IBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotG1sw
OzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1
cmVPbkFsbFRocmVhZHMKLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVy
ZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1TdWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUp
Ci1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBB
Y3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAot
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5j
YzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJT
b21lIG90aGVyIG5vbi1mYXRhbCBmYWlsdXJlLiIKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwg
ZmFpbHVyZS4KLQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBl
Y3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0
ZXN0cyBmcm9tIEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QKLRtbMDszMm1bIFJVTiAgICAg
IF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLShl
eHBlY3RpbmcgMiBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1G
YWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBl
Y3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdEZhdGFsRmFpbHVy
ZQotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4
cGVjdE5vbkZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyAyIGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUu
Ci1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBB
Y3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdp
dGhUaHJlYWRzVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLRtbMDszMm1bLS0tLS0tLS0tLV0g
G1ttMSB0ZXN0IGZyb20gU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0Ci0bWzA7
MzJtWyBSVU4gICAgICBdIBtbbVNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdC5J
bnRlcmNlcHRPbmx5Q3VycmVudFRocmVhZAotKGV4cGVjdGluZyAyIGZhaWx1cmVzKQotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVy
ZS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIG5v
bi1mYXRhbCBmYWlsdXJlLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TY29wZWRGYWtlVGVzdFBh
cnRSZXN1bHRSZXBvcnRlclRlc3QuSW50ZXJjZXB0T25seUN1cnJlbnRUaHJlYWQKLRtbMDszMm1b
LS0tLS0tLS0tLV0gG1ttR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCi1CYXJFbnZp
cm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFp
bHVyZQotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLUZvb0Vudmlyb25tZW50
OjpUZWFyRG93bigpIGNhbGxlZC4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1G
YWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0bWzA7MzJtWz09PT09PT09PT1dIBtbbTYw
IHRlc3RzIGZyb20gMjUgdGVzdCBjYXNlcyByYW4uCi0bWzA7MzJtWyAgUEFTU0VEICBdIBtbbTIx
IHRlc3RzLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW20zOSB0ZXN0cywgbGlzdGVkIGJlbG93Ogot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vi
cm91dGluZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFp
bHVyZUluTmVzdGVkU3Vicm91dGluZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1
cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21Mb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lk9iZXlzU2NvcGVzCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJbkxvb3AKLRtbMDszMW1bICBGQUlMRUQg
IF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGluZQotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlTmVzdGVkCi0bWzA7MzFtWyAgRkFJTEVEICBd
IBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVSZXBlYXRlZAotG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21TQ09QRURfVFJBQ0VUZXN0LldvcmtzQ29uY3VycmVudGx5Ci0bWzA7MzFtWyAgRkFJTEVEICBd
IBtbbU5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25z
dHJ1Y3RvcgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25z
dHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKLRtbMDszMW1bICBGQUlMRUQgIF0gG1tt
Tm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKLRtbMDszMW1bICBGQUlM
RUQgIF0gG1ttRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbAotG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCi0b
WzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0
LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCi0bWzA7MzFtWyAgRkFJTEVEICBd
IBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNU
QW5kU2hvdWxkRmFpbAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21URVNUX2JlZm9yZV9URVNUX0Zf
aW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbAotG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJl
SXNOb05vbmZhdGFsRmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRh
bEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvTm9uZmF0YWxGYWlsdXJlcwotG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJl
SXNPbmVGYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxG
YWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi0bWzA7MzFtWyAgRkFJTEVEICBd
IBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi0b
WzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhl
cmVJc05vRmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFp
bHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZh
dGFsRmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0
LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLRtbMDszMW1bICBGQUlM
RUQgIF0gG1ttVHlwZWRUZXN0LzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci0bWzA7
MzFtWyAgRkFJTEVEICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5GYWlsdXJlLCB3aGVyZSBU
eXBlUGFyYW0gPSB1bnNpZ25lZCBjaGFyCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVVuc2lnbmVk
L1R5cGVkVGVzdFAvMS5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKLRtb
MDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJl
Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFs
RmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RG
YXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFp
bHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0RmF0YWxGYWlsdXJl
Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhw
ZWN0Tm9uRmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNjb3BlZEZha2VUZXN0
UGFydFJlc3VsdFJlcG9ydGVyVGVzdC5JbnRlcmNlcHRPbmx5Q3VycmVudFRocmVhZAotCi0zOSBG
QUlMRUQgVEVTVFMKLRtbMDszM20gIFlPVSBIQVZFIDEgRElTQUJMRUQgVEVTVAotCi0bW21Ob3Rl
OiBHb29nbGUgVGVzdCBmaWx0ZXIgPSBGYXRhbEZhaWx1cmVUZXN0Lio6TG9nZ2luZ1Rlc3QuKgot
Wz09PT09PT09PT1dIFJ1bm5pbmcgNCB0ZXN0cyBmcm9tIDIgdGVzdCBjYXNlcy4KLVstLS0tLS0t
LS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCi1bLS0tLS0tLS0tLV0gMyB0ZXN0
cyBmcm9tIEZhdGFsRmFpbHVyZVRlc3QKLVsgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0LkZh
dGFsRmFpbHVyZUluU3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3Vs
ZCBiZSAxKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiB4Ci0g
IEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZh
dGFsRmFpbHVyZUluU3Vicm91dGluZSAoPyBtcykKLVsgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVU
ZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUg
dGhhdCB4IHNob3VsZCBiZSAxKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZh
bHVlIG9mOiB4Ci0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLVsgIEZBSUxFRCAgXSBGYXRhbEZh
aWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZSAoPyBtcykKLVsgUlVOICAg
ICAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotKGV4cGVj
dGluZyBhIGZhaWx1cmUgb24gZmFsc2UpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVy
ZQotVmFsdWUgb2Y6IGZhbHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4cGVjdGVkOiB0cnVlCi1bICBG
QUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUgKD8g
bXMpCi1bLS0tLS0tLS0tLV0gMyB0ZXN0cyBmcm9tIEZhdGFsRmFpbHVyZVRlc3QgKD8gbXMgdG90
YWwpCi0KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBMb2dnaW5nVGVzdAotWyBSVU4gICAgICBd
IExvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCi0oZXhwZWN0aW5n
IDIgZmFpbHVyZXMgb24gKDMpID49IChhW2ldKSkKLWkgPT0gMAotaSA9PSAxCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDog
MyB2cyA5Ci1pID09IDIKLWkgPT0gMwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUK
LUV4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgNgotWyAgRkFJTEVEICBdIExv
Z2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zICg/IG1zKQotWy0tLS0t
LS0tLS1dIDEgdGVzdCBmcm9tIExvZ2dpbmdUZXN0ICg/IG1zIHRvdGFsKQotCi1bLS0tLS0tLS0t
LV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCi1bPT09PT09PT09PV0gNCB0ZXN0
cyBmcm9tIDIgdGVzdCBjYXNlcyByYW4uICg/IG1zIHRvdGFsKQotWyAgUEFTU0VEICBdIDAgdGVz
dHMuCi1bICBGQUlMRUQgIF0gNCB0ZXN0cywgbGlzdGVkIGJlbG93OgotWyAgRkFJTEVEICBdIEZh
dGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gRmF0
YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKLVsgIEZBSUxFRCAg
XSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotWyAgRkFJTEVE
ICBdIExvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCi0KLSA0IEZB
SUxFRCBURVNUUwotICBZT1UgSEFWRSAxIERJU0FCTEVEIFRFU1QKLQotTm90ZTogR29vZ2xlIFRl
c3QgZmlsdGVyID0gKkRJU0FCTEVEXyoKLVs9PT09PT09PT09XSBSdW5uaW5nIDEgdGVzdCBmcm9t
IDEgdGVzdCBjYXNlLgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11
cC4KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBEaXNhYmxlZFRlc3RzV2FybmluZ1Rlc3QKLVsg
UlVOICAgICAgXSBEaXNhYmxlZFRlc3RzV2FybmluZ1Rlc3QuRElTQUJMRURfQWxzb1J1bkRpc2Fi
bGVkVGVzdHNGbGFnU3VwcHJlc3Nlc1dhcm5pbmcKLVsgICAgICAgT0sgXSBEaXNhYmxlZFRlc3Rz
V2FybmluZ1Rlc3QuRElTQUJMRURfQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnU3VwcHJlc3Nlc1dh
cm5pbmcKLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KLVs9
PT09PT09PT09XSAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZSByYW4uCi1bICBQQVNTRUQgIF0gMSB0
ZXN0LgotTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gUGFzc2luZ1Rlc3QuKgotTm90ZTogVGhp
cyBpcyB0ZXN0IHNoYXJkIDEgb2YgMi4KLVs9PT09PT09PT09XSBSdW5uaW5nIDEgdGVzdCBmcm9t
IDEgdGVzdCBjYXNlLgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11
cC4KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBQYXNzaW5nVGVzdAotWyBSVU4gICAgICBdIFBh
c3NpbmdUZXN0LlBhc3NpbmdUZXN0MgotWyAgICAgICBPSyBdIFBhc3NpbmdUZXN0LlBhc3NpbmdU
ZXN0MgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgotWz09
PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlIHJhbi4KLVsgIFBBU1NFRCAgXSAxIHRl
c3QuCi0KLSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNUCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX3dpbi50eHQgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl93aW4u
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTNjM2FhZmMzMWY1ZjEwMDVjNzc0
MjgzZTAwYmRiMDlkZTgxZjY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
Z29sZGVuX3dpbi50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2MDUgKzAsMCBAQAotVGhlIG5vbi10
ZXN0IHBhcnQgb2YgdGhlIGNvZGUgaXMgZXhwZWN0ZWQgdG8gaGF2ZSAyIGZhaWx1cmVzLgotCi1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBmYWxzZQotICBBY3R1YWw6
IGZhbHNlCi1FeHBlY3RlZDogdHJ1ZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBW
YWx1ZSBvZjogMwotRXhwZWN0ZWQ6IDIKLVs9PT09PT09PT09XSBSdW5uaW5nIDYxIHRlc3RzIGZy
b20gMjcgdGVzdCBjYXNlcy4KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBz
ZXQtdXAuCi1Gb29FbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuCi1CYXJFbnZpcm9ubWVudDo6
U2V0VXAoKSBjYWxsZWQuCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gQURlYXRoVGVzdAotWyBS
VU4gICAgICBdIEFEZWF0aFRlc3QuU2hvdWxkUnVuRmlyc3QKLVsgICAgICAgT0sgXSBBRGVhdGhU
ZXN0LlNob3VsZFJ1bkZpcnN0Ci1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gQVR5cGVkRGVhdGhU
ZXN0LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGludAotWyBSVU4gICAgICBdIEFUeXBlZERlYXRoVGVz
dC8wLlNob3VsZFJ1bkZpcnN0Ci1bICAgICAgIE9LIF0gQVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxk
UnVuRmlyc3QKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBBVHlwZWREZWF0aFRlc3QvMSwgd2hl
cmUgVHlwZVBhcmFtID0gZG91YmxlCi1bIFJVTiAgICAgIF0gQVR5cGVkRGVhdGhUZXN0LzEuU2hv
dWxkUnVuRmlyc3QKLVsgICAgICAgT0sgXSBBVHlwZWREZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJz
dAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMCwgd2hl
cmUgVHlwZVBhcmFtID0gaW50Ci1bIFJVTiAgICAgIF0gTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8w
LlNob3VsZFJ1bkZpcnN0Ci1bICAgICAgIE9LIF0gTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8wLlNo
b3VsZFJ1bkZpcnN0Ci1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTXkvQVR5cGVQYXJhbURlYXRo
VGVzdC8xLCB3aGVyZSBUeXBlUGFyYW0gPSBkb3VibGUKLVsgUlVOICAgICAgXSBNeS9BVHlwZVBh
cmFtRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKLVsgICAgICAgT0sgXSBNeS9BVHlwZVBhcmFt
RGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKLVstLS0tLS0tLS0tXSAyIHRlc3RzIGZyb20gUGFz
c2luZ1Rlc3QKLVsgUlVOICAgICAgXSBQYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDEKLVsgICAgICAg
T0sgXSBQYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDEKLVsgUlVOICAgICAgXSBQYXNzaW5nVGVzdC5Q
YXNzaW5nVGVzdDIKLVsgICAgICAgT0sgXSBQYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDIKLVstLS0t
LS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdAotWyBSVU4gICAgICBdIEZhdGFs
RmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVy
ZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZh
bHVlIG9mOiB4Ci0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLVsgIEZBSUxFRCAgXSBGYXRhbEZh
aWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotWyBSVU4gICAgICBdIEZhdGFsRmFp
bHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFp
bHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6
IFZhbHVlIG9mOiB4Ci0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLVsgIEZBSUxFRCAgXSBGYXRh
bEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQotWyBSVU4gICAgICBd
IEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5n
IGEgZmFpbHVyZSBvbiBmYWxzZSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFs
dWUgb2Y6IGZhbHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4cGVjdGVkOiB0cnVlCi1bICBGQUlMRUQg
IF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLVstLS0tLS0t
LS0tXSAxIHRlc3QgZnJvbSBMb2dnaW5nVGVzdAotWyBSVU4gICAgICBdIExvZ2dpbmdUZXN0Lklu
dGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24g
KDMpID49IChhW2ldKSkKLWkgPT0gMAotaSA9PSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
ZXJyb3I6IEV4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgOQotaSA9PSAyCi1p
ID09IDMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6ICgzKSA+PSAo
YVtpXSksIGFjdHVhbDogMyB2cyA2Ci1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2
aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLVstLS0tLS0tLS0tXSA1IHRlc3RzIGZyb20gU0NPUEVE
X1RSQUNFVGVzdAotWyBSVU4gICAgICBdIFNDT1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMKLShl
eHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQK
LVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuCi1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4
cGVjdGVkLCBhbmQgc2hvdWxkIGhhdmUgYSB0cmFjZS4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEV4cGVjdGVkIHRyYWNlCi1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogZXJyb3I6IEZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxk
bid0IGhhdmUgYSB0cmFjZS4KLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0Lk9iZXlzU2Nv
cGVzCi1bIFJVTiAgICAgIF0gU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAotKGV4cGVjdGVk
IHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBuCi0g
IEFjdHVhbDogMQotRXhwZWN0ZWQ6IDIKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IGkgPSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVl
IG9mOiBuCi0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGkgPSAyCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVz
dC5Xb3Jrc0luTG9vcAotWyBSVU4gICAgICBdIFNDT1BFRF9UUkFDRVRlc3QuV29ya3NJblN1YnJv
dXRpbmUKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9y
OiBWYWx1ZSBvZjogbgotICBBY3R1YWw6IDEKLUV4cGVjdGVkOiAyCi1Hb29nbGUgVGVzdCB0cmFj
ZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBuID0gMQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IGVycm9yOiBWYWx1ZSBvZjogbgotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1Hb29nbGUg
VGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBuID0gMgotWyAgRkFJTEVEICBd
IFNDT1BFRF9UUkFDRVRlc3QuV29ya3NJblN1YnJvdXRpbmUKLVsgUlVOICAgICAgXSBTQ09QRURf
VFJBQ0VUZXN0LkNhbkJlTmVzdGVkCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQot
R29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogbiA9IDIKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiAKLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0LkNhbkJl
TmVzdGVkCi1bIFJVTiAgICAgIF0gU0NPUEVEX1RSQUNFVGVzdC5DYW5CZVJlcGVhdGVkCi0oZXhw
ZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1U
aGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBB
LgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQQotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEgYW5kIEIuCi1Hb29nbGUgVGVzdCB0
cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBCCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogQQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLVRoaXMgZmFpbHVy
ZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEsIEIsIGFuZCBD
LgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQwotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEIKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBBCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVk
LCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEQuCi1Hb29nbGUgVGVz
dCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBECi1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEEKLVsgIEZBSUxFRCAgXSBTQ09QRURf
VFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBOb25GYXRh
bEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QKLVsgUlVOICAgICAgXSBOb25GYXRhbEZh
aWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKLShleHBl
Y3RpbmcgNSBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVk
Ci1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGMndG9yLgotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGlu
IFNldFVwKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0
ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgYm9keS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICM0LCBpbiBUZWFyRG93bi4KLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICM1LCBp
biB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIE5vbkZhdGFsRmFpbHVyZUlu
Rml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotWy0tLS0tLS0tLS1d
IDEgdGVzdCBmcm9tIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdAotWyBSVU4g
ICAgICBdIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25z
dHJ1Y3RvcgotKGV4cGVjdGluZyAyIGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0IGZpeHR1cmUg
Yyd0b3IuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQg
ZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAgXSBGYXRh
bEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKLVst
LS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVzdAotWyBSVU4g
ICAgICBdIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi0oZXhwZWN0
aW5nIDQgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAot
RXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmdW5jdGlv
bi4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWls
dXJlICMzLCBpbiBUZWFyRG93bigpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBG
YWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi1b
ICBGQUlMRUQgIF0gTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKLVst
LS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBGYXRhbEZhaWx1cmVJblNldFVwVGVzdAotWyBSVU4gICAg
ICBdIEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi0oZXhwZWN0aW5nIDMg
ZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0
ZWQgZmFpbHVyZSAjMSwgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJv
cjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLgotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRo
ZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlSW5TZXRVcFRl
c3QuRmFpbHVyZUluU2V0VXAKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBFeGNlcHRpb25JbkZp
eHR1cmVDdG9yVGVzdAotWyBSVU4gICAgICBdIEV4Y2VwdGlvbkluRml4dHVyZUN0b3JUZXN0LkV4
Y2VwdGlvbkluRml4dHVyZUN0b3IKLShleHBlY3RpbmcgYSBmYWlsdXJlIG9uIHRocm93biBleGNl
cHRpb24gaW4gdGhlIHRlc3QgZml4dHVyZSdzIGNvbnN0cnVjdG9yKQotdW5rbm93biBmaWxlOiBl
cnJvcjogRXhjZXB0aW9uIHRocm93biB3aXRoIGNvZGUgMHhjMDAwMDAwNSBpbiB0aGUgdGVzdCBm
aXh0dXJlJ3MgY29uc3RydWN0b3IuCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRXhjZXB0aW9u
SW5TZXRVcFRlc3QKLVsgUlVOICAgICAgXSBFeGNlcHRpb25JblNldFVwVGVzdC5FeGNlcHRpb25J
blNldFVwCi0oZXhwZWN0aW5nIDMgZmFpbHVyZXMpCi11bmtub3duIGZpbGU6IGVycm9yOiBFeGNl
cHRpb24gdGhyb3duIHdpdGggY29kZSAweGMwMDAwMDA1IGluIFNldFVwKCkuCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVh
ckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3Rl
ZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIEV4
Y2VwdGlvbkluU2V0VXBUZXN0LkV4Y2VwdGlvbkluU2V0VXAKLVstLS0tLS0tLS0tXSAyIHRlc3Rz
IGZyb20gRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0Ci1bIFJVTiAgICAgIF0gRXhjZXB0aW9u
SW5UZXN0RnVuY3Rpb25UZXN0LlNFSAotKGV4cGVjdGluZyAzIGZhaWx1cmVzKQotdW5rbm93biBm
aWxlOiBlcnJvcjogRXhjZXB0aW9uIHRocm93biB3aXRoIGNvZGUgMHhjMDAwMDAwNSBpbiB0aGUg
dGVzdCBib2R5LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVj
dGVkIGZhaWx1cmUgIzIsIGluIFRlYXJEb3duKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
ZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBk
J3Rvci4KLVsgIEZBSUxFRCAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QuU0VICi1bIFJV
TiAgICAgIF0gRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0LkNwcEV4Y2VwdGlvbgotdW5rbm93
biBmaWxlOiBlcnJvcjogRXhjZXB0aW9uIHRocm93biB3aXRoIGNvZGUgMHhlMDZkNzM2MyBpbiB0
aGUgdGVzdCBib2R5LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4
cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRlYXJEb3duKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVy
ZSBkJ3Rvci4KLVsgIEZBSUxFRCAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QuQ3BwRXhj
ZXB0aW9uCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRXhjZXB0aW9uSW5UZWFyRG93blRlc3QK
LVsgUlVOICAgICAgXSBFeGNlcHRpb25JblRlYXJEb3duVGVzdC5FeGNlcHRpb25JblRlYXJEb3du
Ci0oZXhwZWN0aW5nIDIgZmFpbHVyZXMpCi11bmtub3duIGZpbGU6IGVycm9yOiBFeGNlcHRpb24g
dGhyb3duIHdpdGggY29kZSAweGUwNmQ3MzYzIGluIFRlYXJEb3duKCkuCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gdGhlIHRl
c3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAgXSBFeGNlcHRpb25JblRlYXJEb3duVGVzdC5F
eGNlcHRpb25JblRlYXJEb3duCi1bLS0tLS0tLS0tLV0gNCB0ZXN0cyBmcm9tIE1peGVkVXBUZXN0
Q2FzZVRlc3QKLVsgUlVOICAgICAgXSBNaXhlZFVwVGVzdENhc2VUZXN0LkZpcnN0VGVzdEZyb21O
YW1lc3BhY2VGb28KLVsgICAgICAgT0sgXSBNaXhlZFVwVGVzdENhc2VUZXN0LkZpcnN0VGVzdEZy
b21OYW1lc3BhY2VGb28KLVsgUlVOICAgICAgXSBNaXhlZFVwVGVzdENhc2VUZXN0LlNlY29uZFRl
c3RGcm9tTmFtZXNwYWNlRm9vCi1bICAgICAgIE9LIF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5TZWNv
bmRUZXN0RnJvbU5hbWVzcGFjZUZvbwotWyBSVU4gICAgICBdIE1peGVkVXBUZXN0Q2FzZVRlc3Qu
VGhpc1Nob3VsZEZhaWwKLWd0ZXN0LmNjOiM6IGVycm9yOiBGYWlsZWQKLUFsbCB0ZXN0cyBpbiB0
aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcy4g
IEhvd2V2ZXIsIGluIHRlc3QgY2FzZSBNaXhlZFVwVGVzdENhc2VUZXN0LAoteW91IGRlZmluZWQg
dGVzdCBGaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vIGFuZCB0ZXN0IFRoaXNTaG91bGRGYWlsCi11
c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAgVGhpcyBjYW4gaGFwcGVu
IGlmCi10aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMgb3IgdHJh
bnNsYXRpb24KLXVuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZb3Ugc2hvdWxkIHByb2Jh
Ymx5IHJlbmFtZSBvbmUKLW9mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50byBkaWZm
ZXJlbnQgdGVzdCBjYXNlcy4KLVsgIEZBSUxFRCAgXSBNaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNT
aG91bGRGYWlsCi1bIFJVTiAgICAgIF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFp
bFRvbwotZ3Rlc3QuY2M6IzogZXJyb3I6IEZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRl
c3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAgSG93ZXZlciwg
aW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0IEZpcnN0
VGVzdEZyb21OYW1lc3BhY2VGb28gYW5kIHRlc3QgVGhpc1Nob3VsZEZhaWxUb28KLXVzaW5nIHR3
byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKLXRo
ZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlv
bgotdW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVu
YW1lIG9uZQotb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0
ZXN0IGNhc2VzLgotWyAgRkFJTEVEICBdIE1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZh
aWxUb28KLVstLS0tLS0tLS0tXSAyIHRlc3RzIGZyb20gTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVU
ZXN0TmFtZVRlc3QKLVsgUlVOICAgICAgXSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1l
VGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotWyAgICAgICBPSyBdIE1p
eGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05h
bWVTaG91bGRGYWlsCi1bIFJVTiAgICAgIF0gTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFt
ZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLWd0ZXN0LmNjOiM6IGVy
cm9yOiBGYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhl
IHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcy4gIEhvd2V2ZXIsIGluIHRlc3QgY2FzZSBNaXhlZFVw
VGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdCwKLXlvdSBkZWZpbmVkIHRlc3QgVGhlU2Vjb25k
VGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwgYW5kIHRlc3QgVGhlU2Vjb25kVGVzdFdpdGhUaGlz
TmFtZVNob3VsZEZhaWwKLXVzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMu
ICBUaGlzIGNhbiBoYXBwZW4gaWYKLXRoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQg
bmFtZXNwYWNlcyBvciB0cmFuc2xhdGlvbgotdW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4g
IFlvdSBzaG91bGQgcHJvYmFibHkgcmVuYW1lIG9uZQotb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRo
ZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0ZXN0IGNhc2VzLgotWyAgRkFJTEVEICBdIE1peGVkVXBU
ZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91
bGRGYWlsCi1bLS0tLS0tLS0tLV0gMiB0ZXN0cyBmcm9tIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9z
YW1lX3Rlc3RfY2FzZQotWyBSVU4gICAgICBdIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rl
c3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0YKLVsgICAgICAgT0sgXSBURVNUX0ZfYmVmb3JlX1RF
U1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GCi1bIFJVTiAgICAgIF0gVEVT
VF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RBbmRTaG91
bGRGYWlsCi1ndGVzdC5jYzojOiBlcnJvcjogRmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUg
dGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3MsIHNvIG1peGlu
ZyBURVNUX0YgYW5kIFRFU1QgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIGlzCi1pbGxlZ2FsLiAgSW4g
dGVzdCBjYXNlIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSwKLXRlc3QgRGVm
aW5lZFVzaW5nVEVTVF9GIGlzIGRlZmluZWQgdXNpbmcgVEVTVF9GIGJ1dAotdGVzdCBEZWZpbmVk
VXNpbmdURVNUQW5kU2hvdWxkRmFpbCBpcyBkZWZpbmVkIHVzaW5nIFRFU1QuICBZb3UgcHJvYmFi
bHkKLXdhbnQgdG8gY2hhbmdlIHRoZSBURVNUIHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRvIGFub3Ro
ZXIgdGVzdAotY2FzZS4KLVsgIEZBSUxFRCAgXSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90
ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwKLVstLS0tLS0tLS0tXSAyIHRl
c3RzIGZyb20gVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlCi1bIFJVTiAgICAg
IF0gVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1QK
LVsgICAgICAgT0sgXSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5l
ZFVzaW5nVEVTVAotWyBSVU4gICAgICBdIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3Rf
Y2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsCi1ndGVzdC5jYzojOiBlcnJvcjog
RmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1l
IHRlc3QgZml4dHVyZQotY2xhc3MsIHNvIG1peGluZyBURVNUX0YgYW5kIFRFU1QgaW4gdGhlIHNh
bWUgdGVzdCBjYXNlIGlzCi1pbGxlZ2FsLiAgSW4gdGVzdCBjYXNlIFRFU1RfYmVmb3JlX1RFU1Rf
Rl9pbl9zYW1lX3Rlc3RfY2FzZSwKLXRlc3QgRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFp
bCBpcyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKLXRlc3QgRGVmaW5lZFVzaW5nVEVTVCBpcyBk
ZWZpbmVkIHVzaW5nIFRFU1QuICBZb3UgcHJvYmFibHkKLXdhbnQgdG8gY2hhbmdlIHRoZSBURVNU
IHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRvIGFub3RoZXIgdGVzdAotY2FzZS4KLVsgIEZBSUxFRCAg
XSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9G
QW5kU2hvdWxkRmFpbAotWy0tLS0tLS0tLS1dIDggdGVzdHMgZnJvbSBFeHBlY3ROb25mYXRhbEZh
aWx1cmVUZXN0Ci1bIFJVTiAgICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZl
cmVuY2VHbG9iYWxWYXJpYWJsZXMKLVsgICAgICAgT0sgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVU
ZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotWyBSVU4gICAgICBdIEV4cGVjdE5vbmZh
dGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxWYXJpYWJsZXMKLVsgICAgICAgT0sgXSBF
eHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVzCi1bIFJV
TiAgICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1doZW5UaGVyZUlzT25l
Tm9uZmF0YWxGYWlsdXJlCi1bICAgICAgIE9LIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5T
dWNjZWVkc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi1bIFJVTiAgICAgIF0gRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKLShl
eHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5vbi1m
YXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotWyAgRkFJTEVEICBdIEV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJlCi1bIFJV
TiAgICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b05v
bmZhdGFsRmFpbHVyZXMKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6
IEV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMiBmYWlsdXJlcwotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3Rl
ZCBub24tZmF0YWwgZmFpbHVyZSAxLgotCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZh
dGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDIuCi0KLVsg
IEZBSUxFRCAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdv
Tm9uZmF0YWxGYWlsdXJlcwotWyBSVU4gICAgICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qu
RmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1n
dGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFs
OgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVj
dGVkIGZhdGFsIGZhaWx1cmUuCi0KLVsgIEZBSUxFRCAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVU
ZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLVsgUlVOICAgICAgXSBFeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLShleHBlY3Rpbmcg
YSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWls
dXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotWyAgRkFJTEVEICBdIEV4cGVjdE5vbmZhdGFsRmFp
bHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotWyBSVU4gICAgICBdIEV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi0oZXhwZWN0aW5nIGEg
ZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVy
ZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBFeHBlY3ROb25mYXRhbEZhaWx1
cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotWy0tLS0tLS0tLS1dIDggdGVzdHMgZnJv
bSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0Ci1bIFJVTiAgICAgIF0gRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLVsgICAgICAgT0sgXSBFeHBlY3RGYXRh
bEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotWyBSVU4gICAgICBdIEV4
cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxTdGF0aWNWYXJpYWJsZXMKLVsg
ICAgICAgT0sgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsU3RhdGlj
VmFyaWFibGVzCi1bIFJVTiAgICAgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1do
ZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi1bICAgICAgIE9LIF0gRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdC5TdWNjZWVkc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi1bIFJVTiAgICAgIF0gRXhw
ZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKLShleHBl
Y3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZh
aWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxGYWls
dXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKLVsgUlVOICAgICAgXSBFeHBl
Y3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcwotKGV4
cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwg
ZmFpbHVyZQotICBBY3R1YWw6IDIgZmFpbHVyZXMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBG
YXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwg
ZmFpbHVyZS4KLQotWyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVu
VGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzCi1bIFJVTiAgICAgIF0gRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIGEgZmFp
bHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFj
dHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxl
ZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRh
bEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKLVsgUlVOICAg
ICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLShl
eHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFs
IGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi1bIFJVTiAgICAgIF0gRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLShleHBlY3RpbmcgYSBm
YWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAg
QWN0dWFsOiAwIGZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5G
YWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLVstLS0tLS0tLS0tXSAyIHRlc3RzIGZyb20gVHlwZWRU
ZXN0LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGludAotWyBSVU4gICAgICBdIFR5cGVkVGVzdC8wLlN1
Y2Nlc3MKLVsgICAgICAgT0sgXSBUeXBlZFRlc3QvMC5TdWNjZXNzCi1bIFJVTiAgICAgIF0gVHlw
ZWRUZXN0LzAuRmFpbHVyZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBv
ZjogVHlwZVBhcmFtKCkKLSAgQWN0dWFsOiAwCi1FeHBlY3RlZDogMQotRXhwZWN0ZWQgZmFpbHVy
ZQotWyAgRkFJTEVEICBdIFR5cGVkVGVzdC8wLkZhaWx1cmUKLVstLS0tLS0tLS0tXSAyIHRlc3Rz
IGZyb20gVW5zaWduZWQvVHlwZWRUZXN0UC8wLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBj
aGFyCi1bIFJVTiAgICAgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8wLlN1Y2Nlc3MKLVsgICAgICAg
T0sgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAuU3VjY2VzcwotWyBSVU4gICAgICBdIFVuc2lnbmVk
L1R5cGVkVGVzdFAvMC5GYWlsdXJlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZh
bHVlIG9mOiBUeXBlUGFyYW0oKQotICBBY3R1YWw6IFwwCi1FeHBlY3RlZDogMVUKLVdoaWNoIGlz
OiAxCi1FeHBlY3RlZCBmYWlsdXJlCi1bICBGQUlMRUQgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8w
LkZhaWx1cmUKLVstLS0tLS0tLS0tXSAyIHRlc3RzIGZyb20gVW5zaWduZWQvVHlwZWRUZXN0UC8x
LCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKLVsgUlVOICAgICAgXSBVbnNpZ25lZC9U
eXBlZFRlc3RQLzEuU3VjY2VzcwotWyAgICAgICBPSyBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMS5T
dWNjZXNzCi1bIFJVTiAgICAgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVh
bDogMAotRXhwZWN0ZWQ6IDFVCi1XaGljaCBpczogMQotRXhwZWN0ZWQgZmFpbHVyZQotWyAgRkFJ
TEVEICBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlCi1bLS0tLS0tLS0tLV0gNCB0ZXN0
cyBmcm9tIEV4cGVjdEZhaWx1cmVUZXN0Ci1bIFJVTiAgICAgIF0gRXhwZWN0RmFpbHVyZVRlc3Qu
RXhwZWN0RmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVy
cm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBTdWNjZXNzOgotU3VjY2VlZGVkCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQot
Z3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBl
Y3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5j
YzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90
aGVyIGZhdGFsIGZhaWx1cmUgZXhwZWN0ZWQuIgotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4K
LQotWyAgRkFJTEVEICBdIEV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQotWyBS
VU4gICAgICBdIEV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQotKGV4cGVj
dGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFs
IGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1T
dWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhw
ZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0K
LShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5v
bi1mYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1cmUu
IgotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6
Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQgIF0gRXhw
ZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi1bIFJVTiAgICAgIF0gRXhwZWN0
RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0oZXhwZWN0aW5nIDEg
ZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0g
IEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBTdWNjZXNzOgotU3VjY2VlZGVkCi0K
LShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZh
dGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRh
bCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQotKGV4cGVj
dGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFp
bHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUgZXhwZWN0ZWQuIgotICBB
Y3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAot
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotWyAgRkFJTEVEICBdIEV4cGVjdEZhaWx1cmVUZXN0
LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotWyBSVU4gICAgICBdIEV4cGVjdEZhaWx1
cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotKGV4cGVjdGluZyAxIGZh
aWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUK
LSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1TdWNjZWVkZWQK
LQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEg
bm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZh
dGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLShleHBlY3Rp
bmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5vbi1mYXRhbCBm
YWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1cmUuIgotICBBY3R1
YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQK
LUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQgIF0gRXhwZWN0RmFpbHVy
ZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi1bLS0tLS0tLS0tLV0gR2xv
YmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCi1CYXJFbnZpcm9ubWVudDo6VGVhckRvd24o
KSBjYWxsZWQuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0
ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi1Gb29FbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQu
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmF0YWwg
ZmFpbHVyZS4KLVs9PT09PT09PT09XSA2MSB0ZXN0cyBmcm9tIDI3IHRlc3QgY2FzZXMgcmFuLgot
WyAgUEFTU0VEICBdIDIxIHRlc3RzLgotWyAgRkFJTEVEICBdIDQwIHRlc3RzLCBsaXN0ZWQgYmVs
b3c6Ci1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRp
bmUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vi
cm91dGluZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5T
dWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0Fu
ZEFzc2VydGlvbnMKLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0Lk9iZXlzU2NvcGVzCi1b
ICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAotWyAgRkFJTEVEICBdIFND
T1BFRF9UUkFDRVRlc3QuV29ya3NJblN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJB
Q0VUZXN0LkNhbkJlTmVzdGVkCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5DYW5CZVJl
cGVhdGVkCi1bICBGQUlMRUQgIF0gTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JU
ZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlSW5GaXh0
dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi1bICBGQUlMRUQgIF0gTm9u
RmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKLVsgIEZBSUxFRCAgXSBGYXRh
bEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotWyAgRkFJTEVEICBdIEV4Y2VwdGlv
bkluRml4dHVyZUN0b3JUZXN0LkV4Y2VwdGlvbkluRml4dHVyZUN0b3IKLVsgIEZBSUxFRCAgXSBF
eGNlcHRpb25JblNldFVwVGVzdC5FeGNlcHRpb25JblNldFVwCi1bICBGQUlMRUQgIF0gRXhjZXB0
aW9uSW5UZXN0RnVuY3Rpb25UZXN0LlNFSAotWyAgRkFJTEVEICBdIEV4Y2VwdGlvbkluVGVzdEZ1
bmN0aW9uVGVzdC5DcHBFeGNlcHRpb24KLVsgIEZBSUxFRCAgXSBFeGNlcHRpb25JblRlYXJEb3du
VGVzdC5FeGNlcHRpb25JblRlYXJEb3duCi1bICBGQUlMRUQgIF0gTWl4ZWRVcFRlc3RDYXNlVGVz
dC5UaGlzU2hvdWxkRmFpbAotWyAgRkFJTEVEICBdIE1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1No
b3VsZEZhaWxUb28KLVsgIEZBSUxFRCAgXSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1l
VGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotWyAgRkFJTEVEICBdIFRF
U1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUQW5kU2hv
dWxkRmFpbAotWyAgRkFJTEVEICBdIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2Fz
ZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsCi1bICBGQUlMRUQgIF0gRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKLVsgIEZB
SUxFRCAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvTm9u
ZmF0YWxGYWlsdXJlcwotWyAgRkFJTEVEICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFp
bHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVjdE5vbmZhdGFs
RmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotWyAgRkFJTEVEICBdIEV4cGVj
dE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi1bICBGQUlMRUQg
IF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUK
LVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdv
RmF0YWxGYWlsdXJlcwotWyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNX
aGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFp
bHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotWyAgRkFJTEVEICBdIEV4cGVjdEZh
dGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi1bICBGQUlMRUQgIF0gVHlw
ZWRUZXN0LzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci1bICBGQUlMRUQgIF0gVW5z
aWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNo
YXIKLVsgIEZBSUxFRCAgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZSwgd2hlcmUgVHlw
ZVBhcmFtID0gdW5zaWduZWQgaW50Ci1bICBGQUlMRUQgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhw
ZWN0RmF0YWxGYWlsdXJlCi1bICBGQUlMRUQgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9u
RmF0YWxGYWlsdXJlCi1bICBGQUlMRUQgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxG
YWlsdXJlT25BbGxUaHJlYWRzCi1bICBGQUlMRUQgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0
Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0KLTQwIEZBSUxFRCBURVNUUwotICBZT1UgSEFW
RSAxIERJU0FCTEVEIFRFU1QKLQotTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gRmF0YWxGYWls
dXJlVGVzdC4qOkxvZ2dpbmdUZXN0LioKLVs9PT09PT09PT09XSBSdW5uaW5nIDQgdGVzdHMgZnJv
bSAyIHRlc3QgY2FzZXMuCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0
LXVwLgotWy0tLS0tLS0tLS1dIDMgdGVzdHMgZnJvbSBGYXRhbEZhaWx1cmVUZXN0Ci1bIFJVTiAg
ICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLShleHBlY3Rp
bmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotWyAgRkFJTEVE
ICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lICg/IG1zKQotWyBS
VU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5l
Ci0oZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiB4Ci0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEK
LVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91
dGluZSAoPyBtcykKLVsgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVy
ZUluU3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgb24gZmFsc2UpCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBmYWxzZQotICBBY3R1YWw6IGZhbHNlCi1F
eHBlY3RlZDogdHJ1ZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWls
dXJlSW5TdWJyb3V0aW5lICg/IG1zKQotWy0tLS0tLS0tLS1dIDMgdGVzdHMgZnJvbSBGYXRhbEZh
aWx1cmVUZXN0ICg/IG1zIHRvdGFsKQotCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTG9nZ2lu
Z1Rlc3QKLVsgUlVOICAgICAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNz
ZXJ0aW9ucwotKGV4cGVjdGluZyAyIGZhaWx1cmVzIG9uICgzKSA+PSAoYVtpXSkpCi1pID09IDAK
LWkgPT0gMQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBFeHBlY3RlZDogKDMpID49
IChhW2ldKSwgYWN0dWFsOiAzIHZzIDkKLWkgPT0gMgotaSA9PSAzCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgNgot
WyAgRkFJTEVEICBdIExvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25z
ICg/IG1zKQotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExvZ2dpbmdUZXN0ICg/IG1zIHRvdGFs
KQotCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCi1bPT09
PT09PT09PV0gNCB0ZXN0cyBmcm9tIDIgdGVzdCBjYXNlcyByYW4uICg/IG1zIHRvdGFsKQotWyAg
UEFTU0VEICBdIDAgdGVzdHMuCi1bICBGQUlMRUQgIF0gNCB0ZXN0cywgbGlzdGVkIGJlbG93Ogot
WyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi1b
ICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRp
bmUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91
dGluZQotWyAgRkFJTEVEICBdIExvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3Nl
cnRpb25zCi0KLSA0IEZBSUxFRCBURVNUUwotICBZT1UgSEFWRSAxIERJU0FCTEVEIFRFU1QKLQot
Tm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gKkRJU0FCTEVEXyoKLVs9PT09PT09PT09XSBSdW5u
aW5nIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlLgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVu
dmlyb25tZW50IHNldC11cC4KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBEaXNhYmxlZFRlc3Rz
V2FybmluZ1Rlc3QKLVsgUlVOICAgICAgXSBEaXNhYmxlZFRlc3RzV2FybmluZ1Rlc3QuRElTQUJM
RURfQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnU3VwcHJlc3Nlc1dhcm5pbmcKLVsgICAgICAgT0sg
XSBEaXNhYmxlZFRlc3RzV2FybmluZ1Rlc3QuRElTQUJMRURfQWxzb1J1bkRpc2FibGVkVGVzdHNG
bGFnU3VwcHJlc3Nlc1dhcm5pbmcKLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVu
dCB0ZWFyLWRvd24KLVs9PT09PT09PT09XSAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZSByYW4uCi1b
ICBQQVNTRUQgIF0gMSB0ZXN0LgotTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gUGFzc2luZ1Rl
c3QuKgotTm90ZTogVGhpcyBpcyB0ZXN0IHNoYXJkIDEgb2YgMi4KLVs9PT09PT09PT09XSBSdW5u
aW5nIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlLgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVu
dmlyb25tZW50IHNldC11cC4KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBQYXNzaW5nVGVzdAot
WyBSVU4gICAgICBdIFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgotWyAgICAgICBPSyBdIFBhc3Np
bmdUZXN0LlBhc3NpbmdUZXN0MgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50
IHRlYXItZG93bgotWz09PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlIHJhbi4KLVsg
IFBBU1NFRCAgXSAxIHRlc3QuCi0KLSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNUCi0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcmVkX2ltcGxfdW5p
dHRlc3QuY2MKaW5kZXggZTdlZTU0YjU2ZDg2YjllYTU0YjcxNjEyNTg2OWFhMjg3ZDEyNmJlNy4u
YjQ2NmMxNTBhZWRjNDNmZGIxMDM3M2I3YTgwMmNjYmU3NzU3OTBmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcmVkX2ltcGxfdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcmVkX2ltcGxfdW5pdHRlc3Qu
Y2MKQEAgLTI3LDcgKzI3LDcgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAot
Ly8gVGhpcyBmaWxlIGlzIEFVVE9NQVRJQ0FMTFkgR0VORVJBVEVEIG9uIDEwLzAyLzIwMDggYnkg
Y29tbWFuZAorLy8gVGhpcyBmaWxlIGlzIEFVVE9NQVRJQ0FMTFkgR0VORVJBVEVEIG9uIDAxLzAy
LzIwMTggYnkgY29tbWFuZAogLy8gJ2dlbl9ndGVzdF9wcmVkX2ltcGwucHkgNScuICBETyBOT1Qg
RURJVCBCWSBIQU5EIQogCiAvLyBSZWdyZXNzaW9uIHRlc3QgZm9yIGd0ZXN0X3ByZWRfaW1wbC5o
CkBAIC00OSw4ICs0OSw4IEBACiAKICNpbmNsdWRlIDxpb3N0cmVhbT4KIAotI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+CisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKIAogLy8gQSB1c2VyLWRl
ZmluZWQgZGF0YSB0eXBlLgogc3RydWN0IEJvb2wgewpAQCAtMTAzLDExICsxMDMsMTAgQEAgdGVz
dGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRGb3JtYXRGdW5jdGlvbjEoY29uc3QgY2hhciogZTEs
CiAgIGlmIChQcmVkRnVuY3Rpb24xKHYxKSkKICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9u
U3VjY2VzcygpOwogCi0gIHRlc3Rpbmc6Ok1lc3NhZ2UgbXNnOwotICBtc2cgPDwgZTEKKyAgcmV0
dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwgZTEKICAgICAgIDw8ICIg
aXMgZXhwZWN0ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgogICAgICAgPDwg
djEgPDwgIi4iOwotICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQog
CiAvLyBBIHVuYXJ5IHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rvci4KQEAgLTQ5NCwxMSArNDkz
LDEwIEBAIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rpb24yKGNvbnN0
IGNoYXIqIGUxLAogICBpZiAoUHJlZEZ1bmN0aW9uMih2MSwgdjIpKQogICAgIHJldHVybiB0ZXN0
aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgdGVzdGluZzo6TWVzc2FnZSBtc2c7Ci0gIG1z
ZyA8PCBlMSA8PCAiICsgIiA8PCBlMgorICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVy
ZSgpCisgICAgICA8PCBlMSA8PCAiICsgIiA8PCBlMgogICAgICAgPDwgIiBpcyBleHBlY3RlZCB0
byBiZSBwb3NpdGl2ZSwgYnV0IGV2YWx1YXRlcyB0byAiCiAgICAgICA8PCB2MSArIHYyIDw8ICIu
IjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNnKTsKIH0KIAogLy8gQSBi
aW5hcnkgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdG9yLgpAQCAtOTI3LDExICs5MjUsMTAgQEAg
dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRGb3JtYXRGdW5jdGlvbjMoY29uc3QgY2hhciog
ZTEsCiAgIGlmIChQcmVkRnVuY3Rpb24zKHYxLCB2MiwgdjMpKQogICAgIHJldHVybiB0ZXN0aW5n
OjpBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgdGVzdGluZzo6TWVzc2FnZSBtc2c7Ci0gIG1zZyA8
PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBlMworICByZXR1cm4gdGVzdGluZzo6QXNz
ZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBl
MwogICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBiZSBwb3NpdGl2ZSwgYnV0IGV2YWx1YXRlcyB0
byAiCiAgICAgICA8PCB2MSArIHYyICsgdjMgPDwgIi4iOwotICByZXR1cm4gdGVzdGluZzo6QXNz
ZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogCiAvLyBBIHRlcm5hcnkgcHJlZGljYXRlLWZvcm1hdHRl
ciBmdW5jdG9yLgpAQCAtMTQwMiwxMSArMTM5OSwxMCBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1
bHQgUHJlZEZvcm1hdEZ1bmN0aW9uNChjb25zdCBjaGFyKiBlMSwKICAgaWYgKFByZWRGdW5jdGlv
bjQodjEsIHYyLCB2MywgdjQpKQogICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNz
KCk7CiAKLSAgdGVzdGluZzo6TWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBlMSA8PCAiICsgIiA8PCBl
MiA8PCAiICsgIiA8PCBlMyA8PCAiICsgIiA8PCBlNAorICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0
aW9uRmFpbHVyZSgpCisgICAgICA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBlMyA8
PCAiICsgIiA8PCBlNAogICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBiZSBwb3NpdGl2ZSwgYnV0
IGV2YWx1YXRlcyB0byAiCiAgICAgICA8PCB2MSArIHYyICsgdjMgKyB2NCA8PCAiLiI7Ci0gIHJl
dHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIC8vIEEgNC1hcnkgcHJl
ZGljYXRlLWZvcm1hdHRlciBmdW5jdG9yLgpAQCAtMTkxOSwxMSArMTkxNSwxMCBAQCB0ZXN0aW5n
OjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1bmN0aW9uNShjb25zdCBjaGFyKiBlMSwKICAg
aWYgKFByZWRGdW5jdGlvbjUodjEsIHYyLCB2MywgdjQsIHY1KSkKICAgICByZXR1cm4gdGVzdGlu
Zzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIHRlc3Rpbmc6Ok1lc3NhZ2UgbXNnOwotICBtc2cg
PDwgZTEgPDwgIiArICIgPDwgZTIgPDwgIiArICIgPDwgZTMgPDwgIiArICIgPDwgZTQgPDwgIiAr
ICIgPDwgZTUKKyAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwg
ZTEgPDwgIiArICIgPDwgZTIgPDwgIiArICIgPDwgZTMgPDwgIiArICIgPDwgZTQgPDwgIiArICIg
PDwgZTUKICAgICAgIDw8ICIgaXMgZXhwZWN0ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0
ZXMgdG8gIgogICAgICAgPDwgdjEgKyB2MiArIHYzICsgdjQgKyB2NSA8PCAiLiI7Ci0gIHJldHVy
biB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIC8vIEEgNS1hcnkgcHJlZGlj
YXRlLWZvcm1hdHRlciBmdW5jdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF9wcmVtYXR1cmVfZXhpdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9wcmVtYXR1cmVfZXhpdF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxZTkz
MDU2ZDhiNTYyYzU5ZmViYTgyNzhlMjBjMjlkZjEzZTE5MTUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZW1hdHVyZV9leGl0X3Rlc3QuY2MK
QEAgLTAsMCArMSwxMjYgQEAKKy8vIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgorLy8gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8v
IG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisv
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworLy8KKy8vIFRlc3RzIHRoYXQgR29vZ2xlIFRlc3QgbWFuaXB1bGF0ZXMgdGhlIHBy
ZW1hdHVyZS1leGl0LWRldGVjdGlvbgorLy8gZmlsZSBjb3JyZWN0bHkuCisKKyNpbmNsdWRlIDxz
dGRpby5oPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKwordXNpbmcgOjp0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6
aW50ZXJuYWw6OnBvc2l4OjpHZXRFbnY7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3Np
eDo6U3RhdDsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpTdGF0U3RydWN0Owor
CituYW1lc3BhY2UgeworCitjbGFzcyBQcmVtYXR1cmVFeGl0VGVzdCA6IHB1YmxpYyBUZXN0IHsK
KyBwdWJsaWM6CisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGdpdmVuIGZpbGUgZXhpc3RzLgor
ICBzdGF0aWMgYm9vbCBGaWxlRXhpc3RzKGNvbnN0IGNoYXIqIGZpbGVwYXRoKSB7CisgICAgU3Rh
dFN0cnVjdCBzdGF0OworICAgIHJldHVybiBTdGF0KGZpbGVwYXRoLCAmc3RhdCkgPT0gMDsKKyAg
fQorCisgcHJvdGVjdGVkOgorICBQcmVtYXR1cmVFeGl0VGVzdCgpIHsKKyAgICBwcmVtYXR1cmVf
ZXhpdF9maWxlX3BhdGhfID0gR2V0RW52KCJURVNUX1BSRU1BVFVSRV9FWElUX0ZJTEUiKTsKKwor
ICAgIC8vIE5vcm1hbGl6ZSBOVUxMIHRvICIiIGZvciBlYXNlIG9mIGhhbmRsaW5nLgorICAgIGlm
IChwcmVtYXR1cmVfZXhpdF9maWxlX3BhdGhfID09IE5VTEwpIHsKKyAgICAgIHByZW1hdHVyZV9l
eGl0X2ZpbGVfcGF0aF8gPSAiIjsKKyAgICB9CisgIH0KKworICAvLyBSZXR1cm5zIHRydWUgaWZm
IHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlIGV4aXN0cy4KKyAgYm9vbCBQcmVtYXR1cmVFeGl0Rmls
ZUV4aXN0cygpIGNvbnN0IHsKKyAgICByZXR1cm4gRmlsZUV4aXN0cyhwcmVtYXR1cmVfZXhpdF9m
aWxlX3BhdGhfKTsKKyAgfQorCisgIGNvbnN0IGNoYXIqIHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0
aF87Cit9OworCit0eXBlZGVmIFByZW1hdHVyZUV4aXRUZXN0IFByZW1hdHVyZUV4aXREZWF0aFRl
c3Q7CisKKy8vIFRlc3RzIHRoYXQ6CisvLyAgIC0gdGhlIHByZW1hdHVyZS1leGl0IGZpbGUgZXhp
c3RzIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIGEKKy8vICAgICBkZWF0aCB0ZXN0IChFWFBFQ1Rf
REVBVEgqKSwgYW5kCisvLyAgIC0gYSBkZWF0aCB0ZXN0IGRvZXNuJ3QgaW50ZXJmZXJlIHdpdGgg
dGhlIG1haW4gdGVzdCBwcm9jZXNzJ3MKKy8vICAgICBoYW5kbGluZyBvZiB0aGUgcHJlbWF0dXJl
LWV4aXQgZmlsZS4KK1RFU1RfRihQcmVtYXR1cmVFeGl0RGVhdGhUZXN0LCBGaWxlRXhpc3RzRHVy
aW5nRXhlY3V0aW9uT2ZEZWF0aFRlc3QpIHsKKyAgaWYgKCpwcmVtYXR1cmVfZXhpdF9maWxlX3Bh
dGhfID09ICdcMCcpIHsKKyAgICByZXR1cm47CisgIH0KKworICBFWFBFQ1RfREVBVEhfSUZfU1VQ
UE9SVEVEKHsKKyAgICAgIC8vIElmIHRoZSBmaWxlIGV4aXN0cywgY3Jhc2ggdGhlIHByb2Nlc3Mg
c3VjaCB0aGF0IHRoZSBtYWluIHRlc3QKKyAgICAgIC8vIHByb2Nlc3Mgd2lsbCBjYXRjaCB0aGUg
KGV4cGVjdGVkKSBjcmFzaCBhbmQgcmVwb3J0IGEgc3VjY2VzczsKKyAgICAgIC8vIG90aGVyd2lz
ZSBkb24ndCBjcmFzaCwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgbWFpbiB0ZXN0IHByb2Nlc3MKKyAg
ICAgIC8vIHRvIHJlcG9ydCB0aGF0IHRoZSBkZWF0aCB0ZXN0IGhhcyBmYWlsZWQuCisgICAgICBp
ZiAoUHJlbWF0dXJlRXhpdEZpbGVFeGlzdHMoKSkgeworICAgICAgICBleGl0KDEpOworICAgICAg
fQorICAgIH0sICIiKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgcHJlbWF0dXJlLWV4aXQgZmls
ZSBleGlzdHMgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgYQorLy8gbm9ybWFsIChub24tZGVhdGgp
IHRlc3QuCitURVNUX0YoUHJlbWF0dXJlRXhpdFRlc3QsIFByZW1hdHVyZUV4aXRGaWxlRXhpc3Rz
RHVyaW5nVGVzdEV4ZWN1dGlvbikgeworICBpZiAoKnByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8g
PT0gJ1wwJykgeworICAgIHJldHVybjsKKyAgfQorCisgIEVYUEVDVF9UUlVFKFByZW1hdHVyZUV4
aXRGaWxlRXhpc3RzKCkpCisgICAgICA8PCAiIGZpbGUgIiA8PCBwcmVtYXR1cmVfZXhpdF9maWxl
X3BhdGhfCisgICAgICA8PCAiIHNob3VsZCBleGlzdCBkdXJpbmcgdGVzdCBleGVjdXRpb24sIGJ1
dCBkb2Vzbid0LiI7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqKmFyZ3YpIHsKKyAgSW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICBjb25zdCBp
bnQgZXhpdF9jb2RlID0gUlVOX0FMTF9URVNUUygpOworCisgIC8vIFRlc3QgdGhhdCB0aGUgcHJl
bWF0dXJlLWV4aXQgZmlsZSBpcyBkZWxldGVkIHVwb24gcmV0dXJuIGZyb20KKyAgLy8gUlVOX0FM
TF9URVNUUygpLgorICBjb25zdCBjaGFyKiBjb25zdCBmaWxlcGF0aCA9IEdldEVudigiVEVTVF9Q
UkVNQVRVUkVfRVhJVF9GSUxFIik7CisgIGlmIChmaWxlcGF0aCAhPSBOVUxMICYmICpmaWxlcGF0
aCAhPSAnXDAnKSB7CisgICAgaWYgKFByZW1hdHVyZUV4aXRUZXN0OjpGaWxlRXhpc3RzKGZpbGVw
YXRoKSkgeworICAgICAgcHJpbnRmKAorICAgICAgICAgICJGaWxlICVzIHNob3VsZG4ndCBleGlz
dCBhZnRlciB0aGUgdGVzdCBwcm9ncmFtIGZpbmlzaGVzLCBidXQgZG9lcy4iLAorICAgICAgICAg
IGZpbGVwYXRoKTsKKyAgICAgIHJldHVybiAxOworICAgIH0KKyAgfQorCisgIHJldHVybiBleGl0
X2NvZGU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X3Byb2RfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJvZF90
ZXN0LmNjCmluZGV4IGJjMzIwMWQwZjI0YWU5OGVkMDYyYzdiOGM5ZjQ0ZDdkZmU2ZDdjOTYuLmVk
ZTgxYTBkMTdhMDJjODUzZWQyMjM0ZWM4OGZlODI3NzE4MGEzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJvZF90ZXN0LmNjCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJvZF90ZXN0LmNjCkBAIC0yNiwxMyArMjYsMTIg
QEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwogLy8K
LS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBVbml0IHRl
c3QgZm9yIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oLgorLy8gVW5pdCB0ZXN0IGZvciBndGVz
dF9wcm9kLmguCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgInRlc3QvcHJv
ZHVjdGlvbi5oIgorI2luY2x1ZGUgInByb2R1Y3Rpb24uaCIKKyNpbmNsdWRlICJndGVzdC9ndGVz
dC5oIgogCiAvLyBUZXN0cyB0aGF0IHByaXZhdGUgbWVtYmVycyBjYW4gYmUgYWNjZXNzZWQgZnJv
bSBhIFRFU1QgZGVjbGFyZWQgYXMKIC8vIGEgZnJpZW5kIG9mIHRoZSBjbGFzcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcmVwZWF0X3Rlc3QuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3JlcGVhdF90ZXN0LmNjCmluZGV4IGRm
Njg2OGI4MzAyOTYxMjVhMjdjN2YzN2Y5MzE2Y2VkNGVkODJkNTQuLjFlOGY0OTliYjlkZTNkMTRi
Y2IzYmIxYTY0MWMwNmQ3YTEyNTBhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfcmVwZWF0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF9yZXBlYXRfdGVzdC5jYwpAQCAtMjYsMjMgKzI2LDE0IEBACiAvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCiAKIC8vIFRlc3RzIHRoZSAtLWd0ZXN0X3Jl
cGVhdD1udW1iZXIgZmxhZy4KIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPGlvc3Ry
ZWFtPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLS8vIEluZGljYXRlcyB0aGF0IHRoaXMg
dHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0
aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5j
bHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMg
dG8KLS8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1p
bnRlcm5hbC1pbmwuaCBpbgotLy8gaGlzIGNvZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFU
SU9OXyAxCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKICNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50
ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCiAKIG5hbWVzcGFjZSB0
ZXN0aW5nIHsKIApAQCAtNjksMTMgKzYwLDEzIEBAIG5hbWVzcGFjZSB7CiAgICAgICAgICAgICAg
ICAgICA8PCAiICBBY3R1YWw6ICIgPDwgYWN0dWFsX3ZhbCA8PCAiXG4iXAogICAgICAgICAgICAg
ICAgICAgPDwgIkV4cGVjdGVkOiAiICNleHBlY3RlZCAiXG4iXAogICAgICAgICAgICAgICAgICAg
PDwgIldoaWNoIGlzOiAiIDw8IGV4cGVjdGVkX3ZhbCA8PCAiXG4iO1wKLSAgICAgIGFib3J0KCk7
XAorICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OkFib3J0KCk7XAogICAgIH1cCi0g
IH0gd2hpbGUoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2UoKSkKKyAgfSB3aGlsZSAo
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2UoKSkKIAogCiAvLyBVc2VkIGZvciB2ZXJp
ZnlpbmcgdGhhdCBnbG9iYWwgZW52aXJvbm1lbnQgc2V0LXVwIGFuZCB0ZWFyLWRvd24gYXJlCi0v
LyBpbnNpZGUgdGhlIGd0ZXN0X3JlcGVhdCBsb29wLgorLy8gaW5zaWRlIHRoZSAtLWd0ZXN0X3Jl
cGVhdCBsb29wLgogCiBpbnQgZ19lbnZpcm9ubWVudF9zZXRfdXBfY291bnQgPSAwOwogaW50IGdf
ZW52aXJvbm1lbnRfdGVhcl9kb3duX2NvdW50ID0gMDsKQEAgLTExMywxMyArMTA0LDEyIEBAIFRF
U1QoQmFyRGVhdGhUZXN0LCBUaHJlYWRTYWZlQW5kRmFzdCkgewogICBnX2RlYXRoX3Rlc3RfY291
bnQrKzsKIAogICBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOwot
ICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKGFib3J0KCksICIiKTsKKyAgRVhQRUNUX0RFQVRI
X0lGX1NVUFBPUlRFRCg6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6QWJvcnQoKSwgIiIpOwog
CiAgIEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7Ci0gIEVYUEVDVF9ERUFU
SF9JRl9TVVBQT1JURUQoYWJvcnQoKSwgIiIpOworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVE
KDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpBYm9ydCgpLCAiIik7CiB9CiAKLSNpZiBHVEVT
VF9IQVNfUEFSQU1fVEVTVAogaW50IGdfcGFyYW1fdGVzdF9jb3VudCA9IDA7CiAKIGNvbnN0IGlu
dCBrTnVtYmVyT2ZQYXJhbVRlc3RzID0gMTA7CkBAIC0xMjcsMTUgKzExNywxMyBAQCBjb25zdCBp
bnQga051bWJlck9mUGFyYW1UZXN0cyA9IDEwOwogY2xhc3MgTXlQYXJhbVRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHt9OwogCiBURVNUX1AoTXlQYXJhbVRlc3QsIFNo
b3VsZFBhc3MpIHsKLSAgLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogTWFrZSBwYXJhbWV0ZXIg
dmFsdWUgY2hlY2tpbmcgcm9idXN0Ci0gIC8vICAgICAgICAgICAgICAgICAgICAgICAgIFdSVCBv
cmRlciBvZiB0ZXN0cy4KKyAgLy8gRklYTUU6IE1ha2UgcGFyYW1ldGVyIHZhbHVlIGNoZWNraW5n
IHJvYnVzdCBXUlQgb3JkZXIgb2YgdGVzdHMuCiAgIEdURVNUX0NIRUNLX0lOVF9FUV8oZ19wYXJh
bV90ZXN0X2NvdW50ICUga051bWJlck9mUGFyYW1UZXN0cywgR2V0UGFyYW0oKSk7CiAgIGdfcGFy
YW1fdGVzdF9jb3VudCsrOwogfQogSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoTXlQYXJhbVNlcXVl
bmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgTXlQYXJhbVRlc3QsCiAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0aW5nOjpSYW5nZSgwLCBrTnVtYmVyT2ZQYXJhbVRlc3RzKSk7Ci0jZW5k
aWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCiAKIC8vIFJlc2V0cyB0aGUgY291bnQgZm9yIGVh
Y2ggdGVzdC4KIHZvaWQgUmVzZXRDb3VudHMoKSB7CkBAIC0xNDQsOSArMTMyLDcgQEAgdm9pZCBS
ZXNldENvdW50cygpIHsKICAgZ19zaG91bGRfZmFpbF9jb3VudCA9IDA7CiAgIGdfc2hvdWxkX3Bh
c3NfY291bnQgPSAwOwogICBnX2RlYXRoX3Rlc3RfY291bnQgPSAwOwotI2lmIEdURVNUX0hBU19Q
QVJBTV9URVNUCiAgIGdfcGFyYW1fdGVzdF9jb3VudCA9IDA7Ci0jZW5kaWYgIC8vIEdURVNUX0hB
U19QQVJBTV9URVNUCiB9CiAKIC8vIENoZWNrcyB0aGF0IHRoZSBjb3VudCBmb3IgZWFjaCB0ZXN0
IGlzIGV4cGVjdGVkLgpAQCAtMTU2LDkgKzE0Miw3IEBAIHZvaWQgQ2hlY2tDb3VudHMoaW50IGV4
cGVjdGVkKSB7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8oZXhwZWN0ZWQsIGdfc2hvdWxkX2ZhaWxf
Y291bnQpOwogICBHVEVTVF9DSEVDS19JTlRfRVFfKGV4cGVjdGVkLCBnX3Nob3VsZF9wYXNzX2Nv
dW50KTsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhleHBlY3RlZCwgZ19kZWF0aF90ZXN0X2NvdW50
KTsKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAogICBHVEVTVF9DSEVDS19JTlRfRVFfKGV4cGVj
dGVkICoga051bWJlck9mUGFyYW1UZXN0cywgZ19wYXJhbV90ZXN0X2NvdW50KTsKLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIH0KIAogLy8gVGVzdHMgdGhlIGJlaGF2aW9yIG9mIEdv
b2dsZSBUZXN0IHdoZW4gLS1ndGVzdF9yZXBlYXQgaXMgbm90IHNwZWNpZmllZC4KQEAgLTIwMSw5
ICsxODUsNyBAQCB2b2lkIFRlc3RSZXBlYXRXaXRoRmlsdGVyRm9yU3VjY2Vzc2Z1bFRlc3RzKGlu
dCByZXBlYXQpIHsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXygwLCBnX3Nob3VsZF9mYWlsX2NvdW50
KTsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhyZXBlYXQsIGdfc2hvdWxkX3Bhc3NfY291bnQpOwog
ICBHVEVTVF9DSEVDS19JTlRfRVFfKHJlcGVhdCwgZ19kZWF0aF90ZXN0X2NvdW50KTsKLSNpZiBH
VEVTVF9IQVNfUEFSQU1fVEVTVAogICBHVEVTVF9DSEVDS19JTlRfRVFfKHJlcGVhdCAqIGtOdW1i
ZXJPZlBhcmFtVGVzdHMsIGdfcGFyYW1fdGVzdF9jb3VudCk7Ci0jZW5kaWYgIC8vIEdURVNUX0hB
U19QQVJBTV9URVNUCiB9CiAKIC8vIFRlc3RzIHVzaW5nIC0tZ3Rlc3RfcmVwZWF0IHdoZW4gLS1n
dGVzdF9maWx0ZXIgc3BlY2lmaWVzIGEgc2V0IG9mCkBAIC0yMTksMTUgKzIwMSwxNCBAQCB2b2lk
IFRlc3RSZXBlYXRXaXRoRmlsdGVyRm9yRmFpbGVkVGVzdHMoaW50IHJlcGVhdCkgewogICBHVEVT
VF9DSEVDS19JTlRfRVFfKHJlcGVhdCwgZ19zaG91bGRfZmFpbF9jb3VudCk7CiAgIEdURVNUX0NI
RUNLX0lOVF9FUV8oMCwgZ19zaG91bGRfcGFzc19jb3VudCk7CiAgIEdURVNUX0NIRUNLX0lOVF9F
UV8oMCwgZ19kZWF0aF90ZXN0X2NvdW50KTsKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAogICBH
VEVTVF9DSEVDS19JTlRfRVFfKDAsIGdfcGFyYW1fdGVzdF9jb3VudCk7Ci0jZW5kaWYgIC8vIEdU
RVNUX0hBU19QQVJBTV9URVNUCiB9CiAKIH0gIC8vIG5hbWVzcGFjZQogCiBpbnQgbWFpbihpbnQg
YXJnYywgY2hhciAqKmFyZ3YpIHsKICAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFy
Z3YpOworCiAgIHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgTXlFbnZpcm9u
bWVudCk7CiAKICAgVGVzdFJlcGVhdFVuc3BlY2lmaWVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdC5weSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAzMGQwMzAzZDE5MzU1NGE1ZmQwYjliMWY2YTUxZWY3ZDA5ZjMwNjEyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0LnB5CisrKyAvZGV2L251bGwKQEAg
LTEsMzI1ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAw
OSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
IiIiVmVyaWZpZXMgdGhhdCB0ZXN0IHNodWZmbGluZyB3b3Jrcy4iIiIKLQotX19hdXRob3JfXyA9
ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IG9zCi1pbXBvcnQgZ3Rl
c3RfdGVzdF91dGlscwotCi0jIENvbW1hbmQgdG8gcnVuIHRoZSBndGVzdF9zaHVmZmxlX3Rlc3Rf
IHByb2dyYW0uCi1DT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBh
dGgoJ2d0ZXN0X3NodWZmbGVfdGVzdF8nKQotCi0jIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMg
Zm9yIHRlc3Qgc2hhcmRpbmcuCi1UT1RBTF9TSEFSRFNfRU5WX1ZBUiA9ICdHVEVTVF9UT1RBTF9T
SEFSRFMnCi1TSEFSRF9JTkRFWF9FTlZfVkFSID0gJ0dURVNUX1NIQVJEX0lOREVYJwotCi1URVNU
X0ZJTFRFUiA9ICdBKi5BOkEqLkI6QyonCi0KLUFMTF9URVNUUyA9IFtdCi1BQ1RJVkVfVEVTVFMg
PSBbXQotRklMVEVSRURfVEVTVFMgPSBbXQotU0hBUkRFRF9URVNUUyA9IFtdCi0KLVNIVUZGTEVE
X0FMTF9URVNUUyA9IFtdCi1TSFVGRkxFRF9BQ1RJVkVfVEVTVFMgPSBbXQotU0hVRkZMRURfRklM
VEVSRURfVEVTVFMgPSBbXQotU0hVRkZMRURfU0hBUkRFRF9URVNUUyA9IFtdCi0KLQotZGVmIEFs
c29SdW5EaXNhYmxlZFRlc3RzRmxhZygpOgotICByZXR1cm4gJy0tZ3Rlc3RfYWxzb19ydW5fZGlz
YWJsZWRfdGVzdHMnCi0KLQotZGVmIEZpbHRlckZsYWcodGVzdF9maWx0ZXIpOgotICByZXR1cm4g
Jy0tZ3Rlc3RfZmlsdGVyPSVzJyAlICh0ZXN0X2ZpbHRlciwpCi0KLQotZGVmIFJlcGVhdEZsYWco
bik6Ci0gIHJldHVybiAnLS1ndGVzdF9yZXBlYXQ9JXMnICUgKG4sKQotCi0KLWRlZiBTaHVmZmxl
RmxhZygpOgotICByZXR1cm4gJy0tZ3Rlc3Rfc2h1ZmZsZScKLQotCi1kZWYgUmFuZG9tU2VlZEZs
YWcobik6Ci0gIHJldHVybiAnLS1ndGVzdF9yYW5kb21fc2VlZD0lcycgJSAobiwpCi0KLQotZGVm
IFJ1bkFuZFJldHVybk91dHB1dChleHRyYV9lbnYsIGFyZ3MpOgotICAiIiJSdW5zIHRoZSB0ZXN0
IHByb2dyYW0gYW5kIHJldHVybnMgaXRzIG91dHB1dC4iIiIKLQotICBlbnZpcm9uX2NvcHkgPSBv
cy5lbnZpcm9uLmNvcHkoKQotICBlbnZpcm9uX2NvcHkudXBkYXRlKGV4dHJhX2VudikKLQotICBy
ZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtDT01NQU5EXSArIGFyZ3MsIGVudj1l
bnZpcm9uX2NvcHkpLm91dHB1dAotCi0KLWRlZiBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoZXh0
cmFfZW52LCBhcmdzKToKLSAgIiIiUnVucyB0aGUgdGVzdCBwcm9ncmFtIGFuZCByZXR1cm5zIGEg
bGlzdCBvZiB0ZXN0IGxpc3RzLgotCi0gIEFyZ3M6Ci0gICAgZXh0cmFfZW52OiBhIG1hcCBmcm9t
IGVudmlyb25tZW50IHZhcmlhYmxlcyB0byB0aGVpciB2YWx1ZXMKLSAgICBhcmdzOiBjb21tYW5k
IGxpbmUgZmxhZ3MgdG8gcGFzcyB0byBndGVzdF9zaHVmZmxlX3Rlc3RfCi0KLSAgUmV0dXJuczoK
LSAgICBBIGxpc3Qgd2hlcmUgdGhlIGktdGggZWxlbWVudCBpcyB0aGUgbGlzdCBvZiB0ZXN0cyBy
dW4gaW4gdGhlIGktdGgKLSAgICB0ZXN0IGl0ZXJhdGlvbi4KLSAgIiIiCi0KLSAgdGVzdF9pdGVy
YXRpb25zID0gW10KLSAgZm9yIGxpbmUgaW4gUnVuQW5kUmV0dXJuT3V0cHV0KGV4dHJhX2Vudiwg
YXJncykuc3BsaXQoJ1xuJyk6Ci0gICAgaWYgbGluZS5zdGFydHN3aXRoKCctLS0tJyk6Ci0gICAg
ICB0ZXN0cyA9IFtdCi0gICAgICB0ZXN0X2l0ZXJhdGlvbnMuYXBwZW5kKHRlc3RzKQotICAgIGVs
aWYgbGluZS5zdHJpcCgpOgotICAgICAgdGVzdHMuYXBwZW5kKGxpbmUuc3RyaXAoKSkgICMgJ1Rl
c3RDYXNlTmFtZS5UZXN0TmFtZScKLQotICByZXR1cm4gdGVzdF9pdGVyYXRpb25zCi0KLQotZGVm
IEdldFRlc3RDYXNlcyh0ZXN0cyk6Ci0gICIiIlJldHVybnMgYSBsaXN0IG9mIHRlc3QgY2FzZXMg
aW4gdGhlIGdpdmVuIGZ1bGwgdGVzdCBuYW1lcy4KLQotICBBcmdzOgotICAgIHRlc3RzOiBhIGxp
c3Qgb2YgZnVsbCB0ZXN0IG5hbWVzCi0KLSAgUmV0dXJuczoKLSAgICBBIGxpc3Qgb2YgdGVzdCBj
YXNlcyBmcm9tICd0ZXN0cycsIGluIHRoZWlyIG9yaWdpbmFsIG9yZGVyLgotICAgIENvbnNlY3V0
aXZlIGR1cGxpY2F0ZXMgYXJlIHJlbW92ZWQuCi0gICIiIgotCi0gIHRlc3RfY2FzZXMgPSBbXQot
ICBmb3IgdGVzdCBpbiB0ZXN0czoKLSAgICB0ZXN0X2Nhc2UgPSB0ZXN0LnNwbGl0KCcuJylbMF0K
LSAgICBpZiBub3QgdGVzdF9jYXNlIGluIHRlc3RfY2FzZXM6Ci0gICAgICB0ZXN0X2Nhc2VzLmFw
cGVuZCh0ZXN0X2Nhc2UpCi0KLSAgcmV0dXJuIHRlc3RfY2FzZXMKLQotCi1kZWYgQ2FsY3VsYXRl
VGVzdExpc3RzKCk6Ci0gICIiIkNhbGN1bGF0ZXMgdGhlIGxpc3Qgb2YgdGVzdHMgcnVuIHVuZGVy
IGRpZmZlcmVudCBmbGFncy4iIiIKLQotICBpZiBub3QgQUxMX1RFU1RTOgotICAgIEFMTF9URVNU
Uy5leHRlbmQoCi0gICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7fSwgW0Fsc29SdW5E
aXNhYmxlZFRlc3RzRmxhZygpXSlbMF0pCi0KLSAgaWYgbm90IEFDVElWRV9URVNUUzoKLSAgICBB
Q1RJVkVfVEVTVFMuZXh0ZW5kKEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7fSwgW10pWzBdKQot
Ci0gIGlmIG5vdCBGSUxURVJFRF9URVNUUzoKLSAgICBGSUxURVJFRF9URVNUUy5leHRlbmQoCi0g
ICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7fSwgW0ZpbHRlckZsYWcoVEVTVF9GSUxU
RVIpXSlbMF0pCi0KLSAgaWYgbm90IFNIQVJERURfVEVTVFM6Ci0gICAgU0hBUkRFRF9URVNUUy5l
eHRlbmQoCi0gICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7VE9UQUxfU0hBUkRTX0VO
Vl9WQVI6ICczJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRF9JTkRF
WF9FTlZfVkFSOiAnMSd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10pWzBd
KQotCi0gIGlmIG5vdCBTSFVGRkxFRF9BTExfVEVTVFM6Ci0gICAgU0hVRkZMRURfQUxMX1RFU1RT
LmV4dGVuZChHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBbQWxzb1J1bkRp
c2FibGVkVGVzdHNGbGFnKCksIFNodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSlbMF0p
Ci0KLSAgaWYgbm90IFNIVUZGTEVEX0FDVElWRV9URVNUUzoKLSAgICBTSFVGRkxFRF9BQ1RJVkVf
VEVTVFMuZXh0ZW5kKEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKLSAgICAgICAge30sIFtTaHVm
ZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0pWzBdKQotCi0gIGlmIG5vdCBTSFVGRkxFRF9G
SUxURVJFRF9URVNUUzoKLSAgICBTSFVGRkxFRF9GSUxURVJFRF9URVNUUy5leHRlbmQoR2V0VGVz
dHNGb3JBbGxJdGVyYXRpb25zKAotICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNl
ZWRGbGFnKDEpLCBGaWx0ZXJGbGFnKFRFU1RfRklMVEVSKV0pWzBdKQotCi0gIGlmIG5vdCBTSFVG
RkxFRF9TSEFSREVEX1RFU1RTOgotICAgIFNIVUZGTEVEX1NIQVJERURfVEVTVFMuZXh0ZW5kKAot
ICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe1RPVEFMX1NIQVJEU19FTlZfVkFSOiAn
MycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBUkRfSU5ERVhfRU5WX1ZB
UjogJzEnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTaHVmZmxlRmxhZygp
LCBSYW5kb21TZWVkRmxhZygxKV0pWzBdKQotCi0KLWNsYXNzIEdUZXN0U2h1ZmZsZVVuaXRUZXN0
KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgotICAiIiJUZXN0cyB0ZXN0IHNodWZmbGluZy4i
IiIKLQotICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgQ2FsY3VsYXRlVGVzdExpc3RzKCkKLQotICBk
ZWYgdGVzdFNodWZmbGVQcmVzZXJ2ZXNOdW1iZXJPZlRlc3RzKHNlbGYpOgotICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKEFMTF9URVNUUyksIGxlbihTSFVGRkxFRF9BTExfVEVTVFMpKQotICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGVuKEFDVElWRV9URVNUUyksIGxlbihTSFVGRkxFRF9BQ1RJVkVfVEVT
VFMpKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKEZJTFRFUkVEX1RFU1RTKSwgbGVuKFNIVUZG
TEVEX0ZJTFRFUkVEX1RFU1RTKSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihTSEFSREVEX1RF
U1RTKSwgbGVuKFNIVUZGTEVEX1NIQVJERURfVEVTVFMpKQotCi0gIGRlZiB0ZXN0U2h1ZmZsZUNo
YW5nZXNUZXN0T3JkZXIoc2VsZik6Ci0gICAgc2VsZi5hc3NlcnRfKFNIVUZGTEVEX0FMTF9URVNU
UyAhPSBBTExfVEVTVFMsIFNIVUZGTEVEX0FMTF9URVNUUykKLSAgICBzZWxmLmFzc2VydF8oU0hV
RkZMRURfQUNUSVZFX1RFU1RTICE9IEFDVElWRV9URVNUUywgU0hVRkZMRURfQUNUSVZFX1RFU1RT
KQotICAgIHNlbGYuYXNzZXJ0XyhTSFVGRkxFRF9GSUxURVJFRF9URVNUUyAhPSBGSUxURVJFRF9U
RVNUUywKLSAgICAgICAgICAgICAgICAgU0hVRkZMRURfRklMVEVSRURfVEVTVFMpCi0gICAgc2Vs
Zi5hc3NlcnRfKFNIVUZGTEVEX1NIQVJERURfVEVTVFMgIT0gU0hBUkRFRF9URVNUUywKLSAgICAg
ICAgICAgICAgICAgU0hVRkZMRURfU0hBUkRFRF9URVNUUykKLQotICBkZWYgdGVzdFNodWZmbGVD
aGFuZ2VzVGVzdENhc2VPcmRlcihzZWxmKToKLSAgICBzZWxmLmFzc2VydF8oR2V0VGVzdENhc2Vz
KFNIVUZGTEVEX0FMTF9URVNUUykgIT0gR2V0VGVzdENhc2VzKEFMTF9URVNUUyksCi0gICAgICAg
ICAgICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9BTExfVEVTVFMpKQotICAgIHNlbGYuYXNz
ZXJ0XygKLSAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX0FDVElWRV9URVNUUykgIT0gR2V0
VGVzdENhc2VzKEFDVElWRV9URVNUUyksCi0gICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9B
Q1RJVkVfVEVTVFMpKQotICAgIHNlbGYuYXNzZXJ0XygKLSAgICAgICAgR2V0VGVzdENhc2VzKFNI
VUZGTEVEX0ZJTFRFUkVEX1RFU1RTKSAhPSBHZXRUZXN0Q2FzZXMoRklMVEVSRURfVEVTVFMpLAot
ICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfRklMVEVSRURfVEVTVFMpKQotICAgIHNlbGYu
YXNzZXJ0XygKLSAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX1NIQVJERURfVEVTVFMpICE9
IEdldFRlc3RDYXNlcyhTSEFSREVEX1RFU1RTKSwKLSAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZG
TEVEX1NIQVJERURfVEVTVFMpKQotCi0gIGRlZiB0ZXN0U2h1ZmZsZURvZXNOb3RSZXBlYXRUZXN0
KHNlbGYpOgotICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX0FMTF9URVNUUzoKLSAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoMSwgU0hVRkZMRURfQUxMX1RFU1RTLmNvdW50KHRlc3QpLAotICAgICAgICAg
ICAgICAgICAgICAgICAnJXMgYXBwZWFycyBtb3JlIHRoYW4gb25jZScgJSAodGVzdCwpKQotICAg
IGZvciB0ZXN0IGluIFNIVUZGTEVEX0FDVElWRV9URVNUUzoKLSAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMSwgU0hVRkZMRURfQUNUSVZFX1RFU1RTLmNvdW50KHRlc3QpLAotICAgICAgICAgICAgICAg
ICAgICAgICAnJXMgYXBwZWFycyBtb3JlIHRoYW4gb25jZScgJSAodGVzdCwpKQotICAgIGZvciB0
ZXN0IGluIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRFcXVhbCgx
LCBTSFVGRkxFRF9GSUxURVJFRF9URVNUUy5jb3VudCh0ZXN0KSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgJyVzIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UnICUgKHRlc3QsKSkKLSAgICBmb3IgdGVz
dCBpbiBTSFVGRkxFRF9TSEFSREVEX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBT
SFVGRkxFRF9TSEFSREVEX1RFU1RTLmNvdW50KHRlc3QpLAotICAgICAgICAgICAgICAgICAgICAg
ICAnJXMgYXBwZWFycyBtb3JlIHRoYW4gb25jZScgJSAodGVzdCwpKQotCi0gIGRlZiB0ZXN0U2h1
ZmZsZURvZXNOb3RDcmVhdGVOZXdUZXN0KHNlbGYpOgotICAgIGZvciB0ZXN0IGluIFNIVUZGTEVE
X0FMTF9URVNUUzoKLSAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIEFMTF9URVNUUywgJyVzIGlz
IGFuIGludmFsaWQgdGVzdCcgJSAodGVzdCwpKQotICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX0FD
VElWRV9URVNUUzoKLSAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIEFDVElWRV9URVNUUywgJyVz
IGlzIGFuIGludmFsaWQgdGVzdCcgJSAodGVzdCwpKQotICAgIGZvciB0ZXN0IGluIFNIVUZGTEVE
X0ZJTFRFUkVEX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gRklMVEVSRURfVEVT
VFMsICclcyBpcyBhbiBpbnZhbGlkIHRlc3QnICUgKHRlc3QsKSkKLSAgICBmb3IgdGVzdCBpbiBT
SFVGRkxFRF9TSEFSREVEX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hBUkRF
RF9URVNUUywgJyVzIGlzIGFuIGludmFsaWQgdGVzdCcgJSAodGVzdCwpKQotCi0gIGRlZiB0ZXN0
U2h1ZmZsZUluY2x1ZGVzQWxsVGVzdHMoc2VsZik6Ci0gICAgZm9yIHRlc3QgaW4gQUxMX1RFU1RT
OgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfQUxMX1RFU1RTLCAnJXMgaXMg
bWlzc2luZycgJSAodGVzdCwpKQotICAgIGZvciB0ZXN0IGluIEFDVElWRV9URVNUUzoKLSAgICAg
IHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIVUZGTEVEX0FDVElWRV9URVNUUywgJyVzIGlzIG1pc3Np
bmcnICUgKHRlc3QsKSkKLSAgICBmb3IgdGVzdCBpbiBGSUxURVJFRF9URVNUUzoKLSAgICAgIHNl
bGYuYXNzZXJ0Xyh0ZXN0IGluIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTLCAnJXMgaXMgbWlzc2lu
ZycgJSAodGVzdCwpKQotICAgIGZvciB0ZXN0IGluIFNIQVJERURfVEVTVFM6Ci0gICAgICBzZWxm
LmFzc2VydF8odGVzdCBpbiBTSFVGRkxFRF9TSEFSREVEX1RFU1RTLCAnJXMgaXMgbWlzc2luZycg
JSAodGVzdCwpKQotCi0gIGRlZiB0ZXN0U2h1ZmZsZUxlYXZlc0RlYXRoVGVzdHNBdEZyb250KHNl
bGYpOgotICAgIG5vbl9kZWF0aF90ZXN0X2ZvdW5kID0gRmFsc2UKLSAgICBmb3IgdGVzdCBpbiBT
SFVGRkxFRF9BQ1RJVkVfVEVTVFM6Ci0gICAgICBpZiAnRGVhdGhUZXN0LicgaW4gdGVzdDoKLSAg
ICAgICAgc2VsZi5hc3NlcnRfKG5vdCBub25fZGVhdGhfdGVzdF9mb3VuZCwKLSAgICAgICAgICAg
ICAgICAgICAgICclcyBhcHBlYXJzIGFmdGVyIGEgbm9uLWRlYXRoIHRlc3QnICUgKHRlc3QsKSkK
LSAgICAgIGVsc2U6Ci0gICAgICAgIG5vbl9kZWF0aF90ZXN0X2ZvdW5kID0gVHJ1ZQotCi0gIGRl
ZiBfVmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRlcmxlYXZlKHNlbGYsIHRlc3RzKToKLSAgICB0ZXN0
X2Nhc2VzID0gW10KLSAgICBmb3IgdGVzdCBpbiB0ZXN0czoKLSAgICAgIFt0ZXN0X2Nhc2UsIF9d
ID0gdGVzdC5zcGxpdCgnLicpCi0gICAgICBpZiB0ZXN0X2Nhc2VzIGFuZCB0ZXN0X2Nhc2VzWy0x
XSAhPSB0ZXN0X2Nhc2U6Ci0gICAgICAgIHRlc3RfY2FzZXMuYXBwZW5kKHRlc3RfY2FzZSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCB0ZXN0X2Nhc2VzLmNvdW50KHRlc3RfY2FzZSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgY2FzZSAlcyBpcyBub3QgZ3JvdXBlZCB0b2dl
dGhlciBpbiAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0X2Nhc2UsIHRlc3Rz
KSkKLQotICBkZWYgdGVzdFNodWZmbGVEb2VzTm90SW50ZXJsZWF2ZVRlc3RDYXNlcyhzZWxmKToK
LSAgICBzZWxmLl9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUoU0hVRkZMRURfQUxMX1RF
U1RTKQotICAgIHNlbGYuX1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50ZXJsZWF2ZShTSFVGRkxFRF9B
Q1RJVkVfVEVTVFMpCi0gICAgc2VsZi5fVmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRlcmxlYXZlKFNI
VUZGTEVEX0ZJTFRFUkVEX1RFU1RTKQotICAgIHNlbGYuX1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50
ZXJsZWF2ZShTSFVGRkxFRF9TSEFSREVEX1RFU1RTKQotCi0gIGRlZiB0ZXN0U2h1ZmZsZVJlc3Rv
cmVzT3JkZXJBZnRlckVhY2hJdGVyYXRpb24oc2VsZik6Ci0gICAgIyBHZXQgdGhlIHRlc3QgbGlz
dHMgaW4gYWxsIDMgaXRlcmF0aW9ucywgdXNpbmcgcmFuZG9tIHNlZWQgMSwgMiwKLSAgICAjIGFu
ZCAzIHJlc3BlY3RpdmVseS4gIEdvb2dsZSBUZXN0IHBpY2tzIGEgZGlmZmVyZW50IHNlZWQgaW4g
ZWFjaAotICAgICMgaXRlcmF0aW9uLCBhbmQgdGhpcyB0ZXN0IGRlcGVuZHMgb24gdGhlIGN1cnJl
bnQgaW1wbGVtZW50YXRpb24KLSAgICAjIHBpY2tpbmcgc3VjY2Vzc2l2ZSBudW1iZXJzLiAgVGhp
cyBkZXBlbmRlbmN5IGlzIG5vdCBpZGVhbCwgYnV0Ci0gICAgIyBtYWtlcyB0aGUgdGVzdCBtdWNo
IGVhc2llciB0byB3cml0ZS4KLSAgICBbdGVzdHNfaW5faXRlcmF0aW9uMSwgdGVzdHNfaW5faXRl
cmF0aW9uMiwgdGVzdHNfaW5faXRlcmF0aW9uM10gPSAoCi0gICAgICAgIEdldFRlc3RzRm9yQWxs
SXRlcmF0aW9ucygKLSAgICAgICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZs
YWcoMSksIFJlcGVhdEZsYWcoMyldKSkKLQotICAgICMgTWFrZSBzdXJlIHJ1bm5pbmcgdGhlIHRl
c3RzIHdpdGggcmFuZG9tIHNlZWQgMSBnZXRzIHRoZSBzYW1lCi0gICAgIyBvcmRlciBhcyBpbiBp
dGVyYXRpb24gMSBhYm92ZS4KLSAgICBbdGVzdHNfd2l0aF9zZWVkMV0gPSBHZXRUZXN0c0ZvckFs
bEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWco
MSldKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHNfaW5faXRlcmF0aW9uMSwgdGVzdHNfd2l0
aF9zZWVkMSkKLQotICAgICMgTWFrZSBzdXJlIHJ1bm5pbmcgdGhlIHRlc3RzIHdpdGggcmFuZG9t
IHNlZWQgMiBnZXRzIHRoZSBzYW1lCi0gICAgIyBvcmRlciBhcyBpbiBpdGVyYXRpb24gMiBhYm92
ZS4gIFN1Y2Nlc3MgbWVhbnMgdGhhdCBHb29nbGUgVGVzdAotICAgICMgY29ycmVjdGx5IHJlc3Rv
cmVzIHRoZSB0ZXN0IG9yZGVyIGJlZm9yZSByZS1zaHVmZmxpbmcgYXQgdGhlCi0gICAgIyBiZWdp
bm5pbmcgb2YgaXRlcmF0aW9uIDIuCi0gICAgW3Rlc3RzX3dpdGhfc2VlZDJdID0gR2V0VGVzdHNG
b3JBbGxJdGVyYXRpb25zKAotICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRG
bGFnKDIpXSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzX2luX2l0ZXJhdGlvbjIsIHRlc3Rz
X3dpdGhfc2VlZDIpCi0KLSAgICAjIE1ha2Ugc3VyZSBydW5uaW5nIHRoZSB0ZXN0cyB3aXRoIHJh
bmRvbSBzZWVkIDMgZ2V0cyB0aGUgc2FtZQotICAgICMgb3JkZXIgYXMgaW4gaXRlcmF0aW9uIDMg
YWJvdmUuICBTdWNjZXNzIG1lYW5zIHRoYXQgR29vZ2xlIFRlc3QKLSAgICAjIGNvcnJlY3RseSBy
ZXN0b3JlcyB0aGUgdGVzdCBvcmRlciBiZWZvcmUgcmUtc2h1ZmZsaW5nIGF0IHRoZQotICAgICMg
YmVnaW5uaW5nIG9mIGl0ZXJhdGlvbiAzLgotICAgIFt0ZXN0c193aXRoX3NlZWQzXSA9IEdldFRl
c3RzRm9yQWxsSXRlcmF0aW9ucygKLSAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21T
ZWVkRmxhZygzKV0pCi0gICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0c19pbl9pdGVyYXRpb24zLCB0
ZXN0c193aXRoX3NlZWQzKQotCi0gIGRlZiB0ZXN0U2h1ZmZsZUdlbmVyYXRlc05ld09yZGVySW5F
YWNoSXRlcmF0aW9uKHNlbGYpOgotICAgIFt0ZXN0c19pbl9pdGVyYXRpb24xLCB0ZXN0c19pbl9p
dGVyYXRpb24yLCB0ZXN0c19pbl9pdGVyYXRpb24zXSA9ICgKLSAgICAgICAgR2V0VGVzdHNGb3JB
bGxJdGVyYXRpb25zKAotICAgICAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVk
RmxhZygxKSwgUmVwZWF0RmxhZygzKV0pKQotCi0gICAgc2VsZi5hc3NlcnRfKHRlc3RzX2luX2l0
ZXJhdGlvbjEgIT0gdGVzdHNfaW5faXRlcmF0aW9uMiwKLSAgICAgICAgICAgICAgICAgdGVzdHNf
aW5faXRlcmF0aW9uMSkKLSAgICBzZWxmLmFzc2VydF8odGVzdHNfaW5faXRlcmF0aW9uMSAhPSB0
ZXN0c19pbl9pdGVyYXRpb24zLAotICAgICAgICAgICAgICAgICB0ZXN0c19pbl9pdGVyYXRpb24x
KQotICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0c19pbl9pdGVyYXRpb24yICE9IHRlc3RzX2luX2l0ZXJh
dGlvbjMsCi0gICAgICAgICAgICAgICAgIHRlc3RzX2luX2l0ZXJhdGlvbjIpCi0KLSAgZGVmIHRl
c3RTaHVmZmxlU2hhcmRlZFRlc3RzUHJlc2VydmVzUGFydGl0aW9uKHNlbGYpOgotICAgICMgSWYg
d2UgcnVuIE0gdGVzdHMgb24gTiBzaGFyZHMsIHRoZSBzYW1lIE0gdGVzdHMgc2hvdWxkIGJlIHJ1
biBpbgotICAgICMgdG90YWwsIHJlZ2FyZGxlc3Mgb2YgdGhlIHJhbmRvbSBzZWVkcyB1c2VkIGJ5
IHRoZSBzaGFyZHMuCi0gICAgW3Rlc3RzMV0gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe1RP
VEFMX1NIQVJEU19FTlZfVkFSOiAnMycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcwJ30sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSkK
LSAgICBbdGVzdHMyXSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7VE9UQUxfU0hBUkRTX0VO
Vl9WQVI6ICczJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hB
UkRfSU5ERVhfRU5WX1ZBUjogJzEnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMjApXSkKLSAgICBbdGVzdHMz
XSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7VE9UQUxfU0hBUkRTX0VOVl9WQVI6ICczJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBUkRfSU5ERVhfRU5W
X1ZBUjogJzInfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU2h1
ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMjUpXSkKLSAgICBzb3J0ZWRfc2hhcmRlZF90ZXN0
cyA9IHRlc3RzMSArIHRlc3RzMiArIHRlc3RzMwotICAgIHNvcnRlZF9zaGFyZGVkX3Rlc3RzLnNv
cnQoKQotICAgIHNvcnRlZF9hY3RpdmVfdGVzdHMgPSBbXQotICAgIHNvcnRlZF9hY3RpdmVfdGVz
dHMuZXh0ZW5kKEFDVElWRV9URVNUUykKLSAgICBzb3J0ZWRfYWN0aXZlX3Rlc3RzLnNvcnQoKQot
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkX2FjdGl2ZV90ZXN0cywgc29ydGVkX3NoYXJkZWRf
dGVzdHMpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rlc3RfdXRpbHMu
TWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3No
dWZmbGVfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3NodWZm
bGVfdGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzZWNmNzc3MGExNDEx
NzY2OGI0YWRlYTZmYjZmNTAyNjY3MTdkZTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVm
ZmxlX3Rlc3RfLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8vIENvcHlyaWdo
dCAyMDA5LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9u
LgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIFZlcmlmaWVzIHRoYXQgdGVzdCBzaHVmZmxpbmcg
d29ya3MuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1uYW1lc3BhY2UgewotCi11c2lu
ZyA6OnRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXI7Ci11c2luZyA6OnRlc3Rpbmc6Oklu
aXRHb29nbGVUZXN0OwotdXNpbmcgOjp0ZXN0aW5nOjpNZXNzYWdlOwotdXNpbmcgOjp0ZXN0aW5n
OjpUZXN0OwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7Ci11c2luZyA6OnRl
c3Rpbmc6OlRlc3RJbmZvOwotdXNpbmcgOjp0ZXN0aW5nOjpVbml0VGVzdDsKLXVzaW5nIDo6dGVz
dGluZzo6aW50ZXJuYWw6OlN0cmluZzsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OnNjb3Bl
ZF9wdHI7Ci0KLS8vIFRoZSB0ZXN0IG1ldGhvZHMgYXJlIGVtcHR5LCBhcyB0aGUgc29sZSBwdXJw
b3NlIG9mIHRoaXMgcHJvZ3JhbSBpcwotLy8gdG8gcHJpbnQgdGhlIHRlc3QgbmFtZXMgYmVmb3Jl
L2FmdGVyIHNodWZmbGluZy4KLQotY2xhc3MgQSA6IHB1YmxpYyBUZXN0IHt9OwotVEVTVF9GKEEs
IEEpIHt9Ci1URVNUX0YoQSwgQikge30KLQotVEVTVChBRGVhdGhUZXN0LCBBKSB7fQotVEVTVChB
RGVhdGhUZXN0LCBCKSB7fQotVEVTVChBRGVhdGhUZXN0LCBDKSB7fQotCi1URVNUKEIsIEEpIHt9
Ci1URVNUKEIsIEIpIHt9Ci1URVNUKEIsIEMpIHt9Ci1URVNUKEIsIERJU0FCTEVEX0QpIHt9Ci1U
RVNUKEIsIERJU0FCTEVEX0UpIHt9Ci0KLVRFU1QoQkRlYXRoVGVzdCwgQSkge30KLVRFU1QoQkRl
YXRoVGVzdCwgQikge30KLQotVEVTVChDLCBBKSB7fQotVEVTVChDLCBCKSB7fQotVEVTVChDLCBD
KSB7fQotVEVTVChDLCBESVNBQkxFRF9EKSB7fQotCi1URVNUKENEZWF0aFRlc3QsIEEpIHt9Ci0K
LVRFU1QoRElTQUJMRURfRCwgQSkge30KLVRFU1QoRElTQUJMRURfRCwgRElTQUJMRURfQikge30K
LQotLy8gVGhpcyBwcmludGVyIHByaW50cyB0aGUgZnVsbCB0ZXN0IG5hbWVzIG9ubHksIHN0YXJ0
aW5nIGVhY2ggdGVzdAotLy8gaXRlcmF0aW9uIHdpdGggYSAiLS0tLSIgbWFya2VyLgotY2xhc3Mg
VGVzdE5hbWVQcmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewotIHB1Ymxp
YzoKLSAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAv
KiB1bml0X3Rlc3QgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
LyogaXRlcmF0aW9uICovKSB7Ci0gICAgcHJpbnRmKCItLS0tXG4iKTsKLSAgfQotCi0gIHZpcnR1
YWwgdm9pZCBPblRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7Ci0gICAgcHJp
bnRmKCIlcy4lc1xuIiwgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3RfaW5mby5uYW1l
KCkpOwotICB9Ci19OwotCi19ICAvLyBuYW1lc3BhY2UKLQotaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIgKiphcmd2KSB7Ci0gIEluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICAvLyBSZXBs
YWNlcyB0aGUgZGVmYXVsdCBwcmludGVyIHdpdGggVGVzdE5hbWVQcmludGVyLCB3aGljaCBwcmlu
dHMKLSAgLy8gdGhlIHRlc3QgbmFtZSBvbmx5LgotICBUZXN0RXZlbnRMaXN0ZW5lcnMmIGxpc3Rl
bmVycyA9IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKTsKLSAgZGVsZXRlIGxp
c3RlbmVycy5SZWxlYXNlKGxpc3RlbmVycy5kZWZhdWx0X3Jlc3VsdF9wcmludGVyKCkpOwotICBs
aXN0ZW5lcnMuQXBwZW5kKG5ldyBUZXN0TmFtZVByaW50ZXIpOwotCi0gIHJldHVybiBSVU5fQUxM
X1RFU1RTKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X3NvbGVfaGVhZGVyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X3NvbGVfaGVhZGVyX3Rlc3QuY2MKaW5kZXggZGU5MWU4MDBmNWExMzgyOTk5ZmMyMDFmNWNm
M2NlMDQ2NGNhYTFjZS4uMWQ5NGFjNmIzYWQ5ZjlmN2RiYWRiZmIyYmY3NDliODI3MTU2MGRhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zb2xlX2hlYWRl
cl90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9o
ZWFkZXJfdGVzdC5jYwpAQCAtMjYsMTMgKzI2LDEyIEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiBtaGV1bGVAZ29vZ2xlLmNv
bSAoTWFya3VzIEhldWxlKQorCiAvLwogLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgaXQncyBw
b3NzaWJsZSB0byB1c2UgR29vZ2xlIFRlc3QgYnkgaW5jbHVkaW5nCiAvLyB0aGUgZ3Rlc3QuaCBo
ZWFkZXIgZmlsZSBhbG9uZS4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKIAogbmFtZXNwYWNlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zdHJlc3NfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc3RyZXNzX3Rlc3QuY2MKaW5kZXggZjVhZjc4Y2M2ZDNmMzk1YTAw
ZDRkMWNlODU5OWZhNWYxZGZhNzYyNi4uOTVhZGEzOWMzMzdkMGQ0ZWNlNmZmNWIzMjMyZGU5NmMz
ZDU5ODZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9z
dHJlc3NfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3N0
cmVzc190ZXN0LmNjCkBAIC0yNiwyMyArMjYsMTYgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tICha
aGFueW9uZyBXYW4pCisKIAogLy8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0UoKSBhbmQgdmFyaW91
cyBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGNhbiBiZQogLy8gdXNlZCBpbiBhIGxhcmdlIG51bWJl
ciBvZiB0aHJlYWRzIGNvbmN1cnJlbnRseS4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Cisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAotI2luY2x1ZGUgPGlvc3RyZWFtPgogI2luY2x1ZGUg
PHZlY3Rvcj4KIAotLy8gV2UgbXVzdCBkZWZpbmUgdGhpcyBtYWNybyBpbiBvcmRlciB0byAjaW5j
bHVkZQotLy8gZ3Rlc3QtaW50ZXJuYWwtaW5sLmguICBUaGlzIGlzIGhvdyBHb29nbGUgVGVzdCBw
cmV2ZW50cyBhIHVzZXIgZnJvbQotLy8gYWNjaWRlbnRhbGx5IGRlcGVuZGluZyBvbiBpdHMgaW50
ZXJuYWwgaW1wbGVtZW50YXRpb24uCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCiAj
aW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVO
VEFUSU9OXwogCiAjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQogCkBAIC01MCw3ICs0Myw2IEBAIG5h
bWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSB7CiAKIHVzaW5nIGludGVybmFsOjpOb3RpZmlj
YXRpb247Ci11c2luZyBpbnRlcm5hbDo6U3RyaW5nOwogdXNpbmcgaW50ZXJuYWw6OlRlc3RQcm9w
ZXJ0eUtleUlzOwogdXNpbmcgaW50ZXJuYWw6OlRocmVhZFdpdGhQYXJhbTsKIHVzaW5nIGludGVy
bmFsOjpzY29wZWRfcHRyOwpAQCAtNjIsMTMgKzU0LDEzIEBAIHVzaW5nIGludGVybmFsOjpzY29w
ZWRfcHRyOwogLy8gSG93IG1hbnkgdGhyZWFkcyB0byBjcmVhdGU/CiBjb25zdCBpbnQga1RocmVh
ZENvdW50ID0gNTA7CiAKLVN0cmluZyBJZFRvS2V5KGludCBpZCwgY29uc3QgY2hhciogc3VmZml4
KSB7CitzdGQ6OnN0cmluZyBJZFRvS2V5KGludCBpZCwgY29uc3QgY2hhciogc3VmZml4KSB7CiAg
IE1lc3NhZ2Uga2V5OwogICBrZXkgPDwgImtleV8iIDw8IGlkIDw8ICJfIiA8PCBzdWZmaXg7CiAg
IHJldHVybiBrZXkuR2V0U3RyaW5nKCk7CiB9CiAKLVN0cmluZyBJZFRvU3RyaW5nKGludCBpZCkg
eworc3RkOjpzdHJpbmcgSWRUb1N0cmluZyhpbnQgaWQpIHsKICAgTWVzc2FnZSBpZF9tZXNzYWdl
OwogICBpZF9tZXNzYWdlIDw8IGlkOwogICByZXR1cm4gaWRfbWVzc2FnZS5HZXRTdHJpbmcoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGVzdF9tYWNy
b19zdGFja19mb290cHJpbnRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfdGVzdF9tYWNyb19zdGFja19mb290cHJpbnRfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDhk
YjA1MDEyY2MzMGUwZWRmNGExMzU0ZmYzOTJjOTJkMDAwYmYwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0X21hY3JvX3N0YWNrX2Zvb3Rw
cmludF90ZXN0LmNjCkBAIC0wLDAgKzEsODkgQEAKKy8vIENvcHlyaWdodCAyMDEzLCBHb29nbGUg
SW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
Ly8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworLy8KKy8vIEVhY2ggVEVTVCgpIGV4cGFuZHMgdG8gc29tZSBz
dGF0aWMgcmVnaXN0cmF0aW9uIGxvZ2ljLiAgR0NDIHB1dHMgYWxsCisvLyBzdWNoIHN0YXRpYyBp
bml0aWFsaXphdGlvbiBsb2dpYyBmb3IgYSB0cmFuc2xhdGlvbiB1bml0IGluIGEgY29tbW9uLAor
Ly8gaW50ZXJuYWwgZnVuY3Rpb24uICBTaW5jZSBHb29nbGUncyBidWlsZCBzeXN0ZW0gcmVzdHJp
Y3RzIGhvdyBtdWNoCisvLyBzdGFjayBzcGFjZSBhIGZ1bmN0aW9uIGNhbiB1c2UsIHRoZXJlJ3Mg
YSBsaW1pdCBvbiBob3cgbWFueSBURVNUKClzCisvLyBvbmUgY2FuIHB1dCBpbiBhIHNpbmdsZSBD
KysgdGVzdCBmaWxlLiAgVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBhIGxhcmdlCisvLyBudW1iZXIg
b2YgVEVTVCgpcyBjYW4gYmUgZGVmaW5lZCBpbiB0aGUgc2FtZSB0cmFuc2xhdGlvbiB1bml0Lgor
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworLy8gVGhpcyBtYWNybyBkZWZpbmVzIDEwIGR1
bW15IHRlc3RzLgorI2RlZmluZSBURU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1lKSBcCisgIFRFU1Qo
dGVzdF9jYXNlX25hbWUsIFQwKSB7fSBcCisgIFRFU1QodGVzdF9jYXNlX25hbWUsIFQxKSB7fSBc
CisgIFRFU1QodGVzdF9jYXNlX25hbWUsIFQyKSB7fSBcCisgIFRFU1QodGVzdF9jYXNlX25hbWUs
IFQzKSB7fSBcCisgIFRFU1QodGVzdF9jYXNlX25hbWUsIFQ0KSB7fSBcCisgIFRFU1QodGVzdF9j
YXNlX25hbWUsIFQ1KSB7fSBcCisgIFRFU1QodGVzdF9jYXNlX25hbWUsIFQ2KSB7fSBcCisgIFRF
U1QodGVzdF9jYXNlX25hbWUsIFQ3KSB7fSBcCisgIFRFU1QodGVzdF9jYXNlX25hbWUsIFQ4KSB7
fSBcCisgIFRFU1QodGVzdF9jYXNlX25hbWUsIFQ5KSB7fQorCisvLyBUaGlzIG1hY3JvIGRlZmlu
ZXMgMTAwIGR1bW15IHRlc3RzLgorI2RlZmluZSBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFt
ZV9wcmVmaXgpIFwKKyAgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgMCkgXAor
ICBURU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyAxKSBcCisgIFRFTl9URVNUU18o
dGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDIpIFwKKyAgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFt
ZV9wcmVmaXggIyMgMykgXAorICBURU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyA0
KSBcCisgIFRFTl9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDUpIFwKKyAgVEVOX1RF
U1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgNikgXAorICBURU5fVEVTVFNfKHRlc3RfY2Fz
ZV9uYW1lX3ByZWZpeCAjIyA3KSBcCisgIFRFTl9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4
ICMjIDgpIFwKKyAgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgOSkKKworLy8g
VGhpcyBtYWNybyBkZWZpbmVzIDEwMDAgZHVtbXkgdGVzdHMuCisjZGVmaW5lIFRIT1VTQU5EX1RF
U1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXgpIFwKKyAgSFVORFJFRF9URVNUU18odGVzdF9jYXNl
X25hbWVfcHJlZml4ICMjIDApIFwKKyAgSFVORFJFRF9URVNUU18odGVzdF9jYXNlX25hbWVfcHJl
Zml4ICMjIDEpIFwKKyAgSFVORFJFRF9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDIp
IFwKKyAgSFVORFJFRF9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDMpIFwKKyAgSFVO
RFJFRF9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDQpIFwKKyAgSFVORFJFRF9URVNU
U18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDUpIFwKKyAgSFVORFJFRF9URVNUU18odGVzdF9j
YXNlX25hbWVfcHJlZml4ICMjIDYpIFwKKyAgSFVORFJFRF9URVNUU18odGVzdF9jYXNlX25hbWVf
cHJlZml4ICMjIDcpIFwKKyAgSFVORFJFRF9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMj
IDgpIFwKKyAgSFVORFJFRF9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDkpCisKKy8v
IEVuc3VyZXMgdGhhdCB3ZSBjYW4gZGVmaW5lIDEwMDAgVEVTVCgpcyBpbiB0aGUgc2FtZSB0cmFu
c2xhdGlvbgorLy8gdW5pdC4KK1RIT1VTQU5EX1RFU1RTXyhUKQorCitpbnQgbWFpbihpbnQgYXJn
YywgY2hhciAqKmFyZ3YpIHsKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3Yp
OworCisgIC8vIFdlIGRvbid0IGFjdHVhbGx5IG5lZWQgdG8gcnVuIHRoZSBkdW1teSB0ZXN0cyAt
IHRoZSBwdXJwb3NlIGlzIHRvCisgIC8vIGVuc3VyZSB0aGF0IHRoZXkgY29tcGlsZS4KKyAgcmV0
dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X3Rlc3RfdXRpbHMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3Rf
dXRpbHMucHkKaW5kZXggZTBmNTk3M2U3ZWE2ZjgxZTY2NmMzMTIxYzNjOGZhODQzZjQzNGY2MS4u
NDNjYmE4ZjRjZDYxZGZmZjNhMWE1MjEwMWJlZDNlNzM0YTVlMWI1NCAxMDA3NTUKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5CisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGVzdF91dGlscy5weQpAQCAtMSw1ICsxLDMg
QEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwogIyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIElu
Yy4KICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKQEAgLTI5LDIwICsyNywyMSBAQAogIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotIiIiVW5pdCB0ZXN0IHV0aWxpdGllcyBmb3IgR29v
Z2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yay4iIiIKKyIiIlVuaXQgdGVzdCB1dGlsaXRpZXMgZm9y
IEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsuIiIiCisjIFN1cHByZXNz
ZXMgdGhlICdJbXBvcnQgbm90IGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUnIGxpbnQgY29tcGxhaW50
LgorIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2MjA0CisKK2ltcG9ydCBvcworaW1wb3J0IHN5cwog
Ci1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJworSVNfV0lORE9X
UyA9IG9zLm5hbWUgPT0gJ250JworSVNfQ1lHV0lOID0gb3MubmFtZSA9PSAncG9zaXgnIGFuZCAn
Q1lHV0lOJyBpbiBvcy51bmFtZSgpWzBdCiAKIGltcG9ydCBhdGV4aXQKLWltcG9ydCBvcwogaW1w
b3J0IHNodXRpbAotaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgdW5pdHRlc3QK
LV90ZXN0X21vZHVsZSA9IHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QgYXMgX3Rlc3RfbW9kdWxl
CiAKLSMgU3VwcHJlc3NlcyB0aGUgJ0ltcG9ydCBub3QgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZScg
bGludCBjb21wbGFpbnQuCi0jIHB5bGludDogZGlzYWJsZS1tc2c9QzYyMDQKIHRyeToKICAgaW1w
b3J0IHN1YnByb2Nlc3MKICAgX1NVQlBST0NFU1NfTU9EVUxFX0FWQUlMQUJMRSA9IFRydWUKQEAg
LTUzLDE4ICs1MiwzMCBAQCBleGNlcHQ6CiAKIEdURVNUX09VVFBVVF9WQVJfTkFNRSA9ICdHVEVT
VF9PVVRQVVQnCiAKLUlTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdudCcKLUlTX0NZR1dJTiA9IG9z
Lm5hbWUgPT0gJ3Bvc2l4JyBhbmQgJ0NZR1dJTicgaW4gb3MudW5hbWUoKVswXQorIyBUaGUgZW52
aXJvbm1lbnQgdmFyaWFibGUgZm9yIHNwZWNpZnlpbmcgdGhlIHBhdGggdG8gdGhlIHByZW1hdHVy
ZS1leGl0IGZpbGUuCitQUkVNQVRVUkVfRVhJVF9GSUxFX0VOVl9WQVIgPSAnVEVTVF9QUkVNQVRV
UkVfRVhJVF9GSUxFJworCitlbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkKKworCitkZWYgU2V0
RW52VmFyKGVudl92YXIsIHZhbHVlKToKKyAgIiIiU2V0cy91bnNldHMgYW4gZW52aXJvbm1lbnQg
dmFyaWFibGUgdG8gYSBnaXZlbiB2YWx1ZS4iIiIKKworICBpZiB2YWx1ZSBpcyBub3QgTm9uZToK
KyAgICBlbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKKyAgZWxpZiBlbnZfdmFyIGluIGVudmlyb246
CisgICAgZGVsIGVudmlyb25bZW52X3Zhcl0KKwogCiAjIEhlcmUgd2UgZXhwb3NlIGEgY2xhc3Mg
ZnJvbSBhIHBhcnRpY3VsYXIgbW9kdWxlLCBkZXBlbmRpbmcgb24gdGhlCiAjIGVudmlyb25tZW50
LiBUaGUgY29tbWVudCBzdXBwcmVzc2VzIHRoZSAnSW52YWxpZCB2YXJpYWJsZSBuYW1lJyBsaW50
CiAjIGNvbXBsYWludC4KLVRlc3RDYXNlID0gX3Rlc3RfbW9kdWxlLlRlc3RDYXNlICAjIHB5bGlu
dDogZGlzYWJsZS1tc2c9QzY0MDkKK1Rlc3RDYXNlID0gX3Rlc3RfbW9kdWxlLlRlc3RDYXNlICAj
IHB5bGludDogZGlzYWJsZT1DNjQwOQogCiAjIEluaXRpYWxseSBtYXBzIGEgZmxhZyB0byBpdHMg
ZGVmYXVsdCB2YWx1ZS4gQWZ0ZXIKICMgX1BhcnNlQW5kU3RyaXBHVGVzdEZsYWdzKCkgaXMgY2Fs
bGVkLCBtYXBzIGEgZmxhZyB0byBpdHMgYWN0dWFsIHZhbHVlLgotX2ZsYWdfbWFwID0geydndGVz
dF9zb3VyY2VfZGlyJzogb3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2WzBdKSwKLSAgICAgICAgICAg
ICAnZ3Rlc3RfYnVpbGRfZGlyJzogb3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2WzBdKX0KK19mbGFn
X21hcCA9IHsnc291cmNlX2Rpcic6IG9zLnBhdGguZGlybmFtZShzeXMuYXJndlswXSksCisgICAg
ICAgICAgICAgJ2J1aWxkX2Rpcic6IG9zLnBhdGguZGlybmFtZShzeXMuYXJndlswXSl9CiBfZ3Rl
c3RfZmxhZ3NfYXJlX3BhcnNlZCA9IEZhbHNlCiAKIApAQCAtNzMsNyArODQsNyBAQCBkZWYgX1Bh
cnNlQW5kU3RyaXBHVGVzdEZsYWdzKGFyZ3YpOgogCiAgICMgU3VwcHJlc3NlcyB0aGUgbGludCBj
b21wbGFpbnQgYWJvdXQgYSBnbG9iYWwgdmFyaWFibGUgc2luY2Ugd2UgbmVlZCBpdAogICAjIGhl
cmUgdG8gbWFpbnRhaW4gbW9kdWxlLXdpZGUgc3RhdGUuCi0gIGdsb2JhbCBfZ3Rlc3RfZmxhZ3Nf
YXJlX3BhcnNlZCAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPVcwNjAzCisgIGdsb2JhbCBfZ3Rlc3Rf
ZmxhZ3NfYXJlX3BhcnNlZCAgIyBweWxpbnQ6IGRpc2FibGU9VzA2MDMKICAgaWYgX2d0ZXN0X2Zs
YWdzX2FyZV9wYXJzZWQ6CiAgICAgcmV0dXJuCiAKQEAgLTExMSwxMyArMTIyLDEzIEBAIGRlZiBH
ZXRGbGFnKGZsYWcpOgogZGVmIEdldFNvdXJjZURpcigpOgogICAiIiJSZXR1cm5zIHRoZSBhYnNv
bHV0ZSBwYXRoIG9mIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIC5weSBmaWxlcyBhcmUuIiIiCiAK
LSAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChHZXRGbGFnKCdndGVzdF9zb3VyY2VfZGlyJykpCisg
IHJldHVybiBvcy5wYXRoLmFic3BhdGgoR2V0RmxhZygnc291cmNlX2RpcicpKQogCiAKIGRlZiBH
ZXRCdWlsZERpcigpOgogICAiIiJSZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBkaXJl
Y3Rvcnkgd2hlcmUgdGhlIHRlc3QgYmluYXJpZXMgYXJlLiIiIgogCi0gIHJldHVybiBvcy5wYXRo
LmFic3BhdGgoR2V0RmxhZygnZ3Rlc3RfYnVpbGRfZGlyJykpCisgIHJldHVybiBvcy5wYXRoLmFi
c3BhdGgoR2V0RmxhZygnYnVpbGRfZGlyJykpCiAKIAogX3RlbXBfZGlyID0gTm9uZQpAQCAtMTMw
LDggKzE0MSw2IEBAIGF0ZXhpdC5yZWdpc3RlcihfUmVtb3ZlVGVtcERpcikKIAogCiBkZWYgR2V0
VGVtcERpcigpOgotICAiIiJSZXR1cm5zIGEgZGlyZWN0b3J5IGZvciB0ZW1wb3JhcnkgZmlsZXMu
IiIiCi0KICAgZ2xvYmFsIF90ZW1wX2RpcgogICBpZiBub3QgX3RlbXBfZGlyOgogICAgIF90ZW1w
X2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQpAQCAtMTYwLDEzICsxNjksOSBAQCBkZWYgR2V0VGVz
dEV4ZWN1dGFibGVQYXRoKGV4ZWN1dGFibGVfbmFtZSwgYnVpbGRfZGlyPU5vbmUpOgogCiAgIGlm
IG5vdCBvcy5wYXRoLmV4aXN0cyhwYXRoKToKICAgICBtZXNzYWdlID0gKAotICAgICAgICAnVW5h
YmxlIHRvIGZpbmQgdGhlIHRlc3QgYmluYXJ5LiBQbGVhc2UgbWFrZSBzdXJlIHRvIHByb3ZpZGUg
cGF0aFxuJwotICAgICAgICAndG8gdGhlIGJpbmFyeSB2aWEgdGhlIC0tZ3Rlc3RfYnVpbGRfZGly
IGZsYWcgb3IgdGhlIEdURVNUX0JVSUxEX0RJUlxuJwotICAgICAgICAnZW52aXJvbm1lbnQgdmFy
aWFibGUuIEZvciBjb252ZW5pZW50IHVzZSwgaW52b2tlIHRoaXMgc2NyaXB0IHZpYVxuJwotICAg
ICAgICAnbWtfdGVzdC5weS5cbicKLSAgICAgICAgIyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBj
aGFuZ2UgbWtfdGVzdC5weSB0byB0ZXN0LnB5IGFmdGVyIHJlbmFtaW5nCi0gICAgICAgICMgdGhl
IGZpbGUuCi0gICAgICAgICdQbGVhc2UgcnVuIG1rX3Rlc3QucHkgLWggZm9yIGhlbHAuJykKKyAg
ICAgICAgJ1VuYWJsZSB0byBmaW5kIHRoZSB0ZXN0IGJpbmFyeSAiJXMiLiBQbGVhc2UgbWFrZSBz
dXJlIHRvIHByb3ZpZGVcbicKKyAgICAgICAgJ2EgcGF0aCB0byB0aGUgYmluYXJ5IHZpYSB0aGUg
LS1idWlsZF9kaXIgZmxhZyBvciB0aGUgQlVJTERfRElSXG4nCisgICAgICAgICdlbnZpcm9ubWVu
dCB2YXJpYWJsZS4nICUgcGF0aCkKICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCBtZXNzYWdlCiAg
ICAgc3lzLmV4aXQoMSkKIApAQCAtMjM0LDcgKzIzOSw3IEBAIGNsYXNzIFN1YnByb2Nlc3M6CiAg
ICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihjb21tYW5kLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN0ZGVyciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGN3ZD13b3JraW5nX2RpciwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUs
IGVudj1lbnYpCi0gICAgICAjIGNvbW11bmljYXRlIHJldHVybnMgYSB0dXBsZSB3aXRoIHRoZSBm
aWxlIG9iZWN0IGZvciB0aGUgY2hpbGQncworICAgICAgIyBjb21tdW5pY2F0ZSByZXR1cm5zIGEg
dHVwbGUgd2l0aCB0aGUgZmlsZSBvYmplY3QgZm9yIHRoZSBjaGlsZCdzCiAgICAgICAjIG91dHB1
dC4KICAgICAgIHNlbGYub3V0cHV0ID0gcC5jb21tdW5pY2F0ZSgpWzBdCiAgICAgICBzZWxmLl9y
ZXR1cm5fY29kZSA9IHAucmV0dXJuY29kZQpAQCAtMjQ1LDcgKzI1MCw3IEBAIGNsYXNzIFN1YnBy
b2Nlc3M6CiAgICAgICAgICMgQ2hhbmdlcyBtYWRlIGJ5IG9zLmVudmlyb24uY2xlYXIgYXJlIG5v
dCBpbmhlcml0YWJsZSBieSBjaGlsZAogICAgICAgICAjIHByb2Nlc3NlcyB1bnRpbCBQeXRob24g
Mi42LiBUbyBwcm9kdWNlIGluaGVyaXRhYmxlIGNoYW5nZXMgd2UgaGF2ZQogICAgICAgICAjIHRv
IGRlbGV0ZSBlbnZpcm9ubWVudCBpdGVtcyB3aXRoIHRoZSBkZWwgc3RhdGVtZW50LgotICAgICAg
ICBmb3Iga2V5IGluIGRlc3Q6CisgICAgICAgIGZvciBrZXkgaW4gZGVzdC5rZXlzKCk6CiAgICAg
ICAgICAgZGVsIGRlc3Rba2V5XQogICAgICAgICBkZXN0LnVwZGF0ZShzcmMpCiAKQEAgLTMwMSw3
ICszMDYsNyBAQCBkZWYgTWFpbigpOgogICBfUGFyc2VBbmRTdHJpcEdUZXN0RmxhZ3Moc3lzLmFy
Z3YpCiAgICMgVGhlIHRlc3RlZCBiaW5hcmllcyBzaG91bGQgbm90IGJlIHdyaXRpbmcgWE1MIG91
dHB1dCBmaWxlcyB1bmxlc3MgdGhlCiAgICMgc2NyaXB0IGV4cGxpY2l0bHkgaW5zdHJ1Y3RzIHRo
ZW0gdG8uCi0gICMgVE9ETyh2bGFkbEBnb29nbGUuY29tKTogTW92ZSB0aGlzIGludG8gU3VicHJv
Y2VzcyB3aGVuIHdlIGltcGxlbWVudAorICAjIEZJWE1FOiBNb3ZlIHRoaXMgaW50byBTdWJwcm9j
ZXNzIHdoZW4gd2UgaW1wbGVtZW50CiAgICMgcGFzc2luZyBlbnZpcm9ubWVudCBpbnRvIGl0IGFz
IGEgcGFyYW1ldGVyLgogICBpZiBHVEVTVF9PVVRQVVRfVkFSX05BTUUgaW4gb3MuZW52aXJvbjoK
ICAgICBkZWwgb3MuZW52aXJvbltHVEVTVF9PVVRQVVRfVkFSX05BTUVdCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RicmlkZ2VfdGVzdC5weSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGVzdGJyaWRnZV90ZXN0LnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg3ZmZhZDczZDQwMDY1Mjk4ZjMwNTAwZGU4MjRkODA4YjY1NzFkOGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RicmlkZ2Vf
dGVzdC5weQpAQCAtMCwwICsxLDYzIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29w
eXJpZ2h0IDIwMTggR29vZ2xlIExMQy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisiIiJWZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IHVzZXMgZmlsdGVyIHByb3ZpZGVk
IHZpYSB0ZXN0YnJpZGdlLiIiIgorCitpbXBvcnQgb3MKKworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRp
bHMKKworYmluYXJ5X25hbWUgPSAnZ3Rlc3RfdGVzdGJyaWRnZV90ZXN0XycKK0NPTU1BTkQgPSBn
dGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aChiaW5hcnlfbmFtZSkKK1RFU1RC
UklER0VfTkFNRSA9ICdURVNUQlJJREdFX1RFU1RfT05MWScKKworCitkZWYgQXNzZXJ0KGNvbmRp
dGlvbik6CisgIGlmIG5vdCBjb25kaXRpb246CisgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKKwor
CitjbGFzcyBHVGVzdFRlc3RGaWx0ZXJUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgor
CisgIGRlZiB0ZXN0VGVzdEV4ZWN1dGlvbklzRmlsdGVyZWQoc2VsZik6CisgICAgIiIiVGVzdHMg
dGhhdCB0aGUgdGVzdCBmaWx0ZXIgaXMgcGlja2VkIHVwIGZyb20gdGhlIHRlc3RicmlkZ2UgZW52
IHZhci4iIiIKKyAgICBzdWJwcm9jZXNzX2VudiA9IG9zLmVudmlyb24uY29weSgpCisKKyAgICBz
dWJwcm9jZXNzX2VudltURVNUQlJJREdFX05BTUVdID0gJyouVGVzdFRoYXRTdWNjZWVkcycKKyAg
ICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKENPTU1BTkQsIGVudj1zdWJwcm9jZXNz
X2VudikKKworICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIHAuZXhpdF9jb2RlKQorCisgICAgQXNz
ZXJ0KCdmaWx0ZXIgPSAqLlRlc3RUaGF0U3VjY2VlZHMnIGluIHAub3V0cHV0KQorICAgIEFzc2Vy
dCgnWyAgICAgICBPSyBdIFRlc3RGaWx0ZXJUZXN0LlRlc3RUaGF0U3VjY2VlZHMnIGluIHAub3V0
cHV0KQorICAgIEFzc2VydCgnWyAgUEFTU0VEICBdIDEgdGVzdC4nIGluIHAub3V0cHV0KQorCisK
K2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RicmlkZ2Vf
dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RicmlkZ2Vf
dGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ2MTdiMjA5ZTEwYTlkMTc5ODM2OGUyNjQ2NWFhYTYyNzE1
ZjBlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfdGVzdGJyaWRnZV90ZXN0Xy5jYwpAQCAtMCwwICsxLDQzIEBACisvLyBDb3B5cmlnaHQgMjAx
OCwgR29vZ2xlIExMQy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gVGhpcyBwcm9ncmFtIGlzIG1lYW50
IHRvIGJlIHJ1biBieSBndGVzdF90ZXN0X2ZpbHRlcl90ZXN0LnB5LiAgRG8gbm90IHJ1bgorLy8g
aXQgZGlyZWN0bHkuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisvLyBUaGVzZSB0ZXN0
cyBhcmUgdXNlZCB0byBkZXRlY3QgaWYgZmlsdGVyaW5nIGlzIHdvcmtpbmcuIE9ubHkKKy8vICdU
ZXN0VGhhdFN1Y2NlZWRzJyBzaG91bGQgZXZlciBydW4uCisKK1RFU1QoVGVzdEZpbHRlclRlc3Qs
IFRlc3RUaGF0U3VjY2VlZHMpIHt9CisKK1RFU1QoVGVzdEZpbHRlclRlc3QsIFRlc3RUaGF0RmFp
bHMpIHsKKyAgQVNTRVJUX1RSVUUoZmFsc2UpIDw8ICJUaGlzIHRlc3Qgc2hvdWxkIG5ldmVyIGJl
IHJ1bi4iOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF90aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfZXhfdGVzdC5jYwppbmRleCA4YmY5ZGM5MDViNWZm
ODNhYzAyMTA0MTM0MzU4MGY5MDk3NTQ4M2NlLi45M2Y1OWQ0OWNmZGI5NDc0ZGNhNjIyYzE3YTJj
OTY0YWIwYmQ1OGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X3Rocm93X29uX2ZhaWx1cmVfZXhfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfZXhfdGVzdC5jYwpAQCAtMjYsMTIgKzI2
LDExIEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0v
LwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCiAKIC8vIFRlc3Rz
IEdvb2dsZSBUZXN0J3MgdGhyb3ctb24tZmFpbHVyZSBtb2RlIHdpdGggZXhjZXB0aW9ucyBlbmFi
bGVkLgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgogCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0
LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJl
X3Rlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDU2NzhmZmVhZjZmYTYxZWY3
ZGNiNDViOGYzNGEwMzQxMTkxYWJmNmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJvd19v
bl9mYWlsdXJlX3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6
Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVGVzdHMgR29vZ2xlIFRl
c3QncyB0aHJvdy1vbi1mYWlsdXJlIG1vZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLgotCi1U
aGlzIHNjcmlwdCBpbnZva2VzIGd0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8gKGEgcHJvZ3Jh
bSB3cml0dGVuIHdpdGgKLUdvb2dsZSBUZXN0KSB3aXRoIGRpZmZlcmVudCBlbnZpcm9ubWVudHMg
YW5kIGNvbW1hbmQgbGluZSBmbGFncy4KLSIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUu
Y29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWltcG9ydCBndGVzdF90ZXN0X3V0aWxz
Ci0KLQotIyBDb25zdGFudHMuCi0KLSMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciBlbmFibGlu
Zy9kaXNhYmxpbmcgdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZS4KLVRIUk9XX09OX0ZBSUxVUkUg
PSAnZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZScKLQotIyBQYXRoIHRvIHRoZSBndGVzdF90aHJvd19v
bl9mYWlsdXJlX3Rlc3RfIHByb2dyYW0sIGNvbXBpbGVkIHdpdGgKLSMgZXhjZXB0aW9ucyBkaXNh
YmxlZC4KLUVYRV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgo
Ci0gICAgJ2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8nKQotCi0KLSMgVXRpbGl0aWVzLgot
Ci0KLWRlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgotICAiIiJTZXRzIGFuIGVudmlyb25t
ZW50IHZhcmlhYmxlIHRvIGEgZ2l2ZW4gdmFsdWU7IHVuc2V0cyBpdCB3aGVuIHRoZQotICBnaXZl
biB2YWx1ZSBpcyBOb25lLgotICAiIiIKLQotICBlbnZfdmFyID0gZW52X3Zhci51cHBlcigpCi0g
IGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAgIG9zLmVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQot
ICBlbGlmIGVudl92YXIgaW4gb3MuZW52aXJvbjoKLSAgICBkZWwgb3MuZW52aXJvbltlbnZfdmFy
XQotCi0KLWRlZiBSdW4oY29tbWFuZCk6Ci0gICIiIlJ1bnMgYSBjb21tYW5kOyByZXR1cm5zIFRy
dWUvRmFsc2UgaWYgaXRzIGV4aXQgY29kZSBpcy9pc24ndCAwLiIiIgotCi0gIHByaW50ICdSdW5u
aW5nICIlcyIuIC4gLicgJSAnICcuam9pbihjb21tYW5kKQotICBwID0gZ3Rlc3RfdGVzdF91dGls
cy5TdWJwcm9jZXNzKGNvbW1hbmQpCi0gIHJldHVybiBwLmV4aXRlZCBhbmQgcC5leGl0X2NvZGUg
PT0gMAotCi0KLSMgVGhlIHRlc3RzLiAgVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHJlZmFjdG9yIHRo
ZSBjbGFzcyB0byBzaGFyZSBjb21tb24KLSMgbG9naWMgd2l0aCBjb2RlIGluIGd0ZXN0X2JyZWFr
X29uX2ZhaWx1cmVfdW5pdHRlc3QucHkuCi1jbGFzcyBUaHJvd09uRmFpbHVyZVRlc3QoZ3Rlc3Rf
dGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gICIiIlRlc3RzIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1v
ZGUuIiIiCi0KLSAgZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBlbnZfdmFyX3ZhbHVlLCBmbGFnX3Zh
bHVlLCBzaG91bGRfZmFpbCk6Ci0gICAgIiIiUnVucyBndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rl
c3RfIGFuZCB2ZXJpZmllcyB0aGF0IGl0IGRvZXMKLSAgICAob3IgZG9lcyBub3QpIGV4aXQgd2l0
aCBhIG5vbi16ZXJvIGNvZGUuCi0KLSAgICBBcmdzOgotICAgICAgZW52X3Zhcl92YWx1ZTogICAg
dmFsdWUgb2YgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHZhcmlhYmxlOyBOb25lIGlmIHRoZSB2YXJpYWJsZSBzaG91bGQgYmUg
dW5zZXQuCi0gICAgICBmbGFnX3ZhbHVlOiAgICAgICB2YWx1ZSBvZiB0aGUgLS1ndGVzdF9icmVh
a19vbl9mYWlsdXJlIGZsYWc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBm
bGFnIHNob3VsZCBub3QgYmUgcHJlc2VudC4KLSAgICAgIHNob3VsZF9mYWlsOiAgICAgIFRydWUg
aWZmIHRoZSBwcm9ncmFtIGlzIGV4cGVjdGVkIHRvIGZhaWwuCi0gICAgIiIiCi0KLSAgICBTZXRF
bnZWYXIoVEhST1dfT05fRkFJTFVSRSwgZW52X3Zhcl92YWx1ZSkKLQotICAgIGlmIGVudl92YXJf
dmFsdWUgaXMgTm9uZToKLSAgICAgIGVudl92YXJfdmFsdWVfbXNnID0gJyBpcyBub3Qgc2V0Jwot
ICAgIGVsc2U6Ci0gICAgICBlbnZfdmFyX3ZhbHVlX21zZyA9ICc9JyArIGVudl92YXJfdmFsdWUK
LQotICAgIGlmIGZsYWdfdmFsdWUgaXMgTm9uZToKLSAgICAgIGZsYWcgPSAnJwotICAgIGVsaWYg
ZmxhZ192YWx1ZSA9PSAnMCc6Ci0gICAgICBmbGFnID0gJy0tJXM9MCcgJSBUSFJPV19PTl9GQUlM
VVJFCi0gICAgZWxzZToKLSAgICAgIGZsYWcgPSAnLS0lcycgJSBUSFJPV19PTl9GQUlMVVJFCi0K
LSAgICBjb21tYW5kID0gW0VYRV9QQVRIXQotICAgIGlmIGZsYWc6Ci0gICAgICBjb21tYW5kLmFw
cGVuZChmbGFnKQotCi0gICAgaWYgc2hvdWxkX2ZhaWw6Ci0gICAgICBzaG91bGRfb3Jfbm90ID0g
J3Nob3VsZCcKLSAgICBlbHNlOgotICAgICAgc2hvdWxkX29yX25vdCA9ICdzaG91bGQgbm90Jwot
Ci0gICAgZmFpbGVkID0gbm90IFJ1bihjb21tYW5kKQotCi0gICAgU2V0RW52VmFyKFRIUk9XX09O
X0ZBSUxVUkUsIE5vbmUpCi0KLSAgICBtc2cgPSAoJ3doZW4gJXMlcywgYW4gYXNzZXJ0aW9uIGZh
aWx1cmUgaW4gIiVzIiAlcyBjYXVzZSBhIG5vbi16ZXJvICcKLSAgICAgICAgICAgJ2V4aXQgY29k
ZS4nICUKLSAgICAgICAgICAgKFRIUk9XX09OX0ZBSUxVUkUsIGVudl92YXJfdmFsdWVfbXNnLCAn
ICcuam9pbihjb21tYW5kKSwKLSAgICAgICAgICAgIHNob3VsZF9vcl9ub3QpKQotICAgIHNlbGYu
YXNzZXJ0XyhmYWlsZWQgPT0gc2hvdWxkX2ZhaWwsIG1zZykKLQotICBkZWYgdGVzdERlZmF1bHRC
ZWhhdmlvcihzZWxmKToKLSAgICAiIiJUZXN0cyB0aGUgYmVoYXZpb3Igb2YgdGhlIGRlZmF1bHQg
bW9kZS4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwgZmxh
Z192YWx1ZT1Ob25lLCBzaG91bGRfZmFpbD1GYWxzZSkKLQotICBkZWYgdGVzdFRocm93T25GYWls
dXJlRW52VmFyKHNlbGYpOgotICAgICIiIlRlc3RzIHVzaW5nIHRoZSBHVEVTVF9USFJPV19PTl9G
QUlMVVJFIGVudmlyb25tZW50IHZhcmlhYmxlLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnko
ZW52X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT1Ob25l
LAotICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPUZhbHNlKQotICAgIHNlbGYuUnVu
QW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdf
dmFsdWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1UcnVlKQotCi0g
IGRlZiB0ZXN0VGhyb3dPbkZhaWx1cmVGbGFnKHNlbGYpOgotICAgICIiIlRlc3RzIHVzaW5nIHRo
ZSAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmUgZmxhZy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVy
aWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVl
PScwJywKLSAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1GYWxzZSkKLSAgICBzZWxm
LlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAg
ZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9VHJ1ZSkK
LQotICBkZWYgdGVzdFRocm93T25GYWlsdXJlRmxhZ092ZXJyaWRlc0VudlZhcihzZWxmKToKLSAg
ICAiIiJUZXN0cyB0aGF0IC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZSBvdmVycmlkZXMgR1RFU1Rf
VEhST1dfT05fRkFJTFVSRS4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFs
dWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAnLAotICAgICAgICAg
ICAgICAgICAgICAgIHNob3VsZF9mYWlsPUZhbHNlKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVu
dl92YXJfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAot
ICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPVRydWUpCi0gICAgc2VsZi5SdW5BbmRW
ZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1
ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9RmFsc2UpCi0gICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAg
ZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9VHJ1ZSkK
LQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBndGVzdF90ZXN0X3V0aWxzLk1haW4o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJvd19v
bl9mYWlsdXJlX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90
aHJvd19vbl9mYWlsdXJlX3Rlc3RfLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
OGZiZDVhNzZkYzkyMDZmNGEwMjk1MTRiODc2ZGMwMTQxZTM2YmZhLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0Xy5jYworKysgL2Rldi9udWxsCkBAIC0xLDU2
ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8v
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8g
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8v
Ci0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIFRlc3RzIEdv
b2dsZSBUZXN0J3MgdGhyb3ctb24tZmFpbHVyZSBtb2RlIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxl
ZC4KLS8vCi0vLyBUaGlzIHByb2dyYW0gbXVzdCBiZSBjb21waWxlZCB3aXRoIGV4Y2VwdGlvbnMg
ZGlzYWJsZWQuICBJdCB3aWxsIGJlCi0vLyBpbnZva2VkIGJ5IGd0ZXN0X3Rocm93X29uX2ZhaWx1
cmVfdGVzdC5weSwgYW5kIGlzIGV4cGVjdGVkIHRvIGV4aXQKLS8vIHdpdGggbm9uLXplcm8gaW4g
dGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZSBvciAwIG90aGVyd2lzZS4KLQotI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewotICB0ZXN0
aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgLy8gV2Ugd2FudCB0byBlbnN1
cmUgdGhhdCBwZW9wbGUgY2FuIHVzZSBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGluCi0gIC8vIG90
aGVyIHRlc3RpbmcgZnJhbWV3b3JrcywgYXMgbG9uZyBhcyB0aGV5IGluaXRpYWxpemUgR29vZ2xl
IFRlc3QKLSAgLy8gcHJvcGVybHkgYW5kIHNldCB0aGUgdGhyb3duLW9uLWZhaWx1cmUgbW9kZS4g
IFRoZXJlZm9yZSwgd2UgZG9uJ3QKLSAgLy8gdXNlIEdvb2dsZSBUZXN0J3MgY29uc3RydWN0cyBm
b3IgZGVmaW5pbmcgYW5kIHJ1bm5pbmcgdGVzdHMKLSAgLy8gKGUuZy4gVEVTVCBhbmQgUlVOX0FM
TF9URVNUUykgaGVyZS4KLQotICAvLyBJbiB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlIHdpdGgg
ZXhjZXB0aW9ucyBkaXNhYmxlZCwgdGhpcwotICAvLyBhc3NlcnRpb24gd2lsbCBjYXVzZSB0aGUg
cHJvZ3JhbSB0byBleGl0IHdpdGggYSBub24temVybyBjb2RlLgotICBFWFBFQ1RfRVEoMiwgMyk7
Ci0KLSAgLy8gV2hlbiBub3QgaW4gdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZSwgdGhlIGNvbnRy
b2wgd2lsbCByZWFjaAotICAvLyBoZXJlLgotICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0LnB5IGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3QucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDZhZTU3ZWVlZGFmY2YwNzUwNGRkOGQ1ZDdh
OGI1YTdmODM4MTNmMjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rl
c3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRo
b24KLSMKLSMgQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJWZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IHdh
cm5zIHRoZSB1c2VyIHdoZW4gbm90IGluaXRpYWxpemVkIHByb3Blcmx5LiIiIgotCi1fX2F1dGhv
cl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgZ3Rlc3RfdGVz
dF91dGlscwotCi0KLUNPTU1BTkQgPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxl
UGF0aCgnZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0XycpCi0KLQotZGVmIEFzc2VydChjb25kaXRp
b24pOgotICBpZiBub3QgY29uZGl0aW9uOgotICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCi0KLQot
ZGVmIEFzc2VydEVxKGV4cGVjdGVkLCBhY3R1YWwpOgotICBpZiBleHBlY3RlZCAhPSBhY3R1YWw6
Ci0gICAgcHJpbnQgJ0V4cGVjdGVkOiAlcycgJSAoZXhwZWN0ZWQsKQotICAgIHByaW50ICcgIEFj
dHVhbDogJXMnICUgKGFjdHVhbCwpCi0gICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKLQotCi1kZWYg
VGVzdEV4aXRDb2RlQW5kT3V0cHV0KGNvbW1hbmQpOgotICAiIiJSdW5zIHRoZSBnaXZlbiBjb21t
YW5kIGFuZCB2ZXJpZmllcyBpdHMgZXhpdCBjb2RlIGFuZCBvdXRwdXQuIiIiCi0KLSAgIyBWZXJp
ZmllcyB0aGF0ICdjb21tYW5kJyBleGl0cyB3aXRoIGNvZGUgMS4KLSAgcCA9IGd0ZXN0X3Rlc3Rf
dXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kKQotICBBc3NlcnQocC5leGl0ZWQpCi0gIEFzc2VydEVx
KDEsIHAuZXhpdF9jb2RlKQotICBBc3NlcnQoJ0luaXRHb29nbGVUZXN0JyBpbiBwLm91dHB1dCkK
LQotCi1jbGFzcyBHVGVzdFVuaW5pdGlhbGl6ZWRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENh
c2UpOgotICBkZWYgdGVzdEV4aXRDb2RlQW5kT3V0cHV0KHNlbGYpOgotICAgIFRlc3RFeGl0Q29k
ZUFuZE91dHB1dChDT01NQU5EKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGd0
ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGU4YjJhYTgxZGQ1NGQ5YzY0M2E1OGRlNWU0NGQ2Y2NiNTIwYTc3NjUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3RfLmNjCisrKyAvZGV2L251
bGwKQEAgLTEsNDMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
Ly8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLVRFU1QoRHVtbXlUZXN0LCBEdW1teSkgewotICAv
LyBUaGlzIHRlc3QgZG9lc24ndCB2ZXJpZnkgYW55dGhpbmcuICBXZSBqdXN0IG5lZWQgaXQgdG8g
Y3JlYXRlIGEKLSAgLy8gcmVhbGlzdGljIHN0YWdlIGZvciB0ZXN0aW5nIHRoZSBiZWhhdmlvciBv
ZiBHb29nbGUgVGVzdCB3aGVuCi0gIC8vIFJVTl9BTExfVEVTVFMoKSBpcyBjYWxsZWQgd2l0aG91
dCB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpIGJlaW5nCi0gIC8vIGNhbGxlZCBmaXJzdC4KLX0K
LQotaW50IG1haW4oKSB7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91bml0dGVzdC5jYwppbmRleCBhMTRmMDY1YTJj
Y2Q4NjM3OWEwMTQ5YTMzZmM1NjQ1YzBlYzhiMTgxLi5mNzIxM2ZiZjNlNWU4NzIwODliZmI5ODU1
MWFjM2JhM2UzYTY3YmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfdW5pdHRlc3QuY2MKQEAgLTI2LDE4ICsyNiwxNiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20g
KFpoYW55b25nIFdhbikKKwogLy8KIC8vIFRlc3RzIGZvciBHb29nbGUgVGVzdCBpdHNlbGYuICBU
aGlzIHZlcmlmaWVzIHRoYXQgdGhlIGJhc2ljIGNvbnN0cnVjdHMgb2YKIC8vIEdvb2dsZSBUZXN0
IHdvcmsuCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPHZlY3Rvcj4KKyNp
bmNsdWRlICJndGVzdC9ndGVzdC5oIgogCi0vLyBWZXJpZmllcyB0aGF0IHRoZSBjb21tYW5kIGxp
bmUgZmxhZyB2YXJpYWJsZXMgY2FuIGJlIGFjY2Vzc2VkCi0vLyBpbiBjb2RlIG9uY2UgPGd0ZXN0
L2d0ZXN0Lmg+IGhhcyBiZWVuICNpbmNsdWRlZC4KLS8vIERvIG5vdCBtb3ZlIGl0IGFmdGVyIG90
aGVyICNpbmNsdWRlcy4KKy8vIFZlcmlmaWVzIHRoYXQgdGhlIGNvbW1hbmQgbGluZSBmbGFnIHZh
cmlhYmxlcyBjYW4gYmUgYWNjZXNzZWQgaW4KKy8vIGNvZGUgb25jZSAiZ3Rlc3QuaCIgaGFzIGJl
ZW4gI2luY2x1ZGVkLgorLy8gRG8gbm90IG1vdmUgaXQgYWZ0ZXIgb3RoZXIgZ3Rlc3QgI2luY2x1
ZGVzLgogVEVTVChDb21tYW5kTGluZUZsYWdzVGVzdCwgQ2FuQmVBY2Nlc3NlZEluQ29kZU9uY2VH
VGVzdEhJc0luY2x1ZGVkKSB7CiAgIGJvb2wgZHVtbXkgPSB0ZXN0aW5nOjpHVEVTVF9GTEFHKGFs
c29fcnVuX2Rpc2FibGVkX3Rlc3RzKQogICAgICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyhicmVh
a19vbl9mYWlsdXJlKQpAQCAtNTIsMzAgKzUwLDEwNSBAQCBURVNUKENvbW1hbmRMaW5lRmxhZ3NU
ZXN0LCBDYW5CZUFjY2Vzc2VkSW5Db2RlT25jZUdUZXN0SElzSW5jbHVkZWQpIHsKICAgICAgIHx8
IHRlc3Rpbmc6OkdURVNUX0ZMQUcoc2hvd19pbnRlcm5hbF9zdGFja19mcmFtZXMpCiAgICAgICB8
fCB0ZXN0aW5nOjpHVEVTVF9GTEFHKHNodWZmbGUpCiAgICAgICB8fCB0ZXN0aW5nOjpHVEVTVF9G
TEFHKHN0YWNrX3RyYWNlX2RlcHRoKSA+IDAKKyAgICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUco
c3RyZWFtX3Jlc3VsdF90bykgIT0gInVua25vd24iCiAgICAgICB8fCB0ZXN0aW5nOjpHVEVTVF9G
TEFHKHRocm93X29uX2ZhaWx1cmUpOwogICBFWFBFQ1RfVFJVRShkdW1teSB8fCAhZHVtbXkpOyAg
Ly8gU3VwcHJlc3NlcyB3YXJuaW5nIHRoYXQgZHVtbXkgaXMgdW51c2VkLgogfQogCi0jaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+Ci0KLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRp
b24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQg
bXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9y
IHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHBy
ZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1p
bmwuaCBpbgotLy8gaGlzIGNvZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0j
aW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVO
VEFUSU9OXwotCiAjaW5jbHVkZSA8bGltaXRzLmg+ICAvLyBGb3IgSU5UX01BWC4KICNpbmNsdWRl
IDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx0aW1lLmg+CiAKICNp
bmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgPG9zdHJlYW0+CisjaWYg
R1RFU1RfTEFOR19DWFgxMQorI2luY2x1ZGUgPHVub3JkZXJlZF9zZXQ+CisjZW5kaWYgIC8vIEdU
RVNUX0xBTkdfQ1hYMTEKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgorI2luY2x1ZGUg
InNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNw
YWNlIGludGVybmFsIHsKIAorI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKworY2xhc3Mg
U3RyZWFtaW5nTGlzdGVuZXJUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgY2xhc3Mg
RmFrZVNvY2tldFdyaXRlciA6IHB1YmxpYyBTdHJlYW1pbmdMaXN0ZW5lcjo6QWJzdHJhY3RTb2Nr
ZXRXcml0ZXIgeworICAgcHVibGljOgorICAgIC8vIFNlbmRzIGEgc3RyaW5nIHRvIHRoZSBzb2Nr
ZXQuCisgICAgdmlydHVhbCB2b2lkIFNlbmQoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsg
b3V0cHV0XyArPSBtZXNzYWdlOyB9CisKKyAgICBzdGQ6OnN0cmluZyBvdXRwdXRfOworICB9Owor
CisgIFN0cmVhbWluZ0xpc3RlbmVyVGVzdCgpCisgICAgICA6IGZha2Vfc29ja193cml0ZXJfKG5l
dyBGYWtlU29ja2V0V3JpdGVyKSwKKyAgICAgICAgc3RyZWFtZXJfKGZha2Vfc29ja193cml0ZXJf
KSwKKyAgICAgICAgdGVzdF9pbmZvX29ial8oIkZvb1Rlc3QiLCAiQmFyIiwgTlVMTCwgTlVMTCwK
KyAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uKF9fRklMRV9fLCBfX0xJTkVfXyks
IDAsIE5VTEwpIHt9CisKKyBwcm90ZWN0ZWQ6CisgIHN0ZDo6c3RyaW5nKiBvdXRwdXQoKSB7IHJl
dHVybiAmKGZha2Vfc29ja193cml0ZXJfLT5vdXRwdXRfKTsgfQorCisgIEZha2VTb2NrZXRXcml0
ZXIqIGNvbnN0IGZha2Vfc29ja193cml0ZXJfOworICBTdHJlYW1pbmdMaXN0ZW5lciBzdHJlYW1l
cl87CisgIFVuaXRUZXN0IHVuaXRfdGVzdF87CisgIFRlc3RJbmZvIHRlc3RfaW5mb19vYmpfOyAg
Ly8gVGhlIG5hbWUgdGVzdF9pbmZvXyB3YXMgdGFrZW4gYnkgdGVzdGluZzo6VGVzdC4KK307CisK
K1RFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRlc3QsIE9uVGVzdFByb2dyYW1FbmQpIHsKKyAgKm91
dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RQcm9ncmFtRW5kKHVuaXRfdGVzdF8pOwor
ICBFWFBFQ1RfRVEoImV2ZW50PVRlc3RQcm9ncmFtRW5kJnBhc3NlZD0xXG4iLCAqb3V0cHV0KCkp
OworfQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RJdGVyYXRpb25FbmQp
IHsKKyAgKm91dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RJdGVyYXRpb25FbmQodW5p
dF90ZXN0XywgNDIpOworICBFWFBFQ1RfRVEoImV2ZW50PVRlc3RJdGVyYXRpb25FbmQmcGFzc2Vk
PTEmZWxhcHNlZF90aW1lPTBtc1xuIiwgKm91dHB1dCgpKTsKK30KKworVEVTVF9GKFN0cmVhbWlu
Z0xpc3RlbmVyVGVzdCwgT25UZXN0Q2FzZVN0YXJ0KSB7CisgICpvdXRwdXQoKSA9ICIiOworICBz
dHJlYW1lcl8uT25UZXN0Q2FzZVN0YXJ0KFRlc3RDYXNlKCJGb29UZXN0IiwgIkJhciIsIE5VTEws
IE5VTEwpKTsKKyAgRVhQRUNUX0VRKCJldmVudD1UZXN0Q2FzZVN0YXJ0Jm5hbWU9Rm9vVGVzdFxu
IiwgKm91dHB1dCgpKTsKK30KKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25UZXN0
Q2FzZUVuZCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdENhc2VFbmQo
VGVzdENhc2UoIkZvb1Rlc3QiLCAiQmFyIiwgTlVMTCwgTlVMTCkpOworICBFWFBFQ1RfRVEoImV2
ZW50PVRlc3RDYXNlRW5kJnBhc3NlZD0xJmVsYXBzZWRfdGltZT0wbXNcbiIsICpvdXRwdXQoKSk7
Cit9CisKK1RFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRlc3QsIE9uVGVzdFN0YXJ0KSB7CisgICpv
dXRwdXQoKSA9ICIiOworICBzdHJlYW1lcl8uT25UZXN0U3RhcnQodGVzdF9pbmZvX29ial8pOwor
ICBFWFBFQ1RfRVEoImV2ZW50PVRlc3RTdGFydCZuYW1lPUJhclxuIiwgKm91dHB1dCgpKTsKK30K
KworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25UZXN0RW5kKSB7CisgICpvdXRwdXQo
KSA9ICIiOworICBzdHJlYW1lcl8uT25UZXN0RW5kKHRlc3RfaW5mb19vYmpfKTsKKyAgRVhQRUNU
X0VRKCJldmVudD1UZXN0RW5kJnBhc3NlZD0xJmVsYXBzZWRfdGltZT0wbXNcbiIsICpvdXRwdXQo
KSk7Cit9CisKK1RFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRlc3QsIE9uVGVzdFBhcnRSZXN1bHQp
IHsKKyAgKm91dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RQYXJ0UmVzdWx0KFRlc3RQ
YXJ0UmVzdWx0KAorICAgICAgVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsICJmb28uY2Mi
LCA0MiwgImZhaWxlZD1cbiYlIikpOworCisgIC8vIE1ldGEgY2hhcmFjdGVycyBpbiB0aGUgZmFp
bHVyZSBtZXNzYWdlIHNob3VsZCBiZSBwcm9wZXJseSBlc2NhcGVkLgorICBFWFBFQ1RfRVEoCisg
ICAgICAiZXZlbnQ9VGVzdFBhcnRSZXN1bHQmZmlsZT1mb28uY2MmbGluZT00MiZtZXNzYWdlPWZh
aWxlZCUzRCUwQSUyNiUyNVxuIiwKKyAgICAgICpvdXRwdXQoKSk7Cit9CisKKyNlbmRpZiAgLy8g
R1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworCiAvLyBQcm92aWRlcyBhY2Nlc3MgdG8gb3RoZXJ3
aXNlIHByaXZhdGUgcGFydHMgb2YgdGhlIFRlc3RFdmVudExpc3RlbmVycyBjbGFzcwogLy8gdGhh
dCBhcmUgbmVlZGVkIHRvIHRlc3QgaXQuCiBjbGFzcyBUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3Nv
ciB7CkBAIC0xMDIsNiArMTc1LDE4IEBAIGNsYXNzIFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29y
IHsKICAgfQogfTsKIAorY2xhc3MgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3RIZWxwZXIgOiBw
dWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgorICBVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdEhl
bHBlcigpIHt9CisKKyAgLy8gRm9yd2FyZHMgdG8gVW5pdFRlc3Q6OlJlY29yZFByb3BlcnR5KCkg
dG8gYnlwYXNzIGFjY2VzcyBjb250cm9scy4KKyAgdm9pZCBVbml0VGVzdFJlY29yZFByb3BlcnR5
KGNvbnN0IGNoYXIqIGtleSwgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSB7CisgICAgdW5pdF90
ZXN0Xy5SZWNvcmRQcm9wZXJ0eShrZXksIHZhbHVlKTsKKyAgfQorCisgIFVuaXRUZXN0IHVuaXRf
dGVzdF87Cit9OworCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSB0
ZXN0aW5nCiAKQEAgLTExMCw2ICsxOTUsNyBAQCB1c2luZyB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1
bHQ7CiB1c2luZyB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzOwogdXNpbmcgdGVzdGluZzo6RG91
YmxlTEU7CiB1c2luZyB0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyOwordXNpbmcgdGVz
dGluZzo6RW52aXJvbm1lbnQ7CiB1c2luZyB0ZXN0aW5nOjpGbG9hdExFOwogdXNpbmcgdGVzdGlu
Zzo6R1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyk7CiB1c2luZyB0ZXN0aW5nOjpH
VEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpOwpAQCAtMTI1LDYgKzIxMSw3IEBAIHVzaW5nIHRl
c3Rpbmc6OkdURVNUX0ZMQUcocmVwZWF0KTsKIHVzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcoc2hv
d19pbnRlcm5hbF9zdGFja19mcmFtZXMpOwogdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhzaHVm
ZmxlKTsKIHVzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpOwordXNp
bmcgdGVzdGluZzo6R1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKTsKIHVzaW5nIHRlc3Rpbmc6
OkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSk7CiB1c2luZyB0ZXN0aW5nOjpJc05vdFN1YnN0
cmluZzsKIHVzaW5nIHRlc3Rpbmc6OklzU3Vic3RyaW5nOwpAQCAtMTMyLDUzICsyMTksNzggQEAg
dXNpbmcgdGVzdGluZzo6TWVzc2FnZTsKIHVzaW5nIHRlc3Rpbmc6OlNjb3BlZEZha2VUZXN0UGFy
dFJlc3VsdFJlcG9ydGVyOwogdXNpbmcgdGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxOwogdXNp
bmcgdGVzdGluZzo6VGVzdDsKLXVzaW5nIHRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyczsKIHVz
aW5nIHRlc3Rpbmc6OlRlc3RDYXNlOwordXNpbmcgdGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJz
OwordXNpbmcgdGVzdGluZzo6VGVzdEluZm87CiB1c2luZyB0ZXN0aW5nOjpUZXN0UGFydFJlc3Vs
dDsKIHVzaW5nIHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0QXJyYXk7CiB1c2luZyB0ZXN0aW5nOjpU
ZXN0UHJvcGVydHk7CiB1c2luZyB0ZXN0aW5nOjpUZXN0UmVzdWx0OwordXNpbmcgdGVzdGluZzo6
VGltZUluTWlsbGlzOwogdXNpbmcgdGVzdGluZzo6VW5pdFRlc3Q7Ci11c2luZyB0ZXN0aW5nOjpr
TWF4U3RhY2tUcmFjZURlcHRoOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFkZFJlZmVyZW5j
ZTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZTsKIHVzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpBbHdheXNUcnVlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFwcGVuZFVz
ZXJNZXNzYWdlOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFycmF5QXdhcmVGaW5kOwordXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OkFycmF5RXE7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6
Q29kZVBvaW50VG9VdGY4OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkNvbXBpbGVBc3NlcnRU
eXBlc0VxdWFsOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkNvcHlBcnJheTsKIHVzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpDb3VudElmOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkVxRmFp
bHVyZTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpGbG9hdGluZ1BvaW50OwotdXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OkZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kczsKIHVzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpGb3JFYWNoOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZvcm1hdEVw
b2NoVGltZUluTWlsbGlzQXNJc284NjAxOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZvcm1h
dFRpbWVJbk1pbGxpc0FzU2Vjb25kczsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHVGVzdEZs
YWdTYXZlcjsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRDdXJyZW50T3NTdGFja1RyYWNl
RXhjZXB0VG9wOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldEVsZW1lbnRPcjsKIHVzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjpHZXROZXh0UmFuZG9tU2VlZDsKIHVzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpHZXRSYW5kb21TZWVkRnJvbUZsYWc7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6
R2V0VGVzdFR5cGVJZDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRUaW1lSW5NaWxsaXM7
CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VHlwZUlkOwogdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OkdldFVuaXRUZXN0SW1wbDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNp
dGx5Q29udmVydGlibGU7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SW50MzI7CiB1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6SW50MzJGcm9tRW52T3JEaWU7Cit1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6SXNBUHJvdG9jb2xNZXNzYWdlOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OklzQ29u
dGFpbmVyOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OklzQ29udGFpbmVyVGVzdDsKK3VzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjpJc05vdENvbnRhaW5lcjsKK3VzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpOYXRpdmVBcnJheTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpPc1N0YWNrVHJhY2VH
ZXR0ZXI7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6T3NTdGFja1RyYWNlR2V0dGVySW50ZXJm
YWNlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlBhcnNlSW50MzJGbGFnOwordXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OlJlbGF0aW9uVG9Tb3VyY2VDb3B5OwordXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OlJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2U7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6UmVtb3ZlQ29uc3Q7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVtb3ZlUmVmZXJlbmNl
OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlNob3VsZFJ1blRlc3RPblNoYXJkOwogdXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OlNob3VsZFNoYXJkOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OlNob3VsZFVzZUNvbG9yOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlNodWZmbGU7CiB1c2lu
ZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2h1ZmZsZVJhbmdlOwordXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OlNraXBQcmVmaXg7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U3RyZWFtYWJsZVRvU3Ry
aW5nOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZzsKIHVzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3NvcjsKIHVzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpUZXN0UmVzdWx0QWNjZXNzb3I7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VUludDMy
OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlVuaXRUZXN0SW1wbDsKIHVzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpXaWRlU3RyaW5nVG9VdGY4OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmVk
aXRfZGlzdGFuY2U6OkNhbGN1bGF0ZU9wdGltYWxFZGl0czsKK3VzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjplZGl0X2Rpc3RhbmNlOjpDcmVhdGVVbmlmaWVkRGlmZjsKK3VzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjplZGl0X2Rpc3RhbmNlOjpFZGl0VHlwZTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjprTWF4UmFuZG9tU2VlZDsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjprVGVzdFR5cGVJZElu
R29vZ2xlVGVzdDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpzY29wZWRfcHRyOwordXNpbmcg
dGVzdGluZzo6a01heFN0YWNrVHJhY2VEZXB0aDsKIAotI2lmIEdURVNUX0hBU19TVFJFQU1fUkVE
SVJFQ1RJT05fCisjaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgogdXNpbmcgdGVzdGlu
Zzo6aW50ZXJuYWw6OkNhcHR1cmVTdGRvdXQ7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0
Q2FwdHVyZWRTdGRvdXQ7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05f
CisjZW5kaWYKIAogI2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKIHVzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpUaHJlYWRXaXRoUGFyYW07CkBAIC0yNjcsNiArMzc5LDMxIEBAIFRFU1QoR2V0VGVzdFR5
cGVJZFRlc3QsIFJldHVybnNUaGVTYW1lVmFsdWVJbnNpZGVPck91dHNpZGVPZkdvb2dsZVRlc3Qp
IHsKICAgRVhQRUNUX0VRKGtUZXN0VHlwZUlkSW5Hb29nbGVUZXN0LCBHZXRUZXN0VHlwZUlkKCkp
OwogfQogCisvLyBUZXN0cyBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nLgorCit1c2lu
ZyA6OnRlc3Rpbmc6OmludGVybmFsOjpDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nOwor
CitURVNUKENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcsIExlYXZlc1VudmVyc2lvbmVk
TmFtZXNVbmNoYW5nZWQpIHsKKyAgRVhQRUNUX0VRKCJzdGQ6OmJpbmQiLCBDYW5vbmljYWxpemVG
b3JTdGRMaWJWZXJzaW9uaW5nKCJzdGQ6OmJpbmQiKSk7CisgIEVYUEVDVF9FUSgic3RkOjpfIiwg
Q2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZygic3RkOjpfIikpOworICBFWFBFQ1RfRVEo
InN0ZDo6X19mb28iLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJzdGQ6Ol9fZm9v
IikpOworICBFWFBFQ1RfRVEoImd0bDo6X18xOjp4IiwgQ2Fub25pY2FsaXplRm9yU3RkTGliVmVy
c2lvbmluZygiZ3RsOjpfXzE6OngiKSk7CisgIEVYUEVDVF9FUSgiX18xOjp4IiwgQ2Fub25pY2Fs
aXplRm9yU3RkTGliVmVyc2lvbmluZygiX18xOjp4IikpOworICBFWFBFQ1RfRVEoIjo6X18xOjp4
IiwgQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZygiOjpfXzE6OngiKSk7Cit9CisKK1RF
U1QoQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZywgRWxpZGVzRG91YmxlVW5kZXJOYW1l
cykgeworICBFWFBFQ1RfRVEoInN0ZDo6YmluZCIsIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNp
b25pbmcoInN0ZDo6X18xOjpiaW5kIikpOworICBFWFBFQ1RfRVEoInN0ZDo6XyIsIENhbm9uaWNh
bGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoInN0ZDo6X18xOjpfIikpOworCisgIEVYUEVDVF9FUSgi
c3RkOjpiaW5kIiwgQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZygic3RkOjpfX2c6OmJp
bmQiKSk7CisgIEVYUEVDVF9FUSgic3RkOjpfIiwgQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lv
bmluZygic3RkOjpfX2c6Ol8iKSk7CisKKyAgRVhQRUNUX0VRKCJzdGQ6OmJpbmQiLAorICAgICAg
ICAgICAgQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZygic3RkOjpfX2dvb2dsZTo6Ymlu
ZCIpKTsKKyAgRVhQRUNUX0VRKCJzdGQ6Ol8iLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9u
aW5nKCJzdGQ6Ol9fZ29vZ2xlOjpfIikpOworfQorCiAvLyBUZXN0cyBGb3JtYXRUaW1lSW5NaWxs
aXNBc1NlY29uZHMoKS4KIAogVEVTVChGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHNUZXN0LCBG
b3JtYXRzWmVybykgewpAQCAtMjg5LDEyICs0MjYsOTkgQEAgVEVTVChGb3JtYXRUaW1lSW5NaWxs
aXNBc1NlY29uZHNUZXN0LCBGb3JtYXRzTmVnYXRpdmVOdW1iZXIpIHsKICAgRVhQRUNUX0VRKCIt
MyIsIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcygtMzAwMCkpOwogfQogCisvLyBUZXN0cyBG
b3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSgpLiAgVGhlIGNvcnJlY3RuZXNzIG9mIGNv
bnZlcnNpb24KKy8vIGZvciBwYXJ0aWN1bGFyIGRhdGVzIGJlbG93IHdhcyB2ZXJpZmllZCBpbiBQ
eXRob24gdXNpbmcKKy8vIGRhdGV0aW1lLmRhdGV0aW1lLmZyb211dGN0aW1lc3RhbXAoPHRpbWV0
YW1wPi8xMDAwKS4KKworLy8gRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEgZGVwZW5k
cyBvbiB0aGUgY3VycmVudCB0aW1lem9uZSwgc28gd2UKKy8vIGhhdmUgdG8gc2V0IHVwIGEgcGFy
dGljdWxhciB0aW1lem9uZSB0byBvYnRhaW4gcHJlZGljdGFibGUgcmVzdWx0cy4KK2NsYXNzIEZv
cm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJs
aWM6CisgIC8vIE9uIEN5Z3dpbiwgR0NDIGRvZXNuJ3QgYWxsb3cgdW5xdWFsaWZpZWQgaW50ZWdl
ciBsaXRlcmFscyB0byBleGNlZWQKKyAgLy8gMzIgYml0cywgZXZlbiB3aGVuIDY0LWJpdCBpbnRl
Z2VyIHR5cGVzIGFyZSBhdmFpbGFibGUuICBXZSBoYXZlIHRvCisgIC8vIGZvcmNlIHRoZSBjb25z
dGFudHMgdG8gaGF2ZSBhIDY0LWJpdCB0eXBlIGhlcmUuCisgIHN0YXRpYyBjb25zdCBUaW1lSW5N
aWxsaXMga01pbGxpc1BlclNlYyA9IDEwMDA7CisKKyBwcml2YXRlOgorICB2aXJ0dWFsIHZvaWQg
U2V0VXAoKSB7CisgICAgc2F2ZWRfdHpfID0gTlVMTDsKKworICAgIEdURVNUX0RJU0FCTEVfTVND
X0RFUFJFQ0FURURfUFVTSF8oLyogZ2V0ZW52LCBzdHJkdXA6IGRlcHJlY2F0ZWQgKi8pCisgICAg
aWYgKGdldGVudigiVFoiKSkKKyAgICAgIHNhdmVkX3R6XyA9IHN0cmR1cChnZXRlbnYoIlRaIikp
OworICAgIEdURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUE9QXygpCisKKyAgICAvLyBTZXQg
dXAgdGhlIHRpbWUgem9uZSBmb3IgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEgdG8g
dXNlLiAgV2UKKyAgICAvLyBjYW5ub3QgdXNlIHRoZSBsb2NhbCB0aW1lIHpvbmUgYmVjYXVzZSB0
aGUgZnVuY3Rpb24ncyBvdXRwdXQgZGVwZW5kcworICAgIC8vIG9uIHRoZSB0aW1lIHpvbmUuCisg
ICAgU2V0VGltZVpvbmUoIlVUQyswMCIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3du
KCkgeworICAgIFNldFRpbWVab25lKHNhdmVkX3R6Xyk7CisgICAgZnJlZShjb25zdF9jYXN0PGNo
YXIqPihzYXZlZF90el8pKTsKKyAgICBzYXZlZF90el8gPSBOVUxMOworICB9CisKKyAgc3RhdGlj
IHZvaWQgU2V0VGltZVpvbmUoY29uc3QgY2hhciogdGltZV96b25lKSB7CisgICAgLy8gdHpzZXQo
KSBkaXN0aW5ndWlzaGVzIGJldHdlZW4gdGhlIFRaIHZhcmlhYmxlIGJlaW5nIHByZXNlbnQgYW5k
IGVtcHR5CisgICAgLy8gYW5kIG5vdCBiZWluZyBwcmVzZW50LCBzbyB3ZSBoYXZlIHRvIGNvbnNp
ZGVyIHRoZSBjYXNlIG9mIHRpbWVfem9uZQorICAgIC8vIGJlaW5nIE5VTEwuCisjaWYgX01TQ19W
RVIgfHwgR1RFU1RfT1NfV0lORE9XU19NSU5HVworICAgIC8vIC4uLlVubGVzcyBpdCdzIE1TVkMs
IHdob3NlIHN0YW5kYXJkIGxpYnJhcnkncyBfcHV0ZW52IGRvZXNuJ3QKKyAgICAvLyBkaXN0aW5n
dWlzaCBiZXR3ZWVuIGFuIGVtcHR5IGFuZCBhIG1pc3NpbmcgdmFyaWFibGUuCisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgZW52X3ZhciA9CisgICAgICAgIHN0ZDo6c3RyaW5nKCJUWj0iKSArICh0aW1l
X3pvbmUgPyB0aW1lX3pvbmUgOiAiIik7CisgICAgX3B1dGVudihlbnZfdmFyLmNfc3RyKCkpOwor
ICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQ5OTYgLyogZGVwcmVjYXRlZCBm
dW5jdGlvbiAqLykKKyAgICB0enNldCgpOworICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdT
X1BPUF8oKQorI2Vsc2UKKyAgICBpZiAodGltZV96b25lKSB7CisgICAgICBzZXRlbnYoKCJUWiIp
LCB0aW1lX3pvbmUsIDEpOworICAgIH0gZWxzZSB7CisgICAgICB1bnNldGVudigiVFoiKTsKKyAg
ICB9CisgICAgdHpzZXQoKTsKKyNlbmRpZgorICB9CisKKyAgY29uc3QgY2hhciogc2F2ZWRfdHpf
OworfTsKKworY29uc3QgVGltZUluTWlsbGlzIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284
NjAxVGVzdDo6a01pbGxpc1BlclNlYzsKKworVEVTVF9GKEZvcm1hdEVwb2NoVGltZUluTWlsbGlz
QXNJc284NjAxVGVzdCwgUHJpbnRzVHdvRGlnaXRTZWdtZW50cykgeworICBFWFBFQ1RfRVEoIjIw
MTEtMTAtMzFUMTg6NTI6NDIiLAorICAgICAgICAgICAgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNB
c0lzbzg2MDEoMTMyMDA4NzE2MiAqIGtNaWxsaXNQZXJTZWMpKTsKK30KKworVEVTVF9GKEZvcm1h
dEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxVGVzdCwgTWlsbGlzZWNvbmRzRG9Ob3RBZmZlY3RS
ZXN1bHQpIHsKKyAgRVhQRUNUX0VRKAorICAgICAgIjIwMTEtMTAtMzFUMTg6NTI6NDIiLAorICAg
ICAgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoMTMyMDA4NzE2MiAqIGtNaWxsaXNQ
ZXJTZWMgKyAyMzQpKTsKK30KKworVEVTVF9GKEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284
NjAxVGVzdCwgUHJpbnRzTGVhZGluZ1plcm9lcykgeworICBFWFBFQ1RfRVEoIjIwMTEtMDktMDNU
MDU6MDc6MDIiLAorICAgICAgICAgICAgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEo
MTMxNTAyNjQyMiAqIGtNaWxsaXNQZXJTZWMpKTsKK30KKworVEVTVF9GKEZvcm1hdEVwb2NoVGlt
ZUluTWlsbGlzQXNJc284NjAxVGVzdCwgUHJpbnRzMjRIb3VyVGltZSkgeworICBFWFBFQ1RfRVEo
IjIwMTEtMDktMjhUMTc6MDg6MjIiLAorICAgICAgICAgICAgRm9ybWF0RXBvY2hUaW1lSW5NaWxs
aXNBc0lzbzg2MDEoMTMxNzIyOTcwMiAqIGtNaWxsaXNQZXJTZWMpKTsKK30KKworVEVTVF9GKEZv
cm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxVGVzdCwgUHJpbnRzRXBvY2hTdGFydCkgewor
ICBFWFBFQ1RfRVEoIjE5NzAtMDEtMDFUMDA6MDA6MDAiLCBGb3JtYXRFcG9jaFRpbWVJbk1pbGxp
c0FzSXNvODYwMSgwKSk7Cit9CisKICNpZiBHVEVTVF9DQU5fQ09NUEFSRV9OVUxMCiAKLSNpZmRl
ZiBfX0JPUkxBTkRDX18KKyMgaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBTaWxlbmNlcyB3YXJuaW5n
czogIkNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZSIsICJVbnJlYWNoYWJsZSBjb2RlIgotI3ByYWdt
YSBvcHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCi0jZW5kaWYKKyMgIHByYWdtYSBvcHRpb24gcHVz
aCAtdy1jY2MgLXctcmNoCisjIGVuZGlmCiAKIC8vIFRlc3RzIHRoYXQgR1RFU1RfSVNfTlVMTF9M
SVRFUkFMXyh4KSBpcyB0cnVlIHdoZW4geCBpcyBhIG51bGwKIC8vIHBvaW50ZXIgbGl0ZXJhbC4K
QEAgLTMwMywxNCArNTI3LDYgQEAgVEVTVChOdWxsTGl0ZXJhbFRlc3QsIElzVHJ1ZUZvck51bGxM
aXRlcmFscykgewogICBFWFBFQ1RfVFJVRShHVEVTVF9JU19OVUxMX0xJVEVSQUxfKDApKTsKICAg
RVhQRUNUX1RSVUUoR1RFU1RfSVNfTlVMTF9MSVRFUkFMXygwVSkpOwogICBFWFBFQ1RfVFJVRShH
VEVTVF9JU19OVUxMX0xJVEVSQUxfKDBMKSk7Ci0gIEVYUEVDVF9UUlVFKEdURVNUX0lTX05VTExf
TElURVJBTF8oZmFsc2UpKTsKLSNpZm5kZWYgX19CT1JMQU5EQ19fCi0gIC8vIFNvbWUgY29tcGls
ZXJzIG1heSBmYWlsIHRvIGRldGVjdCBzb21lIG51bGwgcG9pbnRlciBsaXRlcmFsczsKLSAgLy8g
YXMgbG9uZyBhcyB1c2VycyBvZiB0aGUgZnJhbWV3b3JrIGRvbid0IHVzZSBzdWNoIGxpdGVyYWxz
LCB0aGlzCi0gIC8vIGlzIGhhcm1sZXNzLgotICBFWFBFQ1RfVFJVRShHVEVTVF9JU19OVUxMX0xJ
VEVSQUxfKDEgLSAxKSk7Ci0gIEVYUEVDVF9UUlVFKEdURVNUX0lTX05VTExfTElURVJBTF8odHJ1
ZSAmJiBmYWxzZSkpOwotI2VuZGlmCiB9CiAKIC8vIFRlc3RzIHRoYXQgR1RFU1RfSVNfTlVMTF9M
SVRFUkFMXyh4KSBpcyBmYWxzZSB3aGVuIHggaXMgbm90IGEgbnVsbApAQCAtMzIyLDEwICs1Mzgs
MTAgQEAgVEVTVChOdWxsTGl0ZXJhbFRlc3QsIElzRmFsc2VGb3JOb25OdWxsTGl0ZXJhbHMpIHsK
ICAgRVhQRUNUX0ZBTFNFKEdURVNUX0lTX05VTExfTElURVJBTF8oc3RhdGljX2Nhc3Q8dm9pZCo+
KE5VTEwpKSk7CiB9CiAKLSNpZmRlZiBfX0JPUkxBTkRDX18KKyMgaWZkZWYgX19CT1JMQU5EQ19f
CiAvLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2aW91cyAiI3ByYWdtYSBvcHRpb24gcHVz
aCIgc3VwcHJlc3NlZCB0aGVtLgotI3ByYWdtYSBvcHRpb24gcG9wCi0jZW5kaWYKKyMgIHByYWdt
YSBvcHRpb24gcG9wCisjIGVuZGlmCiAKICNlbmRpZiAgLy8gR1RFU1RfQ0FOX0NPTVBBUkVfTlVM
TAogLy8KQEAgLTMzMywzOSArNTQ5LDQxIEBAIFRFU1QoTnVsbExpdGVyYWxUZXN0LCBJc0ZhbHNl
Rm9yTm9uTnVsbExpdGVyYWxzKSB7CiAKIC8vIFRlc3RzIHRoYXQgdGhlIE5VTCBjaGFyYWN0ZXIg
TCdcMCcgaXMgZW5jb2RlZCBjb3JyZWN0bHkuCiBURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENh
bkVuY29kZU51bCkgewotICBjaGFyIGJ1ZmZlclszMl07Ci0gIEVYUEVDVF9TVFJFUSgiIiwgQ29k
ZVBvaW50VG9VdGY4KEwnXDAnLCBidWZmZXIpKTsKKyAgRVhQRUNUX0VRKCIiLCBDb2RlUG9pbnRU
b1V0ZjgoTCdcMCcpKTsKIH0KIAogLy8gVGVzdHMgdGhhdCBBU0NJSSBjaGFyYWN0ZXJzIGFyZSBl
bmNvZGVkIGNvcnJlY3RseS4KIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2RlQXNj
aWkpIHsKLSAgY2hhciBidWZmZXJbMzJdOwotICBFWFBFQ1RfU1RSRVEoImEiLCBDb2RlUG9pbnRU
b1V0ZjgoTCdhJywgYnVmZmVyKSk7Ci0gIEVYUEVDVF9TVFJFUSgiWiIsIENvZGVQb2ludFRvVXRm
OChMJ1onLCBidWZmZXIpKTsKLSAgRVhQRUNUX1NUUkVRKCImIiwgQ29kZVBvaW50VG9VdGY4KEwn
JicsIGJ1ZmZlcikpOwotICBFWFBFQ1RfU1RSRVEoIlx4N0YiLCBDb2RlUG9pbnRUb1V0ZjgoTCdc
eDdGJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiYSIsIENvZGVQb2ludFRvVXRmOChMJ2EnKSk7
CisgIEVYUEVDVF9FUSgiWiIsIENvZGVQb2ludFRvVXRmOChMJ1onKSk7CisgIEVYUEVDVF9FUSgi
JiIsIENvZGVQb2ludFRvVXRmOChMJyYnKSk7CisgIEVYUEVDVF9FUSgiXHg3RiIsIENvZGVQb2lu
dFRvVXRmOChMJ1x4N0YnKSk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgVW5pY29kZSBjb2RlLXBvaW50
cyB0aGF0IGhhdmUgOCB0byAxMSBiaXRzIGFyZSBlbmNvZGVkCiAvLyBhcyAxMTB4eHh4eCAxMHh4
eHh4eC4KIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2RlOFRvMTFCaXRzKSB7Ci0g
IGNoYXIgYnVmZmVyWzMyXTsKICAgLy8gMDAwIDExMDEgMDAxMSA9PiAxMTAtMDAwMTEgMTAtMDEw
MDExCi0gIEVYUEVDVF9TVFJFUSgiXHhDM1x4OTMiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceEQzJywg
YnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiXHhDM1x4OTMiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceEQz
JykpOwogCiAgIC8vIDEwMSAwMTExIDAxMTAgPT4gMTEwLTEwMTAxIDEwLTExMDExMAotICBFWFBF
Q1RfU1RSRVEoIlx4RDVceEI2IiwgQ29kZVBvaW50VG9VdGY4KEwnXHg1NzYnLCBidWZmZXIpKTsK
KyAgLy8gU29tZSBjb21waWxlcnMgKGUuZy4sIEdDQyBvbiBNaW5HVykgY2Fubm90IGhhbmRsZSBu
b24tQVNDSUkgY29kZXBvaW50cworICAvLyBpbiB3aWRlIHN0cmluZ3MgYW5kIHdpZGUgY2hhcnMu
IEluIG9yZGVyIHRvIGFjY29tbW9kYXRlIHRoZW0sIHdlIGhhdmUgdG8KKyAgLy8gaW50cm9kdWNl
IHN1Y2ggY2hhcmFjdGVyIGNvbnN0YW50cyBhcyBpbnRlZ2Vycy4KKyAgRVhQRUNUX0VRKCJceEQ1
XHhCNiIsCisgICAgICAgICAgICBDb2RlUG9pbnRUb1V0Zjgoc3RhdGljX2Nhc3Q8d2NoYXJfdD4o
MHg1NzYpKSk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0aGF0IGhh
dmUgMTIgdG8gMTYgYml0cyBhcmUgZW5jb2RlZAogLy8gYXMgMTExMHh4eHggMTB4eHh4eHggMTB4
eHh4eHguCiBURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29kZTEyVG8xNkJpdHMpIHsK
LSAgY2hhciBidWZmZXJbMzJdOwogICAvLyAwMDAwIDEwMDAgMTEwMSAwMDExID0+IDExMTAtMDAw
MCAxMC0xMDAwMTEgMTAtMDEwMDExCi0gIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgQ29k
ZVBvaW50VG9VdGY4KEwnXHg4RDMnLCBidWZmZXIpKTsKKyAgRVhQRUNUX0VRKCJceEUwXHhBM1x4
OTMiLAorICAgICAgICAgICAgQ29kZVBvaW50VG9VdGY4KHN0YXRpY19jYXN0PHdjaGFyX3Q+KDB4
OEQzKSkpOwogCiAgIC8vIDExMDAgMDExMSAwMTAwIDExMDEgPT4gMTExMC0xMTAwIDEwLTAxMTEw
MSAxMC0wMDExMDEKLSAgRVhQRUNUX1NUUkVRKCJceEVDXHg5RFx4OEQiLCBDb2RlUG9pbnRUb1V0
ZjgoTCdceEM3NEQnLCBidWZmZXIpKTsKKyAgRVhQRUNUX0VRKCJceEVDXHg5RFx4OEQiLAorICAg
ICAgICAgICAgQ29kZVBvaW50VG9VdGY4KHN0YXRpY19jYXN0PHdjaGFyX3Q+KDB4Qzc0RCkpKTsK
IH0KIAogI2lmICFHVEVTVF9XSURFX1NUUklOR19VU0VTX1VURjE2XwpAQCAtMzc2LDIyICs1OTQs
MTkgQEAgVEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBDYW5FbmNvZGUxMlRvMTZCaXRzKSB7CiAv
LyBUZXN0cyB0aGF0IFVuaWNvZGUgY29kZS1wb2ludHMgdGhhdCBoYXZlIDE3IHRvIDIxIGJpdHMg
YXJlIGVuY29kZWQKIC8vIGFzIDExMTEweHh4IDEweHh4eHh4IDEweHh4eHh4IDEweHh4eHh4Lgog
VEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBDYW5FbmNvZGUxN1RvMjFCaXRzKSB7Ci0gIGNoYXIg
YnVmZmVyWzMyXTsKICAgLy8gMCAwMDAxIDAwMDAgMTAwMCAxMTAxIDAwMTEgPT4gMTExMTAtMDAw
IDEwLTAxMDAwMCAxMC0xMDAwMTEgMTAtMDEwMDExCi0gIEVYUEVDVF9TVFJFUSgiXHhGMFx4OTBc
eEEzXHg5MyIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA4RDMnLCBidWZmZXIpKTsKKyAgRVhQRUNU
X0VRKCJceEYwXHg5MFx4QTNceDkzIiwgQ29kZVBvaW50VG9VdGY4KEwnXHgxMDhEMycpKTsKIAog
ICAvLyAwIDAwMDEgMDAwMCAwMTAwIDAwMDAgMDAwMCA9PiAxMTExMC0wMDAgMTAtMDEwMDAwIDEw
LTAxMDAwMCAxMC0wMDAwMDAKLSAgRVhQRUNUX1NUUkVRKCJceEYwXHg5MFx4OTBceDgwIiwgQ29k
ZVBvaW50VG9VdGY4KEwnXHgxMDQwMCcsIGJ1ZmZlcikpOworICBFWFBFQ1RfRVEoIlx4RjBceDkw
XHg5MFx4ODAiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDEwNDAwJykpOwogCiAgIC8vIDEgMDAwMCAx
MDAwIDAxMTAgMDAxMSAwMTAwID0+IDExMTEwLTEwMCAxMC0wMDEwMDAgMTAtMDExMDAwIDEwLTEx
MDEwMAotICBFWFBFQ1RfU1RSRVEoIlx4RjRceDg4XHg5OFx4QjQiLCBDb2RlUG9pbnRUb1V0Zjgo
TCdceDEwODYzNCcsIGJ1ZmZlcikpOworICBFWFBFQ1RfRVEoIlx4RjRceDg4XHg5OFx4QjQiLCBD
b2RlUG9pbnRUb1V0ZjgoTCdceDEwODYzNCcpKTsKIH0KIAogLy8gVGVzdHMgdGhhdCBlbmNvZGlu
ZyBhbiBpbnZhbGlkIGNvZGUtcG9pbnQgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCByZXN1bHQuCiBU
RVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29kZUludmFsaWRDb2RlUG9pbnQpIHsKLSAg
Y2hhciBidWZmZXJbMzJdOwotICBFWFBFQ1RfU1RSRVEoIihJbnZhbGlkIFVuaWNvZGUgMHgxMjM0
QUJDRCkiLAotICAgICAgICAgICAgICAgQ29kZVBvaW50VG9VdGY4KEwnXHgxMjM0QUJDRCcsIGJ1
ZmZlcikpOworICBFWFBFQ1RfRVEoIihJbnZhbGlkIFVuaWNvZGUgMHgxMjM0QUJDRCkiLCBDb2Rl
UG9pbnRUb1V0ZjgoTCdceDEyMzRBQkNEJykpOwogfQogCiAjZW5kaWYgIC8vICFHVEVTVF9XSURF
X1NUUklOR19VU0VTX1VURjE2XwpAQCAtNDIwLDIwICs2MzUsMjMgQEAgVEVTVChXaWRlU3RyaW5n
VG9VdGY4VGVzdCwgQ2FuRW5jb2RlOFRvMTFCaXRzKSB7CiAgIEVYUEVDVF9TVFJFUSgiXHhDM1x4
OTMiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhEMyIsIC0xKS5jX3N0cigpKTsKIAogICAvLyAxMDEg
MDExMSAwMTEwID0+IDExMC0xMDEwMSAxMC0xMTAxMTAKLSAgRVhQRUNUX1NUUkVRKCJceEQ1XHhC
NiIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceDU3NiIsIDEpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RS
RVEoIlx4RDVceEI2IiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4NTc2IiwgLTEpLmNfc3RyKCkpOwor
ICBjb25zdCB3Y2hhcl90IHNbXSA9IHsgMHg1NzYsICdcMCcgfTsKKyAgRVhQRUNUX1NUUkVRKCJc
eEQ1XHhCNiIsIFdpZGVTdHJpbmdUb1V0ZjgocywgMSkuY19zdHIoKSk7CisgIEVYUEVDVF9TVFJF
USgiXHhENVx4QjYiLCBXaWRlU3RyaW5nVG9VdGY4KHMsIC0xKS5jX3N0cigpKTsKIH0KIAogLy8g
VGVzdHMgdGhhdCBVbmljb2RlIGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSAxMiB0byAxNiBiaXRzIGFy
ZSBlbmNvZGVkCiAvLyBhcyAxMTEweHh4eCAxMHh4eHh4eCAxMHh4eHh4eC4KIFRFU1QoV2lkZVN0
cmluZ1RvVXRmOFRlc3QsIENhbkVuY29kZTEyVG8xNkJpdHMpIHsKICAgLy8gMDAwMCAxMDAwIDEx
MDEgMDAxMSA9PiAxMTEwLTAwMDAgMTAtMTAwMDExIDEwLTAxMDAxMQotICBFWFBFQ1RfU1RSRVEo
Ilx4RTBceEEzXHg5MyIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceDhEMyIsIDEpLmNfc3RyKCkpOwot
ICBFWFBFQ1RfU1RSRVEoIlx4RTBceEEzXHg5MyIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceDhEMyIs
IC0xKS5jX3N0cigpKTsKKyAgY29uc3Qgd2NoYXJfdCBzMVtdID0geyAweDhEMywgJ1wwJyB9Owor
ICBFWFBFQ1RfU1RSRVEoIlx4RTBceEEzXHg5MyIsIFdpZGVTdHJpbmdUb1V0ZjgoczEsIDEpLmNf
c3RyKCkpOworICBFWFBFQ1RfU1RSRVEoIlx4RTBceEEzXHg5MyIsIFdpZGVTdHJpbmdUb1V0Zjgo
czEsIC0xKS5jX3N0cigpKTsKIAogICAvLyAxMTAwIDAxMTEgMDEwMCAxMTAxID0+IDExMTAtMTEw
MCAxMC0wMTExMDEgMTAtMDAxMTAxCi0gIEVYUEVDVF9TVFJFUSgiXHhFQ1x4OURceDhEIiwgV2lk
ZVN0cmluZ1RvVXRmOChMIlx4Qzc0RCIsIDEpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIlx4
RUNceDlEXHg4RCIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEM3NEQiLCAtMSkuY19zdHIoKSk7Cisg
IGNvbnN0IHdjaGFyX3QgczJbXSA9IHsgMHhDNzRELCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgi
XHhFQ1x4OURceDhEIiwgV2lkZVN0cmluZ1RvVXRmOChzMiwgMSkuY19zdHIoKSk7CisgIEVYUEVD
VF9TVFJFUSgiXHhFQ1x4OURceDhEIiwgV2lkZVN0cmluZ1RvVXRmOChzMiwgLTEpLmNfc3RyKCkp
OwogfQogCiAvLyBUZXN0cyB0aGF0IHRoZSBjb252ZXJzaW9uIHN0b3BzIHdoZW4gdGhlIGZ1bmN0
aW9uIGVuY291bnRlcnMgXDAgY2hhcmFjdGVyLgpAQCAtNDQ3LDcgKzY2NSw2IEBAIFRFU1QoV2lk
ZVN0cmluZ1RvVXRmOFRlc3QsIFN0b3BzV2hlbkxlbmd0aExpbWl0UmVhY2hlZCkgewogICBFWFBF
Q1RfU1RSRVEoIkFCQyIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJBQkNERUYiLCAzKS5jX3N0cigpKTsK
IH0KIAotCiAjaWYgIUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCiAvLyBUZXN0cyB0aGF0
IFVuaWNvZGUgY29kZS1wb2ludHMgdGhhdCBoYXZlIDE3IHRvIDIxIGJpdHMgYXJlIGVuY29kZWQK
IC8vIGFzIDExMTEweHh4IDEweHh4eHh4IDEweHh4eHh4IDEweHh4eHh4LiBUaGlzIGNvZGUgbWF5
IG5vdCBjb21waWxlCkBAIC00NzEsMjUgKzY4OCwyOSBAQCBURVNUKFdpZGVTdHJpbmdUb1V0ZjhU
ZXN0LCBDYW5FbmNvZGVJbnZhbGlkQ29kZVBvaW50KSB7CiAvLyBUZXN0cyB0aGF0IHN1cnJvZ2F0
ZSBwYWlycyBhcmUgZW5jb2RlZCBjb3JyZWN0bHkgb24gdGhlIHN5c3RlbXMgdXNpbmcKIC8vIFVU
Ri0xNiBlbmNvZGluZyBpbiB0aGUgd2lkZSBzdHJpbmdzLgogVEVTVChXaWRlU3RyaW5nVG9VdGY4
VGVzdCwgQ2FuRW5jb2RlVmFsaWRVdGYxNlNVcnJvZ2F0ZVBhaXJzKSB7Ci0gIEVYUEVDVF9TVFJF
USgiXHhGMFx4OTBceDkwXHg4MCIsCi0gICAgICAgICAgICAgICBXaWRlU3RyaW5nVG9VdGY4KEwi
XHhEODAxXHhEQzAwIiwgLTEpLmNfc3RyKCkpOworICBjb25zdCB3Y2hhcl90IHNbXSA9IHsgMHhE
ODAxLCAweERDMDAsICdcMCcgfTsKKyAgRVhQRUNUX1NUUkVRKCJceEYwXHg5MFx4OTBceDgwIiwg
V2lkZVN0cmluZ1RvVXRmOChzLCAtMSkuY19zdHIoKSk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgZW5j
b2RpbmcgYW4gaW52YWxpZCBVVEYtMTYgc3Vycm9nYXRlIHBhaXIKIC8vIGdlbmVyYXRlcyB0aGUg
ZXhwZWN0ZWQgcmVzdWx0LgogVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgQ2FuRW5jb2RlSW52
YWxpZFV0ZjE2U3Vycm9nYXRlUGFpcikgewogICAvLyBMZWFkaW5nIHN1cnJvZ2F0ZSBpcyBhdCB0
aGUgZW5kIG9mIHRoZSBzdHJpbmcuCi0gIEVYUEVDVF9TVFJFUSgiXHhFRFx4QTBceDgwIiwgV2lk
ZVN0cmluZ1RvVXRmOChMIlx4RDgwMCIsIC0xKS5jX3N0cigpKTsKKyAgY29uc3Qgd2NoYXJfdCBz
MVtdID0geyAweEQ4MDAsICdcMCcgfTsKKyAgRVhQRUNUX1NUUkVRKCJceEVEXHhBMFx4ODAiLCBX
aWRlU3RyaW5nVG9VdGY4KHMxLCAtMSkuY19zdHIoKSk7CiAgIC8vIExlYWRpbmcgc3Vycm9nYXRl
IGlzIG5vdCBmb2xsb3dlZCBieSB0aGUgdHJhaWxpbmcgc3Vycm9nYXRlLgotICBFWFBFQ1RfU1RS
RVEoIlx4RURceEEwXHg4MCQiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhEODAwJCIsIC0xKS5jX3N0
cigpKTsKKyAgY29uc3Qgd2NoYXJfdCBzMltdID0geyAweEQ4MDAsICdNJywgJ1wwJyB9OworICBF
WFBFQ1RfU1RSRVEoIlx4RURceEEwXHg4ME0iLCBXaWRlU3RyaW5nVG9VdGY4KHMyLCAtMSkuY19z
dHIoKSk7CiAgIC8vIFRyYWlsaW5nIHN1cnJvZ2F0ZSBhcHBlYXJhcyB3aXRob3V0IGEgbGVhZGlu
ZyBzdXJyb2dhdGUuCi0gIEVYUEVDVF9TVFJFUSgiXHhFRFx4QjBceDgwUFFSIiwgV2lkZVN0cmlu
Z1RvVXRmOChMIlx4REMwMFBRUiIsIC0xKS5jX3N0cigpKTsKKyAgY29uc3Qgd2NoYXJfdCBzM1td
ID0geyAweERDMDAsICdQJywgJ1EnLCAnUicsICdcMCcgfTsKKyAgRVhQRUNUX1NUUkVRKCJceEVE
XHhCMFx4ODBQUVIiLCBXaWRlU3RyaW5nVG9VdGY4KHMzLCAtMSkuY19zdHIoKSk7CiB9CiAjZW5k
aWYgIC8vICFHVEVTVF9XSURFX1NUUklOR19VU0VTX1VURjE2XwogCiAvLyBUZXN0cyB0aGF0IGNv
ZGVwb2ludCBjb25jYXRlbmF0aW9uIHdvcmtzIGNvcnJlY3RseS4KICNpZiAhR1RFU1RfV0lERV9T
VFJJTkdfVVNFU19VVEYxNl8KIFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENvbmNhdGVuYXRl
c0NvZGVwb2ludHNDb3JyZWN0bHkpIHsKKyAgY29uc3Qgd2NoYXJfdCBzW10gPSB7IDB4MTA4NjM0
LCAweEM3NEQsICdcbicsIDB4NTc2LCAweDhEMywgMHgxMDg2MzQsICdcMCd9OwogICBFWFBFQ1Rf
U1RSRVEoCiAgICAgICAiXHhGNFx4ODhceDk4XHhCNCIKICAgICAgICAgICAiXHhFQ1x4OURceDhE
IgpAQCAtNDk3LDEzICs3MTgsMTQgQEAgVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgQ29uY2F0
ZW5hdGVzQ29kZXBvaW50c0NvcnJlY3RseSkgewogICAgICAgICAgICJceEQ1XHhCNiIKICAgICAg
ICAgICAiXHhFMFx4QTNceDkzIgogICAgICAgICAgICJceEY0XHg4OFx4OThceEI0IiwKLSAgICAg
IFdpZGVTdHJpbmdUb1V0ZjgoTCJceDEwODYzNFx4Qzc0RFxuXHg1NzZceDhEM1x4MTA4NjM0Iiwg
LTEpLmNfc3RyKCkpOworICAgICAgV2lkZVN0cmluZ1RvVXRmOChzLCAtMSkuY19zdHIoKSk7CiB9
CiAjZWxzZQogVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgQ29uY2F0ZW5hdGVzQ29kZXBvaW50
c0NvcnJlY3RseSkgeworICBjb25zdCB3Y2hhcl90IHNbXSA9IHsgMHhDNzRELCAnXG4nLCAweDU3
NiwgMHg4RDMsICdcMCd9OwogICBFWFBFQ1RfU1RSRVEoCiAgICAgICAiXHhFQ1x4OURceDhEIiAi
XG4iICJceEQ1XHhCNiIgIlx4RTBceEEzXHg5MyIsCi0gICAgICBXaWRlU3RyaW5nVG9VdGY4KEwi
XHhDNzREXG5ceDU3Nlx4OEQzIiwgLTEpLmNfc3RyKCkpOworICAgICAgV2lkZVN0cmluZ1RvVXRm
OChzLCAtMSkuY19zdHIoKSk7CiB9CiAjZW5kaWYgIC8vICFHVEVTVF9XSURFX1NUUklOR19VU0VT
X1VURjE2XwogCkBAIC03OTcsMjY5ICsxMDE5LDE2IEBAIFRFU1QoQXNzZXJ0SGVscGVyVGVzdCwg
QXNzZXJ0SGVscGVySXNTbWFsbCkgewogICBFWFBFQ1RfTEUoc2l6ZW9mKHRlc3Rpbmc6OmludGVy
bmFsOjpBc3NlcnRIZWxwZXIpLCBzaXplb2Yodm9pZCopKTsKIH0KIAotLy8gVGVzdHMgdGhlIFN0
cmluZyBjbGFzcy4KLQotLy8gVGVzdHMgU3RyaW5nJ3MgY29uc3RydWN0b3JzLgotVEVTVChTdHJp
bmdUZXN0LCBDb25zdHJ1Y3RvcnMpIHsKLSAgLy8gRGVmYXVsdCBjdG9yLgotICBTdHJpbmcgczE7
Ci0gIC8vIFdlIGFyZW4ndCB1c2luZyBFWFBFQ1RfRVEoTlVMTCwgczEuY19zdHIoKSkgYmVjYXVz
ZSBjb21wYXJpbmcKLSAgLy8gcG9pbnRlcnMgd2l0aCBOVUxMIGlzbid0IHN1cHBvcnRlZCBvbiBh
bGwgcGxhdGZvcm1zLgotICBFWFBFQ1RfRVEoMFUsIHMxLmxlbmd0aCgpKTsKLSAgRVhQRUNUX1RS
VUUoTlVMTCA9PSBzMS5jX3N0cigpKTsKLQotICAvLyBJbXBsaWNpdGx5IGNvbnN0cnVjdHMgZnJv
bSBhIEMtc3RyaW5nLgotICBTdHJpbmcgczIgPSAiSGkiOwotICBFWFBFQ1RfRVEoMlUsIHMyLmxl
bmd0aCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJIaSIsIHMyLmNfc3RyKCkpOwotCi0gIC8vIENvbnN0
cnVjdHMgZnJvbSBhIEMtc3RyaW5nIGFuZCBhIGxlbmd0aC4KLSAgU3RyaW5nIHMzKCJoZWxsbyIs
IDMpOwotICBFWFBFQ1RfRVEoM1UsIHMzLmxlbmd0aCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJoZWwi
LCBzMy5jX3N0cigpKTsKLQotICAvLyBUaGUgZW1wdHkgU3RyaW5nIHNob3VsZCBiZSBjcmVhdGVk
IHdoZW4gU3RyaW5nIGlzIGNvbnN0cnVjdGVkIHdpdGgKLSAgLy8gYSBOVUxMIHBvaW50ZXIgYW5k
IGxlbmd0aCAwLgotICBFWFBFQ1RfRVEoMFUsIFN0cmluZyhOVUxMLCAwKS5sZW5ndGgoKSk7Ci0g
IEVYUEVDVF9GQUxTRShTdHJpbmcoTlVMTCwgMCkuY19zdHIoKSA9PSBOVUxMKTsKLQotICAvLyBD
b25zdHJ1Y3RzIGEgU3RyaW5nIHRoYXQgY29udGFpbnMgJ1wwJy4KLSAgU3RyaW5nIHM0KCJhXDBi
Y2QiLCA0KTsKLSAgRVhQRUNUX0VRKDRVLCBzNC5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgnYScs
IHM0LmNfc3RyKClbMF0pOwotICBFWFBFQ1RfRVEoJ1wwJywgczQuY19zdHIoKVsxXSk7Ci0gIEVY
UEVDVF9FUSgnYicsIHM0LmNfc3RyKClbMl0pOwotICBFWFBFQ1RfRVEoJ2MnLCBzNC5jX3N0cigp
WzNdKTsKLQotICAvLyBDb3B5IGN0b3Igd2hlcmUgdGhlIHNvdXJjZSBpcyBOVUxMLgotICBjb25z
dCBTdHJpbmcgbnVsbF9zdHI7Ci0gIFN0cmluZyBzNSA9IG51bGxfc3RyOwotICBFWFBFQ1RfVFJV
RShzNS5jX3N0cigpID09IE5VTEwpOwotCi0gIC8vIENvcHkgY3RvciB3aGVyZSB0aGUgc291cmNl
IGlzbid0IE5VTEwuCi0gIFN0cmluZyBzNiA9IHMzOwotICBFWFBFQ1RfRVEoM1UsIHM2Lmxlbmd0
aCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJoZWwiLCBzNi5jX3N0cigpKTsKLQotICAvLyBDb3B5IGN0
b3Igd2hlcmUgdGhlIHNvdXJjZSBjb250YWlucyAnXDAnLgotICBTdHJpbmcgczcgPSBzNDsKLSAg
RVhQRUNUX0VRKDRVLCBzNy5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgnYScsIHM3LmNfc3RyKClb
MF0pOwotICBFWFBFQ1RfRVEoJ1wwJywgczcuY19zdHIoKVsxXSk7Ci0gIEVYUEVDVF9FUSgnYics
IHM3LmNfc3RyKClbMl0pOwotICBFWFBFQ1RfRVEoJ2MnLCBzNy5jX3N0cigpWzNdKTsKLX0KLQot
VEVTVChTdHJpbmdUZXN0LCBDb252ZXJ0c0Zyb21TdGRTdHJpbmcpIHsKLSAgLy8gQW4gZW1wdHkg
c3RkOjpzdHJpbmcuCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIHNyYzEoIiIpOwotICBjb25zdCBTdHJp
bmcgZGVzdDEgPSBzcmMxOwotICBFWFBFQ1RfRVEoMFUsIGRlc3QxLmxlbmd0aCgpKTsKLSAgRVhQ
RUNUX1NUUkVRKCIiLCBkZXN0MS5jX3N0cigpKTsKLQotICAvLyBBIG5vcm1hbCBzdGQ6OnN0cmlu
Zy4KLSAgY29uc3Qgc3RkOjpzdHJpbmcgc3JjMigiSGkiKTsKLSAgY29uc3QgU3RyaW5nIGRlc3Qy
ID0gc3JjMjsKLSAgRVhQRUNUX0VRKDJVLCBkZXN0Mi5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJF
USgiSGkiLCBkZXN0Mi5jX3N0cigpKTsKLQotICAvLyBBbiBzdGQ6OnN0cmluZyB3aXRoIGFuIGVt
YmVkZGVkIE5VTCBjaGFyYWN0ZXIuCi0gIGNvbnN0IGNoYXIgc3JjM1tdID0gImFcMGIiOwotICBj
b25zdCBTdHJpbmcgZGVzdDMgPSBzdGQ6OnN0cmluZyhzcmMzLCBzaXplb2Yoc3JjMykpOwotICBF
WFBFQ1RfRVEoc2l6ZW9mKHNyYzMpLCBkZXN0My5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgnYScs
IGRlc3QzLmNfc3RyKClbMF0pOwotICBFWFBFQ1RfRVEoJ1wwJywgZGVzdDMuY19zdHIoKVsxXSk7
Ci0gIEVYUEVDVF9FUSgnYicsIGRlc3QzLmNfc3RyKClbMl0pOwotfQotCi1URVNUKFN0cmluZ1Rl
c3QsIENvbnZlcnRzVG9TdGRTdHJpbmcpIHsKLSAgLy8gQW4gZW1wdHkgU3RyaW5nLgotICBjb25z
dCBTdHJpbmcgc3JjMSgiIik7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGRlc3QxID0gc3JjMTsKLSAg
RVhQRUNUX0VRKCIiLCBkZXN0MSk7Ci0KLSAgLy8gQSBub3JtYWwgU3RyaW5nLgotICBjb25zdCBT
dHJpbmcgc3JjMigiSGkiKTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZGVzdDIgPSBzcmMyOwotICBF
WFBFQ1RfRVEoIkhpIiwgZGVzdDIpOwotCi0gIC8vIEEgU3RyaW5nIGNvbnRhaW5pbmcgYSAnXDAn
LgotICBjb25zdCBTdHJpbmcgc3JjMygieFwweSIsIDMpOwotICBjb25zdCBzdGQ6OnN0cmluZyBk
ZXN0MyA9IHNyYzM7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0cmluZygieFwweSIsIDMpLCBkZXN0Myk7
Ci19Ci0KLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotCi1URVNUKFN0cmluZ1Rlc3QsIENv
bnZlcnRzRnJvbUdsb2JhbFN0cmluZykgewotICAvLyBBbiBlbXB0eSA6OnN0cmluZy4KLSAgY29u
c3QgOjpzdHJpbmcgc3JjMSgiIik7Ci0gIGNvbnN0IFN0cmluZyBkZXN0MSA9IHNyYzE7Ci0gIEVY
UEVDVF9FUSgwVSwgZGVzdDEubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIGRlc3QxLmNf
c3RyKCkpOwotCi0gIC8vIEEgbm9ybWFsIDo6c3RyaW5nLgotICBjb25zdCA6OnN0cmluZyBzcmMy
KCJIaSIpOwotICBjb25zdCBTdHJpbmcgZGVzdDIgPSBzcmMyOwotICBFWFBFQ1RfRVEoMlUsIGRl
c3QyLmxlbmd0aCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJIaSIsIGRlc3QyLmNfc3RyKCkpOwotCi0g
IC8vIEFuIDo6c3RyaW5nIHdpdGggYW4gZW1iZWRkZWQgTlVMIGNoYXJhY3Rlci4KLSAgY29uc3Qg
Y2hhciBzcmMzW10gPSAieFwweSI7Ci0gIGNvbnN0IFN0cmluZyBkZXN0MyA9IDo6c3RyaW5nKHNy
YzMsIHNpemVvZihzcmMzKSk7Ci0gIEVYUEVDVF9FUShzaXplb2Yoc3JjMyksIGRlc3QzLmxlbmd0
aCgpKTsKLSAgRVhQRUNUX0VRKCd4JywgZGVzdDMuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgn
XDAnLCBkZXN0My5jX3N0cigpWzFdKTsKLSAgRVhQRUNUX0VRKCd5JywgZGVzdDMuY19zdHIoKVsy
XSk7Ci19Ci0KLVRFU1QoU3RyaW5nVGVzdCwgQ29udmVydHNUb0dsb2JhbFN0cmluZykgewotICAv
LyBBbiBlbXB0eSBTdHJpbmcuCi0gIGNvbnN0IFN0cmluZyBzcmMxKCIiKTsKLSAgY29uc3QgOjpz
dHJpbmcgZGVzdDEgPSBzcmMxOwotICBFWFBFQ1RfRVEoIiIsIGRlc3QxKTsKLQotICAvLyBBIG5v
cm1hbCBTdHJpbmcuCi0gIGNvbnN0IFN0cmluZyBzcmMyKCJIaSIpOwotICBjb25zdCA6OnN0cmlu
ZyBkZXN0MiA9IHNyYzI7Ci0gIEVYUEVDVF9FUSgiSGkiLCBkZXN0Mik7Ci0KLSAgY29uc3QgU3Ry
aW5nIHNyYzMoInhcMHkiLCAzKTsKLSAgY29uc3QgOjpzdHJpbmcgZGVzdDMgPSBzcmMzOwotICBF
WFBFQ1RfRVEoOjpzdHJpbmcoInhcMHkiLCAzKSwgZGVzdDMpOwotfQotCi0jZW5kaWYgIC8vIEdU
RVNUX0hBU19HTE9CQUxfU1RSSU5HCi0KLS8vIFRlc3RzIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90
ZWQoKS4KLVRFU1QoU3RyaW5nVGVzdCwgU2hvd0NTdHJpbmdRdW90ZWQpIHsKLSAgRVhQRUNUX1NU
UkVRKCIobnVsbCkiLAotICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93Q1N0cmluZ1F1b3RlZChO
VUxMKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJcIlwiIiwKLSAgICAgICAgICAgICAgIFN0
cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQoIiIpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIlwi
Zm9vXCIiLAotICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93Q1N0cmluZ1F1b3RlZCgiZm9vIiku
Y19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIFN0cmluZzo6ZW1wdHkoKS4KLVRFU1QoU3RyaW5nVGVz
dCwgRW1wdHkpIHsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCIiKS5lbXB0eSgpKTsKLSAgRVhQRUNU
X0ZBTFNFKFN0cmluZygpLmVtcHR5KCkpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKE5VTEwpLmVt
cHR5KCkpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCJhIikuZW1wdHkoKSk7Ci0gIEVYUEVDVF9G
QUxTRShTdHJpbmcoIlwwIiwgMSkuZW1wdHkoKSk7Ci19Ci0KLS8vIFRlc3RzIFN0cmluZzo6Q29t
cGFyZSgpLgotVEVTVChTdHJpbmdUZXN0LCBDb21wYXJlKSB7Ci0gIC8vIE5VTEwgdnMgTlVMTC4K
LSAgRVhQRUNUX0VRKDAsIFN0cmluZygpLkNvbXBhcmUoU3RyaW5nKCkpKTsKLQotICAvLyBOVUxM
IHZzIG5vbi1OVUxMLgotICBFWFBFQ1RfRVEoLTEsIFN0cmluZygpLkNvbXBhcmUoU3RyaW5nKCIi
KSkpOwotCi0gIC8vIE5vbi1OVUxMIHZzIE5VTEwuCi0gIEVYUEVDVF9FUSgxLCBTdHJpbmcoIiIp
LkNvbXBhcmUoU3RyaW5nKCkpKTsKLQotICAvLyBUaGUgZm9sbG93aW5nIGNvdmVycyBub24tTlVM
TCB2cyBub24tTlVMTC4KLQotICAvLyAiIiB2cyAiIi4KLSAgRVhQRUNUX0VRKDAsIFN0cmluZygi
IikuQ29tcGFyZShTdHJpbmcoIiIpKSk7Ci0KLSAgLy8gIiIgdnMgbm9uLSIiLgotICBFWFBFQ1Rf
RVEoLTEsIFN0cmluZygiIikuQ29tcGFyZShTdHJpbmcoIlwwIiwgMSkpKTsKLSAgRVhQRUNUX0VR
KC0xLCBTdHJpbmcoIiIpLkNvbXBhcmUoIiAiKSk7Ci0KLSAgLy8gTm9uLSIiIHZzICIiLgotICBF
WFBFQ1RfRVEoMSwgU3RyaW5nKCJhIikuQ29tcGFyZShTdHJpbmcoIiIpKSk7Ci0KLSAgLy8gVGhl
IGZvbGxvd2luZyBjb3ZlcnMgbm9uLSIiIHZzIG5vbi0iIi4KLQotICAvLyBTYW1lIGxlbmd0aCBh
bmQgZXF1YWwuCi0gIEVYUEVDVF9FUSgwLCBTdHJpbmcoImEiKS5Db21wYXJlKFN0cmluZygiYSIp
KSk7Ci0KLSAgLy8gU2FtZSBsZW5ndGggYW5kIGRpZmZlcmVudC4KLSAgRVhQRUNUX0VRKC0xLCBT
dHJpbmcoImFcMGIiLCAzKS5Db21wYXJlKFN0cmluZygiYVwwYyIsIDMpKSk7Ci0gIEVYUEVDVF9F
USgxLCBTdHJpbmcoImIiKS5Db21wYXJlKFN0cmluZygiYSIpKSk7Ci0KLSAgLy8gRGlmZmVyZW50
IGxlbmd0aHMuCi0gIEVYUEVDVF9FUSgtMSwgU3RyaW5nKCJhIikuQ29tcGFyZShTdHJpbmcoImFi
IikpKTsKLSAgRVhQRUNUX0VRKC0xLCBTdHJpbmcoImEiKS5Db21wYXJlKFN0cmluZygiYVwwIiwg
MikpKTsKLSAgRVhQRUNUX0VRKDEsIFN0cmluZygiYWJjIikuQ29tcGFyZShTdHJpbmcoImFhY2Qi
KSkpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6Om9wZXJhdG9yPT0oKS4KLVRFU1QoU3RyaW5nVGVz
dCwgRXF1YWxzKSB7Ci0gIGNvbnN0IFN0cmluZyBudWxsKE5VTEwpOwotICBFWFBFQ1RfVFJVRShu
dWxsID09IE5VTEwpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShudWxsID09ICIiKTsgIC8v
IE5PTElOVAotICBFWFBFQ1RfRkFMU0UobnVsbCA9PSAiYmFyIik7ICAvLyBOT0xJTlQKLQotICBj
b25zdCBTdHJpbmcgZW1wdHkoIiIpOwotICBFWFBFQ1RfRkFMU0UoZW1wdHkgPT0gTlVMTCk7ICAv
LyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUoZW1wdHkgPT0gIiIpOyAgLy8gTk9MSU5UCi0gIEVYUEVD
VF9GQUxTRShlbXB0eSA9PSAiYmFyIik7ICAvLyBOT0xJTlQKLQotICBjb25zdCBTdHJpbmcgZm9v
KCJmb28iKTsKLSAgRVhQRUNUX0ZBTFNFKGZvbyA9PSBOVUxMKTsgIC8vIE5PTElOVAotICBFWFBF
Q1RfRkFMU0UoZm9vID09ICIiKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRkFMU0UoZm9vID09ICJi
YXIiKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShmb28gPT0gImZvbyIpOyAgLy8gTk9MSU5U
Ci0KLSAgY29uc3QgU3RyaW5nIGJhcigieFwweSIsIDMpOwotICBFWFBFQ1RfRkFMU0UoYmFyID09
ICJ4Iik7Ci19Ci0KLS8vIFRlc3RzIFN0cmluZzo6b3BlcmF0b3IhPSgpLgotVEVTVChTdHJpbmdU
ZXN0LCBOb3RFcXVhbHMpIHsKLSAgY29uc3QgU3RyaW5nIG51bGwoTlVMTCk7Ci0gIEVYUEVDVF9G
QUxTRShudWxsICE9IE5VTEwpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKG51bGwgIT0gIiIp
OyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKG51bGwgIT0gImJhciIpOyAgLy8gTk9MSU5UCi0K
LSAgY29uc3QgU3RyaW5nIGVtcHR5KCIiKTsKLSAgRVhQRUNUX1RSVUUoZW1wdHkgIT0gTlVMTCk7
ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKGVtcHR5ICE9ICIiKTsgIC8vIE5PTElOVAotICBF
WFBFQ1RfVFJVRShlbXB0eSAhPSAiYmFyIik7ICAvLyBOT0xJTlQKLQotICBjb25zdCBTdHJpbmcg
Zm9vKCJmb28iKTsKLSAgRVhQRUNUX1RSVUUoZm9vICE9IE5VTEwpOyAgLy8gTk9MSU5UCi0gIEVY
UEVDVF9UUlVFKGZvbyAhPSAiIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUoZm9vICE9ICJi
YXIiKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRkFMU0UoZm9vICE9ICJmb28iKTsgIC8vIE5PTElO
VAotCi0gIGNvbnN0IFN0cmluZyBiYXIoInhcMHkiLCAzKTsKLSAgRVhQRUNUX1RSVUUoYmFyICE9
ICJ4Iik7Ci19Ci0KLS8vIFRlc3RzIFN0cmluZzo6bGVuZ3RoKCkuCi1URVNUKFN0cmluZ1Rlc3Qs
IExlbmd0aCkgewotICBFWFBFQ1RfRVEoMFUsIFN0cmluZygpLmxlbmd0aCgpKTsKLSAgRVhQRUNU
X0VRKDBVLCBTdHJpbmcoIiIpLmxlbmd0aCgpKTsKLSAgRVhQRUNUX0VRKDJVLCBTdHJpbmcoImFi
IikubGVuZ3RoKCkpOwotICBFWFBFQ1RfRVEoM1UsIFN0cmluZygiYVwwYiIsIDMpLmxlbmd0aCgp
KTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpFbmRzV2l0aCgpLgotVEVTVChTdHJpbmdUZXN0LCBF
bmRzV2l0aCkgewotICBFWFBFQ1RfVFJVRShTdHJpbmcoImZvb2JhciIpLkVuZHNXaXRoKCJiYXIi
KSk7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiZm9vYmFyIikuRW5kc1dpdGgoIiIpKTsKLSAgRVhQ
RUNUX1RSVUUoU3RyaW5nKCIiKS5FbmRzV2l0aCgiIikpOwotCi0gIEVYUEVDVF9GQUxTRShTdHJp
bmcoImZvb2JhciIpLkVuZHNXaXRoKCJmb28iKSk7Ci0gIEVYUEVDVF9GQUxTRShTdHJpbmcoIiIp
LkVuZHNXaXRoKCJmb28iKSk7Ci19Ci0KIC8vIFRlc3RzIFN0cmluZzo6RW5kc1dpdGhDYXNlSW5z
ZW5zaXRpdmUoKS4KIFRFU1QoU3RyaW5nVGVzdCwgRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUpIHsK
LSAgRVhQRUNUX1RSVUUoU3RyaW5nKCJmb29iYXIiKS5FbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgi
QkFSIikpOwotICBFWFBFQ1RfVFJVRShTdHJpbmcoImZvb2JhUiIpLkVuZHNXaXRoQ2FzZUluc2Vu
c2l0aXZlKCJiYXIiKSk7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiZm9vYmFyIikuRW5kc1dpdGhD
YXNlSW5zZW5zaXRpdmUoIiIpKTsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCIiKS5FbmRzV2l0aENh
c2VJbnNlbnNpdGl2ZSgiIikpOworICBFWFBFQ1RfVFJVRShTdHJpbmc6OkVuZHNXaXRoQ2FzZUlu
c2Vuc2l0aXZlKCJmb29iYXIiLCAiQkFSIikpOworICBFWFBFQ1RfVFJVRShTdHJpbmc6OkVuZHNX
aXRoQ2FzZUluc2Vuc2l0aXZlKCJmb29iYVIiLCAiYmFyIikpOworICBFWFBFQ1RfVFJVRShTdHJp
bmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCJmb29iYXIiLCAiIikpOworICBFWFBFQ1RfVFJV
RShTdHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCIiLCAiIikpOwogCi0gIEVYUEVDVF9G
QUxTRShTdHJpbmcoIkZvb2JhciIpLkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCJmb28iKSk7Ci0g
IEVYUEVDVF9GQUxTRShTdHJpbmcoImZvb2JhciIpLkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCJG
b28iKSk7Ci0gIEVYUEVDVF9GQUxTRShTdHJpbmcoIiIpLkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZl
KCJmb28iKSk7CisgIEVYUEVDVF9GQUxTRShTdHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZl
KCJGb29iYXIiLCAiZm9vIikpOworICBFWFBFQ1RfRkFMU0UoU3RyaW5nOjpFbmRzV2l0aENhc2VJ
bnNlbnNpdGl2ZSgiZm9vYmFyIiwgIkZvbyIpKTsKKyAgRVhQRUNUX0ZBTFNFKFN0cmluZzo6RW5k
c1dpdGhDYXNlSW5zZW5zaXRpdmUoIiIsICJmb28iKSk7CiB9CiAKIC8vIEMrK0J1aWxkZXIncyBw
cmVwcm9jZXNzb3IgaXMgYnVnZ3k7IGl0IGZhaWxzIHRvIGV4cGFuZCBtYWNyb3MgdGhhdApAQCAt
MTA3OSw4NyArMTA0OCw2IEBAIFRFU1QoU3RyaW5nVGVzdCwgQ2FzZUluc2Vuc2l0aXZlV2lkZUNT
dHJpbmdFcXVhbHMpIHsKICAgRVhQRUNUX1RSVUUoU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVXaWRl
Q1N0cmluZ0VxdWFscyhMIkZPT0JBUiIsIEwiZm9vYmFyIikpOwogfQogCi0vLyBUZXN0cyB0aGF0
IE5VTEwgY2FuIGJlIGFzc2lnbmVkIHRvIGEgU3RyaW5nLgotVEVTVChTdHJpbmdUZXN0LCBDYW5C
ZUFzc2lnbmVkTlVMTCkgewotICBjb25zdCBTdHJpbmcgc3JjKE5VTEwpOwotICBTdHJpbmcgZGVz
dDsKLQotICBkZXN0ID0gc3JjOwotICBFWFBFQ1RfU1RSRVEoTlVMTCwgZGVzdC5jX3N0cigpKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgZW1wdHkgc3RyaW5nICIiIGNhbiBiZSBhc3NpZ25lZCB0
byBhIFN0cmluZy4KLVRFU1QoU3RyaW5nVGVzdCwgQ2FuQmVBc3NpZ25lZEVtcHR5KSB7Ci0gIGNv
bnN0IFN0cmluZyBzcmMoIiIpOwotICBTdHJpbmcgZGVzdDsKLQotICBkZXN0ID0gc3JjOwotICBF
WFBFQ1RfU1RSRVEoIiIsIGRlc3QuY19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBub24t
ZW1wdHkgc3RyaW5nIGNhbiBiZSBhc3NpZ25lZCB0byBhIFN0cmluZy4KLVRFU1QoU3RyaW5nVGVz
dCwgQ2FuQmVBc3NpZ25lZE5vbkVtcHR5KSB7Ci0gIGNvbnN0IFN0cmluZyBzcmMoImhlbGxvIik7
Ci0gIFN0cmluZyBkZXN0OwotICBkZXN0ID0gc3JjOwotICBFWFBFQ1RfRVEoNVUsIGRlc3QubGVu
Z3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoImhlbGxvIiwgZGVzdC5jX3N0cigpKTsKLQotICBjb25z
dCBTdHJpbmcgc3JjMigieFwweSIsIDMpOwotICBTdHJpbmcgZGVzdDI7Ci0gIGRlc3QyID0gc3Jj
MjsKLSAgRVhQRUNUX0VRKDNVLCBkZXN0Mi5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgneCcsIGRl
c3QyLmNfc3RyKClbMF0pOwotICBFWFBFQ1RfRVEoJ1wwJywgZGVzdDIuY19zdHIoKVsxXSk7Ci0g
IEVYUEVDVF9FUSgneScsIGRlc3QyLmNfc3RyKClbMl0pOwotfQotCi0vLyBUZXN0cyB0aGF0IGEg
U3RyaW5nIGNhbiBiZSBhc3NpZ25lZCB0byBpdHNlbGYuCi1URVNUKFN0cmluZ1Rlc3QsIENhbkJl
QXNzaWduZWRTZWxmKSB7Ci0gIFN0cmluZyBkZXN0KCJoZWxsbyIpOwotCi0gIGRlc3QgPSBkZXN0
OwotICBFWFBFQ1RfU1RSRVEoImhlbGxvIiwgZGVzdC5jX3N0cigpKTsKLX0KLQotLy8gU3VuIFN0
dWRpbyA8IDEyIGluY29ycmVjdGx5IHJlamVjdHMgdGhpcyBjb2RlIGR1ZSB0byBhbiBvdmVybG9h
ZGluZwotLy8gYW1iaWd1aXR5LgotI2lmICEoZGVmaW5lZChfX1NVTlBST19DQykgJiYgX19TVU5Q
Uk9fQ0MgPCAweDU5MCkKLS8vIFRlc3RzIHN0cmVhbWluZyBhIFN0cmluZy4KLVRFU1QoU3RyaW5n
VGVzdCwgU3RyZWFtcykgewotICBFWFBFQ1RfRVEoU3RyZWFtYWJsZVRvU3RyaW5nKFN0cmluZygp
KSwgIihudWxsKSIpOwotICBFWFBFQ1RfRVEoU3RyZWFtYWJsZVRvU3RyaW5nKFN0cmluZygiIikp
LCAiIik7Ci0gIEVYUEVDVF9FUShTdHJlYW1hYmxlVG9TdHJpbmcoU3RyaW5nKCJhXDBiIiwgMykp
LCAiYVxcMGIiKTsKLX0KLSNlbmRpZgotCi0vLyBUZXN0cyB0aGF0IFN0cmluZzo6Rm9ybWF0KCkg
d29ya3MuCi1URVNUKFN0cmluZ1Rlc3QsIEZvcm1hdFdvcmtzKSB7Ci0gIC8vIE5vcm1hbCBjYXNl
OiB0aGUgZm9ybWF0IHNwZWMgaXMgdmFsaWQsIHRoZSBhcmd1bWVudHMgbWF0Y2ggdGhlCi0gIC8v
IHNwZWMsIGFuZCB0aGUgcmVzdWx0IGlzIDwgNDA5NSBjaGFyYWN0ZXJzLgotICBFWFBFQ1RfU1RS
RVEoIkhlbGxvLCA0MiIsIFN0cmluZzo6Rm9ybWF0KCIlcywgJWQiLCAiSGVsbG8iLCA0MikuY19z
dHIoKSk7Ci0KLSAgLy8gRWRnZSBjYXNlOiB0aGUgcmVzdWx0IGlzIDQwOTUgY2hhcmFjdGVycy4K
LSAgY2hhciBidWZmZXJbNDA5Nl07Ci0gIGNvbnN0IHNpemVfdCBrU2l6ZSA9IHNpemVvZihidWZm
ZXIpOwotICBtZW1zZXQoYnVmZmVyLCAnYScsIGtTaXplIC0gMSk7Ci0gIGJ1ZmZlcltrU2l6ZSAt
IDFdID0gJ1wwJzsKLSAgRVhQRUNUX1NUUkVRKGJ1ZmZlciwgU3RyaW5nOjpGb3JtYXQoIiVzIiwg
YnVmZmVyKS5jX3N0cigpKTsKLQotICAvLyBUaGUgcmVzdWx0IG5lZWRzIHRvIGJlIDQwOTYgY2hh
cmFjdGVycywgZXhjZWVkaW5nIEZvcm1hdCgpJ3MgbGltaXQuCi0gIEVYUEVDVF9TVFJFUSgiPGZv
cm1hdHRpbmcgZXJyb3Igb3IgYnVmZmVyIGV4Y2VlZGVkPiIsCi0gICAgICAgICAgICAgICBTdHJp
bmc6OkZvcm1hdCgieCVzIiwgYnVmZmVyKS5jX3N0cigpKTsKLQotI2lmIEdURVNUX09TX0xJTlVY
Ci0gIC8vIE9uIExpbnV4LCBpbnZhbGlkIGZvcm1hdCBzcGVjIHNob3VsZCBsZWFkIHRvIGFuIGVy
cm9yIG1lc3NhZ2UuCi0gIC8vIEluIG90aGVyIGVudmlyb25tZW50IChlLmcuIE1TVkMgb24gV2lu
ZG93cyksIFN0cmluZzo6Rm9ybWF0KCkgbWF5Ci0gIC8vIHNpbXBseSBpZ25vcmUgYSBiYWQgZm9y
bWF0IHNwZWMsIHNvIHRoaXMgYXNzZXJ0aW9uIGlzIHJ1biBvbgotICAvLyBMaW51eCBvbmx5Lgot
ICBFWFBFQ1RfU1RSRVEoIjxmb3JtYXR0aW5nIGVycm9yIG9yIGJ1ZmZlciBleGNlZWRlZD4iLAot
ICAgICAgICAgICAgICAgU3RyaW5nOjpGb3JtYXQoIiUiKS5jX3N0cigpKTsKLSNlbmRpZgotfQot
CiAjaWYgR1RFU1RfT1NfV0lORE9XUwogCiAvLyBUZXN0cyBTdHJpbmc6OlNob3dXaWRlQ1N0cmlu
ZygpLgpAQCAtMTE3MCwxNyArMTA1OCw3IEBAIFRFU1QoU3RyaW5nVGVzdCwgU2hvd1dpZGVDU3Ry
aW5nKSB7CiAgIEVYUEVDVF9TVFJFUSgiZm9vIiwgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmcoTCJm
b28iKS5jX3N0cigpKTsKIH0KIAotLy8gVGVzdHMgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90
ZWQoKS4KLVRFU1QoU3RyaW5nVGVzdCwgU2hvd1dpZGVDU3RyaW5nUXVvdGVkKSB7Ci0gIEVYUEVD
VF9TVFJFUSgiKG51bGwpIiwKLSAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5n
UXVvdGVkKE5VTEwpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIkxcIlwiIiwKLSAgICAgICAg
ICAgICAgIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVvdGVkKEwiIikuY19zdHIoKSk7Ci0gIEVY
UEVDVF9TVFJFUSgiTFwiZm9vXCIiLAotICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93V2lkZUNT
dHJpbmdRdW90ZWQoTCJmb28iKS5jX3N0cigpKTsKLX0KLQotI2lmIEdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFCisjIGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiBURVNUKFN0cmluZ1Rlc3QsIEFu
c2lBbmRVdGYxNk51bGwpIHsKICAgRVhQRUNUX0VRKE5VTEwsIFN0cmluZzo6QW5zaVRvVXRmMTYo
TlVMTCkpOwogICBFWFBFQ1RfRVEoTlVMTCwgU3RyaW5nOjpVdGYxNlRvQW5zaShOVUxMKSk7CkBA
IC0xMjAzLDcgKzEwODEsNyBAQCBURVNUKFN0cmluZ1Rlc3QsIEFuc2lBbmRVdGYxNkNvbnZlcnRQ
YXRoQ2hhcnMpIHsKICAgRVhQRUNUX0VRKDAsIHdjc25jbXAoTCIuOlxcIFwiKj8iLCB1dGYxNiwg
MykpOwogICBkZWxldGUgW10gdXRmMTY7CiB9Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogCiAjZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1MKIApAQCAtMTMxNyw2ICsxMTk1LDE3IEBAIFRFU1RfRihFeHBlY3RG
YXRhbEZhaWx1cmVUZXN0LCBDYXRjaGVzRmF0YWxGYWxpdXJlKSB7CiAgIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKEFkZEZhdGFsRmFpbHVyZSgpLCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKIH0K
IAorI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCitURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdCwgQWNjZXB0c1N0cmluZ09iamVjdCkgeworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRG
YXRhbEZhaWx1cmUoKSwgOjpzdHJpbmcoIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIikpOworfQor
I2VuZGlmCisKK1RFU1RfRihFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBBY2NlcHRzU3RkU3RyaW5n
T2JqZWN0KSB7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFkZEZhdGFsRmFpbHVyZSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6c3RyaW5nKCJFeHBlY3RlZCBmYXRhbCBmYWlsdXJl
LiIpKTsKK30KKwogVEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIENhdGNoZXNGYXRhbEZh
aWx1cmVPbkFsbFRocmVhZHMpIHsKICAgLy8gV2UgaGF2ZSBhbm90aGVyIHRlc3QgYmVsb3cgdG8g
dmVyaWZ5IHRoYXQgdGhlIG1hY3JvIGNhdGNoZXMgZmF0YWwKICAgLy8gZmFpbHVyZXMgZ2VuZXJh
dGVkIG9uIGFub3RoZXIgdGhyZWFkLgpAQCAtMTMyNiw3ICsxMjE1LDcgQEAgVEVTVF9GKEV4cGVj
dEZhdGFsRmFpbHVyZVRlc3QsIENhdGNoZXNGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKIAog
I2lmZGVmIF9fQk9STEFORENfXwogLy8gU2lsZW5jZXMgd2FybmluZ3M6ICJDb25kaXRpb24gaXMg
YWx3YXlzIHRydWUiCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYworIyBwcmFnbWEgb3B0aW9u
IHB1c2ggLXctY2NjCiAjZW5kaWYKIAogLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVS
RSgpIGNhbiBiZSB1c2VkIGluIGEgbm9uLXZvaWQKQEAgLTEzNTQsNyArMTI0Myw3IEBAIHZvaWQg
RG9lc05vdEFib3J0SGVscGVyKGJvb2wqIGFib3J0ZWQpIHsKIAogI2lmZGVmIF9fQk9STEFORENf
XwogLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0ZXIgcHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1
c2giIHN1cHByZXNzZWQgdGhlbS4KLSNwcmFnbWEgb3B0aW9uIHBvcAorIyBwcmFnbWEgb3B0aW9u
IHBvcAogI2VuZGlmCiAKIFRFU1RfRihFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBEb2VzTm90QWJv
cnQpIHsKQEAgLTEzNzEsOCArMTI2MCw4IEBAIHN0YXRpYyBpbnQgZ2xvYmFsX3ZhciA9IDA7CiAj
ZGVmaW5lIEdURVNUX1VTRV9VTlBST1RFQ1RFRF9DT01NQV8gZ2xvYmFsX3ZhcisrLCBnbG9iYWxf
dmFyKysKIAogVEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEFjY2VwdHNNYWNyb1RoYXRF
eHBhbmRzVG9VbnByb3RlY3RlZENvbW1hKSB7Ci0jaWYgIWRlZmluZWQoX19CT1JMQU5EQ19fKSB8
fCBfX0JPUkxBTkRDX18gPj0gMHg2MDAKLSAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlciAyMDA3Lgor
I2lmbmRlZiBfX0JPUkxBTkRDX18KKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4KICAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoewogICAgIEdURVNUX1VTRV9VTlBST1RFQ1RFRF9DT01NQV87CiAgICAg
QWRkRmF0YWxGYWlsdXJlKCk7CkBAIC0xMzk0LDYgKzEyODMsMTggQEAgVEVTVF9GKEV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QsIENhdGNoZXNOb25mYXRhbEZhaWx1cmUpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwogfQogCisjaWYg
R1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK1RFU1RfRihFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LCBBY2NlcHRzU3RyaW5nT2JqZWN0KSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZE5v
bmZhdGFsRmFpbHVyZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0cmluZygiRXhw
ZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIikpOworfQorI2VuZGlmCisKK1RFU1RfRihFeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LCBBY2NlcHRzU3RkU3RyaW5nT2JqZWN0KSB7CisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEFkZE5vbmZhdGFsRmFpbHVyZSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICA6OnN0ZDo6c3RyaW5nKCJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKSk7Cit9
CisKIFRFU1RfRihFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBDYXRjaGVzTm9uZmF0YWxGYWls
dXJlT25BbGxUaHJlYWRzKSB7CiAgIC8vIFdlIGhhdmUgYW5vdGhlciB0ZXN0IGJlbG93IHRvIHZl
cmlmeSB0aGF0IHRoZSBtYWNybyBjYXRjaGVzCiAgIC8vIG5vbi1mYXRhbCBmYWlsdXJlcyBnZW5l
cmF0ZWQgb24gYW5vdGhlciB0aHJlYWQuCkBAIC0xNDgzLDggKzEzODQsNyBAQCBjbGFzcyBUZXN0
UmVzdWx0VGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICAvLyBJbiBvcmRlciB0byB0ZXN0IFRlc3RS
ZXN1bHQsIHdlIG5lZWQgdG8gbW9kaWZ5IGl0cyBpbnRlcm5hbAogICAgIC8vIHN0YXRlLCBpbiBw
YXJ0aWN1bGFyIHRoZSBUZXN0UGFydFJlc3VsdCB2ZWN0b3IgaXQgaG9sZHMuCiAgICAgLy8gdGVz
dF9wYXJ0X3Jlc3VsdHMoKSByZXR1cm5zIGEgY29uc3QgcmVmZXJlbmNlIHRvIHRoaXMgdmVjdG9y
LgotICAgIC8vIFdlIGNhc3QgaXQgdG8gYSBub24tY29uc3Qgb2JqZWN0IHMudC4gaXQgY2FuIGJl
IG1vZGlmaWVkICh5ZXMsCi0gICAgLy8gdGhpcyBpcyBhIGhhY2spLgorICAgIC8vIFdlIGNhc3Qg
aXQgdG8gYSBub24tY29uc3Qgb2JqZWN0IHMudC4gaXQgY2FuIGJlIG1vZGlmaWVkCiAgICAgVFBS
VmVjdG9yKiByZXN1bHRzMSA9IGNvbnN0X2Nhc3Q8VFBSVmVjdG9yKj4oCiAgICAgICAgICZUZXN0
UmVzdWx0QWNjZXNzb3I6OnRlc3RfcGFydF9yZXN1bHRzKCpyMSkpOwogICAgIFRQUlZlY3Rvciog
cmVzdWx0czIgPSBjb25zdF9jYXN0PFRQUlZlY3Rvcio+KApAQCAtMTUwOSw3ICsxNDA5LDcgQEAg
Y2xhc3MgVGVzdFJlc3VsdFRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgZGVsZXRlIHIyOwogICB9
CiAKLSAgLy8gSGVscGVyIHRoYXQgY29tcGFyZXMgdHdvIHR3byBUZXN0UGFydFJlc3VsdHMuCisg
IC8vIEhlbHBlciB0aGF0IGNvbXBhcmVzIHR3byBUZXN0UGFydFJlc3VsdHMuCiAgIHN0YXRpYyB2
b2lkIENvbXBhcmVUZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgZXhwZWN0ZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UGFydFJlc3Vs
dCYgYWN0dWFsKSB7CiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkLnR5cGUoKSwgYWN0dWFsLnR5cGUo
KSk7CkBAIC0xNTY2LDcgKzE0NjYsNyBAQCBURVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIE5v
UHJvcGVydGllc0ZvdW5kV2hlbk5vbmVBcmVBZGRlZCkgewogVEVTVChUZXN0UmVzdWx0UHJvcGVy
dHlUZXN0LCBPbmVQcm9wZXJ0eUZvdW5kV2hlbkFkZGVkKSB7CiAgIFRlc3RSZXN1bHQgdGVzdF9y
ZXN1bHQ7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eSgia2V5XzEiLCAiMSIpOwotICBUZXN0UmVz
dWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHkpOworICBU
ZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNl
IiwgcHJvcGVydHkpOwogICBBU1NFUlRfRVEoMSwgdGVzdF9yZXN1bHQudGVzdF9wcm9wZXJ0eV9j
b3VudCgpKTsKICAgY29uc3QgVGVzdFByb3BlcnR5JiBhY3R1YWxfcHJvcGVydHkgPSB0ZXN0X3Jl
c3VsdC5HZXRUZXN0UHJvcGVydHkoMCk7CiAgIEVYUEVDVF9TVFJFUSgia2V5XzEiLCBhY3R1YWxf
cHJvcGVydHkua2V5KCkpOwpAQCAtMTU3OCw4ICsxNDc4LDggQEAgVEVTVChUZXN0UmVzdWx0UHJv
cGVydHlUZXN0LCBNdWx0aXBsZVByb3BlcnRpZXNGb3VuZFdoZW5BZGRlZCkgewogICBUZXN0UmVz
dWx0IHRlc3RfcmVzdWx0OwogICBUZXN0UHJvcGVydHkgcHJvcGVydHlfMSgia2V5XzEiLCAiMSIp
OwogICBUZXN0UHJvcGVydHkgcHJvcGVydHlfMigia2V5XzIiLCAiMiIpOwotICBUZXN0UmVzdWx0
QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMSk7Ci0gIFRl
c3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9wZXJ0eV8y
KTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0
ZXN0Y2FzZSIsIHByb3BlcnR5XzEpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3Bl
cnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMik7CiAgIEFTU0VSVF9FUSgy
LCB0ZXN0X3Jlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwogICBjb25zdCBUZXN0UHJvcGVy
dHkmIGFjdHVhbF9wcm9wZXJ0eV8xID0gdGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KDApOwog
ICBFWFBFQ1RfU1RSRVEoImtleV8xIiwgYWN0dWFsX3Byb3BlcnR5XzEua2V5KCkpOwpAQCAtMTU5
NywxMCArMTQ5NywxMCBAQCBURVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIE92ZXJyaWRlc1Zh
bHVlc0ZvckR1cGxpY2F0ZUtleXMpIHsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzJfMSgia2V5
XzIiLCAiMiIpOwogICBUZXN0UHJvcGVydHkgcHJvcGVydHlfMV8yKCJrZXlfMSIsICIxMiIpOwog
ICBUZXN0UHJvcGVydHkgcHJvcGVydHlfMl8yKCJrZXlfMiIsICIyMiIpOwotICBUZXN0UmVzdWx0
QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMV8xKTsKLSAg
VGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5
XzJfMSk7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0
LCBwcm9wZXJ0eV8xXzIpOwotICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0
ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMl8yKTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQ
cm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzFfMSk7CisgIFRlc3RS
ZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBw
cm9wZXJ0eV8yXzEpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0
X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMV8yKTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29y
OjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzJfMik7
CiAKICAgQVNTRVJUX0VRKDIsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKSk7CiAg
IGNvbnN0IFRlc3RQcm9wZXJ0eSYgYWN0dWFsX3Byb3BlcnR5XzEgPSB0ZXN0X3Jlc3VsdC5HZXRU
ZXN0UHJvcGVydHkoMCk7CkBAIC0xNjEzLDE0ICsxNTEzLDE0IEBAIFRFU1QoVGVzdFJlc3VsdFBy
b3BlcnR5VGVzdCwgT3ZlcnJpZGVzVmFsdWVzRm9yRHVwbGljYXRlS2V5cykgewogfQogCiAvLyBU
ZXN0cyBUZXN0UmVzdWx0OjpHZXRUZXN0UHJvcGVydHkoKS4KLVRFU1QoVGVzdFJlc3VsdFByb3Bl
cnR5RGVhdGhUZXN0LCBHZXRUZXN0UHJvcGVydHkpIHsKK1RFU1QoVGVzdFJlc3VsdFByb3BlcnR5
VGVzdCwgR2V0VGVzdFByb3BlcnR5KSB7CiAgIFRlc3RSZXN1bHQgdGVzdF9yZXN1bHQ7CiAgIFRl
c3RQcm9wZXJ0eSBwcm9wZXJ0eV8xKCJrZXlfMSIsICIxIik7CiAgIFRlc3RQcm9wZXJ0eSBwcm9w
ZXJ0eV8yKCJrZXlfMiIsICIyIik7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8zKCJrZXlfMyIs
ICIzIik7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0
LCBwcm9wZXJ0eV8xKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVz
dF9yZXN1bHQsIHByb3BlcnR5XzIpOwotICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3Bl
cnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMyk7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVj
b3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8xKTsKKyAgVGVz
dFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2FzZSIs
IHByb3BlcnR5XzIpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0
X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMyk7CiAKICAgY29uc3QgVGVzdFByb3BlcnR5
JiBmZXRjaGVkX3Byb3BlcnR5XzEgPSB0ZXN0X3Jlc3VsdC5HZXRUZXN0UHJvcGVydHkoMCk7CiAg
IGNvbnN0IFRlc3RQcm9wZXJ0eSYgZmV0Y2hlZF9wcm9wZXJ0eV8yID0gdGVzdF9yZXN1bHQuR2V0
VGVzdFByb3BlcnR5KDEpOwpAQCAtMTYzOSw0MSArMTUzOSwxNSBAQCBURVNUKFRlc3RSZXN1bHRQ
cm9wZXJ0eURlYXRoVGVzdCwgR2V0VGVzdFByb3BlcnR5KSB7CiAgIEVYUEVDVF9ERUFUSF9JRl9T
VVBQT1JURUQodGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KC0xKSwgIiIpOwogfQogCi0vLyBX
aGVuIGEgcHJvcGVydHkgdXNpbmcgYSByZXNlcnZlZCBrZXkgaXMgc3VwcGxpZWQgdG8gdGhpcyBm
dW5jdGlvbiwgaXQgdGVzdHMKLS8vIHRoYXQgYSBub24tZmF0YWwgZmFpbHVyZSBpcyBhZGRlZCwg
YSBmYXRhbCBmYWlsdXJlIGlzIG5vdCBhZGRlZCwgYW5kIHRoYXQgdGhlCi0vLyBwcm9wZXJ0eSBp
cyBub3QgcmVjb3JkZWQuCi12b2lkIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3Bl
cnR5V2l0aFJlc2VydmVkS2V5KGNvbnN0IGNoYXIqIGtleSkgewotICBUZXN0UmVzdWx0IHRlc3Rf
cmVzdWx0OwotICBUZXN0UHJvcGVydHkgcHJvcGVydHkoa2V5LCAiMSIpOwotICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRSgKLSAgICAgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHko
JnRlc3RfcmVzdWx0LCBwcm9wZXJ0eSksCi0gICAgICAiUmVzZXJ2ZWQga2V5Iik7Ci0gIEFTU0VS
VF9FUSgwLCB0ZXN0X3Jlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCkpIDw8ICJOb3QgcmVjb3Jk
ZWQiOwotfQotCi0vLyBBdHRlbXB0aW5nIHRvIHJlY29yZGluZyBhIHByb3BlcnR5IHdpdGggdGhl
IFJlc2VydmVkIGxpdGVyYWwgIm5hbWUiCi0vLyBzaG91bGQgYWRkIGEgbm9uLWZhdGFsIGZhaWx1
cmUgYW5kIHRoZSBwcm9wZXJ0eSBzaG91bGQgbm90IGJlIHJlY29yZGVkLgotVEVTVChUZXN0UmVz
dWx0UHJvcGVydHlUZXN0LCBBZGRGYWlsdXJlV2hlblVzaW5nUmVzZXJ2ZWRLZXlDYWxsZWROYW1l
KSB7Ci0gIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVk
S2V5KCJuYW1lIik7Ci19Ci0KLS8vIEF0dGVtcHRpbmcgdG8gcmVjb3JkaW5nIGEgcHJvcGVydHkg
d2l0aCB0aGUgUmVzZXJ2ZWQgbGl0ZXJhbCAic3RhdHVzIgotLy8gc2hvdWxkIGFkZCBhIG5vbi1m
YXRhbCBmYWlsdXJlIGFuZCB0aGUgcHJvcGVydHkgc2hvdWxkIG5vdCBiZSByZWNvcmRlZC4KLVRF
U1QoVGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgQWRkRmFpbHVyZVdoZW5Vc2luZ1Jlc2VydmVkS2V5
Q2FsbGVkU3RhdHVzKSB7Ci0gIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5
V2l0aFJlc2VydmVkS2V5KCJzdGF0dXMiKTsKLX0KLQotLy8gQXR0ZW1wdGluZyB0byByZWNvcmRp
bmcgYSBwcm9wZXJ0eSB3aXRoIHRoZSBSZXNlcnZlZCBsaXRlcmFsICJ0aW1lIgotLy8gc2hvdWxk
IGFkZCBhIG5vbi1mYXRhbCBmYWlsdXJlIGFuZCB0aGUgcHJvcGVydHkgc2hvdWxkIG5vdCBiZSBy
ZWNvcmRlZC4KLVRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgQWRkRmFpbHVyZVdoZW5Vc2lu
Z1Jlc2VydmVkS2V5Q2FsbGVkVGltZSkgewotICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRp
bmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgidGltZSIpOwotfQotCi0vLyBBdHRlbXB0aW5nIHRv
IHJlY29yZGluZyBhIHByb3BlcnR5IHdpdGggdGhlIFJlc2VydmVkIGxpdGVyYWwgImNsYXNzbmFt
ZSIKLS8vIHNob3VsZCBhZGQgYSBub24tZmF0YWwgZmFpbHVyZSBhbmQgdGhlIHByb3BlcnR5IHNo
b3VsZCBub3QgYmUgcmVjb3JkZWQuCi1URVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIEFkZEZh
aWx1cmVXaGVuVXNpbmdSZXNlcnZlZEtleUNhbGxlZENsYXNzbmFtZSkgewotICBFeHBlY3ROb25G
YXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgiY2xhc3NuYW1lIik7
Ci19CisvLyBUZXN0cyB0aGUgVGVzdCBjbGFzcy4KKy8vCisvLyBJdCdzIGRpZmZpY3VsdCB0byB0
ZXN0IGV2ZXJ5IHB1YmxpYyBtZXRob2Qgb2YgdGhpcyBjbGFzcyAod2UgYXJlCisvLyBhbHJlYWR5
IHN0cmV0Y2hpbmcgdGhlIGxpbWl0IG9mIEdvb2dsZSBUZXN0IGJ5IHVzaW5nIGl0IHRvIHRlc3Qg
aXRzZWxmISkuCisvLyBGb3J0dW5hdGVseSwgd2UgZG9uJ3QgaGF2ZSB0byBkbyB0aGF0LCBhcyB3
ZSBhcmUgYWxyZWFkeSB0ZXN0aW5nCisvLyB0aGUgZnVuY3Rpb25hbGl0aWVzIG9mIHRoZSBUZXN0
IGNsYXNzIGV4dGVuc2l2ZWx5IGJ5IHVzaW5nIEdvb2dsZSBUZXN0CisvLyBhbG9uZS4KKy8vCisv
LyBUaGVyZWZvcmUsIHRoaXMgc2VjdGlvbiBvbmx5IGNvbnRhaW5zIG9uZSB0ZXN0LgogCiAvLyBU
ZXN0cyB0aGF0IEdUZXN0RmxhZ1NhdmVyIHdvcmtzIG9uIFdpbmRvd3MgYW5kIE1hYy4KIApAQCAt
MTY5OCw2ICsxNTcyLDcgQEAgY2xhc3MgR1Rlc3RGbGFnU2F2ZXJUZXN0IDogcHVibGljIFRlc3Qg
ewogICAgIEdURVNUX0ZMQUcocmVwZWF0KSA9IDE7CiAgICAgR1RFU1RfRkxBRyhzaHVmZmxlKSA9
IGZhbHNlOwogICAgIEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpID0ga01heFN0YWNrVHJh
Y2VEZXB0aDsKKyAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pID0gIiI7CiAgICAgR1RF
U1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9IGZhbHNlOwogICB9CiAKQEAgLTE3MjQsNiArMTU5
OSw3IEBAIGNsYXNzIEdUZXN0RmxhZ1NhdmVyVGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICBFWFBF
Q1RfRVEoMSwgR1RFU1RfRkxBRyhyZXBlYXQpKTsKICAgICBFWFBFQ1RfRkFMU0UoR1RFU1RfRkxB
RyhzaHVmZmxlKSk7CiAgICAgRVhQRUNUX0VRKGtNYXhTdGFja1RyYWNlRGVwdGgsIEdURVNUX0ZM
QUcoc3RhY2tfdHJhY2VfZGVwdGgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIiIsIEdURVNUX0ZMQUco
c3RyZWFtX3Jlc3VsdF90bykuY19zdHIoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEdURVNUX0ZMQUco
dGhyb3dfb25fZmFpbHVyZSkpOwogCiAgICAgR1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90
ZXN0cykgPSB0cnVlOwpAQCAtMTczOSw4ICsxNjE1LDEwIEBAIGNsYXNzIEdUZXN0RmxhZ1NhdmVy
VGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICBHVEVTVF9GTEFHKHJlcGVhdCkgPSAxMDA7CiAgICAg
R1RFU1RfRkxBRyhzaHVmZmxlKSA9IHRydWU7CiAgICAgR1RFU1RfRkxBRyhzdGFja190cmFjZV9k
ZXB0aCkgPSAxOworICAgIEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykgPSAibG9jYWxob3N0
OjEyMzQiOwogICAgIEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSB0cnVlOwogICB9CisK
ICBwcml2YXRlOgogICAvLyBGb3Igc2F2aW5nIEdvb2dsZSBUZXN0IGZsYWdzIGR1cmluZyB0aGlz
IHRlc3QgY2FzZS4KICAgc3RhdGljIEdUZXN0RmxhZ1NhdmVyKiBzYXZlcl87CkBAIC0xNzczLDE1
ICsxNjUxLDE2IEBAIHN0YXRpYyB2b2lkIFNldEVudihjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBj
aGFyKiB2YWx1ZSkgewogICAvLyBDKytCdWlsZGVyJ3MgcHV0ZW52IG9ubHkgc3RvcmVzIGEgcG9p
bnRlciB0byBpdHMgcGFyYW1ldGVyOyB3ZSBoYXZlIHRvCiAgIC8vIGVuc3VyZSB0aGF0IHRoZSBz
dHJpbmcgcmVtYWlucyB2YWxpZCBhcyBsb25nIGFzIGl0IG1pZ2h0IGJlIG5lZWRlZC4KICAgLy8g
V2UgdXNlIGFuIHN0ZDo6bWFwIHRvIGRvIHNvLgotICBzdGF0aWMgc3RkOjptYXA8U3RyaW5nLCBT
dHJpbmcqPiBhZGRlZF9lbnY7CisgIHN0YXRpYyBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpz
dHJpbmcqPiBhZGRlZF9lbnY7CiAKICAgLy8gQmVjYXVzZSBwdXRlbnYgc3RvcmVzIGEgcG9pbnRl
ciB0byB0aGUgc3RyaW5nIGJ1ZmZlciwgd2UgY2FuJ3QgZGVsZXRlIHRoZQogICAvLyBwcmV2aW91
cyBzdHJpbmcgKGlmIHByZXNlbnQpIHVudGlsIGFmdGVyIGl0J3MgcmVwbGFjZWQuCi0gIFN0cmlu
ZyAqcHJldl9lbnYgPSBOVUxMOworICBzdGQ6OnN0cmluZyAqcHJldl9lbnYgPSBOVUxMOwogICBp
ZiAoYWRkZWRfZW52LmZpbmQobmFtZSkgIT0gYWRkZWRfZW52LmVuZCgpKSB7CiAgICAgcHJldl9l
bnYgPSBhZGRlZF9lbnZbbmFtZV07CiAgIH0KLSAgYWRkZWRfZW52W25hbWVdID0gbmV3IFN0cmlu
ZygoTWVzc2FnZSgpIDw8IG5hbWUgPDwgIj0iIDw8IHZhbHVlKS5HZXRTdHJpbmcoKSk7CisgIGFk
ZGVkX2VudltuYW1lXSA9IG5ldyBzdGQ6OnN0cmluZygKKyAgICAgIChNZXNzYWdlKCkgPDwgbmFt
ZSA8PCAiPSIgPDwgdmFsdWUpLkdldFN0cmluZygpKTsKIAogICAvLyBUaGUgc3RhbmRhcmQgc2ln
bmF0dXJlIG9mIHB1dGVudiBhY2NlcHRzIGEgJ2NoYXIqJyBhcmd1bWVudC4gT3RoZXIKICAgLy8g
aW1wbGVtZW50YXRpb25zLCBsaWtlIEMrK0J1aWxkZXIncywgYWNjZXB0IGEgJ2NvbnN0IGNoYXIq
Jy4KQEAgLTE4MTMsNiArMTY5Miw4IEBAIFRFU1QoSW50MzJGcm9tR1Rlc3RFbnZUZXN0LCBSZXR1
cm5zRGVmYXVsdFdoZW5WYXJpYWJsZUlzTm90U2V0KSB7CiAgIEVYUEVDVF9FUSgxMCwgSW50MzJG
cm9tR1Rlc3RFbnYoInRlbXAiLCAxMCkpOwogfQogCisjIGlmICFkZWZpbmVkKEdURVNUX0dFVF9J
TlQzMl9GUk9NX0VOVl8pCisKIC8vIFRlc3RzIHRoYXQgSW50MzJGcm9tR1Rlc3RFbnYoKSByZXR1
cm5zIHRoZSBkZWZhdWx0IHZhbHVlIHdoZW4gdGhlCiAvLyBlbnZpcm9ubWVudCB2YXJpYWJsZSBv
dmVyZmxvd3MgYXMgYW4gSW50MzIuCiBURVNUKEludDMyRnJvbUdUZXN0RW52VGVzdCwgUmV0dXJu
c0RlZmF1bHRXaGVuVmFsdWVPdmVyZmxvd3MpIHsKQEAgLTE4MzcsNiArMTcxOCw4IEBAIFRFU1Qo
SW50MzJGcm9tR1Rlc3RFbnZUZXN0LCBSZXR1cm5zRGVmYXVsdFdoZW5WYWx1ZUlzSW52YWxpZCkg
ewogICBFWFBFQ1RfRVEoNTAsIEludDMyRnJvbUdUZXN0RW52KCJ0ZW1wIiwgNTApKTsKIH0KIAor
IyBlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfR0VUX0lOVDMyX0ZST01fRU5WXykKKwogLy8gVGVz
dHMgdGhhdCBJbnQzMkZyb21HVGVzdEVudigpIHBhcnNlcyBhbmQgcmV0dXJucyB0aGUgdmFsdWUg
b2YgdGhlCiAvLyBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aGVuIGl0IHJlcHJlc2VudHMgYSB2YWxp
ZCBkZWNpbWFsIGludGVnZXIgaW4KIC8vIHRoZSByYW5nZSBvZiBhbiBJbnQzMi4KQEAgLTE5MjUs
NyArMTgwOCw3IEBAIFRFU1QoSW50MzJGcm9tRW52T3JEaWVEZWF0aFRlc3QsIEFib3J0c09uRmFp
bHVyZSkgewogfQogCiAvLyBUZXN0cyB0aGF0IEludDMyRnJvbUVudk9yRGllKCkgYWJvcnRzIHdp
dGggYW4gZXJyb3IgbWVzc2FnZQotLy8gaWYgdGhlIHZhcmlhYmxlIGNhbm5vdCBiZSByZXByZXNu
dGVkIGJ5IGFuIEludDMyLgorLy8gaWYgdGhlIHZhcmlhYmxlIGNhbm5vdCBiZSByZXByZXNlbnRl
ZCBieSBhbiBJbnQzMi4KIFRFU1QoSW50MzJGcm9tRW52T3JEaWVEZWF0aFRlc3QsIEFib3J0c09u
SW50MzJPdmVyZmxvdykgewogICBTZXRFbnYoR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJWQVIi
LCAiMTIzNDU2Nzg5MTIzNDU2Nzg5MTIzNCIpOwogICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVE
KApAQCAtMjA3MCw2ICsxOTUzLDE3MyBAQCBURVNUKFVuaXRUZXN0VGVzdCwgQ2FuR2V0T3JpZ2lu
YWxXb3JraW5nRGlyKSB7CiAgIEVYUEVDVF9TVFJORShVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+
b3JpZ2luYWxfd29ya2luZ19kaXIoKSwgIiIpOwogfQogCitURVNUKFVuaXRUZXN0VGVzdCwgUmV0
dXJuc1BsYXVzaWJsZVRpbWVzdGFtcCkgeworICBFWFBFQ1RfTFQoMCwgVW5pdFRlc3Q6OkdldElu
c3RhbmNlKCktPnN0YXJ0X3RpbWVzdGFtcCgpKTsKKyAgRVhQRUNUX0xFKFVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5zdGFydF90aW1lc3RhbXAoKSwgR2V0VGltZUluTWlsbGlzKCkpOworfQorCisv
LyBXaGVuIGEgcHJvcGVydHkgdXNpbmcgYSByZXNlcnZlZCBrZXkgaXMgc3VwcGxpZWQgdG8gdGhp
cyBmdW5jdGlvbiwgaXQKKy8vIHRlc3RzIHRoYXQgYSBub24tZmF0YWwgZmFpbHVyZSBpcyBhZGRl
ZCwgYSBmYXRhbCBmYWlsdXJlIGlzIG5vdCBhZGRlZCwKKy8vIGFuZCB0aGF0IHRoZSBwcm9wZXJ0
eSBpcyBub3QgcmVjb3JkZWQuCit2b2lkIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1By
b3BlcnR5V2l0aFJlc2VydmVkS2V5KAorICAgIGNvbnN0IFRlc3RSZXN1bHQmIHRlc3RfcmVzdWx0
LCBjb25zdCBjaGFyKiBrZXkpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoVGVzdDo6UmVj
b3JkUHJvcGVydHkoa2V5LCAiMSIpLCAiUmVzZXJ2ZWQga2V5Iik7CisgIEFTU0VSVF9FUSgwLCB0
ZXN0X3Jlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCkpIDw8ICJQcm9wZXJ0eSBmb3Iga2V5ICci
IDw8IGtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCAiJyByZWNvcmRlZCB1bmV4cGVjdGVkbHkuIjsKK30KKwordm9pZCBFeHBlY3ROb25GYXRh
bEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0KAor
ICAgIGNvbnN0IGNoYXIqIGtleSkgeworICBjb25zdCBUZXN0SW5mbyogdGVzdF9pbmZvID0gVW5p
dFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisgIEFTU0VSVF9UUlVF
KHRlc3RfaW5mbyAhPSBOVUxMKTsKKyAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJv
cGVydHlXaXRoUmVzZXJ2ZWRLZXkoKnRlc3RfaW5mby0+cmVzdWx0KCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSk7Cit9CisKK3Zv
aWQgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlG
b3JDdXJyZW50VGVzdENhc2UoCisgICAgY29uc3QgY2hhcioga2V5KSB7CisgIGNvbnN0IFRlc3RD
YXNlKiB0ZXN0X2Nhc2UgPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2Nh
c2UoKTsKKyAgQVNTRVJUX1RSVUUodGVzdF9jYXNlICE9IE5VTEwpOworICBFeHBlY3ROb25GYXRh
bEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgKKyAgICAgIHRlc3RfY2Fz
ZS0+YWRfaG9jX3Rlc3RfcmVzdWx0KCksIGtleSk7Cit9CisKK3ZvaWQgRXhwZWN0Tm9uRmF0YWxG
YWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgK
KyAgICBjb25zdCBjaGFyKiBrZXkpIHsKKyAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5n
UHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoCisgICAgICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+
YWRfaG9jX3Rlc3RfcmVzdWx0KCksIGtleSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgcHJvcGVydHkg
cmVjb3JkaW5nIGZ1bmN0aW9ucyBpbiBVbml0VGVzdCBvdXRzaWRlIG9mIHRlc3RzCisvLyBmdW5j
dGlvbnMgY29ycmVjbHkuICBDcmVhdGluZyBhIHNlcGFyYXRlIGluc3RhbmNlIG9mIFVuaXRUZXN0
IGVuc3VyZXMgaXQKKy8vIGlzIGluIGEgc3RhdGUgc2ltaWxhciB0byB0aGUgVW5pdFRlc3QncyBz
aW5nbGV0b24ncyBiZXR3ZWVuIHRlc3RzLgorY2xhc3MgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRl
c3QgOgorICAgIHB1YmxpYyB0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdFRlc3RSZWNvcmRQcm9wZXJ0
eVRlc3RIZWxwZXIgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsK
KyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtl
eUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICAgICAgImRpc2FibGVkIik7CisgICAgRXhwZWN0Tm9u
RmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVz
dENhc2UoCisgICAgICAgICJlcnJvcnMiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNv
cmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICAgICAg
ImZhaWx1cmVzIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlX
aXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdENhc2UoCisgICAgICAgICJuYW1lIik7CisgICAg
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JD
dXJyZW50VGVzdENhc2UoCisgICAgICAgICJ0ZXN0cyIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFp
bHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAor
ICAgICAgICAidGltZSIpOworCisgICAgVGVzdDo6UmVjb3JkUHJvcGVydHkoInRlc3RfY2FzZV9r
ZXlfMSIsICIxIik7CisgICAgY29uc3QgVGVzdENhc2UqIHRlc3RfY2FzZSA9IFVuaXRUZXN0OjpH
ZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfY2FzZSgpOworICAgIEFTU0VSVF9UUlVFKHRlc3Rf
Y2FzZSAhPSBOVUxMKTsKKworICAgIEFTU0VSVF9FUSgxLCB0ZXN0X2Nhc2UtPmFkX2hvY190ZXN0
X3Jlc3VsdCgpLnRlc3RfcHJvcGVydHlfY291bnQoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJ0ZXN0
X2Nhc2Vfa2V5XzEiLAorICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2UtPmFkX2hvY190ZXN0X3Jl
c3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS5rZXkoKSk7CisgICAgRVhQRUNUX1NUUkVRKCIxIiwK
KyAgICAgICAgICAgICAgICAgdGVzdF9jYXNlLT5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0
UHJvcGVydHkoMCkudmFsdWUoKSk7CisgIH0KK307CisKKy8vIFRlc3RzIFRlc3RSZXN1bHQgaGFz
IHRoZSBleHBlY3RlZCBwcm9wZXJ0eSB3aGVuIGFkZGVkLgorVEVTVF9GKFVuaXRUZXN0UmVjb3Jk
UHJvcGVydHlUZXN0LCBPbmVQcm9wZXJ0eUZvdW5kV2hlbkFkZGVkKSB7CisgIFVuaXRUZXN0UmVj
b3JkUHJvcGVydHkoImtleV8xIiwgIjEiKTsKKworICBBU1NFUlRfRVEoMSwgdW5pdF90ZXN0Xy5h
ZF9ob2NfdGVzdF9yZXN1bHQoKS50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOworCisgIEVYUEVDVF9T
VFJFUSgia2V5XzEiLAorICAgICAgICAgICAgICAgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1
bHQoKS5HZXRUZXN0UHJvcGVydHkoMCkua2V5KCkpOworICBFWFBFQ1RfU1RSRVEoIjEiLAorICAg
ICAgICAgICAgICAgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVy
dHkoMCkudmFsdWUoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RSZXN1bHQgaGFzIG11bHRpcGxlIHBy
b3BlcnRpZXMgd2hlbiBhZGRlZC4KK1RFU1RfRihVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdCwg
TXVsdGlwbGVQcm9wZXJ0aWVzRm91bmRXaGVuQWRkZWQpIHsKKyAgVW5pdFRlc3RSZWNvcmRQcm9w
ZXJ0eSgia2V5XzEiLCAiMSIpOworICBVbml0VGVzdFJlY29yZFByb3BlcnR5KCJrZXlfMiIsICIy
Iik7CisKKyAgQVNTRVJUX0VRKDIsIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkudGVz
dF9wcm9wZXJ0eV9jb3VudCgpKTsKKworICBFWFBFQ1RfU1RSRVEoImtleV8xIiwKKyAgICAgICAg
ICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDAp
LmtleSgpKTsKKyAgRVhQRUNUX1NUUkVRKCIxIiwgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1
bHQoKS5HZXRUZXN0UHJvcGVydHkoMCkudmFsdWUoKSk7CisKKyAgRVhQRUNUX1NUUkVRKCJrZXlf
MiIsCisgICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRl
c3RQcm9wZXJ0eSgxKS5rZXkoKSk7CisgIEVYUEVDVF9TVFJFUSgiMiIsIHVuaXRfdGVzdF8uYWRf
aG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDEpLnZhbHVlKCkpOworfQorCisvLyBU
ZXN0cyBUZXN0UmVzdWx0OjpSZWNvcmRQcm9wZXJ0eSgpIG92ZXJyaWRlcyB2YWx1ZXMgZm9yIGR1
cGxpY2F0ZSBrZXlzLgorVEVTVF9GKFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0LCBPdmVycmlk
ZXNWYWx1ZXNGb3JEdXBsaWNhdGVLZXlzKSB7CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoImtl
eV8xIiwgIjEiKTsKKyAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzIiLCAiMiIpOworICBV
bml0VGVzdFJlY29yZFByb3BlcnR5KCJrZXlfMSIsICIxMiIpOworICBVbml0VGVzdFJlY29yZFBy
b3BlcnR5KCJrZXlfMiIsICIyMiIpOworCisgIEFTU0VSVF9FUSgyLCB1bml0X3Rlc3RfLmFkX2hv
Y190ZXN0X3Jlc3VsdCgpLnRlc3RfcHJvcGVydHlfY291bnQoKSk7CisKKyAgRVhQRUNUX1NUUkVR
KCJrZXlfMSIsCisgICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgp
LkdldFRlc3RQcm9wZXJ0eSgwKS5rZXkoKSk7CisgIEVYUEVDVF9TVFJFUSgiMTIiLAorICAgICAg
ICAgICAgICAgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHko
MCkudmFsdWUoKSk7CisKKyAgRVhQRUNUX1NUUkVRKCJrZXlfMiIsCisgICAgICAgICAgICAgICB1
bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgxKS5rZXkoKSk7
CisgIEVYUEVDVF9TVFJFUSgiMjIiLAorICAgICAgICAgICAgICAgdW5pdF90ZXN0Xy5hZF9ob2Nf
dGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMSkudmFsdWUoKSk7Cit9CisKK1RFU1RfRihV
bml0VGVzdFJlY29yZFByb3BlcnR5VGVzdCwKKyAgICAgICBBZGRGYWlsdXJlSW5zaWRlVGVzdHNX
aGVuVXNpbmdUZXN0Q2FzZVJlc2VydmVkS2V5cykgeworICBFeHBlY3ROb25GYXRhbEZhaWx1cmVS
ZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0KAorICAgICAgIm5h
bWUiKTsKKyAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2
ZWRLZXlGb3JDdXJyZW50VGVzdCgKKyAgICAgICJ2YWx1ZV9wYXJhbSIpOworICBFeHBlY3ROb25G
YXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0
KAorICAgICAgInR5cGVfcGFyYW0iKTsKKyAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5n
UHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdCgKKyAgICAgICJzdGF0dXMiKTsK
KyAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlG
b3JDdXJyZW50VGVzdCgKKyAgICAgICJ0aW1lIik7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJl
Y29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgICAiY2xh
c3NuYW1lIik7Cit9CisKK1RFU1RfRihVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdCwKKyAgICAg
ICBBZGRSZWNvcmRXaXRoUmVzZXJ2ZWRLZXlzR2VuZXJhdGVzQ29ycmVjdFByb3BlcnR5TGlzdCkg
eworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKKyAgICAgIFRlc3Q6OlJlY29yZFByb3BlcnR5
KCJuYW1lIiwgIjEiKSwKKyAgICAgICInY2xhc3NuYW1lJywgJ25hbWUnLCAnc3RhdHVzJywgJ3Rp
bWUnLCAndHlwZV9wYXJhbScsICd2YWx1ZV9wYXJhbScsIgorICAgICAgIiAnZmlsZScsIGFuZCAn
bGluZScgYXJlIHJlc2VydmVkIik7Cit9CisKK2NsYXNzIFVuaXRUZXN0UmVjb3JkUHJvcGVydHlU
ZXN0RW52aXJvbm1lbnQgOiBwdWJsaWMgRW52aXJvbm1lbnQgeworIHB1YmxpYzoKKyAgdmlydHVh
bCB2b2lkIFRlYXJEb3duKCkgeworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1By
b3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCisgICAgICAgICJ0ZXN0cyIp
OworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVk
S2V5T3V0c2lkZU9mVGVzdENhc2UoCisgICAgICAgICJmYWlsdXJlcyIpOworICAgIEV4cGVjdE5v
bkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVz
dENhc2UoCisgICAgICAgICJkaXNhYmxlZCIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJl
Y29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCisgICAgICAg
ICJlcnJvcnMiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdp
dGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgICAgICAibmFtZSIpOworICAgIEV4
cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lk
ZU9mVGVzdENhc2UoCisgICAgICAgICJ0aW1lc3RhbXAiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZh
aWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAor
ICAgICAgICAidGltZSIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3Bl
cnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCisgICAgICAgICJyYW5kb21fc2Vl
ZCIpOworICB9Cit9OworCisvLyBUaGlzIHdpbGwgdGVzdCBwcm9wZXJ0eSByZWNvcmRpbmcgb3V0
c2lkZSBvZiBhbnkgdGVzdCBvciB0ZXN0IGNhc2UuCitzdGF0aWMgRW52aXJvbm1lbnQqIHJlY29y
ZF9wcm9wZXJ0eV9lbnYgPQorICAgIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgVW5pdFRl
c3RSZWNvcmRQcm9wZXJ0eVRlc3RFbnZpcm9ubWVudCk7CisKIC8vIFRoaXMgZ3JvdXAgb2YgdGVz
dHMgaXMgZm9yIHByZWRpY2F0ZSBhc3NlcnRpb25zIChBU1NFUlRfUFJFRCosIGV0YykKIC8vIG9m
IHZhcmlvdXMgYXJpdGllcy4gIFRoZXkgZG8gbm90IGF0dGVtcHQgdG8gYmUgZXhoYXVzdGl2ZS4g
IFJhdGhlciwKIC8vIHZpZXcgdGhlbSBhcyBzbW9rZSB0ZXN0cyB0aGF0IGNhbiBiZSBlYXNpbHkg
cmV2aWV3ZWQgYW5kIHZlcmlmaWVkLgpAQCAtMjQwMSw3ICsyNDUxLDcgQEAgVEVTVChTdHJpbmdB
c3NlcnRpb25UZXN0LCBBU1NFUlRfU1RSRVEpIHsKICAgQVNTRVJUX1NUUkVRKHAxLCBwMik7CiAK
ICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1NUUkVRKCJiYWQiLCAiZ29vZCIpLAotICAg
ICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IFwiYmFkXCIiKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIiAgXCJiYWRcIlxuICBcImdvb2RcIiIpOwogfQogCiAvLyBUZXN0cyBBU1NFUlRf
U1RSRVEgd2l0aCBOVUxMIGFyZ3VtZW50cy4KQEAgLTI0MzcsNyArMjQ4Nyw3IEBAIFRFU1QoU3Ry
aW5nQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1NUUkNBU0VFUSkgewogCiAgIEFTU0VSVF9TVFJDQVNF
RVEoIiIsICIiKTsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1NUUkNBU0VFUSgiSGki
LCAiaGkyIiksCi0gICAgICAgICAgICAgICAgICAgICAgICIoaWdub3JpbmcgY2FzZSkiKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIklnbm9yaW5nIGNhc2UiKTsKIH0KIAogLy8gVGVzdHMgQVNT
RVJUX1NUUkNBU0VORS4KQEAgLTI0NzUsNiArMjUyNSwxMSBAQCBURVNUKFN0cmluZ0Fzc2VydGlv
blRlc3QsIFNUUkVRX1dpZGUpIHsKICAgLy8gU3RyaW5ncyBjb250YWluaW5nIHdpZGUgY2hhcmFj
dGVycy4KICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1NUUkVRKEwiYWJjXHg4MTE5
IiwgTCJhYmNceDgxMjAiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImFiYyIpOworCisg
IC8vIFRoZSBzdHJlYW1pbmcgdmFyaWF0aW9uLgorICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7
ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfU1RSRVEoTCJhYmNceDgxMTkiLCBMImFiY1x4ODEyMSIp
IDw8ICJFeHBlY3RlZCBmYWlsdXJlIjsKKyAgfSwgIkV4cGVjdGVkIGZhaWx1cmUiKTsKIH0KIAog
Ly8gVGVzdHMgKl9TVFJORSBvbiB3aWRlIHN0cmluZ3MuCkBAIC0yNTAxLDYgKzI1NTYsOSBAQCBU
RVNUKFN0cmluZ0Fzc2VydGlvblRlc3QsIFNUUk5FX1dpZGUpIHsKICAgLy8gU3RyaW5ncyBjb250
YWluaW5nIHdpZGUgY2hhcmFjdGVycy4KICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNU
X1NUUk5FKEwiYWJjXHg4MTE5IiwgTCJhYmNceDgxMTkiKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImFiYyIpOworCisgIC8vIFRoZSBzdHJlYW1pbmcgdmFyaWF0aW9uLgorICBBU1NFUlRf
U1RSTkUoTCJhYmNceDgxMTkiLCBMImFiY1x4ODEyMCIpIDw8ICJUaGlzIHNob3VsZG4ndCBoYXBw
ZW4iOwogfQogCiAvLyBUZXN0cyBmb3IgOjp0ZXN0aW5nOjpJc1N1YnN0cmluZygpLgpAQCAtMjYz
MSw3ICsyNjg5LDYgQEAgVEVTVChJc05vdFN1YnN0cmluZ1Rlc3QsIFJldHVybnNDb3JyZWN0UmVz
dWx0Rm9yU3RkV3N0cmluZykgewogdGVtcGxhdGUgPHR5cGVuYW1lIFJhd1R5cGU+CiBjbGFzcyBG
bG9hdGluZ1BvaW50VGVzdCA6IHB1YmxpYyBUZXN0IHsKICBwcm90ZWN0ZWQ6Ci0KICAgLy8gUHJl
LWNhbGN1bGF0ZWQgbnVtYmVycyB0byBiZSB1c2VkIGJ5IHRoZSB0ZXN0cy4KICAgc3RydWN0IFRl
c3RWYWx1ZXMgewogICAgIFJhd1R5cGUgY2xvc2VfdG9fcG9zaXRpdmVfemVybzsKQEAgLTMwNzks
MTMgKzMxMzYsMTMgQEAgVEVTVChESVNBQkxFRF9UZXN0Q2FzZSwgRElTQUJMRURfVGVzdFNob3Vs
ZE5vdFJ1bikgewogICBGQUlMKCkgPDwgIlVuZXhwZWN0ZWQgZmFpbHVyZTogVGVzdCBpbiBkaXNh
YmxlZCB0ZXN0IGNhc2Ugc2hvdWxkIG5vdCBiZSBydW4uIjsKIH0KIAotLy8gQ2hlY2sgdGhhdCB3
aGVuIGFsbCB0ZXN0cyBpbiBhIHRlc3QgY2FzZSBhcmUgZGlzYWJsZWQsIFNldHVwVGVzdENhc2Uo
KSBhbmQKKy8vIENoZWNrIHRoYXQgd2hlbiBhbGwgdGVzdHMgaW4gYSB0ZXN0IGNhc2UgYXJlIGRp
c2FibGVkLCBTZXRVcFRlc3RDYXNlKCkgYW5kCiAvLyBUZWFyRG93blRlc3RDYXNlKCkgYXJlIG5v
dCBjYWxsZWQuCiBjbGFzcyBEaXNhYmxlZFRlc3RzVGVzdCA6IHB1YmxpYyBUZXN0IHsKICBwcm90
ZWN0ZWQ6CiAgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7CiAgICAgRkFJTCgpIDw8ICJV
bmV4cGVjdGVkIGZhaWx1cmU6IEFsbCB0ZXN0cyBkaXNhYmxlZCBpbiB0ZXN0IGNhc2UuICIKLSAg
ICAgICAgICAgICAgIlNldHVwVGVzdENhc2UoKSBzaG91bGQgbm90IGJlIGNhbGxlZC4iOworICAg
ICAgICAgICAgICAiU2V0VXBUZXN0Q2FzZSgpIHNob3VsZCBub3QgYmUgY2FsbGVkLiI7CiAgIH0K
IAogICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgewpAQCAtMzIyNCw3ICszMjgxLDcg
QEAgVEVTVF9GKFNpbmdsZUV2YWx1YXRpb25UZXN0LCBBU1NFUlRfU1RSKSB7CiAKICAgLy8gZmFp
bGVkIEVYUEVDVF9TVFJDQVNFRVEKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1NU
UkNBU0VFUShwMV8rKywgcDJfKyspLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiaWdub3Jp
bmcgY2FzZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiSWdub3JpbmcgY2FzZSIpOwog
ICBFWFBFQ1RfRVEoczFfICsgMiwgcDFfKTsKICAgRVhQRUNUX0VRKHMyXyArIDIsIHAyXyk7CiB9
CkBAIC0zMzMyLDcgKzMzODksNyBAQCBjbGFzcyBOb0ZhdGFsRmFpbHVyZVRlc3QgOiBwdWJsaWMg
VGVzdCB7CiAKICAgdm9pZCBEb0Fzc2VydE5vRmF0YWxGYWlsdXJlT25GYWlscygpIHsKICAgICBB
U1NFUlRfTk9fRkFUQUxfRkFJTFVSRShGYWlscygpKTsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJz
aG9sZCBub3QgcmVhY2ggaGVyZS4iOworICAgIEFERF9GQUlMVVJFKCkgPDwgInNob3VsZCBub3Qg
cmVhY2ggaGVyZS4iOwogICB9CiAKICAgdm9pZCBEb0V4cGVjdE5vRmF0YWxGYWlsdXJlT25GYWls
cygpIHsKQEAgLTM0MTIsNTkgKzM0NjksMTU3IEBAIFRFU1RfRihOb0ZhdGFsRmFpbHVyZVRlc3Qs
IE1lc3NhZ2VJc1N0cmVhbWFibGUpIHsKIAogLy8gVGVzdHMgbm9uLXN0cmluZyBhc3NlcnRpb25z
LgogCitzdGQ6OnN0cmluZyBFZGl0c1RvU3RyaW5nKGNvbnN0IHN0ZDo6dmVjdG9yPEVkaXRUeXBl
PiYgZWRpdHMpIHsKKyAgc3RkOjpzdHJpbmcgb3V0OworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGVkaXRzLnNpemUoKTsgKytpKSB7CisgICAgc3RhdGljIGNvbnN0IGNoYXIga0VkaXRzW10gPSAi
ICstLyI7CisgICAgb3V0LmFwcGVuZCgxLCBrRWRpdHNbZWRpdHNbaV1dKTsKKyAgfQorICByZXR1
cm4gb3V0OworfQorCitzdGQ6OnZlY3RvcjxzaXplX3Q+IENoYXJzVG9JbmRpY2VzKGNvbnN0IHN0
ZDo6c3RyaW5nJiBzdHIpIHsKKyAgc3RkOjp2ZWN0b3I8c2l6ZV90PiBvdXQ7CisgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc3RyLnNpemUoKTsgKytpKSB7CisgICAgb3V0LnB1c2hfYmFjayhzdHJb
aV0pOworICB9CisgIHJldHVybiBvdXQ7Cit9CisKK3N0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBD
aGFyc1RvTGluZXMoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgeworICBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gb3V0OworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ci5zaXplKCk7ICsraSkg
eworICAgIG91dC5wdXNoX2JhY2soc3RyLnN1YnN0cihpLCAxKSk7CisgIH0KKyAgcmV0dXJuIG91
dDsKK30KKworVEVTVChFZGl0RGlzdGFuY2UsIFRlc3RDYXNlcykgeworICBzdHJ1Y3QgQ2FzZSB7
CisgICAgaW50IGxpbmU7CisgICAgY29uc3QgY2hhciogbGVmdDsKKyAgICBjb25zdCBjaGFyKiBy
aWdodDsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZF9lZGl0czsKKyAgICBjb25zdCBjaGFyKiBl
eHBlY3RlZF9kaWZmOworICB9OworICBzdGF0aWMgY29uc3QgQ2FzZSBrQ2FzZXNbXSA9IHsKKyAg
ICAgIC8vIE5vIGNoYW5nZS4KKyAgICAgIHtfX0xJTkVfXywgIkEiLCAiQSIsICIgIiwgIiJ9LAor
ICAgICAge19fTElORV9fLCAiQUJDREUiLCAiQUJDREUiLCAiICAgICAiLCAiIn0sCisgICAgICAv
LyBTaW1wbGUgYWRkcy4KKyAgICAgIHtfX0xJTkVfXywgIlgiLCAiWEEiLCAiICsiLCAiQEAgKzEs
MiBAQFxuIFhcbitBXG4ifSwKKyAgICAgIHtfX0xJTkVfXywgIlgiLCAiWEFCQ0QiLCAiICsrKysi
LCAiQEAgKzEsNSBAQFxuIFhcbitBXG4rQlxuK0NcbitEXG4ifSwKKyAgICAgIC8vIFNpbXBsZSBy
ZW1vdmVzLgorICAgICAge19fTElORV9fLCAiWEEiLCAiWCIsICIgLSIsICJAQCAtMSwyIEBAXG4g
WFxuLUFcbiJ9LAorICAgICAge19fTElORV9fLCAiWEFCQ0QiLCAiWCIsICIgLS0tLSIsICJAQCAt
MSw1IEBAXG4gWFxuLUFcbi1CXG4tQ1xuLURcbiJ9LAorICAgICAgLy8gU2ltcGxlIHJlcGxhY2Vz
LgorICAgICAge19fTElORV9fLCAiQSIsICJhIiwgIi8iLCAiQEAgLTEsMSArMSwxIEBAXG4tQVxu
K2FcbiJ9LAorICAgICAge19fTElORV9fLCAiQUJDRCIsICJhYmNkIiwgIi8vLy8iLAorICAgICAg
ICJAQCAtMSw0ICsxLDQgQEBcbi1BXG4tQlxuLUNcbi1EXG4rYVxuK2JcbitjXG4rZFxuIn0sCisg
ICAgICAvLyBQYXRoIGZpbmRpbmcuCisgICAgICB7X19MSU5FX18sICJBQkNERUZHSCIsICJBQlhF
R0gxIiwgIiAgLS8gLSAgKyIsCisgICAgICAgIkBAIC0xLDggKzEsNyBAQFxuIEFcbiBCXG4tQ1xu
LURcbitYXG4gRVxuLUZcbiBHXG4gSFxuKzFcbiJ9LAorICAgICAge19fTElORV9fLCAiQUFBQUJD
Q0NDIiwgIkFCQUJDRENEQyIsICItIC8gICArIC8gIiwKKyAgICAgICAiQEAgLTEsOSArMSw5IEBA
XG4tQVxuIEFcbi1BXG4rQlxuIEFcbiBCXG4gQ1xuK0RcbiBDXG4tQ1xuK0RcbiBDXG4ifSwKKyAg
ICAgIHtfX0xJTkVfXywgIkFCQ0RFIiwgIkJDRENEIiwgIi0gICArLyIsCisgICAgICAgIkBAIC0x
LDUgKzEsNSBAQFxuLUFcbiBCXG4gQ1xuIERcbi1FXG4rQ1xuK0RcbiJ9LAorICAgICAge19fTElO
RV9fLCAiQUJDREVGR0hJSktMIiwgIkJDRENERUZHSktMSksiLCAiLSArKyAgICAgLS0gICArKyIs
CisgICAgICAgIkBAIC0xLDQgKzEsNSBAQFxuLUFcbiBCXG4rQ1xuK0RcbiBDXG4gRFxuIgorICAg
ICAgICJAQCAtNiw3ICs3LDcgQEBcbiBGXG4gR1xuLUhcbi1JXG4gSlxuIEtcbiBMXG4rSlxuK0tc
biJ9LAorICAgICAge319OworICBmb3IgKGNvbnN0IENhc2UqIGMgPSBrQ2FzZXM7IGMtPmxlZnQ7
ICsrYykgeworICAgIEVYUEVDVF9UUlVFKGMtPmV4cGVjdGVkX2VkaXRzID09CisgICAgICAgICAg
ICAgICAgRWRpdHNUb1N0cmluZyhDYWxjdWxhdGVPcHRpbWFsRWRpdHMoQ2hhcnNUb0luZGljZXMo
Yy0+bGVmdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ2hhcnNUb0luZGljZXMoYy0+cmlnaHQpKSkpCisgICAgICAgIDw8ICJMZWZ0IDwiIDw8
IGMtPmxlZnQgPDwgIj4gUmlnaHQgPCIgPDwgYy0+cmlnaHQgPDwgIj4gRWRpdHMgPCIKKyAgICAg
ICAgPDwgRWRpdHNUb1N0cmluZyhDYWxjdWxhdGVPcHRpbWFsRWRpdHMoCisgICAgICAgICAgICAg
ICBDaGFyc1RvSW5kaWNlcyhjLT5sZWZ0KSwgQ2hhcnNUb0luZGljZXMoYy0+cmlnaHQpKSkgPDwg
Ij4iOworICAgIEVYUEVDVF9UUlVFKGMtPmV4cGVjdGVkX2RpZmYgPT0gQ3JlYXRlVW5pZmllZERp
ZmYoQ2hhcnNUb0xpbmVzKGMtPmxlZnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ2hhcnNUb0xpbmVzKGMtPnJpZ2h0KSkpCisgICAgICAg
IDw8ICJMZWZ0IDwiIDw8IGMtPmxlZnQgPDwgIj4gUmlnaHQgPCIgPDwgYy0+cmlnaHQgPDwgIj4g
RGlmZiA8IgorICAgICAgICA8PCBDcmVhdGVVbmlmaWVkRGlmZihDaGFyc1RvTGluZXMoYy0+bGVm
dCksIENoYXJzVG9MaW5lcyhjLT5yaWdodCkpCisgICAgICAgIDw8ICI+IjsKKyAgfQorfQorCiAv
LyBUZXN0cyBFcUZhaWx1cmUoKSwgdXNlZCBmb3IgaW1wbGVtZW50aW5nICpFUSogYXNzZXJ0aW9u
cy4KIFRFU1QoQXNzZXJ0aW9uVGVzdCwgRXFGYWlsdXJlKSB7Ci0gIGNvbnN0IFN0cmluZyBmb29f
dmFsKCI1IiksIGJhcl92YWwoIjYiKTsKLSAgY29uc3QgU3RyaW5nIG1zZzEoCisgIGNvbnN0IHN0
ZDo6c3RyaW5nIGZvb192YWwoIjUiKSwgYmFyX3ZhbCgiNiIpOworICBjb25zdCBzdGQ6OnN0cmlu
ZyBtc2cxKAogICAgICAgRXFGYWlsdXJlKCJmb28iLCAiYmFyIiwgZm9vX3ZhbCwgYmFyX3ZhbCwg
ZmFsc2UpCiAgICAgICAuZmFpbHVyZV9tZXNzYWdlKCkpOwogICBFWFBFQ1RfU1RSRVEoCi0gICAg
ICAiVmFsdWUgb2Y6IGJhclxuIgotICAgICAgIiAgQWN0dWFsOiA2XG4iCi0gICAgICAiRXhwZWN0
ZWQ6IGZvb1xuIgotICAgICAgIldoaWNoIGlzOiA1IiwKKyAgICAgICJFeHBlY3RlZCBlcXVhbGl0
eSBvZiB0aGVzZSB2YWx1ZXM6XG4iCisgICAgICAiICBmb29cbiIKKyAgICAgICIgICAgV2hpY2gg
aXM6IDVcbiIKKyAgICAgICIgIGJhclxuIgorICAgICAgIiAgICBXaGljaCBpczogNiIsCiAgICAg
ICBtc2cxLmNfc3RyKCkpOwogCi0gIGNvbnN0IFN0cmluZyBtc2cyKAorICBjb25zdCBzdGQ6OnN0
cmluZyBtc2cyKAogICAgICAgRXFGYWlsdXJlKCJmb28iLCAiNiIsIGZvb192YWwsIGJhcl92YWws
IGZhbHNlKQogICAgICAgLmZhaWx1cmVfbWVzc2FnZSgpKTsKICAgRVhQRUNUX1NUUkVRKAotICAg
ICAgIlZhbHVlIG9mOiA2XG4iCi0gICAgICAiRXhwZWN0ZWQ6IGZvb1xuIgotICAgICAgIldoaWNo
IGlzOiA1IiwKKyAgICAgICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4iCisg
ICAgICAiICBmb29cbiIKKyAgICAgICIgICAgV2hpY2ggaXM6IDVcbiIKKyAgICAgICIgIDYiLAog
ICAgICAgbXNnMi5jX3N0cigpKTsKIAotICBjb25zdCBTdHJpbmcgbXNnMygKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcgbXNnMygKICAgICAgIEVxRmFpbHVyZSgiNSIsICJiYXIiLCBmb29fdmFsLCBiYXJf
dmFsLCBmYWxzZSkKICAgICAgIC5mYWlsdXJlX21lc3NhZ2UoKSk7CiAgIEVYUEVDVF9TVFJFUSgK
LSAgICAgICJWYWx1ZSBvZjogYmFyXG4iCi0gICAgICAiICBBY3R1YWw6IDZcbiIKLSAgICAgICJF
eHBlY3RlZDogNSIsCisgICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxu
IgorICAgICAgIiAgNVxuIgorICAgICAgIiAgYmFyXG4iCisgICAgICAiICAgIFdoaWNoIGlzOiA2
IiwKICAgICAgIG1zZzMuY19zdHIoKSk7CiAKLSAgY29uc3QgU3RyaW5nIG1zZzQoCisgIGNvbnN0
IHN0ZDo6c3RyaW5nIG1zZzQoCiAgICAgICBFcUZhaWx1cmUoIjUiLCAiNiIsIGZvb192YWwsIGJh
cl92YWwsIGZhbHNlKS5mYWlsdXJlX21lc3NhZ2UoKSk7CiAgIEVYUEVDVF9TVFJFUSgKLSAgICAg
ICJWYWx1ZSBvZjogNlxuIgotICAgICAgIkV4cGVjdGVkOiA1IiwKKyAgICAgICJFeHBlY3RlZCBl
cXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4iCisgICAgICAiICA1XG4iCisgICAgICAiICA2IiwK
ICAgICAgIG1zZzQuY19zdHIoKSk7CiAKLSAgY29uc3QgU3RyaW5nIG1zZzUoCisgIGNvbnN0IHN0
ZDo6c3RyaW5nIG1zZzUoCiAgICAgICBFcUZhaWx1cmUoImZvbyIsICJiYXIiLAotICAgICAgICAg
ICAgICAgIFN0cmluZygiXCJ4XCIiKSwgU3RyaW5nKCJcInlcIiIpLAorICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nKCJcInhcIiIpLCBzdGQ6OnN0cmluZygiXCJ5XCIiKSwKICAgICAgICAgICAg
ICAgICB0cnVlKS5mYWlsdXJlX21lc3NhZ2UoKSk7CiAgIEVYUEVDVF9TVFJFUSgKLSAgICAgICJW
YWx1ZSBvZjogYmFyXG4iCi0gICAgICAiICBBY3R1YWw6IFwieVwiXG4iCi0gICAgICAiRXhwZWN0
ZWQ6IGZvbyAoaWdub3JpbmcgY2FzZSlcbiIKLSAgICAgICJXaGljaCBpczogXCJ4XCIiLAorICAg
ICAgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICIgIGZvb1xu
IgorICAgICAgIiAgICBXaGljaCBpczogXCJ4XCJcbiIKKyAgICAgICIgIGJhclxuIgorICAgICAg
IiAgICBXaGljaCBpczogXCJ5XCJcbiIKKyAgICAgICJJZ25vcmluZyBjYXNlIiwKICAgICAgIG1z
ZzUuY19zdHIoKSk7CiB9CiAKK1RFU1QoQXNzZXJ0aW9uVGVzdCwgRXFGYWlsdXJlV2l0aERpZmYp
IHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbGVmdCgKKyAgICAgICIxXFxuMlhYWFxcbjNcXG41XFxu
NlxcbjdcXG44XFxuOVxcbjEwXFxuMTFcXG4xMlhYWFxcbjEzXFxuMTRcXG4xNSIpOworICBjb25z
dCBzdGQ6OnN0cmluZyByaWdodCgKKyAgICAgICIxXFxuMlxcbjNcXG40XFxuNVxcbjZcXG43XFxu
OFxcbjlcXG4xMVxcbjEyXFxuMTNcXG4xNCIpOworICBjb25zdCBzdGQ6OnN0cmluZyBtc2cxKAor
ICAgICAgRXFGYWlsdXJlKCJsZWZ0IiwgInJpZ2h0IiwgbGVmdCwgcmlnaHQsIGZhbHNlKS5mYWls
dXJlX21lc3NhZ2UoKSk7CisgIEVYUEVDVF9TVFJFUSgKKyAgICAgICJFeHBlY3RlZCBlcXVhbGl0
eSBvZiB0aGVzZSB2YWx1ZXM6XG4iCisgICAgICAiICBsZWZ0XG4iCisgICAgICAiICAgIFdoaWNo
IGlzOiAiCisgICAgICAiMVxcbjJYWFhcXG4zXFxuNVxcbjZcXG43XFxuOFxcbjlcXG4xMFxcbjEx
XFxuMTJYWFhcXG4xM1xcbjE0XFxuMTVcbiIKKyAgICAgICIgIHJpZ2h0XG4iCisgICAgICAiICAg
IFdoaWNoIGlzOiAxXFxuMlxcbjNcXG40XFxuNVxcbjZcXG43XFxuOFxcbjlcXG4xMVxcbjEyXFxu
MTNcXG4xNFxuIgorICAgICAgIldpdGggZGlmZjpcbkBAIC0xLDUgKzEsNiBAQFxuIDFcbi0yWFhY
XG4rMlxuIDNcbis0XG4gNVxuIDZcbiIKKyAgICAgICJAQCAtNyw4ICs4LDYgQEBcbiA4XG4gOVxu
LTEwXG4gMTFcbi0xMlhYWFxuKzEyXG4gMTNcbiAxNFxuLTE1XG4iLAorICAgICAgbXNnMS5jX3N0
cigpKTsKK30KKwogLy8gVGVzdHMgQXBwZW5kVXNlck1lc3NhZ2UoKSwgdXNlZCBmb3IgaW1wbGVt
ZW50aW5nIHRoZSAqRVEqIG1hY3Jvcy4KIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXBwZW5kVXNlck1l
c3NhZ2UpIHsKLSAgY29uc3QgU3RyaW5nIGZvbygiZm9vIik7CisgIGNvbnN0IHN0ZDo6c3RyaW5n
IGZvbygiZm9vIik7CiAKICAgTWVzc2FnZSBtc2c7CiAgIEVYUEVDVF9TVFJFUSgiZm9vIiwKQEAg
LTM0NzcsNyArMzYzMiw3IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXBwZW5kVXNlck1lc3NhZ2Up
IHsKIAogI2lmZGVmIF9fQk9STEFORENfXwogLy8gU2lsZW5jZXMgd2FybmluZ3M6ICJDb25kaXRp
b24gaXMgYWx3YXlzIHRydWUiLCAiVW5yZWFjaGFibGUgY29kZSIKLSNwcmFnbWEgb3B0aW9uIHB1
c2ggLXctY2NjIC13LXJjaAorIyBwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAogI2Vu
ZGlmCiAKIC8vIFRlc3RzIEFTU0VSVF9UUlVFLgpAQCAtMzQ5MCw4ICszNjQ1LDggQEAgVEVTVChB
c3NlcnRpb25UZXN0LCBBU1NFUlRfVFJVRSkgewogLy8gVGVzdHMgQVNTRVJUX1RSVUUocHJlZGlj
YXRlKSBmb3IgcHJlZGljYXRlcyByZXR1cm5pbmcgQXNzZXJ0aW9uUmVzdWx0LgogVEVTVChBc3Nl
cnRpb25UZXN0LCBBc3NlcnRUcnVlV2l0aEFzc2VydGlvblJlc3VsdCkgewogICBBU1NFUlRfVFJV
RShSZXN1bHRJc0V2ZW4oMikpOwotI2lmICFkZWZpbmVkKF9fQk9STEFORENfXykgfHwgX19CT1JM
QU5EQ19fID49IDB4NjAwCi0gIC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAwNy4KKyNpZm5kZWYg
X19CT1JMQU5EQ19fCisgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIuCiAgIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKEFTU0VSVF9UUlVFKFJlc3VsdElzRXZlbigzKSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICJWYWx1ZSBvZjogUmVzdWx0SXNFdmVuKDMpXG4iCiAgICAgICAgICAgICAgICAgICAgICAg
ICIgIEFjdHVhbDogZmFsc2UgKDMgaXMgb2RkKVxuIgpAQCAtMzUxNiw4ICszNjcxLDggQEAgVEVT
VChBc3NlcnRpb25UZXN0LCBBU1NFUlRfRkFMU0UpIHsKIC8vIFRlc3RzIEFTU0VSVF9GQUxTRShw
cmVkaWNhdGUpIGZvciBwcmVkaWNhdGVzIHJldHVybmluZyBBc3NlcnRpb25SZXN1bHQuCiBURVNU
KEFzc2VydGlvblRlc3QsIEFzc2VydEZhbHNlV2l0aEFzc2VydGlvblJlc3VsdCkgewogICBBU1NF
UlRfRkFMU0UoUmVzdWx0SXNFdmVuKDMpKTsKLSNpZiAhZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8
IF9fQk9STEFORENfXyA+PSAweDYwMAotICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcuCisj
aWZuZGVmIF9fQk9STEFORENfXworICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyLgogICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoUmVzdWx0SXNFdmVuKDIpKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIlZhbHVlIG9mOiBSZXN1bHRJc0V2ZW4oMilcbiIKICAgICAgICAgICAgICAg
ICAgICAgICAgIiAgQWN0dWFsOiB0cnVlICgyIGlzIGV2ZW4pXG4iCkBAIC0zNTMxLDggKzM2ODYs
OCBAQCBURVNUKEFzc2VydGlvblRlc3QsIEFzc2VydEZhbHNlV2l0aEFzc2VydGlvblJlc3VsdCkg
ewogfQogCiAjaWZkZWYgX19CT1JMQU5EQ19fCi0vLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBw
cmV2aW91cyAiI3ByYWdtYSBvcHRpb24gcHVzaCIgc3VwcmVzc2VkIHRoZW0KLSNwcmFnbWEgb3B0
aW9uIHBvcAorLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0ZXIgcHJldmlvdXMgIiNwcmFnbWEgb3B0
aW9uIHB1c2giIHN1cHByZXNzZWQgdGhlbQorIyBwcmFnbWEgb3B0aW9uIHBvcAogI2VuZGlmCiAK
IC8vIFRlc3RzIHVzaW5nIEFTU0VSVF9FUSBvbiBkb3VibGUgdmFsdWVzLiAgVGhlIHB1cnBvc2Ug
aXMgdG8gbWFrZQpAQCAtMzU1MSw5ICszNzA2LDEwIEBAIFRFU1QoRXhwZWN0VGVzdCwgQVNTRVJU
X0VRX0RvdWJsZSkgewogVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfRVEpIHsKICAgQVNTRVJU
X0VRKDUsIDIgKyAzKTsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKDUsIDIqMyks
Ci0gICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogMiozXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICIgIEFjdHVhbDogNlxuIgotICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0
ZWQ6IDUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRo
ZXNlIHZhbHVlczpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgNVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAiICAyKjNcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICBXaGlj
aCBpczogNiIpOwogfQogCiAvLyBUZXN0cyBBU1NFUlRfRVEoTlVMTCwgcG9pbnRlcikuCkBAIC0z
NTYxLDcgKzM3MTcsNyBAQCBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9FUSkgewogVEVTVChB
c3NlcnRpb25UZXN0LCBBU1NFUlRfRVFfTlVMTCkgewogICAvLyBBIHN1Y2Nlc3MuCiAgIGNvbnN0
IGNoYXIqIHAgPSBOVUxMOwotICAvLyBTb21lIG9sZGVyIEdDQyB2ZXJzaW9ucyBtYXkgaXNzdWUg
YSBzcHVyaW91cyB3YXJpbmcgaW4gdGhpcyBvciB0aGUgbmV4dAorICAvLyBTb21lIG9sZGVyIEdD
QyB2ZXJzaW9ucyBtYXkgaXNzdWUgYSBzcHVyaW91cyB3YXJuaW5nIGluIHRoaXMgb3IgdGhlIG5l
eHQKICAgLy8gYXNzZXJ0aW9uIHN0YXRlbWVudC4gVGhpcyB3YXJuaW5nIHNob3VsZCBub3QgYmUg
c3VwcHJlc3NlZCB3aXRoCiAgIC8vIHN0YXRpY19jYXN0IHNpbmNlIHRoZSB0ZXN0IHZlcmlmaWVz
IHRoZSBhYmlsaXR5IHRvIHVzZSBiYXJlIE5VTEwgYXMgdGhlCiAgIC8vIGV4cGVjdGVkIHBhcmFt
ZXRlciB0byB0aGUgbWFjcm8uCkBAIC0zNTcwLDcgKzM3MjYsNyBAQCBURVNUKEFzc2VydGlvblRl
c3QsIEFTU0VSVF9FUV9OVUxMKSB7CiAgIC8vIEEgZmFpbHVyZS4KICAgc3RhdGljIGludCBuID0g
MDsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKE5VTEwsICZuKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIlZhbHVlIG9mOiAmblxuIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICIgICZuXG4gICAgV2hpY2ggaXM6Iik7CiB9CiAjZW5kaWYgIC8vIEdURVNUX0NBTl9DT01QQVJF
X05VTEwKIApAQCAtMzU4Niw3ICszNzQyLDcgQEAgVEVTVChFeHBlY3RUZXN0LCBBU1NFUlRfRVFf
MCkgewogCiAgIC8vIEEgZmFpbHVyZS4KICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VR
KDAsIDUuNiksCi0gICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogMCIpOworICAgICAg
ICAgICAgICAgICAgICAgICAiICAwXG4gIDUuNiIpOwogfQogCiAvLyBUZXN0cyBBU1NFUlRfTkUu
CkBAIC0zNjM1LDEzICszNzkxLDE0IEBAIHZvaWQgVGhyb3dOb3RoaW5nKCkge30KIFRFU1QoQXNz
ZXJ0aW9uVGVzdCwgQVNTRVJUX1RIUk9XKSB7CiAgIEFTU0VSVF9USFJPVyhUaHJvd0FuSW50ZWdl
cigpLCBpbnQpOwogCi0jaWZuZGVmIF9fQk9STEFORENfXworIyBpZm5kZWYgX19CT1JMQU5EQ19f
CisKICAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlciAyMDA3IGFuZCAyMDA5LgogICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRSgKICAgICAgIEFTU0VSVF9USFJPVyhUaHJvd0FuSW50ZWdlcigpLCBib29sKSwK
ICAgICAgICJFeHBlY3RlZDogVGhyb3dBbkludGVnZXIoKSB0aHJvd3MgYW4gZXhjZXB0aW9uIG9m
IHR5cGUgYm9vbC5cbiIKICAgICAgICIgIEFjdHVhbDogaXQgdGhyb3dzIGEgZGlmZmVyZW50IHR5
cGUuIik7Ci0jZW5kaWYKKyMgZW5kaWYKIAogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgKICAgICAg
IEFTU0VSVF9USFJPVyhUaHJvd05vdGhpbmcoKSwgYm9vbCksCkBAIC0zNjcyLDcgKzM4MjksOCBA
QCBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9BTllfVEhST1cpIHsKIC8vIGNvbXBpbGUuCiBU
RVNUKEFzc2VydGlvblRlc3QsIEFzc2VydFByZWNlZGVuY2UpIHsKICAgQVNTRVJUX0VRKDEgPCAy
LCB0cnVlKTsKLSAgQVNTRVJUX0VRKHRydWUgJiYgZmFsc2UsIGZhbHNlKTsKKyAgYm9vbCBmYWxz
ZV92YWx1ZSA9IGZhbHNlOworICBBU1NFUlRfRVEodHJ1ZSAmJiBmYWxzZV92YWx1ZSwgZmFsc2Up
OwogfQogCiAvLyBBIHN1YnJvdXRpbmUgdXNlZCBieSB0aGUgZm9sbG93aW5nIHRlc3QuCkBAIC0z
NjgzLDcgKzM4NDEsNyBAQCB2b2lkIFRlc3RFcTEoaW50IHgpIHsKIC8vIFRlc3RzIGNhbGxpbmcg
YSB0ZXN0IHN1YnJvdXRpbmUgdGhhdCdzIG5vdCBwYXJ0IG9mIGEgZml4dHVyZS4KIFRFU1QoQXNz
ZXJ0aW9uVGVzdCwgTm9uRml4dHVyZVN1YnJvdXRpbmUpIHsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoVGVzdEVxMSgyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiB4Iik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICIgIHhcbiAgICBXaGljaCBpczogMiIpOwogfQogCiAvLyBB
biB1bmNvcHlhYmxlIGNsYXNzLgpAQCAtMzczMiw3ICszODkwLDggQEAgVEVTVChBc3NlcnRpb25U
ZXN0LCBBc3NlcnRXb3Jrc1dpdGhVbmNvcHlhYmxlT2JqZWN0KSB7CiAgIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKFRlc3RBc3NlcnROb25Qb3NpdGl2ZSgpLAogICAgICJJc1Bvc2l0aXZlVW5jb3B5YWJs
ZSh5KSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlXG55IGV2YWx1YXRlcyB0byAtMSIpOwogICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRShUZXN0QXNzZXJ0RXF1YWxzVW5jb3B5YWJsZSgpLAotICAgICJW
YWx1ZSBvZjogeVxuICBBY3R1YWw6IC0xXG5FeHBlY3RlZDogeFxuV2hpY2ggaXM6IDUiKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgeFxuICAgIFdoaWNoIGlzOiA1XG4gIHlcbiAg
ICBXaGljaCBpczogLTEiKTsKIH0KIAogLy8gVGVzdHMgdGhhdCB1bmNvcHlhYmxlIG9iamVjdHMg
Y2FuIGJlIHVzZWQgaW4gZXhwZWN0cy4KQEAgLTM3NDQsNTcgKzM5MDMsOTAgQEAgVEVTVChBc3Nl
cnRpb25UZXN0LCBFeHBlY3RXb3Jrc1dpdGhVbmNvcHlhYmxlT2JqZWN0KSB7CiAgICAgIklzUG9z
aXRpdmVVbmNvcHlhYmxlKHkpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmVcbnkgZXZhbHVhdGVz
IHRvIC0xIik7CiAgIEVYUEVDVF9FUSh4LCB4KTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX0VRKHgsIHkpLAotICAgICJWYWx1ZSBvZjogeVxuICBBY3R1YWw6IC0xXG5FeHBlY3Rl
ZDogeFxuV2hpY2ggaXM6IDUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVk
IGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IiAgeFxuICAgIFdoaWNoIGlzOiA1XG4gIHlcbiAgICBXaGljaCBpczogLTEiKTsKIH0KIAorZW51
bSBOYW1lZEVudW0geworICBrRTEgPSAwLAorICBrRTIgPSAxCit9OworCitURVNUKEFzc2VydGlv
blRlc3QsIE5hbWVkRW51bSkgeworICBFWFBFQ1RfRVEoa0UxLCBrRTEpOworICBFWFBFQ1RfTFQo
a0UxLCBrRTIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoa0UxLCBrRTIp
LCAiV2hpY2ggaXM6IDAiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKGtF
MSwga0UyKSwgIldoaWNoIGlzOiAxIik7Cit9CiAKIC8vIFRoZSB2ZXJzaW9uIG9mIGdjYyB1c2Vk
IGluIFhDb2RlIDIuMiBoYXMgYSBidWcgYW5kIGRvZXNuJ3QgYWxsb3cKIC8vIGFub255bW91cyBl
bnVtcyBpbiBhc3NlcnRpb25zLiAgVGhlcmVmb3JlIHRoZSBmb2xsb3dpbmcgdGVzdCBpcyBub3QK
IC8vIGRvbmUgb24gTWFjLgotLy8gU3VuIFN0dWRpbyBhbHNvIHJlamVjdHMgdGhpcyBjb2RlLgot
I2lmICFHVEVTVF9PU19NQUMgJiYgIWRlZmluZWQoX19TVU5QUk9fQ0MpCisvLyBTdW4gU3R1ZGlv
IGFuZCBIUCBhQ0MgYWxzbyByZWplY3QgdGhpcyBjb2RlLgorI2lmICFHVEVTVF9PU19NQUMgJiYg
IWRlZmluZWQoX19TVU5QUk9fQ0MpICYmICFkZWZpbmVkKF9fSFBfYUNDKQogCiAvLyBUZXN0cyB1
c2luZyBhc3NlcnRpb25zIHdpdGggYW5vbnltb3VzIGVudW1zLgogZW51bSB7Ci0gIENBU0VfQSA9
IC0xLAotI2lmIEdURVNUX09TX0xJTlVYCisgIGtDYXNlQSA9IC0xLAorCisjIGlmIEdURVNUX09T
X0xJTlVYCisKICAgLy8gV2Ugd2FudCB0byB0ZXN0IHRoZSBjYXNlIHdoZXJlIHRoZSBzaXplIG9m
IHRoZSBhbm9ueW1vdXMgZW51bSBpcwogICAvLyBsYXJnZXIgdGhhbiBzaXplb2YoaW50KSwgdG8g
bWFrZSBzdXJlIG91ciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKICAgLy8gYXNzZXJ0aW9ucyBkb2Vz
bid0IHRydW5jYXRlIHRoZSBlbnVtcy4gIEhvd2V2ZXIsIE1TVkMKICAgLy8gKGluY29ycmVjdGx5
KSBkb2Vzbid0IGFsbG93IGFuIGVudW0gdmFsdWUgdG8gZXhjZWVkIHRoZSByYW5nZSBvZgogICAv
LyBhbiBpbnQsIHNvIHRoaXMgaGFzIHRvIGJlIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuCiAgIC8v
Ci0gIC8vIE9uIExpbnV4LCBDQVNFX0IgYW5kIENBU0VfQSBoYXZlIHRoZSBzYW1lIHZhbHVlIHdo
ZW4gdHJ1bmNhdGVkIHRvCisgIC8vIE9uIExpbnV4LCBrQ2FzZUIgYW5kIGtDYXNlQSBoYXZlIHRo
ZSBzYW1lIHZhbHVlIHdoZW4gdHJ1bmNhdGVkIHRvCiAgIC8vIGludCBzaXplLiAgV2Ugd2FudCB0
byB0ZXN0IHdoZXRoZXIgdGhpcyB3aWxsIGNvbmZ1c2UgdGhlCiAgIC8vIGFzc2VydGlvbnMuCi0g
IENBU0VfQiA9IHRlc3Rpbmc6OmludGVybmFsOjprTWF4QmlnZ2VzdEludCwKLSNlbHNlCi0gIENB
U0VfQiA9IElOVF9NQVgsCi0jZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCisgIGtDYXNlQiA9IHRl
c3Rpbmc6OmludGVybmFsOjprTWF4QmlnZ2VzdEludCwKKworIyBlbHNlCisKKyAga0Nhc2VCID0g
SU5UX01BWCwKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKKworICBrQ2FzZUMgPSA0Mgog
fTsKIAogVEVTVChBc3NlcnRpb25UZXN0LCBBbm9ueW1vdXNFbnVtKSB7Ci0jaWYgR1RFU1RfT1Nf
TElOVVgKLSAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGludD4oQ0FTRV9BKSwgc3RhdGljX2Nhc3Q8
aW50PihDQVNFX0IpKTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKLQotICBFWFBFQ1RfRVEo
Q0FTRV9BLCBDQVNFX0EpOwotICBFWFBFQ1RfTkUoQ0FTRV9BLCBDQVNFX0IpOwotICBFWFBFQ1Rf
TFQoQ0FTRV9BLCBDQVNFX0IpOwotICBFWFBFQ1RfTEUoQ0FTRV9BLCBDQVNFX0IpOwotICBFWFBF
Q1RfR1QoQ0FTRV9CLCBDQVNFX0EpOwotICBFWFBFQ1RfR0UoQ0FTRV9BLCBDQVNFX0EpOwotICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR0UoQ0FTRV9BLCBDQVNFX0IpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAiKENBU0VfQSkgPj0gKENBU0VfQikiKTsKLQotICBBU1NFUlRf
RVEoQ0FTRV9BLCBDQVNFX0EpOwotICBBU1NFUlRfTkUoQ0FTRV9BLCBDQVNFX0IpOwotICBBU1NF
UlRfTFQoQ0FTRV9BLCBDQVNFX0IpOwotICBBU1NFUlRfTEUoQ0FTRV9BLCBDQVNFX0IpOwotICBB
U1NFUlRfR1QoQ0FTRV9CLCBDQVNFX0EpOwotICBBU1NFUlRfR0UoQ0FTRV9BLCBDQVNFX0EpOwot
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoQ0FTRV9BLCBDQVNFX0IpLAotICAgICAg
ICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IENBU0VfQiIpOworIyBpZiBHVEVTVF9PU19MSU5V
WAorCisgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxpbnQ+KGtDYXNlQSksIHN0YXRpY19jYXN0PGlu
dD4oa0Nhc2VCKSk7CisKKyMgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCisKKyAgRVhQRUNUX0VR
KGtDYXNlQSwga0Nhc2VBKTsKKyAgRVhQRUNUX05FKGtDYXNlQSwga0Nhc2VCKTsKKyAgRVhQRUNU
X0xUKGtDYXNlQSwga0Nhc2VCKTsKKyAgRVhQRUNUX0xFKGtDYXNlQSwga0Nhc2VCKTsKKyAgRVhQ
RUNUX0dUKGtDYXNlQiwga0Nhc2VBKTsKKyAgRVhQRUNUX0dFKGtDYXNlQSwga0Nhc2VBKTsKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dFKGtDYXNlQSwga0Nhc2VCKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIihrQ2FzZUEpID49IChrQ2FzZUIpIik7CisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HRShrQ2FzZUEsIGtDYXNlQyksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICItMSB2cyA0MiIpOworCisgIEFTU0VSVF9FUShrQ2FzZUEsIGtDYXNlQSk7
CisgIEFTU0VSVF9ORShrQ2FzZUEsIGtDYXNlQik7CisgIEFTU0VSVF9MVChrQ2FzZUEsIGtDYXNl
Qik7CisgIEFTU0VSVF9MRShrQ2FzZUEsIGtDYXNlQik7CisgIEFTU0VSVF9HVChrQ2FzZUIsIGtD
YXNlQSk7CisgIEFTU0VSVF9HRShrQ2FzZUEsIGtDYXNlQSk7CisKKyMgaWZuZGVmIF9fQk9STEFO
RENfXworCisgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIuCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJF
KEFTU0VSVF9FUShrQ2FzZUEsIGtDYXNlQiksCisgICAgICAgICAgICAgICAgICAgICAgICIgIGtD
YXNlQlxuICAgIFdoaWNoIGlzOiAiKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VR
KGtDYXNlQSwga0Nhc2VDKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuICAgIFdoaWNoIGlz
OiA0MiIpOworIyBlbmRpZgorCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShrQ2Fz
ZUEsIGtDYXNlQyksCisgICAgICAgICAgICAgICAgICAgICAgICJcbiAgICBXaGljaCBpczogLTEi
KTsKIH0KIAogI2VuZGlmICAvLyAhR1RFU1RfT1NfTUFDICYmICFkZWZpbmVkKF9fU1VOUFJPX0ND
KQpAQCAtMzg0MCwyNCArNDAzMiwyNiBAQCBURVNUKEhSRVNVTFRBc3NlcnRpb25UZXN0LCBFWFBF
Q1RfSFJFU1VMVF9GQUlMRUQpIHsKIAogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1Rf
SFJFU1VMVF9GQUlMRUQoT2tIUkVTVUxUU3VjY2VzcygpKSwKICAgICAiRXhwZWN0ZWQ6IChPa0hS
RVNVTFRTdWNjZXNzKCkpIGZhaWxzLlxuIgotICAgICIgIEFjdHVhbDogMHgwMDAwMDAwMCIpOwor
ICAgICIgIEFjdHVhbDogMHgwIik7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9I
UkVTVUxUX0ZBSUxFRChGYWxzZUhSRVNVTFRTdWNjZXNzKCkpLAogICAgICJFeHBlY3RlZDogKEZh
bHNlSFJFU1VMVFN1Y2Nlc3MoKSkgZmFpbHMuXG4iCi0gICAgIiAgQWN0dWFsOiAweDAwMDAwMDAx
Iik7CisgICAgIiAgQWN0dWFsOiAweDEiKTsKIH0KIAogVEVTVChIUkVTVUxUQXNzZXJ0aW9uVGVz
dCwgQVNTRVJUX0hSRVNVTFRfRkFJTEVEKSB7CiAgIEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChFX1VO
RVhQRUNURUQpOwogCi0jaWZuZGVmIF9fQk9STEFORENfXworIyBpZm5kZWYgX19CT1JMQU5EQ19f
CisKICAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlciAyMDA3IGFuZCAyMDA5LgogICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShBU1NFUlRfSFJFU1VMVF9GQUlMRUQoT2tIUkVTVUxUU3VjY2VzcygpKSwKICAg
ICAiRXhwZWN0ZWQ6IChPa0hSRVNVTFRTdWNjZXNzKCkpIGZhaWxzLlxuIgotICAgICIgIEFjdHVh
bDogMHgwMDAwMDAwMCIpOwotI2VuZGlmCisgICAgIiAgQWN0dWFsOiAweDAiKTsKKyMgZW5kaWYK
KwogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfSFJFU1VMVF9GQUlMRUQoRmFsc2VIUkVT
VUxUU3VjY2VzcygpKSwKICAgICAiRXhwZWN0ZWQ6IChGYWxzZUhSRVNVTFRTdWNjZXNzKCkpIGZh
aWxzLlxuIgotICAgICIgIEFjdHVhbDogMHgwMDAwMDAwMSIpOworICAgICIgIEFjdHVhbDogMHgx
Iik7CiB9CiAKIC8vIFRlc3RzIHRoYXQgc3RyZWFtaW5nIHRvIHRoZSBIUkVTVUxUIG1hY3JvcyB3
b3Jrcy4KQEAgLTM4NzEsMTIgKzQwNjUsMTMgQEAgVEVTVChIUkVTVUxUQXNzZXJ0aW9uVGVzdCwg
U3RyZWFtaW5nKSB7CiAgICAgICBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQoRV9VTkVYUEVDVEVE
KSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCiAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIpOwogCi0j
aWZuZGVmIF9fQk9STEFORENfXworIyBpZm5kZWYgX19CT1JMQU5EQ19fCisKICAgLy8gSUNFJ3Mg
aW4gQysrQnVpbGRlciAyMDA3IGFuZCAyMDA5LgogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgKICAg
ICAgIEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChFX1VORVhQRUNURUQpIDw8ICJleHBlY3RlZCBm
YWlsdXJlIiwKICAgICAgICJleHBlY3RlZCBmYWlsdXJlIik7Ci0jZW5kaWYKKyMgZW5kaWYKIAog
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKICAgICAgIEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChT
X09LKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCkBAIC0zODkxLDcgKzQwODYsNyBAQCBURVNUKEhS
RVNVTFRBc3NlcnRpb25UZXN0LCBTdHJlYW1pbmcpIHsKIAogI2lmZGVmIF9fQk9STEFORENfXwog
Ly8gU2lsZW5jZXMgd2FybmluZ3M6ICJDb25kaXRpb24gaXMgYWx3YXlzIHRydWUiLCAiVW5yZWFj
aGFibGUgY29kZSIKLSNwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAorIyBwcmFnbWEg
b3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAogI2VuZGlmCiAKIC8vIFRlc3RzIHRoYXQgdGhlIGFz
c2VydGlvbiBtYWNyb3MgYmVoYXZlIGxpa2Ugc2luZ2xlIHN0YXRlbWVudHMuCkBAIC00MDA4LDcg
KzQyMDMsNyBAQCBURVNUKEFzc2VydGlvblN5bnRheFRlc3QsIFdvcmtzV2l0aFN3aXRjaCkgewog
I2lmIEdURVNUX0hBU19FWENFUFRJT05TCiAKIHZvaWQgVGhyb3dBU3RyaW5nKCkgewotICAgIHRo
cm93ICJTdHJpbmciOworICAgIHRocm93ICJzdGQ6OnN0cmluZyI7CiB9CiAKIC8vIFRlc3QgdGhh
dCB0aGUgZXhjZXB0aW9uIGFzc2VydGlvbiBtYWNyb3MgY29tcGlsZSBhbmQgd29yayB3aXRoIGNv
bnN0CkBAIC00MDYwLDggKzQyNTUsMTA5IEBAIFRFU1QoU3VjY2Vzc2Z1bEFzc2VydGlvblRlc3Qs
IEFTU0VSVF9TVFIpIHsKIAogbmFtZXNwYWNlIHsKIAorLy8gVGVzdHMgdGhlIG1lc3NhZ2Ugc3Ry
ZWFtaW5nIHZhcmlhdGlvbiBvZiBhc3NlcnRpb25zLgorCitURVNUKEFzc2VydGlvbldpdGhNZXNz
YWdlVGVzdCwgRVhQRUNUKSB7CisgIEVYUEVDVF9FUSgxLCAxKSA8PCAiVGhpcyBzaG91bGQgc3Vj
Y2VlZC4iOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfTkUoMSwgMSkgPDwgIkV4
cGVjdGVkIGZhaWx1cmUgIzEuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVk
IGZhaWx1cmUgIzEiKTsKKyAgRVhQRUNUX0xFKDEsIDIpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVk
LiI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9MVCgxLCAwKSA8PCAiRXhwZWN0
ZWQgZmFpbHVyZSAjMi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFp
bHVyZSAjMi4iKTsKKyAgRVhQRUNUX0dFKDEsIDApIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HVCgxLCAyKSA8PCAiRXhwZWN0ZWQg
ZmFpbHVyZSAjMy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVy
ZSAjMy4iKTsKKworICBFWFBFQ1RfU1RSRVEoIjEiLCAiMSIpIDw8ICJUaGlzIHNob3VsZCBzdWNj
ZWVkLiI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9TVFJORSgiMSIsICIxIikg
PDwgIkV4cGVjdGVkIGZhaWx1cmUgIzQuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4
cGVjdGVkIGZhaWx1cmUgIzQuIik7CisgIEVYUEVDVF9TVFJDQVNFRVEoImEiLCAiQSIpIDw8ICJU
aGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9T
VFJDQVNFTkUoImEiLCAiQSIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM1LiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJlICM1LiIpOworCisgIEVYUEVDVF9GTE9B
VF9FUSgxLCAxKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShFWFBFQ1RfRE9VQkxFX0VRKDEsIDEuMikgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzYu
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1cmUgIzYuIik7Cisg
IEVYUEVDVF9ORUFSKDEsIDEuMSwgMC4yKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworfQor
CitURVNUKEFzc2VydGlvbldpdGhNZXNzYWdlVGVzdCwgQVNTRVJUKSB7CisgIEFTU0VSVF9FUSgx
LCAxKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfTkUoMSwgMikgPDwgIlRo
aXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJUX0xFKDEsIDIpIDw8ICJUaGlzIHNob3VsZCBz
dWNjZWVkLiI7CisgIEFTU0VSVF9MVCgxLCAyKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOwor
ICBBU1NFUlRfR0UoMSwgMCkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoQVNTRVJUX0dUKDEsIDIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJlLiIpOworfQorCitURVNUKEFzc2Vy
dGlvbldpdGhNZXNzYWdlVGVzdCwgQVNTRVJUX1NUUikgeworICBBU1NFUlRfU1RSRVEoIjEiLCAi
MSIpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9TVFJORSgiMSIsICIyIikg
PDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJUX1NUUkNBU0VFUSgiYSIsICJBIikg
PDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJU
X1NUUkNBU0VORSgiYSIsICJBIikgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1cmUuIik7Cit9CisKK1RFU1QoQXNzZXJ0aW9uV2l0
aE1lc3NhZ2VUZXN0LCBBU1NFUlRfRkxPQVRJTkcpIHsKKyAgQVNTRVJUX0ZMT0FUX0VRKDEsIDEp
IDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9ET1VCTEVfRVEoMSwgMSkgPDwg
IlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX05F
QVIoMSwxLjIsIDAuMSkgPDwgIkV4cGVjdCBmYWlsdXJlLiIsICAvLyBOT0xJTlQKKyAgICAgICAg
ICAgICAgICAgICAgICAgIkV4cGVjdCBmYWlsdXJlLiIpOworICAvLyBUbyB3b3JrIGFyb3VuZCBh
IGJ1ZyBpbiBnY2MgMi45NS4wLCB0aGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vCisgIC8vIHNwYWNl
IGFmdGVyIHRoZSBmaXJzdCBjb21tYSBpbiB0aGUgcHJldmlvdXMgc3RhdGVtZW50LgorfQorCisv
LyBUZXN0cyB1c2luZyBBU1NFUlRfRkFMU0Ugd2l0aCBhIHN0cmVhbWVkIG1lc3NhZ2UuCitURVNU
KEFzc2VydGlvbldpdGhNZXNzYWdlVGVzdCwgQVNTRVJUX0ZBTFNFKSB7CisgIEFTU0VSVF9GQUxT
RShmYWxzZSkgPDwgIlRoaXMgc2hvdWxkbid0IGZhaWwuIjsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoeyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX0ZBTFNFKHRydWUpIDw8ICJFeHBlY3RlZCBmYWls
dXJlOiAiIDw8IDIgPDwgIiA+ICIgPDwgMQorICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGV2
YWx1YXRlcyB0byAiIDw8IHRydWU7CisgIH0sICJFeHBlY3RlZCBmYWlsdXJlIik7Cit9CisKKy8v
IFRlc3RzIHVzaW5nIEZBSUwgd2l0aCBhIHN0cmVhbWVkIG1lc3NhZ2UuCitURVNUKEFzc2VydGlv
bldpdGhNZXNzYWdlVGVzdCwgRkFJTCkgeworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShGQUlMKCkg
PDwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIjAiKTsKK30KKworLy8gVGVzdHMgdXNpbmcg
U1VDQ0VFRCB3aXRoIGEgc3RyZWFtZWQgbWVzc2FnZS4KK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3Nh
Z2VUZXN0LCBTVUNDRUVEKSB7CisgIFNVQ0NFRUQoKSA8PCAiU3VjY2VzcyA9PSAiIDw8IDE7Cit9
CisKKy8vIFRlc3RzIHVzaW5nIEFTU0VSVF9UUlVFIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgor
VEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVF9UUlVFKSB7CisgIEFTU0VSVF9U
UlVFKHRydWUpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9UUlVFKHRydWUp
IDw8IHRydWU7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VS
VF9UUlVFKGZhbHNlKSA8PCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KE5VTEwpCisgICAgICAg
ICAgICAgICAgICAgICAgIDw8IHN0YXRpY19jYXN0PGNoYXIgKj4oTlVMTCk7CisgIH0sICIobnVs
bCkobnVsbCkiKTsKK30KKworI2lmIEdURVNUX09TX1dJTkRPV1MKKy8vIFRlc3RzIHVzaW5nIHdp
ZGUgc3RyaW5ncyBpbiBhc3NlcnRpb24gbWVzc2FnZXMuCitURVNUKEFzc2VydGlvbldpdGhNZXNz
YWdlVGVzdCwgV2lkZVN0cmluZ01lc3NhZ2UpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX1RSVUUoZmFsc2UpIDw8IEwiVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkLlx4ODExOSI7CisgIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIik7Cisg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEFTU0VSVF9FUSgxLCAyKSA8
PCAiVGhpcyBmYWlsdXJlIGlzICIKKyAgICAgICAgICAgICAgICAgICAgPDwgTCJleHBlY3RlZCB0
b28uXHg4MTIwIjsKKyAgfSwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCB0b28uIik7Cit9Cisj
ZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKwogLy8gVGVzdHMgRVhQRUNUX1RSVUUuCiBURVNU
KEV4cGVjdFRlc3QsIEVYUEVDVF9UUlVFKSB7CisgIEVYUEVDVF9UUlVFKHRydWUpIDw8ICJJbnRl
bnRpb25hbCBzdWNjZXNzIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1RSVUUo
ZmFsc2UpIDw8ICJJbnRlbnRpb25hbCBmYWlsdXJlICMxLiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJJbnRlbnRpb25hbCBmYWlsdXJlICMxLiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShFWFBFQ1RfVFJVRShmYWxzZSkgPDwgIkludGVudGlvbmFsIGZhaWx1cmUgIzIuIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkludGVudGlvbmFsIGZhaWx1cmUgIzIuIik7CiAgIEVY
UEVDVF9UUlVFKDIgPiAxKTsgIC8vIE5PTElOVAogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShF
WFBFQ1RfVFJVRSgyIDwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjog
MiA8IDFcbiIKQEAgLTQwODUsOSArNDM4MSwxNCBAQCBURVNUKEV4cGVjdFRlc3QsIEV4cGVjdFRy
dWVXaXRoQXNzZXJ0aW9uUmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBl
Y3RlZDogdHJ1ZSIpOwogfQogCi0vLyBUZXN0cyBFWFBFQ1RfRkFMU0UuCisvLyBUZXN0cyBFWFBF
Q1RfRkFMU0Ugd2l0aCBhIHN0cmVhbWVkIG1lc3NhZ2UuCiBURVNUKEV4cGVjdFRlc3QsIEVYUEVD
VF9GQUxTRSkgewogICBFWFBFQ1RfRkFMU0UoMiA8IDEpOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9G
QUxTRShmYWxzZSkgPDwgIkludGVudGlvbmFsIHN1Y2Nlc3MiOworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShFWFBFQ1RfRkFMU0UodHJ1ZSkgPDwgIkludGVudGlvbmFsIGZhaWx1cmUgIzEuIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIkludGVudGlvbmFsIGZhaWx1cmUgIzEuIik7Cisg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GQUxTRSh0cnVlKSA8PCAiSW50ZW50aW9u
YWwgZmFpbHVyZSAjMi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9uYWwg
ZmFpbHVyZSAjMi4iKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0ZBTFNFKDIg
PiAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiAyID4gMVxuIgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IHRydWVcbiIKQEAgLTQxMTEsMTcgKzQ0
MTIsMTggQEAgVEVTVChFeHBlY3RUZXN0LCBFeHBlY3RGYWxzZVdpdGhBc3NlcnRpb25SZXN1bHQp
IHsKIH0KIAogI2lmZGVmIF9fQk9STEFORENfXwotLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0ZXIg
cHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHJlc3NlZCB0aGVtCi0jcHJhZ21hIG9w
dGlvbiBwb3AKKy8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9w
dGlvbiBwdXNoIiBzdXBwcmVzc2VkIHRoZW0KKyMgcHJhZ21hIG9wdGlvbiBwb3AKICNlbmRpZgog
CiAvLyBUZXN0cyBFWFBFQ1RfRVEuCiBURVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9FUSkgewogICBF
WFBFQ1RfRVEoNSwgMiArIDMpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEo
NSwgMiozKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiAyKjNcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiA2XG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICJFeHBlY3RlZDogNSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhw
ZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICA1XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgIDIqM1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiICAgIFdoaWNoIGlzOiA2Iik7CiAgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9FUSg1LCAyIC0gMyksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIyIC0gMyIpOwogfQpAQCAtNDE0Myw3ICs0NDQ1LDcgQEAgVEVTVChFeHBlY3RUZXN0LCBFWFBF
Q1RfRVFfRG91YmxlKSB7CiBURVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9FUV9OVUxMKSB7CiAgIC8v
IEEgc3VjY2Vzcy4KICAgY29uc3QgY2hhciogcCA9IE5VTEw7Ci0gIC8vIFNvbWUgb2xkZXIgR0ND
IHZlcnNpb25zIG1heSBpc3N1ZSBhIHNwdXJpb3VzIHdhcmluZyBpbiB0aGlzIG9yIHRoZSBuZXh0
CisgIC8vIFNvbWUgb2xkZXIgR0NDIHZlcnNpb25zIG1heSBpc3N1ZSBhIHNwdXJpb3VzIHdhcm5p
bmcgaW4gdGhpcyBvciB0aGUgbmV4dAogICAvLyBhc3NlcnRpb24gc3RhdGVtZW50LiBUaGlzIHdh
cm5pbmcgc2hvdWxkIG5vdCBiZSBzdXBwcmVzc2VkIHdpdGgKICAgLy8gc3RhdGljX2Nhc3Qgc2lu
Y2UgdGhlIHRlc3QgdmVyaWZpZXMgdGhlIGFiaWxpdHkgdG8gdXNlIGJhcmUgTlVMTCBhcyB0aGUK
ICAgLy8gZXhwZWN0ZWQgcGFyYW1ldGVyIHRvIHRoZSBtYWNyby4KQEAgLTQxNTIsNyArNDQ1NCw3
IEBAIFRFU1QoRXhwZWN0VGVzdCwgRVhQRUNUX0VRX05VTEwpIHsKICAgLy8gQSBmYWlsdXJlLgog
ICBpbnQgbiA9IDA7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShOVUxMLCAm
biksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogJm5cbiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAiICAmblxuICAgIFdoaWNoIGlzOiIpOwogfQogI2VuZGlmICAv
LyBHVEVTVF9DQU5fQ09NUEFSRV9OVUxMCiAKQEAgLTQxNjgsNyArNDQ3MCw3IEBAIFRFU1QoRXhw
ZWN0VGVzdCwgRVhQRUNUX0VRXzApIHsKIAogICAvLyBBIGZhaWx1cmUuCiAgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9FUSgwLCA1LjYpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAiRXhwZWN0ZWQ6IDAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgMFxuICA1LjYi
KTsKIH0KIAogLy8gVGVzdHMgRVhQRUNUX05FLgpAQCAtNDI2OCw3ICs0NTcwLDcgQEAgVEVTVChF
eHBlY3RUZXN0LCBFWFBFQ1RfQU5ZX1RIUk9XKSB7CiBURVNUKEV4cGVjdFRlc3QsIEV4cGVjdFBy
ZWNlZGVuY2UpIHsKICAgRVhQRUNUX0VRKDEgPCAyLCB0cnVlKTsKICAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRVhQRUNUX0VRKHRydWUsIHRydWUgJiYgZmFsc2UpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAiVmFsdWUgb2Y6IHRydWUgJiYgZmFsc2UiKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiAgdHJ1ZSAmJiBmYWxzZVxuICAgIFdoaWNoIGlzOiBmYWxzZSIpOwogfQogCiAK
QEAgLTQzNjEsNyArNDY2Myw3IEBAIFRFU1QoU3RyZWFtYWJsZVRlc3QsIEJhc2ljSW9NYW5pcCkg
ewogCiB2b2lkIEFkZEZhaWx1cmVIZWxwZXIoYm9vbCogYWJvcnRlZCkgewogICAqYWJvcnRlZCA9
IHRydWU7Ci0gIEFERF9GQUlMVVJFKCkgPDwgIkZhaWx1cmUiOworICBBRERfRkFJTFVSRSgpIDw8
ICJJbnRlbnRpb25hbCBmYWlsdXJlLiI7CiAgICphYm9ydGVkID0gZmFsc2U7CiB9CiAKQEAgLTQz
NjksMTAgKzQ2NzEsMjUgQEAgdm9pZCBBZGRGYWlsdXJlSGVscGVyKGJvb2wqIGFib3J0ZWQpIHsK
IFRFU1QoTWFjcm9UZXN0LCBBRERfRkFJTFVSRSkgewogICBib29sIGFib3J0ZWQgPSB0cnVlOwog
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlSGVscGVyKCZhYm9ydGVkKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWx1cmUiKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkludGVudGlvbmFsIGZhaWx1cmUuIik7CiAgIEVYUEVDVF9GQUxTRShhYm9ydGVkKTsK
IH0KIAorLy8gVGVzdHMgQUREX0ZBSUxVUkVfQVQuCitURVNUKE1hY3JvVGVzdCwgQUREX0ZBSUxV
UkVfQVQpIHsKKyAgLy8gVmVyaWZpZXMgdGhhdCBBRERfRkFJTFVSRV9BVCBkb2VzIGdlbmVyYXRl
IGEgbm9uZmF0YWwgZmFpbHVyZSBhbmQKKyAgLy8gdGhlIGZhaWx1cmUgbWVzc2FnZSBjb250YWlu
cyB0aGUgdXNlci1zdHJlYW1lZCBwYXJ0LgorICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBRERf
RkFJTFVSRV9BVCgiZm9vLmNjIiwgNDIpIDw8ICJXcm9uZyEiLCAiV3JvbmchIik7CisKKyAgLy8g
VmVyaWZpZXMgdGhhdCB0aGUgdXNlci1zdHJlYW1lZCBwYXJ0IGlzIG9wdGlvbmFsLgorICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShBRERfRkFJTFVSRV9BVCgiZm9vLmNjIiwgNDIpLCAiRmFpbGVk
Iik7CisKKyAgLy8gVW5mb3J0dW5hdGVseSwgd2UgY2Fubm90IHZlcmlmeSB0aGF0IHRoZSBmYWls
dXJlIG1lc3NhZ2UgY29udGFpbnMKKyAgLy8gdGhlIHJpZ2h0IGZpbGUgcGF0aCBhbmQgbGluZSBu
dW1iZXIgdGhlIHNhbWUgd2F5LCBhcworICAvLyBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGRv
ZXNuJ3QgZ2V0IHRvIHNlZSB0aGUgZmlsZSBwYXRoIGFuZAorICAvLyBsaW5lIG51bWJlci4gIElu
c3RlYWQsIHdlIGRvIHRoYXQgaW4gZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2MuCit9CisKIC8v
IFRlc3RzIEZBSUwuCiBURVNUKE1hY3JvVGVzdCwgRkFJTCkgewogICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShGQUlMKCksCkBAIC00Mzg3LDcgKzQ3MDQsNiBAQCBURVNUKE1hY3JvVGVzdCwgU1VDQ0VF
RCkgewogICBTVUNDRUVEKCkgPDwgIkV4cGxpY2l0IHN1Y2Nlc3MuIjsKIH0KIAotCiAvLyBUZXN0
cyBmb3IgRVhQRUNUX0VRKCkgYW5kIEFTU0VSVF9FUSgpLgogLy8KIC8vIFRoZXNlIHRlc3RzIGZh
aWwgKmludGVudGlvbmFsbHkqLCBzLnQuIHRoZSBmYWlsdXJlIG1lc3NhZ2VzIGNhbiBiZQpAQCAt
NDM5OCwxNSArNDcxNCwxNyBAQCBURVNUKE1hY3JvVGVzdCwgU1VDQ0VFRCkgewogLy8gVGVzdHMg
dXNpbmcgYm9vbCB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgogVEVTVChFcUFzc2VydGlv
blRlc3QsIEJvb2wpIHsKICAgRVhQRUNUX0VRKHRydWUsICB0cnVlKTsKLSAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoQVNTRVJUX0VRKGZhbHNlLCB0cnVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IlZhbHVlIG9mOiB0cnVlIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKKyAgICAgIGJvb2wg
ZmFsc2VfdmFsdWUgPSBmYWxzZTsKKyAgICAgIEFTU0VSVF9FUShmYWxzZV92YWx1ZSwgdHJ1ZSk7
CisgICAgfSwgIiAgZmFsc2VfdmFsdWVcbiAgICBXaGljaCBpczogZmFsc2VcbiAgdHJ1ZSIpOwog
fQogCiAvLyBUZXN0cyB1c2luZyBpbnQgdmFsdWVzIGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4KIFRF
U1QoRXFBc3NlcnRpb25UZXN0LCBJbnQpIHsKICAgQVNTRVJUX0VRKDMyLCAzMik7CiAgIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSgzMiwgMzMpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAiMzMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgMzJcbiAgMzMiKTsK
IH0KIAogLy8gVGVzdHMgdXNpbmcgdGltZV90IHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEu
CkBAIC00NDIzLDkgKzQ3NDEsOSBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgQ2hhcikgewogICBB
U1NFUlRfRVEoJ3onLCAneicpOwogICBjb25zdCBjaGFyIGNoID0gJ2InOwogICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoJ1wwJywgY2gpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAiY2giKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgY2hcbiAgICBXaGljaCBp
czogJ2InIik7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSgnYScsIGNoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgImNoIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICIgIGNoXG4gICAgV2hpY2ggaXM6ICdiJyIpOwogfQogCiAvLyBUZXN0cyB1c2luZyB3Y2hh
cl90IHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCkBAIC00NDMzLDE4ICs0NzUxLDE5IEBA
IFRFU1QoRXFBc3NlcnRpb25UZXN0LCBXaWRlQ2hhcikgewogICBFWFBFQ1RfRVEoTCdiJywgTCdi
Jyk7CiAKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKEwnXDAnLCBMJ3gnKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBMJ3gnXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICIgIEFjdHVhbDogTCd4JyAoMTIwLCAweDc4KVxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IEwnXDAnXG4iCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICJXaGljaCBpczogTCdcMCcgKDAsIDB4MCkiKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiAgTCdcMCdcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAg
ICBXaGljaCBpczogTCdcMCcgKDAsIDB4MClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IiAgTCd4J1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIFdoaWNoIGlzOiBMJ3gn
ICgxMjAsIDB4NzgpIik7CiAKICAgc3RhdGljIHdjaGFyX3Qgd2NoYXI7CiAgIHdjaGFyID0gTCdi
JzsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKEwnYScsIHdjaGFyKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIndjaGFyIik7Ci0gIHdjaGFyID0gTCdceDgxMTknOwot
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoTCdceDgxMjAnLCB3Y2hhciksCi0gICAg
ICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogd2NoYXIiKTsKKyAgd2NoYXIgPSAweDgxMTk7
CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShzdGF0aWNfY2FzdDx3Y2hhcl90Pigw
eDgxMjApLCB3Y2hhciksCisgICAgICAgICAgICAgICAgICAgICAgICIgIHdjaGFyXG4gICAgV2hp
Y2ggaXM6IEwnIik7CiB9CiAKIC8vIFRlc3RzIHVzaW5nIDo6c3RkOjpzdHJpbmcgdmFsdWVzIGlu
IHtFWFBFQ1R8QVNTRVJUfV9FUS4KQEAgLTQ0NjEsNyArNDc4MCw3IEBAIFRFU1QoRXFBc3NlcnRp
b25UZXN0LCBTdGRTdHJpbmcpIHsKICAgLy8gQ29tcGFyZXMgYSBjb25zdCBjaGFyKiB0byBhbiBz
dGQ6OnN0cmluZyB0aGF0IGhhcyBkaWZmZXJlbnQKICAgLy8gY29udGVudAogICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoIlRlc3QiLCA6OnN0ZDo6c3RyaW5nKCJ0ZXN0IikpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAiOjpzdGQ6OnN0cmluZyhcInRlc3RcIikiKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlwidGVzdFwiIik7CiAKICAgLy8gQ29tcGFyZXMgYW4g
c3RkOjpzdHJpbmcgdG8gYSBjaGFyKiB0aGF0IGhhcyBkaWZmZXJlbnQgY29udGVudC4KICAgY2hh
ciogY29uc3QgcDEgPSBjb25zdF9jYXN0PGNoYXIqPigiZm9vIik7CkBAIC00NDczLDI4ICs0Nzky
LDI5IEBAIFRFU1QoRXFBc3NlcnRpb25UZXN0LCBTdGRTdHJpbmcpIHsKICAgc3RhdGljIDo6c3Rk
OjpzdHJpbmcgc3RyMyhzdHIxKTsKICAgc3RyMy5hdCgyKSA9ICdcMCc7CiAgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFTU0VSVF9FUShzdHIxLCBzdHIzKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IlZhbHVlIG9mOiBzdHIzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogXCJB
IFxcMCBpbiB0aGUgbWlkZGxlXCIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgc3RyM1xu
ICAgIFdoaWNoIGlzOiBcIkEgXFwwIGluIHRoZSBtaWRkbGVcIiIpOwogfQogCiAjaWYgR1RFU1Rf
SEFTX1NURF9XU1RSSU5HCiAKIC8vIFRlc3RzIHVzaW5nIDo6c3RkOjp3c3RyaW5nIHZhbHVlcyBp
biB7RVhQRUNUfEFTU0VSVH1fRVEuCiBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgU3RkV2lkZVN0cmlu
ZykgewotICAvLyBDb21wYXJlcyBhbiBzdGQ6OndzdHJpbmcgdG8gYSBjb25zdCB3Y2hhcl90KiB0
aGF0IGhhcyBpZGVudGljYWwKLSAgLy8gY29udGVudC4KLSAgRVhQRUNUX0VRKDo6c3RkOjp3c3Ry
aW5nKEwiVGVzdFx4ODExOSIpLCBMIlRlc3RceDgxMTkiKTsKLQogICAvLyBDb21wYXJlcyB0d28g
aWRlbnRpY2FsIHN0ZDo6d3N0cmluZ3MuCiAgIGNvbnN0IDo6c3RkOjp3c3RyaW5nIHdzdHIxKEwi
QSAqIGluIHRoZSBtaWRkbGUiKTsKICAgY29uc3QgOjpzdGQ6OndzdHJpbmcgd3N0cjIod3N0cjEp
OwogICBBU1NFUlRfRVEod3N0cjEsIHdzdHIyKTsKIAorICAvLyBDb21wYXJlcyBhbiBzdGQ6Ondz
dHJpbmcgdG8gYSBjb25zdCB3Y2hhcl90KiB0aGF0IGhhcyBpZGVudGljYWwKKyAgLy8gY29udGVu
dC4KKyAgY29uc3Qgd2NoYXJfdCBrVGVzdFg4MTE5W10gPSB7ICdUJywgJ2UnLCAncycsICd0Jywg
MHg4MTE5LCAnXDAnIH07CisgIEVYUEVDVF9FUSg6OnN0ZDo6d3N0cmluZyhrVGVzdFg4MTE5KSwg
a1Rlc3RYODExOSk7CisKICAgLy8gQ29tcGFyZXMgYW4gc3RkOjp3c3RyaW5nIHRvIGEgY29uc3Qg
d2NoYXJfdCogdGhhdCBoYXMgZGlmZmVyZW50CiAgIC8vIGNvbnRlbnQuCisgIGNvbnN0IHdjaGFy
X3Qga1Rlc3RYODEyMFtdID0geyAnVCcsICdlJywgJ3MnLCAndCcsIDB4ODEyMCwgJ1wwJyB9Owog
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfRVEoOjpz
dGQ6OndzdHJpbmcoTCJUZXN0XHg4MTE5IiksIEwiVGVzdFx4ODEyMCIpOwotICB9LCAiTFwiVGVz
dFxceDgxMjBcIiIpOworICAgIEVYUEVDVF9FUSg6OnN0ZDo6d3N0cmluZyhrVGVzdFg4MTE5KSwg
a1Rlc3RYODEyMCk7CisgIH0sICJrVGVzdFg4MTIwIik7CiAKICAgLy8gQ29tcGFyZXMgdHdvIHN0
ZDo6d3N0cmluZ3MgdGhhdCBoYXZlIGRpZmZlcmVudCBjb250ZW50cywgb25lIG9mCiAgIC8vIHdo
aWNoIGhhdmluZyBhIE5VTCBjaGFyYWN0ZXIgaW4gdGhlIG1pZGRsZS4KQEAgLTQ1NDYsMTggKzQ4
NjYsMjAgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIEdsb2JhbFN0cmluZykgewogCiAvLyBUZXN0
cyB1c2luZyA6OndzdHJpbmcgdmFsdWVzIGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4KIFRFU1QoRXFB
c3NlcnRpb25UZXN0LCBHbG9iYWxXaWRlU3RyaW5nKSB7Ci0gIC8vIENvbXBhcmVzIGEgY29uc3Qg
d2NoYXJfdCogdG8gYSA6OndzdHJpbmcgdGhhdCBoYXMgaWRlbnRpY2FsIGNvbnRlbnQuCi0gIEFT
U0VSVF9FUShMIlRlc3RceDgxMTkiLCA6OndzdHJpbmcoTCJUZXN0XHg4MTE5IikpOwotCiAgIC8v
IENvbXBhcmVzIHR3byBpZGVudGljYWwgOjp3c3RyaW5ncy4KICAgc3RhdGljIGNvbnN0IDo6d3N0
cmluZyB3c3RyMShMIkEgKiBpbiB0aGUgbWlkZGxlIik7CiAgIHN0YXRpYyBjb25zdCA6OndzdHJp
bmcgd3N0cjIod3N0cjEpOwogICBFWFBFQ1RfRVEod3N0cjEsIHdzdHIyKTsKIAorICAvLyBDb21w
YXJlcyBhIGNvbnN0IHdjaGFyX3QqIHRvIGEgOjp3c3RyaW5nIHRoYXQgaGFzIGlkZW50aWNhbCBj
b250ZW50LgorICBjb25zdCB3Y2hhcl90IGtUZXN0WDgxMTlbXSA9IHsgJ1QnLCAnZScsICdzJywg
J3QnLCAweDgxMTksICdcMCcgfTsKKyAgQVNTRVJUX0VRKGtUZXN0WDgxMTksIDo6d3N0cmluZyhr
VGVzdFg4MTE5KSk7CisKICAgLy8gQ29tcGFyZXMgYSBjb25zdCB3Y2hhcl90KiB0byBhIDo6d3N0
cmluZyB0aGF0IGhhcyBkaWZmZXJlbnQKICAgLy8gY29udGVudC4KKyAgY29uc3Qgd2NoYXJfdCBr
VGVzdFg4MTIwW10gPSB7ICdUJywgJ2UnLCAncycsICd0JywgMHg4MTIwLCAnXDAnIH07CiAgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9FUShMIlRlc3Rc
eDgxMjAiLCA6OndzdHJpbmcoTCJUZXN0XHg4MTE5IikpOworICAgIEVYUEVDVF9FUShrVGVzdFg4
MTIwLCA6OndzdHJpbmcoa1Rlc3RYODExOSkpOwogICB9LCAiVGVzdFxceDgxMTkiKTsKIAogICAv
LyBDb21wYXJlcyBhIHdjaGFyX3QqIHRvIGEgOjp3c3RyaW5nIHRoYXQgaGFzIGRpZmZlcmVudCBj
b250ZW50LgpAQCAtNDU5MCw5ICs0OTEyLDkgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIENoYXJQ
b2ludGVyKSB7CiAgIEFTU0VSVF9FUShwMSwgcDEpOwogCiAgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEVYUEVDVF9FUShwMCwgcDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUg
b2Y6IHAyIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgIHAyXG4gICAgV2hpY2ggaXM6
Iik7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShwMSwgcDIpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAicDIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAg
cDJcbiAgICBXaGljaCBpczoiKTsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KDB4MTIzNCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWludGVycHJldF9jYXN0PGNoYXIqPigweEFCQzApKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIkFCQzAiKTsKQEAgLTQ2MTIsOSArNDkzNCw5IEBAIFRFU1QoRXFBc3NlcnRpb25U
ZXN0LCBXaWRlQ2hhclBvaW50ZXIpIHsKICAgRVhQRUNUX0VRKHAwLCBwMCk7CiAKICAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHAwLCBwMiksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICJWYWx1ZSBvZjogcDIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgcDJc
biAgICBXaGljaCBpczoiKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHAx
LCBwMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJwMiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICBwMlxuICAgIFdoaWNoIGlzOiIpOwogICB2b2lkKiBwdjMgPSAodm9pZCop
MHgxMjM0OyAgLy8gTk9MSU5UCiAgIHZvaWQqIHB2NCA9ICh2b2lkKikweEFCQzA7ICAvLyBOT0xJ
TlQKICAgY29uc3Qgd2NoYXJfdCogcDMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHdjaGFyX3Qq
PihwdjMpOwpAQCAtNDYzMiw2ICs0OTU0LDY4IEBAIFRFU1QoRXFBc3NlcnRpb25UZXN0LCBPdGhl
clBvaW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIjB4MTIzNCIpOwogfQogCisvLyBB
IGNsYXNzIHRoYXQgc3VwcG9ydHMgYmluYXJ5IGNvbXBhcmlzb24gb3BlcmF0b3JzIGJ1dCBub3Qg
c3RyZWFtaW5nLgorY2xhc3MgVW5wcmludGFibGVDaGFyIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0
IFVucHJpbnRhYmxlQ2hhcihjaGFyIGNoKSA6IGNoYXJfKGNoKSB7fQorCisgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBVbnByaW50YWJsZUNoYXImIHJocykgY29uc3QgeworICAgIHJldHVybiBjaGFy
XyA9PSByaHMuY2hhcl87CisgIH0KKyAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVucHJpbnRhYmxl
Q2hhciYgcmhzKSBjb25zdCB7CisgICAgcmV0dXJuIGNoYXJfICE9IHJocy5jaGFyXzsKKyAgfQor
ICBib29sIG9wZXJhdG9yPChjb25zdCBVbnByaW50YWJsZUNoYXImIHJocykgY29uc3QgeworICAg
IHJldHVybiBjaGFyXyA8IHJocy5jaGFyXzsKKyAgfQorICBib29sIG9wZXJhdG9yPD0oY29uc3Qg
VW5wcmludGFibGVDaGFyJiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gY2hhcl8gPD0gcmhzLmNo
YXJfOworICB9CisgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBj
b25zdCB7CisgICAgcmV0dXJuIGNoYXJfID4gcmhzLmNoYXJfOworICB9CisgIGJvb2wgb3BlcmF0
b3I+PShjb25zdCBVbnByaW50YWJsZUNoYXImIHJocykgY29uc3QgeworICAgIHJldHVybiBjaGFy
XyA+PSByaHMuY2hhcl87CisgIH0KKworIHByaXZhdGU6CisgIGNoYXIgY2hhcl87Cit9OworCisv
LyBUZXN0cyB0aGF0IEFTU0VSVF9FUSgpIGFuZCBmcmllbmRzIGRvbid0IHJlcXVpcmUgdGhlIGFy
Z3VtZW50cyB0bworLy8gYmUgcHJpbnRhYmxlLgorVEVTVChDb21wYXJpc29uQXNzZXJ0aW9uVGVz
dCwgQWNjZXB0c1VucHJpbnRhYmxlQXJncykgeworICBjb25zdCBVbnByaW50YWJsZUNoYXIgeCgn
eCcpLCB5KCd5Jyk7CisgIEFTU0VSVF9FUSh4LCB4KTsKKyAgRVhQRUNUX05FKHgsIHkpOworICBB
U1NFUlRfTFQoeCwgeSk7CisgIEVYUEVDVF9MRSh4LCB5KTsKKyAgQVNTRVJUX0dUKHksIHgpOwor
ICBFWFBFQ1RfR0UoeCwgeCk7CisKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VR
KHgsIHkpLCAiMS1ieXRlIG9iamVjdCA8Nzg+Iik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEVYUEVDVF9FUSh4LCB5KSwgIjEtYnl0ZSBvYmplY3QgPDc5PiIpOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfTFQoeSwgeSksICIxLWJ5dGUgb2JqZWN0IDw3OT4iKTsKKyAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dUKHgsIHkpLCAiMS1ieXRlIG9iamVjdCA8Nzg+
Iik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HVCh4LCB5KSwgIjEtYnl0ZSBv
YmplY3QgPDc5PiIpOworCisgIC8vIENvZGUgdGVzdGVkIGJ5IEVYUEVDVF9GQVRBTF9GQUlMVVJF
IGNhbm5vdCByZWZlcmVuY2UgbG9jYWwKKyAgLy8gdmFyaWFibGVzLCBzbyB3ZSBoYXZlIHRvIHdy
aXRlIFVucHJpbnRhYmxlQ2hhcigneCcpIGluc3RlYWQgb2YgeC4KKyNpZm5kZWYgX19CT1JMQU5E
Q19fCisgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIuCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFT
U0VSVF9ORShVbnByaW50YWJsZUNoYXIoJ3gnKSwgVW5wcmludGFibGVDaGFyKCd4JykpLAorICAg
ICAgICAgICAgICAgICAgICAgICAiMS1ieXRlIG9iamVjdCA8Nzg+Iik7CisgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFTU0VSVF9MRShVbnByaW50YWJsZUNoYXIoJ3knKSwgVW5wcmludGFibGVDaGFy
KCd4JykpLAorICAgICAgICAgICAgICAgICAgICAgICAiMS1ieXRlIG9iamVjdCA8Nzg+Iik7Cisj
ZW5kaWYKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0xFKFVucHJpbnRhYmxlQ2hhcign
eScpLCBVbnByaW50YWJsZUNoYXIoJ3gnKSksCisgICAgICAgICAgICAgICAgICAgICAgICIxLWJ5
dGUgb2JqZWN0IDw3OT4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0dFKFVucHJp
bnRhYmxlQ2hhcigneCcpLCBVbnByaW50YWJsZUNoYXIoJ3knKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICIxLWJ5dGUgb2JqZWN0IDw3OD4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNT
RVJUX0dFKFVucHJpbnRhYmxlQ2hhcigneCcpLCBVbnByaW50YWJsZUNoYXIoJ3knKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICIxLWJ5dGUgb2JqZWN0IDw3OT4iKTsKK30KKwogLy8gVGVzdHMg
dGhlIEZSSUVORF9URVNUIG1hY3JvLgogCiAvLyBUaGlzIGNsYXNzIGhhcyBhIHByaXZhdGUgbWVt
YmVyIHdlIHdhbnQgdG8gdGVzdC4gIFdlIHdpbGwgdGVzdCBpdApAQCAtNDc0OSw3ICs1MTMzLDcg
QEAgVEVTVChBc3NlcnRpb25SZXN1bHRUZXN0LCBDb25zdHJ1Y3Rpb25Xb3JrcykgewogICBFWFBF
Q1RfU1RSRVEoImdoaSIsIHI1Lm1lc3NhZ2UoKSk7CiB9CiAKLS8vIFRlc3RzIHRoYXQgdGhlIG5l
Z2F0aW9uIGZpcHMgdGhlIHByZWRpY2F0ZSByZXN1bHQgYnV0IGtlZXBzIHRoZSBtZXNzYWdlLgor
Ly8gVGVzdHMgdGhhdCB0aGUgbmVnYXRpb24gZmxpcHMgdGhlIHByZWRpY2F0ZSByZXN1bHQgYnV0
IGtlZXBzIHRoZSBtZXNzYWdlLgogVEVTVChBc3NlcnRpb25SZXN1bHRUZXN0LCBOZWdhdGlvbldv
cmtzKSB7CiAgIEFzc2VydGlvblJlc3VsdCByMSA9IEFzc2VydGlvblN1Y2Nlc3MoKSA8PCAiYWJj
IjsKICAgRVhQRUNUX0ZBTFNFKCFyMSk7CkBAIC00NzY2LDYgKzUxNTAsMzcgQEAgVEVTVChBc3Nl
cnRpb25SZXN1bHRUZXN0LCBTdHJlYW1pbmdXb3JrcykgewogICBFWFBFQ1RfU1RSRVEoImFiY2Qw
dHJ1ZSIsIHIubWVzc2FnZSgpKTsKIH0KIAorVEVTVChBc3NlcnRpb25SZXN1bHRUZXN0LCBDYW5T
dHJlYW1Pc3RyZWFtTWFuaXB1bGF0b3JzKSB7CisgIEFzc2VydGlvblJlc3VsdCByID0gQXNzZXJ0
aW9uU3VjY2VzcygpOworICByIDw8ICJEYXRhIiA8PCBzdGQ6OmVuZGwgPDwgc3RkOjpmbHVzaCA8
PCBzdGQ6OmVuZHMgPDwgIldpbGwgYmUgdmlzaWJsZSI7CisgIEVYUEVDVF9TVFJFUSgiRGF0YVxu
XFwwV2lsbCBiZSB2aXNpYmxlIiwgci5tZXNzYWdlKCkpOworfQorCisvLyBUaGUgbmV4dCB0ZXN0
IHVzZXMgZXhwbGljaXQgY29udmVyc2lvbiBvcGVyYXRvcnMgLS0gYSBDKysxMSBmZWF0dXJlLgor
I2lmIEdURVNUX0xBTkdfQ1hYMTEKKworVEVTVChBc3NlcnRpb25SZXN1bHRUZXN0LCBDb25zdHJ1
Y3RpYmxlRnJvbUNvbnRleHR1YWxseUNvbnZlcnRpYmxlVG9Cb29sKSB7CisgIHN0cnVjdCBFeHBs
aWNpdGx5Q29udmVydGlibGVUb0Jvb2wgeworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiB2YWx1ZTsgfQorICAgIGJvb2wgdmFsdWU7CisgIH07CisgIEV4cGxpY2l0
bHlDb252ZXJ0aWJsZVRvQm9vbCB2MSA9IHtmYWxzZX07CisgIEV4cGxpY2l0bHlDb252ZXJ0aWJs
ZVRvQm9vbCB2MiA9IHt0cnVlfTsKKyAgRVhQRUNUX0ZBTFNFKHYxKTsKKyAgRVhQRUNUX1RSVUUo
djIpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKworc3RydWN0IENvbnZlcnRp
YmxlVG9Bc3NlcnRpb25SZXN1bHQgeworICBvcGVyYXRvciBBc3NlcnRpb25SZXN1bHQoKSBjb25z
dCB7IHJldHVybiBBc3NlcnRpb25SZXN1bHQodHJ1ZSk7IH0KK307CisKK1RFU1QoQXNzZXJ0aW9u
UmVzdWx0VGVzdCwgQ29uc3RydWN0aWJsZUZyb21JbXBsaWNpdGx5Q29udmVydGlibGUpIHsKKyAg
Q29udmVydGlibGVUb0Fzc2VydGlvblJlc3VsdCBvYmo7CisgIEVYUEVDVF9UUlVFKG9iaik7Cit9
CisKIC8vIFRlc3RzIHN0cmVhbWluZyBhIHVzZXIgdHlwZSB3aG9zZSBkZWZpbml0aW9uIGFuZCBv
cGVyYXRvciA8PCBhcmUKIC8vIGJvdGggaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCiBjbGFzcyBC
YXNlIHsKQEAgLTQ5NTAsNiArNTM2NSw1OSBAQCBURVNUX0YoVGVzdEluZm9UZXN0LCByZXN1bHQp
IHsKICAgQVNTRVJUX0VRKDAsIEdldFRlc3RSZXN1bHQodGVzdF9pbmZvKS0+dG90YWxfcGFydF9j
b3VudCgpKTsKIH0KIAorI2RlZmluZSBWRVJJRllfQ09ERV9MT0NBVElPTiBcCisgIGNvbnN0IGlu
dCBleHBlY3RlZF9saW5lID0gX19MSU5FX18gLSAxOyBcCisgIGNvbnN0IFRlc3RJbmZvKiBjb25z
dCB0ZXN0X2luZm8gPSBHZXRVbml0VGVzdEltcGwoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsgXAor
ICBBU1NFUlRfVFJVRSh0ZXN0X2luZm8pOyBcCisgIEVYUEVDVF9TVFJFUShfX0ZJTEVfXywgdGVz
dF9pbmZvLT5maWxlKCkpOyBcCisgIEVYUEVDVF9FUShleHBlY3RlZF9saW5lLCB0ZXN0X2luZm8t
PmxpbmUoKSkKKworVEVTVChDb2RlTG9jYXRpb25Gb3JURVNULCBWZXJpZnkpIHsKKyAgVkVSSUZZ
X0NPREVfTE9DQVRJT047Cit9CisKK2NsYXNzIENvZGVMb2NhdGlvbkZvclRFU1RGIDogcHVibGlj
IFRlc3QgeworfTsKKworVEVTVF9GKENvZGVMb2NhdGlvbkZvclRFU1RGLCBWZXJpZnkpIHsKKyAg
VkVSSUZZX0NPREVfTE9DQVRJT047Cit9CisKK2NsYXNzIENvZGVMb2NhdGlvbkZvclRFU1RQIDog
cHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7Cit9OworCitURVNUX1AoQ29kZUxvY2F0aW9uRm9y
VEVTVFAsIFZlcmlmeSkgeworICBWRVJJRllfQ09ERV9MT0NBVElPTjsKK30KKworSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoLCBDb2RlTG9jYXRpb25Gb3JURVNUUCwgVmFsdWVzKDApKTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1QgOiBwdWJs
aWMgVGVzdCB7Cit9OworCitUWVBFRF9URVNUX0NBU0UoQ29kZUxvY2F0aW9uRm9yVFlQRURURVNU
LCBpbnQpOworCitUWVBFRF9URVNUKENvZGVMb2NhdGlvbkZvclRZUEVEVEVTVCwgVmVyaWZ5KSB7
CisgIFZFUklGWV9DT0RFX0xPQ0FUSU9OOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIENvZGVMb2NhdGlvbkZvclRZUEVEVEVTVFAgOiBwdWJsaWMgVGVzdCB7Cit9OworCitUWVBF
RF9URVNUX0NBU0VfUChDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1RQKTsKKworVFlQRURfVEVTVF9Q
KENvZGVMb2NhdGlvbkZvclRZUEVEVEVTVFAsIFZlcmlmeSkgeworICBWRVJJRllfQ09ERV9MT0NB
VElPTjsKK30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoQ29kZUxvY2F0aW9uRm9yVFlQ
RURURVNUUCwgVmVyaWZ5KTsKKworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIENv
ZGVMb2NhdGlvbkZvclRZUEVEVEVTVFAsIGludCk7CisKKyN1bmRlZiBWRVJJRllfQ09ERV9MT0NB
VElPTgorCiAvLyBUZXN0cyBzZXR0aW5nIHVwIGFuZCB0ZWFyaW5nIGRvd24gYSB0ZXN0IGNhc2Uu
CiAKIGNsYXNzIFNldFVwVGVzdENhc2VUZXN0IDogcHVibGljIFRlc3QgewpAQCAtNTAxMyw3ICs1
NDgxLDggQEAgVEVTVF9GKFNldFVwVGVzdENhc2VUZXN0LCBUZXN0MikgewogICBFWFBFQ1RfU1RS
RVEoIjEyMyIsIHNoYXJlZF9yZXNvdXJjZV8pOwogfQogCi0vLyBUaGUgSW5pdEdvb2dsZVRlc3RU
ZXN0IHRlc3QgY2FzZSB0ZXN0cyB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpLgorCisvLyBUaGUg
UGFyc2VGbGFnc1Rlc3QgdGVzdCBjYXNlIHRlc3RzIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seS4K
IAogLy8gVGhlIEZsYWdzIHN0cnVjdCBzdG9yZXMgYSBjb3B5IG9mIGFsbCBHb29nbGUgVGVzdCBm
bGFncy4KIHN0cnVjdCBGbGFncyB7CkBAIC01MDMwLDYgKzU0OTksNyBAQCBzdHJ1Y3QgRmxhZ3Mg
ewogICAgICAgICAgICAgcmVwZWF0KDEpLAogICAgICAgICAgICAgc2h1ZmZsZShmYWxzZSksCiAg
ICAgICAgICAgICBzdGFja190cmFjZV9kZXB0aChrTWF4U3RhY2tUcmFjZURlcHRoKSwKKyAgICAg
ICAgICAgIHN0cmVhbV9yZXN1bHRfdG8oIiIpLAogICAgICAgICAgICAgdGhyb3dfb25fZmFpbHVy
ZShmYWxzZSkge30KIAogICAvLyBGYWN0b3J5IG1ldGhvZHMuCkBAIC01MDk4LDggKzU1NjgsOCBA
QCBzdHJ1Y3QgRmxhZ3MgewogICAgIHJldHVybiBmbGFnczsKICAgfQogCi0gIC8vIENyZWF0ZXMg
YSBGbGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIGd0ZXN0X3JhbmRvbV9zZWVkIGZsYWcgaGFzCi0gIC8v
IHRoZSBnaXZlbiB2YWx1ZS4KKyAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUg
Z3Rlc3RfcmFuZG9tX3NlZWQgZmxhZyBoYXMgdGhlIGdpdmVuCisgIC8vIHZhbHVlLgogICBzdGF0
aWMgRmxhZ3MgUmFuZG9tU2VlZChJbnQzMiByYW5kb21fc2VlZCkgewogICAgIEZsYWdzIGZsYWdz
OwogICAgIGZsYWdzLnJhbmRvbV9zZWVkID0gcmFuZG9tX3NlZWQ7CkBAIC01MTE0LDggKzU1ODQs
OCBAQCBzdHJ1Y3QgRmxhZ3MgewogICAgIHJldHVybiBmbGFnczsKICAgfQogCi0gIC8vIENyZWF0
ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIGd0ZXN0X3NodWZmbGUgZmxhZyBoYXMKLSAgLy8g
dGhlIGdpdmVuIHZhbHVlLgorICAvLyBDcmVhdGVzIGEgRmxhZ3Mgc3RydWN0IHdoZXJlIHRoZSBn
dGVzdF9zaHVmZmxlIGZsYWcgaGFzIHRoZSBnaXZlbgorICAvLyB2YWx1ZS4KICAgc3RhdGljIEZs
YWdzIFNodWZmbGUoYm9vbCBzaHVmZmxlKSB7CiAgICAgRmxhZ3MgZmxhZ3M7CiAgICAgZmxhZ3Mu
c2h1ZmZsZSA9IHNodWZmbGU7CkBAIC01MTMwLDYgKzU2MDAsMTQgQEAgc3RydWN0IEZsYWdzIHsK
ICAgICByZXR1cm4gZmxhZ3M7CiAgIH0KIAorICAvLyBDcmVhdGVzIGEgRmxhZ3Mgc3RydWN0IHdo
ZXJlIHRoZSBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pIGZsYWcgaGFzCisgIC8vIHRoZSBn
aXZlbiB2YWx1ZS4KKyAgc3RhdGljIEZsYWdzIFN0cmVhbVJlc3VsdFRvKGNvbnN0IGNoYXIqIHN0
cmVhbV9yZXN1bHRfdG8pIHsKKyAgICBGbGFncyBmbGFnczsKKyAgICBmbGFncy5zdHJlYW1fcmVz
dWx0X3RvID0gc3RyZWFtX3Jlc3VsdF90bzsKKyAgICByZXR1cm4gZmxhZ3M7CisgIH0KKwogICAv
LyBDcmVhdGVzIGEgRmxhZ3Mgc3RydWN0IHdoZXJlIHRoZSBndGVzdF90aHJvd19vbl9mYWlsdXJl
IGZsYWcgaGFzCiAgIC8vIHRoZSBnaXZlbiB2YWx1ZS4KICAgc3RhdGljIEZsYWdzIFRocm93T25G
YWlsdXJlKGJvb2wgdGhyb3dfb25fZmFpbHVyZSkgewpAQCAtNTE1MSwxMSArNTYyOSwxMiBAQCBz
dHJ1Y3QgRmxhZ3MgewogICBJbnQzMiByZXBlYXQ7CiAgIGJvb2wgc2h1ZmZsZTsKICAgSW50MzIg
c3RhY2tfdHJhY2VfZGVwdGg7CisgIGNvbnN0IGNoYXIqIHN0cmVhbV9yZXN1bHRfdG87CiAgIGJv
b2wgdGhyb3dfb25fZmFpbHVyZTsKIH07CiAKLS8vIEZpeHR1cmUgZm9yIHRlc3RpbmcgSW5pdEdv
b2dsZVRlc3QoKS4KLWNsYXNzIEluaXRHb29nbGVUZXN0VGVzdCA6IHB1YmxpYyBUZXN0IHsKKy8v
IEZpeHR1cmUgZm9yIHRlc3RpbmcgUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5KCkuCitjbGFzcyBQ
YXJzZUZsYWdzVGVzdCA6IHB1YmxpYyBUZXN0IHsKICBwcm90ZWN0ZWQ6CiAgIC8vIENsZWFycyB0
aGUgZmxhZ3MgYmVmb3JlIGVhY2ggdGVzdC4KICAgdmlydHVhbCB2b2lkIFNldFVwKCkgewpAQCAt
NTE3MSw2ICs1NjUwLDcgQEAgY2xhc3MgSW5pdEdvb2dsZVRlc3RUZXN0IDogcHVibGljIFRlc3Qg
ewogICAgIEdURVNUX0ZMQUcocmVwZWF0KSA9IDE7CiAgICAgR1RFU1RfRkxBRyhzaHVmZmxlKSA9
IGZhbHNlOwogICAgIEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpID0ga01heFN0YWNrVHJh
Y2VEZXB0aDsKKyAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pID0gIiI7CiAgICAgR1RF
U1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9IGZhbHNlOwogICB9CiAKQEAgLTUxOTksOCArNTY3
OSwxMCBAQCBjbGFzcyBJbml0R29vZ2xlVGVzdFRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgRVhQ
RUNUX0VRKGV4cGVjdGVkLnJhbmRvbV9zZWVkLCBHVEVTVF9GTEFHKHJhbmRvbV9zZWVkKSk7CiAg
ICAgRVhQRUNUX0VRKGV4cGVjdGVkLnJlcGVhdCwgR1RFU1RfRkxBRyhyZXBlYXQpKTsKICAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWQuc2h1ZmZsZSwgR1RFU1RfRkxBRyhzaHVmZmxlKSk7Ci0gICAgRVhQ
RUNUX0VRKGV4cGVjdGVkLnRocm93X29uX2ZhaWx1cmUsIEdURVNUX0ZMQUcodGhyb3dfb25fZmFp
bHVyZSkpOwogICAgIEVYUEVDVF9FUShleHBlY3RlZC5zdGFja190cmFjZV9kZXB0aCwgR1RFU1Rf
RkxBRyhzdGFja190cmFjZV9kZXB0aCkpOworICAgIEVYUEVDVF9TVFJFUShleHBlY3RlZC5zdHJl
YW1fcmVzdWx0X3RvLAorICAgICAgICAgICAgICAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRf
dG8pLmNfc3RyKCkpOworICAgIEVYUEVDVF9FUShleHBlY3RlZC50aHJvd19vbl9mYWlsdXJlLCBH
VEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpKTsKICAgfQogCiAgIC8vIFBhcnNlcyBhIGNvbW1h
bmQgbGluZSAoc3BlY2lmaWVkIGJ5IGFyZ2MxIGFuZCBhcmd2MSksIHRoZW4KQEAgLTUyMTMsMTYg
KzU2OTUsMTYgQEAgY2xhc3MgSW5pdEdvb2dsZVRlc3RUZXN0IDogcHVibGljIFRlc3QgewogICAg
IGNvbnN0IGJvb2wgc2F2ZWRfaGVscF9mbGFnID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6Z19oZWxw
X2ZsYWc7CiAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Z19oZWxwX2ZsYWcgPSBmYWxzZTsKIAot
I2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCisjIGlmIEdURVNUX0hBU19TVFJFQU1f
UkVESVJFQ1RJT04KICAgICBDYXB0dXJlU3Rkb3V0KCk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19T
VFJFQU1fUkVESVJFQ1RJT05fCisjIGVuZGlmCiAKICAgICAvLyBQYXJzZXMgdGhlIGNvbW1hbmQg
bGluZS4KICAgICBpbnRlcm5hbDo6UGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5KCZhcmdjMSwgY29u
c3RfY2FzdDxDaGFyVHlwZSoqPihhcmd2MSkpOwogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJ
UkVDVElPTl8KLSAgICBjb25zdCBTdHJpbmcgY2FwdHVyZWRfc3Rkb3V0ID0gR2V0Q2FwdHVyZWRT
dGRvdXQoKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyMgaWYg
R1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgorICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNhcHR1
cmVkX3N0ZG91dCA9IEdldENhcHR1cmVkU3Rkb3V0KCk7CisjIGVuZGlmCiAKICAgICAvLyBWZXJp
ZmllcyB0aGUgZmxhZyB2YWx1ZXMuCiAgICAgQ2hlY2tGbGFncyhleHBlY3RlZCk7CkBAIC01MjM1
LDcgKzU3MTcsNyBAQCBjbGFzcyBJbml0R29vZ2xlVGVzdFRlc3QgOiBwdWJsaWMgVGVzdCB7CiAg
ICAgLy8gaGVscCBtZXNzYWdlIGZvciB0aGUgZmxhZ3MgaXQgcmVjb2duaXplcy4KICAgICBFWFBF
Q1RfRVEoc2hvdWxkX3ByaW50X2hlbHAsIDo6dGVzdGluZzo6aW50ZXJuYWw6OmdfaGVscF9mbGFn
KTsKIAotI2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCisjIGlmIEdURVNUX0hBU19T
VFJFQU1fUkVESVJFQ1RJT04KICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZF9oZWxwX2Zy
YWdtZW50ID0KICAgICAgICAgIlRoaXMgcHJvZ3JhbSBjb250YWlucyB0ZXN0cyB3cml0dGVuIHVz
aW5nIjsKICAgICBpZiAoc2hvdWxkX3ByaW50X2hlbHApIHsKQEAgLTUyNDQsMjEgKzU3MjYsMjIg
QEAgY2xhc3MgSW5pdEdvb2dsZVRlc3RUZXN0IDogcHVibGljIFRlc3QgewogICAgICAgRVhQRUNU
X1BSRURfRk9STUFUMihJc05vdFN1YnN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRfaGVscF9mcmFnbWVudCwgY2FwdHVyZWRfc3Rkb3V0KTsKICAgICB9Ci0jZW5kaWYg
IC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCisjIGVuZGlmICAvLyBHVEVTVF9IQVNf
U1RSRUFNX1JFRElSRUNUSU9OCiAKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpnX2hlbHBfZmxh
ZyA9IHNhdmVkX2hlbHBfZmxhZzsKICAgfQogCiAgIC8vIFRoaXMgbWFjcm8gd3JhcHMgVGVzdFBh
cnNpbmdGbGFncyBzLnQuIHRoZSB1c2VyIGRvZXNuJ3QgbmVlZAogICAvLyB0byBzcGVjaWZ5IHRo
ZSBhcnJheSBzaXplcy4KLSNkZWZpbmUgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2MSwg
YXJndjIsIGV4cGVjdGVkLCBzaG91bGRfcHJpbnRfaGVscCkgXAorCisjIGRlZmluZSBHVEVTVF9U
RVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YxLCBhcmd2MiwgZXhwZWN0ZWQsIHNob3VsZF9wcmludF9o
ZWxwKSBcCiAgIFRlc3RQYXJzaW5nRmxhZ3Moc2l6ZW9mKGFyZ3YxKS9zaXplb2YoKmFyZ3YxKSAt
IDEsIGFyZ3YxLCBcCiAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGFyZ3YyKS9zaXplb2YoKmFy
Z3YyKSAtIDEsIGFyZ3YyLCBcCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQsIHNob3VsZF9w
cmludF9oZWxwKQogfTsKIAogLy8gVGVzdHMgcGFyc2luZyBhbiBlbXB0eSBjb21tYW5kIGxpbmUu
Ci1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBFbXB0eSkgeworVEVTVF9GKFBhcnNlRmxhZ3NU
ZXN0LCBFbXB0eSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgTlVMTAogICB9OwpA
QCAtNTI3MSw3ICs1NzU0LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRW1wdHkpIHsK
IH0KIAogLy8gVGVzdHMgcGFyc2luZyBhIGNvbW1hbmQgbGluZSB0aGF0IGhhcyBubyBmbGFnLgot
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTm9GbGFnKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rl
c3QsIE5vRmxhZykgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAog
ICAgIE5VTEwKQEAgLTUyODYsNyArNTc2OSw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3Qs
IE5vRmxhZykgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIGEgYmFkIC0tZ3Rlc3RfZmlsdGVyIGZs
YWcuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBGaWx0ZXJCYWQpIHsKK1RFU1RfRihQYXJz
ZUZsYWdzVGVzdCwgRmlsdGVyQmFkKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAi
Zm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfZmlsdGVyIiwKQEAgLTUzMDMsNyArNTc4Niw3IEBAIFRF
U1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEZpbHRlckJhZCkgewogfQogCiAvLyBUZXN0cyBwYXJz
aW5nIGFuIGVtcHR5IC0tZ3Rlc3RfZmlsdGVyIGZsYWcuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RU
ZXN0LCBGaWx0ZXJFbXB0eSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBGaWx0ZXJFbXB0eSkg
ewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0
X2ZpbHRlcj0iLApAQCAtNTMxOSw3ICs1ODAyLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVz
dCwgRmlsdGVyRW1wdHkpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyBhIG5vbi1lbXB0eSAtLWd0
ZXN0X2ZpbHRlciBmbGFnLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRmlsdGVyTm9uRW1w
dHkpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgRmlsdGVyTm9uRW1wdHkpIHsKICAgY29uc3Qg
Y2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9maWx0ZXI9YWJj
IiwKQEAgLTUzMzUsNyArNTgxOCw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEZpbHRl
ck5vbkVtcHR5KSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9icmVha19vbl9mYWls
dXJlLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVXaXRob3V0VmFs
dWUpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgQnJlYWtPbkZhaWx1cmVXaXRob3V0VmFsdWUp
IHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVz
dF9icmVha19vbl9mYWlsdXJlIiwKQEAgLTUzNTEsNyArNTgzNCw3IEBAIFRFU1RfRihJbml0R29v
Z2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlV2l0aG91dFZhbHVlKSB7CiB9CiAKIC8vIFRlc3Rz
IHBhcnNpbmcgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlPTAuCi1URVNUX0YoSW5pdEdvb2dsZVRl
c3RUZXN0LCBCcmVha09uRmFpbHVyZUZhbHNlXzApIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwg
QnJlYWtPbkZhaWx1cmVGYWxzZV8wKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAi
Zm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZT0wIiwKQEAgLTUzNjcsNyAr
NTg1MCw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlRmFsc2Vf
MCkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZT1mLgot
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVGYWxzZV9mKSB7CitURVNU
X0YoUGFyc2VGbGFnc1Rlc3QsIEJyZWFrT25GYWlsdXJlRmFsc2VfZikgewogICBjb25zdCBjaGFy
KiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1
cmU9ZiIsCkBAIC01MzgzLDcgKzU4NjYsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBC
cmVha09uRmFpbHVyZUZhbHNlX2YpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2Jy
ZWFrX29uX2ZhaWx1cmU9Ri4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWls
dXJlRmFsc2VfRikgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBCcmVha09uRmFpbHVyZUZhbHNl
X0YpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1n
dGVzdF9icmVha19vbl9mYWlsdXJlPUYiLApAQCAtNTQwMCw3ICs1ODgzLDcgQEAgVEVTVF9GKElu
aXRHb29nbGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVGYWxzZV9GKSB7CiAKIC8vIFRlc3RzIHBh
cnNpbmcgYSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZyB0aGF0IGhhcyBhICJ0cnVlIgog
Ly8gZGVmaW5pdGlvbi4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJl
VHJ1ZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBCcmVha09uRmFpbHVyZVRydWUpIHsKICAg
Y29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9icmVh
a19vbl9mYWlsdXJlPTEiLApAQCAtNTQxNiw3ICs1ODk5LDcgQEAgVEVTVF9GKEluaXRHb29nbGVU
ZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVUcnVlKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1n
dGVzdF9jYXRjaF9leGNlcHRpb25zLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQ2F0Y2hF
eGNlcHRpb25zKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIENhdGNoRXhjZXB0aW9ucykgewog
ICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X2Nh
dGNoX2V4Y2VwdGlvbnMiLApAQCAtNTQzMiw3ICs1OTE1LDcgQEAgVEVTVF9GKEluaXRHb29nbGVU
ZXN0VGVzdCwgQ2F0Y2hFeGNlcHRpb25zKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVz
dF9kZWF0aF90ZXN0X3VzZV9mb3JrLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRGVhdGhU
ZXN0VXNlRm9yaykgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBEZWF0aFRlc3RVc2VGb3JrKSB7
CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rf
ZGVhdGhfdGVzdF91c2VfZm9yayIsCkBAIC01NDQ5LDcgKzU5MzIsNyBAQCBURVNUX0YoSW5pdEdv
b2dsZVRlc3RUZXN0LCBEZWF0aFRlc3RVc2VGb3JrKSB7CiAKIC8vIFRlc3RzIGhhdmluZyB0aGUg
c2FtZSBmbGFnIHR3aWNlIHdpdGggZGlmZmVyZW50IHZhbHVlcy4gIFRoZQogLy8gZXhwZWN0ZWQg
YmVoYXZpb3IgaXMgdGhhdCB0aGUgb25lIGNvbWluZyBsYXN0IHRha2VzIHByZWNlZGVuY2UuCi1U
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBEdXBsaWNhdGVkRmxhZ3MpIHsKK1RFU1RfRihQYXJz
ZUZsYWdzVGVzdCwgRHVwbGljYXRlZEZsYWdzKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsK
ICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfZmlsdGVyPWEiLApAQCAtNTQ2Niw3ICs1OTQ5
LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRHVwbGljYXRlZEZsYWdzKSB7CiB9CiAK
IC8vIFRlc3RzIGhhdmluZyBhbiB1bnJlY29nbml6ZWQgZmxhZyBvbiB0aGUgY29tbWFuZCBsaW5l
LgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgVW5yZWNvZ25pemVkRmxhZykgeworVEVTVF9G
KFBhcnNlRmxhZ3NUZXN0LCBVbnJlY29nbml6ZWRGbGFnKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3Zb
XSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSIsCkBA
IC01NDg4LDcgKzU5NzEsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBVbnJlY29nbml6
ZWRGbGFnKSB7CiB9CiAKIC8vIFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFn
Ci1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0VGVzdHNGbGFnKSB7CitURVNUX0YoUGFy
c2VGbGFnc1Rlc3QsIExpc3RUZXN0c0ZsYWcpIHsKICAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7
CiAgICAgICAiZm9vLmV4ZSIsCiAgICAgICAiLS1ndGVzdF9saXN0X3Rlc3RzIiwKQEAgLTU1MDQs
NyArNTk4Nyw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIExpc3RUZXN0c0ZsYWcpIHsK
IH0KIAogLy8gVGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcgd2l0aCBhICJ0
cnVlIiB2YWx1ZQotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzVHJ1ZSkgewor
VEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBMaXN0VGVzdHNUcnVlKSB7CiAgICAgY29uc3QgY2hhciog
YXJndltdID0gewogICAgICAgImZvby5leGUiLAogICAgICAgIi0tZ3Rlc3RfbGlzdF90ZXN0cz0x
IiwKQEAgLTU1MjAsNyArNjAwMyw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIExpc3RU
ZXN0c1RydWUpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9saXN0X3Rlc3RzIGZs
YWcgd2l0aCBhICJmYWxzZSIgdmFsdWUKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIExpc3RU
ZXN0c0ZhbHNlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIExpc3RUZXN0c0ZhbHNlKSB7CiAg
ICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICAgImZvby5leGUiLAogICAgICAgIi0tZ3Rl
c3RfbGlzdF90ZXN0cz0wIiwKQEAgLTU1MzYsNyArNjAxOSw3IEBAIFRFU1RfRihJbml0R29vZ2xl
VGVzdFRlc3QsIExpc3RUZXN0c0ZhbHNlKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVz
dF9saXN0X3Rlc3RzPWYuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0VGVzdHNGYWxz
ZV9mKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIExpc3RUZXN0c0ZhbHNlX2YpIHsKICAgY29u
c3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9saXN0X3Rl
c3RzPWYiLApAQCAtNTU1Miw3ICs2MDM1LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwg
TGlzdFRlc3RzRmFsc2VfZikgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfbGlzdF90
ZXN0cz1GLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzRmFsc2VfRikgewor
VEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBMaXN0VGVzdHNGYWxzZV9GKSB7CiAgIGNvbnN0IGNoYXIq
IGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfbGlzdF90ZXN0cz1GIiwK
QEAgLTU1NjgsNyArNjA1MSw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIExpc3RUZXN0
c0ZhbHNlX0YpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X291dHB1dCAoaW52YWxp
ZCkuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBPdXRwdXRFbXB0eSkgeworVEVTVF9GKFBh
cnNlRmxhZ3NUZXN0LCBPdXRwdXRFbXB0eSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAg
ICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X291dHB1dCIsCkBAIC01NTg1LDcgKzYwNjgsNyBA
QCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBPdXRwdXRFbXB0eSkgewogfQogCiAvLyBUZXN0
cyBwYXJzaW5nIC0tZ3Rlc3Rfb3V0cHV0PXhtbAotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwg
T3V0cHV0WG1sKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIE91dHB1dFhtbCkgewogICBjb25z
dCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X291dHB1dD14
bWwiLApAQCAtNTYwMSw3ICs2MDg0LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgT3V0
cHV0WG1sKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9vdXRwdXQ9eG1sOmZpbGUK
LVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91dHB1dFhtbEZpbGUpIHsKK1RFU1RfRihQYXJz
ZUZsYWdzVGVzdCwgT3V0cHV0WG1sRmlsZSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAg
ICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X291dHB1dD14bWw6ZmlsZSIsCkBAIC01NjE3LDcg
KzYxMDAsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBPdXRwdXRYbWxGaWxlKSB7CiB9
CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9vdXRwdXQ9eG1sOmRpcmVjdG9yeS9wYXRoLwot
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgT3V0cHV0WG1sRGlyZWN0b3J5KSB7CitURVNUX0Yo
UGFyc2VGbGFnc1Rlc3QsIE91dHB1dFhtbERpcmVjdG9yeSkgewogICBjb25zdCBjaGFyKiBhcmd2
W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X291dHB1dD14bWw6ZGlyZWN0b3J5
L3BhdGgvIiwKQEAgLTU2MzQsNyArNjExNyw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3Qs
IE91dHB1dFhtbERpcmVjdG9yeSkgewogfQogCiAvLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X3By
aW50X3RpbWUgZmxhZwotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lRmxhZykg
eworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBQcmludFRpbWVGbGFnKSB7CiAgICAgY29uc3QgY2hh
ciogYXJndltdID0gewogICAgICAgImZvby5leGUiLAogICAgICAgIi0tZ3Rlc3RfcHJpbnRfdGlt
ZSIsCkBAIC01NjUwLDcgKzYxMzMsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBQcmlu
dFRpbWVGbGFnKSB7CiB9CiAKIC8vIFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3RfcHJpbnRfdGltZSBm
bGFnIHdpdGggYSAidHJ1ZSIgdmFsdWUKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50
VGltZVRydWUpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgUHJpbnRUaW1lVHJ1ZSkgewogICAg
IGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICItLWd0ZXN0
X3ByaW50X3RpbWU9MSIsCkBAIC01NjY2LDcgKzYxNDksNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRl
c3RUZXN0LCBQcmludFRpbWVUcnVlKSB7CiB9CiAKIC8vIFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3Rf
cHJpbnRfdGltZSBmbGFnIHdpdGggYSAiZmFsc2UiIHZhbHVlCi1URVNUX0YoSW5pdEdvb2dsZVRl
c3RUZXN0LCBQcmludFRpbWVGYWxzZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBQcmludFRp
bWVGYWxzZSkgewogICAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwK
ICAgICAgICItLWd0ZXN0X3ByaW50X3RpbWU9MCIsCkBAIC01NjgyLDcgKzYxNjUsNyBAQCBURVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBQcmludFRpbWVGYWxzZSkgewogfQogCiAvLyBUZXN0cyBw
YXJzaW5nIC0tZ3Rlc3RfcHJpbnRfdGltZT1mLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwg
UHJpbnRUaW1lRmFsc2VfZikgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBQcmludFRpbWVGYWxz
ZV9mKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0t
Z3Rlc3RfcHJpbnRfdGltZT1mIiwKQEAgLTU2OTgsNyArNjE4MSw3IEBAIFRFU1RfRihJbml0R29v
Z2xlVGVzdFRlc3QsIFByaW50VGltZUZhbHNlX2YpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAt
LWd0ZXN0X3ByaW50X3RpbWU9Ri4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGlt
ZUZhbHNlX0YpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgUHJpbnRUaW1lRmFsc2VfRikgewog
ICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X3By
aW50X3RpbWU9RiIsCkBAIC01NzE0LDcgKzYxOTcsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RU
ZXN0LCBQcmludFRpbWVGYWxzZV9GKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9y
YW5kb21fc2VlZD1udW1iZXIKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFJhbmRvbVNlZWQp
IHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgUmFuZG9tU2VlZCkgewogICBjb25zdCBjaGFyKiBh
cmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X3JhbmRvbV9zZWVkPTEwMDAi
LApAQCAtNTczMCw3ICs2MjEzLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUmFuZG9t
U2VlZCkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfcmVwZWF0PW51bWJlcgotVEVT
VF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUmVwZWF0KSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3Qs
IFJlcGVhdCkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAg
ICItLWd0ZXN0X3JlcGVhdD0xMDAwIiwKQEAgLTU3NDYsNyArNjIyOSw3IEBAIFRFU1RfRihJbml0
R29vZ2xlVGVzdFRlc3QsIFJlcGVhdCkgewogfQogCiAvLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0
X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIGZsYWcKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3Qs
IEFsc29SdW5EaXNhYmxlZFRlc3RzRmxhZykgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBBbHNv
UnVuRGlzYWJsZWRUZXN0c0ZsYWcpIHsKICAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAg
ICAiZm9vLmV4ZSIsCiAgICAgICAiLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyIsCkBA
IC01NzYzLDcgKzYyNDYsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBBbHNvUnVuRGlz
YWJsZWRUZXN0c0ZsYWcpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9hbHNvX3J1
bl9kaXNhYmxlZF90ZXN0cyBmbGFnIHdpdGggYSAidHJ1ZSIgdmFsdWUKLVRFU1RfRihJbml0R29v
Z2xlVGVzdFRlc3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzVHJ1ZSkgeworVEVTVF9GKFBhcnNlRmxh
Z3NUZXN0LCBBbHNvUnVuRGlzYWJsZWRUZXN0c1RydWUpIHsKICAgICBjb25zdCBjaGFyKiBhcmd2
W10gPSB7CiAgICAgICAiZm9vLmV4ZSIsCiAgICAgICAiLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxl
ZF90ZXN0cz0xIiwKQEAgLTU3ODAsNyArNjI2Myw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRl
c3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzVHJ1ZSkgewogfQogCiAvLyBUZXN0cyBoYXZpbmcgYSAt
LWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIGZsYWcgd2l0aCBhICJmYWxzZSIgdmFsdWUK
LVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzRmFsc2UpIHsK
K1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNGYWxzZSkgewogICAg
IGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICItLWd0ZXN0
X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzPTAiLApAQCAtNTc5Nyw3ICs2MjgwLDcgQEAgVEVTVF9G
KEluaXRHb29nbGVUZXN0VGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNGYWxzZSkgewogfQogCiAv
LyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3Rfc2h1ZmZsZS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRl
c3QsIFNodWZmbGVXaXRob3V0VmFsdWUpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgU2h1ZmZs
ZVdpdGhvdXRWYWx1ZSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUi
LAogICAgICItLWd0ZXN0X3NodWZmbGUiLApAQCAtNTgxMyw3ICs2Mjk2LDcgQEAgVEVTVF9GKElu
aXRHb29nbGVUZXN0VGVzdCwgU2h1ZmZsZVdpdGhvdXRWYWx1ZSkgewogfQogCiAvLyBUZXN0cyBw
YXJzaW5nIC0tZ3Rlc3Rfc2h1ZmZsZT0wLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU2h1
ZmZsZUZhbHNlXzApIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgU2h1ZmZsZUZhbHNlXzApIHsK
ICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9z
aHVmZmxlPTAiLApAQCAtNTgyOCw5ICs2MzExLDggQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVz
dCwgU2h1ZmZsZUZhbHNlXzApIHsKICAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBh
cmd2MiwgRmxhZ3M6OlNodWZmbGUoZmFsc2UpLCBmYWxzZSk7CiB9CiAKLS8vIFRlc3RzIHBhcnNp
bmcgYSAtLWd0ZXN0X3NodWZmbGUgZmxhZyB0aGF0IGhhcyBhICJ0cnVlIgotLy8gZGVmaW5pdGlv
bi4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFNodWZmbGVUcnVlKSB7CisvLyBUZXN0cyBw
YXJzaW5nIGEgLS1ndGVzdF9zaHVmZmxlIGZsYWcgdGhhdCBoYXMgYSAidHJ1ZSIgZGVmaW5pdGlv
bi4KK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgU2h1ZmZsZVRydWUpIHsKICAgY29uc3QgY2hhciog
YXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9zaHVmZmxlPTEiLApAQCAt
NTg0Niw3ICs2MzI4LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU2h1ZmZsZVRydWUp
IHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X3N0YWNrX3RyYWNlX2RlcHRoPW51bWJl
ci4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFN0YWNrVHJhY2VEZXB0aCkgeworVEVTVF9G
KFBhcnNlRmxhZ3NUZXN0LCBTdGFja1RyYWNlRGVwdGgpIHsKICAgY29uc3QgY2hhciogYXJndltd
ID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9zdGFja190cmFjZV9kZXB0aD01IiwK
QEAgLTU4NjEsOCArNjM0MywyNCBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBTdGFja1Ry
YWNlRGVwdGgpIHsKICAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxh
Z3M6OlN0YWNrVHJhY2VEZXB0aCg1KSwgZmFsc2UpOwogfQogCitURVNUX0YoUGFyc2VGbGFnc1Rl
c3QsIFN0cmVhbVJlc3VsdFRvKSB7CisgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKKyAgICAiZm9v
LmV4ZSIsCisgICAgIi0tZ3Rlc3Rfc3RyZWFtX3Jlc3VsdF90bz1sb2NhbGhvc3Q6MTIzNCIsCisg
ICAgTlVMTAorICB9OworCisgIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7CisgICAgImZvby5leGUi
LAorICAgIE5VTEwKKyAgfTsKKworICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKAorICAgICAg
YXJndiwgYXJndjIsIEZsYWdzOjpTdHJlYW1SZXN1bHRUbygibG9jYWxob3N0OjEyMzQiKSwgZmFs
c2UpOworfQorCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZS4KLVRF
U1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFRocm93T25GYWlsdXJlV2l0aG91dFZhbHVlKSB7CitU
RVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFRocm93T25GYWlsdXJlV2l0aG91dFZhbHVlKSB7CiAgIGNv
bnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfdGhyb3df
b25fZmFpbHVyZSIsCkBAIC01ODc4LDcgKzYzNzYsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RU
ZXN0LCBUaHJvd09uRmFpbHVyZVdpdGhvdXRWYWx1ZSkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5n
IC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZT0wLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwg
VGhyb3dPbkZhaWx1cmVGYWxzZV8wKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFRocm93T25G
YWlsdXJlRmFsc2VfMCkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUi
LAogICAgICItLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmU9MCIsCkBAIC01ODk1LDcgKzYzOTMsNyBA
QCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBUaHJvd09uRmFpbHVyZUZhbHNlXzApIHsKIAog
Ly8gVGVzdHMgcGFyc2luZyBhIC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZSBmbGFnIHRoYXQgaGFz
IGEgInRydWUiCiAvLyBkZWZpbml0aW9uLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgVGhy
b3dPbkZhaWx1cmVUcnVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFRocm93T25GYWlsdXJl
VHJ1ZSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICIt
LWd0ZXN0X3Rocm93X29uX2ZhaWx1cmU9MSIsCkBAIC01OTEwLDkgKzY0MDgsOSBAQCBURVNUX0Yo
SW5pdEdvb2dsZVRlc3RUZXN0LCBUaHJvd09uRmFpbHVyZVRydWUpIHsKICAgR1RFU1RfVEVTVF9Q
QVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OlRocm93T25GYWlsdXJlKHRydWUpLCBm
YWxzZSk7CiB9CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MK
IC8vIFRlc3RzIHBhcnNpbmcgd2lkZSBzdHJpbmdzLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVz
dCwgV2lkZVN0cmluZ3MpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgV2lkZVN0cmluZ3MpIHsK
ICAgY29uc3Qgd2NoYXJfdCogYXJndltdID0gewogICAgIEwiZm9vLmV4ZSIsCiAgICAgTCItLWd0
ZXN0X2ZpbHRlcj1Gb28qIiwKQEAgLTU5MzUsNyArNjQzMywxMDggQEAgVEVTVF9GKEluaXRHb29n
bGVUZXN0VGVzdCwgV2lkZVN0cmluZ3MpIHsKIAogICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1Nf
KGFyZ3YsIGFyZ3YyLCBleHBlY3RlZF9mbGFncywgZmFsc2UpOwogfQotI2VuZGlmICAvLyBHVEVT
VF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKyNpZiBHVEVTVF9V
U0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCitjbGFzcyBGbGFnZmlsZVRlc3QgOiBwdWJsaWMgUGFyc2VG
bGFnc1Rlc3QgeworIHB1YmxpYzoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIFBhcnNl
RmxhZ3NUZXN0OjpTZXRVcCgpOworCisgICAgdGVzdGRhdGFfcGF0aF8uU2V0KGludGVybmFsOjpG
aWxlUGF0aCgKKyAgICAgICAgdGVzdGluZzo6VGVtcERpcigpICsgaW50ZXJuYWw6OkdldEN1cnJl
bnRFeGVjdXRhYmxlTmFtZSgpLnN0cmluZygpICsKKyAgICAgICAgIl9mbGFnZmlsZV90ZXN0Iikp
OworICAgIHRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6Um1EaXIodGVzdGRhdGFfcGF0aF8uY19z
dHIoKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdGRhdGFfcGF0aF8uQ3JlYXRlRm9sZGVyKCkpOwor
ICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIHRlc3Rpbmc6OmludGVybmFs
Ojpwb3NpeDo6Um1EaXIodGVzdGRhdGFfcGF0aF8uY19zdHIoKSk7CisgICAgUGFyc2VGbGFnc1Rl
c3Q6OlRlYXJEb3duKCk7CisgIH0KKworICBpbnRlcm5hbDo6RmlsZVBhdGggQ3JlYXRlRmxhZ2Zp
bGUoY29uc3QgY2hhciogY29udGVudHMpIHsKKyAgICBpbnRlcm5hbDo6RmlsZVBhdGggZmlsZV9w
YXRoKGludGVybmFsOjpGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFtZSgKKyAgICAgICAg
dGVzdGRhdGFfcGF0aF8sIGludGVybmFsOjpGaWxlUGF0aCgidW5pcXVlIiksICJ0eHQiKSk7Cisg
ICAgRklMRSogZiA9IHRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6Rk9wZW4oZmlsZV9wYXRoLmNf
c3RyKCksICJ3Iik7CisgICAgZnByaW50ZihmLCAiJXMiLCBjb250ZW50cyk7CisgICAgZmNsb3Nl
KGYpOworICAgIHJldHVybiBmaWxlX3BhdGg7CisgIH0KKworIHByaXZhdGU6CisgIGludGVybmFs
OjpGaWxlUGF0aCB0ZXN0ZGF0YV9wYXRoXzsKK307CisKKy8vIFRlc3RzIGFuIGVtcHR5IGZsYWdm
aWxlLgorVEVTVF9GKEZsYWdmaWxlVGVzdCwgRW1wdHkpIHsKKyAgaW50ZXJuYWw6OkZpbGVQYXRo
IGZsYWdmaWxlX3BhdGgoQ3JlYXRlRmxhZ2ZpbGUoIiIpKTsKKyAgc3RkOjpzdHJpbmcgZmxhZ2Zp
bGVfZmxhZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiZmxh
Z2ZpbGU9IikgKyBmbGFnZmlsZV9wYXRoLmNfc3RyKCk7CisKKyAgY29uc3QgY2hhciogYXJndltd
ID0geworICAgICJmb28uZXhlIiwKKyAgICBmbGFnZmlsZV9mbGFnLmNfc3RyKCksCisgICAgTlVM
TAorICB9OworCisgIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7CisgICAgImZvby5leGUiLAorICAg
IE5VTEwKKyAgfTsKKworICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBG
bGFncygpLCBmYWxzZSk7Cit9CisKKy8vIFRlc3RzIHBhc3NpbmcgYSBub24tZW1wdHkgLS1ndGVz
dF9maWx0ZXIgZmxhZyB2aWEgLS1ndGVzdF9mbGFnZmlsZS4KK1RFU1RfRihGbGFnZmlsZVRlc3Qs
IEZpbHRlck5vbkVtcHR5KSB7CisgIGludGVybmFsOjpGaWxlUGF0aCBmbGFnZmlsZV9wYXRoKENy
ZWF0ZUZsYWdmaWxlKAorICAgICAgIi0tIiAgR1RFU1RfRkxBR19QUkVGSVhfICAiZmlsdGVyPWFi
YyIpKTsKKyAgc3RkOjpzdHJpbmcgZmxhZ2ZpbGVfZmxhZyA9CisgICAgICBzdGQ6OnN0cmluZygi
LS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiZmxhZ2ZpbGU9IikgKyBmbGFnZmlsZV9wYXRoLmNfc3Ry
KCk7CisKKyAgY29uc3QgY2hhciogYXJndltdID0geworICAgICJmb28uZXhlIiwKKyAgICBmbGFn
ZmlsZV9mbGFnLmNfc3RyKCksCisgICAgTlVMTAorICB9OworCisgIGNvbnN0IGNoYXIqIGFyZ3Yy
W10gPSB7CisgICAgImZvby5leGUiLAorICAgIE5VTEwKKyAgfTsKKworICBHVEVTVF9URVNUX1BB
UlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6RmlsdGVyKCJhYmMiKSwgZmFsc2UpOwor
fQorCisvLyBUZXN0cyBwYXNzaW5nIHNldmVyYWwgZmxhZ3MgdmlhIC0tZ3Rlc3RfZmxhZ2ZpbGUu
CitURVNUX0YoRmxhZ2ZpbGVUZXN0LCBTZXZlcmFsRmxhZ3MpIHsKKyAgaW50ZXJuYWw6OkZpbGVQ
YXRoIGZsYWdmaWxlX3BhdGgoQ3JlYXRlRmxhZ2ZpbGUoCisgICAgICAiLS0iICBHVEVTVF9GTEFH
X1BSRUZJWF8gICJmaWx0ZXI9YWJjXG4iCisgICAgICAiLS0iICBHVEVTVF9GTEFHX1BSRUZJWF8g
ICJicmVha19vbl9mYWlsdXJlXG4iCisgICAgICAiLS0iICBHVEVTVF9GTEFHX1BSRUZJWF8gICJs
aXN0X3Rlc3RzIikpOworICBzdGQ6OnN0cmluZyBmbGFnZmlsZV9mbGFnID0KKyAgICAgIHN0ZDo6
c3RyaW5nKCItLSIgR1RFU1RfRkxBR19QUkVGSVhfICJmbGFnZmlsZT0iKSArIGZsYWdmaWxlX3Bh
dGguY19zdHIoKTsKKworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgImZvby5leGUiLAor
ICAgIGZsYWdmaWxlX2ZsYWcuY19zdHIoKSwKKyAgICBOVUxMCisgIH07CisKKyAgY29uc3QgY2hh
ciogYXJndjJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAorICB9OworCisgIEZsYWdz
IGV4cGVjdGVkX2ZsYWdzOworICBleHBlY3RlZF9mbGFncy5icmVha19vbl9mYWlsdXJlID0gdHJ1
ZTsKKyAgZXhwZWN0ZWRfZmxhZ3MuZmlsdGVyID0gImFiYyI7CisgIGV4cGVjdGVkX2ZsYWdzLmxp
c3RfdGVzdHMgPSB0cnVlOworCisgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJn
djIsIGV4cGVjdGVkX2ZsYWdzLCBmYWxzZSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX1VTRV9PV05f
RkxBR0ZJTEVfRkxBR18KIAogLy8gVGVzdHMgY3VycmVudF90ZXN0X2luZm8oKSBpbiBVbml0VGVz
dC4KIGNsYXNzIEN1cnJlbnRUZXN0SW5mb1Rlc3QgOiBwdWJsaWMgVGVzdCB7CkBAIC01OTkwLDYg
KzY1ODksNyBAQCBURVNUX0YoQ3VycmVudFRlc3RJbmZvVGVzdCwgV29ya3NGb3JTZWNvbmRUZXN0
SW5BVGVzdENhc2UpIHsKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAorCiAvLyBUaGVzZSB0
d28gbGluZXMgdGVzdCB0aGF0IHdlIGNhbiBkZWZpbmUgdGVzdHMgaW4gYSBuYW1lc3BhY2UgdGhh
dAogLy8gaGFzIHRoZSBuYW1lICJ0ZXN0aW5nIiBhbmQgaXMgbmVzdGVkIGluIGFub3RoZXIgbmFt
ZXNwYWNlLgogbmFtZXNwYWNlIG15X25hbWVzcGFjZSB7CkBAIC02MDQ4LDcgKzY2NDgsNyBAQCBU
RVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBVbmNvbmRpdGlvbmFsKSB7CiAKICNpZmRlZiBf
X0JPUkxBTkRDX18KIC8vIFNpbGVuY2VzIHdhcm5pbmdzOiAiQ29uZGl0aW9uIGlzIGFsd2F5cyB0
cnVlIiwgIlVucmVhY2hhYmxlIGNvZGUiCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1y
Y2gKKyMgcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gKICNlbmRpZgogCiBURVNUKFN0
cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBUcnV0aCkgewpAQCAtNjA3MCw4ICs2NjcwLDggQEAgVEVT
VChTdHJlYW1pbmdBc3NlcnRpb25zVGVzdCwgVHJ1dGgyKSB7CiB9CiAKICNpZmRlZiBfX0JPUkxB
TkRDX18KLS8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9wdGlv
biBwdXNoIiBzdXByZXNzZWQgdGhlbQotI3ByYWdtYSBvcHRpb24gcG9wCisvLyBSZXN0b3JlcyB3
YXJuaW5ncyBhZnRlciBwcmV2aW91cyAiI3ByYWdtYSBvcHRpb24gcHVzaCIgc3VwcHJlc3NlZCB0
aGVtCisjIHByYWdtYSBvcHRpb24gcG9wCiAjZW5kaWYKIAogVEVTVChTdHJlYW1pbmdBc3NlcnRp
b25zVGVzdCwgSW50ZWdlckVxdWFscykgewpAQCAtNjI2NCwxNSArNjg2NCw0MCBAQCBURVNUKENv
bG9yZWRPdXRwdXRUZXN0LCBVc2VzQ29sb3JzV2hlblRlcm1TdXBwb3J0c0NvbG9ycykgewogICBT
ZXRFbnYoIlRFUk0iLCAieHRlcm0tY29sb3IiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgog
ICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFku
CiAKKyAgU2V0RW52KCJURVJNIiwgInh0ZXJtLTI1NmNvbG9yIik7ICAvLyBURVJNIHN1cHBvcnRz
IGNvbG9ycy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0
IGlzIGEgVFRZLgorCisgIFNldEVudigiVEVSTSIsICJzY3JlZW4iKTsgIC8vIFRFUk0gc3VwcG9y
dHMgY29sb3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRv
dXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInNjcmVlbi0yNTZjb2xvciIpOyAgLy8g
VEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUp
KTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAidG11eCIpOyAgLy8g
VEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUp
KTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAidG11eC0yNTZjb2xv
ciIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNv
bG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAicnh2
dC11bmljb2RlIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RSVUUoU2hv
dWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgorCisgIFNldEVudigiVEVS
TSIsICJyeHZ0LXVuaWNvZGUtMjU2Y29sb3IiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgor
ICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFku
CisKICAgU2V0RW52KCJURVJNIiwgImxpbnV4Iik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4K
ICAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZ
LgorCisgIFNldEVudigiVEVSTSIsICJjeWd3aW4iKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3Jz
LgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBU
VFkuCiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIH0KIAogLy8gVmVyaWZpZXMgdGhhdCBT
dGF0aWNBc3NlcnRUeXBlRXEgd29ya3MgaW4gYSBuYW1lc3BhY2Ugc2NvcGUuCiAKLXN0YXRpYyBi
b29sIGR1bW15MSA9IFN0YXRpY0Fzc2VydFR5cGVFcTxib29sLCBib29sPigpOwotc3RhdGljIGJv
b2wgZHVtbXkyID0gU3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGludCwgY29uc3QgaW50PigpOwor
c3RhdGljIGJvb2wgZHVtbXkxIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gU3RhdGljQXNzZXJ0
VHlwZUVxPGJvb2wsIGJvb2w+KCk7CitzdGF0aWMgYm9vbCBkdW1teTIgR1RFU1RfQVRUUklCVVRF
X1VOVVNFRF8gPQorICAgIFN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCBpbnQsIGNvbnN0IGludD4o
KTsKIAogLy8gVmVyaWZpZXMgdGhhdCBTdGF0aWNBc3NlcnRUeXBlRXEgd29ya3MgaW4gYSBjbGFz
cy4KIApAQCAtNjI5NSwxNCArNjkyMCw2IEBAIFRFU1QoU3RhdGljQXNzZXJ0VHlwZUVxVGVzdCwg
Q29tcGlsZXNGb3JFcXVhbFR5cGVzKSB7CiAgIFN0YXRpY0Fzc2VydFR5cGVFcTxpbnQqLCBJbnRB
bGlhcyo+KCk7CiB9CiAKLVRFU1QoR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcFRlc3Qs
IFJldHVybnNUaGVTdGFja1RyYWNlKSB7Ci0gIHRlc3Rpbmc6OlVuaXRUZXN0KiBjb25zdCB1bml0
X3Rlc3QgPSB0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKTsKLQotICAvLyBXZSBkb24n
dCBoYXZlIGEgc3RhY2sgd2Fsa2VyIGluIEdvb2dsZSBUZXN0IHlldC4KLSAgRVhQRUNUX1NUUkVR
KCIiLCBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKHVuaXRfdGVzdCwgMCkuY19zdHIo
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCh1
bml0X3Rlc3QsIDEpLmNfc3RyKCkpOwotfQotCiBURVNUKEhhc05vbmZhdGFsRmFpbHVyZVRlc3Qs
IFJldHVybnNGYWxzZVdoZW5UaGVyZUlzTm9GYWlsdXJlKSB7CiAgIEVYUEVDVF9GQUxTRShIYXNO
b25mYXRhbEZhaWx1cmUoKSk7CiB9CkBAIC02NDY2LDcgKzcwODMsNyBAQCBURVNUKFRlc3RFdmVu
dExpc3RlbmVyc1Rlc3QsIEFwcGVuZCkgewogLy8gb3JkZXIuCiBjbGFzcyBTZXF1ZW5jZVRlc3Rp
bmdMaXN0ZW5lciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKICBwdWJsaWM6Ci0g
IFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyKHN0ZDo6dmVjdG9yPFN0cmluZz4qIHZlY3RvciwgY29u
c3QgY2hhciogaWQpCisgIFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyKHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiogdmVjdG9yLCBjb25zdCBjaGFyKiBpZCkKICAgICAgIDogdmVjdG9yXyh2ZWN0b3Ip
LCBpZF8oaWQpIHt9CiAKICBwcm90ZWN0ZWQ6CkBAIC02NDg5LDIwICs3MTA2LDIwIEBAIGNsYXNz
IFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIg
ewogICB9CiAKICBwcml2YXRlOgotICBTdHJpbmcgR2V0RXZlbnREZXNjcmlwdGlvbihjb25zdCBj
aGFyKiBtZXRob2QpIHsKKyAgc3RkOjpzdHJpbmcgR2V0RXZlbnREZXNjcmlwdGlvbihjb25zdCBj
aGFyKiBtZXRob2QpIHsKICAgICBNZXNzYWdlIG1lc3NhZ2U7CiAgICAgbWVzc2FnZSA8PCBpZF8g
PDwgIi4iIDw8IG1ldGhvZDsKICAgICByZXR1cm4gbWVzc2FnZS5HZXRTdHJpbmcoKTsKICAgfQog
Ci0gIHN0ZDo6dmVjdG9yPFN0cmluZz4qIHZlY3Rvcl87CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiogdmVjdG9yXzsKICAgY29uc3QgY2hhciogY29uc3QgaWRfOwogCiAgIEdURVNUX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTl8oU2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIpOwogfTsKIAogVEVT
VChFdmVudExpc3RlbmVyVGVzdCwgQXBwZW5kS2VlcHNPcmRlcikgewotICBzdGQ6OnZlY3RvcjxT
dHJpbmc+IHZlYzsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHZlYzsKICAgVGVzdEV2ZW50
TGlzdGVuZXJzIGxpc3RlbmVyczsKICAgbGlzdGVuZXJzLkFwcGVuZChuZXcgU2VxdWVuY2VUZXN0
aW5nTGlzdGVuZXIoJnZlYywgIjFzdCIpKTsKICAgbGlzdGVuZXJzLkFwcGVuZChuZXcgU2VxdWVu
Y2VUZXN0aW5nTGlzdGVuZXIoJnZlYywgIjJuZCIpKTsKQEAgLTY3MTUsNCArNzMzMiw0NjQgQEAg
R1RFU1RfVEVTVChBbHRlcm5hdGl2ZU5hbWVUZXN0LCBXb3JrcykgeyAgLy8gR1RFU1RfVEVTVCBp
cyB0aGUgc2FtZSBhcyBURVNULgogICAvLyBHVEVTVF9GQUlMIGlzIHRoZSBzYW1lIGFzIEZBSUwu
CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdURVNUX0ZBSUwoKSA8PCAiQW4gZXhwZWN0ZWQgZmFp
bHVyZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisK
KyAgLy8gR1RFU1RfQVNTRVJUX1hZIGlzIHRoZSBzYW1lIGFzIEFTU0VSVF9YWS4KKworICBHVEVT
VF9BU1NFUlRfRVEoMCwgMCk7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdURVNUX0FTU0VSVF9F
USgwLCAxKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdURVNUX0FT
U0VSVF9FUSgxLCAwKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisKKyAgR1RFU1RfQVNTRVJUX05FKDAsIDEp
OworICBHVEVTVF9BU1NFUlRfTkUoMSwgMCk7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdURVNU
X0FTU0VSVF9ORSgwLCAwKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisKKyAgR1RFU1RfQVNTRVJUX0xFKDAs
IDApOworICBHVEVTVF9BU1NFUlRfTEUoMCwgMSk7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdU
RVNUX0FTU0VSVF9MRSgxLCAwKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisKKyAgR1RFU1RfQVNTRVJUX0xU
KDAsIDEpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfTFQoMCwgMCkgPDwg
IkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0
ZWQgZmFpbHVyZSIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfTFQoMSwg
MCkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4g
ZXhwZWN0ZWQgZmFpbHVyZSIpOworCisgIEdURVNUX0FTU0VSVF9HRSgwLCAwKTsKKyAgR1RFU1Rf
QVNTRVJUX0dFKDEsIDApOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfR0Uo
MCwgMSkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAi
QW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworCisgIEdURVNUX0FTU0VSVF9HVCgxLCAwKTsKKyAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0dUKDAsIDEpIDw8ICJBbiBleHBlY3RlZCBm
YWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsK
KyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0dUKDEsIDEpIDw8ICJBbiBleHBl
Y3RlZCBmYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1
cmUiKTsKK30KKworLy8gVGVzdHMgZm9yIGludGVybmFsIHV0aWxpdGllcyBuZWNlc3NhcnkgZm9y
IGltcGxlbWVudGF0aW9uIG9mIHRoZSB1bml2ZXJzYWwKKy8vIHByaW50aW5nLgorLy8gRklYTUU6
IEZpbmQgYSBiZXR0ZXIgaG9tZSBmb3IgdGhlbS4KKworY2xhc3MgQ29udmVyc2lvbkhlbHBlckJh
c2Uge307CitjbGFzcyBDb252ZXJzaW9uSGVscGVyRGVyaXZlZCA6IHB1YmxpYyBDb252ZXJzaW9u
SGVscGVyQmFzZSB7fTsKKworLy8gVGVzdHMgdGhhdCBJc0FQcm90b2NvbE1lc3NhZ2U8VD46OnZh
bHVlIGlzIGEgY29tcGlsZS10aW1lIGNvbnN0YW50LgorVEVTVChJc0FQcm90b2NvbE1lc3NhZ2VU
ZXN0LCBWYWx1ZUlzQ29tcGlsZVRpbWVDb25zdGFudCkgeworICBHVEVTVF9DT01QSUxFX0FTU0VS
VF8oSXNBUHJvdG9jb2xNZXNzYWdlPFByb3RvY29sTWVzc2FnZT46OnZhbHVlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3RfdHJ1ZSk7CisgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyghSXNB
UHJvdG9jb2xNZXNzYWdlPGludD46OnZhbHVlLCBjb25zdF9mYWxzZSk7Cit9CisKKy8vIFRlc3Rz
IHRoYXQgSXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZSBpcyB0cnVlIHdoZW4gVCBpcworLy8g
cHJvdG8yOjpNZXNzYWdlIG9yIGEgc3ViLWNsYXNzIG9mIGl0LgorVEVTVChJc0FQcm90b2NvbE1l
c3NhZ2VUZXN0LCBWYWx1ZUlzVHJ1ZVdoZW5UeXBlSXNBUHJvdG9jb2xNZXNzYWdlKSB7CisgIEVY
UEVDVF9UUlVFKElzQVByb3RvY29sTWVzc2FnZTwgOjpwcm90bzI6Ok1lc3NhZ2U+Ojp2YWx1ZSk7
CisgIEVYUEVDVF9UUlVFKElzQVByb3RvY29sTWVzc2FnZTxQcm90b2NvbE1lc3NhZ2U+Ojp2YWx1
ZSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgSXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZSBpcyBm
YWxzZSB3aGVuIFQgaXMgbmVpdGhlcgorLy8gUHJvdG9jb2xNZXNzYWdlIG5vciBhIHN1Yi1jbGFz
cyBvZiBpdC4KK1RFU1QoSXNBUHJvdG9jb2xNZXNzYWdlVGVzdCwgVmFsdWVJc0ZhbHNlV2hlblR5
cGVJc05vdEFQcm90b2NvbE1lc3NhZ2UpIHsKKyAgRVhQRUNUX0ZBTFNFKElzQVByb3RvY29sTWVz
c2FnZTxpbnQ+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRShJc0FQcm90b2NvbE1lc3NhZ2U8Y29u
c3QgQ29udmVyc2lvbkhlbHBlckJhc2U+Ojp2YWx1ZSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQ29t
cGlsZUFzc2VydFR5cGVzRXF1YWwgY29tcGlsZXMgd2hlbiB0aGUgdHlwZSBhcmd1bWVudHMgYXJl
CisvLyBlcXVhbC4KK1RFU1QoQ29tcGlsZUFzc2VydFR5cGVzRXF1YWwsIENvbXBpbGVzV2hlblR5
cGVzQXJlRXF1YWwpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8dm9pZCwgdm9pZD4oKTsK
KyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50KiwgaW50Kj4oKTsKK30KKworLy8gVGVzdHMg
dGhhdCBSZW1vdmVSZWZlcmVuY2UgZG9lcyBub3QgYWZmZWN0IG5vbi1yZWZlcmVuY2UgdHlwZXMu
CitURVNUKFJlbW92ZVJlZmVyZW5jZVRlc3QsIERvZXNOb3RBZmZlY3ROb25SZWZlcmVuY2VUeXBl
KSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCwgUmVtb3ZlUmVmZXJlbmNlPGludD46
OnR5cGU+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNvbnN0IGNoYXIsIFJlbW92ZVJl
ZmVyZW5jZTxjb25zdCBjaGFyPjo6dHlwZT4oKTsKK30KKworLy8gVGVzdHMgdGhhdCBSZW1vdmVS
ZWZlcmVuY2UgcmVtb3ZlcyByZWZlcmVuY2UgZnJvbSByZWZlcmVuY2UgdHlwZXMuCitURVNUKFJl
bW92ZVJlZmVyZW5jZVRlc3QsIFJlbW92ZXNSZWZlcmVuY2UpIHsKKyAgQ29tcGlsZUFzc2VydFR5
cGVzRXF1YWw8aW50LCBSZW1vdmVSZWZlcmVuY2U8aW50Jj46OnR5cGU+KCk7CisgIENvbXBpbGVB
c3NlcnRUeXBlc0VxdWFsPGNvbnN0IGNoYXIsIFJlbW92ZVJlZmVyZW5jZTxjb25zdCBjaGFyJj46
OnR5cGU+KCk7Cit9CisKKy8vIFRlc3RzIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfLgorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgordm9pZCBUZXN0R1Rlc3RSZW1vdmVSZWZl
cmVuY2UoKSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBHVEVTVF9SRU1PVkVfUkVG
RVJFTkNFXyhUMik+KCk7Cit9CisKK1RFU1QoUmVtb3ZlUmVmZXJlbmNlVGVzdCwgTWFjcm9WZXJz
aW9uKSB7CisgIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZTxpbnQsIGludD4oKTsKKyAgVGVzdEdU
ZXN0UmVtb3ZlUmVmZXJlbmNlPGNvbnN0IGNoYXIsIGNvbnN0IGNoYXImPigpOworfQorCisKKy8v
IFRlc3RzIHRoYXQgUmVtb3ZlQ29uc3QgZG9lcyBub3QgYWZmZWN0IG5vbi1jb25zdCB0eXBlcy4K
K1RFU1QoUmVtb3ZlQ29uc3RUZXN0LCBEb2VzTm90QWZmZWN0Tm9uQ29uc3RUeXBlKSB7CisgIENv
bXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCwgUmVtb3ZlQ29uc3Q8aW50Pjo6dHlwZT4oKTsKKyAg
Q29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y2hhciYsIFJlbW92ZUNvbnN0PGNoYXImPjo6dHlwZT4o
KTsKK30KKworLy8gVGVzdHMgdGhhdCBSZW1vdmVDb25zdCByZW1vdmVzIGNvbnN0IGZyb20gY29u
c3QgdHlwZXMuCitURVNUKFJlbW92ZUNvbnN0VGVzdCwgUmVtb3Zlc0NvbnN0KSB7CisgIENvbXBp
bGVBc3NlcnRUeXBlc0VxdWFsPGludCwgUmVtb3ZlQ29uc3Q8Y29uc3QgaW50Pjo6dHlwZT4oKTsK
KyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y2hhclsyXSwgUmVtb3ZlQ29uc3Q8Y29uc3QgY2hh
clsyXT46OnR5cGU+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNoYXJbMl1bM10sIFJl
bW92ZUNvbnN0PGNvbnN0IGNoYXJbMl1bM10+Ojp0eXBlPigpOworfQorCisvLyBUZXN0cyBHVEVT
VF9SRU1PVkVfQ09OU1RfLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgor
dm9pZCBUZXN0R1Rlc3RSZW1vdmVDb25zdCgpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8
VDEsIEdURVNUX1JFTU9WRV9DT05TVF8oVDIpPigpOworfQorCitURVNUKFJlbW92ZUNvbnN0VGVz
dCwgTWFjcm9WZXJzaW9uKSB7CisgIFRlc3RHVGVzdFJlbW92ZUNvbnN0PGludCwgaW50PigpOwor
ICBUZXN0R1Rlc3RSZW1vdmVDb25zdDxkb3VibGUmLCBkb3VibGUmPigpOworICBUZXN0R1Rlc3RS
ZW1vdmVDb25zdDxjaGFyLCBjb25zdCBjaGFyPigpOworfQorCisvLyBUZXN0cyBHVEVTVF9SRU1P
VkVfUkVGRVJFTkNFX0FORF9DT05TVF8uCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDI+Cit2b2lkIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0KCkgeworICBDb21w
aWxlQXNzZXJ0VHlwZXNFcXVhbDxUMSwgR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV9BTkRfQ09OU1Rf
KFQyKT4oKTsKK30KKworVEVTVChSZW1vdmVSZWZlcmVuY2VUb0NvbnN0VGVzdCwgV29ya3MpIHsK
KyAgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8aW50LCBpbnQ+KCk7CisgIFRlc3RH
VGVzdFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0PGRvdWJsZSwgZG91YmxlJj4oKTsKKyAgVGVzdEdU
ZXN0UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8Y2hhciwgY29uc3QgY2hhcj4oKTsKKyAgVGVzdEdU
ZXN0UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8Y2hhciwgY29uc3QgY2hhciY+KCk7CisgIFRlc3RH
VGVzdFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0PGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKj4oKTsK
K30KKworLy8gVGVzdHMgdGhhdCBBZGRSZWZlcmVuY2UgZG9lcyBub3QgYWZmZWN0IHJlZmVyZW5j
ZSB0eXBlcy4KK1RFU1QoQWRkUmVmZXJlbmNlVGVzdCwgRG9lc05vdEFmZmVjdFJlZmVyZW5jZVR5
cGUpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50JiwgQWRkUmVmZXJlbmNlPGludCY+
Ojp0eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjb25zdCBjaGFyJiwgQWRkUmVm
ZXJlbmNlPGNvbnN0IGNoYXImPjo6dHlwZT4oKTsKK30KKworLy8gVGVzdHMgdGhhdCBBZGRSZWZl
cmVuY2UgYWRkcyByZWZlcmVuY2UgdG8gbm9uLXJlZmVyZW5jZSB0eXBlcy4KK1RFU1QoQWRkUmVm
ZXJlbmNlVGVzdCwgQWRkc1JlZmVyZW5jZSkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxp
bnQmLCBBZGRSZWZlcmVuY2U8aW50Pjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1
YWw8Y29uc3QgY2hhciYsIEFkZFJlZmVyZW5jZTxjb25zdCBjaGFyPjo6dHlwZT4oKTsKK30KKwor
Ly8gVGVzdHMgR1RFU1RfQUREX1JFRkVSRU5DRV8uCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDI+Cit2b2lkIFRlc3RHVGVzdEFkZFJlZmVyZW5jZSgpIHsKKyAgQ29tcGlsZUFz
c2VydFR5cGVzRXF1YWw8VDEsIEdURVNUX0FERF9SRUZFUkVOQ0VfKFQyKT4oKTsKK30KKworVEVT
VChBZGRSZWZlcmVuY2VUZXN0LCBNYWNyb1ZlcnNpb24pIHsKKyAgVGVzdEdUZXN0QWRkUmVmZXJl
bmNlPGludCYsIGludD4oKTsKKyAgVGVzdEdUZXN0QWRkUmVmZXJlbmNlPGNvbnN0IGNoYXImLCBj
b25zdCBjaGFyJj4oKTsKK30KKworLy8gVGVzdHMgR1RFU1RfUkVGRVJFTkNFX1RPX0NPTlNUXy4K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgVGVzdEdUZXN0UmVm
ZXJlbmNlVG9Db25zdCgpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8VDEsIEdURVNUX1JF
RkVSRU5DRV9UT19DT05TVF8oVDIpPigpOworfQorCitURVNUKEdUZXN0UmVmZXJlbmNlVG9Db25z
dFRlc3QsIFdvcmtzKSB7CisgIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29uc3Q8Y29uc3QgY2hhciYs
IGNoYXI+KCk7CisgIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29uc3Q8Y29uc3QgaW50JiwgY29uc3Qg
aW50PigpOworICBUZXN0R1Rlc3RSZWZlcmVuY2VUb0NvbnN0PGNvbnN0IGRvdWJsZSYsIGRvdWJs
ZT4oKTsKKyAgVGVzdEdUZXN0UmVmZXJlbmNlVG9Db25zdDxjb25zdCBzdGQ6OnN0cmluZyYsIGNv
bnN0IHN0ZDo6c3RyaW5nJj4oKTsKK30KKworLy8gVGVzdHMgdGhhdCBJbXBsaWNpdGx5Q29udmVy
dGlibGU8VDEsIFQyPjo6dmFsdWUgaXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuCitURVNUKElt
cGxpY2l0bHlDb252ZXJ0aWJsZVRlc3QsIFZhbHVlSXNDb21waWxlVGltZUNvbnN0YW50KSB7Cisg
IEdURVNUX0NPTVBJTEVfQVNTRVJUXygoSW1wbGljaXRseUNvbnZlcnRpYmxlPGludCwgaW50Pjo6
dmFsdWUpLCBjb25zdF90cnVlKTsKKyAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKCghSW1wbGljaXRs
eUNvbnZlcnRpYmxlPHZvaWQqLCBpbnQqPjo6dmFsdWUpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3RfZmFsc2UpOworfQorCisvLyBUZXN0cyB0aGF0IEltcGxpY2l0bHlDb252ZXJ0aWJs
ZTxUMSwgVDI+Ojp2YWx1ZSBpcyB0cnVlIHdoZW4gVDEgY2FuCisvLyBiZSBpbXBsaWNpdGx5IGNv
bnZlcnRlZCB0byBUMi4KK1RFU1QoSW1wbGljaXRseUNvbnZlcnRpYmxlVGVzdCwgVmFsdWVJc1Ry
dWVXaGVuQ29udmVydGlibGUpIHsKKyAgRVhQRUNUX1RSVUUoKEltcGxpY2l0bHlDb252ZXJ0aWJs
ZTxpbnQsIGRvdWJsZT46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChJbXBsaWNpdGx5Q29udmVy
dGlibGU8ZG91YmxlLCBpbnQ+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoSW1wbGljaXRseUNv
bnZlcnRpYmxlPGludCosIHZvaWQqPjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKEltcGxpY2l0
bHlDb252ZXJ0aWJsZTxpbnQqLCBjb25zdCBpbnQqPjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUo
KEltcGxpY2l0bHlDb252ZXJ0aWJsZTxDb252ZXJzaW9uSGVscGVyRGVyaXZlZCYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvbkhlbHBlckJhc2Um
Pjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxjb25zdCBD
b252ZXJzaW9uSGVscGVyQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDb252ZXJzaW9uSGVscGVyQmFzZT46OnZhbHVlKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgSW1w
bGljaXRseUNvbnZlcnRpYmxlPFQxLCBUMj46OnZhbHVlIGlzIGZhbHNlIHdoZW4gVDEKKy8vIGNh
bm5vdCBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBUMi4KK1RFU1QoSW1wbGljaXRseUNvbnZl
cnRpYmxlVGVzdCwgVmFsdWVJc0ZhbHNlV2hlbk5vdENvbnZlcnRpYmxlKSB7CisgIEVYUEVDVF9G
QUxTRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPGRvdWJsZSwgaW50Kj46OnZhbHVlKSk7CisgIEVY
UEVDVF9GQUxTRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPHZvaWQqLCBpbnQqPjo6dmFsdWUpKTsK
KyAgRVhQRUNUX0ZBTFNFKChJbXBsaWNpdGx5Q29udmVydGlibGU8Y29uc3QgaW50KiwgaW50Kj46
OnZhbHVlKSk7CisgIEVYUEVDVF9GQUxTRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPENvbnZlcnNp
b25IZWxwZXJCYXNlJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29u
dmVyc2lvbkhlbHBlckRlcml2ZWQmPjo6dmFsdWUpKTsKK30KKworLy8gVGVzdHMgSXNDb250YWlu
ZXJUZXN0LgorCitjbGFzcyBOb25Db250YWluZXIge307CisKK1RFU1QoSXNDb250YWluZXJUZXN0
VGVzdCwgV29ya3NGb3JOb25Db250YWluZXIpIHsKKyAgRVhQRUNUX0VRKHNpemVvZihJc05vdENv
bnRhaW5lciksIHNpemVvZihJc0NvbnRhaW5lclRlc3Q8aW50PigwKSkpOworICBFWFBFQ1RfRVEo
c2l6ZW9mKElzTm90Q29udGFpbmVyKSwgc2l6ZW9mKElzQ29udGFpbmVyVGVzdDxjaGFyWzVdPigw
KSkpOworICBFWFBFQ1RfRVEoc2l6ZW9mKElzTm90Q29udGFpbmVyKSwgc2l6ZW9mKElzQ29udGFp
bmVyVGVzdDxOb25Db250YWluZXI+KDApKSk7Cit9CisKK1RFU1QoSXNDb250YWluZXJUZXN0VGVz
dCwgV29ya3NGb3JDb250YWluZXIpIHsKKyAgRVhQRUNUX0VRKHNpemVvZihJc0NvbnRhaW5lciks
CisgICAgICAgICAgICBzaXplb2YoSXNDb250YWluZXJUZXN0PHN0ZDo6dmVjdG9yPGJvb2w+ID4o
MCkpKTsKKyAgRVhQRUNUX0VRKHNpemVvZihJc0NvbnRhaW5lciksCisgICAgICAgICAgICBzaXpl
b2YoSXNDb250YWluZXJUZXN0PHN0ZDo6bWFwPGludCwgZG91YmxlPiA+KDApKSk7Cit9CisKKyNp
ZiBHVEVTVF9MQU5HX0NYWDExCitzdHJ1Y3QgQ29uc3RPbmx5Q29udGFpbmVyV2l0aFBvaW50ZXJJ
dGVyYXRvciB7CisgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gaW50KjsKKyAgY29uc3RfaXRlcmF0
b3IgYmVnaW4oKSBjb25zdDsKKyAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7Cit9OworCitz
dHJ1Y3QgQ29uc3RPbmx5Q29udGFpbmVyV2l0aENsYXNzSXRlcmF0b3IgeworICBzdHJ1Y3QgY29u
c3RfaXRlcmF0b3IgeworICAgIGNvbnN0IGludCYgb3BlcmF0b3IqKCkgY29uc3Q7CisgICAgY29u
c3RfaXRlcmF0b3ImIG9wZXJhdG9yKysoLyogcHJlLWluY3JlbWVudCAqLyk7CisgIH07CisgIGNv
bnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CisgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0
OworfTsKKworVEVTVChJc0NvbnRhaW5lclRlc3RUZXN0LCBDb25zdE9ubHlDb250YWluZXIpIHsK
KyAgRVhQRUNUX0VRKHNpemVvZihJc0NvbnRhaW5lciksCisgICAgICAgICAgICBzaXplb2YoSXND
b250YWluZXJUZXN0PENvbnN0T25seUNvbnRhaW5lcldpdGhQb2ludGVySXRlcmF0b3I+KDApKSk7
CisgIEVYUEVDVF9FUShzaXplb2YoSXNDb250YWluZXIpLAorICAgICAgICAgICAgc2l6ZW9mKElz
Q29udGFpbmVyVGVzdDxDb25zdE9ubHlDb250YWluZXJXaXRoQ2xhc3NJdGVyYXRvcj4oMCkpKTsK
K30KKyNlbmRpZiAgLy8gR1RFU1RfTEFOR19DWFgxMQorCisvLyBUZXN0cyBJc0hhc2hUYWJsZS4K
K3N0cnVjdCBBSGFzaFRhYmxlIHsKKyAgdHlwZWRlZiB2b2lkIGhhc2hlcjsKK307CitzdHJ1Y3Qg
Tm90UmVhbGx5QUhhc2hUYWJsZSB7CisgIHR5cGVkZWYgdm9pZCBoYXNoZXI7CisgIHR5cGVkZWYg
dm9pZCByZXZlcnNlX2l0ZXJhdG9yOworfTsKK1RFU1QoSXNIYXNoVGFibGUsIEJhc2ljKSB7Cisg
IEVYUEVDVF9UUlVFKHRlc3Rpbmc6OmludGVybmFsOjpJc0hhc2hUYWJsZTxBSGFzaFRhYmxlPjo6
dmFsdWUpOworICBFWFBFQ1RfRkFMU0UodGVzdGluZzo6aW50ZXJuYWw6OklzSGFzaFRhYmxlPE5v
dFJlYWxseUFIYXNoVGFibGU+Ojp2YWx1ZSk7CisjaWYgR1RFU1RfTEFOR19DWFgxMQorICBFWFBF
Q1RfRkFMU0UodGVzdGluZzo6aW50ZXJuYWw6OklzSGFzaFRhYmxlPHN0ZDo6dmVjdG9yPGludD4+
Ojp2YWx1ZSk7CisgIEVYUEVDVF9UUlVFKHRlc3Rpbmc6OmludGVybmFsOjpJc0hhc2hUYWJsZTxz
dGQ6OnVub3JkZXJlZF9zZXQ8aW50Pj46OnZhbHVlKTsKKyNlbmRpZiAgLy8gR1RFU1RfTEFOR19D
WFgxMQorI2lmIEdURVNUX0hBU19IQVNIX1NFVF8KKyAgRVhQRUNUX1RSVUUodGVzdGluZzo6aW50
ZXJuYWw6OklzSGFzaFRhYmxlPF9fZ251X2N4eDo6aGFzaF9zZXQ8aW50Pj46OnZhbHVlKTsKKyNl
bmRpZiAgLy8gR1RFU1RfSEFTX0hBU0hfU0VUXworfQorCisvLyBUZXN0cyBBcnJheUVxKCkuCisK
K1RFU1QoQXJyYXlFcVRlc3QsIFdvcmtzRm9yRGVnZW5lcmF0ZWRBcnJheXMpIHsKKyAgRVhQRUNU
X1RSVUUoQXJyYXlFcSg1LCA1TCkpOworICBFWFBFQ1RfRkFMU0UoQXJyYXlFcSgnYScsIDApKTsK
K30KKworVEVTVChBcnJheUVxVGVzdCwgV29ya3NGb3JPbmVEaW1lbnNpb25hbEFycmF5cykgewor
ICAvLyBOb3RlIHRoYXQgYSBhbmQgYiBhcmUgZGlzdGluY3QgYnV0IGNvbXBhdGlibGUgdHlwZXMu
CisgIGNvbnN0IGludCBhW10gPSB7IDAsIDEgfTsKKyAgbG9uZyBiW10gPSB7IDAsIDEgfTsKKyAg
RVhQRUNUX1RSVUUoQXJyYXlFcShhLCBiKSk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgMiwg
YikpOworCisgIGJbMF0gPSAyOworICBFWFBFQ1RfRkFMU0UoQXJyYXlFcShhLCBiKSk7CisgIEVY
UEVDVF9GQUxTRShBcnJheUVxKGEsIDEsIGIpKTsKK30KKworVEVTVChBcnJheUVxVGVzdCwgV29y
a3NGb3JUd29EaW1lbnNpb25hbEFycmF5cykgeworICBjb25zdCBjaGFyIGFbXVszXSA9IHsgImhp
IiwgImxvIiB9OworICBjb25zdCBjaGFyIGJbXVszXSA9IHsgImhpIiwgImxvIiB9OworICBjb25z
dCBjaGFyIGNbXVszXSA9IHsgImhpIiwgImxpIiB9OworCisgIEVYUEVDVF9UUlVFKEFycmF5RXEo
YSwgYikpOworICBFWFBFQ1RfVFJVRShBcnJheUVxKGEsIDIsIGIpKTsKKworICBFWFBFQ1RfRkFM
U0UoQXJyYXlFcShhLCBjKSk7CisgIEVYUEVDVF9GQUxTRShBcnJheUVxKGEsIDIsIGMpKTsKK30K
KworLy8gVGVzdHMgQXJyYXlBd2FyZUZpbmQoKS4KKworVEVTVChBcnJheUF3YXJlRmluZFRlc3Qs
IFdvcmtzRm9yT25lRGltZW5zaW9uYWxBcnJheSkgeworICBjb25zdCBjaGFyIGFbXSA9ICJoZWxs
byI7CisgIEVYUEVDVF9FUShhICsgNCwgQXJyYXlBd2FyZUZpbmQoYSwgYSArIDUsICdvJykpOwor
ICBFWFBFQ1RfRVEoYSArIDUsIEFycmF5QXdhcmVGaW5kKGEsIGEgKyA1LCAneCcpKTsKK30KKwor
VEVTVChBcnJheUF3YXJlRmluZFRlc3QsIFdvcmtzRm9yVHdvRGltZW5zaW9uYWxBcnJheSkgewor
ICBpbnQgYVtdWzJdID0geyB7IDAsIDEgfSwgeyAyLCAzIH0sIHsgNCwgNSB9IH07CisgIGNvbnN0
IGludCBiWzJdID0geyAyLCAzIH07CisgIEVYUEVDVF9FUShhICsgMSwgQXJyYXlBd2FyZUZpbmQo
YSwgYSArIDMsIGIpKTsKKworICBjb25zdCBpbnQgY1syXSA9IHsgNiwgNyB9OworICBFWFBFQ1Rf
RVEoYSArIDMsIEFycmF5QXdhcmVGaW5kKGEsIGEgKyAzLCBjKSk7Cit9CisKKy8vIFRlc3RzIENv
cHlBcnJheSgpLgorCitURVNUKENvcHlBcnJheVRlc3QsIFdvcmtzRm9yRGVnZW5lcmF0ZWRBcnJh
eXMpIHsKKyAgaW50IG4gPSAwOworICBDb3B5QXJyYXkoJ2EnLCAmbik7CisgIEVYUEVDVF9FUSgn
YScsIG4pOworfQorCitURVNUKENvcHlBcnJheVRlc3QsIFdvcmtzRm9yT25lRGltZW5zaW9uYWxB
cnJheXMpIHsKKyAgY29uc3QgY2hhciBhWzNdID0gImhpIjsKKyAgaW50IGJbM107CisjaWZuZGVm
IF9fQk9STEFORENfXyAgLy8gQysrQnVpbGRlciBjYW5ub3QgY29tcGlsZSBzb21lIGFycmF5IHNp
emUgZGVkdWN0aW9ucy4KKyAgQ29weUFycmF5KGEsICZiKTsKKyAgRVhQRUNUX1RSVUUoQXJyYXlF
cShhLCBiKSk7CisjZW5kaWYKKworICBpbnQgY1szXTsKKyAgQ29weUFycmF5KGEsIDMsIGMpOwor
ICBFWFBFQ1RfVFJVRShBcnJheUVxKGEsIGMpKTsKK30KKworVEVTVChDb3B5QXJyYXlUZXN0LCBX
b3Jrc0ZvclR3b0RpbWVuc2lvbmFsQXJyYXlzKSB7CisgIGNvbnN0IGludCBhWzJdWzNdID0geyB7
IDAsIDEsIDIgfSwgeyAzLCA0LCA1IH0gfTsKKyAgaW50IGJbMl1bM107CisjaWZuZGVmIF9fQk9S
TEFORENfXyAgLy8gQysrQnVpbGRlciBjYW5ub3QgY29tcGlsZSBzb21lIGFycmF5IHNpemUgZGVk
dWN0aW9ucy4KKyAgQ29weUFycmF5KGEsICZiKTsKKyAgRVhQRUNUX1RSVUUoQXJyYXlFcShhLCBi
KSk7CisjZW5kaWYKKworICBpbnQgY1syXVszXTsKKyAgQ29weUFycmF5KGEsIDIsIGMpOworICBF
WFBFQ1RfVFJVRShBcnJheUVxKGEsIGMpKTsKK30KKworLy8gVGVzdHMgTmF0aXZlQXJyYXkuCisK
K1RFU1QoTmF0aXZlQXJyYXlUZXN0LCBDb25zdHJ1Y3RvckZyb21BcnJheVdvcmtzKSB7CisgIGNv
bnN0IGludCBhWzNdID0geyAwLCAxLCAyIH07CisgIE5hdGl2ZUFycmF5PGludD4gbmEoYSwgMywg
UmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgpKTsKKyAgRVhQRUNUX0VRKDNVLCBuYS5zaXplKCkp
OworICBFWFBFQ1RfRVEoYSwgbmEuYmVnaW4oKSk7Cit9CisKK1RFU1QoTmF0aXZlQXJyYXlUZXN0
LCBDcmVhdGVzQW5kRGVsZXRlc0NvcHlPZkFycmF5V2hlbkFza2VkVG8pIHsKKyAgdHlwZWRlZiBp
bnQgQXJyYXlbMl07CisgIEFycmF5KiBhID0gbmV3IEFycmF5WzFdOworICAoKmEpWzBdID0gMDsK
KyAgKCphKVsxXSA9IDE7CisgIE5hdGl2ZUFycmF5PGludD4gbmEoKmEsIDIsIFJlbGF0aW9uVG9T
b3VyY2VDb3B5KCkpOworICBFWFBFQ1RfTkUoKmEsIG5hLmJlZ2luKCkpOworICBkZWxldGVbXSBh
OworICBFWFBFQ1RfRVEoMCwgbmEuYmVnaW4oKVswXSk7CisgIEVYUEVDVF9FUSgxLCBuYS5iZWdp
bigpWzFdKTsKKworICAvLyBXZSByZWx5IG9uIHRoZSBoZWFwIGNoZWNrZXIgdG8gdmVyaWZ5IHRo
YXQgbmEgZGVsZXRlcyB0aGUgY29weSBvZgorICAvLyBhcnJheS4KK30KKworVEVTVChOYXRpdmVB
cnJheVRlc3QsIFR5cGVNZW1iZXJzQXJlQ29ycmVjdCkgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8
Y2hhciwgTmF0aXZlQXJyYXk8Y2hhcj46OnZhbHVlX3R5cGU+KCk7CisgIFN0YXRpY0Fzc2VydFR5
cGVFcTxpbnRbMl0sIE5hdGl2ZUFycmF5PGludFsyXT46OnZhbHVlX3R5cGU+KCk7CisKKyAgU3Rh
dGljQXNzZXJ0VHlwZUVxPGNvbnN0IGNoYXIqLCBOYXRpdmVBcnJheTxjaGFyPjo6Y29uc3RfaXRl
cmF0b3I+KCk7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCBib29sKCopWzJdLCBOYXRpdmVB
cnJheTxib29sWzJdPjo6Y29uc3RfaXRlcmF0b3I+KCk7Cit9CisKK1RFU1QoTmF0aXZlQXJyYXlU
ZXN0LCBNZXRob2RzV29yaykgeworICBjb25zdCBpbnQgYVszXSA9IHsgMCwgMSwgMiB9OworICBO
YXRpdmVBcnJheTxpbnQ+IG5hKGEsIDMsIFJlbGF0aW9uVG9Tb3VyY2VDb3B5KCkpOworICBBU1NF
UlRfRVEoM1UsIG5hLnNpemUoKSk7CisgIEVYUEVDVF9FUSgzLCBuYS5lbmQoKSAtIG5hLmJlZ2lu
KCkpOworCisgIE5hdGl2ZUFycmF5PGludD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbmEuYmVnaW4o
KTsKKyAgRVhQRUNUX0VRKDAsICppdCk7CisgICsraXQ7CisgIEVYUEVDVF9FUSgxLCAqaXQpOwor
ICBpdCsrOworICBFWFBFQ1RfRVEoMiwgKml0KTsKKyAgKytpdDsKKyAgRVhQRUNUX0VRKG5hLmVu
ZCgpLCBpdCk7CisKKyAgRVhQRUNUX1RSVUUobmEgPT0gbmEpOworCisgIE5hdGl2ZUFycmF5PGlu
dD4gbmEyKGEsIDMsIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSk7CisgIEVYUEVDVF9UUlVF
KG5hID09IG5hMik7CisKKyAgY29uc3QgaW50IGIxWzNdID0geyAwLCAxLCAxIH07CisgIGNvbnN0
IGludCBiMls0XSA9IHsgMCwgMSwgMiwgMyB9OworICBFWFBFQ1RfRkFMU0UobmEgPT0gTmF0aXZl
QXJyYXk8aW50PihiMSwgMywgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgpKSk7CisgIEVYUEVD
VF9GQUxTRShuYSA9PSBOYXRpdmVBcnJheTxpbnQ+KGIyLCA0LCBSZWxhdGlvblRvU291cmNlQ29w
eSgpKSk7Cit9CisKK1RFU1QoTmF0aXZlQXJyYXlUZXN0LCBXb3Jrc0ZvclR3b0RpbWVuc2lvbmFs
QXJyYXkpIHsKKyAgY29uc3QgY2hhciBhWzJdWzNdID0geyAiaGkiLCAibG8iIH07CisgIE5hdGl2
ZUFycmF5PGNoYXJbM10+IG5hKGEsIDIsIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSk7Cisg
IEFTU0VSVF9FUSgyVSwgbmEuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKGEsIG5hLmJlZ2luKCkpOwor
fQorCisvLyBUZXN0cyBTa2lwUHJlZml4KCkuCisKK1RFU1QoU2tpcFByZWZpeFRlc3QsIFNraXBz
V2hlblByZWZpeE1hdGNoZXMpIHsKKyAgY29uc3QgY2hhciogY29uc3Qgc3RyID0gImhlbGxvIjsK
KworICBjb25zdCBjaGFyKiBwID0gc3RyOworICBFWFBFQ1RfVFJVRShTa2lwUHJlZml4KCIiLCAm
cCkpOworICBFWFBFQ1RfRVEoc3RyLCBwKTsKKworICBwID0gc3RyOworICBFWFBFQ1RfVFJVRShT
a2lwUHJlZml4KCJoZWxsIiwgJnApKTsKKyAgRVhQRUNUX0VRKHN0ciArIDQsIHApOworfQorCitU
RVNUKFNraXBQcmVmaXhUZXN0LCBEb2VzTm90U2tpcFdoZW5QcmVmaXhEb2VzTm90TWF0Y2gpIHsK
KyAgY29uc3QgY2hhciogY29uc3Qgc3RyID0gIndvcmxkIjsKKworICBjb25zdCBjaGFyKiBwID0g
c3RyOworICBFWFBFQ1RfRkFMU0UoU2tpcFByZWZpeCgiVyIsICZwKSk7CisgIEVYUEVDVF9FUShz
dHIsIHApOworCisgIHAgPSBzdHI7CisgIEVYUEVDVF9GQUxTRShTa2lwUHJlZml4KCJ3b3JsZCEi
LCAmcCkpOworICBFWFBFQ1RfRVEoc3RyLCBwKTsKK30KKworLy8gVGVzdHMgYWRfaG9jX3Rlc3Rf
cmVzdWx0KCkuCisKK2NsYXNzIEFkSG9jVGVzdFJlc3VsdFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7CisgcHJvdGVjdGVkOgorICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgeworICAg
IEZBSUwoKSA8PCAiQSBmYWlsdXJlIGhhcHBlbmVkIGluc2lkZSBTZXRVcFRlc3RDYXNlKCkuIjsK
KyAgfQorfTsKKworVEVTVF9GKEFkSG9jVGVzdFJlc3VsdFRlc3QsIEFkSG9jVGVzdFJlc3VsdEZv
clRlc3RDYXNlU2hvd3NGYWlsdXJlKSB7CisgIGNvbnN0IHRlc3Rpbmc6OlRlc3RSZXN1bHQmIHRl
c3RfcmVzdWx0ID0gdGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5jdXJyZW50X3Rlc3RfY2FzZSgp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+YWRfaG9j
X3Rlc3RfcmVzdWx0KCk7CisgIEVYUEVDVF9UUlVFKHRlc3RfcmVzdWx0LkZhaWxlZCgpKTsKK30K
KworVEVTVF9GKEFkSG9jVGVzdFJlc3VsdFRlc3QsIEFkSG9jVGVzdFJlc3VsdFRlc3RGb3JVbml0
VGVzdERvZXNOb3RTaG93RmFpbHVyZSkgeworICBjb25zdCB0ZXN0aW5nOjpUZXN0UmVzdWx0JiB0
ZXN0X3Jlc3VsdCA9CisgICAgICB0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+YWRf
aG9jX3Rlc3RfcmVzdWx0KCk7CisgIEVYUEVDVF9GQUxTRSh0ZXN0X3Jlc3VsdC5GYWlsZWQoKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9v
dXRmaWxlMV90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1s
X291dGZpbGUxX3Rlc3RfLmNjCmluZGV4IDY2NGJhYWQyYWI4NzNiYTM4ODE5M2E2NWQyYjc5ZmQ4
M2RiMmU3NzUuLmEzOGViYWM4MzlmN2I0ZmNmNzEwOTM1MWM0ZDNmZWNkZTI3MTViMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUxX3Rl
c3RfLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZp
bGUxX3Rlc3RfLmNjCkBAIC0yNywxMiArMjcsMTAgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIC8vCi0vLyBBdXRob3I6IGtlaXRoLnJheUBnbWFpbC5jb20gKEtlaXRoIFJheSkK
LS8vCiAvLyBndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8gd3JpdGVzIHNvbWUgeG1sIHZpYSBUZXN0
UHJvcGVydHkgdXNlZCBieQogLy8gZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkKIAotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogY2xhc3MgUHJv
cGVydHlPbmUgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgcHJvdGVjdGVkOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8u
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMl90ZXN0
Xy5jYwppbmRleCAzNDExYTNkMzhiODYxMDRjNmE2MGM2MGQxMTMxY2I2NmFhNTRjMTkyLi5hZmFm
MTVhNWRjMzIzMTVkNTFhYzdhMGE1NTVmODNjYWI0MWVmNzRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMl90ZXN0Xy5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMl90ZXN0Xy5jYwpA
QCAtMjcsMTIgKzI3LDEwIEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwot
Ly8gQXV0aG9yOiBrZWl0aC5yYXlAZ21haWwuY29tIChLZWl0aCBSYXkpCi0vLwogLy8gZ3Rlc3Rf
eG1sX291dGZpbGUyX3Rlc3RfIHdyaXRlcyBzb21lIHhtbCB2aWEgVGVzdFByb3BlcnR5IHVzZWQg
YnkKIC8vIGd0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIGNsYXNzIFByb3BlcnR5VHdvIDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgewogIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5CmluZGV4IDBmZTk0
N2YwODRjOGY1NmY0YWRmNWQwYzlmYTAyNmNlMjk5NzVkMmMuLjJjMDMxZmY4ZGJhNTEyYzJlMDRl
MjcwNTM0ZTI5ZmNlYmU4ODZjZjkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weQpAQCAtMzEsMzEgKzMxLDM5IEBA
CiAKICIiIlVuaXQgdGVzdCBmb3IgdGhlIGd0ZXN0X3htbF9vdXRwdXQgbW9kdWxlLiIiIgogCi1f
X2F1dGhvcl9fID0gImtlaXRoLnJheUBnbWFpbC5jb20gKEtlaXRoIFJheSkiCi0KIGltcG9ydCBv
cwogZnJvbSB4bWwuZG9tIGltcG9ydCBtaW5pZG9tLCBOb2RlCi0KIGltcG9ydCBndGVzdF90ZXN0
X3V0aWxzCiBpbXBvcnQgZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMKIAotCiBHVEVTVF9PVVRQVVRfU1VC
RElSID0gInhtbF9vdXRmaWxlcyIKIEdURVNUX09VVFBVVF8xX1RFU1QgPSAiZ3Rlc3RfeG1sX291
dGZpbGUxX3Rlc3RfIgogR1RFU1RfT1VUUFVUXzJfVEVTVCA9ICJndGVzdF94bWxfb3V0ZmlsZTJf
dGVzdF8iCiAKIEVYUEVDVEVEX1hNTF8xID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0iVVRGLTgiPz4KLTx0ZXN0c3VpdGVzIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9
IjAiIGVycm9ycz0iMCIgdGltZT0iKiIgbmFtZT0iQWxsVGVzdHMiPgorPHRlc3RzdWl0ZXMgdGVz
dHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiB0aW1l
c3RhbXA9IioiIG5hbWU9IkFsbFRlc3RzIj4KICAgPHRlc3RzdWl0ZSBuYW1lPSJQcm9wZXJ0eU9u
ZSIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIq
Ij4KLSAgICA8dGVzdGNhc2UgbmFtZT0iVGVzdFNvbWVQcm9wZXJ0aWVzIiBzdGF0dXM9InJ1biIg
dGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eU9uZSIgU2V0VXBQcm9wPSIxIiBUZXN0U29tZVBy
b3BlcnR5PSIxIiBUZWFyRG93blByb3A9IjEiIC8+CisgICAgPHRlc3RjYXNlIG5hbWU9IlRlc3RT
b21lUHJvcGVydGllcyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlP
bmUiPgorICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJTZXRVcFBy
b3AiIHZhbHVlPSIxIi8+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJUZXN0U29tZVByb3BlcnR5
IiB2YWx1ZT0iMSIvPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0iVGVhckRvd25Qcm9wIiB2YWx1
ZT0iMSIvPgorICAgICAgPC9wcm9wZXJ0aWVzPgorICAgIDwvdGVzdGNhc2U+CiAgIDwvdGVzdHN1
aXRlPgogPC90ZXN0c3VpdGVzPgogIiIiCiAKIEVYUEVDVEVEX1hNTF8yID0gIiIiPD94bWwgdmVy
c2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx0ZXN0c3VpdGVzIHRlc3RzPSIxIiBmYWls
dXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIgbmFtZT0iQWxsVGVzdHMi
PgorPHRlc3RzdWl0ZXMgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3Jz
PSIwIiB0aW1lPSIqIiB0aW1lc3RhbXA9IioiIG5hbWU9IkFsbFRlc3RzIj4KICAgPHRlc3RzdWl0
ZSBuYW1lPSJQcm9wZXJ0eVR3byIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIg
ZXJyb3JzPSIwIiB0aW1lPSIqIj4KLSAgICA8dGVzdGNhc2UgbmFtZT0iVGVzdFNvbWVQcm9wZXJ0
aWVzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVR3byIgU2V0VXBQ
cm9wPSIyIiBUZXN0U29tZVByb3BlcnR5PSIyIiBUZWFyRG93blByb3A9IjIiIC8+CisgICAgPHRl
c3RjYXNlIG5hbWU9IlRlc3RTb21lUHJvcGVydGllcyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNs
YXNzbmFtZT0iUHJvcGVydHlUd28iPgorICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgIDxwcm9w
ZXJ0eSBuYW1lPSJTZXRVcFByb3AiIHZhbHVlPSIyIi8+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1l
PSJUZXN0U29tZVByb3BlcnR5IiB2YWx1ZT0iMiIvPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0i
VGVhckRvd25Qcm9wIiB2YWx1ZT0iMiIvPgorICAgICAgPC9wcm9wZXJ0aWVzPgorICAgIDwvdGVz
dGNhc2U+CiAgIDwvdGVzdHN1aXRlPgogPC90ZXN0c3VpdGVzPgogIiIiCkBAIC0xMDMsMTEgKzEx
MSwxMSBAQCBjbGFzcyBHVGVzdFhNTE91dEZpbGVzVGVzdChndGVzdF94bWxfdGVzdF91dGlscy5H
VGVzdFhNTFRlc3RDYXNlKToKICAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCiAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoMCwgcC5leGl0X2NvZGUpCiAKLSAgICAjIFRPRE8od2FuQGdvb2dsZS5jb20p
OiBsaWJ0b29sIGNhdXNlcyB0aGUgYnVpbHQgdGVzdCBiaW5hcnkgdG8gYmUKKyAgICAjIEZJWE1F
OiBsaWJ0b29sIGNhdXNlcyB0aGUgYnVpbHQgdGVzdCBiaW5hcnkgdG8gYmUKICAgICAjICAgbmFt
ZWQgbHQtZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3RfIGluc3RlYWQgb2YKLSAgICAjICAgZ3Rlc3Rf
eG1sX291dGZpbGVzX3Rlc3RfLiAgVG8gYWNjb3VudCBmb3IgdGhpcyBwb3NzaWJpbGxpdHksIHdl
CisgICAgIyAgIGd0ZXN0X3htbF9vdXRmaWxlc190ZXN0Xy4gIFRvIGFjY291bnQgZm9yIHRoaXMg
cG9zc2liaWxpdHksIHdlCiAgICAgIyAgIGFsbG93IGJvdGggbmFtZXMgaW4gdGhlIGZvbGxvd2lu
ZyBjb2RlLiAgV2Ugc2hvdWxkIHJlbW92ZSB0aGlzCi0gICAgIyAgIGhhY2sgd2hlbiBDaGFuZGxl
ciBDYXJydXRoJ3MgbGlidG9vbCByZXBsYWNlbWVudCB0b29sIGlzIHJlYWR5LgorICAgICMgICB3
aGVuIGxpYnRvb2wgcmVwbGFjZW1lbnQgdG9vbCBpcyByZWFkeS4KICAgICBvdXRwdXRfZmlsZV9u
YW1lMSA9IHRlc3RfbmFtZSArICIueG1sIgogICAgIG91dHB1dF9maWxlMSA9IG9zLnBhdGguam9p
bihzZWxmLm91dHB1dF9kaXJfLCBvdXRwdXRfZmlsZV9uYW1lMSkKICAgICBvdXRwdXRfZmlsZV9u
YW1lMiA9ICdsdC0nICsgb3V0cHV0X2ZpbGVfbmFtZTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdC5weSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdC5weQppbmRleCA2
ZDQ0OTI5Y2FjYTAzZWM2ZmFlNDQ3MWVkMWJhMWQ0MTZhNWRmY2UwLi5mYWVkZDRlNmNlNzJkYWJl
Zjc4NmEzMTJlZjRhZWNhNWM1ZDI5YmZhIDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3QucHkKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0LnB5CkBAIC0zMSw2MiAr
MzEsNzYgQEAKIAogIiIiVW5pdCB0ZXN0IGZvciB0aGUgZ3Rlc3RfeG1sX291dHB1dCBtb2R1bGUi
IiIKIAotX19hdXRob3JfXyA9ICdlZWZhY21AZ21haWwuY29tIChTZWFuIE1jYWZlZSknCi0KK2lt
cG9ydCBkYXRldGltZQogaW1wb3J0IGVycm5vCiBpbXBvcnQgb3MKK2ltcG9ydCByZQogaW1wb3J0
IHN5cwogZnJvbSB4bWwuZG9tIGltcG9ydCBtaW5pZG9tLCBOb2RlCiAKIGltcG9ydCBndGVzdF90
ZXN0X3V0aWxzCiBpbXBvcnQgZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMKIAorR1RFU1RfRklMVEVSX0ZM
QUcgPSAnLS1ndGVzdF9maWx0ZXInCitHVEVTVF9MSVNUX1RFU1RTX0ZMQUcgPSAnLS1ndGVzdF9s
aXN0X3Rlc3RzJworR1RFU1RfT1VUUFVUX0ZMQUcgPSAnLS1ndGVzdF9vdXRwdXQnCitHVEVTVF9E
RUZBVUxUX09VVFBVVF9GSUxFID0gJ3Rlc3RfZGV0YWlsLnhtbCcKK0dURVNUX1BST0dSQU1fTkFN
RSA9ICdndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0XycKKworIyBUaGUgZmxhZyBpbmRpY2F0aW5n
IHN0YWNrdHJhY2VzIGFyZSBub3Qgc3VwcG9ydGVkCitOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxB
RyA9ICctLW5vX3N0YWNrdHJhY2Vfc3VwcG9ydCcKIAotR1RFU1RfT1VUUFVUX0ZMQUcgICAgICAg
ICA9ICItLWd0ZXN0X291dHB1dCIKLUdURVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUgPSAidGVzdF9k
ZXRhaWwueG1sIgotR1RFU1RfUFJPR1JBTV9OQU1FID0gImd0ZXN0X3htbF9vdXRwdXRfdW5pdHRl
c3RfIgorIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0ZXN0IHNoYXJkaW5nLgorVE9U
QUxfU0hBUkRTX0VOVl9WQVIgPSAnR1RFU1RfVE9UQUxfU0hBUkRTJworU0hBUkRfSU5ERVhfRU5W
X1ZBUiA9ICdHVEVTVF9TSEFSRF9JTkRFWCcKK1NIQVJEX1NUQVRVU19GSUxFX0VOVl9WQVIgPSAn
R1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEUnCiAKLVNVUFBPUlRTX1NUQUNLX1RSQUNFUyA9IEZhbHNl
CitTVVBQT1JUU19TVEFDS19UUkFDRVMgPSBOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRyBub3Qg
aW4gc3lzLmFyZ3YKIAogaWYgU1VQUE9SVFNfU1RBQ0tfVFJBQ0VTOgotICBTVEFDS19UUkFDRV9U
RU1QTEFURSA9ICJcblN0YWNrIHRyYWNlOlxuKiIKKyAgU1RBQ0tfVFJBQ0VfVEVNUExBVEUgPSAn
XG5TdGFjayB0cmFjZTpcbionCiBlbHNlOgotICBTVEFDS19UUkFDRV9URU1QTEFURSA9ICIiCisg
IFNUQUNLX1RSQUNFX1RFTVBMQVRFID0gJycKKyAgIyB1bml0dGVzdC5tYWluKCkgY2FuJ3QgaGFu
ZGxlIHVua25vd24gZmxhZ3MKKyAgc3lzLmFyZ3YucmVtb3ZlKE5PX1NUQUNLVFJBQ0VfU1VQUE9S
VF9GTEFHKQogCiBFWFBFQ1RFRF9OT05fRU1QVFlfWE1MID0gIiIiPD94bWwgdmVyc2lvbj0iMS4w
IiBlbmNvZGluZz0iVVRGLTgiPz4KLTx0ZXN0c3VpdGVzIHRlc3RzPSIxNSIgZmFpbHVyZXM9IjQi
IGRpc2FibGVkPSIyIiBlcnJvcnM9IjAiIHRpbWU9IioiIG5hbWU9IkFsbFRlc3RzIj4KKzx0ZXN0
c3VpdGVzIHRlc3RzPSIyMyIgZmFpbHVyZXM9IjQiIGRpc2FibGVkPSIyIiBlcnJvcnM9IjAiIHRp
bWU9IioiIHRpbWVzdGFtcD0iKiIgbmFtZT0iQWxsVGVzdHMiIGFkX2hvY19wcm9wZXJ0eT0iNDIi
PgogICA8dGVzdHN1aXRlIG5hbWU9IlN1Y2Nlc3NmdWxUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9
IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgogICAgIDx0ZXN0Y2FzZSBuYW1l
PSJTdWNjZWVkcyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU3VjY2Vzc2Z1bFRl
c3QiLz4KICAgPC90ZXN0c3VpdGU+CiAgIDx0ZXN0c3VpdGUgbmFtZT0iRmFpbGVkVGVzdCIgdGVz
dHM9IjEiIGZhaWx1cmVzPSIxIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAg
ICA8dGVzdGNhc2UgbmFtZT0iRmFpbHMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9
IkZhaWxlZFRlc3QiPgotICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IDImI3gwQTtF
eHBlY3RlZDogMSIgdHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5j
YzoqCi1WYWx1ZSBvZjogMgotRXhwZWN0ZWQ6IDElKHN0YWNrKXNdXT48L2ZhaWx1cmU+CisgICAg
ICA8ZmFpbHVyZSBtZXNzYWdlPSJndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqJiN4MEE7
RXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOiYjeDBBOyAgMSYjeDBBOyAgMiIgdHlw
ZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCitFeHBlY3RlZCBl
cXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAgMiUoc3RhY2spc11dPjwvZmFpbHVyZT4K
ICAgICA8L3Rlc3RjYXNlPgogICA8L3Rlc3RzdWl0ZT4KICAgPHRlc3RzdWl0ZSBuYW1lPSJNaXhl
ZFJlc3VsdFRlc3QiIHRlc3RzPSIzIiBmYWlsdXJlcz0iMSIgZGlzYWJsZWQ9IjEiIGVycm9ycz0i
MCIgdGltZT0iKiI+CiAgICAgPHRlc3RjYXNlIG5hbWU9IlN1Y2NlZWRzIiBzdGF0dXM9InJ1biIg
dGltZT0iKiIgY2xhc3NuYW1lPSJNaXhlZFJlc3VsdFRlc3QiLz4KICAgICA8dGVzdGNhc2UgbmFt
ZT0iRmFpbHMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ik1peGVkUmVzdWx0VGVz
dCI+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogMiYjeDBBO0V4cGVjdGVkOiAx
IiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioKLVZhbHVl
IG9mOiAyCi1FeHBlY3RlZDogMSUoc3RhY2spc11dPjwvZmFpbHVyZT4KLSAgICAgIDxmYWlsdXJl
IG1lc3NhZ2U9IlZhbHVlIG9mOiAzJiN4MEE7RXhwZWN0ZWQ6IDIiIHR5cGU9IiI+PCFbQ0RBVEFb
Z3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgotVmFsdWUgb2Y6IDMKLUV4cGVjdGVkOiAy
JShzdGFjaylzXV0+PC9mYWlsdXJlPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iZ3Rlc3RfeG1s
X291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBBO0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZh
bHVlczomI3gwQTsgIDEmI3gwQTsgIDIiIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1
dF91bml0dGVzdF8uY2M6KgorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAx
CisgIDIlKHN0YWNrKXNdXT48L2ZhaWx1cmU+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJndGVz
dF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqJiN4MEE7RXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhl
c2UgdmFsdWVzOiYjeDBBOyAgMiYjeDBBOyAgMyIgdHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxf
b3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6
CisgIDIKKyAgMyUoc3RhY2spc11dPjwvZmFpbHVyZT4KICAgICA8L3Rlc3RjYXNlPgogICAgIDx0
ZXN0Y2FzZSBuYW1lPSJESVNBQkxFRF90ZXN0IiBzdGF0dXM9Im5vdHJ1biIgdGltZT0iKiIgY2xh
c3NuYW1lPSJNaXhlZFJlc3VsdFRlc3QiLz4KICAgPC90ZXN0c3VpdGU+CiAgIDx0ZXN0c3VpdGUg
bmFtZT0iWG1sUXVvdGluZ1Rlc3QiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMSIgZGlzYWJsZWQ9IjAi
IGVycm9ycz0iMCIgdGltZT0iKiI+CiAgICAgPHRlc3RjYXNlIG5hbWU9Ik91dHB1dHNDRGF0YSIg
c3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iWG1sUXVvdGluZ1Rlc3QiPgotICAgICAg
PGZhaWx1cmUgbWVzc2FnZT0iRmFpbGVkJiN4MEE7WE1MIG91dHB1dDogJmx0Oz94bWwgZW5jb2Rp
bmc9JnF1b3Q7dXRmLTgmcXVvdDsmZ3Q7Jmx0O3RvcCZndDsmbHQ7IVtDREFUQVtjZGF0YSB0ZXh0
XV0mZ3Q7Jmx0Oy90b3AmZ3Q7IiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5p
dHRlc3RfLmNjOioKKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Imd0ZXN0X3htbF9vdXRwdXRfdW5p
dHRlc3RfLmNjOiomI3gwQTtGYWlsZWQmI3gwQTtYTUwgb3V0cHV0OiAmbHQ7P3htbCBlbmNvZGlu
Zz0mcXVvdDt1dGYtOCZxdW90OyZndDsmbHQ7dG9wJmd0OyZsdDshW0NEQVRBW2NkYXRhIHRleHRd
XSZndDsmbHQ7L3RvcCZndDsiIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0
dGVzdF8uY2M6KgogRmFpbGVkCiBYTUwgb3V0cHV0OiA8P3htbCBlbmNvZGluZz0idXRmLTgiPjx0
b3A+PCFbQ0RBVEFbY2RhdGEgdGV4dF1dPl1dJmd0OzwhW0NEQVRBWzwvdG9wPiUoc3RhY2spc11d
PjwvZmFpbHVyZT4KICAgICA8L3Rlc3RjYXNlPgogICA8L3Rlc3RzdWl0ZT4KICAgPHRlc3RzdWl0
ZSBuYW1lPSJJbnZhbGlkQ2hhcmFjdGVyc1Rlc3QiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMSIgZGlz
YWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CiAgICAgPHRlc3RjYXNlIG5hbWU9IkludmFs
aWRDaGFyYWN0ZXJzSW5NZXNzYWdlIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJJ
bnZhbGlkQ2hhcmFjdGVyc1Rlc3QiPgotICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iRmFpbGVkJiN4
MEE7SW52YWxpZCBjaGFyYWN0ZXJzIGluIGJyYWNrZXRzIFtdIiB0eXBlPSIiPjwhW0NEQVRBW2d0
ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioKKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Imd0
ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOiomI3gwQTtGYWlsZWQmI3gwQTtJbnZhbGlkIGNo
YXJhY3RlcnMgaW4gYnJhY2tldHMgW10iIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1
dF91bml0dGVzdF8uY2M6KgogRmFpbGVkCiBJbnZhbGlkIGNoYXJhY3RlcnMgaW4gYnJhY2tldHMg
W10lKHN0YWNrKXNdXT48L2ZhaWx1cmU+CiAgICAgPC90ZXN0Y2FzZT4KQEAgLTk0LDQ1ICsxMDgs
MTUyIEBAIEludmFsaWQgY2hhcmFjdGVycyBpbiBicmFja2V0cyBbXSUoc3RhY2spc11dPjwvZmFp
bHVyZT4KICAgPHRlc3RzdWl0ZSBuYW1lPSJEaXNhYmxlZFRlc3QiIHRlc3RzPSIxIiBmYWlsdXJl
cz0iMCIgZGlzYWJsZWQ9IjEiIGVycm9ycz0iMCIgdGltZT0iKiI+CiAgICAgPHRlc3RjYXNlIG5h
bWU9IkRJU0FCTEVEX3Rlc3Rfbm90X3J1biIgc3RhdHVzPSJub3RydW4iIHRpbWU9IioiIGNsYXNz
bmFtZT0iRGlzYWJsZWRUZXN0Ii8+CiAgIDwvdGVzdHN1aXRlPgotICA8dGVzdHN1aXRlIG5hbWU9
IlByb3BlcnR5UmVjb3JkaW5nVGVzdCIgdGVzdHM9IjQiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0i
MCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KLSAgICA8dGVzdGNhc2UgbmFtZT0iT25lUHJvcGVydHki
IHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCIg
a2V5XzE9IjEiLz4KLSAgICA8dGVzdGNhc2UgbmFtZT0iSW50VmFsdWVkUHJvcGVydHkiIHN0YXR1
cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCIga2V5X2lu
dD0iMSIvPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJUaHJlZVByb3BlcnRpZXMiIHN0YXR1cz0icnVu
IiB0aW1lPSIqIiBjbGFzc25hbWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCIga2V5XzE9IjEiIGtl
eV8yPSIyIiBrZXlfMz0iMyIvPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJUd29WYWx1ZXNGb3JPbmVL
ZXlVc2VzTGFzdFZhbHVlIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0
eVJlY29yZGluZ1Rlc3QiIGtleV8xPSIyIi8+CisgIDx0ZXN0c3VpdGUgbmFtZT0iUHJvcGVydHlS
ZWNvcmRpbmdUZXN0IiB0ZXN0cz0iNCIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9
IjAiIHRpbWU9IioiIFNldFVwVGVzdENhc2U9InllcyIgVGVhckRvd25UZXN0Q2FzZT0iYXllIj4K
KyAgICA8dGVzdGNhc2UgbmFtZT0iT25lUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBj
bGFzc25hbWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCI+CisgICAgICA8cHJvcGVydGllcz4KKyAg
ICAgICAgPHByb3BlcnR5IG5hbWU9ImtleV8xIiB2YWx1ZT0iMSIvPgorICAgICAgPC9wcm9wZXJ0
aWVzPgorICAgIDwvdGVzdGNhc2U+CisgICAgPHRlc3RjYXNlIG5hbWU9IkludFZhbHVlZFByb3Bl
cnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rl
c3QiPgorICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJrZXlfaW50
IiB2YWx1ZT0iMSIvPgorICAgICAgPC9wcm9wZXJ0aWVzPgorICAgIDwvdGVzdGNhc2U+CisgICAg
PHRlc3RjYXNlIG5hbWU9IlRocmVlUHJvcGVydGllcyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNs
YXNzbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0Ij4KKyAgICAgIDxwcm9wZXJ0aWVzPgorICAg
ICAgICA8cHJvcGVydHkgbmFtZT0ia2V5XzEiIHZhbHVlPSIxIi8+CisgICAgICAgIDxwcm9wZXJ0
eSBuYW1lPSJrZXlfMiIgdmFsdWU9IjIiLz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImtleV8z
IiB2YWx1ZT0iMyIvPgorICAgICAgPC9wcm9wZXJ0aWVzPgorICAgIDwvdGVzdGNhc2U+CisgICAg
PHRlc3RjYXNlIG5hbWU9IlR3b1ZhbHVlc0Zvck9uZUtleVVzZXNMYXN0VmFsdWUiIHN0YXR1cz0i
cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCI+CisgICAgICA8
cHJvcGVydGllcz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImtleV8xIiB2YWx1ZT0iMiIvPgor
ICAgICAgPC9wcm9wZXJ0aWVzPgorICAgIDwvdGVzdGNhc2U+CiAgIDwvdGVzdHN1aXRlPgogICA8
dGVzdHN1aXRlIG5hbWU9Ik5vRml4dHVyZVRlc3QiIHRlc3RzPSIzIiBmYWlsdXJlcz0iMCIgZGlz
YWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+Ci0gICAgIDx0ZXN0Y2FzZSBuYW1lPSJSZWNv
cmRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTm9GaXh0dXJlVGVz
dCIga2V5PSIxIi8+Ci0gICAgIDx0ZXN0Y2FzZSBuYW1lPSJFeHRlcm5hbFV0aWxpdHlUaGF0Q2Fs
bHNSZWNvcmRJbnRWYWx1ZWRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFt
ZT0iTm9GaXh0dXJlVGVzdCIga2V5X2Zvcl91dGlsaXR5X2ludD0iMSIvPgotICAgICA8dGVzdGNh
c2UgbmFtZT0iRXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkU3RyaW5nVmFsdWVkUHJvcGVy
dHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ik5vRml4dHVyZVRlc3QiIGtleV9m
b3JfdXRpbGl0eV9zdHJpbmc9IjEiLz4KKyAgICAgPHRlc3RjYXNlIG5hbWU9IlJlY29yZFByb3Bl
cnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJOb0ZpeHR1cmVUZXN0Ij4KKyAg
ICAgICA8cHJvcGVydGllcz4KKyAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJrZXkiIHZhbHVlPSIx
Ii8+CisgICAgICAgPC9wcm9wZXJ0aWVzPgorICAgICA8L3Rlc3RjYXNlPgorICAgICA8dGVzdGNh
c2UgbmFtZT0iRXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkSW50VmFsdWVkUHJvcGVydHki
IHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ik5vRml4dHVyZVRlc3QiPgorICAgICAg
IDxwcm9wZXJ0aWVzPgorICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImtleV9mb3JfdXRpbGl0eV9p
bnQiIHZhbHVlPSIxIi8+CisgICAgICAgPC9wcm9wZXJ0aWVzPgorICAgICA8L3Rlc3RjYXNlPgor
ICAgICA8dGVzdGNhc2UgbmFtZT0iRXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkU3RyaW5n
VmFsdWVkUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ik5vRml4dHVy
ZVRlc3QiPgorICAgICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICAgPHByb3BlcnR5IG5hbWU9Imtl
eV9mb3JfdXRpbGl0eV9zdHJpbmciIHZhbHVlPSIxIi8+CisgICAgICAgPC9wcm9wZXJ0aWVzPgor
ICAgICA8L3Rlc3RjYXNlPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJTaW5n
bGUvVmFsdWVQYXJhbVRlc3QiIHRlc3RzPSI0IiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVy
cm9ycz0iMCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNlIG5hbWU9Ikhhc1ZhbHVlUGFyYW1BdHRy
aWJ1dGUvMCIgdmFsdWVfcGFyYW09IjMzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1l
PSJTaW5nbGUvVmFsdWVQYXJhbVRlc3QiIC8+CisgICAgPHRlc3RjYXNlIG5hbWU9Ikhhc1ZhbHVl
UGFyYW1BdHRyaWJ1dGUvMSIgdmFsdWVfcGFyYW09IjQyIiBzdGF0dXM9InJ1biIgdGltZT0iKiIg
Y2xhc3NuYW1lPSJTaW5nbGUvVmFsdWVQYXJhbVRlc3QiIC8+CisgICAgPHRlc3RjYXNlIG5hbWU9
IkFub3RoZXJUZXN0VGhhdEhhc1ZhbHVlUGFyYW1BdHRyaWJ1dGUvMCIgdmFsdWVfcGFyYW09IjMz
IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJTaW5nbGUvVmFsdWVQYXJhbVRlc3Qi
IC8+CisgICAgPHRlc3RjYXNlIG5hbWU9IkFub3RoZXJUZXN0VGhhdEhhc1ZhbHVlUGFyYW1BdHRy
aWJ1dGUvMSIgdmFsdWVfcGFyYW09IjQyIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1l
PSJTaW5nbGUvVmFsdWVQYXJhbVRlc3QiIC8+CisgIDwvdGVzdHN1aXRlPgorICA8dGVzdHN1aXRl
IG5hbWU9IlR5cGVkVGVzdC8wIiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBl
cnJvcnM9IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNUeXBlUGFyYW1BdHRy
aWJ1dGUiIHR5cGVfcGFyYW09IioiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlR5
cGVkVGVzdC8wIiAvPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJUeXBlZFRl
c3QvMSIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1l
PSIqIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iSGFzVHlwZVBhcmFtQXR0cmlidXRlIiB0eXBlX3Bh
cmFtPSIqIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJUeXBlZFRlc3QvMSIgLz4K
KyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iU2luZ2xlL1R5cGVQYXJhbWV0ZXJp
emVkVGVzdENhc2UvMCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3Jz
PSIwIiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iSGFzVHlwZVBhcmFtQXR0cmlidXRl
IiB0eXBlX3BhcmFtPSIqIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJTaW5nbGUv
VHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8wIiAvPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3Rz
dWl0ZSBuYW1lPSJTaW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8xIiB0ZXN0cz0iMSIg
ZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0
Y2FzZSBuYW1lPSJIYXNUeXBlUGFyYW1BdHRyaWJ1dGUiIHR5cGVfcGFyYW09IioiIHN0YXR1cz0i
cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlNpbmdsZS9UeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNl
LzEiIC8+CiAgIDwvdGVzdHN1aXRlPgogPC90ZXN0c3VpdGVzPiIiIiAlIHsnc3RhY2snOiBTVEFD
S19UUkFDRV9URU1QTEFURX0KIAorRVhQRUNURURfRklMVEVSRURfVEVTVF9YTUwgPSAiIiI8P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHRlc3RzdWl0ZXMgdGVzdHM9IjEi
IGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIgorICAgICAgICAg
ICAgdGltZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0cyIgYWRfaG9jX3Byb3BlcnR5PSI0MiI+Cisg
IDx0ZXN0c3VpdGUgbmFtZT0iU3VjY2Vzc2Z1bFRlc3QiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIg
ZGlzYWJsZWQ9IjAiCisgICAgICAgICAgICAgZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVz
dGNhc2UgbmFtZT0iU3VjY2VlZHMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlN1
Y2Nlc3NmdWxUZXN0Ii8+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPiIiIgorCitFWFBF
Q1RFRF9TSEFSREVEX1RFU1RfWE1MID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
VVRGLTgiPz4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIzIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAi
IGVycm9ycz0iMCIgdGltZT0iKiIgdGltZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0cyIgYWRfaG9j
X3Byb3BlcnR5PSI0MiI+CisgIDx0ZXN0c3VpdGUgbmFtZT0iU3VjY2Vzc2Z1bFRlc3QiIHRlc3Rz
PSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAg
PHRlc3RjYXNlIG5hbWU9IlN1Y2NlZWRzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1l
PSJTdWNjZXNzZnVsVGVzdCIvPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJO
b0ZpeHR1cmVUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9
IjAiIHRpbWU9IioiPgorICAgICA8dGVzdGNhc2UgbmFtZT0iUmVjb3JkUHJvcGVydHkiIHN0YXR1
cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ik5vRml4dHVyZVRlc3QiPgorICAgICAgIDxwcm9w
ZXJ0aWVzPgorICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImtleSIgdmFsdWU9IjEiLz4KKyAgICAg
ICA8L3Byb3BlcnRpZXM+CisgICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorICA8dGVz
dHN1aXRlIG5hbWU9IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIw
IiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0i
QW5vdGhlclRlc3RUaGF0SGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8xIiB2YWx1ZV9wYXJhbT0iNDIi
IHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIg
Lz4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rlc3RzdWl0ZXM+IiIiCiAKIEVYUEVDVEVEX0VNUFRZX1hN
TCA9ICIiIjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08dGVzdHN1aXRl
cyB0ZXN0cz0iMCIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9Iioi
IG5hbWU9IkFsbFRlc3RzIj4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIwIiBmYWlsdXJlcz0iMCIgZGlz
YWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIKKyAgICAgICAgICAgIHRpbWVzdGFtcD0iKiIg
bmFtZT0iQWxsVGVzdHMiPgogPC90ZXN0c3VpdGVzPiIiIgogCitHVEVTVF9QUk9HUkFNX1BBVEgg
PSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aChHVEVTVF9QUk9HUkFNX05B
TUUpCisKK1NVUFBPUlRTX1RZUEVEX1RFU1RTID0gJ1R5cGVkVGVzdCcgaW4gZ3Rlc3RfdGVzdF91
dGlscy5TdWJwcm9jZXNzKAorICAgIFtHVEVTVF9QUk9HUkFNX1BBVEgsIEdURVNUX0xJU1RfVEVT
VFNfRkxBR10sIGNhcHR1cmVfc3RkZXJyPUZhbHNlKS5vdXRwdXQKKwogCiBjbGFzcyBHVGVzdFhN
TE91dHB1dFVuaXRUZXN0KGd0ZXN0X3htbF90ZXN0X3V0aWxzLkdUZXN0WE1MVGVzdENhc2UpOgog
ICAiIiIKICAgVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIFhNTCBvdXRwdXQgZnVuY3Rpb25h
bGl0eS4KICAgIiIiCiAKLSAgZGVmIHRlc3ROb25FbXB0eVhtbE91dHB1dChzZWxmKToKLSAgICAi
IiIKLSAgICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRoYXQgZ2VuZXJhdGVzIGEgbm9uLWVtcHR5IFhN
TCBvdXRwdXQsIGFuZAotICAgIHRlc3RzIHRoYXQgdGhlIFhNTCBvdXRwdXQgaXMgZXhwZWN0ZWQu
Ci0gICAgIiIiCi0gICAgc2VsZi5fVGVzdFhtbE91dHB1dChHVEVTVF9QUk9HUkFNX05BTUUsIEVY
UEVDVEVEX05PTl9FTVBUWV9YTUwsIDEpCisgICMgVGhpcyB0ZXN0IGN1cnJlbnRseSBicmVha3Mg
b24gcGxhdGZvcm1zIHRoYXQgZG8gbm90IHN1cHBvcnQgdHlwZWQgYW5kCisgICMgdHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3RzLCBzbyB3ZSBkb24ndCBydW4gaXQgdW5kZXIgdGhlbS4KKyAgaWYgU1VQ
UE9SVFNfVFlQRURfVEVTVFM6CisgICAgZGVmIHRlc3ROb25FbXB0eVhtbE91dHB1dChzZWxmKToK
KyAgICAgICIiIgorICAgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBhIG5v
bi1lbXB0eSBYTUwgb3V0cHV0LCBhbmQKKyAgICAgIHRlc3RzIHRoYXQgdGhlIFhNTCBvdXRwdXQg
aXMgZXhwZWN0ZWQuCisgICAgICAiIiIKKyAgICAgIHNlbGYuX1Rlc3RYbWxPdXRwdXQoR1RFU1Rf
UFJPR1JBTV9OQU1FLCBFWFBFQ1RFRF9OT05fRU1QVFlfWE1MLCAxKQogCiAgIGRlZiB0ZXN0RW1w
dHlYbWxPdXRwdXQoc2VsZik6Ci0gICAgIiIiCisgICAgIiIiVmVyaWZpZXMgWE1MIG91dHB1dCBm
b3IgYSBHb29nbGUgVGVzdCBiaW5hcnkgd2l0aG91dCBhY3R1YWwgdGVzdHMuCisKICAgICBSdW5z
IGEgdGVzdCBwcm9ncmFtIHRoYXQgZ2VuZXJhdGVzIGFuIGVtcHR5IFhNTCBvdXRwdXQsIGFuZAog
ICAgIHRlc3RzIHRoYXQgdGhlIFhNTCBvdXRwdXQgaXMgZXhwZWN0ZWQuCiAgICAgIiIiCiAKLSAg
ICBzZWxmLl9UZXN0WG1sT3V0cHV0KCJndGVzdF9ub190ZXN0X3VuaXR0ZXN0IiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEVYUEVDVEVEX0VNUFRZX1hNTCwgMCkKKyAgICBzZWxmLl9UZXN0WG1s
T3V0cHV0KCdndGVzdF9ub190ZXN0X3VuaXR0ZXN0JywgRVhQRUNURURfRU1QVFlfWE1MLCAwKQor
CisgIGRlZiB0ZXN0VGltZXN0YW1wVmFsdWUoc2VsZik6CisgICAgIiIiQ2hlY2tzIHdoZXRoZXIg
dGhlIHRpbWVzdGFtcCBhdHRyaWJ1dGUgaW4gdGhlIFhNTCBvdXRwdXQgaXMgdmFsaWQuCisKKyAg
ICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRoYXQgZ2VuZXJhdGVzIGFuIGVtcHR5IFhNTCBvdXRwdXQs
IGFuZCBjaGVja3MgaWYKKyAgICB0aGUgdGltZXN0YW1wIGF0dHJpYnV0ZSBpbiB0aGUgdGVzdHN1
aXRlcyB0YWcgaXMgdmFsaWQuCisgICAgIiIiCisgICAgYWN0dWFsID0gc2VsZi5fR2V0WG1sT3V0
cHV0KCdndGVzdF9ub190ZXN0X3VuaXR0ZXN0JywgW10sIHt9LCAwKQorICAgIGRhdGVfdGltZV9z
dHIgPSBhY3R1YWwuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoJ3RpbWVzdGFtcCcp
LnZhbHVlCisgICAgIyBkYXRldGltZS5zdHJwdGltZSgpIGlzIG9ubHkgYXZhaWxhYmxlIGluIFB5
dGhvbiAyLjUrIHNvIHdlIGhhdmUgdG8KKyAgICAjIHBhcnNlIHRoZSBleHBlY3RlZCBkYXRldGlt
ZSBtYW51YWxseS4KKyAgICBtYXRjaCA9IHJlLm1hdGNoKHInKFxkKyktKFxkXGQpLShcZFxkKVQo
XGRcZCk6KFxkXGQpOihcZFxkKScsIGRhdGVfdGltZV9zdHIpCisgICAgc2VsZi5hc3NlcnRUcnVl
KAorICAgICAgICByZS5tYXRjaCwKKyAgICAgICAgJ1hNTCBkYXRldHRpbWUgc3RyaW5nICVzIGhh
cyBpbmNvcnJlY3QgZm9ybWF0JyAlIGRhdGVfdGltZV9zdHIpCisgICAgZGF0ZV90aW1lX2Zyb21f
eG1sID0gZGF0ZXRpbWUuZGF0ZXRpbWUoCisgICAgICAgIHllYXI9aW50KG1hdGNoLmdyb3VwKDEp
KSwgbW9udGg9aW50KG1hdGNoLmdyb3VwKDIpKSwKKyAgICAgICAgZGF5PWludChtYXRjaC5ncm91
cCgzKSksIGhvdXI9aW50KG1hdGNoLmdyb3VwKDQpKSwKKyAgICAgICAgbWludXRlPWludChtYXRj
aC5ncm91cCg1KSksIHNlY29uZD1pbnQobWF0Y2guZ3JvdXAoNikpKQorCisgICAgdGltZV9kZWx0
YSA9IGFicyhkYXRldGltZS5kYXRldGltZS5ub3coKSAtIGRhdGVfdGltZV9mcm9tX3htbCkKKyAg
ICAjIHRpbWVzdGFtcCB2YWx1ZSBzaG91bGQgYmUgbmVhciB0aGUgY3VycmVudCBsb2NhbCB0aW1l
CisgICAgc2VsZi5hc3NlcnRUcnVlKHRpbWVfZGVsdGEgPCBkYXRldGltZS50aW1lZGVsdGEoc2Vj
b25kcz02MDApLAorICAgICAgICAgICAgICAgICAgICAndGltZV9kZWx0YSBpcyAlcycgJSB0aW1l
X2RlbHRhKQorICAgIGFjdHVhbC51bmxpbmsoKQogCiAgIGRlZiB0ZXN0RGVmYXVsdE91dHB1dEZp
bGUoc2VsZik6CiAgICAgIiIiCkBAIC0xNDIsNyArMjYzLDcgQEAgY2xhc3MgR1Rlc3RYTUxPdXRw
dXRVbml0VGVzdChndGVzdF94bWxfdGVzdF91dGlscy5HVGVzdFhNTFRlc3RDYXNlKToKICAgICBv
dXRwdXRfZmlsZSA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9ERUZBVUxUX09VVFBVVF9GSUxF
KQogICAgIGd0ZXN0X3Byb2dfcGF0aCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFi
bGVQYXRoKAotICAgICAgICAiZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCIpCisgICAgICAgICdndGVz
dF9ub190ZXN0X3VuaXR0ZXN0JykKICAgICB0cnk6CiAgICAgICBvcy5yZW1vdmUob3V0cHV0X2Zp
bGUpCiAgICAgZXhjZXB0IE9TRXJyb3IsIGU6CkBAIC0xNTAsNyArMjcxLDcgQEAgY2xhc3MgR1Rl
c3RYTUxPdXRwdXRVbml0VGVzdChndGVzdF94bWxfdGVzdF91dGlscy5HVGVzdFhNTFRlc3RDYXNl
KToKICAgICAgICAgcmFpc2UKIAogICAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3Mo
Ci0gICAgICAgIFtndGVzdF9wcm9nX3BhdGgsICIlcz14bWwiICUgR1RFU1RfT1VUUFVUX0ZMQUdd
LAorICAgICAgICBbZ3Rlc3RfcHJvZ19wYXRoLCAnJXM9eG1sJyAlIEdURVNUX09VVFBVVF9GTEFH
XSwKICAgICAgICAgd29ya2luZ19kaXI9Z3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCkpCiAg
ICAgc2VsZi5hc3NlcnRfKHAuZXhpdGVkKQogICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIHAuZXhp
dF9jb2RlKQpAQCAtMTYzLDYwICsyODQsOTggQEAgY2xhc3MgR1Rlc3RYTUxPdXRwdXRVbml0VGVz
dChndGVzdF94bWxfdGVzdF91dGlscy5HVGVzdFhNTFRlc3RDYXNlKToKICAgICAiIiIKIAogICAg
IHhtbF9wYXRoID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1BST0dSQU1fTkFNRSArICJvdXQueG1s
IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QUk9HUkFNX05BTUUgKyAnb3V0
LnhtbCcpCiAgICAgaWYgb3MucGF0aC5pc2ZpbGUoeG1sX3BhdGgpOgogICAgICAgb3MucmVtb3Zl
KHhtbF9wYXRoKQogCi0gICAgZ3Rlc3RfcHJvZ19wYXRoID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRU
ZXN0RXhlY3V0YWJsZVBhdGgoR1RFU1RfUFJPR1JBTV9OQU1FKQotCi0gICAgY29tbWFuZCA9IFtn
dGVzdF9wcm9nX3BhdGgsCi0gICAgICAgICAgICAgICAiJXM9eG1sOiVzIiAlIChHVEVTVF9PVVRQ
VVRfRkxBRywgeG1sX3BhdGgpLAotICAgICAgICAgICAgICAgIi0tc2h1dF9kb3duX3htbCJdCisg
ICAgY29tbWFuZCA9IFtHVEVTVF9QUk9HUkFNX1BBVEgsCisgICAgICAgICAgICAgICAnJXM9eG1s
OiVzJyAlIChHVEVTVF9PVVRQVVRfRkxBRywgeG1sX3BhdGgpLAorICAgICAgICAgICAgICAgJy0t
c2h1dF9kb3duX3htbCddCiAgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21t
YW5kKQogICAgIGlmIHAudGVybWluYXRlZF9ieV9zaWduYWw6Ci0gICAgICBzZWxmLmFzc2VydF8o
RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIiVzIHdhcyBraWxsZWQgYnkgc2lnbmFsICVkIiAl
IChndGVzdF9wcm9nX25hbWUsIHAuc2lnbmFsKSkKKyAgICAgICMgcC5zaWduYWwgaXMgYXZhaWxh
YmxlIG9ubHkgaWYgcC50ZXJtaW5hdGVkX2J5X3NpZ25hbCBpcyBUcnVlLgorICAgICAgc2VsZi5h
c3NlcnRGYWxzZSgKKyAgICAgICAgICBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsLAorICAgICAgICAg
ICclcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAlZCcgJSAoR1RFU1RfUFJPR1JBTV9OQU1FLCBwLnNp
Z25hbCkpCiAgICAgZWxzZToKICAgICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKDEsIHAuZXhpdF9jb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAg
IiclcycgZXhpdGVkIHdpdGggY29kZSAlcywgd2hpY2ggZG9lc24ndCBtYXRjaCAiCi0gICAgICAg
ICAgICAgICAgICAgICAgICAidGhlIGV4cGVjdGVkIGV4aXQgY29kZSAlcy4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAndGhlIGV4cGVjdGVkIGV4aXQgY29kZSAlcy4nCiAgICAgICAgICAgICAg
ICAgICAgICAgICAlIChjb21tYW5kLCBwLmV4aXRfY29kZSwgMSkpCiAKICAgICBzZWxmLmFzc2Vy
dF8obm90IG9zLnBhdGguaXNmaWxlKHhtbF9wYXRoKSkKIAorICBkZWYgdGVzdEZpbHRlcmVkVGVz
dFhtbE91dHB1dChzZWxmKToKKyAgICAiIiJWZXJpZmllcyBYTUwgb3V0cHV0IHdoZW4gYSBmaWx0
ZXIgaXMgYXBwbGllZC4KIAotICBkZWYgX1Rlc3RYbWxPdXRwdXQoc2VsZiwgZ3Rlc3RfcHJvZ19u
YW1lLCBleHBlY3RlZF94bWwsIGV4cGVjdGVkX2V4aXRfY29kZSk6CisgICAgUnVucyBhIHRlc3Qg
cHJvZ3JhbSB0aGF0IGV4ZWN1dGVzIG9ubHkgc29tZSB0ZXN0cyBhbmQgdmVyaWZpZXMgdGhhdAor
ICAgIG5vbi1zZWxlY3RlZCB0ZXN0cyBkbyBub3Qgc2hvdyB1cCBpbiB0aGUgWE1MIG91dHB1dC4K
ICAgICAiIiIKLSAgICBBc3NlcnRzIHRoYXQgdGhlIFhNTCBkb2N1bWVudCBnZW5lcmF0ZWQgYnkg
cnVubmluZyB0aGUgcHJvZ3JhbQotICAgIGd0ZXN0X3Byb2dfbmFtZSBtYXRjaGVzIGV4cGVjdGVk
X3htbCwgYSBzdHJpbmcgY29udGFpbmluZyBhbm90aGVyCi0gICAgWE1MIGRvY3VtZW50LiAgRnVy
dGhlcm1vcmUsIHRoZSBwcm9ncmFtJ3MgZXhpdCBjb2RlIG11c3QgYmUKLSAgICBleHBlY3RlZF9l
eGl0X2NvZGUuCisKKyAgICBzZWxmLl9UZXN0WG1sT3V0cHV0KEdURVNUX1BST0dSQU1fTkFNRSwg
RVhQRUNURURfRklMVEVSRURfVEVTVF9YTUwsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICBl
eHRyYV9hcmdzPVsnJXM9U3VjY2Vzc2Z1bFRlc3QuKicgJSBHVEVTVF9GSUxURVJfRkxBR10pCisK
KyAgZGVmIHRlc3RTaGFyZGVkVGVzdFhtbE91dHB1dChzZWxmKToKKyAgICAiIiJWZXJpZmllcyBY
TUwgb3V0cHV0IHdoZW4gcnVuIHVzaW5nIG11bHRpcGxlIHNoYXJkcy4KKworICAgIFJ1bnMgYSB0
ZXN0IHByb2dyYW0gdGhhdCBleGVjdXRlcyBvbmx5IG9uZSBzaGFyZCBhbmQgdmVyaWZpZXMgdGhh
dCB0ZXN0cworICAgIGZyb20gb3RoZXIgc2hhcmRzIGRvIG5vdCBzaG93IHVwIGluIHRoZSBYTUwg
b3V0cHV0LgorICAgICIiIgorCisgICAgc2VsZi5fVGVzdFhtbE91dHB1dCgKKyAgICAgICAgR1RF
U1RfUFJPR1JBTV9OQU1FLAorICAgICAgICBFWFBFQ1RFRF9TSEFSREVEX1RFU1RfWE1MLAorICAg
ICAgICAwLAorICAgICAgICBleHRyYV9lbnY9e1NIQVJEX0lOREVYX0VOVl9WQVI6ICcwJywKKyAg
ICAgICAgICAgICAgICAgICBUT1RBTF9TSEFSRFNfRU5WX1ZBUjogJzEwJ30pCisKKyAgZGVmIF9H
ZXRYbWxPdXRwdXQoc2VsZiwgZ3Rlc3RfcHJvZ19uYW1lLCBleHRyYV9hcmdzLCBleHRyYV9lbnYs
CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZSk6CisgICAgIiIiCisgICAg
UmV0dXJucyB0aGUgeG1sIG91dHB1dCBnZW5lcmF0ZWQgYnkgcnVubmluZyB0aGUgcHJvZ3JhbSBn
dGVzdF9wcm9nX25hbWUuCisgICAgRnVydGhlcm1vcmUsIHRoZSBwcm9ncmFtJ3MgZXhpdCBjb2Rl
IG11c3QgYmUgZXhwZWN0ZWRfZXhpdF9jb2RlLgogICAgICIiIgogICAgIHhtbF9wYXRoID0gb3Mu
cGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGd0ZXN0X3Byb2dfbmFtZSArICJvdXQueG1sIikKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBndGVzdF9wcm9nX25hbWUgKyAnb3V0LnhtbCcpCiAgICAgZ3Rlc3RfcHJv
Z19wYXRoID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoZ3Rlc3RfcHJv
Z19uYW1lKQogCi0gICAgY29tbWFuZCA9IFtndGVzdF9wcm9nX3BhdGgsICIlcz14bWw6JXMiICUg
KEdURVNUX09VVFBVVF9GTEFHLCB4bWxfcGF0aCldCi0gICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
U3VicHJvY2Vzcyhjb21tYW5kKQorICAgIGNvbW1hbmQgPSAoW2d0ZXN0X3Byb2dfcGF0aCwgJyVz
PXhtbDolcycgJSAoR1RFU1RfT1VUUFVUX0ZMQUcsIHhtbF9wYXRoKV0gKworICAgICAgICAgICAg
ICAgZXh0cmFfYXJncykKKyAgICBlbnZpcm9uX2NvcHkgPSBvcy5lbnZpcm9uLmNvcHkoKQorICAg
IGlmIGV4dHJhX2VudjoKKyAgICAgIGVudmlyb25fY29weS51cGRhdGUoZXh0cmFfZW52KQorICAg
IHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCwgZW52PWVudmlyb25fY29w
eSkKKwogICAgIGlmIHAudGVybWluYXRlZF9ieV9zaWduYWw6CiAgICAgICBzZWxmLmFzc2VydF8o
RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIiVzIHdhcyBraWxsZWQgYnkgc2lnbmFsICVkIiAl
IChndGVzdF9wcm9nX25hbWUsIHAuc2lnbmFsKSkKKyAgICAgICAgICAgICAgICAgICAnJXMgd2Fz
IGtpbGxlZCBieSBzaWduYWwgJWQnICUgKGd0ZXN0X3Byb2dfbmFtZSwgcC5zaWduYWwpKQogICAg
IGVsc2U6CiAgICAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCiAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhleHBlY3RlZF9leGl0X2NvZGUsIHAuZXhpdF9jb2RlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIiclcycgZXhpdGVkIHdpdGggY29kZSAlcywgd2hpY2ggZG9lc24ndCBtYXRjaCAiCi0g
ICAgICAgICAgICAgICAgICAgICAgICAidGhlIGV4cGVjdGVkIGV4aXQgY29kZSAlcy4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAndGhlIGV4cGVjdGVkIGV4aXQgY29kZSAlcy4nCiAgICAgICAg
ICAgICAgICAgICAgICAgICAlIChjb21tYW5kLCBwLmV4aXRfY29kZSwgZXhwZWN0ZWRfZXhpdF9j
b2RlKSkKKyAgICBhY3R1YWwgPSBtaW5pZG9tLnBhcnNlKHhtbF9wYXRoKQorICAgIHJldHVybiBh
Y3R1YWwKIAorICBkZWYgX1Rlc3RYbWxPdXRwdXQoc2VsZiwgZ3Rlc3RfcHJvZ19uYW1lLCBleHBl
Y3RlZF94bWwsCisgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGUsIGV4dHJh
X2FyZ3M9Tm9uZSwgZXh0cmFfZW52PU5vbmUpOgorICAgICIiIgorICAgIEFzc2VydHMgdGhhdCB0
aGUgWE1MIGRvY3VtZW50IGdlbmVyYXRlZCBieSBydW5uaW5nIHRoZSBwcm9ncmFtCisgICAgZ3Rl
c3RfcHJvZ19uYW1lIG1hdGNoZXMgZXhwZWN0ZWRfeG1sLCBhIHN0cmluZyBjb250YWluaW5nIGFu
b3RoZXIKKyAgICBYTUwgZG9jdW1lbnQuICBGdXJ0aGVybW9yZSwgdGhlIHByb2dyYW0ncyBleGl0
IGNvZGUgbXVzdCBiZQorICAgIGV4cGVjdGVkX2V4aXRfY29kZS4KKyAgICAiIiIKKworICAgIGFj
dHVhbCA9IHNlbGYuX0dldFhtbE91dHB1dChndGVzdF9wcm9nX25hbWUsIGV4dHJhX2FyZ3Mgb3Ig
W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2VudiBvciB7fSwgZXhw
ZWN0ZWRfZXhpdF9jb2RlKQogICAgIGV4cGVjdGVkID0gbWluaWRvbS5wYXJzZVN0cmluZyhleHBl
Y3RlZF94bWwpCi0gICAgYWN0dWFsICAgPSBtaW5pZG9tLnBhcnNlKHhtbF9wYXRoKQogICAgIHNl
bGYuTm9ybWFsaXplWG1sKGFjdHVhbC5kb2N1bWVudEVsZW1lbnQpCiAgICAgc2VsZi5Bc3NlcnRF
cXVpdmFsZW50Tm9kZXMoZXhwZWN0ZWQuZG9jdW1lbnRFbGVtZW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFjdHVhbC5kb2N1bWVudEVsZW1lbnQpCiAgICAgZXhwZWN0ZWQudW5s
aW5rKCkKLSAgICBhY3R1YWwgIC51bmxpbmsoKQotCisgICAgYWN0dWFsLnVubGluaygpCiAKIAog
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjCmluZGV4IGZjMDdl
ZjQ2YmQ2NjdhYTkyZTVkYWY3ZjIwMmVmY2Q3NjM2NmJmOGEuLjJlZTg4MzgwMDVlZWVjMjM1NzFi
YWUzODljNzkyNjk4YzMwYzRkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYwpAQCAtMjcsOCArMjcs
NiBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0vLyBBdXRob3I6IGVlZmFj
bUBnbWFpbC5jb20gKFNlYW4gTWNhZmVlKQotCiAvLyBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0
IFhNTCBvdXRwdXQuCiAvLwogLy8gQSB1c2VyIGNhbiBzcGVjaWZ5IFhNTCBvdXRwdXQgaW4gYSBH
b29nbGUgVGVzdCBwcm9ncmFtIHRvIHJ1biB2aWEKQEAgLTM4LDEzICszNiwxNiBAQAogLy8gVGhp
cyBwcm9ncmFtIHdpbGwgYmUgaW52b2tlZCBmcm9tIGEgUHl0aG9uIHVuaXQgdGVzdC4gIERvbid0
IHJ1biBpdAogLy8gZGlyZWN0bHkuCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIHVzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7CiB1
c2luZyA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyczsKK3VzaW5nIDo6dGVzdGluZzo6VGVz
dFdpdGhQYXJhbTsKIHVzaW5nIDo6dGVzdGluZzo6VW5pdFRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6
OlRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6OlZhbHVlczsKIAotY2xhc3MgU3VjY2Vzc2Z1bFRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitjbGFzcyBTdWNjZXNzZnVsVGVzdCA6IHB1YmxpYyBU
ZXN0IHsKIH07CiAKIFRFU1RfRihTdWNjZXNzZnVsVGVzdCwgU3VjY2VlZHMpIHsKQEAgLTUyLDE0
ICs1MywxNCBAQCBURVNUX0YoU3VjY2Vzc2Z1bFRlc3QsIFN1Y2NlZWRzKSB7CiAgIEFTU0VSVF9F
USgxLCAxKTsKIH0KIAotY2xhc3MgRmFpbGVkVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
K2NsYXNzIEZhaWxlZFRlc3QgOiBwdWJsaWMgVGVzdCB7CiB9OwogCiBURVNUX0YoRmFpbGVkVGVz
dCwgRmFpbHMpIHsKICAgQVNTRVJUX0VRKDEsIDIpOwogfQogCi1jbGFzcyBEaXNhYmxlZFRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitjbGFzcyBEaXNhYmxlZFRlc3QgOiBwdWJsaWMgVGVz
dCB7CiB9OwogCiBURVNUX0YoRGlzYWJsZWRUZXN0LCBESVNBQkxFRF90ZXN0X25vdF9ydW4pIHsK
QEAgLTkxLDcgKzkyLDEwIEBAIFRFU1QoSW52YWxpZENoYXJhY3RlcnNUZXN0LCBJbnZhbGlkQ2hh
cmFjdGVyc0luTWVzc2FnZSkgewogICBGQUlMKCkgPDwgIkludmFsaWQgY2hhcmFjdGVycyBpbiBi
cmFja2V0cyBbXHgxXHgyXSI7CiB9CiAKLWNsYXNzIFByb3BlcnR5UmVjb3JkaW5nVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIFByb3BlcnR5UmVjb3JkaW5nVGVzdCA6IHB1Ymxp
YyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7IFJlY29y
ZFByb3BlcnR5KCJTZXRVcFRlc3RDYXNlIiwgInllcyIpOyB9CisgIHN0YXRpYyB2b2lkIFRlYXJE
b3duVGVzdENhc2UoKSB7IFJlY29yZFByb3BlcnR5KCJUZWFyRG93blRlc3RDYXNlIiwgImF5ZSIp
OyB9CiB9OwogCiBURVNUX0YoUHJvcGVydHlSZWNvcmRpbmdUZXN0LCBPbmVQcm9wZXJ0eSkgewpA
QCAtMTE3LDEyICsxMjEsMTIgQEAgVEVTVChOb0ZpeHR1cmVUZXN0LCBSZWNvcmRQcm9wZXJ0eSkg
ewogICBSZWNvcmRQcm9wZXJ0eSgia2V5IiwgIjEiKTsKIH0KIAotdm9pZCBFeHRlcm5hbFV0aWxp
dHlUaGF0Q2FsbHNSZWNvcmRQcm9wZXJ0eShjb25zdCBjaGFyKiBrZXksIGludCB2YWx1ZSkgewor
dm9pZCBFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0
cmluZyYga2V5LCBpbnQgdmFsdWUpIHsKICAgdGVzdGluZzo6VGVzdDo6UmVjb3JkUHJvcGVydHko
a2V5LCB2YWx1ZSk7CiB9CiAKLXZvaWQgRXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkUHJv
cGVydHkoY29uc3QgY2hhcioga2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiB2YWx1ZSkgewordm9pZCBFeHRlcm5hbFV0aWxpdHlUaGF0
Q2FsbHNSZWNvcmRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYga2V5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUp
IHsKICAgdGVzdGluZzo6VGVzdDo6UmVjb3JkUHJvcGVydHkoa2V5LCB2YWx1ZSk7CiB9CiAKQEAg
LTEzNCw2ICsxMzgsMzUgQEAgVEVTVChOb0ZpeHR1cmVUZXN0LCBFeHRlcm5hbFV0aWxpdHlUaGF0
Q2FsbHNSZWNvcmRTdHJpbmdWYWx1ZWRQcm9wZXJ0eSkgewogICBFeHRlcm5hbFV0aWxpdHlUaGF0
Q2FsbHNSZWNvcmRQcm9wZXJ0eSgia2V5X2Zvcl91dGlsaXR5X3N0cmluZyIsICIxIik7CiB9CiAK
Ky8vIFZlcmlmaWVzIHRoYXQgdGhlIHRlc3QgcGFyYW1ldGVyIHZhbHVlIGlzIG91dHB1dCBpbiB0
aGUgJ3ZhbHVlX3BhcmFtJworLy8gWE1MIGF0dHJpYnV0ZSBmb3IgdmFsdWUtcGFyYW1ldGVyaXpl
ZCB0ZXN0cy4KK2NsYXNzIFZhbHVlUGFyYW1UZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50
PiB7fTsKK1RFU1RfUChWYWx1ZVBhcmFtVGVzdCwgSGFzVmFsdWVQYXJhbUF0dHJpYnV0ZSkge30K
K1RFU1RfUChWYWx1ZVBhcmFtVGVzdCwgQW5vdGhlclRlc3RUaGF0SGFzVmFsdWVQYXJhbUF0dHJp
YnV0ZSkge30KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNpbmdsZSwgVmFsdWVQYXJhbVRlc3Qs
IFZhbHVlcygzMywgNDIpKTsKKworI2lmIEdURVNUX0hBU19UWVBFRF9URVNUCisvLyBWZXJpZmll
cyB0aGF0IHRoZSB0eXBlIHBhcmFtZXRlciBuYW1lIGlzIG91dHB1dCBpbiB0aGUgJ3R5cGVfcGFy
YW0nCisvLyBYTUwgYXR0cmlidXRlIGZvciB0eXBlZCB0ZXN0cy4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjbGFzcyBUeXBlZFRlc3QgOiBwdWJsaWMgVGVzdCB7fTsKK3R5cGVkZWYgdGVzdGluZzo6
VHlwZXM8aW50LCBsb25nPiBUeXBlZFRlc3RUeXBlczsKK1RZUEVEX1RFU1RfQ0FTRShUeXBlZFRl
c3QsIFR5cGVkVGVzdFR5cGVzKTsKK1RZUEVEX1RFU1QoVHlwZWRUZXN0LCBIYXNUeXBlUGFyYW1B
dHRyaWJ1dGUpIHt9CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19UWVBFRF9URVNUX1AKKy8vIFZl
cmlmaWVzIHRoYXQgdGhlIHR5cGUgcGFyYW1ldGVyIG5hbWUgaXMgb3V0cHV0IGluIHRoZSAndHlw
ZV9wYXJhbScKKy8vIFhNTCBhdHRyaWJ1dGUgZm9yIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlIDog
cHVibGljIFRlc3Qge307CitUWVBFRF9URVNUX0NBU0VfUChUeXBlUGFyYW1ldGVyaXplZFRlc3RD
YXNlKTsKK1RZUEVEX1RFU1RfUChUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLCBIYXNUeXBlUGFy
YW1BdHRyaWJ1dGUpIHt9CitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChUeXBlUGFyYW1ldGVy
aXplZFRlc3RDYXNlLCBIYXNUeXBlUGFyYW1BdHRyaWJ1dGUpOwordHlwZWRlZiB0ZXN0aW5nOjpU
eXBlczxpbnQsIGxvbmc+IFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2VUeXBlczsKK0lOU1RBTlRJ
QVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFNpbmdsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlVHlwZXMpOworI2VuZGlmCisKIGludCBtYWlu
KGludCBhcmdjLCBjaGFyKiogYXJndikgewogICBJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7
CiAKQEAgLTE0MSw1ICsxNzQsNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsK
ICAgICBUZXN0RXZlbnRMaXN0ZW5lcnMmIGxpc3RlbmVycyA9IFVuaXRUZXN0OjpHZXRJbnN0YW5j
ZSgpLT5saXN0ZW5lcnMoKTsKICAgICBkZWxldGUgbGlzdGVuZXJzLlJlbGVhc2UobGlzdGVuZXJz
LmRlZmF1bHRfeG1sX2dlbmVyYXRvcigpKTsKICAgfQorICB0ZXN0aW5nOjpUZXN0OjpSZWNvcmRQ
cm9wZXJ0eSgiYWRfaG9jX3Byb3BlcnR5IiwgIjQyIik7CiAgIHJldHVybiBSVU5fQUxMX1RFU1RT
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ht
bF90ZXN0X3V0aWxzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxf
dGVzdF91dGlscy5weQppbmRleCBjODNjM2I3ZWE3OWIyZDc2MmVlZDY2NWUyZDYxZGY4YjllYTA4
NDQzLi4xZTAzNTg1OTJmYjAwODRmMGE4OWMzNDM2ZmY3NTE3NDg2ODI3YWNkIDEwMDc1NQotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF90ZXN0X3V0aWxzLnB5Cisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkK
QEAgLTEsNSArMSwzIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKICMgQ29weXJpZ2h0IDIw
MDYsIEdvb2dsZSBJbmMuCiAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCkBAIC0zMSwxNiArMjks
MTEgQEAKIAogIiIiVW5pdCB0ZXN0IHV0aWxpdGllcyBmb3IgZ3Rlc3RfeG1sX291dHB1dCIiIgog
Ci1fX2F1dGhvcl9fID0gJ2VlZmFjbUBnbWFpbC5jb20gKFNlYW4gTWNhZmVlKScKLQogaW1wb3J0
IHJlCiBmcm9tIHhtbC5kb20gaW1wb3J0IG1pbmlkb20sIE5vZGUKLQogaW1wb3J0IGd0ZXN0X3Rl
c3RfdXRpbHMKIAotCi1HVEVTVF9PVVRQVVRfRkxBRyAgICAgICAgID0gIi0tZ3Rlc3Rfb3V0cHV0
IgotR1RFU1RfREVGQVVMVF9PVVRQVVRfRklMRSA9ICJ0ZXN0X2RldGFpbC54bWwiCitHVEVTVF9E
RUZBVUxUX09VVFBVVF9GSUxFID0gJ3Rlc3RfZGV0YWlsLnhtbCcKIAogY2xhc3MgR1Rlc3RYTUxU
ZXN0Q2FzZShndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKICAgIiIiCkBAIC01OCw4ICs1MSw5
IEBAIGNsYXNzIEdUZXN0WE1MVGVzdENhc2UoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CiAg
ICAgKiAgSXQgaGFzIHRoZSBzYW1lIHRhZyBuYW1lIGFzIGV4cGVjdGVkX25vZGUuCiAgICAgKiAg
SXQgaGFzIHRoZSBzYW1lIHNldCBvZiBhdHRyaWJ1dGVzIGFzIGV4cGVjdGVkX25vZGUsIGVhY2gg
d2l0aAogICAgICAgIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0
ZSBvZiBleHBlY3RlZF9ub2RlLgotICAgICAgIEFuIGV4Y2VwdGlvbiBpcyBhbnkgYXR0cmlidXRl
IG5hbWVkICJ0aW1lIiwgd2hpY2ggbmVlZHMgb25seSBiZQotICAgICAgIGNvbnZlcnRpYmxlIHRv
IGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyLgorICAgICAgIEV4Y2VwdGlvbnMgYXJlIGFueSBhdHRy
aWJ1dGUgbmFtZWQgInRpbWUiLCB3aGljaCBuZWVkcyBvbmx5IGJlCisgICAgICAgY29udmVydGli
bGUgdG8gYSBmbG9hdGluZy1wb2ludCBudW1iZXIgYW5kIGFueSBhdHRyaWJ1dGUgbmFtZWQKKyAg
ICAgICAidHlwZV9wYXJhbSIgd2hpY2ggb25seSBoYXMgdG8gYmUgbm9uLWVtcHR5LgogICAgICog
IEl0IGhhcyBhbiBlcXVpdmFsZW50IHNldCBvZiBjaGlsZCBub2RlcyAoaW5jbHVkaW5nIGVsZW1l
bnRzIGFuZAogICAgICAgIENEQVRBIHNlY3Rpb25zKSBhcyBleHBlY3RlZF9ub2RlLiAgTm90ZSB0
aGF0IHdlIGlnbm9yZSB0aGUKICAgICAgICBvcmRlciBvZiB0aGUgY2hpbGRyZW4gYXMgdGhleSBh
cmUgbm90IGd1YXJhbnRlZWQgdG8gYmUgaW4gYW55CkBAIC03OSwyMyArNzMsMjcgQEAgY2xhc3Mg
R1Rlc3RYTUxUZXN0Q2FzZShndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKICAgICBhY3R1YWxf
YXR0cmlidXRlcyAgID0gYWN0dWFsX25vZGUgIC5hdHRyaWJ1dGVzCiAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoCiAgICAgICAgIGV4cGVjdGVkX2F0dHJpYnV0ZXMubGVuZ3RoLCBhY3R1YWxfYXR0cmli
dXRlcy5sZW5ndGgsCi0gICAgICAgICJhdHRyaWJ1dGUgbnVtYmVycyBkaWZmZXIgaW4gZWxlbWVu
dCAiICsgYWN0dWFsX25vZGUudGFnTmFtZSkKKyAgICAgICAgJ2F0dHJpYnV0ZSBudW1iZXJzIGRp
ZmZlciBpbiBlbGVtZW50ICVzOlxuRXhwZWN0ZWQ6ICVyXG5BY3R1YWw6ICVyJyAlICgKKyAgICAg
ICAgICAgIGFjdHVhbF9ub2RlLnRhZ05hbWUsIGV4cGVjdGVkX2F0dHJpYnV0ZXMua2V5cygpLAor
ICAgICAgICAgICAgYWN0dWFsX2F0dHJpYnV0ZXMua2V5cygpKSkKICAgICBmb3IgaSBpbiByYW5n
ZShleHBlY3RlZF9hdHRyaWJ1dGVzLmxlbmd0aCk6CiAgICAgICBleHBlY3RlZF9hdHRyID0gZXhw
ZWN0ZWRfYXR0cmlidXRlcy5pdGVtKGkpCiAgICAgICBhY3R1YWxfYXR0ciAgID0gYWN0dWFsX2F0
dHJpYnV0ZXMuZ2V0KGV4cGVjdGVkX2F0dHIubmFtZSkKICAgICAgIHNlbGYuYXNzZXJ0XygKICAg
ICAgICAgICBhY3R1YWxfYXR0ciBpcyBub3QgTm9uZSwKLSAgICAgICAgICAiZXhwZWN0ZWQgYXR0
cmlidXRlICVzIG5vdCBmb3VuZCBpbiBlbGVtZW50ICVzIiAlCisgICAgICAgICAgJ2V4cGVjdGVk
IGF0dHJpYnV0ZSAlcyBub3QgZm91bmQgaW4gZWxlbWVudCAlcycgJQogICAgICAgICAgIChleHBl
Y3RlZF9hdHRyLm5hbWUsIGFjdHVhbF9ub2RlLnRhZ05hbWUpKQotICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoZXhwZWN0ZWRfYXR0ci52YWx1ZSwgYWN0dWFsX2F0dHIudmFsdWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAiIHZhbHVlcyBvZiBhdHRyaWJ1dGUgJXMgaW4gZWxlbWVudCAlcyBkaWZm
ZXIiICUKLSAgICAgICAgICAgICAgICAgICAgICAgIChleHBlY3RlZF9hdHRyLm5hbWUsIGFjdHVh
bF9ub2RlLnRhZ05hbWUpKQorICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisgICAgICAgICAgZXhw
ZWN0ZWRfYXR0ci52YWx1ZSwgYWN0dWFsX2F0dHIudmFsdWUsCisgICAgICAgICAgJyB2YWx1ZXMg
b2YgYXR0cmlidXRlICVzIGluIGVsZW1lbnQgJXMgZGlmZmVyOiAlcyB2cyAlcycgJQorICAgICAg
ICAgIChleHBlY3RlZF9hdHRyLm5hbWUsIGFjdHVhbF9ub2RlLnRhZ05hbWUsCisgICAgICAgICAg
IGV4cGVjdGVkX2F0dHIudmFsdWUsIGFjdHVhbF9hdHRyLnZhbHVlKSkKIAogICAgIGV4cGVjdGVk
X2NoaWxkcmVuID0gc2VsZi5fR2V0Q2hpbGRyZW4oZXhwZWN0ZWRfbm9kZSkKICAgICBhY3R1YWxf
Y2hpbGRyZW4gPSBzZWxmLl9HZXRDaGlsZHJlbihhY3R1YWxfbm9kZSkKICAgICBzZWxmLmFzc2Vy
dEVxdWFscygKICAgICAgICAgbGVuKGV4cGVjdGVkX2NoaWxkcmVuKSwgbGVuKGFjdHVhbF9jaGls
ZHJlbiksCi0gICAgICAgICJudW1iZXIgb2YgY2hpbGQgZWxlbWVudHMgZGlmZmVyIGluIGVsZW1l
bnQgIiArIGFjdHVhbF9ub2RlLnRhZ05hbWUpCisgICAgICAgICdudW1iZXIgb2YgY2hpbGQgZWxl
bWVudHMgZGlmZmVyIGluIGVsZW1lbnQgJyArIGFjdHVhbF9ub2RlLnRhZ05hbWUpCiAgICAgZm9y
IGNoaWxkX2lkLCBjaGlsZCBpbiBleHBlY3RlZF9jaGlsZHJlbi5pdGVyaXRlbXMoKToKICAgICAg
IHNlbGYuYXNzZXJ0XyhjaGlsZF9pZCBpbiBhY3R1YWxfY2hpbGRyZW4sCiAgICAgICAgICAgICAg
ICAgICAgJzwlcz4gaXMgbm90IGluIDwlcz4gKGluIGVsZW1lbnQgJXMpJyAlCkBAIC0xMDMsMTkg
KzEwMSwyMiBAQCBjbGFzcyBHVGVzdFhNTFRlc3RDYXNlKGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENh
c2UpOgogICAgICAgc2VsZi5Bc3NlcnRFcXVpdmFsZW50Tm9kZXMoY2hpbGQsIGFjdHVhbF9jaGls
ZHJlbltjaGlsZF9pZF0pCiAKICAgaWRlbnRpZnlpbmdfYXR0cmlidXRlID0gewotICAgICJ0ZXN0
c3VpdGVzIjogIm5hbWUiLAotICAgICJ0ZXN0c3VpdGUiOiAibmFtZSIsCi0gICAgInRlc3RjYXNl
IjogICJuYW1lIiwKLSAgICAiZmFpbHVyZSI6ICAgIm1lc3NhZ2UiLAotICAgIH0KKyAgICAgICd0
ZXN0c3VpdGVzJzogJ25hbWUnLAorICAgICAgJ3Rlc3RzdWl0ZSc6ICduYW1lJywKKyAgICAgICd0
ZXN0Y2FzZSc6ICduYW1lJywKKyAgICAgICdmYWlsdXJlJzogJ21lc3NhZ2UnLAorICAgICAgJ3By
b3BlcnR5JzogJ25hbWUnLAorICB9CiAKICAgZGVmIF9HZXRDaGlsZHJlbihzZWxmLCBlbGVtZW50
KToKICAgICAiIiIKICAgICBGZXRjaGVzIGFsbCBvZiB0aGUgY2hpbGQgbm9kZXMgb2YgZWxlbWVu
dCwgYSBET00gRWxlbWVudCBvYmplY3QuCiAgICAgUmV0dXJucyB0aGVtIGFzIHRoZSB2YWx1ZXMg
b2YgYSBkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBJRHMgb2YgdGhlCi0gICAgY2hpbGRyZW4uICBG
b3IgPHRlc3RzdWl0ZXM+LCA8dGVzdHN1aXRlPiBhbmQgPHRlc3RjYXNlPiBlbGVtZW50cywgdGhl
IElECi0gICAgaXMgdGhlIHZhbHVlIG9mIHRoZWlyICJuYW1lIiBhdHRyaWJ1dGU7IGZvciA8ZmFp
bHVyZT4gZWxlbWVudHMsIGl0IGlzCi0gICAgdGhlIHZhbHVlIG9mIHRoZSAibWVzc2FnZSIgYXR0
cmlidXRlOyBDREFUQSBzZWN0aW9ucyBhbmQgbm9uLXdoaXRlc3BhY2UKKyAgICBjaGlsZHJlbi4g
IEZvciA8dGVzdHN1aXRlcz4sIDx0ZXN0c3VpdGU+LCA8dGVzdGNhc2U+LCBhbmQgPHByb3BlcnR5
PgorICAgIGVsZW1lbnRzLCB0aGUgSUQgaXMgdGhlIHZhbHVlIG9mIHRoZWlyICJuYW1lIiBhdHRy
aWJ1dGU7IGZvciA8ZmFpbHVyZT4KKyAgICBlbGVtZW50cywgaXQgaXMgdGhlIHZhbHVlIG9mIHRo
ZSAibWVzc2FnZSIgYXR0cmlidXRlOyBmb3IgPHByb3BlcnRpZXM+CisgICAgZWxlbWVudHMsIGl0
IGlzIHRoZSB2YWx1ZSBvZiB0aGVpciBwYXJlbnQncyAibmFtZSIgYXR0cmlidXRlIHBsdXMgdGhl
CisgICAgbGl0ZXJhbCBzdHJpbmcgInByb3BlcnRpZXMiOyBDREFUQSBzZWN0aW9ucyBhbmQgbm9u
LXdoaXRlc3BhY2UKICAgICB0ZXh0IG5vZGVzIGFyZSBjb25jYXRlbmF0ZWQgaW50byBhIHNpbmds
ZSBDREFUQSBzZWN0aW9uIHdpdGggSUQKICAgICAiZGV0YWlsIi4gIEFuIGV4Y2VwdGlvbiBpcyBy
YWlzZWQgaWYgYW55IGVsZW1lbnQgb3RoZXIgdGhhbiB0aGUgYWJvdmUKICAgICBmb3VyIGlzIGVu
Y291bnRlcmVkLCBpZiB0d28gY2hpbGQgZWxlbWVudHMgd2l0aCB0aGUgc2FtZSBpZGVudGlmeWlu
ZwpAQCAtMTI1LDIxICsxMjYsMjcgQEAgY2xhc3MgR1Rlc3RYTUxUZXN0Q2FzZShndGVzdF90ZXN0
X3V0aWxzLlRlc3RDYXNlKToKICAgICBjaGlsZHJlbiA9IHt9CiAgICAgZm9yIGNoaWxkIGluIGVs
ZW1lbnQuY2hpbGROb2RlczoKICAgICAgIGlmIGNoaWxkLm5vZGVUeXBlID09IE5vZGUuRUxFTUVO
VF9OT0RFOgotICAgICAgICBzZWxmLmFzc2VydF8oY2hpbGQudGFnTmFtZSBpbiBzZWxmLmlkZW50
aWZ5aW5nX2F0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICJFbmNvdW50ZXJlZCB1bmtu
b3duIGVsZW1lbnQgPCVzPiIgJSBjaGlsZC50YWdOYW1lKQotICAgICAgICBjaGlsZElEID0gY2hp
bGQuZ2V0QXR0cmlidXRlKHNlbGYuaWRlbnRpZnlpbmdfYXR0cmlidXRlW2NoaWxkLnRhZ05hbWVd
KQotICAgICAgICBzZWxmLmFzc2VydF8oY2hpbGRJRCBub3QgaW4gY2hpbGRyZW4pCi0gICAgICAg
IGNoaWxkcmVuW2NoaWxkSURdID0gY2hpbGQKKyAgICAgICAgaWYgY2hpbGQudGFnTmFtZSA9PSAn
cHJvcGVydGllcyc6CisgICAgICAgICAgc2VsZi5hc3NlcnRfKGNoaWxkLnBhcmVudE5vZGUgaXMg
bm90IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICdFbmNvdW50ZXJlZCA8cHJvcGVydGll
cz4gZWxlbWVudCB3aXRob3V0IGEgcGFyZW50JykKKyAgICAgICAgICBjaGlsZF9pZCA9IGNoaWxk
LnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKCduYW1lJykgKyAnLXByb3BlcnRpZXMnCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgc2VsZi5hc3NlcnRfKGNoaWxkLnRhZ05hbWUgaW4gc2VsZi5pZGVu
dGlmeWluZ19hdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICdFbmNvdW50ZXJlZCB1
bmtub3duIGVsZW1lbnQgPCVzPicgJSBjaGlsZC50YWdOYW1lKQorICAgICAgICAgIGNoaWxkX2lk
ID0gY2hpbGQuZ2V0QXR0cmlidXRlKAorICAgICAgICAgICAgICBzZWxmLmlkZW50aWZ5aW5nX2F0
dHJpYnV0ZVtjaGlsZC50YWdOYW1lXSkKKyAgICAgICAgc2VsZi5hc3NlcnRfKGNoaWxkX2lkIG5v
dCBpbiBjaGlsZHJlbikKKyAgICAgICAgY2hpbGRyZW5bY2hpbGRfaWRdID0gY2hpbGQKICAgICAg
IGVsaWYgY2hpbGQubm9kZVR5cGUgaW4gW05vZGUuVEVYVF9OT0RFLCBOb2RlLkNEQVRBX1NFQ1RJ
T05fTk9ERV06Ci0gICAgICAgIGlmICJkZXRhaWwiIG5vdCBpbiBjaGlsZHJlbjoKKyAgICAgICAg
aWYgJ2RldGFpbCcgbm90IGluIGNoaWxkcmVuOgogICAgICAgICAgIGlmIChjaGlsZC5ub2RlVHlw
ZSA9PSBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERSBvcgogICAgICAgICAgICAgICBub3QgY2hpbGQu
bm9kZVZhbHVlLmlzc3BhY2UoKSk6Ci0gICAgICAgICAgICBjaGlsZHJlblsiZGV0YWlsIl0gPSBj
aGlsZC5vd25lckRvY3VtZW50LmNyZWF0ZUNEQVRBU2VjdGlvbigKKyAgICAgICAgICAgIGNoaWxk
cmVuWydkZXRhaWwnXSA9IGNoaWxkLm93bmVyRG9jdW1lbnQuY3JlYXRlQ0RBVEFTZWN0aW9uKAog
ICAgICAgICAgICAgICAgIGNoaWxkLm5vZGVWYWx1ZSkKICAgICAgICAgZWxzZToKLSAgICAgICAg
ICBjaGlsZHJlblsiZGV0YWlsIl0ubm9kZVZhbHVlICs9IGNoaWxkLm5vZGVWYWx1ZQorICAgICAg
ICAgIGNoaWxkcmVuWydkZXRhaWwnXS5ub2RlVmFsdWUgKz0gY2hpbGQubm9kZVZhbHVlCiAgICAg
ICBlbHNlOgotICAgICAgICBzZWxmLmZhaWwoIkVuY291bnRlcmVkIHVuZXhwZWN0ZWQgbm9kZSB0
eXBlICVkIiAlIGNoaWxkLm5vZGVUeXBlKQorICAgICAgICBzZWxmLmZhaWwoJ0VuY291bnRlcmVk
IHVuZXhwZWN0ZWQgbm9kZSB0eXBlICVkJyAlIGNoaWxkLm5vZGVUeXBlKQogICAgIHJldHVybiBj
aGlsZHJlbgogCiAgIGRlZiBOb3JtYWxpemVYbWwoc2VsZiwgZWxlbWVudCk6CkBAIC0xNTAsMjMg
KzE1Nyw0MCBAQCBjbGFzcyBHVGVzdFhNTFRlc3RDYXNlKGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENh
c2UpOgogICAgICogIFRoZSAidGltZSIgYXR0cmlidXRlIG9mIDx0ZXN0c3VpdGVzPiwgPHRlc3Rz
dWl0ZT4gYW5kIDx0ZXN0Y2FzZT4KICAgICAgICBlbGVtZW50cyBpcyByZXBsYWNlZCB3aXRoIGEg
c2luZ2xlIGFzdGVyaXNrLCBpZiBpdCBjb250YWlucwogICAgICAgIG9ubHkgZGlnaXQgY2hhcmFj
dGVycy4KLSAgICAqICBUaGUgbGluZSBudW1iZXIgcmVwb3J0ZWQgaW4gdGhlIGZpcnN0IGxpbmUg
b2YgdGhlICJtZXNzYWdlIgotICAgICAgIGF0dHJpYnV0ZSBvZiA8ZmFpbHVyZT4gZWxlbWVudHMg
aXMgcmVwbGFjZWQgd2l0aCBhIHNpbmdsZSBhc3Rlcmlzay4KKyAgICAqICBUaGUgInRpbWVzdGFt
cCIgYXR0cmlidXRlIG9mIDx0ZXN0c3VpdGVzPiBlbGVtZW50cyBpcyByZXBsYWNlZCB3aXRoIGEK
KyAgICAgICBzaW5nbGUgYXN0ZXJpc2ssIGlmIGl0IGNvbnRhaW5zIGEgdmFsaWQgSVNPODYwMSBk
YXRldGltZSB2YWx1ZS4KKyAgICAqICBUaGUgInR5cGVfcGFyYW0iIGF0dHJpYnV0ZSBvZiA8dGVz
dGNhc2U+IGVsZW1lbnRzIGlzIHJlcGxhY2VkIHdpdGggYQorICAgICAgIHNpbmdsZSBhc3Rlcmlz
ayAoaWYgaXQgc24gbm9uLWVtcHR5KSBhcyBpdCBpcyB0aGUgdHlwZSBuYW1lIHJldHVybmVkCisg
ICAgICAgYnkgdGhlIGNvbXBpbGVyIGFuZCBpcyBwbGF0Zm9ybSBkZXBlbmRlbnQuCisgICAgKiAg
VGhlIGxpbmUgaW5mbyByZXBvcnRlZCBpbiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgIm1lc3NhZ2Ui
CisgICAgICAgYXR0cmlidXRlIGFuZCBDREFUQSBzZWN0aW9uIG9mIDxmYWlsdXJlPiBlbGVtZW50
cyBpcyByZXBsYWNlZCB3aXRoIHRoZQorICAgICAgIGZpbGUncyBiYXNlbmFtZSBhbmQgYSBzaW5n
bGUgYXN0ZXJpc2sgZm9yIHRoZSBsaW5lIG51bWJlci4KICAgICAqICBUaGUgZGlyZWN0b3J5IG5h
bWVzIGluIGZpbGUgcGF0aHMgYXJlIHJlbW92ZWQuCiAgICAgKiAgVGhlIHN0YWNrIHRyYWNlcyBh
cmUgcmVtb3ZlZC4KICAgICAiIiIKIAotICAgIGlmIGVsZW1lbnQudGFnTmFtZSBpbiAoInRlc3Rz
dWl0ZXMiLCAidGVzdHN1aXRlIiwgInRlc3RjYXNlIik6Ci0gICAgICB0aW1lID0gZWxlbWVudC5n
ZXRBdHRyaWJ1dGVOb2RlKCJ0aW1lIikKLSAgICAgIHRpbWUudmFsdWUgPSByZS5zdWIociJeXGQr
KFwuXGQrKT8kIiwgIioiLCB0aW1lLnZhbHVlKQotICAgIGVsaWYgZWxlbWVudC50YWdOYW1lID09
ICJmYWlsdXJlIjoKKyAgICBpZiBlbGVtZW50LnRhZ05hbWUgPT0gJ3Rlc3RzdWl0ZXMnOgorICAg
ICAgdGltZXN0YW1wID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKCd0aW1lc3RhbXAnKQorICAg
ICAgdGltZXN0YW1wLnZhbHVlID0gcmUuc3ViKHInXlxkezR9LVxkXGQtXGRcZFRcZFxkOlxkXGQ6
XGRcZCQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcqJywgdGltZXN0YW1wLnZh
bHVlKQorICAgIGlmIGVsZW1lbnQudGFnTmFtZSBpbiAoJ3Rlc3RzdWl0ZXMnLCAndGVzdHN1aXRl
JywgJ3Rlc3RjYXNlJyk6CisgICAgICB0aW1lID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKCd0
aW1lJykKKyAgICAgIHRpbWUudmFsdWUgPSByZS5zdWIocideXGQrKFwuXGQrKT8kJywgJyonLCB0
aW1lLnZhbHVlKQorICAgICAgdHlwZV9wYXJhbSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlTm9kZSgn
dHlwZV9wYXJhbScpCisgICAgICBpZiB0eXBlX3BhcmFtIGFuZCB0eXBlX3BhcmFtLnZhbHVlOgor
ICAgICAgICB0eXBlX3BhcmFtLnZhbHVlID0gJyonCisgICAgZWxpZiBlbGVtZW50LnRhZ05hbWUg
PT0gJ2ZhaWx1cmUnOgorICAgICAgc291cmNlX2xpbmVfcGF0ID0gcideLipbL1xcXSguKjopXGQr
XG4nCisgICAgICAjIFJlcGxhY2VzIHRoZSBzb3VyY2UgbGluZSBpbmZvcm1hdGlvbiB3aXRoIGEg
bm9ybWFsaXplZCBmb3JtLgorICAgICAgbWVzc2FnZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlTm9k
ZSgnbWVzc2FnZScpCisgICAgICBtZXNzYWdlLnZhbHVlID0gcmUuc3ViKHNvdXJjZV9saW5lX3Bh
dCwgJ1xcMSpcbicsIG1lc3NhZ2UudmFsdWUpCiAgICAgICBmb3IgY2hpbGQgaW4gZWxlbWVudC5j
aGlsZE5vZGVzOgogICAgICAgICBpZiBjaGlsZC5ub2RlVHlwZSA9PSBOb2RlLkNEQVRBX1NFQ1RJ
T05fTk9ERToKLSAgICAgICAgICAjIFJlbW92ZXMgdGhlIHNvdXJjZSBsaW5lIG51bWJlci4KLSAg
ICAgICAgICBjZGF0YSA9IHJlLnN1YihyIl4uKlsvXFxdKC4qOilcZCtcbiIsICJcXDEqXG4iLCBj
aGlsZC5ub2RlVmFsdWUpCisgICAgICAgICAgIyBSZXBsYWNlcyB0aGUgc291cmNlIGxpbmUgaW5m
b3JtYXRpb24gd2l0aCBhIG5vcm1hbGl6ZWQgZm9ybS4KKyAgICAgICAgICBjZGF0YSA9IHJlLnN1
Yihzb3VyY2VfbGluZV9wYXQsICdcXDEqXG4nLCBjaGlsZC5ub2RlVmFsdWUpCiAgICAgICAgICAg
IyBSZW1vdmVzIHRoZSBhY3R1YWwgc3RhY2sgdHJhY2UuCi0gICAgICAgICAgY2hpbGQubm9kZVZh
bHVlID0gcmUuc3ViKHIiXG5TdGFjayB0cmFjZTpcbigufFxuKSoiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiIiwgY2RhdGEpCisgICAgICAgICAgY2hpbGQubm9kZVZhbHVl
ID0gcmUuc3ViKHInU3RhY2sgdHJhY2U6XG4oLnxcbikqJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ1N0YWNrIHRyYWNlOlxuKicsIGNkYXRhKQogICAgIGZvciBjaGlsZCBp
biBlbGVtZW50LmNoaWxkTm9kZXM6CiAgICAgICBpZiBjaGlsZC5ub2RlVHlwZSA9PSBOb2RlLkVM
RU1FTlRfTk9ERToKICAgICAgICAgc2VsZi5Ob3JtYWxpemVYbWwoY2hpbGQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3Byb2R1Y3Rpb24uY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L3Byb2R1Y3Rpb24uY2MKaW5kZXggOGI4YTQwYjQ0ZTliNDFmNGMy
OWQ3NTUyNjkwODU2OGFmMjM3OTEyZC4uMGY2OWY2ZGJkMmUyNmEzYTliZGY3NTZiNDgwNzM3YTRl
ZjQyMThkNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9kdWN0
aW9uLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5jYwpA
QCAtMjYsMTAgKzI2LDkgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKwogLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikK
LS8vCi0vLyBUaGlzIGlzIHBhcnQgb2YgdGhlIHVuaXQgdGVzdCBmb3IgaW5jbHVkZS9ndGVzdC9n
dGVzdF9wcm9kLmguCisvLyBUaGlzIGlzIHBhcnQgb2YgdGhlIHVuaXQgdGVzdCBmb3IgZ3Rlc3Rf
cHJvZC5oLgogCiAjaW5jbHVkZSAicHJvZHVjdGlvbi5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3Byb2R1Y3Rpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvcHJvZHVjdGlvbi5oCmluZGV4IDhmMTZmZmZhMjQxNmM1NzE1M2ZhYjNlMDk3ZDEz
NGFmMWZiNGE5YmMuLjU0MjcyM2I3MDg3Mzg3ZDRmYjUyOWZjMDdhNjg4YmMxYzhkNzhiMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5oCkBAIC0yNiwxNSArMjYs
MTQgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwog
Ly8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBUaGlz
IGlzIHBhcnQgb2YgdGhlIHVuaXQgdGVzdCBmb3IgaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmgu
CisvLyBUaGlzIGlzIHBhcnQgb2YgdGhlIHVuaXQgdGVzdCBmb3IgZ3Rlc3RfcHJvZC5oLgogCiAj
aWZuZGVmIEdURVNUX1RFU1RfUFJPRFVDVElPTl9IXwogI2RlZmluZSBHVEVTVF9URVNUX1BST0RV
Q1RJT05fSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0X3Byb2QuaD4KKyNpbmNsdWRlICJndGVz
dC9ndGVzdF9wcm9kLmgiCiAKIGNsYXNzIFByaXZhdGVDb2RlIHsKICBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0c191dGlsLnB5IGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ydW5fdGVzdHNfdXRpbC5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggOWU1NzkzMWViYTJjNjExZTBhMWY2MGZmZjRmMDk1MzllMTA3Njdh
ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0c191dGlsLnB5CisrKyAvZGV2L251bGwKQEAg
LTEsNDY2ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDggR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRp
c3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlByb3ZpZGVzIGZhY2lsaXRpZXMgZm9y
IHJ1bm5pbmcgU0NvbnMtYnVpbHQgR29vZ2xlIFRlc3QvTW9jayB0ZXN0cy4iIiIKLQotCi1pbXBv
cnQgb3B0cGFyc2UKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2V0cwotaW1wb3J0IHN5
cwotCi10cnk6Ci0gICMgc3Vicm9jZXNzIG1vZHVsZSBpcyBhIHByZWZlcmFibGUgd2F5IHRvIGlu
dm9rZSBzdWJwcm9jZXNzZXMgYnV0IGl0IG1heQotICAjIG5vdCBiZSBhdmFpbGFibGUgb24gTWFj
T1MgWCAxMC40LgotICAjIFN1cHByZXNzZXMgdGhlICdJbXBvcnQgbm90IGF0IHRoZSB0b3Agb2Yg
dGhlIGZpbGUnIGxpbnQgY29tcGxhaW50LgotICAjIHB5bGludDogZGlzYWJsZS1tc2c9QzYyMDQK
LSAgaW1wb3J0IHN1YnByb2Nlc3MKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgc3VicHJvY2VzcyA9
IE5vbmUKLQotSEVMUF9NU0cgPSAiIiJSdW5zIHRoZSBzcGVjaWZpZWQgdGVzdHMgZm9yICUocHJv
ailzLgotCi1TWU5PUFNJUwotICAgICAgIHJ1bl90ZXN0cy5weSBbT1BUSU9OXS4uLiBbQlVJTERf
RElSXS4uLiBbVEVTVF0uLi4KLQotREVTQ1JJUFRJT04KLSAgICAgICBSdW5zIHRoZSBzcGVjaWZp
ZWQgdGVzdHMgKGVpdGhlciBiaW5hcnkgb3IgUHl0aG9uKSwgYW5kIHByaW50cyBhCi0gICAgICAg
c3VtbWFyeSBvZiB0aGUgcmVzdWx0cy4gQlVJTERfRElSUyB3aWxsIGJlIHVzZWQgdG8gc2VhcmNo
IGZvciB0aGUKLSAgICAgICBiaW5hcmllcy4gSWYgbm8gVEVTVHMgYXJlIHNwZWNpZmllZCwgYWxs
IGJpbmFyeSB0ZXN0cyBmb3VuZCBpbgotICAgICAgIEJVSUxEX0RJUnMgYW5kIGFsbCBQeXRob24g
dGVzdHMgZm91bmQgaW4gdGhlIGRpcmVjdG9yeSB0ZXN0LyAoaW4gdGhlCi0gICAgICAgJShwcm9q
KXMgcm9vdCkgYXJlIHJ1bi4KLQotICAgICAgIFRFU1QgaXMgYSBuYW1lIG9mIGVpdGhlciBhIGJp
bmFyeSBvciBhIFB5dGhvbiB0ZXN0LiBBIGJpbmFyeSB0ZXN0IGlzCi0gICAgICAgYW4gZXhlY3V0
YWJsZSBmaWxlIG5hbWVkICpfdGVzdCBvciAqX3VuaXR0ZXN0ICh3aXRoIHRoZSAuZXhlCi0gICAg
ICAgZXh0ZW5zaW9uIG9uIFdpbmRvd3MpIEEgUHl0aG9uIHRlc3QgaXMgYSBzY3JpcHQgbmFtZWQg
Kl90ZXN0LnB5IG9yCi0gICAgICAgKl91bml0dGVzdC5weS4KLQotT1BUSU9OUwotICAgICAgIC1o
LCAtLWhlbHAKLSAgICAgICAgICAgICAgUHJpbnQgdGhpcyBoZWxwIG1lc3NhZ2UuCi0gICAgICAg
LWMgQ09ORklHVVJBVElPTlMKLSAgICAgICAgICAgICAgU3BlY2lmeSBidWlsZCBkaXJlY3Rvcmll
cyB2aWEgYnVpbGQgY29uZmlndXJhdGlvbnMuCi0gICAgICAgICAgICAgIENPTkZJR1VSQVRJT05T
IGlzIGVpdGhlciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGJ1aWxkCi0gICAgICAgICAgICAg
IGNvbmZpZ3VyYXRpb25zIG9yICdhbGwnLiBFYWNoIGNvbmZpZ3VyYXRpb24gaXMgZXF1aXZhbGVu
dCB0bwotICAgICAgICAgICAgICBhZGRpbmcgJ3Njb25zL2J1aWxkLzxjb25maWd1cmF0aW9uPi8l
KHByb2opcy9zY29ucycgdG8gQlVJTERfRElScy4KLSAgICAgICAgICAgICAgU3BlY2lmeWluZyAt
Yz1hbGwgaXMgZXF1aXZhbGVudCB0byBwcm92aWRpbmcgYWxsIGRpcmVjdG9yaWVzCi0gICAgICAg
ICAgICAgIGxpc3RlZCBpbiBLTk9XTiBCVUlMRCBESVJFQ1RPUklFUyBzZWN0aW9uIGJlbG93Lgot
ICAgICAgIC1hCi0gICAgICAgICAgICAgIEVxdWl2YWxlbnQgdG8gLWM9YWxsCi0gICAgICAgLWIK
LSAgICAgICAgICAgICAgRXF1aXZhbGVudCB0byAtYz1hbGwgd2l0aCB0aGUgZXhjZXB0aW9uIHRo
YXQgdGhlIHNjcmlwdCB3aWxsIG5vdAotICAgICAgICAgICAgICBmYWlsIGlmIHNvbWUgb2YgdGhl
IEtOT1dOIEJVSUxEIERJUkVDVE9SSUVTIGRvIG5vdCBleGlzdHM7IHRoZQotICAgICAgICAgICAg
ICBzY3JpcHQgd2lsbCBzaW1wbHkgbm90IHJ1biB0aGUgdGVzdHMgdGhlcmUuICdiJyBzdGFuZHMg
Zm9yCi0gICAgICAgICAgICAgICdidWlsdCBkaXJlY3RvcmllcycuCi0KLVJFVFVSTiBWQUxVRQot
ICAgICAgIFJldHVybnMgMCBpZiBhbGwgdGVzdHMgYXJlIHN1Y2Nlc3NmdWw7IG90aGVyd2lzZSBy
ZXR1cm5zIDEuCi0KLUVYQU1QTEVTCi0gICAgICAgcnVuX3Rlc3RzLnB5Ci0gICAgICAgICAgICAg
IFJ1bnMgYWxsIHRlc3RzIGZvciB0aGUgZGVmYXVsdCBidWlsZCBjb25maWd1cmF0aW9uLgotICAg
ICAgIHJ1bl90ZXN0cy5weSAtYQotICAgICAgICAgICAgICBSdW5zIGFsbCB0ZXN0cyB3aXRoIGJp
bmFyaWVzIGluIEtOT1dOIEJVSUxEIERJUkVDVE9SSUVTLgotICAgICAgIHJ1bl90ZXN0cy5weSAt
YgotICAgICAgICAgICAgICBSdW5zIGFsbCB0ZXN0cyBpbiBLTk9XTiBCVUlMRCBESVJFQ1RPUklF
UyB0aGF0IGhhdmUgYmVlbgotICAgICAgICAgICAgICBidWlsdC4KLSAgICAgICBydW5fdGVzdHMu
cHkgZm9vLwotICAgICAgICAgICAgICBSdW5zIGFsbCB0ZXN0cyBpbiB0aGUgZm9vLyBkaXJlY3Rv
cnkgYW5kIGFsbCBQeXRob24gdGVzdHMgaW4KLSAgICAgICAgICAgICAgdGhlIGRpcmVjdG9yeSB0
ZXN0LiBUaGUgUHl0aG9uIHRlc3RzIGFyZSBpbnN0cnVjdGVkIHRvIGxvb2sKLSAgICAgICAgICAg
ICAgZm9yIGJpbmFyaWVzIGluIGZvby8uCi0gICAgICAgcnVuX3Rlc3RzLnB5IGJhcl90ZXN0LmV4
ZSB0ZXN0L2Jhel90ZXN0LmV4ZSBmb28vIGJhci8KLSAgICAgICAgICAgICAgUnVucyBmb28vYmFy
X3Rlc3QuZXhlLCBiYXIvYmFyX3Rlc3QuZXhlLCBmb28vYmF6X3Rlc3QuZXhlLCBhbmQKLSAgICAg
ICAgICAgICAgYmFyL2Jhel90ZXN0LmV4ZS4KLSAgICAgICBydW5fdGVzdHMucHkgZm9vIGJhciB0
ZXN0L2Zvb190ZXN0LnB5Ci0gICAgICAgICAgICAgIFJ1bnMgdGVzdC9mb29fdGVzdC5weSB0d2lj
ZSBpbnN0cnVjdGluZyBpdCB0byBsb29rIGZvciBpdHMKLSAgICAgICAgICAgICAgdGVzdCBiaW5h
cmllcyBpbiB0aGUgZGlyZWN0b3JpZXMgZm9vIGFuZCBiYXIsCi0gICAgICAgICAgICAgIGNvcnJl
c3BvbmRpbmdseS4KLQotS05PV04gQlVJTEQgRElSRUNUT1JJRVMKLSAgICAgIHJ1bl90ZXN0cy5w
eSBrbm93cyBhYm91dCBkaXJlY3RvcmllcyB3aGVyZSB0aGUgU0NvbnMgYnVpbGQgc2NyaXB0Ci0g
ICAgICBkZXBvc2l0cyBpdHMgcHJvZHVjdHMuIFRoZXNlIGFyZSB0aGUgZGlyZWN0b3JpZXMgd2hl
cmUgcnVuX3Rlc3RzLnB5Ci0gICAgICB3aWxsIGJlIGxvb2tpbmcgZm9yIGl0cyBiaW5hcmllcy4g
Q3VycmVudGx5LCAlKHByb2opcydzIFNDb25zdHJ1Y3QgZmlsZQotICAgICAgZGVmaW5lcyB0aGVt
IGFzIGZvbGxvd3MgKHRoZSBkZWZhdWx0IGJ1aWxkIGRpcmVjdG9yeSBpcyB0aGUgZmlyc3Qgb25l
Ci0gICAgICBsaXN0ZWQgaW4gZWFjaCBncm91cCk6Ci0gICAgICBPbiBXaW5kb3dzOgotICAgICAg
ICAgICAgICA8JShwcm9qKXMgcm9vdD4vc2NvbnMvYnVpbGQvd2luLWRiZzgvJShwcm9qKXMvc2Nv
bnMvCi0gICAgICAgICAgICAgIDwlKHByb2opcyByb290Pi9zY29ucy9idWlsZC93aW4tb3B0OC8l
KHByb2opcy9zY29ucy8KLSAgICAgIE9uIE1hYzoKLSAgICAgICAgICAgICAgPCUocHJvailzIHJv
b3Q+L3Njb25zL2J1aWxkL21hYy1kYmcvJShwcm9qKXMvc2NvbnMvCi0gICAgICAgICAgICAgIDwl
KHByb2opcyByb290Pi9zY29ucy9idWlsZC9tYWMtb3B0LyUocHJvailzL3Njb25zLwotICAgICAg
T24gb3RoZXIgcGxhdGZvcm1zOgotICAgICAgICAgICAgICA8JShwcm9qKXMgcm9vdD4vc2NvbnMv
YnVpbGQvZGJnLyUocHJvailzL3Njb25zLwotICAgICAgICAgICAgICA8JShwcm9qKXMgcm9vdD4v
c2NvbnMvYnVpbGQvb3B0LyUocHJvailzL3Njb25zLyIiIgotCi1JU19XSU5ET1dTID0gb3MubmFt
ZSA9PSAnbnQnCi1JU19NQUMgPSBvcy5uYW1lID09ICdwb3NpeCcgYW5kIG9zLnVuYW1lKClbMF0g
PT0gJ0RhcndpbicKLUlTX0NZR1dJTiA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBhbmQgJ0NZR1dJTicg
aW4gb3MudW5hbWUoKVswXQotCi0jIERlZmluaXRpb24gb2YgQ09ORklHUyBtdXN0IG1hdGNoIHRo
YXQgb2YgdGhlIGJ1aWxkIGRpcmVjdG9yeSBuYW1lcyBpbiB0aGUKLSMgU0NvbnN0cnVjdCBzY3Jp
cHQuIFRoZSBmaXJzdCBsaXN0IGl0ZW0gaXMgdGhlIGRlZmF1bHQgYnVpbGQgY29uZmlndXJhdGlv
bi4KLWlmIElTX1dJTkRPV1M6Ci0gIENPTkZJR1MgPSAoJ3dpbi1kYmc4JywgJ3dpbi1vcHQ4JykK
LWVsaWYgSVNfTUFDOgotICBDT05GSUdTID0gKCdtYWMtZGJnJywgJ21hYy1vcHQnKQotZWxzZToK
LSAgQ09ORklHUyA9ICgnZGJnJywgJ29wdCcpCi0KLWlmIElTX1dJTkRPV1Mgb3IgSVNfQ1lHV0lO
OgotICBQWVRIT05fVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocidfKHVuaXQpP3Rlc3RcLnB5JCcs
IHJlLklHTk9SRUNBU0UpCi0gIEJJTkFSWV9URVNUX1JFR0VYID0gcmUuY29tcGlsZShyJ18odW5p
dCk/dGVzdChcLmV4ZSk/JCcsIHJlLklHTk9SRUNBU0UpCi0gIEJJTkFSWV9URVNUX1NFQVJDSF9S
RUdFWCA9IHJlLmNvbXBpbGUocidfKHVuaXQpP3Rlc3RcLmV4ZSQnLCByZS5JR05PUkVDQVNFKQot
ZWxzZToKLSAgUFlUSE9OX1RFU1RfUkVHRVggPSByZS5jb21waWxlKHInXyh1bml0KT90ZXN0XC5w
eSQnKQotICBCSU5BUllfVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocidfKHVuaXQpP3Rlc3QkJykK
LSAgQklOQVJZX1RFU1RfU0VBUkNIX1JFR0VYID0gQklOQVJZX1RFU1RfUkVHRVgKLQotCi1kZWYg
X0dldEd0ZXN0QnVpbGREaXIoaW5qZWN0ZWRfb3MsIHNjcmlwdF9kaXIsIGNvbmZpZyk6Ci0gICIi
IkNhbGN1bGF0ZXMgcGF0aCB0byB0aGUgR29vZ2xlIFRlc3QgU0NvbnMgYnVpbGQgZGlyZWN0b3J5
LiIiIgotCi0gIHJldHVybiBpbmplY3RlZF9vcy5wYXRoLm5vcm1wYXRoKGluamVjdGVkX29zLnBh
dGguam9pbihzY3JpcHRfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3Njb25zL2J1aWxkJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdndGVzdC9zY29u
cycpKQotCi0KLWRlZiBfR2V0Q29uZmlnRnJvbUJ1aWxkRGlyKGJ1aWxkX2Rpcik6Ci0gICIiIkV4
dHJhY3RzIHRoZSBjb25maWd1cmF0aW9uIG5hbWUgZnJvbSB0aGUgYnVpbGQgZGlyZWN0b3J5LiIi
IgotCi0gICMgV2UgZG9uJ3Qgd2FudCB0byBkZXBlbmQgb24gYnVpbGRfZGlyIGNvbnRhaW5pbmcg
dGhlIGNvcnJlY3QgcGF0aAotICAjIHNlcGFyYXRvcnMuCi0gIG0gPSByZS5tYXRjaChyJy4qW1xc
L10oW15cXC9dKylbXFwvXVteXFwvXStbXFwvXXNjb25zW1xcL10/JCcsIGJ1aWxkX2RpcikKLSAg
aWYgbToKLSAgICByZXR1cm4gbS5ncm91cCgxKQotICBlbHNlOgotICAgIHByaW50ID4+c3lzLnN0
ZGVyciwgKCclcyBpcyBhbiBpbnZhbGlkIGJ1aWxkIGRpcmVjdG9yeSB0aGF0IGRvZXMgbm90ICcK
LSAgICAgICAgICAgICAgICAgICAgICAgICAnY29ycmVzcG9uZCB0byBhbnkgY29uZmlndXJhdGlv
bi4nICUgKGJ1aWxkX2RpciwpKQotICAgIHJldHVybiAnJwotCi0KLSMgQWxsIHBhdGhzIGluIHRo
aXMgc2NyaXB0IGFyZSBlaXRoZXIgYWJzb2x1dGUgb3IgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQK
LSMgd29ya2luZyBkaXJlY3RvcnksIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLgotY2xhc3Mg
VGVzdFJ1bm5lcihvYmplY3QpOgotICAiIiJQcm92aWRlcyBmYWNpbGl0aWVzIGZvciBydW5uaW5n
IFB5dGhvbiBhbmQgYmluYXJ5IHRlc3RzIGZvciBHb29nbGUgVGVzdC4iIiIKLQotICBkZWYgX19p
bml0X18oc2VsZiwKLSAgICAgICAgICAgICAgIHNjcmlwdF9kaXIsCi0gICAgICAgICAgICAgICBi
dWlsZF9kaXJfdmFyX25hbWU9J0dURVNUX0JVSUxEX0RJUicsCi0gICAgICAgICAgICAgICBpbmpl
Y3RlZF9vcz1vcywKLSAgICAgICAgICAgICAgIGluamVjdGVkX3N1YnByb2Nlc3M9c3VicHJvY2Vz
cywKLSAgICAgICAgICAgICAgIGluamVjdGVkX2J1aWxkX2Rpcl9maW5kZXI9X0dldEd0ZXN0QnVp
bGREaXIpOgotICAgICIiIkluaXRpYWxpemVzIGEgVGVzdFJ1bm5lciBpbnN0YW5jZS4KLQotICAg
IEFyZ3M6Ci0gICAgICBzY3JpcHRfZGlyOiAgICAgICAgICAgICAgICBGaWxlIHBhdGggdG8gdGhl
IGNhbGxpbmcgc2NyaXB0LgotICAgICAgYnVpbGRfZGlyX3Zhcl9uYW1lOiAgICAgICAgTmFtZSBv
ZiB0aGUgZW52IHZhcmlhYmxlIHVzZWQgdG8gcGFzcyB0aGUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoZSBidWlsZCBkaXJlY3RvcnkgcGF0aCB0byB0aGUgaW52b2tlZAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMuCi0gICAgICBpbmplY3RlZF9vczog
ICAgICAgICAgICAgICBzdGFuZGFyZCBvcyBtb2R1bGUgb3IgYSBtb2NrL3N0dWIgZm9yCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nLgotICAgICAgaW5qZWN0ZWRfc3Vi
cHJvY2VzczogICAgICAgc3RhbmRhcmQgc3VicHJvY2VzcyBtb2R1bGUgb3IgYSBtb2NrL3N0dWIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0ZXN0aW5nCi0gICAgICBpbmpl
Y3RlZF9idWlsZF9kaXJfZmluZGVyOiBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgdGhlIHBhdGgg
dG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBkaXJlY3Rvcnku
Ci0gICAgIiIiCi0KLSAgICBzZWxmLm9zID0gaW5qZWN0ZWRfb3MKLSAgICBzZWxmLnN1YnByb2Nl
c3MgPSBpbmplY3RlZF9zdWJwcm9jZXNzCi0gICAgc2VsZi5idWlsZF9kaXJfZmluZGVyID0gaW5q
ZWN0ZWRfYnVpbGRfZGlyX2ZpbmRlcgotICAgIHNlbGYuYnVpbGRfZGlyX3Zhcl9uYW1lID0gYnVp
bGRfZGlyX3Zhcl9uYW1lCi0gICAgc2VsZi5zY3JpcHRfZGlyID0gc2NyaXB0X2RpcgotCi0gIGRl
ZiBfR2V0QnVpbGREaXJGb3JDb25maWcoc2VsZiwgY29uZmlnKToKLSAgICAiIiJSZXR1cm5zIHRo
ZSBidWlsZCBkaXJlY3RvcnkgZm9yIGEgZ2l2ZW4gY29uZmlndXJhdGlvbi4iIiIKLQotICAgIHJl
dHVybiBzZWxmLmJ1aWxkX2Rpcl9maW5kZXIoc2VsZi5vcywgc2VsZi5zY3JpcHRfZGlyLCBjb25m
aWcpCi0KLSAgZGVmIF9SdW4oc2VsZiwgYXJncyk6Ci0gICAgIiIiUnVucyB0aGUgZXhlY3V0YWJs
ZSB3aXRoIGdpdmVuIGFyZ3MgKGFyZ3NbMF0gaXMgdGhlIGV4ZWN1dGFibGUgbmFtZSkuCi0KLSAg
ICBBcmdzOgotICAgICAgYXJnczogQ29tbWFuZCBsaW5lIGFyZ3VtZW50cyBmb3IgdGhlIHByb2Nl
c3MuCi0KLSAgICBSZXR1cm5zOgotICAgICAgUHJvY2VzcydzIGV4aXQgY29kZSBpZiBpdCBleGl0
cyBub3JtYWxseSwgb3IgLXNpZ25hbCBpZiB0aGUgcHJvY2VzcyBpcwotICAgICAga2lsbGVkIGJ5
IGEgc2lnbmFsLgotICAgICIiIgotCi0gICAgaWYgc2VsZi5zdWJwcm9jZXNzOgotICAgICAgcmV0
dXJuIHNlbGYuc3VicHJvY2Vzcy5Qb3BlbihhcmdzKS53YWl0KCkKLSAgICBlbHNlOgotICAgICAg
cmV0dXJuIHNlbGYub3Muc3Bhd252KHNlbGYub3MuUF9XQUlULCBhcmdzWzBdLCBhcmdzKQotCi0g
IGRlZiBfUnVuQmluYXJ5VGVzdChzZWxmLCB0ZXN0KToKLSAgICAiIiJSdW5zIHRoZSBiaW5hcnkg
dGVzdCBnaXZlbiBpdHMgcGF0aC4KLQotICAgIEFyZ3M6Ci0gICAgICB0ZXN0OiBQYXRoIHRvIHRo
ZSB0ZXN0IGJpbmFyeS4KLQotICAgIFJldHVybnM6Ci0gICAgICBQcm9jZXNzJ3MgZXhpdCBjb2Rl
IGlmIGl0IGV4aXRzIG5vcm1hbGx5LCBvciAtc2lnbmFsIGlmIHRoZSBwcm9jZXNzIGlzCi0gICAg
ICBraWxsZWQgYnkgYSBzaWduYWwuCi0gICAgIiIiCi0KLSAgICByZXR1cm4gc2VsZi5fUnVuKFt0
ZXN0XSkKLQotICBkZWYgX1J1blB5dGhvblRlc3Qoc2VsZiwgdGVzdCwgYnVpbGRfZGlyKToKLSAg
ICAiIiJSdW5zIHRoZSBQeXRob24gdGVzdCBzY3JpcHQgd2l0aCB0aGUgc3BlY2lmaWVkIGJ1aWxk
IGRpcmVjdG9yeS4KLQotICAgIEFyZ3M6Ci0gICAgICB0ZXN0OiBQYXRoIHRvIHRoZSB0ZXN0J3Mg
UHl0aG9uIHNjcmlwdC4KLSAgICAgIGJ1aWxkX2RpcjogUGF0aCB0byB0aGUgZGlyZWN0b3J5IHdo
ZXJlIHRoZSB0ZXN0IGJpbmFyeSBpcyB0byBiZSBmb3VuZC4KLQotICAgIFJldHVybnM6Ci0gICAg
ICBQcm9jZXNzJ3MgZXhpdCBjb2RlIGlmIGl0IGV4aXRzIG5vcm1hbGx5LCBvciAtc2lnbmFsIGlm
IHRoZSBwcm9jZXNzIGlzCi0gICAgICBraWxsZWQgYnkgYSBzaWduYWwuCi0gICAgIiIiCi0KLSAg
ICBvbGRfYnVpbGRfZGlyID0gc2VsZi5vcy5lbnZpcm9uLmdldChzZWxmLmJ1aWxkX2Rpcl92YXJf
bmFtZSkKLQotICAgIHRyeToKLSAgICAgIHNlbGYub3MuZW52aXJvbltzZWxmLmJ1aWxkX2Rpcl92
YXJfbmFtZV0gPSBidWlsZF9kaXIKLQotICAgICAgIyBJZiB0aGlzIHNjcmlwdCBpcyBydW4gb24g
YSBXaW5kb3dzIG1hY2hpbmUgdGhhdCBoYXMgbm8gYXNzb2NpYXRpb24KLSAgICAgICMgYmV0d2Vl
biB0aGUgLnB5IGV4dGVuc2lvbiBhbmQgYSBweXRob24gaW50ZXJwcmV0ZXIsIHNpbXBseSBwYXNz
aW5nCi0gICAgICAjIHRoZSBzY3JpcHQgbmFtZSBpbnRvIHN1YnByb2Nlc3MuUG9wZW4vb3Muc3Bh
d24gd2lsbCBub3Qgd29yay4KLSAgICAgIHByaW50ICdSdW5uaW5nICVzIC4gLiAuJyAlICh0ZXN0
LCkKLSAgICAgIHJldHVybiBzZWxmLl9SdW4oW3N5cy5leGVjdXRhYmxlLCB0ZXN0XSkKLQotICAg
IGZpbmFsbHk6Ci0gICAgICBpZiBvbGRfYnVpbGRfZGlyIGlzIE5vbmU6Ci0gICAgICAgIGRlbCBz
ZWxmLm9zLmVudmlyb25bc2VsZi5idWlsZF9kaXJfdmFyX25hbWVdCi0gICAgICBlbHNlOgotICAg
ICAgICBzZWxmLm9zLmVudmlyb25bc2VsZi5idWlsZF9kaXJfdmFyX25hbWVdID0gb2xkX2J1aWxk
X2RpcgotCi0gIGRlZiBfRmluZEZpbGVzQnlSZWdleChzZWxmLCBkaXJlY3RvcnksIHJlZ2V4KToK
LSAgICAiIiJSZXR1cm5zIGZpbGVzIGluIGEgZGlyZWN0b3J5IHdob3NlIG5hbWVzIG1hdGNoIGEg
cmVndWxhciBleHByZXNzaW9uLgotCi0gICAgQXJnczoKLSAgICAgIGRpcmVjdG9yeTogUGF0aCB0
byB0aGUgZGlyZWN0b3J5IHRvIHNlYXJjaCBmb3IgZmlsZXMuCi0gICAgICByZWdleDogUmVndWxh
ciBleHByZXNzaW9uIHRvIGZpbHRlciBmaWxlIG5hbWVzLgotCi0gICAgUmV0dXJuczoKLSAgICAg
IFRoZSBsaXN0IG9mIHRoZSBwYXRocyB0byB0aGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS4KLSAg
ICAiIiIKLQotICAgIHJldHVybiBbc2VsZi5vcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCBmaWxlX25h
bWUpCi0gICAgICAgICAgICBmb3IgZmlsZV9uYW1lIGluIHNlbGYub3MubGlzdGRpcihkaXJlY3Rv
cnkpCi0gICAgICAgICAgICBpZiByZS5zZWFyY2gocmVnZXgsIGZpbGVfbmFtZSldCi0KLSAgIyBU
T0RPKHZsYWRsQGdvb2dsZS5jb20pOiBJbXBsZW1lbnQgcGFyc2luZyBvZiBzY29ucy9TQ29uc2Ny
aXB0IHRvIHJ1biBhbGwKLSAgIyB0ZXN0cyBkZWZpbmVkIHRoZXJlIHdoZW4gbm8gdGVzdHMgYXJl
IHNwZWNpZmllZC4KLSAgIyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBVcGRhdGUgdGhlIGRvY3N0
cmluZyBhZnRlciB0aGUgY29kZSBpcyBjaGFuZ2VkIHRvCi0gICMgdHJ5IHRvIHRlc3QgYWxsIGJ1
aWxkcyBkZWZpbmVkIGluIHNjb25zL1NDb25zY3JpcHQuCi0gIGRlZiBHZXRUZXN0c1RvUnVuKHNl
bGYsCi0gICAgICAgICAgICAgICAgICAgIGFyZ3MsCi0gICAgICAgICAgICAgICAgICAgIG5hbWVk
X2NvbmZpZ3VyYXRpb25zLAotICAgICAgICAgICAgICAgICAgICBidWlsdF9jb25maWd1cmF0aW9u
cywKLSAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPUNPTkZJR1Ms
Ci0gICAgICAgICAgICAgICAgICAgIHB5dGhvbl90ZXN0c190b19za2lwPU5vbmUpOgotICAgICIi
IkRldGVybWluZXMgd2hhdCB0ZXN0cyBzaG91bGQgYmUgcnVuLgotCi0gICAgQXJnczoKLSAgICAg
IGFyZ3M6IFRoZSBsaXN0IG9mIG5vbi1vcHRpb24gYXJndW1lbnRzIGZyb20gdGhlIGNvbW1hbmQg
bGluZS4KLSAgICAgIG5hbWVkX2NvbmZpZ3VyYXRpb25zOiBUaGUgbGlzdCBvZiBjb25maWd1cmF0
aW9ucyBzcGVjaWZpZWQgdmlhIC1jIG9yIC1hLgotICAgICAgYnVpbHRfY29uZmlndXJhdGlvbnM6
IFRydWUgaWYgLWIgaGFzIGJlZW4gc3BlY2lmaWVkLgotICAgICAgYXZhaWxhYmxlX2NvbmZpZ3Vy
YXRpb25zOiBhIGxpc3Qgb2YgY29uZmlndXJhdGlvbnMgYXZhaWxhYmxlIG9uIHRoZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgcGxhdGZvcm0sIGluamVjdGFibGUgZm9yIHRl
c3RpbmcuCi0gICAgICBweXRob25fdGVzdHNfdG9fc2tpcDogYSBjb2xsZWN0aW9uIG9mIChjb25m
aWd1cmF0aW9uLCBweXRob24gdGVzdCBuYW1lKXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGF0IG5lZWQgdG8gYmUgc2tpcHBlZC4KLQotICAgIFJldHVybnM6Ci0gICAgICBBIHR1cGxl
IHdpdGggMiBlbGVtZW50czogdGhlIGxpc3Qgb2YgUHl0aG9uIHRlc3RzIHRvIHJ1biBhbmQgdGhl
IGxpc3Qgb2YKLSAgICAgIGJpbmFyeSB0ZXN0cyB0byBydW4uCi0gICAgIiIiCi0KLSAgICBpZiBu
YW1lZF9jb25maWd1cmF0aW9ucyA9PSAnYWxsJzoKLSAgICAgIG5hbWVkX2NvbmZpZ3VyYXRpb25z
ID0gJywnLmpvaW4oYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zKQotCi0gICAgbm9ybWFsaXplZF9h
cmdzID0gW3NlbGYub3MucGF0aC5ub3JtcGF0aChhcmcpIGZvciBhcmcgaW4gYXJnc10KLQotICAg
ICMgQSBmaW5hbCBsaXN0IG9mIGJ1aWxkIGRpcmVjdG9yaWVzIHdoaWNoIHdpbGwgYmUgc2VhcmNo
ZWQgZm9yIHRoZSB0ZXN0Ci0gICAgIyBiaW5hcmllcy4gRmlyc3QsIGFkZCBkaXJlY3RvcmllcyBz
cGVjaWZpZWQgZGlyZWN0bHkgb24gdGhlIGNvbW1hbmQKLSAgICAjIGxpbmUuCi0gICAgYnVpbGRf
ZGlycyA9IGZpbHRlcihzZWxmLm9zLnBhdGguaXNkaXIsIG5vcm1hbGl6ZWRfYXJncykKLQotICAg
ICMgQWRkcyBidWlsZCBkaXJlY3RvcmllcyBzcGVjaWZpZWQgdmlhIHRoZWlyIGJ1aWxkIGNvbmZp
Z3VyYXRpb25zIHVzaW5nCi0gICAgIyB0aGUgLWMgb3IgLWEgb3B0aW9ucy4KLSAgICBpZiBuYW1l
ZF9jb25maWd1cmF0aW9uczoKLSAgICAgIGJ1aWxkX2RpcnMgKz0gW3NlbGYuX0dldEJ1aWxkRGly
Rm9yQ29uZmlnKGNvbmZpZykKLSAgICAgICAgICAgICAgICAgICAgIGZvciBjb25maWcgaW4gbmFt
ZWRfY29uZmlndXJhdGlvbnMuc3BsaXQoJywnKV0KLQotICAgICMgQWRkcyBLTk9XTiBCVUlMRCBE
SVJFQ1RPUklFUyBpZiAtYiBpcyBzcGVjaWZpZWQuCi0gICAgaWYgYnVpbHRfY29uZmlndXJhdGlv
bnM6Ci0gICAgICBidWlsZF9kaXJzICs9IFtzZWxmLl9HZXRCdWlsZERpckZvckNvbmZpZyhjb25m
aWcpCi0gICAgICAgICAgICAgICAgICAgICBmb3IgY29uZmlnIGluIGF2YWlsYWJsZV9jb25maWd1
cmF0aW9ucwotICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5vcy5wYXRoLmlzZGlyKHNlbGYu
X0dldEJ1aWxkRGlyRm9yQ29uZmlnKGNvbmZpZykpXQotCi0gICAgIyBJZiBubyBkaXJlY3Rvcmll
cyB3ZXJlIHNwZWNpZmllZCBlaXRoZXIgdmlhIC1hLCAtYiwgLWMsIG9yIGRpcmVjdGx5LCB1c2UK
LSAgICAjIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uCi0gICAgZWxpZiBub3QgYnVpbGRfZGly
czoKLSAgICAgIGJ1aWxkX2RpcnMgPSBbc2VsZi5fR2V0QnVpbGREaXJGb3JDb25maWcoYXZhaWxh
YmxlX2NvbmZpZ3VyYXRpb25zWzBdKV0KLQotICAgICMgTWFrZXMgc3VyZSB0aGVyZSBhcmUgbm8g
ZHVwbGljYXRpb25zLgotICAgIGJ1aWxkX2RpcnMgPSBzZXRzLlNldChidWlsZF9kaXJzKQotCi0g
ICAgZXJyb3JzX2ZvdW5kID0gRmFsc2UKLSAgICBsaXN0ZWRfcHl0aG9uX3Rlc3RzID0gW10gICMg
QWxsIFB5dGhvbiB0ZXN0cyBsaXN0ZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KLSAgICBsaXN0ZWRf
YmluYXJ5X3Rlc3RzID0gW10gICMgQWxsIGJpbmFyeSB0ZXN0cyBsaXN0ZWQgb24gdGhlIGNvbW1h
bmQgbGluZS4KLQotICAgIHRlc3RfZGlyID0gc2VsZi5vcy5wYXRoLm5vcm1wYXRoKHNlbGYub3Mu
cGF0aC5qb2luKHNlbGYuc2NyaXB0X2RpciwgJ3Rlc3QnKSkKLQotICAgICMgU2lmdHMgdGhyb3Vn
aCBub24tZGlyZWN0b3J5IGFyZ3VtZW50cyBmaXNoaW5nIGZvciBhbnkgUHl0aG9uIG9yIGJpbmFy
eQotICAgICMgdGVzdHMgYW5kIGRldGVjdGluZyBlcnJvcnMuCi0gICAgZm9yIGFyZ3VtZW50IGlu
IHNldHMuU2V0KG5vcm1hbGl6ZWRfYXJncykgLSBidWlsZF9kaXJzOgotICAgICAgaWYgcmUuc2Vh
cmNoKFBZVEhPTl9URVNUX1JFR0VYLCBhcmd1bWVudCk6Ci0gICAgICAgIHB5dGhvbl9wYXRoID0g
c2VsZi5vcy5wYXRoLmpvaW4odGVzdF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5vcy5wYXRoLmJhc2VuYW1lKGFyZ3VtZW50KSkKLSAgICAgICAgaWYg
c2VsZi5vcy5wYXRoLmlzZmlsZShweXRob25fcGF0aCk6Ci0gICAgICAgICAgbGlzdGVkX3B5dGhv
bl90ZXN0cy5hcHBlbmQocHl0aG9uX3BhdGgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgc3lz
LnN0ZGVyci53cml0ZSgnVW5hYmxlIHRvIGZpbmQgUHl0aG9uIHRlc3QgJXMnICUgYXJndW1lbnQp
Ci0gICAgICAgICAgZXJyb3JzX2ZvdW5kID0gVHJ1ZQotICAgICAgZWxpZiByZS5zZWFyY2goQklO
QVJZX1RFU1RfUkVHRVgsIGFyZ3VtZW50KToKLSAgICAgICAgIyBUaGlzIHNjcmlwdCBhbHNvIGFj
Y2VwdHMgYmluYXJ5IHRlc3QgbmFtZXMgcHJlZml4ZWQgd2l0aCB0ZXN0LyBmb3IKLSAgICAgICAg
IyB0aGUgY29udmVuaWVuY2Ugb2YgdHlwaW5nIHRoZW0gKGNhbiB1c2UgcGF0aCBjb21wbGV0aW9u
cyBpbiB0aGUKLSAgICAgICAgIyBzaGVsbCkuICBTdHJpcHMgdGVzdC8gcHJlZml4IGZyb20gdGhl
IGJpbmFyeSB0ZXN0IG5hbWVzLgotICAgICAgICBsaXN0ZWRfYmluYXJ5X3Rlc3RzLmFwcGVuZChz
ZWxmLm9zLnBhdGguYmFzZW5hbWUoYXJndW1lbnQpKQotICAgICAgZWxzZToKLSAgICAgICAgc3lz
LnN0ZGVyci53cml0ZSgnJXMgaXMgbmVpdGhlciB0ZXN0IG5vciBidWlsZCBkaXJlY3RvcnknICUg
YXJndW1lbnQpCi0gICAgICAgIGVycm9yc19mb3VuZCA9IFRydWUKLQotICAgIGlmIGVycm9yc19m
b3VuZDoKLSAgICAgIHJldHVybiBOb25lCi0KLSAgICB1c2VyX2hhc19saXN0ZWRfdGVzdHMgPSBs
aXN0ZWRfcHl0aG9uX3Rlc3RzIG9yIGxpc3RlZF9iaW5hcnlfdGVzdHMKLQotICAgIGlmIHVzZXJf
aGFzX2xpc3RlZF90ZXN0czoKLSAgICAgIHNlbGVjdGVkX3B5dGhvbl90ZXN0cyA9IGxpc3RlZF9w
eXRob25fdGVzdHMKLSAgICBlbHNlOgotICAgICAgc2VsZWN0ZWRfcHl0aG9uX3Rlc3RzID0gc2Vs
Zi5fRmluZEZpbGVzQnlSZWdleCh0ZXN0X2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlUSE9OX1RFU1RfUkVHRVgpCi0KLSAgICAjIFRP
RE8odmxhZGxAZ29vZ2xlLmNvbSk6IHNraXAgdW5idWlsdCBQeXRob24gdGVzdHMgd2hlbiAtYiBp
cyBzcGVjaWZpZWQuCi0gICAgcHl0aG9uX3Rlc3RfcGFpcnMgPSBbXQotICAgIGZvciBkaXJlY3Rv
cnkgaW4gYnVpbGRfZGlyczoKLSAgICAgIGZvciB0ZXN0IGluIHNlbGVjdGVkX3B5dGhvbl90ZXN0
czoKLSAgICAgICAgY29uZmlnID0gX0dldENvbmZpZ0Zyb21CdWlsZERpcihkaXJlY3RvcnkpCi0g
ICAgICAgIGZpbGVfbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUodGVzdCkKLSAgICAgICAgaWYgcHl0
aG9uX3Rlc3RzX3RvX3NraXAgYW5kIChjb25maWcsIGZpbGVfbmFtZSkgaW4gcHl0aG9uX3Rlc3Rz
X3RvX3NraXA6Ci0gICAgICAgICAgcHJpbnQgKCdOT1RFOiAlcyBpcyBza2lwcGVkIGZvciBjb25m
aWd1cmF0aW9uICVzLCBhcyBpdCBkb2VzIG5vdCAnCi0gICAgICAgICAgICAgICAgICd3b3JrIHRo
ZXJlLicgJSAoZmlsZV9uYW1lLCBjb25maWcpKQotICAgICAgICBlbHNlOgotICAgICAgICAgIHB5
dGhvbl90ZXN0X3BhaXJzLmFwcGVuZCgoZGlyZWN0b3J5LCB0ZXN0KSkKLQotICAgIGJpbmFyeV90
ZXN0X3BhaXJzID0gW10KLSAgICBmb3IgZGlyZWN0b3J5IGluIGJ1aWxkX2RpcnM6Ci0gICAgICBp
ZiB1c2VyX2hhc19saXN0ZWRfdGVzdHM6Ci0gICAgICAgIGJpbmFyeV90ZXN0X3BhaXJzLmV4dGVu
ZCgKLSAgICAgICAgICAgIFsoZGlyZWN0b3J5LCBzZWxmLm9zLnBhdGguam9pbihkaXJlY3Rvcnks
IHRlc3QpKQotICAgICAgICAgICAgIGZvciB0ZXN0IGluIGxpc3RlZF9iaW5hcnlfdGVzdHNdKQot
ICAgICAgZWxzZToKLSAgICAgICAgdGVzdHMgPSBzZWxmLl9GaW5kRmlsZXNCeVJlZ2V4KGRpcmVj
dG9yeSwgQklOQVJZX1RFU1RfU0VBUkNIX1JFR0VYKQotICAgICAgICBiaW5hcnlfdGVzdF9wYWly
cy5leHRlbmQoWyhkaXJlY3RvcnksIHRlc3QpIGZvciB0ZXN0IGluIHRlc3RzXSkKLQotICAgIHJl
dHVybiAocHl0aG9uX3Rlc3RfcGFpcnMsIGJpbmFyeV90ZXN0X3BhaXJzKQotCi0gIGRlZiBSdW5U
ZXN0cyhzZWxmLCBweXRob25fdGVzdHMsIGJpbmFyeV90ZXN0cyk6Ci0gICAgIiIiUnVucyBQeXRo
b24gYW5kIGJpbmFyeSB0ZXN0cyBhbmQgcmVwb3J0cyByZXN1bHRzIHRvIHRoZSBzdGFuZGFyZCBv
dXRwdXQuCi0KLSAgICBBcmdzOgotICAgICAgcHl0aG9uX3Rlc3RzOiBMaXN0IG9mIFB5dGhvbiB0
ZXN0cyB0byBydW4gaW4gdGhlIGZvcm0gb2YgdHVwbGVzCi0gICAgICAgICAgICAgICAgICAgIChi
dWlsZCBkaXJlY3RvcnksIFB5dGhvbiB0ZXN0IHNjcmlwdCkuCi0gICAgICBiaW5hcnlfdGVzdHM6
IExpc3Qgb2YgYmluYXJ5IHRlc3RzIHRvIHJ1biBpbiB0aGUgZm9ybSBvZiB0dXBsZXMKLSAgICAg
ICAgICAgICAgICAgICAgKGJ1aWxkIGRpcmVjdG9yeSwgYmluYXJ5IGZpbGUpLgotCi0gICAgUmV0
dXJuczoKLSAgICAgIFRoZSBleGl0IGNvZGUgdGhlIHByb2dyYW0gc2hvdWxkIHBhc3MgaW50byBz
eXMuZXhpdCgpLgotICAgICIiIgotCi0gICAgaWYgcHl0aG9uX3Rlc3RzIG9yIGJpbmFyeV90ZXN0
czoKLSAgICAgIHJlc3VsdHMgPSBbXQotICAgICAgZm9yIGRpcmVjdG9yeSwgdGVzdCBpbiBweXRo
b25fdGVzdHM6Ci0gICAgICAgIHJlc3VsdHMuYXBwZW5kKChkaXJlY3RvcnksCi0gICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fUnVuUHl0
aG9uVGVzdCh0ZXN0LCBkaXJlY3RvcnkpID09IDApKQotICAgICAgZm9yIGRpcmVjdG9yeSwgdGVz
dCBpbiBiaW5hcnlfdGVzdHM6Ci0gICAgICAgIHJlc3VsdHMuYXBwZW5kKChkaXJlY3RvcnksCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9zLnBhdGguYmFzZW5hbWUodGVzdCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9SdW5CaW5hcnlUZXN0KHRlc3QpID09IDApKQotCi0g
ICAgICBmYWlsZWQgPSBbKGRpcmVjdG9yeSwgdGVzdCkKLSAgICAgICAgICAgICAgICBmb3IgKGRp
cmVjdG9yeSwgdGVzdCwgc3VjY2VzcykgaW4gcmVzdWx0cwotICAgICAgICAgICAgICAgIGlmIG5v
dCBzdWNjZXNzXQotICAgICAgcHJpbnQKLSAgICAgIHByaW50ICclZCB0ZXN0cyBydW4uJyAlIGxl
bihyZXN1bHRzKQotICAgICAgaWYgZmFpbGVkOgotICAgICAgICBwcmludCAnVGhlIGZvbGxvd2lu
ZyAlZCB0ZXN0cyBmYWlsZWQ6JyAlIGxlbihmYWlsZWQpCi0gICAgICAgIGZvciAoZGlyZWN0b3J5
LCB0ZXN0KSBpbiBmYWlsZWQ6Ci0gICAgICAgICAgcHJpbnQgJyVzIGluICVzJyAlICh0ZXN0LCBk
aXJlY3RvcnkpCi0gICAgICAgIHJldHVybiAxCi0gICAgICBlbHNlOgotICAgICAgICBwcmludCAn
QWxsIHRlc3RzIHBhc3NlZCEnCi0gICAgZWxzZTogICMgTm8gdGVzdHMgZGVmaW5lZAotICAgICAg
cHJpbnQgJ05vdGhpbmcgdG8gdGVzdCAtIG5vIHRlc3RzIHNwZWNpZmllZCEnCi0KLSAgICByZXR1
cm4gMAotCi0KLWRlZiBQYXJzZUFyZ3MocHJvamVjdF9uYW1lLCBhcmd2PU5vbmUsIGhlbHBfY2Fs
bGJhY2s9Tm9uZSk6Ci0gICIiIlBhcnNlcyB0aGUgb3B0aW9ucyBydW5fdGVzdHMucHkgdXNlcy4i
IiIKLQotICAjIFN1cHByZXNzZXMgbGludCB3YXJuaW5nIG9uIHVudXNlZCBhcmd1bWVudHMuICBU
aGVzZSBhcmd1bWVudHMgYXJlCi0gICMgcmVxdWlyZWQgYnkgb3B0cGFyc2UsIGV2ZW4gdGhvdWdo
IHRoZXkgYXJlIHVudXNlZC4KLSAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPVcwNjEzCi0gIGRlZiBQ
cmludEhlbHAob3B0aW9uLCBvcHQsIHZhbHVlLCBwYXJzZXIpOgotICAgIHByaW50IEhFTFBfTVNH
ICUgeydwcm9qJzogcHJvamVjdF9uYW1lfQotICAgIHN5cy5leGl0KDEpCi0KLSAgcGFyc2VyID0g
b3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKLSAgcGFyc2VyLmFkZF9vcHRpb24oJy1jJywKLSAgICAg
ICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZScsCi0gICAgICAgICAgICAgICAgICAgIGRlc3Q9
J2NvbmZpZ3VyYXRpb25zJywKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lKQotICBw
YXJzZXIuYWRkX29wdGlvbignLWEnLAotICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3Jl
X2NvbnN0JywKLSAgICAgICAgICAgICAgICAgICAgZGVzdD0nY29uZmlndXJhdGlvbnMnLAotICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0
PSdhbGwnKQotICBwYXJzZXIuYWRkX29wdGlvbignLWInLAotICAgICAgICAgICAgICAgICAgICBh
Y3Rpb249J3N0b3JlX2NvbnN0JywKLSAgICAgICAgICAgICAgICAgICAgZGVzdD0nYnVpbHRfY29u
ZmlndXJhdGlvbnMnLAotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAotICAgICAg
ICAgICAgICAgICAgICBjb25zdD1UcnVlKQotICAjIFJlcGxhY2VzIHRoZSBidWlsdC1pbiBoZWxw
IHdpdGggb3Vycy4KLSAgcGFyc2VyLnJlbW92ZV9vcHRpb24oJy1oJykKLSAgcGFyc2VyLmFkZF9v
cHRpb24oJy1oJywgJy0taGVscCcsCi0gICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nY2FsbGJh
Y2snLAotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz1oZWxwX2NhbGxiYWNrIG9yIFByaW50
SGVscCkKLSAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKGFyZ3YpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0c191dGlsX3Rlc3QucHkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0c191dGlsX3Rlc3QucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDljNTU3MjZmZDUwYjJhMGMyNTA2ODE0MWQ3ZTY2OTQzZjBiNmRl
NzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ydW5fdGVzdHNfdXRpbF90ZXN0LnB5CisrKyAvZGV2L251
bGwKQEAgLTEsNjc2ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmln
aHQgMjAwOSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0j
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotIiIiVGVzdHMgZm9yIHJ1bl90ZXN0c191dGlsLnB5IHRlc3QgcnVubmVyIHNjcmlwdC4i
IiIKLQotX19hdXRob3JfXyA9ICd2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KScKLQotaW1w
b3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzZXRzCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0
IHJ1bl90ZXN0c191dGlsCi0KLQotR1RFU1RfREJHX0RJUiA9ICdzY29ucy9idWlsZC9kYmcvZ3Rl
c3Qvc2NvbnMnCi1HVEVTVF9PUFRfRElSID0gJ3Njb25zL2J1aWxkL29wdC9ndGVzdC9zY29ucycK
LUdURVNUX09USEVSX0RJUiA9ICdzY29ucy9idWlsZC9vdGhlci9ndGVzdC9zY29ucycKLQotCi1k
ZWYgQWRkRXhlRXh0ZW5zaW9uKHBhdGgpOgotICAiIiJBcHBlbmRzIC5leGUgdG8gdGhlIHBhdGgg
b24gV2luZG93cyBvciBDeWd3aW4uIiIiCi0KLSAgaWYgcnVuX3Rlc3RzX3V0aWwuSVNfV0lORE9X
UyBvciBydW5fdGVzdHNfdXRpbC5JU19DWUdXSU46Ci0gICAgcmV0dXJuIHBhdGggKyAnLmV4ZScK
LSAgZWxzZToKLSAgICByZXR1cm4gcGF0aAotCi0KLWNsYXNzIEZha2VQYXRoKG9iamVjdCk6Ci0g
ICIiIkEgZmFrZSBvcy5wYXRoIG1vZHVsZSBmb3IgdGVzdGluZy4iIiIKLQotICBkZWYgX19pbml0
X18oc2VsZiwgY3VycmVudF9kaXI9b3MuZ2V0Y3dkKCksIGtub3duX3BhdGhzPU5vbmUpOgotICAg
IHNlbGYuY3VycmVudF9kaXIgPSBjdXJyZW50X2RpcgotICAgIHNlbGYudHJlZSA9IHt9Ci0gICAg
c2VsZi5wYXRoX3NlcGFyYXRvciA9IG9zLnNlcAotCi0gICAgIyBrbm93bl9wYXRocyBjb250YWlu
cyBlaXRoZXIgYWJzb2x1dGUgb3IgcmVsYXRpdmUgcGF0aHMuIFJlbGF0aXZlIHBhdGhzCi0gICAg
IyBhcmUgYWJzb2x1dGl6ZWQgd2l0aCBzZWxmLmN1cnJlbnRfZGlyLgotICAgIGlmIGtub3duX3Bh
dGhzOgotICAgICAgc2VsZi5fQWRkUGF0aHMoa25vd25fcGF0aHMpCi0KLSAgZGVmIF9BZGRQYXRo
KHNlbGYsIHBhdGgpOgotICAgIGVuZHNfd2l0aF9zbGFzaCA9IHBhdGguZW5kc3dpdGgoJy8nKQot
ICAgIHBhdGggPSBzZWxmLmFic3BhdGgocGF0aCkKLSAgICBpZiBlbmRzX3dpdGhfc2xhc2g6Ci0g
ICAgICBwYXRoICs9IHNlbGYucGF0aF9zZXBhcmF0b3IKLSAgICBuYW1lX2xpc3QgPSBwYXRoLnNw
bGl0KHNlbGYucGF0aF9zZXBhcmF0b3IpCi0gICAgdHJlZSA9IHNlbGYudHJlZQotICAgIGZvciBu
YW1lIGluIG5hbWVfbGlzdFs6LTFdOgotICAgICAgaWYgbm90IG5hbWU6Ci0gICAgICAgIGNvbnRp
bnVlCi0gICAgICBpZiBuYW1lIGluIHRyZWU6Ci0gICAgICAgIHRyZWUgPSB0cmVlW25hbWVdCi0g
ICAgICBlbHNlOgotICAgICAgICB0cmVlW25hbWVdID0ge30KLSAgICAgICAgdHJlZSA9IHRyZWVb
bmFtZV0KLQotICAgIG5hbWUgPSBuYW1lX2xpc3RbLTFdCi0gICAgaWYgbmFtZToKLSAgICAgIGlm
IG5hbWUgaW4gdHJlZToKLSAgICAgICAgYXNzZXJ0IHRyZWVbbmFtZV0gPT0gMQotICAgICAgZWxz
ZToKLSAgICAgICAgdHJlZVtuYW1lXSA9IDEKLQotICBkZWYgX0FkZFBhdGhzKHNlbGYsIHBhdGhz
KToKLSAgICBmb3IgcGF0aCBpbiBwYXRoczoKLSAgICAgIHNlbGYuX0FkZFBhdGgocGF0aCkKLQot
ICBkZWYgUGF0aEVsZW1lbnQoc2VsZiwgcGF0aCk6Ci0gICAgIiIiUmV0dXJucyBhbiBpbnRlcm5h
bCByZXByZXNlbnRhdGlvbiBvZiBkaXJlY3RvcnkgdHJlZSBlbnRyeSBmb3IgcGF0aC4iIiIKLSAg
ICB0cmVlID0gc2VsZi50cmVlCi0gICAgbmFtZV9saXN0ID0gc2VsZi5hYnNwYXRoKHBhdGgpLnNw
bGl0KHNlbGYucGF0aF9zZXBhcmF0b3IpCi0gICAgZm9yIG5hbWUgaW4gbmFtZV9saXN0OgotICAg
ICAgaWYgbm90IG5hbWU6Ci0gICAgICAgIGNvbnRpbnVlCi0gICAgICB0cmVlID0gdHJlZS5nZXQo
bmFtZSwgTm9uZSkKLSAgICAgIGlmIHRyZWUgaXMgTm9uZToKLSAgICAgICAgYnJlYWsKLQotICAg
IHJldHVybiB0cmVlCi0KLSAgIyBTaWxlbmNlcyBweWxpbnQgd2FybmluZyBhYm91dCB1c2luZyBz
dGFuZGFyZCBuYW1lcy4KLSAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2NDA5Ci0gIGRlZiBub3Jt
cGF0aChzZWxmLCBwYXRoKToKLSAgICByZXR1cm4gb3MucGF0aC5ub3JtcGF0aChwYXRoKQotCi0g
IGRlZiBhYnNwYXRoKHNlbGYsIHBhdGgpOgotICAgIHJldHVybiBzZWxmLm5vcm1wYXRoKG9zLnBh
dGguam9pbihzZWxmLmN1cnJlbnRfZGlyLCBwYXRoKSkKLQotICBkZWYgaXNmaWxlKHNlbGYsIHBh
dGgpOgotICAgIHJldHVybiBzZWxmLlBhdGhFbGVtZW50KHNlbGYuYWJzcGF0aChwYXRoKSkgPT0g
MQotCi0gIGRlZiBpc2RpcihzZWxmLCBwYXRoKToKLSAgICByZXR1cm4gdHlwZShzZWxmLlBhdGhF
bGVtZW50KHNlbGYuYWJzcGF0aChwYXRoKSkpID09IHR5cGUoZGljdCgpKQotCi0gIGRlZiBiYXNl
bmFtZShzZWxmLCBwYXRoKToKLSAgICByZXR1cm4gb3MucGF0aC5iYXNlbmFtZShwYXRoKQotCi0g
IGRlZiBkaXJuYW1lKHNlbGYsIHBhdGgpOgotICAgIHJldHVybiBvcy5wYXRoLmRpcm5hbWUocGF0
aCkKLQotICBkZWYgam9pbihzZWxmLCAqa2FyZ3MpOgotICAgIHJldHVybiBvcy5wYXRoLmpvaW4o
KmthcmdzKQotCi0KLWNsYXNzIEZha2VPcyhvYmplY3QpOgotICAiIiJBIGZha2Ugb3MgbW9kdWxl
IGZvciB0ZXN0aW5nLiIiIgotICBQX1dBSVQgPSBvcy5QX1dBSVQKLQotICBkZWYgX19pbml0X18o
c2VsZiwgZmFrZV9wYXRoX21vZHVsZSk6Ci0gICAgc2VsZi5wYXRoID0gZmFrZV9wYXRoX21vZHVs
ZQotCi0gICAgIyBTb21lIG1ldGhvZHMvYXR0cmlidXRlcyBhcmUgZGVsZWdhdGVkIHRvIHRoZSBy
ZWFsIG9zIG1vZHVsZS4KLSAgICBzZWxmLmVudmlyb24gPSBvcy5lbnZpcm9uCi0KLSAgIyBweWxp
bnQ6IGRpc2FibGUtbXNnPUM2NDA5Ci0gIGRlZiBsaXN0ZGlyKHNlbGYsIHBhdGgpOgotICAgIGFz
c2VydCBzZWxmLnBhdGguaXNkaXIocGF0aCkKLSAgICByZXR1cm4gc2VsZi5wYXRoLlBhdGhFbGVt
ZW50KHBhdGgpLml0ZXJrZXlzKCkKLQotICBkZWYgc3Bhd252KHNlbGYsIHdhaXQsIGV4ZWN1dGFi
bGUsICprYXJncyk6Ci0gICAgYXNzZXJ0IHdhaXQgPT0gRmFrZU9zLlBfV0FJVAotICAgIHJldHVy
biBzZWxmLnNwYXduX2ltcGwoZXhlY3V0YWJsZSwga2FyZ3MpCi0KLQotY2xhc3MgR2V0VGVzdHNU
b1J1blRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAiIiJFeGVyY2lzZXMgVGVzdFJ1bm5lci5H
ZXRUZXN0c1RvUnVuLiIiIgotCi0gIGRlZiBOb3JtYWxpemVHZXRUZXN0c1RvUnVuUmVzdWx0cyhz
ZWxmLCByZXN1bHRzKToKLSAgICAiIiJOb3JtYWxpemVzIHBhdGggZGF0YSByZXR1cm5lZCBmcm9t
IEdldFRlc3RzVG9SdW4gZm9yIGNvbXBhcmlzb24uIiIiCi0KLSAgICBkZWYgTm9ybWFsaXplUHl0
aG9uVGVzdFBhaXIocGFpcik6Ci0gICAgICAiIiJOb3JtYWxpemVzIHBhdGggZGF0YSBpbiB0aGUg
KGRpcmVjdG9yeSwgcHl0aG9uX3NjcmlwdCkgcGFpci4iIiIKLQotICAgICAgcmV0dXJuIChvcy5w
YXRoLm5vcm1wYXRoKHBhaXJbMF0pLCBvcy5wYXRoLm5vcm1wYXRoKHBhaXJbMV0pKQotCi0gICAg
ZGVmIE5vcm1hbGl6ZUJpbmFyeVRlc3RQYWlyKHBhaXIpOgotICAgICAgIiIiTm9ybWFsaXplcyBw
YXRoIGRhdGEgaW4gdGhlIChkaXJlY3RvcnksIGJpbmFyeV9leGVjdXRhYmxlKSBwYWlyLiIiIgot
Ci0gICAgICBkaXJlY3RvcnksIGV4ZWN1dGFibGUgPSBtYXAob3MucGF0aC5ub3JtcGF0aCwgcGFp
cikKLQotICAgICAgIyBPbiBXaW5kb3dzIGFuZCBDeWd3aW4sIHRoZSB0ZXN0IGZpbGUgbmFtZXMg
aGF2ZSB0aGUgLmV4ZSBleHRlbnNpb24sIGJ1dAotICAgICAgIyB0aGV5IGNhbiBiZSBpbnZva2Vk
IGVpdGhlciBieSBuYW1lIG9yIGJ5IG5hbWUrZXh0ZW5zaW9uLiBPdXIgdGVzdCBtdXN0Ci0gICAg
ICAjIGFjY29tbW9kYXRlIGJvdGggc2l0dWF0aW9ucy4KLSAgICAgIGlmIHJ1bl90ZXN0c191dGls
LklTX1dJTkRPV1Mgb3IgcnVuX3Rlc3RzX3V0aWwuSVNfQ1lHV0lOOgotICAgICAgICBleGVjdXRh
YmxlID0gcmUuc3ViKHInXC5leGUkJywgJycsIGV4ZWN1dGFibGUpCi0gICAgICByZXR1cm4gKGRp
cmVjdG9yeSwgZXhlY3V0YWJsZSkKLQotICAgIHB5dGhvbl90ZXN0cyA9IHNldHMuU2V0KG1hcChO
b3JtYWxpemVQeXRob25UZXN0UGFpciwgcmVzdWx0c1swXSkpCi0gICAgYmluYXJ5X3Rlc3RzID0g
c2V0cy5TZXQobWFwKE5vcm1hbGl6ZUJpbmFyeVRlc3RQYWlyLCByZXN1bHRzWzFdKSkKLSAgICBy
ZXR1cm4gKHB5dGhvbl90ZXN0cywgYmluYXJ5X3Rlc3RzKQotCi0gIGRlZiBBc3NlcnRSZXN1bHRz
RXF1YWwoc2VsZiwgcmVzdWx0cywgZXhwZWN0ZWQpOgotICAgICIiIkFzc2VydHMgcmVzdWx0cyBy
ZXR1cm5lZCBieSBHZXRUZXN0c1RvUnVuIGVxdWFsIHRvIGV4cGVjdGVkIHJlc3VsdHMuIiIiCi0K
LSAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuTm9ybWFsaXplR2V0VGVzdHNUb1J1blJlc3VsdHMo
cmVzdWx0cyksCi0gICAgICAgICAgICAgICAgICAgICBzZWxmLk5vcm1hbGl6ZUdldFRlc3RzVG9S
dW5SZXN1bHRzKGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAgICAgICAgICdJbmNvcnJlY3Qgc2V0
IG9mIHRlc3RzIHJldHVybmVkOlxuJXNcbmV4cGVjdGVkOlxuJXMnICUKLSAgICAgICAgICAgICAg
ICAgICAgIChyZXN1bHRzLCBleHBlY3RlZCkpCi0KLSAgZGVmIHNldFVwKHNlbGYpOgotICAgIHNl
bGYuZmFrZV9vcyA9IEZha2VPcyhGYWtlUGF0aCgKLSAgICAgICAgY3VycmVudF9kaXI9b3MucGF0
aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShydW5fdGVzdHNfdXRpbC5fX2ZpbGVfXykpLAotICAg
ICAgICBrbm93bl9wYXRocz1bQWRkRXhlRXh0ZW5zaW9uKEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0
X3VuaXR0ZXN0JyksCi0gICAgICAgICAgICAgICAgICAgICBBZGRFeGVFeHRlbnNpb24oR1RFU1Rf
T1BUX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAgICAgICAgICAgICd0ZXN0
L2d0ZXN0X2NvbG9yX3Rlc3QucHknXSkpCi0gICAgc2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zID0g
WydkYmcnLCAnb3B0J10KLSAgICBzZWxmLnRlc3RfcnVubmVyID0gcnVuX3Rlc3RzX3V0aWwuVGVz
dFJ1bm5lcihzY3JpcHRfZGlyPScuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmplY3RlZF9vcz1zZWxmLmZha2Vfb3MsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5qZWN0ZWRfc3VicHJvY2Vzcz1O
b25lKQotCi0gIGRlZiB0ZXN0QmluYXJ5VGVzdHNPbmx5KHNlbGYpOgotICAgICIiIkV4ZXJjaXNl
cyBHZXRUZXN0c1RvUnVuIHdpdGggcGFyYW1ldGVycyBkZXNpZ25hdGluZyBiaW5hcnkgdGVzdHMg
b25seS4iIiIKLQotICAgICMgQSBkZWZhdWx0IGJ1aWxkLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0
c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAg
ICAgICBbJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZh
bHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25m
aWd1cmF0aW9ucyksCi0gICAgICAgIChbXSwKLSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RF
U1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBBbiBleHBsaWNpdGx5
IHNwZWNpZmllZCBkaXJlY3RvcnkuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAg
ICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9E
QkdfRElSLCAnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAg
RmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2Nv
bmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFtdLAotICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBH
VEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIEEgcGFydGljdWxh
ciBjb25maWd1cmF0aW9uLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBz
ZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X3VuaXR0
ZXN0J10sCi0gICAgICAgICAgICAnb3RoZXInLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAg
ICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwK
LSAgICAgICAgKFtdLAotICAgICAgICAgWyhHVEVTVF9PVEhFUl9ESVIsIEdURVNUX09USEVSX0RJ
UiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBBbGwgYXZhaWxhYmxlIGNvbmZpZ3Vy
YXRpb25zCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9y
dW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAg
ICAgICAgICAgICdhbGwnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFi
bGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFtd
LAotICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0
dGVzdCcpLAotICAgICAgICAgIChHVEVTVF9PUFRfRElSLCBHVEVTVF9PUFRfRElSICsgJy9ndGVz
dF91bml0dGVzdCcpXSkpCi0KLSAgICAjIEFsbCBidWlsdCBjb25maWd1cmF0aW9ucyAodW5idWls
dCBkb24ndCBjYXVzZSBmYWlsdXJlKS4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAg
ICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVz
dF91bml0dGVzdCddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBUcnVlLAotICAgICAg
ICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyAr
IFsndW5idWlsdCddKSwKLSAgICAgICAgKFtdLAotICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBH
VEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpLAotICAgICAgICAgIChHVEVTVF9PUFRf
RElSLCBHVEVTVF9PUFRfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIEEgY29t
YmluYXRpb24gb2YgYW4gZXhwbGljaXQgZGlyZWN0b3J5IGFuZCBhIGNvbmZpZ3VyYXRpb24uCi0g
ICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0
VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rlc3RfdW5pdHRlc3Qn
XSwKLSAgICAgICAgICAgICdvcHQnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBh
dmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAg
ICAgKFtdLAotICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVz
dF91bml0dGVzdCcpLAotICAgICAgICAgIChHVEVTVF9PUFRfRElSLCBHVEVTVF9PUFRfRElSICsg
Jy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIFNhbWUgdGVzdCBzcGVjaWZpZWQgaW4gYW4g
ZXhwbGljaXQgZGlyZWN0b3J5IGFuZCB2aWEgYSBjb25maWd1cmF0aW9uLgotICAgIHNlbGYuQXNz
ZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4o
Ci0gICAgICAgICAgICBbR1RFU1RfREJHX0RJUiwgJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAg
ICAgICAnZGJnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2Nv
bmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbXSwKLSAg
ICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3Qn
KV0pKQotCi0gICAgIyBBbGwgYnVpbHQgY29uZmlndXJhdGlvbnMgKyBleHBsaWNpdCBkaXJlY3Rv
cnkgKyBleHBsaWNpdCBjb25maWd1cmF0aW9uLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFs
KAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBb
R1RFU1RfREJHX0RJUiwgJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAnb3B0JywKLSAg
ICAgICAgICAgIFRydWUsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2Vs
Zi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFtdLAotICAgICAgICAgWyhHVEVTVF9E
QkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpLAotICAgICAgICAgIChH
VEVTVF9PUFRfRElSLCBHVEVTVF9PUFRfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAg
ZGVmIHRlc3RQeXRob25UZXN0c09ubHkoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3Rz
VG9SdW4gd2l0aCBwYXJhbWV0ZXJzIGRlc2lnbmF0aW5nIFB5dGhvbiB0ZXN0cyBvbmx5LiIiIgot
Ci0gICAgIyBBIGRlZmF1bHQgYnVpbGQuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0g
ICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rl
c3RfY29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwK
LSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJh
dGlvbnMpLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0
LnB5JyldLAotICAgICAgICAgW10pKQotCi0gICAgIyBBbiBleHBsaWNpdGx5IHNwZWNpZmllZCBk
aXJlY3RvcnkuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVz
dF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAndGVz
dC9ndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZh
bHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25m
aWd1cmF0aW9ucyksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9y
X3Rlc3QucHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEEgcGFydGljdWxhciBjb25maWd1
cmF0aW9uLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3Rf
cnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X2NvbG9yX3Rlc3QucHkn
XSwKLSAgICAgICAgICAgICdvdGhlcicsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAg
IGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAg
ICAgICAoWyhHVEVTVF9PVEhFUl9ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0g
ICAgICAgICBbXSkpCi0KLSAgICAjIEFsbCBhdmFpbGFibGUgY29uZmlndXJhdGlvbnMKLSAgICBz
ZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0
c1RvUnVuKAotICAgICAgICAgICAgWyd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAg
ICAgICAgICdhbGwnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVf
Y29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RF
U1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpLAotICAgICAgICAgIChHVEVT
VF9PUFRfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgW10pKQot
Ci0gICAgIyBBbGwgYnVpbHQgY29uZmlndXJhdGlvbnMgKHVuYnVpbHQgZG9uJ3QgY2F1c2UgZmFp
bHVyZSkuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9y
dW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfY29sb3JfdGVzdC5weSdd
LAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBUcnVlLAotICAgICAgICAgICAgYXZhaWxh
YmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyArIFsndW5idWlsdCdd
KSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScp
LAotICAgICAgICAgIChHVEVTVF9PUFRfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5Jyld
LAotICAgICAgICAgW10pKQotCi0gICAgIyBBIGNvbWJpbmF0aW9uIG9mIGFuIGV4cGxpY2l0IGRp
cmVjdG9yeSBhbmQgYSBjb25maWd1cmF0aW9uLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFs
KAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBb
R1RFU1RfREJHX0RJUiwgJ2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICdvcHQn
LAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlv
bnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwg
J3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpLAotICAgICAgICAgIChHVEVTVF9PUFRfRElSLCAn
dGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgW10pKQotCi0gICAgIyBTYW1l
IHRlc3Qgc3BlY2lmaWVkIGluIGFuIGV4cGxpY2l0IGRpcmVjdG9yeSBhbmQgdmlhIGEgY29uZmln
dXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0
X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIsICdndGVz
dF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnZGJnJywKLSAgICAgICAgICAgIEZhbHNl
LAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1
cmF0aW9ucyksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rl
c3QucHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEFsbCBidWlsdCBjb25maWd1cmF0aW9u
cyArIGV4cGxpY2l0IGRpcmVjdG9yeSArIGV4cGxpY2l0IGNvbmZpZ3VyYXRpb24uCi0gICAgc2Vs
Zi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNU
b1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rlc3RfY29sb3JfdGVzdC5weSdd
LAotICAgICAgICAgICAgJ29wdCcsCi0gICAgICAgICAgICBUcnVlLAotICAgICAgICAgICAgYXZh
aWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAg
IChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKSwKLSAgICAgICAg
ICAoR1RFU1RfT1BUX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAg
IFtdKSkKLQotICBkZWYgdGVzdENvbWJpbmF0aW9uT2ZCaW5hcnlBbmRQeXRob25UZXN0cyhzZWxm
KToKLSAgICAiIiJFeGVyY2lzZXMgR2V0VGVzdHNUb1J1biB3aXRoIG1peGVkIGJpbmFyeS9QeXRo
b24gdGVzdHMuIiIiCi0KLSAgICAjIFVzZSBvbmx5IGRlZmF1bHQgY29uZmlndXJhdGlvbiBmb3Ig
dGhpcyB0ZXN0LgotCi0gICAgIyBOZWl0aGVyIGJpbmFyeSBub3IgUHl0aG9uIHRlc3RzIGFyZSBz
cGVjaWZpZWQgc28gZmluZCBhbGwuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAg
ICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtdLAotICAg
ICAgICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9j
b25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoWyhHVEVT
VF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgWyhHVEVT
VF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAj
IFNwZWNpZnlpbmcgYm90aCBiaW5hcnkgYW5kIFB5dGhvbiB0ZXN0cy4KLSAgICBzZWxmLkFzc2Vy
dFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAot
ICAgICAgICAgICAgWydndGVzdF91bml0dGVzdCcsICdndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0g
ICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxl
X2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbKEdU
RVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAgICBbKEdU
RVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAg
ICMgU3BlY2lmeWluZyBiaW5hcnkgdGVzdHMgc3VwcHJlc3NlcyBQeXRob24gdGVzdHMuCi0gICAg
c2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVz
dHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICcn
LAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlv
bnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFtdLAotICAgICAgICAgWyhH
VEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAg
ICMgU3BlY2lmeWluZyBQeXRob24gdGVzdHMgc3VwcHJlc3NlcyBiaW5hcnkgdGVzdHMuCi0gICAg
c2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVz
dHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfY29sb3JfdGVzdC5weSddLAotICAgICAgICAg
ICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1
cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoWyhHVEVTVF9EQkdf
RElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgW10pKQotCi0gIGRl
ZiB0ZXN0SWdub3Jlc05vblRlc3RGaWxlcyhzZWxmKToKLSAgICAiIiJWZXJpZmllcyB0aGF0IEdl
dFRlc3RzVG9SdW4gaWdub3JlcyBub24tdGVzdCBmaWxlcyBpbiB0aGUgZmlsZXN5c3RlbS4iIiIK
LQotICAgIHNlbGYuZmFrZV9vcyA9IEZha2VPcyhGYWtlUGF0aCgKLSAgICAgICAgY3VycmVudF9k
aXI9b3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShydW5fdGVzdHNfdXRpbC5fX2ZpbGVf
XykpLAotICAgICAgICBrbm93bl9wYXRocz1bQWRkRXhlRXh0ZW5zaW9uKEdURVNUX0RCR19ESVIg
KyAnL2d0ZXN0X25vbnRlc3QnKSwKLSAgICAgICAgICAgICAgICAgICAgICd0ZXN0LyddKSkKLSAg
ICBzZWxmLnRlc3RfcnVubmVyID0gcnVuX3Rlc3RzX3V0aWwuVGVzdFJ1bm5lcihzY3JpcHRfZGly
PScuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmplY3RlZF9vcz1zZWxmLmZha2Vfb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5qZWN0ZWRfc3VicHJvY2Vzcz1Ob25lKQotICAgIHNlbGYuQXNz
ZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4o
Ci0gICAgICAgICAgICBbXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgVHJ1ZSwKLSAg
ICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlv
bnMpLAotICAgICAgICAoW10sIFtdKSkKLQotICBkZWYgdGVzdFdvcmtzRnJvbURpZmZlcmVudERp
cihzZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgR2V0VGVzdHNUb1J1biBmcm9tIGEgZGlyZWN0b3J5
IGRpZmZlcmVudCBmcm9tIHJ1bl90ZXN0LnB5J3MuIiIiCi0KLSAgICAjIEhlcmUgd2Ugc2ltdWxh
dGUgYW4gdGVzdCBzY3JpcHQgaW4gZGlyZWN0b3J5IC9kLyBjYWxsZWQgZnJvbSB0aGUKLSAgICAj
IGRpcmVjdG9yeSAvYS9iL2MvLgotICAgIHNlbGYuZmFrZV9vcyA9IEZha2VPcyhGYWtlUGF0aCgK
LSAgICAgICAgY3VycmVudF9kaXI9b3MucGF0aC5hYnNwYXRoKCcvYS9iL2MnKSwKLSAgICAgICAg
a25vd25fcGF0aHM9WwotICAgICAgICAgICAgJy9hL2IvYy8nLAotICAgICAgICAgICAgQWRkRXhl
RXh0ZW5zaW9uKCcvZC8nICsgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAg
ICAgICAgICAgIEFkZEV4ZUV4dGVuc2lvbignL2QvJyArIEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0
X3VuaXR0ZXN0JyksCi0gICAgICAgICAgICAnL2QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5J10p
KQotICAgIHNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyA9IFsnZGJnJywgJ29wdCddCi0gICAgc2Vs
Zi50ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5uZXIoc2NyaXB0X2Rpcj0nL2Qv
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmpl
Y3RlZF9vcz1zZWxmLmZha2Vfb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5qZWN0ZWRfc3VicHJvY2Vzcz1Ob25lKQotICAgICMgQSBiaW5hcnkg
dGVzdC4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1
bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF91bml0dGVzdCddLAotICAg
ICAgICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9j
b25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0g
ICAgICAgICBbKCcvZC8nICsgR1RFU1RfREJHX0RJUiwgJy9kLycgKyBHVEVTVF9EQkdfRElSICsg
Jy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIEEgUHl0aG9uIHRlc3QuCi0gICAgc2VsZi5B
c3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1
bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfY29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJycs
Ci0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9u
cz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoWygnL2QvJyArIEdURVNUX0RC
R19ESVIsICcvZC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sIFtdKSkKLQotICBkZWYgdGVz
dE5vblRlc3RCaW5hcnkoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3RzVG9SdW4gd2l0
aCBhIG5vbi10ZXN0IHBhcmFtZXRlci4iIiIKLQotICAgIHNlbGYuYXNzZXJ0XygKLSAgICAgICAg
bm90IHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3Rf
dW5pdHRlc3Rfbm90X3JlYWxseSddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBGYWxz
ZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmln
dXJhdGlvbnMpKQotCi0gIGRlZiB0ZXN0Tm9uRXhpc3RpbmdQeXRob25UZXN0KHNlbGYpOgotICAg
ICIiIkV4ZXJjaXNlcyBHZXRUZXN0c1RvUnVuIHdpdGggYSBub24tZXhpc3RlbnQgUHl0aG9uIHRl
c3QgcGFyYW1ldGVyLiIiIgotCi0gICAgc2VsZi5hc3NlcnRfKAotICAgICAgICBub3Qgc2VsZi50
ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydub25leGlzdGVudF90ZXN0
LnB5J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAg
YXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucykpCi0KLSAg
aWYgcnVuX3Rlc3RzX3V0aWwuSVNfV0lORE9XUyBvciBydW5fdGVzdHNfdXRpbC5JU19DWUdXSU46
Ci0KLSAgICBkZWYgdGVzdERvZXNOb3RQaWNrTm9uRXhlRmlsZXNPbldpbmRvd3Moc2VsZik6Ci0g
ICAgICAiIiJWZXJpZmllcyB0aGF0IEdldFRlc3RzVG9SdW4gZG9lcyBub3QgZmluZCBfdGVzdCBm
aWxlcyBvbiBXaW5kb3dzLiIiIgotCi0gICAgICBzZWxmLmZha2Vfb3MgPSBGYWtlT3MoRmFrZVBh
dGgoCi0gICAgICAgICAgY3VycmVudF9kaXI9b3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFt
ZShydW5fdGVzdHNfdXRpbC5fX2ZpbGVfXykpLAotICAgICAgICAgIGtub3duX3BhdGhzPVsnL2Qv
JyArIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3Rlc3QnLCAndGVzdC8nXSkpCi0gICAgICBzZWxm
LnRlc3RfcnVubmVyID0gcnVuX3Rlc3RzX3V0aWwuVGVzdFJ1bm5lcihzY3JpcHRfZGlyPScuJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluamVj
dGVkX29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluamVjdGVkX3N1YnByb2Nlc3M9Tm9uZSkKLSAgICAgIHNlbGYuQXNz
ZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1
bigKLSAgICAgICAgICAgICAgW10sCi0gICAgICAgICAgICAgICcnLAotICAgICAgICAgICAgICBU
cnVlLAotICAgICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2Nv
bmZpZ3VyYXRpb25zKSwKLSAgICAgICAgICAoW10sIFtdKSkKLQotCi1jbGFzcyBSdW5UZXN0c1Rl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAiIiJFeGVyY2lzZXMgVGVzdFJ1bm5lci5SdW5UZXN0
cy4iIiIKLQotICBkZWYgU3Bhd25TdWNjZXNzKHNlbGYsIHVudXNlZF9leGVjdXRhYmxlLCB1bnVz
ZWRfYXJndik6Ci0gICAgIiIiRmFrZXMgdGVzdCBzdWNjZXNzIGJ5IHJldHVybmluZyAwIGFzIGFu
IGV4aXQgY29kZS4iIiIKLQotICAgIHNlbGYubnVtX3NwYXduX2NhbGxzICs9IDEKLSAgICByZXR1
cm4gMAotCi0gIGRlZiBTcGF3bkZhaWx1cmUoc2VsZiwgdW51c2VkX2V4ZWN1dGFibGUsIHVudXNl
ZF9hcmd2KToKLSAgICAiIiJGYWtlcyB0ZXN0IHN1Y2Nlc3MgYnkgcmV0dXJuaW5nIDEgYXMgYW4g
ZXhpdCBjb2RlLiIiIgotCi0gICAgc2VsZi5udW1fc3Bhd25fY2FsbHMgKz0gMQotICAgIHJldHVy
biAxCi0KLSAgZGVmIHNldFVwKHNlbGYpOgotICAgIHNlbGYuZmFrZV9vcyA9IEZha2VPcyhGYWtl
UGF0aCgKLSAgICAgICAgY3VycmVudF9kaXI9b3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFt
ZShydW5fdGVzdHNfdXRpbC5fX2ZpbGVfXykpLAotICAgICAgICBrbm93bl9wYXRocz1bCi0gICAg
ICAgICAgICBBZGRFeGVFeHRlbnNpb24oR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3Qn
KSwKLSAgICAgICAgICAgIEFkZEV4ZUV4dGVuc2lvbihHVEVTVF9PUFRfRElSICsgJy9ndGVzdF91
bml0dGVzdCcpLAotICAgICAgICAgICAgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weSddKSkKLSAg
ICBzZWxmLmZha2VfY29uZmlndXJhdGlvbnMgPSBbJ2RiZycsICdvcHQnXQotICAgIHNlbGYudGVz
dF9ydW5uZXIgPSBydW5fdGVzdHNfdXRpbC5UZXN0UnVubmVyKAotICAgICAgICBzY3JpcHRfZGly
PW9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3IgJy4nLAotICAgICAgICBpbmplY3RlZF9vcz1z
ZWxmLmZha2Vfb3MsCi0gICAgICAgIGluamVjdGVkX3N1YnByb2Nlc3M9Tm9uZSkKLSAgICBzZWxm
Lm51bV9zcGF3bl9jYWxscyA9IDAgICMgQSBudW1iZXIgb2YgY2FsbHMgdG8gc3Bhd24uCi0KLSAg
ZGVmIHRlc3RSdW5QeXRob25UZXN0U3VjY2VzcyhzZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgUnVu
VGVzdHMgdG8gaGFuZGxlIGEgUHl0aG9uIHRlc3Qgc3VjY2Vzcy4iIiIKLQotICAgIHNlbGYuZmFr
ZV9vcy5zcGF3bl9pbXBsID0gc2VsZi5TcGF3blN1Y2Nlc3MKLSAgICBzZWxmLmFzc2VydEVxdWFs
KAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLlJ1blRlc3RzKAotICAgICAgICAgICAgWyhHVEVT
VF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAgICAgW10p
LAotICAgICAgICAwKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5udW1fc3Bhd25fY2FsbHMs
IDEpCi0KLSAgZGVmIHRlc3RSdW5CaW5hcnlUZXN0U3VjY2VzcyhzZWxmKToKLSAgICAiIiJFeGVy
Y2lzZXMgUnVuVGVzdHMgdG8gaGFuZGxlIGEgYmluYXJ5IHRlc3Qgc3VjY2Vzcy4iIiIKLQotICAg
IHNlbGYuZmFrZV9vcy5zcGF3bl9pbXBsID0gc2VsZi5TcGF3blN1Y2Nlc3MKLSAgICBzZWxmLmFz
c2VydEVxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLlJ1blRlc3RzKAotICAgICAgICAg
ICAgW10sCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0
ZXN0X3VuaXR0ZXN0JyldKSwKLSAgICAgICAgMCkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYu
bnVtX3NwYXduX2NhbGxzLCAxKQotCi0gIGRlZiB0ZXN0UnVuUHl0aG9uVGVzdEZhdWlsdXJlKHNl
bGYpOgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0cyB0byBoYW5kbGUgYSBQeXRob24gdGVzdCBm
YWlsdXJlLiIiIgotCi0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxmLlNwYXduRmFp
bHVyZQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuUnVu
VGVzdHMoCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rl
c3QucHknKV0sCi0gICAgICAgICAgICBbXSksCi0gICAgICAgIDEpCi0gICAgc2VsZi5hc3NlcnRF
cXVhbChzZWxmLm51bV9zcGF3bl9jYWxscywgMSkKLQotICBkZWYgdGVzdFJ1bkJpbmFyeVRlc3RG
YWlsdXJlKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0cyB0byBoYW5kbGUgYSBiaW5h
cnkgdGVzdCBmYWlsdXJlLiIiIgotCi0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxm
LlNwYXduRmFpbHVyZQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9y
dW5uZXIuUnVuVGVzdHMoCi0gICAgICAgICAgICBbXSwKLSAgICAgICAgICAgIFsoR1RFU1RfREJH
X0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pLAotICAgICAgICAxKQot
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5udW1fc3Bhd25fY2FsbHMsIDEpCi0KLSAgZGVmIHRl
c3RDb21iaW5lZFRlc3RTdWNjZXNzKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0cyB0
byBoYW5kbGUgYSBzdWNjZXNzIG9mIGJvdGggUHl0aG9uIGFuZCBiaW5hcnkgdGVzdC4iIiIKLQot
ICAgIHNlbGYuZmFrZV9vcy5zcGF3bl9pbXBsID0gc2VsZi5TcGF3blN1Y2Nlc3MKLSAgICBzZWxm
LmFzc2VydEVxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLlJ1blRlc3RzKAotICAgICAg
ICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcp
XSwKLSAgICAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3Rf
dW5pdHRlc3QnKV0pLAotICAgICAgICAwKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5udW1f
c3Bhd25fY2FsbHMsIDIpCi0KLSAgZGVmIHRlc3RDb21iaW5lZFRlc3RTdWNjZXNzQW5kRmFpbHVy
ZShzZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgUnVuVGVzdHMgdG8gaGFuZGxlIGEgc3VjY2VzcyBv
ZiBib3RoIFB5dGhvbiBhbmQgYmluYXJ5IHRlc3QuIiIiCi0KLSAgICBkZWYgU3Bhd25JbXBsKGV4
ZWN1dGFibGUsIGFyZ3YpOgotICAgICAgc2VsZi5udW1fc3Bhd25fY2FsbHMgKz0gMQotICAgICAg
IyBTaW11bGF0ZXMgZmFpbHVyZSBvZiBhIFB5dGhvbiB0ZXN0IGFuZCBzdWNjZXNzIG9mIGEgYmlu
YXJ5IHRlc3QuCi0gICAgICBpZiAnLnB5JyBpbiBleGVjdXRhYmxlIG9yICcucHknIGluIGFyZ3Zb
MF06Ci0gICAgICAgIHJldHVybiAxCi0gICAgICBlbHNlOgotICAgICAgICByZXR1cm4gMAotCi0g
ICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBTcGF3bkltcGwKLSAgICBzZWxmLmFzc2VydEVx
dWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLlJ1blRlc3RzKAotICAgICAgICAgICAgWyhH
VEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSwKLSAgICAg
ICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3Qn
KV0pLAotICAgICAgICAwKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5udW1fc3Bhd25fY2Fs
bHMsIDIpCi0KLQotY2xhc3MgUGFyc2VBcmdzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICIi
IkV4ZXJjaXNlcyBQYXJzZUFyZ3MuIiIiCi0KLSAgZGVmIHRlc3ROb09wdGlvbnMoc2VsZik6Ci0g
ICAgb3B0aW9ucywgYXJncyA9IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygnZ3Rlc3QnLCBhcmd2
PVsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBbJ3NjcmlwdC5weSdd
KQotICAgIHNlbGYuYXNzZXJ0XyhvcHRpb25zLmNvbmZpZ3VyYXRpb25zIGlzIE5vbmUpCi0gICAg
c2VsZi5hc3NlcnRGYWxzZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRpb25zKQotCi0gIGRlZiB0
ZXN0T3B0aW9uQyhzZWxmKToKLSAgICBvcHRpb25zLCBhcmdzID0gcnVuX3Rlc3RzX3V0aWwuUGFy
c2VBcmdzKAotICAgICAgICAnZ3Rlc3QnLCBhcmd2PVsnc2NyaXB0LnB5JywgJy1jJywgJ2RiZydd
KQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgWydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFz
c2VydEVxdWFsKG9wdGlvbnMuY29uZmlndXJhdGlvbnMsICdkYmcnKQotICAgIHNlbGYuYXNzZXJ0
RmFsc2Uob3B0aW9ucy5idWlsdF9jb25maWd1cmF0aW9ucykKLQotICBkZWYgdGVzdE9wdGlvbkEo
c2VsZik6Ci0gICAgb3B0aW9ucywgYXJncyA9IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygnZ3Rl
c3QnLCBhcmd2PVsnc2NyaXB0LnB5JywgJy1hJ10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdz
LCBbJ3NjcmlwdC5weSddKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5jb25maWd1cmF0
aW9ucywgJ2FsbCcpCi0gICAgc2VsZi5hc3NlcnRGYWxzZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3Vy
YXRpb25zKQotCi0gIGRlZiB0ZXN0T3B0aW9uQihzZWxmKToKLSAgICBvcHRpb25zLCBhcmdzID0g
cnVuX3Rlc3RzX3V0aWwuUGFyc2VBcmdzKCdndGVzdCcsIGFyZ3Y9WydzY3JpcHQucHknLCAnLWIn
XSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5h
c3NlcnRfKG9wdGlvbnMuY29uZmlndXJhdGlvbnMgaXMgTm9uZSkKLSAgICBzZWxmLmFzc2VydFRy
dWUob3B0aW9ucy5idWlsdF9jb25maWd1cmF0aW9ucykKLQotICBkZWYgdGVzdE9wdGlvbkNBbmRP
cHRpb25CKHNlbGYpOgotICAgIG9wdGlvbnMsIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFy
Z3MoCi0gICAgICAgICdndGVzdCcsIGFyZ3Y9WydzY3JpcHQucHknLCAnLWMnLCAnZGJnJywgJy1i
J10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBbJ3NjcmlwdC5weSddKQotICAgIHNlbGYu
YXNzZXJ0RXF1YWwob3B0aW9ucy5jb25maWd1cmF0aW9ucywgJ2RiZycpCi0gICAgc2VsZi5hc3Nl
cnRUcnVlKG9wdGlvbnMuYnVpbHRfY29uZmlndXJhdGlvbnMpCi0KLSAgZGVmIHRlc3RPcHRpb25I
KHNlbGYpOgotICAgIGhlbHBfY2FsbGVkID0gW0ZhbHNlXQotCi0gICAgIyBTdXBwcmVzc2VzIGxp
bnQgd2FybmluZyBvbiB1bnVzZWQgYXJndW1lbnRzLiAgVGhlc2UgYXJndW1lbnRzIGFyZQotICAg
ICMgcmVxdWlyZWQgYnkgb3B0cGFyc2UsIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIHVudXNlZC4KLSAg
ICAjIHB5bGludDogZGlzYWJsZS1tc2c9VzA2MTMKLSAgICBkZWYgVmVyaWZ5SGVscChvcHRpb24s
IG9wdCwgdmFsdWUsIHBhcnNlcik6Ci0gICAgICBoZWxwX2NhbGxlZFswXSA9IFRydWUKLQotICAg
ICMgVmVyaWZpZXMgdGhhdCAtaCBjYXVzZXMgdGhlIGhlbHAgY2FsbGJhY2sgdG8gYmUgY2FsbGVk
LgotICAgIGhlbHBfY2FsbGVkWzBdID0gRmFsc2UKLSAgICBfLCBhcmdzID0gcnVuX3Rlc3RzX3V0
aWwuUGFyc2VBcmdzKAotICAgICAgICAnZ3Rlc3QnLCBhcmd2PVsnc2NyaXB0LnB5JywgJy1oJ10s
IGhlbHBfY2FsbGJhY2s9VmVyaWZ5SGVscCkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsn
c2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRUcnVlKGhlbHBfY2FsbGVkWzBdKQotCi0gICAg
IyBWZXJpZmllcyB0aGF0IC0taGVscCBjYXVzZXMgdGhlIGhlbHAgY2FsbGJhY2sgdG8gYmUgY2Fs
bGVkLgotICAgIGhlbHBfY2FsbGVkWzBdID0gRmFsc2UKLSAgICBfLCBhcmdzID0gcnVuX3Rlc3Rz
X3V0aWwuUGFyc2VBcmdzKAotICAgICAgICAnZ3Rlc3QnLCBhcmd2PVsnc2NyaXB0LnB5JywgJy0t
aGVscCddLCBoZWxwX2NhbGxiYWNrPVZlcmlmeUhlbHApCi0gICAgc2VsZi5hc3NlcnRFcXVhbChh
cmdzLCBbJ3NjcmlwdC5weSddKQotICAgIHNlbGYuYXNzZXJ0VHJ1ZShoZWxwX2NhbGxlZFswXSkK
LQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICB1bml0dGVzdC5tYWluKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9EZWJ1Z1Byb2plY3Qu
eGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvRGVidWdQcm9q
ZWN0LnhjY29uZmlnCmluZGV4IDU3NmYzZDliZjBlMjRmNmVlOTg5MTgxM2U0ZTE4ZTRmMWMxYmU0
NjIuLjc2ZjNhYjI5NWE5MTA2NzhjNTVjNTBmYTdmOGFjNzRlNzczMDJmOTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9EZWJ1Z1Byb2plY3QueGNjb25m
aWcKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0RlYnVnUHJvamVj
dC54Y2NvbmZpZwpAQCAtNSw3ICs1LDcgQEAKIC8vICBleGFtcGxlcy4gSXQgaXMgc2V0IGluIHRo
ZSAiQmFzZWQgT246IiBkcm9wZG93biBpbiB0aGUgIlByb2plY3QiIGluZm8KIC8vICBkaWFsb2cu
CiAvLyAgVGhpcyBmaWxlIGlzIGJhc2VkIG9uIHRoZSBYY29kZSBDb25maWd1cmF0aW9uIGZpbGVz
IGluOgotLy8gIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGUtdG9vbGJveC1mb3ItbWFj
LworLy8gIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYwog
Ly8gCiAKICNpbmNsdWRlICJHZW5lcmFsLnhjY29uZmlnIgpAQCAtMjksOSArMjksNiBAQCBPVEhF
Ul9DRkxBR1MgPSAkKE9USEVSX0NGTEFHUykgLURERUJVRz0xCiAvLyAvLyBUdXJucyBvbiBzcGVj
aWFsIEMrKyBTVEwgY2hlY2tzIHRvICJlbmNvdXJhZ2UiIGdvb2QgU1RMIHVzZQogLy8gR0NDX1BS
RVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUykg
X0dMSUJDWFhfREVCVUdfUEVEQU5USUMgX0dMSUJDWFhfREVCVUcgX0dMSUJDUFBfQ09OQ0VQVF9D
SEVDS1MKIAotLy8gVXNlZCBieSBIRUFERVJfU0VBUkNIX1BBVEhTIGluIEdlbmVyYWwueGNjb25m
aWcKLVdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUiA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9X
ZWJDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyczsKLQogT05MWV9BQ1RJVkVfQVJDSCA9IFlF
UwogCiBTREtST09UID0gJChTREtST09UXyQoVVNFX0lOVEVSTkFMX1NESykpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0ZyYW1ld29ya1RhcmdldC54
Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9GcmFtZXdvcmtU
YXJnZXQueGNjb25maWcKaW5kZXggZjRkYTlkMjM5OTE2MzVhYmRjZGE4MmI2YTA2ZWFjM2ZjODU4
OTBhZC4uN2QwMjRjZDI5NDg2N2MxNTczMmJlMmU4OWM3OWI4N2ViYWVkYWY0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0ZyYW1ld29ya1RhcmdldC54
Y2NvbmZpZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvRnJhbWV3
b3JrVGFyZ2V0LnhjY29uZmlnCkBAIC00LDcgKzQsNyBAQAogLy8gIFRoZXNlIGFyZSBGcmFtZXdv
cmsgdGFyZ2V0IHNldHRpbmdzIGZvciB0aGUgZ3Rlc3QgZnJhbWV3b3JrIGFuZCBleGFtcGxlcy4g
SXQKIC8vICBpcyBzZXQgaW4gdGhlICJCYXNlZCBPbjoiIGRyb3Bkb3duIGluIHRoZSAiVGFyZ2V0
IiBpbmZvIGRpYWxvZy4KIC8vICBUaGlzIGZpbGUgaXMgYmFzZWQgb24gdGhlIFhjb2RlIENvbmZp
Z3VyYXRpb24gZmlsZXMgaW46Ci0vLyAgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS10
b29sYm94LWZvci1tYWMvCisvLyAgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGUtdG9v
bGJveC1mb3ItbWFjCiAvLyAKIAogLy8gRHluYW1pYyBsaWJzIG5lZWQgdG8gYmUgcG9zaXRpb24g
aW5kZXBlbmRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0Nv
bmZpZy9HZW5lcmFsLnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29u
ZmlnL0dlbmVyYWwueGNjb25maWcKaW5kZXggM2JkMmE1ODZhNTcwNWZjZjY2ZWMyZDk1OTJhZmFj
M2Q4ZDZkN2RlMC4uNTNlMDNkZTUxY2MyZjliNzE1NmJkNTY3NGExNzNhMGYzYTNmYTQxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0dlbmVyYWwueGNj
b25maWcKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0dlbmVyYWwu
eGNjb25maWcKQEAgLTE4LDcgKzE4LDcgQEAgR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGls
ZXJzLmxsdm0uY2xhbmcuMV8wOwogCiBBUkNIUyA9ICQoQVJDSFNfU1RBTkRBUkRfMzJfNjRfQklU
KTsKIAotSEVBREVSX1NFQVJDSF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9j
YWwvaW5jbHVkZSAiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0ZvcndhcmRpbmdIZWFk
ZXJzIiAuLi8gLi4vaW5jbHVkZS8KK0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUgLi4vIC4uL2luY2x1ZGUvCiAKIC8vIFplcm9saW5r
IHByZXZlbnRzIGxpbmsgd2FybmluZ3Mgc28gdHVybiBpdCBvZmYKIFpFUk9fTElOSyA9IE5PCkBA
IC01OSw4ICs1OSw2IEBAIEFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5PCiAvLyBUdXJuIG9u
IHBvc2l0aW9uIGRlcGVuZGVudCBjb2RlIGZvciBtb3N0IGNhc2VzIChvdmVycmlkZGVuIHdoZXJl
IGFwcHJvcHJpYXRlKQogR0NDX0RZTkFNSUNfTk9fUElDID0gWUVTCiAKLUdDQ19QUkVQUk9DRVNT
T1JfREVGSU5JVElPTlMgPSAkKEdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMpIEdURVNUX0hB
U19UUjFfVFVQTEU9MCBHVEVTVF9IQVNfUlRUST0wOwotCiBDTEFOR19DWFhfTElCUkFSWSA9IGxp
YmMrKzsKIAogVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IgPSAkKE1BQ19PU19YX1ZFUlNJ
T05fTUFKT1IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29u
ZmlnL1Byb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
eGNvZGUvQ29uZmlnL1Byb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmlnCmluZGV4IDAxNmM2ODc4ZTk3
NjEwMTg4ZGFhODYyOWQzNTIxYWI5NDc3NmJhYzYuLmQ5Mjc1ZjAyZjg1NzJhMDE4MzVjODUwNzk3
YWRhYmNiNTA0NTYxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2Rl
L0NvbmZpZy9Qcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZpZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC94Y29kZS9Db25maWcvUHJvZHVjdGlvblByb2plY3QueGNjb25maWcKQEAgLTEwLDI1
ICsxMCw2IEBACiAKICNpbmNsdWRlICJSZWxlYXNlUHJvamVjdC54Y2NvbmZpZyIKIAotLy8gVXNl
ZCBieSBIRUFERVJfU0VBUkNIX1BBVEhTIGluIEdlbmVyYWwueGNjb25maWcKLVdFQkNPUkVfUFJJ
VkFURV9IRUFERVJTX0RJUiA9ICQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSXyQoV0tfVVNF
X09WRVJSSURFX0ZSQU1FV09SS1NfRElSKSk7Ci1XRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVJf
Tk8gPSAkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9XZWJLaXQuZnJhbWV3b3JrL1Zl
cnNpb25zL0EvRnJhbWV3b3Jrcy9XZWJDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyczsKLVdF
QkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUl9ZRVMgPSAkKFdLX09WRVJSSURFX0ZSQU1FV09SS1Nf
RElSKS9XZWJDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyczsKLQotRlJBTUVXT1JLX1NFQVJD
SF9QQVRIUyA9ICQoV0tfUVVPVEVEX09WRVJSSURFX0ZSQU1FV09SS1NfRElSKSAkKGluaGVyaXRl
ZCk7Ci0KIE9OTFlfQUNUSVZFX0FSQ0ggPSBOTwogCiBTREtST09UID0gbWFjb3N4LmludGVybmFs
OwotCi1XS19FTVBUWV8gPSBZRVM7Ci1XS19OT1RfID0gWUVTOwotV0tfTk9UX1lFUyA9IE5POwot
Ci1XS19VU0VfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVJbc2RrPW1hY29zeCpdID0gJChXS19OT1Rf
JChXS19FTVBUWV8kKFdLX09WRVJSSURFX0ZSQU1FV09SS1NfRElSKSkpOwotCi1XS19PVkVSUklE
RV9GUkFNRVdPUktTX0RJUiA9ICQoV0tfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVJfVVNFX1NUQUdJ
TkdfSU5TVEFMTF9QQVRIXyQoVVNFX1NUQUdJTkdfSU5TVEFMTF9QQVRIKSk7Ci1XS19PVkVSUklE
RV9GUkFNRVdPUktTX0RJUl9VU0VfU1RBR0lOR19JTlNUQUxMX1BBVEhfWUVTID0gJChTWVNURU1f
TElCUkFSWV9ESVIpL1N0YWdlZEZyYW1ld29ya3MvU2FmYXJpOwotCi1XS19RVU9URURfT1ZFUlJJ
REVfRlJBTUVXT1JLU19ESVIgPSAkKFdLX1FVT1RFRF9PVkVSUklERV9GUkFNRVdPUktTX0RJUl8k
KFdLX1VTRV9PVkVSUklERV9GUkFNRVdPUktTX0RJUikpOwotV0tfUVVPVEVEX09WRVJSSURFX0ZS
QU1FV09SS1NfRElSX1lFUyA9ICIkKFdLX09WRVJSSURFX0ZSQU1FV09SS1NfRElSKSI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvUmVsZWFzZVByb2pl
Y3QueGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvUmVsZWFz
ZVByb2plY3QueGNjb25maWcKaW5kZXggMTNlOTE3ZmJmYTJkZGYyZDNlZTUzMTU5OGRjMGZiMGYy
YjViZjg3Ni4uZTBkZGJlOTY0ZDliMDA2N2FjOTFiNjYzZWM0MGVlYWYwODkzNGNjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1JlbGVhc2VQcm9qZWN0
LnhjY29uZmlnCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9SZWxl
YXNlUHJvamVjdC54Y2NvbmZpZwpAQCAtNSw3ICs1LDcgQEAKIC8vICBhbmQgZXhhbXBsZXMuIEl0
IGlzIHNldCBpbiB0aGUgIkJhc2VkIE9uOiIgZHJvcGRvd24gaW4gdGhlICJQcm9qZWN0IiBpbmZv
CiAvLyAgZGlhbG9nLgogLy8gIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiB0aGUgWGNvZGUgQ29uZmln
dXJhdGlvbiBmaWxlcyBpbjoKLS8vICBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXRv
b2xib3gtZm9yLW1hYy8KKy8vICBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZS10b29s
Ym94LWZvci1tYWMKIC8vIAogCiAjaW5jbHVkZSAiR2VuZXJhbC54Y2NvbmZpZyIKQEAgLTMxLDkg
KzMxLDYgQEAgT1RIRVJfQ0ZMQUdTID0gJChPVEhFUl9DRkxBR1MpIC1ETkRFQlVHPTEgLVduby11
bnVzZWQtdmFyaWFibGUKIC8vIFdoZW4gd2Ugc3RyaXAgd2Ugd2FudCB0byBzdHJpcCBhbGwgc3lt
Ym9scyBpbiByZWxlYXNlLCBidXQgc2F2ZSBleHRlcm5hbHMuCiBTVFJJUF9TVFlMRSA9IGFsbAog
Ci0vLyBVc2VkIGJ5IEhFQURFUl9TRUFSQ0hfUEFUSFMgaW4gR2VuZXJhbC54Y2NvbmZpZwotV0VC
Q09SRV9QUklWQVRFX0hFQURFUlNfRElSID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL1dlYkNvcmUu
ZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwotCiBPTkxZX0FDVElWRV9BUkNIID0gWUVTCiAKIFNE
S1JPT1QgPSAkKFNES1JPT1RfJChVU0VfSU5URVJOQUxfU0RLKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvU3RhdGljTGlicmFyeVRhcmdldC54Y2Nv
bmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9TdGF0aWNMaWJyYXJ5
VGFyZ2V0LnhjY29uZmlnCmluZGV4IGRkMzMyNTVhOTQ0NzcwMjBjZjExZjcwNTVlNDRhZTI1Mjhl
YjlmOTcuLjA0YjczYmM5MmQwMTIxZDk1OGY1Zjg2OTlkYWYzNzdlYjY5OGMzOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9TdGF0aWNMaWJyYXJ5VGFy
Z2V0LnhjY29uZmlnCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9T
dGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmlnCkBAIC00LDcgKzQsNyBAQAogLy8gIFRoZXNlIGFy
ZSBzdGF0aWMgbGlicmFyeSB0YXJnZXQgc2V0dGluZ3MgZm9yIGxpYmd0ZXN0LmEuIEl0CiAvLyAg
aXMgc2V0IGluIHRoZSAiQmFzZWQgT246IiBkcm9wZG93biBpbiB0aGUgIlRhcmdldCIgaW5mbyBk
aWFsb2cuCiAvLyAgVGhpcyBmaWxlIGlzIGJhc2VkIG9uIHRoZSBYY29kZSBDb25maWd1cmF0aW9u
IGZpbGVzIGluOgotLy8gIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGUtdG9vbGJveC1m
b3ItbWFjLworLy8gIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xlLXRvb2xib3gtZm9y
LW1hYwogLy8gCiAKIC8vIFN0YXRpYyBsaWJzIGNhbiBiZSBpbmNsdWRlZCBpbiBidW5kbGVzIHNv
IG1ha2UgdGhlbSBwb3NpdGlvbiBpbmRlcGVuZGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0X3Rlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS93
aWRnZXRfdGVzdC5jYwppbmRleCA2MWMwZDJmZmQ3NmQxODA2YWEzNTk3OWQ4YWUzNjQxMDY0OGFh
YTE1Li44NzI1OTk0MjE4NTE0MDhlNzZhYWI2YzU2MGI4MTg5MjQ1OWJiZDJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS93
aWRnZXRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9TYW1wbGVz
L0ZyYW1ld29ya1NhbXBsZS93aWRnZXRfdGVzdC5jYwpAQCAtMzYsNyArMzYsNyBAQAogLy8gVGhp
cyBpcyBhIHNpbXBsZSB0ZXN0IGZpbGUgZm9yIHRoZSBXaWRnZXQgY2xhc3MgaW4gdGhlIFdpZGdl
dC5mcmFtZXdvcmsKIAogI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5o
PgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKICNpbmNsdWRlIDxXaWRnZXQvd2lkZ2V0Lmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL1NjcmlwdHMvdmVy
c2lvbmdlbmVyYXRlLnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2NyaXB0cy92
ZXJzaW9uZ2VuZXJhdGUucHkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA4
MWRlOGM5NmFjNWQ4NmNhNjM5NDU2YzkwYzQzMzA2N2JkZmQ0MGU1Li5iZGQ3NTQxYWQ3OTdmYTY3
M2Y2NWRhMzgxNjhlMTU4MGZkN2RkZTNhCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hj
b2RlL1NjcmlwdHMvdmVyc2lvbmdlbmVyYXRlLnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3hjb2RlL1NjcmlwdHMvdmVyc2lvbmdlbmVyYXRlLnB5CkBAIC0yOSw3ICsyOSw3IEBACiAj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0iIiJBIHNjcmlwdCB0byBwcmVwYXJlIHZl
cnNpb24gaW5mb3JtdGlvbiBmb3IgdXNlIHRoZSBndGVzdCBJbmZvLnBsaXN0IGZpbGUuCisiIiJB
IHNjcmlwdCB0byBwcmVwYXJlIHZlcnNpb24gaW5mb3JtYXRpb24gZm9yIHVzZSB0aGUgZ3Rlc3Qg
SW5mby5wbGlzdCBmaWxlLgogCiAgIFRoaXMgc2NyaXB0IGV4dHJhY3RzIHRoZSB2ZXJzaW9uIGlu
Zm9ybWF0aW9uIGZyb20gdGhlIGNvbmZpZ3VyZS5hYyBmaWxlIGFuZAogICB1c2VzIGl0IHRvIGdl
bmVyYXRlIGEgaGVhZGVyIGZpbGUgY29udGFpbmluZyB0aGUgc2FtZSBpbmZvcm1hdGlvbi4gVGhl
CkBAIC00Miw3ICs0Miw3IEBACiAgICAgMS4gVGhlIEFDX0lOSVQgbWFjcm8gd2lsbCBiZSBjb250
YWluZWQgd2l0aGluIHRoZSBmaXJzdCAxMDI0IGNoYXJhY3RlcnMKICAgICAgICBvZiBjb25maWd1
cmUuYWMKICAgICAyLiBUaGUgdmVyc2lvbiBzdHJpbmcgd2lsbCBiZSAzIGludGVnZXJzIHNlcGFy
YXRlZCBieSBwZXJpb2RzIGFuZCB3aWxsIGJlCi0gICAgICAgc3Vycm91bmRlZCBieSBzcXVyZSBi
cmFja2V0cywgIlsiIGFuZCAiXSIgKGUuZy4gWzEuMC4xXSkuIFRoZSBmaXJzdAorICAgICAgIHN1
cnJvdW5kZWQgYnkgc3F1YXJlIGJyYWNrZXRzLCAiWyIgYW5kICJdIiAoZS5nLiBbMS4wLjFdKS4g
VGhlIGZpcnN0CiAgICAgICAgc2VnbWVudCByZXByZXNlbnRzIHRoZSBtYWpvciB2ZXJzaW9uLCB0
aGUgc2Vjb25kIHJlcHJlc2VudHMgdGhlIG1pbm9yCiAgICAgICAgdmVyc2lvbiBhbmQgdGhlIHRo
aXJkIHJlcHJlc2VudHMgdGhlIGZpeCB2ZXJzaW9uLgogICAgIDMuIE5vICIpIiBjaGFyYWN0ZXIg
ZXhpc3RzIGJldHdlZW4gdGhlIG9wZW5pbmcgIigiIGFuZCBjbG9zaW5nICIpIiBvZgpAQCAtNjgs
NyArNjgsNyBAQCBjb25maWdfZmlsZS5jbG9zZSgpCiAKICMgRXh0cmFjdCB0aGUgdmVyc2lvbiBz
dHJpbmcgZnJvbSB0aGUgQUNfSU5JVCBtYWNybwogIyAgIFRoZSBmb2xsb3dpbmcgaW5pdF9leHBy
ZXNzaW9uIG1lYW5zOgotIyAgICAgRXh0cmFjdCB0aHJlZSBpbnRlZ2VycyBzZXBhcmF0ZWQgYnkg
cGVyaW9kcyBhbmQgc3Vycm91bmRlZCBieSBzcXVyZQorIyAgICAgRXh0cmFjdCB0aHJlZSBpbnRl
Z2VycyBzZXBhcmF0ZWQgYnkgcGVyaW9kcyBhbmQgc3Vycm91bmRlZCBieSBzcXVhcmUKICMgICAg
IGJyYWNrZXRzKGUuZy4gIlsxLjAuMV0iKSBiZXR3ZWVuICJBQ19JTklUKCIgYW5kICIpIi4gRG8g
bm90IGJlIGdyZWVkeQogIyAgICAgKCo/IGlzIHRoZSBub24tZ3JlZWR5IGZsYWcpIHNpbmNlIHRo
YXQgd291bGQgcHVsbCBpbiBldmVyeXRoaW5nIGJldHdlZW4KICMgICAgIHRoZSBmaXJzdCAiKCIg
YW5kIHRoZSBsYXN0ICIpIiBpbiB0aGUgZmlsZS4KQEAgLTg4LDcgKzg4LDcgQEAgZmlsZV9kYXRh
ID0gIiIiLy8KIC8vIGlzIGV4ZWN1dGVkIGluIGEgIlJ1biBTY3JpcHQiIGJ1aWxkIHBoYXNlIHdo
ZW4gY3JlYXRpbmcgZ3Rlc3QuZnJhbWV3b3JrLiBUaGlzCiAvLyBoZWFkZXIgZmlsZSBpcyBub3Qg
dXNlZCBkdXJpbmcgY29tcGlsYXRpb24gb2YgQy1zb3VyY2UuIFJhdGhlciwgaXQgc2ltcGx5CiAv
LyBkZWZpbmVzIHNvbWUgdmVyc2lvbiBzdHJpbmdzIGZvciBzdWJzdGl0dXRpb24gaW4gdGhlIElu
Zm8ucGxpc3QuIEJlY2F1c2Ugb2YKLS8vIHRoaXMsIHdlIGFyZSBub3Qgbm90IHJlc3RyaWN0ZWQg
dG8gQy1zeW50YXggbm9yIGFyZSB3ZSB1c2luZyBpbmNsdWRlIGd1YXJkcy4KKy8vIHRoaXMsIHdl
IGFyZSBub3QgcmVzdHJpY3RlZCB0byBDLXN5bnRheCBub3IgYXJlIHdlIHVzaW5nIGluY2x1ZGUg
Z3VhcmRzLgogLy8KIAogI2RlZmluZSBHVEVTVF9WRVJTSU9OSU5GT19TSE9SVCAlcy4lcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvZ3Rlc3QueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL2d0ZXN0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWZmM2ZiYWZlZmJhYWMzYjgzODI0OGIxN2Q1Njg3
NmIzZDVmNmJlOC4uMjA5MTVjZWIxMTExNTNmMDBmYzIwNDJjMzM4YzI0N2IxZDc0MmRlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvZ3Rlc3QueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9ndGVzdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNyw3ICszNyw2IEBACiAvKiBFbmQgUEJYQWdn
cmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KLQkJMUEwQTRDNDUxNEI3QTNCNTAwODk1MTM1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMEE0
QzQ0MTRCN0EzQjUwMDg5NTEzNSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CiAJ
CTIyNEExMkEzMEU5RUFEQ0MwMEJEMTdGRCAvKiBndGVzdC10ZXN0LXBhcnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyNEExMkEyMEU5RUFEQ0MwMEJE
MTdGRCAvKiBndGVzdC10ZXN0LXBhcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
dWJsaWMsICk7IH07IH07CiAJCTNCRjZGMkEwMEU3OUI1QUQwMDBGMkVFRSAvKiBndGVzdC10eXBl
LXV0aWwuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gM0JGNkYyOUYwRTc5QjVBRDAwMEYyRUVFIC8qIGd0ZXN0LXR5cGUtdXRpbC5o
ICovOyB9OwogCQkzQkY2RjJBNTBFNzlCNjE2MDAwRjJFRUUgLyogZ3Rlc3QtdHlwZWQtdGVzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0JGNkYyQTQw
RTc5QjYxNjAwMEYyRUVFIC8qIGd0ZXN0LXR5cGVkLXRlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC00Nyw3ICs0Niw3IEBACiAJCTQwNDg4NDNC
MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzREUwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk0MDQ4ODQzQzBF
MkY3OTlCMDBDRjc2NTggLyogZ3Rlc3RfcHJlZF9pbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNERjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rl
c3RfcHJlZF9pbXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9
OyB9OwogCQk0MDQ4ODQzRDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3RfcHJvZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRTAwRTJGNzk5QjAw
Q0Y3NjU4IC8qIGd0ZXN0X3Byb2QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07Ci0JCTQwNDg4NDUwMEUyRjc5OUIwMENGNzY1OCAvKiBSRUFETUUgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0Y2MEUyRjc5
OUIwMENGNzY1OCAvKiBSRUFETUUgKi87IH07CisJCTQwNDg4NDUwMEUyRjc5OUIwMENGNzY1OCAv
KiBSRUFETUUubWQgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQwNDg4M0Y2MEUyRjc5OUIwMENGNzY1OCAvKiBSRUFETUUubWQgKi87IH07CiAJCTQwNDg4
NEEwMEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmggaW4gQ29w
eSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQw
NDg4M0UyMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmggKi87
IH07CiAJCTQwNDg4NEExMEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1maWxlcGF0aC5oIGluIENv
cHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MDQ4ODNFMzBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtZmlsZXBhdGguaCAqLzsgfTsKIAkJNDA0
ODg0QTIwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0LWludGVybmFsLmggaW4gQ29weSBIZWFkZXJz
IEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0U0MEUy
Rjc5OUIwMENGNzY1OCAvKiBndGVzdC1pbnRlcm5hbC5oICovOyB9OwpAQCAtNTUsNyArNTQsNyBA
QAogCQk0MDQ4ODRBNDBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3Qtc3RyaW5nLmggaW4gQ29weSBI
ZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4
M0U2MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zdHJpbmcuaCAqLzsgfTsKIAkJNDA0ODg0QUMw
RTJGN0NEOTAwQ0Y3NjU4IC8qIENIQU5HRVMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4NEE5MEUyRjdDRDkwMENGNzY1OCAvKiBDSEFOR0VTICov
OyB9OwogCQk0MDQ4ODRBRDBFMkY3Q0Q5MDBDRjc2NTggLyogQ09OVFJJQlVUT1JTIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODRBQTBFMkY3Q0Q5
MDBDRjc2NTggLyogQ09OVFJJQlVUT1JTICovOyB9OwotCQk0MDQ4ODRBRTBFMkY3Q0Q5MDBDRjc2
NTggLyogQ09QWUlORyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDA0ODg0QUIwRTJGN0NEOTAwQ0Y3NjU4IC8qIENPUFlJTkcgKi87IH07CisJCTQwNDg4
NEFFMEUyRjdDRDkwMENGNzY1OCAvKiBMSUNFTlNFIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogTElDRU5T
RSAqLzsgfTsKIAkJNDA4OTlGM0EwRkZBNzBENDAwMEIyOUFFIC8qIGd0ZXN0LWFsbC5jYyBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyNEExMkExMEU5RUFE
QTcwMEJEMTdGRCAvKiBndGVzdC1hbGwuY2MgKi87IH07CiAJCTQwODk5RjUwMEZGQTcyODEwMDBC
MjlBRSAvKiBndGVzdC10dXBsZS5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDg5OUY0RDBGRkE3MjcxMDAwQjI5QUUgLyogZ3Rl
c3QtdHVwbGUuaCAqLzsgfTsKIAkJNDA4OTlGNTMwRkZBNzJBMDAwMEIyOUFFIC8qIGd0ZXN0X3Vu
aXR0ZXN0LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
M0IyMzhDMTIwRTdGRTEzQzAwODQ2RTExIC8qIGd0ZXN0X3VuaXR0ZXN0LmNjICovOyB9OwpAQCAt
NzksNiArNzgsMTQgQEAKIAkJNDUzOUM5MzgwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LWxpbmtl
ZF9wdHIuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDUzOUM5MzUwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LWxpbmtlZF9wdHIu
aCAqLzsgfTsKIAkJNDUzOUM5MzkwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwt
Z2VuZXJhdGVkLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ1MzlDOTM2MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11
dGlsLWdlbmVyYXRlZC5oICovOyB9OwogCQk0NTM5QzkzQTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rl
c3QtcGFyYW0tdXRpbC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NTM5QzkzNzBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFy
YW0tdXRpbC5oICovOyB9OworCQk0NTY3QzgxODEyNjRGRjcxMDA3NzQwQkUgLyogZ3Rlc3QtcHJp
bnRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1
NjdDODE3MTI2NEZGNzEwMDc3NDBCRSAvKiBndGVzdC1wcmludGVycy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJRjY3RDRGM0UxQzdGNUQ4QjAwMTdD
NzI5IC8qIGd0ZXN0LXBvcnQtYXJjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjY3RDRGM0QxQzdGNUQ4QjAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQtYXJj
aC5oICovOyB9OworCQlGNjdENEYzRjFDN0Y1REE3MDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNo
LmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY2N0Q0RjNEMUM3RjVEOEIwMDE3QzcyOSAvKiBndGVzdC1wb3J0LWFyY2guaCAqLzsg
fTsKKwkJRjY3RDRGNDQxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2N0Q0RjQxMUM3RjVERDAwMDE3
QzcyOSAvKiBndGVzdC1wb3J0LmggKi87IH07CisJCUY2N0Q0RjQ1MUM3RjVERDAwMDE3QzcyOSAv
KiBndGVzdC1wcmludGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjY3RDRGNDIxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggKi87
IH07CisJCUY2N0Q0RjQ2MUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGNDMxQzdGNUREMDAwMTdDNzI5
IC8qIGd0ZXN0LmggKi87IH07CisJCUY2N0Q0RjQ4MUM3RjVFMTYwMDE3QzcyOSAvKiBndGVzdC1w
b3J0LmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNjdENEY0MTFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5o
ICovOyB9OworCQlGNjdENEY0OTFDN0Y1RTI2MDAxN0M3MjkgLyogZ3Rlc3QtcHJpbnRlcnMuaCBp
biBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgQ3VzdG9tICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY2N0Q0RjQyMUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC1wcmludGVycy5oICov
OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0xODgsNiArMTk1LDcgQEAKIAkJCQk0NTM5Qzkz
ODBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtbGlua2VkX3B0ci5oIGluIENvcHkgSGVhZGVycyBJ
bnRlcm5hbCAqLywKIAkJCQk0NTM5QzkzOTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0t
dXRpbC1nZW5lcmF0ZWQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8sCiAJCQkJNDUzOUM5
M0EwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwuaCBpbiBDb3B5IEhlYWRlcnMg
SW50ZXJuYWwgKi8sCisJCQkJRjY3RDRGM0YxQzdGNURBNzAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQt
YXJjaC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKIAkJCQk0MDQ4ODRBMzBFMkY3QkU2
MDBDRjc2NTggLyogZ3Rlc3QtcG9ydC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKIAkJ
CQk0MDQ4ODRBNDBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3Qtc3RyaW5nLmggaW4gQ29weSBIZWFk
ZXJzIEludGVybmFsICovLAogCQkJCTQwODk5RjUwMEZGQTcyODEwMDBCMjlBRSAvKiBndGVzdC10
dXBsZS5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKQEAgLTE5NiwxMCArMjA0LDIxIEBA
CiAJCQluYW1lID0gIkNvcHkgSGVhZGVycyBJbnRlcm5hbCI7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKKwkJRjY3RDRGNDcxQzdGNURGNjAwMTdDNzI5
IC8qIENvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20gKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5
RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRz
dFBhdGggPSBIZWFkZXJzL2ludGVybmFsL2N1c3RvbTsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSA2
OworCQkJZmlsZXMgPSAoCisJCQkJRjY3RDRGNDgxQzdGNUUxNjAwMTdDNzI5IC8qIGd0ZXN0LXBv
cnQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgQ3VzdG9tICovLAorCQkJCUY2N0Q0RjQ5MUM3
RjVFMjYwMDE3QzcyOSAvKiBndGVzdC1wcmludGVycy5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5h
bCBDdXN0b20gKi8sCisJCQkpOworCQkJbmFtZSA9ICJDb3B5IEhlYWRlcnMgSW50ZXJuYWwgQ3Vz
dG9tIjsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9Owog
LyogRW5kIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhG
aWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KLQkJMUEwQTRDNDQxNEI3QTNCNTAwODk1MTM1IC8qIEph
dmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkyMjRBMTJB
MTBFOUVBREE3MDBCRDE3RkQgLyogZ3Rlc3QtYWxsLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9ICJndGVzdC1hbGwuY2MiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyMjRBMTJBMjBFOUVBRENDMDBCRDE3RkQgLyogZ3Rlc3QtdGVzdC1wYXJ0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtdGVzdC1wYXJ0LmgiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzQjIzOEMxMjBFN0ZFMTNDMDA4NDZFMTEgLyogZ3Rlc3Rf
dW5pdHRlc3QuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBndGVzdF91
bml0dGVzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxOCwxMSArMjM3LDEx
IEBACiAJCTQwNDg4M0U0MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1pbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtaW50ZXJuYWwuaCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwNDg4M0U1MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1w
b3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1wb3J0LmgiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MDQ4ODNFNjBFMkY3OTlCMDBDRjc2NTggLyog
Z3Rlc3Qtc3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1z
dHJpbmcuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQwNDg4M0Y2MEUyRjc5OUIw
MENGNzY1OCAvKiBSRUFETUUgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gUkVBRE1FOyBwYXRoID0g
Li4vUkVBRE1FOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTQwNDg4M0Y2MEUyRjc5
OUIwMENGNzY1OCAvKiBSRUFETUUubWQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gUkVBRE1FLm1k
OyBwYXRoID0gLi4vUkVBRE1FLm1kOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTQw
NDg4NDBEMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdF9tYWluLmNjICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gZ3Rlc3RfbWFpbi5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDA0ODg0QTkwRTJGN0NEOTAwQ0Y3NjU4IC8qIENIQU5HRVMgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBuYW1lID0gQ0hBTkdFUzsgcGF0aCA9IC4uL0NIQU5HRVM7IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKIAkJNDA0ODg0QUEwRTJGN0NEOTAwQ0Y3NjU4IC8qIENPTlRSSUJVVE9SUyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDT05UUklCVVRPUlM7IHBhdGggPSAuLi9DT05UUklCVVRP
UlM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKLQkJNDA0ODg0QUIwRTJGN0NEOTAwQ0Y3
NjU4IC8qIENPUFlJTkcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gQ09QWUlORzsgcGF0aCA9IC4u
L0NPUFlJTkc7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNDA0ODg0QUIwRTJGN0NE
OTAwQ0Y3NjU4IC8qIExJQ0VOU0UgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTElDRU5TRTsgcGF0
aCA9IC4uL0xJQ0VOU0U7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNDA4OTlGNDMw
RkZBNzE4NDAwMEIyOUFFIC8qIGd0ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVj
dXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gImd0ZXN0X3VuaXR0ZXN0LWZyYW1l
d29yayI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQwODk5RjREMEZG
QTcyNzEwMDBCMjlBRSAvKiBndGVzdC10dXBsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSAiZ3Rlc3QtdHVwbGUuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQw
ODk5RkIzMEZGQTc1NjcwMDBCMjlBRSAvKiBTdGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFN0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDUsNiArMjY0LDExIEBACiAJCTQ1
MzlDOTM1MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1saW5rZWRfcHRyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1saW5rZWRfcHRyLmgiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NTM5QzkzNjBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0t
dXRpbC1nZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0
LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NTM5QzkzNzBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcGFyYW0tdXRpbC5oIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDU2N0M4MTcxMjY0RkY3MTAwNzc0MEJFIC8qIGd0ZXN0LXByaW50
ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1wcmludGVycy5o
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjY3RDRGM0QxQzdGNUQ4QjAwMTdDNzI5
IC8qIGd0ZXN0LXBvcnQtYXJjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAi
Z3Rlc3QtcG9ydC1hcmNoLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNjdENEY0
MTFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSAiZ3Rlc3QtcG9ydC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RjY3RDRGNDIxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1wcmludGVycy5oIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRjY3RDRGNDMxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGd0ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBC
WEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTI4NCwxNCArMzA4LDYgQEAKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKLQkJ
NDQ0RDExNzIxNEEyNjI4RjAwOUZFQzNGIC8qIEZyYW1ld29ya3MgKi8gPSB7Ci0JCQlpc2EgPSBQ
QlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
Ci0JCQlmaWxlcyA9ICgKLQkJCQkxQTBBNEM0NTE0QjdBM0I1MDA4OTUxMzUgLyogSmF2YVNjcmlw
dENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCi0JCQkpOwotCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07CiAvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCkBAIC0z
MTYsNyArMzMyLDYgQEAKIAkJCQkwOEZCNzdBQ0ZFODQxNzA3QzAyQUFDMDcgLyogU291cmNlICov
LAogCQkJCTQwRDRDRjRFMEUzMEY1RTIwMDI5NDgwMSAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJNDAz
RUUzN0IwRTM3NzgyMjAwNEJEMUUyIC8qIFNjcmlwdHMgKi8sCi0JCQkJMUEwQTRDNDYxNEI3QTNC
QzAwODk1MTM1IC8qIEZyYW1ld29ya3MgKi8sCiAJCQkJMDM0NzY4RERGRjM4QTQ1QTExREI5QzhC
IC8qIFByb2R1Y3RzICovLAogCQkJKTsKIAkJCW5hbWUgPSBndGVzdDsKQEAgLTMyNywyNCArMzQy
LDE2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MDQ4ODRBOTBFMkY3Q0Q5MDBDRjc2NTggLyog
Q0hBTkdFUyAqLywKIAkJCQk0MDQ4ODRBQTBFMkY3Q0Q5MDBDRjc2NTggLyogQ09OVFJJQlVUT1JT
ICovLAotCQkJCTQwNDg4NEFCMEUyRjdDRDkwMENGNzY1OCAvKiBDT1BZSU5HICovLAogCQkJCTQw
NDg4M0Q5MEUyRjc5OUIwMENGNzY1OCAvKiBpbmNsdWRlICovLAotCQkJCTQwNDg4M0Y2MEUyRjc5
OUIwMENGNzY1OCAvKiBSRUFETUUgKi8sCisJCQkJNDA0ODg0QUIwRTJGN0NEOTAwQ0Y3NjU4IC8q
IExJQ0VOU0UgKi8sCiAJCQkJNDA4OUEwMkYwRkZBQ0Y4NDAwMEIyOUFFIC8qIHNhbXBsZXMgKi8s
CiAJCQkJNDA0ODg0MDcwRTJGNzk5QjAwQ0Y3NjU4IC8qIHNyYyAqLywKIAkJCQkzQjIzOEJGMDBF
N0ZFMTNCMDA4NDZFMTEgLyogdGVzdCAqLywKKwkJCQk0MDQ4ODNGNjBFMkY3OTlCMDBDRjc2NTgg
LyogUkVBRE1FLm1kICovLAogCQkJKTsKIAkJCW5hbWUgPSBTb3VyY2U7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OwotCQkxQTBBNEM0NjE0QjdBM0JDMDA4OTUxMzUgLyogRnJhbWV3
b3JrcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUEw
QTRDNDQxNEI3QTNCNTAwODk1MTM1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKLQkJ
CSk7Ci0JCQluYW1lID0gRnJhbWV3b3JrczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0J
CX07CiAJCTNCMjM4QkYwMEU3RkUxM0IwMDg0NkUxMSAvKiB0ZXN0ICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTM3OSw2ICszODYsNyBAQAogCQkJCTQwNDg4
M0RCMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1kZWF0aC10ZXN0LmggKi8sCiAJCQkJNDA0ODgz
REMwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LW1lc3NhZ2UuaCAqLywKIAkJCQk0NTM5QzkzMzBF
QzI4MEFFMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdGVzdC5oICovLAorCQkJCTQ1NjdDODE3MTI2
NEZGNzEwMDc3NDBCRSAvKiBndGVzdC1wcmludGVycy5oICovLAogCQkJCTQwNDg4M0REMEUyRjc5
OUIwMENGNzY1OCAvKiBndGVzdC1zcGkuaCAqLywKIAkJCQkyMjRBMTJBMjBFOUVBRENDMDBCRDE3
RkQgLyogZ3Rlc3QtdGVzdC1wYXJ0LmggKi8sCiAJCQkJM0JGNkYyQTQwRTc5QjYxNjAwMEYyRUVF
IC8qIGd0ZXN0LXR5cGVkLXRlc3QuaCAqLywKQEAgLTM5MiwxMiArNDAwLDE0IEBACiAJCTQwNDg4
M0UxMEUyRjc5OUIwMENGNzY1OCAvKiBpbnRlcm5hbCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRjY3RDRGNDAxQzdGNUREMDAwMTdDNzI5IC8qIGN1c3Rv
bSAqLywKIAkJCQk0MDQ4ODNFMjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtZGVhdGgtdGVzdC1p
bnRlcm5hbC5oICovLAogCQkJCTQwNDg4M0UzMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1maWxl
cGF0aC5oICovLAogCQkJCTQwNDg4M0U0MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1pbnRlcm5h
bC5oICovLAogCQkJCTQ1MzlDOTM1MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1saW5rZWRfcHRy
LmggKi8sCiAJCQkJNDUzOUM5MzYwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwt
Z2VuZXJhdGVkLmggKi8sCiAJCQkJNDUzOUM5MzcwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LXBh
cmFtLXV0aWwuaCAqLywKKwkJCQlGNjdENEYzRDFDN0Y1RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9y
dC1hcmNoLmggKi8sCiAJCQkJNDA0ODgzRTUwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXBvcnQu
aCAqLywKIAkJCQk0MDQ4ODNFNjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Qtc3RyaW5nLmggKi8s
CiAJCQkJNDA4OTlGNEQwRkZBNzI3MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggKi8sCkBAIC00
NDgsNiArNDU4LDE2IEBACiAJCQlwYXRoID0gUmVzb3VyY2VzOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKIAkJfTsKKwkJRjY3RDRGNDAxQzdGNUREMDAwMTdDNzI5IC8qIGN1c3RvbSAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRjY3RDRGNDExQzdG
NUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCAqLywKKwkJCQlGNjdENEY0MjFDN0Y1REQwMDAx
N0M3MjkgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLywKKwkJCQlGNjdENEY0MzFDN0Y1REQwMDAxN0M3
MjkgLyogZ3Rlc3QuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gY3VzdG9tOworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ1OCw5ICs0NzgsMTQgQEAK
IAkJCQk0MDQ4ODQzODBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtZGVhdGgtdGVzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDA0ODg0MzkwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LW1lc3NhZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ1MzlDOTM0MEVDMjgwQUUwMEE3MEY0QyAvKiBndGVzdC1w
YXJhbS10ZXN0LmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgRjY3RDRGM0UxQzdGNUQ4QjAwMTdD
NzI5IC8qIGd0ZXN0LXBvcnQtYXJjaC5oIGluIEhlYWRlcnMgKi8sCisgICAgICAgIEY2N0Q0RjQ0
MUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC1wb3J0LmggaW4gSGVhZGVycyAqLywKKyAgICAgICAg
RjY3RDRGNDUxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVycyAq
LywKKyAgICAgICAgNDU2N0M4MTgxMjY0RkY3MTAwNzc0MEJFIC8qIGd0ZXN0LXByaW50ZXJzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MDQ4ODQzQTBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Qtc3Bp
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyMjRBMTJBMzBFOUVBRENDMDBCRDE3RkQgLyogZ3Rlc3Qt
dGVzdC1wYXJ0LmggaW4gSGVhZGVycyAqLywKIAkJCQkzQkY2RjJBNTBFNzlCNjE2MDAwRjJFRUUg
LyogZ3Rlc3QtdHlwZWQtdGVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjY3RDRGNDYxQzdGNURE
MDAwMTdDNzI5IC8qIGd0ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MDQ4ODQzQjBFMkY3OTlC
MDBDRjc2NTggLyogZ3Rlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQwNDg4NDNDMEUyRjc5OUIw
MENGNzY1OCAvKiBndGVzdF9wcmVkX2ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQwNDg4NDNE
MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcm9kLmggaW4gSGVhZGVycyAqLywKQEAgLTU3Nyw4
ICs2MDIsOCBAQAogCQkJCThEMDdGMkMxMDQ4NkNDN0EwMDdDRDFEMCAvKiBTb3VyY2VzICovLAog
CQkJCThEMDdGMkJEMDQ4NkNDN0EwMDdDRDFEMCAvKiBIZWFkZXJzICovLAogCQkJCTQwNDg4NEE1
MEUyRjdDMDQwMENGNzY1OCAvKiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8sCisJCQkJRjY3RDRG
NDcxQzdGNURGNjAwMTdDNzI5IC8qIENvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20gKi8sCiAJ
CQkJOEQwN0YyQkYwNDg2Q0M3QTAwN0NEMUQwIC8qIFJlc291cmNlcyAqLywKLQkJCQk0NDREMTE3
MjE0QTI2MjhGMDA5RkVDM0YgLyogRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJCQlidWlsZFJ1bGVz
ID0gKAogCQkJKTsKQEAgLTYzOCw5ICs2NjMsOSBAQAogCQkJZmlsZXMgPSAoCiAJCQkJNDA0ODg0
QUMwRTJGN0NEOTAwQ0Y3NjU4IC8qIENIQU5HRVMgaW4gUmVzb3VyY2VzICovLAogCQkJCTQwNDg4
NEFEMEUyRjdDRDkwMENGNzY1OCAvKiBDT05UUklCVVRPUlMgaW4gUmVzb3VyY2VzICovLAotCQkJ
CTQwNDg4NEFFMEUyRjdDRDkwMENGNzY1OCAvKiBDT1BZSU5HIGluIFJlc291cmNlcyAqLywKIAkJ
CQk0MEM4NDk3ODEwMUEzNjU0MDA4MzY0MkEgLyogbGliZ3Rlc3RfbWFpbi5hIGluIFJlc291cmNl
cyAqLywKLQkJCQk0MDQ4ODQ1MDBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FIGluIFJlc291cmNl
cyAqLywKKwkJCQk0MDQ4ODRBRTBFMkY3Q0Q5MDBDRjc2NTggLyogTElDRU5TRSBpbiBSZXNvdXJj
ZXMgKi8sCisJCQkJNDA0ODg0NTAwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCBpbiBSZXNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggZTJiMzc3YmI4YTUwNjE2Mzc1M2E0MWFiNjIyN2JmZDVlMTdmNTk5Yy4uNGM3ZTNhNTdl
OTVjY2Q1OGViNjk1YzVkM2EyOTQzYTc4ZmUxMDkyMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTA4LTMwICBS
b3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBVcGRhdGUg
Z29vZ2xldGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc1NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL2NvbmZpZy5oOgorICAgICAgICBJbnN0ZWFkIG9mIG1vZGlmeWlu
ZyB0aGUgZ3Rlc3Qgc291cmNlLCBhZGQgdGhlIG5lY2Vzc2FyeSBXVEYgaW5jbHVkZXMgaGVyZS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwor
ICAgICAgICBSZW1vdmUgb2Jzb2xldGVkIGRlZmluaXRpb25zIEdURVNUX0hBU19UUjFfVFVQTEU9
MCBhbmQgR1RFU1RfSEFTX1JUVEk9MC4KKwogMjAxOC0wOC0zMCAgVGhvbWFzIERlbm5leSAgPHRk
ZW5uZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSExTTF0gRml4IGFycmF5IGluZGV4aW5nIGJl
aGF2aW9yCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0Jh
c2UueGNjb25maWcgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNj
b25maWcKaW5kZXggM2MyZTU5ZWI2YzVkNDFjM2IyZjM0OWZmY2NlNTI4NDY4YmNhYTI1Yi4uM2Y0
YmRmYmM5YjYxNGQyNzM4MTA3OWNlNDYwMmE2NmU0MjI2YzRiZiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwpAQCAtMzUsNyArMzUsNyBA
QCBDTEFOR19XQVJOX0NYWDBYX0VYVEVOU0lPTlMgPSBOTzsKIEhFQURFUl9TRUFSQ0hfUEFUSFMg
PSAke0JVSUxUX1BST0RVQ1RTX0RJUn0vdXNyL2xvY2FsL2luY2x1ZGUgJChXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVIpL0ZvcndhcmRpbmdIZWFkZXJzICQoQlVJTFRfUFJPRFVDVFNfRElSKS9X
ZWJDb3JlVGVzdFN1cHBvcnQ7CiAKIEdDQ19OT19DT01NT05fQkxPQ0tTID0gWUVTOwotR0NDX1BS
RVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoREVCVUdfREVGSU5FUykgJChGRUFUVVJFX0RFRklO
RVMpIEdURVNUX0hBU19UUjFfVFVQTEU9MCBHVEVTVF9IQVNfUlRUST0wIFVfRElTQUJMRV9SRU5B
TUlORz0xIFVfU0hPV19DUExVU1BMVVNfQVBJPTAgJChHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJ
T05TXyQoUExBVEZPUk1fTkFNRSkpOworR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQo
REVCVUdfREVGSU5FUykgJChGRUFUVVJFX0RFRklORVMpIFVfRElTQUJMRV9SRU5BTUlORz0xIFVf
U0hPV19DUExVU1BMVVNfQVBJPTAgJChHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TXyQoUExB
VEZPUk1fTkFNRSkpOwogR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OU19tYWNvc3ggPSBFTkFC
TEVfREFTSEJPQVJEX1NVUFBPUlQ7CiBERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSBkd2FyZi13
aXRoLWRzeW07CiBQUkVCSU5ESU5HID0gTk8KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29uZmlnLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCmluZGV4IGVkZjhhNmYx
ZjU2YjBiZWRmZmU4NGU2NjBlZThlZjUwNGM0YzUyY2EuLjBjMmM0YWU3YmYwZTljZTVlOTg3OTU4
ZTU0ODQzZWQ0Mzc0NjIyNDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmln
LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaApAQCAtNTcsOCArNTcsMTQgQEAK
IAogI2lmZGVmIF9fY3BsdXNwbHVzCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgorI3VuZGVmIG5ldworI3VuZGVmIGRlbGV0ZQorI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CiAjZW5kaWYKIAorI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBl
Lmg+CisKICNpZmRlZiBfX2NsYW5nX18KIC8vIEZpbmlzaCB3b3JraW5nIGFyb3VuZCB0aGUgbGVz
cyBzdHJpY3QgY29kaW5nIHN0YW5kYXJkcyBvZiB0aGUgZ3Rlc3QgZnJhbWV3b3JrLgogI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIHBvcAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348701</attachid>
            <date>2018-08-31 20:11:48 -0700</date>
            <delta_ts>2018-09-02 11:40:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175722-20180831201145.patch</filename>
            <type>text/plain</type>
            <size>2527842</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9DaGFuZ2VMb2cKaW5kZXggZmI1MTE0ZTAz
ZmM3ZTUxZjg2N2YzOWFiZjhkYjIwNDA1YWRhOWJiYS4uNjYyNzEzMjRlYjcxMzM4NTUwYzBiOTJl
Mzg2ZTE0YzQ2MTk3OGRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4
LTA4LTMwICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAg
ICBVcGRhdGUgZ29vZ2xldGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc1NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBndGVzdC86CisgICAgICAgIFVwZGF0ZSB0byBsYXRlc3QgKHBvc3QtMS44
LjApLgorCisgICAgICAgICogZ3Rlc3QvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogZ3Rlc3Qv
eGNvZGUvOgorICAgICAgICBLZWVwIG91ciB2ZXJzaW9ucyBvZiB0aGVzZSBidWlsZCBmaWxlcywg
bWFraW5nIGFueSBuZWNlc3NhcnkgYWRkaXRpdmUgdXBkYXRlcworICAgICAgICBhbmQgcmVtb3Zp
bmcgV1RGL0pTQyBkZXBlbmRlbmNpZXMgc28gdGhhdCB3ZSBzdG9wIGZvcmtpbmcgdGhpcmQtcGFy
dHkgc291cmNlLgorCiAyMDE4LTA3LTE3ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9A
aWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtHVEtdIFVwZGF0ZSB4ZGdtaW1lCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DSEFOR0VTIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvQ0hBTkdFUwppbmRleCBlNTc0NDE1ZWU2ZWQ4MWNmNDkyYmUyOTUzNDZjNDQ0ZWViMTBj
ZTg4Li4wNTUyMTMyNDIxMmM5MTI4N2Q5MjQ0ZDQ0YmFiMzA2ZGI2NjRiYWRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DSEFOR0VTCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L0NIQU5HRVMKQEAgLTEsMyArMSw2MiBAQAorQ2hhbmdlcyBmb3IgMS43LjA6CisKKyog
TmV3IGZlYXR1cmU6IGRlYXRoIHRlc3RzIGFyZSBzdXBwb3J0ZWQgb24gT3BlbkJTRCBhbmQgaW4g
aU9TCisgIHNpbXVsYXRvciBub3cuCisqIE5ldyBmZWF0dXJlOiBHb29nbGUgVGVzdCBub3cgaW1w
bGVtZW50cyBhIHByb3RvY29sIHRvIGFsbG93CisgIGEgdGVzdCBydW5uZXIgdG8gZGV0ZWN0IHRo
YXQgYSB0ZXN0IHByb2dyYW0gaGFzIGV4aXRlZAorICBwcmVtYXR1cmVseSBhbmQgcmVwb3J0IGl0
IGFzIGEgZmFpbHVyZSAoYmVmb3JlIGl0IHdvdWxkIGJlCisgIGZhbHNlbHkgcmVwb3J0ZWQgYXMg
YSBzdWNjZXNzIGlmIHRoZSBleGl0IGNvZGUgaXMgMCkuCisqIE5ldyBmZWF0dXJlOiBUZXN0OjpS
ZWNvcmRQcm9wZXJ0eSgpIGNhbiBub3cgYmUgdXNlZCBvdXRzaWRlIG9mIHRoZQorICBsaWZlc3Bh
biBvZiBhIHRlc3QgbWV0aG9kLCBpbiB3aGljaCBjYXNlIGl0IHdpbGwgYmUgYXR0cmlidXRlZCB0
bworICB0aGUgY3VycmVudCB0ZXN0IGNhc2Ugb3IgdGhlIHRlc3QgcHJvZ3JhbSBpbiB0aGUgWE1M
IHJlcG9ydC4KKyogTmV3IGZlYXR1cmUgKHBvdGVudGlhbGx5IGJyZWFraW5nKTogLS1ndGVzdF9s
aXN0X3Rlc3RzIG5vdyBwcmludHMKKyAgdGhlIHR5cGUgcGFyYW1ldGVycyBhbmQgdmFsdWUgcGFy
YW1ldGVycyBmb3IgZWFjaCB0ZXN0LgorKiBJbXByb3ZlbWVudDogY2hhciBwb2ludGVycyBhbmQg
Y2hhciBhcnJheXMgYXJlIG5vdyBlc2NhcGVkIHByb3Blcmx5CisgIGluIGZhaWx1cmUgbWVzc2Fn
ZXMuCisqIEltcHJvdmVtZW50OiBmYWlsdXJlIHN1bW1hcnkgaW4gWE1MIHJlcG9ydHMgbm93IGlu
Y2x1ZGVzIGZpbGUgYW5kCisgIGxpbmUgaW5mb3JtYXRpb24uCisqIEltcHJvdmVtZW50OiB0aGUg
PHRlc3RzdWl0ZXM+IFhNTCBlbGVtZW50IG5vdyBoYXMgYSB0aW1lc3RhbXAgYXR0cmlidXRlLgor
KiBJbXByb3ZlbWVudDogV2hlbiAtLWd0ZXN0X2ZpbHRlciBpcyBzcGVjaWZpZWQsIFhNTCByZXBv
cnQgbm93IGRvZXNuJ3QKKyAgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0ZXN0cyB0aGF0IGFy
ZSBmaWx0ZXJlZCBvdXQuCisqIEZpeGVkIHRoZSBidWcgd2hlcmUgbG9uZyAtLWd0ZXN0X2ZpbHRl
ciBmbGFnIHZhbHVlcyBhcmUgdHJ1bmNhdGVkIGluCisgIGRlYXRoIHRlc3RzLgorKiBQb3RlbnRp
YWxseSBicmVha2luZyBjaGFuZ2U6IFJVTl9BTExfVEVTVFMoKSBpcyBub3cgaW1wbGVtZW50ZWQg
YXMgYQorICBmdW5jdGlvbiBpbnN0ZWFkIG9mIGEgbWFjcm8gaW4gb3JkZXIgdG8gd29yayBiZXR0
ZXIgd2l0aCBDbGFuZy4KKyogQ29tcGF0aWJpbGl0eSBmaXhlcyB3aXRoIEMrKyAxMSBhbmQgdmFy
aW91cyBwbGF0Zm9ybXMuCisqIEJ1Zy93YXJuaW5nIGZpeGVzLgorCitDaGFuZ2VzIGZvciAxLjYu
MDoKKworKiBOZXcgZmVhdHVyZTogQUREX0ZBSUxVUkVfQVQoKSBmb3IgcmVwb3J0aW5nIGEgdGVz
dCBmYWlsdXJlIGF0IHRoZQorICBnaXZlbiBzb3VyY2UgbG9jYXRpb24gLS0gdXNlZnVsIGZvciB3
cml0aW5nIHRlc3RpbmcgdXRpbGl0aWVzLgorKiBOZXcgZmVhdHVyZTogdGhlIHVuaXZlcnNhbCB2
YWx1ZSBwcmludGVyIGlzIG1vdmVkIGZyb20gR29vZ2xlIE1vY2sKKyAgdG8gR29vZ2xlIFRlc3Qu
CisqIE5ldyBmZWF0dXJlOiB0eXBlIHBhcmFtZXRlcnMgYW5kIHZhbHVlIHBhcmFtZXRlcnMgYXJl
IHJlcG9ydGVkIGluCisgIHRoZSBYTUwgcmVwb3J0IG5vdy4KKyogQSBndGVzdF9kaXNhYmxlX3B0
aHJlYWRzIENNYWtlIG9wdGlvbi4KKyogQ29sb3JlZCBvdXRwdXQgd29ya3MgaW4gR05VIFNjcmVl
biBzZXNzaW9ucyBub3cuCisqIFBhcmFtZXRlcnMgb2YgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0
cyBhcmUgbm93IHByaW50ZWQgaW4gdGhlCisgIHRleHR1YWwgb3V0cHV0LgorKiBGYWlsdXJlcyBm
cm9tIGFkIGhvYyB0ZXN0IGFzc2VydGlvbnMgcnVuIGJlZm9yZSBSVU5fQUxMX1RFU1RTKCkgYXJl
CisgIG5vdyBjb3JyZWN0bHkgcmVwb3J0ZWQuCisqIEFyZ3VtZW50cyBvZiBBU1NFUlRfWFkgYW5k
IEVYUEVDVF9YWSBubyBsb25nZXIgbmVlZCB0byBzdXBwb3J0IDw8IHRvCisgIG9zdHJlYW0uCisq
IE1vcmUgY29tcGxldGUgaGFuZGxpbmcgb2YgZXhjZXB0aW9ucy4KKyogR1RFU1RfQVNTRVJUX1hZ
IGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgQVNTRVJUX1hZIGluIGNhc2UgdGhlIGxhdHRlcgorICBu
YW1lIGlzIGFscmVhZHkgdXNlZCBieSBhbm90aGVyIGxpYnJhcnkuCisqIC0tZ3Rlc3RfY2F0Y2hf
ZXhjZXB0aW9ucyBpcyBub3cgdHJ1ZSBieSBkZWZhdWx0LCBhbGxvd2luZyBhIHRlc3QKKyAgcHJv
Z3JhbSB0byBjb250aW51ZSBhZnRlciBhbiBleGNlcHRpb24gaXMgdGhyb3duLgorKiBWYWx1ZS1w
YXJhbWV0ZXJpemVkIHRlc3QgZml4dHVyZXMgY2FuIG5vdyBkZXJpdmUgZnJvbSBUZXN0IGFuZAor
ICBXaXRoUGFyYW1JbnRlcmZhY2U8VD4gc2VwYXJhdGVseSwgZWFzaW5nIGNvbnZlcnNpb24gb2Yg
bGVnYWN5IHRlc3RzLgorKiBEZWF0aCB0ZXN0IG1lc3NhZ2VzIGFyZSBjbGVhcmx5IG1hcmtlZCB0
byBtYWtlIHRoZW0gbW9yZQorICBkaXN0aW5ndWlzaGFibGUgZnJvbSBvdGhlciBtZXNzYWdlcy4K
KyogQ29tcGF0aWJpbGl0eSBmaXhlcyBmb3IgQW5kcm9pZCwgR29vZ2xlIE5hdGl2ZSBDbGllbnQs
IE1pbkdXLCBIUCBVWCwKKyAgUG93ZXJQQywgTHVjaWQgYXV0b3Rvb2xzLCBsaWJDU3RkLCBTdW4g
QysrLCBCb3JsYW5kIEMrKyBCdWlsZGVyIChDb2RlIEdlYXIpLAorICBJQk0gWEwgQysrIChWaXN1
YWwgQWdlIEMrKyksIGFuZCBDKysweC4KKyogQnVnIGZpeGVzIGFuZCBpbXBsZW1lbnRhdGlvbiBj
bGVhbi11cHMuCisqIFBvdGVudGlhbGx5IGluY29tcGF0aWJsZSBjaGFuZ2VzOiBkaXNhYmxlcyB0
aGUgaGFybWZ1bCAnbWFrZSBpbnN0YWxsJworICBjb21tYW5kIGluIGF1dG90b29scy4KKwogQ2hh
bmdlcyBmb3IgMS41LjA6CiAKICAqIE5ldyBmZWF0dXJlOiBhc3NlcnRpb25zIGNhbiBiZSBzYWZl
bHkgY2FsbGVkIGluIG11bHRpcGxlIHRocmVhZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ01ha2VM
aXN0cy50eHQKaW5kZXggZGQxMDA1ZmU2ZTU3YzUyMGJlOTdmNGY4MDUyYjQyNmYwZmUwNTY4Zi4u
NDMwN2JjOGI3MmZlZGU2YWI4MmYwZjk1Mzc5NTVlYmJiMWRkNGQxMyAxMDA3NTUKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvQ01ha2VMaXN0cy50eHQKQEAgLTEsMTQgKzEsMTIgQEAKICMgVGhpcyBpcyBhbiBh
bHRlcm5hdGl2ZSBDTWFrZUxpc3RzLnR4dCB0byB0aGUgZXhwZXJpbWVudGFsIG9uZQogIyBzaGlw
cGVkIHdpdGggdGhlIG9yaWdpbmFsIHBhY2thZ2UuIEl0IGJ1aWxkcyBvbmx5IHRoZSBlc3NlbnRp
YWwKLSMgZm9yIG91ciB0ZXN0cy4gVGhlIFdlYktpdCB2ZXJzaW9uIG9mIGd0ZXN0IG5lZWRzIGFj
Y2VzcyB0byBzb21lCi0jIGhlYWRlcnMgZnJvbSBXVEYgYW5kIEpTQyBmb3IgY29uZmlndXJhdGlv
bi4KKyMgZm9yIG91ciB0ZXN0cy4KIAogc2V0KEdURVNUX0RJUiAiJHtUSElSRFBBUlRZX0RJUn0v
Z3Rlc3QiKQogCiBzZXQoR1RFU1RfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0dURVNUX0RJ
Un0iCiAgICAgIiR7R1RFU1RfRElSfS9pbmNsdWRlIgotICAgICIke0ZPUldBUkRJTkdfSEVBREVS
U19ESVJ9IgogKQogCiBzZXQoR1RFU1RfU09VUkNFUwpAQCAtMTcsNiArMTUsNyBAQCBzZXQoR1RF
U1RfU09VUkNFUwogICAgICR7R1RFU1RfRElSfS9zcmMvZ3Rlc3QtZmlsZXBhdGguY2MKICAgICAk
e0dURVNUX0RJUn0vc3JjL2d0ZXN0X21haW4uY2MKICAgICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0
LXBvcnQuY2MKKyAgICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LXByaW50ZXJzLmNjCiAgICAgJHtH
VEVTVF9ESVJ9L3NyYy9ndGVzdC10ZXN0LXBhcnQuY2MKICAgICAke0dURVNUX0RJUn0vc3JjL2d0
ZXN0LXR5cGVkLXRlc3QuY2MKICkKQEAgLTMyLDIzICszMSwxMSBAQCBlbHNlICgpCiBlbmRpZiAo
KQogCiBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7R1RFU1RfSU5DTFVERV9ESVJFQ1RPUklFU30pCi1h
ZGRfZGVmaW5pdGlvbnMoLURHVEVTVF9IQVNfUlRUST0wKQogCiBXRUJLSVRfQUREX1RBUkdFVF9D
WFhfRkxBR1MoZ3Rlc3QgLVduby11bmRlZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC1Xbm8tc3RyaW5nb3AtdHJ1bmNhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC1Xbm8tc3VnZ2VzdC1hdHRyaWJ1dGU9Zm9ybWF0KQogCi0jIEZJWE1FOiBUaGlzIHdv
cmtzIGFyb3VuZCBjb21wYXRpYmlsaXR5IHByb2JsZW1zIGluIHRoZSBvbGQgdmVyc2lvbiBvZiB0
aGUgdGhpcmQtcGFyeQotIyBnb29nbGV0ZXN0IHNvdXJjZSBjb2RlIGNoZWNrb3V0LiBJdCBzaG91
bGQgYmUgcmVtb3ZlZCBvbmNlIHdlIHVwZ3JhZGUgdG8gYSBuZXdlciB2ZXJzaW9uLgotaWYgKENP
TVBJTEVSX0lTX0NMQU5HKQotICAgIGFkZF9kZWZpbml0aW9ucygtREdURVNUX0hBU19UUjFfVFVQ
TEU9MCkKLWVuZGlmICgpCi0KLXRhcmdldF9saW5rX2xpYnJhcmllcyhndGVzdAotICAgIFdURgot
KQotYWRkX2RlcGVuZGVuY2llcyhndGVzdCBKYXZhU2NyaXB0Q29yZVByaXZhdGVGb3J3YXJkaW5n
SGVhZGVycykKLQogaWYgKENNQUtFX1VTRV9QVEhSRUFEU19JTklUKQogICAgIHRhcmdldF9saW5r
X2xpYnJhcmllcyhndGVzdCAke0NNQUtFX1RIUkVBRF9MSUJTX0lOSVR9KQogICAgIGFkZF9kZWZp
bml0aW9ucygtREdURVNUX0hBU19QVEhSRUFEPTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9DT05UUklCVVRPUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DT05UUklC
VVRPUlMKaW5kZXggMDkzNGFlMTMwNTlhZmNkYzA1ZGY4MTI0N2U2MWI5YTg0YTIzMTJlMi4uZmVh
ZTJmYzA0NDEwZGMzMDhlNDY0YWEyNTZmZTFmMmQzMWVkYzk4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvQ09OVFJJQlVUT1JTCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L0NPTlRSSUJVVE9SUwpAQCAtMjEsNiArMjEsNyBAQCBNYW51ZWwgS2xpbWVrIDxrbGltZWtA
Z29vZ2xlLmNvbT4KIE1hcmt1cyBIZXVsZSA8bWFya3VzLmhldWxlQGdtYWlsLmNvbT4KIE1pa2Eg
UmFlbnRvIDxtaWtpZUBpa2kuZmk+CiBNaWtsw7NzIEZhemVrYXMgPG1mYXpla2FzQHN6ZW1hZm9y
LmNvbT4KK1Bhc2kgVmFsbWluZW4gPHBhc2kudmFsbWluZW5AZ21haWwuY29tPgogUGF0cmljayBI
YW5uYSA8cGhhbm5hQGdvb2dsZS5jb20+CiBQYXRyaWNrIFJpbGV5IDxwZnJAZ29vZ2xlLmNvbT4K
IFBldGVyIEthbWluc2tpIDxwaW90cmtAZ29vZ2xlLmNvbT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L0NPUFlJTkcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DT1BZSU5H
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTQxYTExZjhjZTk0Mzg5MTYwYjQ1ODky
N2EyOWJhMjE3NTQyODE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NPUFlJTkcKKysrIC9kZXYvbnVsbApAQCAt
MSwyOCArMCwwIEBACi1Db3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLUFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotbWV0OgotCi0gICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotZGlzdHJpYnV0aW9uLgotICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLXRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci1PV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLVNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi1USEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0oSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLU9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9MSUNFTlNFIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvTElDRU5TRQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xOTQxYTExZjhjZTk0Mzg5MTYwYjQ1ODkyN2EyOWJhMjE3NTQyODE4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvTElDRU5TRQpAQCAtMCwwICsx
LDI4IEBACitDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KK0FsbCByaWdodHMgcmVzZXJ2ZWQu
CisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0OgorCisgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlzdHJpYnV0aW9uLgorICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
K3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKK0EgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCitPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCitUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9NYWtlZmlsZS5hbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L01ha2VmaWxlLmFt
CmluZGV4IDhkNzVlMzJjYzIwY2RlODNjMTc0ZjRlMDc4ZTI5OTNhOTMyYTlkMTguLmI0NGM4NDE2
YmEwODBjMmYwMTZmMTY2YjE4YjQyYzBmNzNlY2U3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L01ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L01h
a2VmaWxlLmFtCkBAIC0xLDEzICsxLDE2IEBACiAjIEF1dG9tYWtlIGZpbGUKIAorQUNMT0NBTF9B
TUZMQUdTID0gLUkgbTQKKwogIyBOb25zdGFuZGFyZCBwYWNrYWdlIGZpbGVzIGZvciBkaXN0cmli
dXRpb24KIEVYVFJBX0RJU1QgPSBcCiAgIENIQU5HRVMgXAogICBDT05UUklCVVRPUlMgXAorICBM
SUNFTlNFIFwKICAgaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcCBcCisgIGlu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wIFwK
ICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oLnB1bXAgXAogICBpbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oLnB1bXAgXAotICBpbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcCBcCiAgIG1ha2UvTWFr
ZWZpbGUgXAogICBzY3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMucHkgXAogICBzY3JpcHRzL2dlbl9n
dGVzdF9wcmVkX2ltcGwucHkgXApAQCAtMTcsMTkgKzIwLDIxIEBAIEVYVFJBX0RJU1QgPSBcCiAj
IGd0ZXN0IHNvdXJjZSBmaWxlcyB0aGF0IHdlIGRvbid0IGNvbXBpbGUgZGlyZWN0bHkuICBUaGV5
IGFyZQogIyAjaW5jbHVkZWQgYnkgZ3Rlc3QtYWxsLmNjLgogR1RFU1RfU1JDID0gXAotICBzcmMv
Z3Rlc3QuY2MgXAogICBzcmMvZ3Rlc3QtZGVhdGgtdGVzdC5jYyBcCiAgIHNyYy9ndGVzdC1maWxl
cGF0aC5jYyBcCiAgIHNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCBcCiAgIHNyYy9ndGVzdC1wb3J0
LmNjIFwKKyAgc3JjL2d0ZXN0LXByaW50ZXJzLmNjIFwKICAgc3JjL2d0ZXN0LXRlc3QtcGFydC5j
YyBcCi0gIHNyYy9ndGVzdC10eXBlZC10ZXN0LmNjCisgIHNyYy9ndGVzdC10eXBlZC10ZXN0LmNj
IFwKKyAgc3JjL2d0ZXN0LmNjCiAKIEVYVFJBX0RJU1QgKz0gJChHVEVTVF9TUkMpCiAKICMgU2Ft
cGxlIGZpbGVzIHRoYXQgd2UgZG9uJ3QgY29tcGlsZS4KIEVYVFJBX0RJU1QgKz0gXAogICBzYW1w
bGVzL3ByaW1lX3RhYmxlcy5oIFwKKyAgc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjIFwKICAg
c2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0LmNjIFwKICAgc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0
LmNjIFwKICAgc2FtcGxlcy9zYW1wbGU0X3VuaXR0ZXN0LmNjIFwKQEAgLTQxLDg4ICs0Niw5MSBA
QCBFWFRSQV9ESVNUICs9IFwKIAogIyBDKysgdGVzdCBmaWxlcyB0aGF0IHdlIGRvbid0IGNvbXBp
bGUgZGlyZWN0bHkuCiBFWFRSQV9ESVNUICs9IFwKKyAgdGVzdC9ndGVzdC1kZWF0aC10ZXN0X2V4
X3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rl
c3RfZW52aXJvbm1lbnRfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3QtZmlsZXBhdGhfdGVzdC5jYyBc
CiAgIHRlc3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC1saXN0ZW5l
cl90ZXN0LmNjIFwKICAgdGVzdC9ndGVzdC1tZXNzYWdlX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0
X25vX3Rlc3RfdW5pdHRlc3QuY2MgXAogICB0ZXN0L2d0ZXN0LW9wdGlvbnNfdGVzdC5jYyBcCi0g
IHRlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0
Ml90ZXN0LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QyLXRlc3QuY2MgXAorICB0
ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdDItdGVzdC5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC1w
YXJhbS10ZXN0LXRlc3QuY2MgXAorICB0ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmNj
IFwKICAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaCBcCiAgIHRlc3QvZ3Rlc3QtcG9ydF90
ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdF9wcmVtYXR1cmVfZXhpdF90ZXN0LmNjIFwKKyAgdGVzdC9n
dGVzdC1wcmludGVyc190ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYyBc
CisgIHRlc3QvZ29vZ2xldGVzdC10dXBsZS10ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC10eXBlZC10
ZXN0Ml90ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MgXAorICB0ZXN0
L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oIFwKKyAgdGVzdC9ndGVzdC11bml0dGVzdC1hcGlfdGVz
dC5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0Xy5jYyBc
CisgIHRlc3QvZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3RfLmNjIFwKKyAgdGVzdC9n
b29nbGV0ZXN0LWNvbG9yLXRlc3RfLmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LWVudi12YXItdGVz
dF8uY2MgXAorICB0ZXN0L2d0ZXN0X2Vudmlyb25tZW50X3Rlc3QuY2MgXAorICB0ZXN0L2dvb2ds
ZXRlc3QtZmlsdGVyLXVuaXR0ZXN0Xy5jYyBcCisgIHRlc3QvZ3Rlc3RfaGVscF90ZXN0Xy5jYyBc
CisgIHRlc3QvZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0Xy5jYyBcCisgIHRlc3QvZ3Rl
c3RfbWFpbl91bml0dGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdC5jYyBc
CisgIHRlc3QvZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2MgXAogICB0ZXN0L2d0ZXN0X3ByZWRf
aW1wbF91bml0dGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3RfcHJvZF90ZXN0LmNjIFwKLSAgdGVzdC9w
cm9kdWN0aW9uLmNjIFwKLSAgdGVzdC9wcm9kdWN0aW9uLmggXAogICB0ZXN0L2d0ZXN0X3JlcGVh
dF90ZXN0LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8uY2MgXAogICB0ZXN0
L2d0ZXN0X3NvbGVfaGVhZGVyX3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0X3N0cmVzc190ZXN0LmNj
IFwKLSAgdGVzdC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYyBcCiAgIHRlc3QvZ3Rlc3RfdGhyb3df
b25fZmFpbHVyZV9leF90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuY2Mg
XAotICB0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXR5cGVk
LXRlc3RfdGVzdC5oIFwKKyAgdGVzdC9nb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8u
Y2MgXAorICB0ZXN0L2dvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0Xy5jYyBcCiAgIHRlc3Qv
Z3Rlc3RfdW5pdHRlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjIFwK
LSAgdGVzdC9ndGVzdC1saXN0ZW5lcl90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdF9tYWluX3VuaXR0
ZXN0LmNjIFwKICAgdGVzdC9ndGVzdF91bml0dGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtdHVwbGVf
dGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmNjIFwKLSAgdGVzdC9ndGVz
dC1wYXJhbS10ZXN0Ml90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdF9icmVha19vbl9mYWlsdXJlX3Vu
aXR0ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3RfY29sb3JfdGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0
X2Vudl92YXJfdGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X2ZpbHRlcl91bml0dGVzdF8uY2MgXAot
ICB0ZXN0L2d0ZXN0X2hlbHBfdGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5p
dHRlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0
X3NodWZmbGVfdGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8u
Y2MgXAotICB0ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdF8uY2MgXAogICB0ZXN0L2d0ZXN0
X3htbF9vdXRmaWxlMV90ZXN0Xy5jYyBcCiAgIHRlc3QvZ3Rlc3RfeG1sX291dGZpbGUyX3Rlc3Rf
LmNjIFwKLSAgdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYworICB0ZXN0L2d0ZXN0
X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjIFwKKyAgdGVzdC9wcm9kdWN0aW9uLmNjIFwKKyAgdGVz
dC9wcm9kdWN0aW9uLmgKIAogIyBQeXRob24gdGVzdHMgdGhhdCB3ZSBkb24ndCBydW4uCiBFWFRS
QV9ESVNUICs9IFwKLSAgdGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5IFwKLSAgdGVzdC9ndGVzdF94
bWxfdGVzdF91dGlscy5weSBcCi0gIHRlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVz
dC5weSBcCi0gIHRlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3RfZW52X3Zh
cl90ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3QucHkgXAorICB0ZXN0L2dv
b2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdC5weSBcCisgIHRlc3QvZ29vZ2xldGVz
dC1jYXRjaC1leGNlcHRpb25zLXRlc3QucHkgXAorICB0ZXN0L2dvb2dsZXRlc3QtY29sb3ItdGVz
dC5weSBcCisgIHRlc3QvZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3QucHkgXAorICB0ZXN0L2dvb2ds
ZXRlc3QtZmlsdGVyLXVuaXR0ZXN0LnB5IFwKICAgdGVzdC9ndGVzdF9oZWxwX3Rlc3QucHkgXAot
ICB0ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3QucHkgXAotICB0ZXN0L2d0ZXN0X291dHB1
dF90ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fbGluLnR4dCBcCi0g
IHRlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX3dpbi50eHQgXAotICB0ZXN0L2d0ZXN0X3No
dWZmbGVfdGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0LnB5IFwK
LSAgdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3QucHkgXAorICB0ZXN0L2dvb2dsZXRlc3Qt
bGlzdC10ZXN0cy11bml0dGVzdC5weSBcCisgIHRlc3QvZ29vZ2xldGVzdC1vdXRwdXQtdGVzdC5w
eSBcCisgIHRlc3QvZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF9nb2xkZW5fbGluLnR4dCBcCisgIHRl
c3QvZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3QucHkgXAorICB0ZXN0L2d0ZXN0X3Rlc3RfdXRpbHMu
cHkgXAorICB0ZXN0L2dvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0LnB5IFwKKyAgdGVz
dC9nb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdC5weSBcCiAgIHRlc3QvZ3Rlc3RfeG1sX291
dGZpbGVzX3Rlc3QucHkgXAogICB0ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3QucHkgXAot
ICB0ZXN0L3J1bl90ZXN0c191dGlsLnB5IFwKLSAgdGVzdC9ydW5fdGVzdHNfdXRpbF90ZXN0LnB5
CisgIHRlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkKIAogIyBDTWFrZSBzY3JpcHQKIEVYVFJB
X0RJU1QgKz0gXAotICBDTWFrZUxpc3RzLnR4dAorICBDTWFrZUxpc3RzLnR4dCBcCisgIGNtYWtl
L2ludGVybmFsX3V0aWxzLmNtYWtlCiAKICMgTVNWQyBwcm9qZWN0IGZpbGVzCiBFWFRSQV9ESVNU
ICs9IFwKLSAgbXN2Yy9ndGVzdC1tZC5zbG4gXAotICBtc3ZjL2d0ZXN0LnNsbiBcCi0gIG1zdmMv
Z3Rlc3QtbWQudmNwcm9qIFwKLSAgbXN2Yy9ndGVzdC52Y3Byb2ogXAotICBtc3ZjL2d0ZXN0X21h
aW4tbWQudmNwcm9qIFwKLSAgbXN2Yy9ndGVzdF9tYWluLnZjcHJvaiBcCi0gIG1zdmMvZ3Rlc3Rf
cHJvZF90ZXN0LW1kLnZjcHJvaiBcCi0gIG1zdmMvZ3Rlc3RfcHJvZF90ZXN0LnZjcHJvaiBcCi0g
IG1zdmMvZ3Rlc3RfdW5pdHRlc3QtbWQudmNwcm9qIFwKLSAgbXN2Yy9ndGVzdF91bml0dGVzdC52
Y3Byb2oKKyAgbXN2Yy8yMDEwL2d0ZXN0LW1kLnNsbiBcCisgIG1zdmMvMjAxMC9ndGVzdC1tZC52
Y3hwcm9qIFwKKyAgbXN2Yy8yMDEwL2d0ZXN0LnNsbiBcCisgIG1zdmMvMjAxMC9ndGVzdC52Y3hw
cm9qIFwKKyAgbXN2Yy8yMDEwL2d0ZXN0X21haW4tbWQudmN4cHJvaiBcCisgIG1zdmMvMjAxMC9n
dGVzdF9tYWluLnZjeHByb2ogXAorICBtc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjeHBy
b2ogXAorICBtc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2ogXAorICBtc3ZjLzIwMTAv
Z3Rlc3RfdW5pdHRlc3QtbWQudmN4cHJvaiBcCisgIG1zdmMvMjAxMC9ndGVzdF91bml0dGVzdC52
Y3hwcm9qCiAKICMgeGNvZGUgcHJvamVjdCBmaWxlcwogRVhUUkFfRElTVCArPSBcCkBAIC0xMzMs
MzEgKzE0MSwyNyBAQCBFWFRSQV9ESVNUICs9IFwKICAgeGNvZGUvQ29uZmlnL1N0YXRpY0xpYnJh
cnlUYXJnZXQueGNjb25maWcgXAogICB4Y29kZS9Db25maWcvVGVzdFRhcmdldC54Y2NvbmZpZyBc
CiAgIHhjb2RlL1Jlc291cmNlcy9JbmZvLnBsaXN0IFwKLSAgeGNvZGUvU2NyaXB0cy92ZXJzaW9u
Z2VuZXJhdGUucHkgXAogICB4Y29kZS9TY3JpcHRzL3J1bnRlc3RzLnNoIFwKKyAgeGNvZGUvU2Ny
aXB0cy92ZXJzaW9uZ2VuZXJhdGUucHkgXAogICB4Y29kZS9ndGVzdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCiAKICMgeGNvZGUgc2FtcGxlIGZpbGVzCiBFWFRSQV9ESVNUICs9IFwKICAgeGNv
ZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvSW5mby5wbGlzdCBcCisgIHhjb2RlL1NhbXBsZXMv
RnJhbWV3b3JrU2FtcGxlL1dpZGdldEZyYW1ld29yay54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IFwKICAgeGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvcnVudGVzdHMuc2ggXAotICB4Y29k
ZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS93aWRnZXRfdGVzdC5jYyBcCiAgIHhjb2RlL1NhbXBs
ZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldC5jYyBcCiAgIHhjb2RlL1NhbXBsZXMvRnJhbWV3b3Jr
U2FtcGxlL3dpZGdldC5oIFwKLSAgeGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvV2lkZ2V0
RnJhbWV3b3JrLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKyAgeGNvZGUvU2FtcGxlcy9GcmFt
ZXdvcmtTYW1wbGUvd2lkZ2V0X3Rlc3QuY2MKIAogIyBDKytCdWlsZGVyIHByb2plY3QgZmlsZXMK
IEVYVFJBX0RJU1QgKz0gXAorICBjb2RlZ2Vhci9ndGVzdC5jYnByb2ogXAorICBjb2RlZ2Vhci9n
dGVzdC5ncm91cHByb2ogXAogICBjb2RlZ2Vhci9ndGVzdF9hbGwuY2MgXAogICBjb2RlZ2Vhci9n
dGVzdF9saW5rLmNjIFwKLSAgY29kZWdlYXIvZ3Rlc3QuY2Jwcm9qIFwKICAgY29kZWdlYXIvZ3Rl
c3RfbWFpbi5jYnByb2ogXAotICBjb2RlZ2Vhci9ndGVzdF91bml0dGVzdC5jYnByb2ogXAotICBj
b2RlZ2Vhci9ndGVzdC5ncm91cHByb2oKLQotIyBTY3JpcHRzIGFuZCB1dGlsaXRpZXMKLWJpbl9T
Q1JJUFRTID0gc2NyaXB0cy9ndGVzdC1jb25maWcKLUNMRUFORklMRVMgPSAkKGJpbl9TQ1JJUFRT
KQorICBjb2RlZ2Vhci9ndGVzdF91bml0dGVzdC5jYnByb2oKIAogIyBEaXN0cmlidXRlIGFuZCBp
bnN0YWxsIE00IG1hY3JvCiBtNGRhdGFkaXIgPSAkKGRhdGFkaXIpL2FjbG9jYWwKQEAgLTE4MSwx
NSArMTg1LDE3IEBAIGxpYl9MVExJQlJBUklFUyA9IGxpYi9saWJndGVzdC5sYSBsaWIvbGliZ3Rl
c3RfbWFpbi5sYQogCiBsaWJfbGliZ3Rlc3RfbGFfU09VUkNFUyA9IHNyYy9ndGVzdC1hbGwuY2MK
IAotcGtnaW5jbHVkZV9IRUFERVJTID0gaW5jbHVkZS9ndGVzdC9ndGVzdC5oIFwKLSAgICAgICAg
ICAgICAgICAgICAgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIFwKLSAgICAgICAg
ICAgICAgICAgICAgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIFwKLSAgICAgICAgICAg
ICAgICAgICAgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oIFwKLSAgICAgICAgICAg
ICAgICAgICAgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmggXAotICAgICAgICAgICAg
ICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmggXAotICAgICAgICAgICAgICAgICAg
ICAgaW5jbHVkZS9ndGVzdC9ndGVzdC1zcGkuaCBcCi0gICAgICAgICAgICAgICAgICAgICBpbmNs
dWRlL2d0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oIFwKLSAgICAgICAgICAgICAgICAgICAgIGluY2x1
ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oCitwa2dpbmNsdWRlX0hFQURFUlMgPSBcCisgIGlu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC1t
ZXNzYWdlLmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaCBcCisgIGluY2x1
ZGUvZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3Qtc3BpLmgg
XAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9n
dGVzdC10eXBlZC10ZXN0LmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LmggXAorICBpbmNsdWRl
L2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmgK
IAogcGtnaW5jbHVkZV9pbnRlcm5hbGRpciA9ICQocGtnaW5jbHVkZWRpcikvaW50ZXJuYWwKIHBr
Z2luY2x1ZGVfaW50ZXJuYWxfSEVBREVSUyA9IFwKQEAgLTIwMCw2MSArMjA2LDk3IEBAIHBrZ2lu
Y2x1ZGVfaW50ZXJuYWxfSEVBREVSUyA9IFwKICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIFwKICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC1wYXJhbS11dGlsLmggXAogICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCBc
CisgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC1hcmNoLmggXAogICBpbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIFwKICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC10dXBsZS5oIFwKLSAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0
aWwuaAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oIFwKKyAgaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvY3VzdG9tL2d0ZXN0LXBvcnQuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3Vz
dG9tL2d0ZXN0LXByaW50ZXJzLmgKIAogbGliX2xpYmd0ZXN0X21haW5fbGFfU09VUkNFUyA9IHNy
Yy9ndGVzdF9tYWluLmNjCiBsaWJfbGliZ3Rlc3RfbWFpbl9sYV9MSUJBREQgPSBsaWIvbGliZ3Rl
c3QubGEKIAotIyBCdWxpZCBydWxlcyBmb3Igc2FtcGxlcyBhbmQgdGVzdHMuIEF1dG9tYWtlJ3Mg
bmFtaW5nIGZvciBzb21lIG9mCisjIEJ1aWxkIHJ1bGVzIGZvciBzYW1wbGVzIGFuZCB0ZXN0cy4g
QXV0b21ha2UncyBuYW1pbmcgZm9yIHNvbWUgb2YKICMgdGhlc2UgdmFyaWFibGVzIGlzbid0IHRl
cnJpYmx5IG9idmlvdXMsIHNvIHRoaXMgaXMgYSBicmllZgogIyByZWZlcmVuY2U6CiAjCiAjIFRF
U1RTIC0tIFByb2dyYW1zIHJ1biBhdXRvbWF0aWNhbGx5IGJ5ICJtYWtlIGNoZWNrIgogIyBjaGVj
a19QUk9HUkFNUyAtLSBQcm9ncmFtcyBidWlsdCBieSAibWFrZSBjaGVjayIgYnV0IG5vdCBuZWNl
c3NhcmlseSBydW4KIAotbm9pbnN0X0xUTElCUkFSSUVTID0gc2FtcGxlcy9saWJzYW1wbGVzLmxh
Ci0KLXNhbXBsZXNfbGlic2FtcGxlc19sYV9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGUxLmNjIFwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlcy9zYW1wbGUxLmggXAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVzL3NhbXBsZTIuY2MgXAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVzL3NhbXBsZTIuaCBcCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvc2FtcGxlMy1pbmwuaCBcCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvc2FtcGxlNC5jYyBcCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvc2FtcGxlNC5oCi0KIFRFU1RTPQogVEVTVFNfRU5W
SVJPTk1FTlQgPSBHVEVTVF9TT1VSQ0VfRElSPSIkKHNyY2RpcikvdGVzdCIgXAogICAgICAgICAg
ICAgICAgICAgICBHVEVTVF9CVUlMRF9ESVI9IiQodG9wX2J1aWxkZGlyKS90ZXN0IgogY2hlY2tf
UFJPR1JBTVM9CiAKICMgQSBzaW1wbGUgc2FtcGxlIG9uIHVzaW5nIGd0ZXN0LgotVEVTVFMgKz0g
c2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0Ci1jaGVja19QUk9HUkFNUyArPSBzYW1wbGVzL3NhbXBs
ZTFfdW5pdHRlc3QKLXNhbXBsZXNfc2FtcGxlMV91bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9z
YW1wbGUxX3VuaXR0ZXN0LmNjCitURVNUUyArPSBzYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QgXAor
ICAgIHNhbXBsZXMvc2FtcGxlMl91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGUzX3VuaXR0
ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxl
NV91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVz
L3NhbXBsZTdfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlOF91bml0dGVzdCBcCisgICAg
c2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0
CitjaGVja19QUk9HUkFNUyArPSBzYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QgXAorICAgIHNhbXBs
ZXMvc2FtcGxlMl91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0IFwKKyAg
ICBzYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlNV91bml0dGVz
dCBcCisgICAgc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTdf
dW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlOF91bml0dGVzdCBcCisgICAgc2FtcGxlcy9z
YW1wbGU5X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0CisKK3NhbXBs
ZXNfc2FtcGxlMV91bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNj
IHNhbXBsZXMvc2FtcGxlMS5jYwogc2FtcGxlc19zYW1wbGUxX3VuaXR0ZXN0X0xEQUREID0gbGli
L2xpYmd0ZXN0X21haW4ubGEgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Ft
cGxlcy9saWJzYW1wbGVzLmxhCi0KLSMgQW5vdGhlciBzYW1wbGUuICBJdCBhbHNvIHZlcmlmaWVz
IHRoYXQgbGliZ3Rlc3Qgd29ya3MuCi1URVNUUyArPSBzYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0
Ci1jaGVja19QUk9HUkFNUyArPSBzYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsaWIvbGliZ3Rlc3QubGEKK3NhbXBsZXNfc2FtcGxlMl91
bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0LmNjIHNhbXBsZXMvc2Ft
cGxlMi5jYworc2FtcGxlc19zYW1wbGUyX3VuaXR0ZXN0X0xEQUREID0gbGliL2xpYmd0ZXN0X21h
aW4ubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGliL2xpYmd0ZXN0Lmxh
CitzYW1wbGVzX3NhbXBsZTNfdW5pdHRlc3RfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlM191bml0
dGVzdC5jYworc2FtcGxlc19zYW1wbGUzX3VuaXR0ZXN0X0xEQUREID0gbGliL2xpYmd0ZXN0X21h
aW4ubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGliL2xpYmd0ZXN0Lmxh
CitzYW1wbGVzX3NhbXBsZTRfdW5pdHRlc3RfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlNF91bml0
dGVzdC5jYyBzYW1wbGVzL3NhbXBsZTQuY2MKK3NhbXBsZXNfc2FtcGxlNF91bml0dGVzdF9MREFE
RCA9IGxpYi9saWJndGVzdF9tYWluLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxpYi9saWJndGVzdC5sYQorc2FtcGxlc19zYW1wbGU1X3VuaXR0ZXN0X1NPVVJDRVMgPSBz
YW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2Mgc2FtcGxlcy9zYW1wbGUxLmNjCitzYW1wbGVzX3Nh
bXBsZTVfdW5pdHRlc3RfTERBREQgPSBsaWIvbGliZ3Rlc3RfbWFpbi5sYSBcCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsaWIvbGliZ3Rlc3QubGEKK3NhbXBsZXNfc2FtcGxlNl91
bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjCitzYW1wbGVzX3Nh
bXBsZTZfdW5pdHRlc3RfTERBREQgPSBsaWIvbGliZ3Rlc3RfbWFpbi5sYSBcCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsaWIvbGliZ3Rlc3QubGEKK3NhbXBsZXNfc2FtcGxlN191
bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGU3X3VuaXR0ZXN0LmNjCitzYW1wbGVzX3Nh
bXBsZTdfdW5pdHRlc3RfTERBREQgPSBsaWIvbGliZ3Rlc3RfbWFpbi5sYSBcCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsaWIvbGliZ3Rlc3QubGEKK3NhbXBsZXNfc2FtcGxlOF91
bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjCitzYW1wbGVzX3Nh
bXBsZThfdW5pdHRlc3RfTERBREQgPSBsaWIvbGliZ3Rlc3RfbWFpbi5sYSBcCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsaWIvbGliZ3Rlc3QubGEKKworIyBBbHNvIHZlcmlmeSB0
aGF0IGxpYmd0ZXN0IHdvcmtzIGJ5IGl0c2VsZi4KK3NhbXBsZXNfc2FtcGxlOV91bml0dGVzdF9T
T1VSQ0VTID0gc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjCitzYW1wbGVzX3NhbXBsZTlfdW5p
dHRlc3RfTERBREQgPSBsaWIvbGliZ3Rlc3QubGEKIHNhbXBsZXNfc2FtcGxlMTBfdW5pdHRlc3Rf
U09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MKIHNhbXBsZXNfc2FtcGxlMTBf
dW5pdHRlc3RfTERBREQgPSBsaWIvbGliZ3Rlc3QubGEKIAogIyBUaGlzIHRlc3RzIG1vc3QgY29u
c3RydWN0cyBvZiBndGVzdCBhbmQgdmVyaWZpZXMgdGhhdCBsaWJndGVzdF9tYWluCi0jIHdvcmtz
LgorIyBhbmQgbGliZ3Rlc3Qgd29yay4KIFRFU1RTICs9IHRlc3QvZ3Rlc3RfYWxsX3Rlc3QKIGNo
ZWNrX1BST0dSQU1TICs9IHRlc3QvZ3Rlc3RfYWxsX3Rlc3QKIHRlc3RfZ3Rlc3RfYWxsX3Rlc3Rf
U09VUkNFUyA9IHRlc3QvZ3Rlc3RfYWxsX3Rlc3QuY2MKLXRlc3RfZ3Rlc3RfYWxsX3Rlc3RfTERB
REQgPSBsaWIvbGliZ3Rlc3RfbWFpbi5sYQordGVzdF9ndGVzdF9hbGxfdGVzdF9MREFERCA9IGxp
Yi9saWJndGVzdF9tYWluLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWIvbGli
Z3Rlc3QubGEKIAogIyBUZXN0cyB0aGF0IGZ1c2VkIGd0ZXN0IGZpbGVzIGNvbXBpbGUgYW5kIHdv
cmsuCiBGVVNFRF9HVEVTVF9TUkMgPSBcCiAgIGZ1c2VkLXNyYy9ndGVzdC9ndGVzdC1hbGwuY2Mg
XAotICBmdXNlZC1zcmMvZ3Rlc3QvZ3Rlc3RfbWFpbi5jYyBcCi0gIGZ1c2VkLXNyYy9ndGVzdC9n
dGVzdC5oCisgIGZ1c2VkLXNyYy9ndGVzdC9ndGVzdC5oIFwKKyAgZnVzZWQtc3JjL2d0ZXN0L2d0
ZXN0X21haW4uY2MKIAoraWYgSEFWRV9QWVRIT04KIFRFU1RTICs9IHRlc3QvZnVzZWRfZ3Rlc3Rf
dGVzdAogY2hlY2tfUFJPR1JBTVMgKz0gdGVzdC9mdXNlZF9ndGVzdF90ZXN0CiB0ZXN0X2Z1c2Vk
X2d0ZXN0X3Rlc3RfU09VUkNFUyA9ICQoRlVTRURfR1RFU1RfU1JDKSBcCkBAIC0yNzgsNyArMzIw
LDIwIEBAIGZ1c2VkLWd0ZXN0OiAkKHBrZ2luY2x1ZGVfSEVBREVSUykgJChwa2dpbmNsdWRlX2lu
dGVybmFsX0hFQURFUlMpIFwKIAogbWFpbnRhaW5lci1jbGVhbi1sb2NhbDoKIAlybSAtcmYgIiQo
c3JjZGlyKS9mdXNlZC1zcmMiCitlbmRpZgogCiAjIERlYXRoIHRlc3RzIG1heSBwcm9kdWNlIGNv
cmUgZHVtcHMgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeS4gSW4gY2FzZQogIyB0aGlzIGhhcHBlbnMs
IGNsZWFuIHRoZW0gdG8ga2VlcCBkaXN0Y2xlYW5jaGVjayBoYXBweS4KLUNMRUFORklMRVMgKz0g
Y29yZQorQ0xFQU5GSUxFUyA9IGNvcmUKKworIyBEaXNhYmxlcyAnbWFrZSBpbnN0YWxsJyBhcyBp
bnN0YWxsaW5nIGEgY29tcGlsZWQgdmVyc2lvbiBvZiBHb29nbGUKKyMgVGVzdCBjYW4gbGVhZCB0
byB1bmRlZmluZWQgYmVoYXZpb3IgZHVlIHRvIHZpb2xhdGlvbiBvZiB0aGUKKyMgT25lLURlZmlu
aXRpb24gUnVsZS4KKworaW5zdGFsbC1leGVjLWxvY2FsOgorCWVjaG8gIidtYWtlIGluc3RhbGwn
IGlzIGRhbmdlcm91cyBhbmQgbm90IHN1cHBvcnRlZC4gSW5zdGVhZCwgc2VlIFJFQURNRSBmb3Ig
aG93IHRvIGludGVncmF0ZSBHb29nbGUgVGVzdCBpbnRvIHlvdXIgYnVpbGQgc3lzdGVtLiIKKwlm
YWxzZQorCitpbnN0YWxsLWRhdGEtbG9jYWw6CisJZWNobyAiJ21ha2UgaW5zdGFsbCcgaXMgZGFu
Z2Vyb3VzIGFuZCBub3Qgc3VwcG9ydGVkLiBJbnN0ZWFkLCBzZWUgUkVBRE1FIGZvciBob3cgdG8g
aW50ZWdyYXRlIEdvb2dsZSBUZXN0IGludG8geW91ciBidWlsZCBzeXN0ZW0uIgorCWZhbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9SRUFETUUgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9SRUFETUUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjNjExOTAw
MjA5OTE1MGQ3MTU3NDlhMTZlMDNjMmY1NzM2ODZiYjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVBRE1FCisr
KyAvZGV2L251bGwKQEAgLTEsNDE3ICswLDAgQEAKLUdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdv
cmsKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotaHR0cDovL2NvZGUuZ29vZ2xlLmNv
bS9wL2dvb2dsZXRlc3QvCi0KLU92ZXJ2aWV3Ci0tLS0tLS0tLQotCi1Hb29nbGUncyBmcmFtZXdv
cmsgZm9yIHdyaXRpbmcgQysrIHRlc3RzIG9uIGEgdmFyaWV0eSBvZiBwbGF0Zm9ybXMKLShMaW51
eCwgTWFjIE9TIFgsIFdpbmRvd3MsIFdpbmRvd3MgQ0UsIFN5bWJpYW4sIGV0YykuICBCYXNlZCBv
biB0aGUKLXhVbml0IGFyY2hpdGVjdHVyZS4gIFN1cHBvcnRzIGF1dG9tYXRpYyB0ZXN0IGRpc2Nv
dmVyeSwgYSByaWNoIHNldCBvZgotYXNzZXJ0aW9ucywgdXNlci1kZWZpbmVkIGFzc2VydGlvbnMs
IGRlYXRoIHRlc3RzLCBmYXRhbCBhbmQgbm9uLWZhdGFsCi1mYWlsdXJlcywgdmFyaW91cyBvcHRp
b25zIGZvciBydW5uaW5nIHRoZSB0ZXN0cywgYW5kIFhNTCB0ZXN0IHJlcG9ydAotZ2VuZXJhdGlv
bi4KLQotUGxlYXNlIHNlZSB0aGUgcHJvamVjdCBwYWdlIGFib3ZlIGZvciBtb3JlIGluZm9ybWF0
aW9uIGFzIHdlbGwgYXMgdGhlCi1tYWlsaW5nIGxpc3QgZm9yIHF1ZXN0aW9ucywgZGlzY3Vzc2lv
bnMsIGFuZCBkZXZlbG9wbWVudC4gIFRoZXJlIGlzCi1hbHNvIGFuIElSQyBjaGFubmVsIG9uIE9G
VEMgKGlyYy5vZnRjLm5ldCkgI2d0ZXN0IGF2YWlsYWJsZS4gIFBsZWFzZQotam9pbiB1cyEKLQot
UmVxdWlyZW1lbnRzIGZvciBFbmQgVXNlcnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0K
LUdvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHRvIGhhdmUgZmFpcmx5IG1pbmltYWwgcmVxdWlyZW1l
bnRzIHRvIGJ1aWxkCi1hbmQgdXNlIHdpdGggeW91ciBwcm9qZWN0cywgYnV0IHRoZXJlIGFyZSBz
b21lLiAgQ3VycmVudGx5LCB3ZSBzdXBwb3J0Ci1MaW51eCwgV2luZG93cywgTWFjIE9TIFgsIGFu
ZCBDeWd3aW4uICBXZSB3aWxsIGFsc28gbWFrZSBvdXIgYmVzdAotZWZmb3J0IHRvIHN1cHBvcnQg
b3RoZXIgcGxhdGZvcm1zIChlLmcuIFNvbGFyaXMsIEFJWCwgYW5kIHovT1MpLgotSG93ZXZlciwg
c2luY2UgY29yZSBtZW1iZXJzIG9mIHRoZSBHb29nbGUgVGVzdCBwcm9qZWN0IGhhdmUgbm8gYWNj
ZXNzCi10byB0aGVzZSBwbGF0Zm9ybXMsIEdvb2dsZSBUZXN0IG1heSBoYXZlIG91dHN0YW5kaW5n
IGlzc3VlcyB0aGVyZS4gIElmCi15b3Ugbm90aWNlIGFueSBwcm9ibGVtcyBvbiB5b3VyIHBsYXRm
b3JtLCBwbGVhc2Ugbm90aWZ5Ci1nb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20u
ICBQYXRjaGVzIGZvciBmaXhpbmcgdGhlbSBhcmUKLWV2ZW4gbW9yZSB3ZWxjb21lIQotCi0jIyMg
TGludXggUmVxdWlyZW1lbnRzICMjIwotCi1UaGVzZSBhcmUgdGhlIGJhc2UgcmVxdWlyZW1lbnRz
IHRvIGJ1aWxkIGFuZCB1c2UgR29vZ2xlIFRlc3QgZnJvbSBhIHNvdXJjZQotcGFja2FnZSAoYXMg
ZGVzY3JpYmVkIGJlbG93KToKLSAgKiBHTlUtY29tcGF0aWJsZSBNYWtlIG9yIGdtYWtlCi0gICog
UE9TSVgtc3RhbmRhcmQgc2hlbGwKLSAgKiBQT1NJWCgtMikgUmVndWxhciBFeHByZXNzaW9ucyAo
cmVnZXguaCkKLSAgKiBBIEMrKzk4LXN0YW5kYXJkLWNvbXBsaWFudCBjb21waWxlcgotCi0jIyMg
V2luZG93cyBSZXF1aXJlbWVudHMgIyMjCi0KLSAgKiBNaWNyb3NvZnQgVmlzdWFsIEMrKyA3LjEg
b3IgbmV3ZXIKLQotIyMjIEN5Z3dpbiBSZXF1aXJlbWVudHMgIyMjCi0KLSAgKiBDeWd3aW4gMS41
LjI1LTE0IG9yIG5ld2VyCi0KLSMjIyBNYWMgT1MgWCBSZXF1aXJlbWVudHMgIyMjCi0KLSAgKiBN
YWMgT1MgWCAxMC40IFRpZ2VyIG9yIG5ld2VyCi0gICogRGV2ZWxvcGVyIFRvb2xzIEluc3RhbGxl
ZAotCi1BbHNvLCB5b3UnbGwgbmVlZCBDTWFrZSAyLjYuNCBvciBoaWdoZXIgaWYgeW91IHdhbnQg
dG8gYnVpbGQgdGhlCi1zYW1wbGVzIHVzaW5nIHRoZSBwcm92aWRlZCBDTWFrZSBzY3JpcHQsIHJl
Z2FyZGxlc3Mgb2YgdGhlIHBsYXRmb3JtLgotCi1SZXF1aXJlbWVudHMgZm9yIENvbnRyaWJ1dG9y
cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotV2Ugd2VsY29tZSBwYXRjaGVzLiAg
SWYgeW91IHBsYW4gdG8gY29udHJpYnV0ZSBhIHBhdGNoLCB5b3UgbmVlZCB0bwotYnVpbGQgR29v
Z2xlIFRlc3QgYW5kIGl0cyBvd24gdGVzdHMgZnJvbSBhbiBTVk4gY2hlY2tvdXQgKGRlc2NyaWJl
ZAotYmVsb3cpLCB3aGljaCBoYXMgZnVydGhlciByZXF1aXJlbWVudHM6Ci0KLSAgKiBQeXRob24g
dmVyc2lvbiAyLjMgb3IgbmV3ZXIgKGZvciBydW5uaW5nIHNvbWUgb2YgdGhlIHRlc3RzIGFuZAot
ICAgIHJlLWdlbmVyYXRpbmcgY2VydGFpbiBzb3VyY2UgZmlsZXMgZnJvbSB0ZW1wbGF0ZXMpCi0g
ICogQ01ha2UgMi42LjQgb3IgbmV3ZXIKLQotR2V0dGluZyB0aGUgU291cmNlCi0tLS0tLS0tLS0t
LS0tLS0tLS0KLQotVGhlcmUgYXJlIHR3byBwcmltYXJ5IHdheXMgb2YgZ2V0dGluZyBHb29nbGUg
VGVzdCdzIHNvdXJjZSBjb2RlOiB5b3UKLWNhbiBkb3dubG9hZCBhIHN0YWJsZSBzb3VyY2UgcmVs
ZWFzZSBpbiB5b3VyIHByZWZlcnJlZCBhcmNoaXZlIGZvcm1hdCwKLW9yIGRpcmVjdGx5IGNoZWNr
IG91dCB0aGUgc291cmNlIGZyb20gb3VyIFN1YnZlcnNpb24gKFNWTikgcmVwb3NpdGFyeS4KLVRo
ZSBTVk4gY2hlY2tvdXQgcmVxdWlyZXMgYSBmZXcgZXh0cmEgc3RlcHMgYW5kIHNvbWUgZXh0cmEg
c29mdHdhcmUKLXBhY2thZ2VzIG9uIHlvdXIgc3lzdGVtLCBidXQgbGV0cyB5b3UgdHJhY2sgdGhl
IGxhdGVzdCBkZXZlbG9wbWVudCBhbmQKLW1ha2UgcGF0Y2hlcyBtdWNoIG1vcmUgZWFzaWx5LCBz
byB3ZSBoaWdobHkgZW5jb3VyYWdlIGl0LgotCi0jIyMgU291cmNlIFBhY2thZ2UgIyMjCi0KLUdv
b2dsZSBUZXN0IGlzIHJlbGVhc2VkIGluIHZlcnNpb25lZCBzb3VyY2UgcGFja2FnZXMgd2hpY2gg
Y2FuIGJlCi1kb3dubG9hZGVkIGZyb20gdGhlIGRvd25sb2FkIHBhZ2UgWzFdLiAgU2V2ZXJhbCBk
aWZmZXJlbnQgYXJjaGl2ZQotZm9ybWF0cyBhcmUgcHJvdmlkZWQsIGJ1dCB0aGUgb25seSBkaWZm
ZXJlbmNlIGlzIHRoZSB0b29scyB1c2VkIHRvCi1tYW5pcHVsYXRlIHRoZW0sIGFuZCB0aGUgc2l6
ZSBvZiB0aGUgcmVzdWx0aW5nIGZpbGUuICBEb3dubG9hZAotd2hpY2hldmVyIHlvdSBhcmUgbW9z
dCBjb21mb3J0YWJsZSB3aXRoLgotCi0gIFsxXSBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29v
Z2xldGVzdC9kb3dubG9hZHMvbGlzdAotCi1PbmNlIHRoZSBwYWNrYWdlIGlzIGRvd25sb2FkZWQs
IGV4cGFuZCBpdCB1c2luZyB3aGljaGV2ZXIgdG9vbHMgeW91Ci1wcmVmZXIgZm9yIHRoYXQgdHlw
ZS4gIFRoaXMgd2lsbCByZXN1bHQgaW4gYSBuZXcgZGlyZWN0b3J5IHdpdGggdGhlCi1uYW1lICJn
dGVzdC1YLlkuWiIgd2hpY2ggY29udGFpbnMgYWxsIG9mIHRoZSBzb3VyY2UgY29kZS4gIEhlcmUg
YXJlCi1zb21lIGV4YW1wbGVzIG9uIExpbnV4OgotCi0gIHRhciAteHZ6ZiBndGVzdC1YLlkuWi50
YXIuZ3oKLSAgdGFyIC14dmpmIGd0ZXN0LVguWS5aLnRhci5iejIKLSAgdW56aXAgZ3Rlc3QtWC5Z
LlouemlwCi0KLSMjIyBTVk4gQ2hlY2tvdXQgIyMjCi0KLVRvIGNoZWNrIG91dCB0aGUgbWFpbiBi
cmFuY2ggKGFsc28ga25vd24gYXMgdGhlICJ0cnVuayIpIG9mIEdvb2dsZQotVGVzdCwgcnVuIHRo
ZSBmb2xsb3dpbmcgU3VidmVyc2lvbiBjb21tYW5kOgotCi0gIHN2biBjaGVja291dCBodHRwOi8v
Z29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvIGd0ZXN0LXN2bgotCi1TZXR0aW5n
IHVwIHRoZSBCdWlsZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotVG8gYnVpbGQgR29vZ2xlIFRl
c3QgYW5kIHlvdXIgdGVzdHMgdGhhdCB1c2UgaXQsIHlvdSBuZWVkIHRvIHRlbGwgeW91cgotYnVp
bGQgc3lzdGVtIHdoZXJlIHRvIGZpbmQgaXRzIGhlYWRlcnMgYW5kIHNvdXJjZSBmaWxlcy4gIFRo
ZSBleGFjdAotd2F5IHRvIGRvIGl0IGRlcGVuZHMgb24gd2hpY2ggYnVpbGQgc3lzdGVtIHlvdSB1
c2UsIGFuZCBpcyB1c3VhbGx5Ci1zdHJhaWdodGZvcndhcmQuCi0KLSMjIyBHZW5lcmljIEJ1aWxk
IEluc3RydWN0aW9ucyAjIyMKLQotU3VwcG9zZSB5b3UgcHV0IEdvb2dsZSBUZXN0IGluIGRpcmVj
dG9yeSAke0dURVNUX0RJUn0uICBUbyBidWlsZCBpdCwKLWNyZWF0ZSBhIGxpYnJhcnkgYnVpbGQg
dGFyZ2V0IChvciBhIHByb2plY3QgYXMgY2FsbGVkIGJ5IFZpc3VhbCBTdHVkaW8KLWFuZCBYY29k
ZSkgdG8gY29tcGlsZQotCi0gICR7R1RFU1RfRElSfS9zcmMvZ3Rlc3QtYWxsLmNjCi0KLXdpdGgK
LQotICAke0dURVNUX0RJUn0vaW5jbHVkZSBhbmQgJHtHVEVTVF9ESVJ9Ci0KLWluIHRoZSBoZWFk
ZXIgc2VhcmNoIHBhdGguICBBc3N1bWluZyBhIExpbnV4LWxpa2Ugc3lzdGVtIGFuZCBnY2MsCi1z
b21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nIHdpbGwgZG86Ci0KLSAgZysrIC1JJHtHVEVTVF9E
SVJ9L2luY2x1ZGUgLUkke0dURVNUX0RJUn0gLWMgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1hbGwu
Y2MKLSAgYXIgLXJ2IGxpYmd0ZXN0LmEgZ3Rlc3QtYWxsLm8KLQotTmV4dCwgeW91IHNob3VsZCBj
b21waWxlIHlvdXIgdGVzdCBzb3VyY2UgZmlsZSB3aXRoCi0ke0dURVNUX0RJUn0vaW5jbHVkZSBp
biB0aGUgaGVhZGVyIHNlYXJjaCBwYXRoLCBhbmQgbGluayBpdCB3aXRoIGd0ZXN0Ci1hbmQgYW55
IG90aGVyIG5lY2Vzc2FyeSBsaWJyYXJpZXM6Ci0KLSAgZysrIC1JJHtHVEVTVF9ESVJ9L2luY2x1
ZGUgcGF0aC90by95b3VyX3Rlc3QuY2MgbGliZ3Rlc3QuYSAtbyB5b3VyX3Rlc3QKLQotQXMgYW4g
ZXhhbXBsZSwgdGhlIG1ha2UvIGRpcmVjdG9yeSBjb250YWlucyBhIE1ha2VmaWxlIHRoYXQgeW91
IGNhbgotdXNlIHRvIGJ1aWxkIEdvb2dsZSBUZXN0IG9uIHN5c3RlbXMgd2hlcmUgR05VIG1ha2Ug
aXMgYXZhaWxhYmxlCi0oZS5nLiBMaW51eCwgTWFjIE9TIFgsIGFuZCBDeWd3aW4pLiAgSXQgZG9l
c24ndCB0cnkgdG8gYnVpbGQgR29vZ2xlCi1UZXN0J3Mgb3duIHRlc3RzLiAgSW5zdGVhZCwgaXQg
anVzdCBidWlsZHMgdGhlIEdvb2dsZSBUZXN0IGxpYnJhcnkgYW5kCi1hIHNhbXBsZSB0ZXN0LiAg
WW91IGNhbiB1c2UgaXQgYXMgYSBzdGFydGluZyBwb2ludCBmb3IgeW91ciBvd24gYnVpbGQKLXNj
cmlwdC4KLQotSWYgdGhlIGRlZmF1bHQgc2V0dGluZ3MgYXJlIGNvcnJlY3QgZm9yIHlvdXIgZW52
aXJvbm1lbnQsIHRoZQotZm9sbG93aW5nIGNvbW1hbmRzIHNob3VsZCBzdWNjZWVkOgotCi0gIGNk
ICR7R1RFU1RfRElSfS9tYWtlCi0gIG1ha2UKLSAgLi9zYW1wbGUxX3VuaXR0ZXN0Ci0KLUlmIHlv
dSBzZWUgZXJyb3JzLCB0cnkgdG8gdHdlYWsgdGhlIGNvbnRlbnRzIG9mIG1ha2UvTWFrZWZpbGUg
dG8gbWFrZQotdGhlbSBnbyBhd2F5LiAgVGhlcmUgYXJlIGluc3RydWN0aW9ucyBpbiBtYWtlL01h
a2VmaWxlIG9uIGhvdyB0byBkbwotaXQuCi0KLSMjIyBVc2luZyBDTWFrZSAjIyMKLQotR29vZ2xl
IFRlc3QgY29tZXMgd2l0aCBhIENNYWtlIGJ1aWxkIHNjcmlwdCAoQ01ha2VMaXN0cy50eHQpIHRo
YXQgY2FuCi1iZSB1c2VkIG9uIGEgd2lkZSByYW5nZSBvZiBwbGF0Zm9ybXMgKCJDIiBzdGFuZHMg
Zm9yIGNyb3NzLXBsYXRvZnJtLikuCi1JZiB5b3UgZG9uJ3QgaGF2ZSBDTWFrZSBpbnN0YWxsZWQg
YWxyZWFkeSwgeW91IGNhbiBkb3dubG9hZCBpdCBmb3IKLWZyZWUgZnJvbSBodHRwOi8vd3d3LmNt
YWtlLm9yZy8uCi0KLUNNYWtlIHdvcmtzIGJ5IGdlbmVyYXRpbmcgbmF0aXZlIG1ha2VmaWxlcyBv
ciBidWlsZCBwcm9qZWN0cyB0aGF0IGNhbgotYmUgdXNlZCBpbiB0aGUgY29tcGlsZXIgZW52aXJv
bm1lbnQgb2YgeW91ciBjaG9pY2UuICBUaGUgdHlwaWNhbAotd29ya2Zsb3cgc3RhcnRzIHdpdGg6
Ci0KLSAgbWtkaXIgbXlidWlsZCAgICAgICAjIENyZWF0ZSBhIGRpcmVjdG9yeSB0byBob2xkIHRo
ZSBidWlsZCBvdXRwdXQuCi0gIGNkIG15YnVpbGQKLSAgY21ha2UgJHtHVEVTVF9ESVJ9ICAjIEdl
bmVyYXRlIG5hdGl2ZSBidWlsZCBzY3JpcHRzLgotCi1JZiB5b3Ugd2FudCB0byBidWlsZCBHb29n
bGUgVGVzdCdzIHNhbXBsZXMsIHlvdSBzaG91bGQgcmVwbGFjZSB0aGUKLWxhc3QgY29tbWFuZCB3
aXRoCi0KLSAgY21ha2UgLURidWlsZF9ndGVzdF9zYW1wbGVzPU9OICR7R1RFU1RfRElSfQotCi1J
ZiB5b3UgYXJlIG9uIGEgKm5peCBzeXN0ZW0sIHlvdSBzaG91bGQgbm93IHNlZSBhIE1ha2VmaWxl
IGluIHRoZQotY3VycmVudCBkaXJlY3RvcnkuICBKdXN0IHR5cGUgJ21ha2UnIHRvIGJ1aWxkIGd0
ZXN0LgotCi1JZiB5b3UgdXNlIFdpbmRvd3MgYW5kIGhhdmUgVmlzdHVhbCBTdHVkaW8gaW5zdGFs
bGVkLCBhIGd0ZXN0LnNsbiBmaWxlCi1hbmQgc2V2ZXJhbCAudmNwcm9qIGZpbGVzIHdpbGwgYmUg
Y3JlYXRlZC4gIFlvdSBjYW4gdGhlbiBidWlsZCB0aGVtCi11c2luZyBWaXN1YWwgU3R1ZGlvLgot
Ci1PbiBNYWMgT1MgWCB3aXRoIFhjb2RlIGluc3RhbGxlZCwgYSAueGNvZGVwcm9qIGZpbGUgd2ls
bCBiZSBnZW5lcmF0ZWQuCi0KLSMjIyBMZWdhY3kgQnVpbGQgU2NyaXB0cyAjIyMKLQotQmVmb3Jl
IHNldHRsaW5nIG9uIENNYWtlLCB3ZSBoYXZlIGJlZW4gcHJvdmlkaW5nIGhhbmQtbWFpbnRhaW5l
ZCBidWlsZAotcHJvamVjdHMvc2NyaXB0cyBmb3IgVmlzdWFsIFN0dWRpbywgWGNvZGUsIGFuZCBB
dXRvdG9vbHMuICBXaGlsZSB3ZQotY29udGludWUgdG8gcHJvdmlkZSB0aGVtIGZvciBjb252ZW5p
ZW5jZSwgdGhleSBhcmUgbm90IGFjdGl2ZWx5Ci1tYWludGFpbmVkIGFueSBtb3JlLiAgV2UgaGln
aGx5IHJlY29tbWVuZCB0aGF0IHlvdSBmb2xsb3cgdGhlCi1pbnN0cnVjdGlvbnMgaW4gdGhlIHBy
ZXZpb3VzIHR3byBzZWN0aW9ucyB0byBpbnRlZ3JhdGUgR29vZ2xlIFRlc3QKLXdpdGggeW91ciBl
eGlzdGluZyBidWlsZCBzeXN0ZW0uCi0KLUlmIHlvdSBzdGlsbCBuZWVkIHRvIHVzZSB0aGUgbGVn
YWN5IGJ1aWxkIHNjcmlwdHMsIGhlcmUncyBob3c6Ci0KLVRoZSBtc3ZjXCBmb2xkZXIgY29udGFp
bnMgdHdvIHNvbHV0aW9ucyB3aXRoIFZpc3VhbCBDKysgcHJvamVjdHMuCi1PcGVuIHRoZSBndGVz
dC5zbG4gb3IgZ3Rlc3QtbWQuc2xuIGZpbGUgdXNpbmcgVmlzdWFsIFN0dWRpbywgYW5kIHlvdQot
YXJlIHJlYWR5IHRvIGJ1aWxkIEdvb2dsZSBUZXN0IHRoZSBzYW1lIHdheSB5b3UgYnVpbGQgYW55
IFZpc3VhbAotU3R1ZGlvIHByb2plY3QuICBGaWxlcyB0aGF0IGhhdmUgbmFtZXMgZW5kaW5nIHdp
dGggLW1kIHVzZSBETEwKLXZlcnNpb25zIG9mIE1pY3Jvc29mdCBydW50aW1lIGxpYnJhcmllcyAo
dGhlIC9NRCBvciB0aGUgL01EZCBjb21waWxlcgotb3B0aW9uKS4gIEZpbGVzIHdpdGhvdXQgdGhh
dCBzdWZmaXggdXNlIHN0YXRpYyB2ZXJzaW9ucyBvZiB0aGUgcnVudGltZQotbGlicmFyaWVzICh0
aGUgL01UIG9yIHRoZSAvTVRkIG9wdGlvbikuICBQbGVhc2Ugbm90ZSB0aGF0IG9uZSBtdXN0IHVz
ZQotdGhlIHNhbWUgb3B0aW9uIHRvIGNvbXBpbGUgYm90aCBndGVzdCBhbmQgdGhlIHRlc3QgY29k
ZS4gIElmIHlvdSB1c2UKLVZpc3VhbCBTdHVkaW8gMjAwNSBvciBhYm92ZSwgd2UgcmVjb21tZW5k
IHRoZSAtbWQgdmVyc2lvbiBhcyAvTUQgaXMKLXRoZSBkZWZhdWx0IGZvciBuZXcgcHJvamVjdHMg
aW4gdGhlc2UgdmVyc2lvbnMgb2YgVmlzdWFsIFN0dWRpby4KLQotT24gTWFjIE9TIFgsIG9wZW4g
dGhlIGd0ZXN0Lnhjb2RlcHJvaiBpbiB0aGUgeGNvZGUvIGZvbGRlciB1c2luZwotWGNvZGUuICBC
dWlsZCB0aGUgImd0ZXN0IiB0YXJnZXQuICBUaGUgdW5pdmVyc2FsIGJpbmFyeSBmcmFtZXdvcmsg
d2lsbAotZW5kIHVwIGluIHlvdXIgc2VsZWN0ZWQgYnVpbGQgZGlyZWN0b3J5IChzZWxlY3RlZCBp
biB0aGUgWGNvZGUKLSJQcmVmZXJlbmNlcy4uLiIgLT4gIkJ1aWxkaW5nIiBwYW5lIGFuZCBkZWZh
dWx0cyB0byB4Y29kZS9idWlsZCkuCi1BbHRlcm5hdGl2ZWx5LCBhdCB0aGUgY29tbWFuZCBsaW5l
LCBlbnRlcjoKLQotICB4Y29kZWJ1aWxkCi0KLVRoaXMgd2lsbCBidWlsZCB0aGUgIlJlbGVhc2Ui
IGNvbmZpZ3VyYXRpb24gb2YgZ3Rlc3QuZnJhbWV3b3JrIGluIHlvdXIKLWRlZmF1bHQgYnVpbGQg
bG9jYXRpb24uICBTZWUgdGhlICJ4Y29kZWJ1aWxkIiBtYW4gcGFnZSBmb3IgbW9yZQotaW5mb3Jt
YXRpb24gYWJvdXQgYnVpbGRpbmcgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zIGFuZCBidWlsZGlu
ZyBpbgotZGlmZmVyZW50IGxvY2F0aW9ucy4KLQotVHdlYWtpbmcgR29vZ2xlIFRlc3QKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0KLUdvb2dsZSBUZXN0IGNhbiBiZSB1c2VkIGluIGRpdmVyc2UgZW52
aXJvbm1lbnRzLiAgVGhlIGRlZmF1bHQKLWNvbmZpZ3VyYXRpb24gbWF5IG5vdCB3b3JrIChvciBt
YXkgbm90IHdvcmsgd2VsbCkgb3V0IG9mIHRoZSBib3ggaW4KLXNvbWUgZW52aXJvbm1lbnRzLiAg
SG93ZXZlciwgeW91IGNhbiBlYXNpbHkgdHdlYWsgR29vZ2xlIFRlc3QgYnkKLWRlZmluaW5nIGNv
bnRyb2wgbWFjcm9zIG9uIHRoZSBjb21waWxlciBjb21tYW5kIGxpbmUuICBHZW5lcmFsbHksCi10
aGVzZSBtYWNyb3MgYXJlIG5hbWVkIGxpa2UgR1RFU1RfWFlaIGFuZCB5b3UgZGVmaW5lIHRoZW0g
dG8gZWl0aGVyIDEKLW9yIDAgdG8gZW5hYmxlIG9yIGRpc2FibGUgYSBjZXJ0YWluIGZlYXR1cmUu
Ci0KLVdlIGxpc3QgdGhlIG1vc3QgZnJlcXVlbnRseSB1c2VkIG1hY3JvcyBiZWxvdy4gIEZvciBh
IGNvbXBsZXRlIGxpc3QsCi1zZWUgZmlsZSBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaC4KLQotIyMjIENob29zaW5nIGEgVFIxIFR1cGxlIExpYnJhcnkgIyMjCi0KLVNvbWUgR29v
Z2xlIFRlc3QgZmVhdHVyZXMgcmVxdWlyZSB0aGUgQysrIFRlY2huaWNhbCBSZXBvcnQgMSAoVFIx
KQotdHVwbGUgbGlicmFyeSwgd2hpY2ggaXMgbm90IHlldCBhdmFpbGFibGUgd2l0aCBhbGwgY29t
cGlsZXJzLiAgVGhlCi1nb29kIG5ld3MgaXMgdGhhdCBHb29nbGUgVGVzdCBpbXBsZW1lbnRzIGEg
c3Vic2V0IG9mIFRSMSB0dXBsZSB0aGF0J3MKLWVub3VnaCBmb3IgaXRzIG93biBuZWVkLCBhbmQg
d2lsbCBhdXRvbWF0aWNhbGx5IHVzZSB0aGlzIHdoZW4gdGhlCi1jb21waWxlciBkb2Vzbid0IHBy
b3ZpZGUgVFIxIHR1cGxlLgotCi1Vc3VhbGx5IHlvdSBkb24ndCBuZWVkIHRvIGNhcmUgYWJvdXQg
d2hpY2ggdHVwbGUgbGlicmFyeSBHb29nbGUgVGVzdAotdXNlcy4gIEhvd2V2ZXIsIGlmIHlvdXIg
cHJvamVjdCBhbHJlYWR5IHVzZXMgVFIxIHR1cGxlLCB5b3UgbmVlZCB0bwotdGVsbCBHb29nbGUg
VGVzdCB0byB1c2UgdGhlIHNhbWUgVFIxIHR1cGxlIGxpYnJhcnkgdGhlIHJlc3Qgb2YgeW91cgot
cHJvamVjdCB1c2VzLCBvciB0aGUgdHdvIHR1cGxlIGltcGxlbWVudGF0aW9ucyB3aWxsIGNsYXNo
LiAgVG8gZG8KLXRoYXQsIGFkZAotCi0gIC1ER1RFU1RfVVNFX09XTl9UUjFfVFVQTEU9MAotCi10
byB0aGUgY29tcGlsZXIgZmxhZ3Mgd2hpbGUgY29tcGlsaW5nIEdvb2dsZSBUZXN0IGFuZCB5b3Vy
IHRlc3RzLiAgSWYKLXlvdSB3YW50IHRvIGZvcmNlIEdvb2dsZSBUZXN0IHRvIHVzZSBpdHMgb3du
IHR1cGxlIGxpYnJhcnksIGp1c3QgYWRkCi0KLSAgLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0x
Ci0KLXRvIHRoZSBjb21waWxlciBmbGFncyBpbnN0ZWFkLgotCi1JZiB5b3UgZG9uJ3Qgd2FudCBH
b29nbGUgVGVzdCB0byB1c2UgdHVwbGUgYXQgYWxsLCBhZGQKLQotICAtREdURVNUX0hBU19UUjFf
VFVQTEU9MAotCi1hbmQgYWxsIGZlYXR1cmVzIHVzaW5nIHR1cGxlIHdpbGwgYmUgZGlzYWJsZWQu
Ci0KLSMjIyBNdWx0aS10aHJlYWRlZCBUZXN0cyAjIyMKLQotR29vZ2xlIFRlc3QgaXMgdGhyZWFk
LXNhZmUgd2hlcmUgdGhlIHB0aHJlYWQgbGlicmFyeSBpcyBhdmFpbGFibGUuCi1BZnRlciAjaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4sIHlvdSBjYW4gY2hlY2sgdGhlIEdURVNUX0lTX1RIUkVBRFNB
RkUKLW1hY3JvIHRvIHNlZSB3aGV0aGVyIHRoaXMgaXMgdGhlIGNhc2UgKHllcyBpZiB0aGUgbWFj
cm8gaXMgI2RlZmluZWQgdG8KLTEsIG5vIGlmIGl0J3MgdW5kZWZpbmVkLikuCi0KLUlmIEdvb2ds
ZSBUZXN0IGRvZXNuJ3QgY29ycmVjdGx5IGRldGVjdCB3aGV0aGVyIHB0aHJlYWQgaXMgYXZhaWxh
YmxlCi1pbiB5b3VyIGVudmlyb25tZW50LCB5b3UgY2FuIGZvcmNlIGl0IHdpdGgKLQotICAtREdU
RVNUX0hBU19QVEhSRUFEPTEKLQotb3IKLQotICAtREdURVNUX0hBU19QVEhSRUFEPTAKLQotV2hl
biBHb29nbGUgVGVzdCB1c2VzIHB0aHJlYWQsIHlvdSBtYXkgbmVlZCB0byBhZGQgZmxhZ3MgdG8g
eW91cgotY29tcGlsZXIgYW5kL29yIGxpbmtlciB0byBzZWxlY3QgdGhlIHB0aHJlYWQgbGlicmFy
eSwgb3IgeW91J2xsIGdldAotbGluayBlcnJvcnMuICBJZiB5b3UgdXNlIHRoZSBDTWFrZSBzY3Jp
cHQgb3IgdGhlIGRlcHJlY2F0ZWQgQXV0b3Rvb2xzCi1zY3JpcHQsIHRoaXMgaXMgdGFrZW4gY2Fy
ZSBvZiBmb3IgeW91LiAgSWYgeW91IHVzZSB5b3VyIG93biBidWlsZAotc2NyaXB0LCB5b3UnbGwg
bmVlZCB0byByZWFkIHlvdXIgY29tcGlsZXIgYW5kIGxpbmtlcidzIG1hbnVhbCB0bwotZmlndXJl
IG91dCB3aGF0IGZsYWdzIHRvIGFkZC4KLQotIyMjIEFzIGEgU2hhcmVkIExpYnJhcnkgKERMTCkg
IyMjCi0KLUdvb2dsZSBUZXN0IGlzIGNvbXBhY3QsIHNvIG1vc3QgdXNlcnMgY2FuIGJ1aWxkIGFu
ZCBsaW5rIGl0IGFzIGEKLXN0YXRpYyBsaWJyYXJ5IGZvciB0aGUgc2ltcGxpY2l0eS4gIFlvdSBj
YW4gY2hvb3NlIHRvIHVzZSBHb29nbGUgVGVzdAotYXMgYSBzaGFyZWQgbGlicmFyeSAoa25vd24g
YXMgYSBETEwgb24gV2luZG93cykgaWYgeW91IHByZWZlci4KLQotVG8gY29tcGlsZSBndGVzdCBh
cyBhIHNoYXJlZCBsaWJyYXJ5LCBhZGQKLQotICAtREdURVNUX0NSRUFURV9TSEFSRURfTElCUkFS
WT0xCi0KLXRvIHRoZSBjb21waWxlciBmbGFncy4gIFlvdSdsbCBhbHNvIG5lZWQgdG8gdGVsbCB0
aGUgbGlua2VyIHRvIHByb2R1Y2UKLWEgc2hhcmVkIGxpYnJhcnkgaW5zdGVhZCAtIGNvbnN1bHQg
eW91ciBsaW5rZXIncyBtYW51YWwgZm9yIGhvdyB0byBkbwotaXQuCi0KLVRvIGNvbXBpbGUgeW91
ciB0ZXN0cyB0aGF0IHVzZSB0aGUgZ3Rlc3Qgc2hhcmVkIGxpYnJhcnksIGFkZAotCi0gIC1ER1RF
U1RfTElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZPTEKLQotdG8gdGhlIGNvbXBpbGVyIGZsYWdzLgot
Ci0jIyMgQXZvaWRpbmcgTWFjcm8gTmFtZSBDbGFzaGVzICMjIwotCi1JbiBDKyssIG1hY3JvcyBk
b24ndCBvYmV5IG5hbWVzcGFjZXMuICBUaGVyZWZvcmUgdHdvIGxpYnJhcmllcyB0aGF0Ci1ib3Ro
IGRlZmluZSBhIG1hY3JvIG9mIHRoZSBzYW1lIG5hbWUgd2lsbCBjbGFzaCBpZiB5b3UgI2luY2x1
ZGUgYm90aAotZGVmaW5pdGlvbnMuICBJbiBjYXNlIGEgR29vZ2xlIFRlc3QgbWFjcm8gY2xhc2hl
cyB3aXRoIGFub3RoZXIKLWxpYnJhcnksIHlvdSBjYW4gZm9yY2UgR29vZ2xlIFRlc3QgdG8gcmVu
YW1lIGl0cyBtYWNybyB0byBhdm9pZCB0aGUKLWNvbmZsaWN0LgotCi1TcGVjaWZpY2FsbHksIGlm
IGJvdGggR29vZ2xlIFRlc3QgYW5kIHNvbWUgb3RoZXIgY29kZSBkZWZpbmUgbWFjcm8KLUZPTywg
eW91IGNhbiBhZGQKLQotICAtREdURVNUX0RPTlRfREVGSU5FX0ZPTz0xCi0KLXRvIHRoZSBjb21w
aWxlciBmbGFncyB0byB0ZWxsIEdvb2dsZSBUZXN0IHRvIGNoYW5nZSB0aGUgbWFjcm8ncyBuYW1l
Ci1mcm9tIEZPTyB0byBHVEVTVF9GT08uICBDdXJyZW50bHkgRk9PIGNhbiBiZSBGQUlMLCBTVUND
RUVELCBvciBURVNULgotRm9yIGV4YW1wbGUsIHdpdGggLURHVEVTVF9ET05UX0RFRklORV9URVNU
PTEsIHlvdSdsbCBuZWVkIHRvIHdyaXRlCi0KLSAgR1RFU1RfVEVTVChTb21lVGVzdCwgRG9lc1Ro
aXMpIHsgLi4uIH0KLQotaW5zdGVhZCBvZgotCi0gIFRFU1QoU29tZVRlc3QsIERvZXNUaGlzKSB7
IC4uLiB9Ci0KLWluIG9yZGVyIHRvIGRlZmluZSBhIHRlc3QuCi0KLVVwZ3JhdGluZyBmcm9tIGFu
IEVhcmxpZXIgVmVyc2lvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVdl
IHN0cml2ZSB0byBrZWVwIEdvb2dsZSBUZXN0IHJlbGVhc2VzIGJhY2t3YXJkIGNvbXBhdGlibGUu
Ci1Tb21ldGltZXMsIHRob3VnaCwgd2UgaGF2ZSB0byBtYWtlIHNvbWUgYnJlYWtpbmcgY2hhbmdl
cyBmb3IgdGhlCi11c2VycycgbG9uZy10ZXJtIGJlbmVmaXRzLiAgVGhpcyBzZWN0aW9uIGRlc2Ny
aWJlcyB3aGF0IHlvdSdsbCBuZWVkIHRvCi1kbyBpZiB5b3UgYXJlIHVwZ3JhZGluZyBmcm9tIGFu
IGVhcmxpZXIgdmVyc2lvbiBvZiBHb29nbGUgVGVzdC4KLQotIyMjIFVwZ3JhZGluZyBmcm9tIDEu
My4wIG9yIEVhcmxpZXIgIyMjCi0KLVlvdSBtYXkgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSBv
ciBkaXNhYmxlIEdvb2dsZSBUZXN0J3Mgb3duIFRSMQotdHVwbGUgbGlicmFyeS4gIFNlZSB0aGUg
aW5zdHJ1Y3Rpb25zIGluIHNlY3Rpb24gIkNob29zaW5nIGEgVFIxIFR1cGxlCi1MaWJyYXJ5Ii4K
LQotIyMjIFVwZ3JhZGluZyBmcm9tIDEuNC4wIG9yIEVhcmxpZXIgIyMjCi0KLVRoZSBBdXRvdG9v
bHMgYnVpbGQgc2NyaXB0IChjb25maWd1cmUgKyBtYWtlKSBpcyBubyBsb25nZXIgb2ZmaWNpYWxs
eQotc3VwcG9ydHRlZC4gIFlvdSBhcmUgZW5jb3VyYWdlZCB0byBtaWdyYXRlIHRvIHlvdXIgb3du
IGJ1aWxkIHN5c3RlbSBvcgotdXNlIENNYWtlLiAgSWYgeW91IHN0aWxsIG5lZWQgdG8gdXNlIEF1
dG90b29scywgeW91IGNhbiBmaW5kCi1pbnN0cnVjdGlvbnMgaW4gdGhlIFJFQURNRSBmaWxlIGZy
b20gR29vZ2xlIFRlc3QgMS40LjAuCi0KLU9uIHBsYXRmb3JtcyB3aGVyZSB0aGUgcHRocmVhZCBs
aWJyYXJ5IGlzIGF2YWlsYWJsZSwgR29vZ2xlIFRlc3QgdXNlcwotaXQgaW4gb3JkZXIgdG8gYmUg
dGhyZWFkLXNhZmUuICBTZWUgdGhlICJNdWx0aS10aHJlYWRlZCBUZXN0cyIgc2VjdGlvbgotZm9y
IHdoYXQgdGhpcyBtZWFucyB0byB5b3VyIGJ1aWxkIHNjcmlwdC4KLQotSWYgeW91IHVzZSBNaWNy
b3NvZnQgVmlzdWFsIEMrKyA3LjEgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLCBHb29nbGUKLVRl
c3Qgd2lsbCBubyBsb25nZXIgY29tcGlsZS4gIFRoaXMgc2hvdWxkIGFmZmVjdCB2ZXJ5IGZldyBw
ZW9wbGUsIGFzIGEKLWxhcmdlIHBvcnRpb24gb2YgU1RMIChpbmNsdWRpbmcgPHN0cmluZz4pIGRv
ZXNuJ3QgY29tcGlsZSBpbiB0aGlzIG1vZGUKLWFueXdheS4gIFdlIGRlY2lkZWQgdG8gc3RvcCBz
dXBwb3J0aW5nIGl0IGluIG9yZGVyIHRvIGdyZWF0bHkgc2ltcGxpZnkKLUdvb2dsZSBUZXN0J3Mg
aW1wbGVtZW50YXRpb24uCi0KLURldmVsb3BpbmcgR29vZ2xlIFRlc3QKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLQotVGhpcyBzZWN0aW9uIGRpc2N1c3NlcyBob3cgdG8gbWFrZSB5b3VyIG93biBj
aGFuZ2VzIHRvIEdvb2dsZSBUZXN0LgotCi0jIyMgVGVzdGluZyBHb29nbGUgVGVzdCBJdHNlbGYg
IyMjCi0KLVRvIG1ha2Ugc3VyZSB5b3VyIGNoYW5nZXMgd29yayBhcyBpbnRlbmRlZCBhbmQgZG9u
J3QgYnJlYWsgZXhpc3RpbmcKLWZ1bmN0aW9uYWxpdHksIHlvdSdsbCB3YW50IHRvIGNvbXBpbGUg
YW5kIHJ1biBHb29nbGUgVGVzdCdzIG93biB0ZXN0cy4KLUZvciB0aGF0IHlvdSBjYW4gdXNlIENN
YWtlOgotCi0gIG1rZGlyIG15YnVpbGQKLSAgY2QgbXlidWlsZAotICBjbWFrZSAtRGJ1aWxkX2Fs
bF9ndGVzdF90ZXN0cz1PTiAke0dURVNUX0RJUn0KLQotTWFrZSBzdXJlIHlvdSBoYXZlIFB5dGhv
biBpbnN0YWxsZWQsIGFzIHNvbWUgb2YgR29vZ2xlIFRlc3QncyB0ZXN0cwotYXJlIHdyaXR0ZW4g
aW4gUHl0aG9uLiAgSWYgdGhlIGNtYWtlIGNvbW1hbmQgY29tcGxhaW5zIGFib3V0IG5vdCBiZWlu
ZwotYWJsZSB0byBmaW5kIFB5dGhvbiAoIkNvdWxkIE5PVCBmaW5kIFB5dGhvbkludGVycCAobWlz
c2luZzoKLVBZVEhPTl9FWEVDVVRBQkxFKSIpLCB0cnkgdGVsbGluZyBpdCBleHBsaWNpdGx5IHdo
ZXJlIHlvdXIgUHl0aG9uCi1leGVjdXRhYmxlIGNhbiBiZSBmb3VuZDoKLQotICBjbWFrZSAtRFBZ
VEhPTl9FWEVDVVRBQkxFPXBhdGgvdG8vcHl0aG9uIC1EYnVpbGRfYWxsX2d0ZXN0X3Rlc3RzPU9O
IFwKLSAgICAgICR7R1RFU1RfRElSfQotCi1OZXh0LCB5b3UgY2FuIGJ1aWxkIEdvb2dsZSBUZXN0
IGFuZCBhbGwgb2YgaXRzIG93biB0ZXN0cy4gIE9uICpuaXgsCi10aGlzIGlzIHVzdWFsbHkgZG9u
ZSBieSAnbWFrZScuICBUbyBydW4gdGhlIHRlc3RzLCBkbwotCi0gIG1ha2UgdGVzdAotCi1BbGwg
dGVzdHMgc2hvdWxkIHBhc3MuCi0KLSMjIyBSZWdlbmVyYXRpbmcgU291cmNlIEZpbGVzICMjIwot
Ci1Tb21lIG9mIEdvb2dsZSBUZXN0J3Mgc291cmNlIGZpbGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0
ZW1wbGF0ZXMgKG5vdAotaW4gdGhlIEMrKyBzZW5zZSkgdXNpbmcgYSBzY3JpcHQuICBBIHRlbXBs
YXRlIGZpbGUgaXMgbmFtZWQgRk9PLnB1bXAsCi13aGVyZSBGT08gaXMgdGhlIG5hbWUgb2YgdGhl
IGZpbGUgaXQgd2lsbCBnZW5lcmF0ZS4gIEZvciBleGFtcGxlLCB0aGUKLWZpbGUgaW5jbHVkZS9n
dGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wIGlzIHVzZWQgdG8gZ2VuZXJhdGUK
LWd0ZXN0LXR5cGUtdXRpbC5oIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KLQotTm9ybWFsbHkgeW91
IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgcmVnZW5lcmF0aW5nIHRoZSBzb3VyY2UgZmlsZXMs
Ci11bmxlc3MgeW91IG5lZWQgdG8gbW9kaWZ5IHRoZW0uICBJbiB0aGF0IGNhc2UsIHlvdSBzaG91
bGQgbW9kaWZ5IHRoZQotY29ycmVzcG9uZGluZyAucHVtcCBmaWxlcyBpbnN0ZWFkIGFuZCBydW4g
dGhlIHB1bXAucHkgUHl0aG9uIHNjcmlwdCB0bwotcmVnZW5lcmF0ZSB0aGVtLiAgWW91IGNhbiBm
aW5kIHB1bXAucHkgaW4gdGhlIHNjcmlwdHMvIGRpcmVjdG9yeS4KLVJlYWQgdGhlIFB1bXAgbWFu
dWFsIFsyXSBmb3IgaG93IHRvIHVzZSBpdC4KLQotICBbMl0gaHR0cDovL2NvZGUuZ29vZ2xlLmNv
bS9wL2dvb2dsZXRlc3Qvd2lraS9QdW1wTWFudWFsCi0KLSMjIyBDb250cmlidXRpbmcgYSBQYXRj
aCAjIyMKLQotV2Ugd2VsY29tZSBwYXRjaGVzLiAgUGxlYXNlIHJlYWQgdGhlIEdvb2dsZSBUZXN0
IGRldmVsb3BlcidzIGd1aWRlIFszXQotZm9yIGhvdyB5b3UgY2FuIGNvbnRyaWJ1dGUuICBJbiBw
YXJ0aWN1bGFyLCBtYWtlIHN1cmUgeW91IGhhdmUgc2lnbmVkCi10aGUgQ29udHJpYnV0b3IgTGlj
ZW5zZSBBZ3JlZW1lbnQsIG9yIHdlIHdvbid0IGJlIGFibGUgdG8gYWNjZXB0IHRoZQotcGF0Y2gu
Ci0KLSAgWzNdIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L3dpa2kvR29vZ2xl
VGVzdERldkd1aWRlCi0KLUhhcHB5IHRlc3RpbmchCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9SRUFETUUuV2ViS2l0IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVBRE1F
LldlYktpdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEzMThmZjYyZTMyNDljOGU2
NTMyMDkzZjQwZTNjYjQxYzE1ZjlhYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9SRUFETUUuV2ViS2l0CisrKyAv
ZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotR1Rlc3Qgdi4xLjUuMAotCi1odHRwOi8vZ29vZ2xl
dGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdGFncy9yZWxlYXNlLTEuNS4wLyAKLQotMjAxNi0wMS0w
MiBUaW5nLVdlaSBMYW4gKGxhbnR3NDRAZ21haWwuY29tKQotICAgICAgUmVtb3ZlIHVzYWdlIG9m
IGVudmlyb24gZ2xvYmFsIHZhcmlhYmxlIHRvIGZpeCB0aGUgYnVpbGQgb24gRnJlZUJTRC4KLQot
MjAxMi0wMS0wNCBEbWl0cnkgTG9tb3YgKGRzbG9tb3ZAZ29vZ2xlLmNvbSkgIERhdmlkIEtpbHpl
ciAoZGRraWx6ZXJAYXBwbGUuY29tKQotICAgICAgLSBXZWJLaXQgcG9ydCBvZiBndGVzdCB1c2Vz
IEZhc3RNYWxsb2MgIm5ldyIgYW5kICJkZWxldGUiIG9wZXJhdG9ycyBmcm9tIEphdmFTY3JpcHRD
b3JlLgotICAgICAgLSBUaGUgZ3Rlc3QuZnJhbWV3b3JrIHRhcmdldCBub3cgbGlua3MgdG8gSmF2
YVNjcmlwdENvcmUuZnJhbWV3b3JrLgotCi0yMDExLTEyLTIyIERhdmlkIEtpbHplciAoZGRraWx6
ZXJAYXBwbGUuY29tKQotICAgICAgQWRkZWQgUHJvZHVjdGlvbiBjb25maWd1cmF0aW9uIHRvIGd0
ZXN0IFhjb2RlIHByb2plY3QuCi0KLTIwMTEtMDUtMDYgRG1pdHJ5IExvbW92IChkc2xvbW92QGdv
b2dsZS5jb20pCi0gICAgICBndGVzdC1tZC52Y3Byb2ogdXBncmFkZWQgdG8gVlMgMjAwNSAoOC4w
KSBmb3JtYXQgdG8gbWF0Y2ggdGhlIHJlc3Qgb2YgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9SRUFETUUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9SRUFE
TUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTMwZmU4MDQ3MTI3YmVlMTZkMmM3MWYxNGI1MDlmMzc1NzFhZGQ0
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5tZApA
QCAtMCwwICsxLDM0MSBAQAorIyMjIEdlbmVyaWMgQnVpbGQgSW5zdHJ1Y3Rpb25zCisKKyMjIyMg
U2V0dXAKKworVG8gYnVpbGQgR29vZ2xlIFRlc3QgYW5kIHlvdXIgdGVzdHMgdGhhdCB1c2UgaXQs
IHlvdSBuZWVkIHRvIHRlbGwgeW91ciBidWlsZAorc3lzdGVtIHdoZXJlIHRvIGZpbmQgaXRzIGhl
YWRlcnMgYW5kIHNvdXJjZSBmaWxlcy4gVGhlIGV4YWN0IHdheSB0byBkbyBpdAorZGVwZW5kcyBv
biB3aGljaCBidWlsZCBzeXN0ZW0geW91IHVzZSwgYW5kIGlzIHVzdWFsbHkgc3RyYWlnaHRmb3J3
YXJkLgorCisjIyMjIEJ1aWxkCisKK1N1cHBvc2UgeW91IHB1dCBHb29nbGUgVGVzdCBpbiBkaXJl
Y3RvcnkgYCR7R1RFU1RfRElSfWAuIFRvIGJ1aWxkIGl0LCBjcmVhdGUgYQorbGlicmFyeSBidWls
ZCB0YXJnZXQgKG9yIGEgcHJvamVjdCBhcyBjYWxsZWQgYnkgVmlzdWFsIFN0dWRpbyBhbmQgWGNv
ZGUpIHRvCitjb21waWxlCisKKyAgICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LWFsbC5jYworCit3
aXRoIGAke0dURVNUX0RJUn0vaW5jbHVkZWAgaW4gdGhlIHN5c3RlbSBoZWFkZXIgc2VhcmNoIHBh
dGggYW5kIGAke0dURVNUX0RJUn1gCitpbiB0aGUgbm9ybWFsIGhlYWRlciBzZWFyY2ggcGF0aC4g
QXNzdW1pbmcgYSBMaW51eC1saWtlIHN5c3RlbSBhbmQgZ2NjLAorc29tZXRoaW5nIGxpa2UgdGhl
IGZvbGxvd2luZyB3aWxsIGRvOgorCisgICAgZysrIC1pc3lzdGVtICR7R1RFU1RfRElSfS9pbmNs
dWRlIC1JJHtHVEVTVF9ESVJ9IFwKKyAgICAgICAgLXB0aHJlYWQgLWMgJHtHVEVTVF9ESVJ9L3Ny
Yy9ndGVzdC1hbGwuY2MKKyAgICBhciAtcnYgbGliZ3Rlc3QuYSBndGVzdC1hbGwubworCisoV2Ug
bmVlZCBgLXB0aHJlYWRgIGFzIEdvb2dsZSBUZXN0IHVzZXMgdGhyZWFkcy4pCisKK05leHQsIHlv
dSBzaG91bGQgY29tcGlsZSB5b3VyIHRlc3Qgc291cmNlIGZpbGUgd2l0aCBgJHtHVEVTVF9ESVJ9
L2luY2x1ZGVgIGluCit0aGUgc3lzdGVtIGhlYWRlciBzZWFyY2ggcGF0aCwgYW5kIGxpbmsgaXQg
d2l0aCBndGVzdCBhbmQgYW55IG90aGVyIG5lY2Vzc2FyeQorbGlicmFyaWVzOgorCisgICAgZysr
IC1pc3lzdGVtICR7R1RFU1RfRElSfS9pbmNsdWRlIC1wdGhyZWFkIHBhdGgvdG8veW91cl90ZXN0
LmNjIGxpYmd0ZXN0LmEgXAorICAgICAgICAtbyB5b3VyX3Rlc3QKKworQXMgYW4gZXhhbXBsZSwg
dGhlIG1ha2UvIGRpcmVjdG9yeSBjb250YWlucyBhIE1ha2VmaWxlIHRoYXQgeW91IGNhbiB1c2Ug
dG8gYnVpbGQKK0dvb2dsZSBUZXN0IG9uIHN5c3RlbXMgd2hlcmUgR05VIG1ha2UgaXMgYXZhaWxh
YmxlIChlLmcuIExpbnV4LCBNYWMgT1MgWCwgYW5kCitDeWd3aW4pLiBJdCBkb2Vzbid0IHRyeSB0
byBidWlsZCBHb29nbGUgVGVzdCdzIG93biB0ZXN0cy4gSW5zdGVhZCwgaXQganVzdAorYnVpbGRz
IHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5IGFuZCBhIHNhbXBsZSB0ZXN0LiBZb3UgY2FuIHVzZSBp
dCBhcyBhIHN0YXJ0aW5nCitwb2ludCBmb3IgeW91ciBvd24gYnVpbGQgc2NyaXB0LgorCitJZiB0
aGUgZGVmYXVsdCBzZXR0aW5ncyBhcmUgY29ycmVjdCBmb3IgeW91ciBlbnZpcm9ubWVudCwgdGhl
IGZvbGxvd2luZyBjb21tYW5kcworc2hvdWxkIHN1Y2NlZWQ6CisKKyAgICBjZCAke0dURVNUX0RJ
Un0vbWFrZQorICAgIG1ha2UKKyAgICAuL3NhbXBsZTFfdW5pdHRlc3QKKworSWYgeW91IHNlZSBl
cnJvcnMsIHRyeSB0byB0d2VhayB0aGUgY29udGVudHMgb2YgYG1ha2UvTWFrZWZpbGVgIHRvIG1h
a2UgdGhlbSBnbworYXdheS4gVGhlcmUgYXJlIGluc3RydWN0aW9ucyBpbiBgbWFrZS9NYWtlZmls
ZWAgb24gaG93IHRvIGRvIGl0LgorCisjIyMgVXNpbmcgQ01ha2UKKworR29vZ2xlIFRlc3QgY29t
ZXMgd2l0aCBhIENNYWtlIGJ1aWxkIHNjcmlwdCAoCitbQ01ha2VMaXN0cy50eHRdKGh0dHBzOi8v
Z2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9ibG9iL21hc3Rlci9DTWFrZUxpc3RzLnR4dCkp
Cit0aGF0IGNhbiBiZSB1c2VkIG9uIGEgd2lkZSByYW5nZSBvZiBwbGF0Zm9ybXMgKCJDIiBzdGFu
ZHMgZm9yIGNyb3NzLXBsYXRmb3JtLikuCitJZiB5b3UgZG9uJ3QgaGF2ZSBDTWFrZSBpbnN0YWxs
ZWQgYWxyZWFkeSwgeW91IGNhbiBkb3dubG9hZCBpdCBmb3IgZnJlZSBmcm9tCis8aHR0cDovL3d3
dy5jbWFrZS5vcmcvPi4KKworQ01ha2Ugd29ya3MgYnkgZ2VuZXJhdGluZyBuYXRpdmUgbWFrZWZp
bGVzIG9yIGJ1aWxkIHByb2plY3RzIHRoYXQgY2FuIGJlIHVzZWQgaW4KK3RoZSBjb21waWxlciBl
bnZpcm9ubWVudCBvZiB5b3VyIGNob2ljZS4gWW91IGNhbiBlaXRoZXIgYnVpbGQgR29vZ2xlIFRl
c3QgYXMgYQorc3RhbmRhbG9uZSBwcm9qZWN0IG9yIGl0IGNhbiBiZSBpbmNvcnBvcmF0ZWQgaW50
byBhbiBleGlzdGluZyBDTWFrZSBidWlsZCBmb3IKK2Fub3RoZXIgcHJvamVjdC4KKworIyMjIyBT
dGFuZGFsb25lIENNYWtlIFByb2plY3QKKworV2hlbiBidWlsZGluZyBHb29nbGUgVGVzdCBhcyBh
IHN0YW5kYWxvbmUgcHJvamVjdCwgdGhlIHR5cGljYWwgd29ya2Zsb3cgc3RhcnRzCit3aXRoOgor
CisgICAgbWtkaXIgbXlidWlsZCAgICAgICAjIENyZWF0ZSBhIGRpcmVjdG9yeSB0byBob2xkIHRo
ZSBidWlsZCBvdXRwdXQuCisgICAgY2QgbXlidWlsZAorICAgIGNtYWtlICR7R1RFU1RfRElSfSAg
IyBHZW5lcmF0ZSBuYXRpdmUgYnVpbGQgc2NyaXB0cy4KKworSWYgeW91IHdhbnQgdG8gYnVpbGQg
R29vZ2xlIFRlc3QncyBzYW1wbGVzLCB5b3Ugc2hvdWxkIHJlcGxhY2UgdGhlIGxhc3QgY29tbWFu
ZAord2l0aAorCisgICAgY21ha2UgLURndGVzdF9idWlsZF9zYW1wbGVzPU9OICR7R1RFU1RfRElS
fQorCitJZiB5b3UgYXJlIG9uIGEgXCpuaXggc3lzdGVtLCB5b3Ugc2hvdWxkIG5vdyBzZWUgYSBN
YWtlZmlsZSBpbiB0aGUgY3VycmVudAorZGlyZWN0b3J5LiBKdXN0IHR5cGUgJ21ha2UnIHRvIGJ1
aWxkIGd0ZXN0LgorCitJZiB5b3UgdXNlIFdpbmRvd3MgYW5kIGhhdmUgVmlzdWFsIFN0dWRpbyBp
bnN0YWxsZWQsIGEgYGd0ZXN0LnNsbmAgZmlsZSBhbmQKK3NldmVyYWwgYC52Y3Byb2pgIGZpbGVz
IHdpbGwgYmUgY3JlYXRlZC4gWW91IGNhbiB0aGVuIGJ1aWxkIHRoZW0gdXNpbmcgVmlzdWFsCitT
dHVkaW8uCisKK09uIE1hYyBPUyBYIHdpdGggWGNvZGUgaW5zdGFsbGVkLCBhIGAueGNvZGVwcm9q
YCBmaWxlIHdpbGwgYmUgZ2VuZXJhdGVkLgorCisjIyMjIEluY29ycG9yYXRpbmcgSW50byBBbiBF
eGlzdGluZyBDTWFrZSBQcm9qZWN0CisKK0lmIHlvdSB3YW50IHRvIHVzZSBndGVzdCBpbiBhIHBy
b2plY3Qgd2hpY2ggYWxyZWFkeSB1c2VzIENNYWtlLCB0aGVuIGEgbW9yZQorcm9idXN0IGFuZCBm
bGV4aWJsZSBhcHByb2FjaCBpcyB0byBidWlsZCBndGVzdCBhcyBwYXJ0IG9mIHRoYXQgcHJvamVj
dCBkaXJlY3RseS4KK1RoaXMgaXMgZG9uZSBieSBtYWtpbmcgdGhlIEdvb2dsZVRlc3Qgc291cmNl
IGNvZGUgYXZhaWxhYmxlIHRvIHRoZSBtYWluIGJ1aWxkCithbmQgYWRkaW5nIGl0IHVzaW5nIENN
YWtlJ3MgYGFkZF9zdWJkaXJlY3RvcnkoKWAgY29tbWFuZC4gVGhpcyBoYXMgdGhlCitzaWduaWZp
Y2FudCBhZHZhbnRhZ2UgdGhhdCB0aGUgc2FtZSBjb21waWxlciBhbmQgbGlua2VyIHNldHRpbmdz
IGFyZSB1c2VkCitiZXR3ZWVuIGd0ZXN0IGFuZCB0aGUgcmVzdCBvZiB5b3VyIHByb2plY3QsIHNv
IGlzc3VlcyBhc3NvY2lhdGVkIHdpdGggdXNpbmcKK2luY29tcGF0aWJsZSBsaWJyYXJpZXMgKGVn
IGRlYnVnL3JlbGVhc2UpLCBldGMuIGFyZSBhdm9pZGVkLiBUaGlzIGlzCitwYXJ0aWN1bGFybHkg
dXNlZnVsIG9uIFdpbmRvd3MuIE1ha2luZyBHb29nbGVUZXN0J3Mgc291cmNlIGNvZGUgYXZhaWxh
YmxlIHRvIHRoZQorbWFpbiBidWlsZCBjYW4gYmUgZG9uZSBhIGZldyBkaWZmZXJlbnQgd2F5czoK
KworKiAgIERvd25sb2FkIHRoZSBHb29nbGVUZXN0IHNvdXJjZSBjb2RlIG1hbnVhbGx5IGFuZCBw
bGFjZSBpdCBhdCBhIGtub3duCisgICAgbG9jYXRpb24uIFRoaXMgaXMgdGhlIGxlYXN0IGZsZXhp
YmxlIGFwcHJvYWNoIGFuZCBjYW4gbWFrZSBpdCBtb3JlIGRpZmZpY3VsdAorICAgIHRvIHVzZSB3
aXRoIGNvbnRpbnVvdXMgaW50ZWdyYXRpb24gc3lzdGVtcywgZXRjLgorKiAgIEVtYmVkIHRoZSBH
b29nbGVUZXN0IHNvdXJjZSBjb2RlIGFzIGEgZGlyZWN0IGNvcHkgaW4gdGhlIG1haW4gcHJvamVj
dCdzCisgICAgc291cmNlIHRyZWUuIFRoaXMgaXMgb2Z0ZW4gdGhlIHNpbXBsZXN0IGFwcHJvYWNo
LCBidXQgaXMgYWxzbyB0aGUgaGFyZGVzdCB0bworICAgIGtlZXAgdXAgdG8gZGF0ZS4gU29tZSBv
cmdhbml6YXRpb25zIG1heSBub3QgcGVybWl0IHRoaXMgbWV0aG9kLgorKiAgIEFkZCBHb29nbGVU
ZXN0IGFzIGEgZ2l0IHN1Ym1vZHVsZSBvciBlcXVpdmFsZW50LiBUaGlzIG1heSBub3QgYWx3YXlz
IGJlCisgICAgcG9zc2libGUgb3IgYXBwcm9wcmlhdGUuIEdpdCBzdWJtb2R1bGVzLCBmb3IgZXhh
bXBsZSwgaGF2ZSB0aGVpciBvd24gc2V0IG9mCisgICAgYWR2YW50YWdlcyBhbmQgZHJhd2JhY2tz
LgorKiAgIFVzZSBDTWFrZSB0byBkb3dubG9hZCBHb29nbGVUZXN0IGFzIHBhcnQgb2YgdGhlIGJ1
aWxkJ3MgY29uZmlndXJlIHN0ZXAuIFRoaXMKKyAgICBpcyBqdXN0IGEgbGl0dGxlIG1vcmUgY29t
cGxleCwgYnV0IGRvZXNuJ3QgaGF2ZSB0aGUgbGltaXRhdGlvbnMgb2YgdGhlIG90aGVyCisgICAg
bWV0aG9kcy4KKworVGhlIGxhc3Qgb2YgdGhlIGFib3ZlIG1ldGhvZHMgaXMgaW1wbGVtZW50ZWQg
d2l0aCBhIHNtYWxsIHBpZWNlIG9mIENNYWtlIGNvZGUgaW4KK2Egc2VwYXJhdGUgZmlsZSAoZS5n
LiBgQ01ha2VMaXN0cy50eHQuaW5gKSB3aGljaCBpcyBjb3BpZWQgdG8gdGhlIGJ1aWxkIGFyZWEg
YW5kCit0aGVuIGludm9rZWQgYXMgYSBzdWItYnVpbGQgX2R1cmluZyB0aGUgQ01ha2Ugc3RhZ2Vf
LiBUaGF0IGRpcmVjdG9yeSBpcyB0aGVuCitwdWxsZWQgaW50byB0aGUgbWFpbiBidWlsZCB3aXRo
IGBhZGRfc3ViZGlyZWN0b3J5KClgLiBGb3IgZXhhbXBsZToKKworTmV3IGZpbGUgYENNYWtlTGlz
dHMudHh0LmluYDoKKworICAgIGNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAyLjguMikK
KworICAgIHByb2plY3QoZ29vZ2xldGVzdC1kb3dubG9hZCBOT05FKQorCisgICAgaW5jbHVkZShF
eHRlcm5hbFByb2plY3QpCisgICAgRXh0ZXJuYWxQcm9qZWN0X0FkZChnb29nbGV0ZXN0CisgICAg
ICBHSVRfUkVQT1NJVE9SWSAgICBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3Qu
Z2l0CisgICAgICBHSVRfVEFHICAgICAgICAgICBtYXN0ZXIKKyAgICAgIFNPVVJDRV9ESVIgICAg
ICAgICIke0NNQUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3Qtc3JjIgorICAgICAgQklOQVJZX0RJ
UiAgICAgICAgIiR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1idWlsZCIKKyAgICAgIENP
TkZJR1VSRV9DT01NQU5EICIiCisgICAgICBCVUlMRF9DT01NQU5EICAgICAiIgorICAgICAgSU5T
VEFMTF9DT01NQU5EICAgIiIKKyAgICAgIFRFU1RfQ09NTUFORCAgICAgICIiCisgICAgKQorCitF
eGlzdGluZyBidWlsZCdzIGBDTWFrZUxpc3RzLnR4dGA6CisKKyAgICAjIERvd25sb2FkIGFuZCB1
bnBhY2sgZ29vZ2xldGVzdCBhdCBjb25maWd1cmUgdGltZQorICAgIGNvbmZpZ3VyZV9maWxlKENN
YWtlTGlzdHMudHh0LmluIGdvb2dsZXRlc3QtZG93bmxvYWQvQ01ha2VMaXN0cy50eHQpCisgICAg
ZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRyAiJHtDTUFLRV9HRU5F
UkFUT1J9IiAuCisgICAgICBSRVNVTFRfVkFSSUFCTEUgcmVzdWx0CisgICAgICBXT1JLSU5HX0RJ
UkVDVE9SWSAke0NNQUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3QtZG93bmxvYWQgKQorICAgIGlm
KHJlc3VsdCkKKyAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkNNYWtlIHN0ZXAgZm9yIGdvb2ds
ZXRlc3QgZmFpbGVkOiAke3Jlc3VsdH0iKQorICAgIGVuZGlmKCkKKyAgICBleGVjdXRlX3Byb2Nl
c3MoQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC0tYnVpbGQgLgorICAgICAgUkVTVUxUX1ZBUklB
QkxFIHJlc3VsdAorICAgICAgV09SS0lOR19ESVJFQ1RPUlkgJHtDTUFLRV9CSU5BUllfRElSfS9n
b29nbGV0ZXN0LWRvd25sb2FkICkKKyAgICBpZihyZXN1bHQpCisgICAgICBtZXNzYWdlKEZBVEFM
X0VSUk9SICJCdWlsZCBzdGVwIGZvciBnb29nbGV0ZXN0IGZhaWxlZDogJHtyZXN1bHR9IikKKyAg
ICBlbmRpZigpCisKKyAgICAjIFByZXZlbnQgb3ZlcnJpZGluZyB0aGUgcGFyZW50IHByb2plY3Qn
cyBjb21waWxlci9saW5rZXIKKyAgICAjIHNldHRpbmdzIG9uIFdpbmRvd3MKKyAgICBzZXQoZ3Rl
c3RfZm9yY2Vfc2hhcmVkX2NydCBPTiBDQUNIRSBCT09MICIiIEZPUkNFKQorCisgICAgIyBBZGQg
Z29vZ2xldGVzdCBkaXJlY3RseSB0byBvdXIgYnVpbGQuIFRoaXMgZGVmaW5lcworICAgICMgdGhl
IGd0ZXN0IGFuZCBndGVzdF9tYWluIHRhcmdldHMuCisgICAgYWRkX3N1YmRpcmVjdG9yeSgke0NN
QUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3Qtc3JjCisgICAgICAgICAgICAgICAgICAgICAke0NN
QUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3QtYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgIEVY
Q0xVREVfRlJPTV9BTEwpCisKKyAgICAjIFRoZSBndGVzdC9ndGVzdF9tYWluIHRhcmdldHMgY2Fy
cnkgaGVhZGVyIHNlYXJjaCBwYXRoCisgICAgIyBkZXBlbmRlbmNpZXMgYXV0b21hdGljYWxseSB3
aGVuIHVzaW5nIENNYWtlIDIuOC4xMSBvcgorICAgICMgbGF0ZXIuIE90aGVyd2lzZSB3ZSBoYXZl
IHRvIGFkZCB0aGVtIGhlcmUgb3Vyc2VsdmVzLgorICAgIGlmIChDTUFLRV9WRVJTSU9OIFZFUlNJ
T05fTEVTUyAyLjguMTEpCisgICAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKCIke2d0ZXN0X1NPVVJD
RV9ESVJ9L2luY2x1ZGUiKQorICAgIGVuZGlmKCkKKworICAgICMgTm93IHNpbXBseSBsaW5rIGFn
YWluc3QgZ3Rlc3Qgb3IgZ3Rlc3RfbWFpbiBhcyBuZWVkZWQuIEVnCisgICAgYWRkX2V4ZWN1dGFi
bGUoZXhhbXBsZSBleGFtcGxlLmNwcCkKKyAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoZXhhbXBs
ZSBndGVzdF9tYWluKQorICAgIGFkZF90ZXN0KE5BTUUgZXhhbXBsZV90ZXN0IENPTU1BTkQgZXhh
bXBsZSkKKworTm90ZSB0aGF0IHRoaXMgYXBwcm9hY2ggcmVxdWlyZXMgQ01ha2UgMi44LjIgb3Ig
bGF0ZXIgZHVlIHRvIGl0cyB1c2Ugb2YgdGhlCitgRXh0ZXJuYWxQcm9qZWN0X0FkZCgpYCBjb21t
YW5kLiBUaGUgYWJvdmUgdGVjaG5pcXVlIGlzIGRpc2N1c3NlZCBpbiBtb3JlIGRldGFpbAoraW4g
W3RoaXMgc2VwYXJhdGUgYXJ0aWNsZV0oaHR0cDovL2NyYXNjaXQuY29tLzIwMTUvMDcvMjUvY21h
a2UtZ3Rlc3QvKSB3aGljaAorYWxzbyBjb250YWlucyBhIGxpbmsgdG8gYSBmdWxseSBnZW5lcmFs
aXplZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgdGVjaG5pcXVlLgorCisjIyMjIyBWaXN1YWwgU3R1
ZGlvIER5bmFtaWMgdnMgU3RhdGljIFJ1bnRpbWVzCisKK0J5IGRlZmF1bHQsIG5ldyBWaXN1YWwg
U3R1ZGlvIHByb2plY3RzIGxpbmsgdGhlIEMgcnVudGltZXMgZHluYW1pY2FsbHkgYnV0CitHb29n
bGUgVGVzdCBsaW5rcyB0aGVtIHN0YXRpY2FsbHkuIFRoaXMgd2lsbCBnZW5lcmF0ZSBhbiBlcnJv
ciB0aGF0IGxvb2tzCitzb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nOiBndGVzdC5saWIoZ3Rl
c3QtYWxsLm9iaikgOiBlcnJvciBMTksyMDM4OiBtaXNtYXRjaAorZGV0ZWN0ZWQgZm9yICdSdW50
aW1lTGlicmFyeSc6IHZhbHVlICdNVGRfU3RhdGljRGVidWcnIGRvZXNuJ3QgbWF0Y2ggdmFsdWUK
KydNRGRfRHluYW1pY0RlYnVnJyBpbiBtYWluLm9iagorCitHb29nbGUgVGVzdCBhbHJlYWR5IGhh
cyBhIENNYWtlIG9wdGlvbiBmb3IgdGhpczogYGd0ZXN0X2ZvcmNlX3NoYXJlZF9jcnRgCisKK0Vu
YWJsaW5nIHRoaXMgb3B0aW9uIHdpbGwgbWFrZSBndGVzdCBsaW5rIHRoZSBydW50aW1lcyBkeW5h
bWljYWxseSB0b28sIGFuZAorbWF0Y2ggdGhlIHByb2plY3QgaW4gd2hpY2ggaXQgaXMgaW5jbHVk
ZWQuCisKKyMjIyBMZWdhY3kgQnVpbGQgU2NyaXB0cworCitCZWZvcmUgc2V0dGxpbmcgb24gQ01h
a2UsIHdlIGhhdmUgYmVlbiBwcm92aWRpbmcgaGFuZC1tYWludGFpbmVkIGJ1aWxkCitwcm9qZWN0
cy9zY3JpcHRzIGZvciBWaXN1YWwgU3R1ZGlvLCBYY29kZSwgYW5kIEF1dG90b29scy4gV2hpbGUg
d2UgY29udGludWUgdG8KK3Byb3ZpZGUgdGhlbSBmb3IgY29udmVuaWVuY2UsIHRoZXkgYXJlIG5v
dCBhY3RpdmVseSBtYWludGFpbmVkIGFueSBtb3JlLiBXZQoraGlnaGx5IHJlY29tbWVuZCB0aGF0
IHlvdSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBpbiB0aGUgYWJvdmUgc2VjdGlvbnMgdG8KK2lu
dGVncmF0ZSBHb29nbGUgVGVzdCB3aXRoIHlvdXIgZXhpc3RpbmcgYnVpbGQgc3lzdGVtLgorCitJ
ZiB5b3Ugc3RpbGwgbmVlZCB0byB1c2UgdGhlIGxlZ2FjeSBidWlsZCBzY3JpcHRzLCBoZXJlJ3Mg
aG93OgorCitUaGUgbXN2Y1wgZm9sZGVyIGNvbnRhaW5zIHR3byBzb2x1dGlvbnMgd2l0aCBWaXN1
YWwgQysrIHByb2plY3RzLiBPcGVuIHRoZQorYGd0ZXN0LnNsbmAgb3IgYGd0ZXN0LW1kLnNsbmAg
ZmlsZSB1c2luZyBWaXN1YWwgU3R1ZGlvLCBhbmQgeW91IGFyZSByZWFkeSB0bworYnVpbGQgR29v
Z2xlIFRlc3QgdGhlIHNhbWUgd2F5IHlvdSBidWlsZCBhbnkgVmlzdWFsIFN0dWRpbyBwcm9qZWN0
LiBGaWxlcyB0aGF0CitoYXZlIG5hbWVzIGVuZGluZyB3aXRoIC1tZCB1c2UgRExMIHZlcnNpb25z
IG9mIE1pY3Jvc29mdCBydW50aW1lIGxpYnJhcmllcyAodGhlCisvTUQgb3IgdGhlIC9NRGQgY29t
cGlsZXIgb3B0aW9uKS4gRmlsZXMgd2l0aG91dCB0aGF0IHN1ZmZpeCB1c2Ugc3RhdGljIHZlcnNp
b25zCitvZiB0aGUgcnVudGltZSBsaWJyYXJpZXMgKHRoZSAvTVQgb3IgdGhlIC9NVGQgb3B0aW9u
KS4gUGxlYXNlIG5vdGUgdGhhdCBvbmUgbXVzdAordXNlIHRoZSBzYW1lIG9wdGlvbiB0byBjb21w
aWxlIGJvdGggZ3Rlc3QgYW5kIHRoZSB0ZXN0IGNvZGUuIElmIHlvdSB1c2UgVmlzdWFsCitTdHVk
aW8gMjAwNSBvciBhYm92ZSwgd2UgcmVjb21tZW5kIHRoZSAtbWQgdmVyc2lvbiBhcyAvTUQgaXMg
dGhlIGRlZmF1bHQgZm9yIG5ldworcHJvamVjdHMgaW4gdGhlc2UgdmVyc2lvbnMgb2YgVmlzdWFs
IFN0dWRpby4KKworT24gTWFjIE9TIFgsIG9wZW4gdGhlIGBndGVzdC54Y29kZXByb2pgIGluIHRo
ZSBgeGNvZGUvYCBmb2xkZXIgdXNpbmcgWGNvZGUuCitCdWlsZCB0aGUgImd0ZXN0IiB0YXJnZXQu
IFRoZSB1bml2ZXJzYWwgYmluYXJ5IGZyYW1ld29yayB3aWxsIGVuZCB1cCBpbiB5b3VyCitzZWxl
Y3RlZCBidWlsZCBkaXJlY3RvcnkgKHNlbGVjdGVkIGluIHRoZSBYY29kZSAiUHJlZmVyZW5jZXMu
Li4iIC0+ICJCdWlsZGluZyIKK3BhbmUgYW5kIGRlZmF1bHRzIHRvIHhjb2RlL2J1aWxkKS4gQWx0
ZXJuYXRpdmVseSwgYXQgdGhlIGNvbW1hbmQgbGluZSwgZW50ZXI6CisKKyAgICB4Y29kZWJ1aWxk
CisKK1RoaXMgd2lsbCBidWlsZCB0aGUgIlJlbGVhc2UiIGNvbmZpZ3VyYXRpb24gb2YgZ3Rlc3Qu
ZnJhbWV3b3JrIGluIHlvdXIgZGVmYXVsdAorYnVpbGQgbG9jYXRpb24uIFNlZSB0aGUgInhjb2Rl
YnVpbGQiIG1hbiBwYWdlIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0CitidWlsZGluZyBkaWZm
ZXJlbnQgY29uZmlndXJhdGlvbnMgYW5kIGJ1aWxkaW5nIGluIGRpZmZlcmVudCBsb2NhdGlvbnMu
CisKK0lmIHlvdSB3aXNoIHRvIHVzZSB0aGUgR29vZ2xlIFRlc3QgWGNvZGUgcHJvamVjdCB3aXRo
IFhjb2RlIDQueCBhbmQgYWJvdmUsIHlvdQorbmVlZCB0byBlaXRoZXI6CisKKyogICB1cGRhdGUg
dGhlIFNESyBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4geGNvZGUvQ29uZmlnL0dlbmVyYWwueGNv
bmZpZy4KKyAgICBDb21tZW50IG9wdGlvbnMgYFNES1JPT1RgLCBgTUFDT1NfREVQTE9ZTUVOVF9U
QVJHRVRgLCBhbmQgYEdDQ19WRVJTSU9OYC4gSWYKKyAgICB5b3UgY2hvb3NlIHRoaXMgcm91dGUg
eW91IGxvc2UgdGhlIGFiaWxpdHkgdG8gdGFyZ2V0IGVhcmxpZXIgdmVyc2lvbnMgb2YKKyAgICBN
YWNPUyBYLgorKiAgIEluc3RhbGwgYW4gU0RLIGZvciBhbiBlYXJsaWVyIHZlcnNpb24uIFRoaXMg
ZG9lc24ndCBhcHBlYXIgdG8gYmUgc3VwcG9ydGVkCisgICAgYnkgQXBwbGUsIGJ1dCBoYXMgYmVl
biByZXBvcnRlZCB0byB3b3JrCisgICAgKGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlv
bnMvNTM3ODUxOCkuCisKKyMjIyBUd2Vha2luZyBHb29nbGUgVGVzdAorCitHb29nbGUgVGVzdCBj
YW4gYmUgdXNlZCBpbiBkaXZlcnNlIGVudmlyb25tZW50cy4gVGhlIGRlZmF1bHQgY29uZmlndXJh
dGlvbiBtYXkKK25vdCB3b3JrIChvciBtYXkgbm90IHdvcmsgd2VsbCkgb3V0IG9mIHRoZSBib3gg
aW4gc29tZSBlbnZpcm9ubWVudHMuIEhvd2V2ZXIsCit5b3UgY2FuIGVhc2lseSB0d2VhayBHb29n
bGUgVGVzdCBieSBkZWZpbmluZyBjb250cm9sIG1hY3JvcyBvbiB0aGUgY29tcGlsZXIKK2NvbW1h
bmQgbGluZS4gR2VuZXJhbGx5LCB0aGVzZSBtYWNyb3MgYXJlIG5hbWVkIGxpa2UgYEdURVNUX1hZ
WmAgYW5kIHlvdSBkZWZpbmUKK3RoZW0gdG8gZWl0aGVyIDEgb3IgMCB0byBlbmFibGUgb3IgZGlz
YWJsZSBhIGNlcnRhaW4gZmVhdHVyZS4KKworV2UgbGlzdCB0aGUgbW9zdCBmcmVxdWVudGx5IHVz
ZWQgbWFjcm9zIGJlbG93LiBGb3IgYSBjb21wbGV0ZSBsaXN0LCBzZWUgZmlsZQorW2luY2x1ZGUv
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dv
b2dsZXRlc3QvYmxvYi9tYXN0ZXIvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmgp
LgorCisjIyMgQ2hvb3NpbmcgYSBUUjEgVHVwbGUgTGlicmFyeQorCitTb21lIEdvb2dsZSBUZXN0
IGZlYXR1cmVzIHJlcXVpcmUgdGhlIEMrKyBUZWNobmljYWwgUmVwb3J0IDEgKFRSMSkgdHVwbGUK
K2xpYnJhcnksIHdoaWNoIGlzIG5vdCB5ZXQgYXZhaWxhYmxlIHdpdGggYWxsIGNvbXBpbGVycy4g
VGhlIGdvb2QgbmV3cyBpcyB0aGF0CitHb29nbGUgVGVzdCBpbXBsZW1lbnRzIGEgc3Vic2V0IG9m
IFRSMSB0dXBsZSB0aGF0J3MgZW5vdWdoIGZvciBpdHMgb3duIG5lZWQsIGFuZAord2lsbCBhdXRv
bWF0aWNhbGx5IHVzZSB0aGlzIHdoZW4gdGhlIGNvbXBpbGVyIGRvZXNuJ3QgcHJvdmlkZSBUUjEg
dHVwbGUuCisKK1VzdWFsbHkgeW91IGRvbid0IG5lZWQgdG8gY2FyZSBhYm91dCB3aGljaCB0dXBs
ZSBsaWJyYXJ5IEdvb2dsZSBUZXN0IHVzZXMuCitIb3dldmVyLCBpZiB5b3VyIHByb2plY3QgYWxy
ZWFkeSB1c2VzIFRSMSB0dXBsZSwgeW91IG5lZWQgdG8gdGVsbCBHb29nbGUgVGVzdCB0bwordXNl
IHRoZSBzYW1lIFRSMSB0dXBsZSBsaWJyYXJ5IHRoZSByZXN0IG9mIHlvdXIgcHJvamVjdCB1c2Vz
LCBvciB0aGUgdHdvIHR1cGxlCitpbXBsZW1lbnRhdGlvbnMgd2lsbCBjbGFzaC4gVG8gZG8gdGhh
dCwgYWRkCisKKyAgICAtREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTAKKwordG8gdGhlIGNvbXBp
bGVyIGZsYWdzIHdoaWxlIGNvbXBpbGluZyBHb29nbGUgVGVzdCBhbmQgeW91ciB0ZXN0cy4gSWYg
eW91IHdhbnQgdG8KK2ZvcmNlIEdvb2dsZSBUZXN0IHRvIHVzZSBpdHMgb3duIHR1cGxlIGxpYnJh
cnksIGp1c3QgYWRkCisKKyAgICAtREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTEKKwordG8gdGhl
IGNvbXBpbGVyIGZsYWdzIGluc3RlYWQuCisKK0lmIHlvdSBkb24ndCB3YW50IEdvb2dsZSBUZXN0
IHRvIHVzZSB0dXBsZSBhdCBhbGwsIGFkZAorCisgICAgLURHVEVTVF9IQVNfVFIxX1RVUExFPTAK
KworYW5kIGFsbCBmZWF0dXJlcyB1c2luZyB0dXBsZSB3aWxsIGJlIGRpc2FibGVkLgorCisjIyMg
TXVsdGktdGhyZWFkZWQgVGVzdHMKKworR29vZ2xlIFRlc3QgaXMgdGhyZWFkLXNhZmUgd2hlcmUg
dGhlIHB0aHJlYWQgbGlicmFyeSBpcyBhdmFpbGFibGUuIEFmdGVyCitgI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiYCwgeW91IGNhbiBjaGVjayB0aGUgYEdURVNUX0lTX1RIUkVBRFNBRkVgIG1hY3Jv
IHRvIHNlZQord2hldGhlciB0aGlzIGlzIHRoZSBjYXNlICh5ZXMgaWYgdGhlIG1hY3JvIGlzIGAj
ZGVmaW5lZGAgdG8gMSwgbm8gaWYgaXQncwordW5kZWZpbmVkLikuCisKK0lmIEdvb2dsZSBUZXN0
IGRvZXNuJ3QgY29ycmVjdGx5IGRldGVjdCB3aGV0aGVyIHB0aHJlYWQgaXMgYXZhaWxhYmxlIGlu
IHlvdXIKK2Vudmlyb25tZW50LCB5b3UgY2FuIGZvcmNlIGl0IHdpdGgKKworICAgIC1ER1RFU1Rf
SEFTX1BUSFJFQUQ9MQorCitvcgorCisgICAgLURHVEVTVF9IQVNfUFRIUkVBRD0wCisKK1doZW4g
R29vZ2xlIFRlc3QgdXNlcyBwdGhyZWFkLCB5b3UgbWF5IG5lZWQgdG8gYWRkIGZsYWdzIHRvIHlv
dXIgY29tcGlsZXIgYW5kL29yCitsaW5rZXIgdG8gc2VsZWN0IHRoZSBwdGhyZWFkIGxpYnJhcnks
IG9yIHlvdSdsbCBnZXQgbGluayBlcnJvcnMuIElmIHlvdSB1c2UgdGhlCitDTWFrZSBzY3JpcHQg
b3IgdGhlIGRlcHJlY2F0ZWQgQXV0b3Rvb2xzIHNjcmlwdCwgdGhpcyBpcyB0YWtlbiBjYXJlIG9m
IGZvciB5b3UuCitJZiB5b3UgdXNlIHlvdXIgb3duIGJ1aWxkIHNjcmlwdCwgeW91J2xsIG5lZWQg
dG8gcmVhZCB5b3VyIGNvbXBpbGVyIGFuZCBsaW5rZXIncworbWFudWFsIHRvIGZpZ3VyZSBvdXQg
d2hhdCBmbGFncyB0byBhZGQuCisKKyMjIyBBcyBhIFNoYXJlZCBMaWJyYXJ5IChETEwpCisKK0dv
b2dsZSBUZXN0IGlzIGNvbXBhY3QsIHNvIG1vc3QgdXNlcnMgY2FuIGJ1aWxkIGFuZCBsaW5rIGl0
IGFzIGEgc3RhdGljIGxpYnJhcnkKK2ZvciB0aGUgc2ltcGxpY2l0eS4gWW91IGNhbiBjaG9vc2Ug
dG8gdXNlIEdvb2dsZSBUZXN0IGFzIGEgc2hhcmVkIGxpYnJhcnkgKGtub3duCithcyBhIERMTCBv
biBXaW5kb3dzKSBpZiB5b3UgcHJlZmVyLgorCitUbyBjb21waWxlICpndGVzdCogYXMgYSBzaGFy
ZWQgbGlicmFyeSwgYWRkCisKKyAgICAtREdURVNUX0NSRUFURV9TSEFSRURfTElCUkFSWT0xCisK
K3RvIHRoZSBjb21waWxlciBmbGFncy4gWW91J2xsIGFsc28gbmVlZCB0byB0ZWxsIHRoZSBsaW5r
ZXIgdG8gcHJvZHVjZSBhIHNoYXJlZAorbGlicmFyeSBpbnN0ZWFkIC0gY29uc3VsdCB5b3VyIGxp
bmtlcidzIG1hbnVhbCBmb3IgaG93IHRvIGRvIGl0LgorCitUbyBjb21waWxlIHlvdXIgKnRlc3Rz
KiB0aGF0IHVzZSB0aGUgZ3Rlc3Qgc2hhcmVkIGxpYnJhcnksIGFkZAorCisgICAgLURHVEVTVF9M
SU5LRURfQVNfU0hBUkVEX0xJQlJBUlk9MQorCit0byB0aGUgY29tcGlsZXIgZmxhZ3MuCisKK05v
dGU6IHdoaWxlIHRoZSBhYm92ZSBzdGVwcyBhcmVuJ3QgdGVjaG5pY2FsbHkgbmVjZXNzYXJ5IHRv
ZGF5IHdoZW4gdXNpbmcgc29tZQorY29tcGlsZXJzIChlLmcuIEdDQyksIHRoZXkgbWF5IGJlY29t
ZSBuZWNlc3NhcnkgaW4gdGhlIGZ1dHVyZSwgaWYgd2UgZGVjaWRlIHRvCitpbXByb3ZlIHRoZSBz
cGVlZCBvZiBsb2FkaW5nIHRoZSBsaWJyYXJ5IChzZWUKKzxodHRwOi8vZ2NjLmdudS5vcmcvd2lr
aS9WaXNpYmlsaXR5PiBmb3IgZGV0YWlscykuIFRoZXJlZm9yZSB5b3UgYXJlIHJlY29tbWVuZGVk
Cit0byBhbHdheXMgYWRkIHRoZSBhYm92ZSBmbGFncyB3aGVuIHVzaW5nIEdvb2dsZSBUZXN0IGFz
IGEgc2hhcmVkIGxpYnJhcnkuCitPdGhlcndpc2UgYSBmdXR1cmUgcmVsZWFzZSBvZiBHb29nbGUg
VGVzdCBtYXkgYnJlYWsgeW91ciBidWlsZCBzY3JpcHQuCisKKyMjIyBBdm9pZGluZyBNYWNybyBO
YW1lIENsYXNoZXMKKworSW4gQysrLCBtYWNyb3MgZG9uJ3Qgb2JleSBuYW1lc3BhY2VzLiBUaGVy
ZWZvcmUgdHdvIGxpYnJhcmllcyB0aGF0IGJvdGggZGVmaW5lIGEKK21hY3JvIG9mIHRoZSBzYW1l
IG5hbWUgd2lsbCBjbGFzaCBpZiB5b3UgYCNpbmNsdWRlYCBib3RoIGRlZmluaXRpb25zLiBJbiBj
YXNlIGEKK0dvb2dsZSBUZXN0IG1hY3JvIGNsYXNoZXMgd2l0aCBhbm90aGVyIGxpYnJhcnksIHlv
dSBjYW4gZm9yY2UgR29vZ2xlIFRlc3QgdG8KK3JlbmFtZSBpdHMgbWFjcm8gdG8gYXZvaWQgdGhl
IGNvbmZsaWN0LgorCitTcGVjaWZpY2FsbHksIGlmIGJvdGggR29vZ2xlIFRlc3QgYW5kIHNvbWUg
b3RoZXIgY29kZSBkZWZpbmUgbWFjcm8gRk9PLCB5b3UgY2FuCithZGQKKworICAgIC1ER1RFU1Rf
RE9OVF9ERUZJTkVfRk9PPTEKKwordG8gdGhlIGNvbXBpbGVyIGZsYWdzIHRvIHRlbGwgR29vZ2xl
IFRlc3QgdG8gY2hhbmdlIHRoZSBtYWNybydzIG5hbWUgZnJvbSBgRk9PYAordG8gYEdURVNUX0ZP
T2AuIEN1cnJlbnRseSBgRk9PYCBjYW4gYmUgYEZBSUxgLCBgU1VDQ0VFRGAsIG9yIGBURVNUYC4g
Rm9yCitleGFtcGxlLCB3aXRoIGAtREdURVNUX0RPTlRfREVGSU5FX1RFU1Q9MWAsIHlvdSdsbCBu
ZWVkIHRvIHdyaXRlCisKKyAgICBHVEVTVF9URVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAuLi4g
fQorCitpbnN0ZWFkIG9mCisKKyAgICBURVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAuLi4gfQor
CitpbiBvcmRlciB0byBkZWZpbmUgYSB0ZXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvY21ha2UvQ29uZmlnLmNtYWtlLmluIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
Y21ha2UvQ29uZmlnLmNtYWtlLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyYmU0NDk4YjFhMDc5NjgxYTEyOWUz
MWIxN2M1N2UxODEyNmE2M2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9jbWFrZS9Db25maWcuY21ha2UuaW4KQEAgLTAsMCArMSw5IEBACitAUEFDS0FHRV9JTklU
QAoraW5jbHVkZShDTWFrZUZpbmREZXBlbmRlbmN5TWFjcm8pCitpZiAoQEdURVNUX0hBU19QVEhS
RUFEQCkKKyAgc2V0KFRIUkVBRFNfUFJFRkVSX1BUSFJFQURfRkxBRyBAVEhSRUFEU19QUkVGRVJf
UFRIUkVBRF9GTEFHQCkKKyAgZmluZF9kZXBlbmRlbmN5KFRocmVhZHMpCitlbmRpZigpCisKK2lu
Y2x1ZGUoIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vQHRhcmdldHNfZXhwb3J0X25hbWVALmNt
YWtlIikKK2NoZWNrX3JlcXVpcmVkX2NvbXBvbmVudHMoIkBwcm9qZWN0X25hbWVAIikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2d0ZXN0LnBjLmluIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvZ3Rlc3QucGMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTc5NjdhZDU2
ZmYyYzMyZWQ0YmEwNjcwM2FlYTUyNWRjYWQyY2U3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2d0ZXN0LnBjLmluCkBAIC0wLDAgKzEsOSBAQAorbGli
ZGlyPUBDTUFLRV9JTlNUQUxMX0ZVTExfTElCRElSQAoraW5jbHVkZWRpcj1AQ01BS0VfSU5TVEFM
TF9GVUxMX0lOQ0xVREVESVJACisKK05hbWU6IGd0ZXN0CitEZXNjcmlwdGlvbjogR29vZ2xlVGVz
dCAod2l0aG91dCBtYWluKCkgZnVuY3Rpb24pCitWZXJzaW9uOiBAUFJPSkVDVF9WRVJTSU9OQAor
VVJMOiBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QKK0xpYnM6IC1MJHtsaWJk
aXJ9IC1sZ3Rlc3QgQENNQUtFX1RIUkVBRF9MSUJTX0lOSVRACitDZmxhZ3M6IC1JJHtpbmNsdWRl
ZGlyfSBAR1RFU1RfSEFTX1BUSFJFQURfTUFDUk9AIEBDTUFLRV9USFJFQURfTElCU19JTklUQApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvZ3Rlc3RfbWFpbi5wYy5p
biBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2d0ZXN0X21haW4ucGMuaW4KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmUyNWQ5YzczYzY4M2I2NDE3Yjk5YmI3MDNjMTNhZTE2YmE4YTk1MgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2d0ZXN0X21haW4ucGMuaW4K
QEAgLTAsMCArMSwxMCBAQAorbGliZGlyPUBDTUFLRV9JTlNUQUxMX0ZVTExfTElCRElSQAoraW5j
bHVkZWRpcj1AQ01BS0VfSU5TVEFMTF9GVUxMX0lOQ0xVREVESVJACisKK05hbWU6IGd0ZXN0X21h
aW4KK0Rlc2NyaXB0aW9uOiBHb29nbGVUZXN0ICh3aXRoIG1haW4oKSBmdW5jdGlvbikKK1ZlcnNp
b246IEBQUk9KRUNUX1ZFUlNJT05ACitVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29v
Z2xldGVzdAorUmVxdWlyZXM6IGd0ZXN0CitMaWJzOiAtTCR7bGliZGlyfSAtbGd0ZXN0X21haW4g
QENNQUtFX1RIUkVBRF9MSUJTX0lOSVRACitDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSBAR1RFU1Rf
SEFTX1BUSFJFQURfTUFDUk9AIEBDTUFLRV9USFJFQURfTElCU19JTklUQApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvaW50ZXJuYWxfdXRpbHMuY21ha2UgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9pbnRlcm5hbF91dGlscy5jbWFrZQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44YzFmOWJhOTljZjUwNTc0ZjY2OWRkN2RlYmEzMjRkY2U0MDU5NWYzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvaW50ZXJuYWxfdXRpbHMuY21ha2UK
QEAgLTAsMCArMSwzMTggQEAKKyMgRGVmaW5lcyBmdW5jdGlvbnMgYW5kIG1hY3JvcyB1c2VmdWwg
Zm9yIGJ1aWxkaW5nIEdvb2dsZSBUZXN0IGFuZAorIyBHb29nbGUgTW9jay4KKyMKKyMgTm90ZToK
KyMKKyMgLSBUaGlzIGZpbGUgd2lsbCBiZSBydW4gdHdpY2Ugd2hlbiBidWlsZGluZyBHb29nbGUg
TW9jayAob25jZSB2aWEKKyMgICBHb29nbGUgVGVzdCdzIENNYWtlTGlzdHMudHh0LCBhbmQgb25j
ZSB2aWEgR29vZ2xlIE1vY2sncykuCisjICAgVGhlcmVmb3JlIGl0IHNob3VsZG4ndCBoYXZlIGFu
eSBzaWRlIGVmZmVjdHMgb3RoZXIgdGhhbiBkZWZpbmluZworIyAgIHRoZSBmdW5jdGlvbnMgYW5k
IG1hY3Jvcy4KKyMKKyMgLSBUaGUgZnVuY3Rpb25zL21hY3JvcyBkZWZpbmVkIGluIHRoaXMgZmls
ZSBtYXkgZGVwZW5kIG9uIEdvb2dsZQorIyAgIFRlc3QgYW5kIEdvb2dsZSBNb2NrJ3Mgb3B0aW9u
KCkgZGVmaW5pdGlvbnMsIGFuZCB0aHVzIG11c3QgYmUKKyMgICBjYWxsZWQgKmFmdGVyKiB0aGUg
b3B0aW9ucyBoYXZlIGJlZW4gZGVmaW5lZC4KKworIyBUd2Vha3MgQ01ha2UncyBkZWZhdWx0IGNv
bXBpbGVyL2xpbmtlciBzZXR0aW5ncyB0byBzdWl0IEdvb2dsZSBUZXN0J3MgbmVlZHMuCisjCisj
IFRoaXMgbXVzdCBiZSBhIG1hY3JvKCksIGFzIGluc2lkZSBhIGZ1bmN0aW9uIHN0cmluZygpIGNh
biBvbmx5CisjIHVwZGF0ZSB2YXJpYWJsZXMgaW4gdGhlIGZ1bmN0aW9uIHNjb3BlLgorbWFjcm8o
Zml4X2RlZmF1bHRfY29tcGlsZXJfc2V0dGluZ3NfKQorICBpZiAoTVNWQykKKyAgICAjIEZvciBN
U1ZDLCBDTWFrZSBzZXRzIGNlcnRhaW4gZmxhZ3MgdG8gZGVmYXVsdHMgd2Ugd2FudCB0byBvdmVy
cmlkZS4KKyAgICAjIFRoaXMgcmVwbGFjZW1lbnQgY29kZSBpcyB0YWtlbiBmcm9tIHNhbXBsZSBp
biB0aGUgQ01ha2UgV2lraSBhdAorICAgICMgaHR0cHM6Ly9naXRsYWIua2l0d2FyZS5jb20vY21h
a2UvY29tbXVuaXR5L3dpa2lzL0ZBUSNkeW5hbWljLXJlcGxhY2UuCisgICAgZm9yZWFjaCAoZmxh
Z192YXIKKyAgICAgICAgICAgICBDTUFLRV9DWFhfRkxBR1MgQ01BS0VfQ1hYX0ZMQUdTX0RFQlVH
IENNQUtFX0NYWF9GTEFHU19SRUxFQVNFCisgICAgICAgICAgICAgQ01BS0VfQ1hYX0ZMQUdTX01J
TlNJWkVSRUwgQ01BS0VfQ1hYX0ZMQUdTX1JFTFdJVEhERUJJTkZPKQorICAgICAgaWYgKE5PVCBC
VUlMRF9TSEFSRURfTElCUyBBTkQgTk9UIGd0ZXN0X2ZvcmNlX3NoYXJlZF9jcnQpCisgICAgICAg
ICMgV2hlbiBHb29nbGUgVGVzdCBpcyBidWlsdCBhcyBhIHNoYXJlZCBsaWJyYXJ5LCBpdCBzaG91
bGQgYWxzbyB1c2UKKyAgICAgICAgIyBzaGFyZWQgcnVudGltZSBsaWJyYXJpZXMuICBPdGhlcndp
c2UsIGl0IG1heSBlbmQgdXAgd2l0aCBtdWx0aXBsZQorICAgICAgICAjIGNvcGllcyBvZiBydW50
aW1lIGxpYnJhcnkgZGF0YSBpbiBkaWZmZXJlbnQgbW9kdWxlcywgcmVzdWx0aW5nIGluCisgICAg
ICAgICMgaGFyZC10by1maW5kIGNyYXNoZXMuIFdoZW4gaXQgaXMgYnVpbHQgYXMgYSBzdGF0aWMg
bGlicmFyeSwgaXQgaXMKKyAgICAgICAgIyBwcmVmZXJhYmxlIHRvIHVzZSBDUlQgYXMgc3RhdGlj
IGxpYnJhcmllcywgYXMgd2UgZG9uJ3QgaGF2ZSB0byByZWx5CisgICAgICAgICMgb24gQ1JUIERM
THMgYmVpbmcgYXZhaWxhYmxlLiBDTWFrZSBhbHdheXMgZGVmYXVsdHMgdG8gdXNpbmcgc2hhcmVk
CisgICAgICAgICMgQ1JUIGxpYnJhcmllcywgc28gd2Ugb3ZlcnJpZGUgdGhhdCBkZWZhdWx0IGhl
cmUuCisgICAgICAgIHN0cmluZyhSRVBMQUNFICIvTUQiICItTVQiICR7ZmxhZ192YXJ9ICIkeyR7
ZmxhZ192YXJ9fSIpCisgICAgICBlbmRpZigpCisKKyAgICAgICMgV2UgcHJlZmVyIG1vcmUgc3Ry
aWN0IHdhcm5pbmcgY2hlY2tpbmcgZm9yIGJ1aWxkaW5nIEdvb2dsZSBUZXN0LgorICAgICAgIyBS
ZXBsYWNlcyAvVzMgd2l0aCAvVzQgaW4gZGVmYXVsdHMuCisgICAgICBzdHJpbmcoUkVQTEFDRSAi
L1czIiAiL1c0IiAke2ZsYWdfdmFyfSAiJHske2ZsYWdfdmFyfX0iKQorCisgICAgICAjIFByZXZl
bnQgRDkwMjUgd2FybmluZyBmb3IgdGFyZ2V0cyB0aGF0IGhhdmUgZXhjZXB0aW9uIGhhbmRsaW5n
CisgICAgICAjIHR1cm5lZCBvZmYgKC9FSHMtYy0gZmxhZykuIFdoZXJlIHJlcXVpcmVkLCBleGNl
cHRpb25zIGFyZSBleHBsaWNpdGx5CisgICAgICAjIHJlLWVuYWJsZWQgdXNpbmcgdGhlIGN4eF9l
eGNlcHRpb25fZmxhZ3MgdmFyaWFibGUuCisgICAgICBzdHJpbmcoUkVQTEFDRSAiL0VIc2MiICIi
ICR7ZmxhZ192YXJ9ICIkeyR7ZmxhZ192YXJ9fSIpCisgICAgZW5kZm9yZWFjaCgpCisgIGVuZGlm
KCkKK2VuZG1hY3JvKCkKKworIyBEZWZpbmVzIHRoZSBjb21waWxlci9saW5rZXIgZmxhZ3MgdXNl
ZCB0byBidWlsZCBHb29nbGUgVGVzdCBhbmQKKyMgR29vZ2xlIE1vY2suICBZb3UgY2FuIHR3ZWFr
IHRoZXNlIGRlZmluaXRpb25zIHRvIHN1aXQgeW91ciBuZWVkLiAgQQorIyB2YXJpYWJsZSdzIHZh
bHVlIGlzIGVtcHR5IGJlZm9yZSBpdCdzIGV4cGxpY2l0bHkgYXNzaWduZWQgdG8uCittYWNybyhj
b25maWdfY29tcGlsZXJfYW5kX2xpbmtlcikKKyAgIyBOb3RlOiBwdGhyZWFkcyBvbiBNaW5HVyBp
cyBub3Qgc3VwcG9ydGVkLCBldmVuIGlmIGF2YWlsYWJsZQorICAjIGluc3RlYWQsIHdlIHVzZSB3
aW5kb3dzIHRocmVhZGluZyBwcmltaXRpdmVzCisgIHVuc2V0KEdURVNUX0hBU19QVEhSRUFEKQor
ICBpZiAoTk9UIGd0ZXN0X2Rpc2FibGVfcHRocmVhZHMgQU5EIE5PVCBNSU5HVykKKyAgICAjIERl
ZmluZXMgQ01BS0VfVVNFX1BUSFJFQURTX0lOSVQgYW5kIENNQUtFX1RIUkVBRF9MSUJTX0lOSVQu
CisgICAgc2V0KFRIUkVBRFNfUFJFRkVSX1BUSFJFQURfRkxBRyBPTikKKyAgICBmaW5kX3BhY2th
Z2UoVGhyZWFkcykKKyAgICBpZiAoQ01BS0VfVVNFX1BUSFJFQURTX0lOSVQpCisgICAgICBzZXQo
R1RFU1RfSEFTX1BUSFJFQUQgT04pCisgICAgZW5kaWYoKQorICBlbmRpZigpCisKKyAgZml4X2Rl
ZmF1bHRfY29tcGlsZXJfc2V0dGluZ3NfKCkKKyAgaWYgKE1TVkMpCisgICAgIyBOZXdsaW5lcyBp
bnNpZGUgZmxhZ3MgdmFyaWFibGVzIGJyZWFrIENNYWtlJ3MgTk1ha2UgZ2VuZXJhdG9yLgorICAg
ICMgVE9ETyh2bGFkbEBnb29nbGUuY29tKTogQWRkIC1SVENzIGFuZCAtUlRDdSB0byBkZWJ1ZyBi
dWlsZHMuCisgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICItR1MgLVc0IC1XWCAtd2Q0MjUxIC13ZDQy
NzUgLW5vbG9nbyAtSiAtWmkiKQorICAgIGlmIChNU1ZDX1ZFUlNJT04gTEVTUyAxNDAwKSAgIyAx
NDAwIGlzIFZpc3VhbCBTdHVkaW8gMjAwNQorICAgICAgIyBTdXBwcmVzcyBzcHVyaW91cyB3YXJu
aW5ncyBNU1ZDIDcuMSBzb21ldGltZXMgaXNzdWVzLgorICAgICAgIyBGb3JjaW5nIHZhbHVlIHRv
IGJvb2wuCisgICAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC13ZDQ4
MDAiKQorICAgICAgIyBDb3B5IGNvbnN0cnVjdG9yIGFuZCBhc3NpZ25tZW50IG9wZXJhdG9yIGNv
dWxkIG5vdCBiZSBnZW5lcmF0ZWQuCisgICAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jh
c2VfZmxhZ3N9IC13ZDQ1MTEgLXdkNDUxMiIpCisgICAgICAjIENvbXBhdGliaWxpdHkgd2Fybmlu
Z3Mgbm90IGFwcGxpY2FibGUgdG8gR29vZ2xlIFRlc3QuCisgICAgICAjIFJlc29sdmVkIG92ZXJs
b2FkIHdhcyBmb3VuZCBieSBhcmd1bWVudC1kZXBlbmRlbnQgbG9va3VwLgorICAgICAgc2V0KGN4
eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtd2Q0Njc1IikKKyAgICBlbmRpZigpCisg
ICAgaWYgKE1TVkNfVkVSU0lPTiBMRVNTIDE1MDApICAjIDE1MDAgaXMgVmlzdWFsIFN0dWRpbyAy
MDA4CisgICAgICAjIENvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29uc3RhbnQuCisgICAgICAj
IFdoZW4gY29tcGlsaW5nIHdpdGggL1c0LCB3ZSBnZXQgc2V2ZXJhbCBpbnN0YW5jZXMgb2YgQzQx
MjcKKyAgICAgICMgKENvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29uc3RhbnQpLiBJbiBvdXIg
Y29kZSwgd2UgZGlzYWJsZSB0aGF0CisgICAgICAjIHdhcm5pbmcgb24gYSBjYXNlLWJ5LWNhc2Ug
YmFzaXMuIEhvd2V2ZXIsIG9uIFZpc3VhbCBTdHVkaW8gMjAwNSwKKyAgICAgICMgdGhlIHdhcm5p
bmcgZmlyZXMgb24gc3RkOjpsaXN0LiBUaGVyZWZvcmUgb24gdGhhdCBjb21waWxlciBhbmQgZWFy
bGllciwKKyAgICAgICMgd2UgZGlzYWJsZSB0aGUgd2FybmluZyBwcm9qZWN0LXdpZGUuCisgICAg
ICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC13ZDQxMjciKQorICAgIGVu
ZGlmKCkKKyAgICBpZiAoTk9UIChNU1ZDX1ZFUlNJT04gTEVTUyAxNzAwKSkgICMgMTcwMCBpcyBW
aXN1YWwgU3R1ZGlvIDIwMTIuCisgICAgICAjIFN1cHByZXNzICJ1bnJlYWNoYWJsZSBjb2RlIiB3
YXJuaW5nIG9uIFZTIDIwMTIgYW5kIGxhdGVyLgorICAgICAgIyBodHRwOi8vc3RhY2tvdmVyZmxv
dy5jb20vcXVlc3Rpb25zLzMyMzI2NjkgZXhwbGFpbnMgdGhlIGlzc3VlLgorICAgICAgc2V0KGN4
eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtd2Q0NzAyIikKKyAgICBlbmRpZigpCisK
KyAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC1EX1VOSUNPREUgLURV
TklDT0RFIC1EV0lOMzIgLURfV0lOMzIiKQorICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhf
YmFzZV9mbGFnc30gLURTVFJJQ1QgLURXSU4zMl9MRUFOX0FORF9NRUFOIikKKyAgICBzZXQoY3h4
X2V4Y2VwdGlvbl9mbGFncyAiLUVIc2MgLURfSEFTX0VYQ0VQVElPTlM9MSIpCisgICAgc2V0KGN4
eF9ub19leGNlcHRpb25fZmxhZ3MgIi1FSHMtYy0gLURfSEFTX0VYQ0VQVElPTlM9MCIpCisgICAg
c2V0KGN4eF9ub19ydHRpX2ZsYWdzICItR1ItIikKKyAgZWxzZWlmIChDTUFLRV9DT01QSUxFUl9J
U19HTlVDWFgpCisgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICItV2FsbCAtV3NoYWRvdyAtV2Vycm9y
IikKKyAgICBpZihOT1QgQ01BS0VfQ1hYX0NPTVBJTEVSX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDcu
MC4wKQorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtV25vLWVy
cm9yPWRhbmdsaW5nLWVsc2UiKQorICAgIGVuZGlmKCkKKyAgICBzZXQoY3h4X2V4Y2VwdGlvbl9m
bGFncyAiLWZleGNlcHRpb25zIikKKyAgICBzZXQoY3h4X25vX2V4Y2VwdGlvbl9mbGFncyAiLWZu
by1leGNlcHRpb25zIikKKyAgICAjIFVudGlsIHZlcnNpb24gNC4zLjIsIEdDQyBkb2Vzbid0IGRl
ZmluZSBhIG1hY3JvIHRvIGluZGljYXRlCisgICAgIyB3aGV0aGVyIFJUVEkgaXMgZW5hYmxlZC4g
IFRoZXJlZm9yZSB3ZSBkZWZpbmUgR1RFU1RfSEFTX1JUVEkKKyAgICAjIGV4cGxpY2l0bHkuCisg
ICAgc2V0KGN4eF9ub19ydHRpX2ZsYWdzICItZm5vLXJ0dGkgLURHVEVTVF9IQVNfUlRUST0wIikK
KyAgICBzZXQoY3h4X3N0cmljdF9mbGFncworICAgICAgIi1XZXh0cmEgLVduby11bnVzZWQtcGFy
YW1ldGVyIC1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMiKQorICBlbHNlaWYgKENNQUtF
X0NYWF9DT01QSUxFUl9JRCBTVFJFUVVBTCAiU3VuUHJvIikKKyAgICBzZXQoY3h4X2V4Y2VwdGlv
bl9mbGFncyAiLWZlYXR1cmVzPWV4Y2VwdCIpCisgICAgIyBTdW4gUHJvIGRvZXNuJ3QgcHJvdmlk
ZSBtYWNyb3MgdG8gaW5kaWNhdGUgd2hldGhlciBleGNlcHRpb25zIGFuZAorICAgICMgUlRUSSBh
cmUgZW5hYmxlZCwgc28gd2UgZGVmaW5lIEdURVNUX0hBU18qIGV4cGxpY2l0bHkuCisgICAgc2V0
KGN4eF9ub19leGNlcHRpb25fZmxhZ3MgIi1mZWF0dXJlcz1ubyVleGNlcHQgLURHVEVTVF9IQVNf
RVhDRVBUSU9OUz0wIikKKyAgICBzZXQoY3h4X25vX3J0dGlfZmxhZ3MgIi1mZWF0dXJlcz1ubyVy
dHRpIC1ER1RFU1RfSEFTX1JUVEk9MCIpCisgIGVsc2VpZiAoQ01BS0VfQ1hYX0NPTVBJTEVSX0lE
IFNUUkVRVUFMICJWaXN1YWxBZ2UiIE9SCisgICAgICBDTUFLRV9DWFhfQ09NUElMRVJfSUQgU1RS
RVFVQUwgIlhMIikKKyAgICAjIENNYWtlIDIuOCBjaGFuZ2VzIFZpc3VhbCBBZ2UncyBjb21waWxl
ciBJRCB0byAiWEwiLgorICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICItcWVoIikKKyAgICBz
ZXQoY3h4X25vX2V4Y2VwdGlvbl9mbGFncyAiLXFub2VoIikKKyAgICAjIFVudGlsIHZlcnNpb24g
OS4wLCBWaXN1YWwgQWdlIGRvZXNuJ3QgZGVmaW5lIGEgbWFjcm8gdG8gaW5kaWNhdGUKKyAgICAj
IHdoZXRoZXIgUlRUSSBpcyBlbmFibGVkLiAgVGhlcmVmb3JlIHdlIGRlZmluZSBHVEVTVF9IQVNf
UlRUSQorICAgICMgZXhwbGljaXRseS4KKyAgICBzZXQoY3h4X25vX3J0dGlfZmxhZ3MgIi1xbm9y
dHRpIC1ER1RFU1RfSEFTX1JUVEk9MCIpCisgIGVsc2VpZiAoQ01BS0VfQ1hYX0NPTVBJTEVSX0lE
IFNUUkVRVUFMICJIUCIpCisgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICItQUEgLW10IikKKyAgICBz
ZXQoY3h4X2V4Y2VwdGlvbl9mbGFncyAiLURHVEVTVF9IQVNfRVhDRVBUSU9OUz0xIikKKyAgICBz
ZXQoY3h4X25vX2V4Y2VwdGlvbl9mbGFncyAiK25vZWggLURHVEVTVF9IQVNfRVhDRVBUSU9OUz0w
IikKKyAgICAjIFJUVEkgY2FuIG5vdCBiZSBkaXNhYmxlZCBpbiBIUCBhQ0MgY29tcGlsZXIuCisg
ICAgc2V0KGN4eF9ub19ydHRpX2ZsYWdzICIiKQorICBlbmRpZigpCisKKyAgIyBUaGUgcHRocmVh
ZHMgbGlicmFyeSBpcyBhdmFpbGFibGUgYW5kIGFsbG93ZWQ/CisgIGlmIChERUZJTkVEIEdURVNU
X0hBU19QVEhSRUFEKQorICAgIHNldChHVEVTVF9IQVNfUFRIUkVBRF9NQUNSTyAiLURHVEVTVF9I
QVNfUFRIUkVBRD0xIikKKyAgZWxzZSgpCisgICAgc2V0KEdURVNUX0hBU19QVEhSRUFEX01BQ1JP
ICItREdURVNUX0hBU19QVEhSRUFEPTAiKQorICBlbmRpZigpCisgIHNldChjeHhfYmFzZV9mbGFn
cyAiJHtjeHhfYmFzZV9mbGFnc30gJHtHVEVTVF9IQVNfUFRIUkVBRF9NQUNST30iKQorCisgICMg
Rm9yIGJ1aWxkaW5nIGd0ZXN0J3Mgb3duIHRlc3RzIGFuZCBzYW1wbGVzLgorICBzZXQoY3h4X2V4
Y2VwdGlvbiAiJHtjeHhfYmFzZV9mbGFnc30gJHtjeHhfZXhjZXB0aW9uX2ZsYWdzfSIpCisgIHNl
dChjeHhfbm9fZXhjZXB0aW9uCisgICAgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAke2N4eF9iYXNlX2Zs
YWdzfSAke2N4eF9ub19leGNlcHRpb25fZmxhZ3N9IikKKyAgc2V0KGN4eF9kZWZhdWx0ICIke2N4
eF9leGNlcHRpb259IikKKyAgc2V0KGN4eF9ub19ydHRpICIke2N4eF9kZWZhdWx0fSAke2N4eF9u
b19ydHRpX2ZsYWdzfSIpCisgIHNldChjeHhfdXNlX293bl90dXBsZSAiJHtjeHhfZGVmYXVsdH0g
LURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0xIikKKworICAjIEZvciBidWlsZGluZyB0aGUgZ3Rl
c3QgbGlicmFyaWVzLgorICBzZXQoY3h4X3N0cmljdCAiJHtjeHhfZGVmYXVsdH0gJHtjeHhfc3Ry
aWN0X2ZsYWdzfSIpCitlbmRtYWNybygpCisKKyMgRGVmaW5lcyB0aGUgZ3Rlc3QgJiBndGVzdF9t
YWluIGxpYnJhcmllcy4gIFVzZXIgdGVzdHMgc2hvdWxkIGxpbmsKKyMgd2l0aCBvbmUgb2YgdGhl
bS4KK2Z1bmN0aW9uKGN4eF9saWJyYXJ5X3dpdGhfdHlwZSBuYW1lIHR5cGUgY3h4X2ZsYWdzKQor
ICAjIHR5cGUgY2FuIGJlIGVpdGhlciBTVEFUSUMgb3IgU0hBUkVEIHRvIGRlbm90ZSBhIHN0YXRp
YyBvciBzaGFyZWQgbGlicmFyeS4KKyAgIyBBUkdOIHJlZmVycyB0byBhZGRpdGlvbmFsIGFyZ3Vt
ZW50cyBhZnRlciAnY3h4X2ZsYWdzJy4KKyAgYWRkX2xpYnJhcnkoJHtuYW1lfSAke3R5cGV9ICR7
QVJHTn0pCisgIHNldF90YXJnZXRfcHJvcGVydGllcygke25hbWV9CisgICAgUFJPUEVSVElFUwor
ICAgIENPTVBJTEVfRkxBR1MgIiR7Y3h4X2ZsYWdzfSIpCisgICMgR2VuZXJhdGUgZGVidWcgbGli
cmFyeSBuYW1lIHdpdGggYSBwb3N0Zml4LgorICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtuYW1l
fQorICAgIFBST1BFUlRJRVMKKyAgICBERUJVR19QT1NURklYICJkIikKKyAgaWYgKEJVSUxEX1NI
QVJFRF9MSUJTIE9SIHR5cGUgU1RSRVFVQUwgIlNIQVJFRCIpCisgICAgc2V0X3RhcmdldF9wcm9w
ZXJ0aWVzKCR7bmFtZX0KKyAgICAgIFBST1BFUlRJRVMKKyAgICAgIENPTVBJTEVfREVGSU5JVElP
TlMgIkdURVNUX0NSRUFURV9TSEFSRURfTElCUkFSWT0xIikKKyAgICBpZiAoTk9UICIke0NNQUtF
X1ZFUlNJT059IiBWRVJTSU9OX0xFU1MgIjIuOC4xMSIpCisgICAgICB0YXJnZXRfY29tcGlsZV9k
ZWZpbml0aW9ucygke25hbWV9IElOVEVSRkFDRQorICAgICAgICAkPElOU1RBTExfSU5URVJGQUNF
OkdURVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFSWT0xPikKKyAgICBlbmRpZigpCisgIGVuZGlm
KCkKKyAgaWYgKERFRklORUQgR1RFU1RfSEFTX1BUSFJFQUQpCisgICAgaWYgKCIke0NNQUtFX1ZF
UlNJT059IiBWRVJTSU9OX0xFU1MgIjMuMS4wIikKKyAgICAgIHNldCh0aHJlYWRzX3NwZWMgJHtD
TUFLRV9USFJFQURfTElCU19JTklUfSkKKyAgICBlbHNlKCkKKyAgICAgIHNldCh0aHJlYWRzX3Nw
ZWMgVGhyZWFkczo6VGhyZWFkcykKKyAgICBlbmRpZigpCisgICAgdGFyZ2V0X2xpbmtfbGlicmFy
aWVzKCR7bmFtZX0gUFVCTElDICR7dGhyZWFkc19zcGVjfSkKKyAgZW5kaWYoKQorZW5kZnVuY3Rp
b24oKQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgSGVscGVyIGZ1bmN0aW9ucyBmb3IgY3JlYXRp
bmcgYnVpbGQgdGFyZ2V0cy4KKworZnVuY3Rpb24oY3h4X3NoYXJlZF9saWJyYXJ5IG5hbWUgY3h4
X2ZsYWdzKQorICBjeHhfbGlicmFyeV93aXRoX3R5cGUoJHtuYW1lfSBTSEFSRUQgIiR7Y3h4X2Zs
YWdzfSIgJHtBUkdOfSkKK2VuZGZ1bmN0aW9uKCkKKworZnVuY3Rpb24oY3h4X2xpYnJhcnkgbmFt
ZSBjeHhfZmxhZ3MpCisgIGN4eF9saWJyYXJ5X3dpdGhfdHlwZSgke25hbWV9ICIiICIke2N4eF9m
bGFnc30iICR7QVJHTn0pCitlbmRmdW5jdGlvbigpCisKKyMgY3h4X2V4ZWN1dGFibGVfd2l0aF9m
bGFncyhuYW1lIGN4eF9mbGFncyBsaWJzIHNyY3MuLi4pCisjCisjIGNyZWF0ZXMgYSBuYW1lZCBD
KysgZXhlY3V0YWJsZSB0aGF0IGRlcGVuZHMgb24gdGhlIGdpdmVuIGxpYnJhcmllcyBhbmQKKyMg
aXMgYnVpbHQgZnJvbSB0aGUgZ2l2ZW4gc291cmNlIGZpbGVzIHdpdGggdGhlIGdpdmVuIGNvbXBp
bGVyIGZsYWdzLgorZnVuY3Rpb24oY3h4X2V4ZWN1dGFibGVfd2l0aF9mbGFncyBuYW1lIGN4eF9m
bGFncyBsaWJzKQorICBhZGRfZXhlY3V0YWJsZSgke25hbWV9ICR7QVJHTn0pCisgIGlmIChNU1ZD
IEFORCAoTk9UIChNU1ZDX1ZFUlNJT04gTEVTUyAxNzAwKSkpICAjIDE3MDAgaXMgVmlzdWFsIFN0
dWRpbyAyMDEyLgorICAgICMgQmlnT2JqIHJlcXVpcmVkIGZvciB0ZXN0cy4KKyAgICBzZXQoY3h4
X2ZsYWdzICIke2N4eF9mbGFnc30gLWJpZ29iaiIpCisgIGVuZGlmKCkKKyAgaWYgKGN4eF9mbGFn
cykKKyAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtuYW1lfQorICAgICAgUFJPUEVSVElFUwor
ICAgICAgQ09NUElMRV9GTEFHUyAiJHtjeHhfZmxhZ3N9IikKKyAgZW5kaWYoKQorICBpZiAoQlVJ
TERfU0hBUkVEX0xJQlMpCisgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7bmFtZX0KKyAgICAg
IFBST1BFUlRJRVMKKyAgICAgIENPTVBJTEVfREVGSU5JVElPTlMgIkdURVNUX0xJTktFRF9BU19T
SEFSRURfTElCUkFSWT0xIikKKyAgZW5kaWYoKQorICAjIFRvIHN1cHBvcnQgbWl4aW5nIGxpbmtp
bmcgaW4gc3RhdGljIGFuZCBkeW5hbWljIGxpYnJhcmllcywgbGluayBlYWNoCisgICMgbGlicmFy
eSBpbiB3aXRoIGFuIGV4dHJhIGNhbGwgdG8gdGFyZ2V0X2xpbmtfbGlicmFyaWVzLgorICBmb3Jl
YWNoIChsaWIgIiR7bGlic30iKQorICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke25hbWV9ICR7
bGlifSkKKyAgZW5kZm9yZWFjaCgpCitlbmRmdW5jdGlvbigpCisKKyMgY3h4X2V4ZWN1dGFibGUo
bmFtZSBkaXIgbGliIHNyY3MuLi4pCisjCisjIGNyZWF0ZXMgYSBuYW1lZCB0YXJnZXQgdGhhdCBk
ZXBlbmRzIG9uIHRoZSBnaXZlbiBsaWJzIGFuZCBpcyBidWlsdAorIyBmcm9tIHRoZSBnaXZlbiBz
b3VyY2UgZmlsZXMuICBkaXIvbmFtZS5jYyBpcyBpbXBsaWNpdGx5IGluY2x1ZGVkIGluCisjIHRo
ZSBzb3VyY2UgZmlsZSBsaXN0LgorZnVuY3Rpb24oY3h4X2V4ZWN1dGFibGUgbmFtZSBkaXIgbGli
cykKKyAgY3h4X2V4ZWN1dGFibGVfd2l0aF9mbGFncygKKyAgICAke25hbWV9ICIke2N4eF9kZWZh
dWx0fSIgIiR7bGlic30iICIke2Rpcn0vJHtuYW1lfS5jYyIgJHtBUkdOfSkKK2VuZGZ1bmN0aW9u
KCkKKworIyBTZXRzIFBZVEhPTklOVEVSUF9GT1VORCBhbmQgUFlUSE9OX0VYRUNVVEFCTEUuCitm
aW5kX3BhY2thZ2UoUHl0aG9uSW50ZXJwKQorCisjIGN4eF90ZXN0X3dpdGhfZmxhZ3MobmFtZSBj
eHhfZmxhZ3MgbGlicyBzcmNzLi4uKQorIworIyBjcmVhdGVzIGEgbmFtZWQgQysrIHRlc3QgdGhh
dCBkZXBlbmRzIG9uIHRoZSBnaXZlbiBsaWJzIGFuZCBpcyBidWlsdAorIyBmcm9tIHRoZSBnaXZl
biBzb3VyY2UgZmlsZXMgd2l0aCB0aGUgZ2l2ZW4gY29tcGlsZXIgZmxhZ3MuCitmdW5jdGlvbihj
eHhfdGVzdF93aXRoX2ZsYWdzIG5hbWUgY3h4X2ZsYWdzIGxpYnMpCisgIGN4eF9leGVjdXRhYmxl
X3dpdGhfZmxhZ3MoJHtuYW1lfSAiJHtjeHhfZmxhZ3N9IiAiJHtsaWJzfSIgJHtBUkdOfSkKKyAg
YWRkX3Rlc3QoTkFNRSAke25hbWV9IENPTU1BTkQgJHtuYW1lfSkKK2VuZGZ1bmN0aW9uKCkKKwor
IyBjeHhfdGVzdChuYW1lIGxpYnMgc3Jjcy4uLikKKyMKKyMgY3JlYXRlcyBhIG5hbWVkIHRlc3Qg
dGFyZ2V0IHRoYXQgZGVwZW5kcyBvbiB0aGUgZ2l2ZW4gbGlicyBhbmQgaXMKKyMgYnVpbHQgZnJv
bSB0aGUgZ2l2ZW4gc291cmNlIGZpbGVzLiAgVW5saWtlIGN4eF90ZXN0X3dpdGhfZmxhZ3MsCisj
IHRlc3QvbmFtZS5jYyBpcyBhbHJlYWR5IGltcGxpY2l0bHkgaW5jbHVkZWQgaW4gdGhlIHNvdXJj
ZSBmaWxlIGxpc3QuCitmdW5jdGlvbihjeHhfdGVzdCBuYW1lIGxpYnMpCisgIGN4eF90ZXN0X3dp
dGhfZmxhZ3MoIiR7bmFtZX0iICIke2N4eF9kZWZhdWx0fSIgIiR7bGlic30iCisgICAgInRlc3Qv
JHtuYW1lfS5jYyIgJHtBUkdOfSkKK2VuZGZ1bmN0aW9uKCkKKworIyBweV90ZXN0KG5hbWUpCisj
CisjIGNyZWF0ZXMgYSBQeXRob24gdGVzdCB3aXRoIHRoZSBnaXZlbiBuYW1lIHdob3NlIG1haW4g
bW9kdWxlIGlzIGluCisjIHRlc3QvbmFtZS5weS4gIEl0IGRvZXMgbm90aGluZyBpZiBQeXRob24g
aXMgbm90IGluc3RhbGxlZC4KK2Z1bmN0aW9uKHB5X3Rlc3QgbmFtZSkKKyAgaWYgKFBZVEhPTklO
VEVSUF9GT1VORCkKKyAgICBpZiAoJHtDTUFLRV9NQUpPUl9WRVJTSU9OfS4ke0NNQUtFX01JTk9S
X1ZFUlNJT059IEdSRUFURVIgMy4xKQorICAgICAgaWYgKENNQUtFX0NPTkZJR1VSQVRJT05fVFlQ
RVMpCisJIyBNdWx0aS1jb25maWd1cmF0aW9uIGJ1aWxkIGdlbmVyYXRvcnMgYXMgZm9yIFZpc3Vh
bCBTdHVkaW8gc2F2ZQorCSMgb3V0cHV0IGluIGEgc3ViZGlyZWN0b3J5IG9mIENNQUtFX0NVUlJF
TlRfQklOQVJZX0RJUiAoRGVidWcsCisJIyBSZWxlYXNlIGV0Yy4pLCBzbyB3ZSBoYXZlIHRvIHBy
b3ZpZGUgaXQgaGVyZS4KKyAgICAgICAgYWRkX3Rlc3QoCisgICAgICAgICAgTkFNRSAke25hbWV9
CisgICAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vdGVzdC8ke25hbWV9LnB5CisgICAgICAgICAgICAgIC0tYnVpbGRfZGlyPSR7
Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS8kPENPTkZJRz4gJHtBUkdOfSkKKyAgICAgIGVsc2Ug
KENNQUtFX0NPTkZJR1VSQVRJT05fVFlQRVMpCisJIyBTaW5nbGUtY29uZmlndXJhdGlvbiBidWls
ZCBnZW5lcmF0b3JzIGxpa2UgTWFrZWZpbGUgZ2VuZXJhdG9ycworCSMgZG9uJ3QgaGF2ZSBzdWJk
aXJzIGJlbG93IENNQUtFX0NVUlJFTlRfQklOQVJZX0RJUi4KKyAgICAgICAgYWRkX3Rlc3QoCisg
ICAgICAgICAgTkFNRSAke25hbWV9CisgICAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRB
QkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vdGVzdC8ke25hbWV9LnB5CisgICAgICAg
ICAgICAgIC0tYnVpbGRfZGlyPSR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfSAke0FSR059KQor
ICAgICAgZW5kaWYgKENNQUtFX0NPTkZJR1VSQVRJT05fVFlQRVMpCisgICAgZWxzZSAoJHtDTUFL
RV9NQUpPUl9WRVJTSU9OfS4ke0NNQUtFX01JTk9SX1ZFUlNJT059IEdSRUFURVIgMy4xKQorICAg
ICAgIyAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0gaXMga25vd24gYXQgY29uZmlndXJhdGlv
biB0aW1lLCBzbyB3ZSBjYW4KKyAgICAgICMgZGlyZWN0bHkgYmluZCBpdCBmcm9tIGNtYWtlLiAk
e0NURVNUX0NPTkZJR1VSQVRJT05fVFlQRX0gaXMga25vd24KKyAgICAgICMgb25seSBhdCBjdGVz
dCBydW50aW1lIChieSBjYWxsaW5nIGN0ZXN0IC1jIDxDb25maWd1cmF0aW9uPiksIHNvCisgICAg
ICAjIHdlIGhhdmUgdG8gZXNjYXBlICQgdG8gZGVsYXkgdmFyaWFibGUgc3Vic3RpdHV0aW9uIGhl
cmUuCisgICAgICBhZGRfdGVzdCgKKyAgICAgICAgJHtuYW1lfQorICAgICAgICAke1BZVEhPTl9F
WEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vdGVzdC8ke25hbWV9LnB5Cisg
ICAgICAgICAgLS1idWlsZF9kaXI9JHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L1wke0NURVNU
X0NPTkZJR1VSQVRJT05fVFlQRX0gJHtBUkdOfSkKKyAgICBlbmRpZiAoJHtDTUFLRV9NQUpPUl9W
RVJTSU9OfS4ke0NNQUtFX01JTk9SX1ZFUlNJT059IEdSRUFURVIgMy4xKQorICBlbmRpZihQWVRI
T05JTlRFUlBfRk9VTkQpCitlbmRmdW5jdGlvbigpCisKKyMgaW5zdGFsbF9wcm9qZWN0KHRhcmdl
dHMuLi4pCisjCisjIEluc3RhbGxzIHRoZSBzcGVjaWZpZWQgdGFyZ2V0cyBhbmQgY29uZmlndXJl
cyB0aGUgYXNzb2NpYXRlZCBwa2djb25maWcgZmlsZXMuCitmdW5jdGlvbihpbnN0YWxsX3Byb2pl
Y3QpCisgIGlmKElOU1RBTExfR1RFU1QpCisgICAgaW5zdGFsbChESVJFQ1RPUlkgIiR7UFJPSkVD
VF9TT1VSQ0VfRElSfS9pbmNsdWRlLyIKKyAgICAgIERFU1RJTkFUSU9OICIke0NNQUtFX0lOU1RB
TExfSU5DTFVERURJUn0iKQorICAgICMgSW5zdGFsbCB0aGUgcHJvamVjdCB0YXJnZXRzLgorICAg
IGluc3RhbGwoVEFSR0VUUyAke0FSR059CisgICAgICBFWFBPUlQgJHt0YXJnZXRzX2V4cG9ydF9u
YW1lfQorICAgICAgUlVOVElNRSBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0JJTkRJUn0i
CisgICAgICBBUkNISVZFIERFU1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfTElCRElSfSIKKyAg
ICAgIExJQlJBUlkgREVTVElOQVRJT04gIiR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9IikKKyAgICAj
IENvbmZpZ3VyZSBhbmQgaW5zdGFsbCBwa2djb25maWcgZmlsZXMuCisgICAgZm9yZWFjaCh0ICR7
QVJHTn0pCisgICAgICBzZXQoY29uZmlndXJlZF9wYyAiJHtnZW5lcmF0ZWRfZGlyfS8ke3R9LnBj
IikKKyAgICAgIGNvbmZpZ3VyZV9maWxlKCIke1BST0pFQ1RfU09VUkNFX0RJUn0vY21ha2UvJHt0
fS5wYy5pbiIKKyAgICAgICAgIiR7Y29uZmlndXJlZF9wY30iIEBPTkxZKQorICAgICAgaW5zdGFs
bChGSUxFUyAiJHtjb25maWd1cmVkX3BjfSIKKyAgICAgICAgREVTVElOQVRJT04gIiR7Q01BS0Vf
SU5TVEFMTF9MSUJESVJ9L3BrZ2NvbmZpZyIpCisgICAgZW5kZm9yZWFjaCgpCisgIGVuZGlmKCkK
K2VuZGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NvbmZp
Z3VyZS5hYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NvbmZpZ3VyZS5hYwppbmRleCAxYjkx
MjM3NDYxZTM5ZmY2MWI2MzBmM2UwMTlhZGZlZWViNzgzYWU2Li4yNTRjOGM0YjMxODg1ZDI1NzFm
YTIzMDBiNjMxZThiZjlkOTVhZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9jb25maWd1cmUuYWMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29uZmlndXJlLmFj
CkBAIC01LDEzICs1LDE0IEBAIG00X2luY2x1ZGUobTQvYWN4X3B0aHJlYWQubTQpCiAjICJbMS4w
LjFdIikuIEl0IGFsc28gYXN1bWVzIHRoYXQgdGhlcmUgd29uJ3QgYmUgYW55IGNsb3NpbmcgcGFy
ZW50aGVzaXMKICMgYmV0d2VlbiAiQUNfSU5JVCgiIGFuZCB0aGUgY2xvc2luZyAiKSIgaW5jbHVk
aW5nIGNvbW1lbnRzIGFuZCBzdHJpbmdzLgogQUNfSU5JVChbR29vZ2xlIEMrKyBUZXN0aW5nIEZy
YW1ld29ya10sCi0gICAgICAgIFsxLjUuMF0sCisgICAgICAgIFsxLjguMF0sCiAgICAgICAgIFtn
b29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb21dLAogICAgICAgICBbZ3Rlc3RdKQog
CiAjIFByb3ZpZGUgdmFyaW91cyBvcHRpb25zIHRvIGluaXRpYWxpemUgdGhlIEF1dG9jb25mIGFu
ZCBjb25maWd1cmUgcHJvY2Vzc2VzLgogQUNfUFJFUkVRKFsyLjU5XSkKLUFDX0NPTkZJR19TUkNE
SVIoWy4vQ09QWUlOR10pCitBQ19DT05GSUdfU1JDRElSKFsuL0xJQ0VOU0VdKQorQUNfQ09ORklH
X01BQ1JPX0RJUihbbTRdKQogQUNfQ09ORklHX0FVWF9ESVIoW2J1aWxkLWF1eF0pCiBBQ19DT05G
SUdfSEVBREVSUyhbYnVpbGQtYXV4L2NvbmZpZy5oXSkKIEFDX0NPTkZJR19GSUxFUyhbTWFrZWZp
bGVdKQpAQCAtNTQsNyArNTUsNyBAQCBBU19JRihbdGVzdCAieCR3aXRoX3B0aHJlYWRzIiAhPSAi
eG5vIl0sCiAgICAgICAgICAgICAgICBbQUNfTVNHX0ZBSUxVUkUoCiAgICAgICAgICAgICAgICAg
IFstLXdpdGgtcHRocmVhZHMgd2FzIHNwZWNpZmllZCwgYnV0IHVuYWJsZSB0byBiZSB1c2VkXSld
KV0pCiAgICAgICAgaGF2ZV9wdGhyZWFkcz0iJGFjeF9wdGhyZWFkX29rIl0pCi1BTV9DT05ESVRJ
T05BTChbSEFWRV9QVEhSRUFEU10sW3Rlc3QgIngkaGF2ZV9wdGhyZWFkcyIgPT0gInh5ZXMiXSkK
K0FNX0NPTkRJVElPTkFMKFtIQVZFX1BUSFJFQURTXSxbdGVzdCAieCRoYXZlX3B0aHJlYWRzIiA9
ICJ4eWVzIl0pCiBBQ19TVUJTVChQVEhSRUFEX0NGTEFHUykKIEFDX1NVQlNUKFBUSFJFQURfTElC
UykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9Qa2djb25maWcu
bWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1BrZ2NvbmZpZy5tZApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NzYxMjg5NGQyYTNjOGVhZGI0NDJjNTU4NzgwNGZiNzc4NWVhYTcxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9Qa2djb25maWcubWQKQEAgLTAsMCAr
MSwxNDYgQEAKKyMjIFVzaW5nIEdvb2dsZVRlc3QgZnJvbSB2YXJpb3VzIGJ1aWxkIHN5c3RlbXMg
IyMKKworR29vZ2xlVGVzdCBjb21lcyB3aXRoIHBrZy1jb25maWcgZmlsZXMgdGhhdCBjYW4gYmUg
dXNlZCB0byBkZXRlcm1pbmUgYWxsCituZWNlc3NhcnkgZmxhZ3MgZm9yIGNvbXBpbGluZyBhbmQg
bGlua2luZyB0byBHb29nbGVUZXN0IChhbmQgR29vZ2xlTW9jaykuCitQa2ctY29uZmlnIGlzIGEg
c3RhbmRhcmRpc2VkIHBsYWluLXRleHQgZm9ybWF0IGNvbnRhaW5pbmcKKworICAqIHRoZSBpbmNs
dWRlZGlyICgtSSkgcGF0aAorICAqIG5lY2Vzc2FyeSBtYWNybyAoLUQpIGRlZmluaXRpb25zCisg
ICogZnVydGhlciByZXF1aXJlZCBmbGFncyAoLXB0aHJlYWQpCisgICogdGhlIGxpYnJhcnkgKC1M
KSBwYXRoCisgICogdGhlIGxpYnJhcnkgKC1sKSB0byBsaW5rIHRvCisKK0FsbCBjdXJyZW50IGJ1
aWxkIHN5c3RlbXMgc3VwcG9ydCBwa2ctY29uZmlnIGluIG9uZSB3YXkgb3IgYW5vdGhlci4gRm9y
CithbGwgZXhhbXBsZXMgaGVyZSB3ZSBhc3N1bWUgeW91IHdhbnQgdG8gY29tcGlsZSB0aGUgc2Ft
cGxlCitgc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjYC4KKworCisjIyMgQ01ha2UgIyMjCisK
K1VzaW5nIGBwa2ctY29uZmlnYCBpbiBDTWFrZSBpcyBmYWlybHkgZWFzeToKKworYGBgCitjbWFr
ZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMy4wKQorCitjbWFrZV9wb2xpY3koU0VUIENNUDAw
NDggTkVXKQorcHJvamVjdChteV9ndGVzdF9wa2djb25maWcgVkVSU0lPTiAwLjAuMSBMQU5HVUFH
RVMgQ1hYKQorCitmaW5kX3BhY2thZ2UoUGtnQ29uZmlnKQorcGtnX3NlYXJjaF9tb2R1bGUoR1RF
U1QgUkVRVUlSRUQgZ3Rlc3RfbWFpbikKKworYWRkX2V4ZWN1dGFibGUodGVzdGFwcCBzYW1wbGVz
L3NhbXBsZTNfdW5pdHRlc3QuY2MpCit0YXJnZXRfbGlua19saWJyYXJpZXModGVzdGFwcCAke0dU
RVNUX0xERkxBR1N9KQordGFyZ2V0X2NvbXBpbGVfb3B0aW9ucyh0ZXN0YXBwIFBVQkxJQyAke0dU
RVNUX0NGTEFHU30pCisKK2luY2x1ZGUoQ1Rlc3QpCithZGRfdGVzdChmaXJzdF9hbmRfb25seV90
ZXN0IHRlc3RhcHApCitgYGAKKworSXQgaXMgZ2VuZXJhbGx5IHJlY29tbWVuZGVkIHRoYXQgeW91
IHVzZSBgdGFyZ2V0X2NvbXBpbGVfb3B0aW9uc2AgKyBgX0NGTEFHU2AKK292ZXIgYHRhcmdldF9p
bmNsdWRlX2RpcmVjdG9yaWVzYCArIGBfSU5DTFVERV9ESVJTYCBhcyB0aGUgZm9ybWVyIGluY2x1
ZGVzIG5vdAoranVzdCAtSSBmbGFncyAoR29vZ2xlVGVzdCBtaWdodCByZXF1aXJlIGEgbWFjcm8g
aW5kaWNhdGluZyB0byBpbnRlcm5hbCBoZWFkZXJzCit0aGF0IGFsbCBsaWJyYXJpZXMgaGF2ZSBi
ZWVuIGNvbXBpbGVkIHdpdGggdGhyZWFkaW5nIGVuYWJsZWQuIEluIGFkZGl0aW9uLAorR29vZ2xl
VGVzdCBtaWdodCBhbHNvIHJlcXVpcmUgYC1wdGhyZWFkYCBpbiB0aGUgY29tcGlsaW5nIHN0ZXAs
IGFuZCBhcyBzdWNoCitzcGxpdHRpbmcgdGhlIHBrZy1jb25maWcgYENmbGFnc2AgdmFyaWFibGUg
aW50byBpbmNsdWRlIGRpcnMgYW5kIG1hY3JvcyBmb3IKK2B0YXJnZXRfY29tcGlsZV9kZWZpbml0
aW9ucygpYCBtaWdodCBzdGlsbCBtaXNzIHRoaXMpLiBUaGUgc2FtZSByZWNvbW1lbmRhdGlvbgor
Z29lcyBmb3IgdXNpbmcgYF9MREZMQUdTYCBvdmVyIHRoZSBtb3JlIGNvbW1vbnBsYWNlIGBfTElC
UkFSSUVTYCwgd2hpY2gKK2hhcHBlbnMgdG8gZGlzY2FyZCBgLUxgIGZsYWdzIGFuZCBgLXB0aHJl
YWRgLgorCisKKyMjIyBBdXRvdG9vbHMgIyMjCisKK0ZpbmRpbmcgR29vZ2xlVGVzdCBpbiBBdXRv
Y29uZiBhbmQgdXNpbmcgaXQgZnJvbSBBdXRvbWFrZSBpcyBhbHNvIGZhaXJseSBlYXN5OgorCitJ
biB5b3VyIGBjb25maWd1cmUuYWNgOgorCitgYGAKK0FDX1BSRVJFUShbMi42OV0pCitBQ19JTklU
KFtteV9ndGVzdF9wa2djb25maWddLCBbMC4wLjFdKQorQUNfQ09ORklHX1NSQ0RJUihbc2FtcGxl
cy9zYW1wbGUzX3VuaXR0ZXN0LmNjXSkKK0FDX1BST0dfQ1hYCisKK1BLR19DSEVDS19NT0RVTEVT
KFtHVEVTVF0sIFtndGVzdF9tYWluXSkKKworQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiBzdWJk
aXItb2JqZWN0c10pCitBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlXSkKK0FDX09VVFBVVAorYGBg
CisKK2FuZCBpbiB5b3VyIGBNYWtlZmlsZS5hbWA6CisKK2BgYAorY2hlY2tfUFJPR1JBTVMgPSB0
ZXN0YXBwCitURVNUUyA9ICQoY2hlY2tfUFJPR1JBTVMpCisKK3Rlc3RhcHBfU09VUkNFUyA9IHNh
bXBsZXMvc2FtcGxlM191bml0dGVzdC5jYwordGVzdGFwcF9DWFhGTEFHUyA9ICQoR1RFU1RfQ0ZM
QUdTKQordGVzdGFwcF9MREFERCA9ICQoR1RFU1RfTElCUykKK2BgYAorCisKKyMjIyBNZXNvbiAj
IyMKKworTWVzb24gbmF0aXZlbHkgdXNlcyBwa2djb25maWcgdG8gcXVlcnkgZGVwZW5kZW5jaWVz
OgorCitgYGAKK3Byb2plY3QoJ215X2d0ZXN0X3BrZ2NvbmZpZycsICdjcHAnLCB2ZXJzaW9uIDog
JzAuMC4xJykKKworZ3Rlc3RfZGVwID0gZGVwZW5kZW5jeSgnZ3Rlc3RfbWFpbicpCisKK3Rlc3Rh
cHAgPSBleGVjdXRhYmxlKAorICAndGVzdGFwcCcsCisgIGZpbGVzKFsnc2FtcGxlcy9zYW1wbGUz
X3VuaXR0ZXN0LmNjJ10pLAorICBkZXBlbmRlbmNpZXMgOiBndGVzdF9kZXAsCisgIGluc3RhbGwg
OiBmYWxzZSkKKwordGVzdCgnZmlyc3RfYW5kX29ubHlfdGVzdCcsIHRlc3RhcHApCitgYGAKKwor
CisjIyMgUGxhaW4gTWFrZWZpbGVzICMjIworCitTaW5jZSBgcGtnLWNvbmZpZ2AgaXMgYSBzbWFs
bCBVbml4IGNvbW1hbmQtbGluZSB1dGlsaXR5LCBpdCBjYW4gYmUgdXNlZAoraW4gaGFuZHdyaXR0
ZW4gYE1ha2VmaWxlYHMgdG9vOgorCitgYGAKK0dURVNUX0NGTEFHUyA9IGBwa2ctY29uZmlnIC0t
Y2ZsYWdzIGd0ZXN0X21haW5gCitHVEVTVF9MSUJTID0gYHBrZy1jb25maWcgLS1saWJzIGd0ZXN0
X21haW5gCisKKy5QSE9OWTogdGVzdHMgYWxsCisKK3Rlc3RzOiBhbGwKKwkuL3Rlc3RhcHAKKwor
YWxsOiB0ZXN0YXBwCisKK3Rlc3RhcHA6IHRlc3RhcHAubworCSQoQ1hYKSAkKENYWEZMQUdTKSAk
KExERkxBR1MpICQ8IC1vICRAICQoR1RFU1RfTElCUykKKwordGVzdGFwcC5vOiBzYW1wbGVzL3Nh
bXBsZTNfdW5pdHRlc3QuY2MKKwkkKENYWCkgJChDUFBGTEFHUykgJChDWFhGTEFHUykgJDwgLWMg
LW8gJEAgJChHVEVTVF9DRkxBR1MpCitgYGAKKworCisjIyMgSGVscCEgcGtnLWNvbmZpZyBjYW4n
dCBmaW5kIEdvb2dsZVRlc3QhICMjIworCitMZXQncyBzYXkgeW91IGhhdmUgYSBgQ01ha2VMaXN0
cy50eHRgIGFsb25nIHRoZSBsaW5lcyBvZiB0aGUgb25lIGluIHRoaXMKK3R1dG9yaWFsIGFuZCB5
b3UgdHJ5IHRvIHJ1biBgY21ha2VgLiBJdCBpcyB2ZXJ5IHBvc3NpYmxlIHRoYXQgeW91IGdldCBh
CitmYWlsdXJlIGFsb25nIHRoZSBsaW5lcyBvZjoKKworYGBgCistLSBDaGVja2luZyBmb3Igb25l
IG9mIHRoZSBtb2R1bGVzICdndGVzdF9tYWluJworQ01ha2UgRXJyb3IgYXQgL3Vzci9zaGFyZS9j
bWFrZS9Nb2R1bGVzL0ZpbmRQa2dDb25maWcuY21ha2U6NjQwIChtZXNzYWdlKToKKyAgTm9uZSBv
ZiB0aGUgcmVxdWlyZWQgJ2d0ZXN0X21haW4nIGZvdW5kCitgYGAKKworVGhlc2UgZmFpbHVyZXMg
YXJlIGNvbW1vbiBpZiB5b3UgaW5zdGFsbGVkIEdvb2dsZVRlc3QgeW91cnNlbGYgYW5kIGhhdmUg
bm90Citzb3VyY2VkIGl0IGZyb20gYSBkaXN0cm8gb3Igb3RoZXIgcGFja2FnZSBtYW5hZ2VyLiBJ
ZiBzbywgeW91IG5lZWQgdG8gdGVsbAorcGtnLWNvbmZpZyB3aGVyZSBpdCBjYW4gZmluZCB0aGUg
YC5wY2AgZmlsZXMgY29udGFpbmluZyB0aGUgaW5mb3JtYXRpb24uCitTYXkgeW91IGluc3RhbGxl
ZCBHb29nbGVUZXN0IHRvIGAvdXNyL2xvY2FsYCwgdGhlbiBpdCBtaWdodCBiZSB0aGF0IHRoZQor
YC5wY2AgZmlsZXMgYXJlIGluc3RhbGxlZCB1bmRlciBgL3Vzci9sb2NhbC9saWI2NC9wa2djb25m
aWdgLiBJZiB5b3Ugc2V0CisKK2BgYAorZXhwb3J0IFBLR19DT05GSUdfUEFUSD0vdXNyL2xvY2Fs
L2xpYjY0L3BrZ2NvbmZpZworYGBgCisKK3BrZy1jb25maWcgd2lsbCBhbHNvIHRyeSB0byBsb29r
IGluIGBQS0dfQ09ORklHX1BBVEhgIHRvIGZpbmQgYGd0ZXN0X21haW4ucGNgLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9QdW1wTWFudWFsLm1kIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvZG9jcy9QdW1wTWFudWFsLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyN2JiMjRiMDQy
ZGM1NDNhZjRjNDA5YWQwM2UxNDdlYTU5NDliN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1B1bXBNYW51YWwubWQKQEAgLTAsMCArMSwxNzcgQEAKKwor
Cis8Yj5QPC9iPnVtcCBpcyA8Yj5VPC9iPnNlZnVsIGZvciA8Yj5NPC9iPmV0YSA8Yj5QPC9iPnJv
Z3JhbW1pbmcuCisKKyMgVGhlIFByb2JsZW0gIworCitUZW1wbGF0ZSBhbmQgbWFjcm8gbGlicmFy
aWVzIG9mdGVuIG5lZWQgdG8gZGVmaW5lIG1hbnkgY2xhc3NlcywKK2Z1bmN0aW9ucywgb3IgbWFj
cm9zIHRoYXQgdmFyeSBvbmx5IChvciBhbG1vc3Qgb25seSkgaW4gdGhlIG51bWJlciBvZgorYXJn
dW1lbnRzIHRoZXkgdGFrZS4gSXQncyBhIGxvdCBvZiByZXBldGl0aXZlLCBtZWNoYW5pY2FsLCBh
bmQKK2Vycm9yLXByb25lIHdvcmsuCisKK1ZhcmlhZGljIHRlbXBsYXRlcyBhbmQgdmFyaWFkaWMg
bWFjcm9zIGNhbiBhbGxldmlhdGUgdGhlIHByb2JsZW0uCitIb3dldmVyLCB3aGlsZSBib3RoIGFy
ZSBiZWluZyBjb25zaWRlcmVkIGJ5IHRoZSBDKysgY29tbWl0dGVlLCBuZWl0aGVyCitpcyBpbiB0
aGUgc3RhbmRhcmQgeWV0IG9yIHdpZGVseSBzdXBwb3J0ZWQgYnkgY29tcGlsZXJzLiAgVGh1cyB0
aGV5CithcmUgb2Z0ZW4gbm90IGEgZ29vZCBjaG9pY2UsIGVzcGVjaWFsbHkgd2hlbiB5b3VyIGNv
ZGUgbmVlZHMgdG8gYmUKK3BvcnRhYmxlLiBBbmQgdGhlaXIgY2FwYWJpbGl0aWVzIGFyZSBzdGls
bCBsaW1pdGVkLgorCitBcyBhIHJlc3VsdCwgYXV0aG9ycyBvZiBzdWNoIGxpYnJhcmllcyBvZnRl
biBoYXZlIHRvIHdyaXRlIHNjcmlwdHMgdG8KK2dlbmVyYXRlIHRoZWlyIGltcGxlbWVudGF0aW9u
LiBIb3dldmVyLCBvdXIgZXhwZXJpZW5jZSBpcyB0aGF0IGl0J3MKK3RlZGlvdXMgdG8gd3JpdGUg
c3VjaCBzY3JpcHRzLCB3aGljaCB0ZW5kIHRvIHJlZmxlY3QgdGhlIHN0cnVjdHVyZSBvZgordGhl
IGdlbmVyYXRlZCBjb2RlIHBvb3JseSBhbmQgYXJlIG9mdGVuIGhhcmQgdG8gcmVhZCBhbmQgZWRp
dC4gRm9yCitleGFtcGxlLCBhIHNtYWxsIGNoYW5nZSBuZWVkZWQgaW4gdGhlIGdlbmVyYXRlZCBj
b2RlIG1heSByZXF1aXJlIHNvbWUKK25vbi1pbnR1aXRpdmUsIG5vbi10cml2aWFsIGNoYW5nZXMg
aW4gdGhlIHNjcmlwdC4gVGhpcyBpcyBlc3BlY2lhbGx5CitwYWluZnVsIHdoZW4gZXhwZXJpbWVu
dGluZyB3aXRoIHRoZSBjb2RlLgorCisjIE91ciBTb2x1dGlvbiAjCisKK1B1bXAgKGZvciBQdW1w
IGlzIFVzZWZ1bCBmb3IgTWV0YSBQcm9ncmFtbWluZywgUHJldHR5IFVzZWZ1bCBmb3IgTWV0YQor
UHJvZ3JhbW1pbmcsIG9yIFByYWN0aWNhbCBVdGlsaXR5IGZvciBNZXRhIFByb2dyYW1taW5nLCB3
aGljaGV2ZXIgeW91CitwcmVmZXIpIGlzIGEgc2ltcGxlIG1ldGEtcHJvZ3JhbW1pbmcgdG9vbCBm
b3IgQysrLiBUaGUgaWRlYSBpcyB0aGF0IGEKK3Byb2dyYW1tZXIgd3JpdGVzIGEgYGZvby5wdW1w
YCBmaWxlIHdoaWNoIGNvbnRhaW5zIEMrKyBjb2RlIHBsdXMgbWV0YQorY29kZSB0aGF0IG1hbmlw
dWxhdGVzIHRoZSBDKysgY29kZS4gVGhlIG1ldGEgY29kZSBjYW4gaGFuZGxlCitpdGVyYXRpb25z
IG92ZXIgYSByYW5nZSwgbmVzdGVkIGl0ZXJhdGlvbnMsIGxvY2FsIG1ldGEgdmFyaWFibGUKK2Rl
ZmluaXRpb25zLCBzaW1wbGUgYXJpdGhtZXRpYywgYW5kIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25z
LiBZb3UgY2FuCit2aWV3IGl0IGFzIGEgc21hbGwgRG9tYWluLVNwZWNpZmljIExhbmd1YWdlLiBU
aGUgbWV0YSBsYW5ndWFnZSBpcworZGVzaWduZWQgdG8gYmUgbm9uLWludHJ1c2l2ZSAocy50LiBp
dCB3b24ndCBjb25mdXNlIEVtYWNzJyBDKysgbW9kZSwKK2ZvciBleGFtcGxlKSBhbmQgY29uY2lz
ZSwgbWFraW5nIFB1bXAgY29kZSBpbnR1aXRpdmUgYW5kIGVhc3kgdG8KK21haW50YWluLgorCisj
IyBIaWdobGlnaHRzICMjCisKKyAgKiBUaGUgaW1wbGVtZW50YXRpb24gaXMgaW4gYSBzaW5nbGUg
UHl0aG9uIHNjcmlwdCBhbmQgdGh1cyB1bHRyYSBwb3J0YWJsZTogbm8gYnVpbGQgb3IgaW5zdGFs
bGF0aW9uIGlzIG5lZWRlZCBhbmQgaXQgd29ya3MgY3Jvc3MgcGxhdGZvcm1zLgorICAqIFB1bXAg
dHJpZXMgdG8gYmUgc21hcnQgd2l0aCByZXNwZWN0IHRvIFtHb29nbGUncyBzdHlsZSBndWlkZV0o
aHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9zdHlsZWd1aWRlKTogaXQgYnJlYWtzIGxvbmcgbGlu
ZXMgKGVhc3kgdG8gaGF2ZSB3aGVuIHRoZXkgYXJlIGdlbmVyYXRlZCkgYXQgYWNjZXB0YWJsZSBw
bGFjZXMgdG8gZml0IHdpdGhpbiA4MCBjb2x1bW5zIGFuZCBpbmRlbnQgdGhlIGNvbnRpbnVhdGlv
biBsaW5lcyBjb3JyZWN0bHkuCisgICogVGhlIGZvcm1hdCBpcyBodW1hbi1yZWFkYWJsZSBhbmQg
bW9yZSBjb25jaXNlIHRoYW4gWE1MLgorICAqIFRoZSBmb3JtYXQgd29ya3MgcmVsYXRpdmVseSB3
ZWxsIHdpdGggRW1hY3MnIEMrKyBtb2RlLgorCisjIyBFeGFtcGxlcyAjIworCitUaGUgZm9sbG93
aW5nIFB1bXAgY29kZSAod2hlcmUgbWV0YSBrZXl3b3JkcyBzdGFydCB3aXRoIGAkYCwgYFtbYCBh
bmQgYF1dYCBhcmUgbWV0YSBicmFja2V0cywgYW5kIGAkJGAgc3RhcnRzIGEgbWV0YSBjb21tZW50
IHRoYXQgZW5kcyB3aXRoIHRoZSBsaW5lKToKKworYGBgCiskdmFyIG4gPSAzICAgICAkJCBEZWZp
bmVzIGEgbWV0YSB2YXJpYWJsZSBuLgorJHJhbmdlIGkgMC4ubiAgJCQgRGVjbGFyZXMgdGhlIHJh
bmdlIG9mIG1ldGEgaXRlcmF0b3IgaSAoaW5jbHVzaXZlKS4KKyRmb3IgaSBbWworICAgICAgICAg
ICAgICAgJCQgTWV0YSBsb29wLgorLy8gRm9vJGkgZG9lcyBibGFoIGZvciAkaS1hcnkgcHJlZGlj
YXRlcy4KKyRyYW5nZSBqIDEuLmkKK3RlbXBsYXRlIDxzaXplX3QgTiAkZm9yIGogW1ssIHR5cGVu
YW1lIEEkal1dPgorY2xhc3MgRm9vJGkgeworJGlmIGkgPT0gMCBbWworICBibGFoIGE7CitdXSAk
ZWxpZiBpIDw9IDIgW1sKKyAgYmxhaCBiOworXV0gJGVsc2UgW1sKKyAgYmxhaCBjOworXV0KK307
CisKK11dCitgYGAKKword2lsbCBiZSB0cmFuc2xhdGVkIGJ5IHRoZSBQdW1wIGNvbXBpbGVyIHRv
OgorCitgYGAKKy8vIEZvbzAgZG9lcyBibGFoIGZvciAwLWFyeSBwcmVkaWNhdGVzLgordGVtcGxh
dGUgPHNpemVfdCBOPgorY2xhc3MgRm9vMCB7CisgIGJsYWggYTsKK307CisKKy8vIEZvbzEgZG9l
cyBibGFoIGZvciAxLWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFt
ZSBBMT4KK2NsYXNzIEZvbzEgeworICBibGFoIGI7Cit9OworCisvLyBGb28yIGRvZXMgYmxhaCBm
b3IgMi1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5
cGVuYW1lIEEyPgorY2xhc3MgRm9vMiB7CisgIGJsYWggYjsKK307CisKKy8vIEZvbzMgZG9lcyBi
bGFoIGZvciAzLWFyeSBwcmVkaWNhdGVzLgordGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBB
MSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzPgorY2xhc3MgRm9vMyB7CisgIGJsYWggYzsKK307
CitgYGAKKworSW4gYW5vdGhlciBleGFtcGxlLAorCitgYGAKKyRyYW5nZSBpIDEuLm4KK0Z1bmMo
JGZvciBpICsgW1thJGldXSk7CiskJCBUaGUgdGV4dCBiZXR3ZWVuIGkgYW5kIFtbIGlzIHRoZSBz
ZXBhcmF0b3IgYmV0d2VlbiBpdGVyYXRpb25zLgorYGBgCisKK3dpbGwgZ2VuZXJhdGUgb25lIG9m
IHRoZSBmb2xsb3dpbmcgbGluZXMgKHdpdGhvdXQgdGhlIGNvbW1lbnRzKSwgZGVwZW5kaW5nIG9u
IHRoZSB2YWx1ZSBvZiBgbmA6CisKK2BgYAorRnVuYygpOyAgICAgICAgICAgICAgLy8gSWYgbiBp
cyAwLgorRnVuYyhhMSk7ICAgICAgICAgICAgLy8gSWYgbiBpcyAxLgorRnVuYyhhMSArIGEyKTsg
ICAgICAgLy8gSWYgbiBpcyAyLgorRnVuYyhhMSArIGEyICsgYTMpOyAgLy8gSWYgbiBpcyAzLgor
Ly8gQW5kIHNvIG9uLi4uCitgYGAKKworIyMgQ29uc3RydWN0cyAjIworCitXZSBzdXBwb3J0IHRo
ZSBmb2xsb3dpbmcgbWV0YSBwcm9ncmFtbWluZyBjb25zdHJ1Y3RzOgorCit8IGAkdmFyIGlkID0g
ZXhwYCB8IERlZmluZXMgYSBuYW1lZCBjb25zdGFudCB2YWx1ZS4gYCRpZGAgaXMgdmFsaWQgdXRp
bCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IG1ldGEgbGV4aWNhbCBibG9jay4gfAorfDotLS0tLS0t
LS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgYCRy
YW5nZSBpZCBleHAuLmV4cGAgfCBTZXRzIHRoZSByYW5nZSBvZiBhbiBpdGVyYXRpb24gdmFyaWFi
bGUsIHdoaWNoIGNhbiBiZSByZXVzZWQgaW4gbXVsdGlwbGUgbG9vcHMgbGF0ZXIuICAgICAgICAg
IHwKK3wgYCRmb3IgaWQgc2VwIFtbIGNvZGUgXV1gIHwgSXRlcmF0aW9uLiBUaGUgcmFuZ2Ugb2Yg
YGlkYCBtdXN0IGhhdmUgYmVlbiBkZWZpbmVkIGVhcmxpZXIuIGAkaWRgIGlzIHZhbGlkIGluIGBj
b2RlYC4gICAgICAgICB8Cit8IGAkKCQpYCAgICAgICAgICB8IEdlbmVyYXRlcyBhIHNpbmdsZSBg
JGAgY2hhcmFjdGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorfCBgJGlkYCAgICAgICAgICAgfCBWYWx1ZSBvZiB0aGUgbmFt
ZWQgY29uc3RhbnQgb3IgaXRlcmF0aW9uIHZhcmlhYmxlLiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYCQoZXhwKWAgICAgICAgIHwgVmFsdWUgb2YgdGhl
IGV4cHJlc3Npb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9i
cmFuY2hgIHwgQ29uZGl0aW9uYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGBbWyBj
b2RlIF1dYCAgICB8IE1ldGEgbGV4aWNhbCBibG9jay4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBg
Y3BwX2NvZGVgICAgICAgfCBSYXcgQysrIGNvZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
K3wgYCQkIGNvbW1lbnRgICAgIHwgTWV0YSBjb21tZW50LiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisKKyoqTm90ZToqKiBUbyBnaXZlIHRoZSB1c2VyIHNvbWUgZnJlZWRvbSBpbiBmb3JtYXR0
aW5nIHRoZSBQdW1wIHNvdXJjZQorY29kZSwgUHVtcCBpZ25vcmVzIGEgbmV3LWxpbmUgY2hhcmFj
dGVyIGlmIGl0J3MgcmlnaHQgYWZ0ZXIgYCRmb3IgZm9vYAorb3IgbmV4dCB0byBgW1tgIG9yIGBd
XWAuIFdpdGhvdXQgdGhpcyBydWxlIHlvdSdsbCBvZnRlbiBiZSBmb3JjZWQgdG8gd3JpdGUKK3Zl
cnkgbG9uZyBsaW5lcyB0byBnZXQgdGhlIGRlc2lyZWQgb3V0cHV0LiBUaGVyZWZvcmUgc29tZXRp
bWVzIHlvdSBtYXkKK25lZWQgdG8gaW5zZXJ0IGFuIGV4dHJhIG5ldy1saW5lIGluIHN1Y2ggcGxh
Y2VzIGZvciBhIG5ldy1saW5lIHRvIHNob3cKK3VwIGluIHlvdXIgb3V0cHV0LgorCisjIyBHcmFt
bWFyICMjCisKK2BgYAorY29kZSA6Oj0gYXRvbWljX2NvZGUqCithdG9taWNfY29kZSA6Oj0gJHZh
ciBpZCA9IGV4cAorICAgIHwgJHZhciBpZCA9IFtbIGNvZGUgXV0KKyAgICB8ICRyYW5nZSBpZCBl
eHAuLmV4cAorICAgIHwgJGZvciBpZCBzZXAgW1sgY29kZSBdXQorICAgIHwgJCgkKQorICAgIHwg
JGlkCisgICAgfCAkKGV4cCkKKyAgICB8ICRpZiBleHAgW1sgY29kZSBdXSBlbHNlX2JyYW5jaAor
ICAgIHwgW1sgY29kZSBdXQorICAgIHwgY3BwX2NvZGUKK3NlcCA6Oj0gY3BwX2NvZGUgfCBlbXB0
eV9zdHJpbmcKK2Vsc2VfYnJhbmNoIDo6PSAkZWxzZSBbWyBjb2RlIF1dCisgICAgfCAkZWxpZiBl
eHAgW1sgY29kZSBdXSBlbHNlX2JyYW5jaAorICAgIHwgZW1wdHlfc3RyaW5nCitleHAgOjo9IHNp
bXBsZV9leHByZXNzaW9uX2luX1B5dGhvbl9zeW50YXgKK2BgYAorCisjIyBDb2RlICMjCisKK1lv
dSBjYW4gZmluZCB0aGUgc291cmNlIGNvZGUgb2YgUHVtcCBpbiBbc2NyaXB0cy9wdW1wLnB5XSgu
Li9zY3JpcHRzL3B1bXAucHkpLiBJdCBpcyBzdGlsbAordmVyeSB1bnBvbGlzaGVkIGFuZCBsYWNr
cyBhdXRvbWF0ZWQgdGVzdHMsIGFsdGhvdWdoIGl0IGhhcyBiZWVuCitzdWNjZXNzZnVsbHkgdXNl
ZCBtYW55IHRpbWVzLiBJZiB5b3UgZmluZCBhIGNoYW5jZSB0byB1c2UgaXQgaW4geW91cgorcHJv
amVjdCwgcGxlYXNlIGxldCB1cyBrbm93IHdoYXQgeW91IHRoaW5rISAgV2UgYWxzbyB3ZWxjb21l
IGhlbHAgb24KK2ltcHJvdmluZyBQdW1wLgorCisjIyBSZWFsIEV4YW1wbGVzICMjCisKK1lvdSBj
YW4gZmluZCByZWFsLXdvcmxkIGFwcGxpY2F0aW9ucyBvZiBQdW1wIGluIFtHb29nbGUgVGVzdF0o
aHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L3RyZWUvbWFzdGVyL2dvb2dsZXRl
c3QpIGFuZCBbR29vZ2xlIE1vY2tdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVz
dC90cmVlL21hc3Rlci9nb29nbGVtb2NrKS4gVGhlIHNvdXJjZSBmaWxlIGBmb28uaC5wdW1wYCBn
ZW5lcmF0ZXMgYGZvby5oYC4KKworIyMgVGlwcyAjIworCisgICogSWYgYSBtZXRhIHZhcmlhYmxl
IGlzIGZvbGxvd2VkIGJ5IGEgbGV0dGVyIG9yIGRpZ2l0LCB5b3UgY2FuIHNlcGFyYXRlIHRoZW0g
dXNpbmcgYFtbXV1gLCB3aGljaCBpbnNlcnRzIGFuIGVtcHR5IHN0cmluZy4gRm9yIGV4YW1wbGUg
YEZvbyRqW1tdXUhlbHBlcmAgZ2VuZXJhdGUgYEZvbzFIZWxwZXJgIHdoZW4gYGpgIGlzIDEuCisg
ICogVG8gYXZvaWQgZXh0cmEtbG9uZyBQdW1wIHNvdXJjZSBsaW5lcywgeW91IGNhbiBicmVhayBh
IGxpbmUgYW55d2hlcmUgeW91IHdhbnQgYnkgaW5zZXJ0aW5nIGBbW11dYCBmb2xsb3dlZCBieSBh
IG5ldyBsaW5lLiBTaW5jZSBhbnkgbmV3LWxpbmUgY2hhcmFjdGVyIG5leHQgdG8gYFtbYCBvciBg
XV1gIGlzIGlnbm9yZWQsIHRoZSBnZW5lcmF0ZWQgY29kZSB3b24ndCBjb250YWluIHRoaXMgbmV3
IGxpbmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1hjb2RlR3Vp
ZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1hjb2RlR3VpZGUubWQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWM2MGEzM2RhZDQzYmFmOTgzODFmN2M5ZjIwZjY5YjU1OGIyYWFkMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvWGNvZGVHdWlkZS5tZApAQCAt
MCwwICsxLDkzIEBACisKKworVGhpcyBndWlkZSB3aWxsIGV4cGxhaW4gaG93IHRvIHVzZSB0aGUg
R29vZ2xlIFRlc3RpbmcgRnJhbWV3b3JrIGluIHlvdXIgWGNvZGUgcHJvamVjdHMgb24gTWFjIE9T
IFguIFRoaXMgdHV0b3JpYWwgYmVnaW5zIGJ5IHF1aWNrbHkgZXhwbGFpbmluZyB3aGF0IHRvIGRv
IGZvciBleHBlcmllbmNlZCB1c2Vycy4gQWZ0ZXIgdGhlIHF1aWNrIHN0YXJ0LCB0aGUgZ3VpZGUg
Z29lcyBwcm92aWRlcyBhZGRpdGlvbmFsIGV4cGxhbmF0aW9uIGFib3V0IGVhY2ggc3RlcC4KKwor
IyBRdWljayBTdGFydCAjCisKK0hlcmUgaXMgdGhlIHF1aWNrIGd1aWRlIGZvciB1c2luZyBHb29n
bGUgVGVzdCBpbiB5b3VyIFhjb2RlIHByb2plY3QuCisKKyAgMS4gRG93bmxvYWQgdGhlIHNvdXJj
ZSBmcm9tIHRoZSBbd2Vic2l0ZV0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0
KSB1c2luZyB0aGlzIGNvbW1hbmQ6IGBzdm4gY2hlY2tvdXQgaHR0cDovL2dvb2dsZXRlc3QuZ29v
Z2xlY29kZS5jb20vc3ZuL3RydW5rLyBnb29nbGV0ZXN0LXJlYWQtb25seWAuCisgIDEuIE9wZW4g
dXAgdGhlIGBndGVzdC54Y29kZXByb2pgIGluIHRoZSBgZ29vZ2xldGVzdC1yZWFkLW9ubHkveGNv
ZGUvYCBkaXJlY3RvcnkgYW5kIGJ1aWxkIHRoZSBndGVzdC5mcmFtZXdvcmsuCisgIDEuIENyZWF0
ZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0IGluIHlvdXIgWGNvZGUgcHJvamVjdCBjYWxsZWQg
c29tZXRoaW5nIGxpa2UgIlVuaXRUZXN0cyIuCisgIDEuIEFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3Jr
IHRvIHlvdXIgcHJvamVjdCBhbmQgYWRkIGl0IHRvIHRoZSAiTGluayBCaW5hcnkgd2l0aCBMaWJy
YXJpZXMiIGJ1aWxkIHBoYXNlIG9mICJVbml0VGVzdHMiLgorICAxLiBBZGQgeW91ciB1bml0IHRl
c3Qgc291cmNlIGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJjZXMiIGJ1aWxkIHBoYXNlIG9mICJV
bml0VGVzdHMiLgorICAxLiBFZGl0IHRoZSAiVW5pdFRlc3RzIiBleGVjdXRhYmxlIGFuZCBhZGQg
YW4gZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZWQgIkRZTERcX0ZSQU1FV09SS1xfUEFUSCIgd2l0
aCBhIHZhbHVlIGVxdWFsIHRvIHRoZSBwYXRoIHRvIHRoZSBmcmFtZXdvcmsgY29udGFpbmluZyB0
aGUgZ3Rlc3QuZnJhbWV3b3JrIHJlbGF0aXZlIHRvIHRoZSBjb21waWxlZCBleGVjdXRhYmxlLgor
ICAxLiBCdWlsZCBhbmQgR28uCisKK1RoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZnVydGhlciBleHBs
YWluIGVhY2ggb2YgdGhlIHN0ZXBzIGxpc3RlZCBhYm92ZSBpbiBkZXB0aCwgZGVzY3JpYmluZyBp
biBtb3JlIGRldGFpbCBob3cgdG8gY29tcGxldGUgaXQgaW5jbHVkaW5nIHNvbWUgdmFyaWF0aW9u
cy4KKworIyBHZXQgdGhlIFNvdXJjZSAjCisKK0N1cnJlbnRseSwgdGhlIGd0ZXN0LmZyYW1ld29y
ayBkaXNjdXNzZWQgaGVyZSBpc24ndCBhdmFpbGFibGUgaW4gYSB0YWdnZWQgcmVsZWFzZSBvZiBH
b29nbGUgVGVzdCwgaXQgaXMgb25seSBhdmFpbGFibGUgaW4gdGhlIHRydW5rLiBBcyBleHBsYWlu
ZWQgYXQgdGhlIEdvb2dsZSBUZXN0IFtzaXRlXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dv
b2dsZXRlc3QpLCB5b3UgY2FuIGdldCB0aGUgY29kZSBmcm9tIGFub255bW91cyBTVk4gd2l0aCB0
aGlzIGNvbW1hbmQ6CisKK2BgYAorc3ZuIGNoZWNrb3V0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2ds
ZWNvZGUuY29tL3N2bi90cnVuay8gZ29vZ2xldGVzdC1yZWFkLW9ubHkKK2BgYAorCitBbHRlcm5h
dGl2ZWx5LCBpZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBTdWJ2ZXJzaW9uIGluIHlvdXIgb3duIGNv
ZGUgYmFzZSwgeW91IGNhbiBhZGQgR29vZ2xlIFRlc3QgYXMgYW4gZXh0ZXJuYWwgZGVwZW5kZW5j
eSB0byB5b3VyIG93biBTdWJ2ZXJzaW9uIHJlcG9zaXRvcnkuIEJ5IGZvbGxvd2luZyB0aGlzIGFw
cHJvYWNoLCBldmVyeW9uZSB0aGF0IGNoZWNrcyBvdXQgeW91ciBzdm4gcmVwb3NpdG9yeSB3aWxs
IGFsc28gcmVjZWl2ZSBhIGNvcHkgb2YgR29vZ2xlIFRlc3QgKGEgc3BlY2lmaWMgdmVyc2lvbiwg
aWYgeW91IHdpc2gpIHdpdGhvdXQgaGF2aW5nIHRvIGNoZWNrIGl0IG91dCBleHBsaWNpdGx5LiBU
aGlzIG1ha2VzIHRoZSBzZXQgdXAgb2YgeW91ciBwcm9qZWN0IHNpbXBsZXIgYW5kIHJlZHVjZXMg
dGhlIGNvcGllZCBjb2RlIGluIHRoZSByZXBvc2l0b3J5LgorCitUbyB1c2UgYHN2bjpleHRlcm5h
bHNgLCBkZWNpZGUgd2hlcmUgeW91IHdvdWxkIGxpa2UgdG8gaGF2ZSB0aGUgZXh0ZXJuYWwgc291
cmNlIHJlc2lkZS4gWW91IG1pZ2h0IGNob29zZSB0byBwdXQgdGhlIGV4dGVybmFsIHNvdXJjZSBp
bnNpZGUgdGhlIHRydW5rLCBiZWNhdXNlIHlvdSB3YW50IGl0IHRvIGJlIHBhcnQgb2YgdGhlIGJy
YW5jaCB3aGVuIHlvdSBtYWtlIGEgcmVsZWFzZS4gSG93ZXZlciwga2VlcGluZyBpdCBvdXRzaWRl
IHRoZSB0cnVuayBpbiBhIHZlcnNpb24tdGFnZ2VkIGRpcmVjdG9yeSBjYWxsZWQgc29tZXRoaW5n
IGxpa2UgYHRoaXJkLXBhcnR5L2dvb2dsZXRlc3QvMS4wLjFgLCBpcyBhbm90aGVyIG9wdGlvbi4g
T25jZSB0aGUgbG9jYXRpb24gaXMgZXN0YWJsaXNoZWQsIHVzZSBgc3ZuIHByb3BlZGl0IHN2bjpl
eHRlcm5hbHMgX2RpcmVjdG9yeV9gIHRvIHNldCB0aGUgc3ZuOmV4dGVybmFscyBwcm9wZXJ0eSBv
biBhIGRpcmVjdG9yeSBpbiB5b3VyIHJlcG9zaXRvcnkuIFRoaXMgZGlyZWN0b3J5IHdvbid0IGNv
bnRhaW4gdGhlIGNvZGUsIGJ1dCBiZSBpdHMgdmVyc2lvbmVkIHBhcmVudCBkaXJlY3RvcnkuCisK
K1RoZSBjb21tYW5kIGBzdm4gcHJvcGVkaXRgIHdpbGwgYnJpbmcgdXAgeW91ciBTdWJ2ZXJzaW9u
IGVkaXRvciwgbWFraW5nIGVkaXRpbmcgdGhlIGxvbmcsIChwb3RlbnRpYWxseSBtdWx0aS1saW5l
KSBwcm9wZXJ0eSBzaW1wbGVyLiBUaGlzIHNhbWUgbWV0aG9kIGNhbiBiZSB1c2VkIHRvIGNoZWNr
IG91dCBhIHRhZ2dlZCBicmFuY2gsIGJ5IHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBVUkwgKGUuZy4g
YGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9yZWxlYXNlcy90YWcvcmVsZWFz
ZS0xLjAuMWApLiBBZGRpdGlvbmFsbHksIHRoZSBzdm46ZXh0ZXJuYWxzIHByb3BlcnR5IGFsbG93
cyB0aGUgc3BlY2lmaWNhdGlvbiBvZiBhIHBhcnRpY3VsYXIgcmV2aXNpb24gb2YgdGhlIHRydW5r
IHdpdGggdGhlIGAtcl8jI19gIG9wdGlvbiAoZS5nLiBgZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0
IC1yNjAgaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rYCkuCisKK0hl
cmUgaXMgYW4gZXhhbXBsZSBvZiB1c2luZyB0aGUgc3ZuOmV4dGVybmFscyBwcm9wZXJ0aWVzIG9u
IGEgdHJ1bmsgKHJlYWQgdmlhIGBzdm4gcHJvcGdldGApIG9mIGEgcHJvamVjdC4gVGhpcyB2YWx1
ZSBjaGVja3Mgb3V0IGEgY29weSBvZiBHb29nbGUgVGVzdCBpbnRvIHRoZSBgdHJ1bmsvZXh0ZXJu
YWxzL3NyYy9nb29nbGV0ZXN0L2AgZGlyZWN0b3J5LgorCitgYGAKK1tDb21wdXRlcjpzdm5dIHVz
ZXIkIHN2biBwcm9wZ2V0IHN2bjpleHRlcm5hbHMgdHJ1bmsKK2V4dGVybmFscy9zcmMvZ29vZ2xl
dGVzdCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsKK2BgYAorCisj
IEFkZCB0aGUgRnJhbWV3b3JrIHRvIFlvdXIgUHJvamVjdCAjCisKK1RoZSBuZXh0IHN0ZXAgaXMg
dG8gYnVpbGQgYW5kIGFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHRvIHlvdXIgb3duIHByb2plY3Qu
IFRoaXMgZ3VpZGUgZGVzY3JpYmVzIHR3byBjb21tb24gd2F5cyBiZWxvdy4KKworICAqICoqT3B0
aW9uIDEqKiAtLS0gVGhlIHNpbXBsZXN0IHdheSB0byBhZGQgR29vZ2xlIFRlc3QgdG8geW91ciBv
d24gcHJvamVjdCwgaXMgdG8gb3BlbiBndGVzdC54Y29kZXByb2ogKGZvdW5kIGluIHRoZSB4Y29k
ZS8gZGlyZWN0b3J5IG9mIHRoZSBHb29nbGUgVGVzdCB0cnVuaykgYW5kIGJ1aWxkIHRoZSBmcmFt
ZXdvcmsgbWFudWFsbHkuIFRoZW4sIGFkZCB0aGUgYnVpbHQgZnJhbWV3b3JrIGludG8geW91ciBw
cm9qZWN0IHVzaW5nIHRoZSAiQWRkLT5FeGlzdGluZyBGcmFtZXdvcmsuLi4iIGZyb20gdGhlIGNv
bnRleHQgbWVudSBvciAiUHJvamVjdC0+QWRkLi4uIiBmcm9tIHRoZSBtYWluIG1lbnUuIFRoZSBn
dGVzdC5mcmFtZXdvcmsgaXMgcmVsb2NhdGFibGUgYW5kIGNvbnRhaW5zIHRoZSBoZWFkZXJzIGFu
ZCBvYmplY3QgY29kZSB0aGF0IHlvdSdsbCBuZWVkIHRvIG1ha2UgdGVzdHMuIFRoaXMgbWV0aG9k
IHJlcXVpcmVzIHJlYnVpbGRpbmcgZXZlcnkgdGltZSB5b3UgdXBncmFkZSBHb29nbGUgVGVzdCBp
biB5b3VyIHByb2plY3QuCisgICogKipPcHRpb24gMioqIC0tLSBJZiB5b3UgYXJlIGdvaW5nIHRv
IGJlIGxpdmluZyBvZmYgdGhlIHRydW5rIG9mIEdvb2dsZSBUZXN0LCBpbmNvcnBvcmF0aW5nIGl0
cyBsYXRlc3QgZmVhdHVyZXMgaW50byB5b3VyIHVuaXQgdGVzdHMgKG9yIGFyZSBhIEdvb2dsZSBU
ZXN0IGRldmVsb3BlciB5b3Vyc2VsZikuIFlvdSdsbCB3YW50IHRvIHJlYnVpbGQgdGhlIGZyYW1l
d29yayBldmVyeSB0aW1lIHRoZSBzb3VyY2UgdXBkYXRlcy4gdG8gZG8gdGhpcywgeW91J2xsIG5l
ZWQgdG8gYWRkIHRoZSBndGVzdC54Y29kZXByb2ogZmlsZSwgbm90IHRoZSBmcmFtZXdvcmsgaXRz
ZWxmLCB0byB5b3VyIG93biBYY29kZSBwcm9qZWN0LiBUaGVuLCBmcm9tIHRoZSBidWlsZCBwcm9k
dWN0cyB0aGF0IGFyZSByZXZlYWxlZCBieSB0aGUgcHJvamVjdCdzIGRpc2Nsb3N1cmUgdHJpYW5n
bGUsIHlvdSBjYW4gZmluZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrLCB3aGljaCBjYW4gYmUgYWRkZWQg
dG8geW91ciB0YXJnZXRzIChkaXNjdXNzZWQgYmVsb3cpLgorCisjIE1ha2UgYSBUZXN0IFRhcmdl
dCAjCisKK1RvIHN0YXJ0IHdyaXRpbmcgdGVzdHMsIG1ha2UgYSBuZXcgIlNoZWxsIFRvb2wiIHRh
cmdldC4gVGhpcyB0YXJnZXQgdGVtcGxhdGUgaXMgYXZhaWxhYmxlIHVuZGVyIEJTRCwgQ29jb2Es
IG9yIENhcmJvbi4gQWRkIHlvdXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRvIHRoZSAiQ29tcGls
ZSBTb3VyY2VzIiBidWlsZCBwaGFzZSBvZiB0aGUgdGFyZ2V0LgorCitOZXh0LCB5b3UnbGwgd2Fu
dCB0byBhZGQgZ3Rlc3QuZnJhbWV3b3JrIGluIHR3byBkaWZmZXJlbnQgd2F5cywgZGVwZW5kaW5n
IHVwb24gd2hpY2ggb3B0aW9uIHlvdSBjaG9zZSBhYm92ZS4KKworICAqICoqT3B0aW9uIDEqKiAt
LS0gRHVyaW5nIGNvbXBpbGF0aW9uLCBYY29kZSB3aWxsIG5lZWQgdG8ga25vdyB0aGF0IHlvdSBh
cmUgbGlua2luZyBhZ2FpbnN0IHRoZSBndGVzdC5mcmFtZXdvcmsuIEFkZCB0aGUgZ3Rlc3QuZnJh
bWV3b3JrIHRvIHRoZSAiTGluayBCaW5hcnkgd2l0aCBMaWJyYXJpZXMiIGJ1aWxkIHBoYXNlIG9m
IHlvdXIgdGVzdCB0YXJnZXQuIFRoaXMgd2lsbCBpbmNsdWRlIHRoZSBHb29nbGUgVGVzdCBoZWFk
ZXJzIGluIHlvdXIgaGVhZGVyIHNlYXJjaCBwYXRoLCBhbmQgd2lsbCB0ZWxsIHRoZSBsaW5rZXIg
d2hlcmUgdG8gZmluZCB0aGUgbGlicmFyeS4KKyAgKiAqKk9wdGlvbiAyKiogLS0tIElmIHlvdXIg
d29ya2luZyBvdXQgb2YgdGhlIHRydW5rLCB5b3UnbGwgYWxzbyB3YW50IHRvIGFkZCBndGVzdC5m
cmFtZXdvcmsgdG8geW91ciAiTGluayBCaW5hcnkgd2l0aCBMaWJyYXJpZXMiIGJ1aWxkIHBoYXNl
IG9mIHlvdXIgdGVzdCB0YXJnZXQuIEluIGFkZGl0aW9uLCB5b3UnbGwgIHdhbnQgdG8gYWRkIHRo
ZSBndGVzdC5mcmFtZXdvcmsgYXMgYSBkZXBlbmRlbmN5IHRvIHlvdXIgdW5pdCB0ZXN0IHRhcmdl
dC4gVGhpcyB3YXksIFhjb2RlIHdpbGwgbWFrZSBzdXJlIHRoYXQgZ3Rlc3QuZnJhbWV3b3JrIGlz
IHVwIHRvIGRhdGUsIGV2ZXJ5IHRpbWUgeW91ciBidWlsZCB5b3VyIHRhcmdldC4gRmluYWxseSwg
aWYgeW91IGRvbid0IHNoYXJlIGJ1aWxkIGRpcmVjdG9yaWVzIHdpdGggR29vZ2xlIFRlc3QsIHlv
dSdsbCBoYXZlIHRvIGNvcHkgdGhlIGd0ZXN0LmZyYW1ld29yayBpbnRvIHlvdXIgb3duIGJ1aWxk
IHByb2R1Y3RzIGRpcmVjdG9yeSB1c2luZyBhICJSdW4gU2NyaXB0IiBidWlsZCBwaGFzZS4KKwor
IyBTZXQgVXAgdGhlIEV4ZWN1dGFibGUgUnVuIEVudmlyb25tZW50ICMKKworU2luY2UgdGhlIHVu
aXQgdGVzdCBleGVjdXRhYmxlIGlzIGEgc2hlbGwgdG9vbCwgaXQgZG9lc24ndCBoYXZlIGEgYnVu
ZGxlIHdpdGggYSBgQ29udGVudHMvRnJhbWV3b3Jrc2AgZGlyZWN0b3J5LCBpbiB3aGljaCB0byBw
bGFjZSBndGVzdC5mcmFtZXdvcmsuIEluc3RlYWQsIHRoZSBkeW5hbWljIGxpbmtlciBtdXN0IGJl
IHRvbGQgYXQgcnVudGltZSB0byBzZWFyY2ggZm9yIHRoZSBmcmFtZXdvcmsgaW4gYW5vdGhlciBs
b2NhdGlvbi4gVGhpcyBjYW4gYmUgYWNjb21wbGlzaGVkIGJ5IHNldHRpbmcgdGhlICJEWUxEXF9G
UkFNRVdPUktcX1BBVEgiIGVudmlyb25tZW50IHZhcmlhYmxlIGluIHRoZSAiRWRpdCBBY3RpdmUg
RXhlY3V0YWJsZSAuLi4iIEFyZ3VtZW50cyB0YWIsIHVuZGVyICJWYXJpYWJsZXMgdG8gYmUgc2V0
IGluIHRoZSBlbnZpcm9ubWVudDoiLiBUaGUgcGF0aCBmb3IgdGhpcyB2YWx1ZSBpcyB0aGUgcGF0
aCAocmVsYXRpdmUgb3IgYWJzb2x1dGUpIG9mIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUg
Z3Rlc3QuZnJhbWV3b3JrLgorCitJZiB5b3UgaGF2ZW4ndCBzZXQgdXAgdGhlIERZTERcX0ZSQU1F
V09SS1xfUEFUSCwgY29ycmVjdGx5LCB5b3UgbWlnaHQgZ2V0IGEgbWVzc2FnZSBsaWtlIHRoaXM6
CisKK2BgYAorW1Nlc3Npb24gc3RhcnRlZCBhdCAyMDA4LTA4LTE1IDA2OjIzOjU3IC0wNjAwLl0K
KyAgZHlsZDogTGlicmFyeSBub3QgbG9hZGVkOiBAbG9hZGVyX3BhdGgvLi4vRnJhbWV3b3Jrcy9n
dGVzdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9ndGVzdAorICAgIFJlZmVyZW5jZWQgZnJvbTogL1Vz
ZXJzL3VzZXJuYW1lL0RvY3VtZW50cy9TYW5kYm94L2d0ZXN0U2FtcGxlL2J1aWxkL0RlYnVnL1dp
ZGdldEZyYW1ld29ya1Rlc3QKKyAgICBSZWFzb246IGltYWdlIG5vdCBmb3VuZAorYGBgCisKK1Rv
IGNvcnJlY3QgdGhpcyBwcm9ibGVtLCBnbyB0byB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcg
dGhlIGV4ZWN1dGFibGUgbmFtZWQgaW4gIlJlZmVyZW5jZWQgZnJvbToiIHZhbHVlIGluIHRoZSBl
cnJvciBtZXNzYWdlIGFib3ZlLiBUaGVuLCB3aXRoIHRoZSB0ZXJtaW5hbCBpbiB0aGlzIGxvY2F0
aW9uLCBmaW5kIHRoZSByZWxhdGl2ZSBwYXRoIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0
aGUgZ3Rlc3QuZnJhbWV3b3JrLiBUaGF0IGlzIHRoZSB2YWx1ZSB5b3UnbGwgbmVlZCB0byBzZXQg
YXMgdGhlIERZTERcX0ZSQU1FV09SS1xfUEFUSC4KKworIyBCdWlsZCBhbmQgR28gIworCitOb3cs
IHdoZW4geW91IGNsaWNrICJCdWlsZCBhbmQgR28iLCB0aGUgdGVzdCB3aWxsIGJlIGV4ZWN1dGVk
LiBEdW1waW5nIG91dCBzb21ldGhpbmcgbGlrZSB0aGlzOgorCitgYGAKK1tTZXNzaW9uIHN0YXJ0
ZWQgYXQgMjAwOC0wOC0wNiAwNjozNjoxMyAtMDYwMC5dCitbPT09PT09PT09PV0gUnVubmluZyAy
IHRlc3RzIGZyb20gMSB0ZXN0IGNhc2UuCitbLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJv
bm1lbnQgc2V0LXVwLgorWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBXaWRnZXRJbml0aWFsaXpl
clRlc3QKK1sgUlVOICAgICAgXSBXaWRnZXRJbml0aWFsaXplclRlc3QuVGVzdENvbnN0cnVjdG9y
CitbICAgICAgIE9LIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb25zdHJ1Y3RvcgorWyBS
VU4gICAgICBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29udmVyc2lvbgorWyAgICAgICBP
SyBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29udmVyc2lvbgorWy0tLS0tLS0tLS1dIEds
b2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgorWz09PT09PT09PT1dIDIgdGVzdHMgZnJv
bSAxIHRlc3QgY2FzZSByYW4uCitbICBQQVNTRUQgIF0gMiB0ZXN0cy4KKworVGhlIERlYnVnZ2Vy
IGhhcyBleGl0ZWQgd2l0aCBzdGF0dXMgMC4gIAorYGBgCisKKyMgU3VtbWFyeSAjCisKK1VuaXQg
dGVzdGluZyBpcyBhIHZhbHVhYmxlIHdheSB0byBlbnN1cmUgeW91ciBkYXRhIG1vZGVsIHN0YXlz
IHZhbGlkIGV2ZW4gZHVyaW5nIHJhcGlkIGRldmVsb3BtZW50IG9yIHJlZmFjdG9yaW5nLiBUaGUg
R29vZ2xlIFRlc3RpbmcgRnJhbWV3b3JrIGlzIGEgZ3JlYXQgdW5pdCB0ZXN0aW5nIGZyYW1ld29y
ayBmb3IgQyBhbmQgQysrIHdoaWNoIGludGVncmF0ZXMgd2VsbCB3aXRoIGFuIFhjb2RlIGRldmVs
b3BtZW50IGVudmlyb25tZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
ZG9jcy9hZHZhbmNlZC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvYWR2YW5jZWQu
bWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODA2NWQxOTYyMWE4YjM3ZmI3OGNiNWUwZWQxYjg2MThmZTc2MjVkMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvYWR2YW5jZWQu
bWQKQEAgLTAsMCArMSwyNTIwIEBACisjIEFkdmFuY2VkIGdvb2dsZXRlc3QgVG9waWNzCisKKwor
IyMgSW50cm9kdWN0aW9uCisKK05vdyB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIFtnb29nbGV0ZXN0
IFByaW1lcl0ocHJpbWVyLm1kKSBhbmQgbGVhcm5lZCBob3cgdG8gd3JpdGUKK3Rlc3RzIHVzaW5n
IGdvb2dsZXRlc3QsIGl0J3MgdGltZSB0byBsZWFybiBzb21lIG5ldyB0cmlja3MuIFRoaXMgZG9j
dW1lbnQgd2lsbAorc2hvdyB5b3UgbW9yZSBhc3NlcnRpb25zIGFzIHdlbGwgYXMgaG93IHRvIGNv
bnN0cnVjdCBjb21wbGV4IGZhaWx1cmUgbWVzc2FnZXMsCitwcm9wYWdhdGUgZmF0YWwgZmFpbHVy
ZXMsIHJldXNlIGFuZCBzcGVlZCB1cCB5b3VyIHRlc3QgZml4dHVyZXMsIGFuZCB1c2UgdmFyaW91
cworZmxhZ3Mgd2l0aCB5b3VyIHRlc3RzLgorCisjIyBNb3JlIEFzc2VydGlvbnMKKworVGhpcyBz
ZWN0aW9uIGNvdmVycyBzb21lIGxlc3MgZnJlcXVlbnRseSB1c2VkLCBidXQgc3RpbGwgc2lnbmlm
aWNhbnQsCithc3NlcnRpb25zLgorCisjIyMgRXhwbGljaXQgU3VjY2VzcyBhbmQgRmFpbHVyZQor
CitUaGVzZSB0aHJlZSBhc3NlcnRpb25zIGRvIG5vdCBhY3R1YWxseSB0ZXN0IGEgdmFsdWUgb3Ig
ZXhwcmVzc2lvbi4gSW5zdGVhZCwgdGhleQorZ2VuZXJhdGUgYSBzdWNjZXNzIG9yIGZhaWx1cmUg
ZGlyZWN0bHkuIExpa2UgdGhlIG1hY3JvcyB0aGF0IGFjdHVhbGx5IHBlcmZvcm0gYQordGVzdCwg
eW91IG1heSBzdHJlYW0gYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlIGludG8gdGhlbS4KKworYGBg
YysrCitTVUNDRUVEKCk7CitgYGAKKworR2VuZXJhdGVzIGEgc3VjY2Vzcy4gVGhpcyBkb2VzICoq
Tk9UKiogbWFrZSB0aGUgb3ZlcmFsbCB0ZXN0IHN1Y2NlZWQuIEEgdGVzdCBpcworY29uc2lkZXJl
ZCBzdWNjZXNzZnVsIG9ubHkgaWYgbm9uZSBvZiBpdHMgYXNzZXJ0aW9ucyBmYWlsIGR1cmluZyBp
dHMgZXhlY3V0aW9uLgorCitOT1RFOiBgU1VDQ0VFRCgpYCBpcyBwdXJlbHkgZG9jdW1lbnRhcnkg
YW5kIGN1cnJlbnRseSBkb2Vzbid0IGdlbmVyYXRlIGFueQordXNlci12aXNpYmxlIG91dHB1dC4g
SG93ZXZlciwgd2UgbWF5IGFkZCBgU1VDQ0VFRCgpYCBtZXNzYWdlcyB0byBnb29nbGV0ZXN0J3MK
K291dHB1dCBpbiB0aGUgZnV0dXJlLgorCitgYGBjKysKK0ZBSUwoKTsKK0FERF9GQUlMVVJFKCk7
CitBRERfRkFJTFVSRV9BVCgiZmlsZV9wYXRoIiwgbGluZV9udW1iZXIpOworYGBgCisKK2BGQUlM
KClgIGdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUsIHdoaWxlIGBBRERfRkFJTFVSRSgpYCBhbmQg
YEFERF9GQUlMVVJFX0FUKClgCitnZW5lcmF0ZSBhIG5vbmZhdGFsIGZhaWx1cmUuIFRoZXNlIGFy
ZSB1c2VmdWwgd2hlbiBjb250cm9sIGZsb3csIHJhdGhlciB0aGFuIGEKK0Jvb2xlYW4gZXhwcmVz
c2lvbiwgZGV0ZXJtaW5lcyB0aGUgdGVzdCdzIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4gRm9yIGV4YW1w
bGUsIHlvdQorbWlnaHQgd2FudCB0byB3cml0ZSBzb21ldGhpbmcgbGlrZToKKworYGBgYysrCitz
d2l0Y2goZXhwcmVzc2lvbikgeworICBjYXNlIDE6CisgICAgIC4uLiBzb21lIGNoZWNrcyAuLi4K
KyAgY2FzZSAyOgorICAgICAuLi4gc29tZSBvdGhlciBjaGVja3MgLi4uCisgIGRlZmF1bHQ6Cisg
ICAgIEZBSUwoKSA8PCAiV2Ugc2hvdWxkbid0IGdldCBoZXJlLiI7Cit9CitgYGAKKworTk9URTog
eW91IGNhbiBvbmx5IHVzZSBgRkFJTCgpYCBpbiBmdW5jdGlvbnMgdGhhdCByZXR1cm4gYHZvaWRg
LiBTZWUgdGhlCitbQXNzZXJ0aW9uIFBsYWNlbWVudCBzZWN0aW9uXSgjYXNzZXJ0aW9uLXBsYWNl
bWVudCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBX
aW5kb3dzLCBNYWMuCisKKyMjIyBFeGNlcHRpb24gQXNzZXJ0aW9ucworCitUaGVzZSBhcmUgZm9y
IHZlcmlmeWluZyB0aGF0IGEgcGllY2Ugb2YgY29kZSB0aHJvd3MgKG9yIGRvZXMgbm90IHRocm93
KSBhbgorZXhjZXB0aW9uIG9mIHRoZSBnaXZlbiB0eXBlOgorCitGYXRhbCBhc3NlcnRpb24gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAg
ICAgICAgICAgICAgfCBWZXJpZmllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwg
LS0tLS0tLS0KK2BBU1NFUlRfVEhST1coc3RhdGVtZW50LCBleGNlcHRpb25fdHlwZSk7YCB8IGBF
WFBFQ1RfVEhST1coc3RhdGVtZW50LCBleGNlcHRpb25fdHlwZSk7YCB8IGBzdGF0ZW1lbnRgIHRo
cm93cyBhbiBleGNlcHRpb24gb2YgdGhlIGdpdmVuIHR5cGUKK2BBU1NFUlRfQU5ZX1RIUk9XKHN0
YXRlbWVudCk7YCAgICAgICAgICAgICB8IGBFWFBFQ1RfQU5ZX1RIUk9XKHN0YXRlbWVudCk7YCAg
ICAgICAgICAgICB8IGBzdGF0ZW1lbnRgIHRocm93cyBhbiBleGNlcHRpb24gb2YgYW55IHR5cGUK
K2BBU1NFUlRfTk9fVEhST1coc3RhdGVtZW50KTtgICAgICAgICAgICAgICB8IGBFWFBFQ1RfTk9f
VEhST1coc3RhdGVtZW50KTtgICAgICAgICAgICAgICB8IGBzdGF0ZW1lbnRgIGRvZXNuJ3QgdGhy
b3cgYW55IGV4Y2VwdGlvbgorCitFeGFtcGxlczoKKworYGBgYysrCitBU1NFUlRfVEhST1coRm9v
KDUpLCBiYXJfZXhjZXB0aW9uKTsKKworRVhQRUNUX05PX1RIUk9XKHsKKyAgaW50IG4gPSA1Owor
ICBCYXIoJm4pOworfSk7CitgYGAKKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3Ms
IE1hYzsgcmVxdWlyZXMgZXhjZXB0aW9ucyB0byBiZSBlbmFibGVkIGluIHRoZQorYnVpbGQgZW52
aXJvbm1lbnQgKG5vdGUgdGhhdCBgZ29vZ2xlM2AgKipkaXNhYmxlcyoqIGV4Y2VwdGlvbnMpLgor
CisjIyMgUHJlZGljYXRlIEFzc2VydGlvbnMgZm9yIEJldHRlciBFcnJvciBNZXNzYWdlcworCitF
dmVuIHRob3VnaCBnb29nbGV0ZXN0IGhhcyBhIHJpY2ggc2V0IG9mIGFzc2VydGlvbnMsIHRoZXkg
Y2FuIG5ldmVyIGJlIGNvbXBsZXRlLAorYXMgaXQncyBpbXBvc3NpYmxlIChub3IgYSBnb29kIGlk
ZWEpIHRvIGFudGljaXBhdGUgYWxsIHNjZW5hcmlvcyBhIHVzZXIgbWlnaHQKK3J1biBpbnRvLiBU
aGVyZWZvcmUsIHNvbWV0aW1lcyBhIHVzZXIgaGFzIHRvIHVzZSBgRVhQRUNUX1RSVUUoKWAgdG8g
Y2hlY2sgYQorY29tcGxleCBleHByZXNzaW9uLCBmb3IgbGFjayBvZiBhIGJldHRlciBtYWNyby4g
VGhpcyBoYXMgdGhlIHByb2JsZW0gb2Ygbm90CitzaG93aW5nIHlvdSB0aGUgdmFsdWVzIG9mIHRo
ZSBwYXJ0cyBvZiB0aGUgZXhwcmVzc2lvbiwgbWFraW5nIGl0IGhhcmQgdG8KK3VuZGVyc3RhbmQg
d2hhdCB3ZW50IHdyb25nLiBBcyBhIHdvcmthcm91bmQsIHNvbWUgdXNlcnMgY2hvb3NlIHRvIGNv
bnN0cnVjdCB0aGUKK2ZhaWx1cmUgbWVzc2FnZSBieSB0aGVtc2VsdmVzLCBzdHJlYW1pbmcgaXQg
aW50byBgRVhQRUNUX1RSVUUoKWAuIEhvd2V2ZXIsIHRoaXMKK2lzIGF3a3dhcmQgZXNwZWNpYWxs
eSB3aGVuIHRoZSBleHByZXNzaW9uIGhhcyBzaWRlLWVmZmVjdHMgb3IgaXMgZXhwZW5zaXZlIHRv
CitldmFsdWF0ZS4KKworZ29vZ2xldGVzdCBnaXZlcyB5b3UgdGhyZWUgZGlmZmVyZW50IG9wdGlv
bnMgdG8gc29sdmUgdGhpcyBwcm9ibGVtOgorCisjIyMjIFVzaW5nIGFuIEV4aXN0aW5nIEJvb2xl
YW4gRnVuY3Rpb24KKworSWYgeW91IGFscmVhZHkgaGF2ZSBhIGZ1bmN0aW9uIG9yIGZ1bmN0b3Ig
dGhhdCByZXR1cm5zIGBib29sYCAob3IgYSB0eXBlIHRoYXQKK2NhbiBiZSBpbXBsaWNpdGx5IGNv
bnZlcnRlZCB0byBgYm9vbGApLCB5b3UgY2FuIHVzZSBpdCBpbiBhICpwcmVkaWNhdGUKK2Fzc2Vy
dGlvbiogdG8gZ2V0IHRoZSBmdW5jdGlvbiBhcmd1bWVudHMgcHJpbnRlZCBmb3IgZnJlZToKKwor
fCBGYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9u
ICAgICAgICAgICAgICAgICB8IFZlcmlmaWVzICAgICAgICAgICAgICAgICAgICB8Cit8IC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKK3wgYEFTU0VSVF9QUkVE
MShwcmVkMSwgdmFsMSk7YCAgICAgICB8IGBFWFBFQ1RfUFJFRDEocHJlZDEsIHZhbDEpO2AgICAg
ICAgfCBgcHJlZDEodmFsMSlgIGlzIHRydWUgICAgICAgfAorfCBgQVNTRVJUX1BSRUQyKHByZWQy
LCB2YWwxLCB2YWwyKTtgIHwgYEVYUEVDVF9QUkVEMihwcmVkMiwgdmFsMSwgdmFsMik7YCB8IGBw
cmVkMih2YWwxLCB2YWwyKWAgaXMgdHJ1ZSB8Cit8IGAuLi5gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCBgLi4uYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgLi4uICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKKworSW4gdGhlIGFib3ZlLCBgcHJlZG5gIGlzIGFuIGBuYC1h
cnkgcHJlZGljYXRlIGZ1bmN0aW9uIG9yIGZ1bmN0b3IsIHdoZXJlIGB2YWwxYCwKK2B2YWwyYCwg
Li4uLCBhbmQgYHZhbG5gIGFyZSBpdHMgYXJndW1lbnRzLiBUaGUgYXNzZXJ0aW9uIHN1Y2NlZWRz
IGlmIHRoZQorcHJlZGljYXRlIHJldHVybnMgYHRydWVgIHdoZW4gYXBwbGllZCB0byB0aGUgZ2l2
ZW4gYXJndW1lbnRzLCBhbmQgZmFpbHMKK290aGVyd2lzZS4gV2hlbiB0aGUgYXNzZXJ0aW9uIGZh
aWxzLCBpdCBwcmludHMgdGhlIHZhbHVlIG9mIGVhY2ggYXJndW1lbnQuIEluCitlaXRoZXIgY2Fz
ZSwgdGhlIGFyZ3VtZW50cyBhcmUgZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4KKworSGVyZSdzIGFu
IGV4YW1wbGUuIEdpdmVuCisKK2BgYGMrKworLy8gUmV0dXJucyB0cnVlIGlmIG0gYW5kIG4gaGF2
ZSBubyBjb21tb24gZGl2aXNvcnMgZXhjZXB0IDEuCitib29sIE11dHVhbGx5UHJpbWUoaW50IG0s
IGludCBuKSB7IC4uLiB9CisKK2NvbnN0IGludCBhID0gMzsKK2NvbnN0IGludCBiID0gNDsKK2Nv
bnN0IGludCBjID0gMTA7CitgYGAKKwordGhlIGFzc2VydGlvbgorCitgYGBjKysKKyAgRVhQRUNU
X1BSRUQyKE11dHVhbGx5UHJpbWUsIGEsIGIpOworYGBgCisKK3dpbGwgc3VjY2VlZCwgd2hpbGUg
dGhlIGFzc2VydGlvbgorCitgYGBjKysKKyAgRVhQRUNUX1BSRUQyKE11dHVhbGx5UHJpbWUsIGIs
IGMpOworYGBgCisKK3dpbGwgZmFpbCB3aXRoIHRoZSBtZXNzYWdlCisKK2BgYG5vbmUKK011dHVh
bGx5UHJpbWUoYiwgYykgaXMgZmFsc2UsIHdoZXJlCitiIGlzIDQKK2MgaXMgMTAKK2BgYAorCis+
IE5PVEU6Cis+Cis+IDEuICBJZiB5b3Ugc2VlIGEgY29tcGlsZXIgZXJyb3IgIm5vIG1hdGNoaW5n
IGZ1bmN0aW9uIHRvIGNhbGwiIHdoZW4gdXNpbmcKKz4gICAgIGBBU1NFUlRfUFJFRCpgIG9yIGBF
WFBFQ1RfUFJFRCpgLCBwbGVhc2Ugc2VlCis+ICAgICBbdGhpc10oZmFxLm1kI092ZXJsb2FkZWRQ
cmVkaWNhdGUpIGZvciBob3cgdG8gcmVzb2x2ZSBpdC4KKz4gMS4gIEN1cnJlbnRseSB3ZSBvbmx5
IHByb3ZpZGUgcHJlZGljYXRlIGFzc2VydGlvbnMgb2YgYXJpdHkgPD0gNS4gSWYgeW91IG5lZWQK
Kz4gICAgIGEgaGlnaGVyLWFyaXR5IGFzc2VydGlvbiwgbGV0IFt1c10oaHR0cHM6Ly9naXRodWIu
Y29tL2dvb2dsZS9nb29nbGV0ZXN0L2lzc3Vlcykga25vdy4KKworKipBdmFpbGFiaWxpdHkqKjog
TGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIyBVc2luZyBhIEZ1bmN0aW9uIFRoYXQgUmV0dXJu
cyBhbiBBc3NlcnRpb25SZXN1bHQKKworV2hpbGUgYEVYUEVDVF9QUkVEKigpYCBhbmQgZnJpZW5k
cyBhcmUgaGFuZHkgZm9yIGEgcXVpY2sgam9iLCB0aGUgc3ludGF4IGlzIG5vdAorc2F0aXNmYWN0
b3J5OiB5b3UgaGF2ZSB0byB1c2UgZGlmZmVyZW50IG1hY3JvcyBmb3IgZGlmZmVyZW50IGFyaXRp
ZXMsIGFuZCBpdAorZmVlbHMgbW9yZSBsaWtlIExpc3AgdGhhbiBDKysuIFRoZSBgOjp0ZXN0aW5n
OjpBc3NlcnRpb25SZXN1bHRgIGNsYXNzIHNvbHZlcwordGhpcyBwcm9ibGVtLgorCitBbiBgQXNz
ZXJ0aW9uUmVzdWx0YCBvYmplY3QgcmVwcmVzZW50cyB0aGUgcmVzdWx0IG9mIGFuIGFzc2VydGlv
biAod2hldGhlciBpdCdzCithIHN1Y2Nlc3Mgb3IgYSBmYWlsdXJlLCBhbmQgYW4gYXNzb2NpYXRl
ZCBtZXNzYWdlKS4gWW91IGNhbiBjcmVhdGUgYW4KK2BBc3NlcnRpb25SZXN1bHRgIHVzaW5nIG9u
ZSBvZiB0aGVzZSBmYWN0b3J5IGZ1bmN0aW9uczoKKworYGBgYysrCituYW1lc3BhY2UgdGVzdGlu
ZyB7CisKKy8vIFJldHVybnMgYW4gQXNzZXJ0aW9uUmVzdWx0IG9iamVjdCB0byBpbmRpY2F0ZSB0
aGF0IGFuIGFzc2VydGlvbiBoYXMKKy8vIHN1Y2NlZWRlZC4KK0Fzc2VydGlvblJlc3VsdCBBc3Nl
cnRpb25TdWNjZXNzKCk7CisKKy8vIFJldHVybnMgYW4gQXNzZXJ0aW9uUmVzdWx0IG9iamVjdCB0
byBpbmRpY2F0ZSB0aGF0IGFuIGFzc2VydGlvbiBoYXMKKy8vIGZhaWxlZC4KK0Fzc2VydGlvblJl
c3VsdCBBc3NlcnRpb25GYWlsdXJlKCk7CisKK30KK2BgYAorCitZb3UgY2FuIHRoZW4gdXNlIHRo
ZSBgPDxgIG9wZXJhdG9yIHRvIHN0cmVhbSBtZXNzYWdlcyB0byB0aGUgYEFzc2VydGlvblJlc3Vs
dGAKK29iamVjdC4KKworVG8gcHJvdmlkZSBtb3JlIHJlYWRhYmxlIG1lc3NhZ2VzIGluIEJvb2xl
YW4gYXNzZXJ0aW9ucyAoZS5nLiBgRVhQRUNUX1RSVUUoKWApLAord3JpdGUgYSBwcmVkaWNhdGUg
ZnVuY3Rpb24gdGhhdCByZXR1cm5zIGBBc3NlcnRpb25SZXN1bHRgIGluc3RlYWQgb2YgYGJvb2xg
LiBGb3IKK2V4YW1wbGUsIGlmIHlvdSBkZWZpbmUgYElzRXZlbigpYCBhczoKKworYGBgYysrCis6
OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBJc0V2ZW4oaW50IG4pIHsKKyAgaWYgKChuICUgMikg
PT0gMCkKKyAgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOworICBlbHNl
CisgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMg
b2RkIjsKK30KK2BgYAorCitpbnN0ZWFkIG9mOgorCitgYGBjKysKK2Jvb2wgSXNFdmVuKGludCBu
KSB7CisgIHJldHVybiAobiAlIDIpID09IDA7Cit9CitgYGAKKwordGhlIGZhaWxlZCBhc3NlcnRp
b24gYEVYUEVDVF9UUlVFKElzRXZlbihGaWIoNCkpKWAgd2lsbCBwcmludDoKKworYGBgbm9uZQor
VmFsdWUgb2Y6IElzRXZlbihGaWIoNCkpCisgIEFjdHVhbDogZmFsc2UgKDMgaXMgb2RkKQorRXhw
ZWN0ZWQ6IHRydWUKK2BgYAorCitpbnN0ZWFkIG9mIGEgbW9yZSBvcGFxdWUKKworYGBgbm9uZQor
VmFsdWUgb2Y6IElzRXZlbihGaWIoNCkpCisgIEFjdHVhbDogZmFsc2UKK0V4cGVjdGVkOiB0cnVl
CitgYGAKKworSWYgeW91IHdhbnQgaW5mb3JtYXRpdmUgbWVzc2FnZXMgaW4gYEVYUEVDVF9GQUxT
RWAgYW5kIGBBU1NFUlRfRkFMU0VgIGFzIHdlbGwKKyhvbmUgdGhpcmQgb2YgQm9vbGVhbiBhc3Nl
cnRpb25zIGluIHRoZSBHb29nbGUgY29kZSBiYXNlIGFyZSBuZWdhdGl2ZSBvbmVzKSwgYW5kCith
cmUgZmluZSB3aXRoIG1ha2luZyB0aGUgcHJlZGljYXRlIHNsb3dlciBpbiB0aGUgc3VjY2VzcyBj
YXNlLCB5b3UgY2FuIHN1cHBseSBhCitzdWNjZXNzIG1lc3NhZ2U6CisKK2BgYGMrKworOjp0ZXN0
aW5nOjpBc3NlcnRpb25SZXN1bHQgSXNFdmVuKGludCBuKSB7CisgIGlmICgobiAlIDIpID09IDAp
CisgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKSA8PCBuIDw8ICIgaXMg
ZXZlbiI7CisgIGVsc2UKKyAgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgp
IDw8IG4gPDwgIiBpcyBvZGQiOworfQorYGBgCisKK1RoZW4gdGhlIHN0YXRlbWVudCBgRVhQRUNU
X0ZBTFNFKElzRXZlbihGaWIoNikpKWAgd2lsbCBwcmludAorCitgYGBub25lCisgIFZhbHVlIG9m
OiBJc0V2ZW4oRmliKDYpKQorICAgICBBY3R1YWw6IHRydWUgKDggaXMgZXZlbikKKyAgRXhwZWN0
ZWQ6IGZhbHNlCitgYGAKKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4K
KworIyMjIyBVc2luZyBhIFByZWRpY2F0ZS1Gb3JtYXR0ZXIKKworSWYgeW91IGZpbmQgdGhlIGRl
ZmF1bHQgbWVzc2FnZSBnZW5lcmF0ZWQgYnkgYChBU1NFUlR8RVhQRUNUKV9QUkVEKmAgYW5kCitg
KEFTU0VSVHxFWFBFQ1QpXyhUUlVFfEZBTFNFKWAgdW5zYXRpc2ZhY3RvcnksIG9yIHNvbWUgYXJn
dW1lbnRzIHRvIHlvdXIKK3ByZWRpY2F0ZSBkbyBub3Qgc3VwcG9ydCBzdHJlYW1pbmcgdG8gYG9z
dHJlYW1gLCB5b3UgY2FuIGluc3RlYWQgdXNlIHRoZQorZm9sbG93aW5nICpwcmVkaWNhdGUtZm9y
bWF0dGVyIGFzc2VydGlvbnMqIHRvICpmdWxseSogY3VzdG9taXplIGhvdyB0aGUgbWVzc2FnZQor
aXMgZm9ybWF0dGVkOgorCitGYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCBWZXJpZmllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IHwgLS0tLS0tLS0KK2BBU1NFUlRfUFJFRF9GT1JNQVQxKHByZWRfZm9ybWF0MSwgdmFsMSk7YCAg
ICAgICB8IGBFWFBFQ1RfUFJFRF9GT1JNQVQxKHByZWRfZm9ybWF0MSwgdmFsMSk7YCAgICAgICB8
IGBwcmVkX2Zvcm1hdDEodmFsMSlgIGlzIHN1Y2Nlc3NmdWwKK2BBU1NFUlRfUFJFRF9GT1JNQVQy
KHByZWRfZm9ybWF0MiwgdmFsMSwgdmFsMik7YCB8IGBFWFBFQ1RfUFJFRF9GT1JNQVQyKHByZWRf
Zm9ybWF0MiwgdmFsMSwgdmFsMik7YCB8IGBwcmVkX2Zvcm1hdDIodmFsMSwgdmFsMilgIGlzIHN1
Y2Nlc3NmdWwKK2AuLi5gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IGAuLi5gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IC4u
LgorCitUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIHRoZSBwcmV2aW91cyBncm91cCBv
ZiBtYWNyb3MgaXMgdGhhdCBpbnN0ZWFkIG9mCithIHByZWRpY2F0ZSwgYChBU1NFUlR8RVhQRUNU
KV9QUkVEX0ZPUk1BVCpgIHRha2UgYSAqcHJlZGljYXRlLWZvcm1hdHRlcioKKyhgcHJlZF9mb3Jt
YXRuYCksIHdoaWNoIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3RvciB3aXRoIHRoZSBzaWduYXR1cmU6
CisKK2BgYGMrKworOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZGljYXRlRm9ybWF0dGVy
bihjb25zdCBjaGFyKiBleHByMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogZXhwcjIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHBybiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVDEgdmFsMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVDIgdmFsMiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRuIHZhbG4pOworYGBgCisKK3doZXJlIGB2YWwxYCwgYHZh
bDJgLCAuLi4sIGFuZCBgdmFsbmAgYXJlIHRoZSB2YWx1ZXMgb2YgdGhlIHByZWRpY2F0ZSBhcmd1
bWVudHMsCithbmQgYGV4cHIxYCwgYGV4cHIyYCwgLi4uLCBhbmQgYGV4cHJuYCBhcmUgdGhlIGNv
cnJlc3BvbmRpbmcgZXhwcmVzc2lvbnMgYXMgdGhleQorYXBwZWFyIGluIHRoZSBzb3VyY2UgY29k
ZS4gVGhlIHR5cGVzIGBUMWAsIGBUMmAsIC4uLiwgYW5kIGBUbmAgY2FuIGJlIGVpdGhlcgordmFs
dWUgdHlwZXMgb3IgcmVmZXJlbmNlIHR5cGVzLiBGb3IgZXhhbXBsZSwgaWYgYW4gYXJndW1lbnQg
aGFzIHR5cGUgYEZvb2AsIHlvdQorY2FuIGRlY2xhcmUgaXQgYXMgZWl0aGVyIGBGb29gIG9yIGBj
b25zdCBGb28mYCwgd2hpY2hldmVyIGlzIGFwcHJvcHJpYXRlLgorCitBcyBhbiBleGFtcGxlLCBs
ZXQncyBpbXByb3ZlIHRoZSBmYWlsdXJlIG1lc3NhZ2UgaW4gYE11dHVhbGx5UHJpbWUoKWAsIHdo
aWNoIHdhcwordXNlZCB3aXRoIGBFWFBFQ1RfUFJFRDIoKWA6CisKK2BgYGMrKworLy8gUmV0dXJu
cyB0aGUgc21hbGxlc3QgcHJpbWUgY29tbW9uIGRpdmlzb3Igb2YgbSBhbmQgbiwKKy8vIG9yIDEg
d2hlbiBtIGFuZCBuIGFyZSBtdXR1YWxseSBwcmltZS4KK2ludCBTbWFsbGVzdFByaW1lQ29tbW9u
RGl2aXNvcihpbnQgbSwgaW50IG4pIHsgLi4uIH0KKworLy8gQSBwcmVkaWNhdGUtZm9ybWF0dGVy
IGZvciBhc3NlcnRpbmcgdGhhdCB0d28gaW50ZWdlcnMgYXJlIG11dHVhbGx5IHByaW1lLgorOjp0
ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgQXNzZXJ0TXV0dWFsbHlQcmltZShjb25zdCBjaGFyKiBt
X2V4cHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIG5fZXhwciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IG0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBuKSB7CisgIGlmIChNdXR1YWxseVByaW1lKG0sIG4pKSByZXR1cm4gOjp0ZXN0
aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CisKKyAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9u
RmFpbHVyZSgpIDw8IG1fZXhwciA8PCAiIGFuZCAiIDw8IG5fZXhwcgorICAgICAgPDwgIiAoIiA8
PCBtIDw8ICIgYW5kICIgPDwgbiA8PCAiKSBhcmUgbm90IG11dHVhbGx5IHByaW1lLCAiCisgICAg
ICA8PCAiYXMgdGhleSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgIiA8PCBTbWFsbGVzdFByaW1lQ29t
bW9uRGl2aXNvcihtLCBuKTsKK30KK2BgYAorCitXaXRoIHRoaXMgcHJlZGljYXRlLWZvcm1hdHRl
ciwgd2UgY2FuIHVzZQorCitgYGBjKysKKyAgRVhQRUNUX1BSRURfRk9STUFUMihBc3NlcnRNdXR1
YWxseVByaW1lLCBiLCBjKTsKK2BgYAorCit0byBnZW5lcmF0ZSB0aGUgbWVzc2FnZQorCitgYGBu
b25lCitiIGFuZCBjICg0IGFuZCAxMCkgYXJlIG5vdCBtdXR1YWxseSBwcmltZSwgYXMgdGhleSBo
YXZlIGEgY29tbW9uIGRpdmlzb3IgMi4KK2BgYAorCitBcyB5b3UgbWF5IGhhdmUgcmVhbGl6ZWQs
IG1hbnkgb2YgdGhlIGJ1aWx0LWluIGFzc2VydGlvbnMgd2UgaW50cm9kdWNlZCBlYXJsaWVyCith
cmUgc3BlY2lhbCBjYXNlcyBvZiBgKEVYUEVDVHxBU1NFUlQpX1BSRURfRk9STUFUKmAuIEluIGZh
Y3QsIG1vc3Qgb2YgdGhlbSBhcmUKK2luZGVlZCBkZWZpbmVkIHVzaW5nIGAoRVhQRUNUfEFTU0VS
VClfUFJFRF9GT1JNQVQqYC4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1h
Yy4KKworIyMjIEZsb2F0aW5nLVBvaW50IENvbXBhcmlzb24KKworQ29tcGFyaW5nIGZsb2F0aW5n
LXBvaW50IG51bWJlcnMgaXMgdHJpY2t5LiBEdWUgdG8gcm91bmQtb2ZmIGVycm9ycywgaXQgaXMg
dmVyeQordW5saWtlbHkgdGhhdCB0d28gZmxvYXRpbmctcG9pbnRzIHdpbGwgbWF0Y2ggZXhhY3Rs
eS4gVGhlcmVmb3JlLCBgQVNTRVJUX0VRYCAncworbmFpdmUgY29tcGFyaXNvbiB1c3VhbGx5IGRv
ZXNuJ3Qgd29yay4gQW5kIHNpbmNlIGZsb2F0aW5nLXBvaW50cyBjYW4gaGF2ZSBhIHdpZGUKK3Zh
bHVlIHJhbmdlLCBubyBzaW5nbGUgZml4ZWQgZXJyb3IgYm91bmQgd29ya3MuIEl0J3MgYmV0dGVy
IHRvIGNvbXBhcmUgYnkgYQorZml4ZWQgcmVsYXRpdmUgZXJyb3IgYm91bmQsIGV4Y2VwdCBmb3Ig
dmFsdWVzIGNsb3NlIHRvIDAgZHVlIHRvIHRoZSBsb3NzIG9mCitwcmVjaXNpb24gdGhlcmUuCisK
K0luIGdlbmVyYWwsIGZvciBmbG9hdGluZy1wb2ludCBjb21wYXJpc29uIHRvIG1ha2Ugc2Vuc2Us
IHRoZSB1c2VyIG5lZWRzIHRvCitjYXJlZnVsbHkgY2hvb3NlIHRoZSBlcnJvciBib3VuZC4gSWYg
dGhleSBkb24ndCB3YW50IG9yIGNhcmUgdG8sIGNvbXBhcmluZyBpbgordGVybXMgb2YgVW5pdHMg
aW4gdGhlIExhc3QgUGxhY2UgKFVMUHMpIGlzIGEgZ29vZCBkZWZhdWx0LCBhbmQgZ29vZ2xldGVz
dAorcHJvdmlkZXMgYXNzZXJ0aW9ucyB0byBkbyB0aGlzLiBGdWxsIGRldGFpbHMgYWJvdXQgVUxQ
cyBhcmUgcXVpdGUgbG9uZzsgaWYgeW91Cit3YW50IHRvIGxlYXJuIG1vcmUsIHNlZQorW2hlcmVd
KGh0dHBzOi8vcmFuZG9tYXNjaWkud29yZHByZXNzLmNvbS8yMDEyLzAyLzI1L2NvbXBhcmluZy1m
bG9hdGluZy1wb2ludC1udW1iZXJzLTIwMTItZWRpdGlvbi8pLgorCisjIyMjIEZsb2F0aW5nLVBv
aW50IE1hY3JvcworCit8IEZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgfCBOb25mYXRh
bCBhc3NlcnRpb24gICAgICAgICAgICAgfCBWZXJpZmllcyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKK3wgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gfAorfCBgQVNTRVJUX0ZMT0FUX0VRKHZhbDEsIHZhbDIpO2AgIHwgYEVYUEVDVF9G
TE9BVF9FUSh2YWwxLHZhbDIpO2AgIHwgdGhlIHR3byBgZmxvYXRgIHZhbHVlcyBhcmUgYWxtb3N0
IGVxdWFsICB8Cit8IGBBU1NFUlRfRE9VQkxFX0VRKHZhbDEsIHZhbDIpO2AgfCBgRVhQRUNUX0RP
VUJMRV9FUSh2YWwxLCB2YWwyKTtgfCB0aGUgdHdvIGBkb3VibGVgIHZhbHVlcyBhcmUgYWxtb3N0
IGVxdWFsIHwKKworQnkgImFsbW9zdCBlcXVhbCIgd2UgbWVhbiB0aGUgdmFsdWVzIGFyZSB3aXRo
aW4gNCBVTFAncyBmcm9tIGVhY2ggb3RoZXIuCisKK05PVEU6IGBDSEVDS19ET1VCTEVfRVEoKWAg
aW4gYGJhc2UvbG9nZ2luZy5oYCB1c2VzIGEgZml4ZWQgYWJzb2x1dGUgZXJyb3IgYm91bmQsCitz
byBpdHMgcmVzdWx0IG1heSBkaWZmZXIgZnJvbSB0aGF0IG9mIHRoZSBnb29nbGV0ZXN0IG1hY3Jv
cy4gVGhhdCBtYWNybyBpcwordW5zYWZlIGFuZCBoYXMgYmVlbiBkZXByZWNhdGVkLiBQbGVhc2Ug
ZG9uJ3QgdXNlIGl0IGFueSBtb3JlLgorCitUaGUgZm9sbG93aW5nIGFzc2VydGlvbnMgYWxsb3cg
eW91IHRvIGNob29zZSB0aGUgYWNjZXB0YWJsZSBlcnJvciBib3VuZDoKKworfCBGYXRhbCBhc3Nl
cnRpb24gICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgICAg
ICAgICAgICAgICB8IFZlcmlmaWVzICAgICAgICAgICAgICAgICAgfAorfCAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAorfCBgQVNTRVJUX05FQVIodmFs
MSwgdmFsMiwgYWJzX2Vycm9yKTtgIHwgYEVYUEVDVF9ORUFSKHZhbDEsIHZhbDIsIGFic19lcnJv
cik7YCB8IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYHZhbDFgIGFuZCBgdmFsMmAgZG9lc24ndCBl
eGNlZWQgdGhlIGdpdmVuIGFic29sdXRlIGVycm9yIHwKKworKipBdmFpbGFiaWxpdHkqKjogTGlu
dXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIyBGbG9hdGluZy1Qb2ludCBQcmVkaWNhdGUtRm9ybWF0
IEZ1bmN0aW9ucworCitTb21lIGZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnMgYXJlIHVzZWZ1bCwg
YnV0IG5vdCB0aGF0IG9mdGVuIHVzZWQuIEluIG9yZGVyIHRvCithdm9pZCBhbiBleHBsb3Npb24g
b2YgbmV3IG1hY3Jvcywgd2UgcHJvdmlkZSB0aGVtIGFzIHByZWRpY2F0ZS1mb3JtYXQgZnVuY3Rp
b25zCit0aGF0IGNhbiBiZSB1c2VkIGluIHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9zIChlLmcu
IGBFWFBFQ1RfUFJFRF9GT1JNQVQyYCwKK2V0YykuCisKK2BgYGMrKworRVhQRUNUX1BSRURfRk9S
TUFUMig6OnRlc3Rpbmc6OkZsb2F0TEUsIHZhbDEsIHZhbDIpOworRVhQRUNUX1BSRURfRk9STUFU
Mig6OnRlc3Rpbmc6OkRvdWJsZUxFLCB2YWwxLCB2YWwyKTsKK2BgYAorCitWZXJpZmllcyB0aGF0
IGB2YWwxYCBpcyBsZXNzIHRoYW4sIG9yIGFsbW9zdCBlcXVhbCB0bywgYHZhbDJgLiBZb3UgY2Fu
IHJlcGxhY2UKK2BFWFBFQ1RfUFJFRF9GT1JNQVQyYCBpbiB0aGUgYWJvdmUgdGFibGUgd2l0aCBg
QVNTRVJUX1BSRURfRk9STUFUMmAuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dz
LCBNYWMuCisKKyMjIyBBc3NlcnRpbmcgVXNpbmcgZ01vY2sgTWF0Y2hlcnMKKworR29vZ2xlLWRl
dmVsb3BlZCBDKysgbW9ja2luZyBmcmFtZXdvcmsgW2dNb2NrXSguLi8uLi9nb29nbGVtb2NrKSBj
b21lcyB3aXRoIGEKK2xpYnJhcnkgb2YgbWF0Y2hlcnMgZm9yIHZhbGlkYXRpbmcgYXJndW1lbnRz
IHBhc3NlZCB0byBtb2NrIG9iamVjdHMuIEEgZ01vY2sKKyptYXRjaGVyKiBpcyBiYXNpY2FsbHkg
YSBwcmVkaWNhdGUgdGhhdCBrbm93cyBob3cgdG8gZGVzY3JpYmUgaXRzZWxmLiBJdCBjYW4gYmUK
K3VzZWQgaW4gdGhlc2UgYXNzZXJ0aW9uIG1hY3JvczoKKworfCBGYXRhbCBhc3NlcnRpb24gICAg
ICAgICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgfCBWZXJpZmllcyAg
ICAgICAgICAgICAgfAorfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAorfCBgQVNT
RVJUX1RIQVQodmFsdWUsIG1hdGNoZXIpO2AgfCBgRVhQRUNUX1RIQVQodmFsdWUsIG1hdGNoZXIp
O2AgfCB2YWx1ZSBtYXRjaGVzIG1hdGNoZXIgfAorCitGb3IgZXhhbXBsZSwgYFN0YXJ0c1dpdGgo
cHJlZml4KWAgaXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIHN0cmluZyBzdGFydGluZword2l0
aCBgcHJlZml4YCwgYW5kIHlvdSBjYW4gd3JpdGU6CisKK2BgYGMrKwordXNpbmcgOjp0ZXN0aW5n
OjpTdGFydHNXaXRoOworLi4uCisgICAgLy8gVmVyaWZpZXMgdGhhdCBGb28oKSByZXR1cm5zIGEg
c3RyaW5nIHN0YXJ0aW5nIHdpdGggIkhlbGxvIi4KKyAgICBFWFBFQ1RfVEhBVChGb28oKSwgU3Rh
cnRzV2l0aCgiSGVsbG8iKSk7CitgYGAKKworUmVhZCB0aGlzIFtyZWNpcGVdKC4uLy4uL2dvb2ds
ZW1vY2svZG9jcy9Db29rQm9vay5tZCN1c2luZy1tYXRjaGVycy1pbi1nb29nbGUtdGVzdC1hc3Nl
cnRpb25zKSBpbgordGhlIGdNb2NrIENvb2tib29rIGZvciBtb3JlIGRldGFpbHMuCisKK2dNb2Nr
IGhhcyBhIHJpY2ggc2V0IG9mIG1hdGNoZXJzLiBZb3UgY2FuIGRvIG1hbnkgdGhpbmdzIGdvb2ds
ZXRlc3QgY2Fubm90IGRvCithbG9uZSB3aXRoIHRoZW0uIEZvciBhIGxpc3Qgb2YgbWF0Y2hlcnMg
Z01vY2sgcHJvdmlkZXMsIHJlYWQKK1t0aGlzXSguLi8uLi9nb29nbGVtb2NrL2RvY3MvQ29va0Jv
b2subWQjdXNpbmctbWF0Y2hlcnMpLiBFc3BlY2lhbGx5IHVzZWZ1bCBhbW9uZyB0aGVtIGFyZQor
c29tZSBbcHJvdG9jb2wgYnVmZmVyIG1hdGNoZXJzXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xl
L251Y2xldXMvYmxvYi9tYXN0ZXIvbnVjbGV1cy90ZXN0aW5nL3Byb3RvY29sLWJ1ZmZlci1tYXRj
aGVycy5oKS4gSXQncyBlYXN5IHRvIHdyaXRlCit5b3VyIFtvd24gbWF0Y2hlcnNdKC4uLy4uL2dv
b2dsZW1vY2svZG9jcy9Db29rQm9vay5tZCN3cml0aW5nLW5ldy1tYXRjaGVycy1xdWlja2x5KSB0
b28uCisKK0ZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSBnTW9jaydzCitbRXF1YWxzUHJvdG9dKGh0
dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvbnVjbGV1cy9ibG9iL21hc3Rlci9udWNsZXVzL3Rlc3Rp
bmcvcHJvdG9jb2wtYnVmZmVyLW1hdGNoZXJzLmgpCit0byBjb21wYXJlIHByb3RvcyBpbiB5b3Vy
IHRlc3RzOgorCitgYGBjKysKKyNpbmNsdWRlICJ0ZXN0aW5nL2Jhc2UvcHVibGljL2dtb2NrLmgi
Cit1c2luZyA6OnRlc3Rpbmc6OkVxdWFsc1Byb3RvOworLi4uCisgICAgRVhQRUNUX1RIQVQoYWN0
dWFsX3Byb3RvLCBFcXVhbHNQcm90bygiZm9vOiAxMjMgYmFyOiAneHl6JyIpKTsKKyAgICBFWFBF
Q1RfVEhBVCgqYWN0dWFsX3Byb3RvX3B0ciwgRXF1YWxzUHJvdG8oZXhwZWN0ZWRfcHJvdG8pKTsK
K2BgYAorCitnTW9jayBpcyBidW5kbGVkIHdpdGggZ29vZ2xldGVzdCwgc28geW91IGRvbid0IG5l
ZWQgdG8gYWRkIGFueSBidWlsZCBkZXBlbmRlbmN5CitpbiBvcmRlciB0byB0YWtlIGFkdmFudGFn
ZSBvZiB0aGlzLiBKdXN0IGluY2x1ZGUgYCJ0ZXN0aW5nL2Jhc2UvcHVibGljL2dtb2NrLmgiYAor
YW5kIHlvdSdyZSByZWFkeSB0byBnby4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRv
d3MsIGFuZCBNYWMuCisKKyMjIyBNb3JlIFN0cmluZyBBc3NlcnRpb25zCisKKyhQbGVhc2UgcmVh
ZCB0aGUgW3ByZXZpb3VzXSgjQXNzZXJ0VGhhdCkgc2VjdGlvbiBmaXJzdCBpZiB5b3UgaGF2ZW4n
dC4pCisKK1lvdSBjYW4gdXNlIHRoZSBnTW9jayBbc3RyaW5nIG1hdGNoZXJzXSguLi8uLi9nb29n
bGVtb2NrL2RvY3MvQ2hlYXRTaGVldC5tZCNzdHJpbmctbWF0Y2hlcnMpCit3aXRoIGBFWFBFQ1Rf
VEhBVCgpYCBvciBgQVNTRVJUX1RIQVQoKWAgdG8gZG8gbW9yZSBzdHJpbmcgY29tcGFyaXNvbiB0
cmlja3MKKyhzdWItc3RyaW5nLCBwcmVmaXgsIHN1ZmZpeCwgcmVndWxhciBleHByZXNzaW9uLCBh
bmQgZXRjKS4gRm9yIGV4YW1wbGUsCisKK2BgYGMrKwordXNpbmcgOjp0ZXN0aW5nOjpIYXNTdWJz
dHI7Cit1c2luZyA6OnRlc3Rpbmc6Ok1hdGNoZXNSZWdleDsKKy4uLgorICBBU1NFUlRfVEhBVChm
b29fc3RyaW5nLCBIYXNTdWJzdHIoIm5lZWRsZSIpKTsKKyAgRVhQRUNUX1RIQVQoYmFyX3N0cmlu
ZywgTWF0Y2hlc1JlZ2V4KCJcXHcqXFxkKyIpKTsKK2BgYAorCisqKkF2YWlsYWJpbGl0eSoqOiBM
aW51eCwgV2luZG93cywgTWFjLgorCitJZiB0aGUgc3RyaW5nIGNvbnRhaW5zIGEgd2VsbC1mb3Jt
ZWQgSFRNTCBvciBYTUwgZG9jdW1lbnQsIHlvdSBjYW4gY2hlY2sgd2hldGhlcgoraXRzIERPTSB0
cmVlIG1hdGNoZXMgYW4gW1hQYXRoCitleHByZXNzaW9uXShodHRwOi8vd3d3LnczLm9yZy9UUi94
cGF0aC8jY29udGVudHMpOgorCitgYGBjKysKKy8vIEN1cnJlbnRseSBzdGlsbCBpbiAvL3RlbXBs
YXRlL3Byb3RvdGVtcGxhdGUvdGVzdGluZzp4cGF0aF9tYXRjaGVyCisjaW5jbHVkZSAidGVtcGxh
dGUvcHJvdG90ZW1wbGF0ZS90ZXN0aW5nL3hwYXRoX21hdGNoZXIuaCIKK3VzaW5nIHByb3RvdGVt
cGxhdGU6OnRlc3Rpbmc6Ok1hdGNoZXNYUGF0aDsKK0VYUEVDVF9USEFUKGh0bWxfc3RyaW5nLCBN
YXRjaGVzWFBhdGgoIi8vYVt0ZXh0KCk9J2NsaWNrIGhlcmUnXSIpKTsKK2BgYAorCisqKkF2YWls
YWJpbGl0eSoqOiBMaW51eC4KKworIyMjIFdpbmRvd3MgSFJFU1VMVCBhc3NlcnRpb25zCisKK1Ro
ZXNlIGFzc2VydGlvbnMgdGVzdCBmb3IgYEhSRVNVTFRgIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4KKwor
RmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRp
b24gICAgICAgICAgICAgICAgICAgICB8IFZlcmlmaWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IHwgLS0tLS0tLS0KK2BBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoZXhwcmVzc2lvbilgIHwgYEVY
UEVDVF9IUkVTVUxUX1NVQ0NFRURFRChleHByZXNzaW9uKWAgfCBgZXhwcmVzc2lvbmAgaXMgYSBz
dWNjZXNzIGBIUkVTVUxUYAorYEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChleHByZXNzaW9uKWAgICAg
fCBgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKGV4cHJlc3Npb24pYCAgICB8IGBleHByZXNzaW9uYCBp
cyBhIGZhaWx1cmUgYEhSRVNVTFRgCisKK1RoZSBnZW5lcmF0ZWQgb3V0cHV0IGNvbnRhaW5zIHRo
ZSBodW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aAordGhlIGBIUkVT
VUxUYCBjb2RlIHJldHVybmVkIGJ5IGBleHByZXNzaW9uYC4KKworWW91IG1pZ2h0IHVzZSB0aGVt
IGxpa2UgdGhpczoKKworYGBgYysrCitDQ29tUHRyPElTaGVsbERpc3BhdGNoMj4gc2hlbGw7CitB
U1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoc2hlbGwuQ29DcmVhdGVJbnN0YW5jZShMIlNoZWxsLkFw
cGxpY2F0aW9uIikpOworQ0NvbVZhcmlhbnQgZW1wdHk7CitBU1NFUlRfSFJFU1VMVF9TVUNDRUVE
RUQoc2hlbGwtPlNoZWxsRXhlY3V0ZShDQ29tQlNUUih1cmwpLCBlbXB0eSwgZW1wdHksIGVtcHR5
LCBlbXB0eSkpOworYGBgCisKKyoqQXZhaWxhYmlsaXR5Kio6IFdpbmRvd3MuCisKKyMjIyBUeXBl
IEFzc2VydGlvbnMKKworWW91IGNhbiBjYWxsIHRoZSBmdW5jdGlvbgorCitgYGBjKysKKzo6dGVz
dGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4oKTsKK2BgYAorCit0byBhc3NlcnQgdGhh
dCB0eXBlcyBgVDFgIGFuZCBgVDJgIGFyZSB0aGUgc2FtZS4gVGhlIGZ1bmN0aW9uIGRvZXMgbm90
aGluZyBpZgordGhlIGFzc2VydGlvbiBpcyBzYXRpc2ZpZWQuIElmIHRoZSB0eXBlcyBhcmUgZGlm
ZmVyZW50LCB0aGUgZnVuY3Rpb24gY2FsbCB3aWxsCitmYWlsIHRvIGNvbXBpbGUsIGFuZCB0aGUg
Y29tcGlsZXIgZXJyb3IgbWVzc2FnZSB3aWxsIGxpa2VseSAoZGVwZW5kaW5nIG9uIHRoZQorY29t
cGlsZXIpIHNob3cgeW91IHRoZSBhY3R1YWwgdmFsdWVzIG9mIGBUMWAgYW5kIGBUMmAuIFRoaXMg
aXMgbWFpbmx5IHVzZWZ1bAoraW5zaWRlIHRlbXBsYXRlIGNvZGUuCisKKyoqQ2F2ZWF0Kio6IFdo
ZW4gdXNlZCBpbnNpZGUgYSBtZW1iZXIgZnVuY3Rpb24gb2YgYSBjbGFzcyB0ZW1wbGF0ZSBvciBh
IGZ1bmN0aW9uCit0ZW1wbGF0ZSwgYFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+KClgIGlzIGVm
ZmVjdGl2ZSBvbmx5IGlmIHRoZSBmdW5jdGlvbiBpcworaW5zdGFudGlhdGVkLiBGb3IgZXhhbXBs
ZSwgZ2l2ZW46CisKK2BgYGMrKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbyB7Cisg
cHVibGljOgorICB2b2lkIEJhcigpIHsgOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8aW50
LCBUPigpOyB9Cit9OworYGBgCisKK3RoZSBjb2RlOgorCitgYGBjKysKK3ZvaWQgVGVzdDEoKSB7
IEZvbzxib29sPiBmb287IH0KK2BgYAorCit3aWxsIG5vdCBnZW5lcmF0ZSBhIGNvbXBpbGVyIGVy
cm9yLCBhcyBgRm9vPGJvb2w+OjpCYXIoKWAgaXMgbmV2ZXIgYWN0dWFsbHkKK2luc3RhbnRpYXRl
ZC4gSW5zdGVhZCwgeW91IG5lZWQ6CisKK2BgYGMrKwordm9pZCBUZXN0MigpIHsgRm9vPGJvb2w+
IGZvbzsgZm9vLkJhcigpOyB9CitgYGAKKwordG8gY2F1c2UgYSBjb21waWxlciBlcnJvci4KKwor
KipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIEFzc2VydGlvbiBQ
bGFjZW1lbnQKKworWW91IGNhbiB1c2UgYXNzZXJ0aW9ucyBpbiBhbnkgQysrIGZ1bmN0aW9uLiBJ
biBwYXJ0aWN1bGFyLCBpdCBkb2Vzbid0IGhhdmUgdG8gYmUKK2EgbWV0aG9kIG9mIHRoZSB0ZXN0
IGZpeHR1cmUgY2xhc3MuIFRoZSBvbmUgY29uc3RyYWludCBpcyB0aGF0IGFzc2VydGlvbnMgdGhh
dAorZ2VuZXJhdGUgYSBmYXRhbCBmYWlsdXJlIChgRkFJTCpgIGFuZCBgQVNTRVJUXypgKSBjYW4g
b25seSBiZSB1c2VkIGluCit2b2lkLXJldHVybmluZyBmdW5jdGlvbnMuIFRoaXMgaXMgYSBjb25z
ZXF1ZW5jZSBvZiBHb29nbGUncyBub3QgdXNpbmcKK2V4Y2VwdGlvbnMuIEJ5IHBsYWNpbmcgaXQg
aW4gYSBub24tdm9pZCBmdW5jdGlvbiB5b3UnbGwgZ2V0IGEgY29uZnVzaW5nIGNvbXBpbGUKK2Vy
cm9yIGxpa2UgYCJlcnJvcjogdm9pZCB2YWx1ZSBub3QgaWdub3JlZCBhcyBpdCBvdWdodCB0byBi
ZSJgIG9yIGAiY2Fubm90Citpbml0aWFsaXplIHJldHVybiBvYmplY3Qgb2YgdHlwZSAnYm9vbCcg
d2l0aCBhbiBydmFsdWUgb2YgdHlwZSAndm9pZCciYCBvcgorYCJlcnJvcjogbm8gdmlhYmxlIGNv
bnZlcnNpb24gZnJvbSAndm9pZCcgdG8gJ3N0cmluZyciYC4KKworSWYgeW91IG5lZWQgdG8gdXNl
IGZhdGFsIGFzc2VydGlvbnMgaW4gYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgbm9uLXZvaWQsIG9u
ZQorb3B0aW9uIGlzIHRvIG1ha2UgdGhlIGZ1bmN0aW9uIHJldHVybiB0aGUgdmFsdWUgaW4gYW4g
b3V0IHBhcmFtZXRlciBpbnN0ZWFkLiBGb3IKK2V4YW1wbGUsIHlvdSBjYW4gcmV3cml0ZSBgVDIg
Rm9vKFQxIHgpYCB0byBgdm9pZCBGb28oVDEgeCwgVDIqIHJlc3VsdClgLiBZb3UKK25lZWQgdG8g
bWFrZSBzdXJlIHRoYXQgYCpyZXN1bHRgIGNvbnRhaW5zIHNvbWUgc2Vuc2libGUgdmFsdWUgZXZl
biB3aGVuIHRoZQorZnVuY3Rpb24gcmV0dXJucyBwcmVtYXR1cmVseS4gQXMgdGhlIGZ1bmN0aW9u
IG5vdyByZXR1cm5zIGB2b2lkYCwgeW91IGNhbiB1c2UKK2FueSBhc3NlcnRpb24gaW5zaWRlIG9m
IGl0LgorCitJZiBjaGFuZ2luZyB0aGUgZnVuY3Rpb24ncyB0eXBlIGlzIG5vdCBhbiBvcHRpb24s
IHlvdSBzaG91bGQganVzdCB1c2UgYXNzZXJ0aW9ucwordGhhdCBnZW5lcmF0ZSBub24tZmF0YWwg
ZmFpbHVyZXMsIHN1Y2ggYXMgYEFERF9GQUlMVVJFKmAgYW5kIGBFWFBFQ1RfKmAuCisKK05PVEU6
IENvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMgYXJlIG5vdCBjb25zaWRlcmVkIHZvaWQtcmV0
dXJuaW5nIGZ1bmN0aW9ucywKK2FjY29yZGluZyB0byB0aGUgQysrIGxhbmd1YWdlIHNwZWNpZmlj
YXRpb24sIGFuZCBzbyB5b3UgbWF5IG5vdCB1c2UgZmF0YWwKK2Fzc2VydGlvbnMgaW4gdGhlbS4g
WW91J2xsIGdldCBhIGNvbXBpbGF0aW9uIGVycm9yIGlmIHlvdSB0cnkuIEEgc2ltcGxlCit3b3Jr
YXJvdW5kIGlzIHRvIHRyYW5zZmVyIHRoZSBlbnRpcmUgYm9keSBvZiB0aGUgY29uc3RydWN0b3Ig
b3IgZGVzdHJ1Y3RvciB0byBhCitwcml2YXRlIHZvaWQtcmV0dXJuaW5nIG1ldGhvZC4gSG93ZXZl
ciwgeW91IHNob3VsZCBiZSBhd2FyZSB0aGF0IGEgZmF0YWwKK2Fzc2VydGlvbiBmYWlsdXJlIGlu
IGEgY29uc3RydWN0b3IgZG9lcyBub3QgdGVybWluYXRlIHRoZSBjdXJyZW50IHRlc3QsIGFzIHlv
dXIKK2ludHVpdGlvbiBtaWdodCBzdWdnZXN0OyBpdCBtZXJlbHkgcmV0dXJucyBmcm9tIHRoZSBj
b25zdHJ1Y3RvciBlYXJseSwgcG9zc2libHkKK2xlYXZpbmcgeW91ciBvYmplY3QgaW4gYSBwYXJ0
aWFsbHktY29uc3RydWN0ZWQgc3RhdGUuIExpa2V3aXNlLCBhIGZhdGFsCithc3NlcnRpb24gZmFp
bHVyZSBpbiBhIGRlc3RydWN0b3IgbWF5IGxlYXZlIHlvdXIgb2JqZWN0IGluIGEKK3BhcnRpYWxs
eS1kZXN0cnVjdGVkIHN0YXRlLiBVc2UgYXNzZXJ0aW9ucyBjYXJlZnVsbHkgaW4gdGhlc2Ugc2l0
dWF0aW9ucyEKKworIyMgVGVhY2hpbmcgZ29vZ2xldGVzdCBIb3cgdG8gUHJpbnQgWW91ciBWYWx1
ZXMKKworV2hlbiBhIHRlc3QgYXNzZXJ0aW9uIHN1Y2ggYXMgYEVYUEVDVF9FUWAgZmFpbHMsIGdv
b2dsZXRlc3QgcHJpbnRzIHRoZSBhcmd1bWVudAordmFsdWVzIHRvIGhlbHAgeW91IGRlYnVnLiBJ
dCBkb2VzIHRoaXMgdXNpbmcgYSB1c2VyLWV4dGVuc2libGUgdmFsdWUgcHJpbnRlci4KKworVGhp
cyBwcmludGVyIGtub3dzIGhvdyB0byBwcmludCBidWlsdC1pbiBDKysgdHlwZXMsIG5hdGl2ZSBh
cnJheXMsIFNUTAorY29udGFpbmVycywgYW5kIGFueSB0eXBlIHRoYXQgc3VwcG9ydHMgdGhlIGA8
PGAgb3BlcmF0b3IuIEZvciBvdGhlciB0eXBlcywgaXQKK3ByaW50cyB0aGUgcmF3IGJ5dGVzIGlu
IHRoZSB2YWx1ZSBhbmQgaG9wZXMgdGhhdCB5b3UgdGhlIHVzZXIgY2FuIGZpZ3VyZSBpdCBvdXQu
CisKK0FzIG1lbnRpb25lZCBlYXJsaWVyLCB0aGUgcHJpbnRlciBpcyAqZXh0ZW5zaWJsZSouIFRo
YXQgbWVhbnMgeW91IGNhbiB0ZWFjaCBpdAordG8gZG8gYSBiZXR0ZXIgam9iIGF0IHByaW50aW5n
IHlvdXIgcGFydGljdWxhciB0eXBlIHRoYW4gdG8gZHVtcCB0aGUgYnl0ZXMuIFRvCitkbyB0aGF0
LCBkZWZpbmUgYDw8YCBmb3IgeW91ciB0eXBlOgorCitgYGBjKysKKy8vIFN0cmVhbXMgYXJlIGFs
bG93ZWQgb25seSBmb3IgbG9nZ2luZy4gIERvbid0IGluY2x1ZGUgdGhpcyBmb3IKKy8vIGFueSBv
dGhlciBwdXJwb3NlLgorI2luY2x1ZGUgPG9zdHJlYW0+CisKK25hbWVzcGFjZSBmb28geworCitj
bGFzcyBCYXIgeyAgLy8gV2Ugd2FudCBnb29nbGV0ZXN0IHRvIGJlIGFibGUgdG8gcHJpbnQgaW5z
dGFuY2VzIG9mIHRoaXMuCisuLi4KKyAgLy8gQ3JlYXRlIGEgZnJlZSBpbmxpbmUgZnJpZW5kIGZ1
bmN0aW9uLgorICBmcmllbmQgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYg
b3MsIGNvbnN0IEJhciYgYmFyKSB7CisgICAgcmV0dXJuIG9zIDw8IGJhci5EZWJ1Z1N0cmluZygp
OyAgLy8gd2hhdGV2ZXIgbmVlZGVkIHRvIHByaW50IGJhciB0byBvcworICB9Cit9OworCisvLyBJ
ZiB5b3UgY2FuJ3QgZGVjbGFyZSB0aGUgZnVuY3Rpb24gaW4gdGhlIGNsYXNzIGl0J3MgaW1wb3J0
YW50IHRoYXQgdGhlCisvLyA8PCBvcGVyYXRvciBpcyBkZWZpbmVkIGluIHRoZSBTQU1FIG5hbWVz
cGFjZSB0aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11cAorLy8gcnVsZXMgcmVseSBvbiB0
aGF0Lgorc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IEJh
ciYgYmFyKSB7CisgIHJldHVybiBvcyA8PCBiYXIuRGVidWdTdHJpbmcoKTsgIC8vIHdoYXRldmVy
IG5lZWRlZCB0byBwcmludCBiYXIgdG8gb3MKK30KKworfSAgLy8gbmFtZXNwYWNlIGZvbworYGBg
CisKK1NvbWV0aW1lcywgdGhpcyBtaWdodCBub3QgYmUgYW4gb3B0aW9uOiB5b3VyIHRlYW0gbWF5
IGNvbnNpZGVyIGl0IGJhZCBzdHlsZSB0bworaGF2ZSBhIGA8PGAgb3BlcmF0b3IgZm9yIGBCYXJg
LCBvciBgQmFyYCBtYXkgYWxyZWFkeSBoYXZlIGEgYDw8YCBvcGVyYXRvciB0aGF0Citkb2Vzbid0
IGRvIHdoYXQgeW91IHdhbnQgKGFuZCB5b3UgY2Fubm90IGNoYW5nZSBpdCkuIElmIHNvLCB5b3Ug
Y2FuIGluc3RlYWQKK2RlZmluZSBhIGBQcmludFRvKClgIGZ1bmN0aW9uIGxpa2UgdGhpczoKKwor
YGBgYysrCisvLyBTdHJlYW1zIGFyZSBhbGxvd2VkIG9ubHkgZm9yIGxvZ2dpbmcuICBEb24ndCBp
bmNsdWRlIHRoaXMgZm9yCisvLyBhbnkgb3RoZXIgcHVycG9zZS4KKyNpbmNsdWRlIDxvc3RyZWFt
PgorCituYW1lc3BhY2UgZm9vIHsKKworY2xhc3MgQmFyIHsKKyAgLi4uCisgIGZyaWVuZCB2b2lk
IFByaW50VG8oY29uc3QgQmFyJiBiYXIsIHN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICAqb3MgPDwg
YmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3aGF0ZXZlciBuZWVkZWQgdG8gcHJpbnQgYmFyIHRvIG9z
CisgIH0KK307CisKKy8vIElmIHlvdSBjYW4ndCBkZWNsYXJlIHRoZSBmdW5jdGlvbiBpbiB0aGUg
Y2xhc3MgaXQncyBpbXBvcnRhbnQgdGhhdCBQcmludFRvKCkKKy8vIGlzIGRlZmluZWQgaW4gdGhl
IFNBTUUgbmFtZXNwYWNlIHRoYXQgZGVmaW5lcyBCYXIuICBDKysncyBsb29rLXVwIHJ1bGVzIHJl
bHkKKy8vIG9uIHRoYXQuCit2b2lkIFByaW50VG8oY29uc3QgQmFyJiBiYXIsIHN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgKm9zIDw8IGJhci5EZWJ1Z1N0cmluZygpOyAgLy8gd2hhdGV2ZXIgbmVlZGVk
IHRvIHByaW50IGJhciB0byBvcworfQorCit9ICAvLyBuYW1lc3BhY2UgZm9vCitgYGAKKworSWYg
eW91IGhhdmUgZGVmaW5lZCBib3RoIGA8PGAgYW5kIGBQcmludFRvKClgLCB0aGUgbGF0dGVyIHdp
bGwgYmUgdXNlZCB3aGVuCitnb29nbGV0ZXN0IGlzIGNvbmNlcm5lZC4gVGhpcyBhbGxvd3MgeW91
IHRvIGN1c3RvbWl6ZSBob3cgdGhlIHZhbHVlIGFwcGVhcnMgaW4KK2dvb2dsZXRlc3QncyBvdXRw
dXQgd2l0aG91dCBhZmZlY3RpbmcgY29kZSB0aGF0IHJlbGllcyBvbiB0aGUgYmVoYXZpb3Igb2Yg
aXRzCitgPDxgIG9wZXJhdG9yLgorCitJZiB5b3Ugd2FudCB0byBwcmludCBhIHZhbHVlIGB4YCB1
c2luZyBnb29nbGV0ZXN0J3MgdmFsdWUgcHJpbnRlciB5b3Vyc2VsZiwganVzdAorY2FsbCBgOjp0
ZXN0aW5nOjpQcmludFRvU3RyaW5nKHgpYCwgd2hpY2ggcmV0dXJucyBhbiBgc3RkOjpzdHJpbmdg
OgorCitgYGBjKysKK3ZlY3RvcjxwYWlyPEJhciwgaW50PiA+IGJhcl9pbnRzID0gR2V0QmFySW50
VmVjdG9yKCk7CisKK0VYUEVDVF9UUlVFKElzQ29ycmVjdEJhckludFZlY3RvcihiYXJfaW50cykp
CisgICAgPDwgImJhcl9pbnRzID0gIiA8PCA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoYmFyX2lu
dHMpOworYGBgCisKKyMjIERlYXRoIFRlc3RzCisKK0luIG1hbnkgYXBwbGljYXRpb25zLCB0aGVy
ZSBhcmUgYXNzZXJ0aW9ucyB0aGF0IGNhbiBjYXVzZSBhcHBsaWNhdGlvbiBmYWlsdXJlIGlmCith
IGNvbmRpdGlvbiBpcyBub3QgbWV0LiBUaGVzZSBzYW5pdHkgY2hlY2tzLCB3aGljaCBlbnN1cmUg
dGhhdCB0aGUgcHJvZ3JhbSBpcyBpbgorYSBrbm93biBnb29kIHN0YXRlLCBhcmUgdGhlcmUgdG8g
ZmFpbCBhdCB0aGUgZWFybGllc3QgcG9zc2libGUgdGltZSBhZnRlciBzb21lCitwcm9ncmFtIHN0
YXRlIGlzIGNvcnJ1cHRlZC4gSWYgdGhlIGFzc2VydGlvbiBjaGVja3MgdGhlIHdyb25nIGNvbmRp
dGlvbiwgdGhlbgordGhlIHByb2dyYW0gbWF5IHByb2NlZWQgaW4gYW4gZXJyb25lb3VzIHN0YXRl
LCB3aGljaCBjb3VsZCBsZWFkIHRvIG1lbW9yeQorY29ycnVwdGlvbiwgc2VjdXJpdHkgaG9sZXMs
IG9yIHdvcnNlLiBIZW5jZSBpdCBpcyB2aXRhbGx5IGltcG9ydGFudCB0byB0ZXN0IHRoYXQKK3N1
Y2ggYXNzZXJ0aW9uIHN0YXRlbWVudHMgd29yayBhcyBleHBlY3RlZC4KKworU2luY2UgdGhlc2Ug
cHJlY29uZGl0aW9uIGNoZWNrcyBjYXVzZSB0aGUgcHJvY2Vzc2VzIHRvIGRpZSwgd2UgY2FsbCBz
dWNoIHRlc3RzCitfZGVhdGggdGVzdHNfLiBNb3JlIGdlbmVyYWxseSwgYW55IHRlc3QgdGhhdCBj
aGVja3MgdGhhdCBhIHByb2dyYW0gdGVybWluYXRlcworKGV4Y2VwdCBieSB0aHJvd2luZyBhbiBl
eGNlcHRpb24pIGluIGFuIGV4cGVjdGVkIGZhc2hpb24gaXMgYWxzbyBhIGRlYXRoIHRlc3QuCisK
KworTm90ZSB0aGF0IGlmIGEgcGllY2Ugb2YgY29kZSB0aHJvd3MgYW4gZXhjZXB0aW9uLCB3ZSBk
b24ndCBjb25zaWRlciBpdCAiZGVhdGgiCitmb3IgdGhlIHB1cnBvc2Ugb2YgZGVhdGggdGVzdHMs
IGFzIHRoZSBjYWxsZXIgb2YgdGhlIGNvZGUgY291bGQgY2F0Y2ggdGhlCitleGNlcHRpb24gYW5k
IGF2b2lkIHRoZSBjcmFzaC4gSWYgeW91IHdhbnQgdG8gdmVyaWZ5IGV4Y2VwdGlvbnMgdGhyb3du
IGJ5IHlvdXIKK2NvZGUsIHNlZSBbRXhjZXB0aW9uIEFzc2VydGlvbnNdKCNleGNlcHRpb24tYXNz
ZXJ0aW9ucykuCisKK0lmIHlvdSB3YW50IHRvIHRlc3QgYEVYUEVDVF8qKCkvQVNTRVJUXyooKWAg
ZmFpbHVyZXMgaW4geW91ciB0ZXN0IGNvZGUsIHNlZQorQ2F0Y2hpbmcgRmFpbHVyZXMKKworIyMj
IEhvdyB0byBXcml0ZSBhIERlYXRoIFRlc3QKKworZ29vZ2xldGVzdCBoYXMgdGhlIGZvbGxvd2lu
ZyBtYWNyb3MgdG8gc3VwcG9ydCBkZWF0aCB0ZXN0czoKKworRmF0YWwgYXNzZXJ0aW9uICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCBWZXJpZmllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gfCAtLS0tLS0tLQorYEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KTtg
ICAgICAgICAgICAgICB8IGBFWFBFQ1RfREVBVEgoc3RhdGVtZW50LCByZWdleCk7YCAgICAgICAg
ICAgICAgfCBgc3RhdGVtZW50YCBjcmFzaGVzIHdpdGggdGhlIGdpdmVuIGVycm9yCitgQVNTRVJU
X0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KTtgIHwgYEVYUEVDVF9ERUFUSF9J
Rl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCk7YCB8IGlmIGRlYXRoIHRlc3RzIGFyZSBzdXBw
b3J0ZWQsIHZlcmlmaWVzIHRoYXQgYHN0YXRlbWVudGAgY3Jhc2hlcyB3aXRoIHRoZSBnaXZlbiBl
cnJvcjsgb3RoZXJ3aXNlIHZlcmlmaWVzIG5vdGhpbmcKK2BBU1NFUlRfRVhJVChzdGF0ZW1lbnQs
IHByZWRpY2F0ZSwgcmVnZXgpO2AgICAgfCBgRVhQRUNUX0VYSVQoc3RhdGVtZW50LCBwcmVkaWNh
dGUsIHJlZ2V4KTtgICAgIHwgYHN0YXRlbWVudGAgZXhpdHMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3Is
IGFuZCBpdHMgZXhpdCBjb2RlIG1hdGNoZXMgYHByZWRpY2F0ZWAKKword2hlcmUgYHN0YXRlbWVu
dGAgaXMgYSBzdGF0ZW1lbnQgdGhhdCBpcyBleHBlY3RlZCB0byBjYXVzZSB0aGUgcHJvY2VzcyB0
byBkaWUsCitgcHJlZGljYXRlYCBpcyBhIGZ1bmN0aW9uIG9yIGZ1bmN0aW9uIG9iamVjdCB0aGF0
IGV2YWx1YXRlcyBhbiBpbnRlZ2VyIGV4aXQKK3N0YXR1cywgYW5kIGByZWdleGAgaXMgYSAoUGVy
bCkgcmVndWxhciBleHByZXNzaW9uIHRoYXQgdGhlIHN0ZGVyciBvdXRwdXQgb2YKK2BzdGF0ZW1l
bnRgIGlzIGV4cGVjdGVkIHRvIG1hdGNoLiBOb3RlIHRoYXQgYHN0YXRlbWVudGAgY2FuIGJlICph
bnkgdmFsaWQKK3N0YXRlbWVudCogKGluY2x1ZGluZyAqY29tcG91bmQgc3RhdGVtZW50KikgYW5k
IGRvZXNuJ3QgaGF2ZSB0byBiZSBhbgorZXhwcmVzc2lvbi4KKworCitBcyB1c3VhbCwgdGhlIGBB
U1NFUlRgIHZhcmlhbnRzIGFib3J0IHRoZSBjdXJyZW50IHRlc3QgZnVuY3Rpb24sIHdoaWxlIHRo
ZQorYEVYUEVDVGAgdmFyaWFudHMgZG8gbm90LgorCis+IE5PVEU6IFdlIHVzZSB0aGUgd29yZCAi
Y3Jhc2giIGhlcmUgdG8gbWVhbiB0aGF0IHRoZSBwcm9jZXNzIHRlcm1pbmF0ZXMgd2l0aCBhCis+
ICpub24temVybyogZXhpdCBzdGF0dXMgY29kZS4gVGhlcmUgYXJlIHR3byBwb3NzaWJpbGl0aWVz
OiBlaXRoZXIgdGhlIHByb2Nlc3MKKz4gaGFzIGNhbGxlZCBgZXhpdCgpYCBvciBgX2V4aXQoKWAg
d2l0aCBhIG5vbi16ZXJvIHZhbHVlLCBvciBpdCBtYXkgYmUga2lsbGVkIGJ5Cis+IGEgc2lnbmFs
LgorPgorPiBUaGlzIG1lYW5zIHRoYXQgaWYgYCpzdGF0ZW1lbnQqYCB0ZXJtaW5hdGVzIHRoZSBw
cm9jZXNzIHdpdGggYSAwIGV4aXQgY29kZSwgaXQKKz4gaXMgKm5vdCogY29uc2lkZXJlZCBhIGNy
YXNoIGJ5IGBFWFBFQ1RfREVBVEhgLiBVc2UgYEVYUEVDVF9FWElUYCBpbnN0ZWFkIGlmCis+IHRo
aXMgaXMgdGhlIGNhc2UsIG9yIGlmIHlvdSB3YW50IHRvIHJlc3RyaWN0IHRoZSBleGl0IGNvZGUg
bW9yZSBwcmVjaXNlbHkuCisKK0EgcHJlZGljYXRlIGhlcmUgbXVzdCBhY2NlcHQgYW4gYGludGAg
YW5kIHJldHVybiBhIGBib29sYC4gVGhlIGRlYXRoIHRlc3QKK3N1Y2NlZWRzIG9ubHkgaWYgdGhl
IHByZWRpY2F0ZSByZXR1cm5zIGB0cnVlYC4gZ29vZ2xldGVzdCBkZWZpbmVzIGEgZmV3CitwcmVk
aWNhdGVzIHRoYXQgaGFuZGxlIHRoZSBtb3N0IGNvbW1vbiBjYXNlczoKKworYGBgYysrCis6OnRl
c3Rpbmc6OkV4aXRlZFdpdGhDb2RlKGV4aXRfY29kZSkKK2BgYAorCitUaGlzIGV4cHJlc3Npb24g
aXMgYHRydWVgIGlmIHRoZSBwcm9ncmFtIGV4aXRlZCBub3JtYWxseSB3aXRoIHRoZSBnaXZlbiBl
eGl0Citjb2RlLgorCitgYGBjKysKKzo6dGVzdGluZzo6S2lsbGVkQnlTaWduYWwoc2lnbmFsX251
bWJlcikgIC8vIE5vdCBhdmFpbGFibGUgb24gV2luZG93cy4KK2BgYAorCitUaGlzIGV4cHJlc3Np
b24gaXMgYHRydWVgIGlmIHRoZSBwcm9ncmFtIHdhcyBraWxsZWQgYnkgdGhlIGdpdmVuIHNpZ25h
bC4KKworVGhlIGAqX0RFQVRIYCBtYWNyb3MgYXJlIGNvbnZlbmllbnQgd3JhcHBlcnMgZm9yIGAq
X0VYSVRgIHRoYXQgdXNlIGEgcHJlZGljYXRlCit0aGF0IHZlcmlmaWVzIHRoZSBwcm9jZXNzJyBl
eGl0IGNvZGUgaXMgbm9uLXplcm8uCisKK05vdGUgdGhhdCBhIGRlYXRoIHRlc3Qgb25seSBjYXJl
cyBhYm91dCB0aHJlZSB0aGluZ3M6CisKKzEuICBkb2VzIGBzdGF0ZW1lbnRgIGFib3J0IG9yIGV4
aXQgdGhlIHByb2Nlc3M/CisyLiAgKGluIHRoZSBjYXNlIG9mIGBBU1NFUlRfRVhJVGAgYW5kIGBF
WFBFQ1RfRVhJVGApIGRvZXMgdGhlIGV4aXQgc3RhdHVzCisgICAgc2F0aXNmeSBgcHJlZGljYXRl
YD8gT3IgKGluIHRoZSBjYXNlIG9mIGBBU1NFUlRfREVBVEhgIGFuZCBgRVhQRUNUX0RFQVRIYCkK
KyAgICBpcyB0aGUgZXhpdCBzdGF0dXMgbm9uLXplcm8/IEFuZAorMy4gIGRvZXMgdGhlIHN0ZGVy
ciBvdXRwdXQgbWF0Y2ggYHJlZ2V4YD8KKworSW4gcGFydGljdWxhciwgaWYgYHN0YXRlbWVudGAg
Z2VuZXJhdGVzIGFuIGBBU1NFUlRfKmAgb3IgYEVYUEVDVF8qYCBmYWlsdXJlLCBpdAord2lsbCAq
Km5vdCoqIGNhdXNlIHRoZSBkZWF0aCB0ZXN0IHRvIGZhaWwsIGFzIGdvb2dsZXRlc3QgYXNzZXJ0
aW9ucyBkb24ndCBhYm9ydAordGhlIHByb2Nlc3MuCisKK1RvIHdyaXRlIGEgZGVhdGggdGVzdCwg
c2ltcGx5IHVzZSBvbmUgb2YgdGhlIGFib3ZlIG1hY3JvcyBpbnNpZGUgeW91ciB0ZXN0CitmdW5j
dGlvbi4gRm9yIGV4YW1wbGUsCisKK2BgYGMrKworVEVTVChNeURlYXRoVGVzdCwgRm9vKSB7Cisg
IC8vIFRoaXMgZGVhdGggdGVzdCB1c2VzIGEgY29tcG91bmQgc3RhdGVtZW50LgorICBBU1NFUlRf
REVBVEgoeworICAgIGludCBuID0gNTsKKyAgICBGb28oJm4pOworICB9LCAiRXJyb3Igb24gbGlu
ZSAuKiBvZiBGb28oKSIpOworfQorCitURVNUKE15RGVhdGhUZXN0LCBOb3JtYWxFeGl0KSB7Cisg
IEVYUEVDVF9FWElUKE5vcm1hbEV4aXQoKSwgOjp0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgwKSwg
IlN1Y2Nlc3MiKTsKK30KKworVEVTVChNeURlYXRoVGVzdCwgS2lsbE15c2VsZikgeworICBFWFBF
Q1RfRVhJVChLaWxsTXlzZWxmKCksIDo6dGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHS0lMTCks
CisgICAgICAgICAgICAgICJTZW5kaW5nIG15c2VsZiB1bmJsb2NrYWJsZSBzaWduYWwiKTsKK30K
K2BgYAorCit2ZXJpZmllcyB0aGF0OgorCisqICAgY2FsbGluZyBgRm9vKDUpYCBjYXVzZXMgdGhl
IHByb2Nlc3MgdG8gZGllIHdpdGggdGhlIGdpdmVuIGVycm9yIG1lc3NhZ2UsCisqICAgY2FsbGlu
ZyBgTm9ybWFsRXhpdCgpYCBjYXVzZXMgdGhlIHByb2Nlc3MgdG8gcHJpbnQgYCJTdWNjZXNzImAg
dG8gc3RkZXJyIGFuZAorICAgIGV4aXQgd2l0aCBleGl0IGNvZGUgMCwgYW5kCisqICAgY2FsbGlu
ZyBgS2lsbE15c2VsZigpYCBraWxscyB0aGUgcHJvY2VzcyB3aXRoIHNpZ25hbCBgU0lHS0lMTGAu
CisKK1RoZSB0ZXN0IGZ1bmN0aW9uIGJvZHkgbWF5IGNvbnRhaW4gb3RoZXIgYXNzZXJ0aW9ucyBh
bmQgc3RhdGVtZW50cyBhcyB3ZWxsLCBpZgorbmVjZXNzYXJ5LgorCisjIyMgRGVhdGggVGVzdCBO
YW1pbmcKKworSU1QT1JUQU5UOiBXZSBzdHJvbmdseSByZWNvbW1lbmQgeW91IHRvIGZvbGxvdyB0
aGUgY29udmVudGlvbiBvZiBuYW1pbmcgeW91cgorKip0ZXN0IGNhc2UqKiAobm90IHRlc3QpIGAq
RGVhdGhUZXN0YCB3aGVuIGl0IGNvbnRhaW5zIGEgZGVhdGggdGVzdCwgYXMKK2RlbW9uc3RyYXRl
ZCBpbiB0aGUgYWJvdmUgZXhhbXBsZS4gVGhlIFtEZWF0aCBUZXN0cyBBbmQKK1RocmVhZHNdKCNk
ZWF0aC10ZXN0cy1hbmQtdGhyZWFkcykgc2VjdGlvbiBiZWxvdyBleHBsYWlucyB3aHkuCisKK0lm
IGEgdGVzdCBmaXh0dXJlIGNsYXNzIGlzIHNoYXJlZCBieSBub3JtYWwgdGVzdHMgYW5kIGRlYXRo
IHRlc3RzLCB5b3UgY2FuIHVzZQorYHVzaW5nYCBvciBgdHlwZWRlZmAgdG8gaW50cm9kdWNlIGFu
IGFsaWFzIGZvciB0aGUgZml4dHVyZSBjbGFzcyBhbmQgYXZvaWQKK2R1cGxpY2F0aW5nIGl0cyBj
b2RlOgorCitgYGBjKysKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsg
Li4uIH07CisKK3VzaW5nIEZvb0RlYXRoVGVzdCA9IEZvb1Rlc3Q7CisKK1RFU1RfRihGb29UZXN0
LCBEb2VzVGhpcykgeworICAvLyBub3JtYWwgdGVzdAorfQorCitURVNUX0YoRm9vRGVhdGhUZXN0
LCBEb2VzVGhhdCkgeworICAvLyBkZWF0aCB0ZXN0Cit9CitgYGAKKworKipBdmFpbGFiaWxpdHkq
KjogTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgQ3lnd2luLCBh
bmQgTWFjCisKKyMjIyBSZWd1bGFyIEV4cHJlc3Npb24gU3ludGF4CisKKworT24gUE9TSVggc3lz
dGVtcyAoZS5nLiBMaW51eCwgQ3lnd2luLCBhbmQgTWFjKSwgZ29vZ2xldGVzdCB1c2VzIHRoZQor
W1BPU0lYIGV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbl0oaHR0cDovL3d3dy5vcGVuZ3JvdXAu
b3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Jhc2VkZWZzL3hiZF9jaGFwMDkuaHRtbCN0YWdfMDlf
MDQpCitzeW50YXguIFRvIGxlYXJuIGFib3V0IHRoaXMgc3ludGF4LCB5b3UgbWF5IHdhbnQgdG8g
cmVhZCB0aGlzCitbV2lraXBlZGlhIGVudHJ5XShodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtp
L1JlZ3VsYXJfZXhwcmVzc2lvbiNQT1NJWF9FeHRlbmRlZF9SZWd1bGFyX0V4cHJlc3Npb25zKS4K
KworT24gV2luZG93cywgZ29vZ2xldGVzdCB1c2VzIGl0cyBvd24gc2ltcGxlIHJlZ3VsYXIgZXhw
cmVzc2lvbiBpbXBsZW1lbnRhdGlvbi4gSXQKK2xhY2tzIG1hbnkgZmVhdHVyZXMuIEZvciBleGFt
cGxlLCB3ZSBkb24ndCBzdXBwb3J0IHVuaW9uIChgInh8eSJgKSwgZ3JvdXBpbmcKKyhgIih4eSki
YCksIGJyYWNrZXRzIChgIlt4eV0iYCksIGFuZCByZXBldGl0aW9uIGNvdW50IChgInh7NSw3fSJg
KSwgYW1vbmcKK290aGVycy4gQmVsb3cgaXMgd2hhdCB3ZSBkbyBzdXBwb3J0IChgQWAgZGVub3Rl
cyBhIGxpdGVyYWwgY2hhcmFjdGVyLCBwZXJpb2QKKyhgLmApLCBvciBhIHNpbmdsZSBgXFwgYCBl
c2NhcGUgc2VxdWVuY2U7IGB4YCBhbmQgYHlgIGRlbm90ZSByZWd1bGFyCitleHByZXNzaW9ucy4p
OgorCitFeHByZXNzaW9uIHwgTWVhbmluZworLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitgY2AgICAgICAg
IHwgbWF0Y2hlcyBhbnkgbGl0ZXJhbCBjaGFyYWN0ZXIgYGNgCitgXFxkYCAgICAgIHwgbWF0Y2hl
cyBhbnkgZGVjaW1hbCBkaWdpdAorYFxcRGAgICAgICB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0
aGF0J3Mgbm90IGEgZGVjaW1hbCBkaWdpdAorYFxcZmAgICAgICB8IG1hdGNoZXMgYFxmYAorYFxc
bmAgICAgICB8IG1hdGNoZXMgYFxuYAorYFxccmAgICAgICB8IG1hdGNoZXMgYFxyYAorYFxcc2Ag
ICAgICB8IG1hdGNoZXMgYW55IEFTQ0lJIHdoaXRlc3BhY2UsIGluY2x1ZGluZyBgXG5gCitgXFxT
YCAgICAgIHwgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIHRoYXQncyBub3QgYSB3aGl0ZXNwYWNlCitg
XFx0YCAgICAgIHwgbWF0Y2hlcyBgXHRgCitgXFx2YCAgICAgIHwgbWF0Y2hlcyBgXHZgCitgXFx3
YCAgICAgIHwgbWF0Y2hlcyBhbnkgbGV0dGVyLCBgX2AsIG9yIGRlY2ltYWwgZGlnaXQKK2BcXFdg
ICAgICAgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCBgXFx3YCBkb2Vzbid0IG1hdGNoCitg
XFxjYCAgICAgIHwgbWF0Y2hlcyBhbnkgbGl0ZXJhbCBjaGFyYWN0ZXIgYGNgLCB3aGljaCBtdXN0
IGJlIGEgcHVuY3R1YXRpb24KK2AuYCAgICAgICAgfCBtYXRjaGVzIGFueSBzaW5nbGUgY2hhcmFj
dGVyIGV4Y2VwdCBgXG5gCitgQT9gICAgICAgIHwgbWF0Y2hlcyAwIG9yIDEgb2NjdXJyZW5jZXMg
b2YgYEFgCitgQSpgICAgICAgIHwgbWF0Y2hlcyAwIG9yIG1hbnkgb2NjdXJyZW5jZXMgb2YgYEFg
CitgQStgICAgICAgIHwgbWF0Y2hlcyAxIG9yIG1hbnkgb2NjdXJyZW5jZXMgb2YgYEFgCitgXmAg
ICAgICAgIHwgbWF0Y2hlcyB0aGUgYmVnaW5uaW5nIG9mIGEgc3RyaW5nIChub3QgdGhhdCBvZiBl
YWNoIGxpbmUpCitgJGAgICAgICAgIHwgbWF0Y2hlcyB0aGUgZW5kIG9mIGEgc3RyaW5nIChub3Qg
dGhhdCBvZiBlYWNoIGxpbmUpCitgeHlgICAgICAgIHwgbWF0Y2hlcyBgeGAgZm9sbG93ZWQgYnkg
YHlgCisKK1RvIGhlbHAgeW91IGRldGVybWluZSB3aGljaCBjYXBhYmlsaXR5IGlzIGF2YWlsYWJs
ZSBvbiB5b3VyIHN5c3RlbSwgZ29vZ2xldGVzdAorZGVmaW5lcyBtYWNyb3MgdG8gZ292ZXJuIHdo
aWNoIHJlZ3VsYXIgZXhwcmVzc2lvbiBpdCBpcyB1c2luZy4gVGhlIG1hY3JvcyBhcmU6Cis8IS0t
YWJzbDpnb29nbGUzLWJlZ2luKGdvb2dsZTMtb25seSktLT5gR1RFU1RfVVNFU19QQ1JFPTFgLCBv
cgorPCEtLWFic2w6Z29vZ2xlMy1lbmQtLT4gYEdURVNUX1VTRVNfU0lNUExFX1JFPTFgIG9yIGBH
VEVTVF9VU0VTX1BPU0lYX1JFPTFgLiBJZgoreW91IHdhbnQgeW91ciBkZWF0aCB0ZXN0cyB0byB3
b3JrIGluIGFsbCBjYXNlcywgeW91IGNhbiBlaXRoZXIgYCNpZmAgb24gdGhlc2UKK21hY3JvcyBv
ciB1c2UgdGhlIG1vcmUgbGltaXRlZCBzeW50YXggb25seS4KKworIyMjIEhvdyBJdCBXb3Jrcwor
CitVbmRlciB0aGUgaG9vZCwgYEFTU0VSVF9FWElUKClgIHNwYXducyBhIG5ldyBwcm9jZXNzIGFu
ZCBleGVjdXRlcyB0aGUgZGVhdGggdGVzdAorc3RhdGVtZW50IGluIHRoYXQgcHJvY2Vzcy4gVGhl
IGRldGFpbHMgb2YgaG93IHByZWNpc2VseSB0aGF0IGhhcHBlbnMgZGVwZW5kIG9uCit0aGUgcGxh
dGZvcm0gYW5kIHRoZSB2YXJpYWJsZSA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9z
dHlsZSkgKHdoaWNoIGlzCitpbml0aWFsaXplZCBmcm9tIHRoZSBjb21tYW5kLWxpbmUgZmxhZyBg
LS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlYCkuCisKKyogICBPbiBQT1NJWCBzeXN0ZW1zLCBgZm9y
aygpYCAob3IgYGNsb25lKClgIG9uIExpbnV4KSBpcyB1c2VkIHRvIHNwYXduIHRoZQorICAgIGNo
aWxkLCBhZnRlciB3aGljaDoKKyAgICAqICAgSWYgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgaXMgYCJm
YXN0ImAsIHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudCBpcworICAgICAgICBpbW1lZGlhdGVseSBl
eGVjdXRlZC4KKyAgICAqICAgSWYgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgaXMgYCJ0aHJlYWRzYWZl
ImAsIHRoZSBjaGlsZCBwcm9jZXNzIHJlLWV4ZWN1dGVzCisgICAgICAgIHRoZSB1bml0IHRlc3Qg
YmluYXJ5IGp1c3QgYXMgaXQgd2FzIG9yaWdpbmFsbHkgaW52b2tlZCwgYnV0IHdpdGggc29tZQor
ICAgICAgICBleHRyYSBmbGFncyB0byBjYXVzZSBqdXN0IHRoZSBzaW5nbGUgZGVhdGggdGVzdCB1
bmRlciBjb25zaWRlcmF0aW9uIHRvCisgICAgICAgIGJlIHJ1bi4KKyogICBPbiBXaW5kb3dzLCB0
aGUgY2hpbGQgaXMgc3Bhd25lZCB1c2luZyB0aGUgYENyZWF0ZVByb2Nlc3MoKWAgQVBJLCBhbmQK
KyAgICByZS1leGVjdXRlcyB0aGUgYmluYXJ5IHRvIGNhdXNlIGp1c3QgdGhlIHNpbmdsZSBkZWF0
aCB0ZXN0IHVuZGVyCisgICAgY29uc2lkZXJhdGlvbiB0byBiZSBydW4gLSBtdWNoIGxpa2UgdGhl
IGB0aHJlYWRzYWZlYCBtb2RlIG9uIFBPU0lYLgorCitPdGhlciB2YWx1ZXMgZm9yIHRoZSB2YXJp
YWJsZSBhcmUgaWxsZWdhbCBhbmQgd2lsbCBjYXVzZSB0aGUgZGVhdGggdGVzdCB0byBmYWlsLgor
Q3VycmVudGx5LCB0aGUgZmxhZydzIGRlZmF1bHQgdmFsdWUgaXMKKyJmYXN0Ii4gSG93ZXZlciwg
d2UgcmVzZXJ2ZQordGhlIHJpZ2h0IHRvIGNoYW5nZSBpdCBpbiB0aGUgZnV0dXJlLiBUaGVyZWZv
cmUsIHlvdXIgdGVzdHMgc2hvdWxkIG5vdCBkZXBlbmQgb24KK3RoaXMuIEluIGVpdGhlciBjYXNl
LCB0aGUgcGFyZW50IHByb2Nlc3Mgd2FpdHMgZm9yIHRoZSBjaGlsZCBwcm9jZXNzIHRvCitjb21w
bGV0ZSwgYW5kIGNoZWNrcyB0aGF0CisKKzEuICB0aGUgY2hpbGQncyBleGl0IHN0YXR1cyBzYXRp
c2ZpZXMgdGhlIHByZWRpY2F0ZSwgYW5kCisyLiAgdGhlIGNoaWxkJ3Mgc3RkZXJyIG1hdGNoZXMg
dGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4KKworSWYgdGhlIGRlYXRoIHRlc3Qgc3RhdGVtZW50IHJ1
bnMgdG8gY29tcGxldGlvbiB3aXRob3V0IGR5aW5nLCB0aGUgY2hpbGQgcHJvY2Vzcword2lsbCBu
b25ldGhlbGVzcyB0ZXJtaW5hdGUsIGFuZCB0aGUgYXNzZXJ0aW9uIGZhaWxzLgorCisjIyMgRGVh
dGggVGVzdHMgQW5kIFRocmVhZHMKKworVGhlIHJlYXNvbiBmb3IgdGhlIHR3byBkZWF0aCB0ZXN0
IHN0eWxlcyBoYXMgdG8gZG8gd2l0aCB0aHJlYWQgc2FmZXR5LiBEdWUgdG8KK3dlbGwta25vd24g
cHJvYmxlbXMgd2l0aCBmb3JraW5nIGluIHRoZSBwcmVzZW5jZSBvZiB0aHJlYWRzLCBkZWF0aCB0
ZXN0cyBzaG91bGQKK2JlIHJ1biBpbiBhIHNpbmdsZS10aHJlYWRlZCBjb250ZXh0LiBTb21ldGlt
ZXMsIGhvd2V2ZXIsIGl0IGlzbid0IGZlYXNpYmxlIHRvCithcnJhbmdlIHRoYXQga2luZCBvZiBl
bnZpcm9ubWVudC4gRm9yIGV4YW1wbGUsIHN0YXRpY2FsbHktaW5pdGlhbGl6ZWQgbW9kdWxlcwor
bWF5IHN0YXJ0IHRocmVhZHMgYmVmb3JlIG1haW4gaXMgZXZlciByZWFjaGVkLiBPbmNlIHRocmVh
ZHMgaGF2ZSBiZWVuIGNyZWF0ZWQsCitpdCBtYXkgYmUgZGlmZmljdWx0IG9yIGltcG9zc2libGUg
dG8gY2xlYW4gdGhlbSB1cC4KKworZ29vZ2xldGVzdCBoYXMgdGhyZWUgZmVhdHVyZXMgaW50ZW5k
ZWQgdG8gcmFpc2UgYXdhcmVuZXNzIG9mIHRocmVhZGluZyBpc3N1ZXMuCisKKzEuICBBIHdhcm5p
bmcgaXMgZW1pdHRlZCBpZiBtdWx0aXBsZSB0aHJlYWRzIGFyZSBydW5uaW5nIHdoZW4gYSBkZWF0
aCB0ZXN0IGlzCisgICAgZW5jb3VudGVyZWQuCisyLiAgVGVzdCBjYXNlcyB3aXRoIGEgbmFtZSBl
bmRpbmcgaW4gIkRlYXRoVGVzdCIgYXJlIHJ1biBiZWZvcmUgYWxsIG90aGVyIHRlc3RzLgorMy4g
IEl0IHVzZXMgYGNsb25lKClgIGluc3RlYWQgb2YgYGZvcmsoKWAgdG8gc3Bhd24gdGhlIGNoaWxk
IHByb2Nlc3Mgb24gTGludXgKKyAgICAoYGNsb25lKClgIGlzIG5vdCBhdmFpbGFibGUgb24gQ3ln
d2luIGFuZCBNYWMpLCBhcyBgZm9yaygpYCBpcyBtb3JlIGxpa2VseQorICAgIHRvIGNhdXNlIHRo
ZSBjaGlsZCB0byBoYW5nIHdoZW4gdGhlIHBhcmVudCBwcm9jZXNzIGhhcyBtdWx0aXBsZSB0aHJl
YWRzLgorCitJdCdzIHBlcmZlY3RseSBmaW5lIHRvIGNyZWF0ZSB0aHJlYWRzIGluc2lkZSBhIGRl
YXRoIHRlc3Qgc3RhdGVtZW50OyB0aGV5IGFyZQorZXhlY3V0ZWQgaW4gYSBzZXBhcmF0ZSBwcm9j
ZXNzIGFuZCBjYW5ub3QgYWZmZWN0IHRoZSBwYXJlbnQuCisKKyMjIyBEZWF0aCBUZXN0IFN0eWxl
cworCisKK1RoZSAidGhyZWFkc2FmZSIgZGVhdGggdGVzdCBzdHlsZSB3YXMgaW50cm9kdWNlZCBp
biBvcmRlciB0byBoZWxwIG1pdGlnYXRlIHRoZQorcmlza3Mgb2YgdGVzdGluZyBpbiBhIHBvc3Np
Ymx5IG11bHRpdGhyZWFkZWQgZW52aXJvbm1lbnQuIEl0IHRyYWRlcyBpbmNyZWFzZWQKK3Rlc3Qg
ZXhlY3V0aW9uIHRpbWUgKHBvdGVudGlhbGx5IGRyYW1hdGljYWxseSBzbykgZm9yIGltcHJvdmVk
IHRocmVhZCBzYWZldHkuCisKK1RoZSBhdXRvbWF0ZWQgdGVzdGluZyBmcmFtZXdvcmsgZG9lcyBu
b3Qgc2V0IHRoZSBzdHlsZSBmbGFnLiBZb3UgY2FuIGNob29zZSBhCitwYXJ0aWN1bGFyIHN0eWxl
IG9mIGRlYXRoIHRlc3RzIGJ5IHNldHRpbmcgdGhlIGZsYWcgcHJvZ3JhbW1hdGljYWxseToKKwor
YGBgYysrCit0ZXN0aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlPSJ0aHJlYWRzYWZl
IgorYGBgCisKK1lvdSBjYW4gZG8gdGhpcyBpbiBgbWFpbigpYCB0byBzZXQgdGhlIHN0eWxlIGZv
ciBhbGwgZGVhdGggdGVzdHMgaW4gdGhlIGJpbmFyeSwKK29yIGluIGluZGl2aWR1YWwgdGVzdHMu
IFJlY2FsbCB0aGF0IGZsYWdzIGFyZSBzYXZlZCBiZWZvcmUgcnVubmluZyBlYWNoIHRlc3QgYW5k
CityZXN0b3JlZCBhZnRlcndhcmRzLCBzbyB5b3UgbmVlZCBub3QgZG8gdGhhdCB5b3Vyc2VsZi4g
Rm9yIGV4YW1wbGU6CisKK2BgYGMrKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7
CisgIEluaXRHb29nbGUoYXJndlswXSwgJmFyZ2MsICZhcmd2LCB0cnVlKTsKKyAgOjp0ZXN0aW5n
OjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0gImZhc3QiOworICByZXR1cm4gUlVOX0FM
TF9URVNUUygpOworfQorCitURVNUKE15RGVhdGhUZXN0LCBUZXN0T25lKSB7CisgIDo6dGVzdGlu
Zzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJ0aHJlYWRzYWZlIjsKKyAgLy8gVGhp
cyB0ZXN0IGlzIHJ1biBpbiB0aGUgInRocmVhZHNhZmUiIHN0eWxlOgorICBBU1NFUlRfREVBVEgo
VGhpc1Nob3VsZERpZSgpLCAiIik7Cit9CisKK1RFU1QoTXlEZWF0aFRlc3QsIFRlc3RUd28pIHsK
KyAgLy8gVGhpcyB0ZXN0IGlzIHJ1biBpbiB0aGUgImZhc3QiIHN0eWxlOgorICBBU1NFUlRfREVB
VEgoVGhpc1Nob3VsZERpZSgpLCAiIik7Cit9CitgYGAKKworCisjIyMgQ2F2ZWF0cworCitUaGUg
YHN0YXRlbWVudGAgYXJndW1lbnQgb2YgYEFTU0VSVF9FWElUKClgIGNhbiBiZSBhbnkgdmFsaWQg
QysrIHN0YXRlbWVudC4gSWYKK2l0IGxlYXZlcyB0aGUgY3VycmVudCBmdW5jdGlvbiB2aWEgYSBg
cmV0dXJuYCBzdGF0ZW1lbnQgb3IgYnkgdGhyb3dpbmcgYW4KK2V4Y2VwdGlvbiwgdGhlIGRlYXRo
IHRlc3QgaXMgY29uc2lkZXJlZCB0byBoYXZlIGZhaWxlZC4gU29tZSBnb29nbGV0ZXN0IG1hY3Jv
cworbWF5IHJldHVybiBmcm9tIHRoZSBjdXJyZW50IGZ1bmN0aW9uIChlLmcuIGBBU1NFUlRfVFJV
RSgpYCksIHNvIGJlIHN1cmUgdG8gYXZvaWQKK3RoZW0gaW4gYHN0YXRlbWVudGAuCisKK1NpbmNl
IGBzdGF0ZW1lbnRgIHJ1bnMgaW4gdGhlIGNoaWxkIHByb2Nlc3MsIGFueSBpbi1tZW1vcnkgc2lk
ZSBlZmZlY3QgKGUuZy4KK21vZGlmeWluZyBhIHZhcmlhYmxlLCByZWxlYXNpbmcgbWVtb3J5LCBl
dGMpIGl0IGNhdXNlcyB3aWxsICpub3QqIGJlIG9ic2VydmFibGUKK2luIHRoZSBwYXJlbnQgcHJv
Y2Vzcy4gSW4gcGFydGljdWxhciwgaWYgeW91IHJlbGVhc2UgbWVtb3J5IGluIGEgZGVhdGggdGVz
dCwKK3lvdXIgcHJvZ3JhbSB3aWxsIGZhaWwgdGhlIGhlYXAgY2hlY2sgYXMgdGhlIHBhcmVudCBw
cm9jZXNzIHdpbGwgbmV2ZXIgc2VlIHRoZQorbWVtb3J5IHJlY2xhaW1lZC4gVG8gc29sdmUgdGhp
cyBwcm9ibGVtLCB5b3UgY2FuCisKKzEuICB0cnkgbm90IHRvIGZyZWUgbWVtb3J5IGluIGEgZGVh
dGggdGVzdDsKKzIuICBmcmVlIHRoZSBtZW1vcnkgYWdhaW4gaW4gdGhlIHBhcmVudCBwcm9jZXNz
OyBvcgorMy4gIGRvIG5vdCB1c2UgdGhlIGhlYXAgY2hlY2tlciBpbiB5b3VyIHByb2dyYW0uCisK
K0R1ZSB0byBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIHlvdSBjYW5ub3QgcGxhY2UgbXVsdGlw
bGUgZGVhdGggdGVzdCBhc3NlcnRpb25zCitvbiB0aGUgc2FtZSBsaW5lOyBvdGhlcndpc2UsIGNv
bXBpbGF0aW9uIHdpbGwgZmFpbCB3aXRoIGFuIHVub2J2aW91cyBlcnJvcgorbWVzc2FnZS4KKwor
RGVzcGl0ZSB0aGUgaW1wcm92ZWQgdGhyZWFkIHNhZmV0eSBhZmZvcmRlZCBieSB0aGUgInRocmVh
ZHNhZmUiIHN0eWxlIG9mIGRlYXRoCit0ZXN0LCB0aHJlYWQgcHJvYmxlbXMgc3VjaCBhcyBkZWFk
bG9jayBhcmUgc3RpbGwgcG9zc2libGUgaW4gdGhlIHByZXNlbmNlIG9mCitoYW5kbGVycyByZWdp
c3RlcmVkIHdpdGggYHB0aHJlYWRfYXRmb3JrKDMpYC4KKworCisjIyBVc2luZyBBc3NlcnRpb25z
IGluIFN1Yi1yb3V0aW5lcworCisjIyMgQWRkaW5nIFRyYWNlcyB0byBBc3NlcnRpb25zCisKK0lm
IGEgdGVzdCBzdWItcm91dGluZSBpcyBjYWxsZWQgZnJvbSBzZXZlcmFsIHBsYWNlcywgd2hlbiBh
biBhc3NlcnRpb24gaW5zaWRlIGl0CitmYWlscywgaXQgY2FuIGJlIGhhcmQgdG8gdGVsbCB3aGlj
aCBpbnZvY2F0aW9uIG9mIHRoZSBzdWItcm91dGluZSB0aGUgZmFpbHVyZSBpcworZnJvbS4gCitZ
b3UgY2FuIGFsbGV2aWF0ZSB0aGlzIHByb2JsZW0gdXNpbmcgZXh0cmEgbG9nZ2luZyBvciBjdXN0
b20gZmFpbHVyZSBtZXNzYWdlcywKK2J1dCB0aGF0IHVzdWFsbHkgY2x1dHRlcnMgdXAgeW91ciB0
ZXN0cy4gQSBiZXR0ZXIgc29sdXRpb24gaXMgdG8gdXNlIHRoZQorYFNDT1BFRF9UUkFDRWAgbWFj
cm8gb3IgdGhlIGBTY29wZWRUcmFjZWAgdXRpbGl0eToKKworYGBgYysrCitTQ09QRURfVFJBQ0Uo
bWVzc2FnZSk7CitTY29wZWRUcmFjZSB0cmFjZSgiZmlsZV9wYXRoIiwgbGluZV9udW1iZXIsIG1l
c3NhZ2UpOworYGBgCisKK3doZXJlIGBtZXNzYWdlYCBjYW4gYmUgYW55dGhpbmcgc3RyZWFtYWJs
ZSB0byBgc3RkOjpvc3RyZWFtYC4gYFNDT1BFRF9UUkFDRWAKK21hY3JvIHdpbGwgY2F1c2UgdGhl
IGN1cnJlbnQgZmlsZSBuYW1lLCBsaW5lIG51bWJlciwgYW5kIHRoZSBnaXZlbiBtZXNzYWdlIHRv
IGJlCithZGRlZCBpbiBldmVyeSBmYWlsdXJlIG1lc3NhZ2UuIGBTY29wZWRUcmFjZWAgYWNjZXB0
cyBleHBsaWNpdCBmaWxlIG5hbWUgYW5kCitsaW5lIG51bWJlciBpbiBhcmd1bWVudHMsIHdoaWNo
IGlzIHVzZWZ1bCBmb3Igd3JpdGluZyB0ZXN0IGhlbHBlcnMuIFRoZSBlZmZlY3QKK3dpbGwgYmUg
dW5kb25lIHdoZW4gdGhlIGNvbnRyb2wgbGVhdmVzIHRoZSBjdXJyZW50IGxleGljYWwgc2NvcGUu
CisKK0ZvciBleGFtcGxlLAorCitgYGBjKysKKzEwOiB2b2lkIFN1YjEoaW50IG4pIHsKKzExOiAg
IEVYUEVDVF9FUSgxLCBCYXIobikpOworMTI6ICAgRVhQRUNUX0VRKDIsIEJhcihuICsgMSkpOwor
MTM6IH0KKzE0OgorMTU6IFRFU1QoRm9vVGVzdCwgQmFyKSB7CisxNjogICB7CisxNzogICAgIFND
T1BFRF9UUkFDRSgiQSIpOyAgLy8gVGhpcyB0cmFjZSBwb2ludCB3aWxsIGJlIGluY2x1ZGVkIGlu
CisxODogICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXZlcnkgZmFpbHVyZSBpbiB0aGlzIHNj
b3BlLgorMTk6ICAgICBTdWIxKDEpOworMjA6ICAgfQorMjE6ICAgLy8gTm93IGl0IHdvbid0Lgor
MjI6ICAgU3ViMSg5KTsKKzIzOiB9CitgYGAKKworY291bGQgcmVzdWx0IGluIG1lc3NhZ2VzIGxp
a2UgdGhlc2U6CisKK2BgYG5vbmUKK3BhdGgvdG8vZm9vX3Rlc3QuY2M6MTE6IEZhaWx1cmUKK1Zh
bHVlIG9mOiBCYXIobikKK0V4cGVjdGVkOiAxCisgIEFjdHVhbDogMgorICAgVHJhY2U6CitwYXRo
L3RvL2Zvb190ZXN0LmNjOjE3OiBBCisKK3BhdGgvdG8vZm9vX3Rlc3QuY2M6MTI6IEZhaWx1cmUK
K1ZhbHVlIG9mOiBCYXIobiArIDEpCitFeHBlY3RlZDogMgorICBBY3R1YWw6IDMKK2BgYAorCitX
aXRob3V0IHRoZSB0cmFjZSwgaXQgd291bGQndmUgYmVlbiBkaWZmaWN1bHQgdG8ga25vdyB3aGlj
aCBpbnZvY2F0aW9uIG9mCitgU3ViMSgpYCB0aGUgdHdvIGZhaWx1cmVzIGNvbWUgZnJvbSByZXNw
ZWN0aXZlbHkuIChZb3UgY291bGQgYWRkCisKK2FuIGV4dHJhIG1lc3NhZ2UgdG8gZWFjaCBhc3Nl
cnRpb24gaW4gYFN1YjEoKWAgdG8gaW5kaWNhdGUgdGhlIHZhbHVlIG9mIGBuYCwgYnV0Cit0aGF0
J3MgdGVkaW91cy4pCisKK1NvbWUgdGlwcyBvbiB1c2luZyBgU0NPUEVEX1RSQUNFYDoKKworMS4g
IFdpdGggYSBzdWl0YWJsZSBtZXNzYWdlLCBpdCdzIG9mdGVuIGVub3VnaCB0byB1c2UgYFNDT1BF
RF9UUkFDRWAgYXQgdGhlCisgICAgYmVnaW5uaW5nIG9mIGEgc3ViLXJvdXRpbmUsIGluc3RlYWQg
b2YgYXQgZWFjaCBjYWxsIHNpdGUuCisyLiAgV2hlbiBjYWxsaW5nIHN1Yi1yb3V0aW5lcyBpbnNp
ZGUgYSBsb29wLCBtYWtlIHRoZSBsb29wIGl0ZXJhdG9yIHBhcnQgb2YgdGhlCisgICAgbWVzc2Fn
ZSBpbiBgU0NPUEVEX1RSQUNFYCBzdWNoIHRoYXQgeW91IGNhbiBrbm93IHdoaWNoIGl0ZXJhdGlv
biB0aGUgZmFpbHVyZQorICAgIGlzIGZyb20uCiszLiAgU29tZXRpbWVzIHRoZSBsaW5lIG51bWJl
ciBvZiB0aGUgdHJhY2UgcG9pbnQgaXMgZW5vdWdoIGZvciBpZGVudGlmeWluZyB0aGUKKyAgICBw
YXJ0aWN1bGFyIGludm9jYXRpb24gb2YgYSBzdWItcm91dGluZS4gSW4gdGhpcyBjYXNlLCB5b3Ug
ZG9uJ3QgaGF2ZSB0bworICAgIGNob29zZSBhIHVuaXF1ZSBtZXNzYWdlIGZvciBgU0NPUEVEX1RS
QUNFYC4gWW91IGNhbiBzaW1wbHkgdXNlIGAiImAuCis0LiAgWW91IGNhbiB1c2UgYFNDT1BFRF9U
UkFDRWAgaW4gYW4gaW5uZXIgc2NvcGUgd2hlbiB0aGVyZSBpcyBvbmUgaW4gdGhlIG91dGVyCisg
ICAgc2NvcGUuIEluIHRoaXMgY2FzZSwgYWxsIGFjdGl2ZSB0cmFjZSBwb2ludHMgd2lsbCBiZSBp
bmNsdWRlZCBpbiB0aGUgZmFpbHVyZQorICAgIG1lc3NhZ2VzLCBpbiByZXZlcnNlIG9yZGVyIHRo
ZXkgYXJlIGVuY291bnRlcmVkLgorNS4gIFRoZSB0cmFjZSBkdW1wIGlzIGNsaWNrYWJsZSBpbiBF
bWFjcyAtIGhpdCBgcmV0dXJuYCBvbiBhIGxpbmUgbnVtYmVyIGFuZAorICAgIHlvdSdsbCBiZSB0
YWtlbiB0byB0aGF0IGxpbmUgaW4gdGhlIHNvdXJjZSBmaWxlIQorCisqKkF2YWlsYWJpbGl0eSoq
OiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgUHJvcGFnYXRpbmcgRmF0YWwgRmFpbHVyZXMK
KworQSBjb21tb24gcGl0ZmFsbCB3aGVuIHVzaW5nIGBBU1NFUlRfKmAgYW5kIGBGQUlMKmAgaXMg
bm90IHVuZGVyc3RhbmRpbmcgdGhhdAord2hlbiB0aGV5IGZhaWwgdGhleSBvbmx5IGFib3J0IHRo
ZSBfY3VycmVudCBmdW5jdGlvbl8sIG5vdCB0aGUgZW50aXJlIHRlc3QuIEZvcgorZXhhbXBsZSwg
dGhlIGZvbGxvd2luZyB0ZXN0IHdpbGwgc2VnZmF1bHQ6CisKK2BgYGMrKwordm9pZCBTdWJyb3V0
aW5lKCkgeworICAvLyBHZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlIGFuZCBhYm9ydHMgdGhlIGN1
cnJlbnQgZnVuY3Rpb24uCisgIEFTU0VSVF9FUSgxLCAyKTsKKworICAvLyBUaGUgZm9sbG93aW5n
IHdvbid0IGJlIGV4ZWN1dGVkLgorICAuLi4KK30KKworVEVTVChGb29UZXN0LCBCYXIpIHsKKyAg
U3Vicm91dGluZSgpOyAgLy8gVGhlIGludGVuZGVkIGJlaGF2aW9yIGlzIGZvciB0aGUgZmF0YWwg
ZmFpbHVyZQorICAgICAgICAgICAgICAgICAvLyBpbiBTdWJyb3V0aW5lKCkgdG8gYWJvcnQgdGhl
IGVudGlyZSB0ZXN0LgorCisgIC8vIFRoZSBhY3R1YWwgYmVoYXZpb3I6IHRoZSBmdW5jdGlvbiBn
b2VzIG9uIGFmdGVyIFN1YnJvdXRpbmUoKSByZXR1cm5zLgorICBpbnQqIHAgPSBOVUxMOworICAq
cCA9IDM7ICAvLyBTZWdmYXVsdCEKK30KK2BgYAorCitUbyBhbGxldmlhdGUgdGhpcywgZ29vZ2xl
dGVzdCBwcm92aWRlcyB0aHJlZSBkaWZmZXJlbnQgc29sdXRpb25zLiBZb3UgY291bGQgdXNlCitl
aXRoZXIgZXhjZXB0aW9ucywgdGhlIGAoQVNTRVJUfEVYUEVDVClfTk9fRkFUQUxfRkFJTFVSRWAg
YXNzZXJ0aW9ucyBvciB0aGUKK2BIYXNGYXRhbEZhaWx1cmUoKWAgZnVuY3Rpb24uIFRoZXkgYXJl
IGRlc2NyaWJlZCBpbiB0aGUgZm9sbG93aW5nIHR3bworc3Vic2VjdGlvbnMuCisKKyMjIyMgQXNz
ZXJ0aW5nIG9uIFN1YnJvdXRpbmVzIHdpdGggYW4gZXhjZXB0aW9uCisKK1RoZSBmb2xsb3dpbmcg
Y29kZSBjYW4gdHVybiBBU1NFUlQtZmFpbHVyZSBpbnRvIGFuIGV4Y2VwdGlvbjoKKworYGBgYysr
CitjbGFzcyBUaHJvd0xpc3RlbmVyIDogcHVibGljIHRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlz
dGVuZXIgeworICB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgdGVzdGluZzo6VGVzdFBhcnRS
ZXN1bHQmIHJlc3VsdCkgb3ZlcnJpZGUgeworICAgIGlmIChyZXN1bHQudHlwZSgpID09IHRlc3Rp
bmc6OlRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlKSB7CisgICAgICB0aHJvdyB0ZXN0aW5n
OjpBc3NlcnRpb25FeGNlcHRpb24ocmVzdWx0KTsKKyAgICB9CisgIH0KK307CitpbnQgbWFpbihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgLi4uCisgIHRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5saXN0ZW5lcnMoKS5BcHBlbmQobmV3IFRocm93TGlzdGVuZXIpOworICByZXR1
cm4gUlVOX0FMTF9URVNUUygpOworfQorYGBgCisKK1RoaXMgbGlzdGVuZXIgc2hvdWxkIGJlIGFk
ZGVkIGFmdGVyIG90aGVyIGxpc3RlbmVycyBpZiB5b3UgaGF2ZSBhbnksIG90aGVyd2lzZQordGhl
eSB3b24ndCBzZWUgZmFpbGVkIGBPblRlc3RQYXJ0UmVzdWx0YC4KKworIyMjIyBBc3NlcnRpbmcg
b24gU3Vicm91dGluZXMKKworQXMgc2hvd24gYWJvdmUsIGlmIHlvdXIgdGVzdCBjYWxscyBhIHN1
YnJvdXRpbmUgdGhhdCBoYXMgYW4gYEFTU0VSVF8qYCBmYWlsdXJlCitpbiBpdCwgdGhlIHRlc3Qg
d2lsbCBjb250aW51ZSBhZnRlciB0aGUgc3Vicm91dGluZSByZXR1cm5zLiBUaGlzIG1heSBub3Qg
YmUgd2hhdAoreW91IHdhbnQuCisKK09mdGVuIHBlb3BsZSB3YW50IGZhdGFsIGZhaWx1cmVzIHRv
IHByb3BhZ2F0ZSBsaWtlIGV4Y2VwdGlvbnMuIEZvciB0aGF0Citnb29nbGV0ZXN0IG9mZmVycyB0
aGUgZm9sbG93aW5nIG1hY3JvczoKKworRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAg
ICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgfCBWZXJpZmllcwor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLQorYEFTU0VSVF9OT19GQVRBTF9GQUlMVVJF
KHN0YXRlbWVudCk7YCB8IGBFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRShzdGF0ZW1lbnQpO2AgfCBg
c3RhdGVtZW50YCBkb2Vzbid0IGdlbmVyYXRlIGFueSBuZXcgZmF0YWwgZmFpbHVyZXMgaW4gdGhl
IGN1cnJlbnQgdGhyZWFkLgorCitPbmx5IGZhaWx1cmVzIGluIHRoZSB0aHJlYWQgdGhhdCBleGVj
dXRlcyB0aGUgYXNzZXJ0aW9uIGFyZSBjaGVja2VkIHRvIGRldGVybWluZQordGhlIHJlc3VsdCBv
ZiB0aGlzIHR5cGUgb2YgYXNzZXJ0aW9ucy4gSWYgYHN0YXRlbWVudGAgY3JlYXRlcyBuZXcgdGhy
ZWFkcywKK2ZhaWx1cmVzIGluIHRoZXNlIHRocmVhZHMgYXJlIGlnbm9yZWQuCisKK0V4YW1wbGVz
OgorCitgYGBjKysKK0FTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEZvbygpKTsKKworaW50IGk7CitF
WFBFQ1RfTk9fRkFUQUxfRkFJTFVSRSh7CisgIGkgPSBCYXIoKTsKK30pOworYGBgCisKKyoqQXZh
aWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuIEFzc2VydGlvbnMgZnJvbSBtdWx0aXBs
ZSB0aHJlYWRzIGFyZQorY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgb24gV2luZG93cy4KKworIyMj
IyBDaGVja2luZyBmb3IgRmFpbHVyZXMgaW4gdGhlIEN1cnJlbnQgVGVzdAorCitgSGFzRmF0YWxG
YWlsdXJlKClgIGluIHRoZSBgOjp0ZXN0aW5nOjpUZXN0YCBjbGFzcyByZXR1cm5zIGB0cnVlYCBp
ZiBhbgorYXNzZXJ0aW9uIGluIHRoZSBjdXJyZW50IHRlc3QgaGFzIHN1ZmZlcmVkIGEgZmF0YWwg
ZmFpbHVyZS4gVGhpcyBhbGxvd3MKK2Z1bmN0aW9ucyB0byBjYXRjaCBmYXRhbCBmYWlsdXJlcyBp
biBhIHN1Yi1yb3V0aW5lIGFuZCByZXR1cm4gZWFybHkuCisKK2BgYGMrKworY2xhc3MgVGVzdCB7
CisgcHVibGljOgorICAuLi4KKyAgc3RhdGljIGJvb2wgSGFzRmF0YWxGYWlsdXJlKCk7Cit9Owor
YGBgCisKK1RoZSB0eXBpY2FsIHVzYWdlLCB3aGljaCBiYXNpY2FsbHkgc2ltdWxhdGVzIHRoZSBi
ZWhhdmlvciBvZiBhIHRocm93biBleGNlcHRpb24sCitpczoKKworYGBgYysrCitURVNUKEZvb1Rl
c3QsIEJhcikgeworICBTdWJyb3V0aW5lKCk7CisgIC8vIEFib3J0cyBpZiBTdWJyb3V0aW5lKCkg
aGFkIGEgZmF0YWwgZmFpbHVyZS4KKyAgaWYgKEhhc0ZhdGFsRmFpbHVyZSgpKSByZXR1cm47CisK
KyAgLy8gVGhlIGZvbGxvd2luZyB3b24ndCBiZSBleGVjdXRlZC4KKyAgLi4uCit9CitgYGAKKwor
SWYgYEhhc0ZhdGFsRmFpbHVyZSgpYCBpcyB1c2VkIG91dHNpZGUgb2YgYFRFU1QoKWAgLCBgVEVT
VF9GKClgICwgb3IgYSB0ZXN0CitmaXh0dXJlLCB5b3UgbXVzdCBhZGQgdGhlIGA6OnRlc3Rpbmc6
OlRlc3Q6OmAgcHJlZml4LCBhcyBpbjoKKworYGBgYysrCitpZiAoOjp0ZXN0aW5nOjpUZXN0OjpI
YXNGYXRhbEZhaWx1cmUoKSkgcmV0dXJuOworYGBgCisKK1NpbWlsYXJseSwgYEhhc05vbmZhdGFs
RmFpbHVyZSgpYCByZXR1cm5zIGB0cnVlYCBpZiB0aGUgY3VycmVudCB0ZXN0IGhhcyBhdAorbGVh
c3Qgb25lIG5vbi1mYXRhbCBmYWlsdXJlLCBhbmQgYEhhc0ZhaWx1cmUoKWAgcmV0dXJucyBgdHJ1
ZWAgaWYgdGhlIGN1cnJlbnQKK3Rlc3QgaGFzIGF0IGxlYXN0IG9uZSBmYWlsdXJlIG9mIGVpdGhl
ciBraW5kLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBM
b2dnaW5nIEFkZGl0aW9uYWwgSW5mb3JtYXRpb24KKworSW4geW91ciB0ZXN0IGNvZGUsIHlvdSBj
YW4gY2FsbCBgUmVjb3JkUHJvcGVydHkoImtleSIsIHZhbHVlKWAgdG8gbG9nIGFkZGl0aW9uYWwK
K2luZm9ybWF0aW9uLCB3aGVyZSBgdmFsdWVgIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4g
YGludGAuIFRoZSAqbGFzdCogdmFsdWUKK3JlY29yZGVkIGZvciBhIGtleSB3aWxsIGJlIGVtaXR0
ZWQgdG8gdGhlIFtYTUwgb3V0cHV0XSgjZ2VuZXJhdGluZy1hbi14bWwtcmVwb3J0KSBpZiB5b3UK
K3NwZWNpZnkgb25lLiBGb3IgZXhhbXBsZSwgdGhlIHRlc3QKKworYGBgYysrCitURVNUX0YoV2lk
Z2V0VXNhZ2VUZXN0LCBNaW5BbmRNYXhXaWRnZXRzKSB7CisgIFJlY29yZFByb3BlcnR5KCJNYXhp
bXVtV2lkZ2V0cyIsIENvbXB1dGVNYXhVc2FnZSgpKTsKKyAgUmVjb3JkUHJvcGVydHkoIk1pbmlt
dW1XaWRnZXRzIiwgQ29tcHV0ZU1pblVzYWdlKCkpOworfQorYGBgCisKK3dpbGwgb3V0cHV0IFhN
TCBsaWtlIHRoaXM6CisKK2BgYHhtbAorICAuLi4KKyAgICA8dGVzdGNhc2UgbmFtZT0iTWluQW5k
TWF4V2lkZ2V0cyIgc3RhdHVzPSJydW4iIHRpbWU9IjAuMDA2IiBjbGFzc25hbWU9IldpZGdldFVz
YWdlVGVzdCIgTWF4aW11bVdpZGdldHM9IjEyIiBNaW5pbXVtV2lkZ2V0cz0iOSIgLz4KKyAgLi4u
CitgYGAKKworPiBOT1RFOgorPgorPiAqICAgYFJlY29yZFByb3BlcnR5KClgIGlzIGEgc3RhdGlj
IG1lbWJlciBvZiB0aGUgYFRlc3RgIGNsYXNzLiBUaGVyZWZvcmUgaXQKKz4gICAgIG5lZWRzIHRv
IGJlIHByZWZpeGVkIHdpdGggYDo6dGVzdGluZzo6VGVzdDo6YCBpZiB1c2VkIG91dHNpZGUgb2Yg
dGhlCis+ICAgICBgVEVTVGAgYm9keSBhbmQgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4KKz4gKiAg
IGAqa2V5KmAgbXVzdCBiZSBhIHZhbGlkIFhNTCBhdHRyaWJ1dGUgbmFtZSwgYW5kIGNhbm5vdCBj
b25mbGljdCB3aXRoIHRoZQorPiAgICAgb25lcyBhbHJlYWR5IHVzZWQgYnkgZ29vZ2xldGVzdCAo
YG5hbWVgLCBgc3RhdHVzYCwgYHRpbWVgLCBgY2xhc3NuYW1lYCwKKz4gICAgIGB0eXBlX3BhcmFt
YCwgYW5kIGB2YWx1ZV9wYXJhbWApLgorPiAqICAgQ2FsbGluZyBgUmVjb3JkUHJvcGVydHkoKWAg
b3V0c2lkZSBvZiB0aGUgbGlmZXNwYW4gb2YgYSB0ZXN0IGlzIGFsbG93ZWQuCis+ICAgICBJZiBp
dCdzIGNhbGxlZCBvdXRzaWRlIG9mIGEgdGVzdCBidXQgYmV0d2VlbiBhIHRlc3QgY2FzZSdzCis+
ICAgICBgU2V0VXBUZXN0Q2FzZSgpYCBhbmQgYFRlYXJEb3duVGVzdENhc2UoKWAgbWV0aG9kcywg
aXQgd2lsbCBiZSBhdHRyaWJ1dGVkCis+ICAgICB0byB0aGUgWE1MIGVsZW1lbnQgZm9yIHRoZSB0
ZXN0IGNhc2UuIElmIGl0J3MgY2FsbGVkIG91dHNpZGUgb2YgYWxsIHRlc3QKKz4gICAgIGNhc2Vz
IChlLmcuIGluIGEgdGVzdCBlbnZpcm9ubWVudCksIGl0IHdpbGwgYmUgYXR0cmlidXRlZCB0byB0
aGUgdG9wLWxldmVsCis+ICAgICBYTUwgZWxlbWVudC4KKworKipBdmFpbGFiaWxpdHkqKjogTGlu
dXgsIFdpbmRvd3MsIE1hYy4KKworIyMgU2hhcmluZyBSZXNvdXJjZXMgQmV0d2VlbiBUZXN0cyBp
biB0aGUgU2FtZSBUZXN0IENhc2UKKworZ29vZ2xldGVzdCBjcmVhdGVzIGEgbmV3IHRlc3QgZml4
dHVyZSBvYmplY3QgZm9yIGVhY2ggdGVzdCBpbiBvcmRlciB0byBtYWtlCit0ZXN0cyBpbmRlcGVu
ZGVudCBhbmQgZWFzaWVyIHRvIGRlYnVnLiBIb3dldmVyLCBzb21ldGltZXMgdGVzdHMgdXNlIHJl
c291cmNlcwordGhhdCBhcmUgZXhwZW5zaXZlIHRvIHNldCB1cCwgbWFraW5nIHRoZSBvbmUtY29w
eS1wZXItdGVzdCBtb2RlbCBwcm9oaWJpdGl2ZWx5CitleHBlbnNpdmUuCisKK0lmIHRoZSB0ZXN0
cyBkb24ndCBjaGFuZ2UgdGhlIHJlc291cmNlLCB0aGVyZSdzIG5vIGhhcm0gaW4gdGhlaXIgc2hh
cmluZyBhCitzaW5nbGUgcmVzb3VyY2UgY29weS4gU28sIGluIGFkZGl0aW9uIHRvIHBlci10ZXN0
IHNldC11cC90ZWFyLWRvd24sIGdvb2dsZXRlc3QKK2Fsc28gc3VwcG9ydHMgcGVyLXRlc3QtY2Fz
ZSBzZXQtdXAvdGVhci1kb3duLiBUbyB1c2UgaXQ6CisKKzEuICBJbiB5b3VyIHRlc3QgZml4dHVy
ZSBjbGFzcyAoc2F5IGBGb29UZXN0YCApLCBkZWNsYXJlIGFzIGBzdGF0aWNgIHNvbWUgbWVtYmVy
CisgICAgdmFyaWFibGVzIHRvIGhvbGQgdGhlIHNoYXJlZCByZXNvdXJjZXMuCisxLiAgT3V0c2lk
ZSB5b3VyIHRlc3QgZml4dHVyZSBjbGFzcyAodHlwaWNhbGx5IGp1c3QgYmVsb3cgaXQpLCBkZWZp
bmUgdGhvc2UKKyAgICBtZW1iZXIgdmFyaWFibGVzLCBvcHRpb25hbGx5IGdpdmluZyB0aGVtIGlu
aXRpYWwgdmFsdWVzLgorMS4gIEluIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBjbGFzcywgZGVmaW5l
IGEgYHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKWAKKyAgICBmdW5jdGlvbiAocmVtZW1iZXIg
bm90IHRvIHNwZWxsIGl0IGFzICoqYFNldHVwVGVzdENhc2VgKiogd2l0aCBhIHNtYWxsIGB1YCEp
CisgICAgdG8gc2V0IHVwIHRoZSBzaGFyZWQgcmVzb3VyY2VzIGFuZCBhIGBzdGF0aWMgdm9pZCBU
ZWFyRG93blRlc3RDYXNlKClgCisgICAgZnVuY3Rpb24gdG8gdGVhciB0aGVtIGRvd24uCisKK1Ro
YXQncyBpdCEgZ29vZ2xldGVzdCBhdXRvbWF0aWNhbGx5IGNhbGxzIGBTZXRVcFRlc3RDYXNlKClg
IGJlZm9yZSBydW5uaW5nIHRoZQorKmZpcnN0IHRlc3QqIGluIHRoZSBgRm9vVGVzdGAgdGVzdCBj
YXNlIChpLmUuIGJlZm9yZSBjcmVhdGluZyB0aGUgZmlyc3QKK2BGb29UZXN0YCBvYmplY3QpLCBh
bmQgY2FsbHMgYFRlYXJEb3duVGVzdENhc2UoKWAgYWZ0ZXIgcnVubmluZyB0aGUgKmxhc3QgdGVz
dCoKK2luIGl0IChpLmUuIGFmdGVyIGRlbGV0aW5nIHRoZSBsYXN0IGBGb29UZXN0YCBvYmplY3Qp
LiBJbiBiZXR3ZWVuLCB0aGUgdGVzdHMgY2FuCit1c2UgdGhlIHNoYXJlZCByZXNvdXJjZXMuCisK
K1JlbWVtYmVyIHRoYXQgdGhlIHRlc3Qgb3JkZXIgaXMgdW5kZWZpbmVkLCBzbyB5b3VyIGNvZGUg
Y2FuJ3QgZGVwZW5kIG9uIGEgdGVzdAorcHJlY2VkaW5nIG9yIGZvbGxvd2luZyBhbm90aGVyLiBB
bHNvLCB0aGUgdGVzdHMgbXVzdCBlaXRoZXIgbm90IG1vZGlmeSB0aGUgc3RhdGUKK29mIGFueSBz
aGFyZWQgcmVzb3VyY2UsIG9yLCBpZiB0aGV5IGRvIG1vZGlmeSB0aGUgc3RhdGUsIHRoZXkgbXVz
dCByZXN0b3JlIHRoZQorc3RhdGUgdG8gaXRzIG9yaWdpbmFsIHZhbHVlIGJlZm9yZSBwYXNzaW5n
IGNvbnRyb2wgdG8gdGhlIG5leHQgdGVzdC4KKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgcGVyLXRl
c3QtY2FzZSBzZXQtdXAgYW5kIHRlYXItZG93bjoKKworYGBgYysrCitjbGFzcyBGb29UZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAvLyBQZXItdGVzdC1jYXNl
IHNldC11cC4KKyAgLy8gQ2FsbGVkIGJlZm9yZSB0aGUgZmlyc3QgdGVzdCBpbiB0aGlzIHRlc3Qg
Y2FzZS4KKyAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90IG5lZWRlZC4KKyAgc3RhdGljIHZvaWQg
U2V0VXBUZXN0Q2FzZSgpIHsKKyAgICBzaGFyZWRfcmVzb3VyY2VfID0gbmV3IC4uLjsKKyAgfQor
CisgIC8vIFBlci10ZXN0LWNhc2UgdGVhci1kb3duLgorICAvLyBDYWxsZWQgYWZ0ZXIgdGhlIGxh
c3QgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZS4KKyAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90IG5l
ZWRlZC4KKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBkZWxldGUgc2hh
cmVkX3Jlc291cmNlXzsKKyAgICBzaGFyZWRfcmVzb3VyY2VfID0gTlVMTDsKKyAgfQorCisgIC8v
IFlvdSBjYW4gZGVmaW5lIHBlci10ZXN0IHNldC11cCBsb2dpYyBhcyB1c3VhbC4KKyAgdmlydHVh
bCB2b2lkIFNldFVwKCkgeyAuLi4gfQorCisgIC8vIFlvdSBjYW4gZGVmaW5lIHBlci10ZXN0IHRl
YXItZG93biBsb2dpYyBhcyB1c3VhbC4KKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeyAuLi4g
fQorCisgIC8vIFNvbWUgZXhwZW5zaXZlIHJlc291cmNlIHNoYXJlZCBieSBhbGwgdGVzdHMuCisg
IHN0YXRpYyBUKiBzaGFyZWRfcmVzb3VyY2VfOworfTsKKworVCogRm9vVGVzdDo6c2hhcmVkX3Jl
c291cmNlXyA9IE5VTEw7CisKK1RFU1RfRihGb29UZXN0LCBUZXN0MSkgeworICAuLi4geW91IGNh
biByZWZlciB0byBzaGFyZWRfcmVzb3VyY2VfIGhlcmUgLi4uCit9CisKK1RFU1RfRihGb29UZXN0
LCBUZXN0MikgeworICAuLi4geW91IGNhbiByZWZlciB0byBzaGFyZWRfcmVzb3VyY2VfIGhlcmUg
Li4uCit9CitgYGAKKworTk9URTogVGhvdWdoIHRoZSBhYm92ZSBjb2RlIGRlY2xhcmVzIGBTZXRV
cFRlc3RDYXNlKClgIHByb3RlY3RlZCwgaXQgbWF5Citzb21ldGltZXMgYmUgbmVjZXNzYXJ5IHRv
IGRlY2xhcmUgaXQgcHVibGljLCBzdWNoIGFzIHdoZW4gdXNpbmcgaXQgd2l0aAorYFRFU1RfUGAu
CisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIEdsb2JhbCBT
ZXQtVXAgYW5kIFRlYXItRG93bgorCitKdXN0IGFzIHlvdSBjYW4gZG8gc2V0LXVwIGFuZCB0ZWFy
LWRvd24gYXQgdGhlIHRlc3QgbGV2ZWwgYW5kIHRoZSB0ZXN0IGNhc2UKK2xldmVsLCB5b3UgY2Fu
IGFsc28gZG8gaXQgYXQgdGhlIHRlc3QgcHJvZ3JhbSBsZXZlbC4gSGVyZSdzIGhvdy4KKworRmly
c3QsIHlvdSBzdWJjbGFzcyB0aGUgYDo6dGVzdGluZzo6RW52aXJvbm1lbnRgIGNsYXNzIHRvIGRl
ZmluZSBhIHRlc3QKK2Vudmlyb25tZW50LCB3aGljaCBrbm93cyBob3cgdG8gc2V0LXVwIGFuZCB0
ZWFyLWRvd246CisKK2BgYGMrKworY2xhc3MgRW52aXJvbm1lbnQgeworIHB1YmxpYzoKKyAgdmly
dHVhbCB+RW52aXJvbm1lbnQoKSB7fQorCisgIC8vIE92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGhv
dyB0byBzZXQgdXAgdGhlIGVudmlyb25tZW50LgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7fQor
CisgIC8vIE92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGhvdyB0byB0ZWFyIGRvd24gdGhlIGVudmly
b25tZW50LgorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7fQorfTsKK2BgYAorCitUaGVuLCB5
b3UgcmVnaXN0ZXIgYW4gaW5zdGFuY2Ugb2YgeW91ciBlbnZpcm9ubWVudCBjbGFzcyB3aXRoIGdv
b2dsZXRlc3QgYnkKK2NhbGxpbmcgdGhlIGA6OnRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9u
bWVudCgpYCBmdW5jdGlvbjoKKworYGBgYysrCitFbnZpcm9ubWVudCogQWRkR2xvYmFsVGVzdEVu
dmlyb25tZW50KEVudmlyb25tZW50KiBlbnYpOworYGBgCisKK05vdywgd2hlbiBgUlVOX0FMTF9U
RVNUUygpYCBpcyBjYWxsZWQsIGl0IGZpcnN0IGNhbGxzIHRoZSBgU2V0VXAoKWAgbWV0aG9kIG9m
Cit0aGUgZW52aXJvbm1lbnQgb2JqZWN0LCB0aGVuIHJ1bnMgdGhlIHRlc3RzIGlmIHRoZXJlIHdh
cyBubyBmYXRhbCBmYWlsdXJlcywgYW5kCitmaW5hbGx5IGNhbGxzIGBUZWFyRG93bigpYCBvZiB0
aGUgZW52aXJvbm1lbnQgb2JqZWN0LgorCitJdCdzIE9LIHRvIHJlZ2lzdGVyIG11bHRpcGxlIGVu
dmlyb25tZW50IG9iamVjdHMuIEluIHRoaXMgY2FzZSwgdGhlaXIgYFNldFVwKClgCit3aWxsIGJl
IGNhbGxlZCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgcmVnaXN0ZXJlZCwgYW5kIHRoZWlyIGBUZWFy
RG93bigpYCB3aWxsIGJlCitjYWxsZWQgaW4gdGhlIHJldmVyc2Ugb3JkZXIuCisKK05vdGUgdGhh
dCBnb29nbGV0ZXN0IHRha2VzIG93bmVyc2hpcCBvZiB0aGUgcmVnaXN0ZXJlZCBlbnZpcm9ubWVu
dCBvYmplY3RzLgorVGhlcmVmb3JlICoqZG8gbm90IGRlbGV0ZSB0aGVtKiogYnkgeW91cnNlbGYu
CisKK1lvdSBzaG91bGQgY2FsbCBgQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KClgIGJlZm9yZSBg
UlVOX0FMTF9URVNUUygpYCBpcyBjYWxsZWQsCitwcm9iYWJseSBpbiBgbWFpbigpYC4gSWYgeW91
IHVzZSBgZ3Rlc3RfbWFpbmAsIHlvdSBuZWVkIHRvIGNhbGwgdGhpcyBiZWZvcmUKK2BtYWluKClg
IHN0YXJ0cyBmb3IgaXQgdG8gdGFrZSBlZmZlY3QuIE9uZSB3YXkgdG8gZG8gdGhpcyBpcyB0byBk
ZWZpbmUgYSBnbG9iYWwKK3ZhcmlhYmxlIGxpa2UgdGhpczoKKworYGBgYysrCis6OnRlc3Rpbmc6
OkVudmlyb25tZW50KiBjb25zdCBmb29fZW52ID0KKyAgICA6OnRlc3Rpbmc6OkFkZEdsb2JhbFRl
c3RFbnZpcm9ubWVudChuZXcgRm9vRW52aXJvbm1lbnQpOworYGBgCisKK0hvd2V2ZXIsIHdlIHN0
cm9uZ2x5IHJlY29tbWVuZCB5b3UgdG8gd3JpdGUgeW91ciBvd24gYG1haW4oKWAgYW5kIGNhbGwK
K2BBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgdGhlcmUsIGFzIHJlbHlpbmcgb24gaW5pdGlh
bGl6YXRpb24gb2YgZ2xvYmFsCit2YXJpYWJsZXMgbWFrZXMgdGhlIGNvZGUgaGFyZGVyIHRvIHJl
YWQgYW5kIG1heSBjYXVzZSBwcm9ibGVtcyB3aGVuIHlvdSByZWdpc3RlcgorbXVsdGlwbGUgZW52
aXJvbm1lbnRzIGZyb20gZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXRzIGFuZCB0aGUgZW52aXJv
bm1lbnRzIGhhdmUKK2RlcGVuZGVuY2llcyBhbW9uZyB0aGVtIChyZW1lbWJlciB0aGF0IHRoZSBj
b21waWxlciBkb2Vzbid0IGd1YXJhbnRlZSB0aGUgb3JkZXIKK2luIHdoaWNoIGdsb2JhbCB2YXJp
YWJsZXMgZnJvbSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMgYXJlIGluaXRpYWxpemVkKS4K
KworIyMgVmFsdWUtUGFyYW1ldGVyaXplZCBUZXN0cworCisqVmFsdWUtcGFyYW1ldGVyaXplZCB0
ZXN0cyogYWxsb3cgeW91IHRvIHRlc3QgeW91ciBjb2RlIHdpdGggZGlmZmVyZW50CitwYXJhbWV0
ZXJzIHdpdGhvdXQgd3JpdGluZyBtdWx0aXBsZSBjb3BpZXMgb2YgdGhlIHNhbWUgdGVzdC4gVGhp
cyBpcyB1c2VmdWwgaW4gYQorbnVtYmVyIG9mIHNpdHVhdGlvbnMsIGZvciBleGFtcGxlOgorCisq
ICAgWW91IGhhdmUgYSBwaWVjZSBvZiBjb2RlIHdob3NlIGJlaGF2aW9yIGlzIGFmZmVjdGVkIGJ5
IG9uZSBvciBtb3JlCisgICAgY29tbWFuZC1saW5lIGZsYWdzLiBZb3Ugd2FudCB0byBtYWtlIHN1
cmUgeW91ciBjb2RlIHBlcmZvcm1zIGNvcnJlY3RseSBmb3IKKyAgICB2YXJpb3VzIHZhbHVlcyBv
ZiB0aG9zZSBmbGFncy4KKyogICBZb3Ugd2FudCB0byB0ZXN0IGRpZmZlcmVudCBpbXBsZW1lbnRh
dGlvbnMgb2YgYW4gT08gaW50ZXJmYWNlLgorKiAgIFlvdSB3YW50IHRvIHRlc3QgeW91ciBjb2Rl
IG92ZXIgdmFyaW91cyBpbnB1dHMgKGEuay5hLiBkYXRhLWRyaXZlbiB0ZXN0aW5nKS4KKyAgICBU
aGlzIGZlYXR1cmUgaXMgZWFzeSB0byBhYnVzZSwgc28gcGxlYXNlIGV4ZXJjaXNlIHlvdXIgZ29v
ZCBzZW5zZSB3aGVuIGRvaW5nCisgICAgaXQhCisKKyMjIyBIb3cgdG8gV3JpdGUgVmFsdWUtUGFy
YW1ldGVyaXplZCBUZXN0cworCitUbyB3cml0ZSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLCBm
aXJzdCB5b3Ugc2hvdWxkIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MuIEl0CittdXN0IGJlIGRlcml2
ZWQgZnJvbSBib3RoIGA6OnRlc3Rpbmc6OlRlc3RgIGFuZAorYDo6dGVzdGluZzo6V2l0aFBhcmFt
SW50ZXJmYWNlPFQ+YCAodGhlIGxhdHRlciBpcyBhIHB1cmUgaW50ZXJmYWNlKSwgd2hlcmUgYFRg
CitpcyB0aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuIEZvciBjb252ZW5pZW5jZSwg
eW91IGNhbiBqdXN0IGRlcml2ZSB0aGUKK2ZpeHR1cmUgY2xhc3MgZnJvbSBgOjp0ZXN0aW5nOjpU
ZXN0V2l0aFBhcmFtPFQ+YCwgd2hpY2ggaXRzZWxmIGlzIGRlcml2ZWQgZnJvbQorYm90aCBgOjp0
ZXN0aW5nOjpUZXN0YCBhbmQgYDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPFQ+YC4gYFRg
IGNhbiBiZSBhbnkKK2NvcHlhYmxlIHR5cGUuIElmIGl0J3MgYSByYXcgcG9pbnRlciwgeW91IGFy
ZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlCitsaWZlc3BhbiBvZiB0aGUgcG9pbnRlZCB2
YWx1ZXMuCisKK05PVEU6IElmIHlvdXIgdGVzdCBmaXh0dXJlIGRlZmluZXMgYFNldFVwVGVzdENh
c2UoKWAgb3IgYFRlYXJEb3duVGVzdENhc2UoKWAKK3RoZXkgbXVzdCBiZSBkZWNsYXJlZCAqKnB1
YmxpYyoqIHJhdGhlciB0aGFuICoqcHJvdGVjdGVkKiogaW4gb3JkZXIgdG8gdXNlCitgVEVTVF9Q
YC4KKworYGBgYysrCitjbGFzcyBGb29UZXN0IDoKKyAgICBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
V2l0aFBhcmFtPGNvbnN0IGNoYXIqPiB7CisgIC8vIFlvdSBjYW4gaW1wbGVtZW50IGFsbCB0aGUg
dXN1YWwgZml4dHVyZSBjbGFzcyBtZW1iZXJzIGhlcmUuCisgIC8vIFRvIGFjY2VzcyB0aGUgdGVz
dCBwYXJhbWV0ZXIsIGNhbGwgR2V0UGFyYW0oKSBmcm9tIGNsYXNzCisgIC8vIFRlc3RXaXRoUGFy
YW08VD4uCit9OworCisvLyBPciwgd2hlbiB5b3Ugd2FudCB0byBhZGQgcGFyYW1ldGVycyB0byBh
IHByZS1leGlzdGluZyBmaXh0dXJlIGNsYXNzOgorY2xhc3MgQmFzZVRlc3QgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpUZXN0IHsKKyAgLi4uCit9OworY2xhc3MgQmFyVGVzdCA6IHB1YmxpYyBCYXNlVGVz
dCwKKyAgICAgICAgICAgICAgICBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8
Y29uc3QgY2hhcio+IHsKKyAgLi4uCit9OworYGBgCisKK1RoZW4sIHVzZSB0aGUgYFRFU1RfUGAg
bWFjcm8gdG8gZGVmaW5lIGFzIG1hbnkgdGVzdCBwYXR0ZXJucyB1c2luZyB0aGlzIGZpeHR1cmUK
K2FzIHlvdSB3YW50LiBUaGUgYF9QYCBzdWZmaXggaXMgZm9yICJwYXJhbWV0ZXJpemVkIiBvciAi
cGF0dGVybiIsIHdoaWNoZXZlciB5b3UKK3ByZWZlciB0byB0aGluay4KKworYGBgYysrCitURVNU
X1AoRm9vVGVzdCwgRG9lc0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgYWNjZXNzIHRoZSB0
ZXN0IHBhcmFtZXRlciB3aXRoIHRoZSBHZXRQYXJhbSgpIG1ldGhvZAorICAvLyBvZiB0aGUgVGVz
dFdpdGhQYXJhbTxUPiBjbGFzczoKKyAgRVhQRUNUX1RSVUUoZm9vLkJsYWgoR2V0UGFyYW0oKSkp
OworICAuLi4KK30KKworVEVTVF9QKEZvb1Rlc3QsIEhhc0JsYWhCbGFoKSB7CisgIC4uLgorfQor
YGBgCisKK0ZpbmFsbHksIHlvdSBjYW4gdXNlIGBJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgdG8g
aW5zdGFudGlhdGUgdGhlIHRlc3QgY2FzZSB3aXRoCithbnkgc2V0IG9mIHBhcmFtZXRlcnMgeW91
IHdhbnQuIGdvb2dsZXRlc3QgZGVmaW5lcyBhIG51bWJlciBvZiBmdW5jdGlvbnMgZm9yCitnZW5l
cmF0aW5nIHRlc3QgcGFyYW1ldGVycy4gVGhleSByZXR1cm4gd2hhdCB3ZSBjYWxsIChzdXJwcmlz
ZSEpICpwYXJhbWV0ZXIKK2dlbmVyYXRvcnMqLiBIZXJlIGlzIGEgc3VtbWFyeSBvZiB0aGVtLCB3
aGljaCBhcmUgYWxsIGluIHRoZSBgdGVzdGluZ2AKK25hbWVzcGFjZToKKworfCBQYXJhbWV0ZXIg
R2VuZXJhdG9yICAgICAgICAgIHwgQmVoYXZpb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8Cit8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKK3wgYFJhbmdlKGJlZ2luLCBlbmQgWywg
c3RlcF0pYCB8IFlpZWxkcyB2YWx1ZXMgYHtiZWdpbiwgYmVnaW4rc3RlcCwgYmVnaW4rc3RlcCtz
dGVwLCAuLi59YC4gVGhlIHZhbHVlcyBkbyBub3QgaW5jbHVkZSBgZW5kYC4gYHN0ZXBgIGRlZmF1
bHRzIHRvIDEuICAgICAgfAorfCBgVmFsdWVzKHYxLCB2MiwgLi4uLCB2TilgICAgIHwgWWllbGRz
IHZhbHVlcyBge3YxLCB2MiwgLi4uLCB2Tn1gLiAgICAgICAgICB8Cit8IGBWYWx1ZXNJbihjb250
YWluZXIpYCBhbmQgYFZhbHVlc0luKGJlZ2luLGVuZClgICAgfCBZaWVsZHMgdmFsdWVzIGZyb20g
YSBDLXN0eWxlIGFycmF5LCBhbiBTVEwtc3R5bGUgY29udGFpbmVyLCBvciBhbiBpdGVyYXRvciBy
YW5nZSAgYFtiZWdpbiwgZW5kKWAuIHwKK3wgYEJvb2woKWAgICAgICAgICAgICAgICAgICAgICB8
IFlpZWxkcyBzZXF1ZW5jZSBge2ZhbHNlLCB0cnVlfWAuICAgICAgICAgICAgfAorfCBgQ29tYmlu
ZShnMSwgZzIsIC4uLiwgZ04pYCAgIHwgWWllbGRzIGFsbCBjb21iaW5hdGlvbnMgKENhcnRlc2lh
biBwcm9kdWN0KSBhcyBzdGRcOlw6dHVwbGVzIG9mIHRoZSB2YWx1ZXMgZ2VuZXJhdGVkIGJ5IHRo
ZSBgTmAgZ2VuZXJhdG9ycy4gICAgICAgICAgICB8CisKK0ZvciBtb3JlIGRldGFpbHMsIHNlZSB0
aGUgY29tbWVudHMgYXQgdGhlIGRlZmluaXRpb25zIG9mIHRoZXNlIGZ1bmN0aW9ucy4KKworVGhl
IGZvbGxvd2luZyBzdGF0ZW1lbnQgd2lsbCBpbnN0YW50aWF0ZSB0ZXN0cyBmcm9tIHRoZSBgRm9v
VGVzdGAgdGVzdCBjYXNlIGVhY2gKK3dpdGggcGFyYW1ldGVyIHZhbHVlcyBgIm1lZW55ImAsIGAi
bWlueSJgLCBhbmQgYCJtb2UiYC4KKworYGBgYysrCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChJ
bnN0YW50aWF0aW9uTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvb1Rlc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygibWVlbnkiLCAibWlueSIsICJt
b2UiKSk7CitgYGAKKworTk9URTogVGhlIGNvZGUgYWJvdmUgbXVzdCBiZSBwbGFjZWQgYXQgZ2xv
YmFsIG9yIG5hbWVzcGFjZSBzY29wZSwgbm90IGF0CitmdW5jdGlvbiBzY29wZS4KKworTk9URTog
RG9uJ3QgZm9yZ2V0IHRoaXMgc3RlcCEgSWYgeW91IGRvIHlvdXIgdGVzdCB3aWxsIHNpbGVudGx5
IHBhc3MsIGJ1dCBub25lCitvZiBpdHMgY2FzZXMgd2lsbCBldmVyIHJ1biEKKworVG8gZGlzdGlu
Z3Vpc2ggZGlmZmVyZW50IGluc3RhbmNlcyBvZiB0aGUgcGF0dGVybiAoeWVzLCB5b3UgY2FuIGlu
c3RhbnRpYXRlIGl0Cittb3JlIHRoYW4gb25jZSksIHRoZSBmaXJzdCBhcmd1bWVudCB0byBgSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1BgIGlzIGEgcHJlZml4Cit0aGF0IHdpbGwgYmUgYWRkZWQgdG8g
dGhlIGFjdHVhbCB0ZXN0IGNhc2UgbmFtZS4gUmVtZW1iZXIgdG8gcGljayB1bmlxdWUKK3ByZWZp
eGVzIGZvciBkaWZmZXJlbnQgaW5zdGFudGlhdGlvbnMuIFRoZSB0ZXN0cyBmcm9tIHRoZSBpbnN0
YW50aWF0aW9uIGFib3ZlCit3aWxsIGhhdmUgdGhlc2UgbmFtZXM6CisKKyogICBgSW5zdGFudGlh
dGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8wYCBmb3IgYCJtZWVueSJgCisqICAgYEluc3RhbnRp
YXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMWAgZm9yIGAibWlueSJgCisqICAgYEluc3RhbnRp
YXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMmAgZm9yIGAibW9lImAKKyogICBgSW5zdGFudGlh
dGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8wYCBmb3IgYCJtZWVueSJgCisqICAgYEluc3Rh
bnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMWAgZm9yIGAibWlueSJgCisqICAgYElu
c3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMmAgZm9yIGAibW9lImAKKworWW91
IGNhbiB1c2UgdGhlc2UgbmFtZXMgaW4gW2AtLWd0ZXN0X2ZpbHRlcmBdKCNydW5uaW5nLWEtc3Vi
c2V0LW9mLXRoZS10ZXN0cykuCisKK1RoaXMgc3RhdGVtZW50IHdpbGwgaW5zdGFudGlhdGUgYWxs
IHRlc3RzIGZyb20gYEZvb1Rlc3RgIGFnYWluLCBlYWNoIHdpdGgKK3BhcmFtZXRlciB2YWx1ZXMg
YCJjYXQiYCBhbmQgYCJkb2ciYDoKKworYGBgYysrCitjb25zdCBjaGFyKiBwZXRzW10gPSB7ImNh
dCIsICJkb2cifTsKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFub3RoZXJJbnN0YW50aWF0aW9u
TmFtZSwgRm9vVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVz
SW4ocGV0cykpOworYGBgCisKK1RoZSB0ZXN0cyBmcm9tIHRoZSBpbnN0YW50aWF0aW9uIGFib3Zl
IHdpbGwgaGF2ZSB0aGVzZSBuYW1lczoKKworKiAgIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUv
Rm9vVGVzdC5Eb2VzQmxhaC8wYCBmb3IgYCJjYXQiYAorKiAgIGBBbm90aGVySW5zdGFudGlhdGlv
bk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8xYCBmb3IgYCJkb2ciYAorKiAgIGBBbm90aGVySW5zdGFu
dGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8wYCBmb3IgYCJjYXQiYAorKiAgIGBBbm90
aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8xYCBmb3IgYCJkb2ciYAor
CitQbGVhc2Ugbm90ZSB0aGF0IGBJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgd2lsbCBpbnN0YW50
aWF0ZSAqYWxsKiB0ZXN0cyBpbiB0aGUKK2dpdmVuIHRlc3QgY2FzZSwgd2hldGhlciB0aGVpciBk
ZWZpbml0aW9ucyBjb21lIGJlZm9yZSBvciAqYWZ0ZXIqIHRoZQorYElOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QYCBzdGF0ZW1lbnQuCisKK1lvdSBjYW4gc2VlIHNhbXBsZTdfdW5pdHRlc3QuY2MgYW5k
IHNhbXBsZThfdW5pdHRlc3QuY2MgZm9yIG1vcmUgZXhhbXBsZXMuCisKKyoqQXZhaWxhYmlsaXR5
Kio6IExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYworCisj
IyMgQ3JlYXRpbmcgVmFsdWUtUGFyYW1ldGVyaXplZCBBYnN0cmFjdCBUZXN0cworCitJbiB0aGUg
YWJvdmUsIHdlIGRlZmluZSBhbmQgaW5zdGFudGlhdGUgYEZvb1Rlc3RgIGluIHRoZSAqc2FtZSog
c291cmNlIGZpbGUuCitTb21ldGltZXMgeW91IG1heSB3YW50IHRvIGRlZmluZSB2YWx1ZS1wYXJh
bWV0ZXJpemVkIHRlc3RzIGluIGEgbGlicmFyeSBhbmQgbGV0CitvdGhlciBwZW9wbGUgaW5zdGFu
dGlhdGUgdGhlbSBsYXRlci4gVGhpcyBwYXR0ZXJuIGlzIGtub3duIGFzICphYnN0cmFjdCB0ZXN0
cyouCitBcyBhbiBleGFtcGxlIG9mIGl0cyBhcHBsaWNhdGlvbiwgd2hlbiB5b3UgYXJlIGRlc2ln
bmluZyBhbiBpbnRlcmZhY2UgeW91IGNhbgord3JpdGUgYSBzdGFuZGFyZCBzdWl0ZSBvZiBhYnN0
cmFjdCB0ZXN0cyAocGVyaGFwcyB1c2luZyBhIGZhY3RvcnkgZnVuY3Rpb24gYXMKK3RoZSB0ZXN0
IHBhcmFtZXRlcikgdGhhdCBhbGwgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBpbnRlcmZhY2UgYXJl
IGV4cGVjdGVkIHRvCitwYXNzLiBXaGVuIHNvbWVvbmUgaW1wbGVtZW50cyB0aGUgaW50ZXJmYWNl
LCB0aGV5IGNhbiBpbnN0YW50aWF0ZSB5b3VyIHN1aXRlIHRvCitnZXQgYWxsIHRoZSBpbnRlcmZh
Y2UtY29uZm9ybWFuY2UgdGVzdHMgZm9yIGZyZWUuCisKK1RvIGRlZmluZSBhYnN0cmFjdCB0ZXN0
cywgeW91IHNob3VsZCBvcmdhbml6ZSB5b3VyIGNvZGUgbGlrZSB0aGlzOgorCisxLiAgUHV0IHRo
ZSBkZWZpbml0aW9uIG9mIHRoZSBwYXJhbWV0ZXJpemVkIHRlc3QgZml4dHVyZSBjbGFzcyAoZS5n
LiBgRm9vVGVzdGApCisgICAgaW4gYSBoZWFkZXIgZmlsZSwgc2F5IGBmb29fcGFyYW1fdGVzdC5o
YC4gVGhpbmsgb2YgdGhpcyBhcyAqZGVjbGFyaW5nKiB5b3VyCisgICAgYWJzdHJhY3QgdGVzdHMu
CisxLiAgUHV0IHRoZSBgVEVTVF9QYCBkZWZpbml0aW9ucyBpbiBgZm9vX3BhcmFtX3Rlc3QuY2Ng
LCB3aGljaCBpbmNsdWRlcworICAgIGBmb29fcGFyYW1fdGVzdC5oYC4gVGhpbmsgb2YgdGhpcyBh
cyAqaW1wbGVtZW50aW5nKiB5b3VyIGFic3RyYWN0IHRlc3RzLgorCitPbmNlIHRoZXkgYXJlIGRl
ZmluZWQsIHlvdSBjYW4gaW5zdGFudGlhdGUgdGhlbSBieSBpbmNsdWRpbmcgYGZvb19wYXJhbV90
ZXN0LmhgLAoraW52b2tpbmcgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKClgLCBhbmQgZGVwZW5k
aW5nIG9uIHRoZSBsaWJyYXJ5IHRhcmdldCB0aGF0Citjb250YWlucyBgZm9vX3BhcmFtX3Rlc3Qu
Y2NgLiBZb3UgY2FuIGluc3RhbnRpYXRlIHRoZSBzYW1lIGFic3RyYWN0IHRlc3QgY2FzZQorbXVs
dGlwbGUgdGltZXMsIHBvc3NpYmx5IGluIGRpZmZlcmVudCBzb3VyY2UgZmlsZXMuCisKKyMjIyBT
cGVjaWZ5aW5nIE5hbWVzIGZvciBWYWx1ZS1QYXJhbWV0ZXJpemVkIFRlc3QgUGFyYW1ldGVycwor
CitUaGUgb3B0aW9uYWwgbGFzdCBhcmd1bWVudCB0byBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ao
KWAgYWxsb3dzIHRoZSB1c2VyIHRvCitzcGVjaWZ5IGEgZnVuY3Rpb24gb3IgZnVuY3RvciB0aGF0
IGdlbmVyYXRlcyBjdXN0b20gdGVzdCBuYW1lIHN1ZmZpeGVzIGJhc2VkIG9uCit0aGUgdGVzdCBw
YXJhbWV0ZXJzLiBUaGUgZnVuY3Rpb24gc2hvdWxkIGFjY2VwdCBvbmUgYXJndW1lbnQgb2YgdHlw
ZQorYHRlc3Rpbmc6OlRlc3RQYXJhbUluZm88Y2xhc3MgUGFyYW1UeXBlPmAsIGFuZCByZXR1cm4g
YHN0ZDo6c3RyaW5nYC4KKworYHRlc3Rpbmc6OlByaW50VG9TdHJpbmdQYXJhbU5hbWVgIGlzIGEg
YnVpbHRpbiB0ZXN0IHN1ZmZpeCBnZW5lcmF0b3IgdGhhdAorcmV0dXJucyB0aGUgdmFsdWUgb2Yg
YHRlc3Rpbmc6OlByaW50VG9TdHJpbmcoR2V0UGFyYW0oKSlgLiBJdCBkb2VzIG5vdCB3b3JrIGZv
cgorYHN0ZDo6c3RyaW5nYCBvciBDIHN0cmluZ3MuCisKK05PVEU6IHRlc3QgbmFtZXMgbXVzdCBi
ZSBub24tZW1wdHksIHVuaXF1ZSwgYW5kIG1heSBvbmx5IGNvbnRhaW4gQVNDSUkKK2FscGhhbnVt
ZXJpYyBjaGFyYWN0ZXJzLiBJbiBwYXJ0aWN1bGFyLCB0aGV5IFtzaG91bGQgbm90IGNvbnRhaW4K
K3VuZGVyc2NvcmVzXShodHRwczovL2czZG9jLmNvcnAuZ29vZ2xlLmNvbS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvZzNkb2MvZmFxLm1kI25vLXVuZGVyc2NvcmVzKS4KKworYGBg
YysrCitjbGFzcyBNeVRlc3RDYXNlIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50
PiB7fTsKKworVEVTVF9QKE15VGVzdENhc2UsIE15VGVzdCkKK3sKKyAgc3RkOjpjb3V0IDw8ICJF
eGFtcGxlIFRlc3QgUGFyYW06ICIgPDwgR2V0UGFyYW0oKSA8PCBzdGQ6OmVuZGw7Cit9CisKK0lO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKE15R3JvdXAsIE15VGVzdENhc2UsIHRlc3Rpbmc6OlJhbmdl
KDAsIDEwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlByaW50VG9TdHJpbmdQ
YXJhbU5hbWUoKSk7CitgYGAKKworIyMgVHlwZWQgVGVzdHM8L2lkPgorCitTdXBwb3NlIHlvdSBo
YXZlIG11bHRpcGxlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kIHdh
bnQgdG8gbWFrZQorc3VyZSB0aGF0IGFsbCBvZiB0aGVtIHNhdGlzZnkgc29tZSBjb21tb24gcmVx
dWlyZW1lbnRzLiBPciwgeW91IG1heSBoYXZlIGRlZmluZWQKK3NldmVyYWwgdHlwZXMgdGhhdCBh
cmUgc3VwcG9zZWQgdG8gY29uZm9ybSB0byB0aGUgc2FtZSAiY29uY2VwdCIgYW5kIHlvdSB3YW50
IHRvCit2ZXJpZnkgaXQuIEluIGJvdGggY2FzZXMsIHlvdSB3YW50IHRoZSBzYW1lIHRlc3QgbG9n
aWMgcmVwZWF0ZWQgZm9yIGRpZmZlcmVudAordHlwZXMuCisKK1doaWxlIHlvdSBjYW4gd3JpdGUg
b25lIGBURVNUYCBvciBgVEVTVF9GYCBmb3IgZWFjaCB0eXBlIHlvdSB3YW50IHRvIHRlc3QgKGFu
ZAoreW91IG1heSBldmVuIGZhY3RvciB0aGUgdGVzdCBsb2dpYyBpbnRvIGEgZnVuY3Rpb24gdGVt
cGxhdGUgdGhhdCB5b3UgaW52b2tlIGZyb20KK3RoZSBgVEVTVGApLCBpdCdzIHRlZGlvdXMgYW5k
IGRvZXNuJ3Qgc2NhbGU6IGlmIHlvdSB3YW50IGBtYCB0ZXN0cyBvdmVyIGBuYAordHlwZXMsIHlv
dSdsbCBlbmQgdXAgd3JpdGluZyBgbSpuYCBgVEVTVGBzLgorCisqVHlwZWQgdGVzdHMqIGFsbG93
IHlvdSB0byByZXBlYXQgdGhlIHNhbWUgdGVzdCBsb2dpYyBvdmVyIGEgbGlzdCBvZiB0eXBlcy4g
WW91Citvbmx5IG5lZWQgdG8gd3JpdGUgdGhlIHRlc3QgbG9naWMgb25jZSwgYWx0aG91Z2ggeW91
IG11c3Qga25vdyB0aGUgdHlwZSBsaXN0Cit3aGVuIHdyaXRpbmcgdHlwZWQgdGVzdHMuIEhlcmUn
cyBob3cgeW91IGRvIGl0OgorCitGaXJzdCwgZGVmaW5lIGEgZml4dHVyZSBjbGFzcyB0ZW1wbGF0
ZS4gSXQgc2hvdWxkIGJlIHBhcmFtZXRlcml6ZWQgYnkgYSB0eXBlLgorUmVtZW1iZXIgdG8gZGVy
aXZlIGl0IGZyb20gYDo6dGVzdGluZzo6VGVzdGA6CisKK2BgYGMrKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHVibGlj
OgorICAuLi4KKyAgdHlwZWRlZiBzdGQ6Omxpc3Q8VD4gTGlzdDsKKyAgc3RhdGljIFQgc2hhcmVk
XzsKKyAgVCB2YWx1ZV87Cit9OworYGBgCisKK05leHQsIGFzc29jaWF0ZSBhIGxpc3Qgb2YgdHlw
ZXMgd2l0aCB0aGUgdGVzdCBjYXNlLCB3aGljaCB3aWxsIGJlIHJlcGVhdGVkIGZvcgorZWFjaCB0
eXBlIGluIHRoZSBsaXN0OgorCitgYGBjKysKK3VzaW5nIE15VHlwZXMgPSA6OnRlc3Rpbmc6OlR5
cGVzPGNoYXIsIGludCwgdW5zaWduZWQgaW50PjsKK1RZUEVEX1RFU1RfQ0FTRShGb29UZXN0LCBN
eVR5cGVzKTsKK2BgYAorCitUaGUgdHlwZSBhbGlhcyAoYHVzaW5nYCBvciBgdHlwZWRlZmApIGlz
IG5lY2Vzc2FyeSBmb3IgdGhlIGBUWVBFRF9URVNUX0NBU0VgCittYWNybyB0byBwYXJzZSBjb3Jy
ZWN0bHkuIE90aGVyd2lzZSB0aGUgY29tcGlsZXIgd2lsbCB0aGluayB0aGF0IGVhY2ggY29tbWEg
aW4KK3RoZSB0eXBlIGxpc3QgaW50cm9kdWNlcyBhIG5ldyBtYWNybyBhcmd1bWVudC4KKworVGhl
biwgdXNlIGBUWVBFRF9URVNUKClgIGluc3RlYWQgb2YgYFRFU1RfRigpYCB0byBkZWZpbmUgYSB0
eXBlZCB0ZXN0IGZvciB0aGlzCit0ZXN0IGNhc2UuIFlvdSBjYW4gcmVwZWF0IHRoaXMgYXMgbWFu
eSB0aW1lcyBhcyB5b3Ugd2FudDoKKworYGBgYysrCitUWVBFRF9URVNUKEZvb1Rlc3QsIERvZXNC
bGFoKSB7CisgIC8vIEluc2lkZSBhIHRlc3QsIHJlZmVyIHRvIHRoZSBzcGVjaWFsIG5hbWUgVHlw
ZVBhcmFtIHRvIGdldCB0aGUgdHlwZQorICAvLyBwYXJhbWV0ZXIuICBTaW5jZSB3ZSBhcmUgaW5z
aWRlIGEgZGVyaXZlZCBjbGFzcyB0ZW1wbGF0ZSwgQysrIHJlcXVpcmVzCisgIC8vIHVzIHRvIHZp
c2l0IHRoZSBtZW1iZXJzIG9mIEZvb1Rlc3QgdmlhICd0aGlzJy4KKyAgVHlwZVBhcmFtIG4gPSB0
aGlzLT52YWx1ZV87CisKKyAgLy8gVG8gdmlzaXQgc3RhdGljIG1lbWJlcnMgb2YgdGhlIGZpeHR1
cmUsIGFkZCB0aGUgJ1Rlc3RGaXh0dXJlOjonCisgIC8vIHByZWZpeC4KKyAgbiArPSBUZXN0Rml4
dHVyZTo6c2hhcmVkXzsKKworICAvLyBUbyByZWZlciB0byB0eXBlZGVmcyBpbiB0aGUgZml4dHVy
ZSwgYWRkIHRoZSAndHlwZW5hbWUgVGVzdEZpeHR1cmU6OicKKyAgLy8gcHJlZml4LiAgVGhlICd0
eXBlbmFtZScgaXMgcmVxdWlyZWQgdG8gc2F0aXNmeSB0aGUgY29tcGlsZXIuCisgIHR5cGVuYW1l
IFRlc3RGaXh0dXJlOjpMaXN0IHZhbHVlczsKKworICB2YWx1ZXMucHVzaF9iYWNrKG4pOworICAu
Li4KK30KKworVFlQRURfVEVTVChGb29UZXN0LCBIYXNQcm9wZXJ0eUEpIHsgLi4uIH0KK2BgYAor
CitZb3UgY2FuIHNlZSBzYW1wbGU2X3VuaXR0ZXN0LmNjCisKKyoqQXZhaWxhYmlsaXR5Kio6IExp
bnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYworCisjIyBUeXBl
LVBhcmFtZXRlcml6ZWQgVGVzdHMKKworKlR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyogYXJlIGxp
a2UgdHlwZWQgdGVzdHMsIGV4Y2VwdCB0aGF0IHRoZXkgZG9uJ3QgcmVxdWlyZQoreW91IHRvIGtu
b3cgdGhlIGxpc3Qgb2YgdHlwZXMgYWhlYWQgb2YgdGltZS4gSW5zdGVhZCwgeW91IGNhbiBkZWZp
bmUgdGhlIHRlc3QKK2xvZ2ljIGZpcnN0IGFuZCBpbnN0YW50aWF0ZSBpdCB3aXRoIGRpZmZlcmVu
dCB0eXBlIGxpc3RzIGxhdGVyLiBZb3UgY2FuIGV2ZW4KK2luc3RhbnRpYXRlIGl0IG1vcmUgdGhh
biBvbmNlIGluIHRoZSBzYW1lIHByb2dyYW0uCisKK0lmIHlvdSBhcmUgZGVzaWduaW5nIGFuIGlu
dGVyZmFjZSBvciBjb25jZXB0LCB5b3UgY2FuIGRlZmluZSBhIHN1aXRlIG9mCit0eXBlLXBhcmFt
ZXRlcml6ZWQgdGVzdHMgdG8gdmVyaWZ5IHByb3BlcnRpZXMgdGhhdCBhbnkgdmFsaWQgaW1wbGVt
ZW50YXRpb24gb2YKK3RoZSBpbnRlcmZhY2UvY29uY2VwdCBzaG91bGQgaGF2ZS4gVGhlbiwgdGhl
IGF1dGhvciBvZiBlYWNoIGltcGxlbWVudGF0aW9uIGNhbgoranVzdCBpbnN0YW50aWF0ZSB0aGUg
dGVzdCBzdWl0ZSB3aXRoIHRoZWlyIHR5cGUgdG8gdmVyaWZ5IHRoYXQgaXQgY29uZm9ybXMgdG8K
K3RoZSByZXF1aXJlbWVudHMsIHdpdGhvdXQgaGF2aW5nIHRvIHdyaXRlIHNpbWlsYXIgdGVzdHMg
cmVwZWF0ZWRseS4gSGVyZSdzIGFuCitleGFtcGxlOgorCitGaXJzdCwgZGVmaW5lIGEgZml4dHVy
ZSBjbGFzcyB0ZW1wbGF0ZSwgYXMgd2UgZGlkIHdpdGggdHlwZWQgdGVzdHM6CisKK2BgYGMrKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6
VGVzdCB7CisgIC4uLgorfTsKK2BgYAorCitOZXh0LCBkZWNsYXJlIHRoYXQgeW91IHdpbGwgZGVm
aW5lIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZToKKworYGBgYysrCitUWVBFRF9URVNU
X0NBU0VfUChGb29UZXN0KTsKK2BgYAorCitUaGVuLCB1c2UgYFRZUEVEX1RFU1RfUCgpYCB0byBk
ZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4gWW91IGNhbiByZXBlYXQKK3RoaXMgYXMg
bWFueSB0aW1lcyBhcyB5b3Ugd2FudDoKKworYGBgYysrCitUWVBFRF9URVNUX1AoRm9vVGVzdCwg
RG9lc0JsYWgpIHsKKyAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIgdG8gVHlwZVBhcmFtIHRvIGdl
dCB0aGUgdHlwZSBwYXJhbWV0ZXIuCisgIFR5cGVQYXJhbSBuID0gMDsKKyAgLi4uCit9CisKK1RZ
UEVEX1RFU1RfUChGb29UZXN0LCBIYXNQcm9wZXJ0eUEpIHsgLi4uIH0KK2BgYAorCitOb3cgdGhl
IHRyaWNreSBwYXJ0OiB5b3UgbmVlZCB0byByZWdpc3RlciBhbGwgdGVzdCBwYXR0ZXJucyB1c2lu
ZyB0aGUKK2BSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUGAgbWFjcm8gYmVmb3JlIHlvdSBjYW4g
aW5zdGFudGlhdGUgdGhlbS4gVGhlIGZpcnN0Cithcmd1bWVudCBvZiB0aGUgbWFjcm8gaXMgdGhl
IHRlc3QgY2FzZSBuYW1lOyB0aGUgcmVzdCBhcmUgdGhlIG5hbWVzIG9mIHRoZSB0ZXN0cworaW4g
dGhpcyB0ZXN0IGNhc2U6CisKK2BgYGMrKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoRm9v
VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERvZXNCbGFoLCBIYXNQcm9wZXJ0eUEp
OworYGBgCisKK0ZpbmFsbHksIHlvdSBhcmUgZnJlZSB0byBpbnN0YW50aWF0ZSB0aGUgcGF0dGVy
biB3aXRoIHRoZSB0eXBlcyB5b3Ugd2FudC4gSWYgeW91CitwdXQgdGhlIGFib3ZlIGNvZGUgaW4g
YSBoZWFkZXIgZmlsZSwgeW91IGNhbiBgI2luY2x1ZGVgIGl0IGluIG11bHRpcGxlIEMrKworc291
cmNlIGZpbGVzIGFuZCBpbnN0YW50aWF0ZSBpdCBtdWx0aXBsZSB0aW1lcy4KKworYGBgYysrCit0
eXBlZGVmIDo6dGVzdGluZzo6VHlwZXM8Y2hhciwgaW50LCB1bnNpZ25lZCBpbnQ+IE15VHlwZXM7
CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcyk7Citg
YGAKKworVG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50IGluc3RhbmNlcyBvZiB0aGUgcGF0dGVybiwg
dGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZQorYElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9Q
YCBtYWNybyBpcyBhIHByZWZpeCB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlCithY3R1YWwgdGVz
dCBjYXNlIG5hbWUuIFJlbWVtYmVyIHRvIHBpY2sgdW5pcXVlIHByZWZpeGVzIGZvciBkaWZmZXJl
bnQgaW5zdGFuY2VzLgorCitJbiB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoZSB0eXBlIGxpc3Qg
Y29udGFpbnMgb25seSBvbmUgdHlwZSwgeW91IGNhbiB3cml0ZQordGhhdCB0eXBlIGRpcmVjdGx5
IHdpdGhvdXQgYDo6dGVzdGluZzo6VHlwZXM8Li4uPmAsIGxpa2UgdGhpczoKKworYGBgYysrCitJ
TlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgaW50KTsKK2BgYAorCitZ
b3UgY2FuIHNlZSBgc2FtcGxlNl91bml0dGVzdC5jY2AgZm9yIGEgY29tcGxldGUgZXhhbXBsZS4K
KworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9y
IGFib3ZlKSwgTWFjCisKKyMjIFRlc3RpbmcgUHJpdmF0ZSBDb2RlCisKK0lmIHlvdSBjaGFuZ2Ug
eW91ciBzb2Z0d2FyZSdzIGludGVybmFsIGltcGxlbWVudGF0aW9uLCB5b3VyIHRlc3RzIHNob3Vs
ZCBub3QKK2JyZWFrIGFzIGxvbmcgYXMgdGhlIGNoYW5nZSBpcyBub3Qgb2JzZXJ2YWJsZSBieSB1
c2Vycy4gVGhlcmVmb3JlLCAqKnBlciB0aGUKK2JsYWNrLWJveCB0ZXN0aW5nIHByaW5jaXBsZSwg
bW9zdCBvZiB0aGUgdGltZSB5b3Ugc2hvdWxkIHRlc3QgeW91ciBjb2RlIHRocm91Z2gKK2l0cyBw
dWJsaWMgaW50ZXJmYWNlcy4qKgorCisqKklmIHlvdSBzdGlsbCBmaW5kIHlvdXJzZWxmIG5lZWRp
bmcgdG8gdGVzdCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBjb2RlLAorY29uc2lkZXIgaWYgdGhl
cmUncyBhIGJldHRlciBkZXNpZ24uKiogVGhlIGRlc2lyZSB0byB0ZXN0IGludGVybmFsCitpbXBs
ZW1lbnRhdGlvbiBpcyBvZnRlbiBhIHNpZ24gdGhhdCB0aGUgY2xhc3MgaXMgZG9pbmcgdG9vIG11
Y2guIENvbnNpZGVyCitleHRyYWN0aW5nIGFuIGltcGxlbWVudGF0aW9uIGNsYXNzLCBhbmQgdGVz
dGluZyBpdC4gVGhlbiB1c2UgdGhhdCBpbXBsZW1lbnRhdGlvbgorY2xhc3MgaW4gdGhlIG9yaWdp
bmFsIGNsYXNzLgorCitJZiB5b3UgYWJzb2x1dGVseSBoYXZlIHRvIHRlc3Qgbm9uLXB1YmxpYyBp
bnRlcmZhY2UgY29kZSB0aG91Z2gsIHlvdSBjYW4uIFRoZXJlCithcmUgdHdvIGNhc2VzIHRvIGNv
bnNpZGVyOgorCisqICAgU3RhdGljIGZ1bmN0aW9ucyAoICpub3QqIHRoZSBzYW1lIGFzIHN0YXRp
YyBtZW1iZXIgZnVuY3Rpb25zISkgb3IgdW5uYW1lZAorICAgIG5hbWVzcGFjZXMsIGFuZAorKiAg
IFByaXZhdGUgb3IgcHJvdGVjdGVkIGNsYXNzIG1lbWJlcnMKKworVG8gdGVzdCB0aGVtLCB3ZSB1
c2UgdGhlIGZvbGxvd2luZyBzcGVjaWFsIHRlY2huaXF1ZXM6CisKKyogICBCb3RoIHN0YXRpYyBm
dW5jdGlvbnMgYW5kIGRlZmluaXRpb25zL2RlY2xhcmF0aW9ucyBpbiBhbiB1bm5hbWVkIG5hbWVz
cGFjZQorICAgIGFyZSBvbmx5IHZpc2libGUgd2l0aGluIHRoZSBzYW1lIHRyYW5zbGF0aW9uIHVu
aXQuIFRvIHRlc3QgdGhlbSwgeW91IGNhbgorICAgIGAjaW5jbHVkZWAgdGhlIGVudGlyZSBgLmNj
YCBmaWxlIGJlaW5nIHRlc3RlZCBpbiB5b3VyIGAqX3Rlc3QuY2NgIGZpbGUuCisgICAgKGluY2x1
ZGluZyBgLmNjYCBmaWxlcyBpcyBub3QgYSBnb29kIHdheSB0byByZXVzZSBjb2RlIC0geW91IHNo
b3VsZCBub3QgZG8KKyAgICB0aGlzIGluIHByb2R1Y3Rpb24gY29kZSEpCisKKyAgICBIb3dldmVy
LCBhIGJldHRlciBhcHByb2FjaCBpcyB0byBtb3ZlIHRoZSBwcml2YXRlIGNvZGUgaW50byB0aGUK
KyAgICBgZm9vOjppbnRlcm5hbGAgbmFtZXNwYWNlLCB3aGVyZSBgZm9vYCBpcyB0aGUgbmFtZXNw
YWNlIHlvdXIgcHJvamVjdAorICAgIG5vcm1hbGx5IHVzZXMsIGFuZCBwdXQgdGhlIHByaXZhdGUg
ZGVjbGFyYXRpb25zIGluIGEgYCotaW50ZXJuYWwuaGAgZmlsZS4KKyAgICBZb3VyIHByb2R1Y3Rp
b24gYC5jY2AgZmlsZXMgYW5kIHlvdXIgdGVzdHMgYXJlIGFsbG93ZWQgdG8gaW5jbHVkZSB0aGlz
CisgICAgaW50ZXJuYWwgaGVhZGVyLCBidXQgeW91ciBjbGllbnRzIGFyZSBub3QuIFRoaXMgd2F5
LCB5b3UgY2FuIGZ1bGx5IHRlc3QgeW91cgorICAgIGludGVybmFsIGltcGxlbWVudGF0aW9uIHdp
dGhvdXQgbGVha2luZyBpdCB0byB5b3VyIGNsaWVudHMuCisKKyogICBQcml2YXRlIGNsYXNzIG1l
bWJlcnMgYXJlIG9ubHkgYWNjZXNzaWJsZSBmcm9tIHdpdGhpbiB0aGUgY2xhc3Mgb3IgYnkKKyAg
ICBmcmllbmRzLiBUbyBhY2Nlc3MgYSBjbGFzcycgcHJpdmF0ZSBtZW1iZXJzLCB5b3UgY2FuIGRl
Y2xhcmUgeW91ciB0ZXN0CisgICAgZml4dHVyZSBhcyBhIGZyaWVuZCB0byB0aGUgY2xhc3MgYW5k
IGRlZmluZSBhY2Nlc3NvcnMgaW4geW91ciBmaXh0dXJlLiBUZXN0cworICAgIHVzaW5nIHRoZSBm
aXh0dXJlIGNhbiB0aGVuIGFjY2VzcyB0aGUgcHJpdmF0ZSBtZW1iZXJzIG9mIHlvdXIgcHJvZHVj
dGlvbgorICAgIGNsYXNzIHZpYSB0aGUgYWNjZXNzb3JzIGluIHRoZSBmaXh0dXJlLiBOb3RlIHRo
YXQgZXZlbiB0aG91Z2ggeW91ciBmaXh0dXJlCisgICAgaXMgYSBmcmllbmQgdG8geW91ciBwcm9k
dWN0aW9uIGNsYXNzLCB5b3VyIHRlc3RzIGFyZSBub3QgYXV0b21hdGljYWxseQorICAgIGZyaWVu
ZHMgdG8gaXQsIGFzIHRoZXkgYXJlIHRlY2huaWNhbGx5IGRlZmluZWQgaW4gc3ViLWNsYXNzZXMg
b2YgdGhlCisgICAgZml4dHVyZS4KKworICAgIEFub3RoZXIgd2F5IHRvIHRlc3QgcHJpdmF0ZSBt
ZW1iZXJzIGlzIHRvIHJlZmFjdG9yIHRoZW0gaW50byBhbgorICAgIGltcGxlbWVudGF0aW9uIGNs
YXNzLCB3aGljaCBpcyB0aGVuIGRlY2xhcmVkIGluIGEgYCotaW50ZXJuYWwuaGAgZmlsZS4gWW91
cgorICAgIGNsaWVudHMgYXJlbid0IGFsbG93ZWQgdG8gaW5jbHVkZSB0aGlzIGhlYWRlciBidXQg
eW91ciB0ZXN0cyBjYW4uIFN1Y2ggaXMKKyAgICBjYWxsZWQgdGhlCisgICAgW1BpbXBsXShodHRw
czovL3d3dy5nYW1lZGV2Lm5ldC9hcnRpY2xlcy9wcm9ncmFtbWluZy9nZW5lcmFsLWFuZC1nYW1l
cGxheS1wcm9ncmFtbWluZy90aGUtYy1waW1wbC1yMTc5NC8pCisgICAgKFByaXZhdGUgSW1wbGVt
ZW50YXRpb24pIGlkaW9tLgorCisgICAgT3IsIHlvdSBjYW4gZGVjbGFyZSBhbiBpbmRpdmlkdWFs
IHRlc3QgYXMgYSBmcmllbmQgb2YgeW91ciBjbGFzcyBieSBhZGRpbmcKKyAgICB0aGlzIGxpbmUg
aW4gdGhlIGNsYXNzIGJvZHk6CisKKyAgICBgYGBjKysKKyAgICAgICAgRlJJRU5EX1RFU1QoVGVz
dENhc2VOYW1lLCBUZXN0TmFtZSk7CisgICAgYGBgCisKKyAgICBGb3IgZXhhbXBsZSwKKworICAg
IGBgYGMrKworICAgIC8vIGZvby5oCisKKyAgICAjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3RfcHJvZC5o
IgorCisgICAgY2xhc3MgRm9vIHsKKyAgICAgIC4uLgorICAgIHByaXZhdGU6CisgICAgICBGUklF
TkRfVEVTVChGb29UZXN0LCBCYXJSZXR1cm5zWmVyb09uTnVsbCk7CisKKyAgICAgIGludCBCYXIo
dm9pZCogeCk7CisgICAgfTsKKworICAgIC8vIGZvb190ZXN0LmNjCisgICAgLi4uCisgICAgVEVT
VChGb29UZXN0LCBCYXJSZXR1cm5zWmVyb09uTnVsbCkgeworICAgICAgRm9vIGZvbzsKKyAgICAg
IEVYUEVDVF9FUSgwLCBmb28uQmFyKE5VTEwpKTsgIC8vIFVzZXMgRm9vJ3MgcHJpdmF0ZSBtZW1i
ZXIgQmFyKCkuCisgICAgfQorICAgIGBgYAorCisgICAgUGF5IHNwZWNpYWwgYXR0ZW50aW9uIHdo
ZW4geW91ciBjbGFzcyBpcyBkZWZpbmVkIGluIGEgbmFtZXNwYWNlLCBhcyB5b3UKKyAgICBzaG91
bGQgZGVmaW5lIHlvdXIgdGVzdCBmaXh0dXJlcyBhbmQgdGVzdHMgaW4gdGhlIHNhbWUgbmFtZXNw
YWNlIGlmIHlvdSB3YW50CisgICAgdGhlbSB0byBiZSBmcmllbmRzIG9mIHlvdXIgY2xhc3MuIEZv
ciBleGFtcGxlLCBpZiB0aGUgY29kZSB0byBiZSB0ZXN0ZWQKKyAgICBsb29rcyBsaWtlOgorCisg
ICAgYGBgYysrCisgICAgbmFtZXNwYWNlIG15X25hbWVzcGFjZSB7CisKKyAgICBjbGFzcyBGb28g
eworICAgICAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7CisgICAgICBGUklFTkRfVEVTVChGb29UZXN0
LCBCYXIpOworICAgICAgRlJJRU5EX1RFU1QoRm9vVGVzdCwgQmF6KTsKKyAgICAgIC4uLiBkZWZp
bml0aW9uIG9mIHRoZSBjbGFzcyBGb28gLi4uCisgICAgfTsKKworICAgIH0gIC8vIG5hbWVzcGFj
ZSBteV9uYW1lc3BhY2UKKyAgICBgYGAKKworICAgIFlvdXIgdGVzdCBjb2RlIHNob3VsZCBiZSBz
b21ldGhpbmcgbGlrZToKKworICAgIGBgYGMrKworICAgIG5hbWVzcGFjZSBteV9uYW1lc3BhY2Ug
eworCisgICAgY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICAgICBw
cm90ZWN0ZWQ6CisgICAgICAuLi4KKyAgICB9OworCisgICAgVEVTVF9GKEZvb1Rlc3QsIEJhcikg
eyAuLi4gfQorICAgIFRFU1RfRihGb29UZXN0LCBCYXopIHsgLi4uIH0KKworICAgIH0gIC8vIG5h
bWVzcGFjZSBteV9uYW1lc3BhY2UKKyAgICBgYGAKKworCisjIyAiQ2F0Y2hpbmciIEZhaWx1cmVz
CisKK0lmIHlvdSBhcmUgYnVpbGRpbmcgYSB0ZXN0aW5nIHV0aWxpdHkgb24gdG9wIG9mIGdvb2ds
ZXRlc3QsIHlvdSdsbCB3YW50IHRvIHRlc3QKK3lvdXIgdXRpbGl0eS4gV2hhdCBmcmFtZXdvcmsg
d291bGQgeW91IHVzZSB0byB0ZXN0IGl0PyBnb29nbGV0ZXN0LCBvZiBjb3Vyc2UuCisKK1RoZSBj
aGFsbGVuZ2UgaXMgdG8gdmVyaWZ5IHRoYXQgeW91ciB0ZXN0aW5nIHV0aWxpdHkgcmVwb3J0cyBm
YWlsdXJlcyBjb3JyZWN0bHkuCitJbiBmcmFtZXdvcmtzIHRoYXQgcmVwb3J0IGEgZmFpbHVyZSBi
eSB0aHJvd2luZyBhbiBleGNlcHRpb24sIHlvdSBjb3VsZCBjYXRjaAordGhlIGV4Y2VwdGlvbiBh
bmQgYXNzZXJ0IG9uIGl0LiBCdXQgZ29vZ2xldGVzdCBkb2Vzbid0IHVzZSBleGNlcHRpb25zLCBz
byBob3cgZG8KK3dlIHRlc3QgdGhhdCBhIHBpZWNlIG9mIGNvZGUgZ2VuZXJhdGVzIGFuIGV4cGVj
dGVkIGZhaWx1cmU/CisKK2d1bml0LXNwaS5oIGNvbnRhaW5zIHNvbWUgY29uc3RydWN0cyB0byBk
byB0aGlzLiBBZnRlciAjaW5jbHVkaW5nIHRoaXMgaGVhZGVyLAoreW91IGNhbiB1c2UKKworYGBg
YysrCisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHN0YXRlbWVudCwgc3Vic3RyaW5nKTsKK2BgYAor
Cit0byBhc3NlcnQgdGhhdCBgc3RhdGVtZW50YCBnZW5lcmF0ZXMgYSBmYXRhbCAoZS5nLiBgQVNT
RVJUXypgKSBmYWlsdXJlIGluIHRoZQorY3VycmVudCB0aHJlYWQgd2hvc2UgbWVzc2FnZSBjb250
YWlucyB0aGUgZ2l2ZW4gYHN1YnN0cmluZ2AsIG9yIHVzZQorCitgYGBjKysKKyAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoc3RhdGVtZW50LCBzdWJzdHJpbmcpOworYGBgCisKK2lmIHlvdSBhcmUg
ZXhwZWN0aW5nIGEgbm9uLWZhdGFsIChlLmcuIGBFWFBFQ1RfKmApIGZhaWx1cmUuCisKK09ubHkg
ZmFpbHVyZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkIGFyZSBjaGVja2VkIHRvIGRldGVybWluZSB0
aGUgcmVzdWx0IG9mIHRoaXMKK3R5cGUgb2YgZXhwZWN0YXRpb25zLiBJZiBgc3RhdGVtZW50YCBj
cmVhdGVzIG5ldyB0aHJlYWRzLCBmYWlsdXJlcyBpbiB0aGVzZQordGhyZWFkcyBhcmUgYWxzbyBp
Z25vcmVkLiBJZiB5b3Ugd2FudCB0byBjYXRjaCBmYWlsdXJlcyBpbiBvdGhlciB0aHJlYWRzIGFz
Cit3ZWxsLCB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgbWFjcm9zIGluc3RlYWQ6CisKK2BgYGMr
KworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhzdGF0ZW1lbnQsIHN1YnN0
cmluZyk7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKHN0YXRlbWVu
dCwgc3Vic3RyaW5nKTsKK2BgYAorCitOT1RFOiBBc3NlcnRpb25zIGZyb20gbXVsdGlwbGUgdGhy
ZWFkcyBhcmUgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgb24gV2luZG93cy4KKworRm9yIHRlY2hu
aWNhbCByZWFzb25zLCB0aGVyZSBhcmUgc29tZSBjYXZlYXRzOgorCisxLiAgWW91IGNhbm5vdCBz
dHJlYW0gYSBmYWlsdXJlIG1lc3NhZ2UgdG8gZWl0aGVyIG1hY3JvLgorCisxLiAgYHN0YXRlbWVu
dGAgaW4gYEVYUEVDVF9GQVRBTF9GQUlMVVJFe19PTl9BTExfVEhSRUFEU30oKWAgY2Fubm90IHJl
ZmVyZW5jZQorICAgIGxvY2FsIG5vbi1zdGF0aWMgdmFyaWFibGVzIG9yIG5vbi1zdGF0aWMgbWVt
YmVycyBvZiBgdGhpc2Agb2JqZWN0LgorCisxLiAgYHN0YXRlbWVudGAgaW4gYEVYUEVDVF9GQVRB
TF9GQUlMVVJFe19PTl9BTExfVEhSRUFEU30oKSgpYCBjYW5ub3QgcmV0dXJuIGEKKyAgICB2YWx1
ZS4KKworCisjIyBHZXR0aW5nIHRoZSBDdXJyZW50IFRlc3QncyBOYW1lCisKK1NvbWV0aW1lcyBh
IGZ1bmN0aW9uIG1heSBuZWVkIHRvIGtub3cgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRseSBydW5u
aW5nIHRlc3QuCitGb3IgZXhhbXBsZSwgeW91IG1heSBiZSB1c2luZyB0aGUgYFNldFVwKClgIG1l
dGhvZCBvZiB5b3VyIHRlc3QgZml4dHVyZSB0byBzZXQKK3RoZSBnb2xkZW4gZmlsZSBuYW1lIGJh
c2VkIG9uIHdoaWNoIHRlc3QgaXMgcnVubmluZy4gVGhlIGA6OnRlc3Rpbmc6OlRlc3RJbmZvYAor
Y2xhc3MgaGFzIHRoaXMgaW5mb3JtYXRpb246CisKK2BgYGMrKworbmFtZXNwYWNlIHRlc3Rpbmcg
eworCitjbGFzcyBUZXN0SW5mbyB7CisgcHVibGljOgorICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNh
c2UgbmFtZSBhbmQgdGhlIHRlc3QgbmFtZSwgcmVzcGVjdGl2ZWx5LgorICAvLworICAvLyBEbyBO
T1QgZGVsZXRlIG9yIGZyZWUgdGhlIHJldHVybiB2YWx1ZSAtIGl0J3MgbWFuYWdlZCBieSB0aGUK
KyAgLy8gVGVzdEluZm8gY2xhc3MuCisgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lKCkgY29u
c3Q7CisgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKK307CisKK30KK2BgYAorCitUbyBvYnRh
aW4gYSBgVGVzdEluZm9gIG9iamVjdCBmb3IgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRlc3QsIGNh
bGwKK2BjdXJyZW50X3Rlc3RfaW5mbygpYCBvbiB0aGUgYFVuaXRUZXN0YCBzaW5nbGV0b24gb2Jq
ZWN0OgorCitgYGBjKysKKyAgLy8gR2V0cyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudGx5
IHJ1bm5pbmcgdGVzdC4KKyAgLy8gRG8gTk9UIGRlbGV0ZSB0aGUgcmV0dXJuZWQgb2JqZWN0IC0g
aXQncyBtYW5hZ2VkIGJ5IHRoZSBVbml0VGVzdCBjbGFzcy4KKyAgY29uc3QgOjp0ZXN0aW5nOjpU
ZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOworCisKKworICBwcmludGYoIldlIGFyZSBp
biB0ZXN0ICVzIG9mIHRlc3QgY2FzZSAlcy5cbiIsCisgICAgICAgICB0ZXN0X2luZm8tPm5hbWUo
KSwKKyAgICAgICAgIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7CitgYGAKKworYGN1cnJl
bnRfdGVzdF9pbmZvKClgIHJldHVybnMgYSBudWxsIHBvaW50ZXIgaWYgbm8gdGVzdCBpcyBydW5u
aW5nLiBJbgorcGFydGljdWxhciwgeW91IGNhbm5vdCBmaW5kIHRoZSB0ZXN0IGNhc2UgbmFtZSBp
biBgVGVzdENhc2VTZXRVcCgpYCwKK2BUZXN0Q2FzZVRlYXJEb3duKClgICh3aGVyZSB5b3Uga25v
dyB0aGUgdGVzdCBjYXNlIG5hbWUgaW1wbGljaXRseSksIG9yCitmdW5jdGlvbnMgY2FsbGVkIGZy
b20gdGhlbS4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMg
RXh0ZW5kaW5nIGdvb2dsZXRlc3QgYnkgSGFuZGxpbmcgVGVzdCBFdmVudHMKKworZ29vZ2xldGVz
dCBwcm92aWRlcyBhbiAqKmV2ZW50IGxpc3RlbmVyIEFQSSoqIHRvIGxldCB5b3UgcmVjZWl2ZSBu
b3RpZmljYXRpb25zCithYm91dCB0aGUgcHJvZ3Jlc3Mgb2YgYSB0ZXN0IHByb2dyYW0gYW5kIHRl
c3QgZmFpbHVyZXMuIFRoZSBldmVudHMgeW91IGNhbgorbGlzdGVuIHRvIGluY2x1ZGUgdGhlIHN0
YXJ0IGFuZCBlbmQgb2YgdGhlIHRlc3QgcHJvZ3JhbSwgYSB0ZXN0IGNhc2UsIG9yIGEgdGVzdAor
bWV0aG9kLCBhbW9uZyBvdGhlcnMuIFlvdSBtYXkgdXNlIHRoaXMgQVBJIHRvIGF1Z21lbnQgb3Ig
cmVwbGFjZSB0aGUgc3RhbmRhcmQKK2NvbnNvbGUgb3V0cHV0LCByZXBsYWNlIHRoZSBYTUwgb3V0
cHV0LCBvciBwcm92aWRlIGEgY29tcGxldGVseSBkaWZmZXJlbnQgZm9ybQorb2Ygb3V0cHV0LCBz
dWNoIGFzIGEgR1VJIG9yIGEgZGF0YWJhc2UuIFlvdSBjYW4gYWxzbyB1c2UgdGVzdCBldmVudHMg
YXMKK2NoZWNrcG9pbnRzIHRvIGltcGxlbWVudCBhIHJlc291cmNlIGxlYWsgY2hlY2tlciwgZm9y
IGV4YW1wbGUuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMj
IyBEZWZpbmluZyBFdmVudCBMaXN0ZW5lcnMKKworVG8gZGVmaW5lIGEgZXZlbnQgbGlzdGVuZXIs
IHlvdSBzdWJjbGFzcyBlaXRoZXIgdGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXIgb3IKK3Rlc3Rp
bmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgVGhlIGZvcm1lciBpcyBhbiAoYWJzdHJhY3QpIGlu
dGVyZmFjZSwgd2hlcmUKKyplYWNoIHB1cmUgdmlydHVhbCBtZXRob2QgY2FuIGJlIG92ZXJyaWRk
ZW4gdG8gaGFuZGxlIGEgdGVzdCBldmVudCogKEZvcgorZXhhbXBsZSwgd2hlbiBhIHRlc3Qgc3Rh
cnRzLCB0aGUgYE9uVGVzdFN0YXJ0KClgIG1ldGhvZCB3aWxsIGJlIGNhbGxlZC4pLiBUaGUKK2xh
dHRlciBwcm92aWRlcyBhbiBlbXB0eSBpbXBsZW1lbnRhdGlvbiBvZiBhbGwgbWV0aG9kcyBpbiB0
aGUgaW50ZXJmYWNlLCBzdWNoCit0aGF0IGEgc3ViY2xhc3Mgb25seSBuZWVkcyB0byBvdmVycmlk
ZSB0aGUgbWV0aG9kcyBpdCBjYXJlcyBhYm91dC4KKworV2hlbiBhbiBldmVudCBpcyBmaXJlZCwg
aXRzIGNvbnRleHQgaXMgcGFzc2VkIHRvIHRoZSBoYW5kbGVyIGZ1bmN0aW9uIGFzIGFuCithcmd1
bWVudC4gVGhlIGZvbGxvd2luZyBhcmd1bWVudCB0eXBlcyBhcmUgdXNlZDoKKworKiAgIFVuaXRU
ZXN0IHJlZmxlY3RzIHRoZSBzdGF0ZSBvZiB0aGUgZW50aXJlIHRlc3QgcHJvZ3JhbSwKKyogICBU
ZXN0Q2FzZSBoYXMgaW5mb3JtYXRpb24gYWJvdXQgYSB0ZXN0IGNhc2UsIHdoaWNoIGNhbiBjb250
YWluIG9uZSBvciBtb3JlCisgICAgdGVzdHMsCisqICAgVGVzdEluZm8gY29udGFpbnMgdGhlIHN0
YXRlIG9mIGEgdGVzdCwgYW5kCisqICAgVGVzdFBhcnRSZXN1bHQgcmVwcmVzZW50cyB0aGUgcmVz
dWx0IG9mIGEgdGVzdCBhc3NlcnRpb24uCisKK0FuIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb24gY2Fu
IGV4YW1pbmUgdGhlIGFyZ3VtZW50IGl0IHJlY2VpdmVzIHRvIGZpbmQgb3V0CitpbnRlcmVzdGlu
ZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXZlbnQgYW5kIHRoZSB0ZXN0IHByb2dyYW0ncyBzdGF0
ZS4KKworSGVyZSdzIGFuIGV4YW1wbGU6CisKK2BgYGMrKworICBjbGFzcyBNaW5pbWFsaXN0UHJp
bnRlciA6IHB1YmxpYyA6OnRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgeworICAgIC8v
IENhbGxlZCBiZWZvcmUgYSB0ZXN0IHN0YXJ0cy4KKyAgICB2aXJ0dWFsIHZvaWQgT25UZXN0U3Rh
cnQoY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CisgICAgICBwcmludGYo
IioqKiBUZXN0ICVzLiVzIHN0YXJ0aW5nLlxuIiwKKyAgICAgICAgICAgICB0ZXN0X2luZm8udGVz
dF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7CisgICAgfQorCisgICAgLy8gQ2FsbGVk
IGFmdGVyIGEgZmFpbGVkIGFzc2VydGlvbiBvciBhIFNVQ0NFU1MoKS4KKyAgICB2aXJ0dWFsIHZv
aWQgT25UZXN0UGFydFJlc3VsdChjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0JiB0ZXN0
X3BhcnRfcmVzdWx0KSB7CisgICAgICBwcmludGYoIiVzIGluICVzOiVkXG4lc1xuIiwKKyAgICAg
ICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LmZhaWxlZCgpID8gIioqKiBGYWlsdXJlIiA6ICJTdWNj
ZXNzIiwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LmZpbGVfbmFtZSgpLAorICAgICAg
ICAgICAgIHRlc3RfcGFydF9yZXN1bHQubGluZV9udW1iZXIoKSwKKyAgICAgICAgICAgICB0ZXN0
X3BhcnRfcmVzdWx0LnN1bW1hcnkoKSk7CisgICAgfQorCisgICAgLy8gQ2FsbGVkIGFmdGVyIGEg
dGVzdCBlbmRzLgorICAgIHZpcnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3QgOjp0ZXN0aW5nOjpU
ZXN0SW5mbyYgdGVzdF9pbmZvKSB7CisgICAgICBwcmludGYoIioqKiBUZXN0ICVzLiVzIGVuZGlu
Zy5cbiIsCisgICAgICAgICAgICAgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3RfaW5m
by5uYW1lKCkpOworICAgIH0KKyAgfTsKK2BgYAorCisjIyMgVXNpbmcgRXZlbnQgTGlzdGVuZXJz
CisKK1RvIHVzZSB0aGUgZXZlbnQgbGlzdGVuZXIgeW91IGhhdmUgZGVmaW5lZCwgYWRkIGFuIGlu
c3RhbmNlIG9mIGl0IHRvIHRoZQorZ29vZ2xldGVzdCBldmVudCBsaXN0ZW5lciBsaXN0IChyZXBy
ZXNlbnRlZCBieSBjbGFzcyBUZXN0RXZlbnRMaXN0ZW5lcnMgLSBub3RlCit0aGUgInMiIGF0IHRo
ZSBlbmQgb2YgdGhlIG5hbWUpIGluIHlvdXIgYG1haW4oKWAgZnVuY3Rpb24sIGJlZm9yZSBjYWxs
aW5nCitgUlVOX0FMTF9URVNUUygpYDoKKworYGBgYysrCitpbnQgbWFpbihpbnQgYXJnYywgY2hh
cioqIGFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Cisg
IC8vIEdldHMgaG9sZCBvZiB0aGUgZXZlbnQgbGlzdGVuZXIgbGlzdC4KKyAgOjp0ZXN0aW5nOjpU
ZXN0RXZlbnRMaXN0ZW5lcnMmIGxpc3RlbmVycyA9CisgICAgICAgIDo6dGVzdGluZzo6VW5pdFRl
c3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpOworICAvLyBBZGRzIGEgbGlzdGVuZXIgdG8g
dGhlIGVuZC4gIGdvb2dsZXRlc3QgdGFrZXMgdGhlIG93bmVyc2hpcC4KKyAgbGlzdGVuZXJzLkFw
cGVuZChuZXcgTWluaW1hbGlzdFByaW50ZXIpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwor
fQorYGBgCisKK1RoZXJlJ3Mgb25seSBvbmUgcHJvYmxlbTogdGhlIGRlZmF1bHQgdGVzdCByZXN1
bHQgcHJpbnRlciBpcyBzdGlsbCBpbiBlZmZlY3QsIHNvCitpdHMgb3V0cHV0IHdpbGwgbWluZ2xl
IHdpdGggdGhlIG91dHB1dCBmcm9tIHlvdXIgbWluaW1hbGlzdCBwcmludGVyLiBUbyBzdXBwcmVz
cwordGhlIGRlZmF1bHQgcHJpbnRlciwganVzdCByZWxlYXNlIGl0IGZyb20gdGhlIGV2ZW50IGxp
c3RlbmVyIGxpc3QgYW5kIGRlbGV0ZSBpdC4KK1lvdSBjYW4gZG8gc28gYnkgYWRkaW5nIG9uZSBs
aW5lOgorCitgYGBjKysKKyAgLi4uCisgIGRlbGV0ZSBsaXN0ZW5lcnMuUmVsZWFzZShsaXN0ZW5l
cnMuZGVmYXVsdF9yZXN1bHRfcHJpbnRlcigpKTsKKyAgbGlzdGVuZXJzLkFwcGVuZChuZXcgTWlu
aW1hbGlzdFByaW50ZXIpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworYGBgCisKK05vdywg
c2l0IGJhY2sgYW5kIGVuam95IGEgY29tcGxldGVseSBkaWZmZXJlbnQgb3V0cHV0IGZyb20geW91
ciB0ZXN0cy4gRm9yIG1vcmUKK2RldGFpbHMsIHlvdSBjYW4gcmVhZCB0aGlzIHNhbXBsZTlfdW5p
dHRlc3QuY2MKKworWW91IG1heSBhcHBlbmQgbW9yZSB0aGFuIG9uZSBsaXN0ZW5lciB0byB0aGUg
bGlzdC4gV2hlbiBhbiBgT24qU3RhcnQoKWAgb3IKK2BPblRlc3RQYXJ0UmVzdWx0KClgIGV2ZW50
IGlzIGZpcmVkLCB0aGUgbGlzdGVuZXJzIHdpbGwgcmVjZWl2ZSBpdCBpbiB0aGUgb3JkZXIKK3Ro
ZXkgYXBwZWFyIGluIHRoZSBsaXN0IChzaW5jZSBuZXcgbGlzdGVuZXJzIGFyZSBhZGRlZCB0byB0
aGUgZW5kIG9mIHRoZSBsaXN0LAordGhlIGRlZmF1bHQgdGV4dCBwcmludGVyIGFuZCB0aGUgZGVm
YXVsdCBYTUwgZ2VuZXJhdG9yIHdpbGwgcmVjZWl2ZSB0aGUgZXZlbnQKK2ZpcnN0KS4gQW4gYE9u
KkVuZCgpYCBldmVudCB3aWxsIGJlIHJlY2VpdmVkIGJ5IHRoZSBsaXN0ZW5lcnMgaW4gdGhlICpy
ZXZlcnNlKgorb3JkZXIuIFRoaXMgYWxsb3dzIG91dHB1dCBieSBsaXN0ZW5lcnMgYWRkZWQgbGF0
ZXIgdG8gYmUgZnJhbWVkIGJ5IG91dHB1dCBmcm9tCitsaXN0ZW5lcnMgYWRkZWQgZWFybGllci4K
KworIyMjIEdlbmVyYXRpbmcgRmFpbHVyZXMgaW4gTGlzdGVuZXJzCisKK1lvdSBtYXkgdXNlIGZh
aWx1cmUtcmFpc2luZyBtYWNyb3MgKGBFWFBFQ1RfKigpYCwgYEFTU0VSVF8qKClgLCBgRkFJTCgp
YCwgZXRjKQord2hlbiBwcm9jZXNzaW5nIGFuIGV2ZW50LiBUaGVyZSBhcmUgc29tZSByZXN0cmlj
dGlvbnM6CisKKzEuICBZb3UgY2Fubm90IGdlbmVyYXRlIGFueSBmYWlsdXJlIGluIGBPblRlc3RQ
YXJ0UmVzdWx0KClgIChvdGhlcndpc2UgaXQgd2lsbAorICAgIGNhdXNlIGBPblRlc3RQYXJ0UmVz
dWx0KClgIHRvIGJlIGNhbGxlZCByZWN1cnNpdmVseSkuCisxLiAgQSBsaXN0ZW5lciB0aGF0IGhh
bmRsZXMgYE9uVGVzdFBhcnRSZXN1bHQoKWAgaXMgbm90IGFsbG93ZWQgdG8gZ2VuZXJhdGUgYW55
CisgICAgZmFpbHVyZS4KKworV2hlbiB5b3UgYWRkIGxpc3RlbmVycyB0byB0aGUgbGlzdGVuZXIg
bGlzdCwgeW91IHNob3VsZCBwdXQgbGlzdGVuZXJzIHRoYXQKK2hhbmRsZSBgT25UZXN0UGFydFJl
c3VsdCgpYCAqYmVmb3JlKiBsaXN0ZW5lcnMgdGhhdCBjYW4gZ2VuZXJhdGUgZmFpbHVyZXMuIFRo
aXMKK2Vuc3VyZXMgdGhhdCBmYWlsdXJlcyBnZW5lcmF0ZWQgYnkgdGhlIGxhdHRlciBhcmUgYXR0
cmlidXRlZCB0byB0aGUgcmlnaHQgdGVzdAorYnkgdGhlIGZvcm1lci4KKworV2UgaGF2ZSBhIHNh
bXBsZSBvZiBmYWlsdXJlLXJhaXNpbmcgbGlzdGVuZXIgc2FtcGxlMTBfdW5pdHRlc3QuY2MKKwor
IyMgUnVubmluZyBUZXN0IFByb2dyYW1zOiBBZHZhbmNlZCBPcHRpb25zCisKK2dvb2dsZXRlc3Qg
dGVzdCBwcm9ncmFtcyBhcmUgb3JkaW5hcnkgZXhlY3V0YWJsZXMuIE9uY2UgYnVpbHQsIHlvdSBj
YW4gcnVuIHRoZW0KK2RpcmVjdGx5IGFuZCBhZmZlY3QgdGhlaXIgYmVoYXZpb3IgdmlhIHRoZSBm
b2xsb3dpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzCithbmQvb3IgY29tbWFuZCBsaW5lIGZsYWdz
LiBGb3IgdGhlIGZsYWdzIHRvIHdvcmssIHlvdXIgcHJvZ3JhbXMgbXVzdCBjYWxsCitgOjp0ZXN0
aW5nOjpJbml0R29vZ2xlVGVzdCgpYCBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9URVNUUygpYC4K
KworVG8gc2VlIGEgbGlzdCBvZiBzdXBwb3J0ZWQgZmxhZ3MgYW5kIHRoZWlyIHVzYWdlLCBwbGVh
c2UgcnVuIHlvdXIgdGVzdCBwcm9ncmFtCit3aXRoIHRoZSBgLS1oZWxwYCBmbGFnLiBZb3UgY2Fu
IGFsc28gdXNlIGAtaGAsIGAtP2AsIG9yIGAvP2AgZm9yIHNob3J0LgorCitJZiBhbiBvcHRpb24g
aXMgc3BlY2lmaWVkIGJvdGggYnkgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgYW5kIGJ5IGEgZmxh
ZywgdGhlCitsYXR0ZXIgdGFrZXMgcHJlY2VkZW5jZS4KKworIyMjIFNlbGVjdGluZyBUZXN0cwor
CisjIyMjIExpc3RpbmcgVGVzdCBOYW1lcworCitTb21ldGltZXMgaXQgaXMgbmVjZXNzYXJ5IHRv
IGxpc3QgdGhlIGF2YWlsYWJsZSB0ZXN0cyBpbiBhIHByb2dyYW0gYmVmb3JlCitydW5uaW5nIHRo
ZW0gc28gdGhhdCBhIGZpbHRlciBtYXkgYmUgYXBwbGllZCBpZiBuZWVkZWQuIEluY2x1ZGluZyB0
aGUgZmxhZworYC0tZ3Rlc3RfbGlzdF90ZXN0c2Agb3ZlcnJpZGVzIGFsbCBvdGhlciBmbGFncyBh
bmQgbGlzdHMgdGVzdHMgaW4gdGhlIGZvbGxvd2luZworZm9ybWF0OgorCitgYGBub25lCitUZXN0
Q2FzZTEuCisgIFRlc3ROYW1lMQorICBUZXN0TmFtZTIKK1Rlc3RDYXNlMi4KKyAgVGVzdE5hbWUK
K2BgYAorCitOb25lIG9mIHRoZSB0ZXN0cyBsaXN0ZWQgYXJlIGFjdHVhbGx5IHJ1biBpZiB0aGUg
ZmxhZyBpcyBwcm92aWRlZC4gVGhlcmUgaXMgbm8KK2NvcnJlc3BvbmRpbmcgZW52aXJvbm1lbnQg
dmFyaWFibGUgZm9yIHRoaXMgZmxhZy4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRv
d3MsIE1hYy4KKworIyMjIyBSdW5uaW5nIGEgU3Vic2V0IG9mIHRoZSBUZXN0cworCitCeSBkZWZh
dWx0LCBhIGdvb2dsZXRlc3QgcHJvZ3JhbSBydW5zIGFsbCB0ZXN0cyB0aGUgdXNlciBoYXMgZGVm
aW5lZC4gU29tZXRpbWVzLAoreW91IHdhbnQgdG8gcnVuIG9ubHkgYSBzdWJzZXQgb2YgdGhlIHRl
c3RzIChlLmcuIGZvciBkZWJ1Z2dpbmcgb3IgcXVpY2tseQordmVyaWZ5aW5nIGEgY2hhbmdlKS4g
SWYgeW91IHNldCB0aGUgYEdURVNUX0ZJTFRFUmAgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhl
CitgLS1ndGVzdF9maWx0ZXJgIGZsYWcgdG8gYSBmaWx0ZXIgc3RyaW5nLCBnb29nbGV0ZXN0IHdp
bGwgb25seSBydW4gdGhlIHRlc3RzCit3aG9zZSBmdWxsIG5hbWVzIChpbiB0aGUgZm9ybSBvZiBg
VGVzdENhc2VOYW1lLlRlc3ROYW1lYCkgbWF0Y2ggdGhlIGZpbHRlci4KKworVGhlIGZvcm1hdCBv
ZiBhIGZpbHRlciBpcyBhICdgOmAnLXNlcGFyYXRlZCBsaXN0IG9mIHdpbGRjYXJkIHBhdHRlcm5z
IChjYWxsZWQKK3RoZSAqcG9zaXRpdmUgcGF0dGVybnMqKSBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5
IGEgJ2AtYCcgYW5kIGFub3RoZXIKKydgOmAnLXNlcGFyYXRlZCBwYXR0ZXJuIGxpc3QgKGNhbGxl
ZCB0aGUgKm5lZ2F0aXZlIHBhdHRlcm5zKikuIEEgdGVzdCBtYXRjaGVzCit0aGUgZmlsdGVyIGlm
IGFuZCBvbmx5IGlmIGl0IG1hdGNoZXMgYW55IG9mIHRoZSBwb3NpdGl2ZSBwYXR0ZXJucyBidXQg
ZG9lcyBub3QKK21hdGNoIGFueSBvZiB0aGUgbmVnYXRpdmUgcGF0dGVybnMuCisKK0EgcGF0dGVy
biBtYXkgY29udGFpbiBgJyonYCAobWF0Y2hlcyBhbnkgc3RyaW5nKSBvciBgJz8nYCAobWF0Y2hl
cyBhbnkgc2luZ2xlCitjaGFyYWN0ZXIpLiBGb3IgY29udmVuaWVuY2UsIHRoZSBmaWx0ZXIKKwor
YCcqLU5lZ2F0aXZlUGF0dGVybnMnYCBjYW4gYmUgYWxzbyB3cml0dGVuIGFzIGAnLU5lZ2F0aXZl
UGF0dGVybnMnYC4KKworRm9yIGV4YW1wbGU6CisKKyogICBgLi9mb29fdGVzdGAgSGFzIG5vIGZs
YWcsIGFuZCB0aHVzIHJ1bnMgYWxsIGl0cyB0ZXN0cy4KKyogICBgLi9mb29fdGVzdCAtLWd0ZXN0
X2ZpbHRlcj0qYCBBbHNvIHJ1bnMgZXZlcnl0aGluZywgZHVlIHRvIHRoZSBzaW5nbGUKKyAgICBt
YXRjaC1ldmVyeXRoaW5nIGAqYCB2YWx1ZS4KKyogICBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRl
cj1Gb29UZXN0LipgIFJ1bnMgZXZlcnl0aGluZyBpbiB0ZXN0IGNhc2UgYEZvb1Rlc3RgCisgICAg
LgorKiAgIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPSpOdWxsKjoqQ29uc3RydWN0b3IqYCBS
dW5zIGFueSB0ZXN0IHdob3NlIGZ1bGwKKyAgICBuYW1lIGNvbnRhaW5zIGVpdGhlciBgIk51bGwi
YCBvciBgIkNvbnN0cnVjdG9yImAgLgorKiAgIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPS0q
RGVhdGhUZXN0LipgIFJ1bnMgYWxsIG5vbi1kZWF0aCB0ZXN0cy4KKyogICBgLi9mb29fdGVzdCAt
LWd0ZXN0X2ZpbHRlcj1Gb29UZXN0LiotRm9vVGVzdC5CYXJgIFJ1bnMgZXZlcnl0aGluZyBpbiB0
ZXN0CisgICAgY2FzZSBgRm9vVGVzdGAgZXhjZXB0IGBGb29UZXN0LkJhcmAuCisqICAgYC4vZm9v
X3Rlc3QgLS1ndGVzdF9maWx0ZXI9Rm9vVGVzdC4qOkJhclRlc3QuKi1Gb29UZXN0LkJhcjpCYXJU
ZXN0LkZvb2AgUnVucworICAgIGV2ZXJ5dGhpbmcgaW4gdGVzdCBjYXNlIGBGb29UZXN0YCBleGNl
cHQgYEZvb1Rlc3QuQmFyYCBhbmQgZXZlcnl0aGluZyBpbgorICAgIHRlc3QgY2FzZSBgQmFyVGVz
dGAgZXhjZXB0IGBCYXJUZXN0LkZvb2AuCisgICAgCisjIyMjIFRlbXBvcmFyaWx5IERpc2FibGlu
ZyBUZXN0cworCitJZiB5b3UgaGF2ZSBhIGJyb2tlbiB0ZXN0IHRoYXQgeW91IGNhbm5vdCBmaXgg
cmlnaHQgYXdheSwgeW91IGNhbiBhZGQgdGhlCitgRElTQUJMRURfYCBwcmVmaXggdG8gaXRzIG5h
bWUuIFRoaXMgd2lsbCBleGNsdWRlIGl0IGZyb20gZXhlY3V0aW9uLiBUaGlzIGlzCitiZXR0ZXIg
dGhhbiBjb21tZW50aW5nIG91dCB0aGUgY29kZSBvciB1c2luZyBgI2lmIDBgLCBhcyBkaXNhYmxl
ZCB0ZXN0cyBhcmUKK3N0aWxsIGNvbXBpbGVkIChhbmQgdGh1cyB3b24ndCByb3QpLgorCitJZiB5
b3UgbmVlZCB0byBkaXNhYmxlIGFsbCB0ZXN0cyBpbiBhIHRlc3QgY2FzZSwgeW91IGNhbiBlaXRo
ZXIgYWRkIGBESVNBQkxFRF9gCit0byB0aGUgZnJvbnQgb2YgdGhlIG5hbWUgb2YgZWFjaCB0ZXN0
LCBvciBhbHRlcm5hdGl2ZWx5IGFkZCBpdCB0byB0aGUgZnJvbnQgb2YKK3RoZSB0ZXN0IGNhc2Ug
bmFtZS4KKworRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVzdHMgd29uJ3QgYmUgcnVuIGJ5
IGdvb2dsZXRlc3QsIGV2ZW4gdGhvdWdoIHRoZXkKK3dpbGwgc3RpbGwgYmUgY29tcGlsZWQ6CisK
K2BgYGMrKworLy8gVGVzdHMgdGhhdCBGb28gZG9lcyBBYmMuCitURVNUKEZvb1Rlc3QsIERJU0FC
TEVEX0RvZXNBYmMpIHsgLi4uIH0KKworY2xhc3MgRElTQUJMRURfQmFyVGVzdCA6IHB1YmxpYyA6
OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKKworLy8gVGVzdHMgdGhhdCBCYXIgZG9lcyBYeXouCitU
RVNUX0YoRElTQUJMRURfQmFyVGVzdCwgRG9lc1h5eikgeyAuLi4gfQorYGBgCisKK05PVEU6IFRo
aXMgZmVhdHVyZSBzaG91bGQgb25seSBiZSB1c2VkIGZvciB0ZW1wb3JhcnkgcGFpbi1yZWxpZWYu
IFlvdSBzdGlsbCBoYXZlCit0byBmaXggdGhlIGRpc2FibGVkIHRlc3RzIGF0IGEgbGF0ZXIgZGF0
ZS4gQXMgYSByZW1pbmRlciwgZ29vZ2xldGVzdCB3aWxsIHByaW50CithIGJhbm5lciB3YXJuaW5n
IHlvdSBpZiBhIHRlc3QgcHJvZ3JhbSBjb250YWlucyBhbnkgZGlzYWJsZWQgdGVzdHMuCisKK1RJ
UDogWW91IGNhbiBlYXNpbHkgY291bnQgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB5b3Ug
aGF2ZSB1c2luZyBgZ3NlYXJjaGAKK2FuZC9vciBgZ3JlcGAuIFRoaXMgbnVtYmVyIGNhbiBiZSB1
c2VkIGFzIGEgbWV0cmljIGZvciBpbXByb3ZpbmcgeW91ciB0ZXN0CitxdWFsaXR5LgorCisqKkF2
YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMjIFRlbXBvcmFyaWx5IEVu
YWJsaW5nIERpc2FibGVkIFRlc3RzCisKK1RvIGluY2x1ZGUgZGlzYWJsZWQgdGVzdHMgaW4gdGVz
dCBleGVjdXRpb24sIGp1c3QgaW52b2tlIHRoZSB0ZXN0IHByb2dyYW0gd2l0aAordGhlIGAtLWd0
ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzYCBmbGFnIG9yIHNldCB0aGUKK2BHVEVTVF9BTFNP
X1JVTl9ESVNBQkxFRF9URVNUU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSB2YWx1ZSBvdGhl
ciB0aGFuIGAwYC4KK1lvdSBjYW4gY29tYmluZSB0aGlzIHdpdGggdGhlIGAtLWd0ZXN0X2ZpbHRl
cmAgZmxhZyB0byBmdXJ0aGVyIHNlbGVjdCB3aGljaAorZGlzYWJsZWQgdGVzdHMgdG8gcnVuLgor
CisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgUmVwZWF0aW5n
IHRoZSBUZXN0cworCitPbmNlIGluIGEgd2hpbGUgeW91J2xsIHJ1biBpbnRvIGEgdGVzdCB3aG9z
ZSByZXN1bHQgaXMgaGl0LW9yLW1pc3MuIFBlcmhhcHMgaXQKK3dpbGwgZmFpbCBvbmx5IDElIG9m
IHRoZSB0aW1lLCBtYWtpbmcgaXQgcmF0aGVyIGhhcmQgdG8gcmVwcm9kdWNlIHRoZSBidWcgdW5k
ZXIKK2EgZGVidWdnZXIuIFRoaXMgY2FuIGJlIGEgbWFqb3Igc291cmNlIG9mIGZydXN0cmF0aW9u
LgorCitUaGUgYC0tZ3Rlc3RfcmVwZWF0YCBmbGFnIGFsbG93cyB5b3UgdG8gcmVwZWF0IGFsbCAo
b3Igc2VsZWN0ZWQpIHRlc3QgbWV0aG9kcyBpbgorYSBwcm9ncmFtIG1hbnkgdGltZXMuIEhvcGVm
dWxseSwgYSBmbGFreSB0ZXN0IHdpbGwgZXZlbnR1YWxseSBmYWlsIGFuZCBnaXZlIHlvdQorYSBj
aGFuY2UgdG8gZGVidWcuIEhlcmUncyBob3cgdG8gdXNlIGl0OgorCitgYGBub25lCiskIGZvb190
ZXN0IC0tZ3Rlc3RfcmVwZWF0PTEwMDAKK1JlcGVhdCBmb29fdGVzdCAxMDAwIHRpbWVzIGFuZCBk
b24ndCBzdG9wIGF0IGZhaWx1cmVzLgorCiskIGZvb190ZXN0IC0tZ3Rlc3RfcmVwZWF0PS0xCitB
IG5lZ2F0aXZlIGNvdW50IG1lYW5zIHJlcGVhdGluZyBmb3JldmVyLgorCiskIGZvb190ZXN0IC0t
Z3Rlc3RfcmVwZWF0PTEwMDAgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlCitSZXBlYXQgZm9vX3Rl
c3QgMTAwMCB0aW1lcywgc3RvcHBpbmcgYXQgdGhlIGZpcnN0IGZhaWx1cmUuICBUaGlzCitpcyBl
c3BlY2lhbGx5IHVzZWZ1bCB3aGVuIHJ1bm5pbmcgdW5kZXIgYSBkZWJ1Z2dlcjogd2hlbiB0aGUg
dGVzdAorZmFpbHMsIGl0IHdpbGwgZHJvcCBpbnRvIHRoZSBkZWJ1Z2dlciBhbmQgeW91IGNhbiB0
aGVuIGluc3BlY3QKK3ZhcmlhYmxlcyBhbmQgc3RhY2tzLgorCiskIGZvb190ZXN0IC0tZ3Rlc3Rf
cmVwZWF0PTEwMDAgLS1ndGVzdF9maWx0ZXI9Rm9vQmFyLioKK1JlcGVhdCB0aGUgdGVzdHMgd2hv
c2UgbmFtZSBtYXRjaGVzIHRoZSBmaWx0ZXIgMTAwMCB0aW1lcy4KK2BgYAorCitJZiB5b3VyIHRl
c3QgcHJvZ3JhbSBjb250YWlucyBbZ2xvYmFsIHNldC11cC90ZWFyLWRvd25dKCNnbG9iYWwtc2V0
LXVwLWFuZC10ZWFyLWRvd24pIGNvZGUsIGl0Cit3aWxsIGJlIHJlcGVhdGVkIGluIGVhY2ggaXRl
cmF0aW9uIGFzIHdlbGwsIGFzIHRoZSBmbGFraW5lc3MgbWF5IGJlIGluIGl0LiBZb3UKK2NhbiBh
bHNvIHNwZWNpZnkgdGhlIHJlcGVhdCBjb3VudCBieSBzZXR0aW5nIHRoZSBgR1RFU1RfUkVQRUFU
YCBlbnZpcm9ubWVudAordmFyaWFibGUuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5k
b3dzLCBNYWMuCisKKyMjIyBTaHVmZmxpbmcgdGhlIFRlc3RzCisKK1lvdSBjYW4gc3BlY2lmeSB0
aGUgYC0tZ3Rlc3Rfc2h1ZmZsZWAgZmxhZyAob3Igc2V0IHRoZSBgR1RFU1RfU0hVRkZMRWAKK2Vu
dmlyb25tZW50IHZhcmlhYmxlIHRvIGAxYCkgdG8gcnVuIHRoZSB0ZXN0cyBpbiBhIHByb2dyYW0g
aW4gYSByYW5kb20gb3JkZXIuCitUaGlzIGhlbHBzIHRvIHJldmVhbCBiYWQgZGVwZW5kZW5jaWVz
IGJldHdlZW4gdGVzdHMuCisKK0J5IGRlZmF1bHQsIGdvb2dsZXRlc3QgdXNlcyBhIHJhbmRvbSBz
ZWVkIGNhbGN1bGF0ZWQgZnJvbSB0aGUgY3VycmVudCB0aW1lLgorVGhlcmVmb3JlIHlvdSdsbCBn
ZXQgYSBkaWZmZXJlbnQgb3JkZXIgZXZlcnkgdGltZS4gVGhlIGNvbnNvbGUgb3V0cHV0IGluY2x1
ZGVzCit0aGUgcmFuZG9tIHNlZWQgdmFsdWUsIHN1Y2ggdGhhdCB5b3UgY2FuIHJlcHJvZHVjZSBh
biBvcmRlci1yZWxhdGVkIHRlc3QgZmFpbHVyZQorbGF0ZXIuIFRvIHNwZWNpZnkgdGhlIHJhbmRv
bSBzZWVkIGV4cGxpY2l0bHksIHVzZSB0aGUgYC0tZ3Rlc3RfcmFuZG9tX3NlZWQ9U0VFRGAKK2Zs
YWcgKG9yIHNldCB0aGUgYEdURVNUX1JBTkRPTV9TRUVEYCBlbnZpcm9ubWVudCB2YXJpYWJsZSks
IHdoZXJlIGBTRUVEYCBpcyBhbgoraW50ZWdlciBpbiB0aGUgcmFuZ2UgWzAsIDk5OTk5XS4gVGhl
IHNlZWQgdmFsdWUgMCBpcyBzcGVjaWFsOiBpdCB0ZWxscworZ29vZ2xldGVzdCB0byBkbyB0aGUg
ZGVmYXVsdCBiZWhhdmlvciBvZiBjYWxjdWxhdGluZyB0aGUgc2VlZCBmcm9tIHRoZSBjdXJyZW50
Cit0aW1lLgorCitJZiB5b3UgY29tYmluZSB0aGlzIHdpdGggYC0tZ3Rlc3RfcmVwZWF0PU5gLCBn
b29nbGV0ZXN0IHdpbGwgcGljayBhIGRpZmZlcmVudAorcmFuZG9tIHNlZWQgYW5kIHJlLXNodWZm
bGUgdGhlIHRlc3RzIGluIGVhY2ggaXRlcmF0aW9uLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51
eCwgV2luZG93cywgTWFjLgorCisjIyMgQ29udHJvbGxpbmcgVGVzdCBPdXRwdXQKKworIyMjIyBD
b2xvcmVkIFRlcm1pbmFsIE91dHB1dAorCitnb29nbGV0ZXN0IGNhbiB1c2UgY29sb3JzIGluIGl0
cyB0ZXJtaW5hbCBvdXRwdXQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc3BvdCB0aGUKK2ltcG9ydGFu
dCBpbmZvcm1hdGlvbjoKKworLi4uPGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbiI+Wy0t
LS0tLS0tLS1dPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4gMSB0ZXN0IGZyb20gRm9vVGVzdDxi
ci8+Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPlsgUlVOICAgICAgXTxzcGFuIHN0eWxlPSJj
b2xvcjpibGFjayI+IEZvb1Rlc3QuRG9lc0FiYzxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3Jl
ZW4iPlsgICAgICAgT0sgXTxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+IEZvb1Rlc3QuRG9lc0Fi
Yzxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPlstLS0tLS0tLS0tXTxzcGFuIHN0eWxl
PSJjb2xvcjpibGFjayI+IDIgdGVzdHMgZnJvbSBCYXJUZXN0PGJyLz4KKzxzcGFuIHN0eWxlPSJj
b2xvcjpncmVlbiI+WyBSVU4gICAgICBdPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4gQmFyVGVz
dC5IYXNYeXpQcm9wZXJ0eTxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPlsgICAgICAg
T0sgXTxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+IEJhclRlc3QuSGFzWHl6UHJvcGVydHk8YnIv
PgorPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuIj5bIFJVTiAgICAgIF08c3BhbiBzdHlsZT0iY29s
b3I6YmxhY2siPiBCYXJUZXN0LlJldHVybnNUcnVlT25TdWNjZXNzPGJyLz4KKy4uLiBzb21lIGVy
cm9yIG1lc3NhZ2VzIC4uLjxici8+Cis8c3BhbiAgIHN0eWxlPSJjb2xvcjpyZWQiPlsgIEZBSUxF
RCAgXSA8c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPkJhclRlc3QuUmV0dXJuc1RydWVPblN1Y2Nl
c3M8YnIvPgorLi4uPGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbiI+Wz09PT09PT09PT1d
PHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4gMzAgdGVzdHMgZnJvbSAxNCB0ZXN0IGNhc2VzIHJh
bi48YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuIj5bICBQQVNTRUQgIF08c3BhbiBzdHls
ZT0iY29sb3I6YmxhY2siPiAyOCB0ZXN0cy48YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOnJlZCI+
WyAgRkFJTEVEICBdPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4gMiB0ZXN0cywgbGlzdGVkIGJl
bG93Ojxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6cmVkIj5bICBGQUlMRUQgIF08c3BhbiBzdHls
ZT0iY29sb3I6YmxhY2siPiBCYXJUZXN0LlJldHVybnNUcnVlT25TdWNjZXNzPGJyLz4KKzxzcGFu
IHN0eWxlPSJjb2xvcjpyZWQiPlsgIEZBSUxFRCAgXTxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+
IEFub3RoZXJUZXN0LkRvZXNYeXo8YnIvPgorICAyIEZBSUxFRCBURVNUUworCitZb3UgY2FuIHNl
dCB0aGUgYEdURVNUX0NPTE9SYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUgYC0tZ3Rlc3Rf
Y29sb3JgCitjb21tYW5kIGxpbmUgZmxhZyB0byBgeWVzYCwgYG5vYCwgb3IgYGF1dG9gICh0aGUg
ZGVmYXVsdCkgdG8gZW5hYmxlIGNvbG9ycywKK2Rpc2FibGUgY29sb3JzLCBvciBsZXQgZ29vZ2xl
dGVzdCBkZWNpZGUuIFdoZW4gdGhlIHZhbHVlIGlzIGBhdXRvYCwgZ29vZ2xldGVzdAord2lsbCB1
c2UgY29sb3JzIGlmIGFuZCBvbmx5IGlmIHRoZSBvdXRwdXQgZ29lcyB0byBhIHRlcm1pbmFsIGFu
ZCAob24gbm9uLVdpbmRvd3MKK3BsYXRmb3JtcykgdGhlIGBURVJNYCBlbnZpcm9ubWVudCB2YXJp
YWJsZSBpcyBzZXQgdG8gYHh0ZXJtYCBvciBgeHRlcm0tY29sb3JgLgorCisgKipBdmFpbGFiaWxp
dHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIyBTdXBwcmVzc2luZyB0aGUgRWxhcHNl
ZCBUaW1lCisKK0J5IGRlZmF1bHQsIGdvb2dsZXRlc3QgcHJpbnRzIHRoZSB0aW1lIGl0IHRha2Vz
IHRvIHJ1biBlYWNoIHRlc3QuIFRvIGRpc2FibGUKK3RoYXQsIHJ1biB0aGUgdGVzdCBwcm9ncmFt
IHdpdGggdGhlIGAtLWd0ZXN0X3ByaW50X3RpbWU9MGAgY29tbWFuZCBsaW5lIGZsYWcsIG9yCitz
ZXQgdGhlIEdURVNUX1BSSU5UX1RJTUUgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYDBgLgorCisq
KkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMjIFN1cHByZXNzaW5n
IFVURi04IFRleHQgT3V0cHV0CisKK0luIGNhc2Ugb2YgYXNzZXJ0aW9uIGZhaWx1cmVzLCBnb29n
bGV0ZXN0IHByaW50cyBleHBlY3RlZCBhbmQgYWN0dWFsIHZhbHVlcyBvZgordHlwZSBgc3RyaW5n
YCBib3RoIGFzIGhleC1lbmNvZGVkIHN0cmluZ3MgYXMgd2VsbCBhcyBpbiByZWFkYWJsZSBVVEYt
OCB0ZXh0IGlmCit0aGV5IGNvbnRhaW4gdmFsaWQgbm9uLUFTQ0lJIFVURi04IGNoYXJhY3RlcnMu
IElmIHlvdSB3YW50IHRvIHN1cHByZXNzIHRoZSBVVEYtOAordGV4dCBiZWNhdXNlLCBmb3IgZXhh
bXBsZSwgeW91IGRvbid0IGhhdmUgYW4gVVRGLTggY29tcGF0aWJsZSBvdXRwdXQgbWVkaXVtLCBy
dW4KK3RoZSB0ZXN0IHByb2dyYW0gd2l0aCBgLS1ndGVzdF9wcmludF91dGY4PTBgIG9yIHNldCB0
aGUgYEdURVNUX1BSSU5UX1VURjhgCitlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBgMGAuCisKKyoq
QXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKworIyMjIyBHZW5lcmF0aW5n
IGFuIFhNTCBSZXBvcnQKKworZ29vZ2xldGVzdCBjYW4gZW1pdCBhIGRldGFpbGVkIFhNTCByZXBv
cnQgdG8gYSBmaWxlIGluIGFkZGl0aW9uIHRvIGl0cyBub3JtYWwKK3RleHR1YWwgb3V0cHV0LiBU
aGUgcmVwb3J0IGNvbnRhaW5zIHRoZSBkdXJhdGlvbiBvZiBlYWNoIHRlc3QsIGFuZCB0aHVzIGNh
biBoZWxwCit5b3UgaWRlbnRpZnkgc2xvdyB0ZXN0cy4gVGhlIHJlcG9ydCBpcyBhbHNvIHVzZWQg
YnkgdGhlIGh0dHA6Ly91bml0dGVzdAorZGFzaGJvYXJkIHRvIHNob3cgcGVyLXRlc3QtbWV0aG9k
IGVycm9yIG1lc3NhZ2VzLgorCitUbyBnZW5lcmF0ZSB0aGUgWE1MIHJlcG9ydCwgc2V0IHRoZSBg
R1RFU1RfT1VUUFVUYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUKK2AtLWd0ZXN0X291dHB1
dGAgZmxhZyB0byB0aGUgc3RyaW5nIGAieG1sOnBhdGhfdG9fb3V0cHV0X2ZpbGUiYCwgd2hpY2gg
d2lsbAorY3JlYXRlIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBsb2NhdGlvbi4gWW91IGNhbiBhbHNv
IGp1c3QgdXNlIHRoZSBzdHJpbmcgYCJ4bWwiYCwKK2luIHdoaWNoIGNhc2UgdGhlIG91dHB1dCBj
YW4gYmUgZm91bmQgaW4gdGhlIGB0ZXN0X2RldGFpbC54bWxgIGZpbGUgaW4gdGhlCitjdXJyZW50
IGRpcmVjdG9yeS4KKworSWYgeW91IHNwZWNpZnkgYSBkaXJlY3RvcnkgKGZvciBleGFtcGxlLCBg
InhtbDpvdXRwdXQvZGlyZWN0b3J5LyJgIG9uIExpbnV4IG9yCitgInhtbDpvdXRwdXRcZGlyZWN0
b3J5XCJgIG9uIFdpbmRvd3MpLCBnb29nbGV0ZXN0IHdpbGwgY3JlYXRlIHRoZSBYTUwgZmlsZSBp
bgordGhhdCBkaXJlY3RvcnksIG5hbWVkIGFmdGVyIHRoZSB0ZXN0IGV4ZWN1dGFibGUgKGUuZy4g
YGZvb190ZXN0LnhtbGAgZm9yIHRlc3QKK3Byb2dyYW0gYGZvb190ZXN0YCBvciBgZm9vX3Rlc3Qu
ZXhlYCkuIElmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzIChwZXJoYXBzIGxlZnQKK292ZXIgZnJv
bSBhIHByZXZpb3VzIHJ1biksIGdvb2dsZXRlc3Qgd2lsbCBwaWNrIGEgZGlmZmVyZW50IG5hbWUg
KGUuZy4KK2Bmb29fdGVzdF8xLnhtbGApIHRvIGF2b2lkIG92ZXJ3cml0aW5nIGl0LgorCisKK1Ro
ZSByZXBvcnQgaXMgYmFzZWQgb24gdGhlIGBqdW5pdHJlcG9ydGAgQW50IHRhc2suIFNpbmNlIHRo
YXQgZm9ybWF0IHdhcworb3JpZ2luYWxseSBpbnRlbmRlZCBmb3IgSmF2YSwgYSBsaXR0bGUgaW50
ZXJwcmV0YXRpb24gaXMgcmVxdWlyZWQgdG8gbWFrZSBpdAorYXBwbHkgdG8gZ29vZ2xldGVzdCB0
ZXN0cywgYXMgc2hvd24gaGVyZToKKworYGBgeG1sCis8dGVzdHN1aXRlcyBuYW1lPSJBbGxUZXN0
cyIgLi4uPgorICA8dGVzdHN1aXRlIG5hbWU9InRlc3RfY2FzZV9uYW1lIiAuLi4+CisgICAgPHRl
c3RjYXNlICAgIG5hbWU9InRlc3RfbmFtZSIgLi4uPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0i
Li4uIi8+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4KKyAgICAgIDxmYWlsdXJlIG1l
c3NhZ2U9Ii4uLiIvPgorICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0c3Vp
dGVzPgorYGBgCisKKyogICBUaGUgcm9vdCBgPHRlc3RzdWl0ZXM+YCBlbGVtZW50IGNvcnJlc3Bv
bmRzIHRvIHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFtLgorKiAgIGA8dGVzdHN1aXRlPmAgZWxlbWVu
dHMgY29ycmVzcG9uZCB0byBnb29nbGV0ZXN0IHRlc3QgY2FzZXMuCisqICAgYDx0ZXN0Y2FzZT5g
IGVsZW1lbnRzIGNvcnJlc3BvbmQgdG8gZ29vZ2xldGVzdCB0ZXN0IGZ1bmN0aW9ucy4KKworRm9y
IGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIHByb2dyYW0KKworYGBgYysrCitURVNUKE1hdGhUZXN0
LCBBZGRpdGlvbikgeyAuLi4gfQorVEVTVChNYXRoVGVzdCwgU3VidHJhY3Rpb24pIHsgLi4uIH0K
K1RFU1QoTG9naWNUZXN0LCBOb25Db250cmFkaWN0aW9uKSB7IC4uLiB9CitgYGAKKworY291bGQg
Z2VuZXJhdGUgdGhpcyByZXBvcnQ6CisKK2BgYHhtbAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv
ZGluZz0iVVRGLTgiPz4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIzIiBmYWlsdXJlcz0iMSIgZXJyb3Jz
PSIwIiB0aW1lPSIwLjAzNSIgdGltZXN0YW1wPSIyMDExLTEwLTMxVDE4OjUyOjQyIiBuYW1lPSJB
bGxUZXN0cyI+CisgIDx0ZXN0c3VpdGUgbmFtZT0iTWF0aFRlc3QiIHRlc3RzPSIyIiBmYWlsdXJl
cz0iMSIgZXJyb3JzPSIwIiB0aW1lPSIwLjAxNSI+CisgICAgPHRlc3RjYXNlIG5hbWU9IkFkZGl0
aW9uIiBzdGF0dXM9InJ1biIgdGltZT0iMC4wMDciIGNsYXNzbmFtZT0iIj4KKyAgICAgIDxmYWls
dXJlIG1lc3NhZ2U9IlZhbHVlIG9mOiBhZGQoMSwgMSkmI3gwQTsgIEFjdHVhbDogMyYjeDBBO0V4
cGVjdGVkOiAyIiB0eXBlPSIiPi4uLjwvZmFpbHVyZT4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9
IlZhbHVlIG9mOiBhZGQoMSwgLTEpJiN4MEE7ICBBY3R1YWw6IDEmI3gwQTtFeHBlY3RlZDogMCIg
dHlwZT0iIj4uLi48L2ZhaWx1cmU+CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8dGVzdGNhc2UgbmFt
ZT0iU3VidHJhY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSIwLjAwNSIgY2xhc3NuYW1lPSIiPgor
ICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorICA8dGVzdHN1aXRlIG5hbWU9IkxvZ2lj
VGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBlcnJvcnM9IjAiIHRpbWU9IjAuMDA1Ij4KKyAg
ICA8dGVzdGNhc2UgbmFtZT0iTm9uQ29udHJhZGljdGlvbiIgc3RhdHVzPSJydW4iIHRpbWU9IjAu
MDA1IiBjbGFzc25hbWU9IiI+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rl
c3RzdWl0ZXM+CitgYGAKKworVGhpbmdzIHRvIG5vdGU6CisKKyogICBUaGUgYHRlc3RzYCBhdHRy
aWJ1dGUgb2YgYSBgPHRlc3RzdWl0ZXM+YCBvciBgPHRlc3RzdWl0ZT5gIGVsZW1lbnQgdGVsbHMg
aG93CisgICAgbWFueSB0ZXN0IGZ1bmN0aW9ucyB0aGUgZ29vZ2xldGVzdCBwcm9ncmFtIG9yIHRl
c3QgY2FzZSBjb250YWlucywgd2hpbGUgdGhlCisgICAgYGZhaWx1cmVzYCBhdHRyaWJ1dGUgdGVs
bHMgaG93IG1hbnkgb2YgdGhlbSBmYWlsZWQuCisKKyogICBUaGUgYHRpbWVgIGF0dHJpYnV0ZSBl
eHByZXNzZXMgdGhlIGR1cmF0aW9uIG9mIHRoZSB0ZXN0LCB0ZXN0IGNhc2UsIG9yCisgICAgZW50
aXJlIHRlc3QgcHJvZ3JhbSBpbiBzZWNvbmRzLgorCisqICAgVGhlIGB0aW1lc3RhbXBgIGF0dHJp
YnV0ZSByZWNvcmRzIHRoZSBsb2NhbCBkYXRlIGFuZCB0aW1lIG9mIHRoZSB0ZXN0CisgICAgZXhl
Y3V0aW9uLgorCisqICAgRWFjaCBgPGZhaWx1cmU+YCBlbGVtZW50IGNvcnJlc3BvbmRzIHRvIGEg
c2luZ2xlIGZhaWxlZCBnb29nbGV0ZXN0CisgICAgYXNzZXJ0aW9uLgorCisqKkF2YWlsYWJpbGl0
eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMjIEdlbmVyYXRpbmcgYW4gSlNPTiBSZXBv
cnQKKworZ29vZ2xldGVzdCBjYW4gYWxzbyBlbWl0IGEgSlNPTiByZXBvcnQgYXMgYW4gYWx0ZXJu
YXRpdmUgZm9ybWF0IHRvIFhNTC4gVG8KK2dlbmVyYXRlIHRoZSBKU09OIHJlcG9ydCwgc2V0IHRo
ZSBgR1RFU1RfT1VUUFVUYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUKK2AtLWd0ZXN0X291
dHB1dGAgZmxhZyB0byB0aGUgc3RyaW5nIGAianNvbjpwYXRoX3RvX291dHB1dF9maWxlImAsIHdo
aWNoIHdpbGwKK2NyZWF0ZSB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24uIFlvdSBjYW4g
YWxzbyBqdXN0IHVzZSB0aGUgc3RyaW5nCitgImpzb24iYCwgaW4gd2hpY2ggY2FzZSB0aGUgb3V0
cHV0IGNhbiBiZSBmb3VuZCBpbiB0aGUgYHRlc3RfZGV0YWlsLmpzb25gIGZpbGUKK2luIHRoZSBj
dXJyZW50IGRpcmVjdG9yeS4KKworVGhlIHJlcG9ydCBmb3JtYXQgY29uZm9ybXMgdG8gdGhlIGZv
bGxvd2luZyBKU09OIFNjaGVtYToKKworYGBganNvbgoreworICAiJHNjaGVtYSI6ICJodHRwOi8v
anNvbi1zY2hlbWEub3JnL3NjaGVtYSMiLAorICAidHlwZSI6ICJvYmplY3QiLAorICAiZGVmaW5p
dGlvbnMiOiB7CisgICAgIlRlc3RDYXNlIjogeworICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAg
ICAgICJwcm9wZXJ0aWVzIjogeworICAgICAgICAibmFtZSI6IHsgInR5cGUiOiAic3RyaW5nIiB9
LAorICAgICAgICAidGVzdHMiOiB7ICJ0eXBlIjogImludGVnZXIiIH0sCisgICAgICAgICJmYWls
dXJlcyI6IHsgInR5cGUiOiAiaW50ZWdlciIgfSwKKyAgICAgICAgImRpc2FibGVkIjogeyAidHlw
ZSI6ICJpbnRlZ2VyIiB9LAorICAgICAgICAidGltZSI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAor
ICAgICAgICAidGVzdHN1aXRlIjogeworICAgICAgICAgICJ0eXBlIjogImFycmF5IiwKKyAgICAg
ICAgICAiaXRlbXMiOiB7CisgICAgICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL1Rlc3RJ
bmZvIgorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgIlRlc3RJ
bmZvIjogeworICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICJwcm9wZXJ0aWVzIjogewor
ICAgICAgICAibmFtZSI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAic3RhdHVzIjog
eworICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisgICAgICAgICAgImVudW0iOiBbIlJVTiIs
ICJOT1RSVU4iXQorICAgICAgICB9LAorICAgICAgICAidGltZSI6IHsgInR5cGUiOiAic3RyaW5n
IiB9LAorICAgICAgICAiY2xhc3NuYW1lIjogeyAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAg
ICJmYWlsdXJlcyI6IHsKKyAgICAgICAgICAidHlwZSI6ICJhcnJheSIsCisgICAgICAgICAgIml0
ZW1zIjogeworICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9GYWlsdXJlIgorICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgIkZhaWx1cmUiOiB7Cisg
ICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgInByb3BlcnRpZXMiOiB7CisgICAgICAgICJm
YWlsdXJlcyI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAidHlwZSI6IHsgInR5cGUi
OiAic3RyaW5nIiB9CisgICAgICB9CisgICAgfQorICB9LAorICAicHJvcGVydGllcyI6IHsKKyAg
ICAidGVzdHMiOiB7ICJ0eXBlIjogImludGVnZXIiIH0sCisgICAgImZhaWx1cmVzIjogeyAidHlw
ZSI6ICJpbnRlZ2VyIiB9LAorICAgICJkaXNhYmxlZCI6IHsgInR5cGUiOiAiaW50ZWdlciIgfSwK
KyAgICAiZXJyb3JzIjogeyAidHlwZSI6ICJpbnRlZ2VyIiB9LAorICAgICJ0aW1lc3RhbXAiOiB7
CisgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgImZvcm1hdCI6ICJkYXRlLXRpbWUiCisg
ICAgfSwKKyAgICAidGltZSI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICJuYW1lIjogeyAi
dHlwZSI6ICJzdHJpbmciIH0sCisgICAgInRlc3RzdWl0ZXMiOiB7CisgICAgICAidHlwZSI6ICJh
cnJheSIsCisgICAgICAiaXRlbXMiOiB7CisgICAgICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMv
VGVzdENhc2UiCisgICAgICB9CisgICAgfQorICB9Cit9CitgYGAKKworVGhlIHJlcG9ydCB1c2Vz
IHRoZSBmb3JtYXQgdGhhdCBjb25mb3JtcyB0byB0aGUgZm9sbG93aW5nIFByb3RvMyB1c2luZyB0
aGUgW0pTT04KK2VuY29kaW5nXShodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9wcm90b2Nv
bC1idWZmZXJzL2RvY3MvcHJvdG8zI2pzb24pOgorCitgYGBwcm90bworc3ludGF4ID0gInByb3Rv
MyI7CisKK3BhY2thZ2UgZ29vZ2xldGVzdDsKKworaW1wb3J0ICJnb29nbGUvcHJvdG9idWYvdGlt
ZXN0YW1wLnByb3RvIjsKK2ltcG9ydCAiZ29vZ2xlL3Byb3RvYnVmL2R1cmF0aW9uLnByb3RvIjsK
KworbWVzc2FnZSBVbml0VGVzdCB7CisgIGludDMyIHRlc3RzID0gMTsKKyAgaW50MzIgZmFpbHVy
ZXMgPSAyOworICBpbnQzMiBkaXNhYmxlZCA9IDM7CisgIGludDMyIGVycm9ycyA9IDQ7CisgIGdv
b2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAgdGltZXN0YW1wID0gNTsKKyAgZ29vZ2xlLnByb3RvYnVm
LkR1cmF0aW9uIHRpbWUgPSA2OworICBzdHJpbmcgbmFtZSA9IDc7CisgIHJlcGVhdGVkIFRlc3RD
YXNlIHRlc3RzdWl0ZXMgPSA4OworfQorCittZXNzYWdlIFRlc3RDYXNlIHsKKyAgc3RyaW5nIG5h
bWUgPSAxOworICBpbnQzMiB0ZXN0cyA9IDI7CisgIGludDMyIGZhaWx1cmVzID0gMzsKKyAgaW50
MzIgZGlzYWJsZWQgPSA0OworICBpbnQzMiBlcnJvcnMgPSA1OworICBnb29nbGUucHJvdG9idWYu
RHVyYXRpb24gdGltZSA9IDY7CisgIHJlcGVhdGVkIFRlc3RJbmZvIHRlc3RzdWl0ZSA9IDc7Cit9
CisKK21lc3NhZ2UgVGVzdEluZm8geworICBzdHJpbmcgbmFtZSA9IDE7CisgIGVudW0gU3RhdHVz
IHsKKyAgICBSVU4gPSAwOworICAgIE5PVFJVTiA9IDE7CisgIH0KKyAgU3RhdHVzIHN0YXR1cyA9
IDI7CisgIGdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbiB0aW1lID0gMzsKKyAgc3RyaW5nIGNsYXNz
bmFtZSA9IDQ7CisgIG1lc3NhZ2UgRmFpbHVyZSB7CisgICAgc3RyaW5nIGZhaWx1cmVzID0gMTsK
KyAgICBzdHJpbmcgdHlwZSA9IDI7CisgIH0KKyAgcmVwZWF0ZWQgRmFpbHVyZSBmYWlsdXJlcyA9
IDU7Cit9CitgYGAKKworRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIHByb2dyYW0KKworYGBg
YysrCitURVNUKE1hdGhUZXN0LCBBZGRpdGlvbikgeyAuLi4gfQorVEVTVChNYXRoVGVzdCwgU3Vi
dHJhY3Rpb24pIHsgLi4uIH0KK1RFU1QoTG9naWNUZXN0LCBOb25Db250cmFkaWN0aW9uKSB7IC4u
LiB9CitgYGAKKworY291bGQgZ2VuZXJhdGUgdGhpcyByZXBvcnQ6CisKK2BgYGpzb24KK3sKKyAg
InRlc3RzIjogMywKKyAgImZhaWx1cmVzIjogMSwKKyAgImVycm9ycyI6IDAsCisgICJ0aW1lIjog
IjAuMDM1cyIsCisgICJ0aW1lc3RhbXAiOiAiMjAxMS0xMC0zMVQxODo1Mjo0MloiCisgICJuYW1l
IjogIkFsbFRlc3RzIiwKKyAgInRlc3RzdWl0ZXMiOiBbCisgICAgeworICAgICAgIm5hbWUiOiAi
TWF0aFRlc3QiLAorICAgICAgInRlc3RzIjogMiwKKyAgICAgICJmYWlsdXJlcyI6IDEsCisgICAg
ICAiZXJyb3JzIjogMCwKKyAgICAgICJ0aW1lIjogIjAuMDE1cyIsCisgICAgICAidGVzdHN1aXRl
IjogWworICAgICAgICB7CisgICAgICAgICAgIm5hbWUiOiAiQWRkaXRpb24iLAorICAgICAgICAg
ICJzdGF0dXMiOiAiUlVOIiwKKyAgICAgICAgICAidGltZSI6ICIwLjAwN3MiLAorICAgICAgICAg
ICJjbGFzc25hbWUiOiAiIiwKKyAgICAgICAgICAiZmFpbHVyZXMiOiBbCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICJtZXNzYWdlIjogIlZhbHVlIG9mOiBhZGQoMSwgMSlceDBBICBBY3R1
YWw6IDNceDBBRXhwZWN0ZWQ6IDIiLAorICAgICAgICAgICAgICAidHlwZSI6ICIiCisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAibWVzc2FnZSI6ICJWYWx1ZSBv
ZjogYWRkKDEsIC0xKVx4MEEgIEFjdHVhbDogMVx4MEFFeHBlY3RlZDogMCIsCisgICAgICAgICAg
ICAgICJ0eXBlIjogIiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBdCisgICAgICAgIH0sCisg
ICAgICAgIHsKKyAgICAgICAgICAibmFtZSI6ICJTdWJ0cmFjdGlvbiIsCisgICAgICAgICAgInN0
YXR1cyI6ICJSVU4iLAorICAgICAgICAgICJ0aW1lIjogIjAuMDA1cyIsCisgICAgICAgICAgImNs
YXNzbmFtZSI6ICIiCisgICAgICAgIH0KKyAgICAgIF0KKyAgICB9CisgICAgeworICAgICAgIm5h
bWUiOiAiTG9naWNUZXN0IiwKKyAgICAgICJ0ZXN0cyI6IDEsCisgICAgICAiZmFpbHVyZXMiOiAw
LAorICAgICAgImVycm9ycyI6IDAsCisgICAgICAidGltZSI6ICIwLjAwNXMiLAorICAgICAgInRl
c3RzdWl0ZSI6IFsKKyAgICAgICAgeworICAgICAgICAgICJuYW1lIjogIk5vbkNvbnRyYWRpY3Rp
b24iLAorICAgICAgICAgICJzdGF0dXMiOiAiUlVOIiwKKyAgICAgICAgICAidGltZSI6ICIwLjAw
NXMiLAorICAgICAgICAgICJjbGFzc25hbWUiOiAiIgorICAgICAgICB9CisgICAgICBdCisgICAg
fQorICBdCit9CitgYGAKKworSU1QT1JUQU5UOiBUaGUgZXhhY3QgZm9ybWF0IG9mIHRoZSBKU09O
IGRvY3VtZW50IGlzIHN1YmplY3QgdG8gY2hhbmdlLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51
eCwgV2luZG93cywgTWFjLgorCisjIyMgQ29udHJvbGxpbmcgSG93IEZhaWx1cmVzIEFyZSBSZXBv
cnRlZAorCisjIyMjIFR1cm5pbmcgQXNzZXJ0aW9uIEZhaWx1cmVzIGludG8gQnJlYWstUG9pbnRz
CisKK1doZW4gcnVubmluZyB0ZXN0IHByb2dyYW1zIHVuZGVyIGEgZGVidWdnZXIsIGl0J3MgdmVy
eSBjb252ZW5pZW50IGlmIHRoZQorZGVidWdnZXIgY2FuIGNhdGNoIGFuIGFzc2VydGlvbiBmYWls
dXJlIGFuZCBhdXRvbWF0aWNhbGx5IGRyb3AgaW50byBpbnRlcmFjdGl2ZQorbW9kZS4gZ29vZ2xl
dGVzdCdzICpicmVhay1vbi1mYWlsdXJlKiBtb2RlIHN1cHBvcnRzIHRoaXMgYmVoYXZpb3IuCisK
K1RvIGVuYWJsZSBpdCwgc2V0IHRoZSBgR1RFU1RfQlJFQUtfT05fRkFJTFVSRWAgZW52aXJvbm1l
bnQgdmFyaWFibGUgdG8gYSB2YWx1ZQorb3RoZXIgdGhhbiBgMGAgLiBBbHRlcm5hdGl2ZWx5LCB5
b3UgY2FuIHVzZSB0aGUgYC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZWAKK2NvbW1hbmQgbGluZSBm
bGFnLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMjIERp
c2FibGluZyBDYXRjaGluZyBUZXN0LVRocm93biBFeGNlcHRpb25zCisKK2dvb2dsZXRlc3QgY2Fu
IGJlIHVzZWQgZWl0aGVyIHdpdGggb3Igd2l0aG91dCBleGNlcHRpb25zIGVuYWJsZWQuIElmIGEg
dGVzdAordGhyb3dzIGEgQysrIGV4Y2VwdGlvbiBvciAob24gV2luZG93cykgYSBzdHJ1Y3R1cmVk
IGV4Y2VwdGlvbiAoU0VIKSwgYnkgZGVmYXVsdAorZ29vZ2xldGVzdCBjYXRjaGVzIGl0LCByZXBv
cnRzIGl0IGFzIGEgdGVzdCBmYWlsdXJlLCBhbmQgY29udGludWVzIHdpdGggdGhlIG5leHQKK3Rl
c3QgbWV0aG9kLiBUaGlzIG1heGltaXplcyB0aGUgY292ZXJhZ2Ugb2YgYSB0ZXN0IHJ1bi4gQWxz
bywgb24gV2luZG93cyBhbgordW5jYXVnaHQgZXhjZXB0aW9uIHdpbGwgY2F1c2UgYSBwb3AtdXAg
d2luZG93LCBzbyBjYXRjaGluZyB0aGUgZXhjZXB0aW9ucyBhbGxvd3MKK3lvdSB0byBydW4gdGhl
IHRlc3RzIGF1dG9tYXRpY2FsbHkuCisKK1doZW4gZGVidWdnaW5nIHRoZSB0ZXN0IGZhaWx1cmVz
LCBob3dldmVyLCB5b3UgbWF5IGluc3RlYWQgd2FudCB0aGUgZXhjZXB0aW9ucwordG8gYmUgaGFu
ZGxlZCBieSB0aGUgZGVidWdnZXIsIHN1Y2ggdGhhdCB5b3UgY2FuIGV4YW1pbmUgdGhlIGNhbGwg
c3RhY2sgd2hlbiBhbgorZXhjZXB0aW9uIGlzIHRocm93bi4gVG8gYWNoaWV2ZSB0aGF0LCBzZXQg
dGhlIGBHVEVTVF9DQVRDSF9FWENFUFRJT05TYAorZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYDBg
LCBvciB1c2UgdGhlIGAtLWd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnM9MGAgZmxhZyB3aGVuCitydW5u
aW5nIHRoZSB0ZXN0cy4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4K
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9mYXEubWQgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL2ZhcS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDQyZmY3ZGJhYThm
YWJkMGNjNjUyZmQ3MDUyNzk4MTg0ZTk1YzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvZG9jcy9mYXEubWQKQEAgLTAsMCArMSw3NzAgQEAKKyMgR29vZ2xldGVz
dCBGQVEKKworCisjIyBXaHkgc2hvdWxkIHRlc3QgY2FzZSBuYW1lcyBhbmQgdGVzdCBuYW1lcyBu
b3QgY29udGFpbiB1bmRlcnNjb3JlPworCitVbmRlcnNjb3JlIChgX2ApIGlzIHNwZWNpYWwsIGFz
IEMrKyByZXNlcnZlcyB0aGUgZm9sbG93aW5nIHRvIGJlIHVzZWQgYnkgdGhlCitjb21waWxlciBh
bmQgdGhlIHN0YW5kYXJkIGxpYnJhcnk6CisKKzEuICBhbnkgaWRlbnRpZmllciB0aGF0IHN0YXJ0
cyB3aXRoIGFuIGBfYCBmb2xsb3dlZCBieSBhbiB1cHBlci1jYXNlIGxldHRlciwgYW5kCisxLiAg
YW55IGlkZW50aWZpZXIgdGhhdCBjb250YWlucyB0d28gY29uc2VjdXRpdmUgdW5kZXJzY29yZXMg
KGkuZS4gYF9fYCkKKyAgICAqYW55d2hlcmUqIGluIGl0cyBuYW1lLgorCitVc2VyIGNvZGUgaXMg
KnByb2hpYml0ZWQqIGZyb20gdXNpbmcgc3VjaCBpZGVudGlmaWVycy4KKworTm93IGxldCdzIGxv
b2sgYXQgd2hhdCB0aGlzIG1lYW5zIGZvciBgVEVTVGAgYW5kIGBURVNUX0ZgLgorCitDdXJyZW50
bHkgYFRFU1QoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSlgIGdlbmVyYXRlcyBhIGNsYXNzIG5hbWVk
CitgVGVzdENhc2VOYW1lX1Rlc3ROYW1lX1Rlc3RgLiBXaGF0IGhhcHBlbnMgaWYgYFRlc3RDYXNl
TmFtZWAgb3IgYFRlc3ROYW1lYAorY29udGFpbnMgYF9gPworCisxLiAgSWYgYFRlc3RDYXNlTmFt
ZWAgc3RhcnRzIHdpdGggYW4gYF9gIGZvbGxvd2VkIGJ5IGFuIHVwcGVyLWNhc2UgbGV0dGVyIChz
YXksCisgICAgYF9Gb29gKSwgd2UgZW5kIHVwIHdpdGggYF9Gb29fVGVzdE5hbWVfVGVzdGAsIHdo
aWNoIGlzIHJlc2VydmVkIGFuZCB0aHVzCisgICAgaW52YWxpZC4KKzEuICBJZiBgVGVzdENhc2VO
YW1lYCBlbmRzIHdpdGggYW4gYF9gIChzYXksIGBGb29fYCksIHdlIGdldAorICAgIGBGb29fX1Rl
c3ROYW1lX1Rlc3RgLCB3aGljaCBpcyBpbnZhbGlkLgorMS4gIElmIGBUZXN0TmFtZWAgc3RhcnRz
IHdpdGggYW4gYF9gIChzYXksIGBfQmFyYCksIHdlIGdldAorICAgIGBUZXN0Q2FzZU5hbWVfX0Jh
cl9UZXN0YCwgd2hpY2ggaXMgaW52YWxpZC4KKzEuICBJZiBgVGVzdE5hbWVgIGVuZHMgd2l0aCBh
biBgX2AgKHNheSwgYEJhcl9gKSwgd2UgZ2V0CisgICAgYFRlc3RDYXNlTmFtZV9CYXJfX1Rlc3Rg
LCB3aGljaCBpcyBpbnZhbGlkLgorCitTbyBjbGVhcmx5IGBUZXN0Q2FzZU5hbWVgIGFuZCBgVGVz
dE5hbWVgIGNhbm5vdCBzdGFydCBvciBlbmQgd2l0aCBgX2AgKEFjdHVhbGx5LAorYFRlc3RDYXNl
TmFtZWAgY2FuIHN0YXJ0IHdpdGggYF9gIC0tIGFzIGxvbmcgYXMgdGhlIGBfYCBpc24ndCBmb2xs
b3dlZCBieSBhbgordXBwZXItY2FzZSBsZXR0ZXIuIEJ1dCB0aGF0J3MgZ2V0dGluZyBjb21wbGlj
YXRlZC4gU28gZm9yIHNpbXBsaWNpdHkgd2UganVzdCBzYXkKK3RoYXQgaXQgY2Fubm90IHN0YXJ0
IHdpdGggYF9gLikuCisKK0l0IG1heSBzZWVtIGZpbmUgZm9yIGBUZXN0Q2FzZU5hbWVgIGFuZCBg
VGVzdE5hbWVgIHRvIGNvbnRhaW4gYF9gIGluIHRoZSBtaWRkbGUuCitIb3dldmVyLCBjb25zaWRl
ciB0aGlzOgorCitgYGBjKysKK1RFU1QoVGltZSwgRmxpZXNfTGlrZV9Bbl9BcnJvdykgeyAuLi4g
fQorVEVTVChUaW1lX0ZsaWVzLCBMaWtlX0FuX0Fycm93KSB7IC4uLiB9CitgYGAKKworTm93LCB0
aGUgdHdvIGBURVNUYHMgd2lsbCBib3RoIGdlbmVyYXRlIHRoZSBzYW1lIGNsYXNzCisoYFRpbWVf
RmxpZXNfTGlrZV9Bbl9BcnJvd19UZXN0YCkuIFRoYXQncyBub3QgZ29vZC4KKworU28gZm9yIHNp
bXBsaWNpdHksIHdlIGp1c3QgYXNrIHRoZSB1c2VycyB0byBhdm9pZCBgX2AgaW4gYFRlc3RDYXNl
TmFtZWAgYW5kCitgVGVzdE5hbWVgLiBUaGUgcnVsZSBpcyBtb3JlIGNvbnN0cmFpbmluZyB0aGFu
IG5lY2Vzc2FyeSwgYnV0IGl0J3Mgc2ltcGxlIGFuZAorZWFzeSB0byByZW1lbWJlci4gSXQgYWxz
byBnaXZlcyBnb29nbGV0ZXN0IHNvbWUgd2lnZ2xlIHJvb20gaW4gY2FzZSBpdHMKK2ltcGxlbWVu
dGF0aW9uIG5lZWRzIHRvIGNoYW5nZSBpbiB0aGUgZnV0dXJlLgorCitJZiB5b3UgdmlvbGF0ZSB0
aGUgcnVsZSwgdGhlcmUgbWF5IG5vdCBiZSBpbW1lZGlhdGUgY29uc2VxdWVuY2VzLCBidXQgeW91
ciB0ZXN0CittYXkgKGp1c3QgbWF5KSBicmVhayB3aXRoIGEgbmV3IGNvbXBpbGVyIChvciBhIG5l
dyB2ZXJzaW9uIG9mIHRoZSBjb21waWxlciB5b3UKK2FyZSB1c2luZykgb3Igd2l0aCBhIG5ldyB2
ZXJzaW9uIG9mIGdvb2dsZXRlc3QuIFRoZXJlZm9yZSBpdCdzIGJlc3QgdG8gZm9sbG93Cit0aGUg
cnVsZS4KKworIyMgV2h5IGRvZXMgZ29vZ2xldGVzdCBzdXBwb3J0IGBFWFBFQ1RfRVEoTlVMTCwg
cHRyKWAgYW5kIGBBU1NFUlRfRVEoTlVMTCwgcHRyKWAgYnV0IG5vdCBgRVhQRUNUX05FKE5VTEws
IHB0cilgIGFuZCBgQVNTRVJUX05FKE5VTEwsIHB0cilgPworCitGaXJzdCBvZiBhbGwgeW91IGNh
biB1c2UgYEVYUEVDVF9ORShudWxscHRyLCBwdHIpYCBhbmQgYEFTU0VSVF9ORShudWxscHRyLAor
cHRyKWAuIFRoaXMgaXMgdGhlIHByZWZlcnJlZCBzeW50YXggaW4gdGhlIHN0eWxlIGd1aWRlIGJl
Y2F1c2UgbnVsbHB0ciBkb2VzIG5vdAoraGF2ZSB0aGUgdHlwZSBwcm9ibGVtcyB0aGF0IE5VTEwg
ZG9lcy4gV2hpY2ggaXMgd2h5IE5VTEwgZG9lcyBub3Qgd29yay4KKworRHVlIHRvIHNvbWUgcGVj
dWxpYXJpdHkgb2YgQysrLCBpdCByZXF1aXJlcyBzb21lIG5vbi10cml2aWFsIHRlbXBsYXRlIG1l
dGEKK3Byb2dyYW1taW5nIHRyaWNrcyB0byBzdXBwb3J0IHVzaW5nIGBOVUxMYCBhcyBhbiBhcmd1
bWVudCBvZiB0aGUgYEVYUEVDVF9YWCgpYAorYW5kIGBBU1NFUlRfWFgoKWAgbWFjcm9zLiBUaGVy
ZWZvcmUgd2Ugb25seSBkbyBpdCB3aGVyZSBpdCdzIG1vc3QgbmVlZGVkCisob3RoZXJ3aXNlIHdl
IG1ha2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGdvb2dsZXRlc3QgaGFyZGVyIHRvIG1haW50YWlu
IGFuZCBtb3JlCitlcnJvci1wcm9uZSB0aGFuIG5lY2Vzc2FyeSkuCisKK1RoZSBgRVhQRUNUX0VR
KClgIG1hY3JvIHRha2VzIHRoZSAqZXhwZWN0ZWQqIHZhbHVlIGFzIGl0cyBmaXJzdCBhcmd1bWVu
dCBhbmQgdGhlCisqYWN0dWFsKiB2YWx1ZSBhcyB0aGUgc2Vjb25kLiBJdCdzIHJlYXNvbmFibGUg
dGhhdCBzb21lb25lIHdhbnRzIHRvIHdyaXRlCitgRVhQRUNUX0VRKE5VTEwsIHNvbWVfZXhwcmVz
c2lvbilgLCBhbmQgdGhpcyBpbmRlZWQgd2FzIHJlcXVlc3RlZCBzZXZlcmFsIHRpbWVzLgorVGhl
cmVmb3JlIHdlIGltcGxlbWVudGVkIGl0LgorCitUaGUgbmVlZCBmb3IgYEVYUEVDVF9ORShOVUxM
LCBwdHIpYCBpc24ndCBuZWFybHkgYXMgc3Ryb25nLiBXaGVuIHRoZSBhc3NlcnRpb24KK2ZhaWxz
LCB5b3UgYWxyZWFkeSBrbm93IHRoYXQgYHB0cmAgbXVzdCBiZSBgTlVMTGAsIHNvIGl0IGRvZXNu
J3QgYWRkIGFueQoraW5mb3JtYXRpb24gdG8gcHJpbnQgYHB0cmAgaW4gdGhpcyBjYXNlLiBUaGF0
IG1lYW5zIGBFWFBFQ1RfVFJVRShwdHIgIT0gTlVMTClgCit3b3JrcyBqdXN0IGFzIHdlbGwuCisK
K0lmIHdlIHdlcmUgdG8gc3VwcG9ydCBgRVhQRUNUX05FKE5VTEwsIHB0cilgLCBmb3IgY29uc2lz
dGVuY3kgd2UnbGwgaGF2ZSB0bworc3VwcG9ydCBgRVhQRUNUX05FKHB0ciwgTlVMTClgIGFzIHdl
bGwsIGFzIHVubGlrZSBgRVhQRUNUX0VRYCwgd2UgZG9uJ3QgaGF2ZSBhCitjb252ZW50aW9uIG9u
IHRoZSBvcmRlciBvZiB0aGUgdHdvIGFyZ3VtZW50cyBmb3IgYEVYUEVDVF9ORWAuIFRoaXMgbWVh
bnMgdXNpbmcKK3RoZSB0ZW1wbGF0ZSBtZXRhIHByb2dyYW1taW5nIHRyaWNrcyB0d2ljZSBpbiB0
aGUgaW1wbGVtZW50YXRpb24sIG1ha2luZyBpdCBldmVuCitoYXJkZXIgdG8gdW5kZXJzdGFuZCBh
bmQgbWFpbnRhaW4uIFdlIGJlbGlldmUgdGhlIGJlbmVmaXQgZG9lc24ndCBqdXN0aWZ5IHRoZQor
Y29zdC4KKworRmluYWxseSwgd2l0aCB0aGUgZ3Jvd3RoIG9mIHRoZSBnTW9jayBtYXRjaGVyIGxp
YnJhcnksIHdlIGFyZSBlbmNvdXJhZ2luZyBwZW9wbGUKK3RvIHVzZSB0aGUgdW5pZmllZCBgRVhQ
RUNUX1RIQVQodmFsdWUsIG1hdGNoZXIpYCBzeW50YXggbW9yZSBvZnRlbiBpbiB0ZXN0cy4gT25l
CitzaWduaWZpY2FudCBhZHZhbnRhZ2Ugb2YgdGhlIG1hdGNoZXIgYXBwcm9hY2ggaXMgdGhhdCBt
YXRjaGVycyBjYW4gYmUgZWFzaWx5Citjb21iaW5lZCB0byBmb3JtIG5ldyBtYXRjaGVycywgd2hp
bGUgdGhlIGBFWFBFQ1RfTkVgLCBldGMsIG1hY3JvcyBjYW5ub3QgYmUKK2Vhc2lseSBjb21iaW5l
ZC4gVGhlcmVmb3JlIHdlIHdhbnQgdG8gaW52ZXN0IG1vcmUgaW4gdGhlIG1hdGNoZXJzIHRoYW4g
aW4gdGhlCitgRVhQRUNUX1hYKClgIG1hY3Jvcy4KKworIyMgSSBuZWVkIHRvIHRlc3QgdGhhdCBk
aWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIG9mIGFuIGludGVyZmFjZSBzYXRpc2Z5IHNvbWUgY29t
bW9uIHJlcXVpcmVtZW50cy4gU2hvdWxkIEkgdXNlIHR5cGVkIHRlc3RzIG9yIHZhbHVlLXBhcmFt
ZXRlcml6ZWQgdGVzdHM/CisKK0ZvciB0ZXN0aW5nIHZhcmlvdXMgaW1wbGVtZW50YXRpb25zIG9m
IHRoZSBzYW1lIGludGVyZmFjZSwgZWl0aGVyIHR5cGVkIHRlc3RzIG9yCit2YWx1ZS1wYXJhbWV0
ZXJpemVkIHRlc3RzIGNhbiBnZXQgaXQgZG9uZS4gSXQncyByZWFsbHkgdXAgdG8geW91IHRoZSB1
c2VyIHRvCitkZWNpZGUgd2hpY2ggaXMgbW9yZSBjb252ZW5pZW50IGZvciB5b3UsIGRlcGVuZGlu
ZyBvbiB5b3VyIHBhcnRpY3VsYXIgY2FzZS4gU29tZQorcm91Z2ggZ3VpZGVsaW5lczoKKworKiAg
IFR5cGVkIHRlc3RzIGNhbiBiZSBlYXNpZXIgdG8gd3JpdGUgaWYgaW5zdGFuY2VzIG9mIHRoZSBk
aWZmZXJlbnQKKyAgICBpbXBsZW1lbnRhdGlvbnMgY2FuIGJlIGNyZWF0ZWQgdGhlIHNhbWUgd2F5
LCBtb2R1bG8gdGhlIHR5cGUuIEZvciBleGFtcGxlLAorICAgIGlmIGFsbCB0aGVzZSBpbXBsZW1l
bnRhdGlvbnMgaGF2ZSBhIHB1YmxpYyBkZWZhdWx0IGNvbnN0cnVjdG9yIChzdWNoIHRoYXQKKyAg
ICB5b3UgY2FuIHdyaXRlIGBuZXcgVHlwZVBhcmFtYCksIG9yIGlmIHRoZWlyIGZhY3RvcnkgZnVu
Y3Rpb25zIGhhdmUgdGhlIHNhbWUKKyAgICBmb3JtIChlLmcuIGBDcmVhdGVJbnN0YW5jZTxUeXBl
UGFyYW0+KClgKS4KKyogICBWYWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGNhbiBiZSBlYXNpZXIg
dG8gd3JpdGUgaWYgeW91IG5lZWQgZGlmZmVyZW50IGNvZGUKKyAgICBwYXR0ZXJucyB0byBjcmVh
dGUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucycgaW5zdGFuY2VzLCBlLmcuIGBuZXcgRm9vYCB2
cworICAgIGBuZXcgQmFyKDUpYC4gVG8gYWNjb21tb2RhdGUgZm9yIHRoZSBkaWZmZXJlbmNlcywg
eW91IGNhbiB3cml0ZSBmYWN0b3J5CisgICAgZnVuY3Rpb24gd3JhcHBlcnMgYW5kIHBhc3MgdGhl
c2UgZnVuY3Rpb24gcG9pbnRlcnMgdG8gdGhlIHRlc3RzIGFzIHRoZWlyCisgICAgcGFyYW1ldGVy
cy4KKyogICBXaGVuIGEgdHlwZWQgdGVzdCBmYWlscywgdGhlIG91dHB1dCBpbmNsdWRlcyB0aGUg
bmFtZSBvZiB0aGUgdHlwZSwgd2hpY2ggY2FuCisgICAgaGVscCB5b3UgcXVpY2tseSBpZGVudGlm
eSB3aGljaCBpbXBsZW1lbnRhdGlvbiBpcyB3cm9uZy4gVmFsdWUtcGFyYW1ldGVyaXplZAorICAg
IHRlc3RzIGNhbm5vdCBkbyB0aGlzLCBzbyB0aGVyZSB5b3UnbGwgaGF2ZSB0byBsb29rIGF0IHRo
ZSBpdGVyYXRpb24gbnVtYmVyCisgICAgdG8ga25vdyB3aGljaCBpbXBsZW1lbnRhdGlvbiB0aGUg
ZmFpbHVyZSBpcyBmcm9tLCB3aGljaCBpcyBsZXNzIGRpcmVjdC4KKyogICBJZiB5b3UgbWFrZSBh
IG1pc3Rha2Ugd3JpdGluZyBhIHR5cGVkIHRlc3QsIHRoZSBjb21waWxlciBlcnJvcnMgY2FuIGJl
CisgICAgaGFyZGVyIHRvIGRpZ2VzdCwgYXMgdGhlIGNvZGUgaXMgdGVtcGxhdGl6ZWQuCisqICAg
V2hlbiB1c2luZyB0eXBlZCB0ZXN0cywgeW91IG5lZWQgdG8gbWFrZSBzdXJlIHlvdSBhcmUgdGVz
dGluZyBhZ2FpbnN0IHRoZQorICAgIGludGVyZmFjZSB0eXBlLCBub3QgdGhlIGNvbmNyZXRlIHR5
cGVzIChpbiBvdGhlciB3b3JkcywgeW91IHdhbnQgdG8gbWFrZQorICAgIHN1cmUgYGltcGxpY2l0
X2Nhc3Q8TXlJbnRlcmZhY2UqPihteV9jb25jcmV0ZV9pbXBsKWAgd29ya3MsIG5vdCBqdXN0IHRo
YXQKKyAgICBgbXlfY29uY3JldGVfaW1wbGAgd29ya3MpLiBJdCdzIGxlc3MgbGlrZWx5IHRvIG1h
a2UgbWlzdGFrZXMgaW4gdGhpcyBhcmVhCisgICAgd2hlbiB1c2luZyB2YWx1ZS1wYXJhbWV0ZXJp
emVkIHRlc3RzLgorCitJIGhvcGUgSSBkaWRuJ3QgY29uZnVzZSB5b3UgbW9yZS4gOi0pIElmIHlv
dSBkb24ndCBtaW5kLCBJJ2Qgc3VnZ2VzdCB5b3UgdG8gZ2l2ZQorYm90aCBhcHByb2FjaGVzIGEg
dHJ5LiBQcmFjdGljZSBpcyBhIG11Y2ggYmV0dGVyIHdheSB0byBncmFzcCB0aGUgc3VidGxlCitk
aWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB0d28gdG9vbHMuIE9uY2UgeW91IGhhdmUgc29tZSBjb25j
cmV0ZSBleHBlcmllbmNlLCB5b3UKK2NhbiBtdWNoIG1vcmUgZWFzaWx5IGRlY2lkZSB3aGljaCBv
bmUgdG8gdXNlIHRoZSBuZXh0IHRpbWUuCisKKyMjIE15IGRlYXRoIHRlc3RzIGJlY2FtZSB2ZXJ5
IHNsb3cgLSB3aGF0IGhhcHBlbmVkPworCitJbiBBdWd1c3QgMjAwOCB3ZSBoYWQgdG8gc3dpdGNo
IHRoZSBkZWZhdWx0IGRlYXRoIHRlc3Qgc3R5bGUgZnJvbSBgZmFzdGAgdG8KK2B0aHJlYWRzYWZl
YCwgYXMgdGhlIGZvcm1lciBpcyBubyBsb25nZXIgc2FmZSBub3cgdGhhdCB0aHJlYWRlZCBsb2dn
aW5nIGlzIHRoZQorZGVmYXVsdC4gVGhpcyBjYXVzZWQgbWFueSBkZWF0aCB0ZXN0cyB0byBzbG93
IGRvd24uIFVuZm9ydHVuYXRlbHkgdGhpcyBjaGFuZ2UKK3dhcyBuZWNlc3NhcnkuCisKK1BsZWFz
ZSByZWFkIFtGaXhpbmcgRmFpbGluZyBEZWF0aCBUZXN0c10oZGVhdGhfdGVzdF9zdHlsZXMubWQp
IGZvciB3aGF0IHlvdSBjYW4KK2RvLgorCisjIyBJIGdvdCBzb21lIHJ1bi10aW1lIGVycm9ycyBh
Ym91dCBpbnZhbGlkIHByb3RvIGRlc2NyaXB0b3JzIHdoZW4gdXNpbmcgYFByb3RvY29sTWVzc2Fn
ZUVxdWFsc2AuIEhlbHAhCisKKyoqTm90ZToqKiBgUHJvdG9jb2xNZXNzYWdlRXF1YWxzYCBhbmQg
YFByb3RvY29sTWVzc2FnZUVxdWl2YCBhcmUgKmRlcHJlY2F0ZWQqCitub3cuIFBsZWFzZSB1c2Ug
YEVxdWFsc1Byb3RvYCwgZXRjIGluc3RlYWQuCisKK2BQcm90b2NvbE1lc3NhZ2VFcXVhbHNgIGFu
ZCBgUHJvdG9jb2xNZXNzYWdlRXF1aXZgIHdlcmUgcmVkZWZpbmVkIHJlY2VudGx5IGFuZAorYXJl
IG5vdyBsZXNzIHRvbGVyYW50IG9uIGludmFsaWQgcHJvdG9jb2wgYnVmZmVyIGRlZmluaXRpb25z
LiBJbiBwYXJ0aWN1bGFyLCBpZgoreW91IGhhdmUgYSBgZm9vLnByb3RvYCB0aGF0IGRvZXNuJ3Qg
ZnVsbHkgcXVhbGlmeSB0aGUgdHlwZSBvZiBhIHByb3RvY29sIG1lc3NhZ2UKK2l0IHJlZmVyZW5j
ZXMgKGUuZy4gYG1lc3NhZ2U8QmFyPmAgd2hlcmUgaXQgc2hvdWxkIGJlIGBtZXNzYWdlPGJsYWgu
QmFyPmApLCB5b3UKK3dpbGwgbm93IGdldCBydW4tdGltZSBlcnJvcnMgbGlrZToKKworYGBgCisu
Li4gZGVzY3JpcHRvci5jYzouLi5dIEludmFsaWQgcHJvdG8gZGVzY3JpcHRvciBmb3IgZmlsZSAi
cGF0aC90by9mb28ucHJvdG8iOgorLi4uIGRlc2NyaXB0b3IuY2M6Li4uXSAgYmxhaC5NeU1lc3Nh
Z2UubXlfZmllbGQ6ICIuQmFyIiBpcyBub3QgZGVmaW5lZC4KK2BgYAorCitJZiB5b3Ugc2VlIHRo
aXMsIHlvdXIgYC5wcm90b2AgZmlsZSBpcyBicm9rZW4gYW5kIG5lZWRzIHRvIGJlIGZpeGVkIGJ5
IG1ha2luZwordGhlIHR5cGVzIGZ1bGx5IHF1YWxpZmllZC4gVGhlIG5ldyBkZWZpbml0aW9uIG9m
IGBQcm90b2NvbE1lc3NhZ2VFcXVhbHNgIGFuZAorYFByb3RvY29sTWVzc2FnZUVxdWl2YCBqdXN0
IGhhcHBlbiB0byByZXZlYWwgeW91ciBidWcuCisKKyMjIE15IGRlYXRoIHRlc3QgbW9kaWZpZXMg
c29tZSBzdGF0ZSwgYnV0IHRoZSBjaGFuZ2Ugc2VlbXMgbG9zdCBhZnRlciB0aGUgZGVhdGggdGVz
dCBmaW5pc2hlcy4gV2h5PworCitEZWF0aCB0ZXN0cyAoYEVYUEVDVF9ERUFUSGAsIGV0YykgYXJl
IGV4ZWN1dGVkIGluIGEgc3ViLXByb2Nlc3Mgcy50LiB0aGUKK2V4cGVjdGVkIGNyYXNoIHdvbid0
IGtpbGwgdGhlIHRlc3QgcHJvZ3JhbSAoaS5lLiB0aGUgcGFyZW50IHByb2Nlc3MpLiBBcyBhCity
ZXN1bHQsIGFueSBpbi1tZW1vcnkgc2lkZSBlZmZlY3RzIHRoZXkgaW5jdXIgYXJlIG9ic2VydmFi
bGUgaW4gdGhlaXIgcmVzcGVjdGl2ZQorc3ViLXByb2Nlc3NlcywgYnV0IG5vdCBpbiB0aGUgcGFy
ZW50IHByb2Nlc3MuIFlvdSBjYW4gdGhpbmsgb2YgdGhlbSBhcyBydW5uaW5nCitpbiBhIHBhcmFs
bGVsIHVuaXZlcnNlLCBtb3JlIG9yIGxlc3MuCisKK0luIHBhcnRpY3VsYXIsIGlmIHlvdSB1c2Ug
W2dNb2NrXSguLi8uLi9nb29nbGVtb2NrKSBhbmQgdGhlIGRlYXRoIHRlc3Qgc3RhdGVtZW50Citp
bnZva2VzIHNvbWUgbW9jayBtZXRob2RzLCB0aGUgcGFyZW50IHByb2Nlc3Mgd2lsbCB0aGluayB0
aGUgY2FsbHMgaGF2ZSBuZXZlcgorb2NjdXJyZWQuIFRoZXJlZm9yZSwgeW91IG1heSB3YW50IHRv
IG1vdmUgeW91ciBgRVhQRUNUX0NBTExgIHN0YXRlbWVudHMgaW5zaWRlCit0aGUgYEVYUEVDVF9E
RUFUSGAgbWFjcm8uCisKKyMjIEVYUEVDVF9FUShodG9ubChibGFoKSwgYmxhaF9ibGFoKSBnZW5l
cmF0ZXMgd2VpcmQgY29tcGlsZXIgZXJyb3JzIGluIG9wdCBtb2RlLiBJcyB0aGlzIGEgZ29vZ2xl
dGVzdCBidWc/CisKK0FjdHVhbGx5LCB0aGUgYnVnIGlzIGluIGBodG9ubCgpYC4KKworQWNjb3Jk
aW5nIHRvIGAnbWFuIGh0b25sJ2AsIGBodG9ubCgpYCBpcyBhICpmdW5jdGlvbiosIHdoaWNoIG1l
YW5zIGl0J3MgdmFsaWQgdG8KK3VzZSBgaHRvbmxgIGFzIGEgZnVuY3Rpb24gcG9pbnRlci4gSG93
ZXZlciwgaW4gb3B0IG1vZGUgYGh0b25sKClgIGlzIGRlZmluZWQgYXMKK2EgKm1hY3JvKiwgd2hp
Y2ggYnJlYWtzIHRoaXMgdXNhZ2UuCisKK1dvcnNlLCB0aGUgbWFjcm8gZGVmaW5pdGlvbiBvZiBg
aHRvbmwoKWAgdXNlcyBhIGBnY2NgIGV4dGVuc2lvbiBhbmQgaXMgKm5vdCoKK3N0YW5kYXJkIEMr
Ky4gVGhhdCBoYWNreSBpbXBsZW1lbnRhdGlvbiBoYXMgc29tZSBhZCBob2MgbGltaXRhdGlvbnMu
IEluCitwYXJ0aWN1bGFyLCBpdCBwcmV2ZW50cyB5b3UgZnJvbSB3cml0aW5nIGBGb288c2l6ZW9m
KGh0b25sKHgpKT4oKWAsIHdoZXJlIGBGb29gCitpcyBhIHRlbXBsYXRlIHRoYXQgaGFzIGFuIGlu
dGVncmFsIGFyZ3VtZW50LgorCitUaGUgaW1wbGVtZW50YXRpb24gb2YgYEVYUEVDVF9FUShhLCBi
KWAgdXNlcyBgc2l6ZW9mKC4uLiBhIC4uLilgIGluc2lkZSBhCit0ZW1wbGF0ZSBhcmd1bWVudCwg
YW5kIHRodXMgZG9lc24ndCBjb21waWxlIGluIG9wdCBtb2RlIHdoZW4gYGFgIGNvbnRhaW5zIGEg
Y2FsbAordG8gYGh0b25sKClgLiBJdCBpcyBkaWZmaWN1bHQgdG8gbWFrZSBgRVhQRUNUX0VRYCBi
eXBhc3MgdGhlIGBodG9ubCgpYCBidWcsIGFzCit0aGUgc29sdXRpb24gbXVzdCB3b3JrIHdpdGgg
ZGlmZmVyZW50IGNvbXBpbGVycyBvbiB2YXJpb3VzIHBsYXRmb3Jtcy4KKworYGh0b25sKClgIGhh
cyBzb21lIG90aGVyIHByb2JsZW1zIGFzIGRlc2NyaWJlZCBpbiBgLy91dGlsL2VuZGlhbi9lbmRp
YW4uaGAsCit3aGljaCBkZWZpbmVzIGBnaHRvbmwoKWAgdG8gcmVwbGFjZSBpdC4gYGdodG9ubCgp
YCBkb2VzIHRoZSBzYW1lIHRoaW5nIGBodG9ubCgpYAorZG9lcywgb25seSB3aXRob3V0IGl0cyBw
cm9ibGVtcy4gV2Ugc3VnZ2VzdCB5b3UgdG8gdXNlIGBnaHRvbmwoKWAgaW5zdGVhZCBvZgorYGh0
b25sKClgLCBib3RoIGluIHlvdXIgdGVzdHMgYW5kIHByb2R1Y3Rpb24gY29kZS4KKworYC8vdXRp
bC9lbmRpYW4vZW5kaWFuLmhgIGFsc28gZGVmaW5lcyBgZ2h0b25zKClgLCB3aGljaCBzb2x2ZXMg
c2ltaWxhciBwcm9ibGVtcworaW4gYGh0b25zKClgLgorCitEb24ndCBmb3JnZXQgdG8gYWRkIGAv
L3V0aWwvZW5kaWFuYCB0byB0aGUgbGlzdCBvZiBkZXBlbmRlbmNpZXMgaW4gdGhlIGBCVUlMRGAK
K2ZpbGUgd2hlcmV2ZXIgYGdodG9ubCgpYCBhbmQgYGdodG9ucygpYCBhcmUgdXNlZC4gVGhlIGxp
YnJhcnkgY29uc2lzdHMgb2YgYQorc2luZ2xlIGhlYWRlciBmaWxlIGFuZCB3aWxsIG5vdCBibG9h
dCB5b3VyIGJpbmFyeS4KKworIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCAidW5kZWZp
bmVkIHJlZmVyZW5jZXMiIHRvIHNvbWUgc3RhdGljIGNvbnN0IG1lbWJlciB2YXJpYWJsZXMsIGJ1
dCBJIGRpZCBkZWZpbmUgdGhlbSBpbiB0aGUgY2xhc3MgYm9keS4gV2hhdCdzIHdyb25nPworCitJ
ZiB5b3VyIGNsYXNzIGhhcyBhIHN0YXRpYyBkYXRhIG1lbWJlcjoKKworYGBgYysrCisvLyBmb28u
aAorY2xhc3MgRm9vIHsKKyAgLi4uCisgIHN0YXRpYyBjb25zdCBpbnQga0JhciA9IDEwMDsKK307
CitgYGAKKworWW91IGFsc28gbmVlZCB0byBkZWZpbmUgaXQgKm91dHNpZGUqIG9mIHRoZSBjbGFz
cyBib2R5IGluIGBmb28uY2NgOgorCitgYGBjKysKK2NvbnN0IGludCBGb286OmtCYXI7ICAvLyBO
byBpbml0aWFsaXplciBoZXJlLgorYGBgCisKK090aGVyd2lzZSB5b3VyIGNvZGUgaXMgKippbnZh
bGlkIEMrKyoqLCBhbmQgbWF5IGJyZWFrIGluIHVuZXhwZWN0ZWQgd2F5cy4gSW4KK3BhcnRpY3Vs
YXIsIHVzaW5nIGl0IGluIGdvb2dsZXRlc3QgY29tcGFyaXNvbiBhc3NlcnRpb25zIChgRVhQRUNU
X0VRYCwgZXRjKSB3aWxsCitnZW5lcmF0ZSBhbiAidW5kZWZpbmVkIHJlZmVyZW5jZSIgbGlua2Vy
IGVycm9yLiBUaGUgZmFjdCB0aGF0ICJpdCB1c2VkIHRvIHdvcmsiCitkb2Vzbid0IG1lYW4gaXQn
cyB2YWxpZC4gSXQganVzdCBtZWFucyB0aGF0IHlvdSB3ZXJlIGx1Y2t5LiA6LSkKKworIyMgQ2Fu
IEkgZGVyaXZlIGEgdGVzdCBmaXh0dXJlIGZyb20gYW5vdGhlcj8KKworWWVzLgorCitFYWNoIHRl
c3QgZml4dHVyZSBoYXMgYSBjb3JyZXNwb25kaW5nIGFuZCBzYW1lIG5hbWVkIHRlc3QgY2FzZS4g
VGhpcyBtZWFucyBvbmx5CitvbmUgdGVzdCBjYXNlIGNhbiB1c2UgYSBwYXJ0aWN1bGFyIGZpeHR1
cmUuIFNvbWV0aW1lcywgaG93ZXZlciwgbXVsdGlwbGUgdGVzdAorY2FzZXMgbWF5IHdhbnQgdG8g
dXNlIHRoZSBzYW1lIG9yIHNsaWdodGx5IGRpZmZlcmVudCBmaXh0dXJlcy4gRm9yIGV4YW1wbGUs
IHlvdQorbWF5IHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIG9mIGEgR1VJIGxpYnJhcnkncyB0
ZXN0IGNhc2VzIGRvbid0IGxlYWsKK2ltcG9ydGFudCBzeXN0ZW0gcmVzb3VyY2VzIGxpa2UgZm9u
dHMgYW5kIGJydXNoZXMuCisKK0luIGdvb2dsZXRlc3QsIHlvdSBzaGFyZSBhIGZpeHR1cmUgYW1v
bmcgdGVzdCBjYXNlcyBieSBwdXR0aW5nIHRoZSBzaGFyZWQgbG9naWMKK2luIGEgYmFzZSB0ZXN0
IGZpeHR1cmUsIHRoZW4gZGVyaXZpbmcgZnJvbSB0aGF0IGJhc2UgYSBzZXBhcmF0ZSBmaXh0dXJl
IGZvciBlYWNoCit0ZXN0IGNhc2UgdGhhdCB3YW50cyB0byB1c2UgdGhpcyBjb21tb24gbG9naWMu
IFlvdSB0aGVuIHVzZSBgVEVTVF9GKClgIHRvIHdyaXRlCit0ZXN0cyB1c2luZyBlYWNoIGRlcml2
ZWQgZml4dHVyZS4KKworVHlwaWNhbGx5LCB5b3VyIGNvZGUgbG9va3MgbGlrZSB0aGlzOgorCitg
YGBjKysKKy8vIERlZmluZXMgYSBiYXNlIHRlc3QgZml4dHVyZS4KK2NsYXNzIEJhc2VUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICAuLi4KK307CisKKy8vIERl
cml2ZXMgYSBmaXh0dXJlIEZvb1Rlc3QgZnJvbSBCYXNlVGVzdC4KK2NsYXNzIEZvb1Rlc3QgOiBw
dWJsaWMgQmFzZVRlc3QgeworIHByb3RlY3RlZDoKKyAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIHsK
KyAgICBCYXNlVGVzdDo6U2V0VXAoKTsgIC8vIFNldHMgdXAgdGhlIGJhc2UgZml4dHVyZSBmaXJz
dC4KKyAgICAuLi4gYWRkaXRpb25hbCBzZXQtdXAgd29yayAuLi4KKyAgfQorCisgIHZvaWQgVGVh
ckRvd24oKSBvdmVycmlkZSB7CisgICAgLi4uIGNsZWFuLXVwIHdvcmsgZm9yIEZvb1Rlc3QgLi4u
CisgICAgQmFzZVRlc3Q6OlRlYXJEb3duKCk7ICAvLyBSZW1lbWJlciB0byB0ZWFyIGRvd24gdGhl
IGJhc2UgZml4dHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWZ0ZXIgY2xlYW5p
bmcgdXAgRm9vVGVzdCEKKyAgfQorCisgIC4uLiBmdW5jdGlvbnMgYW5kIHZhcmlhYmxlcyBmb3Ig
Rm9vVGVzdCAuLi4KK307CisKKy8vIFRlc3RzIHRoYXQgdXNlIHRoZSBmaXh0dXJlIEZvb1Rlc3Qu
CitURVNUX0YoRm9vVGVzdCwgQmFyKSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgQmF6KSB7IC4u
LiB9CisKKy4uLiBhZGRpdGlvbmFsIGZpeHR1cmVzIGRlcml2ZWQgZnJvbSBCYXNlVGVzdCAuLi4K
K2BgYAorCitJZiBuZWNlc3NhcnksIHlvdSBjYW4gY29udGludWUgdG8gZGVyaXZlIHRlc3QgZml4
dHVyZXMgZnJvbSBhIGRlcml2ZWQgZml4dHVyZS4KK2dvb2dsZXRlc3QgaGFzIG5vIGxpbWl0IG9u
IGhvdyBkZWVwIHRoZSBoaWVyYXJjaHkgY2FuIGJlLgorCitGb3IgYSBjb21wbGV0ZSBleGFtcGxl
IHVzaW5nIGRlcml2ZWQgdGVzdCBmaXh0dXJlcywgc2VlIFtnb29nbGV0ZXN0CitzYW1wbGVdKGh0
dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9ibG9iL21hc3Rlci9nb29nbGV0ZXN0
L3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYykKKworIyMgTXkgY29tcGlsZXIgY29tcGxhaW5z
ICJ2b2lkIHZhbHVlIG5vdCBpZ25vcmVkIGFzIGl0IG91Z2h0IHRvIGJlLiIgV2hhdCBkb2VzIHRo
aXMgbWVhbj8KKworWW91J3JlIHByb2JhYmx5IHVzaW5nIGFuIGBBU1NFUlRfKigpYCBpbiBhIGZ1
bmN0aW9uIHRoYXQgZG9lc24ndCByZXR1cm4gYHZvaWRgLgorYEFTU0VSVF8qKClgIGNhbiBvbmx5
IGJlIHVzZWQgaW4gYHZvaWRgIGZ1bmN0aW9ucywgZHVlIHRvIGV4Y2VwdGlvbnMgYmVpbmcKK2Rp
c2FibGVkIGJ5IG91ciBidWlsZCBzeXN0ZW0uIFBsZWFzZSBzZWUgbW9yZSBkZXRhaWxzCitbaGVy
ZV0oYWR2YW5jZWQubWQjYXNzZXJ0aW9uLXBsYWNlbWVudCkuCisKKyMjIE15IGRlYXRoIHRlc3Qg
aGFuZ3MgKG9yIHNlZy1mYXVsdHMpLiBIb3cgZG8gSSBmaXggaXQ/CisKK0luIGdvb2dsZXRlc3Qs
IGRlYXRoIHRlc3RzIGFyZSBydW4gaW4gYSBjaGlsZCBwcm9jZXNzIGFuZCB0aGUgd2F5IHRoZXkg
d29yayBpcworZGVsaWNhdGUuIFRvIHdyaXRlIGRlYXRoIHRlc3RzIHlvdSByZWFsbHkgbmVlZCB0
byB1bmRlcnN0YW5kIGhvdyB0aGV5IHdvcmsuCitQbGVhc2UgbWFrZSBzdXJlIHlvdSBoYXZlIHJl
YWQgW3RoaXNdKGFkdmFuY2VkLm1kI2hvdy1pdC13b3JrcykuCisKK0luIHBhcnRpY3VsYXIsIGRl
YXRoIHRlc3RzIGRvbid0IGxpa2UgaGF2aW5nIG11bHRpcGxlIHRocmVhZHMgaW4gdGhlIHBhcmVu
dAorcHJvY2Vzcy4gU28gdGhlIGZpcnN0IHRoaW5nIHlvdSBjYW4gdHJ5IGlzIHRvIGVsaW1pbmF0
ZSBjcmVhdGluZyB0aHJlYWRzIG91dHNpZGUKK29mIGBFWFBFQ1RfREVBVEgoKWAuIEZvciBleGFt
cGxlLCB5b3UgbWF5IHdhbnQgdG8gdXNlIFttb2Nrc10oLi4vLi4vZ29vZ2xlbW9jaykKK29yIGZh
a2Ugb2JqZWN0cyBpbnN0ZWFkIG9mIHJlYWwgb25lcyBpbiB5b3VyIHRlc3RzLgorCitTb21ldGlt
ZXMgdGhpcyBpcyBpbXBvc3NpYmxlIGFzIHNvbWUgbGlicmFyeSB5b3UgbXVzdCB1c2UgbWF5IGJl
IGNyZWF0aW5nCit0aHJlYWRzIGJlZm9yZSBgbWFpbigpYCBpcyBldmVuIHJlYWNoZWQuIEluIHRo
aXMgY2FzZSwgeW91IGNhbiB0cnkgdG8gbWluaW1pemUKK3RoZSBjaGFuY2Ugb2YgY29uZmxpY3Rz
IGJ5IGVpdGhlciBtb3ZpbmcgYXMgbWFueSBhY3Rpdml0aWVzIGFzIHBvc3NpYmxlIGluc2lkZQor
YEVYUEVDVF9ERUFUSCgpYCAoaW4gdGhlIGV4dHJlbWUgY2FzZSwgeW91IHdhbnQgdG8gbW92ZSBl
dmVyeXRoaW5nIGluc2lkZSksIG9yCitsZWF2aW5nIGFzIGZldyB0aGluZ3MgYXMgcG9zc2libGUg
aW4gaXQuIEFsc28sIHlvdSBjYW4gdHJ5IHRvIHNldCB0aGUgZGVhdGggdGVzdAorc3R5bGUgdG8g
YCJ0aHJlYWRzYWZlImAsIHdoaWNoIGlzIHNhZmVyIGJ1dCBzbG93ZXIsIGFuZCBzZWUgaWYgaXQg
aGVscHMuCisKK0lmIHlvdSBnbyB3aXRoIHRocmVhZC1zYWZlIGRlYXRoIHRlc3RzLCByZW1lbWJl
ciB0aGF0IHRoZXkgcmVydW4gdGhlIHRlc3QKK3Byb2dyYW0gZnJvbSB0aGUgYmVnaW5uaW5nIGlu
IHRoZSBjaGlsZCBwcm9jZXNzLiBUaGVyZWZvcmUgbWFrZSBzdXJlIHlvdXIKK3Byb2dyYW0gY2Fu
IHJ1biBzaWRlLWJ5LXNpZGUgd2l0aCBpdHNlbGYgYW5kIGlzIGRldGVybWluaXN0aWMuCisKK0lu
IHRoZSBlbmQsIHRoaXMgYm9pbHMgZG93biB0byBnb29kIGNvbmN1cnJlbnQgcHJvZ3JhbW1pbmcu
IFlvdSBoYXZlIHRvIG1ha2UKK3N1cmUgdGhhdCB0aGVyZSBpcyBubyByYWNlIGNvbmRpdGlvbnMg
b3IgZGVhZCBsb2NrcyBpbiB5b3VyIHByb2dyYW0uIE5vIHNpbHZlcgorYnVsbGV0IC0gc29ycnkh
CisKKyMjIFNob3VsZCBJIHVzZSB0aGUgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBvZiB0aGUgdGVz
dCBmaXh0dXJlIG9yIFNldFVwKCkvVGVhckRvd24oKT8KKworVGhlIGZpcnN0IHRoaW5nIHRvIHJl
bWVtYmVyIGlzIHRoYXQgZ29vZ2xldGVzdCBkb2VzICoqbm90KiogcmV1c2UgdGhlIHNhbWUgdGVz
dAorZml4dHVyZSBvYmplY3QgYWNyb3NzIG11bHRpcGxlIHRlc3RzLiBGb3IgZWFjaCBgVEVTVF9G
YCwgZ29vZ2xldGVzdCB3aWxsIGNyZWF0ZQorYSAqKmZyZXNoKiogdGVzdCBmaXh0dXJlIG9iamVj
dCwgaW1tZWRpYXRlbHkgY2FsbCBgU2V0VXAoKWAsIHJ1biB0aGUgdGVzdCBib2R5LAorY2FsbCBg
VGVhckRvd24oKWAsIGFuZCB0aGVuIGRlbGV0ZSB0aGUgdGVzdCBmaXh0dXJlIG9iamVjdC4KKwor
V2hlbiB5b3UgbmVlZCB0byB3cml0ZSBwZXItdGVzdCBzZXQtdXAgYW5kIHRlYXItZG93biBsb2dp
YywgeW91IGhhdmUgdGhlIGNob2ljZQorYmV0d2VlbiB1c2luZyB0aGUgdGVzdCBmaXh0dXJlIGNv
bnN0cnVjdG9yL2Rlc3RydWN0b3Igb3IgYFNldFVwKCkvVGVhckRvd24oKWAuCitUaGUgZm9ybWVy
IGlzIHVzdWFsbHkgcHJlZmVycmVkLCBhcyBpdCBoYXMgdGhlIGZvbGxvd2luZyBiZW5lZml0czoK
KworKiAgIEJ5IGluaXRpYWxpemluZyBhIG1lbWJlciB2YXJpYWJsZSBpbiB0aGUgY29uc3RydWN0
b3IsIHdlIGhhdmUgdGhlIG9wdGlvbiB0bworICAgIG1ha2UgaXQgYGNvbnN0YCwgd2hpY2ggaGVs
cHMgcHJldmVudCBhY2NpZGVudGFsIGNoYW5nZXMgdG8gaXRzIHZhbHVlIGFuZAorICAgIG1ha2Vz
IHRoZSB0ZXN0cyBtb3JlIG9idmlvdXNseSBjb3JyZWN0LgorKiAgIEluIGNhc2Ugd2UgbmVlZCB0
byBzdWJjbGFzcyB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLCB0aGUgc3ViY2xhc3MnCisgICAgY29u
c3RydWN0b3IgaXMgZ3VhcmFudGVlZCB0byBjYWxsIHRoZSBiYXNlIGNsYXNzJyBjb25zdHJ1Y3Rv
ciAqZmlyc3QqLCBhbmQKKyAgICB0aGUgc3ViY2xhc3MnIGRlc3RydWN0b3IgaXMgZ3VhcmFudGVl
ZCB0byBjYWxsIHRoZSBiYXNlIGNsYXNzJyBkZXN0cnVjdG9yCisgICAgKmFmdGVyd2FyZCouIFdp
dGggYFNldFVwKCkvVGVhckRvd24oKWAsIGEgc3ViY2xhc3MgbWF5IG1ha2UgdGhlIG1pc3Rha2Ug
b2YKKyAgICBmb3JnZXR0aW5nIHRvIGNhbGwgdGhlIGJhc2UgY2xhc3MnIGBTZXRVcCgpL1RlYXJE
b3duKClgIG9yIGNhbGwgdGhlbSBhdCB0aGUKKyAgICB3cm9uZyB0aW1lLgorCitZb3UgbWF5IHN0
aWxsIHdhbnQgdG8gdXNlIGBTZXRVcCgpL1RlYXJEb3duKClgIGluIHRoZSBmb2xsb3dpbmcgcmFy
ZSBjYXNlczoKKworKiAgIEluIHRoZSBib2R5IG9mIGEgY29uc3RydWN0b3IgKG9yIGRlc3RydWN0
b3IpLCBpdCdzIG5vdCBwb3NzaWJsZSB0byB1c2UgdGhlCisgICAgYEFTU0VSVF94eGAgbWFjcm9z
LiBUaGVyZWZvcmUsIGlmIHRoZSBzZXQtdXAgb3BlcmF0aW9uIGNvdWxkIGNhdXNlIGEgZmF0YWwK
KyAgICB0ZXN0IGZhaWx1cmUgdGhhdCBzaG91bGQgcHJldmVudCB0aGUgdGVzdCBmcm9tIHJ1bm5p
bmcsIGl0J3MgbmVjZXNzYXJ5IHRvCisgICAgdXNlIGEgYENIRUNLYCBtYWNybyBvciB0byB1c2Ug
YFNldFVwKClgIGluc3RlYWQgb2YgYSBjb25zdHJ1Y3Rvci4KKyogICBJZiB0aGUgdGVhci1kb3du
IG9wZXJhdGlvbiBjb3VsZCB0aHJvdyBhbiBleGNlcHRpb24sIHlvdSBtdXN0IHVzZQorICAgIGBU
ZWFyRG93bigpYCBhcyBvcHBvc2VkIHRvIHRoZSBkZXN0cnVjdG9yLCBhcyB0aHJvd2luZyBpbiBh
IGRlc3RydWN0b3IgbGVhZHMKKyAgICB0byB1bmRlZmluZWQgYmVoYXZpb3IgYW5kIHVzdWFsbHkg
d2lsbCBraWxsIHlvdXIgcHJvZ3JhbSByaWdodCBhd2F5LiBOb3RlCisgICAgdGhhdCBtYW55IHN0
YW5kYXJkIGxpYnJhcmllcyAobGlrZSBTVEwpIG1heSB0aHJvdyB3aGVuIGV4Y2VwdGlvbnMgYXJl
CisgICAgZW5hYmxlZCBpbiB0aGUgY29tcGlsZXIuIFRoZXJlZm9yZSB5b3Ugc2hvdWxkIHByZWZl
ciBgVGVhckRvd24oKWAgaWYgeW91CisgICAgd2FudCB0byB3cml0ZSBwb3J0YWJsZSB0ZXN0cyB0
aGF0IHdvcmsgd2l0aCBvciB3aXRob3V0IGV4Y2VwdGlvbnMuCisqICAgVGhlIGdvb2dsZXRlc3Qg
dGVhbSBpcyBjb25zaWRlcmluZyBtYWtpbmcgdGhlIGFzc2VydGlvbiBtYWNyb3MgdGhyb3cgb24K
KyAgICBwbGF0Zm9ybXMgd2hlcmUgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCAoZS5nLiBXaW5kb3dz
LCBNYWMgT1MsIGFuZCBMaW51eAorICAgIGNsaWVudC1zaWRlKSwgd2hpY2ggd2lsbCBlbGltaW5h
dGUgdGhlIG5lZWQgZm9yIHRoZSB1c2VyIHRvIHByb3BhZ2F0ZQorICAgIGZhaWx1cmVzIGZyb20g
YSBzdWJyb3V0aW5lIHRvIGl0cyBjYWxsZXIuIFRoZXJlZm9yZSwgeW91IHNob3VsZG4ndCB1c2UK
KyAgICBnb29nbGV0ZXN0IGFzc2VydGlvbnMgaW4gYSBkZXN0cnVjdG9yIGlmIHlvdXIgY29kZSBj
b3VsZCBydW4gb24gc3VjaCBhCisgICAgcGxhdGZvcm0uCisqICAgSW4gYSBjb25zdHJ1Y3RvciBv
ciBkZXN0cnVjdG9yLCB5b3UgY2Fubm90IG1ha2UgYSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwgb24K
KyAgICB0aGlzIG9iamVjdC4gKFlvdSBjYW4gY2FsbCBhIG1ldGhvZCBkZWNsYXJlZCBhcyB2aXJ0
dWFsLCBidXQgaXQgd2lsbCBiZQorICAgIHN0YXRpY2FsbHkgYm91bmQuKSBUaGVyZWZvcmUsIGlm
IHlvdSBuZWVkIHRvIGNhbGwgYSBtZXRob2QgdGhhdCB3aWxsIGJlCisgICAgb3ZlcnJpZGRlbiBp
biBhIGRlcml2ZWQgY2xhc3MsIHlvdSBoYXZlIHRvIHVzZSBgU2V0VXAoKS9UZWFyRG93bigpYC4K
KworCisjIyBUaGUgY29tcGlsZXIgY29tcGxhaW5zICJubyBtYXRjaGluZyBmdW5jdGlvbiB0byBj
YWxsIiB3aGVuIEkgdXNlIEFTU0VSVF9QUkVEKi4gSG93IGRvIEkgZml4IGl0PworCitJZiB0aGUg
cHJlZGljYXRlIGZ1bmN0aW9uIHlvdSB1c2UgaW4gYEFTU0VSVF9QUkVEKmAgb3IgYEVYUEVDVF9Q
UkVEKmAgaXMKK292ZXJsb2FkZWQgb3IgYSB0ZW1wbGF0ZSwgdGhlIGNvbXBpbGVyIHdpbGwgaGF2
ZSB0cm91YmxlIGZpZ3VyaW5nIG91dCB3aGljaAorb3ZlcmxvYWRlZCB2ZXJzaW9uIGl0IHNob3Vs
ZCB1c2UuIGBBU1NFUlRfUFJFRF9GT1JNQVQqYCBhbmQKK2BFWFBFQ1RfUFJFRF9GT1JNQVQqYCBk
b24ndCBoYXZlIHRoaXMgcHJvYmxlbS4KKworSWYgeW91IHNlZSB0aGlzIGVycm9yLCB5b3UgbWln
aHQgd2FudCB0byBzd2l0Y2ggdG8KK2AoQVNTRVJUfEVYUEVDVClfUFJFRF9GT1JNQVQqYCwgd2hp
Y2ggd2lsbCBhbHNvIGdpdmUgeW91IGEgYmV0dGVyIGZhaWx1cmUKK21lc3NhZ2UuIElmLCBob3dl
dmVyLCB0aGF0IGlzIG5vdCBhbiBvcHRpb24sIHlvdSBjYW4gcmVzb2x2ZSB0aGUgcHJvYmxlbSBi
eQorZXhwbGljaXRseSB0ZWxsaW5nIHRoZSBjb21waWxlciB3aGljaCB2ZXJzaW9uIHRvIHBpY2su
CisKK0ZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYXZlCisKK2BgYGMrKworYm9vbCBJc1Bvc2l0
aXZlKGludCBuKSB7CisgIHJldHVybiBuID4gMDsKK30KKworYm9vbCBJc1Bvc2l0aXZlKGRvdWJs
ZSB4KSB7CisgIHJldHVybiB4ID4gMDsKK30KK2BgYAorCit5b3Ugd2lsbCBnZXQgYSBjb21waWxl
ciBlcnJvciBpZiB5b3Ugd3JpdGUKKworYGBgYysrCitFWFBFQ1RfUFJFRDEoSXNQb3NpdGl2ZSwg
NSk7CitgYGAKKworSG93ZXZlciwgdGhpcyB3aWxsIHdvcms6CisKK2BgYGMrKworRVhQRUNUX1BS
RUQxKHN0YXRpY19jYXN0PGJvb2wgKCopKGludCk+KElzUG9zaXRpdmUpLCA1KTsKK2BgYAorCiso
VGhlIHN0dWZmIGluc2lkZSB0aGUgYW5nbGVkIGJyYWNrZXRzIGZvciB0aGUgYHN0YXRpY19jYXN0
YCBvcGVyYXRvciBpcyB0aGUgdHlwZQorb2YgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgZm9yIHRoZSBg
aW50YC12ZXJzaW9uIG9mIGBJc1Bvc2l0aXZlKClgLikKKworQXMgYW5vdGhlciBleGFtcGxlLCB3
aGVuIHlvdSBoYXZlIGEgdGVtcGxhdGUgZnVuY3Rpb24KKworYGBgYysrCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2Jvb2wgSXNOZWdhdGl2ZShUIHgpIHsKKyAgcmV0dXJuIHggPCAwOworfQorYGBg
CisKK3lvdSBjYW4gdXNlIGl0IGluIGEgcHJlZGljYXRlIGFzc2VydGlvbiBsaWtlIHRoaXM6CisK
K2BgYGMrKworQVNTRVJUX1BSRUQxKElzTmVnYXRpdmU8aW50PiwgLTUpOworYGBgCisKK1RoaW5n
cyBhcmUgbW9yZSBpbnRlcmVzdGluZyBpZiB5b3VyIHRlbXBsYXRlIGhhcyBtb3JlIHRoYW4gb25l
IHBhcmFtZXRlcnMuIFRoZQorZm9sbG93aW5nIHdvbid0IGNvbXBpbGU6CisKK2BgYGMrKworQVNT
RVJUX1BSRUQyKEdyZWF0ZXJUaGFuPGludCwgaW50PiwgNSwgMCk7CitgYGAKKworYXMgdGhlIEMr
KyBwcmUtcHJvY2Vzc29yIHRoaW5rcyB5b3UgYXJlIGdpdmluZyBgQVNTRVJUX1BSRUQyYCA0IGFy
Z3VtZW50cywgd2hpY2gKK2lzIG9uZSBtb3JlIHRoYW4gZXhwZWN0ZWQuIFRoZSB3b3JrYXJvdW5k
IGlzIHRvIHdyYXAgdGhlIHByZWRpY2F0ZSBmdW5jdGlvbiBpbgorcGFyZW50aGVzZXM6CisKK2Bg
YGMrKworQVNTRVJUX1BSRUQyKChHcmVhdGVyVGhhbjxpbnQsIGludD4pLCA1LCAwKTsKK2BgYAor
CisKKyMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCAiaWdub3JpbmcgcmV0dXJuIHZhbHVl
IiB3aGVuIEkgY2FsbCBSVU5fQUxMX1RFU1RTKCkuIFdoeT8KKworU29tZSBwZW9wbGUgaGFkIGJl
ZW4gaWdub3JpbmcgdGhlIHJldHVybiB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYC4gVGhhdCBp
cywKK2luc3RlYWQgb2YKKworYGBgYysrCisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CitgYGAK
KwordGhleSB3cml0ZQorCitgYGBjKysKKyAgUlVOX0FMTF9URVNUUygpOworYGBgCisKK1RoaXMg
aXMgKip3cm9uZyBhbmQgZGFuZ2Vyb3VzKiouIFRoZSB0ZXN0aW5nIHNlcnZpY2VzIG5lZWRzIHRv
IHNlZSB0aGUgcmV0dXJuCit2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYCBpbiBvcmRlciB0byBk
ZXRlcm1pbmUgaWYgYSB0ZXN0IGhhcyBwYXNzZWQuIElmIHlvdXIKK2BtYWluKClgIGZ1bmN0aW9u
IGlnbm9yZXMgaXQsIHlvdXIgdGVzdCB3aWxsIGJlIGNvbnNpZGVyZWQgc3VjY2Vzc2Z1bCBldmVu
IGlmIGl0CitoYXMgYSBnb29nbGV0ZXN0IGFzc2VydGlvbiBmYWlsdXJlLiBWZXJ5IGJhZC4KKwor
V2UgaGF2ZSBkZWNpZGVkIHRvIGZpeCB0aGlzICh0aGFua3MgdG8gTWljaGFlbCBDaGFzdGFpbiBm
b3IgdGhlIGlkZWEpLiBOb3csIHlvdXIKK2NvZGUgd2lsbCBubyBsb25nZXIgYmUgYWJsZSB0byBp
Z25vcmUgYFJVTl9BTExfVEVTVFMoKWAgd2hlbiBjb21waWxlZCB3aXRoCitgZ2NjYC4gSWYgeW91
IGRvIHNvLCB5b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IuCisKK0lmIHlvdSBzZWUgdGhlIGNv
bXBpbGVyIGNvbXBsYWluaW5nIGFib3V0IHlvdSBpZ25vcmluZyB0aGUgcmV0dXJuIHZhbHVlIG9m
CitgUlVOX0FMTF9URVNUUygpYCwgdGhlIGZpeCBpcyBzaW1wbGU6IGp1c3QgbWFrZSBzdXJlIGl0
cyB2YWx1ZSBpcyB1c2VkIGFzIHRoZQorcmV0dXJuIHZhbHVlIG9mIGBtYWluKClgLgorCitCdXQg
aG93IGNvdWxkIHdlIGludHJvZHVjZSBhIGNoYW5nZSB0aGF0IGJyZWFrcyBleGlzdGluZyB0ZXN0
cz8gV2VsbCwgaW4gdGhpcworY2FzZSwgdGhlIGNvZGUgd2FzIGFscmVhZHkgYnJva2VuIGluIHRo
ZSBmaXJzdCBwbGFjZSwgc28gd2UgZGlkbid0IGJyZWFrIGl0LiA6LSkKKworIyMgTXkgY29tcGls
ZXIgY29tcGxhaW5zIHRoYXQgYSBjb25zdHJ1Y3RvciAob3IgZGVzdHJ1Y3RvcikgY2Fubm90IHJl
dHVybiBhIHZhbHVlLiBXaGF0J3MgZ29pbmcgb24/CisKK0R1ZSB0byBhIHBlY3VsaWFyaXR5IG9m
IEMrKywgaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGUgc3ludGF4IGZvciBzdHJlYW1pbmcKK21lc3Nh
Z2VzIHRvIGFuIGBBU1NFUlRfKmAsIGUuZy4KKworYGBgYysrCisgIEFTU0VSVF9FUSgxLCBGb28o
KSkgPDwgImJsYWggYmxhaCIgPDwgZm9vOworYGBgCisKK3dlIGhhZCB0byBnaXZlIHVwIHVzaW5n
IGBBU1NFUlQqYCBhbmQgYEZBSUwqYCAoYnV0IG5vdCBgRVhQRUNUKmAgYW5kCitgQUREX0ZBSUxV
UkUqYCkgaW4gY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycy4gVGhlIHdvcmthcm91bmQgaXMg
dG8gbW92ZSB0aGUKK2NvbnRlbnQgb2YgeW91ciBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIHRvIGEg
cHJpdmF0ZSB2b2lkIG1lbWJlciBmdW5jdGlvbiwgb3IKK3N3aXRjaCB0byBgRVhQRUNUXyooKWAg
aWYgdGhhdCB3b3Jrcy4gVGhpcworW3NlY3Rpb25dKGFkdmFuY2VkLm1kI2Fzc2VydGlvbi1wbGFj
ZW1lbnQpIGluIHRoZSB1c2VyJ3MgZ3VpZGUgZXhwbGFpbnMgaXQuCisKKyMjIE15IFNldFVwKCkg
ZnVuY3Rpb24gaXMgbm90IGNhbGxlZC4gV2h5PworCitDKysgaXMgY2FzZS1zZW5zaXRpdmUuIERp
ZCB5b3Ugc3BlbGwgaXQgYXMgYFNldHVwKClgPworCitTaW1pbGFybHksIHNvbWV0aW1lcyBwZW9w
bGUgc3BlbGwgYFNldFVwVGVzdENhc2UoKWAgYXMgYFNldHVwVGVzdENhc2UoKWAgYW5kCit3b25k
ZXIgd2h5IGl0J3MgbmV2ZXIgY2FsbGVkLgorCisjIyBIb3cgZG8gSSBqdW1wIHRvIHRoZSBsaW5l
IG9mIGEgZmFpbHVyZSBpbiBFbWFjcyBkaXJlY3RseT8KKworZ29vZ2xldGVzdCdzIGZhaWx1cmUg
bWVzc2FnZSBmb3JtYXQgaXMgdW5kZXJzdG9vZCBieSBFbWFjcyBhbmQgbWFueSBvdGhlciBJREVz
LAorbGlrZSBhY21lIGFuZCBYQ29kZS4gSWYgYSBnb29nbGV0ZXN0IG1lc3NhZ2UgaXMgaW4gYSBj
b21waWxhdGlvbiBidWZmZXIgaW4KK0VtYWNzLCB0aGVuIGl0J3MgY2xpY2thYmxlLgorCisKKyMj
IEkgaGF2ZSBzZXZlcmFsIHRlc3QgY2FzZXMgd2hpY2ggc2hhcmUgdGhlIHNhbWUgdGVzdCBmaXh0
dXJlIGxvZ2ljLCBkbyBJIGhhdmUgdG8gZGVmaW5lIGEgbmV3IHRlc3QgZml4dHVyZSBjbGFzcyBm
b3IgZWFjaCBvZiB0aGVtPyBUaGlzIHNlZW1zIHByZXR0eSB0ZWRpb3VzLgorCitZb3UgZG9uJ3Qg
aGF2ZSB0by4gSW5zdGVhZCBvZgorCitgYGBjKysKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgQmFz
ZVRlc3Qge307CisKK1RFU1RfRihGb29UZXN0LCBBYmMpIHsgLi4uIH0KK1RFU1RfRihGb29UZXN0
LCBEZWYpIHsgLi4uIH0KKworY2xhc3MgQmFyVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCB7fTsKKwor
VEVTVF9GKEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIERlZikgeyAuLi4g
fQorYGBgCisKK3lvdSBjYW4gc2ltcGx5IGB0eXBlZGVmYCB0aGUgdGVzdCBmaXh0dXJlczoKKwor
YGBgYysrCit0eXBlZGVmIEJhc2VUZXN0IEZvb1Rlc3Q7CisKK1RFU1RfRihGb29UZXN0LCBBYmMp
IHsgLi4uIH0KK1RFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0KKwordHlwZWRlZiBCYXNlVGVz
dCBCYXJUZXN0OworCitURVNUX0YoQmFyVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0YoQmFyVGVz
dCwgRGVmKSB7IC4uLiB9CitgYGAKKworIyMgZ29vZ2xldGVzdCBvdXRwdXQgaXMgYnVyaWVkIGlu
IGEgd2hvbGUgYnVuY2ggb2YgTE9HIG1lc3NhZ2VzLiBXaGF0IGRvIEkgZG8/CisKK1RoZSBnb29n
bGV0ZXN0IG91dHB1dCBpcyBtZWFudCB0byBiZSBhIGNvbmNpc2UgYW5kIGh1bWFuLWZyaWVuZGx5
IHJlcG9ydC4gSWYKK3lvdXIgdGVzdCBnZW5lcmF0ZXMgdGV4dHVhbCBvdXRwdXQgaXRzZWxmLCBp
dCB3aWxsIG1peCB3aXRoIHRoZSBnb29nbGV0ZXN0CitvdXRwdXQsIG1ha2luZyBpdCBoYXJkIHRv
IHJlYWQuIEhvd2V2ZXIsIHRoZXJlIGlzIGFuIGVhc3kgc29sdXRpb24gdG8gdGhpcworcHJvYmxl
bS4KKworU2luY2UgYExPR2AgbWVzc2FnZXMgZ28gdG8gc3RkZXJyLCB3ZSBkZWNpZGVkIHRvIGxl
dCBnb29nbGV0ZXN0IG91dHB1dCBnbyB0bworc3Rkb3V0LiBUaGlzIHdheSwgeW91IGNhbiBlYXNp
bHkgc2VwYXJhdGUgdGhlIHR3byB1c2luZyByZWRpcmVjdGlvbi4gRm9yCitleGFtcGxlOgorCitg
YGBzaGVsbAorJCAuL215X3Rlc3QgPiBndGVzdF9vdXRwdXQudHh0CitgYGAKKworCisjIyBXaHkg
c2hvdWxkIEkgcHJlZmVyIHRlc3QgZml4dHVyZXMgb3ZlciBnbG9iYWwgdmFyaWFibGVzPworCitU
aGVyZSBhcmUgc2V2ZXJhbCBnb29kIHJlYXNvbnM6CisKKzEuICBJdCdzIGxpa2VseSB5b3VyIHRl
c3QgbmVlZHMgdG8gY2hhbmdlIHRoZSBzdGF0ZXMgb2YgaXRzIGdsb2JhbCB2YXJpYWJsZXMuCisg
ICAgVGhpcyBtYWtlcyBpdCBkaWZmaWN1bHQgdG8ga2VlcCBzaWRlIGVmZmVjdHMgZnJvbSBlc2Nh
cGluZyBvbmUgdGVzdCBhbmQKKyAgICBjb250YW1pbmF0aW5nIG90aGVycywgbWFraW5nIGRlYnVn
Z2luZyBkaWZmaWN1bHQuIEJ5IHVzaW5nIGZpeHR1cmVzLCBlYWNoCisgICAgdGVzdCBoYXMgYSBm
cmVzaCBzZXQgb2YgdmFyaWFibGVzIHRoYXQncyBkaWZmZXJlbnQgKGJ1dCB3aXRoIHRoZSBzYW1l
CisgICAgbmFtZXMpLiBUaHVzLCB0ZXN0cyBhcmUga2VwdCBpbmRlcGVuZGVudCBvZiBlYWNoIG90
aGVyLgorMS4gIEdsb2JhbCB2YXJpYWJsZXMgcG9sbHV0ZSB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4K
KzEuICBUZXN0IGZpeHR1cmVzIGNhbiBiZSByZXVzZWQgdmlhIHN1YmNsYXNzaW5nLCB3aGljaCBj
YW5ub3QgYmUgZG9uZSBlYXNpbHkKKyAgICB3aXRoIGdsb2JhbCB2YXJpYWJsZXMuIFRoaXMgaXMg
dXNlZnVsIGlmIG1hbnkgdGVzdCBjYXNlcyBoYXZlIHNvbWV0aGluZyBpbgorICAgIGNvbW1vbi4K
KworCisgICAgIyMgV2hhdCBjYW4gdGhlIHN0YXRlbWVudCBhcmd1bWVudCBpbiBBU1NFUlRfREVB
VEgoKSBiZT8KKworYEFTU0VSVF9ERUFUSCgqc3RhdGVtZW50KiwgKnJlZ2V4KilgIChvciBhbnkg
ZGVhdGggYXNzZXJ0aW9uIG1hY3JvKSBjYW4gYmUgdXNlZAord2hlcmV2ZXIgYCpzdGF0ZW1lbnQq
YCBpcyB2YWxpZC4gU28gYmFzaWNhbGx5IGAqc3RhdGVtZW50KmAgY2FuIGJlIGFueSBDKysKK3N0
YXRlbWVudCB0aGF0IG1ha2VzIHNlbnNlIGluIHRoZSBjdXJyZW50IGNvbnRleHQuIEluIHBhcnRp
Y3VsYXIsIGl0IGNhbgorcmVmZXJlbmNlIGdsb2JhbCBhbmQvb3IgbG9jYWwgdmFyaWFibGVzLCBh
bmQgY2FuIGJlOgorCisqICAgYSBzaW1wbGUgZnVuY3Rpb24gY2FsbCAob2Z0ZW4gdGhlIGNhc2Up
LAorKiAgIGEgY29tcGxleCBleHByZXNzaW9uLCBvcgorKiAgIGEgY29tcG91bmQgc3RhdGVtZW50
LgorCitTb21lIGV4YW1wbGVzIGFyZSBzaG93biBoZXJlOgorCitgYGBjKysKKy8vIEEgZGVhdGgg
dGVzdCBjYW4gYmUgYSBzaW1wbGUgZnVuY3Rpb24gY2FsbC4KK1RFU1QoTXlEZWF0aFRlc3QsIEZ1
bmN0aW9uQ2FsbCkgeworICBBU1NFUlRfREVBVEgoWHl6KDUpLCAiWHl6IGZhaWxlZCIpOworfQor
CisvLyBPciBhIGNvbXBsZXggZXhwcmVzc2lvbiB0aGF0IHJlZmVyZW5jZXMgdmFyaWFibGVzIGFu
ZCBmdW5jdGlvbnMuCitURVNUKE15RGVhdGhUZXN0LCBDb21wbGV4RXhwcmVzc2lvbikgeworICBj
b25zdCBib29sIGMgPSBDb25kaXRpb24oKTsKKyAgQVNTRVJUX0RFQVRIKChjID8gRnVuYzEoMCkg
OiBvYmplY3QyLk1ldGhvZCgidGVzdCIpKSwKKyAgICAgICAgICAgICAgICIoRnVuYzF8TWV0aG9k
KSBmYWlsZWQiKTsKK30KKworLy8gRGVhdGggYXNzZXJ0aW9ucyBjYW4gYmUgdXNlZCBhbnkgd2hl
cmUgaW4gYSBmdW5jdGlvbi4gIEluCisvLyBwYXJ0aWN1bGFyLCB0aGV5IGNhbiBiZSBpbnNpZGUg
YSBsb29wLgorVEVTVChNeURlYXRoVGVzdCwgSW5zaWRlTG9vcCkgeworICAvLyBWZXJpZmllcyB0
aGF0IEZvbygwKSwgRm9vKDEpLCAuLi4sIGFuZCBGb28oNCkgYWxsIGRpZS4KKyAgZm9yIChpbnQg
aSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICBFWFBFQ1RfREVBVEhfTShGb28oaSksICJGb28gaGFz
IFxcZCsgZXJyb3JzIiwKKyAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6Ok1lc3NhZ2UoKSA8
PCAid2hlcmUgaSBpcyAiIDw8IGkpOworICB9Cit9CisKKy8vIEEgZGVhdGggYXNzZXJ0aW9uIGNh
biBjb250YWluIGEgY29tcG91bmQgc3RhdGVtZW50LgorVEVTVChNeURlYXRoVGVzdCwgQ29tcG91
bmRTdGF0ZW1lbnQpIHsKKyAgLy8gVmVyaWZpZXMgdGhhdCBhdCBsZWFzZSBvbmUgb2YgQmFyKDAp
LCBCYXIoMSksIC4uLiwgYW5kCisgIC8vIEJhcig0KSBkaWVzLgorICBBU1NFUlRfREVBVEgoewor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7CisgICAgICBCYXIoaSk7CisgICAgfQor
ICB9LAorICAiQmFyIGhhcyBcXGQrIGVycm9ycyIpOworfQorYGBgCisKK2d0ZXN0LWRlYXRoLXRl
c3RfdGVzdC5jYyBjb250YWlucyBtb3JlIGV4YW1wbGVzIGlmIHlvdSBhcmUgaW50ZXJlc3RlZC4K
KworIyMgSSBoYXZlIGEgZml4dHVyZSBjbGFzcyBgRm9vVGVzdGAsIGJ1dCBgVEVTVF9GKEZvb1Rl
c3QsIEJhcilgIGdpdmVzIG1lIGVycm9yIGBgIm5vIG1hdGNoaW5nIGZ1bmN0aW9uIGZvciBjYWxs
IHRvIGBGb29UZXN0OjpGb29UZXN0KCknImBgLiBXaHk/CisKK0dvb2dsZXRlc3QgbmVlZHMgdG8g
YmUgYWJsZSB0byBjcmVhdGUgb2JqZWN0cyBvZiB5b3VyIHRlc3QgZml4dHVyZSBjbGFzcywgc28g
aXQKK211c3QgaGF2ZSBhIGRlZmF1bHQgY29uc3RydWN0b3IuIE5vcm1hbGx5IHRoZSBjb21waWxl
ciB3aWxsIGRlZmluZSBvbmUgZm9yIHlvdS4KK0hvd2V2ZXIsIHRoZXJlIGFyZSBjYXNlcyB3aGVy
ZSB5b3UgaGF2ZSB0byBkZWZpbmUgeW91ciBvd246CisKKyogICBJZiB5b3UgZXhwbGljaXRseSBk
ZWNsYXJlIGEgbm9uLWRlZmF1bHQgY29uc3RydWN0b3IgZm9yIGNsYXNzIGBGb29UZXN0YAorICAg
IChgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoKWAgZG9lcyB0aGlzKSwgdGhlbiB5b3UgbmVl
ZCB0byBkZWZpbmUgYQorICAgIGRlZmF1bHQgY29uc3RydWN0b3IsIGV2ZW4gaWYgaXQgd291bGQg
YmUgZW1wdHkuCisqICAgSWYgYEZvb1Rlc3RgIGhhcyBhIGNvbnN0IG5vbi1zdGF0aWMgZGF0YSBt
ZW1iZXIsIHRoZW4geW91IGhhdmUgdG8gZGVmaW5lIHRoZQorICAgIGRlZmF1bHQgY29uc3RydWN0
b3IgKmFuZCogaW5pdGlhbGl6ZSB0aGUgY29uc3QgbWVtYmVyIGluIHRoZSBpbml0aWFsaXplcgor
ICAgIGxpc3Qgb2YgdGhlIGNvbnN0cnVjdG9yLiAoRWFybHkgdmVyc2lvbnMgb2YgYGdjY2AgZG9l
c24ndCBmb3JjZSB5b3UgdG8KKyAgICBpbml0aWFsaXplIHRoZSBjb25zdCBtZW1iZXIuIEl0J3Mg
YSBidWcgdGhhdCBoYXMgYmVlbiBmaXhlZCBpbiBgZ2NjIDRgLikKKworIyMgV2h5IGRvZXMgQVNT
RVJUX0RFQVRIIGNvbXBsYWluIGFib3V0IHByZXZpb3VzIHRocmVhZHMgdGhhdCB3ZXJlIGFscmVh
ZHkgam9pbmVkPworCitXaXRoIHRoZSBMaW51eCBwdGhyZWFkIGxpYnJhcnksIHRoZXJlIGlzIG5v
IHR1cm5pbmcgYmFjayBvbmNlIHlvdSBjcm9zcyB0aGUgbGluZQorZnJvbSBzaW5nbGUgdGhyZWFk
IHRvIG11bHRpcGxlIHRocmVhZHMuIFRoZSBmaXJzdCB0aW1lIHlvdSBjcmVhdGUgYSB0aHJlYWQs
IGEKK21hbmFnZXIgdGhyZWFkIGlzIGNyZWF0ZWQgaW4gYWRkaXRpb24sIHNvIHlvdSBnZXQgMywg
bm90IDIsIHRocmVhZHMuIExhdGVyIHdoZW4KK3RoZSB0aHJlYWQgeW91IGNyZWF0ZSBqb2lucyB0
aGUgbWFpbiB0aHJlYWQsIHRoZSB0aHJlYWQgY291bnQgZGVjcmVtZW50cyBieSAxLAorYnV0IHRo
ZSBtYW5hZ2VyIHRocmVhZCB3aWxsIG5ldmVyIGJlIGtpbGxlZCwgc28geW91IHN0aWxsIGhhdmUg
MiB0aHJlYWRzLCB3aGljaAorbWVhbnMgeW91IGNhbm5vdCBzYWZlbHkgcnVuIGEgZGVhdGggdGVz
dC4KKworVGhlIG5ldyBOUFRMIHRocmVhZCBsaWJyYXJ5IGRvZXNuJ3Qgc3VmZmVyIGZyb20gdGhp
cyBwcm9ibGVtLCBhcyBpdCBkb2Vzbid0CitjcmVhdGUgYSBtYW5hZ2VyIHRocmVhZC4gSG93ZXZl
ciwgaWYgeW91IGRvbid0IGNvbnRyb2wgd2hpY2ggbWFjaGluZSB5b3VyIHRlc3QKK3J1bnMgb24s
IHlvdSBzaG91bGRuJ3QgZGVwZW5kIG9uIHRoaXMuCisKKyMjIFdoeSBkb2VzIGdvb2dsZXRlc3Qg
cmVxdWlyZSB0aGUgZW50aXJlIHRlc3QgY2FzZSwgaW5zdGVhZCBvZiBpbmRpdmlkdWFsIHRlc3Rz
LCB0byBiZSBuYW1lZCAqRGVhdGhUZXN0IHdoZW4gaXQgdXNlcyBBU1NFUlRfREVBVEg/CisKK2dv
b2dsZXRlc3QgZG9lcyBub3QgaW50ZXJsZWF2ZSB0ZXN0cyBmcm9tIGRpZmZlcmVudCB0ZXN0IGNh
c2VzLiBUaGF0IGlzLCBpdCBydW5zCithbGwgdGVzdHMgaW4gb25lIHRlc3QgY2FzZSBmaXJzdCwg
YW5kIHRoZW4gcnVucyBhbGwgdGVzdHMgaW4gdGhlIG5leHQgdGVzdCBjYXNlLAorYW5kIHNvIG9u
LiBnb29nbGV0ZXN0IGRvZXMgdGhpcyBiZWNhdXNlIGl0IG5lZWRzIHRvIHNldCB1cCBhIHRlc3Qg
Y2FzZSBiZWZvcmUKK3RoZSBmaXJzdCB0ZXN0IGluIGl0IGlzIHJ1biwgYW5kIHRlYXIgaXQgZG93
biBhZnRlcndvcmRzLiBTcGxpdHRpbmcgdXAgdGhlIHRlc3QKK2Nhc2Ugd291bGQgcmVxdWlyZSBt
dWx0aXBsZSBzZXQtdXAgYW5kIHRlYXItZG93biBwcm9jZXNzZXMsIHdoaWNoIGlzIGluZWZmaWNp
ZW50CithbmQgbWFrZXMgdGhlIHNlbWFudGljcyB1bmNsZWFuLgorCitJZiB3ZSB3ZXJlIHRvIGRl
dGVybWluZSB0aGUgb3JkZXIgb2YgdGVzdHMgYmFzZWQgb24gdGVzdCBuYW1lIGluc3RlYWQgb2Yg
dGVzdAorY2FzZSBuYW1lLCB0aGVuIHdlIHdvdWxkIGhhdmUgYSBwcm9ibGVtIHdpdGggdGhlIGZv
bGxvd2luZyBzaXR1YXRpb246CisKK2BgYGMrKworVEVTVF9GKEZvb1Rlc3QsIEFiY0RlYXRoVGVz
dCkgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIFV2dykgeyAuLi4gfQorCitURVNUX0YoQmFyVGVz
dCwgRGVmRGVhdGhUZXN0KSB7IC4uLiB9CitURVNUX0YoQmFyVGVzdCwgWHl6KSB7IC4uLiB9Citg
YGAKKworU2luY2UgYEZvb1Rlc3QuQWJjRGVhdGhUZXN0YCBuZWVkcyB0byBydW4gYmVmb3JlIGBC
YXJUZXN0Llh5emAsIGFuZCB3ZSBkb24ndAoraW50ZXJsZWF2ZSB0ZXN0cyBmcm9tIGRpZmZlcmVu
dCB0ZXN0IGNhc2VzLCB3ZSBuZWVkIHRvIHJ1biBhbGwgdGVzdHMgaW4gdGhlCitgRm9vVGVzdGAg
Y2FzZSBiZWZvcmUgcnVubmluZyBhbnkgdGVzdCBpbiB0aGUgYEJhclRlc3RgIGNhc2UuIFRoaXMg
Y29udHJhZGljdHMKK3dpdGggdGhlIHJlcXVpcmVtZW50IHRvIHJ1biBgQmFyVGVzdC5EZWZEZWF0
aFRlc3RgIGJlZm9yZSBgRm9vVGVzdC5VdndgLgorCisjIyBCdXQgSSBkb24ndCBsaWtlIGNhbGxp
bmcgbXkgZW50aXJlIHRlc3QgY2FzZSBcKkRlYXRoVGVzdCB3aGVuIGl0IGNvbnRhaW5zIGJvdGgg
ZGVhdGggdGVzdHMgYW5kIG5vbi1kZWF0aCB0ZXN0cy4gV2hhdCBkbyBJIGRvPworCitZb3UgZG9u
J3QgaGF2ZSB0bywgYnV0IGlmIHlvdSBsaWtlLCB5b3UgbWF5IHNwbGl0IHVwIHRoZSB0ZXN0IGNh
c2UgaW50bworYEZvb1Rlc3RgIGFuZCBgRm9vRGVhdGhUZXN0YCwgd2hlcmUgdGhlIG5hbWVzIG1h
a2UgaXQgY2xlYXIgdGhhdCB0aGV5IGFyZQorcmVsYXRlZDoKKworYGBgYysrCitjbGFzcyBGb29U
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OworCitURVNUX0YoRm9vVGVzdCwg
QWJjKSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9CisKK3VzaW5nIEZvb0Rl
YXRoVGVzdCA9IEZvb1Rlc3Q7CisKK1RFU1RfRihGb29EZWF0aFRlc3QsIFV2dykgeyAuLi4gRVhQ
RUNUX0RFQVRIKC4uLikgLi4uIH0KK1RFU1RfRihGb29EZWF0aFRlc3QsIFh5eikgeyAuLi4gQVNT
RVJUX0RFQVRIKC4uLikgLi4uIH0KK2BgYAorCisjIyBnb29nbGV0ZXN0IHByaW50cyB0aGUgTE9H
IG1lc3NhZ2VzIGluIGEgZGVhdGggdGVzdCdzIGNoaWxkIHByb2Nlc3Mgb25seSB3aGVuIHRoZSB0
ZXN0IGZhaWxzLiBIb3cgY2FuIEkgc2VlIHRoZSBMT0cgbWVzc2FnZXMgd2hlbiB0aGUgZGVhdGgg
dGVzdCBzdWNjZWVkcz8KKworUHJpbnRpbmcgdGhlIExPRyBtZXNzYWdlcyBnZW5lcmF0ZWQgYnkg
dGhlIHN0YXRlbWVudCBpbnNpZGUgYEVYUEVDVF9ERUFUSCgpYAorbWFrZXMgaXQgaGFyZGVyIHRv
IHNlYXJjaCBmb3IgcmVhbCBwcm9ibGVtcyBpbiB0aGUgcGFyZW50J3MgbG9nLiBUaGVyZWZvcmUs
Citnb29nbGV0ZXN0IG9ubHkgcHJpbnRzIHRoZW0gd2hlbiB0aGUgZGVhdGggdGVzdCBoYXMgZmFp
bGVkLgorCitJZiB5b3UgcmVhbGx5IG5lZWQgdG8gc2VlIHN1Y2ggTE9HIG1lc3NhZ2VzLCBhIHdv
cmthcm91bmQgaXMgdG8gdGVtcG9yYXJpbHkKK2JyZWFrIHRoZSBkZWF0aCB0ZXN0IChlLmcuIGJ5
IGNoYW5naW5nIHRoZSByZWdleCBwYXR0ZXJuIGl0IGlzIGV4cGVjdGVkIHRvCittYXRjaCkuIEFk
bWl0dGVkbHksIHRoaXMgaXMgYSBoYWNrLiBXZSdsbCBjb25zaWRlciBhIG1vcmUgcGVybWFuZW50
IHNvbHV0aW9uCithZnRlciB0aGUgZm9yay1hbmQtZXhlYy1zdHlsZSBkZWF0aCB0ZXN0cyBhcmUg
aW1wbGVtZW50ZWQuCisKKyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgIm5vIG1hdGNo
IGZvciAnb3BlcmF0b3I8PCciIHdoZW4gSSB1c2UgYW4gYXNzZXJ0aW9uLiBXaGF0IGdpdmVzPwor
CitJZiB5b3UgdXNlIGEgdXNlci1kZWZpbmVkIHR5cGUgYEZvb1R5cGVgIGluIGFuIGFzc2VydGlv
biwgeW91IG11c3QgbWFrZSBzdXJlCit0aGVyZSBpcyBhbiBgc3RkOjpvc3RyZWFtJiBvcGVyYXRv
cjw8KHN0ZDo6b3N0cmVhbSYsIGNvbnN0IEZvb1R5cGUmKWAgZnVuY3Rpb24KK2RlZmluZWQgc3Vj
aCB0aGF0IHdlIGNhbiBwcmludCBhIHZhbHVlIG9mIGBGb29UeXBlYC4KKworSW4gYWRkaXRpb24s
IGlmIGBGb29UeXBlYCBpcyBkZWNsYXJlZCBpbiBhIG5hbWUgc3BhY2UsIHRoZSBgPDxgIG9wZXJh
dG9yIGFsc28KK25lZWRzIHRvIGJlIGRlZmluZWQgaW4gdGhlICpzYW1lKiBuYW1lIHNwYWNlLiBT
ZWUgZ28vdG90dy80OSBmb3IgZGV0YWlscy4KKworIyMgSG93IGRvIEkgc3VwcHJlc3MgdGhlIG1l
bW9yeSBsZWFrIG1lc3NhZ2VzIG9uIFdpbmRvd3M/CisKK1NpbmNlIHRoZSBzdGF0aWNhbGx5IGlu
aXRpYWxpemVkIGdvb2dsZXRlc3Qgc2luZ2xldG9uIHJlcXVpcmVzIGFsbG9jYXRpb25zIG9uCit0
aGUgaGVhcCwgdGhlIFZpc3VhbCBDKysgbWVtb3J5IGxlYWsgZGV0ZWN0b3Igd2lsbCByZXBvcnQg
bWVtb3J5IGxlYWtzIGF0IHRoZQorZW5kIG9mIHRoZSBwcm9ncmFtIHJ1bi4gVGhlIGVhc2llc3Qg
d2F5IHRvIGF2b2lkIHRoaXMgaXMgdG8gdXNlIHRoZQorYF9DcnRNZW1DaGVja3BvaW50YCBhbmQg
YF9DcnRNZW1EdW1wQWxsT2JqZWN0c1NpbmNlYCBjYWxscyB0byBub3QgcmVwb3J0IGFueQorc3Rh
dGljYWxseSBpbml0aWFsaXplZCBoZWFwIG9iamVjdHMuIFNlZSBNU0ROIGZvciBtb3JlIGRldGFp
bHMgYW5kIGFkZGl0aW9uYWwKK2hlYXAgY2hlY2svZGVidWcgcm91dGluZXMuCisKKworIyMgSG93
IGNhbiBteSBjb2RlIGRldGVjdCBpZiBpdCBpcyBydW5uaW5nIGluIGEgdGVzdD8KKworSWYgeW91
IHdyaXRlIGNvZGUgdGhhdCBzbmlmZnMgd2hldGhlciBpdCdzIHJ1bm5pbmcgaW4gYSB0ZXN0IGFu
ZCBkb2VzIGRpZmZlcmVudAordGhpbmdzIGFjY29yZGluZ2x5LCB5b3UgYXJlIGxlYWtpbmcgdGVz
dC1vbmx5IGxvZ2ljIGludG8gcHJvZHVjdGlvbiBjb2RlIGFuZAordGhlcmUgaXMgbm8gZWFzeSB3
YXkgdG8gZW5zdXJlIHRoYXQgdGhlIHRlc3Qtb25seSBjb2RlIHBhdGhzIGFyZW4ndCBydW4gYnkK
K21pc3Rha2UgaW4gcHJvZHVjdGlvbi4gU3VjaCBjbGV2ZXJuZXNzIGFsc28gbGVhZHMgdG8KK1tI
ZWlzZW5idWdzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZWlzZW5idWcpLiBUaGVy
ZWZvcmUgd2Ugc3Ryb25nbHkKK2FkdmlzZSBhZ2FpbnN0IHRoZSBwcmFjdGljZSwgYW5kIGdvb2ds
ZXRlc3QgZG9lc24ndCBwcm92aWRlIGEgd2F5IHRvIGRvIGl0LgorCitJbiBnZW5lcmFsLCB0aGUg
cmVjb21tZW5kZWQgd2F5IHRvIGNhdXNlIHRoZSBjb2RlIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSB1
bmRlcgordGVzdCBpcyBbRGVwZW5kZW5jeSBJbmplY3Rpb25dKGh0dHBzOi8vZW4ud2lraXBlZGlh
Lm9yZy93aWtpL0RlcGVuZGVuY3lfaW5qZWN0aW9uKS4gWW91IGNhbiBpbmplY3QKK2RpZmZlcmVu
dCBmdW5jdGlvbmFsaXR5IGZyb20gdGhlIHRlc3QgYW5kIGZyb20gdGhlIHByb2R1Y3Rpb24gY29k
ZS4gU2luY2UgeW91cgorcHJvZHVjdGlvbiBjb2RlIGRvZXNuJ3QgbGluayBpbiB0aGUgZm9yLXRl
c3QgbG9naWMgYXQgYWxsICh0aGUKK1tgdGVzdG9ubHlgXShodHRwczovL2RvY3MuYmF6ZWwuYnVp
bGQvdmVyc2lvbnMvbWFzdGVyL2JlL2NvbW1vbi1kZWZpbml0aW9ucy5odG1sI2NvbW1vbi50ZXN0
b25seSkKK2F0dHJpYnV0ZSBmb3IgQlVJTEQgdGFyZ2V0cyBoZWxwcyB0byBlbnN1cmUgdGhhdCks
IHRoZXJlIGlzIG5vIGRhbmdlciBpbgorYWNjaWRlbnRhbGx5IHJ1bm5pbmcgaXQuCisKK0hvd2V2
ZXIsIGlmIHlvdSAqcmVhbGx5KiwgKnJlYWxseSosICpyZWFsbHkqIGhhdmUgbm8gY2hvaWNlLCBh
bmQgaWYgeW91IGZvbGxvdwordGhlIHJ1bGUgb2YgZW5kaW5nIHlvdXIgdGVzdCBwcm9ncmFtIG5h
bWVzIHdpdGggYF90ZXN0YCwgeW91IGNhbiB1c2UgdGhlCisqaG9ycmlibGUqIGhhY2sgb2Ygc25p
ZmZpbmcgeW91ciBleGVjdXRhYmxlIG5hbWUgKGBhcmd2WzBdYCBpbiBgbWFpbigpYCkgdG8ga25v
dword2hldGhlciB0aGUgY29kZSBpcyB1bmRlciB0ZXN0LgorCisKKyMjIEhvdyBkbyBJIHRlbXBv
cmFyaWx5IGRpc2FibGUgYSB0ZXN0PworCitJZiB5b3UgaGF2ZSBhIGJyb2tlbiB0ZXN0IHRoYXQg
eW91IGNhbm5vdCBmaXggcmlnaHQgYXdheSwgeW91IGNhbiBhZGQgdGhlCitESVNBQkxFRF8gcHJl
Zml4IHRvIGl0cyBuYW1lLiBUaGlzIHdpbGwgZXhjbHVkZSBpdCBmcm9tIGV4ZWN1dGlvbi4gVGhp
cyBpcworYmV0dGVyIHRoYW4gY29tbWVudGluZyBvdXQgdGhlIGNvZGUgb3IgdXNpbmcgI2lmIDAs
IGFzIGRpc2FibGVkIHRlc3RzIGFyZSBzdGlsbAorY29tcGlsZWQgKGFuZCB0aHVzIHdvbid0IHJv
dCkuCisKK1RvIGluY2x1ZGUgZGlzYWJsZWQgdGVzdHMgaW4gdGVzdCBleGVjdXRpb24sIGp1c3Qg
aW52b2tlIHRoZSB0ZXN0IHByb2dyYW0gd2l0aAordGhlIC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJs
ZWRfdGVzdHMgZmxhZy4KKworIyMgSXMgaXQgT0sgaWYgSSBoYXZlIHR3byBzZXBhcmF0ZSBgVEVT
VChGb28sIEJhcilgIHRlc3QgbWV0aG9kcyBkZWZpbmVkIGluIGRpZmZlcmVudCBuYW1lc3BhY2Vz
PworCitZZXMuCisKK1RoZSBydWxlIGlzICoqYWxsIHRlc3QgbWV0aG9kcyBpbiB0aGUgc2FtZSB0
ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgZml4dHVyZQorY2xhc3MuKiogVGhpcyBtZWFucyB0
aGF0IHRoZSBmb2xsb3dpbmcgaXMgKiphbGxvd2VkKiogYmVjYXVzZSBib3RoIHRlc3RzIHVzZSB0
aGUKK3NhbWUgZml4dHVyZSBjbGFzcyAoYDo6dGVzdGluZzo6VGVzdGApLgorCitgYGBjKysKK25h
bWVzcGFjZSBmb28geworVEVTVChDb29sVGVzdCwgRG9Tb21ldGhpbmcpIHsKKyAgU1VDQ0VFRCgp
OworfQorfSAgLy8gbmFtZXNwYWNlIGZvbworCituYW1lc3BhY2UgYmFyIHsKK1RFU1QoQ29vbFRl
c3QsIERvU29tZXRoaW5nKSB7CisgIFNVQ0NFRUQoKTsKK30KK30gIC8vIG5hbWVzcGFjZSBiYXIK
K2BgYAorCitIb3dldmVyLCB0aGUgZm9sbG93aW5nIGNvZGUgaXMgKipub3QgYWxsb3dlZCoqIGFu
ZCB3aWxsIHByb2R1Y2UgYSBydW50aW1lIGVycm9yCitmcm9tIGdvb2dsZXRlc3QgYmVjYXVzZSB0
aGUgdGVzdCBtZXRob2RzIGFyZSB1c2luZyBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlCitjbGFzc2Vz
IHdpdGggdGhlIHNhbWUgdGVzdCBjYXNlIG5hbWUuCisKK2BgYGMrKworbmFtZXNwYWNlIGZvbyB7
CitjbGFzcyBDb29sVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307ICAvLyBGaXh0dXJl
IGZvbzo6Q29vbFRlc3QKK1RFU1RfRihDb29sVGVzdCwgRG9Tb21ldGhpbmcpIHsKKyAgU1VDQ0VF
RCgpOworfQorfSAgLy8gbmFtZXNwYWNlIGZvbworCituYW1lc3BhY2UgYmFyIHsKK2NsYXNzIENv
b2xUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsgIC8vIEZpeHR1cmU6IGJhcjo6Q29v
bFRlc3QKK1RFU1RfRihDb29sVGVzdCwgRG9Tb21ldGhpbmcpIHsKKyAgU1VDQ0VFRCgpOworfQor
fSAgLy8gbmFtZXNwYWNlIGJhcgorYGBgCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9kb2NzL3ByaW1lci5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvcHJpbWVy
Lm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdhOGVhOGQ3MTdiODM1YmNiZDIzZjg0YzllYTA1ZjE2YTg3OGE1ZDkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL3ByaW1lci5t
ZApAQCAtMCwwICsxLDU2OSBAQAorIyBHb29nbGV0ZXN0IFByaW1lcgorCisKKyMjIEludHJvZHVj
dGlvbjogV2h5IGdvb2dsZXRlc3Q/CisKKypnb29nbGV0ZXN0KiBoZWxwcyB5b3Ugd3JpdGUgYmV0
dGVyIEMrKyB0ZXN0cy4KKworZ29vZ2xldGVzdCBpcyBhIHRlc3RpbmcgZnJhbWV3b3JrIGRldmVs
b3BlZCBieSB0aGUgVGVzdGluZworVGVjaG5vbG9neSB0ZWFtIHdpdGggR29vZ2xlJ3Mgc3BlY2lm
aWMKK3JlcXVpcmVtZW50cyBhbmQgY29uc3RyYWludHMgaW4gbWluZC4gTm8gbWF0dGVyIHdoZXRo
ZXIgeW91IHdvcmsgb24gTGludXgsCitXaW5kb3dzLCBvciBhIE1hYywgaWYgeW91IHdyaXRlIEMr
KyBjb2RlLCBnb29nbGV0ZXN0IGNhbiBoZWxwIHlvdS4gQW5kIGl0CitzdXBwb3J0cyAqYW55KiBr
aW5kIG9mIHRlc3RzLCBub3QganVzdCB1bml0IHRlc3RzLgorCitTbyB3aGF0IG1ha2VzIGEgZ29v
ZCB0ZXN0LCBhbmQgaG93IGRvZXMgZ29vZ2xldGVzdCBmaXQgaW4/IFdlIGJlbGlldmU6CisKKzEu
ICBUZXN0cyBzaG91bGQgYmUgKmluZGVwZW5kZW50KiBhbmQgKnJlcGVhdGFibGUqLiBJdCdzIGEg
cGFpbiB0byBkZWJ1ZyBhIHRlc3QKKyAgICB0aGF0IHN1Y2NlZWRzIG9yIGZhaWxzIGFzIGEgcmVz
dWx0IG9mIG90aGVyIHRlc3RzLiBnb29nbGV0ZXN0IGlzb2xhdGVzIHRoZQorICAgIHRlc3RzIGJ5
IHJ1bm5pbmcgZWFjaCBvZiB0aGVtIG9uIGEgZGlmZmVyZW50IG9iamVjdC4gV2hlbiBhIHRlc3Qg
ZmFpbHMsCisgICAgZ29vZ2xldGVzdCBhbGxvd3MgeW91IHRvIHJ1biBpdCBpbiBpc29sYXRpb24g
Zm9yIHF1aWNrIGRlYnVnZ2luZy4KKzEuICBUZXN0cyBzaG91bGQgYmUgd2VsbCAqb3JnYW5pemVk
KiBhbmQgcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mIHRoZSB0ZXN0ZWQKKyAgICBjb2RlLiBnb29n
bGV0ZXN0IGdyb3VwcyByZWxhdGVkIHRlc3RzIGludG8gdGVzdCBjYXNlcyB0aGF0IGNhbiBzaGFy
ZSBkYXRhCisgICAgYW5kIHN1YnJvdXRpbmVzLiBUaGlzIGNvbW1vbiBwYXR0ZXJuIGlzIGVhc3kg
dG8gcmVjb2duaXplIGFuZCBtYWtlcyB0ZXN0cworICAgIGVhc3kgdG8gbWFpbnRhaW4uIFN1Y2gg
Y29uc2lzdGVuY3kgaXMgZXNwZWNpYWxseSBoZWxwZnVsIHdoZW4gcGVvcGxlIHN3aXRjaAorICAg
IHByb2plY3RzIGFuZCBzdGFydCB0byB3b3JrIG9uIGEgbmV3IGNvZGUgYmFzZS4KKzEuICBUZXN0
cyBzaG91bGQgYmUgKnBvcnRhYmxlKiBhbmQgKnJldXNhYmxlKi4gR29vZ2xlIGhhcyBhIGxvdCBv
ZiBjb2RlIHRoYXQgaXMKKyAgICBwbGF0Zm9ybS1uZXV0cmFsLCBpdHMgdGVzdHMgc2hvdWxkIGFs
c28gYmUgcGxhdGZvcm0tbmV1dHJhbC4gZ29vZ2xldGVzdAorICAgIHdvcmtzIG9uIGRpZmZlcmVu
dCBPU2VzLCB3aXRoIGRpZmZlcmVudCBjb21waWxlcnMgKGdjYywgaWNjLCBhbmQgTVNWQyksIHdp
dGgKKyAgICBvciB3aXRob3V0IGV4Y2VwdGlvbnMsIHNvIGdvb2dsZXRlc3QgdGVzdHMgY2FuIGVh
c2lseSB3b3JrIHdpdGggYSB2YXJpZXR5IG9mCisgICAgY29uZmlndXJhdGlvbnMuCisxLiAgV2hl
biB0ZXN0cyBmYWlsLCB0aGV5IHNob3VsZCBwcm92aWRlIGFzIG11Y2ggKmluZm9ybWF0aW9uKiBh
Ym91dCB0aGUgcHJvYmxlbQorICAgIGFzIHBvc3NpYmxlLiBnb29nbGV0ZXN0IGRvZXNuJ3Qgc3Rv
cCBhdCB0aGUgZmlyc3QgdGVzdCBmYWlsdXJlLiBJbnN0ZWFkLCBpdAorICAgIG9ubHkgc3RvcHMg
dGhlIGN1cnJlbnQgdGVzdCBhbmQgY29udGludWVzIHdpdGggdGhlIG5leHQuIFlvdSBjYW4gYWxz
byBzZXQgdXAKKyAgICB0ZXN0cyB0aGF0IHJlcG9ydCBub24tZmF0YWwgZmFpbHVyZXMgYWZ0ZXIg
d2hpY2ggdGhlIGN1cnJlbnQgdGVzdCBjb250aW51ZXMuCisgICAgVGh1cywgeW91IGNhbiBkZXRl
Y3QgYW5kIGZpeCBtdWx0aXBsZSBidWdzIGluIGEgc2luZ2xlIHJ1bi1lZGl0LWNvbXBpbGUKKyAg
ICBjeWNsZS4KKzEuICBUaGUgdGVzdGluZyBmcmFtZXdvcmsgc2hvdWxkIGxpYmVyYXRlIHRlc3Qg
d3JpdGVycyBmcm9tIGhvdXNla2VlcGluZyBjaG9yZXMKKyAgICBhbmQgbGV0IHRoZW0gZm9jdXMg
b24gdGhlIHRlc3QgKmNvbnRlbnQqLiBnb29nbGV0ZXN0IGF1dG9tYXRpY2FsbHkga2VlcHMKKyAg
ICB0cmFjayBvZiBhbGwgdGVzdHMgZGVmaW5lZCwgYW5kIGRvZXNuJ3QgcmVxdWlyZSB0aGUgdXNl
ciB0byBlbnVtZXJhdGUgdGhlbQorICAgIGluIG9yZGVyIHRvIHJ1biB0aGVtLgorMS4gIFRlc3Rz
IHNob3VsZCBiZSAqZmFzdCouIFdpdGggZ29vZ2xldGVzdCwgeW91IGNhbiByZXVzZSBzaGFyZWQg
cmVzb3VyY2VzCisgICAgYWNyb3NzIHRlc3RzIGFuZCBwYXkgZm9yIHRoZSBzZXQtdXAvdGVhci1k
b3duIG9ubHkgb25jZSwgd2l0aG91dCBtYWtpbmcKKyAgICB0ZXN0cyBkZXBlbmQgb24gZWFjaCBv
dGhlci4KKworU2luY2UgZ29vZ2xldGVzdCBpcyBiYXNlZCBvbiB0aGUgcG9wdWxhciB4VW5pdCBh
cmNoaXRlY3R1cmUsIHlvdSdsbCBmZWVsIHJpZ2h0CithdCBob21lIGlmIHlvdSd2ZSB1c2VkIEpV
bml0IG9yIFB5VW5pdCBiZWZvcmUuIElmIG5vdCwgaXQgd2lsbCB0YWtlIHlvdSBhYm91dCAxMAor
bWludXRlcyB0byBsZWFybiB0aGUgYmFzaWNzIGFuZCBnZXQgc3RhcnRlZC4gU28gbGV0J3MgZ28h
CisKKyMjIEJld2FyZSBvZiB0aGUgbm9tZW5jbGF0dXJlCisKK19Ob3RlOl8gVGhlcmUgbWlnaHQg
YmUgc29tZSBjb25mdXNpb24gb2YgaWRlYSBkdWUgdG8gZGlmZmVyZW50CitkZWZpbml0aW9ucyBv
ZiB0aGUgdGVybXMgX1Rlc3RfLCBfVGVzdCBDYXNlXyBhbmQgX1Rlc3QgU3VpdGVfLCBzbyBiZXdh
cmUKK29mIG1pc3VuZGVyc3RhbmRpbmcgdGhlc2UuCisKK0hpc3RvcmljYWxseSwgZ29vZ2xldGVz
dCBzdGFydGVkIHRvIHVzZSB0aGUgdGVybSBfVGVzdCBDYXNlXyBmb3IgZ3JvdXBpbmcKK3JlbGF0
ZWQgdGVzdHMsIHdoZXJlYXMgY3VycmVudCBwdWJsaWNhdGlvbnMgaW5jbHVkaW5nIHRoZSBJbnRl
cm5hdGlvbmFsIFNvZnR3YXJlCitUZXN0aW5nIFF1YWxpZmljYXRpb25zIEJvYXJkIChbSVNUUUJd
KGh0dHA6Ly93d3cuaXN0cWIub3JnLykpIGFuZCB2YXJpb3VzCit0ZXh0Ym9va3Mgb24gU29mdHdh
cmUgUXVhbGl0eSB1c2UgdGhlIHRlcm0gX1tUZXN0CitTdWl0ZV0oaHR0cDovL2dsb3NzYXJ5Lmlz
dHFiLm9yZy9zZWFyY2gvdGVzdCUyMHN1aXRlKV8gZm9yIHRoaXMuCisKK1RoZSByZWxhdGVkIHRl
cm0gX1Rlc3RfLCBhcyBpdCBpcyB1c2VkIGluIHRoZSBnb29nbGV0ZXN0LCBpcyBjb3JyZXNwb25k
aW5nIHRvCit0aGUgdGVybSBfW1Rlc3QgQ2FzZV0oaHR0cDovL2dsb3NzYXJ5LmlzdHFiLm9yZy9z
ZWFyY2gvdGVzdCUyMGNhc2UpXyBvZiBJU1RRQgorYW5kIG90aGVycy4KKworVGhlIHRlcm0gX1Rl
c3RfIGlzIGNvbW1vbmx5IG9mIGJyb2FkIGVub3VnaCBzZW5zZSwgaW5jbHVkaW5nIElTVFFCJ3MK
K2RlZmluaXRpb24gb2YgX1Rlc3QgQ2FzZV8sIHNvIGl0J3Mgbm90IG11Y2ggb2YgYSBwcm9ibGVt
IGhlcmUuIEJ1dCB0aGUKK3Rlcm0gX1Rlc3QgQ2FzZV8gYXMgdXNlZCBpbiBHb29nbGUgVGVzdCBp
cyBvZiBjb250cmFkaWN0b3J5IHNlbnNlIGFuZCB0aHVzIGNvbmZ1c2luZy4KKworVW5mb3J0dW5h
dGVseSByZXBsYWNpbmcgdGhlIHRlcm0gX1Rlc3QgQ2FzZV8gYnkgX1Rlc3QgU3VpdGVfIHRocm91
Z2hvdXQgdGhlCitnb29nbGV0ZXN0IGlzIG5vdCBlYXN5IHdpdGhvdXQgYnJlYWtpbmcgZGVwZW5k
ZW50IHByb2plY3RzLCBhcyBgVGVzdENhc2VgIGlzCitwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJIGF0
IHZhcmlvdXMgcGxhY2VzLgorCitTbyBmb3IgdGhlIHRpbWUgYmVpbmcsIHBsZWFzZSBiZSBhd2Fy
ZSBvZiB0aGUgZGlmZmVyZW50IGRlZmluaXRpb25zIG9mCit0aGUgdGVybXM6CisKK01lYW5pbmcg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IGdvb2dsZXRlc3QgVGVybSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCBbSVNUUUJdKGh0dHA6Ly93d3cuaXN0cWIub3JnLykgVGVybQorOi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CitFeGVyY2lzZSBhIHBhcnRpY3VsYXIgcHJvZ3JhbSBwYXRoIHdpdGggc3BlY2lmaWMgaW5wdXQg
dmFsdWVzIGFuZCB2ZXJpZnkgdGhlIHJlc3VsdHMgfCBbVEVTVCgpXSgjc2ltcGxlLXRlc3RzKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgW1Rlc3QgQ2FzZV0oaHR0cDovL2dsb3NzYXJ5Lmlz
dHFiLm9yZy9zZWFyY2gvdGVzdCUyMGNhc2UpCitBIHNldCBvZiBzZXZlcmFsIHRlc3RzIHJlbGF0
ZWQgdG8gb25lIGNvbXBvbmVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCBbVGVzdENhc2VdKCNiYXNpYy1jb25jZXB0cykgfCBbVGVzdFN1aXRlXShodHRwOi8vZ2xvc3Nh
cnkuaXN0cWIub3JnL3NlYXJjaC90ZXN0JTIwc3VpdGUpCisKKyMjIEJhc2ljIENvbmNlcHRzCisK
K1doZW4gdXNpbmcgZ29vZ2xldGVzdCwgeW91IHN0YXJ0IGJ5IHdyaXRpbmcgKmFzc2VydGlvbnMq
LCB3aGljaCBhcmUgc3RhdGVtZW50cwordGhhdCBjaGVjayB3aGV0aGVyIGEgY29uZGl0aW9uIGlz
IHRydWUuIEFuIGFzc2VydGlvbidzIHJlc3VsdCBjYW4gYmUgKnN1Y2Nlc3MqLAorKm5vbmZhdGFs
IGZhaWx1cmUqLCBvciAqZmF0YWwgZmFpbHVyZSouIElmIGEgZmF0YWwgZmFpbHVyZSBvY2N1cnMs
IGl0IGFib3J0cyB0aGUKK2N1cnJlbnQgZnVuY3Rpb247IG90aGVyd2lzZSB0aGUgcHJvZ3JhbSBj
b250aW51ZXMgbm9ybWFsbHkuCisKKypUZXN0cyogdXNlIGFzc2VydGlvbnMgdG8gdmVyaWZ5IHRo
ZSB0ZXN0ZWQgY29kZSdzIGJlaGF2aW9yLiBJZiBhIHRlc3QgY3Jhc2hlcworb3IgaGFzIGEgZmFp
bGVkIGFzc2VydGlvbiwgdGhlbiBpdCAqZmFpbHMqOyBvdGhlcndpc2UgaXQgKnN1Y2NlZWRzKi4K
KworQSAqdGVzdCBjYXNlKiBjb250YWlucyBvbmUgb3IgbWFueSB0ZXN0cy4gWW91IHNob3VsZCBn
cm91cCB5b3VyIHRlc3RzIGludG8gdGVzdAorY2FzZXMgdGhhdCByZWZsZWN0IHRoZSBzdHJ1Y3R1
cmUgb2YgdGhlIHRlc3RlZCBjb2RlLiBXaGVuIG11bHRpcGxlIHRlc3RzIGluIGEKK3Rlc3QgY2Fz
ZSBuZWVkIHRvIHNoYXJlIGNvbW1vbiBvYmplY3RzIGFuZCBzdWJyb3V0aW5lcywgeW91IGNhbiBw
dXQgdGhlbSBpbnRvIGEKKyp0ZXN0IGZpeHR1cmUqIGNsYXNzLgorCitBICp0ZXN0IHByb2dyYW0q
IGNhbiBjb250YWluIG11bHRpcGxlIHRlc3QgY2FzZXMuCisKK1dlJ2xsIG5vdyBleHBsYWluIGhv
dyB0byB3cml0ZSBhIHRlc3QgcHJvZ3JhbSwgc3RhcnRpbmcgYXQgdGhlIGluZGl2aWR1YWwKK2Fz
c2VydGlvbiBsZXZlbCBhbmQgYnVpbGRpbmcgdXAgdG8gdGVzdHMgYW5kIHRlc3QgY2FzZXMuCisK
KyMjIEFzc2VydGlvbnMKKworZ29vZ2xldGVzdCBhc3NlcnRpb25zIGFyZSBtYWNyb3MgdGhhdCBy
ZXNlbWJsZSBmdW5jdGlvbiBjYWxscy4gWW91IHRlc3QgYSBjbGFzcworb3IgZnVuY3Rpb24gYnkg
bWFraW5nIGFzc2VydGlvbnMgYWJvdXQgaXRzIGJlaGF2aW9yLiBXaGVuIGFuIGFzc2VydGlvbiBm
YWlscywKK2dvb2dsZXRlc3QgcHJpbnRzIHRoZSBhc3NlcnRpb24ncyBzb3VyY2UgZmlsZSBhbmQg
bGluZSBudW1iZXIgbG9jYXRpb24sIGFsb25nCit3aXRoIGEgZmFpbHVyZSBtZXNzYWdlLiBZb3Ug
bWF5IGFsc28gc3VwcGx5IGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSB3aGljaCB3aWxsCitiZSBh
cHBlbmRlZCB0byBnb29nbGV0ZXN0J3MgbWVzc2FnZS4KKworVGhlIGFzc2VydGlvbnMgY29tZSBp
biBwYWlycyB0aGF0IHRlc3QgdGhlIHNhbWUgdGhpbmcgYnV0IGhhdmUgZGlmZmVyZW50IGVmZmVj
dHMKK29uIHRoZSBjdXJyZW50IGZ1bmN0aW9uLiBgQVNTRVJUXypgIHZlcnNpb25zIGdlbmVyYXRl
IGZhdGFsIGZhaWx1cmVzIHdoZW4gdGhleQorZmFpbCwgYW5kICoqYWJvcnQgdGhlIGN1cnJlbnQg
ZnVuY3Rpb24qKi4gYEVYUEVDVF8qYCB2ZXJzaW9ucyBnZW5lcmF0ZSBub25mYXRhbAorZmFpbHVy
ZXMsIHdoaWNoIGRvbid0IGFib3J0IHRoZSBjdXJyZW50IGZ1bmN0aW9uLiBVc3VhbGx5IGBFWFBF
Q1RfKmAgYXJlCitwcmVmZXJyZWQsIGFzIHRoZXkgYWxsb3cgbW9yZSB0aGFuIG9uZSBmYWlsdXJl
IHRvIGJlIHJlcG9ydGVkIGluIGEgdGVzdC4KK0hvd2V2ZXIsIHlvdSBzaG91bGQgdXNlIGBBU1NF
UlRfKmAgaWYgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIGNvbnRpbnVlIHdoZW4gdGhlCithc3Nl
cnRpb24gaW4gcXVlc3Rpb24gZmFpbHMuCisKK1NpbmNlIGEgZmFpbGVkIGBBU1NFUlRfKmAgcmV0
dXJucyBmcm9tIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGltbWVkaWF0ZWx5LAorcG9zc2libHkgc2tp
cHBpbmcgY2xlYW4tdXAgY29kZSB0aGF0IGNvbWVzIGFmdGVyIGl0LCBpdCBtYXkgY2F1c2UgYSBz
cGFjZSBsZWFrLgorRGVwZW5kaW5nIG9uIHRoZSBuYXR1cmUgb2YgdGhlIGxlYWssIGl0IG1heSBv
ciBtYXkgbm90IGJlIHdvcnRoIGZpeGluZyAtIHNvIGtlZXAKK3RoaXMgaW4gbWluZCBpZiB5b3Ug
Z2V0IGEgaGVhcCBjaGVja2VyIGVycm9yIGluIGFkZGl0aW9uIHRvIGFzc2VydGlvbiBlcnJvcnMu
CisKK1RvIHByb3ZpZGUgYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlLCBzaW1wbHkgc3RyZWFtIGl0
IGludG8gdGhlIG1hY3JvIHVzaW5nIHRoZQorYDw8YCBvcGVyYXRvciwgb3IgYSBzZXF1ZW5jZSBv
ZiBzdWNoIG9wZXJhdG9ycy4gQW4gZXhhbXBsZToKKworYGBgYysrCitBU1NFUlRfRVEoeC5zaXpl
KCksIHkuc2l6ZSgpKSA8PCAiVmVjdG9ycyB4IGFuZCB5IGFyZSBvZiB1bmVxdWFsIGxlbmd0aCI7
CisKK2ZvciAoaW50IGkgPSAwOyBpIDwgeC5zaXplKCk7ICsraSkgeworICBFWFBFQ1RfRVEoeFtp
XSwgeVtpXSkgPDwgIlZlY3RvcnMgeCBhbmQgeSBkaWZmZXIgYXQgaW5kZXggIiA8PCBpOworfQor
YGBgCisKK0FueXRoaW5nIHRoYXQgY2FuIGJlIHN0cmVhbWVkIHRvIGFuIGBvc3RyZWFtYCBjYW4g
YmUgc3RyZWFtZWQgdG8gYW4gYXNzZXJ0aW9uCittYWNyby0taW4gcGFydGljdWxhciwgQyBzdHJp
bmdzIGFuZCBgc3RyaW5nYCBvYmplY3RzLiBJZiBhIHdpZGUgc3RyaW5nCisoYHdjaGFyX3QqYCwg
YFRDSEFSKmAgaW4gYFVOSUNPREVgIG1vZGUgb24gV2luZG93cywgb3IgYHN0ZDo6d3N0cmluZ2Ap
IGlzCitzdHJlYW1lZCB0byBhbiBhc3NlcnRpb24sIGl0IHdpbGwgYmUgdHJhbnNsYXRlZCB0byBV
VEYtOCB3aGVuIHByaW50ZWQuCisKKyMjIyBCYXNpYyBBc3NlcnRpb25zCisKK1RoZXNlIGFzc2Vy
dGlvbnMgZG8gYmFzaWMgdHJ1ZS9mYWxzZSBjb25kaXRpb24gdGVzdGluZy4KKworRmF0YWwgYXNz
ZXJ0aW9uICAgICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAgICB8IFZlcmlmaWVz
CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2BBU1NFUlRfVFJVRShjb25kaXRpb24pO2AgIHwgYEVY
UEVDVF9UUlVFKGNvbmRpdGlvbik7YCAgfCBgY29uZGl0aW9uYCBpcyB0cnVlCitgQVNTRVJUX0ZB
TFNFKGNvbmRpdGlvbik7YCB8IGBFWFBFQ1RfRkFMU0UoY29uZGl0aW9uKTtgIHwgYGNvbmRpdGlv
bmAgaXMgZmFsc2UKKworUmVtZW1iZXIsIHdoZW4gdGhleSBmYWlsLCBgQVNTRVJUXypgIHlpZWxk
cyBhIGZhdGFsIGZhaWx1cmUgYW5kIHJldHVybnMgZnJvbSB0aGUKK2N1cnJlbnQgZnVuY3Rpb24s
IHdoaWxlIGBFWFBFQ1RfKmAgeWllbGRzIGEgbm9uZmF0YWwgZmFpbHVyZSwgYWxsb3dpbmcgdGhl
CitmdW5jdGlvbiB0byBjb250aW51ZSBydW5uaW5nLiBJbiBlaXRoZXIgY2FzZSwgYW4gYXNzZXJ0
aW9uIGZhaWx1cmUgbWVhbnMgaXRzCitjb250YWluaW5nIHRlc3QgZmFpbHMuCisKKyoqQXZhaWxh
YmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBCaW5hcnkgQ29tcGFyaXNvbgor
CitUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGFzc2VydGlvbnMgdGhhdCBjb21wYXJlIHR3byB2YWx1
ZXMuCisKK0ZhdGFsIGFzc2VydGlvbiAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAg
ICB8IFZlcmlmaWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLQorYEFTU0VSVF9FUSh2YWwxLCB2YWwyKTtgIHwgYEVY
UEVDVF9FUSh2YWwxLCB2YWwyKTtgIHwgYHZhbDEgPT0gdmFsMmAKK2BBU1NFUlRfTkUodmFsMSwg
dmFsMik7YCB8IGBFWFBFQ1RfTkUodmFsMSwgdmFsMik7YCB8IGB2YWwxICE9IHZhbDJgCitgQVNT
RVJUX0xUKHZhbDEsIHZhbDIpO2AgfCBgRVhQRUNUX0xUKHZhbDEsIHZhbDIpO2AgfCBgdmFsMSA8
IHZhbDJgCitgQVNTRVJUX0xFKHZhbDEsIHZhbDIpO2AgfCBgRVhQRUNUX0xFKHZhbDEsIHZhbDIp
O2AgfCBgdmFsMSA8PSB2YWwyYAorYEFTU0VSVF9HVCh2YWwxLCB2YWwyKTtgIHwgYEVYUEVDVF9H
VCh2YWwxLCB2YWwyKTtgIHwgYHZhbDEgPiB2YWwyYAorYEFTU0VSVF9HRSh2YWwxLCB2YWwyKTtg
IHwgYEVYUEVDVF9HRSh2YWwxLCB2YWwyKTtgIHwgYHZhbDEgPj0gdmFsMmAKKworVmFsdWUgYXJn
dW1lbnRzIG11c3QgYmUgY29tcGFyYWJsZSBieSB0aGUgYXNzZXJ0aW9uJ3MgY29tcGFyaXNvbiBv
cGVyYXRvciBvcgoreW91J2xsIGdldCBhIGNvbXBpbGVyIGVycm9yLiBXZSB1c2VkIHRvIHJlcXVp
cmUgdGhlIGFyZ3VtZW50cyB0byBzdXBwb3J0IHRoZQorYDw8YCBvcGVyYXRvciBmb3Igc3RyZWFt
aW5nIHRvIGFuIGBvc3RyZWFtYCwgYnV0IGl0J3Mgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4gSWYKK2A8
PGAgaXMgc3VwcG9ydGVkLCBpdCB3aWxsIGJlIGNhbGxlZCB0byBwcmludCB0aGUgYXJndW1lbnRz
IHdoZW4gdGhlIGFzc2VydGlvbgorZmFpbHM7IG90aGVyd2lzZSBnb29nbGV0ZXN0IHdpbGwgYXR0
ZW1wdCB0byBwcmludCB0aGVtIGluIHRoZSBiZXN0IHdheSBpdCBjYW4uCitGb3IgbW9yZSBkZXRh
aWxzIGFuZCBob3cgdG8gY3VzdG9taXplIHRoZSBwcmludGluZyBvZiB0aGUgYXJndW1lbnRzLCBz
ZWUKK2dNb2NrIFtyZWNpcGVdKC4uLy4uL2dvb2dsZW1vY2svZG9jcy9Db29rQm9vay5tZCN0ZWFj
aGluZy1nb29nbGUtbW9jay1ob3ctdG8tcHJpbnQteW91ci12YWx1ZXMpLikuCisKK1RoZXNlIGFz
c2VydGlvbnMgY2FuIHdvcmsgd2l0aCBhIHVzZXItZGVmaW5lZCB0eXBlLCBidXQgb25seSBpZiB5
b3UgZGVmaW5lIHRoZQorY29ycmVzcG9uZGluZyBjb21wYXJpc29uIG9wZXJhdG9yIChlLmcuIGA9
PWAsIGA8YCwgZXRjKS4gU2luY2UgdGhpcyBpcworZGlzY291cmFnZWQgYnkgdGhlIEdvb2dsZSBb
QysrIFN0eWxlCitHdWlkZV0oaHR0cHM6Ly9nb29nbGUuZ2l0aHViLmlvL3N0eWxlZ3VpZGUvY3Bw
Z3VpZGUuaHRtbCNPcGVyYXRvcl9PdmVybG9hZGluZyksCit5b3UgbWF5IG5lZWQgdG8gdXNlIGBB
U1NFUlRfVFJVRSgpYCBvciBgRVhQRUNUX1RSVUUoKWAgdG8gYXNzZXJ0IHRoZSBlcXVhbGl0eSBv
ZgordHdvIG9iamVjdHMgb2YgYSB1c2VyLWRlZmluZWQgdHlwZS4KKworSG93ZXZlciwgd2hlbiBw
b3NzaWJsZSwgYEFTU0VSVF9FUShhY3R1YWwsIGV4cGVjdGVkKWAgaXMgcHJlZmVycmVkIHRvCitg
QVNTRVJUX1RSVUUoYWN0dWFsID09IGV4cGVjdGVkKWAsIHNpbmNlIGl0IHRlbGxzIHlvdSBgYWN0
dWFsYCBhbmQgYGV4cGVjdGVkYCdzCit2YWx1ZXMgb24gZmFpbHVyZS4KKworQXJndW1lbnRzIGFy
ZSBhbHdheXMgZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4gVGhlcmVmb3JlLCBpdCdzIE9LIGZvciB0
aGUKK2FyZ3VtZW50cyB0byBoYXZlIHNpZGUgZWZmZWN0cy4gSG93ZXZlciwgYXMgd2l0aCBhbnkg
b3JkaW5hcnkgQy9DKysgZnVuY3Rpb24sCit0aGUgYXJndW1lbnRzJyBldmFsdWF0aW9uIG9yZGVy
IGlzIHVuZGVmaW5lZCAoaS5lLiB0aGUgY29tcGlsZXIgaXMgZnJlZSB0bworY2hvb3NlIGFueSBv
cmRlcikgYW5kIHlvdXIgY29kZSBzaG91bGQgbm90IGRlcGVuZCBvbiBhbnkgcGFydGljdWxhciBh
cmd1bWVudAorZXZhbHVhdGlvbiBvcmRlci4KKworYEFTU0VSVF9FUSgpYCBkb2VzIHBvaW50ZXIg
ZXF1YWxpdHkgb24gcG9pbnRlcnMuIElmIHVzZWQgb24gdHdvIEMgc3RyaW5ncywgaXQKK3Rlc3Rz
IGlmIHRoZXkgYXJlIGluIHRoZSBzYW1lIG1lbW9yeSBsb2NhdGlvbiwgbm90IGlmIHRoZXkgaGF2
ZSB0aGUgc2FtZSB2YWx1ZS4KK1RoZXJlZm9yZSwgaWYgeW91IHdhbnQgdG8gY29tcGFyZSBDIHN0
cmluZ3MgKGUuZy4gYGNvbnN0IGNoYXIqYCkgYnkgdmFsdWUsIHVzZQorYEFTU0VSVF9TVFJFUSgp
YCwgd2hpY2ggd2lsbCBiZSBkZXNjcmliZWQgbGF0ZXIgb24uIEluIHBhcnRpY3VsYXIsIHRvIGFz
c2VydAordGhhdCBhIEMgc3RyaW5nIGlzIGBOVUxMYCwgdXNlIGBBU1NFUlRfU1RSRVEoY19zdHJp
bmcsIE5VTEwpYC4gQ29uc2lkZXIgdXNlCitgQVNTRVJUX0VRKGNfc3RyaW5nLCBudWxscHRyKWAg
aWYgYysrMTEgaXMgc3VwcG9ydGVkLiBUbyBjb21wYXJlIHR3byBgc3RyaW5nYAorb2JqZWN0cywg
eW91IHNob3VsZCB1c2UgYEFTU0VSVF9FUWAuCisKK1doZW4gZG9pbmcgcG9pbnRlciBjb21wYXJp
c29ucyB1c2UgYCpfRVEocHRyLCBudWxscHRyKWAgYW5kIGAqX05FKHB0ciwgbnVsbHB0cilgCitp
bnN0ZWFkIG9mIGAqX0VRKHB0ciwgTlVMTClgIGFuZCBgKl9ORShwdHIsIE5VTEwpYC4gVGhpcyBp
cyBiZWNhdXNlIGBudWxscHRyYCBpcwordHlwZWQgd2hpbGUgYE5VTExgIGlzIG5vdC4gU2VlIFtG
QVFdKGZhcS5tZCN3aHktZG9lcy1nb29nbGUtdGVzdC1zdXBwb3J0LWV4cGVjdF9lcW51bGwtcHRy
LWFuZC1hc3NlcnRfZXFudWxsLXB0ci1idXQtbm90LWV4cGVjdF9uZW51bGwtcHRyLWFuZC1hc3Nl
cnRfbmVudWxsLXB0cikKK2ZvciBtb3JlIGRldGFpbHMuCisKK0lmIHlvdSdyZSB3b3JraW5nIHdp
dGggZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgeW91IG1heSB3YW50IHRvIHVzZSB0aGUgZmxvYXRp
bmcKK3BvaW50IHZhcmlhdGlvbnMgb2Ygc29tZSBvZiB0aGVzZSBtYWNyb3MgaW4gb3JkZXIgdG8g
YXZvaWQgcHJvYmxlbXMgY2F1c2VkIGJ5Cityb3VuZGluZy4gU2VlIFtBZHZhbmNlZCBnb29nbGV0
ZXN0IFRvcGljc10oYWR2YW5jZWQubWQpIGZvciBkZXRhaWxzLgorCitNYWNyb3MgaW4gdGhpcyBz
ZWN0aW9uIHdvcmsgd2l0aCBib3RoIG5hcnJvdyBhbmQgd2lkZSBzdHJpbmcgb2JqZWN0cyAoYHN0
cmluZ2AKK2FuZCBgd3N0cmluZ2ApLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93
cywgTWFjLgorCisqKkhpc3RvcmljYWwgbm90ZSoqOiBCZWZvcmUgRmVicnVhcnkgMjAxNiBgKl9F
UWAgaGFkIGEgY29udmVudGlvbiBvZiBjYWxsaW5nIGl0CithcyBgQVNTRVJUX0VRKGV4cGVjdGVk
LCBhY3R1YWwpYCwgc28gbG90cyBvZiBleGlzdGluZyBjb2RlIHVzZXMgdGhpcyBvcmRlci4gTm93
CitgKl9FUWAgdHJlYXRzIGJvdGggcGFyYW1ldGVycyBpbiB0aGUgc2FtZSB3YXkuCisKKyMjIyBT
dHJpbmcgQ29tcGFyaXNvbgorCitUaGUgYXNzZXJ0aW9ucyBpbiB0aGlzIGdyb3VwIGNvbXBhcmUg
dHdvICoqQyBzdHJpbmdzKiouIElmIHlvdSB3YW50IHRvIGNvbXBhcmUKK3R3byBgc3RyaW5nYCBv
YmplY3RzLCB1c2UgYEVYUEVDVF9FUWAsIGBFWFBFQ1RfTkVgLCBhbmQgZXRjIGluc3RlYWQuCisK
K3wgRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAg
ICAgICAgICAgICAgfCBWZXJpZmllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8Cit8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAorfCBgQVNTRVJUX1NUUkVRKHN0cjEsIHN0
cjIpO2AgICAgIHwgYEVYUEVDVF9TVFJFUShzdHIxLCBzdHIyKTtgICAgICB8IHRoZSB0d28gQyBz
dHJpbmdzIGhhdmUgdGhlIHNhbWUgY29udGVudCAgICAgICAgICAgICAgICAgIHwKK3wgYEFTU0VS
VF9TVFJORShzdHIxLCBzdHIyKTtgICAgICB8IGBFWFBFQ1RfU1RSTkUoc3RyMSwgc3RyMik7YCAg
ICAgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIGRpZmZlcmVudCBjb250ZW50cyAgICAgICAgICAg
ICAgICB8Cit8IGBBU1NFUlRfU1RSQ0FTRUVRKHN0cjEsIHN0cjIpO2AgfCBgRVhQRUNUX1NUUkNB
U0VFUShzdHIxLCBzdHIyKTtgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSB0aGUgc2FtZSBjb250
ZW50LCBpZ25vcmluZyBjYXNlICAgfAorfCBgQVNTRVJUX1NUUkNBU0VORShzdHIxLCBzdHIyKTtg
IHwgYEVYUEVDVF9TVFJDQVNFTkUoc3RyMSwgc3RyMik7YCB8IHRoZSB0d28gQyBzdHJpbmdzIGhh
dmUgZGlmZmVyZW50IGNvbnRlbnRzLCBpZ25vcmluZyBjYXNlIHwKKworTm90ZSB0aGF0ICJDQVNF
IiBpbiBhbiBhc3NlcnRpb24gbmFtZSBtZWFucyB0aGF0IGNhc2UgaXMgaWdub3JlZC4gQSBgTlVM
TGAKK3BvaW50ZXIgYW5kIGFuIGVtcHR5IHN0cmluZyBhcmUgY29uc2lkZXJlZCAqZGlmZmVyZW50
Ki4KKworYCpTVFJFUSpgIGFuZCBgKlNUUk5FKmAgYWxzbyBhY2NlcHQgd2lkZSBDIHN0cmluZ3Mg
KGB3Y2hhcl90KmApLiBJZiBhIGNvbXBhcmlzb24KK29mIHR3byB3aWRlIHN0cmluZ3MgZmFpbHMs
IHRoZWlyIHZhbHVlcyB3aWxsIGJlIHByaW50ZWQgYXMgVVRGLTggbmFycm93IHN0cmluZ3MuCisK
KyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyoqU2VlIGFsc28qKjog
Rm9yIG1vcmUgc3RyaW5nIGNvbXBhcmlzb24gdHJpY2tzIChzdWJzdHJpbmcsIHByZWZpeCwgc3Vm
Zml4LCBhbmQKK3JlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGluZywgZm9yIGV4YW1wbGUpLCBzZWUK
K1t0aGlzXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvYmxvYi9tYXN0ZXIv
Z29vZ2xldGVzdC9kb2NzL2FkdmFuY2VkLm1kKQoraW4gdGhlIEFkdmFuY2VkIGdvb2dsZXRlc3Qg
R3VpZGUuCisKKyMjIFNpbXBsZSBUZXN0cworCitUbyBjcmVhdGUgYSB0ZXN0OgorCisxLiAgVXNl
IHRoZSBgVEVTVCgpYCBtYWNybyB0byBkZWZpbmUgYW5kIG5hbWUgYSB0ZXN0IGZ1bmN0aW9uLCBU
aGVzZSBhcmUKKyAgICBvcmRpbmFyeSBDKysgZnVuY3Rpb25zIHRoYXQgZG9uJ3QgcmV0dXJuIGEg
dmFsdWUuCisxLiAgSW4gdGhpcyBmdW5jdGlvbiwgYWxvbmcgd2l0aCBhbnkgdmFsaWQgQysrIHN0
YXRlbWVudHMgeW91IHdhbnQgdG8gaW5jbHVkZSwKKyAgICB1c2UgdGhlIHZhcmlvdXMgZ29vZ2xl
dGVzdCBhc3NlcnRpb25zIHRvIGNoZWNrIHZhbHVlcy4KKzEuICBUaGUgdGVzdCdzIHJlc3VsdCBp
cyBkZXRlcm1pbmVkIGJ5IHRoZSBhc3NlcnRpb25zOyBpZiBhbnkgYXNzZXJ0aW9uIGluIHRoZQor
ICAgIHRlc3QgZmFpbHMgKGVpdGhlciBmYXRhbGx5IG9yIG5vbi1mYXRhbGx5KSwgb3IgaWYgdGhl
IHRlc3QgY3Jhc2hlcywgdGhlCisgICAgZW50aXJlIHRlc3QgZmFpbHMuIE90aGVyd2lzZSwgaXQg
c3VjY2VlZHMuCisKK2BgYGMrKworVEVTVChUZXN0Q2FzZU5hbWUsIFRlc3ROYW1lKSB7CisgIC4u
LiB0ZXN0IGJvZHkgLi4uCit9CitgYGAKKworYFRFU1QoKWAgYXJndW1lbnRzIGdvIGZyb20gZ2Vu
ZXJhbCB0byBzcGVjaWZpYy4gVGhlICpmaXJzdCogYXJndW1lbnQgaXMgdGhlIG5hbWUKK29mIHRo
ZSB0ZXN0IGNhc2UsIGFuZCB0aGUgKnNlY29uZCogYXJndW1lbnQgaXMgdGhlIHRlc3QncyBuYW1l
IHdpdGhpbiB0aGUgdGVzdAorY2FzZS4gQm90aCBuYW1lcyBtdXN0IGJlIHZhbGlkIEMrKyBpZGVu
dGlmaWVycywgYW5kIHRoZXkgc2hvdWxkIG5vdCBjb250YWluCit1bmRlcnNjb3JlIChgX2ApLiBB
IHRlc3QncyAqZnVsbCBuYW1lKiBjb25zaXN0cyBvZiBpdHMgY29udGFpbmluZyB0ZXN0IGNhc2Ug
YW5kCitpdHMgaW5kaXZpZHVhbCBuYW1lLiBUZXN0cyBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2Vz
IGNhbiBoYXZlIHRoZSBzYW1lCitpbmRpdmlkdWFsIG5hbWUuCisKK0ZvciBleGFtcGxlLCBsZXQn
cyB0YWtlIGEgc2ltcGxlIGludGVnZXIgZnVuY3Rpb246CisKK2BgYGMrKworaW50IEZhY3Rvcmlh
bChpbnQgbik7ICAvLyBSZXR1cm5zIHRoZSBmYWN0b3JpYWwgb2YgbgorYGBgCisKK0EgdGVzdCBj
YXNlIGZvciB0aGlzIGZ1bmN0aW9uIG1pZ2h0IGxvb2sgbGlrZToKKworYGBgYysrCisvLyBUZXN0
cyBmYWN0b3JpYWwgb2YgMC4KK1RFU1QoRmFjdG9yaWFsVGVzdCwgSGFuZGxlc1plcm9JbnB1dCkg
eworICBFWFBFQ1RfRVEoRmFjdG9yaWFsKDApLCAxKTsKK30KKworLy8gVGVzdHMgZmFjdG9yaWFs
IG9mIHBvc2l0aXZlIG51bWJlcnMuCitURVNUKEZhY3RvcmlhbFRlc3QsIEhhbmRsZXNQb3NpdGl2
ZUlucHV0KSB7CisgIEVYUEVDVF9FUShGYWN0b3JpYWwoMSksIDEpOworICBFWFBFQ1RfRVEoRmFj
dG9yaWFsKDIpLCAyKTsKKyAgRVhQRUNUX0VRKEZhY3RvcmlhbCgzKSwgNik7CisgIEVYUEVDVF9F
UShGYWN0b3JpYWwoOCksIDQwMzIwKTsKK30KK2BgYAorCitnb29nbGV0ZXN0IGdyb3VwcyB0aGUg
dGVzdCByZXN1bHRzIGJ5IHRlc3QgY2FzZXMsIHNvIGxvZ2ljYWxseS1yZWxhdGVkIHRlc3RzCitz
aG91bGQgYmUgaW4gdGhlIHNhbWUgdGVzdCBjYXNlOyBpbiBvdGhlciB3b3JkcywgdGhlIGZpcnN0
IGFyZ3VtZW50IHRvIHRoZWlyCitgVEVTVCgpYCBzaG91bGQgYmUgdGhlIHNhbWUuIEluIHRoZSBh
Ym92ZSBleGFtcGxlLCB3ZSBoYXZlIHR3byB0ZXN0cywKK2BIYW5kbGVzWmVyb0lucHV0YCBhbmQg
YEhhbmRsZXNQb3NpdGl2ZUlucHV0YCwgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUgdGVzdCBjYXNl
CitgRmFjdG9yaWFsVGVzdGAuCisKK1doZW4gbmFtaW5nIHlvdXIgdGVzdCBjYXNlcyBhbmQgdGVz
dHMsIHlvdSBzaG91bGQgZm9sbG93IHRoZSBzYW1lIGNvbnZlbnRpb24gYXMKK2ZvciBbbmFtaW5n
IGZ1bmN0aW9ucyBhbmQKK2NsYXNzZXNdKGh0dHBzOi8vZ29vZ2xlLmdpdGh1Yi5pby9zdHlsZWd1
aWRlL2NwcGd1aWRlLmh0bWwjRnVuY3Rpb25fTmFtZXMpLgorCisqKkF2YWlsYWJpbGl0eSoqOiBM
aW51eCwgV2luZG93cywgTWFjLgorCisjIyBUZXN0IEZpeHR1cmVzOiBVc2luZyB0aGUgU2FtZSBE
YXRhIENvbmZpZ3VyYXRpb24gZm9yIE11bHRpcGxlIFRlc3RzCisKK0lmIHlvdSBmaW5kIHlvdXJz
ZWxmIHdyaXRpbmcgdHdvIG9yIG1vcmUgdGVzdHMgdGhhdCBvcGVyYXRlIG9uIHNpbWlsYXIgZGF0
YSwgeW91CitjYW4gdXNlIGEgKnRlc3QgZml4dHVyZSouIEl0IGFsbG93cyB5b3UgdG8gcmV1c2Ug
dGhlIHNhbWUgY29uZmlndXJhdGlvbiBvZgorb2JqZWN0cyBmb3Igc2V2ZXJhbCBkaWZmZXJlbnQg
dGVzdHMuCisKK1RvIGNyZWF0ZSBhIGZpeHR1cmU6CisKKzEuICBEZXJpdmUgYSBjbGFzcyBmcm9t
IGA6OnRlc3Rpbmc6OlRlc3RgIC4gU3RhcnQgaXRzIGJvZHkgd2l0aCBgcHJvdGVjdGVkOmAgYXMK
KyAgICB3ZSdsbCB3YW50IHRvIGFjY2VzcyBmaXh0dXJlIG1lbWJlcnMgZnJvbSBzdWItY2xhc3Nl
cy4KKzEuICBJbnNpZGUgdGhlIGNsYXNzLCBkZWNsYXJlIGFueSBvYmplY3RzIHlvdSBwbGFuIHRv
IHVzZS4KKzEuICBJZiBuZWNlc3NhcnksIHdyaXRlIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciBvciBg
U2V0VXAoKWAgZnVuY3Rpb24gdG8gcHJlcGFyZQorICAgIHRoZSBvYmplY3RzIGZvciBlYWNoIHRl
c3QuIEEgY29tbW9uIG1pc3Rha2UgaXMgdG8gc3BlbGwgYFNldFVwKClgIGFzCisgICAgKipgU2V0
dXAoKWAqKiB3aXRoIGEgc21hbGwgYHVgIC0gVXNlIGBvdmVycmlkZWAgaW4gQysrMTEgdG8gbWFr
ZSBzdXJlIHlvdQorICAgIHNwZWxsZWQgaXQgY29ycmVjdGx5CisxLiAgSWYgbmVjZXNzYXJ5LCB3
cml0ZSBhIGRlc3RydWN0b3Igb3IgYFRlYXJEb3duKClgIGZ1bmN0aW9uIHRvIHJlbGVhc2UgYW55
CisgICAgcmVzb3VyY2VzIHlvdSBhbGxvY2F0ZWQgaW4gYFNldFVwKClgIC4gVG8gbGVhcm4gd2hl
biB5b3Ugc2hvdWxkIHVzZSB0aGUKKyAgICBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIGFuZCB3aGVu
IHlvdSBzaG91bGQgdXNlIGBTZXRVcCgpL1RlYXJEb3duKClgLCByZWFkCisgICAgdGhpcyBbRkFR
XShmYXEubWQjc2hvdWxkLWktdXNlLXRoZS1jb25zdHJ1Y3RvcmRlc3RydWN0b3Itb2YtdGhlLXRl
c3QtZml4dHVyZS1vci1zZXR1cHRlYXJkb3duKSBlbnRyeS4KKzEuICBJZiBuZWVkZWQsIGRlZmlu
ZSBzdWJyb3V0aW5lcyBmb3IgeW91ciB0ZXN0cyB0byBzaGFyZS4KKworV2hlbiB1c2luZyBhIGZp
eHR1cmUsIHVzZSBgVEVTVF9GKClgIGluc3RlYWQgb2YgYFRFU1QoKWAgYXMgaXQgYWxsb3dzIHlv
dSB0bworYWNjZXNzIG9iamVjdHMgYW5kIHN1YnJvdXRpbmVzIGluIHRoZSB0ZXN0IGZpeHR1cmU6
CisKK2BgYGMrKworVEVTVF9GKFRlc3RDYXNlTmFtZSwgVGVzdE5hbWUpIHsKKyAgLi4uIHRlc3Qg
Ym9keSAuLi4KK30KK2BgYAorCitMaWtlIGBURVNUKClgLCB0aGUgZmlyc3QgYXJndW1lbnQgaXMg
dGhlIHRlc3QgY2FzZSBuYW1lLCBidXQgZm9yIGBURVNUX0YoKWAgdGhpcworbXVzdCBiZSB0aGUg
bmFtZSBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLiBZb3UndmUgcHJvYmFibHkgZ3Vlc3NlZDog
YF9GYCBpcyBmb3IKK2ZpeHR1cmUuCisKK1VuZm9ydHVuYXRlbHksIHRoZSBDKysgbWFjcm8gc3lz
dGVtIGRvZXMgbm90IGFsbG93IHVzIHRvIGNyZWF0ZSBhIHNpbmdsZSBtYWNybwordGhhdCBjYW4g
aGFuZGxlIGJvdGggdHlwZXMgb2YgdGVzdHMuIFVzaW5nIHRoZSB3cm9uZyBtYWNybyBjYXVzZXMg
YSBjb21waWxlcgorZXJyb3IuCisKK0Fsc28sIHlvdSBtdXN0IGZpcnN0IGRlZmluZSBhIHRlc3Qg
Zml4dHVyZSBjbGFzcyBiZWZvcmUgdXNpbmcgaXQgaW4gYQorYFRFU1RfRigpYCwgb3IgeW91J2xs
IGdldCB0aGUgY29tcGlsZXIgZXJyb3IgImB2aXJ0dWFsIG91dHNpZGUgY2xhc3MKK2RlY2xhcmF0
aW9uYCIuCisKK0ZvciBlYWNoIHRlc3QgZGVmaW5lZCB3aXRoIGBURVNUX0YoKWAgLCBnb29nbGV0
ZXN0IHdpbGwgY3JlYXRlIGEgKmZyZXNoKiB0ZXN0CitmaXh0dXJlIGF0IHJ1bnRpbWUsIGltbWVk
aWF0ZWx5IGluaXRpYWxpemUgaXQgdmlhIGBTZXRVcCgpYCAsIHJ1biB0aGUgdGVzdCwKK2NsZWFu
IHVwIGJ5IGNhbGxpbmcgYFRlYXJEb3duKClgICwgYW5kIHRoZW4gZGVsZXRlIHRoZSB0ZXN0IGZp
eHR1cmUuIE5vdGUgdGhhdAorZGlmZmVyZW50IHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBo
YXZlIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgb2JqZWN0cywgYW5kCitnb29nbGV0ZXN0IGFsd2F5
cyBkZWxldGVzIGEgdGVzdCBmaXh0dXJlIGJlZm9yZSBpdCBjcmVhdGVzIHRoZSBuZXh0IG9uZS4K
K2dvb2dsZXRlc3QgZG9lcyAqKm5vdCoqIHJldXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBmb3Ig
bXVsdGlwbGUgdGVzdHMuIEFueQorY2hhbmdlcyBvbmUgdGVzdCBtYWtlcyB0byB0aGUgZml4dHVy
ZSBkbyBub3QgYWZmZWN0IG90aGVyIHRlc3RzLgorCitBcyBhbiBleGFtcGxlLCBsZXQncyB3cml0
ZSB0ZXN0cyBmb3IgYSBGSUZPIHF1ZXVlIGNsYXNzIG5hbWVkIGBRdWV1ZWAsIHdoaWNoIGhhcwor
dGhlIGZvbGxvd2luZyBpbnRlcmZhY2U6CisKK2BgYGMrKwordGVtcGxhdGUgPHR5cGVuYW1lIEU+
ICAvLyBFIGlzIHRoZSBlbGVtZW50IHR5cGUuCitjbGFzcyBRdWV1ZSB7CisgcHVibGljOgorICBR
dWV1ZSgpOworICB2b2lkIEVucXVldWUoY29uc3QgRSYgZWxlbWVudCk7CisgIEUqIERlcXVldWUo
KTsgIC8vIFJldHVybnMgTlVMTCBpZiB0aGUgcXVldWUgaXMgZW1wdHkuCisgIHNpemVfdCBzaXpl
KCkgY29uc3Q7CisgIC4uLgorfTsKK2BgYAorCitGaXJzdCwgZGVmaW5lIGEgZml4dHVyZSBjbGFz
cy4gQnkgY29udmVudGlvbiwgeW91IHNob3VsZCBnaXZlIGl0IHRoZSBuYW1lCitgRm9vVGVzdGAg
d2hlcmUgYEZvb2AgaXMgdGhlIGNsYXNzIGJlaW5nIHRlc3RlZC4KKworYGBgYysrCitjbGFzcyBR
dWV1ZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZvaWQg
U2V0VXAoKSBvdmVycmlkZSB7CisgICAgIHExXy5FbnF1ZXVlKDEpOworICAgICBxMl8uRW5xdWV1
ZSgyKTsKKyAgICAgcTJfLkVucXVldWUoMyk7CisgIH0KKworICAvLyB2b2lkIFRlYXJEb3duKCkg
b3ZlcnJpZGUge30KKworICBRdWV1ZTxpbnQ+IHEwXzsKKyAgUXVldWU8aW50PiBxMV87CisgIFF1
ZXVlPGludD4gcTJfOworfTsKK2BgYAorCitJbiB0aGlzIGNhc2UsIGBUZWFyRG93bigpYCBpcyBu
b3QgbmVlZGVkIHNpbmNlIHdlIGRvbid0IGhhdmUgdG8gY2xlYW4gdXAgYWZ0ZXIKK2VhY2ggdGVz
dCwgb3RoZXIgdGhhbiB3aGF0J3MgYWxyZWFkeSBkb25lIGJ5IHRoZSBkZXN0cnVjdG9yLgorCitO
b3cgd2UnbGwgd3JpdGUgdGVzdHMgdXNpbmcgYFRFU1RfRigpYCBhbmQgdGhpcyBmaXh0dXJlLgor
CitgYGBjKysKK1RFU1RfRihRdWV1ZVRlc3QsIElzRW1wdHlJbml0aWFsbHkpIHsKKyAgRVhQRUNU
X0VRKHEwXy5zaXplKCksIDApOworfQorCitURVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVlV29ya3Mp
IHsKKyAgaW50KiBuID0gcTBfLkRlcXVldWUoKTsKKyAgRVhQRUNUX0VRKG4sIG51bGxwdHIpOwor
CisgIG4gPSBxMV8uRGVxdWV1ZSgpOworICBBU1NFUlRfTkUobiwgbnVsbHB0cik7CisgIEVYUEVD
VF9FUSgqbiwgMSk7CisgIEVYUEVDVF9FUShxMV8uc2l6ZSgpLCAwKTsKKyAgZGVsZXRlIG47CisK
KyAgbiA9IHEyXy5EZXF1ZXVlKCk7CisgIEFTU0VSVF9ORShuLCBudWxscHRyKTsKKyAgRVhQRUNU
X0VRKCpuLCAyKTsKKyAgRVhQRUNUX0VRKHEyXy5zaXplKCksIDEpOworICBkZWxldGUgbjsKK30K
K2BgYAorCitUaGUgYWJvdmUgdXNlcyBib3RoIGBBU1NFUlRfKmAgYW5kIGBFWFBFQ1RfKmAgYXNz
ZXJ0aW9ucy4gVGhlIHJ1bGUgb2YgdGh1bWIgaXMKK3RvIHVzZSBgRVhQRUNUXypgIHdoZW4geW91
IHdhbnQgdGhlIHRlc3QgdG8gY29udGludWUgdG8gcmV2ZWFsIG1vcmUgZXJyb3JzIGFmdGVyCit0
aGUgYXNzZXJ0aW9uIGZhaWx1cmUsIGFuZCB1c2UgYEFTU0VSVF8qYCB3aGVuIGNvbnRpbnVpbmcg
YWZ0ZXIgZmFpbHVyZSBkb2Vzbid0CittYWtlIHNlbnNlLiBGb3IgZXhhbXBsZSwgdGhlIHNlY29u
ZCBhc3NlcnRpb24gaW4gdGhlIGBEZXF1ZXVlYCB0ZXN0IGlzCis9QVNTRVJUX05FKG51bGxwdHIs
IG4pPSwgYXMgd2UgbmVlZCB0byBkZXJlZmVyZW5jZSB0aGUgcG9pbnRlciBgbmAgbGF0ZXIsIHdo
aWNoCit3b3VsZCBsZWFkIHRvIGEgc2VnZmF1bHQgd2hlbiBgbmAgaXMgYE5VTExgLgorCitXaGVu
IHRoZXNlIHRlc3RzIHJ1biwgdGhlIGZvbGxvd2luZyBoYXBwZW5zOgorCisxLiAgZ29vZ2xldGVz
dCBjb25zdHJ1Y3RzIGEgYFF1ZXVlVGVzdGAgb2JqZWN0IChsZXQncyBjYWxsIGl0IGB0MWAgKS4K
KzEuICBgdDEuU2V0VXAoKWAgaW5pdGlhbGl6ZXMgYHQxYCAuCisxLiAgVGhlIGZpcnN0IHRlc3Qg
KCBgSXNFbXB0eUluaXRpYWxseWAgKSBydW5zIG9uIGB0MWAgLgorMS4gIGB0MS5UZWFyRG93bigp
YCBjbGVhbnMgdXAgYWZ0ZXIgdGhlIHRlc3QgZmluaXNoZXMuCisxLiAgYHQxYCBpcyBkZXN0cnVj
dGVkLgorMS4gIFRoZSBhYm92ZSBzdGVwcyBhcmUgcmVwZWF0ZWQgb24gYW5vdGhlciBgUXVldWVU
ZXN0YCBvYmplY3QsIHRoaXMgdGltZQorICAgIHJ1bm5pbmcgdGhlIGBEZXF1ZXVlV29ya3NgIHRl
c3QuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKworIyMgSW52
b2tpbmcgdGhlIFRlc3RzCisKK2BURVNUKClgIGFuZCBgVEVTVF9GKClgIGltcGxpY2l0bHkgcmVn
aXN0ZXIgdGhlaXIgdGVzdHMgd2l0aCBnb29nbGV0ZXN0LiBTbywKK3VubGlrZSB3aXRoIG1hbnkg
b3RoZXIgQysrIHRlc3RpbmcgZnJhbWV3b3JrcywgeW91IGRvbid0IGhhdmUgdG8gcmUtbGlzdCBh
bGwKK3lvdXIgZGVmaW5lZCB0ZXN0cyBpbiBvcmRlciB0byBydW4gdGhlbS4KKworQWZ0ZXIgZGVm
aW5pbmcgeW91ciB0ZXN0cywgeW91IGNhbiBydW4gdGhlbSB3aXRoIGBSVU5fQUxMX1RFU1RTKClg
ICwgd2hpY2gKK3JldHVybnMgYDBgIGlmIGFsbCB0aGUgdGVzdHMgYXJlIHN1Y2Nlc3NmdWwsIG9y
IGAxYCBvdGhlcndpc2UuIE5vdGUgdGhhdAorYFJVTl9BTExfVEVTVFMoKWAgcnVucyAqYWxsIHRl
c3RzKiBpbiB5b3VyIGxpbmsgdW5pdCAtLSB0aGV5IGNhbiBiZSBmcm9tCitkaWZmZXJlbnQgdGVz
dCBjYXNlcywgb3IgZXZlbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgorCitXaGVuIGludm9rZWQs
IHRoZSBgUlVOX0FMTF9URVNUUygpYCBtYWNybzoKKworMS4gU2F2ZXMgdGhlIHN0YXRlIG9mIGFs
bCBnb29nbGV0ZXN0IGZsYWdzCisKKyogICBDcmVhdGVzIGEgdGVzdCBmaXh0dXJlIG9iamVjdCBm
b3IgdGhlIGZpcnN0IHRlc3QuCisKKyogICBJbml0aWFsaXplcyBpdCB2aWEgYFNldFVwKClgLgor
CisqICAgUnVucyB0aGUgdGVzdCBvbiB0aGUgZml4dHVyZSBvYmplY3QuCisKKyogICBDbGVhbnMg
dXAgdGhlIGZpeHR1cmUgdmlhIGBUZWFyRG93bigpYC4KKworKiAgIERlbGV0ZXMgdGhlIGZpeHR1
cmUuCisKKyogUmVzdG9yZXMgdGhlIHN0YXRlIG9mIGFsbCBnb29nbGV0ZXN0IGZsYWdzCisKKyog
ICBSZXBlYXRzIHRoZSBhYm92ZSBzdGVwcyBmb3IgdGhlIG5leHQgdGVzdCwgdW50aWwgYWxsIHRl
c3RzIGhhdmUgcnVuLgorCitJZiBhIGZhdGFsIGZhaWx1cmUgaGFwcGVucyB0aGUgc3Vic2VxdWVu
dCBzdGVwcyB3aWxsIGJlIHNraXBwZWQuCisKKz4gSU1QT1JUQU5UOiBZb3UgbXVzdCAqKm5vdCoq
IGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlIG9mIGBSVU5fQUxMX1RFU1RTKClgLCBvcgorPiB5b3Ug
d2lsbCBnZXQgYSBjb21waWxlciBlcnJvci4gVGhlIHJhdGlvbmFsZSBmb3IgdGhpcyBkZXNpZ24g
aXMgdGhhdCB0aGUKKz4gYXV0b21hdGVkIHRlc3Rpbmcgc2VydmljZSBkZXRlcm1pbmVzIHdoZXRo
ZXIgYSB0ZXN0IGhhcyBwYXNzZWQgYmFzZWQgb24gaXRzCis+IGV4aXQgY29kZSwgbm90IG9uIGl0
cyBzdGRvdXQvc3RkZXJyIG91dHB1dDsgdGh1cyB5b3VyIGBtYWluKClgIGZ1bmN0aW9uIG11c3QK
Kz4gcmV0dXJuIHRoZSB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYC4KKz4KKz4gQWxzbywgeW91
IHNob3VsZCBjYWxsIGBSVU5fQUxMX1RFU1RTKClgIG9ubHkgKipvbmNlKiouIENhbGxpbmcgaXQg
bW9yZSB0aGFuCis+IG9uY2UgY29uZmxpY3RzIHdpdGggc29tZSBhZHZhbmNlZCBnb29nbGV0ZXN0
IGZlYXR1cmVzIChlLmcuIHRocmVhZC1zYWZlIFtkZWF0aAorPiB0ZXN0c10oYWR2YW5jZWQjZGVh
dGgtdGVzdHMpKSBhbmQgdGh1cyBpcyBub3Qgc3VwcG9ydGVkLgorCisqKkF2YWlsYWJpbGl0eSoq
OiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBXcml0aW5nIHRoZSBtYWluKCkgRnVuY3Rpb24K
KworSW4gYGdvb2dsZTNgLCB0aGUgc2ltcGxlc3QgYXBwcm9hY2ggaXMgdG8gdXNlIHRoZSBkZWZh
dWx0IG1haW4oKSBmdW5jdGlvbgorcHJvdmlkZWQgYnkgbGlua2luZyBpbiBgIi8vdGVzdGluZy9i
YXNlL3B1YmxpYzpndGVzdF9tYWluImAuIElmIHRoYXQgZG9lc24ndAorY292ZXIgd2hhdCB5b3Ug
bmVlZCwgeW91IHNob3VsZCB3cml0ZSB5b3VyIG93biBtYWluKCkgZnVuY3Rpb24sIHdoaWNoIHNo
b3VsZAorcmV0dXJuIHRoZSB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYC4gTGluayB0byBgIi8v
dGVzdGluZy9iYXNlL3B1YmxpYzpndW5pdCJgLgorWW91IGNhbiBzdGFydCBmcm9tIHRoaXMgYm9p
bGVycGxhdGU6CisKK2BgYGMrKworI2luY2x1ZGUgInRoaXMvcGFja2FnZS9mb28uaCIKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCisvLyBUaGUgZml4dHVyZSBmb3Ig
dGVzdGluZyBjbGFzcyBGb28uCitjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVz
dCB7CisgcHJvdGVjdGVkOgorICAvLyBZb3UgY2FuIHJlbW92ZSBhbnkgb3IgYWxsIG9mIHRoZSBm
b2xsb3dpbmcgZnVuY3Rpb25zIGlmIGl0cyBib2R5CisgIC8vIGlzIGVtcHR5LgorCisgIEZvb1Rl
c3QoKSB7CisgICAgIC8vIFlvdSBjYW4gZG8gc2V0LXVwIHdvcmsgZm9yIGVhY2ggdGVzdCBoZXJl
LgorICB9CisKKyAgfkZvb1Rlc3QoKSBvdmVycmlkZSB7CisgICAgIC8vIFlvdSBjYW4gZG8gY2xl
YW4tdXAgd29yayB0aGF0IGRvZXNuJ3QgdGhyb3cgZXhjZXB0aW9ucyBoZXJlLgorICB9CisKKyAg
Ly8gSWYgdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIGFyZSBub3QgZW5vdWdoIGZvciBz
ZXR0aW5nIHVwCisgIC8vIGFuZCBjbGVhbmluZyB1cCBlYWNoIHRlc3QsIHlvdSBjYW4gZGVmaW5l
IHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKKworICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUgeworICAg
ICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGNvbnN0
cnVjdG9yIChyaWdodAorICAgICAvLyBiZWZvcmUgZWFjaCB0ZXN0KS4KKyAgfQorCisgIHZvaWQg
VGVhckRvd24oKSBvdmVycmlkZSB7CisgICAgIC8vIENvZGUgaGVyZSB3aWxsIGJlIGNhbGxlZCBp
bW1lZGlhdGVseSBhZnRlciBlYWNoIHRlc3QgKHJpZ2h0CisgICAgIC8vIGJlZm9yZSB0aGUgZGVz
dHJ1Y3RvcikuCisgIH0KKworICAvLyBPYmplY3RzIGRlY2xhcmVkIGhlcmUgY2FuIGJlIHVzZWQg
YnkgYWxsIHRlc3RzIGluIHRoZSB0ZXN0IGNhc2UgZm9yIEZvby4KK307CisKKy8vIFRlc3RzIHRo
YXQgdGhlIEZvbzo6QmFyKCkgbWV0aG9kIGRvZXMgQWJjLgorVEVTVF9GKEZvb1Rlc3QsIE1ldGhv
ZEJhckRvZXNBYmMpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgaW5wdXRfZmlsZXBhdGggPSAidGhp
cy9wYWNrYWdlL3Rlc3RkYXRhL215aW5wdXRmaWxlLmRhdCI7CisgIGNvbnN0IHN0ZDo6c3RyaW5n
IG91dHB1dF9maWxlcGF0aCA9ICJ0aGlzL3BhY2thZ2UvdGVzdGRhdGEvbXlvdXRwdXRmaWxlLmRh
dCI7CisgIEZvbyBmOworICBFWFBFQ1RfRVEoZi5CYXIoaW5wdXRfZmlsZXBhdGgsIG91dHB1dF9m
aWxlcGF0aCksIDApOworfQorCisvLyBUZXN0cyB0aGF0IEZvbyBkb2VzIFh5ei4KK1RFU1RfRihG
b29UZXN0LCBEb2VzWHl6KSB7CisgIC8vIEV4ZXJjaXNlcyB0aGUgWHl6IGZlYXR1cmUgb2YgRm9v
LgorfQorCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2
KSB7CisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICByZXR1cm4g
UlVOX0FMTF9URVNUUygpOworfQorYGBgCisKKworVGhlIGA6OnRlc3Rpbmc6OkluaXRHb29nbGVU
ZXN0KClgIGZ1bmN0aW9uIHBhcnNlcyB0aGUgY29tbWFuZCBsaW5lIGZvcgorZ29vZ2xldGVzdCBm
bGFncywgYW5kIHJlbW92ZXMgYWxsIHJlY29nbml6ZWQgZmxhZ3MuIFRoaXMgYWxsb3dzIHRoZSB1
c2VyIHRvCitjb250cm9sIGEgdGVzdCBwcm9ncmFtJ3MgYmVoYXZpb3IgdmlhIHZhcmlvdXMgZmxh
Z3MsIHdoaWNoIHdlJ2xsIGNvdmVyIGluCitbQWR2YW5jZWRHdWlkZV0oYWR2YW5jZWQubWQpLiBZ
b3UgKiptdXN0KiogY2FsbCB0aGlzIGZ1bmN0aW9uIGJlZm9yZSBjYWxsaW5nCitgUlVOX0FMTF9U
RVNUUygpYCwgb3IgdGhlIGZsYWdzIHdvbid0IGJlIHByb3Blcmx5IGluaXRpYWxpemVkLgorCitP
biBXaW5kb3dzLCBgSW5pdEdvb2dsZVRlc3QoKWAgYWxzbyB3b3JrcyB3aXRoIHdpZGUgc3RyaW5n
cywgc28gaXQgY2FuIGJlIHVzZWQKK2luIHByb2dyYW1zIGNvbXBpbGVkIGluIGBVTklDT0RFYCBt
b2RlIGFzIHdlbGwuCisKK0J1dCBtYXliZSB5b3UgdGhpbmsgdGhhdCB3cml0aW5nIGFsbCB0aG9z
ZSBtYWluKCkgZnVuY3Rpb25zIGlzIHRvbyBtdWNoIHdvcms/IFdlCithZ3JlZSB3aXRoIHlvdSBj
b21wbGV0ZWx5IGFuZCB0aGF0J3Mgd2h5IEdvb2dsZSBUZXN0IHByb3ZpZGVzIGEgYmFzaWMKK2lt
cGxlbWVudGF0aW9uIG9mIG1haW4oKS4gSWYgaXQgZml0cyB5b3VyIG5lZWRzLCB0aGVuIGp1c3Qg
bGluayB5b3VyIHRlc3Qgd2l0aAorZ3Rlc3RcX21haW4gbGlicmFyeSBhbmQgeW91IGFyZSBnb29k
IHRvIGdvLgorCitOT1RFOiBgUGFyc2VHVW5pdEZsYWdzKClgIGlzIGRlcHJlY2F0ZWQgaW4gZmF2
b3Igb2YgYEluaXRHb29nbGVUZXN0KClgLgorCisKKyMjIEtub3duIExpbWl0YXRpb25zCisKKyog
ICBHb29nbGUgVGVzdCBpcyBkZXNpZ25lZCB0byBiZSB0aHJlYWQtc2FmZS4gVGhlIGltcGxlbWVu
dGF0aW9uIGlzIHRocmVhZC1zYWZlCisgICAgb24gc3lzdGVtcyB3aGVyZSB0aGUgYHB0aHJlYWRz
YCBsaWJyYXJ5IGlzIGF2YWlsYWJsZS4gSXQgaXMgY3VycmVudGx5CisgICAgX3Vuc2FmZV8gdG8g
dXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgZnJvbSB0d28gdGhyZWFkcyBjb25jdXJyZW50bHkg
b24KKyAgICBvdGhlciBzeXN0ZW1zIChlLmcuIFdpbmRvd3MpLiBJbiBtb3N0IHRlc3RzIHRoaXMg
aXMgbm90IGFuIGlzc3VlIGFzIHVzdWFsbHkKKyAgICB0aGUgYXNzZXJ0aW9ucyBhcmUgZG9uZSBp
biB0aGUgbWFpbiB0aHJlYWQuIElmIHlvdSB3YW50IHRvIGhlbHAsIHlvdSBjYW4KKyAgICB2b2x1
bnRlZXIgdG8gaW1wbGVtZW50IHRoZSBuZWNlc3Nhcnkgc3luY2hyb25pemF0aW9uIHByaW1pdGl2
ZXMgaW4KKyAgICBgZ3Rlc3QtcG9ydC5oYCBmb3IgeW91ciBwbGF0Zm9ybS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3Mvc2FtcGxlcy5tZCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2RvY3Mvc2FtcGxlcy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOGRjY2EzODE0OTFlMTk4MjMz
MmM2ZDQ0NzJjYTgyZDBkMDIxNzAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvZG9jcy9zYW1wbGVzLm1kCkBAIC0wLDAgKzEsMjIgQEAKKyMgR29vZ2xldGVzdCBT
YW1wbGVzIHsjc2FtcGxlc30KKworSWYgeW91J3JlIGxpa2UgdXMsIHlvdSdkIGxpa2UgdG8gbG9v
ayBhdCBbZ29vZ2xldGVzdAorc2FtcGxlcy5dKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29v
Z2xldGVzdC90cmVlL21hc3Rlci9nb29nbGV0ZXN0L3NhbXBsZXMpCitUaGUgc2FtcGxlIGRpcmVj
dG9yeSBoYXMgYSBudW1iZXIgb2Ygd2VsbC1jb21tZW50ZWQgc2FtcGxlcyBzaG93aW5nIGhvdyB0
byB1c2UgYQordmFyaWV0eSBvZiBnb29nbGV0ZXN0IGZlYXR1cmVzLgorCisqICAgU2FtcGxlICMx
IHNob3dzIHRoZSBiYXNpYyBzdGVwcyBvZiB1c2luZyBnb29nbGV0ZXN0IHRvIHRlc3QgQysrIGZ1
bmN0aW9ucy4KKyogICBTYW1wbGUgIzIgc2hvd3MgYSBtb3JlIGNvbXBsZXggdW5pdCB0ZXN0IGZv
ciBhIGNsYXNzIHdpdGggbXVsdGlwbGUgbWVtYmVyCisgICAgZnVuY3Rpb25zLgorKiAgIFNhbXBs
ZSAjMyB1c2VzIGEgdGVzdCBmaXh0dXJlLgorKiAgIFNhbXBsZSAjNCB0ZWFjaGVzIHlvdSBob3cg
dG8gdXNlIGdvb2dsZXRlc3QgYW5kIGBnb29nbGV0ZXN0LmhgIHRvZ2V0aGVyIHRvCisgICAgZ2V0
IHRoZSBiZXN0IG9mIGJvdGggbGlicmFyaWVzLgorKiAgIFNhbXBsZSAjNSBwdXRzIHNoYXJlZCB0
ZXN0aW5nIGxvZ2ljIGluIGEgYmFzZSB0ZXN0IGZpeHR1cmUsIGFuZCByZXVzZXMgaXQgaW4KKyAg
ICBkZXJpdmVkIGZpeHR1cmVzLgorKiAgIFNhbXBsZSAjNiBkZW1vbnN0cmF0ZXMgdHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3RzLgorKiAgIFNhbXBsZSAjNyB0ZWFjaGVzIHRoZSBiYXNpY3Mgb2YgdmFs
dWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKyogICBTYW1wbGUgIzggc2hvd3MgdXNpbmcgYENvbWJp
bmUoKWAgaW4gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKyogICBTYW1wbGUgIzkgc2hvd3Mg
dXNlIG9mIHRoZSBsaXN0ZW5lciBBUEkgdG8gbW9kaWZ5IEdvb2dsZSBUZXN0J3MgY29uc29sZQor
ICAgIG91dHB1dCBhbmQgdGhlIHVzZSBvZiBpdHMgcmVmbGVjdGlvbiBBUEkgdG8gaW5zcGVjdCB0
ZXN0IHJlc3VsdHMuCisqICAgU2FtcGxlICMxMCBzaG93cyB1c2Ugb2YgdGhlIGxpc3RlbmVyIEFQ
SSB0byBpbXBsZW1lbnQgYSBwcmltaXRpdmUgbWVtb3J5CisgICAgbGVhayBjaGVja2VyLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0
aC10ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LWRl
YXRoLXRlc3QuaAppbmRleCAxMjFkYzFmYjVhYzVkNTlhMzNkNTMwMzQwNThlZWU5MWMyMTJhMjA4
Li4yMGM1NGQ4Njk1MTlmNjkzMGU3ZWJmZDJjMDgwNWJhY2E0MjIxNmJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LWRlYXRoLXRl
c3QuaApAQCAtMjYsMTkgKzI2LDE5IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
IC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKIC8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9u
ZyBXYW4pCi0vLwotLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBU
ZXN0KQorLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdv
b2dsZSBUZXN0KQogLy8KIC8vIFRoaXMgaGVhZGVyIGZpbGUgZGVmaW5lcyB0aGUgcHVibGljIEFQ
SSBmb3IgZGVhdGggdGVzdHMuICBJdCBpcwogLy8gI2luY2x1ZGVkIGJ5IGd0ZXN0Lmggc28gYSB1
c2VyIGRvZXNuJ3QgbmVlZCB0byBpbmNsdWRlIHRoaXMKIC8vIGRpcmVjdGx5LgorLy8gR09PR0xF
VEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQogCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1Rf
R1RFU1RfREVBVEhfVEVTVF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0RF
QVRIX1RFU1RfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3Qt
aW50ZXJuYWwuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0LWlu
dGVybmFsLmgiCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIApAQCAtNTEsNiArNTEsMTcgQEAgR1RF
U1RfREVDTEFSRV9zdHJpbmdfKGRlYXRoX3Rlc3Rfc3R5bGUpOwogCiAjaWYgR1RFU1RfSEFTX0RF
QVRIX1RFU1QKIAorbmFtZXNwYWNlIGludGVybmFsIHsKKworLy8gUmV0dXJucyBhIEJvb2xlYW4g
dmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBjYWxsZXIgaXMgY3VycmVudGx5CisvLyBleGVj
dXRpbmcgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGRlYXRoIHRlc3QgY2hpbGQgcHJvY2Vzcy4gIFRv
b2xzIHN1Y2ggYXMKKy8vIFZhbGdyaW5kIGhlYXAgY2hlY2tlcnMgbWF5IG5lZWQgdGhpcyB0byBt
b2RpZnkgdGhlaXIgYmVoYXZpb3IgaW4gZGVhdGgKKy8vIHRlc3RzLiAgSU1QT1JUQU5UOiBUaGlz
IGlzIGFuIGludGVybmFsIHV0aWxpdHkuICBVc2luZyBpdCBtYXkgYnJlYWsgdGhlCisvLyBpbXBs
ZW1lbnRhdGlvbiBvZiBkZWF0aCB0ZXN0cy4gIFVzZXIgY29kZSBNVVNUIE5PVCB1c2UgaXQuCitH
VEVTVF9BUElfIGJvb2wgSW5EZWF0aFRlc3RDaGlsZCgpOworCit9ICAvLyBuYW1lc3BhY2UgaW50
ZXJuYWwKKwogLy8gVGhlIGZvbGxvd2luZyBtYWNyb3MgYXJlIHVzZWZ1bCBmb3Igd3JpdGluZyBk
ZWF0aCB0ZXN0cy4KIAogLy8gSGVyZSdzIHdoYXQgaGFwcGVucyB3aGVuIGFuIEFTU0VSVF9ERUFU
SCogb3IgRVhQRUNUX0RFQVRIKiBpcwpAQCAtNzUsNyArODYsNyBAQCBHVEVTVF9ERUNMQVJFX3N0
cmluZ18oZGVhdGhfdGVzdF9zdHlsZSk7CiAvLyAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsr
KSB7CiAvLyAgICAgRVhQRUNUX0RFQVRIKHNlcnZlci5Qcm9jZXNzUmVxdWVzdChpKSwKIC8vICAg
ICAgICAgICAgICAgICAgIkludmFsaWQgcmVxdWVzdCAuKiBpbiBQcm9jZXNzUmVxdWVzdCgpIikK
LS8vICAgICAgICAgPDwgIkZhaWxlZCB0byBkaWUgb24gcmVxdWVzdCAiIDw8IGkpOworLy8gICAg
ICAgICAgICAgICAgICA8PCAiRmFpbGVkIHRvIGRpZSBvbiByZXF1ZXN0ICIgPDwgaTsKIC8vICAg
fQogLy8KIC8vICAgQVNTRVJUX0VYSVQoc2VydmVyLkV4aXROb3coKSwgOjp0ZXN0aW5nOjpFeGl0
ZWRXaXRoQ29kZSgwKSwgIkV4aXRpbmciKTsKQEAgLTg4LDEwICs5OSwxMSBAQCBHVEVTVF9ERUNM
QVJFX3N0cmluZ18oZGVhdGhfdGVzdF9zdHlsZSk7CiAvLwogLy8gT24gdGhlIHJlZ3VsYXIgZXhw
cmVzc2lvbnMgdXNlZCBpbiBkZWF0aCB0ZXN0czoKIC8vCisvLyAgIEdPT0dMRVRFU1RfQ00wMDA1
IERPIE5PVCBERUxFVEUKIC8vICAgT24gUE9TSVgtY29tcGxpYW50IHN5c3RlbXMgKCpuaXgpLCB3
ZSB1c2UgdGhlIDxyZWdleC5oPiBsaWJyYXJ5LAogLy8gICB3aGljaCB1c2VzIHRoZSBQT1NJWCBl
eHRlbmRlZCByZWdleCBzeW50YXguCiAvLwotLy8gICBPbiBvdGhlciBwbGF0Zm9ybXMgKGUuZy4g
V2luZG93cyksIHdlIG9ubHkgc3VwcG9ydCBhIHNpbXBsZSByZWdleAorLy8gICBPbiBvdGhlciBw
bGF0Zm9ybXMgKGUuZy4gV2luZG93cyBvciBNYWMpLCB3ZSBvbmx5IHN1cHBvcnQgYSBzaW1wbGUg
cmVnZXgKIC8vICAgc3ludGF4IGltcGxlbWVudGVkIGFzIHBhcnQgb2YgR29vZ2xlIFRlc3QuICBU
aGlzIGxpbWl0ZWQKIC8vICAgaW1wbGVtZW50YXRpb24gc2hvdWxkIGJlIGVub3VnaCBtb3N0IG9m
IHRoZSB0aW1lIHdoZW4gd3JpdGluZwogLy8gICBkZWF0aCB0ZXN0czsgdGhvdWdoIGl0IGxhY2tz
IG1hbnkgZmVhdHVyZXMgeW91IGNhbiBmaW5kIGluIFBDUkUKQEAgLTE0OSwyOSArMTYxLDI5IEBA
IEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhkZWF0aF90ZXN0X3N0eWxlKTsKIC8vICAgaXMgcmFyZWx5
IGEgcHJvYmxlbSBhcyBwZW9wbGUgdXN1YWxseSBkb24ndCBwdXQgdGhlIHRlc3QgYmluYXJ5CiAv
LyAgIGRpcmVjdG9yeSBpbiBQQVRILgogLy8KLS8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBtYWtl
IHRocmVhZC1zYWZlIGRlYXRoIHRlc3RzIHNlYXJjaCB0aGUgUEFUSC4KKy8vIEZJWE1FOiBtYWtl
IHRocmVhZC1zYWZlIGRlYXRoIHRlc3RzIHNlYXJjaCB0aGUgUEFUSC4KIAogLy8gQXNzZXJ0cyB0
aGF0IGEgZ2l2ZW4gc3RhdGVtZW50IGNhdXNlcyB0aGUgcHJvZ3JhbSB0byBleGl0LCB3aXRoIGFu
CiAvLyBpbnRlZ2VyIGV4aXQgc3RhdHVzIHRoYXQgc2F0aXNmaWVzIHByZWRpY2F0ZSwgYW5kIGVt
aXR0aW5nIGVycm9yIG91dHB1dAogLy8gdGhhdCBtYXRjaGVzIHJlZ2V4LgotI2RlZmluZSBBU1NF
UlRfRVhJVChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpIFwKLSAgR1RFU1RfREVBVEhfVEVT
VF8oc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4LCBHVEVTVF9GQVRBTF9GQUlMVVJFXykKKyMg
ZGVmaW5lIEFTU0VSVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCkgXAorICAgIEdU
RVNUX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgR1RFU1RfRkFUQUxf
RkFJTFVSRV8pCiAKIC8vIExpa2UgQVNTRVJUX0VYSVQsIGJ1dCBjb250aW51ZXMgb24gdG8gc3Vj
Y2Vzc2l2ZSB0ZXN0cyBpbiB0aGUKIC8vIHRlc3QgY2FzZSwgaWYgYW55OgotI2RlZmluZSBFWFBF
Q1RfRVhJVChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpIFwKLSAgR1RFU1RfREVBVEhfVEVT
VF8oc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4LCBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXykK
KyMgZGVmaW5lIEVYUEVDVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCkgXAorICAg
IEdURVNUX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgR1RFU1RfTk9O
RkFUQUxfRkFJTFVSRV8pCiAKIC8vIEFzc2VydHMgdGhhdCBhIGdpdmVuIHN0YXRlbWVudCBjYXVz
ZXMgdGhlIHByb2dyYW0gdG8gZXhpdCwgZWl0aGVyIGJ5CiAvLyBleHBsaWNpdGx5IGV4aXRpbmcg
d2l0aCBhIG5vbnplcm8gZXhpdCBjb2RlIG9yIGJlaW5nIGtpbGxlZCBieSBhCiAvLyBzaWduYWws
IGFuZCBlbWl0dGluZyBlcnJvciBvdXRwdXQgdGhhdCBtYXRjaGVzIHJlZ2V4LgotI2RlZmluZSBB
U1NFUlRfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAotICBBU1NFUlRfRVhJVChzdGF0ZW1lbnQs
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkV4aXRlZFVuc3VjY2Vzc2Z1bGx5LCByZWdleCkKKyMgZGVm
aW5lIEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgICAgQVNTRVJUX0VYSVQoc3Rh
dGVtZW50LCA6OnRlc3Rpbmc6OmludGVybmFsOjpFeGl0ZWRVbnN1Y2Nlc3NmdWxseSwgcmVnZXgp
CiAKIC8vIExpa2UgQVNTRVJUX0RFQVRILCBidXQgY29udGludWVzIG9uIHRvIHN1Y2Nlc3NpdmUg
dGVzdHMgaW4gdGhlCiAvLyB0ZXN0IGNhc2UsIGlmIGFueToKLSNkZWZpbmUgRVhQRUNUX0RFQVRI
KHN0YXRlbWVudCwgcmVnZXgpIFwKLSAgRVhQRUNUX0VYSVQoc3RhdGVtZW50LCA6OnRlc3Rpbmc6
OmludGVybmFsOjpFeGl0ZWRVbnN1Y2Nlc3NmdWxseSwgcmVnZXgpCisjIGRlZmluZSBFWFBFQ1Rf
REVBVEgoc3RhdGVtZW50LCByZWdleCkgXAorICAgIEVYUEVDVF9FWElUKHN0YXRlbWVudCwgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6RXhpdGVkVW5zdWNjZXNzZnVsbHksIHJlZ2V4KQogCiAvLyBUd28g
cHJlZGljYXRlIGNsYXNzZXMgdGhhdCBjYW4gYmUgdXNlZCBpbiB7QVNTRVJULEVYUEVDVH1fRVhJ
VCo6CiAKQEAgLTE4Nyw5ICsxOTksMTAgQEAgY2xhc3MgR1RFU1RfQVBJXyBFeGl0ZWRXaXRoQ29k
ZSB7CiAgIGNvbnN0IGludCBleGl0X2NvZGVfOwogfTsKIAotI2lmICFHVEVTVF9PU19XSU5ET1dT
CisjIGlmICFHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19GVUNIU0lBCiAvLyBUZXN0cyB0
aGF0IGFuIGV4aXQgY29kZSBkZXNjcmliZXMgYW4gZXhpdCBkdWUgdG8gdGVybWluYXRpb24gYnkg
YQogLy8gZ2l2ZW4gc2lnbmFsLgorLy8gR09PR0xFVEVTVF9DTTAwMDYgRE8gTk9UIERFTEVURQog
Y2xhc3MgR1RFU1RfQVBJXyBLaWxsZWRCeVNpZ25hbCB7CiAgcHVibGljOgogICBleHBsaWNpdCBL
aWxsZWRCeVNpZ25hbChpbnQgc2lnbnVtKTsKQEAgLTE5Nyw3ICsyMTAsNyBAQCBjbGFzcyBHVEVT
VF9BUElfIEtpbGxlZEJ5U2lnbmFsIHsKICBwcml2YXRlOgogICBjb25zdCBpbnQgc2lnbnVtXzsK
IH07Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyAhR1RFU1RfT1Nf
V0lORE9XUwogCiAvLyBFWFBFQ1RfREVCVUdfREVBVEggYXNzZXJ0cyB0aGF0IHRoZSBnaXZlbiBz
dGF0ZW1lbnRzIGRpZSBpbiBkZWJ1ZyBtb2RlLgogLy8gVGhlIGRlYXRoIHRlc3RpbmcgZnJhbWV3
b3JrIGNhdXNlcyB0aGlzIHRvIGhhdmUgaW50ZXJlc3Rpbmcgc2VtYW50aWNzLApAQCAtMjQyLDQw
ICsyNTUsODggQEAgY2xhc3MgR1RFU1RfQVBJXyBLaWxsZWRCeVNpZ25hbCB7CiAvLyAgIEVYUEVD
VF9FUSgxMiwgRGllSW5EZWJ1Z09yMTIoJnNpZGVlZmZlY3QpKTsKIC8vIH0sICJkZWF0aCIpOwog
Ly8KLSNpZmRlZiBOREVCVUcKKyMgaWZkZWYgTkRFQlVHCiAKLSNkZWZpbmUgRVhQRUNUX0RFQlVH
X0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKLSAgZG8geyBzdGF0ZW1lbnQ7IH0gd2hpbGUgKDo6
dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCisjICBkZWZpbmUgRVhQRUNUX0RFQlVH
X0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKKyAgR1RFU1RfRVhFQ1VURV9TVEFURU1FTlRfKHN0
YXRlbWVudCwgcmVnZXgpCiAKLSNkZWZpbmUgQVNTRVJUX0RFQlVHX0RFQVRIKHN0YXRlbWVudCwg
cmVnZXgpIFwKLSAgZG8geyBzdGF0ZW1lbnQ7IH0gd2hpbGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6
OkFsd2F5c0ZhbHNlKCkpCisjICBkZWZpbmUgQVNTRVJUX0RFQlVHX0RFQVRIKHN0YXRlbWVudCwg
cmVnZXgpIFwKKyAgR1RFU1RfRVhFQ1VURV9TVEFURU1FTlRfKHN0YXRlbWVudCwgcmVnZXgpCiAK
LSNlbHNlCisjIGVsc2UKIAotI2RlZmluZSBFWFBFQ1RfREVCVUdfREVBVEgoc3RhdGVtZW50LCBy
ZWdleCkgXAorIyAgZGVmaW5lIEVYUEVDVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBc
CiAgIEVYUEVDVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KQogCi0jZGVmaW5lIEFTU0VSVF9ERUJV
R19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisjICBkZWZpbmUgQVNTRVJUX0RFQlVHX0RFQVRI
KHN0YXRlbWVudCwgcmVnZXgpIFwKICAgQVNTRVJUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpCiAK
LSNlbmRpZiAgLy8gTkRFQlVHIGZvciBFWFBFQ1RfREVCVUdfREVBVEgKKyMgZW5kaWYgIC8vIE5E
RUJVRyBmb3IgRVhQRUNUX0RFQlVHX0RFQVRICiAjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9U
RVNUCiAKKy8vIFRoaXMgbWFjcm8gaXMgdXNlZCBmb3IgaW1wbGVtZW50aW5nIG1hY3JvcyBzdWNo
IGFzCisvLyBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEIGFuZCBBU1NFUlRfREVBVEhfSUZfU1VQ
UE9SVEVEIG9uIHN5c3RlbXMgd2hlcmUKKy8vIGRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVk
LiBUaG9zZSBtYWNyb3MgbXVzdCBjb21waWxlIG9uIHN1Y2ggc3lzdGVtcworLy8gaWZmIEVYUEVD
VF9ERUFUSCBhbmQgQVNTRVJUX0RFQVRIIGNvbXBpbGUgd2l0aCB0aGUgc2FtZSBwYXJhbWV0ZXJz
IG9uCisvLyBzeXN0ZW1zIHRoYXQgc3VwcG9ydCBkZWF0aCB0ZXN0cy4gVGhpcyBhbGxvd3Mgb25l
IHRvIHdyaXRlIHN1Y2ggYSBtYWNybworLy8gb24gYSBzeXN0ZW0gdGhhdCBkb2VzIG5vdCBzdXBw
b3J0IGRlYXRoIHRlc3RzIGFuZCBiZSBzdXJlIHRoYXQgaXQgd2lsbAorLy8gY29tcGlsZSBvbiBh
IGRlYXRoLXRlc3Qgc3VwcG9ydGluZyBzeXN0ZW0uIEl0IGlzIGV4cG9zZWQgcHVibGljbHkgc28g
dGhhdAorLy8gc3lzdGVtcyB0aGF0IGhhdmUgZGVhdGgtdGVzdHMgd2l0aCBzdHJpY3RlciByZXF1
aXJlbWVudHMgdGhhbgorLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QgY2FuIHdyaXRlIHRoZWlyIG93
biBlcXVpdmFsZW50IG9mCisvLyBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEIGFuZCBBU1NFUlRf
REVBVEhfSUZfU1VQUE9SVEVELgorLy8KKy8vIFBhcmFtZXRlcnM6CisvLyAgIHN0YXRlbWVudCAt
ICBBIHN0YXRlbWVudCB0aGF0IGEgbWFjcm8gc3VjaCBhcyBFWFBFQ1RfREVBVEggd291bGQgdGVz
dAorLy8gICAgICAgICAgICAgICAgZm9yIHByb2dyYW0gdGVybWluYXRpb24uIFRoaXMgbWFjcm8g
aGFzIHRvIG1ha2Ugc3VyZSB0aGlzCisvLyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgaXMgY29t
cGlsZWQgYnV0IG5vdCBleGVjdXRlZCwgdG8gZW5zdXJlIHRoYXQKKy8vICAgICAgICAgICAgICAg
IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQgY29tcGlsZXMgd2l0aCBhIGNlcnRhaW4KKy8vICAg
ICAgICAgICAgICAgIHBhcmFtZXRlciBpZmYgRVhQRUNUX0RFQVRIIGNvbXBpbGVzIHdpdGggaXQu
CisvLyAgIHJlZ2V4ICAgICAtICBBIHJlZ2V4IHRoYXQgYSBtYWNybyBzdWNoIGFzIEVYUEVDVF9E
RUFUSCB3b3VsZCB1c2UgdG8gdGVzdAorLy8gICAgICAgICAgICAgICAgdGhlIG91dHB1dCBvZiBz
dGF0ZW1lbnQuICBUaGlzIHBhcmFtZXRlciBoYXMgdG8gYmUKKy8vICAgICAgICAgICAgICAgIGNv
bXBpbGVkIGJ1dCBub3QgZXZhbHVhdGVkIGJ5IHRoaXMgbWFjcm8sIHRvIGVuc3VyZSB0aGF0Cisv
LyAgICAgICAgICAgICAgICB0aGlzIG1hY3JvIG9ubHkgYWNjZXB0cyBleHByZXNzaW9ucyB0aGF0
IGEgbWFjcm8gc3VjaCBhcworLy8gICAgICAgICAgICAgICAgRVhQRUNUX0RFQVRIIHdvdWxkIGFj
Y2VwdC4KKy8vICAgdGVybWluYXRvciAtIE11c3QgYmUgYW4gZW1wdHkgc3RhdGVtZW50IGZvciBF
WFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVECisvLyAgICAgICAgICAgICAgICBhbmQgYSByZXR1cm4g
c3RhdGVtZW50IGZvciBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVELgorLy8gICAgICAgICAgICAg
ICAgVGhpcyBlbnN1cmVzIHRoYXQgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCB3aWxsIG5vdAor
Ly8gICAgICAgICAgICAgICAgY29tcGlsZSBpbnNpZGUgZnVuY3Rpb25zIHdoZXJlIEFTU0VSVF9E
RUFUSCBkb2Vzbid0CisvLyAgICAgICAgICAgICAgICBjb21waWxlLgorLy8KKy8vICBUaGUgYnJh
bmNoIHRoYXQgaGFzIGFuIGFsd2F5cyBmYWxzZSBjb25kaXRpb24gaXMgdXNlZCB0byBlbnN1cmUg
dGhhdAorLy8gIHN0YXRlbWVudCBhbmQgcmVnZXggYXJlIGNvbXBpbGVkIChhbmQgdGh1cyBzeW50
YWN0aWNhbGx5IGNvcnJlY3QpIGJ1dAorLy8gIG5ldmVyIGV4ZWN1dGVkLiBUaGUgdW5yZWFjaGFi
bGUgY29kZSBtYWNybyBwcm90ZWN0cyB0aGUgdGVybWluYXRvcgorLy8gIHN0YXRlbWVudCBmcm9t
IGdlbmVyYXRpbmcgYW4gJ3VucmVhY2hhYmxlIGNvZGUnIHdhcm5pbmcgaW4gY2FzZQorLy8gIHN0
YXRlbWVudCB1bmNvbmRpdGlvbmFsbHkgcmV0dXJucyBvciB0aHJvd3MuIFRoZSBNZXNzYWdlIGNv
bnN0cnVjdG9yIGF0CisvLyAgdGhlIGVuZCBhbGxvd3MgdGhlIHN5bnRheCBvZiBzdHJlYW1pbmcg
YWRkaXRpb25hbCBtZXNzYWdlcyBpbnRvIHRoZQorLy8gIG1hY3JvLCBmb3IgY29tcGlsYXRpb25h
bCBjb21wYXRpYmlsaXR5IHdpdGggRVhQRUNUX0RFQVRIL0FTU0VSVF9ERUFUSC4KKyMgZGVmaW5l
IEdURVNUX1VOU1VQUE9SVEVEX0RFQVRIX1RFU1Qoc3RhdGVtZW50LCByZWdleCwgdGVybWluYXRv
cikgXAorICAgIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKKyAgICBpZiAoOjp0ZXN0
aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKKyAgICAgIEdURVNUX0xPR18oV0FSTklO
RykgXAorICAgICAgICAgIDw8ICJEZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGlz
IHBsYXRmb3JtLlxuIiBcCisgICAgICAgICAgPDwgIlN0YXRlbWVudCAnIiAjc3RhdGVtZW50ICIn
IGNhbm5vdCBiZSB2ZXJpZmllZC4iOyBcCisgICAgfSBlbHNlIGlmICg6OnRlc3Rpbmc6OmludGVy
bmFsOjpBbHdheXNGYWxzZSgpKSB7IFwKKyAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlJFOjpQ
YXJ0aWFsTWF0Y2goIi4qIiwgKHJlZ2V4KSk7IFwKKyAgICAgIEdURVNUX1NVUFBSRVNTX1VOUkVB
Q0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KTsgXAorICAgICAgdGVybWluYXRv
cjsgXAorICAgIH0gZWxzZSBcCisgICAgICA6OnRlc3Rpbmc6Ok1lc3NhZ2UoKQorCiAvLyBFWFBF
Q1RfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIGFuZAogLy8gQVNTRVJUX0RF
QVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBleHBhbmQgdG8gcmVhbCBkZWF0aCB0
ZXN0cyBpZgogLy8gZGVhdGggdGVzdHMgYXJlIHN1cHBvcnRlZDsgb3RoZXJ3aXNlIHRoZXkganVz
dCBpc3N1ZSBhIHdhcm5pbmcuICBUaGlzIGlzCiAvLyB1c2VmdWwgd2hlbiB5b3UgYXJlIGNvbWJp
bmluZyBkZWF0aCB0ZXN0IGFzc2VydGlvbnMgd2l0aCBub3JtYWwgdGVzdAogLy8gYXNzZXJ0aW9u
cyBpbiBvbmUgdGVzdC4KICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAotI2RlZmluZSBFWFBFQ1Rf
REVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKKyMgZGVmaW5lIEVYUEVDVF9E
RUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAogICAgIEVYUEVDVF9ERUFUSChz
dGF0ZW1lbnQsIHJlZ2V4KQotI2RlZmluZSBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRl
bWVudCwgcmVnZXgpIFwKKyMgZGVmaW5lIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVt
ZW50LCByZWdleCkgXAogICAgIEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KQogI2Vsc2UK
LSNkZWZpbmUgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCi0g
ICAgR1RFU1RfVU5TVVBQT1JURURfREVBVEhfVEVTVF8oc3RhdGVtZW50LCByZWdleCwgKQotI2Rl
ZmluZSBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKLSAgICBH
VEVTVF9VTlNVUFBPUlRFRF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHJlZ2V4LCByZXR1cm4pCisj
IGRlZmluZSBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKKyAg
ICBHVEVTVF9VTlNVUFBPUlRFRF9ERUFUSF9URVNUKHN0YXRlbWVudCwgcmVnZXgsICkKKyMgZGVm
aW5lIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAorICAgIEdU
RVNUX1VOU1VQUE9SVEVEX0RFQVRIX1RFU1Qoc3RhdGVtZW50LCByZWdleCwgcmV0dXJuKQogI2Vu
ZGlmCiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oCmluZGV4IGYxMzViNjk0Mjdm
ZTllYmUyMzdjNGNkYTdhOWMyZjBkNzhkZDc2OGUuLjVjYTA0MTYxNGNiMzU1OTIyZjM1NWI4OTNm
OWM4NGEzYjdmNTJjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oCkBAIC0yNiwxMCArMjYsOSBAQAogLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3Rp
bmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgYW5k
IE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAvLyBUaGlzIGhlYWRlciBmaWxl
IGRlZmluZXMgdGhlIE1lc3NhZ2UgY2xhc3MuCiAvLwpAQCAtNDMsMTMgKzQyLDIxIEBACiAvLyB0
byBDSEFOR0UgV0lUSE9VVCBOT1RJQ0UuICBUaGVyZWZvcmUgRE8gTk9UIERFUEVORCBPTiBJVCBp
biBhIHVzZXIKIC8vIHByb2dyYW0hCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxF
VEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX01FU1NBR0VfSF8KICNkZWZp
bmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9NRVNTQUdFX0hfCiAKICNpbmNsdWRlIDxsaW1p
dHM+CiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4KLSNpbmNsdWRl
IDxndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVy
bmFsL2d0ZXN0LXBvcnQuaCIKKworR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDI1
MSBcCisvKiBjbGFzcyBBIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2VkIGJ5
IGNsaWVudHMgb2YgY2xhc3MgQiAqLykKKworLy8gRW5zdXJlcyB0aGF0IHRoZXJlIGlzIGF0IGxl
YXN0IG9uZSBvcGVyYXRvcjw8IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgorLy8gU2VlIE1lc3Nh
Z2UmIG9wZXJhdG9yPDwoLi4uKSBiZWxvdyBmb3Igd2h5Lgordm9pZCBvcGVyYXRvcjw8KGNvbnN0
IHRlc3Rpbmc6OmludGVybmFsOjpTZWNyZXQmLCBpbnQpOwogCiBuYW1lc3BhY2UgdGVzdGluZyB7
CiAKQEAgLTU4LDcgKzY1LDcgQEAgbmFtZXNwYWNlIHRlc3RpbmcgewogLy8gVHlwaWNhbCB1c2Fn
ZToKIC8vCiAvLyAgIDEuIFlvdSBzdHJlYW0gYSBidW5jaCBvZiB2YWx1ZXMgdG8gYSBNZXNzYWdl
IG9iamVjdC4KLS8vICAgICAgSXQgd2lsbCByZW1lbWJlciB0aGUgdGV4dCBpbiBhIFN0clN0cmVh
bS4KKy8vICAgICAgSXQgd2lsbCByZW1lbWJlciB0aGUgdGV4dCBpbiBhIHN0cmluZ3N0cmVhbS4K
IC8vICAgMi4gVGhlbiB5b3Ugc3RyZWFtIHRoZSBNZXNzYWdlIG9iamVjdCB0byBhbiBvc3RyZWFt
LgogLy8gICAgICBUaGlzIGNhdXNlcyB0aGUgdGV4dCBpbiB0aGUgTWVzc2FnZSB0byBiZSBzdHJl
YW1lZAogLy8gICAgICB0byB0aGUgb3N0cmVhbS4KQEAgLTc0LDcgKzgxLDcgQEAgbmFtZXNwYWNl
IHRlc3RpbmcgewogLy8gTWVzc2FnZSBpcyBub3QgaW50ZW5kZWQgdG8gYmUgaW5oZXJpdGVkIGZy
b20uICBJbiBwYXJ0aWN1bGFyLCBpdHMKIC8vIGRlc3RydWN0b3IgaXMgbm90IHZpcnR1YWwuCiAv
LwotLy8gTm90ZSB0aGF0IFN0clN0cmVhbSBiZWhhdmVzIGRpZmZlcmVudGx5IGluIGdjYyBhbmQg
aW4gTVNWQy4gIFlvdQorLy8gTm90ZSB0aGF0IHN0cmluZ3N0cmVhbSBiZWhhdmVzIGRpZmZlcmVu
dGx5IGluIGdjYyBhbmQgaW4gTVNWQy4gIFlvdQogLy8gY2FuIHN0cmVhbSBhIE5VTEwgY2hhciBw
b2ludGVyIHRvIGl0IGluIHRoZSBmb3JtZXIsIGJ1dCBub3QgaW4gdGhlCiAvLyBsYXR0ZXIgKGl0
IGNhdXNlcyBhbiBhY2Nlc3MgdmlvbGF0aW9uIGlmIHlvdSBkbykuICBUaGUgTWVzc2FnZQogLy8g
Y2xhc3MgaGlkZXMgdGhpcyBkaWZmZXJlbmNlIGJ5IHRyZWF0aW5nIGEgTlVMTCBjaGFyIHBvaW50
ZXIgYXMKQEAgLTg3LDI3ICs5NCwxOCBAQCBjbGFzcyBHVEVTVF9BUElfIE1lc3NhZ2UgewogCiAg
cHVibGljOgogICAvLyBDb25zdHJ1Y3RzIGFuIGVtcHR5IE1lc3NhZ2UuCi0gIC8vIFdlIGFsbG9j
YXRlIHRoZSBTdHJTdHJlYW0gc2VwYXJhdGVseSBiZWNhdXNlIGl0IG90aGVyd2lzZSBlYWNoIHVz
ZSBvZgotICAvLyBBU1NFUlQvRVhQRUNUIGluIGEgcHJvY2VkdXJlIGFkZHMgb3ZlciAyMDAgYnl0
ZXMgdG8gdGhlIHByb2NlZHVyZSdzCi0gIC8vIHN0YWNrIGZyYW1lIGxlYWRpbmcgdG8gaHVnZSBz
dGFjayBmcmFtZXMgaW4gc29tZSBjYXNlczsgZ2NjIGRvZXMgbm90IHJldXNlCi0gIC8vIHRoZSBz
dGFjayBzcGFjZS4KLSAgTWVzc2FnZSgpIDogc3NfKG5ldyBpbnRlcm5hbDo6U3RyU3RyZWFtKSB7
Ci0gICAgLy8gQnkgZGVmYXVsdCwgd2Ugd2FudCB0aGVyZSB0byBiZSBlbm91Z2ggcHJlY2lzaW9u
IHdoZW4gcHJpbnRpbmcKLSAgICAvLyBhIGRvdWJsZSB0byBhIE1lc3NhZ2UuCi0gICAgKnNzXyA8
PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmRpZ2l0czEw
ICsgMik7Ci0gIH0KKyAgTWVzc2FnZSgpOwogCiAgIC8vIENvcHkgY29uc3RydWN0b3IuCi0gIE1l
c3NhZ2UoY29uc3QgTWVzc2FnZSYgbXNnKSA6IHNzXyhuZXcgaW50ZXJuYWw6OlN0clN0cmVhbSkg
eyAgLy8gTk9MSU5UCisgIE1lc3NhZ2UoY29uc3QgTWVzc2FnZSYgbXNnKSA6IHNzXyhuZXcgOjpz
dGQ6OnN0cmluZ3N0cmVhbSkgeyAgLy8gTk9MSU5UCiAgICAgKnNzXyA8PCBtc2cuR2V0U3RyaW5n
KCk7CiAgIH0KIAogICAvLyBDb25zdHJ1Y3RzIGEgTWVzc2FnZSBmcm9tIGEgQy1zdHJpbmcuCi0g
IGV4cGxpY2l0IE1lc3NhZ2UoY29uc3QgY2hhciogc3RyKSA6IHNzXyhuZXcgaW50ZXJuYWw6OlN0
clN0cmVhbSkgeworICBleHBsaWNpdCBNZXNzYWdlKGNvbnN0IGNoYXIqIHN0cikgOiBzc18obmV3
IDo6c3RkOjpzdHJpbmdzdHJlYW0pIHsKICAgICAqc3NfIDw8IHN0cjsKICAgfQogCi0gIH5NZXNz
YWdlKCkgeyBkZWxldGUgc3NfOyB9CiAjaWYgR1RFU1RfT1NfU1lNQklBTgogICAvLyBTdHJlYW1z
IGEgdmFsdWUgKGVpdGhlciBhIHBvaW50ZXIgb3Igbm90KSB0byB0aGlzIG9iamVjdC4KICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CkBAIC0xMTksNyArMTE3LDIyIEBAIGNsYXNzIEdURVNUX0FQSV8g
TWVzc2FnZSB7CiAgIC8vIFN0cmVhbXMgYSBub24tcG9pbnRlciB2YWx1ZSB0byB0aGlzIG9iamVj
dC4KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIGlubGluZSBNZXNzYWdlJiBvcGVyYXRvciA8
PChjb25zdCBUJiB2YWwpIHsKLSAgICA6OkdUZXN0U3RyZWFtVG9IZWxwZXIoc3NfLCB2YWwpOwor
ICAgIC8vIFNvbWUgbGlicmFyaWVzIG92ZXJsb2FkIDw8IGZvciBTVEwgY29udGFpbmVycy4gIFRo
ZXNlCisgICAgLy8gb3ZlcmxvYWRzIGFyZSBkZWZpbmVkIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNl
IGluc3RlYWQgb2YgOjpzdGQuCisgICAgLy8KKyAgICAvLyBDKysncyBzeW1ib2wgbG9va3VwIHJ1
bGUgKGkuZS4gS29lbmlnIGxvb2t1cCkgc2F5cyB0aGF0IHRoZXNlCisgICAgLy8gb3ZlcmxvYWRz
IGFyZSB2aXNpYmxlIGluIGVpdGhlciB0aGUgc3RkIG5hbWVzcGFjZSBvciB0aGUgZ2xvYmFsCisg
ICAgLy8gbmFtZXNwYWNlLCBidXQgbm90IG90aGVyIG5hbWVzcGFjZXMsIGluY2x1ZGluZyB0aGUg
dGVzdGluZworICAgIC8vIG5hbWVzcGFjZSB3aGljaCBHb29nbGUgVGVzdCdzIE1lc3NhZ2UgY2xh
c3MgaXMgaW4uCisgICAgLy8KKyAgICAvLyBUbyBhbGxvdyBTVEwgY29udGFpbmVycyAoYW5kIG90
aGVyIHR5cGVzIHRoYXQgaGFzIGEgPDwgb3BlcmF0b3IKKyAgICAvLyBkZWZpbmVkIGluIHRoZSBn
bG9iYWwgbmFtZXNwYWNlKSB0byBiZSB1c2VkIGluIEdvb2dsZSBUZXN0CisgICAgLy8gYXNzZXJ0
aW9ucywgdGVzdGluZzo6TWVzc2FnZSBtdXN0IGFjY2VzcyB0aGUgY3VzdG9tIDw8IG9wZXJhdG9y
CisgICAgLy8gZnJvbSB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gIFdpdGggdGhpcyB1c2luZyBkZWNs
YXJhdGlvbiwKKyAgICAvLyBvdmVybG9hZHMgb2YgPDwgZGVmaW5lZCBpbiB0aGUgZ2xvYmFsIG5h
bWVzcGFjZSBhbmQgdGhvc2UKKyAgICAvLyB2aXNpYmxlIHZpYSBLb2VuaWcgbG9va3VwIGFyZSBi
b3RoIGV4cG9zZWQgaW4gdGhpcyBmdW5jdGlvbi4KKyAgICB1c2luZyA6Om9wZXJhdG9yIDw8Owor
ICAgICpzc18gPDwgdmFsOwogICAgIHJldHVybiAqdGhpczsKICAgfQogCkBAIC0xNDEsNyArMTU0
LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBNZXNzYWdlIHsKICAgICBpZiAocG9pbnRlciA9PSBOVUxM
KSB7CiAgICAgICAqc3NfIDw8ICIobnVsbCkiOwogICAgIH0gZWxzZSB7Ci0gICAgICA6OkdUZXN0
U3RyZWFtVG9IZWxwZXIoc3NfLCBwb2ludGVyKTsKKyAgICAgICpzc18gPDwgcG9pbnRlcjsKICAg
ICB9CiAgICAgcmV0dXJuICp0aGlzOwogICB9CkBAIC0xNjUsMTIgKzE3OCw4IEBAIGNsYXNzIEdU
RVNUX0FQSV8gTWVzc2FnZSB7CiAKICAgLy8gVGhlc2UgdHdvIG92ZXJsb2FkcyBhbGxvdyBzdHJl
YW1pbmcgYSB3aWRlIEMgc3RyaW5nIHRvIGEgTWVzc2FnZQogICAvLyB1c2luZyB0aGUgVVRGLTgg
ZW5jb2RpbmcuCi0gIE1lc3NhZ2UmIG9wZXJhdG9yIDw8KGNvbnN0IHdjaGFyX3QqIHdpZGVfY19z
dHIpIHsKLSAgICByZXR1cm4gKnRoaXMgPDwgaW50ZXJuYWw6OlN0cmluZzo6U2hvd1dpZGVDU3Ry
aW5nKHdpZGVfY19zdHIpOwotICB9Ci0gIE1lc3NhZ2UmIG9wZXJhdG9yIDw8KHdjaGFyX3QqIHdp
ZGVfY19zdHIpIHsKLSAgICByZXR1cm4gKnRoaXMgPDwgaW50ZXJuYWw6OlN0cmluZzo6U2hvd1dp
ZGVDU3RyaW5nKHdpZGVfY19zdHIpOwotICB9CisgIE1lc3NhZ2UmIG9wZXJhdG9yIDw8KGNvbnN0
IHdjaGFyX3QqIHdpZGVfY19zdHIpOworICBNZXNzYWdlJiBvcGVyYXRvciA8PCh3Y2hhcl90KiB3
aWRlX2Nfc3RyKTsKIAogI2lmIEdURVNUX0hBU19TVERfV1NUUklORwogICAvLyBDb252ZXJ0cyB0
aGUgZ2l2ZW4gd2lkZSBzdHJpbmcgdG8gYSBuYXJyb3cgc3RyaW5nIHVzaW5nIHRoZSBVVEYtOApA
QCAtMTg0LDEzICsxOTMsMTEgQEAgY2xhc3MgR1RFU1RfQVBJXyBNZXNzYWdlIHsKICAgTWVzc2Fn
ZSYgb3BlcmF0b3IgPDwoY29uc3QgOjp3c3RyaW5nJiB3c3RyKTsKICNlbmRpZiAgLy8gR1RFU1Rf
SEFTX0dMT0JBTF9XU1RSSU5HCiAKLSAgLy8gR2V0cyB0aGUgdGV4dCBzdHJlYW1lZCB0byB0aGlz
IG9iamVjdCBzbyBmYXIgYXMgYSBTdHJpbmcuCisgIC8vIEdldHMgdGhlIHRleHQgc3RyZWFtZWQg
dG8gdGhpcyBvYmplY3Qgc28gZmFyIGFzIGFuIHN0ZDo6c3RyaW5nLgogICAvLyBFYWNoICdcMCcg
Y2hhcmFjdGVyIGluIHRoZSBidWZmZXIgaXMgcmVwbGFjZWQgd2l0aCAiXFwwIi4KICAgLy8KICAg
Ly8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFN
LgotICBpbnRlcm5hbDo6U3RyaW5nIEdldFN0cmluZygpIGNvbnN0IHsKLSAgICByZXR1cm4gaW50
ZXJuYWw6OlN0clN0cmVhbVRvU3RyaW5nKHNzXyk7Ci0gIH0KKyAgc3RkOjpzdHJpbmcgR2V0U3Ry
aW5nKCkgY29uc3Q7CiAKICBwcml2YXRlOgogI2lmIEdURVNUX09TX1NZTUJJQU4KQEAgLTE5OSwy
MSArMjA2LDI1IEBAIGNsYXNzIEdURVNUX0FQSV8gTWVzc2FnZSB7CiAgIC8vIGRlY2lkZSBiZXR3
ZWVuIGNsYXNzIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucyBmb3IgVCBhbmQgVCosIHNvIGEKICAg
Ly8gdHIxOjp0eXBlX3RyYWl0cy1saWtlIGlzX3BvaW50ZXIgd29ya3MsIGFuZCB3ZSBjYW4gb3Zl
cmxvYWQgb24gdGhhdC4KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIGlubGluZSB2b2lkIFN0
cmVhbUhlbHBlcihpbnRlcm5hbDo6dHJ1ZV90eXBlIC8qZHVtbXkqLywgVCogcG9pbnRlcikgewor
ICBpbmxpbmUgdm9pZCBTdHJlYW1IZWxwZXIoaW50ZXJuYWw6OnRydWVfdHlwZSAvKmlzX3BvaW50
ZXIqLywgVCogcG9pbnRlcikgewogICAgIGlmIChwb2ludGVyID09IE5VTEwpIHsKICAgICAgICpz
c18gPDwgIihudWxsKSI7CiAgICAgfSBlbHNlIHsKLSAgICAgIDo6R1Rlc3RTdHJlYW1Ub0hlbHBl
cihzc18sIHBvaW50ZXIpOworICAgICAgKnNzXyA8PCBwb2ludGVyOwogICAgIH0KICAgfQogICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgaW5saW5lIHZvaWQgU3RyZWFtSGVscGVyKGludGVybmFs
OjpmYWxzZV90eXBlIC8qZHVtbXkqLywgY29uc3QgVCYgdmFsdWUpIHsKLSAgICA6OkdUZXN0U3Ry
ZWFtVG9IZWxwZXIoc3NfLCB2YWx1ZSk7CisgIGlubGluZSB2b2lkIFN0cmVhbUhlbHBlcihpbnRl
cm5hbDo6ZmFsc2VfdHlwZSAvKmlzX3BvaW50ZXIqLywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFQmIHZhbHVlKSB7CisgICAgLy8gU2VlIHRoZSBjb21tZW50cyBpbiBNZXNzYWdl
JiBvcGVyYXRvciA8PChjb25zdCBUJikgYWJvdmUgZm9yIHdoeQorICAgIC8vIHdlIG5lZWQgdGhp
cyB1c2luZyBzdGF0ZW1lbnQuCisgICAgdXNpbmcgOjpvcGVyYXRvciA8PDsKKyAgICAqc3NfIDw8
IHZhbHVlOwogICB9CiAjZW5kaWYgIC8vIEdURVNUX09TX1NZTUJJQU4KIAogICAvLyBXZSdsbCBo
b2xkIHRoZSB0ZXh0IHN0cmVhbWVkIHRvIHRoaXMgb2JqZWN0IGhlcmUuCi0gIGludGVybmFsOjpT
dHJTdHJlYW0qIGNvbnN0IHNzXzsKKyAgY29uc3QgaW50ZXJuYWw6OnNjb3BlZF9wdHI8IDo6c3Rk
OjpzdHJpbmdzdHJlYW0+IHNzXzsKIAogICAvLyBXZSBkZWNsYXJlIChidXQgZG9uJ3QgaW1wbGVt
ZW50KSB0aGlzIHRvIHByZXZlbnQgdGhlIGNvbXBpbGVyCiAgIC8vIGZyb20gaW1wbGVtZW50aW5n
IHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLgpAQCAtMjI1LDYgKzIzNiwyMCBAQCBpbmxpbmUgc3Rk
Ojpvc3RyZWFtJiBvcGVyYXRvciA8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBNZXNzYWdlJiBz
YikgewogICByZXR1cm4gb3MgPDwgc2IuR2V0U3RyaW5nKCk7CiB9CiAKK25hbWVzcGFjZSBpbnRl
cm5hbCB7CisKKy8vIENvbnZlcnRzIGEgc3RyZWFtYWJsZSB2YWx1ZSB0byBhbiBzdGQ6OnN0cmlu
Zy4gIEEgTlVMTCBwb2ludGVyIGlzCisvLyBjb252ZXJ0ZWQgdG8gIihudWxsKSIuICBXaGVuIHRo
ZSBpbnB1dCB2YWx1ZSBpcyBhIDo6c3RyaW5nLAorLy8gOjpzdGQ6OnN0cmluZywgOjp3c3RyaW5n
LCBvciA6OnN0ZDo6d3N0cmluZyBvYmplY3QsIGVhY2ggTlVMCisvLyBjaGFyYWN0ZXIgaW4gaXQg
aXMgcmVwbGFjZWQgd2l0aCAiXFwwIi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RkOjpzdHJp
bmcgU3RyZWFtYWJsZVRvU3RyaW5nKGNvbnN0IFQmIHN0cmVhbWFibGUpIHsKKyAgcmV0dXJuIChN
ZXNzYWdlKCkgPDwgc3RyZWFtYWJsZSkuR2V0U3RyaW5nKCk7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAorR1RFU1RfRElTQUJMRV9NU0Nf
V0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQorCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RF
U1RfR1RFU1RfTUVTU0FHRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaAppbmRleCA4MTAwNjk2NDRkMjNhZDM1
NTk3M2NiNTNmY2ViMGE4NTZiMGEwMDZjLi4xZTIyZjY4NTAyNDBmMTNlYmQ5OWVlOWE5YWY4MzZi
YmFiNzNiYzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaApAQCAtMSw0ICsxLDYgQEAKLS8vIFRoaXMgZmls
ZSB3YXMgR0VORVJBVEVEIGJ5IGEgc2NyaXB0LiAgRE8gTk9UIEVESVQgQlkgSEFORCEhIQorLy8g
VGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgY29tbWFuZDoKKy8vICAgICBwdW1wLnB5IGd0ZXN0
LXBhcmFtLXRlc3QuaC5wdW1wCisvLyBETyBOT1QgRURJVCBCWSBIQU5EISEhCiAKIC8vIENvcHly
aWdodCAyMDA4LCBHb29nbGUgSW5jLgogLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTI5LDEz
ICszMSwxMyBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogLy8KLS8vIEF1dGhv
cnM6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0vLwogLy8gTWFjcm9zIGFuZCBmdW5j
dGlvbnMgZm9yIGltcGxlbWVudGluZyBwYXJhbWV0ZXJpemVkIHRlc3RzCi0vLyBpbiBHb29nbGUg
QysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIGluIEdvb2dsZSBDKysgVGVz
dGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogLy8KIC8vIFRoaXMgZmls
ZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBETyBOT1QgRURJVCBCWSBIQU5EIQogLy8KKy8v
IEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURF
X0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9H
VEVTVF9QQVJBTV9URVNUX0hfCiAKQEAgLTQ4LDEwICs1MCwxMiBAQAogI2lmIDAKIAogLy8gVG8g
d3JpdGUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cywgZmlyc3QgeW91IHNob3VsZCBkZWZpbmUg
YSBmaXh0dXJlCi0vLyBjbGFzcy4gSXQgbXVzdCBiZSBkZXJpdmVkIGZyb20gdGVzdGluZzo6VGVz
dFdpdGhQYXJhbTxUPiwgd2hlcmUgVCBpcwotLy8gdGhlIHR5cGUgb2YgeW91ciBwYXJhbWV0ZXIg
dmFsdWVzLiBUZXN0V2l0aFBhcmFtPFQ+IGlzIGl0c2VsZiBkZXJpdmVkCi0vLyBmcm9tIHRlc3Rp
bmc6OlRlc3QuIFQgY2FuIGJlIGFueSBjb3B5YWJsZSB0eXBlLiBJZiBpdCdzIGEgcmF3IHBvaW50
ZXIsCi0vLyB5b3UgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgbGlmZXNwYW4gb2Yg
dGhlIHBvaW50ZWQgdmFsdWVzLgorLy8gY2xhc3MuIEl0IGlzIHVzdWFsbHkgZGVyaXZlZCBmcm9t
IHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08VD4gKHNlZSBiZWxvdyBmb3IKKy8vIGFub3RoZXIgaW5o
ZXJpdGFuY2Ugc2NoZW1lIHRoYXQncyBzb21ldGltZXMgdXNlZnVsIGluIG1vcmUgY29tcGxpY2F0
ZWQKKy8vIGNsYXNzIGhpZXJhcmNoaWVzKSwgd2hlcmUgdGhlIHR5cGUgb2YgeW91ciBwYXJhbWV0
ZXIgdmFsdWVzLgorLy8gVGVzdFdpdGhQYXJhbTxUPiBpcyBpdHNlbGYgZGVyaXZlZCBmcm9tIHRl
c3Rpbmc6OlRlc3QuIFQgY2FuIGJlIGFueQorLy8gY29weWFibGUgdHlwZS4gSWYgaXQncyBhIHJh
dyBwb2ludGVyLCB5b3UgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUKKy8vIGxpZmVz
cGFuIG9mIHRoZSBwb2ludGVkIHZhbHVlcy4KIAogY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3RXaXRoUGFyYW08Y29uc3QgY2hhcio+IHsKICAgLy8gWW91IGNhbiBpbXBsZW1l
bnQgYWxsIHRoZSB1c3VhbCBjbGFzcyBmaXh0dXJlIG1lbWJlcnMgaGVyZS4KQEAgLTc1LDcgKzc5
LDcgQEAgVEVTVF9QKEZvb1Rlc3QsIEhhc0JsYWhCbGFoKSB7CiAvLyBGaW5hbGx5LCB5b3UgY2Fu
IHVzZSBJTlNUQU5USUFURV9URVNUX0NBU0VfUCB0byBpbnN0YW50aWF0ZSB0aGUgdGVzdAogLy8g
Y2FzZSB3aXRoIGFueSBzZXQgb2YgcGFyYW1ldGVycyB5b3Ugd2FudC4gR29vZ2xlIFRlc3QgZGVm
aW5lcyBhIG51bWJlcgogLy8gb2YgZnVuY3Rpb25zIGZvciBnZW5lcmF0aW5nIHRlc3QgcGFyYW1l
dGVycy4gVGhleSByZXR1cm4gd2hhdCB3ZSBjYWxsCi0vLyAoc3VycHJpc2UhKSBwYXJhbWV0ZXIg
Z2VuZXJhdG9ycy4gSGVyZSBpcyBhICBzdW1tYXJ5IG9mIHRoZW0sIHdoaWNoCisvLyAoc3VycHJp
c2UhKSBwYXJhbWV0ZXIgZ2VuZXJhdG9ycy4gSGVyZSBpcyBhIHN1bW1hcnkgb2YgdGhlbSwgd2hp
Y2gKIC8vIGFyZSBhbGwgaW4gdGhlIHRlc3RpbmcgbmFtZXNwYWNlOgogLy8KIC8vCkBAIC0xNDYs
MjMgKzE1MCw0NCBAQCBJTlNUQU5USUFURV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFudGlhdGlv
bk5hbWUsIEZvb1Rlc3QsIFZhbHVlc0luKHBldHMpKTsKIC8vIEluIHRoZSBmdXR1cmUsIHdlIHBs
YW4gdG8gcHVibGlzaCB0aGUgQVBJIGZvciBkZWZpbmluZyBuZXcgcGFyYW1ldGVyCiAvLyBnZW5l
cmF0b3JzLiBCdXQgZm9yIG5vdyB0aGlzIGludGVyZmFjZSByZW1haW5zIHBhcnQgb2YgdGhlIGlu
dGVybmFsCiAvLyBpbXBsZW1lbnRhdGlvbiBhbmQgaXMgc3ViamVjdCB0byBjaGFuZ2UuCisvLwor
Ly8KKy8vIEEgcGFyYW1ldGVyaXplZCB0ZXN0IGZpeHR1cmUgbXVzdCBiZSBkZXJpdmVkIGZyb20g
dGVzdGluZzo6VGVzdCBhbmQgZnJvbQorLy8gdGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPFQ+
LCB3aGVyZSBUIGlzIHRoZSB0eXBlIG9mIHRoZSBwYXJhbWV0ZXIKKy8vIHZhbHVlcy4gSW5oZXJp
dGluZyBmcm9tIFRlc3RXaXRoUGFyYW08VD4gc2F0aXNmaWVzIHRoYXQgcmVxdWlyZW1lbnQgYmVj
YXVzZQorLy8gVGVzdFdpdGhQYXJhbTxUPiBpbmhlcml0cyBmcm9tIGJvdGggVGVzdCBhbmQgV2l0
aFBhcmFtSW50ZXJmYWNlLiBJbiBtb3JlCisvLyBjb21wbGljYXRlZCBoaWVyYXJjaGllcywgaG93
ZXZlciwgaXQgaXMgb2NjYXNpb25hbGx5IHVzZWZ1bCB0byBpbmhlcml0CisvLyBzZXBhcmF0ZWx5
IGZyb20gVGVzdCBhbmQgV2l0aFBhcmFtSW50ZXJmYWNlLiBGb3IgZXhhbXBsZToKKworY2xhc3Mg
QmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyAgLy8gWW91IGNhbiBpbmhlcml0
IGFsbCB0aGUgdXN1YWwgbWVtYmVycyBmb3IgYSBub24tcGFyYW1ldGVyaXplZCB0ZXN0CisgIC8v
IGZpeHR1cmUgaGVyZS4KK307CisKK2NsYXNzIERlcml2ZWRUZXN0IDogcHVibGljIEJhc2VUZXN0
LCBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8aW50PiB7CisgIC8vIFRoZSB1
c3VhbCB0ZXN0IGZpeHR1cmUgbWVtYmVycyBnbyBoZXJlIHRvby4KK307CisKK1RFU1RfRihCYXNl
VGVzdCwgSGFzRm9vKSB7CisgIC8vIFRoaXMgaXMgYW4gb3JkaW5hcnkgbm9uLXBhcmFtZXRlcml6
ZWQgdGVzdC4KK30KKworVEVTVF9QKERlcml2ZWRUZXN0LCBEb2VzQmxhaCkgeworICAvLyBHZXRQ
YXJhbSB3b3JrcyBqdXN0IHRoZSBzYW1lIGhlcmUgYXMgaWYgeW91IGluaGVyaXQgZnJvbSBUZXN0
V2l0aFBhcmFtLgorICBFWFBFQ1RfVFJVRShmb28uQmxhaChHZXRQYXJhbSgpKSk7Cit9CiAKICNl
bmRpZiAgLy8gMAogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorI2lu
Y2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKIAogI2lmICFHVEVTVF9PU19TWU1C
SUFOCi0jaW5jbHVkZSA8dXRpbGl0eT4KKyMgaW5jbHVkZSA8dXRpbGl0eT4KICNlbmRpZgogCi0v
LyBzY3JpcHRzL2Z1c2VfZ3Rlc3QucHkgZGVwZW5kcyBvbiBndGVzdCdzIG93biBoZWFkZXIgYmVp
bmcgI2luY2x1ZGVkCi0vLyAqdW5jb25kaXRpb25hbGx5Ki4gIFRoZXJlZm9yZSB0aGVzZSAjaW5j
bHVkZXMgY2Fubm90IGJlIG1vdmVkCi0vLyBpbnNpZGUgI2lmIEdURVNUX0hBU19QQVJBTV9URVNU
LgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg+Ci0jaW5jbHVkZSA8
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVy
bmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmg+Ci0KLSNpZiBHVEVTVF9IQVNfUEFSQU1f
VEVTVAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgiCisjaW5jbHVk
ZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oIgorI2luY2x1ZGUgImd0ZXN0L2lu
dGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgiCiAKIG5hbWVzcGFjZSB0ZXN0aW5n
IHsKIApAQCAtMjQzLDcgKzI2OCw3IEBAIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxUPiBSYW5n
ZShUIHN0YXJ0LCBUIGVuZCkgewogLy8gZWFjaCB3aXRoIEMtc3RyaW5nIHZhbHVlcyBvZiAiZm9v
IiwgImJhciIsIGFuZCAiYmF6IjoKIC8vCiAvLyBjb25zdCBjaGFyKiBzdHJpbmdzW10gPSB7ImZv
byIsICJiYXIiLCAiYmF6In07Ci0vLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChTdHJpbmdTZXF1
ZW5jZSwgU3J0aW5nVGVzdCwgVmFsdWVzSW4oc3RyaW5ncykpOworLy8gSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1AoU3RyaW5nU2VxdWVuY2UsIFN0cmluZ1Rlc3QsIFZhbHVlc0luKHN0cmluZ3MpKTsK
IC8vCiAvLyBUaGlzIGluc3RhbnRpYXRlcyB0ZXN0cyBmcm9tIHRlc3QgY2FzZSBTdGxTdHJpbmdU
ZXN0CiAvLyBlYWNoIHdpdGggU1RMIHN0cmluZ3Mgd2l0aCB2YWx1ZXMgImEiIGFuZCAiYiI6CkBA
IC0yNzYsMTEgKzMwMSwxMCBAQCBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8VD4gUmFuZ2UoVCBz
dGFydCwgVCBlbmQpIHsKIC8vCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yPgog
aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPAotICAgIHR5cGVuYW1lIDo6c3RkOjppdGVyYXRvcl90
cmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gVmFsdWVzSW4oCi0gIEZvcndhcmRJ
dGVyYXRvciBiZWdpbiwKLSAgRm9yd2FyZEl0ZXJhdG9yIGVuZCkgewotICB0eXBlZGVmIHR5cGVu
YW1lIDo6c3RkOjppdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZQot
ICAgICAgUGFyYW1UeXBlOworICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVyYXRv
clRyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPgorVmFsdWVzSW4oRm9yd2FyZEl0
ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKSB7CisgIHR5cGVkZWYgdHlwZW5hbWUg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPgorICAg
ICAgOjp2YWx1ZV90eXBlIFBhcmFtVHlwZTsKICAgcmV0dXJuIGludGVybmFsOjpQYXJhbUdlbmVy
YXRvcjxQYXJhbVR5cGU+KAogICAgICAgbmV3IGludGVybmFsOjpWYWx1ZXNJbkl0ZXJhdG9yUmFu
Z2VHZW5lcmF0b3I8UGFyYW1UeXBlPihiZWdpbiwgZW5kKSk7CiB9CkBAIC0xMTkyLDcgKzEyMTYs
NyBAQCBpbmxpbmUgaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPGJvb2w+IEJvb2woKSB7CiAgIHJl
dHVybiBWYWx1ZXMoZmFsc2UsIHRydWUpOwogfQogCi0jaWYgR1RFU1RfSEFTX0NPTUJJTkUKKyMg
aWYgR1RFU1RfSEFTX0NPTUJJTkUKIC8vIENvbWJpbmUoKSBhbGxvd3MgdGhlIHVzZXIgdG8gY29t
YmluZSB0d28gb3IgbW9yZSBzZXF1ZW5jZXMgdG8gcHJvZHVjZQogLy8gdmFsdWVzIG9mIGEgQ2Fy
dGVzaWFuIHByb2R1Y3Qgb2YgdGhvc2Ugc2VxdWVuY2VzJyBlbGVtZW50cy4KIC8vCkBAIC0xMjI4
LDcgKzEyNTIsNyBAQCBpbmxpbmUgaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPGJvb2w+IEJvb2wo
KSB7CiAvLyBCb29sZWFuIGZsYWdzOgogLy8KIC8vIGNsYXNzIEZsYWdEZXBlbmRlbnRUZXN0Ci0v
LyAgICAgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTx0dXBsZShib29sLCBib29sKT4g
PiB7CisvLyAgICAgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTx0dXBsZTxib29sLCBi
b29sPiA+IHsKIC8vICAgdmlydHVhbCB2b2lkIFNldFVwKCkgewogLy8gICAgIC8vIEFzc2lnbnMg
ZXh0ZXJuYWxfZmxhZ18xIGFuZCBleHRlcm5hbF9mbGFnXzIgdmFsdWVzIGZyb20gdGhlIHR1cGxl
LgogLy8gICAgIHRpZShleHRlcm5hbF9mbGFnXzEsIGV4dGVybmFsX2ZsYWdfMikgPSBHZXRQYXJh
bSgpOwpAQCAtMTM0NCwxMSArMTM2OCw5IEBAIGludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9s
ZGVyMTA8R2VuZXJhdG9yMSwgR2VuZXJhdG9yMiwgR2VuZXJhdG9yMywKICAgICAgIEdlbmVyYXRv
cjEwPigKICAgICAgIGcxLCBnMiwgZzMsIGc0LCBnNSwgZzYsIGc3LCBnOCwgZzksIGcxMCk7CiB9
Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCi0KLQorIyBlbmRpZiAgLy8gR1RFU1RfSEFT
X0NPTUJJTkUKIAotI2RlZmluZSBURVNUX1AodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXAor
IyBkZWZpbmUgVEVTVF9QKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIFwKICAgY2xhc3MgR1RF
U1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBcCiAgICAgICA6
IHB1YmxpYyB0ZXN0X2Nhc2VfbmFtZSB7IFwKICAgIHB1YmxpYzogXApAQCAtMTM1OCwxNCArMTM4
MCwxNyBAQCBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjEwPEdlbmVyYXRvcjEsIEdl
bmVyYXRvcjIsIEdlbmVyYXRvcjMsCiAgICAgc3RhdGljIGludCBBZGRUb1JlZ2lzdHJ5KCkgeyBc
CiAgICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5wYXJhbWV0ZXJpemVk
X3Rlc3RfcmVnaXN0cnkoKS4gXAogICAgICAgICAgIEdldFRlc3RDYXNlUGF0dGVybkhvbGRlcjx0
ZXN0X2Nhc2VfbmFtZT4oXAotICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIF9fRklMRV9f
LCBfX0xJTkVfXyktPkFkZFRlc3RQYXR0ZXJuKFwKLSAgICAgICAgICAgICAgICAgICN0ZXN0X2Nh
c2VfbmFtZSwgXAotICAgICAgICAgICAgICAgICAgI3Rlc3RfbmFtZSwgXAotICAgICAgICAgICAg
ICAgICAgbmV3IDo6dGVzdGluZzo6aW50ZXJuYWw6OlRlc3RNZXRhRmFjdG9yeTwgXAotICAgICAg
ICAgICAgICAgICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSk+KCkpOyBcCisgICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgXAorICAgICAg
ICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpDb2RlTG9jYXRpb24oXAorICAgICAgICAgICAg
ICAgICAgX19GSUxFX18sIF9fTElORV9fKSktPkFkZFRlc3RQYXR0ZXJuKFwKKyAgICAgICAgICAg
ICAgICAgICAgICBHVEVTVF9TVFJJTkdJRllfKHRlc3RfY2FzZV9uYW1lKSwgXAorICAgICAgICAg
ICAgICAgICAgICAgIEdURVNUX1NUUklOR0lGWV8odGVzdF9uYW1lKSwgXAorICAgICAgICAgICAg
ICAgICAgICAgIG5ldyA6OnRlc3Rpbmc6OmludGVybmFsOjpUZXN0TWV0YUZhY3Rvcnk8IFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyhcCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKT4oKSk7IFwK
ICAgICAgIHJldHVybiAwOyBcCiAgICAgfSBcCi0gICAgc3RhdGljIGludCBndGVzdF9yZWdpc3Rl
cmluZ19kdW1teV87IFwKKyAgICBzdGF0aWMgaW50IGd0ZXN0X3JlZ2lzdGVyaW5nX2R1bW15XyBH
VEVTVF9BVFRSSUJVVEVfVU5VU0VEXzsgXAogICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oXAogICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0
ZXN0X25hbWUpKTsgXAogICB9OyBcCkBAIC0xMzc0LDE5ICsxMzk5LDM5IEBAIGludGVybmFsOjpD
YXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMTA8R2VuZXJhdG9yMSwgR2VuZXJhdG9yMiwgR2VuZXJhdG9y
MywKICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFt
ZSk6OkFkZFRvUmVnaXN0cnkoKTsgXAogICB2b2lkIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVz
dF9jYXNlX25hbWUsIHRlc3RfbmFtZSk6OlRlc3RCb2R5KCkKIAotI2RlZmluZSBJTlNUQU5USUFU
RV9URVNUX0NBU0VfUChwcmVmaXgsIHRlc3RfY2FzZV9uYW1lLCBnZW5lcmF0b3IpIFwKLSAgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlw
ZT4gXAotICAgICAgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRv
cl8oKSB7IHJldHVybiBnZW5lcmF0b3I7IH0gXAotICBpbnQgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3Rf
Y2FzZV9uYW1lIyNfZHVtbXlfID0gXAotICAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5z
dGFuY2UoKS0+cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkuIFwKLSAgICAgICAgICBHZXRU
ZXN0Q2FzZVBhdHRlcm5Ib2xkZXI8dGVzdF9jYXNlX25hbWU+KFwKLSAgICAgICAgICAgICAgI3Rl
c3RfY2FzZV9uYW1lLCBfX0ZJTEVfXywgX19MSU5FX18pLT5BZGRUZXN0Q2FzZUluc3RhbnRpYXRp
b24oXAotICAgICAgICAgICAgICAgICAgI3ByZWZpeCwgXAotICAgICAgICAgICAgICAgICAgJmd0
ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0b3JfLCBcCi0gICAgICAg
ICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pCisvLyBUaGUgb3B0aW9uYWwgbGFzdCBhcmd1
bWVudCB0byBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBhbGxvd3MgdGhlIHVzZXIKKy8vIHRvIHNw
ZWNpZnkgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHRoYXQgZ2VuZXJhdGVzIGN1c3RvbSB0ZXN0IG5h
bWUgc3VmZml4ZXMKKy8vIGJhc2VkIG9uIHRoZSB0ZXN0IHBhcmFtZXRlcnMuIFRoZSBmdW5jdGlv
biBzaG91bGQgYWNjZXB0IG9uZSBhcmd1bWVudCBvZgorLy8gdHlwZSB0ZXN0aW5nOjpUZXN0UGFy
YW1JbmZvPGNsYXNzIFBhcmFtVHlwZT4sIGFuZCByZXR1cm4gc3RkOjpzdHJpbmcuCisvLworLy8g
dGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSBpcyBhIGJ1aWx0aW4gdGVzdCBzdWZmaXgg
Z2VuZXJhdG9yIHRoYXQKKy8vIHJldHVybnMgdGhlIHZhbHVlIG9mIHRlc3Rpbmc6OlByaW50VG9T
dHJpbmcoR2V0UGFyYW0oKSkuCisvLworLy8gTm90ZTogdGVzdCBuYW1lcyBtdXN0IGJlIG5vbi1l
bXB0eSwgdW5pcXVlLCBhbmQgbWF5IG9ubHkgY29udGFpbiBBU0NJSQorLy8gYWxwaGFudW1lcmlj
IGNoYXJhY3RlcnMgb3IgdW5kZXJzY29yZS4gQmVjYXVzZSBQcmludFRvU3RyaW5nIGFkZHMgcXVv
dGVzCisvLyB0byBzdGQ6OnN0cmluZyBhbmQgQyBzdHJpbmdzLCBpdCB3b24ndCB3b3JrIGZvciB0
aGVzZSB0eXBlcy4KKworI2RlZmluZSBJTlNUQU5USUFURV9URVNUX0NBU0VfUChwcmVmaXgsIHRl
c3RfY2FzZV9uYW1lLCBnZW5lcmF0b3IsIC4uLikgICAgICAgIFwKKyAgc3RhdGljIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+ICAg
ICAgICBcCisgICAgICBndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJh
dG9yXygpIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiBnZW5lcmF0b3I7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIGd0ZXN0XyMj
cHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0ZU5hbWVfKCAgICAgXAorICAgICAg
Y29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+
JiBpbmZvKSB7ICAgICAgIFwKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6R2V0UGFy
YW1OYW1lR2VuPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+KCAgICBcCisgICAgICAgIF9fVkFf
QVJHU19fKShpbmZvKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgc3RhdGljIGludCBndGVzdF8j
I3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19kdW1teV8gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8g
PSBcCisgICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIC0+cGFyYW1ldGVyaXplZF90
ZXN0X3JlZ2lzdHJ5KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAuR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVyPHRlc3RfY2FzZV9uYW1lPiggICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpDb2RlTG9jYXRpb24oX19GSUxFX18sIF9fTElORV9f
KSkgICAgICAgICAgIFwKKyAgICAgICAgICAtPkFkZFRlc3RDYXNlSW5zdGFudGlhdGlvbiggICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICNw
cmVmaXgsICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdG9yXywg
ICAgICAgXAorICAgICAgICAgICAgICAmZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNf
RXZhbEdlbmVyYXRlTmFtZV8sIF9fRklMRV9fLCAgIFwKKyAgICAgICAgICAgICAgX19MSU5FX18p
CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFN
X1RFU1QKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1Rf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rl
c3QtcGFyYW0tdGVzdC5oLnB1bXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC5wdW1wCmluZGV4IGEyMzExODgyN2YxZDQ4MGZiYmI4MjUy
ZjM0MGYwZWJlZGEzNDZlMjUuLjI3NGYyYjNiNTY5MzMwMDEyZTg1ZWUzY2Y0ZmQ1N2ViMGI1NDIx
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rl
c3QtcGFyYW0tdGVzdC5oLnB1bXAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcApAQCAtMzAsMTMgKzMwLDEyIEBAICR2YXIg
bWF4dHVwbGUgPSAxMCAgJCQgTWF4aW11bSBudW1iZXIgb2YgQ29tYmluZSBhcmd1bWVudHMgd2Ug
d2FudCB0byBzdXBwb3J0LgogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogLy8KLS8v
IEF1dGhvcnM6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0vLwogLy8gTWFjcm9zIGFu
ZCBmdW5jdGlvbnMgZm9yIGltcGxlbWVudGluZyBwYXJhbWV0ZXJpemVkIHRlc3RzCi0vLyBpbiBH
b29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIGluIEdvb2dsZSBD
KysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogLy8KIC8vIFRo
aXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBETyBOT1QgRURJVCBCWSBIQU5EIQog
Ly8KKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKICNpZm5kZWYgR1RFU1RfSU5D
TFVERV9HVEVTVF9HVEVTVF9QQVJBTV9URVNUX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RF
U1RfR1RFU1RfUEFSQU1fVEVTVF9IXwogCkBAIC00OSwxMCArNDgsMTIgQEAgJHZhciBtYXh0dXBs
ZSA9IDEwICAkJCBNYXhpbXVtIG51bWJlciBvZiBDb21iaW5lIGFyZ3VtZW50cyB3ZSB3YW50IHRv
IHN1cHBvcnQuCiAjaWYgMAogCiAvLyBUbyB3cml0ZSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3Rz
LCBmaXJzdCB5b3Ugc2hvdWxkIGRlZmluZSBhIGZpeHR1cmUKLS8vIGNsYXNzLiBJdCBtdXN0IGJl
IGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPFQ+LCB3aGVyZSBUIGlzCi0vLyB0
aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuIFRlc3RXaXRoUGFyYW08VD4gaXMgaXRz
ZWxmIGRlcml2ZWQKLS8vIGZyb20gdGVzdGluZzo6VGVzdC4gVCBjYW4gYmUgYW55IGNvcHlhYmxl
IHR5cGUuIElmIGl0J3MgYSByYXcgcG9pbnRlciwKLS8vIHlvdSBhcmUgcmVzcG9uc2libGUgZm9y
IG1hbmFnaW5nIHRoZSBsaWZlc3BhbiBvZiB0aGUgcG9pbnRlZCB2YWx1ZXMuCisvLyBjbGFzcy4g
SXQgaXMgdXN1YWxseSBkZXJpdmVkIGZyb20gdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxUPiAoc2Vl
IGJlbG93IGZvcgorLy8gYW5vdGhlciBpbmhlcml0YW5jZSBzY2hlbWUgdGhhdCdzIHNvbWV0aW1l
cyB1c2VmdWwgaW4gbW9yZSBjb21wbGljYXRlZAorLy8gY2xhc3MgaGllcmFyY2hpZXMpLCB3aGVy
ZSB0aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuCisvLyBUZXN0V2l0aFBhcmFtPFQ+
IGlzIGl0c2VsZiBkZXJpdmVkIGZyb20gdGVzdGluZzo6VGVzdC4gVCBjYW4gYmUgYW55CisvLyBj
b3B5YWJsZSB0eXBlLiBJZiBpdCdzIGEgcmF3IHBvaW50ZXIsIHlvdSBhcmUgcmVzcG9uc2libGUg
Zm9yIG1hbmFnaW5nIHRoZQorLy8gbGlmZXNwYW4gb2YgdGhlIHBvaW50ZWQgdmFsdWVzLgogCiBj
bGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBjaGFy
Kj4gewogICAvLyBZb3UgY2FuIGltcGxlbWVudCBhbGwgdGhlIHVzdWFsIGNsYXNzIGZpeHR1cmUg
bWVtYmVycyBoZXJlLgpAQCAtNzYsNyArNzcsNyBAQCBURVNUX1AoRm9vVGVzdCwgSGFzQmxhaEJs
YWgpIHsKIC8vIEZpbmFsbHksIHlvdSBjYW4gdXNlIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIHRv
IGluc3RhbnRpYXRlIHRoZSB0ZXN0CiAvLyBjYXNlIHdpdGggYW55IHNldCBvZiBwYXJhbWV0ZXJz
IHlvdSB3YW50LiBHb29nbGUgVGVzdCBkZWZpbmVzIGEgbnVtYmVyCiAvLyBvZiBmdW5jdGlvbnMg
Zm9yIGdlbmVyYXRpbmcgdGVzdCBwYXJhbWV0ZXJzLiBUaGV5IHJldHVybiB3aGF0IHdlIGNhbGwK
LS8vIChzdXJwcmlzZSEpIHBhcmFtZXRlciBnZW5lcmF0b3JzLiBIZXJlIGlzIGEgIHN1bW1hcnkg
b2YgdGhlbSwgd2hpY2gKKy8vIChzdXJwcmlzZSEpIHBhcmFtZXRlciBnZW5lcmF0b3JzLiBIZXJl
IGlzIGEgc3VtbWFyeSBvZiB0aGVtLCB3aGljaAogLy8gYXJlIGFsbCBpbiB0aGUgdGVzdGluZyBu
YW1lc3BhY2U6CiAvLwogLy8KQEAgLTEzNCw5ICsxMzUsMTIgQEAgSU5TVEFOVElBVEVfVEVTVF9D
QVNFX1AoQW5vdGhlckluc3RhbnRpYXRpb25OYW1lLCBGb29UZXN0LCBWYWx1ZXNJbihwZXRzKSk7
CiAvLyBpbiB0aGUgZ2l2ZW4gdGVzdCBjYXNlLCB3aGV0aGVyIHRoZWlyIGRlZmluaXRpb25zIGNv
bWUgYmVmb3JlIG9yCiAvLyBBRlRFUiB0aGUgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Agc3RhdGVt
ZW50LgogLy8KLS8vIFBsZWFzZSBhbHNvIG5vdGUgdGhhdCBnZW5lcmF0b3IgZXhwcmVzc2lvbnMg
YXJlIGV2YWx1YXRlZCBpbgotLy8gUlVOX0FMTF9URVNUUygpLCBhZnRlciBtYWluKCkgaGFzIHN0
YXJ0ZWQuIFRoaXMgYWxsb3dzIGV2YWx1YXRpb24gb2YKLS8vIHBhcmFtZXRlciBsaXN0IGJhc2Vk
IG9uIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzLgorLy8gUGxlYXNlIGFsc28gbm90ZSB0aGF0IGdl
bmVyYXRvciBleHByZXNzaW9ucyAoaW5jbHVkaW5nIHBhcmFtZXRlcnMgdG8gdGhlCisvLyBnZW5l
cmF0b3JzKSBhcmUgZXZhbHVhdGVkIGluIEluaXRHb29nbGVUZXN0KCksIGFmdGVyIG1haW4oKSBo
YXMgc3RhcnRlZC4KKy8vIFRoaXMgYWxsb3dzIHRoZSB1c2VyIG9uIG9uZSBoYW5kLCB0byBhZGp1
c3QgZ2VuZXJhdG9yIHBhcmFtZXRlcnMgaW4gb3JkZXIKKy8vIHRvIGR5bmFtaWNhbGx5IGRldGVy
bWluZSBhIHNldCBvZiB0ZXN0cyB0byBydW4gYW5kIG9uIHRoZSBvdGhlciBoYW5kLAorLy8gZ2l2
ZSB0aGUgdXNlciBhIGNoYW5jZSB0byBpbnNwZWN0IHRoZSBnZW5lcmF0ZWQgdGVzdHMgd2l0aCBH
b29nbGUgVGVzdAorLy8gcmVmbGVjdGlvbiBBUEkgYmVmb3JlIFJVTl9BTExfVEVTVFMoKSBpcyBl
eGVjdXRlZC4KIC8vCiAvLyBZb3UgY2FuIHNlZSBzYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2Mg
YW5kIHNhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYwogLy8gZm9yIG1vcmUgZXhhbXBsZXMuCkBA
IC0xNDQsMjMgKzE0OCw0NCBAQCBJTlNUQU5USUFURV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFu
dGlhdGlvbk5hbWUsIEZvb1Rlc3QsIFZhbHVlc0luKHBldHMpKTsKIC8vIEluIHRoZSBmdXR1cmUs
IHdlIHBsYW4gdG8gcHVibGlzaCB0aGUgQVBJIGZvciBkZWZpbmluZyBuZXcgcGFyYW1ldGVyCiAv
LyBnZW5lcmF0b3JzLiBCdXQgZm9yIG5vdyB0aGlzIGludGVyZmFjZSByZW1haW5zIHBhcnQgb2Yg
dGhlIGludGVybmFsCiAvLyBpbXBsZW1lbnRhdGlvbiBhbmQgaXMgc3ViamVjdCB0byBjaGFuZ2Uu
CisvLworLy8KKy8vIEEgcGFyYW1ldGVyaXplZCB0ZXN0IGZpeHR1cmUgbXVzdCBiZSBkZXJpdmVk
IGZyb20gdGVzdGluZzo6VGVzdCBhbmQgZnJvbQorLy8gdGVzdGluZzo6V2l0aFBhcmFtSW50ZXJm
YWNlPFQ+LCB3aGVyZSBUIGlzIHRoZSB0eXBlIG9mIHRoZSBwYXJhbWV0ZXIKKy8vIHZhbHVlcy4g
SW5oZXJpdGluZyBmcm9tIFRlc3RXaXRoUGFyYW08VD4gc2F0aXNmaWVzIHRoYXQgcmVxdWlyZW1l
bnQgYmVjYXVzZQorLy8gVGVzdFdpdGhQYXJhbTxUPiBpbmhlcml0cyBmcm9tIGJvdGggVGVzdCBh
bmQgV2l0aFBhcmFtSW50ZXJmYWNlLiBJbiBtb3JlCisvLyBjb21wbGljYXRlZCBoaWVyYXJjaGll
cywgaG93ZXZlciwgaXQgaXMgb2NjYXNpb25hbGx5IHVzZWZ1bCB0byBpbmhlcml0CisvLyBzZXBh
cmF0ZWx5IGZyb20gVGVzdCBhbmQgV2l0aFBhcmFtSW50ZXJmYWNlLiBGb3IgZXhhbXBsZToKKwor
Y2xhc3MgQmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyAgLy8gWW91IGNhbiBp
bmhlcml0IGFsbCB0aGUgdXN1YWwgbWVtYmVycyBmb3IgYSBub24tcGFyYW1ldGVyaXplZCB0ZXN0
CisgIC8vIGZpeHR1cmUgaGVyZS4KK307CisKK2NsYXNzIERlcml2ZWRUZXN0IDogcHVibGljIEJh
c2VUZXN0LCBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8aW50PiB7CisgIC8v
IFRoZSB1c3VhbCB0ZXN0IGZpeHR1cmUgbWVtYmVycyBnbyBoZXJlIHRvby4KK307CisKK1RFU1Rf
RihCYXNlVGVzdCwgSGFzRm9vKSB7CisgIC8vIFRoaXMgaXMgYW4gb3JkaW5hcnkgbm9uLXBhcmFt
ZXRlcml6ZWQgdGVzdC4KK30KKworVEVTVF9QKERlcml2ZWRUZXN0LCBEb2VzQmxhaCkgeworICAv
LyBHZXRQYXJhbSB3b3JrcyBqdXN0IHRoZSBzYW1lIGhlcmUgYXMgaWYgeW91IGluaGVyaXQgZnJv
bSBUZXN0V2l0aFBhcmFtLgorICBFWFBFQ1RfVFJVRShmb28uQmxhaChHZXRQYXJhbSgpKSk7Cit9
CiAKICNlbmRpZiAgLy8gMAogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5o
PgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKIAogI2lmICFHVEVTVF9P
U19TWU1CSUFOCi0jaW5jbHVkZSA8dXRpbGl0eT4KKyMgaW5jbHVkZSA8dXRpbGl0eT4KICNlbmRp
ZgogCi0vLyBzY3JpcHRzL2Z1c2VfZ3Rlc3QucHkgZGVwZW5kcyBvbiBndGVzdCdzIG93biBoZWFk
ZXIgYmVpbmcgI2luY2x1ZGVkCi0vLyAqdW5jb25kaXRpb25hbGx5Ki4gIFRoZXJlZm9yZSB0aGVz
ZSAjaW5jbHVkZXMgY2Fubm90IGJlIG1vdmVkCi0vLyBpbnNpZGUgI2lmIEdURVNUX0hBU19QQVJB
TV9URVNULgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg+Ci0jaW5j
bHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oPgotI2luY2x1ZGUgPGd0ZXN0
L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmg+Ci0KLSNpZiBHVEVTVF9IQVNf
UEFSQU1fVEVTVAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgiCisj
aW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oIgorI2luY2x1ZGUgImd0
ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgiCiAKIG5hbWVzcGFjZSB0
ZXN0aW5nIHsKIApAQCAtMjQxLDcgKzI2Niw3IEBAIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxU
PiBSYW5nZShUIHN0YXJ0LCBUIGVuZCkgewogLy8gZWFjaCB3aXRoIEMtc3RyaW5nIHZhbHVlcyBv
ZiAiZm9vIiwgImJhciIsIGFuZCAiYmF6IjoKIC8vCiAvLyBjb25zdCBjaGFyKiBzdHJpbmdzW10g
PSB7ImZvbyIsICJiYXIiLCAiYmF6In07Ci0vLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChTdHJp
bmdTZXF1ZW5jZSwgU3J0aW5nVGVzdCwgVmFsdWVzSW4oc3RyaW5ncykpOworLy8gSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoU3RyaW5nU2VxdWVuY2UsIFN0cmluZ1Rlc3QsIFZhbHVlc0luKHN0cmlu
Z3MpKTsKIC8vCiAvLyBUaGlzIGluc3RhbnRpYXRlcyB0ZXN0cyBmcm9tIHRlc3QgY2FzZSBTdGxT
dHJpbmdUZXN0CiAvLyBlYWNoIHdpdGggU1RMIHN0cmluZ3Mgd2l0aCB2YWx1ZXMgImEiIGFuZCAi
YiI6CkBAIC0yNzQsMTEgKzI5OSwxMCBAQCBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8VD4gUmFu
Z2UoVCBzdGFydCwgVCBlbmQpIHsKIC8vCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJh
dG9yPgogaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPAotICAgIHR5cGVuYW1lIDo6c3RkOjppdGVy
YXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gVmFsdWVzSW4oCi0gIEZv
cndhcmRJdGVyYXRvciBiZWdpbiwKLSAgRm9yd2FyZEl0ZXJhdG9yIGVuZCkgewotICB0eXBlZGVm
IHR5cGVuYW1lIDo6c3RkOjppdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVf
dHlwZQotICAgICAgUGFyYW1UeXBlOworICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJ
dGVyYXRvclRyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPgorVmFsdWVzSW4oRm9y
d2FyZEl0ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKSB7CisgIHR5cGVkZWYgdHlw
ZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0ZXJhdG9y
PgorICAgICAgOjp2YWx1ZV90eXBlIFBhcmFtVHlwZTsKICAgcmV0dXJuIGludGVybmFsOjpQYXJh
bUdlbmVyYXRvcjxQYXJhbVR5cGU+KAogICAgICAgbmV3IGludGVybmFsOjpWYWx1ZXNJbkl0ZXJh
dG9yUmFuZ2VHZW5lcmF0b3I8UGFyYW1UeXBlPihiZWdpbiwgZW5kKSk7CiB9CkBAIC0zNDgsNyAr
MzcyLDcgQEAgaW5saW5lIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxib29sPiBCb29sKCkgewog
ICByZXR1cm4gVmFsdWVzKGZhbHNlLCB0cnVlKTsKIH0KIAotI2lmIEdURVNUX0hBU19DT01CSU5F
CisjIGlmIEdURVNUX0hBU19DT01CSU5FCiAvLyBDb21iaW5lKCkgYWxsb3dzIHRoZSB1c2VyIHRv
IGNvbWJpbmUgdHdvIG9yIG1vcmUgc2VxdWVuY2VzIHRvIHByb2R1Y2UKIC8vIHZhbHVlcyBvZiBh
IENhcnRlc2lhbiBwcm9kdWN0IG9mIHRob3NlIHNlcXVlbmNlcycgZWxlbWVudHMuCiAvLwpAQCAt
Mzg0LDcgKzQwOCw3IEBAIGlubGluZSBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ym9vbD4gQm9v
bCgpIHsKIC8vIEJvb2xlYW4gZmxhZ3M6CiAvLwogLy8gY2xhc3MgRmxhZ0RlcGVuZGVudFRlc3QK
LS8vICAgICA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHR1cGxlKGJvb2wsIGJvb2wp
PiA+IHsKKy8vICAgICA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHR1cGxlPGJvb2ws
IGJvb2w+ID4gewogLy8gICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CiAvLyAgICAgLy8gQXNzaWdu
cyBleHRlcm5hbF9mbGFnXzEgYW5kIGV4dGVybmFsX2ZsYWdfMiB2YWx1ZXMgZnJvbSB0aGUgdHVw
bGUuCiAvLyAgICAgdGllKGV4dGVybmFsX2ZsYWdfMSwgZXh0ZXJuYWxfZmxhZ18yKSA9IEdldFBh
cmFtKCk7CkBAIC00MDksMTEgKzQzMyw5IEBAIGludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9s
ZGVyJGk8JGZvciBqLCBbW0dlbmVyYXRvciRqXV0+IENvbWJpbmUoCiB9CiAKIF1dCi0jZW5kaWYg
IC8vIEdURVNUX0hBU19DT01CSU5FCi0KLQorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUK
IAotI2RlZmluZSBURVNUX1AodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXAorIyBkZWZpbmUg
VEVTVF9QKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIFwKICAgY2xhc3MgR1RFU1RfVEVTVF9D
TEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBcCiAgICAgICA6IHB1YmxpYyB0
ZXN0X2Nhc2VfbmFtZSB7IFwKICAgIHB1YmxpYzogXApAQCAtNDIzLDE0ICs0NDUsMTcgQEAgaW50
ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIkaTwkZm9yIGosIFtbR2VuZXJhdG9yJGpdXT4g
Q29tYmluZSgKICAgICBzdGF0aWMgaW50IEFkZFRvUmVnaXN0cnkoKSB7IFwKICAgICAgIDo6dGVz
dGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3Ry
eSgpLiBcCiAgICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVyPHRlc3RfY2FzZV9uYW1l
PihcCi0gICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgX19GSUxFX18sIF9fTElORV9fKS0+
QWRkVGVzdFBhdHRlcm4oXAotICAgICAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCi0g
ICAgICAgICAgICAgICAgICAjdGVzdF9uYW1lLCBcCi0gICAgICAgICAgICAgICAgICBuZXcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6VGVzdE1ldGFGYWN0b3J5PCBcCi0gICAgICAgICAgICAgICAgICAg
ICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKT4oKSk7
IFwKKyAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCisgICAgICAgICAgICAgIDo6dGVz
dGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihcCisgICAgICAgICAgICAgICAgICBfX0ZJTEVf
XywgX19MSU5FX18pKS0+QWRkVGVzdFBhdHRlcm4oXAorICAgICAgICAgICAgICAgICAgICAgIEdU
RVNUX1NUUklOR0lGWV8odGVzdF9jYXNlX25hbWUpLCBcCisgICAgICAgICAgICAgICAgICAgICAg
R1RFU1RfU1RSSU5HSUZZXyh0ZXN0X25hbWUpLCBcCisgICAgICAgICAgICAgICAgICAgICAgbmV3
IDo6dGVzdGluZzo6aW50ZXJuYWw6OlRlc3RNZXRhRmFjdG9yeTwgXAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKFwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpPigpKTsgXAogICAgICAgcmV0dXJu
IDA7IFwKICAgICB9IFwKLSAgICBzdGF0aWMgaW50IGd0ZXN0X3JlZ2lzdGVyaW5nX2R1bW15Xzsg
XAorICAgIHN0YXRpYyBpbnQgZ3Rlc3RfcmVnaXN0ZXJpbmdfZHVtbXlfIEdURVNUX0FUVFJJQlVU
RV9VTlVTRURfOyBcCiAgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhcCiAgICAg
ICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkpOyBc
CiAgIH07IFwKQEAgLTQzOSwxOSArNDY0LDM3IEBAIGludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0
SG9sZGVyJGk8JGZvciBqLCBbW0dlbmVyYXRvciRqXV0+IENvbWJpbmUoCiAgICAgICBHVEVTVF9U
RVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpOjpBZGRUb1JlZ2lzdHJ5
KCk7IFwKICAgdm9pZCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0
X25hbWUpOjpUZXN0Qm9keSgpCiAKLSNkZWZpbmUgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AocHJl
Zml4LCB0ZXN0X2Nhc2VfbmFtZSwgZ2VuZXJhdG9yKSBcCi0gIDo6dGVzdGluZzo6aW50ZXJuYWw6
OlBhcmFtR2VuZXJhdG9yPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+IFwKKy8vIFRoZSBvcHRp
b25hbCBsYXN0IGFyZ3VtZW50IHRvIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIGFsbG93cyB0aGUg
dXNlcgorLy8gdG8gc3BlY2lmeSBhIGZ1bmN0aW9uIG9yIGZ1bmN0b3IgdGhhdCBnZW5lcmF0ZXMg
Y3VzdG9tIHRlc3QgbmFtZSBzdWZmaXhlcworLy8gYmFzZWQgb24gdGhlIHRlc3QgcGFyYW1ldGVy
cy4gVGhlIGZ1bmN0aW9uIHNob3VsZCBhY2NlcHQgb25lIGFyZ3VtZW50IG9mCisvLyB0eXBlIHRl
c3Rpbmc6OlRlc3RQYXJhbUluZm88Y2xhc3MgUGFyYW1UeXBlPiwgYW5kIHJldHVybiBzdGQ6OnN0
cmluZy4KKy8vCisvLyB0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1OYW1lIGlzIGEgYnVpbHRp
biB0ZXN0IHN1ZmZpeCBnZW5lcmF0b3IgdGhhdAorLy8gcmV0dXJucyB0aGUgdmFsdWUgb2YgdGVz
dGluZzo6UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgpKS4KKy8vCisvLyBOb3RlOiB0ZXN0IG5hbWVz
IG11c3QgYmUgbm9uLWVtcHR5LCB1bmlxdWUsIGFuZCBtYXkgb25seSBjb250YWluIEFTQ0lJCisv
LyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBvciB1bmRlcnNjb3JlLiBCZWNhdXNlIFByaW50VG9T
dHJpbmcgYWRkcyBxdW90ZXMKKy8vIHRvIHN0ZDo6c3RyaW5nIGFuZCBDIHN0cmluZ3MsIGl0IHdv
bid0IHdvcmsgZm9yIHRoZXNlIHR5cGVzLgorCisjIGRlZmluZSBJTlNUQU5USUFURV9URVNUX0NB
U0VfUChwcmVmaXgsIHRlc3RfY2FzZV9uYW1lLCBnZW5lcmF0b3IsIC4uLikgXAorICBzdGF0aWMg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dGVzdF9jYXNlX25hbWU6OlBhcmFt
VHlwZT4gXAogICAgICAgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVy
YXRvcl8oKSB7IHJldHVybiBnZW5lcmF0b3I7IH0gXAotICBpbnQgZ3Rlc3RfIyNwcmVmaXgjI3Rl
c3RfY2FzZV9uYW1lIyNfZHVtbXlfID0gXAorICBzdGF0aWMgOjpzdGQ6OnN0cmluZyBndGVzdF8j
I3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdGVOYW1lXyggXAorICAgICAgY29u
c3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+JiBp
bmZvKSB7IFwKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6R2V0UGFyYW1OYW1lR2Vu
PHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+IFwKKyAgICAgICAgKF9fVkFfQVJHU19fKShpbmZv
KTsgXAorICB9IFwKKyAgc3RhdGljIGludCBndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUj
I19kdW1teV8gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gPSBcCiAgICAgICA6OnRlc3Rpbmc6OlVu
aXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5wYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKS4gXAog
ICAgICAgICAgIEdldFRlc3RDYXNlUGF0dGVybkhvbGRlcjx0ZXN0X2Nhc2VfbmFtZT4oXAotICAg
ICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIF9fRklMRV9fLCBfX0xJTkVfXyktPkFkZFRlc3RD
YXNlSW5zdGFudGlhdGlvbihcCi0gICAgICAgICAgICAgICAgICAjcHJlZml4LCBcCi0gICAgICAg
ICAgICAgICAgICAmZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRv
cl8sIFwKLSAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykKKyAgICAgICAgICAg
ICAgI3Rlc3RfY2FzZV9uYW1lLCBcCisgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6
OkNvZGVMb2NhdGlvbihcCisgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pKS0+
QWRkVGVzdENhc2VJbnN0YW50aWF0aW9uKFwKKyAgICAgICAgICAgICAgICAgICAgICAjcHJlZml4
LCBcCisgICAgICAgICAgICAgICAgICAgICAgJmd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFt
ZSMjX0V2YWxHZW5lcmF0b3JfLCBcCisgICAgICAgICAgICAgICAgICAgICAgJmd0ZXN0XyMjcHJl
Zml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0ZU5hbWVfLCBcCisgICAgICAgICAgICAg
ICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKQogCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwog
Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCi0KICNlbmRpZiAgLy8gR1RFU1RfSU5D
TFVERV9HVEVTVF9HVEVTVF9QQVJBTV9URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXByaW50ZXJzLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXByaW50ZXJzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTE4
NjVmODRlNmY2ZmEzZTBmY2UxOTg3MDBiNWE1ZGZlNWY2NTUwZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaApA
QCAtMCwwICsxLDExMDcgQEAKKy8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgorLy8gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8v
IG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisv
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworCisvLyBHb29nbGUgVGVzdCAtIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1v
Y2tpbmcgRnJhbWV3b3JrCisvLworLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgYSB1bml2ZXJzYWwg
dmFsdWUgcHJpbnRlciB0aGF0IGNhbiBwcmludCBhCisvLyB2YWx1ZSBvZiBhbnkgdHlwZSBUOgor
Ly8KKy8vICAgdm9pZCA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxQcmludGVyPFQ+OjpQ
cmludCh2YWx1ZSwgb3N0cmVhbV9wdHIpOworLy8KKy8vIEEgdXNlciBjYW4gdGVhY2ggdGhpcyBm
dW5jdGlvbiBob3cgdG8gcHJpbnQgYSBjbGFzcyB0eXBlIFQgYnkKKy8vIGRlZmluaW5nIGVpdGhl
ciBvcGVyYXRvcjw8KCkgb3IgUHJpbnRUbygpIGluIHRoZSBuYW1lc3BhY2UgdGhhdAorLy8gZGVm
aW5lcyBULiAgTW9yZSBzcGVjaWZpY2FsbHksIHRoZSBGSVJTVCBkZWZpbmVkIGZ1bmN0aW9uIGlu
IHRoZQorLy8gZm9sbG93aW5nIGxpc3Qgd2lsbCBiZSB1c2VkIChhc3N1bWluZyBUIGlzIGRlZmlu
ZWQgaW4gbmFtZXNwYWNlCisvLyBmb28pOgorLy8KKy8vICAgMS4gZm9vOjpQcmludFRvKGNvbnN0
IFQmLCBvc3RyZWFtKikKKy8vICAgMi4gb3BlcmF0b3I8PChvc3RyZWFtJiwgY29uc3QgVCYpIGRl
ZmluZWQgaW4gZWl0aGVyIGZvbyBvciB0aGUKKy8vICAgICAgZ2xvYmFsIG5hbWVzcGFjZS4KKy8v
CisvLyBIb3dldmVyIGlmIFQgaXMgYW4gU1RMLXN0eWxlIGNvbnRhaW5lciB0aGVuIGl0IGlzIHBy
aW50ZWQgZWxlbWVudC13aXNlCisvLyB1bmxlc3MgZm9vOjpQcmludFRvKGNvbnN0IFQmLCBvc3Ry
ZWFtKikgaXMgZGVmaW5lZC4gTm90ZSB0aGF0CisvLyBvcGVyYXRvcjw8KCkgaXMgaWdub3JlZCBm
b3IgY29udGFpbmVyIHR5cGVzLgorLy8KKy8vIElmIG5vbmUgb2YgdGhlIGFib3ZlIGlzIGRlZmlu
ZWQsIGl0IHdpbGwgcHJpbnQgdGhlIGRlYnVnIHN0cmluZyBvZgorLy8gdGhlIHZhbHVlIGlmIGl0
IGlzIGEgcHJvdG9jb2wgYnVmZmVyLCBvciBwcmludCB0aGUgcmF3IGJ5dGVzIGluIHRoZQorLy8g
dmFsdWUgb3RoZXJ3aXNlLgorLy8KKy8vIFRvIGFpZCBkZWJ1Z2dpbmc6IHdoZW4gVCBpcyBhIHJl
ZmVyZW5jZSB0eXBlLCB0aGUgYWRkcmVzcyBvZiB0aGUKKy8vIHZhbHVlIGlzIGFsc28gcHJpbnRl
ZDsgd2hlbiBUIGlzIGEgKGNvbnN0KSBjaGFyIHBvaW50ZXIsIGJvdGggdGhlCisvLyBwb2ludGVy
IHZhbHVlIGFuZCB0aGUgTlVMLXRlcm1pbmF0ZWQgc3RyaW5nIGl0IHBvaW50cyB0byBhcmUKKy8v
IHByaW50ZWQuCisvLworLy8gV2UgYWxzbyBwcm92aWRlIHNvbWUgY29udmVuaWVudCB3cmFwcGVy
czoKKy8vCisvLyAgIC8vIFByaW50cyBhIHZhbHVlIHRvIGEgc3RyaW5nLiAgRm9yIGEgKGNvbnN0
IG9yIG5vdCkgY2hhcgorLy8gICAvLyBwb2ludGVyLCB0aGUgTlVMLXRlcm1pbmF0ZWQgc3RyaW5n
IChidXQgbm90IHRoZSBwb2ludGVyKSBpcworLy8gICAvLyBwcmludGVkLgorLy8gICBzdGQ6OnN0
cmluZyA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoY29uc3QgVCYgdmFsdWUpOworLy8KKy8vICAg
Ly8gUHJpbnRzIGEgdmFsdWUgdGVyc2VseTogZm9yIGEgcmVmZXJlbmNlIHR5cGUsIHRoZSByZWZl
cmVuY2VkCisvLyAgIC8vIHZhbHVlIChidXQgbm90IHRoZSBhZGRyZXNzKSBpcyBwcmludGVkOyBm
b3IgYSAoY29uc3Qgb3Igbm90KSBjaGFyCisvLyAgIC8vIHBvaW50ZXIsIHRoZSBOVUwtdGVybWlu
YXRlZCBzdHJpbmcgKGJ1dCBub3QgdGhlIHBvaW50ZXIpIGlzCisvLyAgIC8vIHByaW50ZWQuCisv
LyAgIHZvaWQgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludChjb25zdCBU
JiB2YWx1ZSwgb3N0cmVhbSopOworLy8KKy8vICAgLy8gUHJpbnRzIHZhbHVlIHVzaW5nIHRoZSB0
eXBlIGluZmVycmVkIGJ5IHRoZSBjb21waWxlci4gIFRoZSBkaWZmZXJlbmNlCisvLyAgIC8vIGZy
b20gVW5pdmVyc2FsVGVyc2VQcmludCgpIGlzIHRoYXQgdGhpcyBmdW5jdGlvbiBwcmludHMgYm90
aCB0aGUKKy8vICAgLy8gcG9pbnRlciBhbmQgdGhlIE5VTC10ZXJtaW5hdGVkIHN0cmluZyBmb3Ig
YSAoY29uc3Qgb3Igbm90KSBjaGFyIHBvaW50ZXIuCisvLyAgIHZvaWQgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6VW5pdmVyc2FsUHJpbnQoY29uc3QgVCYgdmFsdWUsIG9zdHJlYW0qKTsKKy8vCisvLyAg
IC8vIFByaW50cyB0aGUgZmllbGRzIG9mIGEgdHVwbGUgdGVyc2VseSB0byBhIHN0cmluZyB2ZWN0
b3IsIG9uZQorLy8gICAvLyBlbGVtZW50IGZvciBlYWNoIGZpZWxkLiBUdXBsZSBzdXBwb3J0IG11
c3QgYmUgZW5hYmxlZCBpbgorLy8gICAvLyBndGVzdC1wb3J0LmguCisvLyAgIHN0ZDo6dmVjdG9y
PHN0cmluZz4gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAorLy8gICAg
ICAgY29uc3QgVHVwbGUmIHZhbHVlKTsKKy8vCisvLyBLbm93biBsaW1pdGF0aW9uOgorLy8KKy8v
IFRoZSBwcmludCBwcmltaXRpdmVzIHByaW50IHRoZSBlbGVtZW50cyBvZiBhbiBTVEwtc3R5bGUg
Y29udGFpbmVyCisvLyB1c2luZyB0aGUgY29tcGlsZXItaW5mZXJyZWQgdHlwZSBvZiAqaXRlciB3
aGVyZSBpdGVyIGlzIGEKKy8vIGNvbnN0X2l0ZXJhdG9yIG9mIHRoZSBjb250YWluZXIuICBXaGVu
IGNvbnN0X2l0ZXJhdG9yIGlzIGFuIGlucHV0CisvLyBpdGVyYXRvciBidXQgbm90IGEgZm9yd2Fy
ZCBpdGVyYXRvciwgdGhpcyBpbmZlcnJlZCB0eXBlIG1heSBub3QKKy8vIG1hdGNoIHZhbHVlX3R5
cGUsIGFuZCB0aGUgcHJpbnQgb3V0cHV0IG1heSBiZSBpbmNvcnJlY3QuICBJbgorLy8gcHJhY3Rp
Y2UsIHRoaXMgaXMgcmFyZWx5IGEgcHJvYmxlbSBhcyBmb3IgbW9zdCBjb250YWluZXJzCisvLyBj
b25zdF9pdGVyYXRvciBpcyBhIGZvcndhcmQgaXRlcmF0b3IuICBXZSdsbCBmaXggdGhpcyBpZiB0
aGVyZSdzIGFuCisvLyBhY3R1YWwgbmVlZCBmb3IgaXQuICBOb3RlIHRoYXQgdGhpcyBmaXggY2Fu
bm90IHJlbHkgb24gdmFsdWVfdHlwZQorLy8gYmVpbmcgZGVmaW5lZCBhcyBtYW55IHVzZXItZGVm
aW5lZCBjb250YWluZXIgdHlwZXMgZG9uJ3QgaGF2ZQorLy8gdmFsdWVfdHlwZS4KKworLy8gR09P
R0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCisjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RF
U1RfR1RFU1RfUFJJTlRFUlNfSF8KKyNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9Q
UklOVEVSU19IXworCisjaW5jbHVkZSA8b3N0cmVhbT4gIC8vIE5PTElOVAorI2luY2x1ZGUgPHNz
dHJlYW0+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8
dmVjdG9yPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKyNpbmNsdWRl
ICJndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oIgorCisjaWYgR1RFU1RfSEFTX1NURF9U
VVBMRV8KKyMgaW5jbHVkZSA8dHVwbGU+CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19BQlNMCisj
aW5jbHVkZSAiYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgiCisjaW5jbHVkZSAiYWJzbC90eXBl
cy9vcHRpb25hbC5oIgorI2luY2x1ZGUgImFic2wvdHlwZXMvdmFyaWFudC5oIgorI2VuZGlmICAv
LyBHVEVTVF9IQVNfQUJTTAorCituYW1lc3BhY2UgdGVzdGluZyB7CisKKy8vIERlZmluaXRpb25z
IGluIHRoZSAnaW50ZXJuYWwnIGFuZCAnaW50ZXJuYWwyJyBuYW1lIHNwYWNlcyBhcmUKKy8vIHN1
YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLiAgRE8gTk9UIFVTRSBUSEVNIElOIFVTRVIg
Q09ERSEKK25hbWVzcGFjZSBpbnRlcm5hbDIgeworCisvLyBQcmludHMgdGhlIGdpdmVuIG51bWJl
ciBvZiBieXRlcyBpbiB0aGUgZ2l2ZW4gb2JqZWN0IHRvIHRoZSBnaXZlbgorLy8gb3N0cmVhbS4K
K0dURVNUX0FQSV8gdm9pZCBQcmludEJ5dGVzSW5PYmplY3RUbyhjb25zdCB1bnNpZ25lZCBjaGFy
KiBvYmpfYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6c3RkOjpvc3Ry
ZWFtKiBvcyk7CisKKy8vIEZvciBzZWxlY3Rpbmcgd2hpY2ggcHJpbnRlciB0byB1c2Ugd2hlbiBh
IGdpdmVuIHR5cGUgaGFzIG5laXRoZXIgPDwKKy8vIG5vciBQcmludFRvKCkuCitlbnVtIFR5cGVL
aW5kIHsKKyAga1Byb3RvYnVmLCAgICAgICAgICAgICAgLy8gYSBwcm90b2J1ZiB0eXBlCisgIGtD
b252ZXJ0aWJsZVRvSW50ZWdlciwgIC8vIGEgdHlwZSBpbXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRv
IEJpZ2dlc3RJbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKGUuZy4gYSBuYW1lZCBv
ciB1bm5hbWVkIGVudW0gdHlwZSkKKyNpZiBHVEVTVF9IQVNfQUJTTAorICBrQ29udmVydGlibGVU
b1N0cmluZ1ZpZXcsICAvLyBhIHR5cGUgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0bworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBhYnNsOjpzdHJpbmdfdmlldworI2VuZGlmCisgIGtP
dGhlclR5cGUgIC8vIGFueXRoaW5nIGVsc2UKK307CisKKy8vIFR5cGVXaXRob3V0Rm9ybWF0dGVy
PFQsIGtUeXBlS2luZD46OlByaW50VmFsdWUodmFsdWUsIG9zKSBpcyBjYWxsZWQKKy8vIGJ5IHRo
ZSB1bml2ZXJzYWwgcHJpbnRlciB0byBwcmludCBhIHZhbHVlIG9mIHR5cGUgVCB3aGVuIG5laXRo
ZXIKKy8vIG9wZXJhdG9yPDwgbm9yIFByaW50VG8oKSBpcyBkZWZpbmVkIGZvciBULCB3aGVyZSBr
VHlwZUtpbmQgaXMgdGhlCisvLyAia2luZCIgb2YgVCBhcyBkZWZpbmVkIGJ5IGVudW0gVHlwZUtp
bmQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgVHlwZUtpbmQga1R5cGVLaW5kPgorY2xhc3MgVHlw
ZVdpdGhvdXRGb3JtYXR0ZXIgeworIHB1YmxpYzoKKyAgLy8gVGhpcyBkZWZhdWx0IHZlcnNpb24g
aXMgY2FsbGVkIHdoZW4ga1R5cGVLaW5kIGlzIGtPdGhlclR5cGUuCisgIHN0YXRpYyB2b2lkIFBy
aW50VmFsdWUoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIFByaW50
Qnl0ZXNJbk9iamVjdFRvKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oJnZh
bHVlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHZhbHVlKSwgb3MpOworICB9
Cit9OworCisvLyBXZSBwcmludCBhIHByb3RvYnVmIHVzaW5nIGl0cyBTaG9ydERlYnVnU3RyaW5n
KCkgd2hlbiB0aGUgc3RyaW5nCisvLyBkb2Vzbid0IGV4Y2VlZCB0aGlzIG1hbnkgY2hhcmFjdGVy
czsgb3RoZXJ3aXNlIHdlIHByaW50IGl0IHVzaW5nCisvLyBEZWJ1Z1N0cmluZygpIGZvciBiZXR0
ZXIgcmVhZGFiaWxpdHkuCitjb25zdCBzaXplX3Qga1Byb3RvYnVmT25lTGluZXJNYXhMZW5ndGgg
PSA1MDsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlV2l0aG91dEZvcm1hdHRl
cjxULCBrUHJvdG9idWY+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFByaW50VmFsdWUoY29u
c3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIHN0ZDo6c3RyaW5nIHByZXR0
eV9zdHIgPSB2YWx1ZS5TaG9ydERlYnVnU3RyaW5nKCk7CisgICAgaWYgKHByZXR0eV9zdHIubGVu
Z3RoKCkgPiBrUHJvdG9idWZPbmVMaW5lck1heExlbmd0aCkgeworICAgICAgcHJldHR5X3N0ciA9
ICJcbiIgKyB2YWx1ZS5EZWJ1Z1N0cmluZygpOworICAgIH0KKyAgICAqb3MgPDwgKCI8IiArIHBy
ZXR0eV9zdHIgKyAiPiIpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNz
IFR5cGVXaXRob3V0Rm9ybWF0dGVyPFQsIGtDb252ZXJ0aWJsZVRvSW50ZWdlcj4geworIHB1Ymxp
YzoKKyAgLy8gU2luY2UgVCBoYXMgbm8gPDwgb3BlcmF0b3Igb3IgUHJpbnRUbygpIGJ1dCBjYW4g
YmUgaW1wbGljaXRseQorICAvLyBjb252ZXJ0ZWQgdG8gQmlnZ2VzdEludCwgd2UgcHJpbnQgaXQg
YXMgYSBCaWdnZXN0SW50LgorICAvLworICAvLyBNb3N0IGxpa2VseSBUIGlzIGFuIGVudW0gdHlw
ZSAoZWl0aGVyIG5hbWVkIG9yIHVubmFtZWQpLCBpbiB3aGljaAorICAvLyBjYXNlIHByaW50aW5n
IGl0IGFzIGFuIGludGVnZXIgaXMgdGhlIGRlc2lyZWQgYmVoYXZpb3IuICBJbiBjYXNlCisgIC8v
IFQgaXMgbm90IGFuIGVudW0sIHByaW50aW5nIGl0IGFzIGFuIGludGVnZXIgaXMgdGhlIGJlc3Qg
d2UgY2FuIGRvCisgIC8vIGdpdmVuIHRoYXQgaXQgaGFzIG5vIHVzZXItZGVmaW5lZCBwcmludGVy
LgorICBzdGF0aWMgdm9pZCBQcmludFZhbHVlKGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgICBjb25zdCBpbnRlcm5hbDo6QmlnZ2VzdEludCBrQmlnSW50ID0gdmFsdWU7
CisgICAgKm9zIDw8IGtCaWdJbnQ7CisgIH0KK307CisKKyNpZiBHVEVTVF9IQVNfQUJTTAordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlV2l0aG91dEZvcm1hdHRlcjxULCBrQ29udmVy
dGlibGVUb1N0cmluZ1ZpZXc+IHsKKyBwdWJsaWM6CisgIC8vIFNpbmNlIFQgaGFzIG5laXRoZXIg
b3BlcmF0b3I8PCBub3IgUHJpbnRUbygpIGJ1dCBjYW4gYmUgaW1wbGljaXRseQorICAvLyBjb252
ZXJ0ZWQgdG8gYWJzbDo6c3RyaW5nX3ZpZXcsIHdlIHByaW50IGl0IGFzIGEgYWJzbDo6c3RyaW5n
X3ZpZXcuCisgIC8vCisgIC8vIE5vdGU6IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBmdXJ0aGVyIGJl
bG93LCBhcyBpdCBkZXBlbmRzIG9uCisgIC8vIGludGVybmFsOjpQcmludFRvIHN5bWJvbCB3aGlj
aCBpcyBkZWZpbmVkIGxhdGVyIGluIHRoZSBmaWxlLgorICBzdGF0aWMgdm9pZCBQcmludFZhbHVl
KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworfTsKKyNlbmRpZgorCisvLyBQ
cmludHMgdGhlIGdpdmVuIHZhbHVlIHRvIHRoZSBnaXZlbiBvc3RyZWFtLiAgSWYgdGhlIHZhbHVl
IGlzIGEKKy8vIHByb3RvY29sIG1lc3NhZ2UsIGl0cyBkZWJ1ZyBzdHJpbmcgaXMgcHJpbnRlZDsg
aWYgaXQncyBhbiBlbnVtIG9yCisvLyBvZiBhIHR5cGUgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0
byBCaWdnZXN0SW50LCBpdCdzIHByaW50ZWQgYXMgYW4KKy8vIGludGVnZXI7IG90aGVyd2lzZSB0
aGUgYnl0ZXMgaW4gdGhlIHZhbHVlIGFyZSBwcmludGVkLiAgVGhpcyBpcworLy8gd2hhdCBVbml2
ZXJzYWxQcmludGVyPFQ+OjpQcmludCgpIGRvZXMgd2hlbiBpdCBrbm93cyBub3RoaW5nIGFib3V0
CisvLyB0eXBlIFQgYW5kIFQgaGFzIG5laXRoZXIgPDwgb3BlcmF0b3Igbm9yIFByaW50VG8oKS4K
Ky8vCisvLyBBIHVzZXIgY2FuIG92ZXJyaWRlIHRoaXMgYmVoYXZpb3IgZm9yIGEgY2xhc3MgdHlw
ZSBGb28gYnkgZGVmaW5pbmcKKy8vIGEgPDwgb3BlcmF0b3IgaW4gdGhlIG5hbWVzcGFjZSB3aGVy
ZSBGb28gaXMgZGVmaW5lZC4KKy8vCisvLyBXZSBwdXQgdGhpcyBvcGVyYXRvciBpbiBuYW1lc3Bh
Y2UgJ2ludGVybmFsMicgaW5zdGVhZCBvZiAnaW50ZXJuYWwnCisvLyB0byBzaW1wbGlmeSB0aGUg
aW1wbGVtZW50YXRpb24sIGFzIG11Y2ggY29kZSBpbiAnaW50ZXJuYWwnIG5lZWRzIHRvCisvLyB1
c2UgPDwgaW4gU1RMLCB3aGljaCB3b3VsZCBjb25mbGljdCB3aXRoIG91ciBvd24gPDwgd2VyZSBp
dCBkZWZpbmVkCisvLyBpbiAnaW50ZXJuYWwnLgorLy8KKy8vIE5vdGUgdGhhdCB0aGlzIG9wZXJh
dG9yPDwgdGFrZXMgYSBnZW5lcmljIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLAorLy8gQ2hhclRy
YWl0cz4gdHlwZSBpbnN0ZWFkIG9mIHRoZSBtb3JlIHJlc3RyaWN0ZWQgc3RkOjpvc3RyZWFtLiAg
SWYKKy8vIHdlIGRlZmluZSBpdCB0byB0YWtlIGFuIHN0ZDo6b3N0cmVhbSBpbnN0ZWFkLCB3ZSds
bCBnZXQgYW4KKy8vICJhbWJpZ3VvdXMgb3ZlcmxvYWRzIiBjb21waWxlciBlcnJvciB3aGVuIHRy
eWluZyB0byBwcmludCBhIHR5cGUKKy8vIEZvbyB0aGF0IHN1cHBvcnRzIHN0cmVhbWluZyB0byBz
dGQ6OmJhc2ljX29zdHJlYW08Q2hhciwKKy8vIENoYXJUcmFpdHM+LCBhcyB0aGUgY29tcGlsZXIg
Y2Fubm90IHRlbGwgd2hldGhlcgorLy8gb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mLCBjb25zdCBU
Jikgb3IKKy8vIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4s
IGNvbnN0IEZvbyYpIGlzIG1vcmUKKy8vIHNwZWNpZmljLgordGVtcGxhdGUgPHR5cGVuYW1lIENo
YXIsIHR5cGVuYW1lIENoYXJUcmFpdHMsIHR5cGVuYW1lIFQ+Cis6OnN0ZDo6YmFzaWNfb3N0cmVh
bTxDaGFyLCBDaGFyVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICA6OnN0ZDo6YmFzaWNfb3N0cmVh
bTxDaGFyLCBDaGFyVHJhaXRzPiYgb3MsIGNvbnN0IFQmIHgpIHsKKyAgVHlwZVdpdGhvdXRGb3Jt
YXR0ZXI8VCwgKGludGVybmFsOjpJc0FQcm90b2NvbE1lc3NhZ2U8VD46OnZhbHVlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPyBrUHJvdG9idWYKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6IGludGVybmFsOjpJbXBsaWNpdGx5Q29udmVydGlibGU8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCYsIGludGVybmFsOjpCaWdnZXN0SW50
Pjo6dmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGtDb252ZXJ0
aWJsZVRvSW50ZWdlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoKKyNp
ZiBHVEVTVF9IQVNfQUJTTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dGVybmFsOjpJbXBsaWNpdGx5Q29udmVydGlibGU8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFQmLCBhYnNsOjpzdHJpbmdfdmlldz46OnZhbHVlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ga0NvbnZlcnRpYmxlVG9TdHJp
bmdWaWV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoKKyNlbmRp
ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrT3RoZXJUeXBlKT46
OlByaW50VmFsdWUoeCwgJm9zKTsKKyAgcmV0dXJuIG9zOworfQorCit9ICAvLyBuYW1lc3BhY2Ug
aW50ZXJuYWwyCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCisvLyBUaGlzIG5hbWVzcGFjZSBN
VVNUIE5PVCBCRSBORVNURUQgSU4gOjp0ZXN0aW5nLCBvciB0aGUgbmFtZSBsb29rLXVwCisvLyBt
YWdpYyBuZWVkZWQgZm9yIGltcGxlbWVudGluZyBVbml2ZXJzYWxQcmludGVyIHdvbid0IHdvcmsu
CituYW1lc3BhY2UgdGVzdGluZ19pbnRlcm5hbCB7CisKKy8vIFVzZWQgdG8gcHJpbnQgYSB2YWx1
ZSB0aGF0IGlzIG5vdCBhbiBTVEwtc3R5bGUgY29udGFpbmVyIHdoZW4gdGhlCisvLyB1c2VyIGRv
ZXNuJ3QgZGVmaW5lIFByaW50VG8oKSBmb3IgaXQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3Zv
aWQgRGVmYXVsdFByaW50Tm9uQ29udGFpbmVyVG8oY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3Ry
ZWFtKiBvcykgeworICAvLyBXaXRoIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50LCBkdXJpbmcgdW5x
dWFsaWZpZWQgbmFtZSBsb29rdXAsCisgIC8vIHRlc3Rpbmc6OmludGVybmFsMjo6b3BlcmF0b3I8
PCBhcHBlYXJzIGFzIGlmIGl0IHdhcyBkZWNsYXJlZCBpbgorICAvLyB0aGUgbmVhcmVzdCBlbmNs
b3NpbmcgbmFtZXNwYWNlIHRoYXQgY29udGFpbnMgYm90aAorICAvLyA6OnRlc3RpbmdfaW50ZXJu
YWwgYW5kIDo6dGVzdGluZzo6aW50ZXJuYWwyLCBpLmUuIHRoZSBnbG9iYWwKKyAgLy8gbmFtZXNw
YWNlLiAgRm9yIG1vcmUgZGV0YWlscywgcmVmZXIgdG8gdGhlIEMrKyBTdGFuZGFyZCBzZWN0aW9u
CisgIC8vIDcuMy40LTEgW25hbWVzcGFjZS51ZGlyXS4gIFRoaXMgYWxsb3dzIHVzIHRvIGZhbGwg
YmFjayBvbnRvCisgIC8vIHRlc3Rpbmc6OmludGVybmFsMjo6b3BlcmF0b3I8PCBpbiBjYXNlIFQg
ZG9lc24ndCBjb21lIHdpdGggYSA8PAorICAvLyBvcGVyYXRvci4KKyAgLy8KKyAgLy8gV2UgY2Fu
bm90IHdyaXRlICd1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsMjo6b3BlcmF0b3I8PDsnLCB3aGlj
aAorICAvLyBnY2MgMy4zIGZhaWxzIHRvIGNvbXBpbGUgZHVlIHRvIGEgY29tcGlsZXIgYnVnLgor
ICB1c2luZyBuYW1lc3BhY2UgOjp0ZXN0aW5nOjppbnRlcm5hbDI7ICAvLyBOT0xJTlQKKworICAv
LyBBc3N1bWluZyBUIGlzIGRlZmluZWQgaW4gbmFtZXNwYWNlIGZvbywgaW4gdGhlIG5leHQgc3Rh
dGVtZW50LAorICAvLyB0aGUgY29tcGlsZXIgd2lsbCBjb25zaWRlciBhbGwgb2Y6CisgIC8vCisg
IC8vICAgMS4gZm9vOjpvcGVyYXRvcjw8ICh0aGFua3MgdG8gS29lbmlnIGxvb2stdXApLAorICAv
LyAgIDIuIDo6b3BlcmF0b3I8PCAoYXMgdGhlIGN1cnJlbnQgbmFtZXNwYWNlIGlzIGVuY2xvc2Vk
IGluIDo6KSwKKyAgLy8gICAzLiB0ZXN0aW5nOjppbnRlcm5hbDI6Om9wZXJhdG9yPDwgKHRoYW5r
cyB0byB0aGUgdXNpbmcgc3RhdGVtZW50IGFib3ZlKS4KKyAgLy8KKyAgLy8gVGhlIG9wZXJhdG9y
PDwgd2hvc2UgdHlwZSBtYXRjaGVzIFQgYmVzdCB3aWxsIGJlIHBpY2tlZC4KKyAgLy8KKyAgLy8g
V2UgZGVsaWJlcmF0ZWx5IGFsbG93ICMyIHRvIGJlIGEgY2FuZGlkYXRlLCBhcyBzb21ldGltZXMg
aXQncworICAvLyBpbXBvc3NpYmxlIHRvIGRlZmluZSAjMSAoZS5nLiB3aGVuIGZvbyBpcyA6OnN0
ZCwgZGVmaW5pbmcKKyAgLy8gYW55dGhpbmcgaW4gaXQgaXMgdW5kZWZpbmVkIGJlaGF2aW9yIHVu
bGVzcyB5b3UgYXJlIGEgY29tcGlsZXIKKyAgLy8gdmVuZG9yLikuCisgICpvcyA8PCB2YWx1ZTsK
K30KKworfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmdfaW50ZXJuYWwKKworbmFtZXNwYWNlIHRlc3Rp
bmcgeworbmFtZXNwYWNlIGludGVybmFsIHsKKworLy8gRm9ybWF0Rm9yQ29tcGFyaXNvbjxUb1By
aW50LCBPdGhlck9wZXJhbmQ+OjpGb3JtYXQodmFsdWUpIGZvcm1hdHMgYQorLy8gdmFsdWUgb2Yg
dHlwZSBUb1ByaW50IHRoYXQgaXMgYW4gb3BlcmFuZCBvZiBhIGNvbXBhcmlzb24gYXNzZXJ0aW9u
CisvLyAoZS5nLiBBU1NFUlRfRVEpLiAgT3RoZXJPcGVyYW5kIGlzIHRoZSB0eXBlIG9mIHRoZSBv
dGhlciBvcGVyYW5kIGluCisvLyB0aGUgY29tcGFyaXNvbiwgYW5kIGlzIHVzZWQgdG8gaGVscCBk
ZXRlcm1pbmUgdGhlIGJlc3Qgd2F5IHRvCisvLyBmb3JtYXQgdGhlIHZhbHVlLiAgSW4gcGFydGlj
dWxhciwgd2hlbiB0aGUgdmFsdWUgaXMgYSBDIHN0cmluZworLy8gKGNoYXIgcG9pbnRlcikgYW5k
IHRoZSBvdGhlciBvcGVyYW5kIGlzIGFuIFNUTCBzdHJpbmcgb2JqZWN0LCB3ZQorLy8gd2FudCB0
byBmb3JtYXQgdGhlIEMgc3RyaW5nIGFzIGEgc3RyaW5nLCBzaW5jZSB3ZSBrbm93IGl0IGlzCisv
LyBjb21wYXJlZCBieSB2YWx1ZSB3aXRoIHRoZSBzdHJpbmcgb2JqZWN0LiAgSWYgdGhlIHZhbHVl
IGlzIGEgY2hhcgorLy8gcG9pbnRlciBidXQgdGhlIG90aGVyIG9wZXJhbmQgaXMgbm90IGFuIFNU
TCBzdHJpbmcgb2JqZWN0LCB3ZSBkb24ndAorLy8ga25vdyB3aGV0aGVyIHRoZSBwb2ludGVyIGlz
IHN1cHBvc2VkIHRvIHBvaW50IHRvIGEgTlVMLXRlcm1pbmF0ZWQKKy8vIHN0cmluZywgYW5kIHRo
dXMgd2FudCB0byBwcmludCBpdCBhcyBhIHBvaW50ZXIgdG8gYmUgc2FmZS4KKy8vCisvLyBJTlRF
Uk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCisKKy8v
IFRoZSBkZWZhdWx0IGNhc2UuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVG9QcmludCwgdHlwZW5hbWUg
T3RoZXJPcGVyYW5kPgorY2xhc3MgRm9ybWF0Rm9yQ29tcGFyaXNvbiB7CisgcHVibGljOgorICBz
dGF0aWMgOjpzdGQ6OnN0cmluZyBGb3JtYXQoY29uc3QgVG9QcmludCYgdmFsdWUpIHsKKyAgICBy
ZXR1cm4gOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHZhbHVlKTsKKyAgfQorfTsKKworLy8gQXJy
YXkuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVG9QcmludCwgc2l6ZV90IE4sIHR5cGVuYW1lIE90aGVy
T3BlcmFuZD4KK2NsYXNzIEZvcm1hdEZvckNvbXBhcmlzb248VG9QcmludFtOXSwgT3RoZXJPcGVy
YW5kPiB7CisgcHVibGljOgorICBzdGF0aWMgOjpzdGQ6OnN0cmluZyBGb3JtYXQoY29uc3QgVG9Q
cmludCogdmFsdWUpIHsKKyAgICByZXR1cm4gRm9ybWF0Rm9yQ29tcGFyaXNvbjxjb25zdCBUb1By
aW50KiwgT3RoZXJPcGVyYW5kPjo6Rm9ybWF0KHZhbHVlKTsKKyAgfQorfTsKKworLy8gQnkgZGVm
YXVsdCwgcHJpbnQgQyBzdHJpbmcgYXMgcG9pbnRlcnMgdG8gYmUgc2FmZSwgYXMgd2UgZG9uJ3Qg
a25vdworLy8gd2hldGhlciB0aGV5IGFjdHVhbGx5IHBvaW50IHRvIGEgTlVMLXRlcm1pbmF0ZWQg
c3RyaW5nLgorCisjZGVmaW5lIEdURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1BPSU5URVJf
KENoYXJUeXBlKSAgICAgICAgICAgICAgICBcCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBPdGhlck9w
ZXJhbmQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGNsYXNzIEZv
cm1hdEZvckNvbXBhcmlzb248Q2hhclR5cGUqLCBPdGhlck9wZXJhbmQ+IHsgICAgICAgICAgICAg
ICAgICBcCisgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9ybWF0
KENoYXJUeXBlKiB2YWx1ZSkgeyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICByZXR1cm4g
Ojp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPih2YWx1ZSkp
OyBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdf
QVNfUE9JTlRFUl8oY2hhcik7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19QT0lOVEVS
Xyhjb25zdCBjaGFyKTsKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1BPSU5URVJfKHdj
aGFyX3QpOworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfUE9JTlRFUl8oY29uc3Qgd2No
YXJfdCk7CisKKyN1bmRlZiBHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19QT0lOVEVSXwor
CisvLyBJZiBhIEMgc3RyaW5nIGlzIGNvbXBhcmVkIHdpdGggYW4gU1RMIHN0cmluZyBvYmplY3Qs
IHdlIGtub3cgaXQncyBtZWFudAorLy8gdG8gcG9pbnQgdG8gYSBOVUwtdGVybWluYXRlZCBzdHJp
bmcsIGFuZCB0aHVzIGNhbiBwcmludCBpdCBhcyBhIHN0cmluZy4KKworI2RlZmluZSBHVEVTVF9J
TVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKENoYXJUeXBlLCBPdGhlclN0cmluZ1R5cGUp
IFwKKyAgdGVtcGxhdGUgPD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgY2xhc3MgRm9ybWF0Rm9yQ29tcGFyaXNvbjxDaGFyVHlw
ZSosIE90aGVyU3RyaW5nVHlwZT4geyAgICAgICAgICAgICAgIFwKKyAgIHB1YmxpYzogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBzdGF0aWMgOjpzdGQ6OnN0cmluZyBGb3JtYXQoQ2hhclR5cGUqIHZhbHVlKSB7ICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgIHJldHVybiA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmco
dmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
fQorCitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNoYXIsIDo6c3RkOjpz
dHJpbmcpOworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjb25zdCBjaGFy
LCA6OnN0ZDo6c3RyaW5nKTsKKworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCitHVEVTVF9J
TVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNoYXIsIDo6c3RyaW5nKTsKK0dURVNUX0lN
UExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18oY29uc3QgY2hhciwgOjpzdHJpbmcpOworI2Vu
ZGlmCisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKK0dURVNUX0lNUExfRk9STUFUX0Nf
U1RSSU5HX0FTX1NUUklOR18od2NoYXJfdCwgOjp3c3RyaW5nKTsKK0dURVNUX0lNUExfRk9STUFU
X0NfU1RSSU5HX0FTX1NUUklOR18oY29uc3Qgd2NoYXJfdCwgOjp3c3RyaW5nKTsKKyNlbmRpZgor
CisjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19B
U19TVFJJTkdfKHdjaGFyX3QsIDo6c3RkOjp3c3RyaW5nKTsKK0dURVNUX0lNUExfRk9STUFUX0Nf
U1RSSU5HX0FTX1NUUklOR18oY29uc3Qgd2NoYXJfdCwgOjpzdGQ6OndzdHJpbmcpOworI2VuZGlm
CisKKyN1bmRlZiBHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfCisKKy8vIEZv
cm1hdHMgYSBjb21wYXJpc29uIGFzc2VydGlvbiAoZS5nLiBBU1NFUlRfRVEsIEVYUEVDVF9MVCwg
YW5kIGV0YykKKy8vIG9wZXJhbmQgdG8gYmUgdXNlZCBpbiBhIGZhaWx1cmUgbWVzc2FnZS4gIFRo
ZSB0eXBlIChidXQgbm90IHZhbHVlKQorLy8gb2YgdGhlIG90aGVyIG9wZXJhbmQgbWF5IGFmZmVj
dCB0aGUgZm9ybWF0LiAgVGhpcyBhbGxvd3MgdXMgdG8KKy8vIHByaW50IGEgY2hhciogYXMgYSBy
YXcgcG9pbnRlciB3aGVuIGl0IGlzIGNvbXBhcmVkIGFnYWluc3QgYW5vdGhlcgorLy8gY2hhciog
b3Igdm9pZCosIGFuZCBwcmludCBpdCBhcyBhIEMgc3RyaW5nIHdoZW4gaXQgaXMgY29tcGFyZWQK
Ky8vIGFnYWluc3QgYW4gc3RkOjpzdHJpbmcgb2JqZWN0LCBmb3IgZXhhbXBsZS4KKy8vCisvLyBJ
TlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorc3RkOjpzdHJpbmcgRm9ybWF0Rm9y
Q29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKAorICAgIGNvbnN0IFQxJiB2YWx1ZSwgY29uc3QgVDIm
IC8qIG90aGVyX29wZXJhbmQgKi8pIHsKKyAgcmV0dXJuIEZvcm1hdEZvckNvbXBhcmlzb248VDEs
IFQyPjo6Rm9ybWF0KHZhbHVlKTsKK30KKworLy8gVW5pdmVyc2FsUHJpbnRlcjxUPjo6UHJpbnQo
dmFsdWUsIG9zdHJlYW1fcHRyKSBwcmludHMgdGhlIGdpdmVuCisvLyB2YWx1ZSB0byB0aGUgZ2l2
ZW4gb3N0cmVhbS4gIFRoZSBjYWxsZXIgbXVzdCBlbnN1cmUgdGhhdAorLy8gJ29zdHJlYW1fcHRy
JyBpcyBub3QgTlVMTCwgb3IgdGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZC4KKy8vCisvLyBXZSBk
ZWZpbmUgVW5pdmVyc2FsUHJpbnRlciBhcyBhIGNsYXNzIHRlbXBsYXRlIChhcyBvcHBvc2VkIHRv
IGEKKy8vIGZ1bmN0aW9uIHRlbXBsYXRlKSwgYXMgd2UgbmVlZCB0byBwYXJ0aWFsbHkgc3BlY2lh
bGl6ZSBpdCBmb3IKKy8vIHJlZmVyZW5jZSB0eXBlcywgd2hpY2ggY2Fubm90IGJlIGRvbmUgd2l0
aCBmdW5jdGlvbiB0ZW1wbGF0ZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFVuaXZl
cnNhbFByaW50ZXI7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBVbml2ZXJzYWxQcmlu
dChjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKKworZW51bSBEZWZhdWx0UHJp
bnRlclR5cGUgeworICBrUHJpbnRDb250YWluZXIsCisgIGtQcmludFBvaW50ZXIsCisgIGtQcmlu
dEZ1bmN0aW9uUG9pbnRlciwKKyAga1ByaW50T3RoZXIsCit9OwordGVtcGxhdGUgPERlZmF1bHRQ
cmludGVyVHlwZSB0eXBlPiBzdHJ1Y3QgV3JhcFByaW50ZXJUeXBlIHt9OworCisvLyBVc2VkIHRv
IHByaW50IGFuIFNUTC1zdHlsZSBjb250YWluZXIgd2hlbiB0aGUgdXNlciBkb2Vzbid0IGRlZmlu
ZQorLy8gYSBQcmludFRvKCkgZm9yIGl0LgordGVtcGxhdGUgPHR5cGVuYW1lIEM+Cit2b2lkIERl
ZmF1bHRQcmludFRvKFdyYXBQcmludGVyVHlwZTxrUHJpbnRDb250YWluZXI+IC8qIGR1bW15ICov
LAorICAgICAgICAgICAgICAgICAgICBjb25zdCBDJiBjb250YWluZXIsIDo6c3RkOjpvc3RyZWFt
KiBvcykgeworICBjb25zdCBzaXplX3Qga01heENvdW50ID0gMzI7ICAvLyBUaGUgbWF4aW11bSBu
dW1iZXIgb2YgZWxlbWVudHMgdG8gcHJpbnQuCisgICpvcyA8PCAneyc7CisgIHNpemVfdCBjb3Vu
dCA9IDA7CisgIGZvciAodHlwZW5hbWUgQzo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb250YWluZXIu
YmVnaW4oKTsKKyAgICAgICBpdCAhPSBjb250YWluZXIuZW5kKCk7ICsraXQsICsrY291bnQpIHsK
KyAgICBpZiAoY291bnQgPiAwKSB7CisgICAgICAqb3MgPDwgJywnOworICAgICAgaWYgKGNvdW50
ID09IGtNYXhDb3VudCkgeyAgLy8gRW5vdWdoIGhhcyBiZWVuIHByaW50ZWQuCisgICAgICAgICpv
cyA8PCAiIC4uLiI7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgICAqb3MgPDwg
JyAnOworICAgIC8vIFdlIGNhbm5vdCBjYWxsIFByaW50VG8oKml0LCBvcykgaGVyZSBhcyBQcmlu
dFRvKCkgZG9lc24ndAorICAgIC8vIGhhbmRsZSAqaXQgYmVpbmcgYSBuYXRpdmUgYXJyYXkuCisg
ICAgaW50ZXJuYWw6OlVuaXZlcnNhbFByaW50KCppdCwgb3MpOworICB9CisKKyAgaWYgKGNvdW50
ID4gMCkgeworICAgICpvcyA8PCAnICc7CisgIH0KKyAgKm9zIDw8ICd9JzsKK30KKworLy8gVXNl
ZCB0byBwcmludCBhIHBvaW50ZXIgdGhhdCBpcyBuZWl0aGVyIGEgY2hhciBwb2ludGVyIG5vciBh
IG1lbWJlcgorLy8gcG9pbnRlciwgd2hlbiB0aGUgdXNlciBkb2Vzbid0IGRlZmluZSBQcmludFRv
KCkgZm9yIGl0LiAgKEEgbWVtYmVyCisvLyB2YXJpYWJsZSBwb2ludGVyIG9yIG1lbWJlciBmdW5j
dGlvbiBwb2ludGVyIGRvZXNuJ3QgcmVhbGx5IHBvaW50IHRvCisvLyBhIGxvY2F0aW9uIGluIHRo
ZSBhZGRyZXNzIHNwYWNlLiAgVGhlaXIgcmVwcmVzZW50YXRpb24gaXMKKy8vIGltcGxlbWVudGF0
aW9uLWRlZmluZWQuICBUaGVyZWZvcmUgdGhleSB3aWxsIGJlIHByaW50ZWQgYXMgcmF3CisvLyBi
eXRlcy4pCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgRGVmYXVsdFByaW50VG8oV3JhcFBy
aW50ZXJUeXBlPGtQcmludFBvaW50ZXI+IC8qIGR1bW15ICovLAorICAgICAgICAgICAgICAgICAg
ICBUKiBwLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgaWYgKHAgPT0gTlVMTCkgeworICAgICpv
cyA8PCAiTlVMTCI7CisgIH0gZWxzZSB7CisgICAgLy8gVCBpcyBub3QgYSBmdW5jdGlvbiB0eXBl
LiAgV2UganVzdCBjYWxsIDw8IHRvIHByaW50IHAsCisgICAgLy8gcmVseWluZyBvbiBBREwgdG8g
cGljayB1cCB1c2VyLWRlZmluZWQgPDwgZm9yIHRoZWlyIHBvaW50ZXIKKyAgICAvLyB0eXBlcywg
aWYgYW55LgorICAgICpvcyA8PCBwOworICB9Cit9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3Zv
aWQgRGVmYXVsdFByaW50VG8oV3JhcFByaW50ZXJUeXBlPGtQcmludEZ1bmN0aW9uUG9pbnRlcj4g
LyogZHVtbXkgKi8sCisgICAgICAgICAgICAgICAgICAgIFQqIHAsIDo6c3RkOjpvc3RyZWFtKiBv
cykgeworICBpZiAocCA9PSBOVUxMKSB7CisgICAgKm9zIDw8ICJOVUxMIjsKKyAgfSBlbHNlIHsK
KyAgICAvLyBUIGlzIGEgZnVuY3Rpb24gdHlwZSwgc28gJypvcyA8PCBwJyBkb2Vzbid0IGRvIHdo
YXQgd2Ugd2FudAorICAgIC8vIChpdCBqdXN0IHByaW50cyBwIGFzIGJvb2wpLiAgV2Ugd2FudCB0
byBwcmludCBwIGFzIGEgY29uc3QKKyAgICAvLyB2b2lkKi4KKyAgICAqb3MgPDwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB2b2lkKj4ocCk7CisgIH0KK30KKworLy8gVXNlZCB0byBwcmludCBhIG5v
bi1jb250YWluZXIsIG5vbi1wb2ludGVyIHZhbHVlIHdoZW4gdGhlIHVzZXIKKy8vIGRvZXNuJ3Qg
ZGVmaW5lIFByaW50VG8oKSBmb3IgaXQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgRGVm
YXVsdFByaW50VG8oV3JhcFByaW50ZXJUeXBlPGtQcmludE90aGVyPiAvKiBkdW1teSAqLywKKyAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgewor
ICA6OnRlc3RpbmdfaW50ZXJuYWw6OkRlZmF1bHRQcmludE5vbkNvbnRhaW5lclRvKHZhbHVlLCBv
cyk7Cit9CisKKy8vIFByaW50cyB0aGUgZ2l2ZW4gdmFsdWUgdXNpbmcgdGhlIDw8IG9wZXJhdG9y
IGlmIGl0IGhhcyBvbmU7CisvLyBvdGhlcndpc2UgcHJpbnRzIHRoZSBieXRlcyBpbiBpdC4gIFRo
aXMgaXMgd2hhdAorLy8gVW5pdmVyc2FsUHJpbnRlcjxUPjo6UHJpbnQoKSBkb2VzIHdoZW4gUHJp
bnRUbygpIGlzIG5vdCBzcGVjaWFsaXplZAorLy8gb3Igb3ZlcmxvYWRlZCBmb3IgdHlwZSBULgor
Ly8KKy8vIEEgdXNlciBjYW4gb3ZlcnJpZGUgdGhpcyBiZWhhdmlvciBmb3IgYSBjbGFzcyB0eXBl
IEZvbyBieSBkZWZpbmluZworLy8gYW4gb3ZlcmxvYWQgb2YgUHJpbnRUbygpIGluIHRoZSBuYW1l
c3BhY2Ugd2hlcmUgRm9vIGlzIGRlZmluZWQuICBXZQorLy8gZ2l2ZSB0aGUgdXNlciB0aGlzIG9w
dGlvbiBhcyBzb21ldGltZXMgZGVmaW5pbmcgYSA8PCBvcGVyYXRvciBmb3IKKy8vIEZvbyBpcyBu
b3QgZGVzaXJhYmxlIChlLmcuIHRoZSBjb2Rpbmcgc3R5bGUgbWF5IHByZXZlbnQgZG9pbmcgaXQs
CisvLyBvciB0aGVyZSBpcyBhbHJlYWR5IGEgPDwgb3BlcmF0b3IgYnV0IGl0IGRvZXNuJ3QgZG8g
d2hhdCB0aGUgdXNlcgorLy8gd2FudHMpLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFBy
aW50VG8oY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAvLyBEZWZhdWx0
UHJpbnRUbygpIGlzIG92ZXJsb2FkZWQuICBUaGUgdHlwZSBvZiBpdHMgZmlyc3QgYXJndW1lbnQK
KyAgLy8gZGV0ZXJtaW5lcyB3aGljaCB2ZXJzaW9uIHdpbGwgYmUgcGlja2VkLgorICAvLworICAv
LyBOb3RlIHRoYXQgd2UgY2hlY2sgZm9yIGNvbnRhaW5lciB0eXBlcyBoZXJlLCBwcmlvciB0byB3
ZSBjaGVjaworICAvLyBmb3IgcHJvdG9jb2wgbWVzc2FnZSB0eXBlcyBpbiBvdXIgb3BlcmF0b3I8
PC4gIFRoZSByYXRpb25hbGUgaXM6CisgIC8vCisgIC8vIEZvciBwcm90b2NvbCBtZXNzYWdlcywg
d2Ugd2FudCB0byBnaXZlIHBlb3BsZSBhIGNoYW5jZSB0bworICAvLyBvdmVycmlkZSBHb29nbGUg
TW9jaydzIGZvcm1hdCBieSBkZWZpbmluZyBhIFByaW50VG8oKSBvcgorICAvLyBvcGVyYXRvcjw8
LiAgRm9yIFNUTCBjb250YWluZXJzLCBvdGhlciBmb3JtYXRzIGNhbiBiZQorICAvLyBpbmNvbXBh
dGlibGUgd2l0aCBHb29nbGUgTW9jaydzIGZvcm1hdCBmb3IgdGhlIGNvbnRhaW5lcgorICAvLyBl
bGVtZW50czsgdGhlcmVmb3JlIHdlIGNoZWNrIGZvciBjb250YWluZXIgdHlwZXMgaGVyZSB0byBl
bnN1cmUKKyAgLy8gdGhhdCBvdXIgZm9ybWF0IGlzIHVzZWQuCisgIC8vCisgIC8vIE5vdGUgdGhh
dCBNU1ZDIGFuZCBjbGFuZy1jbCBkbyBhbGxvdyBhbiBpbXBsaWNpdCBjb252ZXJzaW9uIGZyb20K
KyAgLy8gcG9pbnRlci10by1mdW5jdGlvbiB0byBwb2ludGVyLXRvLW9iamVjdCwgYnV0IGNsYW5n
LWNsIHdhcm5zIG9uIGl0LgorICAvLyBTbyBkb24ndCB1c2UgSW1wbGljaXRseUNvbnZlcnRpYmxl
IGlmIGl0IGNhbiBiZSBoZWxwZWQgc2luY2UgaXQgd2lsbAorICAvLyBjYXVzZSB0aGlzIHdhcm5p
bmcsIGFuZCB1c2UgYSBzZXBhcmF0ZSBvdmVybG9hZCBvZiBEZWZhdWx0UHJpbnRUbyBmb3IKKyAg
Ly8gZnVuY3Rpb24gcG9pbnRlcnMgc28gdGhhdCB0aGUgYCpvcyA8PCBwYCBpbiB0aGUgb2JqZWN0
IHBvaW50ZXIgb3ZlcmxvYWQKKyAgLy8gZG9lc24ndCBjYXVzZSB0aGF0IHdhcm5pbmcgZWl0aGVy
LgorICBEZWZhdWx0UHJpbnRUbygKKyAgICAgIFdyYXBQcmludGVyVHlwZSA8CisgICAgICAgICAg
ICAgICAgICAoc2l6ZW9mKElzQ29udGFpbmVyVGVzdDxUPigwKSkgPT0gc2l6ZW9mKElzQ29udGFp
bmVyKSkgJiYKKyAgICAgICAgICAgICAgIUlzUmVjdXJzaXZlQ29udGFpbmVyPFQ+Ojp2YWx1ZQor
ICAgICAgICAgID8ga1ByaW50Q29udGFpbmVyCisgICAgICAgICAgOiAhaXNfcG9pbnRlcjxUPjo6
dmFsdWUKKyAgICAgICAgICAgICAgICA/IGtQcmludE90aGVyCisjaWYgR1RFU1RfTEFOR19DWFgx
MQorICAgICAgICAgICAgICAgIDogc3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92
ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWUKKyNlbHNlCisgICAgICAgICAgICAgICAgOiAhaW50
ZXJuYWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTxULCBjb25zdCB2b2lkKj46OnZhbHVlCisjZW5k
aWYKKyAgICAgICAgICAgICAgICAgICAgICA/IGtQcmludEZ1bmN0aW9uUG9pbnRlcgorICAgICAg
ICAgICAgICAgICAgICAgIDoga1ByaW50UG9pbnRlciA+ICgpLAorICAgICAgdmFsdWUsIG9zKTsK
K30KKworLy8gVGhlIGZvbGxvd2luZyBsaXN0IG9mIFByaW50VG8oKSBvdmVybG9hZHMgdGVsbHMK
Ky8vIFVuaXZlcnNhbFByaW50ZXI8VD46OlByaW50KCkgaG93IHRvIHByaW50IHN0YW5kYXJkIHR5
cGVzIChidWlsdC1pbgorLy8gdHlwZXMsIHN0cmluZ3MsIHBsYWluIGFycmF5cywgYW5kIHBvaW50
ZXJzKS4KKworLy8gT3ZlcmxvYWRzIGZvciB2YXJpb3VzIGNoYXIgdHlwZXMuCitHVEVTVF9BUElf
IHZvaWQgUHJpbnRUbyh1bnNpZ25lZCBjaGFyIGMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7CitHVEVT
VF9BUElfIHZvaWQgUHJpbnRUbyhzaWduZWQgY2hhciBjLCA6OnN0ZDo6b3N0cmVhbSogb3MpOwor
aW5saW5lIHZvaWQgUHJpbnRUbyhjaGFyIGMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAvLyBX
aGVuIHByaW50aW5nIGEgcGxhaW4gY2hhciwgd2UgYWx3YXlzIHRyZWF0IGl0IGFzIHVuc2lnbmVk
LiAgVGhpcworICAvLyB3YXksIHRoZSBvdXRwdXQgd29uJ3QgYmUgYWZmZWN0ZWQgYnkgd2hldGhl
ciB0aGUgY29tcGlsZXIgdGhpbmtzCisgIC8vIGNoYXIgaXMgc2lnbmVkIG9yIG5vdC4KKyAgUHJp
bnRUbyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKSwgb3MpOworfQorCisvLyBPdmVybG9h
ZHMgZm9yIG90aGVyIHNpbXBsZSBidWlsdC1pbiB0eXBlcy4KK2lubGluZSB2b2lkIFByaW50VG8o
Ym9vbCB4LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8ICh4ID8gInRydWUiIDogImZh
bHNlIik7Cit9CisKKy8vIE92ZXJsb2FkIGZvciB3Y2hhcl90IHR5cGUuCisvLyBQcmludHMgYSB3
Y2hhcl90IGFzIGEgc3ltYm9sIGlmIGl0IGlzIHByaW50YWJsZSBvciBhcyBpdHMgaW50ZXJuYWwK
Ky8vIGNvZGUgb3RoZXJ3aXNlIGFuZCBhbHNvIGFzIGl0cyBkZWNpbWFsIGNvZGUgKGV4Y2VwdCBm
b3IgTCdcMCcpLgorLy8gVGhlIEwnXDAnIGNoYXIgaXMgcHJpbnRlZCBhcyAiTCdcXDAnIi4gVGhl
IGRlY2ltYWwgY29kZSBpcyBwcmludGVkCisvLyBhcyBzaWduZWQgaW50ZWdlciB3aGVuIHdjaGFy
X3QgaXMgaW1wbGVtZW50ZWQgYnkgdGhlIGNvbXBpbGVyCisvLyBhcyBhIHNpZ25lZCB0eXBlIGFu
ZCBpcyBwcmludGVkIGFzIGFuIHVuc2lnbmVkIGludGVnZXIgd2hlbiB3Y2hhcl90CisvLyBpcyBp
bXBsZW1lbnRlZCBhcyBhbiB1bnNpZ25lZCB0eXBlLgorR1RFU1RfQVBJXyB2b2lkIFByaW50VG8o
d2NoYXJfdCB3YywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKKworLy8gT3ZlcmxvYWRzIGZvciBDIHN0
cmluZ3MuCitHVEVTVF9BUElfIHZvaWQgUHJpbnRUbyhjb25zdCBjaGFyKiBzLCA6OnN0ZDo6b3N0
cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhjaGFyKiBzLCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgUHJpbnRUbyhJbXBsaWNpdENhc3RfPGNvbnN0IGNoYXIqPihzKSwgb3MpOworfQor
CisvLyBzaWduZWQvdW5zaWduZWQgY2hhciBpcyBvZnRlbiB1c2VkIGZvciByZXByZXNlbnRpbmcg
YmluYXJ5IGRhdGEsIHNvCisvLyB3ZSBwcmludCBwb2ludGVycyB0byBpdCBhcyB2b2lkKiB0byBi
ZSBzYWZlLgoraW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCBzaWduZWQgY2hhciogcywgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocyks
IG9zKTsKK30KK2lubGluZSB2b2lkIFByaW50VG8oc2lnbmVkIGNoYXIqIHMsIDo6c3RkOjpvc3Ry
ZWFtKiBvcykgeworICBQcmludFRvKEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMpLCBvcyk7
Cit9CitpbmxpbmUgdm9pZCBQcmludFRvKGNvbnN0IHVuc2lnbmVkIGNoYXIqIHMsIDo6c3RkOjpv
c3RyZWFtKiBvcykgeworICBQcmludFRvKEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMpLCBv
cyk7Cit9CitpbmxpbmUgdm9pZCBQcmludFRvKHVuc2lnbmVkIGNoYXIqIHMsIDo6c3RkOjpvc3Ry
ZWFtKiBvcykgeworICBQcmludFRvKEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMpLCBvcyk7
Cit9CisKKy8vIE1TVkMgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gZGVmaW5lIHdjaGFyX3QgYXMgYSB0
eXBlZGVmIG9mIHVuc2lnbmVkCisvLyBzaG9ydC4gIEl0IGRlZmluZXMgX05BVElWRV9XQ0hBUl9U
X0RFRklORUQgd2hlbiB3Y2hhcl90IGlzIGEgbmF0aXZlCisvLyB0eXBlLiAgV2hlbiB3Y2hhcl90
IGlzIGEgdHlwZWRlZiwgZGVmaW5pbmcgYW4gb3ZlcmxvYWQgZm9yIGNvbnN0CisvLyB3Y2hhcl90
KiB3b3VsZCBjYXVzZSB1bnNpZ25lZCBzaG9ydCogYmUgcHJpbnRlZCBhcyBhIHdpZGUgc3RyaW5n
LAorLy8gcG9zc2libHkgY2F1c2luZyBpbnZhbGlkIG1lbW9yeSBhY2Nlc3Nlcy4KKyNpZiAhZGVm
aW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkKKy8vIE92
ZXJsb2FkcyBmb3Igd2lkZSBDIHN0cmluZ3MKK0dURVNUX0FQSV8gdm9pZCBQcmludFRvKGNvbnN0
IHdjaGFyX3QqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRvKHdj
aGFyX3QqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFRvKEltcGxpY2l0Q2FzdF88
Y29uc3Qgd2NoYXJfdCo+KHMpLCBvcyk7Cit9CisjZW5kaWYKKworLy8gT3ZlcmxvYWQgZm9yIEMg
YXJyYXlzLiAgTXVsdGktZGltZW5zaW9uYWwgYXJyYXlzIGFyZSBwcmludGVkCisvLyBwcm9wZXJs
eS4KKworLy8gUHJpbnRzIHRoZSBnaXZlbiBudW1iZXIgb2YgZWxlbWVudHMgaW4gYW4gYXJyYXks
IHdpdGhvdXQgcHJpbnRpbmcKKy8vIHRoZSBjdXJseSBicmFjZXMuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK3ZvaWQgUHJpbnRSYXdBcnJheVRvKGNvbnN0IFQgYVtdLCBzaXplX3QgY291bnQsIDo6
c3RkOjpvc3RyZWFtKiBvcykgeworICBVbml2ZXJzYWxQcmludChhWzBdLCBvcyk7CisgIGZvciAo
c2l6ZV90IGkgPSAxOyBpICE9IGNvdW50OyBpKyspIHsKKyAgICAqb3MgPDwgIiwgIjsKKyAgICBV
bml2ZXJzYWxQcmludChhW2ldLCBvcyk7CisgIH0KK30KKworLy8gT3ZlcmxvYWRzIGZvciA6OnN0
cmluZyBhbmQgOjpzdGQ6OnN0cmluZy4KKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworR1RF
U1RfQVBJXyB2b2lkIFByaW50U3RyaW5nVG8oY29uc3QgOjpzdHJpbmcmcywgOjpzdGQ6Om9zdHJl
YW0qIG9zKTsKK2lubGluZSB2b2lkIFByaW50VG8oY29uc3QgOjpzdHJpbmcmIHMsIDo6c3RkOjpv
c3RyZWFtKiBvcykgeworICBQcmludFN0cmluZ1RvKHMsIG9zKTsKK30KKyNlbmRpZiAgLy8gR1RF
U1RfSEFTX0dMT0JBTF9TVFJJTkcKKworR1RFU1RfQVBJXyB2b2lkIFByaW50U3RyaW5nVG8oY29u
c3QgOjpzdGQ6OnN0cmluZyZzLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJp
bnRUbyhjb25zdCA6OnN0ZDo6c3RyaW5nJiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJp
bnRTdHJpbmdUbyhzLCBvcyk7Cit9CisKKy8vIE92ZXJsb2FkcyBmb3IgOjp3c3RyaW5nIGFuZCA6
OnN0ZDo6d3N0cmluZy4KKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKK0dURVNUX0FQSV8g
dm9pZCBQcmludFdpZGVTdHJpbmdUbyhjb25zdCA6OndzdHJpbmcmcywgOjpzdGQ6Om9zdHJlYW0q
IG9zKTsKK2lubGluZSB2b2lkIFByaW50VG8oY29uc3QgOjp3c3RyaW5nJiBzLCA6OnN0ZDo6b3N0
cmVhbSogb3MpIHsKKyAgUHJpbnRXaWRlU3RyaW5nVG8ocywgb3MpOworfQorI2VuZGlmICAvLyBH
VEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORworR1RF
U1RfQVBJXyB2b2lkIFByaW50V2lkZVN0cmluZ1RvKGNvbnN0IDo6c3RkOjp3c3RyaW5nJnMsIDo6
c3RkOjpvc3RyZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp3c3Ry
aW5nJiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRXaWRlU3RyaW5nVG8ocywgb3Mp
OworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKKworI2lmIEdURVNUX0hBU19B
QlNMCisvLyBPdmVybG9hZCBmb3IgYWJzbDo6c3RyaW5nX3ZpZXcuCitpbmxpbmUgdm9pZCBQcmlu
dFRvKGFic2w6OnN0cmluZ192aWV3IHNwLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRU
byg6OnN0ZDo6c3RyaW5nKHNwKSwgb3MpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfQUJTTAor
CisjaWYgR1RFU1RfTEFOR19DWFgxMQoraW5saW5lIHZvaWQgUHJpbnRUbyhzdGQ6Om51bGxwdHJf
dCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7ICpvcyA8PCAiKG51bGxwdHIpIjsgfQorI2VuZGlmICAv
LyBHVEVTVF9MQU5HX0NYWDExCisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFIHx8IEdURVNUX0hB
U19TVERfVFVQTEVfCisvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHByaW50aW5nIGEgdHVwbGUuICBU
IG11c3QgYmUgaW5zdGFudGlhdGVkIHdpdGgKKy8vIGEgdHVwbGUgdHlwZS4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgordm9pZCBQcmludFR1cGxlVG8oY29uc3QgVCYgdCwgOjpzdGQ6Om9zdHJlYW0q
IG9zKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRSB8fCBHVEVTVF9IQVNfU1REX1RV
UExFXworCisjaWYgR1RFU1RfSEFTX1RSMV9UVVBMRQorLy8gT3ZlcmxvYWQgZm9yIDo6c3RkOjp0
cjE6OnR1cGxlLiAgTmVlZGVkIGZvciBwcmludGluZyBmdW5jdGlvbiBhcmd1bWVudHMsCisvLyB3
aGljaCBhcmUgcGFja2VkIGFzIHR1cGxlcy4KKworLy8gT3ZlcmxvYWRlZCBQcmludFRvKCkgZm9y
IHR1cGxlcyBvZiB2YXJpb3VzIGFyaXRpZXMuICBXZSBzdXBwb3J0CisvLyB0dXBsZXMgb2YgdXAt
dG8gMTAgZmllbGRzLiAgVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbiB3b3JrcworLy8gcmVn
YXJkbGVzcyBvZiB3aGV0aGVyIHRyMTo6dHVwbGUgaXMgaW1wbGVtZW50ZWQgdXNpbmcgdGhlCisv
LyBub24tc3RhbmRhcmQgdmFyaWFkaWMgdGVtcGxhdGUgZmVhdHVyZSBvciBub3QuCisKK2lubGlu
ZSB2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8PiYgdCwgOjpzdGQ6Om9zdHJl
YW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUMT4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMT4mIHQsIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgeworICBQcmludFR1cGxlVG8odCwgb3MpOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6
OnR1cGxlPFQxLCBUMj4mIHQsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFR1cGxlVG8o
dCwgb3MpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMz4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzPiYg
dCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
ND4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4m
IHQsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFR1cGxlVG8odCwgb3MpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUg
VDQsIHR5cGVuYW1lIFQ1Pgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNT4mIHQsCisgICAgICAgICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7
CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgICAg
ICAgdHlwZW5hbWUgVDY+Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNj4mIHQsCisgICAgICAgICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9z
KSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAg
ICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Pgordm9pZCBQcmludFRvKGNvbnN0IDo6c3Rk
Ojp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PiYgdCwKKyAgICAgICAgICAg
ICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0
LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVu
YW1lIFQ4Pgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOD4mIHQsCisgICAgICAgICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9z
KSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAg
ICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDk+
Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4LCBUOT4mIHQsCisgICAgICAgICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7
CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCisgICAgICAg
ICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5
cGVuYW1lIFQxMD4KK3ZvaWQgUHJpbnRUbygKKyAgICBjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTA+JiB0LAorICAgIDo6c3RkOjpv
c3RyZWFtKiBvcykgeworICBQcmludFR1cGxlVG8odCwgb3MpOworfQorI2VuZGlmICAvLyBHVEVT
VF9IQVNfVFIxX1RVUExFCisKKyNpZiBHVEVTVF9IQVNfU1REX1RVUExFXwordGVtcGxhdGUgPHR5
cGVuYW1lLi4uIFR5cGVzPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0dXBsZTxUeXBlcy4u
Lj4mIHQsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFR1cGxlVG8odCwgb3MpOworfQor
I2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1RVUExFXworCisvLyBPdmVybG9hZCBmb3Igc3RkOjpw
YWlyLgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgUHJpbnRUbyhj
b25zdCA6OnN0ZDo6cGFpcjxUMSwgVDI+JiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Cisg
ICpvcyA8PCAnKCc7CisgIC8vIFdlIGNhbm5vdCB1c2UgVW5pdmVyc2FsUHJpbnQodmFsdWUuZmly
c3QsIG9zKSBoZXJlLCBhcyBUMSBtYXkgYmUKKyAgLy8gYSByZWZlcmVuY2UgdHlwZS4gIFRoZSBz
YW1lIGZvciBwcmludGluZyB2YWx1ZS5zZWNvbmQuCisgIFVuaXZlcnNhbFByaW50ZXI8VDE+OjpQ
cmludCh2YWx1ZS5maXJzdCwgb3MpOworICAqb3MgPDwgIiwgIjsKKyAgVW5pdmVyc2FsUHJpbnRl
cjxUMj46OlByaW50KHZhbHVlLnNlY29uZCwgb3MpOworICAqb3MgPDwgJyknOworfQorCisvLyBJ
bXBsZW1lbnRzIHByaW50aW5nIGEgbm9uLXJlZmVyZW5jZSB0eXBlIFQgYnkgbGV0dGluZyB0aGUg
Y29tcGlsZXIKKy8vIHBpY2sgdGhlIHJpZ2h0IG92ZXJsb2FkIG9mIFByaW50VG8oKSBmb3IgVC4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVW5pdmVyc2FsUHJpbnRlciB7CisgcHVibGlj
OgorICAvLyBNU1ZDIHdhcm5zIGFib3V0IGFkZGluZyBjb25zdCB0byBhIGZ1bmN0aW9uIHR5cGUs
IHNvIHdlIHdhbnQgdG8KKyAgLy8gZGlzYWJsZSB0aGUgd2FybmluZy4KKyAgR1RFU1RfRElTQUJM
RV9NU0NfV0FSTklOR1NfUFVTSF8oNDE4MCkKKworICAvLyBOb3RlOiB3ZSBkZWxpYmVyYXRlbHkg
ZG9uJ3QgY2FsbCB0aGlzIFByaW50VG8oKSwgYXMgdGhhdCBuYW1lCisgIC8vIGNvbmZsaWN0cyB3
aXRoIDo6dGVzdGluZzo6aW50ZXJuYWw6OlByaW50VG8gaW4gdGhlIGJvZHkgb2YgdGhlCisgIC8v
IGZ1bmN0aW9uLgorICBzdGF0aWMgdm9pZCBQcmludChjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgICAgLy8gQnkgZGVmYXVsdCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UHJp
bnRUbygpIGlzIHVzZWQgZm9yIHByaW50aW5nCisgICAgLy8gdGhlIHZhbHVlLgorICAgIC8vCisg
ICAgLy8gVGhhbmtzIHRvIEtvZW5pZyBsb29rLXVwLCBpZiBUIGlzIGEgY2xhc3MgYW5kIGhhcyBp
dHMgb3duCisgICAgLy8gUHJpbnRUbygpIGZ1bmN0aW9uIGRlZmluZWQgaW4gaXRzIG5hbWVzcGFj
ZSwgdGhhdCBmdW5jdGlvbiB3aWxsCisgICAgLy8gYmUgdmlzaWJsZSBoZXJlLiAgU2luY2UgaXQg
aXMgbW9yZSBzcGVjaWZpYyB0aGFuIHRoZSBnZW5lcmljIG9uZXMKKyAgICAvLyBpbiA6OnRlc3Rp
bmc6OmludGVybmFsLCBpdCB3aWxsIGJlIHBpY2tlZCBieSB0aGUgY29tcGlsZXIgaW4gdGhlCisg
ICAgLy8gZm9sbG93aW5nIHN0YXRlbWVudCAtIGV4YWN0bHkgd2hhdCB3ZSB3YW50LgorICAgIFBy
aW50VG8odmFsdWUsIG9zKTsKKyAgfQorCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BP
UF8oKQorfTsKKworI2lmIEdURVNUX0hBU19BQlNMCisKKy8vIFByaW50ZXIgZm9yIGFic2w6Om9w
dGlvbmFsCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVW5pdmVyc2FsUHJpbnRlcjw6
OmFic2w6Om9wdGlvbmFsPFQ+PiB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBQcmludChjb25z
dCA6OmFic2w6Om9wdGlvbmFsPFQ+JiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAg
Km9zIDw8ICcoJzsKKyAgICBpZiAoIXZhbHVlKSB7CisgICAgICAqb3MgPDwgIm51bGxvcHQiOwor
ICAgIH0gZWxzZSB7CisgICAgICBVbml2ZXJzYWxQcmludCgqdmFsdWUsIG9zKTsKKyAgICB9Cisg
ICAgKm9zIDw8ICcpJzsKKyAgfQorfTsKKworLy8gUHJpbnRlciBmb3IgYWJzbDo6dmFyaWFudAor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVD4KK2NsYXNzIFVuaXZlcnNhbFByaW50ZXI8OjphYnNs
Ojp2YXJpYW50PFQuLi4+PiB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBQcmludChjb25zdCA6
OmFic2w6OnZhcmlhbnQ8VC4uLj4mIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICAq
b3MgPDwgJygnOworICAgIGFic2w6OnZpc2l0KFZpc2l0b3J7b3N9LCB2YWx1ZSk7CisgICAgKm9z
IDw8ICcpJzsKKyAgfQorCisgcHJpdmF0ZToKKyAgc3RydWN0IFZpc2l0b3IgeworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBVPgorICAgIHZvaWQgb3BlcmF0b3IoKShjb25zdCBVJiB1KSBjb25zdCB7
CisgICAgICAqb3MgPDwgIiciIDw8IEdldFR5cGVOYW1lPFU+KCkgPDwgIicgd2l0aCB2YWx1ZSAi
OworICAgICAgVW5pdmVyc2FsUHJpbnQodSwgb3MpOworICAgIH0KKyAgICA6OnN0ZDo6b3N0cmVh
bSogb3M7CisgIH07Cit9OworCisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCisKKy8vIFVuaXZl
cnNhbFByaW50QXJyYXkoYmVnaW4sIGxlbiwgb3MpIHByaW50cyBhbiBhcnJheSBvZiAnbGVuJwor
Ly8gZWxlbWVudHMsIHN0YXJ0aW5nIGF0IGFkZHJlc3MgJ2JlZ2luJy4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgordm9pZCBVbml2ZXJzYWxQcmludEFycmF5KGNvbnN0IFQqIGJlZ2luLCBzaXplX3Qg
bGVuLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgaWYgKGxlbiA9PSAwKSB7CisgICAgKm9zIDw8
ICJ7fSI7CisgIH0gZWxzZSB7CisgICAgKm9zIDw8ICJ7ICI7CisgICAgY29uc3Qgc2l6ZV90IGtU
aHJlc2hvbGQgPSAxODsKKyAgICBjb25zdCBzaXplX3Qga0NodW5rU2l6ZSA9IDg7CisgICAgLy8g
SWYgdGhlIGFycmF5IGhhcyBtb3JlIHRoYW4ga1RocmVzaG9sZCBlbGVtZW50cywgd2UnbGwgaGF2
ZSB0bworICAgIC8vIG9taXQgc29tZSBkZXRhaWxzIGJ5IHByaW50aW5nIG9ubHkgdGhlIGZpcnN0
IGFuZCB0aGUgbGFzdAorICAgIC8vIGtDaHVua1NpemUgZWxlbWVudHMuCisgICAgLy8gRklYTUU6
IGxldCB0aGUgdXNlciBjb250cm9sIHRoZSB0aHJlc2hvbGQgdXNpbmcgYSBmbGFnLgorICAgIGlm
IChsZW4gPD0ga1RocmVzaG9sZCkgeworICAgICAgUHJpbnRSYXdBcnJheVRvKGJlZ2luLCBsZW4s
IG9zKTsKKyAgICB9IGVsc2UgeworICAgICAgUHJpbnRSYXdBcnJheVRvKGJlZ2luLCBrQ2h1bmtT
aXplLCBvcyk7CisgICAgICAqb3MgPDwgIiwgLi4uLCAiOworICAgICAgUHJpbnRSYXdBcnJheVRv
KGJlZ2luICsgbGVuIC0ga0NodW5rU2l6ZSwga0NodW5rU2l6ZSwgb3MpOworICAgIH0KKyAgICAq
b3MgPDwgIiB9IjsKKyAgfQorfQorLy8gVGhpcyBvdmVybG9hZCBwcmludHMgYSAoY29uc3QpIGNo
YXIgYXJyYXkgY29tcGFjdGx5LgorR1RFU1RfQVBJXyB2b2lkIFVuaXZlcnNhbFByaW50QXJyYXko
CisgICAgY29uc3QgY2hhciogYmVnaW4sIHNpemVfdCBsZW4sIDo6c3RkOjpvc3RyZWFtKiBvcyk7
CisKKy8vIFRoaXMgb3ZlcmxvYWQgcHJpbnRzIGEgKGNvbnN0KSB3Y2hhcl90IGFycmF5IGNvbXBh
Y3RseS4KK0dURVNUX0FQSV8gdm9pZCBVbml2ZXJzYWxQcmludEFycmF5KAorICAgIGNvbnN0IHdj
aGFyX3QqIGJlZ2luLCBzaXplX3QgbGVuLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworCisvLyBJbXBs
ZW1lbnRzIHByaW50aW5nIGFuIGFycmF5IHR5cGUgVFtOXS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCBzaXplX3QgTj4KK2NsYXNzIFVuaXZlcnNhbFByaW50ZXI8VFtOXT4geworIHB1YmxpYzoKKyAg
Ly8gUHJpbnRzIHRoZSBnaXZlbiBhcnJheSwgb21pdHRpbmcgc29tZSBlbGVtZW50cyB3aGVuIHRo
ZXJlIGFyZSB0b28KKyAgLy8gbWFueS4KKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCAoJmEp
W05dLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBVbml2ZXJzYWxQcmludEFycmF5KGEsIE4s
IG9zKTsKKyAgfQorfTsKKworLy8gSW1wbGVtZW50cyBwcmludGluZyBhIHJlZmVyZW5jZSB0eXBl
IFQmLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbml2ZXJzYWxQcmludGVyPFQmPiB7
CisgcHVibGljOgorICAvLyBNU1ZDIHdhcm5zIGFib3V0IGFkZGluZyBjb25zdCB0byBhIGZ1bmN0
aW9uIHR5cGUsIHNvIHdlIHdhbnQgdG8KKyAgLy8gZGlzYWJsZSB0aGUgd2FybmluZy4KKyAgR1RF
U1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDE4MCkKKworICBzdGF0aWMgdm9pZCBQcmlu
dChjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgLy8gUHJpbnRzIHRo
ZSBhZGRyZXNzIG9mIHRoZSB2YWx1ZS4gIFdlIHVzZSByZWludGVycHJldF9jYXN0IGhlcmUKKyAg
ICAvLyBhcyBzdGF0aWNfY2FzdCBkb2Vzbid0IGNvbXBpbGUgd2hlbiBUIGlzIGEgZnVuY3Rpb24g
dHlwZS4KKyAgICAqb3MgPDwgIkAiIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KCZ2
YWx1ZSkgPDwgIiAiOworCisgICAgLy8gVGhlbiBwcmludHMgdGhlIHZhbHVlIGl0c2VsZi4KKyAg
ICBVbml2ZXJzYWxQcmludCh2YWx1ZSwgb3MpOworICB9CisKKyAgR1RFU1RfRElTQUJMRV9NU0Nf
V0FSTklOR1NfUE9QXygpCit9OworCisvLyBQcmludHMgYSB2YWx1ZSB0ZXJzZWx5OiBmb3IgYSBy
ZWZlcmVuY2UgdHlwZSwgdGhlIHJlZmVyZW5jZWQgdmFsdWUKKy8vIChidXQgbm90IHRoZSBhZGRy
ZXNzKSBpcyBwcmludGVkOyBmb3IgYSAoY29uc3QpIGNoYXIgcG9pbnRlciwgdGhlCisvLyBOVUwt
dGVybWluYXRlZCBzdHJpbmcgKGJ1dCBub3QgdGhlIHBvaW50ZXIpIGlzIHByaW50ZWQuCisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVW5pdmVyc2FsVGVyc2VQcmludGVyIHsKKyBwdWJs
aWM6CisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgICBVbml2ZXJzYWxQcmludCh2YWx1ZSwgb3MpOworICB9Cit9OwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitjbGFzcyBVbml2ZXJzYWxUZXJzZVByaW50ZXI8VCY+IHsKKyBwdWJsaWM6
CisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3Mp
IHsKKyAgICBVbml2ZXJzYWxQcmludCh2YWx1ZSwgb3MpOworICB9Cit9OwordGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHNpemVfdCBOPgorY2xhc3MgVW5pdmVyc2FsVGVyc2VQcmludGVyPFRbTl0+IHsK
KyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQgKCZ2YWx1ZSlbTl0sIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgeworICAgIFVuaXZlcnNhbFByaW50ZXI8VFtOXT46OlByaW50KHZhbHVl
LCBvcyk7CisgIH0KK307Cit0ZW1wbGF0ZSA8PgorY2xhc3MgVW5pdmVyc2FsVGVyc2VQcmludGVy
PGNvbnN0IGNoYXIqPiB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBQcmludChjb25zdCBjaGFy
KiBzdHIsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIGlmIChzdHIgPT0gTlVMTCkgeworICAg
ICAgKm9zIDw8ICJOVUxMIjsKKyAgICB9IGVsc2UgeworICAgICAgVW5pdmVyc2FsUHJpbnQoc3Rk
OjpzdHJpbmcoc3RyKSwgb3MpOworICAgIH0KKyAgfQorfTsKK3RlbXBsYXRlIDw+CitjbGFzcyBV
bml2ZXJzYWxUZXJzZVByaW50ZXI8Y2hhcio+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFBy
aW50KGNoYXIqIHN0ciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVW5pdmVyc2FsVGVyc2VQ
cmludGVyPGNvbnN0IGNoYXIqPjo6UHJpbnQoc3RyLCBvcyk7CisgIH0KK307CisKKyNpZiBHVEVT
VF9IQVNfU1REX1dTVFJJTkcKK3RlbXBsYXRlIDw+CitjbGFzcyBVbml2ZXJzYWxUZXJzZVByaW50
ZXI8Y29uc3Qgd2NoYXJfdCo+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0
IHdjaGFyX3QqIHN0ciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgaWYgKHN0ciA9PSBOVUxM
KSB7CisgICAgICAqb3MgPDwgIk5VTEwiOworICAgIH0gZWxzZSB7CisgICAgICBVbml2ZXJzYWxQ
cmludCg6OnN0ZDo6d3N0cmluZyhzdHIpLCBvcyk7CisgICAgfQorICB9Cit9OworI2VuZGlmCisK
K3RlbXBsYXRlIDw+CitjbGFzcyBVbml2ZXJzYWxUZXJzZVByaW50ZXI8d2NoYXJfdCo+IHsKKyBw
dWJsaWM6CisgIHN0YXRpYyB2b2lkIFByaW50KHdjaGFyX3QqIHN0ciwgOjpzdGQ6Om9zdHJlYW0q
IG9zKSB7CisgICAgVW5pdmVyc2FsVGVyc2VQcmludGVyPGNvbnN0IHdjaGFyX3QqPjo6UHJpbnQo
c3RyLCBvcyk7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBVbml2ZXJz
YWxUZXJzZVByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgVW5p
dmVyc2FsVGVyc2VQcmludGVyPFQ+OjpQcmludCh2YWx1ZSwgb3MpOworfQorCisvLyBQcmludHMg
YSB2YWx1ZSB1c2luZyB0aGUgdHlwZSBpbmZlcnJlZCBieSB0aGUgY29tcGlsZXIuICBUaGUKKy8v
IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIGFuZCBVbml2ZXJzYWxUZXJzZVByaW50KCkgaXMgdGhh
dCBmb3IgYQorLy8gKGNvbnN0KSBjaGFyIHBvaW50ZXIsIHRoaXMgcHJpbnRzIGJvdGggdGhlIHBv
aW50ZXIgYW5kIHRoZQorLy8gTlVMLXRlcm1pbmF0ZWQgc3RyaW5nLgordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgLy8gQSB3b3JrYXJvbmQgZm9yIHRoZSBidWcgaW4gVkMrKyA3LjEgdGhhdCBw
cmV2ZW50cyB1cyBmcm9tIGluc3RhbnRpYXRpbmcKKyAgLy8gVW5pdmVyc2FsUHJpbnRlciB3aXRo
IFQgZGlyZWN0bHkuCisgIHR5cGVkZWYgVCBUMTsKKyAgVW5pdmVyc2FsUHJpbnRlcjxUMT46OlBy
aW50KHZhbHVlLCBvcyk7Cit9CisKK3R5cGVkZWYgOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmlu
Zz4gU3RyaW5nczsKKworLy8gVHVwbGVQb2xpY3k8VHVwbGVUPiBtdXN0IHByb3ZpZGU6CisvLyAt
IHR1cGxlX3NpemUKKy8vICAgICBzaXplIG9mIHR1cGxlIFR1cGxlVC4KKy8vIC0gZ2V0PHNpemVf
dCBJPihjb25zdCBUdXBsZVQmIHQpCisvLyAgICAgc3RhdGljIGZ1bmN0aW9uIGV4dHJhY3Rpbmcg
ZWxlbWVudCBJIG9mIHR1cGxlIFR1cGxlVC4KKy8vIC0gdHVwbGVfZWxlbWVudDxzaXplX3QgST46
OnR5cGUKKy8vICAgICB0eXBlIG9mIGVsZW1lbnQgSSBvZiB0dXBsZSBUdXBsZVQuCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVHVwbGVUPgorc3RydWN0IFR1cGxlUG9saWN5OworCisjaWYgR1RFU1RfSEFT
X1RSMV9UVVBMRQordGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlVD4KK3N0cnVjdCBUdXBsZVBvbGlj
eSB7CisgIHR5cGVkZWYgVHVwbGVUIFR1cGxlOworICBzdGF0aWMgY29uc3Qgc2l6ZV90IHR1cGxl
X3NpemUgPSA6OnN0ZDo6dHIxOjp0dXBsZV9zaXplPFR1cGxlPjo6dmFsdWU7CisKKyAgdGVtcGxh
dGUgPHNpemVfdCBJPgorICBzdHJ1Y3QgdHVwbGVfZWxlbWVudCA6IDo6c3RkOjp0cjE6OnR1cGxl
X2VsZW1lbnQ8c3RhdGljX2Nhc3Q8aW50PihJKSwgVHVwbGU+IHsKKyAgfTsKKworICB0ZW1wbGF0
ZSA8c2l6ZV90IEk+CisgIHN0YXRpYyB0eXBlbmFtZSBBZGRSZWZlcmVuY2U8Y29uc3QgdHlwZW5h
bWUgOjpzdGQ6OnRyMTo6dHVwbGVfZWxlbWVudDwKKyAgICAgIHN0YXRpY19jYXN0PGludD4oSSks
IFR1cGxlPjo6dHlwZT46OnR5cGUKKyAgZ2V0KGNvbnN0IFR1cGxlJiB0dXBsZSkgeworICAgIHJl
dHVybiA6OnN0ZDo6dHIxOjpnZXQ8ST4odHVwbGUpOworICB9Cit9OwordGVtcGxhdGUgPHR5cGVu
YW1lIFR1cGxlVD4KK2NvbnN0IHNpemVfdCBUdXBsZVBvbGljeTxUdXBsZVQ+Ojp0dXBsZV9zaXpl
OworI2VuZGlmICAvLyBHVEVTVF9IQVNfVFIxX1RVUExFCisKKyNpZiBHVEVTVF9IQVNfU1REX1RV
UExFXwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFR5cGVzPgorc3RydWN0IFR1cGxlUG9saWN5PCA6
OnN0ZDo6dHVwbGU8VHlwZXMuLi4+ID4geworICB0eXBlZGVmIDo6c3RkOjp0dXBsZTxUeXBlcy4u
Lj4gVHVwbGU7CisgIHN0YXRpYyBjb25zdCBzaXplX3QgdHVwbGVfc2l6ZSA9IDo6c3RkOjp0dXBs
ZV9zaXplPFR1cGxlPjo6dmFsdWU7CisKKyAgdGVtcGxhdGUgPHNpemVfdCBJPgorICBzdHJ1Y3Qg
dHVwbGVfZWxlbWVudCA6IDo6c3RkOjp0dXBsZV9lbGVtZW50PEksIFR1cGxlPiB7fTsKKworICB0
ZW1wbGF0ZSA8c2l6ZV90IEk+CisgIHN0YXRpYyBjb25zdCB0eXBlbmFtZSA6OnN0ZDo6dHVwbGVf
ZWxlbWVudDxJLCBUdXBsZT46OnR5cGUmIGdldCgKKyAgICAgIGNvbnN0IFR1cGxlJiB0dXBsZSkg
eworICAgIHJldHVybiA6OnN0ZDo6Z2V0PEk+KHR1cGxlKTsKKyAgfQorfTsKK3RlbXBsYXRlIDx0
eXBlbmFtZS4uLiBUeXBlcz4KK2NvbnN0IHNpemVfdCBUdXBsZVBvbGljeTwgOjpzdGQ6OnR1cGxl
PFR5cGVzLi4uPiA+Ojp0dXBsZV9zaXplOworI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1RVUExF
XworCisjaWYgR1RFU1RfSEFTX1RSMV9UVVBMRSB8fCBHVEVTVF9IQVNfU1REX1RVUExFXworLy8g
VGhpcyBoZWxwZXIgdGVtcGxhdGUgYWxsb3dzIFByaW50VG8oKSBmb3IgdHVwbGVzIGFuZAorLy8g
VW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKCkgdG8gYmUgZGVmaW5lZCBi
eQorLy8gaW5kdWN0aW9uIG9uIHRoZSBudW1iZXIgb2YgdHVwbGUgZmllbGRzLiAgVGhlIGlkZWEg
aXMgdGhhdAorLy8gVHVwbGVQcmVmaXhQcmludGVyPE4+OjpQcmludFByZWZpeFRvKHQsIG9zKSBw
cmludHMgdGhlIGZpcnN0IE4KKy8vIGZpZWxkcyBpbiB0dXBsZSB0LCBhbmQgY2FuIGJlIGRlZmlu
ZWQgaW4gdGVybXMgb2YKKy8vIFR1cGxlUHJlZml4UHJpbnRlcjxOIC0gMT4uCisvLworLy8gVGhl
IGluZHVjdGl2ZSBjYXNlLgordGVtcGxhdGUgPHNpemVfdCBOPgorc3RydWN0IFR1cGxlUHJlZml4
UHJpbnRlciB7CisgIC8vIFByaW50cyB0aGUgZmlyc3QgTiBmaWVsZHMgb2YgYSB0dXBsZS4KKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPgorICBzdGF0aWMgdm9pZCBQcmludFByZWZpeFRvKGNv
bnN0IFR1cGxlJiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBUdXBsZVByZWZpeFByaW50
ZXI8TiAtIDE+OjpQcmludFByZWZpeFRvKHQsIG9zKTsKKyAgICBHVEVTVF9JTlRFTlRJT05BTF9D
T05TVF9DT05EX1BVU0hfKCkKKyAgICBpZiAoTiA+IDEpIHsKKyAgICBHVEVTVF9JTlRFTlRJT05B
TF9DT05TVF9DT05EX1BPUF8oKQorICAgICAgKm9zIDw8ICIsICI7CisgICAgfQorICAgIFVuaXZl
cnNhbFByaW50ZXI8CisgICAgICAgIHR5cGVuYW1lIFR1cGxlUG9saWN5PFR1cGxlPjo6dGVtcGxh
dGUgdHVwbGVfZWxlbWVudDxOIC0gMT46OnR5cGU+CisgICAgICAgIDo6UHJpbnQoVHVwbGVQb2xp
Y3k8VHVwbGU+Ojp0ZW1wbGF0ZSBnZXQ8TiAtIDE+KHQpLCBvcyk7CisgIH0KKworICAvLyBUZXJz
ZWx5IHByaW50cyB0aGUgZmlyc3QgTiBmaWVsZHMgb2YgYSB0dXBsZSB0byBhIHN0cmluZyB2ZWN0
b3IsCisgIC8vIG9uZSBlbGVtZW50IGZvciBlYWNoIGZpZWxkLgorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVHVwbGU+CisgIHN0YXRpYyB2b2lkIFRlcnNlUHJpbnRQcmVmaXhUb1N0cmluZ3MoY29uc3Qg
VHVwbGUmIHQsIFN0cmluZ3MqIHN0cmluZ3MpIHsKKyAgICBUdXBsZVByZWZpeFByaW50ZXI8TiAt
IDE+OjpUZXJzZVByaW50UHJlZml4VG9TdHJpbmdzKHQsIHN0cmluZ3MpOworICAgIDo6c3RkOjpz
dHJpbmdzdHJlYW0gc3M7CisgICAgVW5pdmVyc2FsVGVyc2VQcmludChUdXBsZVBvbGljeTxUdXBs
ZT46OnRlbXBsYXRlIGdldDxOIC0gMT4odCksICZzcyk7CisgICAgc3RyaW5ncy0+cHVzaF9iYWNr
KHNzLnN0cigpKTsKKyAgfQorfTsKKworLy8gQmFzZSBjYXNlLgordGVtcGxhdGUgPD4KK3N0cnVj
dCBUdXBsZVByZWZpeFByaW50ZXI8MD4geworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+Cisg
IHN0YXRpYyB2b2lkIFByaW50UHJlZml4VG8oY29uc3QgVHVwbGUmLCA6OnN0ZDo6b3N0cmVhbSop
IHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPgorICBzdGF0aWMgdm9pZCBUZXJzZVBy
aW50UHJlZml4VG9TdHJpbmdzKGNvbnN0IFR1cGxlJiwgU3RyaW5ncyopIHt9Cit9OworCisvLyBI
ZWxwZXIgZnVuY3Rpb24gZm9yIHByaW50aW5nIGEgdHVwbGUuCisvLyBUdXBsZSBtdXN0IGJlIGVp
dGhlciBzdGQ6OnRyMTo6dHVwbGUgb3Igc3RkOjp0dXBsZSB0eXBlLgordGVtcGxhdGUgPHR5cGVu
YW1lIFR1cGxlPgordm9pZCBQcmludFR1cGxlVG8oY29uc3QgVHVwbGUmIHQsIDo6c3RkOjpvc3Ry
ZWFtKiBvcykgeworICAqb3MgPDwgIigiOworICBUdXBsZVByZWZpeFByaW50ZXI8VHVwbGVQb2xp
Y3k8VHVwbGU+Ojp0dXBsZV9zaXplPjo6UHJpbnRQcmVmaXhUbyh0LCBvcyk7CisgICpvcyA8PCAi
KSI7Cit9CisKKy8vIFByaW50cyB0aGUgZmllbGRzIG9mIGEgdHVwbGUgdGVyc2VseSB0byBhIHN0
cmluZyB2ZWN0b3IsIG9uZQorLy8gZWxlbWVudCBmb3IgZWFjaCBmaWVsZC4gIFNlZSB0aGUgY29t
bWVudCBiZWZvcmUKKy8vIFVuaXZlcnNhbFRlcnNlUHJpbnQoKSBmb3IgaG93IHdlIGRlZmluZSAi
dGVyc2VseSIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+CitTdHJpbmdzIFVuaXZlcnNhbFRl
cnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncyhjb25zdCBUdXBsZSYgdmFsdWUpIHsKKyAgU3Ry
aW5ncyByZXN1bHQ7CisgIFR1cGxlUHJlZml4UHJpbnRlcjxUdXBsZVBvbGljeTxUdXBsZT46OnR1
cGxlX3NpemU+OjoKKyAgICAgIFRlcnNlUHJpbnRQcmVmaXhUb1N0cmluZ3ModmFsdWUsICZyZXN1
bHQpOworICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfVFIxX1RVUExF
IHx8IEdURVNUX0hBU19TVERfVFVQTEVfCisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCisj
aWYgR1RFU1RfSEFTX0FCU0wKK25hbWVzcGFjZSBpbnRlcm5hbDIgewordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Cit2b2lkIFR5cGVXaXRob3V0Rm9ybWF0dGVyPFQsIGtDb252ZXJ0aWJsZVRvU3RyaW5n
Vmlldz46OlByaW50VmFsdWUoCisgICAgY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBv
cykgeworICBpbnRlcm5hbDo6UHJpbnRUbyhhYnNsOjpzdHJpbmdfdmlldyh2YWx1ZSksIG9zKTsK
K30KK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbDIKKyNlbmRpZgorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KKzo6c3RkOjpzdHJpbmcgUHJpbnRUb1N0cmluZyhjb25zdCBUJiB2YWx1ZSkgeworICA6
OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICBpbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludGVy
PFQ+OjpQcmludCh2YWx1ZSwgJnNzKTsKKyAgcmV0dXJuIHNzLnN0cigpOworfQorCit9ICAvLyBu
YW1lc3BhY2UgdGVzdGluZworCisvLyBJbmNsdWRlIGFueSBjdXN0b20gcHJpbnRlciBhZGRlZCBi
eSB0aGUgbG9jYWwgaW5zdGFsbGF0aW9uLgorLy8gV2UgbXVzdCBpbmNsdWRlIHRoaXMgaGVhZGVy
IGF0IHRoZSBlbmQgdG8gbWFrZSBzdXJlIGl0IGNhbiB1c2UgdGhlCisvLyBkZWNsYXJhdGlvbnMg
ZnJvbSB0aGlzIGZpbGUuCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXBy
aW50ZXJzLmgiCisKKyNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUklOVEVS
U19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9n
dGVzdC1zcGkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qt
c3BpLmgKaW5kZXggYzQxZGE0ODQ0NzYwM2U5NjVmYjc3MmFiY2EyZjE0NWVlODJhNjA2Zi4uMWU4
OTgzOTM4ZWEyNzkyYzUyNjkwZWFkMjliMDBhYjU4Y2RhYWU5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1zcGkuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXNwaS5oCkBAIC0yNiwxNiArMjYs
MjAgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8v
Ci0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIC8vCiAvLyBVdGls
aXRpZXMgZm9yIHRlc3RpbmcgR29vZ2xlIFRlc3QgaXRzZWxmIGFuZCBjb2RlIHRoYXQgdXNlcyBH
b29nbGUgVGVzdAogLy8gKGUuZy4gZnJhbWV3b3JrcyBidWlsdCBvbiB0b3Agb2YgR29vZ2xlIFRl
c3QpLgogCisvLyBHT09HTEVURVNUX0NNMDAwNCBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RF
U1RfSU5DTFVERV9HVEVTVF9HVEVTVF9TUElfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVT
VF9HVEVTVF9TUElfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKKworR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDI1MSBcCisv
KiBjbGFzcyBBIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2VkIGJ5IGNsaWVu
dHMgb2YgY2xhc3MgQiAqLykKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC05NywxMyArMTAx
LDEyIEBAIGNsYXNzIEdURVNUX0FQSV8gU2luZ2xlRmFpbHVyZUNoZWNrZXIgewogIHB1YmxpYzoK
ICAgLy8gVGhlIGNvbnN0cnVjdG9yIHJlbWVtYmVycyB0aGUgYXJndW1lbnRzLgogICBTaW5nbGVG
YWlsdXJlQ2hlY2tlcihjb25zdCBUZXN0UGFydFJlc3VsdEFycmF5KiByZXN1bHRzLAotICAgICAg
ICAgICAgICAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBzdWJzdHIpOworICAgICAgICAgICAgICAgICAgICAgICBU
ZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlLCBjb25zdCBzdGQ6OnN0cmluZyYgc3Vic3RyKTsKICAg
flNpbmdsZUZhaWx1cmVDaGVja2VyKCk7CiAgcHJpdmF0ZToKICAgY29uc3QgVGVzdFBhcnRSZXN1
bHRBcnJheSogY29uc3QgcmVzdWx0c187CiAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5
cGVfOwotICBjb25zdCBTdHJpbmcgc3Vic3RyXzsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgc3Vic3Ry
XzsKIAogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNpbmdsZUZhaWx1cmVDaGVj
a2VyKTsKIH07CkBAIC0xMTIsNiArMTE1LDggQEAgY2xhc3MgR1RFU1RfQVBJXyBTaW5nbGVGYWls
dXJlQ2hlY2tlciB7CiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAKK0dURVNUX0RJU0FCTEVf
TVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQyNTEKKwogLy8gQSBzZXQgb2YgbWFjcm9zIGZvciB0
ZXN0aW5nIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgb3IgY29kZSB0aGF0J3MgZXhwZWN0ZWQKIC8v
IHRvIGdlbmVyYXRlIEdvb2dsZSBUZXN0IGZhdGFsIGZhaWx1cmVzLiAgSXQgdmVyaWZpZXMgdGhh
dCB0aGUgZ2l2ZW4KIC8vIHN0YXRlbWVudCB3aWxsIGNhdXNlIGV4YWN0bHkgb25lIGZhdGFsIEdv
b2dsZSBUZXN0IGZhaWx1cmUgd2l0aCAnc3Vic3RyJwpAQCAtMjIzLDcgKzIyOCw3IEBAIGNsYXNz
IEdURVNUX0FQSV8gU2luZ2xlRmFpbHVyZUNoZWNrZXIgewogICAgICAgICAoc3Vic3RyKSk7XAog
ICAgIHtcCiAgICAgICA6OnRlc3Rpbmc6OlNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVy
IGd0ZXN0X3JlcG9ydGVyKFwKLSAgICAgICAgICA6OnRlc3Rpbmc6OlNjb3BlZEZha2VUZXN0UGFy
dFJlc3VsdFJlcG9ydGVyOjpJTlRFUkNFUFRfQUxMX1RIUkVBRFMsXAorICAgICAgICAgIDo6dGVz
dGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6OklOVEVSQ0VQVF9BTExfVEhS
RUFEUywgXAogICAgICAgICAgICZndGVzdF9mYWlsdXJlcyk7XAogICAgICAgaWYgKDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBzdGF0ZW1lbnQ7IH1cCiAgICAgfVwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1w
YXJ0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXRlc3Qt
cGFydC5oCmluZGV4IGY3MTQ3NTkwNjc2MzlmMWVhNGVjMGExMjYzNDdkZWMxMjA0ODI0MzkuLjFj
N2I4OWUwODc5NmQ5NzMwZjlmOGVlYWU0MDYyMjcxNzdkYmE1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBhcnQuaApA
QCAtMjcsMTYgKzI3LDE4IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwot
Ly8gQXV0aG9yOiBtaGV1bGVAZ29vZ2xlLmNvbSAoTWFya3VzIEhldWxlKQotLy8KKy8vIEdPT0dM
RVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKIAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNU
X0dURVNUX1RFU1RfUEFSVF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1RF
U1RfUEFSVF9IXwogCiAjaW5jbHVkZSA8aW9zZndkPgogI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNs
dWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2lu
dGVybmFsL2d0ZXN0LXN0cmluZy5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWlu
dGVybmFsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgiCisKK0dU
RVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQyNTEgXAorLyogY2xhc3MgQSBuZWVkcyB0
byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBieSBjbGllbnRzIG9mIGNsYXNzIEIgKi8p
CiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIApAQCAtNjIsNyArNjQsNyBAQCBjbGFzcyBHVEVTVF9B
UElfIFRlc3RQYXJ0UmVzdWx0IHsKICAgICAgICAgICAgICAgICAgaW50IGFfbGluZV9udW1iZXIs
CiAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfbWVzc2FnZSkKICAgICAgIDogdHlwZV8o
YV90eXBlKSwKLSAgICAgICAgZmlsZV9uYW1lXyhhX2ZpbGVfbmFtZSksCisgICAgICAgIGZpbGVf
bmFtZV8oYV9maWxlX25hbWUgPT0gTlVMTCA/ICIiIDogYV9maWxlX25hbWUpLAogICAgICAgICBs
aW5lX251bWJlcl8oYV9saW5lX251bWJlciksCiAgICAgICAgIHN1bW1hcnlfKEV4dHJhY3RTdW1t
YXJ5KGFfbWVzc2FnZSkpLAogICAgICAgICBtZXNzYWdlXyhhX21lc3NhZ2UpIHsKQEAgLTczLDcg
Kzc1LDkgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0UGFydFJlc3VsdCB7CiAKICAgLy8gR2V0cyB0
aGUgbmFtZSBvZiB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0b29rIHBsYWNl
LCBvcgogICAvLyBOVUxMIGlmIGl0J3MgdW5rbm93bi4KLSAgY29uc3QgY2hhciogZmlsZV9uYW1l
KCkgY29uc3QgeyByZXR1cm4gZmlsZV9uYW1lXy5jX3N0cigpOyB9CisgIGNvbnN0IGNoYXIqIGZp
bGVfbmFtZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gZmlsZV9uYW1lXy5lbXB0eSgpID8gTlVMTCA6
IGZpbGVfbmFtZV8uY19zdHIoKTsKKyAgfQogCiAgIC8vIEdldHMgdGhlIGxpbmUgaW4gdGhlIHNv
dXJjZSBmaWxlIHdoZXJlIHRoZSB0ZXN0IHBhcnQgdG9vayBwbGFjZSwKICAgLy8gb3IgLTEgaWYg
aXQncyB1bmtub3duLgpAQCAtOTYsMjEgKzEwMCwyMiBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RQ
YXJ0UmVzdWx0IHsKIAogICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB0ZXN0IHBhcnQgZmF0YWxs
eSBmYWlsZWQuCiAgIGJvb2wgZmF0YWxseV9mYWlsZWQoKSBjb25zdCB7IHJldHVybiB0eXBlXyA9
PSBrRmF0YWxGYWlsdXJlOyB9CisKICBwcml2YXRlOgogICBUeXBlIHR5cGVfOwogCiAgIC8vIEdl
dHMgdGhlIHN1bW1hcnkgb2YgdGhlIGZhaWx1cmUgbWVzc2FnZSBieSBvbWl0dGluZyB0aGUgc3Rh
Y2sKICAgLy8gdHJhY2UgaW4gaXQuCi0gIHN0YXRpYyBpbnRlcm5hbDo6U3RyaW5nIEV4dHJhY3RT
dW1tYXJ5KGNvbnN0IGNoYXIqIG1lc3NhZ2UpOworICBzdGF0aWMgc3RkOjpzdHJpbmcgRXh0cmFj
dFN1bW1hcnkoY29uc3QgY2hhciogbWVzc2FnZSk7CiAKICAgLy8gVGhlIG5hbWUgb2YgdGhlIHNv
dXJjZSBmaWxlIHdoZXJlIHRoZSB0ZXN0IHBhcnQgdG9vayBwbGFjZSwgb3IKLSAgLy8gTlVMTCBp
ZiB0aGUgc291cmNlIGZpbGUgaXMgdW5rbm93bi4KLSAgaW50ZXJuYWw6OlN0cmluZyBmaWxlX25h
bWVfOworICAvLyAiIiBpZiB0aGUgc291cmNlIGZpbGUgaXMgdW5rbm93bi4KKyAgc3RkOjpzdHJp
bmcgZmlsZV9uYW1lXzsKICAgLy8gVGhlIGxpbmUgaW4gdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRo
ZSB0ZXN0IHBhcnQgdG9vayBwbGFjZSwgb3IgLTEKICAgLy8gaWYgdGhlIGxpbmUgbnVtYmVyIGlz
IHVua25vd24uCiAgIGludCBsaW5lX251bWJlcl87Ci0gIGludGVybmFsOjpTdHJpbmcgc3VtbWFy
eV87ICAvLyBUaGUgdGVzdCBmYWlsdXJlIHN1bW1hcnkuCi0gIGludGVybmFsOjpTdHJpbmcgbWVz
c2FnZV87ICAvLyBUaGUgdGVzdCBmYWlsdXJlIG1lc3NhZ2UuCisgIHN0ZDo6c3RyaW5nIHN1bW1h
cnlfOyAgLy8gVGhlIHRlc3QgZmFpbHVyZSBzdW1tYXJ5LgorICBzdGQ6OnN0cmluZyBtZXNzYWdl
XzsgIC8vIFRoZSB0ZXN0IGZhaWx1cmUgbWVzc2FnZS4KIH07CiAKIC8vIFByaW50cyBhIFRlc3RQ
YXJ0UmVzdWx0IG9iamVjdC4KQEAgLTE0MCw3ICsxNDUsNyBAQCBjbGFzcyBHVEVTVF9BUElfIFRl
c3RQYXJ0UmVzdWx0QXJyYXkgewogfTsKIAogLy8gVGhpcyBpbnRlcmZhY2Uga25vd3MgaG93IHRv
IHJlcG9ydCBhIHRlc3QgcGFydCByZXN1bHQuCi1jbGFzcyBUZXN0UGFydFJlc3VsdFJlcG9ydGVy
SW50ZXJmYWNlIHsKK2NsYXNzIEdURVNUX0FQSV8gVGVzdFBhcnRSZXN1bHRSZXBvcnRlckludGVy
ZmFjZSB7CiAgcHVibGljOgogICB2aXJ0dWFsIH5UZXN0UGFydFJlc3VsdFJlcG9ydGVySW50ZXJm
YWNlKCkge30KIApAQCAtMTczLDQgKzE3OCw2IEBAIGNsYXNzIEdURVNUX0FQSV8gSGFzTmV3RmF0
YWxGYWlsdXJlSGVscGVyCiAKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAKK0dURVNUX0RJU0FC
TEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQyNTEKKwogI2VuZGlmICAvLyBHVEVTVF9JTkNM
VURFX0dURVNUX0dURVNUX1RFU1RfUEFSVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10eXBlZC10ZXN0LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaAppbmRleCAxZWM4ZWI4
ZDMwOTM5OGQ1MmJkNDk2Mzg0Y2Y0NzQ4M2FlMTE1MmVlLi4yOWIwODU5OTJkZTBlZTRmMzdiNjc2
MmZjM2UyMzY0M2NjZWFkNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9p
bmNsdWRlL2d0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaApAQCAtMjYsOCArMjYsOSBAQAog
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKworCisvLyBHT09HTEVURVNUX0NN
MDAwMSBETyBOT1QgREVMRVRFCiAKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9U
WVBFRF9URVNUX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfVFlQRURfVEVT
VF9IXwpAQCAtODIsNiArODMsMjQgQEAgVFlQRURfVEVTVChGb29UZXN0LCBEb2VzQmxhaCkgewog
CiBUWVBFRF9URVNUKEZvb1Rlc3QsIEhhc1Byb3BlcnR5QSkgeyAuLi4gfQogCisvLyBUWVBFRF9U
RVNUX0NBU0UgdGFrZXMgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgd2hpY2ggYWxsb3dzIHRv
IHNwZWNpZnkgYQorLy8gY2xhc3MgdGhhdCBnZW5lcmF0ZXMgY3VzdG9tIHRlc3QgbmFtZSBzdWZm
aXhlcyBiYXNlZCBvbiB0aGUgdHlwZS4gVGhpcyBzaG91bGQKKy8vIGJlIGEgY2xhc3Mgd2hpY2gg
aGFzIGEgc3RhdGljIHRlbXBsYXRlIGZ1bmN0aW9uIEdldE5hbWUoaW50IGluZGV4KSByZXR1cm5p
bmcKKy8vIGEgc3RyaW5nIGZvciBlYWNoIHR5cGUuIFRoZSBwcm92aWRlZCBpbnRlZ2VyIGluZGV4
IGVxdWFscyB0aGUgaW5kZXggb2YgdGhlCisvLyB0eXBlIGluIHRoZSBwcm92aWRlZCB0eXBlIGxp
c3QuIEluIG1hbnkgY2FzZXMgdGhlIGluZGV4IGNhbiBiZSBpZ25vcmVkLgorLy8KKy8vIEZvciBl
eGFtcGxlOgorLy8gICBjbGFzcyBNeVR5cGVOYW1lcyB7CisvLyAgICBwdWJsaWM6CisvLyAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisvLyAgICAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldE5hbWUo
aW50KSB7CisvLyAgICAgICBpZiAoc3RkOjppc19zYW1lPFQsIGNoYXI+KCkpIHJldHVybiAiY2hh
ciI7CisvLyAgICAgICBpZiAoc3RkOjppc19zYW1lPFQsIGludD4oKSkgcmV0dXJuICJpbnQiOwor
Ly8gICAgICAgaWYgKHN0ZDo6aXNfc2FtZTxULCB1bnNpZ25lZCBpbnQ+KCkpIHJldHVybiAidW5z
aWduZWRfaW50IjsKKy8vICAgICB9CisvLyAgIH07CisvLyAgIFRZUEVEX1RFU1RfQ0FTRShGb29U
ZXN0LCBNeVR5cGVzLCBNeVR5cGVOYW1lcyk7CisKICNlbmRpZiAgLy8gMAogCiAvLyBUeXBlLXBh
cmFtZXRlcml6ZWQgdGVzdHMgYXJlIGFic3RyYWN0IHRlc3QgcGF0dGVybnMgcGFyYW1ldGVyaXpl
ZApAQCAtMTQzLDExICsxNjIsMTYgQEAgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXks
IEZvb1Rlc3QsIE15VHlwZXMpOwogLy8gSWYgdGhlIHR5cGUgbGlzdCBjb250YWlucyBvbmx5IG9u
ZSB0eXBlLCB5b3UgY2FuIHdyaXRlIHRoYXQgdHlwZQogLy8gZGlyZWN0bHkgd2l0aG91dCBUeXBl
czwuLi4+OgogLy8gICBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwg
aW50KTsKKy8vCisvLyBTaW1pbGFyIHRvIHRoZSBvcHRpb25hbCBhcmd1bWVudCBvZiBUWVBFRF9U
RVNUX0NBU0UgYWJvdmUsCisvLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUCB0YWtlcyBhbiBvcHRp
b25hbCBmb3VydGggYXJndW1lbnQgd2hpY2ggYWxsb3dzIHRvCisvLyBnZW5lcmF0ZSBjdXN0b20g
bmFtZXMuCisvLyAgIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBN
eVR5cGVzLCBNeVR5cGVOYW1lcyk7CiAKICNlbmRpZiAgLy8gMAogCi0jaW5jbHVkZSA8Z3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXR5
cGUtdXRpbC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKyNpbmNs
dWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCIKIAogLy8gSW1wbGVtZW50cyB0
eXBlZCB0ZXN0cy4KIApAQCAtMTU3LDMzICsxODEsNDcgQEAgSU5TVEFOVElBVEVfVFlQRURfVEVT
VF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMpOwogLy8KIC8vIEV4cGFuZHMgdG8gdGhlIG5h
bWUgb2YgdGhlIHR5cGVkZWYgZm9yIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlCiAvLyBnaXZl
biB0ZXN0IGNhc2UuCi0jZGVmaW5lIEdURVNUX1RZUEVfUEFSQU1TXyhUZXN0Q2FzZU5hbWUpIGd0
ZXN0X3R5cGVfcGFyYW1zXyMjVGVzdENhc2VOYW1lIyNfCisjIGRlZmluZSBHVEVTVF9UWVBFX1BB
UkFNU18oVGVzdENhc2VOYW1lKSBndGVzdF90eXBlX3BhcmFtc18jI1Rlc3RDYXNlTmFtZSMjXwor
CisvLyBFeHBhbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSB0eXBlZGVmIGZvciB0aGUgTmFtZUdlbmVy
YXRvciwgcmVzcG9uc2libGUgZm9yCisvLyBjcmVhdGluZyB0aGUgc3VmZml4ZXMgb2YgdGhlIG5h
bWUuCisjZGVmaW5lIEdURVNUX05BTUVfR0VORVJBVE9SXyhUZXN0Q2FzZU5hbWUpIFwKKyAgZ3Rl
c3RfdHlwZV9wYXJhbXNfIyNUZXN0Q2FzZU5hbWUjI19OYW1lR2VuZXJhdG9yCiAKIC8vIFRoZSAn
VHlwZXMnIHRlbXBsYXRlIGFyZ3VtZW50IGJlbG93IG11c3QgaGF2ZSBzcGFjZXMgYXJvdW5kIGl0
CiAvLyBzaW5jZSBzb21lIGNvbXBpbGVycyBtYXkgY2hva2Ugb24gJz4+JyB3aGVuIHBhc3Npbmcg
YSB0ZW1wbGF0ZQogLy8gaW5zdGFuY2UgKGUuZy4gVHlwZXM8aW50PikKLSNkZWZpbmUgVFlQRURf
VEVTVF9DQVNFKENhc2VOYW1lLCBUeXBlcykgXAotICB0eXBlZGVmIDo6dGVzdGluZzo6aW50ZXJu
YWw6OlR5cGVMaXN0PCBUeXBlcyA+Ojp0eXBlIFwKLSAgICAgIEdURVNUX1RZUEVfUEFSQU1TXyhD
YXNlTmFtZSkKLQotI2RlZmluZSBUWVBFRF9URVNUKENhc2VOYW1lLCBUZXN0TmFtZSkgXAotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgZ3Rlc3RfVHlwZVBhcmFtXz4gXAotICBjbGFzcyBHVEVTVF9URVNU
X0NMQVNTX05BTUVfKENhc2VOYW1lLCBUZXN0TmFtZSkgXAotICAgICAgOiBwdWJsaWMgQ2FzZU5h
bWU8Z3Rlc3RfVHlwZVBhcmFtXz4geyBcCi0gICBwcml2YXRlOiBcCi0gICAgdHlwZWRlZiBDYXNl
TmFtZTxndGVzdF9UeXBlUGFyYW1fPiBUZXN0Rml4dHVyZTsgXAotICAgIHR5cGVkZWYgZ3Rlc3Rf
VHlwZVBhcmFtXyBUeXBlUGFyYW07IFwKLSAgICB2aXJ0dWFsIHZvaWQgVGVzdEJvZHkoKTsgXAot
ICB9OyBcCi0gIGJvb2wgZ3Rlc3RfIyNDYXNlTmFtZSMjXyMjVGVzdE5hbWUjI19yZWdpc3RlcmVk
XyA9IFwKLSAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlR5cGVQYXJhbWV0ZXJpemVkVGVzdDwg
XAotICAgICAgICAgIENhc2VOYW1lLCBcCi0gICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
VGVtcGxhdGVTZWw8IFwKLSAgICAgICAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyhDYXNl
TmFtZSwgVGVzdE5hbWUpPiwgXAotICAgICAgICAgIEdURVNUX1RZUEVfUEFSQU1TXyhDYXNlTmFt
ZSk+OjpSZWdpc3RlcihcCi0gICAgICAgICAgICAgICIiLCAjQ2FzZU5hbWUsICNUZXN0TmFtZSwg
MCk7IFwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIGd0ZXN0X1R5cGVQYXJhbV8+IFwKLSAgdm9pZCBH
VEVTVF9URVNUX0NMQVNTX05BTUVfKENhc2VOYW1lLCBUZXN0TmFtZSk8Z3Rlc3RfVHlwZVBhcmFt
Xz46OlRlc3RCb2R5KCkKKyMgZGVmaW5lIFRZUEVEX1RFU1RfQ0FTRShDYXNlTmFtZSwgVHlwZXMs
IC4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6
OmludGVybmFsOjpUeXBlTGlzdDwgVHlwZXMgPjo6dHlwZSBHVEVTVF9UWVBFX1BBUkFNU18oIFwK
KyAgICAgIENhc2VOYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OmludGVybmFsOjpOYW1l
R2VuZXJhdG9yU2VsZWN0b3I8X19WQV9BUkdTX18+Ojp0eXBlICAgIFwKKyAgICAgIEdURVNUX05B
TUVfR0VORVJBVE9SXyhDYXNlTmFtZSkKKworIyBkZWZpbmUgVFlQRURfVEVTVChDYXNlTmFtZSwg
VGVzdE5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgZ3Rlc3RfVHlwZVBhcmFtXz4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVfKENhc2VOYW1l
LCBUZXN0TmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgOiBwdWJsaWMg
Q2FzZU5hbWU8Z3Rlc3RfVHlwZVBhcmFtXz4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgcHJpdmF0ZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHR5cGVkZWYgQ2FzZU5hbWU8Z3Rl
c3RfVHlwZVBhcmFtXz4gVGVzdEZpeHR1cmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIHR5cGVkZWYgZ3Rlc3RfVHlwZVBhcmFtXyBUeXBlUGFyYW07ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZpcnR1YWwgdm9pZCBUZXN0Qm9keSgpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9OyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICBib29sIGd0ZXN0XyMjQ2FzZU5hbWUjI18jI1Rlc3ROYW1lIyNfcmVn
aXN0ZXJlZF8gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gPSAgXAorICAgICAgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6VHlwZVBhcmFtZXRlcml6ZWRUZXN0PCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgIENhc2VOYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJu
YWw6OlRlbXBsYXRlU2VsPEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8oQ2FzZU5hbWUsICAgXAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGVzdE5hbWUpPiwgXAorICAgICAgICAgIEdURVNUX1RZUEVfUEFSQU1TXyggICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
ICBDYXNlTmFtZSk+OjpSZWdpc3RlcigiIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6
OmludGVybmFsOjpDb2RlTG9jYXRpb24oICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKSwgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjQ2FzZU5hbWUsICNUZXN0TmFt
ZSwgMCwgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpHZW5lcmF0ZU5hbWVzPCAgICAgICAgXAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfTkFNRV9HRU5FUkFUT1JfKENh
c2VOYW1lKSwgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R1RFU1RfVFlQRV9QQVJBTVNfKENhc2VOYW1lKT4oKSk7ICAgICAgXAorICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgZ3Rlc3RfVHlwZVBhcmFtXz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICB2b2lkIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8oQ2FzZU5hbWUsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGVzdE5hbWUpPGd0ZXN0X1R5cGVQYXJhbV8+OjpUZXN0Qm9keSgpCiAKICNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1RZUEVEX1RFU1QKIApAQCAtMTk2LDMxICsyMzQsMzEgQEAgSU5TVEFOVElB
VEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMpOwogLy8gRXhwYW5kcyB0
byB0aGUgbmFtZXNwYWNlIG5hbWUgdGhhdCB0aGUgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGZv
cgogLy8gdGhlIGdpdmVuIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgYXJlIGRlZmluZWQg
aW4uICBUaGUgZXhhY3QKIC8vIG5hbWUgb2YgdGhlIG5hbWVzcGFjZSBpcyBzdWJqZWN0IHRvIGNo
YW5nZSB3aXRob3V0IG5vdGljZS4KLSNkZWZpbmUgR1RFU1RfQ0FTRV9OQU1FU1BBQ0VfKFRlc3RD
YXNlTmFtZSkgXAorIyBkZWZpbmUgR1RFU1RfQ0FTRV9OQU1FU1BBQ0VfKFRlc3RDYXNlTmFtZSkg
XAogICBndGVzdF9jYXNlXyMjVGVzdENhc2VOYW1lIyNfCiAKIC8vIElOVEVSTkFMIElNUExFTUVO
VEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCiAvLwogLy8gRXhwYW5kcyB0byB0aGUg
bmFtZSBvZiB0aGUgdmFyaWFibGUgdXNlZCB0byByZW1lbWJlciB0aGUgbmFtZXMgb2YKIC8vIHRo
ZSBkZWZpbmVkIHRlc3RzIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UuCi0jZGVmaW5lIEdURVNUX1RZ
UEVEX1RFU1RfQ0FTRV9QX1NUQVRFXyhUZXN0Q2FzZU5hbWUpIFwKKyMgZGVmaW5lIEdURVNUX1RZ
UEVEX1RFU1RfQ0FTRV9QX1NUQVRFXyhUZXN0Q2FzZU5hbWUpIFwKICAgZ3Rlc3RfdHlwZWRfdGVz
dF9jYXNlX3Bfc3RhdGVfIyNUZXN0Q2FzZU5hbWUjI18KIAogLy8gSU5URVJOQUwgSU1QTEVNRU5U
QVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERSBESVJFQ1RMWS4KIC8vCiAvLyBFeHBhbmRz
IHRvIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSB1c2VkIHRvIHJlbWVtYmVyIHRoZSBuYW1lcyBv
ZgogLy8gdGhlIHJlZ2lzdGVyZWQgdGVzdHMgaW4gdGhlIGdpdmVuIHRlc3QgY2FzZS4KLSNkZWZp
bmUgR1RFU1RfUkVHSVNURVJFRF9URVNUX05BTUVTXyhUZXN0Q2FzZU5hbWUpIFwKKyMgZGVmaW5l
IEdURVNUX1JFR0lTVEVSRURfVEVTVF9OQU1FU18oVGVzdENhc2VOYW1lKSBcCiAgIGd0ZXN0X3Jl
Z2lzdGVyZWRfdGVzdF9uYW1lc18jI1Rlc3RDYXNlTmFtZSMjXwogCiAvLyBUaGUgdmFyaWFibGVz
IGRlZmluZWQgaW4gdGhlIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IG1hY3JvcyBhcmUKIC8vIHN0
YXRpYyBhcyB0eXBpY2FsbHkgdGhlc2UgbWFjcm9zIGFyZSB1c2VkIGluIGEgLmggZmlsZSB0aGF0
IGNhbiBiZQogLy8gI2luY2x1ZGVkIGluIG11bHRpcGxlIHRyYW5zbGF0aW9uIHVuaXRzIGxpbmtl
ZCB0b2dldGhlci4KLSNkZWZpbmUgVFlQRURfVEVTVF9DQVNFX1AoQ2FzZU5hbWUpIFwKKyMgZGVm
aW5lIFRZUEVEX1RFU1RfQ0FTRV9QKENhc2VOYW1lKSBcCiAgIHN0YXRpYyA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpUeXBlZFRlc3RDYXNlUFN0YXRlIFwKICAgICAgIEdURVNUX1RZUEVEX1RFU1RfQ0FT
RV9QX1NUQVRFXyhDYXNlTmFtZSkKIAotI2RlZmluZSBUWVBFRF9URVNUX1AoQ2FzZU5hbWUsIFRl
c3ROYW1lKSBcCisjIGRlZmluZSBUWVBFRF9URVNUX1AoQ2FzZU5hbWUsIFRlc3ROYW1lKSBcCiAg
IG5hbWVzcGFjZSBHVEVTVF9DQVNFX05BTUVTUEFDRV8oQ2FzZU5hbWUpIHsgXAogICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgZ3Rlc3RfVHlwZVBhcmFtXz4gXAogICBjbGFzcyBUZXN0TmFtZSA6IHB1Ymxp
YyBDYXNlTmFtZTxndGVzdF9UeXBlUGFyYW1fPiB7IFwKQEAgLTIyOSwzMCArMjY3LDM4IEBAIElO
U1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsKICAgICB0
eXBlZGVmIGd0ZXN0X1R5cGVQYXJhbV8gVHlwZVBhcmFtOyBcCiAgICAgdmlydHVhbCB2b2lkIFRl
c3RCb2R5KCk7IFwKICAgfTsgXAotICBzdGF0aWMgYm9vbCBndGVzdF8jI1Rlc3ROYW1lIyNfZGVm
aW5lZF8gPSBcCisgIHN0YXRpYyBib29sIGd0ZXN0XyMjVGVzdE5hbWUjI19kZWZpbmVkXyBHVEVT
VF9BVFRSSUJVVEVfVU5VU0VEXyA9IFwKICAgICAgIEdURVNUX1RZUEVEX1RFU1RfQ0FTRV9QX1NU
QVRFXyhDYXNlTmFtZSkuQWRkVGVzdE5hbWUoXAogICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVf
XywgI0Nhc2VOYW1lLCAjVGVzdE5hbWUpOyBcCiAgIH0gXAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Z3Rlc3RfVHlwZVBhcmFtXz4gXAogICB2b2lkIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhDYXNlTmFt
ZSk6OlRlc3ROYW1lPGd0ZXN0X1R5cGVQYXJhbV8+OjpUZXN0Qm9keSgpCiAKLSNkZWZpbmUgUkVH
SVNURVJfVFlQRURfVEVTVF9DQVNFX1AoQ2FzZU5hbWUsIC4uLikgXAorIyBkZWZpbmUgUkVHSVNU
RVJfVFlQRURfVEVTVF9DQVNFX1AoQ2FzZU5hbWUsIC4uLikgXAogICBuYW1lc3BhY2UgR1RFU1Rf
Q0FTRV9OQU1FU1BBQ0VfKENhc2VOYW1lKSB7IFwKICAgdHlwZWRlZiA6OnRlc3Rpbmc6OmludGVy
bmFsOjpUZW1wbGF0ZXM8X19WQV9BUkdTX18+Ojp0eXBlIGd0ZXN0X0FsbFRlc3RzXzsgXAogICB9
IFwKLSAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEdURVNUX1JFR0lTVEVSRURfVEVTVF9OQU1F
U18oQ2FzZU5hbWUpID0gXAotICAgICAgR1RFU1RfVFlQRURfVEVTVF9DQVNFX1BfU1RBVEVfKENh
c2VOYW1lKS5WZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVzKFwKLSAgICAgICAgICBfX0ZJTEVfXywg
X19MSU5FX18sICNfX1ZBX0FSR1NfXykKKyAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEdURVNU
X1JFR0lTVEVSRURfVEVTVF9OQU1FU18oQ2FzZU5hbWUpIFwKKyAgICAgIEdURVNUX0FUVFJJQlVU
RV9VTlVTRURfID0gXAorICAgICAgICAgIEdURVNUX1RZUEVEX1RFU1RfQ0FTRV9QX1NUQVRFXyhD
YXNlTmFtZSkuVmVyaWZ5UmVnaXN0ZXJlZFRlc3ROYW1lcyggXAorICAgICAgICAgICAgICBfX0ZJ
TEVfXywgX19MSU5FX18sICNfX1ZBX0FSR1NfXykKIAogLy8gVGhlICdUeXBlcycgdGVtcGxhdGUg
YXJndW1lbnQgYmVsb3cgbXVzdCBoYXZlIHNwYWNlcyBhcm91bmQgaXQKIC8vIHNpbmNlIHNvbWUg
Y29tcGlsZXJzIG1heSBjaG9rZSBvbiAnPj4nIHdoZW4gcGFzc2luZyBhIHRlbXBsYXRlCiAvLyBp
bnN0YW5jZSAoZS5nLiBUeXBlczxpbnQ+KQotI2RlZmluZSBJTlNUQU5USUFURV9UWVBFRF9URVNU
X0NBU0VfUChQcmVmaXgsIENhc2VOYW1lLCBUeXBlcykgXAotICBib29sIGd0ZXN0XyMjUHJlZml4
IyNfIyNDYXNlTmFtZSA9IFwKLSAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlR5cGVQYXJhbWV0
ZXJpemVkVGVzdENhc2U8Q2FzZU5hbWUsIFwKLSAgICAgICAgICBHVEVTVF9DQVNFX05BTUVTUEFD
RV8oQ2FzZU5hbWUpOjpndGVzdF9BbGxUZXN0c18sIFwKLSAgICAgICAgICA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpUeXBlTGlzdDwgVHlwZXMgPjo6dHlwZT46OlJlZ2lzdGVyKFwKLSAgICAgICAgICAg
ICAgI1ByZWZpeCwgI0Nhc2VOYW1lLCBHVEVTVF9SRUdJU1RFUkVEX1RFU1RfTkFNRVNfKENhc2VO
YW1lKSkKKyMgZGVmaW5lIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFByZWZpeCwgQ2Fz
ZU5hbWUsIFR5cGVzLCAuLi4pICAgICAgXAorICBib29sIGd0ZXN0XyMjUHJlZml4IyNfIyNDYXNl
TmFtZSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9ICAgICAgICAgICAgICBcCisgICAgICA6OnRl
c3Rpbmc6OmludGVybmFsOjpUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlPCAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgICBDYXNlTmFtZSwgR1RFU1RfQ0FTRV9OQU1FU1BBQ0VfKENhc2VO
YW1lKTo6Z3Rlc3RfQWxsVGVzdHNfLCAgICAgXAorICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJu
YWw6OlR5cGVMaXN0PCBUeXBlcyA+Ojp0eXBlPjo6ICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgUmVnaXN0ZXIoI1ByZWZpeCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpDb2Rl
TG9jYXRpb24oX19GSUxFX18sIF9fTElORV9fKSwgXAorICAgICAgICAgICAgICAgICAgICZHVEVT
VF9UWVBFRF9URVNUX0NBU0VfUF9TVEFURV8oQ2FzZU5hbWUpLCAjQ2FzZU5hbWUsICBcCisgICAg
ICAgICAgICAgICAgICAgR1RFU1RfUkVHSVNURVJFRF9URVNUX05BTUVTXyhDYXNlTmFtZSksICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpH
ZW5lcmF0ZU5hbWVzPCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAg
ICA6OnRlc3Rpbmc6OmludGVybmFsOjpOYW1lR2VuZXJhdG9yU2VsZWN0b3I8ICAgICAgICBcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX1ZBX0FSR1NfXz46OnR5cGUsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6VHlwZUxpc3Q8IFR5cGVzID46OnR5cGU+KCkpCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFT
X1RZUEVEX1RFU1RfUAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2d0ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2d0ZXN0LmgKaW5kZXggOTIxZmFkMTFmY2M4ZjI0YzBkZDIyMzk0YTQ4NjdhYjI0YjZlYTBjMy4u
MmJlOGIxMTJjNjM3YjEwZGFjZmQwNjlmYjk3MWZlNjg2NmE4ZDg3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaApAQCAtMjYsMTAgKzI2LDkgQEAK
IC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwogLy8KLS8v
IEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBUaGUgR29vZ2xl
IEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBUaGUgR29vZ2xlIEMrKyBU
ZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBo
ZWFkZXIgZmlsZSBkZWZpbmVzIHRoZSBwdWJsaWMgQVBJIGZvciBHb29nbGUgVGVzdC4gIEl0IHNo
b3VsZCBiZQogLy8gaW5jbHVkZWQgYnkgYW55IHRlc3QgcHJvZ3JhbSB0aGF0IHVzZXMgR29vZ2xl
IFRlc3QuCkBAIC00OCwzOCArNDcsNTQgQEAKIC8vIHJlZ2lzdHJhdGlvbiBmcm9tIEJhcnRoZWxl
bXkgRGFnZW5haXMnIChiYXJ0aGVsZW15QHByb2xvZ2lxdWUuY29tKQogLy8gZWFzeVVuaXQgZnJh
bWV3b3JrLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYg
R1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNU
X0dURVNUX0hfCiAKICNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8b3N0cmVhbT4KICNpbmNs
dWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5o
PgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oPgotI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1tZXNzYWdlLmg+
Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0X3Byb2QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC10ZXN0LXBhcnQuaD4KLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC10eXBlZC10ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIK
KyNpbmNsdWRlICJndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QtbWVzc2FnZS5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaCIKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC1wcmludGVycy5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0X3Byb2Qu
aCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC10ZXN0LXBhcnQuaCIKKyNpbmNsdWRlICJndGVzdC9n
dGVzdC10eXBlZC10ZXN0LmgiCisKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQy
NTEgXAorLyogY2xhc3MgQSBuZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBi
eSBjbGllbnRzIG9mIGNsYXNzIEIgKi8pCiAKIC8vIERlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0s
IGRpZmZlcmVudCBzdHJpbmcgY2xhc3NlcyBhcmUgYXZhaWxhYmxlLgogLy8gT24gTGludXgsIGlu
IGFkZGl0aW9uIHRvIDo6c3RkOjpzdHJpbmcsIEdvb2dsZSBhbHNvIG1ha2VzIHVzZSBvZgogLy8g
Y2xhc3MgOjpzdHJpbmcsIHdoaWNoIGhhcyB0aGUgc2FtZSBpbnRlcmZhY2UgYXMgOjpzdGQ6OnN0
cmluZywgYnV0CiAvLyBoYXMgYSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24uCiAvLwotLy8gVGhl
IHVzZXIgY2FuIGRlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORyB0byAxIHRvIGluZGljYXRl
IHRoYXQKKy8vIFlvdSBjYW4gZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HIHRvIDEgdG8g
aW5kaWNhdGUgdGhhdAogLy8gOjpzdHJpbmcgaXMgYXZhaWxhYmxlIEFORCBpcyBhIGRpc3RpbmN0
IHR5cGUgdG8gOjpzdGQ6OnN0cmluZywgb3IKIC8vIGRlZmluZSBpdCB0byAwIHRvIGluZGljYXRl
IG90aGVyd2lzZS4KIC8vCi0vLyBJZiB0aGUgdXNlcidzIDo6c3RkOjpzdHJpbmcgYW5kIDo6c3Ry
aW5nIGFyZSB0aGUgc2FtZSBjbGFzcyBkdWUgdG8KLS8vIGFsaWFzaW5nLCBoZSBzaG91bGQgZGVm
aW5lIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HIHRvIDAuCisvLyBJZiA6OnN0ZDo6c3RyaW5nIGFu
ZCA6OnN0cmluZyBhcmUgdGhlIHNhbWUgY2xhc3Mgb24geW91ciBwbGF0Zm9ybQorLy8gZHVlIHRv
IGFsaWFzaW5nLCB5b3Ugc2hvdWxkIGRlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORyB0byAw
LgogLy8KLS8vIElmIHRoZSB1c2VyIGRvZXNuJ3QgZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfU1RS
SU5HLCBpdCBpcyBkZWZpbmVkCisvLyBJZiB5b3UgZG8gbm90IGRlZmluZSBHVEVTVF9IQVNfR0xP
QkFMX1NUUklORywgaXQgaXMgZGVmaW5lZAogLy8gaGV1cmlzdGljYWxseS4KIAogbmFtZXNwYWNl
IHRlc3RpbmcgewogCisvLyBTaWxlbmNlIEM0MTAwICh1bnJlZmVyZW5jZWQgZm9ybWFsIHBhcmFt
ZXRlcikgYW5kIDQ4MDUKKy8vIHVuc2FmZSBtaXggb2YgdHlwZSAnY29uc3QgaW50JyBhbmQgdHlw
ZSAnY29uc3QgYm9vbCcKKyNpZmRlZiBfTVNDX1ZFUgorIyBwcmFnbWEgd2FybmluZyhwdXNoKQor
IyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ4MDUpCisjIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6
NDEwMCkKKyNlbmRpZgorCisKIC8vIERlY2xhcmVzIHRoZSBmbGFncy4KIAogLy8gVGhpcyBmbGFn
IHRlbXBvcmFyeSBlbmFibGVzIHRoZSBkaXNhYmxlZCB0ZXN0cy4KQEAgLTExMyw2ICsxMjgsOSBA
QCBHVEVTVF9ERUNMQVJFX3N0cmluZ18ob3V0cHV0KTsKIC8vIHRlc3QuCiBHVEVTVF9ERUNMQVJF
X2Jvb2xfKHByaW50X3RpbWUpOwogCisvLyBUaGlzIGZsYWdzIGNvbnRyb2wgd2hldGhlciBHb29n
bGUgVGVzdCBwcmludHMgVVRGOCBjaGFyYWN0ZXJzIGFzIHRleHQuCitHVEVTVF9ERUNMQVJFX2Jv
b2xfKHByaW50X3V0ZjgpOworCiAvLyBUaGlzIGZsYWcgc3BlY2lmaWVzIHRoZSByYW5kb20gbnVt
YmVyIHNlZWQuCiBHVEVTVF9ERUNMQVJFX2ludDMyXyhyYW5kb21fc2VlZCk7CiAKQEAgLTEzMyw5
ICsxNTEsMTQgQEAgR1RFU1RfREVDTEFSRV9pbnQzMl8oc3RhY2tfdHJhY2VfZGVwdGgpOwogCiAv
LyBXaGVuIHRoaXMgZmxhZyBpcyBzcGVjaWZpZWQsIGEgZmFpbGVkIGFzc2VydGlvbiB3aWxsIHRo
cm93IGFuCiAvLyBleGNlcHRpb24gaWYgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCwgb3IgZXhpdCB0
aGUgcHJvZ3JhbSB3aXRoIGEKLS8vIG5vbi16ZXJvIGNvZGUgb3RoZXJ3aXNlLgorLy8gbm9uLXpl
cm8gY29kZSBvdGhlcndpc2UuIEZvciB1c2Ugd2l0aCBhbiBleHRlcm5hbCB0ZXN0IGZyYW1ld29y
ay4KIEdURVNUX0RFQ0xBUkVfYm9vbF8odGhyb3dfb25fZmFpbHVyZSk7CiAKKy8vIFdoZW4gdGhp
cyBmbGFnIGlzIHNldCB3aXRoIGEgImhvc3Q6cG9ydCIgc3RyaW5nLCBvbiBzdXBwb3J0ZWQKKy8v
IHBsYXRmb3JtcyB0ZXN0IHJlc3VsdHMgYXJlIHN0cmVhbWVkIHRvIHRoZSBzcGVjaWZpZWQgcG9y
dCBvbgorLy8gdGhlIHNwZWNpZmllZCBob3N0IG1hY2hpbmUuCitHVEVTVF9ERUNMQVJFX3N0cmlu
Z18oc3RyZWFtX3Jlc3VsdF90byk7CisKIC8vIFRoZSB1cHBlciBsaW1pdCBmb3IgdmFsaWQgc3Rh
Y2sgdHJhY2UgZGVwdGhzLgogY29uc3QgaW50IGtNYXhTdGFja1RyYWNlRGVwdGggPSAxMDA7CiAK
QEAgLTE0NywzMSArMTcwLDI3IEBAIGNsYXNzIEV4ZWNEZWF0aFRlc3Q7CiBjbGFzcyBOb0V4ZWNE
ZWF0aFRlc3Q7CiBjbGFzcyBGaW5hbFN1Y2Nlc3NDaGVja2VyOwogY2xhc3MgR1Rlc3RGbGFnU2F2
ZXI7Ci1jbGFzcyBUZXN0SW5mb0ltcGw7CitjbGFzcyBTdHJlYW1pbmdMaXN0ZW5lclRlc3Q7CiBj
bGFzcyBUZXN0UmVzdWx0QWNjZXNzb3I7CiBjbGFzcyBUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3Nv
cjsKIGNsYXNzIFRlc3RFdmVudFJlcGVhdGVyOworY2xhc3MgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0
eVRlc3RIZWxwZXI7CiBjbGFzcyBXaW5kb3dzRGVhdGhUZXN0OworY2xhc3MgRnVjaHNpYURlYXRo
VGVzdDsKIGNsYXNzIFVuaXRUZXN0SW1wbCogR2V0VW5pdFRlc3RJbXBsKCk7CiB2b2lkIFJlcG9y
dEZhaWx1cmVJblVua25vd25Mb2NhdGlvbihUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSk7Ci1jbGFzcyBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI7Ci1jbGFzcyBYbWxVbml0
VGVzdFJlc3VsdFByaW50ZXI7Ci0KLS8vIENvbnZlcnRzIGEgc3RyZWFtYWJsZSB2YWx1ZSB0byBh
IFN0cmluZy4gIEEgTlVMTCBwb2ludGVyIGlzCi0vLyBjb252ZXJ0ZWQgdG8gIihudWxsKSIuICBX
aGVuIHRoZSBpbnB1dCB2YWx1ZSBpcyBhIDo6c3RyaW5nLAotLy8gOjpzdGQ6OnN0cmluZywgOjp3
c3RyaW5nLCBvciA6OnN0ZDo6d3N0cmluZyBvYmplY3QsIGVhY2ggTlVMCi0vLyBjaGFyYWN0ZXIg
aW4gaXQgaXMgcmVwbGFjZWQgd2l0aCAiXFwwIi4KLS8vIERlY2xhcmVkIGluIGd0ZXN0LWludGVy
bmFsLmggYnV0IGRlZmluZWQgaGVyZSwgc28gdGhhdCBpdCBoYXMgYWNjZXNzCi0vLyB0byB0aGUg
ZGVmaW5pdGlvbiBvZiB0aGUgTWVzc2FnZSBjbGFzcywgcmVxdWlyZWQgYnkgdGhlIEFSTQotLy8g
Y29tcGlsZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVN0cmluZyBTdHJlYW1hYmxlVG9TdHJp
bmcoY29uc3QgVCYgc3RyZWFtYWJsZSkgewotICByZXR1cm4gKE1lc3NhZ2UoKSA8PCBzdHJlYW1h
YmxlKS5HZXRTdHJpbmcoKTsKLX0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKTsKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
CiAKKy8vIFRoZSBmcmllbmQgcmVsYXRpb25zaGlwIG9mIHNvbWUgb2YgdGhlc2UgY2xhc3NlcyBp
cyBjeWNsaWMuCisvLyBJZiB3ZSBkb24ndCBmb3J3YXJkIGRlY2xhcmUgdGhlbSB0aGUgY29tcGls
ZXIgbWlnaHQgY29uZnVzZSB0aGUgY2xhc3NlcworLy8gaW4gZnJpZW5kc2hpcCBjbGF1c2VzIHdp
dGggc2FtZSBuYW1lZCBjbGFzc2VzIG9uIHRoZSBzY29wZS4KK2NsYXNzIFRlc3Q7CitjbGFzcyBU
ZXN0Q2FzZTsKK2NsYXNzIFRlc3RJbmZvOworY2xhc3MgVW5pdFRlc3Q7CisKIC8vIEEgY2xhc3Mg
Zm9yIGluZGljYXRpbmcgd2hldGhlciBhbiBhc3NlcnRpb24gd2FzIHN1Y2Nlc3NmdWwuICBXaGVu
CiAvLyB0aGUgYXNzZXJ0aW9uIHdhc24ndCBzdWNjZXNzZnVsLCB0aGUgQXNzZXJ0aW9uUmVzdWx0
IG9iamVjdAogLy8gcmVtZW1iZXJzIGEgbm9uLWVtcHR5IG1lc3NhZ2UgdGhhdCBkZXNjcmliZXMg
aG93IGl0IGZhaWxlZC4KQEAgLTI1Niw4ICsyNzUsMzUgQEAgY2xhc3MgR1RFU1RfQVBJXyBBc3Nl
cnRpb25SZXN1bHQgewogICAvLyBDb3B5IGNvbnN0cnVjdG9yLgogICAvLyBVc2VkIGluIEVYUEVD
VF9UUlVFL0ZBTFNFKGFzc2VydGlvbl9yZXN1bHQpLgogICBBc3NlcnRpb25SZXN1bHQoY29uc3Qg
QXNzZXJ0aW9uUmVzdWx0JiBvdGhlcik7CisKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVND
X1ZFUiA8IDE5MTAKKyAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDgwMCAvKiBm
b3JjaW5nIHZhbHVlIHRvIGJvb2wgKi8pCisjZW5kaWYKKwogICAvLyBVc2VkIGluIHRoZSBFWFBF
Q1RfVFJVRS9GQUxTRShib29sX2V4cHJlc3Npb24pLgotICBleHBsaWNpdCBBc3NlcnRpb25SZXN1
bHQoYm9vbCBzdWNjZXNzKSA6IHN1Y2Nlc3NfKHN1Y2Nlc3MpIHt9CisgIC8vCisgIC8vIFQgbXVz
dCBiZSBjb250ZXh0dWFsbHkgY29udmVydGlibGUgdG8gYm9vbC4KKyAgLy8KKyAgLy8gVGhlIHNl
Y29uZCBwYXJhbWV0ZXIgcHJldmVudHMgdGhpcyBvdmVybG9hZCBmcm9tIGJlaW5nIGNvbnNpZGVy
ZWQgaWYKKyAgLy8gdGhlIGFyZ3VtZW50IGlzIGltcGxpY2l0bHkgY29udmVydGlibGUgdG8gQXNz
ZXJ0aW9uUmVzdWx0LiBJbiB0aGF0IGNhc2UKKyAgLy8gd2Ugd2FudCBBc3NlcnRpb25SZXN1bHQn
cyBjb3B5IGNvbnN0cnVjdG9yIHRvIGJlIHVzZWQuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgor
ICBleHBsaWNpdCBBc3NlcnRpb25SZXN1bHQoCisgICAgICBjb25zdCBUJiBzdWNjZXNzLAorICAg
ICAgdHlwZW5hbWUgaW50ZXJuYWw6OkVuYWJsZUlmPAorICAgICAgICAgICFpbnRlcm5hbDo6SW1w
bGljaXRseUNvbnZlcnRpYmxlPFQsIEFzc2VydGlvblJlc3VsdD46OnZhbHVlPjo6dHlwZSoKKyAg
ICAgICAgICAvKmVuYWJsZXIqLyA9IE5VTEwpCisgICAgICA6IHN1Y2Nlc3NfKHN1Y2Nlc3MpIHt9
CisKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA8IDE5MTAKKyAgR1RFU1RfRElT
QUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCisjZW5kaWYKKworICAvLyBBc3NpZ25tZW50IG9wZXJh
dG9yLgorICBBc3NlcnRpb25SZXN1bHQmIG9wZXJhdG9yPShBc3NlcnRpb25SZXN1bHQgb3RoZXIp
IHsKKyAgICBzd2FwKG90aGVyKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KIAogICAvLyBSZXR1
cm5zIHRydWUgaWZmIHRoZSBhc3NlcnRpb24gc3VjY2VlZGVkLgogICBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gc3VjY2Vzc187IH0gIC8vIE5PTElOVApAQCAtMjcwLDIwICszMTYsMzYg
QEAgY2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgewogICAvLyBhc3NlcnRpb24ncyBl
eHBlY3RhdGlvbikuIFdoZW4gbm90aGluZyBoYXMgYmVlbiBzdHJlYW1lZCBpbnRvIHRoZQogICAv
LyBvYmplY3QsIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLgogICBjb25zdCBjaGFyKiBtZXNzYWdl
KCkgY29uc3QgewotICAgIHJldHVybiBtZXNzYWdlXy5nZXQoKSAhPSBOVUxMICYmIG1lc3NhZ2Vf
LT5jX3N0cigpICE9IE5VTEwgPwotICAgICAgICAgICBtZXNzYWdlXy0+Y19zdHIoKSA6ICIiOwor
ICAgIHJldHVybiBtZXNzYWdlXy5nZXQoKSAhPSBOVUxMID8gIG1lc3NhZ2VfLT5jX3N0cigpIDog
IiI7CiAgIH0KLSAgLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogUmVtb3ZlIHRoaXMgYWZ0ZXIg
bWFraW5nIHN1cmUgbm8gY2xpZW50cyB1c2UgaXQuCisgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBh
ZnRlciBtYWtpbmcgc3VyZSBubyBjbGllbnRzIHVzZSBpdC4KICAgLy8gRGVwcmVjYXRlZDsgcGxl
YXNlIHVzZSBtZXNzYWdlKCkgaW5zdGVhZC4KICAgY29uc3QgY2hhciogZmFpbHVyZV9tZXNzYWdl
KCkgY29uc3QgeyByZXR1cm4gbWVzc2FnZSgpOyB9CiAKICAgLy8gU3RyZWFtcyBhIGN1c3RvbSBm
YWlsdXJlIG1lc3NhZ2UgaW50byB0aGlzIG9iamVjdC4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IEFzc2VydGlvblJlc3VsdCYgb3BlcmF0b3I8PChjb25zdCBUJiB2YWx1ZSk7CisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBBc3NlcnRpb25SZXN1bHQmIG9wZXJhdG9yPDwoY29uc3QgVCYgdmFsdWUp
IHsKKyAgICBBcHBlbmRNZXNzYWdlKE1lc3NhZ2UoKSA8PCB2YWx1ZSk7CisgICAgcmV0dXJuICp0
aGlzOworICB9CisKKyAgLy8gQWxsb3dzIHN0cmVhbWluZyBiYXNpYyBvdXRwdXQgbWFuaXB1bGF0
b3JzIHN1Y2ggYXMgZW5kbCBvciBmbHVzaCBpbnRvCisgIC8vIHRoaXMgb2JqZWN0LgorICBBc3Nl
cnRpb25SZXN1bHQmIG9wZXJhdG9yPDwoCisgICAgICA6OnN0ZDo6b3N0cmVhbSYgKCpiYXNpY19t
YW5pcHVsYXRvcikoOjpzdGQ6Om9zdHJlYW0mIHN0cmVhbSkpIHsKKyAgICBBcHBlbmRNZXNzYWdl
KE1lc3NhZ2UoKSA8PCBiYXNpY19tYW5pcHVsYXRvcik7CisgICAgcmV0dXJuICp0aGlzOworICB9
CiAKICBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIHdlIHdhbnQgQXNzZXJ0aW9u
UmVzdWx0IHRvIGJlCi0gIC8vIGNvcHktY29uc3RydWN0aWJsZSBidXQgbm90IGFzc2lnbmFibGUu
Ci0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IEFzc2VydGlvblJlc3VsdCYgb3RoZXIpOworICAvLyBB
cHBlbmRzIHRoZSBjb250ZW50cyBvZiBtZXNzYWdlIHRvIG1lc3NhZ2VfLgorICB2b2lkIEFwcGVu
ZE1lc3NhZ2UoY29uc3QgTWVzc2FnZSYgYV9tZXNzYWdlKSB7CisgICAgaWYgKG1lc3NhZ2VfLmdl
dCgpID09IE5VTEwpCisgICAgICBtZXNzYWdlXy5yZXNldChuZXcgOjpzdGQ6OnN0cmluZyk7Cisg
ICAgbWVzc2FnZV8tPmFwcGVuZChhX21lc3NhZ2UuR2V0U3RyaW5nKCkuY19zdHIoKSk7CisgIH0K
KworICAvLyBTd2FwIHRoZSBjb250ZW50cyBvZiB0aGlzIEFzc2VydGlvblJlc3VsdCB3aXRoIG90
aGVyLgorICB2b2lkIHN3YXAoQXNzZXJ0aW9uUmVzdWx0JiBvdGhlcik7CiAKICAgLy8gU3RvcmVz
IHJlc3VsdCBvZiB0aGUgYXNzZXJ0aW9uIHByZWRpY2F0ZS4KICAgYm9vbCBzdWNjZXNzXzsKQEAg
LTI5MSwxOSArMzUzLDggQEAgY2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgewogICAv
LyBjb25zdHJ1Y3QgaXMgbm90IHNhdGlzZmllZCB3aXRoIHRoZSBwcmVkaWNhdGUncyBvdXRjb21l
LgogICAvLyBSZWZlcmVuY2VkIHZpYSBhIHBvaW50ZXIgdG8gYXZvaWQgdGFraW5nIHRvbyBtdWNo
IHN0YWNrIGZyYW1lIHNwYWNlCiAgIC8vIHdpdGggdGVzdCBhc3NlcnRpb25zLgotICBpbnRlcm5h
bDo6c2NvcGVkX3B0cjxpbnRlcm5hbDo6U3RyaW5nPiBtZXNzYWdlXzsKLX07ICAvLyBjbGFzcyBB
c3NlcnRpb25SZXN1bHQKLQotLy8gU3RyZWFtcyBhIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2UgaW50
byB0aGlzIG9iamVjdC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQXNzZXJ0aW9uUmVzdWx0JiBB
c3NlcnRpb25SZXN1bHQ6Om9wZXJhdG9yPDwoY29uc3QgVCYgdmFsdWUpIHsKLSAgTWVzc2FnZSBt
c2c7Ci0gIGlmIChtZXNzYWdlXy5nZXQoKSAhPSBOVUxMKQotICAgIG1zZyA8PCAqbWVzc2FnZV87
Ci0gIG1zZyA8PCB2YWx1ZTsKLSAgbWVzc2FnZV8ucmVzZXQobmV3IGludGVybmFsOjpTdHJpbmco
bXNnLkdldFN0cmluZygpKSk7Ci0gIHJldHVybiAqdGhpczsKLX0KKyAgaW50ZXJuYWw6OnNjb3Bl
ZF9wdHI8IDo6c3RkOjpzdHJpbmc+IG1lc3NhZ2VfOworfTsKIAogLy8gTWFrZXMgYSBzdWNjZXNz
ZnVsIGFzc2VydGlvbiByZXN1bHQuCiBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBBc3NlcnRp
b25TdWNjZXNzKCk7CkBAIC0zMTUsNiArMzY2LDE1IEBAIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVz
dWx0IEFzc2VydGlvbkZhaWx1cmUoKTsKIC8vIERlcHJlY2F0ZWQ7IHVzZSBBc3NlcnRpb25GYWls
dXJlKCkgPDwgbXNnLgogR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uRmFpbHVy
ZShjb25zdCBNZXNzYWdlJiBtc2cpOwogCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCisvLyBJ
bmNsdWRlcyB0aGUgYXV0by1nZW5lcmF0ZWQgaGVhZGVyIHRoYXQgaW1wbGVtZW50cyBhIGZhbWls
eSBvZiBnZW5lcmljCisvLyBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3Jvcy4gVGhpcyBpbmNsdWRl
IGNvbWVzIGxhdGUgYmVjYXVzZSBpdCByZWxpZXMgb24KKy8vIEFQSXMgZGVjbGFyZWQgYWJvdmUu
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmgiCisKK25hbWVzcGFjZSB0ZXN0aW5n
IHsKKwogLy8gVGhlIGFic3RyYWN0IGNsYXNzIHRoYXQgYWxsIHRlc3RzIGluaGVyaXQgZnJvbS4K
IC8vCiAvLyBJbiBHb29nbGUgVGVzdCwgYSB1bml0IHRlc3QgcHJvZ3JhbSBjb250YWlucyBvbmUg
b3IgbWFueSBUZXN0Q2FzZXMsIGFuZApAQCAtMzI1LDEyICszODUsMTIgQEAgR1RFU1RfQVBJXyBB
c3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uRmFpbHVyZShjb25zdCBNZXNzYWdlJiBtc2cpOwogLy8g
dGhpcyBmb3IgeW91LgogLy8KIC8vIFRoZSBvbmx5IHRpbWUgeW91IGRlcml2ZSBmcm9tIFRlc3Qg
aXMgd2hlbiBkZWZpbmluZyBhIHRlc3QgZml4dHVyZQotLy8gdG8gYmUgdXNlZCBhIFRFU1RfRi4g
IEZvciBleGFtcGxlOgorLy8gdG8gYmUgdXNlZCBpbiBhIFRFU1RfRi4gIEZvciBleGFtcGxlOgog
Ly8KIC8vICAgY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIC8vICAgIHBy
b3RlY3RlZDoKLS8vICAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IC4uLiB9Ci0vLyAgICAgdmly
dHVhbCB2b2lkIFRlYXJEb3duKCkgeyAuLi4gfQorLy8gICAgIHZvaWQgU2V0VXAoKSBvdmVycmlk
ZSB7IC4uLiB9CisvLyAgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlIHsgLi4uIH0KIC8vICAg
ICAuLi4KIC8vICAgfTsKIC8vCkBAIC0zNDAsNyArNDAwLDcgQEAgR1RFU1RfQVBJXyBBc3NlcnRp
b25SZXN1bHQgQXNzZXJ0aW9uRmFpbHVyZShjb25zdCBNZXNzYWdlJiBtc2cpOwogLy8gVGVzdCBp
cyBub3QgY29weWFibGUuCiBjbGFzcyBHVEVTVF9BUElfIFRlc3QgewogIHB1YmxpYzoKLSAgZnJp
ZW5kIGNsYXNzIGludGVybmFsOjpUZXN0SW5mb0ltcGw7CisgIGZyaWVuZCBjbGFzcyBUZXN0SW5m
bzsKIAogICAvLyBEZWZpbmVzIHR5cGVzIGZvciBwb2ludGVycyB0byBmdW5jdGlvbnMgdGhhdCBz
ZXQgdXAgYW5kIHRlYXIgZG93bgogICAvLyBhIHRlc3QgY2FzZS4KQEAgLTM3NiwyMCArNDM2LDIx
IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdCB7CiAgIC8vIG5vbi1mYXRhbCkgZmFpbHVyZS4KICAg
c3RhdGljIGJvb2wgSGFzRmFpbHVyZSgpIHsgcmV0dXJuIEhhc0ZhdGFsRmFpbHVyZSgpIHx8IEhh
c05vbmZhdGFsRmFpbHVyZSgpOyB9CiAKLSAgLy8gTG9ncyBhIHByb3BlcnR5IGZvciB0aGUgY3Vy
cmVudCB0ZXN0LiAgT25seSB0aGUgbGFzdCB2YWx1ZSBmb3IgYSBnaXZlbgotICAvLyBrZXkgaXMg
cmVtZW1iZXJlZC4KLSAgLy8gVGhlc2UgYXJlIHB1YmxpYyBzdGF0aWMgc28gdGhleSBjYW4gYmUg
Y2FsbGVkIGZyb20gdXRpbGl0eSBmdW5jdGlvbnMKLSAgLy8gdGhhdCBhcmUgbm90IG1lbWJlcnMg
b2YgdGhlIHRlc3QgZml4dHVyZS4KLSAgLy8gVGhlIGFyZ3VtZW50cyBhcmUgY29uc3QgY2hhciog
aW5zdGVhZCBzdHJpbmdzLCBhcyBHb29nbGUgVGVzdCBpcyB1c2VkCi0gIC8vIG9uIHBsYXRmb3Jt
cyB3aGVyZSBzdHJpbmcgZG9lc24ndCBjb21waWxlLgotICAvLwotICAvLyBOb3RlIHRoYXQgYSBk
cml2aW5nIGNvbnNpZGVyYXRpb24gZm9yIHRoZXNlIFJlY29yZFByb3BlcnR5IG1ldGhvZHMKLSAg
Ly8gd2FzIHRvIHByb2R1Y2UgeG1sIG91dHB1dCBzdWl0ZWQgdG8gdGhlIEdyZWVuc3BhbiBjaGFy
dGluZyB1dGlsaXR5LAotICAvLyB3aGljaCBhdCBwcmVzZW50IHdpbGwgb25seSBjaGFydCB2YWx1
ZXMgdGhhdCBmaXQgaW4gYSAzMi1iaXQgaW50LiBJdAotICAvLyBpcyB0aGUgdXNlcidzIHJlc3Bv
bnNpYmlsaXR5IHRvIHJlc3RyaWN0IHRoZWlyIHZhbHVlcyB0byAzMi1iaXQgaW50cwotICAvLyBp
ZiB0aGV5IGludGVuZCB0aGVtIHRvIGJlIHVzZWQgd2l0aCBHcmVlbnNwYW4uCi0gIHN0YXRpYyB2
b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0IGNoYXIqIGtleSwgY29uc3QgY2hhciogdmFsdWUpOwot
ICBzdGF0aWMgdm9pZCBSZWNvcmRQcm9wZXJ0eShjb25zdCBjaGFyKiBrZXksIGludCB2YWx1ZSk7
CisgIC8vIExvZ3MgYSBwcm9wZXJ0eSBmb3IgdGhlIGN1cnJlbnQgdGVzdCwgdGVzdCBjYXNlLCBv
ciBmb3IgdGhlIGVudGlyZQorICAvLyBpbnZvY2F0aW9uIG9mIHRoZSB0ZXN0IHByb2dyYW0gd2hl
biB1c2VkIG91dHNpZGUgb2YgdGhlIGNvbnRleHQgb2YgYQorICAvLyB0ZXN0IGNhc2UuICBPbmx5
IHRoZSBsYXN0IHZhbHVlIGZvciBhIGdpdmVuIGtleSBpcyByZW1lbWJlcmVkLiAgVGhlc2UKKyAg
Ly8gYXJlIHB1YmxpYyBzdGF0aWMgc28gdGhleSBjYW4gYmUgY2FsbGVkIGZyb20gdXRpbGl0eSBm
dW5jdGlvbnMgdGhhdCBhcmUKKyAgLy8gbm90IG1lbWJlcnMgb2YgdGhlIHRlc3QgZml4dHVyZS4g
IENhbGxzIHRvIFJlY29yZFByb3BlcnR5IG1hZGUgZHVyaW5nCisgIC8vIGxpZmVzcGFuIG9mIHRo
ZSB0ZXN0IChmcm9tIHRoZSBtb21lbnQgaXRzIGNvbnN0cnVjdG9yIHN0YXJ0cyB0byB0aGUKKyAg
Ly8gbW9tZW50IGl0cyBkZXN0cnVjdG9yIGZpbmlzaGVzKSB3aWxsIGJlIG91dHB1dCBpbiBYTUwg
YXMgYXR0cmlidXRlcyBvZgorICAvLyB0aGUgPHRlc3RjYXNlPiBlbGVtZW50LiAgUHJvcGVydGll
cyByZWNvcmRlZCBmcm9tIGZpeHR1cmUncworICAvLyBTZXRVcFRlc3RDYXNlIG9yIFRlYXJEb3du
VGVzdENhc2UgYXJlIGxvZ2dlZCBhcyBhdHRyaWJ1dGVzIG9mIHRoZQorICAvLyBjb3JyZXNwb25k
aW5nIDx0ZXN0c3VpdGU+IGVsZW1lbnQuICBDYWxscyB0byBSZWNvcmRQcm9wZXJ0eSBtYWRlIGlu
IHRoZQorICAvLyBnbG9iYWwgY29udGV4dCAoYmVmb3JlIG9yIGFmdGVyIGludm9jYXRpb24gb2Yg
UlVOX0FMTF9URVNUUyBhbmQgZnJvbQorICAvLyBTZXRVcC9UZWFyRG93biBtZXRob2Qgb2YgRW52
aXJvbm1lbnQgb2JqZWN0cyByZWdpc3RlcmVkIHdpdGggR29vZ2xlCisgIC8vIFRlc3QpIHdpbGwg
YmUgb3V0cHV0IGFzIGF0dHJpYnV0ZXMgb2YgdGhlIDx0ZXN0c3VpdGVzPiBlbGVtZW50LgorICBz
dGF0aWMgdm9pZCBSZWNvcmRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYga2V5LCBjb25zdCBz
dGQ6OnN0cmluZyYgdmFsdWUpOworICBzdGF0aWMgdm9pZCBSZWNvcmRQcm9wZXJ0eShjb25zdCBz
dGQ6OnN0cmluZyYga2V5LCBpbnQgdmFsdWUpOwogCiAgcHJvdGVjdGVkOgogICAvLyBDcmVhdGVz
IGEgVGVzdCBvYmplY3QuCkBAIC00MTcsMjAgKzQ3OCwyMyBAQCBjbGFzcyBHVEVTVF9BUElfIFRl
c3QgewogICAvLyBTZXRzIHVwLCBleGVjdXRlcywgYW5kIHRlYXJzIGRvd24gdGhlIHRlc3QuCiAg
IHZvaWQgUnVuKCk7CiAKLSAgLy8gVXNlcyBhIEdUZXN0RmxhZ1NhdmVyIHRvIHNhdmUgYW5kIHJl
c3RvcmUgYWxsIEdvb2dsZSBUZXN0IGZsYWdzLgotICBjb25zdCBpbnRlcm5hbDo6R1Rlc3RGbGFn
U2F2ZXIqIGNvbnN0IGd0ZXN0X2ZsYWdfc2F2ZXJfOworICAvLyBEZWxldGVzIHNlbGYuICBXZSBk
ZWxpYmVyYXRlbHkgcGljayBhbiB1bnVzdWFsIG5hbWUgZm9yIHRoaXMKKyAgLy8gaW50ZXJuYWwg
bWV0aG9kIHRvIGF2b2lkIGNsYXNoaW5nIHdpdGggbmFtZXMgdXNlZCBpbiB1c2VyIFRFU1RzLgor
ICB2b2lkIERlbGV0ZVNlbGZfKCkgeyBkZWxldGUgdGhpczsgfQogCi0gIC8vIE9mdGVuIGEgdXNl
ciBtaXMtc3BlbGxzIFNldFVwKCkgYXMgU2V0dXAoKSBhbmQgc3BlbmRzIGEgbG9uZyB0aW1lCisg
IGNvbnN0IGludGVybmFsOjpzY29wZWRfcHRyPCBHVEVTVF9GTEFHX1NBVkVSXyA+IGd0ZXN0X2Zs
YWdfc2F2ZXJfOworCisgIC8vIE9mdGVuIGEgdXNlciBtaXNzcGVsbHMgU2V0VXAoKSBhcyBTZXR1
cCgpIGFuZCBzcGVuZHMgYSBsb25nIHRpbWUKICAgLy8gd29uZGVyaW5nIHdoeSBpdCBpcyBuZXZl
ciBjYWxsZWQgYnkgR29vZ2xlIFRlc3QuICBUaGUgZGVjbGFyYXRpb24gb2YKICAgLy8gdGhlIGZv
bGxvd2luZyBtZXRob2QgaXMgc29sZWx5IGZvciBjYXRjaGluZyBzdWNoIGFuIGVycm9yIGF0CiAg
IC8vIGNvbXBpbGUgdGltZToKICAgLy8KICAgLy8gICAtIFRoZSByZXR1cm4gdHlwZSBpcyBkZWxp
YmVyYXRlbHkgY2hvc2VuIHRvIGJlIG5vdCB2b2lkLCBzbyBpdAotICAvLyAgIHdpbGwgYmUgYSBj
b25mbGljdCBpZiBhIHVzZXIgZGVjbGFyZXMgdm9pZCBTZXR1cCgpIGluIGhpcyB0ZXN0Ci0gIC8v
ICAgZml4dHVyZS4KKyAgLy8gICB3aWxsIGJlIGEgY29uZmxpY3QgaWYgdm9pZCBTZXR1cCgpIGlz
IGRlY2xhcmVkIGluIHRoZSB1c2VyJ3MKKyAgLy8gICB0ZXN0IGZpeHR1cmUuCiAgIC8vCiAgIC8v
ICAgLSBUaGlzIG1ldGhvZCBpcyBwcml2YXRlLCBzbyBpdCB3aWxsIGJlIGFub3RoZXIgY29tcGls
ZXIgZXJyb3IKLSAgLy8gICBpZiBhIHVzZXIgY2FsbHMgaXQgZnJvbSBoaXMgdGVzdCBmaXh0dXJl
LgorICAvLyAgIGlmIHRoZSBtZXRob2QgaXMgY2FsbGVkIGZyb20gdGhlIHVzZXIncyB0ZXN0IGZp
eHR1cmUuCiAgIC8vCiAgIC8vIERPIE5PVCBPVkVSUklERSBUSElTIEZVTkNUSU9OLgogICAvLwpA
QCAtNDU0LDcgKzUxOCw3IEBAIGNsYXNzIFRlc3RQcm9wZXJ0eSB7CiAgIC8vIEMndG9yLiAgVGVz
dFByb3BlcnR5IGRvZXMgTk9UIGhhdmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLgogICAvLyBBbHdh
eXMgdXNlIHRoaXMgY29uc3RydWN0b3IgKHdpdGggcGFyYW1ldGVycykgdG8gY3JlYXRlIGEKICAg
Ly8gVGVzdFByb3BlcnR5IG9iamVjdC4KLSAgVGVzdFByb3BlcnR5KGNvbnN0IGNoYXIqIGFfa2V5
LCBjb25zdCBjaGFyKiBhX3ZhbHVlKSA6CisgIFRlc3RQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmlu
ZyYgYV9rZXksIGNvbnN0IHN0ZDo6c3RyaW5nJiBhX3ZhbHVlKSA6CiAgICAga2V5XyhhX2tleSks
IHZhbHVlXyhhX3ZhbHVlKSB7CiAgIH0KIApAQCAtNDY5LDE1ICs1MzMsMTUgQEAgY2xhc3MgVGVz
dFByb3BlcnR5IHsKICAgfQogCiAgIC8vIFNldHMgYSBuZXcgdmFsdWUsIG92ZXJyaWRpbmcgdGhl
IG9uZSBzdXBwbGllZCBpbiB0aGUgY29uc3RydWN0b3IuCi0gIHZvaWQgU2V0VmFsdWUoY29uc3Qg
Y2hhciogbmV3X3ZhbHVlKSB7CisgIHZvaWQgU2V0VmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5l
d192YWx1ZSkgewogICAgIHZhbHVlXyA9IG5ld192YWx1ZTsKICAgfQogCiAgcHJpdmF0ZToKICAg
Ly8gVGhlIGtleSBzdXBwbGllZCBieSB0aGUgdXNlci4KLSAgaW50ZXJuYWw6OlN0cmluZyBrZXlf
OworICBzdGQ6OnN0cmluZyBrZXlfOwogICAvLyBUaGUgdmFsdWUgc3VwcGxpZWQgYnkgdGhlIHVz
ZXIuCi0gIGludGVybmFsOjpTdHJpbmcgdmFsdWVfOworICBzdGQ6OnN0cmluZyB2YWx1ZV87CiB9
OwogCiAvLyBUaGUgcmVzdWx0IG9mIGEgc2luZ2xlIFRlc3QuICBUaGlzIGluY2x1ZGVzIGEgbGlz
dCBvZgpAQCAtNTE2LDkgKzU4MCw4IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFJlc3VsdCB7CiAg
IC8vIFJldHVybnMgdGhlIGVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5N
aWxsaXMgZWxhcHNlZF90aW1lKCkgY29uc3QgeyByZXR1cm4gZWxhcHNlZF90aW1lXzsgfQogCi0g
IC8vIFJldHVybnMgdGhlIGktdGggdGVzdCBwYXJ0IHJlc3VsdCBhbW9uZyBhbGwgdGhlIHJlc3Vs
dHMuIGkgY2FuIHJhbmdlCi0gIC8vIGZyb20gMCB0byB0ZXN0X3Byb3BlcnR5X2NvdW50KCkgLSAx
LiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCBhYm9ydHMKLSAgLy8gdGhlIHByb2dyYW0uCisg
IC8vIFJldHVybnMgdGhlIGktdGggdGVzdCBwYXJ0IHJlc3VsdCBhbW9uZyBhbGwgdGhlIHJlc3Vs
dHMuIGkgY2FuIHJhbmdlIGZyb20gMAorICAvLyB0byB0b3RhbF9wYXJ0X2NvdW50KCkgLSAxLiBJ
ZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCBhYm9ydHMgdGhlIHByb2dyYW0uCiAgIGNvbnN0IFRl
c3RQYXJ0UmVzdWx0JiBHZXRUZXN0UGFydFJlc3VsdChpbnQgaSkgY29uc3Q7CiAKICAgLy8gUmV0
dXJucyB0aGUgaS10aCB0ZXN0IHByb3BlcnR5LiBpIGNhbiByYW5nZSBmcm9tIDAgdG8KQEAgLTUy
OCwxMyArNTkxLDE0IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFJlc3VsdCB7CiAKICBwcml2YXRl
OgogICBmcmllbmQgY2xhc3MgVGVzdEluZm87CisgIGZyaWVuZCBjbGFzcyBUZXN0Q2FzZTsKICAg
ZnJpZW5kIGNsYXNzIFVuaXRUZXN0OwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkRlZmF1bHRH
bG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyOwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkV4
ZWNEZWF0aFRlc3Q7Ci0gIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VGVzdEluZm9JbXBsOwogICBm
cmllbmQgY2xhc3MgaW50ZXJuYWw6OlRlc3RSZXN1bHRBY2Nlc3NvcjsKICAgZnJpZW5kIGNsYXNz
IGludGVybmFsOjpVbml0VGVzdEltcGw7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6V2luZG93
c0RlYXRoVGVzdDsKKyAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpGdWNoc2lhRGVhdGhUZXN0Owog
CiAgIC8vIEdldHMgdGhlIHZlY3RvciBvZiBUZXN0UGFydFJlc3VsdHMuCiAgIGNvbnN0IHN0ZDo6
dmVjdG9yPFRlc3RQYXJ0UmVzdWx0PiYgdGVzdF9wYXJ0X3Jlc3VsdHMoKSBjb25zdCB7CkBAIC01
NTMsMTMgKzYxNywxNiBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RSZXN1bHQgewogICAvLyBhIG5v
bi1mYXRhbCBmYWlsdXJlIGlmIGludmFsaWQgKGUuZy4sIGlmIGl0IGNvbmZsaWN0cyB3aXRoIHJl
c2VydmVkCiAgIC8vIGtleSBuYW1lcykuIElmIGEgcHJvcGVydHkgaXMgYWxyZWFkeSByZWNvcmRl
ZCBmb3IgdGhlIHNhbWUga2V5LCB0aGUKICAgLy8gdmFsdWUgd2lsbCBiZSB1cGRhdGVkLCByYXRo
ZXIgdGhhbiBzdG9yaW5nIG11bHRpcGxlIHZhbHVlcyBmb3IgdGhlIHNhbWUKLSAgLy8ga2V5Lgot
ICB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSk7
CisgIC8vIGtleS4gIHhtbF9lbGVtZW50IHNwZWNpZmllcyB0aGUgZWxlbWVudCBmb3Igd2hpY2gg
dGhlIHByb3BlcnR5IGlzIGJlaW5nCisgIC8vIHJlY29yZGVkIGFuZCBpcyB1c2VkIGZvciB2YWxp
ZGF0aW9uLgorICB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiB4bWxfZWxl
bWVudCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJv
cGVydHkpOwogCiAgIC8vIEFkZHMgYSBmYWlsdXJlIGlmIHRoZSBrZXkgaXMgYSByZXNlcnZlZCBh
dHRyaWJ1dGUgb2YgR29vZ2xlIFRlc3QKICAgLy8gdGVzdGNhc2UgdGFncy4gIFJldHVybnMgdHJ1
ZSBpZiB0aGUgcHJvcGVydHkgaXMgdmFsaWQuCi0gIC8vIFRPRE8ocnVzc3IpOiBWYWxpZGF0ZSBh
dHRyaWJ1dGUgbmFtZXMgYXJlIGxlZ2FsIGFuZCBodW1hbiByZWFkYWJsZS4KLSAgc3RhdGljIGJv
b2wgVmFsaWRhdGVUZXN0UHJvcGVydHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5
KTsKKyAgLy8gRklYTUU6IFZhbGlkYXRlIGF0dHJpYnV0ZSBuYW1lcyBhcmUgbGVnYWwgYW5kIGh1
bWFuIHJlYWRhYmxlLgorICBzdGF0aWMgYm9vbCBWYWxpZGF0ZVRlc3RQcm9wZXJ0eShjb25zdCBz
dGQ6OnN0cmluZyYgeG1sX2VsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSk7CiAKICAgLy8gQWRkcyBhIHRl
c3QgcGFydCByZXN1bHQgdG8gdGhlIGxpc3QuCiAgIHZvaWQgQWRkVGVzdFBhcnRSZXN1bHQoY29u
c3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpOwpAQCAtNjExLDIwICs2NzgsMzkg
QEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0SW5mbyB7CiAgIH5UZXN0SW5mbygpOwogCiAgIC8vIFJl
dHVybnMgdGhlIHRlc3QgY2FzZSBuYW1lLgotICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgp
IGNvbnN0OworICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRl
c3RfY2FzZV9uYW1lXy5jX3N0cigpOyB9CiAKICAgLy8gUmV0dXJucyB0aGUgdGVzdCBuYW1lLgot
ICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Q7CisgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7
IHJldHVybiBuYW1lXy5jX3N0cigpOyB9CisKKyAgLy8gUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUg
cGFyYW1ldGVyIHR5cGUsIG9yIE5VTEwgaWYgdGhpcyBpcyBub3QgYSB0eXBlZAorICAvLyBvciBh
IHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LgorICBjb25zdCBjaGFyKiB0eXBlX3BhcmFtKCkgY29u
c3QgeworICAgIGlmICh0eXBlX3BhcmFtXy5nZXQoKSAhPSBOVUxMKQorICAgICAgcmV0dXJuIHR5
cGVfcGFyYW1fLT5jX3N0cigpOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgLy8gUmV0dXJu
cyB0aGUgdGV4dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFsdWUgcGFyYW1ldGVyLCBvciBOVUxM
IGlmIHRoaXMKKyAgLy8gaXMgbm90IGEgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0LgorICBjb25z
dCBjaGFyKiB2YWx1ZV9wYXJhbSgpIGNvbnN0IHsKKyAgICBpZiAodmFsdWVfcGFyYW1fLmdldCgp
ICE9IE5VTEwpCisgICAgICByZXR1cm4gdmFsdWVfcGFyYW1fLT5jX3N0cigpOworICAgIHJldHVy
biBOVUxMOworICB9CisKKyAgLy8gUmV0dXJucyB0aGUgZmlsZSBuYW1lIHdoZXJlIHRoaXMgdGVz
dCBpcyBkZWZpbmVkLgorICBjb25zdCBjaGFyKiBmaWxlKCkgY29uc3QgeyByZXR1cm4gbG9jYXRp
b25fLmZpbGUuY19zdHIoKTsgfQogCi0gIC8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBjb21tZW50
LgotICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfY29tbWVudCgpIGNvbnN0OworICAvLyBSZXR1cm5z
IHRoZSBsaW5lIHdoZXJlIHRoaXMgdGVzdCBpcyBkZWZpbmVkLgorICBpbnQgbGluZSgpIGNvbnN0
IHsgcmV0dXJuIGxvY2F0aW9uXy5saW5lOyB9CiAKLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBjb21t
ZW50LgotICBjb25zdCBjaGFyKiBjb21tZW50KCkgY29uc3Q7CisgIC8vIFJldHVybiB0cnVlIGlm
IHRoaXMgdGVzdCBzaG91bGQgbm90IGJlIHJ1biBiZWNhdXNlIGl0J3MgaW4gYW5vdGhlciBzaGFy
ZC4KKyAgYm9vbCBpc19pbl9hbm90aGVyX3NoYXJkKCkgY29uc3QgeyByZXR1cm4gaXNfaW5fYW5v
dGhlcl9zaGFyZF87IH0KIAotICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IHNob3VsZCBy
dW4sIHRoYXQgaXMgaWYgdGhlIHRlc3QgaXMgbm90IGRpc2FibGVkCi0gIC8vIChvciBpdCBpcyBk
aXNhYmxlZCBidXQgdGhlIGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIGZsYWcgaGFzIGJlZW4gc3Bl
Y2lmaWVkKQotICAvLyBhbmQgaXRzIGZ1bGwgbmFtZSBtYXRjaGVzIHRoZSB1c2VyLXNwZWNpZmll
ZCBmaWx0ZXIuCisgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRlc3Qgc2hvdWxkIHJ1biwgdGhh
dCBpcyBpZiB0aGUgdGVzdCBpcyBub3QKKyAgLy8gZGlzYWJsZWQgKG9yIGl0IGlzIGRpc2FibGVk
IGJ1dCB0aGUgYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxhZyBoYXMKKyAgLy8gYmVlbiBzcGVj
aWZpZWQpIGFuZCBpdHMgZnVsbCBuYW1lIG1hdGNoZXMgdGhlIHVzZXItc3BlY2lmaWVkIGZpbHRl
ci4KICAgLy8KICAgLy8gR29vZ2xlIFRlc3QgYWxsb3dzIHRoZSB1c2VyIHRvIGZpbHRlciB0aGUg
dGVzdHMgYnkgdGhlaXIgZnVsbCBuYW1lcy4KICAgLy8gVGhlIGZ1bGwgbmFtZSBvZiBhIHRlc3Qg
QmFyIGluIHRlc3QgY2FzZSBGb28gaXMgZGVmaW5lZCBhcwpAQCAtNjM4LDEwICs3MjQsMTcgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBUZXN0SW5mbyB7CiAgIC8vCiAgIC8vIEZvciBleGFtcGxlLCAqQSo6
Rm9vLiogaXMgYSBmaWx0ZXIgdGhhdCBtYXRjaGVzIGFueSBzdHJpbmcgdGhhdAogICAvLyBjb250
YWlucyB0aGUgY2hhcmFjdGVyICdBJyBvciBzdGFydHMgd2l0aCAiRm9vLiIuCi0gIGJvb2wgc2hv
dWxkX3J1bigpIGNvbnN0OworICBib29sIHNob3VsZF9ydW4oKSBjb25zdCB7IHJldHVybiBzaG91
bGRfcnVuXzsgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyB0ZXN0IHdpbGwgYXBwZWFy
IGluIHRoZSBYTUwgcmVwb3J0LgorICBib29sIGlzX3JlcG9ydGFibGUoKSBjb25zdCB7CisgICAg
Ly8gVGhlIFhNTCByZXBvcnQgaW5jbHVkZXMgdGVzdHMgbWF0Y2hpbmcgdGhlIGZpbHRlciwgZXhj
bHVkaW5nIHRob3NlCisgICAgLy8gcnVuIGluIG90aGVyIHNoYXJkcy4KKyAgICByZXR1cm4gbWF0
Y2hlc19maWx0ZXJfICYmICFpc19pbl9hbm90aGVyX3NoYXJkXzsKKyAgfQogCiAgIC8vIFJldHVy
bnMgdGhlIHJlc3VsdCBvZiB0aGUgdGVzdC4KLSAgY29uc3QgVGVzdFJlc3VsdCogcmVzdWx0KCkg
Y29uc3Q7CisgIGNvbnN0IFRlc3RSZXN1bHQqIHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuICZyZXN1
bHRfOyB9CiAKICBwcml2YXRlOgogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCkBAIC02NDksMzYg
Kzc0Miw2NSBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RJbmZvIHsKICNlbmRpZiAgLy8gR1RFU1Rf
SEFTX0RFQVRIX1RFU1QKICAgZnJpZW5kIGNsYXNzIFRlc3Q7CiAgIGZyaWVuZCBjbGFzcyBUZXN0
Q2FzZTsKLSAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpUZXN0SW5mb0ltcGw7CiAgIGZyaWVuZCBj
bGFzcyBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsOworICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlN0
cmVhbWluZ0xpc3RlbmVyVGVzdDsKICAgZnJpZW5kIFRlc3RJbmZvKiBpbnRlcm5hbDo6TWFrZUFu
ZFJlZ2lzdGVyVGVzdEluZm8oCi0gICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwgY29u
c3QgY2hhciogbmFtZSwKLSAgICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9jb21tZW50LCBjb25z
dCBjaGFyKiBjb21tZW50LAorICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCisgICAg
ICBjb25zdCBjaGFyKiBuYW1lLAorICAgICAgY29uc3QgY2hhciogdHlwZV9wYXJhbSwKKyAgICAg
IGNvbnN0IGNoYXIqIHZhbHVlX3BhcmFtLAorICAgICAgaW50ZXJuYWw6OkNvZGVMb2NhdGlvbiBj
b2RlX2xvY2F0aW9uLAogICAgICAgaW50ZXJuYWw6OlR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkLAog
ICAgICAgVGVzdDo6U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAgICAgVGVzdDo6VGVh
ckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3RjLAogICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0
b3J5QmFzZSogZmFjdG9yeSk7CiAKLSAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBtYXRj
aGVzIHRoZSB1c2VyLXNwZWNpZmllZCBmaWx0ZXIuCi0gIGJvb2wgbWF0Y2hlc19maWx0ZXIoKSBj
b25zdDsKKyAgLy8gQ29uc3RydWN0cyBhIFRlc3RJbmZvIG9iamVjdC4gVGhlIG5ld2x5IGNvbnN0
cnVjdGVkIGluc3RhbmNlIGFzc3VtZXMKKyAgLy8gb3duZXJzaGlwIG9mIHRoZSBmYWN0b3J5IG9i
amVjdC4KKyAgVGVzdEluZm8oY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RfY2FzZV9uYW1lLAorICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKKyAgICAgICAgICAgY29uc3QgY2hhciog
YV90eXBlX3BhcmFtLCAgIC8vIE5VTEwgaWYgbm90IGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QK
KyAgICAgICAgICAgY29uc3QgY2hhciogYV92YWx1ZV9wYXJhbSwgIC8vIE5VTEwgaWYgbm90IGEg
dmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0CisgICAgICAgICAgIGludGVybmFsOjpDb2RlTG9jYXRp
b24gYV9jb2RlX2xvY2F0aW9uLAorICAgICAgICAgICBpbnRlcm5hbDo6VHlwZUlkIGZpeHR1cmVf
Y2xhc3NfaWQsCisgICAgICAgICAgIGludGVybmFsOjpUZXN0RmFjdG9yeUJhc2UqIGZhY3Rvcnkp
OwogCiAgIC8vIEluY3JlbWVudHMgdGhlIG51bWJlciBvZiBkZWF0aCB0ZXN0cyBlbmNvdW50ZXJl
ZCBpbiB0aGlzIHRlc3Qgc28KICAgLy8gZmFyLgotICBpbnQgaW5jcmVtZW50X2RlYXRoX3Rlc3Rf
Y291bnQoKTsKKyAgaW50IGluY3JlbWVudF9kZWF0aF90ZXN0X2NvdW50KCkgeworICAgIHJldHVy
biByZXN1bHRfLmluY3JlbWVudF9kZWF0aF90ZXN0X2NvdW50KCk7CisgIH0KIAotICAvLyBBY2Nl
c3NvcnMgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvYmplY3QuCi0gIGludGVybmFsOjpUZXN0SW5m
b0ltcGwqIGltcGwoKSB7IHJldHVybiBpbXBsXzsgfQotICBjb25zdCBpbnRlcm5hbDo6VGVzdElu
Zm9JbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gaW1wbF87IH0KKyAgLy8gQ3JlYXRlcyB0aGUg
dGVzdCBvYmplY3QsIHJ1bnMgaXQsIHJlY29yZHMgaXRzIHJlc3VsdCwgYW5kIHRoZW4KKyAgLy8g
ZGVsZXRlcyBpdC4KKyAgdm9pZCBSdW4oKTsKIAotICAvLyBDb25zdHJ1Y3RzIGEgVGVzdEluZm8g
b2JqZWN0LiBUaGUgbmV3bHkgY29uc3RydWN0ZWQgaW5zdGFuY2UgYXNzdW1lcwotICAvLyBvd25l
cnNoaXAgb2YgdGhlIGZhY3Rvcnkgb2JqZWN0LgotICBUZXN0SW5mbyhjb25zdCBjaGFyKiB0ZXN0
X2Nhc2VfbmFtZSwgY29uc3QgY2hhciogbmFtZSwKLSAgICAgICAgICAgY29uc3QgY2hhciogdGVz
dF9jYXNlX2NvbW1lbnQsIGNvbnN0IGNoYXIqIGNvbW1lbnQsCi0gICAgICAgICAgIGludGVybmFs
OjpUeXBlSWQgZml4dHVyZV9jbGFzc19pZCwKLSAgICAgICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0
b3J5QmFzZSogZmFjdG9yeSk7CisgIHN0YXRpYyB2b2lkIENsZWFyVGVzdFJlc3VsdChUZXN0SW5m
byogdGVzdF9pbmZvKSB7CisgICAgdGVzdF9pbmZvLT5yZXN1bHRfLkNsZWFyKCk7CisgIH0KIAot
ICAvLyBBbiBvcGFxdWUgaW1wbGVtZW50YXRpb24gb2JqZWN0LgotICBpbnRlcm5hbDo6VGVzdElu
Zm9JbXBsKiBpbXBsXzsKKyAgLy8gVGhlc2UgZmllbGRzIGFyZSBpbW11dGFibGUgcHJvcGVydGll
cyBvZiB0aGUgdGVzdC4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdF9jYXNlX25hbWVfOyAgICAg
Ly8gVGVzdCBjYXNlIG5hbWUKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZV87ICAgICAgICAgICAg
ICAgLy8gVGVzdCBuYW1lCisgIC8vIE5hbWUgb2YgdGhlIHBhcmFtZXRlciB0eXBlLCBvciBOVUxM
IGlmIHRoaXMgaXMgbm90IGEgdHlwZWQgb3IgYQorICAvLyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVz
dC4KKyAgY29uc3QgaW50ZXJuYWw6OnNjb3BlZF9wdHI8Y29uc3QgOjpzdGQ6OnN0cmluZz4gdHlw
ZV9wYXJhbV87CisgIC8vIFRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZhbHVlIHBhcmFtZXRl
ciwgb3IgTlVMTCBpZiB0aGlzIGlzIG5vdCBhCisgIC8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dC4KKyAgY29uc3QgaW50ZXJuYWw6OnNjb3BlZF9wdHI8Y29uc3QgOjpzdGQ6OnN0cmluZz4gdmFs
dWVfcGFyYW1fOworICBpbnRlcm5hbDo6Q29kZUxvY2F0aW9uIGxvY2F0aW9uXzsKKyAgY29uc3Qg
aW50ZXJuYWw6OlR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkXzsgICAvLyBJRCBvZiB0aGUgdGVzdCBm
aXh0dXJlIGNsYXNzCisgIGJvb2wgc2hvdWxkX3J1bl87ICAgICAgICAgICAgICAgICAvLyBUcnVl
IGlmZiB0aGlzIHRlc3Qgc2hvdWxkIHJ1bgorICBib29sIGlzX2Rpc2FibGVkXzsgICAgICAgICAg
ICAgICAgLy8gVHJ1ZSBpZmYgdGhpcyB0ZXN0IGlzIGRpc2FibGVkCisgIGJvb2wgbWF0Y2hlc19m
aWx0ZXJfOyAgICAgICAgICAgICAvLyBUcnVlIGlmIHRoaXMgdGVzdCBtYXRjaGVzIHRoZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlci1zcGVjaWZpZWQgZmlsdGVy
LgorICBib29sIGlzX2luX2Fub3RoZXJfc2hhcmRfOyAgICAgICAgLy8gV2lsbCBiZSBydW4gaW4g
YW5vdGhlciBzaGFyZC4KKyAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogY29uc3QgZmFjdG9y
eV87ICAvLyBUaGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgdGVzdCBvYmplY3QKKworICAvLyBUaGlzIGZp
ZWxkIGlzIG11dGFibGUgYW5kIG5lZWRzIHRvIGJlIHJlc2V0IGJlZm9yZSBydW5uaW5nIHRoZQor
ICAvLyB0ZXN0IGZvciB0aGUgc2Vjb25kIHRpbWUuCisgIFRlc3RSZXN1bHQgcmVzdWx0XzsKIAog
ICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRlc3RJbmZvKTsKIH07CkBAIC02OTYs
OSArODE4LDExIEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdENhc2UgewogICAvLyBBcmd1bWVudHM6
CiAgIC8vCiAgIC8vICAgbmFtZTogICAgICAgICBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UKKyAgLy8g
ICBhX3R5cGVfcGFyYW06IHRoZSBuYW1lIG9mIHRoZSB0ZXN0J3MgdHlwZSBwYXJhbWV0ZXIsIG9y
IE5VTEwgaWYKKyAgLy8gICAgICAgICAgICAgICAgIHRoaXMgaXMgbm90IGEgdHlwZS1wYXJhbWV0
ZXJpemVkIHRlc3QuCiAgIC8vICAgc2V0X3VwX3RjOiAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlv
biB0aGF0IHNldHMgdXAgdGhlIHRlc3QgY2FzZQogICAvLyAgIHRlYXJfZG93bl90YzogcG9pbnRl
ciB0byB0aGUgZnVuY3Rpb24gdGhhdCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UKLSAgVGVzdENh
c2UoY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogY29tbWVudCwKKyAgVGVzdENhc2UoY29u
c3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogYV90eXBlX3BhcmFtLAogICAgICAgICAgICBUZXN0
OjpTZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCiAgICAgICAgICAgIFRlc3Q6OlRlYXJEb3du
VGVzdENhc2VGdW5jIHRlYXJfZG93bl90Yyk7CiAKQEAgLTcwOCw4ICs4MzIsMTMgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIEdldHMgdGhlIG5hbWUgb2YgdGhlIFRlc3RDYXNl
LgogICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbmFtZV8uY19zdHIoKTsgfQog
Ci0gIC8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBjb21tZW50LgotICBjb25zdCBjaGFyKiBjb21t
ZW50KCkgY29uc3QgeyByZXR1cm4gY29tbWVudF8uY19zdHIoKTsgfQorICAvLyBSZXR1cm5zIHRo
ZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdHlwZSwgb3IgTlVMTCBpZiB0aGlzIGlzIG5vdCBhCisg
IC8vIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UuCisgIGNvbnN0IGNoYXIqIHR5cGVfcGFy
YW0oKSBjb25zdCB7CisgICAgaWYgKHR5cGVfcGFyYW1fLmdldCgpICE9IE5VTEwpCisgICAgICBy
ZXR1cm4gdHlwZV9wYXJhbV8tPmNfc3RyKCk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KIAogICAv
LyBSZXR1cm5zIHRydWUgaWYgYW55IHRlc3QgaW4gdGhpcyB0ZXN0IGNhc2Ugc2hvdWxkIHJ1bi4K
ICAgYm9vbCBzaG91bGRfcnVuKCkgY29uc3QgeyByZXR1cm4gc2hvdWxkX3J1bl87IH0KQEAgLTcy
MCw5ICs4NDksMTUgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIEdldHMgdGhl
IG51bWJlciBvZiBmYWlsZWQgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCiAgIGludCBmYWlsZWRf
dGVzdF9jb3VudCgpIGNvbnN0OwogCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0
ZXN0cyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhNTCByZXBvcnQuCisgIGludCByZXBv
cnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdDsKKwogICAvLyBHZXRzIHRoZSBudW1i
ZXIgb2YgZGlzYWJsZWQgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCiAgIGludCBkaXNhYmxlZF90
ZXN0X2NvdW50KCkgY29uc3Q7CiAKKyAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRvIGJl
IHByaW50ZWQgaW4gdGhlIFhNTCByZXBvcnQuCisgIGludCByZXBvcnRhYmxlX3Rlc3RfY291bnQo
KSBjb25zdDsKKwogICAvLyBHZXQgdGhlIG51bWJlciBvZiB0ZXN0cyBpbiB0aGlzIHRlc3QgY2Fz
ZSB0aGF0IHNob3VsZCBydW4uCiAgIGludCB0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0OwogCkBA
IC03NDIsNiArODc3LDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdENhc2UgewogICAvLyB0b3Rh
bF90ZXN0X2NvdW50KCkgLSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCByZXR1cm5zIE5V
TEwuCiAgIGNvbnN0IFRlc3RJbmZvKiBHZXRUZXN0SW5mbyhpbnQgaSkgY29uc3Q7CiAKKyAgLy8g
UmV0dXJucyB0aGUgVGVzdFJlc3VsdCB0aGF0IGhvbGRzIHRlc3QgcHJvcGVydGllcyByZWNvcmRl
ZCBkdXJpbmcKKyAgLy8gZXhlY3V0aW9uIG9mIFNldFVwVGVzdENhc2UgYW5kIFRlYXJEb3duVGVz
dENhc2UuCisgIGNvbnN0IFRlc3RSZXN1bHQmIGFkX2hvY190ZXN0X3Jlc3VsdCgpIGNvbnN0IHsg
cmV0dXJuIGFkX2hvY190ZXN0X3Jlc3VsdF87IH0KKwogIHByaXZhdGU6CiAgIGZyaWVuZCBjbGFz
cyBUZXN0OwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbDsKQEAgLTc3Niwx
NyArOTE1LDQ0IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdENhc2UgewogICAvLyBSdW5zIGV2ZXJ5
IHRlc3QgaW4gdGhpcyBUZXN0Q2FzZS4KICAgdm9pZCBSdW4oKTsKIAorICAvLyBSdW5zIFNldFVw
VGVzdENhc2UoKSBmb3IgdGhpcyBUZXN0Q2FzZS4gIFRoaXMgd3JhcHBlciBpcyBuZWVkZWQKKyAg
Ly8gZm9yIGNhdGNoaW5nIGV4Y2VwdGlvbnMgdGhyb3duIGZyb20gU2V0VXBUZXN0Q2FzZSgpLgor
ICB2b2lkIFJ1blNldFVwVGVzdENhc2UoKSB7ICgqc2V0X3VwX3RjXykoKTsgfQorCisgIC8vIFJ1
bnMgVGVhckRvd25UZXN0Q2FzZSgpIGZvciB0aGlzIFRlc3RDYXNlLiAgVGhpcyB3cmFwcGVyIGlz
CisgIC8vIG5lZWRlZCBmb3IgY2F0Y2hpbmcgZXhjZXB0aW9ucyB0aHJvd24gZnJvbSBUZWFyRG93
blRlc3RDYXNlKCkuCisgIHZvaWQgUnVuVGVhckRvd25UZXN0Q2FzZSgpIHsgKCp0ZWFyX2Rvd25f
dGNfKSgpOyB9CisKICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0IHBhc3NlZC4KLSAgc3RhdGlj
IGJvb2wgVGVzdFBhc3NlZChjb25zdCBUZXN0SW5mbyAqIHRlc3RfaW5mbyk7CisgIHN0YXRpYyBi
b29sIFRlc3RQYXNzZWQoY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0
ZXN0X2luZm8tPnNob3VsZF9ydW4oKSAmJiB0ZXN0X2luZm8tPnJlc3VsdCgpLT5QYXNzZWQoKTsK
KyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGVzdCBmYWlsZWQuCi0gIHN0YXRpYyBib29s
IFRlc3RGYWlsZWQoY29uc3QgVGVzdEluZm8gKiB0ZXN0X2luZm8pOworICBzdGF0aWMgYm9vbCBU
ZXN0RmFpbGVkKGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKKyAgICByZXR1cm4gdGVzdF9p
bmZvLT5zaG91bGRfcnVuKCkgJiYgdGVzdF9pbmZvLT5yZXN1bHQoKS0+RmFpbGVkKCk7CisgIH0K
KworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB0ZXN0IGlzIGRpc2FibGVkIGFuZCB3aWxsIGJl
IHJlcG9ydGVkIGluIHRoZSBYTUwKKyAgLy8gcmVwb3J0LgorICBzdGF0aWMgYm9vbCBUZXN0UmVw
b3J0YWJsZURpc2FibGVkKGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKKyAgICByZXR1cm4g
dGVzdF9pbmZvLT5pc19yZXBvcnRhYmxlKCkgJiYgdGVzdF9pbmZvLT5pc19kaXNhYmxlZF87Cisg
IH0KIAogICAvLyBSZXR1cm5zIHRydWUgaWZmIHRlc3QgaXMgZGlzYWJsZWQuCi0gIHN0YXRpYyBi
b29sIFRlc3REaXNhYmxlZChjb25zdCBUZXN0SW5mbyAqIHRlc3RfaW5mbyk7CisgIHN0YXRpYyBi
b29sIFRlc3REaXNhYmxlZChjb25zdCBUZXN0SW5mbyogdGVzdF9pbmZvKSB7CisgICAgcmV0dXJu
IHRlc3RfaW5mby0+aXNfZGlzYWJsZWRfOworICB9CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0
aGlzIHRlc3Qgd2lsbCBhcHBlYXIgaW4gdGhlIFhNTCByZXBvcnQuCisgIHN0YXRpYyBib29sIFRl
c3RSZXBvcnRhYmxlKGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKKyAgICByZXR1cm4gdGVz
dF9pbmZvLT5pc19yZXBvcnRhYmxlKCk7CisgIH0KIAogICAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
IGdpdmVuIHRlc3Qgc2hvdWxkIHJ1bi4KLSAgc3RhdGljIGJvb2wgU2hvdWxkUnVuVGVzdChjb25z
dCBUZXN0SW5mbyAqdGVzdF9pbmZvKTsKKyAgc3RhdGljIGJvb2wgU2hvdWxkUnVuVGVzdChjb25z
dCBUZXN0SW5mbyogdGVzdF9pbmZvKSB7CisgICAgcmV0dXJuIHRlc3RfaW5mby0+c2hvdWxkX3J1
bigpOworICB9CiAKICAgLy8gU2h1ZmZsZXMgdGhlIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlLgog
ICB2b2lkIFNodWZmbGVUZXN0cyhpbnRlcm5hbDo6UmFuZG9tKiByYW5kb20pOwpAQCAtNzk1LDkg
Kzk2MSwxMCBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RDYXNlIHsKICAgdm9pZCBVbnNodWZmbGVU
ZXN0cygpOwogCiAgIC8vIE5hbWUgb2YgdGhlIHRlc3QgY2FzZS4KLSAgaW50ZXJuYWw6OlN0cmlu
ZyBuYW1lXzsKLSAgLy8gQ29tbWVudCBvbiB0aGUgdGVzdCBjYXNlLgotICBpbnRlcm5hbDo6U3Ry
aW5nIGNvbW1lbnRfOworICBzdGQ6OnN0cmluZyBuYW1lXzsKKyAgLy8gTmFtZSBvZiB0aGUgcGFy
YW1ldGVyIHR5cGUsIG9yIE5VTEwgaWYgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhCisgIC8vIHR5
cGUtcGFyYW1ldGVyaXplZCB0ZXN0LgorICBjb25zdCBpbnRlcm5hbDo6c2NvcGVkX3B0cjxjb25z
dCA6OnN0ZDo6c3RyaW5nPiB0eXBlX3BhcmFtXzsKICAgLy8gVGhlIHZlY3RvciBvZiBUZXN0SW5m
b3MgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIuICBJdCBvd25zIHRoZQogICAvLyBlbGVtZW50cyBp
biB0aGUgdmVjdG9yLgogICBzdGQ6OnZlY3RvcjxUZXN0SW5mbyo+IHRlc3RfaW5mb19saXN0XzsK
QEAgLTgxMywxMyArOTgwLDE2IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdENhc2UgewogICBib29s
IHNob3VsZF9ydW5fOwogICAvLyBFbGFwc2VkIHRpbWUsIGluIG1pbGxpc2Vjb25kcy4KICAgVGlt
ZUluTWlsbGlzIGVsYXBzZWRfdGltZV87CisgIC8vIEhvbGRzIHRlc3QgcHJvcGVydGllcyByZWNv
cmRlZCBkdXJpbmcgZXhlY3V0aW9uIG9mIFNldFVwVGVzdENhc2UgYW5kCisgIC8vIFRlYXJEb3du
VGVzdENhc2UuCisgIFRlc3RSZXN1bHQgYWRfaG9jX3Rlc3RfcmVzdWx0XzsKIAogICAvLyBXZSBk
aXNhbGxvdyBjb3B5aW5nIFRlc3RDYXNlcy4KICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOXyhUZXN0Q2FzZSk7CiB9OwogCiAvLyBBbiBFbnZpcm9ubWVudCBvYmplY3QgaXMgY2FwYWJs
ZSBvZiBzZXR0aW5nIHVwIGFuZCB0ZWFyaW5nIGRvd24gYW4KLS8vIGVudmlyb25tZW50LiAgVGhl
IHVzZXIgc2hvdWxkIHN1YmNsYXNzIHRoaXMgdG8gZGVmaW5lIGhpcyBvd24KKy8vIGVudmlyb25t
ZW50LiAgWW91IHNob3VsZCBzdWJjbGFzcyB0aGlzIHRvIGRlZmluZSB5b3VyIG93bgogLy8gZW52
aXJvbm1lbnQocykuCiAvLwogLy8gQW4gRW52aXJvbm1lbnQgb2JqZWN0IGRvZXMgdGhlIHNldC11
cCBhbmQgdGVhci1kb3duIGluIHZpcnR1YWwKQEAgLTg0OSw2ICsxMDE5LDE4IEBAIGNsYXNzIEVu
dmlyb25tZW50IHsKICAgdmlydHVhbCBTZXR1cF9zaG91bGRfYmVfc3BlbGxlZF9TZXRVcCogU2V0
dXAoKSB7IHJldHVybiBOVUxMOyB9CiB9OwogCisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKwor
Ly8gRXhjZXB0aW9uIHdoaWNoIGNhbiBiZSB0aHJvd24gZnJvbSBUZXN0RXZlbnRMaXN0ZW5lcjo6
T25UZXN0UGFydFJlc3VsdC4KK2NsYXNzIEdURVNUX0FQSV8gQXNzZXJ0aW9uRXhjZXB0aW9uCisg
ICAgOiBwdWJsaWMgaW50ZXJuYWw6Okdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uIHsKKyBwdWJs
aWM6CisgIGV4cGxpY2l0IEFzc2VydGlvbkV4Y2VwdGlvbihjb25zdCBUZXN0UGFydFJlc3VsdCYg
cmVzdWx0KQorICAgICAgOiBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbihyZXN1bHQpIHt9Cit9
OworCisjZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCisKIC8vIFRoZSBpbnRlcmZhY2Ug
Zm9yIHRyYWNpbmcgZXhlY3V0aW9uIG9mIHRlc3RzLiBUaGUgbWV0aG9kcyBhcmUgb3JnYW5pemVk
IGluCiAvLyB0aGUgb3JkZXIgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnRzIGFyZSBmaXJlZC4KIGNs
YXNzIFRlc3RFdmVudExpc3RlbmVyIHsKQEAgLTg3Niw3ICsxMDU4LDkgQEAgY2xhc3MgVGVzdEV2
ZW50TGlzdGVuZXIgewogICAvLyBGaXJlZCBiZWZvcmUgdGhlIHRlc3Qgc3RhcnRzLgogICB2aXJ0
dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbykgPSAwOwogCi0g
IC8vIEZpcmVkIGFmdGVyIGEgZmFpbGVkIGFzc2VydGlvbiBvciBhIFNVQ0NFU1MoKS4KKyAgLy8g
RmlyZWQgYWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VFRCgpIGludm9jYXRpb24u
CisgIC8vIElmIHlvdSB3YW50IHRvIHRocm93IGFuIGV4Y2VwdGlvbiBmcm9tIHRoaXMgZnVuY3Rp
b24gdG8gc2tpcCB0byB0aGUgbmV4dAorICAvLyBURVNULCBpdCBtdXN0IGJlIEFzc2VydGlvbkV4
Y2VwdGlvbiBkZWZpbmVkIGFib3ZlLCBvciBpbmhlcml0ZWQgZnJvbSBpdC4KICAgdmlydHVhbCB2
b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1
bHQpID0gMDsKIAogICAvLyBGaXJlZCBhZnRlciB0aGUgdGVzdCBlbmRzLgpAQCAtOTYxLDEwICsx
MTQ1LDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdEV2ZW50TGlzdGVuZXJzIHsKIAogIHByaXZh
dGU6CiAgIGZyaWVuZCBjbGFzcyBUZXN0Q2FzZTsKKyAgZnJpZW5kIGNsYXNzIFRlc3RJbmZvOwog
ICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkRlZmF1bHRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9y
dGVyOwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6Ok5vRXhlY0RlYXRoVGVzdDsKICAgZnJpZW5k
IGNsYXNzIGludGVybmFsOjpUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3NvcjsKLSAgZnJpZW5kIGNs
YXNzIGludGVybmFsOjpUZXN0SW5mb0ltcGw7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VW5p
dFRlc3RJbXBsOwogCiAgIC8vIFJldHVybnMgcmVwZWF0ZXIgdGhhdCBicm9hZGNhc3RzIHRoZSBU
ZXN0RXZlbnRMaXN0ZW5lciBldmVudHMgdG8gYWxsCkBAIC0xMDMyLDIyICsxMjE2LDIzIEBAIGNs
YXNzIEdURVNUX0FQSV8gVW5pdFRlc3QgewogCiAgIC8vIFJldHVybnMgdGhlIFRlc3RDYXNlIG9i
amVjdCBmb3IgdGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLAogICAvLyBvciBOVUxM
IGlmIG5vIHRlc3QgaXMgcnVubmluZy4KLSAgY29uc3QgVGVzdENhc2UqIGN1cnJlbnRfdGVzdF9j
YXNlKCkgY29uc3Q7CisgIGNvbnN0IFRlc3RDYXNlKiBjdXJyZW50X3Rlc3RfY2FzZSgpIGNvbnN0
CisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCiAgIC8vIFJldHVybnMgdGhl
IFRlc3RJbmZvIG9iamVjdCBmb3IgdGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLAog
ICAvLyBvciBOVUxMIGlmIG5vIHRlc3QgaXMgcnVubmluZy4KLSAgY29uc3QgVGVzdEluZm8qIGN1
cnJlbnRfdGVzdF9pbmZvKCkgY29uc3Q7CisgIGNvbnN0IFRlc3RJbmZvKiBjdXJyZW50X3Rlc3Rf
aW5mbygpIGNvbnN0CisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCiAgIC8v
IFJldHVybnMgdGhlIHJhbmRvbSBzZWVkIHVzZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50
IHRlc3QgcnVuLgogICBpbnQgcmFuZG9tX3NlZWQoKSBjb25zdDsKIAotI2lmIEdURVNUX0hBU19Q
QVJBTV9URVNUCiAgIC8vIFJldHVybnMgdGhlIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5
IG9iamVjdCB1c2VkIHRvIGtlZXAgdHJhY2sgb2YKICAgLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0
ZXN0cyBhbmQgaW5zdGFudGlhdGUgYW5kIHJlZ2lzdGVyIHRoZW0uCiAgIC8vCiAgIC8vIElOVEVS
TkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KLSAgaW50
ZXJuYWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5JiBwYXJhbWV0ZXJpemVkX3Rlc3Rf
cmVnaXN0cnkoKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKKyAgaW50ZXJuYWw6
OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5JiBwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0
cnkoKQorICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKTsKIAogICAvLyBHZXRzIHRo
ZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCB0ZXN0IGNhc2VzLgogICBpbnQgc3VjY2Vzc2Z1bF90ZXN0
X2Nhc2VfY291bnQoKSBjb25zdDsKQEAgLTEwNjgsMTUgKzEyNTMsMjUgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBVbml0VGVzdCB7CiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVzdHMuCiAg
IGludCBmYWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0OwogCisgIC8vIEdldHMgdGhlIG51bWJlciBv
ZiBkaXNhYmxlZCB0ZXN0cyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhNTCByZXBvcnQu
CisgIGludCByZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdDsKKwogICAvLyBH
ZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMuCiAgIGludCBkaXNhYmxlZF90ZXN0X2Nv
dW50KCkgY29uc3Q7CiAKKyAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50
ZWQgaW4gdGhlIFhNTCByZXBvcnQuCisgIGludCByZXBvcnRhYmxlX3Rlc3RfY291bnQoKSBjb25z
dDsKKwogICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgYWxsIHRlc3RzLgogICBpbnQgdG90YWxfdGVz
dF9jb3VudCgpIGNvbnN0OwogCiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0cyB0aGF0IHNo
b3VsZCBydW4uCiAgIGludCB0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0OwogCisgIC8vIEdldHMg
dGhlIHRpbWUgb2YgdGhlIHRlc3QgcHJvZ3JhbSBzdGFydCwgaW4gbXMgZnJvbSB0aGUgc3RhcnQg
b2YgdGhlCisgIC8vIFVOSVggZXBvY2guCisgIFRpbWVJbk1pbGxpcyBzdGFydF90aW1lc3RhbXAo
KSBjb25zdDsKKwogICAvLyBHZXRzIHRoZSBlbGFwc2VkIHRpbWUsIGluIG1pbGxpc2Vjb25kcy4K
ICAgVGltZUluTWlsbGlzIGVsYXBzZWRfdGltZSgpIGNvbnN0OwogCkBAIC0xMDkxLDYgKzEyODYs
MTAgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdCB7CiAgIC8vIHRvdGFsX3Rlc3RfY2FzZV9j
b3VudCgpIC0gMS4gSWYgaSBpcyBub3QgaW4gdGhhdCByYW5nZSwgcmV0dXJucyBOVUxMLgogICBj
b25zdCBUZXN0Q2FzZSogR2V0VGVzdENhc2UoaW50IGkpIGNvbnN0OwogCisgIC8vIFJldHVybnMg
dGhlIFRlc3RSZXN1bHQgY29udGFpbmluZyBpbmZvcm1hdGlvbiBvbiB0ZXN0IGZhaWx1cmVzIGFu
ZAorICAvLyBwcm9wZXJ0aWVzIGxvZ2dlZCBvdXRzaWRlIG9mIGluZGl2aWR1YWwgdGVzdCBjYXNl
cy4KKyAgY29uc3QgVGVzdFJlc3VsdCYgYWRfaG9jX3Rlc3RfcmVzdWx0KCkgY29uc3Q7CisKICAg
Ly8gUmV0dXJucyB0aGUgbGlzdCBvZiBldmVudCBsaXN0ZW5lcnMgdGhhdCBjYW4gYmUgdXNlZCB0
byB0cmFjayBldmVudHMKICAgLy8gaW5zaWRlIEdvb2dsZSBUZXN0LgogICBUZXN0RXZlbnRMaXN0
ZW5lcnMmIGxpc3RlbmVycygpOwpAQCAtMTExNCwxMiArMTMxMywxNiBAQCBjbGFzcyBHVEVTVF9B
UElfIFVuaXRUZXN0IHsKICAgdm9pZCBBZGRUZXN0UGFydFJlc3VsdChUZXN0UGFydFJlc3VsdDo6
VHlwZSByZXN1bHRfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBm
aWxlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVfbnVtYmVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludGVybmFsOjpTdHJpbmcmIG1lc3NhZ2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyYgb3Nfc3RhY2tf
dHJhY2UpOworICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNz
YWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvc19zdGFj
a190cmFjZSkKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4Xyk7CiAKLSAgLy8gQWRk
cyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUgY3VycmVudCBUZXN0UmVzdWx0IG9iamVjdC4gSWYgdGhl
IHJlc3VsdCBhbHJlYWR5Ci0gIC8vIGNvbnRhaW5zIGEgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBr
ZXksIHRoZSB2YWx1ZSB3aWxsIGJlIHVwZGF0ZWQuCi0gIHZvaWQgUmVjb3JkUHJvcGVydHlGb3JD
dXJyZW50VGVzdChjb25zdCBjaGFyKiBrZXksIGNvbnN0IGNoYXIqIHZhbHVlKTsKKyAgLy8gQWRk
cyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUgY3VycmVudCBUZXN0UmVzdWx0IG9iamVjdCB3aGVuIGlu
dm9rZWQgZnJvbQorICAvLyBpbnNpZGUgYSB0ZXN0LCB0byBjdXJyZW50IFRlc3RDYXNlJ3MgYWRf
aG9jX3Rlc3RfcmVzdWx0XyB3aGVuIGludm9rZWQKKyAgLy8gZnJvbSBTZXRVcFRlc3RDYXNlIG9y
IFRlYXJEb3duVGVzdENhc2UsIG9yIHRvIHRoZSBnbG9iYWwgcHJvcGVydHkgc2V0CisgIC8vIHdo
ZW4gaW52b2tlZCBlbHNld2hlcmUuICBJZiB0aGUgcmVzdWx0IGFscmVhZHkgY29udGFpbnMgYSBw
cm9wZXJ0eSB3aXRoCisgIC8vIHRoZSBzYW1lIGtleSwgdGhlIHZhbHVlIHdpbGwgYmUgdXBkYXRl
ZC4KKyAgdm9pZCBSZWNvcmRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYga2V5LCBjb25zdCBz
dGQ6OnN0cmluZyYgdmFsdWUpOwogCiAgIC8vIEdldHMgdGhlIGktdGggdGVzdCBjYXNlIGFtb25n
IGFsbCB0aGUgdGVzdCBjYXNlcy4gaSBjYW4gcmFuZ2UgZnJvbSAwIHRvCiAgIC8vIHRvdGFsX3Rl
c3RfY2FzZV9jb3VudCgpIC0gMS4gSWYgaSBpcyBub3QgaW4gdGhhdCByYW5nZSwgcmV0dXJucyBO
VUxMLgpAQCAtMTEyOSwxNiArMTMzMiwxOCBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0IHsK
ICAgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCogaW1wbCgpIHsgcmV0dXJuIGltcGxfOyB9CiAgIGNv
bnN0IGludGVybmFsOjpVbml0VGVzdEltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBpbXBsXzsg
fQogCi0gIC8vIFRoZXNlIGNsYXNzZXMgYW5kIGZ1bmNpb25zIGFyZSBmcmllbmRzIGFzIHRoZXkg
bmVlZCB0byBhY2Nlc3MgcHJpdmF0ZQorICAvLyBUaGVzZSBjbGFzc2VzIGFuZCBmdW5jdGlvbnMg
YXJlIGZyaWVuZHMgYXMgdGhleSBuZWVkIHRvIGFjY2VzcyBwcml2YXRlCiAgIC8vIG1lbWJlcnMg
b2YgVW5pdFRlc3QuCisgIGZyaWVuZCBjbGFzcyBTY29wZWRUcmFjZTsKICAgZnJpZW5kIGNsYXNz
IFRlc3Q7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6QXNzZXJ0SGVscGVyOwotICBmcmllbmQg
Y2xhc3MgaW50ZXJuYWw6OlNjb3BlZFRyYWNlOworICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlN0
cmVhbWluZ0xpc3RlbmVyVGVzdDsKKyAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpVbml0VGVzdFJl
Y29yZFByb3BlcnR5VGVzdEhlbHBlcjsKICAgZnJpZW5kIEVudmlyb25tZW50KiBBZGRHbG9iYWxU
ZXN0RW52aXJvbm1lbnQoRW52aXJvbm1lbnQqIGVudik7CiAgIGZyaWVuZCBpbnRlcm5hbDo6VW5p
dFRlc3RJbXBsKiBpbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCk7CiAgIGZyaWVuZCB2b2lkIGlu
dGVybmFsOjpSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oCiAgICAgICBUZXN0UGFydFJl
c3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKLSAgICAgIGNvbnN0IGludGVybmFsOjpTdHJpbmcmIG1l
c3NhZ2UpOworICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpOwogCiAgIC8vIENyZWF0
ZXMgYW4gZW1wdHkgVW5pdFRlc3QuCiAgIFVuaXRUZXN0KCk7CkBAIC0xMTQ4LDEwICsxMzUzLDEy
IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3QgewogCiAgIC8vIFB1c2hlcyBhIHRyYWNlIGRl
ZmluZWQgYnkgU0NPUEVEX1RSQUNFKCkgb24gdG8gdGhlIHBlci10aHJlYWQKICAgLy8gR29vZ2xl
IFRlc3QgdHJhY2Ugc3RhY2suCi0gIHZvaWQgUHVzaEdUZXN0VHJhY2UoY29uc3QgaW50ZXJuYWw6
OlRyYWNlSW5mbyYgdHJhY2UpOworICB2b2lkIFB1c2hHVGVzdFRyYWNlKGNvbnN0IGludGVybmFs
OjpUcmFjZUluZm8mIHRyYWNlKQorICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKTsK
IAogICAvLyBQb3BzIGEgdHJhY2UgZnJvbSB0aGUgcGVyLXRocmVhZCBHb29nbGUgVGVzdCB0cmFj
ZSBzdGFjay4KLSAgdm9pZCBQb3BHVGVzdFRyYWNlKCk7CisgIHZvaWQgUG9wR1Rlc3RUcmFjZSgp
CisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCiAgIC8vIFByb3RlY3RzIG11
dGFibGUgc3RhdGUgaW4gKmltcGxfLiAgVGhpcyBpcyBtdXRhYmxlIGFzIHNvbWUgY29uc3QKICAg
Ly8gbWV0aG9kcyBuZWVkIHRvIGxvY2sgaXQgdG9vLgpAQCAtMTIwNiw4MiArMTQxMyw0MCBAQCBH
VEVTVF9BUElfIHZvaWQgSW5pdEdvb2dsZVRlc3QoaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndik7
CiAKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKLS8vIFRoZXNlIG92ZXJsb2FkZWQgdmVyc2lvbnMg
aGFuZGxlIDo6c3RkOjpzdHJpbmcgYW5kIDo6c3RkOjp3c3RyaW5nLgotR1RFU1RfQVBJXyBpbmxp
bmUgU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0
cikgewotICByZXR1cm4gKE1lc3NhZ2UoKSA8PCAnIicgPDwgc3RyIDw8ICciJykuR2V0U3RyaW5n
KCk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKLUdURVNUX0FQSV8gaW5saW5lIFN0
cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjb25zdCA6OnN0ZDo6d3N0cmluZyYgd3N0cikg
ewotICByZXR1cm4gKE1lc3NhZ2UoKSA8PCAiTFwiIiA8PCB3c3RyIDw8ICciJykuR2V0U3RyaW5n
KCk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORwotCi0vLyBUaGVzZSBvdmVy
bG9hZGVkIHZlcnNpb25zIGhhbmRsZSA6OnN0cmluZyBhbmQgOjp3c3RyaW5nLgotI2lmIEdURVNU
X0hBU19HTE9CQUxfU1RSSU5HCi1HVEVTVF9BUElfIGlubGluZSBTdHJpbmcgRm9ybWF0Rm9yRmFp
bHVyZU1lc3NhZ2UoY29uc3QgOjpzdHJpbmcmIHN0cikgewotICByZXR1cm4gKE1lc3NhZ2UoKSA8
PCAnIicgPDwgc3RyIDw8ICciJykuR2V0U3RyaW5nKCk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hB
U19HTE9CQUxfU1RSSU5HCi0KLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKLUdURVNUX0FQ
SV8gaW5saW5lIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjb25zdCA6OndzdHJpbmcm
IHdzdHIpIHsKLSAgcmV0dXJuIChNZXNzYWdlKCkgPDwgIkxcIiIgPDwgd3N0ciA8PCAnIicpLkdl
dFN0cmluZygpOwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKLQotLy8g
Rm9ybWF0cyBhIGNvbXBhcmlzb24gYXNzZXJ0aW9uIChlLmcuIEFTU0VSVF9FUSwgRVhQRUNUX0xU
LCBhbmQgZXRjKQotLy8gb3BlcmFuZCB0byBiZSB1c2VkIGluIGEgZmFpbHVyZSBtZXNzYWdlLiAg
VGhlIHR5cGUgKGJ1dCBub3QgdmFsdWUpCi0vLyBvZiB0aGUgb3RoZXIgb3BlcmFuZCBtYXkgYWZm
ZWN0IHRoZSBmb3JtYXQuICBUaGlzIGFsbG93cyB1cyB0bwotLy8gcHJpbnQgYSBjaGFyKiBhcyBh
IHJhdyBwb2ludGVyIHdoZW4gaXQgaXMgY29tcGFyZWQgYWdhaW5zdCBhbm90aGVyCi0vLyBjaGFy
KiwgYW5kIHByaW50IGl0IGFzIGEgQyBzdHJpbmcgd2hlbiBpdCBpcyBjb21wYXJlZCBhZ2FpbnN0
IGFuCi0vLyBzdGQ6OnN0cmluZyBvYmplY3QsIGZvciBleGFtcGxlLgotLy8KLS8vIFRoZSBkZWZh
dWx0IGltcGxlbWVudGF0aW9uIGlnbm9yZXMgdGhlIHR5cGUgb2YgdGhlIG90aGVyIG9wZXJhbmQu
Ci0vLyBTb21lIHNwZWNpYWxpemVkIHZlcnNpb25zIGFyZSB1c2VkIHRvIGhhbmRsZSBmb3JtYXR0
aW5nIHdpZGUgb3IKLS8vIG5hcnJvdyBDIHN0cmluZ3MuCi0vLwotLy8gSU5URVJOQUwgSU1QTEVN
RU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgorLy8gU2VwYXJhdGUgdGhl
IGVycm9yIGdlbmVyYXRpbmcgY29kZSBmcm9tIHRoZSBjb2RlIHBhdGggdG8gcmVkdWNlIHRoZSBz
dGFjaworLy8gZnJhbWUgc2l6ZSBvZiBDbXBIZWxwZXJFUS4gVGhpcyBoZWxwcyByZWR1Y2UgdGhl
IG92ZXJoZWFkIG9mIHNvbWUgc2FuaXRpemVycworLy8gd2hlbiBjYWxsaW5nIEVYUEVDVF8qIGlu
IGEgdGlnaHQgbG9vcC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1TdHJp
bmcgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKGNvbnN0IFQxJiB2YWx1ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDImIC8qIG90aGVy
X29wZXJhbmQgKi8pIHsKLSAgcmV0dXJuIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKHZhbHVlKTsK
K0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJFUUZhaWx1cmUoY29uc3QgY2hhciogbGhzX2V4cHJl
c3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJo
c19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
MSYgbGhzLCBjb25zdCBUMiYgcmhzKSB7CisgIHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Np
b24sCisgICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAg
ICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKGxocywgcmhzKSwKKyAgICAgICAg
ICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocmhzLCBsaHMpLAor
ICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKIH0KIAogLy8gVGhlIGhlbHBlciBmdW5jdGlvbiBm
b3Ige0FTU0VSVHxFWFBFQ1R9X0VRLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
Mj4KLUFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJFUShjb25zdCBjaGFyKiBleHBlY3RlZF9leHBy
ZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9l
eHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiBleHBlY3Rl
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgYWN0dWFsKSB7Ci0jaWZk
ZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhwdXNoKSAgICAgICAgICAvLyBTYXZlcyB0aGUg
Y3VycmVudCB3YXJuaW5nIHN0YXRlLgotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDM4OSkgIC8v
IFRlbXBvcmFyaWx5IGRpc2FibGVzIHdhcm5pbmcgb24KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2guCi0jZW5kaWYKLQotICBpZiAoZXhw
ZWN0ZWQgPT0gYWN0dWFsKSB7CitBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRVEoY29uc3QgY2hh
ciogbGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEm
IGxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgcmhzKSB7CisgIGlm
IChsaHMgPT0gcmhzKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQogCi0j
aWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhwb3ApICAgICAgICAgIC8vIFJlc3RvcmVz
IHRoZSB3YXJuaW5nIHN0YXRlLgotI2VuZGlmCi0KLSAgcmV0dXJuIEVxRmFpbHVyZShleHBlY3Rl
ZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIGFjdHVhbF9leHByZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShleHBlY3Rl
ZCwgYWN0dWFsKSwKLSAgICAgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVy
ZU1lc3NhZ2UoYWN0dWFsLCBleHBlY3RlZCksCi0gICAgICAgICAgICAgICAgICAgZmFsc2UpOwor
ICByZXR1cm4gQ21wSGVscGVyRVFGYWlsdXJlKGxoc19leHByZXNzaW9uLCByaHNfZXhwcmVzc2lv
biwgbGhzLCByaHMpOwogfQogCiAvLyBXaXRoIHRoaXMgb3ZlcmxvYWRlZCB2ZXJzaW9uLCB3ZSBh
bGxvdyBhbm9ueW1vdXMgZW51bXMgdG8gYmUgdXNlZAogLy8gaW4ge0FTU0VSVHxFWFBFQ1R9X0VR
IHdoZW4gY29tcGlsZWQgd2l0aCBnY2MgNCwgYXMgYW5vbnltb3VzIGVudW1zCiAvLyBjYW4gYmUg
aW1wbGljaXRseSBjYXN0IHRvIEJpZ2dlc3RJbnQuCi1HVEVTVF9BUElfIEFzc2VydGlvblJlc3Vs
dCBDbXBIZWxwZXJFUShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGV4
cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdElu
dCBhY3R1YWwpOworR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRVEoY29uc3Qg
Y2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQmlnZ2VzdEludCByaHMpOwogCiAvLyBUaGUgaGVscGVyIGNsYXNzIGZv
ciB7QVNTRVJUfEVYUEVDVH1fRVEuICBUaGUgdGVtcGxhdGUgYXJndW1lbnQKIC8vIGxoc19pc19u
dWxsX2xpdGVyYWwgaXMgdHJ1ZSBpZmYgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIEFTU0VSVF9FUSgp
CkBAIC0xMjkyLDEyICsxNDU3LDExIEBAIGNsYXNzIEVxSGVscGVyIHsKICBwdWJsaWM6CiAgIC8v
IFRoaXMgdGVtcGxhdGl6ZWQgdmVyc2lvbiBpcyBmb3IgdGhlIGdlbmVyYWwgY2FzZS4KICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgc3RhdGljIEFzc2VydGlvblJlc3Vs
dCBDb21wYXJlKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiBleHBlY3RlZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiBhY3R1YWwpIHsKLSAgICByZXR1cm4g
Q21wSGVscGVyRVEoZXhwZWN0ZWRfZXhwcmVzc2lvbiwgYWN0dWFsX2V4cHJlc3Npb24sIGV4cGVj
dGVkLAotICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWwpOworICBzdGF0aWMgQXNzZXJ0aW9u
UmVzdWx0IENvbXBhcmUoY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiBsaHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUMiYgcmhzKSB7CisgICAgcmV0dXJuIENtcEhlbHBlckVR
KGxoc19leHByZXNzaW9uLCByaHNfZXhwcmVzc2lvbiwgbGhzLCByaHMpOwogICB9CiAKICAgLy8g
V2l0aCB0aGlzIG92ZXJsb2FkZWQgdmVyc2lvbiwgd2UgYWxsb3cgYW5vbnltb3VzIGVudW1zIHRv
IGJlIHVzZWQKQEAgLTEzMDYsMTcgKzE0NzAsMTYgQEAgY2xhc3MgRXFIZWxwZXIgewogICAvLwog
ICAvLyBFdmVuIHRob3VnaCBpdHMgYm9keSBsb29rcyB0aGUgc2FtZSBhcyB0aGUgYWJvdmUgdmVy
c2lvbiwgd2UKICAgLy8gY2Fubm90IG1lcmdlIHRoZSB0d28sIGFzIGl0IHdpbGwgbWFrZSBhbm9u
eW1vdXMgZW51bXMgdW5oYXBweS4KLSAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBDb21wYXJlKGNv
bnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBCaWdnZXN0SW50IGFjdHVhbCkgewotICAgIHJldHVybiBDbXBIZWxwZXJF
UShleHBlY3RlZF9leHByZXNzaW9uLCBhY3R1YWxfZXhwcmVzc2lvbiwgZXhwZWN0ZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgIGFjdHVhbCk7CisgIHN0YXRpYyBBc3NlcnRpb25SZXN1bHQgQ29t
cGFyZShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQmlnZ2VzdEludCBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCaWdnZXN0SW50IHJocykgeworICAgIHJldHVybiBDbXBIZWxwZXJFUShsaHNfZXhw
cmVzc2lvbiwgcmhzX2V4cHJlc3Npb24sIGxocywgcmhzKTsKICAgfQogfTsKIAogLy8gVGhpcyBz
cGVjaWFsaXphdGlvbiBpcyB1c2VkIHdoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IHRvIEFTU0VSVF9F
USgpCi0vLyBpcyBhIG51bGwgcG9pbnRlciBsaXRlcmFsLgorLy8gaXMgYSBudWxsIHBvaW50ZXIg
bGl0ZXJhbCwgbGlrZSBOVUxMLCBmYWxzZSwgb3IgMC4KIHRlbXBsYXRlIDw+CiBjbGFzcyBFcUhl
bHBlcjx0cnVlPiB7CiAgcHVibGljOgpAQCAtMTMyNSwyNyArMTQ4OCw1MyBAQCBjbGFzcyBFcUhl
bHBlcjx0cnVlPiB7CiAgIC8vIE5PVCBhIHBvaW50ZXIsIGUuZy4gQVNTRVJUX0VRKDAsIEFuSW50
RnVuY3Rpb24oKSkgb3IKICAgLy8gRVhQRUNUX0VRKGZhbHNlLCBhX2Jvb2wpLgogICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IENv
bXBhcmUoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGV4cGVjdGVkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDImIGFjdHVhbCkgewotICAgIHJldHVybiBDbXBI
ZWxwZXJFUShleHBlY3RlZF9leHByZXNzaW9uLCBhY3R1YWxfZXhwcmVzc2lvbiwgZXhwZWN0ZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbCk7CisgIHN0YXRpYyBBc3NlcnRpb25SZXN1
bHQgQ29tcGFyZSgKKyAgICAgIGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgY29u
c3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICBjb25zdCBUMSYgbGhzLAorICAgICAgY29u
c3QgVDImIHJocywKKyAgICAgIC8vIFRoZSBmb2xsb3dpbmcgbGluZSBwcmV2ZW50cyB0aGlzIG92
ZXJsb2FkIGZyb20gYmVpbmcgY29uc2lkZXJlZCBpZiBUMgorICAgICAgLy8gaXMgbm90IGEgcG9p
bnRlciB0eXBlLiAgV2UgbmVlZCB0aGlzIGJlY2F1c2UgQVNTRVJUX0VRKE5VTEwsIG15X3B0cikK
KyAgICAgIC8vIGV4cGFuZHMgdG8gQ29tcGFyZSgiIiwgIiIsIE5VTEwsIG15X3B0ciksIHdoaWNo
IHJlcXVpcmVzIGEgY29udmVyc2lvbgorICAgICAgLy8gdG8gbWF0Y2ggdGhlIFNlY3JldCogaW4g
dGhlIG90aGVyIG92ZXJsb2FkLCB3aGljaCB3b3VsZCBvdGhlcndpc2UgbWFrZQorICAgICAgLy8g
dGhpcyB0ZW1wbGF0ZSBtYXRjaCBiZXR0ZXIuCisgICAgICB0eXBlbmFtZSBFbmFibGVJZjwhaXNf
cG9pbnRlcjxUMj46OnZhbHVlPjo6dHlwZSogPSAwKSB7CisgICAgcmV0dXJuIENtcEhlbHBlckVR
KGxoc19leHByZXNzaW9uLCByaHNfZXhwcmVzc2lvbiwgbGhzLCByaHMpOwogICB9CiAKLSAgLy8g
VGhpcyB2ZXJzaW9uIHdpbGwgYmUgcGlja2VkIHdoZW4gdGhlIHNlY29uZCBhcmd1bWVudCB0bwot
ICAvLyBBU1NFUlRfRVEoKSBpcyBhIHBvaW50ZXIsIGUuZy4gQVNTRVJUX0VRKE5VTEwsIGFfcG9p
bnRlcikuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gIHN0YXRpYyBB
c3NlcnRpb25SZXN1bHQgQ29tcGFyZShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJl
c3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgLyogZXhw
ZWN0ZWQgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUMiogYWN0dWFsKSB7
Ci0gICAgLy8gV2UgYWxyZWFkeSBrbm93IHRoYXQgJ2V4cGVjdGVkJyBpcyBhIG51bGwgcG9pbnRl
ci4KLSAgICByZXR1cm4gQ21wSGVscGVyRVEoZXhwZWN0ZWRfZXhwcmVzc2lvbiwgYWN0dWFsX2V4
cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFQyKj4oTlVMTCks
IGFjdHVhbCk7CisgIC8vIFRoaXMgdmVyc2lvbiB3aWxsIGJlIHBpY2tlZCB3aGVuIHRoZSBzZWNv
bmQgYXJndW1lbnQgdG8gQVNTRVJUX0VRKCkgaXMgYQorICAvLyBwb2ludGVyLCBlLmcuIEFTU0VS
VF9FUShOVUxMLCBhX3BvaW50ZXIpLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGlj
IEFzc2VydGlvblJlc3VsdCBDb21wYXJlKAorICAgICAgY29uc3QgY2hhciogbGhzX2V4cHJlc3Np
b24sCisgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgIC8vIFdlIHVzZWQg
dG8gaGF2ZSBhIHNlY29uZCB0ZW1wbGF0ZSBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBTZWNyZXQqLiAg
VGhhdAorICAgICAgLy8gdGVtcGxhdGUgcGFyYW1ldGVyIHdvdWxkIGRlZHVjZSB0byAnbG9uZycs
IG1ha2luZyB0aGlzIGEgYmV0dGVyIG1hdGNoCisgICAgICAvLyB0aGFuIHRoZSBmaXJzdCBvdmVy
bG9hZCBldmVuIHdpdGhvdXQgdGhlIGZpcnN0IG92ZXJsb2FkJ3MgRW5hYmxlSWYuCisgICAgICAv
LyBVbmZvcnR1bmF0ZWx5LCBnY2Mgd2l0aCAtV2NvbnZlcnNpb24tbnVsbCB3YXJucyB3aGVuICJw
YXNzaW5nIE5VTEwgdG8KKyAgICAgIC8vIG5vbi1wb2ludGVyIGFyZ3VtZW50IiAoZXZlbiBhIGRl
ZHVjZWQgaW50ZWdyYWwgYXJndW1lbnQpLCBzbyB0aGUgb2xkCisgICAgICAvLyBpbXBsZW1lbnRh
dGlvbiBjYXVzZWQgd2FybmluZ3MgaW4gdXNlciBjb2RlLgorICAgICAgU2VjcmV0KiAvKiBsaHMg
KE5VTEwpICovLAorICAgICAgVCogcmhzKSB7CisgICAgLy8gV2UgYWxyZWFkeSBrbm93IHRoYXQg
J2xocycgaXMgYSBudWxsIHBvaW50ZXIuCisgICAgcmV0dXJuIENtcEhlbHBlckVRKGxoc19leHBy
ZXNzaW9uLCByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8VCo+KE5VTEwpLCByaHMpOwogICB9CiB9OwogCisvLyBTZXBhcmF0ZSB0aGUgZXJyb3IgZ2Vu
ZXJhdGluZyBjb2RlIGZyb20gdGhlIGNvZGUgcGF0aCB0byByZWR1Y2UgdGhlIHN0YWNrCisvLyBm
cmFtZSBzaXplIG9mIENtcEhlbHBlck9QLiBUaGlzIGhlbHBzIHJlZHVjZSB0aGUgb3ZlcmhlYWQg
b2Ygc29tZSBzYW5pdGl6ZXJzCisvLyB3aGVuIGNhbGxpbmcgRVhQRUNUX09QIGluIGEgdGlnaHQg
bG9vcC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitBc3NlcnRpb25SZXN1
bHQgQ21wSGVscGVyT3BGYWlsdXJlKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFyKiBleHBy
MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIHZhbDEsIGNv
bnN0IFQyJiB2YWwyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBvcCkgeworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICAgICA8PCAiRXhw
ZWN0ZWQ6ICgiIDw8IGV4cHIxIDw8ICIpICIgPDwgb3AgPDwgIiAoIiA8PCBleHByMgorICAgICAg
ICAgPDwgIiksIGFjdHVhbDogIiA8PCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uo
dmFsMSwgdmFsMikKKyAgICAgICAgIDw8ICIgdnMgIiA8PCBGb3JtYXRGb3JDb21wYXJpc29uRmFp
bHVyZU1lc3NhZ2UodmFsMiwgdmFsMSk7Cit9CisKIC8vIEEgbWFjcm8gZm9yIGltcGxlbWVudGlu
ZyB0aGUgaGVscGVyIGZ1bmN0aW9ucyBuZWVkZWQgdG8gaW1wbGVtZW50CiAvLyBBU1NFUlRfPz8g
YW5kIEVYUEVDVF8/Py4gIEl0IGlzIGhlcmUganVzdCB0byBhdm9pZCBjb3B5LWFuZC1wYXN0ZQog
Ly8gb2Ygc2ltaWxhciBjb2RlLgpAQCAtMTM1Niw2ICsxNTQ1LDcgQEAgY2xhc3MgRXFIZWxwZXI8
dHJ1ZT4gewogLy8gd2l0aCBnY2MgNC4KIC8vCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAt
IERPIE5PVCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCisKICNkZWZpbmUgR1RFU1RfSU1QTF9DTVBf
SEVMUEVSXyhvcF9uYW1lLCBvcClcCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
PlwKIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXIjI29wX25hbWUoY29uc3QgY2hhciogZXhwcjEs
IGNvbnN0IGNoYXIqIGV4cHIyLCBcCkBAIC0xMzYzLDExICsxNTUzLDcgQEAgQXNzZXJ0aW9uUmVz
dWx0IENtcEhlbHBlciMjb3BfbmFtZShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhw
cjIsIFwKICAgaWYgKHZhbDEgb3AgdmFsMikge1wKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2Vz
cygpO1wKICAgfSBlbHNlIHtcCi0gICAgTWVzc2FnZSBtc2c7XAotICAgIG1zZyA8PCAiRXhwZWN0
ZWQ6ICgiIDw8IGV4cHIxIDw8ICIpICIgI29wICIgKCIgPDwgZXhwcjJcCi0gICAgICAgIDw8ICIp
LCBhY3R1YWw6ICIgPDwgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHZhbDEsIHZh
bDIpXAotICAgICAgICA8PCAiIHZzICIgPDwgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNz
YWdlKHZhbDIsIHZhbDEpO1wKLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpO1wKKyAg
ICByZXR1cm4gQ21wSGVscGVyT3BGYWlsdXJlKGV4cHIxLCBleHByMiwgdmFsMSwgdmFsMiwgI29w
KTtcCiAgIH1cCiB9XAogR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyIyNvcF9u
YW1lKFwKQEAgLTEzODAsMjkgKzE1NjYsMjkgQEAgR1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhORSwg
IT0pOwogLy8gSW1wbGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVD
VH1fTEUKIEdURVNUX0lNUExfQ01QX0hFTFBFUl8oTEUsIDw9KTsKIC8vIEltcGxlbWVudHMgdGhl
IGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X0xUCi1HVEVTVF9JTVBMX0NNUF9I
RUxQRVJfKExULCA8ICk7CitHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKExULCA8KTsKIC8vIEltcGxl
bWVudHMgdGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X0dFCiBHVEVTVF9J
TVBMX0NNUF9IRUxQRVJfKEdFLCA+PSk7CiAvLyBJbXBsZW1lbnRzIHRoZSBoZWxwZXIgZnVuY3Rp
b24gZm9yIHtBU1NFUlR8RVhQRUNUfV9HVAotR1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhHVCwgPiAp
OworR1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhHVCwgPik7CiAKICN1bmRlZiBHVEVTVF9JTVBMX0NN
UF9IRUxQRVJfCiAKIC8vIFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9T
VFJFUS4KIC8vCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBV
U0VSIFBST0dSQU0uCi1HVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJFUShj
b25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHBlY3RlZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFj
dHVhbCk7CitHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJFUShjb25zdCBj
aGFyKiBzMV9leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogczJfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMxLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczIpOwogCiAvLyBUaGUgaGVscGVyIGZ1
bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fU1RSQ0FTRUVRLgogLy8KIC8vIElOVEVSTkFMIElN
UExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KLUdURVNUX0FQSV8g
QXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VFUShjb25zdCBjaGFyKiBleHBlY3RlZF9l
eHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbCk7CitH
VEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJDQVNFRVEoY29uc3QgY2hhciog
czFfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBzMl9leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMxLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMyKTsKIAogLy8gVGhlIGhl
bHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NUUk5FLgogLy8KQEAgLTE0MjQsMTAg
KzE2MTAsMTAgQEAgR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSQ0FTRU5F
KGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24sCiAvLyBIZWxwZXIgZnVuY3Rpb24gZm9yICpfU1RS
RVEgb24gd2lkZSBzdHJpbmdzLgogLy8KIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8g
Tk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KLUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENt
cEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVz
c2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdj
aGFyX3QqIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgd2NoYXJfdCogYWN0dWFsKTsKK0dURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENt
cEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMl9leHByZXNzaW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogczEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90
KiBzMik7CiAKIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgKl9TVFJORSBvbiB3aWRlIHN0cmluZ3Mu
CiAvLwpAQCAtMTQ4NSwyOCArMTY3MSwyOCBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogLy8KIC8v
IElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4K
IHRlbXBsYXRlIDx0eXBlbmFtZSBSYXdUeXBlPgotQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckZs
b2F0aW5nUG9pbnRFUShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVz
c2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmF3VHlwZSBl
eHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmF3VHlw
ZSBhY3R1YWwpIHsKLSAgY29uc3QgRmxvYXRpbmdQb2ludDxSYXdUeXBlPiBsaHMoZXhwZWN0ZWQp
LCByaHMoYWN0dWFsKTsKK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJGbG9hdGluZ1BvaW50RVEo
Y29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdUeXBlIGxoc192YWx1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmF3VHlwZSByaHNfdmFsdWUpIHsKKyAgY29u
c3QgRmxvYXRpbmdQb2ludDxSYXdUeXBlPiBsaHMobGhzX3ZhbHVlKSwgcmhzKHJoc192YWx1ZSk7
CiAKICAgaWYgKGxocy5BbG1vc3RFcXVhbHMocmhzKSkgewogICAgIHJldHVybiBBc3NlcnRpb25T
dWNjZXNzKCk7CiAgIH0KIAotICBTdHJTdHJlYW0gZXhwZWN0ZWRfc3M7Ci0gIGV4cGVjdGVkX3Nz
IDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8UmF3VHlwZT46OmRpZ2l0
czEwICsgMikKLSAgICAgICAgICAgICAgPDwgZXhwZWN0ZWQ7CisgIDo6c3RkOjpzdHJpbmdzdHJl
YW0gbGhzX3NzOworICBsaHNfc3MgPDwgc3RkOjpzZXRwcmVjaXNpb24oc3RkOjpudW1lcmljX2xp
bWl0czxSYXdUeXBlPjo6ZGlnaXRzMTAgKyAyKQorICAgICAgICAgPDwgbGhzX3ZhbHVlOwogCi0g
IFN0clN0cmVhbSBhY3R1YWxfc3M7Ci0gIGFjdHVhbF9zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihz
dGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+OjpkaWdpdHMxMCArIDIpCi0gICAgICAgICAgICA8
PCBhY3R1YWw7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gcmhzX3NzOworICByaHNfc3MgPDwgc3Rk
OjpzZXRwcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxSYXdUeXBlPjo6ZGlnaXRzMTAgKyAy
KQorICAgICAgICAgPDwgcmhzX3ZhbHVlOwogCi0gIHJldHVybiBFcUZhaWx1cmUoZXhwZWN0ZWRf
ZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAg
ICAgICAgICAgICAgICBTdHJTdHJlYW1Ub1N0cmluZygmZXhwZWN0ZWRfc3MpLAotICAgICAgICAg
ICAgICAgICAgIFN0clN0cmVhbVRvU3RyaW5nKCZhY3R1YWxfc3MpLAorICByZXR1cm4gRXFGYWls
dXJlKGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIHJoc19leHByZXNzaW9uLAor
ICAgICAgICAgICAgICAgICAgIFN0cmluZ1N0cmVhbVRvU3RyaW5nKCZsaHNfc3MpLAorICAgICAg
ICAgICAgICAgICAgIFN0cmluZ1N0cmVhbVRvU3RyaW5nKCZyaHNfc3MpLAogICAgICAgICAgICAg
ICAgICAgIGZhbHNlKTsKIH0KIApAQCAtMTU0OCw5ICsxNzM0LDkgQEAgY2xhc3MgR1RFU1RfQVBJ
XyBBc3NlcnRIZWxwZXIgewogICAgICAgICA6IHR5cGUodCksIGZpbGUoc3JjZmlsZSksIGxpbmUo
bGluZV9udW0pLCBtZXNzYWdlKG1zZykgeyB9CiAKICAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSBj
b25zdCB0eXBlOwotICAgIGNvbnN0IGNoYXIqICAgICAgICBjb25zdCBmaWxlOwotICAgIGludCAg
ICAgICAgICAgICAgICBjb25zdCBsaW5lOwotICAgIFN0cmluZyAgICAgICAgICAgICBjb25zdCBt
ZXNzYWdlOworICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZpbGU7CisgICAgaW50IGNvbnN0IGxpbmU7
CisgICAgc3RkOjpzdHJpbmcgY29uc3QgbWVzc2FnZTsKIAogICAgcHJpdmF0ZToKICAgICBHVEVT
VF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEFzc2VydEhlbHBlckRhdGEpOwpAQCAtMTU2Mywx
MCArMTc0OSwxMyBAQCBjbGFzcyBHVEVTVF9BUElfIEFzc2VydEhlbHBlciB7CiAKIH0gIC8vIG5h
bWVzcGFjZSBpbnRlcm5hbAogCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLS8vIFRoZSBhYnN0
cmFjdCBiYXNlIGNsYXNzIHRoYXQgYWxsIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgaW5oZXJp
dCBmcm9tLgorLy8gVGhlIHB1cmUgaW50ZXJmYWNlIGNsYXNzIHRoYXQgYWxsIHZhbHVlLXBhcmFt
ZXRlcml6ZWQgdGVzdHMgaW5oZXJpdCBmcm9tLgorLy8gQSB2YWx1ZS1wYXJhbWV0ZXJpemVkIGNs
YXNzIG11c3QgaW5oZXJpdCBmcm9tIGJvdGggOjp0ZXN0aW5nOjpUZXN0IGFuZAorLy8gOjp0ZXN0
aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2UuIEluIG1vc3QgY2FzZXMgdGhhdCBqdXN0IG1lYW5zIGlu
aGVyaXRpbmcKKy8vIGZyb20gOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtLCBidXQgbW9yZSBjb21w
bGljYXRlZCB0ZXN0IGhpZXJhcmNoaWVzCisvLyBtYXkgbmVlZCB0byBpbmhlcml0IGZyb20gVGVz
dCBhbmQgV2l0aFBhcmFtSW50ZXJmYWNlIGF0IGRpZmZlcmVudCBsZXZlbHMuCiAvLwotLy8gVGhp
cyBjbGFzcyBhZGRzIHN1cHBvcnQgZm9yIGFjY2Vzc2luZyB0aGUgdGVzdCBwYXJhbWV0ZXIgdmFs
dWUgdmlhCisvLyBUaGlzIGludGVyZmFjZSBoYXMgc3VwcG9ydCBmb3IgYWNjZXNzaW5nIHRoZSB0
ZXN0IHBhcmFtZXRlciB2YWx1ZSB2aWEKIC8vIHRoZSBHZXRQYXJhbSgpIG1ldGhvZC4KIC8vCiAv
LyBVc2UgaXQgd2l0aCBvbmUgb2YgdGhlIHBhcmFtZXRlciBnZW5lcmF0b3IgZGVmaW5pbmcgZnVu
Y3Rpb25zLCBsaWtlIFJhbmdlKCksCkBAIC0xNTk1LDEzICsxNzg0LDIyIEBAIGNsYXNzIEdURVNU
X0FQSV8gQXNzZXJ0SGVscGVyIHsKIC8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKE9uZVRvVGVu
UmFuZ2UsIEZvb1Rlc3QsIDo6dGVzdGluZzo6UmFuZ2UoMSwgMTApKTsKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1jbGFzcyBUZXN0V2l0aFBhcmFtIDogcHVibGljIFRlc3QgeworY2xhc3MgV2l0
aFBhcmFtSW50ZXJmYWNlIHsKICBwdWJsaWM6CiAgIHR5cGVkZWYgVCBQYXJhbVR5cGU7CisgIHZp
cnR1YWwgfldpdGhQYXJhbUludGVyZmFjZSgpIHt9CiAKICAgLy8gVGhlIGN1cnJlbnQgcGFyYW1l
dGVyIHZhbHVlLiBJcyBhbHNvIGF2YWlsYWJsZSBpbiB0aGUgdGVzdCBmaXh0dXJlJ3MKLSAgLy8g
Y29uc3RydWN0b3IuCi0gIGNvbnN0IFBhcmFtVHlwZSYgR2V0UGFyYW0oKSBjb25zdCB7IHJldHVy
biAqcGFyYW1ldGVyXzsgfQorICAvLyBjb25zdHJ1Y3Rvci4gVGhpcyBtZW1iZXIgZnVuY3Rpb24g
aXMgbm9uLXN0YXRpYywgZXZlbiB0aG91Z2ggaXQgb25seQorICAvLyByZWZlcmVuY2VzIHN0YXRp
YyBkYXRhLCB0byByZWR1Y2UgdGhlIG9wcG9ydHVuaXR5IGZvciBpbmNvcnJlY3QgdXNlcworICAv
LyBsaWtlIHdyaXRpbmcgJ1dpdGhQYXJhbUludGVyZmFjZTxib29sPjo6R2V0UGFyYW0oKScgZm9y
IGEgdGVzdCB0aGF0CisgIC8vIHVzZXMgYSBmaXh0dXJlIHdob3NlIHBhcmFtZXRlciB0eXBlIGlz
IGludC4KKyAgY29uc3QgUGFyYW1UeXBlJiBHZXRQYXJhbSgpIGNvbnN0IHsKKyAgICBHVEVTVF9D
SEVDS18ocGFyYW1ldGVyXyAhPSBOVUxMKQorICAgICAgICA8PCAiR2V0UGFyYW0oKSBjYW4gb25s
eSBiZSBjYWxsZWQgaW5zaWRlIGEgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0ICIKKyAgICAgICAg
PDwgIi0tIGRpZCB5b3UgaW50ZW5kIHRvIHdyaXRlIFRFU1RfUCBpbnN0ZWFkIG9mIFRFU1RfRj8i
OworICAgIHJldHVybiAqcGFyYW1ldGVyXzsKKyAgfQogCiAgcHJpdmF0ZToKICAgLy8gU2V0cyBw
YXJhbWV0ZXIgdmFsdWUuIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIG1ha2luZyBzdXJl
IHRoZSB2YWx1ZQpAQCAtMTYxMywxNCArMTgxMSwxOSBAQCBjbGFzcyBUZXN0V2l0aFBhcmFtIDog
cHVibGljIFRlc3QgewogICAvLyBTdGF0aWMgdmFsdWUgdXNlZCBmb3IgYWNjZXNzaW5nIHBhcmFt
ZXRlciBkdXJpbmcgYSB0ZXN0IGxpZmV0aW1lLgogICBzdGF0aWMgY29uc3QgUGFyYW1UeXBlKiBw
YXJhbWV0ZXJfOwogCi0gIC8vIFRlc3RDbGFzcyBtdXN0IGJlIGEgc3ViY2xhc3Mgb2YgVGVzdFdp
dGhQYXJhbTxUPi4KKyAgLy8gVGVzdENsYXNzIG11c3QgYmUgYSBzdWJjbGFzcyBvZiBXaXRoUGFy
YW1JbnRlcmZhY2U8VD4gYW5kIFRlc3QuCiAgIHRlbXBsYXRlIDxjbGFzcyBUZXN0Q2xhc3M+IGZy
aWVuZCBjbGFzcyBpbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RGYWN0b3J5OwogfTsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Ci1jb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJf
ID0gTlVMTDsKK2NvbnN0IFQqIFdpdGhQYXJhbUludGVyZmFjZTxUPjo6cGFyYW1ldGVyXyA9IE5V
TEw7CisKKy8vIE1vc3QgdmFsdWUtcGFyYW1ldGVyaXplZCBjbGFzc2VzIGNhbiBpZ25vcmUgdGhl
IGV4aXN0ZW5jZSBvZgorLy8gV2l0aFBhcmFtSW50ZXJmYWNlLCBhbmQgY2FuIGp1c3QgaW5oZXJp
dCBmcm9tIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbS4KIAotI2VuZGlmICAvLyBHVEVTVF9IQVNf
UEFSQU1fVEVTVAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUZXN0V2l0aFBhcmFtIDog
cHVibGljIFRlc3QsIHB1YmxpYyBXaXRoUGFyYW1JbnRlcmZhY2U8VD4geworfTsKIAogLy8gTWFj
cm9zIGZvciBpbmRpY2F0aW5nIHN1Y2Nlc3MvZmFpbHVyZSBpbiB0ZXN0IGNvZGUuCiAKQEAgLTE2
NDAsMjMgKzE4NDMsMjMgQEAgY29uc3QgVCogVGVzdFdpdGhQYXJhbTxUPjo6cGFyYW1ldGVyXyA9
IE5VTEw7CiAvLyB1c3VhbGx5IHdhbnQgdGhlIGZhaWwtZmFzdCBiZWhhdmlvciBvZiBGQUlMIGFu
ZCBBU1NFUlRfKiwgYnV0IHRob3NlCiAvLyB3cml0aW5nIGRhdGEtZHJpdmVuIHRlc3RzIG9mdGVu
IGZpbmQgdGhlbXNlbHZlcyB1c2luZyBBRERfRkFJTFVSRQogLy8gYW5kIEVYUEVDVF8qIG1vcmUu
Ci0vLwotLy8gRXhhbXBsZXM6Ci0vLwotLy8gICBFWFBFQ1RfVFJVRShzZXJ2ZXIuU3RhdHVzSXNP
SygpKTsKLS8vICAgQVNTRVJUX0ZBTFNFKHNlcnZlci5IYXNQZW5kaW5nUmVxdWVzdChwb3J0KSkK
LS8vICAgICAgIDw8ICJUaGVyZSBhcmUgc3RpbGwgcGVuZGluZyByZXF1ZXN0cyAiIDw8ICJvbiBw
b3J0ICIgPDwgcG9ydDsKIAogLy8gR2VuZXJhdGVzIGEgbm9uZmF0YWwgZmFpbHVyZSB3aXRoIGEg
Z2VuZXJpYyBtZXNzYWdlLgogI2RlZmluZSBBRERfRkFJTFVSRSgpIEdURVNUX05PTkZBVEFMX0ZB
SUxVUkVfKCJGYWlsZWQiKQogCisvLyBHZW5lcmF0ZXMgYSBub25mYXRhbCBmYWlsdXJlIGF0IHRo
ZSBnaXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlvbiB3aXRoCisvLyBhIGdlbmVyaWMgbWVzc2FnZS4K
KyNkZWZpbmUgQUREX0ZBSUxVUkVfQVQoZmlsZSwgbGluZSkgXAorICBHVEVTVF9NRVNTQUdFX0FU
XyhmaWxlLCBsaW5lLCAiRmFpbGVkIiwgXAorICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6
OlRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlKQorCiAvLyBHZW5lcmF0ZXMgYSBmYXRh
bCBmYWlsdXJlIHdpdGggYSBnZW5lcmljIG1lc3NhZ2UuCiAjZGVmaW5lIEdURVNUX0ZBSUwoKSBH
VEVTVF9GQVRBTF9GQUlMVVJFXygiRmFpbGVkIikKIAogLy8gRGVmaW5lIHRoaXMgbWFjcm8gdG8g
MSB0byBvbWl0IHRoZSBkZWZpbml0aW9uIG9mIEZBSUwoKSwgd2hpY2ggaXMgYQogLy8gZ2VuZXJp
YyBuYW1lIGFuZCBjbGFzaGVzIHdpdGggc29tZSBvdGhlciBsaWJyYXJpZXMuCiAjaWYgIUdURVNU
X0RPTlRfREVGSU5FX0ZBSUwKLSNkZWZpbmUgRkFJTCgpIEdURVNUX0ZBSUwoKQorIyBkZWZpbmUg
RkFJTCgpIEdURVNUX0ZBSUwoKQogI2VuZGlmCiAKIC8vIEdlbmVyYXRlcyBhIHN1Y2Nlc3Mgd2l0
aCBhIGdlbmVyaWMgbWVzc2FnZS4KQEAgLTE2NjUsNyArMTg2OCw3IEBAIGNvbnN0IFQqIFRlc3RX
aXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogLy8gRGVmaW5lIHRoaXMgbWFjcm8gdG8g
MSB0byBvbWl0IHRoZSBkZWZpbml0aW9uIG9mIFNVQ0NFRUQoKSwgd2hpY2gKIC8vIGlzIGEgZ2Vu
ZXJpYyBuYW1lIGFuZCBjbGFzaGVzIHdpdGggc29tZSBvdGhlciBsaWJyYXJpZXMuCiAjaWYgIUdU
RVNUX0RPTlRfREVGSU5FX1NVQ0NFRUQKLSNkZWZpbmUgU1VDQ0VFRCgpIEdURVNUX1NVQ0NFRUQo
KQorIyBkZWZpbmUgU1VDQ0VFRCgpIEdURVNUX1NVQ0NFRUQoKQogI2VuZGlmCiAKIC8vIE1hY3Jv
cyBmb3IgdGVzdGluZyBleGNlcHRpb25zLgpAQCAtMTcwNiwxOCArMTkwOSwxNCBAQCBjb25zdCBU
KiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKICAgR1RFU1RfVEVTVF9CT09M
RUFOXyghKGNvbmRpdGlvbiksICNjb25kaXRpb24sIHRydWUsIGZhbHNlLCBcCiAgICAgICAgICAg
ICAgICAgICAgICAgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCiAKLS8vIEluY2x1ZGVzIHRoZSBhdXRv
LWdlbmVyYXRlZCBoZWFkZXIgdGhhdCBpbXBsZW1lbnRzIGEgZmFtaWx5IG9mCi0vLyBnZW5lcmlj
IHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9zLgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0X3ByZWRf
aW1wbC5oPgotCiAvLyBNYWNyb3MgZm9yIHRlc3RpbmcgZXF1YWxpdGllcyBhbmQgaW5lcXVhbGl0
aWVzLgogLy8KLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0VRKGV4cGVjdGVkLCBhY3R1YWwpOiBU
ZXN0cyB0aGF0IGV4cGVjdGVkID09IGFjdHVhbAotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTkUo
djEsIHYyKTogICAgICAgICAgIFRlc3RzIHRoYXQgdjEgIT0gdjIKLS8vICAgICoge0FTU0VSVHxF
WFBFQ1R9X0xUKHYxLCB2Mik6ICAgICAgICAgICBUZXN0cyB0aGF0IHYxIDwgdjIKLS8vICAgICog
e0FTU0VSVHxFWFBFQ1R9X0xFKHYxLCB2Mik6ICAgICAgICAgICBUZXN0cyB0aGF0IHYxIDw9IHYy
Ci0vLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9HVCh2MSwgdjIpOiAgICAgICAgICAgVGVzdHMgdGhh
dCB2MSA+IHYyCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9HRSh2MSwgdjIpOiAgICAgICAgICAg
VGVzdHMgdGhhdCB2MSA+PSB2MgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fRVEodjEsIHYyKTog
VGVzdHMgdGhhdCB2MSA9PSB2MgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTkUodjEsIHYyKTog
VGVzdHMgdGhhdCB2MSAhPSB2MgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTFQodjEsIHYyKTog
VGVzdHMgdGhhdCB2MSA8IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9MRSh2MSwgdjIpOiBU
ZXN0cyB0aGF0IHYxIDw9IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9HVCh2MSwgdjIpOiBU
ZXN0cyB0aGF0IHYxID4gdjIKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0dFKHYxLCB2Mik6IFRl
c3RzIHRoYXQgdjEgPj0gdjIKIC8vCiAvLyBXaGVuIHRoZXkgYXJlIG5vdCwgR29vZ2xlIFRlc3Qg
cHJpbnRzIGJvdGggdGhlIHRlc3RlZCBleHByZXNzaW9ucyBhbmQKIC8vIHRoZWlyIGFjdHVhbCB2
YWx1ZXMuICBUaGUgdmFsdWVzIG11c3QgYmUgY29tcGF0aWJsZSBidWlsdC1pbiB0eXBlcywKQEAg
LTE3MzksOCArMTkzOCw4IEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8g
PSBOVUxMOwogLy8gICBhcmUgcmVsYXRlZCwgbm90IGhvdyB0aGVpciBjb250ZW50IGlzIHJlbGF0
ZWQuICBUbyBjb21wYXJlIHR3byBDCiAvLyAgIHN0cmluZ3MgYnkgY29udGVudCwgdXNlIHtBU1NF
UlR8RVhQRUNUfV9TVFIqKCkuCiAvLwotLy8gICAzLiB7QVNTRVJUfEVYUEVDVH1fRVEoZXhwZWN0
ZWQsIGFjdHVhbCkgaXMgcHJlZmVycmVkIHRvCi0vLyAgIHtBU1NFUlR8RVhQRUNUfV9UUlVFKGV4
cGVjdGVkID09IGFjdHVhbCksIGFzIHRoZSBmb3JtZXIgdGVsbHMgeW91CisvLyAgIDMuIHtBU1NF
UlR8RVhQRUNUfV9FUSh2MSwgdjIpIGlzIHByZWZlcnJlZCB0bworLy8gICB7QVNTRVJUfEVYUEVD
VH1fVFJVRSh2MSA9PSB2MiksIGFzIHRoZSBmb3JtZXIgdGVsbHMgeW91CiAvLyAgIHdoYXQgdGhl
IGFjdHVhbCB2YWx1ZSBpcyB3aGVuIGl0IGZhaWxzLCBhbmQgc2ltaWxhcmx5IGZvciB0aGUKIC8v
ICAgb3RoZXIgY29tcGFyaXNvbnMuCiAvLwpAQCAtMTc1MSwxNyArMTk1MCwxNyBAQCBjb25zdCBU
KiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIC8vCiAvLyBFeGFtcGxlczoK
IC8vCi0vLyAgIEVYUEVDVF9ORSg1LCBGb28oKSk7Ci0vLyAgIEVYUEVDVF9FUShOVUxMLCBhX3Bv
aW50ZXIpOworLy8gICBFWFBFQ1RfTkUoRm9vKCksIDUpOworLy8gICBFWFBFQ1RfRVEoYV9wb2lu
dGVyLCBOVUxMKTsKIC8vICAgQVNTRVJUX0xUKGksIGFycmF5X3NpemUpOwogLy8gICBBU1NFUlRf
R1QocmVjb3Jkcy5zaXplKCksIDApIDw8ICJUaGVyZSBpcyBubyByZWNvcmQgbGVmdC4iOwogCi0j
ZGVmaW5lIEVYUEVDVF9FUShleHBlY3RlZCwgYWN0dWFsKSBcCisjZGVmaW5lIEVYUEVDVF9FUSh2
YWwxLCB2YWwyKSBcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
IFwKLSAgICAgICAgICAgICAgICAgICAgICBFcUhlbHBlcjxHVEVTVF9JU19OVUxMX0xJVEVSQUxf
KGV4cGVjdGVkKT46OkNvbXBhcmUsIFwKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwg
YWN0dWFsKQotI2RlZmluZSBFWFBFQ1RfTkUoZXhwZWN0ZWQsIGFjdHVhbCkgXAotICBFWFBFQ1Rf
UFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlck5FLCBleHBlY3RlZCwg
YWN0dWFsKQorICAgICAgICAgICAgICAgICAgICAgIEVxSGVscGVyPEdURVNUX0lTX05VTExfTElU
RVJBTF8odmFsMSk+OjpDb21wYXJlLCBcCisgICAgICAgICAgICAgICAgICAgICAgdmFsMSwgdmFs
MikKKyNkZWZpbmUgRVhQRUNUX05FKHZhbDEsIHZhbDIpIFwKKyAgRVhQRUNUX1BSRURfRk9STUFU
Mig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJORSwgdmFsMSwgdmFsMikKICNkZWZpbmUg
RVhQRUNUX0xFKHZhbDEsIHZhbDIpIFwKICAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6
OmludGVybmFsOjpDbXBIZWxwZXJMRSwgdmFsMSwgdmFsMikKICNkZWZpbmUgRVhQRUNUX0xUKHZh
bDEsIHZhbDIpIFwKQEAgLTE3NzEsMjIgKzE5NzAsNDkgQEAgY29uc3QgVCogVGVzdFdpdGhQYXJh
bTxUPjo6cGFyYW1ldGVyXyA9IE5VTEw7CiAjZGVmaW5lIEVYUEVDVF9HVCh2YWwxLCB2YWwyKSBc
CiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyR1Qs
IHZhbDEsIHZhbDIpCiAKLSNkZWZpbmUgQVNTRVJUX0VRKGV4cGVjdGVkLCBhY3R1YWwpIFwKKyNk
ZWZpbmUgR1RFU1RfQVNTRVJUX0VRKHZhbDEsIHZhbDIpIFwKICAgQVNTRVJUX1BSRURfRk9STUFU
Mig6OnRlc3Rpbmc6OmludGVybmFsOjogXAotICAgICAgICAgICAgICAgICAgICAgIEVxSGVscGVy
PEdURVNUX0lTX05VTExfTElURVJBTF8oZXhwZWN0ZWQpPjo6Q29tcGFyZSwgXAotICAgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkLCBhY3R1YWwpCi0jZGVmaW5lIEFTU0VSVF9ORSh2YWwxLCB2
YWwyKSBcCisgICAgICAgICAgICAgICAgICAgICAgRXFIZWxwZXI8R1RFU1RfSVNfTlVMTF9MSVRF
UkFMXyh2YWwxKT46OkNvbXBhcmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICB2YWwxLCB2YWwy
KQorI2RlZmluZSBHVEVTVF9BU1NFUlRfTkUodmFsMSwgdmFsMikgXAogICBBU1NFUlRfUFJFRF9G
T1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlck5FLCB2YWwxLCB2YWwyKQotI2Rl
ZmluZSBBU1NFUlRfTEUodmFsMSwgdmFsMikgXAorI2RlZmluZSBHVEVTVF9BU1NFUlRfTEUodmFs
MSwgdmFsMikgXAogICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNt
cEhlbHBlckxFLCB2YWwxLCB2YWwyKQotI2RlZmluZSBBU1NFUlRfTFQodmFsMSwgdmFsMikgXAor
I2RlZmluZSBHVEVTVF9BU1NFUlRfTFQodmFsMSwgdmFsMikgXAogICBBU1NFUlRfUFJFRF9GT1JN
QVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckxULCB2YWwxLCB2YWwyKQotI2RlZmlu
ZSBBU1NFUlRfR0UodmFsMSwgdmFsMikgXAorI2RlZmluZSBHVEVTVF9BU1NFUlRfR0UodmFsMSwg
dmFsMikgXAogICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhl
bHBlckdFLCB2YWwxLCB2YWwyKQotI2RlZmluZSBBU1NFUlRfR1QodmFsMSwgdmFsMikgXAorI2Rl
ZmluZSBHVEVTVF9BU1NFUlRfR1QodmFsMSwgdmFsMikgXAogICBBU1NFUlRfUFJFRF9GT1JNQVQy
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckdULCB2YWwxLCB2YWwyKQogCi0vLyBDIFN0
cmluZyBDb21wYXJpc29ucy4gIEFsbCB0ZXN0cyB0cmVhdCBOVUxMIGFuZCBhbnkgbm9uLU5VTEwg
c3RyaW5nCisvLyBEZWZpbmUgbWFjcm8gR1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX1hZIHRvIDEg
dG8gb21pdCB0aGUgZGVmaW5pdGlvbiBvZgorLy8gQVNTRVJUX1hZKCksIHdoaWNoIGNsYXNoZXMg
d2l0aCBzb21lIHVzZXJzJyBvd24gY29kZS4KKworI2lmICFHVEVTVF9ET05UX0RFRklORV9BU1NF
UlRfRVEKKyMgZGVmaW5lIEFTU0VSVF9FUSh2YWwxLCB2YWwyKSBHVEVTVF9BU1NFUlRfRVEodmFs
MSwgdmFsMikKKyNlbmRpZgorCisjaWYgIUdURVNUX0RPTlRfREVGSU5FX0FTU0VSVF9ORQorIyBk
ZWZpbmUgQVNTRVJUX05FKHZhbDEsIHZhbDIpIEdURVNUX0FTU0VSVF9ORSh2YWwxLCB2YWwyKQor
I2VuZGlmCisKKyNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX0xFCisjIGRlZmluZSBBU1NF
UlRfTEUodmFsMSwgdmFsMikgR1RFU1RfQVNTRVJUX0xFKHZhbDEsIHZhbDIpCisjZW5kaWYKKwor
I2lmICFHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfTFQKKyMgZGVmaW5lIEFTU0VSVF9MVCh2YWwx
LCB2YWwyKSBHVEVTVF9BU1NFUlRfTFQodmFsMSwgdmFsMikKKyNlbmRpZgorCisjaWYgIUdURVNU
X0RPTlRfREVGSU5FX0FTU0VSVF9HRQorIyBkZWZpbmUgQVNTRVJUX0dFKHZhbDEsIHZhbDIpIEdU
RVNUX0FTU0VSVF9HRSh2YWwxLCB2YWwyKQorI2VuZGlmCisKKyNpZiAhR1RFU1RfRE9OVF9ERUZJ
TkVfQVNTRVJUX0dUCisjIGRlZmluZSBBU1NFUlRfR1QodmFsMSwgdmFsMikgR1RFU1RfQVNTRVJU
X0dUKHZhbDEsIHZhbDIpCisjZW5kaWYKKworLy8gQy1zdHJpbmcgQ29tcGFyaXNvbnMuICBBbGwg
dGVzdHMgdHJlYXQgTlVMTCBhbmQgYW55IG5vbi1OVUxMIHN0cmluZwogLy8gYXMgZGlmZmVyZW50
LiAgVHdvIE5VTExzIGFyZSBlcXVhbC4KIC8vCiAvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9TVFJF
UShzMSwgczIpOiAgICAgVGVzdHMgdGhhdCBzMSA9PSBzMgpAQCAtMTgwMiwyOSArMjAyOCwyOSBA
QCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIC8vCiAvLyBU
aGVzZSBtYWNyb3MgZXZhbHVhdGUgdGhlaXIgYXJndW1lbnRzIGV4YWN0bHkgb25jZS4KIAotI2Rl
ZmluZSBFWFBFQ1RfU1RSRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAotICBFWFBFQ1RfUFJFRF9GT1JN
QVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkVRLCBleHBlY3RlZCwgYWN0dWFs
KQorI2RlZmluZSBFWFBFQ1RfU1RSRVEoczEsIHMyKSBcCisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIo
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSRVEsIHMxLCBzMikKICNkZWZpbmUgRVhQ
RUNUX1NUUk5FKHMxLCBzMikgXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkNtcEhlbHBlclNUUk5FLCBzMSwgczIpCi0jZGVmaW5lIEVYUEVDVF9TVFJDQVNFRVEo
ZXhwZWN0ZWQsIGFjdHVhbCkgXAotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkNtcEhlbHBlclNUUkNBU0VFUSwgZXhwZWN0ZWQsIGFjdHVhbCkKKyNkZWZpbmUgRVhQ
RUNUX1NUUkNBU0VFUShzMSwgczIpIFwKKyAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6
OmludGVybmFsOjpDbXBIZWxwZXJTVFJDQVNFRVEsIHMxLCBzMikKICNkZWZpbmUgRVhQRUNUX1NU
UkNBU0VORShzMSwgczIpXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJu
YWw6OkNtcEhlbHBlclNUUkNBU0VORSwgczEsIHMyKQogCi0jZGVmaW5lIEFTU0VSVF9TVFJFUShl
eHBlY3RlZCwgYWN0dWFsKSBcCi0gIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRl
cm5hbDo6Q21wSGVscGVyU1RSRVEsIGV4cGVjdGVkLCBhY3R1YWwpCisjZGVmaW5lIEFTU0VSVF9T
VFJFUShzMSwgczIpIFwKKyAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFs
OjpDbXBIZWxwZXJTVFJFUSwgczEsIHMyKQogI2RlZmluZSBBU1NFUlRfU1RSTkUoczEsIHMyKSBc
CiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RS
TkUsIHMxLCBzMikKLSNkZWZpbmUgQVNTRVJUX1NUUkNBU0VFUShleHBlY3RlZCwgYWN0dWFsKSBc
Ci0gIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RS
Q0FTRUVRLCBleHBlY3RlZCwgYWN0dWFsKQorI2RlZmluZSBBU1NFUlRfU1RSQ0FTRUVRKHMxLCBz
MikgXAorICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBl
clNUUkNBU0VFUSwgczEsIHMyKQogI2RlZmluZSBBU1NFUlRfU1RSQ0FTRU5FKHMxLCBzMilcCiAg
IEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSQ0FT
RU5FLCBzMSwgczIpCiAKIC8vIE1hY3JvcyBmb3IgY29tcGFyaW5nIGZsb2F0aW5nLXBvaW50IG51
bWJlcnMuCiAvLwotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fRkxPQVRfRVEoZXhwZWN0ZWQsIGFj
dHVhbCk6CisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9GTE9BVF9FUSh2YWwxLCB2YWwyKToKIC8v
ICAgICAgICAgVGVzdHMgdGhhdCB0d28gZmxvYXQgdmFsdWVzIGFyZSBhbG1vc3QgZXF1YWwuCi0v
LyAgICAqIHtBU1NFUlR8RVhQRUNUfV9ET1VCTEVfRVEoZXhwZWN0ZWQsIGFjdHVhbCk6CisvLyAg
ICAqIHtBU1NFUlR8RVhQRUNUfV9ET1VCTEVfRVEodmFsMSwgdmFsMik6CiAvLyAgICAgICAgIFRl
c3RzIHRoYXQgdHdvIGRvdWJsZSB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbC4KIC8vICAgICoge0FT
U0VSVHxFWFBFQ1R9X05FQVIodjEsIHYyLCBhYnNfZXJyb3IpOgogLy8gICAgICAgICBUZXN0cyB0
aGF0IHYxIGFuZCB2MiBhcmUgd2l0aGluIHRoZSBnaXZlbiBkaXN0YW5jZSB0byBlYWNoIG90aGVy
LgpAQCAtMTgzNCwyMSArMjA2MCwyMSBAQCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJh
bWV0ZXJfID0gTlVMTDsKIC8vIEZsb2F0aW5nUG9pbnQgdGVtcGxhdGUgY2xhc3MgaW4gZ3Rlc3Qt
aW50ZXJuYWwuaCBpZiB5b3UgYXJlCiAvLyBpbnRlcmVzdGVkIGluIHRoZSBpbXBsZW1lbnRhdGlv
biBkZXRhaWxzLgogCi0jZGVmaW5lIEVYUEVDVF9GTE9BVF9FUShleHBlY3RlZCwgYWN0dWFsKVwK
KyNkZWZpbmUgRVhQRUNUX0ZMT0FUX0VRKHZhbDEsIHZhbDIpXAogICBFWFBFQ1RfUFJFRF9GT1JN
QVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckZsb2F0aW5nUG9pbnRFUTxmbG9hdD4s
IFwKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwgYWN0dWFsKQorICAgICAgICAgICAg
ICAgICAgICAgIHZhbDEsIHZhbDIpCiAKLSNkZWZpbmUgRVhQRUNUX0RPVUJMRV9FUShleHBlY3Rl
ZCwgYWN0dWFsKVwKKyNkZWZpbmUgRVhQRUNUX0RPVUJMRV9FUSh2YWwxLCB2YWwyKVwKICAgRVhQ
RUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJGbG9hdGluZ1Bv
aW50RVE8ZG91YmxlPiwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLCBhY3R1YWwp
CisgICAgICAgICAgICAgICAgICAgICAgdmFsMSwgdmFsMikKIAotI2RlZmluZSBBU1NFUlRfRkxP
QVRfRVEoZXhwZWN0ZWQsIGFjdHVhbClcCisjZGVmaW5lIEFTU0VSVF9GTE9BVF9FUSh2YWwxLCB2
YWwyKVwKICAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxw
ZXJGbG9hdGluZ1BvaW50RVE8ZmxvYXQ+LCBcCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWQsIGFjdHVhbCkKKyAgICAgICAgICAgICAgICAgICAgICB2YWwxLCB2YWwyKQogCi0jZGVmaW5l
IEFTU0VSVF9ET1VCTEVfRVEoZXhwZWN0ZWQsIGFjdHVhbClcCisjZGVmaW5lIEFTU0VSVF9ET1VC
TEVfRVEodmFsMSwgdmFsMilcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRl
cm5hbDo6Q21wSGVscGVyRmxvYXRpbmdQb2ludEVRPGRvdWJsZT4sIFwKLSAgICAgICAgICAgICAg
ICAgICAgICBleHBlY3RlZCwgYWN0dWFsKQorICAgICAgICAgICAgICAgICAgICAgIHZhbDEsIHZh
bDIpCiAKICNkZWZpbmUgRVhQRUNUX05FQVIodmFsMSwgdmFsMiwgYWJzX2Vycm9yKVwKICAgRVhQ
RUNUX1BSRURfRk9STUFUMyg6OnRlc3Rpbmc6OmludGVybmFsOjpEb3VibGVOZWFyUHJlZEZvcm1h
dCwgXApAQCAtMTg4MiwxNiArMjEwOCwxNiBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBE
b3VibGVMRShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIsCiAvLyBleHBlY3Rl
ZCByZXN1bHQgYW5kIHRoZSBhY3R1YWwgcmVzdWx0IHdpdGggYm90aCBhIGh1bWFuLXJlYWRhYmxl
CiAvLyBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGVycm9yLCBpZiBhdmFpbGFibGUsIGFz
IHdlbGwgYXMgdGhlCiAvLyBoZXggcmVzdWx0IGNvZGUuCi0jZGVmaW5lIEVYUEVDVF9IUkVTVUxU
X1NVQ0NFRURFRChleHByKSBcCisjIGRlZmluZSBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQoZXhw
cikgXAogICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDEoOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXNIUkVT
VUxUU3VjY2VzcywgKGV4cHIpKQogCi0jZGVmaW5lIEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChl
eHByKSBcCisjIGRlZmluZSBBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoZXhwcikgXAogICAgIEFT
U0VSVF9QUkVEX0ZPUk1BVDEoOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXNIUkVTVUxUU3VjY2Vzcywg
KGV4cHIpKQogCi0jZGVmaW5lIEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChleHByKSBcCisjIGRlZmlu
ZSBFWFBFQ1RfSFJFU1VMVF9GQUlMRUQoZXhwcikgXAogICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDEo
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6SXNIUkVTVUxURmFpbHVyZSwgKGV4cHIpKQogCi0jZGVmaW5l
IEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChleHByKSBcCisjIGRlZmluZSBBU1NFUlRfSFJFU1VMVF9G
QUlMRUQoZXhwcikgXAogICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDEoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6SXNIUkVTVUxURmFpbHVyZSwgKGV4cHIpKQogCiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRP
V1MKQEAgLTE5MTEsNiArMjEzNyw1NyBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBEb3Vi
bGVMRShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIsCiAjZGVmaW5lIEVYUEVD
VF9OT19GQVRBTF9GQUlMVVJFKHN0YXRlbWVudCkgXAogICAgIEdURVNUX1RFU1RfTk9fRkFUQUxf
RkFJTFVSRV8oc3RhdGVtZW50LCBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXykKIAorLy8gQ2F1c2Vz
IGEgdHJhY2UgKGluY2x1ZGluZyB0aGUgZ2l2ZW4gc291cmNlIGZpbGUgcGF0aCBhbmQgbGluZSBu
dW1iZXIsCisvLyBhbmQgdGhlIGdpdmVuIG1lc3NhZ2UpIHRvIGJlIGluY2x1ZGVkIGluIGV2ZXJ5
IHRlc3QgZmFpbHVyZSBtZXNzYWdlIGdlbmVyYXRlZAorLy8gYnkgY29kZSBpbiB0aGUgc2NvcGUg
b2YgdGhlIGxpZmV0aW1lIG9mIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuIFRoZSBlZmZlY3QK
Ky8vIGlzIHVuZG9uZSB3aXRoIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgaW5zdGFuY2UuCisvLwor
Ly8gVGhlIG1lc3NhZ2UgYXJndW1lbnQgY2FuIGJlIGFueXRoaW5nIHN0cmVhbWFibGUgdG8gc3Rk
Ojpvc3RyZWFtLgorLy8KKy8vIEV4YW1wbGU6CisvLyAgIHRlc3Rpbmc6OlNjb3BlZFRyYWNlIHRy
YWNlKCJmaWxlLmNjIiwgMTIzLCAibWVzc2FnZSIpOworLy8KK2NsYXNzIEdURVNUX0FQSV8gU2Nv
cGVkVHJhY2UgeworIHB1YmxpYzoKKyAgLy8gVGhlIGMndG9yIHB1c2hlcyB0aGUgZ2l2ZW4gc291
cmNlIGZpbGUgbG9jYXRpb24gYW5kIG1lc3NhZ2Ugb250bworICAvLyBhIHRyYWNlIHN0YWNrIG1h
aW50YWluZWQgYnkgR29vZ2xlIFRlc3QuCisKKyAgLy8gVGVtcGxhdGUgdmVyc2lvbi4gVXNlcyBN
ZXNzYWdlKCkgdG8gY29udmVydCB0aGUgdmFsdWVzIGludG8gc3RyaW5ncy4KKyAgLy8gU2xvdywg
YnV0IGZsZXhpYmxlLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgU2NvcGVkVHJhY2UoY29u
c3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IFQmIG1lc3NhZ2UpIHsKKyAgICBQdXNoVHJh
Y2UoZmlsZSwgbGluZSwgKE1lc3NhZ2UoKSA8PCBtZXNzYWdlKS5HZXRTdHJpbmcoKSk7CisgIH0K
KworICAvLyBPcHRpbWl6ZSBmb3Igc29tZSBrbm93biB0eXBlcy4KKyAgU2NvcGVkVHJhY2UoY29u
c3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsKKyAgICBQdXNo
VHJhY2UoZmlsZSwgbGluZSwgbWVzc2FnZSA/IG1lc3NhZ2UgOiAiKG51bGwpIik7CisgIH0KKwor
I2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisgIFNjb3BlZFRyYWNlKGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lLCBjb25zdCA6OnN0cmluZyYgbWVzc2FnZSkgeworICAgIFB1c2hUcmFjZShm
aWxlLCBsaW5lLCBtZXNzYWdlKTsKKyAgfQorI2VuZGlmCisKKyAgU2NvcGVkVHJhY2UoY29uc3Qg
Y2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7CisgICAg
UHVzaFRyYWNlKGZpbGUsIGxpbmUsIG1lc3NhZ2UpOworICB9CisKKyAgLy8gVGhlIGQndG9yIHBv
cHMgdGhlIGluZm8gcHVzaGVkIGJ5IHRoZSBjJ3Rvci4KKyAgLy8KKyAgLy8gTm90ZSB0aGF0IHRo
ZSBkJ3RvciBpcyBub3QgdmlydHVhbCBpbiBvcmRlciB0byBiZSBlZmZpY2llbnQuCisgIC8vIERv
bid0IGluaGVyaXQgZnJvbSBTY29wZWRUcmFjZSEKKyAgflNjb3BlZFRyYWNlKCk7CisKKyBwcml2
YXRlOgorICB2b2lkIFB1c2hUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgc3RkOjpz
dHJpbmcgbWVzc2FnZSk7CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTY29w
ZWRUcmFjZSk7Cit9IEdURVNUX0FUVFJJQlVURV9VTlVTRURfOyAgLy8gQSBTY29wZWRUcmFjZSBv
YmplY3QgZG9lcyBpdHMgam9iIGluIGl0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGMndG9yIGFuZCBkJ3Rvci4gIFRoZXJlZm9yZSBpdCBkb2Vzbid0CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gbmVlZCB0byBiZSB1c2VkIG90aGVyd2lzZS4KKwogLy8gQ2F1c2VzIGEg
dHJhY2UgKGluY2x1ZGluZyB0aGUgc291cmNlIGZpbGUgcGF0aCwgdGhlIGN1cnJlbnQgbGluZQog
Ly8gbnVtYmVyLCBhbmQgdGhlIGdpdmVuIG1lc3NhZ2UpIHRvIGJlIGluY2x1ZGVkIGluIGV2ZXJ5
IHRlc3QgZmFpbHVyZQogLy8gbWVzc2FnZSBnZW5lcmF0ZWQgYnkgY29kZSBpbiB0aGUgY3VycmVu
dCBzY29wZS4gIFRoZSBlZmZlY3QgaXMKQEAgLTE5MjIsMjAgKzIxOTksMTQgQEAgR1RFU1RfQVBJ
XyBBc3NlcnRpb25SZXN1bHQgRG91YmxlTEUoY29uc3QgY2hhciogZXhwcjEsIGNvbnN0IGNoYXIq
IGV4cHIyLAogLy8gb2YgdGhlIGR1bW15IHZhcmlhYmxlIG5hbWUsIHRodXMgYWxsb3dpbmcgbXVs
dGlwbGUgU0NPUEVEX1RSQUNFKClzCiAvLyB0byBhcHBlYXIgaW4gdGhlIHNhbWUgYmxvY2sgLSBh
cyBsb25nIGFzIHRoZXkgYXJlIG9uIGRpZmZlcmVudAogLy8gbGluZXMuCisvLworLy8gQXNzdW1p
bmcgdGhhdCBlYWNoIHRocmVhZCBtYWludGFpbnMgaXRzIG93biBzdGFjayBvZiB0cmFjZXMuCisv
LyBUaGVyZWZvcmUsIGEgU0NPUEVEX1RSQUNFKCkgd291bGQgKGNvcnJlY3RseSkgb25seSBhZmZl
Y3QgdGhlCisvLyBhc3NlcnRpb25zIGluIGl0cyBvd24gdGhyZWFkLgogI2RlZmluZSBTQ09QRURf
VFJBQ0UobWVzc2FnZSkgXAotICA6OnRlc3Rpbmc6OmludGVybmFsOjpTY29wZWRUcmFjZSBHVEVT
VF9DT05DQVRfVE9LRU5fKGd0ZXN0X3RyYWNlXywgX19MSU5FX18pKFwKLSAgICBfX0ZJTEVfXywg
X19MSU5FX18sIDo6dGVzdGluZzo6TWVzc2FnZSgpIDw8IChtZXNzYWdlKSkKLQotbmFtZXNwYWNl
IGludGVybmFsIHsKLQotLy8gVGhpcyB0ZW1wbGF0ZSBpcyBkZWNsYXJlZCwgYnV0IGludGVudGlv
bmFsbHkgdW5kZWZpbmVkLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLXN0
cnVjdCBTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
c3RydWN0IFN0YXRpY0Fzc2VydFR5cGVFcUhlbHBlcjxULCBUPiB7fTsKKyAgOjp0ZXN0aW5nOjpT
Y29wZWRUcmFjZSBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X3RyYWNlXywgX19MSU5FX18pKFwK
KyAgICBfX0ZJTEVfXywgX19MSU5FX18sIChtZXNzYWdlKSkKIAotfSAgLy8gbmFtZXNwYWNlIGlu
dGVybmFsCiAKIC8vIENvbXBpbGUtdGltZSBhc3NlcnRpb24gZm9yIHR5cGUgZXF1YWxpdHkuCiAv
LyBTdGF0aWNBc3NlcnRUeXBlRXE8dHlwZTEsIHR5cGUyPigpIGNvbXBpbGVzIGlmZiB0eXBlMSBh
bmQgdHlwZTIgYXJlCkBAIC0xOTY5LDcgKzIyNDAsNyBAQCBzdHJ1Y3QgU3RhdGljQXNzZXJ0VHlw
ZUVxSGVscGVyPFQsIFQ+IHt9OwogLy8gdG8gY2F1c2UgYSBjb21waWxlciBlcnJvci4KIHRlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CiBib29sIFN0YXRpY0Fzc2VydFR5cGVFcSgp
IHsKLSAgaW50ZXJuYWw6OlN0YXRpY0Fzc2VydFR5cGVFcUhlbHBlcjxUMSwgVDI+KCk7CisgICh2
b2lkKWludGVybmFsOjpTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI8VDEsIFQyPigpOwogICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtMTk4MSw4ICsyMjUyLDggQEAgYm9vbCBTdGF0aWNBc3NlcnRUeXBl
RXEoKSB7CiAvLyBUaGUgY29udmVudGlvbiBpcyB0byBlbmQgdGhlIHRlc3QgY2FzZSBuYW1lIHdp
dGggIlRlc3QiLiAgRm9yCiAvLyBleGFtcGxlLCBhIHRlc3QgY2FzZSBmb3IgdGhlIEZvbyBjbGFz
cyBjYW4gYmUgbmFtZWQgRm9vVGVzdC4KIC8vCi0vLyBUaGUgdXNlciBzaG91bGQgcHV0IGhpcyB0
ZXN0IGNvZGUgYmV0d2VlbiBicmFjZXMgYWZ0ZXIgdXNpbmcgdGhpcwotLy8gbWFjcm8uICBFeGFt
cGxlOgorLy8gVGVzdCBjb2RlIHNob3VsZCBhcHBlYXIgYmV0d2VlbiBicmFjZXMgYWZ0ZXIgYW4g
aW52b2NhdGlvbiBvZgorLy8gdGhpcyBtYWNyby4gIEV4YW1wbGU6CiAvLwogLy8gICBURVNUKEZv
b1Rlc3QsIEluaXRpYWxpemVzQ29ycmVjdGx5KSB7CiAvLyAgICAgRm9vIGZvbzsKQEAgLTIwMDUs
NyArMjI3Niw3IEBAIGJvb2wgU3RhdGljQXNzZXJ0VHlwZUVxKCkgewogLy8gRGVmaW5lIHRoaXMg
bWFjcm8gdG8gMSB0byBvbWl0IHRoZSBkZWZpbml0aW9uIG9mIFRFU1QoKSwgd2hpY2gKIC8vIGlz
IGEgZ2VuZXJpYyBuYW1lIGFuZCBjbGFzaGVzIHdpdGggc29tZSBvdGhlciBsaWJyYXJpZXMuCiAj
aWYgIUdURVNUX0RPTlRfREVGSU5FX1RFU1QKLSNkZWZpbmUgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwg
dGVzdF9uYW1lKSBHVEVTVF9URVNUKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpCisjIGRlZmlu
ZSBURVNUKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIEdURVNUX1RFU1QodGVzdF9jYXNlX25h
bWUsIHRlc3RfbmFtZSkKICNlbmRpZgogCiAvLyBEZWZpbmVzIGEgdGVzdCB0aGF0IHVzZXMgYSB0
ZXN0IGZpeHR1cmUuCkBAIC0yMDE1LDcgKzIyODYsNyBAQCBib29sIFN0YXRpY0Fzc2VydFR5cGVF
cSgpIHsKIC8vIG5hbWUgb2YgdGhlIHRlc3Qgd2l0aGluIHRoZSB0ZXN0IGNhc2UuCiAvLwogLy8g
QSB0ZXN0IGZpeHR1cmUgY2xhc3MgbXVzdCBiZSBkZWNsYXJlZCBlYXJsaWVyLiAgVGhlIHVzZXIg
c2hvdWxkIHB1dAotLy8gaGlzIHRlc3QgY29kZSBiZXR3ZWVuIGJyYWNlcyBhZnRlciB1c2luZyB0
aGlzIG1hY3JvLiAgRXhhbXBsZToKKy8vIHRoZSB0ZXN0IGNvZGUgYmV0d2VlbiBicmFjZXMgYWZ0
ZXIgdXNpbmcgdGhpcyBtYWNyby4gIEV4YW1wbGU6CiAvLwogLy8gICBjbGFzcyBGb29UZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgewogLy8gICAgcHJvdGVjdGVkOgpAQCAtMjAzMCwyMyArMjMw
MSwzOCBAQCBib29sIFN0YXRpY0Fzc2VydFR5cGVFcSgpIHsKIC8vICAgfQogLy8KIC8vICAgVEVT
VF9GKEZvb1Rlc3QsIFJldHVybnNFbGVtZW50Q291bnRDb3JyZWN0bHkpIHsKLS8vICAgICBFWFBF
Q1RfRVEoMCwgYV8uc2l6ZSgpKTsKLS8vICAgICBFWFBFQ1RfRVEoMSwgYl8uc2l6ZSgpKTsKKy8v
ICAgICBFWFBFQ1RfRVEoYV8uc2l6ZSgpLCAwKTsKKy8vICAgICBFWFBFQ1RfRVEoYl8uc2l6ZSgp
LCAxKTsKIC8vICAgfQogCiAjZGVmaW5lIFRFU1RfRih0ZXN0X2ZpeHR1cmUsIHRlc3RfbmFtZSlc
CiAgIEdURVNUX1RFU1RfKHRlc3RfZml4dHVyZSwgdGVzdF9uYW1lLCB0ZXN0X2ZpeHR1cmUsIFwK
ICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VHlwZUlkPHRlc3RfZml4dHVy
ZT4oKSkKIAotLy8gVXNlIHRoaXMgbWFjcm8gaW4gbWFpbigpIHRvIHJ1biBhbGwgdGVzdHMuICBJ
dCByZXR1cm5zIDAgaWYgYWxsCisvLyBSZXR1cm5zIGEgcGF0aCB0byB0ZW1wb3JhcnkgZGlyZWN0
b3J5LgorLy8gVHJpZXMgdG8gZGV0ZXJtaW5lIGFuIGFwcHJvcHJpYXRlIGRpcmVjdG9yeSBmb3Ig
dGhlIHBsYXRmb3JtLgorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBUZW1wRGlyKCk7CisKKyNpZmRl
ZiBfTVNDX1ZFUgorIyAgcHJhZ21hIHdhcm5pbmcocG9wKQorI2VuZGlmCisKK30gIC8vIG5hbWVz
cGFjZSB0ZXN0aW5nCisKKy8vIFVzZSB0aGlzIGZ1bmN0aW9uIGluIG1haW4oKSB0byBydW4gYWxs
IHRlc3RzLiAgSXQgcmV0dXJucyAwIGlmIGFsbAogLy8gdGVzdHMgYXJlIHN1Y2Nlc3NmdWwsIG9y
IDEgb3RoZXJ3aXNlLgogLy8KIC8vIFJVTl9BTExfVEVTVFMoKSBzaG91bGQgYmUgaW52b2tlZCBh
ZnRlciB0aGUgY29tbWFuZCBsaW5lIGhhcyBiZWVuCiAvLyBwYXJzZWQgYnkgSW5pdEdvb2dsZVRl
c3QoKS4KKy8vCisvLyBUaGlzIGZ1bmN0aW9uIHdhcyBmb3JtZXJseSBhIG1hY3JvOyB0aHVzLCBp
dCBpcyBpbiB0aGUgZ2xvYmFsCisvLyBuYW1lc3BhY2UgYW5kIGhhcyBhbiBhbGwtY2FwcyBuYW1l
LgoraW50IFJVTl9BTExfVEVTVFMoKSBHVEVTVF9NVVNUX1VTRV9SRVNVTFRfOwogCi0jZGVmaW5l
IFJVTl9BTExfVEVTVFMoKVwKLSAgKDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCkt
PlJ1bigpKQoraW5saW5lIGludCBSVU5fQUxMX1RFU1RTKCkgeworICByZXR1cm4gOjp0ZXN0aW5n
OjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+UnVuKCk7Cit9CiAKLX0gIC8vIG5hbWVzcGFjZSB0
ZXN0aW5nCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkgIC8vICA0MjUxCiAKICNl
bmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcmVkX2ltcGwuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmgKaW5kZXgg
ZTFlMmY4YzRjODg3YThkZWZjYjc1OGNhMGNhYWIzYjdjZWI5ZDQxYS4uMGMxMTA1Y2I4ZWIyZWY3
YzI2MTZlNjdmZjU1NTZhYWIyOWZmMmQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcmVkX2ltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oCkBAIC0yNywxOCArMjcs
MTkgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotLy8gVGhpcyBmaWxlIGlz
IEFVVE9NQVRJQ0FMTFkgR0VORVJBVEVEIG9uIDEwLzAyLzIwMDggYnkgY29tbWFuZAorLy8gVGhp
cyBmaWxlIGlzIEFVVE9NQVRJQ0FMTFkgR0VORVJBVEVEIG9uIDAxLzAyLzIwMTggYnkgY29tbWFu
ZAogLy8gJ2dlbl9ndGVzdF9wcmVkX2ltcGwucHkgNScuICBETyBOT1QgRURJVCBCWSBIQU5EIQog
Ly8KIC8vIEltcGxlbWVudHMgYSBmYW1pbHkgb2YgZ2VuZXJpYyBwcmVkaWNhdGUgYXNzZXJ0aW9u
IG1hY3Jvcy4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVm
IEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJFRF9JTVBMX0hfCiAjZGVmaW5lIEdURVNUX0lO
Q0xVREVfR1RFU1RfR1RFU1RfUFJFRF9JTVBMX0hfCiAKLS8vIE1ha2VzIHN1cmUgdGhpcyBoZWFk
ZXIgaXMgbm90IGluY2x1ZGVkIGJlZm9yZSBndGVzdC5oLgotI2lmbmRlZiBHVEVTVF9JTkNMVURF
X0dURVNUX0dURVNUX0hfCi0jZXJyb3IgRG8gbm90IGluY2x1ZGUgZ3Rlc3RfcHJlZF9pbXBsLmgg
ZGlyZWN0bHkuICBJbmNsdWRlIGd0ZXN0LmggaW5zdGVhZC4KLSNlbmRpZiAgLy8gR1RFU1RfSU5D
TFVERV9HVEVTVF9HVEVTVF9IXworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFj
ZSB0ZXN0aW5nIHsKIAogLy8gVGhpcyBoZWFkZXIgaW1wbGVtZW50cyBhIGZhbWlseSBvZiBnZW5l
cmljIHByZWRpY2F0ZSBhc3NlcnRpb24KIC8vIG1hY3JvczoKQEAgLTY2LDggKzY3LDYgQEAKIC8v
IFdlIGFsc28gZGVmaW5lIHRoZSBFWFBFQ1RfKiB2YXJpYXRpb25zLgogLy8KIC8vIEZvciBub3cg
d2Ugb25seSBzdXBwb3J0IHByZWRpY2F0ZXMgd2hvc2UgYXJpdHkgaXMgYXQgbW9zdCA1LgotLy8g
UGxlYXNlIGVtYWlsIGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbSBpZiB5b3Ug
bmVlZAotLy8gc3VwcG9ydCBmb3IgaGlnaGVyIGFyaXRpZXMuCiAKIC8vIEdURVNUX0FTU0VSVF8g
aXMgdGhlIGJhc2ljIHN0YXRlbWVudCB0byB3aGljaCBhbGwgb2YgdGhlIGFzc2VydGlvbnMKIC8v
IGluIHRoaXMgZmlsZSByZWR1Y2UuICBEb24ndCB1c2UgdGhpcyBpbiB5b3VyIGNvZGUuCkBAIC05
MCwxNyArODksMTUgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQxSGVscGVyKGNvbnN0IGNo
YXIqIHByZWRfdGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
MSYgdjEpIHsKICAgaWYgKHByZWQodjEpKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogCi0g
IE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgcHJlZF90ZXh0IDw8ICIoIgotICAgICAgPDwgZTEgPDwg
IikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKLSAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBl
dmFsdWF0ZXMgdG8gIiA8PCB2MTsKLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAg
cmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBwcmVkX3RleHQgPDwgIigiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgZTEgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVhdGVz
IHRvICIgPDwgdjE7CiB9CiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VY
UEVDVHxBU1NFUlR9X1BSRURfRk9STUFUMS4KIC8vIERvbid0IHVzZSB0aGlzIGluIHlvdXIgY29k
ZS4KICNkZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQxXyhwcmVkX2Zvcm1hdCwgdjEsIG9uX2ZhaWx1
cmUpXAotICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgdjEpLFwKKyAgR1RFU1RfQVNT
RVJUXyhwcmVkX2Zvcm1hdCgjdjEsIHYxKSwgXAogICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUp
CiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BS
RUQxLiAgRG9uJ3QgdXNlCkBAIC0xMzYsMTkgKzEzMywxNyBAQCBBc3NlcnRpb25SZXN1bHQgQXNz
ZXJ0UHJlZDJIZWxwZXIoY29uc3QgY2hhciogcHJlZF90ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFQyJiB2MikgewogICBpZiAocHJlZCh2MSwgdjIpKSByZXR1
cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgcHJlZF90
ZXh0IDw8ICIoIgotICAgICAgPDwgZTEgPDwgIiwgIgotICAgICAgPDwgZTIgPDwgIikgZXZhbHVh
dGVzIHRvIGZhbHNlLCB3aGVyZSIKLSAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMg
dG8gIiA8PCB2MQotICAgICAgPDwgIlxuIiA8PCBlMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYy
OwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFp
bHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
PCBlMSA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTIgPDwgIikgZXZh
bHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAi
XG4iIDw8IGUxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjEKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjI7CiB9CiAKIC8v
IEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRURfRk9S
TUFUMi4KIC8vIERvbid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KICNkZWZpbmUgR1RFU1RfUFJF
RF9GT1JNQVQyXyhwcmVkX2Zvcm1hdCwgdjEsIHYyLCBvbl9mYWlsdXJlKVwKLSAgR1RFU1RfQVNT
RVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgdjEsIHYyKSxcCisgIEdURVNUX0FTU0VSVF8ocHJl
ZF9mb3JtYXQoI3YxLCAjdjIsIHYxLCB2MiksIFwKICAgICAgICAgICAgICAgICBvbl9mYWlsdXJl
KQogCiAvLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9Q
UkVEMi4gIERvbid0IHVzZQpAQCAtMTg5LDIxICsxODQsMTkgQEAgQXNzZXJ0aW9uUmVzdWx0IEFz
c2VydFByZWQzSGVscGVyKGNvbnN0IGNoYXIqIHByZWRfdGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUMyYgdjMpIHsKICAgaWYgKHByZWQodjEsIHYyLCB2Mykp
IHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBw
cmVkX3RleHQgPDwgIigiCi0gICAgICA8PCBlMSA8PCAiLCAiCi0gICAgICA8PCBlMiA8PCAiLCAi
Ci0gICAgICA8PCBlMyA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgotICAgICAgPDwg
IlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxCi0gICAgICA8PCAiXG4iIDw8IGUy
IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjIKLSAgICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFs
dWF0ZXMgdG8gIiA8PCB2MzsKLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgcmV0
dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBwcmVkX3RleHQgPDwgIigiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgZTEgPDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDw8IGUyIDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMyA8PCAiKSBl
dmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8
PCB2MzsKIH0KIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFT
U0VSVH1fUFJFRF9GT1JNQVQzLgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2Rl
ZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDNfKHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCBvbl9mYWls
dXJlKVwKLSAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3YzLCB2MSwgdjIs
IHYzKSxcCisgIEdURVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoI3YxLCAjdjIsICN2MywgdjEsIHYy
LCB2MyksIFwKICAgICAgICAgICAgICAgICBvbl9mYWlsdXJlKQogCiAvLyBJbnRlcm5hbCBtYWNy
byBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEMy4gIERvbid0IHVzZQpAQCAt
MjQ5LDIzICsyNDIsMjEgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQ0SGVscGVyKGNvbnN0
IGNoYXIqIHByZWRfdGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUNCYgdjQpIHsKICAgaWYgKHByZWQodjEsIHYyLCB2MywgdjQpKSByZXR1cm4gQXNzZXJ0aW9u
U3VjY2VzcygpOwogCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgcHJlZF90ZXh0IDw8ICIoIgot
ICAgICAgPDwgZTEgPDwgIiwgIgotICAgICAgPDwgZTIgPDwgIiwgIgotICAgICAgPDwgZTMgPDwg
IiwgIgotICAgICAgPDwgZTQgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKLSAgICAg
IDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MQotICAgICAgPDwgIlxuIiA8
PCBlMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYyCi0gICAgICA8PCAiXG4iIDw8IGUzIDw8ICIg
ZXZhbHVhdGVzIHRvICIgPDwgdjMKLSAgICAgIDw8ICJcbiIgPDwgZTQgPDwgIiBldmFsdWF0ZXMg
dG8gIiA8PCB2NDsKLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgcmV0dXJuIEFz
c2VydGlvbkZhaWx1cmUoKSA8PCBwcmVkX3RleHQgPDwgIigiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgZTEgPDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUy
IDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMyA8PCAiLCAiCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTQgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3
aGVyZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZh
bHVhdGVzIHRvICIgPDwgdjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8
IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCAiXG4iIDw8IGUzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjMKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8PCAiXG4iIDw8IGU0IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjQ7CiB9
CiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BS
RURfRk9STUFUNC4KIC8vIERvbid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KICNkZWZpbmUgR1RF
U1RfUFJFRF9GT1JNQVQ0XyhwcmVkX2Zvcm1hdCwgdjEsIHYyLCB2MywgdjQsIG9uX2ZhaWx1cmUp
XAotICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAjdjMsICN2NCwgdjEsIHYy
LCB2MywgdjQpLFwKKyAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3YzLCAj
djQsIHYxLCB2MiwgdjMsIHY0KSwgXAogICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8v
IEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQ0LiAg
RG9uJ3QgdXNlCkBAIC0zMTYsMjUgKzMwNywyMyBAQCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJl
ZDVIZWxwZXIoY29uc3QgY2hhciogcHJlZF90ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFQ1JiB2NSkgewogICBpZiAocHJlZCh2MSwgdjIsIHYzLCB2NCwgdjUp
KSByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwg
cHJlZF90ZXh0IDw8ICIoIgotICAgICAgPDwgZTEgPDwgIiwgIgotICAgICAgPDwgZTIgPDwgIiwg
IgotICAgICAgPDwgZTMgPDwgIiwgIgotICAgICAgPDwgZTQgPDwgIiwgIgotICAgICAgPDwgZTUg
PDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKLSAgICAgIDw8ICJcbiIgPDwgZTEgPDwg
IiBldmFsdWF0ZXMgdG8gIiA8PCB2MQotICAgICAgPDwgIlxuIiA8PCBlMiA8PCAiIGV2YWx1YXRl
cyB0byAiIDw8IHYyCi0gICAgICA8PCAiXG4iIDw8IGUzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwg
djMKLSAgICAgIDw8ICJcbiIgPDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NAotICAgICAg
PDwgIlxuIiA8PCBlNSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHY1OwotICByZXR1cm4gQXNzZXJ0
aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4
dCA8PCAiKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMSA8PCAiLCAiCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTIgPDwgIiwgIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDw8IGUzIDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBl
NCA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTUgPDwgIikgZXZhbHVh
dGVzIHRvIGZhbHNlLCB3aGVyZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4i
IDw8IGUxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjEKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjMK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGU0IDw8ICIgZXZhbHVhdGVz
IHRvICIgPDwgdjQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGU1IDw8
ICIgZXZhbHVhdGVzIHRvICIgPDwgdjU7CiB9CiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBs
ZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRURfRk9STUFUNS4KIC8vIERvbid0IHVzZSB0aGlz
IGluIHlvdXIgY29kZS4KICNkZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQ1XyhwcmVkX2Zvcm1hdCwg
djEsIHYyLCB2MywgdjQsIHY1LCBvbl9mYWlsdXJlKVwKLSAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zv
cm1hdCgjdjEsICN2MiwgI3YzLCAjdjQsICN2NSwgdjEsIHYyLCB2MywgdjQsIHY1KSxcCisgIEdU
RVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoI3YxLCAjdjIsICN2MywgI3Y0LCAjdjUsIHYxLCB2Miwg
djMsIHY0LCB2NSksIFwKICAgICAgICAgICAgICAgICBvbl9mYWlsdXJlKQogCiAvLyBJbnRlcm5h
bCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVENS4gIERvbid0IHVz
ZQpAQCAtMzY1LDQgKzM1NCw2IEBAIEFzc2VydGlvblJlc3VsdCBBc3NlcnRQcmVkNUhlbHBlcihj
b25zdCBjaGFyKiBwcmVkX3RleHQsCiAKIAogCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCiAj
ZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJFRF9JTVBMX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oCmluZGV4
IGRhODBkZGM2YzcwZWUyZGM3NzNlZDY3NjVhNGY4OWRmYThjYjM4ZTguLmU2NTE2NzFlYmRlODU5
ZmM3MzFiNTQ1OWJkYzA2NjFhZjA3NTdjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oCkBAIC0yNiwxMCArMjYsMTAgQEAKIC8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwogLy8KLS8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBHb29nbGUgQysrIFRl
c3RpbmcgRnJhbWV3b3JrIGRlZmluaXRpb25zIHVzZWZ1bCBpbiBwcm9kdWN0aW9uIGNvZGUuCisv
LyBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIGRlZmluaXRpb25zIHVz
ZWZ1bCBpbiBwcm9kdWN0aW9uIGNvZGUuCisvLyBHT09HTEVURVNUX0NNMDAwMyBETyBOT1QgREVM
RVRFCiAKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUk9EX0hfCiAjZGVmaW5l
IEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJPRF9IXwpAQCAtNDAsMTcgKzQwLDIwIEBACiAv
LwogLy8gY2xhc3MgTXlDbGFzcyB7CiAvLyAgcHJpdmF0ZToKLS8vICAgdm9pZCBNeU1ldGhvZCgp
OwotLy8gICBGUklFTkRfVEVTVChNeUNsYXNzVGVzdCwgTXlNZXRob2QpOworLy8gICB2b2lkIFBy
aXZhdGVNZXRob2QoKTsKKy8vICAgRlJJRU5EX1RFU1QoTXlDbGFzc1Rlc3QsIFByaXZhdGVNZXRo
b2RXb3Jrcyk7CiAvLyB9OwogLy8KIC8vIGNsYXNzIE15Q2xhc3NUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgewogLy8gICAvLyAuLi4KIC8vIH07CiAvLwotLy8gVEVTVF9GKE15Q2xhc3NUZXN0
LCBNeU1ldGhvZCkgewotLy8gICAvLyBDYW4gY2FsbCBNeUNsYXNzOjpNeU1ldGhvZCgpIGhlcmUu
CisvLyBURVNUX0YoTXlDbGFzc1Rlc3QsIFByaXZhdGVNZXRob2RXb3JrcykgeworLy8gICAvLyBD
YW4gY2FsbCBNeUNsYXNzOjpQcml2YXRlTWV0aG9kKCkgaGVyZS4KIC8vIH0KKy8vCisvLyBOb3Rl
OiBUaGUgdGVzdCBjbGFzcyBtdXN0IGJlIGluIHRoZSBzYW1lIG5hbWVzcGFjZSBhcyB0aGUgY2xh
c3MgYmVpbmcgdGVzdGVkLgorLy8gRm9yIGV4YW1wbGUsIHB1dHRpbmcgTXlDbGFzc1Rlc3QgaW4g
YW4gYW5vbnltb3VzIG5hbWVzcGFjZSB3aWxsIG5vdCB3b3JrLgogCiAjZGVmaW5lIEZSSUVORF9U
RVNUKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpXAogZnJpZW5kIGNsYXNzIHRlc3RfY2FzZV9u
YW1lIyNfIyN0ZXN0X25hbWUjI19UZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9SRUFETUUubWQgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9SRUFETUUubWQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmYzOTFmYjRlMmI1NzY1Y2FjOGM2OTQzMzU5YjE1YmJkNWY0ZjE0OQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvY3VzdG9tL1JFQURNRS5tZApAQCAtMCwwICsxLDU2IEBACisjIEN1c3RvbWl6YXRpb24gUG9p
bnRzCisKK1RoZSBjdXN0b20gZGlyZWN0b3J5IGlzIGFuIGluamVjdGlvbiBwb2ludCBmb3IgY3Vz
dG9tIHVzZXIgY29uZmlndXJhdGlvbnMuCisKKyMjIEhlYWRlciBgZ3Rlc3QuaGAKKworIyMjIFRo
ZSBmb2xsb3dpbmcgbWFjcm9zIGNhbiBiZSBkZWZpbmVkOgorCisqICAgYEdURVNUX09TX1NUQUNL
X1RSQUNFX0dFVFRFUl9gIC0gVGhlIG5hbWUgb2YgYW4gaW1wbGVtZW50YXRpb24gb2YKKyAgICBg
T3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlYC4KKyogICBgR1RFU1RfQ1VTVE9NX1RFTVBESVJf
RlVOQ1RJT05fYCAtIEFuIG92ZXJyaWRlIGZvciBgdGVzdGluZzo6VGVtcERpcigpYC4gU2VlCisg
ICAgYHRlc3Rpbmc6OlRlbXBEaXJgIGZvciBzZW1hbnRpY3MgYW5kIHNpZ25hdHVyZS4KKworIyMg
SGVhZGVyIGBndGVzdC1wb3J0LmhgCisKK1RoZSBmb2xsb3dpbmcgbWFjcm9zIGNhbiBiZSBkZWZp
bmVkOgorCisjIyMgRmxhZyByZWxhdGVkIG1hY3JvczoKKworKiAgIGBHVEVTVF9GTEFHKGZsYWdf
bmFtZSlgCisqICAgYEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR19gIC0gRGVmaW5lIHRvIDAg
d2hlbiB0aGUgc3lzdGVtIHByb3ZpZGVzIGl0cworICAgIG93biBmbGFnZmlsZSBmbGFnIHBhcnNp
bmcuCisqICAgYEdURVNUX0RFQ0xBUkVfYm9vbF8obmFtZSlgCisqICAgYEdURVNUX0RFQ0xBUkVf
aW50MzJfKG5hbWUpYAorKiAgIGBHVEVTVF9ERUNMQVJFX3N0cmluZ18obmFtZSlgCisqICAgYEdU
RVNUX0RFRklORV9ib29sXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKWAKKyogICBgR1RFU1RfREVG
SU5FX2ludDMyXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKWAKKyogICBgR1RFU1RfREVGSU5FX3N0
cmluZ18obmFtZSwgZGVmYXVsdF92YWwsIGRvYylgCisKKyMjIyBMb2dnaW5nOgorCisqICAgYEdU
RVNUX0xPR18oc2V2ZXJpdHkpYAorKiAgIGBHVEVTVF9DSEVDS18oY29uZGl0aW9uKWAKKyogICBG
dW5jdGlvbnMgYExvZ1RvU3RkZXJyKClgIGFuZCBgRmx1c2hJbmZvTG9nKClgIGhhdmUgdG8gYmUg
cHJvdmlkZWQgdG9vLgorCisjIyMgVGhyZWFkaW5nOgorCisqICAgYEdURVNUX0hBU19OT1RJRklD
QVRJT05fYCAtIEVuYWJsZWQgaWYgTm90aWZpY2F0aW9uIGlzIGFscmVhZHkgcHJvdmlkZWQuCisq
ICAgYEdURVNUX0hBU19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMX2AgLSBFbmFibGVkIGlmIGBNdXRl
eGAgYW5kIGBUaHJlYWRMb2NhbGAKKyAgICBhcmUgYWxyZWFkeSBwcm92aWRlZC4gTXVzdCBhbHNv
IHByb3ZpZGUgYEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRleClgCisgICAgYW5kIGBH
VEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhtdXRleClgCisqICAgYEdURVNUX0VYQ0xVU0lWRV9M
T0NLX1JFUVVJUkVEXyhsb2NrcylgCisqICAgYEdURVNUX0xPQ0tfRVhDTFVERURfKGxvY2tzKWAK
KworIyMjIFVuZGVybHlpbmcgbGlicmFyeSBzdXBwb3J0IGZlYXR1cmVzCisKKyogICBgR1RFU1Rf
SEFTX0NYWEFCSV9IX2AKKworIyMjIEV4cG9ydGluZyBBUEkgc3ltYm9sczoKKworKiAgIGBHVEVT
VF9BUElfYCAtIFNwZWNpZmllciBmb3IgZXhwb3J0ZWQgc3ltYm9scy4KKworIyMgSGVhZGVyIGBn
dGVzdC1wcmludGVycy5oYAorCisqICAgU2VlIGRvY3VtZW50YXRpb24gYXQgYGd0ZXN0L2d0ZXN0
LXByaW50ZXJzLmhgIGZvciBkZXRhaWxzIG9uIGhvdyB0byBkZWZpbmUgYQorICAgIGN1c3RvbSBw
cmludGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNk
ODVkOTU2ZDJkYzE3YmQ1MzdmMjE0MjM0MGJkZjU4ZjQ3MzcxMTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9n
dGVzdC1wb3J0LmgKQEAgLTAsMCArMSwzNyBAQAorLy8gQ29weXJpZ2h0IDIwMTUsIEdvb2dsZSBJ
bmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEluamVjdGlvbiBwb2ludCBmb3IgY3VzdG9tIHVzZXIg
Y29uZmlndXJhdGlvbnMuIFNlZSBSRUFETUUgZm9yIGRldGFpbHMKKy8vCisvLyAqKiBDdXN0b20g
aW1wbGVtZW50YXRpb24gc3RhcnRzIGhlcmUgKioKKworI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dU
RVNUX0lOVEVSTkFMX0NVU1RPTV9HVEVTVF9QT1JUX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xVREVf
R1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX1BPUlRfSF8KKworI2VuZGlmICAvLyBHVEVTVF9J
TkNMVURFX0dURVNUX0lOVEVSTkFMX0NVU1RPTV9HVEVTVF9QT1JUX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVz
dC1wcmludGVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9jdXN0b20vZ3Rlc3QtcHJpbnRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjQ0NjdhYmNhYmVhN2Zm
NzZmOWQyZDUyNzM4N2M5ZGE4MTAxNDhiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcHJpbnRlcnMu
aApAQCAtMCwwICsxLDQyIEBACisvLyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4KKy8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisv
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisvLworLy8gVGhpcyBmaWxlIHByb3ZpZGVzIGFuIGluamVjdGlvbiBwb2ludCBmb3Ig
Y3VzdG9tIHByaW50ZXJzIGluIGEgbG9jYWwKKy8vIGluc3RhbGxhdGlvbiBvZiBnVGVzdC4KKy8v
IEl0IHdpbGwgYmUgaW5jbHVkZWQgZnJvbSBndGVzdC1wcmludGVycy5oIGFuZCB0aGUgb3ZlcnJp
ZGVzIGluIHRoaXMgZmlsZQorLy8gd2lsbCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lLgorLy8KKy8v
IEluamVjdGlvbiBwb2ludCBmb3IgY3VzdG9tIHVzZXIgY29uZmlndXJhdGlvbnMuIFNlZSBSRUFE
TUUgZm9yIGRldGFpbHMKKy8vCisvLyAqKiBDdXN0b20gaW1wbGVtZW50YXRpb24gc3RhcnRzIGhl
cmUgKioKKworI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0NVU1RPTV9HVEVT
VF9QUklOVEVSU19IXworI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0NVU1RP
TV9HVEVTVF9QUklOVEVSU19IXworCisjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5U
RVJOQUxfQ1VTVE9NX0dURVNUX1BSSU5URVJTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YzhlMDdiZTIzZjFmZDYxNTlhZmVmMmVlZmQ3NDQ0MDM0ZGQwNjA0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9jdXN0b20vZ3Rlc3QuaApAQCAtMCwwICsxLDM3IEBACisvLyBDb3B5cmlnaHQgMjAxNSwg
R29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
Ky8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gSW5qZWN0aW9uIHBvaW50IGZvciBjdXN0
b20gdXNlciBjb25maWd1cmF0aW9ucy4gU2VlIFJFQURNRSBmb3IgZGV0YWlscworLy8KKy8vICoq
IEN1c3RvbSBpbXBsZW1lbnRhdGlvbiBzdGFydHMgaGVyZSAqKgorCisjaWZuZGVmIEdURVNUX0lO
Q0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX0hfCisjZGVmaW5lIEdURVNUX0lOQ0xV
REVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX0hfCisKKyNlbmRpZiAgLy8gR1RFU1RfSU5D
TFVERV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZGVhdGgtdGVzdC1p
bnRlcm5hbC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmgKaW5kZXggZTQzMzA4NDhkNGVhZTU3MGYyODBk
YWM1N2NmMDBiMjk3MjJjN2QwYy4uMGE5YjQyYzhhNTcyYTg3MTk0YzY1MTA5MDNlMjFlYTIyNjBm
YWM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9p
bnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0LWludGVybmFs
LmgKQEAgLTI3LDE3ICsyNywxOCBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
Ly8KLS8vIEF1dGhvcnM6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pLCBlZWZhY21AZ21h
aWwuY29tIChTZWFuIE1jYWZlZSkKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1l
d29yayAoR29vZ2xlIFRlc3QpCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5n
IEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVz
IGludGVybmFsIHV0aWxpdGllcyBuZWVkZWQgZm9yIGltcGxlbWVudGluZwogLy8gZGVhdGggdGVz
dHMuICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4KKy8vIEdPT0dM
RVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKIAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNU
X0lOVEVSTkFMX0dURVNUX0RFQVRIX1RFU1RfSU5URVJOQUxfSF8KICNkZWZpbmUgR1RFU1RfSU5D
TFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9ERUFUSF9URVNUX0lOVEVSTkFMX0hfCiAKLSNpbmNs
dWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oPgorI2luY2x1ZGUgImd0ZXN0L2lu
dGVybmFsL2d0ZXN0LWludGVybmFsLmgiCisKKyNpbmNsdWRlIDxzdGRpby5oPgogCiBuYW1lc3Bh
Y2UgdGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewpAQCAtNTEsNiArNTIsOSBAQCBjb25z
dCBjaGFyIGtJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWdbXSA9ICJpbnRlcm5hbF9ydW5fZGVhdGhf
dGVzdCI7CiAKICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogCitHVEVTVF9ESVNBQkxFX01TQ19X
QVJOSU5HU19QVVNIXyg0MjUxIFwKKy8qIGNsYXNzIEEgbmVlZHMgdG8gaGF2ZSBkbGwtaW50ZXJm
YWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50cyBvZiBjbGFzcyBCICovKQorCiAvLyBEZWF0aFRlc3Qg
aXMgYSBjbGFzcyB0aGF0IGhpZGVzIG11Y2ggb2YgdGhlIGNvbXBsZXhpdHkgb2YgdGhlCiAvLyBH
VEVTVF9ERUFUSF9URVNUXyBtYWNyby4gIEl0IGlzIGFic3RyYWN0OyBpdHMgc3RhdGljIENyZWF0
ZSBtZXRob2QKIC8vIHJldHVybnMgYSBjb25jcmV0ZSBjbGFzcyB0aGF0IGRlcGVuZHMgb24gdGhl
IHByZXZhaWxpbmcgZGVhdGggdGVzdApAQCAtOTYsOCArMTAwLDEyIEBAIGNsYXNzIEdURVNUX0FQ
SV8gRGVhdGhUZXN0IHsKICAgLy8gdGVzdCwgdGhlbiB3YWl0IGZvciBpdCB0byBjb21wbGV0ZS4K
ICAgZW51bSBUZXN0Um9sZSB7IE9WRVJTRUVfVEVTVCwgRVhFQ1VURV9URVNUIH07CiAKLSAgLy8g
QW4gZW51bWVyYXRpb24gb2YgdGhlIHR3byByZWFzb25zIHRoYXQgYSB0ZXN0IG1pZ2h0IGJlIGFi
b3J0ZWQuCi0gIGVudW0gQWJvcnRSZWFzb24geyBURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFU
RU1FTlQsIFRFU1RfRElEX05PVF9ESUUgfTsKKyAgLy8gQW4gZW51bWVyYXRpb24gb2YgdGhlIHRo
cmVlIHJlYXNvbnMgdGhhdCBhIHRlc3QgbWlnaHQgYmUgYWJvcnRlZC4KKyAgZW51bSBBYm9ydFJl
YXNvbiB7CisgICAgVEVTVF9FTkNPVU5URVJFRF9SRVRVUk5fU1RBVEVNRU5ULAorICAgIFRFU1Rf
VEhSRVdfRVhDRVBUSU9OLAorICAgIFRFU1RfRElEX05PVF9ESUUKKyAgfTsKIAogICAvLyBBc3N1
bWVzIG9uZSBvZiB0aGUgYWJvdmUgcm9sZXMuCiAgIHZpcnR1YWwgVGVzdFJvbGUgQXNzdW1lUm9s
ZSgpID0gMDsKQEAgLTEyMSwxNSArMTI5LDE3IEBAIGNsYXNzIEdURVNUX0FQSV8gRGVhdGhUZXN0
IHsKICAgLy8gdGhlIGxhc3QgZGVhdGggdGVzdC4KICAgc3RhdGljIGNvbnN0IGNoYXIqIExhc3RN
ZXNzYWdlKCk7CiAKLSAgc3RhdGljIHZvaWQgc2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7CisgIHN0YXRpYyB2b2lkIHNldF9sYXN0X2RlYXRoX3Rlc3Rf
bWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSk7CiAKICBwcml2YXRlOgogICAvLyBB
IHN0cmluZyBjb250YWluaW5nIGEgZGVzY3JpcHRpb24gb2YgdGhlIG91dGNvbWUgb2YgdGhlIGxh
c3QgZGVhdGggdGVzdC4KLSAgc3RhdGljIFN0cmluZyBsYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZV87
CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBsYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZV87CiAKICAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhEZWF0aFRlc3QpOwogfTsKIAorR1RFU1RfRElT
QUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQorCiAvLyBGYWN0b3J5IGludGVyZmFj
ZSBmb3IgZGVhdGggdGVzdHMuICBNYXkgYmUgbW9ja2VkIG91dCBmb3IgdGVzdGluZy4KIGNsYXNz
IERlYXRoVGVzdEZhY3RvcnkgewogIHB1YmxpYzoKQEAgLTE0OSw5ICsxNTksMzQgQEAgY2xhc3Mg
RGVmYXVsdERlYXRoVGVzdEZhY3RvcnkgOiBwdWJsaWMgRGVhdGhUZXN0RmFjdG9yeSB7CiAvLyBi
eSBhIHNpZ25hbCwgb3IgZXhpdGVkIG5vcm1hbGx5IHdpdGggYSBub256ZXJvIGV4aXQgY29kZS4K
IEdURVNUX0FQSV8gYm9vbCBFeGl0ZWRVbnN1Y2Nlc3NmdWxseShpbnQgZXhpdF9zdGF0dXMpOwog
CisvLyBUcmFwcyBDKysgZXhjZXB0aW9ucyBlc2NhcGluZyBzdGF0ZW1lbnQgYW5kIHJlcG9ydHMg
dGhlbSBhcyB0ZXN0CisvLyBmYWlsdXJlcy4gTm90ZSB0aGF0IHRyYXBwaW5nIFNFSCBleGNlcHRp
b25zIGlzIG5vdCBpbXBsZW1lbnRlZCBoZXJlLgorIyBpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwor
IyAgZGVmaW5lIEdURVNUX0VYRUNVVEVfREVBVEhfVEVTVF9TVEFURU1FTlRfKHN0YXRlbWVudCwg
ZGVhdGhfdGVzdCkgXAorICB0cnkgeyBcCisgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVf
Q09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCisgIH0gY2F0Y2ggKGNvbnN0IDo6c3Rk
OjpleGNlcHRpb24mIGd0ZXN0X2V4Y2VwdGlvbikgeyBcCisgICAgZnByaW50ZihcCisgICAgICAg
IHN0ZGVyciwgXAorICAgICAgICAiXG4lczogQ2F1Z2h0IHN0ZDo6ZXhjZXB0aW9uLWRlcml2ZWQg
ZXhjZXB0aW9uIGVzY2FwaW5nIHRoZSAiIFwKKyAgICAgICAgImRlYXRoIHRlc3Qgc3RhdGVtZW50
LiBFeGNlcHRpb24gbWVzc2FnZTogJXNcbiIsIFwKKyAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Rm9ybWF0RmlsZUxvY2F0aW9uKF9fRklMRV9fLCBfX0xJTkVfXykuY19zdHIoKSwgXAorICAg
ICAgICBndGVzdF9leGNlcHRpb24ud2hhdCgpKTsgXAorICAgIGZmbHVzaChzdGRlcnIpOyBcCisg
ICAgZGVhdGhfdGVzdC0+QWJvcnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0OjpURVNU
X1RIUkVXX0VYQ0VQVElPTik7IFwKKyAgfSBjYXRjaCAoLi4uKSB7IFwKKyAgICBkZWF0aF90ZXN0
LT5BYm9ydCg6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OlRFU1RfVEhSRVdfRVhDRVBU
SU9OKTsgXAorICB9CisKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0VYRUNVVEVfREVBVEhfVEVT
VF9TVEFURU1FTlRfKHN0YXRlbWVudCwgZGVhdGhfdGVzdCkgXAorICBHVEVTVF9TVVBQUkVTU19V
TlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCkKKworIyBlbmRpZgorCiAv
LyBUaGlzIG1hY3JvIGlzIGZvciBpbXBsZW1lbnRpbmcgQVNTRVJUX0RFQVRIKiwgRVhQRUNUX0RF
QVRIKiwKIC8vIEFTU0VSVF9FWElUKiwgYW5kIEVYUEVDVF9FWElUKi4KLSNkZWZpbmUgR1RFU1Rf
REVBVEhfVEVTVF8oc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4LCBmYWlsKSBcCisjIGRlZmlu
ZSBHVEVTVF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIGZhaWwpIFwK
ICAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAogICBpZiAoOjp0ZXN0aW5nOjppbnRl
cm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKICAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpS
RSYgZ3Rlc3RfcmVnZXggPSAocmVnZXgpOyBcCkBAIC0xNzIsMTAgKzIwNywxMiBAQCBHVEVTVF9B
UElfIGJvb2wgRXhpdGVkVW5zdWNjZXNzZnVsbHkoaW50IGV4aXRfc3RhdHVzKTsKICAgICAgICAg
Y2FzZSA6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OkVYRUNVVEVfVEVTVDogeyBcCiAg
ICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0OjpSZXR1cm5TZW50aW5lbCBc
CiAgICAgICAgICAgICAgIGd0ZXN0X3NlbnRpbmVsKGd0ZXN0X2R0KTsgXAotICAgICAgICAgIEdU
RVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KTsg
XAorICAgICAgICAgIEdURVNUX0VYRUNVVEVfREVBVEhfVEVTVF9TVEFURU1FTlRfKHN0YXRlbWVu
dCwgZ3Rlc3RfZHQpOyBcCiAgICAgICAgICAgZ3Rlc3RfZHQtPkFib3J0KDo6dGVzdGluZzo6aW50
ZXJuYWw6OkRlYXRoVGVzdDo6VEVTVF9ESURfTk9UX0RJRSk7IFwKICAgICAgICAgICBicmVhazsg
XAogICAgICAgICB9IFwKKyAgICAgICAgZGVmYXVsdDogXAorICAgICAgICAgIGJyZWFrOyBcCiAg
ICAgICB9IFwKICAgICB9IFwKICAgfSBlbHNlIFwKQEAgLTE4NCwxMiArMjIxLDI3IEBAIEdURVNU
X0FQSV8gYm9vbCBFeGl0ZWRVbnN1Y2Nlc3NmdWxseShpbnQgZXhpdF9zdGF0dXMpOwogLy8gVGhl
IHN5bWJvbCAiZmFpbCIgaGVyZSBleHBhbmRzIHRvIHNvbWV0aGluZyBpbnRvIHdoaWNoIGEgbWVz
c2FnZQogLy8gY2FuIGJlIHN0cmVhbWVkLgogCisvLyBUaGlzIG1hY3JvIGlzIGZvciBpbXBsZW1l
bnRpbmcgQVNTRVJUL0VYUEVDVF9ERUJVR19ERUFUSCB3aGVuIGNvbXBpbGVkIGluCisvLyBOREVC
VUcgbW9kZS4gSW4gdGhpcyBjYXNlIHdlIG5lZWQgdGhlIHN0YXRlbWVudHMgdG8gYmUgZXhlY3V0
ZWQgYW5kIHRoZSBtYWNybworLy8gbXVzdCBhY2NlcHQgYSBzdHJlYW1lZCBtZXNzYWdlIGV2ZW4g
dGhvdWdoIHRoZSBtZXNzYWdlIGlzIG5ldmVyIHByaW50ZWQuCisvLyBUaGUgcmVnZXggb2JqZWN0
IGlzIG5vdCBldmFsdWF0ZWQsIGJ1dCBpdCBpcyB1c2VkIHRvIHByZXZlbnQgInVudXNlZCIKKy8v
IHdhcm5pbmdzIGFuZCB0byBhdm9pZCBhbiBleHByZXNzaW9uIHRoYXQgZG9lc24ndCBjb21waWxl
IGluIGRlYnVnIG1vZGUuCisjZGVmaW5lIEdURVNUX0VYRUNVVEVfU1RBVEVNRU5UXyhzdGF0ZW1l
bnQsIHJlZ2V4KSAgICAgICAgICAgICBcCisgIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJf
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGlmICg6OnRlc3Rpbmc6OmludGVy
bmFsOjpBbHdheXNUcnVlKCkpIHsgICAgICAgICAgICAgICAgICAgICBcCisgICAgR1RFU1RfU1VQ
UFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCisgIH0g
ZWxzZSBpZiAoITo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyAgICAgICAgICAg
ICBcCisgICAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UkUmIGd0ZXN0X3JlZ2V4ID0gKHJl
Z2V4KTsgICAgICBcCisgICAgc3RhdGljX2Nhc3Q8dm9pZD4oZ3Rlc3RfcmVnZXgpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgIH0gZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgOjp0ZXN0aW5nOjpNZXNzYWdlKCkK
KwogLy8gQSBjbGFzcyByZXByZXNlbnRpbmcgdGhlIHBhcnNlZCBjb250ZW50cyBvZiB0aGUKIC8v
IC0tZ3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QgZmxhZywgYXMgaXQgZXhpc3RlZCB3aGVu
CiAvLyBSVU5fQUxMX1RFU1RTIHdhcyBjYWxsZWQuCiBjbGFzcyBJbnRlcm5hbFJ1bkRlYXRoVGVz
dEZsYWcgewogIHB1YmxpYzoKLSAgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKGNvbnN0IFN0cmlu
ZyYgYV9maWxlLAorICBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoY29uc3Qgc3RkOjpzdHJpbmcm
IGFfZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhX2xpbmUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgYW5faW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgYV93cml0ZV9mZCkKQEAgLTIwMSwxMyArMjUzLDEzIEBAIGNsYXNzIEludGVybmFs
UnVuRGVhdGhUZXN0RmxhZyB7CiAgICAgICBwb3NpeDo6Q2xvc2Uod3JpdGVfZmRfKTsKICAgfQog
Ci0gIFN0cmluZyBmaWxlKCkgY29uc3QgeyByZXR1cm4gZmlsZV87IH0KKyAgY29uc3Qgc3RkOjpz
dHJpbmcmIGZpbGUoKSBjb25zdCB7IHJldHVybiBmaWxlXzsgfQogICBpbnQgbGluZSgpIGNvbnN0
IHsgcmV0dXJuIGxpbmVfOyB9CiAgIGludCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIGluZGV4Xzsg
fQogICBpbnQgd3JpdGVfZmQoKSBjb25zdCB7IHJldHVybiB3cml0ZV9mZF87IH0KIAogIHByaXZh
dGU6Ci0gIFN0cmluZyBmaWxlXzsKKyAgc3RkOjpzdHJpbmcgZmlsZV87CiAgIGludCBsaW5lXzsK
ICAgaW50IGluZGV4XzsKICAgaW50IHdyaXRlX2ZkXzsKQEAgLTIyMCw1MyArMjcyLDYgQEAgY2xh
c3MgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnIHsKIC8vIHRoZSBmbGFnIGlzIHNwZWNpZmllZDsg
b3RoZXJ3aXNlIHJldHVybnMgTlVMTC4KIEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyogUGFyc2VJ
bnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoKTsKIAotI2Vsc2UgIC8vIEdURVNUX0hBU19ERUFUSF9U
RVNUCi0KLS8vIFRoaXMgbWFjcm8gaXMgdXNlZCBmb3IgaW1wbGVtZW50aW5nIG1hY3JvcyBzdWNo
IGFzCi0vLyBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEIGFuZCBBU1NFUlRfREVBVEhfSUZfU1VQ
UE9SVEVEIG9uIHN5c3RlbXMgd2hlcmUKLS8vIGRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVk
LiBUaG9zZSBtYWNyb3MgbXVzdCBjb21waWxlIG9uIHN1Y2ggc3lzdGVtcwotLy8gaWZmIEVYUEVD
VF9ERUFUSCBhbmQgQVNTRVJUX0RFQVRIIGNvbXBpbGUgd2l0aCB0aGUgc2FtZSBwYXJhbWV0ZXJz
IG9uCi0vLyBzeXN0ZW1zIHRoYXQgc3VwcG9ydCBkZWF0aCB0ZXN0cy4gVGhpcyBhbGxvd3Mgb25l
IHRvIHdyaXRlIHN1Y2ggYSBtYWNybwotLy8gb24gYSBzeXN0ZW0gdGhhdCBkb2VzIG5vdCBzdXBw
b3J0IGRlYXRoIHRlc3RzIGFuZCBiZSBzdXJlIHRoYXQgaXQgd2lsbAotLy8gY29tcGlsZSBvbiBh
IGRlYXRoLXRlc3Qgc3VwcG9ydGluZyBzeXN0ZW0uCi0vLwotLy8gUGFyYW1ldGVyczoKLS8vICAg
c3RhdGVtZW50IC0gIEEgc3RhdGVtZW50IHRoYXQgYSBtYWNybyBzdWNoIGFzIEVYUEVDVF9ERUFU
SCB3b3VsZCB0ZXN0Ci0vLyAgICAgICAgICAgICAgICBmb3IgcHJvZ3JhbSB0ZXJtaW5hdGlvbi4g
VGhpcyBtYWNybyBoYXMgdG8gbWFrZSBzdXJlIHRoaXMKLS8vICAgICAgICAgICAgICAgIHN0YXRl
bWVudCBpcyBjb21waWxlZCBidXQgbm90IGV4ZWN1dGVkLCB0byBlbnN1cmUgdGhhdAotLy8gICAg
ICAgICAgICAgICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCBjb21waWxlcyB3aXRoIGEgY2Vy
dGFpbgotLy8gICAgICAgICAgICAgICAgcGFyYW1ldGVyIGlmZiBFWFBFQ1RfREVBVEggY29tcGls
ZXMgd2l0aCBpdC4KLS8vICAgcmVnZXggICAgIC0gIEEgcmVnZXggdGhhdCBhIG1hY3JvIHN1Y2gg
YXMgRVhQRUNUX0RFQVRIIHdvdWxkIHVzZSB0byB0ZXN0Ci0vLyAgICAgICAgICAgICAgICB0aGUg
b3V0cHV0IG9mIHN0YXRlbWVudC4gIFRoaXMgcGFyYW1ldGVyIGhhcyB0byBiZQotLy8gICAgICAg
ICAgICAgICAgY29tcGlsZWQgYnV0IG5vdCBldmFsdWF0ZWQgYnkgdGhpcyBtYWNybywgdG8gZW5z
dXJlIHRoYXQKLS8vICAgICAgICAgICAgICAgIHRoaXMgbWFjcm8gb25seSBhY2NlcHRzIGV4cHJl
c3Npb25zIHRoYXQgYSBtYWNybyBzdWNoIGFzCi0vLyAgICAgICAgICAgICAgICBFWFBFQ1RfREVB
VEggd291bGQgYWNjZXB0LgotLy8gICB0ZXJtaW5hdG9yIC0gTXVzdCBiZSBhbiBlbXB0eSBzdGF0
ZW1lbnQgZm9yIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQKLS8vICAgICAgICAgICAgICAgIGFu
ZCBhIHJldHVybiBzdGF0ZW1lbnQgZm9yIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQuCi0vLyAg
ICAgICAgICAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVE
IHdpbGwgbm90Ci0vLyAgICAgICAgICAgICAgICBjb21waWxlIGluc2lkZSBmdW5jdGlvbnMgd2hl
cmUgQVNTRVJUX0RFQVRIIGRvZXNuJ3QKLS8vICAgICAgICAgICAgICAgIGNvbXBpbGUuCi0vLwot
Ly8gIFRoZSBicmFuY2ggdGhhdCBoYXMgYW4gYWx3YXlzIGZhbHNlIGNvbmRpdGlvbiBpcyB1c2Vk
IHRvIGVuc3VyZSB0aGF0Ci0vLyAgc3RhdGVtZW50IGFuZCByZWdleCBhcmUgY29tcGlsZWQgKGFu
ZCB0aHVzIHN5bnRhY3RpY2FsbHkgY29ycmVjdCkgYnV0Ci0vLyAgbmV2ZXIgZXhlY3V0ZWQuIFRo
ZSB1bnJlYWNoYWJsZSBjb2RlIG1hY3JvIHByb3RlY3RzIHRoZSB0ZXJtaW5hdG9yCi0vLyAgc3Rh
dGVtZW50IGZyb20gZ2VuZXJhdGluZyBhbiAndW5yZWFjaGFibGUgY29kZScgd2FybmluZyBpbiBj
YXNlCi0vLyAgc3RhdGVtZW50IHVuY29uZGl0aW9uYWxseSByZXR1cm5zIG9yIHRocm93cy4gVGhl
IE1lc3NhZ2UgY29uc3RydWN0b3IgYXQKLS8vICB0aGUgZW5kIGFsbG93cyB0aGUgc3ludGF4IG9m
IHN0cmVhbWluZyBhZGRpdGlvbmFsIG1lc3NhZ2VzIGludG8gdGhlCi0vLyAgbWFjcm8sIGZvciBj
b21waWxhdGlvbmFsIGNvbXBhdGliaWxpdHkgd2l0aCBFWFBFQ1RfREVBVEgvQVNTRVJUX0RFQVRI
LgotI2RlZmluZSBHVEVTVF9VTlNVUFBPUlRFRF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHJlZ2V4
LCB0ZXJtaW5hdG9yKSBcCi0gICAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAotICAg
IGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAotICAgICAgR1RFU1Rf
TE9HXyhXQVJOSU5HKSBcCi0gICAgICAgICAgPDwgIkRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9y
dGVkIG9uIHRoaXMgcGxhdGZvcm0uXG4iIFwKLSAgICAgICAgICA8PCAiU3RhdGVtZW50ICciICNz
dGF0ZW1lbnQgIicgY2Fubm90IGJlIHZlcmlmaWVkLiI7IFwKLSAgICB9IGVsc2UgaWYgKDo6dGVz
dGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpIHsgXAotICAgICAgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6UkU6OlBhcnRpYWxNYXRjaCgiLioiLCAocmVnZXgpKTsgXAotICAgICAgR1RFU1RfU1VQ
UFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCi0gICAg
ICB0ZXJtaW5hdG9yOyBcCi0gICAgfSBlbHNlIFwKLSAgICAgIDo6dGVzdGluZzo6TWVzc2FnZSgp
Ci0KICNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKIAogfSAgLy8gbmFtZXNwYWNlIGlu
dGVybmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgKaW5kZXggNGI3NmQ3OTUwNmIwMjZh
YmEzNzE2NDcyZmM0M2NlZmMxYTdlMzg4YS4uYWUzOGQ5NWJmODQ0ZmE5ZGMyMTczOWNmODIxMjc2
ZDViMzQxN2UzYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9pbnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaApAQCAtMjcsMjAgKzI3
LDIzIEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQXV0aG9yOiBr
ZWl0aC5yYXlAZ21haWwuY29tIChLZWl0aCBSYXkpCi0vLwogLy8gR29vZ2xlIFRlc3QgZmlsZXBh
dGggdXRpbGl0aWVzCiAvLwogLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWNsYXJlcyBjbGFzc2VzIGFu
ZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5IGJ5CiAvLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJl
IHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgogLy8KLS8vIFRoaXMgZmlsZSBpcyAj
aW5jbHVkZWQgaW4gPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg+LgorLy8gVGhpcyBm
aWxlIGlzICNpbmNsdWRlZCBpbiBndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oLgogLy8g
RG8gbm90IGluY2x1ZGUgdGhpcyBoZWFkZXIgZmlsZSBzZXBhcmF0ZWx5IQogCisvLyBHT09HTEVU
RVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9J
TlRFUk5BTF9HVEVTVF9GSUxFUEFUSF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lO
VEVSTkFMX0dURVNUX0ZJTEVQQVRIX0hfCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVz
dC1zdHJpbmcuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKKwor
R1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDI1MSBcCisvKiBjbGFzcyBBIG5lZWRz
IHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2VkIGJ5IGNsaWVudHMgb2YgY2xhc3MgQiAq
LykKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsKQEAgLTYxLDEx
ICs2NCw3IEBAIGNsYXNzIEdURVNUX0FQSV8gRmlsZVBhdGggewogICBGaWxlUGF0aCgpIDogcGF0
aG5hbWVfKCIiKSB7IH0KICAgRmlsZVBhdGgoY29uc3QgRmlsZVBhdGgmIHJocykgOiBwYXRobmFt
ZV8ocmhzLnBhdGhuYW1lXykgeyB9CiAKLSAgZXhwbGljaXQgRmlsZVBhdGgoY29uc3QgY2hhciog
cGF0aG5hbWUpIDogcGF0aG5hbWVfKHBhdGhuYW1lKSB7Ci0gICAgTm9ybWFsaXplKCk7Ci0gIH0K
LQotICBleHBsaWNpdCBGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGhuYW1lKSA6IHBhdGhuYW1l
XyhwYXRobmFtZSkgeworICBleHBsaWNpdCBGaWxlUGF0aChjb25zdCBzdGQ6OnN0cmluZyYgcGF0
aG5hbWUpIDogcGF0aG5hbWVfKHBhdGhuYW1lKSB7CiAgICAgTm9ybWFsaXplKCk7CiAgIH0KIApA
QCAtNzgsNyArNzcsNyBAQCBjbGFzcyBHVEVTVF9BUElfIEZpbGVQYXRoIHsKICAgICBwYXRobmFt
ZV8gPSByaHMucGF0aG5hbWVfOwogICB9CiAKLSAgU3RyaW5nIFRvU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gcGF0aG5hbWVfOyB9CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7
IHJldHVybiBwYXRobmFtZV87IH0KICAgY29uc3QgY2hhciogY19zdHIoKSBjb25zdCB7IHJldHVy
biBwYXRobmFtZV8uY19zdHIoKTsgfQogCiAgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgd29ya2lu
ZyBkaXJlY3RvcnksIG9yICIiIGlmIHVuc3VjY2Vzc2Z1bC4KQEAgLTExMSw4ICsxMTAsOCBAQCBj
bGFzcyBHVEVTVF9BUElfIEZpbGVQYXRoIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgRmlsZVBhdGgmIGJhc2VfbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0ZW5zaW9uKTsKIAotICAvLyBS
ZXR1cm5zIHRydWUgaWZmIHRoZSBwYXRoIGlzIE5VTEwgb3IgIiIuCi0gIGJvb2wgSXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuIGNfc3RyKCkgPT0gTlVMTCB8fCAqY19zdHIoKSA9PSAnXDAnOyB9Cisg
IC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHBhdGggaXMgIiIuCisgIGJvb2wgSXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuIHBhdGhuYW1lXy5lbXB0eSgpOyB9CiAKICAgLy8gSWYgaW5wdXQgbmFtZSBo
YXMgYSB0cmFpbGluZyBzZXBhcmF0b3IgY2hhcmFjdGVyLCByZW1vdmVzIGl0IGFuZCByZXR1cm5z
CiAgIC8vIHRoZSBuYW1lLCBvdGhlcndpc2UgcmV0dXJuIHRoZSBuYW1lIHN0cmluZyB1bm1vZGlm
aWVkLgpAQCAtMjAxLDEwICsyMDAsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBGaWxlUGF0aCB7CiAg
IC8vIHNlcGFyYXRvcnMuIFJldHVybnMgTlVMTCBpZiBubyBwYXRoIHNlcGFyYXRvciB3YXMgZm91
bmQuCiAgIGNvbnN0IGNoYXIqIEZpbmRMYXN0UGF0aFNlcGFyYXRvcigpIGNvbnN0OwogCi0gIFN0
cmluZyBwYXRobmFtZV87CisgIHN0ZDo6c3RyaW5nIHBhdGhuYW1lXzsKIH07ICAvLyBjbGFzcyBG
aWxlUGF0aAogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0
aW5nCiAKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQyNTEKKwogI2Vu
ZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0ZJTEVQQVRIX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LWludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgKaW5kZXggMzFhNjZlOTlkM2M0ODIxNTFlNDBmYzM1
YTQwMjcwMDY5MDMyYTFkNS4uYjc2MmY2MWZjNTNjM2RiOWNmYjc1Mzk0MGQ5MWI1ZDU0YWIzNjM1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC1pbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaApAQCAtMjcsMzQgKzI3LDQzIEBACiAv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQXV0aG9yczogd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbiksIGVlZmFjbUBnbWFpbC5jb20gKFNlYW4gTWNhZmVlKQotLy8K
LS8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIFRo
ZSBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkK
IC8vCiAvLyBUaGlzIGhlYWRlciBmaWxlIGRlY2xhcmVzIGZ1bmN0aW9ucyBhbmQgbWFjcm9zIHVz
ZWQgaW50ZXJuYWxseSBieQogLy8gR29vZ2xlIFRlc3QuICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNo
YW5nZSB3aXRob3V0IG5vdGljZS4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVU
RQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfSU5URVJOQUxf
SF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9JTlRFUk5BTF9I
XwogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorI2luY2x1ZGUgImd0
ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKIAogI2lmIEdURVNUX09TX0xJTlVYCi0jaW5jbHVk
ZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3dhaXQu
aD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KKyMgaW5jbHVkZSA8c3RkbGliLmg+CisjIGluY2x1ZGUg
PHN5cy90eXBlcy5oPgorIyBpbmNsdWRlIDxzeXMvd2FpdC5oPgorIyBpbmNsdWRlIDx1bmlzdGQu
aD4KICNlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKIAorI2lmIEdURVNUX0hBU19FWENFUFRJT05T
CisjIGluY2x1ZGUgPHN0ZGV4Y2VwdD4KKyNlbmRpZgorCiAjaW5jbHVkZSA8Y3R5cGUuaD4KKyNp
bmNsdWRlIDxmbG9hdC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGlvbWFuaXA+
CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxzZXQ+CisjaW5j
bHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVy
bmFsL2d0ZXN0LXN0cmluZy5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVw
YXRoLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmg+CisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0
ZXN0LWZpbGVwYXRoLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgi
CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgiCiAKIC8vIER1ZSB0
byBDKysgcHJlcHJvY2Vzc29yIHdlaXJkbmVzcywgd2UgbmVlZCBkb3VibGUgaW5kaXJlY3Rpb24g
dG8KIC8vIGNvbmNhdGVuYXRlIHR3byB0b2tlbnMgd2hlbiBvbmUgb2YgdGhlbSBpcyBfX0xJTkVf
Xy4gIFdyaXRpbmcKQEAgLTY3LDM5ICs3NiwxNSBAQAogI2RlZmluZSBHVEVTVF9DT05DQVRfVE9L
RU5fKGZvbywgYmFyKSBHVEVTVF9DT05DQVRfVE9LRU5fSU1QTF8oZm9vLCBiYXIpCiAjZGVmaW5l
IEdURVNUX0NPTkNBVF9UT0tFTl9JTVBMXyhmb28sIGJhcikgZm9vICMjIGJhcgogCi0vLyBHb29n
bGUgVGVzdCBkZWZpbmVzIHRoZSB0ZXN0aW5nOjpNZXNzYWdlIGNsYXNzIHRvIGFsbG93IGNvbnN0
cnVjdGlvbiBvZgotLy8gdGVzdCBtZXNzYWdlcyB2aWEgdGhlIDw8IG9wZXJhdG9yLiAgVGhlIGlk
ZWEgaXMgdGhhdCBhbnl0aGluZwotLy8gc3RyZWFtYWJsZSB0byBzdGQ6Om9zdHJlYW0gY2FuIGJl
IHN0cmVhbWVkIHRvIGEgdGVzdGluZzo6TWVzc2FnZS4KLS8vIFRoaXMgYWxsb3dzIGEgdXNlciB0
byB1c2UgaGlzIG93biB0eXBlcyBpbiBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGJ5Ci0vLyBvdmVy
bG9hZGluZyB0aGUgPDwgb3BlcmF0b3IuCi0vLwotLy8gdXRpbC9ndGwvc3RsX2xvZ2dpbmctaW5s
Lmggb3ZlcmxvYWRzIDw8IGZvciBTVEwgY29udGFpbmVycy4gIFRoZXNlCi0vLyBvdmVybG9hZHMg
Y2Fubm90IGJlIGRlZmluZWQgaW4gdGhlIHN0ZCBuYW1lc3BhY2UsIGFzIHRoYXQgd2lsbCBiZQot
Ly8gdW5kZWZpbmVkIGJlaGF2aW9yLiAgVGhlcmVmb3JlLCB0aGV5IGFyZSBkZWZpbmVkIGluIHRo
ZSBnbG9iYWwKLS8vIG5hbWVzcGFjZSBpbnN0ZWFkLgotLy8KLS8vIEMrKydzIHN5bWJvbCBsb29r
dXAgcnVsZSAoaS5lLiBLb2VuaWcgbG9va3VwKSBzYXlzIHRoYXQgdGhlc2UKLS8vIG92ZXJsb2Fk
cyBhcmUgdmlzaWJsZSBpbiBlaXRoZXIgdGhlIHN0ZCBuYW1lc3BhY2Ugb3IgdGhlIGdsb2JhbAot
Ly8gbmFtZXNwYWNlLCBidXQgbm90IG90aGVyIG5hbWVzcGFjZXMsIGluY2x1ZGluZyB0aGUgdGVz
dGluZwotLy8gbmFtZXNwYWNlIHdoaWNoIEdvb2dsZSBUZXN0J3MgTWVzc2FnZSBjbGFzcyBpcyBp
bi4KLS8vCi0vLyBUbyBhbGxvdyBTVEwgY29udGFpbmVycyAoYW5kIG90aGVyIHR5cGVzIHRoYXQg
aGFzIGEgPDwgb3BlcmF0b3IKLS8vIGRlZmluZWQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UpIHRv
IGJlIHVzZWQgaW4gR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucywKLS8vIHRlc3Rpbmc6Ok1lc3NhZ2Ug
bXVzdCBhY2Nlc3MgdGhlIGN1c3RvbSA8PCBvcGVyYXRvciBmcm9tIHRoZSBnbG9iYWwKLS8vIG5h
bWVzcGFjZS4gIEhlbmNlIHRoaXMgaGVscGVyIGZ1bmN0aW9uLgotLy8KLS8vIE5vdGU6IEplZmZy
ZXkgWWFzc2tpbiBzdWdnZXN0ZWQgYW4gYWx0ZXJuYXRpdmUgZml4IGJ5ICJ1c2luZwotLy8gOjpv
cGVyYXRvcjw8OyIgaW4gdGhlIGRlZmluaXRpb24gb2YgTWVzc2FnZSdzIG9wZXJhdG9yPDwuICBU
aGF0IGZpeAotLy8gZG9lc24ndCByZXF1aXJlIGEgaGVscGVyIGZ1bmN0aW9uLCBidXQgdW5mb3J0
dW5hdGVseSBkb2Vzbid0Ci0vLyBjb21waWxlIHdpdGggTVNWQy4KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotaW5saW5lIHZvaWQgR1Rlc3RTdHJlYW1Ub0hlbHBlcihzdGQ6Om9zdHJlYW0qIG9zLCBj
b25zdCBUJiB2YWwpIHsKLSAgKm9zIDw8IHZhbDsKLX0KKy8vIFN0cmluZ2lmaWVzIGl0cyBhcmd1
bWVudC4KKyNkZWZpbmUgR1RFU1RfU1RSSU5HSUZZXyhuYW1lKSAjbmFtZQorCitjbGFzcyBQcm90
b2NvbE1lc3NhZ2U7CituYW1lc3BhY2UgcHJvdG8yIHsgY2xhc3MgTWVzc2FnZTsgfQogCiBuYW1l
c3BhY2UgdGVzdGluZyB7CiAKLS8vIEZvcndhcmQgZGVjbGFyYXRpb24gb2YgY2xhc3Nlcy4KKy8v
IEZvcndhcmQgZGVjbGFyYXRpb25zLgogCiBjbGFzcyBBc3NlcnRpb25SZXN1bHQ7ICAgICAgICAg
ICAgICAgICAvLyBSZXN1bHQgb2YgYW4gYXNzZXJ0aW9uLgogY2xhc3MgTWVzc2FnZTsgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gUmVwcmVzZW50cyBhIGZhaWx1cmUgbWVzc2FnZS4KQEAgLTEw
OCwyNSArOTMsMTkgQEAgY2xhc3MgVGVzdEluZm87ICAgICAgICAgICAgICAgICAgICAgICAgLy8g
SW5mb3JtYXRpb24gYWJvdXQgYSB0ZXN0LgogY2xhc3MgVGVzdFBhcnRSZXN1bHQ7ICAgICAgICAg
ICAgICAgICAgLy8gUmVzdWx0IG9mIGEgdGVzdCBwYXJ0LgogY2xhc3MgVW5pdFRlc3Q7ICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gQSBjb2xsZWN0aW9uIG9mIHRlc3QgY2FzZXMuCiAKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorOjpzdGQ6OnN0cmluZyBQcmludFRvU3RyaW5nKGNvbnN0IFQmIHZh
bHVlKTsKKwogbmFtZXNwYWNlIGludGVybmFsIHsKIAogc3RydWN0IFRyYWNlSW5mbzsgICAgICAg
ICAgICAgICAgICAgICAgLy8gSW5mb3JtYXRpb24gYWJvdXQgYSB0cmFjZSBwb2ludC4KLWNsYXNz
IFNjb3BlZFRyYWNlOyAgICAgICAgICAgICAgICAgICAgIC8vIEltcGxlbWVudHMgc2NvcGVkIHRy
YWNlLgogY2xhc3MgVGVzdEluZm9JbXBsOyAgICAgICAgICAgICAgICAgICAgLy8gT3BhcXVlIGlt
cGxlbWVudGF0aW9uIG9mIFRlc3RJbmZvCiBjbGFzcyBVbml0VGVzdEltcGw7ICAgICAgICAgICAg
ICAgICAgICAvLyBPcGFxdWUgaW1wbGVtZW50YXRpb24gb2YgVW5pdFRlc3QKIAotLy8gSG93IG1h
bnkgdGltZXMgSW5pdEdvb2dsZVRlc3QoKSBoYXMgYmVlbiBjYWxsZWQuCi1leHRlcm4gaW50IGdf
aW5pdF9ndGVzdF9jb3VudDsKLQogLy8gVGhlIHRleHQgdXNlZCBpbiBmYWlsdXJlIG1lc3NhZ2Vz
IHRvIGluZGljYXRlIHRoZSBzdGFydCBvZiB0aGUKIC8vIHN0YWNrIHRyYWNlLgogR1RFU1RfQVBJ
XyBleHRlcm4gY29uc3QgY2hhciBrU3RhY2tUcmFjZU1hcmtlcltdOwogCi0vLyBBIHNlY3JldCB0
eXBlIHRoYXQgR29vZ2xlIFRlc3QgdXNlcnMgZG9uJ3Qga25vdyBhYm91dC4gIEl0IGhhcyBubwot
Ly8gZGVmaW5pdGlvbiBvbiBwdXJwb3NlLiAgVGhlcmVmb3JlIGl0J3MgaW1wb3NzaWJsZSB0byBj
cmVhdGUgYQotLy8gU2VjcmV0IG9iamVjdCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LgotY2xhc3Mg
U2VjcmV0OwotCiAvLyBUd28gb3ZlcmxvYWRlZCBoZWxwZXJzIGZvciBjaGVja2luZyBhdCBjb21w
aWxlIHRpbWUgd2hldGhlciBhbgogLy8gZXhwcmVzc2lvbiBpcyBhIG51bGwgcG9pbnRlciBsaXRl
cmFsIChpLmUuIE5VTEwgb3IgYW55IDAtdmFsdWVkCiAvLyBjb21waWxlLXRpbWUgaW50ZWdyYWwg
Y29uc3RhbnQpLiAgVGhlaXIgcmV0dXJuIHZhbHVlcyBoYXZlCkBAIC0xNTAsMTI3ICsxMjksNjUg
QEAgY2hhciAoJklzTnVsbExpdGVyYWxIZWxwZXIoLi4uKSlbMl07ICAvLyBOT0xJTlQKICNpZmRl
ZiBHVEVTVF9FTExJUFNJU19ORUVEU19QT0RfCiAvLyBXZSBsb3NlIHN1cHBvcnQgZm9yIE5VTEwg
ZGV0ZWN0aW9uIHdoZXJlIHRoZSBjb21waWxlciBkb2Vzbid0IGxpa2UKIC8vIHBhc3Npbmcgbm9u
LVBPRCBjbGFzc2VzIHRocm91Z2ggZWxsaXBzaXMgKC4uLikuCi0jZGVmaW5lIEdURVNUX0lTX05V
TExfTElURVJBTF8oeCkgZmFsc2UKKyMgZGVmaW5lIEdURVNUX0lTX05VTExfTElURVJBTF8oeCkg
ZmFsc2UKICNlbHNlCi0jZGVmaW5lIEdURVNUX0lTX05VTExfTElURVJBTF8oeCkgXAorIyBkZWZp
bmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBcCiAgICAgKHNpemVvZig6OnRlc3Rpbmc6Omlu
dGVybmFsOjpJc051bGxMaXRlcmFsSGVscGVyKHgpKSA9PSAxKQogI2VuZGlmICAvLyBHVEVTVF9F
TExJUFNJU19ORUVEU19QT0RfCiAKIC8vIEFwcGVuZHMgdGhlIHVzZXItc3VwcGxpZWQgbWVzc2Fn
ZSB0byB0aGUgR29vZ2xlLVRlc3QtZ2VuZXJhdGVkIG1lc3NhZ2UuCi1HVEVTVF9BUElfIFN0cmlu
ZyBBcHBlbmRVc2VyTWVzc2FnZShjb25zdCBTdHJpbmcmIGd0ZXN0X21zZywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1lc3NhZ2UmIHVzZXJfbXNnKTsKLQotLy8g
QSBoZWxwZXIgY2xhc3MgZm9yIGNyZWF0aW5nIHNjb3BlZCB0cmFjZXMgaW4gdXNlciBwcm9ncmFt
cy4KLWNsYXNzIEdURVNUX0FQSV8gU2NvcGVkVHJhY2UgewotIHB1YmxpYzoKLSAgLy8gVGhlIGMn
dG9yIHB1c2hlcyB0aGUgZ2l2ZW4gc291cmNlIGZpbGUgbG9jYXRpb24gYW5kIG1lc3NhZ2Ugb250
bwotICAvLyBhIHRyYWNlIHN0YWNrIG1haW50YWluZWQgYnkgR29vZ2xlIFRlc3QuCi0gIFNjb3Bl
ZFRyYWNlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBNZXNzYWdlJiBtZXNzYWdl
KTsKLQotICAvLyBUaGUgZCd0b3IgcG9wcyB0aGUgaW5mbyBwdXNoZWQgYnkgdGhlIGMndG9yLgot
ICAvLwotICAvLyBOb3RlIHRoYXQgdGhlIGQndG9yIGlzIG5vdCB2aXJ0dWFsIGluIG9yZGVyIHRv
IGJlIGVmZmljaWVudC4KLSAgLy8gRG9uJ3QgaW5oZXJpdCBmcm9tIFNjb3BlZFRyYWNlIQotICB+
U2NvcGVkVHJhY2UoKTsKLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oU2NvcGVkVHJhY2UpOwotfSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXzsgIC8vIEEgU2Nv
cGVkVHJhY2Ugb2JqZWN0IGRvZXMgaXRzIGpvYiBpbiBpdHMKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBjJ3RvciBhbmQgZCd0b3IuICBUaGVyZWZvcmUgaXQgZG9lc24ndAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gYmUgdXNlZCBvdGhlcndpc2UuCi0KLS8v
IENvbnZlcnRzIGEgc3RyZWFtYWJsZSB2YWx1ZSB0byBhIFN0cmluZy4gIEEgTlVMTCBwb2ludGVy
IGlzCi0vLyBjb252ZXJ0ZWQgdG8gIihudWxsKSIuICBXaGVuIHRoZSBpbnB1dCB2YWx1ZSBpcyBh
IDo6c3RyaW5nLAotLy8gOjpzdGQ6OnN0cmluZywgOjp3c3RyaW5nLCBvciA6OnN0ZDo6d3N0cmlu
ZyBvYmplY3QsIGVhY2ggTlVMCi0vLyBjaGFyYWN0ZXIgaW4gaXQgaXMgcmVwbGFjZWQgd2l0aCAi
XFwwIi4KLS8vIERlY2xhcmVkIGhlcmUgYnV0IGRlZmluZWQgaW4gZ3Rlc3QuaCwgc28gdGhhdCBp
dCBoYXMgYWNjZXNzCi0vLyB0byB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgTWVzc2FnZSBjbGFzcywg
cmVxdWlyZWQgYnkgdGhlIEFSTQotLy8gY29tcGlsZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LVN0cmluZyBTdHJlYW1hYmxlVG9TdHJpbmcoY29uc3QgVCYgc3RyZWFtYWJsZSk7Ci0KLS8vIEZv
cm1hdHMgYSB2YWx1ZSB0byBiZSB1c2VkIGluIGEgZmFpbHVyZSBtZXNzYWdlLgotCi0jaWZkZWYg
R1RFU1RfTkVFRFNfSVNfUE9JTlRFUl8KLQotLy8gVGhlc2UgYXJlIG5lZWRlZCBhcyB0aGUgTm9r
aWEgU3ltYmlhbiBhbmQgSUJNIFhMIEMvQysrIGNvbXBpbGVycwotLy8gY2Fubm90IGRlY2lkZSBi
ZXR3ZWVuIGNvbnN0IFQmIGFuZCBjb25zdCBUKiBpbiBhIGZ1bmN0aW9uIHRlbXBsYXRlLgotLy8g
VGhlc2UgY29tcGlsZXJzIF9jYW5fIGRlY2lkZSBiZXR3ZWVuIGNsYXNzIHRlbXBsYXRlIHNwZWNp
YWxpemF0aW9ucwotLy8gZm9yIFQgYW5kIFQqLCBzbyBhIHRyMTo6dHlwZV90cmFpdHMtbGlrZSBp
c19wb2ludGVyIHdvcmtzLCBhbmQgd2UKLS8vIGNhbiBvdmVybG9hZCBvbiB0aGF0LgorR1RFU1Rf
QVBJXyBzdGQ6OnN0cmluZyBBcHBlbmRVc2VyTWVzc2FnZSgKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgZ3Rlc3RfbXNnLCBjb25zdCBNZXNzYWdlJiB1c2VyX21zZyk7CiAKLS8vIFRoaXMgb3Zlcmxv
YWQgbWFrZXMgc3VyZSB0aGF0IGFsbCBwb2ludGVycyAoaW5jbHVkaW5nCi0vLyB0aG9zZSB0byBj
aGFyIG9yIHdjaGFyX3QpIGFyZSBwcmludGVkIGFzIHJhdyBwb2ludGVycy4KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotaW5saW5lIFN0cmluZyBGb3JtYXRWYWx1ZUZvckZhaWx1cmVNZXNzYWdlKGlu
dGVybmFsOjp0cnVlX3R5cGUgLypkdW1teSovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFQqIHBvaW50ZXIpIHsKLSAgcmV0dXJuIFN0cmVhbWFibGVUb1N0cmlu
ZyhzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4ocG9pbnRlcikpOwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KLWlubGluZSBTdHJpbmcgRm9ybWF0VmFsdWVGb3JGYWlsdXJlTWVzc2FnZShpbnRl
cm5hbDo6ZmFsc2VfdHlwZSAvKmR1bW15Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVCYgdmFsdWUpIHsKLSAgcmV0dXJuIFN0cmVhbWFibGVUb1N0
cmluZyh2YWx1ZSk7Ci19CisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKIAotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1pbmxpbmUgU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKGNvbnN0IFQm
IHZhbHVlKSB7Ci0gIHJldHVybiBGb3JtYXRWYWx1ZUZvckZhaWx1cmVNZXNzYWdlKAotICAgICAg
dHlwZW5hbWUgaW50ZXJuYWw6OmlzX3BvaW50ZXI8VD46OnR5cGUoKSwgdmFsdWUpOwotfQorR1RF
U1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDI3NSBcCisvKiBhbiBleHBvcnRlZCBjbGFz
cyB3YXMgZGVyaXZlZCBmcm9tIGEgY2xhc3MgdGhhdCB3YXMgbm90IGV4cG9ydGVkICovKQogCi0j
ZWxzZQorLy8gVGhpcyBleGNlcHRpb24gaXMgdGhyb3duIGJ5IChhbmQgb25seSBieSkgYSBmYWls
ZWQgR29vZ2xlIFRlc3QKKy8vIGFzc2VydGlvbiB3aGVuIEdURVNUX0ZMQUcodGhyb3dfb25fZmFp
bHVyZSkgaXMgdHJ1ZSAoaWYgZXhjZXB0aW9ucworLy8gYXJlIGVuYWJsZWQpLiAgV2UgZGVyaXZl
IGl0IGZyb20gc3RkOjpydW50aW1lX2Vycm9yLCB3aGljaCBpcyBmb3IKKy8vIGVycm9ycyBwcmVz
dW1hYmx5IGRldGVjdGFibGUgb25seSBhdCBydW4gdGltZS4gIFNpbmNlCisvLyBzdGQ6OnJ1bnRp
bWVfZXJyb3IgaW5oZXJpdHMgZnJvbSBzdGQ6OmV4Y2VwdGlvbiwgbWFueSB0ZXN0aW5nCisvLyBm
cmFtZXdvcmtzIGtub3cgaG93IHRvIGV4dHJhY3QgYW5kIHByaW50IHRoZSBtZXNzYWdlIGluc2lk
ZSBpdC4KK2NsYXNzIEdURVNUX0FQSV8gR29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24gOiBwdWJs
aWMgOjpzdGQ6OnJ1bnRpbWVfZXJyb3IgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgR29vZ2xlVGVz
dEZhaWx1cmVFeGNlcHRpb24oY29uc3QgVGVzdFBhcnRSZXN1bHQmIGZhaWx1cmUpOworfTsKIAot
Ly8gVGhlc2UgYXJlIG5lZWRlZCBhcyB0aGUgYWJvdmUgc29sdXRpb24gdXNpbmcgaXNfcG9pbnRl
ciBoYXMgdGhlCi0vLyBsaW1pdGF0aW9uIHRoYXQgVCBjYW5ub3QgYmUgYSB0eXBlIHdpdGhvdXQg
ZXh0ZXJuYWwgbGlua2FnZSwgd2hlbgotLy8gY29tcGlsZWQgdXNpbmcgTVNWQy4KK0dURVNUX0RJ
U0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQyNzUKIAotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1pbmxpbmUgU3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKGNvbnN0IFQmIHZhbHVl
KSB7Ci0gIHJldHVybiBTdHJlYW1hYmxlVG9TdHJpbmcodmFsdWUpOwotfQorI2VuZGlmICAvLyBH
VEVTVF9IQVNfRVhDRVBUSU9OUwogCi0vLyBUaGlzIG92ZXJsb2FkIG1ha2VzIHN1cmUgdGhhdCBh
bGwgcG9pbnRlcnMgKGluY2x1ZGluZwotLy8gdGhvc2UgdG8gY2hhciBvciB3Y2hhcl90KSBhcmUg
cHJpbnRlZCBhcyByYXcgcG9pbnRlcnMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBT
dHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoVCogcG9pbnRlcikgewotICByZXR1cm4gU3Ry
ZWFtYWJsZVRvU3RyaW5nKHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihwb2ludGVyKSk7Ci19Citu
YW1lc3BhY2UgZWRpdF9kaXN0YW5jZSB7CisvLyBSZXR1cm5zIHRoZSBvcHRpbWFsIGVkaXRzIHRv
IGdvIGZyb20gJ2xlZnQnIHRvICdyaWdodCcuCisvLyBBbGwgZWRpdHMgY29zdCB0aGUgc2FtZSwg
d2l0aCByZXBsYWNlIGhhdmluZyBsb3dlciBwcmlvcml0eSB0aGFuCisvLyBhZGQvcmVtb3ZlLgor
Ly8gU2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBXYWduZXItRmlzY2hlciBhbGdvcml0aG0u
CisvLyBTZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XYWduZXItRmlzY2hlcl9hbGdv
cml0aG0KK2VudW0gRWRpdFR5cGUgeyBrTWF0Y2gsIGtBZGQsIGtSZW1vdmUsIGtSZXBsYWNlIH07
CitHVEVTVF9BUElfIHN0ZDo6dmVjdG9yPEVkaXRUeXBlPiBDYWxjdWxhdGVPcHRpbWFsRWRpdHMo
CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2l6ZV90PiYgbGVmdCwgY29uc3Qgc3RkOjp2ZWN0b3I8
c2l6ZV90PiYgcmlnaHQpOwogCi0jZW5kaWYgIC8vIEdURVNUX05FRURTX0lTX1BPSU5URVJfCi0K
LS8vIFRoZXNlIG92ZXJsb2FkZWQgdmVyc2lvbnMgaGFuZGxlIG5hcnJvdyBhbmQgd2lkZSBjaGFy
YWN0ZXJzLgotR1RFU1RfQVBJXyBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoY2hhciBj
aCk7Ci1HVEVTVF9BUElfIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZSh3Y2hhcl90IHdj
aGFyKTsKLQotLy8gV2hlbiB0aGlzIG9wZXJhbmQgaXMgYSBjb25zdCBjaGFyKiBvciBjaGFyKiwg
YW5kIHRoZSBvdGhlciBvcGVyYW5kCi0vLyBpcyBhIDo6c3RkOjpzdHJpbmcgb3IgOjpzdHJpbmcs
IHdlIHByaW50IHRoaXMgb3BlcmFuZCBhcyBhIEMgc3RyaW5nCi0vLyByYXRoZXIgdGhhbiBhIHBv
aW50ZXIuICBXZSBkbyB0aGUgc2FtZSBmb3Igd2lkZSBzdHJpbmdzLgotCi0vLyBUaGlzIGludGVy
bmFsIG1hY3JvIGlzIHVzZWQgdG8gYXZvaWQgZHVwbGljYXRlZCBjb2RlLgotI2RlZmluZSBHVEVT
VF9GT1JNQVRfSU1QTF8ob3BlcmFuZDJfdHlwZSwgb3BlcmFuZDFfcHJpbnRlcilcCi1pbmxpbmUg
U3RyaW5nIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShcCi0gICAgb3BlcmFuZDJf
dHlwZTo6dmFsdWVfdHlwZSogc3RyLCBjb25zdCBvcGVyYW5kMl90eXBlJiAvKm9wZXJhbmQyKi8p
IHtcCi0gIHJldHVybiBvcGVyYW5kMV9wcmludGVyKHN0cik7XAotfVwKLWlubGluZSBTdHJpbmcg
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKFwKLSAgICBjb25zdCBvcGVyYW5kMl90
eXBlOjp2YWx1ZV90eXBlKiBzdHIsIGNvbnN0IG9wZXJhbmQyX3R5cGUmIC8qb3BlcmFuZDIqLykg
e1wKLSAgcmV0dXJuIG9wZXJhbmQxX3ByaW50ZXIoc3RyKTtcCi19CisvLyBTYW1lIGFzIGFib3Zl
LCBidXQgdGhlIGlucHV0IGlzIHJlcHJlc2VudGVkIGFzIHN0cmluZ3MuCitHVEVTVF9BUElfIHN0
ZDo6dmVjdG9yPEVkaXRUeXBlPiBDYWxjdWxhdGVPcHRpbWFsRWRpdHMoCisgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBsZWZ0LAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiYgcmlnaHQpOwogCi1HVEVTVF9GT1JNQVRfSU1QTF8oOjpzdGQ6OnN0cmluZywgU3Ry
aW5nOjpTaG93Q1N0cmluZ1F1b3RlZCkKLSNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKLUdURVNU
X0ZPUk1BVF9JTVBMXyg6OnN0ZDo6d3N0cmluZywgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90
ZWQpCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORworLy8gQ3JlYXRlIGEgZGlmZiBv
ZiB0aGUgaW5wdXQgc3RyaW5ncyBpbiBVbmlmaWVkIGRpZmYgZm9ybWF0LgorR1RFU1RfQVBJXyBz
dGQ6OnN0cmluZyBDcmVhdGVVbmlmaWVkRGlmZihjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4mIGxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgcmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb250ZXh0ID0gMik7CiAKLSNpZiBHVEVTVF9IQVNf
R0xPQkFMX1NUUklORwotR1RFU1RfRk9STUFUX0lNUExfKDo6c3RyaW5nLCBTdHJpbmc6OlNob3dD
U3RyaW5nUXVvdGVkKQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotI2lmIEdU
RVNUX0hBU19HTE9CQUxfV1NUUklORwotR1RFU1RfRk9STUFUX0lNUExfKDo6d3N0cmluZywgU3Ry
aW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQpCi0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxf
V1NUUklORworfSAgLy8gbmFtZXNwYWNlIGVkaXRfZGlzdGFuY2UKIAotI3VuZGVmIEdURVNUX0ZP
Uk1BVF9JTVBMXworLy8gQ2FsY3VsYXRlIHRoZSBkaWZmIGJldHdlZW4gJ2xlZnQnIGFuZCAncmln
aHQnIGFuZCByZXR1cm4gaXQgaW4gdW5pZmllZCBkaWZmCisvLyBmb3JtYXQuCisvLyBJZiBub3Qg
bnVsbCwgc3RvcmVzIGluICd0b3RhbF9saW5lX2NvdW50JyB0aGUgdG90YWwgbnVtYmVyIG9mIGxp
bmVzIGZvdW5kCisvLyBpbiBsZWZ0ICsgcmlnaHQuCitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIERp
ZmZTdHJpbmdzKGNvbnN0IHN0ZDo6c3RyaW5nJiBsZWZ0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcmlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCogdG90YWxfbGluZV9jb3VudCk7CiAKIC8vIENvbnN0
cnVjdHMgYW5kIHJldHVybnMgdGhlIG1lc3NhZ2UgZm9yIGFuIGVxdWFsaXR5IGFzc2VydGlvbgog
Ly8gKGUuZy4gQVNTRVJUX0VRLCBFWFBFQ1RfU1RSRVEsIGV0YykgZmFpbHVyZS4KQEAgLTI4OSwx
MiArMjA2LDEyIEBAIEdURVNUX0ZPUk1BVF9JTVBMXyg6OndzdHJpbmcsIFN0cmluZzo6U2hvd1dp
ZGVDU3RyaW5nUXVvdGVkKQogLy8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgbWVzc2FnZS4KIEdURVNU
X0FQSV8gQXNzZXJ0aW9uUmVzdWx0IEVxRmFpbHVyZShjb25zdCBjaGFyKiBleHBlY3RlZF9leHBy
ZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRfdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBhY3R1YWxfdmFsdWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGV4cGVjdGVkX3ZhbHVlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBh
Y3R1YWxfdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
Z25vcmluZ19jYXNlKTsKIAogLy8gQ29uc3RydWN0cyBhIGZhaWx1cmUgbWVzc2FnZSBmb3IgQm9v
bGVhbiBhc3NlcnRpb25zIHN1Y2ggYXMgRVhQRUNUX1RSVUUuCi1HVEVTVF9BUElfIFN0cmluZyBH
ZXRCb29sQXNzZXJ0aW9uRmFpbHVyZU1lc3NhZ2UoCitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIEdl
dEJvb2xBc3NlcnRpb25GYWlsdXJlTWVzc2FnZSgKICAgICBjb25zdCBBc3NlcnRpb25SZXN1bHQm
IGFzc2VydGlvbl9yZXN1bHQsCiAgICAgY29uc3QgY2hhciogZXhwcmVzc2lvbl90ZXh0LAogICAg
IGNvbnN0IGNoYXIqIGFjdHVhbF9wcmVkaWNhdGVfdmFsdWUsCkBAIC0zNjksNyArMjg2LDcgQEAg
Y2xhc3MgRmxvYXRpbmdQb2ludCB7CiAgIC8vIGJpdHMuICBUaGVyZWZvcmUsIDQgc2hvdWxkIGJl
IGVub3VnaCBmb3Igb3JkaW5hcnkgdXNlLgogICAvLwogICAvLyBTZWUgdGhlIGZvbGxvd2luZyBh
cnRpY2xlIGZvciBtb3JlIGRldGFpbHMgb24gVUxQOgotICAvLyBodHRwOi8vd3d3LmN5Z251cy1z
b2Z0d2FyZS5jb20vcGFwZXJzL2NvbXBhcmluZ2Zsb2F0cy9jb21wYXJpbmdmbG9hdHMuaHRtLgor
ICAvLyBodHRwOi8vcmFuZG9tYXNjaWkud29yZHByZXNzLmNvbS8yMDEyLzAyLzI1L2NvbXBhcmlu
Zy1mbG9hdGluZy1wb2ludC1udW1iZXJzLTIwMTItZWRpdGlvbi8KICAgc3RhdGljIGNvbnN0IHNp
emVfdCBrTWF4VWxwcyA9IDQ7CiAKICAgLy8gQ29uc3RydWN0cyBhIEZsb2F0aW5nUG9pbnQgZnJv
bSBhIHJhdyBmbG9hdGluZy1wb2ludCBudW1iZXIuCkBAIC0zOTYsNiArMzEzLDkgQEAgY2xhc3Mg
RmxvYXRpbmdQb2ludCB7CiAgICAgcmV0dXJuIFJlaW50ZXJwcmV0Qml0cyhrRXhwb25lbnRCaXRN
YXNrKTsKICAgfQogCisgIC8vIFJldHVybnMgdGhlIG1heGltdW0gcmVwcmVzZW50YWJsZSBmaW5p
dGUgZmxvYXRpbmctcG9pbnQgbnVtYmVyLgorICBzdGF0aWMgUmF3VHlwZSBNYXgoKTsKKwogICAv
LyBOb24tc3RhdGljIG1ldGhvZHMKIAogICAvLyBSZXR1cm5zIHRoZSBiaXRzIHRoYXQgcmVwcmVz
ZW50cyB0aGlzIG51bWJlci4KQEAgLTQ3Niw2ICszOTYsMTMgQEAgY2xhc3MgRmxvYXRpbmdQb2lu
dCB7CiAgIEZsb2F0aW5nUG9pbnRVbmlvbiB1XzsKIH07CiAKKy8vIFdlIGNhbm5vdCB1c2Ugc3Rk
OjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCkgYXMgaXQgY2xhc2hlcyB3aXRoIHRoZSBtYXgoKQor
Ly8gbWFjcm8gZGVmaW5lZCBieSA8d2luZG93cy5oPi4KK3RlbXBsYXRlIDw+CitpbmxpbmUgZmxv
YXQgRmxvYXRpbmdQb2ludDxmbG9hdD46Ok1heCgpIHsgcmV0dXJuIEZMVF9NQVg7IH0KK3RlbXBs
YXRlIDw+CitpbmxpbmUgZG91YmxlIEZsb2F0aW5nUG9pbnQ8ZG91YmxlPjo6TWF4KCkgeyByZXR1
cm4gREJMX01BWDsgfQorCiAvLyBUeXBlZGVmcyB0aGUgaW5zdGFuY2VzIG9mIHRoZSBGbG9hdGlu
Z1BvaW50IHRlbXBsYXRlIGNsYXNzIHRoYXQgd2UKIC8vIGNhcmUgdG8gdXNlLgogdHlwZWRlZiBG
bG9hdGluZ1BvaW50PGZsb2F0PiBGbG9hdDsKQEAgLTU1OCwyNCArNDg1LDE4IEBAIEdURVNUX0FQ
SV8gQXNzZXJ0aW9uUmVzdWx0IElzSFJFU1VMVEZhaWx1cmUoY29uc3QgY2hhciogZXhwciwKIAog
I2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKLS8vIEZvcm1hdHMgYSBzb3VyY2UgZmlsZSBw
YXRoIGFuZCBhIGxpbmUgbnVtYmVyIGFzIHRoZXkgd291bGQgYXBwZWFyCi0vLyBpbiBhIGNvbXBp
bGVyIGVycm9yIG1lc3NhZ2UuCi1pbmxpbmUgU3RyaW5nIEZvcm1hdEZpbGVMb2NhdGlvbihjb25z
dCBjaGFyKiBmaWxlLCBpbnQgbGluZSkgewotICBjb25zdCBjaGFyKiBjb25zdCBmaWxlX25hbWUg
PSBmaWxlID09IE5VTEwgPyAidW5rbm93biBmaWxlIiA6IGZpbGU7Ci0gIGlmIChsaW5lIDwgMCkg
ewotICAgIHJldHVybiBTdHJpbmc6OkZvcm1hdCgiJXM6IiwgZmlsZV9uYW1lKTsKLSAgfQotI2lm
ZGVmIF9NU0NfVkVSCi0gIHJldHVybiBTdHJpbmc6OkZvcm1hdCgiJXMoJWQpOiIsIGZpbGVfbmFt
ZSwgbGluZSk7Ci0jZWxzZQotICByZXR1cm4gU3RyaW5nOjpGb3JtYXQoIiVzOiVkOiIsIGZpbGVf
bmFtZSwgbGluZSk7Ci0jZW5kaWYgIC8vIF9NU0NfVkVSCi19Ci0KIC8vIFR5cGVzIG9mIFNldFVw
VGVzdENhc2UoKSBhbmQgVGVhckRvd25UZXN0Q2FzZSgpIGZ1bmN0aW9ucy4KIHR5cGVkZWYgdm9p
ZCAoKlNldFVwVGVzdENhc2VGdW5jKSgpOwogdHlwZWRlZiB2b2lkICgqVGVhckRvd25UZXN0Q2Fz
ZUZ1bmMpKCk7CiAKK3N0cnVjdCBDb2RlTG9jYXRpb24geworICBDb2RlTG9jYXRpb24oY29uc3Qg
c3RkOjpzdHJpbmcmIGFfZmlsZSwgaW50IGFfbGluZSkKKyAgICAgIDogZmlsZShhX2ZpbGUpLCBs
aW5lKGFfbGluZSkge30KKworICBzdGQ6OnN0cmluZyBmaWxlOworICBpbnQgbGluZTsKK307CisK
IC8vIENyZWF0ZXMgYSBuZXcgVGVzdEluZm8gb2JqZWN0IGFuZCByZWdpc3RlcnMgaXQgd2l0aCBH
b29nbGUgVGVzdDsKIC8vIHJldHVybnMgdGhlIGNyZWF0ZWQgb2JqZWN0LgogLy8KQEAgLTU4Mywx
MCArNTA0LDExIEBAIHR5cGVkZWYgdm9pZCAoKlRlYXJEb3duVGVzdENhc2VGdW5jKSgpOwogLy8K
IC8vICAgdGVzdF9jYXNlX25hbWU6ICAgbmFtZSBvZiB0aGUgdGVzdCBjYXNlCiAvLyAgIG5hbWU6
ICAgICAgICAgICAgIG5hbWUgb2YgdGhlIHRlc3QKLS8vICAgdGVzdF9jYXNlX2NvbW1lbnQ6IGEg
Y29tbWVudCBvbiB0aGUgdGVzdCBjYXNlIHRoYXQgd2lsbCBiZSBpbmNsdWRlZCBpbgotLy8gICAg
ICAgICAgICAgICAgICAgICAgdGhlIHRlc3Qgb3V0cHV0Ci0vLyAgIGNvbW1lbnQ6ICAgICAgICAg
IGEgY29tbWVudCBvbiB0aGUgdGVzdCB0aGF0IHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlCi0vLyAg
ICAgICAgICAgICAgICAgICAgIHRlc3Qgb3V0cHV0CisvLyAgIHR5cGVfcGFyYW0gICAgICAgIHRo
ZSBuYW1lIG9mIHRoZSB0ZXN0J3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYKKy8vICAgICAg
ICAgICAgICAgICAgICAgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhIHR5cGUtcGFyYW1ldGVyaXpl
ZCB0ZXN0LgorLy8gICB2YWx1ZV9wYXJhbSAgICAgICB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHRo
ZSB0ZXN0J3MgdmFsdWUgcGFyYW1ldGVyLAorLy8gICAgICAgICAgICAgICAgICAgICBvciBOVUxM
IGlmIHRoaXMgaXMgbm90IGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisvLyAgIGNvZGVfbG9j
YXRpb246ICAgIGNvZGUgbG9jYXRpb24gd2hlcmUgdGhlIHRlc3QgaXMgZGVmaW5lZAogLy8gICBm
aXh0dXJlX2NsYXNzX2lkOiBJRCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzCiAvLyAgIHNldF91
cF90YzogICAgICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVz
dCBjYXNlCiAvLyAgIHRlYXJfZG93bl90YzogICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRo
YXQgdGVhcnMgZG93biB0aGUgdGVzdCBjYXNlCkBAIC01OTQsOCArNTE2LDExIEBAIHR5cGVkZWYg
dm9pZCAoKlRlYXJEb3duVGVzdENhc2VGdW5jKSgpOwogLy8gICAgICAgICAgICAgICAgICAgICBU
aGUgbmV3bHkgY3JlYXRlZCBUZXN0SW5mbyBpbnN0YW5jZSB3aWxsIGFzc3VtZQogLy8gICAgICAg
ICAgICAgICAgICAgICBvd25lcnNoaXAgb2YgdGhlIGZhY3Rvcnkgb2JqZWN0LgogR1RFU1RfQVBJ
XyBUZXN0SW5mbyogTWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8oCi0gICAgY29uc3QgY2hhciogdGVz
dF9jYXNlX25hbWUsIGNvbnN0IGNoYXIqIG5hbWUsCi0gICAgY29uc3QgY2hhciogdGVzdF9jYXNl
X2NvbW1lbnQsIGNvbnN0IGNoYXIqIGNvbW1lbnQsCisgICAgY29uc3QgY2hhciogdGVzdF9jYXNl
X25hbWUsCisgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICBjb25zdCBjaGFyKiB0eXBlX3BhcmFt
LAorICAgIGNvbnN0IGNoYXIqIHZhbHVlX3BhcmFtLAorICAgIENvZGVMb2NhdGlvbiBjb2RlX2xv
Y2F0aW9uLAogICAgIFR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkLAogICAgIFNldFVwVGVzdENhc2VG
dW5jIHNldF91cF90YywKICAgICBUZWFyRG93blRlc3RDYXNlRnVuYyB0ZWFyX2Rvd25fdGMsCkBA
IC02MDQsMTAgKzUyOSwxMyBAQCBHVEVTVF9BUElfIFRlc3RJbmZvKiBNYWtlQW5kUmVnaXN0ZXJU
ZXN0SW5mbygKIC8vIElmICpwc3RyIHN0YXJ0cyB3aXRoIHRoZSBnaXZlbiBwcmVmaXgsIG1vZGlm
aWVzICpwc3RyIHRvIGJlIHJpZ2h0CiAvLyBwYXN0IHRoZSBwcmVmaXggYW5kIHJldHVybnMgdHJ1
ZTsgb3RoZXJ3aXNlIGxlYXZlcyAqcHN0ciB1bmNoYW5nZWQKIC8vIGFuZCByZXR1cm5zIGZhbHNl
LiAgTm9uZSBvZiBwc3RyLCAqcHN0ciwgYW5kIHByZWZpeCBjYW4gYmUgTlVMTC4KLWJvb2wgU2tp
cFByZWZpeChjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IGNoYXIqKiBwc3RyKTsKK0dURVNUX0FQ
SV8gYm9vbCBTa2lwUHJlZml4KGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgY2hhcioqIHBzdHIp
OwogCiAjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAog
CitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MjUxIFwKKy8qIGNsYXNzIEEgbmVl
ZHMgdG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50cyBvZiBjbGFzcyBC
ICovKQorCiAvLyBTdGF0ZSBvZiB0aGUgZGVmaW5pdGlvbiBvZiBhIHR5cGUtcGFyYW1ldGVyaXpl
ZCB0ZXN0IGNhc2UuCiBjbGFzcyBHVEVTVF9BUElfIFR5cGVkVGVzdENhc2VQU3RhdGUgewogIHB1
YmxpYzoKQEAgLTYyNSwxMCArNTUzLDIxIEBAIGNsYXNzIEdURVNUX0FQSV8gVHlwZWRUZXN0Q2Fz
ZVBTdGF0ZSB7CiAgICAgICBmZmx1c2goc3RkZXJyKTsKICAgICAgIHBvc2l4OjpBYm9ydCgpOwog
ICAgIH0KLSAgICBkZWZpbmVkX3Rlc3RfbmFtZXNfLmluc2VydCh0ZXN0X25hbWUpOworICAgIHJl
Z2lzdGVyZWRfdGVzdHNfLmluc2VydCgKKyAgICAgICAgOjpzdGQ6Om1ha2VfcGFpcih0ZXN0X25h
bWUsIENvZGVMb2NhdGlvbihmaWxlLCBsaW5lKSkpOwogICAgIHJldHVybiB0cnVlOwogICB9CiAK
KyAgYm9vbCBUZXN0RXhpc3RzKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0X25hbWUpIGNvbnN0IHsK
KyAgICByZXR1cm4gcmVnaXN0ZXJlZF90ZXN0c18uY291bnQodGVzdF9uYW1lKSA+IDA7CisgIH0K
KworICBjb25zdCBDb2RlTG9jYXRpb24mIEdldENvZGVMb2NhdGlvbihjb25zdCBzdGQ6OnN0cmlu
ZyYgdGVzdF9uYW1lKSBjb25zdCB7CisgICAgUmVnaXN0ZXJlZFRlc3RzTWFwOjpjb25zdF9pdGVy
YXRvciBpdCA9IHJlZ2lzdGVyZWRfdGVzdHNfLmZpbmQodGVzdF9uYW1lKTsKKyAgICBHVEVTVF9D
SEVDS18oaXQgIT0gcmVnaXN0ZXJlZF90ZXN0c18uZW5kKCkpOworICAgIHJldHVybiBpdC0+c2Vj
b25kOworICB9CisKICAgLy8gVmVyaWZpZXMgdGhhdCByZWdpc3RlcmVkX3Rlc3RzIG1hdGNoIHRo
ZSB0ZXN0IG5hbWVzIGluCiAgIC8vIGRlZmluZWRfdGVzdF9uYW1lc187IHJldHVybnMgcmVnaXN0
ZXJlZF90ZXN0cyBpZiBzdWNjZXNzZnVsLCBvcgogICAvLyBhYm9ydHMgdGhlIHByb2dyYW0gb3Ro
ZXJ3aXNlLgpAQCAtNjM2LDEwICs1NzUsMTQgQEAgY2xhc3MgR1RFU1RfQVBJXyBUeXBlZFRlc3RD
YXNlUFN0YXRlIHsKICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFy
KiByZWdpc3RlcmVkX3Rlc3RzKTsKIAogIHByaXZhdGU6CisgIHR5cGVkZWYgOjpzdGQ6Om1hcDxz
dGQ6OnN0cmluZywgQ29kZUxvY2F0aW9uPiBSZWdpc3RlcmVkVGVzdHNNYXA7CisKICAgYm9vbCBy
ZWdpc3RlcmVkXzsKLSAgOjpzdGQ6OnNldDxjb25zdCBjaGFyKj4gZGVmaW5lZF90ZXN0X25hbWVz
XzsKKyAgUmVnaXN0ZXJlZFRlc3RzTWFwIHJlZ2lzdGVyZWRfdGVzdHNfOwogfTsKIAorR1RFU1Rf
RElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQorCiAvLyBTa2lwcyB0byB0aGUg
Zmlyc3Qgbm9uLXNwYWNlIGNoYXIgYWZ0ZXIgdGhlIGZpcnN0IGNvbW1hIGluICdzdHInOwogLy8g
cmV0dXJucyBOVUxMIGlmIG5vIGNvbW1hIGlzIGZvdW5kIGluICdzdHInLgogaW5saW5lIGNvbnN0
IGNoYXIqIFNraXBDb21tYShjb25zdCBjaGFyKiBzdHIpIHsKQEAgLTY0NywxNSArNTkwLDUxIEBA
IGlubGluZSBjb25zdCBjaGFyKiBTa2lwQ29tbWEoY29uc3QgY2hhciogc3RyKSB7CiAgIGlmIChj
b21tYSA9PSBOVUxMKSB7CiAgICAgcmV0dXJuIE5VTEw7CiAgIH0KLSAgd2hpbGUgKGlzc3BhY2Uo
KigrK2NvbW1hKSkpIHt9CisgIHdoaWxlIChJc1NwYWNlKCooKytjb21tYSkpKSB7fQogICByZXR1
cm4gY29tbWE7CiB9CiAKIC8vIFJldHVybnMgdGhlIHByZWZpeCBvZiAnc3RyJyBiZWZvcmUgdGhl
IGZpcnN0IGNvbW1hIGluIGl0OyByZXR1cm5zCiAvLyB0aGUgZW50aXJlIHN0cmluZyBpZiBpdCBj
b250YWlucyBubyBjb21tYS4KLWlubGluZSBTdHJpbmcgR2V0UHJlZml4VW50aWxDb21tYShjb25z
dCBjaGFyKiBzdHIpIHsKK2lubGluZSBzdGQ6OnN0cmluZyBHZXRQcmVmaXhVbnRpbENvbW1hKGNv
bnN0IGNoYXIqIHN0cikgewogICBjb25zdCBjaGFyKiBjb21tYSA9IHN0cmNocihzdHIsICcsJyk7
Ci0gIHJldHVybiBjb21tYSA9PSBOVUxMID8gU3RyaW5nKHN0cikgOiBTdHJpbmcoc3RyLCBjb21t
YSAtIHN0cik7CisgIHJldHVybiBjb21tYSA9PSBOVUxMID8gc3RyIDogc3RkOjpzdHJpbmcoc3Ry
LCBjb21tYSk7Cit9CisKKy8vIFNwbGl0cyBhIGdpdmVuIHN0cmluZyBvbiBhIGdpdmVuIGRlbGlt
aXRlciwgcG9wdWxhdGluZyBhIGdpdmVuCisvLyB2ZWN0b3Igd2l0aCB0aGUgZmllbGRzLgordm9p
ZCBTcGxpdFN0cmluZyhjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIsIGNoYXIgZGVsaW1pdGVyLAor
ICAgICAgICAgICAgICAgICA6OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6c3RyaW5nPiogZGVzdCk7CisK
Ky8vIFRoZSBkZWZhdWx0IGFyZ3VtZW50IHRvIHRoZSB0ZW1wbGF0ZSBiZWxvdyBmb3IgdGhlIGNh
c2Ugd2hlbiB0aGUgdXNlciBkb2VzCisvLyBub3QgcHJvdmlkZSBhIG5hbWUgZ2VuZXJhdG9yLgor
c3RydWN0IERlZmF1bHROYW1lR2VuZXJhdG9yIHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cisg
IHN0YXRpYyBzdGQ6OnN0cmluZyBHZXROYW1lKGludCBpKSB7CisgICAgcmV0dXJuIFN0cmVhbWFi
bGVUb1N0cmluZyhpKTsKKyAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFByb3ZpZGVkID0g
RGVmYXVsdE5hbWVHZW5lcmF0b3I+CitzdHJ1Y3QgTmFtZUdlbmVyYXRvclNlbGVjdG9yIHsKKyAg
dHlwZWRlZiBQcm92aWRlZCB0eXBlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIE5hbWVHZW5l
cmF0b3I+Cit2b2lkIEdlbmVyYXRlTmFtZXNSZWN1cnNpdmVseShUeXBlczAsIHN0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPiosIGludCkge30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE5hbWVHZW5lcmF0
b3IsIHR5cGVuYW1lIFR5cGVzPgordm9pZCBHZW5lcmF0ZU5hbWVzUmVjdXJzaXZlbHkoVHlwZXMs
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiogcmVzdWx0LCBpbnQgaSkgeworICByZXN1bHQtPnB1
c2hfYmFjayhOYW1lR2VuZXJhdG9yOjp0ZW1wbGF0ZSBHZXROYW1lPHR5cGVuYW1lIFR5cGVzOjpI
ZWFkPihpKSk7CisgIEdlbmVyYXRlTmFtZXNSZWN1cnNpdmVseTxOYW1lR2VuZXJhdG9yPih0eXBl
bmFtZSBUeXBlczo6VGFpbCgpLCByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpICsgMSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBOYW1lR2VuZXJh
dG9yLCB0eXBlbmFtZSBUeXBlcz4KK3N0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZW5lcmF0ZU5h
bWVzKCkgeworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gcmVzdWx0OworICBHZW5lcmF0ZU5h
bWVzUmVjdXJzaXZlbHk8TmFtZUdlbmVyYXRvcj4oVHlwZXMoKSwgJnJlc3VsdCwgMCk7CisgIHJl
dHVybiByZXN1bHQ7CiB9CiAKIC8vIFR5cGVQYXJhbWV0ZXJpemVkVGVzdDxGaXh0dXJlLCBUZXN0
U2VsLCBUeXBlcz46OlJlZ2lzdGVyKCkKQEAgLTY3Miw4ICs2NTEsMTAgQEAgY2xhc3MgVHlwZVBh
cmFtZXRlcml6ZWRUZXN0IHsKICAgLy8gc3BlY2lmaWVkIGluIElOU1RBTlRJQVRFX1RZUEVEX1RF
U1RfQ0FTRV9QKFByZWZpeCwgVGVzdENhc2UsCiAgIC8vIFR5cGVzKS4gIFZhbGlkIHZhbHVlcyBm
b3IgJ2luZGV4JyBhcmUgWzAsIE4gLSAxXSB3aGVyZSBOIGlzIHRoZQogICAvLyBsZW5ndGggb2Yg
VHlwZXMuCi0gIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3Qg
Y2hhciogY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0ZXN0
X25hbWVzLCBpbnQgaW5kZXgpIHsKKyAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciog
cHJlZml4LCBjb25zdCBDb2RlTG9jYXRpb24mIGNvZGVfbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGNhc2VfbmFtZSwgY29uc3QgY2hhciogdGVzdF9uYW1lcywg
aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4mIHR5cGVfbmFtZXMgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJh
dGVOYW1lczxEZWZhdWx0TmFtZUdlbmVyYXRvciwgVHlwZXM+KCkpIHsKICAgICB0eXBlZGVmIHR5
cGVuYW1lIFR5cGVzOjpIZWFkIFR5cGU7CiAgICAgdHlwZWRlZiBGaXh0dXJlPFR5cGU+IEZpeHR1
cmVDbGFzczsKICAgICB0eXBlZGVmIHR5cGVuYW1lIEdURVNUX0JJTkRfKFRlc3RTZWwsIFR5cGUp
IFRlc3RDbGFzczsKQEAgLTY4MSwxOSArNjYyLDIzIEBAIGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVk
VGVzdCB7CiAgICAgLy8gRmlyc3QsIHJlZ2lzdGVycyB0aGUgZmlyc3QgdHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3QgaW4gdGhlIHR5cGUKICAgICAvLyBsaXN0LgogICAgIE1ha2VBbmRSZWdpc3RlclRl
c3RJbmZvKAotICAgICAgICBTdHJpbmc6OkZvcm1hdCgiJXMlcyVzLyVkIiwgcHJlZml4LCBwcmVm
aXhbMF0gPT0gJ1wwJyA/ICIiIDogIi8iLAotICAgICAgICAgICAgICAgICAgICAgICBjYXNlX25h
bWUsIGluZGV4KS5jX3N0cigpLAotICAgICAgICBHZXRQcmVmaXhVbnRpbENvbW1hKHRlc3RfbmFt
ZXMpLmNfc3RyKCksCi0gICAgICAgIFN0cmluZzo6Rm9ybWF0KCJUeXBlUGFyYW0gPSAlcyIsIEdl
dFR5cGVOYW1lPFR5cGU+KCkuY19zdHIoKSkuY19zdHIoKSwKLSAgICAgICAgIiIsCi0gICAgICAg
IEdldFR5cGVJZDxGaXh0dXJlQ2xhc3M+KCksCi0gICAgICAgIFRlc3RDbGFzczo6U2V0VXBUZXN0
Q2FzZSwKLSAgICAgICAgVGVzdENsYXNzOjpUZWFyRG93blRlc3RDYXNlLAotICAgICAgICBuZXcg
VGVzdEZhY3RvcnlJbXBsPFRlc3RDbGFzcz4pOworICAgICAgICAoc3RkOjpzdHJpbmcocHJlZml4
KSArIChwcmVmaXhbMF0gPT0gJ1wwJyA/ICIiIDogIi8iKSArIGNhc2VfbmFtZSArCisgICAgICAg
ICAiLyIgKyB0eXBlX25hbWVzW2luZGV4XSkKKyAgICAgICAgICAgIC5jX3N0cigpLAorICAgICAg
ICBTdHJpcFRyYWlsaW5nU3BhY2VzKEdldFByZWZpeFVudGlsQ29tbWEodGVzdF9uYW1lcykpLmNf
c3RyKCksCisgICAgICAgIEdldFR5cGVOYW1lPFR5cGU+KCkuY19zdHIoKSwKKyAgICAgICAgTlVM
TCwgIC8vIE5vIHZhbHVlIHBhcmFtZXRlci4KKyAgICAgICAgY29kZV9sb2NhdGlvbiwgR2V0VHlw
ZUlkPEZpeHR1cmVDbGFzcz4oKSwgVGVzdENsYXNzOjpTZXRVcFRlc3RDYXNlLAorICAgICAgICBU
ZXN0Q2xhc3M6OlRlYXJEb3duVGVzdENhc2UsIG5ldyBUZXN0RmFjdG9yeUltcGw8VGVzdENsYXNz
Pik7CiAKICAgICAvLyBOZXh0LCByZWN1cnNlcyAoYXQgY29tcGlsZSB0aW1lKSB3aXRoIHRoZSB0
YWlsIG9mIHRoZSB0eXBlIGxpc3QuCi0gICAgcmV0dXJuIFR5cGVQYXJhbWV0ZXJpemVkVGVzdDxG
aXh0dXJlLCBUZXN0U2VsLCB0eXBlbmFtZSBUeXBlczo6VGFpbD4KLSAgICAgICAgOjpSZWdpc3Rl
cihwcmVmaXgsIGNhc2VfbmFtZSwgdGVzdF9uYW1lcywgaW5kZXggKyAxKTsKKyAgICByZXR1cm4g
VHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIFRlc3RTZWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlczo6VGFpbD46OlJlZ2lzdGVyKHByZWZpeCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29kZV9sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZV9uYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
X25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmRleCArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVfbmFtZXMpOwogICB9CiB9
OwogCkBAIC03MDEsOCArNjg2LDExIEBAIGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVkVGVzdCB7CiB0
ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIEZpeHR1cmUsIGNsYXNzIFRlc3RTZWw+CiBjbGFzcyBU
eXBlUGFyYW1ldGVyaXplZFRlc3Q8Rml4dHVyZSwgVGVzdFNlbCwgVHlwZXMwPiB7CiAgcHVibGlj
OgotICBzdGF0aWMgYm9vbCBSZWdpc3Rlcihjb25zdCBjaGFyKiAvKnByZWZpeCovLCBjb25zdCBj
aGFyKiAvKmNhc2VfbmFtZSovLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAv
KnRlc3RfbmFtZXMqLywgaW50IC8qaW5kZXgqLykgeworICBzdGF0aWMgYm9vbCBSZWdpc3Rlcihj
b25zdCBjaGFyKiAvKnByZWZpeCovLCBjb25zdCBDb2RlTG9jYXRpb24mLAorICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiAvKmNhc2VfbmFtZSovLCBjb25zdCBjaGFyKiAvKnRlc3Rf
bmFtZXMqLywKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IC8qaW5kZXgqLywKKyAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiA9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oKSAvKnR5cGVfbmFt
ZXMqLykgewogICAgIHJldHVybiB0cnVlOwogICB9CiB9OwpAQCAtNzE0LDE3ICs3MDIsMzUgQEAg
Y2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIFRlc3RTZWwsIFR5cGVzMD4gewog
dGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBGaXh0dXJlLCB0eXBlbmFtZSBUZXN0cywgdHlwZW5h
bWUgVHlwZXM+CiBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlIHsKICBwdWJsaWM6Ci0g
IHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgY2hhciogY2Fz
ZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0ZXN0X25hbWVzKSB7
CisgIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIqIHByZWZpeCwgQ29kZUxvY2F0aW9u
IGNvZGVfbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR5cGVkVGVzdENh
c2VQU3RhdGUqIHN0YXRlLCBjb25zdCBjaGFyKiBjYXNlX25hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHRlc3RfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgdHlwZV9uYW1lcyA9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHZW5lcmF0ZU5hbWVzPERlZmF1bHROYW1lR2VuZXJhdG9yLCBUeXBlcz4o
KSkgeworICAgIHN0ZDo6c3RyaW5nIHRlc3RfbmFtZSA9IFN0cmlwVHJhaWxpbmdTcGFjZXMoCisg
ICAgICAgIEdldFByZWZpeFVudGlsQ29tbWEodGVzdF9uYW1lcykpOworICAgIGlmICghc3RhdGUt
PlRlc3RFeGlzdHModGVzdF9uYW1lKSkgeworICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQg
dG8gZ2V0IGNvZGUgbG9jYXRpb24gZm9yIHRlc3QgJXMuJXMgYXQgJXMuIiwKKyAgICAgICAgICAg
ICAgY2FzZV9uYW1lLCB0ZXN0X25hbWUuY19zdHIoKSwKKyAgICAgICAgICAgICAgRm9ybWF0Rmls
ZUxvY2F0aW9uKGNvZGVfbG9jYXRpb24uZmlsZS5jX3N0cigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29kZV9sb2NhdGlvbi5saW5lKS5jX3N0cigpKTsKKyAgICAgIGZmbHVz
aChzdGRlcnIpOworICAgICAgcG9zaXg6OkFib3J0KCk7CisgICAgfQorICAgIGNvbnN0IENvZGVM
b2NhdGlvbiYgdGVzdF9sb2NhdGlvbiA9IHN0YXRlLT5HZXRDb2RlTG9jYXRpb24odGVzdF9uYW1l
KTsKKwogICAgIHR5cGVkZWYgdHlwZW5hbWUgVGVzdHM6OkhlYWQgSGVhZDsKIAogICAgIC8vIEZp
cnN0LCByZWdpc3RlciB0aGUgZmlyc3QgdGVzdCBpbiAnVGVzdCcgZm9yIGVhY2ggdHlwZSBpbiAn
VHlwZXMnLgogICAgIFR5cGVQYXJhbWV0ZXJpemVkVGVzdDxGaXh0dXJlLCBIZWFkLCBUeXBlcz46
OlJlZ2lzdGVyKAotICAgICAgICBwcmVmaXgsIGNhc2VfbmFtZSwgdGVzdF9uYW1lcywgMCk7Cisg
ICAgICAgIHByZWZpeCwgdGVzdF9sb2NhdGlvbiwgY2FzZV9uYW1lLCB0ZXN0X25hbWVzLCAwLCB0
eXBlX25hbWVzKTsKIAogICAgIC8vIE5leHQsIHJlY3Vyc2VzIChhdCBjb21waWxlIHRpbWUpIHdp
dGggdGhlIHRhaWwgb2YgdGhlIHRlc3QgbGlzdC4KLSAgICByZXR1cm4gVHlwZVBhcmFtZXRlcml6
ZWRUZXN0Q2FzZTxGaXh0dXJlLCB0eXBlbmFtZSBUZXN0czo6VGFpbCwgVHlwZXM+Ci0gICAgICAg
IDo6UmVnaXN0ZXIocHJlZml4LCBjYXNlX25hbWUsIFNraXBDb21tYSh0ZXN0X25hbWVzKSk7Cisg
ICAgcmV0dXJuIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2U8Rml4dHVyZSwgdHlwZW5hbWUgVGVz
dHM6OlRhaWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZXM+OjpS
ZWdpc3RlcihwcmVmaXgsIGNvZGVfbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSwgY2FzZV9uYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2tpcENvbW1hKHRl
c3RfbmFtZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZV9uYW1lcyk7CiAgIH0KIH07CiAKQEAgLTczMiwxNSArNzM4LDE4IEBAIGNs
YXNzIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UgewogdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRF
XyBGaXh0dXJlLCB0eXBlbmFtZSBUeXBlcz4KIGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENh
c2U8Rml4dHVyZSwgVGVtcGxhdGVzMCwgVHlwZXM+IHsKICBwdWJsaWM6Ci0gIHN0YXRpYyBib29s
IFJlZ2lzdGVyKGNvbnN0IGNoYXIqIC8qcHJlZml4Ki8sIGNvbnN0IGNoYXIqIC8qY2FzZV9uYW1l
Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qdGVzdF9uYW1lcyovKSB7
CisgIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIqIC8qcHJlZml4Ki8sIGNvbnN0IENv
ZGVMb2NhdGlvbiYsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR5cGVkVGVzdENhc2VQ
U3RhdGUqIC8qc3RhdGUqLywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLypj
YXNlX25hbWUqLywgY29uc3QgY2hhciogLyp0ZXN0X25hbWVzKi8sCisgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgPQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KCkgLyp0eXBlX25hbWVzKi8pIHsK
ICAgICByZXR1cm4gdHJ1ZTsKICAgfQogfTsKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURf
VEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCiAKLS8vIFJldHVybnMgdGhlIGN1cnJlbnQg
T1Mgc3RhY2sgdHJhY2UgYXMgYSBTdHJpbmcuCisvLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0
YWNrIHRyYWNlIGFzIGFuIHN0ZDo6c3RyaW5nLgogLy8KIC8vIFRoZSBtYXhpbXVtIG51bWJlciBv
ZiBzdGFjayBmcmFtZXMgdG8gYmUgaW5jbHVkZWQgaXMgc3BlY2lmaWVkIGJ5CiAvLyB0aGUgZ3Rl
c3Rfc3RhY2tfdHJhY2VfZGVwdGggZmxhZy4gIFRoZSBza2lwX2NvdW50IHBhcmFtZXRlcgpAQCAt
NzUwLDggKzc1OSw4IEBAIGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2U8Rml4dHVyZSwg
VGVtcGxhdGVzMCwgVHlwZXM+IHsKIC8vIEZvciBleGFtcGxlLCBpZiBGb28oKSBjYWxscyBCYXIo
KSwgd2hpY2ggaW4gdHVybiBjYWxscwogLy8gR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRv
cCguLi4sIDEpLCBGb28oKSB3aWxsIGJlIGluY2x1ZGVkIGluCiAvLyB0aGUgdHJhY2UgYnV0IEJh
cigpIGFuZCBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKCkgd29uJ3QuCi1HVEVTVF9B
UElfIFN0cmluZyBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKFVuaXRUZXN0KiB1bml0
X3Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBza2lwX2NvdW50KTsKK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgR2V0Q3VycmVudE9zU3Rh
Y2tUcmFjZUV4Y2VwdFRvcCgKKyAgICBVbml0VGVzdCogdW5pdF90ZXN0LCBpbnQgc2tpcF9jb3Vu
dCk7CiAKIC8vIEhlbHBlcnMgZm9yIHN1cHByZXNzaW5nIHdhcm5pbmdzIG9uIHVucmVhY2hhYmxl
IGNvZGUgb3IgY29uc3RhbnQKIC8vIGNvbmRpdGlvbi4KQEAgLTc2Miw2ICs3NzEsMTUgQEAgR1RF
U1RfQVBJXyBib29sIEFsd2F5c1RydWUoKTsKIC8vIEFsd2F5cyByZXR1cm5zIGZhbHNlLgogaW5s
aW5lIGJvb2wgQWx3YXlzRmFsc2UoKSB7IHJldHVybiAhQWx3YXlzVHJ1ZSgpOyB9CiAKKy8vIEhl
bHBlciBmb3Igc3VwcHJlc3NpbmcgZmFsc2Ugd2FybmluZyBmcm9tIENsYW5nIG9uIGEgY29uc3Qg
Y2hhcioKKy8vIHZhcmlhYmxlIGRlY2xhcmVkIGluIGEgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBh
bHdheXMgYmVpbmcgTlVMTCBpbgorLy8gdGhlIGVsc2UgYnJhbmNoLgorc3RydWN0IEdURVNUX0FQ
SV8gQ29uc3RDaGFyUHRyIHsKKyAgQ29uc3RDaGFyUHRyKGNvbnN0IGNoYXIqIHN0cikgOiB2YWx1
ZShzdHIpIHt9CisgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgIGNv
bnN0IGNoYXIqIHZhbHVlOworfTsKKwogLy8gQSBzaW1wbGUgTGluZWFyIENvbmdydWVudGlhbCBH
ZW5lcmF0b3IgZm9yIGdlbmVyYXRpbmcgcmFuZG9tCiAvLyBudW1iZXJzIHdpdGggYSB1bmlmb3Jt
IGRpc3RyaWJ1dGlvbi4gIFVubGlrZSByYW5kKCkgYW5kIHNyYW5kKCksIGl0CiAvLyBkb2Vzbid0
IHVzZSBnbG9iYWwgc3RhdGUgKGFuZCB0aGVyZWZvcmUgY2FuJ3QgaW50ZXJmZXJlIHdpdGggdXNl
cgpAQCAtNzg0LDEzICs4MDIsNDAzIEBAIGNsYXNzIEdURVNUX0FQSV8gUmFuZG9tIHsKICAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhSYW5kb20pOwogfTsKIAorLy8gRGVmaW5pbmcg
YSB2YXJpYWJsZSBvZiB0eXBlIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBUMj4gd2lsbCBj
YXVzZSBhCisvLyBjb21waWxlciBlcnJvciBpZmYgVDEgYW5kIFQyIGFyZSBkaWZmZXJlbnQgdHlw
ZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorc3RydWN0IENvbXBpbGVB
c3NlcnRUeXBlc0VxdWFsOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBDb21waWxl
QXNzZXJ0VHlwZXNFcXVhbDxULCBUPiB7Cit9OworCisvLyBSZW1vdmVzIHRoZSByZWZlcmVuY2Ug
ZnJvbSBhIHR5cGUgaWYgaXQgaXMgYSByZWZlcmVuY2UgdHlwZSwKKy8vIG90aGVyd2lzZSBsZWF2
ZXMgaXQgdW5jaGFuZ2VkLiAgVGhpcyBpcyB0aGUgc2FtZSBhcworLy8gdHIxOjpyZW1vdmVfcmVm
ZXJlbmNlLCB3aGljaCBpcyBub3Qgd2lkZWx5IGF2YWlsYWJsZSB5ZXQuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3N0cnVjdCBSZW1vdmVSZWZlcmVuY2UgeyB0eXBlZGVmIFQgdHlwZTsgfTsgIC8v
IE5PTElOVAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUmVtb3ZlUmVmZXJlbmNlPFQm
PiB7IHR5cGVkZWYgVCB0eXBlOyB9OyAgLy8gTk9MSU5UCisKKy8vIEEgaGFuZHkgd3JhcHBlciBh
cm91bmQgUmVtb3ZlUmVmZXJlbmNlIHRoYXQgd29ya3Mgd2hlbiB0aGUgYXJndW1lbnQKKy8vIFQg
ZGVwZW5kcyBvbiB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgorI2RlZmluZSBHVEVTVF9SRU1PVkVfUkVG
RVJFTkNFXyhUKSBcCisgICAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UmVtb3ZlUmVm
ZXJlbmNlPFQ+Ojp0eXBlCisKKy8vIFJlbW92ZXMgY29uc3QgZnJvbSBhIHR5cGUgaWYgaXQgaXMg
YSBjb25zdCB0eXBlLCBvdGhlcndpc2UgbGVhdmVzCisvLyBpdCB1bmNoYW5nZWQuICBUaGlzIGlz
IHRoZSBzYW1lIGFzIHRyMTo6cmVtb3ZlX2NvbnN0LCB3aGljaCBpcyBub3QKKy8vIHdpZGVseSBh
dmFpbGFibGUgeWV0LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUmVtb3ZlQ29uc3Qg
eyB0eXBlZGVmIFQgdHlwZTsgfTsgIC8vIE5PTElOVAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citz
dHJ1Y3QgUmVtb3ZlQ29uc3Q8Y29uc3QgVD4geyB0eXBlZGVmIFQgdHlwZTsgfTsgIC8vIE5PTElO
VAorCisvLyBNU1ZDIDguMCwgU3VuIEMrKywgYW5kIElCTSBYTCBDKysgaGF2ZSBhIGJ1ZyB3aGlj
aCBjYXVzZXMgdGhlIGFib3ZlCisvLyBkZWZpbml0aW9uIHRvIGZhaWwgdG8gcmVtb3ZlIHRoZSBj
b25zdCBpbiAnY29uc3QgaW50WzNdJyBhbmQgJ2NvbnN0CisvLyBjaGFyWzNdWzRdJy4gIFRoZSBm
b2xsb3dpbmcgc3BlY2lhbGl6YXRpb24gd29ya3MgYXJvdW5kIHRoZSBidWcuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitzdHJ1Y3QgUmVtb3ZlQ29uc3Q8Y29uc3QgVFtOXT4gewor
ICB0eXBlZGVmIHR5cGVuYW1lIFJlbW92ZUNvbnN0PFQ+Ojp0eXBlIHR5cGVbTl07Cit9OworCisj
aWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPCAxNDAwCisvLyBUaGlzIGlzIHRoZSBv
bmx5IHNwZWNpYWxpemF0aW9uIHRoYXQgYWxsb3dzIFZDKysgNy4xIHRvIHJlbW92ZSBjb25zdCBp
bgorLy8gJ2NvbnN0IGludFszXSBhbmQgJ2NvbnN0IGludFszXVs0XScuICBIb3dldmVyLCBpdCBj
YXVzZXMgdHJvdWJsZSB3aXRoIEdDQworLy8gYW5kIHRodXMgbmVlZHMgdG8gYmUgY29uZGl0aW9u
YWxseSBjb21waWxlZC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KK3N0cnVjdCBS
ZW1vdmVDb25zdDxUW05dPiB7CisgIHR5cGVkZWYgdHlwZW5hbWUgUmVtb3ZlQ29uc3Q8VD46OnR5
cGUgdHlwZVtOXTsKK307CisjZW5kaWYKKworLy8gQSBoYW5keSB3cmFwcGVyIGFyb3VuZCBSZW1v
dmVDb25zdCB0aGF0IHdvcmtzIHdoZW4gdGhlIGFyZ3VtZW50CisvLyBUIGRlcGVuZHMgb24gdGVt
cGxhdGUgcGFyYW1ldGVycy4KKyNkZWZpbmUgR1RFU1RfUkVNT1ZFX0NPTlNUXyhUKSBcCisgICAg
dHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UmVtb3ZlQ29uc3Q8VD46OnR5cGUKKworLy8g
VHVybnMgY29uc3QgVSYsIFUmLCBjb25zdCBVLCBhbmQgVSBhbGwgaW50byBVLgorI2RlZmluZSBH
VEVTVF9SRU1PVkVfUkVGRVJFTkNFX0FORF9DT05TVF8oVCkgXAorICAgIEdURVNUX1JFTU9WRV9D
T05TVF8oR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV8oVCkpCisKKy8vIEltcGxpY2l0bHlDb252ZXJ0
aWJsZTxGcm9tLCBUbz46OnZhbHVlIGlzIGEgY29tcGlsZS10aW1lIGJvb2wKKy8vIGNvbnN0YW50
IHRoYXQncyB0cnVlIGlmZiB0eXBlIEZyb20gY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRv
CisvLyB0eXBlIFRvLgordGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgorY2xh
c3MgSW1wbGljaXRseUNvbnZlcnRpYmxlIHsKKyBwcml2YXRlOgorICAvLyBXZSBuZWVkIHRoZSBm
b2xsb3dpbmcgaGVscGVyIGZ1bmN0aW9ucyBvbmx5IGZvciB0aGVpciB0eXBlcy4KKyAgLy8gVGhl
eSBoYXZlIG5vIGltcGxlbWVudGF0aW9ucy4KKworICAvLyBNYWtlRnJvbSgpIGlzIGFuIGV4cHJl
c3Npb24gd2hvc2UgdHlwZSBpcyBGcm9tLiAgV2UgY2Fubm90IHNpbXBseQorICAvLyB1c2UgRnJv
bSgpLCBhcyB0aGUgdHlwZSBGcm9tIG1heSBub3QgaGF2ZSBhIHB1YmxpYyBkZWZhdWx0CisgIC8v
IGNvbnN0cnVjdG9yLgorICBzdGF0aWMgdHlwZW5hbWUgQWRkUmVmZXJlbmNlPEZyb20+Ojp0eXBl
IE1ha2VGcm9tKCk7CisKKyAgLy8gVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgb3ZlcmxvYWRlZC4g
IEdpdmVuIGFuIGV4cHJlc3Npb24KKyAgLy8gSGVscGVyKHgpLCB0aGUgY29tcGlsZXIgd2lsbCBw
aWNrIHRoZSBmaXJzdCB2ZXJzaW9uIGlmIHggY2FuIGJlCisgIC8vIGltcGxpY2l0bHkgY29udmVy
dGVkIHRvIHR5cGUgVG87IG90aGVyd2lzZSBpdCB3aWxsIHBpY2sgdGhlCisgIC8vIHNlY29uZCB2
ZXJzaW9uLgorICAvLworICAvLyBUaGUgZmlyc3QgdmVyc2lvbiByZXR1cm5zIGEgdmFsdWUgb2Yg
c2l6ZSAxLCBhbmQgdGhlIHNlY29uZAorICAvLyB2ZXJzaW9uIHJldHVybnMgYSB2YWx1ZSBvZiBz
aXplIDIuICBUaGVyZWZvcmUsIGJ5IGNoZWNraW5nIHRoZQorICAvLyBzaXplIG9mIEhlbHBlcih4
KSwgd2hpY2ggY2FuIGJlIGRvbmUgYXQgY29tcGlsZSB0aW1lLCB3ZSBjYW4gdGVsbAorICAvLyB3
aGljaCB2ZXJzaW9uIG9mIEhlbHBlcigpIGlzIHVzZWQsIGFuZCBoZW5jZSB3aGV0aGVyIHggY2Fu
IGJlCisgIC8vIGltcGxpY2l0bHkgY29udmVydGVkIHRvIHR5cGUgVG8uCisgIHN0YXRpYyBjaGFy
IEhlbHBlcihUbyk7CisgIHN0YXRpYyBjaGFyICgmSGVscGVyKC4uLikpWzJdOyAgLy8gTk9MSU5U
CisKKyAgLy8gV2UgaGF2ZSB0byBwdXQgdGhlICdwdWJsaWMnIHNlY3Rpb24gYWZ0ZXIgdGhlICdw
cml2YXRlJyBzZWN0aW9uLAorICAvLyBvciBNU1ZDIHJlZnVzZXMgdG8gY29tcGlsZSB0aGUgY29k
ZS4KKyBwdWJsaWM6CisjaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCisgIC8vIEMrK0J1aWxkZXIg
Y2Fubm90IHVzZSBtZW1iZXIgb3ZlcmxvYWQgcmVzb2x1dGlvbiBkdXJpbmcgdGVtcGxhdGUKKyAg
Ly8gaW5zdGFudGlhdGlvbi4gIFRoZSBzaW1wbGVzdCB3b3JrYXJvdW5kIGlzIHRvIHVzZSBpdHMg
QysrMHggdHlwZSB0cmFpdHMKKyAgLy8gZnVuY3Rpb25zIChDKytCdWlsZGVyIDIwMDkgYW5kIGFi
b3ZlIG9ubHkpLgorICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IF9faXNfY29udmVydGlibGUo
RnJvbSwgVG8pOworI2Vsc2UKKyAgLy8gTVNWQyB3YXJucyBhYm91dCBpbXBsaWNpdGx5IGNvbnZl
cnRpbmcgZnJvbSBkb3VibGUgdG8gaW50IGZvcgorICAvLyBwb3NzaWJsZSBsb3NzIG9mIGRhdGEs
IHNvIHdlIG5lZWQgdG8gdGVtcG9yYXJpbHkgZGlzYWJsZSB0aGUKKyAgLy8gd2FybmluZy4KKyAg
R1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDI0NCkKKyAgc3RhdGljIGNvbnN0IGJv
b2wgdmFsdWUgPQorICAgICAgc2l6ZW9mKEhlbHBlcihJbXBsaWNpdGx5Q29udmVydGlibGU6Ok1h
a2VGcm9tKCkpKSA9PSAxOworICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKyNl
bmRpZiAgLy8gX19CT1JMQU5EQ19fCit9OwordGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVu
YW1lIFRvPgorY29uc3QgYm9vbCBJbXBsaWNpdGx5Q29udmVydGlibGU8RnJvbSwgVG8+Ojp2YWx1
ZTsKKworLy8gSXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZSBpcyBhIGNvbXBpbGUtdGltZSBi
b29sIGNvbnN0YW50IHRoYXQncworLy8gdHJ1ZSBpZmYgVCBpcyB0eXBlIFByb3RvY29sTWVzc2Fn
ZSwgcHJvdG8yOjpNZXNzYWdlLCBvciBhIHN1YmNsYXNzCisvLyBvZiB0aG9zZS4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorc3RydWN0IElzQVByb3RvY29sTWVzc2FnZQorICAgIDogcHVibGljIGJv
b2xfY29uc3RhbnQ8CisgIEltcGxpY2l0bHlDb252ZXJ0aWJsZTxjb25zdCBUKiwgY29uc3QgOjpQ
cm90b2NvbE1lc3NhZ2UqPjo6dmFsdWUgfHwKKyAgSW1wbGljaXRseUNvbnZlcnRpYmxlPGNvbnN0
IFQqLCBjb25zdCA6OnByb3RvMjo6TWVzc2FnZSo+Ojp2YWx1ZT4geworfTsKKworLy8gV2hlbiB0
aGUgY29tcGlsZXIgc2VlcyBleHByZXNzaW9uIElzQ29udGFpbmVyVGVzdDxDPigwKSwgaWYgQyBp
cyBhbgorLy8gU1RMLXN0eWxlIGNvbnRhaW5lciBjbGFzcywgdGhlIGZpcnN0IG92ZXJsb2FkIG9m
IElzQ29udGFpbmVyVGVzdAorLy8gd2lsbCBiZSB2aWFibGUgKHNpbmNlIGJvdGggQzo6aXRlcmF0
b3IqIGFuZCBDOjpjb25zdF9pdGVyYXRvciogYXJlCisvLyB2YWxpZCB0eXBlcyBhbmQgTlVMTCBj
YW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gdGhlbSkuICBJdCB3aWxsCisvLyBiZSBwaWNr
ZWQgb3ZlciB0aGUgc2Vjb25kIG92ZXJsb2FkIGFzICdpbnQnIGlzIGEgcGVyZmVjdCBtYXRjaCBm
b3IKKy8vIHRoZSB0eXBlIG9mIGFyZ3VtZW50IDAuICBJZiBDOjppdGVyYXRvciBvciBDOjpjb25z
dF9pdGVyYXRvciBpcyBub3QKKy8vIGEgdmFsaWQgdHlwZSwgdGhlIGZpcnN0IG92ZXJsb2FkIGlz
IG5vdCB2aWFibGUsIGFuZCB0aGUgc2Vjb25kCisvLyBvdmVybG9hZCB3aWxsIGJlIHBpY2tlZC4g
IFRoZXJlZm9yZSwgd2UgY2FuIGRldGVybWluZSB3aGV0aGVyIEMgaXMKKy8vIGEgY29udGFpbmVy
IGNsYXNzIGJ5IGNoZWNraW5nIHRoZSB0eXBlIG9mIElzQ29udGFpbmVyVGVzdDxDPigwKS4KKy8v
IFRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpcyBpbnNpZ25pZmljYW50LgorLy8KKy8vIElu
IEMrKzExIG1vZGUgd2UgY2hlY2sgdGhlIGV4aXN0ZW5jZSBvZiBhIGNvbnN0X2l0ZXJhdG9yIGFu
ZCB0aGF0IGFuCisvLyBpdGVyYXRvciBpcyBwcm9wZXJseSBpbXBsZW1lbnRlZCBmb3IgdGhlIGNv
bnRhaW5lci4KKy8vCisvLyBGb3IgcHJlLUMrKzExIHRoYXQgd2UgbG9vayBmb3IgYm90aCBDOjpp
dGVyYXRvciBhbmQgQzo6Y29uc3RfaXRlcmF0b3IuCisvLyBUaGUgcmVhc29uIGlzIHRoYXQgQysr
IGluamVjdHMgdGhlIG5hbWUgb2YgYSBjbGFzcyBhcyBhIG1lbWJlciBvZiB0aGUKKy8vIGNsYXNz
IGl0c2VsZiAoZS5nLiB5b3UgY2FuIHJlZmVyIHRvIGNsYXNzIGl0ZXJhdG9yIGFzIGVpdGhlcgor
Ly8gJ2l0ZXJhdG9yJyBvciAnaXRlcmF0b3I6Oml0ZXJhdG9yJykuICBJZiB3ZSBsb29rIGZvciBD
OjppdGVyYXRvcgorLy8gb25seSwgZm9yIGV4YW1wbGUsIHdlIHdvdWxkIG1pc3Rha2VubHkgdGhp
bmsgdGhhdCBhIGNsYXNzIG5hbWVkCisvLyBpdGVyYXRvciBpcyBhbiBTVEwgY29udGFpbmVyLgor
Ly8KKy8vIEFsc28gbm90ZSB0aGF0IHRoZSBzaW1wbGVyIGFwcHJvYWNoIG9mIG92ZXJsb2FkaW5n
CisvLyBJc0NvbnRhaW5lclRlc3QodHlwZW5hbWUgQzo6Y29uc3RfaXRlcmF0b3IqKSBhbmQKKy8v
IElzQ29udGFpbmVyVGVzdCguLi4pIGRvZXNuJ3Qgd29yayB3aXRoIFZpc3VhbCBBZ2UgQysrIGFu
ZCBTdW4gQysrLgordHlwZWRlZiBpbnQgSXNDb250YWluZXI7CisjaWYgR1RFU1RfTEFOR19DWFgx
MQordGVtcGxhdGUgPGNsYXNzIEMsCisgICAgICAgICAgY2xhc3MgSXRlcmF0b3IgPSBkZWNsdHlw
ZSg6OnN0ZDo6ZGVjbHZhbDxjb25zdCBDJj4oKS5iZWdpbigpKSwKKyAgICAgICAgICBjbGFzcyA9
IGRlY2x0eXBlKDo6c3RkOjpkZWNsdmFsPGNvbnN0IEMmPigpLmVuZCgpKSwKKyAgICAgICAgICBj
bGFzcyA9IGRlY2x0eXBlKCsrOjpzdGQ6OmRlY2x2YWw8SXRlcmF0b3ImPigpKSwKKyAgICAgICAg
ICBjbGFzcyA9IGRlY2x0eXBlKCo6OnN0ZDo6ZGVjbHZhbDxJdGVyYXRvcj4oKSksCisgICAgICAg
ICAgY2xhc3MgPSB0eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvcj4KK0lzQ29udGFpbmVyIElzQ29u
dGFpbmVyVGVzdChpbnQgLyogZHVtbXkgKi8pIHsKKyAgcmV0dXJuIDA7Cit9CisjZWxzZQordGVt
cGxhdGUgPGNsYXNzIEM+CitJc0NvbnRhaW5lciBJc0NvbnRhaW5lclRlc3QoaW50IC8qIGR1bW15
ICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIEM6Oml0ZXJhdG9yKiAv
KiBpdCAqLyA9IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQzo6
Y29uc3RfaXRlcmF0b3IqIC8qIGNvbnN0X2l0ICovID0gTlVMTCkgeworICByZXR1cm4gMDsKK30K
KyNlbmRpZiAgLy8gR1RFU1RfTEFOR19DWFgxMQorCit0eXBlZGVmIGNoYXIgSXNOb3RDb250YWlu
ZXI7Cit0ZW1wbGF0ZSA8Y2xhc3MgQz4KK0lzTm90Q29udGFpbmVyIElzQ29udGFpbmVyVGVzdChs
b25nIC8qIGR1bW15ICovKSB7IHJldHVybiAnXDAnOyB9CisKKy8vIFRyYWl0IHRvIGRldGVjdCB3
aGV0aGVyIGEgdHlwZSBUIGlzIGEgaGFzaCB0YWJsZS4KKy8vIFRoZSBoZXVyaXN0aWMgdXNlZCBp
cyB0aGF0IHRoZSB0eXBlIGNvbnRhaW5zIGFuIGlubmVyIHR5cGUgYGhhc2hlcmAgYW5kIGRvZXMK
Ky8vIG5vdCBjb250YWluIGFuIGlubmVyIHR5cGUgYHJldmVyc2VfaXRlcmF0b3JgLgorLy8gSWYg
dGhlIGNvbnRhaW5lciBpcyBpdGVyYWJsZSBpbiByZXZlcnNlLCB0aGVuIG9yZGVyIG1pZ2h0IGFj
dHVhbGx5IG1hdHRlci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IElzSGFzaFRhYmxl
IHsKKyBwcml2YXRlOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgc3RhdGljIGNoYXIgdGVz
dCh0eXBlbmFtZSBVOjpoYXNoZXIqLCB0eXBlbmFtZSBVOjpyZXZlcnNlX2l0ZXJhdG9yKik7Cisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICBzdGF0aWMgaW50IHRlc3QodHlwZW5hbWUgVTo6aGFz
aGVyKiwgLi4uKTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIHN0YXRpYyBjaGFyIHRlc3Qo
Li4uKTsKKworIHB1YmxpYzoKKyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBzaXplb2YodGVz
dDxUPigwLCAwKSkgPT0gc2l6ZW9mKGludCk7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2NvbnN0IGJvb2wgSXNIYXNoVGFibGU8VD46OnZhbHVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
Pgorc3RydWN0IFZvaWRUIHsKKyAgICB0eXBlZGVmIHZvaWQgdmFsdWVfdHlwZTsKK307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHZvaWQ+CitzdHJ1Y3QgSGFzVmFsdWVUeXBl
IDogZmFsc2VfdHlwZSB7fTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEhhc1ZhbHVl
VHlwZTxULCBWb2lkVDx0eXBlbmFtZSBUOjp2YWx1ZV90eXBlPiA+IDogdHJ1ZV90eXBlIHsKK307
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDLAorICAgICAgICAgIGJvb2wgPSBzaXplb2YoSXNDb250
YWluZXJUZXN0PEM+KDApKSA9PSBzaXplb2YoSXNDb250YWluZXIpLAorICAgICAgICAgIGJvb2wg
PSBIYXNWYWx1ZVR5cGU8Qz46OnZhbHVlPgorc3RydWN0IElzUmVjdXJzaXZlQ29udGFpbmVySW1w
bDsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEMsIGJvb2wgSFY+CitzdHJ1Y3QgSXNSZWN1cnNpdmVD
b250YWluZXJJbXBsPEMsIGZhbHNlLCBIVj4gOiBwdWJsaWMgZmFsc2VfdHlwZSB7fTsKKworLy8g
U2luY2UgdGhlIElzUmVjdXJzaXZlQ29udGFpbmVySW1wbCBkZXBlbmRzIG9uIHRoZSBJc0NvbnRh
aW5lclRlc3Qgd2UgbmVlZCB0bworLy8gb2JleSB0aGUgc2FtZSBpbmNvbnNpc3RlbmNpZXMgYXMg
dGhlIElzQ29udGFpbmVyVGVzdCwgbmFtZWx5IGNoZWNrIGlmCisvLyBzb21ldGhpbmcgaXMgYSBj
b250YWluZXIgaXMgcmVseWluZyBvbiBvbmx5IGNvbnN0X2l0ZXJhdG9yIGluIEMrKzExIGFuZAor
Ly8gaXMgcmVseWluZyBvbiBib3RoIGNvbnN0X2l0ZXJhdG9yIGFuZCBpdGVyYXRvciBvdGhlcndp
c2UKK3RlbXBsYXRlIDx0eXBlbmFtZSBDPgorc3RydWN0IElzUmVjdXJzaXZlQ29udGFpbmVySW1w
bDxDLCB0cnVlLCBmYWxzZT4gOiBwdWJsaWMgZmFsc2VfdHlwZSB7fTsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIEM+CitzdHJ1Y3QgSXNSZWN1cnNpdmVDb250YWluZXJJbXBsPEMsIHRydWUsIHRydWU+
IHsKKyAgI2lmIEdURVNUX0xBTkdfQ1hYMTEKKyAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvclRy
YWl0czx0eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvcj46OnZhbHVlX3R5cGUKKyAgICAgIHZhbHVl
X3R5cGU7CisjZWxzZQorICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yVHJhaXRzPHR5cGVuYW1l
IEM6Oml0ZXJhdG9yPjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOworI2VuZGlmCisgIHR5cGVkZWYg
aXNfc2FtZTx2YWx1ZV90eXBlLCBDPiB0eXBlOworfTsKKworLy8gSXNSZWN1cnNpdmVDb250YWlu
ZXI8VHlwZT4gaXMgYSB1bmFyeSBjb21waWxlLXRpbWUgcHJlZGljYXRlIHRoYXQKKy8vIGV2YWx1
YXRlcyB3aGV0aGVyIEMgaXMgYSByZWN1cnNpdmUgY29udGFpbmVyIHR5cGUuIEEgcmVjdXJzaXZl
IGNvbnRhaW5lcgorLy8gdHlwZSBpcyBhIGNvbnRhaW5lciB0eXBlIHdob3NlIHZhbHVlX3R5cGUg
aXMgZXF1YWwgdG8gdGhlIGNvbnRhaW5lciB0eXBlCisvLyBpdHNlbGYuIEFuIGV4YW1wbGUgZm9y
IGEgcmVjdXJzaXZlIGNvbnRhaW5lciB0eXBlIGlzCisvLyBib29zdDo6ZmlsZXN5c3RlbTo6cGF0
aCwgd2hvc2UgaXRlcmF0b3IgaGFzIGEgdmFsdWVfdHlwZSB0aGF0IGlzIGVxdWFsIHRvCisvLyBi
b29zdDo6ZmlsZXN5c3RlbTo6cGF0aC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBDPgorc3RydWN0IElz
UmVjdXJzaXZlQ29udGFpbmVyIDogcHVibGljIElzUmVjdXJzaXZlQ29udGFpbmVySW1wbDxDPjo6
dHlwZSB7fTsKKworLy8gRW5hYmxlSWY8Y29uZGl0aW9uPjo6dHlwZSBpcyB2b2lkIHdoZW4gJ0Nv
bmQnIGlzIHRydWUsIGFuZAorLy8gdW5kZWZpbmVkIHdoZW4gJ0NvbmQnIGlzIGZhbHNlLiAgVG8g
dXNlIFNGSU5BRSB0byBtYWtlIGEgZnVuY3Rpb24KKy8vIG92ZXJsb2FkIG9ubHkgYXBwbHkgd2hl
biBhIHBhcnRpY3VsYXIgZXhwcmVzc2lvbiBpcyB0cnVlLCBhZGQKKy8vICJ0eXBlbmFtZSBFbmFi
bGVJZjxleHByZXNzaW9uPjo6dHlwZSogPSAwIiBhcyB0aGUgbGFzdCBwYXJhbWV0ZXIuCit0ZW1w
bGF0ZTxib29sPiBzdHJ1Y3QgRW5hYmxlSWY7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbmFibGVJZjx0
cnVlPiB7IHR5cGVkZWYgdm9pZCB0eXBlOyB9OyAgLy8gTk9MSU5UCisKKy8vIFV0aWxpdGllcyBm
b3IgbmF0aXZlIGFycmF5cy4KKworLy8gQXJyYXlFcSgpIGNvbXBhcmVzIHR3byBrLWRpbWVuc2lv
bmFsIG5hdGl2ZSBhcnJheXMgdXNpbmcgdGhlCisvLyBlbGVtZW50cycgb3BlcmF0b3I9PSwgd2hl
cmUgayBjYW4gYmUgYW55IGludGVnZXIgPj0gMC4gIFdoZW4gayBpcworLy8gMCwgQXJyYXlFcSgp
IGRlZ2VuZXJhdGVzIGludG8gY29tcGFyaW5nIGEgc2luZ2xlIHBhaXIgb2YgdmFsdWVzLgorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2Jvb2wgQXJyYXlFcShjb25zdCBUKiBs
aHMsIHNpemVfdCBzaXplLCBjb25zdCBVKiByaHMpOworCisvLyBUaGlzIGdlbmVyaWMgdmVyc2lv
biBpcyB1c2VkIHdoZW4gayBpcyAwLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
CitpbmxpbmUgYm9vbCBBcnJheUVxKGNvbnN0IFQmIGxocywgY29uc3QgVSYgcmhzKSB7IHJldHVy
biBsaHMgPT0gcmhzOyB9CisKKy8vIFRoaXMgb3ZlcmxvYWQgaXMgdXNlZCB3aGVuIGsgPj0gMS4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgTj4KK2lubGluZSBib29s
IEFycmF5RXEoY29uc3QgVCgmbGhzKVtOXSwgY29uc3QgVSgmcmhzKVtOXSkgeworICByZXR1cm4g
aW50ZXJuYWw6OkFycmF5RXEobGhzLCBOLCByaHMpOworfQorCisvLyBUaGlzIGhlbHBlciByZWR1
Y2VzIGNvZGUgYmxvYXQuICBJZiB3ZSBpbnN0ZWFkIHB1dCBpdHMgbG9naWMgaW5zaWRlCisvLyB0
aGUgcHJldmlvdXMgQXJyYXlFcSgpIGZ1bmN0aW9uLCBhcnJheXMgd2l0aCBkaWZmZXJlbnQgc2l6
ZXMgd291bGQKKy8vIGxlYWQgdG8gZGlmZmVyZW50IGNvcGllcyBvZiB0aGUgdGVtcGxhdGUgY29k
ZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorYm9vbCBBcnJheUVxKGNvbnN0
IFQqIGxocywgc2l6ZV90IHNpemUsIGNvbnN0IFUqIHJocykgeworICBmb3IgKHNpemVfdCBpID0g
MDsgaSAhPSBzaXplOyBpKyspIHsKKyAgICBpZiAoIWludGVybmFsOjpBcnJheUVxKGxoc1tpXSwg
cmhzW2ldKSkKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKwor
Ly8gRmluZHMgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIGl0ZXJhdG9yIHJhbmdlIFtiZWdpbiwg
ZW5kKSB0aGF0CisvLyBlcXVhbHMgZWxlbS4gIEVsZW1lbnQgbWF5IGJlIGEgbmF0aXZlIGFycmF5
IHR5cGUgaXRzZWxmLgordGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXIsIHR5cGVuYW1lIEVsZW1lbnQ+
CitJdGVyIEFycmF5QXdhcmVGaW5kKEl0ZXIgYmVnaW4sIEl0ZXIgZW5kLCBjb25zdCBFbGVtZW50
JiBlbGVtKSB7CisgIGZvciAoSXRlciBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAg
ICBpZiAoaW50ZXJuYWw6OkFycmF5RXEoKml0LCBlbGVtKSkKKyAgICAgIHJldHVybiBpdDsKKyAg
fQorICByZXR1cm4gZW5kOworfQorCisvLyBDb3B5QXJyYXkoKSBjb3BpZXMgYSBrLWRpbWVuc2lv
bmFsIG5hdGl2ZSBhcnJheSB1c2luZyB0aGUgZWxlbWVudHMnCisvLyBvcGVyYXRvcj0sIHdoZXJl
IGsgY2FuIGJlIGFueSBpbnRlZ2VyID49IDAuICBXaGVuIGsgaXMgMCwKKy8vIENvcHlBcnJheSgp
IGRlZ2VuZXJhdGVzIGludG8gY29weWluZyBhIHNpbmdsZSB2YWx1ZS4KKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+Cit2b2lkIENvcHlBcnJheShjb25zdCBUKiBmcm9tLCBzaXpl
X3Qgc2l6ZSwgVSogdG8pOworCisvLyBUaGlzIGdlbmVyaWMgdmVyc2lvbiBpcyB1c2VkIHdoZW4g
ayBpcyAwLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitpbmxpbmUgdm9pZCBD
b3B5QXJyYXkoY29uc3QgVCYgZnJvbSwgVSogdG8pIHsgKnRvID0gZnJvbTsgfQorCisvLyBUaGlz
IG92ZXJsb2FkIGlzIHVzZWQgd2hlbiBrID49IDEuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgc2l6ZV90IE4+CitpbmxpbmUgdm9pZCBDb3B5QXJyYXkoY29uc3QgVCgmZnJvbSlb
Tl0sIFUoKnRvKVtOXSkgeworICBpbnRlcm5hbDo6Q29weUFycmF5KGZyb20sIE4sICp0byk7Cit9
CisKKy8vIFRoaXMgaGVscGVyIHJlZHVjZXMgY29kZSBibG9hdC4gIElmIHdlIGluc3RlYWQgcHV0
IGl0cyBsb2dpYyBpbnNpZGUKKy8vIHRoZSBwcmV2aW91cyBDb3B5QXJyYXkoKSBmdW5jdGlvbiwg
YXJyYXlzIHdpdGggZGlmZmVyZW50IHNpemVzCisvLyB3b3VsZCBsZWFkIHRvIGRpZmZlcmVudCBj
b3BpZXMgb2YgdGhlIHRlbXBsYXRlIGNvZGUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KK3ZvaWQgQ29weUFycmF5KGNvbnN0IFQqIGZyb20sIHNpemVfdCBzaXplLCBVKiB0bykg
eworICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBzaXplOyBpKyspIHsKKyAgICBpbnRlcm5hbDo6
Q29weUFycmF5KGZyb21baV0sIHRvICsgaSk7CisgIH0KK30KKworLy8gVGhlIHJlbGF0aW9uIGJl
dHdlZW4gYW4gTmF0aXZlQXJyYXkgb2JqZWN0IChzZWUgYmVsb3cpIGFuZCB0aGUKKy8vIG5hdGl2
ZSBhcnJheSBpdCByZXByZXNlbnRzLgorLy8gV2UgdXNlIDIgZGlmZmVyZW50IHN0cnVjdHMgdG8g
YWxsb3cgbm9uLWNvcHlhYmxlIHR5cGVzIHRvIGJlIHVzZWQsIGFzIGxvbmcKKy8vIGFzIFJlbGF0
aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSBpcyBwYXNzZWQuCitzdHJ1Y3QgUmVsYXRpb25Ub1NvdXJj
ZVJlZmVyZW5jZSB7fTsKK3N0cnVjdCBSZWxhdGlvblRvU291cmNlQ29weSB7fTsKKworLy8gQWRh
cHRzIGEgbmF0aXZlIGFycmF5IHRvIGEgcmVhZC1vbmx5IFNUTC1zdHlsZSBjb250YWluZXIuICBJ
bnN0ZWFkCisvLyBvZiB0aGUgY29tcGxldGUgU1RMIGNvbnRhaW5lciBjb25jZXB0LCB0aGlzIGFk
YXB0b3Igb25seSBpbXBsZW1lbnRzCisvLyBtZW1iZXJzIHVzZWZ1bCBmb3IgR29vZ2xlIE1vY2sn
cyBjb250YWluZXIgbWF0Y2hlcnMuICBOZXcgbWVtYmVycworLy8gc2hvdWxkIGJlIGFkZGVkIGFz
IG5lZWRlZC4gIFRvIHNpbXBsaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbiwgd2Ugb25seQorLy8gc3Vw
cG9ydCBFbGVtZW50IGJlaW5nIGEgcmF3IHR5cGUgKGkuZS4gaGF2aW5nIG5vIHRvcC1sZXZlbCBj
b25zdCBvcgorLy8gcmVmZXJlbmNlIG1vZGlmaWVyKS4gIEl0J3MgdGhlIGNsaWVudCdzIHJlc3Bv
bnNpYmlsaXR5IHRvIHNhdGlzZnkKKy8vIHRoaXMgcmVxdWlyZW1lbnQuICBFbGVtZW50IGNhbiBi
ZSBhbiBhcnJheSB0eXBlIGl0c2VsZiAoaGVuY2UKKy8vIG11bHRpLWRpbWVuc2lvbmFsIGFycmF5
cyBhcmUgc3VwcG9ydGVkKS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50PgorY2xhc3MgTmF0
aXZlQXJyYXkgeworIHB1YmxpYzoKKyAgLy8gU1RMLXN0eWxlIGNvbnRhaW5lciB0eXBlZGVmcy4K
KyAgdHlwZWRlZiBFbGVtZW50IHZhbHVlX3R5cGU7CisgIHR5cGVkZWYgRWxlbWVudCogaXRlcmF0
b3I7CisgIHR5cGVkZWYgY29uc3QgRWxlbWVudCogY29uc3RfaXRlcmF0b3I7CisKKyAgLy8gQ29u
c3RydWN0cyBmcm9tIGEgbmF0aXZlIGFycmF5LiBSZWZlcmVuY2VzIHRoZSBzb3VyY2UuCisgIE5h
dGl2ZUFycmF5KGNvbnN0IEVsZW1lbnQqIGFycmF5LCBzaXplX3QgY291bnQsIFJlbGF0aW9uVG9T
b3VyY2VSZWZlcmVuY2UpIHsKKyAgICBJbml0UmVmKGFycmF5LCBjb3VudCk7CisgIH0KKworICAv
LyBDb25zdHJ1Y3RzIGZyb20gYSBuYXRpdmUgYXJyYXkuIENvcGllcyB0aGUgc291cmNlLgorICBO
YXRpdmVBcnJheShjb25zdCBFbGVtZW50KiBhcnJheSwgc2l6ZV90IGNvdW50LCBSZWxhdGlvblRv
U291cmNlQ29weSkgeworICAgIEluaXRDb3B5KGFycmF5LCBjb3VudCk7CisgIH0KKworICAvLyBD
b3B5IGNvbnN0cnVjdG9yLgorICBOYXRpdmVBcnJheShjb25zdCBOYXRpdmVBcnJheSYgcmhzKSB7
CisgICAgKHRoaXMtPipyaHMuY2xvbmVfKShyaHMuYXJyYXlfLCByaHMuc2l6ZV8pOworICB9CisK
KyAgfk5hdGl2ZUFycmF5KCkgeworICAgIGlmIChjbG9uZV8gIT0gJk5hdGl2ZUFycmF5OjpJbml0
UmVmKQorICAgICAgZGVsZXRlW10gYXJyYXlfOworICB9CisKKyAgLy8gU1RMLXN0eWxlIGNvbnRh
aW5lciBtZXRob2RzLgorICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVfOyB9Cisg
IGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gYXJyYXlfOyB9CisgIGNvbnN0
X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGFycmF5XyArIHNpemVfOyB9CisgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBOYXRpdmVBcnJheSYgcmhzKSBjb25zdCB7CisgICAgcmV0dXJuIHNp
emUoKSA9PSByaHMuc2l6ZSgpICYmCisgICAgICAgIEFycmF5RXEoYmVnaW4oKSwgc2l6ZSgpLCBy
aHMuYmVnaW4oKSk7CisgIH0KKworIHByaXZhdGU6CisgIGVudW0geworICAgIGtDaGVja1R5cGVJ
c05vdENvbnN0T3JBUmVmZXJlbmNlID0gU3RhdGljQXNzZXJ0VHlwZUVxSGVscGVyPAorICAgICAg
ICBFbGVtZW50LCBHVEVTVF9SRU1PVkVfUkVGRVJFTkNFX0FORF9DT05TVF8oRWxlbWVudCk+Ojp2
YWx1ZQorICB9OworCisgIC8vIEluaXRpYWxpemVzIHRoaXMgb2JqZWN0IHdpdGggYSBjb3B5IG9m
IHRoZSBpbnB1dC4KKyAgdm9pZCBJbml0Q29weShjb25zdCBFbGVtZW50KiBhcnJheSwgc2l6ZV90
IGFfc2l6ZSkgeworICAgIEVsZW1lbnQqIGNvbnN0IGNvcHkgPSBuZXcgRWxlbWVudFthX3NpemVd
OworICAgIENvcHlBcnJheShhcnJheSwgYV9zaXplLCBjb3B5KTsKKyAgICBhcnJheV8gPSBjb3B5
OworICAgIHNpemVfID0gYV9zaXplOworICAgIGNsb25lXyA9ICZOYXRpdmVBcnJheTo6SW5pdENv
cHk7CisgIH0KKworICAvLyBJbml0aWFsaXplcyB0aGlzIG9iamVjdCB3aXRoIGEgcmVmZXJlbmNl
IG9mIHRoZSBpbnB1dC4KKyAgdm9pZCBJbml0UmVmKGNvbnN0IEVsZW1lbnQqIGFycmF5LCBzaXpl
X3QgYV9zaXplKSB7CisgICAgYXJyYXlfID0gYXJyYXk7CisgICAgc2l6ZV8gPSBhX3NpemU7Cisg
ICAgY2xvbmVfID0gJk5hdGl2ZUFycmF5OjpJbml0UmVmOworICB9CisKKyAgY29uc3QgRWxlbWVu
dCogYXJyYXlfOworICBzaXplX3Qgc2l6ZV87CisgIHZvaWQgKE5hdGl2ZUFycmF5OjoqY2xvbmVf
KShjb25zdCBFbGVtZW50Kiwgc2l6ZV90KTsKKworICBHVEVTVF9ESVNBTExPV19BU1NJR05fKE5h
dGl2ZUFycmF5KTsKK307CisKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNw
YWNlIHRlc3RpbmcKIAotI2RlZmluZSBHVEVTVF9NRVNTQUdFXyhtZXNzYWdlLCByZXN1bHRfdHlw
ZSkgXAotICA6OnRlc3Rpbmc6OmludGVybmFsOjpBc3NlcnRIZWxwZXIocmVzdWx0X3R5cGUsIF9f
RklMRV9fLCBfX0xJTkVfXywgbWVzc2FnZSkgXAorI2RlZmluZSBHVEVTVF9NRVNTQUdFX0FUXyhm
aWxlLCBsaW5lLCBtZXNzYWdlLCByZXN1bHRfdHlwZSkgXAorICA6OnRlc3Rpbmc6OmludGVybmFs
OjpBc3NlcnRIZWxwZXIocmVzdWx0X3R5cGUsIGZpbGUsIGxpbmUsIG1lc3NhZ2UpIFwKICAgICA9
IDo6dGVzdGluZzo6TWVzc2FnZSgpCiAKKyNkZWZpbmUgR1RFU1RfTUVTU0FHRV8obWVzc2FnZSwg
cmVzdWx0X3R5cGUpIFwKKyAgR1RFU1RfTUVTU0FHRV9BVF8oX19GSUxFX18sIF9fTElORV9fLCBt
ZXNzYWdlLCByZXN1bHRfdHlwZSkKKwogI2RlZmluZSBHVEVTVF9GQVRBTF9GQUlMVVJFXyhtZXNz
YWdlKSBcCiAgIHJldHVybiBHVEVTVF9NRVNTQUdFXyhtZXNzYWdlLCA6OnRlc3Rpbmc6OlRlc3RQ
YXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlKQogCkBAIC04MDAsNyArMTIwOCw3IEBAIGNsYXNzIEdU
RVNUX0FQSV8gUmFuZG9tIHsKICNkZWZpbmUgR1RFU1RfU1VDQ0VTU18obWVzc2FnZSkgXAogICBH
VEVTVF9NRVNTQUdFXyhtZXNzYWdlLCA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OjprU3VjY2Vz
cykKIAotLy8gU3VwcHJlc3NlcyBNU1ZDIHdhcm5pbmdzIDQwNzIgKHVucmVhY2hhYmxlIGNvZGUp
IGZvciB0aGUgY29kZSBmb2xsb3dpbmcKKy8vIFN1cHByZXNzIE1TVkMgd2FybmluZyA0NzAyICh1
bnJlYWNoYWJsZSBjb2RlKSBmb3IgdGhlIGNvZGUgZm9sbG93aW5nCiAvLyBzdGF0ZW1lbnQgaWYg
aXQgcmV0dXJucyBvciB0aHJvd3MgKG9yIGRvZXNuJ3QgcmV0dXJuIG9yIHRocm93IGluIHNvbWUK
IC8vIHNpdHVhdGlvbnMpLgogI2RlZmluZSBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RF
X1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCkgXApAQCAtODA4LDcgKzEyMTYsNyBAQCBjbGFzcyBH
VEVTVF9BUElfIFJhbmRvbSB7CiAKICNkZWZpbmUgR1RFU1RfVEVTVF9USFJPV18oc3RhdGVtZW50
LCBleHBlY3RlZF9leGNlcHRpb24sIGZhaWwpIFwKICAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxP
Q0tFUl8gXAotICBpZiAoY29uc3QgY2hhciogZ3Rlc3RfbXNnID0gIiIpIHsgXAorICBpZiAoOjp0
ZXN0aW5nOjppbnRlcm5hbDo6Q29uc3RDaGFyUHRyIGd0ZXN0X21zZyA9ICIiKSB7IFwKICAgICBi
b29sIGd0ZXN0X2NhdWdodF9leHBlY3RlZCA9IGZhbHNlOyBcCiAgICAgdHJ5IHsgXAogICAgICAg
R1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQp
OyBcCkBAIC04MTcsMzggKzEyMjUsMzggQEAgY2xhc3MgR1RFU1RfQVBJXyBSYW5kb20gewogICAg
ICAgZ3Rlc3RfY2F1Z2h0X2V4cGVjdGVkID0gdHJ1ZTsgXAogICAgIH0gXAogICAgIGNhdGNoICgu
Li4pIHsgXAotICAgICAgZ3Rlc3RfbXNnID0gIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJv
d3MgYW4gZXhjZXB0aW9uIG9mIHR5cGUgIiBcCi0gICAgICAgICAgICAgICAgICAjZXhwZWN0ZWRf
ZXhjZXB0aW9uICIuXG4gIEFjdHVhbDogaXQgdGhyb3dzIGEgZGlmZmVyZW50ICIgXAotICAgICAg
ICAgICAgICAgICAgInR5cGUuIjsgXAorICAgICAgZ3Rlc3RfbXNnLnZhbHVlID0gXAorICAgICAg
ICAgICJFeHBlY3RlZDogIiAjc3RhdGVtZW50ICIgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiB0eXBl
ICIgXAorICAgICAgICAgICNleHBlY3RlZF9leGNlcHRpb24gIi5cbiAgQWN0dWFsOiBpdCB0aHJv
d3MgYSBkaWZmZXJlbnQgdHlwZS4iOyBcCiAgICAgICBnb3RvIEdURVNUX0NPTkNBVF9UT0tFTl8o
Z3Rlc3RfbGFiZWxfdGVzdHRocm93XywgX19MSU5FX18pOyBcCiAgICAgfSBcCiAgICAgaWYgKCFn
dGVzdF9jYXVnaHRfZXhwZWN0ZWQpIHsgXAotICAgICAgZ3Rlc3RfbXNnID0gIkV4cGVjdGVkOiAi
ICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5cGUgIiBcCi0gICAgICAgICAg
ICAgICAgICAjZXhwZWN0ZWRfZXhjZXB0aW9uICIuXG4gIEFjdHVhbDogaXQgdGhyb3dzIG5vdGhp
bmcuIjsgXAorICAgICAgZ3Rlc3RfbXNnLnZhbHVlID0gXAorICAgICAgICAgICJFeHBlY3RlZDog
IiAjc3RhdGVtZW50ICIgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiB0eXBlICIgXAorICAgICAgICAg
ICNleHBlY3RlZF9leGNlcHRpb24gIi5cbiAgQWN0dWFsOiBpdCB0aHJvd3Mgbm90aGluZy4iOyBc
CiAgICAgICBnb3RvIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdHRocm93Xywg
X19MSU5FX18pOyBcCiAgICAgfSBcCiAgIH0gZWxzZSBcCiAgICAgR1RFU1RfQ09OQ0FUX1RPS0VO
XyhndGVzdF9sYWJlbF90ZXN0dGhyb3dfLCBfX0xJTkVfXyk6IFwKLSAgICAgIGZhaWwoZ3Rlc3Rf
bXNnKQorICAgICAgZmFpbChndGVzdF9tc2cudmFsdWUpCiAKICNkZWZpbmUgR1RFU1RfVEVTVF9O
T19USFJPV18oc3RhdGVtZW50LCBmYWlsKSBcCiAgIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NL
RVJfIFwKLSAgaWYgKGNvbnN0IGNoYXIqIGd0ZXN0X21zZyA9ICIiKSB7IFwKKyAgaWYgKDo6dGVz
dGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBcCiAgICAgdHJ5IHsgXAogICAgICAgR1RF
U1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBc
CiAgICAgfSBcCiAgICAgY2F0Y2ggKC4uLikgeyBcCi0gICAgICBndGVzdF9tc2cgPSAiRXhwZWN0
ZWQ6ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgdGhyb3cgYW4gZXhjZXB0aW9uLlxuIiBcCi0gICAg
ICAgICAgICAgICAgICAiICBBY3R1YWw6IGl0IHRocm93cy4iOyBcCiAgICAgICBnb3RvIEdURVNU
X0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdG5vdGhyb3dfLCBfX0xJTkVfXyk7IFwKICAg
ICB9IFwKICAgfSBlbHNlIFwKICAgICBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rl
c3Rub3Rocm93XywgX19MSU5FX18pOiBcCi0gICAgICBmYWlsKGd0ZXN0X21zZykKKyAgICAgIGZh
aWwoIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiBkb2Vzbid0IHRocm93IGFuIGV4Y2VwdGlvbi5c
biIgXAorICAgICAgICAgICAiICBBY3R1YWw6IGl0IHRocm93cy4iKQogCiAjZGVmaW5lIEdURVNU
X1RFU1RfQU5ZX1RIUk9XXyhzdGF0ZW1lbnQsIGZhaWwpIFwKICAgR1RFU1RfQU1CSUdVT1VTX0VM
U0VfQkxPQ0tFUl8gXAotICBpZiAoY29uc3QgY2hhciogZ3Rlc3RfbXNnID0gIiIpIHsgXAorICBp
ZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKICAgICBib29sIGd0ZXN0
X2NhdWdodF9hbnkgPSBmYWxzZTsgXAogICAgIHRyeSB7IFwKICAgICAgIEdURVNUX1NVUFBSRVNT
X1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KTsgXApAQCAtODU3LDEz
ICsxMjY1LDEyIEBAIGNsYXNzIEdURVNUX0FQSV8gUmFuZG9tIHsKICAgICAgIGd0ZXN0X2NhdWdo
dF9hbnkgPSB0cnVlOyBcCiAgICAgfSBcCiAgICAgaWYgKCFndGVzdF9jYXVnaHRfYW55KSB7IFwK
LSAgICAgIGd0ZXN0X21zZyA9ICJFeHBlY3RlZDogIiAjc3RhdGVtZW50ICIgdGhyb3dzIGFuIGV4
Y2VwdGlvbi5cbiIgXAotICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBpdCBkb2Vzbid0LiI7
IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0YW55dGhy
b3dfLCBfX0xJTkVfXyk7IFwKICAgICB9IFwKICAgfSBlbHNlIFwKICAgICBHVEVTVF9DT05DQVRf
VE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3Rhbnl0aHJvd18sIF9fTElORV9fKTogXAotICAgICAgZmFp
bChndGVzdF9tc2cpCisgICAgICBmYWlsKCJFeHBlY3RlZDogIiAjc3RhdGVtZW50ICIgdGhyb3dz
IGFuIGV4Y2VwdGlvbi5cbiIgXAorICAgICAgICAgICAiICBBY3R1YWw6IGl0IGRvZXNuJ3QuIikK
IAogCiAvLyBJbXBsZW1lbnRzIEJvb2xlYW4gdGVzdCBhc3NlcnRpb25zIHN1Y2ggYXMgRVhQRUNU
X1RSVUUuIGV4cHJlc3Npb24gY2FuIGJlCkBAIC04ODAsMTggKzEyODcsMTcgQEAgY2xhc3MgR1RF
U1RfQVBJXyBSYW5kb20gewogCiAjZGVmaW5lIEdURVNUX1RFU1RfTk9fRkFUQUxfRkFJTFVSRV8o
c3RhdGVtZW50LCBmYWlsKSBcCiAgIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKLSAg
aWYgKGNvbnN0IGNoYXIqIGd0ZXN0X21zZyA9ICIiKSB7IFwKKyAgaWYgKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBcCiAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SGFzTmV3
RmF0YWxGYWlsdXJlSGVscGVyIGd0ZXN0X2ZhdGFsX2ZhaWx1cmVfY2hlY2tlcjsgXAogICAgIEdU
RVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KTsg
XAogICAgIGlmIChndGVzdF9mYXRhbF9mYWlsdXJlX2NoZWNrZXIuaGFzX25ld19mYXRhbF9mYWls
dXJlKCkpIHsgXAotICAgICAgZ3Rlc3RfbXNnID0gIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiBk
b2Vzbid0IGdlbmVyYXRlIG5ldyBmYXRhbCAiIFwKLSAgICAgICAgICAgICAgICAgICJmYWlsdXJl
cyBpbiB0aGUgY3VycmVudCB0aHJlYWQuXG4iIFwKLSAgICAgICAgICAgICAgICAgICIgIEFjdHVh
bDogaXQgZG9lcy4iOyBcCiAgICAgICBnb3RvIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFi
ZWxfdGVzdG5vZmF0YWxfLCBfX0xJTkVfXyk7IFwKICAgICB9IFwKICAgfSBlbHNlIFwKICAgICBH
VEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3Rub2ZhdGFsXywgX19MSU5FX18pOiBc
Ci0gICAgICBmYWlsKGd0ZXN0X21zZykKKyAgICAgIGZhaWwoIkV4cGVjdGVkOiAiICNzdGF0ZW1l
bnQgIiBkb2Vzbid0IGdlbmVyYXRlIG5ldyBmYXRhbCAiIFwKKyAgICAgICAgICAgImZhaWx1cmVz
IGluIHRoZSBjdXJyZW50IHRocmVhZC5cbiIgXAorICAgICAgICAgICAiICBBY3R1YWw6IGl0IGRv
ZXMuIikKIAogLy8gRXhwYW5kcyB0byB0aGUgbmFtZSBvZiB0aGUgY2xhc3MgdGhhdCBpbXBsZW1l
bnRzIHRoZSBnaXZlbiB0ZXN0LgogI2RlZmluZSBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3Rf
Y2FzZV9uYW1lLCB0ZXN0X25hbWUpIFwKQEAgLTkwNCw3ICsxMzEwLDcgQEAgY2xhc3MgR1RFU1Rf
VEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSA6IHB1YmxpYyBwYXJl
bnRfY2xhc3Mge1wKICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVz
dF9uYW1lKSgpIHt9XAogIHByaXZhdGU6XAogICB2aXJ0dWFsIHZvaWQgVGVzdEJvZHkoKTtcCi0g
IHN0YXRpYyA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm9fO1wKKyAgc3RhdGlj
IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mb18gR1RFU1RfQVRUUklCVVRFX1VO
VVNFRF87XAogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFwKICAgICAgIEdURVNU
X1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkpO1wKIH07XApAQCAt
OTEyLDcgKzEzMTgsOCBAQCBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9u
YW1lLCB0ZXN0X25hbWUpIDogcHVibGljIHBhcmVudF9jbGFzcyB7XAogOjp0ZXN0aW5nOjpUZXN0
SW5mbyogY29uc3QgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9u
YW1lKVwKICAgOjp0ZXN0X2luZm9fID1cCiAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TWFrZUFu
ZFJlZ2lzdGVyVGVzdEluZm8oXAotICAgICAgICAjdGVzdF9jYXNlX25hbWUsICN0ZXN0X25hbWUs
ICIiLCAiIiwgXAorICAgICAgICAjdGVzdF9jYXNlX25hbWUsICN0ZXN0X25hbWUsIE5VTEwsIE5V
TEwsIFwKKyAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKF9fRklMRV9f
LCBfX0xJTkVfXyksIFwKICAgICAgICAgKHBhcmVudF9pZCksIFwKICAgICAgICAgcGFyZW50X2Ns
YXNzOjpTZXRVcFRlc3RDYXNlLCBcCiAgICAgICAgIHBhcmVudF9jbGFzczo6VGVhckRvd25UZXN0
Q2FzZSwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9p
bmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaAppbmRleCA1NDBlZjRjZDQ0
ZTcyYjU1ODY1NzA4MWE1ZjA3YTBmMjhiM2U0MGUzLi4wODJiODcyODlhZTE3YzhhYTdiOTZkOGU4
YzkyYjk2ZTAxOGM3NjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaApAQCAt
MjcsOCArMjcsNiBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogLy8KLS8vIEF1
dGhvcnM6IERhbiBFZ25vciAoZWdub3JAZ29vZ2xlLmNvbSkKLS8vCiAvLyBBICJzbWFydCIgcG9p
bnRlciB0eXBlIHdpdGggcmVmZXJlbmNlIHRyYWNraW5nLiAgRXZlcnkgcG9pbnRlciB0byBhCiAv
LyBwYXJ0aWN1bGFyIG9iamVjdCBpcyBrZXB0IG9uIGEgY2lyY3VsYXIgbGlua2VkIGxpc3QuICBX
aGVuIHRoZSBsYXN0IHBvaW50ZXIKIC8vIHRvIGFuIG9iamVjdCBpcyBkZXN0cm95ZWQgb3IgcmVh
c3NpZ25lZCwgdGhlIG9iamVjdCBpcyBkZWxldGVkLgpAQCAtNjIsMTYgKzYwLDE4IEBACiAvLyAg
ICAgICByYXcgcG9pbnRlciAoZS5nLiB2aWEgZ2V0KCkpIGNvbmN1cnJlbnRseSwgYW5kCiAvLyAg
ICAgLSBpdCdzIHNhZmUgdG8gd3JpdGUgdG8gdHdvIGxpbmtlZF9wdHJzIHRoYXQgcG9pbnQgdG8g
dGhlIHNhbWUKIC8vICAgICAgIHNoYXJlZCBvYmplY3QgY29uY3VycmVudGx5LgotLy8gVE9ETyh3
YW5AZ29vZ2xlLmNvbSk6IHJlbmFtZSB0aGlzIHRvIHNhZmVfbGlua2VkX3B0ciB0byBhdm9pZAor
Ly8gRklYTUU6IHJlbmFtZSB0aGlzIHRvIHNhZmVfbGlua2VkX3B0ciB0byBhdm9pZAogLy8gY29u
ZnVzaW9uIHdpdGggbm9ybWFsIGxpbmtlZF9wdHIuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERP
IE5PVCBERUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNU
X0xJTktFRF9QVFJfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVT
VF9MSU5LRURfUFRSX0hfCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxhc3NlcnQu
aD4KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KKyNpbmNsdWRlICJn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVz
cGFjZSBpbnRlcm5hbCB7CkBAIC0xMDUsMjUgKzEwNSwzNSBAQCBjbGFzcyBsaW5rZWRfcHRyX2lu
dGVybmFsIHsKICAgLy8gZnJhbWV3b3JrLgogCiAgIC8vIEpvaW4gYW4gZXhpc3RpbmcgY2lyY2xl
LgotICAvLyBMIDwgZ19saW5rZWRfcHRyX211dGV4Ci0gIHZvaWQgam9pbihsaW5rZWRfcHRyX2lu
dGVybmFsIGNvbnN0KiBwdHIpIHsKKyAgdm9pZCBqb2luKGxpbmtlZF9wdHJfaW50ZXJuYWwgY29u
c3QqIHB0cikKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGdfbGlua2VkX3B0cl9tdXRleCkg
ewogICAgIE11dGV4TG9jayBsb2NrKCZnX2xpbmtlZF9wdHJfbXV0ZXgpOwogCiAgICAgbGlua2Vk
X3B0cl9pbnRlcm5hbCBjb25zdCogcCA9IHB0cjsKLSAgICB3aGlsZSAocC0+bmV4dF8gIT0gcHRy
KSBwID0gcC0+bmV4dF87CisgICAgd2hpbGUgKHAtPm5leHRfICE9IHB0cikgeworICAgICAgYXNz
ZXJ0KHAtPm5leHRfICE9IHRoaXMgJiYKKyAgICAgICAgICAgICAiVHJ5aW5nIHRvIGpvaW4oKSBh
IGxpbmtlZCByaW5nIHdlIGFyZSBhbHJlYWR5IGluLiAiCisgICAgICAgICAgICAgIklzIEdNb2Nr
IHRocmVhZCBzYWZldHkgZW5hYmxlZD8iKTsKKyAgICAgIHAgPSBwLT5uZXh0XzsKKyAgICB9CiAg
ICAgcC0+bmV4dF8gPSB0aGlzOwogICAgIG5leHRfID0gcHRyOwogICB9CiAKICAgLy8gTGVhdmUg
d2hhdGV2ZXIgY2lyY2xlIHdlJ3JlIHBhcnQgb2YuICBSZXR1cm5zIHRydWUgaWYgd2Ugd2VyZSB0
aGUKICAgLy8gbGFzdCBtZW1iZXIgb2YgdGhlIGNpcmNsZS4gIE9uY2UgdGhpcyBpcyBkb25lLCB5
b3UgY2FuIGpvaW4oKSBhbm90aGVyLgotICAvLyBMIDwgZ19saW5rZWRfcHRyX211dGV4Ci0gIGJv
b2wgZGVwYXJ0KCkgeworICBib29sIGRlcGFydCgpCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVE
XyhnX2xpbmtlZF9wdHJfbXV0ZXgpIHsKICAgICBNdXRleExvY2sgbG9jaygmZ19saW5rZWRfcHRy
X211dGV4KTsKIAogICAgIGlmIChuZXh0XyA9PSB0aGlzKSByZXR1cm4gdHJ1ZTsKICAgICBsaW5r
ZWRfcHRyX2ludGVybmFsIGNvbnN0KiBwID0gbmV4dF87Ci0gICAgd2hpbGUgKHAtPm5leHRfICE9
IHRoaXMpIHAgPSBwLT5uZXh0XzsKKyAgICB3aGlsZSAocC0+bmV4dF8gIT0gdGhpcykgeworICAg
ICAgYXNzZXJ0KHAtPm5leHRfICE9IG5leHRfICYmCisgICAgICAgICAgICAgIlRyeWluZyB0byBk
ZXBhcnQoKSBhIGxpbmtlZCByaW5nIHdlIGFyZSBub3QgaW4uICIKKyAgICAgICAgICAgICAiSXMg
R01vY2sgdGhyZWFkIHNhZmV0eSBlbmFibGVkPyIpOworICAgICAgcCA9IHAtPm5leHRfOworICAg
IH0KICAgICBwLT5uZXh0XyA9IG5leHRfOwogICAgIHJldHVybiBmYWxzZTsKICAgfQpAQCAtMTcy
LDE1ICsxODIsNiBAQCBjbGFzcyBsaW5rZWRfcHRyIHsKICAgVCogZ2V0KCkgY29uc3QgeyByZXR1
cm4gdmFsdWVfOyB9CiAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0K
ICAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKnZhbHVlXzsgfQotICAvLyBSZWxlYXNl
IG93bmVyc2hpcCBvZiB0aGUgcG9pbnRlZCBvYmplY3QgYW5kIHJldHVybnMgaXQuCi0gIC8vIFNv
bGUgb3duZXJzaGlwIGJ5IHRoaXMgbGlua2VkX3B0ciBvYmplY3QgaXMgcmVxdWlyZWQuCi0gIFQq
IHJlbGVhc2UoKSB7Ci0gICAgYm9vbCBsYXN0ID0gbGlua18uZGVwYXJ0KCk7Ci0gICAgYXNzZXJ0
KGxhc3QpOwotICAgIFQqIHYgPSB2YWx1ZV87Ci0gICAgdmFsdWVfID0gTlVMTDsKLSAgICByZXR1
cm4gdjsKLSAgfQogCiAgIGJvb2wgb3BlcmF0b3I9PShUKiBwKSBjb25zdCB7IHJldHVybiB2YWx1
ZV8gPT0gcDsgfQogICBib29sIG9wZXJhdG9yIT0oVCogcCkgY29uc3QgeyByZXR1cm4gdmFsdWVf
ICE9IHA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0
ZWQuaAppbmRleCA2MmI1YWUxM2UyOGU1NjZiMWU4ODUxMjdkYmIwN2NkMTcyYTI2ZjE5Li5mNGRm
NTk5MTkwNTcyZTdiMDllOWQ3YjBjZTg5OTQ3MmRjN2ViOTE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwt
Z2VuZXJhdGVkLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9p
bnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oCkBAIC0xLDQgKzEsNiBAQAotLy8g
VGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgYSBzY3JpcHQuICBETyBOT1QgRURJVCBCWSBIQU5E
ISEhCisvLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBjb21tYW5kOgorLy8gICAgIHB1bXAu
cHkgZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCisvLyBETyBOT1QgRURJVCBCWSBI
QU5EISEhCiAKIC8vIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJbmMuCiAvLyBBbGwgUmlnaHRzIFJl
c2VydmVkLgpAQCAtMjgsOCArMzAsNyBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBM
b3NldikKKwogCiAvLyBUeXBlIGFuZCBmdW5jdGlvbiB1dGlsaXRpZXMgZm9yIGltcGxlbWVudGlu
ZyBwYXJhbWV0ZXJpemVkIHRlc3RzLgogLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBhIFND
UklQVC4gIERPIE5PVCBFRElUIEJZIEhBTkQhCkBAIC00MSwxNiArNDIsMTMgQEAKIC8vIGJ5IHRo
ZSBtYXhpbXVtIGFyaXR5IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0dXBsZSB3aGljaCBpcwog
Ly8gY3VycmVudGx5IHNldCBhdCAxMC4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERF
TEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1f
VVRJTF9HRU5FUkFURURfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9H
VEVTVF9QQVJBTV9VVElMX0dFTkVSQVRFRF9IXwogCi0vLyBzY3JpcHRzL2Z1c2VfZ3Rlc3QucHkg
ZGVwZW5kcyBvbiBndGVzdCdzIG93biBoZWFkZXIgYmVpbmcgI2luY2x1ZGVkCi0vLyAqdW5jb25k
aXRpb25hbGx5Ki4gIFRoZXJlZm9yZSB0aGVzZSAjaW5jbHVkZXMgY2Fubm90IGJlIG1vdmVkCi0v
LyBpbnNpZGUgI2lmIEdURVNUX0hBU19QQVJBTV9URVNULgotI2luY2x1ZGUgPGd0ZXN0L2ludGVy
bmFsL2d0ZXN0LXBhcmFtLXV0aWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1w
b3J0Lmg+Ci0KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAorI2luY2x1ZGUgImd0ZXN0L2ludGVy
bmFsL2d0ZXN0LXBhcmFtLXV0aWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1w
b3J0LmgiCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIApAQCAtNTgsOCArNTYsOCBAQCBuYW1lc3Bh
Y2UgdGVzdGluZyB7CiAvLyBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC4KIHRlbXBs
YXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8
Ci0gICAgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2
YWx1ZV90eXBlPiBWYWx1ZXNJbigKLSAgICAgICAgRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLCBGb3J3
YXJkSXRlcmF0b3IgZW5kKTsKKyAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXRlcmF0
b3JUcmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4KK1ZhbHVlc0luKEZvcndhcmRJ
dGVyYXRvciBiZWdpbiwgRm9yd2FyZEl0ZXJhdG9yIGVuZCk7CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBULCBzaXplX3QgTj4KIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxUPiBWYWx1ZXNJbihjb25z
dCBUICgmYXJyYXkpW05dKTsKQEAgLTc3LDcgKzc1LDEwIEBAIGNsYXNzIFZhbHVlQXJyYXkxIHsK
ICAgZXhwbGljaXQgVmFsdWVBcnJheTEoVDEgdjEpIDogdjFfKHYxKSB7fQogCiAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsgcmV0
dXJuIFZhbHVlc0luKCZ2MV8sICZ2MV8gKyAxKTsgfQorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KX07CisgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKKyAgfQogCiAgcHJpdmF0ZToKICAgLy8g
Tm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtOTMsNyAr
OTQsNyBAQCBjbGFzcyBWYWx1ZUFycmF5MiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAg
IG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlb
XSA9IHt2MV8sIHYyX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYx
XyksIHN0YXRpY19jYXN0PFQ+KHYyXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAg
IH0KIApAQCAtMTEyLDcgKzExMyw4IEBAIGNsYXNzIFZhbHVlQXJyYXkzIHsKIAogICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0g
ICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M199OworICAgIGNvbnN0IFQgYXJyYXlb
XSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2M18pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAK
QEAgLTEzMyw3ICsxMzUsOCBAQCBjbGFzcyBWYWx1ZUFycmF5NCB7CiAKICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF99OworICAgIGNvbnN0IFQgYXJyYXlb
XSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pfTsKICAgICByZXR1cm4gVmFs
dWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTE1NSw3ICsxNTgsOCBAQCBjbGFzcyBWYWx1ZUFycmF5
NSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9y
PFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8s
IHY1X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRp
Y19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0
PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJh
eSk7CiAgIH0KIApAQCAtMTc5LDcgKzE4Myw5IEBAIGNsYXNzIFZhbHVlQXJyYXk2IHsKIAogICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25z
dCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl99
OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2Fz
dDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2
NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pfTsK
ICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTIwNCw3ICsyMTAsOSBAQCBj
bGFzcyBWYWx1ZUFycmF5NyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8s
IHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N199OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtz
dGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pfTsKICAgICBy
ZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTIzMSw3ICsyMzksOSBAQCBjbGFzcyBW
YWx1ZUFycmF5OCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFt
R2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywg
djNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMjU5
LDcgKzI2OSwxMCBAQCBjbGFzcyBWYWx1ZUFycmF5OSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlffTsK
KyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjlfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0yODgs
NyArMzAxLDEwIEBAIGNsYXNzIFZhbHVlQXJyYXkxMCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2
MTBffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyl9OwogICAgIHJldHVybiBWYWx1
ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMzE5LDcgKzMzNSwxMCBAQCBjbGFzcyBWYWx1ZUFycmF5
MTEgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRf
LCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExX307CisgICAgY29uc3QgVCBhcnJh
eVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+
KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3Xyks
IHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRp
Y19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKX07CiAgICAgcmV0dXJuIFZhbHVl
c0luKGFycmF5KTsKICAgfQogCkBAIC0zNTEsOCArMzcwLDExIEBAIGNsYXNzIFZhbHVlQXJyYXkx
MiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9y
PFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8s
IHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJffTsKKyAg
ICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
ICAgfQogCkBAIC0zODYsOCArNDA4LDExIEBAIGNsYXNzIFZhbHVlQXJyYXkxMyB7CiAKICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qg
ewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2
N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNffTsKKyAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyl9OwogICAgIHJldHVybiBW
YWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtNDIyLDggKzQ0NywxMSBAQCBjbGFzcyBWYWx1ZUFy
cmF5MTQgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywg
djRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywg
djEzXywgdjE0X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyks
IHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRp
Y19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2Fz
dDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+
KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5
KTsKICAgfQogCkBAIC00NTksOCArNDg3LDEyIEBAIGNsYXNzIFZhbHVlQXJyYXkxNSB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2
MTVffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyks
IHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKX07CiAg
ICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC00OTksOCArNTMxLDEyIEBAIGNs
YXNzIFZhbHVlQXJyYXkxNiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8s
IHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAg
ICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZffTsKKyAgICBjb25zdCBUIGFycmF5W10g
PSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nh
c3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2Xyl9OwogICAgIHJl
dHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtNTQwLDggKzU3NiwxMiBAQCBjbGFzcyBW
YWx1ZUFycmF5MTcgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8s
IHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAg
djEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3X307CisgICAgY29uc3QgVCBhcnJheVtd
ID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0
YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19j
YXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTdfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC01
ODIsOCArNjIyLDEzIEBAIGNsYXNzIFZhbHVlQXJyYXkxOCB7CiAKICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywgdjlf
LCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdf
LCB2MThffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3Rh
dGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nh
c3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+
KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEz
XyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwg
c3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MThfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBA
IC02MjUsOCArNjcwLDEzIEBAIGNsYXNzIFZhbHVlQXJyYXkxOSB7CiAKICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywg
djlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2
MTdfLCB2MThfLCB2MTlffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4o
djFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwg
c3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRp
Y19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nh
c3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5Xyl9OwogICAgIHJl
dHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtNjcwLDggKzcyMCwxMyBAQCBjbGFzcyBW
YWx1ZUFycmF5MjAgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8s
IHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAg
djEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwX307Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNf
Y2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0
PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC03MTcsOCArNzcyLDE0IEBAIGNsYXNz
IFZhbHVlQXJyYXkyMSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYy
XywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAg
ICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2
MjFffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyks
IHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCkBAIC03NjUsOCArODI2LDE0IEBAIGNsYXNzIFZhbHVlQXJyYXkyMiB7CiAK
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkg
Y29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1Xywg
djZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRf
LCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJffTsKKyAgICBj
b25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3Rh
dGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nh
c3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0
PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4o
djE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThf
KSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyl9OwogICAgIHJldHVybiBW
YWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtODE1LDkgKzg4MiwxNCBAQCBjbGFzcyBWYWx1ZUFy
cmF5MjMgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywg
djRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywg
djEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIy
XywKLSAgICAgICAgdjIzX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+
KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyks
IHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0
aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19j
YXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0
PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCkBAIC04NjcsOSArOTM5LDE1IEBAIGNsYXNzIFZhbHVlQXJyYXkyNCB7CiAK
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkg
Y29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1Xywg
djZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRf
LCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAot
ICAgICAgICB2MjRffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8
VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0
PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRf
KX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC05MjAsOSArOTk4LDE1
IEBAIGNsYXNzIFZhbHVlQXJyYXkyNSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9w
ZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9
IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFf
LAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlf
LCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVffTsKKyAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+
KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2
XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwg
c3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYy
M18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1Xyl9
OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtOTc1LDkgKzEwNTksMTUg
QEAgY2xhc3MgVmFsdWVBcnJheTI2IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3Bl
cmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0g
e3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8s
Ci0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8s
IHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl99OworICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2
Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBz
dGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNf
Y2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nh
c3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
OF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8
VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2
MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7
CiAgIH0KIApAQCAtMTAzMiw5ICsxMTIyLDE2IEBAIGNsYXNzIFZhbHVlQXJyYXkyNyB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2
MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAg
ICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3Rh
dGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nh
c3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4o
djEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJf
KSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+
KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5
XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYy
Nl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKX07CiAgICAgcmV0dXJuIFZhbHVlc0lu
KGFycmF5KTsKICAgfQogCkBAIC0xMDkwLDkgKzExODcsMTYgQEAgY2xhc3MgVmFsdWVBcnJheTI4
IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8
VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0Xywg
djVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18s
IHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYy
M18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF99OworICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2Fz
dDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2
N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBz
dGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwg
c3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0
aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNf
Y2FzdDxUPih2MjhfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0x
MTQ5LDkgKzEyNTMsMTYgQEAgY2xhc3MgVmFsdWVBcnJheTI5IHsKIAogICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29u
c3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2
OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYx
N18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYy
NV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0
aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2Fz
dDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2
MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8p
LCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4o
djE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlf
KSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBz
dGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwg
c3RhdGljX2Nhc3Q8VD4odjI5Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0K
IApAQCAtMTIxMCw5ICsxMzIxLDE3IEBAIGNsYXNzIFZhbHVlQXJyYXkzMCB7CiAKICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qgewot
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18s
IHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2
MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2
MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBffTsKKyAgICBjb25zdCBUIGFy
cmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8
VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdf
KSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3Rh
dGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0
YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRp
Y19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nh
c3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MzBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0xMjczLDkg
KzEzOTIsMTcgQEAgY2xhc3MgVmFsdWVBcnJheTMxIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBh
cnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYx
MF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYx
OF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYy
Nl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9
IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0
aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2Fz
dDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nh
c3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYy
MV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8
VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2
MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8p
LCBzdGF0aWNfY2FzdDxUPih2MzFfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAg
fQogCkBAIC0xMzM3LDkgKzE0NjQsMTcgQEAgY2xhc3MgVmFsdWVBcnJheTMyIHsKIAogICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7
Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3
XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8s
IHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAg
IHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl99Owor
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxU
Pih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8p
LCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0
aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2Fz
dDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nh
c3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxU
Pih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYy
N18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8
VD4odjMyXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIApAQCAtMTQwMyw5
ICsxNTM4LDE4IEBAIGNsYXNzIFZhbHVlQXJyYXkzMyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2
MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2
MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2
MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNffTsKKyAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+
KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2
XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwg
c3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYy
M18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCkBAIC0xNDcwLDkgKzE2MTQsMTggQEAgY2xhc3MgVmFsdWVBcnJheTM0IHsK
IAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4o
KSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVf
LCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYx
NF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18s
Ci0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8s
IHYzMl8sIHYzM18sIHYzNF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxU
Pih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18p
LCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3Rh
dGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nh
c3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
M18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
ICAgfQogCkBAIC0xNTM4LDEwICsxNjkxLDE4IEBAIGNsYXNzIFZhbHVlQXJyYXkzNSB7CiAKICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZf
LCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2
MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAg
ICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJf
LCB2MzNfLCB2MzRfLAotICAgICAgICB2MzVffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3Rh
dGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nh
c3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4o
djEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJf
KSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+
KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5
XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYy
Nl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3Rh
dGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8p
fTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTE2MDksMTAgKzE3NzAs
MTkgQEAgY2xhc3MgVmFsdWVBcnJheTM2IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAg
b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtd
ID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYx
MV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYx
OV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYy
N18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8sCi0gICAg
ICAgIHYzNl99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBz
dGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNf
Y2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8
VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2
MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8p
LCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4o
djIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJf
KSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBz
dGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwg
c3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0
aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzNl8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTE2
ODIsMTAgKzE4NTIsMTkgQEAgY2xhc3MgVmFsdWVBcnJheTM3IHsKIAogICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29u
c3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2
OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYx
N18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYy
NV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8s
IHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN199OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0
aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2Fz
dDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2
MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8p
LCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4o
djE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlf
KSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBz
dGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwg
c3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0
aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKX07CiAg
ICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0xNzU2LDEwICsxOTM1LDE5IEBA
IGNsYXNzIFZhbHVlQXJyYXkzOCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJh
dG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2
MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAot
ICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2
MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2
MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2
MzZfLCB2MzdfLCB2MzhffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4o
djFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwg
c3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRp
Y19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nh
c3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19j
YXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0
PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4o
djMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNf
KSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+
KHYzOF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTE4MzEsMTAg
KzIwMTksMjAgQEAgY2xhc3MgVmFsdWVBcnJheTM5IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBh
cnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYx
MF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYx
OF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYy
Nl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8s
Ci0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYzOV99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9
IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0
aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2Fz
dDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nh
c3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYy
MV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8
VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2
MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8p
LCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4o
djM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2Mzdf
KSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pfTsK
ICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTE5MDgsMTAgKzIxMDYsMjAg
QEAgY2xhc3MgVmFsdWVBcnJheTQwIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3Bl
cmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0g
e3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8s
Ci0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8s
IHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18s
IHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8sCi0gICAgICAg
IHYzNl8sIHYzN18sIHYzOF8sIHYzOV8sIHY0MF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtz
dGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNf
Y2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
Ml8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8
VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2
MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8p
LCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4o
djI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2Mjhf
KSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBz
dGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwg
c3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0
aWNfY2FzdDxUPih2NDBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBA
IC0xOTg3LDEwICsyMTk1LDIwIEBAIGNsYXNzIFZhbHVlQXJyYXk0MSB7CiAKICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4
XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZf
LCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRf
LCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2
MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFffTsK
KyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRp
Y19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nh
c3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19j
YXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8
VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0
PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4o
djM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZf
KSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+
KHY0MV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTIwNjcsMTAg
KzIyODUsMjEgQEAgY2xhc3MgVmFsdWVBcnJheTQyIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBh
cnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYx
MF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYx
OF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYy
Nl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8s
Ci0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYzOV8sIHY0MF8sIHY0MV8sIHY0Ml99OworICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2
Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBz
dGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNf
Y2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nh
c3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
OF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8
VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2
MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18p
LCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4o
djMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRf
KSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBz
dGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQx
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0Ml8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4o
YXJyYXkpOwogICB9CiAKQEAgLTIxNDgsMTAgKzIzNzcsMjEgQEAgY2xhc3MgVmFsdWVBcnJheTQz
IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8
VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0Xywg
djVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18s
IHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYy
M18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYz
MV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYz
OV8sIHY0MF8sIHY0MV8sIHY0Ml8sIHY0M199OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0
aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2Fz
dDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2
MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8p
LCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4o
djE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlf
KSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBz
dGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwg
c3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0
aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNf
Y2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY0Ml8pLCBzdGF0aWNfY2FzdDxUPih2NDNfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCkBAIC0yMjMxLDEwICsyNDcxLDIxIEBAIGNsYXNzIFZhbHVlQXJyYXk0NCB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2
MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNf
LAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFf
LCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2Mzlf
LCB2NDBfLCB2NDFfLCB2NDJfLCB2NDNfLCB2NDRffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7
c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGlj
X2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8
VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0
PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4o
djE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+
KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4
XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwg
c3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYz
NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3Xyks
IHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3Rh
dGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8p
fTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTIzMTUsMTAgKzI1NjYs
MjIgQEAgY2xhc3MgVmFsdWVBcnJheTQ1IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAg
b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtd
ID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYx
MV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYx
OV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYy
N18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8sCi0gICAg
ICAgIHYzNl8sIHYzN18sIHYzOF8sIHYzOV8sIHY0MF8sIHY0MV8sIHY0Ml8sIHY0M18sIHY0NF8s
IHY0NV99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0
aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2Fz
dDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4o
djExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNf
KSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBz
dGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIw
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwg
c3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0
aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3Rh
dGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNf
Y2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2NDBfKSwgc3RhdGlj
X2Nhc3Q8VD4odjQxXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0Ml8pLCBzdGF0aWNfY2Fz
dDxUPih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4odjQ0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY0NV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTI0MDEsMTAg
KzI2NjQsMjIgQEAgY2xhc3MgVmFsdWVBcnJheTQ2IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBh
cnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYx
MF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYx
OF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYy
Nl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8s
Ci0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYzOV8sIHY0MF8sIHY0MV8sIHY0Ml8sIHY0M18s
IHY0NF8sIHY0NV8sIHY0Nl99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxU
Pih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18p
LCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3Rh
dGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nh
c3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
M18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8
VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2
NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0Ml8p
LCBzdGF0aWNfY2FzdDxUPih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4odjQ0XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY0NV8pLCBzdGF0aWNfY2FzdDxUPih2NDZfKX07CiAgICAgcmV0dXJuIFZh
bHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0yNDg5LDExICsyNzY0LDIyIEBAIGNsYXNzIFZhbHVl
QXJyYXk0NyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNf
LCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJf
LCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2
MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2
MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2
MzhfLCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJfLCB2NDNfLCB2NDRfLCB2NDVfLCB2NDZfLAotICAg
ICAgICB2NDdffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0
PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4o
djEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVf
KSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+
KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIy
XyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYy
OV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyks
IHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0
YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGlj
X2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2NDVfKSwgc3RhdGljX2Nhc3Q8VD4odjQ2XyksIHN0YXRpY19jYXN0PFQ+KHY0N18pfTsK
ICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTI1NzksMTEgKzI4NjUsMjMg
QEAgY2xhc3MgVmFsdWVBcnJheTQ4IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3Bl
cmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0g
e3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8s
Ci0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8s
IHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18s
IHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8sCi0gICAgICAg
IHYzNl8sIHYzN18sIHYzOF8sIHYzOV8sIHY0MF8sIHY0MV8sIHY0Ml8sIHY0M18sIHY0NF8sIHY0
NV8sIHY0Nl8sIHY0N18sCi0gICAgICAgIHY0OF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtz
dGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNf
Y2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
Ml8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8
VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2
MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8p
LCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4o
djI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2Mjhf
KSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBz
dGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwg
c3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0
aWNfY2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY0Ml8pLCBzdGF0aWNfY2FzdDxUPih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4odjQ0Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0NV8pLCBzdGF0aWNfY2FzdDxUPih2NDZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjQ3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0OF8pfTsKICAgICBy
ZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTI2NzAsMTEgKzI5NjgsMjMgQEAgY2xh
c3MgVmFsdWVBcnJheTQ5IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3Ig
UGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywg
djJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAg
ICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8s
IHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8s
IHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM18sIHYzNF8sIHYzNV8sCi0gICAgICAgIHYzNl8s
IHYzN18sIHYzOF8sIHYzOV8sIHY0MF8sIHY0MV8sIHY0Ml8sIHY0M18sIHY0NF8sIHY0NV8sIHY0
Nl8sIHY0N18sCi0gICAgICAgIHY0OF8sIHY0OV99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtz
dGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNf
Y2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
Ml8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8
VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2
MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8p
LCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4o
djI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2Mjhf
KSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBz
dGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwg
c3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0
aWNfY2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY0Ml8pLCBzdGF0aWNfY2FzdDxUPih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4odjQ0Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0NV8pLCBzdGF0aWNfY2FzdDxUPih2NDZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjQ3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0OF8pLCBzdGF0aWNf
Y2FzdDxUPih2NDlfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCkBAIC0y
NzYyLDExICszMDcyLDIzIEBAIGNsYXNzIFZhbHVlQXJyYXk1MCB7CiAKICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywg
djlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2
MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2
MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRf
LCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJf
LCB2NDNfLCB2NDRfLCB2NDVfLCB2NDZfLCB2NDdfLAotICAgICAgICB2NDhfLCB2NDlfLCB2NTBf
fTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4o
djRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwg
c3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0
YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRp
Y19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nh
c3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19j
YXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8
VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0
PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4o
djQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDVf
KSwgc3RhdGljX2Nhc3Q8VD4odjQ2XyksIHN0YXRpY19jYXN0PFQ+KHY0N18pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2NDhfKSwgc3RhdGljX2Nhc3Q8VD4odjQ5XyksIHN0YXRpY19jYXN0PFQ+
KHY1MF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTI4MjYsNyAr
MzE0OCw3IEBAIGNsYXNzIFZhbHVlQXJyYXk1MCB7CiAgIGNvbnN0IFQ1MCB2NTBfOwogfTsKIAot
I2lmIEdURVNUX0hBU19DT01CSU5FCisjIGlmIEdURVNUX0hBU19DT01CSU5FCiAvLyBJTlRFUk5B
TCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgogLy8KIC8vIEdlbmVy
YXRlcyB2YWx1ZXMgZnJvbSB0aGUgQ2FydGVzaWFuIHByb2R1Y3Qgb2YgdmFsdWVzIHByb2R1Y2Vk
CkBAIC0yODM0LDkgKzMxNTYsOSBAQCBjbGFzcyBWYWx1ZUFycmF5NTAgewogLy8KIHRlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJh
dG9yMgotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHVwbGU8
VDEsIFQyPiA+IHsKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0
aW5nOjp0dXBsZTxUMSwgVDI+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8
VDEsIFQyPiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDI+IFBh
cmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMihjb25zdCBQYXJhbUdlbmVy
YXRvcjxUMT4mIGcxLAogICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBnMikKQEAgLTI4
ODIsNyArMzIwNCw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IyCiAgICAgdmly
dHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3Qgewog
ICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwgY29u
c3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9
CisgICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiBj
dXJyZW50X3ZhbHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFy
YW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAgICAgLy8g
SGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIK
ICAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2Fz
dC4KQEAgLTI5MTQsNyArMzIzNiw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3Iy
CiAKICAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkp
Ci0gICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50
Ml8pOworICAgICAgICBjdXJyZW50X3ZhbHVlXy5yZXNldChuZXcgUGFyYW1UeXBlKCpjdXJyZW50
MV8sICpjdXJyZW50Ml8pKTsKICAgICB9CiAgICAgYm9vbCBBdEVuZCgpIGNvbnN0IHsKICAgICAg
IC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2hl
biBlaXRoZXIgb2YgdGhlCkBAIC0yOTM2LDcgKzMyNTgsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yMgogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRl
cmF0b3IgYmVnaW4yXzsKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0
ZXJhdG9yIGVuZDJfOwogICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3Ig
Y3VycmVudDJfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKKyAgICBsaW5rZWRfcHRy
PFBhcmFtVHlwZT4gY3VycmVudF92YWx1ZV87CiAgIH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yMjo6SXRlcmF0b3IKIAogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2ln
bm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC0yOTQ5LDkgKzMyNzEsOSBAQCBjbGFzcyBDYXJ0ZXNp
YW5Qcm9kdWN0R2VuZXJhdG9yMgogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMz4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IzCi0gICAgOiBw
dWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzPiA+
IHsKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBs
ZTxUMSwgVDIsIFQzPiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnR1cGxlPFQxLCBU
MiwgVDM+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDM+
IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMyhjb25zdCBQYXJhbUdl
bmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwgY29u
c3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMykKQEAgLTMwMDUsNyArMzMyNyw3IEBAIGNsYXNzIENh
cnRlc2lhblByb2R1Y3RHZW5lcmF0b3IzCiAgICAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJm
YWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3QgewogICAgICAgcmV0dXJuIG5ldyBJdGVyYXRv
cigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkg
Y29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9CisgICAgdmlydHVhbCBjb25zdCBQYXJh
bVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiBjdXJyZW50X3ZhbHVlXy5nZXQoKTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJh
bVR5cGU+JiBvdGhlcikgY29uc3QgewogICAgICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2Vu
ZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKICAgICAgIC8vIGl0ZXJhdG9yIGlzIG9m
IHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KQEAgLTMwNDEsNyArMzM2Myw3IEBA
IGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IzCiAKICAgICB2b2lkIENvbXB1dGVDdXJy
ZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkpCi0gICAgICAgIGN1cnJlbnRfdmFsdWVf
ID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18pOworICAgICAg
ICBjdXJyZW50X3ZhbHVlXy5yZXNldChuZXcgUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50
Ml8sICpjdXJyZW50M18pKTsKICAgICB9CiAgICAgYm9vbCBBdEVuZCgpIGNvbnN0IHsKICAgICAg
IC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2hl
biBlaXRoZXIgb2YgdGhlCkBAIC0zMDY3LDcgKzMzODksNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yMwogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRl
cmF0b3IgYmVnaW4zXzsKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0
ZXJhdG9yIGVuZDNfOwogICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3Ig
Y3VycmVudDNfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKKyAgICBsaW5rZWRfcHRy
PFBhcmFtVHlwZT4gY3VycmVudF92YWx1ZV87CiAgIH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yMzo6SXRlcmF0b3IKIAogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2ln
bm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC0zMDgxLDkgKzM0MDMsOSBAQCBjbGFzcyBDYXJ0ZXNp
YW5Qcm9kdWN0R2VuZXJhdG9yMwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJh
dG9yNAotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHVwbGU8
VDEsIFQyLCBUMywgVDQ+ID4geworICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNl
PCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVk
ZWYgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0
ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblBy
b2R1Y3RHZW5lcmF0b3I0KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLApA
QCAtMzE0Niw3ICszNDY4LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQKICAg
ICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25z
dCB7CiAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVh
bCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1
ZV87IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0
dXJuIGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25z
dCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAg
ICAvLyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBv
dGhlcgogICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRv
d25jYXN0LgpAQCAtMzE4Niw4ICszNTA4LDggQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVy
YXRvcjQKIAogICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKICAgICAgIGlmICghQXRF
bmQoKSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1
cnJlbnQyXywgKmN1cnJlbnQzXywKLSAgICAgICAgICAgICpjdXJyZW50NF8pOworICAgICAgICBj
dXJyZW50X3ZhbHVlXy5yZXNldChuZXcgUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8s
ICpjdXJyZW50M18sCisgICAgICAgICAgICAqY3VycmVudDRfKSk7CiAgICAgfQogICAgIGJvb2wg
QXRFbmQoKSBjb25zdCB7CiAgICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRo
ZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQpAQCAtMzIxNyw3ICszNTM5LDcg
QEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQKICAgICBjb25zdCB0eXBlbmFtZSBQ
YXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yIGJlZ2luNF87CiAgICAgY29uc3QgdHlwZW5hbWUg
UGFyYW1HZW5lcmF0b3I8VDQ+OjppdGVyYXRvciBlbmQ0XzsKICAgICB0eXBlbmFtZSBQYXJhbUdl
bmVyYXRvcjxUND46Oml0ZXJhdG9yIGN1cnJlbnQ0XzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92
YWx1ZV87CisgICAgbGlua2VkX3B0cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAg
Ly8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQ6Okl0ZXJhdG9yCiAKICAgLy8gTm8g
aW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtMzIzMiw5ICsz
NTU0LDkgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFt
ZSBUNT4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1Ci0gICAgOiBwdWJsaWMgUGFy
YW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+ID4g
eworICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxl
PFQxLCBUMiwgVDMsIFQ0LCBUNT4gPiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0dXBs
ZTxUMSwgVDIsIFQzLCBUNCwgVDU+IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RH
ZW5lcmF0b3I1KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJh
bUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLApAQCAtMzMw
NCw3ICszNjI2LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjUKICAgICB2aXJ0
dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7CiAg
ICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBjb25z
dCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0K
KyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGN1
cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJh
bUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAvLyBI
YXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgog
ICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0
LgpAQCAtMzM0OCw4ICszNjcwLDggQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjUK
IAogICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKICAgICAgIGlmICghQXRFbmQoKSkK
LSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQy
XywgKmN1cnJlbnQzXywKLSAgICAgICAgICAgICpjdXJyZW50NF8sICpjdXJyZW50NV8pOworICAg
ICAgICBjdXJyZW50X3ZhbHVlXy5yZXNldChuZXcgUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJy
ZW50Ml8sICpjdXJyZW50M18sCisgICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVudDVfKSk7
CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAvLyBXZSBtdXN0IHJlcG9y
dCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQpA
QCAtMzM4Myw3ICszNzA1LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjUKICAg
ICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJhdG9yIGJlZ2luNV87CiAg
ICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+OjppdGVyYXRvciBlbmQ1XzsKICAg
ICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJhdG9yIGN1cnJlbnQ1XzsKLSAgICBQ
YXJhbVR5cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0cjxQYXJhbVR5cGU+IGN1cnJl
bnRfdmFsdWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjU6Okl0
ZXJhdG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9y
dGVkLgpAQCAtMzQwMCwxMCArMzcyMiwxMCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJh
dG9yNQogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5
cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICB0eXBlbmFtZSBUNj4KIGNsYXNzIENhcnRlc2lh
blByb2R1Y3RHZW5lcmF0b3I2Ci0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8
IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsCisgICAgOiBwdWJsaWMgUGFyYW1HZW5l
cmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LAogICAg
ICAgICBUNj4gPiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2PiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2PiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVy
YXRvcjYoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBAIC0zNDgxLDcg
KzM4MDMsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNgogICAgIHZpcnR1YWwg
UGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKICAgICAg
IHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwogICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBh
cmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQorICAg
IHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gY3VycmVu
dF92YWx1ZV8uZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRl
cmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKICAgICAgIC8vIEhhdmlu
ZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCiAgICAg
ICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCkBA
IC0zNTI5LDggKzM4NTEsOCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNgogCiAg
ICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgpKQotICAg
ICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAq
Y3VycmVudDNfLAotICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1cnJlbnQ1XywgKmN1cnJlbnQ2
Xyk7CisgICAgICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJhbVR5cGUoKmN1cnJlbnQx
XywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKKyAgICAgICAgICAgICpjdXJyZW50NF8sICpjdXJy
ZW50NV8sICpjdXJyZW50Nl8pKTsKICAgICB9CiAgICAgYm9vbCBBdEVuZCgpIGNvbnN0IHsKICAg
ICAgIC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2Ug
d2hlbiBlaXRoZXIgb2YgdGhlCkBAIC0zNTY4LDcgKzM4OTAsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Q
cm9kdWN0R2VuZXJhdG9yNgogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ2Pjo6
aXRlcmF0b3IgYmVnaW42XzsKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46
Oml0ZXJhdG9yIGVuZDZfOwogICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ2Pjo6aXRlcmF0
b3IgY3VycmVudDZfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKKyAgICBsaW5rZWRf
cHRyPFBhcmFtVHlwZT4gY3VycmVudF92YWx1ZV87CiAgIH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Q
cm9kdWN0R2VuZXJhdG9yNjo6SXRlcmF0b3IKIAogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFz
c2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC0zNTg2LDEwICszOTA4LDEwIEBAIGNsYXNzIENh
cnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgIHR5cGVuYW1l
IFQ2LCB0eXBlbmFtZSBUNz4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3Ci0gICAg
OiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LAorICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRl
c3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCiAgICAgICAgIFQ3PiA+IHsKICBw
dWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3
PiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNz4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3KGNv
bnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxU
Mj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLApAQCAtMzY3NSw3ICszOTk3LDcg
QEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjcKICAgICB2aXJ0dWFsIFBhcmFtSXRl
cmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7CiAgICAgICByZXR1cm4g
bmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUq
IEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KKyAgICB2aXJ0dWFs
IGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfdmFsdWVf
LmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50
ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAvLyBIYXZpbmcgdGhlIHNh
bWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgogICAgICAgLy8gaXRl
cmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0LgpAQCAtMzcyNyw4
ICs0MDQ5LDggQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjcKIAogICAgIHZvaWQg
Q29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKICAgICAgIGlmICghQXRFbmQoKSkKLSAgICAgICAgY3Vy
cmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQz
XywKLSAgICAgICAgICAgICpjdXJyZW50NF8sICpjdXJyZW50NV8sICpjdXJyZW50Nl8sICpjdXJy
ZW50N18pOworICAgICAgICBjdXJyZW50X3ZhbHVlXy5yZXNldChuZXcgUGFyYW1UeXBlKCpjdXJy
ZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18sCisgICAgICAgICAgICAqY3VycmVudDRfLCAq
Y3VycmVudDVfLCAqY3VycmVudDZfLCAqY3VycmVudDdfKSk7CiAgICAgfQogICAgIGJvb2wgQXRF
bmQoKSBjb25zdCB7CiAgICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBl
bmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQpAQCAtMzc3MCw3ICs0MDkyLDcgQEAg
Y2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjcKICAgICBjb25zdCB0eXBlbmFtZSBQYXJh
bUdlbmVyYXRvcjxUNz46Oml0ZXJhdG9yIGJlZ2luN187CiAgICAgY29uc3QgdHlwZW5hbWUgUGFy
YW1HZW5lcmF0b3I8VDc+OjppdGVyYXRvciBlbmQ3XzsKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVy
YXRvcjxUNz46Oml0ZXJhdG9yIGN1cnJlbnQ3XzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1
ZV87CisgICAgbGlua2VkX3B0cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAgLy8g
Y2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjc6Okl0ZXJhdG9yCiAKICAgLy8gTm8gaW1w
bGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtMzc4OSwxMCArNDEx
MSwxMCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNwogdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NSwKICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4PgogY2xhc3MgQ2Fy
dGVzaWFuUHJvZHVjdEdlbmVyYXRvcjgKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVy
ZmFjZTwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCisgICAgOiBwdWJsaWMg
UGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwKICAgICAgICAgVDcsIFQ4PiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6
OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4gUGFyYW1UeXBlOworICB0eXBl
ZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiBQYXJh
bVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjgoY29uc3QgUGFyYW1HZW5lcmF0
b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBh
cmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBAIC0zODg4LDcgKzQyMTAsNyBAQCBjbGFzcyBDYXJ0ZXNp
YW5Qcm9kdWN0R2VuZXJhdG9yOAogICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQ
YXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKICAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRo
aXMpOwogICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0
IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQorICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBl
KiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gY3VycmVudF92YWx1ZV8uZ2V0KCk7IH0KICAgICB2
aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBl
PiYgb3RoZXIpIGNvbnN0IHsKICAgICAgIC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRv
ciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCiAgICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUg
c2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCkBAIC0zOTQ0LDggKzQyNjYsOCBAQCBjbGFz
cyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOAogCiAgICAgdm9pZCBDb21wdXRlQ3VycmVudFZh
bHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBh
cmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAotICAgICAgICAgICAg
KmN1cnJlbnQ0XywgKmN1cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1cnJlbnQ3XywgKmN1cnJlbnQ4
Xyk7CisgICAgICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJhbVR5cGUoKmN1cnJlbnQx
XywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKKyAgICAgICAgICAgICpjdXJyZW50NF8sICpjdXJy
ZW50NV8sICpjdXJyZW50Nl8sICpjdXJyZW50N18sICpjdXJyZW50OF8pKTsKICAgICB9CiAgICAg
Ym9vbCBBdEVuZCgpIGNvbnN0IHsKICAgICAgIC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBh
c3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2hlbiBlaXRoZXIgb2YgdGhlCkBAIC0zOTkxLDcgKzQz
MTMsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOAogICAgIGNvbnN0IHR5cGVu
YW1lIFBhcmFtR2VuZXJhdG9yPFQ4Pjo6aXRlcmF0b3IgYmVnaW44XzsKICAgICBjb25zdCB0eXBl
bmFtZSBQYXJhbUdlbmVyYXRvcjxUOD46Oml0ZXJhdG9yIGVuZDhfOwogICAgIHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQ4Pjo6aXRlcmF0b3IgY3VycmVudDhfOwotICAgIFBhcmFtVHlwZSBjdXJy
ZW50X3ZhbHVlXzsKKyAgICBsaW5rZWRfcHRyPFBhcmFtVHlwZT4gY3VycmVudF92YWx1ZV87CiAg
IH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yODo6SXRlcmF0b3IKIAogICAv
LyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC00MDEx
LDEwICs0MzMzLDEwIEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4CiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LAogICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5
cGVuYW1lIFQ5PgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjkKLSAgICA6IHB1Ymxp
YyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsCisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKICAgICAgICAgVDcsIFQ4LCBUOT4gPiB7CiAg
cHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5PiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIs
IFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjkoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBA
IC00MTE3LDcgKzQ0MzksNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOQogICAg
IHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0
IHsKICAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwogICAgIH0KLSAgICB2aXJ0dWFs
IGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVl
XzsgfQorICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1
cm4gY3VycmVudF92YWx1ZV8uZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0
IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKICAgICAg
IC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90
aGVyCiAgICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93
bmNhc3QuCkBAIC00MTc3LDkgKzQ0OTksOSBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJh
dG9yOQogCiAgICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVu
ZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3Vy
cmVudDJfLCAqY3VycmVudDNfLAorICAgICAgICBjdXJyZW50X3ZhbHVlXy5yZXNldChuZXcgUGFy
YW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18sCiAgICAgICAgICAgICAq
Y3VycmVudDRfLCAqY3VycmVudDVfLCAqY3VycmVudDZfLCAqY3VycmVudDdfLCAqY3VycmVudDhf
LAotICAgICAgICAgICAgKmN1cnJlbnQ5Xyk7CisgICAgICAgICAgICAqY3VycmVudDlfKSk7CiAg
ICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAvLyBXZSBtdXN0IHJlcG9ydCBp
dGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQpAQCAt
NDIyOSw3ICs0NTUxLDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjkKICAgICBj
b25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOT46Oml0ZXJhdG9yIGJlZ2luOV87CiAgICAg
Y29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDk+OjppdGVyYXRvciBlbmQ5XzsKICAgICB0
eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOT46Oml0ZXJhdG9yIGN1cnJlbnQ5XzsKLSAgICBQYXJh
bVR5cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0cjxQYXJhbVR5cGU+IGN1cnJlbnRf
dmFsdWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjk6Okl0ZXJh
dG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVk
LgpAQCAtNDI1MCwxMCArNDU3MiwxMCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9y
OQogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVu
YW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVu
YW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgogY2xhc3MgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjEwCi0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6c3Rk
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAorICAgIDogcHVibGljIFBhcmFtR2VuZXJh
dG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCiAg
ICAgICAgIFQ3LCBUOCwgVDksIFQxMD4gPiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0
dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTA+IFBhcmFtVHlwZTsK
KyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMD4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IxMChj
b25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8
VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKQEAgLTQzNjQsNyArNDY4Niw3
IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IxMAogICAgIHZpcnR1YWwgUGFyYW1J
dGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKICAgICAgIHJldHVy
biBuZXcgSXRlcmF0b3IoKnRoaXMpOwogICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlw
ZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQorICAgIHZpcnR1
YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gY3VycmVudF92YWx1
ZV8uZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0b3JJ
bnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKICAgICAgIC8vIEhhdmluZyB0aGUg
c2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCiAgICAgICAvLyBp
dGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCkBAIC00NDI4
LDkgKzQ3NTAsOSBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMTAKIAogICAgIHZv
aWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKICAgICAgIGlmICghQXRFbmQoKSkKLSAgICAgICAg
Y3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJl
bnQzXywKKyAgICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVu
dDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAogICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1
cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1cnJlbnQ3XywgKmN1cnJlbnQ4XywKLSAgICAgICAgICAg
ICpjdXJyZW50OV8sICpjdXJyZW50MTBfKTsKKyAgICAgICAgICAgICpjdXJyZW50OV8sICpjdXJy
ZW50MTBfKSk7CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAvLyBXZSBt
dXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVy
IG9mIHRoZQpAQCAtNDQ4NCw3ICs0ODA2LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVy
YXRvcjEwCiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDEwPjo6aXRlcmF0b3Ig
YmVnaW4xMF87CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDEwPjo6aXRlcmF0
b3IgZW5kMTBfOwogICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxMD46Oml0ZXJhdG9yIGN1
cnJlbnQxMF87Ci0gICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFsdWVfOworICAgIGxpbmtlZF9wdHI8
UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsKICAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1
Y3RHZW5lcmF0b3IxMDo6SXRlcmF0b3IKIAogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2ln
bm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC00NTE1LDggKzQ4MzcsOCBAQCBjbGFzcyBDYXJ0ZXNp
YW5Qcm9kdWN0SG9sZGVyMiB7CiBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMihjb25zdCBHZW5lcmF0
b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIpCiAgICAgICA6IGcxXyhnMSksIGcyXyhnMikg
e30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgb3BlcmF0b3IgUGFy
YW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDI+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJu
IFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyPiA+KAorICBvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDI+ID4oKSBjb25zdCB7CisgICAgcmV0
dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMj4gPigKICAgICAgICAg
bmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IyPFQxLCBUMj4oCiAgICAgICAgIHN0YXRpY19j
YXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcxXyksCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFt
R2VuZXJhdG9yPFQyPiA+KGcyXykpKTsKQEAgLTQ1MzcsOCArNDg1OSw4IEBAIENhcnRlc2lhblBy
b2R1Y3RIb2xkZXIzKGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwK
ICAgICBjb25zdCBHZW5lcmF0b3IzJiBnMykKICAgICAgIDogZzFfKGcxKSwgZzJfKGcyKSwgZzNf
KGczKSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBU
Mz4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzPiA+
KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBU
MiwgVDM+ID4oCisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQx
LCBUMiwgVDM+ID4oKSBjb25zdCB7CisgICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rp
bmc6OnR1cGxlPFQxLCBUMiwgVDM+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2Vu
ZXJhdG9yMzxUMSwgVDIsIFQzPigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8
VDE+ID4oZzFfKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJf
KSwKQEAgLTQ1NjIsOCArNDg4NCw4IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXI0KGNvbnN0IEdl
bmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKICAgICBjb25zdCBHZW5lcmF0b3Iz
JiBnMywgY29uc3QgR2VuZXJhdG9yNCYgZzQpCiAgICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGcz
XyhnMyksIGc0XyhnNCkge30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpz
dGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdl
bmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiA+KAorICBvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPigpIGNvbnN0IHsK
KyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywg
VDQ+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNDxUMSwgVDIsIFQz
LCBUND4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcxXyksCiAg
ICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyksCkBAIC00NTg5LDgg
KzQ5MTEsOCBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNShjb25zdCBHZW5lcmF0b3IxJiBnMSwg
Y29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgY29uc3QgR2VuZXJhdG9yMyYgZzMsIGNvbnN0IEdl
bmVyYXRvcjQmIGc0LCBjb25zdCBHZW5lcmF0b3I1JiBnNSkKICAgICAgIDogZzFfKGcxKSwgZzJf
KGcyKSwgZzNfKGczKSwgZzRfKGc0KSwgZzVfKGc1KSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Pgot
ICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBU
NT4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxU
MSwgVDIsIFQzLCBUNCwgVDU+ID4oCisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rp
bmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gPigpIGNvbnN0IHsKKyAgICByZXR1cm4gUGFy
YW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiA+KAogICAg
ICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjU8VDEsIFQyLCBUMywgVDQsIFQ1PigK
ICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKICAgICAgICAg
c3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwKQEAgLTQ2MjAsOCArNDk0Miw4
IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXI2KGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBH
ZW5lcmF0b3IyJiBnMiwKICAgICAgIDogZzFfKGcxKSwgZzJfKGcyKSwgZzNfKGczKSwgZzRfKGc0
KSwgZzVfKGc1KSwgZzZfKGc2KSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgICAgdHlwZW5h
bWUgVDY+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNj4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6
c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiA+KAorICBvcGVyYXRvciBQYXJhbUdl
bmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiA+KCkgY29u
c3QgeworICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIs
IFQzLCBUNCwgVDUsIFQ2PiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjY8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2Vu
ZXJhdG9yPFQxPiA+KGcxXyksCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQy
PiA+KGcyXyksCkBAIC00NjUzLDkgKzQ5NzUsOSBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNyhj
b25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgICA6IGcxXyhn
MSksIGcyXyhnMiksIGczXyhnMyksIGc0XyhnNCksIGc1XyhnNSksIGc2XyhnNiksIGc3XyhnNykg
e30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5
cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4K
LSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LAorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LAogICAgICAgVDc+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBh
cmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+ID4o
CisgICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3PiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjc8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJh
bUdlbmVyYXRvcjxUMT4gPihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRv
cjxUMj4gPihnMl8pLApAQCAtNDY5MSw5ICs1MDEzLDkgQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRl
cjgoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICAgICAgICAg
IGc4XyhnOCkge30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5h
bWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBl
bmFtZSBUNywgdHlwZW5hbWUgVDg+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsCisgIG9wZXJhdG9yIFBhcmFtR2VuZXJh
dG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LAogICAgICAg
VDg+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiA+KAorICAgIHJldHVybiBQYXJhbUdlbmVy
YXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+ID4o
CiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yODxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDg+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4g
PihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pLApA
QCAtNDczMiw5ICs1MDU0LDkgQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjkoY29uc3QgR2VuZXJh
dG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICAgICAgICAgIGc5XyhnOSkge30KICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNSwKICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5h
bWUgVDgsIHR5cGVuYW1lIFQ5PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwKKyAgb3BlcmF0b3IgUGFyYW1HZW5l
cmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LAog
ICAgICAgVDk+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LAorICAgIHJldHVybiBQYXJhbUdl
bmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
CiAgICAgICAgIFQ5PiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjk8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4oCiAgICAgICAgIHN0YXRpY19jYXN0
PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcxXyksCkBAIC00Nzc2LDEwICs1MDk4LDEwIEBAIENhcnRl
c2lhblByb2R1Y3RIb2xkZXIxMChjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9y
MiYgZzIsCiAgICAgICAgICAgZzlfKGc5KSwgZzEwXyhnMTApIHt9CiAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDUsCiAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFt
ZSBUOSwgdHlwZW5hbWUgVDEwPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwKLSAgICAgIFQ5LCBUMTA+ID4oKSBj
b25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LAotICAgICAgICBUOSwgVDEwPiA+KAorICBvcGVyYXRvciBQ
YXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LAorICAgICAgVDEwPiA+KCkgY29uc3QgeworICAgIHJldHVybiBQYXJhbUdlbmVy
YXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LAorICAgICAgICBUMTA+ID4oCiAgICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9y
MTA8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwKICAgICAgICAgICAgIFQxMD4o
CiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcxXyksCkBAIC00ODEw
LDExICs1MTMyLDkgQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjEwKGNvbnN0IEdlbmVyYXRvcjEm
IGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKICAgY29uc3QgR2VuZXJhdG9yMTAgZzEwXzsKIH07
ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMTAKIAotI2VuZGlmICAvLyBHVEVTVF9I
QVNfQ09NQklORQorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKIAogfSAgLy8gbmFtZXNw
YWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCi0jZW5kaWYgIC8vICBHVEVT
VF9IQVNfUEFSQU1fVEVTVAotCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJO
QUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFURURfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5l
cmF0ZWQuaC5wdW1wIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oLnB1bXAKaW5kZXggYmFlZGZiYzJkN2U4
MzQxYjViNTU5ZDljZTMzYjhkODc0NTNkZWQ0Mi4uYWU4YzU3YjUyYmExZjc4NTkxYzUzYTU5Mjk4
MzY5NDc0MTY2OGJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oLnB1bXAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJh
bS11dGlsLWdlbmVyYXRlZC5oLnB1bXAKQEAgLTI5LDggKzI5LDcgQEAgJHZhciBtYXh0dXBsZSA9
IDEwICAkJCBNYXhpbXVtIG51bWJlciBvZiBDb21iaW5lIGFyZ3VtZW50cyB3ZSB3YW50IHRvIHN1
cHBvcnQuCiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0v
LwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQorCiAKIC8vIFR5cGUg
YW5kIGZ1bmN0aW9uIHV0aWxpdGllcyBmb3IgaW1wbGVtZW50aW5nIHBhcmFtZXRlcml6ZWQgdGVz
dHMuCiAvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBULiAgRE8gTk9UIEVESVQg
QlkgSEFORCEKQEAgLTM5LDE5ICszOCwxNiBAQCAkdmFyIG1heHR1cGxlID0gMTAgICQkIE1heGlt
dW0gbnVtYmVyIG9mIENvbWJpbmUgYXJndW1lbnRzIHdlIHdhbnQgdG8gc3VwcG9ydC4KIC8vIGFu
ZCBhdCBtb3N0ICRtYXh0dXBsZSBhcmd1bWVudHMgaW4gQ29tYmluZS4gUGxlYXNlIGNvbnRhY3QK
IC8vIGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbSBpZiB5b3UgbmVlZCBtb3Jl
LgogLy8gUGxlYXNlIG5vdGUgdGhhdCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBDb21iaW5l
IGlzIGxpbWl0ZWQKLS8vIGJ5IHRoZSBtYXhpbXVtIGFyaXR5IG9mIHRoZSBpbXBsZW1lbnRhdGlv
biBvZiB0cjE6OnR1cGxlIHdoaWNoIGlzCisvLyBieSB0aGUgbWF4aW11bSBhcml0eSBvZiB0aGUg
aW1wbGVtZW50YXRpb24gb2YgdHVwbGUgd2hpY2ggaXMKIC8vIGN1cnJlbnRseSBzZXQgYXQgJG1h
eHR1cGxlLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYg
R1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0dFTkVSQVRFRF9I
XwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BBUkFNX1VUSUxf
R0VORVJBVEVEX0hfCiAKLS8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBkZXBlbmRzIG9uIGd0ZXN0
J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKLS8vICp1bmNvbmRpdGlvbmFsbHkqLiAgVGhl
cmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKLS8vIGluc2lkZSAjaWYgR1RF
U1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLQotI2lmIEdU
RVNUX0hBU19QQVJBTV9URVNUCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKIAogbmFtZXNw
YWNlIHRlc3RpbmcgewogCkBAIC01OSw4ICs1NSw4IEBAIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIC8v
IGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLgogdGVtcGxhdGUgPHR5cGVuYW1lIEZv
cndhcmRJdGVyYXRvcj4KIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjwKLSAgICB0eXBlbmFtZSA6
OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+IFZhbHVl
c0luKAotICAgICAgICBGb3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJdGVyYXRvciBlbmQp
OworICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVyYXRvclRyYWl0czxGb3J3YXJk
SXRlcmF0b3I+Ojp2YWx1ZV90eXBlPgorVmFsdWVzSW4oRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLCBG
b3J3YXJkSXRlcmF0b3IgZW5kKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgog
aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFZhbHVlc0luKGNvbnN0IFQgKCZhcnJheSlbTl0p
OwpAQCAtNzIsMzMgKzY4LDE4IEBAIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjx0eXBlbmFtZSBD
b250YWluZXI6OnZhbHVlX3R5cGU+IFZhbHVlc0luKAogbmFtZXNwYWNlIGludGVybmFsIHsKIAog
Ly8gVXNlZCBpbiB0aGUgVmFsdWVzKCkgZnVuY3Rpb24gdG8gcHJvdmlkZSBwb2x5bW9ycGhpYyBj
YXBhYmlsaXRpZXMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDE+Ci1jbGFzcyBWYWx1ZUFycmF5MSB7
Ci0gcHVibGljOgotICBleHBsaWNpdCBWYWx1ZUFycmF5MShUMSB2MSkgOiB2MV8odjEpIHt9Ci0K
LSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkg
Y29uc3QgeyByZXR1cm4gVmFsdWVzSW4oJnYxXywgJnYxXyArIDEpOyB9Ci0KLSBwcml2YXRlOgot
ICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZv
aWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkxJiBvdGhlcik7Ci0KLSAgY29uc3QgVDEgdjFf
OwotfTsKLQotJHJhbmdlIGkgMi4ubgorJHJhbmdlIGkgMS4ubgogJGZvciBpIFtbCiAkcmFuZ2Ug
aiAxLi5pCiAKIHRlbXBsYXRlIDwkZm9yIGosIFtbdHlwZW5hbWUgVCRqXV0+CiBjbGFzcyBWYWx1
ZUFycmF5JGkgewogIHB1YmxpYzoKLSAgVmFsdWVBcnJheSRpKCRmb3IgaiwgW1tUJGogdiRqXV0p
IDogJGZvciBqLCBbW3YkKGopXyh2JGopXV0ge30KKyAgJGlmIGk9PTEgW1tleHBsaWNpdCBdXVZh
bHVlQXJyYXkkaSgkZm9yIGosIFtbVCRqIHYkal1dKSA6ICRmb3IgaiwgW1t2JChqKV8odiRqKV1d
IHt9CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9y
PFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHskZm9yIGosIFtbdiQoailfXV19
OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHskZm9yIGosIFtbc3RhdGljX2Nhc3Q8VD4odiQoailf
KV1dfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKQEAgLTExNSw3ICs5Niw3
IEBAICRmb3IgaiBbWwogCiBdXQogCi0jaWYgR1RFU1RfSEFTX0NPTUJJTkUKKyMgaWYgR1RFU1Rf
SEFTX0NPTUJJTkUKIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBV
U0VSIENPREUuCiAvLwogLy8gR2VuZXJhdGVzIHZhbHVlcyBmcm9tIHRoZSBDYXJ0ZXNpYW4gcHJv
ZHVjdCBvZiB2YWx1ZXMgcHJvZHVjZWQKQEAgLTEyOCw5ICsxMDksOSBAQCAkcmFuZ2UgayAyLi5p
CiAKIHRlbXBsYXRlIDwkZm9yIGosIFtbdHlwZW5hbWUgVCRqXV0+CiBjbGFzcyBDYXJ0ZXNpYW5Q
cm9kdWN0R2VuZXJhdG9yJGkKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwg
OjpzdGQ6OnRyMTo6dHVwbGU8JGZvciBqLCBbW1Qkal1dPiA+IHsKKyAgICA6IHB1YmxpYyBQYXJh
bUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4g
ewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+
IFBhcmFtVHlwZTsKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4g
UGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IkaSgkZm9yIGosIFtbY29u
c3QgUGFyYW1HZW5lcmF0b3I8VCRqPiYgZyRqXV0pCiAgICAgICA6ICRmb3IgaiwgW1tnJChqKV8o
ZyRqKV1dIHt9CkBAIC0xODAsNyArMTYxLDcgQEAgJGZvciBrIFtbCiAgICAgdmlydHVhbCBQYXJh
bUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3QgewogICAgICAgcmV0
dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1U
eXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9CisgICAgdmly
dHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiBjdXJyZW50X3Zh
bHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRv
ckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAgICAgLy8gSGF2aW5nIHRo
ZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKICAgICAgIC8v
IGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KQEAgLTIx
Miw3ICsxOTMsNyBAQCAkZm9yIGsgW1sKIAogICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgp
IHsKICAgICAgIGlmICghQXRFbmQoKSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5
cGUoJGZvciBqLCBbWypjdXJyZW50JChqKV9dXSk7CisgICAgICAgIGN1cnJlbnRfdmFsdWVfLnJl
c2V0KG5ldyBQYXJhbVR5cGUoJGZvciBqLCBbWypjdXJyZW50JChqKV9dXSkpOwogICAgIH0KICAg
ICBib29sIEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3Ig
cGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAgLTIzNyw3ICsy
MTgsNyBAQCAkZm9yIGogW1sKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUJGo+OjppdGVy
YXRvciBjdXJyZW50JChqKV87CiBdXQogCi0gICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFsdWVfOwor
ICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsKICAgfTsgIC8vIGNsYXNz
IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IkaTo6SXRlcmF0b3IKIAogICAvLyBObyBpbXBsZW1l
bnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC0yNjksOCArMjUwLDggQEAg
Y2xhc3MgQ2FydGVzaWFuUHJvZHVjdEhvbGRlciRpIHsKIENhcnRlc2lhblByb2R1Y3RIb2xkZXIk
aSgkZm9yIGosIFtbY29uc3QgR2VuZXJhdG9yJGomIGckal1dKQogICAgICAgOiAkZm9yIGosIFtb
ZyQoailfKGckaildXSB7fQogICB0ZW1wbGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIFQkal1dPgot
ICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnRyMTo6dHVwbGU8JGZvciBqLCBbW1Qk
al1dPiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnRyMTo6
dHVwbGU8JGZvciBqLCBbW1Qkal1dPiA+KAorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0
ZXN0aW5nOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4oKSBjb25zdCB7CisgICAgcmV0dXJuIFBh
cmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4gPigKICAgICAg
ICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IkaTwkZm9yIGosIFtbVCRqXV0+KAogJGZv
ciBqLFtbCiAKQEAgLTI5MSwxMSArMjcyLDkgQEAgJGZvciBqIFtbCiAKIF1dCiAKLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX0NPTUJJTkUKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCiAKIH0g
IC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotI2VuZGlm
ICAvLyAgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dU
RVNUX0lOVEVSTkFMX0dURVNUX1BBUkFNX1VUSUxfR0VORVJBVEVEX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFt
LXV0aWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtcGFyYW0tdXRpbC5oCmluZGV4IDBjYmI1OGMyMWI3Yjg5Y2Q0OGE4ZDFjNWNiNTIwZjMx
MTM3NGNkZTIuLmQ2NGY2MjBjNGM2NzQzNDY3M2MwYTYxZTIzOTYwYjYxNWMzNGU3ODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcGFyYW0tdXRpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oCkBAIC0yNiwyOCArMjYsNDkgQEAKIC8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6
IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCisKIAogLy8gVHlwZSBhbmQgZnVuY3Rpb24g
dXRpbGl0aWVzIGZvciBpbXBsZW1lbnRpbmcgcGFyYW1ldGVyaXplZCB0ZXN0cy4KIAorLy8gR09P
R0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RF
U1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dU
RVNUX0lOVEVSTkFMX0dURVNUX1BBUkFNX1VUSUxfSF8KIAorI2luY2x1ZGUgPGN0eXBlLmg+CisK
ICNpbmNsdWRlIDxpdGVyYXRvcj4KKyNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8dXRpbGl0eT4K
ICNpbmNsdWRlIDx2ZWN0b3I+CiAKLS8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBkZXBlbmRzIG9u
IGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKLS8vICp1bmNvbmRpdGlvbmFsbHkq
LiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKLS8vIGluc2lkZSAj
aWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
aW50ZXJuYWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRyLmg+
Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgotCi0jaWYgR1RFU1RfSEFT
X1BBUkFNX1RFU1QKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oIgor
I2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaCIKKyNpbmNsdWRlICJn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtcHJpbnRl
cnMuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgeworCisvLyBJbnB1dCB0byBhIHBhcmFtZXRlcml6
ZWQgdGVzdCBuYW1lIGdlbmVyYXRvciwgZGVzY3JpYmluZyBhIHRlc3QgcGFyYW1ldGVyLgorLy8g
Q29uc2lzdHMgb2YgdGhlIHBhcmFtZXRlciB2YWx1ZSBhbmQgdGhlIGludGVnZXIgcGFyYW1ldGVy
IGluZGV4LgordGVtcGxhdGUgPGNsYXNzIFBhcmFtVHlwZT4KK3N0cnVjdCBUZXN0UGFyYW1JbmZv
IHsKKyAgVGVzdFBhcmFtSW5mbyhjb25zdCBQYXJhbVR5cGUmIGFfcGFyYW0sIHNpemVfdCBhbl9p
bmRleCkgOgorICAgIHBhcmFtKGFfcGFyYW0pLAorICAgIGluZGV4KGFuX2luZGV4KSB7fQorICBQ
YXJhbVR5cGUgcGFyYW07CisgIHNpemVfdCBpbmRleDsKK307CisKKy8vIEEgYnVpbHRpbiBwYXJh
bWV0ZXJpemVkIHRlc3QgbmFtZSBnZW5lcmF0b3Igd2hpY2ggcmV0dXJucyB0aGUgcmVzdWx0IG9m
CisvLyB0ZXN0aW5nOjpQcmludFRvU3RyaW5nLgorc3RydWN0IFByaW50VG9TdHJpbmdQYXJhbU5h
bWUgeworICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgorICBzdGQ6OnN0cmluZyBvcGVyYXRv
cigpKGNvbnN0IFRlc3RQYXJhbUluZm88UGFyYW1UeXBlPiYgaW5mbykgY29uc3QgeworICAgIHJl
dHVybiBQcmludFRvU3RyaW5nKGluZm8ucGFyYW0pOworICB9Cit9OworCiBuYW1lc3BhY2UgaW50
ZXJuYWwgewogCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNF
UiBDT0RFLgpAQCAtNTcsNyArNzgsNyBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogLy8gVEVTVF9Q
IG1hY3JvIGlzIHVzZWQgdG8gZGVmaW5lIHR3byB0ZXN0cyB3aXRoIHRoZSBzYW1lIG5hbWUKIC8v
IGJ1dCBpbiBkaWZmZXJlbnQgbmFtZXNwYWNlcy4KIEdURVNUX0FQSV8gdm9pZCBSZXBvcnRJbnZh
bGlkVGVzdENhc2VUeXBlKGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9u
IGNvZGVfbG9jYXRpb24pOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWU+IGNsYXNzIFBhcmFtR2VuZXJh
dG9ySW50ZXJmYWNlOwogdGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFzcyBQYXJhbUdlbmVyYXRvcjsK
QEAgLTE3MSw3ICsxOTIsNyBAQCBjbGFzcyBQYXJhbUdlbmVyYXRvciB7CiAgIGl0ZXJhdG9yIGVu
ZCgpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKGltcGxfLT5FbmQoKSk7IH0KIAogIHByaXZhdGU6
Ci0gIDo6dGVzdGluZzo6aW50ZXJuYWw6OmxpbmtlZF9wdHI8Y29uc3QgUGFyYW1HZW5lcmF0b3JJ
bnRlcmZhY2U8VD4gPiBpbXBsXzsKKyAgbGlua2VkX3B0cjxjb25zdCBQYXJhbUdlbmVyYXRvcklu
dGVyZmFjZTxUPiA+IGltcGxfOwogfTsKIAogLy8gR2VuZXJhdGVzIHZhbHVlcyBmcm9tIGEgcmFu
Z2Ugb2YgdHdvIGNvbXBhcmFibGUgdmFsdWVzLiBDYW4gYmUgdXNlZCB0bwpAQCAtMjA1LDcgKzIy
Niw3IEBAIGNsYXNzIFJhbmdlR2VuZXJhdG9yIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJm
YWNlPFQ+IHsKICAgICAgIHJldHVybiBiYXNlXzsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIEFk
dmFuY2UoKSB7Ci0gICAgICB2YWx1ZV8gPSB2YWx1ZV8gKyBzdGVwXzsKKyAgICAgIHZhbHVlXyA9
IHN0YXRpY19jYXN0PFQ+KHZhbHVlXyArIHN0ZXBfKTsKICAgICAgIGluZGV4XysrOwogICAgIH0K
ICAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8VD4qIENsb25lKCkgY29uc3QgewpA
QCAtMjQyLDcgKzI2Myw3IEBAIGNsYXNzIFJhbmdlR2VuZXJhdG9yIDogcHVibGljIFBhcmFtR2Vu
ZXJhdG9ySW50ZXJmYWNlPFQ+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUJiBlbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW5jcmVtZW50
VCYgc3RlcCkgewogICAgIGludCBlbmRfaW5kZXggPSAwOwotICAgIGZvciAoVCBpID0gYmVnaW47
IGkgPCBlbmQ7IGkgPSBpICsgc3RlcCkKKyAgICBmb3IgKFQgaSA9IGJlZ2luOyBpIDwgZW5kOyBp
ID0gc3RhdGljX2Nhc3Q8VD4oaSArIHN0ZXApKQogICAgICAgZW5kX2luZGV4Kys7CiAgICAgcmV0
dXJuIGVuZF9pbmRleDsKICAgfQpAQCAtMjg1LDcgKzMwNiw3IEBAIGNsYXNzIFZhbHVlc0luSXRl
cmF0b3JSYW5nZUdlbmVyYXRvciA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiB7
CiAgICBwdWJsaWM6CiAgICAgSXRlcmF0b3IoY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8
VD4qIGJhc2UsCiAgICAgICAgICAgICAgdHlwZW5hbWUgQ29udGFpbmVyVHlwZTo6Y29uc3RfaXRl
cmF0b3IgaXRlcmF0b3IpCi0gICAgICAgIDogIGJhc2VfKGJhc2UpLCBpdGVyYXRvcl8oaXRlcmF0
b3IpIHt9CisgICAgICAgIDogYmFzZV8oYmFzZSksIGl0ZXJhdG9yXyhpdGVyYXRvcikge30KICAg
ICB2aXJ0dWFsIH5JdGVyYXRvcigpIHt9CiAKICAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtR2VuZXJh
dG9ySW50ZXJmYWNlPFQ+KiBCYXNlR2VuZXJhdG9yKCkgY29uc3QgewpAQCAtMzQ0LDYgKzM2NSwz
NyBAQCBjbGFzcyBWYWx1ZXNJbkl0ZXJhdG9yUmFuZ2VHZW5lcmF0b3IgOiBwdWJsaWMgUGFyYW1H
ZW5lcmF0b3JJbnRlcmZhY2U8VD4gewogICBjb25zdCBDb250YWluZXJUeXBlIGNvbnRhaW5lcl87
CiB9OyAgLy8gY2xhc3MgVmFsdWVzSW5JdGVyYXRvclJhbmdlR2VuZXJhdG9yCiAKKy8vIElOVEVS
TkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCisvLworLy8gRGVm
YXVsdCBwYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSBnZW5lcmF0b3IsIHJldHVybnMgYSBzdHJpbmcg
Y29udGFpbmluZyB0aGUKKy8vIGludGVnZXIgdGVzdCBwYXJhbWV0ZXIgaW5kZXguCit0ZW1wbGF0
ZSA8Y2xhc3MgUGFyYW1UeXBlPgorc3RkOjpzdHJpbmcgRGVmYXVsdFBhcmFtTmFtZShjb25zdCBU
ZXN0UGFyYW1JbmZvPFBhcmFtVHlwZT4mIGluZm8pIHsKKyAgTWVzc2FnZSBuYW1lX3N0cmVhbTsK
KyAgbmFtZV9zdHJlYW0gPDwgaW5mby5pbmRleDsKKyAgcmV0dXJuIG5hbWVfc3RyZWFtLkdldFN0
cmluZygpOworfQorCisvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4g
VVNFUiBDT0RFLgorLy8KKy8vIFBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lIG92ZXJsb2FkIGhlbHBl
cnMsIHdoaWNoIGhlbHAgdGhlCisvLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBtYWNybyBjaG9v
c2UgYmV0d2VlbiB0aGUgZGVmYXVsdCBwYXJhbWV0ZXJpemVkCisvLyB0ZXN0IG5hbWUgZ2VuZXJh
dG9yIGFuZCB1c2VyIHBhcmFtIG5hbWUgZ2VuZXJhdG9yLgordGVtcGxhdGUgPGNsYXNzIFBhcmFt
VHlwZSwgY2xhc3MgUGFyYW1OYW1lR2VuRnVuY3Rvcj4KK1BhcmFtTmFtZUdlbkZ1bmN0b3IgR2V0
UGFyYW1OYW1lR2VuKFBhcmFtTmFtZUdlbkZ1bmN0b3IgZnVuYykgeworICByZXR1cm4gZnVuYzsK
K30KKwordGVtcGxhdGUgPGNsYXNzIFBhcmFtVHlwZT4KK3N0cnVjdCBQYXJhbU5hbWVHZW5GdW5j
IHsKKyAgdHlwZWRlZiBzdGQ6OnN0cmluZyBUeXBlKGNvbnN0IFRlc3RQYXJhbUluZm88UGFyYW1U
eXBlPiYpOworfTsKKwordGVtcGxhdGUgPGNsYXNzIFBhcmFtVHlwZT4KK3R5cGVuYW1lIFBhcmFt
TmFtZUdlbkZ1bmM8UGFyYW1UeXBlPjo6VHlwZSAqR2V0UGFyYW1OYW1lR2VuKCkgeworICByZXR1
cm4gRGVmYXVsdFBhcmFtTmFtZTsKK30KKwogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBE
TyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KIC8vCiAvLyBTdG9yZXMgYSBwYXJhbWV0ZXIgdmFsdWUg
YW5kIGxhdGVyIGNyZWF0ZXMgdGVzdHMgcGFyYW1ldGVyaXplZCB3aXRoIHRoYXQKQEAgLTQxNiw3
ICs0NjgsNyBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvQmFzZSB7CiAgIHZpcnR1
YWwgflBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9CYXNlKCkge30KIAogICAvLyBCYXNlIHBhcnQg
b2YgdGVzdCBjYXNlIG5hbWUgZm9yIGRpc3BsYXkgcHVycG9zZXMuCi0gIHZpcnR1YWwgY29uc3Qg
U3RyaW5nJiBHZXRUZXN0Q2FzZU5hbWUoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgY29uc3Qgc3Rk
OjpzdHJpbmcmIEdldFRlc3RDYXNlTmFtZSgpIGNvbnN0ID0gMDsKICAgLy8gVGVzdCBjYXNlIGlk
IHRvIHZlcmlmeSBpZGVudGl0eS4KICAgdmlydHVhbCBUeXBlSWQgR2V0VGVzdENhc2VUeXBlSWQo
KSBjb25zdCA9IDA7CiAgIC8vIFVuaXRUZXN0IGNsYXNzIGludm9rZXMgdGhpcyBtZXRob2QgdG8g
cmVnaXN0ZXIgdGVzdHMgaW4gdGhpcwpAQCAtNDQ4LDEyICs1MDAsMTQgQEAgY2xhc3MgUGFyYW1l
dGVyaXplZFRlc3RDYXNlSW5mbyA6IHB1YmxpYyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvQmFz
ZSB7CiAgIHR5cGVkZWYgdHlwZW5hbWUgVGVzdENhc2U6OlBhcmFtVHlwZSBQYXJhbVR5cGU7CiAg
IC8vIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIGFwcHJvcHJpYXRlIGdl
bmVyYXRvciB0eXBlLgogICB0eXBlZGVmIFBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT4oR2VuZXJh
dG9yQ3JlYXRpb25GdW5jKSgpOworICB0eXBlZGVmIHR5cGVuYW1lIFBhcmFtTmFtZUdlbkZ1bmM8
UGFyYW1UeXBlPjo6VHlwZSBQYXJhbU5hbWVHZW5lcmF0b3JGdW5jOwogCi0gIGV4cGxpY2l0IFBh
cmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8oY29uc3QgY2hhciogbmFtZSkKLSAgICAgIDogdGVzdF9j
YXNlX25hbWVfKG5hbWUpIHt9CisgIGV4cGxpY2l0IFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8o
CisgICAgICBjb25zdCBjaGFyKiBuYW1lLCBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbikKKyAg
ICAgIDogdGVzdF9jYXNlX25hbWVfKG5hbWUpLCBjb2RlX2xvY2F0aW9uXyhjb2RlX2xvY2F0aW9u
KSB7fQogCiAgIC8vIFRlc3QgY2FzZSBiYXNlIG5hbWUgZm9yIGRpc3BsYXkgcHVycG9zZXMuCi0g
IHZpcnR1YWwgY29uc3QgU3RyaW5nJiBHZXRUZXN0Q2FzZU5hbWUoKSBjb25zdCB7IHJldHVybiB0
ZXN0X2Nhc2VfbmFtZV87IH0KKyAgdmlydHVhbCBjb25zdCBzdGQ6OnN0cmluZyYgR2V0VGVzdENh
c2VOYW1lKCkgY29uc3QgeyByZXR1cm4gdGVzdF9jYXNlX25hbWVfOyB9CiAgIC8vIFRlc3QgY2Fz
ZSBpZCB0byB2ZXJpZnkgaWRlbnRpdHkuCiAgIHZpcnR1YWwgVHlwZUlkIEdldFRlc3RDYXNlVHlw
ZUlkKCkgY29uc3QgeyByZXR1cm4gR2V0VHlwZUlkPFRlc3RDYXNlPigpOyB9CiAgIC8vIFRFU1Rf
UCBtYWNybyB1c2VzIEFkZFRlc3RQYXR0ZXJuKCkgdG8gcmVjb3JkIGluZm9ybWF0aW9uCkBAIC00
NzEsMTEgKzUyNSwxMiBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvIDogcHVibGlj
IFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9CYXNlIHsKICAgfQogICAvLyBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUCBtYWNybyB1c2VzIEFkZEdlbmVyYXRvcigpIHRvIHJlY29yZCBpbmZvcm1hdGlv
bgogICAvLyBhYm91dCBhIGdlbmVyYXRvci4KLSAgaW50IEFkZFRlc3RDYXNlSW5zdGFudGlhdGlv
bihjb25zdCBjaGFyKiBpbnN0YW50aWF0aW9uX25hbWUsCisgIGludCBBZGRUZXN0Q2FzZUluc3Rh
bnRpYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIGluc3RhbnRpYXRpb25fbmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3JDcmVhdGlvbkZ1bmMqIGZ1bmMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLyogZmlsZSAqLywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgLyogbGluZSAqLykgewotICAgIGluc3RhbnRp
YXRpb25zXy5wdXNoX2JhY2soOjpzdGQ6Om1ha2VfcGFpcihpbnN0YW50aWF0aW9uX25hbWUsIGZ1
bmMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbU5hbWVHZW5lcmF0b3JG
dW5jKiBuYW1lX2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogZmlsZSwgaW50IGxpbmUpIHsKKyAgICBpbnN0YW50aWF0aW9uc18ucHVzaF9iYWNrKAorICAg
ICAgICBJbnN0YW50aWF0aW9uSW5mbyhpbnN0YW50aWF0aW9uX25hbWUsIGZ1bmMsIG5hbWVfZnVu
YywgZmlsZSwgbGluZSkpOwogICAgIHJldHVybiAwOyAgLy8gUmV0dXJuIHZhbHVlIHVzZWQgb25s
eSB0byBydW4gdGhpcyBtZXRob2QgaW4gbmFtZXNwYWNlIHNjb3BlLgogICB9CiAgIC8vIFVuaXRU
ZXN0IGNsYXNzIGludm9rZXMgdGhpcyBtZXRob2QgdG8gcmVnaXN0ZXIgdGVzdHMgaW4gdGhpcyB0
ZXN0IGNhc2UKQEAgLTQ5MCwyNiArNTQ1LDQ1IEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2Fz
ZUluZm8gOiBwdWJsaWMgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UgewogICAgICAgZm9y
ICh0eXBlbmFtZSBJbnN0YW50aWF0aW9uQ29udGFpbmVyOjppdGVyYXRvciBnZW5faXQgPQogICAg
ICAgICAgICAgICAgaW5zdGFudGlhdGlvbnNfLmJlZ2luKCk7IGdlbl9pdCAhPSBpbnN0YW50aWF0
aW9uc18uZW5kKCk7CiAgICAgICAgICAgICAgICArK2dlbl9pdCkgewotICAgICAgICBjb25zdCBT
dHJpbmcmIGluc3RhbnRpYXRpb25fbmFtZSA9IGdlbl9pdC0+Zmlyc3Q7Ci0gICAgICAgIFBhcmFt
R2VuZXJhdG9yPFBhcmFtVHlwZT4gZ2VuZXJhdG9yKCgqZ2VuX2l0LT5zZWNvbmQpKCkpOworICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5zdGFudGlhdGlvbl9uYW1lID0gZ2VuX2l0LT5uYW1l
OworICAgICAgICBQYXJhbUdlbmVyYXRvcjxQYXJhbVR5cGU+IGdlbmVyYXRvcigoKmdlbl9pdC0+
Z2VuZXJhdG9yKSgpKTsKKyAgICAgICAgUGFyYW1OYW1lR2VuZXJhdG9yRnVuYyogbmFtZV9mdW5j
ID0gZ2VuX2l0LT5uYW1lX2Z1bmM7CisgICAgICAgIGNvbnN0IGNoYXIqIGZpbGUgPSBnZW5faXQt
PmZpbGU7CisgICAgICAgIGludCBsaW5lID0gZ2VuX2l0LT5saW5lOwogCi0gICAgICAgIE1lc3Nh
Z2UgdGVzdF9jYXNlX25hbWVfc3RyZWFtOworICAgICAgICBzdGQ6OnN0cmluZyB0ZXN0X2Nhc2Vf
bmFtZTsKICAgICAgICAgaWYgKCAhaW5zdGFudGlhdGlvbl9uYW1lLmVtcHR5KCkgKQotICAgICAg
ICAgIHRlc3RfY2FzZV9uYW1lX3N0cmVhbSA8PCBpbnN0YW50aWF0aW9uX25hbWUuY19zdHIoKSA8
PCAiLyI7Ci0gICAgICAgIHRlc3RfY2FzZV9uYW1lX3N0cmVhbSA8PCB0ZXN0X2luZm8tPnRlc3Rf
Y2FzZV9iYXNlX25hbWUuY19zdHIoKTsKKyAgICAgICAgICB0ZXN0X2Nhc2VfbmFtZSA9IGluc3Rh
bnRpYXRpb25fbmFtZSArICIvIjsKKyAgICAgICAgdGVzdF9jYXNlX25hbWUgKz0gdGVzdF9pbmZv
LT50ZXN0X2Nhc2VfYmFzZV9uYW1lOwogCi0gICAgICAgIGludCBpID0gMDsKKyAgICAgICAgc2l6
ZV90IGkgPSAwOworICAgICAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gdGVzdF9wYXJhbV9uYW1l
czsKICAgICAgICAgZm9yICh0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxQYXJhbVR5cGU+OjppdGVy
YXRvciBwYXJhbV9pdCA9CiAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5iZWdpbigpOwogICAg
ICAgICAgICAgIHBhcmFtX2l0ICE9IGdlbmVyYXRvci5lbmQoKTsgKytwYXJhbV9pdCwgKytpKSB7
CiAgICAgICAgICAgTWVzc2FnZSB0ZXN0X25hbWVfc3RyZWFtOwotICAgICAgICAgIHRlc3RfbmFt
ZV9zdHJlYW0gPDwgdGVzdF9pbmZvLT50ZXN0X2Jhc2VfbmFtZS5jX3N0cigpIDw8ICIvIiA8PCBp
OwotICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok1ha2VBbmRSZWdpc3RlclRlc3RJbmZv
KAotICAgICAgICAgICAgICB0ZXN0X2Nhc2VfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19zdHIo
KSwKKworICAgICAgICAgIHN0ZDo6c3RyaW5nIHBhcmFtX25hbWUgPSBuYW1lX2Z1bmMoCisgICAg
ICAgICAgICAgIFRlc3RQYXJhbUluZm88UGFyYW1UeXBlPigqcGFyYW1faXQsIGkpKTsKKworICAg
ICAgICAgIEdURVNUX0NIRUNLXyhJc1ZhbGlkUGFyYW1OYW1lKHBhcmFtX25hbWUpKQorICAgICAg
ICAgICAgICA8PCAiUGFyYW1ldGVyaXplZCB0ZXN0IG5hbWUgJyIgPDwgcGFyYW1fbmFtZQorICAg
ICAgICAgICAgICA8PCAiJyBpcyBpbnZhbGlkLCBpbiAiIDw8IGZpbGUKKyAgICAgICAgICAgICAg
PDwgIiBsaW5lICIgPDwgbGluZSA8PCBzdGQ6OmVuZGw7CisKKyAgICAgICAgICBHVEVTVF9DSEVD
S18odGVzdF9wYXJhbV9uYW1lcy5jb3VudChwYXJhbV9uYW1lKSA9PSAwKQorICAgICAgICAgICAg
ICA8PCAiRHVwbGljYXRlIHBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lICciIDw8IHBhcmFtX25hbWUK
KyAgICAgICAgICAgICAgPDwgIicsIGluICIgPDwgZmlsZSA8PCAiIGxpbmUgIiA8PCBsaW5lIDw8
IHN0ZDo6ZW5kbDsKKworICAgICAgICAgIHRlc3RfcGFyYW1fbmFtZXMuaW5zZXJ0KHBhcmFtX25h
bWUpOworCisgICAgICAgICAgdGVzdF9uYW1lX3N0cmVhbSA8PCB0ZXN0X2luZm8tPnRlc3RfYmFz
ZV9uYW1lIDw8ICIvIiA8PCBwYXJhbV9uYW1lOworICAgICAgICAgIE1ha2VBbmRSZWdpc3RlclRl
c3RJbmZvKAorICAgICAgICAgICAgICB0ZXN0X2Nhc2VfbmFtZS5jX3N0cigpLAogICAgICAgICAg
ICAgICB0ZXN0X25hbWVfc3RyZWFtLkdldFN0cmluZygpLmNfc3RyKCksCi0gICAgICAgICAgICAg
ICIiLCAgLy8gdGVzdF9jYXNlX2NvbW1lbnQKLSAgICAgICAgICAgICAgIiIsICAvLyBjb21tZW50
OyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBwcm92aWRlIHBhcmFtZXRlciB2YWx1ZQotICAgICAg
ICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHJlc2Vu
dGF0aW9uLgorICAgICAgICAgICAgICBOVUxMLCAgLy8gTm8gdHlwZSBwYXJhbWV0ZXIuCisgICAg
ICAgICAgICAgIFByaW50VG9TdHJpbmcoKnBhcmFtX2l0KS5jX3N0cigpLAorICAgICAgICAgICAg
ICBjb2RlX2xvY2F0aW9uXywKICAgICAgICAgICAgICAgR2V0VGVzdENhc2VUeXBlSWQoKSwKICAg
ICAgICAgICAgICAgVGVzdENhc2U6OlNldFVwVGVzdENhc2UsCiAgICAgICAgICAgICAgIFRlc3RD
YXNlOjpUZWFyRG93blRlc3RDYXNlLApAQCAtNTMwLDE3ICs2MDQsNTAgQEAgY2xhc3MgUGFyYW1l
dGVyaXplZFRlc3RDYXNlSW5mbyA6IHB1YmxpYyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvQmFz
ZSB7CiAgICAgICAgIHRlc3RfYmFzZV9uYW1lKGFfdGVzdF9iYXNlX25hbWUpLAogICAgICAgICB0
ZXN0X21ldGFfZmFjdG9yeShhX3Rlc3RfbWV0YV9mYWN0b3J5KSB7fQogCi0gICAgY29uc3QgU3Ry
aW5nIHRlc3RfY2FzZV9iYXNlX25hbWU7Ci0gICAgY29uc3QgU3RyaW5nIHRlc3RfYmFzZV9uYW1l
OworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RfY2FzZV9iYXNlX25hbWU7CisgICAgY29uc3Qg
c3RkOjpzdHJpbmcgdGVzdF9iYXNlX25hbWU7CiAgICAgY29uc3Qgc2NvcGVkX3B0cjxUZXN0TWV0
YUZhY3RvcnlCYXNlPFBhcmFtVHlwZT4gPiB0ZXN0X21ldGFfZmFjdG9yeTsKICAgfTsKICAgdHlw
ZWRlZiA6OnN0ZDo6dmVjdG9yPGxpbmtlZF9wdHI8VGVzdEluZm8+ID4gVGVzdEluZm9Db250YWlu
ZXI7Ci0gIC8vIEtlZXBzIHBhaXJzIG9mIDxJbnN0YW50aWF0aW9uIG5hbWUsIFNlcXVlbmNlIGdl
bmVyYXRvciBjcmVhdGlvbiBmdW5jdGlvbj4KLSAgLy8gcmVjZWl2ZWQgZnJvbSBJTlNUQU5USUFU
RV9URVNUX0NBU0VfUCBtYWNyb3MuCi0gIHR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nLCBHZW5lcmF0b3JDcmVhdGlvbkZ1bmMqPiA+Ci0gICAgICBJbnN0YW50aWF0aW9uQ29u
dGFpbmVyOworICAvLyBSZWNvcmRzIGRhdGEgcmVjZWl2ZWQgZnJvbSBJTlNUQU5USUFURV9URVNU
X0NBU0VfUCBtYWNyb3M6CisgIC8vICA8SW5zdGFudGlhdGlvbiBuYW1lLCBTZXF1ZW5jZSBnZW5l
cmF0b3IgY3JlYXRpb24gZnVuY3Rpb24sCisgIC8vICAgICBOYW1lIGdlbmVyYXRvciBmdW5jdGlv
biwgU291cmNlIGZpbGUsIFNvdXJjZSBsaW5lPgorICBzdHJ1Y3QgSW5zdGFudGlhdGlvbkluZm8g
eworICAgICAgSW5zdGFudGlhdGlvbkluZm8oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWVfaW4sCisg
ICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3JDcmVhdGlvbkZ1bmMqIGdlbmVyYXRvcl9p
biwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtTmFtZUdlbmVyYXRvckZ1bmMqIG5hbWVf
ZnVuY19pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGVfaW4sCisg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZV9pbikKKyAgICAgICAgICA6IG5hbWUobmFt
ZV9pbiksCisgICAgICAgICAgICBnZW5lcmF0b3IoZ2VuZXJhdG9yX2luKSwKKyAgICAgICAgICAg
IG5hbWVfZnVuYyhuYW1lX2Z1bmNfaW4pLAorICAgICAgICAgICAgZmlsZShmaWxlX2luKSwKKyAg
ICAgICAgICAgIGxpbmUobGluZV9pbikge30KKworICAgICAgc3RkOjpzdHJpbmcgbmFtZTsKKyAg
ICAgIEdlbmVyYXRvckNyZWF0aW9uRnVuYyogZ2VuZXJhdG9yOworICAgICAgUGFyYW1OYW1lR2Vu
ZXJhdG9yRnVuYyogbmFtZV9mdW5jOworICAgICAgY29uc3QgY2hhciogZmlsZTsKKyAgICAgIGlu
dCBsaW5lOworICB9OworICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8SW5zdGFudGlhdGlvbkluZm8+
IEluc3RhbnRpYXRpb25Db250YWluZXI7CiAKLSAgY29uc3QgU3RyaW5nIHRlc3RfY2FzZV9uYW1l
XzsKKyAgc3RhdGljIGJvb2wgSXNWYWxpZFBhcmFtTmFtZShjb25zdCBzdGQ6OnN0cmluZyYgbmFt
ZSkgeworICAgIC8vIENoZWNrIGZvciBlbXB0eSBzdHJpbmcKKyAgICBpZiAobmFtZS5lbXB0eSgp
KQorICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQ2hlY2sgZm9yIGludmFsaWQgY2hhcmFj
dGVycworICAgIGZvciAoc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBpbmRleCA9IDA7IGluZGV4IDwg
bmFtZS5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgIGlmICghaXNhbG51bShuYW1lW2luZGV4XSkg
JiYgbmFtZVtpbmRleF0gIT0gJ18nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7CisgIH0KKworICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0X2Nhc2VfbmFt
ZV87CisgIENvZGVMb2NhdGlvbiBjb2RlX2xvY2F0aW9uXzsKICAgVGVzdEluZm9Db250YWluZXIg
dGVzdHNfOwogICBJbnN0YW50aWF0aW9uQ29udGFpbmVyIGluc3RhbnRpYXRpb25zXzsKIApAQCAt
NTY4LDggKzY3NSw3IEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IHsKICAg
dGVtcGxhdGUgPGNsYXNzIFRlc3RDYXNlPgogICBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvPFRl
c3RDYXNlPiogR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVyKAogICAgICAgY29uc3QgY2hhciogdGVz
dF9jYXNlX25hbWUsCi0gICAgICBjb25zdCBjaGFyKiBmaWxlLAotICAgICAgaW50IGxpbmUpIHsK
KyAgICAgIENvZGVMb2NhdGlvbiBjb2RlX2xvY2F0aW9uKSB7CiAgICAgUGFyYW1ldGVyaXplZFRl
c3RDYXNlSW5mbzxUZXN0Q2FzZT4qIHR5cGVkX3Rlc3RfaW5mbyA9IE5VTEw7CiAgICAgZm9yIChU
ZXN0Q2FzZUluZm9Db250YWluZXI6Oml0ZXJhdG9yIGl0ID0gdGVzdF9jYXNlX2luZm9zXy5iZWdp
bigpOwogICAgICAgICAgaXQgIT0gdGVzdF9jYXNlX2luZm9zXy5lbmQoKTsgKytpdCkgewpAQCAt
NTc4LDggKzY4NCw4IEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IHsKICAg
ICAgICAgICAvLyBDb21wbGFpbiBhYm91dCBpbmNvcnJlY3QgdXNhZ2Ugb2YgR29vZ2xlIFRlc3Qg
ZmFjaWxpdGllcwogICAgICAgICAgIC8vIGFuZCB0ZXJtaW5hdGUgdGhlIHByb2dyYW0gc2luY2Ug
d2UgY2Fubm90IGd1YXJhbnR5IGNvcnJlY3QKICAgICAgICAgICAvLyB0ZXN0IGNhc2Ugc2V0dXAg
YW5kIHRlYXItZG93biBpbiB0aGlzIGNhc2UuCi0gICAgICAgICAgUmVwb3J0SW52YWxpZFRlc3RD
YXNlVHlwZSh0ZXN0X2Nhc2VfbmFtZSwgIGZpbGUsIGxpbmUpOwotICAgICAgICAgIGFib3J0KCk7
CisgICAgICAgICAgUmVwb3J0SW52YWxpZFRlc3RDYXNlVHlwZSh0ZXN0X2Nhc2VfbmFtZSwgY29k
ZV9sb2NhdGlvbik7CisgICAgICAgICAgcG9zaXg6OkFib3J0KCk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBhcmUgc3VyZSB0aGF0IHRoZSBvYmplY3Qg
d2UgZm91bmQgaXMgb2YgdGhlIHNhbWUKICAgICAgICAgICAvLyB0eXBlIHdlIGFyZSBsb29raW5n
IGZvciwgc28gd2UgZG93bmNhc3QgaXQgdG8gdGhhdCB0eXBlCkBAIC01OTEsNyArNjk3LDggQEAg
Y2xhc3MgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgewogICAgICAgfQogICAgIH0KICAg
ICBpZiAodHlwZWRfdGVzdF9pbmZvID09IE5VTEwpIHsKLSAgICAgIHR5cGVkX3Rlc3RfaW5mbyA9
IG5ldyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvPFRlc3RDYXNlPih0ZXN0X2Nhc2VfbmFtZSk7
CisgICAgICB0eXBlZF90ZXN0X2luZm8gPSBuZXcgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbzxU
ZXN0Q2FzZT4oCisgICAgICAgICAgdGVzdF9jYXNlX25hbWUsIGNvZGVfbG9jYXRpb24pOwogICAg
ICAgdGVzdF9jYXNlX2luZm9zXy5wdXNoX2JhY2sodHlwZWRfdGVzdF9pbmZvKTsKICAgICB9CiAg
ICAgcmV0dXJuIHR5cGVkX3Rlc3RfaW5mbzsKQEAgLTYxNCw2ICs3MjEsNCBAQCBjbGFzcyBQYXJh
bWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSB7CiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0g
IC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAKLSNlbmRpZiAgLy8gIEdURVNUX0hBU19QQVJBTV9URVNU
Ci0KICNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9V
VElMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LWFyY2guaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODM3MDBl
MDZkOThjMzZmNjQ4NzI5MWMzZjkzMTgwN2FmMzUzZjc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LWFy
Y2guaApAQCAtMCwwICsxLDEwMCBAQAorLy8gQ29weXJpZ2h0IDIwMTUsIEdvb2dsZSBJbmMuCisv
LyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisv
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorLy8KKy8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJh
bWV3b3JrIChHb29nbGUgVGVzdCkKKy8vCisvLyBUaGlzIGhlYWRlciBmaWxlIGRlZmluZXMgdGhl
IEdURVNUX09TXyogbWFjcm8uCisvLyBJdCBpcyBzZXBhcmF0ZSBmcm9tIGd0ZXN0LXBvcnQuaCBz
byB0aGF0IGN1c3RvbS9ndGVzdC1wb3J0LmggY2FuIGluY2x1ZGUgaXQuCisKKyNpZm5kZWYgR1RF
U1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QT1JUX0FSQ0hfSF8KKyNkZWZpbmUgR1RF
U1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QT1JUX0FSQ0hfSF8KKworLy8gRGV0ZXJt
aW5lcyB0aGUgcGxhdGZvcm0gb24gd2hpY2ggR29vZ2xlIFRlc3QgaXMgY29tcGlsZWQuCisjaWZk
ZWYgX19DWUdXSU5fXworIyBkZWZpbmUgR1RFU1RfT1NfQ1lHV0lOIDEKKyNlbGlmIGRlZmluZWQg
X19TWU1CSUFOMzJfXworIyBkZWZpbmUgR1RFU1RfT1NfU1lNQklBTiAxCisjZWxpZiBkZWZpbmVk
IF9XSU4zMgorIyBkZWZpbmUgR1RFU1RfT1NfV0lORE9XUyAxCisjIGlmZGVmIF9XSU4zMl9XQ0UK
KyMgIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTX01PQklMRSAxCisjIGVsaWYgZGVmaW5lZChfX01J
TkdXX18pIHx8IGRlZmluZWQoX19NSU5HVzMyX18pCisjICBkZWZpbmUgR1RFU1RfT1NfV0lORE9X
U19NSU5HVyAxCisjIGVsaWYgZGVmaW5lZChXSU5BUElfRkFNSUxZKQorIyAgaW5jbHVkZSA8d2lu
YXBpZmFtaWx5Lmg+CisjICBpZiBXSU5BUElfRkFNSUxZX1BBUlRJVElPTihXSU5BUElfUEFSVElU
SU9OX0RFU0tUT1ApCisjICAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfREVTS1RPUCAxCisjICBl
bGlmIFdJTkFQSV9GQU1JTFlfUEFSVElUSU9OKFdJTkFQSV9QQVJUSVRJT05fUEhPTkVfQVBQKQor
IyAgIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTX1BIT05FIDEKKyMgIGVsaWYgV0lOQVBJX0ZBTUlM
WV9QQVJUSVRJT04oV0lOQVBJX1BBUlRJVElPTl9BUFApCisjICAgZGVmaW5lIEdURVNUX09TX1dJ
TkRPV1NfUlQgMQorIyAgZWxpZiBXSU5BUElfRkFNSUxZX1BBUlRJVElPTihXSU5BUElfUEFSVElU
SU9OX1RWX1RJVExFKQorIyAgIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTX1BIT05FIDEKKyMgICBk
ZWZpbmUgR1RFU1RfT1NfV0lORE9XU19UVl9USVRMRSAxCisjICBlbHNlCisgICAgLy8gV0lOQVBJ
X0ZBTUlMWSBkZWZpbmVkIGJ1dCBubyBrbm93biBwYXJ0aXRpb24gbWF0Y2hlZC4KKyAgICAvLyBE
ZWZhdWx0IHRvIGRlc2t0b3AuCisjICAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfREVTS1RPUCAx
CisjICBlbmRpZgorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19ERVNLVE9QIDEK
KyMgZW5kaWYgIC8vIF9XSU4zMl9XQ0UKKyNlbGlmIGRlZmluZWQgX19BUFBMRV9fCisjIGRlZmlu
ZSBHVEVTVF9PU19NQUMgMQorIyBpZiBUQVJHRVRfT1NfSVBIT05FCisjICBkZWZpbmUgR1RFU1Rf
T1NfSU9TIDEKKyMgZW5kaWYKKyNlbGlmIGRlZmluZWQgX19GcmVlQlNEX18KKyMgZGVmaW5lIEdU
RVNUX09TX0ZSRUVCU0QgMQorI2VsaWYgZGVmaW5lZCBfX0Z1Y2hzaWFfXworIyBkZWZpbmUgR1RF
U1RfT1NfRlVDSFNJQSAxCisjZWxpZiBkZWZpbmVkIF9fbGludXhfXworIyBkZWZpbmUgR1RFU1Rf
T1NfTElOVVggMQorIyBpZiBkZWZpbmVkIF9fQU5EUk9JRF9fCisjICBkZWZpbmUgR1RFU1RfT1Nf
TElOVVhfQU5EUk9JRCAxCisjIGVuZGlmCisjZWxpZiBkZWZpbmVkIF9fTVZTX18KKyMgZGVmaW5l
IEdURVNUX09TX1pPUyAxCisjZWxpZiBkZWZpbmVkKF9fc3VuKSAmJiBkZWZpbmVkKF9fU1ZSNCkK
KyMgZGVmaW5lIEdURVNUX09TX1NPTEFSSVMgMQorI2VsaWYgZGVmaW5lZChfQUlYKQorIyBkZWZp
bmUgR1RFU1RfT1NfQUlYIDEKKyNlbGlmIGRlZmluZWQoX19ocHV4KQorIyBkZWZpbmUgR1RFU1Rf
T1NfSFBVWCAxCisjZWxpZiBkZWZpbmVkIF9fbmF0aXZlX2NsaWVudF9fCisjIGRlZmluZSBHVEVT
VF9PU19OQUNMIDEKKyNlbGlmIGRlZmluZWQgX19OZXRCU0RfXworIyBkZWZpbmUgR1RFU1RfT1Nf
TkVUQlNEIDEKKyNlbGlmIGRlZmluZWQgX19PcGVuQlNEX18KKyMgZGVmaW5lIEdURVNUX09TX09Q
RU5CU0QgMQorI2VsaWYgZGVmaW5lZCBfX1FOWF9fCisjIGRlZmluZSBHVEVTVF9PU19RTlggMQor
I2VuZGlmICAvLyBfX0NZR1dJTl9fCisKKyNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9J
TlRFUk5BTF9HVEVTVF9QT1JUX0FSQ0hfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgKaW5kZXggZjhi
ZTgwOTI2Zjg5ODdkM2M5NTgyODYxNjAyMDEwYmZmNmU2NGQ2ZC4uNzg2NDk3ZDg1NGM5N2YxYjZh
YjkzNzJhMjQxYzFmYTE1NWEzMGE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgKQEAgLTI3LDI5
ICsyNyw1NyBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogLy8KLS8vIEF1dGhv
cnM6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwogLy8gTG93LWxldmVsIHR5cGVz
IGFuZCB1dGlsaXRpZXMgZm9yIHBvcnRpbmcgR29vZ2xlIFRlc3QgdG8gdmFyaW91cwotLy8gcGxh
dGZvcm1zLiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuICBETyBO
T1QgVVNFCi0vLyBUSEVNIElOIFVTRVIgQ09ERS4KKy8vIHBsYXRmb3Jtcy4gIEFsbCBtYWNyb3Mg
ZW5kaW5nIHdpdGggXyBhbmQgc3ltYm9scyBkZWZpbmVkIGluIGFuCisvLyBpbnRlcm5hbCBuYW1l
c3BhY2UgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLiAgQ29kZQorLy8gb3V0
c2lkZSBHb29nbGUgVGVzdCBNVVNUIE5PVCBVU0UgVEhFTSBESVJFQ1RMWS4gIE1hY3JvcyB0aGF0
IGRvbid0CisvLyBlbmQgd2l0aCBfIGFyZSBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MgcHVibGljIEFQ
SSBhbmQgY2FuIGJlIHVzZWQgYnkKKy8vIGNvZGUgb3V0c2lkZSBHb29nbGUgVGVzdC4KKy8vCisv
LyBUaGlzIGZpbGUgaXMgZnVuZGFtZW50YWwgdG8gR29vZ2xlIFRlc3QuICBBbGwgb3RoZXIgR29v
Z2xlIFRlc3Qgc291cmNlCisvLyBmaWxlcyBhcmUgZXhwZWN0ZWQgdG8gI2luY2x1ZGUgdGhpcy4g
IFRoZXJlZm9yZSwgaXQgY2Fubm90ICNpbmNsdWRlCisvLyBhbnkgb3RoZXIgR29vZ2xlIFRlc3Qg
aGVhZGVyLgorCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCiAKICNpZm5kZWYg
R1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QT1JUX0hfCiAjZGVmaW5lIEdURVNU
X0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUE9SVF9IXwogCi0vLyBUaGUgdXNlciBjYW4g
ZGVmaW5lIHRoZSBmb2xsb3dpbmcgbWFjcm9zIGluIHRoZSBidWlsZCBzY3JpcHQgdG8KLS8vIGNv
bnRyb2wgR29vZ2xlIFRlc3QncyBiZWhhdmlvci4gIElmIHRoZSB1c2VyIGRvZXNuJ3QgZGVmaW5l
IGEgbWFjcm8KLS8vIGluIHRoaXMgbGlzdCwgR29vZ2xlIFRlc3Qgd2lsbCBkZWZpbmUgaXQuCisv
LyBFbnZpcm9ubWVudC1kZXNjcmliaW5nIG1hY3JvcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKy8vCisvLyBHb29nbGUgVGVzdCBjYW4gYmUgdXNlZCBpbiBtYW55IGRpZmZlcmVu
dCBlbnZpcm9ubWVudHMuICBNYWNyb3MgaW4KKy8vIHRoaXMgc2VjdGlvbiB0ZWxsIEdvb2dsZSBU
ZXN0IHdoYXQga2luZCBvZiBlbnZpcm9ubWVudCBpdCBpcyBiZWluZworLy8gdXNlZCBpbiwgc3Vj
aCB0aGF0IEdvb2dsZSBUZXN0IGNhbiBwcm92aWRlIGVudmlyb25tZW50LXNwZWNpZmljCisvLyBm
ZWF0dXJlcyBhbmQgaW1wbGVtZW50YXRpb25zLgorLy8KKy8vIEdvb2dsZSBUZXN0IHRyaWVzIHRv
IGF1dG9tYXRpY2FsbHkgZGV0ZWN0IHRoZSBwcm9wZXJ0aWVzIG9mIGl0cworLy8gZW52aXJvbm1l
bnQsIHNvIHVzZXJzIHVzdWFsbHkgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB0aGVzZQorLy8g
bWFjcm9zLiAgSG93ZXZlciwgdGhlIGF1dG9tYXRpYyBkZXRlY3Rpb24gaXMgbm90IHBlcmZlY3Qu
CisvLyBTb21ldGltZXMgaXQncyBuZWNlc3NhcnkgZm9yIGEgdXNlciB0byBkZWZpbmUgc29tZSBv
ZiB0aGUgZm9sbG93aW5nCisvLyBtYWNyb3MgaW4gdGhlIGJ1aWxkIHNjcmlwdCB0byBvdmVycmlk
ZSBHb29nbGUgVGVzdCdzIGRlY2lzaW9ucy4KKy8vCisvLyBJZiB0aGUgdXNlciBkb2Vzbid0IGRl
ZmluZSBhIG1hY3JvIGluIHRoZSBsaXN0LCBHb29nbGUgVGVzdCB3aWxsCisvLyBwcm92aWRlIGEg
ZGVmYXVsdCBkZWZpbml0aW9uLiAgQWZ0ZXIgdGhpcyBoZWFkZXIgaXMgI2luY2x1ZGVkLCBhbGwK
Ky8vIG1hY3JvcyBpbiB0aGlzIGxpc3Qgd2lsbCBiZSBkZWZpbmVkIHRvIGVpdGhlciAxIG9yIDAu
CisvLworLy8gTm90ZXMgdG8gbWFpbnRhaW5lcnM6CisvLyAgIC0gRWFjaCBtYWNybyBoZXJlIGlz
IGEgdXNlci10d2Vha2FibGUga25vYjsgZG8gbm90IGdyb3cgdGhlIGxpc3QKKy8vICAgICBsaWdo
dGx5LgorLy8gICAtIFVzZSAjaWYgdG8ga2V5IG9mZiB0aGVzZSBtYWNyb3MuICBEb24ndCB1c2Ug
I2lmZGVmIG9yICIjaWYKKy8vICAgICBkZWZpbmVkKC4uLikiLCB3aGljaCB3aWxsIG5vdCB3b3Jr
IGFzIHRoZXNlIG1hY3JvcyBhcmUgQUxXQVlTCisvLyAgICAgZGVmaW5lZC4KIC8vCiAvLyAgIEdU
RVNUX0hBU19DTE9ORSAgICAgICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhh
dCBjbG9uZSgyKQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcy9pc24ndCBhdmFp
bGFibGUuCiAvLyAgIEdURVNUX0hBU19FWENFUFRJT05TICAgICAtIERlZmluZSBpdCB0byAxLzAg
dG8gaW5kaWNhdGUgdGhhdCBleGNlcHRpb25zCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFyZSBlbmFibGVkLgogLy8gICBHVEVTVF9IQVNfR0xPQkFMX1NUUklORyAgLSBEZWZpbmUg
aXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgOjpzdHJpbmcKLS8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlIChzb21lIHN5c3RlbXMgZGVmaW5lCi0vLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6c3RyaW5nLCB3aGljaCBpcyBkaWZmZXJlbnQg
dG8gc3RkOjpzdHJpbmcpLgotLy8gICBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcgLSBEZWZpbmUg
aXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgOjpzdHJpbmcKLS8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlIChzb21lIHN5c3RlbXMgZGVmaW5lCi0vLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6d3N0cmluZywgd2hpY2ggaXMgZGlmZmVyZW50
IHRvIHN0ZDo6d3N0cmluZykuCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzL2lz
bid0IGF2YWlsYWJsZQorLy8gICBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcgLSBEZWZpbmUgaXQg
dG8gMS8wIHRvIGluZGljYXRlIHRoYXQgOjp3c3RyaW5nCisvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlzL2lzbid0IGF2YWlsYWJsZQorLy8gICBHVEVTVF9IQVNfUE9TSVhfUkUgICAg
ICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgUE9TSVggcmVndWxhcgorLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9ucyBhcmUvYXJlbid0IGF2YWls
YWJsZS4KIC8vICAgR1RFU1RfSEFTX1BUSFJFQUQgICAgICAgIC0gRGVmaW5lIGl0IHRvIDEvMCB0
byBpbmRpY2F0ZSB0aGF0IDxwdGhyZWFkLmg+CiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlzL2lzbid0IGF2YWlsYWJsZS4KIC8vICAgR1RFU1RfSEFTX1JUVEkgICAgICAgICAgIC0g
RGVmaW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB0aGF0IFJUVEkgaXMvaXNuJ3QKQEAgLTYyLDEw
ICs5MCwxNiBAQAogLy8gICBHVEVTVF9IQVNfU0VIICAgICAgICAgICAgLSBEZWZpbmUgaXQgdG8g
MS8wIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbXBpbGVyIHN1cHBvcnRzIE1pY3Jvc29mdCdzICJTdHJ1Y3R1cmVkCiAvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbiBIYW5kbGluZyIuCisvLyAgIEdURVNUX0hB
U19TVFJFQU1fUkVESVJFQ1RJT04KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gRGVm
aW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZQorLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwbGF0Zm9ybSBzdXBwb3J0cyBJL08gc3RyZWFtIHJlZGlyZWN0aW9uIHVz
aW5nCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cCgpIGFuZCBkdXAyKCkuCiAv
LyAgIEdURVNUX1VTRV9PV05fVFIxX1RVUExFICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNh
dGUgd2hldGhlciBHb29nbGUKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdCdz
IG93biB0cjEgdHVwbGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGJlCiAvLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVzZWQuICBVbnVzZWQgd2hlbiB0aGUgdXNlciBzZXRzCiAvLyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX0hBU19UUjFfVFVQTEUgdG8gMC4KKy8vICAg
R1RFU1RfTEFOR19DWFgxMSAgICAgICAgIC0gRGVmaW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB0
aGF0IEdvb2dsZSBUZXN0CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGJ1aWxk
aW5nIGluIEMrKzExL0MrKzk4IG1vZGUuCiAvLyAgIEdURVNUX0xJTktFRF9BU19TSEFSRURfTElC
UkFSWQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBEZWZpbmUgdG8gMSB3aGVuIGNv
bXBpbGluZyB0ZXN0cyB0aGF0IHVzZQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
b29nbGUgVGVzdCBhcyBhIHNoYXJlZCBsaWJyYXJ5IChrbm93biBhcwpAQCAtNzMsMjMgKzEwNyw0
MyBAQAogLy8gICBHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJBUlkKIC8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC0gRGVmaW5lIHRvIDEgd2hlbiBjb21waWxpbmcgR29vZ2xlIFRlc3QgaXRz
ZWxmCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGEgc2hhcmVkIGxpYnJhcnku
Ci0KLS8vIFRoaXMgaGVhZGVyIGRlZmluZXMgdGhlIGZvbGxvd2luZyB1dGlsaXRpZXM6CisvLyAg
IEdURVNUX0RFRkFVTFRfREVBVEhfVEVTVF9TVFlMRQorLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLSBUaGUgZGVmYXVsdCB2YWx1ZSBvZiAtLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUuCisv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBsZWdhY3kgZGVmYXVsdCBoYXMgYmVl
biAiZmFzdCIgaW4gdGhlIG9wZW4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291
cmNlIHZlcnNpb24gc2luY2UgMjAwOC4gVGhlIHJlY29tbWVuZGVkIHZhbHVlCisvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlzICJ0aHJlYWRzYWZlIiwgYW5kIGNhbiBiZSBzZXQgaW4K
Ky8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tL2d0ZXN0LXBvcnQuaC4KKwor
Ly8gUGxhdGZvcm0taW5kaWNhdGluZyBtYWNyb3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gTWFjcm9zIGluZGljYXRpbmcgdGhlIHBsYXRmb3JtIG9uIHdoaWNoIEdvb2ds
ZSBUZXN0IGlzIGJlaW5nIHVzZWQKKy8vIChhIG1hY3JvIGlzIGRlZmluZWQgdG8gMSBpZiBjb21w
aWxlZCBvbiB0aGUgZ2l2ZW4gcGxhdGZvcm07CisvLyBvdGhlcndpc2UgVU5ERUZJTkVEIC0tIGl0
J3MgbmV2ZXIgZGVmaW5lZCB0byAwLikuICBHb29nbGUgVGVzdAorLy8gZGVmaW5lcyB0aGVzZSBt
YWNyb3MgYXV0b21hdGljYWxseS4gIENvZGUgb3V0c2lkZSBHb29nbGUgVGVzdCBNVVNUCisvLyBO
T1QgZGVmaW5lIHRoZW0uCiAvLwotLy8gTWFjcm9zIGluZGljYXRpbmcgdGhlIGN1cnJlbnQgcGxh
dGZvcm0gKGRlZmluZWQgdG8gMSBpZiBjb21waWxlZCBvbgotLy8gdGhlIGdpdmVuIHBsYXRmb3Jt
OyBvdGhlcndpc2UgdW5kZWZpbmVkKToKIC8vICAgR1RFU1RfT1NfQUlYICAgICAgLSBJQk0gQUlY
CiAvLyAgIEdURVNUX09TX0NZR1dJTiAgIC0gQ3lnd2luCi0vLyAgIEdURVNUX09TX0xJTlVYICAg
IC0gTGludXgKIC8vICAgR1RFU1RfT1NfRlJFRUJTRCAgLSBGcmVlQlNECi0vLyAgIEdURVNUX09T
X0hVUkQgICAgIC0gR05VL0h1cmQKKy8vICAgR1RFU1RfT1NfRlVDSFNJQSAgLSBGdWNoc2lhCisv
LyAgIEdURVNUX09TX0hQVVggICAgIC0gSFAtVVgKKy8vICAgR1RFU1RfT1NfTElOVVggICAgLSBM
aW51eAorLy8gICAgIEdURVNUX09TX0xJTlVYX0FORFJPSUQgLSBHb29nbGUgQW5kcm9pZAogLy8g
ICBHVEVTVF9PU19NQUMgICAgICAtIE1hYyBPUyBYCisvLyAgICAgR1RFU1RfT1NfSU9TICAgIC0g
aU9TCisvLyAgIEdURVNUX09TX05BQ0wgICAgIC0gR29vZ2xlIE5hdGl2ZSBDbGllbnQgKE5hQ2wp
CisvLyAgIEdURVNUX09TX05FVEJTRCAgIC0gTmV0QlNECisvLyAgIEdURVNUX09TX09QRU5CU0Qg
IC0gT3BlbkJTRAorLy8gICBHVEVTVF9PU19RTlggICAgICAtIFFOWAogLy8gICBHVEVTVF9PU19T
T0xBUklTICAtIFN1biBTb2xhcmlzCiAvLyAgIEdURVNUX09TX1NZTUJJQU4gIC0gU3ltYmlhbgog
Ly8gICBHVEVTVF9PU19XSU5ET1dTICAtIFdpbmRvd3MgKERlc2t0b3AsIE1pbkdXLCBvciBNb2Jp
bGUpCiAvLyAgICAgR1RFU1RfT1NfV0lORE9XU19ERVNLVE9QICAtIFdpbmRvd3MgRGVza3RvcAog
Ly8gICAgIEdURVNUX09TX1dJTkRPV1NfTUlOR1cgICAgLSBNaW5HVwogLy8gICAgIEdURVNUX09T
X1dJTkRPV1NfTU9CSUxFICAgLSBXaW5kb3dzIE1vYmlsZQorLy8gICAgIEdURVNUX09TX1dJTkRP
V1NfUEhPTkUgICAgLSBXaW5kb3dzIFBob25lCisvLyAgICAgR1RFU1RfT1NfV0lORE9XU19SVCAg
ICAgICAtIFdpbmRvd3MgU3RvcmUgQXBwL1dpblJUCiAvLyAgIEdURVNUX09TX1pPUyAgICAgIC0g
ei9PUwogLy8KIC8vIEFtb25nIHRoZSBwbGF0Zm9ybXMsIEN5Z3dpbiwgTGludXgsIE1heCBPUyBY
LCBhbmQgV2luZG93cyBoYXZlIHRoZQpAQCAtOTksMjAgKzE1Myw1MCBAQAogLy8gZ29vZ2xldGVz
dGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tIChwYXRjaGVzIGZvciBmaXhpbmcgdGhlbSBhcmUK
IC8vIGV2ZW4gbW9yZSB3ZWxjb21lISkuCiAvLwotLy8gTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxl
IHRoYXQgbm9uZSBvZiB0aGUgR1RFU1RfT1NfKiBtYWNyb3MgYXJlIGRlZmluZWQuCisvLyBJdCBp
cyBwb3NzaWJsZSB0aGF0IG5vbmUgb2YgdGhlIEdURVNUX09TXyogbWFjcm9zIGFyZSBkZWZpbmVk
LgorCisvLyBGZWF0dXJlLWluZGljYXRpbmcgbWFjcm9zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gTWFjcm9zIGluZGljYXRpbmcgd2hpY2ggR29vZ2xlIFRlc3QgZmVhdHVy
ZXMgYXJlIGF2YWlsYWJsZSAoYSBtYWNybworLy8gaXMgZGVmaW5lZCB0byAxIGlmIHRoZSBjb3Jy
ZXNwb25kaW5nIGZlYXR1cmUgaXMgc3VwcG9ydGVkOworLy8gb3RoZXJ3aXNlIFVOREVGSU5FRCAt
LSBpdCdzIG5ldmVyIGRlZmluZWQgdG8gMC4pLiAgR29vZ2xlIFRlc3QKKy8vIGRlZmluZXMgdGhl
c2UgbWFjcm9zIGF1dG9tYXRpY2FsbHkuICBDb2RlIG91dHNpZGUgR29vZ2xlIFRlc3QgTVVTVAor
Ly8gTk9UIGRlZmluZSB0aGVtLgorLy8KKy8vIFRoZXNlIG1hY3JvcyBhcmUgcHVibGljIHNvIHRo
YXQgcG9ydGFibGUgdGVzdHMgY2FuIGJlIHdyaXR0ZW4uCisvLyBTdWNoIHRlc3RzIHR5cGljYWxs
eSBzdXJyb3VuZCBjb2RlIHVzaW5nIGEgZmVhdHVyZSB3aXRoIGFuICNpZgorLy8gd2hpY2ggY29u
dHJvbHMgdGhhdCBjb2RlLiAgRm9yIGV4YW1wbGU6CisvLworLy8gI2lmIEdURVNUX0hBU19ERUFU
SF9URVNUCisvLyAgIEVYUEVDVF9ERUFUSChEb1NvbWV0aGluZ0RlYWRseSgpKTsKKy8vICNlbmRp
ZgogLy8KLS8vIE1hY3JvcyBpbmRpY2F0aW5nIGF2YWlsYWJsZSBHb29nbGUgVGVzdCBmZWF0dXJl
cyAoZGVmaW5lZCB0byAxIGlmCi0vLyB0aGUgY29ycmVzcG9uZGluZyBmZWF0dXJlIGlzIHN1cHBv
cnRlZDsgb3RoZXJ3aXNlIHVuZGVmaW5lZCk6CiAvLyAgIEdURVNUX0hBU19DT01CSU5FICAgICAg
LSB0aGUgQ29tYmluZSgpIGZ1bmN0aW9uIChmb3IgdmFsdWUtcGFyYW1ldGVyaXplZAogLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMpCiAvLyAgIEdURVNUX0hBU19ERUFUSF9URVNU
ICAgLSBkZWF0aCB0ZXN0cwotLy8gICBHVEVTVF9IQVNfUEFSQU1fVEVTVCAgIC0gdmFsdWUtcGFy
YW1ldGVyaXplZCB0ZXN0cwogLy8gICBHVEVTVF9IQVNfVFlQRURfVEVTVCAgIC0gdHlwZWQgdGVz
dHMKIC8vICAgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUCAtIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0
cwotLy8gICBHVEVTVF9VU0VTX1BPU0lYX1JFICAgIC0gZW5oYW5jZWQgUE9TSVggcmVnZXggaXMg
dXNlZC4KKy8vICAgR1RFU1RfSVNfVEhSRUFEU0FGRSAgICAtIEdvb2dsZSBUZXN0IGlzIHRocmVh
ZC1zYWZlLgorLy8gICBHT09HTEVURVNUX0NNMDAwNyBETyBOT1QgREVMRVRFCisvLyAgIEdURVNU
X1VTRVNfUE9TSVhfUkUgICAgLSBlbmhhbmNlZCBQT1NJWCByZWdleCBpcyB1c2VkLiBEbyBub3Qg
Y29uZnVzZSB3aXRoCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9IQVNfUE9T
SVhfUkUgKHNlZSBhYm92ZSkgd2hpY2ggdXNlcnMgY2FuCisvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWZpbmUgdGhlbXNlbHZlcy4KIC8vICAgR1RFU1RfVVNFU19TSU1QTEVfUkUgICAt
IG91ciBvd24gc2ltcGxlIHJlZ2V4IGlzIHVzZWQ7Ci0vLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGUgYWJvdmUgdHdvIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGUgYWJvdmUgUkVcYihzKSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZl
LgogLy8gICBHVEVTVF9DQU5fQ09NUEFSRV9OVUxMIC0gYWNjZXB0cyB1bnR5cGVkIE5VTEwgaW4g
RVhQRUNUX0VRKCkuCisKKy8vIE1pc2MgcHVibGljIG1hY3JvcworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gICBHVEVTVF9GTEFHKGZsYWdfbmFtZSkgIC0gcmVmZXJlbmNlcyB0aGUgdmFy
aWFibGUgY29ycmVzcG9uZGluZyB0bworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhl
IGdpdmVuIEdvb2dsZSBUZXN0IGZsYWcuCisKKy8vIEludGVybmFsIHV0aWxpdGllcworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tCisvLworLy8gVGhlIGZvbGxvd2luZyBtYWNyb3MgYW5kIHV0aWxpdGll
cyBhcmUgZm9yIEdvb2dsZSBUZXN0J3MgSU5URVJOQUwKKy8vIHVzZSBvbmx5LiAgQ29kZSBvdXRz
aWRlIEdvb2dsZSBUZXN0IE1VU1QgTk9UIFVTRSBUSEVNIERJUkVDVExZLgogLy8KIC8vIE1hY3Jv
cyBmb3IgYmFzaWMgQysrIGNvZGluZzoKIC8vICAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tF
Ul8gLSBmb3IgZGlzYWJsaW5nIGEgZ2NjIHdhcm5pbmcuCkBAIC0xMjEsMjUgKzIwNSwzNCBAQAog
Ly8gICBHVEVTVF9ESVNBTExPV19BU1NJR05fICAgLSBkaXNhYmxlcyBvcGVyYXRvcj0uCiAvLyAg
IEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8gLSBkaXNhYmxlcyBjb3B5IGN0b3IgYW5k
IG9wZXJhdG9yPS4KIC8vICAgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXyAgIC0gZGVjbGFyZXMgdGhh
dCBhIGZ1bmN0aW9uJ3MgcmVzdWx0IG11c3QgYmUgdXNlZC4KKy8vICAgR1RFU1RfSU5URU5USU9O
QUxfQ09OU1RfQ09ORF9QVVNIXyAtIHN0YXJ0IGNvZGUgc2VjdGlvbiB3aGVyZSBNU1ZDIEM0MTI3
IGlzCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwcmVzc2Vk
IChjb25zdGFudCBjb25kaXRpb25hbCkuCisvLyAgIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NP
TkRfUE9QXyAgLSBmaW5pc2ggY29kZSBzZWN0aW9uIHdoZXJlIE1TVkMgQzQxMjcKKy8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHN1cHByZXNzZWQuCisvLworLy8g
QysrMTEgZmVhdHVyZSB3cmFwcGVyczoKKy8vCisvLyAgIHRlc3Rpbmc6OmludGVybmFsOjpmb3J3
YXJkIC0gcG9ydGFiaWxpdHkgd3JhcHBlciBmb3Igc3RkOjpmb3J3YXJkLgorLy8gICB0ZXN0aW5n
OjppbnRlcm5hbDo6bW92ZSAgLSBwb3J0YWJpbGl0eSB3cmFwcGVyIGZvciBzdGQ6Om1vdmUuCiAv
LwogLy8gU3luY2hyb25pemF0aW9uOgogLy8gICBNdXRleCwgTXV0ZXhMb2NrLCBUaHJlYWRMb2Nh
bCwgR2V0VGhyZWFkQ291bnQoKQotLy8gICAgICAgICAgICAgICAgICAtIHN5bmNocm9uaXphdGlv
biBwcmltaXRpdmVzLgotLy8gICBHVEVTVF9JU19USFJFQURTQUZFIC0gZGVmaW5lZCB0byAxIHRv
IGluZGljYXRlIHRoYXQgdGhlIGFib3ZlCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICBzeW5j
aHJvbml6YXRpb24gcHJpbWl0aXZlcyBoYXZlIHJlYWwgaW1wbGVtZW50YXRpb25zCi0vLyAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmQgR29vZ2xlIFRlc3QgaXMgdGhyZWFkLXNhZmU7IG9yIDAg
b3RoZXJ3aXNlLgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBzeW5jaHJvbml6YXRp
b24gcHJpbWl0aXZlcy4KIC8vCiAvLyBUZW1wbGF0ZSBtZXRhIHByb2dyYW1taW5nOgogLy8gICBp
c19wb2ludGVyICAgICAtIGFzIGluIFRSMTsgbmVlZGVkIG9uIFN5bWJpYW4gYW5kIElCTSBYTCBD
L0MrKyBvbmx5LgorLy8gICBJdGVyYXRvclRyYWl0cyAtIHBhcnRpYWwgaW1wbGVtZW50YXRpb24g
b2Ygc3RkOjppdGVyYXRvcl90cmFpdHMsIHdoaWNoCisvLyAgICAgICAgICAgICAgICAgICAgaXMg
bm90IGF2YWlsYWJsZSBpbiBsaWJDc3RkIHdoZW4gY29tcGlsZWQgd2l0aCBTdW4gQysrLgogLy8K
IC8vIFNtYXJ0IHBvaW50ZXJzOgogLy8gICBzY29wZWRfcHRyICAgICAtIGFzIGluIFRSMi4KIC8v
CiAvLyBSZWd1bGFyIGV4cHJlc3Npb25zOgogLy8gICBSRSAgICAgICAgICAgICAtIGEgc2ltcGxl
IHJlZ3VsYXIgZXhwcmVzc2lvbiBjbGFzcyB1c2luZyB0aGUgUE9TSVgKLS8vICAgICAgICAgICAg
ICAgICAgICBFeHRlbmRlZCBSZWd1bGFyIEV4cHJlc3Npb24gc3ludGF4LiAgTm90IGF2YWlsYWJs
ZSBvbgotLy8gICAgICAgICAgICAgICAgICAgIFdpbmRvd3MuCi0vLworLy8gICAgICAgICAgICAg
ICAgICAgIEV4dGVuZGVkIFJlZ3VsYXIgRXhwcmVzc2lvbiBzeW50YXggb24gVU5JWC1saWtlIHBs
YXRmb3JtcworLy8gICAgICAgICAgICAgICAgICAgIEdPT0dMRVRFU1RfQ00wMDA4IERPIE5PVCBE
RUxFVEUKKy8vICAgICAgICAgICAgICAgICAgICBvciBhIHJlZHVjZWQgcmVndWxhciBleGNlcHRp
b24gc3ludGF4IG9uIG90aGVyCisvLyAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm1zLCBpbmNs
dWRpbmcgV2luZG93cy4KIC8vIExvZ2dpbmc6CiAvLyAgIEdURVNUX0xPR18oKSAgIC0gbG9ncyBt
ZXNzYWdlcyBhdCB0aGUgc3BlY2lmaWVkIHNldmVyaXR5IGxldmVsLgogLy8gICBMb2dUb1N0ZGVy
cigpICAtIGRpcmVjdHMgYWxsIGxvZyBtZXNzYWdlcyB0byBzdGRlcnIuCkBAIC0xNjAsMTAgKzI1
Myw5IEBACiAvLyAgIEJpZ2dlc3RJbnQgICAgIC0gdGhlIGJpZ2dlc3Qgc2lnbmVkIGludGVnZXIg
dHlwZS4KIC8vCiAvLyBDb21tYW5kLWxpbmUgdXRpbGl0aWVzOgotLy8gICBHVEVTVF9GTEFHKCkg
ICAgICAgLSByZWZlcmVuY2VzIGEgZmxhZy4KIC8vICAgR1RFU1RfREVDTEFSRV8qKCkgIC0gZGVj
bGFyZXMgYSBmbGFnLgogLy8gICBHVEVTVF9ERUZJTkVfKigpICAgLSBkZWZpbmVzIGEgZmxhZy4K
LS8vICAgR2V0QXJndnMoKSAgICAgICAgIC0gcmV0dXJucyB0aGUgY29tbWFuZCBsaW5lIGFzIGEg
dmVjdG9yIG9mIHN0cmluZ3MuCisvLyAgIEdldEluamVjdGFibGVBcmd2cygpIC0gcmV0dXJucyB0
aGUgY29tbWFuZCBsaW5lIGFzIGEgdmVjdG9yIG9mIHN0cmluZ3MuCiAvLwogLy8gRW52aXJvbm1l
bnQgdmFyaWFibGUgdXRpbGl0aWVzOgogLy8gICBHZXRFbnYoKSAgICAgICAgICAgICAtIGdldHMg
dGhlIHZhbHVlIG9mIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLgpAQCAtMTcxLDE3MSArMjYzLDMw
NSBAQAogLy8gICBJbnQzMkZyb21HVGVzdEVudigpICAtIHBhcnNlcyBhbiBJbnQzMiBlbnZpcm9u
bWVudCB2YXJpYWJsZS4KIC8vICAgU3RyaW5nRnJvbUdUZXN0RW52KCkgLSBwYXJzZXMgYSBzdHJp
bmcgZW52aXJvbm1lbnQgdmFyaWFibGUuCiAKLSNpbmNsdWRlIDxzdGRkZWYuaD4gIC8vIEZvciBw
dHJkaWZmX3QKKyNpbmNsdWRlIDxjdHlwZS5oPiAgIC8vIGZvciBpc3NwYWNlLCBldGMKKyNpbmNs
dWRlIDxzdGRkZWYuaD4gIC8vIGZvciBwdHJkaWZmX3QKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNp
bmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2lmbmRlZiBfV0lOMzJfV0NF
Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjIGluY2x1
ZGUgPHN5cy9zdGF0Lmg+CiAjZW5kaWYgIC8vICFfV0lOMzJfV0NFCiAKLSNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KLSNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+Ci0jaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNFeHBvcnRNYWNyb3MuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaWYgZGVmaW5lZCBfX0FQUExFX18KKyMg
aW5jbHVkZSA8QXZhaWxhYmlsaXR5TWFjcm9zLmg+CisjIGluY2x1ZGUgPFRhcmdldENvbmRpdGlv
bmFscy5oPgorI2VuZGlmCiAKKy8vIEJyaW5ncyBpbiB0aGUgZGVmaW5pdGlvbiBvZiBIQVNfR0xP
QkFMX1NUUklORy4gIFRoaXMgbXVzdCBiZSBkb25lCisvLyBCRUZPUkUgd2UgdGVzdCBIQVNfR0xP
QkFMX1NUUklORy4KKyNpbmNsdWRlIDxzdHJpbmc+ICAvLyBOT0xJTlQKKyNpbmNsdWRlIDxhbGdv
cml0aG0+ICAvLyBOT0xJTlQKICNpbmNsdWRlIDxpb3N0cmVhbT4gIC8vIE5PTElOVAogI2luY2x1
ZGUgPHNzdHJlYW0+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDxzdHJpbmc+ICAvLyBOT0xJTlQKKyNp
bmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHZlY3Rvcj4gIC8vIE5PTElOVAorCisjaW5jbHVk
ZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC1hcmNoLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50
ZXJuYWwvY3VzdG9tL2d0ZXN0LXBvcnQuaCIKKworI2lmICFkZWZpbmVkKEdURVNUX0RFVl9FTUFJ
TF8pCisjIGRlZmluZSBHVEVTVF9ERVZfRU1BSUxfICJnb29nbGV0ZXN0ZnJhbWV3b3JrQEBnb29n
bGVncm91cHMuY29tIgorIyBkZWZpbmUgR1RFU1RfRkxBR19QUkVGSVhfICJndGVzdF8iCisjIGRl
ZmluZSBHVEVTVF9GTEFHX1BSRUZJWF9EQVNIXyAiZ3Rlc3QtIgorIyBkZWZpbmUgR1RFU1RfRkxB
R19QUkVGSVhfVVBQRVJfICJHVEVTVF8iCisjIGRlZmluZSBHVEVTVF9OQU1FXyAiR29vZ2xlIFRl
c3QiCisjIGRlZmluZSBHVEVTVF9QUk9KRUNUX1VSTF8gImh0dHBzOi8vZ2l0aHViLmNvbS9nb29n
bGUvZ29vZ2xldGVzdC8iCisjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0RFVl9FTUFJTF8pCiAK
LSNkZWZpbmUgR1RFU1RfREVWX0VNQUlMXyAiZ29vZ2xldGVzdGZyYW1ld29ya0BAZ29vZ2xlZ3Jv
dXBzLmNvbSIKLSNkZWZpbmUgR1RFU1RfRkxBR19QUkVGSVhfICJndGVzdF8iCi0jZGVmaW5lIEdU
RVNUX0ZMQUdfUFJFRklYX0RBU0hfICJndGVzdC0iCi0jZGVmaW5lIEdURVNUX0ZMQUdfUFJFRklY
X1VQUEVSXyAiR1RFU1RfIgotI2RlZmluZSBHVEVTVF9OQU1FXyAiR29vZ2xlIFRlc3QiCi0jZGVm
aW5lIEdURVNUX1BST0pFQ1RfVVJMXyAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRl
c3QvIgorI2lmICFkZWZpbmVkKEdURVNUX0lOSVRfR09PR0xFX1RFU1RfTkFNRV8pCisjIGRlZmlu
ZSBHVEVTVF9JTklUX0dPT0dMRV9URVNUX05BTUVfICJ0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCIK
KyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfSU5JVF9HT09HTEVfVEVTVF9OQU1FXykKIAogLy8g
RGV0ZXJtaW5lcyB0aGUgdmVyc2lvbiBvZiBnY2MgdGhhdCBpcyB1c2VkIHRvIGNvbXBpbGUgdGhp
cy4KICNpZmRlZiBfX0dOVUNfXwogLy8gNDAzMDIgbWVhbnMgdmVyc2lvbiA0LjMuMi4KLSNkZWZp
bmUgR1RFU1RfR0NDX1ZFUl8gXAorIyBkZWZpbmUgR1RFU1RfR0NDX1ZFUl8gXAogICAgIChfX0dO
VUNfXyoxMDAwMCArIF9fR05VQ19NSU5PUl9fKjEwMCArIF9fR05VQ19QQVRDSExFVkVMX18pCiAj
ZW5kaWYgIC8vIF9fR05VQ19fCiAKLS8vIERldGVybWluZXMgdGhlIHBsYXRmb3JtIG9uIHdoaWNo
IEdvb2dsZSBUZXN0IGlzIGNvbXBpbGVkLgotI2lmZGVmIF9fQ1lHV0lOX18KLSNkZWZpbmUgR1RF
U1RfT1NfQ1lHV0lOIDEKLSNlbGlmIGRlZmluZWQgX19TWU1CSUFOMzJfXwotI2RlZmluZSBHVEVT
VF9PU19TWU1CSUFOIDEKLSNlbGlmIGRlZmluZWQgX1dJTjMyCi0jZGVmaW5lIEdURVNUX09TX1dJ
TkRPV1MgMQotI2lmZGVmIF9XSU4zMl9XQ0UKLSNkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUgMQotI2VsaWYgZGVmaW5lZChfX01JTkdXX18pIHx8IGRlZmluZWQoX19NSU5HVzMyX18pCi0j
ZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfTUlOR1cgMQorLy8gTWFjcm9zIGZvciBkaXNhYmxpbmcg
TWljcm9zb2Z0IFZpc3VhbCBDKysgd2FybmluZ3MuCisvLworLy8gICBHVEVTVF9ESVNBQkxFX01T
Q19XQVJOSU5HU19QVVNIXyg0ODAwIDQzODUpCisvLyAgIC8qIGNvZGUgdGhhdCB0cmlnZ2VycyB3
YXJuaW5ncyBDNDgwMCBhbmQgQzQzODUgKi8KKy8vICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklO
R1NfUE9QXygpCisjaWYgX01TQ19WRVIgPj0gMTQwMAorIyBkZWZpbmUgR1RFU1RfRElTQUJMRV9N
U0NfV0FSTklOR1NfUFVTSF8od2FybmluZ3MpIFwKKyAgICBfX3ByYWdtYSh3YXJuaW5nKHB1c2gp
KSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBfX3ByYWdtYSh3YXJuaW5nKGRpc2FibGU6
IHdhcm5pbmdzKSkKKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAg
ICAgICAgICBcCisgICAgX19wcmFnbWEod2FybmluZyhwb3ApKQogI2Vsc2UKLSNkZWZpbmUgR1RF
U1RfT1NfV0lORE9XU19ERVNLVE9QIDEKLSNlbmRpZiAgLy8gX1dJTjMyX1dDRQotI2VsaWYgZGVm
aW5lZCBfX0FQUExFX18KLSNkZWZpbmUgR1RFU1RfT1NfTUFDIDEKLSNlbGlmIGRlZmluZWQgX19s
aW51eF9fCi0jZGVmaW5lIEdURVNUX09TX0xJTlVYIDEKLSNlbGlmIGRlZmluZWQgX19HTlVfXwot
I2RlZmluZSBHVEVTVF9PU19IVVJEIDEKLSNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRl
ZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pCi0jZGVm
aW5lIEdURVNUX09TX0ZSRUVCU0QgMQotI2VsaWYgZGVmaW5lZCBfX01WU19fCi0jZGVmaW5lIEdU
RVNUX09TX1pPUyAxCi0jZWxpZiBkZWZpbmVkKF9fc3VuKSAmJiBkZWZpbmVkKF9fU1ZSNCkKLSNk
ZWZpbmUgR1RFU1RfT1NfU09MQVJJUyAxCi0jZWxpZiBkZWZpbmVkKF9BSVgpCi0jZGVmaW5lIEdU
RVNUX09TX0FJWCAxCi0jZW5kaWYgIC8vIF9fQ1lHV0lOX18KLQotI2lmIEdURVNUX09TX0NZR1dJ
TiB8fCBHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19NQUMgfHwgR1RFU1RfT1NfU1lNQklBTiB8
fCBcCi0gICAgR1RFU1RfT1NfU09MQVJJUyB8fCBHVEVTVF9PU19BSVggfHwgR1RFU1RfT1NfRlJF
RUJTRCB8fCBHVEVTVF9PU19IVVJECisvLyBPbGRlciB2ZXJzaW9ucyBvZiBNU1ZDIGRvbid0IGhh
dmUgX19wcmFnbWEuCisjIGRlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyh3
YXJuaW5ncykKKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQorI2Vu
ZGlmCisKKy8vIENsYW5nIG9uIFdpbmRvd3MgZG9lcyBub3QgdW5kZXJzdGFuZCBNU1ZDJ3MgcHJh
Z21hIHdhcm5pbmcuCisvLyBXZSBuZWVkIGNsYW5nLXNwZWNpZmljIHdheSB0byBkaXNhYmxlIGZ1
bmN0aW9uIGRlcHJlY2F0aW9uIHdhcm5pbmcuCisjaWZkZWYgX19jbGFuZ19fCisjIGRlZmluZSBH
VEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BVU0hfKCkgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIF9QcmFnbWEoImNsYW5nIGRpYWdub3N0aWMgcHVzaCIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBfUHJhZ21hKCJjbGFuZyBkaWFnbm9zdGljIGlnbm9y
ZWQgXCItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zXCIiKSBcCisgICAgX1ByYWdtYSgiY2xhbmcg
ZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVdkZXByZWNhdGVkLWltcGxlbWVudGF0aW9uc1wiIikKKyNk
ZWZpbmUgR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRFRF9QT1BfKCkgXAorICAgIF9QcmFnbWEo
ImNsYW5nIGRpYWdub3N0aWMgcG9wIikKKyNlbHNlCisjIGRlZmluZSBHVEVTVF9ESVNBQkxFX01T
Q19ERVBSRUNBVEVEX1BVU0hfKCkgXAorICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BV
U0hfKDQ5OTYpCisjIGRlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BPUF8oKSBc
CisgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCisjZW5kaWYKKworI2lmbmRl
ZiBHVEVTVF9MQU5HX0NYWDExCisvLyBnY2MgYW5kIGNsYW5nIGRlZmluZSBfX0dYWF9FWFBFUklN
RU5UQUxfQ1hYMFhfXyB3aGVuCisvLyAtc3RkPXtjLGdudX0rK3sweCwxMX0gaXMgcGFzc2VkLiAg
VGhlIEMrKzExIHN0YW5kYXJkIHNwZWNpZmllcyBhCisvLyB2YWx1ZSBmb3IgX19jcGx1c3BsdXMs
IGFuZCByZWNlbnQgdmVyc2lvbnMgb2YgY2xhbmcsIGdjYywgYW5kCisvLyBwcm9iYWJseSBvdGhl
ciBjb21waWxlcnMgc2V0IHRoYXQgdG9vIGluIEMrKzExIG1vZGUuCisjIGlmIF9fR1hYX0VYUEVS
SU1FTlRBTF9DWFgwWF9fIHx8IF9fY3BsdXNwbHVzID49IDIwMTEwM0wgfHwgX01TQ19WRVIgPj0g
MTkwMAorLy8gQ29tcGlsaW5nIGluIGF0IGxlYXN0IEMrKzExIG1vZGUuCisjICBkZWZpbmUgR1RF
U1RfTEFOR19DWFgxMSAxCisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9MQU5HX0NYWDExIDAKKyMg
ZW5kaWYKKyNlbmRpZgorCisvLyBEaXN0aW5jdCBmcm9tIEMrKzExIGxhbmd1YWdlIHN1cHBvcnQs
IHNvbWUgZW52aXJvbm1lbnRzIGRvbid0IHByb3ZpZGUKKy8vIHByb3BlciBDKysxMSBsaWJyYXJ5
IHN1cHBvcnQuIE5vdGFibHksIGl0J3MgcG9zc2libGUgdG8gYnVpbGQgaW4KKy8vIEMrKzExIG1v
ZGUgd2hlbiB0YXJnZXRpbmcgTWFjIE9TIFggMTAuNiwgd2hpY2ggaGFzIGFuIG9sZCBsaWJzdGRj
KysKKy8vIHdpdGggbm8gQysrMTEgc3VwcG9ydC4KKy8vCisvLyBsaWJzdGRjKysgaGFzIHN1ZmZp
Y2llbnQgQysrMTEgc3VwcG9ydCBhcyBvZiBHQ0MgNC42LjAsIF9fR0xJQkNYWF9fCisvLyAyMDEx
MDMyNSwgYnV0IG1haW50ZW5hbmNlIHJlbGVhc2VzIGluIHRoZSA0LjQgYW5kIDQuNSBzZXJpZXMg
Zm9sbG93ZWQKKy8vIHRoaXMgZGF0ZSwgc28gY2hlY2sgZm9yIHRob3NlIHZlcnNpb25zIGJ5IHRo
ZWlyIGRhdGUgc3RhbXBzLgorLy8gaHR0cHM6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2xpYnN0
ZGMrKy9tYW51YWwvYWJpLmh0bWwjYWJpLnZlcnNpb25pbmcKKyNpZiBHVEVTVF9MQU5HX0NYWDEx
ICYmIFwKKyAgICAoIWRlZmluZWQoX19HTElCQ1hYX18pIHx8ICggXAorICAgICAgICBfX0dMSUJD
WFhfXyA+PSAyMDExMDMyNXVsICYmICAvKiBHQ0MgPj0gNC42LjAgKi8gXAorICAgICAgICAvKiBC
bGFja2xpc3Qgb2YgcGF0Y2ggcmVsZWFzZXMgb2Ygb2xkZXIgYnJhbmNoZXM6ICovIFwKKyAgICAg
ICAgX19HTElCQ1hYX18gIT0gMjAxMTA0MTZ1bCAmJiAgLyogR0NDIDQuNC42ICovIFwKKyAgICAg
ICAgX19HTElCQ1hYX18gIT0gMjAxMjAzMTN1bCAmJiAgLyogR0NDIDQuNC43ICovIFwKKyAgICAg
ICAgX19HTElCQ1hYX18gIT0gMjAxMTA0Mjh1bCAmJiAgLyogR0NDIDQuNS4zICovIFwKKyAgICAg
ICAgX19HTElCQ1hYX18gIT0gMjAxMjA3MDJ1bCkpICAgLyogR0NDIDQuNS40ICovCisjIGRlZmlu
ZSBHVEVTVF9TVERMSUJfQ1hYMTEgMQorI2VuZGlmCisKKy8vIE9ubHkgdXNlIEMrKzExIGxpYnJh
cnkgZmVhdHVyZXMgaWYgdGhlIGxpYnJhcnkgcHJvdmlkZXMgdGhlbS4KKyNpZiBHVEVTVF9TVERM
SUJfQ1hYMTEKKyMgZGVmaW5lIEdURVNUX0hBU19TVERfQkVHSU5fQU5EX0VORF8gMQorIyBkZWZp
bmUgR1RFU1RfSEFTX1NURF9GT1JXQVJEX0xJU1RfIDEKKyMgaWYgIWRlZmluZWQoX01TQ19WRVIp
IHx8IChfTVNDX0ZVTExfVkVSID49IDE5MDAyMzgyNCkKKy8vIHdvcmtzIG9ubHkgd2l0aCBWUzIw
MTVVMiBhbmQgYmV0dGVyCisjICAgZGVmaW5lIEdURVNUX0hBU19TVERfRlVOQ1RJT05fIDEKKyMg
ZW5kaWYKKyMgZGVmaW5lIEdURVNUX0hBU19TVERfSU5JVElBTElaRVJfTElTVF8gMQorIyBkZWZp
bmUgR1RFU1RfSEFTX1NURF9NT1ZFXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX1VOSVFVRV9Q
VFJfIDEKKyMgZGVmaW5lIEdURVNUX0hBU19TVERfU0hBUkVEX1BUUl8gMQorIyBkZWZpbmUgR1RF
U1RfSEFTX1VOT1JERVJFRF9NQVBfIDEKKyMgZGVmaW5lIEdURVNUX0hBU19VTk9SREVSRURfU0VU
XyAxCisjZW5kaWYKKworLy8gQysrMTEgc3BlY2lmaWVzIHRoYXQgPHR1cGxlPiBwcm92aWRlcyBz
dGQ6OnR1cGxlLgorLy8gU29tZSBwbGF0Zm9ybXMgc3RpbGwgbWlnaHQgbm90IGhhdmUgaXQsIGhv
d2V2ZXIuCisjaWYgR1RFU1RfTEFOR19DWFgxMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9UVVBM
RV8gMQorIyBpZiBkZWZpbmVkKF9fY2xhbmdfXykKKy8vIEluc3BpcmVkIGJ5CisvLyBodHRwczov
L2NsYW5nLmxsdm0ub3JnL2RvY3MvTGFuZ3VhZ2VFeHRlbnNpb25zLmh0bWwjaW5jbHVkZS1maWxl
LWNoZWNraW5nLW1hY3JvcworIyAgaWYgZGVmaW5lZChfX2hhc19pbmNsdWRlKSAmJiAhX19oYXNf
aW5jbHVkZSg8dHVwbGU+KQorIyAgIHVuZGVmIEdURVNUX0hBU19TVERfVFVQTEVfCisjICBlbmRp
ZgorIyBlbGlmIGRlZmluZWQoX01TQ19WRVIpCisvLyBJbnNwaXJlZCBieSBib29zdC9jb25maWcv
c3RkbGliL2Rpbmt1bXdhcmUuaHBwCisjICBpZiBkZWZpbmVkKF9DUFBMSUJfVkVSKSAmJiBfQ1BQ
TElCX1ZFUiA8IDUyMAorIyAgIHVuZGVmIEdURVNUX0hBU19TVERfVFVQTEVfCisjICBlbmRpZgor
IyBlbGlmIGRlZmluZWQoX19HTElCQ1hYX18pCisvLyBJbnNwaXJlZCBieSBib29zdC9jb25maWcv
c3RkbGliL2xpYnN0ZGNwcDMuaHBwLAorLy8gaHR0cDovL2djYy5nbnUub3JnL2djYy00LjIvY2hh
bmdlcy5odG1sIGFuZAorLy8gaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTQwMjI3MDQ0
NDI5L2djYy5nbnUub3JnL29ubGluZWRvY3MvbGlic3RkYysrL21hbnVhbC9iazAxcHQwMWNoMDEu
aHRtbCNtYW51YWwuaW50cm8uc3RhdHVzLnN0YW5kYXJkLjIwMHgKKyMgIGlmIF9fR05VQ19fIDwg
NCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDIpCisjICAgdW5kZWYgR1RF
U1RfSEFTX1NURF9UVVBMRV8KKyMgIGVuZGlmCisjIGVuZGlmCisjZW5kaWYKKworLy8gQnJpbmdz
IGluIGRlZmluaXRpb25zIGZvciBmdW5jdGlvbnMgdXNlZCBpbiB0aGUgdGVzdGluZzo6aW50ZXJu
YWw6OnBvc2l4CisvLyBuYW1lc3BhY2UgKHJlYWQsIHdyaXRlLCBjbG9zZSwgY2hkaXIsIGlzYXR0
eSwgc3RhdCkuIFdlIGRvIG5vdCBjdXJyZW50bHkKKy8vIHVzZSB0aGVtIG9uIFdpbmRvd3MgTW9i
aWxlLgorI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxF
CisjICBpbmNsdWRlIDxkaXJlY3QuaD4KKyMgIGluY2x1ZGUgPGlvLmg+CisjIGVuZGlmCisvLyBJ
biBvcmRlciB0byBhdm9pZCBoYXZpbmcgdG8gaW5jbHVkZSA8d2luZG93cy5oPiwgdXNlIGZvcndh
cmQgZGVjbGFyYXRpb24KKyNpZiBHVEVTVF9PU19XSU5ET1dTX01JTkdXICYmICFkZWZpbmVkKF9f
TUlOR1c2NF9WRVJTSU9OX01BSk9SKQorLy8gTWluR1cgZGVmaW5lZCBfQ1JJVElDQUxfU0VDVElP
TiBhbmQgX1JUTF9DUklUSUNBTF9TRUNUSU9OIGFzIHR3bworLy8gc2VwYXJhdGUgKGVxdWl2YWxl
bnQpIHN0cnVjdHMsIGluc3RlYWQgb2YgdXNpbmcgdHlwZWRlZgordHlwZWRlZiBzdHJ1Y3QgX0NS
SVRJQ0FMX1NFQ1RJT04gR1RFU1RfQ1JJVElDQUxfU0VDVElPTjsKKyNlbHNlCisvLyBBc3N1bWUg
Q1JJVElDQUxfU0VDVElPTiBpcyBhIHR5cGVkZWYgb2YgX1JUTF9DUklUSUNBTF9TRUNUSU9OLgor
Ly8gVGhpcyBhc3N1bXB0aW9uIGlzIHZlcmlmaWVkIGJ5CisvLyBXaW5kb3dzVHlwZXNUZXN0LkNS
SVRJQ0FMX1NFQ1RJT05Jc19SVExfQ1JJVElDQUxfU0VDVElPTi4KK3R5cGVkZWYgc3RydWN0IF9S
VExfQ1JJVElDQUxfU0VDVElPTiBHVEVTVF9DUklUSUNBTF9TRUNUSU9OOworI2VuZGlmCisjZWxz
ZQorLy8gVGhpcyBhc3N1bWVzIHRoYXQgbm9uLVdpbmRvd3MgT1NlcyBwcm92aWRlIHVuaXN0ZC5o
LiBGb3IgT1NlcyB3aGVyZSB0aGlzCisvLyBpcyBub3QgdGhlIGNhc2UsIHdlIG5lZWQgdG8gaW5j
bHVkZSBoZWFkZXJzIHRoYXQgcHJvdmlkZSB0aGUgZnVuY3Rpb25zCisvLyBtZW50aW9uZWQgYWJv
dmUuCisjIGluY2x1ZGUgPHVuaXN0ZC5oPgorIyBpbmNsdWRlIDxzdHJpbmdzLmg+CisjZW5kaWYg
IC8vIEdURVNUX09TX1dJTkRPV1MKKworI2lmIEdURVNUX09TX0xJTlVYX0FORFJPSUQKKy8vIFVz
ZWQgdG8gZGVmaW5lIF9fQU5EUk9JRF9BUElfXyBtYXRjaGluZyB0aGUgdGFyZ2V0IE5ESyBBUEkg
bGV2ZWwuCisjICBpbmNsdWRlIDxhbmRyb2lkL2FwaS1sZXZlbC5oPiAgLy8gTk9MSU5UCisjZW5k
aWYKKworLy8gRGVmaW5lcyB0aGlzIHRvIHRydWUgaWZmIEdvb2dsZSBUZXN0IGNhbiB1c2UgUE9T
SVggcmVndWxhciBleHByZXNzaW9ucy4KKyNpZm5kZWYgR1RFU1RfSEFTX1BPU0lYX1JFCisjIGlm
IEdURVNUX09TX0xJTlVYX0FORFJPSUQKKy8vIE9uIEFuZHJvaWQsIDxyZWdleC5oPiBpcyBvbmx5
IGF2YWlsYWJsZSBzdGFydGluZyB3aXRoIEdpbmdlcmJyZWFkLgorIyAgZGVmaW5lIEdURVNUX0hB
U19QT1NJWF9SRSAoX19BTkRST0lEX0FQSV9fID49IDkpCisjIGVsc2UKKyMgIGRlZmluZSBHVEVT
VF9IQVNfUE9TSVhfUkUgKCFHVEVTVF9PU19XSU5ET1dTKQorIyBlbmRpZgorI2VuZGlmCisKKyNp
ZiBHVEVTVF9VU0VTX1BDUkUKKy8vIFRoZSBhcHByb3ByaWF0ZSBoZWFkZXJzIGhhdmUgYWxyZWFk
eSBiZWVuIGluY2x1ZGVkLgorCisjZWxpZiBHVEVTVF9IQVNfUE9TSVhfUkUKIAogLy8gT24gc29t
ZSBwbGF0Zm9ybXMsIDxyZWdleC5oPiBuZWVkcyBzb21lb25lIHRvIGRlZmluZSBzaXplX3QsIGFu
ZAogLy8gd29uJ3QgY29tcGlsZSBvdGhlcndpc2UuICBXZSBjYW4gI2luY2x1ZGUgaXQgaGVyZSBh
cyB3ZSBhbHJlYWR5CiAvLyBpbmNsdWRlZCA8c3RkbGliLmg+LCB3aGljaCBpcyBndWFyYW50ZWVk
IHRvIGRlZmluZSBzaXplX3QgdGhyb3VnaAogLy8gPHN0ZGRlZi5oPi4KLSNpZiBIQVZFKFJFR0VY
X0gpCi0jaW5jbHVkZSA8cmVnZXguaD4gIC8vIE5PTElOVAotI2RlZmluZSBHVEVTVF9VU0VTX1BP
U0lYX1JFIDEKLSNlbHNlCi0jZGVmaW5lIEdURVNUX1VTRVNfU0lNUExFX1JFIDEKLSNlbmRpZgot
I2luY2x1ZGUgPHN0cmluZ3MuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPiAg
Ly8gTk9MSU5UCi0jaW5jbHVkZSA8dGltZS5oPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8dW5pc3Rk
Lmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8cmVnZXguaD4gIC8vIE5PTElOVAogCisjIGRlZmlu
ZSBHVEVTVF9VU0VTX1BPU0lYX1JFIDEKIAogI2VsaWYgR1RFU1RfT1NfV0lORE9XUwogCi0jaWYg
IUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0jaW5jbHVkZSA8ZGlyZWN0Lmg+ICAvLyBOT0xJTlQK
LSNpbmNsdWRlIDxpby5oPiAgLy8gTk9MSU5UCi0jZW5kaWYKLQogLy8gPHJlZ2V4Lmg+IGlzIG5v
dCBhdmFpbGFibGUgb24gV2luZG93cy4gIFVzZSBvdXIgb3duIHNpbXBsZSByZWdleAogLy8gaW1w
bGVtZW50YXRpb24gaW5zdGVhZC4KLSNkZWZpbmUgR1RFU1RfVVNFU19TSU1QTEVfUkUgMQorIyBk
ZWZpbmUgR1RFU1RfVVNFU19TSU1QTEVfUkUgMQogCiAjZWxzZQogCiAvLyA8cmVnZXguaD4gbWF5
IG5vdCBiZSBhdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybS4gIFVzZSBvdXIgb3duCiAvLyBzaW1w
bGUgcmVnZXggaW1wbGVtZW50YXRpb24gaW5zdGVhZC4KLSNkZWZpbmUgR1RFU1RfVVNFU19TSU1Q
TEVfUkUgMQorIyBkZWZpbmUgR1RFU1RfVVNFU19TSU1QTEVfUkUgMQogCi0jZW5kaWYgIC8vIEdU
RVNUX09TX0NZR1dJTiB8fCBHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19NQUMgfHwKLSAgICAg
ICAgLy8gR1RFU1RfT1NfU1lNQklBTiB8fCBHVEVTVF9PU19TT0xBUklTIHx8IEdURVNUX09TX0FJ
WCB8fAotICAgICAgICAvLyBHVEVTVF9PU19GUkVFQlNEIHx8IEdURVNUX09TX0hVUkQKKyNlbmRp
ZiAgLy8gR1RFU1RfVVNFU19QQ1JFCiAKICNpZm5kZWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKIC8v
IFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIHdoZXRoZXIgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCwg
c28gd2UgbmVlZAogLy8gdG8gZmlndXJlIGl0IG91dC4KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSB8
fCBkZWZpbmVkKF9fQk9STEFORENfXykKLS8vIE1TVkMncyBhbmQgQysrQnVpbGRlcidzIGltcGxl
bWVudGF0aW9ucyBvZiB0aGUgU1RMIHVzZSB0aGUgX0hBU19FWENFUFRJT05TCisjIGlmIGRlZmlu
ZWQoX01TQ19WRVIpICYmIGRlZmluZWQoX0NQUFVOV0lORCkKKy8vIE1TVkMgZGVmaW5lcyBfQ1BQ
VU5XSU5EIHRvIDEgaWZmIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQuCisjICBkZWZpbmUgR1RFU1Rf
SEFTX0VYQ0VQVElPTlMgMQorIyBlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKQorLy8gQysrQnVp
bGRlcidzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTVEwgdXNlcyB0aGUgX0hBU19FWENFUFRJT05T
CiAvLyBtYWNybyB0byBlbmFibGUgZXhjZXB0aW9ucywgc28gd2UnbGwgZG8gdGhlIHNhbWUuCiAv
LyBBc3N1bWVzIHRoYXQgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LgotI2lmbmRl
ZiBfSEFTX0VYQ0VQVElPTlMKLSNkZWZpbmUgX0hBU19FWENFUFRJT05TIDEKLSNlbmRpZiAgLy8g
X0hBU19FWENFUFRJT05TCi0jZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIF9IQVNfRVhDRVBU
SU9OUwotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19FWENFUFRJT05TCisjICBpZm5kZWYg
X0hBU19FWENFUFRJT05TCisjICAgZGVmaW5lIF9IQVNfRVhDRVBUSU9OUyAxCisjICBlbmRpZiAg
Ly8gX0hBU19FWENFUFRJT05TCisjICBkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgX0hBU19F
WENFUFRJT05TCisjIGVsaWYgZGVmaW5lZChfX2NsYW5nX18pCisvLyBjbGFuZyBkZWZpbmVzIF9f
RVhDRVBUSU9OUyBpZmYgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCBiZWZvcmUgY2xhbmcgMjIwNzE0
LAorLy8gYnV0IGlmZiBjbGVhbnVwcyBhcmUgZW5hYmxlZCBhZnRlciB0aGF0LiBJbiBPYmotQysr
IGZpbGVzLCB0aGVyZSBjYW4gYmUKKy8vIGNsZWFudXBzIGZvciBPYmpDIGV4Y2VwdGlvbnMgd2hp
Y2ggYWxzbyBuZWVkIGNsZWFudXBzLCBldmVuIGlmIEMrKyBleGNlcHRpb25zCisvLyBhcmUgZGlz
YWJsZWQuIGNsYW5nIGhhcyBfX2hhc19mZWF0dXJlKGN4eF9leGNlcHRpb25zKSB3aGljaCBjaGVj
a3MgZm9yIEMrKworLy8gZXhjZXB0aW9ucyBzdGFydGluZyBhdCBjbGFuZyByMjA2MzUyLCBidXQg
d2hpY2ggY2hlY2tlZCBmb3IgY2xlYW51cHMgcHJpb3IgdG8KKy8vIHRoYXQuIFRvIHJlbGlhYmx5
IGNoZWNrIGZvciBDKysgZXhjZXB0aW9uIGF2YWlsYWJpbGl0eSB3aXRoIGNsYW5nLCBjaGVjayBm
b3IKKy8vIF9fRVhDRVBUSU9OUyAmJiBfX2hhc19mZWF0dXJlKGN4eF9leGNlcHRpb25zKS4KKyMg
IGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAoX19FWENFUFRJT05TICYmIF9faGFzX2ZlYXR1
cmUoY3h4X2V4Y2VwdGlvbnMpKQorIyBlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIF9fRVhDRVBU
SU9OUwogLy8gZ2NjIGRlZmluZXMgX19FWENFUFRJT05TIHRvIDEgaWZmIGV4Y2VwdGlvbnMgYXJl
IGVuYWJsZWQuCi0jZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIDEKLSNlbGlmIGRlZmluZWQo
X19TVU5QUk9fQ0MpCisjICBkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMQorIyBlbGlmIGRl
ZmluZWQoX19TVU5QUk9fQ0MpCiAvLyBTdW4gUHJvIENDIHN1cHBvcnRzIGV4Y2VwdGlvbnMuICBI
b3dldmVyLCB0aGVyZSBpcyBubyBjb21waWxlLXRpbWUgd2F5IG9mCiAvLyBkZXRlY3Rpbmcgd2hl
dGhlciB0aGV5IGFyZSBlbmFibGVkIG9yIG5vdC4gIFRoZXJlZm9yZSwgd2UgYXNzdW1lIHRoYXQK
IC8vIHRoZXkgYXJlIGVuYWJsZWQgdW5sZXNzIHRoZSB1c2VyIHRlbGxzIHVzIG90aGVyd2lzZS4K
LSNkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMQotI2VsaWYgZGVmaW5lZChfX0lCTUNQUF9f
KSAmJiBfX0VYQ0VQVElPTlMKKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCisjIGVs
aWYgZGVmaW5lZChfX0lCTUNQUF9fKSAmJiBfX0VYQ0VQVElPTlMKIC8vIHhsQyBkZWZpbmVzIF9f
RVhDRVBUSU9OUyB0byAxIGlmZiBleGNlcHRpb25zIGFyZSBlbmFibGVkLgotI2RlZmluZSBHVEVT
VF9IQVNfRVhDRVBUSU9OUyAxCi0jZWxzZQorIyAgZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05T
IDEKKyMgZWxpZiBkZWZpbmVkKF9fSFBfYUNDKQorLy8gRXhjZXB0aW9uIGhhbmRsaW5nIGlzIGlu
IGVmZmVjdCBieSBkZWZhdWx0IGluIEhQIGFDQyBjb21waWxlci4gSXQgaGFzIHRvCisvLyBiZSB0
dXJuZWQgb2YgYnkgK25vZWggY29tcGlsZXIgb3B0aW9uIGlmIGRlc2lyZWQuCisjICBkZWZpbmUg
R1RFU1RfSEFTX0VYQ0VQVElPTlMgMQorIyBlbHNlCiAvLyBGb3Igb3RoZXIgY29tcGlsZXJzLCB3
ZSBhc3N1bWUgZXhjZXB0aW9ucyBhcmUgZGlzYWJsZWQgdG8gYmUKIC8vIGNvbnNlcnZhdGl2ZS4K
LSNkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMAotI2VuZGlmICAvLyBkZWZpbmVkKF9NU0Nf
VkVSKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykKKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBU
SU9OUyAwCisjIGVuZGlmICAvLyBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fQk9STEFO
RENfXykKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKIAogI2lmICFkZWZpbmVkKEdU
RVNUX0hBU19TVERfU1RSSU5HKQogLy8gRXZlbiB0aG91Z2ggd2UgZG9uJ3QgdXNlIHRoaXMgbWFj
cm8gYW55IGxvbmdlciwgd2Uga2VlcCBpdCBpbiBjYXNlCiAvLyBzb21lIGNsaWVudHMgc3RpbGwg
ZGVwZW5kIG9uIGl0LgotI2RlZmluZSBHVEVTVF9IQVNfU1REX1NUUklORyAxCisjIGRlZmluZSBH
VEVTVF9IQVNfU1REX1NUUklORyAxCiAjZWxpZiAhR1RFU1RfSEFTX1NURF9TVFJJTkcKIC8vIFRo
ZSB1c2VyIHRvbGQgdXMgdGhhdCA6OnN0ZDo6c3RyaW5nIGlzbid0IGF2YWlsYWJsZS4KLSNlcnJv
ciAiR29vZ2xlIFRlc3QgY2Fubm90IGJlIHVzZWQgd2hlcmUgOjpzdGQ6OnN0cmluZyBpc24ndCBh
dmFpbGFibGUuIgorIyBlcnJvciAiOjpzdGQ6OnN0cmluZyBpc24ndCBhdmFpbGFibGUuIgogI2Vu
ZGlmICAvLyAhZGVmaW5lZChHVEVTVF9IQVNfU1REX1NUUklORykKIAogI2lmbmRlZiBHVEVTVF9I
QVNfR0xPQkFMX1NUUklORwotLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMgd2hldGhlciA6OnN0
cmluZyBpcyBhdmFpbGFibGUsIHNvIHdlIG5lZWQKLS8vIHRvIGZpZ3VyZSBpdCBvdXQuCi0KLSNk
ZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgMAotCisjIGRlZmluZSBHVEVTVF9IQVNfR0xP
QkFMX1NUUklORyAwCiAjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCiAKICNpZm5k
ZWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCiAvLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cyB3aGV0
aGVyIDo6c3RkOjp3c3RyaW5nIGlzIGF2YWlsYWJsZSwgc28gd2UgbmVlZAogLy8gdG8gZmlndXJl
IGl0IG91dC4KLS8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiB1c2VzIGF1dG9jb25mIHRvIGRldGVj
dCB3aGV0aGVyIDo6c3RkOjp3c3RyaW5nCisvLyBGSVhNRTogdXNlcyBhdXRvY29uZiB0byBkZXRl
Y3Qgd2hldGhlciA6OnN0ZDo6d3N0cmluZwogLy8gICBpcyBhdmFpbGFibGUuCiAKLS8vIEN5Z3dp
biAxLjUgYW5kIGJlbG93IGRvZXNuJ3Qgc3VwcG9ydCA6OnN0ZDo6d3N0cmluZy4KLS8vIEN5Z3dp
biAxLjcgbWlnaHQgYWRkIHdzdHJpbmcgc3VwcG9ydDsgdGhpcyBzaG91bGQgYmUgdXBkYXRlZCB3
aGVuIGNsZWFyLgotLy8gU29sYXJpcycgbGliYysrIGRvZXNuJ3Qgc3VwcG9ydCBpdCBlaXRoZXIu
Ci0jZGVmaW5lIEdURVNUX0hBU19TVERfV1NUUklORyAoIShHVEVTVF9PU19DWUdXSU4gfHwgR1RF
U1RfT1NfU09MQVJJUykpCisvLyBDeWd3aW4gMS43IGFuZCBiZWxvdyBkb2Vzbid0IHN1cHBvcnQg
OjpzdGQ6OndzdHJpbmcuCisvLyBTb2xhcmlzJyBsaWJjKysgZG9lc24ndCBzdXBwb3J0IGl0IGVp
dGhlci4gIEFuZHJvaWQgaGFzCisvLyBubyBzdXBwb3J0IGZvciBpdCBhdCBsZWFzdCBhcyByZWNl
bnQgYXMgRnJveW8gKDIuMikuCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX1dTVFJJTkcgXAorICAg
ICghKEdURVNUX09TX0xJTlVYX0FORFJPSUQgfHwgR1RFU1RfT1NfQ1lHV0lOIHx8IEdURVNUX09T
X1NPTEFSSVMpKQogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORwogCiAjaWZuZGVm
IEdURVNUX0hBU19HTE9CQUxfV1NUUklORwogLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMgd2hl
dGhlciA6OndzdHJpbmcgaXMgYXZhaWxhYmxlLCBzbyB3ZSBuZWVkCiAvLyB0byBmaWd1cmUgaXQg
b3V0LgotI2RlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcgXAorIyBkZWZpbmUgR1RFU1Rf
SEFTX0dMT0JBTF9XU1RSSU5HIFwKICAgICAoR1RFU1RfSEFTX1NURF9XU1RSSU5HICYmIEdURVNU
X0hBU19HTE9CQUxfU1RSSU5HKQogI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcK
IApAQCAtMzQ0LDEzMyArNTcwLDIxMiBAQAogLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMgd2hl
dGhlciBSVFRJIGlzIGVuYWJsZWQsIHNvIHdlIG5lZWQgdG8KIC8vIGZpZ3VyZSBpdCBvdXQuCiAK
LSNpZmRlZiBfTVNDX1ZFUgorIyBpZmRlZiBfTVNDX1ZFUgogCi0jaWZkZWYgX0NQUFJUVEkgIC8v
IE1TVkMgZGVmaW5lcyB0aGlzIG1hY3JvIGlmZiBSVFRJIGlzIGVuYWJsZWQuCi0jZGVmaW5lIEdU
RVNUX0hBU19SVFRJIDEKLSNlbHNlCi0jZGVmaW5lIEdURVNUX0hBU19SVFRJIDAKLSNlbmRpZgor
IyAgaWZkZWYgX0NQUFJUVEkgIC8vIE1TVkMgZGVmaW5lcyB0aGlzIG1hY3JvIGlmZiBSVFRJIGlz
IGVuYWJsZWQuCisjICAgZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKKyMgIGVsc2UKKyMgICBkZWZp
bmUgR1RFU1RfSEFTX1JUVEkgMAorIyAgZW5kaWYKIAogLy8gU3RhcnRpbmcgd2l0aCB2ZXJzaW9u
IDQuMy4yLCBnY2MgZGVmaW5lcyBfX0dYWF9SVFRJIGlmZiBSVFRJIGlzIGVuYWJsZWQuCi0jZWxp
ZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0gNDAzMDIpCi0KLSNpZmRl
ZiBfX0dYWF9SVFRJCi0jZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKLSNlbHNlCi0jZGVmaW5lIEdU
RVNUX0hBU19SVFRJIDAKLSNlbmRpZiAgLy8gX19HWFhfUlRUSQorIyBlbGlmIGRlZmluZWQoX19H
TlVDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSA0MDMwMikKKworIyAgaWZkZWYgX19HWFhfUlRU
SQorLy8gV2hlbiBidWlsZGluZyBhZ2FpbnN0IFNUTHBvcnQgd2l0aCB0aGUgQW5kcm9pZCBOREsg
YW5kIHdpdGgKKy8vIC1mcnR0aSAtZm5vLWV4Y2VwdGlvbnMsIHRoZSBidWlsZCBmYWlscyBhdCBs
aW5rIHRpbWUgd2l0aCB1bmRlZmluZWQKKy8vIHJlZmVyZW5jZXMgdG8gX19jeGFfYmFkX3R5cGVp
ZC4gTm90ZSBzdXJlIGlmIFNUTCBvciB0b29sY2hhaW4gYnVnLAorLy8gc28gZGlzYWJsZSBSVFRJ
IHdoZW4gZGV0ZWN0ZWQuCisjICAgaWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRCAmJiBkZWZpbmVk
KF9TVExQT1JUX01BSk9SKSAmJiBcCisgICAgICAgIWRlZmluZWQoX19FWENFUFRJT05TKQorIyAg
ICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAorIyAgIGVsc2UKKyMgICAgZGVmaW5lIEdURVNUX0hB
U19SVFRJIDEKKyMgICBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVhfQU5EUk9JRCAmJiBfX1NUTFBP
UlRfTUFKT1IgJiYgIV9fRVhDRVBUSU9OUworIyAgZWxzZQorIyAgIGRlZmluZSBHVEVTVF9IQVNf
UlRUSSAwCisjICBlbmRpZiAgLy8gX19HWFhfUlRUSQorCisvLyBDbGFuZyBkZWZpbmVzIF9fR1hY
X1JUVEkgc3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDMuMCwgYnV0IGl0cyBtYW51YWwgcmVjb21tZW5k
cworLy8gdXNpbmcgaGFzX2ZlYXR1cmUgaW5zdGVhZC4gaGFzX2ZlYXR1cmUoY3h4X3J0dGkpIGlz
IHN1cHBvcnRlZCBzaW5jZSAyLjcsIHRoZQorLy8gZmlyc3QgdmVyc2lvbiB3aXRoIEMrKyBzdXBw
b3J0LgorIyBlbGlmIGRlZmluZWQoX19jbGFuZ19fKQorCisjICBkZWZpbmUgR1RFU1RfSEFTX1JU
VEkgX19oYXNfZmVhdHVyZShjeHhfcnR0aSkKIAogLy8gU3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDku
MCBJQk0gVmlzdWFsIEFnZSBkZWZpbmVzIF9fUlRUSV9BTExfXyB0byAxIGlmCiAvLyBib3RoIHRo
ZSB0eXBlaWQgYW5kIGR5bmFtaWNfY2FzdCBmZWF0dXJlcyBhcmUgcHJlc2VudC4KLSNlbGlmIGRl
ZmluZWQoX19JQk1DUFBfXykgJiYgKF9fSUJNQ1BQX18gPj0gOTAwKQorIyBlbGlmIGRlZmluZWQo
X19JQk1DUFBfXykgJiYgKF9fSUJNQ1BQX18gPj0gOTAwKQogCi0jaWZkZWYgX19SVFRJX0FMTF9f
Ci0jZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKLSNlbHNlCi0jZGVmaW5lIEdURVNUX0hBU19SVFRJ
IDAKLSNlbmRpZgorIyAgaWZkZWYgX19SVFRJX0FMTF9fCisjICAgZGVmaW5lIEdURVNUX0hBU19S
VFRJIDEKKyMgIGVsc2UKKyMgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAorIyAgZW5kaWYKIAot
I2Vsc2UKKyMgZWxzZQogCiAvLyBGb3IgYWxsIG90aGVyIGNvbXBpbGVycywgd2UgYXNzdW1lIFJU
VEkgaXMgZW5hYmxlZC4KLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQorIyAgZGVmaW5lIEdURVNU
X0hBU19SVFRJIDEKIAotI2VuZGlmICAvLyBfTVNDX1ZFUgorIyBlbmRpZiAgLy8gX01TQ19WRVIK
IAogI2VuZGlmICAvLyBHVEVTVF9IQVNfUlRUSQogCiAvLyBJdCdzIHRoaXMgaGVhZGVyJ3MgcmVz
cG9uc2liaWxpdHkgdG8gI2luY2x1ZGUgPHR5cGVpbmZvPiB3aGVuIFJUVEkKIC8vIGlzIGVuYWJs
ZWQuCiAjaWYgR1RFU1RfSEFTX1JUVEkKLSNpbmNsdWRlIDx0eXBlaW5mbz4KKyMgaW5jbHVkZSA8
dHlwZWluZm8+CiAjZW5kaWYKIAogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIEdvb2dsZSBUZXN0IGNh
biB1c2UgdGhlIHB0aHJlYWRzIGxpYnJhcnkuCiAjaWZuZGVmIEdURVNUX0hBU19QVEhSRUFECi0v
LyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cyBleHBsaWNpdGx5LCBzbyB3ZSBhc3N1bWUgcHRocmVh
ZHMgc3VwcG9ydCBpcwotLy8gYXZhaWxhYmxlIG9uIExpbnV4IGFuZCBNYWMuCisvLyBUaGUgdXNl
ciBkaWRuJ3QgdGVsbCB1cyBleHBsaWNpdGx5LCBzbyB3ZSBtYWtlIHJlYXNvbmFibGUgYXNzdW1w
dGlvbnMgYWJvdXQKKy8vIHdoaWNoIHBsYXRmb3JtcyBoYXZlIHB0aHJlYWRzIHN1cHBvcnQuCiAv
LwogLy8gVG8gZGlzYWJsZSB0aHJlYWRpbmcgc3VwcG9ydCBpbiBHb29nbGUgVGVzdCwgYWRkIC1E
R1RFU1RfSEFTX1BUSFJFQUQ9MAogLy8gdG8geW91ciBjb21waWxlciBmbGFncy4KLSNkZWZpbmUg
R1RFU1RfSEFTX1BUSFJFQUQgKEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX0ZSRUVCU0QgfHwg
R1RFU1RfT1NfSFVSRCB8fCBHVEVTVF9PU19NQUMpCisjZGVmaW5lIEdURVNUX0hBU19QVEhSRUFE
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAoR1RFU1Rf
T1NfTElOVVggfHwgR1RFU1RfT1NfTUFDIHx8IEdURVNUX09TX0hQVVggfHwgR1RFU1RfT1NfUU5Y
IHx8IFwKKyAgIEdURVNUX09TX0ZSRUVCU0QgfHwgR1RFU1RfT1NfTkFDTCB8fCBHVEVTVF9PU19O
RVRCU0QgfHwgR1RFU1RfT1NfRlVDSFNJQSkKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1BUSFJFQUQK
IAorI2lmIEdURVNUX0hBU19QVEhSRUFECisvLyBndGVzdC1wb3J0LmggZ3VhcmFudGVlcyB0byAj
aW5jbHVkZSA8cHRocmVhZC5oPiB3aGVuIEdURVNUX0hBU19QVEhSRUFEIGlzCisvLyB0cnVlLgor
IyBpbmNsdWRlIDxwdGhyZWFkLmg+ICAvLyBOT0xJTlQKKworLy8gRm9yIHRpbWVzcGVjIGFuZCBu
YW5vc2xlZXAsIHVzZWQgYmVsb3cuCisjIGluY2x1ZGUgPHRpbWUuaD4gIC8vIE5PTElOVAorI2Vu
ZGlmCisKKy8vIERldGVybWluZXMgaWYgaGFzaF9tYXAvaGFzaF9zZXQgYXJlIGF2YWlsYWJsZS4K
Ky8vIE9ubHkgdXNlZCBmb3IgdGVzdGluZyBhZ2FpbnN0IHRob3NlIGNvbnRhaW5lcnMuCisjaWYg
IWRlZmluZWQoR1RFU1RfSEFTX0hBU0hfTUFQXykKKyMgaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYg
KF9NU0NfVkVSIDwgMTkwMCkKKyMgIGRlZmluZSBHVEVTVF9IQVNfSEFTSF9NQVBfIDEgIC8vIElu
ZGljYXRlcyB0aGF0IGhhc2hfbWFwIGlzIGF2YWlsYWJsZS4KKyMgIGRlZmluZSBHVEVTVF9IQVNf
SEFTSF9TRVRfIDEgIC8vIEluZGljYXRlcyB0aGF0IGhhc2hfc2V0IGlzIGF2YWlsYWJsZS4KKyMg
ZW5kaWYgIC8vIF9NU0NfVkVSCisjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0hBU19IQVNIX01B
UF8pCisKIC8vIERldGVybWluZXMgd2hldGhlciBHb29nbGUgVGVzdCBjYW4gdXNlIHRyMS90dXBs
ZS4gIFlvdSBjYW4gZGVmaW5lCiAvLyB0aGlzIG1hY3JvIHRvIDAgdG8gcHJldmVudCBHb29nbGUg
VGVzdCBmcm9tIHVzaW5nIHR1cGxlIChhbnkKIC8vIGZlYXR1cmUgZGVwZW5kaW5nIG9uIHR1cGxl
IHdpdGggYmUgZGlzYWJsZWQgaW4gdGhpcyBtb2RlKS4KICNpZm5kZWYgR1RFU1RfSEFTX1RSMV9U
VVBMRQorIyBpZiBHVEVTVF9PU19MSU5VWF9BTkRST0lEICYmIGRlZmluZWQoX1NUTFBPUlRfTUFK
T1IpCisvLyBTVExwb3J0LCBwcm92aWRlZCB3aXRoIHRoZSBBbmRyb2lkIE5ESywgaGFzIG5laXRo
ZXIgPHRyMS90dXBsZT4gb3IgPHR1cGxlPi4KKyMgIGRlZmluZSBHVEVTVF9IQVNfVFIxX1RVUExF
IDAKKyMgZWxpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTkxMCkKKy8vIFBy
ZXZlbnQgYHdhcm5pbmcgQzQ5OTY6ICdzdGQ6OnRyMSc6IHdhcm5pbmcgU1RMNDAwMjoKKy8vIFRo
ZSBub24tU3RhbmRhcmQgc3RkOjp0cjEgbmFtZXNwYWNlIGFuZCBUUjEtb25seSBtYWNoaW5lcnkK
Ky8vIGFyZSBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFJFTU9WRUQuYAorIyAgZGVmaW5lIEdURVNU
X0hBU19UUjFfVFVQTEUgMAorIyBlbGlmIEdURVNUX0xBTkdfQ1hYMTEgJiYgZGVmaW5lZChfTElC
Q1BQX1ZFUlNJT04pCisvLyBsaWJjKysgZG9lc24ndCBzdXBwb3J0IFRSMS4KKyMgIGRlZmluZSBH
VEVTVF9IQVNfVFIxX1RVUExFIDAKKyMgZWxzZQogLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMg
bm90IHRvIGRvIGl0LCBzbyB3ZSBhc3N1bWUgaXQncyBPSy4KLSNkZWZpbmUgR1RFU1RfSEFTX1RS
MV9UVVBMRSAxCisjICBkZWZpbmUgR1RFU1RfSEFTX1RSMV9UVVBMRSAxCisjIGVuZGlmCiAjZW5k
aWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUKIAogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIEdvb2ds
ZSBUZXN0J3Mgb3duIHRyMSB0dXBsZSBpbXBsZW1lbnRhdGlvbgogLy8gc2hvdWxkIGJlIHVzZWQu
CiAjaWZuZGVmIEdURVNUX1VTRV9PV05fVFIxX1RVUExFCisvLyBXZSB1c2Ugb3VyIG93biB0dXBs
ZSBpbXBsZW1lbnRhdGlvbiBvbiBTeW1iaWFuLgorIyBpZiBHVEVTVF9PU19TWU1CSUFOCisjICBk
ZWZpbmUgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgMQorIyBlbHNlCiAvLyBUaGUgdXNlciBkaWRu
J3QgdGVsbCB1cywgc28gd2UgbmVlZCB0byBmaWd1cmUgaXQgb3V0LgogCiAvLyBXZSB1c2Ugb3Vy
IG93biBUUjEgdHVwbGUgaWYgd2UgYXJlbid0IHN1cmUgdGhlIHVzZXIgaGFzIGFuCi0vLyBpbXBs
ZW1lbnRhdGlvbiBvZiBpdCBhbHJlYWR5LiAgQXQgdGhpcyB0aW1lLCBHQ0MgNC4wLjArIGFuZCBN
U1ZDCi0vLyAyMDEwIGFyZSB0aGUgb25seSBtYWluc3RyZWFtIGNvbXBpbGVycyB0aGF0IGNvbWUg
d2l0aCBhIFRSMSB0dXBsZQotLy8gaW1wbGVtZW50YXRpb24uICBOVklESUEncyBDVURBIE5WQ0Mg
Y29tcGlsZXIgcHJldGVuZHMgdG8gYmUgR0NDIGJ5Ci0vLyBkZWZpbmluZyBfX0dOVUNfXyBhbmQg
ZnJpZW5kcywgYnV0IGNhbm5vdCBjb21waWxlIEdDQydzIHR1cGxlCi0vLyBpbXBsZW1lbnRhdGlv
bi4gIE1TVkMgMjAwOCAoOS4wKSBwcm92aWRlcyBUUjEgdHVwbGUgaW4gYSAzMjMgTUIKLS8vIEZl
YXR1cmUgUGFjayBkb3dubG9hZCwgd2hpY2ggd2UgY2Fubm90IGFzc3VtZSB0aGUgdXNlciBoYXMu
Ci0jaWYgKGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fQ1VEQUNDX18pICYmIChHVEVT
VF9HQ0NfVkVSXyA+PSA0MDAwMCkpIFwKLSAgICB8fCBfTVNDX1ZFUiA+PSAxNjAwCi0jZGVmaW5l
IEdURVNUX1VTRV9PV05fVFIxX1RVUExFIDAKLSNlbHNlCi0jZGVmaW5lIEdURVNUX1VTRV9PV05f
VFIxX1RVUExFIDEKLSNlbmRpZgotCisvLyBpbXBsZW1lbnRhdGlvbiBvZiBpdCBhbHJlYWR5LiAg
QXQgdGhpcyB0aW1lLCBsaWJzdGRjKysgNC4wLjArIGFuZAorLy8gTVNWQyAyMDEwIGFyZSB0aGUg
b25seSBtYWluc3RyZWFtIHN0YW5kYXJkIGxpYnJhcmllcyB0aGF0IGNvbWUKKy8vIHdpdGggYSBU
UjEgdHVwbGUgaW1wbGVtZW50YXRpb24uICBOVklESUEncyBDVURBIE5WQ0MgY29tcGlsZXIKKy8v
IHByZXRlbmRzIHRvIGJlIEdDQyBieSBkZWZpbmluZyBfX0dOVUNfXyBhbmQgZnJpZW5kcywgYnV0
IGNhbm5vdAorLy8gY29tcGlsZSBHQ0MncyB0dXBsZSBpbXBsZW1lbnRhdGlvbi4gIE1TVkMgMjAw
OCAoOS4wKSBwcm92aWRlcyBUUjEKKy8vIHR1cGxlIGluIGEgMzIzIE1CIEZlYXR1cmUgUGFjayBk
b3dubG9hZCwgd2hpY2ggd2UgY2Fubm90IGFzc3VtZSB0aGUKKy8vIHVzZXIgaGFzLiAgUU5YJ3Mg
UUNDIGNvbXBpbGVyIGlzIGEgbW9kaWZpZWQgR0NDIGJ1dCBpdCBkb2Vzbid0CisvLyBzdXBwb3J0
IFRSMSB0dXBsZS4gIGxpYmMrKyBvbmx5IHByb3ZpZGVzIHN0ZDo6dHVwbGUsIGluIEMrKzExIG1v
ZGUsCisvLyBhbmQgaXQgY2FuIGJlIHVzZWQgd2l0aCBzb21lIGNvbXBpbGVycyB0aGF0IGRlZmlu
ZSBfX0dOVUNfXy4KKyMgaWYgKGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fQ1VEQUND
X18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSA0MDAwMCkgXAorICAgICAgJiYgIUdURVNUX09TX1FO
WCAmJiAhZGVmaW5lZChfTElCQ1BQX1ZFUlNJT04pKSBcCisgICAgICB8fCAoX01TQ19WRVIgPj0g
MTYwMCAmJiBfTVNDX1ZFUiA8IDE5MDApCisjICBkZWZpbmUgR1RFU1RfRU5WX0hBU19UUjFfVFVQ
TEVfIDEKKyMgZW5kaWYKKworLy8gQysrMTEgc3BlY2lmaWVzIHRoYXQgPHR1cGxlPiBwcm92aWRl
cyBzdGQ6OnR1cGxlLiBVc2UgdGhhdCBpZiBndGVzdCBpcyB1c2VkCisvLyBpbiBDKysxMSBtb2Rl
IGFuZCBsaWJzdGRjKysgaXNuJ3QgdmVyeSBvbGQgKGJpbmFyaWVzIHRhcmdldGluZyBPUyBYIDEw
LjYKKy8vIGNhbiBidWlsZCB3aXRoIGNsYW5nIGJ1dCBuZWVkIHRvIHVzZSBnY2M0LjIncyBsaWJz
dGRjKyspLgorIyBpZiBHVEVTVF9MQU5HX0NYWDExICYmICghZGVmaW5lZChfX0dMSUJDWFhfXykg
fHwgX19HTElCQ1hYX18gPiAyMDExMDMyNSkKKyMgIGRlZmluZSBHVEVTVF9FTlZfSEFTX1NURF9U
VVBMRV8gMQorIyBlbmRpZgorCisjIGlmIEdURVNUX0VOVl9IQVNfVFIxX1RVUExFXyB8fCBHVEVT
VF9FTlZfSEFTX1NURF9UVVBMRV8KKyMgIGRlZmluZSBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSAw
CisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSAxCisjIGVuZGlmCisj
IGVuZGlmICAvLyBHVEVTVF9PU19TWU1CSUFOCiAjZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fVFIx
X1RVUExFCiAKLS8vIFRvIGF2b2lkIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGV2ZXJ5d2hlcmUs
IHdlIG1ha2UgaXQKLS8vIGd0ZXN0LXBvcnQuaCdzIHJlc3BvbnNpYmlsaXR5IHRvICNpbmNsdWRl
IHRoZSBoZWFkZXIgaW1wbGVtZW50aW5nCi0vLyB0cjEvdHVwbGUuCisvLyBUbyBhdm9pZCBjb25k
aXRpb25hbCBjb21waWxhdGlvbiB3ZSBtYWtlIGl0IGd0ZXN0LXBvcnQuaCdzIHJlc3BvbnNpYmls
aXR5CisvLyB0byAjaW5jbHVkZSB0aGUgaGVhZGVyIGltcGxlbWVudGluZyB0dXBsZS4KKyNpZiBH
VEVTVF9IQVNfU1REX1RVUExFXworIyBpbmNsdWRlIDx0dXBsZT4gIC8vIElXWVUgcHJhZ21hOiBl
eHBvcnQKKyMgZGVmaW5lIEdURVNUX1RVUExFX05BTUVTUEFDRV8gOjpzdGQKKyNlbmRpZiAgLy8g
R1RFU1RfSEFTX1NURF9UVVBMRV8KKworLy8gV2UgaW5jbHVkZSB0cjE6OnR1cGxlIGV2ZW4gaWYg
c3RkOjp0dXBsZSBpcyBhdmFpbGFibGUgdG8gZGVmaW5lIHByaW50ZXJzIGZvcgorLy8gdGhlbS4K
ICNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCisjIGlmbmRlZiBHVEVTVF9UVVBMRV9OQU1FU1BBQ0Vf
CisjICBkZWZpbmUgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXyA6OnN0ZDo6dHIxCisjIGVuZGlmICAv
LyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfCiAKLSNpZiBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRQot
I2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmg+Ci0jZWxpZiBHVEVTVF9PU19T
WU1CSUFOCisjIGlmIEdURVNUX1VTRV9PV05fVFIxX1RVUExFCisjICBpbmNsdWRlICJndGVzdC9p
bnRlcm5hbC9ndGVzdC10dXBsZS5oIiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydCAgLy8gTk9MSU5U
CisjIGVsaWYgR1RFU1RfT1NfU1lNQklBTgogCiAvLyBPbiBTeW1iaWFuLCBCT09TVF9IQVNfVFIx
X1RVUExFIGNhdXNlcyBCb29zdCdzIFRSMSB0dXBsZSBsaWJyYXJ5IHRvCiAvLyB1c2UgU1RMcG9y
dCdzIHR1cGxlIGltcGxlbWVudGF0aW9uLCB3aGljaCB1bmZvcnR1bmF0ZWx5IGRvZXNuJ3QKIC8v
IHdvcmsgYXMgdGhlIGNvcHkgb2YgU1RMcG9ydCBkaXN0cmlidXRlZCB3aXRoIFN5bWJpYW4gaXMg
aW5jb21wbGV0ZS4KIC8vIEJ5IG1ha2luZyBzdXJlIEJPT1NUX0hBU19UUjFfVFVQTEUgaXMgdW5k
ZWZpbmVkLCB3ZSBmb3JjZSBCb29zdCB0bwogLy8gdXNlIGl0cyBvd24gdHVwbGUgaW1wbGVtZW50
YXRpb24uCi0jaWZkZWYgQk9PU1RfSEFTX1RSMV9UVVBMRQotI3VuZGVmIEJPT1NUX0hBU19UUjFf
VFVQTEUKLSNlbmRpZiAgLy8gQk9PU1RfSEFTX1RSMV9UVVBMRQorIyAgaWZkZWYgQk9PU1RfSEFT
X1RSMV9UVVBMRQorIyAgIHVuZGVmIEJPT1NUX0hBU19UUjFfVFVQTEUKKyMgIGVuZGlmICAvLyBC
T09TVF9IQVNfVFIxX1RVUExFCiAKIC8vIFRoaXMgcHJldmVudHMgPGJvb3N0L3RyMS9kZXRhaWwv
Y29uZmlnLmhwcD4sIHdoaWNoIGRlZmluZXMKIC8vIEJPT1NUX0hBU19UUjFfVFVQTEUsIGZyb20g
YmVpbmcgI2luY2x1ZGVkIGJ5IEJvb3N0J3MgPHR1cGxlPi4KLSNkZWZpbmUgQk9PU1RfVFIxX0RF
VEFJTF9DT05GSUdfSFBQX0lOQ0xVREVECi0jaW5jbHVkZSA8dHVwbGU+CisjICBkZWZpbmUgQk9P
U1RfVFIxX0RFVEFJTF9DT05GSUdfSFBQX0lOQ0xVREVECisjICBpbmNsdWRlIDx0dXBsZT4gIC8v
IElXWVUgcHJhZ21hOiBleHBvcnQgIC8vIE5PTElOVAogCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19f
KSAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0gNDAwMDApCisjIGVsaWYgZGVmaW5lZChfX0dOVUNfXykg
JiYgKEdURVNUX0dDQ19WRVJfID49IDQwMDAwKQogLy8gR0NDIDQuMCsgaW1wbGVtZW50cyB0cjEv
dHVwbGUgaW4gdGhlIDx0cjEvdHVwbGU+IGhlYWRlci4gIFRoaXMgZG9lcwogLy8gbm90IGNvbmZv
cm0gdG8gdGhlIFRSMSBzcGVjLCB3aGljaCByZXF1aXJlcyB0aGUgaGVhZGVyIHRvIGJlIDx0dXBs
ZT4uCiAKLSNpZiAhR1RFU1RfSEFTX1JUVEkgJiYgR1RFU1RfR0NDX1ZFUl8gPCA0MDMwMgorIyAg
aWYgIUdURVNUX0hBU19SVFRJICYmIEdURVNUX0dDQ19WRVJfIDwgNDAzMDIKIC8vIFVudGlsIHZl
cnNpb24gNC4zLjIsIGdjYyBoYXMgYSBidWcgdGhhdCBjYXVzZXMgPHRyMS9mdW5jdGlvbmFsPiwK
IC8vIHdoaWNoIGlzICNpbmNsdWRlZCBieSA8dHIxL3R1cGxlPiwgdG8gbm90IGNvbXBpbGUgd2hl
biBSVFRJIGlzCiAvLyBkaXNhYmxlZC4gIF9UUjFfRlVOQ1RJT05BTCBpcyB0aGUgaGVhZGVyIGd1
YXJkIGZvcgotLy8gPHRyMS9mdW5jdGlvbmFsPi4gIEhlbmNlIHRoZSBmb2xsb3dpbmcgI2RlZmlu
ZSBpcyBhIGhhY2sgdG8gcHJldmVudAorLy8gPHRyMS9mdW5jdGlvbmFsPi4gIEhlbmNlIHRoZSBm
b2xsb3dpbmcgI2RlZmluZSBpcyB1c2VkIHRvIHByZXZlbnQKIC8vIDx0cjEvZnVuY3Rpb25hbD4g
ZnJvbSBiZWluZyBpbmNsdWRlZC4KLSNkZWZpbmUgX1RSMV9GVU5DVElPTkFMIDEKLSNpbmNsdWRl
IDx0cjEvdHVwbGU+Ci0jdW5kZWYgX1RSMV9GVU5DVElPTkFMICAvLyBBbGxvd3MgdGhlIHVzZXIg
dG8gI2luY2x1ZGUKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIDx0cjEvZnVuY3Rpb25hbD4g
aWYgaGUgY2hvb3NlcyB0by4KLSNlbHNlCi0jaW5jbHVkZSA8dHIxL3R1cGxlPiAgLy8gTk9MSU5U
Ci0jZW5kaWYgIC8vICFHVEVTVF9IQVNfUlRUSSAmJiBHVEVTVF9HQ0NfVkVSXyA8IDQwMzAyCi0K
LSNlbHNlCi0vLyBJZiB0aGUgY29tcGlsZXIgaXMgbm90IEdDQyA0LjArLCB3ZSBhc3N1bWUgdGhl
IHVzZXIgaXMgdXNpbmcgYQotLy8gc3BlYy1jb25mb3JtaW5nIFRSMSBpbXBsZW1lbnRhdGlvbi4K
LSNpbmNsdWRlIDx0dXBsZT4gIC8vIE5PTElOVAotI2VuZGlmICAvLyBHVEVTVF9VU0VfT1dOX1RS
MV9UVVBMRQorIyAgIGRlZmluZSBfVFIxX0ZVTkNUSU9OQUwgMQorIyAgIGluY2x1ZGUgPHRyMS90
dXBsZT4KKyMgICB1bmRlZiBfVFIxX0ZVTkNUSU9OQUwgIC8vIEFsbG93cyB0aGUgdXNlciB0byAj
aW5jbHVkZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gPHRyMS9mdW5jdGlvbmFsPiBpZiB0
aGV5IGNob29zZSB0by4KKyMgIGVsc2UKKyMgICBpbmNsdWRlIDx0cjEvdHVwbGU+ICAvLyBOT0xJ
TlQKKyMgIGVuZGlmICAvLyAhR1RFU1RfSEFTX1JUVEkgJiYgR1RFU1RfR0NDX1ZFUl8gPCA0MDMw
MgorCisvLyBWUyAyMDEwIG5vdyBoYXMgdHIxIHN1cHBvcnQuCisjIGVsaWYgX01TQ19WRVIgPj0g
MTYwMAorIyAgaW5jbHVkZSA8dHVwbGU+ICAvLyBJV1lVIHByYWdtYTogZXhwb3J0ICAvLyBOT0xJ
TlQKKworIyBlbHNlICAvLyBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRQorIyAgaW5jbHVkZSA8dHIx
L3R1cGxlPiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydCAgLy8gTk9MSU5UCisjIGVuZGlmICAvLyBH
VEVTVF9VU0VfT1dOX1RSMV9UVVBMRQogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUK
IApAQCAtNDgxLDU5ICs3ODYsODAgQEAKICNpZm5kZWYgR1RFU1RfSEFTX0NMT05FCiAvLyBUaGUg
dXNlciBkaWRuJ3QgdGVsbCB1cywgc28gd2UgbmVlZCB0byBmaWd1cmUgaXQgb3V0LgogCi0jaWYg
R1RFU1RfT1NfTElOVVggJiYgIWRlZmluZWQoX19pYTY0X18pCi0jZGVmaW5lIEdURVNUX0hBU19D
TE9ORSAxCi0jZWxzZQotI2RlZmluZSBHVEVTVF9IQVNfQ0xPTkUgMAotI2VuZGlmICAvLyBHVEVT
VF9PU19MSU5VWCAmJiAhZGVmaW5lZChfX2lhNjRfXykKKyMgaWYgR1RFU1RfT1NfTElOVVggJiYg
IWRlZmluZWQoX19pYTY0X18pCisjICBpZiBHVEVTVF9PU19MSU5VWF9BTkRST0lECisvLyBPbiBB
bmRyb2lkLCBjbG9uZSgpIGJlY2FtZSBhdmFpbGFibGUgYXQgZGlmZmVyZW50IEFQSSBsZXZlbHMg
Zm9yIGVhY2ggMzItYml0CisvLyBhcmNoaXRlY3R1cmUuCisjICAgIGlmIGRlZmluZWQoX19MUDY0
X18pIHx8IFwKKyAgICAgICAgKGRlZmluZWQoX19hcm1fXykgJiYgX19BTkRST0lEX0FQSV9fID49
IDkpIHx8IFwKKyAgICAgICAgKGRlZmluZWQoX19taXBzX18pICYmIF9fQU5EUk9JRF9BUElfXyA+
PSAxMikgfHwgXAorICAgICAgICAoZGVmaW5lZChfX2kzODZfXykgJiYgX19BTkRST0lEX0FQSV9f
ID49IDE3KQorIyAgICAgZGVmaW5lIEdURVNUX0hBU19DTE9ORSAxCisjICAgIGVsc2UKKyMgICAg
IGRlZmluZSBHVEVTVF9IQVNfQ0xPTkUgMAorIyAgICBlbmRpZgorIyAgZWxzZQorIyAgIGRlZmlu
ZSBHVEVTVF9IQVNfQ0xPTkUgMQorIyAgZW5kaWYKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0hB
U19DTE9ORSAwCisjIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWCAmJiAhZGVmaW5lZChfX2lhNjRf
XykKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUKIAogLy8gRGV0ZXJtaW5lcyB3aGV0aGVy
IHRvIHN1cHBvcnQgc3RyZWFtIHJlZGlyZWN0aW9uLiBUaGlzIGlzIHVzZWQgdG8gdGVzdAogLy8g
b3V0cHV0IGNvcnJlY3RuZXNzIGFuZCB0byBpbXBsZW1lbnQgZGVhdGggdGVzdHMuCi0jaWYgIUdU
RVNUX09TX1dJTkRPV1NfTU9CSUxFICYmICFHVEVTVF9PU19TWU1CSUFOCi0jZGVmaW5lIEdURVNU
X0hBU19TVFJFQU1fUkVESVJFQ1RJT05fIDEKLSNlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFICYmICFHVEVTVF9PU19TWU1CSUFOCisjaWZuZGVmIEdURVNUX0hBU19TVFJFQU1fUkVE
SVJFQ1RJT04KKy8vIEJ5IGRlZmF1bHQsIHdlIGFzc3VtZSB0aGF0IHN0cmVhbSByZWRpcmVjdGlv
biBpcyBzdXBwb3J0ZWQgb24gYWxsCisvLyBwbGF0Zm9ybXMgZXhjZXB0IGtub3duIG1vYmlsZSBv
bmVzLgorIyBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRSB8fCBHVEVTVF9PU19TWU1CSUFOIHx8
IFwKKyAgICBHVEVTVF9PU19XSU5ET1dTX1BIT05FIHx8IEdURVNUX09TX1dJTkRPV1NfUlQKKyMg
IGRlZmluZSBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OIDAKKyMgZWxzZQorIyAgZGVmaW5l
IEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04gMQorIyBlbmRpZiAgLy8gIUdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFICYmICFHVEVTVF9PU19TWU1CSUFOCisjZW5kaWYgIC8vIEdURVNUX0hBU19T
VFJFQU1fUkVESVJFQ1RJT04KIAogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHN1cHBvcnQgZGVh
dGggdGVzdHMuCiAvLyBHb29nbGUgVGVzdCBkb2VzIG5vdCBzdXBwb3J0IGRlYXRoIHRlc3RzIGZv
ciBWQyA3LjEgYW5kIGVhcmxpZXIgYXMKIC8vIGFib3J0KCkgaW4gYSBWQyA3LjEgYXBwbGljYXRp
b24gY29tcGlsZWQgYXMgR1VJIGluIGRlYnVnIGNvbmZpZwogLy8gcG9wcyB1cCBhIGRpYWxvZyB3
aW5kb3cgdGhhdCBjYW5ub3QgYmUgc3VwcHJlc3NlZCBwcm9ncmFtbWF0aWNhbGx5LgotI2lmIChH
VEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19GUkVFQlNEIHx8IEdURVNUX09TX0hVUkQgfHwgXAot
ICAgICBHVEVTVF9PU19NQUMgfHwgR1RFU1RfT1NfQ1lHV0lOIHx8IEdURVNUX09TX1NPTEFSSVMg
fHwgXAotICAgICAoR1RFU1RfT1NfV0lORE9XU19ERVNLVE9QICYmIF9NU0NfVkVSID49IDE0MDAp
IHx8IFwKLSAgICAgR1RFU1RfT1NfV0lORE9XU19NSU5HVyB8fCBHVEVTVF9PU19BSVgpCi0jZGVm
aW5lIEdURVNUX0hBU19ERUFUSF9URVNUIDEKLSNpbmNsdWRlIDx2ZWN0b3I+ICAvLyBOT0xJTlQK
KyNpZiAoR1RFU1RfT1NfTElOVVggfHwgR1RFU1RfT1NfQ1lHV0lOIHx8IEdURVNUX09TX1NPTEFS
SVMgfHwgICBcCisgICAgIChHVEVTVF9PU19NQUMgJiYgIUdURVNUX09TX0lPUykgfHwgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAoR1RFU1RfT1NfV0lORE9XU19ERVNLVE9QICYmIF9N
U0NfVkVSID49IDE0MDApIHx8ICAgICAgICAgIFwKKyAgICAgR1RFU1RfT1NfV0lORE9XU19NSU5H
VyB8fCBHVEVTVF9PU19BSVggfHwgR1RFU1RfT1NfSFBVWCB8fCBcCisgICAgIEdURVNUX09TX09Q
RU5CU0QgfHwgR1RFU1RfT1NfUU5YIHx8IEdURVNUX09TX0ZSRUVCU0QgfHwgXAorICAgICBHVEVT
VF9PU19ORVRCU0QgfHwgR1RFU1RfT1NfRlVDSFNJQSkKKyMgZGVmaW5lIEdURVNUX0hBU19ERUFU
SF9URVNUIDEKICNlbmRpZgogCi0vLyBXZSBkb24ndCBzdXBwb3J0IE1TVkMgNy4xIHdpdGggZXhj
ZXB0aW9ucyBkaXNhYmxlZCBub3cuICBUaGVyZWZvcmUKLS8vIGFsbCB0aGUgY29tcGlsZXJzIHdl
IGNhcmUgYWJvdXQgYXJlIGFkZXF1YXRlIGZvciBzdXBwb3J0aW5nCi0vLyB2YWx1ZS1wYXJhbWV0
ZXJpemVkIHRlc3RzLgotI2RlZmluZSBHVEVTVF9IQVNfUEFSQU1fVEVTVCAxCi0KIC8vIERldGVy
bWluZXMgd2hldGhlciB0byBzdXBwb3J0IHR5cGUtZHJpdmVuIHRlc3RzLgogCiAvLyBUeXBlZCB0
ZXN0cyBuZWVkIDx0eXBlaW5mbz4gYW5kIHZhcmlhZGljIG1hY3Jvcywgd2hpY2ggR0NDLCBWQysr
IDguMCwKLS8vIFN1biBQcm8gQ0MsIGFuZCBJQk0gVmlzdWFsIEFnZSBzdXBwb3J0LgorLy8gU3Vu
IFBybyBDQywgSUJNIFZpc3VhbCBBZ2UsIGFuZCBIUCBhQ0Mgc3VwcG9ydC4KICNpZiBkZWZpbmVk
KF9fR05VQ19fKSB8fCAoX01TQ19WRVIgPj0gMTQwMCkgfHwgZGVmaW5lZChfX1NVTlBST19DQykg
fHwgXAotICAgIGRlZmluZWQoX19JQk1DUFBfXykKLSNkZWZpbmUgR1RFU1RfSEFTX1RZUEVEX1RF
U1QgMQotI2RlZmluZSBHVEVTVF9IQVNfVFlQRURfVEVTVF9QIDEKKyAgICBkZWZpbmVkKF9fSUJN
Q1BQX18pIHx8IGRlZmluZWQoX19IUF9hQ0MpCisjIGRlZmluZSBHVEVTVF9IQVNfVFlQRURfVEVT
VCAxCisjIGRlZmluZSBHVEVTVF9IQVNfVFlQRURfVEVTVF9QIDEKICNlbmRpZgogCiAvLyBEZXRl
cm1pbmVzIHdoZXRoZXIgdG8gc3VwcG9ydCBDb21iaW5lKCkuIFRoaXMgb25seSBtYWtlcyBzZW5z
ZSB3aGVuCiAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBlbmFibGVkLiAgVGhlIGlt
cGxlbWVudGF0aW9uIGRvZXNuJ3QKIC8vIHdvcmsgb24gU3VuIFN0dWRpbyBzaW5jZSBpdCBkb2Vz
bid0IHVuZGVyc3RhbmQgdGVtcGxhdGVkIGNvbnZlcnNpb24KIC8vIG9wZXJhdG9ycy4KLSNpZiBH
VEVTVF9IQVNfUEFSQU1fVEVTVCAmJiBHVEVTVF9IQVNfVFIxX1RVUExFICYmICFkZWZpbmVkKF9f
U1VOUFJPX0NDKQotI2RlZmluZSBHVEVTVF9IQVNfQ09NQklORSAxCisjaWYgKEdURVNUX0hBU19U
UjFfVFVQTEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8pICYmICFkZWZpbmVkKF9fU1VOUFJPX0ND
KQorIyBkZWZpbmUgR1RFU1RfSEFTX0NPTUJJTkUgMQogI2VuZGlmCiAKIC8vIERldGVybWluZXMg
d2hldGhlciB0aGUgc3lzdGVtIGNvbXBpbGVyIHVzZXMgVVRGLTE2IGZvciBlbmNvZGluZyB3aWRl
IHN0cmluZ3MuCiAjZGVmaW5lIEdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfIFwKICAgICAo
R1RFU1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19DWUdXSU4gfHwgR1RFU1RfT1NfU1lNQklBTiB8
fCBHVEVTVF9PU19BSVgpCiAKKy8vIERldGVybWluZXMgd2hldGhlciB0ZXN0IHJlc3VsdHMgY2Fu
IGJlIHN0cmVhbWVkIHRvIGEgc29ja2V0LgorI2lmIEdURVNUX09TX0xJTlVYCisjIGRlZmluZSBH
VEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfIDEKKyNlbmRpZgorCiAvLyBEZWZpbmVzIHNvbWUgdXRp
bGl0eSBtYWNyb3MuCiAKIC8vIFRoZSBHTlUgY29tcGlsZXIgZW1pdHMgYSB3YXJuaW5nIGlmIG5l
c3RlZCAiaWYiIHN0YXRlbWVudHMgYXJlIGZvbGxvd2VkIGJ5CkBAIC01NDUsOSArODcxLDkgQEAK
IC8vCiAvLyBUaGUgInN3aXRjaCAoMCkgY2FzZSAwOiIgaWRpb20gaXMgdXNlZCB0byBzdXBwcmVz
cyB0aGlzLgogI2lmZGVmIF9fSU5URUxfQ09NUElMRVIKLSNkZWZpbmUgR1RFU1RfQU1CSUdVT1VT
X0VMU0VfQkxPQ0tFUl8KKyMgZGVmaW5lIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfCiAj
ZWxzZQotI2RlZmluZSBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBzd2l0Y2ggKDApIGNh
c2UgMDogIC8vIE5PTElOVAorIyBkZWZpbmUgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8g
c3dpdGNoICgwKSBjYXNlIDA6IGRlZmF1bHQ6ICAvLyBOT0xJTlQKICNlbmRpZgogCiAvLyBVc2Ug
dGhpcyBhbm5vdGF0aW9uIGF0IHRoZSBlbmQgb2YgYSBzdHJ1Y3QvY2xhc3MgZGVmaW5pdGlvbiB0
bwpAQCAtNTYyLDIwICs4ODgsNDkgQEAKIC8vIEFsc28gdXNlIGl0IGFmdGVyIGEgdmFyaWFibGUg
b3IgcGFyYW1ldGVyIGRlY2xhcmF0aW9uIHRvIHRlbGwgdGhlCiAvLyBjb21waWxlciB0aGUgdmFy
aWFibGUvcGFyYW1ldGVyIGRvZXMgbm90IGhhdmUgdG8gYmUgdXNlZC4KICNpZiBkZWZpbmVkKF9f
R05VQ19fKSAmJiAhZGVmaW5lZChDT01QSUxFUl9JQ0MpCi0jZGVmaW5lIEdURVNUX0FUVFJJQlVU
RV9VTlVTRURfIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQorIyBkZWZpbmUgR1RFU1RfQVRUUklC
VVRFX1VOVVNFRF8gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCisjZWxpZiBkZWZpbmVkKF9fY2xh
bmdfXykKKyMgaWYgX19oYXNfYXR0cmlidXRlKHVudXNlZCkKKyMgIGRlZmluZSBHVEVTVF9BVFRS
SUJVVEVfVU5VU0VEXyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKKyMgZW5kaWYKKyNlbmRpZgor
I2lmbmRlZiBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXworIyBkZWZpbmUgR1RFU1RfQVRUUklCVVRF
X1VOVVNFRF8KKyNlbmRpZgorCisjaWYgR1RFU1RfTEFOR19DWFgxMQorIyBkZWZpbmUgR1RFU1Rf
Q1hYMTFfRVFVQUxTX0RFTEVURV8gPSBkZWxldGUKKyNlbHNlICAvLyBHVEVTVF9MQU5HX0NYWDEx
CisjIGRlZmluZSBHVEVTVF9DWFgxMV9FUVVBTFNfREVMRVRFXworI2VuZGlmICAvLyBHVEVTVF9M
QU5HX0NYWDExCisKKy8vIFVzZSB0aGlzIGFubm90YXRpb24gYmVmb3JlIGEgZnVuY3Rpb24gdGhh
dCB0YWtlcyBhIHByaW50ZiBmb3JtYXQgc3RyaW5nLgorI2lmIChkZWZpbmVkKF9fR05VQ19fKSB8
fCBkZWZpbmVkKF9fY2xhbmdfXykpICYmICFkZWZpbmVkKENPTVBJTEVSX0lDQykKKyMgaWYgZGVm
aW5lZChfX01JTkdXX1BSSU5URl9GT1JNQVQpCisvLyBNaW5HVyBoYXMgdHdvIGRpZmZlcmVudCBw
cmludGYgaW1wbGVtZW50YXRpb25zLiBFbnN1cmUgdGhlIGZvcm1hdCBtYWNybworLy8gbWF0Y2hl
cyB0aGUgc2VsZWN0ZWQgaW1wbGVtZW50YXRpb24uIFNlZQorLy8gaHR0cHM6Ly9zb3VyY2Vmb3Jn
ZS5uZXQvcC9taW5ndy13NjQvd2lraTIvZ251JTIwcHJpbnRmLy4KKyMgIGRlZmluZSBHVEVTVF9B
VFRSSUJVVEVfUFJJTlRGXyhzdHJpbmdfaW5kZXgsIGZpcnN0X3RvX2NoZWNrKSBcCisgICAgICAg
X19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhfX01JTkdXX1BSSU5URl9GT1JNQVQsIHN0cmluZ19p
bmRleCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfdG9fY2hlY2sp
KSkKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9QUklOVEZfKHN0cmluZ19pbmRl
eCwgZmlyc3RfdG9fY2hlY2spIFwKKyAgICAgICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9f
cHJpbnRmX18sIHN0cmluZ19pbmRleCwgZmlyc3RfdG9fY2hlY2spKSkKKyMgZW5kaWYKICNlbHNl
Ci0jZGVmaW5lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfCisjIGRlZmluZSBHVEVTVF9BVFRSSUJV
VEVfUFJJTlRGXyhzdHJpbmdfaW5kZXgsIGZpcnN0X3RvX2NoZWNrKQogI2VuZGlmCiAKKwogLy8g
QSBtYWNybyB0byBkaXNhbGxvdyBvcGVyYXRvcj0KIC8vIFRoaXMgc2hvdWxkIGJlIHVzZWQgaW4g
dGhlIHByaXZhdGU6IGRlY2xhcmF0aW9ucyBmb3IgYSBjbGFzcy4KLSNkZWZpbmUgR1RFU1RfRElT
QUxMT1dfQVNTSUdOXyh0eXBlKVwKLSAgdm9pZCBvcGVyYXRvcj0odHlwZSBjb25zdCAmKQorI2Rl
ZmluZSBHVEVTVF9ESVNBTExPV19BU1NJR05fKHR5cGUpIFwKKyAgdm9pZCBvcGVyYXRvcj0odHlw
ZSBjb25zdCAmKSBHVEVTVF9DWFgxMV9FUVVBTFNfREVMRVRFXwogCiAvLyBBIG1hY3JvIHRvIGRp
c2FsbG93IGNvcHkgY29uc3RydWN0b3IgYW5kIG9wZXJhdG9yPQogLy8gVGhpcyBzaG91bGQgYmUg
dXNlZCBpbiB0aGUgcHJpdmF0ZTogZGVjbGFyYXRpb25zIGZvciBhIGNsYXNzLgotI2RlZmluZSBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKHR5cGUpXAotICB0eXBlKHR5cGUgY29uc3Qg
Jik7XAorI2RlZmluZSBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKHR5cGUpIFwKKyAg
dHlwZSh0eXBlIGNvbnN0ICYpIEdURVNUX0NYWDExX0VRVUFMU19ERUxFVEVfOyBcCiAgIEdURVNU
X0RJU0FMTE9XX0FTU0lHTl8odHlwZSkKIAogLy8gVGVsbCB0aGUgY29tcGlsZXIgdG8gd2FybiBh
Ym91dCB1bnVzZWQgcmV0dXJuIHZhbHVlcyBmb3IgZnVuY3Rpb25zIGRlY2xhcmVkCkBAIC01ODQs
NzIgKzkzOSwyNTAgQEAKIC8vCiAvLyAgIFNwcm9ja2V0KiBBbGxvY2F0ZVNwcm9ja2V0KCkgR1RF
U1RfTVVTVF9VU0VfUkVTVUxUXzsKICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoR1RFU1RfR0ND
X1ZFUl8gPj0gMzA0MDApICYmICFkZWZpbmVkKENPTVBJTEVSX0lDQykKLSNkZWZpbmUgR1RFU1Rf
TVVTVF9VU0VfUkVTVUxUXyBfX2F0dHJpYnV0ZV9fICgod2Fybl91bnVzZWRfcmVzdWx0KSkKKyMg
ZGVmaW5lIEdURVNUX01VU1RfVVNFX1JFU1VMVF8gX19hdHRyaWJ1dGVfXyAoKHdhcm5fdW51c2Vk
X3Jlc3VsdCkpCiAjZWxzZQotI2RlZmluZSBHVEVTVF9NVVNUX1VTRV9SRVNVTFRfCisjIGRlZmlu
ZSBHVEVTVF9NVVNUX1VTRV9SRVNVTFRfCiAjZW5kaWYgIC8vIF9fR05VQ19fICYmIChHVEVTVF9H
Q0NfVkVSXyA+PSAzMDQwMCkgJiYgIUNPTVBJTEVSX0lDQwogCisvLyBNUyBDKysgY29tcGlsZXIg
ZW1pdHMgd2FybmluZyB3aGVuIGEgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb21waWxlIHRp
bWUKKy8vIGNvbnN0YW50LiBJbiBzb21lIGNvbnRleHRzIHRoaXMgd2FybmluZyBpcyBmYWxzZSBw
b3NpdGl2ZSBhbmQgbmVlZHMgdG8gYmUKKy8vIHN1cHByZXNzZWQuIFVzZSB0aGUgZm9sbG93aW5n
IHR3byBtYWNyb3MgaW4gc3VjaCBjYXNlczoKKy8vCisvLyBHVEVTVF9JTlRFTlRJT05BTF9DT05T
VF9DT05EX1BVU0hfKCkKKy8vIHdoaWxlICh0cnVlKSB7CisvLyBHVEVTVF9JTlRFTlRJT05BTF9D
T05TVF9DT05EX1BPUF8oKQorLy8gfQorIyBkZWZpbmUgR1RFU1RfSU5URU5USU9OQUxfQ09OU1Rf
Q09ORF9QVVNIXygpIFwKKyAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MTI3
KQorIyBkZWZpbmUgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QT1BfKCkgXAorICAgIEdU
RVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQorCiAvLyBEZXRlcm1pbmUgd2hldGhlciB0
aGUgY29tcGlsZXIgc3VwcG9ydHMgTWljcm9zb2Z0J3MgU3RydWN0dXJlZCBFeGNlcHRpb24KIC8v
IEhhbmRsaW5nLiAgVGhpcyBpcyBzdXBwb3J0ZWQgYnkgc2V2ZXJhbCBXaW5kb3dzIGNvbXBpbGVy
cyBidXQgZ2VuZXJhbGx5CiAvLyBkb2VzIG5vdCBleGlzdCBvbiBhbnkgb3RoZXIgc3lzdGVtLgog
I2lmbmRlZiBHVEVTVF9IQVNfU0VICiAvLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cywgc28gd2Ug
bmVlZCB0byBmaWd1cmUgaXQgb3V0LgogCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5l
ZChfX0JPUkxBTkRDX18pCisjIGlmIGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19CT1JM
QU5EQ19fKQogLy8gVGhlc2UgdHdvIGNvbXBpbGVycyBhcmUga25vd24gdG8gc3VwcG9ydCBTRUgu
Ci0jZGVmaW5lIEdURVNUX0hBU19TRUggMQotI2Vsc2UKKyMgIGRlZmluZSBHVEVTVF9IQVNfU0VI
IDEKKyMgZWxzZQogLy8gQXNzdW1lIG5vIFNFSC4KLSNkZWZpbmUgR1RFU1RfSEFTX1NFSCAwCi0j
ZW5kaWYKKyMgIGRlZmluZSBHVEVTVF9IQVNfU0VIIDAKKyMgZW5kaWYKIAotI2VuZGlmICAvLyBH
VEVTVF9IQVNfU0VICisjZGVmaW5lIEdURVNUX0lTX1RIUkVBRFNBRkUgXAorICAgIChHVEVTVF9I
QVNfTVVURVhfQU5EX1RIUkVBRF9MT0NBTF8gXAorICAgICB8fCAoR1RFU1RfT1NfV0lORE9XUyAm
JiAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lORE9XU19SVCkgXAorICAg
ICB8fCBHVEVTVF9IQVNfUFRIUkVBRCkKIAotI2lmZGVmIF9NU0NfVkVSCisjZW5kaWYgIC8vIEdU
RVNUX0hBU19TRUgKIAotI2lmIEdURVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFSWQotI2RlZmlu
ZSBHVEVTVF9BUElfIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotI2VsaWYgR1RFU1RfQ1JFQVRFX1NI
QVJFRF9MSUJSQVJZCi0jZGVmaW5lIEdURVNUX0FQSV8gX19kZWNsc3BlYyhkbGxleHBvcnQpCi0j
ZW5kaWYKKy8vIEdURVNUX0FQSV8gcXVhbGlmaWVzIGFsbCBzeW1ib2xzIHRoYXQgbXVzdCBiZSBl
eHBvcnRlZC4gVGhlIGRlZmluaXRpb25zIGJlbG93CisvLyBhcmUgZ3VhcmRlZCBieSAjaWZuZGVm
IHRvIGdpdmUgZW1iZWRkZXJzIGEgY2hhbmNlIHRvIGRlZmluZSBHVEVTVF9BUElfIGluCisvLyBn
dGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oCisjaWZuZGVmIEdURVNUX0FQSV8KIAor
I2lmZGVmIF9NU0NfVkVSCisjIGlmIEdURVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFSWQorIyAg
ZGVmaW5lIEdURVNUX0FQSV8gX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjIGVsaWYgR1RFU1RfQ1JF
QVRFX1NIQVJFRF9MSUJSQVJZCisjICBkZWZpbmUgR1RFU1RfQVBJXyBfX2RlY2xzcGVjKGRsbGV4
cG9ydCkKKyMgZW5kaWYKKyNlbGlmIF9fR05VQ19fID49IDQgfHwgZGVmaW5lZChfX2NsYW5nX18p
CisjIGRlZmluZSBHVEVTVF9BUElfIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0
IikpKQogI2VuZGlmICAvLyBfTVNDX1ZFUgogCisjZW5kaWYgIC8vIEdURVNUX0FQSV8KKwogI2lm
bmRlZiBHVEVTVF9BUElfCi0jZGVmaW5lIEdURVNUX0FQSV8KKyMgZGVmaW5lIEdURVNUX0FQSV8K
KyNlbmRpZiAgLy8gR1RFU1RfQVBJXworCisjaWZuZGVmIEdURVNUX0RFRkFVTFRfREVBVEhfVEVT
VF9TVFlMRQorIyBkZWZpbmUgR1RFU1RfREVGQVVMVF9ERUFUSF9URVNUX1NUWUxFICAiZmFzdCIK
KyNlbmRpZiAgLy8gR1RFU1RfREVGQVVMVF9ERUFUSF9URVNUX1NUWUxFCisKKyNpZmRlZiBfX0dO
VUNfXworLy8gQXNrIHRoZSBjb21waWxlciB0byBuZXZlciBpbmxpbmUgYSBnaXZlbiBmdW5jdGlv
bi4KKyMgZGVmaW5lIEdURVNUX05PX0lOTElORV8gX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKQor
I2Vsc2UKKyMgZGVmaW5lIEdURVNUX05PX0lOTElORV8KICNlbmRpZgogCisvLyBfTElCQ1BQX1ZF
UlNJT04gaXMgZGVmaW5lZCBieSB0aGUgbGliYysrIGxpYnJhcnkgZnJvbSB0aGUgTExWTSBwcm9q
ZWN0LgorI2lmICFkZWZpbmVkKEdURVNUX0hBU19DWFhBQklfSF8pCisjIGlmIGRlZmluZWQoX19H
TElCQ1hYX18pIHx8IChkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikgJiYgIWRlZmluZWQoX01TQ19W
RVIpKQorIyAgZGVmaW5lIEdURVNUX0hBU19DWFhBQklfSF8gMQorIyBlbHNlCisjICBkZWZpbmUg
R1RFU1RfSEFTX0NYWEFCSV9IXyAwCisjIGVuZGlmCisjZW5kaWYKKworLy8gQSBmdW5jdGlvbiBs
ZXZlbCBhdHRyaWJ1dGUgdG8gZGlzYWJsZSBjaGVja2luZyBmb3IgdXNlIG9mIHVuaW5pdGlhbGl6
ZWQKKy8vIG1lbW9yeSB3aGVuIGJ1aWx0IHdpdGggTWVtb3J5U2FuaXRpemVyLgorI2lmIGRlZmlu
ZWQoX19jbGFuZ19fKQorIyBpZiBfX2hhc19mZWF0dXJlKG1lbW9yeV9zYW5pdGl6ZXIpCisjICBk
ZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8gXAorICAgICAgIF9fYXR0
cmlidXRlX18oKG5vX3Nhbml0aXplX21lbW9yeSkpCisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9B
VFRSSUJVVEVfTk9fU0FOSVRJWkVfTUVNT1JZXworIyBlbmRpZiAgLy8gX19oYXNfZmVhdHVyZSht
ZW1vcnlfc2FuaXRpemVyKQorI2Vsc2UKKyMgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5J
VElaRV9NRU1PUllfCisjZW5kaWYgIC8vIF9fY2xhbmdfXworCisvLyBBIGZ1bmN0aW9uIGxldmVs
IGF0dHJpYnV0ZSB0byBkaXNhYmxlIEFkZHJlc3NTYW5pdGl6ZXIgaW5zdHJ1bWVudGF0aW9uLgor
I2lmIGRlZmluZWQoX19jbGFuZ19fKQorIyBpZiBfX2hhc19mZWF0dXJlKGFkZHJlc3Nfc2FuaXRp
emVyKQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTXyBcCisg
ICAgICAgX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfYWRkcmVzcykpCisjIGVsc2UKKyMgIGRl
ZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTU18KKyMgZW5kaWYgIC8vIF9f
aGFzX2ZlYXR1cmUoYWRkcmVzc19zYW5pdGl6ZXIpCisjZWxzZQorIyBkZWZpbmUgR1RFU1RfQVRU
UklCVVRFX05PX1NBTklUSVpFX0FERFJFU1NfCisjZW5kaWYgIC8vIF9fY2xhbmdfXworCisvLyBB
IGZ1bmN0aW9uIGxldmVsIGF0dHJpYnV0ZSB0byBkaXNhYmxlIFRocmVhZFNhbml0aXplciBpbnN0
cnVtZW50YXRpb24uCisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisjIGlmIF9faGFzX2ZlYXR1cmUo
dGhyZWFkX3Nhbml0aXplcikKKyMgIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVf
VEhSRUFEXyBcCisgICAgICAgX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfdGhyZWFkKSkKKyMg
ZWxzZQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9USFJFQURfCisjIGVu
ZGlmICAvLyBfX2hhc19mZWF0dXJlKHRocmVhZF9zYW5pdGl6ZXIpCisjZWxzZQorIyBkZWZpbmUg
R1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KKyNlbmRpZiAgLy8gX19jbGFuZ19f
CisKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIAogY2xhc3MgTWVzc2FnZTsKIAorI2lmIGRlZmluZWQo
R1RFU1RfVFVQTEVfTkFNRVNQQUNFXykKKy8vIEltcG9ydCB0dXBsZSBhbmQgZnJpZW5kcyBpbnRv
IHRoZSA6OnRlc3RpbmcgbmFtZXNwYWNlLgorLy8gSXQgaXMgcGFydCBvZiBvdXIgaW50ZXJmYWNl
LCBoYXZpbmcgdGhlbSBpbiA6OnRlc3RpbmcgYWxsb3dzIHVzIHRvIGNoYW5nZQorLy8gdGhlaXIg
dHlwZXMgYXMgbmVlZGVkLgordXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXzo6Z2V0OwordXNp
bmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXzo6bWFrZV90dXBsZTsKK3VzaW5nIEdURVNUX1RVUExF
X05BTUVTUEFDRV86OnR1cGxlOwordXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXzo6dHVwbGVf
c2l6ZTsKK3VzaW5nIEdURVNUX1RVUExFX05BTUVTUEFDRV86OnR1cGxlX2VsZW1lbnQ7CisjZW5k
aWYgIC8vIGRlZmluZWQoR1RFU1RfVFVQTEVfTkFNRVNQQUNFXykKKwogbmFtZXNwYWNlIGludGVy
bmFsIHsKIAotY2xhc3MgU3RyaW5nOworLy8gQSBzZWNyZXQgdHlwZSB0aGF0IEdvb2dsZSBUZXN0
IHVzZXJzIGRvbid0IGtub3cgYWJvdXQuICBJdCBoYXMgbm8KKy8vIGRlZmluaXRpb24gb24gcHVy
cG9zZS4gIFRoZXJlZm9yZSBpdCdzIGltcG9zc2libGUgdG8gY3JlYXRlIGEKKy8vIFNlY3JldCBv
YmplY3QsIHdoaWNoIGlzIHdoYXQgd2Ugd2FudC4KK2NsYXNzIFNlY3JldDsKIAotY2xhc3MgU3Ry
U3RyZWFtIDogcHVibGljIDo6c3RkOjpzdHJpbmdzdHJlYW0gewotIHB1YmxpYzoKLSAgdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfQotICB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0KKy8vIFRoZSBHVEVTVF9D
T01QSUxFX0FTU0VSVF8gbWFjcm8gY2FuIGJlIHVzZWQgdG8gdmVyaWZ5IHRoYXQgYSBjb21waWxl
IHRpbWUKKy8vIGV4cHJlc3Npb24gaXMgdHJ1ZS4gRm9yIGV4YW1wbGUsIHlvdSBjb3VsZCB1c2Ug
aXQgdG8gdmVyaWZ5IHRoZQorLy8gc2l6ZSBvZiBhIHN0YXRpYyBhcnJheToKKy8vCisvLyAgIEdU
RVNUX0NPTVBJTEVfQVNTRVJUXyhHVEVTVF9BUlJBWV9TSVpFXyhuYW1lcykgPT0gTlVNX05BTUVT
LAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNfaW5jb3JyZWN0X3NpemUpOworLy8K
Ky8vIG9yIHRvIG1ha2Ugc3VyZSBhIHN0cnVjdCBpcyBzbWFsbGVyIHRoYW4gYSBjZXJ0YWluIHNp
emU6CisvLworLy8gICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oc2l6ZW9mKGZvbykgPCAxMjgsIGZv
b190b29fbGFyZ2UpOworLy8KKy8vIFRoZSBzZWNvbmQgYXJndW1lbnQgdG8gdGhlIG1hY3JvIGlz
IHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZS4gSWYKKy8vIHRoZSBleHByZXNzaW9uIGlzIGZhbHNl
LCBtb3N0IGNvbXBpbGVycyB3aWxsIGlzc3VlIGEgd2FybmluZy9lcnJvcgorLy8gY29udGFpbmlu
ZyB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUuCisKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisjIGRl
ZmluZSBHVEVTVF9DT01QSUxFX0FTU0VSVF8oZXhwciwgbXNnKSBzdGF0aWNfYXNzZXJ0KGV4cHIs
ICNtc2cpCisjZWxzZSAgLy8gIUdURVNUX0xBTkdfQ1hYMTEKK3RlbXBsYXRlIDxib29sPgorICBz
dHJ1Y3QgQ29tcGlsZUFzc2VydCB7Cit9OwogCi0gIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qg
c2l6ZSkgewotICAgIHJldHVybiBtYWxsb2Moc2l6ZSk7Ci0gIH0KKyMgZGVmaW5lIEdURVNUX0NP
TVBJTEVfQVNTRVJUXyhleHByLCBtc2cpIFwKKyAgdHlwZWRlZiA6OnRlc3Rpbmc6OmludGVybmFs
OjpDb21waWxlQXNzZXJ0PChzdGF0aWNfY2FzdDxib29sPihleHByKSk+IFwKKyAgICAgIG1zZ1tz
dGF0aWNfY2FzdDxib29sPihleHByKSA/IDEgOiAtMV0gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8K
KyNlbmRpZiAgLy8gIUdURVNUX0xBTkdfQ1hYMTEKIAotICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2
b2lkKiBwKSB7Ci0gICAgZnJlZShwKTsKLSAgfQorLy8gSW1wbGVtZW50YXRpb24gZGV0YWlscyBv
ZiBHVEVTVF9DT01QSUxFX0FTU0VSVF86CisvLworLy8gKEluIEMrKzExLCB3ZSBzaW1wbHkgdXNl
IHN0YXRpY19hc3NlcnQgaW5zdGVhZCBvZiB0aGUgZm9sbG93aW5nKQorLy8KKy8vIC0gR1RFU1Rf
Q09NUElMRV9BU1NFUlRfIHdvcmtzIGJ5IGRlZmluaW5nIGFuIGFycmF5IHR5cGUgdGhhdCBoYXMg
LTEKKy8vICAgZWxlbWVudHMgKGFuZCB0aHVzIGlzIGludmFsaWQpIHdoZW4gdGhlIGV4cHJlc3Np
b24gaXMgZmFsc2UuCisvLworLy8gLSBUaGUgc2ltcGxlciBkZWZpbml0aW9uCisvLworLy8gICAg
I2RlZmluZSBHVEVTVF9DT01QSUxFX0FTU0VSVF8oZXhwciwgbXNnKSB0eXBlZGVmIGNoYXIgbXNn
WyhleHByKSA/IDEgOiAtMV0KKy8vCisvLyAgIGRvZXMgbm90IHdvcmssIGFzIGdjYyBzdXBwb3J0
cyB2YXJpYWJsZS1sZW5ndGggYXJyYXlzIHdob3NlIHNpemVzCisvLyAgIGFyZSBkZXRlcm1pbmVk
IGF0IHJ1bi10aW1lICh0aGlzIGlzIGdjYydzIGV4dGVuc2lvbiBhbmQgbm90IHBhcnQKKy8vICAg
b2YgdGhlIEMrKyBzdGFuZGFyZCkuICBBcyBhIHJlc3VsdCwgZ2NjIGZhaWxzIHRvIHJlamVjdCB0
aGUKKy8vICAgZm9sbG93aW5nIGNvZGUgd2l0aCB0aGUgc2ltcGxlIGRlZmluaXRpb246CisvLwor
Ly8gICAgIGludCBmb287CisvLyAgICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKGZvbywgbXNnKTsg
Ly8gbm90IHN1cHBvc2VkIHRvIGNvbXBpbGUgYXMgZm9vIGlzCisvLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gbm90IGEgY29tcGlsZS10aW1lIGNvbnN0YW50LgorLy8K
Ky8vIC0gQnkgdXNpbmcgdGhlIHR5cGUgQ29tcGlsZUFzc2VydDwoYm9vbChleHByKSk+LCB3ZSBl
bnN1cmVzIHRoYXQKKy8vICAgZXhwciBpcyBhIGNvbXBpbGUtdGltZSBjb25zdGFudC4gIChUZW1w
bGF0ZSBhcmd1bWVudHMgbXVzdCBiZQorLy8gICBkZXRlcm1pbmVkIGF0IGNvbXBpbGUtdGltZS4p
CisvLworLy8gLSBUaGUgb3V0dGVyIHBhcmVudGhlc2VzIGluIENvbXBpbGVBc3NlcnQ8KGJvb2wo
ZXhwcikpPiBhcmUgbmVjZXNzYXJ5CisvLyAgIHRvIHdvcmsgYXJvdW5kIGEgYnVnIGluIGdjYyAz
LjQuNCBhbmQgNC4wLjEuICBJZiB3ZSBoYWQgd3JpdHRlbgorLy8KKy8vICAgICBDb21waWxlQXNz
ZXJ0PGJvb2woZXhwcik+CisvLworLy8gICBpbnN0ZWFkLCB0aGVzZSBjb21waWxlcnMgd2lsbCBy
ZWZ1c2UgdG8gY29tcGlsZQorLy8KKy8vICAgICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oNSA+IDAs
IHNvbWVfbWVzc2FnZSk7CisvLworLy8gICAoVGhleSBzZWVtIHRvIHRoaW5rIHRoZSAiPiIgaW4g
IjUgPiAwIiBtYXJrcyB0aGUgZW5kIG9mIHRoZQorLy8gICB0ZW1wbGF0ZSBhcmd1bWVudCBsaXN0
LikKKy8vCisvLyAtIFRoZSBhcnJheSBzaXplIGlzIChib29sKGV4cHIpID8gMSA6IC0xKSwgaW5z
dGVhZCBvZiBzaW1wbHkKKy8vCisvLyAgICAgKChleHByKSA/IDEgOiAtMSkuCisvLworLy8gICBU
aGlzIGlzIHRvIGF2b2lkIHJ1bm5pbmcgaW50byBhIGJ1ZyBpbiBNUyBWQyA3LjEsIHdoaWNoCisv
LyAgIGNhdXNlcyAoKDAuMCkgPyAxIDogLTEpIHRvIGluY29ycmVjdGx5IGV2YWx1YXRlIHRvIDEu
CiAKLSAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsKLSAgICByZXR1cm4gbWFs
bG9jKHNpemUpOwotICB9CisvLyBTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXIgaXMgdXNlZCBieSBT
dGF0aWNBc3NlcnRUeXBlRXEgZGVmaW5lZCBpbiBndGVzdC5oLgorLy8KKy8vIFRoaXMgdGVtcGxh
dGUgaXMgZGVjbGFyZWQsIGJ1dCBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZC4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitzdHJ1Y3QgU3RhdGljQXNzZXJ0VHlwZUVxSGVscGVy
OwogCi0gIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgewotICAgIGZyZWUocCk7Ci0g
IH0KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IFN0YXRpY0Fzc2VydFR5cGVFcUhlbHBl
cjxULCBUPiB7CisgIGVudW0geyB2YWx1ZSA9IHRydWUgfTsKIH07CiAKKy8vIFNhbWUgYXMgc3Rk
Ojppc19zYW1lPD4uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3N0cnVjdCBJ
c1NhbWUgeworICBlbnVtIHsgdmFsdWUgPSBmYWxzZSB9OworfTsKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorc3RydWN0IElzU2FtZTxULCBUPiB7CisgIGVudW0geyB2YWx1ZSA9IHRydWUgfTsKK307
CiAKKy8vIEV2YWx1YXRlcyB0byB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluICdhcnJheScuCisj
ZGVmaW5lIEdURVNUX0FSUkFZX1NJWkVfKGFycmF5KSAoc2l6ZW9mKGFycmF5KSAvIHNpemVvZihh
cnJheVswXSkpCisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwordHlwZWRlZiA6OnN0cmlu
ZyBzdHJpbmc7CisjZWxzZQordHlwZWRlZiA6OnN0ZDo6c3RyaW5nIHN0cmluZzsKKyNlbmRpZiAg
Ly8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKworI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklO
RwordHlwZWRlZiA6OndzdHJpbmcgd3N0cmluZzsKKyNlbGlmIEdURVNUX0hBU19TVERfV1NUUklO
RwordHlwZWRlZiA6OnN0ZDo6d3N0cmluZyB3c3RyaW5nOworI2VuZGlmICAvLyBHVEVTVF9IQVNf
R0xPQkFMX1dTVFJJTkcKIAogLy8gQSBoZWxwZXIgZm9yIHN1cHByZXNzaW5nIHdhcm5pbmdzIG9u
IGNvbnN0YW50IGNvbmRpdGlvbi4gIEl0IGp1c3QKIC8vIHJldHVybnMgJ2NvbmRpdGlvbicuCkBA
IC02ODUsNiArMTIxOCwxMiBAQCBjbGFzcyBzY29wZWRfcHRyIHsKICAgICAgIHB0cl8gPSBwOwog
ICAgIH0KICAgfQorCisgIGZyaWVuZCB2b2lkIHN3YXAoc2NvcGVkX3B0ciYgYSwgc2NvcGVkX3B0
ciYgYikgeworICAgIHVzaW5nIHN0ZDo6c3dhcDsKKyAgICBzd2FwKGEucHRyXywgYi5wdHJfKTsK
KyAgfQorCiAgcHJpdmF0ZToKICAgVCogcHRyXzsKIApAQCAtNjkzLDYgKzEyMzIsMTAgQEAgY2xh
c3Mgc2NvcGVkX3B0ciB7CiAKIC8vIERlZmluZXMgUkUuCiAKKyNpZiBHVEVTVF9VU0VTX1BDUkUK
Ky8vIGlmIHVzZWQsIFBDUkUgaXMgaW5qZWN0ZWQgYnkgY3VzdG9tL2d0ZXN0LXBvcnQuaAorI2Vs
aWYgR1RFU1RfVVNFU19QT1NJWF9SRSB8fCBHVEVTVF9VU0VTX1NJTVBMRV9SRQorCiAvLyBBIHNp
bXBsZSBDKysgd3JhcHBlciBmb3IgPHJlZ2V4Lmg+LiAgSXQgdXNlcyB0aGUgUE9TSVggRXh0ZW5k
ZWQKIC8vIFJlZ3VsYXIgRXhwcmVzc2lvbiBzeW50YXguCiBjbGFzcyBHVEVTVF9BUElfIFJFIHsK
QEAgLTcwNCw5ICsxMjQ3LDExIEBAIGNsYXNzIEdURVNUX0FQSV8gUkUgewogICAvLyBDb25zdHJ1
Y3RzIGFuIFJFIGZyb20gYSBzdHJpbmcuCiAgIFJFKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHJlZ2V4
KSB7IEluaXQocmVnZXguY19zdHIoKSk7IH0gIC8vIE5PTElOVAogCi0jaWYgR1RFU1RfSEFTX0dM
T0JBTF9TVFJJTkcKKyMgaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKwogICBSRShjb25zdCA6
OnN0cmluZyYgcmVnZXgpIHsgSW5pdChyZWdleC5jX3N0cigpKTsgfSAgLy8gTk9MSU5UCi0jZW5k
aWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19H
TE9CQUxfU1RSSU5HCiAKICAgUkUoY29uc3QgY2hhciogcmVnZXgpIHsgSW5pdChyZWdleCk7IH0g
IC8vIE5PTElOVAogICB+UkUoKTsKQEAgLTcxOSw3ICsxMjY0LDcgQEAgY2xhc3MgR1RFU1RfQVBJ
XyBSRSB7CiAgIC8vIFBhcnRpYWxNYXRjaChzdHIsIHJlKSByZXR1cm5zIHRydWUgaWZmIHJlZ3Vs
YXIgZXhwcmVzc2lvbiByZQogICAvLyBtYXRjaGVzIGEgc3Vic3RyaW5nIG9mIHN0ciAoaW5jbHVk
aW5nIHN0ciBpdHNlbGYpLgogICAvLwotICAvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogbWFrZSBG
dWxsTWF0Y2goKSBhbmQgUGFydGlhbE1hdGNoKCkgd29yaworICAvLyBGSVhNRTogbWFrZSBGdWxs
TWF0Y2goKSBhbmQgUGFydGlhbE1hdGNoKCkgd29yawogICAvLyB3aGVuIHN0ciBjb250YWlucyBO
VUwgY2hhcmFjdGVycy4KICAgc3RhdGljIGJvb2wgRnVsbE1hdGNoKGNvbnN0IDo6c3RkOjpzdHJp
bmcmIHN0ciwgY29uc3QgUkUmIHJlKSB7CiAgICAgcmV0dXJuIEZ1bGxNYXRjaChzdHIuY19zdHIo
KSwgcmUpOwpAQCAtNzI4LDE0ICsxMjczLDE2IEBAIGNsYXNzIEdURVNUX0FQSV8gUkUgewogICAg
IHJldHVybiBQYXJ0aWFsTWF0Y2goc3RyLmNfc3RyKCksIHJlKTsKICAgfQogCi0jaWYgR1RFU1Rf
SEFTX0dMT0JBTF9TVFJJTkcKKyMgaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKwogICBzdGF0
aWMgYm9vbCBGdWxsTWF0Y2goY29uc3QgOjpzdHJpbmcmIHN0ciwgY29uc3QgUkUmIHJlKSB7CiAg
ICAgcmV0dXJuIEZ1bGxNYXRjaChzdHIuY19zdHIoKSwgcmUpOwogICB9CiAgIHN0YXRpYyBib29s
IFBhcnRpYWxNYXRjaChjb25zdCA6OnN0cmluZyYgc3RyLCBjb25zdCBSRSYgcmUpIHsKICAgICBy
ZXR1cm4gUGFydGlhbE1hdGNoKHN0ci5jX3N0cigpLCByZSk7CiAgIH0KLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX0dMT0JBTF9TVFJJTkcKKworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJ
TkcKIAogICBzdGF0aWMgYm9vbCBGdWxsTWF0Y2goY29uc3QgY2hhciogc3RyLCBjb25zdCBSRSYg
cmUpOwogICBzdGF0aWMgYm9vbCBQYXJ0aWFsTWF0Y2goY29uc3QgY2hhciogc3RyLCBjb25zdCBS
RSYgcmUpOwpAQCAtNzQzLDIyICsxMjkwLDM4IEBAIGNsYXNzIEdURVNUX0FQSV8gUkUgewogIHBy
aXZhdGU6CiAgIHZvaWQgSW5pdChjb25zdCBjaGFyKiByZWdleCk7CiAKLSAgLy8gV2UgdXNlIGEg
Y29uc3QgY2hhciogaW5zdGVhZCBvZiBhIHN0cmluZywgYXMgR29vZ2xlIFRlc3QgbWF5IGJlIHVz
ZWQKLSAgLy8gd2hlcmUgc3RyaW5nIGlzIG5vdCBhdmFpbGFibGUuICBXZSBhbHNvIGRvIG5vdCB1
c2UgR29vZ2xlIFRlc3QncyBvd24KLSAgLy8gU3RyaW5nIHR5cGUgaGVyZSwgaW4gb3JkZXIgdG8g
c2ltcGxpZnkgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlCi0gIC8vIGZpbGVzLgorICAvLyBXZSB1
c2UgYSBjb25zdCBjaGFyKiBpbnN0ZWFkIG9mIGFuIHN0ZDo6c3RyaW5nLCBhcyBHb29nbGUgVGVz
dCB1c2VkIHRvIGJlCisgIC8vIHVzZWQgd2hlcmUgc3RkOjpzdHJpbmcgaXMgbm90IGF2YWlsYWJs
ZS4gIEZJWE1FOiBjaGFuZ2UgdG8KKyAgLy8gc3RkOjpzdHJpbmcuCiAgIGNvbnN0IGNoYXIqIHBh
dHRlcm5fOwogICBib29sIGlzX3ZhbGlkXzsKLSNpZiBHVEVTVF9VU0VTX1BPU0lYX1JFCisKKyMg
aWYgR1RFU1RfVVNFU19QT1NJWF9SRQorCiAgIHJlZ2V4X3QgZnVsbF9yZWdleF87ICAgICAvLyBG
b3IgRnVsbE1hdGNoKCkuCiAgIHJlZ2V4X3QgcGFydGlhbF9yZWdleF87ICAvLyBGb3IgUGFydGlh
bE1hdGNoKCkuCi0jZWxzZSAgLy8gR1RFU1RfVVNFU19TSU1QTEVfUkUKKworIyBlbHNlICAvLyBH
VEVTVF9VU0VTX1NJTVBMRV9SRQorCiAgIGNvbnN0IGNoYXIqIGZ1bGxfcGF0dGVybl87ICAvLyBG
b3IgRnVsbE1hdGNoKCk7Ci0jZW5kaWYKKworIyBlbmRpZgogCiAgIEdURVNUX0RJU0FMTE9XX0FT
U0lHTl8oUkUpOwogfTsKIAorI2VuZGlmICAvLyBHVEVTVF9VU0VTX1BDUkUKKworLy8gRm9ybWF0
cyBhIHNvdXJjZSBmaWxlIHBhdGggYW5kIGEgbGluZSBudW1iZXIgYXMgdGhleSB3b3VsZCBhcHBl
YXIKKy8vIGluIGFuIGVycm9yIG1lc3NhZ2UgZnJvbSB0aGUgY29tcGlsZXIgdXNlZCB0byBjb21w
aWxlIHRoaXMgY29kZS4KK0dURVNUX0FQSV8gOjpzdGQ6OnN0cmluZyBGb3JtYXRGaWxlTG9jYXRp
b24oY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpOworCisvLyBGb3JtYXRzIGEgZmlsZSBsb2Nh
dGlvbiBmb3IgY29tcGlsZXItaW5kZXBlbmRlbnQgWE1MIG91dHB1dC4KKy8vIEFsdGhvdWdoIHRo
aXMgZnVuY3Rpb24gaXMgbm90IHBsYXRmb3JtIGRlcGVuZGVudCwgd2UgcHV0IGl0IG5leHQgdG8K
Ky8vIEZvcm1hdEZpbGVMb2NhdGlvbiBpbiBvcmRlciB0byBjb250cmFzdCB0aGUgdHdvIGZ1bmN0
aW9ucy4KK0dURVNUX0FQSV8gOjpzdGQ6OnN0cmluZyBGb3JtYXRDb21waWxlckluZGVwZW5kZW50
RmlsZUxvY2F0aW9uKGNvbnN0IGNoYXIqIGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZSk7CisKIC8vIERl
ZmluZXMgbG9nZ2luZyB1dGlsaXRpZXM6CiAvLyAgIEdURVNUX0xPR18oc2V2ZXJpdHkpIC0gbG9n
cyBtZXNzYWdlcyBhdCB0aGUgc3BlY2lmaWVkIHNldmVyaXR5IGxldmVsLiBUaGUKIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlIGl0c2VsZiBpcyBzdHJlYW1lZCBpbnRvIHRoZSBt
YWNyby4KQEAgLTc5MCwxMyArMTM1MywxOCBAQCBjbGFzcyBHVEVTVF9BUElfIEdUZXN0TG9nIHsK
ICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhHVGVzdExvZyk7CiB9OwogCi0jZGVm
aW5lIEdURVNUX0xPR18oc2V2ZXJpdHkpIFwKKyNpZiAhZGVmaW5lZChHVEVTVF9MT0dfKQorCisj
IGRlZmluZSBHVEVTVF9MT0dfKHNldmVyaXR5KSBcCiAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
R1Rlc3RMb2coOjp0ZXN0aW5nOjppbnRlcm5hbDo6R1RFU1RfIyNzZXZlcml0eSwgXAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykuR2V0U3RyZWFt
KCkKIAogaW5saW5lIHZvaWQgTG9nVG9TdGRlcnIoKSB7fQogaW5saW5lIHZvaWQgRmx1c2hJbmZv
TG9nKCkgeyBmZmx1c2goTlVMTCk7IH0KIAorI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9MT0df
KQorCisjaWYgIWRlZmluZWQoR1RFU1RfQ0hFQ0tfKQogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJ
T04gLSBETyBOT1QgVVNFLgogLy8KIC8vIEdURVNUX0NIRUNLXyBpcyBhbiBhbGwtbW9kZSBhc3Nl
cnQuIEl0IGFib3J0cyB0aGUgcHJvZ3JhbSBpZiB0aGUgY29uZGl0aW9uCkBAIC04MTEsMTIgKzEz
NzksMTMgQEAgaW5saW5lIHZvaWQgRmx1c2hJbmZvTG9nKCkgeyBmZmx1c2goTlVMTCk7IH0KIC8v
ICAgIGNvbmRpdGlvbiBpdHNlbGYsIHBsdXMgYWRkaXRpb25hbCBtZXNzYWdlIHN0cmVhbWVkIGlu
dG8gaXQsIGlmIGFueSwKIC8vICAgIGFuZCB0aGVuIGl0IGFib3J0cyB0aGUgcHJvZ3JhbS4gSXQg
YWJvcnRzIHRoZSBwcm9ncmFtIGlycmVzcGVjdGl2ZSBvZgogLy8gICAgd2hldGhlciBpdCBpcyBi
dWlsdCBpbiB0aGUgZGVidWcgbW9kZSBvciBub3QuCi0jZGVmaW5lIEdURVNUX0NIRUNLXyhjb25k
aXRpb24pIFwKKyMgZGVmaW5lIEdURVNUX0NIRUNLXyhjb25kaXRpb24pIFwKICAgICBHVEVTVF9B
TUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCiAgICAgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6Oklz
VHJ1ZShjb25kaXRpb24pKSBcCiAgICAgICA7IFwKICAgICBlbHNlIFwKICAgICAgIEdURVNUX0xP
R18oRkFUQUwpIDw8ICJDb25kaXRpb24gIiAjY29uZGl0aW9uICIgZmFpbGVkLiAiCisjZW5kaWYg
IC8vICFkZWZpbmVkKEdURVNUX0NIRUNLXykKIAogLy8gQW4gYWxsLW1vZGUgYXNzZXJ0IHRvIHZl
cmlmeSB0aGF0IHRoZSBnaXZlbiBQT1NJWC1zdHlsZSBmdW5jdGlvbgogLy8gY2FsbCByZXR1cm5z
IDAgKGluZGljYXRpbmcgc3VjY2VzcykuICBLbm93biBsaW1pdGF0aW9uOiB0aGlzCkBAIC04Mjgs
OCArMTM5NywxMjUgQEAgaW5saW5lIHZvaWQgRmx1c2hJbmZvTG9nKCkgeyBmZmx1c2goTlVMTCk7
IH0KICAgICBHVEVTVF9MT0dfKEZBVEFMKSA8PCAjcG9zaXhfY2FsbCA8PCAiZmFpbGVkIHdpdGgg
ZXJyb3IgIiBcCiAgICAgICAgICAgICAgICAgICAgICAgPDwgZ3Rlc3RfZXJyb3IKIAorLy8gQWRk
cyByZWZlcmVuY2UgdG8gYSB0eXBlIGlmIGl0IGlzIG5vdCBhIHJlZmVyZW5jZSB0eXBlLAorLy8g
b3RoZXJ3aXNlIGxlYXZlcyBpdCB1bmNoYW5nZWQuICBUaGlzIGlzIHRoZSBzYW1lIGFzCisvLyB0
cjE6OmFkZF9yZWZlcmVuY2UsIHdoaWNoIGlzIG5vdCB3aWRlbHkgYXZhaWxhYmxlIHlldC4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEFkZFJlZmVyZW5jZSB7IHR5cGVkZWYgVCYgdHlw
ZTsgfTsgIC8vIE5PTElOVAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQWRkUmVmZXJl
bmNlPFQmPiB7IHR5cGVkZWYgVCYgdHlwZTsgfTsgIC8vIE5PTElOVAorCisvLyBBIGhhbmR5IHdy
YXBwZXIgYXJvdW5kIEFkZFJlZmVyZW5jZSB0aGF0IHdvcmtzIHdoZW4gdGhlIGFyZ3VtZW50IFQK
Ky8vIGRlcGVuZHMgb24gdGVtcGxhdGUgcGFyYW1ldGVycy4KKyNkZWZpbmUgR1RFU1RfQUREX1JF
RkVSRU5DRV8oVCkgXAorICAgIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkFkZFJlZmVy
ZW5jZTxUPjo6dHlwZQorCisvLyBUcmFuc2Zvcm1zICJUIiBpbnRvICJjb25zdCBUJiIgYWNjb3Jk
aW5nIHRvIHN0YW5kYXJkIHJlZmVyZW5jZSBjb2xsYXBzaW5nCisvLyBydWxlcyAodGhpcyBpcyBv
bmx5IG5lZWRlZCBhcyBhIGJhY2twb3J0IGZvciBDKys5OCBjb21waWxlcnMgdGhhdCBkbyBub3QK
Ky8vIHN1cHBvcnQgcmVmZXJlbmNlIGNvbGxhcHNpbmcpLiBTcGVjaWZpY2FsbHksIGl0IHRyYW5z
Zm9ybXM6CisvLworLy8gICBjaGFyICAgICAgICAgPT0+IGNvbnN0IGNoYXImCisvLyAgIGNvbnN0
IGNoYXIgICA9PT4gY29uc3QgY2hhciYKKy8vICAgY2hhciYgICAgICAgID09PiBjaGFyJgorLy8g
ICBjb25zdCBjaGFyJiAgPT0+IGNvbnN0IGNoYXImCisvLworLy8gTm90ZSB0aGF0IHRoZSBub24t
Y29uc3QgcmVmZXJlbmNlIHdpbGwgbm90IGhhdmUgImNvbnN0IiBhZGRlZC4gVGhpcyBpcworLy8g
c3RhbmRhcmQsIGFuZCBuZWNlc3Nhcnkgc28gdGhhdCAiVCIgY2FuIGFsd2F5cyBiaW5kIHRvICJj
b25zdCBUJiIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBDb25zdFJlZiB7IHR5cGVk
ZWYgY29uc3QgVCYgdHlwZTsgfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IENvbnN0
UmVmPFQmPiB7IHR5cGVkZWYgVCYgdHlwZTsgfTsKKworLy8gVGhlIGFyZ3VtZW50IFQgbXVzdCBk
ZXBlbmQgb24gc29tZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgorI2RlZmluZSBHVEVTVF9SRUZFUkVO
Q0VfVE9fQ09OU1RfKFQpIFwKKyAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29uc3RS
ZWY8VD46OnR5cGUKKworI2lmIEdURVNUX0hBU19TVERfTU9WRV8KK3VzaW5nIHN0ZDo6Zm9yd2Fy
ZDsKK3VzaW5nIHN0ZDo6bW92ZTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUnZh
bHVlUmVmIHsKKyAgdHlwZWRlZiBUJiYgdHlwZTsKK307CisjZWxzZSAgLy8gR1RFU1RfSEFTX1NU
RF9NT1ZFXwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25zdCBUJiBtb3ZlKGNvbnN0IFQmIHQp
IHsKKyAgcmV0dXJuIHQ7Cit9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK0dURVNUX0FERF9SRUZF
UkVOQ0VfKFQpIGZvcndhcmQoR1RFU1RfQUREX1JFRkVSRU5DRV8oVCkgdCkgeyByZXR1cm4gdDsg
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBSdmFsdWVSZWYgeworICB0eXBlZGVm
IGNvbnN0IFQmIHR5cGU7Cit9OworI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX01PVkVfCisKIC8v
IElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCiAvLwor
Ly8gVXNlIEltcGxpY2l0Q2FzdF8gYXMgYSBzYWZlIHZlcnNpb24gb2Ygc3RhdGljX2Nhc3QgZm9y
IHVwY2FzdGluZyBpbgorLy8gdGhlIHR5cGUgaGllcmFyY2h5IChlLmcuIGNhc3RpbmcgYSBGb28q
IHRvIGEgU3VwZXJjbGFzc09mRm9vKiBvciBhCisvLyBjb25zdCBGb28qKS4gIFdoZW4geW91IHVz
ZSBJbXBsaWNpdENhc3RfLCB0aGUgY29tcGlsZXIgY2hlY2tzIHRoYXQKKy8vIHRoZSBjYXN0IGlz
IHNhZmUuICBTdWNoIGV4cGxpY2l0IEltcGxpY2l0Q2FzdF9zIGFyZSBuZWNlc3NhcnkgaW4KKy8v
IHN1cnByaXNpbmdseSBtYW55IHNpdHVhdGlvbnMgd2hlcmUgQysrIGRlbWFuZHMgYW4gZXhhY3Qg
dHlwZSBtYXRjaAorLy8gaW5zdGVhZCBvZiBhbiBhcmd1bWVudCB0eXBlIGNvbnZlcnRhYmxlIHRv
IGEgdGFyZ2V0IHR5cGUuCisvLworLy8gVGhlIHN5bnRheCBmb3IgdXNpbmcgSW1wbGljaXRDYXN0
XyBpcyB0aGUgc2FtZSBhcyBmb3Igc3RhdGljX2Nhc3Q6CisvLworLy8gICBJbXBsaWNpdENhc3Rf
PFRvVHlwZT4oZXhwcikKKy8vCisvLyBJbXBsaWNpdENhc3RfIHdvdWxkIGhhdmUgYmVlbiBwYXJ0
IG9mIHRoZSBDKysgc3RhbmRhcmQgbGlicmFyeSwKKy8vIGJ1dCB0aGUgcHJvcG9zYWwgd2FzIHN1
Ym1pdHRlZCB0b28gbGF0ZS4gIEl0IHdpbGwgcHJvYmFibHkgbWFrZQorLy8gaXRzIHdheSBpbnRv
IHRoZSBsYW5ndWFnZSBpbiB0aGUgZnV0dXJlLgorLy8KKy8vIFRoaXMgcmVsYXRpdmVseSB1Z2x5
IG5hbWUgaXMgaW50ZW50aW9uYWwuIEl0IHByZXZlbnRzIGNsYXNoZXMgd2l0aAorLy8gc2ltaWxh
ciBmdW5jdGlvbnMgdXNlcnMgbWF5IGhhdmUgKGUuZy4sIGltcGxpY2l0X2Nhc3QpLiBUaGUgaW50
ZXJuYWwKKy8vIG5hbWVzcGFjZSBhbG9uZSBpcyBub3QgZW5vdWdoIGJlY2F1c2UgdGhlIGZ1bmN0
aW9uIGNhbiBiZSBmb3VuZCBieSBBREwuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUbz4KK2lubGluZSBU
byBJbXBsaWNpdENhc3RfKFRvIHgpIHsgcmV0dXJuIHg7IH0KKworLy8gV2hlbiB5b3UgdXBjYXN0
ICh0aGF0IGlzLCBjYXN0IGEgcG9pbnRlciBmcm9tIHR5cGUgRm9vIHRvIHR5cGUKKy8vIFN1cGVy
Y2xhc3NPZkZvbyksIGl0J3MgZmluZSB0byB1c2UgSW1wbGljaXRDYXN0Xzw+LCBzaW5jZSB1cGNh
c3RzCisvLyBhbHdheXMgc3VjY2VlZC4gIFdoZW4geW91IGRvd25jYXN0ICh0aGF0IGlzLCBjYXN0
IGEgcG9pbnRlciBmcm9tCisvLyB0eXBlIEZvbyB0byB0eXBlIFN1YmNsYXNzT2ZGb28pLCBzdGF0
aWNfY2FzdDw+IGlzbid0IHNhZmUsIGJlY2F1c2UKKy8vIGhvdyBkbyB5b3Uga25vdyB0aGUgcG9p
bnRlciBpcyByZWFsbHkgb2YgdHlwZSBTdWJjbGFzc09mRm9vPyAgSXQKKy8vIGNvdWxkIGJlIGEg
YmFyZSBGb28sIG9yIG9mIHR5cGUgRGlmZmVyZW50U3ViY2xhc3NPZkZvby4gIFRodXMsCisvLyB3
aGVuIHlvdSBkb3duY2FzdCwgeW91IHNob3VsZCB1c2UgdGhpcyBtYWNyby4gIEluIGRlYnVnIG1v
ZGUsIHdlCisvLyB1c2UgZHluYW1pY19jYXN0PD4gdG8gZG91YmxlLWNoZWNrIHRoZSBkb3duY2Fz
dCBpcyBsZWdhbCAod2UgZGllCisvLyBpZiBpdCdzIG5vdCkuICBJbiBub3JtYWwgbW9kZSwgd2Ug
ZG8gdGhlIGVmZmljaWVudCBzdGF0aWNfY2FzdDw+CisvLyBpbnN0ZWFkLiAgVGh1cywgaXQncyBp
bXBvcnRhbnQgdG8gdGVzdCBpbiBkZWJ1ZyBtb2RlIHRvIG1ha2Ugc3VyZQorLy8gdGhlIGNhc3Qg
aXMgbGVnYWwhCisvLyAgICBUaGlzIGlzIHRoZSBvbmx5IHBsYWNlIGluIHRoZSBjb2RlIHdlIHNo
b3VsZCB1c2UgZHluYW1pY19jYXN0PD4uCisvLyBJbiBwYXJ0aWN1bGFyLCB5b3UgU0hPVUxETidU
IGJlIHVzaW5nIGR5bmFtaWNfY2FzdDw+IGluIG9yZGVyIHRvCisvLyBkbyBSVFRJIChlZyBjb2Rl
IGxpa2UgdGhpczoKKy8vICAgIGlmIChkeW5hbWljX2Nhc3Q8U3ViY2xhc3MxPihmb28pKSBIYW5k
bGVBU3ViY2xhc3MxT2JqZWN0KGZvbyk7CisvLyAgICBpZiAoZHluYW1pY19jYXN0PFN1YmNsYXNz
Mj4oZm9vKSkgSGFuZGxlQVN1YmNsYXNzMk9iamVjdChmb28pOworLy8gWW91IHNob3VsZCBkZXNp
Z24gdGhlIGNvZGUgc29tZSBvdGhlciB3YXkgbm90IHRvIG5lZWQgdGhpcy4KKy8vCisvLyBUaGlz
IHJlbGF0aXZlbHkgdWdseSBuYW1lIGlzIGludGVudGlvbmFsLiBJdCBwcmV2ZW50cyBjbGFzaGVz
IHdpdGgKKy8vIHNpbWlsYXIgZnVuY3Rpb25zIHVzZXJzIG1heSBoYXZlIChlLmcuLCBkb3duX2Nh
c3QpLiBUaGUgaW50ZXJuYWwKKy8vIG5hbWVzcGFjZSBhbG9uZSBpcyBub3QgZW5vdWdoIGJlY2F1
c2UgdGhlIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBieSBBREwuCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
bywgdHlwZW5hbWUgRnJvbT4gIC8vIHVzZSBsaWtlIHRoaXM6IERvd25DYXN0XzxUKj4oZm9vKTsK
K2lubGluZSBUbyBEb3duQ2FzdF8oRnJvbSogZikgeyAgLy8gc28gd2Ugb25seSBhY2NlcHQgcG9p
bnRlcnMKKyAgLy8gRW5zdXJlcyB0aGF0IFRvIGlzIGEgc3ViLXR5cGUgb2YgRnJvbSAqLiAgVGhp
cyB0ZXN0IGlzIGhlcmUgb25seQorICAvLyBmb3IgY29tcGlsZS10aW1lIHR5cGUgY2hlY2tpbmcs
IGFuZCBoYXMgbm8gb3ZlcmhlYWQgaW4gYW4KKyAgLy8gb3B0aW1pemVkIGJ1aWxkIGF0IHJ1bi10
aW1lLCBhcyBpdCB3aWxsIGJlIG9wdGltaXplZCBhd2F5CisgIC8vIGNvbXBsZXRlbHkuCisgIEdU
RVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUFVTSF8oKQorICBpZiAoZmFsc2UpIHsKKyAgR1RF
U1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QT1BfKCkKKyAgICBjb25zdCBUbyB0byA9IE5VTEw7
CisgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxGcm9tKj4odG8pOworICB9
CisKKyNpZiBHVEVTVF9IQVNfUlRUSQorICAvLyBSVFRJOiBkZWJ1ZyBtb2RlIG9ubHkhCisgIEdU
RVNUX0NIRUNLXyhmID09IE5VTEwgfHwgZHluYW1pY19jYXN0PFRvPihmKSAhPSBOVUxMKTsKKyNl
bmRpZgorICByZXR1cm4gc3RhdGljX2Nhc3Q8VG8+KGYpOworfQorCiAvLyBEb3duY2FzdHMgdGhl
IHBvaW50ZXIgb2YgdHlwZSBCYXNlIHRvIERlcml2ZWQuCiAvLyBEZXJpdmVkIG11c3QgYmUgYSBz
dWJjbGFzcyBvZiBCYXNlLiBUaGUgcGFyYW1ldGVyIE1VU1QKIC8vIHBvaW50IHRvIGEgY2xhc3Mg
b2YgdHlwZSBEZXJpdmVkLCBub3QgYW55IHN1YmNsYXNzIG9mIGl0LgpAQCAtODM5LDEzICsxNTI1
LDE4IEBAIHRlbXBsYXRlIDxjbGFzcyBEZXJpdmVkLCBjbGFzcyBCYXNlPgogRGVyaXZlZCogQ2hl
Y2tlZERvd25jYXN0VG9BY3R1YWxUeXBlKEJhc2UqIGJhc2UpIHsKICNpZiBHVEVTVF9IQVNfUlRU
SQogICBHVEVTVF9DSEVDS18odHlwZWlkKCpiYXNlKSA9PSB0eXBlaWQoRGVyaXZlZCkpOworI2Vu
ZGlmCisKKyNpZiBHVEVTVF9IQVNfRE9XTkNBU1RfCisgIHJldHVybiA6OmRvd25fY2FzdDxEZXJp
dmVkKj4oYmFzZSk7CisjZWxpZiBHVEVTVF9IQVNfUlRUSQogICByZXR1cm4gZHluYW1pY19jYXN0
PERlcml2ZWQqPihiYXNlKTsgIC8vIE5PTElOVAogI2Vsc2UKICAgcmV0dXJuIHN0YXRpY19jYXN0
PERlcml2ZWQqPihiYXNlKTsgIC8vIFBvb3IgbWFuJ3MgZG93bmNhc3QuCiAjZW5kaWYKIH0KIAot
I2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCisjaWYgR1RFU1RfSEFTX1NUUkVBTV9S
RURJUkVDVElPTgogCiAvLyBEZWZpbmVzIHRoZSBzdGRlcnIgY2FwdHVyZXI6CiAvLyAgIENhcHR1
cmVTdGRvdXQgICAgIC0gc3RhcnRzIGNhcHR1cmluZyBzdGRvdXQuCkBAIC04NTQsMzAgKzE1NDUs
MzkgQEAgRGVyaXZlZCogQ2hlY2tlZERvd25jYXN0VG9BY3R1YWxUeXBlKEJhc2UqIGJhc2UpIHsK
IC8vICAgR2V0Q2FwdHVyZWRTdGRlcnIgLSBzdG9wcyBjYXB0dXJpbmcgc3RkZXJyIGFuZCByZXR1
cm5zIHRoZSBjYXB0dXJlZCBzdHJpbmcuCiAvLwogR1RFU1RfQVBJXyB2b2lkIENhcHR1cmVTdGRv
dXQoKTsKLUdURVNUX0FQSV8gU3RyaW5nIEdldENhcHR1cmVkU3Rkb3V0KCk7CitHVEVTVF9BUElf
IHN0ZDo6c3RyaW5nIEdldENhcHR1cmVkU3Rkb3V0KCk7CiBHVEVTVF9BUElfIHZvaWQgQ2FwdHVy
ZVN0ZGVycigpOwotR1RFU1RfQVBJXyBTdHJpbmcgR2V0Q2FwdHVyZWRTdGRlcnIoKTsKK0dURVNU
X0FQSV8gc3RkOjpzdHJpbmcgR2V0Q2FwdHVyZWRTdGRlcnIoKTsKIAotI2VuZGlmICAvLyBHVEVT
VF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXworI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JF
RElSRUNUSU9OCisvLyBSZXR1cm5zIHRoZSBzaXplIChpbiBieXRlcykgb2YgYSBmaWxlLgorR1RF
U1RfQVBJXyBzaXplX3QgR2V0RmlsZVNpemUoRklMRSogZmlsZSk7CiAKKy8vIFJlYWRzIHRoZSBl
bnRpcmUgY29udGVudCBvZiBhIGZpbGUgYXMgYSBzdHJpbmcuCitHVEVTVF9BUElfIHN0ZDo6c3Ry
aW5nIFJlYWRFbnRpcmVGaWxlKEZJTEUqIGZpbGUpOwogCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RF
U1QKKy8vIEFsbCBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgorR1RFU1RfQVBJXyBzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4gR2V0QXJndnMoKTsKIAotLy8gQSBjb3B5IG9mIGFsbCBjb21tYW5kIGxp
bmUgYXJndW1lbnRzLiAgU2V0IGJ5IEluaXRHb29nbGVUZXN0KCkuCi1leHRlcm4gOjpzdGQ6OnZl
Y3RvcjxTdHJpbmc+IGdfYXJndnM7CisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKIAotLy8gR1RF
U1RfSEFTX0RFQVRIX1RFU1QgaW1wbGllcyB3ZSBoYXZlIDo6c3RkOjpzdHJpbmcuCi1jb25zdCA6
OnN0ZDo6dmVjdG9yPFN0cmluZz4mIEdldEFyZ3ZzKCk7CitzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4gR2V0SW5qZWN0YWJsZUFyZ3ZzKCk7CisvLyBEZXByZWNhdGVkOiBwYXNzIHRoZSBhcmdzIHZl
Y3RvciBieSB2YWx1ZSBpbnN0ZWFkLgordm9pZCBTZXRJbmplY3RhYmxlQXJndnMoY29uc3Qgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+KiBuZXdfYXJndnMpOwordm9pZCBTZXRJbmplY3RhYmxlQXJn
dnMoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBuZXdfYXJndnMpOworI2lmIEdURVNU
X0hBU19HTE9CQUxfU1RSSU5HCit2b2lkIFNldEluamVjdGFibGVBcmd2cyhjb25zdCBzdGQ6OnZl
Y3RvcjwgOjpzdHJpbmc+JiBuZXdfYXJndnMpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFM
X1NUUklORwordm9pZCBDbGVhckluamVjdGFibGVBcmd2cygpOwogCiAjZW5kaWYgIC8vIEdURVNU
X0hBU19ERUFUSF9URVNUCiAKIC8vIERlZmluZXMgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMu
Ci0KLSNpZiBHVEVTVF9IQVNfUFRIUkVBRAotCi0vLyBTbGVlcHMgZm9yIChyb3VnaGx5KSBuIG1p
bGxpLXNlY29uZHMuICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZm9yCi0vLyB0ZXN0aW5nIEdvb2ds
ZSBUZXN0J3Mgb3duIGNvbnN0cnVjdHMuICBEb24ndCB1c2UgaXQgaW4gdXNlciB0ZXN0cywKLS8v
IGVpdGhlciBkaXJlY3RseSBvciBpbmRpcmVjdGx5LgorI2lmIEdURVNUX0lTX1RIUkVBRFNBRkUK
KyMgaWYgR1RFU1RfSEFTX1BUSFJFQUQKKy8vIFNsZWVwcyBmb3IgKHJvdWdobHkpIG4gbWlsbGlz
ZWNvbmRzLiAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGZvciB0ZXN0aW5nCisvLyBHb29nbGUgVGVz
dCdzIG93biBjb25zdHJ1Y3RzLiAgRG9uJ3QgdXNlIGl0IGluIHVzZXIgdGVzdHMsIGVpdGhlcgor
Ly8gZGlyZWN0bHkgb3IgaW5kaXJlY3RseS4KIGlubGluZSB2b2lkIFNsZWVwTWlsbGlzZWNvbmRz
KGludCBuKSB7CiAgIGNvbnN0IHRpbWVzcGVjIHRpbWUgPSB7CiAgICAgMCwgICAgICAgICAgICAg
ICAgICAvLyAwIHNlY29uZHMuCkBAIC04ODUsNyArMTU4NSwxMyBAQCBpbmxpbmUgdm9pZCBTbGVl
cE1pbGxpc2Vjb25kcyhpbnQgbikgewogICB9OwogICBuYW5vc2xlZXAoJnRpbWUsIE5VTEwpOwog
fQorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX1BUSFJFQUQKIAorIyBpZiBHVEVTVF9IQVNfTk9USUZJ
Q0FUSU9OXworLy8gTm90aWZpY2F0aW9uIGhhcyBhbHJlYWR5IGJlZW4gaW1wb3J0ZWQgaW50byB0
aGUgbmFtZXNwYWNlLgorLy8gTm90aGluZyB0byBkbyBoZXJlLgorCisjIGVsaWYgR1RFU1RfSEFT
X1BUSFJFQUQKIC8vIEFsbG93cyBhIGNvbnRyb2xsZXIgdGhyZWFkIHRvIHBhdXNlIGV4ZWN1dGlv
biBvZiBuZXdseSBjcmVhdGVkCiAvLyB0aHJlYWRzIHVudGlsIG5vdGlmaWVkLiAgSW5zdGFuY2Vz
IG9mIHRoaXMgY2xhc3MgbXVzdCBiZSBjcmVhdGVkCiAvLyBhbmQgZGVzdHJveWVkIGluIHRoZSBj
b250cm9sbGVyIHRocmVhZC4KQEAgLTg5NCwyNSArMTYwMCw5NiBAQCBpbmxpbmUgdm9pZCBTbGVl
cE1pbGxpc2Vjb25kcyhpbnQgbikgewogLy8gdXNlIGl0IGluIHVzZXIgdGVzdHMsIGVpdGhlciBk
aXJlY3RseSBvciBpbmRpcmVjdGx5LgogY2xhc3MgTm90aWZpY2F0aW9uIHsKICBwdWJsaWM6Ci0g
IE5vdGlmaWNhdGlvbigpIDogbm90aWZpZWRfKGZhbHNlKSB7fQorICBOb3RpZmljYXRpb24oKSA6
IG5vdGlmaWVkXyhmYWxzZSkgeworICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJl
YWRfbXV0ZXhfaW5pdCgmbXV0ZXhfLCBOVUxMKSk7CisgIH0KKyAgfk5vdGlmaWNhdGlvbigpIHsK
KyAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm11dGV4Xyk7CisgIH0KIAogICAvLyBOb3RpZmll
cyBhbGwgdGhyZWFkcyBjcmVhdGVkIHdpdGggdGhpcyBub3RpZmljYXRpb24gdG8gc3RhcnQuIE11
c3QKICAgLy8gYmUgY2FsbGVkIGZyb20gdGhlIGNvbnRyb2xsZXIgdGhyZWFkLgotICB2b2lkIE5v
dGlmeSgpIHsgbm90aWZpZWRfID0gdHJ1ZTsgfQorICB2b2lkIE5vdGlmeSgpIHsKKyAgICBwdGhy
ZWFkX211dGV4X2xvY2soJm11dGV4Xyk7CisgICAgbm90aWZpZWRfID0gdHJ1ZTsKKyAgICBwdGhy
ZWFkX211dGV4X3VubG9jaygmbXV0ZXhfKTsKKyAgfQogCiAgIC8vIEJsb2NrcyB1bnRpbCB0aGUg
Y29udHJvbGxlciB0aHJlYWQgbm90aWZpZXMuIE11c3QgYmUgY2FsbGVkIGZyb20gYSB0ZXN0CiAg
IC8vIHRocmVhZC4KICAgdm9pZCBXYWl0Rm9yTm90aWZpY2F0aW9uKCkgewotICAgIHdoaWxlKCFu
b3RpZmllZF8pIHsKKyAgICBmb3IgKDs7KSB7CisgICAgICBwdGhyZWFkX211dGV4X2xvY2soJm11
dGV4Xyk7CisgICAgICBjb25zdCBib29sIG5vdGlmaWVkID0gbm90aWZpZWRfOworICAgICAgcHRo
cmVhZF9tdXRleF91bmxvY2soJm11dGV4Xyk7CisgICAgICBpZiAobm90aWZpZWQpCisgICAgICAg
IGJyZWFrOwogICAgICAgU2xlZXBNaWxsaXNlY29uZHMoMTApOwogICAgIH0KICAgfQogCiAgcHJp
dmF0ZToKLSAgdm9sYXRpbGUgYm9vbCBub3RpZmllZF87CisgIHB0aHJlYWRfbXV0ZXhfdCBtdXRl
eF87CisgIGJvb2wgbm90aWZpZWRfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oTm90aWZpY2F0aW9uKTsKK307CisKKyMgZWxpZiBHVEVTVF9PU19XSU5ET1dTICYmICFHVEVT
VF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUCisKK0dURVNUX0FQSV8g
dm9pZCBTbGVlcE1pbGxpc2Vjb25kcyhpbnQgbik7CisKKy8vIFByb3ZpZGVzIGxlYWstc2FmZSBX
aW5kb3dzIGtlcm5lbCBoYW5kbGUgb3duZXJzaGlwLgorLy8gVXNlZCBpbiBkZWF0aCB0ZXN0cyBh
bmQgaW4gdGhyZWFkaW5nIHN1cHBvcnQuCitjbGFzcyBHVEVTVF9BUElfIEF1dG9IYW5kbGUgewor
IHB1YmxpYzoKKyAgLy8gQXNzdW1lIHRoYXQgV2luMzIgSEFORExFIHR5cGUgaXMgZXF1aXZhbGVu
dCB0byB2b2lkKi4gRG9pbmcgc28gYWxsb3dzIHVzIHRvCisgIC8vIGF2b2lkIGluY2x1ZGluZyA8
d2luZG93cy5oPiBpbiB0aGlzIGhlYWRlciBmaWxlLiBJbmNsdWRpbmcgPHdpbmRvd3MuaD4gaXMK
KyAgLy8gdW5kZXNpcmFibGUgYmVjYXVzZSBpdCBkZWZpbmVzIGEgbG90IG9mIHN5bWJvbHMgYW5k
IG1hY3JvcyB0aGF0IHRlbmQgdG8KKyAgLy8gY29uZmxpY3Qgd2l0aCBjbGllbnQgY29kZS4gVGhp
cyBhc3N1bXB0aW9uIGlzIHZlcmlmaWVkIGJ5CisgIC8vIFdpbmRvd3NUeXBlc1Rlc3QuSEFORExF
SXNWb2lkU3Rhci4KKyAgdHlwZWRlZiB2b2lkKiBIYW5kbGU7CisgIEF1dG9IYW5kbGUoKTsKKyAg
ZXhwbGljaXQgQXV0b0hhbmRsZShIYW5kbGUgaGFuZGxlKTsKKworICB+QXV0b0hhbmRsZSgpOwor
CisgIEhhbmRsZSBHZXQoKSBjb25zdDsKKyAgdm9pZCBSZXNldCgpOworICB2b2lkIFJlc2V0KEhh
bmRsZSBoYW5kbGUpOworCisgcHJpdmF0ZToKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgaGFu
ZGxlIGlzIGEgdmFsaWQgaGFuZGxlIG9iamVjdCB0aGF0IGNhbiBiZSBjbG9zZWQuCisgIGJvb2wg
SXNDbG9zZWFibGUoKSBjb25zdDsKKworICBIYW5kbGUgaGFuZGxlXzsKKworICBHVEVTVF9ESVNB
TExPV19DT1BZX0FORF9BU1NJR05fKEF1dG9IYW5kbGUpOworfTsKKworLy8gQWxsb3dzIGEgY29u
dHJvbGxlciB0aHJlYWQgdG8gcGF1c2UgZXhlY3V0aW9uIG9mIG5ld2x5IGNyZWF0ZWQKKy8vIHRo
cmVhZHMgdW50aWwgbm90aWZpZWQuICBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBtdXN0IGJlIGNy
ZWF0ZWQKKy8vIGFuZCBkZXN0cm95ZWQgaW4gdGhlIGNvbnRyb2xsZXIgdGhyZWFkLgorLy8KKy8v
IFRoaXMgY2xhc3MgaXMgb25seSBmb3IgdGVzdGluZyBHb29nbGUgVGVzdCdzIG93biBjb25zdHJ1
Y3RzLiBEbyBub3QKKy8vIHVzZSBpdCBpbiB1c2VyIHRlc3RzLCBlaXRoZXIgZGlyZWN0bHkgb3Ig
aW5kaXJlY3RseS4KK2NsYXNzIEdURVNUX0FQSV8gTm90aWZpY2F0aW9uIHsKKyBwdWJsaWM6Cisg
IE5vdGlmaWNhdGlvbigpOworICB2b2lkIE5vdGlmeSgpOworICB2b2lkIFdhaXRGb3JOb3RpZmlj
YXRpb24oKTsKKworIHByaXZhdGU6CisgIEF1dG9IYW5kbGUgZXZlbnRfOwogCiAgIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTm90aWZpY2F0aW9uKTsKIH07CisjIGVuZGlmICAvLyBH
VEVTVF9IQVNfTk9USUZJQ0FUSU9OXworCisvLyBPbiBNaW5HVywgd2UgY2FuIGhhdmUgYm90aCBH
VEVTVF9PU19XSU5ET1dTIGFuZCBHVEVTVF9IQVNfUFRIUkVBRAorLy8gZGVmaW5lZCwgYnV0IHdl
IGRvbid0IHdhbnQgdG8gdXNlIE1pbkdXJ3MgcHRocmVhZHMgaW1wbGVtZW50YXRpb24sIHdoaWNo
CisvLyBoYXMgY29uZm9ybWFuY2UgcHJvYmxlbXMgd2l0aCBzb21lIHZlcnNpb25zIG9mIHRoZSBQ
T1NJWCBzdGFuZGFyZC4KKyMgaWYgR1RFU1RfSEFTX1BUSFJFQUQgJiYgIUdURVNUX09TX1dJTkRP
V1NfTUlOR1cKIAogLy8gQXMgYSBDLWZ1bmN0aW9uLCBUaHJlYWRGdW5jV2l0aENMaW5rYWdlIGNh
bm5vdCBiZSB0ZW1wbGF0ZWQgaXRzZWxmLgogLy8gQ29uc2VxdWVudGx5LCBpdCBjYW5ub3Qgc2Vs
ZWN0IGEgY29ycmVjdCBpbnN0YW50aWF0aW9uIG9mIFRocmVhZFdpdGhQYXJhbQpAQCAtOTUxLDEw
ICsxNzI4LDkgQEAgZXh0ZXJuICJDIiBpbmxpbmUgdm9pZCogVGhyZWFkRnVuY1dpdGhDTGlua2Fn
ZSh2b2lkKiB0aHJlYWQpIHsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogY2xhc3MgVGhyZWFkV2l0
aFBhcmFtIDogcHVibGljIFRocmVhZFdpdGhQYXJhbUJhc2UgewogIHB1YmxpYzoKLSAgdHlwZWRl
ZiB2b2lkICgqVXNlclRocmVhZEZ1bmMpKFQpOworICB0eXBlZGVmIHZvaWQgVXNlclRocmVhZEZ1
bmMoVCk7CiAKLSAgVGhyZWFkV2l0aFBhcmFtKAotICAgICAgVXNlclRocmVhZEZ1bmMgZnVuYywg
VCBwYXJhbSwgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KQorICBUaHJlYWRXaXRoUGFy
YW0oVXNlclRocmVhZEZ1bmMqIGZ1bmMsIFQgcGFyYW0sIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nh
bl9zdGFydCkKICAgICAgIDogZnVuY18oZnVuYyksCiAgICAgICAgIHBhcmFtXyhwYXJhbSksCiAg
ICAgICAgIHRocmVhZF9jYW5fc3RhcnRfKHRocmVhZF9jYW5fc3RhcnQpLApAQCAtOTgxLDcgKzE3
NTcsNyBAQCBjbGFzcyBUaHJlYWRXaXRoUGFyYW0gOiBwdWJsaWMgVGhyZWFkV2l0aFBhcmFtQmFz
ZSB7CiAgIH0KIAogIHByaXZhdGU6Ci0gIGNvbnN0IFVzZXJUaHJlYWRGdW5jIGZ1bmNfOyAgLy8g
VXNlci1zdXBwbGllZCB0aHJlYWQgZnVuY3Rpb24uCisgIFVzZXJUaHJlYWRGdW5jKiBjb25zdCBm
dW5jXzsgIC8vIFVzZXItc3VwcGxpZWQgdGhyZWFkIGZ1bmN0aW9uLgogICBjb25zdCBUIHBhcmFt
XzsgIC8vIFVzZXItc3VwcGxpZWQgcGFyYW1ldGVyIHRvIHRoZSB0aHJlYWQgZnVuY3Rpb24uCiAg
IC8vIFdoZW4gbm9uLU5VTEwsIHVzZWQgdG8gYmxvY2sgZXhlY3V0aW9uIHVudGlsIHRoZSBjb250
cm9sbGVyIHRocmVhZAogICAvLyBub3RpZmllcy4KQEAgLTk5MSw1MSArMTc2NywzMTYgQEAgY2xh
c3MgVGhyZWFkV2l0aFBhcmFtIDogcHVibGljIFRocmVhZFdpdGhQYXJhbUJhc2UgewogCiAgIEdU
RVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkV2l0aFBhcmFtKTsKIH07CisjIGVu
ZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUyAmJiBHVEVTVF9IQVNfUFRIUkVBRCB8fAorICAgICAg
ICAgLy8gR1RFU1RfSEFTX01VVEVYX0FORF9USFJFQURfTE9DQUxfCiAKLS8vIGd0ZXN0LXBvcnQu
aCBndWFyYW50ZWVzIHRvICNpbmNsdWRlIDxwdGhyZWFkLmg+IHdoZW4gR1RFU1RfSEFTX1BUSFJF
QUQgaXMKLS8vIHRydWUuCi0jaW5jbHVkZSA8cHRocmVhZC5oPgorIyBpZiBHVEVTVF9IQVNfTVVU
RVhfQU5EX1RIUkVBRF9MT0NBTF8KKy8vIE11dGV4IGFuZCBUaHJlYWRMb2NhbCBoYXZlIGFscmVh
ZHkgYmVlbiBpbXBvcnRlZCBpbnRvIHRoZSBuYW1lc3BhY2UuCisvLyBOb3RoaW5nIHRvIGRvIGhl
cmUuCiAKLS8vIE11dGV4QmFzZSBhbmQgTXV0ZXggaW1wbGVtZW50IG11dGV4IG9uIHB0aHJlYWRz
LWJhc2VkIHBsYXRmb3Jtcy4gVGhleQotLy8gYXJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBj
bGFzcyBNdXRleExvY2s6CisjIGVsaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lO
RE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lORE9XU19SVAorCisvLyBNdXRleCBpbXBsZW1lbnRz
IG11dGV4IG9uIFdpbmRvd3MgcGxhdGZvcm1zLiAgSXQgaXMgdXNlZCBpbiBjb25qdW5jdGlvbgor
Ly8gd2l0aCBjbGFzcyBNdXRleExvY2s6CiAvLwogLy8gICBNdXRleCBtdXRleDsKIC8vICAgLi4u
Ci0vLyAgIE11dGV4TG9jayBsb2NrKCZtdXRleCk7ICAvLyBBY3F1aXJlcyB0aGUgbXV0ZXggYW5k
IHJlbGVhc2VzIGl0IGF0IHRoZSBlbmQKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IG9mIHRoZSBjdXJyZW50IHNjb3BlLgotLy8KLS8vIE11dGV4QmFzZSBpbXBsZW1lbnRzIGJlaGF2
aW9yIGZvciBib3RoIHN0YXRpY2FsbHkgYW5kIGR5bmFtaWNhbGx5Ci0vLyBhbGxvY2F0ZWQgbXV0
ZXhlcy4gIERvIG5vdCB1c2UgTXV0ZXhCYXNlIGRpcmVjdGx5LiAgSW5zdGVhZCwgd3JpdGUKLS8v
IHRoZSBmb2xsb3dpbmcgdG8gZGVmaW5lIGEgc3RhdGljIG11dGV4OgorLy8gICBNdXRleExvY2sg
bG9jaygmbXV0ZXgpOyAgLy8gQWNxdWlyZXMgdGhlIG11dGV4IGFuZCByZWxlYXNlcyBpdCBhdCB0
aGUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuZCBvZiB0aGUgY3VycmVudCBz
Y29wZS4KIC8vCisvLyBBIHN0YXRpYyBNdXRleCAqbXVzdCogYmUgZGVmaW5lZCBvciBkZWNsYXJl
ZCB1c2luZyBvbmUgb2YgdGhlIGZvbGxvd2luZworLy8gbWFjcm9zOgogLy8gICBHVEVTVF9ERUZJ
TkVfU1RBVElDX01VVEVYXyhnX3NvbWVfbXV0ZXgpOworLy8gICBHVEVTVF9ERUNMQVJFX1NUQVRJ
Q19NVVRFWF8oZ19zb21lX211dGV4KTsKKy8vCisvLyAoQSBub24tc3RhdGljIE11dGV4IGlzIGRl
ZmluZWQvZGVjbGFyZWQgaW4gdGhlIHVzdWFsIHdheSkuCitjbGFzcyBHVEVTVF9BUElfIE11dGV4
IHsKKyBwdWJsaWM6CisgIGVudW0gTXV0ZXhUeXBlIHsga1N0YXRpYyA9IDAsIGtEeW5hbWljID0g
MSB9OworICAvLyBXZSByZWx5IG9uIGtTdGF0aWNNdXRleCBiZWluZyAwIGFzIGl0IGlzIHRvIHdo
YXQgdGhlIGxpbmtlciBpbml0aWFsaXplcworICAvLyB0eXBlXyBpbiBzdGF0aWMgbXV0ZXhlcy4g
IGNyaXRpY2FsX3NlY3Rpb25fIHdpbGwgYmUgaW5pdGlhbGl6ZWQgbGF6aWx5CisgIC8vIGluIFRo
cmVhZFNhZmVMYXp5SW5pdCgpLgorICBlbnVtIFN0YXRpY0NvbnN0cnVjdG9yU2VsZWN0b3IgeyBr
U3RhdGljTXV0ZXggPSAwIH07CisKKyAgLy8gVGhpcyBjb25zdHJ1Y3RvciBpbnRlbnRpb25hbGx5
IGRvZXMgbm90aGluZy4gIEl0IHJlbGllcyBvbiB0eXBlXyBiZWluZworICAvLyBzdGF0aWNhbGx5
IGluaXRpYWxpemVkIHRvIDAgKGVmZmVjdGl2ZWx5IHNldHRpbmcgaXQgdG8ga1N0YXRpYykgYW5k
IG9uCisgIC8vIFRocmVhZFNhZmVMYXp5SW5pdCgpIHRvIGxhemlseSBpbml0aWFsaXplIHRoZSBy
ZXN0IG9mIHRoZSBtZW1iZXJzLgorICBleHBsaWNpdCBNdXRleChTdGF0aWNDb25zdHJ1Y3RvclNl
bGVjdG9yIC8qZHVtbXkqLykge30KKworICBNdXRleCgpOworICB+TXV0ZXgoKTsKKworICB2b2lk
IExvY2soKTsKKworICB2b2lkIFVubG9jaygpOworCisgIC8vIERvZXMgbm90aGluZyBpZiB0aGUg
Y3VycmVudCB0aHJlYWQgaG9sZHMgdGhlIG11dGV4LiBPdGhlcndpc2UsIGNyYXNoZXMKKyAgLy8g
d2l0aCBoaWdoIHByb2JhYmlsaXR5LgorICB2b2lkIEFzc2VydEhlbGQoKTsKKworIHByaXZhdGU6
CisgIC8vIEluaXRpYWxpemVzIG93bmVyX3RocmVhZF9pZF8gYW5kIGNyaXRpY2FsX3NlY3Rpb25f
IGluIHN0YXRpYyBtdXRleGVzLgorICB2b2lkIFRocmVhZFNhZmVMYXp5SW5pdCgpOworCisgIC8v
IFBlciBodHRwczovL2Jsb2dzLm1zZG4ubWljcm9zb2Z0LmNvbS9vbGRuZXd0aGluZy8yMDA0MDIy
My0wMC8/cD00MDUwMywKKyAgLy8gd2UgYXNzdW1lIHRoYXQgMCBpcyBhbiBpbnZhbGlkIHZhbHVl
IGZvciB0aHJlYWQgSURzLgorICB1bnNpZ25lZCBpbnQgb3duZXJfdGhyZWFkX2lkXzsKKworICAv
LyBGb3Igc3RhdGljIG11dGV4ZXMsIHdlIHJlbHkgb24gdGhlc2UgbWVtYmVycyBiZWluZyBpbml0
aWFsaXplZCB0byB6ZXJvcworICAvLyBieSB0aGUgbGlua2VyLgorICBNdXRleFR5cGUgdHlwZV87
CisgIGxvbmcgY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXzsgIC8vIE5PTElOVAorICBHVEVT
VF9DUklUSUNBTF9TRUNUSU9OKiBjcml0aWNhbF9zZWN0aW9uXzsKKworICBHVEVTVF9ESVNBTExP
V19DT1BZX0FORF9BU1NJR05fKE11dGV4KTsKK307CisKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVf
U1RBVElDX01VVEVYXyhtdXRleCkgXAorICAgIGV4dGVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpN
dXRleCBtdXRleAorCisjIGRlZmluZSBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhtdXRleCkg
XAorICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4IG11dGV4KDo6dGVzdGluZzo6aW50ZXJu
YWw6Ok11dGV4OjprU3RhdGljTXV0ZXgpCisKKy8vIFdlIGNhbm5vdCBuYW1lIHRoaXMgY2xhc3Mg
TXV0ZXhMb2NrIGJlY2F1c2UgdGhlIGN0b3IgZGVjbGFyYXRpb24gd291bGQKKy8vIGNvbmZsaWN0
IHdpdGggYSBtYWNybyBuYW1lZCBNdXRleExvY2ssIHdoaWNoIGlzIGRlZmluZWQgb24gc29tZQor
Ly8gcGxhdGZvcm1zLiBUaGF0IG1hY3JvIGlzIHVzZWQgYXMgYSBkZWZlbnNpdmUgbWVhc3VyZSB0
byBwcmV2ZW50IGFnYWluc3QKKy8vIGluYWR2ZXJ0ZW50IG1pc3VzZXMgb2YgTXV0ZXhMb2NrIGxp
a2UgIk11dGV4TG9jaygmbXUpIiByYXRoZXIgdGhhbgorLy8gIk11dGV4TG9jayBsKCZtdSkiLiAg
SGVuY2UgdGhlIHR5cGVkZWYgdHJpY2sgYmVsb3cuCitjbGFzcyBHVGVzdE11dGV4TG9jayB7Cisg
cHVibGljOgorICBleHBsaWNpdCBHVGVzdE11dGV4TG9jayhNdXRleCogbXV0ZXgpCisgICAgICA6
IG11dGV4XyhtdXRleCkgeyBtdXRleF8tPkxvY2soKTsgfQorCisgIH5HVGVzdE11dGV4TG9jaygp
IHsgbXV0ZXhfLT5VbmxvY2soKTsgfQorCisgcHJpdmF0ZToKKyAgTXV0ZXgqIGNvbnN0IG11dGV4
XzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEdUZXN0TXV0ZXhMb2NrKTsK
K307CisKK3R5cGVkZWYgR1Rlc3RNdXRleExvY2sgTXV0ZXhMb2NrOworCisvLyBCYXNlIGNsYXNz
IGZvciBWYWx1ZUhvbGRlcjxUPi4gIEFsbG93cyBhIGNhbGxlciB0byBob2xkIGFuZCBkZWxldGUg
YSB2YWx1ZQorLy8gd2l0aG91dCBrbm93aW5nIGl0cyB0eXBlLgorY2xhc3MgVGhyZWFkTG9jYWxW
YWx1ZUhvbGRlckJhc2UgeworIHB1YmxpYzoKKyAgdmlydHVhbCB+VGhyZWFkTG9jYWxWYWx1ZUhv
bGRlckJhc2UoKSB7fQorfTsKKworLy8gUHJvdmlkZXMgYSB3YXkgZm9yIGEgdGhyZWFkIHRvIHNl
bmQgbm90aWZpY2F0aW9ucyB0byBhIFRocmVhZExvY2FsCisvLyByZWdhcmRsZXNzIG9mIGl0cyBw
YXJhbWV0ZXIgdHlwZS4KK2NsYXNzIFRocmVhZExvY2FsQmFzZSB7CisgcHVibGljOgorICAvLyBD
cmVhdGVzIGEgbmV3IFZhbHVlSG9sZGVyPFQ+IG9iamVjdCBob2xkaW5nIGEgZGVmYXVsdCB2YWx1
ZSBwYXNzZWQgdG8KKyAgLy8gdGhpcyBUaHJlYWRMb2NhbDxUPidzIGNvbnN0cnVjdG9yIGFuZCBy
ZXR1cm5zIGl0LiAgSXQgaXMgdGhlIGNhbGxlcidzCisgIC8vIHJlc3BvbnNpYmlsaXR5IG5vdCB0
byBjYWxsIHRoaXMgd2hlbiB0aGUgVGhyZWFkTG9jYWw8VD4gaW5zdGFuY2UgYWxyZWFkeQorICAv
LyBoYXMgYSB2YWx1ZSBvbiB0aGUgY3VycmVudCB0aHJlYWQuCisgIHZpcnR1YWwgVGhyZWFkTG9j
YWxWYWx1ZUhvbGRlckJhc2UqIE5ld1ZhbHVlRm9yQ3VycmVudFRocmVhZCgpIGNvbnN0ID0gMDsK
KworIHByb3RlY3RlZDoKKyAgVGhyZWFkTG9jYWxCYXNlKCkge30KKyAgdmlydHVhbCB+VGhyZWFk
TG9jYWxCYXNlKCkge30KKworIHByaXZhdGU6CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oVGhyZWFkTG9jYWxCYXNlKTsKK307CisKKy8vIE1hcHMgYSB0aHJlYWQgdG8gYSBzZXQg
b2YgVGhyZWFkTG9jYWxzIHRoYXQgaGF2ZSB2YWx1ZXMgaW5zdGFudGlhdGVkIG9uIHRoYXQKKy8v
IHRocmVhZCBhbmQgbm90aWZpZXMgdGhlbSB3aGVuIHRoZSB0aHJlYWQgZXhpdHMuICBBIFRocmVh
ZExvY2FsIGluc3RhbmNlIGlzCisvLyBleHBlY3RlZCB0byBwZXJzaXN0IHVudGlsIGFsbCB0aHJl
YWRzIGl0IGhhcyB2YWx1ZXMgb24gaGF2ZSB0ZXJtaW5hdGVkLgorY2xhc3MgR1RFU1RfQVBJXyBU
aHJlYWRMb2NhbFJlZ2lzdHJ5IHsKKyBwdWJsaWM6CisgIC8vIFJlZ2lzdGVycyB0aHJlYWRfbG9j
YWxfaW5zdGFuY2UgYXMgaGF2aW5nIHZhbHVlIG9uIHRoZSBjdXJyZW50IHRocmVhZC4KKyAgLy8g
UmV0dXJucyBhIHZhbHVlIHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHRocmVhZCBm
cm9tIG90aGVyIHRocmVhZHMuCisgIHN0YXRpYyBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSog
R2V0VmFsdWVPbkN1cnJlbnRUaHJlYWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRo
cmVhZF9sb2NhbF9pbnN0YW5jZSk7CisKKyAgLy8gSW52b2tlZCB3aGVuIGEgVGhyZWFkTG9jYWwg
aW5zdGFuY2UgaXMgZGVzdHJveWVkLgorICBzdGF0aWMgdm9pZCBPblRocmVhZExvY2FsRGVzdHJv
eWVkKAorICAgICAgY29uc3QgVGhyZWFkTG9jYWxCYXNlKiB0aHJlYWRfbG9jYWxfaW5zdGFuY2Up
OworfTsKKworY2xhc3MgR1RFU1RfQVBJXyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKKyBwdWJsaWM6
CisgIHZvaWQgSm9pbigpOworCisgcHJvdGVjdGVkOgorICBjbGFzcyBSdW5uYWJsZSB7CisgICBw
dWJsaWM6CisgICAgdmlydHVhbCB+UnVubmFibGUoKSB7fQorICAgIHZpcnR1YWwgdm9pZCBSdW4o
KSA9IDA7CisgIH07CisKKyAgVGhyZWFkV2l0aFBhcmFtQmFzZShSdW5uYWJsZSAqcnVubmFibGUs
IE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydCk7CisgIHZpcnR1YWwgflRocmVhZFdpdGhQ
YXJhbUJhc2UoKTsKKworIHByaXZhdGU6CisgIEF1dG9IYW5kbGUgdGhyZWFkXzsKK307CisKKy8v
IEhlbHBlciBjbGFzcyBmb3IgdGVzdGluZyBHb29nbGUgVGVzdCdzIG11bHRpLXRocmVhZGluZyBj
b25zdHJ1Y3RzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUaHJlYWRXaXRoUGFyYW0g
OiBwdWJsaWMgVGhyZWFkV2l0aFBhcmFtQmFzZSB7CisgcHVibGljOgorICB0eXBlZGVmIHZvaWQg
VXNlclRocmVhZEZ1bmMoVCk7CisKKyAgVGhyZWFkV2l0aFBhcmFtKFVzZXJUaHJlYWRGdW5jKiBm
dW5jLCBUIHBhcmFtLCBOb3RpZmljYXRpb24qIHRocmVhZF9jYW5fc3RhcnQpCisgICAgICA6IFRo
cmVhZFdpdGhQYXJhbUJhc2UobmV3IFJ1bm5hYmxlSW1wbChmdW5jLCBwYXJhbSksIHRocmVhZF9j
YW5fc3RhcnQpIHsKKyAgfQorICB2aXJ0dWFsIH5UaHJlYWRXaXRoUGFyYW0oKSB7fQorCisgcHJp
dmF0ZToKKyAgY2xhc3MgUnVubmFibGVJbXBsIDogcHVibGljIFJ1bm5hYmxlIHsKKyAgIHB1Ymxp
YzoKKyAgICBSdW5uYWJsZUltcGwoVXNlclRocmVhZEZ1bmMqIGZ1bmMsIFQgcGFyYW0pCisgICAg
ICAgIDogZnVuY18oZnVuYyksCisgICAgICAgICAgcGFyYW1fKHBhcmFtKSB7CisgICAgfQorICAg
IHZpcnR1YWwgflJ1bm5hYmxlSW1wbCgpIHt9CisgICAgdmlydHVhbCB2b2lkIFJ1bigpIHsKKyAg
ICAgIGZ1bmNfKHBhcmFtXyk7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIFVzZXJUaHJlYWRG
dW5jKiBjb25zdCBmdW5jXzsKKyAgICBjb25zdCBUIHBhcmFtXzsKKworICAgIEdURVNUX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTl8oUnVubmFibGVJbXBsKTsKKyAgfTsKKworICBHVEVTVF9ESVNB
TExPV19DT1BZX0FORF9BU1NJR05fKFRocmVhZFdpdGhQYXJhbSk7Cit9OworCisvLyBJbXBsZW1l
bnRzIHRocmVhZC1sb2NhbCBzdG9yYWdlIG9uIFdpbmRvd3Mgc3lzdGVtcy4KIC8vCi0vLyBZb3Ug
Y2FuIGZvcndhcmQgZGVjbGFyZSBhIHN0YXRpYyBtdXRleCBsaWtlIHRoaXM6CisvLyAgIC8vIFRo
cmVhZCAxCisvLyAgIFRocmVhZExvY2FsPGludD4gdGwoMTAwKTsgIC8vIDEwMCBpcyB0aGUgZGVm
YXVsdCB2YWx1ZSBmb3IgZWFjaCB0aHJlYWQuCiAvLwotLy8gICBHVEVTVF9ERUNMQVJFX1NUQVRJ
Q19NVVRFWF8oZ19zb21lX211dGV4KTsKKy8vICAgLy8gVGhyZWFkIDIKKy8vICAgdGwuc2V0KDE1
MCk7ICAvLyBDaGFuZ2VzIHRoZSB2YWx1ZSBmb3IgdGhyZWFkIDIgb25seS4KKy8vICAgRVhQRUNU
X0VRKDE1MCwgdGwuZ2V0KCkpOwogLy8KLS8vIFRvIGNyZWF0ZSBhIGR5bmFtaWMgbXV0ZXgsIGp1
c3QgZGVmaW5lIGFuIG9iamVjdCBvZiB0eXBlIE11dGV4LgorLy8gICAvLyBUaHJlYWQgMQorLy8g
ICBFWFBFQ1RfRVEoMTAwLCB0bC5nZXQoKSk7ICAvLyBJbiB0aHJlYWQgMSwgdGwgaGFzIHRoZSBv
cmlnaW5hbCB2YWx1ZS4KKy8vICAgdGwuc2V0KDIwMCk7CisvLyAgIEVYUEVDVF9FUSgyMDAsIHRs
LmdldCgpKTsKKy8vCisvLyBUaGUgdGVtcGxhdGUgdHlwZSBhcmd1bWVudCBUIG11c3QgaGF2ZSBh
IHB1YmxpYyBjb3B5IGNvbnN0cnVjdG9yLgorLy8gSW4gYWRkaXRpb24sIHRoZSBkZWZhdWx0IFRo
cmVhZExvY2FsIGNvbnN0cnVjdG9yIHJlcXVpcmVzIFQgdG8gaGF2ZQorLy8gYSBwdWJsaWMgZGVm
YXVsdCBjb25zdHJ1Y3Rvci4KKy8vCisvLyBUaGUgdXNlcnMgb2YgYSBUaGVhZExvY2FsIGluc3Rh
bmNlIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIGJ1dCBvbmUKKy8vIHRocmVhZHMgKGluY2x1
ZGluZyB0aGUgbWFpbiBvbmUpIHVzaW5nIHRoYXQgaW5zdGFuY2UgaGF2ZSBleGl0ZWQgYmVmb3Jl
CisvLyBkZXN0cm95aW5nIGl0LiBPdGhlcndpc2UsIHRoZSBwZXItdGhyZWFkIG9iamVjdHMgbWFu
YWdlZCBmb3IgdGhlbSBieSB0aGUKKy8vIFRocmVhZExvY2FsIGluc3RhbmNlIGFyZSBub3QgZ3Vh
cmFudGVlZCB0byBiZSBkZXN0cm95ZWQgb24gYWxsIHBsYXRmb3Jtcy4KKy8vCisvLyBHb29nbGUg
VGVzdCBvbmx5IHVzZXMgZ2xvYmFsIFRocmVhZExvY2FsIG9iamVjdHMuICBUaGF0IG1lYW5zIHRo
ZXkKKy8vIHdpbGwgZGllIGFmdGVyIG1haW4oKSBoYXMgcmV0dXJuZWQuICBUaGVyZWZvcmUsIG5v
IHBlci10aHJlYWQKKy8vIG9iamVjdCBtYW5hZ2VkIGJ5IEdvb2dsZSBUZXN0IHdpbGwgYmUgbGVh
a2VkIGFzIGxvbmcgYXMgYWxsIHRocmVhZHMKKy8vIHVzaW5nIEdvb2dsZSBUZXN0IGhhdmUgZXhp
dGVkIHdoZW4gbWFpbigpIHJldHVybnMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFRo
cmVhZExvY2FsIDogcHVibGljIFRocmVhZExvY2FsQmFzZSB7CisgcHVibGljOgorICBUaHJlYWRM
b2NhbCgpIDogZGVmYXVsdF9mYWN0b3J5XyhuZXcgRGVmYXVsdFZhbHVlSG9sZGVyRmFjdG9yeSgp
KSB7fQorICBleHBsaWNpdCBUaHJlYWRMb2NhbChjb25zdCBUJiB2YWx1ZSkKKyAgICAgIDogZGVm
YXVsdF9mYWN0b3J5XyhuZXcgSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkodmFsdWUpKSB7fQor
CisgIH5UaHJlYWRMb2NhbCgpIHsgVGhyZWFkTG9jYWxSZWdpc3RyeTo6T25UaHJlYWRMb2NhbERl
c3Ryb3llZCh0aGlzKTsgfQorCisgIFQqIHBvaW50ZXIoKSB7IHJldHVybiBHZXRPckNyZWF0ZVZh
bHVlKCk7IH0KKyAgY29uc3QgVCogcG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIEdldE9yQ3JlYXRl
VmFsdWUoKTsgfQorICBjb25zdCBUJiBnZXQoKSBjb25zdCB7IHJldHVybiAqcG9pbnRlcigpOyB9
CisgIHZvaWQgc2V0KGNvbnN0IFQmIHZhbHVlKSB7ICpwb2ludGVyKCkgPSB2YWx1ZTsgfQorCisg
cHJpdmF0ZToKKyAgLy8gSG9sZHMgYSB2YWx1ZSBvZiBULiAgQ2FuIGJlIGRlbGV0ZWQgdmlhIGl0
cyBiYXNlIGNsYXNzIHdpdGhvdXQgdGhlIGNhbGxlcgorICAvLyBrbm93aW5nIHRoZSB0eXBlIG9m
IFQuCisgIGNsYXNzIFZhbHVlSG9sZGVyIDogcHVibGljIFRocmVhZExvY2FsVmFsdWVIb2xkZXJC
YXNlIHsKKyAgIHB1YmxpYzoKKyAgICBWYWx1ZUhvbGRlcigpIDogdmFsdWVfKCkge30KKyAgICBl
eHBsaWNpdCBWYWx1ZUhvbGRlcihjb25zdCBUJiB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9CisK
KyAgICBUKiBwb2ludGVyKCkgeyByZXR1cm4gJnZhbHVlXzsgfQorCisgICBwcml2YXRlOgorICAg
IFQgdmFsdWVfOworICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVmFsdWVIb2xk
ZXIpOworICB9OworCisKKyAgVCogR2V0T3JDcmVhdGVWYWx1ZSgpIGNvbnN0IHsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8VmFsdWVIb2xkZXIqPigKKyAgICAgICAgVGhyZWFkTG9jYWxSZWdpc3Ry
eTo6R2V0VmFsdWVPbkN1cnJlbnRUaHJlYWQodGhpcykpLT5wb2ludGVyKCk7CisgIH0KKworICB2
aXJ0dWFsIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlKiBOZXdWYWx1ZUZvckN1cnJlbnRUaHJl
YWQoKSBjb25zdCB7CisgICAgcmV0dXJuIGRlZmF1bHRfZmFjdG9yeV8tPk1ha2VOZXdIb2xkZXIo
KTsKKyAgfQorCisgIGNsYXNzIFZhbHVlSG9sZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAg
VmFsdWVIb2xkZXJGYWN0b3J5KCkge30KKyAgICB2aXJ0dWFsIH5WYWx1ZUhvbGRlckZhY3Rvcnko
KSB7fQorICAgIHZpcnR1YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCA9IDA7
CisKKyAgIHByaXZhdGU6CisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhWYWx1
ZUhvbGRlckZhY3RvcnkpOworICB9OworCisgIGNsYXNzIERlZmF1bHRWYWx1ZUhvbGRlckZhY3Rv
cnkgOiBwdWJsaWMgVmFsdWVIb2xkZXJGYWN0b3J5IHsKKyAgIHB1YmxpYzoKKyAgICBEZWZhdWx0
VmFsdWVIb2xkZXJGYWN0b3J5KCkge30KKyAgICB2aXJ0dWFsIFZhbHVlSG9sZGVyKiBNYWtlTmV3
SG9sZGVyKCkgY29uc3QgeyByZXR1cm4gbmV3IFZhbHVlSG9sZGVyKCk7IH0KKworICAgcHJpdmF0
ZToKKyAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKERlZmF1bHRWYWx1ZUhvbGRl
ckZhY3RvcnkpOworICB9OworCisgIGNsYXNzIEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5IDog
cHVibGljIFZhbHVlSG9sZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAgZXhwbGljaXQgSW5z
dGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkoY29uc3QgVCYgdmFsdWUpIDogdmFsdWVfKHZhbHVlKSB7
fQorICAgIHZpcnR1YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCB7CisgICAg
ICByZXR1cm4gbmV3IFZhbHVlSG9sZGVyKHZhbHVlXyk7CisgICAgfQorCisgICBwcml2YXRlOgor
ICAgIGNvbnN0IFQgdmFsdWVfOyAgLy8gVGhlIHZhbHVlIGZvciBlYWNoIHRocmVhZC4KKworICAg
IEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3Rv
cnkpOworICB9OworCisgIHNjb3BlZF9wdHI8VmFsdWVIb2xkZXJGYWN0b3J5PiBkZWZhdWx0X2Zh
Y3RvcnlfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkTG9jYWwp
OworfTsKKworIyBlbGlmIEdURVNUX0hBU19QVEhSRUFECisKKy8vIE11dGV4QmFzZSBhbmQgTXV0
ZXggaW1wbGVtZW50IG11dGV4IG9uIHB0aHJlYWRzLWJhc2VkIHBsYXRmb3Jtcy4KIGNsYXNzIE11
dGV4QmFzZSB7CiAgcHVibGljOgogICAvLyBBY3F1aXJlcyB0aGlzIG11dGV4LgogICB2b2lkIExv
Y2soKSB7CiAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9sb2Nr
KCZtdXRleF8pKTsKICAgICBvd25lcl8gPSBwdGhyZWFkX3NlbGYoKTsKKyAgICBoYXNfb3duZXJf
ID0gdHJ1ZTsKICAgfQogCiAgIC8vIFJlbGVhc2VzIHRoaXMgbXV0ZXguCiAgIHZvaWQgVW5sb2Nr
KCkgewotICAgIC8vIFdlIGRvbid0IHByb3RlY3Qgd3JpdGluZyB0byBvd25lcl8gaGVyZSwgYXMg
aXQncyB0aGUgY2FsbGVyJ3MKLSAgICAvLyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCB0
aGUgY3VycmVudCB0aHJlYWQgaG9sZHMgdGhlCisgICAgLy8gU2luY2UgdGhlIGxvY2sgaXMgYmVp
bmcgcmVsZWFzZWQgdGhlIG93bmVyXyBmaWVsZCBzaG91bGQgbm8gbG9uZ2VyIGJlCisgICAgLy8g
Y29uc2lkZXJlZCB2YWxpZC4gV2UgZG9uJ3QgcHJvdGVjdCB3cml0aW5nIHRvIGhhc19vd25lcl8g
aGVyZSwgYXMgaXQncworICAgIC8vIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBlbnN1
cmUgdGhhdCB0aGUgY3VycmVudCB0aHJlYWQgaG9sZHMgdGhlCiAgICAgLy8gbXV0ZXggd2hlbiB0
aGlzIGlzIGNhbGxlZC4KLSAgICBvd25lcl8gPSAwOworICAgIGhhc19vd25lcl8gPSBmYWxzZTsK
ICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4X3VubG9jaygmbXV0
ZXhfKSk7CiAgIH0KIAogICAvLyBEb2VzIG5vdGhpbmcgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGhv
bGRzIHRoZSBtdXRleC4gT3RoZXJ3aXNlLCBjcmFzaGVzCiAgIC8vIHdpdGggaGlnaCBwcm9iYWJp
bGl0eS4KICAgdm9pZCBBc3NlcnRIZWxkKCkgY29uc3QgewotICAgIEdURVNUX0NIRUNLXyhvd25l
cl8gPT0gcHRocmVhZF9zZWxmKCkpCisgICAgR1RFU1RfQ0hFQ0tfKGhhc19vd25lcl8gJiYgcHRo
cmVhZF9lcXVhbChvd25lcl8sIHB0aHJlYWRfc2VsZigpKSkKICAgICAgICAgPDwgIlRoZSBjdXJy
ZW50IHRocmVhZCBpcyBub3QgaG9sZGluZyB0aGUgbXV0ZXggQCIgPDwgdGhpczsKICAgfQogCkBA
IC0xMDQ2LDE2ICsyMDg3LDI4IEBAIGNsYXNzIE11dGV4QmFzZSB7CiAgIC8vIGhhdmUgdG8gYmUg
cHVibGljLgogIHB1YmxpYzoKICAgcHRocmVhZF9tdXRleF90IG11dGV4XzsgIC8vIFRoZSB1bmRl
cmx5aW5nIHB0aHJlYWQgbXV0ZXguCi0gIHB0aHJlYWRfdCBvd25lcl87ICAvLyBUaGUgdGhyZWFk
IGhvbGRpbmcgdGhlIG11dGV4OyAwIG1lYW5zIG5vIG9uZSBob2xkcyBpdC4KKyAgLy8gaGFzX293
bmVyXyBpbmRpY2F0ZXMgd2hldGhlciB0aGUgb3duZXJfIGZpZWxkIGJlbG93IGNvbnRhaW5zIGEg
dmFsaWQgdGhyZWFkCisgIC8vIElEIGFuZCBpcyB0aGVyZWZvcmUgc2FmZSB0byBpbnNwZWN0IChl
LmcuLCB0byB1c2UgaW4gcHRocmVhZF9lcXVhbCgpKS4gQWxsCisgIC8vIGFjY2Vzc2VzIHRvIHRo
ZSBvd25lcl8gZmllbGQgc2hvdWxkIGJlIHByb3RlY3RlZCBieSBhIGNoZWNrIG9mIHRoaXMgZmll
bGQuCisgIC8vIEFuIGFsdGVybmF0aXZlIG1pZ2h0IGJlIHRvIG1lbXNldCgpIG93bmVyXyB0byBh
bGwgemVyb3MsIGJ1dCB0aGVyZSdzIG5vCisgIC8vIGd1YXJhbnRlZSB0aGF0IGEgemVybydkIHB0
aHJlYWRfdCBpcyBuZWNlc3NhcmlseSBpbnZhbGlkIG9yIGV2ZW4gZGlmZmVyZW50CisgIC8vIGZy
b20gcHRocmVhZF9zZWxmKCkuCisgIGJvb2wgaGFzX293bmVyXzsKKyAgcHRocmVhZF90IG93bmVy
XzsgIC8vIFRoZSB0aHJlYWQgaG9sZGluZyB0aGUgbXV0ZXguCiB9OwogCiAvLyBGb3J3YXJkLWRl
Y2xhcmVzIGEgc3RhdGljIG11dGV4LgotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRF
WF8obXV0ZXgpIFwKLSAgICBleHRlcm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXhCYXNlIG11
dGV4CisjICBkZWZpbmUgR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVURVhfKG11dGV4KSBcCisgICAg
IGV4dGVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpNdXRleEJhc2UgbXV0ZXgKIAogLy8gRGVmaW5l
cyBhbmQgc3RhdGljYWxseSAoaS5lLiBhdCBsaW5rIHRpbWUpIGluaXRpYWxpemVzIGEgc3RhdGlj
IG11dGV4LgorLy8gVGhlIGluaXRpYWxpemF0aW9uIGxpc3QgaGVyZSBkb2VzIG5vdCBleHBsaWNp
dGx5IGluaXRpYWxpemUgZWFjaCBmaWVsZCwKKy8vIGluc3RlYWQgcmVseWluZyBvbiBkZWZhdWx0
IGluaXRpYWxpemF0aW9uIGZvciB0aGUgdW5zcGVjaWZpZWQgZmllbGRzLiBJbgorLy8gcGFydGlj
dWxhciwgdGhlIG93bmVyXyBmaWVsZCAoYSBwdGhyZWFkX3QpIGlzIG5vdCBleHBsaWNpdGx5IGlu
aXRpYWxpemVkLgorLy8gVGhpcyBhbGxvd3MgaW5pdGlhbGl6YXRpb24gdG8gd29yayB3aGV0aGVy
IHB0aHJlYWRfdCBpcyBhIHNjYWxhciBvciBzdHJ1Y3QuCisvLyBUaGUgZmxhZyAtV21pc3Npbmct
ZmllbGQtaW5pdGlhbGl6ZXJzIG11c3Qgbm90IGJlIHNwZWNpZmllZCBmb3IgdGhpcyB0byB3b3Jr
LgogI2RlZmluZSBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhtdXRleCkgXAotICAgIDo6dGVz
dGluZzo6aW50ZXJuYWw6Ok11dGV4QmFzZSBtdXRleCA9IHsgUFRIUkVBRF9NVVRFWF9JTklUSUFM
SVpFUiwgMCB9CisgIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4QmFzZSBtdXRleCA9IHtQVEhS
RUFEX01VVEVYX0lOSVRJQUxJWkVSLCBmYWxzZSwgMH0KIAogLy8gVGhlIE11dGV4IGNsYXNzIGNh
biBvbmx5IGJlIHVzZWQgZm9yIG11dGV4ZXMgY3JlYXRlZCBhdCBydW50aW1lLiBJdAogLy8gc2hh
cmVzIGl0cyBBUEkgd2l0aCBNdXRleEJhc2Ugb3RoZXJ3aXNlLgpAQCAtMTA2Myw3ICsyMTE2LDcg
QEAgY2xhc3MgTXV0ZXggOiBwdWJsaWMgTXV0ZXhCYXNlIHsKICBwdWJsaWM6CiAgIE11dGV4KCkg
ewogICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhfaW5pdCgmbXV0
ZXhfLCBOVUxMKSk7Ci0gICAgb3duZXJfID0gMDsKKyAgICBoYXNfb3duZXJfID0gZmFsc2U7CiAg
IH0KICAgfk11dGV4KCkgewogICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRf
bXV0ZXhfZGVzdHJveSgmbXV0ZXhfKSk7CkBAIC0xMDczLDkgKzIxMjYsMTEgQEAgY2xhc3MgTXV0
ZXggOiBwdWJsaWMgTXV0ZXhCYXNlIHsKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdO
XyhNdXRleCk7CiB9OwogCi0vLyBXZSBjYW5ub3QgbmFtZSB0aGlzIGNsYXNzIE11dGV4TG9jayBh
cyB0aGUgY3RvciBkZWNsYXJhdGlvbiB3b3VsZAorLy8gV2UgY2Fubm90IG5hbWUgdGhpcyBjbGFz
cyBNdXRleExvY2sgYmVjYXVzZSB0aGUgY3RvciBkZWNsYXJhdGlvbiB3b3VsZAogLy8gY29uZmxp
Y3Qgd2l0aCBhIG1hY3JvIG5hbWVkIE11dGV4TG9jaywgd2hpY2ggaXMgZGVmaW5lZCBvbiBzb21l
Ci0vLyBwbGF0Zm9ybXMuICBIZW5jZSB0aGUgdHlwZWRlZiB0cmljayBiZWxvdy4KKy8vIHBsYXRm
b3Jtcy4gVGhhdCBtYWNybyBpcyB1c2VkIGFzIGEgZGVmZW5zaXZlIG1lYXN1cmUgdG8gcHJldmVu
dCBhZ2FpbnN0CisvLyBpbmFkdmVydGVudCBtaXN1c2VzIG9mIE11dGV4TG9jayBsaWtlICJNdXRl
eExvY2soJm11KSIgcmF0aGVyIHRoYW4KKy8vICJNdXRleExvY2sgbCgmbXUpIi4gIEhlbmNlIHRo
ZSB0eXBlZGVmIHRyaWNrIGJlbG93LgogY2xhc3MgR1Rlc3RNdXRleExvY2sgewogIHB1YmxpYzoK
ICAgZXhwbGljaXQgR1Rlc3RNdXRleExvY2soTXV0ZXhCYXNlKiBtdXRleCkKQEAgLTExMDksNDEg
KzIxNjQsMTQgQEAgZXh0ZXJuICJDIiBpbmxpbmUgdm9pZCBEZWxldGVUaHJlYWRMb2NhbFZhbHVl
KHZvaWQqIHZhbHVlX2hvbGRlcikgewogfQogCiAvLyBJbXBsZW1lbnRzIHRocmVhZC1sb2NhbCBz
dG9yYWdlIG9uIHB0aHJlYWRzLWJhc2VkIHN5c3RlbXMuCi0vLwotLy8gICAvLyBUaHJlYWQgMQot
Ly8gICBUaHJlYWRMb2NhbDxpbnQ+IHRsKDEwMCk7ICAvLyAxMDAgaXMgdGhlIGRlZmF1bHQgdmFs
dWUgZm9yIGVhY2ggdGhyZWFkLgotLy8KLS8vICAgLy8gVGhyZWFkIDIKLS8vICAgdGwuc2V0KDE1
MCk7ICAvLyBDaGFuZ2VzIHRoZSB2YWx1ZSBmb3IgdGhyZWFkIDIgb25seS4KLS8vICAgRVhQRUNU
X0VRKDE1MCwgdGwuZ2V0KCkpOwotLy8KLS8vICAgLy8gVGhyZWFkIDEKLS8vICAgRVhQRUNUX0VR
KDEwMCwgdGwuZ2V0KCkpOyAgLy8gSW4gdGhyZWFkIDEsIHRsIGhhcyB0aGUgb3JpZ2luYWwgdmFs
dWUuCi0vLyAgIHRsLnNldCgyMDApOwotLy8gICBFWFBFQ1RfRVEoMjAwLCB0bC5nZXQoKSk7Ci0v
LwotLy8gVGhlIHRlbXBsYXRlIHR5cGUgYXJndW1lbnQgVCBtdXN0IGhhdmUgYSBwdWJsaWMgY29w
eSBjb25zdHJ1Y3Rvci4KLS8vIEluIGFkZGl0aW9uLCB0aGUgZGVmYXVsdCBUaHJlYWRMb2NhbCBj
b25zdHJ1Y3RvciByZXF1aXJlcyBUIHRvIGhhdmUKLS8vIGEgcHVibGljIGRlZmF1bHQgY29uc3Ry
dWN0b3IuCi0vLwotLy8gQW4gb2JqZWN0IG1hbmFnZWQgZm9yIGEgdGhyZWFkIGJ5IGEgVGhyZWFk
TG9jYWwgaW5zdGFuY2UgaXMgZGVsZXRlZAotLy8gd2hlbiB0aGUgdGhyZWFkIGV4aXRzLiAgT3Is
IGlmIHRoZSBUaHJlYWRMb2NhbCBpbnN0YW5jZSBkaWVzIGluCi0vLyB0aGF0IHRocmVhZCwgd2hl
biB0aGUgVGhyZWFkTG9jYWwgZGllcy4gIEl0J3MgdGhlIHVzZXIncwotLy8gcmVzcG9uc2liaWxp
dHkgdG8gZW5zdXJlIHRoYXQgYWxsIG90aGVyIHRocmVhZHMgdXNpbmcgYSBUaHJlYWRMb2NhbAot
Ly8gaGF2ZSBleGl0ZWQgd2hlbiBpdCBkaWVzLCBvciB0aGUgcGVyLXRocmVhZCBvYmplY3RzIGZv
ciB0aG9zZQotLy8gdGhyZWFkcyB3aWxsIG5vdCBiZSBkZWxldGVkLgotLy8KLS8vIEdvb2dsZSBU
ZXN0IG9ubHkgdXNlcyBnbG9iYWwgVGhyZWFkTG9jYWwgb2JqZWN0cy4gIFRoYXQgbWVhbnMgdGhl
eQotLy8gd2lsbCBkaWUgYWZ0ZXIgbWFpbigpIGhhcyByZXR1cm5lZC4gIFRoZXJlZm9yZSwgbm8g
cGVyLXRocmVhZAotLy8gb2JqZWN0IG1hbmFnZWQgYnkgR29vZ2xlIFRlc3Qgd2lsbCBiZSBsZWFr
ZWQgYXMgbG9uZyBhcyBhbGwgdGhyZWFkcwotLy8gdXNpbmcgR29vZ2xlIFRlc3QgaGF2ZSBleGl0
ZWQgd2hlbiBtYWluKCkgcmV0dXJucy4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgVGhy
ZWFkTG9jYWwgeworY2xhc3MgR1RFU1RfQVBJXyBUaHJlYWRMb2NhbCB7CiAgcHVibGljOgotICBU
aHJlYWRMb2NhbCgpIDoga2V5XyhDcmVhdGVLZXkoKSksCi0gICAgICAgICAgICAgICAgICBkZWZh
dWx0XygpIHt9Ci0gIGV4cGxpY2l0IFRocmVhZExvY2FsKGNvbnN0IFQmIHZhbHVlKSA6IGtleV8o
Q3JlYXRlS2V5KCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0Xyh2YWx1ZSkge30KKyAgVGhyZWFkTG9jYWwoKQorICAgICAgOiBrZXlfKENyZWF0ZUtl
eSgpKSwgZGVmYXVsdF9mYWN0b3J5XyhuZXcgRGVmYXVsdFZhbHVlSG9sZGVyRmFjdG9yeSgpKSB7
fQorICBleHBsaWNpdCBUaHJlYWRMb2NhbChjb25zdCBUJiB2YWx1ZSkKKyAgICAgIDoga2V5XyhD
cmVhdGVLZXkoKSksCisgICAgICAgIGRlZmF1bHRfZmFjdG9yeV8obmV3IEluc3RhbmNlVmFsdWVI
b2xkZXJGYWN0b3J5KHZhbHVlKSkge30KIAogICB+VGhyZWFkTG9jYWwoKSB7CiAgICAgLy8gRGVz
dHJveXMgdGhlIG1hbmFnZWQgb2JqZWN0IGZvciB0aGUgY3VycmVudCB0aHJlYWQsIGlmIGFueS4K
QEAgLTExNjMsNiArMjE5MSw3IEBAIGNsYXNzIFRocmVhZExvY2FsIHsKICAgLy8gSG9sZHMgYSB2
YWx1ZSBvZiB0eXBlIFQuCiAgIGNsYXNzIFZhbHVlSG9sZGVyIDogcHVibGljIFRocmVhZExvY2Fs
VmFsdWVIb2xkZXJCYXNlIHsKICAgIHB1YmxpYzoKKyAgICBWYWx1ZUhvbGRlcigpIDogdmFsdWVf
KCkge30KICAgICBleHBsaWNpdCBWYWx1ZUhvbGRlcihjb25zdCBUJiB2YWx1ZSkgOiB2YWx1ZV8o
dmFsdWUpIHt9CiAKICAgICBUKiBwb2ludGVyKCkgeyByZXR1cm4gJnZhbHVlXzsgfQpAQCAtMTE4
OCwyMiArMjIxNyw1NCBAQCBjbGFzcyBUaHJlYWRMb2NhbCB7CiAgICAgICByZXR1cm4gQ2hlY2tl
ZERvd25jYXN0VG9BY3R1YWxUeXBlPFZhbHVlSG9sZGVyPihob2xkZXIpLT5wb2ludGVyKCk7CiAg
ICAgfQogCi0gICAgVmFsdWVIb2xkZXIqIGNvbnN0IG5ld19ob2xkZXIgPSBuZXcgVmFsdWVIb2xk
ZXIoZGVmYXVsdF8pOworICAgIFZhbHVlSG9sZGVyKiBjb25zdCBuZXdfaG9sZGVyID0gZGVmYXVs
dF9mYWN0b3J5Xy0+TWFrZU5ld0hvbGRlcigpOwogICAgIFRocmVhZExvY2FsVmFsdWVIb2xkZXJC
YXNlKiBjb25zdCBob2xkZXJfYmFzZSA9IG5ld19ob2xkZXI7CiAgICAgR1RFU1RfQ0hFQ0tfUE9T
SVhfU1VDQ0VTU18ocHRocmVhZF9zZXRzcGVjaWZpYyhrZXlfLCBob2xkZXJfYmFzZSkpOwogICAg
IHJldHVybiBuZXdfaG9sZGVyLT5wb2ludGVyKCk7CiAgIH0KIAorICBjbGFzcyBWYWx1ZUhvbGRl
ckZhY3RvcnkgeworICAgcHVibGljOgorICAgIFZhbHVlSG9sZGVyRmFjdG9yeSgpIHt9CisgICAg
dmlydHVhbCB+VmFsdWVIb2xkZXJGYWN0b3J5KCkge30KKyAgICB2aXJ0dWFsIFZhbHVlSG9sZGVy
KiBNYWtlTmV3SG9sZGVyKCkgY29uc3QgPSAwOworCisgICBwcml2YXRlOgorICAgIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVmFsdWVIb2xkZXJGYWN0b3J5KTsKKyAgfTsKKworICBj
bGFzcyBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5IDogcHVibGljIFZhbHVlSG9sZGVyRmFjdG9y
eSB7CisgICBwdWJsaWM6CisgICAgRGVmYXVsdFZhbHVlSG9sZGVyRmFjdG9yeSgpIHt9CisgICAg
dmlydHVhbCBWYWx1ZUhvbGRlciogTWFrZU5ld0hvbGRlcigpIGNvbnN0IHsgcmV0dXJuIG5ldyBW
YWx1ZUhvbGRlcigpOyB9CisKKyAgIHByaXZhdGU6CisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOXyhEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5KTsKKyAgfTsKKworICBjbGFzcyBJ
bnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeSA6IHB1YmxpYyBWYWx1ZUhvbGRlckZhY3Rvcnkgewor
ICAgcHVibGljOgorICAgIGV4cGxpY2l0IEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5KGNvbnN0
IFQmIHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KKyAgICB2aXJ0dWFsIFZhbHVlSG9sZGVyKiBN
YWtlTmV3SG9sZGVyKCkgY29uc3QgeworICAgICAgcmV0dXJuIG5ldyBWYWx1ZUhvbGRlcih2YWx1
ZV8pOworICAgIH0KKworICAgcHJpdmF0ZToKKyAgICBjb25zdCBUIHZhbHVlXzsgIC8vIFRoZSB2
YWx1ZSBmb3IgZWFjaCB0aHJlYWQuCisKKyAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJ
R05fKEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5KTsKKyAgfTsKKwogICAvLyBBIGtleSBwdGhy
ZWFkcyB1c2VzIGZvciBsb29raW5nIHVwIHBlci10aHJlYWQgdmFsdWVzLgogICBjb25zdCBwdGhy
ZWFkX2tleV90IGtleV87Ci0gIGNvbnN0IFQgZGVmYXVsdF87ICAvLyBUaGUgZGVmYXVsdCB2YWx1
ZSBmb3IgZWFjaCB0aHJlYWQuCisgIHNjb3BlZF9wdHI8VmFsdWVIb2xkZXJGYWN0b3J5PiBkZWZh
dWx0X2ZhY3RvcnlfOwogCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFk
TG9jYWwpOwogfTsKIAotI2RlZmluZSBHVEVTVF9JU19USFJFQURTQUZFIDEKKyMgZW5kaWYgIC8v
IEdURVNUX0hBU19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMXwogCi0jZWxzZSAgLy8gR1RFU1RfSEFT
X1BUSFJFQUQKKyNlbHNlICAvLyBHVEVTVF9JU19USFJFQURTQUZFCiAKIC8vIEEgZHVtbXkgaW1w
bGVtZW50YXRpb24gb2Ygc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgKG11dGV4LCBsb2NrLAog
Ly8gYW5kIHRocmVhZC1sb2NhbCB2YXJpYWJsZSkuICBOZWNlc3NhcnkgZm9yIGNvbXBpbGluZyBH
b29nbGUgVGVzdCB3aGVyZQpAQCAtMTIxMywxNCArMjI3NCwyMSBAQCBjbGFzcyBUaHJlYWRMb2Nh
bCB7CiBjbGFzcyBNdXRleCB7CiAgcHVibGljOgogICBNdXRleCgpIHt9CisgIHZvaWQgTG9jaygp
IHt9CisgIHZvaWQgVW5sb2NrKCkge30KICAgdm9pZCBBc3NlcnRIZWxkKCkgY29uc3Qge30KIH07
CiAKLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVURVhfKG11dGV4KSBcCisjIGRlZmlu
ZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRFWF8obXV0ZXgpIFwKICAgZXh0ZXJuIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6Ok11dGV4IG11dGV4CiAKLSNkZWZpbmUgR1RFU1RfREVGSU5FX1NUQVRJQ19N
VVRFWF8obXV0ZXgpIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4IG11dGV4CisjIGRlZmluZSBH
VEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhtdXRleCkgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0
ZXggbXV0ZXgKIAorLy8gV2UgY2Fubm90IG5hbWUgdGhpcyBjbGFzcyBNdXRleExvY2sgYmVjYXVz
ZSB0aGUgY3RvciBkZWNsYXJhdGlvbiB3b3VsZAorLy8gY29uZmxpY3Qgd2l0aCBhIG1hY3JvIG5h
bWVkIE11dGV4TG9jaywgd2hpY2ggaXMgZGVmaW5lZCBvbiBzb21lCisvLyBwbGF0Zm9ybXMuIFRo
YXQgbWFjcm8gaXMgdXNlZCBhcyBhIGRlZmVuc2l2ZSBtZWFzdXJlIHRvIHByZXZlbnQgYWdhaW5z
dAorLy8gaW5hZHZlcnRlbnQgbWlzdXNlcyBvZiBNdXRleExvY2sgbGlrZSAiTXV0ZXhMb2NrKCZt
dSkiIHJhdGhlciB0aGFuCisvLyAiTXV0ZXhMb2NrIGwoJm11KSIuICBIZW5jZSB0aGUgdHlwZWRl
ZiB0cmljayBiZWxvdy4KIGNsYXNzIEdUZXN0TXV0ZXhMb2NrIHsKICBwdWJsaWM6CiAgIGV4cGxp
Y2l0IEdUZXN0TXV0ZXhMb2NrKE11dGV4Kikge30gIC8vIE5PTElOVApAQCAtMTIyOSw3ICsyMjk3
LDcgQEAgY2xhc3MgR1Rlc3RNdXRleExvY2sgewogdHlwZWRlZiBHVGVzdE11dGV4TG9jayBNdXRl
eExvY2s7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgVGhyZWFkTG9jYWwgeworY2xh
c3MgR1RFU1RfQVBJXyBUaHJlYWRMb2NhbCB7CiAgcHVibGljOgogICBUaHJlYWRMb2NhbCgpIDog
dmFsdWVfKCkge30KICAgZXhwbGljaXQgVGhyZWFkTG9jYWwoY29uc3QgVCYgdmFsdWUpIDogdmFs
dWVfKHZhbHVlKSB7fQpAQCAtMTI0MSwyOCArMjMwOSwyNSBAQCBjbGFzcyBUaHJlYWRMb2NhbCB7
CiAgIFQgdmFsdWVfOwogfTsKIAotLy8gVGhlIGFib3ZlIHN5bmNocm9uaXphdGlvbiBwcmltaXRp
dmVzIGhhdmUgZHVtbXkgaW1wbGVtZW50YXRpb25zLgotLy8gVGhlcmVmb3JlIEdvb2dsZSBUZXN0
IGlzIG5vdCB0aHJlYWQtc2FmZS4KLSNkZWZpbmUgR1RFU1RfSVNfVEhSRUFEU0FGRSAwCi0KLSNl
bmRpZiAgLy8gR1RFU1RfSEFTX1BUSFJFQUQKKyNlbmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFEU0FG
RQogCiAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBydW5uaW5nIGluIHRoZSBwcm9j
ZXNzLCBvciAwIHRvIGluZGljYXRlIHRoYXQKIC8vIHdlIGNhbm5vdCBkZXRlY3QgaXQuCiBHVEVT
VF9BUElfIHNpemVfdCBHZXRUaHJlYWRDb3VudCgpOwogCiAvLyBQYXNzaW5nIG5vbi1QT0QgY2xh
c3NlcyB0aHJvdWdoIGVsbGlwc2lzICguLi4pIGNyYXNoZXMgdGhlIEFSTQotLy8gY29tcGlsZXIg
YW5kIGdlbmVyYXRlcyBhIHdhcm5pbmcgaW4gU3VuIFN0dWRpby4gIFRoZSBOb2tpYSBTeW1iaWFu
CisvLyBjb21waWxlciBhbmQgZ2VuZXJhdGVzIGEgd2FybmluZyBpbiBTdW4gU3R1ZGlvIGJlZm9y
ZSAxMnU0LiBUaGUgTm9raWEgU3ltYmlhbgogLy8gYW5kIHRoZSBJQk0gWEwgQy9DKysgY29tcGls
ZXIgdHJ5IHRvIGluc3RhbnRpYXRlIGEgY29weSBjb25zdHJ1Y3RvcgogLy8gZm9yIG9iamVjdHMg
cGFzc2VkIHRocm91Z2ggZWxsaXBzaXMgKC4uLiksIGZhaWxpbmcgZm9yIHVuY29weWFibGUKIC8v
IG9iamVjdHMuICBXZSBkZWZpbmUgdGhpcyB0byBlbnN1cmUgdGhhdCBvbmx5IFBPRCBpcyBwYXNz
ZWQgdGhyb3VnaAogLy8gZWxsaXBzaXMgb24gdGhlc2Ugc3lzdGVtcy4KLSNpZiBkZWZpbmVkKF9f
U1lNQklBTjMyX18pIHx8IGRlZmluZWQoX19JQk1DUFBfXykgfHwgZGVmaW5lZChfX1NVTlBST19D
QykKKyNpZiBkZWZpbmVkKF9fU1lNQklBTjMyX18pIHx8IGRlZmluZWQoX19JQk1DUFBfXykgfHwg
XAorICAgICAoZGVmaW5lZChfX1NVTlBST19DQykgJiYgX19TVU5QUk9fQ0MgPCAweDUxMzApCiAv
LyBXZSBsb3NlIHN1cHBvcnQgZm9yIE5VTEwgZGV0ZWN0aW9uIHdoZXJlIHRoZSBjb21waWxlciBk
b2Vzbid0IGxpa2UKIC8vIHBhc3Npbmcgbm9uLVBPRCBjbGFzc2VzIHRocm91Z2ggZWxsaXBzaXMg
KC4uLikuCi0jZGVmaW5lIEdURVNUX0VMTElQU0lTX05FRURTX1BPRF8gMQorIyBkZWZpbmUgR1RF
U1RfRUxMSVBTSVNfTkVFRFNfUE9EXyAxCiAjZWxzZQotI2RlZmluZSBHVEVTVF9DQU5fQ09NUEFS
RV9OVUxMIDEKKyMgZGVmaW5lIEdURVNUX0NBTl9DT01QQVJFX05VTEwgMQogI2VuZGlmCiAKIC8v
IFRoZSBOb2tpYSBTeW1iaWFuIGFuZCBJQk0gWEwgQy9DKysgY29tcGlsZXJzIGNhbm5vdCBkZWNp
ZGUgYmV0d2VlbgpAQCAtMTI3MCw3ICsyMzM1LDcgQEAgR1RFU1RfQVBJXyBzaXplX3QgR2V0VGhy
ZWFkQ291bnQoKTsKIC8vIF9jYW5fIGRlY2lkZSBiZXR3ZWVuIGNsYXNzIHRlbXBsYXRlIHNwZWNp
YWxpemF0aW9ucyBmb3IgVCBhbmQgVCosCiAvLyBzbyBhIHRyMTo6dHlwZV90cmFpdHMtbGlrZSBp
c19wb2ludGVyIHdvcmtzLgogI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgfHwgZGVmaW5lZChf
X0lCTUNQUF9fKQotI2RlZmluZSBHVEVTVF9ORUVEU19JU19QT0lOVEVSXyAxCisjIGRlZmluZSBH
VEVTVF9ORUVEU19JU19QT0lOVEVSXyAxCiAjZW5kaWYKIAogdGVtcGxhdGUgPGJvb2wgYm9vbF92
YWx1ZT4KQEAgLTEyODMsMjMgKzIzNDgsOTMgQEAgdGVtcGxhdGUgPGJvb2wgYm9vbF92YWx1ZT4g
Y29uc3QgYm9vbCBib29sX2NvbnN0YW50PGJvb2xfdmFsdWU+Ojp2YWx1ZTsKIHR5cGVkZWYgYm9v
bF9jb25zdGFudDxmYWxzZT4gZmFsc2VfdHlwZTsKIHR5cGVkZWYgYm9vbF9jb25zdGFudDx0cnVl
PiB0cnVlX3R5cGU7CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorc3RydWN0
IGlzX3NhbWUgOiBwdWJsaWMgZmFsc2VfdHlwZSB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitzdHJ1Y3QgaXNfc2FtZTxULCBUPiA6IHB1YmxpYyB0cnVlX3R5cGUge307CisKKwogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgaXNfcG9pbnRlciA6IHB1YmxpYyBmYWxzZV90eXBlIHt9
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0cnVjdCBpc19wb2ludGVyPFQqPiA6IHB1Ymxp
YyB0cnVlX3R5cGUge307CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvcj4KK3N0cnVjdCBJ
dGVyYXRvclRyYWl0cyB7CisgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6OnZhbHVlX3R5cGUg
dmFsdWVfdHlwZTsKK307CisKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXRlcmF0
b3JUcmFpdHM8VCo+IHsKKyAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Cit9OworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK3N0cnVjdCBJdGVyYXRvclRyYWl0czxjb25zdCBUKj4geworICB0eXBlZGVm
IFQgdmFsdWVfdHlwZTsKK307CisKICNpZiBHVEVTVF9PU19XSU5ET1dTCi0jZGVmaW5lIEdURVNU
X1BBVEhfU0VQXyAiXFwiCi0jZGVmaW5lIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfIDEKKyMgZGVm
aW5lIEdURVNUX1BBVEhfU0VQXyAiXFwiCisjIGRlZmluZSBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQ
XyAxCiAvLyBUaGUgYmlnZ2VzdCBzaWduZWQgaW50ZWdlciB0eXBlIHRoZSBjb21waWxlciBzdXBw
b3J0cy4KIHR5cGVkZWYgX19pbnQ2NCBCaWdnZXN0SW50OwogI2Vsc2UKLSNkZWZpbmUgR1RFU1Rf
UEFUSF9TRVBfICIvIgotI2RlZmluZSBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXyAwCisjIGRlZmlu
ZSBHVEVTVF9QQVRIX1NFUF8gIi8iCisjIGRlZmluZSBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXyAw
CiB0eXBlZGVmIGxvbmcgbG9uZyBCaWdnZXN0SW50OyAgLy8gTk9MSU5UCiAjZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MKIAorLy8gVXRpbGl0aWVzIGZvciBjaGFyLgorCisvLyBpc3NwYWNlKGlu
dCBjaCkgYW5kIGZyaWVuZHMgYWNjZXB0IGFuIHVuc2lnbmVkIGNoYXIgb3IgRU9GLiAgY2hhcgor
Ly8gbWF5IGJlIHNpZ25lZCwgZGVwZW5kaW5nIG9uIHRoZSBjb21waWxlciAob3IgY29tcGlsZXIg
ZmxhZ3MpLgorLy8gVGhlcmVmb3JlIHdlIG5lZWQgdG8gY2FzdCBhIGNoYXIgdG8gdW5zaWduZWQg
Y2hhciBiZWZvcmUgY2FsbGluZworLy8gaXNzcGFjZSgpLCBldGMuCisKK2lubGluZSBib29sIElz
QWxwaGEoY2hhciBjaCkgeworICByZXR1cm4gaXNhbHBoYShzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihjaCkpICE9IDA7Cit9CitpbmxpbmUgYm9vbCBJc0FsTnVtKGNoYXIgY2gpIHsKKyAgcmV0
dXJuIGlzYWxudW0oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOworfQoraW5s
aW5lIGJvb2wgSXNEaWdpdChjaGFyIGNoKSB7CisgIHJldHVybiBpc2RpZ2l0KHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKK30KK2lubGluZSBib29sIElzTG93ZXIoY2hhciBj
aCkgeworICByZXR1cm4gaXNsb3dlcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpICE9
IDA7Cit9CitpbmxpbmUgYm9vbCBJc1NwYWNlKGNoYXIgY2gpIHsKKyAgcmV0dXJuIGlzc3BhY2Uo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNV
cHBlcihjaGFyIGNoKSB7CisgIHJldHVybiBpc3VwcGVyKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KGNoKSkgIT0gMDsKK30KK2lubGluZSBib29sIElzWERpZ2l0KGNoYXIgY2gpIHsKKyAgcmV0
dXJuIGlzeGRpZ2l0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKK30KK2lu
bGluZSBib29sIElzWERpZ2l0KHdjaGFyX3QgY2gpIHsKKyAgY29uc3QgdW5zaWduZWQgY2hhciBs
b3dfYnl0ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKTsKKyAgcmV0dXJuIGNoID09
IGxvd19ieXRlICYmIGlzeGRpZ2l0KGxvd19ieXRlKSAhPSAwOworfQorCitpbmxpbmUgY2hhciBU
b0xvd2VyKGNoYXIgY2gpIHsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXI+KHRvbG93ZXIoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSk7Cit9CitpbmxpbmUgY2hhciBUb1VwcGVyKGNo
YXIgY2gpIHsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXI+KHRvdXBwZXIoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oY2gpKSk7Cit9CisKK2lubGluZSBzdGQ6OnN0cmluZyBTdHJpcFRyYWls
aW5nU3BhY2VzKHN0ZDo6c3RyaW5nIHN0cikgeworICBzdGQ6OnN0cmluZzo6aXRlcmF0b3IgaXQg
PSBzdHIuZW5kKCk7CisgIHdoaWxlIChpdCAhPSBzdHIuYmVnaW4oKSAmJiBJc1NwYWNlKCotLWl0
KSkKKyAgICBpdCA9IHN0ci5lcmFzZShpdCk7CisgIHJldHVybiBzdHI7Cit9CisKIC8vIFRoZSB0
ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXggbmFtZXNwYWNlIGhvbGRzIHdyYXBwZXJzIGZvciBjb21t
b24KIC8vIFBPU0lYIGZ1bmN0aW9ucy4gIFRoZXNlIHdyYXBwZXJzIGhpZGUgdGhlIGRpZmZlcmVu
Y2VzIGJldHdlZW4KIC8vIFdpbmRvd3MvTVNWQyBhbmQgUE9TSVggc3lzdGVtcy4gIFNpbmNlIHNv
bWUgY29tcGlsZXJzIGRlZmluZSB0aGVzZQpAQCAtMTMxNCwzNiArMjQ0OSwzNiBAQCBuYW1lc3Bh
Y2UgcG9zaXggewogCiB0eXBlZGVmIHN0cnVjdCBfc3RhdCBTdGF0U3RydWN0OwogCi0jaWZkZWYg
X19CT1JMQU5EQ19fCisjIGlmZGVmIF9fQk9STEFORENfXwogaW5saW5lIGludCBJc0FUVFkoaW50
IGZkKSB7IHJldHVybiBpc2F0dHkoZmQpOyB9CiBpbmxpbmUgaW50IFN0ckNhc2VDbXAoY29uc3Qg
Y2hhciogczEsIGNvbnN0IGNoYXIqIHMyKSB7CiAgIHJldHVybiBzdHJpY21wKHMxLCBzMik7CiB9
CiBpbmxpbmUgY2hhciogU3RyRHVwKGNvbnN0IGNoYXIqIHNyYykgeyByZXR1cm4gc3RyZHVwKHNy
Yyk7IH0KLSNlbHNlICAvLyAhX19CT1JMQU5EQ19fCi0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKKyMgZWxzZSAgLy8gIV9fQk9STEFORENfXworIyAgaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKIGlubGluZSBpbnQgSXNBVFRZKGludCAvKiBmZCAqLykgeyByZXR1cm4gMDsgfQotI2Vsc2UK
KyMgIGVsc2UKIGlubGluZSBpbnQgSXNBVFRZKGludCBmZCkgeyByZXR1cm4gX2lzYXR0eShmZCk7
IH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgIGVuZGlmICAvLyBHVEVT
VF9PU19XSU5ET1dTX01PQklMRQogaW5saW5lIGludCBTdHJDYXNlQ21wKGNvbnN0IGNoYXIqIHMx
LCBjb25zdCBjaGFyKiBzMikgewogICByZXR1cm4gX3N0cmljbXAoczEsIHMyKTsKIH0KIGlubGlu
ZSBjaGFyKiBTdHJEdXAoY29uc3QgY2hhciogc3JjKSB7IHJldHVybiBfc3RyZHVwKHNyYyk7IH0K
LSNlbmRpZiAgLy8gX19CT1JMQU5EQ19fCisjIGVuZGlmICAvLyBfX0JPUkxBTkRDX18KIAotI2lm
IEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiBp
bmxpbmUgaW50IEZpbGVObyhGSUxFKiBmaWxlKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGlu
dD4oX2ZpbGVubyhmaWxlKSk7IH0KIC8vIFN0YXQoKSwgUm1EaXIoKSwgYW5kIElzRGlyKCkgYXJl
IG5vdCBuZWVkZWQgb24gV2luZG93cyBDRSBhdCB0aGlzCiAvLyB0aW1lIGFuZCB0aHVzIG5vdCBk
ZWZpbmVkIHRoZXJlLgotI2Vsc2UKKyMgZWxzZQogaW5saW5lIGludCBGaWxlTm8oRklMRSogZmls
ZSkgeyByZXR1cm4gX2ZpbGVubyhmaWxlKTsgfQogaW5saW5lIGludCBTdGF0KGNvbnN0IGNoYXIq
IHBhdGgsIFN0YXRTdHJ1Y3QqIGJ1ZikgeyByZXR1cm4gX3N0YXQocGF0aCwgYnVmKTsgfQogaW5s
aW5lIGludCBSbURpcihjb25zdCBjaGFyKiBkaXIpIHsgcmV0dXJuIF9ybWRpcihkaXIpOyB9CiBp
bmxpbmUgYm9vbCBJc0Rpcihjb25zdCBTdGF0U3RydWN0JiBzdCkgewogICByZXR1cm4gKF9TX0lG
RElSICYgc3Quc3RfbW9kZSkgIT0gMDsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAKICNlbHNlCiAKQEAg
LTEzNjMsMTEgKzI0OTgsNyBAQCBpbmxpbmUgYm9vbCBJc0Rpcihjb25zdCBTdGF0U3RydWN0JiBz
dCkgeyByZXR1cm4gU19JU0RJUihzdC5zdF9tb2RlKTsgfQogCiAvLyBGdW5jdGlvbnMgZGVwcmVj
YXRlZCBieSBNU1ZDIDguMC4KIAotI2lmZGVmIF9NU0NfVkVSCi0vLyBUZW1wb3JhcmlseSBkaXNh
YmxlIHdhcm5pbmcgNDk5NiAoZGVwcmVjYXRlZCBmdW5jdGlvbikuCi0jcHJhZ21hIHdhcm5pbmco
cHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5OTYpCi0jZW5kaWYKK0dURVNUX0RJU0FC
TEVfTVNDX0RFUFJFQ0FURURfUFVTSF8oKQogCiBpbmxpbmUgY29uc3QgY2hhciogU3RyTkNweShj
aGFyKiBkZXN0LCBjb25zdCBjaGFyKiBzcmMsIHNpemVfdCBuKSB7CiAgIHJldHVybiBzdHJuY3B5
KGRlc3QsIHNyYywgbik7CkBAIC0xMzc3LDcgKzI1MDgsNyBAQCBpbmxpbmUgY29uc3QgY2hhciog
U3RyTkNweShjaGFyKiBkZXN0LCBjb25zdCBjaGFyKiBzcmMsIHNpemVfdCBuKSB7CiAvLyBTdHJF
cnJvcigpIGFyZW4ndCBuZWVkZWQgb24gV2luZG93cyBDRSBhdCB0aGlzIHRpbWUgYW5kIHRodXMg
bm90CiAvLyBkZWZpbmVkIHRoZXJlLgogCi0jaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisj
aWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFICYmICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYm
ICFHVEVTVF9PU19XSU5ET1dTX1JUCiBpbmxpbmUgaW50IENoRGlyKGNvbnN0IGNoYXIqIGRpcikg
eyByZXR1cm4gY2hkaXIoZGlyKTsgfQogI2VuZGlmCiBpbmxpbmUgRklMRSogRk9wZW4oY29uc3Qg
Y2hhciogcGF0aCwgY29uc3QgY2hhciogbW9kZSkgewpAQCAtMTQwMSw4ICsyNTMyLDkgQEAgaW5s
aW5lIGludCBDbG9zZShpbnQgZmQpIHsgcmV0dXJuIGNsb3NlKGZkKTsgfQogaW5saW5lIGNvbnN0
IGNoYXIqIFN0ckVycm9yKGludCBlcnJudW0pIHsgcmV0dXJuIHN0cmVycm9yKGVycm51bSk7IH0K
ICNlbmRpZgogaW5saW5lIGNvbnN0IGNoYXIqIEdldEVudihjb25zdCBjaGFyKiBuYW1lKSB7Ci0j
aWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRSB8
fCBHVEVTVF9PU19XSU5ET1dTX1BIT05FIHx8IEdURVNUX09TX1dJTkRPV1NfUlQKICAgLy8gV2Ug
YXJlIG9uIFdpbmRvd3MgQ0UsIHdoaWNoIGhhcyBubyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCisg
IHN0YXRpY19jYXN0PHZvaWQ+KG5hbWUpOyAgLy8gVG8gcHJldmVudCAndW51c2VkIGFyZ3VtZW50
JyB3YXJuaW5nLgogICByZXR1cm4gTlVMTDsKICNlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKSB8
fCBkZWZpbmVkKF9fU3VuT1NfNV84KSB8fCBkZWZpbmVkKF9fU3VuT1NfNV85KQogICAvLyBFbnZp
cm9ubWVudCB2YXJpYWJsZXMgd2hpY2ggd2UgcHJvZ3JhbW1hdGljYWxseSBjbGVhciB3aWxsIGJl
IHNldCB0byB0aGUKQEAgLTE0MTQsOSArMjU0Niw3IEBAIGlubGluZSBjb25zdCBjaGFyKiBHZXRF
bnYoY29uc3QgY2hhciogbmFtZSkgewogI2VuZGlmCiB9CiAKLSNpZmRlZiBfTVNDX1ZFUgotI3By
YWdtYSB3YXJuaW5nKHBvcCkgIC8vIFJlc3RvcmVzIHRoZSB3YXJuaW5nIHN0YXRlLgotI2VuZGlm
CitHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BPUF8oKQogCiAjaWYgR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUKIC8vIFdpbmRvd3MgQ0UgaGFzIG5vIEMgbGlicmFyeS4gVGhlIGFib3J0KCkg
ZnVuY3Rpb24gaXMgdXNlZCBpbgpAQCAtMTQyOSw2ICsyNTU5LDIzIEBAIGlubGluZSB2b2lkIEFi
b3J0KCkgeyBhYm9ydCgpOyB9CiAKIH0gIC8vIG5hbWVzcGFjZSBwb3NpeAogCisvLyBNU1ZDICJk
ZXByZWNhdGVzIiBzbnByaW50ZiBhbmQgaXNzdWVzIHdhcm5pbmdzIHdoZXJldmVyIGl0IGlzIHVz
ZWQuICBJbgorLy8gb3JkZXIgdG8gYXZvaWQgdGhlc2Ugd2FybmluZ3MsIHdlIG5lZWQgdG8gdXNl
IF9zbnByaW50ZiBvciBfc25wcmludGZfcyBvbgorLy8gTVNWQy1iYXNlZCBwbGF0Zm9ybXMuICBX
ZSBtYXAgdGhlIEdURVNUX1NOUFJJTlRGXyBtYWNybyB0byB0aGUgYXBwcm9wcmlhdGUKKy8vIGZ1
bmN0aW9uIGluIG9yZGVyIHRvIGFjaGlldmUgdGhhdC4gIFdlIHVzZSBtYWNybyBkZWZpbml0aW9u
IGhlcmUgYmVjYXVzZQorLy8gc25wcmludGYgaXMgYSB2YXJpYWRpYyBmdW5jdGlvbi4KKyNpZiBf
TVNDX1ZFUiA+PSAxNDAwICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorLy8gTVNWQyAyMDA1
IGFuZCBhYm92ZSBzdXBwb3J0IHZhcmlhZGljIG1hY3Jvcy4KKyMgZGVmaW5lIEdURVNUX1NOUFJJ
TlRGXyhidWZmZXIsIHNpemUsIGZvcm1hdCwgLi4uKSBcCisgICAgIF9zbnByaW50Zl9zKGJ1ZmZl
ciwgc2l6ZSwgc2l6ZSwgZm9ybWF0LCBfX1ZBX0FSR1NfXykKKyNlbGlmIGRlZmluZWQoX01TQ19W
RVIpCisvLyBXaW5kb3dzIENFIGRvZXMgbm90IGRlZmluZSBfc25wcmludGZfcyBhbmQgTVNWQyBw
cmlvciB0byAyMDA1IGRvZXNuJ3QKKy8vIGNvbXBsYWluIGFib3V0IF9zbnByaW50Zi4KKyMgZGVm
aW5lIEdURVNUX1NOUFJJTlRGXyBfc25wcmludGYKKyNlbHNlCisjIGRlZmluZSBHVEVTVF9TTlBS
SU5URl8gc25wcmludGYKKyNlbmRpZgorCiAvLyBUaGUgbWF4aW11bSBudW1iZXIgYSBCaWdnZXN0
SW50IGNhbiByZXByZXNlbnQuICBUaGlzIGRlZmluaXRpb24KIC8vIHdvcmtzIG5vIG1hdHRlciBC
aWdnZXN0SW50IGlzIHJlcHJlc2VudGVkIGluIG9uZSdzIGNvbXBsZW1lbnQgb3IKIC8vIHR3bydz
IGNvbXBsZW1lbnQuCkBAIC0xNTAwLDI3ICsyNjQ3LDQ0IEBAIHR5cGVkZWYgVHlwZVdpdGhTaXpl
PDg+OjpJbnQgVGltZUluTWlsbGlzOyAgLy8gUmVwcmVzZW50cyB0aW1lIGluIG1pbGxpc2Vjb25k
cy4KIC8vIFV0aWxpdGllcyBmb3IgY29tbWFuZCBsaW5lIGZsYWdzIGFuZCBlbnZpcm9ubWVudCB2
YXJpYWJsZXMuCiAKIC8vIE1hY3JvIGZvciByZWZlcmVuY2luZyBmbGFncy4KLSNkZWZpbmUgR1RF
U1RfRkxBRyhuYW1lKSBGTEFHU19ndGVzdF8jI25hbWUKKyNpZiAhZGVmaW5lZChHVEVTVF9GTEFH
KQorIyBkZWZpbmUgR1RFU1RfRkxBRyhuYW1lKSBGTEFHU19ndGVzdF8jI25hbWUKKyNlbmRpZiAg
Ly8gIWRlZmluZWQoR1RFU1RfRkxBRykKKworI2lmICFkZWZpbmVkKEdURVNUX1VTRV9PV05fRkxB
R0ZJTEVfRkxBR18pCisjIGRlZmluZSBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfIDEKKyNl
bmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXykKKworI2lmICFk
ZWZpbmVkKEdURVNUX0RFQ0xBUkVfYm9vbF8pCisjIGRlZmluZSBHVEVTVF9GTEFHX1NBVkVSXyA6
OnRlc3Rpbmc6OmludGVybmFsOjpHVGVzdEZsYWdTYXZlcgogCiAvLyBNYWNyb3MgZm9yIGRlY2xh
cmluZyBmbGFncy4KLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9ib29sXyhuYW1lKSBHVEVTVF9BUElf
IGV4dGVybiBib29sIEdURVNUX0ZMQUcobmFtZSkKLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9pbnQz
Ml8obmFtZSkgXAorIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9ib29sXyhuYW1lKSBHVEVTVF9BUElf
IGV4dGVybiBib29sIEdURVNUX0ZMQUcobmFtZSkKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfaW50
MzJfKG5hbWUpIFwKICAgICBHVEVTVF9BUElfIGV4dGVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpJ
bnQzMiBHVEVTVF9GTEFHKG5hbWUpCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhuYW1l
KSBcCi0gICAgR1RFU1RfQVBJXyBleHRlcm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nIEdU
RVNUX0ZMQUcobmFtZSkKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhuYW1lKSBcCisg
ICAgR1RFU1RfQVBJXyBleHRlcm4gOjpzdGQ6OnN0cmluZyBHVEVTVF9GTEFHKG5hbWUpCiAKIC8v
IE1hY3JvcyBmb3IgZGVmaW5pbmcgZmxhZ3MuCi0jZGVmaW5lIEdURVNUX0RFRklORV9ib29sXyhu
YW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCisjIGRlZmluZSBHVEVTVF9ERUZJTkVfYm9vbF8obmFt
ZSwgZGVmYXVsdF92YWwsIGRvYykgXAogICAgIEdURVNUX0FQSV8gYm9vbCBHVEVTVF9GTEFHKG5h
bWUpID0gKGRlZmF1bHRfdmFsKQotI2RlZmluZSBHVEVTVF9ERUZJTkVfaW50MzJfKG5hbWUsIGRl
ZmF1bHRfdmFsLCBkb2MpIFwKKyMgZGVmaW5lIEdURVNUX0RFRklORV9pbnQzMl8obmFtZSwgZGVm
YXVsdF92YWwsIGRvYykgXAogICAgIEdURVNUX0FQSV8gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW50
MzIgR1RFU1RfRkxBRyhuYW1lKSA9IChkZWZhdWx0X3ZhbCkKLSNkZWZpbmUgR1RFU1RfREVGSU5F
X3N0cmluZ18obmFtZSwgZGVmYXVsdF92YWwsIGRvYykgXAotICAgIEdURVNUX0FQSV8gOjp0ZXN0
aW5nOjppbnRlcm5hbDo6U3RyaW5nIEdURVNUX0ZMQUcobmFtZSkgPSAoZGVmYXVsdF92YWwpCisj
IGRlZmluZSBHVEVTVF9ERUZJTkVfc3RyaW5nXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCisg
ICAgR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEdURVNUX0ZMQUcobmFtZSkgPSAoZGVmYXVsdF92
YWwpCisKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfREVDTEFSRV9ib29sXykKKworLy8gVGhy
ZWFkIGFubm90YXRpb25zCisjaWYgIWRlZmluZWQoR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlS
RURfKQorIyBkZWZpbmUgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGxvY2tzKQorIyBk
ZWZpbmUgR1RFU1RfTE9DS19FWENMVURFRF8obG9ja3MpCisjZW5kaWYgIC8vICFkZWZpbmVkKEdU
RVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXykKIAogLy8gUGFyc2VzICdzdHInIGZvciBhIDMy
LWJpdCBzaWduZWQgaW50ZWdlci4gIElmIHN1Y2Nlc3NmdWwsIHdyaXRlcyB0aGUgcmVzdWx0CiAv
LyB0byAqdmFsdWUgYW5kIHJldHVybnMgdHJ1ZTsgb3RoZXJ3aXNlIGxlYXZlcyAqdmFsdWUgdW5j
aGFuZ2VkIGFuZCByZXR1cm5zCiAvLyBmYWxzZS4KLS8vIFRPRE8oY2hhbmRsZXJjKTogRmluZCBh
IGJldHRlciB3YXkgdG8gcmVmYWN0b3IgZmxhZyBhbmQgZW52aXJvbm1lbnQgcGFyc2luZworLy8g
RklYTUU6IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIHJlZmFjdG9yIGZsYWcgYW5kIGVudmlyb25tZW50
IHBhcnNpbmcKIC8vIG91dCBvZiBib3RoIGd0ZXN0LXBvcnQuY2MgYW5kIGd0ZXN0LmNjIHRvIGF2
b2lkIGV4cG9ydGluZyB0aGlzIHV0aWxpdHkKIC8vIGZ1bmN0aW9uLgogYm9vbCBQYXJzZUludDMy
KGNvbnN0IE1lc3NhZ2UmIHNyY190ZXh0LCBjb25zdCBjaGFyKiBzdHIsIEludDMyKiB2YWx1ZSk7
CkBAIC0xNTI5LDYgKzI2OTMsNyBAQCBib29sIFBhcnNlSW50MzIoY29uc3QgTWVzc2FnZSYgc3Jj
X3RleHQsIGNvbnN0IGNoYXIqIHN0ciwgSW50MzIqIHZhbHVlKTsKIC8vIGNvcnJlc3BvbmRpbmcg
dG8gdGhlIGdpdmVuIEdvb2dsZSBUZXN0IGZsYWcuCiBib29sIEJvb2xGcm9tR1Rlc3RFbnYoY29u
c3QgY2hhciogZmxhZywgYm9vbCBkZWZhdWx0X3ZhbCk7CiBHVEVTVF9BUElfIEludDMyIEludDMy
RnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIEludDMyIGRlZmF1bHRfdmFsKTsKK3N0ZDo6
c3RyaW5nIE91dHB1dEZsYWdBbHNvQ2hlY2tFbnZWYXIoKTsKIGNvbnN0IGNoYXIqIFN0cmluZ0Zy
b21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBjb25zdCBjaGFyKiBkZWZhdWx0X3ZhbCk7CiAK
IH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgKaW5kZXgg
YWZmMDkzZGVjOGRiMzk5MDc0ZWEzYjcxYmI3MjI3ZGE3ZTk2NzMwYS4uNGM5YjYyNjJjM2MxMDM3
MjZhYTNjYWI0YzE5OTk1YmFlZjk1OGI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oCkBA
IC0yNyw3MCArMjcsMzggQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIC8vCi0v
LyBBdXRob3JzOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKSwgZWVmYWNtQGdtYWlsLmNv
bSAoU2VhbiBNY2FmZWUpCi0vLwotLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsg
KEdvb2dsZSBUZXN0KQorLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFt
ZXdvcmsgKEdvb2dsZSBUZXN0KQogLy8KIC8vIFRoaXMgaGVhZGVyIGZpbGUgZGVjbGFyZXMgdGhl
IFN0cmluZyBjbGFzcyBhbmQgZnVuY3Rpb25zIHVzZWQgaW50ZXJuYWxseSBieQogLy8gR29vZ2xl
IFRlc3QuICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4gVGhleSBz
aG91bGQgbm90IHVzZWQKIC8vIGJ5IGNvZGUgZXh0ZXJuYWwgdG8gR29vZ2xlIFRlc3QuCiAvLwot
Ly8gVGhpcyBoZWFkZXIgZmlsZSBpcyAjaW5jbHVkZWQgYnkgPGd0ZXN0L2ludGVybmFsL2d0ZXN0
LWludGVybmFsLmg+LgorLy8gVGhpcyBoZWFkZXIgZmlsZSBpcyAjaW5jbHVkZWQgYnkgZ3Rlc3Qt
aW50ZXJuYWwuaC4KIC8vIEl0IHNob3VsZCBub3QgYmUgI2luY2x1ZGVkIGJ5IG90aGVyIGZpbGVz
LgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1Rf
SU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9TVFJJTkdfSF8KICNkZWZpbmUgR1RFU1RfSU5D
TFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9TVFJJTkdfSF8KIAogI2lmZGVmIF9fQk9STEFORENf
XwogLy8gc3RyaW5nLmggaXMgbm90IGd1YXJhbnRlZWQgdG8gcHJvdmlkZSBzdHJjcHkgb24gQysr
IEJ1aWxkZXIuCi0jaW5jbHVkZSA8bWVtLmg+CisjIGluY2x1ZGUgPG1lbS5oPgogI2VuZGlmCiAK
ICNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0
Lmg+Ci0KICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVz
dC1wb3J0LmgiCisKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAK
LS8vIFN0cmluZyAtIGEgVVRGLTggc3RyaW5nIGNsYXNzLgotLy8KLS8vIEZvciBoaXN0b3JpYyBy
ZWFzb25zLCB3ZSBkb24ndCB1c2Ugc3RkOjpzdHJpbmcuCi0vLwotLy8gVE9ETyh3YW5AZ29vZ2xl
LmNvbSk6IHJlcGxhY2UgdGhpcyBjbGFzcyB3aXRoIHN0ZDo6c3RyaW5nIG9yCi0vLyBpbXBsZW1l
bnQgaXQgaW4gdGVybXMgb2YgdGhlIGxhdHRlci4KLS8vCi0vLyBOb3RlIHRoYXQgU3RyaW5nIGNh
biByZXByZXNlbnQgYm90aCBOVUxMIGFuZCB0aGUgZW1wdHkgc3RyaW5nLAotLy8gd2hpbGUgc3Rk
OjpzdHJpbmcgY2Fubm90IHJlcHJlc2VudCBOVUxMLgotLy8KLS8vIE5VTEwgYW5kIHRoZSBlbXB0
eSBzdHJpbmcgYXJlIGNvbnNpZGVyZWQgZGlmZmVyZW50LiAgTlVMTCBpcyBsZXNzCi0vLyB0aGFu
IGFueXRoaW5nIChpbmNsdWRpbmcgdGhlIGVtcHR5IHN0cmluZykgZXhjZXB0IGl0c2VsZi4KLS8v
Ci0vLyBUaGlzIGNsYXNzIG9ubHkgcHJvdmlkZXMgbWluaW11bSBmdW5jdGlvbmFsaXR5IG5lY2Vz
c2FyeSBmb3IKLS8vIGltcGxlbWVudGluZyBHb29nbGUgVGVzdC4gIFdlIGRvIG5vdCBpbnRlbmQg
dG8gaW1wbGVtZW50IGEgZnVsbC1mbGVkZ2VkCi0vLyBzdHJpbmcgY2xhc3MgaGVyZS4KLS8vCi0v
LyBTaW5jZSB0aGUgcHVycG9zZSBvZiB0aGlzIGNsYXNzIGlzIHRvIHByb3ZpZGUgYSBzdWJzdGl0
dXRlIGZvcgotLy8gc3RkOjpzdHJpbmcgb24gcGxhdGZvcm1zIHdoZXJlIGl0IGNhbm5vdCBiZSB1
c2VkLCB3ZSBkZWZpbmUgYSBjb3B5Ci0vLyBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVy
YXRvcnMgc3VjaCB0aGF0IHdlIGRvbid0IG5lZWQKLS8vIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9u
IGluIGEgbG90IG9mIHBsYWNlcy4KLS8vCi0vLyBJbiBvcmRlciB0byBtYWtlIHRoZSByZXByZXNl
bnRhdGlvbiBlZmZpY2llbnQsIHRoZSBkJ3RvciBvZiBTdHJpbmcKLS8vIGlzIG5vdCB2aXJ0dWFs
LiAgVGhlcmVmb3JlIERPIE5PVCBJTkhFUklUIEZST00gU3RyaW5nLgorLy8gU3RyaW5nIC0gYW4g
YWJzdHJhY3QgY2xhc3MgaG9sZGluZyBzdGF0aWMgc3RyaW5nIHV0aWxpdGllcy4KIGNsYXNzIEdU
RVNUX0FQSV8gU3RyaW5nIHsKICBwdWJsaWM6CiAgIC8vIFN0YXRpYyB1dGlsaXR5IG1ldGhvZHMK
IAotICAvLyBSZXR1cm5zIHRoZSBpbnB1dCBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzIGlmIGl0
J3Mgbm90IE5VTEw7Ci0gIC8vIG90aGVyd2lzZSByZXR1cm5zICIobnVsbCkiLiAgRm9yIGV4YW1w
bGUsICJcIkhlbGxvXCIiIGlzIHJldHVybmVkCi0gIC8vIGZvciBpbnB1dCAiSGVsbG8iLgotICAv
LwotICAvLyBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJpbnRpbmcgYSBDIHN0cmluZyBpbiB0aGUgc3lu
dGF4IG9mIGEgbGl0ZXJhbC4KLSAgLy8KLSAgLy8gS25vd24gaXNzdWU6IGVzY2FwZSBzZXF1ZW5j
ZXMgYXJlIG5vdCBoYW5kbGVkIHlldC4KLSAgc3RhdGljIFN0cmluZyBTaG93Q1N0cmluZ1F1b3Rl
ZChjb25zdCBjaGFyKiBjX3N0cik7Ci0KICAgLy8gQ2xvbmVzIGEgMC10ZXJtaW5hdGVkIEMgc3Ry
aW5nLCBhbGxvY2F0aW5nIG1lbW9yeSB1c2luZyBuZXcuICBUaGUKICAgLy8gY2FsbGVyIGlzIHJl
c3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUgcmV0dXJuIHZhbHVlIHVzaW5nCiAgIC8vIGRlbGV0
ZVtdLiAgUmV0dXJucyB0aGUgY2xvbmVkIHN0cmluZywgb3IgTlVMTCBpZiB0aGUgaW5wdXQgaXMK
QEAgLTEzNywxMSArMTA1LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBTdHJpbmcgewogICAvLyBOVUxM
IHdpbGwgYmUgY29udmVydGVkIHRvICIobnVsbCkiLiAgSWYgYW4gZXJyb3Igb2NjdXJyZWQgZHVy
aW5nCiAgIC8vIHRoZSBjb252ZXJzaW9uLCAiKGZhaWxlZCB0byBjb252ZXJ0IGZyb20gd2lkZSBz
dHJpbmcpIiBpcwogICAvLyByZXR1cm5lZC4KLSAgc3RhdGljIFN0cmluZyBTaG93V2lkZUNTdHJp
bmcoY29uc3Qgd2NoYXJfdCogd2lkZV9jX3N0cik7Ci0KLSAgLy8gU2ltaWxhciB0byBTaG93V2lk
ZUNTdHJpbmcoKSwgZXhjZXB0IHRoYXQgdGhpcyBmdW5jdGlvbiBlbmNsb3NlcwotICAvLyB0aGUg
Y29udmVydGVkIHN0cmluZyBpbiBkb3VibGUgcXVvdGVzLgotICBzdGF0aWMgU3RyaW5nIFNob3dX
aWRlQ1N0cmluZ1F1b3RlZChjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKTsKKyAgc3RhdGljIHN0
ZDo6c3RyaW5nIFNob3dXaWRlQ1N0cmluZyhjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKTsKIAog
ICAvLyBDb21wYXJlcyB0d28gd2lkZSBDIHN0cmluZ3MuICBSZXR1cm5zIHRydWUgaWZmIHRoZXkg
aGF2ZSB0aGUgc2FtZQogICAvLyBjb250ZW50LgpAQCAtMTc1LDE3NCArMTM5LDI3IEBAIGNsYXNz
IEdURVNUX0FQSV8gU3RyaW5nIHsKICAgc3RhdGljIGJvb2wgQ2FzZUluc2Vuc2l0aXZlV2lkZUNT
dHJpbmdFcXVhbHMoY29uc3Qgd2NoYXJfdCogbGhzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiByaHMpOwogCi0gIC8vIEZvcm1h
dHMgYSBsaXN0IG9mIGFyZ3VtZW50cyB0byBhIFN0cmluZywgdXNpbmcgdGhlIHNhbWUgZm9ybWF0
Ci0gIC8vIHNwZWMgc3RyaW5nIGFzIGZvciBwcmludGYuCi0gIC8vCi0gIC8vIFdlIGRvIG5vdCB1
c2UgdGhlIFN0cmluZ1ByaW50ZiBjbGFzcyBhcyBpdCBpcyBub3QgdW5pdmVyc2FsbHkKLSAgLy8g
YXZhaWxhYmxlLgotICAvLwotICAvLyBUaGUgcmVzdWx0IGlzIGxpbWl0ZWQgdG8gNDA5NiBjaGFy
YWN0ZXJzIChpbmNsdWRpbmcgdGhlIHRhaWxpbmcKLSAgLy8gMCkuICBJZiA0MDk2IGNoYXJhY3Rl
cnMgYXJlIG5vdCBlbm91Z2ggdG8gZm9ybWF0IHRoZSBpbnB1dCwKLSAgLy8gIjxidWZmZXIgZXhj
ZWVkZWQ+IiBpcyByZXR1cm5lZC4KLSAgc3RhdGljIFN0cmluZyBGb3JtYXQoY29uc3QgY2hhciog
Zm9ybWF0LCAuLi4pOwotCi0gIC8vIEMndG9ycwotCi0gIC8vIFRoZSBkZWZhdWx0IGMndG9yIGNv
bnN0cnVjdHMgYSBOVUxMIHN0cmluZy4KLSAgU3RyaW5nKCkgOiBjX3N0cl8oTlVMTCksIGxlbmd0
aF8oMCkge30KLQotICAvLyBDb25zdHJ1Y3RzIGEgU3RyaW5nIGJ5IGNsb25pbmcgYSAwLXRlcm1p
bmF0ZWQgQyBzdHJpbmcuCi0gIFN0cmluZyhjb25zdCBjaGFyKiBhX2Nfc3RyKSB7ICAvLyBOT0xJ
TlQKLSAgICBpZiAoYV9jX3N0ciA9PSBOVUxMKSB7Ci0gICAgICBjX3N0cl8gPSBOVUxMOwotICAg
ICAgbGVuZ3RoXyA9IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgIENvbnN0cnVjdE5vbk51bGwoYV9j
X3N0ciwgc3RybGVuKGFfY19zdHIpKTsKLSAgICB9Ci0gIH0KKyAgLy8gUmV0dXJucyB0cnVlIGlm
ZiB0aGUgZ2l2ZW4gc3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LCBpZ25vcmluZwor
ICAvLyBjYXNlLiBBbnkgc3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGggYW4gZW1wdHkg
c3VmZml4LgorICBzdGF0aWMgYm9vbCBFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgKKyAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBzdHIsIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdWZmaXgpOwogCi0gIC8v
IENvbnN0cnVjdHMgYSBTdHJpbmcgYnkgY29weWluZyBhIGdpdmVuIG51bWJlciBvZiBjaGFycyBm
cm9tIGEKLSAgLy8gYnVmZmVyLiAgRS5nLiBTdHJpbmcoImhlbGxvIiwgMykgY3JlYXRlcyB0aGUg
c3RyaW5nICJoZWwiLAotICAvLyBTdHJpbmcoImFcMGJjZCIsIDQpIGNyZWF0ZXMgImFcMGJjIiwg
U3RyaW5nKE5VTEwsIDApIGNyZWF0ZXMgIiIsCi0gIC8vIGFuZCBTdHJpbmcoTlVMTCwgMSkgcmVz
dWx0cyBpbiBhY2Nlc3MgdmlvbGF0aW9uLgotICBTdHJpbmcoY29uc3QgY2hhciogYnVmZmVyLCBz
aXplX3QgYV9sZW5ndGgpIHsKLSAgICBDb25zdHJ1Y3ROb25OdWxsKGJ1ZmZlciwgYV9sZW5ndGgp
OwotICB9CisgIC8vIEZvcm1hdHMgYW4gaW50IHZhbHVlIGFzICIlMDJkIi4KKyAgc3RhdGljIHN0
ZDo6c3RyaW5nIEZvcm1hdEludFdpZHRoMihpbnQgdmFsdWUpOyAgLy8gIiUwMmQiIGZvciB3aWR0
aCA9PSAyCiAKLSAgLy8gVGhlIGNvcHkgYyd0b3IgY3JlYXRlcyBhIG5ldyBjb3B5IG9mIHRoZSBz
dHJpbmcuICBUaGUgdHdvCi0gIC8vIFN0cmluZyBvYmplY3RzIGRvIG5vdCBzaGFyZSBjb250ZW50
LgotICBTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHIpIDogY19zdHJfKE5VTEwpLCBsZW5ndGhfKDAp
IHsgKnRoaXMgPSBzdHI7IH0KKyAgLy8gRm9ybWF0cyBhbiBpbnQgdmFsdWUgYXMgIiVYIi4KKyAg
c3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdEhleEludChpbnQgdmFsdWUpOwogCi0gIC8vIEQndG9y
LiAgU3RyaW5nIGlzIGludGVuZGVkIHRvIGJlIGEgZmluYWwgY2xhc3MsIHNvIHRoZSBkJ3Rvcgot
ICAvLyBkb2Vzbid0IG5lZWQgdG8gYmUgdmlydHVhbC4KLSAgflN0cmluZygpIHsgZGVsZXRlW10g
Y19zdHJfOyB9Ci0KLSAgLy8gQWxsb3dzIGEgU3RyaW5nIHRvIGJlIGltcGxpY2l0bHkgY29udmVy
dGVkIHRvIGFuIDo6c3RkOjpzdHJpbmcgb3IKLSAgLy8gOjpzdHJpbmcsIGFuZCB2aWNlIHZlcnNh
LiAgQ29udmVydGluZyBhIFN0cmluZyBjb250YWluaW5nIGEgTlVMTAotICAvLyBwb2ludGVyIHRv
IDo6c3RkOjpzdHJpbmcgb3IgOjpzdHJpbmcgaXMgdW5kZWZpbmVkIGJlaGF2aW9yLgotICAvLyBD
b252ZXJ0aW5nIGEgOjpzdGQ6OnN0cmluZyBvciA6OnN0cmluZyBjb250YWluaW5nIGFuIGVtYmVk
ZGVkIE5VTAotICAvLyBjaGFyYWN0ZXIgdG8gYSBTdHJpbmcgd2lsbCByZXN1bHQgaW4gdGhlIHBy
ZWZpeCB1cCB0byB0aGUgZmlyc3QKLSAgLy8gTlVMIGNoYXJhY3Rlci4KLSAgU3RyaW5nKGNvbnN0
IDo6c3RkOjpzdHJpbmcmIHN0cikgewotICAgIENvbnN0cnVjdE5vbk51bGwoc3RyLmNfc3RyKCks
IHN0ci5sZW5ndGgoKSk7Ci0gIH0KLQotICBvcGVyYXRvciA6OnN0ZDo6c3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gOjpzdGQ6OnN0cmluZyhjX3N0cigpLCBsZW5ndGgoKSk7IH0KLQotI2lmIEdURVNU
X0hBU19HTE9CQUxfU1RSSU5HCi0gIFN0cmluZyhjb25zdCA6OnN0cmluZyYgc3RyKSB7Ci0gICAg
Q29uc3RydWN0Tm9uTnVsbChzdHIuY19zdHIoKSwgc3RyLmxlbmd0aCgpKTsKLSAgfQotCi0gIG9w
ZXJhdG9yIDo6c3RyaW5nKCkgY29uc3QgeyByZXR1cm4gOjpzdHJpbmcoY19zdHIoKSwgbGVuZ3Ro
KCkpOyB9Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0KLSAgLy8gUmV0dXJu
cyB0cnVlIGlmZiB0aGlzIGlzIGFuIGVtcHR5IHN0cmluZyAoaS5lLiAiIikuCi0gIGJvb2wgZW1w
dHkoKSBjb25zdCB7IHJldHVybiAoY19zdHIoKSAhPSBOVUxMKSAmJiAobGVuZ3RoKCkgPT0gMCk7
IH0KLQotICAvLyBDb21wYXJlcyB0aGlzIHdpdGggYW5vdGhlciBTdHJpbmcuCi0gIC8vIFJldHVy
bnMgPCAwIGlmIHRoaXMgaXMgbGVzcyB0aGFuIHJocywgMCBpZiB0aGlzIGlzIGVxdWFsIHRvIHJo
cywgb3IgPiAwCi0gIC8vIGlmIHRoaXMgaXMgZ3JlYXRlciB0aGFuIHJocy4KLSAgaW50IENvbXBh
cmUoY29uc3QgU3RyaW5nJiByaHMpIGNvbnN0OwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhp
cyBTdHJpbmcgZXF1YWxzIHRoZSBnaXZlbiBDIHN0cmluZy4gIEEgTlVMTAotICAvLyBzdHJpbmcg
YW5kIGEgbm9uLU5VTEwgc3RyaW5nIGFyZSBjb25zaWRlcmVkIG5vdCBlcXVhbC4KLSAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IGNoYXIqIGFfY19zdHIpIGNvbnN0IHsgcmV0dXJuIENvbXBhcmUoYV9j
X3N0cikgPT0gMDsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBTdHJpbmcgaXMgbGVz
cyB0aGFuIHRoZSBnaXZlbiBTdHJpbmcuICBBCi0gIC8vIE5VTEwgc3RyaW5nIGlzIGNvbnNpZGVy
ZWQgbGVzcyB0aGFuICIiLgotICBib29sIG9wZXJhdG9yPChjb25zdCBTdHJpbmcmIHJocykgY29u
c3QgeyByZXR1cm4gQ29tcGFyZShyaHMpIDwgMDsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYg
dGhpcyBTdHJpbmcgZG9lc24ndCBlcXVhbCB0aGUgZ2l2ZW4gQyBzdHJpbmcuICBBIE5VTEwKLSAg
Ly8gc3RyaW5nIGFuZCBhIG5vbi1OVUxMIHN0cmluZyBhcmUgY29uc2lkZXJlZCBub3QgZXF1YWwu
Ci0gIGJvb2wgb3BlcmF0b3IhPShjb25zdCBjaGFyKiBhX2Nfc3RyKSBjb25zdCB7IHJldHVybiAh
KCp0aGlzID09IGFfY19zdHIpOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIFN0cmlu
ZyBlbmRzIHdpdGggdGhlIGdpdmVuIHN1ZmZpeC4gICpBbnkqCi0gIC8vIFN0cmluZyBpcyBjb25z
aWRlcmVkIHRvIGVuZCB3aXRoIGEgTlVMTCBvciBlbXB0eSBzdWZmaXguCi0gIGJvb2wgRW5kc1dp
dGgoY29uc3QgY2hhciogc3VmZml4KSBjb25zdDsKLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRo
aXMgU3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LCBub3QgY29uc2lkZXJpbmcKLSAg
Ly8gY2FzZS4gQW55IFN0cmluZyBpcyBjb25zaWRlcmVkIHRvIGVuZCB3aXRoIGEgTlVMTCBvciBl
bXB0eSBzdWZmaXguCi0gIGJvb2wgRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoY29uc3QgY2hhciog
c3VmZml4KSBjb25zdDsKLQotICAvLyBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIGVuY2Fwc3Vs
YXRlZCBzdHJpbmcsIG9yIDAgaWYgdGhlCi0gIC8vIHN0cmluZyBpcyBOVUxMLgotICBzaXplX3Qg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbGVuZ3RoXzsgfQotCi0gIC8vIEdldHMgdGhlIDAtdGVy
bWluYXRlZCBDIHN0cmluZyB0aGlzIFN0cmluZyBvYmplY3QgcmVwcmVzZW50cy4KLSAgLy8gVGhl
IFN0cmluZyBvYmplY3Qgc3RpbGwgb3ducyB0aGUgc3RyaW5nLiAgVGhlcmVmb3JlIHRoZSBjYWxs
ZXIKLSAgLy8gc2hvdWxkIE5PVCBkZWxldGUgdGhlIHJldHVybiB2YWx1ZS4KLSAgY29uc3QgY2hh
ciogY19zdHIoKSBjb25zdCB7IHJldHVybiBjX3N0cl87IH0KLQotICAvLyBBc3NpZ25zIGEgQyBz
dHJpbmcgdG8gdGhpcyBvYmplY3QuICBTZWxmLWFzc2lnbm1lbnQgd29ya3MuCi0gIGNvbnN0IFN0
cmluZyYgb3BlcmF0b3I9KGNvbnN0IGNoYXIqIGFfY19zdHIpIHsKLSAgICByZXR1cm4gKnRoaXMg
PSBTdHJpbmcoYV9jX3N0cik7Ci0gIH0KLQotICAvLyBBc3NpZ25zIGEgU3RyaW5nIG9iamVjdCB0
byB0aGlzIG9iamVjdC4gIFNlbGYtYXNzaWdubWVudCB3b3Jrcy4KLSAgY29uc3QgU3RyaW5nJiBv
cGVyYXRvcj0oY29uc3QgU3RyaW5nJiByaHMpIHsKLSAgICBpZiAodGhpcyAhPSAmcmhzKSB7Ci0g
ICAgICBkZWxldGVbXSBjX3N0cl87Ci0gICAgICBpZiAocmhzLmNfc3RyKCkgPT0gTlVMTCkgewot
ICAgICAgICBjX3N0cl8gPSBOVUxMOwotICAgICAgICBsZW5ndGhfID0gMDsKLSAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgIENvbnN0cnVjdE5vbk51bGwocmhzLmNfc3RyKCksIHJocy5sZW5ndGgoKSk7
Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuICp0aGlzOwotICB9CisgIC8vIEZvcm1hdHMg
YSBieXRlIGFzICIlMDJYIi4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdEJ5dGUodW5zaWdu
ZWQgY2hhciB2YWx1ZSk7CiAKICBwcml2YXRlOgotICAvLyBDb25zdHJ1Y3RzIGEgbm9uLU5VTEwg
U3RyaW5nIGZyb20gdGhlIGdpdmVuIGNvbnRlbnQuICBUaGlzCi0gIC8vIGZ1bmN0aW9uIGNhbiBv
bmx5IGJlIGNhbGxlZCB3aGVuIGRhdGFfIGhhcyBub3QgYmVlbiBhbGxvY2F0ZWQuCi0gIC8vIENv
bnN0cnVjdE5vbk51bGwoTlVMTCwgMCkgcmVzdWx0cyBpbiBhbiBlbXB0eSBzdHJpbmcgKCIiKS4K
LSAgLy8gQ29uc3RydWN0Tm9uTnVsbChOVUxMLCBub25femVybykgaXMgdW5kZWZpbmVkIGJlaGF2
aW9yLgotICB2b2lkIENvbnN0cnVjdE5vbk51bGwoY29uc3QgY2hhciogYnVmZmVyLCBzaXplX3Qg
YV9sZW5ndGgpIHsKLSAgICBjaGFyKiBjb25zdCBzdHIgPSBuZXcgY2hhclthX2xlbmd0aCArIDFd
OwotICAgIG1lbWNweShzdHIsIGJ1ZmZlciwgYV9sZW5ndGgpOwotICAgIHN0clthX2xlbmd0aF0g
PSAnXDAnOwotICAgIGNfc3RyXyA9IHN0cjsKLSAgICBsZW5ndGhfID0gYV9sZW5ndGg7Ci0gIH0K
LQotICBjb25zdCBjaGFyKiBjX3N0cl87Ci0gIHNpemVfdCBsZW5ndGhfOworICBTdHJpbmcoKTsg
IC8vIE5vdCBtZWFudCB0byBiZSBpbnN0YW50aWF0ZWQuCiB9OyAgLy8gY2xhc3MgU3RyaW5nCiAK
LS8vIFN0cmVhbXMgYSBTdHJpbmcgdG8gYW4gb3N0cmVhbS4gIEVhY2ggJ1wwJyBjaGFyYWN0ZXIg
aW4gdGhlIFN0cmluZwotLy8gaXMgcmVwbGFjZWQgd2l0aCAiXFwwIi4KLWlubGluZSA6OnN0ZDo6
b3N0cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFN0cmluZyYgc3Ry
KSB7Ci0gIGlmIChzdHIuY19zdHIoKSA9PSBOVUxMKSB7Ci0gICAgb3MgPDwgIihudWxsKSI7Ci0g
IH0gZWxzZSB7Ci0gICAgY29uc3QgY2hhciogY29uc3QgY19zdHIgPSBzdHIuY19zdHIoKTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBzdHIubGVuZ3RoKCk7IGkrKykgewotICAgICAgaWYg
KGNfc3RyW2ldID09ICdcMCcpIHsKLSAgICAgICAgb3MgPDwgIlxcMCI7Ci0gICAgICB9IGVsc2Ug
ewotICAgICAgICBvcyA8PCBjX3N0cltpXTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgcmV0dXJu
IG9zOwotfQotCi0vLyBHZXRzIHRoZSBjb250ZW50IG9mIHRoZSBTdHJTdHJlYW0ncyBidWZmZXIg
YXMgYSBTdHJpbmcuICBFYWNoICdcMCcKKy8vIEdldHMgdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmlu
Z3N0cmVhbSdzIGJ1ZmZlciBhcyBhbiBzdGQ6OnN0cmluZy4gIEVhY2ggJ1wwJwogLy8gY2hhcmFj
dGVyIGluIHRoZSBidWZmZXIgaXMgcmVwbGFjZWQgd2l0aCAiXFwwIi4KLUdURVNUX0FQSV8gU3Ry
aW5nIFN0clN0cmVhbVRvU3RyaW5nKFN0clN0cmVhbSogc3RyZWFtKTsKLQotLy8gQ29udmVydHMg
YSBzdHJlYW1hYmxlIHZhbHVlIHRvIGEgU3RyaW5nLiAgQSBOVUxMIHBvaW50ZXIgaXMKLS8vIGNv
bnZlcnRlZCB0byAiKG51bGwpIi4gIFdoZW4gdGhlIGlucHV0IHZhbHVlIGlzIGEgOjpzdHJpbmcs
Ci0vLyA6OnN0ZDo6c3RyaW5nLCA6OndzdHJpbmcsIG9yIDo6c3RkOjp3c3RyaW5nIG9iamVjdCwg
ZWFjaCBOVUwKLS8vIGNoYXJhY3RlciBpbiBpdCBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgotCi0v
LyBEZWNsYXJlZCBoZXJlIGJ1dCBkZWZpbmVkIGluIGd0ZXN0LmgsIHNvIHRoYXQgaXQgaGFzIGFj
Y2VzcwotLy8gdG8gdGhlIGRlZmluaXRpb24gb2YgdGhlIE1lc3NhZ2UgY2xhc3MsIHJlcXVpcmVk
IGJ5IHRoZSBBUk0KLS8vIGNvbXBpbGVyLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1TdHJpbmcg
U3RyZWFtYWJsZVRvU3RyaW5nKGNvbnN0IFQmIHN0cmVhbWFibGUpOworR1RFU1RfQVBJXyBzdGQ6
OnN0cmluZyBTdHJpbmdTdHJlYW1Ub1N0cmluZyg6OnN0ZDo6c3RyaW5nc3RyZWFtKiBzdHJlYW0p
OwogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXR1cGxlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2d0ZXN0LXR1cGxlLmgKaW5kZXggYzI3ZjNhNDIxZDljNDk3MWVkZTQ5Y2MzMzI5MTJk
NGE4MzYwYzVhNS4uNzhhM2E2YTAxZmFjNzU1MTdlYWI4MzEzMTI0MjdlMTVkNWU0ZWJiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9n
dGVzdC10dXBsZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaApAQCAtMSw0ICsxLDYgQEAKLS8vIFRoaXMgZmlsZSB3YXMg
R0VORVJBVEVEIGJ5IGEgc2NyaXB0LiAgRE8gTk9UIEVESVQgQlkgSEFORCEhIQorLy8gVGhpcyBm
aWxlIHdhcyBHRU5FUkFURUQgYnkgY29tbWFuZDoKKy8vICAgICBwdW1wLnB5IGd0ZXN0LXR1cGxl
LmgucHVtcAorLy8gRE8gTk9UIEVESVQgQlkgSEFORCEhIQogCiAvLyBDb3B5cmlnaHQgMjAwOSBH
b29nbGUgSW5jLgogLy8gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KQEAgLTI4LDExICszMCwxMiBAQAog
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBJbXBsZW1lbnRzIGEg
c3Vic2V0IG9mIFRSMSB0dXBsZSBuZWVkZWQgYnkgR29vZ2xlIFRlc3QgYW5kIEdvb2dsZSBNb2Nr
LgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1Rf
SU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UVVBMRV9IXwogI2RlZmluZSBHVEVTVF9JTkNM
VURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RVUExFX0hfCiAKQEAgLTQwLDE3ICs0MywyNSBAQAog
CiAvLyBUaGUgY29tcGlsZXIgdXNlZCBpbiBTeW1iaWFuIGhhcyBhIGJ1ZyB0aGF0IHByZXZlbnRz
IHVzIGZyb20gZGVjbGFyaW5nIHRoZQogLy8gdHVwbGUgdGVtcGxhdGUgYXMgYSBmcmllbmQgKGl0
IGNvbXBsYWlucyB0aGF0IHR1cGxlIGlzIHJlZGVmaW5lZCkuICBUaGlzCi0vLyBoYWNrIGJ5cGFz
c2VzIHRoZSBidWcgYnkgZGVjbGFyaW5nIHRoZSBtZW1iZXJzIHRoYXQgc2hvdWxkIG90aGVyd2lz
ZSBiZQorLy8gYnlwYXNzZXMgdGhlIGJ1ZyBieSBkZWNsYXJpbmcgdGhlIG1lbWJlcnMgdGhhdCBz
aG91bGQgb3RoZXJ3aXNlIGJlCiAvLyBwcml2YXRlIGFzIHB1YmxpYy4KIC8vIFN1biBTdHVkaW8g
dmVyc2lvbnMgPCAxMiBhbHNvIGhhdmUgdGhlIGFib3ZlIGJ1Zy4KICNpZiBkZWZpbmVkKF9fU1lN
QklBTjMyX18pIHx8IChkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiBfX1NVTlBST19DQyA8IDB4NTkw
KQotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8gcHVibGljOgorIyBkZWZp
bmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIHB1YmxpYzoKICNlbHNlCi0jZGVmaW5l
IEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBcCisjIGRlZmluZSBHVEVTVF9ERUNMQVJF
X1RVUExFX0FTX0ZSSUVORF8gXAogICAgIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFUp
PiBmcmllbmQgY2xhc3MgdHVwbGU7IFwKICAgIHByaXZhdGU6CiAjZW5kaWYKIAorLy8gVmlzdWFs
IFN0dWRpbyAyMDEwLCAyMDEyLCBhbmQgMjAxMyBkZWZpbmUgc3ltYm9scyBpbiBzdGQ6OnRyMSB0
aGF0IGNvbmZsaWN0CisvLyB3aXRoIG91ciBvd24gZGVmaW5pdGlvbnMuIFRoZXJlZm9yZSB1c2lu
ZyBvdXIgb3duIHR1cGxlIGRvZXMgbm90IHdvcmsgb24KKy8vIHRob3NlIGNvbXBpbGVycy4KKyNp
ZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxNjAwICAvKiAxNjAwIGlzIFZpc3Vh
bCBTdHVkaW8gMjAxMCAqLworIyBlcnJvciAiZ3Rlc3QncyB0dXBsZSBkb2Vzbid0IGNvbXBpbGUg
b24gVmlzdWFsIFN0dWRpbyAyMDEwIG9yIGxhdGVyLiBcCitHVEVTVF9VU0VfT1dOX1RSMV9UVVBM
RSBtdXN0IGJlIHNldCB0byAwIG9uIHRob3NlIGNvbXBpbGVycy4iCisjZW5kaWYKKwogLy8gR1RF
U1Rfbl9UVVBMRV8oVCkgaXMgdGhlIHR5cGUgb2YgYW4gbi10dXBsZS4KICNkZWZpbmUgR1RFU1Rf
MF9UVVBMRV8oVCkgdHVwbGU8PgogI2RlZmluZSBHVEVTVF8xX1RVUExFXyhUKSB0dXBsZTxUIyMw
LCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkLCBcCkBAIC0xNDAsMzQgKzE1MSw1
NCBAQCB0ZW1wbGF0ZSA8Ym9vbCBrSW5kZXhWYWxpZCwgaW50IGtJbmRleCwgY2xhc3MgVHVwbGU+
CiBzdHJ1Y3QgVHVwbGVFbGVtZW50OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhU
KT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgMCwgR1RFU1RfMTBfVFVQTEVfKFQpPiB7IHR5
cGVkZWYgVDAgdHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgMCwgR1RFU1RfMTBf
VFVQTEVfKFQpID4geworICB0eXBlZGVmIFQwIHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1Rf
MTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgMSwgR1RFU1RfMTBf
VFVQTEVfKFQpPiB7IHR5cGVkZWYgVDEgdHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1
ZSwgMSwgR1RFU1RfMTBfVFVQTEVfKFQpID4geworICB0eXBlZGVmIFQxIHR5cGU7Cit9OwogCiB0
ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1
ZSwgMiwgR1RFU1RfMTBfVFVQTEVfKFQpPiB7IHR5cGVkZWYgVDIgdHlwZTsgfTsKK3N0cnVjdCBU
dXBsZUVsZW1lbnQ8dHJ1ZSwgMiwgR1RFU1RfMTBfVFVQTEVfKFQpID4geworICB0eXBlZGVmIFQy
IHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCBU
dXBsZUVsZW1lbnQ8dHJ1ZSwgMywgR1RFU1RfMTBfVFVQTEVfKFQpPiB7IHR5cGVkZWYgVDMgdHlw
ZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgMywgR1RFU1RfMTBfVFVQTEVfKFQpID4g
eworICB0eXBlZGVmIFQzIHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVT
XyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgNCwgR1RFU1RfMTBfVFVQTEVfKFQpPiB7
IHR5cGVkZWYgVDQgdHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgNCwgR1RFU1Rf
MTBfVFVQTEVfKFQpID4geworICB0eXBlZGVmIFQ0IHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8R1RF
U1RfMTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgNSwgR1RFU1Rf
MTBfVFVQTEVfKFQpPiB7IHR5cGVkZWYgVDUgdHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8
dHJ1ZSwgNSwgR1RFU1RfMTBfVFVQTEVfKFQpID4geworICB0eXBlZGVmIFQ1IHR5cGU7Cit9Owog
CiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8
dHJ1ZSwgNiwgR1RFU1RfMTBfVFVQTEVfKFQpPiB7IHR5cGVkZWYgVDYgdHlwZTsgfTsKK3N0cnVj
dCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgNiwgR1RFU1RfMTBfVFVQTEVfKFQpID4geworICB0eXBlZGVm
IFQ2IHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVj
dCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgNywgR1RFU1RfMTBfVFVQTEVfKFQpPiB7IHR5cGVkZWYgVDcg
dHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgNywgR1RFU1RfMTBfVFVQTEVfKFQp
ID4geworICB0eXBlZGVmIFQ3IHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5B
TUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgOCwgR1RFU1RfMTBfVFVQTEVfKFQp
PiB7IHR5cGVkZWYgVDggdHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgOCwgR1RF
U1RfMTBfVFVQTEVfKFQpID4geworICB0eXBlZGVmIFQ4IHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8
R1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ8dHJ1ZSwgOSwgR1RF
U1RfMTBfVFVQTEVfKFQpPiB7IHR5cGVkZWYgVDkgdHlwZTsgfTsKK3N0cnVjdCBUdXBsZUVsZW1l
bnQ8dHJ1ZSwgOSwgR1RFU1RfMTBfVFVQTEVfKFQpID4geworICB0eXBlZGVmIFQ5IHR5cGU7Cit9
OwogCiB9ICAvLyBuYW1lc3BhY2UgZ3Rlc3RfaW50ZXJuYWwKIApAQCAtNzA4LDM3ICs3MzksNTkg
QEAgaW5saW5lIEdURVNUXzEwX1RVUExFXyhUKSBtYWtlX3R1cGxlKGNvbnN0IFQwJiBmMCwgY29u
c3QgVDEmIGYxLCBjb25zdCBUMiYgZjIsCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+IHN0cnVj
dCB0dXBsZV9zaXplOwogCiB0ZW1wbGF0ZSA8R1RFU1RfMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0
IHR1cGxlX3NpemU8R1RFU1RfMF9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9
IDA7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8wX1RVUExFXyhUKSA+IHsKKyAgc3RhdGlj
IGNvbnN0IGludCB2YWx1ZSA9IDA7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMV9UWVBFTkFNRVNf
KFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfMV9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0
IGludCB2YWx1ZSA9IDE7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8xX1RVUExFXyhUKSA+
IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDE7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1Rf
Ml9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfMl9UVVBMRV8oVCk+IHsg
c3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDI7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8y
X1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDI7Cit9OwogCiB0ZW1w
bGF0ZSA8R1RFU1RfM19UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfM19U
VVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDM7IH07CitzdHJ1Y3QgdHVwbGVf
c2l6ZTxHVEVTVF8zX1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDM7
Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfNF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3Np
emU8R1RFU1RfNF9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDQ7IH07Citz
dHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF80X1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGlu
dCB2YWx1ZSA9IDQ7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfNV9UWVBFTkFNRVNfKFQpPgotc3Ry
dWN0IHR1cGxlX3NpemU8R1RFU1RfNV9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1
ZSA9IDU7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF81X1RVUExFXyhUKSA+IHsKKyAgc3Rh
dGljIGNvbnN0IGludCB2YWx1ZSA9IDU7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfNl9UWVBFTkFN
RVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfNl9UVVBMRV8oVCk+IHsgc3RhdGljIGNv
bnN0IGludCB2YWx1ZSA9IDY7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF82X1RVUExFXyhU
KSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDY7Cit9OwogCiB0ZW1wbGF0ZSA8R1RF
U1RfN19UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfN19UVVBMRV8oVCk+
IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDc7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVT
VF83X1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDc7Cit9OwogCiB0
ZW1wbGF0ZSA8R1RFU1RfOF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1Rf
OF9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDg7IH07CitzdHJ1Y3QgdHVw
bGVfc2l6ZTxHVEVTVF84X1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9
IDg7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfOV9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxl
X3NpemU8R1RFU1RfOV9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDk7IH07
CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF85X1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0
IGludCB2YWx1ZSA9IDk7Cit9OwogCiB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4K
LXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzEwX1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50
IHZhbHVlID0gMTA7IH07CitzdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8xMF9UVVBMRV8oVCkgPiB7
CisgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAxMDsKK307CiAKIHRlbXBsYXRlIDxpbnQgaywg
Y2xhc3MgVHVwbGU+CiBzdHJ1Y3QgdHVwbGVfZWxlbWVudCB7CkBAIC05MTIsNyArOTY1LDcgQEAg
c3RydWN0IFNhbWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9yPGssIGs+IHsKICAgdGVtcGxhdGUg
PGNsYXNzIFR1cGxlMSwgY2xhc3MgVHVwbGUyPgogICBzdGF0aWMgYm9vbCBFcShjb25zdCBUdXBs
ZTEmIHQxLCBjb25zdCBUdXBsZTImIHQyKSB7CiAgICAgcmV0dXJuIFNhbWVTaXplVHVwbGVQcmVm
aXhDb21wYXJhdG9yPGsgLSAxLCBrIC0gMT46OkVxKHQxLCB0MikgJiYKLSAgICAgICAgOjpzdGQ6
OmdldDxrIC0gMT4odDEpID09IDo6c3RkOjpnZXQ8ayAtIDE+KHQyKTsKKyAgICAgICAgOjpzdGQ6
OnRyMTo6Z2V0PGsgLSAxPih0MSkgPT0gOjpzdGQ6OnRyMTo6Z2V0PGsgLSAxPih0Mik7CiAgIH0K
IH07CiAKQEAgLTkyMiw4ICs5NzUsOCBAQCB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhU
KSwgR1RFU1RfMTBfVFlQRU5BTUVTXyhVKT4KIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
R1RFU1RfMTBfVFVQTEVfKFQpJiB0LAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHVEVT
VF8xMF9UVVBMRV8oVSkmIHUpIHsKICAgcmV0dXJuIGd0ZXN0X2ludGVybmFsOjpTYW1lU2l6ZVR1
cGxlUHJlZml4Q29tcGFyYXRvcjwKLSAgICAgIHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFQp
Pjo6dmFsdWUsCi0gICAgICB0dXBsZV9zaXplPEdURVNUXzEwX1RVUExFXyhVKT46OnZhbHVlPjo6
RXEodCwgdSk7CisgICAgICB0dXBsZV9zaXplPEdURVNUXzEwX1RVUExFXyhUKSA+Ojp2YWx1ZSwK
KyAgICAgIHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFUpID46OnZhbHVlPjo6RXEodCwgdSk7
CiB9CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpLCBHVEVTVF8xMF9UWVBFTkFN
RVNfKFUpPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oLnB1bXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9p
bmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcAppbmRleCA4NWViYzgwNjJl
ZTEwNDQ3MzdiMzZlOGE0MDg1ZDI2N2YxOGRjMjA1Li5iYjYyNmUwNDlmMDg3ODBmZmNlOTZkNDg1
MmNiOGVkNWQzZWY1ZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcApAQCAt
MjksMTEgKzI5LDEyIEBAICQkIFRoaXMgbWV0YSBjb21tZW50IGZpeGVzIGF1dG8taW5kZW50YXRp
b24gaW4gRW1hY3MuIH19CiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCiAK
IC8vIEltcGxlbWVudHMgYSBzdWJzZXQgb2YgVFIxIHR1cGxlIG5lZWRlZCBieSBHb29nbGUgVGVz
dCBhbmQgR29vZ2xlIE1vY2suCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUK
KwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RVUExFX0hfCiAj
ZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFVQTEVfSF8KIApAQCAt
NDEsMTcgKzQyLDI1IEBAICQkIFRoaXMgbWV0YSBjb21tZW50IGZpeGVzIGF1dG8taW5kZW50YXRp
b24gaW4gRW1hY3MuIH19CiAKIC8vIFRoZSBjb21waWxlciB1c2VkIGluIFN5bWJpYW4gaGFzIGEg
YnVnIHRoYXQgcHJldmVudHMgdXMgZnJvbSBkZWNsYXJpbmcgdGhlCiAvLyB0dXBsZSB0ZW1wbGF0
ZSBhcyBhIGZyaWVuZCAoaXQgY29tcGxhaW5zIHRoYXQgdHVwbGUgaXMgcmVkZWZpbmVkKS4gIFRo
aXMKLS8vIGhhY2sgYnlwYXNzZXMgdGhlIGJ1ZyBieSBkZWNsYXJpbmcgdGhlIG1lbWJlcnMgdGhh
dCBzaG91bGQgb3RoZXJ3aXNlIGJlCisvLyBieXBhc3NlcyB0aGUgYnVnIGJ5IGRlY2xhcmluZyB0
aGUgbWVtYmVycyB0aGF0IHNob3VsZCBvdGhlcndpc2UgYmUKIC8vIHByaXZhdGUgYXMgcHVibGlj
LgogLy8gU3VuIFN0dWRpbyB2ZXJzaW9ucyA8IDEyIGFsc28gaGF2ZSB0aGUgYWJvdmUgYnVnLgog
I2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgfHwgKGRlZmluZWQoX19TVU5QUk9fQ0MpICYmIF9f
U1VOUFJPX0NDIDwgMHg1OTApCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5E
XyBwdWJsaWM6CisjIGRlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8gcHVibGlj
OgogI2Vsc2UKLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIFwKKyMgZGVm
aW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBcCiAgICAgdGVtcGxhdGUgPEdURVNU
XyQobilfVFlQRU5BTUVTXyhVKT4gZnJpZW5kIGNsYXNzIHR1cGxlOyBcCiAgICBwcml2YXRlOgog
I2VuZGlmCiAKKy8vIFZpc3VhbCBTdHVkaW8gMjAxMCwgMjAxMiwgYW5kIDIwMTMgZGVmaW5lIHN5
bWJvbHMgaW4gc3RkOjp0cjEgdGhhdCBjb25mbGljdAorLy8gd2l0aCBvdXIgb3duIGRlZmluaXRp
b25zLiBUaGVyZWZvcmUgdXNpbmcgb3VyIG93biB0dXBsZSBkb2VzIG5vdCB3b3JrIG9uCisvLyB0
aG9zZSBjb21waWxlcnMuCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTYw
MCAgLyogMTYwMCBpcyBWaXN1YWwgU3R1ZGlvIDIwMTAgKi8KKyMgZXJyb3IgImd0ZXN0J3MgdHVw
bGUgZG9lc24ndCBjb21waWxlIG9uIFZpc3VhbCBTdHVkaW8gMjAxMCBvciBsYXRlci4gXAorR1RF
U1RfVVNFX09XTl9UUjFfVFVQTEUgbXVzdCBiZSBzZXQgdG8gMCBvbiB0aG9zZSBjb21waWxlcnMu
IgorI2VuZGlmCisKIAogJHJhbmdlIGkgMC4ubi0xCiAkcmFuZ2UgaiAwLi5uCkBAIC0xMTgsOCAr
MTI3LDkgQEAgc3RydWN0IFR1cGxlRWxlbWVudDsKIAogJGZvciBpIFtbCiB0ZW1wbGF0ZSA8R1RF
U1RfJChuKV9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAkaSwgR1RF
U1RfJChuKV9UVVBMRV8oVCk+IFtbXV0KLXsgdHlwZWRlZiBUJGkgdHlwZTsgfTsKK3N0cnVjdCBU
dXBsZUVsZW1lbnQ8dHJ1ZSwgJGksIEdURVNUXyQobilfVFVQTEVfKFQpID4geworICB0eXBlZGVm
IFQkaSB0eXBlOworfTsKIAogCiBdXQpAQCAtMjIwLDcgKzIzMCw5IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBUdXBsZT4gc3RydWN0IHR1cGxlX3NpemU7CiAKICRmb3IgaiBbWwogdGVtcGxhdGUgPEdU
RVNUXyQoailfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXyQoailfVFVQ
TEVfKFQpPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAkajsgfTsKK3N0cnVjdCB0dXBsZV9z
aXplPEdURVNUXyQoailfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0g
JGo7Cit9OwogCiAKIF1dCkBAIC0zMDIsOCArMzE0LDggQEAgdGVtcGxhdGUgPEdURVNUXyQobilf
VFlQRU5BTUVTXyhUKSwgR1RFU1RfJChuKV9UWVBFTkFNRVNfKFUpPgogaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBHVEVTVF8kKG4pX1RVUExFXyhUKSYgdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR1RFU1RfJChuKV9UVVBMRV8oVSkmIHUpIHsKICAgcmV0dXJuIGd0ZXN0X2lu
dGVybmFsOjpTYW1lU2l6ZVR1cGxlUHJlZml4Q29tcGFyYXRvcjwKLSAgICAgIHR1cGxlX3NpemU8
R1RFU1RfJChuKV9UVVBMRV8oVCk+Ojp2YWx1ZSwKLSAgICAgIHR1cGxlX3NpemU8R1RFU1RfJChu
KV9UVVBMRV8oVSk+Ojp2YWx1ZT46OkVxKHQsIHUpOworICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8k
KG4pX1RVUExFXyhUKSA+Ojp2YWx1ZSwKKyAgICAgIHR1cGxlX3NpemU8R1RFU1RfJChuKV9UVVBM
RV8oVSkgPjo6dmFsdWU+OjpFcSh0LCB1KTsKIH0KIAogdGVtcGxhdGUgPEdURVNUXyQobilfVFlQ
RU5BTUVTXyhUKSwgR1RFU1RfJChuKV9UWVBFTkFNRVNfKFUpPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
dHlwZS11dGlsLmgKaW5kZXggMDkzZWVlNmYwMTk2MzU1NjlmNDA0YWU2MzU3YjhkZTQ4YjcxOGU4
MS4uMjhlNDExMjQ1MzYxYzA4ZjI4NzA3ZTkyNDhlNmQwMzMyMGU2ODYxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBl
LXV0aWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVy
bmFsL2d0ZXN0LXR5cGUtdXRpbC5oCkBAIC0zMCw4ICszMCw3IEBACiAvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQorCiAKIC8vIFR5cGUgdXRpbGl0aWVzIG5lZWRlZCBmb3IgaW1w
bGVtZW50aW5nIHR5cGVkIGFuZCB0eXBlLXBhcmFtZXRlcml6ZWQKIC8vIHRlc3RzLiAgVGhpcyBm
aWxlIGlzIGdlbmVyYXRlZCBieSBhIFNDUklQVC4gIERPIE5PVCBFRElUIEJZIEhBTkQhCkBAIC00
MSw1OCArNDAsODQgQEAKIC8vIFBsZWFzZSBjb250YWN0IGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29v
Z2xlZ3JvdXBzLmNvbSBpZiB5b3UgbmVlZAogLy8gbW9yZS4KIAorLy8gR09PR0xFVEVTVF9DTTAw
MDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxf
R1RFU1RfVFlQRV9VVElMX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxf
R1RFU1RfVFlQRV9VVElMX0hfCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0
Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+Ci0KLSNpZiBHVEVT
VF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisjaW5jbHVkZSAiZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAvLyAjaWZkZWYgX19HTlVDX18gaXMgdG9vIGdl
bmVyYWwgaGVyZS4gIEl0IGlzIHBvc3NpYmxlIHRvIHVzZSBnY2Mgd2l0aG91dCB1c2luZwogLy8g
bGlic3RkYysrICh3aGljaCBpcyB3aGVyZSBjeHhhYmkuaCBjb21lcyBmcm9tKS4KLSNpZmRlZiBf
X0dMSUJDWFhfXwotI2luY2x1ZGUgPGN4eGFiaS5oPgotI2VuZGlmICAvLyBfX0dMSUJDWFhfXwor
IyBpZiBHVEVTVF9IQVNfQ1hYQUJJX0hfCisjICBpbmNsdWRlIDxjeHhhYmkuaD4KKyMgZWxpZiBk
ZWZpbmVkKF9fSFBfYUNDKQorIyAgaW5jbHVkZSA8YWN4eF9kZW1hbmdsZS5oPgorIyBlbmRpZiAg
Ly8gR1RFU1RfSEFTSF9DWFhBQklfSF8KIAogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNl
IGludGVybmFsIHsKIAotLy8gQXNzZXJ0eVR5cGVFcTxUMSwgVDI+Ojp0eXBlIGlzIGRlZmluZWQg
aWZmIFQxIGFuZCBUMiBhcmUgdGhlIHNhbWUKLS8vIHR5cGUuICBUaGlzIGNhbiBiZSB1c2VkIGFz
IGEgY29tcGlsZS10aW1lIGFzc2VydGlvbiB0byBlbnN1cmUgdGhhdAotLy8gdHdvIHR5cGVzIGFy
ZSBlcXVhbC4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLXN0cnVjdCBB
c3NlcnRUeXBlRXE7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IEFzc2VydFR5cGVF
cTxULCBUPiB7Ci0gIHR5cGVkZWYgYm9vbCB0eXBlOwotfTsKKy8vIENhbm9uaWNhbGl6ZXMgYSBn
aXZlbiBuYW1lIHdpdGggcmVzcGVjdCB0byB0aGUgU3RhbmRhcmQgQysrIExpYnJhcnkuCisvLyBU
aGlzIGhhbmRsZXMgcmVtb3ZpbmcgdGhlIGlubGluZSBuYW1lc3BhY2Ugd2l0aGluIGBzdGRgIHRo
YXQgaXMKKy8vIHVzZWQgYnkgdmFyaW91cyBzdGFuZGFyZCBsaWJyYXJpZXMgKGUuZy4sIGBzdGQ6
Ol9fMWApLiAgTmFtZXMgb3V0c2lkZQorLy8gb2YgbmFtZXNwYWNlIHN0ZCBhcmUgcmV0dXJuZWQg
dW5tb2RpZmllZC4KK2lubGluZSBzdGQ6OnN0cmluZyBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJz
aW9uaW5nKHN0ZDo6c3RyaW5nIHMpIHsKKyAgc3RhdGljIGNvbnN0IGNoYXIgcHJlZml4W10gPSAi
c3RkOjpfXyI7CisgIGlmIChzLmNvbXBhcmUoMCwgc3RybGVuKHByZWZpeCksIHByZWZpeCkgPT0g
MCkgeworICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgZW5kID0gcy5maW5kKCI6OiIsIHN0cmxl
bihwcmVmaXgpKTsKKyAgICBpZiAoZW5kICE9IHMubnBvcykgeworICAgICAgLy8gRXJhc2UgZXZl
cnl0aGluZyBiZXR3ZWVuIHRoZSBpbml0aWFsIGBzdGRgIGFuZCB0aGUgc2Vjb25kIGA6OmAuCisg
ICAgICBzLmVyYXNlKHN0cmxlbigic3RkIiksIGVuZCAtIHN0cmxlbigic3RkIikpOworICAgIH0K
KyAgfQorICByZXR1cm4gczsKK30KIAogLy8gR2V0VHlwZU5hbWU8VD4oKSByZXR1cm5zIGEgaHVt
YW4tcmVhZGFibGUgbmFtZSBvZiB0eXBlIFQuCisvLyBOQjogVGhpcyBmdW5jdGlvbiBpcyBhbHNv
IHVzZWQgaW4gR29vZ2xlIE1vY2ssIHNvIGRvbid0IG1vdmUgaXQgaW5zaWRlIG9mCisvLyB0aGUg
dHlwZWQtdGVzdC1vbmx5IHNlY3Rpb24gYmVsb3cuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVN0
cmluZyBHZXRUeXBlTmFtZSgpIHsKLSNpZiBHVEVTVF9IQVNfUlRUSQorc3RkOjpzdHJpbmcgR2V0
VHlwZU5hbWUoKSB7CisjIGlmIEdURVNUX0hBU19SVFRJCiAKICAgY29uc3QgY2hhciogY29uc3Qg
bmFtZSA9IHR5cGVpZChUKS5uYW1lKCk7Ci0jaWZkZWYgX19HTElCQ1hYX18KKyMgIGlmIEdURVNU
X0hBU19DWFhBQklfSF8gfHwgZGVmaW5lZChfX0hQX2FDQykKICAgaW50IHN0YXR1cyA9IDA7CiAg
IC8vIGdjYydzIGltcGxlbWVudGF0aW9uIG9mIHR5cGVpZChUKS5uYW1lKCkgbWFuZ2xlcyB0aGUg
dHlwZSBuYW1lLAogICAvLyBzbyB3ZSBoYXZlIHRvIGRlbWFuZ2xlIGl0LgotICBjaGFyKiBjb25z
dCByZWFkYWJsZV9uYW1lID0gYWJpOjpfX2N4YV9kZW1hbmdsZShuYW1lLCAwLCAwLCAmc3RhdHVz
KTsKLSAgY29uc3QgU3RyaW5nIG5hbWVfc3RyKHN0YXR1cyA9PSAwID8gcmVhZGFibGVfbmFtZSA6
IG5hbWUpOworIyAgIGlmIEdURVNUX0hBU19DWFhBQklfSF8KKyAgdXNpbmcgYWJpOjpfX2N4YV9k
ZW1hbmdsZTsKKyMgICBlbmRpZiAgLy8gR1RFU1RfSEFTX0NYWEFCSV9IXworICBjaGFyKiBjb25z
dCByZWFkYWJsZV9uYW1lID0gX19jeGFfZGVtYW5nbGUobmFtZSwgMCwgMCwgJnN0YXR1cyk7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIG5hbWVfc3RyKHN0YXR1cyA9PSAwID8gcmVhZGFibGVfbmFtZSA6
IG5hbWUpOwogICBmcmVlKHJlYWRhYmxlX25hbWUpOwotICByZXR1cm4gbmFtZV9zdHI7Ci0jZWxz
ZQorICByZXR1cm4gQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZyhuYW1lX3N0cik7Cisj
ICBlbHNlCiAgIHJldHVybiBuYW1lOwotI2VuZGlmICAvLyBfX0dMSUJDWFhfXworIyAgZW5kaWYg
IC8vIEdURVNUX0hBU19DWFhBQklfSF8gfHwgX19IUF9hQ0MKKworIyBlbHNlCiAKLSNlbHNlCiAg
IHJldHVybiAiPHR5cGU+IjsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1JUVEkKKworIyBlbmRpZiAg
Ly8gR1RFU1RfSEFTX1JUVEkKIH0KIAorI2lmIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNU
X0hBU19UWVBFRF9URVNUX1AKKworLy8gQXNzZXJ0eVR5cGVFcTxUMSwgVDI+Ojp0eXBlIGlzIGRl
ZmluZWQgaWZmIFQxIGFuZCBUMiBhcmUgdGhlIHNhbWUKKy8vIHR5cGUuICBUaGlzIGNhbiBiZSB1
c2VkIGFzIGEgY29tcGlsZS10aW1lIGFzc2VydGlvbiB0byBlbnN1cmUgdGhhdAorLy8gdHdvIHR5
cGVzIGFyZSBlcXVhbC4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3N0
cnVjdCBBc3NlcnRUeXBlRXE7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEFzc2Vy
dFR5cGVFcTxULCBUPiB7CisgIHR5cGVkZWYgYm9vbCB0eXBlOworfTsKKwogLy8gQSB1bmlxdWUg
dHlwZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgYXJndW1lbnRzIG9mIGNsYXNz
CiAvLyB0ZW1wbGF0ZSBUeXBlcy4gIFRoaXMgYWxsb3dzIHVzIHRvIHNpbXVsYXRlIHZhcmlhZGlj
IHRlbXBsYXRlcwogLy8gKGUuZy4gVHlwZXM8aW50PiwgVHlwZTxpbnQsIGRvdWJsZT4sIGFuZCBl
dGMpLCB3aGljaCBDKysgZG9lc24ndApAQCAtMTYxMSw3ICsxNjM2LDcgQEAgc3RydWN0IFR5cGVz
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywg
VDE0LCBUMTUsCiAKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKLSNkZWZpbmUgR1RFU1RfVEVNUExB
VEVfIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcworIyBkZWZpbmUgR1RFU1RfVEVNUExBVEVf
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcwogCiAvLyBUaGUgdGVtcGxhdGUgInNlbGVjdG9y
IiBzdHJ1Y3QgVGVtcGxhdGVTZWw8VG1wbD4gaXMgdXNlZCB0bwogLy8gcmVwcmVzZW50IFRtcGws
IHdoaWNoIG11c3QgYmUgYSBjbGFzcyB0ZW1wbGF0ZSB3aXRoIG9uZSB0eXBlCkBAIC0xNjI5LDcg
KzE2NTQsNyBAQCBzdHJ1Y3QgVGVtcGxhdGVTZWwgewogICB9OwogfTsKIAotI2RlZmluZSBHVEVT
VF9CSU5EXyhUbXBsU2VsLCBUKSBcCisjIGRlZmluZSBHVEVTVF9CSU5EXyhUbXBsU2VsLCBUKSBc
CiAgIFRtcGxTZWw6OnRlbXBsYXRlIEJpbmQ8VD46OnR5cGUKIAogLy8gQSB1bmlxdWUgc3RydWN0
IHRlbXBsYXRlIHVzZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZQpAQCAtMzI5MSw3ICsz
MzE2LDkgQEAgc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKIC8vIElOU1RBTlRJQVRFX1RZUEVEX1RFU1Rf
Q0FTRV9QKCkuCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IFR5cGVMaXN0IHsgdHlw
ZWRlZiBUeXBlczE8VD4gdHlwZTsgfTsKK3N0cnVjdCBUeXBlTGlzdCB7CisgIHR5cGVkZWYgVHlw
ZXMxPFQ+IHR5cGU7Cit9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0
eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAogICAgIHR5cGVuYW1lIFQ2LCB0
eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCkBAIC0z
MzEzLDkgKzMzNDAsOSBAQCBzdHJ1Y3QgVHlwZUxpc3Q8VHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAogICAgICAgVDQxLCBUNDIsIFQ0
MywgVDQ0LCBUNDUsIFQ0NiwgVDQ3LCBUNDgsIFQ0OSwgVDUwPjo6dHlwZSB0eXBlOwogfTsKIAor
I2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9Q
CisKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAot
I2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9Q
Ci0KICNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UWVBFX1VU
SUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgucHVtcAppbmRleCA1YWVk
MWU1NTQ0ZmEyZGExNTg5NzM0Y2JjM2I0MTQxYjU4N2ExZjMyLi4wMDAxYTVkMzlkZmE2ZDI0Yzdj
NDFhMTZhMTVmMmUyYTVjZTk0OWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oLnB1bXAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0
aWwuaC5wdW1wCkBAIC0yOCw4ICsyOCw3IEBAICR2YXIgbiA9IDUwICAkJCBNYXhpbXVtIGxlbmd0
aCBvZiB0eXBlIGxpc3RzIHdlIHdhbnQgdG8gc3VwcG9ydC4KIC8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29t
IChaaGFueW9uZyBXYW4pCisKIAogLy8gVHlwZSB1dGlsaXRpZXMgbmVlZGVkIGZvciBpbXBsZW1l
bnRpbmcgdHlwZWQgYW5kIHR5cGUtcGFyYW1ldGVyaXplZAogLy8gdGVzdHMuICBUaGlzIGZpbGUg
aXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBULiAgRE8gTk9UIEVESVQgQlkgSEFORCEKQEAgLTM5LDU4
ICszOCw4NCBAQCAkdmFyIG4gPSA1MCAgJCQgTWF4aW11bSBsZW5ndGggb2YgdHlwZSBsaXN0cyB3
ZSB3YW50IHRvIHN1cHBvcnQuCiAvLyBQbGVhc2UgY29udGFjdCBnb29nbGV0ZXN0ZnJhbWV3b3Jr
QGdvb2dsZWdyb3Vwcy5jb20gaWYgeW91IG5lZWQKIC8vIG1vcmUuCiAKKy8vIEdPT0dMRVRFU1Rf
Q00wMDAxIERPIE5PVCBERUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVS
TkFMX0dURVNUX1RZUEVfVVRJTF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVS
TkFMX0dURVNUX1RZUEVfVVRJTF9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
cG9ydC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oPgotCi0jaWYg
R1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorI2luY2x1ZGUg
Imd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKIAogLy8gI2lmZGVmIF9fR05VQ19fIGlzIHRv
byBnZW5lcmFsIGhlcmUuICBJdCBpcyBwb3NzaWJsZSB0byB1c2UgZ2NjIHdpdGhvdXQgdXNpbmcK
IC8vIGxpYnN0ZGMrKyAod2hpY2ggaXMgd2hlcmUgY3h4YWJpLmggY29tZXMgZnJvbSkuCi0jaWZk
ZWYgX19HTElCQ1hYX18KLSNpbmNsdWRlIDxjeHhhYmkuaD4KLSNlbmRpZiAgLy8gX19HTElCQ1hY
X18KKyMgaWYgR1RFU1RfSEFTX0NYWEFCSV9IXworIyAgaW5jbHVkZSA8Y3h4YWJpLmg+CisjIGVs
aWYgZGVmaW5lZChfX0hQX2FDQykKKyMgIGluY2x1ZGUgPGFjeHhfZGVtYW5nbGUuaD4KKyMgZW5k
aWYgIC8vIEdURVNUX0hBU0hfQ1hYQUJJX0hfCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVz
cGFjZSBpbnRlcm5hbCB7CiAKLS8vIEFzc2VydHlUeXBlRXE8VDEsIFQyPjo6dHlwZSBpcyBkZWZp
bmVkIGlmZiBUMSBhbmQgVDIgYXJlIHRoZSBzYW1lCi0vLyB0eXBlLiAgVGhpcyBjYW4gYmUgdXNl
ZCBhcyBhIGNvbXBpbGUtdGltZSBhc3NlcnRpb24gdG8gZW5zdXJlIHRoYXQKLS8vIHR3byB0eXBl
cyBhcmUgZXF1YWwuCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1zdHJ1
Y3QgQXNzZXJ0VHlwZUVxOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBBc3NlcnRU
eXBlRXE8VCwgVD4gewotICB0eXBlZGVmIGJvb2wgdHlwZTsKLX07CisvLyBDYW5vbmljYWxpemVz
IGEgZ2l2ZW4gbmFtZSB3aXRoIHJlc3BlY3QgdG8gdGhlIFN0YW5kYXJkIEMrKyBMaWJyYXJ5Lgor
Ly8gVGhpcyBoYW5kbGVzIHJlbW92aW5nIHRoZSBpbmxpbmUgbmFtZXNwYWNlIHdpdGhpbiBgc3Rk
YCB0aGF0IGlzCisvLyB1c2VkIGJ5IHZhcmlvdXMgc3RhbmRhcmQgbGlicmFyaWVzIChlLmcuLCBg
c3RkOjpfXzFgKS4gIE5hbWVzIG91dHNpZGUKKy8vIG9mIG5hbWVzcGFjZSBzdGQgYXJlIHJldHVy
bmVkIHVubW9kaWZpZWQuCitpbmxpbmUgc3RkOjpzdHJpbmcgQ2Fub25pY2FsaXplRm9yU3RkTGli
VmVyc2lvbmluZyhzdGQ6OnN0cmluZyBzKSB7CisgIHN0YXRpYyBjb25zdCBjaGFyIHByZWZpeFtd
ID0gInN0ZDo6X18iOworICBpZiAocy5jb21wYXJlKDAsIHN0cmxlbihwcmVmaXgpLCBwcmVmaXgp
ID09IDApIHsKKyAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGVuZCA9IHMuZmluZCgiOjoiLCBz
dHJsZW4ocHJlZml4KSk7CisgICAgaWYgKGVuZCAhPSBzLm5wb3MpIHsKKyAgICAgIC8vIEVyYXNl
IGV2ZXJ5dGhpbmcgYmV0d2VlbiB0aGUgaW5pdGlhbCBgc3RkYCBhbmQgdGhlIHNlY29uZCBgOjpg
LgorICAgICAgcy5lcmFzZShzdHJsZW4oInN0ZCIpLCBlbmQgLSBzdHJsZW4oInN0ZCIpKTsKKyAg
ICB9CisgIH0KKyAgcmV0dXJuIHM7Cit9CiAKIC8vIEdldFR5cGVOYW1lPFQ+KCkgcmV0dXJucyBh
IGh1bWFuLXJlYWRhYmxlIG5hbWUgb2YgdHlwZSBULgorLy8gTkI6IFRoaXMgZnVuY3Rpb24gaXMg
YWxzbyB1c2VkIGluIEdvb2dsZSBNb2NrLCBzbyBkb24ndCBtb3ZlIGl0IGluc2lkZSBvZgorLy8g
dGhlIHR5cGVkLXRlc3Qtb25seSBzZWN0aW9uIGJlbG93LgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1TdHJpbmcgR2V0VHlwZU5hbWUoKSB7Ci0jaWYgR1RFU1RfSEFTX1JUVEkKK3N0ZDo6c3RyaW5n
IEdldFR5cGVOYW1lKCkgeworIyBpZiBHVEVTVF9IQVNfUlRUSQogCiAgIGNvbnN0IGNoYXIqIGNv
bnN0IG5hbWUgPSB0eXBlaWQoVCkubmFtZSgpOwotI2lmZGVmIF9fR0xJQkNYWF9fCisjICBpZiBH
VEVTVF9IQVNfQ1hYQUJJX0hfIHx8IGRlZmluZWQoX19IUF9hQ0MpCiAgIGludCBzdGF0dXMgPSAw
OwogICAvLyBnY2MncyBpbXBsZW1lbnRhdGlvbiBvZiB0eXBlaWQoVCkubmFtZSgpIG1hbmdsZXMg
dGhlIHR5cGUgbmFtZSwKICAgLy8gc28gd2UgaGF2ZSB0byBkZW1hbmdsZSBpdC4KLSAgY2hhciog
Y29uc3QgcmVhZGFibGVfbmFtZSA9IGFiaTo6X19jeGFfZGVtYW5nbGUobmFtZSwgMCwgMCwgJnN0
YXR1cyk7Ci0gIGNvbnN0IFN0cmluZyBuYW1lX3N0cihzdGF0dXMgPT0gMCA/IHJlYWRhYmxlX25h
bWUgOiBuYW1lKTsKKyMgICBpZiBHVEVTVF9IQVNfQ1hYQUJJX0hfCisgIHVzaW5nIGFiaTo6X19j
eGFfZGVtYW5nbGU7CisjICAgZW5kaWYgIC8vIEdURVNUX0hBU19DWFhBQklfSF8KKyAgY2hhciog
Y29uc3QgcmVhZGFibGVfbmFtZSA9IF9fY3hhX2RlbWFuZ2xlKG5hbWUsIDAsIDAsICZzdGF0dXMp
OworICBjb25zdCBzdGQ6OnN0cmluZyBuYW1lX3N0cihzdGF0dXMgPT0gMCA/IHJlYWRhYmxlX25h
bWUgOiBuYW1lKTsKICAgZnJlZShyZWFkYWJsZV9uYW1lKTsKLSAgcmV0dXJuIG5hbWVfc3RyOwot
I2Vsc2UKKyAgcmV0dXJuIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcobmFtZV9zdHIp
OworIyAgZWxzZQogICByZXR1cm4gbmFtZTsKLSNlbmRpZiAgLy8gX19HTElCQ1hYX18KKyMgIGVu
ZGlmICAvLyBHVEVTVF9IQVNfQ1hYQUJJX0hfIHx8IF9fSFBfYUNDCisKKyMgZWxzZQogCi0jZWxz
ZQogICByZXR1cm4gIjx0eXBlPiI7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19SVFRJCisKKyMgZW5k
aWYgIC8vIEdURVNUX0hBU19SVFRJCiB9CiAKKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBH
VEVTVF9IQVNfVFlQRURfVEVTVF9QCisKKy8vIEFzc2VydHlUeXBlRXE8VDEsIFQyPjo6dHlwZSBp
cyBkZWZpbmVkIGlmZiBUMSBhbmQgVDIgYXJlIHRoZSBzYW1lCisvLyB0eXBlLiAgVGhpcyBjYW4g
YmUgdXNlZCBhcyBhIGNvbXBpbGUtdGltZSBhc3NlcnRpb24gdG8gZW5zdXJlIHRoYXQKKy8vIHR3
byB0eXBlcyBhcmUgZXF1YWwuCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+
CitzdHJ1Y3QgQXNzZXJ0VHlwZUVxOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBB
c3NlcnRUeXBlRXE8VCwgVD4geworICB0eXBlZGVmIGJvb2wgdHlwZTsKK307CisKIC8vIEEgdW5p
cXVlIHR5cGUgdXNlZCBhcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGFyZ3VtZW50cyBvZiBj
bGFzcwogLy8gdGVtcGxhdGUgVHlwZXMuICBUaGlzIGFsbG93cyB1cyB0byBzaW11bGF0ZSB2YXJp
YWRpYyB0ZW1wbGF0ZXMKIC8vIChlLmcuIFR5cGVzPGludD4sIFR5cGU8aW50LCBkb3VibGU+LCBh
bmQgZXRjKSwgd2hpY2ggQysrIGRvZXNuJ3QKQEAgLTE2OSw3ICsxOTQsNyBAQCBzdHJ1Y3QgVHlw
ZXM8JGZvciBqLCBbW1Qkal1dJGZvciBrW1ssIGludGVybmFsOjpOb25lXV0+IHsKIAogbmFtZXNw
YWNlIGludGVybmFsIHsKIAotI2RlZmluZSBHVEVTVF9URU1QTEFURV8gdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGNsYXNzCisjIGRlZmluZSBHVEVTVF9URU1QTEFURV8gdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGNsYXNzCiAKIC8vIFRoZSB0ZW1wbGF0ZSAic2VsZWN0b3IiIHN0cnVjdCBUZW1wbGF0ZVNl
bDxUbXBsPiBpcyB1c2VkIHRvCiAvLyByZXByZXNlbnQgVG1wbCwgd2hpY2ggbXVzdCBiZSBhIGNs
YXNzIHRlbXBsYXRlIHdpdGggb25lIHR5cGUKQEAgLTE4Nyw3ICsyMTIsNyBAQCBzdHJ1Y3QgVGVt
cGxhdGVTZWwgewogICB9OwogfTsKIAotI2RlZmluZSBHVEVTVF9CSU5EXyhUbXBsU2VsLCBUKSBc
CisjIGRlZmluZSBHVEVTVF9CSU5EXyhUbXBsU2VsLCBUKSBcCiAgIFRtcGxTZWw6OnRlbXBsYXRl
IEJpbmQ8VD46OnR5cGUKIAogLy8gQSB1bmlxdWUgc3RydWN0IHRlbXBsYXRlIHVzZWQgYXMgdGhl
IGRlZmF1bHQgdmFsdWUgZm9yIHRoZQpAQCAtMjcwLDcgKzI5NSw5IEBAIHN0cnVjdCBUZW1wbGF0
ZXM8JGZvciBqLCBbW1Qkal1dJGZvciBrW1ssIE5vbmVUXV0+IHsKIC8vIElOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QKCkuCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IFR5cGVM
aXN0IHsgdHlwZWRlZiBUeXBlczE8VD4gdHlwZTsgfTsKK3N0cnVjdCBUeXBlTGlzdCB7CisgIHR5
cGVkZWYgVHlwZXMxPFQ+IHR5cGU7Cit9OwogCiAKICRyYW5nZSBpIDEuLm4KQEAgLTI3OSw5ICsz
MDYsOSBAQCBzdHJ1Y3QgVHlwZUxpc3Q8VHlwZXM8JGZvciBpLCBbW1QkaV1dPiA+IHsKICAgdHlw
ZWRlZiB0eXBlbmFtZSBUeXBlczwkZm9yIGksIFtbVCRpXV0+Ojp0eXBlIHR5cGU7CiB9OwogCisj
ZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AK
KwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCi0j
ZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AK
LQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RZUEVfVVRJ
TF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbWFrZS9NYWtlZmlsZSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21ha2UvTWFrZWZpbGUKaW5kZXggNWIyN2I2YTJjYmIx
M2UzODBlZTc1ZDE4NmY1NTNiZmI1ZmExNDRiNS4uOWFjNzQ0OTNiYTU1MjQ2NTk3ZTkwYjg5OGZh
ZTg0N2FlMzU4ZWFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbWFrZS9N
YWtlZmlsZQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tYWtlL01ha2VmaWxlCkBAIC0y
MCwxMCArMjAsMTIgQEAgR1RFU1RfRElSID0gLi4KIFVTRVJfRElSID0gLi4vc2FtcGxlcwogCiAj
IEZsYWdzIHBhc3NlZCB0byB0aGUgcHJlcHJvY2Vzc29yLgotQ1BQRkxBR1MgKz0gLUkkKEdURVNU
X0RJUikvaW5jbHVkZQorIyBTZXQgR29vZ2xlIFRlc3QncyBoZWFkZXIgZGlyZWN0b3J5IGFzIGEg
c3lzdGVtIGRpcmVjdG9yeSwgc3VjaCB0aGF0CisjIHRoZSBjb21waWxlciBkb2Vzbid0IGdlbmVy
YXRlIHdhcm5pbmdzIGluIEdvb2dsZSBUZXN0IGhlYWRlcnMuCitDUFBGTEFHUyArPSAtaXN5c3Rl
bSAkKEdURVNUX0RJUikvaW5jbHVkZQogCiAjIEZsYWdzIHBhc3NlZCB0byB0aGUgQysrIGNvbXBp
bGVyLgotQ1hYRkxBR1MgKz0gLWcgLVdhbGwgLVdleHRyYQorQ1hYRkxBR1MgKz0gLWcgLVdhbGwg
LVdleHRyYSAtcHRocmVhZAogCiAjIEFsbCB0ZXN0cyBwcm9kdWNlZCBieSB0aGlzIE1ha2VmaWxl
LiAgUmVtZW1iZXIgdG8gYWRkIG5ldyB0ZXN0cyB5b3UKICMgY3JlYXRlZCB0byB0aGUgbGlzdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC1tZC5z
bG4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QtbWQuc2xuCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmUzNmIzM2I2MjE1YzM3NGFmYzExNmI1MjA4NGIxNmY0MTQ4ODA0N2EKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QtbWQuc2xu
CkBAIC0wLDAgKzEsNTUgQEAKK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUs
IEZvcm1hdCBWZXJzaW9uIDExLjAwCisjIFZpc3VhbCBDKysgRXhwcmVzcyAyMDEwCitQcm9qZWN0
KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0LW1kIiwg
Imd0ZXN0LW1kLnZjeHByb2oiLCAie0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJF
OH0iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5
MUJDOTQyfSIpID0gImd0ZXN0X21haW4tbWQiLCAiZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qIiwgInsz
QUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9IgorRW5kUHJvamVjdAorUHJvamVj
dCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdF9wcm9k
X3Rlc3QtbWQiLCAiZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjeHByb2oiLCAiezI0ODQ4NTUxLUVGNEYt
NDdFOC05QTlELUVBNEQ0OUJDM0VDQn0iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgt
OEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0X3VuaXR0ZXN0LW1kIiwgImd0
ZXN0X3VuaXR0ZXN0LW1kLnZjeHByb2oiLCAiezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUw
RUQ0ODFBMn0iCitFbmRQcm9qZWN0CitHbG9iYWwKKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29u
ZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbgorCQlEZWJ1Z3xXaW4zMiA9IERlYnVn
fFdpbjMyCisJCURlYnVnfHg2NCA9IERlYnVnfHg2NAorCQlSZWxlYXNlfFdpbjMyID0gUmVsZWFz
ZXxXaW4zMgorCQlSZWxlYXNlfHg2NCA9IFJlbGVhc2V8eDY0CisJRW5kR2xvYmFsU2VjdGlvbgor
CUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0
aW9uCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LkRlYnVnfFdpbjMy
LkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0
MjNCMzFCRTh9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7QzhGNkMxNzIt
NTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8
eDY0CisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LkRlYnVnfHg2NC5C
dWlsZC4wID0gRGVidWd8eDY0CisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFC
RTh9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QzhGNkMxNzIt
NTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxl
YXNlfFdpbjMyCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LlJlbGVh
c2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVG
QS1DM0I0MjNCMzFCRTh9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7M0FG
NTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcg
PSBEZWJ1Z3xXaW4zMgorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5E
ZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05
MTQ3LUY2OEVEOTg2MjAzM30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7M0FG
NTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERl
YnVnfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5SZWxlYXNl
fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05
MTQ3LUY2OEVEOTg2MjAzM30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgor
CQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5SZWxlYXNlfHg2NC5BY3Rp
dmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYy
MDMzfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezI0ODQ4NTUxLUVGNEYt
NDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2lu
MzIKKwkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uRGVidWd8V2luMzIu
QnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlC
QzNFQ0J9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezI0ODQ4NTUxLUVGNEYt
NDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJ
ezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uUmVsZWFzZXxXaW4zMi5BY3Rp
dmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlC
QzNFQ0J9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezI0ODQ4NTUx
LUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVs
ZWFzZXx4NjQKKwkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uUmVsZWFz
ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1G
NEVFMEVENDgxQTJ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXs0RDlG
REZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTJ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBE
ZWJ1Z3xXaW4zMgorCQl7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfS5EZWJ1
Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1G
NEVFMEVENDgxQTJ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXs0RDlGREZCNS05
ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTJ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVs
ZWFzZXxXaW4zMgorCQl7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfS5SZWxl
YXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzkt
ODIzQy1GNEVFMEVENDgxQTJ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJ
CXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTJ9LlJlbGVhc2V8eDY0LkJ1aWxk
LjAgPSBSZWxlYXNlfHg2NAorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKFNvbHV0
aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbgorCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UK
KwlFbmRHbG9iYWxTZWN0aW9uCitFbmRHbG9iYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC1tZC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1kLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTZhNmZmMTJmN2I1
NzkwMTVhYmIxNDE1ODBlMmYyZDRmZGE2ZjljMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC1tZC52Y3hwcm9qCkBAIC0wLDAgKzEsMTQ5
IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3Qg
RGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9z
Y2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3Jv
dXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0
aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9D
b25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1By
b2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJE
ZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+Cisg
ICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9u
PgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAg
ICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZv
cm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFBy
b2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1
cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0
Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFBy
b3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57QzhGNkMxNzIt
NTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU4fTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+
V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVj
dD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQ
cm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlv
blR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNl
dD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1Bs
YXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFi
ZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5
PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFj
dGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8
L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+
CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBl
PgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRm
b3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25U
eXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+
TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0
Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZD
VGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJl
bD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMy
JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJl
eGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+Cisg
IDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIg
Q29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1w
b3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8
SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0i
IC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0
cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQo
UGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0
YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0i
VXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNp
b24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29s
dXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9P
dXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+Cisg
ICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0k
KENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpJChQcm9q
ZWN0TmFtZSlcPC9JbnREaXI+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4K
KyAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQo
Q29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERpcikkKFByb2plY3RO
YW1lKVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdGQ8L1RhcmdldE5hbWU+CisgIDwv
UHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlv
bkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERp
cj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxU
YXJnZXROYW1lPmd0ZXN0PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9w
ZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdGQ8L1RhcmdldE5hbWU+CisgIDwvUHJv
cGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3Q8
L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
PgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6
YXRpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01B
WD0xMDtfREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+
CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGlt
ZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1
bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21w
aWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Cisg
ICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxp
bmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgorICA8L0l0
ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPENsQ29tcGls
ZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElC
OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAg
ICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hl
Y2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGlt
ZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVk
SGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAg
IDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlv
bkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1
ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGliIC8+CisgIDwvSXRlbURl
ZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGls
ZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEw
O05ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1l
TGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRI
ZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAg
PERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVk
ZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWIgLz4KKyAgPC9JdGVtRGVm
aW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPENsQ29tcGlsZT4K
KyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05E
RUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGli
cmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFk
ZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9y
bWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsu
LlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWIgLz4KKyAgPC9JdGVtRGVmaW5p
dGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5c
c3JjXGd0ZXN0LWFsbC5jYyI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+
Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4u
LjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0
JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4K
KyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0
cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBv
cnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QtbWQudmN4cHJvai5m
aWx0ZXJzIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1kLnZjeHBy
b2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWVkZWZmMjMwNmUxZmFjOTNlNzdjNTUzZjA1NmI3MGZk
MmE2ODU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8y
MDEwL2d0ZXN0LW1kLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDE4IEBACivvu788P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0
LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxk
LzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVz
Ij4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMy
RDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y3h4
O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+
CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50
aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50
aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVu
c2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXGd0ZXN0LWFsbC5jYyI+CisgICAgICA8Rmls
dGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91
cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3Quc2xuIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LnNsbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYWNkNWMwY2U2Yjkz
Mjg2YmE1MjcwZjgzMTFmN2Q2NDkyMWUwMmU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LnNsbgpAQCAtMCwwICsxLDU1IEBACitNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMS4wMAor
IyBWaXN1YWwgQysrIEV4cHJlc3MgMjAxMAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04
RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdCIsICJndGVzdC52Y3hwcm9qIiwgIntDOEY2QzE3
Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhC
QzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdF9tYWluIiwgImd0
ZXN0X21haW4udmN4cHJvaiIsICJ7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMy
fSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkx
QkM5NDJ9IikgPSAiZ3Rlc3RfdW5pdHRlc3QiLCAiZ3Rlc3RfdW5pdHRlc3QudmN4cHJvaiIsICJ7
NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUExfSIKK0VuZFByb2plY3QKK1Byb2pl
Y3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3RfcHJv
ZF90ZXN0IiwgImd0ZXN0X3Byb2RfdGVzdC52Y3hwcm9qIiwgInsyNDg0ODU1MS1FRjRGLTQ3RTgt
OUE5RC1FQTRENDlCQzNFQ0F9IgorRW5kUHJvamVjdAorR2xvYmFsCisJR2xvYmFsU2VjdGlvbihT
b2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24KKwkJRGVidWd8V2lu
MzIgPSBEZWJ1Z3xXaW4zMgorCQlEZWJ1Z3x4NjQgPSBEZWJ1Z3x4NjQKKwkJUmVsZWFzZXxXaW4z
MiA9IFJlbGVhc2V8V2luMzIKKwkJUmVsZWFzZXx4NjQgPSBSZWxlYXNlfHg2NAorCUVuZEdsb2Jh
bFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uUGxhdGZvcm1zKSA9
IHBvc3RTb2x1dGlvbgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fS5E
ZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7QzhGNkMxNzItNTZGMi00RTc2
LUI1RkEtQzNCNDIzQjMxQkU3fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJ
e0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30uRGVidWd8eDY0LkFjdGl2ZUNm
ZyA9IERlYnVnfHg2NAorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fS5E
ZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEt
QzNCNDIzQjMxQkU3fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJ
e0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30uUmVsZWFzZXxXaW4zMi5CdWls
ZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMx
QkU3fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7QzhGNkMxNzItNTZG
Mi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4
NjQKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uRGVidWd8V2luMzIu
QWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVE
OTg2MjAzMn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXszQUY1NEM4QS0x
MEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzJ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4
NjQKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uRGVidWd8eDY0LkJ1
aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAz
Mn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXszQUY1NEM4QS0x
MEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzJ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVh
c2V8V2luMzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uUmVsZWFz
ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3
LUY2OEVEOTg2MjAzMn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXs0RDlG
REZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9
IERlYnVnfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9LkRl
YnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7NEQ5RkRGQjUtOTg2QS00MTM5LTgy
M0MtRjRFRTBFRDQ4MUExfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXs0RDlG
REZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVi
dWd8eDY0CisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9LlJlbGVhc2V8
V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7NEQ5RkRGQjUtOTg2QS00MTM5LTgy
M0MtRjRFRTBFRDQ4MUExfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJ
CXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9LlJlbGVhc2V8eDY0LkFjdGl2
ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgx
QTF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7MjQ4NDg1NTEtRUY0Ri00
N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4z
MgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfS5EZWJ1Z3xXaW4zMi5C
dWlsZC4wID0gRGVidWd8V2luMzIKKwkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJD
M0VDQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7MjQ4NDg1NTEtRUY0Ri00
N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7
MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfS5SZWxlYXNlfFdpbjMyLkFjdGl2
ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJD
M0VDQX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7MjQ4NDg1NTEt
RUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxl
YXNlfHg2NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfS5SZWxlYXNl
fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2Vj
dGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24KKwkJSGlkZVNvbHV0aW9uTm9k
ZSA9IEZBTFNFCisJRW5kR2xvYmFsU2VjdGlvbgorRW5kR2xvYmFsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QudmN4cHJvaiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0NmY1Yzdh
ZjI0NTM4ZDM5OGMzNjI2YzhlY2NlOTE0OGM5NmYwMWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QudmN4cHJvagpAQCAtMCwwICsxLDE0
OSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0
IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8v
c2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdy
b3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJh
dGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Zzwv
Q29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Q
cm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0i
RGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgor
ICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlv
bj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+Cisg
ICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRm
b3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmln
dXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxh
dGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQ
cm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0M4RjZDMTcy
LTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN308L1Byb2plY3RHdWlkPgorICAgIDxLZXl3b3Jk
PldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8
UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRp
b25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJT
ZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9Q
bGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExh
YmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFy
eTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJh
Y3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAg
PC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24i
PgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlw
ZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0
Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+Cisg
IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9u
VHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0
Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxh
dGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChW
Q1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFi
ZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJS
b290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0i
ZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJv
cHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgor
ICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9q
ZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMi
IENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0lt
cG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAg
PEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3Jt
IiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVl
dHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4k
KFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilc
TWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERh
dGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9
IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJz
aW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8T3V0RGlyIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKFNv
bHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwv
T3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnRE
aXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRm
b3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIp
dGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJv
cGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQ
bGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGly
KXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RkPC9U
YXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8
T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmln
dXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5h
bWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0PC9UYXJnZXROYW1lPgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdGQ8
L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Cisg
ICAgPFRhcmdldE5hbWU+Z3Rlc3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAg
PEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0
aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtfREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmlu
aXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+
dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZh
c3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0
aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVy
PgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwz
PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29u
dGludWU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+Cisg
ICAgPExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0
JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGlt
aXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNf
TUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNr
czwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFk
ZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAg
ICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5p
bmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwv
RGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGli
IC8+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+
CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtf
VkFSSUFESUNfTUFYPTEwO05ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9Q
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVh
ZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xl
dmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWIgLz4K
KyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAg
PENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFE
SUNfTUFYPTEwO05ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9S
dW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29t
cGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgor
ICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9y
bWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5c
aW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWIgLz4KKyAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cLi5cc3JjXGd0ZXN0LWFsbC5jYyI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0
ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5D
cHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4K
KyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QudmN4
cHJvai5maWx0ZXJzIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LnZj
eHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWVkZWZmMjMwNmUxZmFjOTNlNzdjNTUzZjA1NmI3
MGZkMmE2ODU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2
Yy8yMDEwL2d0ZXN0LnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDE4IEBACivvu788P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0
LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxk
LzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVz
Ij4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMy
RDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y3h4
O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+
CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50
aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50
aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVu
c2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXGd0ZXN0LWFsbC5jYyI+CisgICAgICA8Rmls
dGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91
cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X21haW4tbWQudmN4cHJvagpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zZDc3Mzg5NWI3MDIzZGU4NDc0MGQ2MmJiYTYzZWM5MDBmNzRjOTI3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X21h
aW4tbWQudmN4cHJvagpAQCAtMCwwICsxLDE1NCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNW
ZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Bl
ci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlv
bnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+Cisg
ICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9y
bT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJv
amVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0
aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+
CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24g
SW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9D
b25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1By
b2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJS
ZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9u
PgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJh
dGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4K
KyAgICA8UHJvamVjdEd1aWQ+ezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzM308
L1Byb2plY3RHdWlkPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0
LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmln
dXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3Vy
YXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Cisg
ICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlH
cm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29u
ZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENo
YXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0
PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdp
bjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0
aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0
ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29s
c2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3Vy
YXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0
aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAg
IDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3Jv
dXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnBy
b3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9J
bXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Cisg
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRm
b3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0
eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2Fs
QXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExh
YmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3Rz
KCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIg
TGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1w
b3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChV
c2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRp
b249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2Vy
LnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91
cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdy
b3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxl
VmVyc2lvbj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBs
YXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoT3V0RGly
KSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikk
KFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAg
ICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICA8L1Byb3Bl
cnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQo
U29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAg
IDxJbnREaXI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5h
bWU+Z3Rlc3RfbWFpbmQ8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3Bl
cnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQ
bGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGly
KSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X21haW48L1Rh
cmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxU
YXJnZXROYW1lPmd0ZXN0X21haW5kPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+Cisg
IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X21haW48L1RhcmdldE5h
bWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxD
bENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Cisg
ICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtfREVC
VUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8
QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4K
KyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJy
YXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRl
cj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVi
dWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25Gb3Jt
YXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4u
XC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgorICA8L0l0ZW1EZWZpbml0
aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAg
IDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxCYXNp
Y1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAg
ICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+
CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgor
ICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0lu
Zm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4K
KyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGliIC8+CisgIDwvSXRlbURlZmluaXRpb25H
cm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAg
IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztf
TElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4K
KyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4K
KyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Cisg
ICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5m
b3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pgor
ICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjsl
KEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWIgLz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdy
b3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztfTElC
OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAg
ICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAg
ICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAg
ICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAg
ICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWIgLz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3Vw
PgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXGd0ZXN0
X21haW4uY2MiPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uOy4uXGlu
Y2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Li47Li5caW5j
bHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li47Li5c
aW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uOy4u
XGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVt
R3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iZ3Rlc3QtbWQudmN4cHJvaiI+
CisgICAgICA8UHJvamVjdD57YzhmNmMxNzItNTZmMi00ZTc2LWI1ZmEtYzNiNDIzYjMxYmU4fTwv
UHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1w
b3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgor
ICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3Vw
PgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9tYWluLW1kLnZjeHByb2ouZmls
dGVycyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9tYWluLW1kLnZj
eHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjZjNzczY2NiMTc3NmE1OGQ2ZjRmZDY1YTE2Y2I1
MGY0MjJkMTU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2
Yy8yMDEwL2d0ZXN0X21haW4tbWQudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTggQEAKK++7
vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1Zl
cnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVy
L21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3Vy
Y2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1B
MDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5j
cHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8
L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5p
cXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5p
cXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hz
ZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3Jv
dXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3RfbWFpbi5jYyI+Cisg
ICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8
L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi52Y3hw
cm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X21haW4udmN4cHJv
agpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44ZmIyNTg5N2M4YjFjMmRiYjNjZjZjMTNlOWI0MTkzZmM5YWUwNTBiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0
X21haW4udmN4cHJvagpAQCAtMCwwICsxLDE2MiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNW
ZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Bl
ci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlv
bnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+Cisg
ICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9y
bT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJv
amVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0
aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+
CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24g
SW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9D
b25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1By
b2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJS
ZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9u
PgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJh
dGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4K
KyAgICA8UHJvamVjdEd1aWQ+ezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn08
L1Byb2plY3RHdWlkPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0
LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmln
dXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3Vy
YXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Cisg
ICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlH
cm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29u
ZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENo
YXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0
PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdp
bjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0
aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0
ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29s
c2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3Vy
YXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0
aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAg
IDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3Jv
dXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnBy
b3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9J
bXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Cisg
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRm
b3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0
eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2Fs
QXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExh
YmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3Rz
KCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIg
TGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1w
b3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChV
c2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRp
b249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2Vy
LnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91
cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdy
b3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxl
VmVyc2lvbj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBs
YXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoT3V0RGly
KXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0aW9u
RGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGly
PgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4K
KyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1
dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091
dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+
CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfbWFpbmQ8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlH
cm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNv
bHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8
SW50RGlyPiQoT3V0RGlyKXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdl
dE5hbWU+Z3Rlc3RfbWFpbjwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJv
cGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfbWFpbmQ8L1RhcmdldE5hbWU+Cisg
IDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+
Z3Rlc3RfbWFpbjwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmlu
aXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJs
ZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtf
VkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9Q
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5p
bWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwv
QmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRE
ZWJ1ZzwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8
L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdM
ZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVi
dWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
Pi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGliPgor
ICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSlkLmxpYjwvT3V0cHV0Rmls
ZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRp
b25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9P
cHRpbWl6YXRpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklB
RElDX01BWD0xMDtfREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RD
aGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRo
cmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgor
ICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9X
YXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJh
c2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAg
PExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpZC5saWI8L091
dHB1dEZpbGU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1E
ZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztfTElCOyUoUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1l
TGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxl
ZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVs
PkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJv
Z3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21w
aWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1l
KS5saWI8L091dHB1dEZpbGU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4K
KyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0xJQjslKFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8
UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJl
Y29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5p
bmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9y
bWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8
L0NsQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9q
ZWN0TmFtZSkubGliPC9PdXRwdXRGaWxlPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9u
R3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNc
Z3Rlc3RfbWFpbi5jYyI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Li47
Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4uLjsu
LlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4u
LjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+
Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAg
PEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJndGVzdC52Y3hwcm9q
Ij4KKyAgICAgIDxQcm9qZWN0PntjOGY2YzE3Mi01NmYyLTRlNzYtYjVmYS1jM2I0MjNiMzFiZTd9
PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJ
bXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+
CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3Jv
dXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X21haW4udmN4cHJvai5maWx0
ZXJzIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X21haW4udmN4cHJv
ai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyNmM3NzNjY2IxNzc2YTU4ZDZmNGZkNjVhMTZjYjUwZjQy
MmQxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIw
MTAvZ3Rlc3RfbWFpbi52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxOCBAQAor77u/PD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0i
NC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWls
ZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxl
cyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEz
MkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4
eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVy
PgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVu
dGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVu
dGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRl
bnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xndGVzdF9tYWluLmNjIj4KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdy
b3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9wcm9kX3Rlc3QtbWQudmN4
cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9wcm9kX3Rlc3Qt
bWQudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzBlNWRjZTQxMDYyM2MxNWI2OGZlYTcxOGVkOTRjNDU3
ZjA3MGY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8y
MDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qCkBAIC0wLDAgKzEsMTk5IEBACivvu788P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdl
dHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jv
c29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlBy
b2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9
IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9u
PgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1
cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgor
ICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZv
cm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9q
ZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1
cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1Bs
YXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1
cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVh
c2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8
L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAg
TGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57MjQ4NDg1NTEtRUY0Ri00N0U4LTlB
OUQtRUE0RDQ5QkMzRUNCfTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9L
ZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1Rhcmdl
dHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGlj
YXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9D
aGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+
CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0
aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25U
eXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBs
YXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4K
KyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJh
dGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJT
ZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9Q
bGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJl
bD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9D
b25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVy
U2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3Nv
ZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdz
Ij4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNo
ZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3Bw
LiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBw
RGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVs
PSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCck
KFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFi
ZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVz
ZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlv
bj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIu
cHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3Vw
PgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJv
amVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3Bz
IiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9J
bXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQ
cm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1By
b2plY3RGaWxlVmVyc2lvbj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25O
YW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
PiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
PnRydWU8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvTGlua0lu
Y3JlbWVudGFsPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlc
JChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQo
T3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+
ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlu
a0luY3JlbWVudGFsPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAg
PE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZp
Z3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlc
PC9JbnREaXI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfcHJvZF90ZXN0PC9UYXJnZXROYW1lPgor
ICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29s
dXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9P
dXREaXI+CisgICAgPEludERpcj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAg
ICA8VGFyZ2V0TmFtZT5ndGVzdF9wcm9kX3Rlc3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlH
cm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X3Byb2RfdGVz
dDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4K
KyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9wcm9kX3Rlc3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVy
dHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAg
ICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8UHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtfREVCVUc7X0NPTlNPTEU7JShQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAg
PE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGlt
ZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVu
dGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAg
IDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5p
bmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9y
bWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8
L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+
dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZp
bGU+JChPdXREaXIpZ3Rlc3RfcHJvZF90ZXN0LnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAg
ICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+
TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRp
b25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAg
PE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19DT05TT0xFOyUoUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxC
YXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgor
ICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJh
cnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAg
ICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZv
cm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+Cisg
ICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUo
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0lu
Zm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFt
RGF0YWJhc2VGaWxlPiQoT3V0RGlyKWd0ZXN0X3Byb2RfdGVzdC5wZGI8L1Byb2dyYW1EYXRhYmFz
ZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+
CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Cisg
ICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFS
SUFESUNfTUFYPTEwO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwv
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJl
YWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9Q
cmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2
ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4u
LlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+Cisg
ICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1h
dGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPE9wdGlt
aXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8RW5hYmxlQ09N
REFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPFRhcmdldE1hY2hp
bmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmlu
aXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxDbENvbXBpbGU+Cisg
ICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtOREVC
VUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmlu
aXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVM
aWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+
CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0
PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwu
LjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVi
dWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3Vi
U3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1
ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwv
RW5hYmxlQ09NREFURm9sZGluZz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91
cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rl
c3RfcHJvZF90ZXN0LmNjIj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4u
LjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4u
Oy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgICA8L1By
ZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgICA8L1ByZWNv
bXBpbGVkSGVhZGVyPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li47
Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi4u
Oy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICAgIDwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgICAgPC9Q
cmVjb21waWxlZEhlYWRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXC4uXHRlc3RccHJvZHVjdGlvbi5jYyI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3x4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
PgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgor
ICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMy
JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVy
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQn
Ij4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRl
bUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cdGVz
dFxwcm9kdWN0aW9uLmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQ
cm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Imd0ZXN0X21haW4tbWQudmN4cHJvaiI+CisgICAgICA8
UHJvamVjdD57M2FmNTRjOGEtMTBiZi00MzMyLTkxNDctZjY4ZWQ5ODYyMDMzfTwvUHJvamVjdD4K
KyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0
R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9q
ZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9wcm9kX3Rlc3QtbWQudmN4cHJvai5maWx0ZXJz
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52
Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWMzNjczMTBhZWU2MjZmNGVjOWMxZGZmZGE3MzNh
NTBmMmE1YzVlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21z
dmMvMjAxMC9ndGVzdF9wcm9kX3Rlc3QtbWQudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMjYg
QEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBU
b29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2
ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRl
PSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUt
NDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5z
aW9ucz5jcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4K
KyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAg
ICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZC
fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7
aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJ
dGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XGd0ZXN0X3Byb2Rf
dGVzdC5jYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xD
b21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxwcm9kdWN0aW9uLmNj
Ij4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+
CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cLi5cdGVzdFxwcm9kdWN0aW9uLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0Zp
bHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0MmUx
MzUxMWRmMjhhNTMyMjI0MjA1N2U3NTQxZjk2NTY3MGRkYTIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2oK
QEAgLTAsMCArMSwxOTEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04
Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4
bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAz
Ij4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJv
amVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3Vy
YXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRm
b3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0
aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29u
ZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVj
dENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVh
c2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4K
KyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJh
dGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgor
ICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0
Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRl
bUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RH
dWlkPnsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9PC9Qcm9qZWN0R3VpZD4K
KyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAg
PEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5w
cm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAg
IDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAg
PENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29s
c2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVy
dHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5B
cHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5
dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9v
bHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZp
Z3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJh
dGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAg
ICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdy
b3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmln
dXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0
ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAw
PC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0
PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91
cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0
aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3Jv
dXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0
IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Cisg
IDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4K
KyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxh
dGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0
eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2Fs
QXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBM
YWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0Rmls
ZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
PiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlv
bilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8
L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+Cisg
ICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8T3V0RGlyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
PiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlv
bilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUp
XDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRh
bD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGly
KSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgor
ICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Q
cm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9u
RGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGly
PgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAg
PC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGls
ZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfQ09O
U09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+
CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFz
aWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAg
ICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5Pgor
ICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8
V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRp
b25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgor
ICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1h
dGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFi
YXNlRmlsZT4kKE91dERpcilndGVzdF9wcm9kX3Rlc3QucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxl
PgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFj
aGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVm
aW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxDbENvbXBpbGU+Cisg
ICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8UHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtfREVCVUc7X0NPTlNPTEU7
JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAg
ICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVj
a3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGli
cmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPgor
ICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0lu
Zm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4K
KyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVn
SW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dy
YW1EYXRhYmFzZUZpbGU+JChPdXREaXIpZ3Rlc3RfcHJvZF90ZXN0LnBkYjwvUHJvZ3JhbURhdGFi
YXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGlu
az4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4K
KyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19W
QVJJQURJQ19NQVg9MTA7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMp
PC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRo
cmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1By
ZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZl
bD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4u
XC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAg
ICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0
aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8T3B0aW1p
emVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxFbmFibGVDT01E
QVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8VGFyZ2V0TWFjaGlu
ZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5p
dGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAg
ICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJV
RztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJh
cnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAg
ICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZv
cm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+Cisg
ICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUo
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0lu
Zm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0
ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9P
cHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFi
bGVDT01EQVRGb2xkaW5nPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgor
ICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxndGVzdF9w
cm9kX3Rlc3QuY2MiPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uOy4u
XGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Li47Li5c
aW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICAgIDwvUHJlY29t
cGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICAgIDwvUHJlY29tcGls
ZWRIZWFkZXI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLjsuLlxp
bmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Li47Li5c
aW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgICAgPC9QcmVj
b21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgICA8L1ByZWNv
bXBpbGVkSGVhZGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cLi5cdGVzdFxwcm9kdWN0aW9uLmNjIj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Cisg
ICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAg
ICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4K
KyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgor
ICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3Jv
dXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XHBy
b2R1Y3Rpb24uaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2pl
Y3RSZWZlcmVuY2UgSW5jbHVkZT0iZ3Rlc3RfbWFpbi52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0
PnszYWY1NGM4YS0xMGJmLTQzMzItOTE0Ny1mNjhlZDk4NjIwMzJ9PC9Qcm9qZWN0PgorICAgIDwv
UHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChW
Q1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBM
YWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2ouZmlsdGVy
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hYzM2NzMxMGFlZTYyNmY0ZWM5YzFkZmZkYTczM2E1MGYyYTVjNWVjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0
X3Byb2RfdGVzdC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwyNiBAQAor77u/PD94bWwgdmVy
c2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4w
IiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8y
MDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+
CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3
NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtk
ZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgor
ICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlm
aWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlm
aWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNp
b25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfcHJvZF90ZXN0LmNjIj4KKyAgICAg
IDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24uY2MiPgorICAgICAgPEZpbHRl
cj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+
CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XHByb2R1
Y3Rpb24uaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJ
bmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rl
c3RfdW5pdHRlc3QtbWQudmN4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAx
MC9ndGVzdF91bml0dGVzdC1tZC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzYjBkYzRlMWE0ZTAzYWU4
ZDYzZWZmMzZjNjdiZmU4MjM2NWYxODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfdW5pdHRlc3QtbWQudmN4cHJvagpAQCAtMCwwICsx
LDE4OCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9q
ZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRw
Oi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRl
bUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmln
dXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1
ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAg
PC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVk
ZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9u
PgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJh
dGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+
CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBs
YXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAg
IDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29u
ZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwv
UGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+Cisg
IDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezREOUZE
RkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn08L1Byb2plY3RHdWlkPgorICAgIDxLZXl3
b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFBy
b2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgor
ICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3Vy
YXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVy
U2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwv
UGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBM
YWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9u
PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFj
dGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8
L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+
CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4K
KyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9y
bVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQ
cm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlw
ZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0
aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3Jt
VG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJn
ZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJF
eHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBM
YWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0
cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJyki
IExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPElt
cG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0i
JChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25k
aXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51
c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRH
cm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBv
cnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2Vy
LnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4k
KFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4K
KyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4K
KyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxh
dGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2Vy
TWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4x
MC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPE91dERpciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlv
bkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERp
cj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8
TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1l
bnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2
NCciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIp
JChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Cisg
ICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8TGlu
a0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1l
bnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJv
cGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQ
bGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGly
KSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X3VuaXR0ZXN0
PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAg
ICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29u
ZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERpcikkKFByb2plY3ROYW1l
KVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF91bml0dGVzdDwvVGFyZ2V0TmFtZT4K
KyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+
Z3Rlc3RfdW5pdHRlc3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3Bl
cnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfdW5pdHRlc3Q8L1RhcmdldE5hbWU+
CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENv
bXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAg
ICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtfREVCVUc7
X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRp
b25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAg
PEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+
CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGli
cmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPgor
ICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0lu
Zm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4K
KyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVn
SW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dy
YW1EYXRhYmFzZUZpbGU+JChPdXREaXIpZ3Rlc3RfdW5pdHRlc3QucGRiPC9Qcm9ncmFtRGF0YWJh
c2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFy
Z2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxDbENvbXBp
bGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtfREVCVUc7X0NP
TlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25z
PgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRp
bWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9S
dW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVk
SGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAg
IDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlv
bkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1
ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5l
cmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAg
ICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChPdXREaXIpZ3Rlc3RfdW5pdHRlc3QucGRiPC9Qcm9n
cmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Cisg
ICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxX
aW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+
V0lOMzI7X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5
Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVh
ZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwv
V2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFi
YXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAg
IDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURl
YnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAg
ICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAg
PEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICAgIDxU
YXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8
L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8Q2xD
b21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19N
QVg9MTA7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExM
PC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBp
bGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAg
ICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1h
dGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGlu
Y2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxH
ZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgor
ICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8T3B0aW1pemVSZWZl
cmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xk
aW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZp
bml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwu
Llx0ZXN0XGd0ZXN0X3VuaXR0ZXN0LmNjIj4KKyAgICAgIDxPcHRpbWl6YXRpb24gQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPk1pblNwYWNl
PC9PcHRpbWl6YXRpb24+CisgICAgICA8T3B0aW1pemF0aW9uIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+TWluU3BhY2U8L09wdGltaXphdGlv
bj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUo
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3MgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkRlZmF1bHQ8L0Jhc2ljUnVudGltZUNoZWNr
cz4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3MgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5EZWZhdWx0PC9CYXNpY1J1bnRpbWVDaGVja3M+
CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4K
KyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAg
ICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPlByb2dyYW1EYXRhYmFz
ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMy
JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVy
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQn
Ij4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRl
bUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Imd0
ZXN0X21haW4tbWQudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57M2FmNTRjOGEtMTBiZi00MzMy
LTkxNDctZjY4ZWQ5ODYyMDMzfTwvUHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+Cisg
IDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9z
b2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdl
dHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVz
dF91bml0dGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9t
c3ZjLzIwMTAvZ3Rlc3RfdW5pdHRlc3QtbWQudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0
N2RhZTUxM2U4NjAxNTNhNWNlYzJmNDViNDhjZGJjNzVmOWI2Y2UKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfdW5pdHRlc3QtbWQudmN4
cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5j
b2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6
Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVt
R3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1
ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1
ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBq
O2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIElu
Y2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAt
ODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxF
eHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0Zp
bHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlwuLlx0ZXN0XGd0ZXN0X3VuaXR0ZXN0LmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNl
IEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9q
ZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC52Y3hwcm9qIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0LnZjeHByb2oKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWM2YWJkZTdkYTE3ZTI5ZWQyNDc2ZjcwYzY5NDE1YWU5NjhmMjFmMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC52
Y3hwcm9qCkBAIC0wLDAgKzEsMTgwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249
IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVp
bGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+Cisg
ICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxD
b25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMy
PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29u
ZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVi
dWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8
L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRl
PSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3Vy
YXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENv
bmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8
eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAg
ICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgor
ICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQ
cm9qZWN0R3VpZD57NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUExfTwvUHJvamVj
dEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3Jv
dXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRl
ZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9u
Ij4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBl
PgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRm
b3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlv
blR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+
TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0
Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVs
PSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0Nv
bmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJT
ZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJv
cGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAg
PENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8
Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xz
ZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQg
UHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1w
b3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAg
PEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9q
ZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMi
IENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0lt
cG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAg
PEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3Jt
IiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNo
ZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3Bw
LiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBw
RGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0i
UHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWlj
cm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChV
c2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVs
PSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5
R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJv
amVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8
T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZp
Z3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKXRlbXBcJChQcm9qZWN0
TmFtZSlcPC9JbnREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvTGlua0luY3JlbWVu
dGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPE91
dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZp
Z3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpdGVtcFwkKFByb2pl
Y3ROYW1lKVw8L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5j
cmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4K
KyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1
dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091
dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+
CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxPdXREaXI+JChT
b2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8
L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnRE
aXI+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxD
bENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Cisg
ICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtfREVC
VUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmlu
aXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAg
ICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVj
a3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGli
cmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPgor
ICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0lu
Zm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4K
KyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVn
SW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dy
YW1EYXRhYmFzZUZpbGU+JChPdXREaXIpZ3Rlc3RfdW5pdHRlc3QucGRiPC9Qcm9ncmFtRGF0YWJh
c2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFy
Z2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxDbENvbXBp
bGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtfREVCVUc7X0NP
TlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25z
PgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRp
bWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50
aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVh
ZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxE
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZv
cm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7
Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0
ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAg
PFByb2dyYW1EYXRhYmFzZUZpbGU+JChPdXREaXIpZ3Rlc3RfdW5pdHRlc3QucGRiPC9Qcm9ncmFt
RGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAg
PC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lO
MzI7X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11
bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVz
ZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2Fybmlu
Z0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9E
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5r
PgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5m
b3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxP
cHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPEVuYWJs
ZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICAgIDxUYXJnZXRN
YWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1E
ZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8Q2xDb21waWxl
PgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7
TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1l
TGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVy
PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1h
dD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5c
Li47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURl
YnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1
YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRy
dWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8
L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3Jv
dXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XGd0
ZXN0X3VuaXR0ZXN0LmNjIj4KKyAgICAgIDxPcHRpbWl6YXRpb24gQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPk1pblNwYWNlPC9PcHRpbWl6
YXRpb24+CisgICAgICA8T3B0aW1pemF0aW9uIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+TWluU3BhY2U8L09wdGltaXphdGlvbj4KKyAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAg
ICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAg
IDxCYXNpY1J1bnRpbWVDaGVja3MgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkRlZmF1bHQ8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAg
IDxCYXNpY1J1bnRpbWVDaGVja3MgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3x4NjQnIj5EZWZhdWx0PC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8
UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQ
cmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfHg2NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxEZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIj5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3Jt
YXQ+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPlByb2dyYW1EYXRhYmFzZTwvRGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
Pi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQn
Ij4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAg
ICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICAg
IDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgor
ICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Imd0ZXN0X21haW4u
dmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57M2FmNTRjOGEtMTBiZi00MzMyLTkxNDctZjY4ZWQ5
ODYyMDMyfTwvUHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3Vw
PgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJn
ZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0lt
cG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC52
Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3Rf
dW5pdHRlc3QudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0N2RhZTUxM2U4NjAxNTNhNWNl
YzJmNDViNDhjZGJjNzVmOWI2Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfdW5pdHRlc3QudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAg
KzEsMTggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJv
amVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5j
b20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJ
bmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0Yx
LUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8
RXh0ZW5zaW9ucz5jcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5z
aW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+
CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJF
NTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDto
bTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+
CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XGd0ZXN0
X3VuaXR0ZXN0LmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAg
PC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rl
c3QtbWQudmN4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4
cHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTAwNzhlNGFhYjY5MTcxMmExMDNj
MmViNjNlZTdkYWMxZWY0OTliZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0LW1kLnZjeHByb2oK
KysrIC9kZXYvbnVsbApAQCAtMSwzNjAgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNW
ZXJzaW9uPSIxNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9w
ZXIvbXNidWlsZC8yMDAzIj4KLSAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRp
b25zIj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWdTdWZmaXh8V2lu
MzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWdTdWZmaXg8L0NvbmZpZ3VyYXRpb24+Ci0g
ICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRp
b24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnU3VmZml4fHg2NCI+
Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Z1N1ZmZpeDwvQ29uZmlndXJhdGlvbj4KLSAgICAg
IDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0g
ICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnX1dpbkNhaXJvfFdpbjMyIj4K
LSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnX1dpbkNhaXJvPC9Db25maWd1cmF0aW9uPgotICAg
ICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9u
PgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z19XaW5DYWlyb3x4NjQi
PgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWdfV2luQ2Fpcm88L0NvbmZpZ3VyYXRpb24+Ci0g
ICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9u
PgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+Ci0gICAg
ICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5X
aW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVj
dENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9u
PkRlYnVnPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0g
ICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5j
bHVkZT0iUHJvZHVjdGlvbnxXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5Qcm9kdWN0aW9u
PC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8
L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRl
PSJQcm9kdWN0aW9ufHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5Qcm9kdWN0aW9uPC9Db25m
aWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0
Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFz
ZV9XaW5DYWlyb3xXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlX1dpbkNhaXJv
PC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8
L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRl
PSJSZWxlYXNlX1dpbkNhaXJvfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlX1dp
bkNhaXJvPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0g
ICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5j
bHVkZT0iUmVsZWFzZXxXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25m
aWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2pl
Y3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxl
YXNlfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgot
ICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlv
bj4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KLSAg
ICA8UHJvamVjdEd1aWQ+e0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH08L1By
b2plY3RHdWlkPgotICAgIDxSb290TmFtZXNwYWNlPmd0ZXN0LW1kPC9Sb290TmFtZXNwYWNlPgot
ICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KLSAgICA8V2luZG93c1RhcmdldFBsYXRm
b3JtVmVyc2lvbj44LjE8L1dpbmRvd3NUYXJnZXRQbGF0Zm9ybVZlcnNpb24+Ci0gIDwvUHJvcGVy
dHlHcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5D
cHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3Vy
YXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0
aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAg
IDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3Jv
dXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZp
Z3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFy
YWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52
MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dp
bkNhaXJvfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9u
VHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0
Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxh
dGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4
NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRp
Y0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRl
PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xz
ZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyIgTGFiZWw9IkNv
bmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25m
aWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0
PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8L1Byb3Bl
cnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0g
ICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgot
ICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3Jt
VG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFBy
b3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5
cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5N
dWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRm
b3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJD
b25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29u
ZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNl
dD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9w
ZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRp
b24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9u
VHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQ
bGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+
Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxD
b25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8
Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xz
ZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0
eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdT
dWZmaXh8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25U
eXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+
TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0
Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIiBM
YWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJh
cnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFy
YWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0g
IDwvUHJvcGVydHlHcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1p
Y3Jvc29mdC5DcHAucHJvcHMiIC8+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0
dGluZ3MiPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3Bl
cnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29m
dC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9j
YWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJy
YXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgot
ICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9q
ZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMi
IENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJ
bXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5w
cm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciIExh
YmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3Rz
KCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIg
TGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChX
ZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBv
cnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMi
PgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBs
YXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWlj
cm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQ
bGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9v
bHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0i
JChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25k
aXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51
c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0
IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMi
IC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyIgTGFiZWw9IlByb3BlcnR5
U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxB
cHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJp
ZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8
SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0
PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENv
bmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBv
cnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9w
cyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hl
ZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBE
YXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMp
XHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1w
b3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z19XaW5DYWlyb3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQ
cm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJv
cHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxh
dGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAg
IDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGNvbW1v
bi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyIgTGFi
ZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMo
JyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBM
YWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdl
YktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9y
dEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0g
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRm
b3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2
c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xp
YnJhcmllcylcdG9vbHNcdnNwcm9wc1xkZWJ1Z3N1ZmZpeC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRH
cm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8
SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0i
IC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJv
cHNcY29tbW9uLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFy
aWVzKVx0b29sc1x2c3Byb3BzXGRlYnVnc3VmZml4LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3Vw
PgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KLSAgPFByb3BlcnR5R3Jv
dXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVW
ZXJzaW9uPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChDb25maWd1cmF0aW9uQnVp
bGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWly
b3xXaW4zMiciPiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4z
MiciPiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8
L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAg
IDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfHg2NCciPiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGly
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5D
YWlyb3x4NjQnIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj4kKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0
RGlyPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5hbWU+
Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfHg2NCciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAg
PFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4K
LSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFt
ZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1l
PgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnx4NjQnIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1lPgot
ICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxU
YXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFt
ZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNh
aXJvfFdpbjMyJyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0
TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dp
bkNhaXJvfHg2NCciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdl
dE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1
ZmZpeHxXaW4zMiciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdl
dE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1
ZmZpeHx4NjQnIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5
R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAg
PE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRl
OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwv
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAg
ICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVG
YXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExp
Yj4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKWd0ZXN0JChEZWJ1Z1N1ZmZpeCkubGliPC9P
dXRwdXRGaWxlPgotICAgIDwvTGliPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlz
YWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
PiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVkZTskKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1
ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmlu
aXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmlu
aXRpb25zPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhl
YWRlcj4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNS
dW50aW1lQ2hlY2tzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWI+Ci0gICAgICA8T3V0cHV0
RmlsZT4kKE91dERpcilndGVzdCQoRGVidWdTdWZmaXgpLmxpYjwvT3V0cHV0RmlsZT4KLSAgICA8
L0xpYj4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJv
fFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8
L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJv
amVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJp
dmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25z
Pl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25z
PgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5
PgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4K
LSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1l
Q2hlY2tzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWI+Ci0gICAgICA8T3V0cHV0RmlsZT4k
KE91dERpcilndGVzdC5saWI8L091dHB1dEZpbGU+Ci0gICAgPC9MaWI+Ci0gIDwvSXRlbURlZmlu
aXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj4KLSAgICA8Q2xDb21w
aWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERp
cikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9y
d2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTsk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUo
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRl
ZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJh
cnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8UHJlY29tcGlsZWRI
ZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNo
ZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBp
bGU+Ci0gICAgPExpYj4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKWd0ZXN0LmxpYjwvT3V0
cHV0RmlsZT4KLSAgICA8L0xpYj4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURl
ZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnU3VmZml4fFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRp
b24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVkZTskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21w
aWxlZEhlYWRlcj4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwv
QmFzaWNSdW50aW1lQ2hlY2tzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWI+Ci0gICAgICA8
T3V0cHV0RmlsZT4kKE91dERpcilndGVzdCQoRGVidWdTdWZmaXgpLmxpYjwvT3V0cHV0RmlsZT4K
LSAgICA8L0xpYj4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25H
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3Vm
Zml4fHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVk
PC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFBy
b2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHBy
aXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+
Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGlt
ZUNoZWNrcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliPgotICAgICAgPE91dHB1dEZpbGU+
JChPdXREaXIpZ3Rlc3QkKERlYnVnU3VmZml4KS5saWI8L091dHB1dEZpbGU+Ci0gICAgPC9MaWI+
Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0g
ICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJv
amVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJp
dmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAg
ICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5f
TElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4K
LSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliIC8+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4K
LSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXElu
Y2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAg
ICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAg
ICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25z
KTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYiAv
PgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xX
aW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxp
bmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVjb21waWxlZEhl
YWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYiAvPgotICA8L0l0ZW1EZWZpbml0
aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj4KLSAgICA8Q2xDb21w
aWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4u
OyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1
ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFT
Y3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNv
bXBpbGVkSGVhZGVyPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xD
b21waWxlPgotICAgIDxMaWIgLz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURl
ZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1Byb2R1Y3Rpb258V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRl
OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8
UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1By
ZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAg
PC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+Ci0gICAg
PENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVj
dERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
aW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0
ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAg
PC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElC
OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAg
ICA8L0NsQ29tcGlsZT4KLSAgICA8TGliIC8+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAg
PEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC1kZWF0aC10
ZXN0LmNjIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LWZpbGVwYXRo
LmNjIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LXBvcnQuY2MiIC8+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QtdGVzdC1wYXJ0LmNjIiAvPgot
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LXR5cGVkLXRlc3QuY2MiIC8+Ci0g
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QuY2MiIC8+Ci0gIDwvSXRlbUdyb3Vw
PgotICA8SXRlbUdyb3VwPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVz
dFxpbnRlcm5hbFxndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmgiIC8+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0LWRlYXRoLXRlc3QuaCIgLz4KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rlc3QtZmlsZXBh
dGguaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC1pbnRlcm5hbC1p
bmwuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJu
YWxcZ3Rlc3QtaW50ZXJuYWwuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1
ZGVcZ3Rlc3RcZ3Rlc3QtbWVzc2FnZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1wb3J0LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0LXNwaS5oIiAvPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1zdHJpbmcuaCIgLz4KLSAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QuaCIgLz4KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3RfcHJlZF9pbXBsLmgiIC8+
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0X3Byb2QuaCIg
Lz4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxN
aWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9u
VGFyZ2V0cyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjL2d0ZXN0LW1kLnZjeHByb2ouZmlsdGVycyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4cHJvai5maWx0ZXJzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzdkMWM5YjRkY2E2YTE0ZWM3MDZiYzRhOGMxMzFmNmI1
YzgzODAwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4cHJvai5maWx0ZXJzCisrKyAv
ZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0idXRmLTgiPz4KLTxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3Nj
aGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEl0ZW1Hcm91
cD4KLSAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+Ci0gICAgICA8VW5pcXVlSWRl
bnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRl
bnRpZmllcj4KLSAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0
O2FzbTthc214PC9FeHRlbnNpb25zPgotICAgIDwvRmlsdGVyPgotICAgIDxGaWx0ZXIgSW5jbHVk
ZT0iSGVhZGVyIEZpbGVzIj4KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJE
LTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgotICAgICAgPEV4dGVu
c2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgotICAgIDwvRmlsdGVy
PgotICA8L0l0ZW1Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHNyY1xndGVzdC1kZWF0aC10ZXN0LmNjIj4KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
PC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxz
cmNcZ3Rlc3QtZmlsZXBhdGguY2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRl
cj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVz
dC1wb3J0LmNjIj4KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9D
bENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QtdGVzdC1wYXJ0
LmNjIj4KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBp
bGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3QtdHlwZWQtdGVzdC5jYyI+
Ci0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgot
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LmNjIj4KLSAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gIDwvSXRlbUdyb3VwPgot
ICA8SXRlbUdyb3VwPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxp
bnRlcm5hbFxndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmgiPgotICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtZGVhdGgtdGVzdC5oIj4KLSAgICAgIDxGaWx0ZXI+
SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LWZpbGVwYXRoLmgiPgotICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC1pbnRlcm5hbC1pbmwuaCI+Ci0gICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1pbnRlcm5hbC5o
Ij4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0LW1lc3NhZ2Uu
aCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRl
PgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVz
dC1wb3J0LmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0Ns
SW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3Qt
c3BpLmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5j
bHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxc
Z3Rlc3Qtc3RyaW5nLmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAg
ICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3Rc
Z3Rlc3QuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJ
bmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdF9w
cmVkX2ltcGwuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwv
Q2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVz
dF9wcm9kLmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0Ns
SW5jbHVkZT4KLSAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvcnVuX3Rlc3RzLnB5
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvcnVuX3Rlc3RzLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCBlMTA4NDA1NmUyM2JkZDVjZmNmNDRmMDY3NmMxZDYyOGFlNjNkNzYxLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3J1bl90ZXN0cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAK
LSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlJ1bnMgdGhlIHNw
ZWNpZmllZCB0ZXN0cyBmb3IgR29vZ2xlIFRlc3QuCi0KLVRoaXMgc2NyaXB0IHJlcXVpcmVzIFB5
dGhvbiAyLjMgb3IgaGlnaGVyLiAgVG8gbGVhcm4gdGhlIHVzYWdlLCBydW4gaXQKLXdpdGggLWgu
Ci0iIiIKLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLVNDUklQVF9ESVIgPSBvcy5wYXRoLmRp
cm5hbWUoX19maWxlX18pIG9yICcuJwotCi1zeXMucGF0aC5hcHBlbmQob3MucGF0aC5qb2luKFND
UklQVF9ESVIsICd0ZXN0JykpCi1pbXBvcnQgcnVuX3Rlc3RzX3V0aWwKLQotCi1kZWYgX01haW4o
KToKLSAgIiIiUnVucyBhbGwgdGVzdHMgZm9yIEdvb2dsZSBUZXN0LiIiIgotCi0gIG9wdGlvbnMs
IGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoJ2d0ZXN0JykKLSAgdGVzdF9ydW5uZXIg
PSBydW5fdGVzdHNfdXRpbC5UZXN0UnVubmVyKHNjcmlwdF9kaXI9U0NSSVBUX0RJUikKLSAgdGVz
dHMgPSB0ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKGFyZ3MsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25zLmNvbmZpZ3VyYXRpb25zLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5idWlsdF9jb25maWd1cmF0aW9ucykKLSAgaWYg
bm90IHRlc3RzOgotICAgIHN5cy5leGl0KDEpICAjIEluY29ycmVjdCBwYXJhbWV0ZXJzIGdpdmVu
LCBhYm9ydCBleGVjdXRpb24uCi0KLSAgc3lzLmV4aXQodGVzdF9ydW5uZXIuUnVuVGVzdHModGVz
dHNbMF0sIHRlc3RzWzFdKSkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgX01haW4o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9wcmltZV90YWJs
ZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvcHJpbWVfdGFibGVzLmgKaW5k
ZXggOTJjZTE2YTAxNDRkNTAyZmQwZTQ1YjczZjM3ZDMyYmJlZGYxYzNmMy4uNTIzYzUwYjlhZmIx
YTA5MTkxNjgwOTRkNzFmZGYzNzZiNjRhZjZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc2FtcGxlcy9wcmltZV90YWJsZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3ByaW1lX3RhYmxlcy5oCkBAIC0yNiw5ICsyNiw4IEBACiAvLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChW
bGFkIExvc2V2KQorCisKIAogLy8gVGhpcyBwcm92aWRlcyBpbnRlcmZhY2UgUHJpbWVUYWJsZSB0
aGF0IGRldGVybWluZXMgd2hldGhlciBhIG51bWJlciBpcyBhCiAvLyBwcmltZSBhbmQgZGV0ZXJt
aW5lcyBhIG5leHQgcHJpbWUgbnVtYmVyLiBUaGlzIGludGVyZmFjZSBpcyB1c2VkCkBAIC0xMDMs
MTEgKzEwMiwxNSBAQCBjbGFzcyBQcmVDYWxjdWxhdGVkUHJpbWVUYWJsZSA6IHB1YmxpYyBQcmlt
ZVRhYmxlIHsKICAgICA6OnN0ZDo6ZmlsbChpc19wcmltZV8sIGlzX3ByaW1lXyArIGlzX3ByaW1l
X3NpemVfLCB0cnVlKTsKICAgICBpc19wcmltZV9bMF0gPSBpc19wcmltZV9bMV0gPSBmYWxzZTsK
IAotICAgIGZvciAoaW50IGkgPSAyOyBpIDw9IG1heDsgaSsrKSB7CisgICAgLy8gQ2hlY2tzIGV2
ZXJ5IGNhbmRpZGF0ZSBmb3IgcHJpbWUgbnVtYmVyICh3ZSBrbm93IHRoYXQgMiBpcyB0aGUgb25s
eSBldmVuCisgICAgLy8gcHJpbWUpLgorICAgIGZvciAoaW50IGkgPSAyOyBpKmkgPD0gbWF4OyBp
ICs9IGklMisxKSB7CiAgICAgICBpZiAoIWlzX3ByaW1lX1tpXSkgY29udGludWU7CiAKICAgICAg
IC8vIE1hcmtzIGFsbCBtdWx0aXBsZXMgb2YgaSAoZXhjZXB0IGkgaXRzZWxmKSBhcyBub24tcHJp
bWUuCi0gICAgICBmb3IgKGludCBqID0gMippOyBqIDw9IG1heDsgaiArPSBpKSB7CisgICAgICAv
LyBXZSBhcmUgc3RhcnRpbmcgaGVyZSBmcm9tIGktdGggbXVsdGlwbGllciwgYmVjYXVzZSBhbGwg
c21hbGxlcgorICAgICAgLy8gY29tcGxleCBudW1iZXJzIHdlcmUgYWxyZWFkeSBtYXJrZWQuCisg
ICAgICBmb3IgKGludCBqID0gaSppOyBqIDw9IG1heDsgaiArPSBpKSB7CiAgICAgICAgIGlzX3By
aW1lX1tqXSA9IGZhbHNlOwogICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMS5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NhbXBsZXMvc2FtcGxlMS5jYwppbmRleCBmMTcxZTI2MDlkMjUxMzIyODQ2MjFmYjYyY2YzYmE4
NmUxZTY5OTI1Li4xM2NlYzFkMGZiZmFiZGFhZjFjNmM0MWIxYTg2YmMxZDA5MDg5ODNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmNjCkBAIC0yOCw4ICsyOCw2
IEBACiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogCiAvLyBBIHNhbXBsZSBwcm9ncmFtIGRlbW9uc3RyYXRpbmcg
dXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBBdXRob3I6IHdhbkBn
b29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAKICNpbmNsdWRlICJzYW1wbGUxLmgiCiAKQEAgLTU1
LDcgKzUzLDcgQEAgYm9vbCBJc1ByaW1lKGludCBuKSB7CiAKICAgLy8gVHJ5IHRvIGRpdmlkZSBu
IGJ5IGV2ZXJ5IG9kZCBudW1iZXIgaSwgc3RhcnRpbmcgZnJvbSAzCiAgIGZvciAoaW50IGkgPSAz
OyA7IGkgKz0gMikgewotICAgIC8vIFdlIG9ubHkgaGF2ZSB0byB0cnkgaSB1cCB0byB0aGUgc3F1
cmUgcm9vdCBvZiBuCisgICAgLy8gV2Ugb25seSBoYXZlIHRvIHRyeSBpIHVwIHRvIHRoZSBzcXVh
cmUgcm9vdCBvZiBuCiAgICAgaWYgKGkgPiBuL2kpIGJyZWFrOwogCiAgICAgLy8gTm93LCB3ZSBo
YXZlIGkgPD0gbi9pIDwgbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nh
bXBsZXMvc2FtcGxlMS5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUx
LmgKaW5kZXggM2RmZWI5OGM0NTAzMDE0NWY5ZWExOGQ3OTUzMWM5MWM4MWVlODQ5YS4uMmMzZTlm
MDVmMWExMGE0NDI1Zjc3YjI4NzE2ZTgwNTk2ODIxOTYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmgKQEAgLTI4LDggKzI4LDYgQEAKIC8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRl
c3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25n
IFdhbikKIAogI2lmbmRlZiBHVEVTVF9TQU1QTEVTX1NBTVBMRTFfSF8KICNkZWZpbmUgR1RFU1Rf
U0FNUExFU19TQU1QTEUxX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9z
YW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ft
cGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYwppbmRleCAzYWQ2ZmQ2NTM4MjYxN2Y3ZDZiNDAxZjRk
MWJkODNmYzg2ZWQ4NGZlLi43Y2U5NTUwZjg4M2FhMzQyZDI1YjA0ODU5M2ZhYTk2Y2FiZDhlMWZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEwX3Vu
aXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMTBf
dW5pdHRlc3QuY2MKQEAgLTI1LDggKzI1LDcgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZs
YWQgTG9zZXYpCisKIAogLy8gVGhpcyBzYW1wbGUgc2hvd3MgaG93IHRvIHVzZSBHb29nbGUgVGVz
dCBsaXN0ZW5lciBBUEkgdG8gaW1wbGVtZW50CiAvLyBhIHByaW1pdGl2ZSBsZWFrIGNoZWNrZXIu
CkBAIC0zNCwxOSArMzMsMTYgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxp
Yi5oPgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCiB1c2luZyA6OnRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXI7CiB1c2luZyA6OnRl
c3Rpbmc6OkluaXRHb29nbGVUZXN0OwogdXNpbmcgOjp0ZXN0aW5nOjpUZXN0OwotdXNpbmcgOjp0
ZXN0aW5nOjpUZXN0Q2FzZTsKIHVzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzOwog
dXNpbmcgOjp0ZXN0aW5nOjpUZXN0SW5mbzsKIHVzaW5nIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1
bHQ7CiB1c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OwogCiBuYW1lc3BhY2UgewotCiAvLyBXZSB3
aWxsIHRyYWNrIG1lbW9yeSB1c2VkIGJ5IHRoaXMgY2xhc3MuCiBjbGFzcyBXYXRlciB7CiAgcHVi
bGljOgpAQCAtODksOCArODUsNyBAQCBjbGFzcyBMZWFrQ2hlY2tlciA6IHB1YmxpYyBFbXB0eVRl
c3RFdmVudExpc3RlbmVyIHsKICAgICAvLyBZb3UgY2FuIGdlbmVyYXRlIGEgZmFpbHVyZSBpbiBh
bnkgZXZlbnQgaGFuZGxlciBleGNlcHQKICAgICAvLyBPblRlc3RQYXJ0UmVzdWx0LiBKdXN0IHVz
ZSBhbiBhcHByb3ByaWF0ZSBHb29nbGUgVGVzdCBhc3NlcnRpb24gdG8gZG8KICAgICAvLyBpdC4K
LSAgICBFWFBFQ1RfVFJVRShkaWZmZXJlbmNlIDw9IDApCi0gICAgICAgIDw8ICJMZWFrZWQgIiA8
PCBkaWZmZXJlbmNlIDw8ICIgdW5pdChzKSBvZiBXYXRlciEiOworICAgIEVYUEVDVF9MRShkaWZm
ZXJlbmNlLCAwKSA8PCAiTGVha2VkICIgPDwgZGlmZmVyZW5jZSA8PCAiIHVuaXQocykgb2YgV2F0
ZXIhIjsKICAgfQogCiAgIGludCBpbml0aWFsbHlfYWxsb2NhdGVkXzsKQEAgLTEwNyw3ICsxMDIs
NiBAQCBURVNUKExpc3RlbmVyc1Rlc3QsIExlYWtzV2F0ZXIpIHsKICAgV2F0ZXIqIHdhdGVyID0g
bmV3IFdhdGVyOwogICBFWFBFQ1RfVFJVRSh3YXRlciAhPSBOVUxMKTsKIH0KLQogfSAgLy8gbmFt
ZXNwYWNlCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjCmluZGV4IDAx
ZWI1NDYyZjgxYWQ1NGIzOGFjNWVlNjMzNzk3MmVhYTA0ZDdhZGUuLmNiMDhiNjFhNTlhOWUxNmIz
NjU3ODYxZjFjOTYwOTAwMWQyMDk2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QuY2MKQEAgLTI4LDkgKzI4LDYgQEAKIC8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29n
bGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20g
KFpoYW55b25nIFdhbikKLQogCiAvLyBUaGlzIHNhbXBsZSBzaG93cyBob3cgdG8gd3JpdGUgYSBz
aW1wbGUgdW5pdCB0ZXN0IGZvciBhIGZ1bmN0aW9uLAogLy8gdXNpbmcgR29vZ2xlIEMrKyB0ZXN0
aW5nIGZyYW1ld29yay4KQEAgLTQ1LDggKzQyLDggQEAKIAogI2luY2x1ZGUgPGxpbWl0cy5oPgog
I2luY2x1ZGUgInNhbXBsZTEuaCIKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKK25hbWVzcGFjZSB7CiAKIC8vIFN0ZXAgMi4gVXNlIHRoZSBURVNU
IG1hY3JvIHRvIGRlZmluZSB5b3VyIHRlc3RzLgogLy8KQEAgLTgxLDcgKzc4LDcgQEAgVEVTVChG
YWN0b3JpYWxUZXN0LCBOZWdhdGl2ZSkgewogICAvLyB0ZXN0IGNhc2UuCiAgIEVYUEVDVF9FUSgx
LCBGYWN0b3JpYWwoLTUpKTsKICAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgtMSkpOwotICBFWFBF
Q1RfVFJVRShGYWN0b3JpYWwoLTEwKSA+IDApOworICBFWFBFQ1RfR1QoRmFjdG9yaWFsKC0xMCks
IDApOwogCiAgIC8vIDxUZWNobmljYWxEZXRhaWxzPgogICAvLwpAQCAtMTM5LDYgKzEzNiw3IEBA
IFRFU1QoSXNQcmltZVRlc3QsIFBvc2l0aXZlKSB7CiAgIEVYUEVDVF9GQUxTRShJc1ByaW1lKDYp
KTsKICAgRVhQRUNUX1RSVUUoSXNQcmltZSgyMykpOwogfQorfSAgLy8gbmFtZXNwYWNlCiAKIC8v
IFN0ZXAgMy4gQ2FsbCBSVU5fQUxMX1RFU1RTKCkgaW4gbWFpbigpLgogLy8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMi5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMi5jYwppbmRleCA1Zjc2M2I5YmRmOGQ3YWJjMTNj
NjFjNTY4MzMxZDIxYjlmYTQ5NzVkLi5mM2I3MjJmY2FjZmVlZTdkODkwYjJkMWYxOWJjOTc0MTVl
Y2E0OWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBs
ZTIuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUyLmNjCkBA
IC0yOCw4ICsyOCw2IEBACiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAvLyBBIHNhbXBsZSBwcm9ncmFtIGRl
bW9uc3RyYXRpbmcgdXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBB
dXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAKICNpbmNsdWRlICJzYW1wbGUy
LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxl
Mi5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUyLmgKaW5kZXggNWI1
N2U2MDgyZmE0ZjZiNzI0YmZiNTgyNjg3YmZlMGE2MzE5ZjJhNy4uNThmMzYwZjQ1Yzc2NThjMDE5
N2UzZmZjNjVlYzhiMzc1ZmIzMzZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2FtcGxlcy9zYW1wbGUyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxl
cy9zYW1wbGUyLmgKQEAgLTI4LDggKzI4LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEgc2Ft
cGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3
b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAogI2lm
bmRlZiBHVEVTVF9TQU1QTEVTX1NBTVBMRTJfSF8KICNkZWZpbmUgR1RFU1RfU0FNUExFU19TQU1Q
TEUyX0hfCkBAIC00NCw3ICs0Miw2IEBAIGNsYXNzIE15U3RyaW5nIHsKICAgY29uc3QgTXlTdHJp
bmcmIG9wZXJhdG9yPShjb25zdCBNeVN0cmluZyYgcmhzKTsKIAogIHB1YmxpYzoKLQogICAvLyBD
bG9uZXMgYSAwLXRlcm1pbmF0ZWQgQyBzdHJpbmcsIGFsbG9jYXRpbmcgbWVtb3J5IHVzaW5nIG5l
dy4KICAgc3RhdGljIGNvbnN0IGNoYXIqIENsb25lQ1N0cmluZyhjb25zdCBjaGFyKiBhX2Nfc3Ry
aW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1w
bGUyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUy
X3VuaXR0ZXN0LmNjCmluZGV4IDMyMjMyZDk4YzBiZDI1NDgyMWM4ZjY5MWE2Yjg1NWYxZjE2MTZm
YjguLjA4NDg4MjYxOTJjYzY2ZmNiNzkwNmVmMmMwYWFlZjY2YWY4NDNmOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2MKQEAg
LTI4LDkgKzI4LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVt
b25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQogCiAvLyBUaGlzIHNhbXBsZSBz
aG93cyBob3cgdG8gd3JpdGUgYSBtb3JlIGNvbXBsZXggdW5pdCB0ZXN0IGZvciBhIGNsYXNzCiAv
LyB0aGF0IGhhcyBtdWx0aXBsZSBtZW1iZXIgZnVuY3Rpb25zLgpAQCAtNDEsOCArMzgsOCBAQAog
Ly8gbmVlZGVkLgogCiAjaW5jbHVkZSAic2FtcGxlMi5oIgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+Ci0KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorbmFtZXNwYWNlIHsKIC8vIEluIHRoaXMg
ZXhhbXBsZSwgd2UgdGVzdCB0aGUgTXlTdHJpbmcgY2xhc3MgKGEgc2ltcGxlIHN0cmluZykuCiAK
IC8vIFRlc3RzIHRoZSBkZWZhdWx0IGMndG9yLgpAQCAtNzksNyArNzYsNyBAQCBjb25zdCBjaGFy
IGtIZWxsb1N0cmluZ1tdID0gIkhlbGxvLCB3b3JsZCEiOwogLy8gVGVzdHMgdGhlIGMndG9yIHRo
YXQgYWNjZXB0cyBhIEMgc3RyaW5nLgogVEVTVChNeVN0cmluZywgQ29uc3RydWN0b3JGcm9tQ1N0
cmluZykgewogICBjb25zdCBNeVN0cmluZyBzKGtIZWxsb1N0cmluZyk7Ci0gIEVYUEVDVF9UUlVF
KHN0cmNtcChzLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykgPT0gMCk7CisgIEVYUEVDVF9FUSgw
LCBzdHJjbXAocy5jX3N0cmluZygpLCBrSGVsbG9TdHJpbmcpKTsKICAgRVhQRUNUX0VRKHNpemVv
ZihrSGVsbG9TdHJpbmcpL3NpemVvZihrSGVsbG9TdHJpbmdbMF0pIC0gMSwKICAgICAgICAgICAg
IHMuTGVuZ3RoKCkpOwogfQpAQCAtODgsNyArODUsNyBAQCBURVNUKE15U3RyaW5nLCBDb25zdHJ1
Y3RvckZyb21DU3RyaW5nKSB7CiBURVNUKE15U3RyaW5nLCBDb3B5Q29uc3RydWN0b3IpIHsKICAg
Y29uc3QgTXlTdHJpbmcgczEoa0hlbGxvU3RyaW5nKTsKICAgY29uc3QgTXlTdHJpbmcgczIgPSBz
MTsKLSAgRVhQRUNUX1RSVUUoc3RyY21wKHMyLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykgPT0g
MCk7CisgIEVYUEVDVF9FUSgwLCBzdHJjbXAoczIuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSk7
CiB9CiAKIC8vIFRlc3RzIHRoZSBTZXQgbWV0aG9kLgpAQCAtOTYsMTQgKzkzLDE1IEBAIFRFU1Qo
TXlTdHJpbmcsIFNldCkgewogICBNeVN0cmluZyBzOwogCiAgIHMuU2V0KGtIZWxsb1N0cmluZyk7
Ci0gIEVYUEVDVF9UUlVFKHN0cmNtcChzLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykgPT0gMCk7
CisgIEVYUEVDVF9FUSgwLCBzdHJjbXAocy5jX3N0cmluZygpLCBrSGVsbG9TdHJpbmcpKTsKIAog
ICAvLyBTZXQgc2hvdWxkIHdvcmsgd2hlbiB0aGUgaW5wdXQgcG9pbnRlciBpcyB0aGUgc2FtZSBh
cyB0aGUgb25lCiAgIC8vIGFscmVhZHkgaW4gdGhlIE15U3RyaW5nIG9iamVjdC4KICAgcy5TZXQo
cy5jX3N0cmluZygpKTsKLSAgRVhQRUNUX1RSVUUoc3RyY21wKHMuY19zdHJpbmcoKSwga0hlbGxv
U3RyaW5nKSA9PSAwKTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzLmNfc3RyaW5nKCksIGtIZWxs
b1N0cmluZykpOwogCiAgIC8vIENhbiB3ZSBzZXQgdGhlIE15U3RyaW5nIHRvIE5VTEw/CiAgIHMu
U2V0KE5VTEwpOwogICBFWFBFQ1RfU1RSRVEoTlVMTCwgcy5jX3N0cmluZygpKTsKIH0KK30gIC8v
IG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9z
YW1wbGUzLWlubC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzLWlu
bC5oCmluZGV4IDQ2MzY5YTA3NmQ4NWM0MTE0MjNhY2FhOThkZDQ1NWU1NTllZDMwMGEuLjFhMjlj
ZTkyOTZhNjRkZmU5N2E5ZjdmZGM2ZGE4NjM4N2RjMGI3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMy1pbmwuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTMtaW5sLmgKQEAgLTI4LDggKzI4LDYgQEAKIC8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29n
bGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20g
KFpoYW55b25nIFdhbikKIAogI2lmbmRlZiBHVEVTVF9TQU1QTEVTX1NBTVBMRTNfSU5MX0hfCiAj
ZGVmaW5lIEdURVNUX1NBTVBMRVNfU0FNUExFM19JTkxfSF8KQEAgLTYwLDcgKzU4LDcgQEAgY2xh
c3MgUXVldWVOb2RlIHsKICBwcml2YXRlOgogICAvLyBDcmVhdGVzIGEgbm9kZSB3aXRoIGEgZ2l2
ZW4gZWxlbWVudCB2YWx1ZS4gIFRoZSBuZXh0IHBvaW50ZXIgaXMKICAgLy8gc2V0IHRvIE5VTEwu
Ci0gIFF1ZXVlTm9kZShjb25zdCBFJiBhbl9lbGVtZW50KSA6IGVsZW1lbnRfKGFuX2VsZW1lbnQp
LCBuZXh0XyhOVUxMKSB7fQorICBleHBsaWNpdCBRdWV1ZU5vZGUoY29uc3QgRSYgYW5fZWxlbWVu
dCkgOiBlbGVtZW50Xyhhbl9lbGVtZW50KSwgbmV4dF8oTlVMTCkge30KIAogICAvLyBXZSBkaXNh
YmxlIHRoZSBkZWZhdWx0IGFzc2lnbm1lbnQgb3BlcmF0b3IgYW5kIGNvcHkgYyd0b3IuCiAgIGNv
bnN0IFF1ZXVlTm9kZSYgb3BlcmF0b3IgPSAoY29uc3QgUXVldWVOb2RlJik7CkBAIC03Miw4ICs3
MCw3IEBAIGNsYXNzIFF1ZXVlTm9kZSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFPiAgLy8gRSBp
cyB0aGUgZWxlbWVudCB0eXBlLgogY2xhc3MgUXVldWUgewotcHVibGljOgotCisgcHVibGljOgog
ICAvLyBDcmVhdGVzIGFuIGVtcHR5IHF1ZXVlLgogICBRdWV1ZSgpIDogaGVhZF8oTlVMTCksIGxh
c3RfKE5VTEwpLCBzaXplXygwKSB7fQogCkBAIC0xNjgsNiArMTY1LDYgQEAgcHVibGljOgogICAv
LyBXZSBkaXNhbGxvdyBjb3B5aW5nIGEgcXVldWUuCiAgIFF1ZXVlKGNvbnN0IFF1ZXVlJik7CiAg
IGNvbnN0IFF1ZXVlJiBvcGVyYXRvciA9IChjb25zdCBRdWV1ZSYpOwotIH07Cit9OwogCiAjZW5k
aWYgIC8vIEdURVNUX1NBTVBMRVNfU0FNUExFM19JTkxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYwppbmRleCAzNGMxY2E4NjU2
ZWFiNTY0MTgxNTYwZGJmMTQ5ZDBhMmFhOTJjYzFkLi5lMDkzYzI1ODg1NzNmOTYyNzBhNWVkNDEy
NDVhYzdlODlmNDg1MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1w
bGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ft
cGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjCkBAIC0yOCw5ICsyOCw2IEBACiAvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogCiAvLyBBIHNhbXBsZSBwcm9ncmFtIGRlbW9uc3RyYXRpbmcgdXNpbmcgR29vZ2xlIEMrKyB0
ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9u
ZyBXYW4pCi0KIAogLy8gSW4gdGhpcyBleGFtcGxlLCB3ZSB1c2UgYSBtb3JlIGFkdmFuY2VkIGZl
YXR1cmUgb2YgR29vZ2xlIFRlc3QgY2FsbGVkCiAvLyB0ZXN0IGZpeHR1cmUuCkBAIC02NCwxNSAr
NjEsMTUgQEAKIC8vIDwvVGVjaG5pY2FsRGV0YWlscz4KIAogI2luY2x1ZGUgInNhbXBsZTMtaW5s
LmgiCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CituYW1lc3BhY2UgewogLy8gVG8gdXNlIGEgdGVzdCBmaXh0dXJlLCBkZXJpdmUgYSBjbGFzcyBm
cm9tIHRlc3Rpbmc6OlRlc3QuCi1jbGFzcyBRdWV1ZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CitjbGFzcyBRdWV1ZVRlc3RTbXBsMyA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICBwcm90
ZWN0ZWQ6ICAvLyBZb3Ugc2hvdWxkIG1ha2UgdGhlIG1lbWJlcnMgcHJvdGVjdGVkIHMudC4gdGhl
eSBjYW4gYmUKICAgICAgICAgICAgICAvLyBhY2Nlc3NlZCBmcm9tIHN1Yi1jbGFzc2VzLgogCiAg
IC8vIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSBlYWNoIHRlc3Qg
aXMgcnVuLiAgWW91Ci0gIC8vIHNob3VsZCBkZWZpbmUgaXQgaWYgeW91IG5lZWQgdG8gaW5pdGlh
bGl6ZSB0aGUgdmFyYWlibGVzLgorICAvLyBzaG91bGQgZGVmaW5lIGl0IGlmIHlvdSBuZWVkIHRv
IGluaXRpYWxpemUgdGhlIHZhcmlhYmxlcy4KICAgLy8gT3RoZXJ3aXNlLCB0aGlzIGNhbiBiZSBz
a2lwcGVkLgogICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CiAgICAgcTFfLkVucXVldWUoMSk7CkBA
IC0xMjAsMTMgKzExNywxMyBAQCBjbGFzcyBRdWV1ZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CiAvLyBpbnN0ZWFkIG9mIFRFU1QuCiAKIC8vIFRlc3RzIHRoZSBkZWZhdWx0IGMndG9yLgot
VEVTVF9GKFF1ZXVlVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yKSB7CitURVNUX0YoUXVldWVUZXN0
U21wbDMsIERlZmF1bHRDb25zdHJ1Y3RvcikgewogICAvLyBZb3UgY2FuIGFjY2VzcyBkYXRhIGlu
IHRoZSB0ZXN0IGZpeHR1cmUgaGVyZS4KICAgRVhQRUNUX0VRKDB1LCBxMF8uU2l6ZSgpKTsKIH0K
IAogLy8gVGVzdHMgRGVxdWV1ZSgpLgotVEVTVF9GKFF1ZXVlVGVzdCwgRGVxdWV1ZSkgeworVEVT
VF9GKFF1ZXVlVGVzdFNtcGwzLCBEZXF1ZXVlKSB7CiAgIGludCAqIG4gPSBxMF8uRGVxdWV1ZSgp
OwogICBFWFBFQ1RfVFJVRShuID09IE5VTEwpOwogCkBAIC0xNDQsOCArMTQxLDkgQEAgVEVTVF9G
KFF1ZXVlVGVzdCwgRGVxdWV1ZSkgewogfQogCiAvLyBUZXN0cyB0aGUgUXVldWU6Ok1hcCgpIGZ1
bmN0aW9uLgotVEVTVF9GKFF1ZXVlVGVzdCwgTWFwKSB7CitURVNUX0YoUXVldWVUZXN0U21wbDMs
IE1hcCkgewogICBNYXBUZXN0ZXIoJnEwXyk7CiAgIE1hcFRlc3RlcigmcTFfKTsKICAgTWFwVGVz
dGVyKCZxMl8pOwogfQorfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9z
YW1wbGVzL3NhbXBsZTQuY2MKaW5kZXggYWU0NGJkYTZmMWJhZDUzZmYzYzZmMTRlMDMwMmJkM2Ji
MzA5Y2JhNy4uYjBlZTYwOTNiNGEyNTBjZjExOTM2Y2NjODIwOGE2MTIyOTFiODE0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0LmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNC5jYwpAQCAtMjgsOCArMjgsNiBA
QAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVz
aW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29v
Z2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCiAjaW5jbHVkZSA8c3RkaW8uaD4KIApAQCAtNDAsNiAr
MzgsMTYgQEAgaW50IENvdW50ZXI6OkluY3JlbWVudCgpIHsKICAgcmV0dXJuIGNvdW50ZXJfKys7
CiB9CiAKKy8vIFJldHVybnMgdGhlIGN1cnJlbnQgY291bnRlciB2YWx1ZSwgYW5kIGRlY3JlbWVu
dHMgaXQuCisvLyBjb3VudGVyIGNhbiBub3QgYmUgbGVzcyB0aGFuIDAsIHJldHVybiAwIGluIHRo
aXMgY2FzZQoraW50IENvdW50ZXI6OkRlY3JlbWVudCgpIHsKKyAgaWYgKGNvdW50ZXJfID09IDAp
IHsKKyAgICByZXR1cm4gY291bnRlcl87CisgIH0gZWxzZSAgeworICAgIHJldHVybiBjb3VudGVy
Xy0tOworICB9Cit9CisKIC8vIFByaW50cyB0aGUgY3VycmVudCBjb3VudGVyIHZhbHVlIHRvIFNU
RE9VVC4KIHZvaWQgQ291bnRlcjo6UHJpbnQoKSBjb25zdCB7CiAgIHByaW50ZigiJWQiLCBjb3Vu
dGVyXyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBs
ZTQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNC5oCmluZGV4IGNk
NjBmMGRkMmQxODYwNzM3YjdmMGVhNDVjNTY3NWEzYThlYTcyMWYuLmUyNTZmNDA2NGZlOTFhN2Yw
MWE5NDU1MGQzMmMzYmIxMWIwYTRmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NhbXBsZXMvc2FtcGxlNC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBs
ZXMvc2FtcGxlNC5oCkBAIC0yOCw5ICsyOCw2IEBACiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAvLyBBIHNh
bXBsZSBwcm9ncmFtIGRlbW9uc3RyYXRpbmcgdXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1l
d29yay4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KICNp
Zm5kZWYgR1RFU1RfU0FNUExFU19TQU1QTEU0X0hfCiAjZGVmaW5lIEdURVNUX1NBTVBMRVNfU0FN
UExFNF9IXwogCkBAIC00Niw2ICs0Myw5IEBAIGNsYXNzIENvdW50ZXIgewogICAvLyBSZXR1cm5z
IHRoZSBjdXJyZW50IGNvdW50ZXIgdmFsdWUsIGFuZCBpbmNyZW1lbnRzIGl0LgogICBpbnQgSW5j
cmVtZW50KCk7CiAKKyAgLy8gUmV0dXJucyB0aGUgY3VycmVudCBjb3VudGVyIHZhbHVlLCBhbmQg
ZGVjcmVtZW50cyBpdC4KKyAgaW50IERlY3JlbWVudCgpOworCiAgIC8vIFByaW50cyB0aGUgY3Vy
cmVudCBjb3VudGVyIHZhbHVlIHRvIFNURE9VVC4KICAgdm9pZCBQcmludCgpIGNvbnN0OwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNF91bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNF91bml0dGVz
dC5jYwppbmRleCBiNGZiMzczNmFiYmZmODNmNzlhZjQ0N2NhNGJjNmI5MTA1ODY5MzJlLi5kNTE0
NGMwZDAwZjVjNzYwMDY5M2VhMDI1ODAyYzBkN2Q1MjUwZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0X3VuaXR0ZXN0LmNjCkBAIC0yNiwyMCAr
MjYsMjggQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAKLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgorCiAjaW5jbHVkZSAic2FtcGxlNC5oIgorI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCiAKK25hbWVzcGFjZSB7CiAvLyBUZXN0cyB0aGUgSW5jcmVtZW50KCkgbWV0aG9k
LgorCiBURVNUKENvdW50ZXIsIEluY3JlbWVudCkgewogICBDb3VudGVyIGM7CiAKKyAgLy8gVGVz
dCB0aGF0IGNvdW50ZXIgMCByZXR1cm5zIDAKKyAgRVhQRUNUX0VRKDAsIGMuRGVjcmVtZW50KCkp
OworCiAgIC8vIEVYUEVDVF9FUSgpIGV2YWx1YXRlcyBpdHMgYXJndW1lbnRzIGV4YWN0bHkgb25j
ZSwgc28gdGhleQogICAvLyBjYW4gaGF2ZSBzaWRlIGVmZmVjdHMuCiAKICAgRVhQRUNUX0VRKDAs
IGMuSW5jcmVtZW50KCkpOwogICBFWFBFQ1RfRVEoMSwgYy5JbmNyZW1lbnQoKSk7CiAgIEVYUEVD
VF9FUSgyLCBjLkluY3JlbWVudCgpKTsKKworICBFWFBFQ1RfRVEoMywgYy5EZWNyZW1lbnQoKSk7
CiB9CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjCmluZGV4IDQ5ZGFlN2M2OWZhNzZlOGE0ODYwNzcw
NmI0YTE2MmM2NDJmMGEwODUuLmQ4YTg3ODhjNmQwZmRhMjM4NjQ2ZmVhMjkwZTA5N2NjNzYyNzc4
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNV91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTVf
dW5pdHRlc3QuY2MKQEAgLTI2LDggKzI2LDcgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFu
eW9uZyBXYW4pCisKIAogLy8gVGhpcyBzYW1wbGUgdGVhY2hlcyBob3cgdG8gcmV1c2UgYSB0ZXN0
IGZpeHR1cmUgaW4gbXVsdGlwbGUgdGVzdAogLy8gY2FzZXMgYnkgZGVyaXZpbmcgc3ViLWZpeHR1
cmVzIGZyb20gaXQuCkBAIC00NiwxMCArNDUsMTAgQEAKIAogI2luY2x1ZGUgPGxpbWl0cy5oPgog
I2luY2x1ZGUgPHRpbWUuaD4KLSNpbmNsdWRlICJzYW1wbGUzLWlubC5oIgotI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKICNpbmNsdWRlICJzYW1wbGUx
LmgiCi0KKyNpbmNsdWRlICJzYW1wbGUzLWlubC5oIgorbmFtZXNwYWNlIHsKIC8vIEluIHRoaXMg
c2FtcGxlLCB3ZSB3YW50IHRvIGVuc3VyZSB0aGF0IGV2ZXJ5IHRlc3QgZmluaXNoZXMgd2l0aGlu
CiAvLyB+NSBzZWNvbmRzLiAgSWYgYSB0ZXN0IHRha2VzIGxvbmdlciB0byBydW4sIHdlIGNvbnNp
ZGVyIGl0IGEKIC8vIGZhaWx1cmUuCkBAIC0xMDEsNyArMTAwLDcgQEAgVEVTVF9GKEludGVnZXJG
dW5jdGlvblRlc3QsIEZhY3RvcmlhbCkgewogICAvLyBUZXN0cyBmYWN0b3JpYWwgb2YgbmVnYXRp
dmUgbnVtYmVycy4KICAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgtNSkpOwogICBFWFBFQ1RfRVEo
MSwgRmFjdG9yaWFsKC0xKSk7Ci0gIEVYUEVDVF9UUlVFKEZhY3RvcmlhbCgtMTApID4gMCk7Cisg
IEVYUEVDVF9HVChGYWN0b3JpYWwoLTEwKSwgMCk7CiAKICAgLy8gVGVzdHMgZmFjdG9yaWFsIG9m
IDAuCiAgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoMCkpOwpAQCAtMTE3LDIwICsxMTYsMjAgQEAg
VEVTVF9GKEludGVnZXJGdW5jdGlvblRlc3QsIEZhY3RvcmlhbCkgewogLy8gVGVzdHMgSXNQcmlt
ZSgpCiBURVNUX0YoSW50ZWdlckZ1bmN0aW9uVGVzdCwgSXNQcmltZSkgewogICAvLyBUZXN0cyBu
ZWdhdGl2ZSBpbnB1dC4KLSAgRVhQRUNUX1RSVUUoIUlzUHJpbWUoLTEpKTsKLSAgRVhQRUNUX1RS
VUUoIUlzUHJpbWUoLTIpKTsKLSAgRVhQRUNUX1RSVUUoIUlzUHJpbWUoSU5UX01JTikpOworICBF
WFBFQ1RfRkFMU0UoSXNQcmltZSgtMSkpOworICBFWFBFQ1RfRkFMU0UoSXNQcmltZSgtMikpOwor
ICBFWFBFQ1RfRkFMU0UoSXNQcmltZShJTlRfTUlOKSk7CiAKICAgLy8gVGVzdHMgc29tZSB0cml2
aWFsIGNhc2VzLgotICBFWFBFQ1RfVFJVRSghSXNQcmltZSgwKSk7Ci0gIEVYUEVDVF9UUlVFKCFJ
c1ByaW1lKDEpKTsKKyAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoMCkpOworICBFWFBFQ1RfRkFMU0Uo
SXNQcmltZSgxKSk7CiAgIEVYUEVDVF9UUlVFKElzUHJpbWUoMikpOwogICBFWFBFQ1RfVFJVRShJ
c1ByaW1lKDMpKTsKIAogICAvLyBUZXN0cyBwb3NpdGl2ZSBpbnB1dC4KLSAgRVhQRUNUX1RSVUUo
IUlzUHJpbWUoNCkpOworICBFWFBFQ1RfRkFMU0UoSXNQcmltZSg0KSk7CiAgIEVYUEVDVF9UUlVF
KElzUHJpbWUoNSkpOwotICBFWFBFQ1RfVFJVRSghSXNQcmltZSg2KSk7CisgIEVYUEVDVF9GQUxT
RShJc1ByaW1lKDYpKTsKICAgRVhQRUNUX1RSVUUoSXNQcmltZSgyMykpOwogfQogCkBAIC0xOTEs
NyArMTkwLDcgQEAgVEVTVF9GKFF1ZXVlVGVzdCwgRGVxdWV1ZSkgewogICBFWFBFQ1RfRVEoMXUs
IHEyXy5TaXplKCkpOwogICBkZWxldGUgbjsKIH0KLQorfSAgLy8gbmFtZXNwYWNlCiAvLyBJZiBu
ZWNlc3NhcnksIHlvdSBjYW4gZGVyaXZlIGZ1cnRoZXIgdGVzdCBmaXh0dXJlcyBmcm9tIGEgZGVy
aXZlZAogLy8gZml4dHVyZSBpdHNlbGYuICBGb3IgZXhhbXBsZSwgeW91IGNhbiBkZXJpdmUgYW5v
dGhlciBmaXh0dXJlIGZyb20KIC8vIFF1ZXVlVGVzdC4gIEdvb2dsZSBUZXN0IGltcG9zZXMgbm8g
bGltaXQgb24gaG93IGRlZXAgdGhlIGhpZXJhcmNoeQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjCmluZGV4IGRkMGRmMzFmMGJiN2Ni
ZjI2MTYwNzM0MmU4NjQwNGQ3NWE4NTM0M2UuLmRkZjJmMWMxM2JiZTAzNDgxMzQ0OTM2YjBhNzJk
YmIyYTBiMjg0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMv
c2FtcGxlNl91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVz
L3NhbXBsZTZfdW5pdHRlc3QuY2MKQEAgLTI2LDggKzI2LDcgQEAKIC8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUu
Y29tIChaaGFueW9uZyBXYW4pCisKIAogLy8gVGhpcyBzYW1wbGUgc2hvd3MgaG93IHRvIHRlc3Qg
Y29tbW9uIHByb3BlcnRpZXMgb2YgbXVsdGlwbGUKIC8vIGltcGxlbWVudGF0aW9ucyBvZiB0aGUg
c2FtZSBpbnRlcmZhY2UgKGFrYSBpbnRlcmZhY2UgdGVzdHMpLgpAQCAtMzUsOCArMzQsOCBAQAog
Ly8gVGhlIGludGVyZmFjZSBhbmQgaXRzIGltcGxlbWVudGF0aW9ucyBhcmUgaW4gdGhpcyBoZWFk
ZXIuCiAjaW5jbHVkZSAicHJpbWVfdGFibGVzLmgiCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5o
PgotCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKK25hbWVzcGFjZSB7CiAvLyBGaXJzdCwgd2Ug
ZGVmaW5lIHNvbWUgZmFjdG9yeSBmdW5jdGlvbnMgZm9yIGNyZWF0aW5nIGluc3RhbmNlcyBvZgog
Ly8gdGhlIGltcGxlbWVudGF0aW9ucy4gIFlvdSBtYXkgYmUgYWJsZSB0byBza2lwIHRoaXMgc3Rl
cCBpZiBhbGwgeW91cgogLy8gaW1wbGVtZW50YXRpb25zIGNhbiBiZSBjb25zdHJ1Y3RlZCB0aGUg
c2FtZSB3YXkuCkBAIC0yMjIsMyArMjIxLDQgQEAgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNF
X1AoT25UaGVGbHlBbmRQcmVDYWxjdWxhdGVkLCAgICAvLyBJbnN0YW5jZSBuYW1lCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQcmltZVRhYmxlSW1wbGVtZW50YXRpb25zKTsgIC8vIFR5
cGUgbGlzdAogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUX1AKK30gIC8vIG5hbWVz
cGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU3
X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU3X3Vu
aXR0ZXN0LmNjCmluZGV4IGY0NTUyODI3ZWQ5YjgzMDZjZGQzMTlhYTU3ZjNlZDA2NzYyYjRmNWYu
LmMxYWU4YmRlZGM5YWZjOWExMWQwZDkyMDIxZWY3Njc3ZDM5OGE5YzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MKQEAgLTI2
LDggKzI2LDcgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCisKIAogLy8g
VGhpcyBzYW1wbGUgc2hvd3MgaG93IHRvIHRlc3QgY29tbW9uIHByb3BlcnRpZXMgb2YgbXVsdGlw
bGUKIC8vIGltcGxlbWVudGF0aW9ucyBvZiBhbiBpbnRlcmZhY2UgKGFrYSBpbnRlcmZhY2UgdGVz
dHMpIHVzaW5nCkBAIC0zOCwxOSArMzcsMTcgQEAKIC8vIFRoZSBpbnRlcmZhY2UgYW5kIGl0cyBp
bXBsZW1lbnRhdGlvbnMgYXJlIGluIHRoaXMgaGVhZGVyLgogI2luY2x1ZGUgInByaW1lX3RhYmxl
cy5oIgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2lmIEdURVNUX0hBU19QQVJBTV9U
RVNUCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKK25hbWVzcGFjZSB7CiAKIHVzaW5nIDo6dGVz
dGluZzo6VGVzdFdpdGhQYXJhbTsKIHVzaW5nIDo6dGVzdGluZzo6VmFsdWVzOwogCi0vLyBBcyBh
IGdlbmVyYWwgcnVsZSwgdGVzdGVkIG9iamVjdHMgc2hvdWxkIG5vdCBiZSByZXVzZWQgYmV0d2Vl
biB0ZXN0cy4KLS8vIEFsc28sIHRoZWlyIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMgb2Yg
dGVzdGVkIG9iamVjdHMgY2FuIGhhdmUKLS8vIHNpZGUgZWZmZWN0cy4gVGh1cyB5b3Ugc2hvdWxk
IGNyZWF0ZSBhbmQgZGVzdHJveSB0aGVtIGZvciBlYWNoIHRlc3QuCi0vLyBJbiB0aGlzIHNhbXBs
ZSB3ZSB3aWxsIGRlZmluZSBhIHNpbXBsZSBmYWN0b3J5IGZ1bmN0aW9uIGZvciBQcmltZVRhYmxl
Ci0vLyBvYmplY3RzLiBXZSB3aWxsIGluc3RhbnRpYXRlIG9iamVjdHMgaW4gdGVzdCdzIFNldFVw
KCkgbWV0aG9kIGFuZAotLy8gZGVsZXRlIHRoZW0gaW4gVGVhckRvd24oKSBtZXRob2QuCisvLyBB
cyBhIGdlbmVyYWwgcnVsZSwgdG8gcHJldmVudCBhIHRlc3QgZnJvbSBhZmZlY3RpbmcgdGhlIHRl
c3RzIHRoYXQgY29tZQorLy8gYWZ0ZXIgaXQsIHlvdSBzaG91bGQgY3JlYXRlIGFuZCBkZXN0cm95
IHRoZSB0ZXN0ZWQgb2JqZWN0cyBmb3IgZWFjaCB0ZXN0CisvLyBpbnN0ZWFkIG9mIHJldXNpbmcg
dGhlbS4gIEluIHRoaXMgc2FtcGxlIHdlIHdpbGwgZGVmaW5lIGEgc2ltcGxlIGZhY3RvcnkKKy8v
IGZ1bmN0aW9uIGZvciBQcmltZVRhYmxlIG9iamVjdHMuICBXZSB3aWxsIGluc3RhbnRpYXRlIG9i
amVjdHMgaW4gdGVzdCdzCisvLyBTZXRVcCgpIG1ldGhvZCBhbmQgZGVsZXRlIHRoZW0gaW4gVGVh
ckRvd24oKSBtZXRob2QuCiB0eXBlZGVmIFByaW1lVGFibGUqIENyZWF0ZVByaW1lVGFibGVGdW5j
KCk7CiAKIFByaW1lVGFibGUqIENyZWF0ZU9uVGhlRmx5UHJpbWVUYWJsZSgpIHsKQEAgLTYyLDE0
ICs1OSwxMyBAQCBQcmltZVRhYmxlKiBDcmVhdGVQcmVDYWxjdWxhdGVkUHJpbWVUYWJsZSgpIHsK
ICAgcmV0dXJuIG5ldyBQcmVDYWxjdWxhdGVkUHJpbWVUYWJsZShtYXhfcHJlY2FsY3VsYXRlZCk7
CiB9CiAKLS8vIEluc2lkZSB0aGUgdGVzdCBib2R5LCBmaXh0dXJlIGNvbnN0cnVjdG9yLCBTZXRV
cCgpLCBhbmQgVGVhckRvd24oKQotLy8geW91IGNhbiByZWZlciB0byB0aGUgdGVzdCBwYXJhbWV0
ZXIgYnkgR2V0UGFyYW0oKS4KLS8vIEluIHRoaXMgY2FzZSwgdGhlIHRlc3QgcGFyYW1ldGVyIGlz
IGEgUHJpbWVUYWJsZUZhY3RvcnkgaW50ZXJmYWNlIHBvaW50ZXIKLS8vIHdoaWNoIHdlIHVzZSBp
biBmaXh0dXJlJ3MgU2V0VXAoKSB0byBjcmVhdGUgYW5kIHN0b3JlIGFuIGluc3RhbmNlIG9mCi0v
LyBQcmltZVRhYmxlLgotY2xhc3MgUHJpbWVUYWJsZVRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJh
bTxDcmVhdGVQcmltZVRhYmxlRnVuYyo+IHsKKy8vIEluc2lkZSB0aGUgdGVzdCBib2R5LCBmaXh0
dXJlIGNvbnN0cnVjdG9yLCBTZXRVcCgpLCBhbmQgVGVhckRvd24oKSB5b3UKKy8vIGNhbiByZWZl
ciB0byB0aGUgdGVzdCBwYXJhbWV0ZXIgYnkgR2V0UGFyYW0oKS4gIEluIHRoaXMgY2FzZSwgdGhl
IHRlc3QKKy8vIHBhcmFtZXRlciBpcyBhIGZhY3RvcnkgZnVuY3Rpb24gd2hpY2ggd2UgY2FsbCBp
biBmaXh0dXJlJ3MgU2V0VXAoKSB0bworLy8gY3JlYXRlIGFuZCBzdG9yZSBhbiBpbnN0YW5jZSBv
ZiBQcmltZVRhYmxlLgorY2xhc3MgUHJpbWVUYWJsZVRlc3RTbXBsNyA6IHB1YmxpYyBUZXN0V2l0
aFBhcmFtPENyZWF0ZVByaW1lVGFibGVGdW5jKj4gewogIHB1YmxpYzoKLSAgdmlydHVhbCB+UHJp
bWVUYWJsZVRlc3QoKSB7IGRlbGV0ZSB0YWJsZV87IH0KKyAgdmlydHVhbCB+UHJpbWVUYWJsZVRl
c3RTbXBsNygpIHsgZGVsZXRlIHRhYmxlXzsgfQogICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IHRh
YmxlXyA9ICgqR2V0UGFyYW0oKSkoKTsgfQogICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CiAg
ICAgZGVsZXRlIHRhYmxlXzsKQEAgLTgwLDcgKzc2LDcgQEAgY2xhc3MgUHJpbWVUYWJsZVRlc3Qg
OiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxDcmVhdGVQcmltZVRhYmxlRnVuYyo+IHsKICAgUHJpbWVU
YWJsZSogdGFibGVfOwogfTsKIAotVEVTVF9QKFByaW1lVGFibGVUZXN0LCBSZXR1cm5zRmFsc2VG
b3JOb25QcmltZXMpIHsKK1RFU1RfUChQcmltZVRhYmxlVGVzdFNtcGw3LCBSZXR1cm5zRmFsc2VG
b3JOb25QcmltZXMpIHsKICAgRVhQRUNUX0ZBTFNFKHRhYmxlXy0+SXNQcmltZSgtNSkpOwogICBF
WFBFQ1RfRkFMU0UodGFibGVfLT5Jc1ByaW1lKDApKTsKICAgRVhQRUNUX0ZBTFNFKHRhYmxlXy0+
SXNQcmltZSgxKSk7CkBAIC04OSw3ICs4NSw3IEBAIFRFU1RfUChQcmltZVRhYmxlVGVzdCwgUmV0
dXJuc0ZhbHNlRm9yTm9uUHJpbWVzKSB7CiAgIEVYUEVDVF9GQUxTRSh0YWJsZV8tPklzUHJpbWUo
MTAwKSk7CiB9CiAKLVRFU1RfUChQcmltZVRhYmxlVGVzdCwgUmV0dXJuc1RydWVGb3JQcmltZXMp
IHsKK1RFU1RfUChQcmltZVRhYmxlVGVzdFNtcGw3LCBSZXR1cm5zVHJ1ZUZvclByaW1lcykgewog
ICBFWFBFQ1RfVFJVRSh0YWJsZV8tPklzUHJpbWUoMikpOwogICBFWFBFQ1RfVFJVRSh0YWJsZV8t
PklzUHJpbWUoMykpOwogICBFWFBFQ1RfVFJVRSh0YWJsZV8tPklzUHJpbWUoNSkpOwpAQCAtOTgs
NyArOTQsNyBAQCBURVNUX1AoUHJpbWVUYWJsZVRlc3QsIFJldHVybnNUcnVlRm9yUHJpbWVzKSB7
CiAgIEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSgxMzEpKTsKIH0KIAotVEVTVF9QKFByaW1l
VGFibGVUZXN0LCBDYW5HZXROZXh0UHJpbWUpIHsKK1RFU1RfUChQcmltZVRhYmxlVGVzdFNtcGw3
LCBDYW5HZXROZXh0UHJpbWUpIHsKICAgRVhQRUNUX0VRKDIsIHRhYmxlXy0+R2V0TmV4dFByaW1l
KDApKTsKICAgRVhQRUNUX0VRKDMsIHRhYmxlXy0+R2V0TmV4dFByaW1lKDIpKTsKICAgRVhQRUNU
X0VRKDUsIHRhYmxlXy0+R2V0TmV4dFByaW1lKDMpKTsKQEAgLTExNCwxOSArMTEwLDggQEAgVEVT
VF9QKFByaW1lVGFibGVUZXN0LCBDYW5HZXROZXh0UHJpbWUpIHsKIC8vCiAvLyBIZXJlLCB3ZSBp
bnN0YW50aWF0ZSBvdXIgdGVzdHMgd2l0aCBhIGxpc3Qgb2YgdHdvIFByaW1lVGFibGUgb2JqZWN0
CiAvLyBmYWN0b3J5IGZ1bmN0aW9uczoKLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKAotICAgIE9u
VGhlRmx5QW5kUHJlQ2FsY3VsYXRlZCwKLSAgICBQcmltZVRhYmxlVGVzdCwKLSAgICBWYWx1ZXMo
JkNyZWF0ZU9uVGhlRmx5UHJpbWVUYWJsZSwgJkNyZWF0ZVByZUNhbGN1bGF0ZWRQcmltZVRhYmxl
PDEwMDA+KSk7Ci0KLSNlbHNlCi0KLS8vIEdvb2dsZSBUZXN0IG1heSBub3Qgc3VwcG9ydCB2YWx1
ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIHdpdGggc29tZQotLy8gY29tcGlsZXJzLiBJZiB3ZSB1c2Ug
Y29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gY29tcGlsZSBvdXQgYWxsCi0vLyBjb2RlIHJlZmVy
cmluZyB0byB0aGUgZ3Rlc3RfbWFpbiBsaWJyYXJ5LCBNU1ZDIGxpbmtlciB3aWxsIG5vdCBsaW5r
Ci0vLyB0aGF0IGxpYnJhcnkgYXQgYWxsIGFuZCBjb25zZXF1ZW50bHkgY29tcGxhaW4gYWJvdXQg
bWlzc2luZyBlbnRyeQotLy8gcG9pbnQgZGVmaW5lZCBpbiB0aGF0IGxpYnJhcnkgKGZhdGFsIGVy
cm9yIExOSzE1NjE6IGVudHJ5IHBvaW50Ci0vLyBtdXN0IGJlIGRlZmluZWQpLiBUaGlzIGR1bW15
IHRlc3Qga2VlcHMgZ3Rlc3RfbWFpbiBsaW5rZWQgaW4uCi1URVNUKER1bW15VGVzdCwgVmFsdWVQ
YXJhbWV0ZXJpemVkVGVzdHNBcmVOb3RTdXBwb3J0ZWRPblRoaXNQbGF0Zm9ybSkge30KK0lOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QKE9uVGhlRmx5QW5kUHJlQ2FsY3VsYXRlZCwgUHJpbWVUYWJsZVRl
c3RTbXBsNywKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygmQ3JlYXRlT25UaGVGbHlQ
cmltZVRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDcmVhdGVQcmVDYWxj
dWxhdGVkUHJpbWVUYWJsZTwxMDAwPikpOwogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9U
RVNUCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Nh
bXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYwppbmRleCBjY2Y2MWQ5MmI4NWMzMTJmN2YyZWMyZjZk
OGE2NzNkZmY0YjAyZDY2Li5jZTc1Y2YwMzA4NzBjMzc2ZGZlYzYwMzFkYjI0NzExMDg3MDM4M2Y2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZThfdW5p
dHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU4X3Vu
aXR0ZXN0LmNjCkBAIC0yNiw4ICsyNiw3IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFk
IExvc2V2KQorCiAKIC8vIFRoaXMgc2FtcGxlIHNob3dzIGhvdyB0byB0ZXN0IGNvZGUgcmVseWlu
ZyBvbiBzb21lIGdsb2JhbCBmbGFnIHZhcmlhYmxlcy4KIC8vIENvbWJpbmUoKSBoZWxwcyB3aXRo
IGdlbmVyYXRpbmcgYWxsIHBvc3NpYmxlIGNvbWJpbmF0aW9ucyBvZiBzdWNoIGZsYWdzLApAQCAt
MzYsOCArMzUsOCBAQAogLy8gVXNlIGNsYXNzIGRlZmluaXRpb25zIHRvIHRlc3QgZnJvbSB0aGlz
IGhlYWRlci4KICNpbmNsdWRlICJwcmltZV90YWJsZXMuaCIKIAotI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0Lmg+Ci0KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorbmFtZXNwYWNlIHsKICNpZiBHVEVT
VF9IQVNfQ09NQklORQogCiAvLyBTdXBwb3NlIHdlIHdhbnQgdG8gaW50cm9kdWNlIGEgbmV3LCBp
bXByb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBQcmltZVRhYmxlCkBAIC05MCw3ICs4OSw3IEBAIHVz
aW5nIDo6dGVzdGluZzo6Q29tYmluZTsKIC8vIFByZUNhbGN1bGF0ZWRQcmltZVRhYmxlIGRpc2Fi
bGVkLiBXZSBkbyB0aGlzIGJ5IGRlZmluaW5nIGZpeHR1cmUgd2hpY2ggd2lsbAogLy8gYWNjZXB0
IGRpZmZlcmVudCBjb21iaW5hdGlvbnMgb2YgcGFyYW1ldGVycyBmb3IgaW5zdGFudGlhdGluZyBh
CiAvLyBIeWJyaWRQcmltZVRhYmxlIGluc3RhbmNlLgotY2xhc3MgUHJpbWVUYWJsZVRlc3QgOiBw
dWJsaWMgVGVzdFdpdGhQYXJhbTwgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50PiA+IHsKK2Ns
YXNzIFByaW1lVGFibGVUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08IDo6dGVzdGluZzo6dHVw
bGU8Ym9vbCwgaW50PiA+IHsKICBwcm90ZWN0ZWQ6CiAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsK
ICAgICAvLyBUaGlzIGNhbiBiZSB3cml0dGVuIGFzCkBAIC0xMDEsOCArMTAwLDggQEAgY2xhc3Mg
UHJpbWVUYWJsZVRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTwgOjpzdGQ6OnRyMTo6dHVwbGU8
Ym9vbCwgaW50PiA+IHsKICAgICAvLwogICAgIC8vIG9uY2UgdGhlIEdvb2dsZSBDKysgU3R5bGUg
R3VpZGUgYWxsb3dzIHVzZSBvZiA6OnN0ZDo6dHIxOjp0aWUuCiAgICAgLy8KLSAgICBib29sIGZv
cmNlX29uX3RoZV9mbHkgPSA6OnN0ZDo6dHIxOjpnZXQ8MD4oR2V0UGFyYW0oKSk7Ci0gICAgaW50
IG1heF9wcmVjYWxjdWxhdGVkID0gOjpzdGQ6OnRyMTo6Z2V0PDE+KEdldFBhcmFtKCkpOworICAg
IGJvb2wgZm9yY2Vfb25fdGhlX2ZseSA9IDo6dGVzdGluZzo6Z2V0PDA+KEdldFBhcmFtKCkpOwor
ICAgIGludCBtYXhfcHJlY2FsY3VsYXRlZCA9IDo6dGVzdGluZzo6Z2V0PDE+KEdldFBhcmFtKCkp
OwogICAgIHRhYmxlXyA9IG5ldyBIeWJyaWRQcmltZVRhYmxlKGZvcmNlX29uX3RoZV9mbHksIG1h
eF9wcmVjYWxjdWxhdGVkKTsKICAgfQogICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CkBAIC0x
NzEsMyArMTcwLDQgQEAgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoTWVhbmluZ2Z1bFRlc3RQYXJh
bWV0ZXJzLAogVEVTVChEdW1teVRlc3QsIENvbWJpbmVJc05vdFN1cHBvcnRlZE9uVGhpc1BsYXRm
b3JtKSB7fQogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCit9ICAvLyBuYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlOV91bml0
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlOV91bml0dGVz
dC5jYwppbmRleCBkODI4ZWY0ZDg2Yjc0NmIyNTY5N2JkZDQ2ZDIxMDBhNDQ2MTQyZDMxLi41M2Y5
YWY1YmExZGZjMjY5NTY2MDc4ZjIzNmY2OTU1OTlkYzUyYWRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjCkBAIC0yNSw4ICsy
NSw3IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0v
LwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQorCiAKIC8vIFRoaXMg
c2FtcGxlIHNob3dzIGhvdyB0byB1c2UgR29vZ2xlIFRlc3QgbGlzdGVuZXIgQVBJIHRvIGltcGxl
bWVudAogLy8gYW4gYWx0ZXJuYXRpdmUgY29uc29sZSBvdXRwdXQgYW5kIGhvdyB0byB1c2UgdGhl
IFVuaXRUZXN0IHJlZmxlY3Rpb24gQVBJCkBAIC0zNCw3ICszMyw3IEBACiAKICNpbmNsdWRlIDxz
dGRpby5oPgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVz
dC5oIgogCiB1c2luZyA6OnRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXI7CiB1c2luZyA6
OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0OwpAQCAtNDQsOSArNDMsNyBAQCB1c2luZyA6OnRlc3Rp
bmc6OlRlc3RFdmVudExpc3RlbmVyczsKIHVzaW5nIDo6dGVzdGluZzo6VGVzdEluZm87CiB1c2lu
ZyA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OwogdXNpbmcgOjp0ZXN0aW5nOjpVbml0VGVzdDsK
LQogbmFtZXNwYWNlIHsKLQogLy8gUHJvdmlkZXMgYWx0ZXJuYXRpdmUgb3V0cHV0IG1vZGUgd2hp
Y2ggcHJvZHVjZXMgbWluaW1hbCBhbW91bnQgb2YKIC8vIGluZm9ybWF0aW9uIGFib3V0IHRlc3Rz
LgogY2xhc3MgVGVyc2VQcmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewpA
QCAtNjksNyArNjYsNyBAQCBjbGFzcyBUZXJzZVByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZl
bnRMaXN0ZW5lciB7CiAgICAgZmZsdXNoKHN0ZG91dCk7CiAgIH0KIAotICAvLyBDYWxsZWQgYWZ0
ZXIgYSBmYWlsZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VTUygpLgorICAvLyBDYWxsZWQgYWZ0ZXIg
YSBmYWlsZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VFRCgpIGludm9jYXRpb24uCiAgIHZpcnR1YWwg
dm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVz
dWx0KSB7CiAgICAgZnByaW50ZihzdGRvdXQsCiAgICAgICAgICAgICAiJXMgaW4gJXM6JWRcbiVz
XG4iLApAQCAtMTAyLDcgKzk5LDYgQEAgVEVTVChDdXN0b21PdXRwdXRUZXN0LCBGYWlscykgewog
ICBFWFBFQ1RfRVEoMSwgMikKICAgICAgIDw8ICJUaGlzIHRlc3QgZmFpbHMgaW4gb3JkZXIgdG8g
ZGVtb25zdHJhdGUgYWx0ZXJuYXRpdmUgZmFpbHVyZSBtZXNzYWdlcyI7CiB9Ci0KIH0gIC8vIG5h
bWVzcGFjZQogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvY29tbW9uLnB5IGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc2NyaXB0cy9jb21tb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MwMzQ3YTc1YmRmZjMx
ODgwOTc3NDUwMTVhNTgwMzc2NGFkNzQxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NjcmlwdHMvY29tbW9uLnB5CkBAIC0wLDAgKzEsODMgQEAKKyMgQ29weXJp
Z2h0IDIwMTMgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyIiIlNoYXJlZCB1dGlsaXRpZXMgZm9yIHdyaXRpbmcgc2NyaXB0cyBmb3IgR29vZ2xl
IFRlc3QvTW9jay4iIiIKKworX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcg
V2FuKScKKworCitpbXBvcnQgb3MKK2ltcG9ydCByZQorCisKKyMgTWF0Y2hlcyB0aGUgbGluZSBm
cm9tICdzdm4gaW5mbyAuJyBvdXRwdXQgdGhhdCBkZXNjcmliZXMgd2hhdCBTVk4KKyMgcGF0aCB0
aGUgY3VycmVudCBsb2NhbCBkaXJlY3RvcnkgY29ycmVzcG9uZHMgdG8uICBGb3IgZXhhbXBsZSwg
aW4KKyMgYSBnb29nbGV0ZXN0IFNWTiB3b3Jrc3BhY2UncyB0cnVuay90ZXN0IGRpcmVjdG9yeSwg
dGhlIG91dHB1dCB3aWxsIGJlOgorIworIyBVUkw6IGh0dHBzOi8vZ29vZ2xldGVzdC5nb29nbGVj
b2RlLmNvbS9zdm4vdHJ1bmsvdGVzdAorX1NWTl9JTkZPX1VSTF9SRSA9IHJlLmNvbXBpbGUocide
VVJMOiBodHRwczovLyhcdyspXC5nb29nbGVjb2RlXC5jb20vc3ZuKC4qKScpCisKKworZGVmIEdl
dENvbW1hbmRPdXRwdXQoY29tbWFuZCk6CisgICIiIlJ1bnMgdGhlIHNoZWxsIGNvbW1hbmQgYW5k
IHJldHVybnMgaXRzIHN0ZG91dCBhcyBhIGxpc3Qgb2YgbGluZXMuIiIiCisKKyAgZiA9IG9zLnBv
cGVuKGNvbW1hbmQsICdyJykKKyAgbGluZXMgPSBbbGluZS5zdHJpcCgpIGZvciBsaW5lIGluIGYu
cmVhZGxpbmVzKCldCisgIGYuY2xvc2UoKQorICByZXR1cm4gbGluZXMKKworCitkZWYgR2V0U3Zu
SW5mbygpOgorICAiIiJSZXR1cm5zIHRoZSBwcm9qZWN0IG5hbWUgYW5kIHRoZSBjdXJyZW50IFNW
TiB3b3Jrc3BhY2UncyByb290IHBhdGguIiIiCisKKyAgZm9yIGxpbmUgaW4gR2V0Q29tbWFuZE91
dHB1dCgnc3ZuIGluZm8gLicpOgorICAgIG0gPSBfU1ZOX0lORk9fVVJMX1JFLm1hdGNoKGxpbmUp
CisgICAgaWYgbToKKyAgICAgIHByb2plY3QgPSBtLmdyb3VwKDEpICAjIGdvb2dsZXRlc3Qgb3Ig
Z29vZ2xlbW9jaworICAgICAgcmVsX3BhdGggPSBtLmdyb3VwKDIpCisgICAgICByb290ID0gb3Mu
cGF0aC5yZWFscGF0aChyZWxfcGF0aC5jb3VudCgnLycpICogJy4uLycpCisgICAgICByZXR1cm4g
cHJvamVjdCwgcm9vdAorCisgIHJldHVybiBOb25lLCBOb25lCisKKworZGVmIEdldFN2blRydW5r
KCk6CisgICIiIlJldHVybnMgdGhlIGN1cnJlbnQgU1ZOIHdvcmtzcGFjZSdzIHRydW5rIHJvb3Qg
cGF0aC4iIiIKKworICBfLCByb290ID0gR2V0U3ZuSW5mbygpCisgIHJldHVybiByb290ICsgJy90
cnVuaycgaWYgcm9vdCBlbHNlIE5vbmUKKworCitkZWYgSXNJbkdUZXN0U3ZuKCk6CisgIHByb2pl
Y3QsIF8gPSBHZXRTdm5JbmZvKCkKKyAgcmV0dXJuIHByb2plY3QgPT0gJ2dvb2dsZXRlc3QnCisK
KworZGVmIElzSW5HTW9ja1N2bigpOgorICBwcm9qZWN0LCBfID0gR2V0U3ZuSW5mbygpCisgIHJl
dHVybiBwcm9qZWN0ID09ICdnb29nbGVtb2NrJwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc2NyaXB0cy9mdXNlX2d0ZXN0X2ZpbGVzLnB5IGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2NyaXB0cy9mdXNlX2d0ZXN0X2ZpbGVzLnB5CmluZGV4IDE0ODQ0NGNhNzExYjFlZGFh
YWZlYThkNzgyNmQzY2ZkNGMwMWRlMGIuLmQwZGQ0NjRmZThiNTljNTQxMGEzZDFiODVkYjQ3OTVi
YmQwMzFkODkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvZnVz
ZV9ndGVzdF9maWxlcy5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2Z1
c2VfZ3Rlc3RfZmlsZXMucHkKQEAgLTUyLDcgKzUyLDcgQEAgRVhBTVBMRVMKIFRoaXMgdG9vbCBp
cyBleHBlcmltZW50YWwuICBJbiBwYXJ0aWN1bGFyLCBpdCBhc3N1bWVzIHRoYXQgdGhlcmUgaXMg
bm8KIGNvbmRpdGlvbmFsIGluY2x1c2lvbiBvZiBHb29nbGUgVGVzdCBoZWFkZXJzLiAgUGxlYXNl
IHJlcG9ydCBhbnkKIHByb2JsZW1zIHRvIGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBz
LmNvbS4gIFlvdSBjYW4gcmVhZAotaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qv
d2lraS9Hb29nbGVUZXN0QWR2YW5jZWRHdWlkZSBmb3IKK2h0dHBzOi8vZ2l0aHViLmNvbS9nb29n
bGUvZ29vZ2xldGVzdC9ibG9iL21hc3Rlci9nb29nbGV0ZXN0L2RvY3MvYWR2YW5jZWQubWQgZm9y
CiBtb3JlIGluZm9ybWF0aW9uLgogIiIiCiAKQEAgLTYwLDE1ICs2MCwxOCBAQCBfX2F1dGhvcl9f
ID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwogCiBpbXBvcnQgb3MKIGltcG9ydCBy
ZQotaW1wb3J0IHNldHMKK3RyeToKKyAgZnJvbSBzZXRzIGltcG9ydCBTZXQgYXMgc2V0ICAjIEZv
ciBQeXRob24gMi4zIGNvbXBhdGliaWxpdHkKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgcGFzcwog
aW1wb3J0IHN5cwogCiAjIFdlIGFzc3VtZSB0aGF0IHRoaXMgZmlsZSBpcyBpbiB0aGUgc2NyaXB0
cy8gZGlyZWN0b3J5IGluIHRoZSBHb29nbGUKICMgVGVzdCByb290IGRpcmVjdG9yeS4KIERFRkFV
TFRfR1RFU1RfUk9PVF9ESVIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9f
KSwgJy4uJykKIAotIyBSZWdleCBmb3IgbWF0Y2hpbmcgJyNpbmNsdWRlIDxndGVzdC8uLi4+Jy4K
LUlOQ0xVREVfR1RFU1RfRklMRV9SRUdFWCA9IHJlLmNvbXBpbGUocideXHMqI1xzKmluY2x1ZGVc
cyo8KGd0ZXN0Ly4rKT4nKQorIyBSZWdleCBmb3IgbWF0Y2hpbmcgJyNpbmNsdWRlICJndGVzdC8u
Li4iJy4KK0lOQ0xVREVfR1RFU1RfRklMRV9SRUdFWCA9IHJlLmNvbXBpbGUocideXHMqI1xzKmlu
Y2x1ZGVccyoiKGd0ZXN0Ly4rKSInKQogCiAjIFJlZ2V4IGZvciBtYXRjaGluZyAnI2luY2x1ZGUg
InNyYy8uLi4iJy4KIElOQ0xVREVfU1JDX0ZJTEVfUkVHRVggPSByZS5jb21waWxlKHInXlxzKiNc
cyppbmNsdWRlXHMqIihzcmMvLispIicpCkBAIC05MCwxMCArOTMsMTAgQEAgZGVmIFZlcmlmeUZp
bGVFeGlzdHMoZGlyZWN0b3J5LCByZWxhdGl2ZV9wYXRoKToKICAgIiIiCiAKICAgaWYgbm90IG9z
LnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkaXJlY3RvcnksIHJlbGF0aXZlX3BhdGgpKToKLSAg
ICBwcmludCAnRVJST1I6IENhbm5vdCBmaW5kICVzIGluIGRpcmVjdG9yeSAlcy4nICUgKHJlbGF0
aXZlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaXJlY3RvcnkpCi0gICAgcHJpbnQgKCdQbGVhc2UgZWl0aGVyIHNwZWNpZnkgYSB2
YWxpZCBwcm9qZWN0IHJvb3QgZGlyZWN0b3J5ICcKLSAgICAgICAgICAgJ29yIG9taXQgaXQgb24g
dGhlIGNvbW1hbmQgbGluZS4nKQorICAgIHByaW50KCdFUlJPUjogQ2Fubm90IGZpbmQgJXMgaW4g
ZGlyZWN0b3J5ICVzLicgJSAocmVsYXRpdmVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSkpCisgICAgcHJpbnQoJ1Bs
ZWFzZSBlaXRoZXIgc3BlY2lmeSBhIHZhbGlkIHByb2plY3Qgcm9vdCBkaXJlY3RvcnkgJworICAg
ICAgICAgICdvciBvbWl0IGl0IG9uIHRoZSBjb21tYW5kIGxpbmUuJykKICAgICBzeXMuZXhpdCgx
KQogCiAKQEAgLTExOSwxMSArMTIyLDExIEBAIGRlZiBWZXJpZnlPdXRwdXRGaWxlKG91dHB1dF9k
aXIsIHJlbGF0aXZlX3BhdGgpOgogICAgICMgVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IFRoZSBmb2xs
b3dpbmcgdXNlci1pbnRlcmFjdGlvbiBkb2Vzbid0CiAgICAgIyB3b3JrIHdpdGggYXV0b21hdGVk
IHByb2Nlc3Nlcy4gIFdlIHNob3VsZCBwcm92aWRlIGEgd2F5IGZvciB0aGUKICAgICAjIE1ha2Vm
aWxlIHRvIGZvcmNlIG92ZXJ3cml0aW5nIHRoZSBmaWxlcy4KLSAgICBwcmludCAoJyVzIGFscmVh
ZHkgZXhpc3RzIGluIGRpcmVjdG9yeSAlcyAtIG92ZXJ3cml0ZSBpdD8gKHkvTikgJyAlCi0gICAg
ICAgICAgIChyZWxhdGl2ZV9wYXRoLCBvdXRwdXRfZGlyKSkKKyAgICBwcmludCgnJXMgYWxyZWFk
eSBleGlzdHMgaW4gZGlyZWN0b3J5ICVzIC0gb3ZlcndyaXRlIGl0PyAoeS9OKSAnICUKKyAgICAg
ICAgICAocmVsYXRpdmVfcGF0aCwgb3V0cHV0X2RpcikpCiAgICAgYW5zd2VyID0gc3lzLnN0ZGlu
LnJlYWRsaW5lKCkuc3RyaXAoKQogICAgIGlmIGFuc3dlciBub3QgaW4gWyd5JywgJ1knXToKLSAg
ICAgIHByaW50ICdBQk9SVEVELicKKyAgICAgIHByaW50KCdBQk9SVEVELicpCiAgICAgICBzeXMu
ZXhpdCgxKQogCiAgICMgTWFrZXMgc3VyZSB0aGUgZGlyZWN0b3J5IGhvbGRpbmcgdGhlIG91dHB1
dCBmaWxlIGV4aXN0czsgY3JlYXRlcwpAQCAtMTQ2LDggKzE0OSw4IEBAIGRlZiBWYWxpZGF0ZU91
dHB1dERpcihvdXRwdXRfZGlyKToKIGRlZiBGdXNlR1Rlc3RIKGd0ZXN0X3Jvb3QsIG91dHB1dF9k
aXIpOgogICAiIiJTY2FucyBmb2xkZXIgZ3Rlc3Rfcm9vdCB0byBnZW5lcmF0ZSBndGVzdC9ndGVz
dC5oIGluIG91dHB1dF9kaXIuIiIiCiAKLSAgb3V0cHV0X2ZpbGUgPSBmaWxlKG9zLnBhdGguam9p
bihvdXRwdXRfZGlyLCBHVEVTVF9IX09VVFBVVCksICd3JykKLSAgcHJvY2Vzc2VkX2ZpbGVzID0g
c2V0cy5TZXQoKSAgIyBIb2xkcyBhbGwgZ3Rlc3QgaGVhZGVycyB3ZSd2ZSBwcm9jZXNzZWQuCisg
IG91dHB1dF9maWxlID0gb3Blbihvcy5wYXRoLmpvaW4ob3V0cHV0X2RpciwgR1RFU1RfSF9PVVRQ
VVQpLCAndycpCisgIHByb2Nlc3NlZF9maWxlcyA9IHNldCgpICAjIEhvbGRzIGFsbCBndGVzdCBo
ZWFkZXJzIHdlJ3ZlIHByb2Nlc3NlZC4KIAogICBkZWYgUHJvY2Vzc0ZpbGUoZ3Rlc3RfaGVhZGVy
X3BhdGgpOgogICAgICIiIlByb2Nlc3NlcyB0aGUgZ2l2ZW4gZ3Rlc3QgaGVhZGVyIGZpbGUuIiIi
CkBAIC0xNTksMTAgKzE2MiwxMCBAQCBkZWYgRnVzZUdUZXN0SChndGVzdF9yb290LCBvdXRwdXRf
ZGlyKToKICAgICBwcm9jZXNzZWRfZmlsZXMuYWRkKGd0ZXN0X2hlYWRlcl9wYXRoKQogCiAgICAg
IyBSZWFkcyBlYWNoIGxpbmUgaW4gdGhlIGdpdmVuIGd0ZXN0IGhlYWRlci4KLSAgICBmb3IgbGlu
ZSBpbiBmaWxlKG9zLnBhdGguam9pbihndGVzdF9yb290LCBndGVzdF9oZWFkZXJfcGF0aCksICdy
Jyk6CisgICAgZm9yIGxpbmUgaW4gb3Blbihvcy5wYXRoLmpvaW4oZ3Rlc3Rfcm9vdCwgZ3Rlc3Rf
aGVhZGVyX3BhdGgpLCAncicpOgogICAgICAgbSA9IElOQ0xVREVfR1RFU1RfRklMRV9SRUdFWC5t
YXRjaChsaW5lKQogICAgICAgaWYgbToKLSAgICAgICAgIyBJdCdzICcjaW5jbHVkZSA8Z3Rlc3Qv
Li4uPicgLSBsZXQncyBwcm9jZXNzIGl0IHJlY3Vyc2l2ZWx5LgorICAgICAgICAjIEl0J3MgJyNp
bmNsdWRlICJndGVzdC8uLi4iJyAtIGxldCdzIHByb2Nlc3MgaXQgcmVjdXJzaXZlbHkuCiAgICAg
ICAgIFByb2Nlc3NGaWxlKCdpbmNsdWRlLycgKyBtLmdyb3VwKDEpKQogICAgICAgZWxzZToKICAg
ICAgICAgIyBPdGhlcndpc2Ugd2UgY29weSB0aGUgbGluZSB1bmNoYW5nZWQgdG8gdGhlIG91dHB1
dCBmaWxlLgpAQCAtMTc1LDcgKzE3OCw3IEBAIGRlZiBGdXNlR1Rlc3RIKGd0ZXN0X3Jvb3QsIG91
dHB1dF9kaXIpOgogZGVmIEZ1c2VHVGVzdEFsbENjVG9GaWxlKGd0ZXN0X3Jvb3QsIG91dHB1dF9m
aWxlKToKICAgIiIiU2NhbnMgZm9sZGVyIGd0ZXN0X3Jvb3QgdG8gZ2VuZXJhdGUgZ3Rlc3QvZ3Rl
c3QtYWxsLmNjIGluIG91dHB1dF9maWxlLiIiIgogCi0gIHByb2Nlc3NlZF9maWxlcyA9IHNldHMu
U2V0KCkKKyAgcHJvY2Vzc2VkX2ZpbGVzID0gc2V0KCkKIAogICBkZWYgUHJvY2Vzc0ZpbGUoZ3Rl
c3Rfc291cmNlX2ZpbGUpOgogICAgICIiIlByb2Nlc3NlcyB0aGUgZ2l2ZW4gZ3Rlc3Qgc291cmNl
IGZpbGUuIiIiCkBAIC0xODcsMjMgKzE5MCwyMyBAQCBkZWYgRnVzZUdUZXN0QWxsQ2NUb0ZpbGUo
Z3Rlc3Rfcm9vdCwgb3V0cHV0X2ZpbGUpOgogICAgIHByb2Nlc3NlZF9maWxlcy5hZGQoZ3Rlc3Rf
c291cmNlX2ZpbGUpCiAKICAgICAjIFJlYWRzIGVhY2ggbGluZSBpbiB0aGUgZ2l2ZW4gZ3Rlc3Qg
c291cmNlIGZpbGUuCi0gICAgZm9yIGxpbmUgaW4gZmlsZShvcy5wYXRoLmpvaW4oZ3Rlc3Rfcm9v
dCwgZ3Rlc3Rfc291cmNlX2ZpbGUpLCAncicpOgorICAgIGZvciBsaW5lIGluIG9wZW4ob3MucGF0
aC5qb2luKGd0ZXN0X3Jvb3QsIGd0ZXN0X3NvdXJjZV9maWxlKSwgJ3InKToKICAgICAgIG0gPSBJ
TkNMVURFX0dURVNUX0ZJTEVfUkVHRVgubWF0Y2gobGluZSkKICAgICAgIGlmIG06CiAgICAgICAg
IGlmICdpbmNsdWRlLycgKyBtLmdyb3VwKDEpID09IEdURVNUX1NQSV9IX1NFRUQ6Ci0gICAgICAg
ICAgIyBJdCdzICcjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+Jy4gIFRoaXMgZmlsZSBpcyBu
b3QKLSAgICAgICAgICAjICNpbmNsdWRlZCBieSA8Z3Rlc3QvZ3Rlc3QuaD4sIHNvIHdlIG5lZWQg
dG8gcHJvY2VzcyBpdC4KKyAgICAgICAgICAjIEl0J3MgJyNpbmNsdWRlICJndGVzdC9ndGVzdC1z
cGkuaCInLiAgVGhpcyBmaWxlIGlzIG5vdAorICAgICAgICAgICMgI2luY2x1ZGVkIGJ5ICJndGVz
dC9ndGVzdC5oIiwgc28gd2UgbmVlZCB0byBwcm9jZXNzIGl0LgogICAgICAgICAgIFByb2Nlc3NG
aWxlKEdURVNUX1NQSV9IX1NFRUQpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgIyBJdCdzICcj
aW5jbHVkZSA8Z3Rlc3QvZm9vLmg+JyB3aGVyZSBmb28gaXMgbm90IGd0ZXN0LXNwaS4KLSAgICAg
ICAgICAjIFdlIHRyZWF0IGl0IGFzICcjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4nLCBhcyBhbGwg
b3RoZXIKKyAgICAgICAgICAjIEl0J3MgJyNpbmNsdWRlICJndGVzdC9mb28uaCInIHdoZXJlIGZv
byBpcyBub3QgZ3Rlc3Qtc3BpLgorICAgICAgICAgICMgV2UgdHJlYXQgaXQgYXMgJyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIicsIGFzIGFsbCBvdGhlcgogICAgICAgICAgICMgZ3Rlc3QgaGVhZGVy
cyBhcmUgYmVpbmcgZnVzZWQgaW50byBndGVzdC5oIGFuZCBjYW5ub3QgYmUKICAgICAgICAgICAj
ICNpbmNsdWRlZCBkaXJlY3RseS4KIAotICAgICAgICAgICMgVGhlcmUgaXMgbm8gbmVlZCB0byAj
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4gbW9yZSB0aGFuIG9uY2UuCisgICAgICAgICAgIyBUaGVy
ZSBpcyBubyBuZWVkIHRvICNpbmNsdWRlICJndGVzdC9ndGVzdC5oIiBtb3JlIHRoYW4gb25jZS4K
ICAgICAgICAgICBpZiBub3QgR1RFU1RfSF9TRUVEIGluIHByb2Nlc3NlZF9maWxlczoKICAgICAg
ICAgICAgIHByb2Nlc3NlZF9maWxlcy5hZGQoR1RFU1RfSF9TRUVEKQotICAgICAgICAgICAgb3V0
cHV0X2ZpbGUud3JpdGUoJyNpbmNsdWRlIDwlcz5cbicgJSAoR1RFU1RfSF9PVVRQVVQsKSkKKyAg
ICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKCcjaW5jbHVkZSAiJXMiXG4nICUgKEdURVNUX0hf
T1VUUFVULCkpCiAgICAgICBlbHNlOgogICAgICAgICBtID0gSU5DTFVERV9TUkNfRklMRV9SRUdF
WC5tYXRjaChsaW5lKQogICAgICAgICBpZiBtOgpAQCAtMjE4LDcgKzIyMSw3IEBAIGRlZiBGdXNl
R1Rlc3RBbGxDY1RvRmlsZShndGVzdF9yb290LCBvdXRwdXRfZmlsZSk6CiBkZWYgRnVzZUdUZXN0
QWxsQ2MoZ3Rlc3Rfcm9vdCwgb3V0cHV0X2Rpcik6CiAgICIiIlNjYW5zIGZvbGRlciBndGVzdF9y
b290IHRvIGdlbmVyYXRlIGd0ZXN0L2d0ZXN0LWFsbC5jYyBpbiBvdXRwdXRfZGlyLiIiIgogCi0g
IG91dHB1dF9maWxlID0gZmlsZShvcy5wYXRoLmpvaW4ob3V0cHV0X2RpciwgR1RFU1RfQUxMX0ND
X09VVFBVVCksICd3JykKKyAgb3V0cHV0X2ZpbGUgPSBvcGVuKG9zLnBhdGguam9pbihvdXRwdXRf
ZGlyLCBHVEVTVF9BTExfQ0NfT1VUUFVUKSwgJ3cnKQogICBGdXNlR1Rlc3RBbGxDY1RvRmlsZShn
dGVzdF9yb290LCBvdXRwdXRfZmlsZSkKICAgb3V0cHV0X2ZpbGUuY2xvc2UoKQogCkBAIC0yNDIs
NyArMjQ1LDcgQEAgZGVmIG1haW4oKToKICAgICAjIGZ1c2VfZ3Rlc3RfZmlsZXMucHkgR1RFU1Rf
Uk9PVF9ESVIgT1VUUFVUX0RJUgogICAgIEZ1c2VHVGVzdChzeXMuYXJndlsxXSwgc3lzLmFyZ3Zb
Ml0pCiAgIGVsc2U6Ci0gICAgcHJpbnQgX19kb2NfXworICAgIHByaW50KF9fZG9jX18pCiAgICAg
c3lzLmV4aXQoMSkKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3Jp
cHRzL2dlbl9ndGVzdF9wcmVkX2ltcGwucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3Jp
cHRzL2dlbl9ndGVzdF9wcmVkX2ltcGwucHkKaW5kZXggODMwNzEzNGFkYWY0ZGEyYmU4ZmEyMzMy
MjkxNTIwZDM5Yzk0YmIxMi4uYjQzZWZkZjQxZTVjMDI3NDBmNzJiMzU1MzJiZTVjZjA0OTc5NDgz
NSAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9nZW5fZ3Rlc3Rf
cHJlZF9pbXBsLnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvZ2VuX2d0
ZXN0X3ByZWRfaW1wbC5weQpAQCAtMTE1LDEwICsxMTUsOSBAQCBkZWYgSGVhZGVyUHJlYW1ibGUo
bik6CiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJFRF9JTVBMX0hfCiAjZGVm
aW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJFRF9JTVBMX0hfCiAKLS8vIE1ha2VzIHN1
cmUgdGhpcyBoZWFkZXIgaXMgbm90IGluY2x1ZGVkIGJlZm9yZSBndGVzdC5oLgotI2lmbmRlZiBH
VEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0hfCi0jZXJyb3IgRG8gbm90IGluY2x1ZGUgZ3Rlc3Rf
cHJlZF9pbXBsLmggZGlyZWN0bHkuICBJbmNsdWRlIGd0ZXN0LmggaW5zdGVhZC4KLSNlbmRpZiAg
Ly8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9IXworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKIAogLy8gVGhpcyBoZWFkZXIgaW1wbGVtZW50cyBhIGZh
bWlseSBvZiBnZW5lcmljIHByZWRpY2F0ZSBhc3NlcnRpb24KIC8vIG1hY3JvczoKQEAgLTIzOCwy
NyArMjM3LDI1IEBAIEFzc2VydGlvblJlc3VsdCBBc3NlcnRQcmVkJShuKXNIZWxwZXIoY29uc3Qg
Y2hhciogcHJlZF90ZXh0IiIiICUgREVGUwogICBpbXBsICs9ICIiIikgewogICBpZiAocHJlZCgl
KHZzKXMpKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIE1lc3NhZ2UgbXNnOwogIiIi
ICUgREVGUwogCi0gIGltcGwgKz0gJyAgbXNnIDw8IHByZWRfdGV4dCA8PCAiKCInCisgIGltcGwg
Kz0gJyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBwcmVkX3RleHQgPDwgIigiJwogCiAg
IGltcGwgKz0gSXRlcihuLCAiIiIKLSAgICAgIDw8IGUlcyIiIiwgc2VwPScgPDwgIiwgIicpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZSVzIiIiLCBzZXA9JyA8PCAiLCAiJykKIAog
ICBpbXBsICs9ICcgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSInCiAKICAgaW1wbCAr
PSBJdGVyKG4sICIiIgotICAgICAgPDwgIlxcbiIgPDwgZSVzIDw8ICIgZXZhbHVhdGVzIHRvICIg
PDwgdiVzIiIiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcXG4iIDw8IGUlcyA8
PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYlcyIiIikKIAogICBpbXBsICs9ICIiIjsKLSAgcmV0dXJu
IEFzc2VydGlvbkZhaWx1cmUobXNnKTsKIH0KIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxl
bWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQlKG4pcy4KIC8vIERvbid0IHVzZSB0
aGlzIGluIHlvdXIgY29kZS4KICNkZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQlKG4pc18ocHJlZF9m
b3JtYXQsICUodnMpcywgb25fZmFpbHVyZSlcXAotICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0
KCUodnRzKXMsICUodnMpcyksXFwKKyAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCglKHZ0cylz
LCAlKHZzKXMpLCBcXAogICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVybmFs
IG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQlKG4pcy4gIERvbid0
IHVzZQpAQCAtMjk3LDE2ICsyOTQsMTcgQEAgZGVmIEhlYWRlclBvc3RhbWJsZSgpOgogCiAgIHJl
dHVybiAiIiIKIAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKwogI2VuZGlmICAvLyBHVEVTVF9J
TkNMVURFX0dURVNUX0dURVNUX1BSRURfSU1QTF9IXwogIiIiCiAKIAogZGVmIEdlbmVyYXRlRmls
ZShwYXRoLCBjb250ZW50KToKLSAgIiIiR2l2ZW4gYSBmaWxlIHBhdGggYW5kIGEgY29udGVudCBz
dHJpbmcsIG92ZXJ3cml0ZXMgaXQgd2l0aCB0aGUKLSAgZ2l2ZW4gY29udGVudC4iIiIKLQorICAi
IiJHaXZlbiBhIGZpbGUgcGF0aCBhbmQgYSBjb250ZW50IHN0cmluZworICAgICBvdmVyd3JpdGVz
IGl0IHdpdGggdGhlIGdpdmVuIGNvbnRlbnQuCisgICIiIgogICBwcmludCAnVXBkYXRpbmcgZmls
ZSAlcyAuIC4gLicgJSBwYXRoCi0KICAgZiA9IGZpbGUocGF0aCwgJ3crJykKICAgcHJpbnQgPj5m
LCBjb250ZW50LAogICBmLmNsb3NlKCkKQEAgLTMxNiw4ICszMTQsOCBAQCBkZWYgR2VuZXJhdGVG
aWxlKHBhdGgsIGNvbnRlbnQpOgogCiBkZWYgR2VuZXJhdGVIZWFkZXIobik6CiAgICIiIkdpdmVu
IHRoZSBtYXhpbXVtIGFyaXR5IG4sIHVwZGF0ZXMgdGhlIGhlYWRlciBmaWxlIHRoYXQgaW1wbGVt
ZW50cwotICB0aGUgcHJlZGljYXRlIGFzc2VydGlvbnMuIiIiCi0KKyAgdGhlIHByZWRpY2F0ZSBh
c3NlcnRpb25zLgorICAiIiIKICAgR2VuZXJhdGVGaWxlKEhFQURFUiwKICAgICAgICAgICAgICAg
IEhlYWRlclByZWFtYmxlKG4pCiAgICAgICAgICAgICAgICArICcnLmpvaW4oW0ltcGxlbWVudGF0
aW9uRm9yQXJpdHkoaSkgZm9yIGkgaW4gT25lVG8obildKQpAQCAtMzg2LDggKzM4NCw4IEBAIGRl
ZiBVbml0VGVzdFByZWFtYmxlKCk6CiAKICNpbmNsdWRlIDxpb3N0cmVhbT4KIAotI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+CisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKIAogLy8gQSB1c2Vy
LWRlZmluZWQgZGF0YSB0eXBlLgogc3RydWN0IEJvb2wgewpAQCAtNDc4LDE1ICs0NzYsMTQgQEAg
dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRGb3JtYXRGdW5jdGlvbiUobilzKCIiIiAlIERF
RlMKICAgaWYgKFByZWRGdW5jdGlvbiUobilzKCUodnMpcykpCiAgICAgcmV0dXJuIHRlc3Rpbmc6
OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5nOjpNZXNzYWdlIG1zZzsKLSAgbXNnIDw8
ICIiIiAlIERFRlMKKyAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQorICAgICAg
PDwgIiIiICUgREVGUwogCiAgIHRlc3RzICs9IEl0ZXIobiwgJ2UlcycsIHNlcD0nIDw8ICIgKyAi
IDw8ICcpCiAKICAgdGVzdHMgKz0gIiIiCiAgICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJlIHBv
c2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKICAgICAgIDw8ICUodl9zdW0pcyA8PCAiLiI7Ci0g
IHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAiIiIgJSBERUZTCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvZ3Rlc3QtY29uZmln
LmluIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9ndGVzdC1jb25maWcuaW4KaW5k
ZXggOWM3MjYzODU0YjlmODYzYjYxOGM3MDhkZTFlZmUwZThiMWY3MjgwYS4uNzgwZjg0MzJlZmNj
MWFlZWFhYWQwNzA2MDg2ZDNmZjY0MTI4NWI2OCAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc2NyaXB0cy9ndGVzdC1jb25maWcuaW4KKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2NyaXB0cy9ndGVzdC1jb25maWcuaW4KQEAgLTIwOSw3ICsyMDksNyBAQCBpZiB0ZXN0
ICIke3RoaXNfYmluZGlyfSIgPSAiJHt0aGlzX2JpbmRpciUke2JpbmRpcn19IjsgdGhlbgogICAj
IFRoZSBwYXRoIHRvIHRoZSBzY3JpcHQgZG9lc24ndCBlbmQgaW4gdGhlIGJpbmRpciBzZXF1ZW5j
ZSBmcm9tIEF1dG9jb25mLAogICAjIGFzc3VtZSB0aGF0IHdlIGFyZSBpbiBhIGJ1aWxkIHRyZWUu
CiAgIGJ1aWxkX2Rpcj1gZGlybmFtZSAke3RoaXNfYmluZGlyfWAKLSAgc3JjX2Rpcj1gY2QgJHt0
aGlzX2JpbmRpcn0vQHRvcF9zcmNkaXJAOyBwd2QgLVBgCisgIHNyY19kaXI9YGNkICR7dGhpc19i
aW5kaXJ9OyBjZCBAdG9wX3NyY2RpckA7IHB3ZCAtUGAKIAogICAjIFRPRE8oY2hhbmRsZXJjQGdv
b2dsZS5jb20pOiBUaGlzIGlzIGEgZGFuZ2Vyb3VzIGRlcGVuZGVuY3kgb24gbGlidG9vbCwgd2UK
ICAgIyBzaG91bGQgd29yayB0byByZW1vdmUgaXQsIGFuZC9vciByZW1vdmUgbGlidG9vbCBhbHRv
Z2V0aGVyLCByZXBsYWNpbmcgaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NjcmlwdHMvcHVtcC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcHVtcC5w
eQppbmRleCBmMTVjMWI2Y2ViNGI4YjFiYjBiZjRlODNlM2VhOTNiMzhjNzg1ODAwLi41ZWZiNjUz
YzIwN2QxZjFjMmFlY2M0ZDY5MGJmNzMyZTNjMWQ3MWFiIDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3B1bXAucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2NyaXB0cy9wdW1wLnB5CkBAIC0yOSw3ICsyOSw3IEBACiAjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogCi0iIiJwdW1wIHYwLjEgLSBQcmV0dHkgVXNlZnVsIGZvciBNZXRhIFByb2dy
YW1taW5nLgorIiIicHVtcCB2MC4yLjAgLSBQcmV0dHkgVXNlZnVsIGZvciBNZXRhIFByb2dyYW1t
aW5nLgogCiBBIHRvb2wgZm9yIHByZXByb2Nlc3NvciBtZXRhIHByb2dyYW1taW5nLiAgVXNlZnVs
IGZvciBnZW5lcmF0aW5nCiByZXBldGl0aXZlIGJvaWxlcnBsYXRlIGNvZGUuICBFc3BlY2lhbGx5
IHVzZWZ1bCBmb3Igd3JpdGluZyBDKysKQEAgLTc4LDcgKzc4LDYgQEAgVE9LRU5fVEFCTEUgPSBb
CiAgICAgKHJlLmNvbXBpbGUocidcJHJhbmdlXHMrJyksICckcmFuZ2UnKSwKICAgICAocmUuY29t
cGlsZShyJ1wkW19BLVphLXpdXHcqJyksICckaWQnKSwKICAgICAocmUuY29tcGlsZShyJ1wkXChc
JFwpJyksICckKCQpJyksCi0gICAgKHJlLmNvbXBpbGUocidcJFwkLionKSwgJyQkJyksCiAgICAg
KHJlLmNvbXBpbGUocidcJCcpLCAnJCcpLAogICAgIChyZS5jb21waWxlKHInXFtcW1xuPycpLCAn
W1snKSwKICAgICAocmUuY29tcGlsZShyJ1xdXF1cbj8nKSwgJ11dJyksCkBAIC0yMjQsNiArMjIz
LDE3IEBAIGRlZiBTdWJTdHJpbmcobGluZXMsIHN0YXJ0LCBlbmQpOgogICByZXR1cm4gJycuam9p
bihyZXN1bHRfbGluZXMpCiAKIAorZGVmIFN0cmlwTWV0YUNvbW1lbnRzKHN0cik6CisgICIiIlN0
cmlwIG1ldGEgY29tbWVudHMgZnJvbSBlYWNoIGxpbmUgaW4gdGhlIGdpdmVuIHN0cmluZy4iIiIK
KworICAjIEZpcnN0LCBjb21wbGV0ZWx5IHJlbW92ZSBsaW5lcyBjb250YWluaW5nIG5vdGhpbmcg
YnV0IGEgbWV0YQorICAjIGNvbW1lbnQsIGluY2x1ZGluZyB0aGUgdHJhaWxpbmcgXG4uCisgIHN0
ciA9IHJlLnN1YihyJ15ccypcJFwkLipcbicsICcnLCBzdHIpCisKKyAgIyBUaGVuLCByZW1vdmUg
bWV0YSBjb21tZW50cyBmcm9tIGNvbnRlbnRmdWwgbGluZXMuCisgIHJldHVybiByZS5zdWIocidc
cypcJFwkLionLCAnJywgc3RyKQorCisKIGRlZiBNYWtlVG9rZW4obGluZXMsIHN0YXJ0LCBlbmQs
IHRva2VuX3R5cGUpOgogICAiIiJDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIFRva2VuLiIiIgog
CkBAIC0zMTEsMTEgKzMyMSw3IEBAIGRlZiBUb2tlbml6ZUxpbmVzKGxpbmVzLCBwb3MpOgogICAg
ICAgcHJldl90b2tlbiA9IE1ha2VUb2tlbihsaW5lcywgcG9zLCBmb3VuZC5zdGFydCwgJ2NvZGUn
KQogICAgICAgcHJldl90b2tlbl9yc3RyaXBwZWQgPSBSU3RyaXBOZXdMaW5lRnJvbVRva2VuKHBy
ZXZfdG9rZW4pCiAKLSAgICBpZiBmb3VuZC50b2tlbl90eXBlID09ICckJCc6ICAjIEEgbWV0YSBj
b21tZW50LgotICAgICAgaWYgcHJldl90b2tlbl9yc3RyaXBwZWQ6Ci0gICAgICAgIHlpZWxkIHBy
ZXZfdG9rZW5fcnN0cmlwcGVkCi0gICAgICBwb3MgPSBDdXJzb3IoZm91bmQuZW5kLmxpbmUgKyAx
LCAwKQotICAgIGVsaWYgZm91bmQudG9rZW5fdHlwZSA9PSAnJHZhcic6CisgICAgaWYgZm91bmQu
dG9rZW5fdHlwZSA9PSAnJHZhcic6CiAgICAgICBpZiBwcmV2X3Rva2VuX3JzdHJpcHBlZDoKICAg
ICAgICAgeWllbGQgcHJldl90b2tlbl9yc3RyaXBwZWQKICAgICAgIHlpZWxkIGZvdW5kCkBAIC0z
NzQsOCArMzgwLDExIEBAIGRlZiBUb2tlbml6ZUxpbmVzKGxpbmVzLCBwb3MpOgogCiAKIGRlZiBU
b2tlbml6ZShzKToKLSAgbGluZXMgPSBzLnNwbGl0bGluZXMoVHJ1ZSkKLSAgcmV0dXJuIFRva2Vu
aXplTGluZXMobGluZXMsIEN1cnNvcigwLCAwKSkKKyAgIiIiQSBnZW5lcmF0b3IgdGhhdCB5aWVs
ZHMgdGhlIHRva2VucyBpbiB0aGUgZ2l2ZW4gc3RyaW5nLiIiIgorICBpZiBzICE9ICcnOgorICAg
IGxpbmVzID0gcy5zcGxpdGxpbmVzKFRydWUpCisgICAgZm9yIHRva2VuIGluIFRva2VuaXplTGlu
ZXMobGluZXMsIEN1cnNvcigwLCAwKSk6CisgICAgICB5aWVsZCB0b2tlbgogCiAKIGNsYXNzIENv
ZGVOb2RlOgpAQCAtNTY1LDExICs1NzQsOSBAQCBkZWYgUGFyc2VDb2RlTm9kZSh0b2tlbnMpOgog
ICByZXR1cm4gQ29kZU5vZGUoYXRvbWljX2NvZGVfbGlzdCkKIAogCi1kZWYgQ29udmVydChmaWxl
X3BhdGgpOgotICBzID0gZmlsZShmaWxlX3BhdGgsICdyJykucmVhZCgpCi0gIHRva2VucyA9IFtd
Ci0gIGZvciB0b2tlbiBpbiBUb2tlbml6ZShzKToKLSAgICB0b2tlbnMuYXBwZW5kKHRva2VuKQor
ZGVmIFBhcnNlVG9BU1QocHVtcF9zcmNfdGV4dCk6CisgICIiIkNvbnZlcnQgdGhlIGdpdmVuIFB1
bXAgc291cmNlIHRleHQgaW50byBhbiBBU1QuIiIiCisgIHRva2VucyA9IGxpc3QoVG9rZW5pemUo
cHVtcF9zcmNfdGV4dCkpCiAgIGNvZGVfbm9kZSA9IFBhcnNlQ29kZU5vZGUodG9rZW5zKQogICBy
ZXR1cm4gY29kZV9ub2RlCiAKQEAgLTY5NywxNCArNzA0LDE0IEBAIGRlZiBSdW5Db2RlKGVudiwg
Y29kZV9ub2RlLCBvdXRwdXQpOgogICAgIFJ1bkF0b21pY0NvZGUoZW52LCBhdG9taWNfY29kZSwg
b3V0cHV0KQogCiAKLWRlZiBJc0NvbW1lbnQoY3VyX2xpbmUpOgorZGVmIElzU2luZ2xlTGluZUNv
bW1lbnQoY3VyX2xpbmUpOgogICByZXR1cm4gJy8vJyBpbiBjdXJfbGluZQogCiAKLWRlZiBJc0lu
UHJlcHJvY2Vzc29yRGlyZXZhdGl2ZShwcmV2X2xpbmVzLCBjdXJfbGluZSk6CitkZWYgSXNJblBy
ZXByb2Nlc3NvckRpcmVjdGl2ZShwcmV2X2xpbmVzLCBjdXJfbGluZSk6CiAgIGlmIGN1cl9saW5l
LmxzdHJpcCgpLnN0YXJ0c3dpdGgoJyMnKToKICAgICByZXR1cm4gVHJ1ZQotICByZXR1cm4gcHJl
dl9saW5lcyAhPSBbXSBhbmQgcHJldl9saW5lc1stMV0uZW5kc3dpdGgoJ1xcJykKKyAgcmV0dXJu
IHByZXZfbGluZXMgYW5kIHByZXZfbGluZXNbLTFdLmVuZHN3aXRoKCdcXCcpCiAKIAogZGVmIFdy
YXBDb21tZW50KGxpbmUsIG91dHB1dCk6CkBAIC03NjEsNyArNzY4LDcgQEAgZGVmIFdyYXBDb2Rl
KGxpbmUsIGxpbmVfY29uY2F0LCBvdXRwdXQpOgogICAgIG91dHB1dC5hcHBlbmQocHJlZml4ICsg
Y3VyX2xpbmUuc3RyaXAoKSkKIAogCi1kZWYgV3JhcFByZXByb2Nlc3NvckRpcmV2YXRpdmUobGlu
ZSwgb3V0cHV0KToKK2RlZiBXcmFwUHJlcHJvY2Vzc29yRGlyZWN0aXZlKGxpbmUsIG91dHB1dCk6
CiAgIFdyYXBDb2RlKGxpbmUsICcgXFwnLCBvdXRwdXQpCiAKIApAQCAtNzY5LDI5ICs3NzYsMzcg
QEAgZGVmIFdyYXBQbGFpbkNvZGUobGluZSwgb3V0cHV0KToKICAgV3JhcENvZGUobGluZSwgJycs
IG91dHB1dCkKIAogCi1kZWYgSXNIZWFkZXJHdWFyZE9ySW5jbHVkZShsaW5lKToKK2RlZiBJc011
bHRpTGluZUlXWVVQcmFnbWEobGluZSk6CisgIHJldHVybiByZS5zZWFyY2gocicvXCogSVdZVSBw
cmFnbWE6ICcsIGxpbmUpCisKKworZGVmIElzSGVhZGVyR3VhcmRJbmNsdWRlT3JPbmVMaW5lSVdZ
VVByYWdtYShsaW5lKToKICAgcmV0dXJuIChyZS5tYXRjaChyJ14jKGlmbmRlZnxkZWZpbmV8ZW5k
aWZccyovLylccypbXHdfXStccyokJywgbGluZSkgb3IKLSAgICAgICAgICByZS5tYXRjaChyJ14j
aW5jbHVkZVxzJywgbGluZSkpCisgICAgICAgICAgcmUubWF0Y2gocideI2luY2x1ZGVccycsIGxp
bmUpIG9yCisgICAgICAgICAgIyBEb24ndCBicmVhayBJV1lVIHByYWdtYXMsIGVpdGhlcjsgdGhh
dCBjYXVzZXMgaXd5dS5weSBwcm9ibGVtcy4KKyAgICAgICAgICByZS5zZWFyY2gocicvLyBJV1lV
IHByYWdtYTogJywgbGluZSkpCiAKIAogZGVmIFdyYXBMb25nTGluZShsaW5lLCBvdXRwdXQpOgog
ICBsaW5lID0gbGluZS5yc3RyaXAoKQogICBpZiBsZW4obGluZSkgPD0gODA6CiAgICAgb3V0cHV0
LmFwcGVuZChsaW5lKQotICBlbGlmIElzQ29tbWVudChsaW5lKToKLSAgICBpZiBJc0hlYWRlckd1
YXJkT3JJbmNsdWRlKGxpbmUpOgotICAgICAgIyBUaGUgc3R5bGUgZ3VpZGUgbWFkZSBhbiBleGNl
cHRpb24gdG8gYWxsb3cgbG9uZyBoZWFkZXIgZ3VhcmQgbGluZXMKLSAgICAgICMgYW5kIGluY2x1
ZGVzLgorICBlbGlmIElzU2luZ2xlTGluZUNvbW1lbnQobGluZSk6CisgICAgaWYgSXNIZWFkZXJH
dWFyZEluY2x1ZGVPck9uZUxpbmVJV1lVUHJhZ21hKGxpbmUpOgorICAgICAgIyBUaGUgc3R5bGUg
Z3VpZGUgbWFkZSBhbiBleGNlcHRpb24gdG8gYWxsb3cgbG9uZyBoZWFkZXIgZ3VhcmQgbGluZXMs
CisgICAgICAjIGluY2x1ZGVzIGFuZCBJV1lVIHByYWdtYXMuCiAgICAgICBvdXRwdXQuYXBwZW5k
KGxpbmUpCiAgICAgZWxzZToKICAgICAgIFdyYXBDb21tZW50KGxpbmUsIG91dHB1dCkKLSAgZWxp
ZiBJc0luUHJlcHJvY2Vzc29yRGlyZXZhdGl2ZShvdXRwdXQsIGxpbmUpOgotICAgIGlmIElzSGVh
ZGVyR3VhcmRPckluY2x1ZGUobGluZSk6Ci0gICAgICAjIFRoZSBzdHlsZSBndWlkZSBtYWRlIGFu
IGV4Y2VwdGlvbiB0byBhbGxvdyBsb25nIGhlYWRlciBndWFyZCBsaW5lcwotICAgICAgIyBhbmQg
aW5jbHVkZXMuCisgIGVsaWYgSXNJblByZXByb2Nlc3NvckRpcmVjdGl2ZShvdXRwdXQsIGxpbmUp
OgorICAgIGlmIElzSGVhZGVyR3VhcmRJbmNsdWRlT3JPbmVMaW5lSVdZVVByYWdtYShsaW5lKToK
KyAgICAgICMgVGhlIHN0eWxlIGd1aWRlIG1hZGUgYW4gZXhjZXB0aW9uIHRvIGFsbG93IGxvbmcg
aGVhZGVyIGd1YXJkIGxpbmVzLAorICAgICAgIyBpbmNsdWRlcyBhbmQgSVdZVSBwcmFnbWFzLgog
ICAgICAgb3V0cHV0LmFwcGVuZChsaW5lKQogICAgIGVsc2U6Ci0gICAgICBXcmFwUHJlcHJvY2Vz
c29yRGlyZXZhdGl2ZShsaW5lLCBvdXRwdXQpCisgICAgICBXcmFwUHJlcHJvY2Vzc29yRGlyZWN0
aXZlKGxpbmUsIG91dHB1dCkKKyAgZWxpZiBJc011bHRpTGluZUlXWVVQcmFnbWEobGluZSk6Cisg
ICAgb3V0cHV0LmFwcGVuZChsaW5lKQogICBlbHNlOgogICAgIFdyYXBQbGFpbkNvZGUobGluZSwg
b3V0cHV0KQogCkBAIC04MDUsMTYgKzgyMCwyMSBAQCBkZWYgQmVhdXRpZnlDb2RlKHN0cmluZyk6
CiAgIHJldHVybiAnXG4nLmpvaW4ob3V0cHV0MikgKyAnXG4nCiAKIAorZGVmIENvbnZlcnRGcm9t
UHVtcFNvdXJjZShzcmNfdGV4dCk6CisgICIiIlJldHVybiB0aGUgdGV4dCBnZW5lcmF0ZWQgZnJv
bSB0aGUgZ2l2ZW4gUHVtcCBzb3VyY2UgdGV4dC4iIiIKKyAgYXN0ID0gUGFyc2VUb0FTVChTdHJp
cE1ldGFDb21tZW50cyhzcmNfdGV4dCkpCisgIG91dHB1dCA9IE91dHB1dCgpCisgIFJ1bkNvZGUo
RW52KCksIGFzdCwgb3V0cHV0KQorICByZXR1cm4gQmVhdXRpZnlDb2RlKG91dHB1dC5zdHJpbmcp
CisKKwogZGVmIG1haW4oYXJndik6CiAgIGlmIGxlbihhcmd2KSA9PSAxOgogICAgIHByaW50IF9f
ZG9jX18KICAgICBzeXMuZXhpdCgxKQogCiAgIGZpbGVfcGF0aCA9IGFyZ3ZbLTFdCi0gIGFzdCA9
IENvbnZlcnQoZmlsZV9wYXRoKQotICBvdXRwdXQgPSBPdXRwdXQoKQotICBSdW5Db2RlKEVudigp
LCBhc3QsIG91dHB1dCkKLSAgb3V0cHV0X3N0ciA9IEJlYXV0aWZ5Q29kZShvdXRwdXQuc3RyaW5n
KQorICBvdXRwdXRfc3RyID0gQ29udmVydEZyb21QdW1wU291cmNlKGZpbGUoZmlsZV9wYXRoLCAn
cicpLnJlYWQoKSkKICAgaWYgZmlsZV9wYXRoLmVuZHN3aXRoKCcucHVtcCcpOgogICAgIG91dHB1
dF9maWxlX3BhdGggPSBmaWxlX3BhdGhbOi01XQogICBlbHNlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9yZWxlYXNlX2RvY3MucHkgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zY3JpcHRzL3JlbGVhc2VfZG9jcy5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjkxMzQ3ZjY3
NGFmZDdhZjg0OTYxNWE3NWIxMzhkNTI5M2Y5Y2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9yZWxlYXNlX2RvY3MucHkKQEAgLTAsMCArMSwxNTgg
QEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMyBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
IyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiU2NyaXB0IGZv
ciBicmFuY2hpbmcgR29vZ2xlIFRlc3QvTW9jayB3aWtpIHBhZ2VzIGZvciBhIG5ldyB2ZXJzaW9u
LgorCitTWU5PUFNJUworICAgICAgIHJlbGVhc2VfZG9jcy5weSBORVdfUkVMRUFTRV9WRVJTSU9O
CisKKyAgICAgICBHb29nbGUgVGVzdCBhbmQgR29vZ2xlIE1vY2sncyBleHRlcm5hbCB1c2VyIGRv
Y3VtZW50YXRpb24gaXMgaW4KKyAgICAgICBpbnRlcmxpbmtlZCB3aWtpIGZpbGVzLiAgV2hlbiB3
ZSByZWxlYXNlIGEgbmV3IHZlcnNpb24gb2YKKyAgICAgICBHb29nbGUgVGVzdCBvciBHb29nbGUg
TW9jaywgd2UgbmVlZCB0byBicmFuY2ggdGhlIHdpa2kgZmlsZXMKKyAgICAgICBzdWNoIHRoYXQg
dXNlcnMgb2YgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIEdvb2dsZSBUZXN0L01vY2sgY2FuCisgICAg
ICAgbG9vayB1cCBkb2N1bWVuYXRpb24gcmVsZXZhbnQgZm9yIHRoYXQgdmVyc2lvbi4gIFRoaXMg
c2NyaXB0CisgICAgICAgYXV0b21hdGVzIHRoYXQgcHJvY2VzcyBieToKKworICAgICAgICAgLSBi
cmFuY2hpbmcgdGhlIGN1cnJlbnQgd2lraSBwYWdlcyAod2hpY2ggZG9jdW1lbnQgdGhlCisgICAg
ICAgICAgIGJlaGF2aW9yIG9mIHRoZSBTVk4gdHJ1bmsgaGVhZCkgdG8gcGFnZXMgZm9yIHRoZSBz
cGVjaWZpZWQKKyAgICAgICAgICAgdmVyc2lvbiAoZS5nLiBicmFuY2hpbmcgRkFRLndpa2kgdG8g
VjJfNl9GQVEud2lraSB3aGVuCisgICAgICAgICAgIE5FV19SRUxFQVNFX1ZFUlNJT04gaXMgMi42
KTsKKyAgICAgICAgIC0gdXBkYXRpbmcgdGhlIGxpbmtzIGluIHRoZSBicmFuY2hlZCBmaWxlcyB0
byBwb2ludCB0byB0aGUgYnJhbmNoZWQKKyAgICAgICAgICAgdmVyc2lvbiAoZS5nLiBhIGxpbmsg
aW4gVjJfNl9GQVEud2lraSB0aGF0IHBvaW50ZWQgdG8KKyAgICAgICAgICAgUHJpbWVyLndpa2kj
QW5jaG9yIHdpbGwgbm93IHBvaW50IHRvIFYyXzZfUHJpbWVyLndpa2kjQW5jaG9yKS4KKworICAg
ICAgIE5PVEU6IE5FV19SRUxFQVNFX1ZFUlNJT04gbXVzdCBiZSBhIE5FVyB2ZXJzaW9uIG51bWJl
ciBmb3IKKyAgICAgICB3aGljaCB0aGUgd2lraSBwYWdlcyBkb24ndCB5ZXQgZXhpc3Q7IG90aGVy
d2lzZSB5b3UnbGwgZ2V0IFNWTgorICAgICAgIGVycm9ycyBsaWtlICJzdm46IFBhdGggJ1YxXzdf
UHVtcE1hbnVhbC53aWtpJyBpcyBub3QgYQorICAgICAgIGRpcmVjdG9yeSIgd2hlbiBydW5uaW5n
IHRoZSBzY3JpcHQuCisKK0VYQU1QTEUKKyAgICAgICAkIGNkIFBBVEgvVE8vR1RFU1RfU1ZOX1dP
UktTUEFDRS90cnVuaworICAgICAgICQgc2NyaXB0cy9yZWxlYXNlX2RvY3MucHkgMi42ICAjIGNy
ZWF0ZSB3aWtpIHBhZ2VzIGZvciB2Mi42CisgICAgICAgJCBzdm4gc3RhdHVzICAgICAgICAgICAg
ICAgICAgICMgdmVyaWZ5IHRoZSBmaWxlIGxpc3QKKyAgICAgICAkIHN2biBkaWZmICAgICAgICAg
ICAgICAgICAgICAgIyB2ZXJpZnkgdGhlIGZpbGUgY29udGVudHMKKyAgICAgICAkIHN2biBjb21t
aXQgLW0gInJlbGVhc2Ugd2lraSBwYWdlcyBmb3IgdjIuNiIKKyIiIgorCitfX2F1dGhvcl9fID0g
J3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJworCitpbXBvcnQgb3MKK2ltcG9ydCByZQor
aW1wb3J0IHN5cworCitpbXBvcnQgY29tbW9uCisKKworIyBXaWtpIHBhZ2VzIHRoYXQgc2hvdWxk
bid0IGJlIGJyYW5jaGVkIGZvciBldmVyeSBndGVzdC9nbW9jayByZWxlYXNlLgorR1RFU1RfVU5W
RVJTSU9ORURfV0lLSVMgPSBbJ0Rldkd1aWRlLndpa2knXQorR01PQ0tfVU5WRVJTSU9ORURfV0lL
SVMgPSBbCisgICAgJ0Rlc2lnbkRvYy53aWtpJywKKyAgICAnRGV2R3VpZGUud2lraScsCisgICAg
J0tub3duSXNzdWVzLndpa2knCisgICAgXQorCisKK2RlZiBEcm9wV2lraVN1ZmZpeCh3aWtpX2Zp
bGVuYW1lKToKKyAgIiIiUmVtb3ZlcyB0aGUgLndpa2kgc3VmZml4IChpZiBhbnkpIGZyb20gdGhl
IGdpdmVuIGZpbGVuYW1lLiIiIgorCisgIHJldHVybiAod2lraV9maWxlbmFtZVs6LWxlbignLndp
a2knKV0gaWYgd2lraV9maWxlbmFtZS5lbmRzd2l0aCgnLndpa2knKQorICAgICAgICAgIGVsc2Ug
d2lraV9maWxlbmFtZSkKKworCitjbGFzcyBXaWtpQnJhbmNoZXIob2JqZWN0KToKKyAgIiIiQnJh
bmNoZXMgLi4uIiIiCisKKyAgZGVmIF9faW5pdF9fKHNlbGYsIGRvdF92ZXJzaW9uKToKKyAgICBz
ZWxmLnByb2plY3QsIHN2bl9yb290X3BhdGggPSBjb21tb24uR2V0U3ZuSW5mbygpCisgICAgaWYg
c2VsZi5wcm9qZWN0IG5vdCBpbiAoJ2dvb2dsZXRlc3QnLCAnZ29vZ2xlbW9jaycpOgorICAgICAg
c3lzLmV4aXQoJ1RoaXMgc2NyaXB0IG11c3QgYmUgcnVuIGluIGEgZ3Rlc3Qgb3IgZ21vY2sgU1ZO
IHdvcmtzcGFjZS4nKQorICAgIHNlbGYud2lraV9kaXIgPSBzdm5fcm9vdF9wYXRoICsgJy93aWtp
JworICAgICMgVHVybiAnMi42JyB0byAnVjJfNl8nLgorICAgIHNlbGYudmVyc2lvbl9wcmVmaXgg
PSAnVicgKyBkb3RfdmVyc2lvbi5yZXBsYWNlKCcuJywgJ18nKSArICdfJworICAgIHNlbGYuZmls
ZXNfdG9fYnJhbmNoID0gc2VsZi5HZXRGaWxlc1RvQnJhbmNoKCkKKyAgICBwYWdlX25hbWVzID0g
W0Ryb3BXaWtpU3VmZml4KGYpIGZvciBmIGluIHNlbGYuZmlsZXNfdG9fYnJhbmNoXQorICAgICMg
QSBsaW5rIHRvIEZvby53aWtpIGlzIGluIG9uZSBvZiB0aGUgZm9sbG93aW5nIGZvcm1zOgorICAg
ICMgICBbRm9vIHdvcmRzXQorICAgICMgICBbRm9vI0FuY2hvciB3b3Jkc10KKyAgICAjICAgW2h0
dHA6Ly9jb2RlLmdvb2dsZS5jb20vLi4uL3dpa2kvRm9vIHdvcmRzXQorICAgICMgICBbaHR0cDov
L2NvZGUuZ29vZ2xlLmNvbS8uLi4vd2lraS9Gb28jQW5jaG9yIHdvcmRzXQorICAgICMgV2Ugd2Fu
dCB0byByZXBsYWNlICdGb28nIHdpdGggJ1YyXzZfRm9vJyBpbiB0aGUgYWJvdmUgY2FzZXMuCisg
ICAgc2VsZi5zZWFyY2hfZm9yX3JlID0gcmUuY29tcGlsZSgKKyAgICAgICAgIyBUaGlzIHJlZ2V4
IG1hdGNoZXMgZWl0aGVyCisgICAgICAgICMgICBbRm9vCisgICAgICAgICMgb3IKKyAgICAgICAg
IyAgIC93aWtpL0ZvbworICAgICAgICAjIGZvbGxvd2VkIGJ5IGEgc3BhY2Ugb3IgYSAjLCB3aGVy
ZSBGb28gaXMgdGhlIG5hbWUgb2YgYW4KKyAgICAgICAgIyB1bnZlcnNpb25lZCB3aWtpIHBhZ2Uu
CisgICAgICAgIHInKFxbfC93aWtpLykoJXMpKFsgI10pJyAlICd8Jy5qb2luKHBhZ2VfbmFtZXMp
KQorICAgIHNlbGYucmVwbGFjZV93aXRoID0gcidcMSVzXDJcMycgJSAoc2VsZi52ZXJzaW9uX3By
ZWZpeCwpCisKKyAgZGVmIEdldEZpbGVzVG9CcmFuY2goc2VsZik6CisgICAgIiIiUmV0dXJucyBh
IGxpc3Qgb2YgLndpa2kgZmlsZSBuYW1lcyB0aGF0IG5lZWQgdG8gYmUgYnJhbmNoZWQuIiIiCisK
KyAgICB1bnZlcnNpb25lZF93aWtpcyA9IChHVEVTVF9VTlZFUlNJT05FRF9XSUtJUyBpZiBzZWxm
LnByb2plY3QgPT0gJ2dvb2dsZXRlc3QnCisgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBH
TU9DS19VTlZFUlNJT05FRF9XSUtJUykKKyAgICByZXR1cm4gW2YgZm9yIGYgaW4gb3MubGlzdGRp
cihzZWxmLndpa2lfZGlyKQorICAgICAgICAgICAgaWYgKGYuZW5kc3dpdGgoJy53aWtpJykgYW5k
CisgICAgICAgICAgICAgICAgbm90IHJlLm1hdGNoKHInXlZcZCcsIGYpIGFuZCAgIyBFeGNsdWRl
ZCB2ZXJzaW9uZWQgLndpa2kgZmlsZXMuCisgICAgICAgICAgICAgICAgZiBub3QgaW4gdW52ZXJz
aW9uZWRfd2lraXMpXQorCisgIGRlZiBCcmFuY2hGaWxlcyhzZWxmKToKKyAgICAiIiJCcmFuY2hl
cyB0aGUgLndpa2kgZmlsZXMgbmVlZGVkIHRvIGJlIGJyYW5jaGVkLiIiIgorCisgICAgcHJpbnQg
J0JyYW5jaGluZyAlZCAud2lraSBmaWxlczonICUgKGxlbihzZWxmLmZpbGVzX3RvX2JyYW5jaCks
KQorICAgIG9zLmNoZGlyKHNlbGYud2lraV9kaXIpCisgICAgZm9yIGYgaW4gc2VsZi5maWxlc190
b19icmFuY2g6CisgICAgICBjb21tYW5kID0gJ3N2biBjcCAlcyAlcyVzJyAlIChmLCBzZWxmLnZl
cnNpb25fcHJlZml4LCBmKQorICAgICAgcHJpbnQgY29tbWFuZAorICAgICAgb3Muc3lzdGVtKGNv
bW1hbmQpCisKKyAgZGVmIFVwZGF0ZUxpbmtzSW5CcmFuY2hlZEZpbGVzKHNlbGYpOgorCisgICAg
Zm9yIGYgaW4gc2VsZi5maWxlc190b19icmFuY2g6CisgICAgICBzb3VyY2VfZmlsZSA9IG9zLnBh
dGguam9pbihzZWxmLndpa2lfZGlyLCBmKQorICAgICAgdmVyc2lvbmVkX2ZpbGUgPSBvcy5wYXRo
LmpvaW4oc2VsZi53aWtpX2Rpciwgc2VsZi52ZXJzaW9uX3ByZWZpeCArIGYpCisgICAgICBwcmlu
dCAnVXBkYXRpbmcgbGlua3MgaW4gJXMuJyAlICh2ZXJzaW9uZWRfZmlsZSwpCisgICAgICB0ZXh0
ID0gZmlsZShzb3VyY2VfZmlsZSwgJ3InKS5yZWFkKCkKKyAgICAgIG5ld190ZXh0ID0gc2VsZi5z
ZWFyY2hfZm9yX3JlLnN1YihzZWxmLnJlcGxhY2Vfd2l0aCwgdGV4dCkKKyAgICAgIGZpbGUodmVy
c2lvbmVkX2ZpbGUsICd3Jykud3JpdGUobmV3X3RleHQpCisKKworZGVmIG1haW4oKToKKyAgaWYg
bGVuKHN5cy5hcmd2KSAhPSAyOgorICAgIHN5cy5leGl0KF9fZG9jX18pCisKKyAgYnJhbmNoZXIg
PSBXaWtpQnJhbmNoZXIoc3lzLmFyZ3ZbMV0pCisgIGJyYW5jaGVyLkJyYW5jaEZpbGVzKCkKKyAg
YnJhbmNoZXIuVXBkYXRlTGlua3NJbkJyYW5jaGVkRmlsZXMoKQorCisKK2lmIF9fbmFtZV9fID09
ICdfX21haW5fXyc6CisgIG1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2NyaXB0cy90ZXN0L01ha2VmaWxlIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0
cy90ZXN0L01ha2VmaWxlCmluZGV4IGZmYzBjOTBhZDk5NTcyZGY5NGFmYjViNjQxMzZhOWMyOTQ4
OGFlMDYuLmNkZmY1ODQ2MzdiN2E2ZTlkZjFmYTQzY2U4ZjU4OGM0MzgxNWU1NjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvdGVzdC9NYWtlZmlsZQorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUKQEAgLTIxLDcgKzIx
LDkgQEAgU0FNUExFX0RJUiA9IC4uLy4uL3NhbXBsZXMKIEdURVNUX01BSU5fQ0MgPSAuLi8uLi9z
cmMvZ3Rlc3RfbWFpbi5jYwogCiAjIEZsYWdzIHBhc3NlZCB0byB0aGUgcHJlcHJvY2Vzc29yLgot
Q1BQRkxBR1MgKz0gLUkkKEZVU0VEX0dURVNUX0RJUikKKyMgV2UgaGF2ZSBubyBpZGVhIGhlcmUg
d2hldGhlciBwdGhyZWFkcyBpcyBhdmFpbGFibGUgaW4gdGhlIHN5c3RlbSwgc28KKyMgZGlzYWJs
ZSBpdHMgdXNlLgorQ1BQRkxBR1MgKz0gLUkkKEZVU0VEX0dURVNUX0RJUikgLURHVEVTVF9IQVNf
UFRIUkVBRD0wCiAKICMgRmxhZ3MgcGFzc2VkIHRvIHRoZSBDKysgY29tcGlsZXIuCiBDWFhGTEFH
UyArPSAtZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy91cGxv
YWQucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3VwbG9hZC5weQppbmRleCA2
ZTZmOWExNDcxOWVmOGM5ZmRiNjAzYWQ1MGJkZDM1ZGM3OTk2ZTJkLi5jODUyZTRjOTFlMDZlZjdj
NDllMDM4NjgzNTA5ZmZkOTQ5NWM4MjBmIDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zY3JpcHRzL3VwbG9hZC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3Jp
cHRzL3VwbG9hZC5weQpAQCAtMjQyLDcgKzI0Miw3IEBAIGNsYXNzIEFic3RyYWN0UnBjU2VydmVy
KG9iamVjdCk6CiAgICAgVGhlIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3Mgd29ya3MgYXMgZm9sbG93
czoKICAgICAgMSkgV2UgZ2V0IGEgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIGZyb20gdGhlIHVzZXIK
ICAgICAgMikgV2UgdXNlIENsaWVudExvZ2luIHRvIG9idGFpbiBhbiBBVVRIIHRva2VuIGZvciB0
aGUgdXNlcgotICAgICAgICAoc2VlIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vYXBpcy9hY2NvdW50
cy9BdXRoRm9ySW5zdGFsbGVkQXBwcy5odG1sKS4KKyAgICAgICAgKHNlZSBodHRwczovL2RldmVs
b3BlcnMuZ29vZ2xlLmNvbS9pZGVudGl0eS9wcm90b2NvbHMvQXV0aEZvckluc3RhbGxlZEFwcHMp
LgogICAgICAzKSBXZSBwYXNzIHRoZSBhdXRoIHRva2VuIHRvIC9fYWgvbG9naW4gb24gdGhlIHNl
cnZlciB0byBvYnRhaW4gYW4KICAgICAgICAgYXV0aGVudGljYXRpb24gY29va2llLiBJZiBsb2dp
biB3YXMgc3VjY2Vzc2Z1bCwgaXQgdHJpZXMgdG8gcmVkaXJlY3QKICAgICAgICAgdXMgdG8gdGhl
IFVSTCB3ZSBwcm92aWRlZC4KQEAgLTUwNiw3ICs1MDYsNyBAQCBkZWYgRW5jb2RlTXVsdGlwYXJ0
Rm9ybURhdGEoZmllbGRzLCBmaWxlcyk6CiAgICAgKGNvbnRlbnRfdHlwZSwgYm9keSkgcmVhZHkg
Zm9yIGh0dHBsaWIuSFRUUCBpbnN0YW5jZS4KIAogICBTb3VyY2U6Ci0gICAgaHR0cDovL2FzcG4u
YWN0aXZlc3RhdGUuY29tL0FTUE4vQ29va2Jvb2svUHl0aG9uL1JlY2lwZS8xNDYzMDYKKyAgICBo
dHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjAxMTYwNTIwMDEvY29kZS5hY3RpdmVzdGF0
ZS5jb20vcmVjaXBlcy8xNDYzMDYKICAgIiIiCiAgIEJPVU5EQVJZID0gJy1NLUEtRy1JLUMtLS1C
LU8tVS1OLUQtQS1SLVktJwogICBDUkxGID0gJ1xyXG4nCkBAIC03MzIsNyArNzMyLDcgQEAgY2xh
c3MgU3VidmVyc2lvblZDUyhWZXJzaW9uQ29udHJvbFN5c3RlbSk6CiAgICAgZWxzZToKICAgICAg
IHNlbGYucmV2X3N0YXJ0ID0gc2VsZi5yZXZfZW5kID0gTm9uZQogICAgICMgQ2FjaGUgb3V0cHV0
IGZyb20gInN2biBsaXN0IC1yIFJFVk5PIGRpcm5hbWUiLgotICAgICMgS2V5czogZGlybmFtZSwg
VmFsdWVzOiAyLXR1cGxlIChvdXB1dCBmb3Igc3RhcnQgcmV2IGFuZCBlbmQgcmV2KS4KKyAgICAj
IEtleXM6IGRpcm5hbWUsIFZhbHVlczogMi10dXBsZSAob3V0cHV0IGZvciBzdGFydCByZXYgYW5k
IGVuZCByZXYpLgogICAgIHNlbGYuc3ZubHNfY2FjaGUgPSB7fQogICAgICMgU1ZOIGJhc2UgVVJM
IGlzIHJlcXVpcmVkIHRvIGZldGNoIGZpbGVzIGRlbGV0ZWQgaW4gYW4gb2xkZXIgcmV2aXNpb24u
CiAgICAgIyBSZXN1bHQgaXMgY2FjaGVkIHRvIG5vdCBndWVzcyBpdCBvdmVyIGFuZCBvdmVyIGFn
YWluIGluIEdldEJhc2VGaWxlKCkuCkBAIC04MDcsNyArODA3LDcgQEAgY2xhc3MgU3VidmVyc2lv
blZDUyhWZXJzaW9uQ29udHJvbFN5c3RlbSk6CiAgICAgIyBzdm4gY2F0IHRyYW5zbGF0ZXMga2V5
d29yZHMgYnV0IHN2biBkaWZmIGRvZXNuJ3QuIEFzIGEgcmVzdWx0IG9mIHRoaXMKICAgICAjIGJl
aGF2aW9yIHBhdGNoaW5nLlBhdGNoQ2h1bmtzKCkgZmFpbHMgd2l0aCBhIGNodW5rIG1pc21hdGNo
IGVycm9yLgogICAgICMgVGhpcyBwYXJ0IHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgdGhlIFJl
dmlldyBCb2FyZCBkZXZlbG9wbWVudCB0ZWFtCi0gICAgIyB3aG8gaGFkIHRoZSBzYW1lIHByb2Js
ZW0gKGh0dHA6Ly9yZXZpZXdzLnJldmlldy1ib2FyZC5vcmcvci8yNzYvKS4KKyAgICAjIHdobyBo
YWQgdGhlIHNhbWUgcHJvYmxlbSAoaHR0cHM6Ly9yZXZpZXdzLnJldmlld2JvYXJkLm9yZy9yLzI3
Ni8pLgogICAgICMgTWFwcGluZyBvZiBrZXl3b3JkcyB0byBrbm93biBhbGlhc2VzCiAgICAgc3Zu
X2tleXdvcmRzID0gewogICAgICAgIyBTdGFuZGFyZCBrZXl3b3JkcwpAQCAtODYwLDcgKzg2MCw3
IEBAIGNsYXNzIFN1YnZlcnNpb25WQ1MoVmVyc2lvbkNvbnRyb2xTeXN0ZW0pOgogICAgICAgc3Rh
dHVzX2xpbmVzID0gc3RhdHVzLnNwbGl0bGluZXMoKQogICAgICAgIyBJZiBmaWxlIGlzIGluIGEg
Y2wsIHRoZSBvdXRwdXQgd2lsbCBiZWdpbiB3aXRoCiAgICAgICAjICJcbi0tLSBDaGFuZ2VsaXN0
ICdjbF9uYW1lJzpcbiIuICBTZWUKLSAgICAgICMgaHR0cDovL3N2bi5jb2xsYWIubmV0L3JlcG9z
L3N2bi90cnVuay9ub3Rlcy9jaGFuZ2VsaXN0LWRlc2lnbi50eHQKKyAgICAgICMgaHR0cHM6Ly93
ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMDkwOTE4MjM0ODE1L3N2bi5jb2xsYWIubmV0L3JlcG9zL3N2
bi90cnVuay9ub3Rlcy9jaGFuZ2VsaXN0LWRlc2lnbi50eHQKICAgICAgIGlmIChsZW4oc3RhdHVz
X2xpbmVzKSA9PSAzIGFuZAogICAgICAgICAgIG5vdCBzdGF0dXNfbGluZXNbMF0gYW5kCiAgICAg
ICAgICAgc3RhdHVzX2xpbmVzWzFdLnN0YXJ0c3dpdGgoIi0tLSBDaGFuZ2VsaXN0IikpOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWFsbC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1hbGwuY2MKaW5kZXggZmUzNDc2NWZiNjcyMThh
NTZjYjVlMjUyYTcwZTY4YTM2YmM4OGQwNy4uYjIxN2ExODAwNmIwYzhiZGFmNGE5ZjliNmQwNmRl
NGZkOGFkOWVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0
LWFsbC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtYWxsLmNjCkBA
IC0yNiwyMiArMjYsMjIgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKwogLy8KLS8vIEF1dGhvcjogbWhldWxlQGdvb2dsZS5jb20gKE1hcmt1cyBIZXVs
ZSkKLS8vCi0vLyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8v
IEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQog
Ly8KIC8vIFNvbWV0aW1lcyBpdCdzIGRlc2lyYWJsZSB0byBidWlsZCBHb29nbGUgVGVzdCBieSBj
b21waWxpbmcgYSBzaW5nbGUgZmlsZS4KIC8vIFRoaXMgZmlsZSBzZXJ2ZXMgdGhpcyBwdXJwb3Nl
LgogCiAvLyBUaGlzIGxpbmUgZW5zdXJlcyB0aGF0IGd0ZXN0LmggY2FuIGJlIGNvbXBpbGVkIG9u
IGl0cyBvd24sIGV2ZW4KIC8vIHdoZW4gaXQncyBmdXNlZC4KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIC8vIFRoZSBmb2xsb3dpbmcgbGluZXMg
cHVsbCBpbiB0aGUgcmVhbCBndGVzdCAqLmNjIGZpbGVzLgogI2luY2x1ZGUgInNyYy9ndGVzdC5j
YyIKICNpbmNsdWRlICJzcmMvZ3Rlc3QtZGVhdGgtdGVzdC5jYyIKICNpbmNsdWRlICJzcmMvZ3Rl
c3QtZmlsZXBhdGguY2MiCiAjaW5jbHVkZSAic3JjL2d0ZXN0LXBvcnQuY2MiCisjaW5jbHVkZSAi
c3JjL2d0ZXN0LXByaW50ZXJzLmNjIgogI2luY2x1ZGUgInNyYy9ndGVzdC10ZXN0LXBhcnQuY2Mi
CiAjaW5jbHVkZSAic3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtZGVhdGgtdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3NyYy9ndGVzdC1kZWF0aC10ZXN0LmNjCmluZGV4IDBjZjc4MjViY2FjNzlmYTM1
ZDBhMTI0OGUyMzA4YTI0YWE2MjdiOGEuLjA5MDgzNTUxNjEyZTNjM2I5YjNiZDdkMWVlNjA2YzE4
ZmZiNWY3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1k
ZWF0aC10ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1kZWF0
aC10ZXN0LmNjCkBAIC0yNiw1MiArMjYsNjUgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFu
eW9uZyBXYW4pLCB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQorCiAvLwogLy8gVGhpcyBm
aWxlIGltcGxlbWVudHMgZGVhdGggdGVzdHMuCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1kZWF0
aC10ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9n
dGVzdC1wb3J0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LmgiCiAK
ICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogCi0jaWYgR1RFU1RfT1NfTUFDCi0jaW5jbHVkZSA8
Y3J0X2V4dGVybnMuaD4KLSNlbmRpZiAgLy8gR1RFU1RfT1NfTUFDCisjIGlmIEdURVNUX09TX01B
QworIyAgaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4KKyMgZW5kaWYgIC8vIEdURVNUX09TX01BQwog
Ci0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPGxpbWl0
cy5oPgotI2luY2x1ZGUgPHN0ZGFyZy5oPgorIyBpbmNsdWRlIDxlcnJuby5oPgorIyBpbmNsdWRl
IDxmY250bC5oPgorIyBpbmNsdWRlIDxsaW1pdHMuaD4KIAotI2lmIEdURVNUX09TX1dJTkRPV1MK
LSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZWxzZQotI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0jaW5j
bHVkZSA8c3lzL3dhaXQuaD4KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIyBpZiBHVEVT
VF9PU19MSU5VWAorIyAgaW5jbHVkZSA8c2lnbmFsLmg+CisjIGVuZGlmICAvLyBHVEVTVF9PU19M
SU5VWAogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCisjIGluY2x1ZGUgPHN0ZGFy
Zy5oPgorCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKyMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyMg
ZWxzZQorIyAgaW5jbHVkZSA8c3lzL21tYW4uaD4KKyMgIGluY2x1ZGUgPHN5cy93YWl0Lmg+Cisj
IGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKyMgaWYgR1RFU1RfT1NfUU5YCisjICBpbmNs
dWRlIDxzcGF3bi5oPgorIyBlbmRpZiAgLy8gR1RFU1RfT1NfUU5YCisKKyMgaWYgR1RFU1RfT1Nf
RlVDSFNJQQorIyAgaW5jbHVkZSA8bGliL2ZkaW8vaW8uaD4KKyMgIGluY2x1ZGUgPGxpYi9mZGlv
L3NwYXduLmg+CisjICBpbmNsdWRlIDx6aXJjb24vcHJvY2Vzc2FyZ3MuaD4KKyMgIGluY2x1ZGUg
PHppcmNvbi9zeXNjYWxscy5oPgorIyAgaW5jbHVkZSA8emlyY29uL3N5c2NhbGxzL3BvcnQuaD4K
KyMgZW5kaWYgIC8vIEdURVNUX09TX0ZVQ0hTSUEKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LW1l
c3NhZ2UuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4KKyNlbmRp
ZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKIAotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFu
c2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24u
ICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRl
ZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwot
Ly8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVy
bmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05f
IDEKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1tZXNzYWdlLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgiCiAjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5o
IgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAK
IC8vIENvbnN0YW50cy4KIAogLy8gVGhlIGRlZmF1bHQgZGVhdGggdGVzdCBzdHlsZS4KLXN0YXRp
YyBjb25zdCBjaGFyIGtEZWZhdWx0RGVhdGhUZXN0U3R5bGVbXSA9ICJmYXN0IjsKKy8vCisvLyBU
aGlzIGlzIGRlZmluZWQgaW4gaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIGFzICJmYXN0IiwgYnV0IGNh
biBiZSBvdmVycmlkZGVuIGJ5CisvLyBhIGRlZmluaXRpb24gaW4gaW50ZXJuYWwvY3VzdG9tL2d0
ZXN0LXBvcnQuaC4gVGhlIHJlY29tbWVuZGVkIHZhbHVlLCB3aGljaCBpcworLy8gdXNlZCBpbnRl
cm5hbGx5IGF0IEdvb2dsZSwgaXMgInRocmVhZHNhZmUiLgorc3RhdGljIGNvbnN0IGNoYXIga0Rl
ZmF1bHREZWF0aFRlc3RTdHlsZVtdID0gR1RFU1RfREVGQVVMVF9ERUFUSF9URVNUX1NUWUxFOwog
CiBHVEVTVF9ERUZJTkVfc3RyaW5nXygKICAgICBkZWF0aF90ZXN0X3N0eWxlLApAQCAtMTAwLDM2
ICsxMTMsNzkgQEAgR1RFU1RfREVGSU5FX3N0cmluZ18oCiAgICAgIkluZGljYXRlcyB0aGUgZmls
ZSwgbGluZSBudW1iZXIsIHRlbXBvcmFsIGluZGV4IG9mICIKICAgICAidGhlIHNpbmdsZSBkZWF0
aCB0ZXN0IHRvIHJ1biwgYW5kIGEgZmlsZSBkZXNjcmlwdG9yIHRvICIKICAgICAid2hpY2ggYSBz
dWNjZXNzIGNvZGUgbWF5IGJlIHNlbnQsIGFsbCBzZXBhcmF0ZWQgYnkgIgotICAgICJjb2xvbnMu
ICBUaGlzIGZsYWcgaXMgc3BlY2lmaWVkIGlmIGFuZCBvbmx5IGlmIHRoZSBjdXJyZW50ICIKKyAg
ICAidGhlICd8JyBjaGFyYWN0ZXJzLiAgVGhpcyBmbGFnIGlzIHNwZWNpZmllZCBpZiBhbmQgb25s
eSBpZiB0aGUgY3VycmVudCAiCiAgICAgInByb2Nlc3MgaXMgYSBzdWItcHJvY2VzcyBsYXVuY2hl
ZCBmb3IgcnVubmluZyBhIHRocmVhZC1zYWZlICIKICAgICAiZGVhdGggdGVzdC4gIEZPUiBJTlRF
Uk5BTCBVU0UgT05MWS4iKTsKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogCiAjaWYgR1RFU1Rf
SEFTX0RFQVRIX1RFU1QKIAorbmFtZXNwYWNlIGludGVybmFsIHsKKworLy8gVmFsaWQgb25seSBm
b3IgZmFzdCBkZWF0aCB0ZXN0cy4gSW5kaWNhdGVzIHRoZSBjb2RlIGlzIHJ1bm5pbmcgaW4gdGhl
CisvLyBjaGlsZCBwcm9jZXNzIG9mIGEgZmFzdCBzdHlsZSBkZWF0aCB0ZXN0LgorIyBpZiAhR1RF
U1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfRlVDSFNJQQorc3RhdGljIGJvb2wgZ19pbl9mYXN0
X2RlYXRoX3Rlc3RfY2hpbGQgPSBmYWxzZTsKKyMgZW5kaWYKKworLy8gUmV0dXJucyBhIEJvb2xl
YW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBjYWxsZXIgaXMgY3VycmVudGx5CisvLyBl
eGVjdXRpbmcgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGRlYXRoIHRlc3QgY2hpbGQgcHJvY2Vzcy4g
IFRvb2xzIHN1Y2ggYXMKKy8vIFZhbGdyaW5kIGhlYXAgY2hlY2tlcnMgbWF5IG5lZWQgdGhpcyB0
byBtb2RpZnkgdGhlaXIgYmVoYXZpb3IgaW4gZGVhdGgKKy8vIHRlc3RzLiAgSU1QT1JUQU5UOiBU
aGlzIGlzIGFuIGludGVybmFsIHV0aWxpdHkuICBVc2luZyBpdCBtYXkgYnJlYWsgdGhlCisvLyBp
bXBsZW1lbnRhdGlvbiBvZiBkZWF0aCB0ZXN0cy4gIFVzZXIgY29kZSBNVVNUIE5PVCB1c2UgaXQu
Citib29sIEluRGVhdGhUZXN0Q2hpbGQoKSB7CisjIGlmIEdURVNUX09TX1dJTkRPV1MgfHwgR1RF
U1RfT1NfRlVDSFNJQQorCisgIC8vIE9uIFdpbmRvd3MgYW5kIEZ1Y2hzaWEsIGRlYXRoIHRlc3Rz
IGFyZSB0aHJlYWQtc2FmZSByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZQorICAvLyBvZiB0aGUgZGVh
dGhfdGVzdF9zdHlsZSBmbGFnLgorICByZXR1cm4gIUdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2Rl
YXRoX3Rlc3QpLmVtcHR5KCk7CisKKyMgZWxzZQorCisgIGlmIChHVEVTVF9GTEFHKGRlYXRoX3Rl
c3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZlIikKKyAgICByZXR1cm4gIUdURVNUX0ZMQUcoaW50ZXJu
YWxfcnVuX2RlYXRoX3Rlc3QpLmVtcHR5KCk7CisgIGVsc2UKKyAgICByZXR1cm4gZ19pbl9mYXN0
X2RlYXRoX3Rlc3RfY2hpbGQ7CisjZW5kaWYKK30KKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
CisKIC8vIEV4aXRlZFdpdGhDb2RlIGNvbnN0cnVjdG9yLgogRXhpdGVkV2l0aENvZGU6OkV4aXRl
ZFdpdGhDb2RlKGludCBleGl0X2NvZGUpIDogZXhpdF9jb2RlXyhleGl0X2NvZGUpIHsKIH0KIAog
Ly8gRXhpdGVkV2l0aENvZGUgZnVuY3Rpb24tY2FsbCBvcGVyYXRvci4KIGJvb2wgRXhpdGVkV2l0
aENvZGU6Om9wZXJhdG9yKCkoaW50IGV4aXRfc3RhdHVzKSBjb25zdCB7Ci0jaWYgR1RFU1RfT1Nf
V0lORE9XUworIyBpZiBHVEVTVF9PU19XSU5ET1dTIHx8IEdURVNUX09TX0ZVQ0hTSUEKKwogICBy
ZXR1cm4gZXhpdF9zdGF0dXMgPT0gZXhpdF9jb2RlXzsKLSNlbHNlCisKKyMgZWxzZQorCiAgIHJl
dHVybiBXSUZFWElURUQoZXhpdF9zdGF0dXMpICYmIFdFWElUU1RBVFVTKGV4aXRfc3RhdHVzKSA9
PSBleGl0X2NvZGVfOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKyMgZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfRlVDSFNJQQogfQogCi0jaWYgIUdURVNUX09T
X1dJTkRPV1MKKyMgaWYgIUdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX0ZVQ0hTSUEKIC8v
IEtpbGxlZEJ5U2lnbmFsIGNvbnN0cnVjdG9yLgogS2lsbGVkQnlTaWduYWw6OktpbGxlZEJ5U2ln
bmFsKGludCBzaWdudW0pIDogc2lnbnVtXyhzaWdudW0pIHsKIH0KIAogLy8gS2lsbGVkQnlTaWdu
YWwgZnVuY3Rpb24tY2FsbCBvcGVyYXRvci4KIGJvb2wgS2lsbGVkQnlTaWduYWw6Om9wZXJhdG9y
KCkoaW50IGV4aXRfc3RhdHVzKSBjb25zdCB7CisjICBpZiBkZWZpbmVkKEdURVNUX0tJTExFRF9C
WV9TSUdOQUxfT1ZFUlJJREVfKQorICB7CisgICAgYm9vbCByZXN1bHQ7CisgICAgaWYgKEdURVNU
X0tJTExFRF9CWV9TSUdOQUxfT1ZFUlJJREVfKHNpZ251bV8sIGV4aXRfc3RhdHVzLCAmcmVzdWx0
KSkgeworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgIH0KKyMgIGVuZGlmICAvLyBkZWZp
bmVkKEdURVNUX0tJTExFRF9CWV9TSUdOQUxfT1ZFUlJJREVfKQogICByZXR1cm4gV0lGU0lHTkFM
RUQoZXhpdF9zdGF0dXMpICYmIFdURVJNU0lHKGV4aXRfc3RhdHVzKSA9PSBzaWdudW1fOwogfQot
I2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRP
V1MgJiYgIUdURVNUX09TX0ZVQ0hTSUEKIAogbmFtZXNwYWNlIGludGVybmFsIHsKIApAQCAtMTM3
LDIyICsxOTMsMjcgQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIAogLy8gR2VuZXJhdGVzIGEgdGV4
dHVhbCBkZXNjcmlwdGlvbiBvZiBhIGdpdmVuIGV4aXQgY29kZSwgaW4gdGhlIGZvcm1hdAogLy8g
c3BlY2lmaWVkIGJ5IHdhaXQoMikuCi1zdGF0aWMgU3RyaW5nIEV4aXRTdW1tYXJ5KGludCBleGl0
X2NvZGUpIHsKK3N0YXRpYyBzdGQ6OnN0cmluZyBFeGl0U3VtbWFyeShpbnQgZXhpdF9jb2RlKSB7
CiAgIE1lc3NhZ2UgbTsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisKKyMgaWYgR1RFU1RfT1NfV0lO
RE9XUyB8fCBHVEVTVF9PU19GVUNIU0lBCisKICAgbSA8PCAiRXhpdGVkIHdpdGggZXhpdCBzdGF0
dXMgIiA8PCBleGl0X2NvZGU7Ci0jZWxzZQorCisjIGVsc2UKKwogICBpZiAoV0lGRVhJVEVEKGV4
aXRfY29kZSkpIHsKICAgICBtIDw8ICJFeGl0ZWQgd2l0aCBleGl0IHN0YXR1cyAiIDw8IFdFWElU
U1RBVFVTKGV4aXRfY29kZSk7CiAgIH0gZWxzZSBpZiAoV0lGU0lHTkFMRUQoZXhpdF9jb2RlKSkg
ewogICAgIG0gPDwgIlRlcm1pbmF0ZWQgYnkgc2lnbmFsICIgPDwgV1RFUk1TSUcoZXhpdF9jb2Rl
KTsKICAgfQotI2lmZGVmIFdDT1JFRFVNUAorIyAgaWZkZWYgV0NPUkVEVU1QCiAgIGlmIChXQ09S
RURVTVAoZXhpdF9jb2RlKSkgewogICAgIG0gPDwgIiAoY29yZSBkdW1wZWQpIjsKICAgfQotI2Vu
ZGlmCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgIGVuZGlmCisjIGVuZGlmICAvLyBH
VEVTVF9PU19XSU5ET1dTIHx8IEdURVNUX09TX0ZVQ0hTSUEKKwogICByZXR1cm4gbS5HZXRTdHJp
bmcoKTsKIH0KIApAQCAtMTYyLDQyICsyMjMsNTkgQEAgYm9vbCBFeGl0ZWRVbnN1Y2Nlc3NmdWxs
eShpbnQgZXhpdF9zdGF0dXMpIHsKICAgcmV0dXJuICFFeGl0ZWRXaXRoQ29kZSgwKShleGl0X3N0
YXR1cyk7CiB9CiAKLSNpZiAhR1RFU1RfT1NfV0lORE9XUworIyBpZiAhR1RFU1RfT1NfV0lORE9X
UyAmJiAhR1RFU1RfT1NfRlVDSFNJQQogLy8gR2VuZXJhdGVzIGEgdGV4dHVhbCBmYWlsdXJlIG1l
c3NhZ2Ugd2hlbiBhIGRlYXRoIHRlc3QgZmluZHMgbW9yZSB0aGFuCiAvLyBvbmUgdGhyZWFkIHJ1
bm5pbmcsIG9yIGNhbm5vdCBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiB0aHJlYWRzLCBwcmlvcgog
Ly8gdG8gZXhlY3V0aW5nIHRoZSBnaXZlbiBzdGF0ZW1lbnQuICBJdCBpcyB0aGUgcmVzcG9uc2li
aWxpdHkgb2YgdGhlCiAvLyBjYWxsZXIgbm90IHRvIHBhc3MgYSB0aHJlYWRfY291bnQgb2YgMS4K
LXN0YXRpYyBTdHJpbmcgRGVhdGhUZXN0VGhyZWFkV2FybmluZyhzaXplX3QgdGhyZWFkX2NvdW50
KSB7CitzdGF0aWMgc3RkOjpzdHJpbmcgRGVhdGhUZXN0VGhyZWFkV2FybmluZyhzaXplX3QgdGhy
ZWFkX2NvdW50KSB7CiAgIE1lc3NhZ2UgbXNnOwogICBtc2cgPDwgIkRlYXRoIHRlc3RzIHVzZSBm
b3JrKCksIHdoaWNoIGlzIHVuc2FmZSBwYXJ0aWN1bGFybHkiCiAgICAgICA8PCAiIGluIGEgdGhy
ZWFkZWQgY29udGV4dC4gRm9yIHRoaXMgdGVzdCwgIiA8PCBHVEVTVF9OQU1FXyA8PCAiICI7Ci0g
IGlmICh0aHJlYWRfY291bnQgPT0gMCkKKyAgaWYgKHRocmVhZF9jb3VudCA9PSAwKSB7CiAgICAg
bXNnIDw8ICJjb3VsZG4ndCBkZXRlY3QgdGhlIG51bWJlciBvZiB0aHJlYWRzLiI7Ci0gIGVsc2UK
KyAgfSBlbHNlIHsKICAgICBtc2cgPDwgImRldGVjdGVkICIgPDwgdGhyZWFkX2NvdW50IDw8ICIg
dGhyZWFkcy4iOworICB9CisgIG1zZyA8PCAiIFNlZSAiCisgICAgICAgICAiaHR0cHM6Ly9naXRo
dWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2dsZXRlc3QvZG9jcy8iCisg
ICAgICAgICAiYWR2YW5jZWQubWQjZGVhdGgtdGVzdHMtYW5kLXRocmVhZHMiCisgICAgICA8PCAi
IGZvciBtb3JlIGV4cGxhbmF0aW9uIGFuZCBzdWdnZXN0ZWQgc29sdXRpb25zLCBlc3BlY2lhbGx5
IGlmIgorICAgICAgPDwgIiB0aGlzIGlzIHRoZSBsYXN0IG1lc3NhZ2UgeW91IHNlZSBiZWZvcmUg
eW91ciB0ZXN0IHRpbWVzIG91dC4iOwogICByZXR1cm4gbXNnLkdldFN0cmluZygpOwogfQotI2Vu
ZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1Mg
JiYgIUdURVNUX09TX0ZVQ0hTSUEKIAogLy8gRmxhZyBjaGFyYWN0ZXJzIGZvciByZXBvcnRpbmcg
YSBkZWF0aCB0ZXN0IHRoYXQgZGlkIG5vdCBkaWUuCiBzdGF0aWMgY29uc3QgY2hhciBrRGVhdGhU
ZXN0TGl2ZWQgPSAnTCc7CiBzdGF0aWMgY29uc3QgY2hhciBrRGVhdGhUZXN0UmV0dXJuZWQgPSAn
Uic7CitzdGF0aWMgY29uc3QgY2hhciBrRGVhdGhUZXN0VGhyZXcgPSAnVCc7CiBzdGF0aWMgY29u
c3QgY2hhciBrRGVhdGhUZXN0SW50ZXJuYWxFcnJvciA9ICdJJzsKIAotLy8gQW4gZW51bWVyYXRp
b24gZGVzY3JpYmluZyBhbGwgb2YgdGhlIHBvc3NpYmxlIHdheXMgdGhhdCBhIGRlYXRoIHRlc3QK
LS8vIGNhbiBjb25jbHVkZS4gIERJRUQgbWVhbnMgdGhhdCB0aGUgcHJvY2VzcyBkaWVkIHdoaWxl
IGV4ZWN1dGluZyB0aGUKLS8vIHRlc3QgY29kZTsgTElWRUQgbWVhbnMgdGhhdCBwcm9jZXNzIGxp
dmVkIGJleW9uZCB0aGUgZW5kIG9mIHRoZSB0ZXN0Ci0vLyBjb2RlOyBhbmQgUkVUVVJORUQgbWVh
bnMgdGhhdCB0aGUgdGVzdCBzdGF0ZW1lbnQgYXR0ZW1wdGVkIGEgInJldHVybiwiCi0vLyB3aGlj
aCBpcyBub3QgYWxsb3dlZC4gIElOX1BST0dSRVNTIG1lYW5zIHRoZSB0ZXN0IGhhcyBub3QgeWV0
Ci0vLyBjb25jbHVkZWQuCi1lbnVtIERlYXRoVGVzdE91dGNvbWUgeyBJTl9QUk9HUkVTUywgRElF
RCwgTElWRUQsIFJFVFVSTkVEIH07CisjaWYgR1RFU1RfT1NfRlVDSFNJQQorCisvLyBGaWxlIGRl
c2NyaXB0b3IgdXNlZCBmb3IgdGhlIHBpcGUgaW4gdGhlIGNoaWxkIHByb2Nlc3MuCitzdGF0aWMg
Y29uc3QgaW50IGtGdWNoc2lhUmVhZFBpcGVGZCA9IDM7CisKKyNlbmRpZgorCisvLyBBbiBlbnVt
ZXJhdGlvbiBkZXNjcmliaW5nIGFsbCBvZiB0aGUgcG9zc2libGUgd2F5cyB0aGF0IGEgZGVhdGgg
dGVzdCBjYW4KKy8vIGNvbmNsdWRlLiAgRElFRCBtZWFucyB0aGF0IHRoZSBwcm9jZXNzIGRpZWQg
d2hpbGUgZXhlY3V0aW5nIHRoZSB0ZXN0CisvLyBjb2RlOyBMSVZFRCBtZWFucyB0aGF0IHByb2Nl
c3MgbGl2ZWQgYmV5b25kIHRoZSBlbmQgb2YgdGhlIHRlc3QgY29kZTsKKy8vIFJFVFVSTkVEIG1l
YW5zIHRoYXQgdGhlIHRlc3Qgc3RhdGVtZW50IGF0dGVtcHRlZCB0byBleGVjdXRlIGEgcmV0dXJu
CisvLyBzdGF0ZW1lbnQsIHdoaWNoIGlzIG5vdCBhbGxvd2VkOyBUSFJFVyBtZWFucyB0aGF0IHRo
ZSB0ZXN0IHN0YXRlbWVudAorLy8gcmV0dXJuZWQgY29udHJvbCBieSB0aHJvd2luZyBhbiBleGNl
cHRpb24uICBJTl9QUk9HUkVTUyBtZWFucyB0aGUgdGVzdAorLy8gaGFzIG5vdCB5ZXQgY29uY2x1
ZGVkLgorLy8gRklYTUU6IFVuaWZ5IG5hbWVzIGFuZCBwb3NzaWJseSB2YWx1ZXMgZm9yCisvLyBB
Ym9ydFJlYXNvbiwgRGVhdGhUZXN0T3V0Y29tZSwgYW5kIGZsYWcgY2hhcmFjdGVycyBhYm92ZS4K
K2VudW0gRGVhdGhUZXN0T3V0Y29tZSB7IElOX1BST0dSRVNTLCBESUVELCBMSVZFRCwgUkVUVVJO
RUQsIFRIUkVXIH07CiAKIC8vIFJvdXRpbmUgZm9yIGFib3J0aW5nIHRoZSBwcm9ncmFtIHdoaWNo
IGlzIHNhZmUgdG8gY2FsbCBmcm9tIGFuCiAvLyBleGVjLXN0eWxlIGRlYXRoIHRlc3QgY2hpbGQg
cHJvY2VzcywgaW4gd2hpY2ggY2FzZSB0aGUgZXJyb3IKIC8vIG1lc3NhZ2UgaXMgcHJvcGFnYXRl
ZCBiYWNrIHRvIHRoZSBwYXJlbnQgcHJvY2Vzcy4gIE90aGVyd2lzZSwgdGhlCiAvLyBtZXNzYWdl
IGlzIHNpbXBseSBwcmludGVkIHRvIHN0ZGVyci4gIEluIGVpdGhlciBjYXNlLCB0aGUgcHJvZ3Jh
bQogLy8gdGhlbiBleGl0cyB3aXRoIHN0YXR1cyAxLgotdm9pZCBEZWF0aFRlc3RBYm9ydChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpIHsKK3N0YXRpYyB2b2lkIERlYXRoVGVzdEFib3J0KGNvbnN0IHN0
ZDo6c3RyaW5nJiBtZXNzYWdlKSB7CiAgIC8vIE9uIGEgUE9TSVggc3lzdGVtLCB0aGlzIGZ1bmN0
aW9uIG1heSBiZSBjYWxsZWQgZnJvbSBhIHRocmVhZHNhZmUtc3R5bGUKICAgLy8gZGVhdGggdGVz
dCBjaGlsZCBwcm9jZXNzLCB3aGljaCBvcGVyYXRlcyBvbiBhIHZlcnkgc21hbGwgc3RhY2suICBV
c2UKICAgLy8gdGhlIGhlYXAgZm9yIGFueSBhZGRpdGlvbmFsIG5vbi1taW51c2N1bGUgbWVtb3J5
IHJlcXVpcmVtZW50cy4KQEAgLTIxMiwxOCArMjkwLDE5IEBAIHZvaWQgRGVhdGhUZXN0QWJvcnQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7CiAgIH0gZWxzZSB7CiAgICAgZnByaW50ZihzdGRlcnIs
ICIlcyIsIG1lc3NhZ2UuY19zdHIoKSk7CiAgICAgZmZsdXNoKHN0ZGVycik7Ci0gICAgYWJvcnQo
KTsKKyAgICBwb3NpeDo6QWJvcnQoKTsKICAgfQogfQogCiAvLyBBIHJlcGxhY2VtZW50IGZvciBD
SEVDSyB0aGF0IGNhbGxzIERlYXRoVGVzdEFib3J0IGlmIHRoZSBhc3NlcnRpb24KIC8vIGZhaWxz
LgotI2RlZmluZSBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhleHByZXNzaW9uKSBcCisjIGRlZmlu
ZSBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhleHByZXNzaW9uKSBcCiAgIGRvIHsgXAogICAgIGlm
ICghOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXNUcnVlKGV4cHJlc3Npb24pKSB7IFwKLSAgICAgIERl
YXRoVGVzdEFib3J0KDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZzo6Rm9ybWF0KCBcCi0gICAg
ICAgICAgIkNIRUNLIGZhaWxlZDogRmlsZSAlcywgbGluZSAlZDogJXMiLCBcCi0gICAgICAgICAg
X19GSUxFX18sIF9fTElORV9fLCAjZXhwcmVzc2lvbikpOyBcCisgICAgICBEZWF0aFRlc3RBYm9y
dCggXAorICAgICAgICAgIDo6c3RkOjpzdHJpbmcoIkNIRUNLIGZhaWxlZDogRmlsZSAiKSArIF9f
RklMRV9fICsgICIsIGxpbmUgIiBcCisgICAgICAgICAgKyA6OnRlc3Rpbmc6OmludGVybmFsOjpT
dHJlYW1hYmxlVG9TdHJpbmcoX19MSU5FX18pICsgIjogIiBcCisgICAgICAgICAgKyAjZXhwcmVz
c2lvbik7IFwKICAgICB9IFwKICAgfSB3aGlsZSAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlz
RmFsc2UoKSkKIApAQCAtMjM0LDIyICszMTMsMjMgQEAgdm9pZCBEZWF0aFRlc3RBYm9ydChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpIHsKIC8vIGV2YWx1YXRlcyB0aGUgZXhwcmVzc2lvbiBhcyBsb25n
IGFzIGl0IGV2YWx1YXRlcyB0byAtMSBhbmQgc2V0cwogLy8gZXJybm8gdG8gRUlOVFIuICBJZiB0
aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gLTEgYnV0IGVycm5vIGlzCiAvLyBzb21ldGhpbmcg
b3RoZXIgdGhhbiBFSU5UUiwgRGVhdGhUZXN0QWJvcnQgaXMgY2FsbGVkLgotI2RlZmluZSBHVEVT
VF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGV4cHJlc3Npb24pIFwKKyMgZGVmaW5lIEdURVNU
X0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oZXhwcmVzc2lvbikgXAogICBkbyB7IFwKICAgICBp
bnQgZ3Rlc3RfcmV0dmFsOyBcCiAgICAgZG8geyBcCiAgICAgICBndGVzdF9yZXR2YWwgPSAoZXhw
cmVzc2lvbik7IFwKICAgICB9IHdoaWxlIChndGVzdF9yZXR2YWwgPT0gLTEgJiYgZXJybm8gPT0g
RUlOVFIpOyBcCiAgICAgaWYgKGd0ZXN0X3JldHZhbCA9PSAtMSkgeyBcCi0gICAgICBEZWF0aFRl
c3RBYm9ydCg6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmc6OkZvcm1hdCggXAotICAgICAgICAg
ICJDSEVDSyBmYWlsZWQ6IEZpbGUgJXMsIGxpbmUgJWQ6ICVzICE9IC0xIiwgXAotICAgICAgICAg
IF9fRklMRV9fLCBfX0xJTkVfXywgI2V4cHJlc3Npb24pKTsgXAorICAgICAgRGVhdGhUZXN0QWJv
cnQoIFwKKyAgICAgICAgICA6OnN0ZDo6c3RyaW5nKCJDSEVDSyBmYWlsZWQ6IEZpbGUgIikgKyBf
X0ZJTEVfXyArICIsIGxpbmUgIiBcCisgICAgICAgICAgKyA6OnRlc3Rpbmc6OmludGVybmFsOjpT
dHJlYW1hYmxlVG9TdHJpbmcoX19MSU5FX18pICsgIjogIiBcCisgICAgICAgICAgKyAjZXhwcmVz
c2lvbiArICIgIT0gLTEiKTsgXAogICAgIH0gXAogICB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVy
bmFsOjpBbHdheXNGYWxzZSgpKQogCiAvLyBSZXR1cm5zIHRoZSBtZXNzYWdlIGRlc2NyaWJpbmcg
dGhlIGxhc3Qgc3lzdGVtIGVycm9yIGluIGVycm5vLgotU3RyaW5nIEdldExhc3RFcnJub0Rlc2Ny
aXB0aW9uKCkgewotICAgIHJldHVybiBTdHJpbmcoZXJybm8gPT0gMCA/ICIiIDogcG9zaXg6OlN0
ckVycm9yKGVycm5vKSk7CitzdGQ6OnN0cmluZyBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpIHsK
KyAgICByZXR1cm4gZXJybm8gPT0gMCA/ICIiIDogcG9zaXg6OlN0ckVycm9yKGVycm5vKTsKIH0K
IAogLy8gVGhpcyBpcyBjYWxsZWQgZnJvbSBhIGRlYXRoIHRlc3QgcGFyZW50IHByb2Nlc3MgdG8g
cmVhZCBhIGZhaWx1cmUKQEAgLTI5OSwxMSArMzc5LDExIEBAIGNvbnN0IGNoYXIqIERlYXRoVGVz
dDo6TGFzdE1lc3NhZ2UoKSB7CiAgIHJldHVybiBsYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZV8uY19z
dHIoKTsKIH0KIAotdm9pZCBEZWF0aFRlc3Q6OnNldF9sYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZShj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsKK3ZvaWQgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90
ZXN0X21lc3NhZ2UoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsKICAgbGFzdF9kZWF0aF90
ZXN0X21lc3NhZ2VfID0gbWVzc2FnZTsKIH0KIAotU3RyaW5nIERlYXRoVGVzdDo6bGFzdF9kZWF0
aF90ZXN0X21lc3NhZ2VfOworc3RkOjpzdHJpbmcgRGVhdGhUZXN0OjpsYXN0X2RlYXRoX3Rlc3Rf
bWVzc2FnZV87CiAKIC8vIFByb3ZpZGVzIGNyb3NzIHBsYXRmb3JtIGltcGxlbWVudGF0aW9uIGZv
ciBzb21lIGRlYXRoIGZ1bmN0aW9uYWxpdHkuCiBjbGFzcyBEZWF0aFRlc3RJbXBsIDogcHVibGlj
IERlYXRoVGVzdCB7CkBAIC0zODgsNiArNDY4LDkgQEAgdm9pZCBEZWF0aFRlc3RJbXBsOjpSZWFk
QW5kSW50ZXJwcmV0U3RhdHVzQnl0ZSgpIHsKICAgICAgIGNhc2Uga0RlYXRoVGVzdFJldHVybmVk
OgogICAgICAgICBzZXRfb3V0Y29tZShSRVRVUk5FRCk7CiAgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBrRGVhdGhUZXN0VGhyZXc6CisgICAgICAgIHNldF9vdXRjb21lKFRIUkVXKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgICBjYXNlIGtEZWF0aFRlc3RMaXZlZDoKICAgICAgICAgc2V0X291dGNv
bWUoTElWRUQpOwogICAgICAgICBicmVhazsKQEAgLTQxNiwxOSArNDk5LDQ2IEBAIHZvaWQgRGVh
dGhUZXN0SW1wbDo6QWJvcnQoQWJvcnRSZWFzb24gcmVhc29uKSB7CiAgIC8vIGl0IGZpbmRzIGFu
eSBkYXRhIGluIG91ciBwaXBlLiAgU28sIGhlcmUgd2Ugd3JpdGUgYSBzaW5nbGUgZmxhZyBieXRl
CiAgIC8vIHRvIHRoZSBwaXBlLCB0aGVuIGV4aXQuCiAgIGNvbnN0IGNoYXIgc3RhdHVzX2NoID0K
LSAgICAgIHJlYXNvbiA9PSBURVNUX0RJRF9OT1RfRElFID8ga0RlYXRoVGVzdExpdmVkIDoga0Rl
YXRoVGVzdFJldHVybmVkOworICAgICAgcmVhc29uID09IFRFU1RfRElEX05PVF9ESUUgPyBrRGVh
dGhUZXN0TGl2ZWQgOgorICAgICAgcmVhc29uID09IFRFU1RfVEhSRVdfRVhDRVBUSU9OID8ga0Rl
YXRoVGVzdFRocmV3IDoga0RlYXRoVGVzdFJldHVybmVkOworCiAgIEdURVNUX0RFQVRIX1RFU1Rf
Q0hFQ0tfU1lTQ0FMTF8ocG9zaXg6OldyaXRlKHdyaXRlX2ZkKCksICZzdGF0dXNfY2gsIDEpKTsK
LSAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhwb3NpeDo6Q2xvc2Uod3JpdGVfZmQo
KSkpOworICAvLyBXZSBhcmUgbGVha2luZyB0aGUgZGVzY3JpcHRvciBoZXJlIGJlY2F1c2Ugb24g
c29tZSBwbGF0Zm9ybXMgKGkuZS4sCisgIC8vIHdoZW4gYnVpbHQgYXMgV2luZG93cyBETEwpLCBk
ZXN0cnVjdG9ycyBvZiBnbG9iYWwgb2JqZWN0cyB3aWxsIHN0aWxsCisgIC8vIHJ1biBhZnRlciBj
YWxsaW5nIF9leGl0KCkuIE9uIHN1Y2ggc3lzdGVtcywgd3JpdGVfZmRfIHdpbGwgYmUKKyAgLy8g
aW5kaXJlY3RseSBjbG9zZWQgZnJvbSB0aGUgZGVzdHJ1Y3RvciBvZiBVbml0VGVzdEltcGwsIGNh
dXNpbmcgZG91YmxlCisgIC8vIGNsb3NlIGlmIGl0IGlzIGFsc28gY2xvc2VkIGhlcmUuIE9uIGRl
YnVnIGNvbmZpZ3VyYXRpb25zLCBkb3VibGUgY2xvc2UKKyAgLy8gbWF5IGFzc2VydC4gQXMgdGhl
cmUgYXJlIG5vIGluLXByb2Nlc3MgYnVmZmVycyB0byBmbHVzaCBoZXJlLCB3ZSBhcmUKKyAgLy8g
cmVseWluZyBvbiB0aGUgT1MgdG8gY2xvc2UgdGhlIGRlc2NyaXB0b3IgYWZ0ZXIgdGhlIHByb2Nl
c3MgdGVybWluYXRlcworICAvLyB3aGVuIHRoZSBkZXN0cnVjdG9ycyBhcmUgbm90IHJ1bi4KICAg
X2V4aXQoMSk7ICAvLyBFeGl0cyB3L28gYW55IG5vcm1hbCBleGl0IGhvb2tzICh3ZSB3ZXJlIHN1
cHBvc2VkIHRvIGNyYXNoKQogfQogCisvLyBSZXR1cm5zIGFuIGluZGVudGVkIGNvcHkgb2Ygc3Rk
ZXJyIG91dHB1dCBmb3IgYSBkZWF0aCB0ZXN0LgorLy8gVGhpcyBtYWtlcyBkaXN0aW5ndWlzaGlu
ZyBkZWF0aCB0ZXN0IG91dHB1dCBsaW5lcyBmcm9tIHJlZ3VsYXIgbG9nIGxpbmVzCisvLyBtdWNo
IGVhc2llci4KK3N0YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1hdERlYXRoVGVzdE91dHB1dChjb25z
dCA6OnN0ZDo6c3RyaW5nJiBvdXRwdXQpIHsKKyAgOjpzdGQ6OnN0cmluZyByZXQ7CisgIGZvciAo
c2l6ZV90IGF0ID0gMDsgOyApIHsKKyAgICBjb25zdCBzaXplX3QgbGluZV9lbmQgPSBvdXRwdXQu
ZmluZCgnXG4nLCBhdCk7CisgICAgcmV0ICs9ICJbICBERUFUSCAgIF0gIjsKKyAgICBpZiAobGlu
ZV9lbmQgPT0gOjpzdGQ6OnN0cmluZzo6bnBvcykgeworICAgICAgcmV0ICs9IG91dHB1dC5zdWJz
dHIoYXQpOworICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldCArPSBvdXRwdXQuc3Vic3RyKGF0
LCBsaW5lX2VuZCArIDEgLSBhdCk7CisgICAgYXQgPSBsaW5lX2VuZCArIDE7CisgIH0KKyAgcmV0
dXJuIHJldDsKK30KKwogLy8gQXNzZXNzZXMgdGhlIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvZiBhIGRl
YXRoIHRlc3QsIHVzaW5nIGJvdGggcHJpdmF0ZQogLy8gbWVtYmVycyB3aGljaCBoYXZlIHByZXZp
b3VzbHkgYmVlbiBzZXQsIGFuZCBvbmUgYXJndW1lbnQ6CiAvLwogLy8gUHJpdmF0ZSBkYXRhIG1l
bWJlcnM6CiAvLyAgIG91dGNvbWU6ICBBbiBlbnVtZXJhdGlvbiBkZXNjcmliaW5nIGhvdyB0aGUg
ZGVhdGggdGVzdAotLy8gICAgICAgICAgICAgY29uY2x1ZGVkOiBESUVELCBMSVZFRCwgb3IgUkVU
VVJORUQuICBUaGUgZGVhdGggdGVzdCBmYWlscwotLy8gICAgICAgICAgICAgaW4gdGhlIGxhdHRl
ciB0d28gY2FzZXMuCisvLyAgICAgICAgICAgICBjb25jbHVkZWQ6IERJRUQsIExJVkVELCBUSFJF
Vywgb3IgUkVUVVJORUQuICBUaGUgZGVhdGggdGVzdAorLy8gICAgICAgICAgICAgZmFpbHMgaW4g
dGhlIGxhdHRlciB0aHJlZSBjYXNlcy4KIC8vICAgc3RhdHVzOiAgIFRoZSBleGl0IHN0YXR1cyBv
ZiB0aGUgY2hpbGQgcHJvY2Vzcy4gT24gKm5peCwgaXQgaXMgaW4gdGhlCiAvLyAgICAgICAgICAg
ICBpbiB0aGUgZm9ybWF0IHNwZWNpZmllZCBieSB3YWl0KDIpLiBPbiBXaW5kb3dzLCB0aGlzIGlz
IHRoZQogLy8gICAgICAgICAgICAgdmFsdWUgc3VwcGxpZWQgdG8gdGhlIEV4aXRQcm9jZXNzKCkg
QVBJIG9yIGEgbnVtZXJpYyBjb2RlCkBAIC00NDgsNyArNTU4LDcgQEAgYm9vbCBEZWF0aFRlc3RJ
bXBsOjpQYXNzZWQoYm9vbCBzdGF0dXNfb2spIHsKICAgaWYgKCFzcGF3bmVkKCkpCiAgICAgcmV0
dXJuIGZhbHNlOwogCi0gIGNvbnN0IFN0cmluZyBlcnJvcl9tZXNzYWdlID0gR2V0Q2FwdHVyZWRT
dGRlcnIoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZXJyb3JfbWVzc2FnZSA9IEdldENhcHR1cmVk
U3RkZXJyKCk7CiAKICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgIE1lc3NhZ2UgYnVmZmVyOwpA
QCAtNDU3LDI1ICs1NjcsMzUgQEAgYm9vbCBEZWF0aFRlc3RJbXBsOjpQYXNzZWQoYm9vbCBzdGF0
dXNfb2spIHsKICAgc3dpdGNoIChvdXRjb21lKCkpIHsKICAgICBjYXNlIExJVkVEOgogICAgICAg
YnVmZmVyIDw8ICIgICAgUmVzdWx0OiBmYWlsZWQgdG8gZGllLlxuIgotICAgICAgICAgICAgIDw8
ICIgRXJyb3IgbXNnOiAiIDw8IGVycm9yX21lc3NhZ2U7CisgICAgICAgICAgICAgPDwgIiBFcnJv
ciBtc2c6XG4iIDw8IEZvcm1hdERlYXRoVGVzdE91dHB1dChlcnJvcl9tZXNzYWdlKTsKKyAgICAg
IGJyZWFrOworICAgIGNhc2UgVEhSRVc6CisgICAgICBidWZmZXIgPDwgIiAgICBSZXN1bHQ6IHRo
cmV3IGFuIGV4Y2VwdGlvbi5cbiIKKyAgICAgICAgICAgICA8PCAiIEVycm9yIG1zZzpcbiIgPDwg
Rm9ybWF0RGVhdGhUZXN0T3V0cHV0KGVycm9yX21lc3NhZ2UpOwogICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBSRVRVUk5FRDoKICAgICAgIGJ1ZmZlciA8PCAiICAgIFJlc3VsdDogaWxsZWdhbCByZXR1
cm4gaW4gdGVzdCBzdGF0ZW1lbnQuXG4iCi0gICAgICAgICAgICAgPDwgIiBFcnJvciBtc2c6ICIg
PDwgZXJyb3JfbWVzc2FnZTsKKyAgICAgICAgICAgICA8PCAiIEVycm9yIG1zZzpcbiIgPDwgRm9y
bWF0RGVhdGhUZXN0T3V0cHV0KGVycm9yX21lc3NhZ2UpOwogICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBESUVEOgogICAgICAgaWYgKHN0YXR1c19vaykgeworIyBpZiBHVEVTVF9VU0VTX1BDUkUKKyAg
ICAgICAgLy8gUENSRSByZWdleGVzIHN1cHBvcnQgZW1iZWRkZWQgTlVMcy4KKyAgICAgICAgY29u
c3QgYm9vbCBtYXRjaGVkID0gUkU6OlBhcnRpYWxNYXRjaChlcnJvcl9tZXNzYWdlLCAqcmVnZXgo
KSk7CisjIGVsc2UKICAgICAgICAgY29uc3QgYm9vbCBtYXRjaGVkID0gUkU6OlBhcnRpYWxNYXRj
aChlcnJvcl9tZXNzYWdlLmNfc3RyKCksICpyZWdleCgpKTsKKyMgZW5kaWYgIC8vIEdURVNUX1VT
RVNfUENSRQogICAgICAgICBpZiAobWF0Y2hlZCkgewogICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVl
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgIGJ1ZmZlciA8PCAiICAgIFJlc3VsdDogZGll
ZCBidXQgbm90IHdpdGggZXhwZWN0ZWQgZXJyb3IuXG4iCiAgICAgICAgICAgICAgICAgIDw8ICIg
IEV4cGVjdGVkOiAiIDw8IHJlZ2V4KCktPnBhdHRlcm4oKSA8PCAiXG4iCi0gICAgICAgICAgICAg
ICAgIDw8ICJBY3R1YWwgbXNnOiAiIDw8IGVycm9yX21lc3NhZ2U7CisgICAgICAgICAgICAgICAg
IDw8ICJBY3R1YWwgbXNnOlxuIiA8PCBGb3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2Fn
ZSk7CiAgICAgICAgIH0KICAgICAgIH0gZWxzZSB7CiAgICAgICAgIGJ1ZmZlciA8PCAiICAgIFJl
c3VsdDogZGllZCBidXQgbm90IHdpdGggZXhwZWN0ZWQgZXhpdCBjb2RlOlxuIgotICAgICAgICAg
ICAgICAgPDwgIiAgICAgICAgICAgICIgPDwgRXhpdFN1bW1hcnkoc3RhdHVzKCkpIDw8ICJcbiI7
CisgICAgICAgICAgICAgICA8PCAiICAgICAgICAgICAgIiA8PCBFeGl0U3VtbWFyeShzdGF0dXMo
KSkgPDwgIlxuIgorICAgICAgICAgICAgICAgPDwgIkFjdHVhbCBtc2c6XG4iIDw8IEZvcm1hdERl
YXRoVGVzdE91dHB1dChlcnJvcl9tZXNzYWdlKTsKICAgICAgIH0KICAgICAgIGJyZWFrOwogICAg
IGNhc2UgSU5fUFJPR1JFU1M6CkBAIC00ODgsNyArNjA4LDcgQEAgYm9vbCBEZWF0aFRlc3RJbXBs
OjpQYXNzZWQoYm9vbCBzdGF0dXNfb2spIHsKICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKLSNpZiBH
VEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MKIC8vIFdpbmRvd3NEZWF0aFRl
c3QgaW1wbGVtZW50cyBkZWF0aCB0ZXN0cyBvbiBXaW5kb3dzLiBEdWUgdG8gdGhlCiAvLyBzcGVj
aWZpY3Mgb2Ygc3RhcnRpbmcgbmV3IHByb2Nlc3NlcyBvbiBXaW5kb3dzLCBkZWF0aCB0ZXN0cyB0
aGVyZSBhcmUKIC8vIGFsd2F5cyB0aHJlYWRzYWZlLCBhbmQgR29vZ2xlIFRlc3QgY29uc2lkZXJz
IHRoZQpAQCAtNTE5LDExICs2MzksMTEgQEAgYm9vbCBEZWF0aFRlc3RJbXBsOjpQYXNzZWQoYm9v
bCBzdGF0dXNfb2spIHsKIC8vCiBjbGFzcyBXaW5kb3dzRGVhdGhUZXN0IDogcHVibGljIERlYXRo
VGVzdEltcGwgewogIHB1YmxpYzoKLSAgV2luZG93c0RlYXRoVGVzdChjb25zdCBjaGFyKiBzdGF0
ZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgUkUqIHJlZ2V4LAorICBXaW5kb3dzRGVh
dGhUZXN0KGNvbnN0IGNoYXIqIGFfc3RhdGVtZW50LAorICAgICAgICAgICAgICAgICAgIGNvbnN0
IFJFKiBhX3JlZ2V4LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsCiAgICAg
ICAgICAgICAgICAgICAgaW50IGxpbmUpCi0gICAgICA6IERlYXRoVGVzdEltcGwoc3RhdGVtZW50
LCByZWdleCksIGZpbGVfKGZpbGUpLCBsaW5lXyhsaW5lKSB7fQorICAgICAgOiBEZWF0aFRlc3RJ
bXBsKGFfc3RhdGVtZW50LCBhX3JlZ2V4KSwgZmlsZV8oZmlsZSksIGxpbmVfKGxpbmUpIHt9CiAK
ICAgLy8gQWxsIG9mIHRoZXNlIHZpcnR1YWwgZnVuY3Rpb25zIGFyZSBpbmhlcml0ZWQgZnJvbSBE
ZWF0aFRlc3QuCiAgIHZpcnR1YWwgaW50IFdhaXQoKTsKQEAgLTU4MCwxMiArNzAwLDEyIEBAIGlu
dCBXaW5kb3dzRGVhdGhUZXN0OjpXYWl0KCkgewogICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXygK
ICAgICAgIFdBSVRfT0JKRUNUXzAgPT0gOjpXYWl0Rm9yU2luZ2xlT2JqZWN0KGNoaWxkX2hhbmRs
ZV8uR2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
TkZJTklURSkpOwotICBEV09SRCBzdGF0dXM7Ci0gIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKDo6
R2V0RXhpdENvZGVQcm9jZXNzKGNoaWxkX2hhbmRsZV8uR2V0KCksICZzdGF0dXMpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICE9IEZBTFNFKTsKKyAgRFdPUkQgc3RhdHVzX2NvZGU7CisgIEdU
RVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKAorICAgICAgOjpHZXRFeGl0Q29kZVByb2Nlc3MoY2hpbGRf
aGFuZGxlXy5HZXQoKSwgJnN0YXR1c19jb2RlKSAhPSBGQUxTRSk7CiAgIGNoaWxkX2hhbmRsZV8u
UmVzZXQoKTsKLSAgc2V0X3N0YXR1cyhzdGF0aWNfY2FzdDxpbnQ+KHN0YXR1cykpOwotICByZXR1
cm4gdGhpcy0+c3RhdHVzKCk7CisgIHNldF9zdGF0dXMoc3RhdGljX2Nhc3Q8aW50PihzdGF0dXNf
Y29kZSkpOworICByZXR1cm4gc3RhdHVzKCk7CiB9CiAKIC8vIFRoZSBBc3N1bWVSb2xlIHByb2Nl
c3MgZm9yIGEgV2luZG93cyBkZWF0aCB0ZXN0LiAgSXQgY3JlYXRlcyBhIGNoaWxkCkBAIC02MjUs
MjIgKzc0NSwxOSBAQCBEZWF0aFRlc3Q6OlRlc3RSb2xlIFdpbmRvd3NEZWF0aFRlc3Q6OkFzc3Vt
ZVJvbGUoKSB7CiAgICAgICBGQUxTRSwgICAvLyBUaGUgaW5pdGlhbCBzdGF0ZSBpcyBub24tc2ln
bmFsbGVkLgogICAgICAgTlVMTCkpOyAgLy8gVGhlIGV2ZW4gaXMgdW5uYW1lZC4KICAgR1RFU1Rf
REVBVEhfVEVTVF9DSEVDS18oZXZlbnRfaGFuZGxlXy5HZXQoKSAhPSBOVUxMKTsKLSAgY29uc3Qg
U3RyaW5nIGZpbHRlcl9mbGFnID0gU3RyaW5nOjpGb3JtYXQoIi0tJXMlcz0lcy4lcyIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX0ZMQUdfUFJFRklY
Xywga0ZpbHRlckZsYWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZm8tPnRlc3RfY2FzZV9uYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZm8tPm5hbWUoKSk7Ci0gIGNvbnN0IFN0cmluZyBpbnRlcm5hbF9m
bGFnID0gU3RyaW5nOjpGb3JtYXQoCi0gICAgIi0tJXMlcz0lc3wlZHwlZHwldXwlSXV8JUl1IiwK
LSAgICAgIEdURVNUX0ZMQUdfUFJFRklYXywKLSAgICAgIGtJbnRlcm5hbFJ1bkRlYXRoVGVzdEZs
YWcsCi0gICAgICBmaWxlXywgbGluZV8sCi0gICAgICBkZWF0aF90ZXN0X2luZGV4LAotICAgICAg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pig6OkdldEN1cnJlbnRQcm9jZXNzSWQoKSksCi0gICAg
ICAvLyBzaXplX3QgaGFzIHRoZSBzYW1lIHdpdGggYXMgcG9pbnRlcnMgb24gYm90aCAzMi1iaXQg
YW5kIDY0LWJpdAorICBjb25zdCBzdGQ6OnN0cmluZyBmaWx0ZXJfZmxhZyA9CisgICAgICBzdGQ6
OnN0cmluZygiLS0iKSArIEdURVNUX0ZMQUdfUFJFRklYXyArIGtGaWx0ZXJGbGFnICsgIj0iICsK
KyAgICAgIGluZm8tPnRlc3RfY2FzZV9uYW1lKCkgKyAiLiIgKyBpbmZvLT5uYW1lKCk7CisgIGNv
bnN0IHN0ZDo6c3RyaW5nIGludGVybmFsX2ZsYWcgPQorICAgICAgc3RkOjpzdHJpbmcoIi0tIikg
KyBHVEVTVF9GTEFHX1BSRUZJWF8gKyBrSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnICsKKyAgICAg
ICI9IiArIGZpbGVfICsgInwiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGxpbmVfKSArICJ8IiArCisg
ICAgICBTdHJlYW1hYmxlVG9TdHJpbmcoZGVhdGhfdGVzdF9pbmRleCkgKyAifCIgKworICAgICAg
U3RyZWFtYWJsZVRvU3RyaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oOjpHZXRDdXJyZW50
UHJvY2Vzc0lkKCkpKSArCisgICAgICAvLyBzaXplX3QgaGFzIHRoZSBzYW1lIHdpZHRoIGFzIHBv
aW50ZXJzIG9uIGJvdGggMzItYml0IGFuZCA2NC1iaXQKICAgICAgIC8vIFdpbmRvd3MgcGxhdGZv
cm1zLgogICAgICAgLy8gU2VlIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFy
eS90Y3hmMWR3Ni5hc3B4LgotICAgICAgcmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KHdyaXRlX2hh
bmRsZSksCi0gICAgICByZWludGVycHJldF9jYXN0PHNpemVfdD4oZXZlbnRfaGFuZGxlXy5HZXQo
KSkpOworICAgICAgInwiICsgU3RyZWFtYWJsZVRvU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8c2l6
ZV90Pih3cml0ZV9oYW5kbGUpKSArCisgICAgICAifCIgKyBTdHJlYW1hYmxlVG9TdHJpbmcocmVp
bnRlcnByZXRfY2FzdDxzaXplX3Q+KGV2ZW50X2hhbmRsZV8uR2V0KCkpKTsKIAogICBjaGFyIGV4
ZWN1dGFibGVfcGF0aFtfTUFYX1BBVEggKyAxXTsgIC8vIE5PTElOVAogICBHVEVTVF9ERUFUSF9U
RVNUX0NIRUNLXygKQEAgLTY0OCwxMCArNzY1LDkgQEAgRGVhdGhUZXN0OjpUZXN0Um9sZSBXaW5k
b3dzRGVhdGhUZXN0OjpBc3N1bWVSb2xlKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGVjdXRhYmxlX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9NQVhfUEFUSCkpOwogCi0gIFN0cmluZyBjb21tYW5kX2xp
bmUgPSBTdHJpbmc6OkZvcm1hdCgiJXMgJXMgXCIlc1wiIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDo6R2V0Q29tbWFuZExpbmVBKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfZmxhZy5jX3N0cigpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxfZmxhZy5jX3N0cigpKTsKKyAgc3Rk
OjpzdHJpbmcgY29tbWFuZF9saW5lID0KKyAgICAgIHN0ZDo6c3RyaW5nKDo6R2V0Q29tbWFuZExp
bmVBKCkpICsgIiAiICsgZmlsdGVyX2ZsYWcgKyAiIFwiIiArCisgICAgICBpbnRlcm5hbF9mbGFn
ICsgIlwiIjsKIAogICBEZWF0aFRlc3Q6OnNldF9sYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZSgiIik7
CiAKQEAgLTY4NCw3ICs4MDAsMjAwIEBAIERlYXRoVGVzdDo6VGVzdFJvbGUgV2luZG93c0RlYXRo
VGVzdDo6QXNzdW1lUm9sZSgpIHsKICAgc2V0X3NwYXduZWQodHJ1ZSk7CiAgIHJldHVybiBPVkVS
U0VFX1RFU1Q7CiB9Ci0jZWxzZSAgLy8gV2UgYXJlIG5vdCBvbiBXaW5kb3dzLgorCisjIGVsaWYg
R1RFU1RfT1NfRlVDSFNJQQorCitjbGFzcyBGdWNoc2lhRGVhdGhUZXN0IDogcHVibGljIERlYXRo
VGVzdEltcGwgeworIHB1YmxpYzoKKyAgRnVjaHNpYURlYXRoVGVzdChjb25zdCBjaGFyKiBhX3N0
YXRlbWVudCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBSRSogYV9yZWdleCwKKyAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLAorICAgICAgICAgICAgICAgICAgIGludCBsaW5l
KQorICAgICAgOiBEZWF0aFRlc3RJbXBsKGFfc3RhdGVtZW50LCBhX3JlZ2V4KSwgZmlsZV8oZmls
ZSksIGxpbmVfKGxpbmUpIHt9CisgIHZpcnR1YWwgfkZ1Y2hzaWFEZWF0aFRlc3QoKSB7CisgICAg
enhfc3RhdHVzX3Qgc3RhdHVzID0genhfaGFuZGxlX2Nsb3NlKGNoaWxkX3Byb2Nlc3NfKTsKKyAg
ICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhzdGF0dXMgPT0gWlhfT0spOworICAgIHN0YXR1cyA9
IHp4X2hhbmRsZV9jbG9zZShwb3J0Xyk7CisgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3Rh
dHVzID09IFpYX09LKTsKKyAgfQorCisgIC8vIEFsbCBvZiB0aGVzZSB2aXJ0dWFsIGZ1bmN0aW9u
cyBhcmUgaW5oZXJpdGVkIGZyb20gRGVhdGhUZXN0LgorICB2aXJ0dWFsIGludCBXYWl0KCk7Cisg
IHZpcnR1YWwgVGVzdFJvbGUgQXNzdW1lUm9sZSgpOworCisgcHJpdmF0ZToKKyAgLy8gVGhlIG5h
bWUgb2YgdGhlIGZpbGUgaW4gd2hpY2ggdGhlIGRlYXRoIHRlc3QgaXMgbG9jYXRlZC4KKyAgY29u
c3QgY2hhciogY29uc3QgZmlsZV87CisgIC8vIFRoZSBsaW5lIG51bWJlciBvbiB3aGljaCB0aGUg
ZGVhdGggdGVzdCBpcyBsb2NhdGVkLgorICBjb25zdCBpbnQgbGluZV87CisKKyAgenhfaGFuZGxl
X3QgY2hpbGRfcHJvY2Vzc18gPSBaWF9IQU5ETEVfSU5WQUxJRDsKKyAgenhfaGFuZGxlX3QgcG9y
dF8gPSBaWF9IQU5ETEVfSU5WQUxJRDsKK307CisKKy8vIFV0aWxpdHkgY2xhc3MgZm9yIGFjY3Vt
dWxhdGluZyBjb21tYW5kLWxpbmUgYXJndW1lbnRzLgorY2xhc3MgQXJndW1lbnRzIHsKKyBwdWJs
aWM6CisgIEFyZ3VtZW50cygpIHsKKyAgICBhcmdzXy5wdXNoX2JhY2soTlVMTCk7CisgIH0KKwor
ICB+QXJndW1lbnRzKCkgeworICAgIGZvciAoc3RkOjp2ZWN0b3I8Y2hhcio+OjppdGVyYXRvciBp
ID0gYXJnc18uYmVnaW4oKTsgaSAhPSBhcmdzXy5lbmQoKTsKKyAgICAgICAgICsraSkgeworICAg
ICAgZnJlZSgqaSk7CisgICAgfQorICB9CisgIHZvaWQgQWRkQXJndW1lbnQoY29uc3QgY2hhciog
YXJndW1lbnQpIHsKKyAgICBhcmdzXy5pbnNlcnQoYXJnc18uZW5kKCkgLSAxLCBwb3NpeDo6U3Ry
RHVwKGFyZ3VtZW50KSk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyPgorICB2b2lk
IEFkZEFyZ3VtZW50cyhjb25zdCA6OnN0ZDo6dmVjdG9yPFN0cj4mIGFyZ3VtZW50cykgeworICAg
IGZvciAodHlwZW5hbWUgOjpzdGQ6OnZlY3RvcjxTdHI+Ojpjb25zdF9pdGVyYXRvciBpID0gYXJn
dW1lbnRzLmJlZ2luKCk7CisgICAgICAgICBpICE9IGFyZ3VtZW50cy5lbmQoKTsKKyAgICAgICAg
ICsraSkgeworICAgICAgYXJnc18uaW5zZXJ0KGFyZ3NfLmVuZCgpIC0gMSwgcG9zaXg6OlN0ckR1
cChpLT5jX3N0cigpKSk7CisgICAgfQorICB9CisgIGNoYXIqIGNvbnN0KiBBcmd2KCkgeworICAg
IHJldHVybiAmYXJnc19bMF07CisgIH0KKworICBpbnQgc2l6ZSgpIHsKKyAgICByZXR1cm4gYXJn
c18uc2l6ZSgpIC0gMTsKKyAgfQorCisgcHJpdmF0ZToKKyAgc3RkOjp2ZWN0b3I8Y2hhcio+IGFy
Z3NfOworfTsKKworLy8gV2FpdHMgZm9yIHRoZSBjaGlsZCBpbiBhIGRlYXRoIHRlc3QgdG8gZXhp
dCwgcmV0dXJuaW5nIGl0cyBleGl0CisvLyBzdGF0dXMsIG9yIDAgaWYgbm8gY2hpbGQgcHJvY2Vz
cyBleGlzdHMuICBBcyBhIHNpZGUgZWZmZWN0LCBzZXRzIHRoZQorLy8gb3V0Y29tZSBkYXRhIG1l
bWJlci4KK2ludCBGdWNoc2lhRGVhdGhUZXN0OjpXYWl0KCkgeworICBpZiAoIXNwYXduZWQoKSkK
KyAgICByZXR1cm4gMDsKKworICAvLyBSZWdpc3RlciB0byB3YWl0IGZvciB0aGUgY2hpbGQgcHJv
Y2VzcyB0byB0ZXJtaW5hdGUuCisgIHp4X3N0YXR1c190IHN0YXR1c196eDsKKyAgc3RhdHVzX3p4
ID0genhfb2JqZWN0X3dhaXRfYXN5bmMoY2hpbGRfcHJvY2Vzc18sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBvcnRfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwIC8qIGtleSAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWlhf
UFJPQ0VTU19URVJNSU5BVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBa
WF9XQUlUX0FTWU5DX09OQ0UpOworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhzdGF0dXNfengg
PT0gWlhfT0spOworCisgIC8vIFdhaXQgZm9yIGl0IHRvIHRlcm1pbmF0ZSwgb3IgYW4gZXhjZXB0
aW9uIHRvIGJlIHJlY2VpdmVkLgorICB6eF9wb3J0X3BhY2tldF90IHBhY2tldDsKKyAgc3RhdHVz
X3p4ID0genhfcG9ydF93YWl0KHBvcnRfLCBaWF9USU1FX0lORklOSVRFLCAmcGFja2V0KTsKKyAg
R1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhdHVzX3p4ID09IFpYX09LKTsKKworICBpZiAoWlhf
UEtUX0lTX0VYQ0VQVElPTihwYWNrZXQudHlwZSkpIHsKKyAgICAvLyBQcm9jZXNzIGVuY291bnRl
cmVkIGFuIGV4Y2VwdGlvbi4gS2lsbCBpdCBkaXJlY3RseSByYXRoZXIgdGhhbiBsZXR0aW5nCisg
ICAgLy8gb3RoZXIgaGFuZGxlcnMgcHJvY2VzcyB0aGUgZXZlbnQuCisgICAgc3RhdHVzX3p4ID0g
enhfdGFza19raWxsKGNoaWxkX3Byb2Nlc3NfKTsKKyAgICBHVEVTVF9ERUFUSF9URVNUX0NIRUNL
XyhzdGF0dXNfenggPT0gWlhfT0spOworCisgICAgLy8gTm93IHdhaXQgZm9yIHxjaGlsZF9wcm9j
ZXNzX3wgdG8gdGVybWluYXRlLgorICAgIHp4X3NpZ25hbHNfdCBzaWduYWxzID0gMDsKKyAgICBz
dGF0dXNfenggPSB6eF9vYmplY3Rfd2FpdF9vbmUoCisgICAgICAgIGNoaWxkX3Byb2Nlc3NfLCBa
WF9QUk9DRVNTX1RFUk1JTkFURUQsIFpYX1RJTUVfSU5GSU5JVEUsICZzaWduYWxzKTsKKyAgICBH
VEVTVF9ERUFUSF9URVNUX0NIRUNLXyhzdGF0dXNfenggPT0gWlhfT0spOworICAgIEdURVNUX0RF
QVRIX1RFU1RfQ0hFQ0tfKHNpZ25hbHMgJiBaWF9QUk9DRVNTX1RFUk1JTkFURUQpOworICB9IGVs
c2UgeworICAgIC8vIFByb2Nlc3MgdGVybWluYXRlZC4KKyAgICBHVEVTVF9ERUFUSF9URVNUX0NI
RUNLXyhaWF9QS1RfSVNfU0lHTkFMX09ORShwYWNrZXQudHlwZSkpOworICAgIEdURVNUX0RFQVRI
X1RFU1RfQ0hFQ0tfKHBhY2tldC5zaWduYWwub2JzZXJ2ZWQgJiBaWF9QUk9DRVNTX1RFUk1JTkFU
RUQpOworICB9CisKKyAgUmVhZEFuZEludGVycHJldFN0YXR1c0J5dGUoKTsKKworICB6eF9pbmZv
X3Byb2Nlc3NfdCBidWZmZXI7CisgIHN0YXR1c196eCA9IHp4X29iamVjdF9nZXRfaW5mbygKKyAg
ICAgIGNoaWxkX3Byb2Nlc3NfLAorICAgICAgWlhfSU5GT19QUk9DRVNTLAorICAgICAgJmJ1ZmZl
ciwKKyAgICAgIHNpemVvZihidWZmZXIpLAorICAgICAgbnVsbHB0ciwKKyAgICAgIG51bGxwdHIp
OworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhzdGF0dXNfenggPT0gWlhfT0spOworCisgIEdU
RVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGJ1ZmZlci5leGl0ZWQpOworICBzZXRfc3RhdHVzKGJ1ZmZl
ci5yZXR1cm5fY29kZSk7CisgIHJldHVybiBzdGF0dXMoKTsKK30KKworLy8gVGhlIEFzc3VtZVJv
bGUgcHJvY2VzcyBmb3IgYSBGdWNoc2lhIGRlYXRoIHRlc3QuICBJdCBjcmVhdGVzIGEgY2hpbGQK
Ky8vIHByb2Nlc3Mgd2l0aCB0aGUgc2FtZSBleGVjdXRhYmxlIGFzIHRoZSBjdXJyZW50IHByb2Nl
c3MgdG8gcnVuIHRoZQorLy8gZGVhdGggdGVzdC4gIFRoZSBjaGlsZCBwcm9jZXNzIGlzIGdpdmVu
IHRoZSAtLWd0ZXN0X2ZpbHRlciBhbmQKKy8vIC0tZ3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rl
c3QgZmxhZ3Mgc3VjaCB0aGF0IGl0IGtub3dzIHRvIHJ1biB0aGUKKy8vIGN1cnJlbnQgZGVhdGgg
dGVzdCBvbmx5LgorRGVhdGhUZXN0OjpUZXN0Um9sZSBGdWNoc2lhRGVhdGhUZXN0OjpBc3N1bWVS
b2xlKCkgeworICBjb25zdCBVbml0VGVzdEltcGwqIGNvbnN0IGltcGwgPSBHZXRVbml0VGVzdElt
cGwoKTsKKyAgY29uc3QgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBjb25zdCBmbGFnID0KKyAg
ICAgIGltcGwtPmludGVybmFsX3J1bl9kZWF0aF90ZXN0X2ZsYWcoKTsKKyAgY29uc3QgVGVzdElu
Zm8qIGNvbnN0IGluZm8gPSBpbXBsLT5jdXJyZW50X3Rlc3RfaW5mbygpOworICBjb25zdCBpbnQg
ZGVhdGhfdGVzdF9pbmRleCA9IGluZm8tPnJlc3VsdCgpLT5kZWF0aF90ZXN0X2NvdW50KCk7CisK
KyAgaWYgKGZsYWcgIT0gTlVMTCkgeworICAgIC8vIFBhcnNlSW50ZXJuYWxSdW5EZWF0aFRlc3RG
bGFnKCkgaGFzIHBlcmZvcm1lZCBhbGwgdGhlIG5lY2Vzc2FyeQorICAgIC8vIHByb2Nlc3Npbmcu
CisgICAgc2V0X3dyaXRlX2ZkKGtGdWNoc2lhUmVhZFBpcGVGZCk7CisgICAgcmV0dXJuIEVYRUNV
VEVfVEVTVDsKKyAgfQorCisgIENhcHR1cmVTdGRlcnIoKTsKKyAgLy8gRmx1c2ggdGhlIGxvZyBi
dWZmZXJzIHNpbmNlIHRoZSBsb2cgc3RyZWFtcyBhcmUgc2hhcmVkIHdpdGggdGhlIGNoaWxkLgor
ICBGbHVzaEluZm9Mb2coKTsKKworICAvLyBCdWlsZCB0aGUgY2hpbGQgcHJvY2VzcyBjb21tYW5k
IGxpbmUuCisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbHRlcl9mbGFnID0KKyAgICAgIHN0ZDo6c3Ry
aW5nKCItLSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsga0ZpbHRlckZsYWcgKyAiPSIKKyAgICAg
ICsgaW5mby0+dGVzdF9jYXNlX25hbWUoKSArICIuIiArIGluZm8tPm5hbWUoKTsKKyAgY29uc3Qg
c3RkOjpzdHJpbmcgaW50ZXJuYWxfZmxhZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0iKSArIEdU
RVNUX0ZMQUdfUFJFRklYXyArIGtJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcgKyAiPSIKKyAgICAg
ICsgZmlsZV8gKyAifCIKKyAgICAgICsgU3RyZWFtYWJsZVRvU3RyaW5nKGxpbmVfKSArICJ8Igor
ICAgICAgKyBTdHJlYW1hYmxlVG9TdHJpbmcoZGVhdGhfdGVzdF9pbmRleCk7CisgIEFyZ3VtZW50
cyBhcmdzOworICBhcmdzLkFkZEFyZ3VtZW50cyhHZXRJbmplY3RhYmxlQXJndnMoKSk7CisgIGFy
Z3MuQWRkQXJndW1lbnQoZmlsdGVyX2ZsYWcuY19zdHIoKSk7CisgIGFyZ3MuQWRkQXJndW1lbnQo
aW50ZXJuYWxfZmxhZy5jX3N0cigpKTsKKworICAvLyBCdWlsZCB0aGUgcGlwZSBmb3IgY29tbXVu
aWNhdGlvbiB3aXRoIHRoZSBjaGlsZC4KKyAgenhfc3RhdHVzX3Qgc3RhdHVzOworICB6eF9oYW5k
bGVfdCBjaGlsZF9waXBlX2hhbmRsZTsKKyAgdWludDMyX3QgdHlwZTsKKyAgc3RhdHVzID0gZmRp
b19waXBlX2hhbGYoJmNoaWxkX3BpcGVfaGFuZGxlLCAmdHlwZSk7CisgIEdURVNUX0RFQVRIX1RF
U1RfQ0hFQ0tfKHN0YXR1cyA+PSAwKTsKKyAgc2V0X3JlYWRfZmQoc3RhdHVzKTsKKworICAvLyBT
ZXQgdGhlIHBpcGUgaGFuZGxlIGZvciB0aGUgY2hpbGQuCisgIGZkaW9fc3Bhd25fYWN0aW9uX3Qg
YWRkX2hhbmRsZV9hY3Rpb24gPSB7fTsKKyAgYWRkX2hhbmRsZV9hY3Rpb24uYWN0aW9uID0gRkRJ
T19TUEFXTl9BQ1RJT05fQUREX0hBTkRMRTsKKyAgYWRkX2hhbmRsZV9hY3Rpb24uaC5pZCA9IFBB
X0hORCh0eXBlLCBrRnVjaHNpYVJlYWRQaXBlRmQpOworICBhZGRfaGFuZGxlX2FjdGlvbi5oLmhh
bmRsZSA9IGNoaWxkX3BpcGVfaGFuZGxlOworCisgIC8vIFNwYXduIHRoZSBjaGlsZCBwcm9jZXNz
LgorICBzdGF0dXMgPSBmZGlvX3NwYXduX2V0YyhaWF9IQU5ETEVfSU5WQUxJRCwgRkRJT19TUEFX
Tl9DTE9ORV9BTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MuQXJndigpWzBdLCBh
cmdzLkFyZ3YoKSwgbnVsbHB0ciwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmFkZF9o
YW5kbGVfYWN0aW9uLCAmY2hpbGRfcHJvY2Vzc18sIG51bGxwdHIpOworICBHVEVTVF9ERUFUSF9U
RVNUX0NIRUNLXyhzdGF0dXMgPT0gWlhfT0spOworCisgIC8vIENyZWF0ZSBhbiBleGNlcHRpb24g
cG9ydCBhbmQgYXR0YWNoIGl0IHRvIHRoZSB8Y2hpbGRfcHJvY2Vzc198LCB0byBhbGxvdworICAv
LyB1cyB0byBzdXBwcmVzcyB0aGUgc3lzdGVtIGRlZmF1bHQgZXhjZXB0aW9uIGhhbmRsZXIgZnJv
bSBmaXJpbmcuCisgIHN0YXR1cyA9IHp4X3BvcnRfY3JlYXRlKDAsICZwb3J0Xyk7CisgIEdURVNU
X0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1cyA9PSBaWF9PSyk7CisgIHN0YXR1cyA9IHp4X3Rhc2tf
YmluZF9leGNlcHRpb25fcG9ydCgKKyAgICAgIGNoaWxkX3Byb2Nlc3NfLCBwb3J0XywgMCAvKiBr
ZXkgKi8sIDAgLypvcHRpb25zICovKTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhdHVz
ID09IFpYX09LKTsKKworICBzZXRfc3Bhd25lZCh0cnVlKTsKKyAgcmV0dXJuIE9WRVJTRUVfVEVT
VDsKK30KKworI2Vsc2UgIC8vIFdlIGFyZSBuZWl0aGVyIG9uIFdpbmRvd3MsIG5vciBvbiBGdWNo
c2lhLgogCiAvLyBGb3JraW5nRGVhdGhUZXN0IHByb3ZpZGVzIGltcGxlbWVudGF0aW9ucyBmb3Ig
bW9zdCBvZiB0aGUgYWJzdHJhY3QKIC8vIG1ldGhvZHMgb2YgdGhlIERlYXRoVGVzdCBpbnRlcmZh
Y2UuICBPbmx5IHRoZSBBc3N1bWVSb2xlIG1ldGhvZCBpcwpAQCAtNzY4LDYgKzEwNzcsNyBAQCBE
ZWF0aFRlc3Q6OlRlc3RSb2xlIE5vRXhlY0RlYXRoVGVzdDo6QXNzdW1lUm9sZSgpIHsKICAgICAv
LyBFdmVudCBmb3J3YXJkaW5nIHRvIHRoZSBsaXN0ZW5lcnMgb2YgZXZlbnQgbGlzdGVuZXIgQVBJ
IG11c2ggYmUgc2h1dAogICAgIC8vIGRvd24gaW4gZGVhdGggdGVzdCBzdWJwcm9jZXNzZXMuCiAg
ICAgR2V0VW5pdFRlc3RJbXBsKCktPmxpc3RlbmVycygpLT5TdXBwcmVzc0V2ZW50Rm9yd2FyZGlu
ZygpOworICAgIGdfaW5fZmFzdF9kZWF0aF90ZXN0X2NoaWxkID0gdHJ1ZTsKICAgICByZXR1cm4g
RVhFQ1VURV9URVNUOwogICB9IGVsc2UgewogICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lT
Q0FMTF8oY2xvc2UocGlwZV9mZFsxXSkpOwpAQCAtNzg3LDYgKzEwOTcsMTUgQEAgY2xhc3MgRXhl
Y0RlYXRoVGVzdCA6IHB1YmxpYyBGb3JraW5nRGVhdGhUZXN0IHsKICAgICAgIEZvcmtpbmdEZWF0
aFRlc3QoYV9zdGF0ZW1lbnQsIGFfcmVnZXgpLCBmaWxlXyhmaWxlKSwgbGluZV8obGluZSkgeyB9
CiAgIHZpcnR1YWwgVGVzdFJvbGUgQXNzdW1lUm9sZSgpOwogIHByaXZhdGU6CisgIHN0YXRpYyA6
OnN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRBcmd2c0ZvckRlYXRoVGVzdENoaWxkUHJvY2Vz
cygpIHsKKyAgICA6OnN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBhcmdzID0gR2V0SW5qZWN0YWJs
ZUFyZ3ZzKCk7CisjICBpZiBkZWZpbmVkKEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ09NTUFORF9M
SU5FX0FSR1NfKQorICAgIDo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGV4dHJhX2FyZ3MgPQor
ICAgICAgICBHVEVTVF9FWFRSQV9ERUFUSF9URVNUX0NPTU1BTkRfTElORV9BUkdTXygpOworICAg
IGFyZ3MuaW5zZXJ0KGFyZ3MuZW5kKCksIGV4dHJhX2FyZ3MuYmVnaW4oKSwgZXh0cmFfYXJncy5l
bmQoKSk7CisjICBlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9FWFRSQV9ERUFUSF9URVNUX0NPTU1B
TkRfTElORV9BUkdTXykKKyAgICByZXR1cm4gYXJnczsKKyAgfQogICAvLyBUaGUgbmFtZSBvZiB0
aGUgZmlsZSBpbiB3aGljaCB0aGUgZGVhdGggdGVzdCBpcyBsb2NhdGVkLgogICBjb25zdCBjaGFy
KiBjb25zdCBmaWxlXzsKICAgLy8gVGhlIGxpbmUgbnVtYmVyIG9uIHdoaWNoIHRoZSBkZWF0aCB0
ZXN0IGlzIGxvY2F0ZWQuCkBAIC04MjEsNiArMTE0MCw3IEBAIGNsYXNzIEFyZ3VtZW50cyB7CiAg
IGNoYXIqIGNvbnN0KiBBcmd2KCkgewogICAgIHJldHVybiAmYXJnc19bMF07CiAgIH0KKwogIHBy
aXZhdGU6CiAgIHN0ZDo6dmVjdG9yPGNoYXIqPiBhcmdzXzsKIH07CkBAIC04MzIsNiArMTE1Miwy
MSBAQCBzdHJ1Y3QgRXhlY0RlYXRoVGVzdEFyZ3MgewogICBpbnQgY2xvc2VfZmQ7ICAgICAgIC8v
IEZpbGUgZGVzY3JpcHRvciB0byBjbG9zZTsgdGhlIHJlYWQgZW5kIG9mIGEgcGlwZQogfTsKIAor
IyAgaWYgR1RFU1RfT1NfTUFDCitpbmxpbmUgY2hhcioqIEdldEVudmlyb24oKSB7CisgIC8vIFdo
ZW4gR29vZ2xlIFRlc3QgaXMgYnVpbHQgYXMgYSBmcmFtZXdvcmsgb24gTWFjT1MgWCwgdGhlIGVu
dmlyb24gdmFyaWFibGUKKyAgLy8gaXMgdW5hdmFpbGFibGUuIEFwcGxlJ3MgZG9jdW1lbnRhdGlv
biAobWFuIGVudmlyb24pIHJlY29tbWVuZHMgdXNpbmcKKyAgLy8gX05TR2V0RW52aXJvbigpIGlu
c3RlYWQuCisgIHJldHVybiAqX05TR2V0RW52aXJvbigpOworfQorIyAgZWxzZQorLy8gU29tZSBQ
T1NJWCBwbGF0Zm9ybXMgZXhwZWN0IHlvdSB0byBkZWNsYXJlIGVudmlyb24uIGV4dGVybiAiQyIg
bWFrZXMKKy8vIGl0IHJlc2lkZSBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KK2V4dGVybiAiQyIg
Y2hhcioqIGVudmlyb247CitpbmxpbmUgY2hhcioqIEdldEVudmlyb24oKSB7IHJldHVybiBlbnZp
cm9uOyB9CisjICBlbmRpZiAgLy8gR1RFU1RfT1NfTUFDCisKKyMgIGlmICFHVEVTVF9PU19RTlgK
IC8vIFRoZSBtYWluIGZ1bmN0aW9uIGZvciBhIHRocmVhZHNhZmUtc3R5bGUgZGVhdGggdGVzdCBj
aGlsZCBwcm9jZXNzLgogLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gYSBjbG9uZSgpLWVk
IHByb2Nlc3MgYW5kIHRodXMgbXVzdCBhdm9pZAogLy8gYW55IHBvdGVudGlhbGx5IHVuc2FmZSBv
cGVyYXRpb25zIGxpa2UgbWFsbG9jIG9yIGxpYmMgZnVuY3Rpb25zLgpAQCAtODQ2LDkgKzExODEs
OCBAQCBzdGF0aWMgaW50IEV4ZWNEZWF0aFRlc3RDaGlsZE1haW4odm9pZCogY2hpbGRfYXJnKSB7
CiAgICAgICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+b3JpZ2luYWxfd29ya2luZ19kaXIoKTsK
ICAgLy8gV2UgY2FuIHNhZmVseSBjYWxsIGNoZGlyKCkgYXMgaXQncyBhIGRpcmVjdCBzeXN0ZW0g
Y2FsbC4KICAgaWYgKGNoZGlyKG9yaWdpbmFsX2RpcikgIT0gMCkgewotICAgIERlYXRoVGVzdEFi
b3J0KFN0cmluZzo6Rm9ybWF0KCJjaGRpcihcIiVzXCIpIGZhaWxlZDogJXMiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsX2RpciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpLmNfc3RyKCkpKTsKKyAg
ICBEZWF0aFRlc3RBYm9ydChzdGQ6OnN0cmluZygiY2hkaXIoXCIiKSArIG9yaWdpbmFsX2RpciAr
ICJcIikgZmFpbGVkOiAiICsKKyAgICAgICAgICAgICAgICAgICBHZXRMYXN0RXJybm9EZXNjcmlw
dGlvbigpKTsKICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICB9CiAKQEAgLTg1Nyw0MCArMTE5
MSw5NyBAQCBzdGF0aWMgaW50IEV4ZWNEZWF0aFRlc3RDaGlsZE1haW4odm9pZCogY2hpbGRfYXJn
KSB7CiAgIC8vIHVuc2FmZS4gIFNpbmNlIGV4ZWN2ZSgpIGRvZXNuJ3Qgc2VhcmNoIHRoZSBQQVRI
LCB0aGUgdXNlciBtdXN0CiAgIC8vIGludm9rZSB0aGUgdGVzdCBwcm9ncmFtIHZpYSBhIHZhbGlk
IHBhdGggdGhhdCBjb250YWlucyBhdCBsZWFzdAogICAvLyBvbmUgcGF0aCBzZXBhcmF0b3IuCi0g
IC8vIFdlIGhhdmUgcmVwbGFjZWQgZXhlY3ZlKCkgd2l0aCBleGVjdigpIGZvciBXZWJLaXQgdG8g
YXZvaWQgdXNpbmcKLSAgLy8gZW52aXJvbi4gSXQgc2hvdWxkIGJlIHNhZmUgYmVjYXVzZSBleGVj
digpIGlzIGp1c3QgYSBzaW1wbGUgd3JhcHBlcgotICAvLyBvZiBleGVjdmUoKS4KLSAgZXhlY3Yo
YXJncy0+YXJndlswXSwgYXJncy0+YXJndik7Ci0gIERlYXRoVGVzdEFib3J0KFN0cmluZzo6Rm9y
bWF0KCJleGVjdiglcywgLi4uKSBpbiAlcyBmYWlsZWQ6ICVzIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXJncy0+YXJndlswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3JpZ2luYWxfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRM
YXN0RXJybm9EZXNjcmlwdGlvbigpLmNfc3RyKCkpKTsKKyAgZXhlY3ZlKGFyZ3MtPmFyZ3ZbMF0s
IGFyZ3MtPmFyZ3YsIEdldEVudmlyb24oKSk7CisgIERlYXRoVGVzdEFib3J0KHN0ZDo6c3RyaW5n
KCJleGVjdmUoIikgKyBhcmdzLT5hcmd2WzBdICsgIiwgLi4uKSBpbiAiICsKKyAgICAgICAgICAg
ICAgICAgb3JpZ2luYWxfZGlyICsgIiBmYWlsZWQ6ICIgKworICAgICAgICAgICAgICAgICBHZXRM
YXN0RXJybm9EZXNjcmlwdGlvbigpKTsKICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKIH0KKyMgIGVu
ZGlmICAvLyAhR1RFU1RfT1NfUU5YCiAKKyMgIGlmIEdURVNUX0hBU19DTE9ORQogLy8gVHdvIHV0
aWxpdHkgcm91dGluZXMgdGhhdCB0b2dldGhlciBkZXRlcm1pbmUgdGhlIGRpcmVjdGlvbiB0aGUg
c3RhY2sKIC8vIGdyb3dzLgogLy8gVGhpcyBjb3VsZCBiZSBhY2NvbXBsaXNoZWQgbW9yZSBlbGVn
YW50bHkgYnkgYSBzaW5nbGUgcmVjdXJzaXZlCiAvLyBmdW5jdGlvbiwgYnV0IHdlIHdhbnQgdG8g
Z3VhcmQgYWdhaW5zdCB0aGUgdW5saWtlbHkgcG9zc2liaWxpdHkgb2YKIC8vIGEgc21hcnQgY29t
cGlsZXIgb3B0aW1pemluZyB0aGUgcmVjdXJzaW9uIGF3YXkuCi1ib29sIFN0YWNrTG93ZXJUaGFu
QWRkcmVzcyhjb25zdCB2b2lkKiBwdHIpIHsKKy8vCisvLyBHVEVTVF9OT19JTkxJTkVfIGlzIHJl
cXVpcmVkIHRvIHByZXZlbnQgR0NDIDQuNiBmcm9tIGlubGluaW5nCisvLyBTdGFja0xvd2VyVGhh
bkFkZHJlc3MgaW50byBTdGFja0dyb3dzRG93biwgd2hpY2ggdGhlbiBkb2Vzbid0IGdpdmUKKy8v
IGNvcnJlY3QgYW5zd2VyLgorc3RhdGljIHZvaWQgU3RhY2tMb3dlclRoYW5BZGRyZXNzKGNvbnN0
IHZvaWQqIHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sKiByZXN1
bHQpIEdURVNUX05PX0lOTElORV87CitzdGF0aWMgdm9pZCBTdGFja0xvd2VyVGhhbkFkZHJlc3Mo
Y29uc3Qgdm9pZCogcHRyLCBib29sKiByZXN1bHQpIHsKICAgaW50IGR1bW15OwotICByZXR1cm4g
JmR1bW15IDwgcHRyOworICAqcmVzdWx0ID0gKCZkdW1teSA8IHB0cik7CiB9CiAKLWJvb2wgU3Rh
Y2tHcm93c0Rvd24oKSB7CisvLyBNYWtlIHN1cmUgQWRkcmVzc1Nhbml0aXplciBkb2VzIG5vdCB0
YW1wZXIgd2l0aCB0aGUgc3RhY2sgaGVyZS4KK0dURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9B
RERSRVNTXworc3RhdGljIGJvb2wgU3RhY2tHcm93c0Rvd24oKSB7CiAgIGludCBkdW1teTsKLSAg
cmV0dXJuIFN0YWNrTG93ZXJUaGFuQWRkcmVzcygmZHVtbXkpOworICBib29sIHJlc3VsdDsKKyAg
U3RhY2tMb3dlclRoYW5BZGRyZXNzKCZkdW1teSwgJnJlc3VsdCk7CisgIHJldHVybiByZXN1bHQ7
CiB9Ci0KLS8vIEEgdGhyZWFkc2FmZSBpbXBsZW1lbnRhdGlvbiBvZiBmb3JrKDIpIGZvciB0aHJl
YWRzYWZlLXN0eWxlIGRlYXRoIHRlc3RzCi0vLyB0aGF0IHVzZXMgY2xvbmUoMikuICBJdCBkaWVz
IHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpZiBhbnl0aGluZyBnb2VzCi0vLyB3cm9uZy4KLXN0YXRp
YyBwaWRfdCBFeGVjRGVhdGhUZXN0Rm9yayhjaGFyKiBjb25zdCogYXJndiwgaW50IGNsb3NlX2Zk
KSB7CisjICBlbmRpZiAgLy8gR1RFU1RfSEFTX0NMT05FCisKKy8vIFNwYXducyBhIGNoaWxkIHBy
b2Nlc3Mgd2l0aCB0aGUgc2FtZSBleGVjdXRhYmxlIGFzIHRoZSBjdXJyZW50IHByb2Nlc3MgaW4K
Ky8vIGEgdGhyZWFkLXNhZmUgbWFubmVyIGFuZCBpbnN0cnVjdHMgaXQgdG8gcnVuIHRoZSBkZWF0
aCB0ZXN0LiAgVGhlCisvLyBpbXBsZW1lbnRhdGlvbiB1c2VzIGZvcmsoMikgKyBleGVjLiAgT24g
c3lzdGVtcyB3aGVyZSBjbG9uZSgyKSBpcworLy8gYXZhaWxhYmxlLCBpdCBpcyB1c2VkIGluc3Rl
YWQsIGJlaW5nIHNsaWdodGx5IG1vcmUgdGhyZWFkLXNhZmUuICBPbiBRTlgsCisvLyBmb3JrIHN1
cHBvcnRzIG9ubHkgc2luZ2xlLXRocmVhZGVkIGVudmlyb25tZW50cywgc28gdGhpcyBmdW5jdGlv
biB1c2VzCisvLyBzcGF3bigyKSB0aGVyZSBpbnN0ZWFkLiAgVGhlIGZ1bmN0aW9uIGRpZXMgd2l0
aCBhbiBlcnJvciBtZXNzYWdlIGlmCisvLyBhbnl0aGluZyBnb2VzIHdyb25nLgorc3RhdGljIHBp
ZF90IEV4ZWNEZWF0aFRlc3RTcGF3bkNoaWxkKGNoYXIqIGNvbnN0KiBhcmd2LCBpbnQgY2xvc2Vf
ZmQpIHsKICAgRXhlY0RlYXRoVGVzdEFyZ3MgYXJncyA9IHsgYXJndiwgY2xvc2VfZmQgfTsKICAg
cGlkX3QgY2hpbGRfcGlkID0gLTE7CiAKLSNpZiBHVEVTVF9IQVNfQ0xPTkUKKyMgIGlmIEdURVNU
X09TX1FOWAorICAvLyBPYnRhaW5zIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBhbmQgc2V0cyBpdCB0
byBiZSBjbG9zZWQgaW4gdGhlIGNoaWxkCisgIC8vIHByb2Nlc3MuCisgIGNvbnN0IGludCBjd2Rf
ZmQgPSBvcGVuKCIuIiwgT19SRE9OTFkpOworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhjd2Rf
ZmQgIT0gLTEpOworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGZjbnRsKGN3ZF9m
ZCwgRl9TRVRGRCwgRkRfQ0xPRVhFQykpOworICAvLyBXZSBuZWVkIHRvIGV4ZWN1dGUgdGhlIHRl
c3QgcHJvZ3JhbSBpbiB0aGUgc2FtZSBlbnZpcm9ubWVudCB3aGVyZQorICAvLyBpdCB3YXMgb3Jp
Z2luYWxseSBpbnZva2VkLiAgVGhlcmVmb3JlIHdlIGNoYW5nZSB0byB0aGUgb3JpZ2luYWwKKyAg
Ly8gd29ya2luZyBkaXJlY3RvcnkgZmlyc3QuCisgIGNvbnN0IGNoYXIqIGNvbnN0IG9yaWdpbmFs
X2RpciA9CisgICAgICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+b3JpZ2luYWxfd29ya2luZ19k
aXIoKTsKKyAgLy8gV2UgY2FuIHNhZmVseSBjYWxsIGNoZGlyKCkgYXMgaXQncyBhIGRpcmVjdCBz
eXN0ZW0gY2FsbC4KKyAgaWYgKGNoZGlyKG9yaWdpbmFsX2RpcikgIT0gMCkgeworICAgIERlYXRo
VGVzdEFib3J0KHN0ZDo6c3RyaW5nKCJjaGRpcihcIiIpICsgb3JpZ2luYWxfZGlyICsgIlwiKSBm
YWlsZWQ6ICIgKworICAgICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkp
OworICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgIH0KKworICBpbnQgZmRfZmxhZ3M7CisgIC8v
IFNldCBjbG9zZV9mZCB0byBiZSBjbG9zZWQgYWZ0ZXIgc3Bhd24uCisgIEdURVNUX0RFQVRIX1RF
U1RfQ0hFQ0tfU1lTQ0FMTF8oZmRfZmxhZ3MgPSBmY250bChjbG9zZV9mZCwgRl9HRVRGRCkpOwor
ICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGZjbnRsKGNsb3NlX2ZkLCBGX1NFVEZE
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkX2ZsYWdzIHwgRkRf
Q0xPRVhFQykpOworICBzdHJ1Y3QgaW5oZXJpdGFuY2UgaW5oZXJpdCA9IHswfTsKKyAgLy8gc3Bh
d24gaXMgYSBzeXN0ZW0gY2FsbC4KKyAgY2hpbGRfcGlkID0gc3Bhd24oYXJncy5hcmd2WzBdLCAw
LCBOVUxMLCAmaW5oZXJpdCwgYXJncy5hcmd2LCBHZXRFbnZpcm9uKCkpOworICAvLyBSZXN0b3Jl
cyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVD
S18oZmNoZGlyKGN3ZF9mZCkgIT0gLTEpOworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NB
TExfKGNsb3NlKGN3ZF9mZCkpOworCisjICBlbHNlICAgLy8gR1RFU1RfT1NfUU5YCisjICAgaWYg
R1RFU1RfT1NfTElOVVgKKyAgLy8gV2hlbiBhIFNJR1BST0Ygc2lnbmFsIGlzIHJlY2VpdmVkIHdo
aWxlIGZvcmsoKSBvciBjbG9uZSgpIGFyZSBleGVjdXRpbmcsCisgIC8vIHRoZSBwcm9jZXNzIG1h
eSBoYW5nLiBUbyBhdm9pZCB0aGlzLCB3ZSBpZ25vcmUgU0lHUFJPRiBoZXJlIGFuZCByZS1lbmFi
bGUKKyAgLy8gaXQgYWZ0ZXIgdGhlIGNhbGwgdG8gZm9yaygpL2Nsb25lKCkgaXMgY29tcGxldGUu
CisgIHN0cnVjdCBzaWdhY3Rpb24gc2F2ZWRfc2lncHJvZl9hY3Rpb247CisgIHN0cnVjdCBzaWdh
Y3Rpb24gaWdub3JlX3NpZ3Byb2ZfYWN0aW9uOworICBtZW1zZXQoJmlnbm9yZV9zaWdwcm9mX2Fj
dGlvbiwgMCwgc2l6ZW9mKGlnbm9yZV9zaWdwcm9mX2FjdGlvbikpOworICBzaWdlbXB0eXNldCgm
aWdub3JlX3NpZ3Byb2ZfYWN0aW9uLnNhX21hc2spOworICBpZ25vcmVfc2lncHJvZl9hY3Rpb24u
c2FfaGFuZGxlciA9IFNJR19JR047CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8o
c2lnYWN0aW9uKAorICAgICAgU0lHUFJPRiwgJmlnbm9yZV9zaWdwcm9mX2FjdGlvbiwgJnNhdmVk
X3NpZ3Byb2ZfYWN0aW9uKSk7CisjICAgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCisKKyMgICBp
ZiBHVEVTVF9IQVNfQ0xPTkUKICAgY29uc3QgYm9vbCB1c2VfZm9yayA9IEdURVNUX0ZMQUcoZGVh
dGhfdGVzdF91c2VfZm9yayk7CiAKICAgaWYgKCF1c2VfZm9yaykgewpAQCAtOTAwLDIxICsxMjkx
LDM3IEBAIHN0YXRpYyBwaWRfdCBFeGVjRGVhdGhUZXN0Rm9yayhjaGFyKiBjb25zdCogYXJndiwg
aW50IGNsb3NlX2ZkKSB7CiAgICAgdm9pZCogY29uc3Qgc3RhY2sgPSBtbWFwKE5VTEwsIHN0YWNr
X3NpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE1BUF9BTk9OIHwgTUFQX1BSSVZBVEUsIC0xLCAwKTsKICAgICBHVEVTVF9ERUFUSF9URVNU
X0NIRUNLXyhzdGFjayAhPSBNQVBfRkFJTEVEKTsKKworICAgIC8vIE1heGltdW0gc3RhY2sgYWxp
Z25tZW50IGluIGJ5dGVzOiAgRm9yIGEgZG93bndhcmQtZ3Jvd2luZyBzdGFjaywgdGhpcworICAg
IC8vIGFtb3VudCBpcyBzdWJ0cmFjdGVkIGZyb20gc2l6ZSBvZiB0aGUgc3RhY2sgc3BhY2UgdG8g
Z2V0IGFuIGFkZHJlc3MKKyAgICAvLyB0aGF0IGlzIHdpdGhpbiB0aGUgc3RhY2sgc3BhY2UgYW5k
IGlzIGFsaWduZWQgb24gYWxsIHN5c3RlbXMgd2UgY2FyZQorICAgIC8vIGFib3V0LiAgQXMgZmFy
IGFzIEkga25vdyB0aGVyZSBpcyBubyBBQkkgd2l0aCBzdGFjayBhbGlnbm1lbnQgZ3JlYXRlcgor
ICAgIC8vIHRoYW4gNjQuICBXZSBhc3N1bWUgc3RhY2sgYW5kIHN0YWNrX3NpemUgYWxyZWFkeSBo
YXZlIGFsaWdubWVudCBvZgorICAgIC8vIGtNYXhTdGFja0FsaWdubWVudC4KKyAgICBjb25zdCBz
aXplX3Qga01heFN0YWNrQWxpZ25tZW50ID0gNjQ7CiAgICAgdm9pZCogY29uc3Qgc3RhY2tfdG9w
ID0KLSAgICAgICAgc3RhdGljX2Nhc3Q8Y2hhcio+KHN0YWNrKSArIChzdGFja19ncm93c19kb3du
ID8gc3RhY2tfc2l6ZSA6IDApOworICAgICAgICBzdGF0aWNfY2FzdDxjaGFyKj4oc3RhY2spICsK
KyAgICAgICAgICAgIChzdGFja19ncm93c19kb3duID8gc3RhY2tfc2l6ZSAtIGtNYXhTdGFja0Fs
aWdubWVudCA6IDApOworICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YWNrX3NpemUgPiBr
TWF4U3RhY2tBbGlnbm1lbnQgJiYKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4o
c3RhY2tfdG9wKSAlIGtNYXhTdGFja0FsaWdubWVudCA9PSAwKTsKIAogICAgIGNoaWxkX3BpZCA9
IGNsb25lKCZFeGVjRGVhdGhUZXN0Q2hpbGRNYWluLCBzdGFja190b3AsIFNJR0NITEQsICZhcmdz
KTsKIAogICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKG11bm1hcChzdGFjaywgc3RhY2tfc2l6
ZSkgIT0gLTEpOwogICB9Ci0jZWxzZQorIyAgIGVsc2UKICAgY29uc3QgYm9vbCB1c2VfZm9yayA9
IHRydWU7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORQorIyAgIGVuZGlmICAvLyBHVEVTVF9I
QVNfQ0xPTkUKIAogICBpZiAodXNlX2ZvcmsgJiYgKGNoaWxkX3BpZCA9IGZvcmsoKSkgPT0gMCkg
ewogICAgICAgRXhlY0RlYXRoVGVzdENoaWxkTWFpbigmYXJncyk7CiAgICAgICBfZXhpdCgwKTsK
ICAgfQorIyAgZW5kaWYgIC8vIEdURVNUX09TX1FOWAorIyAgaWYgR1RFU1RfT1NfTElOVVgKKyAg
R1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXygKKyAgICAgIHNpZ2FjdGlvbihTSUdQUk9G
LCAmc2F2ZWRfc2lncHJvZl9hY3Rpb24sIE5VTEwpKTsKKyMgIGVuZGlmICAvLyBHVEVTVF9PU19M
SU5VWAogCiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGNoaWxkX3BpZCAhPSAtMSk7CiAgIHJl
dHVybiBjaGlsZF9waWQ7CkBAIC05NDIsMTYgKzEzNDksMTYgQEAgRGVhdGhUZXN0OjpUZXN0Um9s
ZSBFeGVjRGVhdGhUZXN0OjpBc3N1bWVSb2xlKCkgewogICAvLyBpdCBiZSBjbG9zZWQgd2hlbiB0
aGUgY2hpbGQgcHJvY2VzcyBkb2VzIGFuIGV4ZWM6CiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tf
KGZjbnRsKHBpcGVfZmRbMV0sIEZfU0VURkQsIDApICE9IC0xKTsKIAotICBjb25zdCBTdHJpbmcg
ZmlsdGVyX2ZsYWcgPQotICAgICAgU3RyaW5nOjpGb3JtYXQoIi0tJXMlcz0lcy4lcyIsCi0gICAg
ICAgICAgICAgICAgICAgICBHVEVTVF9GTEFHX1BSRUZJWF8sIGtGaWx0ZXJGbGFnLAotICAgICAg
ICAgICAgICAgICAgICAgaW5mby0+dGVzdF9jYXNlX25hbWUoKSwgaW5mby0+bmFtZSgpKTsKLSAg
Y29uc3QgU3RyaW5nIGludGVybmFsX2ZsYWcgPQotICAgICAgU3RyaW5nOjpGb3JtYXQoIi0tJXMl
cz0lc3wlZHwlZHwlZCIsCi0gICAgICAgICAgICAgICAgICAgICBHVEVTVF9GTEFHX1BSRUZJWF8s
IGtJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcsCi0gICAgICAgICAgICAgICAgICAgICBmaWxlXywg
bGluZV8sIGRlYXRoX3Rlc3RfaW5kZXgsIHBpcGVfZmRbMV0pOworICBjb25zdCBzdGQ6OnN0cmlu
ZyBmaWx0ZXJfZmxhZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0iKSArIEdURVNUX0ZMQUdfUFJF
RklYXyArIGtGaWx0ZXJGbGFnICsgIj0iCisgICAgICArIGluZm8tPnRlc3RfY2FzZV9uYW1lKCkg
KyAiLiIgKyBpbmZvLT5uYW1lKCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGludGVybmFsX2ZsYWcg
PQorICAgICAgc3RkOjpzdHJpbmcoIi0tIikgKyBHVEVTVF9GTEFHX1BSRUZJWF8gKyBrSW50ZXJu
YWxSdW5EZWF0aFRlc3RGbGFnICsgIj0iCisgICAgICArIGZpbGVfICsgInwiICsgU3RyZWFtYWJs
ZVRvU3RyaW5nKGxpbmVfKSArICJ8IgorICAgICAgKyBTdHJlYW1hYmxlVG9TdHJpbmcoZGVhdGhf
dGVzdF9pbmRleCkgKyAifCIKKyAgICAgICsgU3RyZWFtYWJsZVRvU3RyaW5nKHBpcGVfZmRbMV0p
OwogICBBcmd1bWVudHMgYXJnczsKLSAgYXJncy5BZGRBcmd1bWVudHMoR2V0QXJndnMoKSk7Cisg
IGFyZ3MuQWRkQXJndW1lbnRzKEdldEFyZ3ZzRm9yRGVhdGhUZXN0Q2hpbGRQcm9jZXNzKCkpOwog
ICBhcmdzLkFkZEFyZ3VtZW50KGZpbHRlcl9mbGFnLmNfc3RyKCkpOwogICBhcmdzLkFkZEFyZ3Vt
ZW50KGludGVybmFsX2ZsYWcuY19zdHIoKSk7CiAKQEAgLTk2Miw3ICsxMzY5LDcgQEAgRGVhdGhU
ZXN0OjpUZXN0Um9sZSBFeGVjRGVhdGhUZXN0OjpBc3N1bWVSb2xlKCkgewogICAvLyBpcyBuZWNl
c3NhcnkuCiAgIEZsdXNoSW5mb0xvZygpOwogCi0gIGNvbnN0IHBpZF90IGNoaWxkX3BpZCA9IEV4
ZWNEZWF0aFRlc3RGb3JrKGFyZ3MuQXJndigpLCBwaXBlX2ZkWzBdKTsKKyAgY29uc3QgcGlkX3Qg
Y2hpbGRfcGlkID0gRXhlY0RlYXRoVGVzdFNwYXduQ2hpbGQoYXJncy5Bcmd2KCksIHBpcGVfZmRb
MF0pOwogICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGNsb3NlKHBpcGVfZmRbMV0p
KTsKICAgc2V0X2NoaWxkX3BpZChjaGlsZF9waWQpOwogICBzZXRfcmVhZF9mZChwaXBlX2ZkWzBd
KTsKQEAgLTk3MCw3ICsxMzc3LDcgQEAgRGVhdGhUZXN0OjpUZXN0Um9sZSBFeGVjRGVhdGhUZXN0
OjpBc3N1bWVSb2xlKCkgewogICByZXR1cm4gT1ZFUlNFRV9URVNUOwogfQogCi0jZW5kaWYgIC8v
ICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUwogCiAvLyBD
cmVhdGVzIGEgY29uY3JldGUgRGVhdGhUZXN0LWRlcml2ZWQgY2xhc3MgdGhhdCBkZXBlbmRzIG9u
IHRoZQogLy8gLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlIGZsYWcsIGFuZCBzZXRzIHRoZSBwb2lu
dGVyIHBvaW50ZWQgdG8KQEAgLTk4OCw5ICsxMzk1LDEwIEBAIGJvb2wgRGVmYXVsdERlYXRoVGVz
dEZhY3Rvcnk6OkNyZWF0ZShjb25zdCBjaGFyKiBzdGF0ZW1lbnQsIGNvbnN0IFJFKiByZWdleCwK
IAogICBpZiAoZmxhZyAhPSBOVUxMKSB7CiAgICAgaWYgKGRlYXRoX3Rlc3RfaW5kZXggPiBmbGFn
LT5pbmRleCgpKSB7Ci0gICAgICBEZWF0aFRlc3Q6OnNldF9sYXN0X2RlYXRoX3Rlc3RfbWVzc2Fn
ZShTdHJpbmc6OkZvcm1hdCgKLSAgICAgICAgICAiRGVhdGggdGVzdCBjb3VudCAoJWQpIHNvbWVo
b3cgZXhjZWVkZWQgZXhwZWN0ZWQgbWF4aW11bSAoJWQpIiwKLSAgICAgICAgICBkZWF0aF90ZXN0
X2luZGV4LCBmbGFnLT5pbmRleCgpKSk7CisgICAgICBEZWF0aFRlc3Q6OnNldF9sYXN0X2RlYXRo
X3Rlc3RfbWVzc2FnZSgKKyAgICAgICAgICAiRGVhdGggdGVzdCBjb3VudCAoIiArIFN0cmVhbWFi
bGVUb1N0cmluZyhkZWF0aF90ZXN0X2luZGV4KQorICAgICAgICAgICsgIikgc29tZWhvdyBleGNl
ZWRlZCBleHBlY3RlZCBtYXhpbXVtICgiCisgICAgICAgICAgKyBTdHJlYW1hYmxlVG9TdHJpbmco
ZmxhZy0+aW5kZXgoKSkgKyAiKSIpOwogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
MTAwMSw2NCArMTQwOSw1NiBAQCBib29sIERlZmF1bHREZWF0aFRlc3RGYWN0b3J5OjpDcmVhdGUo
Y29uc3QgY2hhciogc3RhdGVtZW50LCBjb25zdCBSRSogcmVnZXgsCiAgICAgfQogICB9CiAKLSNp
ZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKwogICBpZiAoR1RFU1Rf
RkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAidGhyZWFkc2FmZSIgfHwKICAgICAgIEdURVNUX0ZM
QUcoZGVhdGhfdGVzdF9zdHlsZSkgPT0gImZhc3QiKSB7CiAgICAgKnRlc3QgPSBuZXcgV2luZG93
c0RlYXRoVGVzdChzdGF0ZW1lbnQsIHJlZ2V4LCBmaWxlLCBsaW5lKTsKICAgfQotI2Vsc2UKKwor
IyBlbGlmIEdURVNUX09TX0ZVQ0hTSUEKKworICBpZiAoR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0
eWxlKSA9PSAidGhyZWFkc2FmZSIgfHwKKyAgICAgIEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHls
ZSkgPT0gImZhc3QiKSB7CisgICAgKnRlc3QgPSBuZXcgRnVjaHNpYURlYXRoVGVzdChzdGF0ZW1l
bnQsIHJlZ2V4LCBmaWxlLCBsaW5lKTsKKyAgfQorCisjIGVsc2UKKwogICBpZiAoR1RFU1RfRkxB
RyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAidGhyZWFkc2FmZSIpIHsKICAgICAqdGVzdCA9IG5ldyBF
eGVjRGVhdGhUZXN0KHN0YXRlbWVudCwgcmVnZXgsIGZpbGUsIGxpbmUpOwogICB9IGVsc2UgaWYg
KEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPT0gImZhc3QiKSB7CiAgICAgKnRlc3QgPSBu
ZXcgTm9FeGVjRGVhdGhUZXN0KHN0YXRlbWVudCwgcmVnZXgpOwogICB9Ci0jZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCiAgIGVsc2Ug
eyAgLy8gTk9MSU5UIC0gdGhpcyBpcyBtb3JlIHJlYWRhYmxlIHRoYW4gdW5iYWxhbmNlZCBicmFj
a2V0cyBpbnNpZGUgI2lmLgotICAgIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNz
YWdlKFN0cmluZzo6Rm9ybWF0KAotICAgICAgICAiVW5rbm93biBkZWF0aCB0ZXN0IHN0eWxlIFwi
JXNcIiBlbmNvdW50ZXJlZCIsCi0gICAgICAgIEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSku
Y19zdHIoKSkpOworICAgIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKAor
ICAgICAgICAiVW5rbm93biBkZWF0aCB0ZXN0IHN0eWxlIFwiIiArIEdURVNUX0ZMQUcoZGVhdGhf
dGVzdF9zdHlsZSkKKyAgICAgICAgKyAiXCIgZW5jb3VudGVyZWQiKTsKICAgICByZXR1cm4gZmFs
c2U7CiAgIH0KIAogICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gU3BsaXRzIGEgZ2l2ZW4gc3RyaW5n
IG9uIGEgZ2l2ZW4gZGVsaW1pdGVyLCBwb3B1bGF0aW5nIGEgZ2l2ZW4KLS8vIHZlY3RvciB3aXRo
IHRoZSBmaWVsZHMuICBHVEVTVF9IQVNfREVBVEhfVEVTVCBpbXBsaWVzIHRoYXQgd2UgaGF2ZQot
Ly8gOjpzdGQ6OnN0cmluZywgc28gd2UgY2FuIHVzZSBpdCBoZXJlLgotc3RhdGljIHZvaWQgU3Bs
aXRTdHJpbmcoY29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyLCBjaGFyIGRlbGltaXRlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpzdHJpbmc+KiBkZXN0KSB7
Ci0gIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpzdHJpbmc+IHBhcnNlZDsKLSAgOjpzdGQ6OnN0cmlu
Zzo6c2l6ZV90eXBlIHBvcyA9IDA7Ci0gIHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdh
eXNUcnVlKCkpIHsKLSAgICBjb25zdCA6OnN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgY29sb24gPSBz
dHIuZmluZChkZWxpbWl0ZXIsIHBvcyk7Ci0gICAgaWYgKGNvbG9uID09IDo6c3RkOjpzdHJpbmc6
Om5wb3MpIHsKLSAgICAgIHBhcnNlZC5wdXNoX2JhY2soc3RyLnN1YnN0cihwb3MpKTsKLSAgICAg
IGJyZWFrOwotICAgIH0gZWxzZSB7Ci0gICAgICBwYXJzZWQucHVzaF9iYWNrKHN0ci5zdWJzdHIo
cG9zLCBjb2xvbiAtIHBvcykpOwotICAgICAgcG9zID0gY29sb24gKyAxOwotICAgIH0KLSAgfQot
ICBkZXN0LT5zd2FwKHBhcnNlZCk7Ci19Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdU
RVNUX09TX1dJTkRPV1MKIC8vIFJlY3JlYXRlcyB0aGUgcGlwZSBhbmQgZXZlbnQgaGFuZGxlcyBm
cm9tIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLAogLy8gc2lnbmFscyB0aGUgZXZlbnQsIGFuZCBy
ZXR1cm5zIGEgZmlsZSBkZXNjcmlwdG9yIHdyYXBwZWQgYXJvdW5kIHRoZSBwaXBlCiAvLyBoYW5k
bGUuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIHRoZSBjaGlsZCBwcm9jZXNzIG9ubHkuCi1p
bnQgR2V0U3RhdHVzRmlsZURlc2NyaXB0b3IodW5zaWduZWQgaW50IHBhcmVudF9wcm9jZXNzX2lk
LAorc3RhdGljIGludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBpbnQgcGFyZW50
X3Byb2Nlc3NfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHdyaXRlX2hh
bmRsZV9hc19zaXplX3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGV2ZW50
X2hhbmRsZV9hc19zaXplX3QpIHsKICAgQXV0b0hhbmRsZSBwYXJlbnRfcHJvY2Vzc19oYW5kbGUo
OjpPcGVuUHJvY2VzcyhQUk9DRVNTX0RVUF9IQU5ETEUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwgIC8vIE5vbi1pbmhlcml0YWJsZS4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVu
dF9wcm9jZXNzX2lkKSk7CiAgIGlmIChwYXJlbnRfcHJvY2Vzc19oYW5kbGUuR2V0KCkgPT0gSU5W
QUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICBEZWF0aFRlc3RBYm9ydChTdHJpbmc6OkZvcm1hdCgi
VW5hYmxlIHRvIG9wZW4gcGFyZW50IHByb2Nlc3MgJXUiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcmVudF9wcm9jZXNzX2lkKSk7CisgICAgRGVhdGhUZXN0QWJvcnQoIlVu
YWJsZSB0byBvcGVuIHBhcmVudCBwcm9jZXNzICIgKworICAgICAgICAgICAgICAgICAgIFN0cmVh
bWFibGVUb1N0cmluZyhwYXJlbnRfcHJvY2Vzc19pZCkpOwogICB9CiAKLSAgLy8gVE9ETyh2bGFk
bEBnb29nbGUuY29tKTogUmVwbGFjZSB0aGUgZm9sbG93aW5nIGNoZWNrIHdpdGggYQorICAvLyBG
SVhNRTogUmVwbGFjZSB0aGUgZm9sbG93aW5nIGNoZWNrIHdpdGggYQogICAvLyBjb21waWxlLXRp
bWUgYXNzZXJ0aW9uIHdoZW4gYXZhaWxhYmxlLgogICBHVEVTVF9DSEVDS18oc2l6ZW9mKEhBTkRM
RSkgPD0gc2l6ZW9mKHNpemVfdCkpOwogCkBAIC0xMDY2LDcgKzE0NjYsNyBAQCBpbnQgR2V0U3Rh
dHVzRmlsZURlc2NyaXB0b3IodW5zaWduZWQgaW50IHBhcmVudF9wcm9jZXNzX2lkLAogICAgICAg
cmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KHdyaXRlX2hhbmRsZV9hc19zaXplX3QpOwogICBIQU5E
TEUgZHVwX3dyaXRlX2hhbmRsZTsKIAotICAvLyBUaGUgbmV3bHkgaW5pdGlhbGl6ZWQgaGFuZGxl
IGlzIGFjY2Vzc2libGUgb25seSBpbiBpbiB0aGUgcGFyZW50CisgIC8vIFRoZSBuZXdseSBpbml0
aWFsaXplZCBoYW5kbGUgaXMgYWNjZXNzaWJsZSBvbmx5IGluIHRoZSBwYXJlbnQKICAgLy8gcHJv
Y2Vzcy4gVG8gb2J0YWluIG9uZSBhY2Nlc3NpYmxlIHdpdGhpbiB0aGUgY2hpbGQsIHdlIG5lZWQg
dG8gdXNlCiAgIC8vIER1cGxpY2F0ZUhhbmRsZS4KICAgaWYgKCE6OkR1cGxpY2F0ZUhhbmRsZShw
YXJlbnRfcHJvY2Vzc19oYW5kbGUuR2V0KCksIHdyaXRlX2hhbmRsZSwKQEAgLTEwNzUsOSArMTQ3
NSwxMCBAQCBpbnQgR2V0U3RhdHVzRmlsZURlc2NyaXB0b3IodW5zaWduZWQgaW50IHBhcmVudF9w
cm9jZXNzX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRFVQTElDQVRF
X1NBTUVfQUNDRVNTIGlzIHVzZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsICAv
LyBSZXF1ZXN0IG5vbi1pbmhlcml0YWJsZSBoYW5kbGVyLgogICAgICAgICAgICAgICAgICAgICAg
ICAgIERVUExJQ0FURV9TQU1FX0FDQ0VTUykpIHsKLSAgICBEZWF0aFRlc3RBYm9ydChTdHJpbmc6
OkZvcm1hdCgKLSAgICAgICAgIlVuYWJsZSB0byBkdXBsaWNhdGUgdGhlIHBpcGUgaGFuZGxlICVJ
dSBmcm9tIHRoZSBwYXJlbnQgcHJvY2VzcyAldSIsCi0gICAgICAgIHdyaXRlX2hhbmRsZV9hc19z
aXplX3QsIHBhcmVudF9wcm9jZXNzX2lkKSk7CisgICAgRGVhdGhUZXN0QWJvcnQoIlVuYWJsZSB0
byBkdXBsaWNhdGUgdGhlIHBpcGUgaGFuZGxlICIgKworICAgICAgICAgICAgICAgICAgIFN0cmVh
bWFibGVUb1N0cmluZyh3cml0ZV9oYW5kbGVfYXNfc2l6ZV90KSArCisgICAgICAgICAgICAgICAg
ICAgIiBmcm9tIHRoZSBwYXJlbnQgcHJvY2VzcyAiICsKKyAgICAgICAgICAgICAgICAgICBTdHJl
YW1hYmxlVG9TdHJpbmcocGFyZW50X3Byb2Nlc3NfaWQpKTsKICAgfQogCiAgIGNvbnN0IEhBTkRM
RSBldmVudF9oYW5kbGUgPSByZWludGVycHJldF9jYXN0PEhBTkRMRT4oZXZlbnRfaGFuZGxlX2Fz
X3NpemVfdCk7CkBAIC0xMDg4LDE3ICsxNDg5LDE4IEBAIGludCBHZXRTdGF0dXNGaWxlRGVzY3Jp
cHRvcih1bnNpZ25lZCBpbnQgcGFyZW50X3Byb2Nlc3NfaWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHgwLAogICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAogICAgICAgICAgICAg
ICAgICAgICAgICAgIERVUExJQ0FURV9TQU1FX0FDQ0VTUykpIHsKLSAgICBEZWF0aFRlc3RBYm9y
dChTdHJpbmc6OkZvcm1hdCgKLSAgICAgICAgIlVuYWJsZSB0byBkdXBsaWNhdGUgdGhlIGV2ZW50
IGhhbmRsZSAlSXUgZnJvbSB0aGUgcGFyZW50IHByb2Nlc3MgJXUiLAotICAgICAgICBldmVudF9o
YW5kbGVfYXNfc2l6ZV90LCBwYXJlbnRfcHJvY2Vzc19pZCkpOworICAgIERlYXRoVGVzdEFib3J0
KCJVbmFibGUgdG8gZHVwbGljYXRlIHRoZSBldmVudCBoYW5kbGUgIiArCisgICAgICAgICAgICAg
ICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKGV2ZW50X2hhbmRsZV9hc19zaXplX3QpICsKKyAgICAg
ICAgICAgICAgICAgICAiIGZyb20gdGhlIHBhcmVudCBwcm9jZXNzICIgKworICAgICAgICAgICAg
ICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhwYXJlbnRfcHJvY2Vzc19pZCkpOwogICB9CiAKICAg
Y29uc3QgaW50IHdyaXRlX2ZkID0KICAgICAgIDo6X29wZW5fb3NmaGFuZGxlKHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KGR1cF93cml0ZV9oYW5kbGUpLCBPX0FQUEVORCk7CiAgIGlmICh3cml0
ZV9mZCA9PSAtMSkgewotICAgIERlYXRoVGVzdEFib3J0KFN0cmluZzo6Rm9ybWF0KAotICAgICAg
ICAiVW5hYmxlIHRvIGNvbnZlcnQgcGlwZSBoYW5kbGUgJUl1IHRvIGEgZmlsZSBkZXNjcmlwdG9y
IiwKLSAgICAgICAgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCkpOworICAgIERlYXRoVGVzdEFib3J0
KCJVbmFibGUgdG8gY29udmVydCBwaXBlIGhhbmRsZSAiICsKKyAgICAgICAgICAgICAgICAgICBT
dHJlYW1hYmxlVG9TdHJpbmcod3JpdGVfaGFuZGxlX2FzX3NpemVfdCkgKworICAgICAgICAgICAg
ICAgICAgICIgdG8gYSBmaWxlIGRlc2NyaXB0b3IiKTsKICAgfQogCiAgIC8vIFNpZ25hbHMgdGhl
IHBhcmVudCB0aGF0IHRoZSB3cml0ZSBlbmQgb2YgdGhlIHBpcGUgaGFzIGJlZW4gYWNxdWlyZWQK
QEAgLTExMDcsNyArMTUwOSw3IEBAIGludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25l
ZCBpbnQgcGFyZW50X3Byb2Nlc3NfaWQsCiAKICAgcmV0dXJuIHdyaXRlX2ZkOwogfQotI2VuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKIC8v
IFJldHVybnMgYSBuZXdseSBjcmVhdGVkIEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyBvYmplY3Qg
d2l0aCBmaWVsZHMKIC8vIGluaXRpYWxpemVkIGZyb20gdGhlIEdURVNUX0ZMQUcoaW50ZXJuYWxf
cnVuX2RlYXRoX3Rlc3QpIGZsYWcgaWYKQEAgLTExMjMsNyArMTUyNSw4IEBAIEludGVybmFsUnVu
RGVhdGhUZXN0RmxhZyogUGFyc2VJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoKSB7CiAgIFNwbGl0
U3RyaW5nKEdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpLmNfc3RyKCksICd8Jywg
JmZpZWxkcyk7CiAgIGludCB3cml0ZV9mZCA9IC0xOwogCi0jaWYgR1RFU1RfT1NfV0lORE9XUwor
IyBpZiBHVEVTVF9PU19XSU5ET1dTCisKICAgdW5zaWduZWQgaW50IHBhcmVudF9wcm9jZXNzX2lk
ID0gMDsKICAgc2l6ZV90IHdyaXRlX2hhbmRsZV9hc19zaXplX3QgPSAwOwogICBzaXplX3QgZXZl
bnRfaGFuZGxlX2FzX3NpemVfdCA9IDA7CkBAIC0xMTM0LDIzICsxNTM3LDM0IEBAIEludGVybmFs
UnVuRGVhdGhUZXN0RmxhZyogUGFyc2VJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoKSB7CiAgICAg
ICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1szXSwgJnBhcmVudF9wcm9jZXNzX2lkKQog
ICAgICAgfHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVsZHNbNF0sICZ3cml0ZV9oYW5kbGVfYXNf
c2l6ZV90KQogICAgICAgfHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVsZHNbNV0sICZldmVudF9o
YW5kbGVfYXNfc2l6ZV90KSkgewotICAgIERlYXRoVGVzdEFib3J0KFN0cmluZzo6Rm9ybWF0KAot
ICAgICAgICAiQmFkIC0tZ3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QgZmxhZzogJXMiLAot
ICAgICAgICBHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KS5jX3N0cigpKSk7Cisg
ICAgRGVhdGhUZXN0QWJvcnQoIkJhZCAtLWd0ZXN0X2ludGVybmFsX3J1bl9kZWF0aF90ZXN0IGZs
YWc6ICIgKworICAgICAgICAgICAgICAgICAgIEdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRo
X3Rlc3QpKTsKICAgfQogICB3cml0ZV9mZCA9IEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9yKHBhcmVu
dF9wcm9jZXNzX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRl
X2hhbmRsZV9hc19zaXplX3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXZlbnRfaGFuZGxlX2FzX3NpemVfdCk7Ci0jZWxzZQorCisjIGVsaWYgR1RFU1RfT1NfRlVDSFNJ
QQorCisgIGlmIChmaWVsZHMuc2l6ZSgpICE9IDMKKyAgICAgIHx8ICFQYXJzZU5hdHVyYWxOdW1i
ZXIoZmllbGRzWzFdLCAmbGluZSkKKyAgICAgIHx8ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmllbGRz
WzJdLCAmaW5kZXgpKSB7CisgICAgRGVhdGhUZXN0QWJvcnQoIkJhZCAtLWd0ZXN0X2ludGVybmFs
X3J1bl9kZWF0aF90ZXN0IGZsYWc6ICIKKyAgICAgICAgKyBHVEVTVF9GTEFHKGludGVybmFsX3J1
bl9kZWF0aF90ZXN0KSk7CisgIH0KKworIyBlbHNlCisKICAgaWYgKGZpZWxkcy5zaXplKCkgIT0g
NAogICAgICAgfHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVsZHNbMV0sICZsaW5lKQogICAgICAg
fHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVsZHNbMl0sICZpbmRleCkKICAgICAgIHx8ICFQYXJz
ZU5hdHVyYWxOdW1iZXIoZmllbGRzWzNdLCAmd3JpdGVfZmQpKSB7Ci0gICAgRGVhdGhUZXN0QWJv
cnQoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICJCYWQgLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVh
dGhfdGVzdCBmbGFnOiAlcyIsCi0gICAgICAgIEdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRo
X3Rlc3QpLmNfc3RyKCkpKTsKKyAgICBEZWF0aFRlc3RBYm9ydCgiQmFkIC0tZ3Rlc3RfaW50ZXJu
YWxfcnVuX2RlYXRoX3Rlc3QgZmxhZzogIgorICAgICAgICArIEdURVNUX0ZMQUcoaW50ZXJuYWxf
cnVuX2RlYXRoX3Rlc3QpKTsKICAgfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKyMg
ZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKwogICByZXR1cm4gbmV3IEludGVybmFsUnVuRGVh
dGhUZXN0RmxhZyhmaWVsZHNbMF0sIGxpbmUsIGluZGV4LCB3cml0ZV9mZCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1maWxlcGF0aC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1maWxlcGF0aC5jYwppbmRleCBjMWVmOTE4
OGFkODVhYjhhMDQ3YTMzYmY5OTQ1ZTFjZDBjYzczZWZmLi5hN2U2NWMwODJhNzVmYzZmYjAzOGEw
MjNkNWIxZDNlMDllNDc5ZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9z
cmMvZ3Rlc3QtZmlsZXBhdGguY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0
ZXN0LWZpbGVwYXRoLmNjCkBAIC0yNiwzOSArMjYsMzggQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3JzOiBrZWl0aC5yYXlAZ21h
aWwuY29tIChLZWl0aCBSYXkpCiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1maWxl
cGF0aC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KKyNpbmNsdWRl
ICJndGVzdC9pbnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oIgogCiAjaW5jbHVkZSA8c3RkbGliLmg+
CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgorI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LW1lc3NhZ2UuaCIKIAogI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0jaW5jbHVk
ZSA8d2luZG93cy5oPgorIyBpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZWxpZiBHVEVTVF9PU19XSU5E
T1dTCi0jaW5jbHVkZSA8ZGlyZWN0Lmg+Ci0jaW5jbHVkZSA8aW8uaD4KKyMgaW5jbHVkZSA8ZGly
ZWN0Lmg+CisjIGluY2x1ZGUgPGlvLmg+CiAjZWxpZiBHVEVTVF9PU19TWU1CSUFOCiAvLyBTeW1i
aWFuIE9wZW5DIGhhcyBQQVRIX01BWCBpbiBzeXMvc3lzbGltaXRzLmgKLSNpbmNsdWRlIDxzeXMv
c3lzbGltaXRzLmg+CisjIGluY2x1ZGUgPHN5cy9zeXNsaW1pdHMuaD4KICNlbHNlCi0jaW5jbHVk
ZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8Y2xpbWl0cz4gIC8vIFNvbWUgTGludXggZGlzdHJpYnV0
aW9ucyBkZWZpbmUgUEFUSF9NQVggaGVyZS4KKyMgaW5jbHVkZSA8bGltaXRzLmg+CisjIGluY2x1
ZGUgPGNsaW1pdHM+ICAvLyBTb21lIExpbnV4IGRpc3RyaWJ1dGlvbnMgZGVmaW5lIFBBVEhfTUFY
IGhlcmUuCiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAKKyNpbmNsdWRlICJn
dGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKKwogI2lmIEdURVNUX09TX1dJTkRPV1MKLSNk
ZWZpbmUgR1RFU1RfUEFUSF9NQVhfIF9NQVhfUEFUSAorIyBkZWZpbmUgR1RFU1RfUEFUSF9NQVhf
IF9NQVhfUEFUSAogI2VsaWYgZGVmaW5lZChQQVRIX01BWCkKLSNkZWZpbmUgR1RFU1RfUEFUSF9N
QVhfIFBBVEhfTUFYCisjIGRlZmluZSBHVEVTVF9QQVRIX01BWF8gUEFUSF9NQVgKICNlbGlmIGRl
ZmluZWQoX1hPUEVOX1BBVEhfTUFYKQotI2RlZmluZSBHVEVTVF9QQVRIX01BWF8gX1hPUEVOX1BB
VEhfTUFYCisjIGRlZmluZSBHVEVTVF9QQVRIX01BWF8gX1hPUEVOX1BBVEhfTUFYCiAjZWxzZQot
I2RlZmluZSBHVEVTVF9QQVRIX01BWF8gX1BPU0lYX1BBVEhfTUFYCisjIGRlZmluZSBHVEVTVF9Q
QVRIX01BWF8gX1BPU0lYX1BBVEhfTUFYCiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAot
I2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oPgotCiBuYW1lc3BhY2UgdGVz
dGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCkBAIC02OSwyMSArNjgsMTkgQEAgbmFtZXNw
YWNlIGludGVybmFsIHsKIC8vIG9mIHRoZW0uCiBjb25zdCBjaGFyIGtQYXRoU2VwYXJhdG9yID0g
J1xcJzsKIGNvbnN0IGNoYXIga0FsdGVybmF0ZVBhdGhTZXBhcmF0b3IgPSAnLyc7Ci1jb25zdCBj
aGFyIGtQYXRoU2VwYXJhdG9yU3RyaW5nW10gPSAiXFwiOwogY29uc3QgY2hhciBrQWx0ZXJuYXRl
UGF0aFNlcGFyYXRvclN0cmluZ1tdID0gIi8iOwotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxF
CisjIGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAvLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2
ZSBhIGN1cnJlbnQgZGlyZWN0b3J5LiBZb3Ugc2hvdWxkIG5vdCB1c2UKIC8vIHRoZSBjdXJyZW50
IGRpcmVjdG9yeSBpbiB0ZXN0cyBvbiBXaW5kb3dzIENFLCBidXQgdGhpcyBhdCBsZWFzdAogLy8g
cHJvdmlkZXMgYSByZWFzb25hYmxlIGZhbGxiYWNrLgogY29uc3QgY2hhciBrQ3VycmVudERpcmVj
dG9yeVN0cmluZ1tdID0gIlxcIjsKIC8vIFdpbmRvd3MgQ0UgZG9lc24ndCBkZWZpbmUgSU5WQUxJ
RF9GSUxFX0FUVFJJQlVURVMKIGNvbnN0IERXT1JEIGtJbnZhbGlkRmlsZUF0dHJpYnV0ZXMgPSAw
eGZmZmZmZmZmOwotI2Vsc2UKKyMgZWxzZQogY29uc3QgY2hhciBrQ3VycmVudERpcmVjdG9yeVN0
cmluZ1tdID0gIi5cXCI7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGVu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogI2Vsc2UKIGNvbnN0IGNoYXIga1BhdGhT
ZXBhcmF0b3IgPSAnLyc7Ci1jb25zdCBjaGFyIGtQYXRoU2VwYXJhdG9yU3RyaW5nW10gPSAiLyI7
CiBjb25zdCBjaGFyIGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nW10gPSAiLi8iOwogI2VuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTCiAKQEAgLTk4LDcgKzk1LDcgQEAgc3RhdGljIGJvb2wgSXNQYXRo
U2VwYXJhdG9yKGNoYXIgYykgewogCiAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IHdvcmtpbmcgZGly
ZWN0b3J5LCBvciAiIiBpZiB1bnN1Y2Nlc3NmdWwuCiBGaWxlUGF0aCBGaWxlUGF0aDo6R2V0Q3Vy
cmVudERpcigpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorI2lmIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFIHx8IEdURVNUX09TX1dJTkRPV1NfUEhPTkUgfHwgR1RFU1RfT1NfV0lORE9X
U19SVAogICAvLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSBhIGN1cnJlbnQgZGlyZWN0b3J5LCBz
byB3ZSBqdXN0IHJldHVybgogICAvLyBzb21ldGhpbmcgcmVhc29uYWJsZS4KICAgcmV0dXJuIEZp
bGVQYXRoKGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nKTsKQEAgLTEwNyw3ICsxMDQsMTQgQEAgRmls
ZVBhdGggRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKSB7CiAgIHJldHVybiBGaWxlUGF0aChfZ2V0
Y3dkKGN3ZCwgc2l6ZW9mKGN3ZCkpID09IE5VTEwgPyAiIiA6IGN3ZCk7CiAjZWxzZQogICBjaGFy
IGN3ZFtHVEVTVF9QQVRIX01BWF8gKyAxXSA9IHsgJ1wwJyB9OwotICByZXR1cm4gRmlsZVBhdGgo
Z2V0Y3dkKGN3ZCwgc2l6ZW9mKGN3ZCkpID09IE5VTEwgPyAiIiA6IGN3ZCk7CisgIGNoYXIqIHJl
c3VsdCA9IGdldGN3ZChjd2QsIHNpemVvZihjd2QpKTsKKyMgaWYgR1RFU1RfT1NfTkFDTAorICAv
LyBnZXRjd2Qgd2lsbCBsaWtlbHkgZmFpbCBpbiBOYUNsIGR1ZSB0byB0aGUgc2FuZGJveCwgc28g
cmV0dXJuIHNvbWV0aGluZworICAvLyByZWFzb25hYmxlLiBUaGUgdXNlciBtYXkgaGF2ZSBwcm92
aWRlZCBhIHNoaW0gaW1wbGVtZW50YXRpb24gZm9yIGdldGN3ZCwKKyAgLy8gaG93ZXZlciwgc28g
ZmFsbGJhY2sgb25seSB3aGVuIGZhaWx1cmUgaXMgZGV0ZWN0ZWQuCisgIHJldHVybiBGaWxlUGF0
aChyZXN1bHQgPT0gTlVMTCA/IGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nIDogY3dkKTsKKyMgZW5k
aWYgIC8vIEdURVNUX09TX05BQ0wKKyAgcmV0dXJuIEZpbGVQYXRoKHJlc3VsdCA9PSBOVUxMID8g
IiIgOiBjd2QpOwogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogfQogCkBAIC0x
MTYsMTQgKzEyMCwxNSBAQCBGaWxlUGF0aCBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpIHsKIC8v
IEZpbGVQYXRoKCJkaXIvZmlsZSIpLiBJZiBhIGNhc2UtaW5zZW5zaXRpdmUgZXh0ZW5zaW9uIGlz
IG5vdAogLy8gZm91bmQsIHJldHVybnMgYSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBGaWxlUGF0aC4K
IEZpbGVQYXRoIEZpbGVQYXRoOjpSZW1vdmVFeHRlbnNpb24oY29uc3QgY2hhciogZXh0ZW5zaW9u
KSBjb25zdCB7Ci0gIFN0cmluZyBkb3RfZXh0ZW5zaW9uKFN0cmluZzo6Rm9ybWF0KCIuJXMiLCBl
eHRlbnNpb24pKTsKLSAgaWYgKHBhdGhuYW1lXy5FbmRzV2l0aENhc2VJbnNlbnNpdGl2ZShkb3Rf
ZXh0ZW5zaW9uLmNfc3RyKCkpKSB7Ci0gICAgcmV0dXJuIEZpbGVQYXRoKFN0cmluZyhwYXRobmFt
ZV8uY19zdHIoKSwgcGF0aG5hbWVfLmxlbmd0aCgpIC0gNCkpOworICBjb25zdCBzdGQ6OnN0cmlu
ZyBkb3RfZXh0ZW5zaW9uID0gc3RkOjpzdHJpbmcoIi4iKSArIGV4dGVuc2lvbjsKKyAgaWYgKFN0
cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUocGF0aG5hbWVfLCBkb3RfZXh0ZW5zaW9uKSkg
eworICAgIHJldHVybiBGaWxlUGF0aChwYXRobmFtZV8uc3Vic3RyKAorICAgICAgICAwLCBwYXRo
bmFtZV8ubGVuZ3RoKCkgLSBkb3RfZXh0ZW5zaW9uLmxlbmd0aCgpKSk7CiAgIH0KICAgcmV0dXJu
ICp0aGlzOwogfQogCi0vLyBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbGFzdCBvY2N1cmVuY2Ug
b2YgYSB2YWxpZCBwYXRoIHNlcGFyYXRvciBpbgorLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhl
IGxhc3Qgb2NjdXJyZW5jZSBvZiBhIHZhbGlkIHBhdGggc2VwYXJhdG9yIGluCiAvLyB0aGUgRmls
ZVBhdGguIE9uIFdpbmRvd3MsIGZvciBleGFtcGxlLCBib3RoICcvJyBhbmQgJ1wnIGFyZSB2YWxp
ZCBwYXRoCiAvLyBzZXBhcmF0b3JzLiBSZXR1cm5zIE5VTEwgaWYgbm8gcGF0aCBzZXBhcmF0b3Ig
d2FzIGZvdW5kLgogY29uc3QgY2hhciogRmlsZVBhdGg6OkZpbmRMYXN0UGF0aFNlcGFyYXRvcigp
IGNvbnN0IHsKQEAgLTE0Nyw3ICsxNTIsNyBAQCBjb25zdCBjaGFyKiBGaWxlUGF0aDo6RmluZExh
c3RQYXRoU2VwYXJhdG9yKCkgY29uc3QgewogLy8gT24gV2luZG93cyBwbGF0Zm9ybSwgJ1wnIGlz
IHRoZSBwYXRoIHNlcGFyYXRvciwgb3RoZXJ3aXNlIGl0IGlzICcvJy4KIEZpbGVQYXRoIEZpbGVQ
YXRoOjpSZW1vdmVEaXJlY3RvcnlOYW1lKCkgY29uc3QgewogICBjb25zdCBjaGFyKiBjb25zdCBs
YXN0X3NlcCA9IEZpbmRMYXN0UGF0aFNlcGFyYXRvcigpOwotICByZXR1cm4gbGFzdF9zZXAgPyBG
aWxlUGF0aChTdHJpbmcobGFzdF9zZXAgKyAxKSkgOiAqdGhpczsKKyAgcmV0dXJuIGxhc3Rfc2Vw
ID8gRmlsZVBhdGgobGFzdF9zZXAgKyAxKSA6ICp0aGlzOwogfQogCiAvLyBSZW1vdmVGaWxlTmFt
ZSByZXR1cm5zIHRoZSBkaXJlY3RvcnkgcGF0aCB3aXRoIHRoZSBmaWxlbmFtZSByZW1vdmVkLgpA
QCAtMTU4LDkgKzE2Myw5IEBAIEZpbGVQYXRoIEZpbGVQYXRoOjpSZW1vdmVEaXJlY3RvcnlOYW1l
KCkgY29uc3QgewogLy8gT24gV2luZG93cyBwbGF0Zm9ybSwgJ1wnIGlzIHRoZSBwYXRoIHNlcGFy
YXRvciwgb3RoZXJ3aXNlIGl0IGlzICcvJy4KIEZpbGVQYXRoIEZpbGVQYXRoOjpSZW1vdmVGaWxl
TmFtZSgpIGNvbnN0IHsKICAgY29uc3QgY2hhciogY29uc3QgbGFzdF9zZXAgPSBGaW5kTGFzdFBh
dGhTZXBhcmF0b3IoKTsKLSAgU3RyaW5nIGRpcjsKKyAgc3RkOjpzdHJpbmcgZGlyOwogICBpZiAo
bGFzdF9zZXApIHsKLSAgICBkaXIgPSBTdHJpbmcoY19zdHIoKSwgbGFzdF9zZXAgKyAxIC0gY19z
dHIoKSk7CisgICAgZGlyID0gc3RkOjpzdHJpbmcoY19zdHIoKSwgbGFzdF9zZXAgKyAxIC0gY19z
dHIoKSk7CiAgIH0gZWxzZSB7CiAgICAgZGlyID0ga0N1cnJlbnREaXJlY3RvcnlTdHJpbmc7CiAg
IH0KQEAgLTE3NywxMSArMTgyLDEyIEBAIEZpbGVQYXRoIEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUo
Y29uc3QgRmlsZVBhdGgmIGRpcmVjdG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgRmlsZVBhdGgmIGJhc2VfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IG51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogZXh0ZW5zaW9uKSB7Ci0gIFN0cmluZyBmaWxlOworICBzdGQ6OnN0cmluZyBmaWxlOwog
ICBpZiAobnVtYmVyID09IDApIHsKLSAgICBmaWxlID0gU3RyaW5nOjpGb3JtYXQoIiVzLiVzIiwg
YmFzZV9uYW1lLmNfc3RyKCksIGV4dGVuc2lvbik7CisgICAgZmlsZSA9IGJhc2VfbmFtZS5zdHJp
bmcoKSArICIuIiArIGV4dGVuc2lvbjsKICAgfSBlbHNlIHsKLSAgICBmaWxlID0gU3RyaW5nOjpG
b3JtYXQoIiVzXyVkLiVzIiwgYmFzZV9uYW1lLmNfc3RyKCksIG51bWJlciwgZXh0ZW5zaW9uKTsK
KyAgICBmaWxlID0gYmFzZV9uYW1lLnN0cmluZygpICsgIl8iICsgU3RyZWFtYWJsZVRvU3RyaW5n
KG51bWJlcikKKyAgICAgICAgKyAiLiIgKyBleHRlbnNpb247CiAgIH0KICAgcmV0dXJuIENvbmNh
dFBhdGhzKGRpcmVjdG9yeSwgRmlsZVBhdGgoZmlsZSkpOwogfQpAQCAtMTkzLDggKzE5OSw3IEBA
IEZpbGVQYXRoIEZpbGVQYXRoOjpDb25jYXRQYXRocyhjb25zdCBGaWxlUGF0aCYgZGlyZWN0b3J5
LAogICBpZiAoZGlyZWN0b3J5LklzRW1wdHkoKSkKICAgICByZXR1cm4gcmVsYXRpdmVfcGF0aDsK
ICAgY29uc3QgRmlsZVBhdGggZGlyKGRpcmVjdG9yeS5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0
b3IoKSk7Ci0gIHJldHVybiBGaWxlUGF0aChTdHJpbmc6OkZvcm1hdCgiJXMlYyVzIiwgZGlyLmNf
c3RyKCksIGtQYXRoU2VwYXJhdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVsYXRpdmVfcGF0aC5jX3N0cigpKSk7CisgIHJldHVybiBGaWxlUGF0aChkaXIuc3RyaW5nKCkg
KyBrUGF0aFNlcGFyYXRvciArIHJlbGF0aXZlX3BhdGguc3RyaW5nKCkpOwogfQogCiAvLyBSZXR1
cm5zIHRydWUgaWYgcGF0aG5hbWUgZGVzY3JpYmVzIHNvbWV0aGluZyBmaW5kYWJsZSBpbiB0aGUg
ZmlsZS1zeXN0ZW0sCkBAIC0yNDUsNyArMjUwLDcgQEAgYm9vbCBGaWxlUGF0aDo6RGlyZWN0b3J5
RXhpc3RzKCkgY29uc3QgewogLy8gcm9vdCBkaXJlY3RvcnkgcGVyIGRpc2sgZHJpdmUuKQogYm9v
bCBGaWxlUGF0aDo6SXNSb290RGlyZWN0b3J5KCkgY29uc3QgewogI2lmIEdURVNUX09TX1dJTkRP
V1MKLSAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IG9uIFdpbmRvd3MgYSBuZXR3b3JrIHNoYXJl
IGxpa2UKKyAgLy8gRklYTUU6IG9uIFdpbmRvd3MgYSBuZXR3b3JrIHNoYXJlIGxpa2UKICAgLy8g
XFxzZXJ2ZXJcc2hhcmUgY2FuIGJlIGEgcm9vdCBkaXJlY3RvcnksIGFsdGhvdWdoIGl0IGNhbm5v
dCBiZSB0aGUKICAgLy8gY3VycmVudCBkaXJlY3RvcnkuICBIYW5kbGUgdGhpcyBwcm9wZXJseS4K
ICAgcmV0dXJuIHBhdGhuYW1lXy5sZW5ndGgoKSA9PSAzICYmIElzQWJzb2x1dGVQYXRoKCk7CkBA
IC0zMzgsMTQgKzM0MywxNCBAQCBib29sIEZpbGVQYXRoOjpDcmVhdGVGb2xkZXIoKSBjb25zdCB7
CiAvLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCB1c2VzIFwgYXMgdGhlIHNlcGFyYXRvciwgb3RoZXIg
cGxhdGZvcm1zIHVzZSAvLgogRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZVRyYWlsaW5nUGF0aFNl
cGFyYXRvcigpIGNvbnN0IHsKICAgcmV0dXJuIElzRGlyZWN0b3J5KCkKLSAgICAgID8gRmlsZVBh
dGgoU3RyaW5nKHBhdGhuYW1lXy5jX3N0cigpLCBwYXRobmFtZV8ubGVuZ3RoKCkgLSAxKSkKKyAg
ICAgID8gRmlsZVBhdGgocGF0aG5hbWVfLnN1YnN0cigwLCBwYXRobmFtZV8ubGVuZ3RoKCkgLSAx
KSkKICAgICAgIDogKnRoaXM7CiB9CiAKIC8vIFJlbW92ZXMgYW55IHJlZHVuZGFudCBzZXBhcmF0
b3JzIHRoYXQgbWlnaHQgYmUgaW4gdGhlIHBhdGhuYW1lLgogLy8gRm9yIGV4YW1wbGUsICJiYXIv
Ly9mb28iIGJlY29tZXMgImJhci9mb28iLiBEb2VzIG5vdCBlbGltaW5hdGUgb3RoZXIKIC8vIHJl
ZHVuZGFuY2llcyB0aGF0IG1pZ2h0IGJlIGluIGEgcGF0aG5hbWUgaW52b2x2aW5nICIuIiBvciAi
Li4iLgotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IGhhbmRsZSBXaW5kb3dzIG5ldHdvcmsgc2hh
cmVzIChlLmcuIFxcc2VydmVyXHNoYXJlKS4KKy8vIEZJWE1FOiBoYW5kbGUgV2luZG93cyBuZXR3
b3JrIHNoYXJlcyAoZS5nLiBcXHNlcnZlclxzaGFyZSkuCiB2b2lkIEZpbGVQYXRoOjpOb3JtYWxp
emUoKSB7CiAgIGlmIChwYXRobmFtZV8uY19zdHIoKSA9PSBOVUxMKSB7CiAgICAgcGF0aG5hbWVf
ID0gIiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtaW50
ZXJuYWwtaW5sLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtaW50ZXJuYWwt
aW5sLmgKaW5kZXggMDE0MTVmN2Q5NTlkY2EwNzA5ZmFjMTc2NjEwZGI3Mzg4ZjYwNDU1OS4uNDc5
MDA0MTQ5YjQ4YzI4NTY0ZTIwNWUwMjEwYzZjNDMxMDQxOGI1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWludGVybmFsLWlubC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaApAQCAtMjcsMjYgKzI3LDE1
IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLS8vIFV0aWxpdHkgZnVuY3Rp
b25zIGFuZCBjbGFzc2VzIHVzZWQgYnkgdGhlIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsu
Ci0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KKy8vIFV0
aWxpdHkgZnVuY3Rpb25zIGFuZCBjbGFzc2VzIHVzZWQgYnkgdGhlIEdvb2dsZSBDKysgdGVzdGlu
ZyBmcmFtZXdvcmsuLy8KIC8vIFRoaXMgZmlsZSBjb250YWlucyBwdXJlbHkgR29vZ2xlIFRlc3Qn
cyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4gIFBsZWFzZQogLy8gRE8gTk9UICNJTkNMVURFIElU
IElOIEEgVVNFUiBQUk9HUkFNLgogCiAjaWZuZGVmIEdURVNUX1NSQ19HVEVTVF9JTlRFUk5BTF9J
TkxfSF8KICNkZWZpbmUgR1RFU1RfU1JDX0dURVNUX0lOVEVSTkFMX0lOTF9IXwogCi0vLyBHVEVT
VF9JTVBMRU1FTlRBVElPTl8gaXMgZGVmaW5lZCB0byAxIGlmZiB0aGUgY3VycmVudCB0cmFuc2xh
dGlvbiB1bml0IGlzCi0vLyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MgaW1wbGVtZW50YXRpb247IG90
aGVyd2lzZSBpdCdzIHVuZGVmaW5lZC4KLSNpZiAhR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0vLyBB
IHVzZXIgaXMgdHJ5aW5nIHRvIGluY2x1ZGUgdGhpcyBmcm9tIGhpcyBjb2RlIC0ganVzdCBzYXkg
bm8uCi0jZXJyb3IgImd0ZXN0LWludGVybmFsLWlubC5oIGlzIHBhcnQgb2YgR29vZ2xlIFRlc3Qn
cyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4iCi0jZXJyb3IgIkl0IG11c3Qgbm90IGJlIGluY2x1
ZGVkIGV4Y2VwdCBieSBHb29nbGUgVGVzdCBpdHNlbGYuIgotI2VuZGlmICAvLyBHVEVTVF9JTVBM
RU1FTlRBVElPTl8KLQogI2lmbmRlZiBfV0lOMzJfV0NFCi0jaW5jbHVkZSA8ZXJybm8uaD4KKyMg
aW5jbHVkZSA8ZXJybm8uaD4KICNlbmRpZiAgLy8gIV9XSU4zMl9XQ0UKICNpbmNsdWRlIDxzdGRk
ZWYuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4gIC8vIEZvciBzdHJ0b2xsL19zdHJ0b3VsNjQvbWFs
bG9jL2ZyZWUuCkBAIC01NiwxNCArNDUsMjIgQEAKICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVk
ZSA8dmVjdG9yPgogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorI2lu
Y2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKworI2lmIEdURVNUX0NBTl9TVFJF
QU1fUkVTVUxUU18KKyMgaW5jbHVkZSA8YXJwYS9pbmV0Lmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVk
ZSA8bmV0ZGIuaD4gIC8vIE5PTElOVAorI2VuZGlmCiAKICNpZiBHVEVTVF9PU19XSU5ET1dTCi0j
aW5jbHVkZSA8d2luZG93cy5oPiAgLy8gRm9yIERXT1JELgorIyBpbmNsdWRlIDx3aW5kb3dzLmg+
ICAvLyBOT0xJTlQKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCisKK0dU
RVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQyNTEgXAorLyogY2xhc3MgQSBuZWVkcyB0
byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBieSBjbGllbnRzIG9mIGNsYXNzIEIgKi8p
CiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIApAQCAtODksMTEgKzg2LDE0IEBAIGNvbnN0IGNoYXIg
a0ZpbHRlckZsYWdbXSA9ICJmaWx0ZXIiOwogY29uc3QgY2hhciBrTGlzdFRlc3RzRmxhZ1tdID0g
Imxpc3RfdGVzdHMiOwogY29uc3QgY2hhciBrT3V0cHV0RmxhZ1tdID0gIm91dHB1dCI7CiBjb25z
dCBjaGFyIGtQcmludFRpbWVGbGFnW10gPSAicHJpbnRfdGltZSI7Citjb25zdCBjaGFyIGtQcmlu
dFVURjhGbGFnW10gPSAicHJpbnRfdXRmOCI7CiBjb25zdCBjaGFyIGtSYW5kb21TZWVkRmxhZ1td
ID0gInJhbmRvbV9zZWVkIjsKIGNvbnN0IGNoYXIga1JlcGVhdEZsYWdbXSA9ICJyZXBlYXQiOwog
Y29uc3QgY2hhciBrU2h1ZmZsZUZsYWdbXSA9ICJzaHVmZmxlIjsKIGNvbnN0IGNoYXIga1N0YWNr
VHJhY2VEZXB0aEZsYWdbXSA9ICJzdGFja190cmFjZV9kZXB0aCI7Citjb25zdCBjaGFyIGtTdHJl
YW1SZXN1bHRUb0ZsYWdbXSA9ICJzdHJlYW1fcmVzdWx0X3RvIjsKIGNvbnN0IGNoYXIga1Rocm93
T25GYWlsdXJlRmxhZ1tdID0gInRocm93X29uX2ZhaWx1cmUiOworY29uc3QgY2hhciBrRmxhZ2Zp
bGVGbGFnW10gPSAiZmxhZ2ZpbGUiOwogCiAvLyBBIHZhbGlkIHJhbmRvbSBzZWVkIG11c3QgYmUg
aW4gWzEsIGtNYXhSYW5kb21TZWVkXS4KIGNvbnN0IGludCBrTWF4UmFuZG9tU2VlZCA9IDk5OTk5
OwpAQCAtMTExLDYgKzExMSwxMiBAQCBHVEVTVF9BUElfIGJvb2wgU2hvdWxkVXNlQ29sb3IoYm9v
bCBzdGRvdXRfaXNfdHR5KTsKIC8vIEZvcm1hdHMgdGhlIGdpdmVuIHRpbWUgaW4gbWlsbGlzZWNv
bmRzIGFzIHNlY29uZHMuCiBHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIEZvcm1hdFRpbWVJbk1pbGxp
c0FzU2Vjb25kcyhUaW1lSW5NaWxsaXMgbXMpOwogCisvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gdGlt
ZSBpbiBtaWxsaXNlY29uZHMgdG8gYSBkYXRlIHN0cmluZyBpbiB0aGUgSVNPIDg2MDEKKy8vIGZv
cm1hdCwgd2l0aG91dCB0aGUgdGltZXpvbmUgaW5mb3JtYXRpb24uICBOLkIuOiBkdWUgdG8gdGhl
IHVzZSB0aGUKKy8vIG5vbi1yZWVudHJhbnQgbG9jYWx0aW1lKCkgZnVuY3Rpb24sIHRoaXMgZnVu
Y3Rpb24gaXMgbm90IHRocmVhZCBzYWZlLiAgRG8KKy8vIG5vdCB1c2UgaXQgaW4gYW55IGNvZGUg
dGhhdCBjYW4gYmUgY2FsbGVkIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4KK0dURVNUX0FQSV8gc3Rk
OjpzdHJpbmcgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoVGltZUluTWlsbGlzIG1z
KTsKKwogLy8gUGFyc2VzIGEgc3RyaW5nIGZvciBhbiBJbnQzMiBmbGFnLCBpbiB0aGUgZm9ybSBv
ZiAiLS1mbGFnPXZhbHVlIi4KIC8vCiAvLyBPbiBzdWNjZXNzLCBzdG9yZXMgdGhlIHZhbHVlIG9m
IHRoZSBmbGFnIGluICp2YWx1ZSwgYW5kIHJldHVybnMKQEAgLTE2MSwxMCArMTY3LDEyIEBAIGNs
YXNzIEdUZXN0RmxhZ1NhdmVyIHsKICAgICBsaXN0X3Rlc3RzXyA9IEdURVNUX0ZMQUcobGlzdF90
ZXN0cyk7CiAgICAgb3V0cHV0XyA9IEdURVNUX0ZMQUcob3V0cHV0KTsKICAgICBwcmludF90aW1l
XyA9IEdURVNUX0ZMQUcocHJpbnRfdGltZSk7CisgICAgcHJpbnRfdXRmOF8gPSBHVEVTVF9GTEFH
KHByaW50X3V0ZjgpOwogICAgIHJhbmRvbV9zZWVkXyA9IEdURVNUX0ZMQUcocmFuZG9tX3NlZWQp
OwogICAgIHJlcGVhdF8gPSBHVEVTVF9GTEFHKHJlcGVhdCk7CiAgICAgc2h1ZmZsZV8gPSBHVEVT
VF9GTEFHKHNodWZmbGUpOwogICAgIHN0YWNrX3RyYWNlX2RlcHRoXyA9IEdURVNUX0ZMQUcoc3Rh
Y2tfdHJhY2VfZGVwdGgpOworICAgIHN0cmVhbV9yZXN1bHRfdG9fID0gR1RFU1RfRkxBRyhzdHJl
YW1fcmVzdWx0X3RvKTsKICAgICB0aHJvd19vbl9mYWlsdXJlXyA9IEdURVNUX0ZMQUcodGhyb3df
b25fZmFpbHVyZSk7CiAgIH0KIApAQCAtMTgxLDQxICsxODksNDQgQEAgY2xhc3MgR1Rlc3RGbGFn
U2F2ZXIgewogICAgIEdURVNUX0ZMQUcobGlzdF90ZXN0cykgPSBsaXN0X3Rlc3RzXzsKICAgICBH
VEVTVF9GTEFHKG91dHB1dCkgPSBvdXRwdXRfOwogICAgIEdURVNUX0ZMQUcocHJpbnRfdGltZSkg
PSBwcmludF90aW1lXzsKKyAgICBHVEVTVF9GTEFHKHByaW50X3V0ZjgpID0gcHJpbnRfdXRmOF87
CiAgICAgR1RFU1RfRkxBRyhyYW5kb21fc2VlZCkgPSByYW5kb21fc2VlZF87CiAgICAgR1RFU1Rf
RkxBRyhyZXBlYXQpID0gcmVwZWF0XzsKICAgICBHVEVTVF9GTEFHKHNodWZmbGUpID0gc2h1ZmZs
ZV87CiAgICAgR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkgPSBzdGFja190cmFjZV9kZXB0
aF87CisgICAgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSA9IHN0cmVhbV9yZXN1bHRfdG9f
OwogICAgIEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSB0aHJvd19vbl9mYWlsdXJlXzsK
ICAgfQorCiAgcHJpdmF0ZToKICAgLy8gRmllbGRzIGZvciBzYXZpbmcgdGhlIG9yaWdpbmFsIHZh
bHVlcyBvZiBmbGFncy4KICAgYm9vbCBhbHNvX3J1bl9kaXNhYmxlZF90ZXN0c187CiAgIGJvb2wg
YnJlYWtfb25fZmFpbHVyZV87CiAgIGJvb2wgY2F0Y2hfZXhjZXB0aW9uc187Ci0gIFN0cmluZyBj
b2xvcl87Ci0gIFN0cmluZyBkZWF0aF90ZXN0X3N0eWxlXzsKKyAgc3RkOjpzdHJpbmcgY29sb3Jf
OworICBzdGQ6OnN0cmluZyBkZWF0aF90ZXN0X3N0eWxlXzsKICAgYm9vbCBkZWF0aF90ZXN0X3Vz
ZV9mb3JrXzsKLSAgU3RyaW5nIGZpbHRlcl87Ci0gIFN0cmluZyBpbnRlcm5hbF9ydW5fZGVhdGhf
dGVzdF87CisgIHN0ZDo6c3RyaW5nIGZpbHRlcl87CisgIHN0ZDo6c3RyaW5nIGludGVybmFsX3J1
bl9kZWF0aF90ZXN0XzsKICAgYm9vbCBsaXN0X3Rlc3RzXzsKLSAgU3RyaW5nIG91dHB1dF87Cisg
IHN0ZDo6c3RyaW5nIG91dHB1dF87CiAgIGJvb2wgcHJpbnRfdGltZV87CisgIGJvb2wgcHJpbnRf
dXRmOF87CiAgIGludGVybmFsOjpJbnQzMiByYW5kb21fc2VlZF87CiAgIGludGVybmFsOjpJbnQz
MiByZXBlYXRfOwogICBib29sIHNodWZmbGVfOwogICBpbnRlcm5hbDo6SW50MzIgc3RhY2tfdHJh
Y2VfZGVwdGhfOworICBzdGQ6OnN0cmluZyBzdHJlYW1fcmVzdWx0X3RvXzsKICAgYm9vbCB0aHJv
d19vbl9mYWlsdXJlXzsKIH0gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF87CiAKIC8vIENvbnZlcnRz
IGEgVW5pY29kZSBjb2RlIHBvaW50IHRvIGEgbmFycm93IHN0cmluZyBpbiBVVEYtOCBlbmNvZGlu
Zy4KIC8vIGNvZGVfcG9pbnQgcGFyYW1ldGVyIGlzIG9mIHR5cGUgVUludDMyIGJlY2F1c2Ugd2No
YXJfdCBtYXkgbm90IGJlCiAvLyB3aWRlIGVub3VnaCB0byBjb250YWluIGEgY29kZSBwb2ludC4K
LS8vIFRoZSBvdXRwdXQgYnVmZmVyIHN0ciBtdXN0IGNvbnRhaW50IGF0IGxlYXN0IDMyIGNoYXJh
Y3RlcnMuCi0vLyBUaGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgYWRkcmVzcyBvZiB0aGUgb3V0cHV0
IGJ1ZmZlci4KIC8vIElmIHRoZSBjb2RlX3BvaW50IGlzIG5vdCBhIHZhbGlkIFVuaWNvZGUgY29k
ZSBwb2ludAotLy8gKGkuZS4gb3V0c2lkZSBvZiBVbmljb2RlIHJhbmdlIFUrMCB0byBVKzEwRkZG
RikgaXQgd2lsbCBiZSBvdXRwdXQKLS8vIGFzICcoSW52YWxpZCBVbmljb2RlIDB4WFhYWFhYWFgp
Jy4KLUdURVNUX0FQSV8gY2hhciogQ29kZVBvaW50VG9VdGY4KFVJbnQzMiBjb2RlX3BvaW50LCBj
aGFyKiBzdHIpOworLy8gKGkuZS4gb3V0c2lkZSBvZiBVbmljb2RlIHJhbmdlIFUrMCB0byBVKzEw
RkZGRikgaXQgd2lsbCBiZSBjb252ZXJ0ZWQKKy8vIHRvICIoSW52YWxpZCBVbmljb2RlIDB4WFhY
WFhYWFgpIi4KK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgQ29kZVBvaW50VG9VdGY4KFVJbnQzMiBj
b2RlX3BvaW50KTsKIAogLy8gQ29udmVydHMgYSB3aWRlIHN0cmluZyB0byBhIG5hcnJvdyBzdHJp
bmcgaW4gVVRGLTggZW5jb2RpbmcuCiAvLyBUaGUgd2lkZSBzdHJpbmcgaXMgYXNzdW1lZCB0byBo
YXZlIHRoZSBmb2xsb3dpbmcgZW5jb2Rpbmc6CkBAIC0yMzAsNyArMjQxLDcgQEAgR1RFU1RfQVBJ
XyBjaGFyKiBDb2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQsIGNoYXIqIHN0cik7CiAv
LyBhcyAnKEludmFsaWQgVW5pY29kZSAweFhYWFhYWFhYKScuIElmIHRoZSBzdHJpbmcgaXMgaW4g
VVRGMTYgZW5jb2RpbmcKIC8vIGFuZCBjb250YWlucyBpbnZhbGlkIFVURi0xNiBzdXJyb2dhdGUg
cGFpcnMsIHZhbHVlcyBpbiB0aG9zZSBwYWlycwogLy8gd2lsbCBiZSBlbmNvZGVkIGFzIGluZGl2
aWR1YWwgVW5pY29kZSBjaGFyYWN0ZXJzIGZyb20gQmFzaWMgTm9ybWFsIFBsYW5lLgotR1RFU1Rf
QVBJXyBTdHJpbmcgV2lkZVN0cmluZ1RvVXRmOChjb25zdCB3Y2hhcl90KiBzdHIsIGludCBudW1f
Y2hhcnMpOworR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBXaWRlU3RyaW5nVG9VdGY4KGNvbnN0IHdj
aGFyX3QqIHN0ciwgaW50IG51bV9jaGFycyk7CiAKIC8vIFJlYWRzIHRoZSBHVEVTVF9TSEFSRF9T
VEFUVVNfRklMRSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYW5kIGNyZWF0ZXMgdGhlIGZpbGUKIC8v
IGlmIHRoZSB2YXJpYWJsZSBpcyBwcmVzZW50LiBJZiBhIGZpbGUgYWxyZWFkeSBleGlzdHMgYXQg
dGhpcyBsb2NhdGlvbiwgdGhpcwpAQCAtMjY2LDcgKzI3NywxNCBAQCBHVEVTVF9BUElfIGJvb2wg
U2hvdWxkUnVuVGVzdE9uU2hhcmQoCiAvLyB0aGUgZ2l2ZW4gcHJlZGljYXRlLgogdGVtcGxhdGUg
PGNsYXNzIENvbnRhaW5lciwgdHlwZW5hbWUgUHJlZGljYXRlPgogaW5saW5lIGludCBDb3VudElm
KGNvbnN0IENvbnRhaW5lciYgYywgUHJlZGljYXRlIHByZWRpY2F0ZSkgewotICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50PihzdGQ6OmNvdW50X2lmKGMuYmVnaW4oKSwgYy5lbmQoKSwgcHJlZGljYXRl
KSk7CisgIC8vIEltcGxlbWVudGVkIGFzIGFuIGV4cGxpY2l0IGxvb3Agc2luY2Ugc3RkOjpjb3Vu
dF9pZigpIGluIGxpYkNzdGQgb24KKyAgLy8gU29sYXJpcyBoYXMgYSBub24tc3RhbmRhcmQgc2ln
bmF0dXJlLgorICBpbnQgY291bnQgPSAwOworICBmb3IgKHR5cGVuYW1lIENvbnRhaW5lcjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBjLmJlZ2luKCk7IGl0ICE9IGMuZW5kKCk7ICsraXQpIHsKKyAgICBp
ZiAocHJlZGljYXRlKCppdCkpCisgICAgICArK2NvdW50OworICB9CisgIHJldHVybiBjb3VudDsK
IH0KIAogLy8gQXBwbGllcyBhIGZ1bmN0aW9uL2Z1bmN0b3IgdG8gZWFjaCBlbGVtZW50IGluIHRo
ZSBjb250YWluZXIuCkBAIC0zMjcsOTUgKzM0NSwxNSBAQCBjbGFzcyBUZXN0UHJvcGVydHlLZXlJ
cyB7CiAgIC8vIENvbnN0cnVjdG9yLgogICAvLwogICAvLyBUZXN0UHJvcGVydHlLZXlJcyBoYXMg
Tk8gZGVmYXVsdCBjb25zdHJ1Y3Rvci4KLSAgZXhwbGljaXQgVGVzdFByb3BlcnR5S2V5SXMoY29u
c3QgY2hhcioga2V5KQotICAgICAgOiBrZXlfKGtleSkge30KKyAgZXhwbGljaXQgVGVzdFByb3Bl
cnR5S2V5SXMoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSkgOiBrZXlfKGtleSkge30KIAogICAvLyBS
ZXR1cm5zIHRydWUgaWZmIHRoZSB0ZXN0IG5hbWUgb2YgdGVzdCBwcm9wZXJ0eSBtYXRjaGVzIG9u
IGtleV8uCiAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVy
dHkpIGNvbnN0IHsKLSAgICByZXR1cm4gU3RyaW5nKHRlc3RfcHJvcGVydHkua2V5KCkpLkNvbXBh
cmUoa2V5XykgPT0gMDsKLSAgfQotCi0gcHJpdmF0ZToKLSAgU3RyaW5nIGtleV87Ci19OwotCi1j
bGFzcyBUZXN0SW5mb0ltcGwgewotIHB1YmxpYzoKLSAgVGVzdEluZm9JbXBsKFRlc3RJbmZvKiBw
YXJlbnQsIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogbmFtZSwgY29uc3QgY2hhciogdGVzdF9jYXNlX2NvbW1lbnQsCi0gICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBjb21tZW50LCBUeXBlSWQgZml4dHVyZV9jbGFzc19pZCwKLSAgICAgICAg
ICAgICAgIGludGVybmFsOjpUZXN0RmFjdG9yeUJhc2UqIGZhY3RvcnkpOwotICB+VGVzdEluZm9J
bXBsKCk7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBzaG91bGQgcnVuLgotICBi
b29sIHNob3VsZF9ydW4oKSBjb25zdCB7IHJldHVybiBzaG91bGRfcnVuXzsgfQotCi0gIC8vIFNl
dHMgdGhlIHNob3VsZF9ydW4gbWVtYmVyLgotICB2b2lkIHNldF9zaG91bGRfcnVuKGJvb2wgc2hv
dWxkKSB7IHNob3VsZF9ydW5fID0gc2hvdWxkOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIHRo
aXMgdGVzdCBpcyBkaXNhYmxlZC4gRGlzYWJsZWQgdGVzdHMgYXJlIG5vdCBydW4uCi0gIGJvb2wg
aXNfZGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBpc19kaXNhYmxlZF87IH0KLQotICAvLyBTZXRz
IHRoZSBpc19kaXNhYmxlZCBtZW1iZXIuCi0gIHZvaWQgc2V0X2lzX2Rpc2FibGVkKGJvb2wgaXMp
IHsgaXNfZGlzYWJsZWRfID0gaXM7IH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0
IG1hdGNoZXMgdGhlIGZpbHRlciBzcGVjaWZpZWQgYnkgdGhlIHVzZXIuCi0gIGJvb2wgbWF0Y2hl
c19maWx0ZXIoKSBjb25zdCB7IHJldHVybiBtYXRjaGVzX2ZpbHRlcl87IH0KLQotICAvLyBTZXRz
IHRoZSBtYXRjaGVzX2ZpbHRlciBtZW1iZXIuCi0gIHZvaWQgc2V0X21hdGNoZXNfZmlsdGVyKGJv
b2wgbWF0Y2hlcykgeyBtYXRjaGVzX2ZpbHRlcl8gPSBtYXRjaGVzOyB9Ci0KLSAgLy8gUmV0dXJu
cyB0aGUgdGVzdCBjYXNlIG5hbWUuCi0gIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lKCkgY29u
c3QgeyByZXR1cm4gdGVzdF9jYXNlX25hbWVfLmNfc3RyKCk7IH0KLQotICAvLyBSZXR1cm5zIHRo
ZSB0ZXN0IG5hbWUuCi0gIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7IHJldHVybiBuYW1lXy5j
X3N0cigpOyB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIGNvbW1lbnQuCi0gIGNvbnN0
IGNoYXIqIHRlc3RfY2FzZV9jb21tZW50KCkgY29uc3QgeyByZXR1cm4gdGVzdF9jYXNlX2NvbW1l
bnRfLmNfc3RyKCk7IH0KLQotICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNvbW1lbnQuCi0gIGNvbnN0
IGNoYXIqIGNvbW1lbnQoKSBjb25zdCB7IHJldHVybiBjb21tZW50Xy5jX3N0cigpOyB9Ci0KLSAg
Ly8gUmV0dXJucyB0aGUgSUQgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4KLSAgVHlwZUlkIGZp
eHR1cmVfY2xhc3NfaWQoKSBjb25zdCB7IHJldHVybiBmaXh0dXJlX2NsYXNzX2lkXzsgfQotCi0g
IC8vIFJldHVybnMgdGhlIHRlc3QgcmVzdWx0LgotICBUZXN0UmVzdWx0KiByZXN1bHQoKSB7IHJl
dHVybiAmcmVzdWx0XzsgfQotICBjb25zdCBUZXN0UmVzdWx0KiByZXN1bHQoKSBjb25zdCB7IHJl
dHVybiAmcmVzdWx0XzsgfQotCi0gIC8vIENyZWF0ZXMgdGhlIHRlc3Qgb2JqZWN0LCBydW5zIGl0
LCByZWNvcmRzIGl0cyByZXN1bHQsIGFuZCB0aGVuCi0gIC8vIGRlbGV0ZXMgaXQuCi0gIHZvaWQg
UnVuKCk7Ci0KLSAgLy8gQ2xlYXJzIHRoZSB0ZXN0IHJlc3VsdC4KLSAgdm9pZCBDbGVhclJlc3Vs
dCgpIHsgcmVzdWx0Xy5DbGVhcigpOyB9Ci0KLSAgLy8gQ2xlYXJzIHRoZSB0ZXN0IHJlc3VsdCBp
biB0aGUgZ2l2ZW4gVGVzdEluZm8gb2JqZWN0LgotICBzdGF0aWMgdm9pZCBDbGVhclRlc3RSZXN1
bHQoVGVzdEluZm8gKiB0ZXN0X2luZm8pIHsKLSAgICB0ZXN0X2luZm8tPmltcGwoKS0+Q2xlYXJS
ZXN1bHQoKTsKKyAgICByZXR1cm4gdGVzdF9wcm9wZXJ0eS5rZXkoKSA9PSBrZXlfOwogICB9CiAK
ICBwcml2YXRlOgotICAvLyBUaGVzZSBmaWVsZHMgYXJlIGltbXV0YWJsZSBwcm9wZXJ0aWVzIG9m
IHRoZSB0ZXN0LgotICBUZXN0SW5mbyogY29uc3QgcGFyZW50XzsgICAgICAgICAgLy8gVGhlIG93
bmVyIG9mIHRoaXMgb2JqZWN0Ci0gIGNvbnN0IFN0cmluZyB0ZXN0X2Nhc2VfbmFtZV87ICAgICAv
LyBUZXN0IGNhc2UgbmFtZQotICBjb25zdCBTdHJpbmcgbmFtZV87ICAgICAgICAgICAgICAgLy8g
VGVzdCBuYW1lCi0gIGNvbnN0IFN0cmluZyB0ZXN0X2Nhc2VfY29tbWVudF87ICAvLyBUZXN0IGNh
c2UgY29tbWVudAotICBjb25zdCBTdHJpbmcgY29tbWVudF87ICAgICAgICAgICAgLy8gVGVzdCBj
b21tZW50Ci0gIGNvbnN0IFR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkXzsgICAvLyBJRCBvZiB0aGUg
dGVzdCBmaXh0dXJlIGNsYXNzCi0gIGJvb2wgc2hvdWxkX3J1bl87ICAgICAgICAgICAgICAgICAv
LyBUcnVlIGlmZiB0aGlzIHRlc3Qgc2hvdWxkIHJ1bgotICBib29sIGlzX2Rpc2FibGVkXzsgICAg
ICAgICAgICAgICAgLy8gVHJ1ZSBpZmYgdGhpcyB0ZXN0IGlzIGRpc2FibGVkCi0gIGJvb2wgbWF0
Y2hlc19maWx0ZXJfOyAgICAgICAgICAgICAvLyBUcnVlIGlmIHRoaXMgdGVzdCBtYXRjaGVzIHRo
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlci1zcGVjaWZpZWQg
ZmlsdGVyLgotICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBjb25zdCBmYWN0b3J5XzsgIC8v
IFRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHRoZSB0ZXN0IG9iamVjdAotCi0gIC8vIFRoaXMgZmllbGQgaXMg
bXV0YWJsZSBhbmQgbmVlZHMgdG8gYmUgcmVzZXQgYmVmb3JlIHJ1bm5pbmcgdGhlCi0gIC8vIHRl
c3QgZm9yIHRoZSBzZWNvbmQgdGltZS4KLSAgVGVzdFJlc3VsdCByZXN1bHRfOwotCi0gIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdEluZm9JbXBsKTsKKyAgc3RkOjpzdHJpbmcg
a2V5XzsKIH07CiAKIC8vIENsYXNzIFVuaXRUZXN0T3B0aW9ucy4KQEAgLTQzMywxMiArMzcxLDEy
IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RPcHRpb25zIHsKICAgLy8gRnVuY3Rpb25zIGZv
ciBwcm9jZXNzaW5nIHRoZSBndGVzdF9vdXRwdXQgZmxhZy4KIAogICAvLyBSZXR1cm5zIHRoZSBv
dXRwdXQgZm9ybWF0LCBvciAiIiBmb3Igbm9ybWFsIHByaW50ZWQgb3V0cHV0LgotICBzdGF0aWMg
U3RyaW5nIEdldE91dHB1dEZvcm1hdCgpOworICBzdGF0aWMgc3RkOjpzdHJpbmcgR2V0T3V0cHV0
Rm9ybWF0KCk7CiAKICAgLy8gUmV0dXJucyB0aGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgcmVxdWVz
dGVkIG91dHB1dCBmaWxlLCBvciB0aGUKICAgLy8gZGVmYXVsdCAodGVzdF9kZXRhaWwueG1sIGlu
IHRoZSBvcmlnaW5hbCB3b3JraW5nIGRpcmVjdG9yeSkgaWYKICAgLy8gbm9uZSB3YXMgZXhwbGlj
aXRseSBzcGVjaWZpZWQuCi0gIHN0YXRpYyBTdHJpbmcgR2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRG
aWxlKCk7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUo
KTsKIAogICAvLyBGdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgdGhlIGd0ZXN0X2ZpbHRlciBmbGFn
LgogCkBAIC00NTEsOCArMzg5LDggQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdE9wdGlvbnMg
ewogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHVzZXItc3BlY2lmaWVkIGZpbHRlciBtYXRj
aGVzIHRoZSB0ZXN0IGNhc2UKICAgLy8gbmFtZSBhbmQgdGhlIHRlc3QgbmFtZS4KLSAgc3RhdGlj
IGJvb2wgRmlsdGVyTWF0Y2hlc1Rlc3QoY29uc3QgU3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nICZ0ZXN0X25hbWUpOwor
ICBzdGF0aWMgYm9vbCBGaWx0ZXJNYXRjaGVzVGVzdChjb25zdCBzdGQ6OnN0cmluZyAmdGVzdF9j
YXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZ0ZXN0X25hbWUpOwogCiAjaWYgR1RFU1RfT1NfV0lORE9XUwogICAvLyBGdW5jdGlvbiBm
b3Igc3VwcG9ydGluZyB0aGUgZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uIGZsYWcuCkBAIC00NjUsNyAr
NDAzLDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdE9wdGlvbnMgewogCiAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiAibmFtZSIgbWF0Y2hlcyB0aGUgJzonIHNlcGFyYXRlZCBsaXN0IG9mIGdsb2It
c3R5bGUKICAgLy8gZmlsdGVycyBpbiAiZmlsdGVyIi4KLSAgc3RhdGljIGJvb2wgTWF0Y2hlc0Zp
bHRlcihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IGNoYXIqIGZpbHRlcik7CisgIHN0YXRpYyBi
b29sIE1hdGNoZXNGaWx0ZXIoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIGNvbnN0IGNoYXIqIGZp
bHRlcik7CiB9OwogCiAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uJ3MgbmFtZSwg
cmVtb3ZpbmcgZGlyZWN0b3J5IHBhdGggaWYgdGhhdApAQCAtNDc4LDE5ICs0MTYsMjMgQEAgY2xh
c3MgT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlIHsKICAgT3NTdGFja1RyYWNlR2V0dGVySW50
ZXJmYWNlKCkge30KICAgdmlydHVhbCB+T3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlKCkge30K
IAotICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFzIGEgU3RyaW5nLiAg
UGFyYW1ldGVyczoKKyAgLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBhcyBh
biBzdGQ6OnN0cmluZy4gIFBhcmFtZXRlcnM6CiAgIC8vCiAgIC8vICAgbWF4X2RlcHRoICAtIHRo
ZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMgdG8gYmUgaW5jbHVkZWQKICAgLy8gICAg
ICAgICAgICAgICAgaW4gdGhlIHRyYWNlLgogICAvLyAgIHNraXBfY291bnQgLSB0aGUgbnVtYmVy
IG9mIHRvcCBmcmFtZXMgdG8gYmUgc2tpcHBlZDsgZG9lc24ndCBjb3VudAogICAvLyAgICAgICAg
ICAgICAgICBhZ2FpbnN0IG1heF9kZXB0aC4KLSAgdmlydHVhbCBTdHJpbmcgQ3VycmVudFN0YWNr
VHJhY2UoaW50IG1heF9kZXB0aCwgaW50IHNraXBfY291bnQpID0gMDsKKyAgdmlydHVhbCBzdGQ6
OnN0cmluZyBDdXJyZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCkg
PSAwOwogCiAgIC8vIFVwb25MZWF2aW5nR1Rlc3QoKSBzaG91bGQgYmUgY2FsbGVkIGltbWVkaWF0
ZWx5IGJlZm9yZSBHb29nbGUgVGVzdCBjYWxscwogICAvLyB1c2VyIGNvZGUuIEl0IHNhdmVzIHNv
bWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgc3RhY2sgdGhhdAogICAvLyBDdXJyZW50
U3RhY2tUcmFjZSgpIHdpbGwgdXNlIHRvIGZpbmQgYW5kIGhpZGUgR29vZ2xlIFRlc3Qgc3RhY2sg
ZnJhbWVzLgogICB2aXJ0dWFsIHZvaWQgVXBvbkxlYXZpbmdHVGVzdCgpID0gMDsKIAorICAvLyBU
aGlzIHN0cmluZyBpcyBpbnNlcnRlZCBpbiBwbGFjZSBvZiBzdGFjayBmcmFtZXMgdGhhdCBhcmUg
cGFydCBvZgorICAvLyBHb29nbGUgVGVzdCdzIGltcGxlbWVudGF0aW9uLgorICBzdGF0aWMgY29u
c3QgY2hhciogY29uc3Qga0VsaWRlZEZyYW1lc01hcmtlcjsKKwogIHByaXZhdGU6CiAgIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlKTsK
IH07CkBAIC00OTgsMjIgKzQ0MCwyMSBAQCBjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZh
Y2UgewogLy8gQSB3b3JraW5nIGltcGxlbWVudGF0aW9uIG9mIHRoZSBPc1N0YWNrVHJhY2VHZXR0
ZXJJbnRlcmZhY2UgaW50ZXJmYWNlLgogY2xhc3MgT3NTdGFja1RyYWNlR2V0dGVyIDogcHVibGlj
IE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSB7CiAgcHVibGljOgotICBPc1N0YWNrVHJhY2VH
ZXR0ZXIoKSA6IGNhbGxlcl9mcmFtZV8oTlVMTCkge30KLSAgdmlydHVhbCBTdHJpbmcgQ3VycmVu
dFN0YWNrVHJhY2UoaW50IG1heF9kZXB0aCwgaW50IHNraXBfY291bnQpOwotICB2aXJ0dWFsIHZv
aWQgVXBvbkxlYXZpbmdHVGVzdCgpOworICBPc1N0YWNrVHJhY2VHZXR0ZXIoKSB7fQogCi0gIC8v
IFRoaXMgc3RyaW5nIGlzIGluc2VydGVkIGluIHBsYWNlIG9mIHN0YWNrIGZyYW1lcyB0aGF0IGFy
ZSBwYXJ0IG9mCi0gIC8vIEdvb2dsZSBUZXN0J3MgaW1wbGVtZW50YXRpb24uCi0gIHN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCBrRWxpZGVkRnJhbWVzTWFya2VyOworICB2aXJ0dWFsIHN0ZDo6c3Ry
aW5nIEN1cnJlbnRTdGFja1RyYWNlKGludCBtYXhfZGVwdGgsIGludCBza2lwX2NvdW50KTsKKyAg
dmlydHVhbCB2b2lkIFVwb25MZWF2aW5nR1Rlc3QoKTsKIAogIHByaXZhdGU6Ci0gIE11dGV4IG11
dGV4XzsgIC8vIHByb3RlY3RzIGFsbCBpbnRlcm5hbCBzdGF0ZQorI2lmIEdURVNUX0hBU19BQlNM
CisgIE11dGV4IG11dGV4XzsgIC8vIFByb3RlY3RzIGFsbCBpbnRlcm5hbCBzdGF0ZS4KIAogICAv
LyBXZSBzYXZlIHRoZSBzdGFjayBmcmFtZSBiZWxvdyB0aGUgZnJhbWUgdGhhdCBjYWxscyB1c2Vy
IGNvZGUuCiAgIC8vIFdlIGRvIHRoaXMgYmVjYXVzZSB0aGUgYWRkcmVzcyBvZiB0aGUgZnJhbWUg
aW1tZWRpYXRlbHkgYmVsb3cKICAgLy8gdGhlIHVzZXIgY29kZSBjaGFuZ2VzIGJldHdlZW4gdGhl
IGNhbGwgdG8gVXBvbkxlYXZpbmdHVGVzdCgpCi0gIC8vIGFuZCBhbnkgY2FsbHMgdG8gQ3VycmVu
dFN0YWNrVHJhY2UoKSBmcm9tIHdpdGhpbiB0aGUgdXNlciBjb2RlLgotICB2b2lkKiBjYWxsZXJf
ZnJhbWVfOworICAvLyBhbmQgYW55IGNhbGxzIHRvIHRoZSBzdGFjayB0cmFjZSBjb2RlIGZyb20g
d2l0aGluIHRoZSB1c2VyIGNvZGUuCisgIHZvaWQqIGNhbGxlcl9mcmFtZV8gPSBudWxscHRyOwor
I2VuZGlmICAvLyBHVEVTVF9IQVNfQUJTTAogCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oT3NTdGFja1RyYWNlR2V0dGVyKTsKIH07CkBAIC01MjIsNyArNDYzLDcgQEAgY2xhc3Mg
T3NTdGFja1RyYWNlR2V0dGVyIDogcHVibGljIE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSB7
CiBzdHJ1Y3QgVHJhY2VJbmZvIHsKICAgY29uc3QgY2hhciogZmlsZTsKICAgaW50IGxpbmU7Ci0g
IFN0cmluZyBtZXNzYWdlOworICBzdGQ6OnN0cmluZyBtZXNzYWdlOwogfTsKIAogLy8gVGhpcyBp
cyB0aGUgZGVmYXVsdCBnbG9iYWwgdGVzdCBwYXJ0IHJlc3VsdCByZXBvcnRlciB1c2VkIGluIFVu
aXRUZXN0SW1wbC4KQEAgLTYwNiwxNSArNTQ3LDI1IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRl
c3RJbXBsIHsKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cy4KICAgaW50IGZh
aWxlZF90ZXN0X2NvdW50KCkgY29uc3Q7CiAKKyAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2Fi
bGVkIHRlc3RzIHRoYXQgd2lsbCBiZSByZXBvcnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50
IHJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8vIEdldHMgdGhl
IG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cy4KICAgaW50IGRpc2FibGVkX3Rlc3RfY291bnQoKSBj
b25zdDsKIAorICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0
aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNvbnN0OworCiAg
IC8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdHMuCiAgIGludCB0b3RhbF90ZXN0X2NvdW50
KCkgY29uc3Q7CiAKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRoYXQgc2hvdWxkIHJ1
bi4KICAgaW50IHRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3Q7CiAKKyAgLy8gR2V0cyB0aGUgdGlt
ZSBvZiB0aGUgdGVzdCBwcm9ncmFtIHN0YXJ0LCBpbiBtcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUK
KyAgLy8gVU5JWCBlcG9jaC4KKyAgVGltZUluTWlsbGlzIHN0YXJ0X3RpbWVzdGFtcCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXJ0X3RpbWVzdGFtcF87IH0KKwogICAvLyBHZXRzIHRoZSBlbGFwc2VkIHRp
bWUsIGluIG1pbGxpc2Vjb25kcy4KICAgVGltZUluTWlsbGlzIGVsYXBzZWRfdGltZSgpIGNvbnN0
IHsgcmV0dXJuIGVsYXBzZWRfdGltZV87IH0KIApAQCAtNjYzLDcgKzYxNCw3IEBAIGNsYXNzIEdU
RVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gZ2V0dGVyLCBhbmQgcmV0dXJucyBpdC4KICAg
T3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlKiBvc19zdGFja190cmFjZV9nZXR0ZXIoKTsKIAot
ICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFzIGEgU3RyaW5nLgorICAv
LyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFzIGFuIHN0ZDo6c3RyaW5nLgog
ICAvLwogICAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIHRvIGJlIGluY2x1
ZGVkIGlzIHNwZWNpZmllZCBieQogICAvLyB0aGUgZ3Rlc3Rfc3RhY2tfdHJhY2VfZGVwdGggZmxh
Zy4gIFRoZSBza2lwX2NvdW50IHBhcmFtZXRlcgpAQCAtNjczLDcgKzYyNCw3IEBAIGNsYXNzIEdU
RVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gRm9yIGV4YW1wbGUsIGlmIEZvbygpIGNhbGxz
IEJhcigpLCB3aGljaCBpbiB0dXJuIGNhbGxzCiAgIC8vIEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNl
cHRUb3AoMSksIEZvbygpIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlCiAgIC8vIHRyYWNlIGJ1dCBC
YXIoKSBhbmQgQ3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgpIHdvbid0LgotICBTdHJpbmcg
Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcChpbnQgc2tpcF9jb3VudCk7CisgIHN0ZDo6c3Ry
aW5nIEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoaW50IHNraXBfY291bnQpIEdURVNUX05P
X0lOTElORV87CiAKICAgLy8gRmluZHMgYW5kIHJldHVybnMgYSBUZXN0Q2FzZSB3aXRoIHRoZSBn
aXZlbiBuYW1lLiAgSWYgb25lIGRvZXNuJ3QKICAgLy8gZXhpc3QsIGNyZWF0ZXMgb25lIGFuZCBy
ZXR1cm5zIGl0LgpAQCAtNjgxLDEwICs2MzIsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVz
dEltcGwgewogICAvLyBBcmd1bWVudHM6CiAgIC8vCiAgIC8vICAgdGVzdF9jYXNlX25hbWU6IG5h
bWUgb2YgdGhlIHRlc3QgY2FzZQorICAvLyAgIHR5cGVfcGFyYW06ICAgICB0aGUgbmFtZSBvZiB0
aGUgdGVzdCdzIHR5cGUgcGFyYW1ldGVyLCBvciBOVUxMIGlmCisgIC8vICAgICAgICAgICAgICAg
ICAgIHRoaXMgaXMgbm90IGEgdHlwZWQgb3IgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KICAg
Ly8gICBzZXRfdXBfdGM6ICAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzIHVw
IHRoZSB0ZXN0IGNhc2UKICAgLy8gICB0ZWFyX2Rvd25fdGM6ICAgcG9pbnRlciB0byB0aGUgZnVu
Y3Rpb24gdGhhdCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UKICAgVGVzdENhc2UqIEdldFRlc3RD
YXNlKGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogY29tbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHR5cGVfcGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0OjpTZXRVcFRlc3RDYXNl
RnVuYyBzZXRfdXBfdGMsCiAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0OjpUZWFyRG93blRl
c3RDYXNlRnVuYyB0ZWFyX2Rvd25fdGMpOwogCkBAIC02OTcsNyArNjUwLDcgQEAgY2xhc3MgR1RF
U1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyAgIHRlc3RfaW5mbzogICAgdGhlIFRlc3RJbmZv
IG9iamVjdAogICB2b2lkIEFkZFRlc3RJbmZvKFRlc3Q6OlNldFVwVGVzdENhc2VGdW5jIHNldF91
cF90YywKICAgICAgICAgICAgICAgICAgICBUZXN0OjpUZWFyRG93blRlc3RDYXNlRnVuYyB0ZWFy
X2Rvd25fdGMsCi0gICAgICAgICAgICAgICAgICAgVGVzdEluZm8gKiB0ZXN0X2luZm8pIHsKKyAg
ICAgICAgICAgICAgICAgICBUZXN0SW5mbyogdGVzdF9pbmZvKSB7CiAgICAgLy8gSW4gb3JkZXIg
dG8gc3VwcG9ydCB0aHJlYWQtc2FmZSBkZWF0aCB0ZXN0cywgd2UgbmVlZCB0bwogICAgIC8vIHJl
bWVtYmVyIHRoZSBvcmlnaW5hbCB3b3JraW5nIGRpcmVjdG9yeSB3aGVuIHRoZSB0ZXN0IHByb2dy
YW0KICAgICAvLyB3YXMgZmlyc3QgaW52b2tlZC4gIFdlIGNhbm5vdCBkbyB0aGlzIGluIFJVTl9B
TExfVEVTVFMoKSwgYXMKQEAgLTcxMiwxOCArNjY1LDE2IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5p
dFRlc3RJbXBsIHsKICAgICB9CiAKICAgICBHZXRUZXN0Q2FzZSh0ZXN0X2luZm8tPnRlc3RfY2Fz
ZV9uYW1lKCksCi0gICAgICAgICAgICAgICAgdGVzdF9pbmZvLT50ZXN0X2Nhc2VfY29tbWVudCgp
LAorICAgICAgICAgICAgICAgIHRlc3RfaW5mby0+dHlwZV9wYXJhbSgpLAogICAgICAgICAgICAg
ICAgIHNldF91cF90YywKICAgICAgICAgICAgICAgICB0ZWFyX2Rvd25fdGMpLT5BZGRUZXN0SW5m
byh0ZXN0X2luZm8pOwogICB9CiAKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAogICAvLyBSZXR1
cm5zIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IG9iamVjdCB1c2VkIHRvIGtlZXAgdHJh
Y2sgb2YKICAgLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhbmQgaW5zdGFudGlhdGUgYW5k
IHJlZ2lzdGVyIHRoZW0uCiAgIGludGVybmFsOjpQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3Ry
eSYgcGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkgewogICAgIHJldHVybiBwYXJhbWV0ZXJp
emVkX3Rlc3RfcmVnaXN0cnlfOwogICB9Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNU
CiAKICAgLy8gU2V0cyB0aGUgVGVzdENhc2Ugb2JqZWN0IGZvciB0aGUgdGVzdCB0aGF0J3MgY3Vy
cmVudGx5IHJ1bm5pbmcuCiAgIHZvaWQgc2V0X2N1cnJlbnRfdGVzdF9jYXNlKFRlc3RDYXNlKiBh
X2N1cnJlbnRfdGVzdF9jYXNlKSB7CkBAIC03MzgsMjcgKzY4OSwzNSBAQCBjbGFzcyBHVEVTVF9B
UElfIFVuaXRUZXN0SW1wbCB7CiAgIH0KIAogICAvLyBSZWdpc3RlcnMgYWxsIHBhcmFtZXRlcml6
ZWQgdGVzdHMgZGVmaW5lZCB1c2luZyBURVNUX1AgYW5kCi0gIC8vIElOU1RBTlRJQVRFX1RFU1Rf
UCwgY3JlYXRpbmcgcmVndWxhciB0ZXN0cyBmb3IgZWFjaCB0ZXN0L3BhcmFtZXRlcgotICAvLyBj
b21iaW5hdGlvbi4gVGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCBtb3JlIHRoZW4gb25jZTsgaXQg
aGFzCi0gIC8vIGd1YXJkcyBwcm90ZWN0aW5nIGZyb20gcmVnaXN0ZXJpbmcgdGhlIHRlc3RzIG1v
cmUgdGhlbiBvbmNlLgotICAvLyBJZiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBkaXNh
YmxlZCwgUmVnaXN0ZXJQYXJhbWV0ZXJpemVkVGVzdHMKLSAgLy8gaXMgcHJlc2VudCBidXQgZG9l
cyBub3RoaW5nLgorICAvLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUCwgY3JlYXRpbmcgcmVndWxh
ciB0ZXN0cyBmb3IgZWFjaCB0ZXN0L3BhcmFtZXRlcgorICAvLyBjb21iaW5hdGlvbi4gVGhpcyBt
ZXRob2QgY2FuIGJlIGNhbGxlZCBtb3JlIHRoZW4gb25jZTsgaXQgaGFzIGd1YXJkcworICAvLyBw
cm90ZWN0aW5nIGZyb20gcmVnaXN0ZXJpbmcgdGhlIHRlc3RzIG1vcmUgdGhlbiBvbmNlLiAgSWYK
KyAgLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZGlzYWJsZWQsIFJlZ2lzdGVyUGFy
YW1ldGVyaXplZFRlc3RzIGlzCisgIC8vIHByZXNlbnQgYnV0IGRvZXMgbm90aGluZy4KICAgdm9p
ZCBSZWdpc3RlclBhcmFtZXRlcml6ZWRUZXN0cygpOwogCiAgIC8vIFJ1bnMgYWxsIHRlc3RzIGlu
IHRoaXMgVW5pdFRlc3Qgb2JqZWN0LCBwcmludHMgdGhlIHJlc3VsdCwgYW5kCi0gIC8vIHJldHVy
bnMgMCBpZiBhbGwgdGVzdHMgYXJlIHN1Y2Nlc3NmdWwsIG9yIDEgb3RoZXJ3aXNlLiAgSWYgYW55
Ci0gIC8vIGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIGEgdGVzdCBvbiBXaW5kb3dzLCB0aGlz
IHRlc3QgaXMKLSAgLy8gY29uc2lkZXJlZCB0byBiZSBmYWlsZWQsIGJ1dCB0aGUgcmVzdCBvZiB0
aGUgdGVzdHMgd2lsbCBzdGlsbCBiZQotICAvLyBydW4uICAoV2UgZGlzYWJsZSBleGNlcHRpb25z
IG9uIExpbnV4IGFuZCBNYWMgT1MgWCwgc28gdGhlIGlzc3VlCi0gIC8vIGRvZXNuJ3QgYXBwbHkg
dGhlcmUuKQotICBpbnQgUnVuQWxsVGVzdHMoKTsKLQotICAvLyBDbGVhcnMgdGhlIHJlc3VsdHMg
b2YgYWxsIHRlc3RzLCBpbmNsdWRpbmcgdGhlIGFkIGhvYyB0ZXN0LgotICB2b2lkIENsZWFyUmVz
dWx0KCkgeworICAvLyByZXR1cm5zIHRydWUgaWYgYWxsIHRlc3RzIGFyZSBzdWNjZXNzZnVsLiAg
SWYgYW55IGV4Y2VwdGlvbiBpcworICAvLyB0aHJvd24gZHVyaW5nIGEgdGVzdCwgdGhpcyB0ZXN0
IGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFpbGVkLCBidXQKKyAgLy8gdGhlIHJlc3Qgb2YgdGhlIHRl
c3RzIHdpbGwgc3RpbGwgYmUgcnVuLgorICBib29sIFJ1bkFsbFRlc3RzKCk7CisKKyAgLy8gQ2xl
YXJzIHRoZSByZXN1bHRzIG9mIGFsbCB0ZXN0cywgZXhjZXB0IHRoZSBhZCBob2MgdGVzdHMuCisg
IHZvaWQgQ2xlYXJOb25BZEhvY1Rlc3RSZXN1bHQoKSB7CiAgICAgRm9yRWFjaCh0ZXN0X2Nhc2Vz
XywgVGVzdENhc2U6OkNsZWFyVGVzdENhc2VSZXN1bHQpOworICB9CisKKyAgLy8gQ2xlYXJzIHRo
ZSByZXN1bHRzIG9mIGFkLWhvYyB0ZXN0IGFzc2VydGlvbnMuCisgIHZvaWQgQ2xlYXJBZEhvY1Rl
c3RSZXN1bHQoKSB7CiAgICAgYWRfaG9jX3Rlc3RfcmVzdWx0Xy5DbGVhcigpOwogICB9CiAKKyAg
Ly8gQWRkcyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUgY3VycmVudCBUZXN0UmVzdWx0IG9iamVjdCB3
aGVuIGludm9rZWQgaW4gYQorICAvLyBjb250ZXh0IG9mIGEgdGVzdCBvciBhIHRlc3QgY2FzZSwg
b3IgdG8gdGhlIGdsb2JhbCBwcm9wZXJ0eSBzZXQuIElmIHRoZQorICAvLyByZXN1bHQgYWxyZWFk
eSBjb250YWlucyBhIHByb3BlcnR5IHdpdGggdGhlIHNhbWUga2V5LCB0aGUgdmFsdWUgd2lsbCBi
ZQorICAvLyB1cGRhdGVkLgorICB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0IFRlc3RQcm9wZXJ0
eSYgdGVzdF9wcm9wZXJ0eSk7CisKICAgZW51bSBSZWFjdGlvblRvU2hhcmRpbmcgewogICAgIEhP
Tk9SX1NIQVJESU5HX1BST1RPQ09MLAogICAgIElHTk9SRV9TSEFSRElOR19QUk9UT0NPTApAQCAt
ODE3LDYgKzc3NiwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vIFVu
aXRUZXN0T3B0aW9ucy4gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBJbml0R29vZ2xlVGVzdC4K
ICAgdm9pZCBDb25maWd1cmVYbWxPdXRwdXQoKTsKIAorI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVT
VUxUU18KKyAgLy8gSW5pdGlhbGl6ZXMgdGhlIGV2ZW50IGxpc3RlbmVyIGZvciBzdHJlYW1pbmcg
dGVzdCByZXN1bHRzIHRvIGEgc29ja2V0LgorICAvLyBNdXN0IG5vdCBiZSBjYWxsZWQgYmVmb3Jl
IEluaXRHb29nbGVUZXN0LgorICB2b2lkIENvbmZpZ3VyZVN0cmVhbWluZ091dHB1dCgpOworI2Vu
ZGlmCisKICAgLy8gUGVyZm9ybXMgaW5pdGlhbGl6YXRpb24gZGVwZW5kZW50IHVwb24gZmxhZyB2
YWx1ZXMgb2J0YWluZWQgaW4KICAgLy8gUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5LiAgSXMgY2Fs
bGVkIGZyb20gSW5pdEdvb2dsZVRlc3QgYWZ0ZXIgdGhlIGNhbGwgdG8KICAgLy8gUGFyc2VHb29n
bGVUZXN0RmxhZ3NPbmx5LiAgSW4gY2FzZSBhIHVzZXIgbmVnbGVjdHMgdG8gY2FsbCBJbml0R29v
Z2xlVGVzdApAQCAtODM3LDkgKzgwMiwxNyBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0SW1w
bCB7CiAgIC8vIFJlc3RvcmVzIHRoZSB0ZXN0IGNhc2VzIGFuZCB0ZXN0cyB0byB0aGVpciBvcmRl
ciBiZWZvcmUgdGhlIGZpcnN0IHNodWZmbGUuCiAgIHZvaWQgVW5zaHVmZmxlVGVzdHMoKTsKIAor
ICAvLyBSZXR1cm5zIHRoZSB2YWx1ZSBvZiBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpIGF0
IHRoZSBtb21lbnQKKyAgLy8gVW5pdFRlc3Q6OlJ1bigpIHN0YXJ0cy4KKyAgYm9vbCBjYXRjaF9l
eGNlcHRpb25zKCkgY29uc3QgeyByZXR1cm4gY2F0Y2hfZXhjZXB0aW9uc187IH0KKwogIHByaXZh
dGU6CiAgIGZyaWVuZCBjbGFzcyA6OnRlc3Rpbmc6OlVuaXRUZXN0OwogCisgIC8vIFVzZWQgYnkg
VW5pdFRlc3Q6OlJ1bigpIHRvIGNhcHR1cmUgdGhlIHN0YXRlIG9mCisgIC8vIEdURVNUX0ZMQUco
Y2F0Y2hfZXhjZXB0aW9ucykgYXQgdGhlIG1vbWVudCBpdCBzdGFydHMuCisgIHZvaWQgc2V0X2Nh
dGNoX2V4Y2VwdGlvbnMoYm9vbCB2YWx1ZSkgeyBjYXRjaF9leGNlcHRpb25zXyA9IHZhbHVlOyB9
CisKICAgLy8gVGhlIFVuaXRUZXN0IG9iamVjdCB0aGF0IG93bnMgdGhpcyBpbXBsZW1lbnRhdGlv
biBvYmplY3QuCiAgIFVuaXRUZXN0KiBjb25zdCBwYXJlbnRfOwogCkBAIC04NzYsMTQgKzg0OSwx
MiBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vIHNodWZmbGVkIG9yZGVy
LgogICBzdGQ6OnZlY3RvcjxpbnQ+IHRlc3RfY2FzZV9pbmRpY2VzXzsKIAotI2lmIEdURVNUX0hB
U19QQVJBTV9URVNUCiAgIC8vIFBhcmFtZXRlcml6ZWRUZXN0UmVnaXN0cnkgb2JqZWN0IHVzZWQg
dG8gcmVnaXN0ZXIgdmFsdWUtcGFyYW1ldGVyaXplZAogICAvLyB0ZXN0cy4KICAgaW50ZXJuYWw6
OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3Ry
eV87CiAKICAgLy8gSW5kaWNhdGVzIHdoZXRoZXIgUmVnaXN0ZXJQYXJhbWV0ZXJpemVkVGVzdHMo
KSBoYXMgYmVlbiBjYWxsZWQgYWxyZWFkeS4KICAgYm9vbCBwYXJhbWV0ZXJpemVkX3Rlc3RzX3Jl
Z2lzdGVyZWRfOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogCiAgIC8vIEluZGV4
IG9mIHRoZSBsYXN0IGRlYXRoIHRlc3QgY2FzZSByZWdpc3RlcmVkLiAgSW5pdGlhbGx5IC0xLgog
ICBpbnQgbGFzdF9kZWF0aF90ZXN0X2Nhc2VfOwpAQCAtOTI5LDYgKzkwMCwxMCBAQCBjbGFzcyBH
VEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vIE91ciByYW5kb20gbnVtYmVyIGdlbmVyYXRv
ci4KICAgaW50ZXJuYWw6OlJhbmRvbSByYW5kb21fOwogCisgIC8vIFRoZSB0aW1lIG9mIHRoZSB0
ZXN0IHByb2dyYW0gc3RhcnQsIGluIG1zIGZyb20gdGhlIHN0YXJ0IG9mIHRoZQorICAvLyBVTklY
IGVwb2NoLgorICBUaW1lSW5NaWxsaXMgc3RhcnRfdGltZXN0YW1wXzsKKwogICAvLyBIb3cgbG9u
ZyB0aGUgdGVzdCB0b29rIHRvIHJ1biwgaW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5NaWxsaXMg
ZWxhcHNlZF90aW1lXzsKIApAQCAtOTQyLDYgKzkxNywxMCBAQCBjbGFzcyBHVEVTVF9BUElfIFVu
aXRUZXN0SW1wbCB7CiAgIC8vIEEgcGVyLXRocmVhZCBzdGFjayBvZiB0cmFjZXMgY3JlYXRlZCBi
eSB0aGUgU0NPUEVEX1RSQUNFKCkgbWFjcm8uCiAgIGludGVybmFsOjpUaHJlYWRMb2NhbDxzdGQ6
OnZlY3RvcjxUcmFjZUluZm8+ID4gZ3Rlc3RfdHJhY2Vfc3RhY2tfOwogCisgIC8vIFRoZSB2YWx1
ZSBvZiBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpIGF0IHRoZSBtb21lbnQgUnVuQWxsVGVz
dHMoKQorICAvLyBzdGFydHMuCisgIGJvb2wgY2F0Y2hfZXhjZXB0aW9uc187CisKICAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhVbml0VGVzdEltcGwpOwogfTsgIC8vIGNsYXNzIFVu
aXRUZXN0SW1wbAogCkBAIC05NTEsMTQgKzkzMCwxNiBAQCBpbmxpbmUgVW5pdFRlc3RJbXBsKiBH
ZXRVbml0VGVzdEltcGwoKSB7CiAgIHJldHVybiBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+aW1w
bCgpOwogfQogCisjaWYgR1RFU1RfVVNFU19TSU1QTEVfUkUKKwogLy8gSW50ZXJuYWwgaGVscGVy
IGZ1bmN0aW9ucyBmb3IgaW1wbGVtZW50aW5nIHRoZSBzaW1wbGUgcmVndWxhcgogLy8gZXhwcmVz
c2lvbiBtYXRjaGVyLgogR1RFU1RfQVBJXyBib29sIElzSW5TZXQoY2hhciBjaCwgY29uc3QgY2hh
ciogc3RyKTsKLUdURVNUX0FQSV8gYm9vbCBJc0RpZ2l0KGNoYXIgY2gpOwotR1RFU1RfQVBJXyBi
b29sIElzUHVuY3QoY2hhciBjaCk7CitHVEVTVF9BUElfIGJvb2wgSXNBc2NpaURpZ2l0KGNoYXIg
Y2gpOworR1RFU1RfQVBJXyBib29sIElzQXNjaWlQdW5jdChjaGFyIGNoKTsKIEdURVNUX0FQSV8g
Ym9vbCBJc1JlcGVhdChjaGFyIGNoKTsKLUdURVNUX0FQSV8gYm9vbCBJc1doaXRlU3BhY2UoY2hh
ciBjaCk7Ci1HVEVTVF9BUElfIGJvb2wgSXNXb3JkQ2hhcihjaGFyIGNoKTsKK0dURVNUX0FQSV8g
Ym9vbCBJc0FzY2lpV2hpdGVTcGFjZShjaGFyIGNoKTsKK0dURVNUX0FQSV8gYm9vbCBJc0FzY2lp
V29yZENoYXIoY2hhciBjaCk7CiBHVEVTVF9BUElfIGJvb2wgSXNWYWxpZEVzY2FwZShjaGFyIGNo
KTsKIEdURVNUX0FQSV8gYm9vbCBBdG9tTWF0Y2hlc0NoYXIoYm9vbCBlc2NhcGVkLCBjaGFyIHBh
dHRlcm4sIGNoYXIgY2gpOwogR1RFU1RfQVBJXyBib29sIFZhbGlkYXRlUmVnZXgoY29uc3QgY2hh
ciogcmVnZXgpOwpAQCAtOTY3LDYgKzk0OCw4IEBAIEdURVNUX0FQSV8gYm9vbCBNYXRjaFJlcGV0
aXRpb25BbmRSZWdleEF0SGVhZCgKICAgICBib29sIGVzY2FwZWQsIGNoYXIgY2gsIGNoYXIgcmVw
ZWF0LCBjb25zdCBjaGFyKiByZWdleCwgY29uc3QgY2hhciogc3RyKTsKIEdURVNUX0FQSV8gYm9v
bCBNYXRjaFJlZ2V4QW55d2hlcmUoY29uc3QgY2hhciogcmVnZXgsIGNvbnN0IGNoYXIqIHN0cik7
CiAKKyNlbmRpZiAgLy8gR1RFU1RfVVNFU19TSU1QTEVfUkUKKwogLy8gUGFyc2VzIHRoZSBjb21t
YW5kIGxpbmUgZm9yIEdvb2dsZSBUZXN0IGZsYWdzLCB3aXRob3V0IGluaXRpYWxpemluZwogLy8g
b3RoZXIgcGFydHMgb2YgR29vZ2xlIFRlc3QuCiBHVEVTVF9BUElfIHZvaWQgUGFyc2VHb29nbGVU
ZXN0RmxhZ3NPbmx5KGludCogYXJnYywgY2hhcioqIGFyZ3YpOwpAQCAtOTc2LDMzICs5NTksNyBA
QCBHVEVTVF9BUElfIHZvaWQgUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5KGludCogYXJnYywgd2No
YXJfdCoqIGFyZ3YpOwogCiAvLyBSZXR1cm5zIHRoZSBtZXNzYWdlIGRlc2NyaWJpbmcgdGhlIGxh
c3Qgc3lzdGVtIGVycm9yLCByZWdhcmRsZXNzIG9mIHRoZQogLy8gcGxhdGZvcm0uCi1TdHJpbmcg
R2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKTsKLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLS8vIFBy
b3ZpZGVzIGxlYWstc2FmZSBXaW5kb3dzIGtlcm5lbCBoYW5kbGUgb3duZXJzaGlwLgotY2xhc3Mg
QXV0b0hhbmRsZSB7Ci0gcHVibGljOgotICBBdXRvSGFuZGxlKCkgOiBoYW5kbGVfKElOVkFMSURf
SEFORExFX1ZBTFVFKSB7fQotICBleHBsaWNpdCBBdXRvSGFuZGxlKEhBTkRMRSBoYW5kbGUpIDog
aGFuZGxlXyhoYW5kbGUpIHt9Ci0KLSAgfkF1dG9IYW5kbGUoKSB7IFJlc2V0KCk7IH0KLQotICBI
QU5ETEUgR2V0KCkgY29uc3QgeyByZXR1cm4gaGFuZGxlXzsgfQotICB2b2lkIFJlc2V0KCkgeyBS
ZXNldChJTlZBTElEX0hBTkRMRV9WQUxVRSk7IH0KLSAgdm9pZCBSZXNldChIQU5ETEUgaGFuZGxl
KSB7Ci0gICAgaWYgKGhhbmRsZSAhPSBoYW5kbGVfKSB7Ci0gICAgICBpZiAoaGFuZGxlXyAhPSBJ
TlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgOjpDbG9zZUhhbmRsZShoYW5kbGVfKTsKLSAg
ICAgIGhhbmRsZV8gPSBoYW5kbGU7Ci0gICAgfQotICB9Ci0KLSBwcml2YXRlOgotICBIQU5ETEUg
aGFuZGxlXzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEF1dG9IYW5kbGUp
OwotfTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworR1RFU1RfQVBJXyBzdGQ6OnN0cmlu
ZyBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpOwogCiAvLyBBdHRlbXB0cyB0byBwYXJzZSBhIHN0
cmluZyBpbnRvIGEgcG9zaXRpdmUgaW50ZWdlciBwb2ludGVkIHRvIGJ5IHRoZQogLy8gbnVtYmVy
IHBhcmFtZXRlci4gIFJldHVybnMgdHJ1ZSBpZiB0aGF0IGlzIHBvc3NpYmxlLgpAQCAtMTAxMyw3
ICs5NzAsNyBAQCBib29sIFBhcnNlTmF0dXJhbE51bWJlcihjb25zdCA6OnN0ZDo6c3RyaW5nJiBz
dHIsIEludGVnZXIqIG51bWJlcikgewogICAvLyBGYWlsIGZhc3QgaWYgdGhlIGdpdmVuIHN0cmlu
ZyBkb2VzIG5vdCBiZWdpbiB3aXRoIGEgZGlnaXQ7CiAgIC8vIHRoaXMgYnlwYXNzZXMgc3RydG9Y
WFgncyAib3B0aW9uYWwgbGVhZGluZyB3aGl0ZXNwYWNlIGFuZCBwbHVzCiAgIC8vIG9yIG1pbnVz
IHNpZ24iIHNlbWFudGljcywgd2hpY2ggYXJlIHVuZGVzaXJhYmxlIGhlcmUuCi0gIGlmIChzdHIu
ZW1wdHkoKSB8fCAhaXNkaWdpdChzdHJbMF0pKSB7CisgIGlmIChzdHIuZW1wdHkoKSB8fCAhSXNE
aWdpdChzdHJbMF0pKSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAgIGVycm5vID0gMDsKQEAg
LTEwMjEsMTcgKzk3OCwyMyBAQCBib29sIFBhcnNlTmF0dXJhbE51bWJlcihjb25zdCA6OnN0ZDo6
c3RyaW5nJiBzdHIsIEludGVnZXIqIG51bWJlcikgewogICBjaGFyKiBlbmQ7CiAgIC8vIEJpZ2dl
c3RDb252ZXJ0aWJsZSBpcyB0aGUgbGFyZ2VzdCBpbnRlZ2VyIHR5cGUgdGhhdCBzeXN0ZW0tcHJv
dmlkZWQKICAgLy8gc3RyaW5nLXRvLW51bWJlciBjb252ZXJzaW9uIHJvdXRpbmVzIGNhbiByZXR1
cm4uCi0jaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhZGVmaW5lZChfX0dOVUNfXykKKworIyBpZiBH
VEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVkKF9fR05VQ19fKQorCiAgIC8vIE1TVkMgYW5kIEMr
KyBCdWlsZGVyIGRlZmluZSBfX2ludDY0IGluc3RlYWQgb2YgdGhlIHN0YW5kYXJkIGxvbmcgbG9u
Zy4KICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IEJpZ2dlc3RDb252ZXJ0aWJsZTsKICAgY29u
c3QgQmlnZ2VzdENvbnZlcnRpYmxlIHBhcnNlZCA9IF9zdHJ0b3VpNjQoc3RyLmNfc3RyKCksICZl
bmQsIDEwKTsKLSNlbHNlCisKKyMgZWxzZQorCiAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25n
IEJpZ2dlc3RDb252ZXJ0aWJsZTsgIC8vIE5PTElOVAogICBjb25zdCBCaWdnZXN0Q29udmVydGli
bGUgcGFyc2VkID0gc3RydG91bGwoc3RyLmNfc3RyKCksICZlbmQsIDEwKTsKLSNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUyAmJiAhZGVmaW5lZChfX0dOVUNfXykKKworIyBlbmRpZiAgLy8gR1RF
U1RfT1NfV0lORE9XUyAmJiAhZGVmaW5lZChfX0dOVUNfXykKKwogICBjb25zdCBib29sIHBhcnNl
X3N1Y2Nlc3MgPSAqZW5kID09ICdcMCcgJiYgZXJybm8gPT0gMDsKIAotICAvLyBUT0RPKHZsYWRs
QGdvb2dsZS5jb20pOiBDb252ZXJ0IHRoaXMgdG8gY29tcGlsZSB0aW1lIGFzc2VydGlvbiB3aGVu
IGl0IGlzCisgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gY29tcGlsZSB0aW1lIGFzc2VydGlv
biB3aGVuIGl0IGlzCiAgIC8vIGF2YWlsYWJsZS4KICAgR1RFU1RfQ0hFQ0tfKHNpemVvZihJbnRl
Z2VyKSA8PSBzaXplb2YocGFyc2VkKSk7CiAKQEAgLTEwNTMsOCArMTAxNiw5IEBAIGJvb2wgUGFy
c2VOYXR1cmFsTnVtYmVyKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgSW50ZWdlciogbnVtYmVy
KSB7CiBjbGFzcyBUZXN0UmVzdWx0QWNjZXNzb3IgewogIHB1YmxpYzoKICAgc3RhdGljIHZvaWQg
UmVjb3JkUHJvcGVydHkoVGVzdFJlc3VsdCogdGVzdF9yZXN1bHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB4bWxfZWxlbWVudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFByb3BlcnR5JiBwcm9wZXJ0eSkgewotICAgIHRl
c3RfcmVzdWx0LT5SZWNvcmRQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgdGVzdF9yZXN1bHQtPlJl
Y29yZFByb3BlcnR5KHhtbF9lbGVtZW50LCBwcm9wZXJ0eSk7CiAgIH0KIAogICBzdGF0aWMgdm9p
ZCBDbGVhclRlc3RQYXJ0UmVzdWx0cyhUZXN0UmVzdWx0KiB0ZXN0X3Jlc3VsdCkgewpAQCAtMTA2
Nyw3ICsxMDMxLDE1NyBAQCBjbGFzcyBUZXN0UmVzdWx0QWNjZXNzb3IgewogICB9CiB9OwogCisj
aWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworCisvLyBTdHJlYW1zIHRlc3QgcmVzdWx0cyB0
byB0aGUgZ2l2ZW4gcG9ydCBvbiB0aGUgZ2l2ZW4gaG9zdCBtYWNoaW5lLgorY2xhc3MgU3RyZWFt
aW5nTGlzdGVuZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CisgcHVibGljOgor
ICAvLyBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB3cml0aW5nIHN0cmluZ3MgdG8gYSBzb2NrZXQu
CisgIGNsYXNzIEFic3RyYWN0U29ja2V0V3JpdGVyIHsKKyAgIHB1YmxpYzoKKyAgICB2aXJ0dWFs
IH5BYnN0cmFjdFNvY2tldFdyaXRlcigpIHt9CisKKyAgICAvLyBTZW5kcyBhIHN0cmluZyB0byB0
aGUgc29ja2V0LgorICAgIHZpcnR1YWwgdm9pZCBTZW5kKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNz
YWdlKSA9IDA7CisKKyAgICAvLyBDbG9zZXMgdGhlIHNvY2tldC4KKyAgICB2aXJ0dWFsIHZvaWQg
Q2xvc2VDb25uZWN0aW9uKCkge30KKworICAgIC8vIFNlbmRzIGEgc3RyaW5nIGFuZCBhIG5ld2xp
bmUgdG8gdGhlIHNvY2tldC4KKyAgICB2b2lkIFNlbmRMbihjb25zdCBzdGQ6OnN0cmluZyYgbWVz
c2FnZSkgeyBTZW5kKG1lc3NhZ2UgKyAiXG4iKTsgfQorICB9OworCisgIC8vIENvbmNyZXRlIGNs
YXNzIGZvciBhY3R1YWxseSB3cml0aW5nIHN0cmluZ3MgdG8gYSBzb2NrZXQuCisgIGNsYXNzIFNv
Y2tldFdyaXRlciA6IHB1YmxpYyBBYnN0cmFjdFNvY2tldFdyaXRlciB7CisgICBwdWJsaWM6Cisg
ICAgU29ja2V0V3JpdGVyKGNvbnN0IHN0ZDo6c3RyaW5nJiBob3N0LCBjb25zdCBzdGQ6OnN0cmlu
ZyYgcG9ydCkKKyAgICAgICAgOiBzb2NrZmRfKC0xKSwgaG9zdF9uYW1lXyhob3N0KSwgcG9ydF9u
dW1fKHBvcnQpIHsKKyAgICAgIE1ha2VDb25uZWN0aW9uKCk7CisgICAgfQorCisgICAgdmlydHVh
bCB+U29ja2V0V3JpdGVyKCkgeworICAgICAgaWYgKHNvY2tmZF8gIT0gLTEpCisgICAgICAgIENs
b3NlQ29ubmVjdGlvbigpOworICAgIH0KKworICAgIC8vIFNlbmRzIGEgc3RyaW5nIHRvIHRoZSBz
b2NrZXQuCisgICAgdmlydHVhbCB2b2lkIFNlbmQoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2Up
IHsKKyAgICAgIEdURVNUX0NIRUNLXyhzb2NrZmRfICE9IC0xKQorICAgICAgICAgIDw8ICJTZW5k
KCkgY2FuIGJlIGNhbGxlZCBvbmx5IHdoZW4gdGhlcmUgaXMgYSBjb25uZWN0aW9uLiI7CisKKyAg
ICAgIGNvbnN0IGludCBsZW4gPSBzdGF0aWNfY2FzdDxpbnQ+KG1lc3NhZ2UubGVuZ3RoKCkpOwor
ICAgICAgaWYgKHdyaXRlKHNvY2tmZF8sIG1lc3NhZ2UuY19zdHIoKSwgbGVuKSAhPSBsZW4pIHsK
KyAgICAgICAgR1RFU1RfTE9HXyhXQVJOSU5HKQorICAgICAgICAgICAgPDwgInN0cmVhbV9yZXN1
bHRfdG86IGZhaWxlZCB0byBzdHJlYW0gdG8gIgorICAgICAgICAgICAgPDwgaG9zdF9uYW1lXyA8
PCAiOiIgPDwgcG9ydF9udW1fOworICAgICAgfQorICAgIH0KKworICAgcHJpdmF0ZToKKyAgICAv
LyBDcmVhdGVzIGEgY2xpZW50IHNvY2tldCBhbmQgY29ubmVjdHMgdG8gdGhlIHNlcnZlci4KKyAg
ICB2b2lkIE1ha2VDb25uZWN0aW9uKCk7CisKKyAgICAvLyBDbG9zZXMgdGhlIHNvY2tldC4KKyAg
ICB2b2lkIENsb3NlQ29ubmVjdGlvbigpIHsKKyAgICAgIEdURVNUX0NIRUNLXyhzb2NrZmRfICE9
IC0xKQorICAgICAgICAgIDw8ICJDbG9zZUNvbm5lY3Rpb24oKSBjYW4gYmUgY2FsbGVkIG9ubHkg
d2hlbiB0aGVyZSBpcyBhIGNvbm5lY3Rpb24uIjsKKworICAgICAgY2xvc2Uoc29ja2ZkXyk7Cisg
ICAgICBzb2NrZmRfID0gLTE7CisgICAgfQorCisgICAgaW50IHNvY2tmZF87ICAvLyBzb2NrZXQg
ZmlsZSBkZXNjcmlwdG9yCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgaG9zdF9uYW1lXzsKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyBwb3J0X251bV87CisKKyAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FO
RF9BU1NJR05fKFNvY2tldFdyaXRlcik7CisgIH07ICAvLyBjbGFzcyBTb2NrZXRXcml0ZXIKKwor
ICAvLyBFc2NhcGVzICc9JywgJyYnLCAnJScsIGFuZCAnXG4nIGNoYXJhY3RlcnMgaW4gc3RyIGFz
ICIleHgiLgorICBzdGF0aWMgc3RkOjpzdHJpbmcgVXJsRW5jb2RlKGNvbnN0IGNoYXIqIHN0cik7
CisKKyAgU3RyZWFtaW5nTGlzdGVuZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGhvc3QsIGNvbnN0IHN0
ZDo6c3RyaW5nJiBwb3J0KQorICAgICAgOiBzb2NrZXRfd3JpdGVyXyhuZXcgU29ja2V0V3JpdGVy
KGhvc3QsIHBvcnQpKSB7CisgICAgU3RhcnQoKTsKKyAgfQorCisgIGV4cGxpY2l0IFN0cmVhbWlu
Z0xpc3RlbmVyKEFic3RyYWN0U29ja2V0V3JpdGVyKiBzb2NrZXRfd3JpdGVyKQorICAgICAgOiBz
b2NrZXRfd3JpdGVyXyhzb2NrZXRfd3JpdGVyKSB7IFN0YXJ0KCk7IH0KKworICB2b2lkIE9uVGVz
dFByb2dyYW1TdGFydChjb25zdCBVbml0VGVzdCYgLyogdW5pdF90ZXN0ICovKSB7CisgICAgU2Vu
ZExuKCJldmVudD1UZXN0UHJvZ3JhbVN0YXJ0Iik7CisgIH0KKworICB2b2lkIE9uVGVzdFByb2dy
YW1FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCkgeworICAgIC8vIE5vdGUgdGhhdCBHb29n
bGUgVGVzdCBjdXJyZW50IG9ubHkgcmVwb3J0IGVsYXBzZWQgdGltZSBmb3IgZWFjaAorICAgIC8v
IHRlc3QgaXRlcmF0aW9uLCBub3QgZm9yIHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFtLgorICAgIFNl
bmRMbigiZXZlbnQ9VGVzdFByb2dyYW1FbmQmcGFzc2VkPSIgKyBGb3JtYXRCb29sKHVuaXRfdGVz
dC5QYXNzZWQoKSkpOworCisgICAgLy8gTm90aWZ5IHRoZSBzdHJlYW1pbmcgc2VydmVyIHRvIHN0
b3AuCisgICAgc29ja2V0X3dyaXRlcl8tPkNsb3NlQ29ubmVjdGlvbigpOworICB9CisKKyAgdm9p
ZCBPblRlc3RJdGVyYXRpb25TdGFydChjb25zdCBVbml0VGVzdCYgLyogdW5pdF90ZXN0ICovLCBp
bnQgaXRlcmF0aW9uKSB7CisgICAgU2VuZExuKCJldmVudD1UZXN0SXRlcmF0aW9uU3RhcnQmaXRl
cmF0aW9uPSIgKworICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcoaXRlcmF0aW9uKSk7Cisg
IH0KKworICB2b2lkIE9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0
LCBpbnQgLyogaXRlcmF0aW9uICovKSB7CisgICAgU2VuZExuKCJldmVudD1UZXN0SXRlcmF0aW9u
RW5kJnBhc3NlZD0iICsKKyAgICAgICAgICAgRm9ybWF0Qm9vbCh1bml0X3Rlc3QuUGFzc2VkKCkp
ICsgIiZlbGFwc2VkX3RpbWU9IiArCisgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh1bml0
X3Rlc3QuZWxhcHNlZF90aW1lKCkpICsgIm1zIik7CisgIH0KKworICB2b2lkIE9uVGVzdENhc2VT
dGFydChjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKSB7CisgICAgU2VuZExuKHN0ZDo6c3RyaW5n
KCJldmVudD1UZXN0Q2FzZVN0YXJ0Jm5hbWU9IikgKyB0ZXN0X2Nhc2UubmFtZSgpKTsKKyAgfQor
CisgIHZvaWQgT25UZXN0Q2FzZUVuZChjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKSB7CisgICAg
U2VuZExuKCJldmVudD1UZXN0Q2FzZUVuZCZwYXNzZWQ9IiArIEZvcm1hdEJvb2wodGVzdF9jYXNl
LlBhc3NlZCgpKQorICAgICAgICAgICArICImZWxhcHNlZF90aW1lPSIgKyBTdHJlYW1hYmxlVG9T
dHJpbmcodGVzdF9jYXNlLmVsYXBzZWRfdGltZSgpKQorICAgICAgICAgICArICJtcyIpOworICB9
CisKKyAgdm9pZCBPblRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CisgICAg
U2VuZExuKHN0ZDo6c3RyaW5nKCJldmVudD1UZXN0U3RhcnQmbmFtZT0iKSArIHRlc3RfaW5mby5u
YW1lKCkpOworICB9CisKKyAgdm9pZCBPblRlc3RFbmQoY29uc3QgVGVzdEluZm8mIHRlc3RfaW5m
bykgeworICAgIFNlbmRMbigiZXZlbnQ9VGVzdEVuZCZwYXNzZWQ9IiArCisgICAgICAgICAgIEZv
cm1hdEJvb2woKHRlc3RfaW5mby5yZXN1bHQoKSktPlBhc3NlZCgpKSArCisgICAgICAgICAgICIm
ZWxhcHNlZF90aW1lPSIgKworICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcoKHRlc3RfaW5m
by5yZXN1bHQoKSktPmVsYXBzZWRfdGltZSgpKSArICJtcyIpOworICB9CisKKyAgdm9pZCBPblRl
c3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7Cisg
ICAgY29uc3QgY2hhciogZmlsZV9uYW1lID0gdGVzdF9wYXJ0X3Jlc3VsdC5maWxlX25hbWUoKTsK
KyAgICBpZiAoZmlsZV9uYW1lID09IE5VTEwpCisgICAgICBmaWxlX25hbWUgPSAiIjsKKyAgICBT
ZW5kTG4oImV2ZW50PVRlc3RQYXJ0UmVzdWx0JmZpbGU9IiArIFVybEVuY29kZShmaWxlX25hbWUp
ICsKKyAgICAgICAgICAgIiZsaW5lPSIgKyBTdHJlYW1hYmxlVG9TdHJpbmcodGVzdF9wYXJ0X3Jl
c3VsdC5saW5lX251bWJlcigpKSArCisgICAgICAgICAgICImbWVzc2FnZT0iICsgVXJsRW5jb2Rl
KHRlc3RfcGFydF9yZXN1bHQubWVzc2FnZSgpKSk7CisgIH0KKworIHByaXZhdGU6CisgIC8vIFNl
bmRzIHRoZSBnaXZlbiBtZXNzYWdlIGFuZCBhIG5ld2xpbmUgdG8gdGhlIHNvY2tldC4KKyAgdm9p
ZCBTZW5kTG4oY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsgc29ja2V0X3dyaXRlcl8tPlNl
bmRMbihtZXNzYWdlKTsgfQorCisgIC8vIENhbGxlZCBhdCB0aGUgc3RhcnQgb2Ygc3RyZWFtaW5n
IHRvIG5vdGlmeSB0aGUgcmVjZWl2ZXIgd2hhdAorICAvLyBwcm90b2NvbCB3ZSBhcmUgdXNpbmcu
CisgIHZvaWQgU3RhcnQoKSB7IFNlbmRMbigiZ3Rlc3Rfc3RyZWFtaW5nX3Byb3RvY29sX3ZlcnNp
b249MS4wIik7IH0KKworICBzdGQ6OnN0cmluZyBGb3JtYXRCb29sKGJvb2wgdmFsdWUpIHsgcmV0
dXJuIHZhbHVlID8gIjEiIDogIjAiOyB9CisKKyAgY29uc3Qgc2NvcGVkX3B0cjxBYnN0cmFjdFNv
Y2tldFdyaXRlcj4gc29ja2V0X3dyaXRlcl87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOXyhTdHJlYW1pbmdMaXN0ZW5lcik7Cit9OyAgLy8gY2xhc3MgU3RyZWFtaW5nTGlzdGVu
ZXIKKworI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKIH0gIC8vIG5hbWVz
cGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAorR1RFU1RfRElTQUJMRV9N
U0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQorCiAjZW5kaWYgIC8vIEdURVNUX1NSQ19HVEVT
VF9JTlRFUk5BTF9JTkxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Ny
Yy9ndGVzdC1wb3J0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXBvcnQu
Y2MKaW5kZXggYjk1MDRmNTZhZTZmOTNlMTI2ZDJiNTY4YTdkOTdkYjUxN2ZiODNlNC4uZmVjYjVk
MTFjMjEyOTZhOTE4MWExMTI4MDIyNjA2N2I2NDNlZGQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXBvcnQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc3JjL2d0ZXN0LXBvcnQuY2MKQEAgLTI2LDQyICsyNiw1MiBAQAogLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdv
b2dsZS5jb20gKFpoYW55b25nIFdhbikKIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0
LXBvcnQuaD4KKworI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKIAogI2lu
Y2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+
CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZnN0cmVhbT4KIAotI2lmIEdURVNUX09T
X1dJTkRPV1NfTU9CSUxFCi0jaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gRm9yIFRlcm1pbmF0ZVBy
b2Nlc3MoKQotI2VsaWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1ZGUgPGlvLmg+Ci0jaW5jbHVk
ZSA8c3lzL3N0YXQuaD4KKyNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGluY2x1ZGUgPHdpbmRvd3Mu
aD4KKyMgaW5jbHVkZSA8aW8uaD4KKyMgaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyMgaW5jbHVkZSA8
bWFwPiAgLy8gVXNlZCBpbiBUaHJlYWRMb2NhbC4KICNlbHNlCi0jaW5jbHVkZSA8dW5pc3RkLmg+
Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGluY2x1ZGUgPHVuaXN0ZC5o
PgorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKICNpZiBHVEVTVF9PU19NQUMKLSNpbmNs
dWRlIDxtYWNoL21hY2hfaW5pdC5oPgotI2luY2x1ZGUgPG1hY2gvdGFzay5oPgotI2luY2x1ZGUg
PG1hY2gvdm1fbWFwLmg+CisjIGluY2x1ZGUgPG1hY2gvbWFjaF9pbml0Lmg+CisjIGluY2x1ZGUg
PG1hY2gvdGFzay5oPgorIyBpbmNsdWRlIDxtYWNoL3ZtX21hcC5oPgogI2VuZGlmICAvLyBHVEVT
VF9PU19NQUMKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0LW1lc3NhZ2UuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcu
aD4KLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2Yg
R29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0
ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNv
bXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBh
Y2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29k
ZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKKyNpZiBHVEVTVF9PU19RTlgKKyMg
aW5jbHVkZSA8ZGV2Y3RsLmg+CisjIGluY2x1ZGUgPGZjbnRsLmg+CisjIGluY2x1ZGUgPHN5cy9w
cm9jZnMuaD4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfUU5YCisKKyNpZiBHVEVTVF9PU19BSVgKKyMg
aW5jbHVkZSA8cHJvY2luZm8uaD4KKyMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYgIC8v
IEdURVNUX09TX0FJWAorCisjaWYgR1RFU1RfT1NfRlVDSFNJQQorIyBpbmNsdWRlIDx6aXJjb24v
cHJvY2Vzcy5oPgorIyBpbmNsdWRlIDx6aXJjb24vc3lzY2FsbHMuaD4KKyNlbmRpZiAgLy8gR1RF
U1RfT1NfRlVDSFNJQQorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWlu
dGVybmFsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgiCiAjaW5j
bHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFU
SU9OXwogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewpAQCAtNzUs
MTAgKzg1LDMxIEBAIGNvbnN0IGludCBrU3RkT3V0RmlsZW5vID0gU1RET1VUX0ZJTEVOTzsKIGNv
bnN0IGludCBrU3RkRXJyRmlsZW5vID0gU1RERVJSX0ZJTEVOTzsKICNlbmRpZiAgLy8gX01TQ19W
RVIKIAotI2lmIEdURVNUX09TX01BQworI2lmIEdURVNUX09TX0xJTlVYCisKK25hbWVzcGFjZSB7
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1QgUmVhZFByb2NGaWxlRmllbGQoY29uc3Qgc3RkOjpz
dHJpbmcmIGZpbGVuYW1lLCBpbnQgZmllbGQpIHsKKyAgc3RkOjpzdHJpbmcgZHVtbXk7CisgIHN0
ZDo6aWZzdHJlYW0gZmlsZShmaWxlbmFtZS5jX3N0cigpKTsKKyAgd2hpbGUgKGZpZWxkLS0gPiAw
KSB7CisgICAgZmlsZSA+PiBkdW1teTsKKyAgfQorICBUIG91dHB1dCA9IDA7CisgIGZpbGUgPj4g
b3V0cHV0OworICByZXR1cm4gb3V0cHV0OworfQorfSAgLy8gbmFtZXNwYWNlCisKKy8vIFJldHVy
bnMgdGhlIG51bWJlciBvZiBhY3RpdmUgdGhyZWFkcywgb3IgMCB3aGVuIHRoZXJlIGlzIGFuIGVy
cm9yLgorc2l6ZV90IEdldFRocmVhZENvdW50KCkgeworICBjb25zdCBzdGQ6OnN0cmluZyBmaWxl
bmFtZSA9CisgICAgICAoTWVzc2FnZSgpIDw8ICIvcHJvYy8iIDw8IGdldHBpZCgpIDw8ICIvc3Rh
dCIpLkdldFN0cmluZygpOworICByZXR1cm4gUmVhZFByb2NGaWxlRmllbGQ8aW50PihmaWxlbmFt
ZSwgMTkpOworfQorCisjZWxpZiBHVEVTVF9PU19NQUMKIAotLy8gUmV0dXJucyB0aGUgbnVtYmVy
IG9mIHRocmVhZHMgcnVubmluZyBpbiB0aGUgcHJvY2Vzcywgb3IgMCB0byBpbmRpY2F0ZSB0aGF0
Ci0vLyB3ZSBjYW5ub3QgZGV0ZWN0IGl0Lgogc2l6ZV90IEdldFRocmVhZENvdW50KCkgewogICBj
b25zdCB0YXNrX3QgdGFzayA9IG1hY2hfdGFza19zZWxmKCk7CiAgIG1hY2hfbXNnX3R5cGVfbnVt
YmVyX3QgdGhyZWFkX2NvdW50OwpAQCAtOTYsNiArMTI3LDU4IEBAIHNpemVfdCBHZXRUaHJlYWRD
b3VudCgpIHsKICAgfQogfQogCisjZWxpZiBHVEVTVF9PU19RTlgKKworLy8gUmV0dXJucyB0aGUg
bnVtYmVyIG9mIHRocmVhZHMgcnVubmluZyBpbiB0aGUgcHJvY2Vzcywgb3IgMCB0byBpbmRpY2F0
ZSB0aGF0CisvLyB3ZSBjYW5ub3QgZGV0ZWN0IGl0Lgorc2l6ZV90IEdldFRocmVhZENvdW50KCkg
eworICBjb25zdCBpbnQgZmQgPSBvcGVuKCIvcHJvYy9zZWxmL2FzIiwgT19SRE9OTFkpOworICBp
ZiAoZmQgPCAwKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKyAgcHJvY2ZzX2luZm8gcHJvY2Vzc19p
bmZvOworICBjb25zdCBpbnQgc3RhdHVzID0KKyAgICAgIGRldmN0bChmZCwgRENNRF9QUk9DX0lO
Rk8sICZwcm9jZXNzX2luZm8sIHNpemVvZihwcm9jZXNzX2luZm8pLCBOVUxMKTsKKyAgY2xvc2Uo
ZmQpOworICBpZiAoc3RhdHVzID09IEVPSykgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHByb2Nlc3NfaW5mby5udW1fdGhyZWFkcyk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIDA7
CisgIH0KK30KKworI2VsaWYgR1RFU1RfT1NfQUlYCisKK3NpemVfdCBHZXRUaHJlYWRDb3VudCgp
IHsKKyAgc3RydWN0IHByb2NlbnRyeTY0IGVudHJ5OworICBwaWRfdCBwaWQgPSBnZXRwaWQoKTsK
KyAgaW50IHN0YXR1cyA9IGdldHByb2NzNjQoJmVudHJ5LCBzaXplb2YoZW50cnkpLCBOVUxMLCAw
LCAmcGlkLCAxKTsKKyAgaWYgKHN0YXR1cyA9PSAxKSB7CisgICAgcmV0dXJuIGVudHJ5LnBpX3Ro
Y291bnQ7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKworI2VsaWYgR1RFU1Rf
T1NfRlVDSFNJQQorCitzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CisgIGludCBkdW1teV9idWZm
ZXI7CisgIHNpemVfdCBhdmFpbDsKKyAgenhfc3RhdHVzX3Qgc3RhdHVzID0genhfb2JqZWN0X2dl
dF9pbmZvKAorICAgICAgenhfcHJvY2Vzc19zZWxmKCksCisgICAgICBaWF9JTkZPX1BST0NFU1Nf
VEhSRUFEUywKKyAgICAgICZkdW1teV9idWZmZXIsCisgICAgICAwLAorICAgICAgbnVsbHB0ciwK
KyAgICAgICZhdmFpbCk7CisgIGlmIChzdGF0dXMgPT0gWlhfT0spIHsKKyAgICByZXR1cm4gYXZh
aWw7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKwogI2Vsc2UKIAogc2l6ZV90
IEdldFRocmVhZENvdW50KCkgewpAQCAtMTA0LDcgKzE4Nyw0MzIgQEAgc2l6ZV90IEdldFRocmVh
ZENvdW50KCkgewogICByZXR1cm4gMDsKIH0KIAotI2VuZGlmICAvLyBHVEVTVF9PU19NQUMKKyNl
bmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKKworI2lmIEdURVNUX0lTX1RIUkVBRFNBRkUgJiYgR1RF
U1RfT1NfV0lORE9XUworCit2b2lkIFNsZWVwTWlsbGlzZWNvbmRzKGludCBuKSB7CisgIDo6U2xl
ZXAobik7Cit9CisKK0F1dG9IYW5kbGU6OkF1dG9IYW5kbGUoKQorICAgIDogaGFuZGxlXyhJTlZB
TElEX0hBTkRMRV9WQUxVRSkge30KKworQXV0b0hhbmRsZTo6QXV0b0hhbmRsZShIYW5kbGUgaGFu
ZGxlKQorICAgIDogaGFuZGxlXyhoYW5kbGUpIHt9CisKK0F1dG9IYW5kbGU6On5BdXRvSGFuZGxl
KCkgeworICBSZXNldCgpOworfQorCitBdXRvSGFuZGxlOjpIYW5kbGUgQXV0b0hhbmRsZTo6R2V0
KCkgY29uc3QgeworICByZXR1cm4gaGFuZGxlXzsKK30KKwordm9pZCBBdXRvSGFuZGxlOjpSZXNl
dCgpIHsKKyAgUmVzZXQoSU5WQUxJRF9IQU5ETEVfVkFMVUUpOworfQorCit2b2lkIEF1dG9IYW5k
bGU6OlJlc2V0KEhBTkRMRSBoYW5kbGUpIHsKKyAgLy8gUmVzZXR0aW5nIHdpdGggdGhlIHNhbWUg
aGFuZGxlIHdlIGFscmVhZHkgb3duIGlzIGludmFsaWQuCisgIGlmIChoYW5kbGVfICE9IGhhbmRs
ZSkgeworICAgIGlmIChJc0Nsb3NlYWJsZSgpKSB7CisgICAgICA6OkNsb3NlSGFuZGxlKGhhbmRs
ZV8pOworICAgIH0KKyAgICBoYW5kbGVfID0gaGFuZGxlOworICB9IGVsc2UgeworICAgIEdURVNU
X0NIRUNLXyghSXNDbG9zZWFibGUoKSkKKyAgICAgICAgPDwgIlJlc2V0dGluZyBhIHZhbGlkIGhh
bmRsZSB0byBpdHNlbGYgaXMgbGlrZWx5IGEgcHJvZ3JhbW1lciBlcnJvciAiCisgICAgICAgICAg
ICAiYW5kIHRodXMgbm90IGFsbG93ZWQuIjsKKyAgfQorfQorCitib29sIEF1dG9IYW5kbGU6Oklz
Q2xvc2VhYmxlKCkgY29uc3QgeworICAvLyBEaWZmZXJlbnQgV2luZG93cyBBUElzIG1heSB1c2Ug
ZWl0aGVyIG9mIHRoZXNlIHZhbHVlcyB0byByZXByZXNlbnQgYW4KKyAgLy8gaW52YWxpZCBoYW5k
bGUuCisgIHJldHVybiBoYW5kbGVfICE9IE5VTEwgJiYgaGFuZGxlXyAhPSBJTlZBTElEX0hBTkRM
RV9WQUxVRTsKK30KKworTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oKQorICAgIDogZXZlbnRf
KDo6Q3JlYXRlRXZlbnQoTlVMTCwgICAvLyBEZWZhdWx0IHNlY3VyaXR5IGF0dHJpYnV0ZXMuCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLCAgIC8vIERvIG5vdCByZXNldCBhdXRvbWF0
aWNhbGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsICAvLyBJbml0aWFsbHkg
dW5zZXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSkgeyAgLy8gQW5vbnltb3Vz
IGV2ZW50LgorICBHVEVTVF9DSEVDS18oZXZlbnRfLkdldCgpICE9IE5VTEwpOworfQorCit2b2lk
IE5vdGlmaWNhdGlvbjo6Tm90aWZ5KCkgeworICBHVEVTVF9DSEVDS18oOjpTZXRFdmVudChldmVu
dF8uR2V0KCkpICE9IEZBTFNFKTsKK30KKwordm9pZCBOb3RpZmljYXRpb246OldhaXRGb3JOb3Rp
ZmljYXRpb24oKSB7CisgIEdURVNUX0NIRUNLXygKKyAgICAgIDo6V2FpdEZvclNpbmdsZU9iamVj
dChldmVudF8uR2V0KCksIElORklOSVRFKSA9PSBXQUlUX09CSkVDVF8wKTsKK30KKworTXV0ZXg6
Ok11dGV4KCkKKyAgICA6IG93bmVyX3RocmVhZF9pZF8oMCksCisgICAgICB0eXBlXyhrRHluYW1p
YyksCisgICAgICBjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhhc2VfKDApLAorICAgICAgY3JpdGlj
YWxfc2VjdGlvbl8obmV3IENSSVRJQ0FMX1NFQ1RJT04pIHsKKyAgOjpJbml0aWFsaXplQ3JpdGlj
YWxTZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb25fKTsKK30KKworTXV0ZXg6On5NdXRleCgpIHsKKyAg
Ly8gU3RhdGljIG11dGV4ZXMgYXJlIGxlYWtlZCBpbnRlbnRpb25hbGx5LiBJdCBpcyBub3QgdGhy
ZWFkLXNhZmUgdG8gdHJ5CisgIC8vIHRvIGNsZWFuIHRoZW0gdXAuCisgIC8vIEZJWE1FOiBTd2l0
Y2ggdG8gU2xpbSBSZWFkZXIvV3JpdGVyIChTUlcpIExvY2tzLCB3aGljaCByZXF1aXJlcworICAv
LyBub3RoaW5nIHRvIGNsZWFuIGl0IHVwIGJ1dCBpcyBhdmFpbGFibGUgb25seSBvbiBWaXN0YSBh
bmQgbGF0ZXIuCisgIC8vIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3Mv
ZGVza3RvcC9TeW5jL3NsaW0tcmVhZGVyLXdyaXRlci0tc3J3LS1sb2NrcworICBpZiAodHlwZV8g
PT0ga0R5bmFtaWMpIHsKKyAgICA6OkRlbGV0ZUNyaXRpY2FsU2VjdGlvbihjcml0aWNhbF9zZWN0
aW9uXyk7CisgICAgZGVsZXRlIGNyaXRpY2FsX3NlY3Rpb25fOworICAgIGNyaXRpY2FsX3NlY3Rp
b25fID0gTlVMTDsKKyAgfQorfQorCit2b2lkIE11dGV4OjpMb2NrKCkgeworICBUaHJlYWRTYWZl
TGF6eUluaXQoKTsKKyAgOjpFbnRlckNyaXRpY2FsU2VjdGlvbihjcml0aWNhbF9zZWN0aW9uXyk7
CisgIG93bmVyX3RocmVhZF9pZF8gPSA6OkdldEN1cnJlbnRUaHJlYWRJZCgpOworfQorCit2b2lk
IE11dGV4OjpVbmxvY2soKSB7CisgIFRocmVhZFNhZmVMYXp5SW5pdCgpOworICAvLyBXZSBkb24n
dCBwcm90ZWN0IHdyaXRpbmcgdG8gb3duZXJfdGhyZWFkX2lkXyBoZXJlLCBhcyBpdCdzIHRoZQor
ICAvLyBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCB0aGUgY3VycmVudCB0
aHJlYWQgaG9sZHMgdGhlCisgIC8vIG11dGV4IHdoZW4gdGhpcyBpcyBjYWxsZWQuCisgIG93bmVy
X3RocmVhZF9pZF8gPSAwOworICA6OkxlYXZlQ3JpdGljYWxTZWN0aW9uKGNyaXRpY2FsX3NlY3Rp
b25fKTsKK30KKworLy8gRG9lcyBub3RoaW5nIGlmIHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0
aGUgbXV0ZXguIE90aGVyd2lzZSwgY3Jhc2hlcworLy8gd2l0aCBoaWdoIHByb2JhYmlsaXR5Lgor
dm9pZCBNdXRleDo6QXNzZXJ0SGVsZCgpIHsKKyAgVGhyZWFkU2FmZUxhenlJbml0KCk7CisgIEdU
RVNUX0NIRUNLXyhvd25lcl90aHJlYWRfaWRfID09IDo6R2V0Q3VycmVudFRocmVhZElkKCkpCisg
ICAgICA8PCAiVGhlIGN1cnJlbnQgdGhyZWFkIGlzIG5vdCBob2xkaW5nIHRoZSBtdXRleCBAIiA8
PCB0aGlzOworfQorCituYW1lc3BhY2UgeworCisvLyBVc2UgdGhlIFJBSUkgaWRpb20gdG8gZmxh
ZyBtZW0gYWxsb2NzIHRoYXQgYXJlIGludGVudGlvbmFsbHkgbmV2ZXIKKy8vIGRlYWxsb2NhdGVk
LiBUaGUgbW90aXZhdGlvbiBpcyB0byBzaWxlbmNlIHRoZSBmYWxzZSBwb3NpdGl2ZSBtZW0gbGVh
a3MKKy8vIHRoYXQgYXJlIHJlcG9ydGVkIGJ5IHRoZSBkZWJ1ZyB2ZXJzaW9uIG9mIE1TJ3MgQ1JU
IHdoaWNoIGNhbiBvbmx5IGRldGVjdAorLy8gaWYgYW4gYWxsb2MgaXMgbWlzc2luZyBhIG1hdGNo
aW5nIGRlYWxsb2NhdGlvbi4KKy8vIEV4YW1wbGU6CisvLyAgICBNZW1vcnlJc05vdERlYWxsb2Nh
dGVkIG1lbW9yeV9pc19ub3RfZGVhbGxvY2F0ZWQ7CisvLyAgICBjcml0aWNhbF9zZWN0aW9uXyA9
IG5ldyBDUklUSUNBTF9TRUNUSU9OOworLy8KK2NsYXNzIE1lbW9yeUlzTm90RGVhbGxvY2F0ZWQK
K3sKKyBwdWJsaWM6CisgIE1lbW9yeUlzTm90RGVhbGxvY2F0ZWQoKSA6IG9sZF9jcnRkYmdfZmxh
Z18oMCkgeworI2lmZGVmIF9NU0NfVkVSCisgICAgb2xkX2NydGRiZ19mbGFnXyA9IF9DcnRTZXRE
YmdGbGFnKF9DUlREQkdfUkVQT1JUX0ZMQUcpOworICAgIC8vIFNldCBoZWFwIGFsbG9jYXRpb24g
YmxvY2sgdHlwZSB0byBfSUdOT1JFX0JMT0NLIHNvIHRoYXQgTVMgZGVidWcgQ1JUCisgICAgLy8g
ZG9lc24ndCByZXBvcnQgbWVtIGxlYWsgaWYgdGhlcmUncyBubyBtYXRjaGluZyBkZWFsbG9jYXRp
b24uCisgICAgX0NydFNldERiZ0ZsYWcob2xkX2NydGRiZ19mbGFnXyAmIH5fQ1JUREJHX0FMTE9D
X01FTV9ERik7CisjZW5kaWYgIC8vICBfTVNDX1ZFUgorICB9CisKKyAgfk1lbW9yeUlzTm90RGVh
bGxvY2F0ZWQoKSB7CisjaWZkZWYgX01TQ19WRVIKKyAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5h
bCBfQ1JUREJHX0FMTE9DX01FTV9ERiBmbGFnCisgICAgX0NydFNldERiZ0ZsYWcob2xkX2NydGRi
Z19mbGFnXyk7CisjZW5kaWYgIC8vICBfTVNDX1ZFUgorICB9CisKKyBwcml2YXRlOgorICBpbnQg
b2xkX2NydGRiZ19mbGFnXzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE1l
bW9yeUlzTm90RGVhbGxvY2F0ZWQpOworfTsKKworfSAgLy8gbmFtZXNwYWNlCisKKy8vIEluaXRp
YWxpemVzIG93bmVyX3RocmVhZF9pZF8gYW5kIGNyaXRpY2FsX3NlY3Rpb25fIGluIHN0YXRpYyBt
dXRleGVzLgordm9pZCBNdXRleDo6VGhyZWFkU2FmZUxhenlJbml0KCkgeworICAvLyBEeW5hbWlj
IG11dGV4ZXMgYXJlIGluaXRpYWxpemVkIGluIHRoZSBjb25zdHJ1Y3Rvci4KKyAgaWYgKHR5cGVf
ID09IGtTdGF0aWMpIHsKKyAgICBzd2l0Y2ggKAorICAgICAgICA6OkludGVybG9ja2VkQ29tcGFy
ZUV4Y2hhbmdlKCZjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhhc2VfLCAxTCwgMEwpKSB7CisgICAg
ICBjYXNlIDA6CisgICAgICAgIC8vIElmIGNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFzZV8gd2Fz
IDAgYmVmb3JlIHRoZSBleGNoYW5nZSwgd2UKKyAgICAgICAgLy8gYXJlIHRoZSBmaXJzdCB0byB0
ZXN0IGl0IGFuZCBuZWVkIHRvIHBlcmZvcm0gdGhlIGluaXRpYWxpemF0aW9uLgorICAgICAgICBv
d25lcl90aHJlYWRfaWRfID0gMDsKKyAgICAgICAgeworICAgICAgICAgIC8vIFVzZSBSQUlJIHRv
IGZsYWcgdGhhdCBmb2xsb3dpbmcgbWVtIGFsbG9jIGlzIG5ldmVyIGRlYWxsb2NhdGVkLgorICAg
ICAgICAgIE1lbW9yeUlzTm90RGVhbGxvY2F0ZWQgbWVtb3J5X2lzX25vdF9kZWFsbG9jYXRlZDsK
KyAgICAgICAgICBjcml0aWNhbF9zZWN0aW9uXyA9IG5ldyBDUklUSUNBTF9TRUNUSU9OOworICAg
ICAgICB9CisgICAgICAgIDo6SW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbihjcml0aWNhbF9zZWN0
aW9uXyk7CisgICAgICAgIC8vIFVwZGF0ZXMgdGhlIGNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFz
ZV8gdG8gMiB0byBzaWduYWwKKyAgICAgICAgLy8gaW5pdGlhbGl6YXRpb24gY29tcGxldGUuCisg
ICAgICAgIEdURVNUX0NIRUNLXyg6OkludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAmY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXywgMkwsIDFM
KSA9PQorICAgICAgICAgICAgICAgICAgICAgIDFMKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIDE6CisgICAgICAgIC8vIFNvbWVib2R5IGVsc2UgaXMgYWxyZWFkeSBpbml0aWFsaXppbmcg
dGhlIG11dGV4OyBzcGluIHVudGlsIHRoZXkKKyAgICAgICAgLy8gYXJlIGRvbmUuCisgICAgICAg
IHdoaWxlICg6OkludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKCZjcml0aWNhbF9zZWN0aW9uX2lu
aXRfcGhhc2VfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
TCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMkwpICE9IDJM
KSB7CisgICAgICAgICAgLy8gUG9zc2libHkgeWllbGRzIHRoZSByZXN0IG9mIHRoZSB0aHJlYWQn
cyB0aW1lIHNsaWNlIHRvIG90aGVyCisgICAgICAgICAgLy8gdGhyZWFkcy4KKyAgICAgICAgICA6
OlNsZWVwKDApOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIDI6Cisg
ICAgICAgIGJyZWFrOyAgLy8gVGhlIG11dGV4IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQgYW5kIHJl
YWR5IGZvciB1c2UuCisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIEdURVNUX0NIRUNLXyhmYWxz
ZSkKKyAgICAgICAgICAgIDw8ICJVbmV4cGVjdGVkIHZhbHVlIG9mIGNyaXRpY2FsX3NlY3Rpb25f
aW5pdF9waGFzZV8gIgorICAgICAgICAgICAgPDwgIndoaWxlIGluaXRpYWxpemluZyBhIHN0YXRp
YyBtdXRleC4iOworICAgIH0KKyAgfQorfQorCituYW1lc3BhY2UgeworCitjbGFzcyBUaHJlYWRX
aXRoUGFyYW1TdXBwb3J0IDogcHVibGljIFRocmVhZFdpdGhQYXJhbUJhc2UgeworIHB1YmxpYzoK
KyAgc3RhdGljIEhBTkRMRSBDcmVhdGVUaHJlYWQoUnVubmFibGUqIHJ1bm5hYmxlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24qIHRocmVhZF9jYW5fc3RhcnQpIHsK
KyAgICBUaHJlYWRNYWluUGFyYW0qIHBhcmFtID0gbmV3IFRocmVhZE1haW5QYXJhbShydW5uYWJs
ZSwgdGhyZWFkX2Nhbl9zdGFydCk7CisgICAgRFdPUkQgdGhyZWFkX2lkOworICAgIC8vIEZJWE1F
OiBDb25zaWRlciB0byB1c2UgX2JlZ2ludGhyZWFkZXggaW5zdGVhZC4KKyAgICBIQU5ETEUgdGhy
ZWFkX2hhbmRsZSA9IDo6Q3JlYXRlVGhyZWFkKAorICAgICAgICBOVUxMLCAgICAvLyBEZWZhdWx0
IHNlY3VyaXR5LgorICAgICAgICAwLCAgICAgICAvLyBEZWZhdWx0IHN0YWNrIHNpemUuCisgICAg
ICAgICZUaHJlYWRXaXRoUGFyYW1TdXBwb3J0OjpUaHJlYWRNYWluLAorICAgICAgICBwYXJhbSwg
ICAvLyBQYXJhbWV0ZXIgdG8gVGhyZWFkTWFpblN0YXRpYworICAgICAgICAweDAsICAgICAvLyBE
ZWZhdWx0IGNyZWF0aW9uIGZsYWdzLgorICAgICAgICAmdGhyZWFkX2lkKTsgIC8vIE5lZWQgYSB2
YWxpZCBwb2ludGVyIGZvciB0aGUgY2FsbCB0byB3b3JrIHVuZGVyIFdpbjk4LgorICAgIEdURVNU
X0NIRUNLXyh0aHJlYWRfaGFuZGxlICE9IE5VTEwpIDw8ICJDcmVhdGVUaHJlYWQgZmFpbGVkIHdp
dGggZXJyb3IgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDo6
R2V0TGFzdEVycm9yKCkgPDwgIi4iOworICAgIGlmICh0aHJlYWRfaGFuZGxlID09IE5VTEwpIHsK
KyAgICAgIGRlbGV0ZSBwYXJhbTsKKyAgICB9CisgICAgcmV0dXJuIHRocmVhZF9oYW5kbGU7Cisg
IH0KKworIHByaXZhdGU6CisgIHN0cnVjdCBUaHJlYWRNYWluUGFyYW0geworICAgIFRocmVhZE1h
aW5QYXJhbShSdW5uYWJsZSogcnVubmFibGUsIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFy
dCkKKyAgICAgICAgOiBydW5uYWJsZV8ocnVubmFibGUpLAorICAgICAgICAgIHRocmVhZF9jYW5f
c3RhcnRfKHRocmVhZF9jYW5fc3RhcnQpIHsKKyAgICB9CisgICAgc2NvcGVkX3B0cjxSdW5uYWJs
ZT4gcnVubmFibGVfOworICAgIC8vIERvZXMgbm90IG93bi4KKyAgICBOb3RpZmljYXRpb24qIHRo
cmVhZF9jYW5fc3RhcnRfOworICB9OworCisgIHN0YXRpYyBEV09SRCBXSU5BUEkgVGhyZWFkTWFp
bih2b2lkKiBwdHIpIHsKKyAgICAvLyBUcmFuc2ZlcnMgb3duZXJzaGlwLgorICAgIHNjb3BlZF9w
dHI8VGhyZWFkTWFpblBhcmFtPiBwYXJhbShzdGF0aWNfY2FzdDxUaHJlYWRNYWluUGFyYW0qPihw
dHIpKTsKKyAgICBpZiAocGFyYW0tPnRocmVhZF9jYW5fc3RhcnRfICE9IE5VTEwpCisgICAgICBw
YXJhbS0+dGhyZWFkX2Nhbl9zdGFydF8tPldhaXRGb3JOb3RpZmljYXRpb24oKTsKKyAgICBwYXJh
bS0+cnVubmFibGVfLT5SdW4oKTsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIC8vIFByb2hpYml0
IGluc3RhbnRpYXRpb24uCisgIFRocmVhZFdpdGhQYXJhbVN1cHBvcnQoKTsKKworICBHVEVTVF9E
SVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRocmVhZFdpdGhQYXJhbVN1cHBvcnQpOworfTsKKwor
fSAgLy8gbmFtZXNwYWNlCisKK1RocmVhZFdpdGhQYXJhbUJhc2U6OlRocmVhZFdpdGhQYXJhbUJh
c2UoUnVubmFibGUgKnJ1bm5hYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOb3RpZmljYXRpb24qIHRocmVhZF9jYW5fc3RhcnQpCisgICAgICA6IHRocmVhZF8o
VGhyZWFkV2l0aFBhcmFtU3VwcG9ydDo6Q3JlYXRlVGhyZWFkKHJ1bm5hYmxlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRfY2FuX3N0
YXJ0KSkgeworfQorCitUaHJlYWRXaXRoUGFyYW1CYXNlOjp+VGhyZWFkV2l0aFBhcmFtQmFzZSgp
IHsKKyAgSm9pbigpOworfQorCit2b2lkIFRocmVhZFdpdGhQYXJhbUJhc2U6OkpvaW4oKSB7Cisg
IEdURVNUX0NIRUNLXyg6OldhaXRGb3JTaW5nbGVPYmplY3QodGhyZWFkXy5HZXQoKSwgSU5GSU5J
VEUpID09IFdBSVRfT0JKRUNUXzApCisgICAgICA8PCAiRmFpbGVkIHRvIGpvaW4gdGhlIHRocmVh
ZCB3aXRoIGVycm9yICIgPDwgOjpHZXRMYXN0RXJyb3IoKSA8PCAiLiI7Cit9CisKKy8vIE1hcHMg
YSB0aHJlYWQgdG8gYSBzZXQgb2YgVGhyZWFkSWRUb1RocmVhZExvY2FscyB0aGF0IGhhdmUgdmFs
dWVzCisvLyBpbnN0YW50aWF0ZWQgb24gdGhhdCB0aHJlYWQgYW5kIG5vdGlmaWVzIHRoZW0gd2hl
biB0aGUgdGhyZWFkIGV4aXRzLiAgQQorLy8gVGhyZWFkTG9jYWwgaW5zdGFuY2UgaXMgZXhwZWN0
ZWQgdG8gcGVyc2lzdCB1bnRpbCBhbGwgdGhyZWFkcyBpdCBoYXMKKy8vIHZhbHVlcyBvbiBoYXZl
IHRlcm1pbmF0ZWQuCitjbGFzcyBUaHJlYWRMb2NhbFJlZ2lzdHJ5SW1wbCB7CisgcHVibGljOgor
ICAvLyBSZWdpc3RlcnMgdGhyZWFkX2xvY2FsX2luc3RhbmNlIGFzIGhhdmluZyB2YWx1ZSBvbiB0
aGUgY3VycmVudCB0aHJlYWQuCisgIC8vIFJldHVybnMgYSB2YWx1ZSB0aGF0IGNhbiBiZSB1c2Vk
IHRvIGlkZW50aWZ5IHRoZSB0aHJlYWQgZnJvbSBvdGhlciB0aHJlYWRzLgorICBzdGF0aWMgVGhy
ZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UqIEdldFZhbHVlT25DdXJyZW50VGhyZWFkKAorICAgICAg
Y29uc3QgVGhyZWFkTG9jYWxCYXNlKiB0aHJlYWRfbG9jYWxfaW5zdGFuY2UpIHsKKyAgICBEV09S
RCBjdXJyZW50X3RocmVhZCA9IDo6R2V0Q3VycmVudFRocmVhZElkKCk7CisgICAgTXV0ZXhMb2Nr
IGxvY2soJm11dGV4Xyk7CisgICAgVGhyZWFkSWRUb1RocmVhZExvY2FscyogY29uc3QgdGhyZWFk
X3RvX3RocmVhZF9sb2NhbHMgPQorICAgICAgICBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKTsK
KyAgICBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzOjppdGVyYXRvciB0aHJlYWRfbG9jYWxfcG9zID0K
KyAgICAgICAgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmZpbmQoY3VycmVudF90aHJlYWQpOwor
ICAgIGlmICh0aHJlYWRfbG9jYWxfcG9zID09IHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5lbmQo
KSkgeworICAgICAgdGhyZWFkX2xvY2FsX3BvcyA9IHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5p
bnNlcnQoCisgICAgICAgICAgc3RkOjptYWtlX3BhaXIoY3VycmVudF90aHJlYWQsIFRocmVhZExv
Y2FsVmFsdWVzKCkpKS5maXJzdDsKKyAgICAgIFN0YXJ0V2F0Y2hlclRocmVhZEZvcihjdXJyZW50
X3RocmVhZCk7CisgICAgfQorICAgIFRocmVhZExvY2FsVmFsdWVzJiB0aHJlYWRfbG9jYWxfdmFs
dWVzID0gdGhyZWFkX2xvY2FsX3Bvcy0+c2Vjb25kOworICAgIFRocmVhZExvY2FsVmFsdWVzOjpp
dGVyYXRvciB2YWx1ZV9wb3MgPQorICAgICAgICB0aHJlYWRfbG9jYWxfdmFsdWVzLmZpbmQodGhy
ZWFkX2xvY2FsX2luc3RhbmNlKTsKKyAgICBpZiAodmFsdWVfcG9zID09IHRocmVhZF9sb2NhbF92
YWx1ZXMuZW5kKCkpIHsKKyAgICAgIHZhbHVlX3BvcyA9CisgICAgICAgICAgdGhyZWFkX2xvY2Fs
X3ZhbHVlcworICAgICAgICAgICAgICAuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKAorICAgICAgICAg
ICAgICAgICAgdGhyZWFkX2xvY2FsX2luc3RhbmNlLAorICAgICAgICAgICAgICAgICAgbGlua2Vk
X3B0cjxUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZT4oCisgICAgICAgICAgICAgICAgICAgICAg
dGhyZWFkX2xvY2FsX2luc3RhbmNlLT5OZXdWYWx1ZUZvckN1cnJlbnRUaHJlYWQoKSkpKQorICAg
ICAgICAgICAgICAuZmlyc3Q7CisgICAgfQorICAgIHJldHVybiB2YWx1ZV9wb3MtPnNlY29uZC5n
ZXQoKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIE9uVGhyZWFkTG9jYWxEZXN0cm95ZWQoCisgICAg
ICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9pbnN0YW5jZSkgeworICAgIHN0
ZDo6dmVjdG9yPGxpbmtlZF9wdHI8VGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2U+ID4gdmFsdWVf
aG9sZGVyczsKKyAgICAvLyBDbGVhbiB1cCB0aGUgVGhyZWFkTG9jYWxWYWx1ZXMgZGF0YSBzdHJ1
Y3R1cmUgd2hpbGUgaG9sZGluZyB0aGUgbG9jaywgYnV0CisgICAgLy8gZGVmZXIgdGhlIGRlc3Ry
dWN0aW9uIG9mIHRoZSBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZXMuCisgICAgeworICAgICAg
TXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7CisgICAgICBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzKiBj
b25zdCB0aHJlYWRfdG9fdGhyZWFkX2xvY2FscyA9CisgICAgICAgICAgR2V0VGhyZWFkTG9jYWxz
TWFwTG9ja2VkKCk7CisgICAgICBmb3IgKFRocmVhZElkVG9UaHJlYWRMb2NhbHM6Oml0ZXJhdG9y
IGl0ID0KKyAgICAgICAgICB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+YmVnaW4oKTsKKyAgICAg
ICAgICBpdCAhPSB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+ZW5kKCk7CisgICAgICAgICAgKytp
dCkgeworICAgICAgICBUaHJlYWRMb2NhbFZhbHVlcyYgdGhyZWFkX2xvY2FsX3ZhbHVlcyA9IGl0
LT5zZWNvbmQ7CisgICAgICAgIFRocmVhZExvY2FsVmFsdWVzOjppdGVyYXRvciB2YWx1ZV9wb3Mg
PQorICAgICAgICAgICAgdGhyZWFkX2xvY2FsX3ZhbHVlcy5maW5kKHRocmVhZF9sb2NhbF9pbnN0
YW5jZSk7CisgICAgICAgIGlmICh2YWx1ZV9wb3MgIT0gdGhyZWFkX2xvY2FsX3ZhbHVlcy5lbmQo
KSkgeworICAgICAgICAgIHZhbHVlX2hvbGRlcnMucHVzaF9iYWNrKHZhbHVlX3Bvcy0+c2Vjb25k
KTsKKyAgICAgICAgICB0aHJlYWRfbG9jYWxfdmFsdWVzLmVyYXNlKHZhbHVlX3Bvcyk7CisgICAg
ICAgICAgLy8gVGhpcyAnaWYnIGNhbiBvbmx5IGJlIHN1Y2Nlc3NmdWwgYXQgbW9zdCBvbmNlLCBz
byB0aGVvcmV0aWNhbGx5IHdlCisgICAgICAgICAgLy8gY291bGQgYnJlYWsgb3V0IG9mIHRoZSBs
b29wIGhlcmUsIGJ1dCB3ZSBkb24ndCBib3RoZXIgZG9pbmcgc28uCisgICAgICAgIH0KKyAgICAg
IH0KKyAgICB9CisgICAgLy8gT3V0c2lkZSB0aGUgbG9jaywgbGV0IHRoZSBkZXN0cnVjdG9yIGZv
ciAndmFsdWVfaG9sZGVycycgZGVhbGxvY2F0ZSB0aGUKKyAgICAvLyBUaHJlYWRMb2NhbFZhbHVl
SG9sZGVyQmFzZXMuCisgIH0KKworICBzdGF0aWMgdm9pZCBPblRocmVhZEV4aXQoRFdPUkQgdGhy
ZWFkX2lkKSB7CisgICAgR1RFU1RfQ0hFQ0tfKHRocmVhZF9pZCAhPSAwKSA8PCA6OkdldExhc3RF
cnJvcigpOworICAgIHN0ZDo6dmVjdG9yPGxpbmtlZF9wdHI8VGhyZWFkTG9jYWxWYWx1ZUhvbGRl
ckJhc2U+ID4gdmFsdWVfaG9sZGVyczsKKyAgICAvLyBDbGVhbiB1cCB0aGUgVGhyZWFkSWRUb1Ro
cmVhZExvY2FscyBkYXRhIHN0cnVjdHVyZSB3aGlsZSBob2xkaW5nIHRoZQorICAgIC8vIGxvY2ss
IGJ1dCBkZWZlciB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhlIFRocmVhZExvY2FsVmFsdWVIb2xkZXJC
YXNlcy4KKyAgICB7CisgICAgICBNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKKyAgICAgIFRocmVh
ZElkVG9UaHJlYWRMb2NhbHMqIGNvbnN0IHRocmVhZF90b190aHJlYWRfbG9jYWxzID0KKyAgICAg
ICAgICBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKTsKKyAgICAgIFRocmVhZElkVG9UaHJlYWRM
b2NhbHM6Oml0ZXJhdG9yIHRocmVhZF9sb2NhbF9wb3MgPQorICAgICAgICAgIHRocmVhZF90b190
aHJlYWRfbG9jYWxzLT5maW5kKHRocmVhZF9pZCk7CisgICAgICBpZiAodGhyZWFkX2xvY2FsX3Bv
cyAhPSB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+ZW5kKCkpIHsKKyAgICAgICAgVGhyZWFkTG9j
YWxWYWx1ZXMmIHRocmVhZF9sb2NhbF92YWx1ZXMgPSB0aHJlYWRfbG9jYWxfcG9zLT5zZWNvbmQ7
CisgICAgICAgIGZvciAoVGhyZWFkTG9jYWxWYWx1ZXM6Oml0ZXJhdG9yIHZhbHVlX3BvcyA9Cisg
ICAgICAgICAgICB0aHJlYWRfbG9jYWxfdmFsdWVzLmJlZ2luKCk7CisgICAgICAgICAgICB2YWx1
ZV9wb3MgIT0gdGhyZWFkX2xvY2FsX3ZhbHVlcy5lbmQoKTsKKyAgICAgICAgICAgICsrdmFsdWVf
cG9zKSB7CisgICAgICAgICAgdmFsdWVfaG9sZGVycy5wdXNoX2JhY2sodmFsdWVfcG9zLT5zZWNv
bmQpOworICAgICAgICB9CisgICAgICAgIHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5lcmFzZSh0
aHJlYWRfbG9jYWxfcG9zKTsKKyAgICAgIH0KKyAgICB9CisgICAgLy8gT3V0c2lkZSB0aGUgbG9j
aywgbGV0IHRoZSBkZXN0cnVjdG9yIGZvciAndmFsdWVfaG9sZGVycycgZGVhbGxvY2F0ZSB0aGUK
KyAgICAvLyBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZXMuCisgIH0KKworIHByaXZhdGU6Cisg
IC8vIEluIGEgcGFydGljdWxhciB0aHJlYWQsIG1hcHMgYSBUaHJlYWRMb2NhbCBvYmplY3QgdG8g
aXRzIHZhbHVlLgorICB0eXBlZGVmIHN0ZDo6bWFwPGNvbnN0IFRocmVhZExvY2FsQmFzZSosCisg
ICAgICAgICAgICAgICAgICAgbGlua2VkX3B0cjxUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZT4g
PiBUaHJlYWRMb2NhbFZhbHVlczsKKyAgLy8gU3RvcmVzIGFsbCBUaHJlYWRJZFRvVGhyZWFkTG9j
YWxzIGhhdmluZyB2YWx1ZXMgaW4gYSB0aHJlYWQsIGluZGV4ZWQgYnkKKyAgLy8gdGhyZWFkJ3Mg
SUQuCisgIHR5cGVkZWYgc3RkOjptYXA8RFdPUkQsIFRocmVhZExvY2FsVmFsdWVzPiBUaHJlYWRJ
ZFRvVGhyZWFkTG9jYWxzOworCisgIC8vIEhvbGRzIHRoZSB0aHJlYWQgaWQgYW5kIHRocmVhZCBo
YW5kbGUgdGhhdCB3ZSBwYXNzIGZyb20KKyAgLy8gU3RhcnRXYXRjaGVyVGhyZWFkRm9yIHRvIFdh
dGNoZXJUaHJlYWRGdW5jLgorICB0eXBlZGVmIHN0ZDo6cGFpcjxEV09SRCwgSEFORExFPiBUaHJl
YWRJZEFuZEhhbmRsZTsKKworICBzdGF0aWMgdm9pZCBTdGFydFdhdGNoZXJUaHJlYWRGb3IoRFdP
UkQgdGhyZWFkX2lkKSB7CisgICAgLy8gVGhlIHJldHVybmVkIGhhbmRsZSB3aWxsIGJlIGtlcHQg
aW4gdGhyZWFkX21hcCBhbmQgY2xvc2VkIGJ5CisgICAgLy8gd2F0Y2hlcl90aHJlYWQgaW4gV2F0
Y2hlclRocmVhZEZ1bmMuCisgICAgSEFORExFIHRocmVhZCA9IDo6T3BlblRocmVhZChTWU5DSFJP
TklaRSB8IFRIUkVBRF9RVUVSWV9JTkZPUk1BVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFk
X2lkKTsKKyAgICBHVEVTVF9DSEVDS18odGhyZWFkICE9IE5VTEwpOworICAgIC8vIFdlIG5lZWQg
dG8gcGFzcyBhIHZhbGlkIHRocmVhZCBJRCBwb2ludGVyIGludG8gQ3JlYXRlVGhyZWFkIGZvciBp
dAorICAgIC8vIHRvIHdvcmsgY29ycmVjdGx5IHVuZGVyIFdpbjk4LgorICAgIERXT1JEIHdhdGNo
ZXJfdGhyZWFkX2lkOworICAgIEhBTkRMRSB3YXRjaGVyX3RocmVhZCA9IDo6Q3JlYXRlVGhyZWFk
KAorICAgICAgICBOVUxMLCAgIC8vIERlZmF1bHQgc2VjdXJpdHkuCisgICAgICAgIDAsICAgICAg
Ly8gRGVmYXVsdCBzdGFjayBzaXplCisgICAgICAgICZUaHJlYWRMb2NhbFJlZ2lzdHJ5SW1wbDo6
V2F0Y2hlclRocmVhZEZ1bmMsCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8TFBWT0lEPihuZXcg
VGhyZWFkSWRBbmRIYW5kbGUodGhyZWFkX2lkLCB0aHJlYWQpKSwKKyAgICAgICAgQ1JFQVRFX1NV
U1BFTkRFRCwKKyAgICAgICAgJndhdGNoZXJfdGhyZWFkX2lkKTsKKyAgICBHVEVTVF9DSEVDS18o
d2F0Y2hlcl90aHJlYWQgIT0gTlVMTCk7CisgICAgLy8gR2l2ZSB0aGUgd2F0Y2hlciB0aHJlYWQg
dGhlIHNhbWUgcHJpb3JpdHkgYXMgb3VycyB0byBhdm9pZCBiZWluZworICAgIC8vIGJsb2NrZWQg
YnkgaXQuCisgICAgOjpTZXRUaHJlYWRQcmlvcml0eSh3YXRjaGVyX3RocmVhZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIDo6R2V0VGhyZWFkUHJpb3JpdHkoOjpHZXRDdXJyZW50VGhyZWFkKCkp
KTsKKyAgICA6OlJlc3VtZVRocmVhZCh3YXRjaGVyX3RocmVhZCk7CisgICAgOjpDbG9zZUhhbmRs
ZSh3YXRjaGVyX3RocmVhZCk7CisgIH0KKworICAvLyBNb25pdG9ycyBleGl0IGZyb20gYSBnaXZl
biB0aHJlYWQgYW5kIG5vdGlmaWVzIHRob3NlCisgIC8vIFRocmVhZElkVG9UaHJlYWRMb2NhbHMg
YWJvdXQgdGhyZWFkIHRlcm1pbmF0aW9uLgorICBzdGF0aWMgRFdPUkQgV0lOQVBJIFdhdGNoZXJU
aHJlYWRGdW5jKExQVk9JRCBwYXJhbSkgeworICAgIGNvbnN0IFRocmVhZElkQW5kSGFuZGxlKiB0
YWggPQorICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IFRocmVhZElkQW5kSGFuZGxlKj4o
cGFyYW0pOworICAgIEdURVNUX0NIRUNLXygKKyAgICAgICAgOjpXYWl0Rm9yU2luZ2xlT2JqZWN0
KHRhaC0+c2Vjb25kLCBJTkZJTklURSkgPT0gV0FJVF9PQkpFQ1RfMCk7CisgICAgT25UaHJlYWRF
eGl0KHRhaC0+Zmlyc3QpOworICAgIDo6Q2xvc2VIYW5kbGUodGFoLT5zZWNvbmQpOworICAgIGRl
bGV0ZSB0YWg7CisgICAgcmV0dXJuIDA7CisgIH0KKworICAvLyBSZXR1cm5zIG1hcCBvZiB0aHJl
YWQgbG9jYWwgaW5zdGFuY2VzLgorICBzdGF0aWMgVGhyZWFkSWRUb1RocmVhZExvY2FscyogR2V0
VGhyZWFkTG9jYWxzTWFwTG9ja2VkKCkgeworICAgIG11dGV4Xy5Bc3NlcnRIZWxkKCk7CisgICAg
TWVtb3J5SXNOb3REZWFsbG9jYXRlZCBtZW1vcnlfaXNfbm90X2RlYWxsb2NhdGVkOworICAgIHN0
YXRpYyBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzKiBtYXAgPSBuZXcgVGhyZWFkSWRUb1RocmVhZExv
Y2FscygpOworICAgIHJldHVybiBtYXA7CisgIH0KKworICAvLyBQcm90ZWN0cyBhY2Nlc3MgdG8g
R2V0VGhyZWFkTG9jYWxzTWFwTG9ja2VkKCkgYW5kIGl0cyByZXR1cm4gdmFsdWUuCisgIHN0YXRp
YyBNdXRleCBtdXRleF87CisgIC8vIFByb3RlY3RzIGFjY2VzcyB0byBHZXRUaHJlYWRNYXBMb2Nr
ZWQoKSBhbmQgaXRzIHJldHVybiB2YWx1ZS4KKyAgc3RhdGljIE11dGV4IHRocmVhZF9tYXBfbXV0
ZXhfOworfTsKKworTXV0ZXggVGhyZWFkTG9jYWxSZWdpc3RyeUltcGw6Om11dGV4XyhNdXRleDo6
a1N0YXRpY011dGV4KTsKK011dGV4IFRocmVhZExvY2FsUmVnaXN0cnlJbXBsOjp0aHJlYWRfbWFw
X211dGV4XyhNdXRleDo6a1N0YXRpY011dGV4KTsKKworVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJh
c2UqIFRocmVhZExvY2FsUmVnaXN0cnk6OkdldFZhbHVlT25DdXJyZW50VGhyZWFkKAorICAgICAg
Y29uc3QgVGhyZWFkTG9jYWxCYXNlKiB0aHJlYWRfbG9jYWxfaW5zdGFuY2UpIHsKKyAgcmV0dXJu
IFRocmVhZExvY2FsUmVnaXN0cnlJbXBsOjpHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCgKKyAgICAg
IHRocmVhZF9sb2NhbF9pbnN0YW5jZSk7Cit9CisKK3ZvaWQgVGhyZWFkTG9jYWxSZWdpc3RyeTo6
T25UaHJlYWRMb2NhbERlc3Ryb3llZCgKKyAgICAgIGNvbnN0IFRocmVhZExvY2FsQmFzZSogdGhy
ZWFkX2xvY2FsX2luc3RhbmNlKSB7CisgIFRocmVhZExvY2FsUmVnaXN0cnlJbXBsOjpPblRocmVh
ZExvY2FsRGVzdHJveWVkKHRocmVhZF9sb2NhbF9pbnN0YW5jZSk7Cit9CisKKyNlbmRpZiAgLy8g
R1RFU1RfSVNfVEhSRUFEU0FGRSAmJiBHVEVTVF9PU19XSU5ET1dTCiAKICNpZiBHVEVTVF9VU0VT
X1BPU0lYX1JFCiAKQEAgLTE4MCwyMCArNjg4LDIwIEBAIGJvb2wgSXNJblNldChjaGFyIGNoLCBj
b25zdCBjaGFyKiBzdHIpIHsKIC8vIFJldHVybnMgdHJ1ZSBpZmYgY2ggYmVsb25ncyB0byB0aGUg
Z2l2ZW4gY2xhc3NpZmljYXRpb24uICBVbmxpa2UKIC8vIHNpbWlsYXIgZnVuY3Rpb25zIGluIDxj
dHlwZS5oPiwgdGhlc2UgYXJlbid0IGFmZmVjdGVkIGJ5IHRoZQogLy8gY3VycmVudCBsb2NhbGUu
Ci1ib29sIElzRGlnaXQoY2hhciBjaCkgeyByZXR1cm4gJzAnIDw9IGNoICYmIGNoIDw9ICc5Jzsg
fQotYm9vbCBJc1B1bmN0KGNoYXIgY2gpIHsKK2Jvb2wgSXNBc2NpaURpZ2l0KGNoYXIgY2gpIHsg
cmV0dXJuICcwJyA8PSBjaCAmJiBjaCA8PSAnOSc7IH0KK2Jvb2wgSXNBc2NpaVB1bmN0KGNoYXIg
Y2gpIHsKICAgcmV0dXJuIElzSW5TZXQoY2gsICJeLSFcIiMkJSYnKCkqKywuLzo7PD0+P0BbXFxd
X2B7fH1+Iik7CiB9CiBib29sIElzUmVwZWF0KGNoYXIgY2gpIHsgcmV0dXJuIElzSW5TZXQoY2gs
ICI/KisiKTsgfQotYm9vbCBJc1doaXRlU3BhY2UoY2hhciBjaCkgeyByZXR1cm4gSXNJblNldChj
aCwgIiBcZlxuXHJcdFx2Iik7IH0KLWJvb2wgSXNXb3JkQ2hhcihjaGFyIGNoKSB7Citib29sIElz
QXNjaWlXaGl0ZVNwYWNlKGNoYXIgY2gpIHsgcmV0dXJuIElzSW5TZXQoY2gsICIgXGZcblxyXHRc
diIpOyB9Citib29sIElzQXNjaWlXb3JkQ2hhcihjaGFyIGNoKSB7CiAgIHJldHVybiAoJ2EnIDw9
IGNoICYmIGNoIDw9ICd6JykgfHwgKCdBJyA8PSBjaCAmJiBjaCA8PSAnWicpIHx8CiAgICAgICAo
JzAnIDw9IGNoICYmIGNoIDw9ICc5JykgfHwgY2ggPT0gJ18nOwogfQogCiAvLyBSZXR1cm5zIHRy
dWUgaWZmICJcXGMiIGlzIGEgc3VwcG9ydGVkIGVzY2FwZSBzZXF1ZW5jZS4KIGJvb2wgSXNWYWxp
ZEVzY2FwZShjaGFyIGMpIHsKLSAgcmV0dXJuIChJc1B1bmN0KGMpIHx8IElzSW5TZXQoYywgImRE
Zm5yc1N0dndXIikpOworICByZXR1cm4gKElzQXNjaWlQdW5jdChjKSB8fCBJc0luU2V0KGMsICJk
RGZucnNTdHZ3VyIpKTsKIH0KIAogLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgZ2l2ZW4gYXRvbSAo
c3BlY2lmaWVkIGJ5IGVzY2FwZWQgYW5kIHBhdHRlcm4pCkBAIC0yMDEsMjYgKzcwOSwyNiBAQCBi
b29sIElzVmFsaWRFc2NhcGUoY2hhciBjKSB7CiBib29sIEF0b21NYXRjaGVzQ2hhcihib29sIGVz
Y2FwZWQsIGNoYXIgcGF0dGVybl9jaGFyLCBjaGFyIGNoKSB7CiAgIGlmIChlc2NhcGVkKSB7ICAv
LyAiXFxwIiB3aGVyZSBwIGlzIHBhdHRlcm5fY2hhci4KICAgICBzd2l0Y2ggKHBhdHRlcm5fY2hh
cikgewotICAgICAgY2FzZSAnZCc6IHJldHVybiBJc0RpZ2l0KGNoKTsKLSAgICAgIGNhc2UgJ0Qn
OiByZXR1cm4gIUlzRGlnaXQoY2gpOworICAgICAgY2FzZSAnZCc6IHJldHVybiBJc0FzY2lpRGln
aXQoY2gpOworICAgICAgY2FzZSAnRCc6IHJldHVybiAhSXNBc2NpaURpZ2l0KGNoKTsKICAgICAg
IGNhc2UgJ2YnOiByZXR1cm4gY2ggPT0gJ1xmJzsKICAgICAgIGNhc2UgJ24nOiByZXR1cm4gY2gg
PT0gJ1xuJzsKICAgICAgIGNhc2UgJ3InOiByZXR1cm4gY2ggPT0gJ1xyJzsKLSAgICAgIGNhc2Ug
J3MnOiByZXR1cm4gSXNXaGl0ZVNwYWNlKGNoKTsKLSAgICAgIGNhc2UgJ1MnOiByZXR1cm4gIUlz
V2hpdGVTcGFjZShjaCk7CisgICAgICBjYXNlICdzJzogcmV0dXJuIElzQXNjaWlXaGl0ZVNwYWNl
KGNoKTsKKyAgICAgIGNhc2UgJ1MnOiByZXR1cm4gIUlzQXNjaWlXaGl0ZVNwYWNlKGNoKTsKICAg
ICAgIGNhc2UgJ3QnOiByZXR1cm4gY2ggPT0gJ1x0JzsKICAgICAgIGNhc2UgJ3YnOiByZXR1cm4g
Y2ggPT0gJ1x2JzsKLSAgICAgIGNhc2UgJ3cnOiByZXR1cm4gSXNXb3JkQ2hhcihjaCk7Ci0gICAg
ICBjYXNlICdXJzogcmV0dXJuICFJc1dvcmRDaGFyKGNoKTsKKyAgICAgIGNhc2UgJ3cnOiByZXR1
cm4gSXNBc2NpaVdvcmRDaGFyKGNoKTsKKyAgICAgIGNhc2UgJ1cnOiByZXR1cm4gIUlzQXNjaWlX
b3JkQ2hhcihjaCk7CiAgICAgfQotICAgIHJldHVybiBJc1B1bmN0KHBhdHRlcm5fY2hhcikgJiYg
cGF0dGVybl9jaGFyID09IGNoOworICAgIHJldHVybiBJc0FzY2lpUHVuY3QocGF0dGVybl9jaGFy
KSAmJiBwYXR0ZXJuX2NoYXIgPT0gY2g7CiAgIH0KIAogICByZXR1cm4gKHBhdHRlcm5fY2hhciA9
PSAnLicgJiYgY2ggIT0gJ1xuJykgfHwgcGF0dGVybl9jaGFyID09IGNoOwogfQogCiAvLyBIZWxw
ZXIgZnVuY3Rpb24gdXNlZCBieSBWYWxpZGF0ZVJlZ2V4KCkgdG8gZm9ybWF0IGVycm9yIG1lc3Nh
Z2VzLgotU3RyaW5nIEZvcm1hdFJlZ2V4U3ludGF4RXJyb3IoY29uc3QgY2hhciogcmVnZXgsIGlu
dCBpbmRleCkgeworc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFJlZ2V4U3ludGF4RXJyb3IoY29u
c3QgY2hhciogcmVnZXgsIGludCBpbmRleCkgewogICByZXR1cm4gKE1lc3NhZ2UoKSA8PCAiU3lu
dGF4IGVycm9yIGF0IGluZGV4ICIgPDwgaW5kZXgKICAgICAgICAgICA8PCAiIGluIHNpbXBsZSBy
ZWd1bGFyIGV4cHJlc3Npb24gXCIiIDw8IHJlZ2V4IDw8ICJcIjogIikuR2V0U3RyaW5nKCk7CiB9
CkBAIC0yMjksNyArNzM3LDcgQEAgU3RyaW5nIEZvcm1hdFJlZ2V4U3ludGF4RXJyb3IoY29uc3Qg
Y2hhciogcmVnZXgsIGludCBpbmRleCkgewogLy8gb3RoZXJ3aXNlIHJldHVybnMgdHJ1ZS4KIGJv
b2wgVmFsaWRhdGVSZWdleChjb25zdCBjaGFyKiByZWdleCkgewogICBpZiAocmVnZXggPT0gTlVM
TCkgewotICAgIC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBmaXggdGhlIHNvdXJjZSBmaWxlIGxv
Y2F0aW9uIGluIHRoZQorICAgIC8vIEZJWE1FOiBmaXggdGhlIHNvdXJjZSBmaWxlIGxvY2F0aW9u
IGluIHRoZQogICAgIC8vIGFzc2VydGlvbiBmYWlsdXJlcyB0byBtYXRjaCB3aGVyZSB0aGUgcmVn
ZXggaXMgdXNlZCBpbiB1c2VyCiAgICAgLy8gY29kZS4KICAgICBBRERfRkFJTFVSRSgpIDw8ICJO
VUxMIGlzIG5vdCBhIHZhbGlkIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24uIjsKQEAgLTQyMiw2
ICs5MzAsMzcgQEAgdm9pZCBSRTo6SW5pdChjb25zdCBjaGFyKiByZWdleCkgewogCiAjZW5kaWYg
IC8vIEdURVNUX1VTRVNfUE9TSVhfUkUKIAorY29uc3QgY2hhciBrVW5rbm93bkZpbGVbXSA9ICJ1
bmtub3duIGZpbGUiOworCisvLyBGb3JtYXRzIGEgc291cmNlIGZpbGUgcGF0aCBhbmQgYSBsaW5l
IG51bWJlciBhcyB0aGV5IHdvdWxkIGFwcGVhcgorLy8gaW4gYW4gZXJyb3IgbWVzc2FnZSBmcm9t
IHRoZSBjb21waWxlciB1c2VkIHRvIGNvbXBpbGUgdGhpcyBjb2RlLgorR1RFU1RfQVBJXyA6OnN0
ZDo6c3RyaW5nIEZvcm1hdEZpbGVMb2NhdGlvbihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSkg
eworICBjb25zdCBzdGQ6OnN0cmluZyBmaWxlX25hbWUoZmlsZSA9PSBOVUxMID8ga1Vua25vd25G
aWxlIDogZmlsZSk7CisKKyAgaWYgKGxpbmUgPCAwKSB7CisgICAgcmV0dXJuIGZpbGVfbmFtZSAr
ICI6IjsKKyAgfQorI2lmZGVmIF9NU0NfVkVSCisgIHJldHVybiBmaWxlX25hbWUgKyAiKCIgKyBT
dHJlYW1hYmxlVG9TdHJpbmcobGluZSkgKyAiKToiOworI2Vsc2UKKyAgcmV0dXJuIGZpbGVfbmFt
ZSArICI6IiArIFN0cmVhbWFibGVUb1N0cmluZyhsaW5lKSArICI6IjsKKyNlbmRpZiAgLy8gX01T
Q19WRVIKK30KKworLy8gRm9ybWF0cyBhIGZpbGUgbG9jYXRpb24gZm9yIGNvbXBpbGVyLWluZGVw
ZW5kZW50IFhNTCBvdXRwdXQuCisvLyBBbHRob3VnaCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBwbGF0
Zm9ybSBkZXBlbmRlbnQsIHdlIHB1dCBpdCBuZXh0IHRvCisvLyBGb3JtYXRGaWxlTG9jYXRpb24g
aW4gb3JkZXIgdG8gY29udHJhc3QgdGhlIHR3byBmdW5jdGlvbnMuCisvLyBOb3RlIHRoYXQgRm9y
bWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvbigpIGRvZXMgTk9UIGFwcGVuZCBjb2xv
bgorLy8gdG8gdGhlIGZpbGUgbG9jYXRpb24gaXQgcHJvZHVjZXMsIHVubGlrZSBGb3JtYXRGaWxl
TG9jYXRpb24oKS4KK0dURVNUX0FQSV8gOjpzdGQ6OnN0cmluZyBGb3JtYXRDb21waWxlckluZGVw
ZW5kZW50RmlsZUxvY2F0aW9uKAorICAgIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKSB7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGZpbGVfbmFtZShmaWxlID09IE5VTEwgPyBrVW5rbm93bkZpbGUg
OiBmaWxlKTsKKworICBpZiAobGluZSA8IDApCisgICAgcmV0dXJuIGZpbGVfbmFtZTsKKyAgZWxz
ZQorICAgIHJldHVybiBmaWxlX25hbWUgKyAiOiIgKyBTdHJlYW1hYmxlVG9TdHJpbmcobGluZSk7
Cit9CiAKIEdUZXN0TG9nOjpHVGVzdExvZyhHVGVzdExvZ1NldmVyaXR5IHNldmVyaXR5LCBjb25z
dCBjaGFyKiBmaWxlLCBpbnQgbGluZSkKICAgICA6IHNldmVyaXR5XyhzZXZlcml0eSkgewpAQCAt
NDQxLDIxICs5ODAsMTkgQEAgR1Rlc3RMb2c6On5HVGVzdExvZygpIHsKICAgICBwb3NpeDo6QWJv
cnQoKTsKICAgfQogfQorCiAvLyBEaXNhYmxlIE1pY3Jvc29mdCBkZXByZWNhdGlvbiB3YXJuaW5n
cyBmb3IgUE9TSVggZnVuY3Rpb25zIGNhbGxlZCBmcm9tCiAvLyB0aGlzIGNsYXNzIChjcmVhdCwg
ZHVwLCBkdXAyLCBhbmQgY2xvc2UpCi0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhw
dXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ5OTYpCi0jZW5kaWYgIC8vIF9NU0NfVkVS
CitHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BVU0hfKCkKIAotI2lmIEdURVNUX0hBU19T
VFJFQU1fUkVESVJFQ1RJT05fCisjaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgogCiAv
LyBPYmplY3QgdGhhdCBjYXB0dXJlcyBhbiBvdXRwdXQgc3RyZWFtIChzdGRvdXQvc3RkZXJyKS4K
IGNsYXNzIENhcHR1cmVkU3RyZWFtIHsKICBwdWJsaWM6CiAgIC8vIFRoZSBjdG9yIHJlZGlyZWN0
cyB0aGUgc3RyZWFtIHRvIGEgdGVtcG9yYXJ5IGZpbGUuCi0gIENhcHR1cmVkU3RyZWFtKGludCBm
ZCkgOiBmZF8oZmQpLCB1bmNhcHR1cmVkX2ZkXyhkdXAoZmQpKSB7Ci0jaWYgR1RFU1RfT1NfV0lO
RE9XUworICBleHBsaWNpdCBDYXB0dXJlZFN0cmVhbShpbnQgZmQpIDogZmRfKGZkKSwgdW5jYXB0
dXJlZF9mZF8oZHVwKGZkKSkgeworIyBpZiBHVEVTVF9PU19XSU5ET1dTCiAgICAgY2hhciB0ZW1w
X2Rpcl9wYXRoW01BWF9QQVRIICsgMV0gPSB7ICdcMCcgfTsgIC8vIE5PTElOVAogICAgIGNoYXIg
dGVtcF9maWxlX3BhdGhbTUFYX1BBVEggKyAxXSA9IHsgJ1wwJyB9OyAgLy8gTk9MSU5UCiAKQEAg
LTQ3MCwxNCArMTAwNywzMyBAQCBjbGFzcyBDYXB0dXJlZFN0cmVhbSB7CiAgICAgR1RFU1RfQ0hF
Q0tfKGNhcHR1cmVkX2ZkICE9IC0xKSA8PCAiVW5hYmxlIHRvIG9wZW4gdGVtcG9yYXJ5IGZpbGUg
IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgdGVtcF9maWxlX3BhdGg7
CiAgICAgZmlsZW5hbWVfID0gdGVtcF9maWxlX3BhdGg7Ci0jZWxzZQotICAgIC8vIFRoZXJlJ3Mg
bm8gZ3VhcmFudGVlIHRoYXQgYSB0ZXN0IGhhcyB3cml0ZSBhY2Nlc3MgdG8gdGhlCi0gICAgLy8g
Y3VycmVudCBkaXJlY3RvcnksIHNvIHdlIGNyZWF0ZSB0aGUgdGVtcG9yYXJ5IGZpbGUgaW4gdGhl
IC90bXAKLSAgICAvLyBkaXJlY3RvcnkgaW5zdGVhZC4KKyMgZWxzZQorICAgIC8vIFRoZXJlJ3Mg
bm8gZ3VhcmFudGVlIHRoYXQgYSB0ZXN0IGhhcyB3cml0ZSBhY2Nlc3MgdG8gdGhlIGN1cnJlbnQK
KyAgICAvLyBkaXJlY3RvcnksIHNvIHdlIGNyZWF0ZSB0aGUgdGVtcG9yYXJ5IGZpbGUgaW4gdGhl
IC90bXAgZGlyZWN0b3J5CisgICAgLy8gaW5zdGVhZC4gV2UgdXNlIC90bXAgb24gbW9zdCBzeXN0
ZW1zLCBhbmQgL3NkY2FyZCBvbiBBbmRyb2lkLgorICAgIC8vIFRoYXQncyBiZWNhdXNlIEFuZHJv
aWQgZG9lc24ndCBoYXZlIC90bXAuCisjICBpZiBHVEVTVF9PU19MSU5VWF9BTkRST0lECisgICAg
Ly8gTm90ZTogQW5kcm9pZCBhcHBsaWNhdGlvbnMgYXJlIGV4cGVjdGVkIHRvIGNhbGwgdGhlIGZy
YW1ld29yaydzCisgICAgLy8gQ29udGV4dC5nZXRFeHRlcm5hbFN0b3JhZ2VEaXJlY3RvcnkoKSBt
ZXRob2QgdGhyb3VnaCBKTkkgdG8gZ2V0CisgICAgLy8gdGhlIGxvY2F0aW9uIG9mIHRoZSB3b3Js
ZC13cml0YWJsZSBTRCBDYXJkIGRpcmVjdG9yeS4gSG93ZXZlciwKKyAgICAvLyB0aGlzIHJlcXVp
cmVzIGEgQ29udGV4dCBoYW5kbGUsIHdoaWNoIGNhbm5vdCBiZSByZXRyaWV2ZWQKKyAgICAvLyBn
bG9iYWxseSBmcm9tIG5hdGl2ZSBjb2RlLiBEb2luZyBzbyBhbHNvIHByZWNsdWRlcyBydW5uaW5n
IHRoZQorICAgIC8vIGNvZGUgYXMgcGFydCBvZiBhIHJlZ3VsYXIgc3RhbmRhbG9uZSBleGVjdXRh
YmxlLCB3aGljaCBkb2Vzbid0CisgICAgLy8gcnVuIGluIGEgRGFsdmlrIHByb2Nlc3MgKGUuZy4g
d2hlbiBydW5uaW5nIGl0IHRocm91Z2ggJ2FkYiBzaGVsbCcpLgorICAgIC8vCisgICAgLy8gVGhl
IGxvY2F0aW9uIC9zZGNhcmQgaXMgZGlyZWN0bHkgYWNjZXNzaWJsZSBmcm9tIG5hdGl2ZSBjb2Rl
CisgICAgLy8gYW5kIGlzIHRoZSBvbmx5IGxvY2F0aW9uICh1bm9mZmljaWFsbHkpIHN1cHBvcnRl
ZCBieSB0aGUgQW5kcm9pZAorICAgIC8vIHRlYW0uIEl0J3MgZ2VuZXJhbGx5IGEgc3ltbGluayB0
byB0aGUgcmVhbCBTRCBDYXJkIG1vdW50IHBvaW50CisgICAgLy8gd2hpY2ggY2FuIGJlIC9tbnQv
c2RjYXJkLCAvbW50L3NkY2FyZDAsIC9zeXN0ZW0vbWVkaWEvc2RjYXJkLCBvcgorICAgIC8vIG90
aGVyIE9FTS1jdXN0b21pemVkIGxvY2F0aW9ucy4gTmV2ZXIgcmVseSBvbiB0aGVzZSwgYW5kIGFs
d2F5cworICAgIC8vIHVzZSAvc2RjYXJkLgorICAgIGNoYXIgbmFtZV90ZW1wbGF0ZVtdID0gIi9z
ZGNhcmQvZ3Rlc3RfY2FwdHVyZWRfc3RyZWFtLlhYWFhYWCI7CisjICBlbHNlCiAgICAgY2hhciBu
YW1lX3RlbXBsYXRlW10gPSAiL3RtcC9jYXB0dXJlZF9zdHJlYW0uWFhYWFhYIjsKKyMgIGVuZGlm
ICAvLyBHVEVTVF9PU19MSU5VWF9BTkRST0lECiAgICAgY29uc3QgaW50IGNhcHR1cmVkX2ZkID0g
bWtzdGVtcChuYW1lX3RlbXBsYXRlKTsKICAgICBmaWxlbmFtZV8gPSBuYW1lX3RlbXBsYXRlOwot
I2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dT
CiAgICAgZmZsdXNoKE5VTEwpOwogICAgIGR1cDIoY2FwdHVyZWRfZmQsIGZkXyk7CiAgICAgY2xv
c2UoY2FwdHVyZWRfZmQpOwpAQCAtNDg3LDcgKzEwNDMsNyBAQCBjbGFzcyBDYXB0dXJlZFN0cmVh
bSB7CiAgICAgcmVtb3ZlKGZpbGVuYW1lXy5jX3N0cigpKTsKICAgfQogCi0gIFN0cmluZyBHZXRD
YXB0dXJlZFN0cmluZygpIHsKKyAgc3RkOjpzdHJpbmcgR2V0Q2FwdHVyZWRTdHJpbmcoKSB7CiAg
ICAgaWYgKHVuY2FwdHVyZWRfZmRfICE9IC0xKSB7CiAgICAgICAvLyBSZXN0b3JlcyB0aGUgb3Jp
Z2luYWwgc3RyZWFtLgogICAgICAgZmZsdXNoKE5VTEwpOwpAQCAtNDk3LDE4ICsxMDUzLDEyIEBA
IGNsYXNzIENhcHR1cmVkU3RyZWFtIHsKICAgICB9CiAKICAgICBGSUxFKiBjb25zdCBmaWxlID0g
cG9zaXg6OkZPcGVuKGZpbGVuYW1lXy5jX3N0cigpLCAiciIpOwotICAgIGNvbnN0IFN0cmluZyBj
b250ZW50ID0gUmVhZEVudGlyZUZpbGUoZmlsZSk7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgY29u
dGVudCA9IFJlYWRFbnRpcmVGaWxlKGZpbGUpOwogICAgIHBvc2l4OjpGQ2xvc2UoZmlsZSk7CiAg
ICAgcmV0dXJuIGNvbnRlbnQ7CiAgIH0KIAogIHByaXZhdGU6Ci0gIC8vIFJlYWRzIHRoZSBlbnRp
cmUgY29udGVudCBvZiBhIGZpbGUgYXMgYSBTdHJpbmcuCi0gIHN0YXRpYyBTdHJpbmcgUmVhZEVu
dGlyZUZpbGUoRklMRSogZmlsZSk7Ci0KLSAgLy8gUmV0dXJucyB0aGUgc2l6ZSAoaW4gYnl0ZXMp
IG9mIGEgZmlsZS4KLSAgc3RhdGljIHNpemVfdCBHZXRGaWxlU2l6ZShGSUxFKiBmaWxlKTsKLQog
ICBjb25zdCBpbnQgZmRfOyAgLy8gQSBzdHJlYW0gdG8gY2FwdHVyZS4KICAgaW50IHVuY2FwdHVy
ZWRfZmRfOwogICAvLyBOYW1lIG9mIHRoZSB0ZW1wb3JhcnkgZmlsZSBob2xkaW5nIHRoZSBzdGRl
cnIgb3V0cHV0LgpAQCAtNTE3LDQ0ICsxMDY3LDE0IEBAIGNsYXNzIENhcHR1cmVkU3RyZWFtIHsK
ICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhDYXB0dXJlZFN0cmVhbSk7CiB9Owog
Ci0vLyBSZXR1cm5zIHRoZSBzaXplIChpbiBieXRlcykgb2YgYSBmaWxlLgotc2l6ZV90IENhcHR1
cmVkU3RyZWFtOjpHZXRGaWxlU2l6ZShGSUxFKiBmaWxlKSB7Ci0gIGZzZWVrKGZpbGUsIDAsIFNF
RUtfRU5EKTsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oZnRlbGwoZmlsZSkpOwotfQot
Ci0vLyBSZWFkcyB0aGUgZW50aXJlIGNvbnRlbnQgb2YgYSBmaWxlIGFzIGEgc3RyaW5nLgotU3Ry
aW5nIENhcHR1cmVkU3RyZWFtOjpSZWFkRW50aXJlRmlsZShGSUxFKiBmaWxlKSB7Ci0gIGNvbnN0
IHNpemVfdCBmaWxlX3NpemUgPSBHZXRGaWxlU2l6ZShmaWxlKTsKLSAgY2hhciogY29uc3QgYnVm
ZmVyID0gbmV3IGNoYXJbZmlsZV9zaXplXTsKLQotICBzaXplX3QgYnl0ZXNfbGFzdF9yZWFkID0g
MDsgIC8vICMgb2YgYnl0ZXMgcmVhZCBpbiB0aGUgbGFzdCBmcmVhZCgpCi0gIHNpemVfdCBieXRl
c19yZWFkID0gMDsgICAgICAgLy8gIyBvZiBieXRlcyByZWFkIHNvIGZhcgotCi0gIGZzZWVrKGZp
bGUsIDAsIFNFRUtfU0VUKTsKLQotICAvLyBLZWVwcyByZWFkaW5nIHRoZSBmaWxlIHVudGlsIHdl
IGNhbm5vdCByZWFkIGZ1cnRoZXIgb3IgdGhlCi0gIC8vIHByZS1kZXRlcm1pbmVkIGZpbGUgc2l6
ZSBpcyByZWFjaGVkLgotICBkbyB7Ci0gICAgYnl0ZXNfbGFzdF9yZWFkID0gZnJlYWQoYnVmZmVy
K2J5dGVzX3JlYWQsIDEsIGZpbGVfc2l6ZS1ieXRlc19yZWFkLCBmaWxlKTsKLSAgICBieXRlc19y
ZWFkICs9IGJ5dGVzX2xhc3RfcmVhZDsKLSAgfSB3aGlsZSAoYnl0ZXNfbGFzdF9yZWFkID4gMCAm
JiBieXRlc19yZWFkIDwgZmlsZV9zaXplKTsKLQotICBjb25zdCBTdHJpbmcgY29udGVudChidWZm
ZXIsIGJ5dGVzX3JlYWQpOwotICBkZWxldGVbXSBidWZmZXI7Ci0KLSAgcmV0dXJuIGNvbnRlbnQ7
Ci19Ci0KLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZiAgLy8g
X01TQ19WRVIKK0dURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUE9QXygpCiAKIHN0YXRpYyBD
YXB0dXJlZFN0cmVhbSogZ19jYXB0dXJlZF9zdGRlcnIgPSBOVUxMOwogc3RhdGljIENhcHR1cmVk
U3RyZWFtKiBnX2NhcHR1cmVkX3N0ZG91dCA9IE5VTEw7CiAKIC8vIFN0YXJ0cyBjYXB0dXJpbmcg
YW4gb3V0cHV0IHN0cmVhbSAoc3Rkb3V0L3N0ZGVycikuCi12b2lkIENhcHR1cmVTdHJlYW0oaW50
IGZkLCBjb25zdCBjaGFyKiBzdHJlYW1fbmFtZSwgQ2FwdHVyZWRTdHJlYW0qKiBzdHJlYW0pIHsK
K3N0YXRpYyB2b2lkIENhcHR1cmVTdHJlYW0oaW50IGZkLCBjb25zdCBjaGFyKiBzdHJlYW1fbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FwdHVyZWRTdHJlYW0qKiBzdHJlYW0pIHsK
ICAgaWYgKCpzdHJlYW0gIT0gTlVMTCkgewogICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICJPbmx5
IG9uZSAiIDw8IHN0cmVhbV9uYW1lCiAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBjYXB0dXJl
ciBjYW4gZXhpc3QgYXQgYSB0aW1lLiI7CkBAIC01NjMsOCArMTA4Myw4IEBAIHZvaWQgQ2FwdHVy
ZVN0cmVhbShpbnQgZmQsIGNvbnN0IGNoYXIqIHN0cmVhbV9uYW1lLCBDYXB0dXJlZFN0cmVhbSoq
IHN0cmVhbSkgewogfQogCiAvLyBTdG9wcyBjYXB0dXJpbmcgdGhlIG91dHB1dCBzdHJlYW0gYW5k
IHJldHVybnMgdGhlIGNhcHR1cmVkIHN0cmluZy4KLVN0cmluZyBHZXRDYXB0dXJlZFN0cmVhbShD
YXB0dXJlZFN0cmVhbSoqIGNhcHR1cmVkX3N0cmVhbSkgewotICBjb25zdCBTdHJpbmcgY29udGVu
dCA9ICgqY2FwdHVyZWRfc3RyZWFtKS0+R2V0Q2FwdHVyZWRTdHJpbmcoKTsKK3N0YXRpYyBzdGQ6
OnN0cmluZyBHZXRDYXB0dXJlZFN0cmVhbShDYXB0dXJlZFN0cmVhbSoqIGNhcHR1cmVkX3N0cmVh
bSkgeworICBjb25zdCBzdGQ6OnN0cmluZyBjb250ZW50ID0gKCpjYXB0dXJlZF9zdHJlYW0pLT5H
ZXRDYXB0dXJlZFN0cmluZygpOwogCiAgIGRlbGV0ZSAqY2FwdHVyZWRfc3RyZWFtOwogICAqY2Fw
dHVyZWRfc3RyZWFtID0gTlVMTDsKQEAgLTU4MywyMSArMTEwMyw3OSBAQCB2b2lkIENhcHR1cmVT
dGRlcnIoKSB7CiB9CiAKIC8vIFN0b3BzIGNhcHR1cmluZyBzdGRvdXQgYW5kIHJldHVybnMgdGhl
IGNhcHR1cmVkIHN0cmluZy4KLVN0cmluZyBHZXRDYXB0dXJlZFN0ZG91dCgpIHsgcmV0dXJuIEdl
dENhcHR1cmVkU3RyZWFtKCZnX2NhcHR1cmVkX3N0ZG91dCk7IH0KK3N0ZDo6c3RyaW5nIEdldENh
cHR1cmVkU3Rkb3V0KCkgeworICByZXR1cm4gR2V0Q2FwdHVyZWRTdHJlYW0oJmdfY2FwdHVyZWRf
c3Rkb3V0KTsKK30KIAogLy8gU3RvcHMgY2FwdHVyaW5nIHN0ZGVyciBhbmQgcmV0dXJucyB0aGUg
Y2FwdHVyZWQgc3RyaW5nLgotU3RyaW5nIEdldENhcHR1cmVkU3RkZXJyKCkgeyByZXR1cm4gR2V0
Q2FwdHVyZWRTdHJlYW0oJmdfY2FwdHVyZWRfc3RkZXJyKTsgfQorc3RkOjpzdHJpbmcgR2V0Q2Fw
dHVyZWRTdGRlcnIoKSB7CisgIHJldHVybiBHZXRDYXB0dXJlZFN0cmVhbSgmZ19jYXB0dXJlZF9z
dGRlcnIpOworfQogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCisj
ZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KKworCisKKworCitzaXplX3Qg
R2V0RmlsZVNpemUoRklMRSogZmlsZSkgeworICBmc2VlayhmaWxlLCAwLCBTRUVLX0VORCk7Cisg
IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGZ0ZWxsKGZpbGUpKTsKK30KKworc3RkOjpzdHJp
bmcgUmVhZEVudGlyZUZpbGUoRklMRSogZmlsZSkgeworICBjb25zdCBzaXplX3QgZmlsZV9zaXpl
ID0gR2V0RmlsZVNpemUoZmlsZSk7CisgIGNoYXIqIGNvbnN0IGJ1ZmZlciA9IG5ldyBjaGFyW2Zp
bGVfc2l6ZV07CisKKyAgc2l6ZV90IGJ5dGVzX2xhc3RfcmVhZCA9IDA7ICAvLyAjIG9mIGJ5dGVz
IHJlYWQgaW4gdGhlIGxhc3QgZnJlYWQoKQorICBzaXplX3QgYnl0ZXNfcmVhZCA9IDA7ICAgICAg
IC8vICMgb2YgYnl0ZXMgcmVhZCBzbyBmYXIKKworICBmc2VlayhmaWxlLCAwLCBTRUVLX1NFVCk7
CisKKyAgLy8gS2VlcHMgcmVhZGluZyB0aGUgZmlsZSB1bnRpbCB3ZSBjYW5ub3QgcmVhZCBmdXJ0
aGVyIG9yIHRoZQorICAvLyBwcmUtZGV0ZXJtaW5lZCBmaWxlIHNpemUgaXMgcmVhY2hlZC4KKyAg
ZG8geworICAgIGJ5dGVzX2xhc3RfcmVhZCA9IGZyZWFkKGJ1ZmZlcitieXRlc19yZWFkLCAxLCBm
aWxlX3NpemUtYnl0ZXNfcmVhZCwgZmlsZSk7CisgICAgYnl0ZXNfcmVhZCArPSBieXRlc19sYXN0
X3JlYWQ7CisgIH0gd2hpbGUgKGJ5dGVzX2xhc3RfcmVhZCA+IDAgJiYgYnl0ZXNfcmVhZCA8IGZp
bGVfc2l6ZSk7CisKKyAgY29uc3Qgc3RkOjpzdHJpbmcgY29udGVudChidWZmZXIsIGJ5dGVzX3Jl
YWQpOworICBkZWxldGVbXSBidWZmZXI7CisKKyAgcmV0dXJuIGNvbnRlbnQ7Cit9CiAKICNpZiBH
VEVTVF9IQVNfREVBVEhfVEVTVAorc3RhdGljIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
PiogZ19pbmplY3RlZF90ZXN0X2FyZ3ZzID0gTlVMTDsgIC8vIE93bmVkLgogCi0vLyBBIGNvcHkg
b2YgYWxsIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuICBTZXQgYnkgSW5pdEdvb2dsZVRlc3QoKS4K
LTo6c3RkOjp2ZWN0b3I8U3RyaW5nPiBnX2FyZ3ZzOworc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
IEdldEluamVjdGFibGVBcmd2cygpIHsKKyAgaWYgKGdfaW5qZWN0ZWRfdGVzdF9hcmd2cyAhPSBO
VUxMKSB7CisgICAgcmV0dXJuICpnX2luamVjdGVkX3Rlc3RfYXJndnM7CisgIH0KKyAgcmV0dXJu
IEdldEFyZ3ZzKCk7Cit9CisKK3ZvaWQgU2V0SW5qZWN0YWJsZUFyZ3ZzKGNvbnN0IHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiogbmV3X2FyZ3ZzKSB7CisgIGlmIChnX2luamVjdGVkX3Rlc3RfYXJn
dnMgIT0gbmV3X2FyZ3ZzKSBkZWxldGUgZ19pbmplY3RlZF90ZXN0X2FyZ3ZzOworICBnX2luamVj
dGVkX3Rlc3RfYXJndnMgPSBuZXdfYXJndnM7Cit9CiAKLS8vIFJldHVybnMgdGhlIGNvbW1hbmQg
bGluZSBhcyBhIHZlY3RvciBvZiBzdHJpbmdzLgotY29uc3QgOjpzdGQ6OnZlY3RvcjxTdHJpbmc+
JiBHZXRBcmd2cygpIHsgcmV0dXJuIGdfYXJndnM7IH0KK3ZvaWQgU2V0SW5qZWN0YWJsZUFyZ3Zz
KGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgbmV3X2FyZ3ZzKSB7CisgIFNldEluamVj
dGFibGVBcmd2cygKKyAgICAgIG5ldyBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4obmV3X2FyZ3Zz
LmJlZ2luKCksIG5ld19hcmd2cy5lbmQoKSkpOworfQorCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9T
VFJJTkcKK3ZvaWQgU2V0SW5qZWN0YWJsZUFyZ3ZzKGNvbnN0IHN0ZDo6dmVjdG9yPCA6OnN0cmlu
Zz4mIG5ld19hcmd2cykgeworICBTZXRJbmplY3RhYmxlQXJndnMoCisgICAgICBuZXcgc3RkOjp2
ZWN0b3I8c3RkOjpzdHJpbmc+KG5ld19hcmd2cy5iZWdpbigpLCBuZXdfYXJndnMuZW5kKCkpKTsK
K30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKIAordm9pZCBDbGVhckluamVj
dGFibGVBcmd2cygpIHsKKyAgZGVsZXRlIGdfaW5qZWN0ZWRfdGVzdF9hcmd2czsKKyAgZ19pbmpl
Y3RlZF90ZXN0X2FyZ3ZzID0gTlVMTDsKK30KICNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RF
U1QKIAogI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCkBAIC02MTIsMTMgKzExOTAsMTMgQEAg
dm9pZCBBYm9ydCgpIHsKIC8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGVudmlyb25tZW50IHZh
cmlhYmxlIGNvcnJlc3BvbmRpbmcgdG8gdGhlCiAvLyBnaXZlbiBmbGFnLiAgRm9yIGV4YW1wbGUs
IEZsYWdUb0VudlZhcigiZm9vIikgd2lsbCByZXR1cm4KIC8vICJHVEVTVF9GT08iIGluIHRoZSBv
cGVuLXNvdXJjZSB2ZXJzaW9uLgotc3RhdGljIFN0cmluZyBGbGFnVG9FbnZWYXIoY29uc3QgY2hh
ciogZmxhZykgewotICBjb25zdCBTdHJpbmcgZnVsbF9mbGFnID0KK3N0YXRpYyBzdGQ6OnN0cmlu
ZyBGbGFnVG9FbnZWYXIoY29uc3QgY2hhciogZmxhZykgeworICBjb25zdCBzdGQ6OnN0cmluZyBm
dWxsX2ZsYWcgPQogICAgICAgKE1lc3NhZ2UoKSA8PCBHVEVTVF9GTEFHX1BSRUZJWF8gPDwgZmxh
ZykuR2V0U3RyaW5nKCk7CiAKICAgTWVzc2FnZSBlbnZfdmFyOwogICBmb3IgKHNpemVfdCBpID0g
MDsgaSAhPSBmdWxsX2ZsYWcubGVuZ3RoKCk7IGkrKykgewotICAgIGVudl92YXIgPDwgc3RhdGlj
X2Nhc3Q8Y2hhcj4odG91cHBlcihmdWxsX2ZsYWcuY19zdHIoKVtpXSkpOworICAgIGVudl92YXIg
PDwgVG9VcHBlcihmdWxsX2ZsYWcuY19zdHIoKVtpXSk7CiAgIH0KIAogICByZXR1cm4gZW52X3Zh
ci5HZXRTdHJpbmcoKTsKQEAgLTY3MCwxNyArMTI0OCwyNCBAQCBib29sIFBhcnNlSW50MzIoY29u
c3QgTWVzc2FnZSYgc3JjX3RleHQsIGNvbnN0IGNoYXIqIHN0ciwgSW50MzIqIHZhbHVlKSB7CiAv
LwogLy8gVGhlIHZhbHVlIGlzIGNvbnNpZGVyZWQgdHJ1ZSBpZmYgaXQncyBub3QgIjAiLgogYm9v
bCBCb29sRnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIGJvb2wgZGVmYXVsdF92YWx1ZSkg
ewotICBjb25zdCBTdHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFnKTsKKyNpZiBkZWZp
bmVkKEdURVNUX0dFVF9CT09MX0ZST01fRU5WXykKKyAgcmV0dXJuIEdURVNUX0dFVF9CT09MX0ZS
T01fRU5WXyhmbGFnLCBkZWZhdWx0X3ZhbHVlKTsKKyNlbHNlCisgIGNvbnN0IHN0ZDo6c3RyaW5n
IGVudl92YXIgPSBGbGFnVG9FbnZWYXIoZmxhZyk7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmlu
Z192YWx1ZSA9IHBvc2l4OjpHZXRFbnYoZW52X3Zhci5jX3N0cigpKTsKICAgcmV0dXJuIHN0cmlu
Z192YWx1ZSA9PSBOVUxMID8KICAgICAgIGRlZmF1bHRfdmFsdWUgOiBzdHJjbXAoc3RyaW5nX3Zh
bHVlLCAiMCIpICE9IDA7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfR0VUX0JPT0xfRlJPTV9F
TlZfKQogfQogCiAvLyBSZWFkcyBhbmQgcmV0dXJucyBhIDMyLWJpdCBpbnRlZ2VyIHN0b3JlZCBp
biB0aGUgZW52aXJvbm1lbnQKIC8vIHZhcmlhYmxlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVu
IGZsYWc7IGlmIGl0IGlzbid0IHNldCBvcgogLy8gZG9lc24ndCByZXByZXNlbnQgYSB2YWxpZCAz
Mi1iaXQgaW50ZWdlciwgcmV0dXJucyBkZWZhdWx0X3ZhbHVlLgogSW50MzIgSW50MzJGcm9tR1Rl
c3RFbnYoY29uc3QgY2hhciogZmxhZywgSW50MzIgZGVmYXVsdF92YWx1ZSkgewotICBjb25zdCBT
dHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFnKTsKKyNpZiBkZWZpbmVkKEdURVNUX0dF
VF9JTlQzMl9GUk9NX0VOVl8pCisgIHJldHVybiBHVEVTVF9HRVRfSU5UMzJfRlJPTV9FTlZfKGZs
YWcsIGRlZmF1bHRfdmFsdWUpOworI2Vsc2UKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZW52X3ZhciA9
IEZsYWdUb0VudlZhcihmbGFnKTsKICAgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nX3ZhbHVlID0g
cG9zaXg6OkdldEVudihlbnZfdmFyLmNfc3RyKCkpOwogICBpZiAoc3RyaW5nX3ZhbHVlID09IE5V
TEwpIHsKICAgICAvLyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldC4KQEAgLTY5
NywxNCArMTI4MiwzNiBAQCBJbnQzMiBJbnQzMkZyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFn
LCBJbnQzMiBkZWZhdWx0X3ZhbHVlKSB7CiAgIH0KIAogICByZXR1cm4gcmVzdWx0OworI2VuZGlm
ICAvLyBkZWZpbmVkKEdURVNUX0dFVF9JTlQzMl9GUk9NX0VOVl8pCit9CisKKy8vIEFzIGEgc3Bl
Y2lhbCBjYXNlIGZvciB0aGUgJ291dHB1dCcgZmxhZywgaWYgR1RFU1RfT1VUUFVUIGlzIG5vdAor
Ly8gc2V0LCB3ZSBsb29rIGZvciBYTUxfT1VUUFVUX0ZJTEUsIHdoaWNoIGlzIHNldCBieSB0aGUg
QmF6ZWwgYnVpbGQKKy8vIHN5c3RlbS4gIFRoZSB2YWx1ZSBvZiBYTUxfT1VUUFVUX0ZJTEUgaXMg
YSBmaWxlbmFtZSB3aXRob3V0IHRoZQorLy8gInhtbDoiIHByZWZpeCBvZiBHVEVTVF9PVVRQVVQu
CisvLyBOb3RlIHRoYXQgdGhpcyBpcyBtZWFudCB0byBiZSBjYWxsZWQgYXQgdGhlIGNhbGwgc2l0
ZSBzbyBpdCBkb2VzCisvLyBub3QgY2hlY2sgdGhhdCB0aGUgZmxhZyBpcyAnb3V0cHV0JworLy8g
SW4gZXNzZW5jZSB0aGlzIGNoZWNrcyBhbiBlbnYgdmFyaWFibGUgY2FsbGVkIFhNTF9PVVRQVVRf
RklMRQorLy8gYW5kIGlmIGl0IGlzIHNldCB3ZSBwcmVwZW5kICJ4bWw6IiB0byBpdHMgdmFsdWUs
IGlmIGl0IG5vdCBzZXQgd2UgcmV0dXJuICIiCitzdGQ6OnN0cmluZyBPdXRwdXRGbGFnQWxzb0No
ZWNrRW52VmFyKCl7CisgIHN0ZDo6c3RyaW5nIGRlZmF1bHRfdmFsdWVfZm9yX291dHB1dF9mbGFn
ID0gIiI7CisgIGNvbnN0IGNoYXIqIHhtbF9vdXRwdXRfZmlsZV9lbnYgPSBwb3NpeDo6R2V0RW52
KCJYTUxfT1VUUFVUX0ZJTEUiKTsKKyAgaWYgKE5VTEwgIT0geG1sX291dHB1dF9maWxlX2Vudikg
eworICAgIGRlZmF1bHRfdmFsdWVfZm9yX291dHB1dF9mbGFnID0gc3RkOjpzdHJpbmcoInhtbDoi
KSArIHhtbF9vdXRwdXRfZmlsZV9lbnY7CisgIH0KKyAgcmV0dXJuIGRlZmF1bHRfdmFsdWVfZm9y
X291dHB1dF9mbGFnOwogfQogCiAvLyBSZWFkcyBhbmQgcmV0dXJucyB0aGUgc3RyaW5nIGVudmly
b25tZW50IHZhcmlhYmxlIGNvcnJlc3BvbmRpbmcgdG8KIC8vIHRoZSBnaXZlbiBmbGFnOyBpZiBp
dCdzIG5vdCBzZXQsIHJldHVybnMgZGVmYXVsdF92YWx1ZS4KIGNvbnN0IGNoYXIqIFN0cmluZ0Zy
b21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBjb25zdCBjaGFyKiBkZWZhdWx0X3ZhbHVlKSB7
Ci0gIGNvbnN0IFN0cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52VmFyKGZsYWcpOworI2lmIGRlZmlu
ZWQoR1RFU1RfR0VUX1NUUklOR19GUk9NX0VOVl8pCisgIHJldHVybiBHVEVTVF9HRVRfU1RSSU5H
X0ZST01fRU5WXyhmbGFnLCBkZWZhdWx0X3ZhbHVlKTsKKyNlbHNlCisgIGNvbnN0IHN0ZDo6c3Ry
aW5nIGVudl92YXIgPSBGbGFnVG9FbnZWYXIoZmxhZyk7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IHZh
bHVlID0gcG9zaXg6OkdldEVudihlbnZfdmFyLmNfc3RyKCkpOwogICByZXR1cm4gdmFsdWUgPT0g
TlVMTCA/IGRlZmF1bHRfdmFsdWUgOiB2YWx1ZTsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9H
RVRfU1RSSU5HX0ZST01fRU5WXykKIH0KIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcHJpbnRlcnMuY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcHJpbnRlcnMuY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZGU0ZDI0NWU5ZmM4ODk3YWYyMTM3Njc5ZDkxM2Q2NjVmZDg0MzZlMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1wcmludGVycy5jYwpAQCAtMCww
ICsxLDQ1NyBAQAorLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0Ogor
Ly8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisv
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisKKy8vIEdvb2dsZSBUZXN0IC0gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBG
cmFtZXdvcmsKKy8vCisvLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBhIHVuaXZlcnNhbCB2YWx1ZSBw
cmludGVyIHRoYXQgY2FuIHByaW50IGEKKy8vIHZhbHVlIG9mIGFueSB0eXBlIFQ6CisvLworLy8g
ICB2b2lkIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFByaW50ZXI8VD46OlByaW50KHZh
bHVlLCBvc3RyZWFtX3B0cik7CisvLworLy8gSXQgdXNlcyB0aGUgPDwgb3BlcmF0b3Igd2hlbiBw
b3NzaWJsZSwgYW5kIHByaW50cyB0aGUgYnl0ZXMgaW4gdGhlCisvLyBvYmplY3Qgb3RoZXJ3aXNl
LiAgQSB1c2VyIGNhbiBvdmVycmlkZSBpdHMgYmVoYXZpb3IgZm9yIGEgY2xhc3MKKy8vIHR5cGUg
Rm9vIGJ5IGRlZmluaW5nIGVpdGhlciBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiwgY29uc3Qg
Rm9vJikKKy8vIG9yIHZvaWQgUHJpbnRUbyhjb25zdCBGb28mLCA6OnN0ZDo6b3N0cmVhbSopIGlu
IHRoZSBuYW1lc3BhY2UgdGhhdAorLy8gZGVmaW5lcyBGb28uCisKKyNpbmNsdWRlICJndGVzdC9n
dGVzdC1wcmludGVycy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8Y2N0eXBlPgor
I2luY2x1ZGUgPGN3Y2hhcj4KKyNpbmNsdWRlIDxvc3RyZWFtPiAgLy8gTk9MSU5UCisjaW5jbHVk
ZSA8c3RyaW5nPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKyNpbmNs
dWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKwor
bmFtZXNwYWNlIHsKKwordXNpbmcgOjpzdGQ6Om9zdHJlYW07CisKKy8vIFByaW50cyBhIHNlZ21l
bnQgb2YgYnl0ZXMgaW4gdGhlIGdpdmVuIG9iamVjdC4KK0dURVNUX0FUVFJJQlVURV9OT19TQU5J
VElaRV9NRU1PUllfCitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTU18KK0dURVNU
X0FUVFJJQlVURV9OT19TQU5JVElaRV9USFJFQURfCit2b2lkIFByaW50Qnl0ZVNlZ21lbnRJbk9i
amVjdFRvKGNvbnN0IHVuc2lnbmVkIGNoYXIqIG9ial9ieXRlcywgc2l6ZV90IHN0YXJ0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQsIG9zdHJlYW0qIG9zKSB7
CisgIGNoYXIgdGV4dFs1XSA9ICIiOworICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBjb3VudDsg
aSsrKSB7CisgICAgY29uc3Qgc2l6ZV90IGogPSBzdGFydCArIGk7CisgICAgaWYgKGkgIT0gMCkg
eworICAgICAgLy8gT3JnYW5pemVzIHRoZSBieXRlcyBpbnRvIGdyb3VwcyBvZiAyIGZvciBlYXN5
IHBhcnNpbmcgYnkKKyAgICAgIC8vIGh1bWFuLgorICAgICAgaWYgKChqICUgMikgPT0gMCkKKyAg
ICAgICAgKm9zIDw8ICcgJzsKKyAgICAgIGVsc2UKKyAgICAgICAgKm9zIDw8ICctJzsKKyAgICB9
CisgICAgR1RFU1RfU05QUklOVEZfKHRleHQsIHNpemVvZih0ZXh0KSwgIiUwMlgiLCBvYmpfYnl0
ZXNbal0pOworICAgICpvcyA8PCB0ZXh0OworICB9Cit9CisKKy8vIFByaW50cyB0aGUgYnl0ZXMg
aW4gdGhlIGdpdmVuIHZhbHVlIHRvIHRoZSBnaXZlbiBvc3RyZWFtLgordm9pZCBQcmludEJ5dGVz
SW5PYmplY3RUb0ltcGwoY29uc3QgdW5zaWduZWQgY2hhciogb2JqX2J5dGVzLCBzaXplX3QgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvc3RyZWFtKiBvcykgeworICAvLyBU
ZWxscyB0aGUgdXNlciBob3cgYmlnIHRoZSBvYmplY3QgaXMuCisgICpvcyA8PCBjb3VudCA8PCAi
LWJ5dGUgb2JqZWN0IDwiOworCisgIGNvbnN0IHNpemVfdCBrVGhyZXNob2xkID0gMTMyOworICBj
b25zdCBzaXplX3Qga0NodW5rU2l6ZSA9IDY0OworICAvLyBJZiB0aGUgb2JqZWN0IHNpemUgaXMg
YmlnZ2VyIHRoYW4ga1RocmVzaG9sZCwgd2UnbGwgaGF2ZSB0byBvbWl0CisgIC8vIHNvbWUgZGV0
YWlscyBieSBwcmludGluZyBvbmx5IHRoZSBmaXJzdCBhbmQgdGhlIGxhc3Qga0NodW5rU2l6ZQor
ICAvLyBieXRlcy4KKyAgLy8gRklYTUU6IGxldCB0aGUgdXNlciBjb250cm9sIHRoZSB0aHJlc2hv
bGQgdXNpbmcgYSBmbGFnLgorICBpZiAoY291bnQgPCBrVGhyZXNob2xkKSB7CisgICAgUHJpbnRC
eXRlU2VnbWVudEluT2JqZWN0VG8ob2JqX2J5dGVzLCAwLCBjb3VudCwgb3MpOworICB9IGVsc2Ug
eworICAgIFByaW50Qnl0ZVNlZ21lbnRJbk9iamVjdFRvKG9ial9ieXRlcywgMCwga0NodW5rU2l6
ZSwgb3MpOworICAgICpvcyA8PCAiIC4uLiAiOworICAgIC8vIFJvdW5kcyB1cCB0byAyLWJ5dGUg
Ym91bmRhcnkuCisgICAgY29uc3Qgc2l6ZV90IHJlc3VtZV9wb3MgPSAoY291bnQgLSBrQ2h1bmtT
aXplICsgMSkvMioyOworICAgIFByaW50Qnl0ZVNlZ21lbnRJbk9iamVjdFRvKG9ial9ieXRlcywg
cmVzdW1lX3BvcywgY291bnQgLSByZXN1bWVfcG9zLCBvcyk7CisgIH0KKyAgKm9zIDw8ICI+IjsK
K30KKworfSAgLy8gbmFtZXNwYWNlCisKK25hbWVzcGFjZSBpbnRlcm5hbDIgeworCisvLyBEZWxl
Z2F0ZXMgdG8gUHJpbnRCeXRlc0luT2JqZWN0VG9JbXBsKCkgdG8gcHJpbnQgdGhlIGJ5dGVzIGlu
IHRoZQorLy8gZ2l2ZW4gb2JqZWN0LiAgVGhlIGRlbGVnYXRpb24gc2ltcGxpZmllcyB0aGUgaW1w
bGVtZW50YXRpb24sIHdoaWNoCisvLyB1c2VzIHRoZSA8PCBvcGVyYXRvciBhbmQgdGh1cyBpcyBl
YXNpZXIgZG9uZSBvdXRzaWRlIG9mIHRoZQorLy8gOjp0ZXN0aW5nOjppbnRlcm5hbCBuYW1lc3Bh
Y2UsIHdoaWNoIGNvbnRhaW5zIGEgPDwgb3BlcmF0b3IgdGhhdAorLy8gc29tZXRpbWVzIGNvbmZs
aWN0cyB3aXRoIHRoZSBvbmUgaW4gU1RMLgordm9pZCBQcmludEJ5dGVzSW5PYmplY3RUbyhjb25z
dCB1bnNpZ25lZCBjaGFyKiBvYmpfYnl0ZXMsIHNpemVfdCBjb3VudCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3N0cmVhbSogb3MpIHsKKyAgUHJpbnRCeXRlc0luT2JqZWN0VG9JbXBsKG9i
al9ieXRlcywgY291bnQsIG9zKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsMgorCitu
YW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBEZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGEgY2hh
ciAob3Igd2NoYXJfdCksIHdlIHByaW50IGl0IGluIG9uZQorLy8gb2YgdGhyZWUgZm9ybWF0czoK
Ky8vICAgLSBhcyBpcyBpZiBpdCdzIGEgcHJpbnRhYmxlIEFTQ0lJIChlLmcuICdhJywgJzInLCAn
ICcpLAorLy8gICAtIGFzIGEgaGV4YWRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlIChlLmcuICdceDdG
JyksIG9yCisvLyAgIC0gYXMgYSBzcGVjaWFsIGVzY2FwZSBzZXF1ZW5jZSAoZS5nLiAnXHInLCAn
XG4nKS4KK2VudW0gQ2hhckZvcm1hdCB7CisgIGtBc0lzLAorICBrSGV4RXNjYXBlLAorICBrU3Bl
Y2lhbEVzY2FwZQorfTsKKworLy8gUmV0dXJucyB0cnVlIGlmIGMgaXMgYSBwcmludGFibGUgQVND
SUkgY2hhcmFjdGVyLiAgV2UgdGVzdCB0aGUKKy8vIHZhbHVlIG9mIGMgZGlyZWN0bHkgaW5zdGVh
ZCBvZiBjYWxsaW5nIGlzcHJpbnQoKSwgd2hpY2ggaXMgYnVnZ3kgb24KKy8vIFdpbmRvd3MgTW9i
aWxlLgoraW5saW5lIGJvb2wgSXNQcmludGFibGVBc2NpaSh3Y2hhcl90IGMpIHsKKyAgcmV0dXJu
IDB4MjAgPD0gYyAmJiBjIDw9IDB4N0U7Cit9CisKKy8vIFByaW50cyBhIHdpZGUgb3IgbmFycm93
IGNoYXIgYyBhcyBhIGNoYXJhY3RlciBsaXRlcmFsIHdpdGhvdXQgdGhlCisvLyBxdW90ZXMsIGVz
Y2FwaW5nIGl0IHdoZW4gbmVjZXNzYXJ5OyByZXR1cm5zIGhvdyBjIHdhcyBmb3JtYXR0ZWQuCisv
LyBUaGUgdGVtcGxhdGUgYXJndW1lbnQgVW5zaWduZWRDaGFyIGlzIHRoZSB1bnNpZ25lZCB2ZXJz
aW9uIG9mIENoYXIsCisvLyB3aGljaCBpcyB0aGUgdHlwZSBvZiBjLgordGVtcGxhdGUgPHR5cGVu
YW1lIFVuc2lnbmVkQ2hhciwgdHlwZW5hbWUgQ2hhcj4KK3N0YXRpYyBDaGFyRm9ybWF0IFByaW50
QXNDaGFyTGl0ZXJhbFRvKENoYXIgYywgb3N0cmVhbSogb3MpIHsKKyAgc3dpdGNoIChzdGF0aWNf
Y2FzdDx3Y2hhcl90PihjKSkgeworICAgIGNhc2UgTCdcMCc6CisgICAgICAqb3MgPDwgIlxcMCI7
CisgICAgICBicmVhazsKKyAgICBjYXNlIEwnXCcnOgorICAgICAgKm9zIDw8ICJcXCciOworICAg
ICAgYnJlYWs7CisgICAgY2FzZSBMJ1xcJzoKKyAgICAgICpvcyA8PCAiXFxcXCI7CisgICAgICBi
cmVhazsKKyAgICBjYXNlIEwnXGEnOgorICAgICAgKm9zIDw8ICJcXGEiOworICAgICAgYnJlYWs7
CisgICAgY2FzZSBMJ1xiJzoKKyAgICAgICpvcyA8PCAiXFxiIjsKKyAgICAgIGJyZWFrOworICAg
IGNhc2UgTCdcZic6CisgICAgICAqb3MgPDwgIlxcZiI7CisgICAgICBicmVhazsKKyAgICBjYXNl
IEwnXG4nOgorICAgICAgKm9zIDw8ICJcXG4iOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1xy
JzoKKyAgICAgICpvcyA8PCAiXFxyIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTCdcdCc6Cisg
ICAgICAqb3MgPDwgIlxcdCI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwnXHYnOgorICAgICAg
Km9zIDw8ICJcXHYiOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGlmIChJc1By
aW50YWJsZUFzY2lpKGMpKSB7CisgICAgICAgICpvcyA8PCBzdGF0aWNfY2FzdDxjaGFyPihjKTsK
KyAgICAgICAgcmV0dXJuIGtBc0lzOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgb3N0cmVhbTo6
Zm10ZmxhZ3MgZmxhZ3MgPSBvcy0+ZmxhZ3MoKTsKKyAgICAgICAgKm9zIDw8ICJcXHgiIDw8IHN0
ZDo6aGV4IDw8IHN0ZDo6dXBwZXJjYXNlCisgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxpbnQ+
KHN0YXRpY19jYXN0PFVuc2lnbmVkQ2hhcj4oYykpOworICAgICAgICBvcy0+ZmxhZ3MoZmxhZ3Mp
OworICAgICAgICByZXR1cm4ga0hleEVzY2FwZTsKKyAgICAgIH0KKyAgfQorICByZXR1cm4ga1Nw
ZWNpYWxFc2NhcGU7Cit9CisKKy8vIFByaW50cyBhIHdjaGFyX3QgYyBhcyBpZiBpdCdzIHBhcnQg
b2YgYSBzdHJpbmcgbGl0ZXJhbCwgZXNjYXBpbmcgaXQgd2hlbgorLy8gbmVjZXNzYXJ5OyByZXR1
cm5zIGhvdyBjIHdhcyBmb3JtYXR0ZWQuCitzdGF0aWMgQ2hhckZvcm1hdCBQcmludEFzU3RyaW5n
TGl0ZXJhbFRvKHdjaGFyX3QgYywgb3N0cmVhbSogb3MpIHsKKyAgc3dpdGNoIChjKSB7CisgICAg
Y2FzZSBMJ1wnJzoKKyAgICAgICpvcyA8PCAiJyI7CisgICAgICByZXR1cm4ga0FzSXM7CisgICAg
Y2FzZSBMJyInOgorICAgICAgKm9zIDw8ICJcXFwiIjsKKyAgICAgIHJldHVybiBrU3BlY2lhbEVz
Y2FwZTsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIFByaW50QXNDaGFyTGl0ZXJhbFRvPHdj
aGFyX3Q+KGMsIG9zKTsKKyAgfQorfQorCisvLyBQcmludHMgYSBjaGFyIGMgYXMgaWYgaXQncyBw
YXJ0IG9mIGEgc3RyaW5nIGxpdGVyYWwsIGVzY2FwaW5nIGl0IHdoZW4KKy8vIG5lY2Vzc2FyeTsg
cmV0dXJucyBob3cgYyB3YXMgZm9ybWF0dGVkLgorc3RhdGljIENoYXJGb3JtYXQgUHJpbnRBc1N0
cmluZ0xpdGVyYWxUbyhjaGFyIGMsIG9zdHJlYW0qIG9zKSB7CisgIHJldHVybiBQcmludEFzU3Ry
aW5nTGl0ZXJhbFRvKAorICAgICAgc3RhdGljX2Nhc3Q8d2NoYXJfdD4oc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4oYykpLCBvcyk7Cit9CisKKy8vIFByaW50cyBhIHdpZGUgb3IgbmFycm93IGNo
YXJhY3RlciBjIGFuZCBpdHMgY29kZS4gICdcMCcgaXMgcHJpbnRlZAorLy8gYXMgIidcXDAnIiwg
b3RoZXIgdW5wcmludGFibGUgY2hhcmFjdGVycyBhcmUgYWxzbyBwcm9wZXJseSBlc2NhcGVkCisv
LyB1c2luZyB0aGUgc3RhbmRhcmQgQysrIGVzY2FwZSBzZXF1ZW5jZS4gIFRoZSB0ZW1wbGF0ZSBh
cmd1bWVudAorLy8gVW5zaWduZWRDaGFyIGlzIHRoZSB1bnNpZ25lZCB2ZXJzaW9uIG9mIENoYXIs
IHdoaWNoIGlzIHRoZSB0eXBlIG9mIGMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVW5zaWduZWRDaGFy
LCB0eXBlbmFtZSBDaGFyPgordm9pZCBQcmludENoYXJBbmRDb2RlVG8oQ2hhciBjLCBvc3RyZWFt
KiBvcykgeworICAvLyBGaXJzdCwgcHJpbnQgYyBhcyBhIGxpdGVyYWwgaW4gdGhlIG1vc3QgcmVh
ZGFibGUgZm9ybSB3ZSBjYW4gZmluZC4KKyAgKm9zIDw8ICgoc2l6ZW9mKGMpID4gMSkgPyAiTCci
IDogIiciKTsKKyAgY29uc3QgQ2hhckZvcm1hdCBmb3JtYXQgPSBQcmludEFzQ2hhckxpdGVyYWxU
bzxVbnNpZ25lZENoYXI+KGMsIG9zKTsKKyAgKm9zIDw8ICInIjsKKworICAvLyBUbyBhaWQgdXNl
ciBkZWJ1Z2dpbmcsIHdlIGFsc28gcHJpbnQgYydzIGNvZGUgaW4gZGVjaW1hbCwgdW5sZXNzCisg
IC8vIGl0J3MgMCAoaW4gd2hpY2ggY2FzZSBjIHdhcyBwcmludGVkIGFzICdcXDAnLCBtYWtpbmcg
dGhlIGNvZGUKKyAgLy8gb2J2aW91cykuCisgIGlmIChjID09IDApCisgICAgcmV0dXJuOworICAq
b3MgPDwgIiAoIiA8PCBzdGF0aWNfY2FzdDxpbnQ+KGMpOworCisgIC8vIEZvciBtb3JlIGNvbnZl
bmllbmNlLCB3ZSBwcmludCBjJ3MgY29kZSBhZ2FpbiBpbiBoZXhhZGVjaW1hbCwKKyAgLy8gdW5s
ZXNzIGMgd2FzIGFscmVhZHkgcHJpbnRlZCBpbiB0aGUgZm9ybSAnXHgjIycgb3IgdGhlIGNvZGUg
aXMgaW4KKyAgLy8gWzEsIDldLgorICBpZiAoZm9ybWF0ID09IGtIZXhFc2NhcGUgfHwgKDEgPD0g
YyAmJiBjIDw9IDkpKSB7CisgICAgLy8gRG8gbm90aGluZy4KKyAgfSBlbHNlIHsKKyAgICAqb3Mg
PDwgIiwgMHgiIDw8IFN0cmluZzo6Rm9ybWF0SGV4SW50KHN0YXRpY19jYXN0PFVuc2lnbmVkQ2hh
cj4oYykpOworICB9CisgICpvcyA8PCAiKSI7Cit9CisKK3ZvaWQgUHJpbnRUbyh1bnNpZ25lZCBj
aGFyIGMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludENoYXJBbmRDb2RlVG88dW5zaWdu
ZWQgY2hhcj4oYywgb3MpOworfQordm9pZCBQcmludFRvKHNpZ25lZCBjaGFyIGMsIDo6c3RkOjpv
c3RyZWFtKiBvcykgeworICBQcmludENoYXJBbmRDb2RlVG88dW5zaWduZWQgY2hhcj4oYywgb3Mp
OworfQorCisvLyBQcmludHMgYSB3Y2hhcl90IGFzIGEgc3ltYm9sIGlmIGl0IGlzIHByaW50YWJs
ZSBvciBhcyBpdHMgaW50ZXJuYWwKKy8vIGNvZGUgb3RoZXJ3aXNlIGFuZCBhbHNvIGFzIGl0cyBj
b2RlLiAgTCdcMCcgaXMgcHJpbnRlZCBhcyAiTCdcXDAnIi4KK3ZvaWQgUHJpbnRUbyh3Y2hhcl90
IHdjLCBvc3RyZWFtKiBvcykgeworICBQcmludENoYXJBbmRDb2RlVG88d2NoYXJfdD4od2MsIG9z
KTsKK30KKworLy8gUHJpbnRzIHRoZSBnaXZlbiBhcnJheSBvZiBjaGFyYWN0ZXJzIHRvIHRoZSBv
c3RyZWFtLiAgQ2hhclR5cGUgbXVzdCBiZSBlaXRoZXIKKy8vIGNoYXIgb3Igd2NoYXJfdC4KKy8v
IFRoZSBhcnJheSBzdGFydHMgYXQgYmVnaW4sIHRoZSBsZW5ndGggaXMgbGVuLCBpdCBtYXkgaW5j
bHVkZSAnXDAnIGNoYXJhY3RlcnMKKy8vIGFuZCBtYXkgbm90IGJlIE5VTC10ZXJtaW5hdGVkLgor
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpF
X01FTU9SWV8KK0dURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTXworR1RFU1RfQVRU
UklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KK3N0YXRpYyBDaGFyRm9ybWF0IFByaW50Q2hhcnNB
c1N0cmluZ1RvKAorICAgIGNvbnN0IENoYXJUeXBlKiBiZWdpbiwgc2l6ZV90IGxlbiwgb3N0cmVh
bSogb3MpIHsKKyAgY29uc3QgY2hhciogY29uc3Qga1F1b3RlQmVnaW4gPSBzaXplb2YoQ2hhclR5
cGUpID09IDEgPyAiXCIiIDogIkxcIiI7CisgICpvcyA8PCBrUXVvdGVCZWdpbjsKKyAgYm9vbCBp
c19wcmV2aW91c19oZXggPSBmYWxzZTsKKyAgQ2hhckZvcm1hdCBwcmludF9mb3JtYXQgPSBrQXNJ
czsKKyAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGxlbjsgKytpbmRleCkgeworICAg
IGNvbnN0IENoYXJUeXBlIGN1ciA9IGJlZ2luW2luZGV4XTsKKyAgICBpZiAoaXNfcHJldmlvdXNf
aGV4ICYmIElzWERpZ2l0KGN1cikpIHsKKyAgICAgIC8vIFByZXZpb3VzIGNoYXJhY3RlciBpcyBv
ZiAnXHguLicgZm9ybSBhbmQgdGhpcyBjaGFyYWN0ZXIgY2FuIGJlCisgICAgICAvLyBpbnRlcnBy
ZXRlZCBhcyBhbm90aGVyIGhleGFkZWNpbWFsIGRpZ2l0IGluIGl0cyBudW1iZXIuIEJyZWFrIHN0
cmluZyB0bworICAgICAgLy8gZGlzYW1iaWd1YXRlLgorICAgICAgKm9zIDw8ICJcIiAiIDw8IGtR
dW90ZUJlZ2luOworICAgIH0KKyAgICBpc19wcmV2aW91c19oZXggPSBQcmludEFzU3RyaW5nTGl0
ZXJhbFRvKGN1ciwgb3MpID09IGtIZXhFc2NhcGU7CisgICAgLy8gUmVtZW1iZXIgaWYgYW55IGNo
YXJhY3RlcnMgcmVxdWlyZWQgaGV4IGVzY2FwaW5nLgorICAgIGlmIChpc19wcmV2aW91c19oZXgp
IHsKKyAgICAgIHByaW50X2Zvcm1hdCA9IGtIZXhFc2NhcGU7CisgICAgfQorICB9CisgICpvcyA8
PCAiXCIiOworICByZXR1cm4gcHJpbnRfZm9ybWF0OworfQorCisvLyBQcmludHMgYSAoY29uc3Qp
IGNoYXIvd2NoYXJfdCBhcnJheSBvZiAnbGVuJyBlbGVtZW50cywgc3RhcnRpbmcgYXQgYWRkcmVz
cworLy8gJ2JlZ2luJy4gIENoYXJUeXBlIG11c3QgYmUgZWl0aGVyIGNoYXIgb3Igd2NoYXJfdC4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KK0dURVNUX0FUVFJJQlVURV9OT19TQU5JVEla
RV9NRU1PUllfCitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTU18KK0dURVNUX0FU
VFJJQlVURV9OT19TQU5JVElaRV9USFJFQURfCitzdGF0aWMgdm9pZCBVbml2ZXJzYWxQcmludENo
YXJBcnJheSgKKyAgICBjb25zdCBDaGFyVHlwZSogYmVnaW4sIHNpemVfdCBsZW4sIG9zdHJlYW0q
IG9zKSB7CisgIC8vIFRoZSBjb2RlCisgIC8vICAgY29uc3QgY2hhciBrRm9vW10gPSAiZm9vIjsK
KyAgLy8gZ2VuZXJhdGVzIGFuIGFycmF5IG9mIDQsIG5vdCAzLCBlbGVtZW50cywgd2l0aCB0aGUg
bGFzdCBvbmUgYmVpbmcgJ1wwJy4KKyAgLy8KKyAgLy8gVGhlcmVmb3JlIHdoZW4gcHJpbnRpbmcg
YSBjaGFyIGFycmF5LCB3ZSBkb24ndCBwcmludCB0aGUgbGFzdCBlbGVtZW50IGlmCisgIC8vIGl0
J3MgJ1wwJywgc3VjaCB0aGF0IHRoZSBvdXRwdXQgbWF0Y2hlcyB0aGUgc3RyaW5nIGxpdGVyYWwg
YXMgaXQncworICAvLyB3cml0dGVuIGluIHRoZSBzb3VyY2UgY29kZS4KKyAgaWYgKGxlbiA+IDAg
JiYgYmVnaW5bbGVuIC0gMV0gPT0gJ1wwJykgeworICAgIFByaW50Q2hhcnNBc1N0cmluZ1RvKGJl
Z2luLCBsZW4gLSAxLCBvcyk7CisgICAgcmV0dXJuOworICB9CisKKyAgLy8gSWYsIGhvd2V2ZXIs
IHRoZSBsYXN0IGVsZW1lbnQgaW4gdGhlIGFycmF5IGlzIG5vdCAnXDAnLCBlLmcuCisgIC8vICAg
IGNvbnN0IGNoYXIga0Zvb1tdID0geyAnZicsICdvJywgJ28nIH07CisgIC8vIHdlIG11c3QgcHJp
bnQgdGhlIGVudGlyZSBhcnJheS4gIFdlIGFsc28gcHJpbnQgYSBtZXNzYWdlIHRvIGluZGljYXRl
CisgIC8vIHRoYXQgdGhlIGFycmF5IGlzIG5vdCBOVUwtdGVybWluYXRlZC4KKyAgUHJpbnRDaGFy
c0FzU3RyaW5nVG8oYmVnaW4sIGxlbiwgb3MpOworICAqb3MgPDwgIiAobm8gdGVybWluYXRpbmcg
TlVMKSI7Cit9CisKKy8vIFByaW50cyBhIChjb25zdCkgY2hhciBhcnJheSBvZiAnbGVuJyBlbGVt
ZW50cywgc3RhcnRpbmcgYXQgYWRkcmVzcyAnYmVnaW4nLgordm9pZCBVbml2ZXJzYWxQcmludEFy
cmF5KGNvbnN0IGNoYXIqIGJlZ2luLCBzaXplX3QgbGVuLCBvc3RyZWFtKiBvcykgeworICBVbml2
ZXJzYWxQcmludENoYXJBcnJheShiZWdpbiwgbGVuLCBvcyk7Cit9CisKKy8vIFByaW50cyBhIChj
b25zdCkgd2NoYXJfdCBhcnJheSBvZiAnbGVuJyBlbGVtZW50cywgc3RhcnRpbmcgYXQgYWRkcmVz
cworLy8gJ2JlZ2luJy4KK3ZvaWQgVW5pdmVyc2FsUHJpbnRBcnJheShjb25zdCB3Y2hhcl90KiBi
ZWdpbiwgc2l6ZV90IGxlbiwgb3N0cmVhbSogb3MpIHsKKyAgVW5pdmVyc2FsUHJpbnRDaGFyQXJy
YXkoYmVnaW4sIGxlbiwgb3MpOworfQorCisvLyBQcmludHMgdGhlIGdpdmVuIEMgc3RyaW5nIHRv
IHRoZSBvc3RyZWFtLgordm9pZCBQcmludFRvKGNvbnN0IGNoYXIqIHMsIG9zdHJlYW0qIG9zKSB7
CisgIGlmIChzID09IE5VTEwpIHsKKyAgICAqb3MgPDwgIk5VTEwiOworICB9IGVsc2UgeworICAg
ICpvcyA8PCBJbXBsaWNpdENhc3RfPGNvbnN0IHZvaWQqPihzKSA8PCAiIHBvaW50aW5nIHRvICI7
CisgICAgUHJpbnRDaGFyc0FzU3RyaW5nVG8ocywgc3RybGVuKHMpLCBvcyk7CisgIH0KK30KKwor
Ly8gTVNWQyBjb21waWxlciBjYW4gYmUgY29uZmlndXJlZCB0byBkZWZpbmUgd2hhcl90IGFzIGEg
dHlwZWRlZgorLy8gb2YgdW5zaWduZWQgc2hvcnQuIERlZmluaW5nIGFuIG92ZXJsb2FkIGZvciBj
b25zdCB3Y2hhcl90KiBpbiB0aGF0IGNhc2UKKy8vIHdvdWxkIGNhdXNlIHBvaW50ZXJzIHRvIHVu
c2lnbmVkIHNob3J0cyBiZSBwcmludGVkIGFzIHdpZGUgc3RyaW5ncywKKy8vIHBvc3NpYmx5IGFj
Y2Vzc2luZyBtb3JlIG1lbW9yeSB0aGFuIGludGVuZGVkIGFuZCBjYXVzaW5nIGludmFsaWQKKy8v
IG1lbW9yeSBhY2Nlc3Nlcy4gTVNWQyBkZWZpbmVzIF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEIHN5
bWJvbCB3aGVuCisvLyB3Y2hhcl90IGlzIGltcGxlbWVudGVkIGFzIGEgbmF0aXZlIHR5cGUuCisj
aWYgIWRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX05BVElWRV9XQ0hBUl9UX0RFRklORUQp
CisvLyBQcmludHMgdGhlIGdpdmVuIHdpZGUgQyBzdHJpbmcgdG8gdGhlIG9zdHJlYW0uCit2b2lk
IFByaW50VG8oY29uc3Qgd2NoYXJfdCogcywgb3N0cmVhbSogb3MpIHsKKyAgaWYgKHMgPT0gTlVM
TCkgeworICAgICpvcyA8PCAiTlVMTCI7CisgIH0gZWxzZSB7CisgICAgKm9zIDw8IEltcGxpY2l0
Q2FzdF88Y29uc3Qgdm9pZCo+KHMpIDw8ICIgcG9pbnRpbmcgdG8gIjsKKyAgICBQcmludENoYXJz
QXNTdHJpbmdUbyhzLCBzdGQ6Ondjc2xlbihzKSwgb3MpOworICB9Cit9CisjZW5kaWYgIC8vIHdj
aGFyX3QgaXMgbmF0aXZlCisKK25hbWVzcGFjZSB7CisKK2Jvb2wgQ29udGFpbnNVbnByaW50YWJs
ZUNvbnRyb2xDb2Rlcyhjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW5ndGgpIHsKKyAgY29uc3Qg
dW5zaWduZWQgY2hhciAqcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAq
PihzdHIpOworCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICB1
bnNpZ25lZCBjaGFyIGNoID0gKnMrKzsKKyAgICBpZiAoc3RkOjppc2NudHJsKGNoKSkgeworICAg
ICAgICBzd2l0Y2ggKGNoKSB7CisgICAgICAgIGNhc2UgJ1x0JzoKKyAgICAgICAgY2FzZSAnXG4n
OgorICAgICAgICBjYXNlICdccic6CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgIH0KKyAgfQorICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgSXNVVEY4VHJhaWxCeXRlKHVuc2lnbmVkIGNoYXIgdCkgeyBy
ZXR1cm4gMHg4MCA8PSB0ICYmIHQ8PSAweGJmOyB9CisKK2Jvb2wgSXNWYWxpZFVURjgoY29uc3Qg
Y2hhciogc3RyLCBzaXplX3QgbGVuZ3RoKSB7CisgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4oc3RyKTsKKworICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxlbmd0aDspIHsKKyAgICB1bnNpZ25lZCBjaGFyIGxlYWQgPSBzW2kr
K107CisKKyAgICBpZiAobGVhZCA8PSAweDdmKSB7CisgICAgICBjb250aW51ZTsgIC8vIHNpbmds
ZS1ieXRlIGNoYXJhY3RlciAoQVNDSUkpIDAuLjdGCisgICAgfQorICAgIGlmIChsZWFkIDwgMHhj
MikgeworICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gdHJhaWwgYnl0ZSBvciBub24tc2hvcnRlc3Qg
Zm9ybQorICAgIH0gZWxzZSBpZiAobGVhZCA8PSAweGRmICYmIChpICsgMSkgPD0gbGVuZ3RoICYm
IElzVVRGOFRyYWlsQnl0ZShzW2ldKSkgeworICAgICAgKytpOyAgLy8gMi1ieXRlIGNoYXJhY3Rl
cgorICAgIH0gZWxzZSBpZiAoMHhlMCA8PSBsZWFkICYmIGxlYWQgPD0gMHhlZiAmJiAoaSArIDIp
IDw9IGxlbmd0aCAmJgorICAgICAgICAgICAgICAgSXNVVEY4VHJhaWxCeXRlKHNbaV0pICYmCisg
ICAgICAgICAgICAgICBJc1VURjhUcmFpbEJ5dGUoc1tpICsgMV0pICYmCisgICAgICAgICAgICAg
ICAvLyBjaGVjayBmb3Igbm9uLXNob3J0ZXN0IGZvcm0gYW5kIHN1cnJvZ2F0ZQorICAgICAgICAg
ICAgICAgKGxlYWQgIT0gMHhlMCB8fCBzW2ldID49IDB4YTApICYmCisgICAgICAgICAgICAgICAo
bGVhZCAhPSAweGVkIHx8IHNbaV0gPCAweGEwKSkgeworICAgICAgaSArPSAyOyAgLy8gMy1ieXRl
IGNoYXJhY3RlcgorICAgIH0gZWxzZSBpZiAoMHhmMCA8PSBsZWFkICYmIGxlYWQgPD0gMHhmNCAm
JiAoaSArIDMpIDw9IGxlbmd0aCAmJgorICAgICAgICAgICAgICAgSXNVVEY4VHJhaWxCeXRlKHNb
aV0pICYmCisgICAgICAgICAgICAgICBJc1VURjhUcmFpbEJ5dGUoc1tpICsgMV0pICYmCisgICAg
ICAgICAgICAgICBJc1VURjhUcmFpbEJ5dGUoc1tpICsgMl0pICYmCisgICAgICAgICAgICAgICAv
LyBjaGVjayBmb3Igbm9uLXNob3J0ZXN0IGZvcm0KKyAgICAgICAgICAgICAgIChsZWFkICE9IDB4
ZjAgfHwgc1tpXSA+PSAweDkwKSAmJgorICAgICAgICAgICAgICAgKGxlYWQgIT0gMHhmNCB8fCBz
W2ldIDwgMHg5MCkpIHsKKyAgICAgIGkgKz0gMzsgIC8vIDQtYnl0ZSBjaGFyYWN0ZXIKKyAgICB9
IGVsc2UgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQorICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBDb25kaXRpb25hbFByaW50QXNUZXh0KGNvbnN0IGNoYXIqIHN0ciwgc2l6ZV90
IGxlbmd0aCwgb3N0cmVhbSogb3MpIHsKKyAgaWYgKCFDb250YWluc1VucHJpbnRhYmxlQ29udHJv
bENvZGVzKHN0ciwgbGVuZ3RoKSAmJgorICAgICAgSXNWYWxpZFVURjgoc3RyLCBsZW5ndGgpKSB7
CisgICAgKm9zIDw8ICJcbiAgICBBcyBUZXh0OiBcIiIgPDwgc3RyIDw8ICJcIiI7CisgIH0KK30K
KworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCisvLyBQcmludHMgYSA6OnN0cmluZyBvYmpl
Y3QuCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK3ZvaWQgUHJpbnRTdHJpbmdUbyhjb25z
dCA6OnN0cmluZyYgcywgb3N0cmVhbSogb3MpIHsKKyAgaWYgKFByaW50Q2hhcnNBc1N0cmluZ1Rv
KHMuZGF0YSgpLCBzLnNpemUoKSwgb3MpID09IGtIZXhFc2NhcGUpIHsKKyAgICBpZiAoR1RFU1Rf
RkxBRyhwcmludF91dGY4KSkgeworICAgICAgQ29uZGl0aW9uYWxQcmludEFzVGV4dChzLmRhdGEo
KSwgcy5zaXplKCksIG9zKTsKKyAgICB9CisgIH0KK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dM
T0JBTF9TVFJJTkcKKwordm9pZCBQcmludFN0cmluZ1RvKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHMs
IG9zdHJlYW0qIG9zKSB7CisgIGlmIChQcmludENoYXJzQXNTdHJpbmdUbyhzLmRhdGEoKSwgcy5z
aXplKCksIG9zKSA9PSBrSGV4RXNjYXBlKSB7CisgICAgaWYgKEdURVNUX0ZMQUcocHJpbnRfdXRm
OCkpIHsKKyAgICAgIENvbmRpdGlvbmFsUHJpbnRBc1RleHQocy5kYXRhKCksIHMuc2l6ZSgpLCBv
cyk7CisgICAgfQorICB9Cit9CisKKy8vIFByaW50cyBhIDo6d3N0cmluZyBvYmplY3QuCisjaWYg
R1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCit2b2lkIFByaW50V2lkZVN0cmluZ1RvKGNvbnN0IDo6
d3N0cmluZyYgcywgb3N0cmVhbSogb3MpIHsKKyAgUHJpbnRDaGFyc0FzU3RyaW5nVG8ocy5kYXRh
KCksIHMuc2l6ZSgpLCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklO
RworCisjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCit2b2lkIFByaW50V2lkZVN0cmluZ1RvKGNv
bnN0IDo6c3RkOjp3c3RyaW5nJiBzLCBvc3RyZWFtKiBvcykgeworICBQcmludENoYXJzQXNTdHJp
bmdUbyhzLmRhdGEoKSwgcy5zaXplKCksIG9zKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NU
RF9XU1RSSU5HCisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCit9ICAvLyBuYW1lc3BhY2Ug
dGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXRl
c3QtcGFydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10ZXN0LXBhcnQu
Y2MKaW5kZXggNWQxODNhNDQ2ZjI5NGNlOWUxYTg1ODdjOGI5MTIwYTliZWM4ODdkZC4uYzg4ODYw
ZDkyMzg1NjE5ZWE2NzY0ODg0NTgzOWQxNDU4M2YxMTE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXRlc3QtcGFydC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjCkBAIC0yNiwyMSArMjYsMTIgQEAKIC8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRo
b3I6IG1oZXVsZUBnb29nbGUuY29tIChNYXJrdXMgSGV1bGUpCi0vLwotLy8gVGhlIEdvb2dsZSBD
KysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QtdGVzdC1wYXJ0Lmg+CisvLworLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2lu
ZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5z
bGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4g
IEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVk
LCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0v
LyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJu
YWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8g
MQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oIgogI2luY2x1ZGUgInNyYy9ndGVz
dC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KIAogbmFtZXNw
YWNlIHRlc3RpbmcgewogCkBAIC00OCwxMCArMzksMTAgQEAgdXNpbmcgaW50ZXJuYWw6OkdldFVu
aXRUZXN0SW1wbDsKIAogLy8gR2V0cyB0aGUgc3VtbWFyeSBvZiB0aGUgZmFpbHVyZSBtZXNzYWdl
IGJ5IG9taXR0aW5nIHRoZSBzdGFjayB0cmFjZQogLy8gaW4gaXQuCi1pbnRlcm5hbDo6U3RyaW5n
IFRlc3RQYXJ0UmVzdWx0OjpFeHRyYWN0U3VtbWFyeShjb25zdCBjaGFyKiBtZXNzYWdlKSB7Citz
dGQ6OnN0cmluZyBUZXN0UGFydFJlc3VsdDo6RXh0cmFjdFN1bW1hcnkoY29uc3QgY2hhciogbWVz
c2FnZSkgewogICBjb25zdCBjaGFyKiBjb25zdCBzdGFja190cmFjZSA9IHN0cnN0cihtZXNzYWdl
LCBpbnRlcm5hbDo6a1N0YWNrVHJhY2VNYXJrZXIpOwotICByZXR1cm4gc3RhY2tfdHJhY2UgPT0g
TlVMTCA/IGludGVybmFsOjpTdHJpbmcobWVzc2FnZSkgOgotICAgICAgaW50ZXJuYWw6OlN0cmlu
ZyhtZXNzYWdlLCBzdGFja190cmFjZSAtIG1lc3NhZ2UpOworICByZXR1cm4gc3RhY2tfdHJhY2Ug
PT0gTlVMTCA/IG1lc3NhZ2UgOgorICAgICAgc3RkOjpzdHJpbmcobWVzc2FnZSwgc3RhY2tfdHJh
Y2UpOwogfQogCiAvLyBQcmludHMgYSBUZXN0UGFydFJlc3VsdCBvYmplY3QuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtdHlwZWQtdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10eXBlZC10ZXN0LmNjCmluZGV4IDNjYzRiNWRl
MmFhY2I3NTk4OTExOWM1Zjk2YzdmNGY4MGVhZDVjYWUuLjFkYzJhZDM4YmFiOThiYzE0NmMxNjE1
OGE0N2RhMWUzOTRiZjM4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Ny
Yy9ndGVzdC10eXBlZC10ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9n
dGVzdC10eXBlZC10ZXN0LmNjCkBAIC0yNiwxMSArMjYsMTEgQEAKIC8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUu
Y29tIChaaGFueW9uZyBXYW4pCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC10eXBlZC10ZXN0Lmg+
Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXR5cGVk
LXRlc3QuaCIKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIG5hbWVzcGFjZSB0ZXN0aW5n
IHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CkBAIC00MCwzOCArNDAsNDYgQEAgbmFtZXNwYWNlIGlu
dGVybmFsIHsKIC8vIFNraXBzIHRvIHRoZSBmaXJzdCBub24tc3BhY2UgY2hhciBpbiBzdHIuIFJl
dHVybnMgYW4gZW1wdHkgc3RyaW5nIGlmIHN0cgogLy8gY29udGFpbnMgb25seSB3aGl0ZXNwYWNl
IGNoYXJhY3RlcnMuCiBzdGF0aWMgY29uc3QgY2hhciogU2tpcFNwYWNlcyhjb25zdCBjaGFyKiBz
dHIpIHsKLSAgd2hpbGUgKGlzc3BhY2UoKnN0cikpCisgIHdoaWxlIChJc1NwYWNlKCpzdHIpKQog
ICAgIHN0cisrOwogICByZXR1cm4gc3RyOwogfQogCitzdGF0aWMgc3RkOjp2ZWN0b3I8c3RkOjpz
dHJpbmc+IFNwbGl0SW50b1Rlc3ROYW1lcyhjb25zdCBjaGFyKiBzcmMpIHsKKyAgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+IG5hbWVfdmVjOworICBzcmMgPSBTa2lwU3BhY2VzKHNyYyk7CisgIGZv
ciAoOyBzcmMgIT0gTlVMTDsgc3JjID0gU2tpcENvbW1hKHNyYykpIHsKKyAgICBuYW1lX3ZlYy5w
dXNoX2JhY2soU3RyaXBUcmFpbGluZ1NwYWNlcyhHZXRQcmVmaXhVbnRpbENvbW1hKHNyYykpKTsK
KyAgfQorICByZXR1cm4gbmFtZV92ZWM7Cit9CisKIC8vIFZlcmlmaWVzIHRoYXQgcmVnaXN0ZXJl
ZF90ZXN0cyBtYXRjaCB0aGUgdGVzdCBuYW1lcyBpbgotLy8gZGVmaW5lZF90ZXN0X25hbWVzXzsg
cmV0dXJucyByZWdpc3RlcmVkX3Rlc3RzIGlmIHN1Y2Nlc3NmdWwsIG9yCisvLyByZWdpc3RlcmVk
X3Rlc3RzXzsgcmV0dXJucyByZWdpc3RlcmVkX3Rlc3RzIGlmIHN1Y2Nlc3NmdWwsIG9yCiAvLyBh
Ym9ydHMgdGhlIHByb2dyYW0gb3RoZXJ3aXNlLgogY29uc3QgY2hhciogVHlwZWRUZXN0Q2FzZVBT
dGF0ZTo6VmVyaWZ5UmVnaXN0ZXJlZFRlc3ROYW1lcygKICAgICBjb25zdCBjaGFyKiBmaWxlLCBp
bnQgbGluZSwgY29uc3QgY2hhciogcmVnaXN0ZXJlZF90ZXN0cykgewotICB0eXBlZGVmIDo6c3Rk
OjpzZXQ8Y29uc3QgY2hhcio+Ojpjb25zdF9pdGVyYXRvciBEZWZpbmVkVGVzdEl0ZXI7CisgIHR5
cGVkZWYgUmVnaXN0ZXJlZFRlc3RzTWFwOjpjb25zdF9pdGVyYXRvciBSZWdpc3RlcmVkVGVzdEl0
ZXI7CiAgIHJlZ2lzdGVyZWRfID0gdHJ1ZTsKIAotICAvLyBTa2lwIGluaXRpYWwgd2hpdGVzcGFj
ZSBpbiByZWdpc3RlcmVkX3Rlc3RzIHNpbmNlIHNvbWUKLSAgLy8gcHJlcHJvY2Vzc29ycyBwcmVm
aXggc3RyaW5naXppZWQgbGl0ZXJhbHMgd2l0aCB3aGl0ZXNwYWNlLgotICByZWdpc3RlcmVkX3Rl
c3RzID0gU2tpcFNwYWNlcyhyZWdpc3RlcmVkX3Rlc3RzKTsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpz
dHJpbmc+IG5hbWVfdmVjID0gU3BsaXRJbnRvVGVzdE5hbWVzKHJlZ2lzdGVyZWRfdGVzdHMpOwog
CiAgIE1lc3NhZ2UgZXJyb3JzOwotICA6OnN0ZDo6c2V0PFN0cmluZz4gdGVzdHM7Ci0gIGZvciAo
Y29uc3QgY2hhciogbmFtZXMgPSByZWdpc3RlcmVkX3Rlc3RzOyBuYW1lcyAhPSBOVUxMOwotICAg
ICAgIG5hbWVzID0gU2tpcENvbW1hKG5hbWVzKSkgewotICAgIGNvbnN0IFN0cmluZyBuYW1lID0g
R2V0UHJlZml4VW50aWxDb21tYShuYW1lcyk7CisKKyAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IHRl
c3RzOworICBmb3IgKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgbmFt
ZV9pdCA9IG5hbWVfdmVjLmJlZ2luKCk7CisgICAgICAgbmFtZV9pdCAhPSBuYW1lX3ZlYy5lbmQo
KTsgKytuYW1lX2l0KSB7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUgPSAqbmFtZV9pdDsK
ICAgICBpZiAodGVzdHMuY291bnQobmFtZSkgIT0gMCkgewogICAgICAgZXJyb3JzIDw8ICJUZXN0
ICIgPDwgbmFtZSA8PCAiIGlzIGxpc3RlZCBtb3JlIHRoYW4gb25jZS5cbiI7CiAgICAgICBjb250
aW51ZTsKICAgICB9CiAKICAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgZm9yIChEZWZpbmVk
VGVzdEl0ZXIgaXQgPSBkZWZpbmVkX3Rlc3RfbmFtZXNfLmJlZ2luKCk7Ci0gICAgICAgICBpdCAh
PSBkZWZpbmVkX3Rlc3RfbmFtZXNfLmVuZCgpOworICAgIGZvciAoUmVnaXN0ZXJlZFRlc3RJdGVy
IGl0ID0gcmVnaXN0ZXJlZF90ZXN0c18uYmVnaW4oKTsKKyAgICAgICAgIGl0ICE9IHJlZ2lzdGVy
ZWRfdGVzdHNfLmVuZCgpOwogICAgICAgICAgKytpdCkgewotICAgICAgaWYgKG5hbWUgPT0gKml0
KSB7CisgICAgICBpZiAobmFtZSA9PSBpdC0+Zmlyc3QpIHsKICAgICAgICAgZm91bmQgPSB0cnVl
OwogICAgICAgICBicmVhazsKICAgICAgIH0KQEAgLTg1LDE1ICs5MywxNSBAQCBjb25zdCBjaGFy
KiBUeXBlZFRlc3RDYXNlUFN0YXRlOjpWZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVzKAogICAgIH0K
ICAgfQogCi0gIGZvciAoRGVmaW5lZFRlc3RJdGVyIGl0ID0gZGVmaW5lZF90ZXN0X25hbWVzXy5i
ZWdpbigpOwotICAgICAgIGl0ICE9IGRlZmluZWRfdGVzdF9uYW1lc18uZW5kKCk7CisgIGZvciAo
UmVnaXN0ZXJlZFRlc3RJdGVyIGl0ID0gcmVnaXN0ZXJlZF90ZXN0c18uYmVnaW4oKTsKKyAgICAg
ICBpdCAhPSByZWdpc3RlcmVkX3Rlc3RzXy5lbmQoKTsKICAgICAgICArK2l0KSB7Ci0gICAgaWYg
KHRlc3RzLmNvdW50KCppdCkgPT0gMCkgewotICAgICAgZXJyb3JzIDw8ICJZb3UgZm9yZ290IHRv
IGxpc3QgdGVzdCAiIDw8ICppdCA8PCAiLlxuIjsKKyAgICBpZiAodGVzdHMuY291bnQoaXQtPmZp
cnN0KSA9PSAwKSB7CisgICAgICBlcnJvcnMgPDwgIllvdSBmb3Jnb3QgdG8gbGlzdCB0ZXN0ICIg
PDwgaXQtPmZpcnN0IDw8ICIuXG4iOwogICAgIH0KICAgfQogCi0gIGNvbnN0IFN0cmluZyYgZXJy
b3JzX3N0ciA9IGVycm9ycy5HZXRTdHJpbmcoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIGVycm9y
c19zdHIgPSBlcnJvcnMuR2V0U3RyaW5nKCk7CiAgIGlmIChlcnJvcnNfc3RyICE9ICIiKSB7CiAg
ICAgZnByaW50ZihzdGRlcnIsICIlcyAlcyIsIEZvcm1hdEZpbGVMb2NhdGlvbihmaWxlLCBsaW5l
KS5jX3N0cigpLAogICAgICAgICAgICAgZXJyb3JzX3N0ci5jX3N0cigpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NyYy9ndGVzdC5jYwppbmRleCA1Yjg3MWMwYWRiMGExYzRjZmEyMzc1NTQwNTdkNTE2
MDg0NjE5NTBlLi45Nzk2NjM3NzQ5YTdhZGE5NDAzZDZhZDhkNjVjMmE2Njc1NWQ0MTQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LmNjCkBAIC0yNiwxMTIgKzI2LDEzMSBAQAogLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0
aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRoZSBHb29nbGUgQysr
IFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIFRoZSBHb29nbGUgQysrIFRlc3Rp
bmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIAotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+CisjaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QuaCIKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC1zcGkuaCIKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAjaW5jbHVkZSA8
bWF0aC5oPgogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVk
ZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1ZGUgPHdjaGFyLmg+CiAjaW5j
bHVkZSA8d2N0eXBlLmg+CiAKICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8b3N0cmVh
bT4KKyNpbmNsdWRlIDxpb21hbmlwPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxsaXN0
PgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxvc3RyZWFtPiAgLy8gTk9MSU5UCiAjaW5jbHVk
ZSA8c3N0cmVhbT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpZiBHVEVTVF9PU19MSU5VWAogCi0v
LyBUT0RPKGtlbnRvbkBnb29nbGUuY29tKTogVXNlIGF1dG9jb25mIHRvIGRldGVjdCBhdmFpbGFi
aWxpdHkgb2YKKy8vIEZJWE1FOiBVc2UgYXV0b2NvbmYgdG8gZGV0ZWN0IGF2YWlsYWJpbGl0eSBv
ZgogLy8gZ2V0dGltZW9mZGF5KCkuCi0jZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEK
KyMgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKIAotI2luY2x1ZGUgPGZjbnRsLmg+
Ci0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8c2NoZWQuaD4KKyMgaW5jbHVkZSA8ZmNu
dGwuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxsaW1pdHMuaD4gIC8vIE5PTElOVAorIyBpbmNs
dWRlIDxzY2hlZC5oPiAgLy8gTk9MSU5UCiAvLyBEZWNsYXJlcyB2c25wcmludGYoKS4gIFRoaXMg
aGVhZGVyIGlzIG5vdCBhdmFpbGFibGUgb24gV2luZG93cy4KLSNpbmNsdWRlIDxzdHJpbmdzLmg+
Ci0jaW5jbHVkZSA8c3lzL21tYW4uaD4KLSNpbmNsdWRlIDxzeXMvdGltZS5oPgotI2luY2x1ZGUg
PHVuaXN0ZC5oPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+CisjIGluY2x1
ZGUgPHN0cmluZ3MuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxzeXMvbW1hbi5oPiAgLy8gTk9M
SU5UCisjIGluY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8dW5pc3Rk
Lmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3RyaW5nPgogCiAjZWxpZiBHVEVTVF9PU19TWU1C
SUFOCi0jZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKLSNpbmNsdWRlIDxzeXMvdGlt
ZS5oPiAgLy8gTk9MSU5UCisjIGRlZmluZSBHVEVTVF9IQVNfR0VUVElNRU9GREFZXyAxCisjIGlu
Y2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKIAogI2VsaWYgR1RFU1RfT1NfWk9TCi0jZGVm
aW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKLSNpbmNsdWRlIDxzeXMvdGltZS5oPiAgLy8g
Tk9MSU5UCisjIGRlZmluZSBHVEVTVF9IQVNfR0VUVElNRU9GREFZXyAxCisjIGluY2x1ZGUgPHN5
cy90aW1lLmg+ICAvLyBOT0xJTlQKIAogLy8gT24gei9PUyB3ZSBhZGRpdGlvbmFsbHkgbmVlZCBz
dHJpbmdzLmggZm9yIHN0cmNhc2VjbXAuCi0jaW5jbHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5U
CisjIGluY2x1ZGUgPHN0cmluZ3MuaD4gIC8vIE5PTElOVAogCiAjZWxpZiBHVEVTVF9PU19XSU5E
T1dTX01PQklMRSAgLy8gV2UgYXJlIG9uIFdpbmRvd3MgQ0UuCiAKLSNpbmNsdWRlIDx3aW5kb3dz
Lmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gTk9MSU5UCisjIHVuZGVm
IG1pbgogCiAjZWxpZiBHVEVTVF9PU19XSU5ET1dTICAvLyBXZSBhcmUgb24gV2luZG93cyBwcm9w
ZXIuCiAKLSNpbmNsdWRlIDxpby5oPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8c3lzL3RpbWViLmg+
ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUg
PHN5cy9zdGF0Lmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8aW8uaD4gIC8vIE5PTElOVAorIyBp
bmNsdWRlIDxzeXMvdGltZWIuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4g
IC8vIE5PTElOVAorIyBpbmNsdWRlIDxzeXMvc3RhdC5oPiAgLy8gTk9MSU5UCiAKLSNpZiBHVEVT
VF9PU19XSU5ET1dTX01JTkdXCisjIGlmIEdURVNUX09TX1dJTkRPV1NfTUlOR1cKIC8vIE1pbkdX
IGhhcyBnZXR0aW1lb2ZkYXkoKSBidXQgbm90IF9mdGltZTY0KCkuCi0vLyBUT0RPKGtlbnRvbkBn
b29nbGUuY29tKTogVXNlIGF1dG9jb25mIHRvIGRldGVjdCBhdmFpbGFiaWxpdHkgb2YKKy8vIEZJ
WE1FOiBVc2UgYXV0b2NvbmYgdG8gZGV0ZWN0IGF2YWlsYWJpbGl0eSBvZgogLy8gICBnZXR0aW1l
b2ZkYXkoKS4KLS8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBUaGVyZSBhcmUgb3RoZXIgd2F5
cyB0byBnZXQgdGhlIHRpbWUgb24KKy8vIEZJWE1FOiBUaGVyZSBhcmUgb3RoZXIgd2F5cyB0byBn
ZXQgdGhlIHRpbWUgb24KIC8vICAgV2luZG93cywgbGlrZSBHZXRUaWNrQ291bnQoKSBvciBHZXRT
eXN0ZW1UaW1lQXNGaWxlVGltZSgpLiAgTWluR1cKIC8vICAgc3VwcG9ydHMgdGhlc2UuICBjb25z
aWRlciB1c2luZyB0aGVtIGluc3RlYWQuCi0jZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlf
IDEKLSNpbmNsdWRlIDxzeXMvdGltZS5oPiAgLy8gTk9MSU5UCi0jZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1NfTUlOR1cKKyMgIGRlZmluZSBHVEVTVF9IQVNfR0VUVElNRU9GREFZXyAxCisjICBp
bmNsdWRlIDxzeXMvdGltZS5oPiAgLy8gTk9MSU5UCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5E
T1dTX01JTkdXCiAKIC8vIGNwcGxpbnQgdGhpbmtzIHRoYXQgdGhlIGhlYWRlciBpcyBhbHJlYWR5
IGluY2x1ZGVkLCBzbyB3ZSB3YW50IHRvCiAvLyBzaWxlbmNlIGl0LgotI2luY2x1ZGUgPHdpbmRv
d3MuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBOT0xJTlQKKyMgdW5k
ZWYgbWluCiAKICNlbHNlCiAKIC8vIEFzc3VtZSBvdGhlciBwbGF0Zm9ybXMgaGF2ZSBnZXR0aW1l
b2ZkYXkoKS4KLS8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBVc2UgYXV0b2NvbmYgdG8gZGV0
ZWN0IGF2YWlsYWJpbGl0eSBvZgorLy8gRklYTUU6IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZh
aWxhYmlsaXR5IG9mCiAvLyAgIGdldHRpbWVvZmRheSgpLgotI2RlZmluZSBHVEVTVF9IQVNfR0VU
VElNRU9GREFZXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfR0VUVElNRU9GREFZXyAxCiAKIC8vIGNw
cGxpbnQgdGhpbmtzIHRoYXQgdGhlIGhlYWRlciBpcyBhbHJlYWR5IGluY2x1ZGVkLCBzbyB3ZSB3
YW50IHRvCiAvLyBzaWxlbmNlIGl0LgotI2luY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQK
LSNpbmNsdWRlIDx1bmlzdGQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxzeXMvdGltZS5oPiAg
Ly8gTk9MSU5UCisjIGluY2x1ZGUgPHVuaXN0ZC5oPiAgLy8gTk9MSU5UCiAKICNlbmRpZiAgLy8g
R1RFU1RfT1NfTElOVVgKIAogI2lmIEdURVNUX0hBU19FWENFUFRJT05TCi0jaW5jbHVkZSA8c3Rk
ZXhjZXB0PgorIyBpbmNsdWRlIDxzdGRleGNlcHQ+CisjZW5kaWYKKworI2lmIEdURVNUX0NBTl9T
VFJFQU1fUkVTVUxUU18KKyMgaW5jbHVkZSA8YXJwYS9pbmV0Lmg+ICAvLyBOT0xJTlQKKyMgaW5j
bHVkZSA8bmV0ZGIuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+ICAvLyBO
T0xJTlQKKyMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAvLyBOT0xJTlQKICNlbmRpZgogCi0vLyBJ
bmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVz
dCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJu
YWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJy
b3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxs
eSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmlu
ZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQogI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1p
bmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KIAogI2lmIEdURVNUX09TX1dJTkRP
V1MKLSNkZWZpbmUgdnNucHJpbnRmIF92c25wcmludGYKKyMgZGVmaW5lIHZzbnByaW50ZiBfdnNu
cHJpbnRmCiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAorI2lmIEdURVNUX09TX01BQwor
I2lmbmRlZiBHVEVTVF9PU19JT1MKKyNpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgorI2VuZGlmCisj
ZW5kaWYKKworI2lmIEdURVNUX0hBU19BQlNMCisjaW5jbHVkZSAiYWJzbC9kZWJ1Z2dpbmcvZmFp
bHVyZV9zaWduYWxfaGFuZGxlci5oIgorI2luY2x1ZGUgImFic2wvZGVidWdnaW5nL3N0YWNrdHJh
Y2UuaCIKKyNpbmNsdWRlICJhYnNsL2RlYnVnZ2luZy9zeW1ib2xpemUuaCIKKyNpbmNsdWRlICJh
YnNsL3N0cmluZ3Mvc3RyX2NhdC5oIgorI2VuZGlmICAvLyBHVEVTVF9IQVNfQUJTTAorCiBuYW1l
c3BhY2UgdGVzdGluZyB7CiAKIHVzaW5nIGludGVybmFsOjpDb3VudElmOwpAQCAtMTUzLDggKzE3
MiwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciBrRGVhdGhUZXN0Q2FzZUZpbHRlcltdID0gIipEZWF0
aFRlc3Q6KkRlYXRoVGVzdC8qIjsKIC8vIEEgdGVzdCBmaWx0ZXIgdGhhdCBtYXRjaGVzIGV2ZXJ5
dGhpbmcuCiBzdGF0aWMgY29uc3QgY2hhciBrVW5pdmVyc2FsRmlsdGVyW10gPSAiKiI7CiAKLS8v
IFRoZSBkZWZhdWx0IG91dHB1dCBmaWxlIGZvciBYTUwgb3V0cHV0Lgotc3RhdGljIGNvbnN0IGNo
YXIga0RlZmF1bHRPdXRwdXRGaWxlW10gPSAidGVzdF9kZXRhaWwueG1sIjsKKy8vIFRoZSBkZWZh
dWx0IG91dHB1dCBmb3JtYXQuCitzdGF0aWMgY29uc3QgY2hhciBrRGVmYXVsdE91dHB1dEZvcm1h
dFtdID0gInhtbCI7CisvLyBUaGUgZGVmYXVsdCBvdXRwdXQgZmlsZS4KK3N0YXRpYyBjb25zdCBj
aGFyIGtEZWZhdWx0T3V0cHV0RmlsZVtdID0gInRlc3RfZGV0YWlsIjsKIAogLy8gVGhlIGVudmly
b25tZW50IHZhcmlhYmxlIG5hbWUgZm9yIHRoZSB0ZXN0IHNoYXJkIGluZGV4Lgogc3RhdGljIGNv
bnN0IGNoYXIga1Rlc3RTaGFyZEluZGV4W10gPSAiR1RFU1RfU0hBUkRfSU5ERVgiOwpAQCAtMTcz
LDggKzE5NCwzNCBAQCBjb25zdCBjaGFyIGtTdGFja1RyYWNlTWFya2VyW10gPSAiXG5TdGFjayB0
cmFjZTpcbiI7CiAvLyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KIGJvb2wgZ19oZWxw
X2ZsYWcgPSBmYWxzZTsKIAorLy8gVXRpbHR5IGZ1bmN0aW9uIHRvIE9wZW4gRmlsZSBmb3IgV3Jp
dGluZworc3RhdGljIEZJTEUqIE9wZW5GaWxlRm9yV3JpdGluZyhjb25zdCBzdGQ6OnN0cmluZyYg
b3V0cHV0X2ZpbGUpIHsKKyAgRklMRSogZmlsZW91dCA9IE5VTEw7CisgIEZpbGVQYXRoIG91dHB1
dF9maWxlX3BhdGgob3V0cHV0X2ZpbGUpOworICBGaWxlUGF0aCBvdXRwdXRfZGlyKG91dHB1dF9m
aWxlX3BhdGguUmVtb3ZlRmlsZU5hbWUoKSk7CisKKyAgaWYgKG91dHB1dF9kaXIuQ3JlYXRlRGly
ZWN0b3JpZXNSZWN1cnNpdmVseSgpKSB7CisgICAgZmlsZW91dCA9IHBvc2l4OjpGT3BlbihvdXRw
dXRfZmlsZS5jX3N0cigpLCAidyIpOworICB9CisgIGlmIChmaWxlb3V0ID09IE5VTEwpIHsKKyAg
ICBHVEVTVF9MT0dfKEZBVEFMKSA8PCAiVW5hYmxlIHRvIG9wZW4gZmlsZSBcIiIgPDwgb3V0cHV0
X2ZpbGUgPDwgIlwiIjsKKyAgfQorICByZXR1cm4gZmlsZW91dDsKK30KKwogfSAgLy8gbmFtZXNw
YWNlIGludGVybmFsCiAKKy8vIEJhemVsIHBhc3NlcyBpbiB0aGUgYXJndW1lbnQgdG8gJy0tdGVz
dF9maWx0ZXInIHZpYSB0aGUgVEVTVEJSSURHRV9URVNUX09OTFkKKy8vIGVudmlyb25tZW50IHZh
cmlhYmxlLgorc3RhdGljIGNvbnN0IGNoYXIqIEdldERlZmF1bHRGaWx0ZXIoKSB7CisgIGNvbnN0
IGNoYXIqIGNvbnN0IHRlc3RicmlkZ2VfdGVzdF9vbmx5ID0KKyAgICAgIGludGVybmFsOjpwb3Np
eDo6R2V0RW52KCJURVNUQlJJREdFX1RFU1RfT05MWSIpOworICBpZiAodGVzdGJyaWRnZV90ZXN0
X29ubHkgIT0gTlVMTCkgeworICAgIHJldHVybiB0ZXN0YnJpZGdlX3Rlc3Rfb25seTsKKyAgfQor
ICByZXR1cm4ga1VuaXZlcnNhbEZpbHRlcjsKK30KKwogR1RFU1RfREVGSU5FX2Jvb2xfKAogICAg
IGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzLAogICAgIGludGVybmFsOjpCb29sRnJvbUdUZXN0RW52
KCJhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyIsIGZhbHNlKSwKQEAgLTE4Nyw3ICsyMzQsNyBAQCBH
VEVTVF9ERUZJTkVfYm9vbF8oCiAKIEdURVNUX0RFRklORV9ib29sXygKICAgICBjYXRjaF9leGNl
cHRpb25zLAotICAgIGludGVybmFsOjpCb29sRnJvbUdUZXN0RW52KCJjYXRjaF9leGNlcHRpb25z
IiwgZmFsc2UpLAorICAgIGludGVybmFsOjpCb29sRnJvbUdUZXN0RW52KCJjYXRjaF9leGNlcHRp
b25zIiwgdHJ1ZSksCiAgICAgIlRydWUgaWZmICIgR1RFU1RfTkFNRV8KICAgICAiIHNob3VsZCBj
YXRjaCBleGNlcHRpb25zIGFuZCB0cmVhdCB0aGVtIGFzIHRlc3QgZmFpbHVyZXMuIik7CiAKQEAg
LTE5NywyNiArMjQ0LDM5IEBAIEdURVNUX0RFRklORV9zdHJpbmdfKAogICAgICJXaGV0aGVyIHRv
IHVzZSBjb2xvcnMgaW4gdGhlIG91dHB1dC4gIFZhbGlkIHZhbHVlczogeWVzLCBubywgIgogICAg
ICJhbmQgYXV0by4gICdhdXRvJyBtZWFucyB0byB1c2UgY29sb3JzIGlmIHRoZSBvdXRwdXQgaXMg
IgogICAgICJiZWluZyBzZW50IHRvIGEgdGVybWluYWwgYW5kIHRoZSBURVJNIGVudmlyb25tZW50
IHZhcmlhYmxlICIKLSAgICAiaXMgc2V0IHRvIHh0ZXJtLCB4dGVybS1jb2xvciwgeHRlcm0tMjU2
Y29sb3IsIGxpbnV4IG9yIGN5Z3dpbi4iKTsKKyAgICAiaXMgc2V0IHRvIGEgdGVybWluYWwgdHlw
ZSB0aGF0IHN1cHBvcnRzIGNvbG9ycy4iKTsKIAogR1RFU1RfREVGSU5FX3N0cmluZ18oCiAgICAg
ZmlsdGVyLAotICAgIGludGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYoImZpbHRlciIsIGtVbml2
ZXJzYWxGaWx0ZXIpLAorICAgIGludGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYoImZpbHRlciIs
IEdldERlZmF1bHRGaWx0ZXIoKSksCiAgICAgIkEgY29sb24tc2VwYXJhdGVkIGxpc3Qgb2YgZ2xv
YiAobm90IHJlZ2V4KSBwYXR0ZXJucyAiCiAgICAgImZvciBmaWx0ZXJpbmcgdGhlIHRlc3RzIHRv
IHJ1biwgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhICIKICAgICAiJy0nIGFuZCBhIDogc2VwYXJh
dGVkIGxpc3Qgb2YgbmVnYXRpdmUgcGF0dGVybnMgKHRlc3RzIHRvICIKICAgICAiZXhjbHVkZSku
ICBBIHRlc3QgaXMgcnVuIGlmIGl0IG1hdGNoZXMgb25lIG9mIHRoZSBwb3NpdGl2ZSAiCiAgICAg
InBhdHRlcm5zIGFuZCBkb2VzIG5vdCBtYXRjaCBhbnkgb2YgdGhlIG5lZ2F0aXZlIHBhdHRlcm5z
LiIpOwogCitHVEVTVF9ERUZJTkVfYm9vbF8oCisgICAgaW5zdGFsbF9mYWlsdXJlX3NpZ25hbF9o
YW5kbGVyLAorICAgIGludGVybmFsOjpCb29sRnJvbUdUZXN0RW52KCJpbnN0YWxsX2ZhaWx1cmVf
c2lnbmFsX2hhbmRsZXIiLCBmYWxzZSksCisgICAgIklmIHRydWUgYW5kIHN1cHBvcnRlZCBvbiB0
aGUgY3VycmVudCBwbGF0Zm9ybSwgIiBHVEVTVF9OQU1FXyAiIHNob3VsZCAiCisgICAgImluc3Rh
bGwgYSBzaWduYWwgaGFuZGxlciB0aGF0IGR1bXBzIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiB3aGVu
IGZhdGFsICIKKyAgICAic2lnbmFscyBhcmUgcmFpc2VkLiIpOworCiBHVEVTVF9ERUZJTkVfYm9v
bF8obGlzdF90ZXN0cywgZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgIkxpc3QgYWxsIHRlc3Rz
IHdpdGhvdXQgcnVubmluZyB0aGVtLiIpOwogCisvLyBUaGUgbmV0IHByaW9yaXR5IG9yZGVyIGFm
dGVyIGZsYWcgcHJvY2Vzc2luZyBpcyB0aHVzOgorLy8gICAtLWd0ZXN0X291dHB1dCBjb21tYW5k
IGxpbmUgZmxhZworLy8gICBHVEVTVF9PVVRQVVQgZW52aXJvbm1lbnQgdmFyaWFibGUKKy8vICAg
WE1MX09VVFBVVF9GSUxFIGVudmlyb25tZW50IHZhcmlhYmxlCisvLyAgICcnCiBHVEVTVF9ERUZJ
TkVfc3RyaW5nXygKICAgICBvdXRwdXQsCi0gICAgaW50ZXJuYWw6OlN0cmluZ0Zyb21HVGVzdEVu
digib3V0cHV0IiwgIiIpLAotICAgICJBIGZvcm1hdCAoY3VycmVudGx5IG11c3QgYmUgXCJ4bWxc
IiksIG9wdGlvbmFsbHkgZm9sbG93ZWQgIgotICAgICJieSBhIGNvbG9uIGFuZCBhbiBvdXRwdXQg
ZmlsZSBuYW1lIG9yIGRpcmVjdG9yeS4gQSBkaXJlY3RvcnkgIgotICAgICJpcyBpbmRpY2F0ZWQg
YnkgYSB0cmFpbGluZyBwYXRobmFtZSBzZXBhcmF0b3IuICIKKyAgICBpbnRlcm5hbDo6U3RyaW5n
RnJvbUdUZXN0RW52KCJvdXRwdXQiLAorICAgICAgaW50ZXJuYWw6Ok91dHB1dEZsYWdBbHNvQ2hl
Y2tFbnZWYXIoKS5jX3N0cigpKSwKKyAgICAiQSBmb3JtYXQgKGRlZmF1bHRzIHRvIFwieG1sXCIg
YnV0IGNhbiBiZSBzcGVjaWZpZWQgdG8gYmUgXCJqc29uXCIpLCAiCisgICAgIm9wdGlvbmFsbHkg
Zm9sbG93ZWQgYnkgYSBjb2xvbiBhbmQgYW4gb3V0cHV0IGZpbGUgbmFtZSBvciBkaXJlY3Rvcnku
ICIKKyAgICAiQSBkaXJlY3RvcnkgaXMgaW5kaWNhdGVkIGJ5IGEgdHJhaWxpbmcgcGF0aG5hbWUg
c2VwYXJhdG9yLiAiCiAgICAgIkV4YW1wbGVzOiBcInhtbDpmaWxlbmFtZS54bWxcIiwgXCJ4bWw6
OmRpcmVjdG9yeW5hbWUvXCIuICIKICAgICAiSWYgYSBkaXJlY3RvcnkgaXMgc3BlY2lmaWVkLCBv
dXRwdXQgZmlsZXMgd2lsbCBiZSBjcmVhdGVkICIKICAgICAid2l0aGluIHRoYXQgZGlyZWN0b3J5
LCB3aXRoIGZpbGUtbmFtZXMgYmFzZWQgb24gdGhlIHRlc3QgIgpAQCAtMjI5LDYgKzI4OSwxMiBA
QCBHVEVTVF9ERUZJTkVfYm9vbF8oCiAgICAgIlRydWUgaWZmICIgR1RFU1RfTkFNRV8KICAgICAi
IHNob3VsZCBkaXNwbGF5IGVsYXBzZWQgdGltZSBpbiB0ZXh0IG91dHB1dC4iKTsKIAorR1RFU1Rf
REVGSU5FX2Jvb2xfKAorICAgIHByaW50X3V0ZjgsCisgICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rl
c3RFbnYoInByaW50X3V0ZjgiLCB0cnVlKSwKKyAgICAiVHJ1ZSBpZmYgIiBHVEVTVF9OQU1FXwor
ICAgICIgcHJpbnRzIFVURjggY2hhcmFjdGVycyBhcyB0ZXh0LiIpOworCiBHVEVTVF9ERUZJTkVf
aW50MzJfKAogICAgIHJhbmRvbV9zZWVkLAogICAgIGludGVybmFsOjpJbnQzMkZyb21HVGVzdEVu
digicmFuZG9tX3NlZWQiLCAwKSwKQEAgLTI1OCwxMiArMzI0LDI2IEBAIEdURVNUX0RFRklORV9p
bnQzMl8oCiAgICAgIlRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMgdG8gcHJpbnQg
d2hlbiBhbiAiCiAgICAgImFzc2VydGlvbiBmYWlscy4gIFRoZSB2YWxpZCByYW5nZSBpcyAwIHRo
cm91Z2ggMTAwLCBpbmNsdXNpdmUuIik7CiAKK0dURVNUX0RFRklORV9zdHJpbmdfKAorICAgIHN0
cmVhbV9yZXN1bHRfdG8sCisgICAgaW50ZXJuYWw6OlN0cmluZ0Zyb21HVGVzdEVudigic3RyZWFt
X3Jlc3VsdF90byIsICIiKSwKKyAgICAiVGhpcyBmbGFnIHNwZWNpZmllcyB0aGUgaG9zdCBuYW1l
IGFuZCB0aGUgcG9ydCBudW1iZXIgb24gd2hpY2ggdG8gc3RyZWFtICIKKyAgICAidGVzdCByZXN1
bHRzLiBFeGFtcGxlOiBcImxvY2FsaG9zdDo1NTVcIi4gVGhlIGZsYWcgaXMgZWZmZWN0aXZlIG9u
bHkgb24gIgorICAgICJMaW51eC4iKTsKKwogR1RFU1RfREVGSU5FX2Jvb2xfKAogICAgIHRocm93
X29uX2ZhaWx1cmUsCiAgICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RFbnYoInRocm93X29uX2Zh
aWx1cmUiLCBmYWxzZSksCiAgICAgIldoZW4gdGhpcyBmbGFnIGlzIHNwZWNpZmllZCwgYSBmYWls
ZWQgYXNzZXJ0aW9uIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uICIKICAgICAiaWYgZXhjZXB0aW9u
cyBhcmUgZW5hYmxlZCBvciBleGl0IHRoZSBwcm9ncmFtIHdpdGggYSBub24temVybyBjb2RlICIK
LSAgICAib3RoZXJ3aXNlLiIpOworICAgICJvdGhlcndpc2UuIEZvciB1c2Ugd2l0aCBhbiBleHRl
cm5hbCB0ZXN0IGZyYW1ld29yay4iKTsKKworI2lmIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxB
R18KK0dURVNUX0RFRklORV9zdHJpbmdfKAorICAgIGZsYWdmaWxlLAorICAgIGludGVybmFsOjpT
dHJpbmdGcm9tR1Rlc3RFbnYoImZsYWdmaWxlIiwgIiIpLAorICAgICJUaGlzIGZsYWcgc3BlY2lm
aWVzIHRoZSBmbGFnZmlsZSB0byByZWFkIGNvbW1hbmQtbGluZSBmbGFncyBmcm9tLiIpOworI2Vu
ZGlmICAvLyBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCiAKIG5hbWVzcGFjZSBpbnRlcm5h
bCB7CiAKQEAgLTI3Miw3ICszNTIsOCBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogLy8gdGhhbiBr
TWF4UmFuZ2UuCiBVSW50MzIgUmFuZG9tOjpHZW5lcmF0ZShVSW50MzIgcmFuZ2UpIHsKICAgLy8g
VGhlc2UgY29uc3RhbnRzIGFyZSB0aGUgc2FtZSBhcyBhcmUgdXNlZCBpbiBnbGliYydzIHJhbmQo
MykuCi0gIHN0YXRlXyA9ICgxMTAzNTE1MjQ1VSpzdGF0ZV8gKyAxMjM0NVUpICUga01heFJhbmdl
OworICAvLyBVc2Ugd2lkZXIgdHlwZXMgdGhhbiBuZWNlc3NhcnkgdG8gcHJldmVudCB1bnNpZ25l
ZCBvdmVyZmxvdyBkaWFnbm9zdGljcy4KKyAgc3RhdGVfID0gc3RhdGljX2Nhc3Q8VUludDMyPigx
MTAzNTE1MjQ1VUxMKnN0YXRlXyArIDEyMzQ1VSkgJSBrTWF4UmFuZ2U7CiAKICAgR1RFU1RfQ0hF
Q0tfKHJhbmdlID4gMCkKICAgICAgIDw8ICJDYW5ub3QgZ2VuZXJhdGUgYSBudW1iZXIgaW4gdGhl
IHJhbmdlIFswLCAwKS4iOwpAQCAtMjg5LDEzICszNzAsNyBAQCBVSW50MzIgUmFuZG9tOjpHZW5l
cmF0ZShVSW50MzIgcmFuZ2UpIHsKIC8vIEdUZXN0SXNJbml0aWFsaXplZCgpIHJldHVybnMgdHJ1
ZSBpZmYgdGhlIHVzZXIgaGFzIGluaXRpYWxpemVkCiAvLyBHb29nbGUgVGVzdC4gIFVzZWZ1bCBm
b3IgY2F0Y2hpbmcgdGhlIHVzZXIgbWlzdGFrZSBvZiBub3QgaW5pdGlhbGl6aW5nCiAvLyBHb29n
bGUgVGVzdCBiZWZvcmUgY2FsbGluZyBSVU5fQUxMX1RFU1RTKCkuCi0vLwotLy8gQSB1c2VyIG11
c3QgY2FsbCB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpIHRvIGluaXRpYWxpemUgR29vZ2xlCi0v
LyBUZXN0LiAgZ19pbml0X2d0ZXN0X2NvdW50IGlzIHNldCB0byB0aGUgbnVtYmVyIG9mIHRpbWVz
Ci0vLyBJbml0R29vZ2xlVGVzdCgpIGhhcyBiZWVuIGNhbGxlZC4gIFdlIGRvbid0IHByb3RlY3Qg
dGhpcyB2YXJpYWJsZQotLy8gdW5kZXIgYSBtdXRleCBhcyBpdCBpcyBvbmx5IGFjY2Vzc2VkIGlu
IHRoZSBtYWluIHRocmVhZC4KLWludCBnX2luaXRfZ3Rlc3RfY291bnQgPSAwOwotc3RhdGljIGJv
b2wgR1Rlc3RJc0luaXRpYWxpemVkKCkgeyByZXR1cm4gZ19pbml0X2d0ZXN0X2NvdW50ICE9IDA7
IH0KK3N0YXRpYyBib29sIEdUZXN0SXNJbml0aWFsaXplZCgpIHsgcmV0dXJuIEdldEFyZ3ZzKCku
c2l6ZSgpID4gMDsgfQogCiAvLyBJdGVyYXRlcyBvdmVyIGEgdmVjdG9yIG9mIFRlc3RDYXNlcywg
a2VlcGluZyBhIHJ1bm5pbmcgc3VtIG9mIHRoZQogLy8gcmVzdWx0cyBvZiBjYWxsaW5nIGEgZ2l2
ZW4gaW50LXJldHVybmluZyBtZXRob2Qgb24gZWFjaC4KQEAgLTM0OSwxMCArNDI0LDIxIEBAIHZv
aWQgQXNzZXJ0SGVscGVyOjpvcGVyYXRvcj0oY29uc3QgTWVzc2FnZSYgbWVzc2FnZSkgY29uc3Qg
ewogfQogCiAvLyBNdXRleCBmb3IgbGlua2VkIHBvaW50ZXJzLgotR1RFU1RfREVGSU5FX1NUQVRJ
Q19NVVRFWF8oZ19saW5rZWRfcHRyX211dGV4KTsKK0dURVNUX0FQSV8gR1RFU1RfREVGSU5FX1NU
QVRJQ19NVVRFWF8oZ19saW5rZWRfcHRyX211dGV4KTsKIAotLy8gQXBwbGljYXRpb24gcGF0aG5h
bWUgZ290dGVuIGluIEluaXRHb29nbGVUZXN0LgotU3RyaW5nIGdfZXhlY3V0YWJsZV9wYXRoOwor
Ly8gQSBjb3B5IG9mIGFsbCBjb21tYW5kIGxpbmUgYXJndW1lbnRzLiAgU2V0IGJ5IEluaXRHb29n
bGVUZXN0KCkuCis6OnN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBnX2FyZ3ZzOworCis6OnN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRBcmd2cygpIHsKKyNpZiBkZWZpbmVkKEdURVNUX0NVU1RP
TV9HRVRfQVJHVlNfKQorICAvLyBHVEVTVF9DVVNUT01fR0VUX0FSR1ZTXygpIG1heSByZXR1cm4g
YSBjb250YWluZXIgb2Ygc3RkOjpzdHJpbmcgb3IKKyAgLy8gOjpzdHJpbmcuIFRoaXMgY29kZSBj
b252ZXJ0cyBpdCB0byB0aGUgYXBwcm9wcmlhdGUgdHlwZS4KKyAgY29uc3QgYXV0byYgY3VzdG9t
ID0gR1RFU1RfQ1VTVE9NX0dFVF9BUkdWU18oKTsKKyAgcmV0dXJuIDo6c3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+KGN1c3RvbS5iZWdpbigpLCBjdXN0b20uZW5kKCkpOworI2Vsc2UgICAvLyBkZWZp
bmVkKEdURVNUX0NVU1RPTV9HRVRfQVJHVlNfKQorICByZXR1cm4gZ19hcmd2czsKKyNlbmRpZiAg
Ly8gZGVmaW5lZChHVEVTVF9DVVNUT01fR0VUX0FSR1ZTXykKK30KIAogLy8gUmV0dXJucyB0aGUg
Y3VycmVudCBhcHBsaWNhdGlvbidzIG5hbWUsIHJlbW92aW5nIGRpcmVjdG9yeSBwYXRoIGlmIHRo
YXQKIC8vIGlzIHByZXNlbnQuCkBAIC0zNjAsOSArNDQ2LDkgQEAgRmlsZVBhdGggR2V0Q3VycmVu
dEV4ZWN1dGFibGVOYW1lKCkgewogICBGaWxlUGF0aCByZXN1bHQ7CiAKICNpZiBHVEVTVF9PU19X
SU5ET1dTCi0gIHJlc3VsdC5TZXQoRmlsZVBhdGgoZ19leGVjdXRhYmxlX3BhdGgpLlJlbW92ZUV4
dGVuc2lvbigiZXhlIikpOworICByZXN1bHQuU2V0KEZpbGVQYXRoKEdldEFyZ3ZzKClbMF0pLlJl
bW92ZUV4dGVuc2lvbigiZXhlIikpOwogI2Vsc2UKLSAgcmVzdWx0LlNldChGaWxlUGF0aChnX2V4
ZWN1dGFibGVfcGF0aCkpOworICByZXN1bHQuU2V0KEZpbGVQYXRoKEdldEFyZ3ZzKClbMF0pKTsK
ICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCiAgIHJldHVybiByZXN1bHQuUmVtb3ZlRGly
ZWN0b3J5TmFtZSgpOwpAQCAtMzcxLDMzICs0NTcsMzQgQEAgRmlsZVBhdGggR2V0Q3VycmVudEV4
ZWN1dGFibGVOYW1lKCkgewogLy8gRnVuY3Rpb25zIGZvciBwcm9jZXNzaW5nIHRoZSBndGVzdF9v
dXRwdXQgZmxhZy4KIAogLy8gUmV0dXJucyB0aGUgb3V0cHV0IGZvcm1hdCwgb3IgIiIgZm9yIG5v
cm1hbCBwcmludGVkIG91dHB1dC4KLVN0cmluZyBVbml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZv
cm1hdCgpIHsKK3N0ZDo6c3RyaW5nIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCkg
ewogICBjb25zdCBjaGFyKiBjb25zdCBndGVzdF9vdXRwdXRfZmxhZyA9IEdURVNUX0ZMQUcob3V0
cHV0KS5jX3N0cigpOwotICBpZiAoZ3Rlc3Rfb3V0cHV0X2ZsYWcgPT0gTlVMTCkgcmV0dXJuIFN0
cmluZygiIik7Ci0KICAgY29uc3QgY2hhciogY29uc3QgY29sb24gPSBzdHJjaHIoZ3Rlc3Rfb3V0
cHV0X2ZsYWcsICc6Jyk7CiAgIHJldHVybiAoY29sb24gPT0gTlVMTCkgPwotICAgICAgU3RyaW5n
KGd0ZXN0X291dHB1dF9mbGFnKSA6Ci0gICAgICBTdHJpbmcoZ3Rlc3Rfb3V0cHV0X2ZsYWcsIGNv
bG9uIC0gZ3Rlc3Rfb3V0cHV0X2ZsYWcpOworICAgICAgc3RkOjpzdHJpbmcoZ3Rlc3Rfb3V0cHV0
X2ZsYWcpIDoKKyAgICAgIHN0ZDo6c3RyaW5nKGd0ZXN0X291dHB1dF9mbGFnLCBjb2xvbiAtIGd0
ZXN0X291dHB1dF9mbGFnKTsKIH0KIAogLy8gUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgcmVxdWVz
dGVkIG91dHB1dCBmaWxlLCBvciB0aGUgZGVmYXVsdCBpZiBub25lCiAvLyB3YXMgZXhwbGljaXRs
eSBzcGVjaWZpZWQuCi1TdHJpbmcgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091
dHB1dEZpbGUoKSB7CitzdGQ6OnN0cmluZyBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0
aFRvT3V0cHV0RmlsZSgpIHsKICAgY29uc3QgY2hhciogY29uc3QgZ3Rlc3Rfb3V0cHV0X2ZsYWcg
PSBHVEVTVF9GTEFHKG91dHB1dCkuY19zdHIoKTsKLSAgaWYgKGd0ZXN0X291dHB1dF9mbGFnID09
IE5VTEwpCi0gICAgcmV0dXJuIFN0cmluZygiIik7CisKKyAgc3RkOjpzdHJpbmcgZm9ybWF0ID0g
R2V0T3V0cHV0Rm9ybWF0KCk7CisgIGlmIChmb3JtYXQuZW1wdHkoKSkKKyAgICBmb3JtYXQgPSBz
dGQ6OnN0cmluZyhrRGVmYXVsdE91dHB1dEZvcm1hdCk7CiAKICAgY29uc3QgY2hhciogY29uc3Qg
Y29sb24gPSBzdHJjaHIoZ3Rlc3Rfb3V0cHV0X2ZsYWcsICc6Jyk7CiAgIGlmIChjb2xvbiA9PSBO
VUxMKQotICAgIHJldHVybiBTdHJpbmcoaW50ZXJuYWw6OkZpbGVQYXRoOjpDb25jYXRQYXRocygK
LSAgICAgICAgICAgICAgIGludGVybmFsOjpGaWxlUGF0aCgKLSAgICAgICAgICAgICAgICAgICBV
bml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+b3JpZ2luYWxfd29ya2luZ19kaXIoKSksCi0gICAgICAg
ICAgICAgICBpbnRlcm5hbDo6RmlsZVBhdGgoa0RlZmF1bHRPdXRwdXRGaWxlKSkuVG9TdHJpbmco
KSApOworICAgIHJldHVybiBpbnRlcm5hbDo6RmlsZVBhdGg6Ok1ha2VGaWxlTmFtZSgKKyAgICAg
ICAgaW50ZXJuYWw6OkZpbGVQYXRoKAorICAgICAgICAgICAgVW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPm9yaWdpbmFsX3dvcmtpbmdfZGlyKCkpLAorICAgICAgICBpbnRlcm5hbDo6RmlsZVBhdGgo
a0RlZmF1bHRPdXRwdXRGaWxlKSwgMCwKKyAgICAgICAgZm9ybWF0LmNfc3RyKCkpLnN0cmluZygp
OwogCiAgIGludGVybmFsOjpGaWxlUGF0aCBvdXRwdXRfbmFtZShjb2xvbiArIDEpOwogICBpZiAo
IW91dHB1dF9uYW1lLklzQWJzb2x1dGVQYXRoKCkpCi0gICAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNv
bSk6IG9uIFdpbmRvd3MgXHNvbWVccGF0aCBpcyBub3QgYW4gYWJzb2x1dGUKKyAgICAvLyBGSVhN
RTogb24gV2luZG93cyBcc29tZVxwYXRoIGlzIG5vdCBhbiBhYnNvbHV0ZQogICAgIC8vIHBhdGgg
KGFzIGl0cyBtZWFuaW5nIGRlcGVuZHMgb24gdGhlIGN1cnJlbnQgZHJpdmUpLCB5ZXQgdGhlCiAg
ICAgLy8gZm9sbG93aW5nIGxvZ2ljIGZvciB0dXJuaW5nIGl0IGludG8gYW4gYWJzb2x1dGUgcGF0
aCBpcyB3cm9uZy4KICAgICAvLyBGaXggaXQuCkBAIC00MDYsMTIgKzQ5MywxMiBAQCBTdHJpbmcg
VW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSB7CiAgICAgICAg
IGludGVybmFsOjpGaWxlUGF0aChjb2xvbiArIDEpKTsKIAogICBpZiAoIW91dHB1dF9uYW1lLklz
RGlyZWN0b3J5KCkpCi0gICAgcmV0dXJuIG91dHB1dF9uYW1lLlRvU3RyaW5nKCk7CisgICAgcmV0
dXJuIG91dHB1dF9uYW1lLnN0cmluZygpOwogCiAgIGludGVybmFsOjpGaWxlUGF0aCByZXN1bHQo
aW50ZXJuYWw6OkZpbGVQYXRoOjpHZW5lcmF0ZVVuaXF1ZUZpbGVOYW1lKAogICAgICAgb3V0cHV0
X25hbWUsIGludGVybmFsOjpHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKSwKICAgICAgIEdldE91
dHB1dEZvcm1hdCgpLmNfc3RyKCkpKTsKLSAgcmV0dXJuIHJlc3VsdC5Ub1N0cmluZygpOworICBy
ZXR1cm4gcmVzdWx0LnN0cmluZygpOwogfQogCiAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB3aWxk
Y2FyZCBwYXR0ZXJuIG1hdGNoZXMgdGhlIHN0cmluZy4gIFRoZQpAQCAtNDM2LDcgKzUyMyw4IEBA
IGJvb2wgVW5pdFRlc3RPcHRpb25zOjpQYXR0ZXJuTWF0Y2hlc1N0cmluZyhjb25zdCBjaGFyICpw
YXR0ZXJuLAogICB9CiB9CiAKLWJvb2wgVW5pdFRlc3RPcHRpb25zOjpNYXRjaGVzRmlsdGVyKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgY2hhciogZmlsdGVyKSB7Citib29sIFVuaXRUZXN0T3B0
aW9uczo6TWF0Y2hlc0ZpbHRlcigKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgY29uc3Qg
Y2hhciogZmlsdGVyKSB7CiAgIGNvbnN0IGNoYXIgKmN1cl9wYXR0ZXJuID0gZmlsdGVyOwogICBm
b3IgKDs7KSB7CiAgICAgaWYgKFBhdHRlcm5NYXRjaGVzU3RyaW5nKGN1cl9wYXR0ZXJuLCBuYW1l
LmNfc3RyKCkpKSB7CkBAIC00NTYsMjggKzU0NCwyNCBAQCBib29sIFVuaXRUZXN0T3B0aW9uczo6
TWF0Y2hlc0ZpbHRlcihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IGNoYXIqIGZpbHRlcikgewog
ICB9CiB9CiAKLS8vIFRPRE8oa2VpdGhyYXkpOiBtb3ZlIFN0cmluZyBmdW5jdGlvbiBpbXBsZW1l
bnRhdGlvbnMgdG8gZ3Rlc3Qtc3RyaW5nLmNjLgotCiAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB1
c2VyLXNwZWNpZmllZCBmaWx0ZXIgbWF0Y2hlcyB0aGUgdGVzdCBjYXNlCiAvLyBuYW1lIGFuZCB0
aGUgdGVzdCBuYW1lLgotYm9vbCBVbml0VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KGNv
bnN0IFN0cmluZyAmdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU3RyaW5nICZ0ZXN0X25hbWUpIHsKLSAgY29uc3QgU3RyaW5nJiBm
dWxsX25hbWUgPSBTdHJpbmc6OkZvcm1hdCgiJXMuJXMiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY2FzZV9uYW1lLmNfc3RyKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9uYW1lLmNfc3RyKCkpOworYm9v
bCBVbml0VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0
ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyAmdGVzdF9uYW1lKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmdWxs
X25hbWUgPSB0ZXN0X2Nhc2VfbmFtZSArICIuIiArIHRlc3RfbmFtZS5jX3N0cigpOwogCiAgIC8v
IFNwbGl0IC0tZ3Rlc3RfZmlsdGVyIGF0ICctJywgaWYgdGhlcmUgaXMgb25lLCB0byBzZXBhcmF0
ZSBpbnRvCiAgIC8vIHBvc2l0aXZlIGZpbHRlciBhbmQgbmVnYXRpdmUgZmlsdGVyIHBvcnRpb25z
CiAgIGNvbnN0IGNoYXIqIGNvbnN0IHAgPSBHVEVTVF9GTEFHKGZpbHRlcikuY19zdHIoKTsKICAg
Y29uc3QgY2hhciogY29uc3QgZGFzaCA9IHN0cmNocihwLCAnLScpOwotICBTdHJpbmcgcG9zaXRp
dmU7Ci0gIFN0cmluZyBuZWdhdGl2ZTsKKyAgc3RkOjpzdHJpbmcgcG9zaXRpdmU7CisgIHN0ZDo6
c3RyaW5nIG5lZ2F0aXZlOwogICBpZiAoZGFzaCA9PSBOVUxMKSB7CiAgICAgcG9zaXRpdmUgPSBH
VEVTVF9GTEFHKGZpbHRlcikuY19zdHIoKTsgIC8vIFdob2xlIHN0cmluZyBpcyBhIHBvc2l0aXZl
IGZpbHRlcgotICAgIG5lZ2F0aXZlID0gU3RyaW5nKCIiKTsKKyAgICBuZWdhdGl2ZSA9ICIiOwog
ICB9IGVsc2UgewotICAgIHBvc2l0aXZlID0gU3RyaW5nKHAsIGRhc2ggLSBwKTsgIC8vIEV2ZXJ5
dGhpbmcgdXAgdG8gdGhlIGRhc2gKLSAgICBuZWdhdGl2ZSA9IFN0cmluZyhkYXNoKzEpOyAgICAg
ICAvLyBFdmVyeXRoaW5nIGFmdGVyIHRoZSBkYXNoCisgICAgcG9zaXRpdmUgPSBzdGQ6OnN0cmlu
ZyhwLCBkYXNoKTsgICAvLyBFdmVyeXRoaW5nIHVwIHRvIHRoZSBkYXNoCisgICAgbmVnYXRpdmUg
PSBzdGQ6OnN0cmluZyhkYXNoICsgMSk7ICAvLyBFdmVyeXRoaW5nIGFmdGVyIHRoZSBkYXNoCiAg
ICAgaWYgKHBvc2l0aXZlLmVtcHR5KCkpIHsKICAgICAgIC8vIFRyZWF0ICctdGVzdDEnIGFzIHRo
ZSBzYW1lIGFzICcqLXRlc3QxJwogICAgICAgcG9zaXRpdmUgPSBrVW5pdmVyc2FsRmlsdGVyOwpA
QCAtNDkwLDIwICs1NzQsMzMgQEAgYm9vbCBVbml0VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNoZXNU
ZXN0KGNvbnN0IFN0cmluZyAmdGVzdF9jYXNlX25hbWUsCiAgICAgICAgICAgIU1hdGNoZXNGaWx0
ZXIoZnVsbF9uYW1lLCBuZWdhdGl2ZS5jX3N0cigpKSk7CiB9CiAKLSNpZiBHVEVTVF9PU19XSU5E
T1dTCisjaWYgR1RFU1RfSEFTX1NFSAogLy8gUmV0dXJucyBFWENFUFRJT05fRVhFQ1VURV9IQU5E
TEVSIGlmIEdvb2dsZSBUZXN0IHNob3VsZCBoYW5kbGUgdGhlCiAvLyBnaXZlbiBTRUggZXhjZXB0
aW9uLCBvciBFWENFUFRJT05fQ09OVElOVUVfU0VBUkNIIG90aGVyd2lzZS4KIC8vIFRoaXMgZnVu
Y3Rpb24gaXMgdXNlZnVsIGFzIGFuIF9fZXhjZXB0IGNvbmRpdGlvbi4KIGludCBVbml0VGVzdE9w
dGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSChEV09SRCBleGNlcHRpb25fY29kZSkgewotICAv
LyBHb29nbGUgVGVzdCBzaG91bGQgaGFuZGxlIGFuIGV4Y2VwdGlvbiBpZjoKKyAgLy8gR29vZ2xl
IFRlc3Qgc2hvdWxkIGhhbmRsZSBhIFNFSCBleGNlcHRpb24gaWY6CiAgIC8vICAgMS4gdGhlIHVz
ZXIgd2FudHMgaXQgdG8sIEFORAotICAvLyAgIDIuIHRoaXMgaXMgbm90IGEgYnJlYWtwb2ludCBl
eGNlcHRpb24uCi0gIHJldHVybiAoR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSAmJgotICAg
ICAgICAgIGV4Y2VwdGlvbl9jb2RlICE9IEVYQ0VQVElPTl9CUkVBS1BPSU5UKSA/Ci0gICAgICBF
WENFUFRJT05fRVhFQ1VURV9IQU5ETEVSIDoKLSAgICAgIEVYQ0VQVElPTl9DT05USU5VRV9TRUFS
Q0g7CisgIC8vICAgMi4gdGhpcyBpcyBub3QgYSBicmVha3BvaW50IGV4Y2VwdGlvbiwgQU5ECisg
IC8vICAgMy4gdGhpcyBpcyBub3QgYSBDKysgZXhjZXB0aW9uIChWQysrIGltcGxlbWVudHMgdGhl
bSB2aWEgU0VILAorICAvLyAgICAgIGFwcGFyZW50bHkpLgorICAvLworICAvLyBTRUggZXhjZXB0
aW9uIGNvZGUgZm9yIEMrKyBleGNlcHRpb25zLgorICAvLyAoc2VlIGh0dHA6Ly9zdXBwb3J0Lm1p
Y3Jvc29mdC5jb20va2IvMTg1Mjk0IGZvciBtb3JlIGluZm9ybWF0aW9uKS4KKyAgY29uc3QgRFdP
UkQga0N4eEV4Y2VwdGlvbkNvZGUgPSAweGUwNmQ3MzYzOworCisgIGJvb2wgc2hvdWxkX2hhbmRs
ZSA9IHRydWU7CisKKyAgaWYgKCFHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKQorICAgIHNo
b3VsZF9oYW5kbGUgPSBmYWxzZTsKKyAgZWxzZSBpZiAoZXhjZXB0aW9uX2NvZGUgPT0gRVhDRVBU
SU9OX0JSRUFLUE9JTlQpCisgICAgc2hvdWxkX2hhbmRsZSA9IGZhbHNlOworICBlbHNlIGlmIChl
eGNlcHRpb25fY29kZSA9PSBrQ3h4RXhjZXB0aW9uQ29kZSkKKyAgICBzaG91bGRfaGFuZGxlID0g
ZmFsc2U7CisKKyAgcmV0dXJuIHNob3VsZF9oYW5kbGUgPyBFWENFUFRJT05fRVhFQ1VURV9IQU5E
TEVSIDogRVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJDSDsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1Nf
V0lORE9XUworI2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRl
cm5hbAogCkBAIC01NzgsMTMgKzY3NSwxMyBAQCBleHRlcm4gY29uc3QgVHlwZUlkIGtUZXN0VHlw
ZUlkSW5Hb29nbGVUZXN0ID0gR2V0VGVzdFR5cGVJZCgpOwogLy8gVGhpcyBwcmVkaWNhdGUtZm9y
bWF0dGVyIGNoZWNrcyB0aGF0ICdyZXN1bHRzJyBjb250YWlucyBhIHRlc3QgcGFydAogLy8gZmFp
bHVyZSBvZiB0aGUgZ2l2ZW4gdHlwZSBhbmQgdGhhdCB0aGUgZmFpbHVyZSBtZXNzYWdlIGNvbnRh
aW5zIHRoZQogLy8gZ2l2ZW4gc3Vic3RyaW5nLgotQXNzZXJ0aW9uUmVzdWx0IEhhc09uZUZhaWx1
cmUoY29uc3QgY2hhciogLyogcmVzdWx0c19leHByICovLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogLyogdHlwZV9leHByICovLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogLyogc3Vic3RyX2V4cHIgKi8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UGFydFJlc3VsdEFycmF5JiByZXN1bHRzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdFBhcnRSZXN1bHQ6OlR5cGUgdHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN1YnN0cikgewotICBjb25z
dCBTdHJpbmcgZXhwZWN0ZWQodHlwZSA9PSBUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSA/
CitzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IEhhc09uZUZhaWx1cmUoY29uc3QgY2hhciogLyogcmVz
dWx0c19leHByICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIC8qIHR5cGVfZXhwciAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiAvKiBzdWJzdHJfZXhwciAqLywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UGFydFJlc3VsdEFycmF5JiByZXN1bHRzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHN1YnN0cikgeworICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3RlZCh0eXBlID09IFRlc3RQ
YXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlID8KICAgICAgICAgICAgICAgICAgICAgICAgICIxIGZh
dGFsIGZhaWx1cmUiIDoKICAgICAgICAgICAgICAgICAgICAgICAgICIxIG5vbi1mYXRhbCBmYWls
dXJlIik7CiAgIE1lc3NhZ2UgbXNnOwpAQCAtNTk0LDIzICs2OTEsMjEgQEAgQXNzZXJ0aW9uUmVz
dWx0IEhhc09uZUZhaWx1cmUoY29uc3QgY2hhciogLyogcmVzdWx0c19leHByICovLAogICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7IGkrKykgewogICAgICAgbXNnIDw8ICJc
biIgPDwgcmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdChpKTsKICAgICB9Ci0gICAgcmV0dXJuIEFz
c2VydGlvbkZhaWx1cmUobXNnKTsKKyAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG1z
ZzsKICAgfQogCiAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiByID0gcmVzdWx0cy5HZXRUZXN0UGFy
dFJlc3VsdCgwKTsKICAgaWYgKHIudHlwZSgpICE9IHR5cGUpIHsKLSAgICBtc2cgPDwgIkV4cGVj
dGVkOiAiIDw8IGV4cGVjdGVkIDw8ICJcbiIKLSAgICAgICAgPDwgIiAgQWN0dWFsOlxuIgotICAg
ICAgICA8PCByOwotICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgICAgcmV0dXJu
IEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiRXhwZWN0ZWQ6ICIgPDwgZXhwZWN0ZWQgPDwgIlxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiAgQWN0dWFsOlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgcjsKICAgfQogCi0gIGlmIChzdHJzdHIoci5tZXNzYWdl
KCksIHN1YnN0cikgPT0gTlVMTCkgewotICAgIG1zZyA8PCAiRXhwZWN0ZWQ6ICIgPDwgZXhwZWN0
ZWQgPDwgIiBjb250YWluaW5nIFwiIgotICAgICAgICA8PCBzdWJzdHIgPDwgIlwiXG4iCi0gICAg
ICAgIDw8ICIgIEFjdHVhbDpcbiIKLSAgICAgICAgPDwgcjsKLSAgICByZXR1cm4gQXNzZXJ0aW9u
RmFpbHVyZShtc2cpOworICBpZiAoc3Ryc3RyKHIubWVzc2FnZSgpLCBzdWJzdHIuY19zdHIoKSkg
PT0gTlVMTCkgeworICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgIkV4cGVjdGVkOiAi
IDw8IGV4cGVjdGVkIDw8ICIgY29udGFpbmluZyBcIiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8IHN1YnN0ciA8PCAiXCJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDw8ICIgIEFjdHVhbDpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHI7CiAg
IH0KIAogICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwpAQCAtNjE5LDIwICs3MTQsMTcgQEAg
QXNzZXJ0aW9uUmVzdWx0IEhhc09uZUZhaWx1cmUoY29uc3QgY2hhciogLyogcmVzdWx0c19leHBy
ICovLAogLy8gVGhlIGNvbnN0cnVjdG9yIG9mIFNpbmdsZUZhaWx1cmVDaGVja2VyIHJlbWVtYmVy
cyB3aGVyZSB0byBsb29rIHVwCiAvLyB0ZXN0IHBhcnQgcmVzdWx0cywgd2hhdCB0eXBlIG9mIGZh
aWx1cmUgd2UgZXhwZWN0LCBhbmQgd2hhdAogLy8gc3Vic3RyaW5nIHRoZSBmYWlsdXJlIG1lc3Nh
Z2Ugc2hvdWxkIGNvbnRhaW4uCi1TaW5nbGVGYWlsdXJlQ2hlY2tlcjo6IFNpbmdsZUZhaWx1cmVD
aGVja2VyKAotICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0QXJyYXkqIHJlc3VsdHMsCi0gICAgVGVz
dFBhcnRSZXN1bHQ6OlR5cGUgdHlwZSwKLSAgICBjb25zdCBjaGFyKiBzdWJzdHIpCi0gICAgOiBy
ZXN1bHRzXyhyZXN1bHRzKSwKLSAgICAgIHR5cGVfKHR5cGUpLAotICAgICAgc3Vic3RyXyhzdWJz
dHIpIHt9CitTaW5nbGVGYWlsdXJlQ2hlY2tlcjo6U2luZ2xlRmFpbHVyZUNoZWNrZXIoY29uc3Qg
VGVzdFBhcnRSZXN1bHRBcnJheSogcmVzdWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdWJzdHIp
CisgICAgOiByZXN1bHRzXyhyZXN1bHRzKSwgdHlwZV8odHlwZSksIHN1YnN0cl8oc3Vic3RyKSB7
fQogCiAvLyBUaGUgZGVzdHJ1Y3RvciBvZiBTaW5nbGVGYWlsdXJlQ2hlY2tlciB2ZXJpZmllcyB0
aGF0IHRoZSBnaXZlbgogLy8gVGVzdFBhcnRSZXN1bHRBcnJheSBjb250YWlucyBleGFjdGx5IG9u
ZSBmYWlsdXJlIHRoYXQgaGFzIHRoZSBnaXZlbgogLy8gdHlwZSBhbmQgY29udGFpbnMgdGhlIGdp
dmVuIHN1YnN0cmluZy4gIElmIHRoYXQncyBub3QgdGhlIGNhc2UsIGEKIC8vIG5vbi1mYXRhbCBm
YWlsdXJlIHdpbGwgYmUgZ2VuZXJhdGVkLgogU2luZ2xlRmFpbHVyZUNoZWNrZXI6On5TaW5nbGVG
YWlsdXJlQ2hlY2tlcigpIHsKLSAgRVhQRUNUX1BSRURfRk9STUFUMyhIYXNPbmVGYWlsdXJlLCAq
cmVzdWx0c18sIHR5cGVfLCBzdWJzdHJfLmNfc3RyKCkpOworICBFWFBFQ1RfUFJFRF9GT1JNQVQz
KEhhc09uZUZhaWx1cmUsICpyZXN1bHRzXywgdHlwZV8sIHN1YnN0cl8pOwogfQogCiBEZWZhdWx0
R2xvYmFsVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjo6RGVmYXVsdEdsb2JhbFRlc3RQYXJ0UmVzdWx0
UmVwb3J0ZXIoCkBAIC03MDksMTEgKzgwMSwyMiBAQCBpbnQgVW5pdFRlc3RJbXBsOjpmYWlsZWRf
dGVzdF9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJuIFN1bU92ZXJUZXN0Q2FzZUxpc3QodGVzdF9j
YXNlc18sICZUZXN0Q2FzZTo6ZmFpbGVkX3Rlc3RfY291bnQpOwogfQogCisvLyBHZXRzIHRoZSBu
dW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwg
cmVwb3J0LgoraW50IFVuaXRUZXN0SW1wbDo6cmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50
KCkgY29uc3QgeworICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0ZXN0X2Nhc2VzXywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJlRlc3RDYXNlOjpyZXBvcnRhYmxlX2Rpc2FibGVk
X3Rlc3RfY291bnQpOworfQorCiAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMu
CiBpbnQgVW5pdFRlc3RJbXBsOjpkaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3QgewogICByZXR1
cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0ZXN0X2Nhc2VzXywgJlRlc3RDYXNlOjpkaXNhYmxlZF90
ZXN0X2NvdW50KTsKIH0KIAorLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50
ZWQgaW4gdGhlIFhNTCByZXBvcnQuCitpbnQgVW5pdFRlc3RJbXBsOjpyZXBvcnRhYmxlX3Rlc3Rf
Y291bnQoKSBjb25zdCB7CisgIHJldHVybiBTdW1PdmVyVGVzdENhc2VMaXN0KHRlc3RfY2FzZXNf
LCAmVGVzdENhc2U6OnJlcG9ydGFibGVfdGVzdF9jb3VudCk7Cit9CisKIC8vIEdldHMgdGhlIG51
bWJlciBvZiBhbGwgdGVzdHMuCiBpbnQgVW5pdFRlc3RJbXBsOjp0b3RhbF90ZXN0X2NvdW50KCkg
Y29uc3QgewogICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0ZXN0X2Nhc2VzXywgJlRlc3RD
YXNlOjp0b3RhbF90ZXN0X2NvdW50KTsKQEAgLTcyNCw3ICs4MjcsNyBAQCBpbnQgVW5pdFRlc3RJ
bXBsOjp0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJuIFN1bU92ZXJUZXN0Q2Fz
ZUxpc3QodGVzdF9jYXNlc18sICZUZXN0Q2FzZTo6dGVzdF90b19ydW5fY291bnQpOwogfQogCi0v
LyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFzIGEgU3RyaW5nLgorLy8gUmV0
dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBhcyBhbiBzdGQ6OnN0cmluZy4KIC8vCiAv
LyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIHRvIGJlIGluY2x1ZGVkIGlzIHNw
ZWNpZmllZCBieQogLy8gdGhlIGd0ZXN0X3N0YWNrX3RyYWNlX2RlcHRoIGZsYWcuICBUaGUgc2tp
cF9jb3VudCBwYXJhbWV0ZXIKQEAgLTczNCw5ICs4MzcsMTMgQEAgaW50IFVuaXRUZXN0SW1wbDo6
dGVzdF90b19ydW5fY291bnQoKSBjb25zdCB7CiAvLyBGb3IgZXhhbXBsZSwgaWYgRm9vKCkgY2Fs
bHMgQmFyKCksIHdoaWNoIGluIHR1cm4gY2FsbHMKIC8vIEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNl
cHRUb3AoMSksIEZvbygpIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlCiAvLyB0cmFjZSBidXQgQmFy
KCkgYW5kIEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoKSB3b24ndC4KLVN0cmluZyBVbml0
VGVzdEltcGw6OkN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoaW50IHNraXBfY291bnQpIHsK
LSAgKHZvaWQpc2tpcF9jb3VudDsKLSAgcmV0dXJuIFN0cmluZygiIik7CitzdGQ6OnN0cmluZyBV
bml0VGVzdEltcGw6OkN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoaW50IHNraXBfY291bnQp
IHsKKyAgcmV0dXJuIG9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5DdXJyZW50U3RhY2tUcmFjZSgK
KyAgICAgIHN0YXRpY19jYXN0PGludD4oR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkpLAor
ICAgICAgc2tpcF9jb3VudCArIDEKKyAgICAgIC8vIFNraXBzIHRoZSB1c2VyLXNwZWNpZmllZCBu
dW1iZXIgb2YgZnJhbWVzIHBsdXMgdGhpcyBmdW5jdGlvbgorICAgICAgLy8gaXRzZWxmLgorICAg
ICAgKTsgIC8vIE5PTElOVAogfQogCiAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IHRpbWUgaW4gbWls
bGlzZWNvbmRzLgpAQCAtNzUxLDcgKzg1OCw3IEBAIFRpbWVJbk1pbGxpcyBHZXRUaW1lSW5NaWxs
aXMoKSB7CiAgIFNZU1RFTVRJTUUgbm93X3N5c3RpbWU7CiAgIEZJTEVUSU1FIG5vd19maWxldGlt
ZTsKICAgVUxBUkdFX0lOVEVHRVIgbm93X2ludDY0OwotICAvLyBUT0RPKGtlbnRvbkBnb29nbGUu
Y29tKTogU2hvdWxkbid0IHRoaXMganVzdCB1c2UKKyAgLy8gRklYTUU6IFNob3VsZG4ndCB0aGlz
IGp1c3QgdXNlCiAgIC8vICAgR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUoKT8KICAgR2V0U3lzdGVt
VGltZSgmbm93X3N5c3RpbWUpOwogICBpZiAoU3lzdGVtVGltZVRvRmlsZVRpbWUoJm5vd19zeXN0
aW1lLCAmbm93X2ZpbGV0aW1lKSkgewpAQCAtNzY0LDY1ICs4NzEsMjggQEAgVGltZUluTWlsbGlz
IEdldFRpbWVJbk1pbGxpcygpIHsKICAgcmV0dXJuIDA7CiAjZWxpZiBHVEVTVF9PU19XSU5ET1dT
ICYmICFHVEVTVF9IQVNfR0VUVElNRU9GREFZXwogICBfX3RpbWViNjQgbm93OwotI2lmZGVmIF9N
U0NfVkVSCisKICAgLy8gTVNWQyA4IGRlcHJlY2F0ZXMgX2Z0aW1lNjQoKSwgc28gd2Ugd2FudCB0
byBzdXBwcmVzcyB3YXJuaW5nIDQ5OTYKICAgLy8gKGRlcHJlY2F0ZWQgZnVuY3Rpb24pIHRoZXJl
LgotICAvLyBUT0RPKGtlbnRvbkBnb29nbGUuY29tKTogVXNlIEdldFRpY2tDb3VudCgpPyAgT3Ig
dXNlCisgIC8vIEZJWE1FOiBVc2UgR2V0VGlja0NvdW50KCk/ICBPciB1c2UKICAgLy8gICBTeXN0
ZW1UaW1lVG9GaWxlVGltZSgpCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkgICAgICAgICAgLy8gU2F2
ZXMgdGhlIGN1cnJlbnQgd2FybmluZyBzdGF0ZS4KLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5
OTYpICAvLyBUZW1wb3JhcmlseSBkaXNhYmxlcyB3YXJuaW5nIDQ5OTYuCisgIEdURVNUX0RJU0FC
TEVfTVNDX0RFUFJFQ0FURURfUFVTSF8oKQogICBfZnRpbWU2NCgmbm93KTsKLSNwcmFnbWEgd2Fy
bmluZyhwb3ApICAgICAgICAgICAvLyBSZXN0b3JlcyB0aGUgd2FybmluZyBzdGF0ZS4KLSNlbHNl
Ci0gIF9mdGltZTY0KCZub3cpOwotI2VuZGlmICAvLyBfTVNDX1ZFUgorICBHVEVTVF9ESVNBQkxF
X01TQ19ERVBSRUNBVEVEX1BPUF8oKQorCiAgIHJldHVybiBzdGF0aWNfY2FzdDxUaW1lSW5NaWxs
aXM+KG5vdy50aW1lKSAqIDEwMDAgKyBub3cubWlsbGl0bTsKICNlbGlmIEdURVNUX0hBU19HRVRU
SU1FT0ZEQVlfCiAgIHN0cnVjdCB0aW1ldmFsIG5vdzsKICAgZ2V0dGltZW9mZGF5KCZub3csIE5V
TEwpOwogICByZXR1cm4gc3RhdGljX2Nhc3Q8VGltZUluTWlsbGlzPihub3cudHZfc2VjKSAqIDEw
MDAgKyBub3cudHZfdXNlYyAvIDEwMDA7CiAjZWxzZQotI2Vycm9yICJEb24ndCBrbm93IGhvdyB0
byBnZXQgdGhlIGN1cnJlbnQgdGltZSBvbiB5b3VyIHN5c3RlbS4iCisjIGVycm9yICJEb24ndCBr
bm93IGhvdyB0byBnZXQgdGhlIGN1cnJlbnQgdGltZSBvbiB5b3VyIHN5c3RlbS4iCiAjZW5kaWYK
IH0KIAogLy8gVXRpbGl0aWVzCiAKLS8vIGNsYXNzIFN0cmluZwotCi0vLyBSZXR1cm5zIHRoZSBp
bnB1dCBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzIGlmIGl0J3Mgbm90IE5VTEw7Ci0vLyBvdGhl
cndpc2UgcmV0dXJucyAiKG51bGwpIi4gIEZvciBleGFtcGxlLCAiXCJIZWxsb1wiIiBpcyByZXR1
cm5lZAotLy8gZm9yIGlucHV0ICJIZWxsbyIuCi0vLwotLy8gVGhpcyBpcyB1c2VmdWwgZm9yIHBy
aW50aW5nIGEgQyBzdHJpbmcgaW4gdGhlIHN5bnRheCBvZiBhIGxpdGVyYWwuCi0vLwotLy8gS25v
d24gaXNzdWU6IGVzY2FwZSBzZXF1ZW5jZXMgYXJlIG5vdCBoYW5kbGVkIHlldC4KLVN0cmluZyBT
dHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKGNvbnN0IGNoYXIqIGNfc3RyKSB7Ci0gIHJldHVybiBj
X3N0ciA/IFN0cmluZzo6Rm9ybWF0KCJcIiVzXCIiLCBjX3N0cikgOiBTdHJpbmcoIihudWxsKSIp
OwotfQotCi0vLyBDb3BpZXMgYXQgbW9zdCBsZW5ndGggY2hhcmFjdGVycyBmcm9tIHN0ciBpbnRv
IGEgbmV3bHktYWxsb2NhdGVkCi0vLyBwaWVjZSBvZiBtZW1vcnkgb2Ygc2l6ZSBsZW5ndGgrMS4g
IFRoZSBtZW1vcnkgaXMgYWxsb2NhdGVkIHdpdGggbmV3W10uCi0vLyBBIHRlcm1pbmF0aW5nIG51
bGwgYnl0ZSBpcyB3cml0dGVuIHRvIHRoZSBtZW1vcnksIGFuZCBhIHBvaW50ZXIgdG8gaXQKLS8v
IGlzIHJldHVybmVkLiAgSWYgc3RyIGlzIE5VTEwsIE5VTEwgaXMgcmV0dXJuZWQuCi1zdGF0aWMg
Y2hhciogQ2xvbmVTdHJpbmcoY29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuZ3RoKSB7Ci0gIGlm
IChzdHIgPT0gTlVMTCkgewotICAgIHJldHVybiBOVUxMOwotICB9IGVsc2UgewotICAgIGNoYXIq
IGNvbnN0IGNsb25lID0gbmV3IGNoYXJbbGVuZ3RoICsgMV07Ci0gICAgcG9zaXg6OlN0ck5DcHko
Y2xvbmUsIHN0ciwgbGVuZ3RoKTsKLSAgICBjbG9uZVtsZW5ndGhdID0gJ1wwJzsKLSAgICByZXR1
cm4gY2xvbmU7Ci0gIH0KLX0KLQotLy8gQ2xvbmVzIGEgMC10ZXJtaW5hdGVkIEMgc3RyaW5nLCBh
bGxvY2F0aW5nIG1lbW9yeSB1c2luZyBuZXcuICBUaGUKLS8vIGNhbGxlciBpcyByZXNwb25zaWJs
ZSBmb3IgZGVsZXRpbmdbXSB0aGUgcmV0dXJuIHZhbHVlLiAgUmV0dXJucyB0aGUKLS8vIGNsb25l
ZCBzdHJpbmcsIG9yIE5VTEwgaWYgdGhlIGlucHV0IGlzIE5VTEwuCi1jb25zdCBjaGFyICogU3Ry
aW5nOjpDbG9uZUNTdHJpbmcoY29uc3QgY2hhciogY19zdHIpIHsKLSAgcmV0dXJuIChjX3N0ciA9
PSBOVUxMKSA/Ci0gICAgICAgICAgICAgICAgICAgIE5VTEwgOiBDbG9uZVN0cmluZyhjX3N0ciwg
c3RybGVuKGNfc3RyKSk7Ci19CisvLyBjbGFzcyBTdHJpbmcuCiAKICNpZiBHVEVTVF9PU19XSU5E
T1dTX01PQklMRQogLy8gQ3JlYXRlcyBhIFVURi0xNiB3aWRlIHN0cmluZyBmcm9tIHRoZSBnaXZl
biBBTlNJIHN0cmluZywgYWxsb2NhdGluZwpAQCAtODc5LDExICs5NDksNiBAQCBib29sIFN0cmlu
Zzo6Q1N0cmluZ0VxdWFscyhjb25zdCBjaGFyICogbGhzLCBjb25zdCBjaGFyICogcmhzKSB7CiAv
LyBlbmNvZGluZywgYW5kIHN0cmVhbXMgdGhlIHJlc3VsdCB0byB0aGUgZ2l2ZW4gTWVzc2FnZSBv
YmplY3QuCiBzdGF0aWMgdm9pZCBTdHJlYW1XaWRlQ2hhcnNUb01lc3NhZ2UoY29uc3Qgd2NoYXJf
dCogd3N0ciwgc2l6ZV90IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNZXNzYWdlKiBtc2cpIHsKLSAgLy8gVE9ETyh3YW4pOiBjb25zaWRlciBhbGxvd2luZyBh
IHRlc3Rpbmc6OlN0cmluZyBvYmplY3QgdG8KLSAgLy8gY29udGFpbiAnXDAnLiAgVGhpcyB3aWxs
IG1ha2UgaXQgYmVoYXZlIG1vcmUgbGlrZSBzdGQ6OnN0cmluZywKLSAgLy8gYW5kIHdpbGwgYWxs
b3cgVG9VdGY4U3RyaW5nKCkgdG8gcmV0dXJuIHRoZSBjb3JyZWN0IGVuY29kaW5nCi0gIC8vIGZv
ciAnXDAnIHMudC4gd2UgY2FuIGdldCByaWQgb2YgdGhlIGNvbmRpdGlvbmFsIGhlcmUgKGFuZCBp
bgotICAvLyBzZXZlcmFsIG90aGVyIHBsYWNlcykuCiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9
IGxlbmd0aDsgKSB7ICAvLyBOT0xJTlQKICAgICBpZiAod3N0cltpXSAhPSBMJ1wwJykgewogICAg
ICAgKm1zZyA8PCBXaWRlU3RyaW5nVG9VdGY4KHdzdHIgKyBpLCBzdGF0aWNfY2FzdDxpbnQ+KGxl
bmd0aCAtIGkpKTsKQEAgLTg5OCw4ICs5NjMsNDUgQEAgc3RhdGljIHZvaWQgU3RyZWFtV2lkZUNo
YXJzVG9NZXNzYWdlKGNvbnN0IHdjaGFyX3QqIHdzdHIsIHNpemVfdCBsZW5ndGgsCiAKICNlbmRp
ZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RSSU5HIHx8IEdURVNUX0hBU19HTE9CQUxfV1NUUklORwog
Cit2b2lkIFNwbGl0U3RyaW5nKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgY2hhciBkZWxpbWl0
ZXIsCisgICAgICAgICAgICAgICAgIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpzdHJpbmc+KiBkZXN0
KSB7CisgIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpzdHJpbmc+IHBhcnNlZDsKKyAgOjpzdGQ6OnN0
cmluZzo6c2l6ZV90eXBlIHBvcyA9IDA7CisgIHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpB
bHdheXNUcnVlKCkpIHsKKyAgICBjb25zdCA6OnN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgY29sb24g
PSBzdHIuZmluZChkZWxpbWl0ZXIsIHBvcyk7CisgICAgaWYgKGNvbG9uID09IDo6c3RkOjpzdHJp
bmc6Om5wb3MpIHsKKyAgICAgIHBhcnNlZC5wdXNoX2JhY2soc3RyLnN1YnN0cihwb3MpKTsKKyAg
ICAgIGJyZWFrOworICAgIH0gZWxzZSB7CisgICAgICBwYXJzZWQucHVzaF9iYWNrKHN0ci5zdWJz
dHIocG9zLCBjb2xvbiAtIHBvcykpOworICAgICAgcG9zID0gY29sb24gKyAxOworICAgIH0KKyAg
fQorICBkZXN0LT5zd2FwKHBhcnNlZCk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAog
CisvLyBDb25zdHJ1Y3RzIGFuIGVtcHR5IE1lc3NhZ2UuCisvLyBXZSBhbGxvY2F0ZSB0aGUgc3Ry
aW5nc3RyZWFtIHNlcGFyYXRlbHkgYmVjYXVzZSBvdGhlcndpc2UgZWFjaCB1c2Ugb2YKKy8vIEFT
U0VSVC9FWFBFQ1QgaW4gYSBwcm9jZWR1cmUgYWRkcyBvdmVyIDIwMCBieXRlcyB0byB0aGUgcHJv
Y2VkdXJlJ3MKKy8vIHN0YWNrIGZyYW1lIGxlYWRpbmcgdG8gaHVnZSBzdGFjayBmcmFtZXMgaW4g
c29tZSBjYXNlczsgZ2NjIGRvZXMgbm90IHJldXNlCisvLyB0aGUgc3RhY2sgc3BhY2UuCitNZXNz
YWdlOjpNZXNzYWdlKCkgOiBzc18obmV3IDo6c3RkOjpzdHJpbmdzdHJlYW0pIHsKKyAgLy8gQnkg
ZGVmYXVsdCwgd2Ugd2FudCB0aGVyZSB0byBiZSBlbm91Z2ggcHJlY2lzaW9uIHdoZW4gcHJpbnRp
bmcKKyAgLy8gYSBkb3VibGUgdG8gYSBNZXNzYWdlLgorICAqc3NfIDw8IHN0ZDo6c2V0cHJlY2lz
aW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZGlnaXRzMTAgKyAyKTsKK30KKworLy8g
VGhlc2UgdHdvIG92ZXJsb2FkcyBhbGxvdyBzdHJlYW1pbmcgYSB3aWRlIEMgc3RyaW5nIHRvIGEg
TWVzc2FnZQorLy8gdXNpbmcgdGhlIFVURi04IGVuY29kaW5nLgorTWVzc2FnZSYgTWVzc2FnZTo6
b3BlcmF0b3IgPDwoY29uc3Qgd2NoYXJfdCogd2lkZV9jX3N0cikgeworICByZXR1cm4gKnRoaXMg
PDwgaW50ZXJuYWw6OlN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKHdpZGVfY19zdHIpOworfQorTWVz
c2FnZSYgTWVzc2FnZTo6b3BlcmF0b3IgPDwod2NoYXJfdCogd2lkZV9jX3N0cikgeworICByZXR1
cm4gKnRoaXMgPDwgaW50ZXJuYWw6OlN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKHdpZGVfY19zdHIp
OworfQorCiAjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCiAvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4g
d2lkZSBzdHJpbmcgdG8gYSBuYXJyb3cgc3RyaW5nIHVzaW5nIHRoZSBVVEYtOAogLy8gZW5jb2Rp
bmcsIGFuZCBzdHJlYW1zIHRoZSByZXN1bHQgdG8gdGhpcyBNZXNzYWdlIG9iamVjdC4KQEAgLTkx
OCw1NSArMTAyMCwyNiBAQCBNZXNzYWdlJiBNZXNzYWdlOjpvcGVyYXRvciA8PChjb25zdCA6Ondz
dHJpbmcmIHdzdHIpIHsKIH0KICNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCiAK
LW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIEZvcm1hdHMgYSB2YWx1ZSB0byBiZSB1c2VkIGlu
IGEgZmFpbHVyZSBtZXNzYWdlLgotCi0vLyBGb3IgYSBjaGFyIHZhbHVlLCB3ZSBwcmludCBpdCBh
cyBhIEMrKyBjaGFyIGxpdGVyYWwgYW5kIGFzIGFuCi0vLyB1bnNpZ25lZCBpbnRlZ2VyIChib3Ro
IGluIGRlY2ltYWwgYW5kIGluIGhleGFkZWNpbWFsKS4KLVN0cmluZyBGb3JtYXRGb3JGYWlsdXJl
TWVzc2FnZShjaGFyIGNoKSB7Ci0gIGNvbnN0IHVuc2lnbmVkIGludCBjaF9hc191aW50ID0gY2g7
Ci0gIC8vIEEgU3RyaW5nIG9iamVjdCBjYW5ub3QgY29udGFpbiAnXDAnLCBzbyB3ZSBwcmludCAi
XFwwIiB3aGVuIGNoIGlzCi0gIC8vICdcMCcuCi0gIHJldHVybiBTdHJpbmc6OkZvcm1hdCgiJyVz
JyAoJXUsIDB4JVgpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoID8gU3RyaW5nOjpGb3Jt
YXQoIiVjIiwgY2gpLmNfc3RyKCkgOiAiXFwwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNo
X2FzX3VpbnQsIGNoX2FzX3VpbnQpOwotfQotCi0vLyBGb3IgYSB3Y2hhcl90IHZhbHVlLCB3ZSBw
cmludCBpdCBhcyBhIEMrKyB3Y2hhcl90IGxpdGVyYWwgYW5kIGFzIGFuCi0vLyB1bnNpZ25lZCBp
bnRlZ2VyIChib3RoIGluIGRlY2ltYWwgYW5kIGluIGhleGlkZWNpbWFsKS4KLVN0cmluZyBGb3Jt
YXRGb3JGYWlsdXJlTWVzc2FnZSh3Y2hhcl90IHdjaGFyKSB7Ci0gIC8vIFRoZSBDKysgc3RhbmRh
cmQgZG9lc24ndCBzcGVjaWZ5IHRoZSBleGFjdCBzaXplIG9mIHRoZSB3Y2hhcl90Ci0gIC8vIHR5
cGUuICBJdCBqdXN0IHNheXMgdGhhdCBpdCBzaGFsbCBoYXZlIHRoZSBzYW1lIHNpemUgYXMgYW5v
dGhlcgotICAvLyBpbnRlZ3JhbCB0eXBlLCBjYWxsZWQgaXRzIHVuZGVybHlpbmcgdHlwZS4KLSAg
Ly8KLSAgLy8gVGhlcmVmb3JlLCBpbiBvcmRlciB0byBwcmludCBhIHdjaGFyX3QgdmFsdWUgaW4g
dGhlIG51bWVyaWMgZm9ybSwKLSAgLy8gd2UgZmlyc3QgY29udmVydCBpdCB0byB0aGUgbGFyZ2Vz
dCBpbnRlZ3JhbCB0eXBlIChVSW50NjQpIGFuZAotICAvLyB0aGVuIHByaW50IHRoZSBjb252ZXJ0
ZWQgdmFsdWUuCi0gIC8vCi0gIC8vIFdlIHVzZSBzdHJlYW1pbmcgdG8gcHJpbnQgdGhlIHZhbHVl
IGFzICIlbGx1IiBkb2Vzbid0IHdvcmsKLSAgLy8gY29ycmVjdGx5IHdpdGggTVNWQyA3LjEuCi0g
IGNvbnN0IFVJbnQ2NCB3Y2hhcl9hc191aW50NjQgPSB3Y2hhcjsKLSAgTWVzc2FnZSBtc2c7Ci0g
IC8vIEEgU3RyaW5nIG9iamVjdCBjYW5ub3QgY29udGFpbiAnXDAnLCBzbyB3ZSBwcmludCAiXFww
IiB3aGVuIHdjaGFyIGlzCi0gIC8vIEwnXDAnLgotICBjaGFyIGJ1ZmZlclszMl07ICAvLyBDb2Rl
UG9pbnRUb1V0ZjggcmVxdWlyZXMgYSBidWZmZXIgdGhhdCBiaWcuCi0gIG1zZyA8PCAiTCciCi0g
ICAgICA8PCAod2NoYXIgPyBDb2RlUG9pbnRUb1V0Zjgoc3RhdGljX2Nhc3Q8VUludDMyPih3Y2hh
ciksIGJ1ZmZlcikgOiAiXFwwIikKLSAgICAgIDw8ICInICgiIDw8IHdjaGFyX2FzX3VpbnQ2NCA8
PCAiLCAweCIgPDwgOjpzdGQ6OnNldGJhc2UoMTYpCi0gICAgICA8PCB3Y2hhcl9hc191aW50NjQg
PDwgIikiOwotICByZXR1cm4gbXNnLkdldFN0cmluZygpOworLy8gR2V0cyB0aGUgdGV4dCBzdHJl
YW1lZCB0byB0aGlzIG9iamVjdCBzbyBmYXIgYXMgYW4gc3RkOjpzdHJpbmcuCisvLyBFYWNoICdc
MCcgY2hhcmFjdGVyIGluIHRoZSBidWZmZXIgaXMgcmVwbGFjZWQgd2l0aCAiXFwwIi4KK3N0ZDo6
c3RyaW5nIE1lc3NhZ2U6OkdldFN0cmluZygpIGNvbnN0IHsKKyAgcmV0dXJuIGludGVybmFsOjpT
dHJpbmdTdHJlYW1Ub1N0cmluZyhzc18uZ2V0KCkpOwogfQogCi19ICAvLyBuYW1lc3BhY2UgaW50
ZXJuYWwKLQogLy8gQXNzZXJ0aW9uUmVzdWx0IGNvbnN0cnVjdG9ycy4KIC8vIFVzZWQgaW4gRVhQ
RUNUX1RSVUUvRkFMU0UoYXNzZXJ0aW9uX3Jlc3VsdCkuCiBBc3NlcnRpb25SZXN1bHQ6OkFzc2Vy
dGlvblJlc3VsdChjb25zdCBBc3NlcnRpb25SZXN1bHQmIG90aGVyKQogICAgIDogc3VjY2Vzc18o
b3RoZXIuc3VjY2Vzc18pLAogICAgICAgbWVzc2FnZV8ob3RoZXIubWVzc2FnZV8uZ2V0KCkgIT0g
TlVMTCA/Ci0gICAgICAgICAgICAgICBuZXcgaW50ZXJuYWw6OlN0cmluZygqb3RoZXIubWVzc2Fn
ZV8pIDoKLSAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludGVybmFsOjpTdHJpbmcqPihOVUxM
KSkgeworICAgICAgICAgICAgICAgbmV3IDo6c3RkOjpzdHJpbmcoKm90aGVyLm1lc3NhZ2VfKSA6
CisgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDwgOjpzdGQ6OnN0cmluZyo+KE5VTEwpKSB7Cit9
CisKKy8vIFN3YXBzIHR3byBBc3NlcnRpb25SZXN1bHRzLgordm9pZCBBc3NlcnRpb25SZXN1bHQ6
OnN3YXAoQXNzZXJ0aW9uUmVzdWx0JiBvdGhlcikgeworICB1c2luZyBzdGQ6OnN3YXA7CisgIHN3
YXAoc3VjY2Vzc18sIG90aGVyLnN1Y2Nlc3NfKTsKKyAgc3dhcChtZXNzYWdlXywgb3RoZXIubWVz
c2FnZV8pOwogfQogCiAvLyBSZXR1cm5zIHRoZSBhc3NlcnRpb24ncyBuZWdhdGlvbi4gVXNlZCB3
aXRoIEVYUEVDVC9BU1NFUlRfRkFMU0UuCkBAIC05OTUsNiArMTA2OCwyNzYgQEAgQXNzZXJ0aW9u
UmVzdWx0IEFzc2VydGlvbkZhaWx1cmUoY29uc3QgTWVzc2FnZSYgbWVzc2FnZSkgewogCiBuYW1l
c3BhY2UgaW50ZXJuYWwgewogCituYW1lc3BhY2UgZWRpdF9kaXN0YW5jZSB7CitzdGQ6OnZlY3Rv
cjxFZGl0VHlwZT4gQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVf
dD4mIGxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIHJpZ2h0KSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVj
dG9yPGRvdWJsZT4gPiBjb3N0cygKKyAgICAgIGxlZnQuc2l6ZSgpICsgMSwgc3RkOjp2ZWN0b3I8
ZG91YmxlPihyaWdodC5zaXplKCkgKyAxKSk7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPEVk
aXRUeXBlPiA+IGJlc3RfbW92ZSgKKyAgICAgIGxlZnQuc2l6ZSgpICsgMSwgc3RkOjp2ZWN0b3I8
RWRpdFR5cGU+KHJpZ2h0LnNpemUoKSArIDEpKTsKKworICAvLyBQb3B1bGF0ZSBmb3IgZW1wdHkg
cmlnaHQuCisgIGZvciAoc2l6ZV90IGxfaSA9IDA7IGxfaSA8IGNvc3RzLnNpemUoKTsgKytsX2kp
IHsKKyAgICBjb3N0c1tsX2ldWzBdID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihsX2kpOworICAgIGJl
c3RfbW92ZVtsX2ldWzBdID0ga1JlbW92ZTsKKyAgfQorICAvLyBQb3B1bGF0ZSBmb3IgZW1wdHkg
bGVmdC4KKyAgZm9yIChzaXplX3Qgcl9pID0gMTsgcl9pIDwgY29zdHNbMF0uc2l6ZSgpOyArK3Jf
aSkgeworICAgIGNvc3RzWzBdW3JfaV0gPSBzdGF0aWNfY2FzdDxkb3VibGU+KHJfaSk7CisgICAg
YmVzdF9tb3ZlWzBdW3JfaV0gPSBrQWRkOworICB9CisKKyAgZm9yIChzaXplX3QgbF9pID0gMDsg
bF9pIDwgbGVmdC5zaXplKCk7ICsrbF9pKSB7CisgICAgZm9yIChzaXplX3Qgcl9pID0gMDsgcl9p
IDwgcmlnaHQuc2l6ZSgpOyArK3JfaSkgeworICAgICAgaWYgKGxlZnRbbF9pXSA9PSByaWdodFty
X2ldKSB7CisgICAgICAgIC8vIEZvdW5kIGEgbWF0Y2guIENvbnN1bWUgaXQuCisgICAgICAgIGNv
c3RzW2xfaSArIDFdW3JfaSArIDFdID0gY29zdHNbbF9pXVtyX2ldOworICAgICAgICBiZXN0X21v
dmVbbF9pICsgMV1bcl9pICsgMV0gPSBrTWF0Y2g7CisgICAgICAgIGNvbnRpbnVlOworICAgICAg
fQorCisgICAgICBjb25zdCBkb3VibGUgYWRkID0gY29zdHNbbF9pICsgMV1bcl9pXTsKKyAgICAg
IGNvbnN0IGRvdWJsZSByZW1vdmUgPSBjb3N0c1tsX2ldW3JfaSArIDFdOworICAgICAgY29uc3Qg
ZG91YmxlIHJlcGxhY2UgPSBjb3N0c1tsX2ldW3JfaV07CisgICAgICBpZiAoYWRkIDwgcmVtb3Zl
ICYmIGFkZCA8IHJlcGxhY2UpIHsKKyAgICAgICAgY29zdHNbbF9pICsgMV1bcl9pICsgMV0gPSBh
ZGQgKyAxOworICAgICAgICBiZXN0X21vdmVbbF9pICsgMV1bcl9pICsgMV0gPSBrQWRkOworICAg
ICAgfSBlbHNlIGlmIChyZW1vdmUgPCBhZGQgJiYgcmVtb3ZlIDwgcmVwbGFjZSkgeworICAgICAg
ICBjb3N0c1tsX2kgKyAxXVtyX2kgKyAxXSA9IHJlbW92ZSArIDE7CisgICAgICAgIGJlc3RfbW92
ZVtsX2kgKyAxXVtyX2kgKyAxXSA9IGtSZW1vdmU7CisgICAgICB9IGVsc2UgeworICAgICAgICAv
LyBXZSBtYWtlIHJlcGxhY2UgYSBsaXR0bGUgbW9yZSBleHBlbnNpdmUgdGhhbiBhZGQvcmVtb3Zl
IHRvIGxvd2VyCisgICAgICAgIC8vIHRoZWlyIHByaW9yaXR5LgorICAgICAgICBjb3N0c1tsX2kg
KyAxXVtyX2kgKyAxXSA9IHJlcGxhY2UgKyAxLjAwMDAxOworICAgICAgICBiZXN0X21vdmVbbF9p
ICsgMV1bcl9pICsgMV0gPSBrUmVwbGFjZTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICAvLyBS
ZWNvbnN0cnVjdCB0aGUgYmVzdCBwYXRoLiBXZSBkbyBpdCBpbiByZXZlcnNlIG9yZGVyLgorICBz
dGQ6OnZlY3RvcjxFZGl0VHlwZT4gYmVzdF9wYXRoOworICBmb3IgKHNpemVfdCBsX2kgPSBsZWZ0
LnNpemUoKSwgcl9pID0gcmlnaHQuc2l6ZSgpOyBsX2kgPiAwIHx8IHJfaSA+IDA7KSB7CisgICAg
RWRpdFR5cGUgbW92ZSA9IGJlc3RfbW92ZVtsX2ldW3JfaV07CisgICAgYmVzdF9wYXRoLnB1c2hf
YmFjayhtb3ZlKTsKKyAgICBsX2kgLT0gbW92ZSAhPSBrQWRkOworICAgIHJfaSAtPSBtb3ZlICE9
IGtSZW1vdmU7CisgIH0KKyAgc3RkOjpyZXZlcnNlKGJlc3RfcGF0aC5iZWdpbigpLCBiZXN0X3Bh
dGguZW5kKCkpOworICByZXR1cm4gYmVzdF9wYXRoOworfQorCituYW1lc3BhY2UgeworCisvLyBI
ZWxwZXIgY2xhc3MgdG8gY29udmVydCBzdHJpbmcgaW50byBpZHMgd2l0aCBkZWR1cGxpY2F0aW9u
LgorY2xhc3MgSW50ZXJuYWxTdHJpbmdzIHsKKyBwdWJsaWM6CisgIHNpemVfdCBHZXRJZChjb25z
dCBzdGQ6OnN0cmluZyYgc3RyKSB7CisgICAgSWRNYXA6Oml0ZXJhdG9yIGl0ID0gaWRzXy5maW5k
KHN0cik7CisgICAgaWYgKGl0ICE9IGlkc18uZW5kKCkpIHJldHVybiBpdC0+c2Vjb25kOworICAg
IHNpemVfdCBpZCA9IGlkc18uc2l6ZSgpOworICAgIHJldHVybiBpZHNfW3N0cl0gPSBpZDsKKyAg
fQorCisgcHJpdmF0ZToKKyAgdHlwZWRlZiBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc2l6ZV90PiBJ
ZE1hcDsKKyAgSWRNYXAgaWRzXzsKK307CisKK30gIC8vIG5hbWVzcGFjZQorCitzdGQ6OnZlY3Rv
cjxFZGl0VHlwZT4gQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPiYgbGVmdCwKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4m
IHJpZ2h0KSB7CisgIHN0ZDo6dmVjdG9yPHNpemVfdD4gbGVmdF9pZHMsIHJpZ2h0X2lkczsKKyAg
eworICAgIEludGVybmFsU3RyaW5ncyBpbnRlcm5fdGFibGU7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsZWZ0LnNpemUoKTsgKytpKSB7CisgICAgICBsZWZ0X2lkcy5wdXNoX2JhY2soaW50
ZXJuX3RhYmxlLkdldElkKGxlZnRbaV0pKTsKKyAgICB9CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCByaWdodC5zaXplKCk7ICsraSkgeworICAgICAgcmlnaHRfaWRzLnB1c2hfYmFjayhpbnRl
cm5fdGFibGUuR2V0SWQocmlnaHRbaV0pKTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIENhbGN1bGF0
ZU9wdGltYWxFZGl0cyhsZWZ0X2lkcywgcmlnaHRfaWRzKTsKK30KKworbmFtZXNwYWNlIHsKKwor
Ly8gSGVscGVyIGNsYXNzIHRoYXQgaG9sZHMgdGhlIHN0YXRlIGZvciBvbmUgaHVuayBhbmQgcHJp
bnRzIGl0IG91dCB0byB0aGUKKy8vIHN0cmVhbS4KKy8vIEl0IHJlb3JkZXJzIGFkZHMvcmVtb3Zl
cyB3aGVuIHBvc3NpYmxlIHRvIGdyb3VwIGFsbCByZW1vdmVzIGJlZm9yZSBhbGwKKy8vIGFkZHMu
IEl0IGFsc28gYWRkcyB0aGUgaHVuayBoZWFkZXIgYmVmb3JlIHByaW50aW50IGludG8gdGhlIHN0
cmVhbS4KK2NsYXNzIEh1bmsgeworIHB1YmxpYzoKKyAgSHVuayhzaXplX3QgbGVmdF9zdGFydCwg
c2l6ZV90IHJpZ2h0X3N0YXJ0KQorICAgICAgOiBsZWZ0X3N0YXJ0XyhsZWZ0X3N0YXJ0KSwKKyAg
ICAgICAgcmlnaHRfc3RhcnRfKHJpZ2h0X3N0YXJ0KSwKKyAgICAgICAgYWRkc18oKSwKKyAgICAg
ICAgcmVtb3Zlc18oKSwKKyAgICAgICAgY29tbW9uXygpIHt9CisKKyAgdm9pZCBQdXNoTGluZShj
aGFyIGVkaXQsIGNvbnN0IGNoYXIqIGxpbmUpIHsKKyAgICBzd2l0Y2ggKGVkaXQpIHsKKyAgICAg
IGNhc2UgJyAnOgorICAgICAgICArK2NvbW1vbl87CisgICAgICAgIEZsdXNoRWRpdHMoKTsKKyAg
ICAgICAgaHVua18ucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKCcgJywgbGluZSkpOworICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgJy0nOgorICAgICAgICArK3JlbW92ZXNfOworICAgICAgICBo
dW5rX3JlbW92ZXNfLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcignLScsIGxpbmUpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlICcrJzoKKyAgICAgICAgKythZGRzXzsKKyAgICAgICAgaHVu
a19hZGRzXy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoJysnLCBsaW5lKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgfQorCisgIHZvaWQgUHJpbnRUbyhzdGQ6Om9zdHJlYW0qIG9zKSB7Cisg
ICAgUHJpbnRIZWFkZXIob3MpOworICAgIEZsdXNoRWRpdHMoKTsKKyAgICBmb3IgKHN0ZDo6bGlz
dDxzdGQ6OnBhaXI8Y2hhciwgY29uc3QgY2hhcio+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0KKyAg
ICAgICAgICAgICBodW5rXy5iZWdpbigpOworICAgICAgICAgaXQgIT0gaHVua18uZW5kKCk7ICsr
aXQpIHsKKyAgICAgICpvcyA8PCBpdC0+Zmlyc3QgPDwgaXQtPnNlY29uZCA8PCAiXG4iOworICAg
IH0KKyAgfQorCisgIGJvb2wgaGFzX2VkaXRzKCkgY29uc3QgeyByZXR1cm4gYWRkc18gfHwgcmVt
b3Zlc187IH0KKworIHByaXZhdGU6CisgIHZvaWQgRmx1c2hFZGl0cygpIHsKKyAgICBodW5rXy5z
cGxpY2UoaHVua18uZW5kKCksIGh1bmtfcmVtb3Zlc18pOworICAgIGh1bmtfLnNwbGljZShodW5r
Xy5lbmQoKSwgaHVua19hZGRzXyk7CisgIH0KKworICAvLyBQcmludCBhIHVuaWZpZWQgZGlmZiBo
ZWFkZXIgZm9yIG9uZSBodW5rLgorICAvLyBUaGUgZm9ybWF0IGlzCisgIC8vICAgIkBAIC08bGVm
dF9zdGFydD4sPGxlZnRfbGVuZ3RoPiArPHJpZ2h0X3N0YXJ0Piw8cmlnaHRfbGVuZ3RoPiBAQCIK
KyAgLy8gd2hlcmUgdGhlIGxlZnQvcmlnaHQgcGFydHMgYXJlIG9taXR0ZWQgaWYgdW5uZWNlc3Nh
cnkuCisgIHZvaWQgUHJpbnRIZWFkZXIoc3RkOjpvc3RyZWFtKiBzcykgY29uc3QgeworICAgICpz
cyA8PCAiQEAgIjsKKyAgICBpZiAocmVtb3Zlc18pIHsKKyAgICAgICpzcyA8PCAiLSIgPDwgbGVm
dF9zdGFydF8gPDwgIiwiIDw8IChyZW1vdmVzXyArIGNvbW1vbl8pOworICAgIH0KKyAgICBpZiAo
cmVtb3Zlc18gJiYgYWRkc18pIHsKKyAgICAgICpzcyA8PCAiICI7CisgICAgfQorICAgIGlmIChh
ZGRzXykgeworICAgICAgKnNzIDw8ICIrIiA8PCByaWdodF9zdGFydF8gPDwgIiwiIDw8IChhZGRz
XyArIGNvbW1vbl8pOworICAgIH0KKyAgICAqc3MgPDwgIiBAQFxuIjsKKyAgfQorCisgIHNpemVf
dCBsZWZ0X3N0YXJ0XywgcmlnaHRfc3RhcnRfOworICBzaXplX3QgYWRkc18sIHJlbW92ZXNfLCBj
b21tb25fOworICBzdGQ6Omxpc3Q8c3RkOjpwYWlyPGNoYXIsIGNvbnN0IGNoYXIqPiA+IGh1bmtf
LCBodW5rX2FkZHNfLCBodW5rX3JlbW92ZXNfOworfTsKKworfSAgLy8gbmFtZXNwYWNlCisKKy8v
IENyZWF0ZSBhIGxpc3Qgb2YgZGlmZiBodW5rcyBpbiBVbmlmaWVkIGRpZmYgZm9ybWF0LgorLy8g
RWFjaCBodW5rIGhhcyBhIGhlYWRlciBnZW5lcmF0ZWQgYnkgUHJpbnRIZWFkZXIgYWJvdmUgcGx1
cyBhIGJvZHkgd2l0aAorLy8gbGluZXMgcHJlZml4ZWQgd2l0aCAnICcgZm9yIG5vIGNoYW5nZSwg
Jy0nIGZvciBkZWxldGlvbiBhbmQgJysnIGZvcgorLy8gYWRkaXRpb24uCisvLyAnY29udGV4dCcg
cmVwcmVzZW50cyB0aGUgZGVzaXJlZCB1bmNoYW5nZWQgcHJlZml4L3N1ZmZpeCBhcm91bmQgdGhl
IGRpZmYuCisvLyBJZiB0d28gaHVua3MgYXJlIGNsb3NlIGVub3VnaCB0aGF0IHRoZWlyIGNvbnRl
eHRzIG92ZXJsYXAsIHRoZW4gdGhleSBhcmUKKy8vIGpvaW5lZCBpbnRvIG9uZSBodW5rLgorc3Rk
OjpzdHJpbmcgQ3JlYXRlVW5pZmllZERpZmYoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
JiBsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+JiByaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBjb250ZXh0KSB7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPEVkaXRUeXBlPiBlZGl0cyA9IENhbGN1
bGF0ZU9wdGltYWxFZGl0cyhsZWZ0LCByaWdodCk7CisKKyAgc2l6ZV90IGxfaSA9IDAsIHJfaSA9
IDAsIGVkaXRfaSA9IDA7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICB3aGlsZSAoZWRpdF9p
IDwgZWRpdHMuc2l6ZSgpKSB7CisgICAgLy8gRmluZCBmaXJzdCBlZGl0LgorICAgIHdoaWxlIChl
ZGl0X2kgPCBlZGl0cy5zaXplKCkgJiYgZWRpdHNbZWRpdF9pXSA9PSBrTWF0Y2gpIHsKKyAgICAg
ICsrbF9pOworICAgICAgKytyX2k7CisgICAgICArK2VkaXRfaTsKKyAgICB9CisKKyAgICAvLyBG
aW5kIHRoZSBmaXJzdCBsaW5lIHRvIGluY2x1ZGUgaW4gdGhlIGh1bmsuCisgICAgY29uc3Qgc2l6
ZV90IHByZWZpeF9jb250ZXh0ID0gc3RkOjptaW4obF9pLCBjb250ZXh0KTsKKyAgICBIdW5rIGh1
bmsobF9pIC0gcHJlZml4X2NvbnRleHQgKyAxLCByX2kgLSBwcmVmaXhfY29udGV4dCArIDEpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSBwcmVmaXhfY29udGV4dDsgaSA+IDA7IC0taSkgeworICAgICAg
aHVuay5QdXNoTGluZSgnICcsIGxlZnRbbF9pIC0gaV0uY19zdHIoKSk7CisgICAgfQorCisgICAg
Ly8gSXRlcmF0ZSB0aGUgZWRpdHMgdW50aWwgd2UgZm91bmQgZW5vdWdoIHN1ZmZpeCBmb3IgdGhl
IGh1bmsgb3IgdGhlIGlucHV0CisgICAgLy8gaXMgb3Zlci4KKyAgICBzaXplX3Qgbl9zdWZmaXgg
PSAwOworICAgIGZvciAoOyBlZGl0X2kgPCBlZGl0cy5zaXplKCk7ICsrZWRpdF9pKSB7CisgICAg
ICBpZiAobl9zdWZmaXggPj0gY29udGV4dCkgeworICAgICAgICAvLyBDb250aW51ZSBvbmx5IGlm
IHRoZSBuZXh0IGh1bmsgaXMgdmVyeSBjbG9zZS4KKyAgICAgICAgc3RkOjp2ZWN0b3I8RWRpdFR5
cGU+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGVkaXRzLmJlZ2luKCkgKyBlZGl0X2k7CisgICAgICAg
IHdoaWxlIChpdCAhPSBlZGl0cy5lbmQoKSAmJiAqaXQgPT0ga01hdGNoKSArK2l0OworICAgICAg
ICBpZiAoaXQgPT0gZWRpdHMuZW5kKCkgfHwgKGl0IC0gZWRpdHMuYmVnaW4oKSkgLSBlZGl0X2kg
Pj0gY29udGV4dCkgeworICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG5leHQgZWRpdCBvciBpdCBp
cyB0b28gZmFyIGF3YXkuCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKwor
ICAgICAgRWRpdFR5cGUgZWRpdCA9IGVkaXRzW2VkaXRfaV07CisgICAgICAvLyBSZXNldCBjb3Vu
dCB3aGVuIGEgbm9uIG1hdGNoIGlzIGZvdW5kLgorICAgICAgbl9zdWZmaXggPSBlZGl0ID09IGtN
YXRjaCA/IG5fc3VmZml4ICsgMSA6IDA7CisKKyAgICAgIGlmIChlZGl0ID09IGtNYXRjaCB8fCBl
ZGl0ID09IGtSZW1vdmUgfHwgZWRpdCA9PSBrUmVwbGFjZSkgeworICAgICAgICBodW5rLlB1c2hM
aW5lKGVkaXQgPT0ga01hdGNoID8gJyAnIDogJy0nLCBsZWZ0W2xfaV0uY19zdHIoKSk7CisgICAg
ICB9CisgICAgICBpZiAoZWRpdCA9PSBrQWRkIHx8IGVkaXQgPT0ga1JlcGxhY2UpIHsKKyAgICAg
ICAgaHVuay5QdXNoTGluZSgnKycsIHJpZ2h0W3JfaV0uY19zdHIoKSk7CisgICAgICB9CisKKyAg
ICAgIC8vIEFkdmFuY2UgaW5kaWNlcywgZGVwZW5kaW5nIG9uIGVkaXQgdHlwZS4KKyAgICAgIGxf
aSArPSBlZGl0ICE9IGtBZGQ7CisgICAgICByX2kgKz0gZWRpdCAhPSBrUmVtb3ZlOworICAgIH0K
KworICAgIGlmICghaHVuay5oYXNfZWRpdHMoKSkgeworICAgICAgLy8gV2UgYXJlIGRvbmUuIFdl
IGRvbid0IHdhbnQgdGhpcyBodW5rLgorICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaHVuay5Q
cmludFRvKCZzcyk7CisgIH0KKyAgcmV0dXJuIHNzLnN0cigpOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UgZWRpdF9kaXN0YW5jZQorCituYW1lc3BhY2UgeworCisvLyBUaGUgc3RyaW5nIHJlcHJlc2Vu
dGF0aW9uIG9mIHRoZSB2YWx1ZXMgcmVjZWl2ZWQgaW4gRXFGYWlsdXJlKCkgYXJlIGFscmVhZHkK
Ky8vIGVzY2FwZWQuIFNwbGl0IHRoZW0gb24gZXNjYXBlZCAnXG4nIGJvdW5kYXJpZXMuIExlYXZl
IGFsbCBvdGhlciBlc2NhcGVkCisvLyBjaGFyYWN0ZXJzIHRoZSBzYW1lLgorc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IFNwbGl0RXNjYXBlZFN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7
CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBsaW5lczsKKyAgc2l6ZV90IHN0YXJ0ID0gMCwg
ZW5kID0gc3RyLnNpemUoKTsKKyAgaWYgKGVuZCA+IDIgJiYgc3RyWzBdID09ICciJyAmJiBzdHJb
ZW5kIC0gMV0gPT0gJyInKSB7CisgICAgKytzdGFydDsKKyAgICAtLWVuZDsKKyAgfQorICBib29s
IGVzY2FwZWQgPSBmYWxzZTsKKyAgZm9yIChzaXplX3QgaSA9IHN0YXJ0OyBpICsgMSA8IGVuZDsg
KytpKSB7CisgICAgaWYgKGVzY2FwZWQpIHsKKyAgICAgIGVzY2FwZWQgPSBmYWxzZTsKKyAgICAg
IGlmIChzdHJbaV0gPT0gJ24nKSB7CisgICAgICAgIGxpbmVzLnB1c2hfYmFjayhzdHIuc3Vic3Ry
KHN0YXJ0LCBpIC0gc3RhcnQgLSAxKSk7CisgICAgICAgIHN0YXJ0ID0gaSArIDE7CisgICAgICB9
CisgICAgfSBlbHNlIHsKKyAgICAgIGVzY2FwZWQgPSBzdHJbaV0gPT0gJ1xcJzsKKyAgICB9Cisg
IH0KKyAgbGluZXMucHVzaF9iYWNrKHN0ci5zdWJzdHIoc3RhcnQsIGVuZCAtIHN0YXJ0KSk7Cisg
IHJldHVybiBsaW5lczsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKIC8vIENvbnN0cnVjdHMgYW5k
IHJldHVybnMgdGhlIG1lc3NhZ2UgZm9yIGFuIGVxdWFsaXR5IGFzc2VydGlvbgogLy8gKGUuZy4g
QVNTRVJUX0VRLCBFWFBFQ1RfU1RSRVEsIGV0YykgZmFpbHVyZS4KIC8vCkBAIC0xMDAyLDQxICsx
MzQ1LDU0IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLyBhbmQgdGhlaXIgdmFsdWVzLCBhcyBz
dHJpbmdzLiAgRm9yIGV4YW1wbGUsIGZvciBBU1NFUlRfRVEoZm9vLCBiYXIpCiAvLyB3aGVyZSBm
b28gaXMgNSBhbmQgYmFyIGlzIDYsIHdlIGhhdmU6CiAvLwotLy8gICBleHBlY3RlZF9leHByZXNz
aW9uOiAiZm9vIgotLy8gICBhY3R1YWxfZXhwcmVzc2lvbjogICAiYmFyIgotLy8gICBleHBlY3Rl
ZF92YWx1ZTogICAgICAiNSIKLS8vICAgYWN0dWFsX3ZhbHVlOiAgICAgICAgIjYiCisvLyAgIGxo
c19leHByZXNzaW9uOiAiZm9vIgorLy8gICByaHNfZXhwcmVzc2lvbjogImJhciIKKy8vICAgbGhz
X3ZhbHVlOiAgICAgICI1IgorLy8gICByaHNfdmFsdWU6ICAgICAgIjYiCiAvLwogLy8gVGhlIGln
bm9yaW5nX2Nhc2UgcGFyYW1ldGVyIGlzIHRydWUgaWZmIHRoZSBhc3NlcnRpb24gaXMgYQotLy8g
Kl9TVFJDQVNFRVEqLiAgV2hlbiBpdCdzIHRydWUsIHRoZSBzdHJpbmcgIiAoaWdub3JpbmcgY2Fz
ZSkiIHdpbGwKKy8vICpfU1RSQ0FTRUVRKi4gIFdoZW4gaXQncyB0cnVlLCB0aGUgc3RyaW5nICJJ
Z25vcmluZyBjYXNlIiB3aWxsCiAvLyBiZSBpbnNlcnRlZCBpbnRvIHRoZSBtZXNzYWdlLgotQXNz
ZXJ0aW9uUmVzdWx0IEVxRmFpbHVyZShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBleHBlY3RlZF92YWx1ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBhY3R1YWxfdmFsdWUsCitB
c3NlcnRpb25SZXN1bHQgRXFGYWlsdXJlKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxoc192YWx1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHJoc192YWx1ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25vcmluZ19jYXNlKSB7CiAgIE1lc3NhZ2UgbXNn
OwotICBtc2cgPDwgIlZhbHVlIG9mOiAiIDw8IGFjdHVhbF9leHByZXNzaW9uOwotICBpZiAoYWN0
dWFsX3ZhbHVlICE9IGFjdHVhbF9leHByZXNzaW9uKSB7Ci0gICAgbXNnIDw8ICJcbiAgQWN0dWFs
OiAiIDw8IGFjdHVhbF92YWx1ZTsKKyAgbXNnIDw8ICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVz
ZSB2YWx1ZXM6IjsKKyAgbXNnIDw8ICJcbiAgIiA8PCBsaHNfZXhwcmVzc2lvbjsKKyAgaWYgKGxo
c192YWx1ZSAhPSBsaHNfZXhwcmVzc2lvbikgeworICAgIG1zZyA8PCAiXG4gICAgV2hpY2ggaXM6
ICIgPDwgbGhzX3ZhbHVlOworICB9CisgIG1zZyA8PCAiXG4gICIgPDwgcmhzX2V4cHJlc3Npb247
CisgIGlmIChyaHNfdmFsdWUgIT0gcmhzX2V4cHJlc3Npb24pIHsKKyAgICBtc2cgPDwgIlxuICAg
IFdoaWNoIGlzOiAiIDw8IHJoc192YWx1ZTsKICAgfQogCi0gIG1zZyA8PCAiXG5FeHBlY3RlZDog
IiA8PCBleHBlY3RlZF9leHByZXNzaW9uOwogICBpZiAoaWdub3JpbmdfY2FzZSkgewotICAgIG1z
ZyA8PCAiIChpZ25vcmluZyBjYXNlKSI7CisgICAgbXNnIDw8ICJcbklnbm9yaW5nIGNhc2UiOwog
ICB9Ci0gIGlmIChleHBlY3RlZF92YWx1ZSAhPSBleHBlY3RlZF9leHByZXNzaW9uKSB7Ci0gICAg
bXNnIDw8ICJcbldoaWNoIGlzOiAiIDw8IGV4cGVjdGVkX3ZhbHVlOworCisgIGlmICghbGhzX3Zh
bHVlLmVtcHR5KCkgJiYgIXJoc192YWx1ZS5lbXB0eSgpKSB7CisgICAgY29uc3Qgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+IGxoc19saW5lcyA9CisgICAgICAgIFNwbGl0RXNjYXBlZFN0cmluZyhs
aHNfdmFsdWUpOworICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiByaHNfbGluZXMg
PQorICAgICAgICBTcGxpdEVzY2FwZWRTdHJpbmcocmhzX3ZhbHVlKTsKKyAgICBpZiAobGhzX2xp
bmVzLnNpemUoKSA+IDEgfHwgcmhzX2xpbmVzLnNpemUoKSA+IDEpIHsKKyAgICAgIG1zZyA8PCAi
XG5XaXRoIGRpZmY6XG4iCisgICAgICAgICAgPDwgZWRpdF9kaXN0YW5jZTo6Q3JlYXRlVW5pZmll
ZERpZmYobGhzX2xpbmVzLCByaHNfbGluZXMpOworICAgIH0KICAgfQogCi0gIHJldHVybiBBc3Nl
cnRpb25GYWlsdXJlKG1zZyk7CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgbXNnOwog
fQogCiAvLyBDb25zdHJ1Y3RzIGEgZmFpbHVyZSBtZXNzYWdlIGZvciBCb29sZWFuIGFzc2VydGlv
bnMgc3VjaCBhcyBFWFBFQ1RfVFJVRS4KLVN0cmluZyBHZXRCb29sQXNzZXJ0aW9uRmFpbHVyZU1l
c3NhZ2UoY29uc3QgQXNzZXJ0aW9uUmVzdWx0JiBhc3NlcnRpb25fcmVzdWx0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHByZXNzaW9uX3RleHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVh
bF9wcmVkaWNhdGVfdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGV4cGVjdGVkX3ByZWRpY2F0ZV92YWx1ZSkgeworc3RkOjpzdHJpbmcgR2V0
Qm9vbEFzc2VydGlvbkZhaWx1cmVNZXNzYWdlKAorICAgIGNvbnN0IEFzc2VydGlvblJlc3VsdCYg
YXNzZXJ0aW9uX3Jlc3VsdCwKKyAgICBjb25zdCBjaGFyKiBleHByZXNzaW9uX3RleHQsCisgICAg
Y29uc3QgY2hhciogYWN0dWFsX3ByZWRpY2F0ZV92YWx1ZSwKKyAgICBjb25zdCBjaGFyKiBleHBl
Y3RlZF9wcmVkaWNhdGVfdmFsdWUpIHsKICAgY29uc3QgY2hhciogYWN0dWFsX21lc3NhZ2UgPSBh
c3NlcnRpb25fcmVzdWx0Lm1lc3NhZ2UoKTsKICAgTWVzc2FnZSBtc2c7CiAgIG1zZyA8PCAiVmFs
dWUgb2Y6ICIgPDwgZXhwcmVzc2lvbl90ZXh0CkBAIC0xMDU3LDE1ICsxNDEzLDE0IEBAIEFzc2Vy
dGlvblJlc3VsdCBEb3VibGVOZWFyUHJlZEZvcm1hdChjb25zdCBjaGFyKiBleHByMSwKICAgY29u
c3QgZG91YmxlIGRpZmYgPSBmYWJzKHZhbDEgLSB2YWwyKTsKICAgaWYgKGRpZmYgPD0gYWJzX2Vy
cm9yKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIC8vIFRPRE8od2FuKTogZG8gbm90
IHByaW50IHRoZSB2YWx1ZSBvZiBhbiBleHByZXNzaW9uIGlmIGl0J3MKKyAgLy8gRklYTUU6IGRv
IG5vdCBwcmludCB0aGUgdmFsdWUgb2YgYW4gZXhwcmVzc2lvbiBpZiBpdCdzCiAgIC8vIGFscmVh
ZHkgYSBsaXRlcmFsLgotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8ICJUaGUgZGlmZmVyZW5jZSBi
ZXR3ZWVuICIgPDwgZXhwcjEgPDwgIiBhbmQgIiA8PCBleHByMgorICByZXR1cm4gQXNzZXJ0aW9u
RmFpbHVyZSgpCisgICAgICA8PCAiVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAiIDw8IGV4cHIxIDw8
ICIgYW5kICIgPDwgZXhwcjIKICAgICAgIDw8ICIgaXMgIiA8PCBkaWZmIDw8ICIsIHdoaWNoIGV4
Y2VlZHMgIiA8PCBhYnNfZXJyb3JfZXhwciA8PCAiLCB3aGVyZVxuIgogICAgICAgPDwgZXhwcjEg
PDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2YWwxIDw8ICIsXG4iCiAgICAgICA8PCBleHByMiA8PCAi
IGV2YWx1YXRlcyB0byAiIDw8IHZhbDIgPDwgIiwgYW5kXG4iCiAgICAgICA8PCBhYnNfZXJyb3Jf
ZXhwciA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IGFic19lcnJvciA8PCAiLiI7Ci0gIHJldHVybiBB
c3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIApAQCAtMTA5MCwyMCArMTQ0NSwxOCBAQCBBc3Nl
cnRpb25SZXN1bHQgRmxvYXRpbmdQb2ludExFKGNvbnN0IGNoYXIqIGV4cHIxLAogICAvLyB2YWwy
IGlzIE5hTiwgYXMgdGhlIElFRUUgZmxvYXRpbmctcG9pbnQgc3RhbmRhcmQgcmVxdWlyZXMgdGhh
dAogICAvLyBhbnkgcHJlZGljYXRlIGludm9sdmluZyBhIE5hTiBtdXN0IHJldHVybiBmYWxzZS4K
IAotICBTdHJTdHJlYW0gdmFsMV9zczsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSB2YWwxX3NzOwog
ICB2YWwxX3NzIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8UmF3VHlw
ZT46OmRpZ2l0czEwICsgMikKICAgICAgICAgICA8PCB2YWwxOwogCi0gIFN0clN0cmVhbSB2YWwy
X3NzOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHZhbDJfc3M7CiAgIHZhbDJfc3MgPDwgc3RkOjpz
ZXRwcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxSYXdUeXBlPjo6ZGlnaXRzMTAgKyAyKQog
ICAgICAgICAgIDw8IHZhbDI7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCAiRXhwZWN0ZWQ6
ICgiIDw8IGV4cHIxIDw8ICIpIDw9ICgiIDw8IGV4cHIyIDw8ICIpXG4iCi0gICAgICA8PCAiICBB
Y3R1YWw6ICIgPDwgU3RyU3RyZWFtVG9TdHJpbmcoJnZhbDFfc3MpIDw8ICIgdnMgIgotICAgICAg
PDwgU3RyU3RyZWFtVG9TdHJpbmcoJnZhbDJfc3MpOwotCi0gIHJldHVybiBBc3NlcnRpb25GYWls
dXJlKG1zZyk7CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8ICJFeHBlY3Rl
ZDogKCIgPDwgZXhwcjEgPDwgIikgPD0gKCIgPDwgZXhwcjIgPDwgIilcbiIKKyAgICAgIDw8ICIg
IEFjdHVhbDogIiA8PCBTdHJpbmdTdHJlYW1Ub1N0cmluZygmdmFsMV9zcykgPDwgIiB2cyAiCisg
ICAgICA8PCBTdHJpbmdTdHJlYW1Ub1N0cmluZygmdmFsMl9zcyk7CiB9CiAKIH0gIC8vIG5hbWVz
cGFjZSBpbnRlcm5hbApAQCAtMTEyNiwxOCArMTQ3OSwxOCBAQCBuYW1lc3BhY2UgaW50ZXJuYWwg
ewogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fRVEgd2l0aCBp
bnQgb3IgZW51bQogLy8gYXJndW1lbnRzLgotQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRKGNv
bnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQmlnZ2VzdEludCBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
aWdnZXN0SW50IGFjdHVhbCkgewotICBpZiAoZXhwZWN0ZWQgPT0gYWN0dWFsKSB7CitBc3NlcnRp
b25SZXN1bHQgQ21wSGVscGVyRVEoY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBsaHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQmlnZ2VzdEludCByaHMpIHsKKyAgaWYgKGxocyA9PSByaHMpIHsKICAgICByZXR1
cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9CiAKLSAgcmV0dXJuIEVxRmFpbHVyZShleHBlY3Rl
ZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIGFjdHVhbF9leHByZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShleHBlY3Rl
ZCwgYWN0dWFsKSwKLSAgICAgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVy
ZU1lc3NhZ2UoYWN0dWFsLCBleHBlY3RlZCksCisgIHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJl
c3Npb24sCisgICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAg
ICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKGxocywgcmhzKSwKKyAgICAg
ICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocmhzLCBsaHMp
LAogICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKIH0KIApAQCAtMTE1MCwxMSArMTUwMywxMCBA
QCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyIyNvcF9uYW1lKGNvbnN0IGNoYXIqIGV4cHIxLCBj
b25zdCBjaGFyKiBleHByMiwgXAogICBpZiAodmFsMSBvcCB2YWwyKSB7XAogICAgIHJldHVybiBB
c3NlcnRpb25TdWNjZXNzKCk7XAogICB9IGVsc2Uge1wKLSAgICBNZXNzYWdlIG1zZztcCi0gICAg
bXNnIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgIiAjb3AgIiAoIiA8PCBleHByMlwK
KyAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIFwKKyAgICAgICAgPDwgIkV4cGVjdGVkOiAo
IiA8PCBleHByMSA8PCAiKSAiICNvcCAiICgiIDw8IGV4cHIyXAogICAgICAgICA8PCAiKSwgYWN0
dWFsOiAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSh2YWwxLCB2YWwyKVwK
ICAgICAgICAgPDwgIiB2cyAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSh2
YWwyLCB2YWwxKTtcCi0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTtcCiAgIH1cCiB9
CiAKQEAgLTExNzcsMzQgKzE1MjksMzQgQEAgR1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhHVCwgPiAp
CiAjdW5kZWYgR1RFU1RfSU1QTF9DTVBfSEVMUEVSXwogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9u
IGZvciB7QVNTRVJUfEVYUEVDVH1fU1RSRVEuCi1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RS
RVEoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWwpIHsKLSAgaWYgKFN0cmluZzo6Q1N0cmlu
Z0VxdWFscyhleHBlY3RlZCwgYWN0dWFsKSkgeworQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNU
UkVRKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiByaHMpIHsKKyAgaWYgKFN0cmluZzo6Q1N0cmluZ0VxdWFscyhsaHMsIHJo
cykpIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9CiAKLSAgcmV0dXJuIEVx
RmFpbHVyZShleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIGFjdHVhbF9l
eHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQo
ZXhwZWN0ZWQpLAotICAgICAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQo
YWN0dWFsKSwKKyAgcmV0dXJuIEVxRmFpbHVyZShsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICBQcmludFRvU3RyaW5n
KGxocyksCisgICAgICAgICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhyaHMpLAogICAgICAgICAg
ICAgICAgICAgIGZhbHNlKTsKIH0KIAogLy8gVGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VS
VHxFWFBFQ1R9X1NUUkNBU0VFUS4KLUFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJDQVNFRVEo
Y29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWwpIHsKLSAgaWYgKFN0cmlu
Zzo6Q2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFscyhleHBlY3RlZCwgYWN0dWFsKSkgeworQXNz
ZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4
cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhz
KSB7CisgIGlmIChTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMobGhzLCByaHMp
KSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQogCi0gIHJldHVybiBFcUZh
aWx1cmUoZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBhY3R1YWxfZXhw
cmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBTdHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKGV4
cGVjdGVkKSwKLSAgICAgICAgICAgICAgICAgICBTdHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKGFj
dHVhbCksCisgIHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAg
ICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhs
aHMpLAorICAgICAgICAgICAgICAgICAgIFByaW50VG9TdHJpbmcocmhzKSwKICAgICAgICAgICAg
ICAgICAgICB0cnVlKTsKIH0KIApAQCAtMTIxNiwxMSArMTU2OCw5IEBAIEFzc2VydGlvblJlc3Vs
dCBDbXBIZWxwZXJTVFJORShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAogICBpZiAoIVN0cmlu
Zzo6Q1N0cmluZ0VxdWFscyhzMSwgczIpKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3Mo
KTsKICAgfSBlbHNlIHsKLSAgICBNZXNzYWdlIG1zZzsKLSAgICBtc2cgPDwgIkV4cGVjdGVkOiAo
IiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgiCi0gICAgICAgIDw8IHMyX2V4cHJlc3Npb24g
PDwgIiksIGFjdHVhbDogXCIiCi0gICAgICAgIDw8IHMxIDw8ICJcIiB2cyBcIiIgPDwgczIgPDwg
IlwiIjsKLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICAgIHJldHVybiBBc3Nl
cnRpb25GYWlsdXJlKCkgPDwgIkV4cGVjdGVkOiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9
ICgiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzMl9leHByZXNzaW9uIDw8ICIp
LCBhY3R1YWw6IFwiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgczEgPDwgIlwi
IHZzIFwiIiA8PCBzMiA8PCAiXCIiOwogICB9CiB9CiAKQEAgLTEyMzIsMTEgKzE1ODIsMTAgQEAg
QXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VORShjb25zdCBjaGFyKiBzMV9leHByZXNz
aW9uLAogICBpZiAoIVN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFscyhzMSwgczIp
KSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfSBlbHNlIHsKLSAgICBNZXNz
YWdlIG1zZzsKLSAgICBtc2cgPDwgIkV4cGVjdGVkOiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIp
ICE9ICgiCisgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgICA8PCAiRXhwZWN0
ZWQ6ICgiIDw8IHMxX2V4cHJlc3Npb24gPDwgIikgIT0gKCIKICAgICAgICAgPDwgczJfZXhwcmVz
c2lvbiA8PCAiKSAoaWdub3JpbmcgY2FzZSksIGFjdHVhbDogXCIiCiAgICAgICAgIDw8IHMxIDw8
ICJcIiB2cyBcIiIgPDwgczIgPDwgIlwiIjsKLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSht
c2cpOwogICB9CiB9CiAKQEAgLTEyODUsMTMgKzE2MzQsMTIgQEAgQXNzZXJ0aW9uUmVzdWx0IElz
U3Vic3RyaW5nSW1wbCgKIAogICBjb25zdCBib29sIGlzX3dpZGVfc3RyaW5nID0gc2l6ZW9mKG5l
ZWRsZVswXSkgPiAxOwogICBjb25zdCBjaGFyKiBjb25zdCBiZWdpbl9zdHJpbmdfcXVvdGUgPSBp
c193aWRlX3N0cmluZyA/ICJMXCIiIDogIlwiIjsKLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUo
Ci0gICAgICBNZXNzYWdlKCkKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKQogICAgICAgPDwg
IlZhbHVlIG9mOiAiIDw8IG5lZWRsZV9leHByIDw8ICJcbiIKICAgICAgIDw8ICIgIEFjdHVhbDog
IiA8PCBiZWdpbl9zdHJpbmdfcXVvdGUgPDwgbmVlZGxlIDw8ICJcIlxuIgogICAgICAgPDwgIkV4
cGVjdGVkOiAiIDw8IChleHBlY3RlZF90b19iZV9zdWJzdHJpbmcgPyAiIiA6ICJub3QgIikKICAg
ICAgIDw8ICJhIHN1YnN0cmluZyBvZiAiIDw8IGhheXN0YWNrX2V4cHIgPDwgIlxuIgotICAgICAg
PDwgIldoaWNoIGlzOiAiIDw8IGJlZ2luX3N0cmluZ19xdW90ZSA8PCBoYXlzdGFjayA8PCAiXCIi
KTsKKyAgICAgIDw8ICJXaGljaCBpczogIiA8PCBiZWdpbl9zdHJpbmdfcXVvdGUgPDwgaGF5c3Rh
Y2sgPDwgIlwiIjsKIH0KIAogfSAgLy8gbmFtZXNwYWNlCkBAIC0xMzYwLDE2ICsxNzA4LDE5IEBA
IG5hbWVzcGFjZSB7CiBBc3NlcnRpb25SZXN1bHQgSFJFU1VMVEZhaWx1cmVIZWxwZXIoY29uc3Qg
Y2hhciogZXhwciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25n
IGhyKSB7ICAvLyBOT0xJTlQKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBpZiBHVEVT
VF9PU19XSU5ET1dTX01PQklMRSB8fCBHVEVTVF9PU19XSU5ET1dTX1RWX1RJVExFCisKICAgLy8g
V2luZG93cyBDRSBkb2Vzbid0IHN1cHBvcnQgRm9ybWF0TWVzc2FnZS4KICAgY29uc3QgY2hhciBl
cnJvcl90ZXh0W10gPSAiIjsKLSNlbHNlCisKKyMgZWxzZQorCiAgIC8vIExvb2tzIHVwIHRoZSBo
dW1hbi1yZWFkYWJsZSBzeXN0ZW0gbWVzc2FnZSBmb3IgdGhlIEhSRVNVTFQgY29kZQogICAvLyBh
bmQgc2luY2Ugd2UncmUgbm90IHBhc3NpbmcgYW55IHBhcmFtcyB0byBGb3JtYXRNZXNzYWdlLCB3
ZSBkb24ndAogICAvLyB3YW50IGluc2VydHMgZXhwYW5kZWQuCiAgIGNvbnN0IERXT1JEIGtGbGFn
cyA9IEZPUk1BVF9NRVNTQUdFX0ZST01fU1lTVEVNIHwKICAgICAgICAgICAgICAgICAgICAgICAg
Rk9STUFUX01FU1NBR0VfSUdOT1JFX0lOU0VSVFM7Ci0gIGNvbnN0IERXT1JEIGtCdWZTaXplID0g
NDA5NjsgIC8vIFN0cmluZzo6Rm9ybWF0IGNhbid0IGV4Y2VlZCB0aGlzIGxlbmd0aC4KKyAgY29u
c3QgRFdPUkQga0J1ZlNpemUgPSA0MDk2OwogICAvLyBHZXRzIHRoZSBzeXN0ZW0ncyBodW1hbiBy
ZWFkYWJsZSBtZXNzYWdlIHN0cmluZyBmb3IgdGhpcyBIUkVTVUxULgogICBjaGFyIGVycm9yX3Rl
eHRba0J1ZlNpemVdID0geyAnXDAnIH07CiAgIERXT1JEIG1lc3NhZ2VfbGVuZ3RoID0gOjpGb3Jt
YXRNZXNzYWdlQShrRmxhZ3MsCkBAIC0xMzc5LDE5ICsxNzMwLDE4IEBAIEFzc2VydGlvblJlc3Vs
dCBIUkVTVUxURmFpbHVyZUhlbHBlcihjb25zdCBjaGFyKiBleHByLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfdGV4dCwgIC8vIG91dHB1dCBidWZmZXIK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtCdWZTaXplLCAgLy8g
YnVmIHNpemUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwp
OyAgLy8gbm8gYXJndW1lbnRzIGZvciBpbnNlcnRzCi0gIC8vIFRyaW1zIHRhaWxpbmcgd2hpdGUg
c3BhY2UgKEZvcm1hdE1lc3NhZ2UgbGVhdmVzIGEgdHJhaWxpbmcgY3ItbGYpCi0gIGZvciAoOyBt
ZXNzYWdlX2xlbmd0aCAmJiBpc3NwYWNlKGVycm9yX3RleHRbbWVzc2FnZV9sZW5ndGggLSAxXSk7
CisgIC8vIFRyaW1zIHRhaWxpbmcgd2hpdGUgc3BhY2UgKEZvcm1hdE1lc3NhZ2UgbGVhdmVzIGEg
dHJhaWxpbmcgQ1ItTEYpCisgIGZvciAoOyBtZXNzYWdlX2xlbmd0aCAmJiBJc1NwYWNlKGVycm9y
X3RleHRbbWVzc2FnZV9sZW5ndGggLSAxXSk7CiAgICAgICAgICAgLS1tZXNzYWdlX2xlbmd0aCkg
ewogICAgIGVycm9yX3RleHRbbWVzc2FnZV9sZW5ndGggLSAxXSA9ICdcMCc7CiAgIH0KLSNlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIAotICBjb25zdCBTdHJpbmcgZXJyb3JfaGV4
KFN0cmluZzo6Rm9ybWF0KCIweCUwOFggIiwgaHIpKTsKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8
PCAiRXhwZWN0ZWQ6ICIgPDwgZXhwciA8PCAiICIgPDwgZXhwZWN0ZWQgPDwgIi5cbiIKLSAgICAg
IDw8ICIgIEFjdHVhbDogIiA8PCBlcnJvcl9oZXggPDwgZXJyb3JfdGV4dCA8PCAiXG4iOworIyBl
bmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIAotICByZXR1cm4gOjp0ZXN0aW5nOjpB
c3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGVycm9yX2hleCgiMHgi
ICsgU3RyaW5nOjpGb3JtYXRIZXhJbnQoaHIpKTsKKyAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0
aW9uRmFpbHVyZSgpCisgICAgICA8PCAiRXhwZWN0ZWQ6ICIgPDwgZXhwciA8PCAiICIgPDwgZXhw
ZWN0ZWQgPDwgIi5cbiIKKyAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBlcnJvcl9oZXggPDwgIiAi
IDw8IGVycm9yX3RleHQgPDwgIlxuIjsKIH0KIAogfSAgLy8gbmFtZXNwYWNlCkBAIC0xNDE1LDcg
KzE3NjUsNyBAQCBBc3NlcnRpb25SZXN1bHQgSXNIUkVTVUxURmFpbHVyZShjb25zdCBjaGFyKiBl
eHByLCBsb25nIGhyKSB7ICAvLyBOT0xJTlQKIC8vIFV0aWxpdHkgZnVuY3Rpb25zIGZvciBlbmNv
ZGluZyBVbmljb2RlIHRleHQgKHdpZGUgc3RyaW5ncykgaW4KIC8vIFVURi04LgogCi0vLyBBIFVu
aWNvZGUgY29kZS1wb2ludCBjYW4gaGF2ZSB1cHRvIDIxIGJpdHMsIGFuZCBpcyBlbmNvZGVkIGlu
IFVURi04CisvLyBBIFVuaWNvZGUgY29kZS1wb2ludCBjYW4gaGF2ZSB1cCB0byAyMSBiaXRzLCBh
bmQgaXMgZW5jb2RlZCBpbiBVVEYtOAogLy8gbGlrZSB0aGlzOgogLy8KIC8vIENvZGUtcG9pbnQg
bGVuZ3RoICAgRW5jb2RpbmcKQEAgLTE0NDgsMTIgKzE3OTgsMTUgQEAgaW5saW5lIFVJbnQzMiBD
aG9wTG93Qml0cyhVSW50MzIqIGJpdHMsIGludCBuKSB7CiAvLyBDb252ZXJ0cyBhIFVuaWNvZGUg
Y29kZSBwb2ludCB0byBhIG5hcnJvdyBzdHJpbmcgaW4gVVRGLTggZW5jb2RpbmcuCiAvLyBjb2Rl
X3BvaW50IHBhcmFtZXRlciBpcyBvZiB0eXBlIFVJbnQzMiBiZWNhdXNlIHdjaGFyX3QgbWF5IG5v
dCBiZQogLy8gd2lkZSBlbm91Z2ggdG8gY29udGFpbiBhIGNvZGUgcG9pbnQuCi0vLyBUaGUgb3V0
cHV0IGJ1ZmZlciBzdHIgbXVzdCBjb250YWludCBhdCBsZWFzdCAzMiBjaGFyYWN0ZXJzLgotLy8g
VGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIGFkZHJlc3Mgb2YgdGhlIG91dHB1dCBidWZmZXIuCiAv
LyBJZiB0aGUgY29kZV9wb2ludCBpcyBub3QgYSB2YWxpZCBVbmljb2RlIGNvZGUgcG9pbnQKLS8v
IChpLmUuIG91dHNpZGUgb2YgVW5pY29kZSByYW5nZSBVKzAgdG8gVSsxMEZGRkYpIGl0IHdpbGwg
YmUgb3V0cHV0Ci0vLyBhcyAnKEludmFsaWQgVW5pY29kZSAweFhYWFhYWFhYKScuCi1jaGFyKiBD
b2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQsIGNoYXIqIHN0cikgeworLy8gKGkuZS4g
b3V0c2lkZSBvZiBVbmljb2RlIHJhbmdlIFUrMCB0byBVKzEwRkZGRikgaXQgd2lsbCBiZSBjb252
ZXJ0ZWQKKy8vIHRvICIoSW52YWxpZCBVbmljb2RlIDB4WFhYWFhYWFgpIi4KK3N0ZDo6c3RyaW5n
IENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9wb2ludCkgeworICBpZiAoY29kZV9wb2ludCA+
IGtNYXhDb2RlUG9pbnQ0KSB7CisgICAgcmV0dXJuICIoSW52YWxpZCBVbmljb2RlIDB4IiArIFN0
cmluZzo6Rm9ybWF0SGV4SW50KGNvZGVfcG9pbnQpICsgIikiOworICB9CisKKyAgY2hhciBzdHJb
NV07ICAvLyBCaWcgZW5vdWdoIGZvciB0aGUgbGFyZ2VzdCB2YWxpZCBjb2RlIHBvaW50LgogICBp
ZiAoY29kZV9wb2ludCA8PSBrTWF4Q29kZVBvaW50MSkgewogICAgIHN0clsxXSA9ICdcMCc7CiAg
ICAgc3RyWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oY29kZV9wb2ludCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyAweHh4eHh4eApAQCAtMTQ2NiwyNyArMTgxOSwxNyBAQCBjaGFyKiBDb2Rl
UG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQsIGNoYXIqIHN0cikgewogICAgIHN0clsyXSA9
IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgfCBDaG9wTG93Qml0cygmY29kZV9wb2ludCwgNikpOyAg
Ly8gMTB4eHh4eHgKICAgICBzdHJbMV0gPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwgQ2hvcExv
d0JpdHMoJmNvZGVfcG9pbnQsIDYpKTsgIC8vIDEweHh4eHh4CiAgICAgc3RyWzBdID0gc3RhdGlj
X2Nhc3Q8Y2hhcj4oMHhFMCB8IGNvZGVfcG9pbnQpOyAgICAgICAgICAgICAgICAgICAvLyAxMTEw
eHh4eAotICB9IGVsc2UgaWYgKGNvZGVfcG9pbnQgPD0ga01heENvZGVQb2ludDQpIHsKKyAgfSBl
bHNlIHsgIC8vIGNvZGVfcG9pbnQgPD0ga01heENvZGVQb2ludDQKICAgICBzdHJbNF0gPSAnXDAn
OwogICAgIHN0clszXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgfCBDaG9wTG93Qml0cygmY29k
ZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKICAgICBzdHJbMl0gPSBzdGF0aWNfY2FzdDxjaGFy
PigweDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVfcG9pbnQsIDYpKTsgIC8vIDEweHh4eHh4CiAgICAg
c3RyWzFdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHg4MCB8IENob3BMb3dCaXRzKCZjb2RlX3BvaW50
LCA2KSk7ICAvLyAxMHh4eHh4eAogICAgIHN0clswXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4RjAg
fCBjb2RlX3BvaW50KTsgICAgICAgICAgICAgICAgICAgLy8gMTExMTB4eHgKLSAgfSBlbHNlIHsK
LSAgICAvLyBUaGUgbG9uZ2VzdCBzdHJpbmcgU3RyaW5nOjpGb3JtYXQgY2FuIHByb2R1Y2Ugd2hl
biBpbnZva2VkCi0gICAgLy8gd2l0aCB0aGVzZSBwYXJhbWV0ZXJzIGlzIDI4IGNoYXJhY3RlciBs
b25nIChub3QgaW5jbHVkaW5nCi0gICAgLy8gdGhlIHRlcm1pbmF0aW5nIG51bCBjaGFyYWN0ZXIp
LiBXZSBhcmUgYXNraW5nIGZvciAzMiBjaGFyYWN0ZXIKLSAgICAvLyBidWZmZXIganVzdCBpbiBj
YXNlLiBUaGlzIGlzIGFsc28gZW5vdWdoIGZvciBzdHJuY3B5IHRvCi0gICAgLy8gbnVsbC10ZXJt
aW5hdGUgdGhlIGRlc3RpbmF0aW9uIHN0cmluZy4KLSAgICBwb3NpeDo6U3RyTkNweSgKLSAgICAg
ICAgc3RyLCBTdHJpbmc6OkZvcm1hdCgiKEludmFsaWQgVW5pY29kZSAweCVYKSIsIGNvZGVfcG9p
bnQpLmNfc3RyKCksIDMyKTsKLSAgICBzdHJbMzFdID0gJ1wwJzsgIC8vIE1ha2VzIHN1cmUgbm8g
Y2hhbmdlIGluIHRoZSBmb3JtYXQgdG8gc3RybmNweSBsZWF2ZXMKLSAgICAgICAgICAgICAgICAg
ICAgIC8vIHRoZSByZXN1bHQgdW50ZXJtaW5hdGVkLgogICB9CiAgIHJldHVybiBzdHI7CiB9CiAK
LS8vIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBvbmx5IG1ha2Ugc2Vuc2UgaWYgdGhlIHRo
ZSBzeXN0ZW0KKy8vIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBvbmx5IG1ha2Ugc2Vuc2Ug
aWYgdGhlIHN5c3RlbQogLy8gdXNlcyBVVEYtMTYgZm9yIHdpZGUgc3RyaW5nIGVuY29kaW5nLiBB
bGwgc3VwcG9ydGVkIHN5c3RlbXMKIC8vIHdpdGggMTYgYml0IHdjaGFyX3QgKFdpbmRvd3MsIEN5
Z3dpbiwgU3ltYmlhbiBPUykgZG8gdXNlIFVURi0xNi4KIApAQCAtMTUyMiwxMSArMTg2NSwxMSBA
QCBpbmxpbmUgVUludDMyIENyZWF0ZUNvZGVQb2ludEZyb21VdGYxNlN1cnJvZ2F0ZVBhaXIod2No
YXJfdCBmaXJzdCwKIC8vIGFzICcoSW52YWxpZCBVbmljb2RlIDB4WFhYWFhYWFgpJy4gSWYgdGhl
IHN0cmluZyBpcyBpbiBVVEYxNiBlbmNvZGluZwogLy8gYW5kIGNvbnRhaW5zIGludmFsaWQgVVRG
LTE2IHN1cnJvZ2F0ZSBwYWlycywgdmFsdWVzIGluIHRob3NlIHBhaXJzCiAvLyB3aWxsIGJlIGVu
Y29kZWQgYXMgaW5kaXZpZHVhbCBVbmljb2RlIGNoYXJhY3RlcnMgZnJvbSBCYXNpYyBOb3JtYWwg
UGxhbmUuCi1TdHJpbmcgV2lkZVN0cmluZ1RvVXRmOChjb25zdCB3Y2hhcl90KiBzdHIsIGludCBu
dW1fY2hhcnMpIHsKK3N0ZDo6c3RyaW5nIFdpZGVTdHJpbmdUb1V0ZjgoY29uc3Qgd2NoYXJfdCog
c3RyLCBpbnQgbnVtX2NoYXJzKSB7CiAgIGlmIChudW1fY2hhcnMgPT0gLTEpCiAgICAgbnVtX2No
YXJzID0gc3RhdGljX2Nhc3Q8aW50Pih3Y3NsZW4oc3RyKSk7CiAKLSAgU3RyU3RyZWFtIHN0cmVh
bTsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07CiAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtX2NoYXJzOyArK2kpIHsKICAgICBVSW50MzIgdW5pY29kZV9jb2RlX3BvaW50OwogCkBAIC0x
NTQwLDI3ICsxODgzLDE3IEBAIFN0cmluZyBXaWRlU3RyaW5nVG9VdGY4KGNvbnN0IHdjaGFyX3Qq
IHN0ciwgaW50IG51bV9jaGFycykgewogICAgICAgdW5pY29kZV9jb2RlX3BvaW50ID0gc3RhdGlj
X2Nhc3Q8VUludDMyPihzdHJbaV0pOwogICAgIH0KIAotICAgIGNoYXIgYnVmZmVyWzMyXTsgIC8v
IENvZGVQb2ludFRvVXRmOCByZXF1aXJlcyBhIGJ1ZmZlciB0aGlzIGJpZy4KLSAgICBzdHJlYW0g
PDwgQ29kZVBvaW50VG9VdGY4KHVuaWNvZGVfY29kZV9wb2ludCwgYnVmZmVyKTsKKyAgICBzdHJl
YW0gPDwgQ29kZVBvaW50VG9VdGY4KHVuaWNvZGVfY29kZV9wb2ludCk7CiAgIH0KLSAgcmV0dXJu
IFN0clN0cmVhbVRvU3RyaW5nKCZzdHJlYW0pOworICByZXR1cm4gU3RyaW5nU3RyZWFtVG9TdHJp
bmcoJnN0cmVhbSk7CiB9CiAKLS8vIENvbnZlcnRzIGEgd2lkZSBDIHN0cmluZyB0byBhIFN0cmlu
ZyB1c2luZyB0aGUgVVRGLTggZW5jb2RpbmcuCisvLyBDb252ZXJ0cyBhIHdpZGUgQyBzdHJpbmcg
dG8gYW4gc3RkOjpzdHJpbmcgdXNpbmcgdGhlIFVURi04IGVuY29kaW5nLgogLy8gTlVMTCB3aWxs
IGJlIGNvbnZlcnRlZCB0byAiKG51bGwpIi4KLVN0cmluZyBTdHJpbmc6OlNob3dXaWRlQ1N0cmlu
Zyhjb25zdCB3Y2hhcl90ICogd2lkZV9jX3N0cikgewotICBpZiAod2lkZV9jX3N0ciA9PSBOVUxM
KSByZXR1cm4gU3RyaW5nKCIobnVsbCkiKTsKLQotICByZXR1cm4gU3RyaW5nKGludGVybmFsOjpX
aWRlU3RyaW5nVG9VdGY4KHdpZGVfY19zdHIsIC0xKS5jX3N0cigpKTsKLX0KLQotLy8gU2ltaWxh
ciB0byBTaG93V2lkZUNTdHJpbmcoKSwgZXhjZXB0IHRoYXQgdGhpcyBmdW5jdGlvbiBlbmNsb3Nl
cwotLy8gdGhlIGNvbnZlcnRlZCBzdHJpbmcgaW4gZG91YmxlIHF1b3Rlcy4KLVN0cmluZyBTdHJp
bmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKSB7Ci0g
IGlmICh3aWRlX2Nfc3RyID09IE5VTEwpIHJldHVybiBTdHJpbmcoIihudWxsKSIpOworc3RkOjpz
dHJpbmcgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmcoY29uc3Qgd2NoYXJfdCAqIHdpZGVfY19zdHIp
IHsKKyAgaWYgKHdpZGVfY19zdHIgPT0gTlVMTCkgIHJldHVybiAiKG51bGwpIjsKIAotICByZXR1
cm4gU3RyaW5nOjpGb3JtYXQoIkxcIiVzXCIiLAotICAgICAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nOjpTaG93V2lkZUNTdHJpbmcod2lkZV9jX3N0cikuY19zdHIoKSk7CisgIHJldHVybiBpbnRl
cm5hbDo6V2lkZVN0cmluZ1RvVXRmOCh3aWRlX2Nfc3RyLCAtMSk7CiB9CiAKIC8vIENvbXBhcmVz
IHR3byB3aWRlIEMgc3RyaW5ncy4gIFJldHVybnMgdHJ1ZSBpZmYgdGhleSBoYXZlIHRoZSBzYW1l
CkBAIC0xNTc4LDE4ICsxOTExLDE4IEBAIGJvb2wgU3RyaW5nOjpXaWRlQ1N0cmluZ0VxdWFscyhj
b25zdCB3Y2hhcl90ICogbGhzLCBjb25zdCB3Y2hhcl90ICogcmhzKSB7CiB9CiAKIC8vIEhlbHBl
ciBmdW5jdGlvbiBmb3IgKl9TVFJFUSBvbiB3aWRlIHN0cmluZ3MuCi1Bc3NlcnRpb25SZXN1bHQg
Q21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiBleHBlY3RlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiBhY3R1YWwpIHsKLSAg
aWYgKFN0cmluZzo6V2lkZUNTdHJpbmdFcXVhbHMoZXhwZWN0ZWQsIGFjdHVhbCkpIHsKK0Fzc2Vy
dGlvblJlc3VsdCBDbXBIZWxwZXJTVFJFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiBsaHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogcmhzKSB7CisgIGlmIChT
dHJpbmc6OldpZGVDU3RyaW5nRXF1YWxzKGxocywgcmhzKSkgewogICAgIHJldHVybiBBc3NlcnRp
b25TdWNjZXNzKCk7CiAgIH0KIAotICByZXR1cm4gRXFGYWlsdXJlKGV4cGVjdGVkX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAg
ICAgICAgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoZXhwZWN0ZWQpLAotICAgICAgICAg
ICAgICAgICAgIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVvdGVkKGFjdHVhbCksCisgIHJldHVy
biBFcUZhaWx1cmUobGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgcmhzX2V4cHJl
c3Npb24sCisgICAgICAgICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhsaHMpLAorICAgICAgICAg
ICAgICAgICAgIFByaW50VG9TdHJpbmcocmhzKSwKICAgICAgICAgICAgICAgICAgICBmYWxzZSk7
CiB9CiAKQEAgLTE2MDIsMTIgKzE5MzUsMTAgQEAgQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNU
Uk5FKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24sCiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nl
c3MoKTsKICAgfQogCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgIkV4cGVjdGVkOiAoIiA8PCBz
MV9leHByZXNzaW9uIDw8ICIpICE9ICgiCi0gICAgICA8PCBzMl9leHByZXNzaW9uIDw8ICIpLCBh
Y3R1YWw6ICIKLSAgICAgIDw8IFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVvdGVkKHMxKQotICAg
ICAgPDwgIiB2cyAiIDw8IFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nUXVvdGVkKHMyKTsKLSAgcmV0
dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8
PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4cHJlc3Npb24gPDwgIikgIT0gKCIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCBzMl9leHByZXNzaW9uIDw8ICIpLCBhY3R1YWw6ICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCBQcmludFRvU3RyaW5nKHMxKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8ICIgdnMgIiA8PCBQcmludFRvU3RyaW5nKHMyKTsKIH0KIAogLy8g
Q29tcGFyZXMgdHdvIEMgc3RyaW5ncywgaWdub3JpbmcgY2FzZS4gIFJldHVybnMgdHJ1ZSBpZmYg
dGhleSBoYXZlCkBAIC0xNjM4LDE3ICsxOTY5LDE3IEBAIGJvb2wgU3RyaW5nOjpDYXNlSW5zZW5z
aXRpdmVDU3RyaW5nRXF1YWxzKGNvbnN0IGNoYXIgKiBsaHMsIGNvbnN0IGNoYXIgKiByaHMpIHsK
ICAgLy8gY3VycmVudCBsb2NhbGUuCiBib29sIFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlV2lkZUNT
dHJpbmdFcXVhbHMoY29uc3Qgd2NoYXJfdCogbGhzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIHJocykgewotICBpZiAoIGxocyA9
PSBOVUxMICkgcmV0dXJuIHJocyA9PSBOVUxMOworICBpZiAobGhzID09IE5VTEwpIHJldHVybiBy
aHMgPT0gTlVMTDsKIAotICBpZiAoIHJocyA9PSBOVUxMICkgcmV0dXJuIGZhbHNlOworICBpZiAo
cmhzID09IE5VTEwpIHJldHVybiBmYWxzZTsKIAogI2lmIEdURVNUX09TX1dJTkRPV1MKICAgcmV0
dXJuIF93Y3NpY21wKGxocywgcmhzKSA9PSAwOwotI2VsaWYgR1RFU1RfT1NfTElOVVgKKyNlbGlm
IEdURVNUX09TX0xJTlVYICYmICFHVEVTVF9PU19MSU5VWF9BTkRST0lECiAgIHJldHVybiB3Y3Nj
YXNlY21wKGxocywgcmhzKSA9PSAwOwogI2Vsc2UKLSAgLy8gTWFjIE9TIFggYW5kIEN5Z3dpbiBk
b24ndCBkZWZpbmUgd2NzY2FzZWNtcC4gIE90aGVyIHVua25vd24gT1NlcwotICAvLyBtYXkgbm90
IGRlZmluZSBpdCBlaXRoZXIuCisgIC8vIEFuZHJvaWQsIE1hYyBPUyBYIGFuZCBDeWd3aW4gZG9u
J3QgZGVmaW5lIHdjc2Nhc2VjbXAuCisgIC8vIE90aGVyIHVua25vd24gT1NlcyBtYXkgbm90IGRl
ZmluZSBpdCBlaXRoZXIuCiAgIHdpbnRfdCBsZWZ0LCByaWdodDsKICAgZG8gewogICAgIGxlZnQg
PSB0b3dsb3dlcigqbGhzKyspOwpAQCAtMTY1OCwxMzMgKzE5ODksNjkgQEAgYm9vbCBTdHJpbmc6
OkNhc2VJbnNlbnNpdGl2ZVdpZGVDU3RyaW5nRXF1YWxzKGNvbnN0IHdjaGFyX3QqIGxocywKICNl
bmRpZiAgLy8gT1Mgc2VsZWN0b3IKIH0KIAotLy8gQ29tcGFyZXMgdGhpcyB3aXRoIGFub3RoZXIg
U3RyaW5nLgotLy8gUmV0dXJucyA8IDAgaWYgdGhpcyBpcyBsZXNzIHRoYW4gcmhzLCAwIGlmIHRo
aXMgaXMgZXF1YWwgdG8gcmhzLCBvciA+IDAKLS8vIGlmIHRoaXMgaXMgZ3JlYXRlciB0aGFuIHJo
cy4KLWludCBTdHJpbmc6OkNvbXBhcmUoY29uc3QgU3RyaW5nICYgcmhzKSBjb25zdCB7Ci0gIGNv
bnN0IGNoYXIqIGNvbnN0IGxoc19jX3N0ciA9IGNfc3RyKCk7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0
IHJoc19jX3N0ciA9IHJocy5jX3N0cigpOwotCi0gIGlmIChsaHNfY19zdHIgPT0gTlVMTCkgewot
ICAgIHJldHVybiByaHNfY19zdHIgPT0gTlVMTCA/IDAgOiAtMTsgIC8vIE5VTEwgPCBhbnl0aGlu
ZyBleGNlcHQgTlVMTAotICB9IGVsc2UgaWYgKHJoc19jX3N0ciA9PSBOVUxMKSB7Ci0gICAgcmV0
dXJuIDE7Ci0gIH0KLQotICBjb25zdCBzaXplX3Qgc2hvcnRlcl9zdHJfbGVuID0KLSAgICAgIGxl
bmd0aCgpIDw9IHJocy5sZW5ndGgoKSA/IGxlbmd0aCgpIDogcmhzLmxlbmd0aCgpOwotICBmb3Ig
KHNpemVfdCBpID0gMDsgaSAhPSBzaG9ydGVyX3N0cl9sZW47IGkrKykgewotICAgIGlmIChsaHNf
Y19zdHJbaV0gPCByaHNfY19zdHJbaV0pIHsKLSAgICAgIHJldHVybiAtMTsKLSAgICB9IGVsc2Ug
aWYgKGxoc19jX3N0cltpXSA+IHJoc19jX3N0cltpXSkgewotICAgICAgcmV0dXJuIDE7Ci0gICAg
fQotICB9Ci0gIHJldHVybiAobGVuZ3RoKCkgPCByaHMubGVuZ3RoKCkpID8gLTEgOgotICAgICAg
KGxlbmd0aCgpID4gcmhzLmxlbmd0aCgpKSA/IDEgOiAwOworLy8gUmV0dXJucyB0cnVlIGlmZiBz
dHIgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXgsIGlnbm9yaW5nIGNhc2UuCisvLyBBbnkgc3Ry
aW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGggYW4gZW1wdHkgc3VmZml4LgorYm9vbCBTdHJp
bmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIs
IGNvbnN0IHN0ZDo6c3RyaW5nJiBzdWZmaXgpIHsKKyAgY29uc3Qgc2l6ZV90IHN0cl9sZW4gPSBz
dHIubGVuZ3RoKCk7CisgIGNvbnN0IHNpemVfdCBzdWZmaXhfbGVuID0gc3VmZml4Lmxlbmd0aCgp
OworICByZXR1cm4gKHN0cl9sZW4gPj0gc3VmZml4X2xlbikgJiYKKyAgICAgICAgIENhc2VJbnNl
bnNpdGl2ZUNTdHJpbmdFcXVhbHMoc3RyLmNfc3RyKCkgKyBzdHJfbGVuIC0gc3VmZml4X2xlbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4LmNfc3RyKCkpOwog
fQogCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgU3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4g
c3VmZml4LiAgKkFueSoKLS8vIFN0cmluZyBpcyBjb25zaWRlcmVkIHRvIGVuZCB3aXRoIGEgTlVM
TCBvciBlbXB0eSBzdWZmaXguCi1ib29sIFN0cmluZzo6RW5kc1dpdGgoY29uc3QgY2hhciogc3Vm
Zml4KSBjb25zdCB7Ci0gIGlmIChzdWZmaXggPT0gTlVMTCB8fCBDU3RyaW5nRXF1YWxzKHN1ZmZp
eCwgIiIpKSByZXR1cm4gdHJ1ZTsKLQotICBpZiAoY19zdHIoKSA9PSBOVUxMKSByZXR1cm4gZmFs
c2U7Ci0KLSAgY29uc3Qgc2l6ZV90IHRoaXNfbGVuID0gc3RybGVuKGNfc3RyKCkpOwotICBjb25z
dCBzaXplX3Qgc3VmZml4X2xlbiA9IHN0cmxlbihzdWZmaXgpOwotICByZXR1cm4gKHRoaXNfbGVu
ID49IHN1ZmZpeF9sZW4pICYmCi0gICAgICAgICBDU3RyaW5nRXF1YWxzKGNfc3RyKCkgKyB0aGlz
X2xlbiAtIHN1ZmZpeF9sZW4sIHN1ZmZpeCk7CisvLyBGb3JtYXRzIGFuIGludCB2YWx1ZSBhcyAi
JTAyZCIuCitzdGQ6OnN0cmluZyBTdHJpbmc6OkZvcm1hdEludFdpZHRoMihpbnQgdmFsdWUpIHsK
KyAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIHNzIDw8IHN0ZDo6c2V0ZmlsbCgnMCcpIDw8IHN0
ZDo6c2V0dygyKSA8PCB2YWx1ZTsKKyAgcmV0dXJuIHNzLnN0cigpOwogfQogCi0vLyBSZXR1cm5z
IHRydWUgaWZmIHRoaXMgU3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LCBpZ25vcmlu
ZyBjYXNlLgotLy8gQW55IFN0cmluZyBpcyBjb25zaWRlcmVkIHRvIGVuZCB3aXRoIGEgTlVMTCBv
ciBlbXB0eSBzdWZmaXguCi1ib29sIFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoY29u
c3QgY2hhciogc3VmZml4KSBjb25zdCB7Ci0gIGlmIChzdWZmaXggPT0gTlVMTCB8fCBDU3RyaW5n
RXF1YWxzKHN1ZmZpeCwgIiIpKSByZXR1cm4gdHJ1ZTsKLQotICBpZiAoY19zdHIoKSA9PSBOVUxM
KSByZXR1cm4gZmFsc2U7Ci0KLSAgY29uc3Qgc2l6ZV90IHRoaXNfbGVuID0gc3RybGVuKGNfc3Ry
KCkpOwotICBjb25zdCBzaXplX3Qgc3VmZml4X2xlbiA9IHN0cmxlbihzdWZmaXgpOwotICByZXR1
cm4gKHRoaXNfbGVuID49IHN1ZmZpeF9sZW4pICYmCi0gICAgICAgICBDYXNlSW5zZW5zaXRpdmVD
U3RyaW5nRXF1YWxzKGNfc3RyKCkgKyB0aGlzX2xlbiAtIHN1ZmZpeF9sZW4sIHN1ZmZpeCk7Cisv
LyBGb3JtYXRzIGFuIGludCB2YWx1ZSBhcyAiJVgiLgorc3RkOjpzdHJpbmcgU3RyaW5nOjpGb3Jt
YXRIZXhJbnQoaW50IHZhbHVlKSB7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICBzcyA8PCBz
dGQ6OmhleCA8PCBzdGQ6OnVwcGVyY2FzZSA8PCB2YWx1ZTsKKyAgcmV0dXJuIHNzLnN0cigpOwog
fQogCi0vLyBGb3JtYXRzIGEgbGlzdCBvZiBhcmd1bWVudHMgdG8gYSBTdHJpbmcsIHVzaW5nIHRo
ZSBzYW1lIGZvcm1hdAotLy8gc3BlYyBzdHJpbmcgYXMgZm9yIHByaW50Zi4KLS8vCi0vLyBXZSBk
byBub3QgdXNlIHRoZSBTdHJpbmdQcmludGYgY2xhc3MgYXMgaXQgaXMgbm90IHVuaXZlcnNhbGx5
Ci0vLyBhdmFpbGFibGUuCi0vLwotLy8gVGhlIHJlc3VsdCBpcyBsaW1pdGVkIHRvIDQwOTYgY2hh
cmFjdGVycyAoaW5jbHVkaW5nIHRoZSB0YWlsaW5nIDApLgotLy8gSWYgNDA5NiBjaGFyYWN0ZXJz
IGFyZSBub3QgZW5vdWdoIHRvIGZvcm1hdCB0aGUgaW5wdXQsIG9yIGlmCi0vLyB0aGVyZSdzIGFu
IGVycm9yLCAiPGZvcm1hdHRpbmcgZXJyb3Igb3IgYnVmZmVyIGV4Y2VlZGVkPiIgaXMKLS8vIHJl
dHVybmVkLgotU3RyaW5nIFN0cmluZzo6Rm9ybWF0KGNvbnN0IGNoYXIgKiBmb3JtYXQsIC4uLikg
ewotICB2YV9saXN0IGFyZ3M7Ci0gIHZhX3N0YXJ0KGFyZ3MsIGZvcm1hdCk7Ci0KLSAgY2hhciBi
dWZmZXJbNDA5Nl07Ci0gIGNvbnN0IGludCBrQnVmZmVyU2l6ZSA9IHNpemVvZihidWZmZXIpL3Np
emVvZihidWZmZXJbMF0pOwotCi0gIC8vIE1TVkMgOCBkZXByZWNhdGVzIHZzbnByaW50ZigpLCBz
byB3ZSB3YW50IHRvIHN1cHByZXNzIHdhcm5pbmcKLSAgLy8gNDk5NiAoZGVwcmVjYXRlZCBmdW5j
dGlvbikgdGhlcmUuCi0jaWZkZWYgX01TQ19WRVIgIC8vIFdlIGFyZSB1c2luZyBNU1ZDLgotI3By
YWdtYSB3YXJuaW5nKHB1c2gpICAgICAgICAgIC8vIFNhdmVzIHRoZSBjdXJyZW50IHdhcm5pbmcg
c3RhdGUuCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0OTk2KSAgLy8gVGVtcG9yYXJpbHkgZGlz
YWJsZXMgd2FybmluZyA0OTk2LgotICBjb25zdCBpbnQgc2l6ZSA9IHZzbnByaW50ZihidWZmZXIs
IGtCdWZmZXJTaXplLCBmb3JtYXQsIGFyZ3MpOwotI3ByYWdtYSB3YXJuaW5nKHBvcCkgICAgICAg
ICAgIC8vIFJlc3RvcmVzIHRoZSB3YXJuaW5nIHN0YXRlLgotI2Vsc2UgIC8vIFdlIGFyZSBub3Qg
dXNpbmcgTVNWQy4KLSAgY29uc3QgaW50IHNpemUgPSB2c25wcmludGYoYnVmZmVyLCBrQnVmZmVy
U2l6ZSwgZm9ybWF0LCBhcmdzKTsKLSNlbmRpZiAgLy8gX01TQ19WRVIKLSAgdmFfZW5kKGFyZ3Mp
OwotCi0gIC8vIHZzbnByaW50ZigpJ3MgYmVoYXZpb3IgaXMgbm90IHBvcnRhYmxlLiAgV2hlbiB0
aGUgYnVmZmVyIGlzIG5vdAotICAvLyBiaWcgZW5vdWdoLCBpdCByZXR1cm5zIGEgbmVnYXRpdmUg
dmFsdWUgaW4gTVNWQywgYW5kIHJldHVybnMgdGhlCi0gIC8vIG5lZWRlZCBidWZmZXIgc2l6ZSBv
biBMaW51eC4gIFdoZW4gdGhlcmUgaXMgYW4gb3V0cHV0IGVycm9yLCBpdAotICAvLyBhbHdheXMg
cmV0dXJucyBhIG5lZ2F0aXZlIHZhbHVlLiAgRm9yIHNpbXBsaWNpdHksIHdlIGx1bXAgdGhlIHR3
bwotICAvLyBlcnJvciBjYXNlcyB0b2dldGhlci4KLSAgaWYgKHNpemUgPCAwIHx8IHNpemUgPj0g
a0J1ZmZlclNpemUpIHsKLSAgICByZXR1cm4gU3RyaW5nKCI8Zm9ybWF0dGluZyBlcnJvciBvciBi
dWZmZXIgZXhjZWVkZWQ+Iik7Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIFN0cmluZyhidWZmZXIs
IHNpemUpOwotICB9CisvLyBGb3JtYXRzIGEgYnl0ZSBhcyAiJTAyWCIuCitzdGQ6OnN0cmluZyBT
dHJpbmc6OkZvcm1hdEJ5dGUodW5zaWduZWQgY2hhciB2YWx1ZSkgeworICBzdGQ6OnN0cmluZ3N0
cmVhbSBzczsKKyAgc3MgPDwgc3RkOjpzZXRmaWxsKCcwJykgPDwgc3RkOjpzZXR3KDIpIDw8IHN0
ZDo6aGV4IDw8IHN0ZDo6dXBwZXJjYXNlCisgICAgIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGlu
dD4odmFsdWUpOworICByZXR1cm4gc3Muc3RyKCk7CiB9CiAKLS8vIENvbnZlcnRzIHRoZSBidWZm
ZXIgaW4gYSBTdHJTdHJlYW0gdG8gYSBTdHJpbmcsIGNvbnZlcnRpbmcgTlVMCisvLyBDb252ZXJ0
cyB0aGUgYnVmZmVyIGluIGEgc3RyaW5nc3RyZWFtIHRvIGFuIHN0ZDo6c3RyaW5nLCBjb252ZXJ0
aW5nIE5VTAogLy8gYnl0ZXMgdG8gIlxcMCIgYWxvbmcgdGhlIHdheS4KLVN0cmluZyBTdHJTdHJl
YW1Ub1N0cmluZyhTdHJTdHJlYW0qIHNzKSB7CitzdGQ6OnN0cmluZyBTdHJpbmdTdHJlYW1Ub1N0
cmluZyg6OnN0ZDo6c3RyaW5nc3RyZWFtKiBzcykgewogICBjb25zdCA6OnN0ZDo6c3RyaW5nJiBz
dHIgPSBzcy0+c3RyKCk7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IHN0YXJ0ID0gc3RyLmNfc3RyKCk7
CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGVuZCA9IHN0YXJ0ICsgc3RyLmxlbmd0aCgpOwogCi0gIC8v
IFdlIG5lZWQgdG8gdXNlIGEgaGVscGVyIFN0clN0cmVhbSB0byBkbyB0aGlzIHRyYW5zZm9ybWF0
aW9uCi0gIC8vIGJlY2F1c2UgU3RyaW5nIGRvZXNuJ3Qgc3VwcG9ydCBwdXNoX2JhY2soKS4KLSAg
U3RyU3RyZWFtIGhlbHBlcjsKKyAgc3RkOjpzdHJpbmcgcmVzdWx0OworICByZXN1bHQucmVzZXJ2
ZSgyICogKGVuZCAtIHN0YXJ0KSk7CiAgIGZvciAoY29uc3QgY2hhciogY2ggPSBzdGFydDsgY2gg
IT0gZW5kOyArK2NoKSB7CiAgICAgaWYgKCpjaCA9PSAnXDAnKSB7Ci0gICAgICBoZWxwZXIgPDwg
IlxcMCI7ICAvLyBSZXBsYWNlcyBOVUwgd2l0aCAiXFwwIjsKKyAgICAgIHJlc3VsdCArPSAiXFww
IjsgIC8vIFJlcGxhY2VzIE5VTCB3aXRoICJcXDAiOwogICAgIH0gZWxzZSB7Ci0gICAgICBoZWxw
ZXIucHV0KCpjaCk7CisgICAgICByZXN1bHQgKz0gKmNoOwogICAgIH0KICAgfQogCi0gIHJldHVy
biBTdHJpbmcoaGVscGVyLnN0cigpLmNfc3RyKCkpOworICByZXR1cm4gcmVzdWx0OwogfQogCiAv
LyBBcHBlbmRzIHRoZSB1c2VyLXN1cHBsaWVkIG1lc3NhZ2UgdG8gdGhlIEdvb2dsZS1UZXN0LWdl
bmVyYXRlZCBtZXNzYWdlLgotU3RyaW5nIEFwcGVuZFVzZXJNZXNzYWdlKGNvbnN0IFN0cmluZyYg
Z3Rlc3RfbXNnLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1lc3NhZ2UmIHVzZXJf
bXNnKSB7CitzdGQ6OnN0cmluZyBBcHBlbmRVc2VyTWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYg
Z3Rlc3RfbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVzc2FnZSYg
dXNlcl9tc2cpIHsKICAgLy8gQXBwZW5kcyB0aGUgdXNlciBtZXNzYWdlIGlmIGl0J3Mgbm9uLWVt
cHR5LgotICBjb25zdCBTdHJpbmcgdXNlcl9tc2dfc3RyaW5nID0gdXNlcl9tc2cuR2V0U3RyaW5n
KCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHVzZXJfbXNnX3N0cmluZyA9IHVzZXJfbXNnLkdldFN0
cmluZygpOwogICBpZiAodXNlcl9tc2dfc3RyaW5nLmVtcHR5KCkpIHsKICAgICByZXR1cm4gZ3Rl
c3RfbXNnOwogICB9CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBndGVzdF9tc2cgPDwgIlxu
IiA8PCB1c2VyX21zZ19zdHJpbmc7Ci0KLSAgcmV0dXJuIG1zZy5HZXRTdHJpbmcoKTsKKyAgcmV0
dXJuIGd0ZXN0X21zZyArICJcbiIgKyB1c2VyX21zZ19zdHJpbmc7CiB9CiAKIH0gIC8vIG5hbWVz
cGFjZSBpbnRlcm5hbApAQCAtMTgzMiw4ICsyMDk5LDkgQEAgdm9pZCBUZXN0UmVzdWx0OjpBZGRU
ZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgewog
Ly8gQWRkcyBhIHRlc3QgcHJvcGVydHkgdG8gdGhlIGxpc3QuIElmIGEgcHJvcGVydHkgd2l0aCB0
aGUgc2FtZSBrZXkgYXMgdGhlCiAvLyBzdXBwbGllZCBwcm9wZXJ0eSBpcyBhbHJlYWR5IHJlcHJl
c2VudGVkLCB0aGUgdmFsdWUgb2YgdGhpcyB0ZXN0X3Byb3BlcnR5CiAvLyByZXBsYWNlcyB0aGUg
b2xkIHZhbHVlIGZvciB0aGF0IGtleS4KLXZvaWQgVGVzdFJlc3VsdDo6UmVjb3JkUHJvcGVydHko
Y29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5KSB7Ci0gIGlmICghVmFsaWRhdGVUZXN0
UHJvcGVydHkodGVzdF9wcm9wZXJ0eSkpIHsKK3ZvaWQgVGVzdFJlc3VsdDo6UmVjb3JkUHJvcGVy
dHkoY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpIHsKKyAgaWYgKCFW
YWxpZGF0ZVRlc3RQcm9wZXJ0eSh4bWxfZWxlbWVudCwgdGVzdF9wcm9wZXJ0eSkpIHsKICAgICBy
ZXR1cm47CiAgIH0KICAgaW50ZXJuYWw6Ok11dGV4TG9jayBsb2NrKCZ0ZXN0X3Byb3Blcml0ZXNf
bXV0ZXhfKTsKQEAgLTE4NDcsMjEgKzIxMTUsOTAgQEAgdm9pZCBUZXN0UmVzdWx0OjpSZWNvcmRQ
cm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpIHsKICAgcHJvcGVydHlf
d2l0aF9tYXRjaGluZ19rZXktPlNldFZhbHVlKHRlc3RfcHJvcGVydHkudmFsdWUoKSk7CiB9CiAK
LS8vIEFkZHMgYSBmYWlsdXJlIGlmIHRoZSBrZXkgaXMgYSByZXNlcnZlZCBhdHRyaWJ1dGUgb2Yg
R29vZ2xlIFRlc3QKLS8vIHRlc3RjYXNlIHRhZ3MuICBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3Bl
cnR5IGlzIHZhbGlkLgotYm9vbCBUZXN0UmVzdWx0OjpWYWxpZGF0ZVRlc3RQcm9wZXJ0eShjb25z
dCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpIHsKLSAgaW50ZXJuYWw6OlN0cmluZyBrZXko
dGVzdF9wcm9wZXJ0eS5rZXkoKSk7Ci0gIGlmIChrZXkgPT0gIm5hbWUiIHx8IGtleSA9PSAic3Rh
dHVzIiB8fCBrZXkgPT0gInRpbWUiIHx8IGtleSA9PSAiY2xhc3NuYW1lIikgewotICAgIEFERF9G
QUlMVVJFKCkKLSAgICAgICAgPDwgIlJlc2VydmVkIGtleSB1c2VkIGluIFJlY29yZFByb3BlcnR5
KCk6ICIKLSAgICAgICAgPDwga2V5Ci0gICAgICAgIDw8ICIgKCduYW1lJywgJ3N0YXR1cycsICd0
aW1lJywgYW5kICdjbGFzc25hbWUnIGFyZSByZXNlcnZlZCBieSAiCi0gICAgICAgIDw8IEdURVNU
X05BTUVfIDw8ICIpIjsKKy8vIFRoZSBsaXN0IG9mIHJlc2VydmVkIGF0dHJpYnV0ZXMgdXNlZCBp
biB0aGUgPHRlc3RzdWl0ZXM+IGVsZW1lbnQgb2YgWE1MCisvLyBvdXRwdXQuCitzdGF0aWMgY29u
c3QgY2hhciogY29uc3Qga1Jlc2VydmVkVGVzdFN1aXRlc0F0dHJpYnV0ZXNbXSA9IHsKKyAgImRp
c2FibGVkIiwKKyAgImVycm9ycyIsCisgICJmYWlsdXJlcyIsCisgICJuYW1lIiwKKyAgInJhbmRv
bV9zZWVkIiwKKyAgInRlc3RzIiwKKyAgInRpbWUiLAorICAidGltZXN0YW1wIgorfTsKKworLy8g
VGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgYXR0cmlidXRlcyB1c2VkIGluIHRoZSA8dGVzdHN1aXRlPiBl
bGVtZW50IG9mIFhNTAorLy8gb3V0cHV0Lgorc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGtSZXNl
cnZlZFRlc3RTdWl0ZUF0dHJpYnV0ZXNbXSA9IHsKKyAgImRpc2FibGVkIiwKKyAgImVycm9ycyIs
CisgICJmYWlsdXJlcyIsCisgICJuYW1lIiwKKyAgInRlc3RzIiwKKyAgInRpbWUiCit9OworCisv
LyBUaGUgbGlzdCBvZiByZXNlcnZlZCBhdHRyaWJ1dGVzIHVzZWQgaW4gdGhlIDx0ZXN0Y2FzZT4g
ZWxlbWVudCBvZiBYTUwgb3V0cHV0Lgorc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGtSZXNlcnZl
ZFRlc3RDYXNlQXR0cmlidXRlc1tdID0geworICAgICJjbGFzc25hbWUiLCAgIm5hbWUiLCAgICAg
ICAgInN0YXR1cyIsICJ0aW1lIiwKKyAgICAidHlwZV9wYXJhbSIsICJ2YWx1ZV9wYXJhbSIsICJm
aWxlIiwgICAibGluZSJ9OworCit0ZW1wbGF0ZSA8aW50IGtTaXplPgorc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+IEFycmF5QXNWZWN0b3IoY29uc3QgY2hhciogY29uc3QgKCZhcnJheSlba1NpemVd
KSB7CisgIHJldHVybiBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oYXJyYXksIGFycmF5ICsga1Np
emUpOworfQorCitzdGF0aWMgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdldFJlc2VydmVkQXR0
cmlidXRlc0ZvckVsZW1lbnQoCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50KSB7
CisgIGlmICh4bWxfZWxlbWVudCA9PSAidGVzdHN1aXRlcyIpIHsKKyAgICByZXR1cm4gQXJyYXlB
c1ZlY3RvcihrUmVzZXJ2ZWRUZXN0U3VpdGVzQXR0cmlidXRlcyk7CisgIH0gZWxzZSBpZiAoeG1s
X2VsZW1lbnQgPT0gInRlc3RzdWl0ZSIpIHsKKyAgICByZXR1cm4gQXJyYXlBc1ZlY3RvcihrUmVz
ZXJ2ZWRUZXN0U3VpdGVBdHRyaWJ1dGVzKTsKKyAgfSBlbHNlIGlmICh4bWxfZWxlbWVudCA9PSAi
dGVzdGNhc2UiKSB7CisgICAgcmV0dXJuIEFycmF5QXNWZWN0b3Ioa1Jlc2VydmVkVGVzdENhc2VB
dHRyaWJ1dGVzKTsKKyAgfSBlbHNlIHsKKyAgICBHVEVTVF9DSEVDS18oZmFsc2UpIDw8ICJVbnJl
Y29nbml6ZWQgeG1sX2VsZW1lbnQgcHJvdmlkZWQ6ICIgPDwgeG1sX2VsZW1lbnQ7CisgIH0KKyAg
Ly8gVGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGJ1dCBzb21lIGNvbXBpbGVycyBtYXkgbm90IHJl
YWxpemVzIHRoYXQuCisgIHJldHVybiBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oKTsKK30KKwor
c3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFdvcmRMaXN0KGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiYgd29yZHMpIHsKKyAgTWVzc2FnZSB3b3JkX2xpc3Q7CisgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgd29yZHMuc2l6ZSgpOyArK2kpIHsKKyAgICBpZiAoaSA+IDAgJiYgd29yZHMuc2l6
ZSgpID4gMikgeworICAgICAgd29yZF9saXN0IDw8ICIsICI7CisgICAgfQorICAgIGlmIChpID09
IHdvcmRzLnNpemUoKSAtIDEpIHsKKyAgICAgIHdvcmRfbGlzdCA8PCAiYW5kICI7CisgICAgfQor
ICAgIHdvcmRfbGlzdCA8PCAiJyIgPDwgd29yZHNbaV0gPDwgIiciOworICB9CisgIHJldHVybiB3
b3JkX2xpc3QuR2V0U3RyaW5nKCk7Cit9CisKK3N0YXRpYyBib29sIFZhbGlkYXRlVGVzdFByb3Bl
cnR5TmFtZSgKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgcHJvcGVydHlfbmFtZSwKKyAgICBjb25z
dCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHJlc2VydmVkX25hbWVzKSB7CisgIGlmIChzdGQ6
OmZpbmQocmVzZXJ2ZWRfbmFtZXMuYmVnaW4oKSwgcmVzZXJ2ZWRfbmFtZXMuZW5kKCksIHByb3Bl
cnR5X25hbWUpICE9CisgICAgICAgICAgcmVzZXJ2ZWRfbmFtZXMuZW5kKCkpIHsKKyAgICBBRERf
RkFJTFVSRSgpIDw8ICJSZXNlcnZlZCBrZXkgdXNlZCBpbiBSZWNvcmRQcm9wZXJ0eSgpOiAiIDw8
IHByb3BlcnR5X25hbWUKKyAgICAgICAgICAgICAgICAgIDw8ICIgKCIgPDwgRm9ybWF0V29yZExp
c3QocmVzZXJ2ZWRfbmFtZXMpCisgICAgICAgICAgICAgICAgICA8PCAiIGFyZSByZXNlcnZlZCBi
eSAiIDw8IEdURVNUX05BTUVfIDw8ICIpIjsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KICAgcmV0
dXJuIHRydWU7CiB9CiAKKy8vIEFkZHMgYSBmYWlsdXJlIGlmIHRoZSBrZXkgaXMgYSByZXNlcnZl
ZCBhdHRyaWJ1dGUgb2YgdGhlIGVsZW1lbnQgbmFtZWQKKy8vIHhtbF9lbGVtZW50LiAgUmV0dXJu
cyB0cnVlIGlmIHRoZSBwcm9wZXJ0eSBpcyB2YWxpZC4KK2Jvb2wgVGVzdFJlc3VsdDo6VmFsaWRh
dGVUZXN0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJv
cGVydHkpIHsKKyAgcmV0dXJuIFZhbGlkYXRlVGVzdFByb3BlcnR5TmFtZSh0ZXN0X3Byb3BlcnR5
LmtleSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldFJlc2VydmVkQXR0
cmlidXRlc0ZvckVsZW1lbnQoeG1sX2VsZW1lbnQpKTsKK30KKwogLy8gQ2xlYXJzIHRoZSBvYmpl
Y3QuCiB2b2lkIFRlc3RSZXN1bHQ6OkNsZWFyKCkgewogICB0ZXN0X3BhcnRfcmVzdWx0c18uY2xl
YXIoKTsKQEAgLTE5MTQsMTQgKzIyNTEsMTUgQEAgaW50IFRlc3RSZXN1bHQ6OnRlc3RfcHJvcGVy
dHlfY291bnQoKSBjb25zdCB7CiAKIC8vIENyZWF0ZXMgYSBUZXN0IG9iamVjdC4KIAotLy8gVGhl
IGMndG9yIHNhdmVzIHRoZSB2YWx1ZXMgb2YgYWxsIEdvb2dsZSBUZXN0IGZsYWdzLgorLy8gVGhl
IGMndG9yIHNhdmVzIHRoZSBzdGF0ZXMgb2YgYWxsIGZsYWdzLgogVGVzdDo6VGVzdCgpCi0gICAg
OiBndGVzdF9mbGFnX3NhdmVyXyhuZXcgaW50ZXJuYWw6OkdUZXN0RmxhZ1NhdmVyKSB7CisgICAg
OiBndGVzdF9mbGFnX3NhdmVyXyhuZXcgR1RFU1RfRkxBR19TQVZFUl8pIHsKIH0KIAotLy8gVGhl
IGQndG9yIHJlc3RvcmVzIHRoZSB2YWx1ZXMgb2YgYWxsIEdvb2dsZSBUZXN0IGZsYWdzLgorLy8g
VGhlIGQndG9yIHJlc3RvcmVzIHRoZSBzdGF0ZXMgb2YgYWxsIGZsYWdzLiAgVGhlIGFjdHVhbCB3
b3JrIGlzCisvLyBkb25lIGJ5IHRoZSBkJ3RvciBvZiB0aGUgZ3Rlc3RfZmxhZ19zYXZlcl8gZmll
bGQsIGFuZCB0aHVzIG5vdAorLy8gdmlzaWJsZSBoZXJlLgogVGVzdDo6flRlc3QoKSB7Ci0gIGRl
bGV0ZSBndGVzdF9mbGFnX3NhdmVyXzsKIH0KIAogLy8gU2V0cyB1cCB0aGUgdGVzdCBmaXh0dXJl
LgpAQCAtMTkzNywxMiArMjI3NSwxMiBAQCB2b2lkIFRlc3Q6OlRlYXJEb3duKCkgewogfQogCiAv
LyBBbGxvd3MgdXNlciBzdXBwbGllZCBrZXkgdmFsdWUgcGFpcnMgdG8gYmUgcmVjb3JkZWQgZm9y
IGxhdGVyIG91dHB1dC4KLXZvaWQgVGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5
LCBjb25zdCBjaGFyKiB2YWx1ZSkgewotICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+UmVjb3Jk
UHJvcGVydHlGb3JDdXJyZW50VGVzdChrZXksIHZhbHVlKTsKK3ZvaWQgVGVzdDo6UmVjb3JkUHJv
cGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSB7
CisgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5SZWNvcmRQcm9wZXJ0eShrZXksIHZhbHVlKTsK
IH0KIAogLy8gQWxsb3dzIHVzZXIgc3VwcGxpZWQga2V5IHZhbHVlIHBhaXJzIHRvIGJlIHJlY29y
ZGVkIGZvciBsYXRlciBvdXRwdXQuCi12b2lkIFRlc3Q6OlJlY29yZFByb3BlcnR5KGNvbnN0IGNo
YXIqIGtleSwgaW50IHZhbHVlKSB7Cit2b2lkIFRlc3Q6OlJlY29yZFByb3BlcnR5KGNvbnN0IHN0
ZDo6c3RyaW5nJiBrZXksIGludCB2YWx1ZSkgewogICBNZXNzYWdlIHZhbHVlX21lc3NhZ2U7CiAg
IHZhbHVlX21lc3NhZ2UgPDwgdmFsdWU7CiAgIFJlY29yZFByb3BlcnR5KGtleSwgdmFsdWVfbWVz
c2FnZS5HZXRTdHJpbmcoKS5jX3N0cigpKTsKQEAgLTE5NTEsNyArMjI4OSw3IEBAIHZvaWQgVGVz
dDo6UmVjb3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBpbnQgdmFsdWUpIHsKIG5hbWVzcGFj
ZSBpbnRlcm5hbCB7CiAKIHZvaWQgUmVwb3J0RmFpbHVyZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQ
YXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgewogICAvLyBUaGlzIGZ1
bmN0aW9uIGlzIGEgZnJpZW5kIG9mIFVuaXRUZXN0IGFuZCBhcyBzdWNoIGhhcyBhY2Nlc3MgdG8K
ICAgLy8gQWRkVGVzdFBhcnRSZXN1bHQuCiAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5BZGRU
ZXN0UGFydFJlc3VsdCgKQEAgLTE5NTksMjcgKzIyOTcsMTEgQEAgdm9pZCBSZXBvcnRGYWlsdXJl
SW5Vbmtub3duTG9jYXRpb24oVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCiAgICAg
ICBOVUxMLCAgLy8gTm8gaW5mbyBhYm91dCB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIGV4Y2Vw
dGlvbiBvY2N1cnJlZC4KICAgICAgIC0xLCAgICAvLyBXZSBoYXZlIG5vIGluZm8gb24gd2hpY2gg
bGluZSBjYXVzZWQgdGhlIGV4Y2VwdGlvbi4KICAgICAgIG1lc3NhZ2UsCi0gICAgICBTdHJpbmco
KSk7ICAvLyBObyBzdGFjayB0cmFjZSwgZWl0aGVyLgorICAgICAgIiIpOyAgIC8vIE5vIHN0YWNr
IHRyYWNlLCBlaXRoZXIuCiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogCi0jaWYgR1RF
U1RfT1NfV0lORE9XUwotLy8gV2UgYXJlIG9uIFdpbmRvd3MuCi0KLS8vIEFkZHMgYW4gImV4Y2Vw
dGlvbiB0aHJvd24iIGZhdGFsIGZhaWx1cmUgdG8gdGhlIGN1cnJlbnQgdGVzdC4KLXN0YXRpYyB2
b2lkIEFkZEV4Y2VwdGlvblRocm93bkZhaWx1cmUoRFdPUkQgZXhjZXB0aW9uX2NvZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7
Ci0gIE1lc3NhZ2UgbWVzc2FnZTsKLSAgbWVzc2FnZSA8PCAiRXhjZXB0aW9uIHRocm93biB3aXRo
IGNvZGUgMHgiIDw8IHN0ZDo6c2V0YmFzZSgxNikgPDwKLSAgICBleGNlcHRpb25fY29kZSA8PCBz
dGQ6OnNldGJhc2UoMTApIDw8ICIgaW4gIiA8PCBsb2NhdGlvbiA8PCAiLiI7Ci0KLSAgaW50ZXJu
YWw6OlJlcG9ydEZhaWx1cmVJblVua25vd25Mb2NhdGlvbihUZXN0UGFydFJlc3VsdDo6a0ZhdGFs
RmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNz
YWdlLkdldFN0cmluZygpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KIC8v
IEdvb2dsZSBUZXN0IHJlcXVpcmVzIGFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgdG8g
dXNlIHRoZSBzYW1lIHRlc3QKIC8vIGZpeHR1cmUgY2xhc3MuICBUaGlzIGZ1bmN0aW9uIGNoZWNr
cyBpZiB0aGUgY3VycmVudCB0ZXN0IGhhcyB0aGUKIC8vIHNhbWUgZml4dHVyZSBjbGFzcyBhcyB0
aGUgZmlyc3QgdGVzdCBpbiB0aGUgY3VycmVudCB0ZXN0IGNhc2UuICBJZgpAQCAtMTk5MCwxNSAr
MjMxMiwxMyBAQCBib29sIFRlc3Q6Okhhc1NhbWVGaXh0dXJlQ2xhc3MoKSB7CiAgIGNvbnN0IFRl
c3RDYXNlKiBjb25zdCB0ZXN0X2Nhc2UgPSBpbXBsLT5jdXJyZW50X3Rlc3RfY2FzZSgpOwogCiAg
IC8vIEluZm8gYWJvdXQgdGhlIGZpcnN0IHRlc3QgaW4gdGhlIGN1cnJlbnQgdGVzdCBjYXNlLgot
ICBjb25zdCBpbnRlcm5hbDo6VGVzdEluZm9JbXBsKiBjb25zdCBmaXJzdF90ZXN0X2luZm8gPQot
ICAgICAgdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpWzBdLT5pbXBsKCk7Ci0gIGNvbnN0IGlu
dGVybmFsOjpUeXBlSWQgZmlyc3RfZml4dHVyZV9pZCA9IGZpcnN0X3Rlc3RfaW5mby0+Zml4dHVy
ZV9jbGFzc19pZCgpOworICBjb25zdCBUZXN0SW5mbyogY29uc3QgZmlyc3RfdGVzdF9pbmZvID0g
dGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpWzBdOworICBjb25zdCBpbnRlcm5hbDo6VHlwZUlk
IGZpcnN0X2ZpeHR1cmVfaWQgPSBmaXJzdF90ZXN0X2luZm8tPmZpeHR1cmVfY2xhc3NfaWRfOwog
ICBjb25zdCBjaGFyKiBjb25zdCBmaXJzdF90ZXN0X25hbWUgPSBmaXJzdF90ZXN0X2luZm8tPm5h
bWUoKTsKIAogICAvLyBJbmZvIGFib3V0IHRoZSBjdXJyZW50IHRlc3QuCi0gIGNvbnN0IGludGVy
bmFsOjpUZXN0SW5mb0ltcGwqIGNvbnN0IHRoaXNfdGVzdF9pbmZvID0KLSAgICAgIGltcGwtPmN1
cnJlbnRfdGVzdF9pbmZvKCktPmltcGwoKTsKLSAgY29uc3QgaW50ZXJuYWw6OlR5cGVJZCB0aGlz
X2ZpeHR1cmVfaWQgPSB0aGlzX3Rlc3RfaW5mby0+Zml4dHVyZV9jbGFzc19pZCgpOworICBjb25z
dCBUZXN0SW5mbyogY29uc3QgdGhpc190ZXN0X2luZm8gPSBpbXBsLT5jdXJyZW50X3Rlc3RfaW5m
bygpOworICBjb25zdCBpbnRlcm5hbDo6VHlwZUlkIHRoaXNfZml4dHVyZV9pZCA9IHRoaXNfdGVz
dF9pbmZvLT5maXh0dXJlX2NsYXNzX2lkXzsKICAgY29uc3QgY2hhciogY29uc3QgdGhpc190ZXN0
X25hbWUgPSB0aGlzX3Rlc3RfaW5mby0+bmFtZSgpOwogCiAgIGlmICh0aGlzX2ZpeHR1cmVfaWQg
IT0gZmlyc3RfZml4dHVyZV9pZCkgewpAQCAtMjAwOCw4ICsyMzI4LDggQEAgYm9vbCBUZXN0OjpI
YXNTYW1lRml4dHVyZUNsYXNzKCkgewogICAgIGNvbnN0IGJvb2wgdGhpc19pc19URVNUID0gdGhp
c19maXh0dXJlX2lkID09IGludGVybmFsOjpHZXRUZXN0VHlwZUlkKCk7CiAKICAgICBpZiAoZmly
c3RfaXNfVEVTVCB8fCB0aGlzX2lzX1RFU1QpIHsKLSAgICAgIC8vIFRoZSB1c2VyIG1peGVkIFRF
U1QgYW5kIFRFU1RfRiBpbiB0aGlzIHRlc3QgY2FzZSAtIHdlJ2xsIHRlbGwKLSAgICAgIC8vIGhp
bS9oZXIgaG93IHRvIGZpeCBpdC4KKyAgICAgIC8vIEJvdGggVEVTVCBhbmQgVEVTVF9GIGFwcGVh
ciBpbiBzYW1lIHRlc3QgY2FzZSwgd2hpY2ggaXMgaW5jb3JyZWN0LgorICAgICAgLy8gVGVsbCB0
aGUgdXNlciBob3cgdG8gZml4IHRoaXMuCiAKICAgICAgIC8vIEdldHMgdGhlIG5hbWUgb2YgdGhl
IFRFU1QgYW5kIHRoZSBuYW1lIG9mIHRoZSBURVNUX0YuICBOb3RlCiAgICAgICAvLyB0aGF0IGZp
cnN0X2lzX1RFU1QgYW5kIHRoaXNfaXNfVEVTVCBjYW5ub3QgYm90aCBiZSB0cnVlLCBhcwpAQCAt
MjAyOSw4ICsyMzQ5LDggQEAgYm9vbCBUZXN0OjpIYXNTYW1lRml4dHVyZUNsYXNzKCkgewogICAg
ICAgICAgIDw8ICJ3YW50IHRvIGNoYW5nZSB0aGUgVEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0
byBhbm90aGVyIHRlc3RcbiIKICAgICAgICAgICA8PCAiY2FzZS4iOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAvLyBUaGUgdXNlciBkZWZpbmVkIHR3byBmaXh0dXJlIGNsYXNzZXMgd2l0aCB0aGUgc2Ft
ZSBuYW1lIGluCi0gICAgICAvLyB0d28gbmFtZXNwYWNlcyAtIHdlJ2xsIHRlbGwgaGltL2hlciBo
b3cgdG8gZml4IGl0LgorICAgICAgLy8gVHdvIGZpeHR1cmUgY2xhc3NlcyB3aXRoIHRoZSBzYW1l
IG5hbWUgYXBwZWFyIGluIHR3byBkaWZmZXJlbnQKKyAgICAgIC8vIG5hbWVzcGFjZXMsIHdoaWNo
IGlzIG5vdCBhbGxvd2VkLiBUZWxsIHRoZSB1c2VyIGhvdyB0byBmaXggdGhpcy4KICAgICAgIEFE
RF9GQUlMVVJFKCkKICAgICAgICAgICA8PCAiQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2Fz
ZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmVcbiIKICAgICAgICAgICA8PCAiY2xhc3Mu
ICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgIgpAQCAtMjA0OCw2MiArMjM2OCwxNjQgQEAgYm9vbCBU
ZXN0OjpIYXNTYW1lRml4dHVyZUNsYXNzKCkgewogICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gUnVu
cyB0aGUgdGVzdCBhbmQgdXBkYXRlcyB0aGUgdGVzdCByZXN1bHQuCi12b2lkIFRlc3Q6OlJ1bigp
IHsKLSAgaWYgKCFIYXNTYW1lRml4dHVyZUNsYXNzKCkpIHJldHVybjsKLQotICBpbnRlcm5hbDo6
VW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0gaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpOwog
I2lmIEdURVNUX0hBU19TRUgKLSAgLy8gQ2F0Y2ggU0VILXN0eWxlIGV4Y2VwdGlvbnMuCi0gIGlt
cGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7Ci0gIF9fdHJ5
IHsKLSAgICBTZXRVcCgpOwotICB9IF9fZXhjZXB0KGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6
OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCgKLSAgICAgIEdldEV4Y2VwdGlvbkNvZGUoKSkpIHsKLSAg
ICBBZGRFeGNlcHRpb25UaHJvd25GYWlsdXJlKEdldEV4Y2VwdGlvbkNvZGUoKSwgIlNldFVwKCki
KTsKLSAgfQogCi0gIC8vIFdlIHdpbGwgcnVuIHRoZSB0ZXN0IG9ubHkgaWYgU2V0VXAoKSBoYWQg
bm8gZmF0YWwgZmFpbHVyZS4KLSAgaWYgKCFIYXNGYXRhbEZhaWx1cmUoKSkgewotICAgIGltcGwt
Pm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7Ci0gICAgX190cnkg
ewotICAgICAgVGVzdEJvZHkoKTsKLSAgICB9IF9fZXhjZXB0KGludGVybmFsOjpVbml0VGVzdE9w
dGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCgKLSAgICAgICAgR2V0RXhjZXB0aW9uQ29kZSgp
KSkgewotICAgICAgQWRkRXhjZXB0aW9uVGhyb3duRmFpbHVyZShHZXRFeGNlcHRpb25Db2RlKCks
ICJ0aGUgdGVzdCBib2R5Iik7Ci0gICAgfQotICB9CisvLyBBZGRzIGFuICJleGNlcHRpb24gdGhy
b3duIiBmYXRhbCBmYWlsdXJlIHRvIHRoZSBjdXJyZW50IHRlc3QuICBUaGlzCisvLyBmdW5jdGlv
biByZXR1cm5zIGl0cyByZXN1bHQgdmlhIGFuIG91dHB1dCBwYXJhbWV0ZXIgcG9pbnRlciBiZWNh
dXNlIFZDKysKKy8vIHByb2hpYml0cyBjcmVhdGlvbiBvZiBvYmplY3RzIHdpdGggZGVzdHJ1Y3Rv
cnMgb24gc3RhY2sgaW4gZnVuY3Rpb25zCisvLyB1c2luZyBfX3RyeSAoc2VlIGVycm9yIEMyNzEy
KS4KK3N0YXRpYyBzdGQ6OnN0cmluZyogRm9ybWF0U2VoRXhjZXB0aW9uTWVzc2FnZShEV09SRCBl
eGNlcHRpb25fY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBsb2NhdGlvbikgeworICBNZXNzYWdlIG1lc3NhZ2U7CisgIG1lc3Nh
Z2UgPDwgIlNFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4IiA8PCBzdGQ6OnNldGJhc2UoMTYpIDw8
CisgICAgZXhjZXB0aW9uX2NvZGUgPDwgc3RkOjpzZXRiYXNlKDEwKSA8PCAiIHRocm93biBpbiAi
IDw8IGxvY2F0aW9uIDw8ICIuIjsKIAotICAvLyBIb3dldmVyLCB3ZSB3YW50IHRvIGNsZWFuIHVw
IGFzIG11Y2ggYXMgcG9zc2libGUuICBIZW5jZSB3ZSB3aWxsCi0gIC8vIGFsd2F5cyBjYWxsIFRl
YXJEb3duKCksIGV2ZW4gaWYgU2V0VXAoKSBvciB0aGUgdGVzdCBib2R5IGhhcwotICAvLyBmYWls
ZWQuCi0gIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7
CisgIHJldHVybiBuZXcgc3RkOjpzdHJpbmcobWVzc2FnZS5HZXRTdHJpbmcoKSk7Cit9CisKKyNl
bmRpZiAgLy8gR1RFU1RfSEFTX1NFSAorCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisjaWYgR1RF
U1RfSEFTX0VYQ0VQVElPTlMKKworLy8gQWRkcyBhbiAiZXhjZXB0aW9uIHRocm93biIgZmF0YWwg
ZmFpbHVyZSB0byB0aGUgY3VycmVudCB0ZXN0Lgorc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdEN4
eEV4Y2VwdGlvbk1lc3NhZ2UoY29uc3QgY2hhciogZGVzY3JpcHRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBsb2NhdGlvbikgewor
ICBNZXNzYWdlIG1lc3NhZ2U7CisgIGlmIChkZXNjcmlwdGlvbiAhPSBOVUxMKSB7CisgICAgbWVz
c2FnZSA8PCAiQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uIFwiIiA8PCBkZXNjcmlwdGlv
biA8PCAiXCIiOworICB9IGVsc2UgeworICAgIG1lc3NhZ2UgPDwgIlVua25vd24gQysrIGV4Y2Vw
dGlvbiI7CisgIH0KKyAgbWVzc2FnZSA8PCAiIHRocm93biBpbiAiIDw8IGxvY2F0aW9uIDw8ICIu
IjsKKworICByZXR1cm4gbWVzc2FnZS5HZXRTdHJpbmcoKTsKK30KKworc3RhdGljIHN0ZDo6c3Ry
aW5nIFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmluZygKKyAgICBjb25zdCBUZXN0UGFydFJlc3Vs
dCYgdGVzdF9wYXJ0X3Jlc3VsdCk7CisKK0dvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uOjpHb29n
bGVUZXN0RmFpbHVyZUV4Y2VwdGlvbigKKyAgICBjb25zdCBUZXN0UGFydFJlc3VsdCYgZmFpbHVy
ZSkKKyAgICA6IDo6c3RkOjpydW50aW1lX2Vycm9yKFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmlu
ZyhmYWlsdXJlKS5jX3N0cigpKSB7fQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05T
CisKKy8vIFdlIHB1dCB0aGVzZSBoZWxwZXIgZnVuY3Rpb25zIGluIHRoZSBpbnRlcm5hbCBuYW1l
c3BhY2UgYXMgSUJNJ3MgeGxDCisvLyBjb21waWxlciByZWplY3RzIHRoZSBjb2RlIGlmIHRoZXkg
d2VyZSBkZWNsYXJlZCBzdGF0aWMuCisKKy8vIFJ1bnMgdGhlIGdpdmVuIG1ldGhvZCBhbmQgaGFu
ZGxlcyBTRUggZXhjZXB0aW9ucyBpdCB0aHJvd3MsIHdoZW4KKy8vIFNFSCBpcyBzdXBwb3J0ZWQ7
IHJldHVybnMgdGhlIDAtdmFsdWUgZm9yIHR5cGUgUmVzdWx0IGluIGNhc2Ugb2YgYW4KKy8vIFNF
SCBleGNlcHRpb24uICAoTWljcm9zb2Z0IGNvbXBpbGVycyBjYW5ub3QgaGFuZGxlIFNFSCBhbmQg
QysrCisvLyBleGNlcHRpb25zIGluIHRoZSBzYW1lIGZ1bmN0aW9uLiAgVGhlcmVmb3JlLCB3ZSBw
cm92aWRlIGEgc2VwYXJhdGUKKy8vIHdyYXBwZXIgZnVuY3Rpb24gZm9yIGhhbmRsaW5nIFNFSCBl
eGNlcHRpb25zLikKK3RlbXBsYXRlIDxjbGFzcyBULCB0eXBlbmFtZSBSZXN1bHQ+CitSZXN1bHQg
SGFuZGxlU2VoRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgVCogb2JqZWN0LCBS
ZXN1bHQgKFQ6OiptZXRob2QpKCksIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7CisjaWYgR1RFU1Rf
SEFTX1NFSAogICBfX3RyeSB7Ci0gICAgVGVhckRvd24oKTsKLSAgfSBfX2V4Y2VwdChpbnRlcm5h
bDo6VW5pdFRlc3RPcHRpb25zOjpHVGVzdFNob3VsZFByb2Nlc3NTRUgoCisgICAgcmV0dXJuIChv
YmplY3QtPiptZXRob2QpKCk7CisgIH0gX19leGNlcHQgKGludGVybmFsOjpVbml0VGVzdE9wdGlv
bnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCggIC8vIE5PTElOVAogICAgICAgR2V0RXhjZXB0aW9u
Q29kZSgpKSkgewotICAgIEFkZEV4Y2VwdGlvblRocm93bkZhaWx1cmUoR2V0RXhjZXB0aW9uQ29k
ZSgpLCAiVGVhckRvd24oKSIpOworICAgIC8vIFdlIGNyZWF0ZSB0aGUgZXhjZXB0aW9uIG1lc3Nh
Z2Ugb24gdGhlIGhlYXAgYmVjYXVzZSBWQysrIHByb2hpYml0cworICAgIC8vIGNyZWF0aW9uIG9m
IG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycyBvbiBzdGFjayBpbiBmdW5jdGlvbnMgdXNpbmcgX190
cnkKKyAgICAvLyAoc2VlIGVycm9yIEMyNzEyKS4KKyAgICBzdGQ6OnN0cmluZyogZXhjZXB0aW9u
X21lc3NhZ2UgPSBGb3JtYXRTZWhFeGNlcHRpb25NZXNzYWdlKAorICAgICAgICBHZXRFeGNlcHRp
b25Db2RlKCksIGxvY2F0aW9uKTsKKyAgICBpbnRlcm5hbDo6UmVwb3J0RmFpbHVyZUluVW5rbm93
bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4Y2VwdGlvbl9tZXNzYWdlKTsKKyAgICBk
ZWxldGUgZXhjZXB0aW9uX21lc3NhZ2U7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlc3VsdD4o
MCk7CiAgIH0KKyNlbHNlCisgICh2b2lkKWxvY2F0aW9uOworICByZXR1cm4gKG9iamVjdC0+Km1l
dGhvZCkoKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAorfQogCi0jZWxzZSAgLy8gV2UgYXJl
IG9uIGEgY29tcGlsZXIgb3IgcGxhdGZvcm0gdGhhdCBkb2Vzbid0IHN1cHBvcnQgU0VILgotICBp
bXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotICBTZXRV
cCgpOworLy8gUnVucyB0aGUgZ2l2ZW4gbWV0aG9kIGFuZCBjYXRjaGVzIGFuZCByZXBvcnRzIEMr
KyBhbmQvb3IgU0VILXN0eWxlCisvLyBleGNlcHRpb25zLCBpZiB0aGV5IGFyZSBzdXBwb3J0ZWQ7
IHJldHVybnMgdGhlIDAtdmFsdWUgZm9yIHR5cGUKKy8vIFJlc3VsdCBpbiBjYXNlIG9mIGFuIFNF
SCBleGNlcHRpb24uCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgdHlwZW5hbWUgUmVzdWx0PgorUmVzdWx0
IEhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAorICAgIFQqIG9iamVjdCwgUmVz
dWx0IChUOjoqbWV0aG9kKSgpLCBjb25zdCBjaGFyKiBsb2NhdGlvbikgeworICAvLyBOT1RFOiBU
aGUgdXNlciBjb2RlIGNhbiBhZmZlY3QgdGhlIHdheSBpbiB3aGljaCBHb29nbGUgVGVzdCBoYW5k
bGVzCisgIC8vIGV4Y2VwdGlvbnMgYnkgc2V0dGluZyBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlv
bnMpLCBidXQgb25seSBiZWZvcmUKKyAgLy8gUlVOX0FMTF9URVNUUygpIHN0YXJ0cy4gSXQgaXMg
dGVjaG5pY2FsbHkgcG9zc2libGUgdG8gY2hlY2sgdGhlIGZsYWcKKyAgLy8gYWZ0ZXIgdGhlIGV4
Y2VwdGlvbiBpcyBjYXVnaHQgYW5kIGVpdGhlciByZXBvcnQgb3IgcmUtdGhyb3cgdGhlCisgIC8v
IGV4Y2VwdGlvbiBiYXNlZCBvbiB0aGUgZmxhZydzIHZhbHVlOgorICAvLworICAvLyB0cnkgewor
ICAvLyAgIC8vIFBlcmZvcm0gdGhlIHRlc3QgbWV0aG9kLgorICAvLyB9IGNhdGNoICguLi4pIHsK
KyAgLy8gICBpZiAoR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSkKKyAgLy8gICAgIC8vIFJl
cG9ydCB0aGUgZXhjZXB0aW9uIGFzIGZhaWx1cmUuCisgIC8vICAgZWxzZQorICAvLyAgICAgdGhy
b3c7ICAvLyBSZS10aHJvd3MgdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbi4KKyAgLy8gfQorICAvLwor
ICAvLyBIb3dldmVyLCB0aGUgcHVycG9zZSBvZiB0aGlzIGZsYWcgaXMgdG8gYWxsb3cgdGhlIHBy
b2dyYW0gdG8gZHJvcCBpbnRvCisgIC8vIHRoZSBkZWJ1Z2dlciB3aGVuIHRoZSBleGNlcHRpb24g
aXMgdGhyb3duLiBPbiBtb3N0IHBsYXRmb3Jtcywgb25jZSB0aGUKKyAgLy8gY29udHJvbCBlbnRl
cnMgdGhlIGNhdGNoIGJsb2NrLCB0aGUgZXhjZXB0aW9uIG9yaWdpbiBpbmZvcm1hdGlvbiBpcwor
ICAvLyBsb3N0IGFuZCB0aGUgZGVidWdnZXIgd2lsbCBzdG9wIHRoZSBwcm9ncmFtIGF0IHRoZSBw
b2ludCBvZiB0aGUKKyAgLy8gcmUtdGhyb3cgaW4gdGhpcyBmdW5jdGlvbiAtLSBpbnN0ZWFkIG9m
IGF0IHRoZSBwb2ludCBvZiB0aGUgb3JpZ2luYWwKKyAgLy8gdGhyb3cgc3RhdGVtZW50IGluIHRo
ZSBjb2RlIHVuZGVyIHRlc3QuICBGb3IgdGhpcyByZWFzb24sIHdlIHBlcmZvcm0KKyAgLy8gdGhl
IGNoZWNrIGVhcmx5LCBzYWNyaWZpY2luZyB0aGUgYWJpbGl0eSB0byBhZmZlY3QgR29vZ2xlIFRl
c3QncworICAvLyBleGNlcHRpb24gaGFuZGxpbmcgaW4gdGhlIG1ldGhvZCB3aGVyZSB0aGUgZXhj
ZXB0aW9uIGlzIHRocm93bi4KKyAgaWYgKGludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKS0+Y2F0
Y2hfZXhjZXB0aW9ucygpKSB7CisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKyAgICB0cnkgewor
ICAgICAgcmV0dXJuIEhhbmRsZVNlaEV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKG9iamVj
dCwgbWV0aG9kLCBsb2NhdGlvbik7CisgICAgfSBjYXRjaCAoY29uc3QgQXNzZXJ0aW9uRXhjZXB0
aW9uJikgeyAgLy8gTk9MSU5UCisgICAgICAvLyBUaGlzIGZhaWx1cmUgd2FzIHJlcG9ydGVkIGFs
cmVhZHkuCisgICAgfSBjYXRjaCAoY29uc3QgaW50ZXJuYWw6Okdvb2dsZVRlc3RGYWlsdXJlRXhj
ZXB0aW9uJikgeyAgLy8gTk9MSU5UCisgICAgICAvLyBUaGlzIGV4Y2VwdGlvbiB0eXBlIGNhbiBv
bmx5IGJlIHRocm93biBieSBhIGZhaWxlZCBHb29nbGUKKyAgICAgIC8vIFRlc3QgYXNzZXJ0aW9u
IHdpdGggdGhlIGludGVudGlvbiBvZiBsZXR0aW5nIGFub3RoZXIgdGVzdGluZworICAgICAgLy8g
ZnJhbWV3b3JrIGNhdGNoIGl0LiAgVGhlcmVmb3JlIHdlIGp1c3QgcmUtdGhyb3cgaXQuCisgICAg
ICB0aHJvdzsKKyAgICB9IGNhdGNoIChjb25zdCBzdGQ6OmV4Y2VwdGlvbiYgZSkgeyAgLy8gTk9M
SU5UCisgICAgICBpbnRlcm5hbDo6UmVwb3J0RmFpbHVyZUluVW5rbm93bkxvY2F0aW9uKAorICAg
ICAgICAgIFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLAorICAgICAgICAgIEZvcm1hdEN4
eEV4Y2VwdGlvbk1lc3NhZ2UoZS53aGF0KCksIGxvY2F0aW9uKSk7CisgICAgfSBjYXRjaCAoLi4u
KSB7ICAvLyBOT0xJTlQKKyAgICAgIGludGVybmFsOjpSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9j
YXRpb24oCisgICAgICAgICAgVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsCisgICAgICAg
ICAgRm9ybWF0Q3h4RXhjZXB0aW9uTWVzc2FnZShOVUxMLCBsb2NhdGlvbikpOworICAgIH0KKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzdWx0PigwKTsKKyNlbHNlCisgICAgcmV0dXJuIEhhbmRs
ZVNlaEV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKG9iamVjdCwgbWV0aG9kLCBsb2NhdGlv
bik7CisjZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCisgIH0gZWxzZSB7CisgICAgcmV0
dXJuIChvYmplY3QtPiptZXRob2QpKCk7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIGludGVy
bmFsCiAKKy8vIFJ1bnMgdGhlIHRlc3QgYW5kIHVwZGF0ZXMgdGhlIHRlc3QgcmVzdWx0Lgordm9p
ZCBUZXN0OjpSdW4oKSB7CisgIGlmICghSGFzU2FtZUZpeHR1cmVDbGFzcygpKSByZXR1cm47CisK
KyAgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCogY29uc3QgaW1wbCA9IGludGVybmFsOjpHZXRVbml0
VGVzdEltcGwoKTsKKyAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5n
R1Rlc3QoKTsKKyAgaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVk
KHRoaXMsICZUZXN0OjpTZXRVcCwgIlNldFVwKCkiKTsKICAgLy8gV2Ugd2lsbCBydW4gdGhlIHRl
c3Qgb25seSBpZiBTZXRVcCgpIHdhcyBzdWNjZXNzZnVsLgogICBpZiAoIUhhc0ZhdGFsRmFpbHVy
ZSgpKSB7CiAgICAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rl
c3QoKTsKLSAgICBUZXN0Qm9keSgpOworICAgIGludGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5N
ZXRob2RJZlN1cHBvcnRlZCgKKyAgICAgICAgdGhpcywgJlRlc3Q6OlRlc3RCb2R5LCAidGhlIHRl
c3QgYm9keSIpOwogICB9CiAKICAgLy8gSG93ZXZlciwgd2Ugd2FudCB0byBjbGVhbiB1cCBhcyBt
dWNoIGFzIHBvc3NpYmxlLiAgSGVuY2Ugd2Ugd2lsbAogICAvLyBhbHdheXMgY2FsbCBUZWFyRG93
bigpLCBldmVuIGlmIFNldFVwKCkgb3IgdGhlIHRlc3QgYm9keSBoYXMKICAgLy8gZmFpbGVkLgog
ICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotICBU
ZWFyRG93bigpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICisgIGludGVybmFsOjpIYW5kbGVF
eGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAgICAgIHRoaXMsICZUZXN0OjpUZWFyRG93
biwgIlRlYXJEb3duKCkiKTsKIH0KIAotCiAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBjdXJyZW50
IHRlc3QgaGFzIGEgZmF0YWwgZmFpbHVyZS4KIGJvb2wgVGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkg
ewogICByZXR1cm4gaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpLT5jdXJyZW50X3Rlc3RfcmVz
dWx0KCktPkhhc0ZhdGFsRmFpbHVyZSgpOwpAQCAtMjExOCwyMiArMjU0MCwyOCBAQCBib29sIFRl
c3Q6Okhhc05vbmZhdGFsRmFpbHVyZSgpIHsKIC8vIGNsYXNzIFRlc3RJbmZvCiAKIC8vIENvbnN0
cnVjdHMgYSBUZXN0SW5mbyBvYmplY3QuIEl0IGFzc3VtZXMgb3duZXJzaGlwIG9mIHRoZSB0ZXN0
IGZhY3RvcnkKLS8vIG9iamVjdCB2aWEgaW1wbF8uCi1UZXN0SW5mbzo6VGVzdEluZm8oY29uc3Qg
Y2hhciogYV90ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBh
X25hbWUsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV90ZXN0X2Nhc2VfY29tbWVu
dCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX2NvbW1lbnQsCisvLyBvYmplY3Qu
CitUZXN0SW5mbzo6VGVzdEluZm8oY29uc3Qgc3RkOjpzdHJpbmcmIGFfdGVzdF9jYXNlX25hbWUs
CisgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFfbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sCisgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogYV92YWx1ZV9wYXJhbSwKKyAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6
Q29kZUxvY2F0aW9uIGFfY29kZV9sb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICBpbnRlcm5h
bDo6VHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCi0gICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6
OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSkgewotICBpbXBsXyA9IG5ldyBpbnRlcm5hbDo6VGVz
dEluZm9JbXBsKHRoaXMsIGFfdGVzdF9jYXNlX25hbWUsIGFfbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhX3Rlc3RfY2FzZV9jb21tZW50LCBhX2NvbW1lbnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4dHVyZV9jbGFzc19pZCwgZmFj
dG9yeSk7Ci19CisgICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSog
ZmFjdG9yeSkKKyAgICA6IHRlc3RfY2FzZV9uYW1lXyhhX3Rlc3RfY2FzZV9uYW1lKSwKKyAgICAg
IG5hbWVfKGFfbmFtZSksCisgICAgICB0eXBlX3BhcmFtXyhhX3R5cGVfcGFyYW0gPyBuZXcgc3Rk
OjpzdHJpbmcoYV90eXBlX3BhcmFtKSA6IE5VTEwpLAorICAgICAgdmFsdWVfcGFyYW1fKGFfdmFs
dWVfcGFyYW0gPyBuZXcgc3RkOjpzdHJpbmcoYV92YWx1ZV9wYXJhbSkgOiBOVUxMKSwKKyAgICAg
IGxvY2F0aW9uXyhhX2NvZGVfbG9jYXRpb24pLAorICAgICAgZml4dHVyZV9jbGFzc19pZF8oZml4
dHVyZV9jbGFzc19pZCksCisgICAgICBzaG91bGRfcnVuXyhmYWxzZSksCisgICAgICBpc19kaXNh
YmxlZF8oZmFsc2UpLAorICAgICAgbWF0Y2hlc19maWx0ZXJfKGZhbHNlKSwKKyAgICAgIGZhY3Rv
cnlfKGZhY3RvcnkpLAorICAgICAgcmVzdWx0XygpIHt9CiAKIC8vIERlc3RydWN0cyBhIFRlc3RJ
bmZvIG9iamVjdC4KLVRlc3RJbmZvOjp+VGVzdEluZm8oKSB7Ci0gIGRlbGV0ZSBpbXBsXzsKLX0K
K1Rlc3RJbmZvOjp+VGVzdEluZm8oKSB7IGRlbGV0ZSBmYWN0b3J5XzsgfQogCiBuYW1lc3BhY2Ug
aW50ZXJuYWwgewogCkBAIC0yMTQ0LDEwICsyNTcyLDExIEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7
CiAvLwogLy8gICB0ZXN0X2Nhc2VfbmFtZTogICBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UKIC8vICAg
bmFtZTogICAgICAgICAgICAgbmFtZSBvZiB0aGUgdGVzdAotLy8gICB0ZXN0X2Nhc2VfY29tbWVu
dDogYSBjb21tZW50IG9uIHRoZSB0ZXN0IGNhc2UgdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluCi0v
LyAgICAgICAgICAgICAgICAgICAgICB0aGUgdGVzdCBvdXRwdXQKLS8vICAgY29tbWVudDogICAg
ICAgICAgYSBjb21tZW50IG9uIHRoZSB0ZXN0IHRoYXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUK
LS8vICAgICAgICAgICAgICAgICAgICAgdGVzdCBvdXRwdXQKKy8vICAgdHlwZV9wYXJhbTogICAg
ICAgdGhlIG5hbWUgb2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorLy8g
ICAgICAgICAgICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0
ZXJpemVkIHRlc3QuCisvLyAgIHZhbHVlX3BhcmFtOiAgICAgIHRleHQgcmVwcmVzZW50YXRpb24g
b2YgdGhlIHRlc3QncyB2YWx1ZSBwYXJhbWV0ZXIsCisvLyAgICAgICAgICAgICAgICAgICAgIG9y
IE5VTEwgaWYgdGhpcyBpcyBub3QgYSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisvLyAgIGNv
ZGVfbG9jYXRpb246ICAgIGNvZGUgbG9jYXRpb24gd2hlcmUgdGhlIHRlc3QgaXMgZGVmaW5lZAog
Ly8gICBmaXh0dXJlX2NsYXNzX2lkOiBJRCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzCiAvLyAg
IHNldF91cF90YzogICAgICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0
aGUgdGVzdCBjYXNlCiAvLyAgIHRlYXJfZG93bl90YzogICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0
aW9uIHRoYXQgdGVhcnMgZG93biB0aGUgdGVzdCBjYXNlCkBAIC0yMTU1LDIyICsyNTg0LDI0IEBA
IG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLyAgICAgICAgICAgICAgICAgICAgIFRoZSBuZXdseSBj
cmVhdGVkIFRlc3RJbmZvIGluc3RhbmNlIHdpbGwgYXNzdW1lCiAvLyAgICAgICAgICAgICAgICAg
ICAgIG93bmVyc2hpcCBvZiB0aGUgZmFjdG9yeSBvYmplY3QuCiBUZXN0SW5mbyogTWFrZUFuZFJl
Z2lzdGVyVGVzdEluZm8oCi0gICAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsIGNvbnN0IGNo
YXIqIG5hbWUsCi0gICAgY29uc3QgY2hhciogdGVzdF9jYXNlX2NvbW1lbnQsIGNvbnN0IGNoYXIq
IGNvbW1lbnQsCisgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCisgICAgY29uc3QgY2hh
ciogbmFtZSwKKyAgICBjb25zdCBjaGFyKiB0eXBlX3BhcmFtLAorICAgIGNvbnN0IGNoYXIqIHZh
bHVlX3BhcmFtLAorICAgIENvZGVMb2NhdGlvbiBjb2RlX2xvY2F0aW9uLAogICAgIFR5cGVJZCBm
aXh0dXJlX2NsYXNzX2lkLAogICAgIFNldFVwVGVzdENhc2VGdW5jIHNldF91cF90YywKICAgICBU
ZWFyRG93blRlc3RDYXNlRnVuYyB0ZWFyX2Rvd25fdGMsCiAgICAgVGVzdEZhY3RvcnlCYXNlKiBm
YWN0b3J5KSB7CiAgIFRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQotICAgICAgbmV3IFRlc3RJ
bmZvKHRlc3RfY2FzZV9uYW1lLCBuYW1lLCB0ZXN0X2Nhc2VfY29tbWVudCwgY29tbWVudCwKLSAg
ICAgICAgICAgICAgICAgICBmaXh0dXJlX2NsYXNzX2lkLCBmYWN0b3J5KTsKKyAgICAgIG5ldyBU
ZXN0SW5mbyh0ZXN0X2Nhc2VfbmFtZSwgbmFtZSwgdHlwZV9wYXJhbSwgdmFsdWVfcGFyYW0sCisg
ICAgICAgICAgICAgICAgICAgY29kZV9sb2NhdGlvbiwgZml4dHVyZV9jbGFzc19pZCwgZmFjdG9y
eSk7CiAgIEdldFVuaXRUZXN0SW1wbCgpLT5BZGRUZXN0SW5mbyhzZXRfdXBfdGMsIHRlYXJfZG93
bl90YywgdGVzdF9pbmZvKTsKICAgcmV0dXJuIHRlc3RfaW5mbzsKIH0KIAotI2lmIEdURVNUX0hB
U19QQVJBTV9URVNUCiB2b2lkIFJlcG9ydEludmFsaWRUZXN0Q2FzZVR5cGUoY29uc3QgY2hhciog
dGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogZmlsZSwgaW50IGxpbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2Rl
TG9jYXRpb24gY29kZV9sb2NhdGlvbikgewogICBNZXNzYWdlIGVycm9yczsKICAgZXJyb3JzCiAg
ICAgICA8PCAiQXR0ZW1wdGVkIHJlZGVmaW5pdGlvbiBvZiB0ZXN0IGNhc2UgIiA8PCB0ZXN0X2Nh
c2VfbmFtZSA8PCAiLlxuIgpAQCAtMjE4Miw0OCArMjYxMywxMiBAQCB2b2lkIFJlcG9ydEludmFs
aWRUZXN0Q2FzZVR5cGUoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCiAgICAgICA8PCAicHJv
YmFibHkgcmVuYW1lIG9uZSBvZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlm
ZmVyZW50XG4iCiAgICAgICA8PCAidGVzdCBjYXNlcy4iOwogCi0gIGZwcmludGYoc3RkZXJyLCAi
JXMgJXMiLCBGb3JtYXRGaWxlTG9jYXRpb24oZmlsZSwgbGluZSkuY19zdHIoKSwKLSAgICAgICAg
ICBlcnJvcnMuR2V0U3RyaW5nKCkuY19zdHIoKSk7CisgIEdURVNUX0xPR18oRVJST1IpIDw8IEZv
cm1hdEZpbGVMb2NhdGlvbihjb2RlX2xvY2F0aW9uLmZpbGUuY19zdHIoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVfbG9jYXRpb24ubGluZSkKKyAgICAg
ICAgICAgICAgICAgICAgPDwgIiAiIDw8IGVycm9ycy5HZXRTdHJpbmcoKTsKIH0KLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiAKLS8v
IFJldHVybnMgdGhlIHRlc3QgY2FzZSBuYW1lLgotY29uc3QgY2hhciogVGVzdEluZm86OnRlc3Rf
Y2FzZV9uYW1lKCkgY29uc3QgewotICByZXR1cm4gaW1wbF8tPnRlc3RfY2FzZV9uYW1lKCk7Ci19
Ci0KLS8vIFJldHVybnMgdGhlIHRlc3QgbmFtZS4KLWNvbnN0IGNoYXIqIFRlc3RJbmZvOjpuYW1l
KCkgY29uc3QgewotICByZXR1cm4gaW1wbF8tPm5hbWUoKTsKLX0KLQotLy8gUmV0dXJucyB0aGUg
dGVzdCBjYXNlIGNvbW1lbnQuCi1jb25zdCBjaGFyKiBUZXN0SW5mbzo6dGVzdF9jYXNlX2NvbW1l
bnQoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBsXy0+dGVzdF9jYXNlX2NvbW1lbnQoKTsKLX0KLQot
Ly8gUmV0dXJucyB0aGUgdGVzdCBjb21tZW50LgotY29uc3QgY2hhciogVGVzdEluZm86OmNvbW1l
bnQoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBsXy0+Y29tbWVudCgpOwotfQotCi0vLyBSZXR1cm5z
IHRydWUgaWYgdGhpcyB0ZXN0IHNob3VsZCBydW4uCi1ib29sIFRlc3RJbmZvOjpzaG91bGRfcnVu
KCkgY29uc3QgeyByZXR1cm4gaW1wbF8tPnNob3VsZF9ydW4oKTsgfQotCi0vLyBSZXR1cm5zIHRy
dWUgaWYgdGhpcyB0ZXN0IG1hdGNoZXMgdGhlIHVzZXItc3BlY2lmaWVkIGZpbHRlci4KLWJvb2wg
VGVzdEluZm86Om1hdGNoZXNfZmlsdGVyKCkgY29uc3QgeyByZXR1cm4gaW1wbF8tPm1hdGNoZXNf
ZmlsdGVyKCk7IH0KLQotLy8gUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSB0ZXN0LgotY29uc3Qg
VGVzdFJlc3VsdCogVGVzdEluZm86OnJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIGltcGxfLT5yZXN1
bHQoKTsgfQotCi0vLyBJbmNyZW1lbnRzIHRoZSBudW1iZXIgb2YgZGVhdGggdGVzdHMgZW5jb3Vu
dGVyZWQgaW4gdGhpcyB0ZXN0IHNvCi0vLyBmYXIuCi1pbnQgVGVzdEluZm86OmluY3JlbWVudF9k
ZWF0aF90ZXN0X2NvdW50KCkgewotICByZXR1cm4gaW1wbF8tPnJlc3VsdCgpLT5pbmNyZW1lbnRf
ZGVhdGhfdGVzdF9jb3VudCgpOwotfQotCiBuYW1lc3BhY2UgewogCiAvLyBBIHByZWRpY2F0ZSB0
aGF0IGNoZWNrcyB0aGUgdGVzdCBuYW1lIG9mIGEgVGVzdEluZm8gYWdhaW5zdCBhIGtub3duCkBA
IC0yMjQ0LDExICsyNjM5LDExIEBAIGNsYXNzIFRlc3ROYW1lSXMgewogCiAgIC8vIFJldHVybnMg
dHJ1ZSBpZmYgdGhlIHRlc3QgbmFtZSBvZiB0ZXN0X2luZm8gbWF0Y2hlcyBuYW1lXy4KICAgYm9v
bCBvcGVyYXRvcigpKGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKSBjb25zdCB7Ci0gICAgcmV0
dXJuIHRlc3RfaW5mbyAmJiBpbnRlcm5hbDo6U3RyaW5nKHRlc3RfaW5mby0+bmFtZSgpKS5Db21w
YXJlKG5hbWVfKSA9PSAwOworICAgIHJldHVybiB0ZXN0X2luZm8gJiYgdGVzdF9pbmZvLT5uYW1l
KCkgPT0gbmFtZV87CiAgIH0KIAogIHByaXZhdGU6Ci0gIGludGVybmFsOjpTdHJpbmcgbmFtZV87
CisgIHN0ZDo6c3RyaW5nIG5hbWVfOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlCkBAIC0yMjU5LDc4
ICsyNjU0LDYwIEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLyBhbmQgSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1AgaW50byByZWd1bGFyIHRlc3RzIGFuZCByZWdpc3RlcnMgdGhvc2UuCiAvLyBUaGlz
IHdpbGwgYmUgZG9uZSBqdXN0IG9uY2UgZHVyaW5nIHRoZSBwcm9ncmFtIHJ1bnRpbWUuCiB2b2lk
IFVuaXRUZXN0SW1wbDo6UmVnaXN0ZXJQYXJhbWV0ZXJpemVkVGVzdHMoKSB7Ci0jaWYgR1RFU1Rf
SEFTX1BBUkFNX1RFU1QKICAgaWYgKCFwYXJhbWV0ZXJpemVkX3Rlc3RzX3JlZ2lzdGVyZWRfKSB7
CiAgICAgcGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5Xy5SZWdpc3RlclRlc3RzKCk7CiAgICAg
cGFyYW1ldGVyaXplZF90ZXN0c19yZWdpc3RlcmVkXyA9IHRydWU7CiAgIH0KLSNlbmRpZgogfQog
Cit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKwogLy8gQ3JlYXRlcyB0aGUgdGVzdCBvYmplY3Qs
IHJ1bnMgaXQsIHJlY29yZHMgaXRzIHJlc3VsdCwgYW5kIHRoZW4KIC8vIGRlbGV0ZXMgaXQuCi12
b2lkIFRlc3RJbmZvSW1wbDo6UnVuKCkgewordm9pZCBUZXN0SW5mbzo6UnVuKCkgewogICBpZiAo
IXNob3VsZF9ydW5fKSByZXR1cm47CiAKICAgLy8gVGVsbHMgVW5pdFRlc3Qgd2hlcmUgdG8gc3Rv
cmUgdGVzdCByZXN1bHQuCi0gIFVuaXRUZXN0SW1wbCogY29uc3QgaW1wbCA9IGludGVybmFsOjpH
ZXRVbml0VGVzdEltcGwoKTsKLSAgaW1wbC0+c2V0X2N1cnJlbnRfdGVzdF9pbmZvKHBhcmVudF8p
OworICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0gaW50ZXJuYWw6OkdldFVu
aXRUZXN0SW1wbCgpOworICBpbXBsLT5zZXRfY3VycmVudF90ZXN0X2luZm8odGhpcyk7CiAKICAg
VGVzdEV2ZW50TGlzdGVuZXIqIHJlcGVhdGVyID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxp
c3RlbmVycygpLnJlcGVhdGVyKCk7CiAKICAgLy8gTm90aWZpZXMgdGhlIHVuaXQgdGVzdCBldmVu
dCBsaXN0ZW5lcnMgdGhhdCBhIHRlc3QgaXMgYWJvdXQgdG8gc3RhcnQuCi0gIHJlcGVhdGVyLT5P
blRlc3RTdGFydCgqcGFyZW50Xyk7CisgIHJlcGVhdGVyLT5PblRlc3RTdGFydCgqdGhpcyk7CiAK
LSAgY29uc3QgVGltZUluTWlsbGlzIHN0YXJ0ID0gR2V0VGltZUluTWlsbGlzKCk7CisgIGNvbnN0
IFRpbWVJbk1pbGxpcyBzdGFydCA9IGludGVybmFsOjpHZXRUaW1lSW5NaWxsaXMoKTsKIAogICBp
bXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotI2lmIEdU
RVNUX0hBU19TRUgKLSAgLy8gQ2F0Y2ggU0VILXN0eWxlIGV4Y2VwdGlvbnMuCi0gIFRlc3QqIHRl
c3QgPSBOVUxMOwotCi0gIF9fdHJ5IHsKLSAgICAvLyBDcmVhdGVzIHRoZSB0ZXN0IG9iamVjdC4K
LSAgICB0ZXN0ID0gZmFjdG9yeV8tPkNyZWF0ZVRlc3QoKTsKLSAgfSBfX2V4Y2VwdChpbnRlcm5h
bDo6VW5pdFRlc3RPcHRpb25zOjpHVGVzdFNob3VsZFByb2Nlc3NTRUgoCi0gICAgICBHZXRFeGNl
cHRpb25Db2RlKCkpKSB7Ci0gICAgQWRkRXhjZXB0aW9uVGhyb3duRmFpbHVyZShHZXRFeGNlcHRp
b25Db2RlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIHRlc3QgZml4dHVy
ZSdzIGNvbnN0cnVjdG9yIik7Ci0gICAgcmV0dXJuOwotICB9Ci0jZWxzZSAgLy8gV2UgYXJlIG9u
IGEgY29tcGlsZXIgb3IgcGxhdGZvcm0gdGhhdCBkb2Vzbid0IHN1cHBvcnQgU0VILgotCi0gIC8v
IFRPRE8od2FuKTogSWYgdGVzdC0+UnVuKCkgdGhyb3dzLCB0ZXN0IHdvbid0IGJlIGRlbGV0ZWQu
ICBUaGlzIGlzCi0gIC8vIG5vdCBhIHByb2JsZW0gbm93IGFzIHdlIGRvbid0IHVzZSBleGNlcHRp
b25zLiAgSWYgd2Ugd2VyZSB0bwotICAvLyBlbmFibGUgZXhjZXB0aW9ucywgd2Ugc2hvdWxkIHJl
dmlzZSB0aGUgZm9sbG93aW5nIHRvIGJlCi0gIC8vIGV4Y2VwdGlvbi1zYWZlLgogCiAgIC8vIENy
ZWF0ZXMgdGhlIHRlc3Qgb2JqZWN0LgotICBUZXN0KiB0ZXN0ID0gZmFjdG9yeV8tPkNyZWF0ZVRl
c3QoKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAorICBUZXN0KiBjb25zdCB0ZXN0ID0gaW50
ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAorICAgICAgZmFjdG9y
eV8sICZpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlOjpDcmVhdGVUZXN0LAorICAgICAgInRoZSB0
ZXN0IGZpeHR1cmUncyBjb25zdHJ1Y3RvciIpOwogCi0gIC8vIFJ1bnMgdGhlIHRlc3Qgb25seSBp
ZiB0aGUgY29uc3RydWN0b3Igb2YgdGhlIHRlc3QgZml4dHVyZSBkaWRuJ3QKLSAgLy8gZ2VuZXJh
dGUgYSBmYXRhbCBmYWlsdXJlLgorICAvLyBSdW5zIHRoZSB0ZXN0IGlmIHRoZSBjb25zdHJ1Y3Rv
ciBkaWRuJ3QgZ2VuZXJhdGUgYSBmYXRhbCBmYWlsdXJlLgorICAvLyBOb3RlIHRoYXQgdGhlIG9i
amVjdCB3aWxsIG5vdCBiZSBudWxsCiAgIGlmICghVGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkpIHsK
KyAgICAvLyBUaGlzIGRvZXNuJ3QgdGhyb3cgYXMgYWxsIHVzZXIgY29kZSB0aGF0IGNhbiB0aHJv
dyBhcmUgd3JhcHBlZCBpbnRvCisgICAgLy8gZXhjZXB0aW9uIGhhbmRsaW5nIGNvZGUuCiAgICAg
dGVzdC0+UnVuKCk7CiAgIH0KIAotICAvLyBEZWxldGVzIHRoZSB0ZXN0IG9iamVjdC4KLSAgaW1w
bC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgZGVsZXRl
IHRlc3Q7Ci0gIHRlc3QgPSBOVUxMOworICAgIC8vIERlbGV0ZXMgdGhlIHRlc3Qgb2JqZWN0Lgor
ICAgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7Cisg
ICAgaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAorICAgICAg
ICB0ZXN0LCAmVGVzdDo6RGVsZXRlU2VsZl8sICJ0aGUgdGVzdCBmaXh0dXJlJ3MgZGVzdHJ1Y3Rv
ciIpOwogCi0gIHJlc3VsdF8uc2V0X2VsYXBzZWRfdGltZShHZXRUaW1lSW5NaWxsaXMoKSAtIHN0
YXJ0KTsKKyAgcmVzdWx0Xy5zZXRfZWxhcHNlZF90aW1lKGludGVybmFsOjpHZXRUaW1lSW5NaWxs
aXMoKSAtIHN0YXJ0KTsKIAogICAvLyBOb3RpZmllcyB0aGUgdW5pdCB0ZXN0IGV2ZW50IGxpc3Rl
bmVyIHRoYXQgYSB0ZXN0IGhhcyBqdXN0IGZpbmlzaGVkLgotICByZXBlYXRlci0+T25UZXN0RW5k
KCpwYXJlbnRfKTsKKyAgcmVwZWF0ZXItPk9uVGVzdEVuZCgqdGhpcyk7CiAKICAgLy8gVGVsbHMg
VW5pdFRlc3QgdG8gc3RvcCBhc3NvY2lhdGluZyBhc3NlcnRpb24gcmVzdWx0cyB0byB0aGlzCiAg
IC8vIHRlc3QuCiAgIGltcGwtPnNldF9jdXJyZW50X3Rlc3RfaW5mbyhOVUxMKTsKIH0KIAotfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCi0KIC8vIGNsYXNzIFRlc3RDYXNlCiAKIC8vIEdldHMgdGhl
IG51bWJlciBvZiBzdWNjZXNzZnVsIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlLgpAQCAtMjM0Mywx
MCArMjcyMCwyMSBAQCBpbnQgVGVzdENhc2U6OmZhaWxlZF90ZXN0X2NvdW50KCkgY29uc3Qgewog
ICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlzdF8sIFRlc3RGYWlsZWQpOwogfQogCisvLyBH
ZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGlu
IHRoZSBYTUwgcmVwb3J0LgoraW50IFRlc3RDYXNlOjpyZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3Rf
Y291bnQoKSBjb25zdCB7CisgIHJldHVybiBDb3VudElmKHRlc3RfaW5mb19saXN0XywgVGVzdFJl
cG9ydGFibGVEaXNhYmxlZCk7Cit9CisKKy8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0
ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KIGludCBUZXN0Q2FzZTo6ZGlzYWJsZWRfdGVzdF9jb3Vu
dCgpIGNvbnN0IHsKICAgcmV0dXJuIENvdW50SWYodGVzdF9pbmZvX2xpc3RfLCBUZXN0RGlzYWJs
ZWQpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0
aGUgWE1MIHJlcG9ydC4KK2ludCBUZXN0Q2FzZTo6cmVwb3J0YWJsZV90ZXN0X2NvdW50KCkgY29u
c3QgeworICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlzdF8sIFRlc3RSZXBvcnRhYmxlKTsK
K30KKwogLy8gR2V0IHRoZSBudW1iZXIgb2YgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UgdGhhdCBz
aG91bGQgcnVuLgogaW50IFRlc3RDYXNlOjp0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0IHsKICAg
cmV0dXJuIENvdW50SWYodGVzdF9pbmZvX2xpc3RfLCBTaG91bGRSdW5UZXN0KTsKQEAgLTIzNjIs
MTMgKzI3NTAsMTUgQEAgaW50IFRlc3RDYXNlOjp0b3RhbF90ZXN0X2NvdW50KCkgY29uc3Qgewog
Ly8gQXJndW1lbnRzOgogLy8KIC8vICAgbmFtZTogICAgICAgICBuYW1lIG9mIHRoZSB0ZXN0IGNh
c2UKKy8vICAgYV90eXBlX3BhcmFtOiB0aGUgbmFtZSBvZiB0aGUgdGVzdCBjYXNlJ3MgdHlwZSBw
YXJhbWV0ZXIsIG9yIE5VTEwgaWYKKy8vICAgICAgICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5
cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZS4KIC8vICAgc2V0X3VwX3RjOiAg
ICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIHRlc3QgY2FzZQogLy8g
ICB0ZWFyX2Rvd25fdGM6IHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgdGVhcnMgZG93biB0
aGUgdGVzdCBjYXNlCi1UZXN0Q2FzZTo6VGVzdENhc2UoY29uc3QgY2hhciogYV9uYW1lLCBjb25z
dCBjaGFyKiBhX2NvbW1lbnQsCitUZXN0Q2FzZTo6VGVzdENhc2UoY29uc3QgY2hhciogYV9uYW1l
LCBjb25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sCiAgICAgICAgICAgICAgICAgICAgVGVzdDo6U2V0
VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAgICAgICAgICAgICAgICAgIFRlc3Q6OlRlYXJE
b3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YykKICAgICA6IG5hbWVfKGFfbmFtZSksCi0gICAg
ICBjb21tZW50XyhhX2NvbW1lbnQpLAorICAgICAgdHlwZV9wYXJhbV8oYV90eXBlX3BhcmFtID8g
bmV3IHN0ZDo6c3RyaW5nKGFfdHlwZV9wYXJhbSkgOiBOVUxMKSwKICAgICAgIHNldF91cF90Y18o
c2V0X3VwX3RjKSwKICAgICAgIHRlYXJfZG93bl90Y18odGVhcl9kb3duX3RjKSwKICAgICAgIHNo
b3VsZF9ydW5fKGZhbHNlKSwKQEAgLTI0MTMsNDUgKzI4MDMsMjcgQEAgdm9pZCBUZXN0Q2FzZTo6
UnVuKCkgewogCiAgIHJlcGVhdGVyLT5PblRlc3RDYXNlU3RhcnQoKnRoaXMpOwogICBpbXBsLT5v
c19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotICBzZXRfdXBfdGNf
KCk7CisgIGludGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAg
ICAgIHRoaXMsICZUZXN0Q2FzZTo6UnVuU2V0VXBUZXN0Q2FzZSwgIlNldFVwVGVzdENhc2UoKSIp
OwogCiAgIGNvbnN0IGludGVybmFsOjpUaW1lSW5NaWxsaXMgc3RhcnQgPSBpbnRlcm5hbDo6R2V0
VGltZUluTWlsbGlzKCk7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxfdGVzdF9jb3VudCgp
OyBpKyspIHsKLSAgICBHZXRNdXRhYmxlVGVzdEluZm8oaSktPmltcGwoKS0+UnVuKCk7CisgICAg
R2V0TXV0YWJsZVRlc3RJbmZvKGkpLT5SdW4oKTsKICAgfQogICBlbGFwc2VkX3RpbWVfID0gaW50
ZXJuYWw6OkdldFRpbWVJbk1pbGxpcygpIC0gc3RhcnQ7CiAKICAgaW1wbC0+b3Nfc3RhY2tfdHJh
Y2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgdGVhcl9kb3duX3RjXygpOworICBp
bnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCisgICAgICB0aGlz
LCAmVGVzdENhc2U6OlJ1blRlYXJEb3duVGVzdENhc2UsICJUZWFyRG93blRlc3RDYXNlKCkiKTsK
KwogICByZXBlYXRlci0+T25UZXN0Q2FzZUVuZCgqdGhpcyk7CiAgIGltcGwtPnNldF9jdXJyZW50
X3Rlc3RfY2FzZShOVUxMKTsKIH0KIAogLy8gQ2xlYXJzIHRoZSByZXN1bHRzIG9mIGFsbCB0ZXN0
cyBpbiB0aGlzIHRlc3QgY2FzZS4KIHZvaWQgVGVzdENhc2U6OkNsZWFyUmVzdWx0KCkgewotICBG
b3JFYWNoKHRlc3RfaW5mb19saXN0XywgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbDo6Q2xlYXJUZXN0
UmVzdWx0KTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0IHBhc3NlZC4KLWJvb2wgVGVz
dENhc2U6OlRlc3RQYXNzZWQoY29uc3QgVGVzdEluZm8gKiB0ZXN0X2luZm8pIHsKLSAgY29uc3Qg
aW50ZXJuYWw6OlRlc3RJbmZvSW1wbCogY29uc3QgaW1wbCA9IHRlc3RfaW5mby0+aW1wbCgpOwot
ICByZXR1cm4gaW1wbC0+c2hvdWxkX3J1bigpICYmIGltcGwtPnJlc3VsdCgpLT5QYXNzZWQoKTsK
LX0KLQotLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0IGZhaWxlZC4KLWJvb2wgVGVzdENhc2U6OlRl
c3RGYWlsZWQoY29uc3QgVGVzdEluZm8gKiB0ZXN0X2luZm8pIHsKLSAgY29uc3QgaW50ZXJuYWw6
OlRlc3RJbmZvSW1wbCogY29uc3QgaW1wbCA9IHRlc3RfaW5mby0+aW1wbCgpOwotICByZXR1cm4g
aW1wbC0+c2hvdWxkX3J1bigpICYmIGltcGwtPnJlc3VsdCgpLT5GYWlsZWQoKTsKLX0KLQotLy8g
UmV0dXJucyB0cnVlIGlmZiB0ZXN0IGlzIGRpc2FibGVkLgotYm9vbCBUZXN0Q2FzZTo6VGVzdERp
c2FibGVkKGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKSB7Ci0gIHJldHVybiB0ZXN0X2luZm8t
PmltcGwoKS0+aXNfZGlzYWJsZWQoKTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZl
biB0ZXN0IHNob3VsZCBydW4uCi1ib29sIFRlc3RDYXNlOjpTaG91bGRSdW5UZXN0KGNvbnN0IFRl
c3RJbmZvICp0ZXN0X2luZm8pIHsKLSAgcmV0dXJuIHRlc3RfaW5mby0+aW1wbCgpLT5zaG91bGRf
cnVuKCk7CisgIGFkX2hvY190ZXN0X3Jlc3VsdF8uQ2xlYXIoKTsKKyAgRm9yRWFjaCh0ZXN0X2lu
Zm9fbGlzdF8sIFRlc3RJbmZvOjpDbGVhclRlc3RSZXN1bHQpOwogfQogCiAvLyBTaHVmZmxlcyB0
aGUgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCkBAIC0yNDcxLDIwICsyODQzLDIwIEBAIHZvaWQg
VGVzdENhc2U6OlVuc2h1ZmZsZVRlc3RzKCkgewogLy8KIC8vIEZvcm1hdENvdW50YWJsZU5vdW4o
MSwgImZvcm11bGEiLCAiZm9ybXVsaSIpIHJldHVybnMgIjEgZm9ybXVsYSIuCiAvLyBGb3JtYXRD
b3VudGFibGVOb3VuKDUsICJib29rIiwgImJvb2tzIikgcmV0dXJucyAiNSBib29rcyIuCi1zdGF0
aWMgaW50ZXJuYWw6OlN0cmluZyBGb3JtYXRDb3VudGFibGVOb3VuKGludCBjb3VudCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIHNpbmd1
bGFyX2Zvcm0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIgKiBwbHVyYWxfZm9ybSkgewotICByZXR1cm4gaW50ZXJuYWw6OlN0cmluZzo6Rm9y
bWF0KCIlZCAlcyIsIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
dW50ID09IDEgPyBzaW5ndWxhcl9mb3JtIDogcGx1cmFsX2Zvcm0pOworc3RhdGljIHN0ZDo6c3Ry
aW5nIEZvcm1hdENvdW50YWJsZU5vdW4oaW50IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIHNpbmd1bGFyX2Zvcm0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogcGx1cmFsX2Zvcm0pIHsK
KyAgcmV0dXJuIGludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcoY291bnQpICsgIiAiICsKKyAg
ICAgIChjb3VudCA9PSAxID8gc2luZ3VsYXJfZm9ybSA6IHBsdXJhbF9mb3JtKTsKIH0KIAogLy8g
Rm9ybWF0cyB0aGUgY291bnQgb2YgdGVzdHMuCi1zdGF0aWMgaW50ZXJuYWw6OlN0cmluZyBGb3Jt
YXRUZXN0Q291bnQoaW50IHRlc3RfY291bnQpIHsKK3N0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRU
ZXN0Q291bnQoaW50IHRlc3RfY291bnQpIHsKICAgcmV0dXJuIEZvcm1hdENvdW50YWJsZU5vdW4o
dGVzdF9jb3VudCwgInRlc3QiLCAidGVzdHMiKTsKIH0KIAogLy8gRm9ybWF0cyB0aGUgY291bnQg
b2YgdGVzdCBjYXNlcy4KLXN0YXRpYyBpbnRlcm5hbDo6U3RyaW5nIEZvcm1hdFRlc3RDYXNlQ291
bnQoaW50IHRlc3RfY2FzZV9jb3VudCkgeworc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFRlc3RD
YXNlQ291bnQoaW50IHRlc3RfY2FzZV9jb3VudCkgewogICByZXR1cm4gRm9ybWF0Q291bnRhYmxl
Tm91bih0ZXN0X2Nhc2VfY291bnQsICJ0ZXN0IGNhc2UiLCAidGVzdCBjYXNlcyIpOwogfQogCkBA
IC0yNTA0LDEzICsyODc2LDE1IEBAIHN0YXRpYyBjb25zdCBjaGFyICogVGVzdFBhcnRSZXN1bHRU
eXBlVG9TdHJpbmcoVGVzdFBhcnRSZXN1bHQ6OlR5cGUgdHlwZSkgewogI2Vsc2UKICAgICAgIHJl
dHVybiAiRmFpbHVyZVxuIjsKICNlbmRpZgorICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gIlVu
a25vd24gcmVzdWx0IHR5cGUiOwogICB9Ci0KLSAgcmV0dXJuICJVbmtub3duIHJlc3VsdCB0eXBl
IjsKIH0KIAotLy8gUHJpbnRzIGEgVGVzdFBhcnRSZXN1bHQgdG8gYSBTdHJpbmcuCi1zdGF0aWMg
aW50ZXJuYWw6OlN0cmluZyBQcmludFRlc3RQYXJ0UmVzdWx0VG9TdHJpbmcoCituYW1lc3BhY2Ug
aW50ZXJuYWwgeworCisvLyBQcmludHMgYSBUZXN0UGFydFJlc3VsdCB0byBhbiBzdGQ6OnN0cmlu
Zy4KK3N0YXRpYyBzdGQ6OnN0cmluZyBQcmludFRlc3RQYXJ0UmVzdWx0VG9TdHJpbmcoCiAgICAg
Y29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKICAgcmV0dXJuIChNZXNz
YWdlKCkKICAgICAgICAgICA8PCBpbnRlcm5hbDo6Rm9ybWF0RmlsZUxvY2F0aW9uKHRlc3RfcGFy
dF9yZXN1bHQuZmlsZV9uYW1lKCksCkBAIC0yNTIxLDcgKzI4OTUsNyBAQCBzdGF0aWMgaW50ZXJu
YWw6OlN0cmluZyBQcmludFRlc3RQYXJ0UmVzdWx0VG9TdHJpbmcoCiAKIC8vIFByaW50cyBhIFRl
c3RQYXJ0UmVzdWx0Lgogc3RhdGljIHZvaWQgUHJpbnRUZXN0UGFydFJlc3VsdChjb25zdCBUZXN0
UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgewotICBjb25zdCBpbnRlcm5hbDo6U3RyaW5n
JiByZXN1bHQgPQorICBjb25zdCBzdGQ6OnN0cmluZyYgcmVzdWx0ID0KICAgICAgIFByaW50VGVz
dFBhcnRSZXN1bHRUb1N0cmluZyh0ZXN0X3BhcnRfcmVzdWx0KTsKICAgcHJpbnRmKCIlc1xuIiwg
cmVzdWx0LmNfc3RyKCkpOwogICBmZmx1c2goc3Rkb3V0KTsKQEAgLTI1NDAsOCArMjkxNCw2IEBA
IHN0YXRpYyB2b2lkIFByaW50VGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRl
c3RfcGFydF9yZXN1bHQpIHsKIAogLy8gY2xhc3MgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVy
CiAKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KIGVudW0gR1Rlc3RDb2xvciB7CiAgIENPTE9SX0RF
RkFVTFQsCiAgIENPTE9SX1JFRCwKQEAgLTI1NDksMTAgKzI5MjEsMTEgQEAgZW51bSBHVGVzdENv
bG9yIHsKICAgQ09MT1JfWUVMTE9XCiB9OwogCi0jaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKKyNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19X
SU5ET1dTX01PQklMRSAmJiBcCisgICAgIUdURVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNU
X09TX1dJTkRPV1NfUlQgJiYgIUdURVNUX09TX1dJTkRPV1NfTUlOR1cKIAogLy8gUmV0dXJucyB0
aGUgY2hhcmFjdGVyIGF0dHJpYnV0ZSBmb3IgdGhlIGdpdmVuIGNvbG9yLgotV09SRCBHZXRDb2xv
ckF0dHJpYnV0ZShHVGVzdENvbG9yIGNvbG9yKSB7CitzdGF0aWMgV09SRCBHZXRDb2xvckF0dHJp
YnV0ZShHVGVzdENvbG9yIGNvbG9yKSB7CiAgIHN3aXRjaCAoY29sb3IpIHsKICAgICBjYXNlIENP
TE9SX1JFRDogICAgcmV0dXJuIEZPUkVHUk9VTkRfUkVEOwogICAgIGNhc2UgQ09MT1JfR1JFRU46
ICByZXR1cm4gRk9SRUdST1VORF9HUkVFTjsKQEAgLTI1NjEsMTEgKzI5MzQsNDIgQEAgV09SRCBH
ZXRDb2xvckF0dHJpYnV0ZShHVGVzdENvbG9yIGNvbG9yKSB7CiAgIH0KIH0KIAorc3RhdGljIGlu
dCBHZXRCaXRPZmZzZXQoV09SRCBjb2xvcl9tYXNrKSB7CisgIGlmIChjb2xvcl9tYXNrID09IDAp
IHJldHVybiAwOworCisgIGludCBiaXRPZmZzZXQgPSAwOworICB3aGlsZSAoKGNvbG9yX21hc2sg
JiAxKSA9PSAwKSB7CisgICAgY29sb3JfbWFzayA+Pj0gMTsKKyAgICArK2JpdE9mZnNldDsKKyAg
fQorICByZXR1cm4gYml0T2Zmc2V0OworfQorCitzdGF0aWMgV09SRCBHZXROZXdDb2xvcihHVGVz
dENvbG9yIGNvbG9yLCBXT1JEIG9sZF9jb2xvcl9hdHRycykgeworICAvLyBMZXQncyByZXVzZSB0
aGUgQkcKKyAgc3RhdGljIGNvbnN0IFdPUkQgYmFja2dyb3VuZF9tYXNrID0gQkFDS0dST1VORF9C
TFVFIHwgQkFDS0dST1VORF9HUkVFTiB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEJBQ0tHUk9VTkRfUkVEIHwgQkFDS0dST1VORF9JTlRFTlNJVFk7CisgIHN0YXRpYyBj
b25zdCBXT1JEIGZvcmVncm91bmRfbWFzayA9IEZPUkVHUk9VTkRfQkxVRSB8IEZPUkVHUk9VTkRf
R1JFRU4gfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGT1JFR1JPVU5E
X1JFRCB8IEZPUkVHUk9VTkRfSU5URU5TSVRZOworICBjb25zdCBXT1JEIGV4aXN0aW5nX2JnID0g
b2xkX2NvbG9yX2F0dHJzICYgYmFja2dyb3VuZF9tYXNrOworCisgIFdPUkQgbmV3X2NvbG9yID0K
KyAgICAgIEdldENvbG9yQXR0cmlidXRlKGNvbG9yKSB8IGV4aXN0aW5nX2JnIHwgRk9SRUdST1VO
RF9JTlRFTlNJVFk7CisgIHN0YXRpYyBjb25zdCBpbnQgYmdfYml0T2Zmc2V0ID0gR2V0Qml0T2Zm
c2V0KGJhY2tncm91bmRfbWFzayk7CisgIHN0YXRpYyBjb25zdCBpbnQgZmdfYml0T2Zmc2V0ID0g
R2V0Qml0T2Zmc2V0KGZvcmVncm91bmRfbWFzayk7CisKKyAgaWYgKCgobmV3X2NvbG9yICYgYmFj
a2dyb3VuZF9tYXNrKSA+PiBiZ19iaXRPZmZzZXQpID09CisgICAgICAoKG5ld19jb2xvciAmIGZv
cmVncm91bmRfbWFzaykgPj4gZmdfYml0T2Zmc2V0KSkgeworICAgIG5ld19jb2xvciBePSBGT1JF
R1JPVU5EX0lOVEVOU0lUWTsgIC8vIGludmVydCBpbnRlbnNpdHkKKyAgfQorICByZXR1cm4gbmV3
X2NvbG9yOworfQorCiAjZWxzZQogCiAvLyBSZXR1cm5zIHRoZSBBTlNJIGNvbG9yIGNvZGUgZm9y
IHRoZSBnaXZlbiBjb2xvci4gIENPTE9SX0RFRkFVTFQgaXMKIC8vIGFuIGludmFsaWQgaW5wdXQu
Ci1jb25zdCBjaGFyKiBHZXRBbnNpQ29sb3JDb2RlKEdUZXN0Q29sb3IgY29sb3IpIHsKK3N0YXRp
YyBjb25zdCBjaGFyKiBHZXRBbnNpQ29sb3JDb2RlKEdUZXN0Q29sb3IgY29sb3IpIHsKICAgc3dp
dGNoIChjb2xvcikgewogICAgIGNhc2UgQ09MT1JfUkVEOiAgICAgcmV0dXJuICIxIjsKICAgICBj
YXNlIENPTE9SX0dSRUVOOiAgIHJldHVybiAiMiI7CkBAIC0yNTgxLDcgKzI5ODUsNyBAQCBib29s
IFNob3VsZFVzZUNvbG9yKGJvb2wgc3Rkb3V0X2lzX3R0eSkgewogICBjb25zdCBjaGFyKiBjb25z
dCBndGVzdF9jb2xvciA9IEdURVNUX0ZMQUcoY29sb3IpLmNfc3RyKCk7CiAKICAgaWYgKFN0cmlu
Zzo6Q2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFscyhndGVzdF9jb2xvciwgImF1dG8iKSkgewot
I2lmIEdURVNUX09TX1dJTkRPV1MKKyNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19X
SU5ET1dTX01JTkdXCiAgICAgLy8gT24gV2luZG93cyB0aGUgVEVSTSB2YXJpYWJsZSBpcyB1c3Vh
bGx5IG5vdCBzZXQsIGJ1dCB0aGUKICAgICAvLyBjb25zb2xlIHRoZXJlIGRvZXMgc3VwcG9ydCBj
b2xvcnMuCiAgICAgcmV0dXJuIHN0ZG91dF9pc190dHk7CkBAIC0yNTkyLDYgKzI5OTYsMTIgQEAg
Ym9vbCBTaG91bGRVc2VDb2xvcihib29sIHN0ZG91dF9pc190dHkpIHsKICAgICAgICAgU3RyaW5n
OjpDU3RyaW5nRXF1YWxzKHRlcm0sICJ4dGVybSIpIHx8CiAgICAgICAgIFN0cmluZzo6Q1N0cmlu
Z0VxdWFscyh0ZXJtLCAieHRlcm0tY29sb3IiKSB8fAogICAgICAgICBTdHJpbmc6OkNTdHJpbmdF
cXVhbHModGVybSwgInh0ZXJtLTI1NmNvbG9yIikgfHwKKyAgICAgICAgU3RyaW5nOjpDU3RyaW5n
RXF1YWxzKHRlcm0sICJzY3JlZW4iKSB8fAorICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHMo
dGVybSwgInNjcmVlbi0yNTZjb2xvciIpIHx8CisgICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFs
cyh0ZXJtLCAidG11eCIpIHx8CisgICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAi
dG11eC0yNTZjb2xvciIpIHx8CisgICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAi
cnh2dC11bmljb2RlIikgfHwKKyAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJy
eHZ0LXVuaWNvZGUtMjU2Y29sb3IiKSB8fAogICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHMo
dGVybSwgImxpbnV4IikgfHwKICAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJj
eWd3aW4iKTsKICAgICByZXR1cm4gc3Rkb3V0X2lzX3R0eSAmJiB0ZXJtX3N1cHBvcnRzX2NvbG9y
OwpAQCAtMjYxMSwxMiArMzAyMSwxMyBAQCBib29sIFNob3VsZFVzZUNvbG9yKGJvb2wgc3Rkb3V0
X2lzX3R0eSkgewogLy8gY2Fubm90IHNpbXBseSBlbWl0IHNwZWNpYWwgY2hhcmFjdGVycyBhbmQg
aGF2ZSB0aGUgdGVybWluYWwgY2hhbmdlIGNvbG9ycy4KIC8vIFRoaXMgcm91dGluZSBtdXN0IGFj
dHVhbGx5IGVtaXQgdGhlIGNoYXJhY3RlcnMgcmF0aGVyIHRoYW4gcmV0dXJuIGEgc3RyaW5nCiAv
LyB0aGF0IHdvdWxkIGJlIGNvbG9yZWQgd2hlbiBwcmludGVkLCBhcyBjYW4gYmUgZG9uZSBvbiBM
aW51eC4KLXZvaWQgQ29sb3JlZFByaW50ZihHVGVzdENvbG9yIGNvbG9yLCBjb25zdCBjaGFyKiBm
bXQsIC4uLikgeworc3RhdGljIHZvaWQgQ29sb3JlZFByaW50ZihHVGVzdENvbG9yIGNvbG9yLCBj
b25zdCBjaGFyKiBmbXQsIC4uLikgewogICB2YV9saXN0IGFyZ3M7CiAgIHZhX3N0YXJ0KGFyZ3Ms
IGZtdCk7CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRSB8fCBHVEVTVF9PU19TWU1CSUFO
IHx8IEdURVNUX09TX1pPUwotICBjb25zdCBib29sIHVzZV9jb2xvciA9IGZhbHNlOworI2lmIEdU
RVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNUX09TX1NZTUJJQU4gfHwgR1RFU1RfT1NfWk9T
IHx8IFwKKyAgICBHVEVTVF9PU19JT1MgfHwgR1RFU1RfT1NfV0lORE9XU19QSE9ORSB8fCBHVEVT
VF9PU19XSU5ET1dTX1JUCisgIGNvbnN0IGJvb2wgdXNlX2NvbG9yID0gQWx3YXlzRmFsc2UoKTsK
ICNlbHNlCiAgIHN0YXRpYyBjb25zdCBib29sIGluX2NvbG9yX21vZGUgPQogICAgICAgU2hvdWxk
VXNlQ29sb3IocG9zaXg6OklzQVRUWShwb3NpeDo6RmlsZU5vKHN0ZG91dCkpICE9IDApOwpAQCAt
MjYzMCwyMCArMzA0MSwyMiBAQCB2b2lkIENvbG9yZWRQcmludGYoR1Rlc3RDb2xvciBjb2xvciwg
Y29uc3QgY2hhciogZm10LCAuLi4pIHsKICAgICByZXR1cm47CiAgIH0KIAotI2lmIEdURVNUX09T
X1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjaWYgR1RFU1RfT1NfV0lORE9X
UyAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgXAorICAgICFHVEVTVF9PU19XSU5ET1dT
X1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUICYmICFHVEVTVF9PU19XSU5ET1dTX01JTkdX
CiAgIGNvbnN0IEhBTkRMRSBzdGRvdXRfaGFuZGxlID0gR2V0U3RkSGFuZGxlKFNURF9PVVRQVVRf
SEFORExFKTsKIAogICAvLyBHZXRzIHRoZSBjdXJyZW50IHRleHQgY29sb3IuCiAgIENPTlNPTEVf
U0NSRUVOX0JVRkZFUl9JTkZPIGJ1ZmZlcl9pbmZvOwogICBHZXRDb25zb2xlU2NyZWVuQnVmZmVy
SW5mbyhzdGRvdXRfaGFuZGxlLCAmYnVmZmVyX2luZm8pOwogICBjb25zdCBXT1JEIG9sZF9jb2xv
cl9hdHRycyA9IGJ1ZmZlcl9pbmZvLndBdHRyaWJ1dGVzOworICBjb25zdCBXT1JEIG5ld19jb2xv
ciA9IEdldE5ld0NvbG9yKGNvbG9yLCBvbGRfY29sb3JfYXR0cnMpOwogCiAgIC8vIFdlIG5lZWQg
dG8gZmx1c2ggdGhlIHN0cmVhbSBidWZmZXJzIGludG8gdGhlIGNvbnNvbGUgYmVmb3JlIGVhY2gK
ICAgLy8gU2V0Q29uc29sZVRleHRBdHRyaWJ1dGUgY2FsbCBsZXN0IGl0IGFmZmVjdCB0aGUgdGV4
dCB0aGF0IGlzIGFscmVhZHkKICAgLy8gcHJpbnRlZCBidXQgaGFzIG5vdCB5ZXQgcmVhY2hlZCB0
aGUgY29uc29sZS4KICAgZmZsdXNoKHN0ZG91dCk7Ci0gIFNldENvbnNvbGVUZXh0QXR0cmlidXRl
KHN0ZG91dF9oYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEdldENvbG9yQXR0cmli
dXRlKGNvbG9yKSB8IEZPUkVHUk9VTkRfSU5URU5TSVRZKTsKKyAgU2V0Q29uc29sZVRleHRBdHRy
aWJ1dGUoc3Rkb3V0X2hhbmRsZSwgbmV3X2NvbG9yKTsKKwogICB2cHJpbnRmKGZtdCwgYXJncyk7
CiAKICAgZmZsdXNoKHN0ZG91dCk7CkBAIC0yNjU3LDYgKzMwNzAsMjggQEAgdm9pZCBDb2xvcmVk
UHJpbnRmKEdUZXN0Q29sb3IgY29sb3IsIGNvbnN0IGNoYXIqIGZtdCwgLi4uKSB7CiAgIHZhX2Vu
ZChhcmdzKTsKIH0KIAorLy8gVGV4dCBwcmludGVkIGluIEdvb2dsZSBUZXN0J3MgdGV4dCBvdXRw
dXQgYW5kIC0tZ3Rlc3RfbGlzdF90ZXN0cworLy8gb3V0cHV0IHRvIGxhYmVsIHRoZSB0eXBlIHBh
cmFtZXRlciBhbmQgdmFsdWUgcGFyYW1ldGVyIGZvciBhIHRlc3QuCitzdGF0aWMgY29uc3QgY2hh
ciBrVHlwZVBhcmFtTGFiZWxbXSA9ICJUeXBlUGFyYW0iOworc3RhdGljIGNvbnN0IGNoYXIga1Zh
bHVlUGFyYW1MYWJlbFtdID0gIkdldFBhcmFtKCkiOworCitzdGF0aWMgdm9pZCBQcmludEZ1bGxU
ZXN0Q29tbWVudElmUHJlc2VudChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CisgIGNvbnN0
IGNoYXIqIGNvbnN0IHR5cGVfcGFyYW0gPSB0ZXN0X2luZm8udHlwZV9wYXJhbSgpOworICBjb25z
dCBjaGFyKiBjb25zdCB2YWx1ZV9wYXJhbSA9IHRlc3RfaW5mby52YWx1ZV9wYXJhbSgpOworCisg
IGlmICh0eXBlX3BhcmFtICE9IE5VTEwgfHwgdmFsdWVfcGFyYW0gIT0gTlVMTCkgeworICAgIHBy
aW50ZigiLCB3aGVyZSAiKTsKKyAgICBpZiAodHlwZV9wYXJhbSAhPSBOVUxMKSB7CisgICAgICBw
cmludGYoIiVzID0gJXMiLCBrVHlwZVBhcmFtTGFiZWwsIHR5cGVfcGFyYW0pOworICAgICAgaWYg
KHZhbHVlX3BhcmFtICE9IE5VTEwpCisgICAgICAgIHByaW50ZigiIGFuZCAiKTsKKyAgICB9Cisg
ICAgaWYgKHZhbHVlX3BhcmFtICE9IE5VTEwpIHsKKyAgICAgIHByaW50ZigiJXMgPSAlcyIsIGtW
YWx1ZVBhcmFtTGFiZWwsIHZhbHVlX3BhcmFtKTsKKyAgICB9CisgIH0KK30KKwogLy8gVGhpcyBj
bGFzcyBpbXBsZW1lbnRzIHRoZSBUZXN0RXZlbnRMaXN0ZW5lciBpbnRlcmZhY2UuCiAvLwogLy8g
Q2xhc3MgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyIGlzIGNvcHlhYmxlLgpAQCAtMjY4NCw4
ICszMTE5LDYgQEAgY2xhc3MgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyIDogcHVibGljIFRl
c3RFdmVudExpc3RlbmVyIHsKIAogIHByaXZhdGU6CiAgIHN0YXRpYyB2b2lkIFByaW50RmFpbGVk
VGVzdHMoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCk7Ci0KLSAgaW50ZXJuYWw6OlN0cmluZyB0
ZXN0X2Nhc2VfbmFtZV87CiB9OwogCiAgIC8vIEZpcmVkIGJlZm9yZSBlYWNoIGl0ZXJhdGlvbiBv
ZiB0ZXN0cyBzdGFydHMuCkBAIC0yNjk4LDE1ICszMTMxLDE2IEBAIHZvaWQgUHJldHR5VW5pdFRl
c3RSZXN1bHRQcmludGVyOjpPblRlc3RJdGVyYXRpb25TdGFydCgKIAogICAvLyBQcmludHMgdGhl
IGZpbHRlciBpZiBpdCdzIG5vdCAqLiAgVGhpcyByZW1pbmRzIHRoZSB1c2VyIHRoYXQgc29tZQog
ICAvLyB0ZXN0cyBtYXkgYmUgc2tpcHBlZC4KLSAgaWYgKCFpbnRlcm5hbDo6U3RyaW5nOjpDU3Ry
aW5nRXF1YWxzKGZpbHRlciwga1VuaXZlcnNhbEZpbHRlcikpIHsKKyAgaWYgKCFTdHJpbmc6OkNT
dHJpbmdFcXVhbHMoZmlsdGVyLCBrVW5pdmVyc2FsRmlsdGVyKSkgewogICAgIENvbG9yZWRQcmlu
dGYoQ09MT1JfWUVMTE9XLAogICAgICAgICAgICAgICAgICAgIk5vdGU6ICVzIGZpbHRlciA9ICVz
XG4iLCBHVEVTVF9OQU1FXywgZmlsdGVyKTsKICAgfQogCiAgIGlmIChpbnRlcm5hbDo6U2hvdWxk
U2hhcmQoa1Rlc3RUb3RhbFNoYXJkcywga1Rlc3RTaGFyZEluZGV4LCBmYWxzZSkpIHsKKyAgICBj
b25zdCBJbnQzMiBzaGFyZF9pbmRleCA9IEludDMyRnJvbUVudk9yRGllKGtUZXN0U2hhcmRJbmRl
eCwgLTEpOwogICAgIENvbG9yZWRQcmludGYoQ09MT1JfWUVMTE9XLAotICAgICAgICAgICAgICAg
ICAgIk5vdGU6IFRoaXMgaXMgdGVzdCBzaGFyZCAlcyBvZiAlcy5cbiIsCi0gICAgICAgICAgICAg
ICAgICBpbnRlcm5hbDo6cG9zaXg6OkdldEVudihrVGVzdFNoYXJkSW5kZXgpLAorICAgICAgICAg
ICAgICAgICAgIk5vdGU6IFRoaXMgaXMgdGVzdCBzaGFyZCAlZCBvZiAlcy5cbiIsCisgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHNoYXJkX2luZGV4KSArIDEsCiAgICAgICAgICAg
ICAgICAgICBpbnRlcm5hbDo6cG9zaXg6OkdldEVudihrVGVzdFRvdGFsU2hhcmRzKSk7CiAgIH0K
IApAQCAtMjczMSwyNyArMzE2NSwyMiBAQCB2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRl
cjo6T25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0KAogfQogCiB2b2lkIFByZXR0eVVuaXRUZXN0UmVz
dWx0UHJpbnRlcjo6T25UZXN0Q2FzZVN0YXJ0KGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsK
LSAgdGVzdF9jYXNlX25hbWVfID0gdGVzdF9jYXNlLm5hbWUoKTsKLSAgY29uc3QgaW50ZXJuYWw6
OlN0cmluZyBjb3VudHMgPQorICBjb25zdCBzdGQ6OnN0cmluZyBjb3VudHMgPQogICAgICAgRm9y
bWF0Q291bnRhYmxlTm91bih0ZXN0X2Nhc2UudGVzdF90b19ydW5fY291bnQoKSwgInRlc3QiLCAi
dGVzdHMiKTsKICAgQ29sb3JlZFByaW50ZihDT0xPUl9HUkVFTiwgIlstLS0tLS0tLS0tXSAiKTsK
LSAgcHJpbnRmKCIlcyBmcm9tICVzIiwgY291bnRzLmNfc3RyKCksIHRlc3RfY2FzZV9uYW1lXy5j
X3N0cigpKTsKLSAgaWYgKHRlc3RfY2FzZS5jb21tZW50KClbMF0gPT0gJ1wwJykgeworICBwcmlu
dGYoIiVzIGZyb20gJXMiLCBjb3VudHMuY19zdHIoKSwgdGVzdF9jYXNlLm5hbWUoKSk7CisgIGlm
ICh0ZXN0X2Nhc2UudHlwZV9wYXJhbSgpID09IE5VTEwpIHsKICAgICBwcmludGYoIlxuIik7CiAg
IH0gZWxzZSB7Ci0gICAgcHJpbnRmKCIsIHdoZXJlICVzXG4iLCB0ZXN0X2Nhc2UuY29tbWVudCgp
KTsKKyAgICBwcmludGYoIiwgd2hlcmUgJXMgPSAlc1xuIiwga1R5cGVQYXJhbUxhYmVsLCB0ZXN0
X2Nhc2UudHlwZV9wYXJhbSgpKTsKICAgfQogICBmZmx1c2goc3Rkb3V0KTsKIH0KIAogdm9pZCBQ
cmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZvJiB0
ZXN0X2luZm8pIHsKICAgQ29sb3JlZFByaW50ZihDT0xPUl9HUkVFTiwgICJbIFJVTiAgICAgIF0g
Iik7Ci0gIFByaW50VGVzdE5hbWUodGVzdF9jYXNlX25hbWVfLmNfc3RyKCksIHRlc3RfaW5mby5u
YW1lKCkpOwotICBpZiAodGVzdF9pbmZvLmNvbW1lbnQoKVswXSA9PSAnXDAnKSB7Ci0gICAgcHJp
bnRmKCJcbiIpOwotICB9IGVsc2UgewotICAgIHByaW50ZigiLCB3aGVyZSAlc1xuIiwgdGVzdF9p
bmZvLmNvbW1lbnQoKSk7Ci0gIH0KKyAgUHJpbnRUZXN0TmFtZSh0ZXN0X2luZm8udGVzdF9jYXNl
X25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7CisgIHByaW50ZigiXG4iKTsKICAgZmZsdXNoKHN0
ZG91dCk7CiB9CiAKQEAgLTI3NzMsNyArMzIwMiwxMCBAQCB2b2lkIFByZXR0eVVuaXRUZXN0UmVz
dWx0UHJpbnRlcjo6T25UZXN0RW5kKGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKICAgfSBl
bHNlIHsKICAgICBDb2xvcmVkUHJpbnRmKENPTE9SX1JFRCwgIlsgIEZBSUxFRCAgXSAiKTsKICAg
fQotICBQcmludFRlc3ROYW1lKHRlc3RfY2FzZV9uYW1lXy5jX3N0cigpLCB0ZXN0X2luZm8ubmFt
ZSgpKTsKKyAgUHJpbnRUZXN0TmFtZSh0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9p
bmZvLm5hbWUoKSk7CisgIGlmICh0ZXN0X2luZm8ucmVzdWx0KCktPkZhaWxlZCgpKQorICAgIFBy
aW50RnVsbFRlc3RDb21tZW50SWZQcmVzZW50KHRlc3RfaW5mbyk7CisKICAgaWYgKEdURVNUX0ZM
QUcocHJpbnRfdGltZSkpIHsKICAgICBwcmludGYoIiAoJXMgbXMpXG4iLCBpbnRlcm5hbDo6U3Ry
ZWFtYWJsZVRvU3RyaW5nKAogICAgICAgICAgICB0ZXN0X2luZm8ucmVzdWx0KCktPmVsYXBzZWRf
dGltZSgpKS5jX3N0cigpKTsKQEAgLTI3ODYsMTIgKzMyMTgsMTEgQEAgdm9pZCBQcmV0dHlVbml0
VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdEVuZChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7
CiB2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0Q2FzZUVuZChjb25zdCBU
ZXN0Q2FzZSYgdGVzdF9jYXNlKSB7CiAgIGlmICghR1RFU1RfRkxBRyhwcmludF90aW1lKSkgcmV0
dXJuOwogCi0gIHRlc3RfY2FzZV9uYW1lXyA9IHRlc3RfY2FzZS5uYW1lKCk7Ci0gIGNvbnN0IGlu
dGVybmFsOjpTdHJpbmcgY291bnRzID0KKyAgY29uc3Qgc3RkOjpzdHJpbmcgY291bnRzID0KICAg
ICAgIEZvcm1hdENvdW50YWJsZU5vdW4odGVzdF9jYXNlLnRlc3RfdG9fcnVuX2NvdW50KCksICJ0
ZXN0IiwgInRlc3RzIik7CiAgIENvbG9yZWRQcmludGYoQ09MT1JfR1JFRU4sICJbLS0tLS0tLS0t
LV0gIik7CiAgIHByaW50ZigiJXMgZnJvbSAlcyAoJXMgbXMgdG90YWwpXG5cbiIsCi0gICAgICAg
ICBjb3VudHMuY19zdHIoKSwgdGVzdF9jYXNlX25hbWVfLmNfc3RyKCksCisgICAgICAgICBjb3Vu
dHMuY19zdHIoKSwgdGVzdF9jYXNlLm5hbWUoKSwKICAgICAgICAgIGludGVybmFsOjpTdHJlYW1h
YmxlVG9TdHJpbmcodGVzdF9jYXNlLmVsYXBzZWRfdGltZSgpKS5jX3N0cigpKTsKICAgZmZsdXNo
KHN0ZG91dCk7CiB9CkBAIC0yODIyLDIxICszMjUzLDE0IEBAIHZvaWQgUHJldHR5VW5pdFRlc3RS
ZXN1bHRQcmludGVyOjpQcmludEZhaWxlZFRlc3RzKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3Qp
IHsKICAgICAgIH0KICAgICAgIENvbG9yZWRQcmludGYoQ09MT1JfUkVELCAiWyAgRkFJTEVEICBd
ICIpOwogICAgICAgcHJpbnRmKCIlcy4lcyIsIHRlc3RfY2FzZS5uYW1lKCksIHRlc3RfaW5mby5u
YW1lKCkpOwotICAgICAgaWYgKHRlc3RfY2FzZS5jb21tZW50KClbMF0gIT0gJ1wwJyB8fAotICAg
ICAgICAgIHRlc3RfaW5mby5jb21tZW50KClbMF0gIT0gJ1wwJykgewotICAgICAgICBwcmludGYo
Iiwgd2hlcmUgJXMiLCB0ZXN0X2Nhc2UuY29tbWVudCgpKTsKLSAgICAgICAgaWYgKHRlc3RfY2Fz
ZS5jb21tZW50KClbMF0gIT0gJ1wwJyAmJgotICAgICAgICAgICAgdGVzdF9pbmZvLmNvbW1lbnQo
KVswXSAhPSAnXDAnKSB7Ci0gICAgICAgICAgcHJpbnRmKCIgYW5kICIpOwotICAgICAgICB9Ci0g
ICAgICB9Ci0gICAgICBwcmludGYoIiVzXG4iLCB0ZXN0X2luZm8uY29tbWVudCgpKTsKKyAgICAg
IFByaW50RnVsbFRlc3RDb21tZW50SWZQcmVzZW50KHRlc3RfaW5mbyk7CisgICAgICBwcmludGYo
IlxuIik7CiAgICAgfQogICB9CiB9CiAKLSB2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRl
cjo6T25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgLyppdGVy
YXRpb24qLykgewordm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdEl0ZXJh
dGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgLyppdGVyYXRpb24qLykgewogICBD
b2xvcmVkUHJpbnRmKENPTE9SX0dSRUVOLCAgIls9PT09PT09PT09XSAiKTsKICAgcHJpbnRmKCIl
cyBmcm9tICVzIHJhbi4iLAogICAgICAgICAgRm9ybWF0VGVzdENvdW50KHVuaXRfdGVzdC50ZXN0
X3RvX3J1bl9jb3VudCgpKS5jX3N0cigpLApAQCAtMjg1OSw3ICszMjgzLDcgQEAgdm9pZCBQcmV0
dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6OlByaW50RmFpbGVkVGVzdHMoY29uc3QgVW5pdFRlc3Qm
IHVuaXRfdGVzdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgbnVtX2ZhaWx1cmVzID09IDEg
PyAiVEVTVCIgOiAiVEVTVFMiKTsKICAgfQogCi0gIGludCBudW1fZGlzYWJsZWQgPSB1bml0X3Rl
c3QuZGlzYWJsZWRfdGVzdF9jb3VudCgpOworICBpbnQgbnVtX2Rpc2FibGVkID0gdW5pdF90ZXN0
LnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpOwogICBpZiAobnVtX2Rpc2FibGVkICYm
ICFHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzKSkgewogICAgIGlmICghbnVtX2Zh
aWx1cmVzKSB7CiAgICAgICBwcmludGYoIlxuIik7ICAvLyBBZGQgYSBzcGFjZXIgaWYgbm8gRkFJ
TFVSRSBiYW5uZXIgaXMgZGlzcGxheWVkLgpAQCAtMjkyMiw3ICszMzQ2LDcgQEAgdm9pZCBUZXN0
RXZlbnRSZXBlYXRlcjo6QXBwZW5kKFRlc3RFdmVudExpc3RlbmVyICpsaXN0ZW5lcikgewogICBs
aXN0ZW5lcnNfLnB1c2hfYmFjayhsaXN0ZW5lcik7CiB9CiAKLS8vIFRPRE8odmxhZGxAZ29vZ2xl
LmNvbSk6IEZhY3RvciB0aGUgc2VhcmNoIGZ1bmN0aW9uYWxpdHkgaW50byBWZWN0b3I6OkZpbmQu
CisvLyBGSVhNRTogRmFjdG9yIHRoZSBzZWFyY2ggZnVuY3Rpb25hbGl0eSBpbnRvIFZlY3Rvcjo6
RmluZC4KIFRlc3RFdmVudExpc3RlbmVyKiBUZXN0RXZlbnRSZXBlYXRlcjo6UmVsZWFzZShUZXN0
RXZlbnRMaXN0ZW5lciAqbGlzdGVuZXIpIHsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0
ZW5lcnNfLnNpemUoKTsgKytpKSB7CiAgICAgaWYgKGxpc3RlbmVyc19baV0gPT0gbGlzdGVuZXIp
IHsKQEAgLTI5OTYsNiArMzQyMCwxMSBAQCBjbGFzcyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIg
OiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CiAgIGV4cGxpY2l0IFhtbFVuaXRUZXN0
UmVzdWx0UHJpbnRlcihjb25zdCBjaGFyKiBvdXRwdXRfZmlsZSk7CiAKICAgdmlydHVhbCB2b2lk
IE9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LCBpbnQgaXRlcmF0
aW9uKTsKKyAgdm9pZCBMaXN0VGVzdHNNYXRjaGluZ0ZpbHRlcihjb25zdCBzdGQ6OnZlY3RvcjxU
ZXN0Q2FzZSo+JiB0ZXN0X2Nhc2VzKTsKKworICAvLyBQcmludHMgYW4gWE1MIHN1bW1hcnkgb2Yg
YWxsIHVuaXQgdGVzdHMuCisgIHN0YXRpYyB2b2lkIFByaW50WG1sVGVzdHNMaXN0KHN0ZDo6b3N0
cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxUZXN0Q2FzZSo+JiB0ZXN0X2Nhc2VzKTsKIAogIHByaXZhdGU6CiAgIC8vIElzIGMg
YSB3aGl0ZXNwYWNlIGNoYXJhY3RlciB0aGF0IGlzIG5vcm1hbGl6ZWQgdG8gYSBzcGFjZSBjaGFy
YWN0ZXIKQEAgLTMwMTMsMTggKzM0NDIsMjcgQEAgY2xhc3MgWG1sVW5pdFRlc3RSZXN1bHRQcmlu
dGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewogICAvLyBpc19hdHRyaWJ1dGUg
aXMgdHJ1ZSwgdGhlIHRleHQgaXMgbWVhbnQgdG8gYXBwZWFyIGFzIGFuIGF0dHJpYnV0ZQogICAv
LyB2YWx1ZSwgYW5kIG5vcm1hbGl6YWJsZSB3aGl0ZXNwYWNlIGlzIHByZXNlcnZlZCBieSByZXBs
YWNpbmcgaXQKICAgLy8gd2l0aCBjaGFyYWN0ZXIgcmVmZXJlbmNlcy4KLSAgc3RhdGljIFN0cmlu
ZyBFc2NhcGVYbWwoY29uc3QgY2hhciogc3RyLCBib29sIGlzX2F0dHJpYnV0ZSk7CisgIHN0YXRp
YyBzdGQ6OnN0cmluZyBFc2NhcGVYbWwoY29uc3Qgc3RkOjpzdHJpbmcmIHN0ciwgYm9vbCBpc19h
dHRyaWJ1dGUpOwogCiAgIC8vIFJldHVybnMgdGhlIGdpdmVuIHN0cmluZyB3aXRoIGFsbCBjaGFy
YWN0ZXJzIGludmFsaWQgaW4gWE1MIHJlbW92ZWQuCi0gIHN0YXRpYyBTdHJpbmcgUmVtb3ZlSW52
YWxpZFhtbENoYXJhY3RlcnMoY29uc3QgY2hhciogc3RyKTsKKyAgc3RhdGljIHN0ZDo6c3RyaW5n
IFJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpOwogCiAg
IC8vIENvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIEVzY2FwZVhtbCB3aGVuIHN0ciBpcyBhbiBh
dHRyaWJ1dGUgdmFsdWUuCi0gIHN0YXRpYyBTdHJpbmcgRXNjYXBlWG1sQXR0cmlidXRlKGNvbnN0
IGNoYXIqIHN0cikgeworICBzdGF0aWMgc3RkOjpzdHJpbmcgRXNjYXBlWG1sQXR0cmlidXRlKGNv
bnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKICAgICByZXR1cm4gRXNjYXBlWG1sKHN0ciwgdHJ1ZSk7
CiAgIH0KIAogICAvLyBDb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCBFc2NhcGVYbWwgd2hlbiBz
dHIgaXMgbm90IGFuIGF0dHJpYnV0ZSB2YWx1ZS4KLSAgc3RhdGljIFN0cmluZyBFc2NhcGVYbWxU
ZXh0KGNvbnN0IGNoYXIqIHN0cikgeyByZXR1cm4gRXNjYXBlWG1sKHN0ciwgZmFsc2UpOyB9Cisg
IHN0YXRpYyBzdGQ6OnN0cmluZyBFc2NhcGVYbWxUZXh0KGNvbnN0IGNoYXIqIHN0cikgeworICAg
IHJldHVybiBFc2NhcGVYbWwoc3RyLCBmYWxzZSk7CisgIH0KKworICAvLyBWZXJpZmllcyB0aGF0
IHRoZSBnaXZlbiBhdHRyaWJ1dGUgYmVsb25ncyB0byB0aGUgZ2l2ZW4gZWxlbWVudCBhbmQKKyAg
Ly8gc3RyZWFtcyB0aGUgYXR0cmlidXRlIGFzIFhNTC4KKyAgc3RhdGljIHZvaWQgT3V0cHV0WG1s
QXR0cmlidXRlKHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGVsZW1lbnRfbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKTsKIAogICAvLyBT
dHJlYW1zIGFuIFhNTCBDREFUQSBzZWN0aW9uLCBlc2NhcGluZyBpbnZhbGlkIENEQVRBIHNlcXVl
bmNlcyBhcyBuZWVkZWQuCiAgIHN0YXRpYyB2b2lkIE91dHB1dFhtbENEYXRhU2VjdGlvbig6OnN0
ZDo6b3N0cmVhbSogc3RyZWFtLCBjb25zdCBjaGFyKiBkYXRhKTsKQEAgLTMwMzUsMTkgKzM0NzMs
MjYgQEAgY2xhc3MgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2
ZW50TGlzdGVuZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0
SW5mbyYgdGVzdF9pbmZvKTsKIAogICAvLyBQcmludHMgYW4gWE1MIHJlcHJlc2VudGF0aW9uIG9m
IGEgVGVzdENhc2Ugb2JqZWN0Ci0gIHN0YXRpYyB2b2lkIFByaW50WG1sVGVzdENhc2UoRklMRSog
b3V0LCBjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKTsKKyAgc3RhdGljIHZvaWQgUHJpbnRYbWxU
ZXN0Q2FzZSg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpOwogCiAgIC8vIFByaW50cyBhbiBYTUwg
c3VtbWFyeSBvZiB1bml0X3Rlc3QgdG8gb3V0cHV0IHN0cmVhbSBvdXQuCi0gIHN0YXRpYyB2b2lk
IFByaW50WG1sVW5pdFRlc3QoRklMRSogb3V0LCBjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KTsK
KyAgc3RhdGljIHZvaWQgUHJpbnRYbWxVbml0VGVzdCg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3Qp
OwogCiAgIC8vIFByb2R1Y2VzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdGVzdCBwcm9wZXJ0
aWVzIGluIGEgcmVzdWx0IGFzIHNwYWNlCiAgIC8vIGRlbGltaXRlZCBYTUwgYXR0cmlidXRlcyBi
YXNlZCBvbiB0aGUgcHJvcGVydHkga2V5PSJ2YWx1ZSIgcGFpcnMuCi0gIC8vIFdoZW4gdGhlIFN0
cmluZyBpcyBub3QgZW1wdHksIGl0IGluY2x1ZGVzIGEgc3BhY2UgYXQgdGhlIGJlZ2lubmluZywK
KyAgLy8gV2hlbiB0aGUgc3RkOjpzdHJpbmcgaXMgbm90IGVtcHR5LCBpdCBpbmNsdWRlcyBhIHNw
YWNlIGF0IHRoZSBiZWdpbm5pbmcsCiAgIC8vIHRvIGRlbGltaXQgdGhpcyBhdHRyaWJ1dGUgZnJv
bSBwcmlvciBhdHRyaWJ1dGVzLgotICBzdGF0aWMgU3RyaW5nIFRlc3RQcm9wZXJ0aWVzQXNYbWxB
dHRyaWJ1dGVzKGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCk7CisgIHN0YXRpYyBzdGQ6OnN0cmlu
ZyBUZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRlcyhjb25zdCBUZXN0UmVzdWx0JiByZXN1bHQp
OworCisgIC8vIFN0cmVhbXMgYW4gWE1MIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0ZXN0IHByb3Bl
cnRpZXMgb2YgYSBUZXN0UmVzdWx0CisgIC8vIG9iamVjdC4KKyAgc3RhdGljIHZvaWQgT3V0cHV0
WG1sVGVzdFByb3BlcnRpZXMoc3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCk7CiAKICAgLy8g
VGhlIG91dHB1dCBmaWxlLgotICBjb25zdCBTdHJpbmcgb3V0cHV0X2ZpbGVfOworICBjb25zdCBz
dGQ6OnN0cmluZyBvdXRwdXRfZmlsZV87CiAKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOXyhYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIpOwogfTsKQEAgLTMwNTUsNDEgKzM1MDAsMjcg
QEAgY2xhc3MgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50
TGlzdGVuZXIgewogLy8gQ3JlYXRlcyBhIG5ldyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIuCiBY
bWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcihjb25zdCBj
aGFyKiBvdXRwdXRfZmlsZSkKICAgICA6IG91dHB1dF9maWxlXyhvdXRwdXRfZmlsZSkgewotICBp
ZiAob3V0cHV0X2ZpbGVfLmNfc3RyKCkgPT0gTlVMTCB8fCBvdXRwdXRfZmlsZV8uZW1wdHkoKSkg
ewotICAgIGZwcmludGYoc3RkZXJyLCAiWE1MIG91dHB1dCBmaWxlIG1heSBub3QgYmUgbnVsbFxu
Iik7Ci0gICAgZmZsdXNoKHN0ZGVycik7Ci0gICAgZXhpdChFWElUX0ZBSUxVUkUpOworICBpZiAo
b3V0cHV0X2ZpbGVfLmVtcHR5KCkpIHsKKyAgICBHVEVTVF9MT0dfKEZBVEFMKSA8PCAiWE1MIG91
dHB1dCBmaWxlIG1heSBub3QgYmUgbnVsbCI7CiAgIH0KIH0KIAogLy8gQ2FsbGVkIGFmdGVyIHRo
ZSB1bml0IHRlc3QgZW5kcy4KIHZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RJ
dGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IC8qaXRlcmF0aW9uKi8pIHsKLSAg
RklMRSogeG1sb3V0ID0gTlVMTDsKLSAgRmlsZVBhdGggb3V0cHV0X2ZpbGUob3V0cHV0X2ZpbGVf
KTsKLSAgRmlsZVBhdGggb3V0cHV0X2RpcihvdXRwdXRfZmlsZS5SZW1vdmVGaWxlTmFtZSgpKTsK
KyAgRklMRSogeG1sb3V0ID0gT3BlbkZpbGVGb3JXcml0aW5nKG91dHB1dF9maWxlXyk7CisgIHN0
ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgUHJpbnRYbWxVbml0VGVzdCgmc3RyZWFtLCB1bml0
X3Rlc3QpOworICBmcHJpbnRmKHhtbG91dCwgIiVzIiwgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnN0
cmVhbSkuY19zdHIoKSk7CisgIGZjbG9zZSh4bWxvdXQpOworfQogCi0gIGlmIChvdXRwdXRfZGly
LkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKSkgewotICAgIHhtbG91dCA9IHBvc2l4OjpG
T3BlbihvdXRwdXRfZmlsZV8uY19zdHIoKSwgInciKTsKLSAgfQotICBpZiAoeG1sb3V0ID09IE5V
TEwpIHsKLSAgICAvLyBUT0RPKHdhbik6IHJlcG9ydCB0aGUgcmVhc29uIG9mIHRoZSBmYWlsdXJl
LgotICAgIC8vCi0gICAgLy8gV2UgZG9uJ3QgZG8gaXQgZm9yIG5vdyBhczoKLSAgICAvLwotICAg
IC8vICAgMS4gVGhlcmUgaXMgbm8gdXJnZW50IG5lZWQgZm9yIGl0LgotICAgIC8vICAgMi4gSXQn
cyBhIGJpdCBpbnZvbHZlZCB0byBtYWtlIHRoZSBlcnJubyB2YXJpYWJsZSB0aHJlYWQtc2FmZSBv
bgotICAgIC8vICAgICAgYWxsIHRocmVlIG9wZXJhdGluZyBzeXN0ZW1zIChMaW51eCwgV2luZG93
cywgYW5kIE1hYyBPUykuCi0gICAgLy8gICAzLiBUbyBpbnRlcnByZXQgdGhlIG1lYW5pbmcgb2Yg
ZXJybm8gaW4gYSB0aHJlYWQtc2FmZSB3YXksCi0gICAgLy8gICAgICB3ZSBuZWVkIHRoZSBzdHJl
cnJvcl9yKCkgZnVuY3Rpb24sIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgb24KLSAgICAvLyAgICAg
IFdpbmRvd3MuCi0gICAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAgICAiVW5hYmxlIHRvIG9w
ZW4gZmlsZSBcIiVzXCJcbiIsCi0gICAgICAgICAgICBvdXRwdXRfZmlsZV8uY19zdHIoKSk7Ci0g
ICAgZmZsdXNoKHN0ZGVycik7Ci0gICAgZXhpdChFWElUX0ZBSUxVUkUpOwotICB9Ci0gIFByaW50
WG1sVW5pdFRlc3QoeG1sb3V0LCB1bml0X3Rlc3QpOwordm9pZCBYbWxVbml0VGVzdFJlc3VsdFBy
aW50ZXI6Okxpc3RUZXN0c01hdGNoaW5nRmlsdGVyKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFRl
c3RDYXNlKj4mIHRlc3RfY2FzZXMpIHsKKyAgRklMRSogeG1sb3V0ID0gT3BlbkZpbGVGb3JXcml0
aW5nKG91dHB1dF9maWxlXyk7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgUHJpbnRY
bWxUZXN0c0xpc3QoJnN0cmVhbSwgdGVzdF9jYXNlcyk7CisgIGZwcmludGYoeG1sb3V0LCAiJXMi
LCBTdHJpbmdTdHJlYW1Ub1N0cmluZygmc3RyZWFtKS5jX3N0cigpKTsKICAgZmNsb3NlKHhtbG91
dCk7CiB9CiAKQEAgLTMxMDMsNDQgKzM1MzQsNDUgQEAgdm9pZCBYbWxVbml0VGVzdFJlc3VsdFBy
aW50ZXI6Ok9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LAogLy8g
bW9kdWxlIHdpbGwgY29uc2lzdCBvZiBvcmRpbmFyeSBFbmdsaXNoIHRleHQuCiAvLyBJZiB0aGlz
IG1vZHVsZSBpcyBldmVyIG1vZGlmaWVkIHRvIHByb2R1Y2UgdmVyc2lvbiAxLjEgWE1MIG91dHB1
dCwKIC8vIG1vc3QgaW52YWxpZCBjaGFyYWN0ZXJzIGNhbiBiZSByZXRhaW5lZCB1c2luZyBjaGFy
YWN0ZXIgcmVmZXJlbmNlcy4KLS8vIFRPRE8od2FuKTogSXQgbWlnaHQgYmUgbmljZSB0byBoYXZl
IGEgbWluaW1hbGx5IGludmFzaXZlLCBodW1hbi1yZWFkYWJsZQorLy8gRklYTUU6IEl0IG1pZ2h0
IGJlIG5pY2UgdG8gaGF2ZSBhIG1pbmltYWxseSBpbnZhc2l2ZSwgaHVtYW4tcmVhZGFibGUKIC8v
IGVzY2FwaW5nIHNjaGVtZSBmb3IgaW52YWxpZCBjaGFyYWN0ZXJzLCByYXRoZXIgdGhhbiBkcm9w
cGluZyB0aGVtLgotU3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6RXNjYXBlWG1sKGNv
bnN0IGNoYXIqIHN0ciwgYm9vbCBpc19hdHRyaWJ1dGUpIHsKK3N0ZDo6c3RyaW5nIFhtbFVuaXRU
ZXN0UmVzdWx0UHJpbnRlcjo6RXNjYXBlWG1sKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIs
IGJvb2wgaXNfYXR0cmlidXRlKSB7CiAgIE1lc3NhZ2UgbTsKIAotICBpZiAoc3RyICE9IE5VTEwp
IHsKLSAgICBmb3IgKGNvbnN0IGNoYXIqIHNyYyA9IHN0cjsgKnNyYzsgKytzcmMpIHsKLSAgICAg
IHN3aXRjaCAoKnNyYykgewotICAgICAgICBjYXNlICc8JzoKLSAgICAgICAgICBtIDw8ICImbHQ7
IjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnPic6Ci0gICAgICAgICAgbSA8PCAi
Jmd0OyI7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJyYnOgotICAgICAgICAgIG0g
PDwgIiZhbXA7IjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnXCcnOgotICAgICAg
ICAgIGlmIChpc19hdHRyaWJ1dGUpCi0gICAgICAgICAgICBtIDw8ICImYXBvczsiOwotICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG0gPDwgJ1wnJzsKLSAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSAnIic6Ci0gICAgICAgICAgaWYgKGlzX2F0dHJpYnV0ZSkKLSAgICAgICAgICAgIG0g
PDwgIiZxdW90OyI7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyLnNpemUoKTsgKytpKSB7
CisgICAgY29uc3QgY2hhciBjaCA9IHN0cltpXTsKKyAgICBzd2l0Y2ggKGNoKSB7CisgICAgICBj
YXNlICc8JzoKKyAgICAgICAgbSA8PCAiJmx0OyI7CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSAnPic6CisgICAgICAgIG0gPDwgIiZndDsiOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
JyYnOgorICAgICAgICBtIDw8ICImYW1wOyI7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAn
XCcnOgorICAgICAgICBpZiAoaXNfYXR0cmlidXRlKQorICAgICAgICAgIG0gPDwgIiZhcG9zOyI7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICBtIDw8ICdcJyc7CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSAnIic6CisgICAgICAgIGlmIChpc19hdHRyaWJ1dGUpCisgICAgICAgICAgbSA8PCAi
JnF1b3Q7IjsKKyAgICAgICAgZWxzZQorICAgICAgICAgIG0gPDwgJyInOworICAgICAgICBicmVh
azsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChJc1ZhbGlkWG1sQ2hhcmFjdGVyKGNoKSkg
eworICAgICAgICAgIGlmIChpc19hdHRyaWJ1dGUgJiYgSXNOb3JtYWxpemFibGVXaGl0ZXNwYWNl
KGNoKSkKKyAgICAgICAgICAgIG0gPDwgIiYjeCIgPDwgU3RyaW5nOjpGb3JtYXRCeXRlKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkKKyAgICAgICAgICAgICAgPDwgIjsiOwogICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG0gPDwgJyInOwotICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgIGlmIChJc1ZhbGlkWG1sQ2hhcmFjdGVyKCpzcmMpKSB7Ci0g
ICAgICAgICAgICBpZiAoaXNfYXR0cmlidXRlICYmIElzTm9ybWFsaXphYmxlV2hpdGVzcGFjZSgq
c3JjKSkKLSAgICAgICAgICAgICAgbSA8PCBTdHJpbmc6OkZvcm1hdCgiJiN4JTAyWDsiLCB1bnNp
Z25lZCgqc3JjKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIG0gPDwgKnNyYzsK
LSAgICAgICAgICB9Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICB9CisgICAgICAgICAgICBtIDw8
IGNoOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgfQogCkBAIC0zMTUwLDIx
ICszNTgyLDIwIEBAIFN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OkVzY2FwZVhtbChj
b25zdCBjaGFyKiBzdHIsIGJvb2wgaXNfYXR0cmlidXRlKSB7CiAvLyBSZXR1cm5zIHRoZSBnaXZl
biBzdHJpbmcgd2l0aCBhbGwgY2hhcmFjdGVycyBpbnZhbGlkIGluIFhNTCByZW1vdmVkLgogLy8g
Q3VycmVudGx5IGludmFsaWQgY2hhcmFjdGVycyBhcmUgZHJvcHBlZCBmcm9tIHRoZSBzdHJpbmcu
IEFuCiAvLyBhbHRlcm5hdGl2ZSBpcyB0byByZXBsYWNlIHRoZW0gd2l0aCBjZXJ0YWluIGNoYXJh
Y3RlcnMgc3VjaCBhcyAuIG9yID8uCi1TdHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpS
ZW1vdmVJbnZhbGlkWG1sQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBzdHIpIHsKLSAgY2hhciogY29u
c3Qgb3V0cHV0ID0gbmV3IGNoYXJbc3RybGVuKHN0cikgKyAxXTsKLSAgY2hhciogYXBwZW5kZXIg
PSBvdXRwdXQ7Ci0gIGZvciAoY2hhciBjaCA9ICpzdHI7IGNoICE9ICdcMCc7IGNoID0gKisrc3Ry
KQotICAgIGlmIChJc1ZhbGlkWG1sQ2hhcmFjdGVyKGNoKSkKLSAgICAgICphcHBlbmRlcisrID0g
Y2g7Ci0gICphcHBlbmRlciA9ICdcMCc7CitzdGQ6OnN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFBy
aW50ZXI6OlJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBzdHIpIHsKKyAgc3RkOjpzdHJpbmcgb3V0cHV0OworICBvdXRwdXQucmVzZXJ2ZShzdHIuc2l6
ZSgpKTsKKyAgZm9yIChzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzdHIuYmVnaW4o
KTsgaXQgIT0gc3RyLmVuZCgpOyArK2l0KQorICAgIGlmIChJc1ZhbGlkWG1sQ2hhcmFjdGVyKCpp
dCkpCisgICAgICBvdXRwdXQucHVzaF9iYWNrKCppdCk7CiAKLSAgU3RyaW5nIHJldF92YWx1ZShv
dXRwdXQpOwotICBkZWxldGVbXSBvdXRwdXQ7Ci0gIHJldHVybiByZXRfdmFsdWU7CisgIHJldHVy
biBvdXRwdXQ7CiB9CiAKIC8vIFRoZSBmb2xsb3dpbmcgcm91dGluZXMgZ2VuZXJhdGUgYW4gWE1M
IHJlcHJlc2VudGF0aW9uIG9mIGEgVW5pdFRlc3QKIC8vIG9iamVjdC4KKy8vIEdPT0dMRVRFU1Rf
Q00wMDA5IERPIE5PVCBERUxFVEUKIC8vCiAvLyBUaGlzIGlzIGhvdyBHb29nbGUgVGVzdCBjb25j
ZXB0cyBtYXAgdG8gdGhlIERURDoKIC8vCkBAIC0zMTgyLDEwICszNjEzLDQxIEBAIFN0cmluZyBY
bWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGNvbnN0
IGNoYXIqIHN0cikgewogLy8gRm9ybWF0cyB0aGUgZ2l2ZW4gdGltZSBpbiBtaWxsaXNlY29uZHMg
YXMgc2Vjb25kcy4KIHN0ZDo6c3RyaW5nIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyhUaW1l
SW5NaWxsaXMgbXMpIHsKICAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKLSAgc3MgPDwgbXMvMTAw
MC4wOworICBzcyA8PCAoc3RhdGljX2Nhc3Q8ZG91YmxlPihtcykgKiAxZS0zKTsKICAgcmV0dXJu
IHNzLnN0cigpOwogfQogCitzdGF0aWMgYm9vbCBQb3J0YWJsZUxvY2FsdGltZSh0aW1lX3Qgc2Vj
b25kcywgc3RydWN0IHRtKiBvdXQpIHsKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorICByZXR1cm4g
bG9jYWx0aW1lX3Mob3V0LCAmc2Vjb25kcykgPT0gMDsKKyNlbGlmIGRlZmluZWQoX19NSU5HVzMy
X18pIHx8IGRlZmluZWQoX19NSU5HVzY0X18pCisgIC8vIE1JTkdXIDx0aW1lLmg+IHByb3ZpZGVz
IG5laXRoZXIgbG9jYWx0aW1lX3Igbm9yIGxvY2FsdGltZV9zLCBidXQgdXNlcworICAvLyBXaW5k
b3dzJyBsb2NhbHRpbWUoKSwgd2hpY2ggaGFzIGEgdGhyZWFkLWxvY2FsIHRtIGJ1ZmZlci4KKyAg
c3RydWN0IHRtKiB0bV9wdHIgPSBsb2NhbHRpbWUoJnNlY29uZHMpOyAgLy8gTk9MSU5UCisgIGlm
ICh0bV9wdHIgPT0gTlVMTCkKKyAgICByZXR1cm4gZmFsc2U7CisgICpvdXQgPSAqdG1fcHRyOwor
ICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgIHJldHVybiBsb2NhbHRpbWVfcigmc2Vjb25kcywgb3V0
KSAhPSBOVUxMOworI2VuZGlmCit9CisKKy8vIENvbnZlcnRzIHRoZSBnaXZlbiBlcG9jaCB0aW1l
IGluIG1pbGxpc2Vjb25kcyB0byBhIGRhdGUgc3RyaW5nIGluIHRoZSBJU08KKy8vIDg2MDEgZm9y
bWF0LCB3aXRob3V0IHRoZSB0aW1lem9uZSBpbmZvcm1hdGlvbi4KK3N0ZDo6c3RyaW5nIEZvcm1h
dEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKFRpbWVJbk1pbGxpcyBtcykgeworICBzdHJ1Y3Qg
dG0gdGltZV9zdHJ1Y3Q7CisgIGlmICghUG9ydGFibGVMb2NhbHRpbWUoc3RhdGljX2Nhc3Q8dGlt
ZV90PihtcyAvIDEwMDApLCAmdGltZV9zdHJ1Y3QpKQorICAgIHJldHVybiAiIjsKKyAgLy8gWVlZ
WS1NTS1ERFRoaDptbTpzcworICByZXR1cm4gU3RyZWFtYWJsZVRvU3RyaW5nKHRpbWVfc3RydWN0
LnRtX3llYXIgKyAxOTAwKSArICItIiArCisgICAgICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0
aW1lX3N0cnVjdC50bV9tb24gKyAxKSArICItIiArCisgICAgICBTdHJpbmc6OkZvcm1hdEludFdp
ZHRoMih0aW1lX3N0cnVjdC50bV9tZGF5KSArICJUIiArCisgICAgICBTdHJpbmc6OkZvcm1hdElu
dFdpZHRoMih0aW1lX3N0cnVjdC50bV9ob3VyKSArICI6IiArCisgICAgICBTdHJpbmc6OkZvcm1h
dEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9taW4pICsgIjoiICsKKyAgICAgIFN0cmluZzo6Rm9y
bWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX3NlYyk7Cit9CisKIC8vIFN0cmVhbXMgYW4gWE1M
IENEQVRBIHNlY3Rpb24sIGVzY2FwaW5nIGludmFsaWQgQ0RBVEEgc2VxdWVuY2VzIGFzIG5lZWRl
ZC4KIHZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPdXRwdXRYbWxDRGF0YVNlY3Rpb24o
OjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSkgewpAQCAtMzIwNiw4OSArMzY2
OCwxNzkgQEAgdm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dFhtbENEYXRhU2Vj
dGlvbig6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAogICAqc3RyZWFtIDw8ICJdXT4iOwogfQogCit2
b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T3V0cHV0WG1sQXR0cmlidXRlKAorICAgIHN0
ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBlbGVtZW50X25hbWUs
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZh
bHVlKSB7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgYWxsb3dlZF9uYW1lcyA9
CisgICAgICBHZXRSZXNlcnZlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KGVsZW1lbnRfbmFtZSk7CisK
KyAgR1RFU1RfQ0hFQ0tfKHN0ZDo6ZmluZChhbGxvd2VkX25hbWVzLmJlZ2luKCksIGFsbG93ZWRf
bmFtZXMuZW5kKCksIG5hbWUpICE9CisgICAgICAgICAgICAgICAgICAgYWxsb3dlZF9uYW1lcy5l
bmQoKSkKKyAgICAgIDw8ICJBdHRyaWJ1dGUgIiA8PCBuYW1lIDw8ICIgaXMgbm90IGFsbG93ZWQg
Zm9yIGVsZW1lbnQgPCIgPDwgZWxlbWVudF9uYW1lCisgICAgICA8PCAiPi4iOworCisgICpzdHJl
YW0gPDwgIiAiIDw8IG5hbWUgPDwgIj1cIiIgPDwgRXNjYXBlWG1sQXR0cmlidXRlKHZhbHVlKSA8
PCAiXCIiOworfQorCiAvLyBQcmludHMgYW4gWE1MIHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdElu
Zm8gb2JqZWN0LgotLy8gVE9ETyh3YW4pOiBUaGVyZSBpcyBhbHNvIHZhbHVlIGluIHByaW50aW5n
IHByb3BlcnRpZXMgd2l0aCB0aGUgcGxhaW4gcHJpbnRlci4KKy8vIEZJWE1FOiBUaGVyZSBpcyBh
bHNvIHZhbHVlIGluIHByaW50aW5nIHByb3BlcnRpZXMgd2l0aCB0aGUgcGxhaW4gcHJpbnRlci4K
IHZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPdXRwdXRYbWxUZXN0SW5mbyg6OnN0ZDo6
b3N0cmVhbSogc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8p
IHsKICAgY29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0ID0gKnRlc3RfaW5mby5yZXN1bHQoKTsKLSAg
KnN0cmVhbSA8PCAiICAgIDx0ZXN0Y2FzZSBuYW1lPVwiIgotICAgICAgICAgIDw8IEVzY2FwZVht
bEF0dHJpYnV0ZSh0ZXN0X2luZm8ubmFtZSgpKS5jX3N0cigpCi0gICAgICAgICAgPDwgIlwiIHN0
YXR1cz1cIiIKLSAgICAgICAgICA8PCAodGVzdF9pbmZvLnNob3VsZF9ydW4oKSA/ICJydW4iIDog
Im5vdHJ1biIpCi0gICAgICAgICAgPDwgIlwiIHRpbWU9XCIiCi0gICAgICAgICAgPDwgRm9ybWF0
VGltZUluTWlsbGlzQXNTZWNvbmRzKHJlc3VsdC5lbGFwc2VkX3RpbWUoKSkKLSAgICAgICAgICA8
PCAiXCIgY2xhc3NuYW1lPVwiIiA8PCBFc2NhcGVYbWxBdHRyaWJ1dGUodGVzdF9jYXNlX25hbWUp
LmNfc3RyKCkKLSAgICAgICAgICA8PCAiXCIiIDw8IFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1
dGVzKHJlc3VsdCkuY19zdHIoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RjYXNlID0gInRl
c3RjYXNlIjsKKworICBpZiAodGVzdF9pbmZvLmlzX2luX2Fub3RoZXJfc2hhcmQoKSkgeworICAg
IHJldHVybjsKKyAgfQorCisgICpzdHJlYW0gPDwgIiAgICA8dGVzdGNhc2UiOworICBPdXRwdXRY
bWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJuYW1lIiwgdGVzdF9pbmZvLm5hbWUoKSk7
CisKKyAgaWYgKHRlc3RfaW5mby52YWx1ZV9wYXJhbSgpICE9IE5VTEwpIHsKKyAgICBPdXRwdXRY
bWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJ2YWx1ZV9wYXJhbSIsCisgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RfaW5mby52YWx1ZV9wYXJhbSgpKTsKKyAgfQorICBpZiAodGVzdF9p
bmZvLnR5cGVfcGFyYW0oKSAhPSBOVUxMKSB7CisgICAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVh
bSwga1Rlc3RjYXNlLCAidHlwZV9wYXJhbSIsIHRlc3RfaW5mby50eXBlX3BhcmFtKCkpOworICB9
CisgIGlmIChHVEVTVF9GTEFHKGxpc3RfdGVzdHMpKSB7CisgICAgT3V0cHV0WG1sQXR0cmlidXRl
KHN0cmVhbSwga1Rlc3RjYXNlLCAiZmlsZSIsIHRlc3RfaW5mby5maWxlKCkpOworICAgIE91dHB1
dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgImxpbmUiLAorICAgICAgICAgICAgICAg
ICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodGVzdF9pbmZvLmxpbmUoKSkpOworICAgICpzdHJl
YW0gPDwgIiAvPlxuIjsKKyAgICByZXR1cm47CisgIH0KKworICBPdXRwdXRYbWxBdHRyaWJ1dGUo
c3RyZWFtLCBrVGVzdGNhc2UsICJzdGF0dXMiLAorICAgICAgICAgICAgICAgICAgICAgdGVzdF9p
bmZvLnNob3VsZF9ydW4oKSA/ICJydW4iIDogIm5vdHJ1biIpOworICBPdXRwdXRYbWxBdHRyaWJ1
dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJ0aW1lIiwKKyAgICAgICAgICAgICAgICAgICAgIEZvcm1h
dFRpbWVJbk1pbGxpc0FzU2Vjb25kcyhyZXN1bHQuZWxhcHNlZF90aW1lKCkpKTsKKyAgT3V0cHV0
WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNlLCAiY2xhc3NuYW1lIiwgdGVzdF9jYXNlX25h
bWUpOwogCiAgIGludCBmYWlsdXJlcyA9IDA7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0
LnRvdGFsX3BhcnRfY291bnQoKTsgKytpKSB7CiAgICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIHBh
cnQgPSByZXN1bHQuR2V0VGVzdFBhcnRSZXN1bHQoaSk7CiAgICAgaWYgKHBhcnQuZmFpbGVkKCkp
IHsKLSAgICAgIGlmICgrK2ZhaWx1cmVzID09IDEpCisgICAgICBpZiAoKytmYWlsdXJlcyA9PSAx
KSB7CiAgICAgICAgICpzdHJlYW0gPDwgIj5cbiI7CisgICAgICB9CisgICAgICBjb25zdCBzdGQ6
OnN0cmluZyBsb2NhdGlvbiA9CisgICAgICAgICAgaW50ZXJuYWw6OkZvcm1hdENvbXBpbGVySW5k
ZXBlbmRlbnRGaWxlTG9jYXRpb24ocGFydC5maWxlX25hbWUoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0LmxpbmVfbnVtYmVy
KCkpOworICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgc3VtbWFyeSA9IGxvY2F0aW9uICsgIlxuIiAr
IHBhcnQuc3VtbWFyeSgpOwogICAgICAgKnN0cmVhbSA8PCAiICAgICAgPGZhaWx1cmUgbWVzc2Fn
ZT1cIiIKLSAgICAgICAgICAgICAgPDwgRXNjYXBlWG1sQXR0cmlidXRlKHBhcnQuc3VtbWFyeSgp
KS5jX3N0cigpCisgICAgICAgICAgICAgIDw8IEVzY2FwZVhtbEF0dHJpYnV0ZShzdW1tYXJ5LmNf
c3RyKCkpCiAgICAgICAgICAgICAgIDw8ICJcIiB0eXBlPVwiXCI+IjsKLSAgICAgIGNvbnN0IFN0
cmluZyBtZXNzYWdlID0gUmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoU3RyaW5nOjpGb3JtYXQo
Ci0gICAgICAgICAgIiVzOiVkXG4lcyIsCi0gICAgICAgICAgcGFydC5maWxlX25hbWUoKSwgcGFy
dC5saW5lX251bWJlcigpLAotICAgICAgICAgIHBhcnQubWVzc2FnZSgpKS5jX3N0cigpKTsKLSAg
ICAgIE91dHB1dFhtbENEYXRhU2VjdGlvbihzdHJlYW0sIG1lc3NhZ2UuY19zdHIoKSk7CisgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyBkZXRhaWwgPSBsb2NhdGlvbiArICJcbiIgKyBwYXJ0Lm1lc3Nh
Z2UoKTsKKyAgICAgIE91dHB1dFhtbENEYXRhU2VjdGlvbihzdHJlYW0sIFJlbW92ZUludmFsaWRY
bWxDaGFyYWN0ZXJzKGRldGFpbCkuY19zdHIoKSk7CiAgICAgICAqc3RyZWFtIDw8ICI8L2ZhaWx1
cmU+XG4iOwogICAgIH0KICAgfQogCi0gIGlmIChmYWlsdXJlcyA9PSAwKQorICBpZiAoZmFpbHVy
ZXMgPT0gMCAmJiByZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpID09IDApIHsKICAgICAqc3Ry
ZWFtIDw8ICIgLz5cbiI7Ci0gIGVsc2UKKyAgfSBlbHNlIHsKKyAgICBpZiAoZmFpbHVyZXMgPT0g
MCkgeworICAgICAgKnN0cmVhbSA8PCAiPlxuIjsKKyAgICB9CisgICAgT3V0cHV0WG1sVGVzdFBy
b3BlcnRpZXMoc3RyZWFtLCByZXN1bHQpOwogICAgICpzdHJlYW0gPDwgIiAgICA8L3Rlc3RjYXNl
PlxuIjsKKyAgfQogfQogCiAvLyBQcmludHMgYW4gWE1MIHJlcHJlc2VudGF0aW9uIG9mIGEgVGVz
dENhc2Ugb2JqZWN0Ci12b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRYbWxUZXN0
Q2FzZShGSUxFKiBvdXQsCit2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRYbWxU
ZXN0Q2FzZShzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKLSAgZnBy
aW50ZihvdXQsCi0gICAgICAgICAgIiAgPHRlc3RzdWl0ZSBuYW1lPVwiJXNcIiB0ZXN0cz1cIiVk
XCIgZmFpbHVyZXM9XCIlZFwiICIKLSAgICAgICAgICAiZGlzYWJsZWQ9XCIlZFwiICIsCi0gICAg
ICAgICAgRXNjYXBlWG1sQXR0cmlidXRlKHRlc3RfY2FzZS5uYW1lKCkpLmNfc3RyKCksCi0gICAg
ICAgICAgdGVzdF9jYXNlLnRvdGFsX3Rlc3RfY291bnQoKSwKLSAgICAgICAgICB0ZXN0X2Nhc2Uu
ZmFpbGVkX3Rlc3RfY291bnQoKSwKLSAgICAgICAgICB0ZXN0X2Nhc2UuZGlzYWJsZWRfdGVzdF9j
b3VudCgpKTsKLSAgZnByaW50ZihvdXQsCi0gICAgICAgICAgImVycm9ycz1cIjBcIiB0aW1lPVwi
JXNcIj5cbiIsCi0gICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKHRlc3RfY2Fz
ZS5lbGFwc2VkX3RpbWUoKSkuY19zdHIoKSk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0c3Vp
dGUgPSAidGVzdHN1aXRlIjsKKyAgKnN0cmVhbSA8PCAiICA8IiA8PCBrVGVzdHN1aXRlOworICBP
dXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlLCAibmFtZSIsIHRlc3RfY2FzZS5u
YW1lKCkpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlLCAidGVzdHMi
LAorICAgICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHRlc3RfY2FzZS5yZXBv
cnRhYmxlX3Rlc3RfY291bnQoKSkpOworICBpZiAoIUdURVNUX0ZMQUcobGlzdF90ZXN0cykpIHsK
KyAgICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlLCAiZmFpbHVyZXMiLAor
ICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodGVzdF9jYXNlLmZhaWxl
ZF90ZXN0X2NvdW50KCkpKTsKKyAgICBPdXRwdXRYbWxBdHRyaWJ1dGUoCisgICAgICAgIHN0cmVh
bSwga1Rlc3RzdWl0ZSwgImRpc2FibGVkIiwKKyAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHRl
c3RfY2FzZS5yZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSkpOworICAgIE91dHB1dFht
bEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUsICJlcnJvcnMiLCAiMCIpOworICAgIE91dHB1
dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUsICJ0aW1lIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKHRlc3RfY2FzZS5lbGFwc2VkX3Rp
bWUoKSkpOworICAgICpzdHJlYW0gPDwgVGVzdFByb3BlcnRpZXNBc1htbEF0dHJpYnV0ZXModGVz
dF9jYXNlLmFkX2hvY190ZXN0X3Jlc3VsdCgpKTsKKyAgfQorICAqc3RyZWFtIDw8ICI+XG4iOwog
ICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RfY2FzZS50b3RhbF90ZXN0X2NvdW50KCk7ICsraSkg
ewotICAgIFN0clN0cmVhbSBzdHJlYW07Ci0gICAgT3V0cHV0WG1sVGVzdEluZm8oJnN0cmVhbSwg
dGVzdF9jYXNlLm5hbWUoKSwgKnRlc3RfY2FzZS5HZXRUZXN0SW5mbyhpKSk7Ci0gICAgZnByaW50
ZihvdXQsICIlcyIsIFN0clN0cmVhbVRvU3RyaW5nKCZzdHJlYW0pLmNfc3RyKCkpOworICAgIGlm
ICh0ZXN0X2Nhc2UuR2V0VGVzdEluZm8oaSktPmlzX3JlcG9ydGFibGUoKSkKKyAgICAgIE91dHB1
dFhtbFRlc3RJbmZvKHN0cmVhbSwgdGVzdF9jYXNlLm5hbWUoKSwgKnRlc3RfY2FzZS5HZXRUZXN0
SW5mbyhpKSk7CiAgIH0KLSAgZnByaW50ZihvdXQsICIgIDwvdGVzdHN1aXRlPlxuIik7CisgICpz
dHJlYW0gPDwgIiAgPC8iIDw8IGtUZXN0c3VpdGUgPDwgIj5cbiI7CiB9CiAKIC8vIFByaW50cyBh
biBYTUwgc3VtbWFyeSBvZiB1bml0X3Rlc3QgdG8gb3V0cHV0IHN0cmVhbSBvdXQuCi12b2lkIFht
bFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRYbWxVbml0VGVzdChGSUxFKiBvdXQsCit2b2lk
IFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRYbWxVbml0VGVzdChzdGQ6Om9zdHJlYW0q
IHN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpIHsKLSAgZnByaW50ZihvdXQsICI8P3htbCB2ZXJz
aW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz5cbiIpOwotICBmcHJpbnRmKG91dCwKLSAg
ICAgICAgICAiPHRlc3RzdWl0ZXMgdGVzdHM9XCIlZFwiIGZhaWx1cmVzPVwiJWRcIiBkaXNhYmxl
ZD1cIiVkXCIgIgotICAgICAgICAgICJlcnJvcnM9XCIwXCIgdGltZT1cIiVzXCIgIiwKLSAgICAg
ICAgICB1bml0X3Rlc3QudG90YWxfdGVzdF9jb3VudCgpLAotICAgICAgICAgIHVuaXRfdGVzdC5m
YWlsZWRfdGVzdF9jb3VudCgpLAotICAgICAgICAgIHVuaXRfdGVzdC5kaXNhYmxlZF90ZXN0X2Nv
dW50KCksCi0gICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKHVuaXRfdGVzdC5l
bGFwc2VkX3RpbWUoKSkuY19zdHIoKSk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0c3VpdGVz
ID0gInRlc3RzdWl0ZXMiOworCisgICpzdHJlYW0gPDwgIjw/eG1sIHZlcnNpb249XCIxLjBcIiBl
bmNvZGluZz1cIlVURi04XCI/PlxuIjsKKyAgKnN0cmVhbSA8PCAiPCIgPDwga1Rlc3RzdWl0ZXM7
CisKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0ZXN0cyIsCisg
ICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodW5pdF90ZXN0LnJlcG9ydGFi
bGVfdGVzdF9jb3VudCgpKSk7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3Vp
dGVzLCAiZmFpbHVyZXMiLAorICAgICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5n
KHVuaXRfdGVzdC5mYWlsZWRfdGVzdF9jb3VudCgpKSk7CisgIE91dHB1dFhtbEF0dHJpYnV0ZSgK
KyAgICAgIHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJkaXNhYmxlZCIsCisgICAgICBTdHJlYW1hYmxl
VG9TdHJpbmcodW5pdF90ZXN0LnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpKSk7Cisg
IE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGVzLCAiZXJyb3JzIiwgIjAiKTsK
KyAgT3V0cHV0WG1sQXR0cmlidXRlKAorICAgICAgc3RyZWFtLCBrVGVzdHN1aXRlcywgInRpbWVz
dGFtcCIsCisgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSh1bml0X3Rlc3Qu
c3RhcnRfdGltZXN0YW1wKCkpKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3Rz
dWl0ZXMsICJ0aW1lIiwKKyAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0Fz
U2Vjb25kcyh1bml0X3Rlc3QuZWxhcHNlZF90aW1lKCkpKTsKKwogICBpZiAoR1RFU1RfRkxBRyhz
aHVmZmxlKSkgewotICAgIGZwcmludGYob3V0LCAicmFuZG9tX3NlZWQ9XCIlZFwiICIsIHVuaXRf
dGVzdC5yYW5kb21fc2VlZCgpKTsKKyAgICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVz
dHN1aXRlcywgInJhbmRvbV9zZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgU3RyZWFtYWJs
ZVRvU3RyaW5nKHVuaXRfdGVzdC5yYW5kb21fc2VlZCgpKSk7CisgIH0KKyAgKnN0cmVhbSA8PCBU
ZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRlcyh1bml0X3Rlc3QuYWRfaG9jX3Rlc3RfcmVzdWx0
KCkpOworCisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGVzLCAibmFtZSIs
ICJBbGxUZXN0cyIpOworICAqc3RyZWFtIDw8ICI+XG4iOworCisgIGZvciAoaW50IGkgPSAwOyBp
IDwgdW5pdF90ZXN0LnRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpOyArK2kpIHsKKyAgICBpZiAodW5p
dF90ZXN0LkdldFRlc3RDYXNlKGkpLT5yZXBvcnRhYmxlX3Rlc3RfY291bnQoKSA+IDApCisgICAg
ICBQcmludFhtbFRlc3RDYXNlKHN0cmVhbSwgKnVuaXRfdGVzdC5HZXRUZXN0Q2FzZShpKSk7CiAg
IH0KLSAgZnByaW50ZihvdXQsICJuYW1lPVwiQWxsVGVzdHNcIj5cbiIpOwotICBmb3IgKGludCBp
ID0gMDsgaSA8IHVuaXRfdGVzdC50b3RhbF90ZXN0X2Nhc2VfY291bnQoKTsgKytpKQotICAgIFBy
aW50WG1sVGVzdENhc2Uob3V0LCAqdW5pdF90ZXN0LkdldFRlc3RDYXNlKGkpKTsKLSAgZnByaW50
ZihvdXQsICI8L3Rlc3RzdWl0ZXM+XG4iKTsKKyAgKnN0cmVhbSA8PCAiPC8iIDw8IGtUZXN0c3Vp
dGVzIDw8ICI+XG4iOworfQorCit2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRY
bWxUZXN0c0xpc3QoCisgICAgc3RkOjpvc3RyZWFtKiBzdHJlYW0sIGNvbnN0IHN0ZDo6dmVjdG9y
PFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RzdWl0
ZXMgPSAidGVzdHN1aXRlcyI7CisKKyAgKnN0cmVhbSA8PCAiPD94bWwgdmVyc2lvbj1cIjEuMFwi
IGVuY29kaW5nPVwiVVRGLThcIj8+XG4iOworICAqc3RyZWFtIDw8ICI8IiA8PCBrVGVzdHN1aXRl
czsKKworICBpbnQgdG90YWxfdGVzdHMgPSAwOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRl
c3RfY2FzZXMuc2l6ZSgpOyArK2kpIHsKKyAgICB0b3RhbF90ZXN0cyArPSB0ZXN0X2Nhc2VzW2ld
LT50b3RhbF90ZXN0X2NvdW50KCk7CisgIH0KKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwg
a1Rlc3RzdWl0ZXMsICJ0ZXN0cyIsCisgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9T
dHJpbmcodG90YWxfdGVzdHMpKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3Rz
dWl0ZXMsICJuYW1lIiwgIkFsbFRlc3RzIik7CisgICpzdHJlYW0gPDwgIj5cbiI7CisKKyAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0X2Nhc2VzLnNpemUoKTsgKytpKSB7CisgICAgUHJpbnRY
bWxUZXN0Q2FzZShzdHJlYW0sICp0ZXN0X2Nhc2VzW2ldKTsKKyAgfQorICAqc3RyZWFtIDw8ICI8
LyIgPDwga1Rlc3RzdWl0ZXMgPDwgIj5cbiI7CiB9CiAKIC8vIFByb2R1Y2VzIGEgc3RyaW5nIHJl
cHJlc2VudGluZyB0aGUgdGVzdCBwcm9wZXJ0aWVzIGluIGEgcmVzdWx0IGFzIHNwYWNlCiAvLyBk
ZWxpbWl0ZWQgWE1MIGF0dHJpYnV0ZXMgYmFzZWQgb24gdGhlIHByb3BlcnR5IGtleT0idmFsdWUi
IHBhaXJzLgotU3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6VGVzdFByb3BlcnRpZXNB
c1htbEF0dHJpYnV0ZXMoCitzdGQ6OnN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlRl
c3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKAogICAgIGNvbnN0IFRlc3RSZXN1bHQmIHJlc3Vs
dCkgewogICBNZXNzYWdlIGF0dHJpYnV0ZXM7CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0
LnRlc3RfcHJvcGVydHlfY291bnQoKTsgKytpKSB7CkBAIC0zMjk5LDUyICszODUxLDU2MiBAQCBT
dHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpUZXN0UHJvcGVydGllc0FzWG1sQXR0cmli
dXRlcygKICAgcmV0dXJuIGF0dHJpYnV0ZXMuR2V0U3RyaW5nKCk7CiB9CiAKK3ZvaWQgWG1sVW5p
dFRlc3RSZXN1bHRQcmludGVyOjpPdXRwdXRYbWxUZXN0UHJvcGVydGllcygKKyAgICBzdGQ6Om9z
dHJlYW0qIHN0cmVhbSwgY29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0KSB7CisgIGNvbnN0IHN0ZDo6
c3RyaW5nIGtQcm9wZXJ0aWVzID0gInByb3BlcnRpZXMiOworICBjb25zdCBzdGQ6OnN0cmluZyBr
UHJvcGVydHkgPSAicHJvcGVydHkiOworCisgIGlmIChyZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3Vu
dCgpIDw9IDApIHsKKyAgICByZXR1cm47CisgIH0KKworICAqc3RyZWFtIDw8ICI8IiA8PCBrUHJv
cGVydGllcyA8PCAiPlxuIjsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHQudGVzdF9wcm9w
ZXJ0eV9jb3VudCgpOyArK2kpIHsKKyAgICBjb25zdCBUZXN0UHJvcGVydHkmIHByb3BlcnR5ID0g
cmVzdWx0LkdldFRlc3RQcm9wZXJ0eShpKTsKKyAgICAqc3RyZWFtIDw8ICI8IiA8PCBrUHJvcGVy
dHk7CisgICAgKnN0cmVhbSA8PCAiIG5hbWU9XCIiIDw8IEVzY2FwZVhtbEF0dHJpYnV0ZShwcm9w
ZXJ0eS5rZXkoKSkgPDwgIlwiIjsKKyAgICAqc3RyZWFtIDw8ICIgdmFsdWU9XCIiIDw8IEVzY2Fw
ZVhtbEF0dHJpYnV0ZShwcm9wZXJ0eS52YWx1ZSgpKSA8PCAiXCIiOworICAgICpzdHJlYW0gPDwg
Ii8+XG4iOworICB9CisgICpzdHJlYW0gPDwgIjwvIiA8PCBrUHJvcGVydGllcyA8PCAiPlxuIjsK
K30KKwogLy8gRW5kIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcgogCi0vLyBDbGFzcyBTY29wZWRU
cmFjZQorLy8gVGhpcyBjbGFzcyBnZW5lcmF0ZXMgYW4gSlNPTiBvdXRwdXQgZmlsZS4KK2NsYXNz
IEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5l
ciB7CisgcHVibGljOgorICBleHBsaWNpdCBKc29uVW5pdFRlc3RSZXN1bHRQcmludGVyKGNvbnN0
IGNoYXIqIG91dHB1dF9maWxlKTsKIAotLy8gUHVzaGVzIHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBs
b2NhdGlvbiBhbmQgbWVzc2FnZSBvbnRvIGEgcGVyLXRocmVhZAotLy8gdHJhY2Ugc3RhY2sgbWFp
bnRhaW5lZCBieSBHb29nbGUgVGVzdC4KLS8vIEwgPCBVbml0VGVzdDo6bXV0ZXhfCi1TY29wZWRU
cmFjZTo6U2NvcGVkVHJhY2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IE1lc3Nh
Z2UmIG1lc3NhZ2UpIHsKLSAgVHJhY2VJbmZvIHRyYWNlOwotICB0cmFjZS5maWxlID0gZmlsZTsK
LSAgdHJhY2UubGluZSA9IGxpbmU7Ci0gIHRyYWNlLm1lc3NhZ2UgPSBtZXNzYWdlLkdldFN0cmlu
ZygpOworICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1
bml0X3Rlc3QsIGludCBpdGVyYXRpb24pOwogCi0gIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5Q
dXNoR1Rlc3RUcmFjZSh0cmFjZSk7CisgIC8vIFByaW50cyBhbiBKU09OIHN1bW1hcnkgb2YgYWxs
IHVuaXQgdGVzdHMuCisgIHN0YXRpYyB2b2lkIFByaW50SnNvblRlc3RMaXN0KDo6c3RkOjpvc3Ry
ZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMpOworCisgcHJpdmF0ZToKKyAgLy8gUmV0dXJu
cyBhbiBKU09OLWVzY2FwZWQgY29weSBvZiB0aGUgaW5wdXQgc3RyaW5nIHN0ci4KKyAgc3RhdGlj
IHN0ZDo6c3RyaW5nIEVzY2FwZUpzb24oY29uc3Qgc3RkOjpzdHJpbmcmIHN0cik7CisKKyAgLy8v
LyBWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBhdHRyaWJ1dGUgYmVsb25ncyB0byB0aGUgZ2l2ZW4g
ZWxlbWVudCBhbmQKKyAgLy8vLyBzdHJlYW1zIHRoZSBhdHRyaWJ1dGUgYXMgSlNPTi4KKyAgc3Rh
dGljIHZvaWQgT3V0cHV0SnNvbktleShzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZWxlbWVudF9uYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5kZW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgY29tbWEgPSB0cnVlKTsKKyAgc3RhdGljIHZvaWQgT3V0cHV0
SnNvbktleShzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgZWxlbWVudF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgaW5kZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29tbWEgPSB0
cnVlKTsKKworICAvLyBTdHJlYW1zIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiBhIFRlc3RJbmZv
IG9iamVjdC4KKyAgc3RhdGljIHZvaWQgT3V0cHV0SnNvblRlc3RJbmZvKDo6c3RkOjpvc3RyZWFt
KiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0
ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRl
c3RJbmZvJiB0ZXN0X2luZm8pOworCisgIC8vIFByaW50cyBhIEpTT04gcmVwcmVzZW50YXRpb24g
b2YgYSBUZXN0Q2FzZSBvYmplY3QKKyAgc3RhdGljIHZvaWQgUHJpbnRKc29uVGVzdENhc2UoOjpz
dGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVGVzdENhc2UmIHRlc3RfY2FzZSk7CisKKyAgLy8gUHJpbnRzIGEgSlNPTiBzdW1tYXJ5IG9m
IHVuaXRfdGVzdCB0byBvdXRwdXQgc3RyZWFtIG91dC4KKyAgc3RhdGljIHZvaWQgUHJpbnRKc29u
VW5pdFRlc3QoOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCk7CisKKyAgLy8gUHJvZHVjZXMgYSBz
dHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0ZXN0IHByb3BlcnRpZXMgaW4gYSByZXN1bHQgYXMKKyAg
Ly8gYSBKU09OIGRpY3Rpb25hcnkuCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBUZXN0UHJvcGVydGll
c0FzSnNvbihjb25zdCBUZXN0UmVzdWx0JiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5kZW50KTsKKworICAvLyBU
aGUgb3V0cHV0IGZpbGUuCisgIGNvbnN0IHN0ZDo6c3RyaW5nIG91dHB1dF9maWxlXzsKKworICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIp
OworfTsKKworLy8gQ3JlYXRlcyBhIG5ldyBKc29uVW5pdFRlc3RSZXN1bHRQcmludGVyLgorSnNv
blVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6SnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcihjb25zdCBj
aGFyKiBvdXRwdXRfZmlsZSkKKyAgICA6IG91dHB1dF9maWxlXyhvdXRwdXRfZmlsZSkgeworICBp
ZiAob3V0cHV0X2ZpbGVfLmVtcHR5KCkpIHsKKyAgICBHVEVTVF9MT0dfKEZBVEFMKSA8PCAiSlNP
TiBvdXRwdXQgZmlsZSBtYXkgbm90IGJlIG51bGwiOworICB9CiB9CiAKLS8vIFBvcHMgdGhlIGlu
Zm8gcHVzaGVkIGJ5IHRoZSBjJ3Rvci4KLS8vIEwgPCBVbml0VGVzdDo6bXV0ZXhfCi1TY29wZWRU
cmFjZTo6flNjb3BlZFRyYWNlKCkgewotICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+UG9wR1Rl
c3RUcmFjZSgpOwordm9pZCBKc29uVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RJdGVyYXRp
b25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IC8qaXRlcmF0aW9uKi8pIHsKKyAgRklMRSog
anNvbm91dCA9IE9wZW5GaWxlRm9yV3JpdGluZyhvdXRwdXRfZmlsZV8pOworICBzdGQ6OnN0cmlu
Z3N0cmVhbSBzdHJlYW07CisgIFByaW50SnNvblVuaXRUZXN0KCZzdHJlYW0sIHVuaXRfdGVzdCk7
CisgIGZwcmludGYoanNvbm91dCwgIiVzIiwgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnN0cmVhbSku
Y19zdHIoKSk7CisgIGZjbG9zZShqc29ub3V0KTsKIH0KIAorLy8gUmV0dXJucyBhbiBKU09OLWVz
Y2FwZWQgY29weSBvZiB0aGUgaW5wdXQgc3RyaW5nIHN0ci4KK3N0ZDo6c3RyaW5nIEpzb25Vbml0
VGVzdFJlc3VsdFByaW50ZXI6OkVzY2FwZUpzb24oY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgewor
ICBNZXNzYWdlIG07CiAKLS8vIGNsYXNzIE9zU3RhY2tUcmFjZUdldHRlcgorICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN0ci5zaXplKCk7ICsraSkgeworICAgIGNvbnN0IGNoYXIgY2ggPSBzdHJb
aV07CisgICAgc3dpdGNoIChjaCkgeworICAgICAgY2FzZSAnXFwnOgorICAgICAgY2FzZSAnIic6
CisgICAgICBjYXNlICcvJzoKKyAgICAgICAgbSA8PCAnXFwnIDw8IGNoOworICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgJ1xiJzoKKyAgICAgICAgbSA8PCAiXFxiIjsKKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlICdcdCc6CisgICAgICAgIG0gPDwgIlxcdCI7CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSAnXG4nOgorICAgICAgICBtIDw8ICJcXG4iOworICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgJ1xmJzoKKyAgICAgICAgbSA8PCAiXFxmIjsKKyAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlICdccic6CisgICAgICAgIG0gPDwgIlxcciI7CisgICAgICAgIGJyZWFrOworICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgaWYgKGNoIDwgJyAnKSB7CisgICAgICAgICAgbSA8PCAiXFx1MDAi
IDw8IFN0cmluZzo6Rm9ybWF0Qnl0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgIG0gPDwgY2g7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CisgICAgfQorICB9CiAKLS8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJh
Y2UgYXMgYSBTdHJpbmcuICBQYXJhbWV0ZXJzOgotLy8KLS8vICAgbWF4X2RlcHRoICAtIHRoZSBt
YXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMgdG8gYmUgaW5jbHVkZWQKLS8vICAgICAgICAg
ICAgICAgIGluIHRoZSB0cmFjZS4KLS8vICAgc2tpcF9jb3VudCAtIHRoZSBudW1iZXIgb2YgdG9w
IGZyYW1lcyB0byBiZSBza2lwcGVkOyBkb2Vzbid0IGNvdW50Ci0vLyAgICAgICAgICAgICAgICBh
Z2FpbnN0IG1heF9kZXB0aC4KLS8vCi0vLyBMIDwgbXV0ZXhfCi0vLyBXZSB1c2UgIkwgPCBtdXRl
eF8iIHRvIGRlbm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBtYXkgYWNxdWlyZSBtdXRleF8uCi1TdHJp
bmcgT3NTdGFja1RyYWNlR2V0dGVyOjpDdXJyZW50U3RhY2tUcmFjZShpbnQsIGludCkgewotICBy
ZXR1cm4gU3RyaW5nKCIiKTsKKyAgcmV0dXJuIG0uR2V0U3RyaW5nKCk7CiB9CiAKLS8vIEwgPCBt
dXRleF8KLXZvaWQgT3NTdGFja1RyYWNlR2V0dGVyOjpVcG9uTGVhdmluZ0dUZXN0KCkgeworLy8g
VGhlIGZvbGxvd2luZyByb3V0aW5lcyBnZW5lcmF0ZSBhbiBKU09OIHJlcHJlc2VudGF0aW9uIG9m
IGEgVW5pdFRlc3QKKy8vIG9iamVjdC4KKworLy8gRm9ybWF0cyB0aGUgZ2l2ZW4gdGltZSBpbiBt
aWxsaXNlY29uZHMgYXMgc2Vjb25kcy4KK3N0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRUaW1lSW5N
aWxsaXNBc0R1cmF0aW9uKFRpbWVJbk1pbGxpcyBtcykgeworICA6OnN0ZDo6c3RyaW5nc3RyZWFt
IHNzOworICBzcyA8PCAoc3RhdGljX2Nhc3Q8ZG91YmxlPihtcykgKiAxZS0zKSA8PCAicyI7Cisg
IHJldHVybiBzcy5zdHIoKTsKIH0KIAotY29uc3QgY2hhciogY29uc3QKLU9zU3RhY2tUcmFjZUdl
dHRlcjo6a0VsaWRlZEZyYW1lc01hcmtlciA9CisvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gZXBvY2gg
dGltZSBpbiBtaWxsaXNlY29uZHMgdG8gYSBkYXRlIHN0cmluZyBpbiB0aGUKKy8vIFJGQzMzMzkg
Zm9ybWF0LCB3aXRob3V0IHRoZSB0aW1lem9uZSBpbmZvcm1hdGlvbi4KK3N0YXRpYyBzdGQ6OnN0
cmluZyBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzUkZDMzMzOShUaW1lSW5NaWxsaXMgbXMpIHsK
KyAgc3RydWN0IHRtIHRpbWVfc3RydWN0OworICBpZiAoIVBvcnRhYmxlTG9jYWx0aW1lKHN0YXRp
Y19jYXN0PHRpbWVfdD4obXMgLyAxMDAwKSwgJnRpbWVfc3RydWN0KSkKKyAgICByZXR1cm4gIiI7
CisgIC8vIFlZWVktTU0tRERUaGg6bW06c3MKKyAgcmV0dXJuIFN0cmVhbWFibGVUb1N0cmluZyh0
aW1lX3N0cnVjdC50bV95ZWFyICsgMTkwMCkgKyAiLSIgKworICAgICAgU3RyaW5nOjpGb3JtYXRJ
bnRXaWR0aDIodGltZV9zdHJ1Y3QudG1fbW9uICsgMSkgKyAiLSIgKworICAgICAgU3RyaW5nOjpG
b3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1fbWRheSkgKyAiVCIgKworICAgICAgU3RyaW5n
OjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1faG91cikgKyAiOiIgKworICAgICAgU3Ry
aW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1fbWluKSArICI6IiArCisgICAgICBT
dHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9zZWMpICsgIloiOworfQorCitz
dGF0aWMgaW5saW5lIHN0ZDo6c3RyaW5nIEluZGVudChpbnQgd2lkdGgpIHsKKyAgcmV0dXJuIHN0
ZDo6c3RyaW5nKHdpZHRoLCAnICcpOworfQorCit2b2lkIEpzb25Vbml0VGVzdFJlc3VsdFByaW50
ZXI6Ok91dHB1dEpzb25LZXkoCisgICAgc3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIGVsZW1lbnRfbmFtZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwK
KyAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGlu
ZGVudCwKKyAgICBib29sIGNvbW1hKSB7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
PiYgYWxsb3dlZF9uYW1lcyA9CisgICAgICBHZXRSZXNlcnZlZEF0dHJpYnV0ZXNGb3JFbGVtZW50
KGVsZW1lbnRfbmFtZSk7CisKKyAgR1RFU1RfQ0hFQ0tfKHN0ZDo6ZmluZChhbGxvd2VkX25hbWVz
LmJlZ2luKCksIGFsbG93ZWRfbmFtZXMuZW5kKCksIG5hbWUpICE9CisgICAgICAgICAgICAgICAg
ICAgYWxsb3dlZF9uYW1lcy5lbmQoKSkKKyAgICAgIDw8ICJLZXkgXCIiIDw8IG5hbWUgPDwgIlwi
IGlzIG5vdCBhbGxvd2VkIGZvciB2YWx1ZSBcIiIgPDwgZWxlbWVudF9uYW1lCisgICAgICA8PCAi
XCIuIjsKKworICAqc3RyZWFtIDw8IGluZGVudCA8PCAiXCIiIDw8IG5hbWUgPDwgIlwiOiBcIiIg
PDwgRXNjYXBlSnNvbih2YWx1ZSkgPDwgIlwiIjsKKyAgaWYgKGNvbW1hKQorICAgICpzdHJlYW0g
PDwgIixcbiI7Cit9CisKK3ZvaWQgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T3V0cHV0SnNv
bktleSgKKyAgICBzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYg
ZWxlbWVudF9uYW1lLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAorICAgIGludCB2YWx1
ZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5kZW50LAorICAgIGJvb2wgY29tbWEpIHsKKyAg
Y29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBhbGxvd2VkX25hbWVzID0KKyAgICAgIEdl
dFJlc2VydmVkQXR0cmlidXRlc0ZvckVsZW1lbnQoZWxlbWVudF9uYW1lKTsKKworICBHVEVTVF9D
SEVDS18oc3RkOjpmaW5kKGFsbG93ZWRfbmFtZXMuYmVnaW4oKSwgYWxsb3dlZF9uYW1lcy5lbmQo
KSwgbmFtZSkgIT0KKyAgICAgICAgICAgICAgICAgICBhbGxvd2VkX25hbWVzLmVuZCgpKQorICAg
ICAgPDwgIktleSBcIiIgPDwgbmFtZSA8PCAiXCIgaXMgbm90IGFsbG93ZWQgZm9yIHZhbHVlIFwi
IiA8PCBlbGVtZW50X25hbWUKKyAgICAgIDw8ICJcIi4iOworCisgICpzdHJlYW0gPDwgaW5kZW50
IDw8ICJcIiIgPDwgbmFtZSA8PCAiXCI6ICIgPDwgU3RyZWFtYWJsZVRvU3RyaW5nKHZhbHVlKTsK
KyAgaWYgKGNvbW1hKQorICAgICpzdHJlYW0gPDwgIixcbiI7Cit9CisKKy8vIFByaW50cyBhIEpT
T04gcmVwcmVzZW50YXRpb24gb2YgYSBUZXN0SW5mbyBvYmplY3QuCit2b2lkIEpzb25Vbml0VGVz
dFJlc3VsdFByaW50ZXI6Ok91dHB1dEpzb25UZXN0SW5mbyg6OnN0ZDo6b3N0cmVhbSogc3RyZWFt
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogdGVzdF9jYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CisgIGNvbnN0
IFRlc3RSZXN1bHQmIHJlc3VsdCA9ICp0ZXN0X2luZm8ucmVzdWx0KCk7CisgIGNvbnN0IHN0ZDo6
c3RyaW5nIGtUZXN0Y2FzZSA9ICJ0ZXN0Y2FzZSI7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtJbmRl
bnQgPSBJbmRlbnQoMTApOworCisgICpzdHJlYW0gPDwgSW5kZW50KDgpIDw8ICJ7XG4iOworICBP
dXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RjYXNlLCAibmFtZSIsIHRlc3RfaW5mby5uYW1lKCks
IGtJbmRlbnQpOworCisgIGlmICh0ZXN0X2luZm8udmFsdWVfcGFyYW0oKSAhPSBOVUxMKSB7Cisg
ICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0Y2FzZSwgInZhbHVlX3BhcmFtIiwKKyAgICAg
ICAgICAgICAgICAgIHRlc3RfaW5mby52YWx1ZV9wYXJhbSgpLCBrSW5kZW50KTsKKyAgfQorICBp
ZiAodGVzdF9pbmZvLnR5cGVfcGFyYW0oKSAhPSBOVUxMKSB7CisgICAgT3V0cHV0SnNvbktleShz
dHJlYW0sIGtUZXN0Y2FzZSwgInR5cGVfcGFyYW0iLCB0ZXN0X2luZm8udHlwZV9wYXJhbSgpLAor
ICAgICAgICAgICAgICAgICAga0luZGVudCk7CisgIH0KKyAgaWYgKEdURVNUX0ZMQUcobGlzdF90
ZXN0cykpIHsKKyAgICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RjYXNlLCAiZmlsZSIsIHRl
c3RfaW5mby5maWxlKCksIGtJbmRlbnQpOworICAgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVz
dGNhc2UsICJsaW5lIiwgdGVzdF9pbmZvLmxpbmUoKSwga0luZGVudCwgZmFsc2UpOworICAgICpz
dHJlYW0gPDwgIlxuIiA8PCBJbmRlbnQoOCkgPDwgIn0iOworICAgIHJldHVybjsKKyAgfQorCisg
IE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdGNhc2UsICJzdGF0dXMiLAorICAgICAgICAgICAg
ICAgIHRlc3RfaW5mby5zaG91bGRfcnVuKCkgPyAiUlVOIiA6ICJOT1RSVU4iLCBrSW5kZW50KTsK
KyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0Y2FzZSwgInRpbWUiLAorICAgICAgICAgICAg
ICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzRHVyYXRpb24ocmVzdWx0LmVsYXBzZWRfdGltZSgpKSwg
a0luZGVudCk7CisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdGNhc2UsICJjbGFzc25hbWUi
LCB0ZXN0X2Nhc2VfbmFtZSwga0luZGVudCwgZmFsc2UpOworICAqc3RyZWFtIDw8IFRlc3RQcm9w
ZXJ0aWVzQXNKc29uKHJlc3VsdCwga0luZGVudCk7CisKKyAgaW50IGZhaWx1cmVzID0gMDsKKyAg
Zm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHQudG90YWxfcGFydF9jb3VudCgpOyArK2kpIHsKKyAg
ICBjb25zdCBUZXN0UGFydFJlc3VsdCYgcGFydCA9IHJlc3VsdC5HZXRUZXN0UGFydFJlc3VsdChp
KTsKKyAgICBpZiAocGFydC5mYWlsZWQoKSkgeworICAgICAgKnN0cmVhbSA8PCAiLFxuIjsKKyAg
ICAgIGlmICgrK2ZhaWx1cmVzID09IDEpIHsKKyAgICAgICAgKnN0cmVhbSA8PCBrSW5kZW50IDw8
ICJcIiIgPDwgImZhaWx1cmVzIiA8PCAiXCI6IFtcbiI7CisgICAgICB9CisgICAgICBjb25zdCBz
dGQ6OnN0cmluZyBsb2NhdGlvbiA9CisgICAgICAgICAgaW50ZXJuYWw6OkZvcm1hdENvbXBpbGVy
SW5kZXBlbmRlbnRGaWxlTG9jYXRpb24ocGFydC5maWxlX25hbWUoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0LmxpbmVfbnVt
YmVyKCkpOworICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgbWVzc2FnZSA9IEVzY2FwZUpzb24obG9j
YXRpb24gKyAiXG4iICsgcGFydC5tZXNzYWdlKCkpOworICAgICAgKnN0cmVhbSA8PCBrSW5kZW50
IDw8ICIgIHtcbiIKKyAgICAgICAgICAgICAgPDwga0luZGVudCA8PCAiICAgIFwiZmFpbHVyZVwi
OiBcIiIgPDwgbWVzc2FnZSA8PCAiXCIsXG4iCisgICAgICAgICAgICAgIDw8IGtJbmRlbnQgPDwg
IiAgICBcInR5cGVcIjogXCJcIlxuIgorICAgICAgICAgICAgICA8PCBrSW5kZW50IDw8ICIgIH0i
OworICAgIH0KKyAgfQorCisgIGlmIChmYWlsdXJlcyA+IDApCisgICAgKnN0cmVhbSA8PCAiXG4i
IDw8IGtJbmRlbnQgPDwgIl0iOworICAqc3RyZWFtIDw8ICJcbiIgPDwgSW5kZW50KDgpIDw8ICJ9
IjsKK30KKworLy8gUHJpbnRzIGFuIEpTT04gcmVwcmVzZW50YXRpb24gb2YgYSBUZXN0Q2FzZSBv
YmplY3QKK3ZvaWQgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRKc29uVGVzdENhc2Uo
c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcga1Rlc3RzdWl0ZSA9ICJ0ZXN0c3VpdGUiOworICBjb25zdCBzdGQ6OnN0cmluZyBr
SW5kZW50ID0gSW5kZW50KDYpOworCisgICpzdHJlYW0gPDwgSW5kZW50KDQpIDw8ICJ7XG4iOwor
ICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZSwgIm5hbWUiLCB0ZXN0X2Nhc2UubmFt
ZSgpLCBrSW5kZW50KTsKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGUsICJ0ZXN0
cyIsIHRlc3RfY2FzZS5yZXBvcnRhYmxlX3Rlc3RfY291bnQoKSwKKyAgICAgICAgICAgICAgICBr
SW5kZW50KTsKKyAgaWYgKCFHVEVTVF9GTEFHKGxpc3RfdGVzdHMpKSB7CisgICAgT3V0cHV0SnNv
bktleShzdHJlYW0sIGtUZXN0c3VpdGUsICJmYWlsdXJlcyIsIHRlc3RfY2FzZS5mYWlsZWRfdGVz
dF9jb3VudCgpLAorICAgICAgICAgICAgICAgICAga0luZGVudCk7CisgICAgT3V0cHV0SnNvbktl
eShzdHJlYW0sIGtUZXN0c3VpdGUsICJkaXNhYmxlZCIsCisgICAgICAgICAgICAgICAgICB0ZXN0
X2Nhc2UucmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCksIGtJbmRlbnQpOworICAgIE91
dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRlLCAiZXJyb3JzIiwgMCwga0luZGVudCk7Cisg
ICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGUsICJ0aW1lIiwKKyAgICAgICAgICAg
ICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzRHVyYXRpb24odGVzdF9jYXNlLmVsYXBzZWRfdGlt
ZSgpKSwKKyAgICAgICAgICAgICAgICAgIGtJbmRlbnQsIGZhbHNlKTsKKyAgICAqc3RyZWFtIDw8
IFRlc3RQcm9wZXJ0aWVzQXNKc29uKHRlc3RfY2FzZS5hZF9ob2NfdGVzdF9yZXN1bHQoKSwga0lu
ZGVudCkKKyAgICAgICAgICAgIDw8ICIsXG4iOworICB9CisKKyAgKnN0cmVhbSA8PCBrSW5kZW50
IDw8ICJcIiIgPDwga1Rlc3RzdWl0ZSA8PCAiXCI6IFtcbiI7CisKKyAgYm9vbCBjb21tYSA9IGZh
bHNlOworICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RfY2FzZS50b3RhbF90ZXN0X2NvdW50KCk7
ICsraSkgeworICAgIGlmICh0ZXN0X2Nhc2UuR2V0VGVzdEluZm8oaSktPmlzX3JlcG9ydGFibGUo
KSkgeworICAgICAgaWYgKGNvbW1hKSB7CisgICAgICAgICpzdHJlYW0gPDwgIixcbiI7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBjb21tYSA9IHRydWU7CisgICAgICB9CisgICAgICBPdXRwdXRK
c29uVGVzdEluZm8oc3RyZWFtLCB0ZXN0X2Nhc2UubmFtZSgpLCAqdGVzdF9jYXNlLkdldFRlc3RJ
bmZvKGkpKTsKKyAgICB9CisgIH0KKyAgKnN0cmVhbSA8PCAiXG4iIDw8IGtJbmRlbnQgPDwgIl1c
biIgPDwgSW5kZW50KDQpIDw8ICJ9IjsKK30KKworLy8gUHJpbnRzIGEgSlNPTiBzdW1tYXJ5IG9m
IHVuaXRfdGVzdCB0byBvdXRwdXQgc3RyZWFtIG91dC4KK3ZvaWQgSnNvblVuaXRUZXN0UmVzdWx0
UHJpbnRlcjo6UHJpbnRKc29uVW5pdFRlc3Qoc3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaXRUZXN0
JiB1bml0X3Rlc3QpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RzdWl0ZXMgPSAidGVzdHN1
aXRlcyI7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtJbmRlbnQgPSBJbmRlbnQoMik7CisgICpzdHJl
YW0gPDwgIntcbiI7CisKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAidGVz
dHMiLCB1bml0X3Rlc3QucmVwb3J0YWJsZV90ZXN0X2NvdW50KCksCisgICAgICAgICAgICAgICAg
a0luZGVudCk7CisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRlcywgImZhaWx1cmVz
IiwgdW5pdF90ZXN0LmZhaWxlZF90ZXN0X2NvdW50KCksCisgICAgICAgICAgICAgICAga0luZGVu
dCk7CisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRlcywgImRpc2FibGVkIiwKKyAg
ICAgICAgICAgICAgICB1bml0X3Rlc3QucmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCks
IGtJbmRlbnQpOworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJlcnJvcnMi
LCAwLCBrSW5kZW50KTsKKyAgaWYgKEdURVNUX0ZMQUcoc2h1ZmZsZSkpIHsKKyAgICBPdXRwdXRK
c29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJyYW5kb21fc2VlZCIsIHVuaXRfdGVzdC5yYW5k
b21fc2VlZCgpLAorICAgICAgICAgICAgICAgICAga0luZGVudCk7CisgIH0KKyAgT3V0cHV0SnNv
bktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAidGltZXN0YW1wIiwKKyAgICAgICAgICAgICAgICBG
b3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzUkZDMzMzOSh1bml0X3Rlc3Quc3RhcnRfdGltZXN0YW1w
KCkpLAorICAgICAgICAgICAgICAgIGtJbmRlbnQpOworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwg
a1Rlc3RzdWl0ZXMsICJ0aW1lIiwKKyAgICAgICAgICAgICAgICBGb3JtYXRUaW1lSW5NaWxsaXNB
c0R1cmF0aW9uKHVuaXRfdGVzdC5lbGFwc2VkX3RpbWUoKSksIGtJbmRlbnQsCisgICAgICAgICAg
ICAgICAgZmFsc2UpOworCisgICpzdHJlYW0gPDwgVGVzdFByb3BlcnRpZXNBc0pzb24odW5pdF90
ZXN0LmFkX2hvY190ZXN0X3Jlc3VsdCgpLCBrSW5kZW50KQorICAgICAgICAgIDw8ICIsXG4iOwor
CisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRlcywgIm5hbWUiLCAiQWxsVGVzdHMi
LCBrSW5kZW50KTsKKyAgKnN0cmVhbSA8PCBrSW5kZW50IDw8ICJcIiIgPDwga1Rlc3RzdWl0ZXMg
PDwgIlwiOiBbXG4iOworCisgIGJvb2wgY29tbWEgPSBmYWxzZTsKKyAgZm9yIChpbnQgaSA9IDA7
IGkgPCB1bml0X3Rlc3QudG90YWxfdGVzdF9jYXNlX2NvdW50KCk7ICsraSkgeworICAgIGlmICh1
bml0X3Rlc3QuR2V0VGVzdENhc2UoaSktPnJlcG9ydGFibGVfdGVzdF9jb3VudCgpID4gMCkgewor
ICAgICAgaWYgKGNvbW1hKSB7CisgICAgICAgICpzdHJlYW0gPDwgIixcbiI7CisgICAgICB9IGVs
c2UgeworICAgICAgICBjb21tYSA9IHRydWU7CisgICAgICB9CisgICAgICBQcmludEpzb25UZXN0
Q2FzZShzdHJlYW0sICp1bml0X3Rlc3QuR2V0VGVzdENhc2UoaSkpOworICAgIH0KKyAgfQorCisg
ICpzdHJlYW0gPDwgIlxuIiA8PCBrSW5kZW50IDw8ICJdXG4iIDw8ICJ9XG4iOworfQorCit2b2lk
IEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6OlByaW50SnNvblRlc3RMaXN0KAorICAgIHN0ZDo6
b3N0cmVhbSogc3RyZWFtLCBjb25zdCBzdGQ6OnZlY3RvcjxUZXN0Q2FzZSo+JiB0ZXN0X2Nhc2Vz
KSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0c3VpdGVzID0gInRlc3RzdWl0ZXMiOworICBj
b25zdCBzdGQ6OnN0cmluZyBrSW5kZW50ID0gSW5kZW50KDIpOworICAqc3RyZWFtIDw8ICJ7XG4i
OworICBpbnQgdG90YWxfdGVzdHMgPSAwOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3Rf
Y2FzZXMuc2l6ZSgpOyArK2kpIHsKKyAgICB0b3RhbF90ZXN0cyArPSB0ZXN0X2Nhc2VzW2ldLT50
b3RhbF90ZXN0X2NvdW50KCk7CisgIH0KKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3Vp
dGVzLCAidGVzdHMiLCB0b3RhbF90ZXN0cywga0luZGVudCk7CisKKyAgT3V0cHV0SnNvbktleShz
dHJlYW0sIGtUZXN0c3VpdGVzLCAibmFtZSIsICJBbGxUZXN0cyIsIGtJbmRlbnQpOworICAqc3Ry
ZWFtIDw8IGtJbmRlbnQgPDwgIlwiIiA8PCBrVGVzdHN1aXRlcyA8PCAiXCI6IFtcbiI7CisKKyAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0X2Nhc2VzLnNpemUoKTsgKytpKSB7CisgICAgaWYg
KGkgIT0gMCkgeworICAgICAgKnN0cmVhbSA8PCAiLFxuIjsKKyAgICB9CisgICAgUHJpbnRKc29u
VGVzdENhc2Uoc3RyZWFtLCAqdGVzdF9jYXNlc1tpXSk7CisgIH0KKworICAqc3RyZWFtIDw8ICJc
biIKKyAgICAgICAgICA8PCBrSW5kZW50IDw8ICJdXG4iCisgICAgICAgICAgPDwgIn1cbiI7Cit9
CisvLyBQcm9kdWNlcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHRlc3QgcHJvcGVydGllcyBp
biBhIHJlc3VsdCBhcworLy8gYSBKU09OIGRpY3Rpb25hcnkuCitzdGQ6OnN0cmluZyBKc29uVW5p
dFRlc3RSZXN1bHRQcmludGVyOjpUZXN0UHJvcGVydGllc0FzSnNvbigKKyAgICBjb25zdCBUZXN0
UmVzdWx0JiByZXN1bHQsIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbmRlbnQpIHsKKyAgTWVzc2FnZSBh
dHRyaWJ1dGVzOworICBmb3IgKGludCBpID0gMDsgaSA8IHJlc3VsdC50ZXN0X3Byb3BlcnR5X2Nv
dW50KCk7ICsraSkgeworICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgcHJvcGVydHkgPSByZXN1bHQu
R2V0VGVzdFByb3BlcnR5KGkpOworICAgIGF0dHJpYnV0ZXMgPDwgIixcbiIgPDwgaW5kZW50IDw8
ICJcIiIgPDwgcHJvcGVydHkua2V5KCkgPDwgIlwiOiAiCisgICAgICAgICAgICAgICA8PCAiXCIi
IDw8IEVzY2FwZUpzb24ocHJvcGVydHkudmFsdWUoKSkgPDwgIlwiIjsKKyAgfQorICByZXR1cm4g
YXR0cmlidXRlcy5HZXRTdHJpbmcoKTsKK30KKworLy8gRW5kIEpzb25Vbml0VGVzdFJlc3VsdFBy
aW50ZXIKKworI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKworLy8gQ2hlY2tzIGlmIHN0
ciBjb250YWlucyAnPScsICcmJywgJyUnIG9yICdcbicgY2hhcmFjdGVycy4gSWYgeWVzLAorLy8g
cmVwbGFjZXMgdGhlbSBieSAiJXh4IiB3aGVyZSB4eCBpcyB0aGVpciBoZXhhZGVjaW1hbCB2YWx1
ZS4gRm9yCisvLyBleGFtcGxlLCByZXBsYWNlcyAiPSIgd2l0aCAiJTNEIi4gIFRoaXMgYWxnb3Jp
dGhtIGlzIE8oc3RybGVuKHN0cikpCisvLyBpbiBib3RoIHRpbWUgYW5kIHNwYWNlIC0tIGltcG9y
dGFudCBhcyB0aGUgaW5wdXQgc3RyIG1heSBjb250YWluIGFuCisvLyBhcmJpdHJhcmlseSBsb25n
IHRlc3QgZmFpbHVyZSBtZXNzYWdlIGFuZCBzdGFjayB0cmFjZS4KK3N0ZDo6c3RyaW5nIFN0cmVh
bWluZ0xpc3RlbmVyOjpVcmxFbmNvZGUoY29uc3QgY2hhciogc3RyKSB7CisgIHN0ZDo6c3RyaW5n
IHJlc3VsdDsKKyAgcmVzdWx0LnJlc2VydmUoc3RybGVuKHN0cikgKyAxKTsKKyAgZm9yIChjaGFy
IGNoID0gKnN0cjsgY2ggIT0gJ1wwJzsgY2ggPSAqKytzdHIpIHsKKyAgICBzd2l0Y2ggKGNoKSB7
CisgICAgICBjYXNlICclJzoKKyAgICAgIGNhc2UgJz0nOgorICAgICAgY2FzZSAnJic6CisgICAg
ICBjYXNlICdcbic6CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIiUiICsgU3RyaW5nOjpGb3JtYXRC
eXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkpOworICAgICAgICBicmVhazsKKyAg
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soY2gpOworICAgICAgICBicmVh
azsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBTdHJlYW1pbmdMaXN0
ZW5lcjo6U29ja2V0V3JpdGVyOjpNYWtlQ29ubmVjdGlvbigpIHsKKyAgR1RFU1RfQ0hFQ0tfKHNv
Y2tmZF8gPT0gLTEpCisgICAgICA8PCAiTWFrZUNvbm5lY3Rpb24oKSBjYW4ndCBiZSBjYWxsZWQg
d2hlbiB0aGVyZSBpcyBhbHJlYWR5IGEgY29ubmVjdGlvbi4iOworCisgIGFkZHJpbmZvIGhpbnRz
OworICBtZW1zZXQoJmhpbnRzLCAwLCBzaXplb2YoaGludHMpKTsKKyAgaGludHMuYWlfZmFtaWx5
ID0gQUZfVU5TUEVDOyAgICAvLyBUbyBhbGxvdyBib3RoIElQdjQgYW5kIElQdjYgYWRkcmVzc2Vz
LgorICBoaW50cy5haV9zb2NrdHlwZSA9IFNPQ0tfU1RSRUFNOworICBhZGRyaW5mbyogc2Vydmlu
Zm8gPSBOVUxMOworCisgIC8vIFVzZSB0aGUgZ2V0YWRkcmluZm8oKSB0byBnZXQgYSBsaW5rZWQg
bGlzdCBvZiBJUCBhZGRyZXNzZXMgZm9yCisgIC8vIHRoZSBnaXZlbiBob3N0IG5hbWUuCisgIGNv
bnN0IGludCBlcnJvcl9udW0gPSBnZXRhZGRyaW5mbygKKyAgICAgIGhvc3RfbmFtZV8uY19zdHIo
KSwgcG9ydF9udW1fLmNfc3RyKCksICZoaW50cywgJnNlcnZpbmZvKTsKKyAgaWYgKGVycm9yX251
bSAhPSAwKSB7CisgICAgR1RFU1RfTE9HXyhXQVJOSU5HKSA8PCAic3RyZWFtX3Jlc3VsdF90bzog
Z2V0YWRkcmluZm8oKSBmYWlsZWQ6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8IGdhaV9z
dHJlcnJvcihlcnJvcl9udW0pOworICB9CisKKyAgLy8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgcmVz
dWx0cyBhbmQgY29ubmVjdCB0byB0aGUgZmlyc3Qgd2UgY2FuLgorICBmb3IgKGFkZHJpbmZvKiBj
dXJfYWRkciA9IHNlcnZpbmZvOyBzb2NrZmRfID09IC0xICYmIGN1cl9hZGRyICE9IE5VTEw7Cisg
ICAgICAgY3VyX2FkZHIgPSBjdXJfYWRkci0+YWlfbmV4dCkgeworICAgIHNvY2tmZF8gPSBzb2Nr
ZXQoCisgICAgICAgIGN1cl9hZGRyLT5haV9mYW1pbHksIGN1cl9hZGRyLT5haV9zb2NrdHlwZSwg
Y3VyX2FkZHItPmFpX3Byb3RvY29sKTsKKyAgICBpZiAoc29ja2ZkXyAhPSAtMSkgeworICAgICAg
Ly8gQ29ubmVjdCB0aGUgY2xpZW50IHNvY2tldCB0byB0aGUgc2VydmVyIHNvY2tldC4KKyAgICAg
IGlmIChjb25uZWN0KHNvY2tmZF8sIGN1cl9hZGRyLT5haV9hZGRyLCBjdXJfYWRkci0+YWlfYWRk
cmxlbikgPT0gLTEpIHsKKyAgICAgICAgY2xvc2Uoc29ja2ZkXyk7CisgICAgICAgIHNvY2tmZF8g
PSAtMTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICBmcmVlYWRkcmluZm8oc2VydmluZm8pOyAg
Ly8gYWxsIGRvbmUgd2l0aCB0aGlzIHN0cnVjdHVyZQorCisgIGlmIChzb2NrZmRfID09IC0xKSB7
CisgICAgR1RFU1RfTE9HXyhXQVJOSU5HKSA8PCAic3RyZWFtX3Jlc3VsdF90bzogZmFpbGVkIHRv
IGNvbm5lY3QgdG8gIgorICAgICAgICAgICAgICAgICAgICAgICAgPDwgaG9zdF9uYW1lXyA8PCAi
OiIgPDwgcG9ydF9udW1fOworICB9Cit9CisKKy8vIEVuZCBvZiBjbGFzcyBTdHJlYW1pbmcgTGlz
dGVuZXIKKyNlbmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTX18KKworLy8gY2xhc3Mg
T3NTdGFja1RyYWNlR2V0dGVyCisKK2NvbnN0IGNoYXIqIGNvbnN0IE9zU3RhY2tUcmFjZUdldHRl
ckludGVyZmFjZTo6a0VsaWRlZEZyYW1lc01hcmtlciA9CiAgICAgIi4uLiAiIEdURVNUX05BTUVf
ICIgaW50ZXJuYWwgZnJhbWVzIC4uLiI7CiAKK3N0ZDo6c3RyaW5nIE9zU3RhY2tUcmFjZUdldHRl
cjo6Q3VycmVudFN0YWNrVHJhY2UoaW50IG1heF9kZXB0aCwgaW50IHNraXBfY291bnQpCisgICAg
R1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7CisjaWYgR1RFU1RfSEFTX0FCU0wKKyAgc3Rk
OjpzdHJpbmcgcmVzdWx0OworCisgIGlmIChtYXhfZGVwdGggPD0gMCkgeworICAgIHJldHVybiBy
ZXN1bHQ7CisgIH0KKworICBtYXhfZGVwdGggPSBzdGQ6Om1pbihtYXhfZGVwdGgsIGtNYXhTdGFj
a1RyYWNlRGVwdGgpOworCisgIHN0ZDo6dmVjdG9yPHZvaWQqPiByYXdfc3RhY2sobWF4X2RlcHRo
KTsKKyAgLy8gU2tpcHMgdGhlIGZyYW1lcyByZXF1ZXN0ZWQgYnkgdGhlIGNhbGxlciwgcGx1cyB0
aGlzIGZ1bmN0aW9uLgorICBjb25zdCBpbnQgcmF3X3N0YWNrX3NpemUgPQorICAgICAgYWJzbDo6
R2V0U3RhY2tUcmFjZSgmcmF3X3N0YWNrWzBdLCBtYXhfZGVwdGgsIHNraXBfY291bnQgKyAxKTsK
KworICB2b2lkKiBjYWxsZXJfZnJhbWUgPSBudWxscHRyOworICB7CisgICAgTXV0ZXhMb2NrIGxv
Y2soJm11dGV4Xyk7CisgICAgY2FsbGVyX2ZyYW1lID0gY2FsbGVyX2ZyYW1lXzsKKyAgfQorCisg
IGZvciAoaW50IGkgPSAwOyBpIDwgcmF3X3N0YWNrX3NpemU7ICsraSkgeworICAgIGlmIChyYXdf
c3RhY2tbaV0gPT0gY2FsbGVyX2ZyYW1lICYmCisgICAgICAgICFHVEVTVF9GTEFHKHNob3dfaW50
ZXJuYWxfc3RhY2tfZnJhbWVzKSkgeworICAgICAgLy8gQWRkIGEgbWFya2VyIHRvIHRoZSB0cmFj
ZSBhbmQgc3RvcCBhZGRpbmcgZnJhbWVzLgorICAgICAgYWJzbDo6U3RyQXBwZW5kKCZyZXN1bHQs
IGtFbGlkZWRGcmFtZXNNYXJrZXIsICJcbiIpOworICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
Y2hhciB0bXBbMTAyNF07CisgICAgY29uc3QgY2hhciogc3ltYm9sID0gIih1bmtub3duKSI7Cisg
ICAgaWYgKGFic2w6OlN5bWJvbGl6ZShyYXdfc3RhY2tbaV0sIHRtcCwgc2l6ZW9mKHRtcCkpKSB7
CisgICAgICBzeW1ib2wgPSB0bXA7CisgICAgfQorCisgICAgY2hhciBsaW5lWzEwMjRdOworICAg
IHNucHJpbnRmKGxpbmUsIHNpemVvZihsaW5lKSwgIiAgJXA6ICVzXG4iLCByYXdfc3RhY2tbaV0s
IHN5bWJvbCk7CisgICAgcmVzdWx0ICs9IGxpbmU7CisgIH0KKworICByZXR1cm4gcmVzdWx0Owor
CisjZWxzZSAgLy8gIUdURVNUX0hBU19BQlNMCisgIHN0YXRpY19jYXN0PHZvaWQ+KG1heF9kZXB0
aCk7CisgIHN0YXRpY19jYXN0PHZvaWQ+KHNraXBfY291bnQpOworICByZXR1cm4gIiI7CisjZW5k
aWYgIC8vIEdURVNUX0hBU19BQlNMCit9CisKK3ZvaWQgT3NTdGFja1RyYWNlR2V0dGVyOjpVcG9u
TGVhdmluZ0dUZXN0KCkgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7CisjaWYgR1RFU1Rf
SEFTX0FCU0wKKyAgdm9pZCogY2FsbGVyX2ZyYW1lID0gbnVsbHB0cjsKKyAgaWYgKGFic2w6Okdl
dFN0YWNrVHJhY2UoJmNhbGxlcl9mcmFtZSwgMSwgMykgPD0gMCkgeworICAgIGNhbGxlcl9mcmFt
ZSA9IG51bGxwdHI7CisgIH0KKworICBNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKKyAgY2FsbGVy
X2ZyYW1lXyA9IGNhbGxlcl9mcmFtZTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0FCU0wKK30KKwor
Ly8gQSBoZWxwZXIgY2xhc3MgdGhhdCBjcmVhdGVzIHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlIGlu
IGl0cworLy8gY29uc3RydWN0b3IgYW5kIGRlbGV0ZXMgdGhlIGZpbGUgaW4gaXRzIGRlc3RydWN0
b3IuCitjbGFzcyBTY29wZWRQcmVtYXR1cmVFeGl0RmlsZSB7CisgcHVibGljOgorICBleHBsaWNp
dCBTY29wZWRQcmVtYXR1cmVFeGl0RmlsZShjb25zdCBjaGFyKiBwcmVtYXR1cmVfZXhpdF9maWxl
cGF0aCkKKyAgICAgIDogcHJlbWF0dXJlX2V4aXRfZmlsZXBhdGhfKHByZW1hdHVyZV9leGl0X2Zp
bGVwYXRoID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZW1hdHVyZV9leGl0
X2ZpbGVwYXRoIDogIiIpIHsKKyAgICAvLyBJZiBhIHBhdGggdG8gdGhlIHByZW1hdHVyZS1leGl0
IGZpbGUgaXMgc3BlY2lmaWVkLi4uCisgICAgaWYgKCFwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8u
ZW1wdHkoKSkgeworICAgICAgLy8gY3JlYXRlIHRoZSBmaWxlIHdpdGggYSBzaW5nbGUgIjAiIGNo
YXJhY3RlciBpbiBpdC4gIEkvTworICAgICAgLy8gZXJyb3JzIGFyZSBpZ25vcmVkIGFzIHRoZXJl
J3Mgbm90aGluZyBiZXR0ZXIgd2UgY2FuIGRvIGFuZCB3ZQorICAgICAgLy8gZG9uJ3Qgd2FudCB0
byBmYWlsIHRoZSB0ZXN0IGJlY2F1c2Ugb2YgdGhpcy4KKyAgICAgIEZJTEUqIHBmaWxlID0gcG9z
aXg6OkZPcGVuKHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoLCAidyIpOworICAgICAgZndyaXRlKCIw
IiwgMSwgMSwgcGZpbGUpOworICAgICAgZmNsb3NlKHBmaWxlKTsKKyAgICB9CisgIH0KKworICB+
U2NvcGVkUHJlbWF0dXJlRXhpdEZpbGUoKSB7CisgICAgaWYgKCFwcmVtYXR1cmVfZXhpdF9maWxl
cGF0aF8uZW1wdHkoKSkgeworICAgICAgaW50IHJldHZhbCA9IHJlbW92ZShwcmVtYXR1cmVfZXhp
dF9maWxlcGF0aF8uY19zdHIoKSk7CisgICAgICBpZiAocmV0dmFsKSB7CisgICAgICAgIEdURVNU
X0xPR18oRVJST1IpIDw8ICJGYWlsZWQgdG8gcmVtb3ZlIHByZW1hdHVyZSBleGl0IGZpbGVwYXRo
IFwiIgorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBwcmVtYXR1cmVfZXhpdF9maWxlcGF0
aF8gPDwgIlwiIHdpdGggZXJyb3IgIgorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCByZXR2
YWw7CisgICAgICB9CisgICAgfQorICB9CisKKyBwcml2YXRlOgorICBjb25zdCBzdGQ6OnN0cmlu
ZyBwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOXyhTY29wZWRQcmVtYXR1cmVFeGl0RmlsZSk7Cit9OworCiB9ICAvLyBuYW1lc3BhY2Ug
aW50ZXJuYWwKIAogLy8gY2xhc3MgVGVzdEV2ZW50TGlzdGVuZXJzCkBAIC0zNDMxLDcgKzQ0OTMs
NyBAQCB2b2lkIFRlc3RFdmVudExpc3RlbmVyczo6U3VwcHJlc3NFdmVudEZvcndhcmRpbmcoKSB7
CiAvLyBXZSBkb24ndCBwcm90ZWN0IHRoaXMgdW5kZXIgbXV0ZXhfIGFzIGEgdXNlciBpcyBub3Qg
c3VwcG9zZWQgdG8KIC8vIGNhbGwgdGhpcyBiZWZvcmUgbWFpbigpIHN0YXJ0cywgZnJvbSB3aGlj
aCBwb2ludCBvbiB0aGUgcmV0dXJuCiAvLyB2YWx1ZSB3aWxsIG5ldmVyIGNoYW5nZS4KLVVuaXRU
ZXN0ICogVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkgeworVW5pdFRlc3QqIFVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpIHsKICAgLy8gV2hlbiBjb21waWxlZCB3aXRoIE1TVkMgNy4xIGluIG9wdGltaXpl
ZCBtb2RlLCBkZXN0cm95aW5nIHRoZQogICAvLyBVbml0VGVzdCBvYmplY3QgdXBvbiBleGl0aW5n
IHRoZSBwcm9ncmFtIG1lc3NlcyB1cCB0aGUgZXhpdCBjb2RlLAogICAvLyBjYXVzaW5nIHN1Y2Nl
c3NmdWwgdGVzdHMgdG8gYXBwZWFyIGZhaWxlZC4gIFdlIGhhdmUgdG8gdXNlIGEKQEAgLTM0ODEs
MTcgKzQ1NDMsMzMgQEAgaW50IFVuaXRUZXN0OjpzdWNjZXNzZnVsX3Rlc3RfY291bnQoKSBjb25z
dCB7CiAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZmFpbGVkIHRlc3RzLgogaW50IFVuaXRUZXN0Ojpm
YWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsgcmV0dXJuIGltcGwoKS0+ZmFpbGVkX3Rlc3RfY291
bnQoKTsgfQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxs
IGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0LgoraW50IFVuaXRUZXN0OjpyZXBvcnRhYmxl
X2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBpbXBsKCktPnJlcG9ydGFi
bGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpOworfQorCiAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlz
YWJsZWQgdGVzdHMuCiBpbnQgVW5pdFRlc3Q6OmRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7
CiAgIHJldHVybiBpbXBsKCktPmRpc2FibGVkX3Rlc3RfY291bnQoKTsKIH0KIAorLy8gR2V0cyB0
aGUgbnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50ZWQgaW4gdGhlIFhNTCByZXBvcnQuCitpbnQg
VW5pdFRlc3Q6OnJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNvbnN0IHsKKyAgcmV0dXJuIGltcGwo
KS0+cmVwb3J0YWJsZV90ZXN0X2NvdW50KCk7Cit9CisKIC8vIEdldHMgdGhlIG51bWJlciBvZiBh
bGwgdGVzdHMuCiBpbnQgVW5pdFRlc3Q6OnRvdGFsX3Rlc3RfY291bnQoKSBjb25zdCB7IHJldHVy
biBpbXBsKCktPnRvdGFsX3Rlc3RfY291bnQoKTsgfQogCiAvLyBHZXRzIHRoZSBudW1iZXIgb2Yg
dGVzdHMgdGhhdCBzaG91bGQgcnVuLgogaW50IFVuaXRUZXN0Ojp0ZXN0X3RvX3J1bl9jb3VudCgp
IGNvbnN0IHsgcmV0dXJuIGltcGwoKS0+dGVzdF90b19ydW5fY291bnQoKTsgfQogCisvLyBHZXRz
IHRoZSB0aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0gc3RhcnQsIGluIG1zIGZyb20gdGhlIHN0YXJ0
IG9mIHRoZQorLy8gVU5JWCBlcG9jaC4KK2ludGVybmFsOjpUaW1lSW5NaWxsaXMgVW5pdFRlc3Q6
OnN0YXJ0X3RpbWVzdGFtcCgpIGNvbnN0IHsKKyAgICByZXR1cm4gaW1wbCgpLT5zdGFydF90aW1l
c3RhbXAoKTsKK30KKwogLy8gR2V0cyB0aGUgZWxhcHNlZCB0aW1lLCBpbiBtaWxsaXNlY29uZHMu
CiBpbnRlcm5hbDo6VGltZUluTWlsbGlzIFVuaXRUZXN0OjplbGFwc2VkX3RpbWUoKSBjb25zdCB7
CiAgIHJldHVybiBpbXBsKCktPmVsYXBzZWRfdGltZSgpOwpAQCAtMzUxMCw2ICs0NTg4LDEyIEBA
IGNvbnN0IFRlc3RDYXNlKiBVbml0VGVzdDo6R2V0VGVzdENhc2UoaW50IGkpIGNvbnN0IHsKICAg
cmV0dXJuIGltcGwoKS0+R2V0VGVzdENhc2UoaSk7CiB9CiAKKy8vIFJldHVybnMgdGhlIFRlc3RS
ZXN1bHQgY29udGFpbmluZyBpbmZvcm1hdGlvbiBvbiB0ZXN0IGZhaWx1cmVzIGFuZAorLy8gcHJv
cGVydGllcyBsb2dnZWQgb3V0c2lkZSBvZiBpbmRpdmlkdWFsIHRlc3QgY2FzZXMuCitjb25zdCBU
ZXN0UmVzdWx0JiBVbml0VGVzdDo6YWRfaG9jX3Rlc3RfcmVzdWx0KCkgY29uc3QgeworICByZXR1
cm4gKmltcGwoKS0+YWRfaG9jX3Rlc3RfcmVzdWx0KCk7Cit9CisKIC8vIEdldHMgdGhlIGktdGgg
dGVzdCBjYXNlIGFtb25nIGFsbCB0aGUgdGVzdCBjYXNlcy4gaSBjYW4gcmFuZ2UgZnJvbSAwIHRv
CiAvLyB0b3RhbF90ZXN0X2Nhc2VfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFu
Z2UsIHJldHVybnMgTlVMTC4KIFRlc3RDYXNlKiBVbml0VGVzdDo6R2V0TXV0YWJsZVRlc3RDYXNl
KGludCBpKSB7CkBAIC0zNTQxLDI5ICs0NjI1LDE2IEBAIEVudmlyb25tZW50KiBVbml0VGVzdDo6
QWRkRW52aXJvbm1lbnQoRW52aXJvbm1lbnQqIGVudikgewogICByZXR1cm4gZW52OwogfQogCi0j
aWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLS8vIEEgZmFpbGVkIEdvb2dsZSBUZXN0IGFzc2VydGlv
biB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBvZiB0aGlzIHR5cGUKLS8vIHdoZW4gZXhjZXB0aW9u
cyBhcmUgZW5hYmxlZC4gIFdlIGRlcml2ZSBpdCBmcm9tIHN0ZDo6cnVudGltZV9lcnJvciwKLS8v
IHdoaWNoIGlzIGZvciBlcnJvcnMgcHJlc3VtYWJseSBkZXRlY3RhYmxlIG9ubHkgYXQgcnVuIHRp
bWUuICBTaW5jZQotLy8gc3RkOjpydW50aW1lX2Vycm9yIGluaGVyaXRzIGZyb20gc3RkOjpleGNl
cHRpb24sIG1hbnkgdGVzdGluZwotLy8gZnJhbWV3b3JrcyBrbm93IGhvdyB0byBleHRyYWN0IGFu
ZCBwcmludCB0aGUgbWVzc2FnZSBpbnNpZGUgaXQuCi1jbGFzcyBHb29nbGVUZXN0RmFpbHVyZUV4
Y2VwdGlvbiA6IHB1YmxpYyA6OnN0ZDo6cnVudGltZV9lcnJvciB7Ci0gcHVibGljOgotICBleHBs
aWNpdCBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbihjb25zdCBUZXN0UGFydFJlc3VsdCYgZmFp
bHVyZSkKLSAgICAgIDogOjpzdGQ6OnJ1bnRpbWVfZXJyb3IoUHJpbnRUZXN0UGFydFJlc3VsdFRv
U3RyaW5nKGZhaWx1cmUpLmNfc3RyKCkpIHt9Ci19OwotI2VuZGlmCi0KIC8vIEFkZHMgYSBUZXN0
UGFydFJlc3VsdCB0byB0aGUgY3VycmVudCBUZXN0UmVzdWx0IG9iamVjdC4gIEFsbCBHb29nbGUg
VGVzdAogLy8gYXNzZXJ0aW9uIG1hY3JvcyAoZS5nLiBBU1NFUlRfVFJVRSwgRVhQRUNUX0VRLCBl
dGMpIGV2ZW50dWFsbHkgY2FsbAogLy8gdGhpcyB0byByZXBvcnQgdGhlaXIgcmVzdWx0cy4gIFRo
ZSB1c2VyIGNvZGUgc2hvdWxkIHVzZSB0aGUKIC8vIGFzc2VydGlvbiBtYWNyb3MgaW5zdGVhZCBv
ZiBjYWxsaW5nIHRoaXMgZGlyZWN0bHkuCi0vLyBMIDwgbXV0ZXhfCi12b2lkIFVuaXRUZXN0OjpB
ZGRUZXN0UGFydFJlc3VsdChUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGVfbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lX251bWJlciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludGVybmFsOjpTdHJpbmcmIG1lc3NhZ2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnRlcm5hbDo6U3RyaW5nJiBv
c19zdGFja190cmFjZSkgewordm9pZCBVbml0VGVzdDo6QWRkVGVzdFBhcnRSZXN1bHQoCisgICAg
VGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCisgICAgY29uc3QgY2hhciogZmlsZV9u
YW1lLAorICAgIGludCBsaW5lX251bWJlciwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2Fn
ZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3Nfc3RhY2tfdHJhY2UpIEdURVNUX0xPQ0tfRVhD
TFVERURfKG11dGV4XykgewogICBNZXNzYWdlIG1zZzsKICAgbXNnIDw8IG1lc3NhZ2U7CiAKQEAg
LTM1OTYsMTcgKzQ2NjcsMjYgQEAgdm9pZCBVbml0VGVzdDo6QWRkVGVzdFBhcnRSZXN1bHQoVGVz
dFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCiAgICAgLy8gd2l0aCBhbm90aGVyIHRlc3Rp
bmcgZnJhbWV3b3JrKSBhbmQgc3BlY2lmeSB0aGUgZm9ybWVyIG9uIHRoZQogICAgIC8vIGNvbW1h
bmQgbGluZSBmb3IgZGVidWdnaW5nLgogICAgIGlmIChHVEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1
cmUpKSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUworI2lmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdU
RVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQKICAgICAgIC8vIFVz
aW5nIERlYnVnQnJlYWsgb24gV2luZG93cyBhbGxvd3MgZ3Rlc3QgdG8gc3RpbGwgYnJlYWsgaW50
byBhIGRlYnVnZ2VyCiAgICAgICAvLyB3aGVuIGEgZmFpbHVyZSBoYXBwZW5zIGFuZCBib3RoIHRo
ZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgYW5kCiAgICAgICAvLyB0aGUgLS1ndGVzdF9jYXRj
aF9leGNlcHRpb25zIGZsYWdzIGFyZSBzcGVjaWZpZWQuCiAgICAgICBEZWJ1Z0JyZWFrKCk7Cisj
ZWxpZiAoIWRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pKSAmJiAgICAgICAgICAgIFwKKyAgICAo
KGRlZmluZWQoX19jbGFuZ19fKSB8fCBkZWZpbmVkKF9fR05VQ19fKSkgJiYgXAorICAgICAoZGVm
aW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9faTM4Nl9fKSkpCisgICAgICAvLyB3aXRoIGNs
YW5nL2djYyB3ZSBjYW4gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3Qgb24geDg2IGJ5IGludm9raW5n
IGludDMKKyAgICAgIGFzbSgiaW50MyIpOwogI2Vsc2UKKyAgICAgIC8vIERlcmVmZXJlbmNlIE5V
TEwgdGhyb3VnaCBhIHZvbGF0aWxlIHBvaW50ZXIgdG8gcHJldmVudCB0aGUgY29tcGlsZXIKKyAg
ICAgIC8vIGZyb20gcmVtb3ZpbmcuIFdlIHVzZSB0aGlzIHJhdGhlciB0aGFuIGFib3J0KCkgb3Ig
X19idWlsdGluX3RyYXAoKSBmb3IKKyAgICAgIC8vIHBvcnRhYmlsaXR5OiBTeW1iaWFuIGRvZXNu
J3QgaW1wbGVtZW50IGFib3J0KCkgd2VsbCwgYW5kIHNvbWUgZGVidWdnZXJzCisgICAgICAvLyBk
b24ndCBjb3JyZWN0bHkgdHJhcCBhYm9ydCgpLgogICAgICAgKnN0YXRpY19jYXN0PHZvbGF0aWxl
IGludCo+KE5VTEwpID0gMTsKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogICAgIH0gZWxz
ZSBpZiAoR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSkgewogI2lmIEdURVNUX0hBU19FWENF
UFRJT05TCi0gICAgICB0aHJvdyBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbihyZXN1bHQpOwor
ICAgICAgdGhyb3cgaW50ZXJuYWw6Okdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uKHJlc3VsdCk7
CiAjZWxzZQogICAgICAgLy8gV2UgY2Fubm90IGNhbGwgYWJvcnQoKSBhcyBpdCBnZW5lcmF0ZXMg
YSBwb3AtdXAgaW4gZGVidWcgbW9kZQogICAgICAgLy8gdGhhdCBjYW5ub3QgYmUgc3VwcHJlc3Nl
ZCBpbiBWQyA3LjEgb3IgYmVsb3cuCkBAIC0zNjE2LDEyICs0Njk2LDE0IEBAIHZvaWQgVW5pdFRl
c3Q6OkFkZFRlc3RQYXJ0UmVzdWx0KFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAog
ICB9CiB9CiAKLS8vIENyZWF0ZXMgYW5kIGFkZHMgYSBwcm9wZXJ0eSB0byB0aGUgY3VycmVudCBU
ZXN0UmVzdWx0LiBJZiBhIHByb3BlcnR5IG1hdGNoaW5nCi0vLyB0aGUgc3VwcGxpZWQgdmFsdWUg
YWxyZWFkeSBleGlzdHMsIHVwZGF0ZXMgaXRzIHZhbHVlIGluc3RlYWQuCi12b2lkIFVuaXRUZXN0
OjpSZWNvcmRQcm9wZXJ0eUZvckN1cnJlbnRUZXN0KGNvbnN0IGNoYXIqIGtleSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdmFsdWUpIHsK
LSAgY29uc3QgVGVzdFByb3BlcnR5IHRlc3RfcHJvcGVydHkoa2V5LCB2YWx1ZSk7Ci0gIGltcGxf
LT5jdXJyZW50X3Rlc3RfcmVzdWx0KCktPlJlY29yZFByb3BlcnR5KHRlc3RfcHJvcGVydHkpOwor
Ly8gQWRkcyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUgY3VycmVudCBUZXN0UmVzdWx0IG9iamVjdCB3
aGVuIGludm9rZWQgZnJvbQorLy8gaW5zaWRlIGEgdGVzdCwgdG8gY3VycmVudCBUZXN0Q2FzZSdz
IGFkX2hvY190ZXN0X3Jlc3VsdF8gd2hlbiBpbnZva2VkCisvLyBmcm9tIFNldFVwVGVzdENhc2Ug
b3IgVGVhckRvd25UZXN0Q2FzZSwgb3IgdG8gdGhlIGdsb2JhbCBwcm9wZXJ0eSBzZXQKKy8vIHdo
ZW4gaW52b2tlZCBlbHNld2hlcmUuICBJZiB0aGUgcmVzdWx0IGFscmVhZHkgY29udGFpbnMgYSBw
cm9wZXJ0eSB3aXRoCisvLyB0aGUgc2FtZSBrZXksIHRoZSB2YWx1ZSB3aWxsIGJlIHVwZGF0ZWQu
Cit2b2lkIFVuaXRUZXN0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYga2V5LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSB7
CisgIGltcGxfLT5SZWNvcmRQcm9wZXJ0eShUZXN0UHJvcGVydHkoa2V5LCB2YWx1ZSkpOwogfQog
CiAvLyBSdW5zIGFsbCB0ZXN0cyBpbiB0aGlzIFVuaXRUZXN0IG9iamVjdCBhbmQgcHJpbnRzIHRo
ZSByZXN1bHQuCkBAIC0zNjMwLDMxICs0NzEyLDU4IEBAIHZvaWQgVW5pdFRlc3Q6OlJlY29yZFBy
b3BlcnR5Rm9yQ3VycmVudFRlc3QoY29uc3QgY2hhcioga2V5LAogLy8gV2UgZG9uJ3QgcHJvdGVj
dCB0aGlzIHVuZGVyIG11dGV4XywgYXMgd2Ugb25seSBzdXBwb3J0IGNhbGxpbmcgaXQKIC8vIGZy
b20gdGhlIG1haW4gdGhyZWFkLgogaW50IFVuaXRUZXN0OjpSdW4oKSB7Ci0jaWYgR1RFU1RfSEFT
X1NFSAotICAvLyBDYXRjaCBTRUgtc3R5bGUgZXhjZXB0aW9ucy4KLQogICBjb25zdCBib29sIGlu
X2RlYXRoX3Rlc3RfY2hpbGRfcHJvY2VzcyA9CiAgICAgICBpbnRlcm5hbDo6R1RFU1RfRkxBRyhp
bnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkubGVuZ3RoKCkgPiAwOwogCisgIC8vIEdvb2dsZSBUZXN0
IGltcGxlbWVudHMgdGhpcyBwcm90b2NvbCBmb3IgY2F0Y2hpbmcgdGhhdCBhIHRlc3QKKyAgLy8g
cHJvZ3JhbSBleGl0cyBiZWZvcmUgcmV0dXJuaW5nIGNvbnRyb2wgdG8gR29vZ2xlIFRlc3Q6Cisg
IC8vCisgIC8vICAgMS4gVXBvbiBzdGFydCwgR29vZ2xlIFRlc3QgY3JlYXRlcyBhIGZpbGUgd2hv
c2UgYWJzb2x1dGUgcGF0aAorICAvLyAgICAgIGlzIHNwZWNpZmllZCBieSB0aGUgZW52aXJvbm1l
bnQgdmFyaWFibGUKKyAgLy8gICAgICBURVNUX1BSRU1BVFVSRV9FWElUX0ZJTEUuCisgIC8vICAg
Mi4gV2hlbiBHb29nbGUgVGVzdCBoYXMgZmluaXNoZWQgaXRzIHdvcmssIGl0IGRlbGV0ZXMgdGhl
IGZpbGUuCisgIC8vCisgIC8vIFRoaXMgYWxsb3dzIGEgdGVzdCBydW5uZXIgdG8gc2V0IFRFU1Rf
UFJFTUFUVVJFX0VYSVRfRklMRSBiZWZvcmUKKyAgLy8gcnVubmluZyBhIEdvb2dsZS1UZXN0LWJh
c2VkIHRlc3QgcHJvZ3JhbSBhbmQgY2hlY2sgdGhlIGV4aXN0ZW5jZQorICAvLyBvZiB0aGUgZmls
ZSBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0IGV4ZWN1dGlvbiB0byBzZWUgaWYgaXQgaGFzCisgIC8v
IGV4aXRlZCBwcmVtYXR1cmVseS4KKworICAvLyBJZiB3ZSBhcmUgaW4gdGhlIGNoaWxkIHByb2Nl
c3Mgb2YgYSBkZWF0aCB0ZXN0LCBkb24ndAorICAvLyBjcmVhdGUvZGVsZXRlIHRoZSBwcmVtYXR1
cmUgZXhpdCBmaWxlLCBhcyBkb2luZyBzbyBpcyB1bm5lY2Vzc2FyeQorICAvLyBhbmQgd2lsbCBj
b25mdXNlIHRoZSBwYXJlbnQgcHJvY2Vzcy4gIE90aGVyd2lzZSwgY3JlYXRlL2RlbGV0ZQorICAv
LyB0aGUgZmlsZSB1cG9uIGVudGVyaW5nL2xlYXZpbmcgdGhpcyBmdW5jdGlvbi4gIElmIHRoZSBw
cm9ncmFtCisgIC8vIHNvbWVob3cgZXhpdHMgYmVmb3JlIHRoaXMgZnVuY3Rpb24gaGFzIGEgY2hh
bmNlIHRvIHJldHVybiwgdGhlCisgIC8vIHByZW1hdHVyZS1leGl0IGZpbGUgd2lsbCBiZSBsZWZ0
IHVuZGVsZXRlZCwgY2F1c2luZyBhIHRlc3QgcnVubmVyCisgIC8vIHRoYXQgdW5kZXJzdGFuZHMg
dGhlIHByZW1hdHVyZS1leGl0LWZpbGUgcHJvdG9jb2wgdG8gcmVwb3J0IHRoZQorICAvLyB0ZXN0
IGFzIGhhdmluZyBmYWlsZWQuCisgIGNvbnN0IGludGVybmFsOjpTY29wZWRQcmVtYXR1cmVFeGl0
RmlsZSBwcmVtYXR1cmVfZXhpdF9maWxlKAorICAgICAgaW5fZGVhdGhfdGVzdF9jaGlsZF9wcm9j
ZXNzID8KKyAgICAgIE5VTEwgOiBpbnRlcm5hbDo6cG9zaXg6OkdldEVudigiVEVTVF9QUkVNQVRV
UkVfRVhJVF9GSUxFIikpOworCisgIC8vIENhcHR1cmVzIHRoZSB2YWx1ZSBvZiBHVEVTVF9GTEFH
KGNhdGNoX2V4Y2VwdGlvbnMpLiAgVGhpcyB2YWx1ZSB3aWxsIGJlCisgIC8vIHVzZWQgZm9yIHRo
ZSBkdXJhdGlvbiBvZiB0aGUgcHJvZ3JhbS4KKyAgaW1wbCgpLT5zZXRfY2F0Y2hfZXhjZXB0aW9u
cyhHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKTsKKworI2lmIEdURVNUX09TX1dJTkRPV1MK
ICAgLy8gRWl0aGVyIHRoZSB1c2VyIHdhbnRzIEdvb2dsZSBUZXN0IHRvIGNhdGNoIGV4Y2VwdGlv
bnMgdGhyb3duIGJ5IHRoZQogICAvLyB0ZXN0cyBvciB0aGlzIGlzIGV4ZWN1dGluZyBpbiB0aGUg
Y29udGV4dCBvZiBkZWF0aCB0ZXN0IGNoaWxkCiAgIC8vIHByb2Nlc3MuIEluIGVpdGhlciBjYXNl
IHRoZSB1c2VyIGRvZXMgbm90IHdhbnQgdG8gc2VlIHBvcC11cCBkaWFsb2dzCi0gIC8vIGFib3V0
IGNyYXNoZXMgLSB0aGV5IGFyZSBleHBlY3RlZC4uCi0gIGlmIChHVEVTVF9GTEFHKGNhdGNoX2V4
Y2VwdGlvbnMpIHx8IGluX2RlYXRoX3Rlc3RfY2hpbGRfcHJvY2VzcykgewotI2lmICFHVEVTVF9P
U19XSU5ET1dTX01PQklMRQorICAvLyBhYm91dCBjcmFzaGVzIC0gdGhleSBhcmUgZXhwZWN0ZWQu
CisgIGlmIChpbXBsKCktPmNhdGNoX2V4Y2VwdGlvbnMoKSB8fCBpbl9kZWF0aF90ZXN0X2NoaWxk
X3Byb2Nlc3MpIHsKKyMgaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFICYmICFHVEVTVF9PU19X
SU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUCiAgICAgLy8gU2V0RXJyb3JNb2Rl
IGRvZXNuJ3QgZXhpc3Qgb24gQ0UuCiAgICAgU2V0RXJyb3JNb2RlKFNFTV9GQUlMQ1JJVElDQUxF
UlJPUlMgfCBTRU1fTk9BTElHTk1FTlRGQVVMVEVYQ0VQVCB8CiAgICAgICAgICAgICAgICAgIFNF
TV9OT0dQRkFVTFRFUlJPUkJPWCB8IFNFTV9OT09QRU5GSUxFRVJST1JCT1gpOwotI2VuZGlmICAv
LyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dT
X01PQklMRQogCi0jaWYgKGRlZmluZWQoX01TQ19WRVIpIHx8IEdURVNUX09TX1dJTkRPV1NfTUlO
R1cpICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBpZiAoZGVmaW5lZChfTVNDX1ZFUikg
fHwgR1RFU1RfT1NfV0lORE9XU19NSU5HVykgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAg
ICAgLy8gRGVhdGggdGVzdCBjaGlsZHJlbiBjYW4gYmUgdGVybWluYXRlZCB3aXRoIF9hYm9ydCgp
LiAgT24gV2luZG93cywKICAgICAvLyBfYWJvcnQoKSBjYW4gc2hvdyBhIGRpYWxvZyB3aXRoIGEg
d2FybmluZyBtZXNzYWdlLiAgVGhpcyBmb3JjZXMgdGhlCiAgICAgLy8gYWJvcnQgbWVzc2FnZSB0
byBnbyB0byBzdGRlcnIgaW5zdGVhZC4KICAgICBfc2V0X2Vycm9yX21vZGUoX09VVF9UT19TVERF
UlIpOwotI2VuZGlmCisjIGVuZGlmCiAKLSNpZiBfTVNDX1ZFUiA+PSAxNDAwICYmICFHVEVTVF9P
U19XSU5ET1dTX01PQklMRQorIyBpZiBfTVNDX1ZFUiA+PSAxNDAwICYmICFHVEVTVF9PU19XSU5E
T1dTX01PQklMRQogICAgIC8vIEluIHRoZSBkZWJ1ZyB2ZXJzaW9uLCBWaXN1YWwgU3R1ZGlvIHBv
cHMgdXAgYSBzZXBhcmF0ZSBkaWFsb2cKICAgICAvLyBvZmZlcmluZyBhIGNob2ljZSB0byBkZWJ1
ZyB0aGUgYWJvcnRlZCBwcm9ncmFtLiBXZSBuZWVkIHRvIHN1cHByZXNzCiAgICAgLy8gdGhpcyBk
aWFsb2cgb3IgaXQgd2lsbCBwb3AgdXAgZm9yIGV2ZXJ5IEVYUEVDVC9BU1NFUlRfREVBVEggc3Rh
dGVtZW50CkBAIC0zNjY0LDI4ICs0NzczLDIwIEBAIGludCBVbml0VGVzdDo6UnVuKCkgewogICAg
IC8vIFZDKysgZG9lc24ndCBkZWZpbmUgX3NldF9hYm9ydF9iZWhhdmlvcigpIHByaW9yIHRvIHRo
ZSB2ZXJzaW9uIDguMC4KICAgICAvLyBVc2VycyBvZiBwcmlvciBWQyB2ZXJzaW9ucyBzaGFsbCBz
dWZmZXIgdGhlIGFnb255IGFuZCBwYWluIG9mCiAgICAgLy8gY2xpY2tpbmcgdGhyb3VnaCB0aGUg
Y291bnRsZXNzIGRlYnVnIGRpYWxvZ3MuCi0gICAgLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTog
ZmluZCBhIHdheSB0byBzdXBwcmVzcyB0aGUgYWJvcnQgZGlhbG9nKCkgaW4gdGhlCisgICAgLy8g
RklYTUU6IGZpbmQgYSB3YXkgdG8gc3VwcHJlc3MgdGhlIGFib3J0IGRpYWxvZygpIGluIHRoZQog
ICAgIC8vIGRlYnVnIG1vZGUgd2hlbiBjb21waWxlZCB3aXRoIFZDIDcuMSBvciBsb3dlci4KICAg
ICBpZiAoIUdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSkpCiAgICAgICBfc2V0X2Fib3J0X2Jl
aGF2aW9yKAogICAgICAgICAgIDB4MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBDbGVhciB0aGUgZm9sbG93aW5nIGZsYWdzOgogICAgICAgICAgIF9XUklURV9BQk9SVF9N
U0cgfCBfQ0FMTF9SRVBPUlRGQVVMVCk7ICAvLyBwb3AtdXAgd2luZG93LCBjb3JlIGR1bXAuCi0j
ZW5kaWYKKyMgZW5kaWYKICAgfQorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCiAKLSAgX190
cnkgewotICAgIHJldHVybiBpbXBsXy0+UnVuQWxsVGVzdHMoKTsKLSAgfSBfX2V4Y2VwdChpbnRl
cm5hbDo6VW5pdFRlc3RPcHRpb25zOjpHVGVzdFNob3VsZFByb2Nlc3NTRUgoCi0gICAgICBHZXRF
eGNlcHRpb25Db2RlKCkpKSB7Ci0gICAgcHJpbnRmKCJFeGNlcHRpb24gdGhyb3duIHdpdGggY29k
ZSAweCV4LlxuRkFJTFxuIiwgR2V0RXhjZXB0aW9uQ29kZSgpKTsKLSAgICBmZmx1c2goc3Rkb3V0
KTsKLSAgICByZXR1cm4gMTsKLSAgfQotCi0jZWxzZSAgLy8gV2UgYXJlIG9uIGEgY29tcGlsZXIg
b3IgcGxhdGZvcm0gdGhhdCBkb2Vzbid0IHN1cHBvcnQgU0VILgotCi0gIHJldHVybiBpbXBsXy0+
UnVuQWxsVGVzdHMoKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAorICByZXR1cm4gaW50ZXJu
YWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAorICAgICAgaW1wbCgpLAor
ICAgICAgJmludGVybmFsOjpVbml0VGVzdEltcGw6OlJ1bkFsbFRlc3RzLAorICAgICAgImF1eGls
aWFyeSB0ZXN0IGNvZGUgKGVudmlyb25tZW50cyBvciBldmVudCBsaXN0ZW5lcnMpIikgPyAwIDog
MTsKIH0KIAogLy8gUmV0dXJucyB0aGUgd29ya2luZyBkaXJlY3Rvcnkgd2hlbiB0aGUgZmlyc3Qg
VEVTVCgpIG9yIFRFU1RfRigpIHdhcwpAQCAtMzY5NiwxNiArNDc5NywxNiBAQCBjb25zdCBjaGFy
KiBVbml0VGVzdDo6b3JpZ2luYWxfd29ya2luZ19kaXIoKSBjb25zdCB7CiAKIC8vIFJldHVybnMg
dGhlIFRlc3RDYXNlIG9iamVjdCBmb3IgdGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5n
LAogLy8gb3IgTlVMTCBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcuCi0vLyBMIDwgbXV0ZXhfCi1jb25z
dCBUZXN0Q2FzZSogVW5pdFRlc3Q6OmN1cnJlbnRfdGVzdF9jYXNlKCkgY29uc3QgeworY29uc3Qg
VGVzdENhc2UqIFVuaXRUZXN0OjpjdXJyZW50X3Rlc3RfY2FzZSgpIGNvbnN0CisgICAgR1RFU1Rf
TE9DS19FWENMVURFRF8obXV0ZXhfKSB7CiAgIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0
ZXhfKTsKICAgcmV0dXJuIGltcGxfLT5jdXJyZW50X3Rlc3RfY2FzZSgpOwogfQogCiAvLyBSZXR1
cm5zIHRoZSBUZXN0SW5mbyBvYmplY3QgZm9yIHRoZSB0ZXN0IHRoYXQncyBjdXJyZW50bHkgcnVu
bmluZywKIC8vIG9yIE5VTEwgaWYgbm8gdGVzdCBpcyBydW5uaW5nLgotLy8gTCA8IG11dGV4Xwot
Y29uc3QgVGVzdEluZm8qIFVuaXRUZXN0OjpjdXJyZW50X3Rlc3RfaW5mbygpIGNvbnN0IHsKK2Nv
bnN0IFRlc3RJbmZvKiBVbml0VGVzdDo6Y3VycmVudF90ZXN0X2luZm8oKSBjb25zdAorICAgIEdU
RVNUX0xPQ0tfRVhDTFVERURfKG11dGV4XykgewogICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGxvY2so
Jm11dGV4Xyk7CiAgIHJldHVybiBpbXBsXy0+Y3VycmVudF90ZXN0X2luZm8oKTsKIH0KQEAgLTM3
MTMsMTUgKzQ4MTQsMTMgQEAgY29uc3QgVGVzdEluZm8qIFVuaXRUZXN0OjpjdXJyZW50X3Rlc3Rf
aW5mbygpIGNvbnN0IHsKIC8vIFJldHVybnMgdGhlIHJhbmRvbSBzZWVkIHVzZWQgYXQgdGhlIHN0
YXJ0IG9mIHRoZSBjdXJyZW50IHRlc3QgcnVuLgogaW50IFVuaXRUZXN0OjpyYW5kb21fc2VlZCgp
IGNvbnN0IHsgcmV0dXJuIGltcGxfLT5yYW5kb21fc2VlZCgpOyB9CiAKLSNpZiBHVEVTVF9IQVNf
UEFSQU1fVEVTVAogLy8gUmV0dXJucyBQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSBvYmpl
Y3QgdXNlZCB0byBrZWVwIHRyYWNrIG9mCiAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFu
ZCBpbnN0YW50aWF0ZSBhbmQgcmVnaXN0ZXIgdGhlbS4KLS8vIEwgPCBtdXRleF8KIGludGVybmFs
OjpQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSYKLSAgICBVbml0VGVzdDo6cGFyYW1ldGVy
aXplZF90ZXN0X3JlZ2lzdHJ5KCkgeworICAgIFVuaXRUZXN0OjpwYXJhbWV0ZXJpemVkX3Rlc3Rf
cmVnaXN0cnkoKQorICAgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pIHsKICAgcmV0
dXJuIGltcGxfLT5wYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKTsKIH0KLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1BBUkFNX1RFU1QKIAogLy8gQ3JlYXRlcyBhbiBlbXB0eSBVbml0VGVzdC4KIFVu
aXRUZXN0OjpVbml0VGVzdCgpIHsKQEAgLTM3MzUsMTUgKzQ4MzQsMTUgQEAgVW5pdFRlc3Q6On5V
bml0VGVzdCgpIHsKIAogLy8gUHVzaGVzIGEgdHJhY2UgZGVmaW5lZCBieSBTQ09QRURfVFJBQ0Uo
KSBvbiB0byB0aGUgcGVyLXRocmVhZAogLy8gR29vZ2xlIFRlc3QgdHJhY2Ugc3RhY2suCi0vLyBM
IDwgbXV0ZXhfCi12b2lkIFVuaXRUZXN0OjpQdXNoR1Rlc3RUcmFjZShjb25zdCBpbnRlcm5hbDo6
VHJhY2VJbmZvJiB0cmFjZSkgewordm9pZCBVbml0VGVzdDo6UHVzaEdUZXN0VHJhY2UoY29uc3Qg
aW50ZXJuYWw6OlRyYWNlSW5mbyYgdHJhY2UpCisgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0
ZXhfKSB7CiAgIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKICAgaW1wbF8tPmd0
ZXN0X3RyYWNlX3N0YWNrKCkucHVzaF9iYWNrKHRyYWNlKTsKIH0KIAogLy8gUG9wcyBhIHRyYWNl
IGZyb20gdGhlIHBlci10aHJlYWQgR29vZ2xlIFRlc3QgdHJhY2Ugc3RhY2suCi0vLyBMIDwgbXV0
ZXhfCi12b2lkIFVuaXRUZXN0OjpQb3BHVGVzdFRyYWNlKCkgewordm9pZCBVbml0VGVzdDo6UG9w
R1Rlc3RUcmFjZSgpCisgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7CiAgIGludGVy
bmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKICAgaW1wbF8tPmd0ZXN0X3RyYWNlX3N0YWNr
KCkucG9wX2JhY2soKTsKIH0KQEAgLTM3NTIsMjUgKzQ4NTEsMTYgQEAgbmFtZXNwYWNlIGludGVy
bmFsIHsKIAogVW5pdFRlc3RJbXBsOjpVbml0VGVzdEltcGwoVW5pdFRlc3QqIHBhcmVudCkKICAg
ICA6IHBhcmVudF8ocGFyZW50KSwKLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHB1
c2gpICAgICAgICAgICAgICAgICAgICAvLyBTYXZlcyB0aGUgY3VycmVudCB3YXJuaW5nIHN0YXRl
LgotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDM1NSkgICAgICAgICAgICAvLyBUZW1wb3Jhcmls
eSBkaXNhYmxlcyB3YXJuaW5nIDQzNTUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gKHVzaW5nIHRoaXMgaW4gaW5pdGlhbGl6ZXIpLgotICAgICAgZGVmYXVsdF9n
bG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8odGhpcyksCi0gICAgICBkZWZhdWx0X3Bl
cl90aHJlYWRfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8odGhpcyksCi0jcHJhZ21hIHdhcm5p
bmcocG9wKSAgICAgICAgICAgICAgICAgICAgIC8vIFJlc3RvcmVzIHRoZSB3YXJuaW5nIHN0YXRl
IGFnYWluLgotI2Vsc2UKKyAgICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQz
NTUgLyogdXNpbmcgdGhpcyBpbiBpbml0aWFsaXplciAqLykKICAgICAgIGRlZmF1bHRfZ2xvYmFs
X3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfKHRoaXMpLAogICAgICAgZGVmYXVsdF9wZXJfdGhy
ZWFkX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfKHRoaXMpLAotI2VuZGlmICAvLyBfTVNDX1ZF
UgorICAgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCiAgICAgICBnbG9iYWxf
dGVzdF9wYXJ0X3Jlc3VsdF9yZXBvdGVyXygKICAgICAgICAgICAmZGVmYXVsdF9nbG9iYWxfdGVz
dF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8pLAogICAgICAgcGVyX3RocmVhZF90ZXN0X3BhcnRfcmVz
dWx0X3JlcG9ydGVyXygKICAgICAgICAgICAmZGVmYXVsdF9wZXJfdGhyZWFkX3Rlc3RfcGFydF9y
ZXN1bHRfcmVwb3J0ZXJfKSwKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAogICAgICAgcGFyYW1l
dGVyaXplZF90ZXN0X3JlZ2lzdHJ5XygpLAogICAgICAgcGFyYW1ldGVyaXplZF90ZXN0c19yZWdp
c3RlcmVkXyhmYWxzZSksCi0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCiAgICAgICBs
YXN0X2RlYXRoX3Rlc3RfY2FzZV8oLTEpLAogICAgICAgY3VycmVudF90ZXN0X2Nhc2VfKE5VTEwp
LAogICAgICAgY3VycmVudF90ZXN0X2luZm9fKE5VTEwpLApAQCAtMzc3OSwxMyArNDg2OSwxMyBA
QCBVbml0VGVzdEltcGw6OlVuaXRUZXN0SW1wbChVbml0VGVzdCogcGFyZW50KQogICAgICAgcG9z
dF9mbGFnX3BhcnNlX2luaXRfcGVyZm9ybWVkXyhmYWxzZSksCiAgICAgICByYW5kb21fc2VlZF8o
MCksICAvLyBXaWxsIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGZsYWcgYmVmb3JlIGZpcnN0IHVzZS4K
ICAgICAgIHJhbmRvbV8oMCksICAvLyBXaWxsIGJlIHJlc2VlZGVkIGJlZm9yZSBmaXJzdCB1c2Uu
Ci0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKyAgICAgIHN0YXJ0X3RpbWVzdGFtcF8oMCksCiAg
ICAgICBlbGFwc2VkX3RpbWVfKDApLAotICAgICAgaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfZmxh
Z18oTlVMTCksCi0gICAgICBkZWF0aF90ZXN0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0RGVhdGhUZXN0
RmFjdG9yeSkgewotI2Vsc2UKLSAgICAgIGVsYXBzZWRfdGltZV8oMCkgewotI2VuZGlmICAvLyBH
VEVTVF9IQVNfREVBVEhfVEVTVAorI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCisgICAgICBkZWF0
aF90ZXN0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0RGVhdGhUZXN0RmFjdG9yeSksCisjZW5kaWYKKyAg
ICAgIC8vIFdpbGwgYmUgb3ZlcnJpZGRlbiBieSB0aGUgZmxhZyBiZWZvcmUgZmlyc3QgdXNlLgor
ICAgICAgY2F0Y2hfZXhjZXB0aW9uc18oZmFsc2UpIHsKICAgbGlzdGVuZXJzKCktPlNldERlZmF1
bHRSZXN1bHRQcmludGVyKG5ldyBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXIpOwogfQogCkBA
IC0zNzk5LDYgKzQ4ODksMjggQEAgVW5pdFRlc3RJbXBsOjp+VW5pdFRlc3RJbXBsKCkgewogICBk
ZWxldGUgb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXzsKIH0KIAorLy8gQWRkcyBhIFRlc3RQcm9wZXJ0
eSB0byB0aGUgY3VycmVudCBUZXN0UmVzdWx0IG9iamVjdCB3aGVuIGludm9rZWQgaW4gYQorLy8g
Y29udGV4dCBvZiBhIHRlc3QsIHRvIGN1cnJlbnQgdGVzdCBjYXNlJ3MgYWRfaG9jX3Rlc3RfcmVz
dWx0IHdoZW4gaW52b2tlCisvLyBmcm9tIFNldFVwVGVzdENhc2UvVGVhckRvd25UZXN0Q2FzZSwg
b3IgdG8gdGhlIGdsb2JhbCBwcm9wZXJ0eSBzZXQKKy8vIG90aGVyd2lzZS4gIElmIHRoZSByZXN1
bHQgYWxyZWFkeSBjb250YWlucyBhIHByb3BlcnR5IHdpdGggdGhlIHNhbWUga2V5LAorLy8gdGhl
IHZhbHVlIHdpbGwgYmUgdXBkYXRlZC4KK3ZvaWQgVW5pdFRlc3RJbXBsOjpSZWNvcmRQcm9wZXJ0
eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpIHsKKyAgc3RkOjpzdHJpbmcgeG1s
X2VsZW1lbnQ7CisgIFRlc3RSZXN1bHQqIHRlc3RfcmVzdWx0OyAgLy8gVGVzdFJlc3VsdCBhcHBy
b3ByaWF0ZSBmb3IgcHJvcGVydHkgcmVjb3JkaW5nLgorCisgIGlmIChjdXJyZW50X3Rlc3RfaW5m
b18gIT0gTlVMTCkgeworICAgIHhtbF9lbGVtZW50ID0gInRlc3RjYXNlIjsKKyAgICB0ZXN0X3Jl
c3VsdCA9ICYoY3VycmVudF90ZXN0X2luZm9fLT5yZXN1bHRfKTsKKyAgfSBlbHNlIGlmIChjdXJy
ZW50X3Rlc3RfY2FzZV8gIT0gTlVMTCkgeworICAgIHhtbF9lbGVtZW50ID0gInRlc3RzdWl0ZSI7
CisgICAgdGVzdF9yZXN1bHQgPSAmKGN1cnJlbnRfdGVzdF9jYXNlXy0+YWRfaG9jX3Rlc3RfcmVz
dWx0Xyk7CisgIH0gZWxzZSB7CisgICAgeG1sX2VsZW1lbnQgPSAidGVzdHN1aXRlcyI7CisgICAg
dGVzdF9yZXN1bHQgPSAmYWRfaG9jX3Rlc3RfcmVzdWx0XzsKKyAgfQorICB0ZXN0X3Jlc3VsdC0+
UmVjb3JkUHJvcGVydHkoeG1sX2VsZW1lbnQsIHRlc3RfcHJvcGVydHkpOworfQorCiAjaWYgR1RF
U1RfSEFTX0RFQVRIX1RFU1QKIC8vIERpc2FibGVzIGV2ZW50IGZvcndhcmRpbmcgaWYgdGhlIGNv
bnRyb2wgaXMgY3VycmVudGx5IGluIGEgZGVhdGggdGVzdAogLy8gc3VicHJvY2Vzcy4gTXVzdCBu
b3QgYmUgY2FsbGVkIGJlZm9yZSBJbml0R29vZ2xlVGVzdC4KQEAgLTM4MTEsMTcgKzQ5MjMsMzcg
QEAgdm9pZCBVbml0VGVzdEltcGw6OlN1cHByZXNzVGVzdEV2ZW50c0lmSW5TdWJwcm9jZXNzKCkg
ewogLy8gSW5pdGlhbGl6ZXMgZXZlbnQgbGlzdGVuZXJzIHBlcmZvcm1pbmcgWE1MIG91dHB1dCBh
cyBzcGVjaWZpZWQgYnkKIC8vIFVuaXRUZXN0T3B0aW9ucy4gTXVzdCBub3QgYmUgY2FsbGVkIGJl
Zm9yZSBJbml0R29vZ2xlVGVzdC4KIHZvaWQgVW5pdFRlc3RJbXBsOjpDb25maWd1cmVYbWxPdXRw
dXQoKSB7Ci0gIGNvbnN0IFN0cmluZyYgb3V0cHV0X2Zvcm1hdCA9IFVuaXRUZXN0T3B0aW9uczo6
R2V0T3V0cHV0Rm9ybWF0KCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZm9ybWF0ID0g
VW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQoKTsKICAgaWYgKG91dHB1dF9mb3JtYXQg
PT0gInhtbCIpIHsKICAgICBsaXN0ZW5lcnMoKS0+U2V0RGVmYXVsdFhtbEdlbmVyYXRvcihuZXcg
WG1sVW5pdFRlc3RSZXN1bHRQcmludGVyKAogICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFi
c29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpKTsKKyAgfSBlbHNlIGlmIChvdXRwdXRf
Zm9ybWF0ID09ICJqc29uIikgeworICAgIGxpc3RlbmVycygpLT5TZXREZWZhdWx0WG1sR2VuZXJh
dG9yKG5ldyBKc29uVW5pdFRlc3RSZXN1bHRQcmludGVyKAorICAgICAgICBVbml0VGVzdE9wdGlv
bnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpKTsKICAgfSBlbHNlIGlm
IChvdXRwdXRfZm9ybWF0ICE9ICIiKSB7Ci0gICAgcHJpbnRmKCJXQVJOSU5HOiB1bnJlY29nbml6
ZWQgb3V0cHV0IGZvcm1hdCBcIiVzXCIgaWdub3JlZC5cbiIsCi0gICAgICAgICAgIG91dHB1dF9m
b3JtYXQuY19zdHIoKSk7Ci0gICAgZmZsdXNoKHN0ZG91dCk7CisgICAgR1RFU1RfTE9HXyhXQVJO
SU5HKSA8PCAiV0FSTklORzogdW5yZWNvZ25pemVkIG91dHB1dCBmb3JtYXQgXCIiCisgICAgICAg
ICAgICAgICAgICAgICAgICA8PCBvdXRwdXRfZm9ybWF0IDw8ICJcIiBpZ25vcmVkLiI7CiAgIH0K
IH0KIAorI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKy8vIEluaXRpYWxpemVzIGV2ZW50
IGxpc3RlbmVycyBmb3Igc3RyZWFtaW5nIHRlc3QgcmVzdWx0cyBpbiBzdHJpbmcgZm9ybS4KKy8v
IE11c3Qgbm90IGJlIGNhbGxlZCBiZWZvcmUgSW5pdEdvb2dsZVRlc3QuCit2b2lkIFVuaXRUZXN0
SW1wbDo6Q29uZmlndXJlU3RyZWFtaW5nT3V0cHV0KCkgeworICBjb25zdCBzdGQ6OnN0cmluZyYg
dGFyZ2V0ID0gR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKTsKKyAgaWYgKCF0YXJnZXQuZW1w
dHkoKSkgeworICAgIGNvbnN0IHNpemVfdCBwb3MgPSB0YXJnZXQuZmluZCgnOicpOworICAgIGlm
IChwb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKKyAgICAgIGxpc3RlbmVycygpLT5BcHBlbmQo
bmV3IFN0cmVhbWluZ0xpc3RlbmVyKHRhcmdldC5zdWJzdHIoMCwgcG9zKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdWJzdHIocG9zKzEp
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgIEdURVNUX0xPR18oV0FSTklORykgPDwgInVucmVjb2du
aXplZCBzdHJlYW1pbmcgdGFyZ2V0IFwiIiA8PCB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgIlwiIGlnbm9yZWQuIjsKKyAgICB9CisgIH0KK30KKyNlbmRpZiAgLy8gR1RFU1Rf
Q0FOX1NUUkVBTV9SRVNVTFRTXworCiAvLyBQZXJmb3JtcyBpbml0aWFsaXphdGlvbiBkZXBlbmRl
bnQgdXBvbiBmbGFnIHZhbHVlcyBvYnRhaW5lZCBpbgogLy8gUGFyc2VHb29nbGVUZXN0RmxhZ3NP
bmx5LiAgSXMgY2FsbGVkIGZyb20gSW5pdEdvb2dsZVRlc3QgYWZ0ZXIgdGhlIGNhbGwgdG8KIC8v
IFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seS4gIEluIGNhc2UgYSB1c2VyIG5lZ2xlY3RzIHRvIGNh
bGwgSW5pdEdvb2dsZVRlc3QKQEAgLTM4MzIsNiArNDk2NCwxMSBAQCB2b2lkIFVuaXRUZXN0SW1w
bDo6UG9zdEZsYWdQYXJzaW5nSW5pdCgpIHsKICAgaWYgKCFwb3N0X2ZsYWdfcGFyc2VfaW5pdF9w
ZXJmb3JtZWRfKSB7CiAgICAgcG9zdF9mbGFnX3BhcnNlX2luaXRfcGVyZm9ybWVkXyA9IHRydWU7
CiAKKyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9URVNUX0VWRU5UX0xJU1RFTkVSXykKKyAgICAv
LyBSZWdpc3RlciB0byBzZW5kIG5vdGlmaWNhdGlvbnMgYWJvdXQga2V5IHByb2Nlc3Mgc3RhdGUg
Y2hhbmdlcy4KKyAgICBsaXN0ZW5lcnMoKS0+QXBwZW5kKG5ldyBHVEVTVF9DVVNUT01fVEVTVF9F
VkVOVF9MSVNURU5FUl8oKSk7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfQ1VTVE9NX1RFU1Rf
RVZFTlRfTElTVEVORVJfKQorCiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKICAgICBJbml0RGVh
dGhUZXN0U3VicHJvY2Vzc0NvbnRyb2xJbmZvKCk7CiAgICAgU3VwcHJlc3NUZXN0RXZlbnRzSWZJ
blN1YnByb2Nlc3MoKTsKQEAgLTM4NDUsNiArNDk4MiwxOCBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6
UG9zdEZsYWdQYXJzaW5nSW5pdCgpIHsKICAgICAvLyBDb25maWd1cmVzIGxpc3RlbmVycyBmb3Ig
WE1MIG91dHB1dC4gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgdXNlcnMKICAgICAvLyB0byBz
aHV0IGRvd24gdGhlIGRlZmF1bHQgWE1MIG91dHB1dCBiZWZvcmUgaW52b2tpbmcgUlVOX0FMTF9U
RVNUUy4KICAgICBDb25maWd1cmVYbWxPdXRwdXQoKTsKKworI2lmIEdURVNUX0NBTl9TVFJFQU1f
UkVTVUxUU18KKyAgICAvLyBDb25maWd1cmVzIGxpc3RlbmVycyBmb3Igc3RyZWFtaW5nIHRlc3Qg
cmVzdWx0cyB0byB0aGUgc3BlY2lmaWVkIHNlcnZlci4KKyAgICBDb25maWd1cmVTdHJlYW1pbmdP
dXRwdXQoKTsKKyNlbmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworCisjaWYgR1RF
U1RfSEFTX0FCU0wKKyAgICBpZiAoR1RFU1RfRkxBRyhpbnN0YWxsX2ZhaWx1cmVfc2lnbmFsX2hh
bmRsZXIpKSB7CisgICAgICBhYnNsOjpGYWlsdXJlU2lnbmFsSGFuZGxlck9wdGlvbnMgb3B0aW9u
czsKKyAgICAgIGFic2w6Okluc3RhbGxGYWlsdXJlU2lnbmFsSGFuZGxlcihvcHRpb25zKTsKKyAg
ICB9CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCiAgIH0KIH0KIApAQCAtMzg1OSw3ICs1MDA4
LDcgQEAgdm9pZCBVbml0VGVzdEltcGw6OlBvc3RGbGFnUGFyc2luZ0luaXQoKSB7CiBjbGFzcyBU
ZXN0Q2FzZU5hbWVJcyB7CiAgcHVibGljOgogICAvLyBDb25zdHJ1Y3Rvci4KLSAgZXhwbGljaXQg
VGVzdENhc2VOYW1lSXMoY29uc3QgU3RyaW5nJiBuYW1lKQorICBleHBsaWNpdCBUZXN0Q2FzZU5h
bWVJcyhjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkKICAgICAgIDogbmFtZV8obmFtZSkge30KIAog
ICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBuYW1lIG9mIHRlc3RfY2FzZSBtYXRjaGVzIG5hbWVf
LgpAQCAtMzg2OCw3ICs1MDE3LDcgQEAgY2xhc3MgVGVzdENhc2VOYW1lSXMgewogICB9CiAKICBw
cml2YXRlOgotICBTdHJpbmcgbmFtZV87CisgIHN0ZDo6c3RyaW5nIG5hbWVfOwogfTsKIAogLy8g
RmluZHMgYW5kIHJldHVybnMgYSBUZXN0Q2FzZSB3aXRoIHRoZSBnaXZlbiBuYW1lLiAgSWYgb25l
IGRvZXNuJ3QKQEAgLTM4NzksMjYgKzUwMjgsMjggQEAgY2xhc3MgVGVzdENhc2VOYW1lSXMgewog
Ly8gQXJndW1lbnRzOgogLy8KIC8vICAgdGVzdF9jYXNlX25hbWU6IG5hbWUgb2YgdGhlIHRlc3Qg
Y2FzZQorLy8gICB0eXBlX3BhcmFtOiAgICAgdGhlIG5hbWUgb2YgdGhlIHRlc3QgY2FzZSdzIHR5
cGUgcGFyYW1ldGVyLCBvciBOVUxMIGlmCisvLyAgICAgICAgICAgICAgICAgICB0aGlzIGlzIG5v
dCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZS4KIC8vICAgc2V0X3Vw
X3RjOiAgICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBj
YXNlCiAvLyAgIHRlYXJfZG93bl90YzogICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRl
YXJzIGRvd24gdGhlIHRlc3QgY2FzZQogVGVzdENhc2UqIFVuaXRUZXN0SW1wbDo6R2V0VGVzdENh
c2UoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBjb21tZW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogdHlwZV9wYXJhbSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRlc3Q6OlNldFVwVGVzdENhc2VGdW5jIHNldF91cF90YywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5j
IHRlYXJfZG93bl90YykgewogICAvLyBDYW4gd2UgZmluZCBhIFRlc3RDYXNlIHdpdGggdGhlIGdp
dmVuIG5hbWU/Ci0gIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RDYXNlKj46OmNvbnN0X2l0ZXJhdG9y
IHRlc3RfY2FzZSA9Ci0gICAgICBzdGQ6OmZpbmRfaWYodGVzdF9jYXNlc18uYmVnaW4oKSwgdGVz
dF9jYXNlc18uZW5kKCksCisgIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RDYXNlKj46OmNvbnN0X3Jl
dmVyc2VfaXRlcmF0b3IgdGVzdF9jYXNlID0KKyAgICAgIHN0ZDo6ZmluZF9pZih0ZXN0X2Nhc2Vz
Xy5yYmVnaW4oKSwgdGVzdF9jYXNlc18ucmVuZCgpLAogICAgICAgICAgICAgICAgICAgIFRlc3RD
YXNlTmFtZUlzKHRlc3RfY2FzZV9uYW1lKSk7CiAKLSAgaWYgKHRlc3RfY2FzZSAhPSB0ZXN0X2Nh
c2VzXy5lbmQoKSkKKyAgaWYgKHRlc3RfY2FzZSAhPSB0ZXN0X2Nhc2VzXy5yZW5kKCkpCiAgICAg
cmV0dXJuICp0ZXN0X2Nhc2U7CiAKICAgLy8gTm8uICBMZXQncyBjcmVhdGUgb25lLgogICBUZXN0
Q2FzZSogY29uc3QgbmV3X3Rlc3RfY2FzZSA9Ci0gICAgICBuZXcgVGVzdENhc2UodGVzdF9jYXNl
X25hbWUsIGNvbW1lbnQsIHNldF91cF90YywgdGVhcl9kb3duX3RjKTsKKyAgICAgIG5ldyBUZXN0
Q2FzZSh0ZXN0X2Nhc2VfbmFtZSwgdHlwZV9wYXJhbSwgc2V0X3VwX3RjLCB0ZWFyX2Rvd25fdGMp
OwogCiAgIC8vIElzIHRoaXMgYSBkZWF0aCB0ZXN0IGNhc2U/Ci0gIGlmIChpbnRlcm5hbDo6VW5p
dFRlc3RPcHRpb25zOjpNYXRjaGVzRmlsdGVyKFN0cmluZyh0ZXN0X2Nhc2VfbmFtZSksCisgIGlm
IChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpNYXRjaGVzRmlsdGVyKHRlc3RfY2FzZV9uYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrRGVhdGhU
ZXN0Q2FzZUZpbHRlcikpIHsKICAgICAvLyBZZXMuICBJbnNlcnRzIHRoZSB0ZXN0IGNhc2UgYWZ0
ZXIgdGhlIGxhc3QgZGVhdGggdGVzdCBjYXNlCiAgICAgLy8gZGVmaW5lZCBzbyBmYXIuICBUaGlz
IG9ubHkgd29ya3Mgd2hlbiB0aGUgdGVzdCBjYXNlcyBoYXZlbid0CkBAIC0zOTIyLDI3ICs1MDcz
LDIxIEBAIHN0YXRpYyB2b2lkIFNldFVwRW52aXJvbm1lbnQoRW52aXJvbm1lbnQqIGVudikgeyBl
bnYtPlNldFVwKCk7IH0KIHN0YXRpYyB2b2lkIFRlYXJEb3duRW52aXJvbm1lbnQoRW52aXJvbm1l
bnQqIGVudikgeyBlbnYtPlRlYXJEb3duKCk7IH0KIAogLy8gUnVucyBhbGwgdGVzdHMgaW4gdGhp
cyBVbml0VGVzdCBvYmplY3QsIHByaW50cyB0aGUgcmVzdWx0LCBhbmQKLS8vIHJldHVybnMgMCBp
ZiBhbGwgdGVzdHMgYXJlIHN1Y2Nlc3NmdWwsIG9yIDEgb3RoZXJ3aXNlLiAgSWYgYW55Ci0vLyBl
eGNlcHRpb24gaXMgdGhyb3duIGR1cmluZyBhIHRlc3Qgb24gV2luZG93cywgdGhpcyB0ZXN0IGlz
Ci0vLyBjb25zaWRlcmVkIHRvIGJlIGZhaWxlZCwgYnV0IHRoZSByZXN0IG9mIHRoZSB0ZXN0cyB3
aWxsIHN0aWxsIGJlCi0vLyBydW4uICAoV2UgZGlzYWJsZSBleGNlcHRpb25zIG9uIExpbnV4IGFu
ZCBNYWMgT1MgWCwgc28gdGhlIGlzc3VlCi0vLyBkb2Vzbid0IGFwcGx5IHRoZXJlLikKKy8vIHJl
dHVybnMgdHJ1ZSBpZiBhbGwgdGVzdHMgYXJlIHN1Y2Nlc3NmdWwuICBJZiBhbnkgZXhjZXB0aW9u
IGlzCisvLyB0aHJvd24gZHVyaW5nIGEgdGVzdCwgdGhlIHRlc3QgaXMgY29uc2lkZXJlZCB0byBi
ZSBmYWlsZWQsIGJ1dCB0aGUKKy8vIHJlc3Qgb2YgdGhlIHRlc3RzIHdpbGwgc3RpbGwgYmUgcnVu
LgorLy8KIC8vIFdoZW4gcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZW5hYmxlZCwgaXQgZXhwYW5k
cyBhbmQgcmVnaXN0ZXJzCiAvLyBwYXJhbWV0ZXJpemVkIHRlc3RzIGZpcnN0IGluIFJlZ2lzdGVy
UGFyYW1ldGVyaXplZFRlc3RzKCkuCiAvLyBBbGwgb3RoZXIgZnVuY3Rpb25zIGNhbGxlZCBmcm9t
IFJ1bkFsbFRlc3RzKCkgbWF5IHNhZmVseSBhc3N1bWUgdGhhdAogLy8gcGFyYW1ldGVyaXplZCB0
ZXN0cyBhcmUgcmVhZHkgdG8gYmUgY291bnRlZCBhbmQgcnVuLgotaW50IFVuaXRUZXN0SW1wbDo6
UnVuQWxsVGVzdHMoKSB7Ci0gIC8vIE1ha2VzIHN1cmUgSW5pdEdvb2dsZVRlc3QoKSB3YXMgY2Fs
bGVkLgotICBpZiAoIUdUZXN0SXNJbml0aWFsaXplZCgpKSB7Ci0gICAgcHJpbnRmKCIlcyIsCi0g
ICAgICAgICAgICJcblRoaXMgdGVzdCBwcm9ncmFtIGRpZCBOT1QgY2FsbCA6OnRlc3Rpbmc6Oklu
aXRHb29nbGVUZXN0ICIKLSAgICAgICAgICAgImJlZm9yZSBjYWxsaW5nIFJVTl9BTExfVEVTVFMo
KS4gIFBsZWFzZSBmaXggaXQuXG4iKTsKLSAgICByZXR1cm4gMTsKLSAgfQorYm9vbCBVbml0VGVz
dEltcGw6OlJ1bkFsbFRlc3RzKCkgeworICAvLyBUcnVlIGlmZiBHb29nbGUgVGVzdCBpcyBpbml0
aWFsaXplZCBiZWZvcmUgUlVOX0FMTF9URVNUUygpIGlzIGNhbGxlZC4KKyAgY29uc3QgYm9vbCBn
dGVzdF9pc19pbml0aWFsaXplZF9iZWZvcmVfcnVuX2FsbF90ZXN0cyA9IEdUZXN0SXNJbml0aWFs
aXplZCgpOwogCiAgIC8vIERvIG5vdCBydW4gYW55IHRlc3QgaWYgdGhlIC0taGVscCBmbGFnIHdh
cyBzcGVjaWZpZWQuCiAgIGlmIChnX2hlbHBfZmxhZykKLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gdHJ1ZTsKIAogICAvLyBSZXBlYXRzIHRoZSBjYWxsIHRvIHRoZSBwb3N0LWZsYWcgcGFyc2lu
ZyBpbml0aWFsaXphdGlvbiBpbiBjYXNlIHRoZQogICAvLyB1c2VyIGRpZG4ndCBjYWxsIEluaXRH
b29nbGVUZXN0LgpAQCAtMzk1OSw2ICs1MTA0LDExIEBAIGludCBVbml0VGVzdEltcGw6OlJ1bkFs
bFRlc3RzKCkgewogCiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKICAgaW5fc3VicHJvY2Vzc19m
b3JfZGVhdGhfdGVzdCA9IChpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdF9mbGFnXy5nZXQoKSAhPSBO
VUxMKTsKKyMgaWYgZGVmaW5lZChHVEVTVF9FWFRSQV9ERUFUSF9URVNUX0NISUxEX1NFVFVQXykK
KyAgaWYgKGluX3N1YnByb2Nlc3NfZm9yX2RlYXRoX3Rlc3QpIHsKKyAgICBHVEVTVF9FWFRSQV9E
RUFUSF9URVNUX0NISUxEX1NFVFVQXygpOworICB9CisjIGVuZGlmICAvLyBkZWZpbmVkKEdURVNU
X0VYVFJBX0RFQVRIX1RFU1RfQ0hJTERfU0VUVVBfKQogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVB
VEhfVEVTVAogCiAgIGNvbnN0IGJvb2wgc2hvdWxkX3NoYXJkID0gU2hvdWxkU2hhcmQoa1Rlc3RU
b3RhbFNoYXJkcywga1Rlc3RTaGFyZEluZGV4LApAQCAtMzk3NCw3ICs1MTI0LDcgQEAgaW50IFVu
aXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7CiAgIGlmIChHVEVTVF9GTEFHKGxpc3RfdGVzdHMp
KSB7CiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCAqYWZ0ZXIqIEZpbHRlclRlc3RzKCkgaGFz
IGJlZW4gY2FsbGVkLgogICAgIExpc3RUZXN0c01hdGNoaW5nRmlsdGVyKCk7Ci0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIHRydWU7CiAgIH0KIAogICByYW5kb21fc2VlZF8gPSBHVEVTVF9GTEFH
KHNodWZmbGUpID8KQEAgLTM5ODUsNiArNTEzNSw3IEBAIGludCBVbml0VGVzdEltcGw6OlJ1bkFs
bFRlc3RzKCkgewogCiAgIFRlc3RFdmVudExpc3RlbmVyKiByZXBlYXRlciA9IGxpc3RlbmVycygp
LT5yZXBlYXRlcigpOwogCisgIHN0YXJ0X3RpbWVzdGFtcF8gPSBHZXRUaW1lSW5NaWxsaXMoKTsK
ICAgcmVwZWF0ZXItPk9uVGVzdFByb2dyYW1TdGFydCgqcGFyZW50Xyk7CiAKICAgLy8gSG93IG1h
bnkgdGltZXMgdG8gcmVwZWF0IHRoZSB0ZXN0cz8gIFdlIGRvbid0IHdhbnQgdG8gcmVwZWF0IHRo
ZW0KQEAgLTM5OTMsNyArNTE0NCw5IEBAIGludCBVbml0VGVzdEltcGw6OlJ1bkFsbFRlc3RzKCkg
ewogICAvLyBSZXBlYXRzIGZvcmV2ZXIgaWYgdGhlIHJlcGVhdCBjb3VudCBpcyBuZWdhdGl2ZS4K
ICAgY29uc3QgYm9vbCBmb3JldmVyID0gcmVwZWF0IDwgMDsKICAgZm9yIChpbnQgaSA9IDA7IGZv
cmV2ZXIgfHwgaSAhPSByZXBlYXQ7IGkrKykgewotICAgIENsZWFyUmVzdWx0KCk7CisgICAgLy8g
V2Ugd2FudCB0byBwcmVzZXJ2ZSBmYWlsdXJlcyBnZW5lcmF0ZWQgYnkgYWQtaG9jIHRlc3QKKyAg
ICAvLyBhc3NlcnRpb25zIGV4ZWN1dGVkIGJlZm9yZSBSVU5fQUxMX1RFU1RTKCkuCisgICAgQ2xl
YXJOb25BZEhvY1Rlc3RSZXN1bHQoKTsKIAogICAgIGNvbnN0IFRpbWVJbk1pbGxpcyBzdGFydCA9
IEdldFRpbWVJbk1pbGxpcygpOwogCkBAIC00MDU4LDggKzUyMTEsMjEgQEAgaW50IFVuaXRUZXN0
SW1wbDo6UnVuQWxsVGVzdHMoKSB7CiAKICAgcmVwZWF0ZXItPk9uVGVzdFByb2dyYW1FbmQoKnBh
cmVudF8pOwogCi0gIC8vIFJldHVybnMgMCBpZiBhbGwgdGVzdHMgcGFzc2VkLCBvciAxIG90aGVy
IHdpc2UuCi0gIHJldHVybiBmYWlsZWQgPyAxIDogMDsKKyAgaWYgKCFndGVzdF9pc19pbml0aWFs
aXplZF9iZWZvcmVfcnVuX2FsbF90ZXN0cykgeworICAgIENvbG9yZWRQcmludGYoCisgICAgICAg
IENPTE9SX1JFRCwKKyAgICAgICAgIlxuSU1QT1JUQU5UIE5PVElDRSAtIERPIE5PVCBJR05PUkU6
XG4iCisgICAgICAgICJUaGlzIHRlc3QgcHJvZ3JhbSBkaWQgTk9UIGNhbGwgIiBHVEVTVF9JTklU
X0dPT0dMRV9URVNUX05BTUVfCisgICAgICAgICIoKSBiZWZvcmUgY2FsbGluZyBSVU5fQUxMX1RF
U1RTKCkuIFRoaXMgaXMgSU5WQUxJRC4gU29vbiAiIEdURVNUX05BTUVfCisgICAgICAgICIgd2ls
bCBzdGFydCB0byBlbmZvcmNlIHRoZSB2YWxpZCB1c2FnZS4gIgorICAgICAgICAiUGxlYXNlIGZp
eCBpdCBBU0FQLCBvciBJVCBXSUxMIFNUQVJUIFRPIEZBSUwuXG4iKTsgIC8vIE5PTElOVAorI2lm
IEdURVNUX0ZPUl9HT09HTEVfCisgICAgQ29sb3JlZFByaW50ZihDT0xPUl9SRUQsCisgICAgICAg
ICAgICAgICAgICAiRm9yIG1vcmUgZGV0YWlscywgc2VlIGh0dHA6Ly93aWtpL01haW4vVmFsaWRH
VW5pdE1haW4uXG4iKTsKKyNlbmRpZiAgLy8gR1RFU1RfRk9SX0dPT0dMRV8KKyAgfQorCisgIHJl
dHVybiAhZmFpbGVkOwogfQogCiAvLyBSZWFkcyB0aGUgR1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEUg
ZW52aXJvbm1lbnQgdmFyaWFibGUsIGFuZCBjcmVhdGVzIHRoZSBmaWxlCkBAIC00MTMzLDcgKzUy
OTksNyBAQCBib29sIFNob3VsZFNoYXJkKGNvbnN0IGNoYXIqIHRvdGFsX3NoYXJkc19lbnYsCiAv
LyBQYXJzZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHZhciBhcyBhbiBJbnQzMi4gSWYgaXQg
aXMgdW5zZXQsCiAvLyByZXR1cm5zIGRlZmF1bHRfdmFsLiBJZiBpdCBpcyBub3QgYW4gSW50MzIs
IHByaW50cyBhbiBlcnJvcgogLy8gYW5kIGFib3J0cy4KLUludDMyIEludDMyRnJvbUVudk9yRGll
KGNvbnN0IGNoYXIqIGNvbnN0IHZhciwgSW50MzIgZGVmYXVsdF92YWwpIHsKK0ludDMyIEludDMy
RnJvbUVudk9yRGllKGNvbnN0IGNoYXIqIHZhciwgSW50MzIgZGVmYXVsdF92YWwpIHsKICAgY29u
c3QgY2hhciogc3RyX3ZhbCA9IHBvc2l4OjpHZXRFbnYodmFyKTsKICAgaWYgKHN0cl92YWwgPT0g
TlVMTCkgewogICAgIHJldHVybiBkZWZhdWx0X3ZhbDsKQEAgLTQxNjAsOCArNTMyNiw4IEBAIGJv
b2wgU2hvdWxkUnVuVGVzdE9uU2hhcmQoaW50IHRvdGFsX3NoYXJkcywgaW50IHNoYXJkX2luZGV4
LCBpbnQgdGVzdF9pZCkgewogLy8gZWFjaCBUZXN0Q2FzZSBhbmQgVGVzdEluZm8gb2JqZWN0Lgog
Ly8gSWYgc2hhcmRfdGVzdHMgPT0gdHJ1ZSwgZnVydGhlciBmaWx0ZXJzIHRlc3RzIGJhc2VkIG9u
IHNoYXJkaW5nCiAvLyB2YXJpYWJsZXMgaW4gdGhlIGVudmlyb25tZW50IC0gc2VlCi0vLyBodHRw
Oi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL0dvb2dsZVRlc3RBZHZhbmNlZEd1
aWRlLgotLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRoYXQgc2hvdWxkIHJ1bi4KKy8v
IGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9ibG9iL21hc3Rlci9nb29nbGV0
ZXN0L2RvY3MvYWR2YW5jZWQubWQKKy8vIC4gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRo
YXQgc2hvdWxkIHJ1bi4KIGludCBVbml0VGVzdEltcGw6OkZpbHRlclRlc3RzKFJlYWN0aW9uVG9T
aGFyZGluZyBzaGFyZF90ZXN0cykgewogICBjb25zdCBJbnQzMiB0b3RhbF9zaGFyZHMgPSBzaGFy
ZF90ZXN0cyA9PSBIT05PUl9TSEFSRElOR19QUk9UT0NPTCA/CiAgICAgICBJbnQzMkZyb21FbnZP
ckRpZShrVGVzdFRvdGFsU2hhcmRzLCAtMSkgOiAtMTsKQEAgLTQxNzYsMTIgKzUzNDIsMTIgQEAg
aW50IFVuaXRUZXN0SW1wbDo6RmlsdGVyVGVzdHMoUmVhY3Rpb25Ub1NoYXJkaW5nIHNoYXJkX3Rl
c3RzKSB7CiAgIGludCBudW1fc2VsZWN0ZWRfdGVzdHMgPSAwOwogICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHRlc3RfY2FzZXNfLnNpemUoKTsgaSsrKSB7CiAgICAgVGVzdENhc2UqIGNvbnN0IHRl
c3RfY2FzZSA9IHRlc3RfY2FzZXNfW2ldOwotICAgIGNvbnN0IFN0cmluZyAmdGVzdF9jYXNlX25h
bWUgPSB0ZXN0X2Nhc2UtPm5hbWUoKTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmdGVzdF9jYXNl
X25hbWUgPSB0ZXN0X2Nhc2UtPm5hbWUoKTsKICAgICB0ZXN0X2Nhc2UtPnNldF9zaG91bGRfcnVu
KGZhbHNlKTsKIAogICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgdGVzdF9jYXNlLT50ZXN0X2lu
Zm9fbGlzdCgpLnNpemUoKTsgaisrKSB7CiAgICAgICBUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZv
ID0gdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpW2pdOwotICAgICAgY29uc3QgU3RyaW5nIHRl
c3RfbmFtZSh0ZXN0X2luZm8tPm5hbWUoKSk7CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0
X25hbWUodGVzdF9pbmZvLT5uYW1lKCkpOwogICAgICAgLy8gQSB0ZXN0IGlzIGRpc2FibGVkIGlm
IHRlc3QgY2FzZSBuYW1lIG9yIHRlc3QgbmFtZSBtYXRjaGVzCiAgICAgICAvLyBrRGlzYWJsZVRl
c3RGaWx0ZXIuCiAgICAgICBjb25zdCBib29sIGlzX2Rpc2FibGVkID0KQEAgLTQxODksMzQgKzUz
NTUsNjAgQEAgaW50IFVuaXRUZXN0SW1wbDo6RmlsdGVyVGVzdHMoUmVhY3Rpb25Ub1NoYXJkaW5n
IHNoYXJkX3Rlc3RzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBrRGlzYWJsZVRlc3RGaWx0ZXIpIHx8CiAgICAgICAgICAgaW50ZXJuYWw6OlVu
aXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcih0ZXN0X25hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrRGlzYWJsZVRlc3RGaWx0ZXIpOwot
ICAgICAgdGVzdF9pbmZvLT5pbXBsKCktPnNldF9pc19kaXNhYmxlZChpc19kaXNhYmxlZCk7Cisg
ICAgICB0ZXN0X2luZm8tPmlzX2Rpc2FibGVkXyA9IGlzX2Rpc2FibGVkOwogCiAgICAgICBjb25z
dCBib29sIG1hdGNoZXNfZmlsdGVyID0KICAgICAgICAgICBpbnRlcm5hbDo6VW5pdFRlc3RPcHRp
b25zOjpGaWx0ZXJNYXRjaGVzVGVzdCh0ZXN0X2Nhc2VfbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X25hbWUpOwotICAgICAg
dGVzdF9pbmZvLT5pbXBsKCktPnNldF9tYXRjaGVzX2ZpbHRlcihtYXRjaGVzX2ZpbHRlcik7Cisg
ICAgICB0ZXN0X2luZm8tPm1hdGNoZXNfZmlsdGVyXyA9IG1hdGNoZXNfZmlsdGVyOwogCiAgICAg
ICBjb25zdCBib29sIGlzX3J1bm5hYmxlID0KICAgICAgICAgICAoR1RFU1RfRkxBRyhhbHNvX3J1
bl9kaXNhYmxlZF90ZXN0cykgfHwgIWlzX2Rpc2FibGVkKSAmJgogICAgICAgICAgIG1hdGNoZXNf
ZmlsdGVyOwogCi0gICAgICBjb25zdCBib29sIGlzX3NlbGVjdGVkID0gaXNfcnVubmFibGUgJiYK
LSAgICAgICAgICAoc2hhcmRfdGVzdHMgPT0gSUdOT1JFX1NIQVJESU5HX1BST1RPQ09MIHx8Ci0g
ICAgICAgICAgIFNob3VsZFJ1blRlc3RPblNoYXJkKHRvdGFsX3NoYXJkcywgc2hhcmRfaW5kZXgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bV9ydW5uYWJsZV90ZXN0cykpOwor
ICAgICAgY29uc3QgYm9vbCBpc19pbl9hbm90aGVyX3NoYXJkID0KKyAgICAgICAgICBzaGFyZF90
ZXN0cyAhPSBJR05PUkVfU0hBUkRJTkdfUFJPVE9DT0wgJiYKKyAgICAgICAgICAhU2hvdWxkUnVu
VGVzdE9uU2hhcmQodG90YWxfc2hhcmRzLCBzaGFyZF9pbmRleCwgbnVtX3J1bm5hYmxlX3Rlc3Rz
KTsKKyAgICAgIHRlc3RfaW5mby0+aXNfaW5fYW5vdGhlcl9zaGFyZF8gPSBpc19pbl9hbm90aGVy
X3NoYXJkOworICAgICAgY29uc3QgYm9vbCBpc19zZWxlY3RlZCA9IGlzX3J1bm5hYmxlICYmICFp
c19pbl9hbm90aGVyX3NoYXJkOwogCiAgICAgICBudW1fcnVubmFibGVfdGVzdHMgKz0gaXNfcnVu
bmFibGU7CiAgICAgICBudW1fc2VsZWN0ZWRfdGVzdHMgKz0gaXNfc2VsZWN0ZWQ7CiAKLSAgICAg
IHRlc3RfaW5mby0+aW1wbCgpLT5zZXRfc2hvdWxkX3J1bihpc19zZWxlY3RlZCk7CisgICAgICB0
ZXN0X2luZm8tPnNob3VsZF9ydW5fID0gaXNfc2VsZWN0ZWQ7CiAgICAgICB0ZXN0X2Nhc2UtPnNl
dF9zaG91bGRfcnVuKHRlc3RfY2FzZS0+c2hvdWxkX3J1bigpIHx8IGlzX3NlbGVjdGVkKTsKICAg
ICB9CiAgIH0KICAgcmV0dXJuIG51bV9zZWxlY3RlZF90ZXN0czsKIH0KIAorLy8gUHJpbnRzIHRo
ZSBnaXZlbiBDLXN0cmluZyBvbiBhIHNpbmdsZSBsaW5lIGJ5IHJlcGxhY2luZyBhbGwgJ1xuJwor
Ly8gY2hhcmFjdGVycyB3aXRoIHN0cmluZyAiXFxuIi4gIElmIHRoZSBvdXRwdXQgdGFrZXMgbW9y
ZSB0aGFuCisvLyBtYXhfbGVuZ3RoIGNoYXJhY3RlcnMsIG9ubHkgcHJpbnRzIHRoZSBmaXJzdCBt
YXhfbGVuZ3RoIGNoYXJhY3RlcnMKKy8vIGFuZCAiLi4uIi4KK3N0YXRpYyB2b2lkIFByaW50T25P
bmVMaW5lKGNvbnN0IGNoYXIqIHN0ciwgaW50IG1heF9sZW5ndGgpIHsKKyAgaWYgKHN0ciAhPSBO
VUxMKSB7CisgICAgZm9yIChpbnQgaSA9IDA7ICpzdHIgIT0gJ1wwJzsgKytzdHIpIHsKKyAgICAg
IGlmIChpID49IG1heF9sZW5ndGgpIHsKKyAgICAgICAgcHJpbnRmKCIuLi4iKTsKKyAgICAgICAg
YnJlYWs7CisgICAgICB9CisgICAgICBpZiAoKnN0ciA9PSAnXG4nKSB7CisgICAgICAgIHByaW50
ZigiXFxuIik7CisgICAgICAgIGkgKz0gMjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHByaW50
ZigiJWMiLCAqc3RyKTsKKyAgICAgICAgKytpOworICAgICAgfQorICAgIH0KKyAgfQorfQorCiAv
LyBQcmludHMgdGhlIG5hbWVzIG9mIHRoZSB0ZXN0cyBtYXRjaGluZyB0aGUgdXNlci1zcGVjaWZp
ZWQgZmlsdGVyIGZsYWcuCiB2b2lkIFVuaXRUZXN0SW1wbDo6TGlzdFRlc3RzTWF0Y2hpbmdGaWx0
ZXIoKSB7CisgIC8vIFByaW50IGF0IG1vc3QgdGhpcyBtYW55IGNoYXJhY3RlcnMgZm9yIGVhY2gg
dHlwZS92YWx1ZSBwYXJhbWV0ZXIuCisgIGNvbnN0IGludCBrTWF4UGFyYW1MZW5ndGggPSAyNTA7
CisKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0X2Nhc2VzXy5zaXplKCk7IGkrKykgewog
ICAgIGNvbnN0IFRlc3RDYXNlKiBjb25zdCB0ZXN0X2Nhc2UgPSB0ZXN0X2Nhc2VzX1tpXTsKICAg
ICBib29sIHByaW50ZWRfdGVzdF9jYXNlX25hbWUgPSBmYWxzZTsKQEAgLTQyMjQsMTYgKzU0MTYs
NDcgQEAgdm9pZCBVbml0VGVzdEltcGw6Okxpc3RUZXN0c01hdGNoaW5nRmlsdGVyKCkgewogICAg
IGZvciAoc2l6ZV90IGogPSAwOyBqIDwgdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpLnNpemUo
KTsgaisrKSB7CiAgICAgICBjb25zdCBUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KICAgICAg
ICAgICB0ZXN0X2Nhc2UtPnRlc3RfaW5mb19saXN0KClbal07Ci0gICAgICBpZiAodGVzdF9pbmZv
LT5tYXRjaGVzX2ZpbHRlcigpKSB7CisgICAgICBpZiAodGVzdF9pbmZvLT5tYXRjaGVzX2ZpbHRl
cl8pIHsKICAgICAgICAgaWYgKCFwcmludGVkX3Rlc3RfY2FzZV9uYW1lKSB7CiAgICAgICAgICAg
cHJpbnRlZF90ZXN0X2Nhc2VfbmFtZSA9IHRydWU7Ci0gICAgICAgICAgcHJpbnRmKCIlcy5cbiIs
IHRlc3RfY2FzZS0+bmFtZSgpKTsKKyAgICAgICAgICBwcmludGYoIiVzLiIsIHRlc3RfY2FzZS0+
bmFtZSgpKTsKKyAgICAgICAgICBpZiAodGVzdF9jYXNlLT50eXBlX3BhcmFtKCkgIT0gTlVMTCkg
eworICAgICAgICAgICAgcHJpbnRmKCIgICMgJXMgPSAiLCBrVHlwZVBhcmFtTGFiZWwpOworICAg
ICAgICAgICAgLy8gV2UgcHJpbnQgdGhlIHR5cGUgcGFyYW1ldGVyIG9uIGEgc2luZ2xlIGxpbmUg
dG8gbWFrZQorICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBlYXN5IHRvIHBhcnNlIGJ5IGEgcHJv
Z3JhbS4KKyAgICAgICAgICAgIFByaW50T25PbmVMaW5lKHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgp
LCBrTWF4UGFyYW1MZW5ndGgpOworICAgICAgICAgIH0KKyAgICAgICAgICBwcmludGYoIlxuIik7
CisgICAgICAgIH0KKyAgICAgICAgcHJpbnRmKCIgICVzIiwgdGVzdF9pbmZvLT5uYW1lKCkpOwor
ICAgICAgICBpZiAodGVzdF9pbmZvLT52YWx1ZV9wYXJhbSgpICE9IE5VTEwpIHsKKyAgICAgICAg
ICBwcmludGYoIiAgIyAlcyA9ICIsIGtWYWx1ZVBhcmFtTGFiZWwpOworICAgICAgICAgIC8vIFdl
IHByaW50IHRoZSB2YWx1ZSBwYXJhbWV0ZXIgb24gYSBzaW5nbGUgbGluZSB0byBtYWtlIHRoZQor
ICAgICAgICAgIC8vIG91dHB1dCBlYXN5IHRvIHBhcnNlIGJ5IGEgcHJvZ3JhbS4KKyAgICAgICAg
ICBQcmludE9uT25lTGluZSh0ZXN0X2luZm8tPnZhbHVlX3BhcmFtKCksIGtNYXhQYXJhbUxlbmd0
aCk7CiAgICAgICAgIH0KLSAgICAgICAgcHJpbnRmKCIgICVzXG4iLCB0ZXN0X2luZm8tPm5hbWUo
KSk7CisgICAgICAgIHByaW50ZigiXG4iKTsKICAgICAgIH0KICAgICB9CiAgIH0KICAgZmZsdXNo
KHN0ZG91dCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZm9ybWF0ID0gVW5pdFRlc3RP
cHRpb25zOjpHZXRPdXRwdXRGb3JtYXQoKTsKKyAgaWYgKG91dHB1dF9mb3JtYXQgPT0gInhtbCIg
fHwgb3V0cHV0X2Zvcm1hdCA9PSAianNvbiIpIHsKKyAgICBGSUxFKiBmaWxlb3V0ID0gT3BlbkZp
bGVGb3JXcml0aW5nKAorICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRv
T3V0cHV0RmlsZSgpLmNfc3RyKCkpOworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAg
ICBpZiAob3V0cHV0X2Zvcm1hdCA9PSAieG1sIikgeworICAgICAgWG1sVW5pdFRlc3RSZXN1bHRQ
cmludGVyKAorICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRw
dXRGaWxlKCkuY19zdHIoKSkKKyAgICAgICAgICAuUHJpbnRYbWxUZXN0c0xpc3QoJnN0cmVhbSwg
dGVzdF9jYXNlc18pOworICAgIH0gZWxzZSBpZiAob3V0cHV0X2Zvcm1hdCA9PSAianNvbiIpIHsK
KyAgICAgIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIoCisgICAgICAgICAgVW5pdFRlc3RPcHRp
b25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0cigpKQorICAgICAgICAgIC5Q
cmludEpzb25UZXN0TGlzdCgmc3RyZWFtLCB0ZXN0X2Nhc2VzXyk7CisgICAgfQorICAgIGZwcmlu
dGYoZmlsZW91dCwgIiVzIiwgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnN0cmVhbSkuY19zdHIoKSk7
CisgICAgZmNsb3NlKGZpbGVvdXQpOworICB9CiB9CiAKIC8vIFNldHMgdGhlIE9TIHN0YWNrIHRy
YWNlIGdldHRlci4KQEAgLTQyNTQsMTcgKzU0NzcsMjUgQEAgdm9pZCBVbml0VGVzdEltcGw6OnNl
dF9vc19zdGFja190cmFjZV9nZXR0ZXIoCiAvLyBnZXR0ZXIsIGFuZCByZXR1cm5zIGl0LgogT3NT
dGFja1RyYWNlR2V0dGVySW50ZXJmYWNlKiBVbml0VGVzdEltcGw6Om9zX3N0YWNrX3RyYWNlX2dl
dHRlcigpIHsKICAgaWYgKG9zX3N0YWNrX3RyYWNlX2dldHRlcl8gPT0gTlVMTCkgeworI2lmZGVm
IEdURVNUX09TX1NUQUNLX1RSQUNFX0dFVFRFUl8KKyAgICBvc19zdGFja190cmFjZV9nZXR0ZXJf
ID0gbmV3IEdURVNUX09TX1NUQUNLX1RSQUNFX0dFVFRFUl87CisjZWxzZQogICAgIG9zX3N0YWNr
X3RyYWNlX2dldHRlcl8gPSBuZXcgT3NTdGFja1RyYWNlR2V0dGVyOworI2VuZGlmICAvLyBHVEVT
VF9PU19TVEFDS19UUkFDRV9HRVRURVJfCiAgIH0KIAogICByZXR1cm4gb3Nfc3RhY2tfdHJhY2Vf
Z2V0dGVyXzsKIH0KIAotLy8gUmV0dXJucyB0aGUgVGVzdFJlc3VsdCBmb3IgdGhlIHRlc3QgdGhh
dCdzIGN1cnJlbnRseSBydW5uaW5nLCBvcgotLy8gdGhlIFRlc3RSZXN1bHQgZm9yIHRoZSBhZCBo
b2MgdGVzdCBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcuCisvLyBSZXR1cm5zIHRoZSBtb3N0IHNwZWNp
ZmljIFRlc3RSZXN1bHQgY3VycmVudGx5IHJ1bm5pbmcuCiBUZXN0UmVzdWx0KiBVbml0VGVzdElt
cGw6OmN1cnJlbnRfdGVzdF9yZXN1bHQoKSB7Ci0gIHJldHVybiBjdXJyZW50X3Rlc3RfaW5mb18g
PwotICAgIGN1cnJlbnRfdGVzdF9pbmZvXy0+aW1wbCgpLT5yZXN1bHQoKSA6ICZhZF9ob2NfdGVz
dF9yZXN1bHRfOworICBpZiAoY3VycmVudF90ZXN0X2luZm9fICE9IE5VTEwpIHsKKyAgICByZXR1
cm4gJmN1cnJlbnRfdGVzdF9pbmZvXy0+cmVzdWx0XzsKKyAgfQorICBpZiAoY3VycmVudF90ZXN0
X2Nhc2VfICE9IE5VTEwpIHsKKyAgICByZXR1cm4gJmN1cnJlbnRfdGVzdF9jYXNlXy0+YWRfaG9j
X3Rlc3RfcmVzdWx0XzsKKyAgfQorICByZXR1cm4gJmFkX2hvY190ZXN0X3Jlc3VsdF87CiB9CiAK
IC8vIFNodWZmbGVzIGFsbCB0ZXN0IGNhc2VzLCBhbmQgdGhlIHRlc3RzIHdpdGhpbiBlYWNoIHRl
c3QgY2FzZSwKQEAgLTQyOTMsMzMgKzU1MjQsNyBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6VW5zaHVm
ZmxlVGVzdHMoKSB7CiAgIH0KIH0KIAotLy8gVGVzdEluZm9JbXBsIGNvbnN0cnVjdG9yLiBUaGUg
bmV3IGluc3RhbmNlIGFzc3VtZXMgb3duZXJzaGlwIG9mIHRoZSB0ZXN0Ci0vLyBmYWN0b3J5IG9i
amVjdC4KLVRlc3RJbmZvSW1wbDo6VGVzdEluZm9JbXBsKFRlc3RJbmZvKiBwYXJlbnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX3Rlc3RfY2FzZV9uYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV9uYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV90ZXN0X2Nhc2VfY29tbWVudCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfY29tbWVudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFR5cGVJZCBhX2ZpeHR1cmVfY2xhc3NfaWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5KSA6Ci0gICAgcGFy
ZW50XyhwYXJlbnQpLAotICAgIHRlc3RfY2FzZV9uYW1lXyhTdHJpbmcoYV90ZXN0X2Nhc2VfbmFt
ZSkpLAotICAgIG5hbWVfKFN0cmluZyhhX25hbWUpKSwKLSAgICB0ZXN0X2Nhc2VfY29tbWVudF8o
U3RyaW5nKGFfdGVzdF9jYXNlX2NvbW1lbnQpKSwKLSAgICBjb21tZW50XyhTdHJpbmcoYV9jb21t
ZW50KSksCi0gICAgZml4dHVyZV9jbGFzc19pZF8oYV9maXh0dXJlX2NsYXNzX2lkKSwKLSAgICBz
aG91bGRfcnVuXyhmYWxzZSksCi0gICAgaXNfZGlzYWJsZWRfKGZhbHNlKSwKLSAgICBtYXRjaGVz
X2ZpbHRlcl8oZmFsc2UpLAotICAgIGZhY3RvcnlfKGZhY3RvcnkpIHsKLX0KLQotLy8gVGVzdElu
Zm9JbXBsIGRlc3RydWN0b3IuCi1UZXN0SW5mb0ltcGw6On5UZXN0SW5mb0ltcGwoKSB7Ci0gIGRl
bGV0ZSBmYWN0b3J5XzsKLX0KLQotLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFj
ZSBhcyBhIFN0cmluZy4KKy8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMg
YW4gc3RkOjpzdHJpbmcuCiAvLwogLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1l
cyB0byBiZSBpbmNsdWRlZCBpcyBzcGVjaWZpZWQgYnkKIC8vIHRoZSBndGVzdF9zdGFja190cmFj
ZV9kZXB0aCBmbGFnLiAgVGhlIHNraXBfY291bnQgcGFyYW1ldGVyCkBAIC00MzI5LDE1ICs1NTM0
LDE1IEBAIFRlc3RJbmZvSW1wbDo6flRlc3RJbmZvSW1wbCgpIHsKIC8vIEZvciBleGFtcGxlLCBp
ZiBGb28oKSBjYWxscyBCYXIoKSwgd2hpY2ggaW4gdHVybiBjYWxscwogLy8gR2V0Q3VycmVudE9z
U3RhY2tUcmFjZUV4Y2VwdFRvcCguLi4sIDEpLCBGb28oKSB3aWxsIGJlIGluY2x1ZGVkIGluCiAv
LyB0aGUgdHJhY2UgYnV0IEJhcigpIGFuZCBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9w
KCkgd29uJ3QuCi1TdHJpbmcgR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcChVbml0VGVz
dCogLyp1bml0X3Rlc3QqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBza2lwX2NvdW50KSB7CitzdGQ6OnN0cmluZyBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhj
ZXB0VG9wKFVuaXRUZXN0KiAvKnVuaXRfdGVzdCovLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgc2tpcF9jb3VudCkgewogICAvLyBXZSBwYXNzIHNraXBf
Y291bnQgKyAxIHRvIHNraXAgdGhpcyB3cmFwcGVyIGZ1bmN0aW9uIGluIGFkZGl0aW9uCiAgIC8v
IHRvIHdoYXQgdGhlIHVzZXIgcmVhbGx5IHdhbnRzIHRvIHNraXAuCiAgIHJldHVybiBHZXRVbml0
VGVzdEltcGwoKS0+Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcChza2lwX2NvdW50ICsgMSk7
CiB9CiAKLS8vIFVzZWQgYnkgdGhlIEdURVNUX0hJREVfVU5SRUFDSEFCTEVfQ09ERV8gbWFjcm8g
dG8gc3VwcHJlc3MgdW5yZWFjaGFibGUKLS8vIGNvZGUgd2FybmluZ3MuCisvLyBVc2VkIGJ5IHRo
ZSBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfIG1hY3JvIHRv
CisvLyBzdXBwcmVzcyB1bnJlYWNoYWJsZSBjb2RlIHdhcm5pbmdzLgogbmFtZXNwYWNlIHsKIGNs
YXNzIENsYXNzVW5pcXVlVG9BbHdheXNUcnVlIHt9OwogfQpAQCAtNDM3MSwxNCArNTU3NiwxMyBA
QCBib29sIFNraXBQcmVmaXgoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiogcHN0cikg
ewogLy8gcGFydCBjYW4gYmUgb21pdHRlZC4KIC8vCiAvLyBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0
aGUgZmxhZywgb3IgTlVMTCBpZiB0aGUgcGFyc2luZyBmYWlsZWQuCi1jb25zdCBjaGFyKiBQYXJz
ZUZsYWdWYWx1ZShjb25zdCBjaGFyKiBzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBmbGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWZfb3B0
aW9uYWwpIHsKK3N0YXRpYyBjb25zdCBjaGFyKiBQYXJzZUZsYWdWYWx1ZShjb25zdCBjaGFyKiBz
dHIsIGNvbnN0IGNoYXIqIGZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBkZWZfb3B0aW9uYWwpIHsKICAgLy8gc3RyIGFuZCBmbGFnIG11c3Qgbm90IGJlIE5VTEwu
CiAgIGlmIChzdHIgPT0gTlVMTCB8fCBmbGFnID09IE5VTEwpIHJldHVybiBOVUxMOwogCiAgIC8v
IFRoZSBmbGFnIG11c3Qgc3RhcnQgd2l0aCAiLS0iIGZvbGxvd2VkIGJ5IEdURVNUX0ZMQUdfUFJF
RklYXy4KLSAgY29uc3QgU3RyaW5nIGZsYWdfc3RyID0gU3RyaW5nOjpGb3JtYXQoIi0tJXMlcyIs
IEdURVNUX0ZMQUdfUFJFRklYXywgZmxhZyk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZsYWdfc3Ry
ID0gc3RkOjpzdHJpbmcoIi0tIikgKyBHVEVTVF9GTEFHX1BSRUZJWF8gKyBmbGFnOwogICBjb25z
dCBzaXplX3QgZmxhZ19sZW4gPSBmbGFnX3N0ci5sZW5ndGgoKTsKICAgaWYgKHN0cm5jbXAoc3Ry
LCBmbGFnX3N0ci5jX3N0cigpLCBmbGFnX2xlbikgIT0gMCkgcmV0dXJuIE5VTEw7CiAKQEAgLTQ0
MDksNyArNTYxMyw3IEBAIGNvbnN0IGNoYXIqIFBhcnNlRmxhZ1ZhbHVlKGNvbnN0IGNoYXIqIHN0
ciwKIC8vCiAvLyBPbiBzdWNjZXNzLCBzdG9yZXMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIGluICp2
YWx1ZSwgYW5kIHJldHVybnMKIC8vIHRydWUuICBPbiBmYWlsdXJlLCByZXR1cm5zIGZhbHNlIHdp
dGhvdXQgY2hhbmdpbmcgKnZhbHVlLgotYm9vbCBQYXJzZUJvb2xGbGFnKGNvbnN0IGNoYXIqIHN0
ciwgY29uc3QgY2hhciogZmxhZywgYm9vbCogdmFsdWUpIHsKK3N0YXRpYyBib29sIFBhcnNlQm9v
bEZsYWcoY29uc3QgY2hhciogc3RyLCBjb25zdCBjaGFyKiBmbGFnLCBib29sKiB2YWx1ZSkgewog
ICAvLyBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyBhcyBhIHN0cmluZy4KICAgY29uc3QgY2hh
ciogY29uc3QgdmFsdWVfc3RyID0gUGFyc2VGbGFnVmFsdWUoc3RyLCBmbGFnLCB0cnVlKTsKIApA
QCAtNDQ0Myw3ICs1NjQ3LDggQEAgYm9vbCBQYXJzZUludDMyRmxhZyhjb25zdCBjaGFyKiBzdHIs
IGNvbnN0IGNoYXIqIGZsYWcsIEludDMyKiB2YWx1ZSkgewogLy8KIC8vIE9uIHN1Y2Nlc3MsIHN0
b3JlcyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcgaW4gKnZhbHVlLCBhbmQgcmV0dXJucwogLy8gdHJ1
ZS4gIE9uIGZhaWx1cmUsIHJldHVybnMgZmFsc2Ugd2l0aG91dCBjaGFuZ2luZyAqdmFsdWUuCi1i
b29sIFBhcnNlU3RyaW5nRmxhZyhjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsIFN0
cmluZyogdmFsdWUpIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBTdHJpbmc+CitzdGF0aWMgYm9vbCBQ
YXJzZVN0cmluZ0ZsYWcoY29uc3QgY2hhciogc3RyLCBjb25zdCBjaGFyKiBmbGFnLCBTdHJpbmcq
IHZhbHVlKSB7CiAgIC8vIEdldHMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIGFzIGEgc3RyaW5nLgog
ICBjb25zdCBjaGFyKiBjb25zdCB2YWx1ZV9zdHIgPSBQYXJzZUZsYWdWYWx1ZShzdHIsIGZsYWcs
IGZhbHNlKTsKIApAQCAtNDQ3OSw3ICs1Njg0LDcgQEAgc3RhdGljIGJvb2wgSGFzR29vZ2xlVGVz
dEZsYWdQcmVmaXgoY29uc3QgY2hhciogc3RyKSB7CiAvLyAgIEBZICAgIGNoYW5nZXMgdGhlIGNv
bG9yIHRvIHllbGxvdy4KIC8vICAgQEQgICAgY2hhbmdlcyB0byB0aGUgZGVmYXVsdCB0ZXJtaW5h
bCB0ZXh0IGNvbG9yLgogLy8KLS8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBXcml0ZSB0ZXN0cyBm
b3IgdGhpcyBvbmNlIHdlIGFkZCBzdGRvdXQKKy8vIEZJWE1FOiBXcml0ZSB0ZXN0cyBmb3IgdGhp
cyBvbmNlIHdlIGFkZCBzdGRvdXQKIC8vIGNhcHR1cmluZyB0byBHb29nbGUgVGVzdC4KIHN0YXRp
YyB2b2lkIFByaW50Q29sb3JFbmNvZGVkKGNvbnN0IGNoYXIqIHN0cikgewogICBHVGVzdENvbG9y
IGNvbG9yID0gQ09MT1JfREVGQVVMVDsgIC8vIFRoZSBjdXJyZW50IGNvbG9yLgpAQCAtNDQ5NSw3
ICs1NzAwLDcgQEAgc3RhdGljIHZvaWQgUHJpbnRDb2xvckVuY29kZWQoY29uc3QgY2hhciogc3Ry
KSB7CiAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQ29sb3JlZFByaW50Zihjb2xvciwgIiVz
IiwgU3RyaW5nKHN0ciwgcCAtIHN0cikuY19zdHIoKSk7CisgICAgQ29sb3JlZFByaW50Zihjb2xv
ciwgIiVzIiwgc3RkOjpzdHJpbmcoc3RyLCBwKS5jX3N0cigpKTsKIAogICAgIGNvbnN0IGNoYXIg
Y2ggPSBwWzFdOwogICAgIHN0ciA9IHAgKyAyOwpAQCAtNDU0NSwyNCArNTc1MCwyOCBAQCBzdGF0
aWMgY29uc3QgY2hhciBrQ29sb3JFbmNvZGVkSGVscE1lc3NhZ2VbXSA9CiAiICAgICAgRW5hYmxl
L2Rpc2FibGUgY29sb3JlZCBvdXRwdXQuIFRoZSBkZWZhdWx0IGlzIEBHYXV0b0BELlxuIgogIiAg
LUBHLSIgR1RFU1RfRkxBR19QUkVGSVhfICJwcmludF90aW1lPTBARFxuIgogIiAgICAgIERvbid0
IHByaW50IHRoZSBlbGFwc2VkIHRpbWUgb2YgZWFjaCB0ZXN0LlxuIgotIiAgQEctLSIgR1RFU1Rf
RkxBR19QUkVGSVhfICJvdXRwdXQ9eG1sQFlbQEc6QFlESVJFQ1RPUllfUEFUSEBHIgorIiAgQEct
LSIgR1RFU1RfRkxBR19QUkVGSVhfICJvdXRwdXQ9QFkoQEdqc29uQFl8QEd4bWxAWSlbQEc6QFlE
SVJFQ1RPUllfUEFUSEBHIgogICAgIEdURVNUX1BBVEhfU0VQXyAiQFl8QEc6QFlGSUxFX1BBVEhd
QERcbiIKLSIgICAgICBHZW5lcmF0ZSBhbiBYTUwgcmVwb3J0IGluIHRoZSBnaXZlbiBkaXJlY3Rv
cnkgb3Igd2l0aCB0aGUgZ2l2ZW4gZmlsZVxuIgotIiAgICAgIG5hbWUuIEBZRklMRV9QQVRIQEQg
ZGVmYXVsdHMgdG8gQEd0ZXN0X2RldGFpbHMueG1sQEQuXG4iCisiICAgICAgR2VuZXJhdGUgYSBK
U09OIG9yIFhNTCByZXBvcnQgaW4gdGhlIGdpdmVuIGRpcmVjdG9yeSBvciB3aXRoIHRoZSBnaXZl
blxuIgorIiAgICAgIGZpbGUgbmFtZS4gQFlGSUxFX1BBVEhARCBkZWZhdWx0cyB0byBAR3Rlc3Rf
ZGV0YWlscy54bWxARC5cbiIKKyMgaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworIiAgQEct
LSIgR1RFU1RfRkxBR19QUkVGSVhfICJzdHJlYW1fcmVzdWx0X3RvPUBZSE9TVEBHOkBZUE9SVEBE
XG4iCisiICAgICAgU3RyZWFtIHRlc3QgcmVzdWx0cyB0byB0aGUgZ2l2ZW4gc2VydmVyLlxuIgor
IyBlbmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXwogIlxuIgogIkFzc2VydGlvbiBC
ZWhhdmlvcjpcbiIKLSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVCAmJiAhR1RFU1RfT1NfV0lORE9X
UworIyBpZiBHVEVTVF9IQVNfREVBVEhfVEVTVCAmJiAhR1RFU1RfT1NfV0lORE9XUwogIiAgQEct
LSIgR1RFU1RfRkxBR19QUkVGSVhfICJkZWF0aF90ZXN0X3N0eWxlPUBZKEBHZmFzdEBZfEBHdGhy
ZWFkc2FmZUBZKUBEXG4iCiAiICAgICAgU2V0IHRoZSBkZWZhdWx0IGRlYXRoIHRlc3Qgc3R5bGUu
XG4iCi0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUICYmICFHVEVTVF9PU19XSU5ET1dT
CisjIGVuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVCAmJiAhR1RFU1RfT1NfV0lORE9XUwog
IiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJicmVha19vbl9mYWlsdXJlQERcbiIKICIgICAg
ICBUdXJuIGFzc2VydGlvbiBmYWlsdXJlcyBpbnRvIGRlYnVnZ2VyIGJyZWFrLXBvaW50cy5cbiIK
ICIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAidGhyb3dfb25fZmFpbHVyZUBEXG4iCi0iICAg
ICAgVHVybiBhc3NlcnRpb24gZmFpbHVyZXMgaW50byBDKysgZXhjZXB0aW9ucy5cbiIKLSNpZiBH
VEVTVF9PU19XSU5ET1dTCi0iICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImNhdGNoX2V4Y2Vw
dGlvbnNARFxuIgotIiAgICAgIFN1cHByZXNzIHBvcC11cHMgY2F1c2VkIGJ5IGV4Y2VwdGlvbnMu
XG4iCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyIgICAgICBUdXJuIGFzc2VydGlvbiBm
YWlsdXJlcyBpbnRvIEMrKyBleGNlcHRpb25zIGZvciB1c2UgYnkgYW4gZXh0ZXJuYWxcbiIKKyIg
ICAgICB0ZXN0IGZyYW1ld29yay5cbiIKKyIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiY2F0
Y2hfZXhjZXB0aW9ucz0wQERcbiIKKyIgICAgICBEbyBub3QgcmVwb3J0IGV4Y2VwdGlvbnMgYXMg
dGVzdCBmYWlsdXJlcy4gSW5zdGVhZCwgYWxsb3cgdGhlbVxuIgorIiAgICAgIHRvIGNyYXNoIHRo
ZSBwcm9ncmFtIG9yIHRocm93IGEgcG9wLXVwIChvbiBXaW5kb3dzKS5cbiIKICJcbiIKICJFeGNl
cHQgZm9yIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAibGlzdF90ZXN0c0BELCB5b3UgY2FuIGFs
dGVybmF0aXZlbHkgc2V0ICIKICAgICAidGhlIGNvcnJlc3BvbmRpbmdcbiIKQEAgLTQ1NzYsNDUg
KzU3ODUsODcgQEAgc3RhdGljIGNvbnN0IGNoYXIga0NvbG9yRW5jb2RlZEhlbHBNZXNzYWdlW10g
PQogIihub3Qgb25lIGluIHlvdXIgb3duIGNvZGUgb3IgdGVzdHMpLCBwbGVhc2UgcmVwb3J0IGl0
IHRvXG4iCiAiQEc8IiBHVEVTVF9ERVZfRU1BSUxfICI+QEQuXG4iOwogCitzdGF0aWMgYm9vbCBQ
YXJzZUdvb2dsZVRlc3RGbGFnKGNvbnN0IGNoYXIqIGNvbnN0IGFyZykgeworICByZXR1cm4gUGFy
c2VCb29sRmxhZyhhcmcsIGtBbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcsCisgICAgICAgICAgICAg
ICAgICAgICAgICZHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzKSkgfHwKKyAgICAg
IFBhcnNlQm9vbEZsYWcoYXJnLCBrQnJlYWtPbkZhaWx1cmVGbGFnLAorICAgICAgICAgICAgICAg
ICAgICAmR1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJlKSkgfHwKKyAgICAgIFBhcnNlQm9vbEZs
YWcoYXJnLCBrQ2F0Y2hFeGNlcHRpb25zRmxhZywKKyAgICAgICAgICAgICAgICAgICAgJkdURVNU
X0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykpIHx8CisgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBr
Q29sb3JGbGFnLCAmR1RFU1RfRkxBRyhjb2xvcikpIHx8CisgICAgICBQYXJzZVN0cmluZ0ZsYWco
YXJnLCBrRGVhdGhUZXN0U3R5bGVGbGFnLAorICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpKSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtEZWF0
aFRlc3RVc2VGb3JrLAorICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhkZWF0aF90ZXN0
X3VzZV9mb3JrKSkgfHwKKyAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtGaWx0ZXJGbGFnLCAm
R1RFU1RfRkxBRyhmaWx0ZXIpKSB8fAorICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga0ludGVy
bmFsUnVuRGVhdGhUZXN0RmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhp
bnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkpIHx8CisgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0xp
c3RUZXN0c0ZsYWcsICZHVEVTVF9GTEFHKGxpc3RfdGVzdHMpKSB8fAorICAgICAgUGFyc2VTdHJp
bmdGbGFnKGFyZywga091dHB1dEZsYWcsICZHVEVTVF9GTEFHKG91dHB1dCkpIHx8CisgICAgICBQ
YXJzZUJvb2xGbGFnKGFyZywga1ByaW50VGltZUZsYWcsICZHVEVTVF9GTEFHKHByaW50X3RpbWUp
KSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtQcmludFVURjhGbGFnLCAmR1RFU1RfRkxB
RyhwcmludF91dGY4KSkgfHwKKyAgICAgIFBhcnNlSW50MzJGbGFnKGFyZywga1JhbmRvbVNlZWRG
bGFnLCAmR1RFU1RfRkxBRyhyYW5kb21fc2VlZCkpIHx8CisgICAgICBQYXJzZUludDMyRmxhZyhh
cmcsIGtSZXBlYXRGbGFnLCAmR1RFU1RfRkxBRyhyZXBlYXQpKSB8fAorICAgICAgUGFyc2VCb29s
RmxhZyhhcmcsIGtTaHVmZmxlRmxhZywgJkdURVNUX0ZMQUcoc2h1ZmZsZSkpIHx8CisgICAgICBQ
YXJzZUludDMyRmxhZyhhcmcsIGtTdGFja1RyYWNlRGVwdGhGbGFnLAorICAgICAgICAgICAgICAg
ICAgICAgJkdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpKSB8fAorICAgICAgUGFyc2VTdHJp
bmdGbGFnKGFyZywga1N0cmVhbVJlc3VsdFRvRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAm
R1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSkgfHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJn
LCBrVGhyb3dPbkZhaWx1cmVGbGFnLAorICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyh0
aHJvd19vbl9mYWlsdXJlKSk7Cit9CisKKyNpZiBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdf
CitzdGF0aWMgdm9pZCBMb2FkRmxhZ3NGcm9tRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCkg
eworICBGSUxFKiBmbGFnZmlsZSA9IHBvc2l4OjpGT3BlbihwYXRoLmNfc3RyKCksICJyIik7Cisg
IGlmICghZmxhZ2ZpbGUpIHsKKyAgICBHVEVTVF9MT0dfKEZBVEFMKSA8PCAiVW5hYmxlIHRvIG9w
ZW4gZmlsZSBcIiIgPDwgR1RFU1RfRkxBRyhmbGFnZmlsZSkKKyAgICAgICAgICAgICAgICAgICAg
ICA8PCAiXCIiOworICB9CisgIHN0ZDo6c3RyaW5nIGNvbnRlbnRzKFJlYWRFbnRpcmVGaWxlKGZs
YWdmaWxlKSk7CisgIHBvc2l4OjpGQ2xvc2UoZmxhZ2ZpbGUpOworICBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gbGluZXM7CisgIFNwbGl0U3RyaW5nKGNvbnRlbnRzLCAnXG4nLCAmbGluZXMpOwor
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpbmVzLnNpemUoKTsgKytpKSB7CisgICAgaWYgKGxp
bmVzW2ldLmVtcHR5KCkpCisgICAgICBjb250aW51ZTsKKyAgICBpZiAoIVBhcnNlR29vZ2xlVGVz
dEZsYWcobGluZXNbaV0uY19zdHIoKSkpCisgICAgICBnX2hlbHBfZmxhZyA9IHRydWU7CisgIH0K
K30KKyNlbmRpZiAgLy8gR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXworCiAvLyBQYXJzZXMg
dGhlIGNvbW1hbmQgbGluZSBmb3IgR29vZ2xlIFRlc3QgZmxhZ3MsIHdpdGhvdXQgaW5pdGlhbGl6
aW5nCiAvLyBvdGhlciBwYXJ0cyBvZiBHb29nbGUgVGVzdC4gIFRoZSB0eXBlIHBhcmFtZXRlciBD
aGFyVHlwZSBjYW4gYmUKIC8vIGluc3RhbnRpYXRlZCB0byBlaXRoZXIgY2hhciBvciB3Y2hhcl90
LgogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFn
c09ubHlJbXBsKGludCogYXJnYywgQ2hhclR5cGUqKiBhcmd2KSB7CiAgIGZvciAoaW50IGkgPSAx
OyBpIDwgKmFyZ2M7IGkrKykgewotICAgIGNvbnN0IFN0cmluZyBhcmdfc3RyaW5nID0gU3RyZWFt
YWJsZVRvU3RyaW5nKGFyZ3ZbaV0pOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGFyZ19zdHJpbmcg
PSBTdHJlYW1hYmxlVG9TdHJpbmcoYXJndltpXSk7CiAgICAgY29uc3QgY2hhciogY29uc3QgYXJn
ID0gYXJnX3N0cmluZy5jX3N0cigpOwogCiAgICAgdXNpbmcgaW50ZXJuYWw6OlBhcnNlQm9vbEZs
YWc7CiAgICAgdXNpbmcgaW50ZXJuYWw6OlBhcnNlSW50MzJGbGFnOwogICAgIHVzaW5nIGludGVy
bmFsOjpQYXJzZVN0cmluZ0ZsYWc7CiAKLSAgICAvLyBEbyB3ZSBzZWUgYSBHb29nbGUgVGVzdCBm
bGFnPwotICAgIGlmIChQYXJzZUJvb2xGbGFnKGFyZywga0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxh
ZywKLSAgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90
ZXN0cykpIHx8Ci0gICAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrQnJlYWtPbkZhaWx1cmVGbGFn
LAotICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpKSB8
fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0NhdGNoRXhjZXB0aW9uc0ZsYWcsCi0gICAg
ICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykpIHx8Ci0gICAg
ICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtDb2xvckZsYWcsICZHVEVTVF9GTEFHKGNvbG9yKSkg
fHwKLSAgICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga0RlYXRoVGVzdFN0eWxlRmxhZywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpKSB8fAot
ICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0RlYXRoVGVzdFVzZUZvcmssCi0gICAgICAgICAg
ICAgICAgICAgICAgJkdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yaykpIHx8Ci0gICAgICAg
IFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtGaWx0ZXJGbGFnLCAmR1RFU1RfRkxBRyhmaWx0ZXIpKSB8
fAotICAgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFn
LAotICAgICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRo
X3Rlc3QpKSB8fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0xpc3RUZXN0c0ZsYWcsICZH
VEVTVF9GTEFHKGxpc3RfdGVzdHMpKSB8fAotICAgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBr
T3V0cHV0RmxhZywgJkdURVNUX0ZMQUcob3V0cHV0KSkgfHwKLSAgICAgICAgUGFyc2VCb29sRmxh
ZyhhcmcsIGtQcmludFRpbWVGbGFnLCAmR1RFU1RfRkxBRyhwcmludF90aW1lKSkgfHwKLSAgICAg
ICAgUGFyc2VJbnQzMkZsYWcoYXJnLCBrUmFuZG9tU2VlZEZsYWcsICZHVEVTVF9GTEFHKHJhbmRv
bV9zZWVkKSkgfHwKLSAgICAgICAgUGFyc2VJbnQzMkZsYWcoYXJnLCBrUmVwZWF0RmxhZywgJkdU
RVNUX0ZMQUcocmVwZWF0KSkgfHwKLSAgICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtTaHVmZmxl
RmxhZywgJkdURVNUX0ZMQUcoc2h1ZmZsZSkpIHx8Ci0gICAgICAgIFBhcnNlSW50MzJGbGFnKGFy
Zywga1N0YWNrVHJhY2VEZXB0aEZsYWcsCi0gICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9G
TEFHKHN0YWNrX3RyYWNlX2RlcHRoKSkgfHwKLSAgICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtU
aHJvd09uRmFpbHVyZUZsYWcsICZHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpKQotICAgICAg
ICApIHsKLSAgICAgIC8vIFllcy4gIFNoaWZ0IHRoZSByZW1haW5kZXIgb2YgdGhlIGFyZ3YgbGlz
dCBsZWZ0IGJ5IG9uZS4gIE5vdGUKKyAgICBib29sIHJlbW92ZV9mbGFnID0gZmFsc2U7CisgICAg
aWYgKFBhcnNlR29vZ2xlVGVzdEZsYWcoYXJnKSkgeworICAgICAgcmVtb3ZlX2ZsYWcgPSB0cnVl
OworI2lmIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KKyAgICB9IGVsc2UgaWYgKFBhcnNl
U3RyaW5nRmxhZyhhcmcsIGtGbGFnZmlsZUZsYWcsICZHVEVTVF9GTEFHKGZsYWdmaWxlKSkpIHsK
KyAgICAgIExvYWRGbGFnc0Zyb21GaWxlKEdURVNUX0ZMQUcoZmxhZ2ZpbGUpKTsKKyAgICAgIHJl
bW92ZV9mbGFnID0gdHJ1ZTsKKyNlbmRpZiAgLy8gR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFH
XworICAgIH0gZWxzZSBpZiAoYXJnX3N0cmluZyA9PSAiLS1oZWxwIiB8fCBhcmdfc3RyaW5nID09
ICItaCIgfHwKKyAgICAgICAgICAgICAgIGFyZ19zdHJpbmcgPT0gIi0/IiB8fCBhcmdfc3RyaW5n
ID09ICIvPyIgfHwKKyAgICAgICAgICAgICAgIEhhc0dvb2dsZVRlc3RGbGFnUHJlZml4KGFyZykp
IHsKKyAgICAgIC8vIEJvdGggaGVscCBmbGFnIGFuZCB1bnJlY29nbml6ZWQgR29vZ2xlIFRlc3Qg
ZmxhZ3MgKGV4Y2x1ZGluZworICAgICAgLy8gaW50ZXJuYWwgb25lcykgdHJpZ2dlciBoZWxwIGRp
c3BsYXkuCisgICAgICBnX2hlbHBfZmxhZyA9IHRydWU7CisgICAgfQorCisgICAgaWYgKHJlbW92
ZV9mbGFnKSB7CisgICAgICAvLyBTaGlmdCB0aGUgcmVtYWluZGVyIG9mIHRoZSBhcmd2IGxpc3Qg
bGVmdCBieSBvbmUuICBOb3RlCiAgICAgICAvLyB0aGF0IGFyZ3YgaGFzICgqYXJnYyArIDEpIGVs
ZW1lbnRzLCB0aGUgbGFzdCBvbmUgYWx3YXlzIGJlaW5nCiAgICAgICAvLyBOVUxMLiAgVGhlIGZv
bGxvd2luZyBsb29wIG1vdmVzIHRoZSB0cmFpbGluZyBOVUxMIGVsZW1lbnQgYXMKICAgICAgIC8v
IHdlbGwuCkBAIC00NjI4LDEyICs1ODc5LDYgQEAgdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09u
bHlJbXBsKGludCogYXJnYywgQ2hhclR5cGUqKiBhcmd2KSB7CiAgICAgICAvLyBXZSBhbHNvIG5l
ZWQgdG8gZGVjcmVtZW50IHRoZSBpdGVyYXRvciBhcyB3ZSBqdXN0IHJlbW92ZWQKICAgICAgIC8v
IGFuIGVsZW1lbnQuCiAgICAgICBpLS07Ci0gICAgfSBlbHNlIGlmIChhcmdfc3RyaW5nID09ICIt
LWhlbHAiIHx8IGFyZ19zdHJpbmcgPT0gIi1oIiB8fAotICAgICAgICAgICAgICAgYXJnX3N0cmlu
ZyA9PSAiLT8iIHx8IGFyZ19zdHJpbmcgPT0gIi8/IiB8fAotICAgICAgICAgICAgICAgSGFzR29v
Z2xlVGVzdEZsYWdQcmVmaXgoYXJnKSkgewotICAgICAgLy8gQm90aCBoZWxwIGZsYWcgYW5kIHVu
cmVjb2duaXplZCBHb29nbGUgVGVzdCBmbGFncyAoZXhjbHVkaW5nCi0gICAgICAvLyBpbnRlcm5h
bCBvbmVzKSB0cmlnZ2VyIGhlbHAgZGlzcGxheS4KLSAgICAgIGdfaGVscF9mbGFnID0gdHJ1ZTsK
ICAgICB9CiAgIH0KIApAQCAtNDY0OSw2ICs1ODk0LDE3IEBAIHZvaWQgUGFyc2VHb29nbGVUZXN0
RmxhZ3NPbmx5SW1wbChpbnQqIGFyZ2MsIENoYXJUeXBlKiogYXJndikgewogLy8gb3RoZXIgcGFy
dHMgb2YgR29vZ2xlIFRlc3QuCiB2b2lkIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seShpbnQqIGFy
Z2MsIGNoYXIqKiBhcmd2KSB7CiAgIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seUltcGwoYXJnYywg
YXJndik7CisKKyAgLy8gRml4IHRoZSB2YWx1ZSBvZiAqX05TR2V0QXJnYygpIG9uIG1hY09TLCBi
dXQgaWZmCisgIC8vICpfTlNHZXRBcmd2KCkgPT0gYXJndgorICAvLyBPbmx5IGFwcGxpY2FibGUg
dG8gY2hhcioqIHZlcnNpb24gb2YgYXJndgorI2lmIEdURVNUX09TX01BQworI2lmbmRlZiBHVEVT
VF9PU19JT1MKKyAgaWYgKCpfTlNHZXRBcmd2KCkgPT0gYXJndikgeworICAgICpfTlNHZXRBcmdj
KCkgPSAqYXJnYzsKKyAgfQorI2VuZGlmCisjZW5kaWYKIH0KIHZvaWQgUGFyc2VHb29nbGVUZXN0
RmxhZ3NPbmx5KGludCogYXJnYywgd2NoYXJfdCoqIGFyZ3YpIHsKICAgUGFyc2VHb29nbGVUZXN0
RmxhZ3NPbmx5SW1wbChhcmdjLCBhcmd2KTsKQEAgLTQ2NjAsMjEgKzU5MTYsMTkgQEAgdm9pZCBQ
YXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndikgewogLy8g
d2NoYXJfdC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KIHZvaWQgSW5pdEdvb2dsZVRl
c3RJbXBsKGludCogYXJnYywgQ2hhclR5cGUqKiBhcmd2KSB7Ci0gIGdfaW5pdF9ndGVzdF9jb3Vu
dCsrOwotCiAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcnVuIHRoZSBpbml0aWFsaXphdGlvbiBjb2Rl
IHR3aWNlLgotICBpZiAoZ19pbml0X2d0ZXN0X2NvdW50ICE9IDEpIHJldHVybjsKKyAgaWYgKEdU
ZXN0SXNJbml0aWFsaXplZCgpKSByZXR1cm47CiAKICAgaWYgKCphcmdjIDw9IDApIHJldHVybjsK
IAotICBpbnRlcm5hbDo6Z19leGVjdXRhYmxlX3BhdGggPSBpbnRlcm5hbDo6U3RyZWFtYWJsZVRv
U3RyaW5nKGFyZ3ZbMF0pOwotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKICAgZ19hcmd2cy5j
bGVhcigpOwogICBmb3IgKGludCBpID0gMDsgaSAhPSAqYXJnYzsgaSsrKSB7CiAgICAgZ19hcmd2
cy5wdXNoX2JhY2soU3RyZWFtYWJsZVRvU3RyaW5nKGFyZ3ZbaV0pKTsKICAgfQotI2VuZGlmICAv
LyBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisjaWYgR1RFU1RfSEFTX0FCU0wKKyAgYWJzbDo6SW5p
dGlhbGl6ZVN5bWJvbGl6ZXIoZ19hcmd2c1swXS5jX3N0cigpKTsKKyNlbmRpZiAgLy8gR1RFU1Rf
SEFTX0FCU0wKIAogICBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoYXJnYywgYXJndik7CiAgIEdl
dFVuaXRUZXN0SW1wbCgpLT5Qb3N0RmxhZ1BhcnNpbmdJbml0KCk7CkBAIC00NjkyLDEzICs1OTQ2
LDYyIEBAIHZvaWQgSW5pdEdvb2dsZVRlc3RJbXBsKGludCogYXJnYywgQ2hhclR5cGUqKiBhcmd2
KSB7CiAvLwogLy8gQ2FsbGluZyB0aGUgZnVuY3Rpb24gZm9yIHRoZSBzZWNvbmQgdGltZSBoYXMg
bm8gdXNlci12aXNpYmxlIGVmZmVjdC4KIHZvaWQgSW5pdEdvb2dsZVRlc3QoaW50KiBhcmdjLCBj
aGFyKiogYXJndikgeworI2lmIGRlZmluZWQoR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1Rf
RlVOQ1RJT05fKQorICBHVEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8oYXJn
YywgYXJndik7CisjZWxzZSAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVT
VF9GVU5DVElPTl8pCiAgIGludGVybmFsOjpJbml0R29vZ2xlVGVzdEltcGwoYXJnYywgYXJndik7
CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJ
T05fKQogfQogCiAvLyBUaGlzIG92ZXJsb2FkZWQgdmVyc2lvbiBjYW4gYmUgdXNlZCBpbiBXaW5k
b3dzIHByb2dyYW1zIGNvbXBpbGVkIGluCiAvLyBVTklDT0RFIG1vZGUuCiB2b2lkIEluaXRHb29n
bGVUZXN0KGludCogYXJnYywgd2NoYXJfdCoqIGFyZ3YpIHsKKyNpZiBkZWZpbmVkKEdURVNUX0NV
U1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9OXykKKyAgR1RFU1RfQ1VTVE9NX0lOSVRfR09P
R0xFX1RFU1RfRlVOQ1RJT05fKGFyZ2MsIGFyZ3YpOworI2Vsc2UgIC8vIGRlZmluZWQoR1RFU1Rf
Q1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQogICBpbnRlcm5hbDo6SW5pdEdvb2ds
ZVRlc3RJbXBsKGFyZ2MsIGFyZ3YpOworI2VuZGlmICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9J
TklUX0dPT0dMRV9URVNUX0ZVTkNUSU9OXykKK30KKworc3RkOjpzdHJpbmcgVGVtcERpcigpIHsK
KyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9URU1QRElSX0ZVTkNUSU9OXykKKyAgcmV0dXJuIEdU
RVNUX0NVU1RPTV9URU1QRElSX0ZVTkNUSU9OXygpOworI2VuZGlmCisKKyNpZiBHVEVTVF9PU19X
SU5ET1dTX01PQklMRQorICByZXR1cm4gIlxcdGVtcFxcIjsKKyNlbGlmIEdURVNUX09TX1dJTkRP
V1MKKyAgY29uc3QgY2hhciogdGVtcF9kaXIgPSBpbnRlcm5hbDo6cG9zaXg6OkdldEVudigiVEVN
UCIpOworICBpZiAodGVtcF9kaXIgPT0gTlVMTCB8fCB0ZW1wX2RpclswXSA9PSAnXDAnKQorICAg
IHJldHVybiAiXFx0ZW1wXFwiOworICBlbHNlIGlmICh0ZW1wX2RpcltzdHJsZW4odGVtcF9kaXIp
IC0gMV0gPT0gJ1xcJykKKyAgICByZXR1cm4gdGVtcF9kaXI7CisgIGVsc2UKKyAgICByZXR1cm4g
c3RkOjpzdHJpbmcodGVtcF9kaXIpICsgIlxcIjsKKyNlbGlmIEdURVNUX09TX0xJTlVYX0FORFJP
SUQKKyAgcmV0dXJuICIvc2RjYXJkLyI7CisjZWxzZQorICByZXR1cm4gIi90bXAvIjsKKyNlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKK30KKworLy8gQ2xhc3MgU2NvcGVkVHJhY2UK
KworLy8gUHVzaGVzIHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlvbiBhbmQgbWVzc2FnZSBv
bnRvIGEgcGVyLXRocmVhZAorLy8gdHJhY2Ugc3RhY2sgbWFpbnRhaW5lZCBieSBHb29nbGUgVGVz
dC4KK3ZvaWQgU2NvcGVkVHJhY2U6OlB1c2hUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGlu
ZSwgc3RkOjpzdHJpbmcgbWVzc2FnZSkgeworICBpbnRlcm5hbDo6VHJhY2VJbmZvIHRyYWNlOwor
ICB0cmFjZS5maWxlID0gZmlsZTsKKyAgdHJhY2UubGluZSA9IGxpbmU7CisgIHRyYWNlLm1lc3Nh
Z2Uuc3dhcChtZXNzYWdlKTsKKworICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+UHVzaEdUZXN0
VHJhY2UodHJhY2UpOworfQorCisvLyBQb3BzIHRoZSBpbmZvIHB1c2hlZCBieSB0aGUgYyd0b3Iu
CitTY29wZWRUcmFjZTo6flNjb3BlZFRyYWNlKCkKKyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXygm
VW5pdFRlc3Q6Om11dGV4XykgeworICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+UG9wR1Rlc3RU
cmFjZSgpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0X21haW4uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zcmMvZ3Rlc3RfbWFpbi5jYwppbmRleCBkMjBjMDJmZGZiMGE5NDYxZGNjMmEyNzg5YzQ5
MjJiNWIzMDU2MzUyLi4yMTEzZjYyMWU2NTQzMGU1NTcwZGZiMjAxNTg4NGEyZDRmNGNmMGIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3RfbWFpbi5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3RfbWFpbi5jYwpAQCAtMjcsMTMgKzI3
LDExIEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpbmNsdWRlIDxpb3N0
cmVhbT4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLWludCBtYWluKGludCBhcmdjLCBj
aGFyICoqYXJndikgewotICBzdGQ6OmNvdXQgPDwgIlJ1bm5pbmcgbWFpbigpIGZyb20gZ3Rlc3Rf
bWFpbi5jY1xuIjsKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CiAKK0dURVNUX0FQSV8gaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIHByaW50
ZigiUnVubmluZyBtYWluKCkgZnJvbSAlc1xuIiwgX19GSUxFX18pOwogICB0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CiAgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L0JVSUxELmJhemVsIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9CVUlMRC5iYXplbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTMwZDY1
ZTA0NDAxNDQ0MTZhZTg4YWIyNzU4ZmQ5MzQwYTA5MzdiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9CVUlMRC5iYXplbApAQCAtMCwwICsxLDUyNyBAQAor
IyBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLgorIyBBbGwgUmlnaHRzIFJlc2VydmVkLgorIwor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgQXV0aG9yOiBtaXN0ZXJnQGdvb2dsZS5jb20gKEdlbm5h
ZGl5IENpdmlsKQorIworIyBCYXplbCBCVUlMRCBmb3IgVGhlIEdvb2dsZSBDKysgVGVzdGluZyBG
cmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorCitsaWNlbnNlcyhbIm5vdGljZSJdKQorCitjb25maWdf
c2V0dGluZygKKyAgICBuYW1lID0gIndpbmRvd3MiLAorICAgIHZhbHVlcyA9IHsiY3B1IjogIng2
NF93aW5kb3dzIn0sCispCisKK2NvbmZpZ19zZXR0aW5nKAorICAgIG5hbWUgPSAid2luZG93c19t
c3ZjIiwKKyAgICB2YWx1ZXMgPSB7ImNwdSI6ICJ4NjRfd2luZG93c19tc3ZjIn0sCispCisKK2Nv
bmZpZ19zZXR0aW5nKAorICAgIG5hbWUgPSAiaGFzX2Fic2wiLAorICAgIHZhbHVlcyA9IHsiZGVm
aW5lIjogImFic2w9MSJ9LAorKQorCisjb24gd2luZG93cyBleGNsdWRlIGd0ZXN0LXR1cGxlLmgg
YW5kIGdvb2dsZXRlc3QtdHVwbGUtdGVzdC5jYworY2NfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0
X2FsbF90ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gZ2xvYigKKyAgICAg
ICAgaW5jbHVkZSA9IFsKKyAgICAgICAgICAgICJndGVzdC0qLmNjIiwKKyAgICAgICAgICAgICJn
b29nbGV0ZXN0LSouY2MiLAorICAgICAgICAgICAgIiouaCIsCisgICAgICAgICAgICAiZ29vZ2xl
dGVzdC9pbmNsdWRlL2d0ZXN0LyoqLyouaCIsCisgICAgICAgIF0sCisgICAgICAgIGV4Y2x1ZGUg
PSBbCisgICAgICAgICAgICAiZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2MiLAorICAgICAgICAg
ICAgImdvb2dsZXRlc3QtdHVwbGUtdGVzdC5jYyIsCisgICAgICAgICAgICAiZ29vZ2xldGVzdC9z
cmMvZ3Rlc3QtYWxsLmNjIiwKKyAgICAgICAgICAgICJndGVzdF9hbGxfdGVzdC5jYyIsCisgICAg
ICAgICAgICAiZ3Rlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNjIiwKKyAgICAgICAgICAgICJndGVz
dC1saXN0ZW5lcl90ZXN0LmNjIiwKKyAgICAgICAgICAgICJndGVzdC11bml0dGVzdC1hcGlfdGVz
dC5jYyIsCisgICAgICAgICAgICAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MiLAorICAg
ICAgICAgICAgImdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0Xy5jYyIsCisgICAgICAg
ICAgICAiZ29vZ2xldGVzdC1jb2xvci10ZXN0Xy5jYyIsCisgICAgICAgICAgICAiZ29vZ2xldGVz
dC1lbnYtdmFyLXRlc3RfLmNjIiwKKyAgICAgICAgICAgICJnb29nbGV0ZXN0LWZpbHRlci11bml0
dGVzdF8uY2MiLAorICAgICAgICAgICAgImdvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0
dGVzdF8uY2MiLAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LWxpc3RlbmVyLXRlc3QuY2MiLAor
ICAgICAgICAgICAgICJnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYyIsCisgICAgICAgICAgICAg
Imdvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdF8uY2MiLAorICAgICAgICAgICAgICJnb29n
bGV0ZXN0LXNodWZmbGUtdGVzdF8uY2MiLAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LXVuaW5p
dGlhbGl6ZWQtdGVzdF8uY2MiLAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LWRlYXRoLXRlc3Rf
ZXhfdGVzdC5jYyIsCisgICAgICAgICAgICAgImdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0IiwK
KyAgICAgICAgICAgICAiZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfLmNjIiwKKyAg
ICAgICAgICAgICAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdF8uY2Mi
LAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0
Xy5jYyIsCisKKyAgICAgICAgXSwKKyAgICApICsgc2VsZWN0KHsKKyAgICAgICAgIi8vOndpbmRv
d3MiOiBbXSwKKyAgICAgICAgIi8vOndpbmRvd3NfbXN2YyI6IFtdLAorICAgICAgICAiLy9jb25k
aXRpb25zOmRlZmF1bHQiOiBbCisgICAgICAgICAgICAiZ29vZ2xldGVzdC10dXBsZS10ZXN0LmNj
IiwKKyAgICAgICAgXSwKKyAgICB9KSwKKyAgICBjb3B0cyA9IHNlbGVjdCh7CisgICAgICAgICIv
Lzp3aW5kb3dzIjogWyItREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTAiXSwKKyAgICAgICAgIi8v
OndpbmRvd3NfbXN2YyI6IFsiLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0wIl0sCisgICAgICAg
ICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsiLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0xIl0s
CisgICAgfSksCisgICAgaW5jbHVkZXMgPSBbCisgICAgICAgICJnb29nbGV0ZXN0IiwKKyAgICAg
ICAgImdvb2dsZXRlc3QvaW5jbHVkZSIsCisgICAgICAgICJnb29nbGV0ZXN0L2luY2x1ZGUvaW50
ZXJuYWwiLAorICAgICAgICAiZ29vZ2xldGVzdC90ZXN0IiwKKyAgICBdLAorICAgIGxpbmtvcHRz
ID0gc2VsZWN0KHsKKyAgICAgICAgIi8vOndpbmRvd3MiOiBbXSwKKyAgICAgICAgIi8vOndpbmRv
d3NfbXN2YyI6IFtdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbCisgICAgICAg
ICAgICAiLXB0aHJlYWQiLAorICAgICAgICBdLAorICAgIH0pLAorICAgIGRlcHMgPSBbIi8vOmd0
ZXN0X21haW4iXSwKKykKKworCisjIFRlc3RzIGRlYXRoIHRlc3RzLgorY2NfdGVzdCgKKyAgICBu
YW1lID0gImdvb2dsZXRlc3QtZGVhdGgtdGVzdC10ZXN0IiwKKyAgICBzaXplID0gIm1lZGl1bSIs
CisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1kZWF0aC10ZXN0LXRlc3QuY2MiXSwKKyAgICBkZXBz
ID0gWyIvLzpndGVzdF9tYWluIl0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJndGVzdF90
ZXN0X21hY3JvX3N0YWNrX2Zvb3RwcmludF90ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAg
ICBzcmNzID0gWyJndGVzdF90ZXN0X21hY3JvX3N0YWNrX2Zvb3RwcmludF90ZXN0LmNjIl0sCisg
ICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworI1RoZXNlIGdvb2dsZXRlc3QgdGVzdHMgaGF2
ZSB0aGVpciBvd24gbWFpbigpCitjY190ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1saXN0
ZW5lci10ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0
LWxpc3RlbmVyLXRlc3QuY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdF9tYWluIl0sCispCisK
K2NjX3Rlc3QoCisgICAgbmFtZSA9ICJndGVzdC11bml0dGVzdC1hcGlfdGVzdCIsCisgICAgc2l6
ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImd0ZXN0LXVuaXR0ZXN0LWFwaV90
ZXN0LmNjIiwKKyAgICBdLAorICAgIGRlcHMgPSBbCisgICAgICAgICIvLzpndGVzdCIsCisgICAg
XSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0
IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWworICAgICAgICAiZ29vZ2xldGVz
dC1wYXJhbS10ZXN0LXRlc3QuY2MiLAorICAgICAgICAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRl
c3QuaCIsCisgICAgICAgICJnb29nbGV0ZXN0LXBhcmFtLXRlc3QyLXRlc3QuY2MiLAorICAgIF0s
CisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImd0
ZXN0X3VuaXR0ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJndGVzdF91
bml0dGVzdC5jYyJdLAorICAgIGFyZ3MgPSBbIi0taGVhcF9jaGVjaz1zdHJpY3QiXSwKKyAgICBz
aGFyZF9jb3VudCA9IDIsCisgICAgZGVwcyA9IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQorCisjICBQ
eSB0ZXN0cworCitweV9saWJyYXJ5KAorICAgIG5hbWUgPSAiZ3Rlc3RfdGVzdF91dGlscyIsCisg
ICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImd0ZXN0X3Rlc3RfdXRpbHMucHkiXSwKKykK
KworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ3Rlc3RfaGVscF90ZXN0XyIsCisgICAgdGVzdG9u
bHkgPSAxLAorICAgIHNyY3MgPSBbImd0ZXN0X2hlbHBfdGVzdF8uY2MiXSwKKyAgICBkZXBzID0g
WyIvLzpndGVzdF9tYWluIl0sCispCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJndGVzdF9oZWxw
X3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImd0ZXN0X2hlbHBfdGVz
dC5weSJdLAorICAgIGRhdGEgPSBbIjpndGVzdF9oZWxwX3Rlc3RfIl0sCisgICAgZGVwcyA9IFsi
Omd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29n
bGV0ZXN0LW91dHB1dC10ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisK
KworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3Qtb3V0cHV0LXRlc3QiLAorICAgIHNp
emUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3Qtb3V0cHV0LXRlc3QucHkiXSwK
KyAgICBhcmdzID0gc2VsZWN0KHsKKyAgICAgICAgIjpoYXNfYWJzbCI6IFtdLAorICAgICAgICAi
Ly9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi0tbm9fc3RhY2t0cmFjZV9zdXBwb3J0Il0sCisgICAg
fSksCisgICAgZGF0YSA9IFsKKyAgICAgICAgImdvb2dsZXRlc3Qtb3V0cHV0LXRlc3QtZ29sZGVu
LWxpbi50eHQiLAorICAgICAgICAiOmdvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfIiwKKyAgICBdLAor
ICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBu
YW1lID0gImdvb2dsZXRlc3QtY29sb3ItdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBz
cmNzID0gWyJnb29nbGV0ZXN0LWNvbG9yLXRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rl
c3QiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtY29sb3ItdGVzdCIs
CisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1jb2xvci10ZXN0
LnB5Il0sCisgICAgZGF0YSA9IFsiOmdvb2dsZXRlc3QtY29sb3ItdGVzdF8iXSwKKyAgICBkZXBz
ID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJn
b29nbGV0ZXN0LWVudi12YXItdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0g
WyJnb29nbGV0ZXN0LWVudi12YXItdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJd
LAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3QiLAor
ICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWVudi12YXItdGVz
dC5weSJdLAorICAgIGRhdGEgPSBbIjpnb29nbGV0ZXN0LWVudi12YXItdGVzdF8iXSwKKyAgICBk
ZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9
ICJnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBz
cmNzID0gWyJnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIv
LzpndGVzdCJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1maWx0ZXIt
dW5pdHRlc3QiLAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0
LWZpbHRlci11bml0dGVzdC5weSJdLAorICAgIGRhdGEgPSBbIjpnb29nbGV0ZXN0LWZpbHRlci11
bml0dGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCisKK2Nj
X2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVz
dF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWJyZWFrLW9u
LWZhaWx1cmUtdW5pdHRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKwor
CisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5p
dHRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtYnJl
YWstb24tZmFpbHVyZS11bml0dGVzdC5weSJdLAorICAgIGRhdGEgPSBbIjpnb29nbGV0ZXN0LWJy
ZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3RfIl0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRp
bHMiXSwKKykKKworCitjY190ZXN0KAorICAgIG5hbWUgPSAiZ3Rlc3RfYXNzZXJ0X2J5X2V4Y2Vw
dGlvbl90ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJndGVzdF9hc3Nl
cnRfYnlfZXhjZXB0aW9uX3Rlc3QuY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQor
CisKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJl
LXRlc3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC10aHJv
dy1vbi1mYWlsdXJlLXRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKwor
cHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0IiwK
KyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LXRocm93LW9uLWZh
aWx1cmUtdGVzdC5weSJdLAorICAgIGRhdGEgPSBbIjpnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1
cmUtdGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCisKK2Nj
X2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdF8iLAor
ICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5p
dHRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworcHlfdGVzdCgKKyAg
ICBuYW1lID0gImdvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdCIsCisgICAgc2l6ZSA9ICJz
bWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0LnB5Il0s
CisgICAgZGF0YSA9IFsiOmdvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdF8iXSwKKyAgICBk
ZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9
ICJnb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8iLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3Qtc2h1
ZmZsZS10ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisKK3B5X3Rlc3Qo
CisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXNodWZmbGUtdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFs
bCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3QucHkiXSwKKyAgICBkYXRh
ID0gWyI6Z29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfIl0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rl
c3RfdXRpbHMiXSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1jYXRj
aC1leGNlcHRpb25zLW5vLWV4LXRlc3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9
IFsiZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsi
Ly86Z3Rlc3RfbWFpbiJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0
LWNhdGNoLWV4Y2VwdGlvbnMtZXgtdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNz
ID0gWyJnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdF8uY2MiXSwKKyAgICBjb3B0cyA9
IFsiLWZleGNlcHRpb25zIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQorCitw
eV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3QiLAor
ICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0
aW9ucy10ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsKKyAgICAgICAgIjpnb29nbGV0ZXN0LWNhdGNo
LWV4Y2VwdGlvbnMtZXgtdGVzdF8iLAorICAgICAgICAiOmdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0
aW9ucy1uby1leC10ZXN0XyIsCisgICAgXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGls
cyJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJndGVzdF94bWxfb3V0cHV0X3VuaXR0
ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImd0ZXN0X3htbF9vdXRwdXRf
dW5pdHRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworY2NfdGVzdCgK
KyAgICBuYW1lID0gImd0ZXN0X25vX3Rlc3RfdW5pdHRlc3QiLAorICAgIHNpemUgPSAic21hbGwi
LAorICAgIHNyY3MgPSBbImd0ZXN0X25vX3Rlc3RfdW5pdHRlc3QuY2MiXSwKKyAgICBkZXBzID0g
WyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ3Rlc3RfeG1sX291dHB1
dF91bml0dGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAg
Imd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3QucHkiLAorICAgICAgICAiZ3Rlc3RfeG1sX3Rlc3Rf
dXRpbHMucHkiLAorICAgIF0sCisgICAgYXJncyA9IHNlbGVjdCh7CisgICAgICAgICI6aGFzX2Fi
c2wiOiBbXSwKKyAgICAgICAgIi8vY29uZGl0aW9uczpkZWZhdWx0IjogWyItLW5vX3N0YWNrdHJh
Y2Vfc3VwcG9ydCJdLAorICAgIH0pLAorICAgIGRhdGEgPSBbCisgICAgICAgICMgV2UgaW52b2tl
IGd0ZXN0X25vX3Rlc3RfdW5pdHRlc3QgdG8gdmVyaWZ5IHRoZSBYTUwgb3V0cHV0CisgICAgICAg
ICMgd2hlbiB0aGUgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIG5vIHRlc3QgZGVmaW5pdGlvbi4KKyAg
ICAgICAgIjpndGVzdF9ub190ZXN0X3VuaXR0ZXN0IiwKKyAgICAgICAgIjpndGVzdF94bWxfb3V0
cHV0X3VuaXR0ZXN0XyIsCisgICAgXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJd
LAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8i
LAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJndGVzdF94bWxfb3V0ZmlsZTFfdGVz
dF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdF9tYWluIl0sCispCisKK2NjX2JpbmFyeSgK
KyAgICBuYW1lID0gImd0ZXN0X3htbF9vdXRmaWxlMl90ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAx
LAorICAgIHNyY3MgPSBbImd0ZXN0X3htbF9vdXRmaWxlMl90ZXN0Xy5jYyJdLAorICAgIGRlcHMg
PSBbIi8vOmd0ZXN0X21haW4iXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0X3ht
bF9vdXRmaWxlc190ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWworICAg
ICAgICAiZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkiLAorICAgICAgICAiZ3Rlc3RfeG1sX3Rl
c3RfdXRpbHMucHkiLAorICAgIF0sCisgICAgZGF0YSA9IFsKKyAgICAgICAgIjpndGVzdF94bWxf
b3V0ZmlsZTFfdGVzdF8iLAorICAgICAgICAiOmd0ZXN0X3htbF9vdXRmaWxlMl90ZXN0XyIsCisg
ICAgXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5hcnko
CisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdF8iLAorICAgIHRlc3Rv
bmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdF8uY2Mi
XSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAi
Z29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3QiLAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAg
ICBzcmNzID0gWyJnb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdC5weSJdLAorICAgIGRhdGEg
PSBbImdvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0XyJdLAorICAgIGRlcHMgPSBbIjpndGVz
dF90ZXN0X3V0aWxzIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImd0ZXN0X3Rlc3Ri
cmlkZ2VfdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJndGVzdF90ZXN0
YnJpZGdlX3Rlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQorCisj
IFRlc3RzIHRoYXQgZmlsdGVyaW5nIHZpYSB0ZXN0YnJpZGdlIHdvcmtzCitweV90ZXN0KAorICAg
IG5hbWUgPSAiZ3Rlc3RfdGVzdGJyaWRnZV90ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAg
ICBzcmNzID0gWyJndGVzdF90ZXN0YnJpZGdlX3Rlc3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z3Rl
c3RfdGVzdGJyaWRnZV90ZXN0XyJdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0s
CispCisKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtanNvbi1vdXRmaWxlcy10
ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWworICAgICAgICAiZ29vZ2xl
dGVzdC1qc29uLW91dGZpbGVzLXRlc3QucHkiLAorICAgICAgICAiZ3Rlc3RfanNvbl90ZXN0X3V0
aWxzLnB5IiwKKyAgICBdLAorICAgIGRhdGEgPSBbCisgICAgICAgICI6Z3Rlc3RfeG1sX291dGZp
bGUxX3Rlc3RfIiwKKyAgICAgICAgIjpndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8iLAorICAgIF0s
CisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworcHlfdGVzdCgKKyAgICBu
YW1lID0gImdvb2dsZXRlc3QtanNvbi1vdXRwdXQtdW5pdHRlc3QiLAorICAgIHNpemUgPSAibWVk
aXVtIiwKKyAgICBzcmNzID0gWworICAgICAgICAiZ29vZ2xldGVzdC1qc29uLW91dHB1dC11bml0
dGVzdC5weSIsCisgICAgICAgICJndGVzdF9qc29uX3Rlc3RfdXRpbHMucHkiLAorICAgIF0sCisg
ICAgZGF0YSA9IFsKKyAgICAgICAgIyBXZSBpbnZva2UgZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCB0
byB2ZXJpZnkgdGhlIEpTT04gb3V0cHV0CisgICAgICAgICMgd2hlbiB0aGUgdGVzdCBwcm9ncmFt
IGNvbnRhaW5zIG5vIHRlc3QgZGVmaW5pdGlvbi4KKyAgICAgICAgIjpndGVzdF9ub190ZXN0X3Vu
aXR0ZXN0IiwKKyAgICAgICAgIjpndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0XyIsCisgICAgXSwK
KyAgICBhcmdzID0gc2VsZWN0KHsKKyAgICAgICAgIjpoYXNfYWJzbCI6IFtdLAorICAgICAgICAi
Ly9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi0tbm9fc3RhY2t0cmFjZV9zdXBwb3J0Il0sCisgICAg
fSksCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKyMgVmVyaWZpZXMgaW50
ZXJhY3Rpb24gb2YgZGVhdGggdGVzdHMgYW5kIGV4Y2VwdGlvbnMuCitjY190ZXN0KAorICAgIG5h
bWUgPSAiZ29vZ2xldGVzdC1kZWF0aC10ZXN0X2V4X2NhdGNoX3Rlc3QiLAorICAgIHNpemUgPSAi
bWVkaXVtIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYyJd
LAorICAgIGNvcHRzID0gWyItZmV4Y2VwdGlvbnMiXSwKKyAgICBkZWZpbmVzID0gWyJHVEVTVF9F
TkFCTEVfQ0FUQ0hfRVhDRVBUSU9OU189MSJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCisp
CisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlk
LW5hbWUxLXRlc3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVz
dC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpn
dGVzdCJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXBhcmFtLXRl
c3QtaW52YWxpZC1uYW1lMi10ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBb
Imdvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRlc3RfLmNjIl0sCisgICAgZGVw
cyA9IFsiLy86Z3Rlc3QiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3Qt
cGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAg
IHNyY3MgPSBbImdvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3QucHkiXSwK
KyAgICBkYXRhID0gWyI6Z29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdF8i
XSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitweV90ZXN0KAorICAg
IG5hbWUgPSAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTItdGVzdCIsCisgICAg
c2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFs
aWQtbmFtZTItdGVzdC5weSJdLAorICAgIGRhdGEgPSBbIjpnb29nbGV0ZXN0LXBhcmFtLXRlc3Qt
aW52YWxpZC1uYW1lMi10ZXN0XyJdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0s
CispCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qt
YnJlYWstb24tZmFpbHVyZS11bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1
ZGZiYzY5M2I0M2ExYjE5ZTM4NDdkY2JjYWI4ODZkMmY0ZDI4ZTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVy
ZS11bml0dGVzdC5weQpAQCAtMCwwICsxLDIwOCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
CisjIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIGJyZWFr
LW9uLWZhaWx1cmUgbW9kZS4KKworQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gc2VnLWZh
dWx0IHdoZW4gYW4gYXNzZXJ0aW9uIGZhaWxzLCB1c2luZworZWl0aGVyIHRoZSBHVEVTVF9CUkVB
S19PTl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQorLS1ndGVzdF9icmVha19v
bl9mYWlsdXJlIGZsYWcuICBUaGlzIHNjcmlwdCB0ZXN0cyBzdWNoIGZ1bmN0aW9uYWxpdHkKK2J5
IGludm9raW5nIGdvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8gKGEgcHJvZ3Jh
bSB3cml0dGVuIHdpdGgKK0dvb2dsZSBUZXN0KSB3aXRoIGRpZmZlcmVudCBlbnZpcm9ubWVudHMg
YW5kIGNvbW1hbmQgbGluZSBmbGFncy4KKyIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBndGVzdF90
ZXN0X3V0aWxzCisKKyMgQ29uc3RhbnRzLgorCitJU19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQn
CisKKyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciBlbmFibGluZy9kaXNhYmxpbmcgdGhl
IGJyZWFrLW9uLWZhaWx1cmUgbW9kZS4KK0JSRUFLX09OX0ZBSUxVUkVfRU5WX1ZBUiA9ICdHVEVT
VF9CUkVBS19PTl9GQUlMVVJFJworCisjIFRoZSBjb21tYW5kIGxpbmUgZmxhZyBmb3IgZW5hYmxp
bmcvZGlzYWJsaW5nIHRoZSBicmVhay1vbi1mYWlsdXJlIG1vZGUuCitCUkVBS19PTl9GQUlMVVJF
X0ZMQUcgPSAnZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZScKKworIyBUaGUgZW52aXJvbm1lbnQgdmFy
aWFibGUgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLgor
VEhST1dfT05fRkFJTFVSRV9FTlZfVkFSID0gJ0dURVNUX1RIUk9XX09OX0ZBSUxVUkUnCisKKyMg
VGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciBlbmFibGluZy9kaXNhYmxpbmcgdGhlIGNhdGNo
LWV4Y2VwdGlvbnMgbW9kZS4KK0NBVENIX0VYQ0VQVElPTlNfRU5WX1ZBUiA9ICdHVEVTVF9DQVRD
SF9FWENFUFRJT05TJworCisjIFBhdGggdG8gdGhlIGdvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVy
ZS11bml0dGVzdF8gcHJvZ3JhbS4KK0VYRV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0
RXhlY3V0YWJsZVBhdGgoCisgICAgJ2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVz
dF8nKQorCisKK2Vudmlyb24gPSBndGVzdF90ZXN0X3V0aWxzLmVudmlyb24KK1NldEVudlZhciA9
IGd0ZXN0X3Rlc3RfdXRpbHMuU2V0RW52VmFyCisKKyMgVGVzdHMgaW4gdGhpcyBmaWxlIHJ1biBh
IEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QgcHJvZ3JhbSBhbmQgZXhwZWN0IGl0CisjIHRvIHRlcm1p
bmF0ZSBwcmVtYXR1cmVseS4gIFRoZXJlZm9yZSB0aGV5IGFyZSBpbmNvbXBhdGlibGUgd2l0aAor
IyB0aGUgcHJlbWF0dXJlLWV4aXQtZmlsZSBwcm90b2NvbCBieSBkZXNpZ24uICBVbnNldCB0aGUK
KyMgcHJlbWF0dXJlLWV4aXQgZmlsZXBhdGggdG8gcHJldmVudCBHb29nbGUgVGVzdCBmcm9tIGNy
ZWF0aW5nCisjIHRoZSBmaWxlLgorU2V0RW52VmFyKGd0ZXN0X3Rlc3RfdXRpbHMuUFJFTUFUVVJF
X0VYSVRfRklMRV9FTlZfVkFSLCBOb25lKQorCisKK2RlZiBSdW4oY29tbWFuZCk6CisgICIiIlJ1
bnMgYSBjb21tYW5kOyByZXR1cm5zIDEgaWYgaXQgd2FzIGtpbGxlZCBieSBhIHNpZ25hbCwgb3Ig
MCBvdGhlcndpc2UuIiIiCisKKyAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21t
YW5kLCBlbnY9ZW52aXJvbikKKyAgaWYgcC50ZXJtaW5hdGVkX2J5X3NpZ25hbDoKKyAgICByZXR1
cm4gMQorICBlbHNlOgorICAgIHJldHVybiAwCisKKworIyBUaGUgdGVzdHMuCisKKworY2xhc3Mg
R1Rlc3RCcmVha09uRmFpbHVyZVVuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgor
ICAiIiJUZXN0cyB1c2luZyB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2
YXJpYWJsZSBvcgorICB0aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWcgdG8gdHVybiBh
c3NlcnRpb24gZmFpbHVyZXMgaW50bworICBzZWdtZW50YXRpb24gZmF1bHRzLgorICAiIiIKKwor
ICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGVudl92YXJfdmFsdWUsIGZsYWdfdmFsdWUsIGV4cGVj
dF9zZWdfZmF1bHQpOgorICAgICIiIlJ1bnMgZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVu
aXR0ZXN0XyBhbmQgdmVyaWZpZXMgdGhhdCBpdCBkb2VzCisgICAgKG9yIGRvZXMgbm90KSBoYXZl
IGEgc2VnLWZhdWx0LgorCisgICAgQXJnczoKKyAgICAgIGVudl92YXJfdmFsdWU6ICAgIHZhbHVl
IG9mIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50CisgICAgICAgICAgICAg
ICAgICAgICAgICB2YXJpYWJsZTsgTm9uZSBpZiB0aGUgdmFyaWFibGUgc2hvdWxkIGJlIHVuc2V0
LgorICAgICAgZmxhZ192YWx1ZTogICAgICAgdmFsdWUgb2YgdGhlIC0tZ3Rlc3RfYnJlYWtfb25f
ZmFpbHVyZSBmbGFnOworICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSBpZiB0aGUgZmxhZyBz
aG91bGQgbm90IGJlIHByZXNlbnQuCisgICAgICBleHBlY3Rfc2VnX2ZhdWx0OiAxIGlmIHRoZSBw
cm9ncmFtIGlzIGV4cGVjdGVkIHRvIGdlbmVyYXRlIGEgc2VnLWZhdWx0OworICAgICAgICAgICAg
ICAgICAgICAgICAgMCBvdGhlcndpc2UuCisgICAgIiIiCisKKyAgICBTZXRFbnZWYXIoQlJFQUtf
T05fRkFJTFVSRV9FTlZfVkFSLCBlbnZfdmFyX3ZhbHVlKQorCisgICAgaWYgZW52X3Zhcl92YWx1
ZSBpcyBOb25lOgorICAgICAgZW52X3Zhcl92YWx1ZV9tc2cgPSAnIGlzIG5vdCBzZXQnCisgICAg
ZWxzZToKKyAgICAgIGVudl92YXJfdmFsdWVfbXNnID0gJz0nICsgZW52X3Zhcl92YWx1ZQorCisg
ICAgaWYgZmxhZ192YWx1ZSBpcyBOb25lOgorICAgICAgZmxhZyA9ICcnCisgICAgZWxpZiBmbGFn
X3ZhbHVlID09ICcwJzoKKyAgICAgIGZsYWcgPSAnLS0lcz0wJyAlIEJSRUFLX09OX0ZBSUxVUkVf
RkxBRworICAgIGVsc2U6CisgICAgICBmbGFnID0gJy0tJXMnICUgQlJFQUtfT05fRkFJTFVSRV9G
TEFHCisKKyAgICBjb21tYW5kID0gW0VYRV9QQVRIXQorICAgIGlmIGZsYWc6CisgICAgICBjb21t
YW5kLmFwcGVuZChmbGFnKQorCisgICAgaWYgZXhwZWN0X3NlZ19mYXVsdDoKKyAgICAgIHNob3Vs
ZF9vcl9ub3QgPSAnc2hvdWxkJworICAgIGVsc2U6CisgICAgICBzaG91bGRfb3Jfbm90ID0gJ3No
b3VsZCBub3QnCisKKyAgICBoYXNfc2VnX2ZhdWx0ID0gUnVuKGNvbW1hbmQpCisKKyAgICBTZXRF
bnZWYXIoQlJFQUtfT05fRkFJTFVSRV9FTlZfVkFSLCBOb25lKQorCisgICAgbXNnID0gKCd3aGVu
ICVzJXMsIGFuIGFzc2VydGlvbiBmYWlsdXJlIGluICIlcyIgJXMgY2F1c2UgYSBzZWctZmF1bHQu
JyAlCisgICAgICAgICAgIChCUkVBS19PTl9GQUlMVVJFX0VOVl9WQVIsIGVudl92YXJfdmFsdWVf
bXNnLCAnICcuam9pbihjb21tYW5kKSwKKyAgICAgICAgICAgIHNob3VsZF9vcl9ub3QpKQorICAg
IHNlbGYuYXNzZXJ0XyhoYXNfc2VnX2ZhdWx0ID09IGV4cGVjdF9zZWdfZmF1bHQsIG1zZykKKwor
ICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcihzZWxmKToKKyAgICAiIiJUZXN0cyB0aGUgYmVoYXZp
b3Igb2YgdGhlIGRlZmF1bHQgbW9kZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92
YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCisg
ICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0wKQorCisgIGRlZiB0ZXN0RW52
VmFyKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5nIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJF
IGVudmlyb25tZW50IHZhcmlhYmxlLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zh
cl92YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT1Ob25lLAorICAg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MCkKKyAgICBzZWxmLlJ1bkFuZFZl
cmlmeShlbnZfdmFyX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVl
PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0xKQorCisgIGRl
ZiB0ZXN0RmxhZyhzZWxmKToKKyAgICAiIiJUZXN0cyB1c2luZyB0aGUgLS1ndGVzdF9icmVha19v
bl9mYWlsdXJlIGZsYWcuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVl
PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCisgICAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0wKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVu
dl92YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywK
KyAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCisKKyAgZGVmIHRlc3RG
bGFnT3ZlcnJpZGVzRW52VmFyKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgdGhlIGZsYWcgb3Zl
cnJpZGVzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVy
aWZ5KGVudl92YXJfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9
JzAnLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MCkKKyAgICBzZWxm
LlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBm
bGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEp
CisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCisgICAgICAgICAgICAg
ICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3Nl
Z19mYXVsdD0wKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAorICAg
ICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdF9zZWdfZmF1bHQ9MSkKKworICBkZWYgdGVzdEJyZWFrT25GYWlsdXJlT3ZlcnJpZGVz
VGhyb3dPbkZhaWx1cmUoc2VsZik6CisgICAgIiIiVGVzdHMgdGhhdCBndGVzdF9icmVha19vbl9m
YWlsdXJlIG92ZXJyaWRlcyBndGVzdF90aHJvd19vbl9mYWlsdXJlLiIiIgorCisgICAgU2V0RW52
VmFyKFRIUk9XX09OX0ZBSUxVUkVfRU5WX1ZBUiwgJzEnKQorICAgIHRyeToKKyAgICAgIHNlbGYu
UnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVs
dD0xKQorICAgIGZpbmFsbHk6CisgICAgICBTZXRFbnZWYXIoVEhST1dfT05fRkFJTFVSRV9FTlZf
VkFSLCBOb25lKQorCisgIGlmIElTX1dJTkRPV1M6CisgICAgZGVmIHRlc3RDYXRjaEV4Y2VwdGlv
bnNEb2VzTm90SW50ZXJmZXJlKHNlbGYpOgorICAgICAgIiIiVGVzdHMgdGhhdCBndGVzdF9jYXRj
aF9leGNlcHRpb25zIGRvZXNuJ3QgaW50ZXJmZXJlLiIiIgorCisgICAgICBTZXRFbnZWYXIoQ0FU
Q0hfRVhDRVBUSU9OU19FTlZfVkFSLCAnMScpCisgICAgICB0cnk6CisgICAgICAgIHNlbGYuUnVu
QW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBm
bGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVs
dD0xKQorICAgICAgZmluYWxseToKKyAgICAgICAgU2V0RW52VmFyKENBVENIX0VYQ0VQVElPTlNf
RU5WX1ZBUiwgTm9uZSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVzdF90
ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9nb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3RfLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3RfLmNj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY4NDk1N2EyZDAzYjU2MjYwYzhlMmMwYWU4ZjVhMjdiZWI2ZjYzNzgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qt
YnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8uY2MKQEAgLTAsMCArMSw4NiBAQAorLy8gQ29weXJp
Z2h0IDIwMDYsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRp
b24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisv
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIFVuaXQgdGVzdCBmb3Ig
R29vZ2xlIFRlc3QncyBicmVhay1vbi1mYWlsdXJlIG1vZGUuCisvLworLy8gQSB1c2VyIGNhbiBh
c2sgR29vZ2xlIFRlc3QgdG8gc2VnLWZhdWx0IHdoZW4gYW4gYXNzZXJ0aW9uIGZhaWxzLCB1c2lu
ZworLy8gZWl0aGVyIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlh
YmxlIG9yIHRoZQorLy8gLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWcuICBUaGlzIGZpbGUg
aXMgdXNlZCBmb3IgdGVzdGluZyBzdWNoCisvLyBmdW5jdGlvbmFsaXR5LgorLy8KKy8vIFRoaXMg
cHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRlc3QuICBJdCBpcwor
Ly8gZXhwZWN0ZWQgdG8gZmFpbC4gIERvbid0IHJ1biBpdCBkaXJlY3RseS4KKworI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCisKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGluY2x1ZGUgPHdpbmRv
d3MuaD4KKyMgaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIHsKKworLy8g
QSB0ZXN0IHRoYXQncyBleHBlY3RlZCB0byBmYWlsLgorVEVTVChGb28sIEJhcikgeworICBFWFBF
Q1RfRVEoMiwgMyk7Cit9CisKKyNpZiBHVEVTVF9IQVNfU0VIICYmICFHVEVTVF9PU19XSU5ET1dT
X01PQklMRQorLy8gT24gV2luZG93cyBNb2JpbGUgZ2xvYmFsIGV4Y2VwdGlvbiBoYW5kbGVycyBh
cmUgbm90IHN1cHBvcnRlZC4KK0xPTkcgV0lOQVBJIEV4aXRXaXRoRXhjZXB0aW9uQ29kZSgKKyAg
ICBzdHJ1Y3QgX0VYQ0VQVElPTl9QT0lOVEVSUyogZXhjZXB0aW9uX3BvaW50ZXJzKSB7CisgIGV4
aXQoZXhjZXB0aW9uX3BvaW50ZXJzLT5FeGNlcHRpb25SZWNvcmQtPkV4Y2VwdGlvbkNvZGUpOwor
fQorI2VuZGlmCisKK30gIC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
KmFyZ3YpIHsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIC8vIFN1cHByZXNzZXMgZGlzcGxheSBv
ZiB0aGUgV2luZG93cyBlcnJvciBkaWFsb2cgdXBvbiBlbmNvdW50ZXJpbmcKKyAgLy8gYSBnZW5l
cmFsIHByb3RlY3Rpb24gZmF1bHQgKHNlZ21lbnQgdmlvbGF0aW9uKS4KKyAgU2V0RXJyb3JNb2Rl
KFNFTV9OT0dQRkFVTFRFUlJPUkJPWCB8IFNFTV9GQUlMQ1JJVElDQUxFUlJPUlMpOworCisjIGlm
IEdURVNUX0hBU19TRUggJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisKKyAgLy8gVGhlIGRl
ZmF1bHQgdW5oYW5kbGVkIGV4Y2VwdGlvbiBmaWx0ZXIgZG9lcyBub3QgYWx3YXlzIGV4aXQKKyAg
Ly8gd2l0aCB0aGUgZXhjZXB0aW9uIGNvZGUgYXMgZXhpdCBjb2RlIC0gZm9yIGV4YW1wbGUgaXQg
ZXhpdHMgd2l0aAorICAvLyAwIGZvciBFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTiBhbmQgMSBm
b3IgRVhDRVBUSU9OX0JSRUFLUE9JTlQKKyAgLy8gaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGNvbXBp
bGVkIGluIGRlYnVnIG1vZGUuIFRodXMgd2UgdXNlIG91ciBvd24KKyAgLy8gZmlsdGVyIHdoaWNo
IGFsd2F5cyBleGl0cyB3aXRoIHRoZSBleGNlcHRpb24gY29kZSBmb3IgdW5oYW5kbGVkCisgIC8v
IGV4Y2VwdGlvbnMuCisgIFNldFVuaGFuZGxlZEV4Y2VwdGlvbkZpbHRlcihFeGl0V2l0aEV4Y2Vw
dGlvbkNvZGUpOworCisjIGVuZGlmCisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyAgdGVz
dGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIHJldHVybiBSVU5fQUxMX1RF
U1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9nb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZDQ5
YzEwMjNjNTBlZjE2ODMzZTZiOGUyYThlNjIwMjQ4NDMyYWMzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMt
dGVzdC5weQpAQCAtMCwwICsxLDIzMyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENv
cHlyaWdodCAyMDEwIEdvb2dsZSBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworIiIiVGVzdHMgR29vZ2xlIFRlc3QncyBleGNlcHRpb24gY2F0Y2hpbmcgYmVo
YXZpb3IuCisKK1RoaXMgc2NyaXB0IGludm9rZXMgZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25z
LXRlc3RfIGFuZAorZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLWV4LXRlc3RfIChwcm9ncmFt
cyB3cml0dGVuIHdpdGgKK0dvb2dsZSBUZXN0KSBhbmQgdmVyaWZpZXMgdGhlaXIgb3V0cHV0Lgor
IiIiCisKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKKyMgQ29uc3RhbnRzLgorRkxBR19QUkVG
SVggPSAnLS1ndGVzdF8nCitMSVNUX1RFU1RTX0ZMQUcgPSBGTEFHX1BSRUZJWCArICdsaXN0X3Rl
c3RzJworTk9fQ0FUQ0hfRVhDRVBUSU9OU19GTEFHID0gRkxBR19QUkVGSVggKyAnY2F0Y2hfZXhj
ZXB0aW9ucz0wJworRklMVEVSX0ZMQUcgPSBGTEFHX1BSRUZJWCArICdmaWx0ZXInCisKKyMgUGF0
aCB0byB0aGUgZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLWV4LXRlc3RfIGJpbmFyeSwgY29t
cGlsZWQgd2l0aAorIyBleGNlcHRpb25zIGVuYWJsZWQuCitFWF9FWEVfUEFUSCA9IGd0ZXN0X3Rl
c3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKAorICAgICdnb29nbGV0ZXN0LWNhdGNoLWV4
Y2VwdGlvbnMtZXgtdGVzdF8nKQorCisjIFBhdGggdG8gdGhlIGdvb2dsZXRlc3QtY2F0Y2gtZXhj
ZXB0aW9ucy10ZXN0XyBiaW5hcnksIGNvbXBpbGVkIHdpdGgKKyMgZXhjZXB0aW9ucyBkaXNhYmxl
ZC4KK0VYRV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisg
ICAgJ2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy1uby1leC10ZXN0XycpCisKK2Vudmlyb24g
PSBndGVzdF90ZXN0X3V0aWxzLmVudmlyb24KK1NldEVudlZhciA9IGd0ZXN0X3Rlc3RfdXRpbHMu
U2V0RW52VmFyCisKKyMgVGVzdHMgaW4gdGhpcyBmaWxlIHJ1biBhIEdvb2dsZS1UZXN0LWJhc2Vk
IHRlc3QgcHJvZ3JhbSBhbmQgZXhwZWN0IGl0CisjIHRvIHRlcm1pbmF0ZSBwcmVtYXR1cmVseS4g
IFRoZXJlZm9yZSB0aGV5IGFyZSBpbmNvbXBhdGlibGUgd2l0aAorIyB0aGUgcHJlbWF0dXJlLWV4
aXQtZmlsZSBwcm90b2NvbCBieSBkZXNpZ24uICBVbnNldCB0aGUKKyMgcHJlbWF0dXJlLWV4aXQg
ZmlsZXBhdGggdG8gcHJldmVudCBHb29nbGUgVGVzdCBmcm9tIGNyZWF0aW5nCisjIHRoZSBmaWxl
LgorU2V0RW52VmFyKGd0ZXN0X3Rlc3RfdXRpbHMuUFJFTUFUVVJFX0VYSVRfRklMRV9FTlZfVkFS
LCBOb25lKQorCitURVNUX0xJU1QgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAg
W0VYRV9QQVRILCBMSVNUX1RFU1RTX0ZMQUddLCBlbnY9ZW52aXJvbikub3V0cHV0CisKK1NVUFBP
UlRTX1NFSF9FWENFUFRJT05TID0gJ1Rocm93c1NlaEV4Y2VwdGlvbicgaW4gVEVTVF9MSVNUCisK
K2lmIFNVUFBPUlRTX1NFSF9FWENFUFRJT05TOgorICBCSU5BUllfT1VUUFVUID0gZ3Rlc3RfdGVz
dF91dGlscy5TdWJwcm9jZXNzKFtFWEVfUEFUSF0sIGVudj1lbnZpcm9uKS5vdXRwdXQKKworRVhf
QklOQVJZX09VVFBVVCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKKyAgICBbRVhfRVhF
X1BBVEhdLCBlbnY9ZW52aXJvbikub3V0cHV0CisKKworIyBUaGUgdGVzdHMuCitpZiBTVVBQT1JU
U19TRUhfRVhDRVBUSU9OUzoKKyAgIyBweWxpbnQ6ZGlzYWJsZS1tc2c9QzYzMDIKKyAgY2xhc3Mg
Q2F0Y2hTZWhFeGNlcHRpb25zVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgICAi
IiJUZXN0cyBleGNlcHRpb24tY2F0Y2hpbmcgYmVoYXZpb3IuIiIiCisKKworICAgIGRlZiBUZXN0
U2VoRXhjZXB0aW9ucyhzZWxmLCB0ZXN0X291dHB1dCk6CisgICAgICBzZWxmLmFzc2VydF8oJ1NF
SCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhyb3duICcKKyAgICAgICAgICAgICAgICAgICAn
aW4gdGhlIHRlc3QgZml4dHVyZVwncyBjb25zdHJ1Y3RvcicKKyAgICAgICAgICAgICAgICAgICBp
biB0ZXN0X291dHB1dCkKKyAgICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3aXRoIGNv
ZGUgMHgyYSB0aHJvd24gJworICAgICAgICAgICAgICAgICAgICdpbiB0aGUgdGVzdCBmaXh0dXJl
XCdzIGRlc3RydWN0b3InCisgICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCisgICAg
ICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhyb3duIGluIFNl
dFVwVGVzdENhc2UoKScKKyAgICAgICAgICAgICAgICAgICBpbiB0ZXN0X291dHB1dCkKKyAgICAg
IHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24gaW4gVGVh
ckRvd25UZXN0Q2FzZSgpJworICAgICAgICAgICAgICAgICAgIGluIHRlc3Rfb3V0cHV0KQorICAg
ICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGggY29kZSAweDJhIHRocm93biBpbiBT
ZXRVcCgpJworICAgICAgICAgICAgICAgICAgIGluIHRlc3Rfb3V0cHV0KQorICAgICAgc2VsZi5h
c3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGggY29kZSAweDJhIHRocm93biBpbiBUZWFyRG93bigp
JworICAgICAgICAgICAgICAgICAgIGluIHRlc3Rfb3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRf
KCdTRUggZXhjZXB0aW9uIHdpdGggY29kZSAweDJhIHRocm93biBpbiB0aGUgdGVzdCBib2R5Jwor
ICAgICAgICAgICAgICAgICAgIGluIHRlc3Rfb3V0cHV0KQorCisgICAgZGVmIHRlc3RDYXRjaGVz
U2VoRXhjZXB0aW9uc1dpdGhDeHhFeGNlcHRpb25zRW5hYmxlZChzZWxmKToKKyAgICAgIHNlbGYu
VGVzdFNlaEV4Y2VwdGlvbnMoRVhfQklOQVJZX09VVFBVVCkKKworICAgIGRlZiB0ZXN0Q2F0Y2hl
c1NlaEV4Y2VwdGlvbnNXaXRoQ3h4RXhjZXB0aW9uc0Rpc2FibGVkKHNlbGYpOgorICAgICAgc2Vs
Zi5UZXN0U2VoRXhjZXB0aW9ucyhCSU5BUllfT1VUUFVUKQorCisKK2NsYXNzIENhdGNoQ3h4RXhj
ZXB0aW9uc1Rlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICIiIlRlc3RzIEMrKyBl
eGNlcHRpb24tY2F0Y2hpbmcgYmVoYXZpb3IuCisKKyAgICAgVGVzdHMgaW4gdGhpcyB0ZXN0IGNh
c2UgdmVyaWZ5IHRoYXQ6CisgICAgICogQysrIGV4Y2VwdGlvbnMgYXJlIGNhdWdodCBhbmQgbG9n
Z2VkIGFzIEMrKyAobm90IFNFSCkgZXhjZXB0aW9ucworICAgICAqIEV4Y2VwdGlvbiB0aHJvd24g
YWZmZWN0IHRoZSByZW1haW5kZXIgb2YgdGhlIHRlc3Qgd29yayBmbG93IGluIHRoZQorICAgICAg
IGV4cGVjdGVkIG1hbm5lci4KKyAgIiIiCisKKyAgZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9u
c0luRml4dHVyZUNvbnN0cnVjdG9yKHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0XygnQysrIGV4Y2Vw
dGlvbiB3aXRoIGRlc2NyaXB0aW9uICcKKyAgICAgICAgICAgICAgICAgJyJTdGFuZGFyZCBDKysg
ZXhjZXB0aW9uIiB0aHJvd24gJworICAgICAgICAgICAgICAgICAnaW4gdGhlIHRlc3QgZml4dHVy
ZVwncyBjb25zdHJ1Y3RvcicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkK
KyAgICBzZWxmLmFzc2VydF8oJ3VuZXhwZWN0ZWQnIG5vdCBpbiBFWF9CSU5BUllfT1VUUFVULAor
ICAgICAgICAgICAgICAgICAnVGhpcyBmYWlsdXJlIGJlbG9uZ3MgaW4gdGhpcyB0ZXN0IG9ubHkg
aWYgJworICAgICAgICAgICAgICAgICAnIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0IiAo
bm8gcXVvdGVzKSAnCisgICAgICAgICAgICAgICAgICdhcHBlYXJzIG9uIHRoZSBzYW1lIGxpbmUg
YXMgd29yZHMgImNhbGxlZCB1bmV4cGVjdGVkbHkiJykKKworICBpZiAoJ0N4eEV4Y2VwdGlvbklu
RGVzdHJ1Y3RvclRlc3QuVGhyb3dzRXhjZXB0aW9uSW5EZXN0cnVjdG9yJyBpbgorICAgICAgRVhf
QklOQVJZX09VVFBVVCk6CisKKyAgICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5GaXh0
dXJlRGVzdHJ1Y3RvcihzZWxmKToKKyAgICAgIHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3
aXRoIGRlc2NyaXB0aW9uICcKKyAgICAgICAgICAgICAgICAgICAnIlN0YW5kYXJkIEMrKyBleGNl
cHRpb24iIHRocm93biAnCisgICAgICAgICAgICAgICAgICAgJ2luIHRoZSB0ZXN0IGZpeHR1cmVc
J3MgZGVzdHJ1Y3RvcicKKyAgICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQor
ICAgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JbkRlc3RydWN0b3JUZXN0OjpUZWFyRG93
blRlc3RDYXNlKCkgJworICAgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJwor
ICAgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisKKyAgZGVmIHRlc3RDYXRj
aGVzQ3h4RXhjZXB0aW9uc0luU2V0VXBUZXN0Q2FzZShzZWxmKToKKyAgICBzZWxmLmFzc2VydF8o
J0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlvbiAiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIn
CisgICAgICAgICAgICAgICAgICcgdGhyb3duIGluIFNldFVwVGVzdENhc2UoKScKKyAgICAgICAg
ICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2Vw
dGlvbkluQ29uc3RydWN0b3JUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgJworICAgICAgICAgICAg
ICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZ
X09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRl
c3QgY29uc3RydWN0b3IgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicK
KyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8o
J0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgZGVzdHJ1Y3RvciAnCisgICAgICAgICAg
ICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5B
UllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNl
VGVzdDo6U2V0VXAoKSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJwor
ICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0Xygn
Q3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6VGVhckRvd24oKSAnCisgICAgICAgICAg
ICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5B
UllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNl
VGVzdCB0ZXN0IGJvZHkgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicK
KyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKworICBkZWYgdGVzdENhdGNo
ZXNDeHhFeGNlcHRpb25zSW5UZWFyRG93blRlc3RDYXNlKHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0
XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICJTdGFuZGFyZCBDKysgZXhjZXB0aW9u
IicKKyAgICAgICAgICAgICAgICAgJyB0aHJvd24gaW4gVGVhckRvd25UZXN0Q2FzZSgpJworICAg
ICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorCisgIGRlZiB0ZXN0Q2F0Y2hlc0N4
eEV4Y2VwdGlvbnNJblNldFVwKHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlv
biB3aXRoIGRlc2NyaXB0aW9uICJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIicKKyAgICAgICAgICAg
ICAgICAgJyB0aHJvd24gaW4gU2V0VXAoKScKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZ
X09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0OjpUZWFy
RG93blRlc3RDYXNlKCkgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicK
KyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8o
J0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0IGRlc3RydWN0b3IgJworICAgICAgICAgICAgICAgICAn
Y2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBV
VCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0OjpUZWFyRG93bigp
ICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAg
ICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAgc2VsZi5hc3NlcnRfKCd1bmV4cGVjdGVkJyBu
b3QgaW4gRVhfQklOQVJZX09VVFBVVCwKKyAgICAgICAgICAgICAgICAgJ1RoaXMgZmFpbHVyZSBi
ZWxvbmdzIGluIHRoaXMgdGVzdCBvbmx5IGlmICcKKyAgICAgICAgICAgICAgICAgJyJDeHhFeGNl
cHRpb25JblNldFVwVGVzdCIgKG5vIHF1b3RlcykgJworICAgICAgICAgICAgICAgICAnYXBwZWFy
cyBvbiB0aGUgc2FtZSBsaW5lIGFzIHdvcmRzICJjYWxsZWQgdW5leHBlY3RlZGx5IicpCisKKyAg
ZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luVGVhckRvd24oc2VsZik6CisgICAgc2VsZi5h
c3NlcnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gIlN0YW5kYXJkIEMrKyBleGNl
cHRpb24iJworICAgICAgICAgICAgICAgICAnIHRocm93biBpbiBUZWFyRG93bigpJworICAgICAg
ICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhj
ZXB0aW9uSW5UZWFyRG93blRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAnCisgICAgICAgICAgICAg
ICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllf
T1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3QgZGVz
dHJ1Y3RvciAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAg
ICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorCisgIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4
Y2VwdGlvbnNJblRlc3RCb2R5KHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlv
biB3aXRoIGRlc2NyaXB0aW9uICJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIicKKyAgICAgICAgICAg
ICAgICAgJyB0aHJvd24gaW4gdGhlIHRlc3QgYm9keScKKyAgICAgICAgICAgICAgICAgaW4gRVhf
QklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluVGVzdEJvZHlU
ZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4
cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxm
LmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0IGRlc3RydWN0b3IgJworICAgICAg
ICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhf
QklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluVGVzdEJvZHlU
ZXN0OjpUZWFyRG93bigpICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4n
CisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisKKyAgZGVmIHRlc3RDYXRj
aGVzTm9uU3RkQ3h4RXhjZXB0aW9ucyhzZWxmKToKKyAgICBzZWxmLmFzc2VydF8oJ1Vua25vd24g
QysrIGV4Y2VwdGlvbiB0aHJvd24gaW4gdGhlIHRlc3QgYm9keScKKyAgICAgICAgICAgICAgICAg
aW4gRVhfQklOQVJZX09VVFBVVCkKKworICBkZWYgdGVzdFVuaGFuZGxlZEN4eEV4Y2VwdGlvbnNB
Ym9ydFRoZVByb2dyYW0oc2VsZik6CisgICAgIyBGaWx0ZXJzIG91dCBTRUggZXhjZXB0aW9uIHRl
c3RzIG9uIFdpbmRvd3MuIFVuaGFuZGxlZCBTRUggZXhjZXB0aW9ucworICAgICMgY2F1c2UgdGVz
dHMgdG8gc2hvdyBwb3AtdXAgd2luZG93cyB0aGVyZS4KKyAgICBGSVRMRVJfT1VUX1NFSF9URVNU
U19GTEFHID0gRklMVEVSX0ZMQUcgKyAnPS0qU2VoKicKKyAgICAjIEJ5IGRlZmF1bHQsIEdvb2ds
ZSBUZXN0IGRvZXNuJ3QgY2F0Y2ggdGhlIGV4Y2VwdGlvbnMuCisgICAgdW5jYXVnaHRfZXhjZXB0
aW9uc19leF9iaW5hcnlfb3V0cHV0ID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAorICAg
ICAgICBbRVhfRVhFX1BBVEgsCisgICAgICAgICBOT19DQVRDSF9FWENFUFRJT05TX0ZMQUcsCisg
ICAgICAgICBGSVRMRVJfT1VUX1NFSF9URVNUU19GTEFHXSwKKyAgICAgICAgZW52PWVudmlyb24p
Lm91dHB1dAorCisgICAgc2VsZi5hc3NlcnRfKCdVbmhhbmRsZWQgQysrIGV4Y2VwdGlvbiB0ZXJt
aW5hdGluZyB0aGUgcHJvZ3JhbScKKyAgICAgICAgICAgICAgICAgaW4gdW5jYXVnaHRfZXhjZXB0
aW9uc19leF9iaW5hcnlfb3V0cHV0KQorICAgIHNlbGYuYXNzZXJ0XygndW5leHBlY3RlZCcgbm90
IGluIHVuY2F1Z2h0X2V4Y2VwdGlvbnNfZXhfYmluYXJ5X291dHB1dCkKKworCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMt
dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY2F0Y2gt
ZXhjZXB0aW9ucy10ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWRhZTcwMDMwYTMzYWVhYmEwNjBhYWVm
OTdhOTc5YThmNTgwNGFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdF8uY2MKQEAgLTAsMCArMSwz
MTEgQEAKKy8vIENvcHlyaWdodCAyMDEwLCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8K
Ky8vIFRlc3RzIGZvciBHb29nbGUgVGVzdCBpdHNlbGYuIFRlc3RzIGluIHRoaXMgZmlsZSB0aHJv
dyBDKysgb3IgU0VICisvLyBleGNlcHRpb25zLCBhbmQgdGhlIG91dHB1dCBpcyB2ZXJpZmllZCBi
eQorLy8gZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3QucHkuCisKKyNpbmNsdWRlIDxz
dGRpby5oPiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8c3RkbGliLmg+ICAvLyBGb3IgZXhpdCgpLgor
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lmIEdURVNUX0hBU19TRUgKKyMgaW5jbHVk
ZSA8d2luZG93cy5oPgorI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworIyBpbmNs
dWRlIDxleGNlcHRpb24+ICAvLyBGb3Igc2V0X3Rlcm1pbmF0ZSgpLgorIyBpbmNsdWRlIDxzdGRl
eGNlcHQ+CisjZW5kaWYKKwordXNpbmcgdGVzdGluZzo6VGVzdDsKKworI2lmIEdURVNUX0hBU19T
RUgKKworY2xhc3MgU2VoRXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgVGVzdCB7
CisgcHVibGljOgorICBTZWhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCgpIHsgUmFpc2VFeGNl
cHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhjZXB0aW9uSW5Db25z
dHJ1Y3RvclRlc3QsIFRocm93c0V4Y2VwdGlvbkluQ29uc3RydWN0b3IpIHt9CisKK2NsYXNzIFNl
aEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICB+
U2VoRXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAs
IE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCwgVGhy
b3dzRXhjZXB0aW9uSW5EZXN0cnVjdG9yKSB7fQorCitjbGFzcyBTZWhFeGNlcHRpb25JblNldFVw
VGVzdENhc2VUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgU2V0
VXBUZXN0Q2FzZSgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitU
RVNUX0YoU2VoRXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5T
ZXRVcFRlc3RDYXNlKSB7fQorCitjbGFzcyBTZWhFeGNlcHRpb25JblRlYXJEb3duVGVzdENhc2VU
ZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0
Q2FzZSgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitURVNUX0Yo
U2VoRXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNlVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5UZWFy
RG93blRlc3RDYXNlKSB7fQorCitjbGFzcyBTZWhFeGNlcHRpb25JblNldFVwVGVzdCA6IHB1Ymxp
YyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsgUmFpc2VFeGNl
cHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhjZXB0aW9uSW5TZXRV
cFRlc3QsIFRocm93c0V4Y2VwdGlvbkluU2V0VXApIHt9CisKK2NsYXNzIFNlaEV4Y2VwdGlvbklu
VGVhckRvd25UZXN0IDogcHVibGljIFRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB2b2lk
IFRlYXJEb3duKCkgeyBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7IH0KK307CisKK1RF
U1RfRihTZWhFeGNlcHRpb25JblRlYXJEb3duVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5UZWFyRG93
bikge30KKworVEVTVChTZWhFeGNlcHRpb25UZXN0LCBUaHJvd3NTZWhFeGNlcHRpb24pIHsKKyAg
UmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hB
U19TRUgKKworI2lmIEdURVNUX0hBU19FWENFUFRJT05TCisKK2NsYXNzIEN4eEV4Y2VwdGlvbklu
Q29uc3RydWN0b3JUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgQ3h4RXhjZXB0aW9u
SW5Db25zdHJ1Y3RvclRlc3QoKSB7CisgICAgLy8gV2l0aG91dCB0aGlzIG1hY3JvIFZDKysgY29t
cGxhaW5zIGFib3V0IHVucmVhY2hhYmxlIGNvZGUgYXQgdGhlIGVuZCBvZgorICAgIC8vIHRoZSBj
b25zdHJ1Y3Rvci4KKyAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdf
QkVMT1dfKAorICAgICAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBl
eGNlcHRpb24iKSk7CisgIH0KKworICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgewor
ICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRl
c3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQu
XG4iKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICB+Q3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRl
c3QoKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRl
c3QgZGVzdHJ1Y3RvciAiCisgICAgICAgICAgICAgICAgICA8PCAiY2FsbGVkIHVuZXhwZWN0ZWRs
eS4iOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIEFERF9GQUlMVVJFKCkg
PDwgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0OjpTZXRVcCgpICIKKyAgICAgICAgICAg
ICAgICAgIDw8ICJjYWxsZWQgdW5leHBlY3RlZGx5LiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiQ3h4RXhjZXB0aW9uSW5Db25zdHJ1
Y3RvclRlc3Q6OlRlYXJEb3duKCkgIgorICAgICAgICAgICAgICAgICAgPDwgImNhbGxlZCB1bmV4
cGVjdGVkbHkuIjsKKyAgfQorfTsKKworVEVTVF9GKEN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JU
ZXN0LCBUaHJvd3NFeGNlcHRpb25JbkNvbnN0cnVjdG9yKSB7CisgIEFERF9GQUlMVVJFKCkgPDwg
IkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0IHRlc3QgYm9keSAiCisgICAgICAgICAgICAg
ICAgPDwgImNhbGxlZCB1bmV4cGVjdGVkbHkuIjsKK30KKworLy8gRXhjZXB0aW9ucyBpbiBkZXN0
cnVjdG9ycyBhcmUgbm90IHN1cHBvcnRlZCBpbiBDKysxMS4KKyNpZiAhR1RFU1RfTEFOR19DWFgx
MQorY2xhc3MgQ3h4RXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBw
dWJsaWM6CisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7CisgICAgcHJpbnRmKCIl
cyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JbkRlc3RydWN0b3JUZXN0OjpUZWFyRG93blRl
c3RDYXNlKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKwor
IHByb3RlY3RlZDoKKyAgfkN4eEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3QoKSB7CisgICAgR1RF
U1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXygKKyAgICAgICAgdGhy
b3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIikpOworICB9Cit9
OworCitURVNUX0YoQ3h4RXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCwgVGhyb3dzRXhjZXB0aW9u
SW5EZXN0cnVjdG9yKSB7fQorI2VuZGlmICAvLyBDKysxMSBtb2RlCisKK2NsYXNzIEN4eEV4Y2Vw
dGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBDeHhF
eGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0KCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAg
ICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCBjb25zdHJ1Y3RvciAiCisgICAg
ICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFNl
dFVwVGVzdENhc2UoKSB7CisgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBD
KysgZXhjZXB0aW9uIik7CisgIH0KKworICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkg
eworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RD
YXNlVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBl
Y3RlZC5cbiIpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIH5DeHhFeGNlcHRpb25JblNldFVwVGVz
dENhc2VUZXN0KCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9u
SW5TZXRVcFRlc3RDYXNlVGVzdCBkZXN0cnVjdG9yICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBl
eHBlY3RlZC5cbiIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIHByaW50
ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6U2V0
VXAoKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4
eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3Q6OlRlYXJEb3duKCkgIgorICAgICAgICAgICAi
Y2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KK307CisKK1RFU1RfRihDeHhFeGNlcHRpb25J
blNldFVwVGVzdENhc2VUZXN0LCBUaHJvd3NFeGNlcHRpb25JblNldFVwVGVzdENhc2UpIHsKKyAg
cHJpbnRmKCIlcyIsCisgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCB0
ZXN0IGJvZHkgIgorICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworfQorCitjbGFz
cyBDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdENhc2VUZXN0IDogcHVibGljIFRlc3QgeworIHB1
YmxpYzoKKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICB0aHJvdyBzdGQ6
OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iKTsKKyAgfQorfTsKKworVEVT
VF9GKEN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0Q2FzZVRlc3QsIFRocm93c0V4Y2VwdGlvbklu
VGVhckRvd25UZXN0Q2FzZSkge30KKworY2xhc3MgQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QgOiBw
dWJsaWMgVGVzdCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkg
eworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Q6
OlRlYXJEb3duVGVzdENhc2UoKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4i
KTsKKyAgfQorCisgcHJvdGVjdGVkOgorICB+Q3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QoKSB7Cisg
ICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblNldFVwVGVzdCBkZXN0
cnVjdG9yICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyAg
dmlydHVhbCB2b2lkIFNldFVwKCkgeyB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJk
IEMrKyBleGNlcHRpb24iKTsgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBw
cmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0OjpUZWFyRG93
bigpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9Cit9OworCitU
RVNUX0YoQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QsIFRocm93c0V4Y2VwdGlvbkluU2V0VXApIHsK
KyAgQUREX0ZBSUxVUkUoKSA8PCAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QgdGVzdCBib2R5ICIK
KyAgICAgICAgICAgICAgICA8PCAiY2FsbGVkIHVuZXhwZWN0ZWRseS4iOworfQorCitjbGFzcyBD
eHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0
YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAg
ICAgICJDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIKKyAg
ICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyBwcm90ZWN0ZWQ6Cisg
IH5DeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCgpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAg
ICAgICAgIkN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0IGRlc3RydWN0b3IgIgorICAgICAgICAg
ICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRv
d24oKSB7CisgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0
aW9uIik7CisgIH0KK307CisKK1RFU1RfRihDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCwgVGhy
b3dzRXhjZXB0aW9uSW5UZWFyRG93bikge30KKworY2xhc3MgQ3h4RXhjZXB0aW9uSW5UZXN0Qm9k
eVRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRl
c3RDYXNlKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5U
ZXN0Qm9keVRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMg
ZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICB+Q3h4RXhjZXB0aW9uSW5UZXN0
Qm9keVRlc3QoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25J
blRlc3RCb2R5VGVzdCBkZXN0cnVjdG9yICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3Rl
ZC5cbiIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIHByaW50Zigi
JXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duKCkg
IgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0KK307CisKK1RFU1Rf
RihDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdCwgVGhyb3dzU3RkQ3h4RXhjZXB0aW9uKSB7Cisg
IHRocm93IHN0ZDo6cnVudGltZV9lcnJvcigiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIpOworfQor
CitURVNUKEN4eEV4Y2VwdGlvblRlc3QsIFRocm93c05vblN0ZEN4eEV4Y2VwdGlvbikgeworICB0
aHJvdyAiQy1zdHJpbmciOworfQorCisvLyBUaGlzIHRlcm1pbmF0ZSBoYW5kbGVyIGFib3J0cyB0
aGUgcHJvZ3JhbSB1c2luZyBleGl0KCkgcmF0aGVyIHRoYW4gYWJvcnQoKS4KKy8vIFRoaXMgYXZv
aWRzIHNob3dpbmcgcG9wLXVwcyBvbiBXaW5kb3dzIHN5c3RlbXMgYW5kIGNvcmUgZHVtcHMgb24g
VW5peC1saWtlCisvLyBvbmVzLgordm9pZCBUZXJtaW5hdGVIYW5kbGVyKCkgeworICBmcHJpbnRm
KHN0ZGVyciwgIiVzXG4iLCAiVW5oYW5kbGVkIEMrKyBleGNlcHRpb24gdGVybWluYXRpbmcgdGhl
IHByb2dyYW0uIik7CisgIGZmbHVzaChOVUxMKTsKKyAgZXhpdCgzKTsKK30KKworI2VuZGlmICAv
LyBHVEVTVF9IQVNfRVhDRVBUSU9OUworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3Yp
IHsKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworICBzdGQ6OnNldF90ZXJtaW5hdGUoJlRlcm1p
bmF0ZUhhbmRsZXIpOworI2VuZGlmCisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBh
cmd2KTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1jb2xvci10ZXN0LnB5IGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNvbG9yLXRlc3QucHkKbmV3IGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjNiN2M5OTkwYmNmNDRhNjUwMzZjMjUzZTdhMDE4NDVhZjljMzcxNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1jb2xvci10ZXN0LnB5
CkBAIC0wLDAgKzEsMTI3IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0
IDIwMDgsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisiIiJWZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IGNvcnJlY3RseSBkZXRlcm1pbmVz
IHdoZXRoZXIgdG8gdXNlIGNvbG9ycy4iIiIKKworaW1wb3J0IG9zCitpbXBvcnQgZ3Rlc3RfdGVz
dF91dGlscworCitJU19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCisKK0NPTE9SX0VOVl9WQVIg
PSAnR1RFU1RfQ09MT1InCitDT0xPUl9GTEFHID0gJ2d0ZXN0X2NvbG9yJworQ09NTUFORCA9IGd0
ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdnb29nbGV0ZXN0LWNvbG9yLXRl
c3RfJykKKworCitkZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToKKyAgIiIiU2V0cyB0aGUg
ZW52IHZhcmlhYmxlIHRvICd2YWx1ZSc7IHVuc2V0cyBpdCB3aGVuICd2YWx1ZScgaXMgTm9uZS4i
IiIKKworICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKKyAgICBvcy5lbnZpcm9uW2Vudl92YXJdID0g
dmFsdWUKKyAgZWxpZiBlbnZfdmFyIGluIG9zLmVudmlyb246CisgICAgZGVsIG9zLmVudmlyb25b
ZW52X3Zhcl0KKworCitkZWYgVXNlc0NvbG9yKHRlcm0sIGNvbG9yX2Vudl92YXIsIGNvbG9yX2Zs
YWcpOgorICAiIiJSdW5zIGdvb2dsZXRlc3QtY29sb3ItdGVzdF8gYW5kIHJldHVybnMgaXRzIGV4
aXQgY29kZS4iIiIKKworICBTZXRFbnZWYXIoJ1RFUk0nLCB0ZXJtKQorICBTZXRFbnZWYXIoQ09M
T1JfRU5WX1ZBUiwgY29sb3JfZW52X3ZhcikKKworICBpZiBjb2xvcl9mbGFnIGlzIE5vbmU6Cisg
ICAgYXJncyA9IFtdCisgIGVsc2U6CisgICAgYXJncyA9IFsnLS0lcz0lcycgJSAoQ09MT1JfRkxB
RywgY29sb3JfZmxhZyldCisgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0NPTU1B
TkRdICsgYXJncykKKyAgcmV0dXJuIG5vdCBwLmV4aXRlZCBvciBwLmV4aXRfY29kZQorCisKK2Ns
YXNzIEdUZXN0Q29sb3JUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICBkZWYgdGVz
dE5vRW52VmFyTm9GbGFnKHNlbGYpOgorICAgICIiIlRlc3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUn
cyBuZWl0aGVyIEdURVNUX0NPTE9SIG5vciAtLWd0ZXN0X2NvbG9yLiIiIgorCisgICAgaWYgbm90
IElTX1dJTkRPV1M6CisgICAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcignZHVtYicsIE5v
bmUsIE5vbmUpKQorICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ2VtYWNzJywgTm9u
ZSwgTm9uZSkpCisgICAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0tbW9ubycs
IE5vbmUsIE5vbmUpKQorICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3Vua25vd24n
LCBOb25lLCBOb25lKSkKKyAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKE5vbmUsIE5v
bmUsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2xpbnV4JywgTm9uZSwgTm9u
ZSkpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignY3lnd2luJywgTm9uZSwgTm9uZSkpCisg
ICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0nLCBOb25lLCBOb25lKSkKKyAgICBzZWxm
LmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsIE5vbmUsIE5vbmUpKQorICAgIHNlbGYu
YXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLTI1NmNvbG9yJywgTm9uZSwgTm9uZSkpCisKKyAgZGVm
IHRlc3RGbGFnT25seShzZWxmKToKKyAgICAiIiJUZXN0cyB0aGUgY2FzZSB3aGVuIHRoZXJlJ3Mg
LS1ndGVzdF9jb2xvciBidXQgbm90IEdURVNUX0NPTE9SLiIiIgorCisgICAgc2VsZi5hc3NlcnRf
KG5vdCBVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAnbm8nKSkKKyAgICBzZWxmLmFzc2VydF8obm90
IFVzZXNDb2xvcigneHRlcm0tY29sb3InLCBOb25lLCAnbm8nKSkKKyAgICBpZiBub3QgSVNfV0lO
RE9XUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdlbWFjcycsIE5vbmUsICdh
dXRvJykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0nLCBOb25lLCAnYXV0bycp
KQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAneWVzJykpCisgICAg
c2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0nLCBOb25lLCAneWVzJykpCisKKyAgZGVmIHRl
c3RFbnZWYXJPbmx5KHNlbGYpOgorICAgICIiIlRlc3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUncyBH
VEVTVF9DT0xPUiBidXQgbm90IC0tZ3Rlc3RfY29sb3IuIiIiCisKKyAgICBzZWxmLmFzc2VydF8o
bm90IFVzZXNDb2xvcignZHVtYicsICdubycsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0Xyhub3Qg
VXNlc0NvbG9yKCd4dGVybS1jb2xvcicsICdubycsIE5vbmUpKQorICAgIGlmIG5vdCBJU19XSU5E
T1dTOgorICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ2R1bWInLCAnYXV0bycsIE5v
bmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywgJ2F1dG8nLCBO
b25lKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgJ3llcycsIE5vbmUpKQor
ICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywgJ3llcycsIE5vbmUpKQor
CisgIGRlZiB0ZXN0RW52VmFyQW5kRmxhZyhzZWxmKToKKyAgICAiIiJUZXN0cyB0aGUgY2FzZSB3
aGVuIHRoZXJlIGFyZSBib3RoIEdURVNUX0NPTE9SIGFuZCAtLWd0ZXN0X2NvbG9yLiIiIgorCisg
ICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywgJ25vJywgJ25vJykp
CisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsICdubycsICd5ZXMnKSkKKyAgICBz
ZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsICdubycsICdhdXRvJykpCisKKyAg
ZGVmIHRlc3RBbGlhc2VzT2ZZZXNBbmRObyhzZWxmKToKKyAgICAiIiJUZXN0cyB1c2luZyBhbGlh
c2VzIGluIHNwZWNpZnlpbmcgLS1ndGVzdF9jb2xvci4iIiIKKworICAgIHNlbGYuYXNzZXJ0XyhV
c2VzQ29sb3IoJ2R1bWInLCBOb25lLCAndHJ1ZScpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29s
b3IoJ2R1bWInLCBOb25lLCAnWUVTJykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVt
YicsIE5vbmUsICdUJykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUs
ICcxJykpCisKKyAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0nLCBOb25lLCAn
ZicpKQorICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybScsIE5vbmUsICdmYWxz
ZScpKQorICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybScsIE5vbmUsICcwJykp
CisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwgJ3Vua25vd24n
KSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1h
aW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0
LWNvbG9yLXRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0
LWNvbG9yLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyMGEzYTAwNTQ4ZmRiMWU5MzVhM2RhMTZkZjU2
M2E1MGUxNzlhOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3QtY29sb3ItdGVzdF8uY2MKQEAgLTAsMCArMSw2MiBAQAorLy8gQ29weXJp
Z2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRp
b24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisv
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIEEgaGVscGVyIHByb2dy
YW0gZm9yIHRlc3RpbmcgaG93IEdvb2dsZSBUZXN0IGRldGVybWluZXMgd2hldGhlciB0byB1c2UK
Ky8vIGNvbG9ycyBpbiB0aGUgb3V0cHV0LiAgSXQgcHJpbnRzICJZRVMiIGFuZCByZXR1cm5zIDEg
aWYgR29vZ2xlIFRlc3QKKy8vIGRlY2lkZXMgdG8gdXNlIGNvbG9ycywgYW5kIHByaW50cyAiTk8i
IGFuZCByZXR1cm5zIDAgb3RoZXJ3aXNlLgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgor
Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxkVXNlQ29sb3I7CisKKy8vIFRoZSBwdXJw
b3NlIG9mIHRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIFVuaXRUZXN0IHNpbmdsZXRvbiBpcwor
Ly8gY3JlYXRlZCBiZWZvcmUgbWFpbigpIGlzIGVudGVyZWQsIGFuZCB0aHVzIHRoYXQgU2hvdWxk
VXNlQ29sb3IoKQorLy8gd29ya3MgdGhlIHNhbWUgd2F5IGFzIGluIGEgcmVhbCBHb29nbGUtVGVz
dC1iYXNlZCB0ZXN0LiAgV2UgZG9uJ3QgYWN0dWFsCisvLyBydW4gdGhlIFRFU1QgaXRzZWxmLgor
VEVTVChHVGVzdENvbG9yVGVzdCwgRHVtbXkpIHsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KSB7CisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKwor
ICBpZiAoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpIHsKKyAgICAvLyBHb29nbGUgVGVzdCBkZWNpZGVz
IHRvIHVzZSBjb2xvcnMgaW4gdGhlIG91dHB1dCAoYXNzdW1pbmcgaXQKKyAgICAvLyBnb2VzIHRv
IGEgVFRZKS4KKyAgICBwcmludGYoIllFU1xuIik7CisgICAgcmV0dXJuIDE7CisgIH0gZWxzZSB7
CisgICAgLy8gR29vZ2xlIFRlc3QgZGVjaWRlcyBub3QgdG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0
cHV0LgorICAgIHByaW50ZigiTk9cbiIpOworICAgIHJldHVybiAwOworICB9Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZGVhdGgtdGVzdC10
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWRlYXRoLXRl
c3QtdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGMzMDI2ZmI1ODk1NjYwYWQyYzlkNjVmYmQ5OWI1ZmFm
OWFkNDhjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
b29nbGV0ZXN0LWRlYXRoLXRlc3QtdGVzdC5jYwpAQCAtMCwwICsxLDE0MjMgQEAKKy8vIENvcHly
aWdodCAyMDA1LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0
aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
Ly8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8KKy8vIFRlc3RzIGZvciBk
ZWF0aCB0ZXN0cy4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaCIKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVw
YXRoLmgiCisKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZTsKK3VzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlOworCisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QK
KworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisjICBpbmNsdWRlIDxkaXJlY3QuaD4gICAgICAgICAg
Ly8gRm9yIGNoZGlyKCkuCisjIGVsc2UKKyMgIGluY2x1ZGUgPHVuaXN0ZC5oPgorIyAgaW5jbHVk
ZSA8c3lzL3dhaXQuaD4gICAgICAgIC8vIEZvciB3YWl0cGlkLgorIyBlbmRpZiAgLy8gR1RFU1Rf
T1NfV0lORE9XUworCisjIGluY2x1ZGUgPGxpbWl0cy5oPgorIyBpbmNsdWRlIDxzaWduYWwuaD4K
KyMgaW5jbHVkZSA8c3RkaW8uaD4KKworIyBpZiBHVEVTVF9PU19MSU5VWAorIyAgaW5jbHVkZSA8
c3lzL3RpbWUuaD4KKyMgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCisKKyMgaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3Qtc3BpLmgiCisjIGluY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKwor
bmFtZXNwYWNlIHBvc2l4ID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg7CisKK3VzaW5nIHRl
c3Rpbmc6Ok1lc3NhZ2U7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0OwordXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVzdEZhY3Rvcnk7Cit1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6RmlsZVBhdGg7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0TGFzdEVycm5v
RGVzY3JpcHRpb247Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsOwor
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkluRGVhdGhUZXN0Q2hpbGQ7Cit1c2luZyB0ZXN0aW5n
OjppbnRlcm5hbDo6UGFyc2VOYXR1cmFsTnVtYmVyOworCituYW1lc3BhY2UgdGVzdGluZyB7Citu
YW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBBIGhlbHBlciBjbGFzcyB3aG9zZSBvYmplY3RzIHJl
cGxhY2UgdGhlIGRlYXRoIHRlc3QgZmFjdG9yeSBmb3IgYQorLy8gc2luZ2xlIFVuaXRUZXN0IG9i
amVjdCBkdXJpbmcgdGhlaXIgbGlmZXRpbWVzLgorY2xhc3MgUmVwbGFjZURlYXRoVGVzdEZhY3Rv
cnkgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgUmVwbGFjZURlYXRoVGVzdEZhY3RvcnkoRGVhdGhU
ZXN0RmFjdG9yeSogbmV3X2ZhY3RvcnkpCisgICAgICA6IHVuaXRfdGVzdF9pbXBsXyhHZXRVbml0
VGVzdEltcGwoKSkgeworICAgIG9sZF9mYWN0b3J5XyA9IHVuaXRfdGVzdF9pbXBsXy0+ZGVhdGhf
dGVzdF9mYWN0b3J5Xy5yZWxlYXNlKCk7CisgICAgdW5pdF90ZXN0X2ltcGxfLT5kZWF0aF90ZXN0
X2ZhY3RvcnlfLnJlc2V0KG5ld19mYWN0b3J5KTsKKyAgfQorCisgIH5SZXBsYWNlRGVhdGhUZXN0
RmFjdG9yeSgpIHsKKyAgICB1bml0X3Rlc3RfaW1wbF8tPmRlYXRoX3Rlc3RfZmFjdG9yeV8ucmVs
ZWFzZSgpOworICAgIHVuaXRfdGVzdF9pbXBsXy0+ZGVhdGhfdGVzdF9mYWN0b3J5Xy5yZXNldChv
bGRfZmFjdG9yeV8pOworICB9CisgcHJpdmF0ZToKKyAgLy8gUHJldmVudHMgY29weWluZyBSZXBs
YWNlRGVhdGhUZXN0RmFjdG9yeSBvYmplY3RzLgorICBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeShj
b25zdCBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSYpOworICB2b2lkIG9wZXJhdG9yPShjb25zdCBS
ZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSYpOworCisgIFVuaXRUZXN0SW1wbCogdW5pdF90ZXN0X2lt
cGxfOworICBEZWF0aFRlc3RGYWN0b3J5KiBvbGRfZmFjdG9yeV87Cit9OworCit9ICAvLyBuYW1l
c3BhY2UgaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKK3ZvaWQgRGllV2l0aE1l
c3NhZ2UoY29uc3QgOjpzdGQ6OnN0cmluZyYgbWVzc2FnZSkgeworICBmcHJpbnRmKHN0ZGVyciwg
IiVzIiwgbWVzc2FnZS5jX3N0cigpKTsKKyAgZmZsdXNoKHN0ZGVycik7ICAvLyBNYWtlIHN1cmUg
dGhlIHRleHQgaXMgcHJpbnRlZCBiZWZvcmUgdGhlIHByb2Nlc3MgZXhpdHMuCisKKyAgLy8gV2Ug
Y2FsbCBfZXhpdCgpIGluc3RlYWQgb2YgZXhpdCgpLCBhcyB0aGUgZm9ybWVyIGlzIGEgZGlyZWN0
CisgIC8vIHN5c3RlbSBjYWxsIGFuZCB0aHVzIHNhZmVyIGluIHRoZSBwcmVzZW5jZSBvZiB0aHJl
YWRzLiAgZXhpdCgpCisgIC8vIHdpbGwgaW52b2tlIHVzZXItZGVmaW5lZCBleGl0LWhvb2tzLCB3
aGljaCBtYXkgZG8gZGFuZ2Vyb3VzCisgIC8vIHRoaW5ncyB0aGF0IGNvbmZsaWN0IHdpdGggZGVh
dGggdGVzdHMuCisgIC8vCisgIC8vIFNvbWUgY29tcGlsZXJzIGNhbiByZWNvZ25pemUgdGhhdCBf
ZXhpdCgpIG5ldmVyIHJldHVybnMgYW5kIGlzc3VlIHRoZQorICAvLyAndW5yZWFjaGFibGUgY29k
ZScgd2FybmluZyBmb3IgY29kZSBmb2xsb3dpbmcgdGhpcyBmdW5jdGlvbiwgdW5sZXNzCisgIC8v
IGZvb2xlZCBieSBhIGZha2UgY29uZGl0aW9uLgorICBpZiAoQWx3YXlzVHJ1ZSgpKQorICAgIF9l
eGl0KDEpOworfQorCit2b2lkIERpZUluc2lkZShjb25zdCA6OnN0ZDo6c3RyaW5nJiBmdW5jdGlv
bikgeworICBEaWVXaXRoTWVzc2FnZSgiZGVhdGggaW5zaWRlICIgKyBmdW5jdGlvbiArICIoKS4i
KTsKK30KKworLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyB3b3JrLgorCitjbGFzcyBUZXN0Rm9y
RGVhdGhUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgVGVzdEZv
ckRlYXRoVGVzdCgpIDogb3JpZ2luYWxfZGlyXyhGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpKSB7
fQorCisgIHZpcnR1YWwgflRlc3RGb3JEZWF0aFRlc3QoKSB7CisgICAgcG9zaXg6OkNoRGlyKG9y
aWdpbmFsX2Rpcl8uY19zdHIoKSk7CisgIH0KKworICAvLyBBIHN0YXRpYyBtZW1iZXIgZnVuY3Rp
b24gdGhhdCdzIGV4cGVjdGVkIHRvIGRpZS4KKyAgc3RhdGljIHZvaWQgU3RhdGljTWVtYmVyRnVu
Y3Rpb24oKSB7IERpZUluc2lkZSgiU3RhdGljTWVtYmVyRnVuY3Rpb24iKTsgfQorCisgIC8vIEEg
bWV0aG9kIG9mIHRoZSB0ZXN0IGZpeHR1cmUgdGhhdCBtYXkgZGllLgorICB2b2lkIE1lbWJlckZ1
bmN0aW9uKCkgeworICAgIGlmIChzaG91bGRfZGllXykKKyAgICAgIERpZUluc2lkZSgiTWVtYmVy
RnVuY3Rpb24iKTsKKyAgfQorCisgIC8vIFRydWUgaWZmIE1lbWJlckZ1bmN0aW9uKCkgc2hvdWxk
IGRpZS4KKyAgYm9vbCBzaG91bGRfZGllXzsKKyAgY29uc3QgRmlsZVBhdGggb3JpZ2luYWxfZGly
XzsKK307CisKKy8vIEEgY2xhc3Mgd2l0aCBhIG1lbWJlciBmdW5jdGlvbiB0aGF0IG1heSBkaWUu
CitjbGFzcyBNYXlEaWUgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgTWF5RGllKGJvb2wgc2hvdWxk
X2RpZSkgOiBzaG91bGRfZGllXyhzaG91bGRfZGllKSB7fQorCisgIC8vIEEgbWVtYmVyIGZ1bmN0
aW9uIHRoYXQgbWF5IGRpZS4KKyAgdm9pZCBNZW1iZXJGdW5jdGlvbigpIGNvbnN0IHsKKyAgICBp
ZiAoc2hvdWxkX2RpZV8pCisgICAgICBEaWVJbnNpZGUoIk1heURpZTo6TWVtYmVyRnVuY3Rpb24i
KTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gVHJ1ZSBpZmYgTWVtYmVyRnVuY3Rpb24oKSBzaG91
bGQgZGllLgorICBib29sIHNob3VsZF9kaWVfOworfTsKKworLy8gQSBnbG9iYWwgZnVuY3Rpb24g
dGhhdCdzIGV4cGVjdGVkIHRvIGRpZS4KK3ZvaWQgR2xvYmFsRnVuY3Rpb24oKSB7IERpZUluc2lk
ZSgiR2xvYmFsRnVuY3Rpb24iKTsgfQorCisvLyBBIG5vbi12b2lkIGZ1bmN0aW9uIHRoYXQncyBl
eHBlY3RlZCB0byBkaWUuCitpbnQgTm9uVm9pZEZ1bmN0aW9uKCkgeworICBEaWVJbnNpZGUoIk5v
blZvaWRGdW5jdGlvbiIpOworICByZXR1cm4gMTsKK30KKworLy8gQSB1bmFyeSBmdW5jdGlvbiB0
aGF0IG1heSBkaWUuCit2b2lkIERpZUlmKGJvb2wgc2hvdWxkX2RpZSkgeworICBpZiAoc2hvdWxk
X2RpZSkKKyAgICBEaWVJbnNpZGUoIkRpZUlmIik7Cit9CisKKy8vIEEgYmluYXJ5IGZ1bmN0aW9u
IHRoYXQgbWF5IGRpZS4KK2Jvb2wgRGllSWZMZXNzVGhhbihpbnQgeCwgaW50IHkpIHsKKyAgaWYg
KHggPCB5KSB7CisgICAgRGllSW5zaWRlKCJEaWVJZkxlc3NUaGFuIik7CisgIH0KKyAgcmV0dXJu
IHRydWU7Cit9CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQVRIIGNhbiBiZSB1c2VkIG91dHNp
ZGUgYSBURVNULCBURVNUX0YsIG9yIHRlc3QgZml4dHVyZS4KK3ZvaWQgRGVhdGhUZXN0U3Vicm91
dGluZSgpIHsKKyAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksICJkZWF0aC4qR2xvYmFs
RnVuY3Rpb24iKTsKKyAgQVNTRVJUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksICJkZWF0aC4qR2xv
YmFsRnVuY3Rpb24iKTsKK30KKworLy8gRGVhdGggaW4gZGJnLCBub3Qgb3B0LgoraW50IERpZUlu
RGVidWdFbHNlMTIoaW50KiBzaWRlZWZmZWN0KSB7CisgIGlmIChzaWRlZWZmZWN0KSAqc2lkZWVm
ZmVjdCA9IDEyOworCisjIGlmbmRlZiBOREVCVUcKKworICBEaWVJbnNpZGUoIkRpZUluRGVidWdF
bHNlMTIiKTsKKworIyBlbmRpZiAgLy8gTkRFQlVHCisKKyAgcmV0dXJuIDEyOworfQorCisjIGlm
IEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfRlVDSFNJQQorCisvLyBUZXN0cyB0aGUgRXhp
dGVkV2l0aENvZGUgcHJlZGljYXRlLgorVEVTVChFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCwgRXhp
dGVkV2l0aENvZGUpIHsKKyAgLy8gT24gV2luZG93cywgdGhlIHByb2Nlc3MncyBleGl0IGNvZGUg
aXMgdGhlIHNhbWUgYXMgaXRzIGV4aXQgc3RhdHVzLAorICAvLyBzbyB0aGUgcHJlZGljYXRlIGp1
c3QgY29tcGFyZXMgdGhlIGl0cyBpbnB1dCB3aXRoIGl0cyBwYXJhbWV0ZXIuCisgIEVYUEVDVF9U
UlVFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApKDApKTsKKyAgRVhQRUNUX1RSVUUodGVzdGlu
Zzo6RXhpdGVkV2l0aENvZGUoMSkoMSkpOworICBFWFBFQ1RfVFJVRSh0ZXN0aW5nOjpFeGl0ZWRX
aXRoQ29kZSg0MikoNDIpKTsKKyAgRVhQRUNUX0ZBTFNFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2Rl
KDApKDEpKTsKKyAgRVhQRUNUX0ZBTFNFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEpKDApKTsK
K30KKworIyBlbHNlCisKKy8vIFJldHVybnMgdGhlIGV4aXQgc3RhdHVzIG9mIGEgcHJvY2VzcyB0
aGF0IGNhbGxzIF9leGl0KDIpIHdpdGggYQorLy8gZ2l2ZW4gZXhpdCBjb2RlLiAgVGhpcyBpcyBh
IGhlbHBlciBmdW5jdGlvbiBmb3IgdGhlCisvLyBFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCB0ZXN0
IHN1aXRlLgorc3RhdGljIGludCBOb3JtYWxFeGl0U3RhdHVzKGludCBleGl0X2NvZGUpIHsKKyAg
cGlkX3QgY2hpbGRfcGlkID0gZm9yaygpOworICBpZiAoY2hpbGRfcGlkID09IDApIHsKKyAgICBf
ZXhpdChleGl0X2NvZGUpOworICB9CisgIGludCBzdGF0dXM7CisgIHdhaXRwaWQoY2hpbGRfcGlk
LCAmc3RhdHVzLCAwKTsKKyAgcmV0dXJuIHN0YXR1czsKK30KKworLy8gUmV0dXJucyB0aGUgZXhp
dCBzdGF0dXMgb2YgYSBwcm9jZXNzIHRoYXQgcmFpc2VzIGEgZ2l2ZW4gc2lnbmFsLgorLy8gSWYg
dGhlIHNpZ25hbCBkb2VzIG5vdCBjYXVzZSB0aGUgcHJvY2VzcyB0byBkaWUsIHRoZW4gaXQgcmV0
dXJucworLy8gaW5zdGVhZCB0aGUgZXhpdCBzdGF0dXMgb2YgYSBwcm9jZXNzIHRoYXQgZXhpdHMg
bm9ybWFsbHkgd2l0aCBleGl0CisvLyBjb2RlIDEuICBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9u
IGZvciB0aGUgRXhpdFN0YXR1c1ByZWRpY2F0ZVRlc3QKKy8vIHRlc3Qgc3VpdGUuCitzdGF0aWMg
aW50IEtpbGxlZEV4aXRTdGF0dXMoaW50IHNpZ251bSkgeworICBwaWRfdCBjaGlsZF9waWQgPSBm
b3JrKCk7CisgIGlmIChjaGlsZF9waWQgPT0gMCkgeworICAgIHJhaXNlKHNpZ251bSk7CisgICAg
X2V4aXQoMSk7CisgIH0KKyAgaW50IHN0YXR1czsKKyAgd2FpdHBpZChjaGlsZF9waWQsICZzdGF0
dXMsIDApOworICByZXR1cm4gc3RhdHVzOworfQorCisvLyBUZXN0cyB0aGUgRXhpdGVkV2l0aENv
ZGUgcHJlZGljYXRlLgorVEVTVChFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCwgRXhpdGVkV2l0aENv
ZGUpIHsKKyAgY29uc3QgaW50IHN0YXR1czAgID0gTm9ybWFsRXhpdFN0YXR1cygwKTsKKyAgY29u
c3QgaW50IHN0YXR1czEgID0gTm9ybWFsRXhpdFN0YXR1cygxKTsKKyAgY29uc3QgaW50IHN0YXR1
czQyID0gTm9ybWFsRXhpdFN0YXR1cyg0Mik7CisgIGNvbnN0IHRlc3Rpbmc6OkV4aXRlZFdpdGhD
b2RlIHByZWQwKDApOworICBjb25zdCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSBwcmVkMSgxKTsK
KyAgY29uc3QgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUgcHJlZDQyKDQyKTsKKyAgRVhQRUNUX1BS
RUQxKHByZWQwLCAgc3RhdHVzMCk7CisgIEVYUEVDVF9QUkVEMShwcmVkMSwgIHN0YXR1czEpOwor
ICBFWFBFQ1RfUFJFRDEocHJlZDQyLCBzdGF0dXM0Mik7CisgIEVYUEVDVF9GQUxTRShwcmVkMChz
dGF0dXMxKSk7CisgIEVYUEVDVF9GQUxTRShwcmVkNDIoc3RhdHVzMCkpOworICBFWFBFQ1RfRkFM
U0UocHJlZDEoc3RhdHVzNDIpKTsKK30KKworLy8gVGVzdHMgdGhlIEtpbGxlZEJ5U2lnbmFsIHBy
ZWRpY2F0ZS4KK1RFU1QoRXhpdFN0YXR1c1ByZWRpY2F0ZVRlc3QsIEtpbGxlZEJ5U2lnbmFsKSB7
CisgIGNvbnN0IGludCBzdGF0dXNfc2VndiA9IEtpbGxlZEV4aXRTdGF0dXMoU0lHU0VHVik7Cisg
IGNvbnN0IGludCBzdGF0dXNfa2lsbCA9IEtpbGxlZEV4aXRTdGF0dXMoU0lHS0lMTCk7CisgIGNv
bnN0IHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsIHByZWRfc2VndihTSUdTRUdWKTsKKyAgY29uc3Qg
dGVzdGluZzo6S2lsbGVkQnlTaWduYWwgcHJlZF9raWxsKFNJR0tJTEwpOworICBFWFBFQ1RfUFJF
RDEocHJlZF9zZWd2LCBzdGF0dXNfc2Vndik7CisgIEVYUEVDVF9QUkVEMShwcmVkX2tpbGwsIHN0
YXR1c19raWxsKTsKKyAgRVhQRUNUX0ZBTFNFKHByZWRfc2VndihzdGF0dXNfa2lsbCkpOworICBF
WFBFQ1RfRkFMU0UocHJlZF9raWxsKHN0YXR1c19zZWd2KSk7Cit9CisKKyMgZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfRlVDSFNJQQorCisvLyBUZXN0cyB0aGF0IHRoZSBk
ZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29kZSB3aGljaCBtYXkgb3IgbWF5IG5vdAorLy8g
YmUgZm9sbG93ZWQgYnkgb3BlcmF0b3I8PCwgYW5kIHRoYXQgaW4gZWl0aGVyIGNhc2UgdGhlIGNv
bXBsZXRlIHRleHQKKy8vIGNvbXByaXNlcyBvbmx5IGEgc2luZ2xlIEMrKyBzdGF0ZW1lbnQuCitU
RVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU2luZ2xlU3RhdGVtZW50KSB7CisgIGlmIChBbHdheXNG
YWxzZSgpKQorICAgIC8vIFRoaXMgd291bGQgZmFpbCBpZiBleGVjdXRlZDsgdGhpcyBpcyBhIGNv
bXBpbGF0aW9uIHRlc3Qgb25seQorICAgIEFTU0VSVF9ERUFUSChyZXR1cm4sICIiKTsKKworICBp
ZiAoQWx3YXlzVHJ1ZSgpKQorICAgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOworICBlbHNl
CisgICAgLy8gVGhpcyBlbXB0eSAiZWxzZSIgYnJhbmNoIGlzIG1lYW50IHRvIGVuc3VyZSB0aGF0
IEVYUEVDVF9ERUFUSAorICAgIC8vIGRvZXNuJ3QgZXhwYW5kIGludG8gYW4gImlmIiBzdGF0ZW1l
bnQgd2l0aG91dCBhbiAiZWxzZSIKKyAgICA7CisKKyAgaWYgKEFsd2F5c0ZhbHNlKCkpCisgICAg
QVNTRVJUX0RFQVRIKHJldHVybiwgIiIpIDw8ICJkaWQgbm90IGRpZSI7CisKKyAgaWYgKEFsd2F5
c0ZhbHNlKCkpCisgICAgOworICBlbHNlCisgICAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIikg
PDwgMSA8PCAyIDw8IDM7Cit9CisKK3ZvaWQgRGllV2l0aEVtYmVkZGVkTnVsKCkgeworICBmcHJp
bnRmKHN0ZGVyciwgIkhlbGxvJWNteSBudWxsIHdvcmxkLlxuIiwgJ1wwJyk7CisgIGZmbHVzaChz
dGRlcnIpOworICBfZXhpdCgxKTsKK30KKworIyBpZiBHVEVTVF9VU0VTX1BDUkUKKworLy8gVGVz
dHMgdGhhdCBFWFBFQ1RfREVBVEggYW5kIEFTU0VSVF9ERUFUSCB3b3JrIHdoZW4gdGhlIGVycm9y
CisvLyBtZXNzYWdlIGhhcyBhIE5VTCBjaGFyYWN0ZXIgaW4gaXQuCitURVNUX0YoVGVzdEZvckRl
YXRoVGVzdCwgRW1iZWRkZWROdWxJbk1lc3NhZ2UpIHsKKyAgRVhQRUNUX0RFQVRIKERpZVdpdGhF
bWJlZGRlZE51bCgpLCAibXkgbnVsbCB3b3JsZCIpOworICBBU1NFUlRfREVBVEgoRGllV2l0aEVt
YmVkZGVkTnVsKCksICJteSBudWxsIHdvcmxkIik7Cit9CisKKyMgZW5kaWYgIC8vIEdURVNUX1VT
RVNfUENSRQorCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3QgbWFjcm9zIGV4cGFuZCB0byBjb2Rl
IHdoaWNoIGludGVyYWN0cyB3ZWxsIHdpdGggc3dpdGNoCisvLyBzdGF0ZW1lbnRzLgorVEVTVF9G
KFRlc3RGb3JEZWF0aFRlc3QsIFN3aXRjaFN0YXRlbWVudCkgeworICAvLyBNaWNyb3NvZnQgY29t
cGlsZXIgdXN1YWxseSBjb21wbGFpbnMgYWJvdXQgc3dpdGNoIHN0YXRlbWVudHMgd2l0aG91dAor
ICAvLyBjYXNlIGxhYmVscy4gV2Ugc3VwcHJlc3MgdGhhdCB3YXJuaW5nIGZvciB0aGlzIHRlc3Qu
CisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQwNjUpCisKKyAgc3dpdGNoICgw
KQorICAgIGRlZmF1bHQ6CisgICAgICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIiKSA8PCAiZXhp
dCBpbiBkZWZhdWx0IHN3aXRjaCBoYW5kbGVyIjsKKworICBzd2l0Y2ggKDApCisgICAgY2FzZSAw
OgorICAgICAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgImV4aXQgaW4gc3dpdGNoIGNh
c2UiOworCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQorfQorCisvLyBUZXN0
cyB0aGF0IGEgc3RhdGljIG1lbWJlciBmdW5jdGlvbiBjYW4gYmUgdXNlZCBpbiBhICJmYXN0IiBz
dHlsZQorLy8gZGVhdGggdGVzdC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTdGF0aWNNZW1i
ZXJGdW5jdGlvbkZhc3RTdHlsZSkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rf
c3R5bGUpID0gImZhc3QiOworICBBU1NFUlRfREVBVEgoU3RhdGljTWVtYmVyRnVuY3Rpb24oKSwg
ImRlYXRoLipTdGF0aWNNZW1iZXIiKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIG1ldGhvZCBvZiB0
aGUgdGVzdCBmaXh0dXJlIGNhbiBiZSB1c2VkIGluIGEgImZhc3QiCisvLyBzdHlsZSBkZWF0aCB0
ZXN0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE1lbWJlckZ1bmN0aW9uRmFzdFN0eWxlKSB7
CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIHNo
b3VsZF9kaWVfID0gdHJ1ZTsKKyAgRVhQRUNUX0RFQVRIKE1lbWJlckZ1bmN0aW9uKCksICJpbnNp
ZGUuKk1lbWJlckZ1bmN0aW9uIik7Cit9CisKK3ZvaWQgQ2hhbmdlVG9Sb290RGlyKCkgeyBwb3Np
eDo6Q2hEaXIoR1RFU1RfUEFUSF9TRVBfKTsgfQorCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3Rz
IHdvcmsgZXZlbiBpZiB0aGUgY3VycmVudCBkaXJlY3RvcnkgaGFzIGJlZW4KKy8vIGNoYW5nZWQu
CitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRmFzdERlYXRoVGVzdEluQ2hhbmdlZERpcikgewor
ICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOworCisgIENo
YW5nZVRvUm9vdERpcigpOworICBFWFBFQ1RfRVhJVChfZXhpdCgxKSwgdGVzdGluZzo6RXhpdGVk
V2l0aENvZGUoMSksICIiKTsKKworICBDaGFuZ2VUb1Jvb3REaXIoKTsKKyAgQVNTRVJUX0RFQVRI
KF9leGl0KDEpLCAiIik7Cit9CisKKyMgaWYgR1RFU1RfT1NfTElOVVgKK3ZvaWQgU2lncHJvZkFj
dGlvbihpbnQsIHNpZ2luZm9fdCosIHZvaWQqKSB7IC8qIG5vIG9wICovIH0KKworLy8gU2V0cyBT
SUdQUk9GIGFjdGlvbiBhbmQgSVRJTUVSX1BST0YgdGltZXIgKGludGVydmFsOiAxbXMpLgordm9p
ZCBTZXRTaWdwcm9mQWN0aW9uQW5kVGltZXIoKSB7CisgIHN0cnVjdCBpdGltZXJ2YWwgdGltZXI7
CisgIHRpbWVyLml0X2ludGVydmFsLnR2X3NlYyA9IDA7CisgIHRpbWVyLml0X2ludGVydmFsLnR2
X3VzZWMgPSAxOworICB0aW1lci5pdF92YWx1ZSA9IHRpbWVyLml0X2ludGVydmFsOworICBBU1NF
UlRfRVEoMCwgc2V0aXRpbWVyKElUSU1FUl9QUk9GLCAmdGltZXIsIE5VTEwpKTsKKyAgc3RydWN0
IHNpZ2FjdGlvbiBzaWduYWxfYWN0aW9uOworICBtZW1zZXQoJnNpZ25hbF9hY3Rpb24sIDAsIHNp
emVvZihzaWduYWxfYWN0aW9uKSk7CisgIHNpZ2VtcHR5c2V0KCZzaWduYWxfYWN0aW9uLnNhX21h
c2spOworICBzaWduYWxfYWN0aW9uLnNhX3NpZ2FjdGlvbiA9IFNpZ3Byb2ZBY3Rpb247CisgIHNp
Z25hbF9hY3Rpb24uc2FfZmxhZ3MgPSBTQV9SRVNUQVJUIHwgU0FfU0lHSU5GTzsKKyAgQVNTRVJU
X0VRKDAsIHNpZ2FjdGlvbihTSUdQUk9GLCAmc2lnbmFsX2FjdGlvbiwgTlVMTCkpOworfQorCisv
LyBEaXNhYmxlcyBJVElNRVJfUFJPRiB0aW1lciBhbmQgaWdub3JlcyBTSUdQUk9GIHNpZ25hbC4K
K3ZvaWQgRGlzYWJsZVNpZ3Byb2ZBY3Rpb25BbmRUaW1lcihzdHJ1Y3Qgc2lnYWN0aW9uKiBvbGRf
c2lnbmFsX2FjdGlvbikgeworICBzdHJ1Y3QgaXRpbWVydmFsIHRpbWVyOworICB0aW1lci5pdF9p
bnRlcnZhbC50dl9zZWMgPSAwOworICB0aW1lci5pdF9pbnRlcnZhbC50dl91c2VjID0gMDsKKyAg
dGltZXIuaXRfdmFsdWUgPSB0aW1lci5pdF9pbnRlcnZhbDsKKyAgQVNTRVJUX0VRKDAsIHNldGl0
aW1lcihJVElNRVJfUFJPRiwgJnRpbWVyLCBOVUxMKSk7CisgIHN0cnVjdCBzaWdhY3Rpb24gc2ln
bmFsX2FjdGlvbjsKKyAgbWVtc2V0KCZzaWduYWxfYWN0aW9uLCAwLCBzaXplb2Yoc2lnbmFsX2Fj
dGlvbikpOworICBzaWdlbXB0eXNldCgmc2lnbmFsX2FjdGlvbi5zYV9tYXNrKTsKKyAgc2lnbmFs
X2FjdGlvbi5zYV9oYW5kbGVyID0gU0lHX0lHTjsKKyAgQVNTRVJUX0VRKDAsIHNpZ2FjdGlvbihT
SUdQUk9GLCAmc2lnbmFsX2FjdGlvbiwgb2xkX3NpZ25hbF9hY3Rpb24pKTsKK30KKworLy8gVGVz
dHMgdGhhdCBkZWF0aCB0ZXN0cyB3b3JrIHdoZW4gU0lHUFJPRiBoYW5kbGVyIGFuZCB0aW1lciBh
cmUgc2V0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEZhc3RTaWdwcm9mQWN0aW9uU2V0KSB7
CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIFNl
dFNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigpOworICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKTsK
KyAgc3RydWN0IHNpZ2FjdGlvbiBvbGRfc2lnbmFsX2FjdGlvbjsKKyAgRGlzYWJsZVNpZ3Byb2ZB
Y3Rpb25BbmRUaW1lcigmb2xkX3NpZ25hbF9hY3Rpb24pOworICBFWFBFQ1RfVFJVRShvbGRfc2ln
bmFsX2FjdGlvbi5zYV9zaWdhY3Rpb24gPT0gU2lncHJvZkFjdGlvbik7Cit9CisKK1RFU1RfRihU
ZXN0Rm9yRGVhdGhUZXN0LCBUaHJlYWRTYWZlU2lncHJvZkFjdGlvblNldCkgeworICB0ZXN0aW5n
OjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOworICBTZXRTaWdw
cm9mQWN0aW9uQW5kVGltZXIoKTsKKyAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIik7CisgIHN0
cnVjdCBzaWdhY3Rpb24gb2xkX3NpZ25hbF9hY3Rpb247CisgIERpc2FibGVTaWdwcm9mQWN0aW9u
QW5kVGltZXIoJm9sZF9zaWduYWxfYWN0aW9uKTsKKyAgRVhQRUNUX1RSVUUob2xkX3NpZ25hbF9h
Y3Rpb24uc2Ffc2lnYWN0aW9uID09IFNpZ3Byb2ZBY3Rpb24pOworfQorIyBlbmRpZiAgLy8gR1RF
U1RfT1NfTElOVVgKKworLy8gUmVwZWF0cyBhIHJlcHJlc2VudGF0aXZlIHNhbXBsZSBvZiBkZWF0
aCB0ZXN0cyBpbiB0aGUgInRocmVhZHNhZmUiIHN0eWxlOgorCitURVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgU3RhdGljTWVtYmVyRnVuY3Rpb25UaHJlYWRzYWZlU3R5bGUpIHsKKyAgdGVzdGluZzo6
R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKKyAgQVNTRVJUX0RF
QVRIKFN0YXRpY01lbWJlckZ1bmN0aW9uKCksICJkZWF0aC4qU3RhdGljTWVtYmVyIik7Cit9CisK
K1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNZW1iZXJGdW5jdGlvblRocmVhZHNhZmVTdHlsZSkg
eworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUi
OworICBzaG91bGRfZGllXyA9IHRydWU7CisgIEVYUEVDVF9ERUFUSChNZW1iZXJGdW5jdGlvbigp
LCAiaW5zaWRlLipNZW1iZXJGdW5jdGlvbiIpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVz
dCwgVGhyZWFkc2FmZURlYXRoVGVzdEluTG9vcCkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRl
YXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOworCisgIGZvciAoaW50IGkgPSAwOyBpIDwg
MzsgKytpKQorICAgIEVYUEVDVF9FWElUKF9leGl0KGkpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29k
ZShpKSwgIiIpIDw8ICI6IGkgPSAiIDw8IGk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0
LCBUaHJlYWRzYWZlRGVhdGhUZXN0SW5DaGFuZ2VkRGlyKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZM
QUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7CisKKyAgQ2hhbmdlVG9Sb290RGly
KCk7CisgIEVYUEVDVF9FWElUKF9leGl0KDEpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSwg
IiIpOworCisgIENoYW5nZVRvUm9vdERpcigpOworICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIi
KTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE1peGVkU3R5bGVzKSB7CisgIHRlc3Rp
bmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7CisgIEVYUEVD
VF9ERUFUSChfZXhpdCgxKSwgIiIpOworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rf
c3R5bGUpID0gImZhc3QiOworICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKTsKK30KKworIyBp
ZiBHVEVTVF9IQVNfQ0xPTkUgJiYgR1RFU1RfSEFTX1BUSFJFQUQKKworbmFtZXNwYWNlIHsKKwor
Ym9vbCBwdGhyZWFkX2ZsYWc7CisKK3ZvaWQgU2V0UHRocmVhZEZsYWcoKSB7CisgIHB0aHJlYWRf
ZmxhZyA9IHRydWU7Cit9CisKK30gIC8vIG5hbWVzcGFjZQorCitURVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgRG9lc05vdEV4ZWN1dGVBdGZvcmtIb29rcykgeworICBpZiAoIXRlc3Rpbmc6OkdURVNU
X0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yaykpIHsKKyAgICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRl
YXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOworICAgIHB0aHJlYWRfZmxhZyA9IGZhbHNl
OworICAgIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0Zm9yaygmU2V0UHRocmVhZEZsYWcsIE5VTEws
IE5VTEwpKTsKKyAgICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIiKTsKKyAgICBBU1NFUlRfRkFM
U0UocHRocmVhZF9mbGFnKTsKKyAgfQorfQorCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUg
JiYgR1RFU1RfSEFTX1BUSFJFQUQKKworLy8gVGVzdHMgdGhhdCBhIG1ldGhvZCBvZiBhbm90aGVy
IGNsYXNzIGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhU
ZXN0LCBNZXRob2RPZkFub3RoZXJDbGFzcykgeworICBjb25zdCBNYXlEaWUgeCh0cnVlKTsKKyAg
QVNTRVJUX0RFQVRIKHguTWVtYmVyRnVuY3Rpb24oKSwgIk1heURpZVxcOlxcOk1lbWJlckZ1bmN0
aW9uIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBnbG9iYWwgZnVuY3Rpb24gY2FuIGJlIHVzZWQg
aW4gYSBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEdsb2JhbEZ1bmN0aW9u
KSB7CisgIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCAiR2xvYmFsRnVuY3Rpb24iKTsK
K30KKworLy8gVGVzdHMgdGhhdCBhbnkgdmFsdWUgY29udmVydGlibGUgdG8gYW4gUkUgd29ya3Mg
YXMgYSBzZWNvbmQKKy8vIGFyZ3VtZW50IHRvIEVYUEVDVF9ERUFUSC4KK1RFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBBY2NlcHRzQW55dGhpbmdDb252ZXJ0aWJsZVRvUkUpIHsKKyAgc3RhdGljIGNv
bnN0IGNoYXIgcmVnZXhfY19zdHJbXSA9ICJHbG9iYWxGdW5jdGlvbiI7CisgIEVYUEVDVF9ERUFU
SChHbG9iYWxGdW5jdGlvbigpLCByZWdleF9jX3N0cik7CisKKyAgY29uc3QgdGVzdGluZzo6aW50
ZXJuYWw6OlJFIHJlZ2V4KHJlZ2V4X2Nfc3RyKTsKKyAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0
aW9uKCksIHJlZ2V4KTsKKworIyBpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCisgIGNvbnN0
IDo6c3RyaW5nIHJlZ2V4X3N0cihyZWdleF9jX3N0cik7CisgIEVYUEVDVF9ERUFUSChHbG9iYWxG
dW5jdGlvbigpLCByZWdleF9zdHIpOworCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NU
UklORworCisjIGlmICFHVEVTVF9VU0VTX1BDUkUKKworICBjb25zdCA6OnN0ZDo6c3RyaW5nIHJl
Z2V4X3N0ZF9zdHIocmVnZXhfY19zdHIpOworICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24o
KSwgcmVnZXhfc3RkX3N0cik7CisKKyMgZW5kaWYgIC8vICFHVEVTVF9VU0VTX1BDUkUKK30KKwor
Ly8gVGVzdHMgdGhhdCBhIG5vbi12b2lkIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGluIGEgZGVhdGgg
dGVzdC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBOb25Wb2lkRnVuY3Rpb24pIHsKKyAgQVNT
RVJUX0RFQVRIKE5vblZvaWRGdW5jdGlvbigpLCAiTm9uVm9pZEZ1bmN0aW9uIik7Cit9CisKKy8v
IFRlc3RzIHRoYXQgZnVuY3Rpb25zIHRoYXQgdGFrZSBwYXJhbWV0ZXIocykgY2FuIGJlIHVzZWQg
aW4gYSBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEZ1bmN0aW9uV2l0aFBh
cmFtZXRlcikgeworICBFWFBFQ1RfREVBVEgoRGllSWYodHJ1ZSksICJEaWVJZlxcKFxcKSIpOwor
ICBFWFBFQ1RfREVBVEgoRGllSWZMZXNzVGhhbigyLCAzKSwgIkRpZUlmTGVzc1RoYW4iKTsKK30K
KworLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVBVEggY2FuIGJlIHVzZWQgb3V0c2lkZSBhIFRFU1Qs
IFRFU1RfRiwgb3IgdGVzdCBmaXh0dXJlLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE91dHNp
ZGVGaXh0dXJlKSB7CisgIERlYXRoVGVzdFN1YnJvdXRpbmUoKTsKK30KKworLy8gVGVzdHMgdGhh
dCBkZWF0aCB0ZXN0cyBjYW4gYmUgZG9uZSBpbnNpZGUgYSBsb29wLgorVEVTVF9GKFRlc3RGb3JE
ZWF0aFRlc3QsIEluc2lkZUxvb3ApIHsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsK
KyAgICBFWFBFQ1RfREVBVEgoRGllSWZMZXNzVGhhbigtMSwgaSksICJEaWVJZkxlc3NUaGFuIikg
PDwgIndoZXJlIGkgPT0gIiA8PCBpOworICB9Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBjb21wb3Vu
ZCBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RGb3JE
ZWF0aFRlc3QsIENvbXBvdW5kU3RhdGVtZW50KSB7CisgIEVYUEVDVF9ERUFUSCh7ICAvLyBOT0xJ
TlQKKyAgICBjb25zdCBpbnQgeCA9IDI7CisgICAgY29uc3QgaW50IHkgPSB4ICsgMTsKKyAgICBE
aWVJZkxlc3NUaGFuKHgsIHkpOworICB9LAorICAiRGllSWZMZXNzVGhhbiIpOworfQorCisvLyBU
ZXN0cyB0aGF0IGNvZGUgdGhhdCBkb2Vzbid0IGRpZSBjYXVzZXMgYSBkZWF0aCB0ZXN0IHRvIGZh
aWwuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRG9lc05vdERpZSkgeworICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgoRGllSWYoZmFsc2UpLCAiRGllSWYiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBkaWUiKTsKK30KKworLy8gVGVzdHMgdGhh
dCBhIGRlYXRoIHRlc3QgZmFpbHMgd2hlbiB0aGUgZXJyb3IgbWVzc2FnZSBpc24ndCBleHBlY3Rl
ZC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFcnJvck1lc3NhZ2VNaXNtYXRjaCkgeworICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfREVBVEgoRGll
SWYodHJ1ZSksICJEaWVJZkxlc3NUaGFuIikgPDwgIkVuZCBvZiBkZWF0aCB0ZXN0IG1lc3NhZ2Uu
IjsKKyAgfSwgImRpZWQgYnV0IG5vdCB3aXRoIGV4cGVjdGVkIGVycm9yIik7Cit9CisKKy8vIE9u
IGV4aXQsICphYm9ydGVkIHdpbGwgYmUgdHJ1ZSBpZmYgdGhlIEVYUEVDVF9ERUFUSCgpIHN0YXRl
bWVudAorLy8gYWJvcnRlZCB0aGUgZnVuY3Rpb24uCit2b2lkIEV4cGVjdERlYXRoVGVzdEhlbHBl
cihib29sKiBhYm9ydGVkKSB7CisgICphYm9ydGVkID0gdHJ1ZTsKKyAgRVhQRUNUX0RFQVRIKERp
ZUlmKGZhbHNlKSwgIkRpZUlmIik7ICAvLyBUaGlzIGFzc2VydGlvbiBzaG91bGQgZmFpbC4KKyAg
KmFib3J0ZWQgPSBmYWxzZTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEggZG9lc24n
dCBhYm9ydCB0aGUgdGVzdCBvbiBmYWlsdXJlLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEVY
UEVDVF9ERUFUSCkgeworICBib29sIGFib3J0ZWQgPSB0cnVlOworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShFeHBlY3REZWF0aFRlc3RIZWxwZXIoJmFib3J0ZWQpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZmFpbGVkIHRvIGRpZSIpOworICBFWFBFQ1RfRkFMU0UoYWJvcnRlZCk7Cit9
CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQVRIIGRvZXMgYWJvcnQgdGhlIHRlc3Qgb24gZmFp
bHVyZS4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBU1NFUlRfREVBVEgpIHsKKyAgc3RhdGlj
IGJvb2wgYWJvcnRlZDsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAg
YWJvcnRlZCA9IHRydWU7CisgICAgQVNTRVJUX0RFQVRIKERpZUlmKGZhbHNlKSwgIkRpZUlmIik7
ICAvLyBUaGlzIGFzc2VydGlvbiBzaG91bGQgZmFpbC4KKyAgICBhYm9ydGVkID0gZmFsc2U7Cisg
IH0sICJmYWlsZWQgdG8gZGllIik7CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOworfQorCisvLyBU
ZXN0cyB0aGF0IEVYUEVDVF9ERUFUSCBldmFsdWF0ZXMgdGhlIGFyZ3VtZW50cyBleGFjdGx5IG9u
Y2UuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU2luZ2xlRXZhbHVhdGlvbikgeworICBpbnQg
eCA9IDM7CisgIEVYUEVDVF9ERUFUSChEaWVJZigoKyt4KSA9PSA0KSwgIkRpZUlmIik7CisKKyAg
Y29uc3QgY2hhciogcmVnZXggPSAiRGllSWYiOworICBjb25zdCBjaGFyKiByZWdleF9zYXZlID0g
cmVnZXg7CisgIEVYUEVDVF9ERUFUSChEaWVJZkxlc3NUaGFuKDMsIDQpLCByZWdleCsrKTsKKyAg
RVhQRUNUX0VRKHJlZ2V4X3NhdmUgKyAxLCByZWdleCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgcnVu
LWF3YXkgZGVhdGggdGVzdHMgYXJlIHJlcG9ydGVkIGFzIGZhaWx1cmVzLgorVEVTVF9GKFRlc3RG
b3JEZWF0aFRlc3QsIFJ1bmF3YXlJc0ZhaWx1cmUpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoRVhQRUNUX0RFQVRIKHN0YXRpY19jYXN0PHZvaWQ+KDApLCAiRm9vIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZGllLiIpOworfQorCisvLyBUZXN0cyB0aGF0IGRl
YXRoIHRlc3RzIHJlcG9ydCBleGVjdXRpbmcgJ3JldHVybicgaW4gdGhlIHN0YXRlbWVudCBhcwor
Ly8gZmFpbHVyZS4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBSZXR1cm5Jc0ZhaWx1cmUpIHsK
KyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0RFQVRIKHJldHVybiwgIkJhciIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAiaWxsZWdhbCByZXR1cm4gaW4gdGVzdCBzdGF0ZW1lbnQuIik7
Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQlVHX0RFQVRIIHdvcmtzIGFzIGV4cGVjdGVk
LCB0aGF0IGlzLCB5b3UgY2FuIHN0cmVhbSBhCisvLyBtZXNzYWdlIHRvIGl0LCBhbmQgaW4gZGVi
dWcgbW9kZSBpdDoKKy8vIDEuIEFzc2VydHMgb24gZGVhdGguCisvLyAyLiBIYXMgbm8gc2lkZSBl
ZmZlY3QuCisvLworLy8gQW5kIGluIG9wdCBtb2RlLCBpdDoKKy8vIDEuICBIYXMgc2lkZSBlZmZl
Y3RzIGJ1dCBkb2VzIG5vdCBhc3NlcnQuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgVGVzdEV4
cGVjdERlYnVnRGVhdGgpIHsKKyAgaW50IHNpZGVlZmZlY3QgPSAwOworCisgIC8vIFB1dCB0aGUg
cmVnZXggaW4gYSBsb2NhbCB2YXJpYWJsZSB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgZ2V0IGFuICJ1
bnVzZWQiCisgIC8vIHdhcm5pbmcgaW4gb3B0IG1vZGUuCisgIGNvbnN0IGNoYXIqIHJlZ2V4ID0g
ImRlYXRoLipEaWVJbkRlYnVnRWxzZTEyIjsKKworICBFWFBFQ1RfREVCVUdfREVBVEgoRGllSW5E
ZWJ1Z0Vsc2UxMigmc2lkZWVmZmVjdCksIHJlZ2V4KQorICAgICAgPDwgIk11c3QgYWNjZXB0IGEg
c3RyZWFtZWQgbWVzc2FnZSI7CisKKyMgaWZkZWYgTkRFQlVHCisKKyAgLy8gQ2hlY2tzIHRoYXQg
dGhlIGFzc2lnbm1lbnQgb2NjdXJzIGluIG9wdCBtb2RlIChzaWRlZWZmZWN0KS4KKyAgRVhQRUNU
X0VRKDEyLCBzaWRlZWZmZWN0KTsKKworIyBlbHNlCisKKyAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFz
c2lnbm1lbnQgZG9lcyBub3Qgb2NjdXIgaW4gZGJnIG1vZGUgKG5vIHNpZGVlZmZlY3QpLgorICBF
WFBFQ1RfRVEoMCwgc2lkZWVmZmVjdCk7CisKKyMgZW5kaWYKK30KKworLy8gVGVzdHMgdGhhdCBB
U1NFUlRfREVCVUdfREVBVEggd29ya3MgYXMgZXhwZWN0ZWQsIHRoYXQgaXMsIHlvdSBjYW4gc3Ry
ZWFtIGEKKy8vIG1lc3NhZ2UgdG8gaXQsIGFuZCBpbiBkZWJ1ZyBtb2RlIGl0OgorLy8gMS4gQXNz
ZXJ0cyBvbiBkZWF0aC4KKy8vIDIuIEhhcyBubyBzaWRlIGVmZmVjdC4KKy8vCisvLyBBbmQgaW4g
b3B0IG1vZGUsIGl0OgorLy8gMS4gIEhhcyBzaWRlIGVmZmVjdHMgYnV0IGRvZXMgbm90IGFzc2Vy
dC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUZXN0QXNzZXJ0RGVidWdEZWF0aCkgeworICBp
bnQgc2lkZWVmZmVjdCA9IDA7CisKKyAgQVNTRVJUX0RFQlVHX0RFQVRIKERpZUluRGVidWdFbHNl
MTIoJnNpZGVlZmZlY3QpLCAiZGVhdGguKkRpZUluRGVidWdFbHNlMTIiKQorICAgICAgPDwgIk11
c3QgYWNjZXB0IGEgc3RyZWFtZWQgbWVzc2FnZSI7CisKKyMgaWZkZWYgTkRFQlVHCisKKyAgLy8g
Q2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgb2NjdXJzIGluIG9wdCBtb2RlIChzaWRlZWZmZWN0
KS4KKyAgRVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0KTsKKworIyBlbHNlCisKKyAgLy8gQ2hlY2tz
IHRoYXQgdGhlIGFzc2lnbm1lbnQgZG9lcyBub3Qgb2NjdXIgaW4gZGJnIG1vZGUgKG5vIHNpZGVl
ZmZlY3QpLgorICBFWFBFQ1RfRVEoMCwgc2lkZWVmZmVjdCk7CisKKyMgZW5kaWYKK30KKworIyBp
Zm5kZWYgTkRFQlVHCisKK3ZvaWQgRXhwZWN0RGVidWdEZWF0aEhlbHBlcihib29sKiBhYm9ydGVk
KSB7CisgICphYm9ydGVkID0gdHJ1ZTsKKyAgRVhQRUNUX0RFQlVHX0RFQVRIKHJldHVybiwgIiIp
IDw8ICJUaGlzIGlzIGV4cGVjdGVkIHRvIGZhaWwuIjsKKyAgKmFib3J0ZWQgPSBmYWxzZTsKK30K
KworIyAgaWYgR1RFU1RfT1NfV0lORE9XUworVEVTVChQb3BVcERlYXRoVGVzdCwgRG9lc05vdFNo
b3dQb3BVcE9uQWJvcnQpIHsKKyAgcHJpbnRmKCJUaGlzIHRlc3Qgc2hvdWxkIGJlIGNvbnNpZGVy
ZWQgZmFpbGluZyBpZiBpdCBzaG93cyAiCisgICAgICAgICAiYW55IHBvcC11cCBkaWFsb2dzLlxu
Iik7CisgIGZmbHVzaChzdGRvdXQpOworCisgIEVYUEVDVF9ERUFUSCh7CisgICAgdGVzdGluZzo6
R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA9IGZhbHNlOworICAgIGFib3J0KCk7CisgIH0s
ICIiKTsKK30KKyMgIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKy8vIFRlc3RzIHRoYXQg
RVhQRUNUX0RFQlVHX0RFQVRIIGluIGRlYnVnIG1vZGUgZG9lcyBub3QgYWJvcnQKKy8vIHRoZSBm
dW5jdGlvbi4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFeHBlY3REZWJ1Z0RlYXRoRG9lc05v
dEFib3J0KSB7CisgIGJvb2wgYWJvcnRlZCA9IHRydWU7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEV4cGVjdERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9GQUxT
RShhYm9ydGVkKTsKK30KKwordm9pZCBBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKGJvb2wqIGFib3J0
ZWQpIHsKKyAgKmFib3J0ZWQgPSB0cnVlOworICBHVEVTVF9MT0dfKElORk8pIDw8ICJCZWZvcmUg
QVNTRVJUX0RFQlVHX0RFQVRIIjsKKyAgQVNTRVJUX0RFQlVHX0RFQVRIKEdURVNUX0xPR18oSU5G
TykgPDwgIkluIEFTU0VSVF9ERUJVR19ERUFUSCI7IHJldHVybiwgIiIpCisgICAgICA8PCAiVGhp
cyBpcyBleHBlY3RlZCB0byBmYWlsLiI7CisgIEdURVNUX0xPR18oSU5GTykgPDwgIkFmdGVyIEFT
U0VSVF9ERUJVR19ERUFUSCI7CisgICphYm9ydGVkID0gZmFsc2U7Cit9CisKKy8vIFRlc3RzIHRo
YXQgQVNTRVJUX0RFQlVHX0RFQVRIIGluIGRlYnVnIG1vZGUgYWJvcnRzIHRoZSBmdW5jdGlvbiBv
bgorLy8gZmFpbHVyZS4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRo
QWJvcnRzKSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIi
KTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0
LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzMikgeworICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBh
Ym9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhI
ZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOworfQorCitURVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0czMpIHsKKyAgc3RhdGlj
IGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZhbHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShh
Ym9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhB
Ym9ydHM0KSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIi
KTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0
LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzNSkgeworICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBh
Ym9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhI
ZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOworfQorCitURVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0czYpIHsKKyAgc3RhdGlj
IGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZhbHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShh
Ym9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhB
Ym9ydHM3KSB7CisgIHN0YXRpYyBib29sIGFib3J0ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIi
KTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0
LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzOCkgeworICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBh
Ym9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhI
ZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOworfQorCitURVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0czkpIHsKKyAgc3RhdGlj
IGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZhbHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShh
Ym9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhB
Ym9ydHMxMCkgeworICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7Cisg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAi
Iik7CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOworfQorCisjIGVuZGlmICAvLyBfTkRFQlVHCisK
Ky8vIFRlc3RzIHRoZSAqX0VYSVQgZmFtaWx5IG9mIG1hY3JvcywgdXNpbmcgYSB2YXJpZXR5IG9m
IHByZWRpY2F0ZXMuCitzdGF0aWMgdm9pZCBUZXN0RXhpdE1hY3JvcygpIHsKKyAgRVhQRUNUX0VY
SVQoX2V4aXQoMSksICB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSwgICIiKTsKKyAgQVNTRVJU
X0VYSVQoX2V4aXQoNDIpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSg0MiksICIiKTsKKworIyBp
ZiBHVEVTVF9PU19XSU5ET1dTCisKKyAgLy8gT2YgYWxsIHNpZ25hbHMgZWZmZWN0cyBvbiB0aGUg
cHJvY2VzcyBleGl0IGNvZGUsIG9ubHkgdGhvc2Ugb2YgU0lHQUJSVAorICAvLyBhcmUgZG9jdW1l
bnRlZCBvbiBXaW5kb3dzLgorICAvLyBTZWUgaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4t
dXMvcXVlcnktYmkvbS9kd3d6a3Q0Yy4KKyAgRVhQRUNUX0VYSVQocmFpc2UoU0lHQUJSVCksIHRl
c3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDMpLCAiIikgPDwgImJfYXIiOworCisjIGVsaWYgIUdURVNU
X09TX0ZVQ0hTSUEKKworICAvLyBGdWNoc2lhIGhhcyBubyB1bml4IHNpZ25hbHMuCisgIEVYUEVD
VF9FWElUKHJhaXNlKFNJR0tJTEwpLCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChTSUdLSUxMKSwg
IiIpIDw8ICJmb28iOworICBBU1NFUlRfRVhJVChyYWlzZShTSUdVU1IyKSwgdGVzdGluZzo6S2ls
bGVkQnlTaWduYWwoU0lHVVNSMiksICIiKSA8PCAiYmFyIjsKKworICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfRVhJVChfZXhpdCgwKSwgdGVzdGluZzo6S2ls
bGVkQnlTaWduYWwoU0lHU0VHViksICIiKQorICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBl
Y3RlZCwgdG9vLiI7CisgIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIHRvby4iKTsKKwor
IyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9FWElUKHJhaXNlKFNJR1NFR1YpLCB0ZXN0aW5nOjpF
eGl0ZWRXaXRoQ29kZSgwKSwgIiIpCisgICAgICA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVk
LiI7CisgIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIik7Cit9CisKK1RFU1RfRihUZXN0
Rm9yRGVhdGhUZXN0LCBFeGl0TWFjcm9zKSB7CisgIFRlc3RFeGl0TWFjcm9zKCk7Cit9CisKK1RF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFeGl0TWFjcm9zVXNpbmdGb3JrKSB7CisgIHRlc3Rpbmc6
OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yaykgPSB0cnVlOworICBUZXN0RXhpdE1hY3Jv
cygpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgSW52YWxpZFN0eWxlKSB7CisgIHRl
c3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAicm9jb2NvIjsKKyAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX0RFQVRIKF9leGl0KDAp
LCAiIikgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4iOworICB9LCAiVGhpcyBmYWlsdXJl
IGlzIGV4cGVjdGVkLiIpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRGVhdGhUZXN0
RmFpbGVkT3V0cHV0KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkg
PSAiZmFzdCI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAorICAgICAgRVhQRUNUX0RFQVRI
KERpZVdpdGhNZXNzYWdlKCJkZWF0aFxuIiksCisgICAgICAgICAgICAgICAgICAgImV4cGVjdGVk
IG1lc3NhZ2UiKSwKKyAgICAgICJBY3R1YWwgbXNnOlxuIgorICAgICAgIlsgIERFQVRIICAgXSBk
ZWF0aFxuIik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEZWF0aFRlc3RVbmV4cGVj
dGVkUmV0dXJuT3V0cHV0KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHls
ZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAorICAgICAgRVhQRUNUX0RF
QVRIKHsKKyAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInJldHVybmluZ1xuIik7CisgICAgICAg
ICAgZmZsdXNoKHN0ZGVycik7CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9LCAiIiksCisg
ICAgICAiICAgIFJlc3VsdDogaWxsZWdhbCByZXR1cm4gaW4gdGVzdCBzdGF0ZW1lbnQuXG4iCisg
ICAgICAiIEVycm9yIG1zZzpcbiIKKyAgICAgICJbICBERUFUSCAgIF0gcmV0dXJuaW5nXG4iKTsK
K30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERlYXRoVGVzdEJhZEV4aXRDb2RlT3V0cHV0
KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7Cisg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAorICAgICAgRVhQRUNUX0VYSVQoRGllV2l0aE1lc3Nh
Z2UoImV4aXRpbmcgd2l0aCByYyAxXG4iKSwKKyAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkV4
aXRlZFdpdGhDb2RlKDMpLAorICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIG1lc3NhZ2UiKSwK
KyAgICAgICIgICAgUmVzdWx0OiBkaWVkIGJ1dCBub3Qgd2l0aCBleHBlY3RlZCBleGl0IGNvZGU6
XG4iCisgICAgICAiICAgICAgICAgICAgRXhpdGVkIHdpdGggZXhpdCBzdGF0dXMgMVxuIgorICAg
ICAgIkFjdHVhbCBtc2c6XG4iCisgICAgICAiWyAgREVBVEggICBdIGV4aXRpbmcgd2l0aCByYyAx
XG4iKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERlYXRoVGVzdE11bHRpTGluZU1h
dGNoRmFpbCkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZh
c3QiOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKKyAgICAgIEVYUEVDVF9ERUFUSChEaWVX
aXRoTWVzc2FnZSgibGluZSAxXG5saW5lIDJcbmxpbmUgM1xuIiksCisgICAgICAgICAgICAgICAg
ICAgImxpbmUgMVxueHl6XG5saW5lIDNcbiIpLAorICAgICAgIkFjdHVhbCBtc2c6XG4iCisgICAg
ICAiWyAgREVBVEggICBdIGxpbmUgMVxuIgorICAgICAgIlsgIERFQVRIICAgXSBsaW5lIDJcbiIK
KyAgICAgICJbICBERUFUSCAgIF0gbGluZSAzXG4iKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0
aFRlc3QsIERlYXRoVGVzdE11bHRpTGluZU1hdGNoUGFzcykgeworICB0ZXN0aW5nOjpHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOworICBFWFBFQ1RfREVBVEgoRGllV2l0aE1l
c3NhZ2UoImxpbmUgMVxubGluZSAyXG5saW5lIDNcbiIpLAorICAgICAgICAgICAgICAgImxpbmUg
MVxubGluZSAyXG5saW5lIDNcbiIpOworfQorCisvLyBBIERlYXRoVGVzdEZhY3RvcnkgdGhhdCBy
ZXR1cm5zIE1vY2tEZWF0aFRlc3RzLgorY2xhc3MgTW9ja0RlYXRoVGVzdEZhY3RvcnkgOiBwdWJs
aWMgRGVhdGhUZXN0RmFjdG9yeSB7CisgcHVibGljOgorICBNb2NrRGVhdGhUZXN0RmFjdG9yeSgp
OworICB2aXJ0dWFsIGJvb2wgQ3JlYXRlKGNvbnN0IGNoYXIqIHN0YXRlbWVudCwKKyAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpSRSogcmVnZXgsCisgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIERlYXRoVGVzdCoq
IHRlc3QpOworCisgIC8vIFNldHMgdGhlIHBhcmFtZXRlcnMgZm9yIHN1YnNlcXVlbnQgY2FsbHMg
dG8gQ3JlYXRlLgorICB2b2lkIFNldFBhcmFtZXRlcnMoYm9vbCBjcmVhdGUsIERlYXRoVGVzdDo6
VGVzdFJvbGUgcm9sZSwKKyAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0dXMsIGJvb2wgcGFz
c2VkKTsKKworICAvLyBBY2Nlc3NvcnMuCisgIGludCBBc3N1bWVSb2xlQ2FsbHMoKSBjb25zdCB7
IHJldHVybiBhc3N1bWVfcm9sZV9jYWxsc187IH0KKyAgaW50IFdhaXRDYWxscygpIGNvbnN0IHsg
cmV0dXJuIHdhaXRfY2FsbHNfOyB9CisgIHNpemVfdCBQYXNzZWRDYWxscygpIGNvbnN0IHsgcmV0
dXJuIHBhc3NlZF9hcmdzXy5zaXplKCk7IH0KKyAgYm9vbCBQYXNzZWRBcmd1bWVudChpbnQgbikg
Y29uc3QgeyByZXR1cm4gcGFzc2VkX2FyZ3NfW25dOyB9CisgIHNpemVfdCBBYm9ydENhbGxzKCkg
Y29uc3QgeyByZXR1cm4gYWJvcnRfYXJnc18uc2l6ZSgpOyB9CisgIERlYXRoVGVzdDo6QWJvcnRS
ZWFzb24gQWJvcnRBcmd1bWVudChpbnQgbikgY29uc3QgeworICAgIHJldHVybiBhYm9ydF9hcmdz
X1tuXTsKKyAgfQorICBib29sIFRlc3REZWxldGVkKCkgY29uc3QgeyByZXR1cm4gdGVzdF9kZWxl
dGVkXzsgfQorCisgcHJpdmF0ZToKKyAgZnJpZW5kIGNsYXNzIE1vY2tEZWF0aFRlc3Q7CisgIC8v
IElmIHRydWUsIENyZWF0ZSB3aWxsIHJldHVybiBhIE1vY2tEZWF0aFRlc3Q7IG90aGVyd2lzZSBp
dCByZXR1cm5zCisgIC8vIE5VTEwuCisgIGJvb2wgY3JlYXRlXzsKKyAgLy8gVGhlIHZhbHVlIGEg
TW9ja0RlYXRoVGVzdCB3aWxsIHJldHVybiBmcm9tIGl0cyBBc3N1bWVSb2xlIG1ldGhvZC4KKyAg
RGVhdGhUZXN0OjpUZXN0Um9sZSByb2xlXzsKKyAgLy8gVGhlIHZhbHVlIGEgTW9ja0RlYXRoVGVz
dCB3aWxsIHJldHVybiBmcm9tIGl0cyBXYWl0IG1ldGhvZC4KKyAgaW50IHN0YXR1c187CisgIC8v
IFRoZSB2YWx1ZSBhIE1vY2tEZWF0aFRlc3Qgd2lsbCByZXR1cm4gZnJvbSBpdHMgUGFzc2VkIG1l
dGhvZC4KKyAgYm9vbCBwYXNzZWRfOworCisgIC8vIE51bWJlciBvZiB0aW1lcyBBc3N1bWVSb2xl
IHdhcyBjYWxsZWQuCisgIGludCBhc3N1bWVfcm9sZV9jYWxsc187CisgIC8vIE51bWJlciBvZiB0
aW1lcyBXYWl0IHdhcyBjYWxsZWQuCisgIGludCB3YWl0X2NhbGxzXzsKKyAgLy8gVGhlIGFyZ3Vt
ZW50cyB0byB0aGUgY2FsbHMgdG8gUGFzc2VkIHNpbmNlIHRoZSBsYXN0IGNhbGwgdG8KKyAgLy8g
U2V0UGFyYW1ldGVycy4KKyAgc3RkOjp2ZWN0b3I8Ym9vbD4gcGFzc2VkX2FyZ3NfOworICAvLyBU
aGUgYXJndW1lbnRzIHRvIHRoZSBjYWxscyB0byBBYm9ydCBzaW5jZSB0aGUgbGFzdCBjYWxsIHRv
CisgIC8vIFNldFBhcmFtZXRlcnMuCisgIHN0ZDo6dmVjdG9yPERlYXRoVGVzdDo6QWJvcnRSZWFz
b24+IGFib3J0X2FyZ3NfOworICAvLyBUcnVlIGlmIHRoZSBsYXN0IE1vY2tEZWF0aFRlc3QgcmV0
dXJuZWQgYnkgQ3JlYXRlIGhhcyBiZWVuCisgIC8vIGRlbGV0ZWQuCisgIGJvb2wgdGVzdF9kZWxl
dGVkXzsKK307CisKKworLy8gQSBEZWF0aFRlc3QgaW1wbGVtZW50YXRpb24gdXNlZnVsIGluIHRl
c3RpbmcuICBJdCByZXR1cm5zIHZhbHVlcyBzZXQKKy8vIGF0IGl0cyBjcmVhdGlvbiBmcm9tIGl0
cyB2YXJpb3VzIGluaGVyaXRlZCBEZWF0aFRlc3QgbWV0aG9kcywgYW5kCisvLyByZXBvcnRzIGNh
bGxzIHRvIHRob3NlIG1ldGhvZHMgdG8gaXRzIHBhcmVudCBNb2NrRGVhdGhUZXN0RmFjdG9yeQor
Ly8gb2JqZWN0LgorY2xhc3MgTW9ja0RlYXRoVGVzdCA6IHB1YmxpYyBEZWF0aFRlc3QgeworIHB1
YmxpYzoKKyAgTW9ja0RlYXRoVGVzdChNb2NrRGVhdGhUZXN0RmFjdG9yeSAqcGFyZW50LAorICAg
ICAgICAgICAgICAgIFRlc3RSb2xlIHJvbGUsIGludCBzdGF0dXMsIGJvb2wgcGFzc2VkKSA6Cisg
ICAgICBwYXJlbnRfKHBhcmVudCksIHJvbGVfKHJvbGUpLCBzdGF0dXNfKHN0YXR1cyksIHBhc3Nl
ZF8ocGFzc2VkKSB7CisgIH0KKyAgdmlydHVhbCB+TW9ja0RlYXRoVGVzdCgpIHsKKyAgICBwYXJl
bnRfLT50ZXN0X2RlbGV0ZWRfID0gdHJ1ZTsKKyAgfQorICB2aXJ0dWFsIFRlc3RSb2xlIEFzc3Vt
ZVJvbGUoKSB7CisgICAgKytwYXJlbnRfLT5hc3N1bWVfcm9sZV9jYWxsc187CisgICAgcmV0dXJu
IHJvbGVfOworICB9CisgIHZpcnR1YWwgaW50IFdhaXQoKSB7CisgICAgKytwYXJlbnRfLT53YWl0
X2NhbGxzXzsKKyAgICByZXR1cm4gc3RhdHVzXzsKKyAgfQorICB2aXJ0dWFsIGJvb2wgUGFzc2Vk
KGJvb2wgZXhpdF9zdGF0dXNfb2spIHsKKyAgICBwYXJlbnRfLT5wYXNzZWRfYXJnc18ucHVzaF9i
YWNrKGV4aXRfc3RhdHVzX29rKTsKKyAgICByZXR1cm4gcGFzc2VkXzsKKyAgfQorICB2aXJ0dWFs
IHZvaWQgQWJvcnQoQWJvcnRSZWFzb24gcmVhc29uKSB7CisgICAgcGFyZW50Xy0+YWJvcnRfYXJn
c18ucHVzaF9iYWNrKHJlYXNvbik7CisgIH0KKworIHByaXZhdGU6CisgIE1vY2tEZWF0aFRlc3RG
YWN0b3J5KiBjb25zdCBwYXJlbnRfOworICBjb25zdCBUZXN0Um9sZSByb2xlXzsKKyAgY29uc3Qg
aW50IHN0YXR1c187CisgIGNvbnN0IGJvb2wgcGFzc2VkXzsKK307CisKKworLy8gTW9ja0RlYXRo
VGVzdEZhY3RvcnkgY29uc3RydWN0b3IuCitNb2NrRGVhdGhUZXN0RmFjdG9yeTo6TW9ja0RlYXRo
VGVzdEZhY3RvcnkoKQorICAgIDogY3JlYXRlXyh0cnVlKSwKKyAgICAgIHJvbGVfKERlYXRoVGVz
dDo6T1ZFUlNFRV9URVNUKSwKKyAgICAgIHN0YXR1c18oMCksCisgICAgICBwYXNzZWRfKHRydWUp
LAorICAgICAgYXNzdW1lX3JvbGVfY2FsbHNfKDApLAorICAgICAgd2FpdF9jYWxsc18oMCksCisg
ICAgICBwYXNzZWRfYXJnc18oKSwKKyAgICAgIGFib3J0X2FyZ3NfKCkgeworfQorCisKKy8vIFNl
dHMgdGhlIHBhcmFtZXRlcnMgZm9yIHN1YnNlcXVlbnQgY2FsbHMgdG8gQ3JlYXRlLgordm9pZCBN
b2NrRGVhdGhUZXN0RmFjdG9yeTo6U2V0UGFyYW1ldGVycyhib29sIGNyZWF0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVhdGhUZXN0OjpUZXN0Um9sZSByb2xl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdHVzLCBi
b29sIHBhc3NlZCkgeworICBjcmVhdGVfID0gY3JlYXRlOworICByb2xlXyA9IHJvbGU7CisgIHN0
YXR1c18gPSBzdGF0dXM7CisgIHBhc3NlZF8gPSBwYXNzZWQ7CisKKyAgYXNzdW1lX3JvbGVfY2Fs
bHNfID0gMDsKKyAgd2FpdF9jYWxsc18gPSAwOworICBwYXNzZWRfYXJnc18uY2xlYXIoKTsKKyAg
YWJvcnRfYXJnc18uY2xlYXIoKTsKK30KKworCisvLyBTZXRzIHRlc3QgdG8gTlVMTCAoaWYgY3Jl
YXRlXyBpcyBmYWxzZSkgb3IgdG8gdGhlIGFkZHJlc3Mgb2YgYSBuZXcKKy8vIE1vY2tEZWF0aFRl
c3Qgb2JqZWN0IHdpdGggcGFyYW1ldGVycyB0YWtlbiBmcm9tIHRoZSBsYXN0IGNhbGwKKy8vIHRv
IFNldFBhcmFtZXRlcnMgKGlmIGNyZWF0ZV8gaXMgdHJ1ZSkuICBBbHdheXMgcmV0dXJucyB0cnVl
LgorYm9vbCBNb2NrRGVhdGhUZXN0RmFjdG9yeTo6Q3JlYXRlKGNvbnN0IGNoYXIqIC8qc3RhdGVt
ZW50Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6UkUqIC8qcmVnZXgqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiAvKmZpbGUqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgLypsaW5lKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVh
dGhUZXN0KiogdGVzdCkgeworICB0ZXN0X2RlbGV0ZWRfID0gZmFsc2U7CisgIGlmIChjcmVhdGVf
KSB7CisgICAgKnRlc3QgPSBuZXcgTW9ja0RlYXRoVGVzdCh0aGlzLCByb2xlXywgc3RhdHVzXywg
cGFzc2VkXyk7CisgIH0gZWxzZSB7CisgICAgKnRlc3QgPSBOVUxMOworICB9CisgIHJldHVybiB0
cnVlOworfQorCisvLyBBIHRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyB0aGUgbG9naWMgb2YgdGhl
IEdURVNUX0RFQVRIX1RFU1RfIG1hY3JvLgorLy8gSXQgaW5zdGFsbHMgYSBNb2NrRGVhdGhUZXN0
RmFjdG9yeSB0aGF0IGlzIHVzZWQgZm9yIHRoZSBkdXJhdGlvbgorLy8gb2YgdGhlIHRlc3QgY2Fz
ZS4KK2NsYXNzIE1hY3JvTG9naWNEZWF0aFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cisg
cHJvdGVjdGVkOgorICBzdGF0aWMgdGVzdGluZzo6aW50ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RG
YWN0b3J5KiByZXBsYWNlcl87CisgIHN0YXRpYyBNb2NrRGVhdGhUZXN0RmFjdG9yeSogZmFjdG9y
eV87CisKKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKKyAgICBmYWN0b3J5XyA9IG5l
dyBNb2NrRGVhdGhUZXN0RmFjdG9yeTsKKyAgICByZXBsYWNlcl8gPSBuZXcgdGVzdGluZzo6aW50
ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KGZhY3RvcnlfKTsKKyAgfQorCisgIHN0YXRp
YyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7CisgICAgZGVsZXRlIHJlcGxhY2VyXzsKKyAgICBy
ZXBsYWNlcl8gPSBOVUxMOworICAgIGRlbGV0ZSBmYWN0b3J5XzsKKyAgICBmYWN0b3J5XyA9IE5V
TEw7CisgIH0KKworICAvLyBSdW5zIGEgZGVhdGggdGVzdCB0aGF0IGJyZWFrcyB0aGUgcnVsZXMg
YnkgcmV0dXJuaW5nLiAgU3VjaCBhIGRlYXRoCisgIC8vIHRlc3QgY2Fubm90IGJlIHJ1biBkaXJl
Y3RseSBmcm9tIGEgdGVzdCByb3V0aW5lIHRoYXQgdXNlcyBhCisgIC8vIE1vY2tEZWF0aFRlc3Qs
IG9yIHRoZSByZW1haW5kZXIgb2YgdGhlIHJvdXRpbmUgd2lsbCBub3QgYmUgZXhlY3V0ZWQuCisg
IHN0YXRpYyB2b2lkIFJ1blJldHVybmluZ0RlYXRoVGVzdChib29sKiBmbGFnKSB7CisgICAgQVNT
RVJUX0RFQVRIKHsgIC8vIE5PTElOVAorICAgICAgKmZsYWcgPSB0cnVlOworICAgICAgcmV0dXJu
OworICAgIH0sICIiKTsKKyAgfQorfTsKKwordGVzdGluZzo6aW50ZXJuYWw6OlJlcGxhY2VEZWF0
aFRlc3RGYWN0b3J5KiBNYWNyb0xvZ2ljRGVhdGhUZXN0OjpyZXBsYWNlcl8KKyAgICA9IE5VTEw7
CitNb2NrRGVhdGhUZXN0RmFjdG9yeSogTWFjcm9Mb2dpY0RlYXRoVGVzdDo6ZmFjdG9yeV8gPSBO
VUxMOworCisKKy8vIFRlc3QgdGhhdCBub3RoaW5nIGhhcHBlbnMgd2hlbiB0aGUgZmFjdG9yeSBk
b2Vzbid0IHJldHVybiBhIERlYXRoVGVzdDoKK1RFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBO
b3RoaW5nSGFwcGVucykgeworICBib29sIGZsYWcgPSBmYWxzZTsKKyAgZmFjdG9yeV8tPlNldFBh
cmFtZXRlcnMoZmFsc2UsIERlYXRoVGVzdDo6T1ZFUlNFRV9URVNULCAwLCB0cnVlKTsKKyAgRVhQ
RUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7CisgIEVYUEVDVF9GQUxTRShmbGFnKTsKKyAgRVhQ
RUNUX0VRKDAsIGZhY3RvcnlfLT5Bc3N1bWVSb2xlQ2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwLCBm
YWN0b3J5Xy0+V2FpdENhbGxzKCkpOworICBFWFBFQ1RfRVEoMFUsIGZhY3RvcnlfLT5QYXNzZWRD
YWxscygpKTsKKyAgRVhQRUNUX0VRKDBVLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKKyAgRVhQ
RUNUX0ZBTFNFKGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsKK30KKworLy8gVGVzdCB0aGF0IHRo
ZSBwYXJlbnQgcHJvY2VzcyBkb2Vzbid0IHJ1biB0aGUgZGVhdGggdGVzdCBjb2RlLAorLy8gYW5k
IHRoYXQgdGhlIFBhc3NlZCBtZXRob2QgcmV0dXJucyBmYWxzZSB3aGVuIHRoZSAoc2ltdWxhdGVk
KQorLy8gY2hpbGQgcHJvY2VzcyBleGl0cyB3aXRoIHN0YXR1cyAwOgorVEVTVF9GKE1hY3JvTG9n
aWNEZWF0aFRlc3QsIENoaWxkRXhpdHNTdWNjZXNzZnVsbHkpIHsKKyAgYm9vbCBmbGFnID0gZmFs
c2U7CisgIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6T1ZFUlNFRV9U
RVNULCAwLCB0cnVlKTsKKyAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7CisgIEVYUEVD
VF9GQUxTRShmbGFnKTsKKyAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5Bc3N1bWVSb2xlQ2FsbHMo
KSk7CisgIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+V2FpdENhbGxzKCkpOworICBBU1NFUlRfRVEo
MVUsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKKyAgRVhQRUNUX0ZBTFNFKGZhY3RvcnlfLT5Q
YXNzZWRBcmd1bWVudCgwKSk7CisgIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMo
KSk7CisgIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsKK30KKworLy8gVGVz
dHMgdGhhdCB0aGUgUGFzc2VkIG1ldGhvZCB3YXMgZ2l2ZW4gdGhlIGFyZ3VtZW50ICJ0cnVlIiB3
aGVuCisvLyB0aGUgKHNpbXVsYXRlZCkgY2hpbGQgcHJvY2VzcyBleGl0cyB3aXRoIHN0YXR1cyAx
OgorVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxkRXhpdHNVbnN1Y2Nlc3NmdWxseSkg
eworICBib29sIGZsYWcgPSBmYWxzZTsKKyAgZmFjdG9yeV8tPlNldFBhcmFtZXRlcnModHJ1ZSwg
RGVhdGhUZXN0OjpPVkVSU0VFX1RFU1QsIDEsIHRydWUpOworICBFWFBFQ1RfREVBVEgoZmxhZyA9
IHRydWUsICIiKTsKKyAgRVhQRUNUX0ZBTFNFKGZsYWcpOworICBFWFBFQ1RfRVEoMSwgZmFjdG9y
eV8tPkFzc3VtZVJvbGVDYWxscygpKTsKKyAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5XYWl0Q2Fs
bHMoKSk7CisgIEFTU0VSVF9FUSgxVSwgZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOworICBFWFBF
Q1RfVFJVRShmYWN0b3J5Xy0+UGFzc2VkQXJndW1lbnQoMCkpOworICBFWFBFQ1RfRVEoMFUsIGZh
Y3RvcnlfLT5BYm9ydENhbGxzKCkpOworICBFWFBFQ1RfVFJVRShmYWN0b3J5Xy0+VGVzdERlbGV0
ZWQoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIChzaW11bGF0ZWQpIGNoaWxkIHByb2Nlc3Mg
ZXhlY3V0ZXMgdGhlIGRlYXRoIHRlc3QKKy8vIGNvZGUsIGFuZCBpcyBhYm9ydGVkIHdpdGggdGhl
IGNvcnJlY3QgQWJvcnRSZWFzb24gaWYgaXQKKy8vIGV4ZWN1dGVzIGEgcmV0dXJuIHN0YXRlbWVu
dC4KK1RFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBDaGlsZFBlcmZvcm1zUmV0dXJuKSB7Cisg
IGJvb2wgZmxhZyA9IGZhbHNlOworICBmYWN0b3J5Xy0+U2V0UGFyYW1ldGVycyh0cnVlLCBEZWF0
aFRlc3Q6OkVYRUNVVEVfVEVTVCwgMCwgdHJ1ZSk7CisgIFJ1blJldHVybmluZ0RlYXRoVGVzdCgm
ZmxhZyk7CisgIEVYUEVDVF9UUlVFKGZsYWcpOworICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFz
c3VtZVJvbGVDYWxscygpKTsKKyAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7
CisgIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOworICBFWFBFQ1RfRVEo
MVUsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOworICBFWFBFQ1RfRVEoRGVhdGhUZXN0OjpURVNU
X0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQsCisgICAgICAgICAgICBmYWN0b3J5Xy0+QWJv
cnRBcmd1bWVudCgwKSk7CisgIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsK
K30KKworLy8gVGVzdHMgdGhhdCB0aGUgKHNpbXVsYXRlZCkgY2hpbGQgcHJvY2VzcyBpcyBhYm9y
dGVkIHdpdGggdGhlCisvLyBjb3JyZWN0IEFib3J0UmVhc29uIGlmIGl0IGRvZXMgbm90IGRpZS4K
K1RFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBDaGlsZERvZXNOb3REaWUpIHsKKyAgYm9vbCBm
bGFnID0gZmFsc2U7CisgIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6
RVhFQ1VURV9URVNULCAwLCB0cnVlKTsKKyAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7
CisgIEVYUEVDVF9UUlVFKGZsYWcpOworICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJv
bGVDYWxscygpKTsKKyAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7CisgIEVY
UEVDVF9FUSgwVSwgZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOworICAvLyBUaGlzIHRpbWUgdGhl
cmUgYXJlIHR3byBjYWxscyB0byBBYm9ydDogb25lIHNpbmNlIHRoZSB0ZXN0IGRpZG4ndAorICAv
LyBkaWUsIGFuZCBhbm90aGVyIGZyb20gdGhlIFJldHVyblNlbnRpbmVsIHdoZW4gaXQncyBkZXN0
cm95ZWQuICBUaGUKKyAgLy8gc2VudGluZWwgbm9ybWFsbHkgaXNuJ3QgZGVzdHJveWVkIGlmIGEg
dGVzdCBkb2Vzbid0IGRpZSwgc2luY2UKKyAgLy8gX2V4aXQoMikgaXMgY2FsbGVkIGluIHRoYXQg
Y2FzZSBieSBGb3JraW5nRGVhdGhUZXN0LCBidXQgbm90IGJ5CisgIC8vIG91ciBNb2NrRGVhdGhU
ZXN0LgorICBBU1NFUlRfRVEoMlUsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOworICBFWFBFQ1Rf
RVEoRGVhdGhUZXN0OjpURVNUX0RJRF9OT1RfRElFLAorICAgICAgICAgICAgZmFjdG9yeV8tPkFi
b3J0QXJndW1lbnQoMCkpOworICBFWFBFQ1RfRVEoRGVhdGhUZXN0OjpURVNUX0VOQ09VTlRFUkVE
X1JFVFVSTl9TVEFURU1FTlQsCisgICAgICAgICAgICBmYWN0b3J5Xy0+QWJvcnRBcmd1bWVudCgx
KSk7CisgIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsKK30KKworLy8gVGVz
dHMgdGhhdCBhIHN1Y2Nlc3NmdWwgZGVhdGggdGVzdCBkb2VzIG5vdCByZWdpc3RlciBhIHN1Y2Nl
c3NmdWwKKy8vIHRlc3QgcGFydC4KK1RFU1QoU3VjY2Vzc1JlZ2lzdHJhdGlvbkRlYXRoVGVzdCwg
Tm9TdWNjZXNzUGFydCkgeworICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKTsKKyAgRVhQRUNU
X0VRKDAsIEdldFVuaXRUZXN0SW1wbCgpLT5jdXJyZW50X3Rlc3RfcmVzdWx0KCktPnRvdGFsX3Bh
cnRfY291bnQoKSk7Cit9CisKK1RFU1QoU3RyZWFtaW5nQXNzZXJ0aW9uc0RlYXRoVGVzdCwgRGVh
dGhUZXN0KSB7CisgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8ICJ1bmV4cGVjdGVkIGZh
aWx1cmUiOworICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIiKSA8PCAidW5leHBlY3RlZCBmYWls
dXJlIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNU
X0RFQVRIKF9leGl0KDApLCAiIikgPDwgImV4cGVjdGVkIGZhaWx1cmUiOworICB9LCAiZXhwZWN0
ZWQgZmFpbHVyZSIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBB
U1NFUlRfREVBVEgoX2V4aXQoMCksICIiKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSI7CisgIH0sICJl
eHBlY3RlZCBmYWlsdXJlIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgR2V0TGFzdEVycm5vRGVzY3Jp
cHRpb24gcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgd2hlbiB0aGUKKy8vIGxhc3QgZXJyb3IgaXMg
MCBhbmQgbm9uLWVtcHR5IHN0cmluZyB3aGVuIGl0IGlzIG5vbi16ZXJvLgorVEVTVChHZXRMYXN0
RXJybm9EZXNjcmlwdGlvbiwgR2V0TGFzdEVycm5vRGVzY3JpcHRpb25Xb3JrcykgeworICBlcnJu
byA9IEVOT0VOVDsKKyAgRVhQRUNUX1NUUk5FKCIiLCBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigp
LmNfc3RyKCkpOworICBlcnJubyA9IDA7CisgIEVYUEVDVF9TVFJFUSgiIiwgR2V0TGFzdEVycm5v
RGVzY3JpcHRpb24oKS5jX3N0cigpKTsKK30KKworIyBpZiBHVEVTVF9PU19XSU5ET1dTCitURVNU
KEF1dG9IYW5kbGVUZXN0LCBBdXRvSGFuZGxlV29ya3MpIHsKKyAgSEFORExFIGhhbmRsZSA9IDo6
Q3JlYXRlRXZlbnQoTlVMTCwgRkFMU0UsIEZBTFNFLCBOVUxMKTsKKyAgQVNTRVJUX05FKElOVkFM
SURfSEFORExFX1ZBTFVFLCBoYW5kbGUpOworCisgIC8vIFRlc3RzIHRoYXQgdGhlIEF1dG9IYW5k
bGUgaXMgY29ycmVjdGx5IGluaXRpYWxpemVkIHdpdGggYSBoYW5kbGUuCisgIHRlc3Rpbmc6Omlu
dGVybmFsOjpBdXRvSGFuZGxlIGF1dG9faGFuZGxlKGhhbmRsZSk7CisgIEVYUEVDVF9FUShoYW5k
bGUsIGF1dG9faGFuZGxlLkdldCgpKTsKKworICAvLyBUZXN0cyB0aGF0IFJlc2V0IGFzc2lnbnMg
SU5WQUxJRF9IQU5ETEVfVkFMVUUuCisgIC8vIE5vdGUgdGhhdCB0aGlzIGNhbm5vdCB2ZXJpZnkg
d2hldGhlciB0aGUgb3JpZ2luYWwgaGFuZGxlIGlzIGNsb3NlZC4KKyAgYXV0b19oYW5kbGUuUmVz
ZXQoKTsKKyAgRVhQRUNUX0VRKElOVkFMSURfSEFORExFX1ZBTFVFLCBhdXRvX2hhbmRsZS5HZXQo
KSk7CisKKyAgLy8gVGVzdHMgdGhhdCBSZXNldCBhc3NpZ25zIHRoZSBuZXcgaGFuZGxlLgorICAv
LyBOb3RlIHRoYXQgdGhpcyBjYW5ub3QgdmVyaWZ5IHdoZXRoZXIgdGhlIG9yaWdpbmFsIGhhbmRs
ZSBpcyBjbG9zZWQuCisgIGhhbmRsZSA9IDo6Q3JlYXRlRXZlbnQoTlVMTCwgRkFMU0UsIEZBTFNF
LCBOVUxMKTsKKyAgQVNTRVJUX05FKElOVkFMSURfSEFORExFX1ZBTFVFLCBoYW5kbGUpOworICBh
dXRvX2hhbmRsZS5SZXNldChoYW5kbGUpOworICBFWFBFQ1RfRVEoaGFuZGxlLCBhdXRvX2hhbmRs
ZS5HZXQoKSk7CisKKyAgLy8gVGVzdHMgdGhhdCBBdXRvSGFuZGxlIGNvbnRhaW5zIElOVkFMSURf
SEFORExFX1ZBTFVFIGJ5IGRlZmF1bHQuCisgIHRlc3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxl
IGF1dG9faGFuZGxlMjsKKyAgRVhQRUNUX0VRKElOVkFMSURfSEFORExFX1ZBTFVFLCBhdXRvX2hh
bmRsZTIuR2V0KCkpOworfQorIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjIGlmIEdU
RVNUX09TX1dJTkRPV1MKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCBCaWdnZXN0UGFyc2FibGU7
Cit0eXBlZGVmIHNpZ25lZCBfX2ludDY0IEJpZ2dlc3RTaWduZWRQYXJzYWJsZTsKKyMgZWxzZQor
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgQmlnZ2VzdFBhcnNhYmxlOwordHlwZWRlZiBzaWdu
ZWQgbG9uZyBsb25nIEJpZ2dlc3RTaWduZWRQYXJzYWJsZTsKKyMgZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKKworLy8gV2UgY2Fubm90IHVzZSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgo
KSBhcyBpdCBjbGFzaGVzIHdpdGggdGhlCisvLyBtYXgoKSBtYWNybyBkZWZpbmVkIGJ5IDx3aW5k
b3dzLmg+LgorY29uc3QgQmlnZ2VzdFBhcnNhYmxlIGtCaWdnZXN0UGFyc2FibGVNYXggPSBVTExP
TkdfTUFYOworY29uc3QgQmlnZ2VzdFNpZ25lZFBhcnNhYmxlIGtCaWdnZXN0U2lnbmVkUGFyc2Fi
bGVNYXggPSBMTE9OR19NQVg7CisKK1RFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgUmVqZWN0
c0ludmFsaWRGb3JtYXQpIHsKKyAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7CisKKyAgLy8g
UmVqZWN0cyBub24tbnVtYmVycy4KKyAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcigi
bm9uLW51bWJlciBzdHJpbmciLCAmcmVzdWx0KSk7CisKKyAgLy8gUmVqZWN0cyBudW1iZXJzIHdp
dGggd2hpdGVzcGFjZSBwcmVmaXguCisgIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIo
IiAxMjMiLCAmcmVzdWx0KSk7CisKKyAgLy8gUmVqZWN0cyBuZWdhdGl2ZSBudW1iZXJzLgorICBF
WFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCItMTIzIiwgJnJlc3VsdCkpOworCisgIC8v
IFJlamVjdHMgbnVtYmVycyBzdGFydGluZyB3aXRoIGEgcGx1cyBzaWduLgorICBFWFBFQ1RfRkFM
U0UoUGFyc2VOYXR1cmFsTnVtYmVyKCIrMTIzIiwgJnJlc3VsdCkpOworICBlcnJubyA9IDA7Cit9
CisKK1RFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgUmVqZWN0c092ZXJmbG93bk51bWJlcnMp
IHsKKyAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7CisKKyAgRVhQRUNUX0ZBTFNFKFBhcnNl
TmF0dXJhbE51bWJlcigiOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkiLCAmcmVzdWx0KSk7CisKKyAg
c2lnbmVkIGNoYXIgY2hhcl9yZXN1bHQgPSAwOworICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFs
TnVtYmVyKCIyMDAiLCAmY2hhcl9yZXN1bHQpKTsKKyAgZXJybm8gPSAwOworfQorCitURVNUKFBh
cnNlTmF0dXJhbE51bWJlclRlc3QsIEFjY2VwdHNWYWxpZE51bWJlcnMpIHsKKyAgQmlnZ2VzdFBh
cnNhYmxlIHJlc3VsdCA9IDA7CisKKyAgcmVzdWx0ID0gMDsKKyAgQVNTRVJUX1RSVUUoUGFyc2VO
YXR1cmFsTnVtYmVyKCIxMjMiLCAmcmVzdWx0KSk7CisgIEVYUEVDVF9FUSgxMjNVLCByZXN1bHQp
OworCisgIC8vIENoZWNrIDAgYXMgYW4gZWRnZSBjYXNlLgorICByZXN1bHQgPSAxOworICBBU1NF
UlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjAiLCAmcmVzdWx0KSk7CisgIEVYUEVDVF9FUSgw
VSwgcmVzdWx0KTsKKworICByZXN1bHQgPSAxOworICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxO
dW1iZXIoIjAwMDAwIiwgJnJlc3VsdCkpOworICBFWFBFQ1RfRVEoMFUsIHJlc3VsdCk7Cit9CisK
K1RFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgQWNjZXB0c1R5cGVMaW1pdHMpIHsKKyAgTWVz
c2FnZSBtc2c7CisgIG1zZyA8PCBrQmlnZ2VzdFBhcnNhYmxlTWF4OworCisgIEJpZ2dlc3RQYXJz
YWJsZSByZXN1bHQgPSAwOworICBFWFBFQ1RfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIobXNnLkdl
dFN0cmluZygpLCAmcmVzdWx0KSk7CisgIEVYUEVDVF9FUShrQmlnZ2VzdFBhcnNhYmxlTWF4LCBy
ZXN1bHQpOworCisgIE1lc3NhZ2UgbXNnMjsKKyAgbXNnMiA8PCBrQmlnZ2VzdFNpZ25lZFBhcnNh
YmxlTWF4OworCisgIEJpZ2dlc3RTaWduZWRQYXJzYWJsZSBzaWduZWRfcmVzdWx0ID0gMDsKKyAg
RVhQRUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKG1zZzIuR2V0U3RyaW5nKCksICZzaWduZWRf
cmVzdWx0KSk7CisgIEVYUEVDVF9FUShrQmlnZ2VzdFNpZ25lZFBhcnNhYmxlTWF4LCBzaWduZWRf
cmVzdWx0KTsKKworICBNZXNzYWdlIG1zZzM7CisgIG1zZzMgPDwgSU5UX01BWDsKKworICBpbnQg
aW50X3Jlc3VsdCA9IDA7CisgIEVYUEVDVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihtc2czLkdl
dFN0cmluZygpLCAmaW50X3Jlc3VsdCkpOworICBFWFBFQ1RfRVEoSU5UX01BWCwgaW50X3Jlc3Vs
dCk7CisKKyAgTWVzc2FnZSBtc2c0OworICBtc2c0IDw8IFVJTlRfTUFYOworCisgIHVuc2lnbmVk
IGludCB1aW50X3Jlc3VsdCA9IDA7CisgIEVYUEVDVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlciht
c2c0LkdldFN0cmluZygpLCAmdWludF9yZXN1bHQpKTsKKyAgRVhQRUNUX0VRKFVJTlRfTUFYLCB1
aW50X3Jlc3VsdCk7Cit9CisKK1RFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgV29ya3NGb3JT
aG9ydGVySW50ZWdlcnMpIHsKKyAgc2hvcnQgc2hvcnRfcmVzdWx0ID0gMDsKKyAgQVNTRVJUX1RS
VUUoUGFyc2VOYXR1cmFsTnVtYmVyKCIxMjMiLCAmc2hvcnRfcmVzdWx0KSk7CisgIEVYUEVDVF9F
USgxMjMsIHNob3J0X3Jlc3VsdCk7CisKKyAgc2lnbmVkIGNoYXIgY2hhcl9yZXN1bHQgPSAwOwor
ICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjEyMyIsICZjaGFyX3Jlc3VsdCkpOwor
ICBFWFBFQ1RfRVEoMTIzLCBjaGFyX3Jlc3VsdCk7Cit9CisKKyMgaWYgR1RFU1RfT1NfV0lORE9X
UworVEVTVChFbnZpcm9ubWVudFRlc3QsIEhhbmRsZUZpdHNJbnRvU2l6ZVQpIHsKKyAgLy8gRklY
TUU6IFJlbW92ZSB0aGlzIHRlc3QgYWZ0ZXIgdGhpcyBjb25kaXRpb24gaXMgdmVyaWZpZWQKKyAg
Ly8gaW4gYSBzdGF0aWMgYXNzZXJ0aW9uIGluIGd0ZXN0LWRlYXRoLXRlc3QuY2MgaW4gdGhlIGZ1
bmN0aW9uCisgIC8vIEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9yLgorICBBU1NFUlRfVFJVRShzaXpl
b2YoSEFORExFKSA8PSBzaXplb2Yoc2l6ZV90KSk7Cit9CisjIGVuZGlmICAvLyBHVEVTVF9PU19X
SU5ET1dTCisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRC9BU1NFUlRf
REVBVEhfSUZfU1VQUE9SVEVEIHRyaWdnZXIKKy8vIGZhaWx1cmVzIHdoZW4gZGVhdGggdGVzdHMg
YXJlIGF2YWlsYWJsZSBvbiB0aGUgc3lzdGVtLgorVEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9z
RGVhdGhUZXN0LCBFeHBlY3RzRGVhdGhXaGVuRGVhdGhUZXN0c0F2YWlsYWJsZSkgeworICBFWFBF
Q1RfREVBVEhfSUZfU1VQUE9SVEVEKERpZUluc2lkZSgiQ29uZERlYXRoVGVzdEV4cGVjdE1hY3Jv
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlYXRoIGluc2lkZSBDb25kRGVhdGhU
ZXN0RXhwZWN0TWFjcm8iKTsKKyAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChEaWVJbnNpZGUo
IkNvbmREZWF0aFRlc3RBc3NlcnRNYWNybyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkZWF0aCBpbnNpZGUgQ29uZERlYXRoVGVzdEFzc2VydE1hY3JvIik7CisKKyAgLy8gRW1wdHkg
c3RhdGVtZW50IHdpbGwgbm90IGNyYXNoLCB3aGljaCBtdXN0IHRyaWdnZXIgYSBmYWlsdXJlLgor
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDssICIi
KSwgIiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVE
KDssICIiKSwgIiIpOworfQorCitURVNUKEluRGVhdGhUZXN0Q2hpbGREZWF0aFRlc3QsIFJlcG9y
dHNEZWF0aFRlc3RDb3JyZWN0bHlJbkZhc3RTdHlsZSkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFH
KGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOworICBFWFBFQ1RfRkFMU0UoSW5EZWF0aFRlc3RD
aGlsZCgpKTsKKyAgRVhQRUNUX0RFQVRIKHsKKyAgICBmcHJpbnRmKHN0ZGVyciwgSW5EZWF0aFRl
c3RDaGlsZCgpID8gIkluc2lkZSIgOiAiT3V0c2lkZSIpOworICAgIGZmbHVzaChzdGRlcnIpOwor
ICAgIF9leGl0KDEpOworICB9LCAiSW5zaWRlIik7Cit9CisKK1RFU1QoSW5EZWF0aFRlc3RDaGls
ZERlYXRoVGVzdCwgUmVwb3J0c0RlYXRoVGVzdENvcnJlY3RseUluVGhyZWFkU2FmZVN0eWxlKSB7
CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7
CisgIEVYUEVDVF9GQUxTRShJbkRlYXRoVGVzdENoaWxkKCkpOworICBFWFBFQ1RfREVBVEgoewor
ICAgIGZwcmludGYoc3RkZXJyLCBJbkRlYXRoVGVzdENoaWxkKCkgPyAiSW5zaWRlIiA6ICJPdXRz
aWRlIik7CisgICAgZmZsdXNoKHN0ZGVycik7CisgICAgX2V4aXQoMSk7CisgIH0sICJJbnNpZGUi
KTsKK30KKworI2Vsc2UgIC8vICFHVEVTVF9IQVNfREVBVEhfVEVTVCBmb2xsb3dzCisKK3VzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjpDYXB0dXJlU3RkZXJyOwordXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OkdldENhcHR1cmVkU3RkZXJyOworCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSF9JRl9T
VVBQT1JURUQvQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCBhcmUgc3RpbGwKKy8vIGRlZmluZWQg
YnV0IGRvIG5vdCB0cmlnZ2VyIGZhaWx1cmVzIHdoZW4gZGVhdGggdGVzdHMgYXJlIG5vdCBhdmFp
bGFibGUgb24KKy8vIHRoZSBzeXN0ZW0uCitURVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NUZXN0
LCBXYXJuc1doZW5EZWF0aFRlc3RzTm90QXZhaWxhYmxlKSB7CisgIC8vIEVtcHR5IHN0YXRlbWVu
dCB3aWxsIG5vdCBjcmFzaCwgYnV0IHRoYXQgc2hvdWxkIG5vdCB0cmlnZ2VyIGEgZmFpbHVyZQor
ICAvLyB3aGVuIGRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkLgorICBDYXB0dXJlU3RkZXJy
KCk7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIpOworICBzdGQ6OnN0cmluZyBv
dXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVycigpOworICBBU1NFUlRfVFJVRShOVUxMICE9IHN0cnN0
cihvdXRwdXQuY19zdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlYXRoIHRl
c3RzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKSk7CisgIEFTU0VSVF9UUlVF
KE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLCAiOyIpKTsKKworICAvLyBUaGUgc3RyZWFt
ZWQgbWVzc2FnZSBzaG91bGQgbm90IGJlIHByaW50ZWQgYXMgdGhlcmUgaXMgbm8gdGVzdCBmYWls
dXJlLgorICBDYXB0dXJlU3RkZXJyKCk7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoOywg
IiIpIDw8ICJzdHJlYW1lZCBtZXNzYWdlIjsKKyAgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIo
KTsKKyAgQVNTRVJUX1RSVUUoTlVMTCA9PSBzdHJzdHIob3V0cHV0LmNfc3RyKCksICJzdHJlYW1l
ZCBtZXNzYWdlIikpOworCisgIENhcHR1cmVTdGRlcnIoKTsKKyAgQVNTRVJUX0RFQVRIX0lGX1NV
UFBPUlRFRCg7LCAiIik7ICAvLyBOT0xJTlQKKyAgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIo
KTsKKyAgQVNTRVJUX1RSVUUoTlVMTCAhPSBzdHJzdHIob3V0cHV0LmNfc3RyKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJEZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0
aGlzIHBsYXRmb3JtIikpOworICBBU1NFUlRfVFJVRShOVUxMICE9IHN0cnN0cihvdXRwdXQuY19z
dHIoKSwgIjsiKSk7CisKKyAgQ2FwdHVyZVN0ZGVycigpOworICBBU1NFUlRfREVBVEhfSUZfU1VQ
UE9SVEVEKDssICIiKSA8PCAic3RyZWFtZWQgbWVzc2FnZSI7ICAvLyBOT0xJTlQKKyAgb3V0cHV0
ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKKyAgQVNTRVJUX1RSVUUoTlVMTCA9PSBzdHJzdHIob3V0
cHV0LmNfc3RyKCksICJzdHJlYW1lZCBtZXNzYWdlIikpOworfQorCit2b2lkIEZ1bmNXaXRoQXNz
ZXJ0KGludCogbikgeworICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHJldHVybjssICIiKTsK
KyAgKCpuKSsrOworfQorCisvLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQg
ZG9lcyBub3QgcmV0dXJuIGZyb20gdGhlIGN1cnJlbnQKKy8vIGZ1bmN0aW9uIChhcyBBU1NFUlRf
REVBVEggZG9lcykgaWYgZGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQuCitURVNUKENvbmRp
dGlvbmFsRGVhdGhNYWNyb3NUZXN0LCBBc3NlcnREZWF0RG9lc05vdFJldHVybmhJZlVuc3VwcG9y
dGVkKSB7CisgIGludCBuID0gMDsKKyAgRnVuY1dpdGhBc3NlcnQoJm4pOworICBFWFBFQ1RfRVEo
MSwgbik7Cit9CisKKyNlbmRpZiAgLy8gIUdURVNUX0hBU19ERUFUSF9URVNUCisKKy8vIFRlc3Rz
IHRoYXQgdGhlIGRlYXRoIHRlc3QgbWFjcm9zIGV4cGFuZCB0byBjb2RlIHdoaWNoIG1heSBvciBt
YXkgbm90CisvLyBiZSBmb2xsb3dlZCBieSBvcGVyYXRvcjw8LCBhbmQgdGhhdCBpbiBlaXRoZXIg
Y2FzZSB0aGUgY29tcGxldGUgdGV4dAorLy8gY29tcHJpc2VzIG9ubHkgYSBzaW5nbGUgQysrIHN0
YXRlbWVudC4KKy8vCisvLyBUaGUgc3ludGF4IHNob3VsZCB3b3JrIHdoZXRoZXIgZGVhdGggdGVz
dHMgYXJlIGF2YWlsYWJsZSBvciBub3QuCitURVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NTeW50
YXhEZWF0aFRlc3QsIFNpbmdsZVN0YXRlbWVudCkgeworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAg
ICAvLyBUaGlzIHdvdWxkIGZhaWwgaWYgZXhlY3V0ZWQ7IHRoaXMgaXMgYSBjb21waWxhdGlvbiB0
ZXN0IG9ubHkKKyAgICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHJldHVybiwgIiIpOworCisg
IGlmIChBbHdheXNUcnVlKCkpCisgICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChfZXhpdCgx
KSwgIiIpOworICBlbHNlCisgICAgLy8gVGhpcyBlbXB0eSAiZWxzZSIgYnJhbmNoIGlzIG1lYW50
IHRvIGVuc3VyZSB0aGF0IEVYUEVDVF9ERUFUSAorICAgIC8vIGRvZXNuJ3QgZXhwYW5kIGludG8g
YW4gImlmIiBzdGF0ZW1lbnQgd2l0aG91dCBhbiAiZWxzZSIKKyAgICA7ICAvLyBOT0xJTlQKKwor
ICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHJldHVy
biwgIiIpIDw8ICJkaWQgbm90IGRpZSI7CisKKyAgaWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgOyAg
Ly8gTk9MSU5UCisgIGVsc2UKKyAgICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKF9leGl0KDEp
LCAiIikgPDwgMSA8PCAyIDw8IDM7Cit9CisKKy8vIFRlc3RzIHRoYXQgY29uZGl0aW9uYWwgZGVh
dGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUgd2hpY2ggaW50ZXJhY3RzCisvLyB3ZWxsIHdp
dGggc3dpdGNoIHN0YXRlbWVudHMuCitURVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NTeW50YXhE
ZWF0aFRlc3QsIFN3aXRjaFN0YXRlbWVudCkgeworICAvLyBNaWNyb3NvZnQgY29tcGlsZXIgdXN1
YWxseSBjb21wbGFpbnMgYWJvdXQgc3dpdGNoIHN0YXRlbWVudHMgd2l0aG91dAorICAvLyBjYXNl
IGxhYmVscy4gV2Ugc3VwcHJlc3MgdGhhdCB3YXJuaW5nIGZvciB0aGlzIHRlc3QuCisgIEdURVNU
X0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQwNjUpCisKKyAgc3dpdGNoICgwKQorICAgIGRl
ZmF1bHQ6CisgICAgICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKF9leGl0KDEpLCAiIikKKyAg
ICAgICAgICA8PCAiZXhpdCBpbiBkZWZhdWx0IHN3aXRjaCBoYW5kbGVyIjsKKworICBzd2l0Y2gg
KDApCisgICAgY2FzZSAwOgorICAgICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChfZXhpdCgx
KSwgIiIpIDw8ICJleGl0IGluIHN3aXRjaCBjYXNlIjsKKworICBHVEVTVF9ESVNBQkxFX01TQ19X
QVJOSU5HU19QT1BfKCkKK30KKworLy8gVGVzdHMgdGhhdCBhIHRlc3QgY2FzZSB3aG9zZSBuYW1l
IGVuZHMgd2l0aCAiRGVhdGhUZXN0IiB3b3JrcyBmaW5lCisvLyBvbiBXaW5kb3dzLgorVEVTVChO
b3RBRGVhdGhUZXN0LCBUZXN0KSB7CisgIFNVQ0NFRUQoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZGVhdGgtdGVzdF9leF90
ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI4Yjk0NzBmYzg4YWQxN2FhZWI2NjRkNDdjMjcwY2ZjYWE3MzFi
ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNjCkBAIC0wLDAgKzEsOTIgQEAKKy8vIENvcHlyaWdo
dCAyMDEwLCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9u
LgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
Ky8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8KKy8vIFRlc3RzIHRoYXQgdmVy
aWZ5IGludGVyYWN0aW9uIG9mIGV4Y2VwdGlvbnMgYW5kIGRlYXRoIHRlc3RzLgorCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisK
KyNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisjIGlmIEdURVNUX0hBU19TRUgKKyMgIGluY2x1
ZGUgPHdpbmRvd3MuaD4gICAgICAgICAgLy8gRm9yIFJhaXNlRXhjZXB0aW9uKCkuCisjIGVuZGlm
CisKKyMgaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCisKKyMgaWYgR1RFU1RfSEFTX0VYQ0VQ
VElPTlMKKworIyAgaW5jbHVkZSA8ZXhjZXB0aW9uPiAgLy8gRm9yIHN0ZDo6ZXhjZXB0aW9uLgor
CisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHJlcG9ydCB0aHJvd24gZXhjZXB0aW9ucyBhcyBm
YWlsdXJlcyBhbmQgdGhhdCB0aGUKKy8vIGV4Y2VwdGlvbnMgZG8gbm90IGVzY2FwZSBkZWF0aCB0
ZXN0IG1hY3Jvcy4KK1RFU1QoQ3h4RXhjZXB0aW9uRGVhdGhUZXN0LCBFeGNlcHRpb25Jc0ZhaWx1
cmUpIHsKKyAgdHJ5IHsKKyAgICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgo
dGhyb3cgMSwgIiIpLCAidGhyZXcgYW4gZXhjZXB0aW9uIik7CisgIH0gY2F0Y2ggKC4uLikgeyAg
Ly8gTk9MSU5UCisgICAgRkFJTCgpIDw8ICJBbiBleGNlcHRpb24gZXNjYXBlZCBhIGRlYXRoIHRl
c3QgbWFjcm8gaW52b2NhdGlvbiAiCisgICAgICAgICAgIDw8ICJ3aXRoIGNhdGNoX2V4Y2VwdGlv
bnMgIgorICAgICAgICAgICA8PCAodGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25z
KSA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpOworICB9Cit9CisKK2NsYXNzIFRlc3RFeGNlcHRp
b24gOiBwdWJsaWMgc3RkOjpleGNlcHRpb24geworIHB1YmxpYzoKKyAgdmlydHVhbCBjb25zdCBj
aGFyKiB3aGF0KCkgY29uc3QgdGhyb3coKSB7IHJldHVybiAiZXhjZXB0aW9uYWwgbWVzc2FnZSI7
IH0KK307CisKK1RFU1QoQ3h4RXhjZXB0aW9uRGVhdGhUZXN0LCBQcmludHNNZXNzYWdlRm9yU3Rk
RXhjZXB0aW9ucykgeworICAvLyBWZXJpZmllcyB0aGF0IHRoZSBleGNlcHRpb24gbWVzc2FnZSBp
cyBxdW90ZWQgaW4gdGhlIGZhaWx1cmUgdGV4dC4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX0RFQVRIKHRocm93IFRlc3RFeGNlcHRpb24oKSwgIiIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZXhjZXB0aW9uYWwgbWVzc2FnZSIpOworICAvLyBWZXJpZmllcyB0aGF0IHRo
ZSBsb2NhdGlvbiBpcyBtZW50aW9uZWQgaW4gdGhlIGZhaWx1cmUgdGV4dC4KKyAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKHRocm93IFRlc3RFeGNlcHRpb24oKSwgIiIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZ29vZ2xldGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3Qu
Y2MiKTsKK30KKyMgZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCisKKyMgaWYgR1RFU1Rf
SEFTX1NFSAorLy8gVGVzdHMgdGhhdCBlbmFibGluZyBpbnRlcmNlcHRpb24gb2YgU0VIIGV4Y2Vw
dGlvbnMgd2l0aCB0aGUKKy8vIGNhdGNoX2V4Y2VwdGlvbnMgZmxhZyBkb2VzIG5vdCBpbnRlcmZl
cmUgd2l0aCBTRUggZXhjZXB0aW9ucyBiZWluZworLy8gdHJlYXRlZCBhcyBkZWF0aCBieSBkZWF0
aCB0ZXN0cy4KK1RFU1QoU2VoRXhjZXB0aW9uRGVhc1Rlc3QsIENhdGNoRXhjZXB0aW9uc0RvZXNO
b3RJbnRlcmZlcmUpIHsKKyAgRVhQRUNUX0RFQVRIKFJhaXNlRXhjZXB0aW9uKDQyLCAweDAsIDAs
IE5VTEwpLCAiIikKKyAgICAgIDw8ICJ3aXRoIGNhdGNoX2V4Y2VwdGlvbnMgIgorICAgICAgPDwg
KHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgPyAiZW5hYmxlZCIgOiAiZGlz
YWJsZWQiKTsKK30KKyMgZW5kaWYKKworI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAor
CitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgdGVzdGluZzo6SW5pdEdvb2ds
ZVRlc3QoJmFyZ2MsIGFyZ3YpOworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlv
bnMpID0gR1RFU1RfRU5BQkxFX0NBVENIX0VYQ0VQVElPTlNfICE9IDA7CisgIHJldHVybiBSVU5f
QUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9nb29nbGV0ZXN0LWVudi12YXItdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMWVmZWVlMWVhYjhjNmRh
Y2I1ZDI5MjZmNGI1YzkwODA5MzhkYjEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWVudi12YXItdGVzdC5weQpAQCAtMCwwICsxLDEx
NyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA4LCBHb29nbGUg
SW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVmVy
aWZpZXMgdGhhdCBHb29nbGUgVGVzdCBjb3JyZWN0bHkgcGFyc2VzIGVudmlyb25tZW50IHZhcmlh
Ymxlcy4iIiIKKworaW1wb3J0IG9zCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCisKK0lTX1dJ
TkRPV1MgPSBvcy5uYW1lID09ICdudCcKK0lTX0xJTlVYID0gb3MubmFtZSA9PSAncG9zaXgnIGFu
ZCBvcy51bmFtZSgpWzBdID09ICdMaW51eCcKKworQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
R2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdnb29nbGV0ZXN0LWVudi12YXItdGVzdF8nKQorCitlbnZp
cm9uID0gb3MuZW52aXJvbi5jb3B5KCkKKworCitkZWYgQXNzZXJ0RXEoZXhwZWN0ZWQsIGFjdHVh
bCk6CisgIGlmIGV4cGVjdGVkICE9IGFjdHVhbDoKKyAgICBwcmludCAnRXhwZWN0ZWQ6ICVzJyAl
IChleHBlY3RlZCwpCisgICAgcHJpbnQgJyAgQWN0dWFsOiAlcycgJSAoYWN0dWFsLCkKKyAgICBy
YWlzZSBBc3NlcnRpb25FcnJvcgorCisKK2RlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgor
ICAiIiJTZXRzIHRoZSBlbnYgdmFyaWFibGUgdG8gJ3ZhbHVlJzsgdW5zZXRzIGl0IHdoZW4gJ3Zh
bHVlJyBpcyBOb25lLiIiIgorCisgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAgIGVudmlyb25b
ZW52X3Zhcl0gPSB2YWx1ZQorICBlbGlmIGVudl92YXIgaW4gZW52aXJvbjoKKyAgICBkZWwgZW52
aXJvbltlbnZfdmFyXQorCisKK2RlZiBHZXRGbGFnKGZsYWcpOgorICAiIiJSdW5zIGdvb2dsZXRl
c3QtZW52LXZhci10ZXN0XyBhbmQgcmV0dXJucyBpdHMgb3V0cHV0LiIiIgorCisgIGFyZ3MgPSBb
Q09NTUFORF0KKyAgaWYgZmxhZyBpcyBub3QgTm9uZToKKyAgICBhcmdzICs9IFtmbGFnXQorICBy
ZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGFyZ3MsIGVudj1lbnZpcm9uKS5vdXRw
dXQKKworCitkZWYgVGVzdEZsYWcoZmxhZywgdGVzdF92YWwsIGRlZmF1bHRfdmFsKToKKyAgIiIi
VmVyaWZpZXMgdGhhdCB0aGUgZ2l2ZW4gZmxhZyBpcyBhZmZlY3RlZCBieSB0aGUgY29ycmVzcG9u
ZGluZyBlbnYgdmFyLiIiIgorCisgIGVudl92YXIgPSAnR1RFU1RfJyArIGZsYWcudXBwZXIoKQor
ICBTZXRFbnZWYXIoZW52X3ZhciwgdGVzdF92YWwpCisgIEFzc2VydEVxKHRlc3RfdmFsLCBHZXRG
bGFnKGZsYWcpKQorICBTZXRFbnZWYXIoZW52X3ZhciwgTm9uZSkKKyAgQXNzZXJ0RXEoZGVmYXVs
dF92YWwsIEdldEZsYWcoZmxhZykpCisKKworY2xhc3MgR1Rlc3RFbnZWYXJUZXN0KGd0ZXN0X3Rl
c3RfdXRpbHMuVGVzdENhc2UpOgorCisgIGRlZiB0ZXN0RW52VmFyQWZmZWN0c0ZsYWcoc2VsZik6
CisgICAgIiIiVGVzdHMgdGhhdCBlbnZpcm9ubWVudCB2YXJpYWJsZSBzaG91bGQgYWZmZWN0IHRo
ZSBjb3JyZXNwb25kaW5nIGZsYWcuIiIiCisKKyAgICBUZXN0RmxhZygnYnJlYWtfb25fZmFpbHVy
ZScsICcxJywgJzAnKQorICAgIFRlc3RGbGFnKCdjb2xvcicsICd5ZXMnLCAnYXV0bycpCisgICAg
VGVzdEZsYWcoJ2ZpbHRlcicsICdGb29UZXN0LkJhcicsICcqJykKKyAgICBTZXRFbnZWYXIoJ1hN
TF9PVVRQVVRfRklMRScsIE5vbmUpICAjIEZvciAnb3V0cHV0JyB0ZXN0CisgICAgVGVzdEZsYWco
J291dHB1dCcsICd4bWw6dG1wL2Zvby54bWwnLCAnJykKKyAgICBUZXN0RmxhZygncHJpbnRfdGlt
ZScsICcwJywgJzEnKQorICAgIFRlc3RGbGFnKCdyZXBlYXQnLCAnOTk5JywgJzEnKQorICAgIFRl
c3RGbGFnKCd0aHJvd19vbl9mYWlsdXJlJywgJzEnLCAnMCcpCisgICAgVGVzdEZsYWcoJ2RlYXRo
X3Rlc3Rfc3R5bGUnLCAndGhyZWFkc2FmZScsICdmYXN0JykKKyAgICBUZXN0RmxhZygnY2F0Y2hf
ZXhjZXB0aW9ucycsICcwJywgJzEnKQorCisgICAgaWYgSVNfTElOVVg6CisgICAgICBUZXN0Rmxh
ZygnZGVhdGhfdGVzdF91c2VfZm9yaycsICcxJywgJzAnKQorICAgICAgVGVzdEZsYWcoJ3N0YWNr
X3RyYWNlX2RlcHRoJywgJzAnLCAnMTAwJykKKworCisgIGRlZiB0ZXN0WG1sT3V0cHV0RmlsZShz
ZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0ICRYTUxfT1VUUFVUX0ZJTEUgYWZmZWN0cyB0aGUgb3V0
cHV0IGZsYWcuIiIiCisKKyAgICBTZXRFbnZWYXIoJ0dURVNUX09VVFBVVCcsIE5vbmUpCisgICAg
U2V0RW52VmFyKCdYTUxfT1VUUFVUX0ZJTEUnLCAndG1wL2Jhci54bWwnKQorICAgIEFzc2VydEVx
KCd4bWw6dG1wL2Jhci54bWwnLCBHZXRGbGFnKCdvdXRwdXQnKSkKKworICBkZWYgdGVzdFhtbE91
dHB1dEZpbGVPdmVycmlkZShzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0ICRYTUxfT1VUUFVUX0ZJ
TEUgaXMgb3ZlcnJpZGRlbiBieSAkR1RFU1RfT1VUUFVULiIiIgorCisgICAgU2V0RW52VmFyKCdH
VEVTVF9PVVRQVVQnLCAneG1sOnRtcC9mb28ueG1sJykKKyAgICBTZXRFbnZWYXIoJ1hNTF9PVVRQ
VVRfRklMRScsICd0bXAvYmFyLnhtbCcpCisgICAgQXNzZXJ0RXEoJ3htbDp0bXAvZm9vLnhtbCcs
IEdldEZsYWcoJ291dHB1dCcpKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVz
dF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9nb29nbGV0ZXN0LWVudi12YXItdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDJhYTgyZjc0
ZmFhMjEyMDFlNzlhZTBlNWMzYjU2ODU1M2RmMzM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWVudi12YXItdGVzdF8uY2MKQEAgLTAs
MCArMSwxMjIgQEAKKy8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoK
Ky8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
Ly8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLwor
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworCisvLyBBIGhlbHBlciBwcm9ncmFtIGZvciB0ZXN0aW5nIHRoYXQgR29vZ2xlIFRlc3QgcGFy
c2VzIHRoZSBlbnZpcm9ubWVudAorLy8gdmFyaWFibGVzIGNvcnJlY3RseS4KKworI2luY2x1ZGUg
PGlvc3RyZWFtPgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJzcmMvZ3Rl
c3QtaW50ZXJuYWwtaW5sLmgiCisKK3VzaW5nIDo6c3RkOjpjb3V0OworCituYW1lc3BhY2UgdGVz
dGluZyB7CisKKy8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gbWFrZSB0aGUgdGVzdCBtb3Jl
IHJlYWxpc3RpYyBieSBlbnN1cmluZworLy8gdGhhdCB0aGUgVW5pdFRlc3Qgc2luZ2xldG9uIGlz
IGNyZWF0ZWQgYmVmb3JlIG1haW4oKSBpcyBlbnRlcmVkLgorLy8gV2UgZG9uJ3QgYWN0dWFsIHJ1
biB0aGUgVEVTVCBpdHNlbGYuCitURVNUKEdUZXN0RW52VmFyVGVzdCwgRHVtbXkpIHsKK30KKwor
dm9pZCBQcmludEZsYWcoY29uc3QgY2hhciogZmxhZykgeworICBpZiAoc3RyY21wKGZsYWcsICJi
cmVha19vbl9mYWlsdXJlIikgPT0gMCkgeworICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhicmVha19v
bl9mYWlsdXJlKTsKKyAgICByZXR1cm47CisgIH0KKworICBpZiAoc3RyY21wKGZsYWcsICJjYXRj
aF9leGNlcHRpb25zIikgPT0gMCkgeworICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhjYXRjaF9leGNl
cHRpb25zKTsKKyAgICByZXR1cm47CisgIH0KKworICBpZiAoc3RyY21wKGZsYWcsICJjb2xvciIp
ID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZMQUcoY29sb3IpOworICAgIHJldHVybjsKKyAg
fQorCisgIGlmIChzdHJjbXAoZmxhZywgImRlYXRoX3Rlc3Rfc3R5bGUiKSA9PSAwKSB7CisgICAg
Y291dCA8PCBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpOworICAgIHJldHVybjsKKyAgfQor
CisgIGlmIChzdHJjbXAoZmxhZywgImRlYXRoX3Rlc3RfdXNlX2ZvcmsiKSA9PSAwKSB7CisgICAg
Y291dCA8PCBHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspOworICAgIHJldHVybjsKKyAg
fQorCisgIGlmIChzdHJjbXAoZmxhZywgImZpbHRlciIpID09IDApIHsKKyAgICBjb3V0IDw8IEdU
RVNUX0ZMQUcoZmlsdGVyKTsKKyAgICByZXR1cm47CisgIH0KKworICBpZiAoc3RyY21wKGZsYWcs
ICJvdXRwdXQiKSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKG91dHB1dCk7CisgICAg
cmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChmbGFnLCAicHJpbnRfdGltZSIpID09IDApIHsK
KyAgICBjb3V0IDw8IEdURVNUX0ZMQUcocHJpbnRfdGltZSk7CisgICAgcmV0dXJuOworICB9CisK
KyAgaWYgKHN0cmNtcChmbGFnLCAicmVwZWF0IikgPT0gMCkgeworICAgIGNvdXQgPDwgR1RFU1Rf
RkxBRyhyZXBlYXQpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgInN0
YWNrX3RyYWNlX2RlcHRoIikgPT0gMCkgeworICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhzdGFja190
cmFjZV9kZXB0aCk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChmbGFnLCAidGhy
b3dfb25fZmFpbHVyZSIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZMQUcodGhyb3dfb25f
ZmFpbHVyZSk7CisgICAgcmV0dXJuOworICB9CisKKyAgY291dCA8PCAiSW52YWxpZCBmbGFnIG5h
bWUgIiA8PCBmbGFnCisgICAgICAgPDwgIi4gIFZhbGlkIG5hbWVzIGFyZSBicmVha19vbl9mYWls
dXJlLCBjb2xvciwgZmlsdGVyLCBldGMuXG4iOworICBleGl0KDEpOworfQorCit9ICAvLyBuYW1l
c3BhY2UgdGVzdGluZworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgdGVz
dGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIGlmIChhcmdjICE9IDIpIHsK
KyAgICBjb3V0IDw8ICJVc2FnZTogZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3RfIE5BTUVfT0ZfRkxB
R1xuIjsKKyAgICByZXR1cm4gMTsKKyAgfQorCisgIHRlc3Rpbmc6OlByaW50RmxhZyhhcmd2WzFd
KTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3QtZmlsZXBhdGgtdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1maWxlcGF0aC10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3ZjAyZmI0YmQ3
Nzk3ZDE0ZDM4M2EwNWZhMTk3YzM2YjMxODI1ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZmlsZXBhdGgtdGVzdC5jYwpAQCAtMCww
ICsxLDY1MSBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0Ogor
Ly8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisv
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
Ly8KKy8vIEdvb2dsZSBUZXN0IGZpbGVwYXRoIHV0aWxpdGllcworLy8KKy8vIFRoaXMgZmlsZSB0
ZXN0cyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5IGJ5CisvLyBHb29nbGUg
VGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgorLy8KKy8v
IFRoaXMgZmlsZSBpcyAjaW5jbHVkZWQgZnJvbSBndGVzdC1pbnRlcm5hbC5oLgorLy8gRG8gbm90
ICNpbmNsdWRlIHRoaXMgZmlsZSBhbnl3aGVyZSBlbHNlIQorCisjaW5jbHVkZSAiZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1
ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9C
SUxFCisjIGluY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAorI2VsaWYgR1RFU1RfT1NfV0lO
RE9XUworIyBpbmNsdWRlIDxkaXJlY3QuaD4gIC8vIE5PTElOVAorI2VuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTX01PQklMRQorCituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJu
YWwgeworbmFtZXNwYWNlIHsKKworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisvLyBGSVhN
RTogTW92ZSB0aGVzZSB0byB0aGUgUE9TSVggYWRhcHRlciBzZWN0aW9uIGluCisvLyBndGVzdC1w
b3J0LmguCisKKy8vIFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlIHRoZSByZW1vdmUgQyBmdW5jdGlv
bi4KK2ludCByZW1vdmUoY29uc3QgY2hhciogcGF0aCkgeworICBMUENXU1RSIHdwYXRoID0gU3Ry
aW5nOjpBbnNpVG9VdGYxNihwYXRoKTsKKyAgaW50IHJldCA9IERlbGV0ZUZpbGUod3BhdGgpID8g
MCA6IC0xOworICBkZWxldGUgW10gd3BhdGg7CisgIHJldHVybiByZXQ7Cit9CisvLyBXaW5kb3dz
IENFIGRvZXNuJ3QgaGF2ZSB0aGUgX3JtZGlyIEMgZnVuY3Rpb24uCitpbnQgX3JtZGlyKGNvbnN0
IGNoYXIqIHBhdGgpIHsKKyAgRmlsZVBhdGggZmlsZXBhdGgocGF0aCk7CisgIExQQ1dTVFIgd3Bh
dGggPSBTdHJpbmc6OkFuc2lUb1V0ZjE2KAorICAgICAgZmlsZXBhdGguUmVtb3ZlVHJhaWxpbmdQ
YXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7CisgIGludCByZXQgPSBSZW1vdmVEaXJlY3Rvcnkod3Bh
dGgpID8gMCA6IC0xOworICBkZWxldGUgW10gd3BhdGg7CisgIHJldHVybiByZXQ7Cit9CisKKyNl
bHNlCisKK1RFU1QoR2V0Q3VycmVudERpclRlc3QsIFJldHVybnNDdXJyZW50RGlyKSB7CisgIGNv
bnN0IEZpbGVQYXRoIG9yaWdpbmFsX2RpciA9IEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCk7Cisg
IEVYUEVDVF9GQUxTRShvcmlnaW5hbF9kaXIuSXNFbXB0eSgpKTsKKworICBwb3NpeDo6Q2hEaXIo
R1RFU1RfUEFUSF9TRVBfKTsKKyAgY29uc3QgRmlsZVBhdGggY3dkID0gRmlsZVBhdGg6OkdldEN1
cnJlbnREaXIoKTsKKyAgcG9zaXg6OkNoRGlyKG9yaWdpbmFsX2Rpci5jX3N0cigpKTsKKworIyBp
ZiBHVEVTVF9PU19XSU5ET1dTCisKKyAgLy8gU2tpcHMgdGhlICI6Ii4KKyAgY29uc3QgY2hhciog
Y29uc3QgY3dkX3dpdGhvdXRfZHJpdmUgPSBzdHJjaHIoY3dkLmNfc3RyKCksICc6Jyk7CisgIEFT
U0VSVF9UUlVFKGN3ZF93aXRob3V0X2RyaXZlICE9IE5VTEwpOworICBFWFBFQ1RfU1RSRVEoR1RF
U1RfUEFUSF9TRVBfLCBjd2Rfd2l0aG91dF9kcml2ZSArIDEpOworCisjIGVsc2UKKworICBFWFBF
Q1RfRVEoR1RFU1RfUEFUSF9TRVBfLCBjd2Quc3RyaW5nKCkpOworCisjIGVuZGlmCit9CisKKyNl
bmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKworVEVTVChJc0VtcHR5VGVzdCwgUmV0
dXJuc1RydWVGb3JFbXB0eVBhdGgpIHsKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIiIpLklzRW1w
dHkoKSk7Cit9CisKK1RFU1QoSXNFbXB0eVRlc3QsIFJldHVybnNGYWxzZUZvck5vbkVtcHR5UGF0
aCkgeworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImEiKS5Jc0VtcHR5KCkpOworICBFWFBFQ1Rf
RkFMU0UoRmlsZVBhdGgoIi4iKS5Jc0VtcHR5KCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgo
ImEvYiIpLklzRW1wdHkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYVxcYlxcIikuSXNF
bXB0eSgpKTsKK30KKworLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiIiAtPiAiIgorVEVTVChSZW1v
dmVEaXJlY3RvcnlOYW1lVGVzdCwgV2hlbkVtcHR5TmFtZSkgeworICBFWFBFQ1RfRVEoIiIsIEZp
bGVQYXRoKCIiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1v
dmVEaXJlY3RvcnlOYW1lICJhZmlsZSIgLT4gImFmaWxlIgorVEVTVChSZW1vdmVEaXJlY3RvcnlO
YW1lVGVzdCwgQnV0Tm9EaXJlY3RvcnkpIHsKKyAgRVhQRUNUX0VRKCJhZmlsZSIsCisgICAgICBG
aWxlUGF0aCgiYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisv
LyBSZW1vdmVEaXJlY3RvcnlOYW1lICIvYWZpbGUiIC0+ICJhZmlsZSIKK1RFU1QoUmVtb3ZlRGly
ZWN0b3J5TmFtZVRlc3QsIFJvb3RGaWxlU2hvdWxkR2l2ZUZpbGVOYW1lKSB7CisgIEVYUEVDVF9F
USgiYWZpbGUiLAorICAgICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92
ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZURpcmVjdG9yeU5hbWUg
ImFkaXIvIiAtPiAiIgorVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgV2hlcmVUaGVyZUlz
Tm9GaWxlTmFtZSkgeworICBFWFBFQ1RfRVEoIiIsCisgICAgICBGaWxlUGF0aCgiYWRpciIgR1RF
U1RfUEFUSF9TRVBfKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBS
ZW1vdmVEaXJlY3RvcnlOYW1lICJhZGlyL2FmaWxlIiAtPiAiYWZpbGUiCitURVNUKFJlbW92ZURp
cmVjdG9yeU5hbWVUZXN0LCBTaG91bGRHaXZlRmlsZU5hbWUpIHsKKyAgRVhQRUNUX0VRKCJhZmls
ZSIsCisgICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92
ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZURpcmVjdG9yeU5hbWUg
ImFkaXIvc3ViZGlyL2FmaWxlIiAtPiAiYWZpbGUiCitURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVU
ZXN0LCBTaG91bGRBbHNvR2l2ZUZpbGVOYW1lKSB7CisgIEVYUEVDVF9FUSgiYWZpbGUiLAorICAg
ICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NF
UF8gImFmaWxlIikKKyAgICAgIC5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQor
CisjaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KKworLy8gVGVzdHMgdGhhdCBSZW1vdmVEaXJl
Y3RvcnlOYW1lKCkgd29ya3Mgd2l0aCB0aGUgYWx0ZXJuYXRlIHNlcGFyYXRvcgorLy8gb24gV2lu
ZG93cy4KKworLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgiL2FmaWxlIikgLT4gImFmaWxlIgorVEVT
VChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgUm9vdEZpbGVTaG91bGRHaXZlRmlsZU5hbWVGb3JB
bHRlcm5hdGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNUX0VRKCJhZmlsZSIsIEZpbGVQYXRoKCIvYWZp
bGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJl
Y3RvcnlOYW1lKCJhZGlyLyIpIC0+ICIiCitURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBX
aGVyZVRoZXJlSXNOb0ZpbGVOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7CisgIEVYUEVDVF9F
USgiIiwgRmlsZVBhdGgoImFkaXIvIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsK
K30KKworLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgiYWRpci9hZmlsZSIpIC0+ICJhZmlsZSIKK1RF
U1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEdpdmVGaWxlTmFtZUZvckFsdGVybmF0
ZVNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEoImFmaWxlIiwgRmlsZVBhdGgoImFkaXIvYWZpbGUi
KS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJlY3Rv
cnlOYW1lKCJhZGlyL3N1YmRpci9hZmlsZSIpIC0+ICJhZmlsZSIKK1RFU1QoUmVtb3ZlRGlyZWN0
b3J5TmFtZVRlc3QsIFNob3VsZEFsc29HaXZlRmlsZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3Ip
IHsKKyAgRVhQRUNUX0VRKCJhZmlsZSIsCisgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci9zdWJk
aXIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisjZW5kaWYK
KworLy8gUmVtb3ZlRmlsZU5hbWUgIiIgLT4gIi4vIgorVEVTVChSZW1vdmVGaWxlTmFtZVRlc3Qs
IEVtcHR5TmFtZSkgeworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisgIC8vIE9uIFdpbmRv
d3MgQ0UsIHdlIHVzZSB0aGUgcm9vdCBhcyB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisgIEVYUEVD
VF9FUShHVEVTVF9QQVRIX1NFUF8sIEZpbGVQYXRoKCIiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmlu
ZygpKTsKKyNlbHNlCisgIEVYUEVDVF9FUSgiLiIgR1RFU1RfUEFUSF9TRVBfLCBGaWxlUGF0aCgi
IikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7CisjZW5kaWYKK30KKworLy8gUmVtb3ZlRmls
ZU5hbWUgImFkaXIvIiAtPiAiYWRpci8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgQnV0Tm9G
aWxlKSB7CisgIEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgRmlsZVBh
dGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXykuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Cit9
CisKKy8vIFJlbW92ZUZpbGVOYW1lICJhZGlyL2FmaWxlIiAtPiAiYWRpci8iCitURVNUKFJlbW92
ZUZpbGVOYW1lVGVzdCwgR2l2ZXNEaXJOYW1lKSB7CisgIEVYUEVDVF9FUSgiYWRpciIgR1RFU1Rf
UEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAi
YWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlRmlsZU5h
bWUgImFkaXIvc3ViZGlyL2FmaWxlIiAtPiAiYWRpci9zdWJkaXIvIgorVEVTVChSZW1vdmVGaWxl
TmFtZVRlc3QsIEdpdmVzRGlyQW5kU3ViRGlyTmFtZSkgeworICBFWFBFQ1RfRVEoImFkaXIiIEdU
RVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8sCisgICAgICBGaWxlUGF0aCgi
YWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKQor
ICAgICAgLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVGaWxlTmFt
ZSAiL2FmaWxlIiAtPiAiLyIKK1RFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc1Jvb3REaXIp
IHsKKyAgRVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQXywKKyAgICAgIEZpbGVQYXRoKEdURVNUX1BB
VEhfU0VQXyAiYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKK30KKworI2lmIEdU
RVNUX0hBU19BTFRfUEFUSF9TRVBfCisKKy8vIFRlc3RzIHRoYXQgUmVtb3ZlRmlsZU5hbWUoKSB3
b3JrcyB3aXRoIHRoZSBhbHRlcm5hdGUgc2VwYXJhdG9yIG9uCisvLyBXaW5kb3dzLgorCisvLyBS
ZW1vdmVGaWxlTmFtZSgiYWRpci8iKSAtPiAiYWRpci8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVz
dCwgQnV0Tm9GaWxlRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7CisgIEVYUEVDVF9FUSgiYWRpciIg
R1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvIikuUmVtb3ZlRmls
ZU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZUZpbGVOYW1lKCJhZGlyL2FmaWxlIikg
LT4gImFkaXIvIgorVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzRGlyTmFtZUZvckFsdGVy
bmF0ZVNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXywKKyAg
ICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL2FmaWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmco
KSk7Cit9CisKKy8vIFJlbW92ZUZpbGVOYW1lKCJhZGlyL3N1YmRpci9hZmlsZSIpIC0+ICJhZGly
L3N1YmRpci8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNEaXJBbmRTdWJEaXJOYW1l
Rm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7CisgIEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9T
RVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXywKKyAgICAgICAgICAgIEZpbGVQYXRoKCJhZGly
L3N1YmRpci9hZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1v
dmVGaWxlTmFtZSgiL2FmaWxlIikgLT4gIlwiCitURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2
ZXNSb290RGlyRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7CisgIEVYUEVDVF9FUShHVEVTVF9QQVRI
X1NFUF8sIEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKK30K
KworI2VuZGlmCisKK1RFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVySXNa
ZXJvKSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBh
dGgoImZvbyIpLCBGaWxlUGF0aCgiYmFyIiksCisgICAgICAwLCAieG1sIik7CisgIEVYUEVDVF9F
USgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQor
CitURVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlRmlsZU5hbWVOdW1iZXJHdFplcm8pIHsK
KyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9v
IiksIEZpbGVQYXRoKCJiYXIiKSwKKyAgICAgIDEyLCAieG1sIik7CisgIEVYUEVDVF9FUSgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8gImJhcl8xMi54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitU
RVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlRmlsZU5hbWVXaXRoU2xhc2hOdW1iZXJJc1pl
cm8pIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0
aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAorICAgICAgRmlsZVBhdGgoImJhciIpLCAwLCAieG1s
Iik7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwu
c3RyaW5nKCkpOworfQorCitURVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlRmlsZU5hbWVX
aXRoU2xhc2hOdW1iZXJHdFplcm8pIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1h
a2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAorICAgICAgRmlsZVBh
dGgoImJhciIpLCAxMiwgInhtbCIpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBf
ICJiYXJfMTIueG1sIiwgYWN0dWFsLnN0cmluZygpKTsKK30KKworVEVTVChNYWtlRmlsZU5hbWVU
ZXN0LCBHZW5lcmF0ZVdoZW5OdW1iZXJJc1plcm9BbmREaXJJc0VtcHR5KSB7CisgIEZpbGVQYXRo
IGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoIiIpLCBGaWxlUGF0aCgi
YmFyIiksCisgICAgICAwLCAieG1sIik7CisgIEVYUEVDVF9FUSgiYmFyLnhtbCIsIGFjdHVhbC5z
dHJpbmcoKSk7Cit9CisKK1RFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVy
SXNOb3RaZXJvQW5kRGlySXNFbXB0eSkgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6
TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCIiKSwgRmlsZVBhdGgoImJhciIpLAorICAgICAgMTQsICJ4
bWwiKTsKKyAgRVhQRUNUX0VRKCJiYXJfMTQueG1sIiwgYWN0dWFsLnN0cmluZygpKTsKK30KKwor
VEVTVChDb25jYXRQYXRoc1Rlc3QsIFdvcmtzV2hlbkRpckRvZXNOb3RFbmRXaXRoUGF0aFNlcCkg
eworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZv
byIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgo
ImJhci54bWwiKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwi
LCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKENvbmNhdFBhdGhzVGVzdCwgV29ya3NXaGVu
UGF0aDFFbmRzV2l0aFBhdGhTZXApIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNv
bmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiYmFyLnhtbCIpKTsKKyAgRVhQ
RUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7
Cit9CisKK1RFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMUJlaW5nRW1wdHkpIHsKKyAgRmlsZVBh
dGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCIiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJiYXIueG1sIikpOwor
ICBFWFBFQ1RfRVEoImJhci54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKENvbmNh
dFBhdGhzVGVzdCwgUGF0aDJCZWluZ0VtcHR5KSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQ
YXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiksIEZpbGVQYXRoKCIiKSk7CisgIEVYUEVD
VF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1Qo
Q29uY2F0UGF0aHNUZXN0LCBCb3RoUGF0aEJlaW5nRW1wdHkpIHsKKyAgRmlsZVBhdGggYWN0dWFs
ID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCIiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCIiKSk7CisgIEVYUEVDVF9FUSgiIiwg
YWN0dWFsLnN0cmluZygpKTsKK30KKworVEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgxQ29udGFp
bnNQYXRoU2VwKSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhG
aWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvb2Jhci54bWwiKSk7CisgIEVYUEVD
VF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBfICJmb29iYXIu
eG1sIiwKKyAgICAgICAgICAgIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoQ29uY2F0UGF0
aHNUZXN0LCBQYXRoMkNvbnRhaW5zUGF0aFNlcCkgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxl
UGF0aDo6Q29uY2F0UGF0aHMoCisgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8p
LAorICAgICAgRmlsZVBhdGgoImJhciIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIikpOworICBF
WFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXyAiYmFy
LnhtbCIsCisgICAgICAgICAgICBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKENvbmNhdFBh
dGhzVGVzdCwgUGF0aDJFbmRzV2l0aFBhdGhTZXApIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmls
ZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJiYXIiIEdURVNUX1BBVEhfU0VQXykpOwor
ICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXywg
YWN0dWFsLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICIi
IC0+ICIiCitURVNUKFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvclRlc3QsIEVtcHR5U3RyaW5n
KSB7CisgIEVYUEVDVF9FUSgiIiwgRmlsZVBhdGgoIiIpLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFy
YXRvcigpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJm
b28iIC0+ICJmb28iCitURVNUKFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvclRlc3QsIEZpbGVO
b1NsYXNoU3RyaW5nKSB7CisgIEVYUEVDVF9FUSgiZm9vIiwgRmlsZVBhdGgoImZvbyIpLlJlbW92
ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlVHJhaWxp
bmdQYXRoU2VwYXJhdG9yICJmb28vIiAtPiAiZm9vIgorVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhT
ZXBhcmF0b3JUZXN0LCBTaG91bGRSZW1vdmVUcmFpbGluZ1NlcGFyYXRvcikgeworICBFWFBFQ1Rf
RVEoImZvbyIsCisgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLlJlbW92ZVRy
YWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKKyNpZiBHVEVTVF9IQVNfQUxUX1BBVEhf
U0VQXworICBFWFBFQ1RfRVEoImZvbyIsIEZpbGVQYXRoKCJmb28vIikuUmVtb3ZlVHJhaWxpbmdQ
YXRoU2VwYXJhdG9yKCkuc3RyaW5nKCkpOworI2VuZGlmCit9CisKKy8vIFJlbW92ZVRyYWlsaW5n
UGF0aFNlcGFyYXRvciAiZm9vL2Jhci8iIC0+ICJmb28vYmFyLyIKK1RFU1QoUmVtb3ZlVHJhaWxp
bmdQYXRoU2VwYXJhdG9yVGVzdCwgU2hvdWxkUmVtb3ZlTGFzdFNlcGFyYXRvcikgeworICBFWFBF
Q1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgICAgICAgICAgRmlsZVBhdGgo
ImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXykKKyAgICAgICAgICAg
ICAgICAuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuc3RyaW5nKCkpOworfQorCisvLyBS
ZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IgImZvby9iYXIiIC0+ICJmb28vYmFyIgorVEVTVChS
ZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBTaG91bGRSZXR1cm5Vbm1vZGlmaWVkKSB7
CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCisgICAgICAgICAgICBG
aWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIpCisgICAgICAgICAgICAgICAgLlJl
bW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKK30KKworVEVTVChEaXJlY3Rv
cnlUZXN0LCBSb290RGlyZWN0b3J5RXhpc3RzKSB7CisjaWYgR1RFU1RfT1NfV0lORE9XUyAgLy8g
V2UgYXJlIG9uIFdpbmRvd3MuCisgIGNoYXIgY3VycmVudF9kcml2ZVtfTUFYX1BBVEhdOyAgLy8g
Tk9MSU5UCisgIGN1cnJlbnRfZHJpdmVbMF0gPSBzdGF0aWNfY2FzdDxjaGFyPihfZ2V0ZHJpdmUo
KSArICdBJyAtIDEpOworICBjdXJyZW50X2RyaXZlWzFdID0gJzonOworICBjdXJyZW50X2RyaXZl
WzJdID0gJ1xcJzsKKyAgY3VycmVudF9kcml2ZVszXSA9ICdcMCc7CisgIEVYUEVDVF9UUlVFKEZp
bGVQYXRoKGN1cnJlbnRfZHJpdmUpLkRpcmVjdG9yeUV4aXN0cygpKTsKKyNlbHNlCisgIEVYUEVD
VF9UUlVFKEZpbGVQYXRoKCIvIikuRGlyZWN0b3J5RXhpc3RzKCkpOworI2VuZGlmICAvLyBHVEVT
VF9PU19XSU5ET1dTCit9CisKKyNpZiBHVEVTVF9PU19XSU5ET1dTCitURVNUKERpcmVjdG9yeVRl
c3QsIFJvb3RPZldyb25nRHJpdmVEb2VzTm90RXhpc3RzKSB7CisgIGNvbnN0IGludCBzYXZlZF9k
cml2ZV8gPSBfZ2V0ZHJpdmUoKTsKKyAgLy8gRmluZCBhIGRyaXZlIHRoYXQgZG9lc24ndCBleGlz
dC4gU3RhcnQgd2l0aCAnWicgdG8gYXZvaWQgY29tbW9uIG9uZXMuCisgIGZvciAoY2hhciBkcml2
ZSA9ICdaJzsgZHJpdmUgPj0gJ0EnOyBkcml2ZS0tKQorICAgIGlmIChfY2hkcml2ZShkcml2ZSAt
ICdBJyArIDEpID09IC0xKSB7CisgICAgICBjaGFyIG5vbl9kcml2ZVtfTUFYX1BBVEhdOyAgLy8g
Tk9MSU5UCisgICAgICBub25fZHJpdmVbMF0gPSBkcml2ZTsKKyAgICAgIG5vbl9kcml2ZVsxXSA9
ICc6JzsKKyAgICAgIG5vbl9kcml2ZVsyXSA9ICdcXCc7CisgICAgICBub25fZHJpdmVbM10gPSAn
XDAnOworICAgICAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKG5vbl9kcml2ZSkuRGlyZWN0b3J5RXhp
c3RzKCkpOworICAgICAgYnJlYWs7CisgICAgfQorICBfY2hkcml2ZShzYXZlZF9kcml2ZV8pOwor
fQorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKyNpZiAhR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKKy8vIFdpbmRvd3MgQ0UgX2RvZXNfIGNvbnNpZGVyIGFuIGVtcHR5IGRpcmVjdG9yeSB0
byBleGlzdC4KK1RFU1QoRGlyZWN0b3J5VGVzdCwgRW1wdHlQYXRoRGlyZWN0b3J5RG9lc05vdEV4
aXN0KSB7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiIikuRGlyZWN0b3J5RXhpc3RzKCkpOwor
fQorI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKworVEVTVChEaXJlY3RvcnlU
ZXN0LCBDdXJyZW50RGlyZWN0b3J5RXhpc3RzKSB7CisjaWYgR1RFU1RfT1NfV0lORE9XUyAgLy8g
V2UgYXJlIG9uIFdpbmRvd3MuCisjIGlmbmRlZiBfV0lOMzJfQ0UgIC8vIFdpbmRvd3MgQ0UgZG9l
c24ndCBoYXZlIGEgY3VycmVudCBkaXJlY3RvcnkuCisKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgo
Ii4iKS5EaXJlY3RvcnlFeGlzdHMoKSk7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIuXFwiKS5E
aXJlY3RvcnlFeGlzdHMoKSk7CisKKyMgZW5kaWYgIC8vIF9XSU4zMl9DRQorI2Vsc2UKKyAgRVhQ
RUNUX1RSVUUoRmlsZVBhdGgoIi4iKS5EaXJlY3RvcnlFeGlzdHMoKSk7CisgIEVYUEVDVF9UUlVF
KEZpbGVQYXRoKCIuLyIpLkRpcmVjdG9yeUV4aXN0cygpKTsKKyNlbmRpZiAgLy8gR1RFU1RfT1Nf
V0lORE9XUworfQorCisvLyAiZm9vL2JhciIgPT0gZm9vLy9iYXIiID09ICJmb28vLy9iYXIiCitU
RVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRpcGxlQ29uc2VjdXRpdmVTZXBhcGFyYXRvcnNJbk1pZHN0
cmluZykgeworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgICAg
ICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5zdHJpbmcoKSk7Cisg
IEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCisgICAgICAgICAgICBGaWxl
UGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5zdHJpbmco
KSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCisgICAgICAgICAg
ICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfCisgICAgICAg
ICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8gImJhciIpLnN0cmluZygpKTsKK30KKworLy8g
Ii9iYXIiID09IC8vYmFyIiA9PSAiLy8vYmFyIgorVEVTVChOb3JtYWxpemVUZXN0LCBNdWx0aXBs
ZUNvbnNlY3V0aXZlU2VwYXBhcmF0b3JzQXRTdHJpbmdTdGFydCkgeworICBFWFBFQ1RfRVEoR1RF
U1RfUEFUSF9TRVBfICJiYXIiLAorICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiYmFyIiku
c3RyaW5nKCkpOworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgIEZpbGVQ
YXRoKEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gImJhciIpLnN0cmluZygpKTsKKyAg
RVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKKyAgICBGaWxlUGF0aChHVEVTVF9QQVRI
X1NFUF8gR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOwor
fQorCisvLyAiZm9vLyIgPT0gZm9vLy8iID09ICJmb28vLy8iCitURVNUKE5vcm1hbGl6ZVRlc3Qs
IE11bHRpcGxlQ29uc2VjdXRpdmVTZXBhcGFyYXRvcnNBdFN0cmluZ0VuZCkgeworICBFWFBFQ1Rf
RVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhf
U0VQXykuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAg
IEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8pLnN0cmluZygp
KTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKKyAgICBGaWxlUGF0aCgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXykuc3RyaW5n
KCkpOworfQorCisjaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KKworLy8gVGVzdHMgdGhhdCBz
ZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBhcmUgbm9ybWFsaXplZAorLy8gcmVn
YXJkbGVzcyBvZiB0aGVpciBjb21iaW5hdGlvbiAoZS5nLiAiZm9vXCIgPT0iZm9vL1wiID09Cisv
LyAiZm9vXFwvIikuCitURVNUKE5vcm1hbGl6ZVRlc3QsIE1peEFsdGVybmF0ZVNlcGFyYXRvckF0
U3RyaW5nRW5kKSB7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCisgICAgICAg
ICAgICBGaWxlUGF0aCgiZm9vLyIpLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNU
X1BBVEhfU0VQXywKKyAgICAgICAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAi
LyIpLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKKyAgICAg
ICAgICAgIEZpbGVQYXRoKCJmb28vLyIgR1RFU1RfUEFUSF9TRVBfKS5zdHJpbmcoKSk7Cit9CisK
KyNlbmRpZgorCitURVNUKEFzc2lnbm1lbnRPcGVyYXRvclRlc3QsIERlZmF1bHRBc3NpZ25lZFRv
Tm9uRGVmYXVsdCkgeworICBGaWxlUGF0aCBkZWZhdWx0X3BhdGg7CisgIEZpbGVQYXRoIG5vbl9k
ZWZhdWx0X3BhdGgoInBhdGgiKTsKKyAgbm9uX2RlZmF1bHRfcGF0aCA9IGRlZmF1bHRfcGF0aDsK
KyAgRVhQRUNUX0VRKCIiLCBub25fZGVmYXVsdF9wYXRoLnN0cmluZygpKTsKKyAgRVhQRUNUX0VR
KCIiLCBkZWZhdWx0X3BhdGguc3RyaW5nKCkpOyAgLy8gUkhTIHZhciBpcyB1bmNoYW5nZWQuCit9
CisKK1RFU1QoQXNzaWdubWVudE9wZXJhdG9yVGVzdCwgTm9uRGVmYXVsdEFzc2lnbmVkVG9EZWZh
dWx0KSB7CisgIEZpbGVQYXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgiKTsKKyAgRmlsZVBhdGgg
ZGVmYXVsdF9wYXRoOworICBkZWZhdWx0X3BhdGggPSBub25fZGVmYXVsdF9wYXRoOworICBFWFBF
Q1RfRVEoInBhdGgiLCBkZWZhdWx0X3BhdGguc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoInBhdGgi
LCBub25fZGVmYXVsdF9wYXRoLnN0cmluZygpKTsgIC8vIFJIUyB2YXIgaXMgdW5jaGFuZ2VkLgor
fQorCitURVNUKEFzc2lnbm1lbnRPcGVyYXRvclRlc3QsIENvbnN0QXNzaWduZWRUb05vbkNvbnN0
KSB7CisgIGNvbnN0IEZpbGVQYXRoIGNvbnN0X2RlZmF1bHRfcGF0aCgiY29uc3RfcGF0aCIpOwor
ICBGaWxlUGF0aCBub25fZGVmYXVsdF9wYXRoKCJwYXRoIik7CisgIG5vbl9kZWZhdWx0X3BhdGgg
PSBjb25zdF9kZWZhdWx0X3BhdGg7CisgIEVYUEVDVF9FUSgiY29uc3RfcGF0aCIsIG5vbl9kZWZh
dWx0X3BhdGguc3RyaW5nKCkpOworfQorCitjbGFzcyBEaXJlY3RvcnlDcmVhdGlvblRlc3QgOiBw
dWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAg
dGVzdGRhdGFfcGF0aF8uU2V0KEZpbGVQYXRoKAorICAgICAgICBUZW1wRGlyKCkgKyBHZXRDdXJy
ZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmcoKSArCisgICAgICAgICJfZGlyZWN0b3J5X2NyZWF0
aW9uIiBHVEVTVF9QQVRIX1NFUF8gInRlc3QiIEdURVNUX1BBVEhfU0VQXykpOworICAgIHRlc3Rk
YXRhX2ZpbGVfLlNldCh0ZXN0ZGF0YV9wYXRoXy5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3Io
KSk7CisKKyAgICB1bmlxdWVfZmlsZTBfLlNldChGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKHRlc3Rk
YXRhX3BhdGhfLCBGaWxlUGF0aCgidW5pcXVlIiksCisgICAgICAgIDAsICJ0eHQiKSk7CisgICAg
dW5pcXVlX2ZpbGUxXy5TZXQoRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZSh0ZXN0ZGF0YV9wYXRoXywg
RmlsZVBhdGgoInVuaXF1ZSIpLAorICAgICAgICAxLCAidHh0IikpOworCisgICAgcmVtb3ZlKHRl
c3RkYXRhX2ZpbGVfLmNfc3RyKCkpOworICAgIHJlbW92ZSh1bmlxdWVfZmlsZTBfLmNfc3RyKCkp
OworICAgIHJlbW92ZSh1bmlxdWVfZmlsZTFfLmNfc3RyKCkpOworICAgIHBvc2l4OjpSbURpcih0
ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigp
IHsKKyAgICByZW1vdmUodGVzdGRhdGFfZmlsZV8uY19zdHIoKSk7CisgICAgcmVtb3ZlKHVuaXF1
ZV9maWxlMF8uY19zdHIoKSk7CisgICAgcmVtb3ZlKHVuaXF1ZV9maWxlMV8uY19zdHIoKSk7Cisg
ICAgcG9zaXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhfLmNfc3RyKCkpOworICB9CisKKyAgdm9pZCBD
cmVhdGVUZXh0RmlsZShjb25zdCBjaGFyKiBmaWxlbmFtZSkgeworICAgIEZJTEUqIGYgPSBwb3Np
eDo6Rk9wZW4oZmlsZW5hbWUsICJ3Iik7CisgICAgZnByaW50ZihmLCAidGV4dFxuIik7CisgICAg
ZmNsb3NlKGYpOworICB9CisKKyAgLy8gU3RyaW5ncyByZXByZXNlbnRpbmcgYSBkaXJlY3Rvcnkg
YW5kIGEgZmlsZSwgd2l0aCBpZGVudGljYWwgcGF0aHMKKyAgLy8gZXhjZXB0IGZvciB0aGUgdHJh
aWxpbmcgc2VwYXJhdG9yIGNoYXJhY3RlciB0aGF0IGRpc3RpbnF1aXNoZXMKKyAgLy8gYSBkaXJl
Y3RvcnkgbmFtZWQgJ3Rlc3QnIGZyb20gYSBmaWxlIG5hbWVkICd0ZXN0Jy4gRXhhbXBsZSBuYW1l
czoKKyAgRmlsZVBhdGggdGVzdGRhdGFfcGF0aF87ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRp
b24vdGVzdC8iCisgIEZpbGVQYXRoIHRlc3RkYXRhX2ZpbGVfOyAgLy8gIi90bXAvZGlyZWN0b3J5
X2NyZWF0aW9uL3Rlc3QiCisgIEZpbGVQYXRoIHVuaXF1ZV9maWxlMF87ICAvLyAiL3RtcC9kaXJl
Y3RvcnlfY3JlYXRpb24vdGVzdC91bmlxdWUudHh0IgorICBGaWxlUGF0aCB1bmlxdWVfZmlsZTFf
OyAgLy8gIi90bXAvZGlyZWN0b3J5X2NyZWF0aW9uL3Rlc3QvdW5pcXVlXzEudHh0IgorfTsKKwor
VEVTVF9GKERpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVs
eSkgeworICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfcGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkpIDw8
IHRlc3RkYXRhX3BhdGhfLnN0cmluZygpOworICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5D
cmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOworICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9w
YXRoXy5EaXJlY3RvcnlFeGlzdHMoKSk7Cit9CisKK1RFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRl
c3QsIENyZWF0ZURpcmVjdG9yaWVzRm9yQWxyZWFkeUV4aXN0aW5nUGF0aCkgeworICBFWFBFQ1Rf
RkFMU0UodGVzdGRhdGFfcGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkpIDw8IHRlc3RkYXRhX3BhdGhf
LnN0cmluZygpOworICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmll
c1JlY3Vyc2l2ZWx5KCkpOworICAvLyBDYWxsICdjcmVhdGUnIGFnYWluLi4uIHNob3VsZCBzdGls
bCBzdWNjZWVkLgorICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmll
c1JlY3Vyc2l2ZWx5KCkpOworfQorCitURVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVh
dGVEaXJlY3Rvcmllc0FuZFVuaXF1ZUZpbGVuYW1lKSB7CisgIEZpbGVQYXRoIGZpbGVfcGF0aChG
aWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFtZSh0ZXN0ZGF0YV9wYXRoXywKKyAgICAgIEZp
bGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIpKTsKKyAgRVhQRUNUX0VRKHVuaXF1ZV9maWxlMF8uc3Ry
aW5nKCksIGZpbGVfcGF0aC5zdHJpbmcoKSk7CisgIEVYUEVDVF9GQUxTRShmaWxlX3BhdGguRmls
ZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8gZmlsZSBub3QgdGhlcmUKKworICB0ZXN0ZGF0YV9w
YXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCk7CisgIEVYUEVDVF9GQUxTRShmaWxl
X3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8gZmlsZSBzdGlsbCBub3QgdGhlcmUK
KyAgQ3JlYXRlVGV4dEZpbGUoZmlsZV9wYXRoLmNfc3RyKCkpOworICBFWFBFQ1RfVFJVRShmaWxl
X3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOworCisgIEZpbGVQYXRoIGZpbGVfcGF0aDIo
RmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5hbWUodGVzdGRhdGFfcGF0aF8sCisgICAgICBG
aWxlUGF0aCgidW5pcXVlIiksICJ0eHQiKSk7CisgIEVYUEVDVF9FUSh1bmlxdWVfZmlsZTFfLnN0
cmluZygpLCBmaWxlX3BhdGgyLnN0cmluZygpKTsKKyAgRVhQRUNUX0ZBTFNFKGZpbGVfcGF0aDIu
RmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8gZmlsZSBub3QgdGhlcmUKKyAgQ3JlYXRlVGV4
dEZpbGUoZmlsZV9wYXRoMi5jX3N0cigpKTsKKyAgRVhQRUNUX1RSVUUoZmlsZV9wYXRoMi5GaWxl
T3JEaXJlY3RvcnlFeGlzdHMoKSk7Cit9CisKK1RFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3Qs
IENyZWF0ZURpcmVjdG9yaWVzRmFpbCkgeworICAvLyBmb3JjZSBhIGZhaWx1cmUgYnkgcHV0dGlu
ZyBhIGZpbGUgd2hlcmUgd2Ugd2lsbCB0cnkgdG8gY3JlYXRlIGEgZGlyZWN0b3J5LgorICBDcmVh
dGVUZXh0RmlsZSh0ZXN0ZGF0YV9maWxlXy5jX3N0cigpKTsKKyAgRVhQRUNUX1RSVUUodGVzdGRh
dGFfZmlsZV8uRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOworICBFWFBFQ1RfRkFMU0UodGVzdGRh
dGFfZmlsZV8uRGlyZWN0b3J5RXhpc3RzKCkpOworICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfZmls
ZV8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKTsKK30KKworVEVTVChOb0RpcmVjdG9y
eUNyZWF0aW9uVGVzdCwgQ3JlYXRlTm9EaXJlY3Rvcmllc0ZvckRlZmF1bHRYbWxGaWxlKSB7Cisg
IGNvbnN0IEZpbGVQYXRoIHRlc3RfZGV0YWlsX3htbCgidGVzdF9kZXRhaWwueG1sIik7CisgIEVY
UEVDVF9GQUxTRSh0ZXN0X2RldGFpbF94bWwuQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgp
KTsKK30KKworVEVTVChGaWxlUGF0aFRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvcikgeworICBGaWxl
UGF0aCBmcDsKKyAgRVhQRUNUX0VRKCIiLCBmcC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoRmlsZVBh
dGhUZXN0LCBDaGFyQW5kQ29weUNvbnN0cnVjdG9ycykgeworICBjb25zdCBGaWxlUGF0aCBmcCgi
c3BpY3kiKTsKKyAgRVhQRUNUX0VRKCJzcGljeSIsIGZwLnN0cmluZygpKTsKKworICBjb25zdCBG
aWxlUGF0aCBmcF9jb3B5KGZwKTsKKyAgRVhQRUNUX0VRKCJzcGljeSIsIGZwX2NvcHkuc3RyaW5n
KCkpOworfQorCitURVNUKEZpbGVQYXRoVGVzdCwgU3RyaW5nQ29uc3RydWN0b3IpIHsKKyAgY29u
c3QgRmlsZVBhdGggZnAoc3RkOjpzdHJpbmcoImNpZGVyIikpOworICBFWFBFQ1RfRVEoImNpZGVy
IiwgZnAuc3RyaW5nKCkpOworfQorCitURVNUKEZpbGVQYXRoVGVzdCwgU2V0KSB7CisgIGNvbnN0
IEZpbGVQYXRoIGFwcGxlKCJhcHBsZSIpOworICBGaWxlUGF0aCBtYWMoIm1hYyIpOworICBtYWMu
U2V0KGFwcGxlKTsgIC8vIEltcGxlbWVudCBTZXQoKSBzaW5jZSBvdmVybG9hZGluZyBvcGVyYXRv
cj0gaXMgZm9yYmlkZGVuLgorICBFWFBFQ1RfRVEoImFwcGxlIiwgbWFjLnN0cmluZygpKTsKKyAg
RVhQRUNUX0VRKCJhcHBsZSIsIGFwcGxlLnN0cmluZygpKTsKK30KKworVEVTVChGaWxlUGF0aFRl
c3QsIFRvU3RyaW5nKSB7CisgIGNvbnN0IEZpbGVQYXRoIGZpbGUoImRyaW5rIik7CisgIEVYUEVD
VF9FUSgiZHJpbmsiLCBmaWxlLnN0cmluZygpKTsKK30KKworVEVTVChGaWxlUGF0aFRlc3QsIFJl
bW92ZUV4dGVuc2lvbikgeworICBFWFBFQ1RfRVEoImFwcCIsIEZpbGVQYXRoKCJhcHAuY2MiKS5S
ZW1vdmVFeHRlbnNpb24oImNjIikuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoImFwcCIsIEZpbGVQ
YXRoKCJhcHAuZXhlIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5zdHJpbmcoKSk7CisgIEVYUEVD
VF9FUSgiQVBQIiwgRmlsZVBhdGgoIkFQUC5FWEUiKS5SZW1vdmVFeHRlbnNpb24oImV4ZSIpLnN0
cmluZygpKTsKK30KKworVEVTVChGaWxlUGF0aFRlc3QsIFJlbW92ZUV4dGVuc2lvbldoZW5UaGVy
ZUlzTm9FeHRlbnNpb24pIHsKKyAgRVhQRUNUX0VRKCJhcHAiLCBGaWxlUGF0aCgiYXBwIikuUmVt
b3ZlRXh0ZW5zaW9uKCJleGUiKS5zdHJpbmcoKSk7Cit9CisKK1RFU1QoRmlsZVBhdGhUZXN0LCBJ
c0RpcmVjdG9yeSkgeworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImNvbGEiKS5Jc0RpcmVjdG9y
eSgpKTsKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImtvYWxhIiBHVEVTVF9QQVRIX1NFUF8pLklz
RGlyZWN0b3J5KCkpOworI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCisgIEVYUEVDVF9UUlVF
KEZpbGVQYXRoKCJrb2FsYS8iKS5Jc0RpcmVjdG9yeSgpKTsKKyNlbmRpZgorfQorCitURVNUKEZp
bGVQYXRoVGVzdCwgSXNBYnNvbHV0ZVBhdGgpIHsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJp
cyIgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIpLklzQWJzb2x1dGVQYXRoKCkpOworICBFWFBF
Q1RfRkFMU0UoRmlsZVBhdGgoIiIpLklzQWJzb2x1dGVQYXRoKCkpOworI2lmIEdURVNUX09TX1dJ
TkRPV1MKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImM6XFwiIEdURVNUX1BBVEhfU0VQXyAiaXNf
bm90IgorICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIiku
SXNBYnNvbHV0ZVBhdGgoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYzpmb28iIEdURVNU
X1BBVEhfU0VQXyAiYmFyIikuSXNBYnNvbHV0ZVBhdGgoKSk7CisgIEVYUEVDVF9UUlVFKEZpbGVQ
YXRoKCJjOi8iIEdURVNUX1BBVEhfU0VQXyAiaXNfbm90IgorICAgICAgICAgICAgICAgICAgICAg
ICBHVEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIikuSXNBYnNvbHV0ZVBhdGgoKSk7CisjZWxzZQor
ICBFWFBFQ1RfVFJVRShGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gImlzX25vdCIgR1RFU1RfUEFU
SF9TRVBfICJyZWxhdGl2ZSIpCisgICAgICAgICAgICAgIC5Jc0Fic29sdXRlUGF0aCgpKTsKKyNl
bmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworfQorCitURVNUKEZpbGVQYXRoVGVzdCwgSXNSb290
RGlyZWN0b3J5KSB7CisjaWYgR1RFU1RfT1NfV0lORE9XUworICBFWFBFQ1RfVFJVRShGaWxlUGF0
aCgiYTpcXCIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIlo6
LyIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImU6Ly8iKS5J
c1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiIikuSXNSb290RGly
ZWN0b3J5KCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImI6IikuSXNSb290RGlyZWN0b3J5
KCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImI6YSIpLklzUm9vdERpcmVjdG9yeSgpKTsK
KyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCI4Oi8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVY
UEVDVF9GQUxTRShGaWxlUGF0aCgiY3wvIikuSXNSb290RGlyZWN0b3J5KCkpOworI2Vsc2UKKyAg
RVhQRUNUX1RSVUUoRmlsZVBhdGgoIi8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9U
UlVFKEZpbGVQYXRoKCIvLyIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZp
bGVQYXRoKCIiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgi
XFwiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiL3giKS5J
c1Jvb3REaXJlY3RvcnkoKSk7CisjZW5kaWYKK30KKworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBu
YW1lc3BhY2UgaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0LnB5
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWZpbHRlci11bml0dGVz
dC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kYzBiNWJkOWE1Y2ZjNWJmZThjNjhhZjFiNjQ3ODk5ZTFmZWJkYTY3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LWZpbHRlci11bml0dGVzdC5weQpAQCAtMCwwICsxLDYzNiBAQAorIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmli
dXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0IHRl
c3QgZmlsdGVycy4KKworQSB1c2VyIGNhbiBzcGVjaWZ5IHdoaWNoIHRlc3QocykgaW4gYSBHb29n
bGUgVGVzdCBwcm9ncmFtIHRvIHJ1biB2aWEgZWl0aGVyCit0aGUgR1RFU1RfRklMVEVSIGVudmly
b25tZW50IHZhcmlhYmxlIG9yIHRoZSAtLWd0ZXN0X2ZpbHRlciBmbGFnLgorVGhpcyBzY3JpcHQg
dGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5IGJ5IGludm9raW5nCitnb29nbGV0ZXN0LWZpbHRlci11
bml0dGVzdF8gKGEgcHJvZ3JhbSB3cml0dGVuIHdpdGggR29vZ2xlIFRlc3QpIHdpdGggZGlmZmVy
ZW50CitlbnZpcm9ubWVudHMgYW5kIGNvbW1hbmQgbGluZSBmbGFncy4KKworTm90ZSB0aGF0IHRl
c3Qgc2hhcmRpbmcgbWF5IGFsc28gaW5mbHVlbmNlIHdoaWNoIHRlc3RzIGFyZSBmaWx0ZXJlZC4g
VGhlcmVmb3JlLAord2UgdGVzdCB0aGF0IGhlcmUgYWxzby4KKyIiIgorCitpbXBvcnQgb3MKK2lt
cG9ydCByZQoraW1wb3J0IHNldHMKK2ltcG9ydCBzeXMKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxz
CisKKyMgQ29uc3RhbnRzLgorCisjIENoZWNrcyBpZiB0aGlzIHBsYXRmb3JtIGNhbiBwYXNzIGVt
cHR5IGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBjaGlsZAorIyBwcm9jZXNzZXMuICBXZSBzZXQg
YW4gZW52IHZhcmlhYmxlIHRvIGFuIGVtcHR5IHN0cmluZyBhbmQgaW52b2tlIGEgcHl0aG9uCisj
IHNjcmlwdCBpbiBhIHN1YnByb2Nlc3MgdG8gcHJpbnQgd2hldGhlciB0aGUgdmFyaWFibGUgaXMg
U1RJTEwgaW4KKyMgb3MuZW52aXJvbi4gIFdlIHRoZW4gdXNlICdldmFsJyB0byBwYXJzZSB0aGUg
Y2hpbGQncyBvdXRwdXQgc28gdGhhdCBhbgorIyBleGNlcHRpb24gaXMgdGhyb3duIGlmIHRoZSBp
bnB1dCBpcyBhbnl0aGluZyBvdGhlciB0aGFuICdUcnVlJyBub3IgJ0ZhbHNlJy4KK0NBTl9QQVNT
X0VNUFRZX0VOViA9IEZhbHNlCitpZiBzeXMuZXhlY3V0YWJsZToKKyAgb3MuZW52aXJvblsnRU1Q
VFlfVkFSJ10gPSAnJworICBjaGlsZCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKKyAg
ICAgIFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgJ2ltcG9ydCBvczsgcHJpbnQgXCdFTVBUWV9WQVJc
JyBpbiBvcy5lbnZpcm9uJ10pCisgIENBTl9QQVNTX0VNUFRZX0VOViA9IGV2YWwoY2hpbGQub3V0
cHV0KQorCisKKyMgQ2hlY2sgaWYgdGhpcyBwbGF0Zm9ybSBjYW4gdW5zZXQgZW52aXJvbm1lbnQg
dmFyaWFibGVzIGluIGNoaWxkIHByb2Nlc3Nlcy4KKyMgV2Ugc2V0IGFuIGVudiB2YXJpYWJsZSB0
byBhIG5vbi1lbXB0eSBzdHJpbmcsIHVuc2V0IGl0LCBhbmQgaW52b2tlCisjIGEgcHl0aG9uIHNj
cmlwdCBpbiBhIHN1YnByb2Nlc3MgdG8gcHJpbnQgd2hldGhlciB0aGUgdmFyaWFibGUKKyMgaXMg
Tk8gTE9OR0VSIGluIG9zLmVudmlyb24uCisjIFdlIHVzZSAnZXZhbCcgdG8gcGFyc2UgdGhlIGNo
aWxkJ3Mgb3V0cHV0IHNvIHRoYXQgYW4gZXhjZXB0aW9uCisjIGlzIHRocm93biBpZiB0aGUgaW5w
dXQgaXMgbmVpdGhlciAnVHJ1ZScgbm9yICdGYWxzZScuCitDQU5fVU5TRVRfRU5WID0gRmFsc2UK
K2lmIHN5cy5leGVjdXRhYmxlOgorICBvcy5lbnZpcm9uWydVTlNFVF9WQVInXSA9ICdYJworICBk
ZWwgb3MuZW52aXJvblsnVU5TRVRfVkFSJ10KKyAgY2hpbGQgPSBndGVzdF90ZXN0X3V0aWxzLlN1
YnByb2Nlc3MoCisgICAgICBbc3lzLmV4ZWN1dGFibGUsICctYycsICdpbXBvcnQgb3M7IHByaW50
IFwnVU5TRVRfVkFSXCcgbm90IGluIG9zLmVudmlyb24nCisgICAgICBdKQorICBDQU5fVU5TRVRf
RU5WID0gZXZhbChjaGlsZC5vdXRwdXQpCisKKworIyBDaGVja3MgaWYgd2Ugc2hvdWxkIHRlc3Qg
d2l0aCBhbiBlbXB0eSBmaWx0ZXIuIFRoaXMgZG9lc24ndAorIyBtYWtlIHNlbnNlIG9uIHBsYXRm
b3JtcyB0aGF0IGNhbm5vdCBwYXNzIGVtcHR5IGVudiB2YXJpYWJsZXMgKFdpbjMyKQorIyBhbmQg
b24gcGxhdGZvcm1zIHRoYXQgY2Fubm90IHVuc2V0IHZhcmlhYmxlcyAoc2luY2Ugd2UgY2Fubm90
IHRlbGwKKyMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAiIiBhbmQgTlVMTCAtLSBCb3JsYW5kIGFu
ZCBTb2xhcmlzIDwgNS4xMCkKK0NBTl9URVNUX0VNUFRZX0ZJTFRFUiA9IChDQU5fUEFTU19FTVBU
WV9FTlYgYW5kIENBTl9VTlNFVF9FTlYpCisKKworIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUg
Zm9yIHNwZWNpZnlpbmcgdGhlIHRlc3QgZmlsdGVycy4KK0ZJTFRFUl9FTlZfVkFSID0gJ0dURVNU
X0ZJTFRFUicKKworIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0ZXN0IHNoYXJkaW5n
LgorVE9UQUxfU0hBUkRTX0VOVl9WQVIgPSAnR1RFU1RfVE9UQUxfU0hBUkRTJworU0hBUkRfSU5E
RVhfRU5WX1ZBUiA9ICdHVEVTVF9TSEFSRF9JTkRFWCcKK1NIQVJEX1NUQVRVU19GSUxFX0VOVl9W
QVIgPSAnR1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEUnCisKKyMgVGhlIGNvbW1hbmQgbGluZSBmbGFn
IGZvciBzcGVjaWZ5aW5nIHRoZSB0ZXN0IGZpbHRlcnMuCitGSUxURVJfRkxBRyA9ICdndGVzdF9m
aWx0ZXInCisKKyMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciBpbmNsdWRpbmcgZGlzYWJsZWQg
dGVzdHMuCitBTFNPX1JVTl9ESVNBQkxFRF9URVNUU19GTEFHID0gJ2d0ZXN0X2Fsc29fcnVuX2Rp
c2FibGVkX3Rlc3RzJworCisjIENvbW1hbmQgdG8gcnVuIHRoZSBnb29nbGV0ZXN0LWZpbHRlci11
bml0dGVzdF8gcHJvZ3JhbS4KK0NPTU1BTkQgPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVj
dXRhYmxlUGF0aCgnZ29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3RfJykKKworIyBSZWdleCBmb3Ig
ZGV0ZXJtaW5pbmcgd2hldGhlciBwYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBlbmFibGVkIGluIHRo
ZSBiaW5hcnkuCitQQVJBTV9URVNUX1JFR0VYID0gcmUuY29tcGlsZShyJy9QYXJhbVRlc3QnKQor
CisjIFJlZ2V4IGZvciBwYXJzaW5nIHRlc3QgY2FzZSBuYW1lcyBmcm9tIEdvb2dsZSBUZXN0J3Mg
b3V0cHV0LgorVEVTVF9DQVNFX1JFR0VYID0gcmUuY29tcGlsZShyJ15cW1wtK1xdIFxkKyB0ZXN0
cz8gZnJvbSAoXHcrKC9cdyspPyknKQorCisjIFJlZ2V4IGZvciBwYXJzaW5nIHRlc3QgbmFtZXMg
ZnJvbSBHb29nbGUgVGVzdCdzIG91dHB1dC4KK1RFU1RfUkVHRVggPSByZS5jb21waWxlKHInXlxb
XHMqUlVOXHMqXF0uKlwuKFx3KygvXHcrKT8pJykKKworIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcg
dG8gdGVsbCBHb29nbGUgVGVzdCB0byBvdXRwdXQgdGhlIGxpc3Qgb2YgdGVzdHMgaXQKKyMgd2ls
bCBydW4uCitMSVNUX1RFU1RTX0ZMQUcgPSAnLS1ndGVzdF9saXN0X3Rlc3RzJworCisjIEluZGlj
YXRlcyB3aGV0aGVyIEdvb2dsZSBUZXN0IHN1cHBvcnRzIGRlYXRoIHRlc3RzLgorU1VQUE9SVFNf
REVBVEhfVEVTVFMgPSAnSGFzRGVhdGhUZXN0JyBpbiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nl
c3MoCisgICAgW0NPTU1BTkQsIExJU1RfVEVTVFNfRkxBR10pLm91dHB1dAorCisjIEZ1bGwgbmFt
ZXMgb2YgYWxsIHRlc3RzIGluIGdvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0c18uCitQQVJBTV9U
RVNUUyA9IFsKKyAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMCcsCisgICAgJ1NlcVAvUGFyYW1U
ZXN0LlRlc3RYLzEnLAorICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8wJywKKyAgICAnU2VxUC9Q
YXJhbVRlc3QuVGVzdFkvMScsCisgICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RYLzAnLAorICAgICdT
ZXFRL1BhcmFtVGVzdC5UZXN0WC8xJywKKyAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFkvMCcsCisg
ICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RZLzEnLAorICAgIF0KKworRElTQUJMRURfVEVTVFMgPSBb
CisgICAgJ0JhclRlc3QuRElTQUJMRURfVGVzdEZvdXInLAorICAgICdCYXJUZXN0LkRJU0FCTEVE
X1Rlc3RGaXZlJywKKyAgICAnQmF6VGVzdC5ESVNBQkxFRF9UZXN0QycsCisgICAgJ0RJU0FCTEVE
X0Zvb2JhclRlc3QuVGVzdDEnLAorICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LkRJU0FCTEVEX1Rl
c3QyJywKKyAgICAnRElTQUJMRURfRm9vYmFyYmF6VGVzdC5UZXN0QScsCisgICAgXQorCitpZiBT
VVBQT1JUU19ERUFUSF9URVNUUzoKKyAgREVBVEhfVEVTVFMgPSBbCisgICAgJ0hhc0RlYXRoVGVz
dC5UZXN0MScsCisgICAgJ0hhc0RlYXRoVGVzdC5UZXN0MicsCisgICAgXQorZWxzZToKKyAgREVB
VEhfVEVTVFMgPSBbXQorCisjIEFsbCB0aGUgbm9uLWRpc2FibGVkIHRlc3RzLgorQUNUSVZFX1RF
U1RTID0gWworICAgICdGb29UZXN0LkFiYycsCisgICAgJ0Zvb1Rlc3QuWHl6JywKKworICAgICdC
YXJUZXN0LlRlc3RPbmUnLAorICAgICdCYXJUZXN0LlRlc3RUd28nLAorICAgICdCYXJUZXN0LlRl
c3RUaHJlZScsCisKKyAgICAnQmF6VGVzdC5UZXN0T25lJywKKyAgICAnQmF6VGVzdC5UZXN0QScs
CisgICAgJ0JhelRlc3QuVGVzdEInLAorICAgIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RT
CisKK3BhcmFtX3Rlc3RzX3ByZXNlbnQgPSBOb25lCisKKyMgVXRpbGl0aWVzLgorCitlbnZpcm9u
ID0gb3MuZW52aXJvbi5jb3B5KCkKKworCitkZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToK
KyAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxlIHRvICd2YWx1ZSc7IHVuc2V0cyBpdCB3aGVuICd2
YWx1ZScgaXMgTm9uZS4iIiIKKworICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKKyAgICBlbnZpcm9u
W2Vudl92YXJdID0gdmFsdWUKKyAgZWxpZiBlbnZfdmFyIGluIGVudmlyb246CisgICAgZGVsIGVu
dmlyb25bZW52X3Zhcl0KKworCitkZWYgUnVuQW5kUmV0dXJuT3V0cHV0KGFyZ3MgPSBOb25lKToK
KyAgIiIiUnVucyB0aGUgdGVzdCBwcm9ncmFtIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQuIiIiCisK
KyAgcmV0dXJuIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhbQ09NTUFORF0gKyAoYXJncyBv
ciBbXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudmlyb24p
Lm91dHB1dAorCisKK2RlZiBSdW5BbmRFeHRyYWN0VGVzdExpc3QoYXJncyA9IE5vbmUpOgorICAi
IiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0gYW5kIHJldHVybnMgaXRzIGV4aXQgY29kZSBhbmQgYSBs
aXN0IG9mIHRlc3RzIHJ1bi4iIiIKKworICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNz
KFtDT01NQU5EXSArIChhcmdzIG9yIFtdKSwgZW52PWVudmlyb24pCisgIHRlc3RzX3J1biA9IFtd
CisgIHRlc3RfY2FzZSA9ICcnCisgIHRlc3QgPSAnJworICBmb3IgbGluZSBpbiBwLm91dHB1dC5z
cGxpdCgnXG4nKToKKyAgICBtYXRjaCA9IFRFU1RfQ0FTRV9SRUdFWC5tYXRjaChsaW5lKQorICAg
IGlmIG1hdGNoIGlzIG5vdCBOb25lOgorICAgICAgdGVzdF9jYXNlID0gbWF0Y2guZ3JvdXAoMSkK
KyAgICBlbHNlOgorICAgICAgbWF0Y2ggPSBURVNUX1JFR0VYLm1hdGNoKGxpbmUpCisgICAgICBp
ZiBtYXRjaCBpcyBub3QgTm9uZToKKyAgICAgICAgdGVzdCA9IG1hdGNoLmdyb3VwKDEpCisgICAg
ICAgIHRlc3RzX3J1bi5hcHBlbmQodGVzdF9jYXNlICsgJy4nICsgdGVzdCkKKyAgcmV0dXJuICh0
ZXN0c19ydW4sIHAuZXhpdF9jb2RlKQorCisKK2RlZiBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0
cmFfZW52LCBmdW5jdGlvbiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgIiIiUnVucyB0aGUgZ2l2ZW4g
ZnVuY3Rpb24gYW5kIGFyZ3VtZW50cyBpbiBhIG1vZGlmaWVkIGVudmlyb25tZW50LiIiIgorICB0
cnk6CisgICAgb3JpZ2luYWxfZW52ID0gZW52aXJvbi5jb3B5KCkKKyAgICBlbnZpcm9uLnVwZGF0
ZShleHRyYV9lbnYpCisgICAgcmV0dXJuIGZ1bmN0aW9uKCphcmdzLCAqKmt3YXJncykKKyAgZmlu
YWxseToKKyAgICBlbnZpcm9uLmNsZWFyKCkKKyAgICBlbnZpcm9uLnVwZGF0ZShvcmlnaW5hbF9l
bnYpCisKKworZGVmIFJ1bldpdGhTaGFyZGluZyh0b3RhbF9zaGFyZHMsIHNoYXJkX2luZGV4LCBj
b21tYW5kKToKKyAgIiIiUnVucyBhIHRlc3QgcHJvZ3JhbSBzaGFyZCBhbmQgcmV0dXJucyBleGl0
IGNvZGUgYW5kIGEgbGlzdCBvZiB0ZXN0cyBydW4uIiIiCisKKyAgZXh0cmFfZW52ID0ge1NIQVJE
X0lOREVYX0VOVl9WQVI6IHN0cihzaGFyZF9pbmRleCksCisgICAgICAgICAgICAgICBUT1RBTF9T
SEFSRFNfRU5WX1ZBUjogc3RyKHRvdGFsX3NoYXJkcyl9CisgIHJldHVybiBJbnZva2VXaXRoTW9k
aWZpZWRFbnYoZXh0cmFfZW52LCBSdW5BbmRFeHRyYWN0VGVzdExpc3QsIGNvbW1hbmQpCisKKyMg
VGhlIHVuaXQgdGVzdC4KKworCitjbGFzcyBHVGVzdEZpbHRlclVuaXRUZXN0KGd0ZXN0X3Rlc3Rf
dXRpbHMuVGVzdENhc2UpOgorICAiIiJUZXN0cyB0aGUgZW52IHZhcmlhYmxlIG9yIHRoZSBjb21t
YW5kIGxpbmUgZmxhZyB0byBmaWx0ZXIgdGVzdHMuIiIiCisKKyAgIyBVdGlsaXRpZXMuCisKKyAg
ZGVmIEFzc2VydFNldEVxdWFsKHNlbGYsIGxocywgcmhzKToKKyAgICAiIiJBc3NlcnRzIHRoYXQg
dHdvIHNldHMgYXJlIGVxdWFsLiIiIgorCisgICAgZm9yIGVsZW0gaW4gbGhzOgorICAgICAgc2Vs
Zi5hc3NlcnRfKGVsZW0gaW4gcmhzLCAnJXMgaW4gJXMnICUgKGVsZW0sIHJocykpCisKKyAgICBm
b3IgZWxlbSBpbiByaHM6CisgICAgICBzZWxmLmFzc2VydF8oZWxlbSBpbiBsaHMsICclcyBpbiAl
cycgJSAoZWxlbSwgbGhzKSkKKworICBkZWYgQXNzZXJ0UGFydGl0aW9uSXNWYWxpZChzZWxmLCBz
ZXRfdmFyLCBsaXN0X29mX3NldHMpOgorICAgICIiIkFzc2VydHMgdGhhdCBsaXN0X29mX3NldHMg
aXMgYSB2YWxpZCBwYXJ0aXRpb24gb2Ygc2V0X3Zhci4iIiIKKworICAgIGZ1bGxfcGFydGl0aW9u
ID0gW10KKyAgICBmb3Igc2xpY2VfdmFyIGluIGxpc3Rfb2Zfc2V0czoKKyAgICAgIGZ1bGxfcGFy
dGl0aW9uLmV4dGVuZChzbGljZV92YXIpCisgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2V0X3Zh
ciksIGxlbihmdWxsX3BhcnRpdGlvbikpCisgICAgc2VsZi5hc3NlcnRFcXVhbChzZXRzLlNldChz
ZXRfdmFyKSwgc2V0cy5TZXQoZnVsbF9wYXJ0aXRpb24pKQorCisgIGRlZiBBZGp1c3RGb3JQYXJh
bWV0ZXJpemVkVGVzdHMoc2VsZiwgdGVzdHNfdG9fcnVuKToKKyAgICAiIiJBZGp1c3QgdGVzdHNf
dG9fcnVuIGluIGNhc2UgdmFsdWUgcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZGlzYWJsZWQuIiIi
CisKKyAgICBnbG9iYWwgcGFyYW1fdGVzdHNfcHJlc2VudAorICAgIGlmIG5vdCBwYXJhbV90ZXN0
c19wcmVzZW50OgorICAgICAgcmV0dXJuIGxpc3Qoc2V0cy5TZXQodGVzdHNfdG9fcnVuKSAtIHNl
dHMuU2V0KFBBUkFNX1RFU1RTKSkKKyAgICBlbHNlOgorICAgICAgcmV0dXJuIHRlc3RzX3RvX3J1
bgorCisgIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwgZ3Rlc3RfZmlsdGVyLCB0ZXN0c190b19ydW4p
OgorICAgICIiIkNoZWNrcyB0aGF0IHRoZSBiaW5hcnkgcnVucyBjb3JyZWN0IHNldCBvZiB0ZXN0
cyBmb3IgYSBnaXZlbiBmaWx0ZXIuIiIiCisKKyAgICB0ZXN0c190b19ydW4gPSBzZWxmLkFkanVz
dEZvclBhcmFtZXRlcml6ZWRUZXN0cyh0ZXN0c190b19ydW4pCisKKyAgICAjIEZpcnN0LCB0ZXN0
cyB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuCisKKyAgICAjIFdpbmRvd3MgcmVtb3Zl
cyBlbXB0eSB2YXJpYWJsZXMgZnJvbSB0aGUgZW52aXJvbm1lbnQgd2hlbiBwYXNzaW5nIGl0Cisg
ICAgIyB0byBhIG5ldyBwcm9jZXNzLiAgVGhpcyBtZWFucyBpdCBpcyBpbXBvc3NpYmxlIHRvIHBh
c3MgYW4gZW1wdHkgZmlsdGVyCisgICAgIyBpbnRvIGEgcHJvY2VzcyB1c2luZyB0aGUgZW52aXJv
bm1lbnQgdmFyaWFibGUuICBIb3dldmVyLCB3ZSBjYW4gc3RpbGwKKyAgICAjIHRlc3QgdGhlIGNh
c2Ugd2hlbiB0aGUgdmFyaWFibGUgaXMgbm90IHN1cHBsaWVkIChpLmUuLCBndGVzdF9maWx0ZXIg
aXMKKyAgICAjIE5vbmUpLgorICAgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwMworICAgIGlm
IENBTl9URVNUX0VNUFRZX0ZJTFRFUiBvciBndGVzdF9maWx0ZXIgIT0gJyc6CisgICAgICBTZXRF
bnZWYXIoRklMVEVSX0VOVl9WQVIsIGd0ZXN0X2ZpbHRlcikKKyAgICAgIHRlc3RzX3J1biA9IFJ1
bkFuZEV4dHJhY3RUZXN0TGlzdCgpWzBdCisgICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIs
IE5vbmUpCisgICAgICBzZWxmLkFzc2VydFNldEVxdWFsKHRlc3RzX3J1biwgdGVzdHNfdG9fcnVu
KQorICAgICMgcHlsaW50OiBlbmFibGUtbXNnPUM2NDAzCisKKyAgICAjIE5leHQsIHRlc3RzIHVz
aW5nIHRoZSBjb21tYW5kIGxpbmUgZmxhZy4KKworICAgIGlmIGd0ZXN0X2ZpbHRlciBpcyBOb25l
OgorICAgICAgYXJncyA9IFtdCisgICAgZWxzZToKKyAgICAgIGFyZ3MgPSBbJy0tJXM9JXMnICUg
KEZJTFRFUl9GTEFHLCBndGVzdF9maWx0ZXIpXQorCisgICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0
cmFjdFRlc3RMaXN0KGFyZ3MpWzBdCisgICAgc2VsZi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4s
IHRlc3RzX3RvX3J1bikKKworICBkZWYgUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKHNlbGYsIGd0
ZXN0X2ZpbHRlciwgdG90YWxfc2hhcmRzLCB0ZXN0c190b19ydW4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXJncz1Ob25lLCBjaGVja19leGl0XzA9RmFsc2UpOgorICAgICIiIkNo
ZWNrcyB0aGF0IGJpbmFyeSBydW5zIGNvcnJlY3QgdGVzdHMgZm9yIHRoZSBnaXZlbiBmaWx0ZXIg
YW5kIHNoYXJkLgorCisgICAgUnVucyBhbGwgc2hhcmRzIG9mIGdvb2dsZXRlc3QtZmlsdGVyLXVu
aXR0ZXN0XyB3aXRoIHRoZSBnaXZlbiBmaWx0ZXIsIGFuZAorICAgIHZlcmlmaWVzIHRoYXQgdGhl
IHJpZ2h0IHNldCBvZiB0ZXN0cyB3ZXJlIHJ1bi4gVGhlIHVuaW9uIG9mIHRlc3RzIHJ1bgorICAg
IG9uIGVhY2ggc2hhcmQgc2hvdWxkIGJlIGlkZW50aWNhbCB0byB0ZXN0c190b19ydW4sIHdpdGhv
dXQgZHVwbGljYXRlcy4KKyAgICBJZiBjaGVja19leGl0XzAsIC4KKworICAgIEFyZ3M6CisgICAg
ICBndGVzdF9maWx0ZXI6IEEgZmlsdGVyIHRvIGFwcGx5IHRvIHRoZSB0ZXN0cy4KKyAgICAgIHRv
dGFsX3NoYXJkczogQSB0b3RhbCBudW1iZXIgb2Ygc2hhcmRzIHRvIHNwbGl0IHRlc3QgcnVuIGlu
dG8uCisgICAgICB0ZXN0c190b19ydW46IEEgc2V0IG9mIHRlc3RzIGV4cGVjdGVkIHRvIHJ1bi4K
KyAgICAgIGFyZ3MgICA6ICAgICAgQXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIHRvIHRoZSB0ZXN0
IGJpbmFyeS4KKyAgICAgIGNoZWNrX2V4aXRfMDogV2hlbiBzZXQgdG8gYSB0cnVlIHZhbHVlLCBt
YWtlIHN1cmUgdGhhdCBhbGwgc2hhcmRzCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwLgor
ICAgICIiIgorCisgICAgdGVzdHNfdG9fcnVuID0gc2VsZi5BZGp1c3RGb3JQYXJhbWV0ZXJpemVk
VGVzdHModGVzdHNfdG9fcnVuKQorCisgICAgIyBXaW5kb3dzIHJlbW92ZXMgZW1wdHkgdmFyaWFi
bGVzIGZyb20gdGhlIGVudmlyb25tZW50IHdoZW4gcGFzc2luZyBpdAorICAgICMgdG8gYSBuZXcg
cHJvY2Vzcy4gIFRoaXMgbWVhbnMgaXQgaXMgaW1wb3NzaWJsZSB0byBwYXNzIGFuIGVtcHR5IGZp
bHRlcgorICAgICMgaW50byBhIHByb2Nlc3MgdXNpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxl
LiAgSG93ZXZlciwgd2UgY2FuIHN0aWxsCisgICAgIyB0ZXN0IHRoZSBjYXNlIHdoZW4gdGhlIHZh
cmlhYmxlIGlzIG5vdCBzdXBwbGllZCAoaS5lLiwgZ3Rlc3RfZmlsdGVyIGlzCisgICAgIyBOb25l
KS4KKyAgICAjIHB5bGludDogZGlzYWJsZS1tc2c9QzY0MDMKKyAgICBpZiBDQU5fVEVTVF9FTVBU
WV9GSUxURVIgb3IgZ3Rlc3RfZmlsdGVyICE9ICcnOgorICAgICAgU2V0RW52VmFyKEZJTFRFUl9F
TlZfVkFSLCBndGVzdF9maWx0ZXIpCisgICAgICBwYXJ0aXRpb24gPSBbXQorICAgICAgZm9yIGkg
aW4gcmFuZ2UoMCwgdG90YWxfc2hhcmRzKToKKyAgICAgICAgKHRlc3RzX3J1biwgZXhpdF9jb2Rl
KSA9IFJ1bldpdGhTaGFyZGluZyh0b3RhbF9zaGFyZHMsIGksIGFyZ3MpCisgICAgICAgIGlmIGNo
ZWNrX2V4aXRfMDoKKyAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGV4aXRfY29kZSkKKyAg
ICAgICAgcGFydGl0aW9uLmFwcGVuZCh0ZXN0c19ydW4pCisKKyAgICAgIHNlbGYuQXNzZXJ0UGFy
dGl0aW9uSXNWYWxpZCh0ZXN0c190b19ydW4sIHBhcnRpdGlvbikKKyAgICAgIFNldEVudlZhcihG
SUxURVJfRU5WX1ZBUiwgTm9uZSkKKyAgICAjIHB5bGludDogZW5hYmxlLW1zZz1DNjQwMworCisg
IGRlZiBSdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKHNlbGYsIGd0ZXN0X2ZpbHRlciwgdGVz
dHNfdG9fcnVuKToKKyAgICAiIiJDaGVja3MgdGhhdCB0aGUgYmluYXJ5IHJ1bnMgY29ycmVjdCBz
ZXQgb2YgdGVzdHMgZm9yIHRoZSBnaXZlbiBmaWx0ZXIuCisKKyAgICBSdW5zIGdvb2dsZXRlc3Qt
ZmlsdGVyLXVuaXR0ZXN0XyB3aXRoIHRoZSBnaXZlbiBmaWx0ZXIsIGFuZCBlbmFibGVzCisgICAg
ZGlzYWJsZWQgdGVzdHMuIFZlcmlmaWVzIHRoYXQgdGhlIHJpZ2h0IHNldCBvZiB0ZXN0cyB3ZXJl
IHJ1bi4KKworICAgIEFyZ3M6CisgICAgICBndGVzdF9maWx0ZXI6IEEgZmlsdGVyIHRvIGFwcGx5
IHRvIHRoZSB0ZXN0cy4KKyAgICAgIHRlc3RzX3RvX3J1bjogQSBzZXQgb2YgdGVzdHMgZXhwZWN0
ZWQgdG8gcnVuLgorICAgICIiIgorCisgICAgdGVzdHNfdG9fcnVuID0gc2VsZi5BZGp1c3RGb3JQ
YXJhbWV0ZXJpemVkVGVzdHModGVzdHNfdG9fcnVuKQorCisgICAgIyBDb25zdHJ1Y3QgdGhlIGNv
bW1hbmQgbGluZS4KKyAgICBhcmdzID0gWyctLSVzJyAlIEFMU09fUlVOX0RJU0FCTEVEX1RFU1RT
X0ZMQUddCisgICAgaWYgZ3Rlc3RfZmlsdGVyIGlzIG5vdCBOb25lOgorICAgICAgYXJncy5hcHBl
bmQoJy0tJXM9JXMnICUgKEZJTFRFUl9GTEFHLCBndGVzdF9maWx0ZXIpKQorCisgICAgdGVzdHNf
cnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KGFyZ3MpWzBdCisgICAgc2VsZi5Bc3NlcnRTZXRF
cXVhbCh0ZXN0c19ydW4sIHRlc3RzX3RvX3J1bikKKworICBkZWYgc2V0VXAoc2VsZik6CisgICAg
IiIiU2V0cyB1cCB0ZXN0IGNhc2UuCisKKyAgICBEZXRlcm1pbmVzIHdoZXRoZXIgdmFsdWUtcGFy
YW1ldGVyaXplZCB0ZXN0cyBhcmUgZW5hYmxlZCBpbiB0aGUgYmluYXJ5IGFuZAorICAgIHNldHMg
dGhlIGZsYWdzIGFjY29yZGluZ2x5LgorICAgICIiIgorCisgICAgZ2xvYmFsIHBhcmFtX3Rlc3Rz
X3ByZXNlbnQKKyAgICBpZiBwYXJhbV90ZXN0c19wcmVzZW50IGlzIE5vbmU6CisgICAgICBwYXJh
bV90ZXN0c19wcmVzZW50ID0gUEFSQU1fVEVTVF9SRUdFWC5zZWFyY2goCisgICAgICAgICAgUnVu
QW5kUmV0dXJuT3V0cHV0KCkpIGlzIG5vdCBOb25lCisKKyAgZGVmIHRlc3REZWZhdWx0QmVoYXZp
b3Ioc2VsZik6CisgICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9yIG9mIG5vdCBzcGVjaWZ5aW5nIHRo
ZSBmaWx0ZXIuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShOb25lLCBBQ1RJVkVfVEVTVFMp
CisKKyAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3JXaXRoU2hhcmRzKHNlbGYpOgorICAgICIiIlRl
c3RzIHRoZSBiZWhhdmlvciB3aXRob3V0IHRoZSBmaWx0ZXIsIHdpdGggc2hhcmRpbmcgZW5hYmxl
ZC4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKE5vbmUsIDEsIEFDVElW
RV9URVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhOb25lLCAyLCBBQ1RJ
VkVfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgbGVuKEFD
VElWRV9URVNUUykgLSAxLCBBQ1RJVkVfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRo
U2hhcmRpbmcoTm9uZSwgbGVuKEFDVElWRV9URVNUUyksIEFDVElWRV9URVNUUykKKyAgICBzZWxm
LlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhOb25lLCBsZW4oQUNUSVZFX1RFU1RTKSArIDEsIEFD
VElWRV9URVNUUykKKworICBkZWYgdGVzdEVtcHR5RmlsdGVyKHNlbGYpOgorICAgICIiIlRlc3Rz
IGFuIGVtcHR5IGZpbHRlci4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcnLCBbXSkKKyAg
ICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZygnJywgMSwgW10pCisgICAgc2VsZi5SdW5B
bmRWZXJpZnlXaXRoU2hhcmRpbmcoJycsIDIsIFtdKQorCisgIGRlZiB0ZXN0QmFkRmlsdGVyKHNl
bGYpOgorICAgICIiIlRlc3RzIGEgZmlsdGVyIHRoYXQgbWF0Y2hlcyBub3RoaW5nLiIiIgorCisg
ICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0JhZEZpbHRlcicsIFtdKQorICAgIHNlbGYuUnVuQW5kVmVy
aWZ5QWxsb3dpbmdEaXNhYmxlZCgnQmFkRmlsdGVyJywgW10pCisKKyAgZGVmIHRlc3RGdWxsTmFt
ZShzZWxmKToKKyAgICAiIiJUZXN0cyBmaWx0ZXJpbmcgYnkgZnVsbCBuYW1lLiIiIgorCisgICAg
c2VsZi5SdW5BbmRWZXJpZnkoJ0Zvb1Rlc3QuWHl6JywgWydGb29UZXN0Llh5eiddKQorICAgIHNl
bGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnRm9vVGVzdC5YeXonLCBbJ0Zvb1Rlc3Qu
WHl6J10pCisgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJ0Zvb1Rlc3QuWHl6Jywg
NSwgWydGb29UZXN0Llh5eiddKQorCisgIGRlZiB0ZXN0VW5pdmVyc2FsRmlsdGVycyhzZWxmKToK
KyAgICAiIiJUZXN0cyBmaWx0ZXJzIHRoYXQgbWF0Y2ggZXZlcnl0aGluZy4iIiIKKworICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KCcqJywgQUNUSVZFX1RFU1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5
KCcqLionLCBBQ1RJVkVfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmco
JyouKicsIGxlbihBQ1RJVkVfVEVTVFMpIC0gMywgQUNUSVZFX1RFU1RTKQorICAgIHNlbGYuUnVu
QW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnKicsIEFDVElWRV9URVNUUyArIERJU0FCTEVEX1RF
U1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnKi4qJywgQUNUSVZF
X1RFU1RTICsgRElTQUJMRURfVEVTVFMpCisKKyAgZGVmIHRlc3RGaWx0ZXJCeVRlc3RDYXNlKHNl
bGYpOgorICAgICIiIlRlc3RzIGZpbHRlcmluZyBieSB0ZXN0IGNhc2UgbmFtZS4iIiIKKworICAg
IHNlbGYuUnVuQW5kVmVyaWZ5KCdGb29UZXN0LionLCBbJ0Zvb1Rlc3QuQWJjJywgJ0Zvb1Rlc3Qu
WHl6J10pCisKKyAgICBCQVpfVEVTVFMgPSBbJ0JhelRlc3QuVGVzdE9uZScsICdCYXpUZXN0LlRl
c3RBJywgJ0JhelRlc3QuVGVzdEInXQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdCYXpUZXN0Lion
LCBCQVpfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdCYXpU
ZXN0LionLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCQVpfVEVTVFMg
KyBbJ0JhelRlc3QuRElTQUJMRURfVGVzdEMnXSkKKworICBkZWYgdGVzdEZpbHRlckJ5VGVzdChz
ZWxmKToKKyAgICAiIiJUZXN0cyBmaWx0ZXJpbmcgYnkgdGVzdCBuYW1lLiIiIgorCisgICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoJyouVGVzdE9uZScsIFsnQmFyVGVzdC5UZXN0T25lJywgJ0JhelRlc3Qu
VGVzdE9uZSddKQorCisgIGRlZiB0ZXN0RmlsdGVyRGlzYWJsZWRUZXN0cyhzZWxmKToKKyAgICAi
IiJTZWxlY3Qgb25seSB0aGUgZGlzYWJsZWQgdGVzdHMgdG8gcnVuLiIiIgorCisgICAgc2VsZi5S
dW5BbmRWZXJpZnkoJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnLCBbXSkKKyAgICBzZWxmLlJ1
bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0RJU0FCTEVEX0Zvb2JhclRl
c3QuVGVzdDEnXSkKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqRElTQUJMRURfKicsIFtdKQor
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnKkRJU0FCTEVEXyonLCBESVNB
QkxFRF9URVNUUykKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLkRJU0FCTEVEXyonLCBbXSkK
KyAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJyouRElTQUJMRURfKicsIFsK
KyAgICAgICAgJ0JhclRlc3QuRElTQUJMRURfVGVzdEZvdXInLAorICAgICAgICAnQmFyVGVzdC5E
SVNBQkxFRF9UZXN0Rml2ZScsCisgICAgICAgICdCYXpUZXN0LkRJU0FCTEVEX1Rlc3RDJywKKyAg
ICAgICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuRElTQUJMRURfVGVzdDInLAorICAgICAgICBdKQor
CisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0RJU0FCTEVEXyonLCBbXSkKKyAgICBzZWxmLlJ1bkFu
ZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0RJU0FCTEVEXyonLCBbCisgICAgICAgICdESVNBQkxF
RF9Gb29iYXJUZXN0LlRlc3QxJywKKyAgICAgICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuRElTQUJM
RURfVGVzdDInLAorICAgICAgICAnRElTQUJMRURfRm9vYmFyYmF6VGVzdC5UZXN0QScsCisgICAg
ICAgIF0pCisKKyAgZGVmIHRlc3RXaWxkY2FyZEluVGVzdENhc2VOYW1lKHNlbGYpOgorICAgICIi
IlRlc3RzIHVzaW5nIHdpbGRjYXJkIGluIHRoZSB0ZXN0IGNhc2UgbmFtZS4iIiIKKworICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KCcqYSouKicsIFsKKyAgICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCisg
ICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAorICAgICAgICAnQmFyVGVzdC5UZXN0VGhyZWUnLAor
CisgICAgICAgICdCYXpUZXN0LlRlc3RPbmUnLAorICAgICAgICAnQmF6VGVzdC5UZXN0QScsCisg
ICAgICAgICdCYXpUZXN0LlRlc3RCJywgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMpCisK
KyAgZGVmIHRlc3RXaWxkY2FyZEluVGVzdE5hbWUoc2VsZik6CisgICAgIiIiVGVzdHMgdXNpbmcg
d2lsZGNhcmQgaW4gdGhlIHRlc3QgbmFtZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcq
LipBKicsIFsnRm9vVGVzdC5BYmMnLCAnQmF6VGVzdC5UZXN0QSddKQorCisgIGRlZiB0ZXN0Rmls
dGVyV2l0aG91dERvdChzZWxmKToKKyAgICAiIiJUZXN0cyBhIGZpbHRlciB0aGF0IGhhcyBubyAn
LicgaW4gaXQuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKnoqJywgWworICAgICAgICAn
Rm9vVGVzdC5YeXonLAorCisgICAgICAgICdCYXpUZXN0LlRlc3RPbmUnLAorICAgICAgICAnQmF6
VGVzdC5UZXN0QScsCisgICAgICAgICdCYXpUZXN0LlRlc3RCJywKKyAgICAgICAgXSkKKworICBk
ZWYgdGVzdFR3b1BhdHRlcm5zKHNlbGYpOgorICAgICIiIlRlc3RzIGZpbHRlcnMgdGhhdCBjb25z
aXN0IG9mIHR3byBwYXR0ZXJucy4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdGb28qLio6
KkEqJywgWworICAgICAgICAnRm9vVGVzdC5BYmMnLAorICAgICAgICAnRm9vVGVzdC5YeXonLAor
CisgICAgICAgICdCYXpUZXN0LlRlc3RBJywKKyAgICAgICAgXSkKKworICAgICMgQW4gZW1wdHkg
cGF0dGVybiArIGEgbm9uLWVtcHR5IG9uZQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCc6KkEqJywg
WydGb29UZXN0LkFiYycsICdCYXpUZXN0LlRlc3RBJ10pCisKKyAgZGVmIHRlc3RUaHJlZVBhdHRl
cm5zKHNlbGYpOgorICAgICIiIlRlc3RzIGZpbHRlcnMgdGhhdCBjb25zaXN0IG9mIHRocmVlIHBh
dHRlcm5zLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJypvbyo6KkEqOipPbmUnLCBbCisg
ICAgICAgICdGb29UZXN0LkFiYycsCisgICAgICAgICdGb29UZXN0Llh5eicsCisKKyAgICAgICAg
J0JhclRlc3QuVGVzdE9uZScsCisKKyAgICAgICAgJ0JhelRlc3QuVGVzdE9uZScsCisgICAgICAg
ICdCYXpUZXN0LlRlc3RBJywKKyAgICAgICAgXSkKKworICAgICMgVGhlIDJuZCBwYXR0ZXJuIGlz
IGVtcHR5LgorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqb28qOjoqT25lJywgWworICAgICAgICAn
Rm9vVGVzdC5BYmMnLAorICAgICAgICAnRm9vVGVzdC5YeXonLAorCisgICAgICAgICdCYXJUZXN0
LlRlc3RPbmUnLAorCisgICAgICAgICdCYXpUZXN0LlRlc3RPbmUnLAorICAgICAgICBdKQorCisg
ICAgIyBUaGUgbGFzdCAyIHBhdHRlcm5zIGFyZSBlbXB0eS4KKyAgICBzZWxmLlJ1bkFuZFZlcmlm
eSgnKm9vKjo6JywgWworICAgICAgICAnRm9vVGVzdC5BYmMnLAorICAgICAgICAnRm9vVGVzdC5Y
eXonLAorICAgICAgICBdKQorCisgIGRlZiB0ZXN0TmVnYXRpdmVGaWx0ZXJzKHNlbGYpOgorICAg
IHNlbGYuUnVuQW5kVmVyaWZ5KCcqLUJhelRlc3QuVGVzdE9uZScsIFsKKyAgICAgICAgJ0Zvb1Rl
c3QuQWJjJywKKyAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKKworICAgICAgICAnQmFyVGVzdC5UZXN0
T25lJywKKyAgICAgICAgJ0JhclRlc3QuVGVzdFR3bycsCisgICAgICAgICdCYXJUZXN0LlRlc3RU
aHJlZScsCisKKyAgICAgICAgJ0JhelRlc3QuVGVzdEEnLAorICAgICAgICAnQmF6VGVzdC5UZXN0
QicsCisgICAgICAgIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTKQorCisgICAgc2VsZi5S
dW5BbmRWZXJpZnkoJyotRm9vVGVzdC5BYmM6QmF6VGVzdC4qJywgWworICAgICAgICAnRm9vVGVz
dC5YeXonLAorCisgICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAorICAgICAgICAnQmFyVGVzdC5U
ZXN0VHdvJywKKyAgICAgICAgJ0JhclRlc3QuVGVzdFRocmVlJywKKyAgICAgICAgXSArIERFQVRI
X1RFU1RTICsgUEFSQU1fVEVTVFMpCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnQmFyVGVzdC4q
LUJhclRlc3QuVGVzdE9uZScsIFsKKyAgICAgICAgJ0JhclRlc3QuVGVzdFR3bycsCisgICAgICAg
ICdCYXJUZXN0LlRlc3RUaHJlZScsCisgICAgICAgIF0pCisKKyAgICAjIFRlc3RzIHdpdGhvdXQg
bGVhZGluZyAnKicuCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJy1Gb29UZXN0LkFiYzpGb29UZXN0
Llh5ejpCYXpUZXN0LionLCBbCisgICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAorICAgICAgICAn
QmFyVGVzdC5UZXN0VHdvJywKKyAgICAgICAgJ0JhclRlc3QuVGVzdFRocmVlJywKKyAgICAgICAg
XSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMpCisKKyAgICAjIFZhbHVlIHBhcmFtZXRlcml6
ZWQgdGVzdHMuCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyovKicsIFBBUkFNX1RFU1RTKQorCisg
ICAgIyBWYWx1ZSBwYXJhbWV0ZXJpemVkIHRlc3RzIGZpbHRlcmluZyBieSB0aGUgc2VxdWVuY2Ug
bmFtZS4KKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnU2VxUC8qJywgWworICAgICAgICAnU2VxUC9Q
YXJhbVRlc3QuVGVzdFgvMCcsCisgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8xJywKKyAg
ICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzAnLAorICAgICAgICAnU2VxUC9QYXJhbVRlc3Qu
VGVzdFkvMScsCisgICAgICAgIF0pCisKKyAgICAjIFZhbHVlIHBhcmFtZXRlcml6ZWQgdGVzdHMg
ZmlsdGVyaW5nIGJ5IHRoZSB0ZXN0IG5hbWUuCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyovMCcs
IFsKKyAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzAnLAorICAgICAgICAnU2VxUC9QYXJh
bVRlc3QuVGVzdFkvMCcsCisgICAgICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WC8wJywKKyAgICAg
ICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RZLzAnLAorICAgICAgICBdKQorCisgIGRlZiB0ZXN0Rmxh
Z092ZXJyaWRlc0VudlZhcihzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0IHRoZSBmaWx0ZXIgZmxh
ZyBvdmVycmlkZXMgdGhlIGZpbHRlcmluZyBlbnYuIHZhcmlhYmxlLiIiIgorCisgICAgU2V0RW52
VmFyKEZJTFRFUl9FTlZfVkFSLCAnRm9vKicpCisgICAgYXJncyA9IFsnLS0lcz0lcycgJSAoRklM
VEVSX0ZMQUcsICcqT25lJyldCisgICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0
KGFyZ3MpWzBdCisgICAgU2V0RW52VmFyKEZJTFRFUl9FTlZfVkFSLCBOb25lKQorCisgICAgc2Vs
Zi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIFsnQmFyVGVzdC5UZXN0T25lJywgJ0JhelRlc3Qu
VGVzdE9uZSddKQorCisgIGRlZiB0ZXN0U2hhcmRTdGF0dXNGaWxlSXNDcmVhdGVkKHNlbGYpOgor
ICAgICIiIlRlc3RzIHRoYXQgdGhlIHNoYXJkIGZpbGUgaXMgY3JlYXRlZCBpZiBzcGVjaWZpZWQg
aW4gdGhlIGVudmlyb25tZW50LiIiIgorCisgICAgc2hhcmRfc3RhdHVzX2ZpbGUgPSBvcy5wYXRo
LmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3NoYXJkX3N0YXR1c19maWxlJykKKyAgICBzZWxmLmFzc2VydF8o
bm90IG9zLnBhdGguZXhpc3RzKHNoYXJkX3N0YXR1c19maWxlKSkKKworICAgIGV4dHJhX2VudiA9
IHtTSEFSRF9TVEFUVVNfRklMRV9FTlZfVkFSOiBzaGFyZF9zdGF0dXNfZmlsZX0KKyAgICB0cnk6
CisgICAgICBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LCBSdW5BbmRSZXR1cm5PdXRw
dXQpCisgICAgZmluYWxseToKKyAgICAgIHNlbGYuYXNzZXJ0Xyhvcy5wYXRoLmV4aXN0cyhzaGFy
ZF9zdGF0dXNfZmlsZSkpCisgICAgICBvcy5yZW1vdmUoc2hhcmRfc3RhdHVzX2ZpbGUpCisKKyAg
ZGVmIHRlc3RTaGFyZFN0YXR1c0ZpbGVJc0NyZWF0ZWRXaXRoTGlzdFRlc3RzKHNlbGYpOgorICAg
ICIiIlRlc3RzIHRoYXQgdGhlIHNoYXJkIGZpbGUgaXMgY3JlYXRlZCB3aXRoIHRoZSAibGlzdF90
ZXN0cyIgZmxhZy4iIiIKKworICAgIHNoYXJkX3N0YXR1c19maWxlID0gb3MucGF0aC5qb2luKGd0
ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdzaGFyZF9zdGF0dXNfZmlsZTInKQorICAgIHNlbGYuYXNzZXJ0Xyhub3Qgb3Mu
cGF0aC5leGlzdHMoc2hhcmRfc3RhdHVzX2ZpbGUpKQorCisgICAgZXh0cmFfZW52ID0ge1NIQVJE
X1NUQVRVU19GSUxFX0VOVl9WQVI6IHNoYXJkX3N0YXR1c19maWxlfQorICAgIHRyeToKKyAgICAg
IG91dHB1dCA9IEludm9rZVdpdGhNb2RpZmllZEVudihleHRyYV9lbnYsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUnVuQW5kUmV0dXJuT3V0cHV0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFtMSVNUX1RFU1RTX0ZMQUddKQorICAgIGZpbmFsbHk6
CisgICAgICAjIFRoaXMgYXNzZXJ0aW9uIGVuc3VyZXMgdGhhdCBHb29nbGUgVGVzdCBlbnVtZXJh
dGVkIHRoZSB0ZXN0cyBhcworICAgICAgIyBvcHBvc2VkIHRvIHJ1bm5pbmcgdGhlbS4KKyAgICAg
IHNlbGYuYXNzZXJ0XygnWz09PT09PT09PT1dJyBub3QgaW4gb3V0cHV0LAorICAgICAgICAgICAg
ICAgICAgICdVbmV4cGVjdGVkIG91dHB1dCBkdXJpbmcgdGVzdCBlbnVtZXJhdGlvbi5cbicKKyAg
ICAgICAgICAgICAgICAgICAnUGxlYXNlIGVuc3VyZSB0aGF0IExJU1RfVEVTVFNfRkxBRyBpcyBh
c3NpZ25lZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnY29ycmVjdCBmbGFnIHZhbHVlIGZv
ciBsaXN0aW5nIEdvb2dsZSBUZXN0IHRlc3RzLicpCisKKyAgICAgIHNlbGYuYXNzZXJ0Xyhvcy5w
YXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkpCisgICAgICBvcy5yZW1vdmUoc2hhcmRfc3Rh
dHVzX2ZpbGUpCisKKyAgaWYgU1VQUE9SVFNfREVBVEhfVEVTVFM6CisgICAgZGVmIHRlc3RTaGFy
ZGluZ1dvcmtzV2l0aERlYXRoVGVzdHMoc2VsZik6CisgICAgICAiIiJUZXN0cyBpbnRlZ3JhdGlv
biB3aXRoIGRlYXRoIHRlc3RzIGFuZCBzaGFyZGluZy4iIiIKKworICAgICAgZ3Rlc3RfZmlsdGVy
ID0gJ0hhc0RlYXRoVGVzdC4qOlNlcVAvKicKKyAgICAgIGV4cGVjdGVkX3Rlc3RzID0gWworICAg
ICAgICAgICdIYXNEZWF0aFRlc3QuVGVzdDEnLAorICAgICAgICAgICdIYXNEZWF0aFRlc3QuVGVz
dDInLAorCisgICAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzAnLAorICAgICAgICAgICdT
ZXFQL1BhcmFtVGVzdC5UZXN0WC8xJywKKyAgICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkv
MCcsCisgICAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzEnLAorICAgICAgICAgIF0KKwor
ICAgICAgZm9yIGZsYWcgaW4gWyctLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGU9dGhyZWFkc2FmZScs
CisgICAgICAgICAgICAgICAgICAgJy0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZT1mYXN0J106Cisg
ICAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKGd0ZXN0X2ZpbHRlciwgMywgZXhw
ZWN0ZWRfdGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNr
X2V4aXRfMD1UcnVlLCBhcmdzPVtmbGFnXSkKKyAgICAgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRo
U2hhcmRpbmcoZ3Rlc3RfZmlsdGVyLCA1LCBleHBlY3RlZF90ZXN0cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfZXhpdF8wPVRydWUsIGFyZ3M9W2ZsYWddKQor
CitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWZpbHRl
ci11bml0dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qt
ZmlsdGVyLXVuaXR0ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzM1YjYwMzkxZDFkNDY4YTQxMTYxYjM4
YzE0ZWNjYmYxZDEzODA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8uY2MKQEAgLTAsMCArMSwxMzcgQEAK
Ky8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8g
ZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBVbml0
IHRlc3QgZm9yIEdvb2dsZSBUZXN0IHRlc3QgZmlsdGVycy4KKy8vCisvLyBBIHVzZXIgY2FuIHNw
ZWNpZnkgd2hpY2ggdGVzdChzKSBpbiBhIEdvb2dsZSBUZXN0IHByb2dyYW0gdG8gcnVuIHZpYQor
Ly8gZWl0aGVyIHRoZSBHVEVTVF9GSUxURVIgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlIC0t
Z3Rlc3RfZmlsdGVyCisvLyBmbGFnLiAgVGhpcyBpcyB1c2VkIGZvciB0ZXN0aW5nIHN1Y2ggZnVu
Y3Rpb25hbGl0eS4KKy8vCisvLyBUaGUgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5
dGhvbiB1bml0IHRlc3QuICBEb24ndCBydW4gaXQKKy8vIGRpcmVjdGx5LgorCisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsKKworLy8gVGVzdCBjYXNlIEZvb1Rlc3QuCisK
K2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitURVNUX0YoRm9v
VGVzdCwgQWJjKSB7Cit9CisKK1RFU1RfRihGb29UZXN0LCBYeXopIHsKKyAgRkFJTCgpIDw8ICJF
eHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKKy8vIFRlc3QgY2FzZSBCYXJUZXN0LgorCitURVNUKEJh
clRlc3QsIFRlc3RPbmUpIHsKK30KKworVEVTVChCYXJUZXN0LCBUZXN0VHdvKSB7Cit9CisKK1RF
U1QoQmFyVGVzdCwgVGVzdFRocmVlKSB7Cit9CisKK1RFU1QoQmFyVGVzdCwgRElTQUJMRURfVGVz
dEZvdXIpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKK1RFU1QoQmFy
VGVzdCwgRElTQUJMRURfVGVzdEZpdmUpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJl
LiI7Cit9CisKKy8vIFRlc3QgY2FzZSBCYXpUZXN0LgorCitURVNUKEJhelRlc3QsIFRlc3RPbmUp
IHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKK1RFU1QoQmF6VGVzdCwg
VGVzdEEpIHsKK30KKworVEVTVChCYXpUZXN0LCBUZXN0QikgeworfQorCitURVNUKEJhelRlc3Qs
IERJU0FCTEVEX1Rlc3RDKSB7CisgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOworfQor
CisvLyBUZXN0IGNhc2UgSGFzRGVhdGhUZXN0CisKK1RFU1QoSGFzRGVhdGhUZXN0LCBUZXN0MSkg
eworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKGV4aXQoMSksICIuKiIpOworfQorCisvLyBX
ZSBuZWVkIGF0IGxlYXN0IHR3byBkZWF0aCB0ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgYWxs
IGRlYXRoIHRlc3RzCisvLyBhcmVuJ3Qgb24gdGhlIGZpcnN0IHNoYXJkLgorVEVTVChIYXNEZWF0
aFRlc3QsIFRlc3QyKSB7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoZXhpdCgxKSwgIi4q
Iik7Cit9CisKKy8vIFRlc3QgY2FzZSBGb29iYXJUZXN0CisKK1RFU1QoRElTQUJMRURfRm9vYmFy
VGVzdCwgVGVzdDEpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKK1RF
U1QoRElTQUJMRURfRm9vYmFyVGVzdCwgRElTQUJMRURfVGVzdDIpIHsKKyAgRkFJTCgpIDw8ICJF
eHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKKy8vIFRlc3QgY2FzZSBGb29iYXJiYXpUZXN0CisKK1RF
U1QoRElTQUJMRURfRm9vYmFyYmF6VGVzdCwgVGVzdEEpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3Rl
ZCBmYWlsdXJlLiI7Cit9CisKK2NsYXNzIFBhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
V2l0aFBhcmFtPGludD4geworfTsKKworVEVTVF9QKFBhcmFtVGVzdCwgVGVzdFgpIHsKK30KKwor
VEVTVF9QKFBhcmFtVGVzdCwgVGVzdFkpIHsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ao
U2VxUCwgUGFyYW1UZXN0LCB0ZXN0aW5nOjpWYWx1ZXMoMSwgMikpOworSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1AoU2VxUSwgUGFyYW1UZXN0LCB0ZXN0aW5nOjpWYWx1ZXMoNSwgNikpOworCit9ICAv
LyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIDo6dGVz
dGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIHJldHVybiBSVU5fQUxMX1RF
U1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3QtanNvbi1vdXRmaWxlcy10ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9nb29nbGV0ZXN0LWpzb24tb3V0ZmlsZXMtdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTliZTQ4ZThh
YzM2NTA5ZWQzMmVhMmZiOGU0ZmExZWE3ZmM4MzY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWpzb24tb3V0ZmlsZXMtdGVzdC5weQpA
QCAtMCwwICsxLDE2MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAyMDE4
LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworIiIiVW5pdCB0ZXN0IGZvciB0aGUgZ3Rlc3RfanNvbl9vdXRwdXQgbW9kdWxlLiIiIgorCitp
bXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQgZ3Rlc3RfanNvbl90ZXN0X3V0aWxzCitpbXBv
cnQgZ3Rlc3RfdGVzdF91dGlscworCitHVEVTVF9PVVRQVVRfU1VCRElSID0gJ2pzb25fb3V0Zmls
ZXMnCitHVEVTVF9PVVRQVVRfMV9URVNUID0gJ2d0ZXN0X3htbF9vdXRmaWxlMV90ZXN0XycKK0dU
RVNUX09VVFBVVF8yX1RFU1QgPSAnZ3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfJworCitFWFBFQ1RF
RF8xID0geworICAgIHUndGVzdHMnOiAxLAorICAgIHUnZmFpbHVyZXMnOiAwLAorICAgIHUnZGlz
YWJsZWQnOiAwLAorICAgIHUnZXJyb3JzJzogMCwKKyAgICB1J3RpbWUnOiB1JyonLAorICAgIHUn
dGltZXN0YW1wJzogdScqJywKKyAgICB1J25hbWUnOiB1J0FsbFRlc3RzJywKKyAgICB1J3Rlc3Rz
dWl0ZXMnOiBbeworICAgICAgICB1J25hbWUnOiB1J1Byb3BlcnR5T25lJywKKyAgICAgICAgdSd0
ZXN0cyc6IDEsCisgICAgICAgIHUnZmFpbHVyZXMnOiAwLAorICAgICAgICB1J2Rpc2FibGVkJzog
MCwKKyAgICAgICAgdSdlcnJvcnMnOiAwLAorICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAg
ICB1J3Rlc3RzdWl0ZSc6IFt7CisgICAgICAgICAgICB1J25hbWUnOiB1J1Rlc3RTb21lUHJvcGVy
dGllcycsCisgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgIHUndGlt
ZSc6IHUnKicsCisgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnUHJvcGVydHlPbmUnLAorICAg
ICAgICAgICAgdSdTZXRVcFByb3AnOiB1JzEnLAorICAgICAgICAgICAgdSdUZXN0U29tZVByb3Bl
cnR5JzogdScxJywKKyAgICAgICAgICAgIHUnVGVhckRvd25Qcm9wJzogdScxJywKKyAgICAgICAg
fV0sCisgICAgfV0sCit9CisKK0VYUEVDVEVEXzIgPSB7CisgICAgdSd0ZXN0cyc6IDEsCisgICAg
dSdmYWlsdXJlcyc6IDAsCisgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgdSdlcnJvcnMnOiAwLAor
ICAgIHUndGltZSc6IHUnKicsCisgICAgdSd0aW1lc3RhbXAnOiB1JyonLAorICAgIHUnbmFtZSc6
IHUnQWxsVGVzdHMnLAorICAgIHUndGVzdHN1aXRlcyc6IFt7CisgICAgICAgIHUnbmFtZSc6IHUn
UHJvcGVydHlUd28nLAorICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgdSdmYWlsdXJlcyc6
IDAsCisgICAgICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAg
ICAgIHUndGltZSc6IHUnKicsCisgICAgICAgIHUndGVzdHN1aXRlJzogW3sKKyAgICAgICAgICAg
IHUnbmFtZSc6IHUnVGVzdFNvbWVQcm9wZXJ0aWVzJywKKyAgICAgICAgICAgIHUnc3RhdHVzJzog
dSdSVU4nLAorICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgIHUnY2xhc3Nu
YW1lJzogdSdQcm9wZXJ0eVR3bycsCisgICAgICAgICAgICB1J1NldFVwUHJvcCc6IHUnMicsCisg
ICAgICAgICAgICB1J1Rlc3RTb21lUHJvcGVydHknOiB1JzInLAorICAgICAgICAgICAgdSdUZWFy
RG93blByb3AnOiB1JzInLAorICAgICAgICB9XSwKKyAgICB9XSwKK30KKworCitjbGFzcyBHVGVz
dEpzb25PdXRGaWxlc1Rlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICIiIlVuaXQg
dGVzdCBmb3IgR29vZ2xlIFRlc3QncyBKU09OIG91dHB1dCBmdW5jdGlvbmFsaXR5LiIiIgorCisg
IGRlZiBzZXRVcChzZWxmKToKKyAgICAjIFdlIHdhbnQgdGhlIHRyYWlsaW5nICcvJyB0aGF0IHRo
ZSBsYXN0ICIiIHByb3ZpZGVzIGluIG9zLnBhdGguam9pbiwgZm9yCisgICAgIyB0ZWxsaW5nIEdv
b2dsZSBUZXN0IHRvIGNyZWF0ZSBhbiBvdXRwdXQgZGlyZWN0b3J5IGluc3RlYWQgb2YgYSBzaW5n
bGUgZmlsZQorICAgICMgZm9yIHhtbCBvdXRwdXQuCisgICAgc2VsZi5vdXRwdXRfZGlyXyA9IG9z
LnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdURVNUX09VVFBVVF9TVUJESVIsICcnKQorICAgIHNlbGYu
RGVsZXRlRmlsZXNBbmREaXIoKQorCisgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICBzZWxmLkRl
bGV0ZUZpbGVzQW5kRGlyKCkKKworICBkZWYgRGVsZXRlRmlsZXNBbmREaXIoc2VsZik6CisgICAg
dHJ5OgorICAgICAgb3MucmVtb3ZlKG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXJfLCBHVEVT
VF9PVVRQVVRfMV9URVNUICsgJy5qc29uJykpCisgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAg
cGFzcworICAgIHRyeToKKyAgICAgIG9zLnJlbW92ZShvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRf
ZGlyXywgR1RFU1RfT1VUUFVUXzJfVEVTVCArICcuanNvbicpKQorICAgIGV4Y2VwdCBvcy5lcnJv
cjoKKyAgICAgIHBhc3MKKyAgICB0cnk6CisgICAgICBvcy5ybWRpcihzZWxmLm91dHB1dF9kaXJf
KQorICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgIHBhc3MKKworICBkZWYgdGVzdE91dGZpbGUx
KHNlbGYpOgorICAgIHNlbGYuX1Rlc3RPdXRGaWxlKEdURVNUX09VVFBVVF8xX1RFU1QsIEVYUEVD
VEVEXzEpCisKKyAgZGVmIHRlc3RPdXRmaWxlMihzZWxmKToKKyAgICBzZWxmLl9UZXN0T3V0Rmls
ZShHVEVTVF9PVVRQVVRfMl9URVNULCBFWFBFQ1RFRF8yKQorCisgIGRlZiBfVGVzdE91dEZpbGUo
c2VsZiwgdGVzdF9uYW1lLCBleHBlY3RlZCk6CisgICAgZ3Rlc3RfcHJvZ19wYXRoID0gZ3Rlc3Rf
dGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgodGVzdF9uYW1lKQorICAgIGNvbW1hbmQg
PSBbZ3Rlc3RfcHJvZ19wYXRoLCAnLS1ndGVzdF9vdXRwdXQ9anNvbjolcycgJSBzZWxmLm91dHB1
dF9kaXJfXQorICAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmdfZGlyPWd0ZXN0X3Rlc3Rf
dXRpbHMuR2V0VGVtcERpcigpKQorICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKKyAgICBzZWxm
LmFzc2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkKKworICAgICMgRklYTUU6IGxpYnRvb2wgY2F1
c2VzIHRoZSBidWlsdCB0ZXN0IGJpbmFyeSB0byBiZQorICAgICMgICBuYW1lZCBsdC1ndGVzdF94
bWxfb3V0ZmlsZXNfdGVzdF8gaW5zdGVhZCBvZgorICAgICMgICBndGVzdF94bWxfb3V0ZmlsZXNf
dGVzdF8uICBUbyBhY2NvdW50IGZvciB0aGlzIHBvc3NpYmlsaXR5LCB3ZQorICAgICMgICBhbGxv
dyBib3RoIG5hbWVzIGluIHRoZSBmb2xsb3dpbmcgY29kZS4gIFdlIHNob3VsZCByZW1vdmUgdGhp
cworICAgICMgICB3aGVuIGxpYnRvb2wgcmVwbGFjZW1lbnQgdG9vbCBpcyByZWFkeS4KKyAgICBv
dXRwdXRfZmlsZV9uYW1lMSA9IHRlc3RfbmFtZSArICcuanNvbicKKyAgICBvdXRwdXRfZmlsZTEg
PSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGlyXywgb3V0cHV0X2ZpbGVfbmFtZTEpCisgICAg
b3V0cHV0X2ZpbGVfbmFtZTIgPSAnbHQtJyArIG91dHB1dF9maWxlX25hbWUxCisgICAgb3V0cHV0
X2ZpbGUyID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2Rpcl8sIG91dHB1dF9maWxlX25hbWUy
KQorICAgIHNlbGYuYXNzZXJ0Xyhvcy5wYXRoLmlzZmlsZShvdXRwdXRfZmlsZTEpIG9yIG9zLnBh
dGguaXNmaWxlKG91dHB1dF9maWxlMiksCisgICAgICAgICAgICAgICAgIG91dHB1dF9maWxlMSkK
KworICAgIGlmIG9zLnBhdGguaXNmaWxlKG91dHB1dF9maWxlMSk6CisgICAgICB3aXRoIG9wZW4o
b3V0cHV0X2ZpbGUxKSBhcyBmOgorICAgICAgICBhY3R1YWwgPSBqc29uLmxvYWQoZikKKyAgICBl
bHNlOgorICAgICAgd2l0aCBvcGVuKG91dHB1dF9maWxlMikgYXMgZjoKKyAgICAgICAgYWN0dWFs
ID0ganNvbi5sb2FkKGYpCisgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgZ3Rlc3RfanNv
bl90ZXN0X3V0aWxzLm5vcm1hbGl6ZShhY3R1YWwpKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21h
aW5fXyc6CisgIG9zLmVudmlyb25bJ0dURVNUX1NUQUNLX1RSQUNFX0RFUFRIJ10gPSAnMCcKKyAg
Z3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ29vZ2xldGVzdC1qc29uLW91dHB1dC11bml0dGVzdC5weSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1qc29uLW91dHB1dC11bml0dGVzdC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41N2RjZDVmYTFjNDYzOWYxNTJmYjU0ZTUwZmI5YzA1OThhMGU0NmEwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWpzb24t
b3V0cHV0LXVuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNjE4IEBACisjIS91c3IvYmluL2VudiBweXRo
b24KKyMgQ29weXJpZ2h0IDIwMTgsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJVbml0IHRlc3QgZm9yIHRoZSBndGVzdF9qc29uX291
dHB1dCBtb2R1bGUuIiIiCisKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGVycm5vCitpbXBvcnQg
anNvbgoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKworaW1wb3J0IGd0ZXN0X2pz
b25fdGVzdF91dGlscworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworR1RFU1RfRklMVEVSX0ZM
QUcgPSAnLS1ndGVzdF9maWx0ZXInCitHVEVTVF9MSVNUX1RFU1RTX0ZMQUcgPSAnLS1ndGVzdF9s
aXN0X3Rlc3RzJworR1RFU1RfT1VUUFVUX0ZMQUcgPSAnLS1ndGVzdF9vdXRwdXQnCitHVEVTVF9E
RUZBVUxUX09VVFBVVF9GSUxFID0gJ3Rlc3RfZGV0YWlsLmpzb24nCitHVEVTVF9QUk9HUkFNX05B
TUUgPSAnZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8nCisKKyMgVGhlIGZsYWcgaW5kaWNhdGlu
ZyBzdGFja3RyYWNlcyBhcmUgbm90IHN1cHBvcnRlZAorTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZM
QUcgPSAnLS1ub19zdGFja3RyYWNlX3N1cHBvcnQnCisKK1NVUFBPUlRTX1NUQUNLX1RSQUNFUyA9
IE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFHIG5vdCBpbiBzeXMuYXJndgorCitpZiBTVVBQT1JU
U19TVEFDS19UUkFDRVM6CisgIFNUQUNLX1RSQUNFX1RFTVBMQVRFID0gJ1xuU3RhY2sgdHJhY2U6
XG4qJworZWxzZToKKyAgU1RBQ0tfVFJBQ0VfVEVNUExBVEUgPSAnJworCitFWFBFQ1RFRF9OT05f
RU1QVFkgPSB7CisgICAgdSd0ZXN0cyc6IDIzLAorICAgIHUnZmFpbHVyZXMnOiA0LAorICAgIHUn
ZGlzYWJsZWQnOiAyLAorICAgIHUnZXJyb3JzJzogMCwKKyAgICB1J3RpbWVzdGFtcCc6IHUnKics
CisgICAgdSd0aW1lJzogdScqJywKKyAgICB1J2FkX2hvY19wcm9wZXJ0eSc6IHUnNDInLAorICAg
IHUnbmFtZSc6IHUnQWxsVGVzdHMnLAorICAgIHUndGVzdHN1aXRlcyc6IFsKKyAgICAgICAgewor
ICAgICAgICAgICAgdSduYW1lJzogdSdTdWNjZXNzZnVsVGVzdCcsCisgICAgICAgICAgICB1J3Rl
c3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAwLAorICAgICAgICAgICAgdSdkaXNh
YmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgICAgICB1J3RpbWUn
OiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBbCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J1N1Y2NlZWRzJywKKyAgICAgICAgICAgICAg
ICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUn
KicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdTdWNjZXNzZnVsVGVzdCcK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIHUnbmFtZSc6IHUnRmFpbGVkVGVzdCcsCisgICAgICAgICAgICB1J3Rlc3Rz
JzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAxLAorICAgICAgICAgICAgdSdkaXNhYmxl
ZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgICAgICB1J3RpbWUnOiB1
JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBbCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0ZhaWxzJywKKyAgICAgICAgICAgICAgICAgICAg
dSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisg
ICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdGYWlsZWRUZXN0JywKKyAgICAgICAg
ICAgICAgICAgICAgdSdmYWlsdXJlcyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1J2ZhaWx1cmUnOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1J2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOipcbicKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2
YWx1ZXM6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnICAxXG4gIDInICsg
U1RBQ0tfVFJBQ0VfVEVNUExBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSd0eXBl
JzogdScnCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIHUnbmFtZSc6IHUnRGlzYWJsZWRUZXN0JywKKyAgICAgICAgICAgIHUndGVz
dHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgICAgICB1J2Rpc2Fi
bGVkJzogMSwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6
IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnRElTQUJMRURfdGVzdF9ub3RfcnVuJywKKyAg
ICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J05PVFJVTicsCisgICAgICAgICAgICAgICAg
ICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdE
aXNhYmxlZFRlc3QnCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1J01peGVkUmVzdWx0VGVzdCcsCisg
ICAgICAgICAgICB1J3Rlc3RzJzogMywKKyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAxLAorICAg
ICAgICAgICAgdSdkaXNhYmxlZCc6IDEsCisgICAgICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAg
ICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBbCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J1N1Y2NlZWRzJywK
KyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAg
ICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdN
aXhlZFJlc3VsdFRlc3QnCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnRmFpbHMnLAorICAgICAgICAgICAgICAgICAg
ICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywK
KyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J01peGVkUmVzdWx0VGVzdCcsCisg
ICAgICAgICAgICAgICAgICAgIHUnZmFpbHVyZXMnOiBbCisgICAgICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdmYWlsdXJlJzoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdSdndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqXG4n
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnRXhwZWN0ZWQgZXF1YWxpdHkgb2Yg
dGhlc2UgdmFsdWVzOlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1JyAgMVxu
ICAyJyArIFNUQUNLX1RSQUNFX1RFTVBMQVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHUndHlwZSc6IHUnJworICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2ZhaWx1cmUnOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3Rf
LmNjOipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdFeHBlY3RlZCBlcXVh
bGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHUnICAyXG4gIDMnICsgU1RBQ0tfVFJBQ0VfVEVNUExBVEUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdSd0eXBlJzogdScnCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdESVNBQkxFRF90ZXN0JywKKyAgICAgICAgICAg
ICAgICAgICAgdSdzdGF0dXMnOiB1J05PVFJVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGlt
ZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdNaXhlZFJlc3Vs
dFRlc3QnCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAg
ICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1J1htbFF1b3RpbmdUZXN0JywKKyAgICAgICAg
ICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDEsCisgICAgICAgICAg
ICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAg
IHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnT3V0cHV0c0NEYXRhJywKKyAg
ICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAg
IHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdYbWxR
dW90aW5nVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUnZmFpbHVyZXMnOiBbCisgICAgICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdmYWlsdXJl
JzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdndGVzdF94bWxfb3V0cHV0X3Vu
aXR0ZXN0Xy5jYzoqXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnRmFpbGVk
XG5YTUwgb3V0cHV0OiA8P3htbCBlbmNvZGluZz0idXRmLTgiPicKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdSc8dG9wPjwhW0NEQVRBW2NkYXRhIHRleHRdXT48L3RvcD4nICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RBQ0tfVFJBQ0VfVEVNUExBVEUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdSd0eXBlJzogdScnCisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnSW52
YWxpZENoYXJhY3RlcnNUZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICAg
ICAgdSdmYWlsdXJlcyc6IDEsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAg
ICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAg
ICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHUnbmFtZSc6IHUnSW52YWxpZENoYXJhY3RlcnNJbk1lc3NhZ2UnLAorICAgICAgICAgICAgICAg
ICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScq
JywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J0ludmFsaWRDaGFyYWN0ZXJz
VGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUnZmFpbHVyZXMnOiBbCisgICAgICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdmYWlsdXJlJzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0
Xy5jYzoqXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnRmFpbGVkXG5JbnZh
bGlkIGNoYXJhY3RlcnMgaW4gYnJhY2tldHMnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHUnIFtceDAxXHgwMl0nICsgU1RBQ0tfVFJBQ0VfVEVNUExBVEUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdSd0eXBlJzogdScnCisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnUHJvcGVydHlSZWNv
cmRpbmdUZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiA0LAorICAgICAgICAgICAgdSdmYWls
dXJlcyc6IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJy
b3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J1NldFVw
VGVzdENhc2UnOiB1J3llcycsCisgICAgICAgICAgICB1J1RlYXJEb3duVGVzdENhc2UnOiB1J2F5
ZScsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnT25lUHJvcGVydHknLAorICAgICAgICAgICAgICAg
ICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScq
JywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1Byb3BlcnR5UmVjb3JkaW5n
VGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUna2V5XzEnOiB1JzEnCisgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUn
SW50VmFsdWVkUHJvcGVydHknLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVO
JywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAg
ICAgdSdjbGFzc25hbWUnOiB1J1Byb3BlcnR5UmVjb3JkaW5nVGVzdCcsCisgICAgICAgICAgICAg
ICAgICAgIHUna2V5X2ludCc6IHUnMScKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdUaHJlZVByb3BlcnRpZXMnLAor
ICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAg
ICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1By
b3BlcnR5UmVjb3JkaW5nVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUna2V5XzEnOiB1JzEn
LAorICAgICAgICAgICAgICAgICAgICB1J2tleV8yJzogdScyJywKKyAgICAgICAgICAgICAgICAg
ICAgdSdrZXlfMyc6IHUnMycKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdUd29WYWx1ZXNGb3JPbmVLZXlVc2VzTGFz
dFZhbHVlJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAg
ICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3Nu
YW1lJzogdSdQcm9wZXJ0eVJlY29yZGluZ1Rlc3QnLAorICAgICAgICAgICAgICAgICAgICB1J2tl
eV8xJzogdScyJworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdOb0ZpeHR1cmVUZXN0JywKKyAgICAg
ICAgICAgIHUndGVzdHMnOiAzLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAg
ICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAg
ICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnUmVjb3JkUHJvcGVydHkn
LAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAg
ICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1
J05vRml4dHVyZVRlc3QnLAorICAgICAgICAgICAgICAgICAgICB1J2tleSc6IHUnMScKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSdu
YW1lJzogdSdFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRJbnRWYWx1ZWRQcm9wZXJ0eScs
CisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAg
ICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUn
Tm9GaXh0dXJlVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUna2V5X2Zvcl91dGlsaXR5X2lu
dCc6IHUnMScKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgdSduYW1lJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHUnRXh0ZXJuYWxV
dGlsaXR5VGhhdENhbGxzUmVjb3JkU3RyaW5nVmFsdWVkUHJvcGVydHknLAorICAgICAgICAgICAg
ICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzog
dScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J05vRml4dHVyZVRlc3Qn
LAorICAgICAgICAgICAgICAgICAgICB1J2tleV9mb3JfdXRpbGl0eV9zdHJpbmcnOiB1JzEnCisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7Cisg
ICAgICAgICAgICB1J25hbWUnOiB1J1R5cGVkVGVzdC8wJywKKyAgICAgICAgICAgIHUndGVzdHMn
OiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVk
JzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUn
KicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnSGFzVHlwZVBhcmFtQXR0cmlidXRlJywKKyAgICAg
ICAgICAgICAgICAgICAgdSd0eXBlX3BhcmFtJzogdSdpbnQnLAorICAgICAgICAgICAgICAgICAg
ICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywK
KyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1R5cGVkVGVzdC8wJworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgdSduYW1lJzogdSdUeXBlZFRlc3QvMScsCisgICAgICAgICAgICB1J3Rlc3RzJzogMSwK
KyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAwLAorICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDAs
CisgICAgICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAor
ICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICB1J25hbWUnOiB1J0hhc1R5cGVQYXJhbUF0dHJpYnV0ZScsCisgICAgICAgICAg
ICAgICAgICAgIHUndHlwZV9wYXJhbSc6IHUnbG9uZycsCisgICAgICAgICAgICAgICAgICAgIHUn
c3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAg
ICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnVHlwZWRUZXN0LzEnCisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAg
ICB1J25hbWUnOiB1J1NpbmdsZS9UeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLzAnLAorICAgICAg
ICAgICAgdSd0ZXN0cyc6IDEsCisgICAgICAgICAgICB1J2ZhaWx1cmVzJzogMCwKKyAgICAgICAg
ICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAgICAgICAgdSdlcnJvcnMnOiAwLAorICAgICAgICAg
ICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgIHUndGVzdHN1aXRlJzogWworICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdIYXNUeXBlUGFyYW1BdHRy
aWJ1dGUnLAorICAgICAgICAgICAgICAgICAgICB1J3R5cGVfcGFyYW0nOiB1J2ludCcsCisgICAg
ICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1
J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnU2luZ2xl
L1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMCcKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnU2lu
Z2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMScsCisgICAgICAgICAgICB1J3Rlc3RzJzog
MSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAwLAorICAgICAgICAgICAgdSdkaXNhYmxlZCc6
IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgICAgICB1J3RpbWUnOiB1Jyon
LAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBbCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICB1J25hbWUnOiB1J0hhc1R5cGVQYXJhbUF0dHJpYnV0ZScsCisgICAgICAg
ICAgICAgICAgICAgIHUndHlwZV9wYXJhbSc6IHUnbG9uZycsCisgICAgICAgICAgICAgICAgICAg
IHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAor
ICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnU2luZ2xlL1R5cGVQYXJhbWV0ZXJp
emVkVGVzdENhc2UvMScKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnU2luZ2xlL1ZhbHVlUGFyYW1U
ZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiA0LAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6
IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzog
MCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6
IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnSGFz
VmFsdWVQYXJhbUF0dHJpYnV0ZS8wJywKKyAgICAgICAgICAgICAgICAgICAgdSd2YWx1ZV9wYXJh
bSc6IHUnMzMnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAg
ICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFz
c25hbWUnOiB1J1NpbmdsZS9WYWx1ZVBhcmFtVGVzdCcKKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdIYXNWYWx1ZVBh
cmFtQXR0cmlidXRlLzEnLAorICAgICAgICAgICAgICAgICAgICB1J3ZhbHVlX3BhcmFtJzogdSc0
MicsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAg
ICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6
IHUnU2luZ2xlL1ZhbHVlUGFyYW1UZXN0JworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0Fub3RoZXJUZXN0VGhhdEhh
c1ZhbHVlUGFyYW1BdHRyaWJ1dGUvMCcsCisgICAgICAgICAgICAgICAgICAgIHUndmFsdWVfcGFy
YW0nOiB1JzMzJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAg
ICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xh
c3NuYW1lJzogdSdTaW5nbGUvVmFsdWVQYXJhbVRlc3QnCisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnQW5vdGhlclRl
c3RUaGF0SGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8xJywKKyAgICAgICAgICAgICAgICAgICAgdSd2
YWx1ZV9wYXJhbSc6IHUnNDInLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVO
JywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAg
ICAgdSdjbGFzc25hbWUnOiB1J1NpbmdsZS9WYWx1ZVBhcmFtVGVzdCcKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CisKK0VYUEVDVEVEX0ZJTFRF
UkVEID0geworICAgIHUndGVzdHMnOiAxLAorICAgIHUnZmFpbHVyZXMnOiAwLAorICAgIHUnZGlz
YWJsZWQnOiAwLAorICAgIHUnZXJyb3JzJzogMCwKKyAgICB1J3RpbWUnOiB1JyonLAorICAgIHUn
dGltZXN0YW1wJzogdScqJywKKyAgICB1J25hbWUnOiB1J0FsbFRlc3RzJywKKyAgICB1J2FkX2hv
Y19wcm9wZXJ0eSc6IHUnNDInLAorICAgIHUndGVzdHN1aXRlcyc6IFt7CisgICAgICAgIHUnbmFt
ZSc6IHUnU3VjY2Vzc2Z1bFRlc3QnLAorICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgdSdm
YWlsdXJlcyc6IDAsCisgICAgICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAgICB1J2Vycm9ycyc6
IDAsCisgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgIHUndGVzdHN1aXRlJzogW3sKKyAg
ICAgICAgICAgIHUnbmFtZSc6IHUnU3VjY2VlZHMnLAorICAgICAgICAgICAgdSdzdGF0dXMnOiB1
J1JVTicsCisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSdjbGFzc25h
bWUnOiB1J1N1Y2Nlc3NmdWxUZXN0JywKKyAgICAgICAgfV0KKyAgICB9XSwKK30KKworRVhQRUNU
RURfRU1QVFkgPSB7CisgICAgdSd0ZXN0cyc6IDAsCisgICAgdSdmYWlsdXJlcyc6IDAsCisgICAg
dSdkaXNhYmxlZCc6IDAsCisgICAgdSdlcnJvcnMnOiAwLAorICAgIHUndGltZSc6IHUnKicsCisg
ICAgdSd0aW1lc3RhbXAnOiB1JyonLAorICAgIHUnbmFtZSc6IHUnQWxsVGVzdHMnLAorICAgIHUn
dGVzdHN1aXRlcyc6IFtdLAorfQorCitHVEVTVF9QUk9HUkFNX1BBVEggPSBndGVzdF90ZXN0X3V0
aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aChHVEVTVF9QUk9HUkFNX05BTUUpCisKK1NVUFBPUlRT
X1RZUEVEX1RFU1RTID0gJ1R5cGVkVGVzdCcgaW4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNz
KAorICAgIFtHVEVTVF9QUk9HUkFNX1BBVEgsIEdURVNUX0xJU1RfVEVTVFNfRkxBR10sIGNhcHR1
cmVfc3RkZXJyPUZhbHNlKS5vdXRwdXQKKworCitjbGFzcyBHVGVzdEpzb25PdXRwdXRVbml0VGVz
dChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUg
VGVzdCdzIEpTT04gb3V0cHV0IGZ1bmN0aW9uYWxpdHkuCisgICIiIgorCisgICMgVGhpcyB0ZXN0
IGN1cnJlbnRseSBicmVha3Mgb24gcGxhdGZvcm1zIHRoYXQgZG8gbm90IHN1cHBvcnQgdHlwZWQg
YW5kCisgICMgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLCBzbyB3ZSBkb24ndCBydW4gaXQgdW5k
ZXIgdGhlbS4KKyAgaWYgU1VQUE9SVFNfVFlQRURfVEVTVFM6CisKKyAgICBkZWYgdGVzdE5vbkVt
cHR5SnNvbk91dHB1dChzZWxmKToKKyAgICAgICIiIlZlcmlmaWVzIEpTT04gb3V0cHV0IGZvciBh
IEdvb2dsZSBUZXN0IGJpbmFyeSB3aXRoIG5vbi1lbXB0eSBvdXRwdXQuCisKKyAgICAgIFJ1bnMg
YSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYSBub24tZW1wdHkgSlNPTiBvdXRwdXQsIGFu
ZAorICAgICAgdGVzdHMgdGhhdCB0aGUgSlNPTiBvdXRwdXQgaXMgZXhwZWN0ZWQuCisgICAgICAi
IiIKKyAgICAgIHNlbGYuX1Rlc3RKc29uT3V0cHV0KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQRUNU
RURfTk9OX0VNUFRZLCAxKQorCisgIGRlZiB0ZXN0RW1wdHlKc29uT3V0cHV0KHNlbGYpOgorICAg
ICIiIlZlcmlmaWVzIEpTT04gb3V0cHV0IGZvciBhIEdvb2dsZSBUZXN0IGJpbmFyeSB3aXRob3V0
IGFjdHVhbCB0ZXN0cy4KKworICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMg
YW4gZW1wdHkgSlNPTiBvdXRwdXQsIGFuZAorICAgIHRlc3RzIHRoYXQgdGhlIEpTT04gb3V0cHV0
IGlzIGV4cGVjdGVkLgorICAgICIiIgorCisgICAgc2VsZi5fVGVzdEpzb25PdXRwdXQoJ2d0ZXN0
X25vX3Rlc3RfdW5pdHRlc3QnLCBFWFBFQ1RFRF9FTVBUWSwgMCkKKworICBkZWYgdGVzdFRpbWVz
dGFtcFZhbHVlKHNlbGYpOgorICAgICIiIkNoZWNrcyB3aGV0aGVyIHRoZSB0aW1lc3RhbXAgYXR0
cmlidXRlIGluIHRoZSBKU09OIG91dHB1dCBpcyB2YWxpZC4KKworICAgIFJ1bnMgYSB0ZXN0IHBy
b2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkgSlNPTiBvdXRwdXQsIGFuZCBjaGVja3MgaWYK
KyAgICB0aGUgdGltZXN0YW1wIGF0dHJpYnV0ZSBpbiB0aGUgdGVzdHN1aXRlcyB0YWcgaXMgdmFs
aWQuCisgICAgIiIiCisgICAgYWN0dWFsID0gc2VsZi5fR2V0SnNvbk91dHB1dCgnZ3Rlc3Rfbm9f
dGVzdF91bml0dGVzdCcsIFtdLCAwKQorICAgIGRhdGVfdGltZV9zdHIgPSBhY3R1YWxbJ3RpbWVz
dGFtcCddCisgICAgIyBkYXRldGltZS5zdHJwdGltZSgpIGlzIG9ubHkgYXZhaWxhYmxlIGluIFB5
dGhvbiAyLjUrIHNvIHdlIGhhdmUgdG8KKyAgICAjIHBhcnNlIHRoZSBleHBlY3RlZCBkYXRldGlt
ZSBtYW51YWxseS4KKyAgICBtYXRjaCA9IHJlLm1hdGNoKHInKFxkKyktKFxkXGQpLShcZFxkKVQo
XGRcZCk6KFxkXGQpOihcZFxkKScsIGRhdGVfdGltZV9zdHIpCisgICAgc2VsZi5hc3NlcnRUcnVl
KAorICAgICAgICByZS5tYXRjaCwKKyAgICAgICAgJ0pTT04gZGF0ZXR0aW1lIHN0cmluZyAlcyBo
YXMgaW5jb3JyZWN0IGZvcm1hdCcgJSBkYXRlX3RpbWVfc3RyKQorICAgIGRhdGVfdGltZV9mcm9t
X2pzb24gPSBkYXRldGltZS5kYXRldGltZSgKKyAgICAgICAgeWVhcj1pbnQobWF0Y2guZ3JvdXAo
MSkpLCBtb250aD1pbnQobWF0Y2guZ3JvdXAoMikpLAorICAgICAgICBkYXk9aW50KG1hdGNoLmdy
b3VwKDMpKSwgaG91cj1pbnQobWF0Y2guZ3JvdXAoNCkpLAorICAgICAgICBtaW51dGU9aW50KG1h
dGNoLmdyb3VwKDUpKSwgc2Vjb25kPWludChtYXRjaC5ncm91cCg2KSkpCisKKyAgICB0aW1lX2Rl
bHRhID0gYWJzKGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpIC0gZGF0ZV90aW1lX2Zyb21fanNvbikK
KyAgICAjIHRpbWVzdGFtcCB2YWx1ZSBzaG91bGQgYmUgbmVhciB0aGUgY3VycmVudCBsb2NhbCB0
aW1lCisgICAgc2VsZi5hc3NlcnRUcnVlKHRpbWVfZGVsdGEgPCBkYXRldGltZS50aW1lZGVsdGEo
c2Vjb25kcz02MDApLAorICAgICAgICAgICAgICAgICAgICAndGltZV9kZWx0YSBpcyAlcycgJSB0
aW1lX2RlbHRhKQorCisgIGRlZiB0ZXN0RGVmYXVsdE91dHB1dEZpbGUoc2VsZik6CisgICAgIiIi
VmVyaWZpZXMgdGhlIGRlZmF1bHQgb3V0cHV0IGZpbGUgbmFtZS4KKworICAgIENvbmZpcm1zIHRo
YXQgR29vZ2xlIFRlc3QgcHJvZHVjZXMgYW4gSlNPTiBvdXRwdXQgZmlsZSB3aXRoIHRoZSBleHBl
Y3RlZAorICAgIGRlZmF1bHQgbmFtZSBpZiBubyBuYW1lIGlzIGV4cGxpY2l0bHkgc3BlY2lmaWVk
LgorICAgICIiIgorICAgIG91dHB1dF9maWxlID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRp
bHMuR2V0VGVtcERpcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX0RF
RkFVTFRfT1VUUFVUX0ZJTEUpCisgICAgZ3Rlc3RfcHJvZ19wYXRoID0gZ3Rlc3RfdGVzdF91dGls
cy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisgICAgICAgICdndGVzdF9ub190ZXN0X3VuaXR0ZXN0
JykKKyAgICB0cnk6CisgICAgICBvcy5yZW1vdmUob3V0cHV0X2ZpbGUpCisgICAgZXhjZXB0IE9T
RXJyb3I6CisgICAgICBlID0gc3lzLmV4Y19pbmZvKClbMV0KKyAgICAgIGlmIGUuZXJybm8gIT0g
ZXJybm8uRU5PRU5UOgorICAgICAgICByYWlzZQorCisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
U3VicHJvY2VzcygKKyAgICAgICAgW2d0ZXN0X3Byb2dfcGF0aCwgJyVzPWpzb24nICUgR1RFU1Rf
T1VUUFVUX0ZMQUddLAorICAgICAgICB3b3JraW5nX2Rpcj1ndGVzdF90ZXN0X3V0aWxzLkdldFRl
bXBEaXIoKSkKKyAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCisgICAgc2VsZi5hc3NlcnRFcXVh
bHMoMCwgcC5leGl0X2NvZGUpCisgICAgc2VsZi5hc3NlcnRfKG9zLnBhdGguaXNmaWxlKG91dHB1
dF9maWxlKSkKKworICBkZWYgdGVzdFN1cHByZXNzZWRKc29uT3V0cHV0KHNlbGYpOgorICAgICIi
IlZlcmlmaWVzIHRoYXQgbm8gSlNPTiBvdXRwdXQgaXMgZ2VuZXJhdGVkLgorCisgICAgVGVzdHMg
dGhhdCBubyBKU09OIGZpbGUgaXMgZ2VuZXJhdGVkIGlmIHRoZSBkZWZhdWx0IEpTT04gbGlzdGVu
ZXIgaXMKKyAgICBzaHV0IGRvd24gYmVmb3JlIFJVTl9BTExfVEVTVFMgaXMgaW52b2tlZC4KKyAg
ICAiIiIKKworICAgIGpzb25fcGF0aCA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdl
dFRlbXBEaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfUFJPR1JBTV9O
QU1FICsgJ291dC5qc29uJykKKyAgICBpZiBvcy5wYXRoLmlzZmlsZShqc29uX3BhdGgpOgorICAg
ICAgb3MucmVtb3ZlKGpzb25fcGF0aCkKKworICAgIGNvbW1hbmQgPSBbR1RFU1RfUFJPR1JBTV9Q
QVRILAorICAgICAgICAgICAgICAgJyVzPWpzb246JXMnICUgKEdURVNUX09VVFBVVF9GTEFHLCBq
c29uX3BhdGgpLAorICAgICAgICAgICAgICAgJy0tc2h1dF9kb3duX3htbCddCisgICAgcCA9IGd0
ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kKQorICAgIGlmIHAudGVybWluYXRlZF9i
eV9zaWduYWw6CisgICAgICAjIHAuc2lnbmFsIGlzIGF2YWlsYWJsZSBvbmx5IGlmIHAudGVybWlu
YXRlZF9ieV9zaWduYWwgaXMgVHJ1ZS4KKyAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoCisgICAgICAg
ICAgcC50ZXJtaW5hdGVkX2J5X3NpZ25hbCwKKyAgICAgICAgICAnJXMgd2FzIGtpbGxlZCBieSBz
aWduYWwgJWQnICUgKEdURVNUX1BST0dSQU1fTkFNRSwgcC5zaWduYWwpKQorICAgIGVsc2U6Cisg
ICAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCisgICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBw
LmV4aXRfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIGV4aXRlZCB3aXRoIGNv
ZGUgJXMsIHdoaWNoIGRvZXNuJ3QgbWF0Y2ggIgorICAgICAgICAgICAgICAgICAgICAgICAgJ3Ro
ZSBleHBlY3RlZCBleGl0IGNvZGUgJXMuJworICAgICAgICAgICAgICAgICAgICAgICAgJSAoY29t
bWFuZCwgcC5leGl0X2NvZGUsIDEpKQorCisgICAgc2VsZi5hc3NlcnRfKG5vdCBvcy5wYXRoLmlz
ZmlsZShqc29uX3BhdGgpKQorCisgIGRlZiB0ZXN0RmlsdGVyZWRUZXN0SnNvbk91dHB1dChzZWxm
KToKKyAgICAiIiJWZXJpZmllcyBKU09OIG91dHB1dCB3aGVuIGEgZmlsdGVyIGlzIGFwcGxpZWQu
CisKKyAgICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRoYXQgZXhlY3V0ZXMgb25seSBzb21lIHRlc3Rz
IGFuZCB2ZXJpZmllcyB0aGF0CisgICAgbm9uLXNlbGVjdGVkIHRlc3RzIGRvIG5vdCBzaG93IHVw
IGluIHRoZSBKU09OIG91dHB1dC4KKyAgICAiIiIKKworICAgIHNlbGYuX1Rlc3RKc29uT3V0cHV0
KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQRUNURURfRklMVEVSRUQsIDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgZXh0cmFfYXJncz1bJyVzPVN1Y2Nlc3NmdWxUZXN0LionICUgR1RFU1RfRklM
VEVSX0ZMQUddKQorCisgIGRlZiBfR2V0SnNvbk91dHB1dChzZWxmLCBndGVzdF9wcm9nX25hbWUs
IGV4dHJhX2FyZ3MsIGV4cGVjdGVkX2V4aXRfY29kZSk6CisgICAgIiIiUmV0dXJucyB0aGUgSlNP
TiBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgdGhlIHByb2dyYW0gZ3Rlc3RfcHJvZ19uYW1l
LgorCisgICAgRnVydGhlcm1vcmUsIHRoZSBwcm9ncmFtJ3MgZXhpdCBjb2RlIG11c3QgYmUgZXhw
ZWN0ZWRfZXhpdF9jb2RlLgorCisgICAgQXJnczoKKyAgICAgIGd0ZXN0X3Byb2dfbmFtZTogR29v
Z2xlIFRlc3QgYmluYXJ5IG5hbWUuCisgICAgICBleHRyYV9hcmdzOiBleHRyYSBhcmd1bWVudHMg
dG8gYmluYXJ5IGludm9jYXRpb24uCisgICAgICBleHBlY3RlZF9leGl0X2NvZGU6IHByb2dyYW0n
cyBleGl0IGNvZGUuCisgICAgIiIiCisgICAganNvbl9wYXRoID0gb3MucGF0aC5qb2luKGd0ZXN0
X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
dGVzdF9wcm9nX25hbWUgKyAnb3V0Lmpzb24nKQorICAgIGd0ZXN0X3Byb2dfcGF0aCA9IGd0ZXN0
X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKGd0ZXN0X3Byb2dfbmFtZSkKKworICAg
IGNvbW1hbmQgPSAoCisgICAgICAgIFtndGVzdF9wcm9nX3BhdGgsICclcz1qc29uOiVzJyAlIChH
VEVTVF9PVVRQVVRfRkxBRywganNvbl9wYXRoKV0gKworICAgICAgICBleHRyYV9hcmdzCisgICAg
KQorICAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKKyAgICBpZiBw
LnRlcm1pbmF0ZWRfYnlfc2lnbmFsOgorICAgICAgc2VsZi5hc3NlcnRfKEZhbHNlLAorICAgICAg
ICAgICAgICAgICAgICclcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAlZCcgJSAoZ3Rlc3RfcHJvZ19u
YW1lLCBwLnNpZ25hbCkpCisgICAgZWxzZToKKyAgICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkK
KyAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX2V4aXRfY29kZSwgcC5leGl0X2NvZGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyBleGl0ZWQgd2l0aCBjb2RlICVzLCB3aGlj
aCBkb2Vzbid0IG1hdGNoICIKKyAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgZXhwZWN0ZWQg
ZXhpdCBjb2RlICVzLicKKyAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvbW1hbmQsIHAuZXhp
dF9jb2RlLCBleHBlY3RlZF9leGl0X2NvZGUpKQorICAgIHdpdGggb3Blbihqc29uX3BhdGgpIGFz
IGY6CisgICAgICBhY3R1YWwgPSBqc29uLmxvYWQoZikKKyAgICByZXR1cm4gYWN0dWFsCisKKyAg
ZGVmIF9UZXN0SnNvbk91dHB1dChzZWxmLCBndGVzdF9wcm9nX25hbWUsIGV4cGVjdGVkLAorICAg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZSwgZXh0cmFfYXJncz1Ob25lKToK
KyAgICAiIiJDaGVja3MgdGhlIEpTT04gb3V0cHV0IGdlbmVyYXRlZCBieSB0aGUgR29vZ2xlIFRl
c3QgYmluYXJ5LgorCisgICAgQXNzZXJ0cyB0aGF0IHRoZSBKU09OIGRvY3VtZW50IGdlbmVyYXRl
ZCBieSBydW5uaW5nIHRoZSBwcm9ncmFtCisgICAgZ3Rlc3RfcHJvZ19uYW1lIG1hdGNoZXMgZXhw
ZWN0ZWRfanNvbiwgYSBzdHJpbmcgY29udGFpbmluZyBhbm90aGVyCisgICAgSlNPTiBkb2N1bWVu
dC4gIEZ1cnRoZXJtb3JlLCB0aGUgcHJvZ3JhbSdzIGV4aXQgY29kZSBtdXN0IGJlCisgICAgZXhw
ZWN0ZWRfZXhpdF9jb2RlLgorCisgICAgQXJnczoKKyAgICAgIGd0ZXN0X3Byb2dfbmFtZTogR29v
Z2xlIFRlc3QgYmluYXJ5IG5hbWUuCisgICAgICBleHBlY3RlZDogZXhwZWN0ZWQgb3V0cHV0Lgor
ICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlOiBwcm9ncmFtJ3MgZXhpdCBjb2RlLgorICAgICAgZXh0
cmFfYXJnczogZXh0cmEgYXJndW1lbnRzIHRvIGJpbmFyeSBpbnZvY2F0aW9uLgorICAgICIiIgor
CisgICAgYWN0dWFsID0gc2VsZi5fR2V0SnNvbk91dHB1dChndGVzdF9wcm9nX25hbWUsIGV4dHJh
X2FyZ3Mgb3IgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9l
eGl0X2NvZGUpCisgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgZ3Rlc3RfanNvbl90ZXN0
X3V0aWxzLm5vcm1hbGl6ZShhY3R1YWwpKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
CisgIGlmIE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFHIGluIHN5cy5hcmd2OgorICAgICMgdW5p
dHRlc3QubWFpbigpIGNhbid0IGhhbmRsZSB1bmtub3duIGZsYWdzCisgICAgc3lzLmFyZ3YucmVt
b3ZlKE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFHKQorCisgIG9zLmVudmlyb25bJ0dURVNUX1NU
QUNLX1RSQUNFX0RFUFRIJ10gPSAnMScKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1saW5rZWQtcHRy
LXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlua2Vk
LXB0ci10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMDBmMzQyOTZiZDU3OTRjMTY0NDc5ZjIyYTg4ZGQ0
ZjczNjAwMWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtbGlua2VkLXB0ci10ZXN0LmNjCkBAIC0wLDAgKzEsMTUxIEBACisvLyBDb3B5
cmlnaHQgMjAwMywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
Ky8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1
dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
Ky8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlIDxzdGRsaWIu
aD4KKworI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaCIKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCit1c2luZyB0ZXN0aW5nOjpNZXNz
YWdlOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmxpbmtlZF9wdHI7CisKK2ludCBudW07CitN
ZXNzYWdlKiBoaXN0b3J5ID0gTlVMTDsKKworLy8gQ2xhc3Mgd2hpY2ggdHJhY2tzIGFsbG9jYXRp
b24vZGVhbGxvY2F0aW9uCitjbGFzcyBBIHsKKyBwdWJsaWM6CisgIEEoKTogbXludW0obnVtKysp
IHsgKmhpc3RvcnkgPDwgIkEiIDw8IG15bnVtIDw8ICIgY3RvclxuIjsgfQorICB2aXJ0dWFsIH5B
KCkgeyAqaGlzdG9yeSA8PCAiQSIgPDwgbXludW0gPDwgIiBkdG9yXG4iOyB9CisgIHZpcnR1YWwg
dm9pZCBVc2UoKSB7ICpoaXN0b3J5IDw8ICJBIiA8PCBteW51bSA8PCAiIHVzZVxuIjsgfQorIHBy
b3RlY3RlZDoKKyAgaW50IG15bnVtOworfTsKKworLy8gU3ViY2xhc3MKK2NsYXNzIEIgOiBwdWJs
aWMgQSB7CisgcHVibGljOgorICBCKCkgeyAqaGlzdG9yeSA8PCAiQiIgPDwgbXludW0gPDwgIiBj
dG9yXG4iOyB9CisgIH5CKCkgeyAqaGlzdG9yeSA8PCAiQiIgPDwgbXludW0gPDwgIiBkdG9yXG4i
OyB9CisgIHZpcnR1YWwgdm9pZCBVc2UoKSB7ICpoaXN0b3J5IDw8ICJCIiA8PCBteW51bSA8PCAi
IHVzZVxuIjsgfQorfTsKKworY2xhc3MgTGlua2VkUHRyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKKyBwdWJsaWM6CisgIExpbmtlZFB0clRlc3QoKSB7CisgICAgbnVtID0gMDsKKyAgICBo
aXN0b3J5ID0gbmV3IE1lc3NhZ2U7CisgIH0KKworICB2aXJ0dWFsIH5MaW5rZWRQdHJUZXN0KCkg
eworICAgIGRlbGV0ZSBoaXN0b3J5OworICAgIGhpc3RvcnkgPSBOVUxMOworICB9Cit9OworCitU
RVNUX0YoTGlua2VkUHRyVGVzdCwgR2VuZXJhbFRlc3QpIHsKKyAgeworICAgIGxpbmtlZF9wdHI8
QT4gYTAsIGExLCBhMjsKKyAgICAvLyBVc2UgZXhwbGljaXQgZnVuY3Rpb24gY2FsbCBub3RhdGlv
biBoZXJlIHRvIHN1cHByZXNzIHNlbGYtYXNzaWduIHdhcm5pbmcuCisgICAgYTAub3BlcmF0b3I9
KGEwKTsKKyAgICBhMSA9IGEyOworICAgIEFTU0VSVF9FUShhMC5nZXQoKSwgc3RhdGljX2Nhc3Q8
QSo+KE5VTEwpKTsKKyAgICBBU1NFUlRfRVEoYTEuZ2V0KCksIHN0YXRpY19jYXN0PEEqPihOVUxM
KSk7CisgICAgQVNTRVJUX0VRKGEyLmdldCgpLCBzdGF0aWNfY2FzdDxBKj4oTlVMTCkpOworICAg
IEFTU0VSVF9UUlVFKGEwID09IE5VTEwpOworICAgIEFTU0VSVF9UUlVFKGExID09IE5VTEwpOwor
ICAgIEFTU0VSVF9UUlVFKGEyID09IE5VTEwpOworCisgICAgeworICAgICAgbGlua2VkX3B0cjxB
PiBhMyhuZXcgQSk7CisgICAgICBhMCA9IGEzOworICAgICAgQVNTRVJUX1RSVUUoYTAgPT0gYTMp
OworICAgICAgQVNTRVJUX1RSVUUoYTAgIT0gTlVMTCk7CisgICAgICBBU1NFUlRfVFJVRShhMC5n
ZXQoKSA9PSBhMyk7CisgICAgICBBU1NFUlRfVFJVRShhMCA9PSBhMy5nZXQoKSk7CisgICAgICBs
aW5rZWRfcHRyPEE+IGE0KGEwKTsKKyAgICAgIGExID0gYTQ7CisgICAgICBsaW5rZWRfcHRyPEE+
IGE1KG5ldyBBKTsKKyAgICAgIEFTU0VSVF9UUlVFKGE1LmdldCgpICE9IGEzKTsKKyAgICAgIEFT
U0VSVF9UUlVFKGE1ICE9IGEzLmdldCgpKTsKKyAgICAgIGEyID0gYTU7CisgICAgICBsaW5rZWRf
cHRyPEI+IGIwKG5ldyBCKTsKKyAgICAgIGxpbmtlZF9wdHI8QT4gYTYoYjApOworICAgICAgQVNT
RVJUX1RSVUUoYjAgPT0gYTYpOworICAgICAgQVNTRVJUX1RSVUUoYTYgPT0gYjApOworICAgICAg
QVNTRVJUX1RSVUUoYjAgIT0gTlVMTCk7CisgICAgICBhNSA9IGIwOworICAgICAgYTUgPSBiMDsK
KyAgICAgIGEzLT5Vc2UoKTsKKyAgICAgIGE0LT5Vc2UoKTsKKyAgICAgIGE1LT5Vc2UoKTsKKyAg
ICAgIGE2LT5Vc2UoKTsKKyAgICAgIGIwLT5Vc2UoKTsKKyAgICAgICgqYjApLlVzZSgpOworICAg
ICAgYjAuZ2V0KCktPlVzZSgpOworICAgIH0KKworICAgIGEwLT5Vc2UoKTsKKyAgICBhMS0+VXNl
KCk7CisgICAgYTItPlVzZSgpOworCisgICAgYTEgPSBhMjsKKyAgICBhMi5yZXNldChuZXcgQSk7
CisgICAgYTAucmVzZXQoKTsKKworICAgIGxpbmtlZF9wdHI8QT4gYTc7CisgIH0KKworICBBU1NF
UlRfU1RSRVEoCisgICAgIkEwIGN0b3JcbiIKKyAgICAiQTEgY3RvclxuIgorICAgICJBMiBjdG9y
XG4iCisgICAgIkIyIGN0b3JcbiIKKyAgICAiQTAgdXNlXG4iCisgICAgIkEwIHVzZVxuIgorICAg
ICJCMiB1c2VcbiIKKyAgICAiQjIgdXNlXG4iCisgICAgIkIyIHVzZVxuIgorICAgICJCMiB1c2Vc
biIKKyAgICAiQjIgdXNlXG4iCisgICAgIkIyIGR0b3JcbiIKKyAgICAiQTIgZHRvclxuIgorICAg
ICJBMCB1c2VcbiIKKyAgICAiQTAgdXNlXG4iCisgICAgIkExIHVzZVxuIgorICAgICJBMyBjdG9y
XG4iCisgICAgIkEwIGR0b3JcbiIKKyAgICAiQTMgZHRvclxuIgorICAgICJBMSBkdG9yXG4iLAor
ICAgIGhpc3RvcnktPkdldFN0cmluZygpLmNfc3RyKCkpOworfQorCit9ICAvLyBVbm5hbWVkIG5h
bWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTQyM2EzMzll
OGZkMjhhYTJiNDI1MzAxM2IzYzIzY2UzNTMzNzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3QucHkK
QEAgLTAsMCArMSwyMDUgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQg
MjAwNiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyIiIlVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0ZXN0X2xpc3RfdGVzdHMg
ZmxhZy4KKworQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gbGlzdCBhbGwgdGVzdHMgYnkg
c3BlY2lmeWluZyB0aGUKKy0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLiAgVGhpcyBzY3JpcHQgdGVz
dHMgc3VjaCBmdW5jdGlvbmFsaXR5CitieSBpbnZva2luZyBnb29nbGV0ZXN0LWxpc3QtdGVzdHMt
dW5pdHRlc3RfIChhIHByb2dyYW0gd3JpdHRlbiB3aXRoCitHb29nbGUgVGVzdCkgdGhlIGNvbW1h
bmQgbGluZSBmbGFncy4KKyIiIgorCitpbXBvcnQgcmUKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxz
CisKKyMgQ29uc3RhbnRzLgorCisjIFRoZSBjb21tYW5kIGxpbmUgZmxhZyBmb3IgZW5hYmxpbmcv
ZGlzYWJsaW5nIGxpc3RpbmcgYWxsIHRlc3RzLgorTElTVF9URVNUU19GTEFHID0gJ2d0ZXN0X2xp
c3RfdGVzdHMnCisKKyMgUGF0aCB0byB0aGUgZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0
XyBwcm9ncmFtLgorRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxl
UGF0aCgnZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0XycpCisKKyMgVGhlIGV4cGVjdGVk
IG91dHB1dCB3aGVuIHJ1bm5pbmcgZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0XyB3aXRo
CisjIC0tZ3Rlc3RfbGlzdF90ZXN0cworRVhQRUNURURfT1VUUFVUX05PX0ZJTFRFUl9SRSA9IHJl
LmNvbXBpbGUociIiIkZvb0RlYXRoVGVzdFwuCisgIFRlc3QxCitGb29cLgorICBCYXIxCisgIEJh
cjIKKyAgRElTQUJMRURfQmFyMworQWJjXC4KKyAgWHl6CisgIERlZgorRm9vQmFyXC4KKyAgQmF6
CitGb29UZXN0XC4KKyAgVGVzdDEKKyAgRElTQUJMRURfVGVzdDIKKyAgVGVzdDMKK1R5cGVkVGVz
dC8wXC4gICMgVHlwZVBhcmFtID0gKFZlcnlMb3syNDV9fGNsYXNzIFZlcnlMb3syMzl9KVwuXC5c
LgorICBUZXN0QQorICBUZXN0QgorVHlwZWRUZXN0LzFcLiAgIyBUeXBlUGFyYW0gPSBpbnRccypc
KiggX19wdHI2NCk/CisgIFRlc3RBCisgIFRlc3RCCitUeXBlZFRlc3QvMlwuICAjIFR5cGVQYXJh
bSA9IC4qTXlBcnJheTxib29sLFxzKjQyPgorICBUZXN0QQorICBUZXN0QgorTXkvVHlwZVBhcmFt
VGVzdC8wXC4gICMgVHlwZVBhcmFtID0gKFZlcnlMb3syNDV9fGNsYXNzIFZlcnlMb3syMzl9KVwu
XC5cLgorICBUZXN0QQorICBUZXN0QgorTXkvVHlwZVBhcmFtVGVzdC8xXC4gICMgVHlwZVBhcmFt
ID0gaW50XHMqXCooIF9fcHRyNjQpPworICBUZXN0QQorICBUZXN0QgorTXkvVHlwZVBhcmFtVGVz
dC8yXC4gICMgVHlwZVBhcmFtID0gLipNeUFycmF5PGJvb2wsXHMqNDI+CisgIFRlc3RBCisgIFRl
c3RCCitNeUluc3RhbnRpYXRpb24vVmFsdWVQYXJhbVRlc3RcLgorICBUZXN0QS8wICAjIEdldFBh
cmFtXChcKSA9IG9uZSBsaW5lCisgIFRlc3RBLzEgICMgR2V0UGFyYW1cKFwpID0gdHdvXFxubGlu
ZXMKKyAgVGVzdEEvMiAgIyBHZXRQYXJhbVwoXCkgPSBhIHZlcnlcXG5sb3syNDF9XC5cLlwuCisg
IFRlc3RCLzAgICMgR2V0UGFyYW1cKFwpID0gb25lIGxpbmUKKyAgVGVzdEIvMSAgIyBHZXRQYXJh
bVwoXCkgPSB0d29cXG5saW5lcworICBUZXN0Qi8yICAjIEdldFBhcmFtXChcKSA9IGEgdmVyeVxc
bmxvezI0MX1cLlwuXC4KKyIiIikKKworIyBUaGUgZXhwZWN0ZWQgb3V0cHV0IHdoZW4gcnVubmlu
ZyBnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfIHdpdGgKKyMgLS1ndGVzdF9saXN0X3Rl
c3RzIGFuZCAtLWd0ZXN0X2ZpbHRlcj1Gb28qLgorRVhQRUNURURfT1VUUFVUX0ZJTFRFUl9GT09f
UkUgPSByZS5jb21waWxlKHIiIiJGb29EZWF0aFRlc3RcLgorICBUZXN0MQorRm9vXC4KKyAgQmFy
MQorICBCYXIyCisgIERJU0FCTEVEX0JhcjMKK0Zvb0JhclwuCisgIEJhegorRm9vVGVzdFwuCisg
IFRlc3QxCisgIERJU0FCTEVEX1Rlc3QyCisgIFRlc3QzCisiIiIpCisKKyMgVXRpbGl0aWVzLgor
CisKK2RlZiBSdW4oYXJncyk6CisgICIiIlJ1bnMgZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0
ZXN0XyBhbmQgcmV0dXJucyB0aGUgbGlzdCBvZiB0ZXN0cyBwcmludGVkLiIiIgorCisgIHJldHVy
biBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0VYRV9QQVRIXSArIGFyZ3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZV9zdGRlcnI9RmFsc2UpLm91dHB1
dAorCisKKyMgVGhlIHVuaXQgdGVzdC4KKworCitjbGFzcyBHVGVzdExpc3RUZXN0c1VuaXRUZXN0
KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJUZXN0cyB1c2luZyB0aGUgLS1ndGVz
dF9saXN0X3Rlc3RzIGZsYWcgdG8gbGlzdCBhbGwgdGVzdHMuIiIiCisKKyAgZGVmIFJ1bkFuZFZl
cmlmeShzZWxmLCBmbGFnX3ZhbHVlLCBleHBlY3RlZF9vdXRwdXRfcmUsIG90aGVyX2ZsYWcpOgor
ICAgICIiIlJ1bnMgZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0XyBhbmQgdmVyaWZpZXMg
dGhhdCBpdCBwcmludHMKKyAgICB0aGUgY29ycmVjdCB0ZXN0cy4KKworICAgIEFyZ3M6CisgICAg
ICBmbGFnX3ZhbHVlOiAgICAgICAgIHZhbHVlIG9mIHRoZSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxh
ZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSBpZiB0aGUgZmxhZyBzaG91bGQgbm90
IGJlIHByZXNlbnQuCisgICAgICBleHBlY3RlZF9vdXRwdXRfcmU6IHJlZ3VsYXIgZXhwcmVzc2lv
biB0aGF0IG1hdGNoZXMgdGhlIGV4cGVjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgIG91
dHB1dCBhZnRlciBydW5uaW5nIGNvbW1hbmQ7CisgICAgICBvdGhlcl9mbGFnOiAgICAgICAgIGEg
ZGlmZmVyZW50IGZsYWcgdG8gYmUgcGFzc2VkIHRvIGNvbW1hbmQKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWxvbmcgd2l0aCBndGVzdF9saXN0X3Rlc3RzOworICAgICAgICAgICAgICAgICAg
ICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBub3QgYmUgcHJlc2VudC4KKyAgICAiIiIK
KworICAgIGlmIGZsYWdfdmFsdWUgaXMgTm9uZToKKyAgICAgIGZsYWcgPSAnJworICAgICAgZmxh
Z19leHByZXNzaW9uID0gJ25vdCBzZXQnCisgICAgZWxpZiBmbGFnX3ZhbHVlID09ICcwJzoKKyAg
ICAgIGZsYWcgPSAnLS0lcz0wJyAlIExJU1RfVEVTVFNfRkxBRworICAgICAgZmxhZ19leHByZXNz
aW9uID0gJzAnCisgICAgZWxzZToKKyAgICAgIGZsYWcgPSAnLS0lcycgJSBMSVNUX1RFU1RTX0ZM
QUcKKyAgICAgIGZsYWdfZXhwcmVzc2lvbiA9ICcxJworCisgICAgYXJncyA9IFtmbGFnXQorCisg
ICAgaWYgb3RoZXJfZmxhZyBpcyBub3QgTm9uZToKKyAgICAgIGFyZ3MgKz0gW290aGVyX2ZsYWdd
CisKKyAgICBvdXRwdXQgPSBSdW4oYXJncykKKworICAgIGlmIGV4cGVjdGVkX291dHB1dF9yZToK
KyAgICAgIHNlbGYuYXNzZXJ0XygKKyAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmUubWF0Y2go
b3V0cHV0KSwKKyAgICAgICAgICAoJ3doZW4gJXMgaXMgJXMsIHRoZSBvdXRwdXQgb2YgIiVzIiBp
cyAiJXMiLFxuJworICAgICAgICAgICAnd2hpY2ggZG9lcyBub3QgbWF0Y2ggcmVnZXggIiVzIicg
JQorICAgICAgICAgICAoTElTVF9URVNUU19GTEFHLCBmbGFnX2V4cHJlc3Npb24sICcgJy5qb2lu
KGFyZ3MpLCBvdXRwdXQsCisgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmUucGF0dGVybikp
KQorICAgIGVsc2U6CisgICAgICBzZWxmLmFzc2VydF8oCisgICAgICAgICAgbm90IEVYUEVDVEVE
X09VVFBVVF9OT19GSUxURVJfUkUubWF0Y2gob3V0cHV0KSwKKyAgICAgICAgICAoJ3doZW4gJXMg
aXMgJXMsIHRoZSBvdXRwdXQgb2YgIiVzIiBpcyAiJXMiJyUKKyAgICAgICAgICAgKExJU1RfVEVT
VFNfRkxBRywgZmxhZ19leHByZXNzaW9uLCAnICcuam9pbihhcmdzKSwgb3V0cHV0KSkpCisKKyAg
ZGVmIHRlc3REZWZhdWx0QmVoYXZpb3Ioc2VsZik6CisgICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9y
IG9mIHRoZSBkZWZhdWx0IG1vZGUuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3Zh
bHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0X3JlPU5vbmUs
CisgICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz1Ob25lKQorCisgIGRlZiB0ZXN0Rmxh
ZyhzZWxmKToKKyAgICAiIiJUZXN0cyB1c2luZyB0aGUgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcu
IiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPScwJywKKyAgICAgICAgICAg
ICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAg
ICBvdGhlcl9mbGFnPU5vbmUpCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZmxhZ192YWx1ZT0nMScs
CisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0X3JlPUVYUEVDVEVEX09VVFBV
VF9OT19GSUxURVJfUkUsCisgICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz1Ob25lKQor
CisgIGRlZiB0ZXN0T3ZlcnJpZGVOb25GaWx0ZXJGbGFncyhzZWxmKToKKyAgICAiIiJUZXN0cyB0
aGF0IC0tZ3Rlc3RfbGlzdF90ZXN0cyBvdmVycmlkZXMgdGhlIG5vbi1maWx0ZXIgZmxhZ3MuIiIi
CisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAg
ICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9RVhQRUNURURfT1VUUFVUX05PX0ZJTFRFUl9SRSwK
KyAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPSctLWd0ZXN0X2JyZWFrX29uX2ZhaWx1
cmUnKQorCisgIGRlZiB0ZXN0V2l0aEZpbHRlckZsYWdzKHNlbGYpOgorICAgICIiIlRlc3RzIHRo
YXQgLS1ndGVzdF9saXN0X3Rlc3RzIHRha2VzIGludG8gYWNjb3VudCB0aGUKKyAgICAtLWd0ZXN0
X2ZpbHRlciBmbGFnLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZmxhZ192YWx1ZT0nMScs
CisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0X3JlPUVYUEVDVEVEX09VVFBV
VF9GSUxURVJfRk9PX1JFLAorICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2ZsYWc9Jy0tZ3Rl
c3RfZmlsdGVyPUZvbyonKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0
X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdF8uY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjQ3M2M3ZDFhNDVmMWYxOTZiMTM3NDgzYjA1M2NhNTk4MDA3ZDI4OAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1saXN0LXRlc3Rz
LXVuaXR0ZXN0Xy5jYwpAQCAtMCwwICsxLDE1NiBAQAorLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2ds
ZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIFVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAt
LWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4KKy8vCisvLyBBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVz
dCB0byBsaXN0IGFsbCB0ZXN0cyB0aGF0IHdpbGwgcnVuCisvLyBzbyB0aGF0IHdoZW4gdXNpbmcg
YSBmaWx0ZXIsIGEgdXNlciB3aWxsIGtub3cgd2hhdAorLy8gdGVzdHMgdG8gbG9vayBmb3IuIFRo
ZSB0ZXN0cyB3aWxsIG5vdCBiZSBydW4gYWZ0ZXIgbGlzdGluZy4KKy8vCisvLyBUaGlzIHByb2dy
YW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRob24gdW5pdCB0ZXN0LgorLy8gRG9uJ3QgcnVu
IGl0IGRpcmVjdGx5LgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworLy8gU2V2ZXJhbCBk
aWZmZXJlbnQgdGVzdCBjYXNlcyBhbmQgdGVzdHMgdGhhdCB3aWxsIGJlIGxpc3RlZC4KK1RFU1Qo
Rm9vLCBCYXIxKSB7Cit9CisKK1RFU1QoRm9vLCBCYXIyKSB7Cit9CisKK1RFU1QoRm9vLCBESVNB
QkxFRF9CYXIzKSB7Cit9CisKK1RFU1QoQWJjLCBYeXopIHsKK30KKworVEVTVChBYmMsIERlZikg
eworfQorCitURVNUKEZvb0JhciwgQmF6KSB7Cit9CisKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7Cit9OworCitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKK30KKworVEVT
VF9GKEZvb1Rlc3QsIERJU0FCTEVEX1Rlc3QyKSB7Cit9CisKK1RFU1RfRihGb29UZXN0LCBUZXN0
MykgeworfQorCitURVNUKEZvb0RlYXRoVGVzdCwgVGVzdDEpIHsKK30KKworLy8gQSBncm91cCBv
ZiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorCitjbGFzcyBNeVR5cGUgeworIHB1YmxpYzoK
KyAgZXhwbGljaXQgTXlUeXBlKGNvbnN0IHN0ZDo6c3RyaW5nJiBhX3ZhbHVlKSA6IHZhbHVlXyhh
X3ZhbHVlKSB7fQorCisgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IHZhbHVlXzsgfQorCisgcHJpdmF0ZToKKyAgc3RkOjpzdHJpbmcgdmFsdWVfOworfTsKKworLy8g
VGVhY2hlcyBHb29nbGUgVGVzdCBob3cgdG8gcHJpbnQgYSBNeVR5cGUuCit2b2lkIFByaW50VG8o
Y29uc3QgTXlUeXBlJiB4LCBzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCB4LnZhbHVlKCk7
Cit9CisKK2NsYXNzIFZhbHVlUGFyYW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08TXlUeXBlPiB7Cit9OworCitURVNUX1AoVmFsdWVQYXJhbVRlc3QsIFRlc3RBKSB7Cit9CisK
K1RFU1RfUChWYWx1ZVBhcmFtVGVzdCwgVGVzdEIpIHsKK30KKworSU5TVEFOVElBVEVfVEVTVF9D
QVNFX1AoCisgICAgTXlJbnN0YW50aWF0aW9uLCBWYWx1ZVBhcmFtVGVzdCwKKyAgICB0ZXN0aW5n
OjpWYWx1ZXMoTXlUeXBlKCJvbmUgbGluZSIpLAorICAgICAgICAgICAgICAgICAgICBNeVR5cGUo
InR3b1xubGluZXMiKSwKKyAgICAgICAgICAgICAgICAgICAgTXlUeXBlKCJhIHZlcnlcbmxvb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vbmcgbGluZSIpKSk7ICAvLyBOT0xJTlQKKworLy8gQSBncm91cCBv
ZiB0eXBlZCB0ZXN0cy4KKworLy8gQSBkZWxpYmVyYXRlbHkgbG9uZyB0eXBlIG5hbWUgZm9yIHRl
c3RpbmcgdGhlIGxpbmUtdHJ1bmNhdGluZworLy8gYmVoYXZpb3Igd2hlbiBwcmludGluZyBhIHR5
cGUgcGFyYW1ldGVyLgorY2xhc3MgVmVyeUxvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vZ05hbWUgeyAg
Ly8gTk9MSU5UCit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVkVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBpbnQg
a1NpemU+CitjbGFzcyBNeUFycmF5IHsKK307CisKK3R5cGVkZWYgdGVzdGluZzo6VHlwZXM8VmVy
eUxvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vZ05hbWUsICAvLyBOT0xJTlQKKyAgICAgICAgICAgICAg
ICAgICAgICAgaW50KiwgTXlBcnJheTxib29sLCA0Mj4gPiBNeVR5cGVzOworCitUWVBFRF9URVNU
X0NBU0UoVHlwZWRUZXN0LCBNeVR5cGVzKTsKKworVFlQRURfVEVTVChUeXBlZFRlc3QsIFRlc3RB
KSB7Cit9CisKK1RZUEVEX1RFU1QoVHlwZWRUZXN0LCBUZXN0QikgeworfQorCisvLyBBIGdyb3Vw
IG9mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citj
bGFzcyBUeXBlUGFyYW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKworVFlQRURf
VEVTVF9DQVNFX1AoVHlwZVBhcmFtVGVzdCk7CisKK1RZUEVEX1RFU1RfUChUeXBlUGFyYW1UZXN0
LCBUZXN0QSkgeworfQorCitUWVBFRF9URVNUX1AoVHlwZVBhcmFtVGVzdCwgVGVzdEIpIHsKK30K
KworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtVGVzdCwgVGVzdEEsIFRlc3RC
KTsKKworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIFR5cGVQYXJhbVRlc3QsIE15
VHlwZXMpOworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgOjp0ZXN0aW5n
OjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMo
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVz
dC1saXN0ZW5lci10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LWxpc3RlbmVyLXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM1NTU5NzE1MWQwOWQ2YzMxNTY3MWY0
MmRiNjZjYzRiZDQ4NTBmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ29vZ2xldGVzdC1saXN0ZW5lci10ZXN0LmNjCkBAIC0wLDAgKzEsMzExIEBACisv
LyBDb3B5cmlnaHQgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmli
dXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gVGhlIEdvb2ds
ZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8KKy8v
IFRoaXMgZmlsZSB2ZXJpZmllcyBHb29nbGUgVGVzdCBldmVudCBsaXN0ZW5lcnMgcmVjZWl2ZSBl
dmVudHMgYXQgdGhlCisvLyByaWdodCB0aW1lcy4KKworI2luY2x1ZGUgPHZlY3Rvcj4KKworI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK3VzaW5nIDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVu
dmlyb25tZW50OwordXNpbmcgOjp0ZXN0aW5nOjpFbnZpcm9ubWVudDsKK3VzaW5nIDo6dGVzdGlu
Zzo6SW5pdEdvb2dsZVRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3Q7Cit1c2luZyA6OnRlc3Rp
bmc6OlRlc3RDYXNlOwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcjsKK3VzaW5n
IDo6dGVzdGluZzo6VGVzdEluZm87Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0Owor
dXNpbmcgOjp0ZXN0aW5nOjpVbml0VGVzdDsKKworLy8gVXNlZCBieSB0ZXN0cyB0byByZWdpc3Rl
ciB0aGVpciBldmVudHMuCitzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIGdfZXZlbnRzID0gTlVM
TDsKKworbmFtZXNwYWNlIHRlc3RpbmcgeworbmFtZXNwYWNlIGludGVybmFsIHsKKworY2xhc3Mg
RXZlbnRSZWNvcmRpbmdMaXN0ZW5lciA6IHB1YmxpYyBUZXN0RXZlbnRMaXN0ZW5lciB7CisgcHVi
bGljOgorICBleHBsaWNpdCBFdmVudFJlY29yZGluZ0xpc3RlbmVyKGNvbnN0IGNoYXIqIG5hbWUp
IDogbmFtZV8obmFtZSkge30KKworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB2b2lkIE9uVGVzdFBy
b2dyYW1TdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgeworICAgIGdfZXZlbnRz
LT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdFByb2dyYW1TdGFydCIpKTsKKyAg
fQorCisgIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25TdGFydChjb25zdCBVbml0VGVzdCYg
Lyp1bml0X3Rlc3QqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBp
dGVyYXRpb24pIHsKKyAgICBNZXNzYWdlIG1lc3NhZ2U7CisgICAgbWVzc2FnZSA8PCBHZXRGdWxs
TWV0aG9kTmFtZSgiT25UZXN0SXRlcmF0aW9uU3RhcnQiKQorICAgICAgICAgICAgPDwgIigiIDw8
IGl0ZXJhdGlvbiA8PCAiKSI7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhtZXNzYWdlLkdldFN0
cmluZygpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1NldFVwU3RhcnQo
Y29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNr
KEdldEZ1bGxNZXRob2ROYW1lKCJPbkVudmlyb25tZW50c1NldFVwU3RhcnQiKSk7CisgIH0KKwor
ICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNTZXRVcEVuZChjb25zdCBVbml0VGVzdCYgLyp1
bml0X3Rlc3QqLykgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUo
Ik9uRW52aXJvbm1lbnRzU2V0VXBFbmQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0
Q2FzZVN0YXJ0KGNvbnN0IFRlc3RDYXNlJiAvKnRlc3RfY2FzZSovKSB7CisgICAgZ19ldmVudHMt
PnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0Q2FzZVN0YXJ0IikpOworICB9CisK
KyAgdmlydHVhbCB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZvJiAvKnRlc3RfaW5mbyov
KSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0U3Rh
cnQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJlc3VsdChjb25zdCBUZXN0
UGFydFJlc3VsdCYgLyp0ZXN0X3BhcnRfcmVzdWx0Ki8pIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9i
YWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RQYXJ0UmVzdWx0IikpOworICB9CisKKyAgdmly
dHVhbCB2b2lkIE9uVGVzdEVuZChjb25zdCBUZXN0SW5mbyYgLyp0ZXN0X2luZm8qLykgeworICAg
IGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdEVuZCIpKTsKKyAg
fQorCisgIHZpcnR1YWwgdm9pZCBPblRlc3RDYXNlRW5kKGNvbnN0IFRlc3RDYXNlJiAvKnRlc3Rf
Y2FzZSovKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25U
ZXN0Q2FzZUVuZCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1RlYXJE
b3duU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKKyAgICBnX2V2ZW50cy0+
cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQi
KSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNUZWFyRG93bkVuZChjb25z
dCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0
RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiKSk7CisgIH0KKworICB2
aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVz
dCovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpdGVyYXRpb24pIHsK
KyAgICBNZXNzYWdlIG1lc3NhZ2U7CisgICAgbWVzc2FnZSA8PCBHZXRGdWxsTWV0aG9kTmFtZSgi
T25UZXN0SXRlcmF0aW9uRW5kIikKKyAgICAgICAgICAgIDw8ICIoIiAgPDwgaXRlcmF0aW9uIDw8
ICIpIjsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKG1lc3NhZ2UuR2V0U3RyaW5nKCkpOworICB9
CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdFByb2dyYW1FbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5p
dF90ZXN0Ki8pIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJP
blRlc3RQcm9ncmFtRW5kIikpOworICB9CisKKyBwcml2YXRlOgorICBzdGQ6OnN0cmluZyBHZXRG
dWxsTWV0aG9kTmFtZShjb25zdCBjaGFyKiBuYW1lKSB7CisgICAgcmV0dXJuIG5hbWVfICsgIi4i
ICsgbmFtZTsKKyAgfQorCisgIHN0ZDo6c3RyaW5nIG5hbWVfOworfTsKKworY2xhc3MgRW52aXJv
bm1lbnRJbnZvY2F0aW9uQ2F0Y2hlciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7CisgcHJvdGVjdGVk
OgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjaygiRW52
aXJvbm1lbnQ6OlNldFVwIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Cisg
ICAgZ19ldmVudHMtPnB1c2hfYmFjaygiRW52aXJvbm1lbnQ6OlRlYXJEb3duIik7CisgIH0KK307
CisKK2NsYXNzIExpc3RlbmVyVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHN0
YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlz
dGVuZXJUZXN0OjpTZXRVcFRlc3RDYXNlIik7CisgIH0KKworICBzdGF0aWMgdm9pZCBUZWFyRG93
blRlc3RDYXNlKCkgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVyVGVzdDo6VGVh
ckRvd25UZXN0Q2FzZSIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIGdf
ZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVyVGVzdDo6U2V0VXAiKTsKKyAgfQorCisgIHZpcnR1
YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKCJMaXN0ZW5lclRl
c3Q6OlRlYXJEb3duIik7CisgIH0KK307CisKK1RFU1RfRihMaXN0ZW5lclRlc3QsIERvZXNGb28p
IHsKKyAgLy8gVGVzdCBleGVjdXRpb24gb3JkZXIgd2l0aGluIGEgdGVzdCBjYXNlIGlzIG5vdCBn
dWFyYW50ZWVkIHNvIHdlIGFyZSBub3QKKyAgLy8gcmVjb3JkaW5nIHRoZSB0ZXN0IG5hbWUuCisg
IGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHkiKTsKKyAgU1VD
Q0VFRCgpOyAgLy8gVHJpZ2dlcnMgT25UZXN0UGFydFJlc3VsdC4KK30KKworVEVTVF9GKExpc3Rl
bmVyVGVzdCwgRG9lc0JhcikgeworICBnX2V2ZW50cy0+cHVzaF9iYWNrKCJMaXN0ZW5lclRlc3Q6
OiogVGVzdCBCb2R5Iik7CisgIFNVQ0NFRUQoKTsgIC8vIFRyaWdnZXJzIE9uVGVzdFBhcnRSZXN1
bHQuCit9CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorCit9ICAvLyBuYW1lc3BhY2UgdGVz
dGluZworCit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpFbnZpcm9ubWVudEludm9jYXRpb25D
YXRjaGVyOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RXZlbnRSZWNvcmRpbmdMaXN0ZW5l
cjsKKwordm9pZCBWZXJpZnlSZXN1bHRzKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYg
ZGF0YSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb25zdCogZXhwZWN0ZWRfZGF0
YSwKKyAgICAgICAgICAgICAgICAgICBzaXplX3QgZXhwZWN0ZWRfZGF0YV9zaXplKSB7CisgIGNv
bnN0IHNpemVfdCBhY3R1YWxfc2l6ZSA9IGRhdGEuc2l6ZSgpOworICAvLyBJZiB0aGUgZm9sbG93
aW5nIGFzc2VydGlvbiBmYWlscywgYSBuZXcgZW50cnkgd2lsbCBiZSBhcHBlbmRlZCB0bworICAv
LyBkYXRhLiAgSGVuY2Ugd2Ugc2F2ZSBkYXRhLnNpemUoKSBmaXJzdC4KKyAgRVhQRUNUX0VRKGV4
cGVjdGVkX2RhdGFfc2l6ZSwgYWN0dWFsX3NpemUpOworCisgIC8vIENvbXBhcmVzIHRoZSBjb21t
b24gcHJlZml4LgorICBjb25zdCBzaXplX3Qgc2hvcnRlcl9zaXplID0gZXhwZWN0ZWRfZGF0YV9z
aXplIDw9IGFjdHVhbF9zaXplID8KKyAgICAgIGV4cGVjdGVkX2RhdGFfc2l6ZSA6IGFjdHVhbF9z
aXplOworICBzaXplX3QgaSA9IDA7CisgIGZvciAoOyBpIDwgc2hvcnRlcl9zaXplOyArK2kpIHsK
KyAgICBBU1NFUlRfU1RSRVEoZXhwZWN0ZWRfZGF0YVtpXSwgZGF0YVtpXS5jX3N0cigpKQorICAg
ICAgICA8PCAiYXQgcG9zaXRpb24gIiA8PCBpOworICB9CisKKyAgLy8gUHJpbnRzIGV4dHJhIGVs
ZW1lbnRzIGluIHRoZSBhY3R1YWwgZGF0YS4KKyAgZm9yICg7IGkgPCBhY3R1YWxfc2l6ZTsgKytp
KSB7CisgICAgcHJpbnRmKCIgIEFjdHVhbCBldmVudCAjJWx1OiAlc1xuIiwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaSksIGRhdGFbaV0uY19zdHIoKSk7CisgIH0KK30KKwor
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiBldmVudHM7CisgIGdfZXZlbnRzID0gJmV2ZW50czsKKyAgSW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOworCisgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKS5BcHBl
bmQoCisgICAgICBuZXcgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lcigiMXN0IikpOworICBVbml0VGVz
dDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCkuQXBwZW5kKAorICAgICAgbmV3IEV2ZW50UmVj
b3JkaW5nTGlzdGVuZXIoIjJuZCIpKTsKKworICBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3
IEVudmlyb25tZW50SW52b2NhdGlvbkNhdGNoZXIpOworCisgIEdURVNUX0NIRUNLXyhldmVudHMu
c2l6ZSgpID09IDApCisgICAgICA8PCAiQWRkR2xvYmFsVGVzdEVudmlyb25tZW50IHNob3VsZCBu
b3QgZ2VuZXJhdGUgYW55IGV2ZW50cyBpdHNlbGYuIjsKKworICA6OnRlc3Rpbmc6OkdURVNUX0ZM
QUcocmVwZWF0KSA9IDI7CisgIGludCByZXRfdmFsID0gUlVOX0FMTF9URVNUUygpOworCisgIGNv
bnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkX2V2ZW50c1tdID0geworICAgICIxc3QuT25UZXN0UHJv
Z3JhbVN0YXJ0IiwKKyAgICAiMm5kLk9uVGVzdFByb2dyYW1TdGFydCIsCisgICAgIjFzdC5PblRl
c3RJdGVyYXRpb25TdGFydCgwKSIsCisgICAgIjJuZC5PblRlc3RJdGVyYXRpb25TdGFydCgwKSIs
CisgICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVwU3RhcnQiLAorICAgICIybmQuT25FbnZpcm9u
bWVudHNTZXRVcFN0YXJ0IiwKKyAgICAiRW52aXJvbm1lbnQ6OlNldFVwIiwKKyAgICAiMm5kLk9u
RW52aXJvbm1lbnRzU2V0VXBFbmQiLAorICAgICIxc3QuT25FbnZpcm9ubWVudHNTZXRVcEVuZCIs
CisgICAgIjFzdC5PblRlc3RDYXNlU3RhcnQiLAorICAgICIybmQuT25UZXN0Q2FzZVN0YXJ0IiwK
KyAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcFRlc3RDYXNlIiwKKyAgICAiMXN0Lk9uVGVzdFN0YXJ0
IiwKKyAgICAiMm5kLk9uVGVzdFN0YXJ0IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcCIsCisg
ICAgIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHkiLAorICAgICIxc3QuT25UZXN0UGFydFJlc3Vs
dCIsCisgICAgIjJuZC5PblRlc3RQYXJ0UmVzdWx0IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpUZWFy
RG93biIsCisgICAgIjJuZC5PblRlc3RFbmQiLAorICAgICIxc3QuT25UZXN0RW5kIiwKKyAgICAi
MXN0Lk9uVGVzdFN0YXJ0IiwKKyAgICAiMm5kLk9uVGVzdFN0YXJ0IiwKKyAgICAiTGlzdGVuZXJU
ZXN0OjpTZXRVcCIsCisgICAgIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHkiLAorICAgICIxc3Qu
T25UZXN0UGFydFJlc3VsdCIsCisgICAgIjJuZC5PblRlc3RQYXJ0UmVzdWx0IiwKKyAgICAiTGlz
dGVuZXJUZXN0OjpUZWFyRG93biIsCisgICAgIjJuZC5PblRlc3RFbmQiLAorICAgICIxc3QuT25U
ZXN0RW5kIiwKKyAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93blRlc3RDYXNlIiwKKyAgICAiMm5k
Lk9uVGVzdENhc2VFbmQiLAorICAgICIxc3QuT25UZXN0Q2FzZUVuZCIsCisgICAgIjFzdC5PbkVu
dmlyb25tZW50c1RlYXJEb3duU3RhcnQiLAorICAgICIybmQuT25FbnZpcm9ubWVudHNUZWFyRG93
blN0YXJ0IiwKKyAgICAiRW52aXJvbm1lbnQ6OlRlYXJEb3duIiwKKyAgICAiMm5kLk9uRW52aXJv
bm1lbnRzVGVhckRvd25FbmQiLAorICAgICIxc3QuT25FbnZpcm9ubWVudHNUZWFyRG93bkVuZCIs
CisgICAgIjJuZC5PblRlc3RJdGVyYXRpb25FbmQoMCkiLAorICAgICIxc3QuT25UZXN0SXRlcmF0
aW9uRW5kKDApIiwKKyAgICAiMXN0Lk9uVGVzdEl0ZXJhdGlvblN0YXJ0KDEpIiwKKyAgICAiMm5k
Lk9uVGVzdEl0ZXJhdGlvblN0YXJ0KDEpIiwKKyAgICAiMXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBT
dGFydCIsCisgICAgIjJuZC5PbkVudmlyb25tZW50c1NldFVwU3RhcnQiLAorICAgICJFbnZpcm9u
bWVudDo6U2V0VXAiLAorICAgICIybmQuT25FbnZpcm9ubWVudHNTZXRVcEVuZCIsCisgICAgIjFz
dC5PbkVudmlyb25tZW50c1NldFVwRW5kIiwKKyAgICAiMXN0Lk9uVGVzdENhc2VTdGFydCIsCisg
ICAgIjJuZC5PblRlc3RDYXNlU3RhcnQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwVGVzdENh
c2UiLAorICAgICIxc3QuT25UZXN0U3RhcnQiLAorICAgICIybmQuT25UZXN0U3RhcnQiLAorICAg
ICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwKKyAgICAiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIs
CisgICAgIjFzdC5PblRlc3RQYXJ0UmVzdWx0IiwKKyAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQi
LAorICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duIiwKKyAgICAiMm5kLk9uVGVzdEVuZCIsCisg
ICAgIjFzdC5PblRlc3RFbmQiLAorICAgICIxc3QuT25UZXN0U3RhcnQiLAorICAgICIybmQuT25U
ZXN0U3RhcnQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwKKyAgICAiTGlzdGVuZXJUZXN0
OjoqIFRlc3QgQm9keSIsCisgICAgIjFzdC5PblRlc3RQYXJ0UmVzdWx0IiwKKyAgICAiMm5kLk9u
VGVzdFBhcnRSZXN1bHQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duIiwKKyAgICAiMm5k
Lk9uVGVzdEVuZCIsCisgICAgIjFzdC5PblRlc3RFbmQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlRl
YXJEb3duVGVzdENhc2UiLAorICAgICIybmQuT25UZXN0Q2FzZUVuZCIsCisgICAgIjFzdC5PblRl
c3RDYXNlRW5kIiwKKyAgICAiMXN0Lk9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydCIsCisgICAg
IjJuZC5PbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiLAorICAgICJFbnZpcm9ubWVudDo6VGVh
ckRvd24iLAorICAgICIybmQuT25FbnZpcm9ubWVudHNUZWFyRG93bkVuZCIsCisgICAgIjFzdC5P
bkVudmlyb25tZW50c1RlYXJEb3duRW5kIiwKKyAgICAiMm5kLk9uVGVzdEl0ZXJhdGlvbkVuZCgx
KSIsCisgICAgIjFzdC5PblRlc3RJdGVyYXRpb25FbmQoMSkiLAorICAgICIybmQuT25UZXN0UHJv
Z3JhbUVuZCIsCisgICAgIjFzdC5PblRlc3RQcm9ncmFtRW5kIgorICB9OworICBWZXJpZnlSZXN1
bHRzKGV2ZW50cywKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9ldmVudHMsCisgICAgICAgICAg
ICAgICAgc2l6ZW9mKGV4cGVjdGVkX2V2ZW50cykvc2l6ZW9mKGV4cGVjdGVkX2V2ZW50c1swXSkp
OworCisgIC8vIFdlIG5lZWQgdG8gY2hlY2sgbWFudWFsbHkgZm9yIGFkIGhvYyB0ZXN0IGZhaWx1
cmVzIHRoYXQgaGFwcGVuIGFmdGVyCisgIC8vIFJVTl9BTExfVEVTVFMgZmluaXNoZXMuCisgIGlm
IChVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+RmFpbGVkKCkpCisgICAgcmV0X3ZhbCA9IDE7CisK
KyAgcmV0dXJuIHJldF92YWw7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2dvb2dsZXRlc3QtbWVzc2FnZS10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LW1lc3NhZ2UtdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjQ0NTg1M2U0
MzNkM2MxNDM0NTI1NzM5MWE2Yjk4OGE5ZDM4MGVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW1lc3NhZ2UtdGVzdC5jYwpAQCAtMCww
ICsxLDE1OCBAQAorLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0Ogor
Ly8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisv
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisvLworLy8gVGVzdHMgZm9yIHRoZSBNZXNzYWdlIGNsYXNzLgorCisjaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3QtbWVzc2FnZS5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNl
IHsKKwordXNpbmcgOjp0ZXN0aW5nOjpNZXNzYWdlOworCisvLyBUZXN0cyB0aGUgdGVzdGluZzo6
TWVzc2FnZSBjbGFzcworCisvLyBUZXN0cyB0aGUgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KK1RFU1Qo
TWVzc2FnZVRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvcikgeworICBjb25zdCBNZXNzYWdlIG1zZzsK
KyAgRVhQRUNUX0VRKCIiLCBtc2cuR2V0U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyB0aGUgY29w
eSBjb25zdHJ1Y3Rvci4KK1RFU1QoTWVzc2FnZVRlc3QsIENvcHlDb25zdHJ1Y3RvcikgeworICBj
b25zdCBNZXNzYWdlIG1zZzEoIkhlbGxvIik7CisgIGNvbnN0IE1lc3NhZ2UgbXNnMihtc2cxKTsK
KyAgRVhQRUNUX0VRKCJIZWxsbyIsIG1zZzIuR2V0U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyBj
b25zdHJ1Y3RpbmcgYSBNZXNzYWdlIGZyb20gYSBDLXN0cmluZy4KK1RFU1QoTWVzc2FnZVRlc3Qs
IENvbnN0cnVjdHNGcm9tQ1N0cmluZykgeworICBNZXNzYWdlIG1zZygiSGVsbG8iKTsKKyAgRVhQ
RUNUX0VRKCJIZWxsbyIsIG1zZy5HZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRlc3RzIHN0cmVhbWlu
ZyBhIGZsb2F0LgorVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc0Zsb2F0KSB7CisgIGNvbnN0IHN0
ZDo6c3RyaW5nIHMgPSAoTWVzc2FnZSgpIDw8IDEuMjM0NTZGIDw8ICIgIiA8PCAyLjM0NTY3Riku
R2V0U3RyaW5nKCk7CisgIC8vIEJvdGggbnVtYmVycyBzaG91bGQgYmUgcHJpbnRlZCB3aXRoIGVu
b3VnaCBwcmVjaXNpb24uCisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJp
bmcsICIxLjIzNDU2MCIsIHMuY19zdHIoKSk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGlu
Zzo6SXNTdWJzdHJpbmcsICIgMi4zNDU2NjkiLCBzLmNfc3RyKCkpOworfQorCisvLyBUZXN0cyBz
dHJlYW1pbmcgYSBkb3VibGUuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zRG91YmxlKSB7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIHMgPSAoTWVzc2FnZSgpIDw8IDEyNjA1NzA4ODAuNDU1NTQ5NyA8
PCAiICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAxMjYwNTcyMjY1LjE5
NTQ1MzQpLkdldFN0cmluZygpOworICAvLyBCb3RoIG51bWJlcnMgc2hvdWxkIGJlIHByaW50ZWQg
d2l0aCBlbm91Z2ggcHJlY2lzaW9uLgorICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6Oklz
U3Vic3RyaW5nLCAiMTI2MDU3MDg4MC40NSIsIHMuY19zdHIoKSk7CisgIEVYUEVDVF9QUkVEX0ZP
Uk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIgMTI2MDU3MjI2NS4xOSIsIHMuY19zdHIoKSk7
Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIG5vbi1jaGFyIHBvaW50ZXIuCitURVNUKE1lc3Nh
Z2VUZXN0LCBTdHJlYW1zUG9pbnRlcikgeworICBpbnQgbiA9IDA7CisgIGludCogcCA9ICZuOwor
ICBFWFBFQ1RfTkUoIihudWxsKSIsIChNZXNzYWdlKCkgPDwgcCkuR2V0U3RyaW5nKCkpOworfQor
CisvLyBUZXN0cyBzdHJlYW1pbmcgYSBOVUxMIG5vbi1jaGFyIHBvaW50ZXIuCitURVNUKE1lc3Nh
Z2VUZXN0LCBTdHJlYW1zTnVsbFBvaW50ZXIpIHsKKyAgaW50KiBwID0gTlVMTDsKKyAgRVhQRUNU
X0VRKCIobnVsbCkiLCAoTWVzc2FnZSgpIDw8IHApLkdldFN0cmluZygpKTsKK30KKworLy8gVGVz
dHMgc3RyZWFtaW5nIGEgQyBzdHJpbmcuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zQ1N0cmlu
ZykgeworICBFWFBFQ1RfRVEoIkZvbyIsIChNZXNzYWdlKCkgPDwgIkZvbyIpLkdldFN0cmluZygp
KTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGEgTlVMTCBDIHN0cmluZy4KK1RFU1QoTWVzc2Fn
ZVRlc3QsIFN0cmVhbXNOdWxsQ1N0cmluZykgeworICBjaGFyKiBwID0gTlVMTDsKKyAgRVhQRUNU
X0VRKCIobnVsbCkiLCAoTWVzc2FnZSgpIDw8IHApLkdldFN0cmluZygpKTsKK30KKworLy8gVGVz
dHMgc3RyZWFtaW5nIHN0ZDo6c3RyaW5nLgorVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc1N0cmlu
ZykgeworICBjb25zdCA6OnN0ZDo6c3RyaW5nIHN0cigiSGVsbG8iKTsKKyAgRVhQRUNUX0VRKCJI
ZWxsbyIsIChNZXNzYWdlKCkgPDwgc3RyKS5HZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgd2UgY2FuIG91dHB1dCBzdHJpbmdzIGNvbnRhaW5pbmcgZW1iZWRkZWQgTlVMcy4KK1RFU1Qo
TWVzc2FnZVRlc3QsIFN0cmVhbXNTdHJpbmdXaXRoRW1iZWRkZWROVUwpIHsKKyAgY29uc3QgY2hh
ciBjaGFyX2FycmF5X3dpdGhfbnVsW10gPQorICAgICAgIkhlcmUncyBhIE5VTFwwIGFuZCBzb21l
IG1vcmUgc3RyaW5nIjsKKyAgY29uc3QgOjpzdGQ6OnN0cmluZyBzdHJpbmdfd2l0aF9udWwoY2hh
cl9hcnJheV93aXRoX251bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZW9mKGNoYXJfYXJyYXlfd2l0aF9udWwpIC0gMSk7CisgIEVYUEVDVF9FUSgiSGVyZSdzIGEg
TlVMXFwwIGFuZCBzb21lIG1vcmUgc3RyaW5nIiwKKyAgICAgICAgICAgIChNZXNzYWdlKCkgPDwg
c3RyaW5nX3dpdGhfbnVsKS5HZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBh
IE5VTCBjaGFyLgorVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc05VTENoYXIpIHsKKyAgRVhQRUNU
X0VRKCJcXDAiLCAoTWVzc2FnZSgpIDw8ICdcMCcpLkdldFN0cmluZygpKTsKK30KKworLy8gVGVz
dHMgc3RyZWFtaW5nIGludC4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNJbnQpIHsKKyAgRVhQ
RUNUX0VRKCIxMjMiLCAoTWVzc2FnZSgpIDw8IDEyMykuR2V0U3RyaW5nKCkpOworfQorCisvLyBU
ZXN0cyB0aGF0IGJhc2ljIElPIG1hbmlwdWxhdG9ycyAoZW5kbCwgZW5kcywgYW5kIGZsdXNoKSBj
YW4gYmUKKy8vIHN0cmVhbWVkIHRvIE1lc3NhZ2UuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1z
QmFzaWNJb01hbmlwKSB7CisgIEVYUEVDVF9FUSgiTGluZSAxLlxuQSBOVUwgY2hhciBcXDAgaW4g
bGluZSAyLiIsCisgICAgICAgICAgICAgICAoTWVzc2FnZSgpIDw8ICJMaW5lIDEuIiA8PCBzdGQ6
OmVuZGwKKyAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiQSBOVUwgY2hhciAiIDw8IHN0ZDo6
ZW5kcyA8PCBzdGQ6OmZsdXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBpbiBsaW5l
IDIuIikuR2V0U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyBNZXNzYWdlOjpHZXRTdHJpbmcoKQor
VEVTVChNZXNzYWdlVGVzdCwgR2V0U3RyaW5nKSB7CisgIE1lc3NhZ2UgbXNnOworICBtc2cgPDwg
MSA8PCAiIGxhbWIiOworICBFWFBFQ1RfRVEoIjEgbGFtYiIsIG1zZy5HZXRTdHJpbmcoKSk7Cit9
CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIE1lc3NhZ2Ugb2JqZWN0IHRvIGFuIG9zdHJlYW0uCitU
RVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zVG9PU3RyZWFtKSB7CisgIE1lc3NhZ2UgbXNnKCJIZWxs
byIpOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICBzcyA8PCBtc2c7CisgIEVYUEVDVF9F
USgiSGVsbG8iLCB0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nU3RyZWFtVG9TdHJpbmcoJnNzKSk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBNZXNzYWdlIG9iamVjdCBkb2Vzbid0IHRha2UgdXAgdG9v
IG11Y2ggc3RhY2sgc3BhY2UuCitURVNUKE1lc3NhZ2VUZXN0LCBEb2VzTm90VGFrZVVwTXVjaFN0
YWNrU3BhY2UpIHsKKyAgRVhQRUNUX0xFKHNpemVvZihNZXNzYWdlKSwgMTZVKTsKK30KKworfSAg
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3Qtb3B0aW9ucy10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
b29nbGV0ZXN0LW9wdGlvbnMtdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGQ0ZWJhM2JkMzEwOTU5NTBh
OGQ5OGNmM2RhZjZmMzRkNjQ5NjlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW9wdGlvbnMtdGVzdC5jYwpAQCAtMCwwICsxLDIxMSBA
QAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisv
LyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEdv
b2dsZSBUZXN0IFVuaXRUZXN0T3B0aW9ucyB0ZXN0cworLy8KKy8vIFRoaXMgZmlsZSB0ZXN0cyBj
bGFzc2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5IGJ5CisvLyBHb29nbGUgVGVzdC4g
IFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgorLy8KKy8vIFRoaXMg
ZmlsZSBpcyAjaW5jbHVkZWQgZnJvbSBndGVzdC5jYywgdG8gYXZvaWQgY2hhbmdpbmcgYnVpbGQg
b3IKKy8vIG1ha2UtZmlsZXMgb24gV2luZG93cyBhbmQgb3RoZXIgcGxhdGZvcm1zLiBEbyBub3Qg
I2luY2x1ZGUgdGhpcyBmaWxlCisvLyBhbnl3aGVyZSBlbHNlIQorCisjaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3QuaCIKKworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGluY2x1ZGUgPHdpbmRv
d3MuaD4KKyNlbGlmIEdURVNUX09TX1dJTkRPV1MKKyMgaW5jbHVkZSA8ZGlyZWN0Lmg+CisjZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50
ZXJuYWwtaW5sLmgiCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFjZSBpbnRlcm5hbCB7
CituYW1lc3BhY2UgeworCisvLyBUdXJucyB0aGUgZ2l2ZW4gcmVsYXRpdmUgcGF0aCBpbnRvIGFu
IGFic29sdXRlIHBhdGguCitGaWxlUGF0aCBHZXRBYnNvbHV0ZVBhdGhPZihjb25zdCBGaWxlUGF0
aCYgcmVsYXRpdmVfcGF0aCkgeworICByZXR1cm4gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQ
YXRoOjpHZXRDdXJyZW50RGlyKCksIHJlbGF0aXZlX3BhdGgpOworfQorCisvLyBUZXN0aW5nIFVu
aXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0L0dldE91dHB1dEZpbGUuCisKK1RFU1QoWG1s
T3V0cHV0VGVzdCwgR2V0T3V0cHV0Rm9ybWF0RGVmYXVsdCkgeworICBHVEVTVF9GTEFHKG91dHB1
dCkgPSAiIjsKKyAgRVhQRUNUX1NUUkVRKCIiLCBVbml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZv
cm1hdCgpLmNfc3RyKCkpOworfQorCitURVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZvcm1h
dCkgeworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOmZpbGVuYW1lIjsKKyAgRVhQRUNUX1NU
UkVRKCJ4bWwiLCBVbml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdCgpLmNfc3RyKCkpOwor
fQorCitURVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZpbGVEZWZhdWx0KSB7CisgIEdURVNU
X0ZMQUcob3V0cHV0KSA9ICIiOworICBFWFBFQ1RfRVEoR2V0QWJzb2x1dGVQYXRoT2YoRmlsZVBh
dGgoInRlc3RfZGV0YWlsLnhtbCIpKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0
aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOworfQorCitURVNUKFhtbE91dHB1
dFRlc3QsIEdldE91dHB1dEZpbGVTaW5nbGVGaWxlKSB7CisgIEdURVNUX0ZMQUcob3V0cHV0KSA9
ICJ4bWw6ZmlsZW5hbWUuYWJjIjsKKyAgRVhQRUNUX0VRKEdldEFic29sdXRlUGF0aE9mKEZpbGVQ
YXRoKCJmaWxlbmFtZS5hYmMiKSkuc3RyaW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9wdGlv
bnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKK30KKworVEVTVChYbWxPdXRwdXRU
ZXN0LCBHZXRPdXRwdXRGaWxlRnJvbURpcmVjdG9yeVBhdGgpIHsKKyAgR1RFU1RfRkxBRyhvdXRw
dXQpID0gInhtbDpwYXRoIiBHVEVTVF9QQVRIX1NFUF87CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGV4
cGVjdGVkX291dHB1dF9maWxlID0KKyAgICAgIEdldEFic29sdXRlUGF0aE9mKAorICAgICAgICAg
IEZpbGVQYXRoKHN0ZDo6c3RyaW5nKCJwYXRoIikgKyBHVEVTVF9QQVRIX1NFUF8gKworICAgICAg
ICAgICAgICAgICAgIEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLnN0cmluZygpICsgIi54bWwi
KSkuc3RyaW5nKCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZmlsZSA9CisgICAgICBV
bml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpOworI2lmIEdURVNU
X09TX1dJTkRPV1MKKyAgRVhQRUNUX1NUUkNBU0VFUShleHBlY3RlZF9vdXRwdXRfZmlsZS5jX3N0
cigpLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKKyNlbHNlCisgIEVYUEVDVF9FUShleHBlY3RlZF9v
dXRwdXRfZmlsZSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7CisjZW5kaWYKK30KKworVEVTVChPdXRw
dXRGaWxlSGVscGVyc1Rlc3QsIEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSkgeworICBjb25zdCBz
dGQ6OnN0cmluZyBleGVfc3RyID0gR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCk7
CisjaWYgR1RFU1RfT1NfV0lORE9XUworICBjb25zdCBib29sIHN1Y2Nlc3MgPQorICAgICAgX3N0
cmNtcGkoImdvb2dsZXRlc3Qtb3B0aW9ucy10ZXN0IiwgZXhlX3N0ci5jX3N0cigpKSA9PSAwIHx8
CisgICAgICBfc3RyY21waSgiZ3Rlc3Qtb3B0aW9ucy1leF90ZXN0IiwgZXhlX3N0ci5jX3N0cigp
KSA9PSAwIHx8CisgICAgICBfc3RyY21waSgiZ3Rlc3RfYWxsX3Rlc3QiLCBleGVfc3RyLmNfc3Ry
KCkpID09IDAgfHwKKyAgICAgIF9zdHJjbXBpKCJndGVzdF9kbGxfdGVzdCIsIGV4ZV9zdHIuY19z
dHIoKSkgPT0gMDsKKyNlbGlmIEdURVNUX09TX0ZVQ0hTSUEKKyAgY29uc3QgYm9vbCBzdWNjZXNz
ID0gZXhlX3N0ciA9PSAiYXBwIjsKKyNlbHNlCisgIC8vIEZJWE1FOiByZW1vdmUgdGhlIGhhcmQt
Y29kZWQgImx0LSIgcHJlZml4IHdoZW4gbGlidG9vbCByZXBsYWNlbWVudCBpcyByZWFkeQorICBj
b25zdCBib29sIHN1Y2Nlc3MgPQorICAgICAgZXhlX3N0ciA9PSAiZ29vZ2xldGVzdC1vcHRpb25z
LXRlc3QiIHx8CisgICAgICBleGVfc3RyID09ICJndGVzdF9hbGxfdGVzdCIgfHwKKyAgICAgIGV4
ZV9zdHIgPT0gImx0LWd0ZXN0X2FsbF90ZXN0IiB8fAorICAgICAgZXhlX3N0ciA9PSAiZ3Rlc3Rf
ZGxsX3Rlc3QiOworI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisgIGlmICghc3VjY2VzcykK
KyAgICBGQUlMKCkgPDwgIkdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpIHJldHVybnMgIiA8PCBl
eGVfc3RyOworfQorCisjaWYgIUdURVNUX09TX0ZVQ0hTSUEKKworY2xhc3MgWG1sT3V0cHV0Q2hh
bmdlRGlyVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9pZCBT
ZXRVcCgpIHsKKyAgICBvcmlnaW5hbF93b3JraW5nX2Rpcl8gPSBGaWxlUGF0aDo6R2V0Q3VycmVu
dERpcigpOworICAgIHBvc2l4OjpDaERpcigiLi4iKTsKKyAgICAvLyBUaGlzIHdpbGwgbWFrZSB0
aGUgdGVzdCBmYWlsIGlmIHJ1biBmcm9tIHRoZSByb290IGRpcmVjdG9yeS4KKyAgICBFWFBFQ1Rf
TkUob3JpZ2luYWxfd29ya2luZ19kaXJfLnN0cmluZygpLAorICAgICAgICAgICAgICBGaWxlUGF0
aDo6R2V0Q3VycmVudERpcigpLnN0cmluZygpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpIHsKKyAgICBwb3NpeDo6Q2hEaXIob3JpZ2luYWxfd29ya2luZ19kaXJfLnN0cmluZygp
LmNfc3RyKCkpOworICB9CisKKyAgRmlsZVBhdGggb3JpZ2luYWxfd29ya2luZ19kaXJfOworfTsK
KworVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5n
RGlyV2l0aERlZmF1bHQpIHsKKyAgR1RFU1RfRkxBRyhvdXRwdXQpID0gIiI7CisgIEVYUEVDVF9F
UShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuc3Ry
aW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0
cHV0RmlsZSgpKTsKK30KKworVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZl
T3JpZ2luYWxXb3JraW5nRGlyV2l0aERlZmF1bHRYTUwpIHsKKyAgR1RFU1RfRkxBRyhvdXRwdXQp
ID0gInhtbCI7CisgIEVYUEVDVF9FUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29y
a2luZ19kaXJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJ0
ZXN0X2RldGFpbC54bWwiKSkuc3RyaW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6
OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKK30KKworVEVTVF9GKFhtbE91dHB1dENo
YW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aFJlbGF0aXZlRmlsZSkg
eworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOmZpbGVuYW1lLmFiYyI7CisgIEVYUEVDVF9F
UShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmaWxlbmFtZS5hYmMiKSkuc3RyaW5n
KCksCisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0
RmlsZSgpKTsKK30KKworVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3Jp
Z2luYWxXb3JraW5nRGlyV2l0aFJlbGF0aXZlUGF0aCkgeworICBHVEVTVF9GTEFHKG91dHB1dCkg
PSAieG1sOnBhdGgiIEdURVNUX1BBVEhfU0VQXzsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZXhwZWN0
ZWRfb3V0cHV0X2ZpbGUgPQorICAgICAgRmlsZVBhdGg6OkNvbmNhdFBhdGhzKAorICAgICAgICAg
IG9yaWdpbmFsX3dvcmtpbmdfZGlyXywKKyAgICAgICAgICBGaWxlUGF0aChzdGQ6OnN0cmluZygi
cGF0aCIpICsgR1RFU1RfUEFUSF9TRVBfICsKKyAgICAgICAgICAgICAgICAgICBHZXRDdXJyZW50
RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmcoKSArICIueG1sIikpLnN0cmluZygpOworICBjb25zdCBz
dGQ6OnN0cmluZyYgb3V0cHV0X2ZpbGUgPQorICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNv
bHV0ZVBhdGhUb091dHB1dEZpbGUoKTsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIEVYUEVDVF9T
VFJDQVNFRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUuY19zdHIoKSwgb3V0cHV0X2ZpbGUuY19zdHIo
KSk7CisjZWxzZQorICBFWFBFQ1RfRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUsIG91dHB1dF9maWxl
LmNfc3RyKCkpOworI2VuZGlmCit9CisKK1RFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQ
cmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhBYnNvbHV0ZUZpbGUpIHsKKyNpZiBHVEVTVF9P
U19XSU5ET1dTCisgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6YzpcXHRtcFxcZmlsZW5hbWUu
YWJjIjsKKyAgRVhQRUNUX0VRKEZpbGVQYXRoKCJjOlxcdG1wXFxmaWxlbmFtZS5hYmMiKS5zdHJp
bmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRw
dXRGaWxlKCkpOworI2Vsc2UKKyAgR1RFU1RfRkxBRyhvdXRwdXQpID0ieG1sOi90bXAvZmlsZW5h
bWUuYWJjIjsKKyAgRVhQRUNUX0VRKEZpbGVQYXRoKCIvdG1wL2ZpbGVuYW1lLmFiYyIpLnN0cmlu
ZygpLAorICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1
dEZpbGUoKSk7CisjZW5kaWYKK30KKworVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFBy
ZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aEFic29sdXRlUGF0aCkgeworI2lmIEdURVNUX09T
X1dJTkRPV1MKKyAgY29uc3Qgc3RkOjpzdHJpbmcgcGF0aCA9ICJjOlxcdG1wXFwiOworI2Vsc2UK
KyAgY29uc3Qgc3RkOjpzdHJpbmcgcGF0aCA9ICIvdG1wLyI7CisjZW5kaWYKKworICBHVEVTVF9G
TEFHKG91dHB1dCkgPSAieG1sOiIgKyBwYXRoOworICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3Rl
ZF9vdXRwdXRfZmlsZSA9CisgICAgICBwYXRoICsgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCku
c3RyaW5nKCkgKyAiLnhtbCI7CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZmlsZSA9Cisg
ICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpOworCisj
aWYgR1RFU1RfT1NfV0lORE9XUworICBFWFBFQ1RfU1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9m
aWxlLmNfc3RyKCksIG91dHB1dF9maWxlLmNfc3RyKCkpOworI2Vsc2UKKyAgRVhQRUNUX0VRKGV4
cGVjdGVkX291dHB1dF9maWxlLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKKyNlbmRpZgorfQorCisj
ZW5kaWYgIC8vICFHVEVTVF9PU19GVUNIU0lBCisKK30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFt
ZXNwYWNlIGludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0LWdvbGRlbi1s
aW4udHh0IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10
ZXN0LWdvbGRlbi1saW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3MTFjZGM2OGFlNTM4Y2NlOWUzOTg0YmNl
MWI3YWI2NWFhNjJhNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3QtZ29sZGVuLWxpbi50eHQKQEAgLTAsMCArMSwx
MDQ3IEBACitUaGUgbm9uLXRlc3QgcGFydCBvZiB0aGUgY29kZSBpcyBleHBlY3RlZCB0byBoYXZl
IDIgZmFpbHVyZXMuCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK1Zh
bHVlIG9mOiBmYWxzZQorICBBY3R1YWw6IGZhbHNlCitFeHBlY3RlZDogdHJ1ZQorU3RhY2sgdHJh
Y2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitF
eHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDIKKyAgMworU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCisbWzA7MzJtWz09PT09PT09PT1dIBtbbVJ1bm5pbmcgNzYgdGVzdHMgZnJv
bSAzNCB0ZXN0IGNhc2VzLgorG1swOzMybVstLS0tLS0tLS0tXSAbW21HbG9iYWwgdGVzdCBlbnZp
cm9ubWVudCBzZXQtdXAuCitGb29FbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuCitCYXJFbnZp
cm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBm
cm9tIEFEZWF0aFRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttQURlYXRoVGVzdC5TaG91bGRS
dW5GaXJzdAorG1swOzMybVsgICAgICAgT0sgXSAbW21BRGVhdGhUZXN0LlNob3VsZFJ1bkZpcnN0
CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEFUeXBlZERlYXRoVGVzdC8wLCB3
aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttQVR5cGVkRGVhdGhU
ZXN0LzAuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttQVR5cGVkRGVhdGhU
ZXN0LzAuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20g
QVR5cGVkRGVhdGhUZXN0LzEsIHdoZXJlIFR5cGVQYXJhbSA9IGRvdWJsZQorG1swOzMybVsgUlVO
ICAgICAgXSAbW21BVHlwZWREZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAorG1swOzMybVsgICAg
ICAgT0sgXSAbW21BVHlwZWREZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAorG1swOzMybVstLS0t
LS0tLS0tXSAbW20xIHRlc3QgZnJvbSBNeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAsIHdoZXJlIFR5
cGVQYXJhbSA9IGludAorG1swOzMybVsgUlVOICAgICAgXSAbW21NeS9BVHlwZVBhcmFtRGVhdGhU
ZXN0LzAuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttTXkvQVR5cGVQYXJh
bURlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVz
dCBmcm9tIE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMSwgd2hlcmUgVHlwZVBhcmFtID0gZG91Ymxl
CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbU15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMS5TaG91bGRS
dW5GaXJzdAorG1swOzMybVsgICAgICAgT0sgXSAbW21NeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEu
U2hvdWxkUnVuRmlyc3QKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFBhc3Np
bmdUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MQor
G1swOzMybVsgICAgICAgT0sgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDEKKxtbMDszMm1b
IFJVTiAgICAgIF0gG1ttUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCisbWzA7MzJtWyAgICAgICBP
SyBdIBtbbVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgorG1swOzMybVstLS0tLS0tLS0tXSAbW20y
IHRlc3RzIGZyb20gTm9uZmF0YWxGYWlsdXJlVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21O
b25mYXRhbEZhaWx1cmVUZXN0LkVzY2FwZXNTdHJpbmdPcGVyYW5kcworZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVz
OgorICBrR29sZGVuU3RyaW5nCisgICAgV2hpY2ggaXM6ICJcIkxpbmUiCisgIGFjdHVhbAorICAg
IFdoaWNoIGlzOiAiYWN0dWFsIFwic3RyaW5nXCIiCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisK
K2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5
IG9mIHRoZXNlIHZhbHVlczoKKyAgZ29sZGVuCisgICAgV2hpY2ggaXM6ICJcIkxpbmUiCisgIGFj
dHVhbAorICAgIFdoaWNoIGlzOiAiYWN0dWFsIFwic3RyaW5nXCIiCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uZmF0YWxGYWlsdXJlVGVzdC5Fc2Nh
cGVzU3RyaW5nT3BlcmFuZHMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttTm9uZmF0YWxGYWlsdXJl
VGVzdC5EaWZmRm9yTG9uZ1N0cmluZ3MKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZh
aWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgZ29sZGVuX3N0cgor
ICAgIFdoaWNoIGlzOiAiXCJMaW5lXDAgMVwiXG5MaW5lIDIiCisgICJMaW5lIDIiCitXaXRoIGRp
ZmY6CitAQCAtMSwyIEBACistXCJMaW5lXDAgMVwiCisgTGluZSAyCisKK1N0YWNrIHRyYWNlOiAo
b21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkRp
ZmZGb3JMb25nU3RyaW5ncworG1swOzMybVstLS0tLS0tLS0tXSAbW20zIHRlc3RzIGZyb20gRmF0
YWxGYWlsdXJlVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZh
dGFsRmFpbHVyZUluU3Vicm91dGluZQorKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3Vs
ZCBiZSAxKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQg
ZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxCisgIHgKKyAgICBXaGljaCBpczogMgorU3Rh
Y2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVy
ZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUZh
dGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCisoZXhwZWN0aW5n
IGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5j
YzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAg
eAorICAgIFdoaWNoIGlzOiAyCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRp
bmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1
cmVJblN1YnJvdXRpbmUKKyhleHBlY3RpbmcgYSBmYWlsdXJlIG9uIGZhbHNlKQorZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorVmFsdWUgb2Y6IGZhbHNlCisgIEFjdHVhbDog
ZmFsc2UKK0V4cGVjdGVkOiB0cnVlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRp
bmUKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gTG9nZ2luZ1Rlc3QKKxtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2Vy
dGlvbnMKKyhleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKQoraSA9PSAwCitp
ID09IDEKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAo
MykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgOQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitp
ID09IDIKK2kgPT0gMworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhw
ZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA2CitTdGFjayB0cmFjZTogKG9taXR0
ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9n
Z2luZ0FuZEFzc2VydGlvbnMKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttNyB0ZXN0cyBmcm9tIFND
T1BFRF9UUkFDRVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5B
Y2NlcHRlZFZhbHVlcworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFp
bGVkCitKdXN0IGNoZWNraW5nIHRoYXQgYWxsIHRoZXNlIHZhbHVlcyB3b3JrIGZpbmUuCitHb29n
bGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IChudWxsKQorZ29v
Z2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogMTMzNworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8u
Y2M6Izogc3RkOjpzdHJpbmcKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IGxpdGVyYWwg
c3RyaW5nCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
U0NPUEVEX1RSQUNFVGVzdC5BY2NlcHRlZFZhbHVlcworG1swOzMybVsgUlVOICAgICAgXSAbW21T
Q09QRURfVFJBQ0VUZXN0Lk9iZXlzU2NvcGVzCisoZXhwZWN0ZWQgdG8gZmFpbCkKK2dvb2dsZXRl
c3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlzIGV4
cGVjdGVkLCBhbmQgc2hvdWxkbid0IGhhdmUgYSB0cmFjZS4KK1N0YWNrIHRyYWNlOiAob21pdHRl
ZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitUaGlz
IGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgaGF2ZSBhIHRyYWNlLgorR29vZ2xlIFRl
c3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBFeHBlY3RlZCB0cmFjZQor
U3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBG
YWlsdXJlCitGYWlsZWQKK1RoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBo
YXZlIGEgdHJhY2UuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQg
IF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5PYmV5c1Njb3BlcworG1swOzMybVsgUlVOICAgICAgXSAb
W21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCisoZXhwZWN0ZWQgdG8gZmFpbCkKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRo
ZXNlIHZhbHVlczoKKyAgMgorICBuCisgICAgV2hpY2ggaXM6IDEKK0dvb2dsZSBUZXN0IHRyYWNl
OgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogaSA9IDEKK1N0YWNrIHRyYWNlOiAob21p
dHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQg
ZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxCisgIG4KKyAgICBXaGljaCBpczogMgorR29v
Z2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBpID0gMgorU3Rh
Y2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFD
RVRlc3QuV29ya3NJbkxvb3AKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVz
dC5Xb3Jrc0luU3Vicm91dGluZQorKGV4cGVjdGVkIHRvIGZhaWwpCitnb29nbGV0ZXN0LW91dHB1
dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6
CisgIDIKKyAgbgorICAgIFdoaWNoIGlzOiAxCitHb29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRl
c3Qtb3V0cHV0LXRlc3RfLmNjOiM6IG4gPSAxCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dv
b2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9m
IHRoZXNlIHZhbHVlczoKKyAgMQorICBuCisgICAgV2hpY2ggaXM6IDIKK0dvb2dsZSBUZXN0IHRy
YWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogbiA9IDIKK1N0YWNrIHRyYWNlOiAo
b21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lldvcmtz
SW5TdWJyb3V0aW5lCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2Fu
QmVOZXN0ZWQKKyhleHBlY3RlZCB0byBmYWlsKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6
IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxCisgIG4K
KyAgICBXaGljaCBpczogMgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBuID0gMgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVz
dC5DYW5CZU5lc3RlZAorG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNh
bkJlUmVwZWF0ZWQKKyhleHBlY3RlZCB0byBmYWlsKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8u
Y2M6IzogRmFpbHVyZQorRmFpbGVkCitUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91
bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0
LW91dHB1dC10ZXN0Xy5jYzojOiBBCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRl
c3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlzIGV4
cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSBhbmQgQi4KK0dvb2dsZSBU
ZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogQgorZ29vZ2xldGVzdC1v
dXRwdXQtdGVzdF8uY2M6IzogQQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0
LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK1RoaXMgZmFpbHVyZSBpcyBleHBl
Y3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEsIEIsIGFuZCBDLgorR29vZ2xl
IFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBDCitnb29nbGV0ZXN0
LW91dHB1dC10ZXN0Xy5jYzojOiBCCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBBCitT
dGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZh
aWx1cmUKK0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRh
aW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEQuCitHb29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRl
c3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEQKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEIK
K2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEEKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkK
KworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQK
KxtbMDszMm1bIFJVTiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0NvbmN1cnJlbnRs
eQorKGV4cGVjdGluZyA2IGZhaWx1cmVzKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izog
RmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMxIChpbiB0aHJlYWQgQiwgb25seSB0
cmFjZSBCIGFsaXZlKS4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVz
dF8uY2M6IzogVHJhY2UgQgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91
dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzIgKGlu
IHRocmVhZCBBLCB0cmFjZSBBICYgQiBib3RoIGFsaXZlKS4KK0dvb2dsZSBUZXN0IHRyYWNlOgor
Z29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogVHJhY2UgQQorU3RhY2sgdHJhY2U6IChvbWl0
dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4
cGVjdGVkIGZhaWx1cmUgIzMgKGluIHRocmVhZCBCLCB0cmFjZSBBICYgQiBib3RoIGFsaXZlKS4K
K0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogVHJhY2Ug
QgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzoj
OiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzQgKGluIHRocmVhZCBCLCBvbmx5
IHRyYWNlIEEgYWxpdmUpLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91
dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzUgKGlu
IHRocmVhZCBBLCBvbmx5IHRyYWNlIEEgYWxpdmUpLgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29n
bGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBUcmFjZSBBCitTdGFjayB0cmFjZTogKG9taXR0ZWQp
CisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0
ZWQgZmFpbHVyZSAjNiAoaW4gdGhyZWFkIEEsIG5vIHRyYWNlIGFsaXZlKS4KK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lldv
cmtzQ29uY3VycmVudGx5CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIFNjb3Bl
ZFRyYWNlVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21TY29wZWRUcmFjZVRlc3QuV2l0aEV4
cGxpY2l0RmlsZUFuZExpbmUKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUK
K0ZhaWxlZAorQ2hlY2sgdGhhdCB0aGUgdHJhY2UgaXMgYXR0YWNoZWQgdG8gYSBwYXJ0aWN1bGFy
IGxvY2F0aW9uLgorR29vZ2xlIFRlc3QgdHJhY2U6CitleHBsaWNpdF9maWxlLmNjOjEyMzogZXhw
ZWN0ZWQgdHJhY2UgbWVzc2FnZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbVNjb3BlZFRyYWNlVGVzdC5XaXRoRXhwbGljaXRGaWxlQW5kTGluZQorG1sw
OzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVD
b25zdHJ1Y3RvclRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5G
aXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCisoZXhwZWN0aW5nIDUg
ZmFpbHVyZXMpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQK
K0V4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IuCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUK
K0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gU2V0VXAoKS4KK1N0YWNrIHRyYWNlOiAo
b21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVk
CitFeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBib2R5LgorU3RhY2sgdHJhY2U6IChv
bWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQK
K0V4cGVjdGVkIGZhaWx1cmUgIzQsIGluIFRlYXJEb3duLgorU3RhY2sgdHJhY2U6IChvbWl0dGVk
KQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVj
dGVkIGZhaWx1cmUgIzUsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5GaXh0
dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCisbWzA7MzJtWy0tLS0tLS0t
LS1dIBtbbTEgdGVzdCBmcm9tIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdAor
G1swOzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRl
c3QuRmFpbHVyZUluQ29uc3RydWN0b3IKKyhleHBlY3RpbmcgMiBmYWlsdXJlcykKK2dvb2dsZXRl
c3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAj
MSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKwor
Z29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBm
YWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgorU3RhY2sgdHJhY2U6IChvbWl0
dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0
cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgorG1swOzMybVstLS0tLS0tLS0tXSAbW20x
IHRlc3QgZnJvbSBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVzdAorG1swOzMybVsgUlVOICAgICAg
XSAbW21Ob25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAorKGV4cGVjdGlu
ZyA0IGZhaWx1cmVzKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFp
bGVkCitFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLgorU3RhY2sgdHJhY2U6IChvbWl0
dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4
cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLgorU3RhY2sgdHJhY2U6IChv
bWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQK
K0V4cGVjdGVkIGZhaWx1cmUgIzMsIGluIFRlYXJEb3duKCkuCitTdGFjayB0cmFjZTogKG9taXR0
ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhw
ZWN0ZWQgZmFpbHVyZSAjNCwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJblNl
dFVwVGVzdC5GYWlsdXJlSW5TZXRVcAorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJv
bSBGYXRhbEZhaWx1cmVJblNldFVwVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZh
aWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAorKGV4cGVjdGluZyAzIGZhaWx1cmVzKQor
Z29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBm
YWlsdXJlICMxLCBpbiBTZXRVcCgpLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0
ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUg
IzIsIGluIFRlYXJEb3duKCkuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMywg
aW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1sw
OzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRV
cAorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBBZGRGYWlsdXJlQXRUZXN0Cisb
WzA7MzJtWyBSVU4gICAgICBdIBtbbUFkZEZhaWx1cmVBdFRlc3QuTWVzc2FnZUNvbnRhaW5zU3Bl
Y2lmaWVkRmlsZUFuZExpbmVOdW1iZXIKK2Zvby5jYzo0MjogRmFpbHVyZQorRmFpbGVkCitFeHBl
Y3RlZCBmYWlsdXJlIGluIGZvby5jYworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFt
WyAgRkFJTEVEICBdIBtbbUFkZEZhaWx1cmVBdFRlc3QuTWVzc2FnZUNvbnRhaW5zU3BlY2lmaWVk
RmlsZUFuZExpbmVOdW1iZXIKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttNCB0ZXN0cyBmcm9tIE1p
eGVkVXBUZXN0Q2FzZVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNl
VGVzdC5GaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbU1p
eGVkVXBUZXN0Q2FzZVRlc3QuRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbworG1swOzMybVsgUlVO
ICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlNlY29uZFRlc3RGcm9tTmFtZXNwYWNlRm9v
CisbWzA7MzJtWyAgICAgICBPSyBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuU2Vjb25kVGVzdEZy
b21OYW1lc3BhY2VGb28KKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVz
dC5UaGlzU2hvdWxkRmFpbAorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRmFpbGVkCitBbGwgdGVzdHMg
aW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQorY2xh
c3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlVGVzdCwKK3lvdSBkZWZp
bmVkIHRlc3QgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbyBhbmQgdGVzdCBUaGlzU2hvdWxkRmFp
bAordXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhh
cHBlbiBpZgordGhlIHR3byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIG9y
IHRyYW5zbGF0aW9uCit1bml0cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAgWW91IHNob3VsZCBw
cm9iYWJseSByZW5hbWUgb25lCitvZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8g
ZGlmZmVyZW50IHRlc3QgY2FzZXMuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbAorG1swOzMy
bVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCitn
dGVzdC5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0FsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNh
c2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCitjbGFzcy4gIEhvd2V2ZXIsIGluIHRl
c3QgY2FzZSBNaXhlZFVwVGVzdENhc2VUZXN0LAoreW91IGRlZmluZWQgdGVzdCBGaXJzdFRlc3RG
cm9tTmFtZXNwYWNlRm9vIGFuZCB0ZXN0IFRoaXNTaG91bGRGYWlsVG9vCit1c2luZyB0d28gZGlm
ZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAgVGhpcyBjYW4gaGFwcGVuIGlmCit0aGUgdHdv
IGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMgb3IgdHJhbnNsYXRpb24KK3Vu
aXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZb3Ugc2hvdWxkIHByb2JhYmx5IHJlbmFtZSBv
bmUKK29mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50byBkaWZmZXJlbnQgdGVzdCBj
YXNlcy4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21N
aXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCisbWzA7MzJtWy0tLS0tLS0tLS1d
IBtbbTIgdGVzdHMgZnJvbSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdAorG1sw
OzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5U
aGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAorG1swOzMybVsgICAgICAgT0sgXSAb
W21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRo
aXNOYW1lU2hvdWxkRmFpbAorG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VX
aXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAor
Z3Rlc3QuY2M6IzogRmFpbHVyZQorRmFpbGVkCitBbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBj
YXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQorY2xhc3MuICBIb3dldmVyLCBpbiB0
ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCit5b3UgZGVmaW5l
ZCB0ZXN0IFRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsIGFuZCB0ZXN0IFRoZVNl
Y29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCit1c2luZyB0d28gZGlmZmVyZW50IHRlc3Qg
Zml4dHVyZSBjbGFzc2VzLiAgVGhpcyBjYW4gaGFwcGVuIGlmCit0aGUgdHdvIGNsYXNzZXMgYXJl
IGZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMgb3IgdHJhbnNsYXRpb24KK3VuaXRzIGFuZCBoYXZl
IHRoZSBzYW1lIG5hbWUuICBZb3Ugc2hvdWxkIHByb2JhYmx5IHJlbmFtZSBvbmUKK29mIHRoZSBj
bGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50byBkaWZmZXJlbnQgdGVzdCBjYXNlcy4KK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENh
c2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFp
bAorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVEVTVF9GX2JlZm9yZV9URVNU
X2luX3NhbWVfdGVzdF9jYXNlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVRFU1RfRl9iZWZvcmVf
VEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0YKKxtbMDszMm1bICAgICAg
IE9LIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2lu
Z1RFU1RfRgorG1swOzMybVsgUlVOICAgICAgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2Ft
ZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwKK2d0ZXN0LmNjOiM6IEZh
aWx1cmUKK0ZhaWxlZAorQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0
aGUgc2FtZSB0ZXN0IGZpeHR1cmUKK2NsYXNzLCBzbyBtaXhpbmcgVEVTVF9GIGFuZCBURVNUIGlu
IHRoZSBzYW1lIHRlc3QgY2FzZSBpcworaWxsZWdhbC4gIEluIHRlc3QgY2FzZSBURVNUX0ZfYmVm
b3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UsCit0ZXN0IERlZmluZWRVc2luZ1RFU1RfRiBpcyBk
ZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKK3Rlc3QgRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZh
aWwgaXMgZGVmaW5lZCB1c2luZyBURVNULiAgWW91IHByb2JhYmx5Cit3YW50IHRvIGNoYW5nZSB0
aGUgVEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0byBhbm90aGVyIHRlc3QKK2Nhc2UuCitTdGFj
ayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVEVTVF9GX2JlZm9y
ZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsCisb
WzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBURVNUX2JlZm9yZV9URVNUX0ZfaW5f
c2FtZV90ZXN0X2Nhc2UKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9G
X2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1QKKxtbMDszMm1bICAgICAgIE9LIF0g
G1ttVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1QK
KxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9j
YXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwKK2d0ZXN0LmNjOiM6IEZhaWx1cmUK
K0ZhaWxlZAorQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2Ft
ZSB0ZXN0IGZpeHR1cmUKK2NsYXNzLCBzbyBtaXhpbmcgVEVTVF9GIGFuZCBURVNUIGluIHRoZSBz
YW1lIHRlc3QgY2FzZSBpcworaWxsZWdhbC4gIEluIHRlc3QgY2FzZSBURVNUX2JlZm9yZV9URVNU
X0ZfaW5fc2FtZV90ZXN0X2Nhc2UsCit0ZXN0IERlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZh
aWwgaXMgZGVmaW5lZCB1c2luZyBURVNUX0YgYnV0Cit0ZXN0IERlZmluZWRVc2luZ1RFU1QgaXMg
ZGVmaW5lZCB1c2luZyBURVNULiAgWW91IHByb2JhYmx5Cit3YW50IHRvIGNoYW5nZSB0aGUgVEVT
VCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0byBhbm90aGVyIHRlc3QKK2Nhc2UuCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9G
X2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwKKxtbMDsz
Mm1bLS0tLS0tLS0tLV0gG1ttOCB0ZXN0cyBmcm9tIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QK
KxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZl
cmVuY2VHbG9iYWxWYXJpYWJsZXMKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttRXhwZWN0Tm9uZmF0
YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFZhcmlh
YmxlcworG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNh
blJlZmVyZW5jZUxvY2FsVmFyaWFibGVzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQor
G1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRz
V2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUK
KyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEg
bm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZhaWx1cmVzCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVz
dC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKKxtbMDszMm1bIFJVTiAgICAgIF0g
G1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFs
RmFpbHVyZXMKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhw
ZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAyIGZhaWx1cmVzCitnb29nbGV0
ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0
ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitnb29n
bGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhw
ZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMi4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitT
dGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKKxtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5U
aGVyZUlzT25lRmF0YWxGYWlsdXJlCisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6
IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCisgIEFjdHVhbDoKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVk
IGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVy
ZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQorG1swOzMybVsgUlVOICAgICAg
XSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMK
KyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEg
bm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZhaWx1cmVzCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVz
dC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVj
dE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCisoZXhwZWN0aW5n
IGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBm
YWlsdXJlCisgIEFjdHVhbDogMCBmYWlsdXJlcworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisb
WzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVu
U3RhdGVtZW50VGhyb3dzCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTggdGVzdHMgZnJvbSBFeHBl
Y3RGYXRhbEZhaWx1cmVUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFp
bHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCisbWzA7MzJtWyAgICAgICBPSyBd
IBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCisb
WzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNl
TG9jYWxTdGF0aWNWYXJpYWJsZXMKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFN0YXRpY1ZhcmlhYmxlcworG1swOzMybVsgUlVO
ICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVG
YXRhbEZhaWx1cmUKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVz
dC5TdWNjZWVkc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCisbWzA7MzJtWyBSVU4gICAgICBd
IBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJl
CisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAx
IGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZhaWx1cmVzCitTdGFjayB0cmFjZTogKG9taXR0
ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWls
c1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMKKyhleHBl
Y3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwg
ZmFpbHVyZQorICBBY3R1YWw6IDIgZmFpbHVyZXMKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNj
OiM6IEZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFj
ayB0cmFjZTogKG9taXR0ZWQpCisKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmF0
YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlM
RUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFs
RmFpbHVyZXMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5G
YWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCisoZXhwZWN0aW5nIGEgZmFpbHVyZSkK
K2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFs
OgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6CitGYWls
ZWQKK0V4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQor
CisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBl
Y3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKKxtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0
ZW1lbnRSZXR1cm5zCisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUK
K0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZhaWx1cmVzCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWls
dXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCisbWzA7MzJtWyBSVU4gICAgICBdIBtb
bUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCisoZXhwZWN0
aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZh
aWx1cmUKKyAgQWN0dWFsOiAwIGZhaWx1cmVzCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtb
MDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0
ZW1lbnRUaHJvd3MKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFR5cGVkVGVz
dC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVHlwZWRU
ZXN0LzAuU3VjY2VzcworG1swOzMybVsgICAgICAgT0sgXSAbW21UeXBlZFRlc3QvMC5TdWNjZXNz
CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVR5cGVkVGVzdC8wLkZhaWx1cmUKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZh
bHVlczoKKyAgMQorICBUeXBlUGFyYW0oKQorICAgIFdoaWNoIGlzOiAwCitFeHBlY3RlZCBmYWls
dXJlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVHlw
ZWRUZXN0LzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gaW50CisbWzA7MzJtWy0tLS0tLS0t
LS1dIBtbbTIgdGVzdHMgZnJvbSBUeXBlZFRlc3RXaXRoTmFtZXMvY2hhcl8wLCB3aGVyZSBUeXBl
UGFyYW0gPSBjaGFyCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVR5cGVkVGVzdFdpdGhOYW1lcy9j
aGFyXzAuU3VjY2VzcworG1swOzMybVsgICAgICAgT0sgXSAbW21UeXBlZFRlc3RXaXRoTmFtZXMv
Y2hhcl8wLlN1Y2Nlc3MKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVz
L2NoYXJfMC5GYWlsdXJlCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitG
YWlsZWQKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21U
eXBlZFRlc3RXaXRoTmFtZXMvY2hhcl8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IGNoYXIK
KxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFR5cGVkVGVzdFdpdGhOYW1lcy9p
bnRfMSwgd2hlcmUgVHlwZVBhcmFtID0gaW50CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVR5cGVk
VGVzdFdpdGhOYW1lcy9pbnRfMS5TdWNjZXNzCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbVR5cGVk
VGVzdFdpdGhOYW1lcy9pbnRfMS5TdWNjZXNzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVR5cGVk
VGVzdFdpdGhOYW1lcy9pbnRfMS5GYWlsdXJlCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzoj
OiBGYWlsdXJlCitGYWlsZWQKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21UeXBlZFRlc3RXaXRoTmFtZXMvaW50XzEuRmFpbHVyZSwgd2hlcmUgVHlwZVBh
cmFtID0gaW50CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBVbnNpZ25lZC9U
eXBlZFRlc3RQLzAsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKKxtbMDszMm1bIFJV
TiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLlN1Y2Nlc3MKKxtbMDszMm1bICAgICAg
IE9LIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLlN1Y2Nlc3MKKxtbMDszMm1bIFJVTiAgICAg
IF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUKK2dvb2dsZXRlc3Qtb3V0cHV0LXRl
c3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAg
MVUKKyAgICBXaGljaCBpczogMQorICBUeXBlUGFyYW0oKQorICAgIFdoaWNoIGlzOiAnXDAnCitF
eHBlY3RlZCBmYWlsdXJlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlM
RUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9
IHVuc2lnbmVkIGNoYXIKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFVuc2ln
bmVkL1R5cGVkVGVzdFAvMSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50CisbWzA7MzJt
WyBSVU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNzCisbWzA7MzJtWyAg
ICAgICBPSyBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNzCisbWzA7MzJtWyBSVU4g
ICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlCitnb29nbGV0ZXN0LW91dHB1
dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6
CisgIDFVCisgICAgV2hpY2ggaXM6IDEKKyAgVHlwZVBhcmFtKCkKKyAgICBXaGljaCBpczogMAor
RXhwZWN0ZWQgZmFpbHVyZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0g
PSB1bnNpZ25lZCBpbnQKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFVuc2ln
bmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkX2NoYXJfMCwgd2hlcmUgVHlwZVBhcmFt
ID0gdW5zaWduZWQgY2hhcgorG1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25lZEN1c3RvbU5h
bWUvVHlwZWRUZXN0UC91bnNpZ25lZF9jaGFyXzAuU3VjY2VzcworG1swOzMybVsgICAgICAgT0sg
XSAbW21VbnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZF9jaGFyXzAuU3VjY2Vz
cworG1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91
bnNpZ25lZF9jaGFyXzAuRmFpbHVyZQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFp
bHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxVQorICAgIFdoaWNo
IGlzOiAxCisgIFR5cGVQYXJhbSgpCisgICAgV2hpY2ggaXM6ICdcMCcKK0V4cGVjdGVkIGZhaWx1
cmUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21VbnNp
Z25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZF9jaGFyXzAuRmFpbHVyZSwgd2hlcmUg
VHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3Rz
IGZyb20gVW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRfaW50XzEsIHdoZXJl
IFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAorG1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25l
ZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZF9pbnRfMS5TdWNjZXNzCisbWzA7MzJtWyAg
ICAgICBPSyBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkX2ludF8x
LlN1Y2Nlc3MKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWRDdXN0b21OYW1lL1R5cGVk
VGVzdFAvdW5zaWduZWRfaW50XzEuRmFpbHVyZQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6
IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxVQorICAg
IFdoaWNoIGlzOiAxCisgIFR5cGVQYXJhbSgpCisgICAgV2hpY2ggaXM6IDAKK0V4cGVjdGVkIGZh
aWx1cmUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21V
bnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZF9pbnRfMS5GYWlsdXJlLCB3aGVy
ZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttNCB0ZXN0
cyBmcm9tIEV4cGVjdEZhaWx1cmVUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZh
aWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVz
dC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCisgIEFjdHVhbDoKK2dv
b2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IFN1Y2Nlc3M6CitTdWNjZWVkZWQKK1N0YWNrIHRy
YWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKyhleHBlY3Rpbmcg
MSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVy
ZQorICBBY3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFp
bHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisoZXhwZWN0aW5nIDEgZmFp
bHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUgY29u
dGFpbmluZyAiU29tZSBvdGhlciBmYXRhbCBmYWlsdXJlIGV4cGVjdGVkLiIKKyAgQWN0dWFsOgor
Z29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhw
ZWN0ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRl
c3QuRXhwZWN0RmF0YWxGYWlsdXJlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1
cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVz
dC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6
Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBTdWNjZXNzOgorU3VjY2VlZGVkCitTdGFj
ayB0cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisoZXhwZWN0
aW5nIDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRh
bCBmYWlsdXJlCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhdGFs
IGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisoZXhwZWN0aW5nIDEgZmFp
bHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJl
IGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1cmUuIgorICBBY3R1YWw6Citn
b29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKK0ZhaWxlZAor
RXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKwor
U3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZh
aWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQorG1swOzMybVsgUlVOICAgICAgXSAbW21F
eHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKKyhleHBlY3Rp
bmcgMSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFp
bHVyZQorICBBY3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBTdWNjZXNzOgor
U3VjY2VlZGVkCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0
dGVkKQorCisoZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVj
dGVkOiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8u
Y2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRhbCBmYWls
dXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkK
KworKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDog
MSBmYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBl
Y3RlZC4iCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhdGFsIGZh
aWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBd
IBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcworG1sw
OzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1
cmVPbkFsbFRocmVhZHMKKyhleHBlY3RpbmcgMSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVy
ZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1v
dXRwdXQtdGVzdF8uY2M6IzogU3VjY2VzczoKK1N1Y2NlZWRlZAorU3RhY2sgdHJhY2U6IChvbWl0
dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworKGV4cGVjdGluZyAxIGZhaWx1cmUp
CitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBB
Y3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgorRmFp
bGVkCitFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisK
K1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5j
YzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJT
b21lIG90aGVyIG5vbi1mYXRhbCBmYWlsdXJlLiIKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIG5vbi1m
YXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAo
b21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBl
Y3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0
ZXN0cyBmcm9tIEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QKKxtbMDszMm1bIFJVTiAgICAg
IF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKKyhl
eHBlY3RpbmcgMiBmYWlsdXJlcykKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1
cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRl
ZCkKKworZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBB
Y3R1YWw6IDAgZmFpbHVyZXMKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdEZhdGFsRmFpbHVy
ZQorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4
cGVjdE5vbkZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyAyIGZhaWx1cmVzKQorZ29vZ2xldGVzdC1v
dXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBub24tZmF0YWwgZmFp
bHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhw
ZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZhaWx1cmVzCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdp
dGhUaHJlYWRzVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKKxtbMDszMm1bLS0tLS0tLS0tLV0g
G1ttMSB0ZXN0IGZyb20gU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0CisbWzA7
MzJtWyBSVU4gICAgICBdIBtbbVNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdC5J
bnRlcmNlcHRPbmx5Q3VycmVudFRocmVhZAorKGV4cGVjdGluZyAyIGZhaWx1cmVzKQorZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYXRhbCBm
YWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0
Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgorU3Rh
Y2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNjb3BlZEZha2VU
ZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdC5JbnRlcmNlcHRPbmx5Q3VycmVudFRocmVhZAorG1sw
OzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBQcmludGluZ0ZhaWxpbmdQYXJhbXMvRmFp
bGluZ1BhcmFtVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21QcmludGluZ0ZhaWxpbmdQYXJh
bXMvRmFpbGluZ1BhcmFtVGVzdC5GYWlscy8wCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzoj
OiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAgR2V0
UGFyYW0oKQorICAgIFdoaWNoIGlzOiAyCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttUHJpbnRpbmdGYWlsaW5nUGFyYW1zL0ZhaWxpbmdQYXJhbVRlc3Qu
RmFpbHMvMCwgd2hlcmUgR2V0UGFyYW0oKSA9IDIKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0
ZXN0cyBmcm9tIFByaW50aW5nU3RyaW5ncy9QYXJhbVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0g
G1ttUHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5TdWNjZXNzL2EKKxtbMDszMm1bICAgICAgIE9L
IF0gG1ttUHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5TdWNjZXNzL2EKKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttUHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5GYWlsdXJlL2EKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZh
bHVlczoKKyAgImIiCisgIEdldFBhcmFtKCkKKyAgICBXaGljaCBpczogImEiCitFeHBlY3RlZCBm
YWlsdXJlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
UHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5GYWlsdXJlL2EsIHdoZXJlIEdldFBhcmFtKCkgPSAi
YSIKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1k
b3duCitCYXJFbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuCitnb29nbGV0ZXN0LW91dHB1
dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
LgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitGb29FbnZpcm9ubWVudDo6VGVhckRvd24oKSBj
YWxsZWQuCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4
cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMm1b
PT09PT09PT09PV0gG1ttNzYgdGVzdHMgZnJvbSAzNCB0ZXN0IGNhc2VzIHJhbi4KKxtbMDszMm1b
ICBQQVNTRUQgIF0gG1ttMjYgdGVzdHMuCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbTUwIHRlc3Rz
LCBsaXN0ZWQgYmVsb3c6CisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbmZhdGFsRmFpbHVyZVRl
c3QuRXNjYXBlc1N0cmluZ09wZXJhbmRzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbmZhdGFs
RmFpbHVyZVRlc3QuRGlmZkZvckxvbmdTdHJpbmdzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZh
dGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCisbWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCisb
WzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5T
dWJyb3V0aW5lCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUxvZ2dpbmdUZXN0LkludGVybGVhdmlu
Z0xvZ2dpbmdBbmRBc3NlcnRpb25zCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFD
RVRlc3QuQWNjZXB0ZWRWYWx1ZXMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNF
VGVzdC5PYmV5c1Njb3BlcworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0
LldvcmtzSW5Mb29wCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29y
a3NJblN1YnJvdXRpbmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5D
YW5CZU5lc3RlZAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJl
UmVwZWF0ZWQKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0Nv
bmN1cnJlbnRseQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TY29wZWRUcmFjZVRlc3QuV2l0aEV4
cGxpY2l0RmlsZUFuZExpbmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uRmF0YWxGYWlsdXJl
SW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJl
SW5Db25zdHJ1Y3RvcgorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJblNl
dFVwVGVzdC5GYWlsdXJlSW5TZXRVcAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1
cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21BZGRG
YWlsdXJlQXRUZXN0Lk1lc3NhZ2VDb250YWluc1NwZWNpZmllZEZpbGVBbmRMaW5lTnVtYmVyCisb
WzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFp
bFRvbworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3RO
YW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAorG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVz
aW5nVEVTVEFuZFNob3VsZEZhaWwKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVEVTVF9iZWZvcmVf
VEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1do
ZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1do
ZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucworG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRo
cm93cworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxz
V2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RG
YXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcworG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNP
bmVOb25mYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWls
dXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCisbWzA7MzFt
WyAgRkFJTEVEICBdIBtbbVR5cGVkVGVzdC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IGlu
dAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3RXaXRoTmFtZXMvY2hhcl8wLkZhaWx1
cmUsIHdoZXJlIFR5cGVQYXJhbSA9IGNoYXIKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVHlwZWRU
ZXN0V2l0aE5hbWVzL2ludF8xLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IGludAorG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZSwgd2hlcmUgVHlw
ZVBhcmFtID0gdW5zaWduZWQgY2hhcgorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21VbnNpZ25lZC9U
eXBlZFRlc3RQLzEuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50CisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVk
X2NoYXJfMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBjaGFyCisbWzA7MzFt
WyAgRkFJTEVEICBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkX2lu
dF8xLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAorG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCisb
WzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVy
ZU9uQWxsVGhyZWFkcworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5F
eHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
RXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3ROb25GYXRh
bEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0
UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCisbWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbVByaW50aW5nRmFpbGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1UZXN0LkZhaWxzLzAsIHdo
ZXJlIEdldFBhcmFtKCkgPSAyCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVByaW50aW5nU3RyaW5n
cy9QYXJhbVRlc3QuRmFpbHVyZS9hLCB3aGVyZSBHZXRQYXJhbSgpID0gImEiCisKKzUwIEZBSUxF
RCBURVNUUworG1swOzMzbSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNUCisKKxtbbU5vdGU6IEdv
b2dsZSBUZXN0IGZpbHRlciA9IEZhdGFsRmFpbHVyZVRlc3QuKjpMb2dnaW5nVGVzdC4qCitbPT09
PT09PT09PV0gUnVubmluZyA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2VzLgorWy0tLS0tLS0tLS1d
IEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KK1stLS0tLS0tLS0tXSAzIHRlc3RzIGZy
b20gRmF0YWxGYWlsdXJlVGVzdAorWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxG
YWlsdXJlSW5TdWJyb3V0aW5lCisoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJl
IDEpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVh
bGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAgeAorICAgIFdoaWNoIGlzOiAyCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFp
bHVyZUluU3Vicm91dGluZSAoPyBtcykKK1sgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0LkZh
dGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQorKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4
IHNob3VsZCBiZSAxKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhw
ZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxCisgIHgKKyAgICBXaGljaCBpczog
MgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitbICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVz
dC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUgKD8gbXMpCitbIFJVTiAgICAgIF0gRmF0
YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKKyhleHBlY3RpbmcgYSBm
YWlsdXJlIG9uIGZhbHNlKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQor
VmFsdWUgb2Y6IGZhbHNlCisgIEFjdHVhbDogZmFsc2UKK0V4cGVjdGVkOiB0cnVlCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFs
RmFpbHVyZUluU3Vicm91dGluZSAoPyBtcykKK1stLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0
YWxGYWlsdXJlVGVzdCAoPyBtcyB0b3RhbCkKKworWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExv
Z2dpbmdUZXN0CitbIFJVTiAgICAgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0Fu
ZEFzc2VydGlvbnMKKyhleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKQoraSA9
PSAwCitpID09IDEKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVj
dGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgOQorU3RhY2sgdHJhY2U6IChvbWl0dGVk
KQorCitpID09IDIKK2kgPT0gMworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVy
ZQorRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA2CitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKK1sgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5n
QW5kQXNzZXJ0aW9ucyAoPyBtcykKK1stLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBMb2dnaW5nVGVz
dCAoPyBtcyB0b3RhbCkKKworWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRl
YXItZG93bgorWz09PT09PT09PT1dIDQgdGVzdHMgZnJvbSAyIHRlc3QgY2FzZXMgcmFuLiAoPyBt
cyB0b3RhbCkKK1sgIFBBU1NFRCAgXSAwIHRlc3RzLgorWyAgRkFJTEVEICBdIDQgdGVzdHMsIGxp
c3RlZCBiZWxvdzoKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUlu
U3Vicm91dGluZQorWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5O
ZXN0ZWRTdWJyb3V0aW5lCitbICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZh
aWx1cmVJblN1YnJvdXRpbmUKK1sgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdM
b2dnaW5nQW5kQXNzZXJ0aW9ucworCisgNCBGQUlMRUQgVEVTVFMKK05vdGU6IEdvb2dsZSBUZXN0
IGZpbHRlciA9ICpESVNBQkxFRF8qCitbPT09PT09PT09PV0gUnVubmluZyAxIHRlc3QgZnJvbSAx
IHRlc3QgY2FzZS4KK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAu
CitbLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0CitbIFJV
TiAgICAgIF0gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0LkRJU0FCTEVEX0Fsc29SdW5EaXNhYmxl
ZFRlc3RzRmxhZ1N1cHByZXNzZXNXYXJuaW5nCitbICAgICAgIE9LIF0gRGlzYWJsZWRUZXN0c1dh
cm5pbmdUZXN0LkRJU0FCTEVEX0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZ1N1cHByZXNzZXNXYXJu
aW5nCitbLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCitbPT09
PT09PT09PV0gMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UgcmFuLgorWyAgUEFTU0VEICBdIDEgdGVz
dC4KK05vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9IFBhc3NpbmdUZXN0LioKK05vdGU6IFRoaXMg
aXMgdGVzdCBzaGFyZCAyIG9mIDIuCitbPT09PT09PT09PV0gUnVubmluZyAxIHRlc3QgZnJvbSAx
IHRlc3QgY2FzZS4KK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAu
CitbLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gUGFzc2luZ1Rlc3QKK1sgUlVOICAgICAgXSBQYXNz
aW5nVGVzdC5QYXNzaW5nVGVzdDIKK1sgICAgICAgT0sgXSBQYXNzaW5nVGVzdC5QYXNzaW5nVGVz
dDIKK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KK1s9PT09
PT09PT09XSAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZSByYW4uCitbICBQQVNTRUQgIF0gMSB0ZXN0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91
dHB1dC10ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91
dHB1dC10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkNjllMzUzYTE5ZTM2OTQ2NTMzYmY1ZjdlMGEyYzky
NDZmN2RjZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3QucHkKQEAgLTAsMCArMSwzNDcgQEAKKyMhL3Vzci9iaW4v
ZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIwor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisj
IGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisj
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlRlc3RzIHRoZSB0ZXh0IG91dHB1
dCBvZiBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrLgorCitUbyB1cGRh
dGUgdGhlIGdvbGRlbiBmaWxlOgorZ29vZ2xldGVzdF9vdXRwdXRfdGVzdC5weSAtLWJ1aWxkX2Rp
cj1CVUlMRC9ESVIgLS1nZW5nb2xkZW4KK3doZXJlIEJVSUxEL0RJUiBjb250YWlucyB0aGUgYnVp
bHQgZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8gZmlsZS4KK2dvb2dsZXRlc3Rfb3V0cHV0X3Rlc3Qu
cHkgLS1nZW5nb2xkZW4KK2dvb2dsZXRlc3Rfb3V0cHV0X3Rlc3QucHkKKyIiIgorCitpbXBvcnQg
ZGlmZmxpYgoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCBndGVzdF90
ZXN0X3V0aWxzCisKKworIyBUaGUgZmxhZyBmb3IgZ2VuZXJhdGluZyB0aGUgZ29sZGVuIGZpbGUK
K0dFTkdPTERFTl9GTEFHID0gJy0tZ2VuZ29sZGVuJworQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFS
X05BTUUgPSAnR1RFU1RfQ0FUQ0hfRVhDRVBUSU9OUycKKworIyBUaGUgZmxhZyBpbmRpY2F0aW5n
IHN0YWNrdHJhY2VzIGFyZSBub3Qgc3VwcG9ydGVkCitOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxB
RyA9ICctLW5vX3N0YWNrdHJhY2Vfc3VwcG9ydCcKKworSVNfTElOVVggPSBvcy5uYW1lID09ICdw
b3NpeCcgYW5kIG9zLnVuYW1lKClbMF0gPT0gJ0xpbnV4JworSVNfV0lORE9XUyA9IG9zLm5hbWUg
PT0gJ250JworCisjIEZJWE1FOiByZW1vdmUgdGhlIF9saW4gc3VmZml4LgorR09MREVOX05BTUUg
PSAnZ29vZ2xldGVzdC1vdXRwdXQtdGVzdC1nb2xkZW4tbGluLnR4dCcKKworUFJPR1JBTV9QQVRI
ID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2dvb2dsZXRlc3Qtb3V0
cHV0LXRlc3RfJykKKworIyBBdCBsZWFzdCBvbmUgY29tbWFuZCB3ZSBleGVyY2lzZSBtdXN0IG5v
dCBoYXZlIHRoZQorIyAnaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3Rz
JyBhcmd1bWVudC4KK0NPTU1BTkRfTElTVF9URVNUUyA9ICh7fSwgW1BST0dSQU1fUEFUSCwgJy0t
Z3Rlc3RfbGlzdF90ZXN0cyddKQorQ09NTUFORF9XSVRIX0NPTE9SID0gKHt9LCBbUFJPR1JBTV9Q
QVRILCAnLS1ndGVzdF9jb2xvcj15ZXMnXSkKK0NPTU1BTkRfV0lUSF9USU1FID0gKHt9LCBbUFJP
R1JBTV9QQVRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ndGVzdF9wcmludF90aW1l
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRf
YW5kX2FkX2hvY190ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICctLWd0ZXN0X2Zp
bHRlcj1GYXRhbEZhaWx1cmVUZXN0Lio6TG9nZ2luZ1Rlc3QuKiddKQorQ09NTUFORF9XSVRIX0RJ
U0FCTEVEID0gKAorICAgIHt9LCBbUFJPR1JBTV9QQVRILAorICAgICAgICAgJy0tZ3Rlc3RfYWxz
b19ydW5fZGlzYWJsZWRfdGVzdHMnLAorICAgICAgICAgJ2ludGVybmFsX3NraXBfZW52aXJvbm1l
bnRfYW5kX2FkX2hvY190ZXN0cycsCisgICAgICAgICAnLS1ndGVzdF9maWx0ZXI9KkRJU0FCTEVE
XyonXSkKK0NPTU1BTkRfV0lUSF9TSEFSRElORyA9ICgKKyAgICB7J0dURVNUX1NIQVJEX0lOREVY
JzogJzEnLCAnR1RFU1RfVE9UQUxfU0hBUkRTJzogJzInfSwKKyAgICBbUFJPR1JBTV9QQVRILAor
ICAgICAnaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzJywKKyAgICAg
Jy0tZ3Rlc3RfZmlsdGVyPVBhc3NpbmdUZXN0LionXSkKKworR09MREVOX1BBVEggPSBvcy5wYXRo
LmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRTb3VyY2VEaXIoKSwgR09MREVOX05BTUUpCisKKwor
ZGVmIFRvVW5peExpbmVFbmRpbmcocyk6CisgICIiIkNoYW5nZXMgYWxsIFdpbmRvd3MvTWFjIGxp
bmUgZW5kaW5ncyBpbiBzIHRvIFVOSVggbGluZSBlbmRpbmdzLiIiIgorCisgIHJldHVybiBzLnJl
cGxhY2UoJ1xyXG4nLCAnXG4nKS5yZXBsYWNlKCdccicsICdcbicpCisKKworZGVmIFJlbW92ZUxv
Y2F0aW9ucyh0ZXN0X291dHB1dCk6CisgICIiIlJlbW92ZXMgYWxsIGZpbGUgbG9jYXRpb24gaW5m
byBmcm9tIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4KKworICBBcmdzOgorICAgICAg
IHRlc3Rfb3V0cHV0OiAgdGhlIG91dHB1dCBvZiBhIEdvb2dsZSBUZXN0IHByb2dyYW0uCisKKyAg
UmV0dXJuczoKKyAgICAgICBvdXRwdXQgd2l0aCBhbGwgZmlsZSBsb2NhdGlvbiBpbmZvIChpbiB0
aGUgZm9ybSBvZgorICAgICAgICdESVJFQ1RPUlkvRklMRV9OQU1FOkxJTkVfTlVNQkVSOiAnb3IK
KyAgICAgICAnRElSRUNUT1JZXFxGSUxFX05BTUUoTElORV9OVU1CRVIpOiAnKSByZXBsYWNlZCBi
eQorICAgICAgICdGSUxFX05BTUU6IzogJy4KKyAgIiIiCisKKyAgcmV0dXJuIHJlLnN1YihyJy4q
Wy9cXF0oKGdvb2dsZXRlc3Qtb3V0cHV0LXRlc3RffGd0ZXN0KS5jYykoXDpcZCt8XChcZCtcKSlc
OiAnLAorICAgICAgICAgICAgICAgIHInXDE6IzogJywgdGVzdF9vdXRwdXQpCisKKworZGVmIFJl
bW92ZVN0YWNrVHJhY2VEZXRhaWxzKG91dHB1dCk6CisgICIiIlJlbW92ZXMgYWxsIHN0YWNrIHRy
YWNlcyBmcm9tIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4iIiIKKworICAjICo/IG1l
YW5zICJmaW5kIHRoZSBzaG9ydGVzdCBzdHJpbmcgdGhhdCBtYXRjaGVzIi4KKyAgcmV0dXJuIHJl
LnN1YihyJ1N0YWNrIHRyYWNlOigufFxuKSo/XG5cbicsCisgICAgICAgICAgICAgICAgJ1N0YWNr
IHRyYWNlOiAob21pdHRlZClcblxuJywgb3V0cHV0KQorCisKK2RlZiBSZW1vdmVTdGFja1RyYWNl
cyhvdXRwdXQpOgorICAiIiJSZW1vdmVzIGFsbCB0cmFjZXMgb2Ygc3RhY2sgdHJhY2VzIGZyb20g
YSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgorCisgICMgKj8gbWVhbnMgImZpbmQg
dGhlIHNob3J0ZXN0IHN0cmluZyB0aGF0IG1hdGNoZXMiLgorICByZXR1cm4gcmUuc3ViKHInU3Rh
Y2sgdHJhY2U6KC58XG4pKj9cblxuJywgJycsIG91dHB1dCkKKworCitkZWYgUmVtb3ZlVGltZShv
dXRwdXQpOgorICAiIiJSZW1vdmVzIGFsbCB0aW1lIGluZm9ybWF0aW9uIGZyb20gYSBHb29nbGUg
VGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgorCisgIHJldHVybiByZS5zdWIocidcKFxkKyBtcycs
ICcoPyBtcycsIG91dHB1dCkKKworCitkZWYgUmVtb3ZlVHlwZUluZm9EZXRhaWxzKHRlc3Rfb3V0
cHV0KToKKyAgIiIiUmVtb3ZlcyBjb21waWxlci1zcGVjaWZpYyB0eXBlIGluZm8gZnJvbSBHb29n
bGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LgorCisgIEFyZ3M6CisgICAgICAgdGVzdF9vdXRwdXQ6
ICB0aGUgb3V0cHV0IG9mIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbS4KKworICBSZXR1cm5zOgorICAg
ICAgIG91dHB1dCB3aXRoIHR5cGUgaW5mb3JtYXRpb24gbm9ybWFsaXplZCB0byBjYW5vbmljYWwg
Zm9ybS4KKyAgIiIiCisKKyAgIyBzb21lIGNvbXBpbGVycyBvdXRwdXQgdGhlIG5hbWUgb2YgdHlw
ZSAndW5zaWduZWQgaW50JyBhcyAndW5zaWduZWQnCisgIHJldHVybiByZS5zdWIocid1bnNpZ25l
ZCBpbnQnLCAndW5zaWduZWQnLCB0ZXN0X291dHB1dCkKKworCitkZWYgTm9ybWFsaXplVG9DdXJy
ZW50UGxhdGZvcm0odGVzdF9vdXRwdXQpOgorICAiIiJOb3JtYWxpemVzIHBsYXRmb3JtIHNwZWNp
ZmljIG91dHB1dCBkZXRhaWxzIGZvciBlYXNpZXIgY29tcGFyaXNvbi4iIiIKKworICBpZiBJU19X
SU5ET1dTOgorICAgICMgUmVtb3ZlcyB0aGUgY29sb3IgaW5mb3JtYXRpb24gdGhhdCBpcyBub3Qg
cHJlc2VudCBvbiBXaW5kb3dzLgorICAgIHRlc3Rfb3V0cHV0ID0gcmUuc3ViKCdceDFiXFxbKDA7
M1xkKT9tJywgJycsIHRlc3Rfb3V0cHV0KQorICAgICMgQ2hhbmdlcyBmYWlsdXJlIG1lc3NhZ2Ug
aGVhZGVycyBpbnRvIHRoZSBXaW5kb3dzIGZvcm1hdC4KKyAgICB0ZXN0X291dHB1dCA9IHJlLnN1
YihyJzogRmFpbHVyZVxuJywgcic6IGVycm9yOiAnLCB0ZXN0X291dHB1dCkKKyAgICAjIENoYW5n
ZXMgZmlsZShsaW5lX251bWJlcikgdG8gZmlsZTpsaW5lX251bWJlci4KKyAgICB0ZXN0X291dHB1
dCA9IHJlLnN1YihyJygoXHd8XC4pKylcKChcZCspXCk6JywgcidcMTpcMzonLCB0ZXN0X291dHB1
dCkKKworICByZXR1cm4gdGVzdF9vdXRwdXQKKworCitkZWYgUmVtb3ZlVGVzdENvdW50cyhvdXRw
dXQpOgorICAiIiJSZW1vdmVzIHRlc3QgY291bnRzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFt
J3Mgb3V0cHV0LiIiIgorCisgIG91dHB1dCA9IHJlLnN1YihyJ1xkKyB0ZXN0cz8sIGxpc3RlZCBi
ZWxvdycsCisgICAgICAgICAgICAgICAgICAnPyB0ZXN0cywgbGlzdGVkIGJlbG93Jywgb3V0cHV0
KQorICBvdXRwdXQgPSByZS5zdWIocidcZCsgRkFJTEVEIFRFU1RTJywKKyAgICAgICAgICAgICAg
ICAgICc/IEZBSUxFRCBURVNUUycsIG91dHB1dCkKKyAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIHRl
c3RzPyBmcm9tIFxkKyB0ZXN0IGNhc2VzPycsCisgICAgICAgICAgICAgICAgICAnPyB0ZXN0cyBm
cm9tID8gdGVzdCBjYXNlcycsIG91dHB1dCkKKyAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIHRlc3Rz
PyBmcm9tIChbYS16QS1aX10pJywKKyAgICAgICAgICAgICAgICAgIHInPyB0ZXN0cyBmcm9tIFwx
Jywgb3V0cHV0KQorICByZXR1cm4gcmUuc3ViKHInXGQrIHRlc3RzP1wuJywgJz8gdGVzdHMuJywg
b3V0cHV0KQorCisKK2RlZiBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCBwYXR0ZXJu
KToKKyAgIiIiUmVtb3ZlcyBvdXRwdXQgb2Ygc3BlY2lmaWVkIHRlc3RzIGZyb20gYSBHb29nbGUg
VGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LgorCisgIFRoaXMgZnVuY3Rpb24gc3RyaXBzIG5vdCBvbmx5
IHRoZSBiZWdpbm5pbmcgYW5kIHRoZSBlbmQgb2YgYSB0ZXN0IGJ1dCBhbHNvCisgIGFsbCBvdXRw
dXQgaW4gYmV0d2Vlbi4KKworICBBcmdzOgorICAgIHRlc3Rfb3V0cHV0OiAgICAgICBBIHN0cmlu
ZyBjb250YWluaW5nIHRoZSB0ZXN0IG91dHB1dC4KKyAgICBwYXR0ZXJuOiAgICAgICAgICAgQSBy
ZWdleCBzdHJpbmcgdGhhdCBtYXRjaGVzIG5hbWVzIG9mIHRlc3QgY2FzZXMgb3IKKyAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdHMgdG8gcmVtb3ZlLgorCisgIFJldHVybnM6CisgICAgQ29udGVu
dHMgb2YgdGVzdF9vdXRwdXQgd2l0aCB0ZXN0cyB3aG9zZSBuYW1lcyBtYXRjaCBwYXR0ZXJuIHJl
bW92ZWQuCisgICIiIgorCisgIHRlc3Rfb3V0cHV0ID0gcmUuc3ViKAorICAgICAgcicuKlxbIFJV
TiAgICAgIFxdIC4qJXMoLnxcbikqP1xbKCAgRkFJTEVEICB8ICAgICAgIE9LIClcXSAuKiVzLipc
bicgJSAoCisgICAgICAgICAgcGF0dGVybiwgcGF0dGVybiksCisgICAgICAnJywKKyAgICAgIHRl
c3Rfb3V0cHV0KQorICByZXR1cm4gcmUuc3ViKHInLiolcy4qXG4nICUgcGF0dGVybiwgJycsIHRl
c3Rfb3V0cHV0KQorCisKK2RlZiBOb3JtYWxpemVPdXRwdXQob3V0cHV0KToKKyAgIiIiTm9ybWFs
aXplcyBvdXRwdXQgKHRoZSBvdXRwdXQgb2YgZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uZXhlKS4i
IiIKKworICBvdXRwdXQgPSBUb1VuaXhMaW5lRW5kaW5nKG91dHB1dCkKKyAgb3V0cHV0ID0gUmVt
b3ZlTG9jYXRpb25zKG91dHB1dCkKKyAgb3V0cHV0ID0gUmVtb3ZlU3RhY2tUcmFjZURldGFpbHMo
b3V0cHV0KQorICBvdXRwdXQgPSBSZW1vdmVUaW1lKG91dHB1dCkKKyAgcmV0dXJuIG91dHB1dAor
CisKK2RlZiBHZXRTaGVsbENvbW1hbmRPdXRwdXQoZW52X2NtZCk6CisgICIiIlJ1bnMgYSBjb21t
YW5kIGluIGEgc3ViLXByb2Nlc3MsIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQgaW4gYSBzdHJpbmcu
CisKKyAgQXJnczoKKyAgICBlbnZfY21kOiBUaGUgc2hlbGwgY29tbWFuZC4gQSAyLXR1cGxlIHdo
ZXJlIGVsZW1lbnQgMCBpcyBhIGRpY3Qgb2YgZXh0cmEKKyAgICAgICAgICAgICBlbnZpcm9ubWVu
dCB2YXJpYWJsZXMgdG8gc2V0LCBhbmQgZWxlbWVudCAxIGlzIGEgc3RyaW5nIHdpdGgKKyAgICAg
ICAgICAgICB0aGUgY29tbWFuZCBhbmQgYW55IGZsYWdzLgorCisgIFJldHVybnM6CisgICAgQSBz
dHJpbmcgd2l0aCB0aGUgY29tbWFuZCdzIGNvbWJpbmVkIHN0YW5kYXJkIGFuZCBkaWFnbm9zdGlj
IG91dHB1dC4KKyAgIiIiCisKKyAgIyBTcGF3bnMgY21kIGluIGEgc3ViLXByb2Nlc3MsIGFuZCBn
ZXRzIGl0cyBzdGFuZGFyZCBJL08gZmlsZSBvYmplY3RzLgorICAjIFNldCBhbmQgc2F2ZSB0aGUg
ZW52aXJvbm1lbnQgcHJvcGVybHkuCisgIGVudmlyb24gPSBvcy5lbnZpcm9uLmNvcHkoKQorICBl
bnZpcm9uLnVwZGF0ZShlbnZfY21kWzBdKQorICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9j
ZXNzKGVudl9jbWRbMV0sIGVudj1lbnZpcm9uKQorCisgIHJldHVybiBwLm91dHB1dAorCisKK2Rl
ZiBHZXRDb21tYW5kT3V0cHV0KGVudl9jbWQpOgorICAiIiJSdW5zIGEgY29tbWFuZCBhbmQgcmV0
dXJucyBpdHMgb3V0cHV0IHdpdGggYWxsIGZpbGUgbG9jYXRpb24KKyAgaW5mbyBzdHJpcHBlZCBv
ZmYuCisKKyAgQXJnczoKKyAgICBlbnZfY21kOiAgVGhlIHNoZWxsIGNvbW1hbmQuIEEgMi10dXBs
ZSB3aGVyZSBlbGVtZW50IDAgaXMgYSBkaWN0IG9mIGV4dHJhCisgICAgICAgICAgICAgIGVudmly
b25tZW50IHZhcmlhYmxlcyB0byBzZXQsIGFuZCBlbGVtZW50IDEgaXMgYSBzdHJpbmcgd2l0aAor
ICAgICAgICAgICAgICB0aGUgY29tbWFuZCBhbmQgYW55IGZsYWdzLgorICAiIiIKKworICAjIERp
c2FibGVzIGV4Y2VwdGlvbiBwb3AtdXBzIG9uIFdpbmRvd3MuCisgIGVudmlyb24sIGNtZGxpbmUg
PSBlbnZfY21kCisgIGVudmlyb24gPSBkaWN0KGVudmlyb24pICAjIEVuc3VyZXMgd2UgYXJlIG1v
ZGlmeWluZyBhIGNvcHkuCisgIGVudmlyb25bQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSX05BTUVd
ID0gJzEnCisgIHJldHVybiBOb3JtYWxpemVPdXRwdXQoR2V0U2hlbGxDb21tYW5kT3V0cHV0KChl
bnZpcm9uLCBjbWRsaW5lKSkpCisKKworZGVmIEdldE91dHB1dE9mQWxsQ29tbWFuZHMoKToKKyAg
IiIiUmV0dXJucyBjb25jYXRlbmF0ZWQgb3V0cHV0IGZyb20gc2V2ZXJhbCByZXByZXNlbnRhdGl2
ZSBjb21tYW5kcy4iIiIKKworICByZXR1cm4gKEdldENvbW1hbmRPdXRwdXQoQ09NTUFORF9XSVRI
X0NPTE9SKSArCisgICAgICAgICAgR2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJVEhfVElNRSkg
KworICAgICAgICAgIEdldENvbW1hbmRPdXRwdXQoQ09NTUFORF9XSVRIX0RJU0FCTEVEKSArCisg
ICAgICAgICAgR2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJVEhfU0hBUkRJTkcpKQorCisKK3Rl
c3RfbGlzdCA9IEdldFNoZWxsQ29tbWFuZE91dHB1dChDT01NQU5EX0xJU1RfVEVTVFMpCitTVVBQ
T1JUU19ERUFUSF9URVNUUyA9ICdEZWF0aFRlc3QnIGluIHRlc3RfbGlzdAorU1VQUE9SVFNfVFlQ
RURfVEVTVFMgPSAnVHlwZWRUZXN0JyBpbiB0ZXN0X2xpc3QKK1NVUFBPUlRTX1RIUkVBRFMgPSAn
RXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCcgaW4gdGVzdF9saXN0CitTVVBQT1JUU19TVEFD
S19UUkFDRVMgPSBOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRyBub3QgaW4gc3lzLmFyZ3YKKwor
Q0FOX0dFTkVSQVRFX0dPTERFTl9GSUxFID0gKFNVUFBPUlRTX0RFQVRIX1RFU1RTIGFuZAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNVUFBPUlRTX1RZUEVEX1RFU1RTIGFuZAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNVUFBPUlRTX1RIUkVBRFMgYW5kCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU1VQUE9SVFNfU1RBQ0tfVFJBQ0VTKQorCitjbGFzcyBHVGVzdE91dHB1
dFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgIGRlZiBSZW1vdmVVbnN1cHBvcnRl
ZFRlc3RzKHNlbGYsIHRlc3Rfb3V0cHV0KToKKyAgICBpZiBub3QgU1VQUE9SVFNfREVBVEhfVEVT
VFM6CisgICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQs
ICdEZWF0aFRlc3QnKQorICAgIGlmIG5vdCBTVVBQT1JUU19UWVBFRF9URVNUUzoKKyAgICAgIHRl
c3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwgJ1R5cGVkVGVzdCcp
CisgICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdU
eXBlZERlYXRoVGVzdCcpCisgICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHMo
dGVzdF9vdXRwdXQsICdUeXBlUGFyYW1EZWF0aFRlc3QnKQorICAgIGlmIG5vdCBTVVBQT1JUU19U
SFJFQURTOgorICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0
cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFeHBlY3RGYWls
dXJlV2l0aFRocmVhZHNUZXN0JykKKyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdU
ZXN0cyh0ZXN0X291dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0JykKKyAgICAgIHRlc3Rfb3V0
cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnV29ya3NDb25jdXJyZW50bHknKQorICAgIGlmIG5vdCBT
VVBQT1JUU19TVEFDS19UUkFDRVM6CisgICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZVN0YWNrVHJh
Y2VzKHRlc3Rfb3V0cHV0KQorCisgICAgcmV0dXJuIHRlc3Rfb3V0cHV0CisKKyAgZGVmIHRlc3RP
dXRwdXQoc2VsZik6CisgICAgb3V0cHV0ID0gR2V0T3V0cHV0T2ZBbGxDb21tYW5kcygpCisKKyAg
ICBnb2xkZW5fZmlsZSA9IG9wZW4oR09MREVOX1BBVEgsICdyYicpCisgICAgIyBBIG1pcy1jb25m
aWd1cmVkIHNvdXJjZSBjb250cm9sIHN5c3RlbSBjYW4gY2F1c2UgXHIgYXBwZWFyIGluIEVPTAor
ICAgICMgc2VxdWVuY2VzIHdoZW4gd2UgcmVhZCB0aGUgZ29sZGVuIGZpbGUgaXJyZXNwZWN0aXZl
IG9mIGFuIG9wZXJhdGluZworICAgICMgc3lzdGVtIHVzZWQuIFRoZXJlZm9yZSwgd2UgbmVlZCB0
byBzdHJpcCB0aG9zZSBccidzIGZyb20gbmV3bGluZXMKKyAgICAjIHVuY29uZGl0aW9uYWxseS4K
KyAgICBnb2xkZW4gPSBUb1VuaXhMaW5lRW5kaW5nKGdvbGRlbl9maWxlLnJlYWQoKSkKKyAgICBn
b2xkZW5fZmlsZS5jbG9zZSgpCisKKyAgICAjIFdlIHdhbnQgdGhlIHRlc3QgdG8gcGFzcyByZWdh
cmRsZXNzIG9mIGNlcnRhaW4gZmVhdHVyZXMgYmVpbmcKKyAgICAjIHN1cHBvcnRlZCBvciBub3Qu
CisKKyAgICAjIFdlIHN0aWxsIGhhdmUgdG8gcmVtb3ZlIHR5cGUgbmFtZSBzcGVjaWZpY3MgaW4g
YWxsIGNhc2VzLgorICAgIG5vcm1hbGl6ZWRfYWN0dWFsID0gUmVtb3ZlVHlwZUluZm9EZXRhaWxz
KG91dHB1dCkKKyAgICBub3JtYWxpemVkX2dvbGRlbiA9IFJlbW92ZVR5cGVJbmZvRGV0YWlscyhn
b2xkZW4pCisKKyAgICBpZiBDQU5fR0VORVJBVEVfR09MREVOX0ZJTEU6CisgICAgICBzZWxmLmFz
c2VydEVxdWFsKG5vcm1hbGl6ZWRfZ29sZGVuLCBub3JtYWxpemVkX2FjdHVhbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgJ1xuJy5qb2luKGRpZmZsaWIudW5pZmllZF9kaWZmKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZF9nb2xkZW4uc3BsaXQoJ1xuJyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkX2FjdHVhbC5zcGxpdCgnXG4nKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdnb2xkZW4nLCAnYWN0dWFsJykpKQorICAgIGVsc2U6Cisg
ICAgICBub3JtYWxpemVkX2FjdHVhbCA9IE5vcm1hbGl6ZVRvQ3VycmVudFBsYXRmb3JtKAorICAg
ICAgICAgIFJlbW92ZVRlc3RDb3VudHMobm9ybWFsaXplZF9hY3R1YWwpKQorICAgICAgbm9ybWFs
aXplZF9nb2xkZW4gPSBOb3JtYWxpemVUb0N1cnJlbnRQbGF0Zm9ybSgKKyAgICAgICAgICBSZW1v
dmVUZXN0Q291bnRzKHNlbGYuUmVtb3ZlVW5zdXBwb3J0ZWRUZXN0cyhub3JtYWxpemVkX2dvbGRl
bikpKQorCisgICAgICAjIFRoaXMgY29kZSBpcyB2ZXJ5IGhhbmR5IHdoZW4gZGVidWdnaW5nIGdv
bGRlbiBmaWxlIGRpZmZlcmVuY2VzOgorICAgICAgaWYgb3MuZ2V0ZW52KCdERUJVR19HVEVTVF9P
VVRQVVRfVEVTVCcpOgorICAgICAgICBvcGVuKG9zLnBhdGguam9pbigKKyAgICAgICAgICAgIGd0
ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNlRGlyKCksCisgICAgICAgICAgICAnX2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3Rfbm9ybWFsaXplZF9hY3R1YWwudHh0JyksICd3YicpLndyaXRlKAorICAgICAg
ICAgICAgICAgIG5vcm1hbGl6ZWRfYWN0dWFsKQorICAgICAgICBvcGVuKG9zLnBhdGguam9pbigK
KyAgICAgICAgICAgIGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNlRGlyKCksCisgICAgICAgICAg
ICAnX2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rfbm9ybWFsaXplZF9nb2xkZW4udHh0JyksICd3Yicp
LndyaXRlKAorICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRfZ29sZGVuKQorCisgICAgICBzZWxm
LmFzc2VydEVxdWFsKG5vcm1hbGl6ZWRfZ29sZGVuLCBub3JtYWxpemVkX2FjdHVhbCkKKworCitp
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBpZiBOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxB
RyBpbiBzeXMuYXJndjoKKyAgICAjIHVuaXR0ZXN0Lm1haW4oKSBjYW4ndCBoYW5kbGUgdW5rbm93
biBmbGFncworICAgIHN5cy5hcmd2LnJlbW92ZShOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRykK
KworICBpZiBHRU5HT0xERU5fRkxBRyBpbiBzeXMuYXJndjoKKyAgICBpZiBDQU5fR0VORVJBVEVf
R09MREVOX0ZJTEU6CisgICAgICBvdXRwdXQgPSBHZXRPdXRwdXRPZkFsbENvbW1hbmRzKCkKKyAg
ICAgIGdvbGRlbl9maWxlID0gb3BlbihHT0xERU5fUEFUSCwgJ3diJykKKyAgICAgIGdvbGRlbl9m
aWxlLndyaXRlKG91dHB1dCkKKyAgICAgIGdvbGRlbl9maWxlLmNsb3NlKCkKKyAgICBlbHNlOgor
ICAgICAgbWVzc2FnZSA9ICgKKyAgICAgICAgICAiIiJVbmFibGUgdG8gd3JpdGUgYSBnb2xkZW4g
ZmlsZSB3aGVuIGNvbXBpbGVkIGluIGFuIGVudmlyb25tZW50Cit0aGF0IGRvZXMgbm90IHN1cHBv
cnQgYWxsIHRoZSByZXF1aXJlZCBmZWF0dXJlcyAoZGVhdGggdGVzdHMsCit0eXBlZCB0ZXN0cywg
c3RhY2sgdHJhY2VzLCBhbmQgbXVsdGlwbGUgdGhyZWFkcykuCitQbGVhc2UgYnVpbGQgdGhpcyB0
ZXN0IGFuZCBnZW5lcmF0ZSB0aGUgZ29sZGVuIGZpbGUgdXNpbmcgQmxhemUgb24gTGludXguIiIi
KQorCisgICAgICBzeXMuc3RkZXJyLndyaXRlKG1lc3NhZ2UpCisgICAgICBzeXMuZXhpdCgxKQor
ICBlbHNlOgorICAgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xODA2MzBlMjgyYjAzOGE3ZTk5YzZmMjMxNTIzNmYxMzgzZGE5MWE3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYwpAQCAtMCwwICsxLDExMDkgQEAKKy8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5j
LgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKy8vCisvLyBUaGUgcHVycG9zZSBvZiB0aGlzIGZpbGUgaXMgdG8gZ2Vu
ZXJhdGUgR29vZ2xlIFRlc3Qgb3V0cHV0IHVuZGVyCisvLyB2YXJpb3VzIGNvbmRpdGlvbnMuICBU
aGUgb3V0cHV0IHdpbGwgdGhlbiBiZSB2ZXJpZmllZCBieQorLy8gZ29vZ2xldGVzdC1vdXRwdXQt
dGVzdC5weSB0byBlbnN1cmUgdGhhdCBHb29nbGUgVGVzdCBnZW5lcmF0ZXMgdGhlCisvLyBkZXNp
cmVkIG1lc3NhZ2VzLiAgVGhlcmVmb3JlLCBtb3N0IHRlc3RzIGluIHRoaXMgZmlsZSBhcmUgTUVB
TlQgVE8KKy8vIEZBSUwuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKwor
I2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaWYgX01TQ19WRVIKKyAgR1RFU1RfRElTQUJMRV9NU0Nf
V0FSTklOR1NfUFVTSF8oNDEyNyAvKiBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50
ICovKQorI2VuZGlmICAvLyAuIF9NU0NfVkVSICAgIAorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FG
RQordXNpbmcgdGVzdGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI7Cit1c2lu
ZyB0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdEFycmF5OworCit1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6Tm90aWZpY2F0aW9uOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlRocmVhZFdpdGhQYXJh
bTsKKyNlbmRpZgorCituYW1lc3BhY2UgcG9zaXggPSA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3Np
eDsKKworLy8gVGVzdHMgY2F0Y2hpbmcgZmF0YWwgZmFpbHVyZXMuCisKKy8vIEEgc3Vicm91dGlu
ZSB1c2VkIGJ5IHRoZSBmb2xsb3dpbmcgdGVzdC4KK3ZvaWQgVGVzdEVxMShpbnQgeCkgeworICBB
U1NFUlRfRVEoMSwgeCk7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24gY2FsbHMgYSB0ZXN0IHN1YnJv
dXRpbmUsIGNhdGNoZXMgdGhlIGZhdGFsIGZhaWx1cmUgaXQKKy8vIGdlbmVyYXRlcywgYW5kIHRo
ZW4gcmV0dXJucyBlYXJseS4KK3ZvaWQgVHJ5VGVzdFN1YnJvdXRpbmUoKSB7CisgIC8vIENhbGxz
IGEgc3Vicm91bnRpbmUgdGhhdCB5aWVsZHMgYSBmYXRhbCBmYWlsdXJlLgorICBUZXN0RXExKDIp
OworCisgIC8vIENhdGNoZXMgdGhlIGZhdGFsIGZhaWx1cmUgYW5kIGFib3J0cyB0aGUgdGVzdC4K
KyAgLy8KKyAgLy8gVGhlIHRlc3Rpbmc6OlRlc3Q6OiBwcmVmaXggaXMgbmVjZXNzYXJ5IHdoZW4g
Y2FsbGluZworICAvLyBIYXNGYXRhbEZhaWx1cmUoKSBvdXRzaWRlIG9mIGEgVEVTVCwgVEVTVF9G
LCBvciB0ZXN0IGZpeHR1cmUuCisgIGlmICh0ZXN0aW5nOjpUZXN0OjpIYXNGYXRhbEZhaWx1cmUo
KSkgcmV0dXJuOworCisgIC8vIElmIHdlIGdldCBoZXJlLCBzb21ldGhpbmcgaXMgd3JvbmcuCisg
IEZBSUwoKSA8PCAiVGhpcyBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC4iOworfQorCitURVNUKFBh
c3NpbmdUZXN0LCBQYXNzaW5nVGVzdDEpIHsKK30KKworVEVTVChQYXNzaW5nVGVzdCwgUGFzc2lu
Z1Rlc3QyKSB7Cit9CisKKy8vIFRlc3RzIHRoYXQgcGFyYW1ldGVycyBvZiBmYWlsaW5nIHBhcmFt
ZXRlcml6ZWQgdGVzdHMgYXJlIHByaW50ZWQgaW4gdGhlCisvLyBmYWlsaW5nIHRlc3Qgc3VtbWFy
eS4KK2NsYXNzIEZhaWxpbmdQYXJhbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJh
bTxpbnQ+IHt9OworCitURVNUX1AoRmFpbGluZ1BhcmFtVGVzdCwgRmFpbHMpIHsKKyAgRVhQRUNU
X0VRKDEsIEdldFBhcmFtKCkpOworfQorCisvLyBUaGlzIGdlbmVyYXRlcyBhIHRlc3Qgd2hpY2gg
d2lsbCBmYWlsLiBHb29nbGUgVGVzdCBpcyBleHBlY3RlZCB0byBwcmludAorLy8gaXRzIHBhcmFt
ZXRlciB3aGVuIGl0IG91dHB1dHMgdGhlIGxpc3Qgb2YgYWxsIGZhaWxlZCB0ZXN0cy4KK0lOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QKFByaW50aW5nRmFpbGluZ1BhcmFtcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEZhaWxpbmdQYXJhbVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
aW5nOjpWYWx1ZXMoMikpOworCitzdGF0aWMgY29uc3QgY2hhciBrR29sZGVuU3RyaW5nW10gPSAi
XCJMaW5lXDAgMVwiXG5MaW5lIDIiOworCitURVNUKE5vbmZhdGFsRmFpbHVyZVRlc3QsIEVzY2Fw
ZXNTdHJpbmdPcGVyYW5kcykgeworICBzdGQ6OnN0cmluZyBhY3R1YWwgPSAiYWN0dWFsIFwic3Ry
aW5nXCIiOworICBFWFBFQ1RfRVEoa0dvbGRlblN0cmluZywgYWN0dWFsKTsKKworICBjb25zdCBj
aGFyKiBnb2xkZW4gPSBrR29sZGVuU3RyaW5nOworICBFWFBFQ1RfRVEoZ29sZGVuLCBhY3R1YWwp
OworfQorCitURVNUKE5vbmZhdGFsRmFpbHVyZVRlc3QsIERpZmZGb3JMb25nU3RyaW5ncykgewor
ICBzdGQ6OnN0cmluZyBnb2xkZW5fc3RyKGtHb2xkZW5TdHJpbmcsIHNpemVvZihrR29sZGVuU3Ry
aW5nKSAtIDEpOworICBFWFBFQ1RfRVEoZ29sZGVuX3N0ciwgIkxpbmUgMiIpOworfQorCisvLyBU
ZXN0cyBjYXRjaGluZyBhIGZhdGFsIGZhaWx1cmUgaW4gYSBzdWJyb3V0aW5lLgorVEVTVChGYXRh
bEZhaWx1cmVUZXN0LCBGYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUpIHsKKyAgcHJpbnRmKCIoZXhw
ZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpXG4iKTsKKworICBUcnlUZXN0U3Vi
cm91dGluZSgpOworfQorCisvLyBUZXN0cyBjYXRjaGluZyBhIGZhdGFsIGZhaWx1cmUgaW4gYSBu
ZXN0ZWQgc3Vicm91dGluZS4KK1RFU1QoRmF0YWxGYWlsdXJlVGVzdCwgRmF0YWxGYWlsdXJlSW5O
ZXN0ZWRTdWJyb3V0aW5lKSB7CisgIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4
IHNob3VsZCBiZSAxKVxuIik7CisKKyAgLy8gQ2FsbHMgYSBzdWJyb3VudGluZSB0aGF0IHlpZWxk
cyBhIGZhdGFsIGZhaWx1cmUuCisgIFRyeVRlc3RTdWJyb3V0aW5lKCk7CisKKyAgLy8gQ2F0Y2hl
cyB0aGUgZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSB0ZXN0LgorICAvLworICAvLyBXaGVu
IGNhbGxpbmcgSGFzRmF0YWxGYWlsdXJlKCkgaW5zaWRlIGEgVEVTVCwgVEVTVF9GLCBvciB0ZXN0
CisgIC8vIGZpeHR1cmUsIHRoZSB0ZXN0aW5nOjpUZXN0OjogcHJlZml4IGlzIG5vdCBuZWVkZWQu
CisgIGlmIChIYXNGYXRhbEZhaWx1cmUoKSkgcmV0dXJuOworCisgIC8vIElmIHdlIGdldCBoZXJl
LCBzb21ldGhpbmcgaXMgd3JvbmcuCisgIEZBSUwoKSA8PCAiVGhpcyBzaG91bGQgbmV2ZXIgYmUg
cmVhY2hlZC4iOworfQorCisvLyBUZXN0cyBIYXNGYXRhbEZhaWx1cmUoKSBhZnRlciBhIGZhaWxl
ZCBFWFBFQ1QgY2hlY2suCitURVNUKEZhdGFsRmFpbHVyZVRlc3QsIE5vbmZhdGFsRmFpbHVyZUlu
U3Vicm91dGluZSkgeworICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlIG9uIGZhbHNlKVxu
Iik7CisgIEVYUEVDVF9UUlVFKGZhbHNlKTsgIC8vIEdlbmVyYXRlcyBhIG5vbmZhdGFsIGZhaWx1
cmUKKyAgQVNTRVJUX0ZBTFNFKEhhc0ZhdGFsRmFpbHVyZSgpKTsgIC8vIFRoaXMgc2hvdWxkIHN1
Y2NlZWQuCit9CisKKy8vIFRlc3RzIGludGVybGVhdmluZyB1c2VyIGxvZ2dpbmcgYW5kIEdvb2ds
ZSBUZXN0IGFzc2VydGlvbnMuCitURVNUKExvZ2dpbmdUZXN0LCBJbnRlcmxlYXZpbmdMb2dnaW5n
QW5kQXNzZXJ0aW9ucykgeworICBzdGF0aWMgY29uc3QgaW50IGFbNF0gPSB7CisgICAgMywgOSwg
MiwgNgorICB9OworCisgIHByaW50ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzIG9uICgzKSA+PSAo
YVtpXSkpXG4iKTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihhKS9zaXplb2YoKmEpKTsgaSsrKSB7CisgICAgcHJpbnRmKCJpID09ICVkXG4iLCBpKTsKKyAg
ICBFWFBFQ1RfR0UoMywgYVtpXSk7CisgIH0KK30KKworLy8gVGVzdHMgdGhlIFNDT1BFRF9UUkFD
RSBtYWNyby4KKworLy8gQSBoZWxwZXIgZnVuY3Rpb24gZm9yIHRlc3RpbmcgU0NPUEVEX1RSQUNF
Lgordm9pZCBTdWJXaXRob3V0VHJhY2UoaW50IG4pIHsKKyAgRVhQRUNUX0VRKDEsIG4pOworICBB
U1NFUlRfRVEoMiwgbik7Cit9CisKKy8vIEFub3RoZXIgaGVscGVyIGZ1bmN0aW9uIGZvciB0ZXN0
aW5nIFNDT1BFRF9UUkFDRS4KK3ZvaWQgU3ViV2l0aFRyYWNlKGludCBuKSB7CisgIFNDT1BFRF9U
UkFDRSh0ZXN0aW5nOjpNZXNzYWdlKCkgPDwgIm4gPSAiIDw8IG4pOworCisgIFN1YldpdGhvdXRU
cmFjZShuKTsKK30KKworVEVTVChTQ09QRURfVFJBQ0VUZXN0LCBBY2NlcHRlZFZhbHVlcykgewor
ICBTQ09QRURfVFJBQ0UoImxpdGVyYWwgc3RyaW5nIik7CisgIFNDT1BFRF9UUkFDRShzdGQ6OnN0
cmluZygic3RkOjpzdHJpbmciKSk7CisgIFNDT1BFRF9UUkFDRSgxMzM3KTsgIC8vIHN0cmVhbWFi
bGUgdHlwZQorICBjb25zdCBjaGFyKiBudWxsX3ZhbHVlID0gTlVMTDsKKyAgU0NPUEVEX1RSQUNF
KG51bGxfdmFsdWUpOworCisgIEFERF9GQUlMVVJFKCkgPDwgIkp1c3QgY2hlY2tpbmcgdGhhdCBh
bGwgdGhlc2UgdmFsdWVzIHdvcmsgZmluZS4iOworfQorCisvLyBUZXN0cyB0aGF0IFNDT1BFRF9U
UkFDRSgpIG9iZXlzIGxleGljYWwgc2NvcGVzLgorVEVTVChTQ09QRURfVFJBQ0VUZXN0LCBPYmV5
c1Njb3BlcykgeworICBwcmludGYoIihleHBlY3RlZCB0byBmYWlsKVxuIik7CisKKyAgLy8gVGhl
cmUgc2hvdWxkIGJlIG5vIHRyYWNlIGJlZm9yZSBTQ09QRURfVFJBQ0UoKSBpcyBpbnZva2VkLgor
ICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGRu
J3QgaGF2ZSBhIHRyYWNlLiI7CisKKyAgeworICAgIFNDT1BFRF9UUkFDRSgiRXhwZWN0ZWQgdHJh
Y2UiKTsKKyAgICAvLyBBZnRlciBTQ09QRURfVFJBQ0UoKSwgYSBmYWlsdXJlIGluIHRoZSBjdXJy
ZW50IHNjb3BlIHNob3VsZCBjb250YWluCisgICAgLy8gdGhlIHRyYWNlLgorICAgIEFERF9GQUlM
VVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBoYXZlIGEgdHJh
Y2UuIjsKKyAgfQorCisgIC8vIE9uY2UgdGhlIGNvbnRyb2wgbGVhdmVzIHRoZSBzY29wZSBvZiB0
aGUgU0NPUEVEX1RSQUNFKCksIHRoZXJlCisgIC8vIHNob3VsZCBiZSBubyB0cmFjZSBhZ2Fpbi4K
KyAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxk
bid0IGhhdmUgYSB0cmFjZS4iOworfQorCisvLyBUZXN0cyB0aGF0IFNDT1BFRF9UUkFDRSB3b3Jr
cyBpbnNpZGUgYSBsb29wLgorVEVTVChTQ09QRURfVFJBQ0VUZXN0LCBXb3Jrc0luTG9vcCkgewor
ICBwcmludGYoIihleHBlY3RlZCB0byBmYWlsKVxuIik7CisKKyAgZm9yIChpbnQgaSA9IDE7IGkg
PD0gMjsgaSsrKSB7CisgICAgU0NPUEVEX1RSQUNFKHRlc3Rpbmc6Ok1lc3NhZ2UoKSA8PCAiaSA9
ICIgPDwgaSk7CisKKyAgICBTdWJXaXRob3V0VHJhY2UoaSk7CisgIH0KK30KKworLy8gVGVzdHMg
dGhhdCBTQ09QRURfVFJBQ0Ugd29ya3MgaW4gYSBzdWJyb3V0aW5lLgorVEVTVChTQ09QRURfVFJB
Q0VUZXN0LCBXb3Jrc0luU3Vicm91dGluZSkgeworICBwcmludGYoIihleHBlY3RlZCB0byBmYWls
KVxuIik7CisKKyAgU3ViV2l0aFRyYWNlKDEpOworICBTdWJXaXRoVHJhY2UoMik7Cit9CisKKy8v
IFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFIGNhbiBiZSBuZXN0ZWQuCitURVNUKFNDT1BFRF9UUkFD
RVRlc3QsIENhbkJlTmVzdGVkKSB7CisgIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsK
KworICBTQ09QRURfVFJBQ0UoIiIpOyAgLy8gQSB0cmFjZSB3aXRob3V0IGEgbWVzc2FnZS4KKwor
ICBTdWJXaXRoVHJhY2UoMik7Cit9CisKKy8vIFRlc3RzIHRoYXQgbXVsdGlwbGUgU0NPUEVEX1RS
QUNFcyBjYW4gYmUgdXNlZCBpbiB0aGUgc2FtZSBzY29wZS4KK1RFU1QoU0NPUEVEX1RSQUNFVGVz
dCwgQ2FuQmVSZXBlYXRlZCkgeworICBwcmludGYoIihleHBlY3RlZCB0byBmYWlsKVxuIik7CisK
KyAgU0NPUEVEX1RSQUNFKCJBIik7CisgIEFERF9GQUlMVVJFKCkKKyAgICAgIDw8ICJUaGlzIGZh
aWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLiI7CisK
KyAgU0NPUEVEX1RSQUNFKCJCIik7CisgIEFERF9GQUlMVVJFKCkKKyAgICAgIDw8ICJUaGlzIGZh
aWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBIGFuZCBC
LiI7CisKKyAgeworICAgIFNDT1BFRF9UUkFDRSgiQyIpOworICAgIEFERF9GQUlMVVJFKCkgPDwg
IlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCAiCisgICAgICAgICAgICAgICAg
ICA8PCAiY29udGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQgQy4iOworICB9CisKKyAgU0NPUEVE
X1RSQUNFKCJEIik7CisgIEFERF9GQUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZCwgYW5kIHNob3VsZCAiCisgICAgICAgICAgICAgICAgPDwgImNvbnRhaW4gdHJhY2UgcG9pbnQg
QSwgQiwgYW5kIEQuIjsKK30KKworI2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKKy8vIFRlc3RzIHRo
YXQgU0NPUEVEX1RSQUNFKClzIGNhbiBiZSB1c2VkIGNvbmN1cnJlbnRseSBmcm9tIG11bHRpcGxl
CisvLyB0aHJlYWRzLiAgTmFtZWx5LCBhbiBhc3NlcnRpb24gc2hvdWxkIGJlIGFmZmVjdGVkIGJ5
CisvLyBTQ09QRURfVFJBQ0UoKXMgaW4gaXRzIG93biB0aHJlYWQgb25seS4KKworLy8gSGVyZSdz
IHRoZSBzZXF1ZW5jZSBvZiBhY3Rpb25zIHRoYXQgaGFwcGVuIGluIHRoZSB0ZXN0OgorLy8KKy8v
ICAgVGhyZWFkIEEgKG1haW4pICAgICAgICAgICAgICAgIHwgVGhyZWFkIEIgKHNwYXduZWQpCisv
LyAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT18PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KKy8vICAgc3Bhd25zIHRocmVhZCBCICAgICAgICAgICAgICAgIHwKKy8vICAg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8gICB3YWl0cyBmb3IgbjEgICAgICAgICAgICAgICAgICAgfCBTQ09QRURfVFJB
Q0UoIlRyYWNlIEIiKTsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2Vu
ZXJhdGVzIGZhaWx1cmUgIzEKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
bm90aWZpZXMgbjEKKy8vICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICBTQ09QRURfVFJBQ0UoIlRyYWNlIEEiKTsg
ICAgICAgfCB3YWl0cyBmb3IgbjIKKy8vICAgZ2VuZXJhdGVzIGZhaWx1cmUgIzIgICAgICAgICAg
IHwKKy8vICAgbm90aWZpZXMgbjIgICAgICAgICAgICAgICAgICAgIHwKKy8vICAgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8gICB3YWl0cyBmb3IgbjMgICAgICAgICAgICAgICAgICAgfCBnZW5lcmF0ZXMgZmFpbHVyZSAj
MworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0cmFjZSBCIGRpZXMKKy8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2VuZXJhdGVzIGZhaWx1cmUgIzQK
Ky8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbm90aWZpZXMgbjMKKy8vICAg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8gICBnZW5lcmF0ZXMgZmFpbHVyZSAjNSAgICAgICAgICAgfCBmaW5pc2hlcwor
Ly8gICB0cmFjZSBBIGRpZXMgICAgICAgICAgICAgICAgICAgfAorLy8gICBnZW5lcmF0ZXMgZmFp
bHVyZSAjNiAgICAgICAgICAgfAorLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIHdhaXRzIGZvciB0aHJlYWQg
QiB0byBmaW5pc2ggICB8CisKK3N0cnVjdCBDaGVja1BvaW50cyB7CisgIE5vdGlmaWNhdGlvbiBu
MTsKKyAgTm90aWZpY2F0aW9uIG4yOworICBOb3RpZmljYXRpb24gbjM7Cit9OworCitzdGF0aWMg
dm9pZCBUaHJlYWRXaXRoU2NvcGVkVHJhY2UoQ2hlY2tQb2ludHMqIGNoZWNrX3BvaW50cykgewor
ICB7CisgICAgU0NPUEVEX1RSQUNFKCJUcmFjZSBCIik7CisgICAgQUREX0ZBSUxVUkUoKQorICAg
ICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSAoaW4gdGhyZWFkIEIsIG9ubHkgdHJhY2UgQiBh
bGl2ZSkuIjsKKyAgICBjaGVja19wb2ludHMtPm4xLk5vdGlmeSgpOworICAgIGNoZWNrX3BvaW50
cy0+bjIuV2FpdEZvck5vdGlmaWNhdGlvbigpOworCisgICAgQUREX0ZBSUxVUkUoKQorICAgICAg
ICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMyAoaW4gdGhyZWFkIEIsIHRyYWNlIEEgJiBCIGJvdGgg
YWxpdmUpLiI7CisgIH0gIC8vIFRyYWNlIEIgZGllcyBoZXJlLgorICBBRERfRkFJTFVSRSgpCisg
ICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNCAoaW4gdGhyZWFkIEIsIG9ubHkgdHJhY2UgQSBh
bGl2ZSkuIjsKKyAgY2hlY2tfcG9pbnRzLT5uMy5Ob3RpZnkoKTsKK30KKworVEVTVChTQ09QRURf
VFJBQ0VUZXN0LCBXb3Jrc0NvbmN1cnJlbnRseSkgeworICBwcmludGYoIihleHBlY3RpbmcgNiBm
YWlsdXJlcylcbiIpOworCisgIENoZWNrUG9pbnRzIGNoZWNrX3BvaW50czsKKyAgVGhyZWFkV2l0
aFBhcmFtPENoZWNrUG9pbnRzKj4gdGhyZWFkKCZUaHJlYWRXaXRoU2NvcGVkVHJhY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2hlY2tfcG9pbnRzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgIGNoZWNrX3BvaW50cy5u
MS5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7CisKKyAgeworICAgIFNDT1BFRF9UUkFDRSgiVHJhY2Ug
QSIpOworICAgIEFERF9GQUlMVVJFKCkKKyAgICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIg
KGluIHRocmVhZCBBLCB0cmFjZSBBICYgQiBib3RoIGFsaXZlKS4iOworICAgIGNoZWNrX3BvaW50
cy5uMi5Ob3RpZnkoKTsKKyAgICBjaGVja19wb2ludHMubjMuV2FpdEZvck5vdGlmaWNhdGlvbigp
OworCisgICAgQUREX0ZBSUxVUkUoKQorICAgICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNSAo
aW4gdGhyZWFkIEEsIG9ubHkgdHJhY2UgQSBhbGl2ZSkuIjsKKyAgfSAgLy8gVHJhY2UgQSBkaWVz
IGhlcmUuCisgIEFERF9GQUlMVVJFKCkKKyAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM2IChp
biB0aHJlYWQgQSwgbm8gdHJhY2UgYWxpdmUpLiI7CisgIHRocmVhZC5Kb2luKCk7Cit9CisjZW5k
aWYgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUKKworLy8gVGVzdHMgYmFzaWMgZnVuY3Rpb25hbGl0
eSBvZiB0aGUgU2NvcGVkVHJhY2UgdXRpbGl0eSAobW9zdCBvZiBpdHMgZmVhdHVyZXMKKy8vIGFy
ZSBhbHJlYWR5IHRlc3RlZCBpbiBTQ09QRURfVFJBQ0VUZXN0KS4KK1RFU1QoU2NvcGVkVHJhY2VU
ZXN0LCBXaXRoRXhwbGljaXRGaWxlQW5kTGluZSkgeworICB0ZXN0aW5nOjpTY29wZWRUcmFjZSB0
cmFjZSgiZXhwbGljaXRfZmlsZS5jYyIsIDEyMywgImV4cGVjdGVkIHRyYWNlIG1lc3NhZ2UiKTsK
KyAgQUREX0ZBSUxVUkUoKSA8PCAiQ2hlY2sgdGhhdCB0aGUgdHJhY2UgaXMgYXR0YWNoZWQgdG8g
YSBwYXJ0aWN1bGFyIGxvY2F0aW9uLiI7Cit9CisKK1RFU1QoRGlzYWJsZWRUZXN0c1dhcm5pbmdU
ZXN0LAorICAgICBESVNBQkxFRF9BbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2Fy
bmluZykgeworICAvLyBUaGlzIHRlc3QgYm9keSBpcyBpbnRlbnRpb25hbGx5IGVtcHR5LiAgSXRz
IHNvbGUgcHVycG9zZSBpcyBmb3IKKyAgLy8gdmVyaWZ5aW5nIHRoYXQgdGhlIC0tZ3Rlc3RfYWxz
b19ydW5fZGlzYWJsZWRfdGVzdHMgZmxhZworICAvLyBzdXBwcmVzc2VzIHRoZSAiWU9VIEhBVkUg
MTIgRElTQUJMRUQgVEVTVFMiIHdhcm5pbmcgYXQgdGhlIGVuZCBvZgorICAvLyB0aGUgdGVzdCBv
dXRwdXQuCit9CisKKy8vIFRlc3RzIHVzaW5nIGFzc2VydGlvbnMgb3V0c2lkZSBvZiBURVNUIGFu
ZCBURVNUX0YuCisvLworLy8gVGhpcyBmdW5jdGlvbiBjcmVhdGVzIHR3byBmYWlsdXJlcyBpbnRl
bnRpb25hbGx5Lgordm9pZCBBZEhvY1Rlc3QoKSB7CisgIHByaW50ZigiVGhlIG5vbi10ZXN0IHBh
cnQgb2YgdGhlIGNvZGUgaXMgZXhwZWN0ZWQgdG8gaGF2ZSAyIGZhaWx1cmVzLlxuXG4iKTsKKyAg
RVhQRUNUX1RSVUUoZmFsc2UpOworICBFWFBFQ1RfRVEoMiwgMyk7Cit9CisKKy8vIFJ1bnMgYWxs
IFRFU1RzLCBhbGwgVEVTVF9GcywgYW5kIHRoZSBhZCBob2MgdGVzdC4KK2ludCBSdW5BbGxUZXN0
cygpIHsKKyAgQWRIb2NUZXN0KCk7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CisKKy8v
IFRlc3RzIG5vbi1mYXRhbCBmYWlsdXJlcyBpbiB0aGUgZml4dHVyZSBjb25zdHJ1Y3Rvci4KK2Ns
YXNzIE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0
cnVjdG9yVGVzdCgpIHsKKyAgICBwcmludGYoIihleHBlY3RpbmcgNSBmYWlsdXJlcylcbiIpOwor
ICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0IGZp
eHR1cmUgYyd0b3IuIjsKKyAgfQorCisgIH5Ob25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1
Y3RvclRlc3QoKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNSwg
aW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4iOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNldFVw
KCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFNldFVw
KCkuIjsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBBRERfRkFJTFVS
RSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM0LCBpbiBUZWFyRG93bi4iOworICB9Cit9OworCitU
RVNUX0YoTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LCBGYWlsdXJlSW5D
b25zdHJ1Y3RvcikgeworICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzLCBp
biB0aGUgdGVzdCBib2R5LiI7Cit9CisKKy8vIFRlc3RzIGZhdGFsIGZhaWx1cmVzIGluIHRoZSBm
aXh0dXJlIGNvbnN0cnVjdG9yLgorY2xhc3MgRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0
b3JUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgRmF0YWxGYWls
dXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0KCkgeworICAgIHByaW50ZigiKGV4cGVjdGluZyAy
IGZhaWx1cmVzKVxuIik7CisgICAgSW5pdCgpOworICB9CisKKyAgfkZhdGFsRmFpbHVyZUluRml4
dHVyZUNvbnN0cnVjdG9yVGVzdCgpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBm
YWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLiI7CisgIH0KKworICB2aXJ0dWFs
IHZvaWQgU2V0VXAoKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJl
IGluIFNldFVwKCkuICAiCisgICAgICAgICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdl
dCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yICIKKyAgICAgICAgICAgICAgICAgIDw8
ICJoYWQgYSBmYXRhbCBmYWlsdXJlLiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24o
KSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIFRlYXJEb3du
KCkuICAiCisgICAgICAgICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBh
cyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yICIKKyAgICAgICAgICAgICAgICAgIDw8ICJoYWQgYSBm
YXRhbCBmYWlsdXJlLiI7CisgIH0KKworIHByaXZhdGU6CisgIHZvaWQgSW5pdCgpIHsKKyAgICBG
QUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3Iu
IjsKKyAgfQorfTsKKworVEVTVF9GKEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVz
dCwgRmFpbHVyZUluQ29uc3RydWN0b3IpIHsKKyAgQUREX0ZBSUxVUkUoKSA8PCAiVU5FWFBFQ1RF
RCBmYWlsdXJlIGluIHRoZSB0ZXN0IGJvZHkuICAiCisgICAgICAgICAgICAgICAgPDwgIldlIHNo
b3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciAiCisgICAgICAg
ICAgICAgICAgPDwgImhhZCBhIGZhdGFsIGZhaWx1cmUuIjsKK30KKworLy8gVGVzdHMgbm9uLWZh
dGFsIGZhaWx1cmVzIGluIFNldFVwKCkuCitjbGFzcyBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgfk5vbkZh
dGFsRmFpbHVyZUluU2V0VXBUZXN0KCkgeworICAgIERlaW5pdCgpOworICB9CisKKyAgdmlydHVh
bCB2b2lkIFNldFVwKCkgeworICAgIHByaW50ZigiKGV4cGVjdGluZyA0IGZhaWx1cmVzKVxuIik7
CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gU2V0VXAoKS4i
OworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIEZBSUwoKSA8PCAiRXhw
ZWN0ZWQgZmFpbHVyZSAjMywgaW4gVGVhckRvd24oKS4iOworICB9CisgcHJpdmF0ZToKKyAgdm9p
ZCBEZWluaXQoKSB7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM0LCBpbiB0aGUg
dGVzdCBmaXh0dXJlIGQndG9yLiI7CisgIH0KK307CisKK1RFU1RfRihOb25GYXRhbEZhaWx1cmVJ
blNldFVwVGVzdCwgRmFpbHVyZUluU2V0VXApIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWls
dXJlICMyLCBpbiB0aGUgdGVzdCBmdW5jdGlvbi4iOworfQorCisvLyBUZXN0cyBmYXRhbCBmYWls
dXJlcyBpbiBTZXRVcCgpLgorY2xhc3MgRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIH5GYXRhbEZhaWx1cmVJblNl
dFVwVGVzdCgpIHsKKyAgICBEZWluaXQoKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgp
IHsKKyAgICBwcmludGYoIihleHBlY3RpbmcgMyBmYWlsdXJlcylcbiIpOworICAgIEZBSUwoKSA8
PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gU2V0VXAoKS4iOworICB9CisKKyAgdmlydHVhbCB2
b2lkIFRlYXJEb3duKCkgeworICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4g
VGVhckRvd24oKS4iOworICB9CisgcHJpdmF0ZToKKyAgdm9pZCBEZWluaXQoKSB7CisgICAgRkFJ
TCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLiI7
CisgIH0KK307CisKK1RFU1RfRihGYXRhbEZhaWx1cmVJblNldFVwVGVzdCwgRmFpbHVyZUluU2V0
VXApIHsKKyAgRkFJTCgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gdGhlIHRlc3QgZnVuY3Rp
b24uICAiCisgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyBTZXRVcCgp
IGZhaWxlZC4iOworfQorCitURVNUKEFkZEZhaWx1cmVBdFRlc3QsIE1lc3NhZ2VDb250YWluc1Nw
ZWNpZmllZEZpbGVBbmRMaW5lTnVtYmVyKSB7CisgIEFERF9GQUlMVVJFX0FUKCJmb28uY2MiLCA0
MikgPDwgIkV4cGVjdGVkIGZhaWx1cmUgaW4gZm9vLmNjIjsKK30KKworI2lmIEdURVNUX0lTX1RI
UkVBRFNBRkUKKworLy8gQSB1bmFyeSBmdW5jdGlvbiB0aGF0IG1heSBkaWUuCit2b2lkIERpZUlm
KGJvb2wgc2hvdWxkX2RpZSkgeworICBHVEVTVF9DSEVDS18oIXNob3VsZF9kaWUpIDw8ICIgLSBk
ZWF0aCBpbnNpZGUgRGllSWYoKS4iOworfQorCisvLyBUZXN0cyBydW5uaW5nIGRlYXRoIHRlc3Rz
IGluIGEgbXVsdGktdGhyZWFkZWQgY29udGV4dC4KKworLy8gVXNlZCBmb3IgY29vcmRpbmF0aW9u
IGJldHdlZW4gdGhlIG1haW4gYW5kIHRoZSBzcGF3biB0aHJlYWQuCitzdHJ1Y3QgU3Bhd25UaHJl
YWROb3RpZmljYXRpb25zIHsKKyAgU3Bhd25UaHJlYWROb3RpZmljYXRpb25zKCkge30KKworICBO
b3RpZmljYXRpb24gc3Bhd25fdGhyZWFkX3N0YXJ0ZWQ7CisgIE5vdGlmaWNhdGlvbiBzcGF3bl90
aHJlYWRfb2tfdG9fdGVybWluYXRlOworCisgcHJpdmF0ZToKKyAgR1RFU1RfRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOXyhTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMpOworfTsKKworLy8gVGhlIGZ1
bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIGluIHRoZSB0aHJlYWQgc3Bhd24gYnkgdGhlCisvLyBNdWx0
aXBsZVRocmVhZHMgdGVzdCAoYmVsb3cpLgorc3RhdGljIHZvaWQgVGhyZWFkUm91dGluZShTcGF3
blRocmVhZE5vdGlmaWNhdGlvbnMqIG5vdGlmaWNhdGlvbnMpIHsKKyAgLy8gU2lnbmFscyB0aGUg
bWFpbiB0aHJlYWQgdGhhdCB0aGlzIHRocmVhZCBoYXMgc3RhcnRlZC4KKyAgbm90aWZpY2F0aW9u
cy0+c3Bhd25fdGhyZWFkX3N0YXJ0ZWQuTm90aWZ5KCk7CisKKyAgLy8gV2FpdHMgZm9yIHBlcm1p
c3Npb24gdG8gZmluaXNoIGZyb20gdGhlIG1haW4gdGhyZWFkLgorICBub3RpZmljYXRpb25zLT5z
cGF3bl90aHJlYWRfb2tfdG9fdGVybWluYXRlLldhaXRGb3JOb3RpZmljYXRpb24oKTsKK30KKwor
Ly8gVGhpcyBpcyBhIGRlYXRoLXRlc3QgdGVzdCwgYnV0IGl0J3Mgbm90IG5hbWVkIHdpdGggYSBE
ZWF0aFRlc3QKKy8vIHN1ZmZpeC4gIEl0IHN0YXJ0cyB0aHJlYWRzIHdoaWNoIG1pZ2h0IGludGVy
ZmVyZSB3aXRoIGxhdGVyCisvLyBkZWF0aCB0ZXN0cywgc28gaXQgbXVzdCBydW4gYWZ0ZXIgYWxs
IG90aGVyIGRlYXRoIHRlc3RzLgorY2xhc3MgRGVhdGhUZXN0QW5kTXVsdGlUaHJlYWRzVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIC8vIFN0YXJ0cyBhIHRocmVh
ZCBhbmQgd2FpdHMgZm9yIGl0IHRvIGJlZ2luLgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Cisg
ICAgdGhyZWFkXy5yZXNldChuZXcgVGhyZWFkV2l0aFBhcmFtPFNwYXduVGhyZWFkTm90aWZpY2F0
aW9ucyo+KAorICAgICAgICAmVGhyZWFkUm91dGluZSwgJm5vdGlmaWNhdGlvbnNfLCBOVUxMKSk7
CisgICAgbm90aWZpY2F0aW9uc18uc3Bhd25fdGhyZWFkX3N0YXJ0ZWQuV2FpdEZvck5vdGlmaWNh
dGlvbigpOworICB9CisgIC8vIFRlbGxzIHRoZSB0aHJlYWQgdG8gZmluaXNoLCBhbmQgcmVhcHMg
aXQuCisgIC8vIERlcGVuZGluZyBvbiB0aGUgdmVyc2lvbiBvZiB0aGUgdGhyZWFkIGxpYnJhcnkg
aW4gdXNlLAorICAvLyBhIG1hbmFnZXIgdGhyZWFkIG1pZ2h0IHN0aWxsIGJlIGxlZnQgcnVubmlu
ZyB0aGF0IHdpbGwgaW50ZXJmZXJlCisgIC8vIHdpdGggbGF0ZXIgZGVhdGggdGVzdHMuICBUaGlz
IGlzIHVuZm9ydHVuYXRlLCBidXQgdGhpcyBjbGFzcworICAvLyBjbGVhbnMgdXAgYWZ0ZXIgaXRz
ZWxmIGFzIGJlc3QgaXQgY2FuLgorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgbm90
aWZpY2F0aW9uc18uc3Bhd25fdGhyZWFkX29rX3RvX3Rlcm1pbmF0ZS5Ob3RpZnkoKTsKKyAgfQor
CisgcHJpdmF0ZToKKyAgU3Bhd25UaHJlYWROb3RpZmljYXRpb25zIG5vdGlmaWNhdGlvbnNfOwor
ICB0ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVkX3B0cjxUaHJlYWRXaXRoUGFyYW08U3Bhd25UaHJl
YWROb3RpZmljYXRpb25zKj4gPgorICAgICAgdGhyZWFkXzsKK307CisKKyNlbmRpZiAgLy8gR1RF
U1RfSVNfVEhSRUFEU0FGRQorCisvLyBUaGUgTWl4ZWRVcFRlc3RDYXNlVGVzdCB0ZXN0IGNhc2Ug
dmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCB3aWxsIGZhaWwgYQorLy8gdGVzdCBpZiBpdCB1c2Vz
IGEgZGlmZmVyZW50IGZpeHR1cmUgY2xhc3MgdGhhbiB3aGF0IG90aGVyIHRlc3RzIGluCisvLyB0
aGUgc2FtZSB0ZXN0IGNhc2UgdXNlLiAgSXQgZGVsaWJlcmF0ZWx5IGNvbnRhaW5zIHR3byBmaXh0
dXJlCisvLyBjbGFzc2VzIHdpdGggdGhlIHNhbWUgbmFtZSBidXQgZGVmaW5lZCBpbiBkaWZmZXJl
bnQgbmFtZXNwYWNlcy4KKworLy8gVGhlIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVU
ZXN0IHRlc3QgY2FzZSB2ZXJpZmllcyB0aGF0CisvLyB3aGVuIHRoZSB1c2VyIGRlZmluZXMgdHdv
IHRlc3RzIHdpdGggdGhlIHNhbWUgdGVzdCBjYXNlIG5hbWUgQU5ECisvLyBzYW1lIHRlc3QgbmFt
ZSAoYnV0IGluIGRpZmZlcmVudCBuYW1lc3BhY2VzKSwgdGhlIHNlY29uZCB0ZXN0IHdpbGwKKy8v
IGZhaWwuCisKK25hbWVzcGFjZSBmb28geworCitjbGFzcyBNaXhlZFVwVGVzdENhc2VUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKworVEVTVF9GKE1peGVkVXBUZXN0Q2FzZVRlc3Qs
IEZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28pIHt9CitURVNUX0YoTWl4ZWRVcFRlc3RDYXNlVGVz
dCwgU2Vjb25kVGVzdEZyb21OYW1lc3BhY2VGb28pIHt9CisKK2NsYXNzIE1peGVkVXBUZXN0Q2Fz
ZVdpdGhTYW1lVGVzdE5hbWVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKworVEVT
VF9GKE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAorICAgICAgIFRoZVNlY29u
ZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsKSB7fQorCit9ICAvLyBuYW1lc3BhY2UgZm9vCisK
K25hbWVzcGFjZSBiYXIgeworCitjbGFzcyBNaXhlZFVwVGVzdENhc2VUZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgeworfTsKKworLy8gVGhlIGZvbGxvd2luZyB0d28gdGVzdHMgYXJlIGV4cGVj
dGVkIHRvIGZhaWwuICBXZSByZWx5IG9uIHRoZQorLy8gZ29sZGVuIGZpbGUgdG8gY2hlY2sgdGhh
dCBHb29nbGUgVGVzdCBnZW5lcmF0ZXMgdGhlIHJpZ2h0IGVycm9yIG1lc3NhZ2UuCitURVNUX0Yo
TWl4ZWRVcFRlc3RDYXNlVGVzdCwgVGhpc1Nob3VsZEZhaWwpIHt9CitURVNUX0YoTWl4ZWRVcFRl
c3RDYXNlVGVzdCwgVGhpc1Nob3VsZEZhaWxUb28pIHt9CisKK2NsYXNzIE1peGVkVXBUZXN0Q2Fz
ZVdpdGhTYW1lVGVzdE5hbWVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKworLy8g
RXhwZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIGNoZWNrIHRo
YXQgR29vZ2xlIFRlc3QKKy8vIGdlbmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KK1RF
U1RfRihNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdCwKKyAgICAgICBUaGVTZWNv
bmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbCkge30KKworfSAgLy8gbmFtZXNwYWNlIGJhcgor
CisvLyBUaGUgZm9sbG93aW5nIHR3byB0ZXN0IGNhc2VzIHZlcmlmeSB0aGF0IEdvb2dsZSBUZXN0
IGNhdGNoZXMgdGhlIHVzZXIKKy8vIGVycm9yIG9mIG1peGluZyBURVNUIGFuZCBURVNUX0YgaW4g
dGhlIHNhbWUgdGVzdCBjYXNlLiAgVGhlIGZpcnN0CisvLyB0ZXN0IGNhc2UgY2hlY2tzIHRoZSBz
Y2VuYXJpbyB3aGVyZSBURVNUX0YgYXBwZWFycyBiZWZvcmUgVEVTVCwgYW5kCisvLyB0aGUgc2Vj
b25kIG9uZSBjaGVja3Mgd2hlcmUgVEVTVCBhcHBlYXJzIGJlZm9yZSBURVNUX0YuCisKK2NsYXNz
IFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKK307CisKK1RFU1RfRihURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2Us
IERlZmluZWRVc2luZ1RFU1RfRikge30KKworLy8gRXhwZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkg
b24gdGhlIGdvbGRlbiBmaWxlIHRvIGNoZWNrIHRoYXQgR29vZ2xlIFRlc3QKKy8vIGdlbmVyYXRl
cyB0aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KK1RFU1QoVEVTVF9GX2JlZm9yZV9URVNUX2luX3Nh
bWVfdGVzdF9jYXNlLCBEZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxkRmFpbCkge30KKworY2xhc3Mg
VEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlIDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgeworfTsKKworVEVTVChURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UsIERl
ZmluZWRVc2luZ1RFU1QpIHt9CisKKy8vIEV4cGVjdGVkIHRvIGZhaWwuICBXZSByZWx5IG9uIHRo
ZSBnb2xkZW4gZmlsZSB0byBjaGVjayB0aGF0IEdvb2dsZSBUZXN0CisvLyBnZW5lcmF0ZXMgdGhl
IHJpZ2h0IGVycm9yIG1lc3NhZ2UuCitURVNUX0YoVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVf
dGVzdF9jYXNlLCBEZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsKSB7Cit9CisKKy8vIFVz
ZWQgZm9yIHRlc3RpbmcgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBhbmQgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoKS4KK2ludCBnbG9iYWxfaW50ZWdlciA9IDA7CisKKy8vIFRlc3RzIHRoYXQgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBjYW4gcmVmZXJlbmNlIGdsb2JhbCB2YXJpYWJsZXMuCitU
RVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIENhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxl
cykgeworICBnbG9iYWxfaW50ZWdlciA9IDA7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsK
KyAgICBFWFBFQ1RfRVEoMSwgZ2xvYmFsX2ludGVnZXIpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwg
ZmFpbHVyZS4iOworICB9LCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7Cit9CisKKy8v
IFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBjYW4gcmVmZXJlbmNlIGxvY2Fs
IHZhcmlhYmxlcworLy8gKHN0YXRpYyBvciBub3QpLgorVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1
cmVUZXN0LCBDYW5SZWZlcmVuY2VMb2NhbFZhcmlhYmxlcykgeworICBpbnQgbSA9IDA7CisgIHN0
YXRpYyBpbnQgbjsKKyAgbiA9IDE7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKKyAgICBF
WFBFQ1RfRVEobSwgbikgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7CisgIH0sICJF
eHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRSgpIHN1Y2NlZWRzIHdoZW4gdGhlcmUgaXMgZXhhY3RseQorLy8gb25l
IG5vbi1mYXRhbCBmYWlsdXJlIGFuZCBubyBmYXRhbCBmYWlsdXJlLgorVEVTVChFeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LCBTdWNjZWVkc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlKSB7
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBl
Y3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOworICB9LCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBmYWls
cyB3aGVuIHRoZXJlIGlzIG5vCisvLyBub24tZmF0YWwgZmFpbHVyZS4KK1RFU1QoRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJlKSB7Cisg
IHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoeworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoKSBmYWlscyB3aGVuIHRoZXJlIGFyZSB0d28KKy8vIG5vbi1mYXRhbCBmYWlsdXJlcy4K
K1RFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25m
YXRhbEZhaWx1cmVzKSB7CisgIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVk
IG5vbi1mYXRhbCBmYWlsdXJlIDEuIjsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBu
b24tZmF0YWwgZmFpbHVyZSAyLiI7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgaXMgb25lIGZhdGFsCisvLyBm
YWlsdXJlLgorVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUlz
T25lRmF0YWxGYWlsdXJlKSB7CisgIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsK
KyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0
YWwgZmFpbHVyZS4iOworICB9LCAiIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZSBzdGF0ZW1lbnQgYmVpbmcKKy8vIHRlc3RlZCBy
ZXR1cm5zLgorVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1l
bnRSZXR1cm5zKSB7CisgIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKKyAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIHJldHVybjsKKyAgfSwgIiIpOworfQorCisjaWYg
R1RFU1RfSEFTX0VYQ0VQVElPTlMKKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWluZworLy8gdGVzdGVkIHRocm93cy4K
K1RFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dz
KSB7CisgIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKKyAgdHJ5IHsKKyAgICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAgICB0aHJvdyAwOworICAgIH0sICIiKTsKKyAg
fSBjYXRjaChpbnQpIHsgIC8vIE5PTElOVAorICB9Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFT
X0VYQ0VQVElPTlMKKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGNhbiBy
ZWZlcmVuY2UgZ2xvYmFsIHZhcmlhYmxlcy4KK1RFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwg
Q2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzKSB7CisgIGdsb2JhbF9pbnRlZ2VyID0gMDsKKyAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeworICAgIEFTU0VSVF9FUSgxLCBnbG9iYWxfaW50ZWdlcikg
PDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKKyAgfSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1
cmUuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBjYW4gcmVm
ZXJlbmNlIGxvY2FsIHN0YXRpYworLy8gdmFyaWFibGVzLgorVEVTVChFeHBlY3RGYXRhbEZhaWx1
cmVUZXN0LCBDYW5SZWZlcmVuY2VMb2NhbFN0YXRpY1ZhcmlhYmxlcykgeworICBzdGF0aWMgaW50
IG47CisgIG4gPSAxOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CisgICAgQVNTRVJUX0VRKDAs
IG4pIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7CisgIH0sICJFeHBlY3RlZCBmYXRhbCBm
YWlsdXJlLiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgc3Vj
Y2VlZHMgd2hlbiB0aGVyZSBpcyBleGFjdGx5CisvLyBvbmUgZmF0YWwgZmFpbHVyZSBhbmQgbm8g
bm9uLWZhdGFsIGZhaWx1cmUuCitURVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIFN1Y2NlZWRz
V2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUpIHsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewor
ICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOworICB9LCAiRXhwZWN0ZWQg
ZmF0YWwgZmFpbHVyZS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVS
RSgpIGZhaWxzIHdoZW4gdGhlcmUgaXMgbm8gZmF0YWwKKy8vIGZhaWx1cmUuCitURVNUKEV4cGVj
dEZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZSkgeworICBw
cmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJF
KHsKKyAgfSwgIiIpOworfQorCisvLyBBIGhlbHBlciBmb3IgZ2VuZXJhdGluZyBhIGZhdGFsIGZh
aWx1cmUuCit2b2lkIEZhdGFsRmFpbHVyZSgpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYXRh
bCBmYWlsdXJlLiI7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBm
YWlscyB3aGVuIHRoZXJlIGFyZSB0d28KKy8vIGZhdGFsIGZhaWx1cmVzLgorVEVTVChFeHBlY3RG
YXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMpIHsKKyAg
cHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RSh7CisgICAgRmF0YWxGYWlsdXJlKCk7CisgICAgRmF0YWxGYWlsdXJlKCk7CisgIH0sICIiKTsK
K30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhl
cmUgaXMgb25lIG5vbi1mYXRhbAorLy8gZmFpbHVyZS4KK1RFU1QoRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdCwgRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZSkgeworICBwcmludGYoIihl
eHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKKyAgICBB
RERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOworICB9LCAiIik7
Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRo
ZSBzdGF0ZW1lbnQgYmVpbmcKKy8vIHRlc3RlZCByZXR1cm5zLgorVEVTVChFeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zKSB7CisgIHByaW50ZigiKGV4cGVj
dGluZyBhIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeworICAgIHJldHVy
bjsKKyAgfSwgIiIpOworfQorCisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworLy8gVGVzdHMg
dGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWlu
ZworLy8gdGVzdGVkIHRocm93cy4KK1RFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNX
aGVuU3RhdGVtZW50VGhyb3dzKSB7CisgIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4i
KTsKKyAgdHJ5IHsKKyAgICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CisgICAgICB0aHJvdyAwOwor
ICAgIH0sICIiKTsKKyAgfSBjYXRjaChpbnQpIHsgIC8vIE5PTElOVAorICB9Cit9CisKKyNlbmRp
ZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworLy8gVGhpcyAjaWZkZWYgYmxvY2sgdGVzdHMg
dGhlIG91dHB1dCBvZiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorCitzdGQ6OnN0cmluZyBQ
YXJhbU5hbWVGdW5jKGNvbnN0IHRlc3Rpbmc6OlRlc3RQYXJhbUluZm88c3RkOjpzdHJpbmc+JiBp
bmZvKSB7CisgIHJldHVybiBpbmZvLnBhcmFtOworfQorCitjbGFzcyBQYXJhbVRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxzdGQ6OnN0cmluZz4geworfTsKKworVEVTVF9QKFBh
cmFtVGVzdCwgU3VjY2VzcykgeworICBFWFBFQ1RfRVEoImEiLCBHZXRQYXJhbSgpKTsKK30KKwor
VEVTVF9QKFBhcmFtVGVzdCwgRmFpbHVyZSkgeworICBFWFBFQ1RfRVEoImIiLCBHZXRQYXJhbSgp
KSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFBy
aW50aW5nU3RyaW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtVGVzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlcyhzdGQ6OnN0cmluZygiYSIpKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFBhcmFtTmFtZUZ1bmMpOworCisvLyBUaGlzICNpZmRlZiBi
bG9jayB0ZXN0cyB0aGUgb3V0cHV0IG9mIHR5cGVkIHRlc3RzLgorI2lmIEdURVNUX0hBU19UWVBF
RF9URVNUCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZWRUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgeworfTsKKworVFlQRURfVEVTVF9DQVNFKFR5cGVkVGVzdCwgdGVzdGlu
Zzo6VHlwZXM8aW50Pik7CisKK1RZUEVEX1RFU1QoVHlwZWRUZXN0LCBTdWNjZXNzKSB7CisgIEVY
UEVDVF9FUSgwLCBUeXBlUGFyYW0oKSk7Cit9CisKK1RZUEVEX1RFU1QoVHlwZWRUZXN0LCBGYWls
dXJlKSB7CisgIEVYUEVDVF9FUSgxLCBUeXBlUGFyYW0oKSkgPDwgIkV4cGVjdGVkIGZhaWx1cmUi
OworfQorCit0eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPGNoYXIsIGludD4gVHlwZXNGb3JUZXN0V2l0
aE5hbWVzOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVkVGVzdFdpdGhOYW1l
cyA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHt9OworCitjbGFzcyBUeXBlZFRlc3ROYW1lcyB7Cisg
cHVibGljOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdl
dE5hbWUoaW50IGkpIHsKKyAgICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxULCBjaGFy
Pjo6dmFsdWUpCisgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoImNoYXJfIikgKyA6OnRlc3Rpbmc6
OlByaW50VG9TdHJpbmcoaSk7CisgICAgaWYgKHRlc3Rpbmc6OmludGVybmFsOjpJc1NhbWU8VCwg
aW50Pjo6dmFsdWUpCisgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoImludF8iKSArIDo6dGVzdGlu
Zzo6UHJpbnRUb1N0cmluZyhpKTsKKyAgfQorfTsKKworVFlQRURfVEVTVF9DQVNFKFR5cGVkVGVz
dFdpdGhOYW1lcywgVHlwZXNGb3JUZXN0V2l0aE5hbWVzLCBUeXBlZFRlc3ROYW1lcyk7CisKK1RZ
UEVEX1RFU1QoVHlwZWRUZXN0V2l0aE5hbWVzLCBTdWNjZXNzKSB7fQorCitUWVBFRF9URVNUKFR5
cGVkVGVzdFdpdGhOYW1lcywgRmFpbHVyZSkgeyBGQUlMKCk7IH0KKworI2VuZGlmICAvLyBHVEVT
VF9IQVNfVFlQRURfVEVTVAorCisvLyBUaGlzICNpZmRlZiBibG9jayB0ZXN0cyB0aGUgb3V0cHV0
IG9mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9Q
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZWRUZXN0UCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKK307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKFR5cGVkVGVzdFApOworCitUWVBF
RF9URVNUX1AoVHlwZWRUZXN0UCwgU3VjY2VzcykgeworICBFWFBFQ1RfRVEoMFUsIFR5cGVQYXJh
bSgpKTsKK30KKworVFlQRURfVEVTVF9QKFR5cGVkVGVzdFAsIEZhaWx1cmUpIHsKKyAgRVhQRUNU
X0VRKDFVLCBUeXBlUGFyYW0oKSkgPDwgIkV4cGVjdGVkIGZhaWx1cmUiOworfQorCitSRUdJU1RF
Ul9UWVBFRF9URVNUX0NBU0VfUChUeXBlZFRlc3RQLCBTdWNjZXNzLCBGYWlsdXJlKTsKKwordHlw
ZWRlZiB0ZXN0aW5nOjpUeXBlczx1bnNpZ25lZCBjaGFyLCB1bnNpZ25lZCBpbnQ+IFVuc2lnbmVk
VHlwZXM7CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChVbnNpZ25lZCwgVHlwZWRUZXN0
UCwgVW5zaWduZWRUeXBlcyk7CisKK2NsYXNzIFR5cGVkVGVzdFBOYW1lcyB7CisgcHVibGljOgor
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldE5hbWUoaW50
IGkpIHsKKyAgICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxULCB1bnNpZ25lZCBjaGFy
Pjo6dmFsdWUpIHsKKyAgICAgIHJldHVybiBzdGQ6OnN0cmluZygidW5zaWduZWRfY2hhcl8iKSAr
IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhpKTsKKyAgICB9CisgICAgaWYgKHRlc3Rpbmc6Omlu
dGVybmFsOjpJc1NhbWU8VCwgdW5zaWduZWQgaW50Pjo6dmFsdWUpIHsKKyAgICAgIHJldHVybiBz
dGQ6OnN0cmluZygidW5zaWduZWRfaW50XyIpICsgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGkp
OworICAgIH0KKyAgfQorfTsKKworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoVW5zaWdu
ZWRDdXN0b21OYW1lLCBUeXBlZFRlc3RQLCBVbnNpZ25lZFR5cGVzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVHlwZWRUZXN0UE5hbWVzKTsKKworI2VuZGlmICAvLyBHVEVTVF9IQVNf
VFlQRURfVEVTVF9QCisKKyNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisvLyBXZSByZWx5IG9u
IHRoZSBnb2xkZW4gZmlsZSB0byB2ZXJpZnkgdGhhdCB0ZXN0cyB3aG9zZSB0ZXN0IGNhc2UKKy8v
IG5hbWUgZW5kcyB3aXRoIERlYXRoVGVzdCBhcmUgcnVuIGZpcnN0LgorCitURVNUKEFEZWF0aFRl
c3QsIFNob3VsZFJ1bkZpcnN0KSB7Cit9CisKKyMgaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKKwor
Ly8gV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gdmVyaWZ5IHRoYXQgdHlwZWQgdGVzdHMg
d2hvc2UgdGVzdAorLy8gY2FzZSBuYW1lIGVuZHMgd2l0aCBEZWF0aFRlc3QgYXJlIHJ1biBmaXJz
dC4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBBVHlwZWREZWF0aFRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7Cit9OworCit0eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPGludCwgZG91
YmxlPiBOdW1lcmljVHlwZXM7CitUWVBFRF9URVNUX0NBU0UoQVR5cGVkRGVhdGhUZXN0LCBOdW1l
cmljVHlwZXMpOworCitUWVBFRF9URVNUKEFUeXBlZERlYXRoVGVzdCwgU2hvdWxkUnVuRmlyc3Qp
IHsKK30KKworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QKKworIyBpZiBHVEVTVF9I
QVNfVFlQRURfVEVTVF9QCisKKworLy8gV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gdmVy
aWZ5IHRoYXQgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzCisvLyB3aG9zZSB0ZXN0IGNhc2UgbmFt
ZSBlbmRzIHdpdGggRGVhdGhUZXN0IGFyZSBydW4gZmlyc3QuCisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgQVR5cGVQYXJhbURlYXRoVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
K307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKEFUeXBlUGFyYW1EZWF0aFRlc3QpOworCitUWVBFRF9U
RVNUX1AoQVR5cGVQYXJhbURlYXRoVGVzdCwgU2hvdWxkUnVuRmlyc3QpIHsKK30KKworUkVHSVNU
RVJfVFlQRURfVEVTVF9DQVNFX1AoQVR5cGVQYXJhbURlYXRoVGVzdCwgU2hvdWxkUnVuRmlyc3Qp
OworCitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgQVR5cGVQYXJhbURlYXRoVGVz
dCwgTnVtZXJpY1R5cGVzKTsKKworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAor
CisjZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCisKKy8vIFRlc3RzIHZhcmlvdXMgZmFp
bHVyZSBjb25kaXRpb25zIG9mCisvLyBFWFBFQ1RfeyxOT059RkFUQUxfRkFJTFVSRXssX09OX0FM
TF9USFJFQURTfS4KK2NsYXNzIEV4cGVjdEZhaWx1cmVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgeworIHB1YmxpYzogIC8vIE11c3QgYmUgcHVibGljIGFuZCBub3QgcHJvdGVjdGVkIGR1ZSB0
byBhIGJ1ZyBpbiBnKysgMy40LjIuCisgIGVudW0gRmFpbHVyZU1vZGUgeworICAgIEZBVEFMX0ZB
SUxVUkUsCisgICAgTk9ORkFUQUxfRkFJTFVSRQorICB9OworICBzdGF0aWMgdm9pZCBBZGRGYWls
dXJlKEZhaWx1cmVNb2RlIGZhaWx1cmUpIHsKKyAgICBpZiAoZmFpbHVyZSA9PSBGQVRBTF9GQUlM
VVJFKSB7CisgICAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKKyAgICB9
IGVsc2UgeworICAgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUuIjsKKyAgICB9CisgIH0KK307CisKK1RFU1RfRihFeHBlY3RGYWlsdXJlVGVzdCwgRXhwZWN0
RmF0YWxGYWlsdXJlKSB7CisgIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVk
cy4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShTVUNDRUVEKCksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOworICAvLyBFeHBl
Y3RlZCBmYXRhbCBmYWlsdXJlLCBidXQgZ290IGEgbm9uLWZhdGFsIGZhaWx1cmUuCisgIHByaW50
ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRk
RmFpbHVyZShOT05GQVRBTF9GQUlMVVJFKSwgIkV4cGVjdGVkIG5vbi1mYXRhbCAiCisgICAgICAg
ICAgICAgICAgICAgICAgICJmYWlsdXJlLiIpOworICAvLyBXcm9uZyBtZXNzYWdlLgorICBwcmlu
dGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFk
ZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUgIgorICAg
ICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQuIik7Cit9CisKK1RFU1RfRihFeHBlY3RGYWls
dXJlVGVzdCwgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlKSB7CisgIC8vIEV4cGVjdGVkIG5vbi1mYXRh
bCBmYWlsdXJlLCBidXQgc3VjY2VlZHMuCisgIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUp
XG4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoU1VDQ0VFRCgpLCAiRXhwZWN0ZWQgbm9u
LWZhdGFsIGZhaWx1cmUuIik7CisgIC8vIEV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLCBidXQg
Z290IGEgZmF0YWwgZmFpbHVyZS4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIp
OworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlKEZBVEFMX0ZBSUxVUkUpLCAi
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKKyAgLy8gV3JvbmcgbWVzc2FnZS4KKyAgcHJpbnRm
KCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShB
ZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpLCAiU29tZSBvdGhlciBub24tZmF0YWwgIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZmFpbHVyZS4iKTsKK30KKworI2lmIEdURVNUX0lTX1RI
UkVBRFNBRkUKKworY2xhc3MgRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCA6IHB1YmxpYyBF
eHBlY3RGYWlsdXJlVGVzdCB7CisgcHJvdGVjdGVkOgorICBzdGF0aWMgdm9pZCBBZGRGYWlsdXJl
SW5PdGhlclRocmVhZChGYWlsdXJlTW9kZSBmYWlsdXJlKSB7CisgICAgVGhyZWFkV2l0aFBhcmFt
PEZhaWx1cmVNb2RlPiB0aHJlYWQoJkFkZEZhaWx1cmUsIGZhaWx1cmUsIE5VTEwpOworICAgIHRo
cmVhZC5Kb2luKCk7CisgIH0KK307CisKK1RFU1RfRihFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNU
ZXN0LCBFeHBlY3RGYXRhbEZhaWx1cmUpIHsKKyAgLy8gV2Ugb25seSBpbnRlcmNlcHQgdGhlIGN1
cnJlbnQgdGhyZWFkLgorICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOworICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlSW5PdGhlclRocmVhZChGQVRBTF9GQUlMVVJF
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Cit9
CisKK1RFU1RfRihFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LCBFeHBlY3ROb25GYXRhbEZh
aWx1cmUpIHsKKyAgLy8gV2Ugb25seSBpbnRlcmNlcHQgdGhlIGN1cnJlbnQgdGhyZWFkLgorICBw
cmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShBZGRGYWlsdXJlSW5PdGhlclRocmVhZChOT05GQVRBTF9GQUlMVVJFKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOworfQorCit0
eXBlZGVmIEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QgU2NvcGVkRmFrZVRlc3RQYXJ0UmVz
dWx0UmVwb3J0ZXJUZXN0OworCisvLyBUZXN0cyB0aGF0IHRoZSBTY29wZWRGYWtlVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlciBvbmx5IGNhdGNoZXMgZmFpbHVyZXMgZnJvbQorLy8gdGhlIGN1cnJlbnQg
dGhyZWFkIGlmIGl0IGlzIGluc3RhbnRpYXRlZCB3aXRoIElOVEVSQ0VQVF9PTkxZX0NVUlJFTlRf
VEhSRUFELgorVEVTVF9GKFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdCwgSW50
ZXJjZXB0T25seUN1cnJlbnRUaHJlYWQpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVy
ZXMpXG4iKTsKKyAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOworICB7CisgICAgU2NvcGVk
RmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIgcmVwb3J0ZXIoCisgICAgICAgIFNjb3BlZEZha2VU
ZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpJTlRFUkNFUFRfT05MWV9DVVJSRU5UX1RIUkVBRCwKKyAg
ICAgICAgJnJlc3VsdHMpOworICAgIEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZBVEFMX0ZBSUxV
UkUpOworICAgIEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKE5PTkZBVEFMX0ZBSUxVUkUpOworICB9
CisgIC8vIFRoZSB0d28gZmFpbHVyZXMgc2hvdWxkIG5vdCBoYXZlIGJlZW4gaW50ZXJjZXB0ZWQu
CisgIEVYUEVDVF9FUSgwLCByZXN1bHRzLnNpemUoKSkgPDwgIlRoaXMgc2hvdWxkbid0IGZhaWwu
IjsKK30KKworI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCisKK1RFU1RfRihFeHBlY3RG
YWlsdXJlVGVzdCwgRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzKSB7CisgIC8vIEV4cGVj
dGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEg
ZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhTVUND
RUVEKCksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOworICAvLyBFeHBlY3RlZCBmYXRhbCBm
YWlsdXJlLCBidXQgZ290IGEgbm9uLWZhdGFsIGZhaWx1cmUuCisgIHByaW50ZigiKGV4cGVjdGlu
ZyAxIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMo
QWRkRmFpbHVyZShOT05GQVRBTF9GQUlMVVJFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOworICAvLyBXcm9uZyBt
ZXNzYWdlLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9G
QVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb21lIG90aGVyIGZhdGFsIGZh
aWx1cmUgZXhwZWN0ZWQuIik7Cit9CisKK1RFU1RfRihFeHBlY3RGYWlsdXJlVGVzdCwgRXhwZWN0
Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzKSB7CisgIC8vIEV4cGVjdGVkIG5vbi1mYXRhbCBm
YWlsdXJlLCBidXQgc3VjY2VlZHMuCisgIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4i
KTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoU1VDQ0VFRCgpLCAi
RXhwZWN0ZWQgbm9uLWZhdGFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImZhaWx1cmUuIik7CisgIC8vIEV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLCBidXQg
Z290IGEgZmF0YWwgZmFpbHVyZS4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIp
OworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlKEZB
VEFMX0ZBSUxVUkUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKKyAgLy8gV3JvbmcgbWVzc2FnZS4KKyAgcHJpbnRm
KCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9P
Tl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU29tZSBvdGhlciBub24tZmF0YWwgZmFpbHVy
ZS4iKTsKK30KKworCisvLyBUd28gdGVzdCBlbnZpcm9ubWVudHMgZm9yIHRlc3RpbmcgdGVzdGlu
Zzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KCkuCisKK2NsYXNzIEZvb0Vudmlyb25tZW50IDog
cHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgdm9pZCBT
ZXRVcCgpIHsKKyAgICBwcmludGYoIiVzIiwgIkZvb0Vudmlyb25tZW50OjpTZXRVcCgpIGNhbGxl
ZC5cbiIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIHByaW50Zigi
JXMiLCAiRm9vRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLlxuIik7CisgICAgRkFJTCgp
IDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7CisgIH0KK307CisKK2NsYXNzIEJhckVudmly
b25tZW50IDogcHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50IHsKKyBwdWJsaWM6CisgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBwcmludGYoIiVzIiwgIkJhckVudmlyb25tZW50OjpTZXRV
cCgpIGNhbGxlZC5cbiIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAg
IHByaW50ZigiJXMiLCAiQmFyRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLlxuIik7Cisg
ICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKKyAgfQor
fTsKKworLy8gVGhlIG1haW4gZnVuY3Rpb24uCisvLworLy8gVGhlIGlkZWEgaXMgdG8gdXNlIEdv
b2dsZSBUZXN0IHRvIHJ1biBhbGwgdGhlIHRlc3RzIHdlIGhhdmUgZGVmaW5lZCAoc29tZQorLy8g
b2YgdGhlbSBhcmUgaW50ZW5kZWQgdG8gZmFpbCksIGFuZCB0aGVuIGNvbXBhcmUgdGhlIHRlc3Qg
cmVzdWx0cworLy8gd2l0aCB0aGUgImdvbGRlbiIgZmlsZS4KK2ludCBtYWluKGludCBhcmdjLCBj
aGFyICoqYXJndikgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKHByaW50X3RpbWUpID0gZmFsc2U7
CisKKyAgLy8gV2UganVzdCBydW4gdGhlIHRlc3RzLCBrbm93aW5nIHNvbWUgb2YgdGhlbSBhcmUg
aW50ZW5kZWQgdG8gZmFpbC4KKyAgLy8gV2Ugd2lsbCB1c2UgYSBzZXBhcmF0ZSBQeXRob24gc2Ny
aXB0IHRvIGNvbXBhcmUgdGhlIG91dHB1dCBvZgorICAvLyB0aGlzIHByb2dyYW0gd2l0aCB0aGUg
Z29sZGVuIGZpbGUuCisKKyAgLy8gSXQncyBoYXJkIHRvIHRlc3QgSW5pdEdvb2dsZVRlc3QoKSBk
aXJlY3RseSwgYXMgaXQgaGFzIG1hbnkKKyAgLy8gZ2xvYmFsIHNpZGUgZWZmZWN0cy4gIFRoZSBm
b2xsb3dpbmcgbGluZSBzZXJ2ZXMgYXMgYSBzYW5pdHkgdGVzdAorICAvLyBmb3IgaXQuCisgIHRl
c3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgYm9vbCBpbnRlcm5hbF9za2lw
X2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMgPQorICAgICAgc3RkOjpjb3VudChhcmd2LCBh
cmd2ICsgYXJnYywKKyAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoImludGVybmFsX3NraXBf
ZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cyIpKSA+IDA7CisKKyNpZiBHVEVTVF9IQVNfREVB
VEhfVEVTVAorICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OkdURVNUX0ZMQUcoaW50ZXJuYWxfcnVu
X2RlYXRoX3Rlc3QpICE9ICIiKSB7CisgICAgLy8gU2tpcCB0aGUgdXN1YWwgb3V0cHV0IGNhcHR1
cmluZyBpZiB3ZSdyZSBydW5uaW5nIGFzIHRoZSBjaGlsZAorICAgIC8vIHByb2Nlc3Mgb2YgYW4g
dGhyZWFkc2FmZS1zdHlsZSBkZWF0aCB0ZXN0LgorIyBpZiBHVEVTVF9PU19XSU5ET1dTCisgICAg
cG9zaXg6OkZSZW9wZW4oIm51bDoiLCAidyIsIHN0ZG91dCk7CisjIGVsc2UKKyAgICBwb3NpeDo6
RlJlb3BlbigiL2Rldi9udWxsIiwgInciLCBzdGRvdXQpOworIyBlbmRpZiAgLy8gR1RFU1RfT1Nf
V0lORE9XUworICAgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CisgIH0KKyNlbmRpZiAgLy8gR1RF
U1RfSEFTX0RFQVRIX1RFU1QKKworICBpZiAoaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRf
YWRfaG9jX3Rlc3RzKQorICAgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7CisKKyAgLy8gUmVnaXN0
ZXJzIHR3byBnbG9iYWwgdGVzdCBlbnZpcm9ubWVudHMuCisgIC8vIFRoZSBnb2xkZW4gZmlsZSB2
ZXJpZmllcyB0aGF0IHRoZXkgYXJlIHNldCB1cCBpbiB0aGUgb3JkZXIgdGhleQorICAvLyBhcmUg
cmVnaXN0ZXJlZCwgYW5kIHRvcm4gZG93biBpbiB0aGUgcmV2ZXJzZSBvcmRlci4KKyAgdGVzdGlu
Zzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBGb29FbnZpcm9ubWVudCk7CisgIHRlc3Rp
bmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgQmFyRW52aXJvbm1lbnQpOworI2lmIF9N
U0NfVkVSCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQxMjcKKyNl
bmRpZiAgLy8gLiBfTVNDX1ZFUiAgICAKKyAgcmV0dXJuIFJ1bkFsbFRlc3RzKCk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVz
dC1pbnZhbGlkLW5hbWUxLXRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3QucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmEw
ODQ3N2E3N2ViZGYwYWE1NWYyMzQ0NGFiZDZiODM5ZDkwYmE0MwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFs
aWQtbmFtZTEtdGVzdC5weQpAQCAtMCwwICsxLDYzIEBACisjIS91c3IvYmluL2VudiBweXRob24K
KyMKKyMgQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4K
KyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3Qgd2FybnMgdGhl
IHVzZXIgd2hlbiBub3QgaW5pdGlhbGl6ZWQgcHJvcGVybHkuIiIiCisKK2ltcG9ydCBndGVzdF90
ZXN0X3V0aWxzCisKK2JpbmFyeV9uYW1lID0gJ2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlk
LW5hbWUxLXRlc3RfJworQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFi
bGVQYXRoKGJpbmFyeV9uYW1lKQorCisKK2RlZiBBc3NlcnQoY29uZGl0aW9uKToKKyAgaWYgbm90
IGNvbmRpdGlvbjoKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCisKK2RlZiBUZXN0RXhpdENv
ZGVBbmRPdXRwdXQoY29tbWFuZCk6CisgICIiIlJ1bnMgdGhlIGdpdmVuIGNvbW1hbmQgYW5kIHZl
cmlmaWVzIGl0cyBleGl0IGNvZGUgYW5kIG91dHB1dC4iIiIKKworICBlcnIgPSAoJ1BhcmFtZXRl
cml6ZWQgdGVzdCBuYW1lIFwnIkludmFsaWRXaXRoUXVvdGVzIlwnIGlzIGludmFsaWQnKQorCisg
IHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKKyAgQXNzZXJ0KHAudGVy
bWluYXRlZF9ieV9zaWduYWwpCisKKyAgIyBWZXJpZnkgdGhlIG91dHB1dCBtZXNzYWdlIGNvbnRh
aW5zIGFwcHJvcHJpYXRlIG91dHB1dAorICBBc3NlcnQoZXJyIGluIHAub3V0cHV0KQorCisKK2Ns
YXNzIEdUZXN0UGFyYW1UZXN0SW52YWxpZE5hbWUxVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RD
YXNlKToKKworICBkZWYgdGVzdEV4aXRDb2RlQW5kT3V0cHV0KHNlbGYpOgorICAgIFRlc3RFeGl0
Q29kZUFuZE91dHB1dChDT01NQU5EKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Cisg
IGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3RfLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxp
ZC1uYW1lMS10ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTk1MTU1YjIzYTc4NzFkYjVkMjU0OWEwZTlm
OTA1MDc1YTkzOTk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMS10ZXN0Xy5jYwpAQCAtMCww
ICsxLDUwIEBACisvLyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6Cisv
LworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK25hbWVzcGFjZSB7CitjbGFzcyBEdW1teVRl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGNvbnN0IGNoYXIgKj4ge307CisK
K1RFU1RfUChEdW1teVRlc3QsIER1bW15KSB7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KEludmFsaWRUZXN0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIER1bW15VGVzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKCJJbnZhbGlkV2l0aFF1b3Rl
cyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFy
YW1OYW1lKCkpOworCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg
KmFyZ3ZbXSkgeworICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIHJl
dHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTItdGVzdC5weSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFs
aWQtbmFtZTItdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjgzOGY0NjMyMjkxZDFjYjc4ZTRhMTFlYzNh
YjBjNzczYjk0ZDVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0LnB5CkBAIC0wLDAg
KzEsNjIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxNSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVmVy
aWZpZXMgdGhhdCBHb29nbGUgVGVzdCB3YXJucyB0aGUgdXNlciB3aGVuIG5vdCBpbml0aWFsaXpl
ZCBwcm9wZXJseS4iIiIKKworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworYmluYXJ5X25hbWUg
PSAnZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTItdGVzdF8nCitDT01NQU5EID0g
Z3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoYmluYXJ5X25hbWUpCisKKwor
ZGVmIEFzc2VydChjb25kaXRpb24pOgorICBpZiBub3QgY29uZGl0aW9uOgorICAgIHJhaXNlIEFz
c2VydGlvbkVycm9yCisKKworZGVmIFRlc3RFeGl0Q29kZUFuZE91dHB1dChjb21tYW5kKToKKyAg
IiIiUnVucyB0aGUgZ2l2ZW4gY29tbWFuZCBhbmQgdmVyaWZpZXMgaXRzIGV4aXQgY29kZSBhbmQg
b3V0cHV0LiIiIgorCisgIGVyciA9ICgnRHVwbGljYXRlIHBhcmFtZXRlcml6ZWQgdGVzdCBuYW1l
IFwnYVwnJykKKworICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCisg
IEFzc2VydChwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsKQorCisgICMgQ2hlY2sgZm9yIGFwcHJvcHJp
YXRlIG91dHB1dAorICBBc3NlcnQoZXJyIGluIHAub3V0cHV0KQorCisKK2NsYXNzIEdUZXN0UGFy
YW1UZXN0SW52YWxpZE5hbWUyVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKworICBk
ZWYgdGVzdEV4aXRDb2RlQW5kT3V0cHV0KHNlbGYpOgorICAgIFRlc3RFeGl0Q29kZUFuZE91dHB1
dChDT01NQU5EKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0
aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTItdGVzdF8u
Y2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZWYwOTM0OTBlOWRhMmYwMmVkMjhhMmQwNzEyNDQ1ZTI0MTdjYmRhMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVz
dC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTItdGVzdF8uY2MKQEAgLTAsMCArMSw1NSBAQAorLy8g
Q29weXJpZ2h0IDIwMTUsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0
cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisv
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworY2xhc3MgRHVtbXlUZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBjaGFyICo+IHt9OworCitzdGQ6OnN0cmluZyBT
dHJpbmdQYXJhbVRlc3RTdWZmaXgoCisgICAgY29uc3QgdGVzdGluZzo6VGVzdFBhcmFtSW5mbzxj
b25zdCBjaGFyKj4mIGluZm8pIHsKKyAgcmV0dXJuIHN0ZDo6c3RyaW5nKGluZm8ucGFyYW0pOwor
fQorCitURVNUX1AoRHVtbXlUZXN0LCBEdW1teSkgeworfQorCitJTlNUQU5USUFURV9URVNUX0NB
U0VfUChEdXBsaWNhdGVUZXN0TmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBEdW1teVRl
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygiYSIsICJiIiwg
ImEiLCAiYyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nUGFyYW1UZXN0U3VmZml4
KTsKK30gIC8vIG5hbWVzcGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7
CisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgcmV0dXJuIFJVTl9B
TExfVEVTVFMoKTsKK30KKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzg5Y2Fi
MjcwNzQxNGM0NjQ4NDk2ZDdiOWZiYWI0ZmU1MzFmMGI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYwpA
QCAtMCwwICsxLDExMDkgQEAKKy8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorLy8gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8v
IG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisv
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworLy8KKy8vIFRlc3RzIGZvciBHb29nbGUgVGVzdCBpdHNlbGYuIFRoaXMgZmlsZSB2
ZXJpZmllcyB0aGF0IHRoZSBwYXJhbWV0ZXIKKy8vIGdlbmVyYXRvcnMgb2JqZWN0cyBwcm9kdWNl
IGNvcnJlY3QgcGFyYW1ldGVyIHNlcXVlbmNlcyBhbmQgdGhhdAorLy8gR29vZ2xlIFRlc3QgcnVu
dGltZSBpbnN0YW50aWF0ZXMgY29ycmVjdCB0ZXN0cyBmcm9tIHRob3NlIHNlcXVlbmNlcy4KKwor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyMgaW5jbHVkZSA8YWxnb3JpdGhtPgorIyBpbmNs
dWRlIDxpb3N0cmVhbT4KKyMgaW5jbHVkZSA8bGlzdD4KKyMgaW5jbHVkZSA8c3N0cmVhbT4KKyMg
aW5jbHVkZSA8c3RyaW5nPgorIyBpbmNsdWRlIDx2ZWN0b3I+CisKKyMgaW5jbHVkZSAic3JjL2d0
ZXN0LWludGVybmFsLWlubC5oIiAgLy8gZm9yIFVuaXRUZXN0T3B0aW9ucworIyBpbmNsdWRlICJ0
ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmgiCisKK3VzaW5nIDo6c3RkOjp2ZWN0b3I7
Cit1c2luZyA6OnN0ZDo6c29ydDsKKwordXNpbmcgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52
aXJvbm1lbnQ7Cit1c2luZyA6OnRlc3Rpbmc6OkJvb2w7Cit1c2luZyA6OnRlc3Rpbmc6Ok1lc3Nh
Z2U7Cit1c2luZyA6OnRlc3Rpbmc6OlJhbmdlOwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0V2l0aFBh
cmFtOwordXNpbmcgOjp0ZXN0aW5nOjpWYWx1ZXM7Cit1c2luZyA6OnRlc3Rpbmc6OlZhbHVlc0lu
OworCisjIGlmIEdURVNUX0hBU19DT01CSU5FCit1c2luZyA6OnRlc3Rpbmc6OkNvbWJpbmU7Cit1
c2luZyA6OnRlc3Rpbmc6OmdldDsKK3VzaW5nIDo6dGVzdGluZzo6bWFrZV90dXBsZTsKK3VzaW5n
IDo6dGVzdGluZzo6dHVwbGU7CisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQorCit1c2lu
ZyA6OnRlc3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVyYXRvcjsKK3VzaW5nIDo6dGVzdGluZzo6
aW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczsKKworLy8gUHJpbnRzIGEgdmFsdWUgdG8gYSBzdHJp
bmcuCisvLworLy8gRklYTUU6IHJlbW92ZSBQcmludFZhbHVlKCkgd2hlbiB3ZSBtb3ZlIG1hdGNo
ZXJzIGFuZAorLy8gRVhQRUNUX1RIQVQoKSBmcm9tIEdvb2dsZSBNb2NrIHRvIEdvb2dsZSBUZXN0
LiAgQXQgdGhhdCB0aW1lLCB3ZQorLy8gY2FuIHdyaXRlIEVYUEVDVF9USEFUKHgsIEVxKHkpKSB0
byBjb21wYXJlIHR3byB0dXBsZXMgeCBhbmQgeSwgYXMKKy8vIEVYUEVDVF9USEFUKCkgYW5kIHRo
ZSBtYXRjaGVycyBrbm93IGhvdyB0byBwcmludCB0dXBsZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KKzo6c3RkOjpzdHJpbmcgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSkgeworICA6OnN0ZDo6
c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgc3RyZWFtIDw8IHZhbHVlOworICByZXR1cm4gc3RyZWFt
LnN0cigpOworfQorCisjIGlmIEdURVNUX0hBU19DT01CSU5FCisKKy8vIFRoZXNlIG92ZXJsb2Fk
cyBhbGxvdyBwcmludGluZyB0dXBsZXMgaW4gb3VyIHRlc3RzLiAgV2UgY2Fubm90CisvLyBkZWZp
bmUgYW4gb3BlcmF0b3I8PCBmb3IgdHVwbGVzLCBhcyB0aGF0IGRlZmluaXRpb24gbmVlZHMgdG8g
YmUgaW4KKy8vIHRoZSBzdGQgbmFtZXNwYWNlIGluIG9yZGVyIHRvIGJlIHBpY2tlZCB1cCBieSBH
b29nbGUgVGVzdCB2aWEKKy8vIEFyZ3VtZW50LURlcGVuZGVudCBMb29rdXAsIHlldCBkZWZpbmlu
ZyBhbnl0aGluZyBpbiB0aGUgc3RkCisvLyBuYW1lc3BhY2UgaW4gbm9uLVNUTCBjb2RlIGlzIHVu
ZGVmaW5lZCBiZWhhdmlvci4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4K
Kzo6c3RkOjpzdHJpbmcgUHJpbnRWYWx1ZShjb25zdCB0dXBsZTxUMSwgVDI+JiB2YWx1ZSkgewor
ICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgc3RyZWFtIDw8ICIoIiA8PCBnZXQ8MD4o
dmFsdWUpIDw8ICIsICIgPDwgZ2V0PDE+KHZhbHVlKSA8PCAiKSI7CisgIHJldHVybiBzdHJlYW0u
c3RyKCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzPgorOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKGNvbnN0IHR1cGxlPFQxLCBUMiwgVDM+JiB2
YWx1ZSkgeworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgc3RyZWFtIDw8ICIoIiA8
PCBnZXQ8MD4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDE+KHZhbHVlKQorICAgICAgICAgPDwgIiwg
Ijw8IGdldDwyPih2YWx1ZSkgPDwgIikiOworICByZXR1cm4gc3RyZWFtLnN0cigpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUg
VDQsIHR5cGVuYW1lIFQ1LAorICAgICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlw
ZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTA+Cis6OnN0ZDo6c3RyaW5nIFByaW50
VmFsdWUoCisgICAgY29uc3QgdHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBU
OSwgVDEwPiYgdmFsdWUpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07CisgIHN0cmVh
bSA8PCAiKCIgPDwgZ2V0PDA+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDwxPih2YWx1ZSkKKyAgICAg
ICAgIDw8ICIsICI8PCBnZXQ8Mj4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDM+KHZhbHVlKQorICAg
ICAgICAgPDwgIiwgIjw8IGdldDw0Pih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8NT4odmFsdWUpCisg
ICAgICAgICA8PCAiLCAiPDwgZ2V0PDY+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDw3Pih2YWx1ZSkK
KyAgICAgICAgIDw8ICIsICI8PCBnZXQ8OD4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDk+KHZhbHVl
KSA8PCAiKSI7CisgIHJldHVybiBzdHJlYW0uc3RyKCk7Cit9CisKKyMgZW5kaWYgIC8vIEdURVNU
X0hBU19DT01CSU5FCisKKy8vIFZlcmlmaWVzIHRoYXQgYSBzZXF1ZW5jZSBnZW5lcmF0ZWQgYnkg
dGhlIGdlbmVyYXRvciBhbmQgYWNjZXNzZWQKKy8vIHZpYSB0aGUgaXRlcmF0b3Igb2JqZWN0IG1h
dGNoZXMgdGhlIGV4cGVjdGVkIG9uZSB1c2luZyBHb29nbGUgVGVzdAorLy8gYXNzZXJ0aW9ucy4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KK3ZvaWQgVmVyaWZ5R2VuZXJhdG9yKGNv
bnN0IFBhcmFtR2VuZXJhdG9yPFQ+JiBnZW5lcmF0b3IsCisgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUICgmZXhwZWN0ZWRfdmFsdWVzKVtOXSkgeworICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRv
cjxUPjo6aXRlcmF0b3IgaXQgPSBnZW5lcmF0b3IuYmVnaW4oKTsKKyAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBOOyArK2kpIHsKKyAgICBBU1NFUlRfRkFMU0UoaXQgPT0gZ2VuZXJhdG9yLmVuZCgp
KQorICAgICAgICA8PCAiQXQgZWxlbWVudCAiIDw8IGkgPDwgIiB3aGVuIGFjY2Vzc2luZyB2aWEg
YW4gaXRlcmF0b3IgIgorICAgICAgICA8PCAiY3JlYXRlZCB3aXRoIHRoZSBjb3B5IGNvbnN0cnVj
dG9yLlxuIjsKKyAgICAvLyBXZSBjYW5ub3QgdXNlIEVYUEVDVF9FUSgpIGhlcmUgYXMgdGhlIHZh
bHVlcyBtYXkgYmUgdHVwbGVzLAorICAgIC8vIHdoaWNoIGRvbid0IHN1cHBvcnQgPDwuCisgICAg
RVhQRUNUX1RSVUUoZXhwZWN0ZWRfdmFsdWVzW2ldID09ICppdCkKKyAgICAgICAgPDwgIndoZXJl
IGkgaXMgIiA8PCBpCisgICAgICAgIDw8ICIsIGV4cGVjdGVkX3ZhbHVlc1tpXSBpcyAiIDw8IFBy
aW50VmFsdWUoZXhwZWN0ZWRfdmFsdWVzW2ldKQorICAgICAgICA8PCAiLCAqaXQgaXMgIiA8PCBQ
cmludFZhbHVlKCppdCkKKyAgICAgICAgPDwgIiwgYW5kICdpdCcgaXMgYW4gaXRlcmF0b3IgY3Jl
YXRlZCB3aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9yLlxuIjsKKyAgICArK2l0OworICB9CisgIEVY
UEVDVF9UUlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSkKKyAgICAgICAgPDwgIkF0IHRoZSBwcmVz
dW1lZCBlbmQgb2Ygc2VxdWVuY2Ugd2hlbiBhY2Nlc3NpbmcgdmlhIGFuIGl0ZXJhdG9yICIKKyAg
ICAgICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rvci5cbiI7CisKKyAgLy8g
VGVzdCB0aGUgaXRlcmF0b3IgYXNzaWdubWVudC4gVGhlIGZvbGxvd2luZyBsaW5lcyB2ZXJpZnkg
dGhhdAorICAvLyB0aGUgc2VxdWVuY2UgYWNjZXNzZWQgdmlhIGFuIGl0ZXJhdG9yIGluaXRpYWxp
emVkIHZpYSB0aGUKKyAgLy8gYXNzaWdubWVudCBvcGVyYXRvciAoYXMgb3Bwb3NlZCB0byBhIGNv
cHkgY29uc3RydWN0b3IpIG1hdGNoZXMKKyAgLy8ganVzdCB0aGUgc2FtZS4KKyAgaXQgPSBnZW5l
cmF0b3IuYmVnaW4oKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBOOyArK2kpIHsKKyAgICBB
U1NFUlRfRkFMU0UoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKQorICAgICAgICA8PCAiQXQgZWxlbWVu
dCAiIDw8IGkgPDwgIiB3aGVuIGFjY2Vzc2luZyB2aWEgYW4gaXRlcmF0b3IgIgorICAgICAgICA8
PCAiY3JlYXRlZCB3aXRoIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLlxuIjsKKyAgICBFWFBFQ1Rf
VFJVRShleHBlY3RlZF92YWx1ZXNbaV0gPT0gKml0KQorICAgICAgICA8PCAid2hlcmUgaSBpcyAi
IDw8IGkKKyAgICAgICAgPDwgIiwgZXhwZWN0ZWRfdmFsdWVzW2ldIGlzICIgPDwgUHJpbnRWYWx1
ZShleHBlY3RlZF92YWx1ZXNbaV0pCisgICAgICAgIDw8ICIsICppdCBpcyAiIDw8IFByaW50VmFs
dWUoKml0KQorICAgICAgICA8PCAiLCBhbmQgJ2l0JyBpcyBhbiBpdGVyYXRvciBjcmVhdGVkIHdp
dGggdGhlIGNvcHkgY29uc3RydWN0b3IuXG4iOworICAgICsraXQ7CisgIH0KKyAgRVhQRUNUX1RS
VUUoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKQorICAgICAgICA8PCAiQXQgdGhlIHByZXN1bWVkIGVu
ZCBvZiBzZXF1ZW5jZSB3aGVuIGFjY2Vzc2luZyB2aWEgYW4gaXRlcmF0b3IgIgorICAgICAgICA8
PCAiY3JlYXRlZCB3aXRoIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLlxuIjsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFZlcmlmeUdlbmVyYXRvcklzRW1wdHkoY29uc3QgUGFyYW1H
ZW5lcmF0b3I8VD4mIGdlbmVyYXRvcikgeworICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUPjo6
aXRlcmF0b3IgaXQgPSBnZW5lcmF0b3IuYmVnaW4oKTsKKyAgRVhQRUNUX1RSVUUoaXQgPT0gZ2Vu
ZXJhdG9yLmVuZCgpKTsKKworICBpdCA9IGdlbmVyYXRvci5iZWdpbigpOworICBFWFBFQ1RfVFJV
RShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpOworfQorCisvLyBHZW5lcmF0b3IgdGVzdHMuIFRoZXkg
dGVzdCB0aGF0IGVhY2ggb2YgdGhlIHByb3ZpZGVkIGdlbmVyYXRvciBmdW5jdGlvbnMKKy8vIGdl
bmVyYXRlcyBhbiBleHBlY3RlZCBzZXF1ZW5jZSBvZiB2YWx1ZXMuIFRoZSBnZW5lcmFsIHRlc3Qg
cGF0dGVybgorLy8gaW5zdGFudGlhdGVzIGEgZ2VuZXJhdG9yIHVzaW5nIG9uZSBvZiB0aGUgZ2Vu
ZXJhdG9yIGZ1bmN0aW9ucywKKy8vIGNoZWNrcyB0aGUgc2VxdWVuY2UgcHJvZHVjZWQgYnkgdGhl
IGdlbmVyYXRvciB1c2luZyBpdHMgaXRlcmF0b3IgQVBJLAorLy8gYW5kIHRoZW4gcmVzZXRzIHRo
ZSBpdGVyYXRvciBiYWNrIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlcXVlbmNlCisvLyBhbmQg
Y2hlY2tzIHRoZSBzZXF1ZW5jZSBhZ2Fpbi4KKworLy8gVGVzdHMgdGhhdCBpdGVyYXRvcnMgcHJv
ZHVjZWQgYnkgZ2VuZXJhdG9yIGZ1bmN0aW9ucyBjb25mb3JtIHRvIHRoZQorLy8gRm9yd2FyZEl0
ZXJhdG9yIGNvbmNlcHQuCitURVNUKEl0ZXJhdG9yVGVzdCwgUGFyYW1JdGVyYXRvckNvbmZvcm1z
VG9Gb3J3YXJkSXRlcmF0b3JDb25jZXB0KSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4g
Z2VuID0gUmFuZ2UoMCwgMTApOworICBQYXJhbUdlbmVyYXRvcjxpbnQ+OjppdGVyYXRvciBpdCA9
IGdlbi5iZWdpbigpOworCisgIC8vIFZlcmlmaWVzIHRoYXQgaXRlcmF0b3IgaW5pdGlhbGl6YXRp
b24gd29ya3MgYXMgZXhwZWN0ZWQuCisgIFBhcmFtR2VuZXJhdG9yPGludD46Oml0ZXJhdG9yIGl0
MiA9IGl0OworICBFWFBFQ1RfVFJVRSgqaXQgPT0gKml0MikgPDwgIkluaXRpYWxpemVkIGl0ZXJh
dG9ycyBtdXN0IHBvaW50IHRvIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAi
ZWxlbWVudCBzYW1lIGFzIGl0cyBzb3VyY2UgcG9pbnRzIHRvIjsKKworICAvLyBWZXJpZmllcyB0
aGF0IGl0ZXJhdG9yIGFzc2lnbm1lbnQgd29ya3MgYXMgZXhwZWN0ZWQuCisgICsraXQ7CisgIEVY
UEVDVF9GQUxTRSgqaXQgPT0gKml0Mik7CisgIGl0MiA9IGl0OworICBFWFBFQ1RfVFJVRSgqaXQg
PT0gKml0MikgPDwgIkFzc2lnbmVkIGl0ZXJhdG9ycyBtdXN0IHBvaW50IHRvIHRoZSAiCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAiZWxlbWVudCBzYW1lIGFzIGl0cyBzb3VyY2UgcG9p
bnRzIHRvIjsKKworICAvLyBWZXJpZmllcyB0aGF0IHByZWZpeCBvcGVyYXRvcisrKCkgcmV0dXJu
cyAqdGhpcy4KKyAgRVhQRUNUX0VRKCZpdCwgJigrK2l0KSkgPDwgIlJlc3VsdCBvZiB0aGUgcHJl
Zml4IG9wZXJhdG9yKysgbXVzdCBiZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJy
ZWZlciB0byB0aGUgb3JpZ2luYWwgb2JqZWN0IjsKKworICAvLyBWZXJpZmllcyB0aGF0IHRoZSBy
ZXN1bHQgb2YgdGhlIHBvc3RmaXggb3BlcmF0b3IrKyBwb2ludHMgdG8gdGhlIHZhbHVlCisgIC8v
IHBvaW50ZWQgdG8gYnkgdGhlIG9yaWdpbmFsIGl0ZXJhdG9yLgorICBpbnQgb3JpZ2luYWxfdmFs
dWUgPSAqaXQ7ICAvLyBIYXZlIHRvIGNvbXB1dGUgaXQgb3V0c2lkZSBvZiBtYWNybyBjYWxsIHRv
IGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVuYWZmZWN0ZWQgYnkgdGhlIHBh
cmFtZXRlciBldmFsdWF0aW9uIG9yZGVyLgorICBFWFBFQ1RfRVEob3JpZ2luYWxfdmFsdWUsICoo
aXQrKykpOworCisgIC8vIFZlcmlmaWVzIHRoYXQgcHJlZml4IGFuZCBwb3N0Zml4IG9wZXJhdG9y
KysoKSBhZHZhbmNlIGFuIGl0ZXJhdG9yCisgIC8vIGFsbCB0aGUgc2FtZS4KKyAgaXQyID0gaXQ7
CisgICsraXQ7CisgICsraXQyOworICBFWFBFQ1RfVFJVRSgqaXQgPT0gKml0Mik7Cit9CisKKy8v
IFRlc3RzIHRoYXQgUmFuZ2UoKSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgorVEVT
VChSYW5nZVRlc3QsIEludFJhbmdlV2l0aERlZmF1bHRTdGVwKSB7CisgIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgMyk7CisgIGNvbnN0IGludCBleHBlY3RlZF92YWx1
ZXNbXSA9IHswLCAxLCAyfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVz
KTsKK30KKworLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFJhbmdlKCkgZ2VuZXJhdGVzIHRoZSBz
aW5nbGUgZWxlbWVudCBzZXF1ZW5jZQorLy8gYXMgZXhwZWN0ZWQgd2hlbiBwcm92aWRlZCB3aXRo
IHJhbmdlIGxpbWl0cyB0aGF0IGFyZSBlcXVhbC4KK1RFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZVNp
bmdsZVZhbHVlKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwg
MSk7CisgIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHswfTsKKyAgVmVyaWZ5R2VuZXJh
dG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0
IFJhbmdlKCkgd2l0aCBnZW5lcmF0ZXMgZW1wdHkgc2VxdWVuY2Ugd2hlbgorLy8gc3VwcGxpZWQg
d2l0aCBhbiBlbXB0eSByYW5nZS4KK1RFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZUVtcHR5KSB7Cisg
IGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgMCk7CisgIFZlcmlmeUdl
bmVyYXRvcklzRW1wdHkoZ2VuKTsKK30KKworLy8gVGVzdHMgdGhhdCBSYW5nZSgpIHdpdGggY3Vz
dG9tIHN0ZXAgKGdyZWF0ZXIgdGhlbiBvbmUpIGdlbmVyYXRlcworLy8gdGhlIGV4cGVjdGVkIHNl
cXVlbmNlLgorVEVTVChSYW5nZVRlc3QsIEludFJhbmdlV2l0aEN1c3RvbVN0ZXApIHsKKyAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCA5LCAzKTsKKyAgY29uc3QgaW50
IGV4cGVjdGVkX3ZhbHVlc1tdID0gezAsIDMsIDZ9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBl
eHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBUZXN0cyB0aGF0IFJhbmdlKCkgd2l0aCBjdXN0b20g
c3RlcCAoZ3JlYXRlciB0aGVuIG9uZSkgZ2VuZXJhdGVzCisvLyB0aGUgZXhwZWN0ZWQgc2VxdWVu
Y2Ugd2hlbiB0aGUgbGFzdCBlbGVtZW50IGRvZXMgbm90IGZhbGwgb24gdGhlCisvLyB1cHBlciBy
YW5nZSBsaW1pdC4gU2VxdWVuY2VzIGdlbmVyYXRlZCBieSBSYW5nZSgpIG11c3Qgbm90IGhhdmUK
Ky8vIGVsZW1lbnRzIGJleW9uZCB0aGUgcmFuZ2UgbGltaXRzLgorVEVTVChSYW5nZVRlc3QsIElu
dFJhbmdlV2l0aEN1c3RvbVN0ZXBPdmVyVXBwZXJCb3VuZCkgeworICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDQsIDMpOworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFs
dWVzW10gPSB7MCwgM307CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7
Cit9CisKKy8vIFZlcmlmaWVzIHRoYXQgUmFuZ2Ugd29ya3Mgd2l0aCB1c2VyLWRlZmluZWQgdHlw
ZXMgdGhhdCBkZWZpbmUKKy8vIGNvcHkgY29uc3RydWN0b3IsIG9wZXJhdG9yPSgpLCBvcGVyYXRv
cisoKSwgYW5kIG9wZXJhdG9yPCgpLgorY2xhc3MgRG9nQWRkZXIgeworIHB1YmxpYzoKKyAgZXhw
bGljaXQgRG9nQWRkZXIoY29uc3QgY2hhciogYV92YWx1ZSkgOiB2YWx1ZV8oYV92YWx1ZSkge30K
KyAgRG9nQWRkZXIoY29uc3QgRG9nQWRkZXImIG90aGVyKSA6IHZhbHVlXyhvdGhlci52YWx1ZV8u
Y19zdHIoKSkge30KKworICBEb2dBZGRlciBvcGVyYXRvcj0oY29uc3QgRG9nQWRkZXImIG90aGVy
KSB7CisgICAgaWYgKHRoaXMgIT0gJm90aGVyKQorICAgICAgdmFsdWVfID0gb3RoZXIudmFsdWVf
OworICAgIHJldHVybiAqdGhpczsKKyAgfQorICBEb2dBZGRlciBvcGVyYXRvcisoY29uc3QgRG9n
QWRkZXImIG90aGVyKSBjb25zdCB7CisgICAgTWVzc2FnZSBtc2c7CisgICAgbXNnIDw8IHZhbHVl
Xy5jX3N0cigpIDw8IG90aGVyLnZhbHVlXy5jX3N0cigpOworICAgIHJldHVybiBEb2dBZGRlciht
c2cuR2V0U3RyaW5nKCkuY19zdHIoKSk7CisgIH0KKyAgYm9vbCBvcGVyYXRvcjwoY29uc3QgRG9n
QWRkZXImIG90aGVyKSBjb25zdCB7CisgICAgcmV0dXJuIHZhbHVlXyA8IG90aGVyLnZhbHVlXzsK
KyAgfQorICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87
IH0KKworIHByaXZhdGU6CisgIHN0ZDo6c3RyaW5nIHZhbHVlXzsKK307CisKK1RFU1QoUmFuZ2VU
ZXN0LCBXb3Jrc1dpdGhBQ3VzdG9tVHlwZSkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxEb2dB
ZGRlcj4gZ2VuID0KKyAgICAgIFJhbmdlKERvZ0FkZGVyKCJjYXQiKSwgRG9nQWRkZXIoImNhdGRv
Z2RvZyIpLCBEb2dBZGRlcigiZG9nIikpOworICBQYXJhbUdlbmVyYXRvcjxEb2dBZGRlcj46Oml0
ZXJhdG9yIGl0ID0gZ2VuLmJlZ2luKCk7CisKKyAgQVNTRVJUX0ZBTFNFKGl0ID09IGdlbi5lbmQo
KSk7CisgIEVYUEVDVF9TVFJFUSgiY2F0IiwgaXQtPnZhbHVlKCkuY19zdHIoKSk7CisKKyAgQVNT
RVJUX0ZBTFNFKCsraXQgPT0gZ2VuLmVuZCgpKTsKKyAgRVhQRUNUX1NUUkVRKCJjYXRkb2ciLCBp
dC0+dmFsdWUoKS5jX3N0cigpKTsKKworICBFWFBFQ1RfVFJVRSgrK2l0ID09IGdlbi5lbmQoKSk7
Cit9CisKK2NsYXNzIEludFdyYXBwZXIgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgSW50V3JhcHBl
cihpbnQgYV92YWx1ZSkgOiB2YWx1ZV8oYV92YWx1ZSkge30KKyAgSW50V3JhcHBlcihjb25zdCBJ
bnRXcmFwcGVyJiBvdGhlcikgOiB2YWx1ZV8ob3RoZXIudmFsdWVfKSB7fQorCisgIEludFdyYXBw
ZXIgb3BlcmF0b3I9KGNvbnN0IEludFdyYXBwZXImIG90aGVyKSB7CisgICAgdmFsdWVfID0gb3Ro
ZXIudmFsdWVfOworICAgIHJldHVybiAqdGhpczsKKyAgfQorICAvLyBvcGVyYXRvcisoKSBhZGRz
IGEgZGlmZmVyZW50IHR5cGUuCisgIEludFdyYXBwZXIgb3BlcmF0b3IrKGludCBvdGhlcikgY29u
c3QgeyByZXR1cm4gSW50V3JhcHBlcih2YWx1ZV8gKyBvdGhlcik7IH0KKyAgYm9vbCBvcGVyYXRv
cjwoY29uc3QgSW50V3JhcHBlciYgb3RoZXIpIGNvbnN0IHsKKyAgICByZXR1cm4gdmFsdWVfIDwg
b3RoZXIudmFsdWVfOworICB9CisgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsg
fQorCisgcHJpdmF0ZToKKyAgaW50IHZhbHVlXzsKK307CisKK1RFU1QoUmFuZ2VUZXN0LCBXb3Jr
c1dpdGhBQ3VzdG9tVHlwZVdpdGhEaWZmZXJlbnRJbmNyZW1lbnRUeXBlKSB7CisgIGNvbnN0IFBh
cmFtR2VuZXJhdG9yPEludFdyYXBwZXI+IGdlbiA9IFJhbmdlKEludFdyYXBwZXIoMCksIEludFdy
YXBwZXIoMikpOworICBQYXJhbUdlbmVyYXRvcjxJbnRXcmFwcGVyPjo6aXRlcmF0b3IgaXQgPSBn
ZW4uYmVnaW4oKTsKKworICBBU1NFUlRfRkFMU0UoaXQgPT0gZ2VuLmVuZCgpKTsKKyAgRVhQRUNU
X0VRKDAsIGl0LT52YWx1ZSgpKTsKKworICBBU1NFUlRfRkFMU0UoKytpdCA9PSBnZW4uZW5kKCkp
OworICBFWFBFQ1RfRVEoMSwgaXQtPnZhbHVlKCkpOworCisgIEVYUEVDVF9UUlVFKCsraXQgPT0g
Z2VuLmVuZCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIHdpdGggYW4gYXJyYXkg
cGFyYW1ldGVyIGdlbmVyYXRlcworLy8gdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgorVEVTVChWYWx1
ZXNJblRlc3QsIFZhbHVlc0luQXJyYXkpIHsKKyAgaW50IGFycmF5W10gPSB7MywgNSwgOH07Cisg
IGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4oYXJyYXkpOworICBWZXJp
ZnlHZW5lcmF0b3IoZ2VuLCBhcnJheSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSB3
aXRoIGEgY29uc3QgYXJyYXkgcGFyYW1ldGVyIGdlbmVyYXRlcworLy8gdGhlIGV4cGVjdGVkIHNl
cXVlbmNlLgorVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luQ29uc3RBcnJheSkgeworICBjb25z
dCBpbnQgYXJyYXlbXSA9IHszLCA1LCA4fTsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBn
ZW4gPSBWYWx1ZXNJbihhcnJheSk7CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGFycmF5KTsKK30K
KworLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFZhbHVlc0luKCkgd2l0aCBhbiBhcnJheSBwYXJh
bWV0ZXIgY29udGFpbmluZyBhCisvLyBzaW5nbGUgZWxlbWVudCBnZW5lcmF0ZXMgdGhlIHNpbmds
ZSBlbGVtZW50IHNlcXVlbmNlLgorVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luU2luZ2xlRWxl
bWVudEFycmF5KSB7CisgIGludCBhcnJheVtdID0gezQyfTsKKyAgY29uc3QgUGFyYW1HZW5lcmF0
b3I8aW50PiBnZW4gPSBWYWx1ZXNJbihhcnJheSk7CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGFy
cmF5KTsKK30KKworLy8gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIGdlbmVyYXRlcyB0aGUgZXhwZWN0
ZWQgc2VxdWVuY2UgZm9yIGFuIFNUTAorLy8gY29udGFpbmVyICh2ZWN0b3IpLgorVEVTVChWYWx1
ZXNJblRlc3QsIFZhbHVlc0luVmVjdG9yKSB7CisgIHR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxpbnQ+
IENvbnRhaW5lclR5cGU7CisgIENvbnRhaW5lclR5cGUgdmFsdWVzOworICB2YWx1ZXMucHVzaF9i
YWNrKDMpOworICB2YWx1ZXMucHVzaF9iYWNrKDUpOworICB2YWx1ZXMucHVzaF9iYWNrKDgpOwor
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVlcyk7CisKKyAg
Y29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezMsIDUsIDh9OworICBWZXJpZnlHZW5lcmF0
b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBUZXN0cyB0aGF0IFZhbHVlc0luKCkg
Z2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoVmFsdWVzSW5UZXN0LCBWYWx1
ZXNJbkl0ZXJhdG9yUmFuZ2UpIHsKKyAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGludD4gQ29udGFp
bmVyVHlwZTsKKyAgQ29udGFpbmVyVHlwZSB2YWx1ZXM7CisgIHZhbHVlcy5wdXNoX2JhY2soMyk7
CisgIHZhbHVlcy5wdXNoX2JhY2soNSk7CisgIHZhbHVlcy5wdXNoX2JhY2soOCk7CisgIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4odmFsdWVzLmJlZ2luKCksIHZhbHVl
cy5lbmQoKSk7CisKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezMsIDUsIDh9Owor
ICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBFZGdlIGNh
c2UuIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSBwcm92aWRlZCB3aXRoIGFuIGl0ZXJhdG9yIHJhbmdl
IHNwZWNpZnlpbmcgYQorLy8gc2luZ2xlIHZhbHVlIGdlbmVyYXRlcyBhIHNpbmdsZS1lbGVtZW50
IHNlcXVlbmNlLgorVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luU2luZ2xlRWxlbWVudEl0ZXJh
dG9yUmFuZ2UpIHsKKyAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGludD4gQ29udGFpbmVyVHlwZTsK
KyAgQ29udGFpbmVyVHlwZSB2YWx1ZXM7CisgIHZhbHVlcy5wdXNoX2JhY2soNDIpOworICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVlcy5iZWdpbigpLCB2YWx1
ZXMuZW5kKCkpOworCisgIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHs0Mn07CisgIFZl
cmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIEVkZ2UgY2FzZS4g
VGVzdHMgdGhhdCBWYWx1ZXNJbigpIHByb3ZpZGVkIHdpdGggYW4gZW1wdHkgaXRlcmF0b3IgcmFu
Z2UKKy8vIGdlbmVyYXRlcyBhbiBlbXB0eSBzZXF1ZW5jZS4KK1RFU1QoVmFsdWVzSW5UZXN0LCBW
YWx1ZXNJbkVtcHR5SXRlcmF0b3JSYW5nZSkgeworICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8aW50
PiBDb250YWluZXJUeXBlOworICBDb250YWluZXJUeXBlIHZhbHVlczsKKyAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbih2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgp
KTsKKworICBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7Cit9CisKKy8vIFRlc3RzIHRoYXQg
dGhlIFZhbHVlcygpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCitURVNUKFZhbHVl
c1Rlc3QsIFZhbHVlc1dvcmtzKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0g
VmFsdWVzKDMsIDUsIDgpOworCisgIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHszLCA1
LCA4fTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8g
VGVzdHMgdGhhdCBWYWx1ZXMoKSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlcyBmcm9t
IGVsZW1lbnRzIG9mCisvLyBkaWZmZXJlbnQgdHlwZXMgY29udmVydGlibGUgdG8gUGFyYW1HZW5l
cmF0b3IncyBwYXJhbWV0ZXIgdHlwZS4KK1RFU1QoVmFsdWVzVGVzdCwgVmFsdWVzV29ya3NGb3JW
YWx1ZXNPZkNvbXBhdGlibGVUeXBlcykgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxkb3VibGU+
IGdlbiA9IFZhbHVlcygzLCA1LjBmLCA4LjApOworCisgIGNvbnN0IGRvdWJsZSBleHBlY3RlZF92
YWx1ZXNbXSA9IHszLjAsIDUuMCwgOC4wfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0
ZWRfdmFsdWVzKTsKK30KKworVEVTVChWYWx1ZXNUZXN0LCBWYWx1ZXNXb3Jrc0Zvck1heExlbmd0
aExpc3QpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXMoCisgICAg
ICAxMCwgMjAsIDMwLCA0MCwgNTAsIDYwLCA3MCwgODAsIDkwLCAxMDAsCisgICAgICAxMTAsIDEy
MCwgMTMwLCAxNDAsIDE1MCwgMTYwLCAxNzAsIDE4MCwgMTkwLCAyMDAsCisgICAgICAyMTAsIDIy
MCwgMjMwLCAyNDAsIDI1MCwgMjYwLCAyNzAsIDI4MCwgMjkwLCAzMDAsCisgICAgICAzMTAsIDMy
MCwgMzMwLCAzNDAsIDM1MCwgMzYwLCAzNzAsIDM4MCwgMzkwLCA0MDAsCisgICAgICA0MTAsIDQy
MCwgNDMwLCA0NDAsIDQ1MCwgNDYwLCA0NzAsIDQ4MCwgNDkwLCA1MDApOworCisgIGNvbnN0IGlu
dCBleHBlY3RlZF92YWx1ZXNbXSA9IHsKKyAgICAgIDEwLCAyMCwgMzAsIDQwLCA1MCwgNjAsIDcw
LCA4MCwgOTAsIDEwMCwKKyAgICAgIDExMCwgMTIwLCAxMzAsIDE0MCwgMTUwLCAxNjAsIDE3MCwg
MTgwLCAxOTAsIDIwMCwKKyAgICAgIDIxMCwgMjIwLCAyMzAsIDI0MCwgMjUwLCAyNjAsIDI3MCwg
MjgwLCAyOTAsIDMwMCwKKyAgICAgIDMxMCwgMzIwLCAzMzAsIDM0MCwgMzUwLCAzNjAsIDM3MCwg
MzgwLCAzOTAsIDQwMCwKKyAgICAgIDQxMCwgNDIwLCA0MzAsIDQ0MCwgNDUwLCA0NjAsIDQ3MCwg
NDgwLCA0OTAsIDUwMH07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7
Cit9CisKKy8vIEVkZ2UgY2FzZSB0ZXN0LiBUZXN0cyB0aGF0IHNpbmdsZS1wYXJhbWV0ZXIgVmFs
dWVzKCkgZ2VuZXJhdGVzIHRoZSBzZXF1ZW5jZQorLy8gd2l0aCB0aGUgc2luZ2xlIHZhbHVlLgor
VEVTVChWYWx1ZXNUZXN0LCBWYWx1ZXNXaXRoU2luZ2xlUGFyYW1ldGVyKSB7CisgIGNvbnN0IFBh
cmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzKDQyKTsKKworICBjb25zdCBpbnQgZXhwZWN0
ZWRfdmFsdWVzW10gPSB7NDJ9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1
ZXMpOworfQorCisvLyBUZXN0cyB0aGF0IEJvb2woKSBnZW5lcmF0ZXMgc2VxdWVuY2UgKGZhbHNl
LCB0cnVlKS4KK1RFU1QoQm9vbFRlc3QsIEJvb2xXb3JrcykgeworICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxib29sPiBnZW4gPSBCb29sKCk7CisKKyAgY29uc3QgYm9vbCBleHBlY3RlZF92YWx1ZXNb
XSA9IHtmYWxzZSwgdHJ1ZX07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVl
cyk7Cit9CisKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKKworLy8gVGVzdHMgdGhhdCBDb21iaW5l
KCkgd2l0aCB0d28gcGFyYW1ldGVycyBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgor
VEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdpdGhUd29QYXJhbWV0ZXJzKSB7CisgIGNvbnN0IGNo
YXIqIGZvbyA9ICJmb28iOworICBjb25zdCBjaGFyKiBiYXIgPSAiYmFyIjsKKyAgY29uc3QgUGFy
YW1HZW5lcmF0b3I8dHVwbGU8Y29uc3QgY2hhciosIGludD4gPiBnZW4gPQorICAgICAgQ29tYmlu
ZShWYWx1ZXMoZm9vLCBiYXIpLCBWYWx1ZXMoMywgNCkpOworCisgIHR1cGxlPGNvbnN0IGNoYXIq
LCBpbnQ+IGV4cGVjdGVkX3ZhbHVlc1tdID0geworICAgIG1ha2VfdHVwbGUoZm9vLCAzKSwgbWFr
ZV90dXBsZShmb28sIDQpLAorICAgIG1ha2VfdHVwbGUoYmFyLCAzKSwgbWFrZV90dXBsZShiYXIs
IDQpfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8g
VGVzdHMgdGhhdCBDb21iaW5lKCkgd2l0aCB0aHJlZSBwYXJhbWV0ZXJzIGdlbmVyYXRlcyB0aGUg
ZXhwZWN0ZWQgc2VxdWVuY2UuCitURVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFRocmVlUGFy
YW1ldGVycykgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludCwgaW50PiA+
IGdlbiA9IENvbWJpbmUoVmFsdWVzKDAsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDMsIDQpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVz
KDUsIDYpKTsKKyAgdHVwbGU8aW50LCBpbnQsIGludD4gZXhwZWN0ZWRfdmFsdWVzW10gPSB7Cisg
ICAgbWFrZV90dXBsZSgwLCAzLCA1KSwgbWFrZV90dXBsZSgwLCAzLCA2KSwKKyAgICBtYWtlX3R1
cGxlKDAsIDQsIDUpLCBtYWtlX3R1cGxlKDAsIDQsIDYpLAorICAgIG1ha2VfdHVwbGUoMSwgMywg
NSksIG1ha2VfdHVwbGUoMSwgMywgNiksCisgICAgbWFrZV90dXBsZSgxLCA0LCA1KSwgbWFrZV90
dXBsZSgxLCA0LCA2KX07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIENvbWJpbmUoKSB3aXRoIHRoZSBmaXJzdCBwYXJhbWV0
ZXIgZ2VuZXJhdGluZyBhIHNpbmdsZSB2YWx1ZQorLy8gc2VxdWVuY2UgZ2VuZXJhdGVzIGEgc2Vx
dWVuY2Ugd2l0aCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGVxdWFsIHRvIHRoZQorLy8gbnVtYmVy
IG9mIGVsZW1lbnRzIGluIHRoZSBzZXF1ZW5jZSBnZW5lcmF0ZWQgYnkgdGhlIHNlY29uZCBwYXJh
bWV0ZXIuCitURVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aEZpcnN0UGFyYW1ldGVyU2luZ2xl
VmFsdWUpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0g
Q29tYmluZShWYWx1ZXMoNDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbHVlcygwLCAxKSk7CisKKyAgdHVwbGU8aW50LCBpbnQ+IGV4
cGVjdGVkX3ZhbHVlc1tdID0ge21ha2VfdHVwbGUoNDIsIDApLCBtYWtlX3R1cGxlKDQyLCAxKX07
CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRlc3Rz
IHRoYXQgdGhlIENvbWJpbmUoKSB3aXRoIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGdlbmVyYXRpbmcg
YSBzaW5nbGUgdmFsdWUKKy8vIHNlcXVlbmNlIGdlbmVyYXRlcyBhIHNlcXVlbmNlIHdpdGggdGhl
IG51bWJlciBvZiBlbGVtZW50cyBlcXVhbCB0byB0aGUKKy8vIG51bWJlciBvZiBlbGVtZW50cyBp
biB0aGUgc2VxdWVuY2UgZ2VuZXJhdGVkIGJ5IHRoZSBmaXJzdCBwYXJhbWV0ZXIuCitURVNUKENv
bWJpbmVUZXN0LCBDb21iaW5lV2l0aFNlY29uZFBhcmFtZXRlclNpbmdsZVZhbHVlKSB7CisgIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUoVmFsdWVz
KDAsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbHVlcyg0MikpOworCisgIHR1cGxlPGludCwgaW50PiBleHBlY3RlZF92YWx1ZXNb
XSA9IHttYWtlX3R1cGxlKDAsIDQyKSwgbWFrZV90dXBsZSgxLCA0Mil9OworICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBUZXN0cyB0aGF0IHdoZW4gdGhl
IGZpcnN0IHBhcmFtZXRlciBwcm9kdWNlcyBhbiBlbXB0eSBzZXF1ZW5jZSwKKy8vIENvbWJpbmUo
KSBwcm9kdWNlcyBhbiBlbXB0eSBzZXF1ZW5jZSwgdG9vLgorVEVTVChDb21iaW5lVGVzdCwgQ29t
YmluZVdpdGhGaXJzdFBhcmFtZXRlckVtcHR5UmFuZ2UpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0
b3I8dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShSYW5nZSgwLCAwKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMCwg
MSkpOworICBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7Cit9CisKKy8vIFRlc3RzIHRoYXQg
d2hlbiB0aGUgc2Vjb25kIHBhcmFtZXRlciBwcm9kdWNlcyBhbiBlbXB0eSBzZXF1ZW5jZSwKKy8v
IENvbWJpbmUoKSBwcm9kdWNlcyBhbiBlbXB0eSBzZXF1ZW5jZSwgdG9vLgorVEVTVChDb21iaW5l
VGVzdCwgQ29tYmluZVdpdGhTZWNvbmRQYXJhbWV0ZXJFbXB0eVJhbmdlKSB7CisgIGNvbnN0IFBh
cmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUoVmFsdWVzKDAsIDEp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJhbmdlKDEsIDEpKTsKKyAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShnZW4pOworfQorCisvLyBF
ZGdlIGNhc2UuIFRlc3RzIHRoYXQgY29tYmluZSB3b3JrcyB3aXRoIHRoZSBtYXhpbXVtIG51bWJl
cgorLy8gb2YgcGFyYW1ldGVycyBzdXBwb3J0ZWQgYnkgR29vZ2xlIFRlc3QgKGN1cnJlbnRseSAx
MCkuCitURVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aE1heE51bWJlck9mUGFyYW1ldGVycykg
eworICBjb25zdCBjaGFyKiBmb28gPSAiZm9vIjsKKyAgY29uc3QgY2hhciogYmFyID0gImJhciI7
CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGNvbnN0IGNoYXIqLCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwg
aW50PiA+IGdlbiA9IENvbWJpbmUoVmFsdWVzKGZvbywgYmFyKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMSksIFZhbHVlcygy
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWx1ZXMoMyksIFZhbHVlcyg0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNSksIFZhbHVlcyg2KSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNyksIFZh
bHVlcyg4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWx1ZXMoOSkpOworCisgIHR1cGxlPGNvbnN0IGNoYXIqLCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50PgorICAgICAgZXhwZWN0ZWRfdmFsdWVzW10g
PSB7bWFrZV90dXBsZShmb28sIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWFrZV90dXBsZShiYXIsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgs
IDkpfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworI2lm
IEdURVNUX0xBTkdfQ1hYMTEKKworY2xhc3MgTm9uRGVmYXVsdENvbnN0cnVjdEFzc2lnblN0cmlu
ZyB7CisgcHVibGljOgorICBOb25EZWZhdWx0Q29uc3RydWN0QXNzaWduU3RyaW5nKGNvbnN0IHN0
ZDo6c3RyaW5nJiBzKSA6IHN0cl8ocykge30KKworICBjb25zdCBzdGQ6OnN0cmluZyYgc3RyKCkg
Y29uc3QgeyByZXR1cm4gc3RyXzsgfQorCisgcHJpdmF0ZToKKyAgc3RkOjpzdHJpbmcgc3RyXzsK
KworICAvLyBOb3QgZGVmYXVsdCBjb25zdHJ1Y3RpYmxlCisgIE5vbkRlZmF1bHRDb25zdHJ1Y3RB
c3NpZ25TdHJpbmcoKTsKKyAgLy8gTm90IGFzc2lnbmFibGUKKyAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgTm9uRGVmYXVsdENvbnN0cnVjdEFzc2lnblN0cmluZyYpOworfTsKKworVEVTVChDb21iaW5l
VGVzdCwgTm9uRGVmYXVsdENvbnN0cnVjdEFzc2lnbikgeworICBjb25zdCBQYXJhbUdlbmVyYXRv
cjx0dXBsZTxpbnQsIE5vbkRlZmF1bHRDb25zdHJ1Y3RBc3NpZ25TdHJpbmc+ID4gZ2VuID0KKyAg
ICAgIENvbWJpbmUoVmFsdWVzKDAsIDEpLCBWYWx1ZXMoTm9uRGVmYXVsdENvbnN0cnVjdEFzc2ln
blN0cmluZygiQSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25EZWZh
dWx0Q29uc3RydWN0QXNzaWduU3RyaW5nKCJCIikpKTsKKworICBQYXJhbUdlbmVyYXRvcjx0dXBs
ZTxpbnQsIE5vbkRlZmF1bHRDb25zdHJ1Y3RBc3NpZ25TdHJpbmc+ID46Oml0ZXJhdG9yIGl0ID0K
KyAgICAgIGdlbi5iZWdpbigpOworCisgIEVYUEVDVF9FUSgwLCBzdGQ6OmdldDwwPigqaXQpKTsK
KyAgRVhQRUNUX0VRKCJBIiwgc3RkOjpnZXQ8MT4oKml0KS5zdHIoKSk7CisgICsraXQ7CisKKyAg
RVhQRUNUX0VRKDAsIHN0ZDo6Z2V0PDA+KCppdCkpOworICBFWFBFQ1RfRVEoIkIiLCBzdGQ6Omdl
dDwxPigqaXQpLnN0cigpKTsKKyAgKytpdDsKKworICBFWFBFQ1RfRVEoMSwgc3RkOjpnZXQ8MD4o
Kml0KSk7CisgIEVYUEVDVF9FUSgiQSIsIHN0ZDo6Z2V0PDE+KCppdCkuc3RyKCkpOworICArK2l0
OworCisgIEVYUEVDVF9FUSgxLCBzdGQ6OmdldDwwPigqaXQpKTsKKyAgRVhQRUNUX0VRKCJCIiwg
c3RkOjpnZXQ8MT4oKml0KS5zdHIoKSk7CisgICsraXQ7CisKKyAgRVhQRUNUX1RSVUUoaXQgPT0g
Z2VuLmVuZCgpKTsKK30KKworI2VuZGlmICAgLy8gR1RFU1RfTEFOR19DWFgxMQorIyBlbmRpZiAg
Ly8gR1RFU1RfSEFTX0NPTUJJTkUKKworLy8gVGVzdHMgdGhhdCBhbiBnZW5lcmF0b3IgcHJvZHVj
ZXMgY29ycmVjdCBzZXF1ZW5jZSBhZnRlciBiZWluZworLy8gYXNzaWduZWQgZnJvbSBhbm90aGVy
IGdlbmVyYXRvci4KK1RFU1QoUGFyYW1HZW5lcmF0b3JUZXN0LCBBc3NpZ25tZW50V29ya3MpIHsK
KyAgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXMoMSwgMik7CisgIGNvbnN0IFBhcmFt
R2VuZXJhdG9yPGludD4gZ2VuMiA9IFZhbHVlcygzLCA0KTsKKyAgZ2VuID0gZ2VuMjsKKworICBj
b25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MywgNH07CisgIFZlcmlmeUdlbmVyYXRvcihn
ZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRo
ZSB0ZXN0cyBhcmUgZXhwYW5kZWQgYW5kIHJ1biBhcyBzcGVjaWZpZWQ6CisvLyBvbmUgdGVzdCBw
ZXIgZWxlbWVudCBmcm9tIHRoZSBzZXF1ZW5jZSBwcm9kdWNlZCBieSB0aGUgZ2VuZXJhdG9yCisv
LyBzcGVjaWZpZWQgaW4gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AuIEl0IGFsc28gdmVyaWZpZXMg
dGhhdCB0aGUgdGVzdCdzCisvLyBmaXh0dXJlIGNvbnN0cnVjdG9yLCBTZXRVcCgpLCBhbmQgVGVh
ckRvd24oKSBoYXZlIHJ1biBhbmQgaGF2ZSBiZWVuCisvLyBzdXBwbGllZCB3aXRoIHRoZSBjb3Jy
ZWN0IHBhcmFtZXRlcnMuCisKKy8vIFRoZSB1c2Ugb2YgZW52aXJvbm1lbnQgb2JqZWN0IGFsbG93
cyBkZXRlY3Rpb24gb2YgdGhlIGNhc2Ugd2hlcmUgbm8gdGVzdAorLy8gY2FzZSBmdW5jdGlvbmFs
aXR5IGlzIHJ1biBhdCBhbGwuIEluIHRoaXMgY2FzZSBUZXN0Q2FzZVRlYXJEb3duIHdpbGwgbm90
CisvLyBiZSBhYmxlIHRvIGRldGVjdCBtaXNzaW5nIHRlc3RzLCBuYXR1cmFsbHkuCit0ZW1wbGF0
ZSA8aW50IGtFeHBlY3RlZENhbGxzPgorY2xhc3MgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OkVudmlyb25tZW50IHsKKyBwdWJsaWM6CisgIHN0YXRpYyBUZXN0
R2VuZXJhdGlvbkVudmlyb25tZW50KiBJbnN0YW5jZSgpIHsKKyAgICBzdGF0aWMgVGVzdEdlbmVy
YXRpb25FbnZpcm9ubWVudCogaW5zdGFuY2UgPSBuZXcgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVu
dDsKKyAgICByZXR1cm4gaW5zdGFuY2U7CisgIH0KKworICB2b2lkIEZpeHR1cmVDb25zdHJ1Y3Rv
ckV4ZWN1dGVkKCkgeyBmaXh0dXJlX2NvbnN0cnVjdG9yX2NvdW50XysrOyB9CisgIHZvaWQgU2V0
VXBFeGVjdXRlZCgpIHsgc2V0X3VwX2NvdW50XysrOyB9CisgIHZvaWQgVGVhckRvd25FeGVjdXRl
ZCgpIHsgdGVhcl9kb3duX2NvdW50XysrOyB9CisgIHZvaWQgVGVzdEJvZHlFeGVjdXRlZCgpIHsg
dGVzdF9ib2R5X2NvdW50XysrOyB9CisKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAg
IC8vIElmIGFsbCBNdWx0aXBsZVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0cyBoYXZlIGJlZW4gZGUt
c2VsZWN0ZWQKKyAgICAvLyBieSB0aGUgZmlsdGVyIGZsYWcsIHRoZSBmb2xsb3dpbmcgY2hlY2tz
IG1ha2Ugbm8gc2Vuc2UuCisgICAgYm9vbCBwZXJmb3JtX2NoZWNrID0gZmFsc2U7CisKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IGtFeHBlY3RlZENhbGxzOyArK2kpIHsKKyAgICAgIE1lc3NhZ2Ug
bXNnOworICAgICAgbXNnIDw8ICJUZXN0c0V4cGFuZGVkQW5kUnVuLyIgPDwgaTsKKyAgICAgIGlm
IChVbml0VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KAorICAgICAgICAgICAgICJUZXN0
RXhwYW5zaW9uTW9kdWxlL011bHRpcGxlVGVzdEdlbmVyYXRpb25UZXN0IiwKKyAgICAgICAgICAg
ICAgbXNnLkdldFN0cmluZygpLmNfc3RyKCkpKSB7CisgICAgICAgIHBlcmZvcm1fY2hlY2sgPSB0
cnVlOworICAgICAgfQorICAgIH0KKyAgICBpZiAocGVyZm9ybV9jaGVjaykgeworICAgICAgRVhQ
RUNUX0VRKGtFeHBlY3RlZENhbGxzLCBmaXh0dXJlX2NvbnN0cnVjdG9yX2NvdW50XykKKyAgICAg
ICAgICA8PCAiRml4dHVyZSBjb25zdHJ1Y3RvciBvZiBQYXJhbVRlc3RHZW5lcmF0aW9uVGVzdCB0
ZXN0IGNhc2UgIgorICAgICAgICAgIDw8ICJoYXMgbm90IGJlZW4gcnVuIGFzIGV4cGVjdGVkLiI7
CisgICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2FsbHMsIHNldF91cF9jb3VudF8pCisgICAgICAg
ICAgPDwgIkZpeHR1cmUgU2V0VXAgbWV0aG9kIG9mIFBhcmFtVGVzdEdlbmVyYXRpb25UZXN0IHRl
c3QgY2FzZSAiCisgICAgICAgICAgPDwgImhhcyBub3QgYmVlbiBydW4gYXMgZXhwZWN0ZWQuIjsK
KyAgICAgIEVYUEVDVF9FUShrRXhwZWN0ZWRDYWxscywgdGVhcl9kb3duX2NvdW50XykKKyAgICAg
ICAgICA8PCAiRml4dHVyZSBUZWFyRG93biBtZXRob2Qgb2YgUGFyYW1UZXN0R2VuZXJhdGlvblRl
c3QgdGVzdCBjYXNlICIKKyAgICAgICAgICA8PCAiaGFzIG5vdCBiZWVuIHJ1biBhcyBleHBlY3Rl
ZC4iOworICAgICAgRVhQRUNUX0VRKGtFeHBlY3RlZENhbGxzLCB0ZXN0X2JvZHlfY291bnRfKQor
ICAgICAgICAgIDw8ICJUZXN0IGluIFBhcmFtVGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZSAi
CisgICAgICAgICAgPDwgImhhcyBub3QgYmVlbiBydW4gYXMgZXhwZWN0ZWQuIjsKKyAgICB9Cisg
IH0KKworIHByaXZhdGU6CisgIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQoKSA6IGZpeHR1cmVf
Y29uc3RydWN0b3JfY291bnRfKDApLCBzZXRfdXBfY291bnRfKDApLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0ZWFyX2Rvd25fY291bnRfKDApLCB0ZXN0X2JvZHlfY291bnRfKDAp
IHt9CisKKyAgaW50IGZpeHR1cmVfY29uc3RydWN0b3JfY291bnRfOworICBpbnQgc2V0X3VwX2Nv
dW50XzsKKyAgaW50IHRlYXJfZG93bl9jb3VudF87CisgIGludCB0ZXN0X2JvZHlfY291bnRfOwor
CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdEdlbmVyYXRpb25FbnZpcm9u
bWVudCk7Cit9OworCitjb25zdCBpbnQgdGVzdF9nZW5lcmF0aW9uX3BhcmFtc1tdID0gezM2LCA0
MiwgNzJ9OworCitjbGFzcyBUZXN0R2VuZXJhdGlvblRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJh
bTxpbnQ+IHsKKyBwdWJsaWM6CisgIGVudW0geworICAgIFBBUkFNRVRFUl9DT1VOVCA9CisgICAg
ICAgIHNpemVvZih0ZXN0X2dlbmVyYXRpb25fcGFyYW1zKS9zaXplb2YodGVzdF9nZW5lcmF0aW9u
X3BhcmFtc1swXSkKKyAgfTsKKworICB0eXBlZGVmIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQ8
UEFSQU1FVEVSX0NPVU5UPiBFbnZpcm9ubWVudDsKKworICBUZXN0R2VuZXJhdGlvblRlc3QoKSB7
CisgICAgRW52aXJvbm1lbnQ6Okluc3RhbmNlKCktPkZpeHR1cmVDb25zdHJ1Y3RvckV4ZWN1dGVk
KCk7CisgICAgY3VycmVudF9wYXJhbWV0ZXJfID0gR2V0UGFyYW0oKTsKKyAgfQorICB2aXJ0dWFs
IHZvaWQgU2V0VXAoKSB7CisgICAgRW52aXJvbm1lbnQ6Okluc3RhbmNlKCktPlNldFVwRXhlY3V0
ZWQoKTsKKyAgICBFWFBFQ1RfRVEoY3VycmVudF9wYXJhbWV0ZXJfLCBHZXRQYXJhbSgpKTsKKyAg
fQorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgRW52aXJvbm1lbnQ6Okluc3RhbmNl
KCktPlRlYXJEb3duRXhlY3V0ZWQoKTsKKyAgICBFWFBFQ1RfRVEoY3VycmVudF9wYXJhbWV0ZXJf
LCBHZXRQYXJhbSgpKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7Cisg
ICAgYm9vbCBhbGxfdGVzdHNfaW5fdGVzdF9jYXNlX3NlbGVjdGVkID0gdHJ1ZTsKKworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgUEFSQU1FVEVSX0NPVU5UOyArK2kpIHsKKyAgICAgIE1lc3NhZ2Ug
dGVzdF9uYW1lOworICAgICAgdGVzdF9uYW1lIDw8ICJUZXN0c0V4cGFuZGVkQW5kUnVuLyIgPDwg
aTsKKyAgICAgIGlmICggIVVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0Y2hlc1Rlc3QoCisgICAg
ICAgICAgICAgICAgIlRlc3RFeHBhbnNpb25Nb2R1bGUvTXVsdGlwbGVUZXN0R2VuZXJhdGlvblRl
c3QiLAorICAgICAgICAgICAgICAgIHRlc3RfbmFtZS5HZXRTdHJpbmcoKSkpIHsKKyAgICAgICAg
YWxsX3Rlc3RzX2luX3Rlc3RfY2FzZV9zZWxlY3RlZCA9IGZhbHNlOworICAgICAgfQorICAgIH0K
KyAgICBFWFBFQ1RfVFJVRShhbGxfdGVzdHNfaW5fdGVzdF9jYXNlX3NlbGVjdGVkKQorICAgICAg
ICA8PCAiV2hlbiBydW5uaW5nIHRoZSBUZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlIGFsbCBv
ZiBpdHMgdGVzdHNcbiIKKyAgICAgICAgPDwgIm11c3QgYmUgc2VsZWN0ZWQgYnkgdGhlIGZpbHRl
ciBmbGFnIGZvciB0aGUgdGVzdCBjYXNlIHRvIHBhc3MuXG4iCisgICAgICAgIDw8ICJJZiBub3Qg
YWxsIG9mIHRoZW0gYXJlIGVuYWJsZWQsIHdlIGNhbid0IHJlbGlhYmx5IGNvbmNsdWRlXG4iCisg
ICAgICAgIDw8ICJ0aGF0IHRoZSBjb3JyZWN0IG51bWJlciBvZiB0ZXN0cyBoYXZlIGJlZW4gZ2Vu
ZXJhdGVkLiI7CisKKyAgICBjb2xsZWN0ZWRfcGFyYW1ldGVyc18uY2xlYXIoKTsKKyAgfQorCisg
IHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7CisgICAgdmVjdG9yPGludD4gZXhwZWN0
ZWRfdmFsdWVzKHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMgKyBQQVJBTUVURVJfQ09VTlQpOworICAg
IC8vIFRlc3QgZXhlY3V0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkIGJ5IEdvb2dsZSBUZXN0
LAorICAgIC8vIHNvIHRoZSBvcmRlciBvZiB2YWx1ZXMgaW4gY29sbGVjdGVkX3BhcmFtZXRlcnNf
IGNhbiBiZQorICAgIC8vIGRpZmZlcmVudCBhbmQgd2UgaGF2ZSB0byBzb3J0IHRvIGNvbXBhcmUu
CisgICAgc29ydChleHBlY3RlZF92YWx1ZXMuYmVnaW4oKSwgZXhwZWN0ZWRfdmFsdWVzLmVuZCgp
KTsKKyAgICBzb3J0KGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5iZWdpbigpLCBjb2xsZWN0ZWRfcGFy
YW1ldGVyc18uZW5kKCkpOworCisgICAgRVhQRUNUX1RSVUUoY29sbGVjdGVkX3BhcmFtZXRlcnNf
ID09IGV4cGVjdGVkX3ZhbHVlcyk7CisgIH0KKworIHByb3RlY3RlZDoKKyAgaW50IGN1cnJlbnRf
cGFyYW1ldGVyXzsKKyAgc3RhdGljIHZlY3RvcjxpbnQ+IGNvbGxlY3RlZF9wYXJhbWV0ZXJzXzsK
KworIHByaXZhdGU6CisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdEdlbmVy
YXRpb25UZXN0KTsKK307Cit2ZWN0b3I8aW50PiBUZXN0R2VuZXJhdGlvblRlc3Q6OmNvbGxlY3Rl
ZF9wYXJhbWV0ZXJzXzsKKworVEVTVF9QKFRlc3RHZW5lcmF0aW9uVGVzdCwgVGVzdHNFeHBhbmRl
ZEFuZFJ1bikgeworICBFbnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+VGVzdEJvZHlFeGVjdXRlZCgp
OworICBFWFBFQ1RfRVEoY3VycmVudF9wYXJhbWV0ZXJfLCBHZXRQYXJhbSgpKTsKKyAgY29sbGVj
dGVkX3BhcmFtZXRlcnNfLnB1c2hfYmFjayhHZXRQYXJhbSgpKTsKK30KK0lOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKFRlc3RFeHBhbnNpb25Nb2R1bGUsIFRlc3RHZW5lcmF0aW9uVGVzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbHVlc0luKHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMpKTsKKwor
Ly8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIGVsZW1lbnQgc2VxdWVuY2UgKHRoaXJkIHBh
cmFtZXRlciBvZgorLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1ApIGlzIGV2YWx1YXRlZCBpbiBJ
bml0R29vZ2xlVGVzdCgpIGFuZCBuZWl0aGVyIGF0CisvLyB0aGUgY2FsbCBzaXRlIG9mIElOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QIG5vciBpbiBSVU5fQUxMX1RFU1RTKCkuICBGb3IKKy8vIHRoYXQs
IHdlIGRlY2xhcmUgcGFyYW1fdmFsdWVfIHRvIGJlIGEgc3RhdGljIG1lbWJlciBvZgorLy8gR2Vu
ZXJhdG9yRXZhbHVhdGlvblRlc3QgYW5kIGluaXRpYWxpemUgaXQgdG8gMC4gIFdlIHNldCBpdCB0
byAxIGluCisvLyBtYWluKCksIGp1c3QgYmVmb3JlIGludm9jYXRpb24gb2YgSW5pdEdvb2dsZVRl
c3QoKS4gIEFmdGVyIGNhbGxpbmcKKy8vIEluaXRHb29nbGVUZXN0KCksIHdlIHNldCB0aGUgdmFs
dWUgdG8gMi4gIElmIHRoZSBzZXF1ZW5jZSBpcyBldmFsdWF0ZWQKKy8vIGJlZm9yZSBvciBhZnRl
ciBJbml0R29vZ2xlVGVzdCwgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Agd2lsbCBjcmVhdGUgYQor
Ly8gdGVzdCB3aXRoIHBhcmFtZXRlciBvdGhlciB0aGFuIDEsIGFuZCB0aGUgdGVzdCBib2R5IHdp
bGwgZmFpbCB0aGUKKy8vIGFzc2VydGlvbi4KK2NsYXNzIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0
IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7CisgcHVibGljOgorICBzdGF0aWMgaW50IHBh
cmFtX3ZhbHVlKCkgeyByZXR1cm4gcGFyYW1fdmFsdWVfOyB9CisgIHN0YXRpYyB2b2lkIHNldF9w
YXJhbV92YWx1ZShpbnQgcGFyYW1fdmFsdWUpIHsgcGFyYW1fdmFsdWVfID0gcGFyYW1fdmFsdWU7
IH0KKworIHByaXZhdGU6CisgIHN0YXRpYyBpbnQgcGFyYW1fdmFsdWVfOworfTsKK2ludCBHZW5l
cmF0b3JFdmFsdWF0aW9uVGVzdDo6cGFyYW1fdmFsdWVfID0gMDsKKworVEVTVF9QKEdlbmVyYXRv
ckV2YWx1YXRpb25UZXN0LCBHZW5lcmF0b3JzRXZhbHVhdGVkSW5NYWluKSB7CisgIEVYUEVDVF9F
USgxLCBHZXRQYXJhbSgpKTsKK30KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEdlbkV2YWxNb2R1
bGUsCisgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6cGFy
YW1fdmFsdWUoKSkpOworCisvLyBUZXN0cyB0aGF0IGdlbmVyYXRvcnMgZGVmaW5lZCBpbiBhIGRp
ZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0IGFyZQorLy8gZnVuY3Rpb25hbC4gR2VuZXJhdG9yIGV4
dGVybl9nZW4gaXMgZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QyLmNjLgorZXh0ZXJu
IFBhcmFtR2VuZXJhdG9yPGludD4gZXh0ZXJuX2dlbjsKK2NsYXNzIEV4dGVybmFsR2VuZXJhdG9y
VGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4ge307CitURVNUX1AoRXh0ZXJuYWxHZW5l
cmF0b3JUZXN0LCBFeHRlcm5hbEdlbmVyYXRvcikgeworICAvLyBTZXF1ZW5jZSBwcm9kdWNlZCBi
eSBleHRlcm5fZ2VuIGNvbnRhaW5zIG9ubHkgYSBzaW5nbGUgdmFsdWUKKyAgLy8gd2hpY2ggd2Ug
dmVyaWZ5IGhlcmUuCisgIEVYUEVDVF9FUShHZXRQYXJhbSgpLCAzMyk7Cit9CitJTlNUQU5USUFU
RV9URVNUX0NBU0VfUChFeHRlcm5hbEdlbmVyYXRvck1vZHVsZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEV4dGVybmFsR2VuZXJhdG9yVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4
dGVybl9nZW4pOworCisvLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2Fu
IGJlIGRlZmluZWQgaW4gb25lIHRyYW5zbGF0aW9uCisvLyB1bml0IGFuZCBpbnN0YW50aWF0ZWQg
aW4gYW5vdGhlci4gVGhpcyB0ZXN0IHdpbGwgYmUgaW5zdGFudGlhdGVkIGluCisvLyBndGVzdC1w
YXJhbS10ZXN0X3Rlc3QyLmNjLiBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0IGZpeHR1cmUgY2xh
c3MgaXMKKy8vIGRlZmluZWQgaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmguCitURVNUX1AoRXh0
ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCwgSXNNdWx0aXBsZU9mMzMpIHsKKyAgRVhQRUNUX0VRKDAs
IEdldFBhcmFtKCkgJSAzMyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRl
c3QgY2FzZSBjYW4gYmUgaW5zdGFudGlhdGVkIHdpdGggbXVsdGlwbGUKKy8vIGdlbmVyYXRvcnMu
CitjbGFzcyBNdWx0aXBsZUluc3RhbnRpYXRpb25UZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08
aW50PiB7fTsKK1RFU1RfUChNdWx0aXBsZUluc3RhbnRpYXRpb25UZXN0LCBBbGxvd3NNdWx0aXBs
ZUluc3RhbmNlcykgeworfQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2UxLCBNdWx0
aXBsZUluc3RhbnRpYXRpb25UZXN0LCBWYWx1ZXMoMSwgMikpOworSU5TVEFOVElBVEVfVEVTVF9D
QVNFX1AoU2VxdWVuY2UyLCBNdWx0aXBsZUluc3RhbnRpYXRpb25UZXN0LCBSYW5nZSgzLCA1KSk7
CisKKy8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgaW5zdGFu
dGlhdGVkCisvLyBpbiBtdWx0aXBsZSB0cmFuc2xhdGlvbiB1bml0cy4gVGhpcyB0ZXN0IHdpbGwg
YmUgaW5zdGFudGlhdGVkCisvLyBoZXJlIGFuZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QyLmNj
LgorLy8gSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhdGlvblVuaXRzVGVzdCBmaXh0dXJl
IGNsYXNzCisvLyBpcyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oLgorVEVTVF9Q
KEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCwgSXNNdWx0aXBsZU9m
NDIpIHsKKyAgRVhQRUNUX0VRKDAsIEdldFBhcmFtKCkgJSA0Mik7Cit9CitJTlNUQU5USUFURV9U
RVNUX0NBU0VfUChTZXF1ZW5jZTEsCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0
aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICBWYWx1ZXMoNDIsIDQyKjIpKTsKKworLy8gVGVzdHMgdGhhdCBlYWNoIGl0ZXJhdGlvbiBvZiBw
YXJhbWV0ZXJpemVkIHRlc3QgcnVucyBpbiBhIHNlcGFyYXRlIHRlc3QKKy8vIG9iamVjdC4KK2Ns
YXNzIFNlcGFyYXRlSW5zdGFuY2VUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7Cisg
cHVibGljOgorICBTZXBhcmF0ZUluc3RhbmNlVGVzdCgpIDogY291bnRfKDApIHt9CisKKyAgc3Rh
dGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKKyAgICBFWFBFQ1RfR0UoZ2xvYmFsX2NvdW50
XywgMikKKyAgICAgICAgPDwgIklmIHNvbWUgKGJ1dCBub3QgYWxsKSBTZXBhcmF0ZUluc3RhbmNl
VGVzdCB0ZXN0cyBoYXZlIGJlZW4gIgorICAgICAgICA8PCAiZmlsdGVyZWQgb3V0IHRoaXMgdGVz
dCB3aWxsIGZhaWwuIE1ha2Ugc3VyZSB0aGF0IGFsbCAiCisgICAgICAgIDw8ICJHZW5lcmF0b3JF
dmFsdWF0aW9uVGVzdCBhcmUgc2VsZWN0ZWQgb3IgZGUtc2VsZWN0ZWQgdG9nZXRoZXIgIgorICAg
ICAgICA8PCAiYnkgdGhlIHRlc3QgZmlsdGVyLiI7CisgIH0KKworIHByb3RlY3RlZDoKKyAgaW50
IGNvdW50XzsKKyAgc3RhdGljIGludCBnbG9iYWxfY291bnRfOworfTsKK2ludCBTZXBhcmF0ZUlu
c3RhbmNlVGVzdDo6Z2xvYmFsX2NvdW50XyA9IDA7CisKK1RFU1RfUChTZXBhcmF0ZUluc3RhbmNl
VGVzdCwgVGVzdHNSdW5JblNlcGFyYXRlSW5zdGFuY2VzKSB7CisgIEVYUEVDVF9FUSgwLCBjb3Vu
dF8rKyk7CisgIGdsb2JhbF9jb3VudF8rKzsKK30KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEZv
dXJFbGVtU2VxdWVuY2UsIFNlcGFyYXRlSW5zdGFuY2VUZXN0LCBSYW5nZSgxLCA0KSk7CisKKy8v
IFRlc3RzIHRoYXQgYWxsIGluc3RhbnRpYXRpb25zIG9mIGEgdGVzdCBoYXZlIG5hbWVkIGFwcHJv
cHJpYXRlbHkuIFRlc3QKKy8vIGRlZmluZWQgd2l0aCBURVNUX1AoVGVzdENhc2VOYW1lLCBUZXN0
TmFtZSkgYW5kIGluc3RhbnRpYXRlZCB3aXRoCisvLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChT
ZXF1ZW5jZU5hbWUsIFRlc3RDYXNlTmFtZSwgZ2VuZXJhdG9yKSBtdXN0IGJlIG5hbWVkCisvLyBT
ZXF1ZW5jZU5hbWUvVGVzdENhc2VOYW1lLlRlc3ROYW1lL2ksIHdoZXJlIGkgaXMgdGhlIDAtYmFz
ZWQgaW5kZXggb2YgdGhlCisvLyBzZXF1ZW5jZSBlbGVtZW50IHVzZWQgdG8gaW5zdGFudGlhdGUg
dGhlIHRlc3QuCitjbGFzcyBOYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7
fTsKKworVEVTVF9QKE5hbWluZ1Rlc3QsIFRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzQW5kUGFyYW1l
dGVycykgeworICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQor
ICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5m
bygpOworCisgIEVYUEVDVF9TVFJFUSgiWmVyb1RvRml2ZVNlcXVlbmNlL05hbWluZ1Rlc3QiLCB0
ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOworCisgIE1lc3NhZ2UgaW5kZXhfc3RyZWFtOwor
ICBpbmRleF9zdHJlYW0gPDwgIlRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzQW5kUGFyYW1ldGVycy8i
IDw8IEdldFBhcmFtKCk7CisgIEVYUEVDVF9TVFJFUShpbmRleF9zdHJlYW0uR2V0U3RyaW5nKCku
Y19zdHIoKSwgdGVzdF9pbmZvLT5uYW1lKCkpOworCisgIEVYUEVDVF9FUSg6OnRlc3Rpbmc6OlBy
aW50VG9TdHJpbmcoR2V0UGFyYW0oKSksIHRlc3RfaW5mby0+dmFsdWVfcGFyYW0oKSk7Cit9CisK
K0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFplcm9Ub0ZpdmVTZXF1ZW5jZSwgTmFtaW5nVGVzdCwg
UmFuZ2UoMCwgNSkpOworCisvLyBUZXN0cyB0aGF0IG1hY3JvcyBpbiB0ZXN0IG5hbWVzIGFyZSBl
eHBhbmRlZCBjb3JyZWN0bHkuCitjbGFzcyBNYWNyb05hbWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdp
dGhQYXJhbTxpbnQ+IHt9OworCisjZGVmaW5lIFBSRUZJWF9XSVRIX0ZPTyh0ZXN0X25hbWUpIEZv
byMjdGVzdF9uYW1lCisjZGVmaW5lIFBSRUZJWF9XSVRIX01BQ1JPKHRlc3RfbmFtZSkgTWFjcm8j
I3Rlc3RfbmFtZQorCitURVNUX1AoUFJFRklYX1dJVEhfTUFDUk8oTmFtaW5nVGVzdCksIFBSRUZJ
WF9XSVRIX0ZPTyhTb21lVGVzdE5hbWUpKSB7CisgIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8q
IGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisKKyAgRVhQRUNUX1NUUkVRKCJGb3J0eVR3by9NYWNy
b05hbWluZ1Rlc3QiLCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOworICBFWFBFQ1RfU1RS
RVEoIkZvb1NvbWVUZXN0TmFtZSIsIHRlc3RfaW5mby0+bmFtZSgpKTsKK30KKworSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoRm9ydHlUd28sIE1hY3JvTmFtaW5nVGVzdCwgVmFsdWVzKDQyKSk7CisK
Ky8vIFRlc3RzIHRoZSBzYW1lIHRoaW5nIGZvciBub24tcGFyYW1ldHJpemVkIHRlc3RzLgorY2xh
c3MgTWFjcm9OYW1pbmdUZXN0Tm9uUGFyYW1ldHJpemVkIDogcHVibGljIDo6dGVzdGluZzo6VGVz
dCB7fTsKKworVEVTVF9GKFBSRUZJWF9XSVRIX01BQ1JPKE5hbWluZ1Rlc3ROb25QYXJhbWV0cml6
ZWQpLAorICAgICAgIFBSRUZJWF9XSVRIX0ZPTyhTb21lVGVzdE5hbWUpKSB7CisgIGNvbnN0IDo6
dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGluZzo6VW5p
dFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisKKyAgRVhQRUNUX1NU
UkVRKCJNYWNyb05hbWluZ1Rlc3ROb25QYXJhbWV0cml6ZWQiLCB0ZXN0X2luZm8tPnRlc3RfY2Fz
ZV9uYW1lKCkpOworICBFWFBFQ1RfU1RSRVEoIkZvb1NvbWVUZXN0TmFtZSIsIHRlc3RfaW5mby0+
bmFtZSgpKTsKK30KKworLy8gVGVzdHMgdGhhdCB1c2VyIHN1cHBsaWVkIGN1c3RvbSBwYXJhbWV0
ZXIgbmFtZXMgYXJlIHdvcmtpbmcgY29ycmVjdGx5LgorLy8gUnVucyB0aGUgdGVzdCB3aXRoIGEg
YnVpbHRpbiBoZWxwZXIgbWV0aG9kIHdoaWNoIHVzZXMgUHJpbnRUb1N0cmluZywKKy8vIGFzIHdl
bGwgYXMgYSBjdXN0b20gZnVuY3Rpb24gYW5kIGN1c3RvbSBmdW5jdG9yIHRvIGVuc3VyZSBhbGwg
cG9zc2libGUKKy8vIHVzZXMgd29yayBjb3JyZWN0bHkuCitjbGFzcyBDdXN0b21GdW5jdG9yTmFt
aW5nVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPHN0ZDo6c3RyaW5nPiB7fTsKK1RFU1RfUChD
dXN0b21GdW5jdG9yTmFtaW5nVGVzdCwgQ3VzdG9tVGVzdE5hbWVzKSB7fQorCitzdHJ1Y3QgQ3Vz
dG9tUGFyYW1OYW1lRnVuY3RvciB7CisgIHN0ZDo6c3RyaW5nIG9wZXJhdG9yKCkoY29uc3QgOjp0
ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHN0ZDo6c3RyaW5nPiYgaW5mKSB7CisgICAgcmV0dXJuIGlu
Zi5wYXJhbTsKKyAgfQorfTsKKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQ3VzdG9tUGFyYW1O
YW1lRnVuY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZ1bmN0b3JOYW1pbmdU
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKHN0ZDo6c3RyaW5nKCJGdW5jdG9y
TmFtZSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbVBhcmFtTmFtZUZ1bmN0b3Io
KSk7CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFsbEFsbG93ZWRDaGFyYWN0ZXJzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRnVuY3Rvck5hbWluZ1Rlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICBWYWx1ZXMoImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwMTIzNDU2Nzg5MF8iKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEN1c3RvbVBhcmFtTmFtZUZ1bmN0b3IoKSk7CisKK2lubGluZSBzdGQ6
OnN0cmluZyBDdXN0b21QYXJhbU5hbWVGdW5jdGlvbigKKyAgICBjb25zdCA6OnRlc3Rpbmc6OlRl
c3RQYXJhbUluZm88c3RkOjpzdHJpbmc+JiBpbmYpIHsKKyAgcmV0dXJuIGluZi5wYXJhbTsKK30K
KworY2xhc3MgQ3VzdG9tRnVuY3Rpb25OYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08
c3RkOjpzdHJpbmc+IHt9OworVEVTVF9QKEN1c3RvbUZ1bmN0aW9uTmFtaW5nVGVzdCwgQ3VzdG9t
VGVzdE5hbWVzKSB7fQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChDdXN0b21QYXJhbU5hbWVG
dW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZ1bmN0aW9uTmFtaW5nVGVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhzdGQ6OnN0cmluZygiRnVuY3Rpb25O
YW1lIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tUGFyYW1OYW1lRnVuY3Rpb24p
OworCisjaWYgR1RFU1RfTEFOR19DWFgxMQorCisvLyBUZXN0IGN1c3RvbSBuYW1pbmcgd2l0aCBh
IGxhbWJkYQorCitjbGFzcyBDdXN0b21MYW1iZGFOYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRo
UGFyYW08c3RkOjpzdHJpbmc+IHt9OworVEVTVF9QKEN1c3RvbUxhbWJkYU5hbWluZ1Rlc3QsIEN1
c3RvbVRlc3ROYW1lcykge30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQ3VzdG9tUGFyYW1O
YW1lTGFtYmRhLCBDdXN0b21MYW1iZGFOYW1pbmdUZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsdWVzKHN0ZDo6c3RyaW5nKCJMYW1iZGFOYW1lIikpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgW10oY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHN0ZDo6c3RyaW5nPiYgaW5m
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmYucGFyYW07CisgICAgICAg
ICAgICAgICAgICAgICAgICB9KTsKKworI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisKK1RF
U1QoQ3VzdG9tTmFtaW5nVGVzdCwgQ2hlY2tOYW1lUmVnaXN0cnkpIHsKKyAgOjp0ZXN0aW5nOjpV
bml0VGVzdCogdW5pdF90ZXN0ID0gOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKTsK
KyAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IHRlc3RfbmFtZXM7CisgIGZvciAoaW50IGNhc2VfbnVt
ID0gMDsKKyAgICAgICBjYXNlX251bSA8IHVuaXRfdGVzdC0+dG90YWxfdGVzdF9jYXNlX2NvdW50
KCk7CisgICAgICAgKytjYXNlX251bSkgeworICAgIGNvbnN0IDo6dGVzdGluZzo6VGVzdENhc2Uq
IHRlc3RfY2FzZSA9IHVuaXRfdGVzdC0+R2V0VGVzdENhc2UoY2FzZV9udW0pOworICAgIGZvciAo
aW50IHRlc3RfbnVtID0gMDsKKyAgICAgICAgIHRlc3RfbnVtIDwgdGVzdF9jYXNlLT50b3RhbF90
ZXN0X2NvdW50KCk7CisgICAgICAgICArK3Rlc3RfbnVtKSB7CisgICAgICBjb25zdCA6OnRlc3Rp
bmc6OlRlc3RJbmZvKiB0ZXN0X2luZm8gPSB0ZXN0X2Nhc2UtPkdldFRlc3RJbmZvKHRlc3RfbnVt
KTsKKyAgICAgIHRlc3RfbmFtZXMuaW5zZXJ0KHN0ZDo6c3RyaW5nKHRlc3RfaW5mby0+bmFtZSgp
KSk7CisgICAgfQorICB9CisgIEVYUEVDVF9FUSgxdSwgdGVzdF9uYW1lcy5jb3VudCgiQ3VzdG9t
VGVzdE5hbWVzL0Z1bmN0b3JOYW1lIikpOworICBFWFBFQ1RfRVEoMXUsIHRlc3RfbmFtZXMuY291
bnQoIkN1c3RvbVRlc3ROYW1lcy9GdW5jdGlvbk5hbWUiKSk7CisjaWYgR1RFU1RfTEFOR19DWFgx
MQorICBFWFBFQ1RfRVEoMXUsIHRlc3RfbmFtZXMuY291bnQoIkN1c3RvbVRlc3ROYW1lcy9MYW1i
ZGFOYW1lIikpOworI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCit9CisKKy8vIFRlc3QgYSBu
dW1lcmljIG5hbWUgdG8gZW5zdXJlIFByaW50VG9TdHJpbmdQYXJhbU5hbWUgd29ya3MgY29ycmVj
dGx5LgorCitjbGFzcyBDdXN0b21JbnRlZ2VyTmFtaW5nVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBh
cmFtPGludD4ge307CisKK1RFU1RfUChDdXN0b21JbnRlZ2VyTmFtaW5nVGVzdCwgVGVzdHNSZXBv
cnRDb3JyZWN0TmFtZXMpIHsKKyAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVz
dF9pbmZvID0KKyAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVu
dF90ZXN0X2luZm8oKTsKKyAgTWVzc2FnZSB0ZXN0X25hbWVfc3RyZWFtOworICB0ZXN0X25hbWVf
c3RyZWFtIDw8ICJUZXN0c1JlcG9ydENvcnJlY3ROYW1lcy8iIDw8IEdldFBhcmFtKCk7CisgIEVY
UEVDVF9TVFJFUSh0ZXN0X25hbWVfc3RyZWFtLkdldFN0cmluZygpLmNfc3RyKCksIHRlc3RfaW5m
by0+bmFtZSgpKTsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoUHJpbnRUb1N0cmluZywK
KyAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUludGVnZXJOYW1pbmdUZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgUmFuZ2UoMCwgNSksCisgICAgICAgICAgICAgICAgICAgICAgICA6
OnRlc3Rpbmc6OlByaW50VG9TdHJpbmdQYXJhbU5hbWUoKSk7CisKKy8vIFRlc3QgYSBjdXN0b20g
c3RydWN0IHdpdGggUHJpbnRUb1N0cmluZy4KKworc3RydWN0IEN1c3RvbVN0cnVjdCB7CisgIGV4
cGxpY2l0IEN1c3RvbVN0cnVjdChpbnQgdmFsdWUpIDogeCh2YWx1ZSkge30KKyAgaW50IHg7Cit9
OworCitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBzdHJlYW0sIGNvbnN0
IEN1c3RvbVN0cnVjdCYgdmFsKSB7CisgIHN0cmVhbSA8PCB2YWwueDsKKyAgcmV0dXJuIHN0cmVh
bTsKK30KKworY2xhc3MgQ3VzdG9tU3RydWN0TmFtaW5nVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBh
cmFtPEN1c3RvbVN0cnVjdD4ge307CisKK1RFU1RfUChDdXN0b21TdHJ1Y3ROYW1pbmdUZXN0LCBU
ZXN0c1JlcG9ydENvcnJlY3ROYW1lcykgeworICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBj
b25zdCB0ZXN0X2luZm8gPQorICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgp
LT5jdXJyZW50X3Rlc3RfaW5mbygpOworICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07CisgIHRl
c3RfbmFtZV9zdHJlYW0gPDwgIlRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzLyIgPDwgR2V0UGFyYW0o
KTsKKyAgRVhQRUNUX1NUUkVRKHRlc3RfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19zdHIoKSwg
dGVzdF9pbmZvLT5uYW1lKCkpOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChQcmludFRv
U3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tU3RydWN0TmFtaW5nVGVzdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhDdXN0b21TdHJ1Y3QoMCksIEN1c3RvbVN0
cnVjdCgxKSksCisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlByaW50VG9TdHJp
bmdQYXJhbU5hbWUoKSk7CisKKy8vIFRlc3QgdGhhdCB1c2luZyBhIHN0YXRlZnVsIHBhcmFtZXRl
ciBuYW1pbmcgZnVuY3Rpb24gd29ya3MgYXMgZXhwZWN0ZWQuCisKK3N0cnVjdCBTdGF0ZWZ1bE5h
bWluZ0Z1bmN0b3IgeworICBTdGF0ZWZ1bE5hbWluZ0Z1bmN0b3IoKSA6IHN1bSgwKSB7fQorICBz
dGQ6OnN0cmluZyBvcGVyYXRvcigpKGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzxpbnQ+
JiBpbmZvKSB7CisgICAgaW50IHZhbHVlID0gaW5mby5wYXJhbSArIHN1bTsKKyAgICBzdW0gKz0g
aW5mby5wYXJhbTsKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHZhbHVlKTsK
KyAgfQorICBpbnQgc3VtOworfTsKKworY2xhc3MgU3RhdGVmdWxOYW1pbmdUZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHsKKyBwcm90ZWN0ZWQ6CisgIFN0YXRlZnVs
TmFtaW5nVGVzdCgpIDogc3VtXygwKSB7fQorICBpbnQgc3VtXzsKK307CisKK1RFU1RfUChTdGF0
ZWZ1bE5hbWluZ1Rlc3QsIFRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzKSB7CisgIGNvbnN0IDo6dGVz
dGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGluZzo6VW5pdFRl
c3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisgIHN1bV8gKz0gR2V0UGFy
YW0oKTsKKyAgTWVzc2FnZSB0ZXN0X25hbWVfc3RyZWFtOworICB0ZXN0X25hbWVfc3RyZWFtIDw8
ICJUZXN0c1JlcG9ydENvcnJlY3ROYW1lcy8iIDw8IHN1bV87CisgIEVYUEVDVF9TVFJFUSh0ZXN0
X25hbWVfc3RyZWFtLkdldFN0cmluZygpLmNfc3RyKCksIHRlc3RfaW5mby0+bmFtZSgpKTsKK30K
KworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU3RhdGVmdWxOYW1pbmdGdW5jdG9yLAorICAgICAg
ICAgICAgICAgICAgICAgICAgU3RhdGVmdWxOYW1pbmdUZXN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgUmFuZ2UoMCwgNSksCisgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZWZ1bE5hbWlu
Z0Z1bmN0b3IoKSk7CisKKy8vIENsYXNzIHRoYXQgY2Fubm90IGJlIHN0cmVhbWVkIGludG8gYW4g
b3N0cmVhbS4gIEl0IG5lZWRzIHRvIGJlIGNvcHlhYmxlCisvLyAoYW5kLCBpbiBjYXNlIG9mIE1T
VkMsIGFsc28gYXNzaWduYWJsZSkgaW4gb3JkZXIgdG8gYmUgYSB0ZXN0IHBhcmFtZXRlcgorLy8g
dHlwZS4gIEl0cyBkZWZhdWx0IGNvcHkgY29uc3RydWN0b3IgYW5kIGFzc2lnbm1lbnQgb3BlcmF0
b3IgZG8gZXhhY3RseQorLy8gd2hhdCB3ZSBuZWVkLgorY2xhc3MgVW5zdHJlYW1hYmxlIHsKKyBw
dWJsaWM6CisgIGV4cGxpY2l0IFVuc3RyZWFtYWJsZShpbnQgdmFsdWUpIDogdmFsdWVfKHZhbHVl
KSB7fQorCisgcHJpdmF0ZToKKyAgaW50IHZhbHVlXzsKK307CisKK2NsYXNzIENvbW1lbnRUZXN0
IDogcHVibGljIFRlc3RXaXRoUGFyYW08VW5zdHJlYW1hYmxlPiB7fTsKKworVEVTVF9QKENvbW1l
bnRUZXN0LCBUZXN0c0NvcnJlY3RseVJlcG9ydFVuc3RyZWFtYWJsZVBhcmFtcykgeworICBjb25z
dCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQorICAgICA6OnRlc3Rpbmc6
OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOworCisgIEVYUEVD
VF9FUSg6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoR2V0UGFyYW0oKSksIHRlc3RfaW5mby0+dmFs
dWVfcGFyYW0oKSk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEluc3RhbnRpYXRpb25X
aXRoQ29tbWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICBDb21tZW50VGVzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbHVlcyhVbnN0cmVhbWFibGUoMSkpKTsKKworLy8gVmVyaWZ5
IHRoYXQgd2UgY2FuIGNyZWF0ZSBhIGhpZXJhcmNoeSBvZiB0ZXN0IGZpeHR1cmVzLCB3aGVyZSB0
aGUgYmFzZQorLy8gY2xhc3MgZml4dHVyZSBpcyBub3QgcGFyYW1ldGVyaXplZCBhbmQgdGhlIGRl
cml2ZWQgY2xhc3MgaXMuIEluIHRoaXMgY2FzZQorLy8gUGFyYW1ldGVyaXplZERlcml2ZWRUZXN0
IGluaGVyaXRzIGZyb20gTm9uUGFyYW1ldGVyaXplZEJhc2VUZXN0LiAgV2UKKy8vIHBlcmZvcm0g
c2ltcGxlIHRlc3RzIG9uIGJvdGguCitjbGFzcyBOb25QYXJhbWV0ZXJpemVkQmFzZVRlc3QgOiBw
dWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyBwdWJsaWM6CisgIE5vblBhcmFtZXRlcml6ZWRCYXNl
VGVzdCgpIDogbl8oMTcpIHsgfQorIHByb3RlY3RlZDoKKyAgaW50IG5fOworfTsKKworY2xhc3Mg
UGFyYW1ldGVyaXplZERlcml2ZWRUZXN0IDogcHVibGljIE5vblBhcmFtZXRlcml6ZWRCYXNlVGVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyA6OnRlc3Rpbmc6Oldp
dGhQYXJhbUludGVyZmFjZTxpbnQ+IHsKKyBwcm90ZWN0ZWQ6CisgIFBhcmFtZXRlcml6ZWREZXJp
dmVkVGVzdCgpIDogY291bnRfKDApIHsgfQorICBpbnQgY291bnRfOworICBzdGF0aWMgaW50IGds
b2JhbF9jb3VudF87Cit9OworCitpbnQgUGFyYW1ldGVyaXplZERlcml2ZWRUZXN0OjpnbG9iYWxf
Y291bnRfID0gMDsKKworVEVTVF9GKE5vblBhcmFtZXRlcml6ZWRCYXNlVGVzdCwgRml4dHVyZUlz
SW5pdGlhbGl6ZWQpIHsKKyAgRVhQRUNUX0VRKDE3LCBuXyk7Cit9CisKK1RFU1RfUChQYXJhbWV0
ZXJpemVkRGVyaXZlZFRlc3QsIFNlZXNTZXF1ZW5jZSkgeworICBFWFBFQ1RfRVEoMTcsIG5fKTsK
KyAgRVhQRUNUX0VRKDAsIGNvdW50XysrKTsKKyAgRVhQRUNUX0VRKEdldFBhcmFtKCksIGdsb2Jh
bF9jb3VudF8rKyk7Cit9CisKK2NsYXNzIFBhcmFtZXRlcml6ZWREZWF0aFRlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4geyB9OworCitURVNUX0YoUGFyYW1ldGVyaXpl
ZERlYXRoVGVzdCwgR2V0UGFyYW1EaWVzRnJvbVRlc3RGKSB7CisgIEVYUEVDVF9ERUFUSF9JRl9T
VVBQT1JURUQoR2V0UGFyYW0oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLiogdmFs
dWUtcGFyYW1ldGVyaXplZCB0ZXN0IC4qIik7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KFJhbmdlWmVyb1RvRml2ZSwgUGFyYW1ldGVyaXplZERlcml2ZWRUZXN0LCBSYW5nZSgwLCA1KSk7
CisKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIC8vIFVzZWQgaW4gVGVz
dEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZS4KKyAgQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KFRl
c3RHZW5lcmF0aW9uVGVzdDo6RW52aXJvbm1lbnQ6Okluc3RhbmNlKCkpOworICAvLyBVc2VkIGlu
IEdlbmVyYXRvckV2YWx1YXRpb25UZXN0IHRlc3QgY2FzZS4gVGVzdHMgdGhhdCB0aGUgdXBkYXRl
ZCB2YWx1ZQorICAvLyB3aWxsIGJlIHBpY2tlZCB1cCBmb3IgaW5zdGFudGlhdGluZyB0ZXN0cyBp
biBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdC4KKyAgR2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnNl
dF9wYXJhbV92YWx1ZSgxKTsKKworICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBh
cmd2KTsKKworICAvLyBVc2VkIGluIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0IHRlc3QgY2FzZS4g
VGVzdHMgdGhhdCB2YWx1ZSB1cGRhdGVkCisgIC8vIGhlcmUgd2lsbCBOT1QgYmUgdXNlZCBmb3Ig
aW5zdGFudGlhdGluZyB0ZXN0cyBpbgorICAvLyBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdC4KKyAg
R2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnNldF9wYXJhbV92YWx1ZSgyKTsKKworICByZXR1cm4g
UlVOX0FMTF9URVNUUygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzMmE2MWY0
OTI2YmE5MjI1MTU5ZGI0Njk4MTBlNDFjYWMwZDIwYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmgKQEAg
LTAsMCArMSw1MSBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0
OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8v
CisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorLy8KKy8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChH
b29nbGUgVGVzdCkKKy8vCisvLyBUaGlzIGhlYWRlciBmaWxlIHByb3ZpZGVzIGNsYXNzZXMgYW5k
IGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkKKy8vIGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0IGl0
c2VsZi4KKworI2lmbmRlZiBHVEVTVF9URVNUX0dURVNUX1BBUkFNX1RFU1RfVEVTVF9IXworI2Rl
ZmluZSBHVEVTVF9URVNUX0dURVNUX1BBUkFNX1RFU1RfVEVTVF9IXworCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKKworLy8gVGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIGRlZmluaXRpb24gYW5k
IGluc3RhbnRpYXRpb24gb2YgYSB0ZXN0CisvLyBpbiBzZXBhcmF0ZSB0cmFuc2xhdGlvbiB1bml0
cy4KK2NsYXNzIEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0V2l0aFBhcmFtPGludD4geworfTsKKworLy8gVGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIGlu
c3RhbnRpYXRpb24gb2YgYSB0ZXN0IGluIG11bHRpcGxlCisvLyB0cmFuc2xhdGlvbiB1bml0cy4K
K2NsYXNzIEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdAorICAgIDog
cHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHsKK307CisKKyNlbmRpZiAgLy8g
R1RFU1RfVEVTVF9HVEVTVF9QQVJBTV9URVNUX1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0Mi10ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QyLXRlc3QuY2MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjViYjk0NWMyZjhlZDI5ZmQ5MDg1NmIyM2UwM2MwMWUyYTg0MzA2MAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1w
YXJhbS10ZXN0Mi10ZXN0LmNjCkBAIC0wLDAgKzEsNjEgQEAKKy8vIENvcHlyaWdodCAyMDA4LCBH
b29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
Ly8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8KKy8vIFRlc3RzIGZvciBHb29nbGUgVGVzdCBp
dHNlbGYuICBUaGlzIHZlcmlmaWVzIHRoYXQgdGhlIGJhc2ljIGNvbnN0cnVjdHMgb2YKKy8vIEdv
b2dsZSBUZXN0IHdvcmsuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgInRl
c3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuaCIKKwordXNpbmcgOjp0ZXN0aW5nOjpWYWx1
ZXM7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVyYXRvcjsKKworLy8gVGVz
dHMgdGhhdCBnZW5lcmF0b3JzIGRlZmluZWQgaW4gYSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5p
dAorLy8gYXJlIGZ1bmN0aW9uYWwuIFRoZSB0ZXN0IHVzaW5nIGV4dGVybl9nZW4gaXMgZGVmaW5l
ZAorLy8gaW4gZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MuCitQYXJhbUdlbmVyYXRvcjxp
bnQ+IGV4dGVybl9nZW4gPSBWYWx1ZXMoMzMpOworCisvLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVy
aXplZCB0ZXN0IGNhc2UgY2FuIGJlIGRlZmluZWQgaW4gb25lIHRyYW5zbGF0aW9uIHVuaXQKKy8v
IGFuZCBpbnN0YW50aWF0ZWQgaW4gYW5vdGhlci4gVGhlIHRlc3QgaXMgZGVmaW5lZCBpbgorLy8g
Z29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MgYW5kIEV4dGVybmFsSW5zdGFudGlhdGlvblRl
c3QgZml4dHVyZSBjbGFzcyBpcworLy8gZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3Qu
aC4KK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKE11bHRpcGxlc09mMzMsCisgICAgICAgICAgICAg
ICAgICAgICAgICBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsdWVzKDMzLCA2NikpOworCisvLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0
ZXN0IGNhc2UgY2FuIGJlIGluc3RhbnRpYXRlZAorLy8gaW4gbXVsdGlwbGUgdHJhbnNsYXRpb24g
dW5pdHMuIEFub3RoZXIgaW5zdGFudGlhdGlvbiBpcyBkZWZpbmVkCisvLyBpbiBnb29nbGV0ZXN0
LXBhcmFtLXRlc3QtdGVzdC5jYyBhbmQKKy8vIEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNs
YWlvblVuaXRzVGVzdCBmaXh0dXJlIGlzIGRlZmluZWQgaW4KKy8vIGd0ZXN0LXBhcmFtLXRlc3Rf
dGVzdC5oCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5jZTIsCisgICAgICAgICAgICAg
ICAgICAgICAgICBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNDIqMywgNDIqNCwgNDIqNSkpOworCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcG9ydC10ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBvcnQtdGVzdC5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zOTkzMTZmOTViNjM3YWNhOTJmYjVhMTU0NGVjN2ZjMjdjMmVmYjI3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0
LXBvcnQtdGVzdC5jYwpAQCAtMCwwICsxLDEzMDAgQEAKKy8vIENvcHlyaWdodCAyMDA4LCBHb29n
bGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBUaGlzIGZpbGUgdGVzdHMgdGhlIGludGVybmFs
IGNyb3NzLXBsYXRmb3JtIHN1cHBvcnQgdXRpbGl0aWVzLgorI2luY2x1ZGUgPHN0ZGlvLmg+CisK
KyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCisKKyNpZiBHVEVTVF9PU19N
QUMKKyMgaW5jbHVkZSA8dGltZS5oPgorI2VuZGlmICAvLyBHVEVTVF9PU19NQUMKKworI2luY2x1
ZGUgPGxpc3Q+CisjaW5jbHVkZSA8dXRpbGl0eT4gIC8vIEZvciBzdGQ6OnBhaXIgYW5kIHN0ZDo6
bWFrZV9wYWlyLgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCisjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVy
bmFsLWlubC5oIgorCit1c2luZyBzdGQ6Om1ha2VfcGFpcjsKK3VzaW5nIHN0ZDo6cGFpcjsKKwor
bmFtZXNwYWNlIHRlc3RpbmcgeworbmFtZXNwYWNlIGludGVybmFsIHsKKworVEVTVChJc1hEaWdp
dFRlc3QsIFdvcmtzRm9yTmFycm93QXNjaWkpIHsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoJzAn
KSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KCc5JykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdp
dCgnQScpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoJ0YnKSk7CisgIEVYUEVDVF9UUlVFKElz
WERpZ2l0KCdhJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgnZicpKTsKKworICBFWFBFQ1Rf
RkFMU0UoSXNYRGlnaXQoJy0nKSk7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdCgnZycpKTsKKyAg
RVhQRUNUX0ZBTFNFKElzWERpZ2l0KCdHJykpOworfQorCitURVNUKElzWERpZ2l0VGVzdCwgUmV0
dXJuc0ZhbHNlRm9yTmFycm93Tm9uQXNjaWkpIHsKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KHN0
YXRpY19jYXN0PGNoYXI+KCdceDgwJykpKTsKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KHN0YXRp
Y19jYXN0PGNoYXI+KCcwJyB8ICdceDgwJykpKTsKK30KKworVEVTVChJc1hEaWdpdFRlc3QsIFdv
cmtzRm9yV2lkZUFzY2lpKSB7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnMCcpKTsKKyAgRVhQ
RUNUX1RSVUUoSXNYRGlnaXQoTCc5JykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdChMJ0EnKSk7
CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnRicpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQo
TCdhJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdChMJ2YnKSk7CisKKyAgRVhQRUNUX0ZBTFNF
KElzWERpZ2l0KEwnLScpKTsKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KEwnZycpKTsKKyAgRVhQ
RUNUX0ZBTFNFKElzWERpZ2l0KEwnRycpKTsKK30KKworVEVTVChJc1hEaWdpdFRlc3QsIFJldHVy
bnNGYWxzZUZvcldpZGVOb25Bc2NpaSkgeworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoc3RhdGlj
X2Nhc3Q8d2NoYXJfdD4oMHg4MCkpKTsKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KHN0YXRpY19j
YXN0PHdjaGFyX3Q+KEwnMCcgfCAweDgwKSkpOworICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoc3Rh
dGljX2Nhc3Q8d2NoYXJfdD4oTCcwJyB8IDB4MTAwKSkpOworfQorCitjbGFzcyBCYXNlIHsKKyBw
dWJsaWM6CisgIC8vIENvcHkgY29uc3RydWN0b3IgYW5kIGFzc2lnbm1lbnQgb3BlcmF0b3IgZG8g
ZXhhY3RseSB3aGF0IHdlIG5lZWQsIHNvIHdlCisgIC8vIHVzZSB0aGVtLgorICBCYXNlKCkgOiBt
ZW1iZXJfKDApIHt9CisgIGV4cGxpY2l0IEJhc2UoaW50IG4pIDogbWVtYmVyXyhuKSB7fQorICB2
aXJ0dWFsIH5CYXNlKCkge30KKyAgaW50IG1lbWJlcigpIHsgcmV0dXJuIG1lbWJlcl87IH0KKwor
IHByaXZhdGU6CisgIGludCBtZW1iZXJfOworfTsKKworY2xhc3MgRGVyaXZlZCA6IHB1YmxpYyBC
YXNlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IERlcml2ZWQoaW50IG4pIDogQmFzZShuKSB7fQor
fTsKKworVEVTVChJbXBsaWNpdENhc3RUZXN0LCBDb252ZXJ0c1BvaW50ZXJzKSB7CisgIERlcml2
ZWQgZGVyaXZlZCgwKTsKKyAgRVhQRUNUX1RSVUUoJmRlcml2ZWQgPT0gOjp0ZXN0aW5nOjppbnRl
cm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlKj4oJmRlcml2ZWQpKTsKK30KKworVEVTVChJbXBsaWNp
dENhc3RUZXN0LCBDYW5Vc2VJbmhlcml0YW5jZSkgeworICBEZXJpdmVkIGRlcml2ZWQoMSk7Cisg
IEJhc2UgYmFzZSA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88QmFzZT4oZGVy
aXZlZCk7CisgIEVYUEVDVF9FUShkZXJpdmVkLm1lbWJlcigpLCBiYXNlLm1lbWJlcigpKTsKK30K
KworY2xhc3MgQ2FzdGFibGUgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgQ2FzdGFibGUoYm9vbCog
Y29udmVydGVkKSA6IGNvbnZlcnRlZF8oY29udmVydGVkKSB7fQorICBvcGVyYXRvciBCYXNlKCkg
eworICAgICpjb252ZXJ0ZWRfID0gdHJ1ZTsKKyAgICByZXR1cm4gQmFzZSgpOworICB9CisKKyBw
cml2YXRlOgorICBib29sKiBjb252ZXJ0ZWRfOworfTsKKworVEVTVChJbXBsaWNpdENhc3RUZXN0
LCBDYW5Vc2VOb25Db25zdENhc3RPcGVyYXRvcikgeworICBib29sIGNvbnZlcnRlZCA9IGZhbHNl
OworICBDYXN0YWJsZSBjYXN0YWJsZSgmY29udmVydGVkKTsKKyAgQmFzZSBiYXNlID0gOjp0ZXN0
aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlPihjYXN0YWJsZSk7CisgIEVYUEVDVF9U
UlVFKGNvbnZlcnRlZCk7Cit9CisKK2NsYXNzIENvbnN0Q2FzdGFibGUgeworIHB1YmxpYzoKKyAg
ZXhwbGljaXQgQ29uc3RDYXN0YWJsZShib29sKiBjb252ZXJ0ZWQpIDogY29udmVydGVkXyhjb252
ZXJ0ZWQpIHt9CisgIG9wZXJhdG9yIEJhc2UoKSBjb25zdCB7CisgICAgKmNvbnZlcnRlZF8gPSB0
cnVlOworICAgIHJldHVybiBCYXNlKCk7CisgIH0KKworIHByaXZhdGU6CisgIGJvb2wqIGNvbnZl
cnRlZF87Cit9OworCitURVNUKEltcGxpY2l0Q2FzdFRlc3QsIENhblVzZUNvbnN0Q2FzdE9wZXJh
dG9yT25Db25zdFZhbHVlcykgeworICBib29sIGNvbnZlcnRlZCA9IGZhbHNlOworICBjb25zdCBD
b25zdENhc3RhYmxlIGNvbnN0X2Nhc3RhYmxlKCZjb252ZXJ0ZWQpOworICBCYXNlIGJhc2UgPSA6
OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+KGNvbnN0X2Nhc3RhYmxlKTsK
KyAgRVhQRUNUX1RSVUUoY29udmVydGVkKTsKK30KKworY2xhc3MgQ29uc3RBbmROb25Db25zdENh
c3RhYmxlIHsKKyBwdWJsaWM6CisgIENvbnN0QW5kTm9uQ29uc3RDYXN0YWJsZShib29sKiBjb252
ZXJ0ZWQsIGJvb2wqIGNvbnN0X2NvbnZlcnRlZCkKKyAgICAgIDogY29udmVydGVkXyhjb252ZXJ0
ZWQpLCBjb25zdF9jb252ZXJ0ZWRfKGNvbnN0X2NvbnZlcnRlZCkge30KKyAgb3BlcmF0b3IgQmFz
ZSgpIHsKKyAgICAqY29udmVydGVkXyA9IHRydWU7CisgICAgcmV0dXJuIEJhc2UoKTsKKyAgfQor
ICBvcGVyYXRvciBCYXNlKCkgY29uc3QgeworICAgICpjb25zdF9jb252ZXJ0ZWRfID0gdHJ1ZTsK
KyAgICByZXR1cm4gQmFzZSgpOworICB9CisKKyBwcml2YXRlOgorICBib29sKiBjb252ZXJ0ZWRf
OworICBib29sKiBjb25zdF9jb252ZXJ0ZWRfOworfTsKKworVEVTVChJbXBsaWNpdENhc3RUZXN0
LCBDYW5TZWxlY3RCZXR3ZWVuQ29uc3RBbmROb25Db25zdENhc3JBcHByb3ByaWF0ZWx5KSB7Cisg
IGJvb2wgY29udmVydGVkID0gZmFsc2U7CisgIGJvb2wgY29uc3RfY29udmVydGVkID0gZmFsc2U7
CisgIENvbnN0QW5kTm9uQ29uc3RDYXN0YWJsZSBjYXN0YWJsZSgmY29udmVydGVkLCAmY29uc3Rf
Y29udmVydGVkKTsKKyAgQmFzZSBiYXNlID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRD
YXN0XzxCYXNlPihjYXN0YWJsZSk7CisgIEVYUEVDVF9UUlVFKGNvbnZlcnRlZCk7CisgIEVYUEVD
VF9GQUxTRShjb25zdF9jb252ZXJ0ZWQpOworCisgIGNvbnZlcnRlZCA9IGZhbHNlOworICBjb25z
dF9jb252ZXJ0ZWQgPSBmYWxzZTsKKyAgY29uc3QgQ29uc3RBbmROb25Db25zdENhc3RhYmxlIGNv
bnN0X2Nhc3RhYmxlKCZjb252ZXJ0ZWQsICZjb25zdF9jb252ZXJ0ZWQpOworICBiYXNlID0gOjp0
ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlPihjb25zdF9jYXN0YWJsZSk7Cisg
IEVYUEVDVF9GQUxTRShjb252ZXJ0ZWQpOworICBFWFBFQ1RfVFJVRShjb25zdF9jb252ZXJ0ZWQp
OworfQorCitjbGFzcyBUbyB7CisgcHVibGljOgorICBUbyhib29sKiBjb252ZXJ0ZWQpIHsgKmNv
bnZlcnRlZCA9IHRydWU7IH0gIC8vIE5PTElOVAorfTsKKworVEVTVChJbXBsaWNpdENhc3RUZXN0
LCBDYW5Vc2VJbXBsaWNpdENvbnN0cnVjdG9yKSB7CisgIGJvb2wgY29udmVydGVkID0gZmFsc2U7
CisgIFRvIHRvID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxUbz4oJmNvbnZl
cnRlZCk7CisgICh2b2lkKXRvOworICBFWFBFQ1RfVFJVRShjb252ZXJ0ZWQpOworfQorCitURVNU
KEl0ZXJhdG9yVHJhaXRzVGVzdCwgV29ya3NGb3JTVExDb250YWluZXJJdGVyYXRvcnMpIHsKKyAg
U3RhdGljQXNzZXJ0VHlwZUVxPGludCwKKyAgICAgIEl0ZXJhdG9yVHJhaXRzPCA6OnN0ZDo6dmVj
dG9yPGludD46OmNvbnN0X2l0ZXJhdG9yPjo6dmFsdWVfdHlwZT4oKTsKKyAgU3RhdGljQXNzZXJ0
VHlwZUVxPGJvb2wsCisgICAgICBJdGVyYXRvclRyYWl0czwgOjpzdGQ6Omxpc3Q8Ym9vbD46Oml0
ZXJhdG9yPjo6dmFsdWVfdHlwZT4oKTsKK30KKworVEVTVChJdGVyYXRvclRyYWl0c1Rlc3QsIFdv
cmtzRm9yUG9pbnRlclRvTm9uQ29uc3QpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGNoYXIsIEl0
ZXJhdG9yVHJhaXRzPGNoYXIqPjo6dmFsdWVfdHlwZT4oKTsKKyAgU3RhdGljQXNzZXJ0VHlwZUVx
PGNvbnN0IHZvaWQqLCBJdGVyYXRvclRyYWl0czxjb25zdCB2b2lkKio+Ojp2YWx1ZV90eXBlPigp
OworfQorCitURVNUKEl0ZXJhdG9yVHJhaXRzVGVzdCwgV29ya3NGb3JQb2ludGVyVG9Db25zdCkg
eworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y2hhciwgSXRlcmF0b3JUcmFpdHM8Y29uc3QgY2hhcio+
Ojp2YWx1ZV90eXBlPigpOworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3Qgdm9pZCosCisgICAg
ICBJdGVyYXRvclRyYWl0czxjb25zdCB2b2lkKiBjb25zdCo+Ojp2YWx1ZV90eXBlPigpOworfQor
CisvLyBUZXN0cyB0aGF0IHRoZSBlbGVtZW50X3R5cGUgdHlwZWRlZiBpcyBhdmFpbGFibGUgaW4g
c2NvcGVkX3B0ciBhbmQgcmVmZXJzCisvLyB0byB0aGUgcGFyYW1ldGVyIHR5cGUuCitURVNUKFNj
b3BlZFB0clRlc3QsIERlZmluZXNFbGVtZW50VHlwZSkgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8
aW50LCA6OnRlc3Rpbmc6OmludGVybmFsOjpzY29wZWRfcHRyPGludD46OmVsZW1lbnRfdHlwZT4o
KTsKK30KKworLy8gRklYTUU6IEltcGxlbWVudCBUSEUgUkVTVCBvZiBzY29wZWRfcHRyIHRlc3Rz
LgorCitURVNUKEd0ZXN0Q2hlY2tTeW50YXhUZXN0LCBCZWhhdmVzTGlrZUFTaW5nbGVTdGF0ZW1l
bnQpIHsKKyAgaWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgR1RFU1RfQ0hFQ0tfKGZhbHNlKSA8PCAi
VGhpcyBzaG91bGQgbmV2ZXIgYmUgZXhlY3V0ZWQ7ICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJJdCdzIGEgY29tcGlsYXRpb24gdGVzdCBvbmx5LiI7CisKKyAgaWYgKEFsd2F5c1RydWUo
KSkKKyAgICBHVEVTVF9DSEVDS18odHJ1ZSk7CisgIGVsc2UKKyAgICA7ICAvLyBOT0xJTlQKKwor
ICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICA7ICAvLyBOT0xJTlQKKyAgZWxzZQorICAgIEdURVNU
X0NIRUNLXyh0cnVlKSA8PCAiIjsKK30KKworVEVTVChHdGVzdENoZWNrU3ludGF4VGVzdCwgV29y
a3NXaXRoU3dpdGNoKSB7CisgIHN3aXRjaCAoMCkgeworICAgIGNhc2UgMToKKyAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICBHVEVTVF9DSEVDS18odHJ1ZSk7CisgIH0KKworICBzd2l0
Y2ggKDApCisgICAgY2FzZSAwOgorICAgICAgR1RFU1RfQ0hFQ0tfKHRydWUpIDw8ICJDaGVjayBm
YWlsZWQgaW4gc3dpdGNoIGNhc2UiOworfQorCisvLyBWZXJpZmllcyBiZWhhdmlvciBvZiBGb3Jt
YXRGaWxlTG9jYXRpb24uCitURVNUKEZvcm1hdEZpbGVMb2NhdGlvblRlc3QsIEZvcm1hdHNGaWxl
TG9jYXRpb24pIHsKKyAgRVhQRUNUX1BSRURfRk9STUFUMihJc1N1YnN0cmluZywgImZvby5jYyIs
IEZvcm1hdEZpbGVMb2NhdGlvbigiZm9vLmNjIiwgNDIpKTsKKyAgRVhQRUNUX1BSRURfRk9STUFU
MihJc1N1YnN0cmluZywgIjQyIiwgRm9ybWF0RmlsZUxvY2F0aW9uKCJmb28uY2MiLCA0MikpOwor
fQorCitURVNUKEZvcm1hdEZpbGVMb2NhdGlvblRlc3QsIEZvcm1hdHNVbmtub3duRmlsZSkgewor
ICBFWFBFQ1RfUFJFRF9GT1JNQVQyKAorICAgICAgSXNTdWJzdHJpbmcsICJ1bmtub3duIGZpbGUi
LCBGb3JtYXRGaWxlTG9jYXRpb24oTlVMTCwgNDIpKTsKKyAgRVhQRUNUX1BSRURfRk9STUFUMihJ
c1N1YnN0cmluZywgIjQyIiwgRm9ybWF0RmlsZUxvY2F0aW9uKE5VTEwsIDQyKSk7Cit9CisKK1RF
U1QoRm9ybWF0RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c1Vrbm93bkxpbmUpIHsKKyAgRVhQRUNU
X0VRKCJmb28uY2M6IiwgRm9ybWF0RmlsZUxvY2F0aW9uKCJmb28uY2MiLCAtMSkpOworfQorCitU
RVNUKEZvcm1hdEZpbGVMb2NhdGlvblRlc3QsIEZvcm1hdHNVa25vd25GaWxlQW5kTGluZSkgewor
ICBFWFBFQ1RfRVEoInVua25vd24gZmlsZToiLCBGb3JtYXRGaWxlTG9jYXRpb24oTlVMTCwgLTEp
KTsKK30KKworLy8gVmVyaWZpZXMgYmVoYXZpb3Igb2YgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVu
dEZpbGVMb2NhdGlvbi4KK1RFU1QoRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlv
blRlc3QsIEZvcm1hdHNGaWxlTG9jYXRpb24pIHsKKyAgRVhQRUNUX0VRKCJmb28uY2M6NDIiLCBG
b3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uKCJmb28uY2MiLCA0MikpOworfQor
CitURVNUKEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRz
VWtub3duRmlsZSkgeworICBFWFBFQ1RfRVEoInVua25vd24gZmlsZTo0MiIsCisgICAgICAgICAg
ICBGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uKE5VTEwsIDQyKSk7Cit9CisK
K1RFU1QoRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvblRlc3QsIEZvcm1hdHNV
a25vd25MaW5lKSB7CisgIEVYUEVDVF9FUSgiZm9vLmNjIiwgRm9ybWF0Q29tcGlsZXJJbmRlcGVu
ZGVudEZpbGVMb2NhdGlvbigiZm9vLmNjIiwgLTEpKTsKK30KKworVEVTVChGb3JtYXRDb21waWxl
ckluZGVwZW5kZW50RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c1Vrbm93bkZpbGVBbmRMaW5lKSB7
CisgIEVYUEVDVF9FUSgidW5rbm93biBmaWxlIiwgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZp
bGVMb2NhdGlvbihOVUxMLCAtMSkpOworfQorCisjaWYgR1RFU1RfT1NfTElOVVggfHwgR1RFU1Rf
T1NfTUFDIHx8IEdURVNUX09TX1FOWCB8fCBHVEVTVF9PU19GVUNIU0lBCit2b2lkKiBUaHJlYWRG
dW5jKHZvaWQqIGRhdGEpIHsKKyAgaW50ZXJuYWw6Ok11dGV4KiBtdXRleCA9IHN0YXRpY19jYXN0
PGludGVybmFsOjpNdXRleCo+KGRhdGEpOworICBtdXRleC0+TG9jaygpOworICBtdXRleC0+VW5s
b2NrKCk7CisgIHJldHVybiBOVUxMOworfQorCitURVNUKEdldFRocmVhZENvdW50VGVzdCwgUmV0
dXJuc0NvcnJlY3RWYWx1ZSkgeworICBjb25zdCBzaXplX3Qgc3RhcnRpbmdfY291bnQgPSBHZXRU
aHJlYWRDb3VudCgpOworICBwdGhyZWFkX3QgICAgICAgdGhyZWFkX2lkOworCisgIGludGVybmFs
OjpNdXRleCBtdXRleDsKKyAgeworICAgIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXgp
OworICAgIHB0aHJlYWRfYXR0cl90ICBhdHRyOworICAgIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0
dHJfaW5pdCgmYXR0cikpOworICAgIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0dHJfc2V0ZGV0YWNo
c3RhdGUoJmF0dHIsIFBUSFJFQURfQ1JFQVRFX0pPSU5BQkxFKSk7CisKKyAgICBjb25zdCBpbnQg
c3RhdHVzID0gcHRocmVhZF9jcmVhdGUoJnRocmVhZF9pZCwgJmF0dHIsICZUaHJlYWRGdW5jLCAm
bXV0ZXgpOworICAgIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0dHJfZGVzdHJveSgmYXR0cikpOwor
ICAgIEFTU0VSVF9FUSgwLCBzdGF0dXMpOworICAgIEVYUEVDVF9FUShzdGFydGluZ19jb3VudCAr
IDEsIEdldFRocmVhZENvdW50KCkpOworICB9CisKKyAgdm9pZCogZHVtbXk7CisgIEFTU0VSVF9F
USgwLCBwdGhyZWFkX2pvaW4odGhyZWFkX2lkLCAmZHVtbXkpKTsKKworICAvLyBUaGUgT1MgbWF5
IG5vdCBpbW1lZGlhdGVseSByZXBvcnQgdGhlIHVwZGF0ZWQgdGhyZWFkIGNvdW50IGFmdGVyCisg
IC8vIGpvaW5pbmcgYSB0aHJlYWQsIGNhdXNpbmcgZmxha2luZXNzIGluIHRoaXMgdGVzdC4gVG8g
Y291bnRlciB0aGF0LCB3ZQorICAvLyB3YWl0IGZvciB1cCB0byAuNSBzZWNvbmRzIGZvciB0aGUg
T1MgdG8gcmVwb3J0IHRoZSBjb3JyZWN0IHZhbHVlLgorICBmb3IgKGludCBpID0gMDsgaSA8IDU7
ICsraSkgeworICAgIGlmIChHZXRUaHJlYWRDb3VudCgpID09IHN0YXJ0aW5nX2NvdW50KQorICAg
ICAgYnJlYWs7CisKKyAgICBTbGVlcE1pbGxpc2Vjb25kcygxMDApOworICB9CisKKyAgRVhQRUNU
X0VRKHN0YXJ0aW5nX2NvdW50LCBHZXRUaHJlYWRDb3VudCgpKTsKK30KKyNlbHNlCitURVNUKEdl
dFRocmVhZENvdW50VGVzdCwgUmV0dXJuc1plcm9XaGVuVW5hYmxlVG9Db3VudFRocmVhZHMpIHsK
KyAgRVhQRUNUX0VRKDBVLCBHZXRUaHJlYWRDb3VudCgpKTsKK30KKyNlbmRpZiAgLy8gR1RFU1Rf
T1NfTElOVVggfHwgR1RFU1RfT1NfTUFDIHx8IEdURVNUX09TX1FOWCB8fCBHVEVTVF9PU19GVUNI
U0lBCisKK1RFU1QoR3Rlc3RDaGVja0RlYXRoVGVzdCwgRGllc1dpdGhDb3JyZWN0T3V0cHV0T25G
YWlsdXJlKSB7CisgIGNvbnN0IGJvb2wgYV9mYWxzZV9jb25kaXRpb24gPSBmYWxzZTsKKyAgY29u
c3QgY2hhciByZWdleFtdID0KKyNpZmRlZiBfTVNDX1ZFUgorICAgICAiZ29vZ2xldGVzdC1wb3J0
LXRlc3RcXC5jY1xcKFxcZCtcXCk6IgorI2VsaWYgR1RFU1RfVVNFU19QT1NJWF9SRQorICAgICAi
Z29vZ2xldGVzdC1wb3J0LXRlc3RcXC5jYzpbMC05XSsiCisjZWxzZQorICAgICAiZ29vZ2xldGVz
dC1wb3J0LXRlc3RcXC5jYzpcXGQrIgorI2VuZGlmICAvLyBfTVNDX1ZFUgorICAgICAiLiphX2Zh
bHNlX2NvbmRpdGlvbi4qRXh0cmEgaW5mby4qIjsKKworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9S
VEVEKEdURVNUX0NIRUNLXyhhX2ZhbHNlX2NvbmRpdGlvbikgPDwgIkV4dHJhIGluZm8iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2V4KTsKK30KKworI2lmIEdURVNUX0hBU19ERUFU
SF9URVNUCisKK1RFU1QoR3Rlc3RDaGVja0RlYXRoVGVzdCwgTGl2ZXNTaWxlbnRseU9uU3VjY2Vz
cykgeworICBFWFBFQ1RfRVhJVCh7CisgICAgICBHVEVTVF9DSEVDS18odHJ1ZSkgPDwgIkV4dHJh
IGluZm8iOworICAgICAgOjpzdGQ6OmNlcnIgPDwgIlN1Y2Nlc3NcbiI7CisgICAgICBleGl0KDAp
OyB9LAorICAgICAgOjp0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgwKSwgIlN1Y2Nlc3MiKTsKK30K
KworI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisvLyBWZXJpZmllcyB0aGF0IEdv
b2dsZSBUZXN0IGNob29zZSByZWd1bGFyIGV4cHJlc3Npb24gZW5naW5lIGFwcHJvcHJpYXRlIHRv
CisvLyB0aGUgcGxhdGZvcm0uIFRoZSB0ZXN0IHdpbGwgcHJvZHVjZSBjb21waWxlciBlcnJvcnMg
aW4gY2FzZSBvZiBmYWlsdXJlLgorLy8gRm9yIHNpbXBsaWNpdHksIHdlIG9ubHkgY292ZXIgdGhl
IG1vc3QgaW1wb3J0YW50IHBsYXRmb3JtcyBoZXJlLgorVEVTVChSZWdleEVuZ2luZVNlbGVjdGlv
blRlc3QsIFNlbGVjdHNDb3JyZWN0UmVnZXhFbmdpbmUpIHsKKyNpZiAhR1RFU1RfVVNFU19QQ1JF
CisjIGlmIEdURVNUX0hBU19QT1NJWF9SRQorCisgIEVYUEVDVF9UUlVFKEdURVNUX1VTRVNfUE9T
SVhfUkUpOworCisjIGVsc2UKKworICBFWFBFQ1RfVFJVRShHVEVTVF9VU0VTX1NJTVBMRV9SRSk7
CisKKyMgZW5kaWYKKyNlbmRpZiAgLy8gIUdURVNUX1VTRVNfUENSRQorfQorCisjaWYgR1RFU1Rf
VVNFU19QT1NJWF9SRQorCisjIGlmIEdURVNUX0hBU19UWVBFRF9URVNUCisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBTdHI+CitjbGFzcyBSRVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9Owor
CisvLyBEZWZpbmVzIFN0cmluZ1R5cGVzIGFzIHRoZSBsaXN0IG9mIGFsbCBzdHJpbmcgdHlwZXMg
dGhhdCBjbGFzcyBSRQorLy8gc3VwcG9ydHMuCit0eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPAorICAg
IDo6c3RkOjpzdHJpbmcsCisjICBpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworICAgIDo6c3Ry
aW5nLAorIyAgZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisgICAgY29uc3QgY2hh
cio+IFN0cmluZ1R5cGVzOworCitUWVBFRF9URVNUX0NBU0UoUkVUZXN0LCBTdHJpbmdUeXBlcyk7
CisKKy8vIFRlc3RzIFJFJ3MgaW1wbGljaXQgY29uc3RydWN0b3JzLgorVFlQRURfVEVTVChSRVRl
c3QsIEltcGxpY2l0Q29uc3RydWN0b3JXb3JrcykgeworICBjb25zdCBSRSBlbXB0eShUeXBlUGFy
YW0oIiIpKTsKKyAgRVhQRUNUX1NUUkVRKCIiLCBlbXB0eS5wYXR0ZXJuKCkpOworCisgIGNvbnN0
IFJFIHNpbXBsZShUeXBlUGFyYW0oImhlbGxvIikpOworICBFWFBFQ1RfU1RSRVEoImhlbGxvIiwg
c2ltcGxlLnBhdHRlcm4oKSk7CisKKyAgY29uc3QgUkUgbm9ybWFsKFR5cGVQYXJhbSgiLiooXFx3
KykiKSk7CisgIEVYUEVDVF9TVFJFUSgiLiooXFx3KykiLCBub3JtYWwucGF0dGVybigpKTsKK30K
KworLy8gVGVzdHMgdGhhdCBSRSdzIGNvbnN0cnVjdG9ycyByZWplY3QgaW52YWxpZCByZWd1bGFy
IGV4cHJlc3Npb25zLgorVFlQRURfVEVTVChSRVRlc3QsIFJlamVjdHNJbnZhbGlkUmVnZXgpIHsK
KyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIGNvbnN0IFJFIGludmFsaWQoVHlwZVBh
cmFtKCI/IikpOworICB9LCAiXCI/XCIgaXMgbm90IGEgdmFsaWQgUE9TSVggRXh0ZW5kZWQgcmVn
dWxhciBleHByZXNzaW9uLiIpOworfQorCisvLyBUZXN0cyBSRTo6RnVsbE1hdGNoKCkuCitUWVBF
RF9URVNUKFJFVGVzdCwgRnVsbE1hdGNoV29ya3MpIHsKKyAgY29uc3QgUkUgZW1wdHkoVHlwZVBh
cmFtKCIiKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCIiKSwgZW1w
dHkpKTsKKyAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJhIiksIGVtcHR5
KSk7CisKKyAgY29uc3QgUkUgcmUoVHlwZVBhcmFtKCJhLip6IikpOworICBFWFBFQ1RfVFJVRShS
RTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYXoiKSwgcmUpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OkZ1
bGxNYXRjaChUeXBlUGFyYW0oImF4eXoiKSwgcmUpKTsKKyAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxs
TWF0Y2goVHlwZVBhcmFtKCJiYXoiKSwgcmUpKTsKKyAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0
Y2goVHlwZVBhcmFtKCJhenkiKSwgcmUpKTsKK30KKworLy8gVGVzdHMgUkU6OlBhcnRpYWxNYXRj
aCgpLgorVFlQRURfVEVTVChSRVRlc3QsIFBhcnRpYWxNYXRjaFdvcmtzKSB7CisgIGNvbnN0IFJF
IGVtcHR5KFR5cGVQYXJhbSgiIikpOworICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5
cGVQYXJhbSgiIiksIGVtcHR5KSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goVHlw
ZVBhcmFtKCJhIiksIGVtcHR5KSk7CisKKyAgY29uc3QgUkUgcmUoVHlwZVBhcmFtKCJhLip6Iikp
OworICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiYXoiKSwgcmUpKTsK
KyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oImF4eXoiKSwgcmUpKTsK
KyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oImJheiIpLCByZSkpOwor
ICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiYXp5IiksIHJlKSk7Cisg
IEVYUEVDVF9GQUxTRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgienphIiksIHJlKSk7Cit9
CisKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUCisKKyNlbGlmIEdURVNUX1VTRVNf
U0lNUExFX1JFCisKK1RFU1QoSXNJblNldFRlc3QsIE51bENoYXJJc05vdEluQW55U2V0KSB7Cisg
IEVYUEVDVF9GQUxTRShJc0luU2V0KCdcMCcsICIiKSk7CisgIEVYUEVDVF9GQUxTRShJc0luU2V0
KCdcMCcsICJcMCIpKTsKKyAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ1wwJywgImEiKSk7Cit9CisK
K1RFU1QoSXNJblNldFRlc3QsIFdvcmtzRm9yTm9uTnVsQ2hhcnMpIHsKKyAgRVhQRUNUX0ZBTFNF
KElzSW5TZXQoJ2EnLCAiQWIiKSk7CisgIEVYUEVDVF9GQUxTRShJc0luU2V0KCdjJywgIiIpKTsK
KworICBFWFBFQ1RfVFJVRShJc0luU2V0KCdiJywgImJjZCIpKTsKKyAgRVhQRUNUX1RSVUUoSXNJ
blNldCgnYicsICJhYiIpKTsKK30KKworVEVTVChJc0FzY2lpRGlnaXRUZXN0LCBJc0ZhbHNlRm9y
Tm9uRGlnaXQpIHsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlEaWdpdCgnXDAnKSk7CisgIEVYUEVD
VF9GQUxTRShJc0FzY2lpRGlnaXQoJyAnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpRGlnaXQo
JysnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpRGlnaXQoJy0nKSk7CisgIEVYUEVDVF9GQUxT
RShJc0FzY2lpRGlnaXQoJy4nKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpRGlnaXQoJ2EnKSk7
Cit9CisKK1RFU1QoSXNBc2NpaURpZ2l0VGVzdCwgSXNUcnVlRm9yRGlnaXQpIHsKKyAgRVhQRUNU
X1RSVUUoSXNBc2NpaURpZ2l0KCcwJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpRGlnaXQoJzEn
KSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlEaWdpdCgnNScpKTsKKyAgRVhQRUNUX1RSVUUoSXNB
c2NpaURpZ2l0KCc5JykpOworfQorCitURVNUKElzQXNjaWlQdW5jdFRlc3QsIElzRmFsc2VGb3JO
b25QdW5jdCkgeworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVB1bmN0KCdcMCcpKTsKKyAgRVhQRUNU
X0ZBTFNFKElzQXNjaWlQdW5jdCgnICcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlQdW5jdCgn
XG4nKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3QoJ2EnKSk7CisgIEVYUEVDVF9GQUxT
RShJc0FzY2lpUHVuY3QoJzAnKSk7Cit9CisKK1RFU1QoSXNBc2NpaVB1bmN0VGVzdCwgSXNUcnVl
Rm9yUHVuY3QpIHsKKyAgZm9yIChjb25zdCBjaGFyKiBwID0gIl4tIVwiIyQlJicoKSorLC4vOjs8
PT4/QFtcXF1fYHt8fX4iOyAqcDsgcCsrKSB7CisgICAgRVhQRUNUX1BSRUQxKElzQXNjaWlQdW5j
dCwgKnApOworICB9Cit9CisKK1RFU1QoSXNSZXBlYXRUZXN0LCBJc0ZhbHNlRm9yTm9uUmVwZWF0
Q2hhcikgeworICBFWFBFQ1RfRkFMU0UoSXNSZXBlYXQoJ1wwJykpOworICBFWFBFQ1RfRkFMU0Uo
SXNSZXBlYXQoJyAnKSk7CisgIEVYUEVDVF9GQUxTRShJc1JlcGVhdCgnYScpKTsKKyAgRVhQRUNU
X0ZBTFNFKElzUmVwZWF0KCcxJykpOworICBFWFBFQ1RfRkFMU0UoSXNSZXBlYXQoJy0nKSk7Cit9
CisKK1RFU1QoSXNSZXBlYXRUZXN0LCBJc1RydWVGb3JSZXBlYXRDaGFyKSB7CisgIEVYUEVDVF9U
UlVFKElzUmVwZWF0KCc/JykpOworICBFWFBFQ1RfVFJVRShJc1JlcGVhdCgnKicpKTsKKyAgRVhQ
RUNUX1RSVUUoSXNSZXBlYXQoJysnKSk7Cit9CisKK1RFU1QoSXNBc2NpaVdoaXRlU3BhY2VUZXN0
LCBJc0ZhbHNlRm9yTm9uV2hpdGVTcGFjZSkgeworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdoaXRl
U3BhY2UoJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdoaXRlU3BhY2UoJ2EnKSk7Cisg
IEVYUEVDVF9GQUxTRShJc0FzY2lpV2hpdGVTcGFjZSgnMScpKTsKKyAgRVhQRUNUX0ZBTFNFKElz
QXNjaWlXaGl0ZVNwYWNlKCcrJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdoaXRlU3BhY2Uo
J18nKSk7Cit9CisKK1RFU1QoSXNBc2NpaVdoaXRlU3BhY2VUZXN0LCBJc1RydWVGb3JXaGl0ZVNw
YWNlKSB7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXaGl0ZVNwYWNlKCcgJykpOworICBFWFBFQ1Rf
VFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnXG4nKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXaGl0
ZVNwYWNlKCdccicpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdoaXRlU3BhY2UoJ1x0JykpOwor
ICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnXHYnKSk7CisgIEVYUEVDVF9UUlVFKElz
QXNjaWlXaGl0ZVNwYWNlKCdcZicpKTsKK30KKworVEVTVChJc0FzY2lpV29yZENoYXJUZXN0LCBJ
c0ZhbHNlRm9yTm9uV29yZENoYXIpIHsKKyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXb3JkQ2hhcign
XDAnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV29yZENoYXIoJysnKSk7CisgIEVYUEVDVF9G
QUxTRShJc0FzY2lpV29yZENoYXIoJy4nKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV29yZENo
YXIoJyAnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV29yZENoYXIoJ1xuJykpOworfQorCitU
RVNUKElzQXNjaWlXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvckxldHRlcikgeworICBFWFBFQ1RfVFJV
RShJc0FzY2lpV29yZENoYXIoJ2EnKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcign
YicpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCdBJykpOworICBFWFBFQ1RfVFJV
RShJc0FzY2lpV29yZENoYXIoJ1onKSk7Cit9CisKK1RFU1QoSXNBc2NpaVdvcmRDaGFyVGVzdCwg
SXNUcnVlRm9yRGlnaXQpIHsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCcwJykpOwor
ICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJzEnKSk7CisgIEVYUEVDVF9UUlVFKElzQXNj
aWlXb3JkQ2hhcignNycpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCc5JykpOwor
fQorCitURVNUKElzQXNjaWlXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvclVuZGVyc2NvcmUpIHsKKyAg
RVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCdfJykpOworfQorCitURVNUKElzVmFsaWRFc2Nh
cGVUZXN0LCBJc0ZhbHNlRm9yTm9uUHJpbnRhYmxlKSB7CisgIEVYUEVDVF9GQUxTRShJc1ZhbGlk
RXNjYXBlKCdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJ1wwMDcnKSk7Cit9
CisKK1RFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzRmFsc2VGb3JEaWdpdCkgeworICBFWFBFQ1Rf
RkFMU0UoSXNWYWxpZEVzY2FwZSgnMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUo
JzknKSk7Cit9CisKK1RFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzRmFsc2VGb3JXaGl0ZVNwYWNl
KSB7CisgIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCcgJykpOworICBFWFBFQ1RfRkFMU0Uo
SXNWYWxpZEVzY2FwZSgnXG4nKSk7Cit9CisKK1RFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzRmFs
c2VGb3JTb21lTGV0dGVyKSB7CisgIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdhJykpOwor
ICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnWicpKTsKK30KKworVEVTVChJc1ZhbGlkRXNj
YXBlVGVzdCwgSXNUcnVlRm9yUHVuY3QpIHsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgn
LicpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnLScpKTsKKyAgRVhQRUNUX1RSVUUo
SXNWYWxpZEVzY2FwZSgnXicpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnJCcpKTsK
KyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnKCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxp
ZEVzY2FwZSgnXScpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgneycpKTsKKyAgRVhQ
RUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnfCcpKTsKK30KKworVEVTVChJc1ZhbGlkRXNjYXBlVGVz
dCwgSXNUcnVlRm9yU29tZUxldHRlcikgeworICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdk
JykpOworICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdEJykpOworICBFWFBFQ1RfVFJVRShJ
c1ZhbGlkRXNjYXBlKCdzJykpOworICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdTJykpOwor
ICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCd3JykpOworICBFWFBFQ1RfVFJVRShJc1ZhbGlk
RXNjYXBlKCdXJykpOworfQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRQdW5j
dCkgeworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdcXCcsICdcMCcpKTsK
KyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXFwnLCAnICcpKTsKKyAgRVhQ
RUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXycsICcuJykpOworICBFWFBFQ1RfRkFM
U0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICcuJywgJ2EnKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRv
bU1hdGNoZXNDaGFyKHRydWUsICdcXCcsICdcXCcpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNo
ZXNDaGFyKHRydWUsICdfJywgJ18nKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAnKycsICcrJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJy4n
LCAnLicpKTsKK30KKworVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX2QpIHsKKyAg
RVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICdcMCcpKTsKKyAgRVhQRUNU
X0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICdhJykpOworICBFWFBFQ1RfRkFMU0Uo
QXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywgJy4nKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICdkJywgJzAnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hh
cih0cnVlLCAnZCcsICc5JykpOworfQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2Fw
ZWRfRCkgeworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJzAnKSk7
CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0QnLCAnOScpKTsKKworICBF
WFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0QnLCAnXDAnKSk7CisgIEVYUEVDVF9U
UlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcsICdhJykpOworICBFWFBFQ1RfVFJVRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ0QnLCAnLScpKTsKK30KKworVEVTVChBdG9tTWF0Y2hlc0NoYXJU
ZXN0LCBFc2NhcGVkX3MpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
cycsICdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICdh
JykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJy4nKSk7Cisg
IEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnOScpKTsKKworICBFWFBF
Q1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnICcpKTsKKyAgRVhQRUNUX1RSVUUo
QXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJ1xuJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0
Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnXHQnKSk7Cit9CisKK1RFU1QoQXRvbU1hdGNoZXNDaGFyVGVz
dCwgRXNjYXBlZF9TKSB7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1Mn
LCAnICcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICdccicp
KTsKKworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnXDAnKSk7Cisg
IEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICdhJykpOworICBFWFBFQ1Rf
VFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnOScpKTsKK30KKworVEVTVChBdG9tTWF0
Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX3cpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hh
cih0cnVlLCAndycsICdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVl
LCAndycsICcrJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3Jywg
JyAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnXG4nKSk7
CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJzAnKSk7CisgIEVY
UEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdiJykpOworICBFWFBFQ1RfVFJV
RShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnQycpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICd3JywgJ18nKSk7Cit9CisKK1RFU1QoQXRvbU1hdGNoZXNDaGFyVGVz
dCwgRXNjYXBlZF9XKSB7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cn
LCAnQScpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICdiJykp
OworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJzknKSk7CisgIEVY
UEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnXycpKTsKKworICBFWFBFQ1Rf
VFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnXDAnKSk7CisgIEVYUEVDVF9UUlVFKEF0
b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICcqJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ1cnLCAnXG4nKSk7Cit9CisKK1RFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwg
RXNjYXBlZFdoaXRlU3BhY2UpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVl
LCAnZicsICdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZics
ICdcbicpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnbicsICdcMCcp
KTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnbicsICdccicpKTsKKyAg
RVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncicsICdcMCcpKTsKKyAgRVhQRUNU
X0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncicsICdhJykpOworICBFWFBFQ1RfRkFMU0Uo
QXRvbU1hdGNoZXNDaGFyKHRydWUsICd0JywgJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICd0JywgJ3QnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ3YnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ3YnLCAnXGYnKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdm
JywgJ1xmJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ24nLCAnXG4n
KSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncicsICdccicpKTsKKyAg
RVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd0JywgJ1x0JykpOworICBFWFBFQ1Rf
VFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3YnLCAnXHYnKSk7Cit9CisKK1RFU1QoQXRvbU1h
dGNoZXNDaGFyVGVzdCwgVW5lc2NhcGVkRG90KSB7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hl
c0NoYXIoZmFsc2UsICcuJywgJ1xuJykpOworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hh
cihmYWxzZSwgJy4nLCAnXDAnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxz
ZSwgJy4nLCAnLicpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnLics
ICdhJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICcuJywgJyAnKSk7
Cit9CisKK1RFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgVW5lc2NhcGVkQ2hhcikgeworICBFWFBF
Q1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnYScsICdcMCcpKTsKKyAgRVhQRUNUX0ZB
TFNFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJ2EnLCAnYicpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0
b21NYXRjaGVzQ2hhcihmYWxzZSwgJyQnLCAnYScpKTsKKworICBFWFBFQ1RfVFJVRShBdG9tTWF0
Y2hlc0NoYXIoZmFsc2UsICckJywgJyQnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hh
cihmYWxzZSwgJzUnLCAnNScpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNl
LCAnWicsICdaJykpOworfQorCitURVNUKFZhbGlkYXRlUmVnZXhUZXN0LCBHZW5lcmF0ZXNGYWls
dXJlQW5kUmV0dXJuc0ZhbHNlRm9ySW52YWxpZCkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleChOVUxMKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJOVUxMIGlzIG5vdCBhIHZhbGlkIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24iKTsK
KyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCisgICAgICBBU1NFUlRfRkFMU0UoVmFsaWRhdGVS
ZWdleCgiYVxcIikpLAorICAgICAgIlN5bnRheCBlcnJvciBhdCBpbmRleCAxIGluIHNpbXBsZSBy
ZWd1bGFyIGV4cHJlc3Npb24gXCJhXFxcIjogIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJhXFwiKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICInXFwnIGNhbm5vdCBhcHBlYXIgYXQgdGhlIGVuZCIpOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiXFxuXFwiKSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICInXFwnIGNhbm5vdCBhcHBlYXIgYXQgdGhlIGVuZCIpOworICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiXFxzXFxo
YiIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZXNjYXBlIHNlcXVlbmNl
IFwiXFxoXCIiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlk
YXRlUmVnZXgoIl5eIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJ14nIGNhbiBvbmx5
IGFwcGVhciBhdCB0aGUgYmVnaW5uaW5nIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFT
U0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCIuKl5iIikpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAiJ14nIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgYmVnaW5uaW5nIik7CisgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCIkJCIpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIickJyBjYW4gb25seSBhcHBlYXIgYXQgdGhlIGVuZCIpOwor
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiXiRh
IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJyQnIGNhbiBvbmx5IGFwcGVhciBhdCB0
aGUgZW5kIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0
ZVJlZ2V4KCJhKGIiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICInKCcgaXMgdW5zdXBw
b3J0ZWQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRl
UmVnZXgoImFiKSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIicpJyBpcyB1bnN1cHBv
cnRlZCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVS
ZWdleCgiW2FiIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJ1snIGlzIHVuc3VwcG9y
dGVkIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJl
Z2V4KCJhezIiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICIneycgaXMgdW5zdXBwb3J0
ZWQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVn
ZXgoIj8iKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICInPycgY2FuIG9ubHkgZm9sbG93
IGEgcmVwZWF0YWJsZSB0b2tlbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRf
RkFMU0UoVmFsaWRhdGVSZWdleCgiXioiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICIn
KicgY2FuIG9ubHkgZm9sbG93IGEgcmVwZWF0YWJsZSB0b2tlbiIpOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiNSorIikpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAiJysnIGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVhdGFibGUgdG9rZW4i
KTsKK30KKworVEVTVChWYWxpZGF0ZVJlZ2V4VGVzdCwgUmV0dXJuc1RydWVGb3JWYWxpZCkgewor
ICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCIiKSk7CisgIEVYUEVDVF9UUlVFKFZhbGlkYXRl
UmVnZXgoImEiKSk7CisgIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIi4qIikpOworICBFWFBF
Q1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCJeYV8rIikpOworICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJl
Z2V4KCJeYVxcdFxcJj8iKSk7CisgIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIjA5KiQiKSk7
CisgIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIl5aJCIpKTsKKyAgRVhQRUNUX1RSVUUoVmFs
aWRhdGVSZWdleCgiYVxcXlpcXCRcXChcXClcXHxcXFtcXF1cXHtcXH0iKSk7Cit9CisKK1RFU1Qo
TWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc0Zvclplcm9Pck9uZSkgewor
ICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICdhJywg
Jz8nLCAiYSIsICJiYSIpKTsKKyAgLy8gUmVwZWF0aW5nIG1vcmUgdGhhbiBvbmNlLgorICBFWFBF
Q1RfRkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICdhJywgJz8nLCAi
YiIsICJhYWIiKSk7CisKKyAgLy8gUmVwZWF0aW5nIHplcm8gdGltZXMuCisgIEVYUEVDVF9UUlVF
KE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImIiLCAiYmEi
KSk7CisgIC8vIFJlcGVhdGluZyBvbmNlLgorICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25B
bmRSZWdleEF0SGVhZChmYWxzZSwgJ2EnLCAnPycsICJiIiwgImFiIikpOworICBFWFBFQ1RfVFJV
RShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJyMnLCAnPycsICIuIiwgIiMj
IikpOworfQorCitURVNUKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NG
b3JaZXJvT3JNYW55KSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0
SGVhZChmYWxzZSwgJy4nLCAnKicsICJhJCIsICJiYWFiIikpOworCisgIC8vIFJlcGVhdGluZyB6
ZXJvIHRpbWVzLgorICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChm
YWxzZSwgJy4nLCAnKicsICJiIiwgImJjIikpOworICAvLyBSZXBlYXRpbmcgb25jZS4KKyAgRVhQ
RUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJyonLCAi
YiIsICJhYmMiKSk7CisgIC8vIFJlcGVhdGluZyBtb3JlIHRoYW4gb25jZS4KKyAgRVhQRUNUX1RS
VUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQodHJ1ZSwgJ3cnLCAnKicsICItIiwgImFi
XzEtZyIpKTsKK30KKworVEVTVChNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZFRlc3QsIFdv
cmtzRm9yT25lT3JNYW55KSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdl
eEF0SGVhZChmYWxzZSwgJy4nLCAnKycsICJhJCIsICJiYWFiIikpOworICAvLyBSZXBlYXRpbmcg
emVybyB0aW1lcy4KKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFk
KGZhbHNlLCAnLicsICcrJywgImIiLCAiYmMiKSk7CisKKyAgLy8gUmVwZWF0aW5nIG9uY2UuCisg
IEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcr
JywgImIiLCAiYWJjIikpOworICAvLyBSZXBlYXRpbmcgbW9yZSB0aGFuIG9uY2UuCisgIEVYUEVD
VF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKHRydWUsICd3JywgJysnLCAiLSIs
ICJhYl8xLWciKSk7Cit9CisKK1RFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIFJldHVybnNUcnVl
Rm9yRW1wdHlSZWdleCkgeworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCIiLCAiIikp
OworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCIiLCAiYWIiKSk7Cit9CisKK1RFU1Qo
TWF0Y2hSZWdleEF0SGVhZFRlc3QsIFdvcmtzV2hlbkRvbGxhcklzSW5SZWdleCkgeworICBFWFBF
Q1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiJCIsICJhIikpOworCisgIEVYUEVDVF9UUlVFKE1h
dGNoUmVnZXhBdEhlYWQoIiQiLCAiIikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFk
KCJhJCIsICJhIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc1doZW5S
ZWdleFN0YXJ0c1dpdGhFc2NhcGVTZXF1ZW5jZSkgeworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdl
eEF0SGVhZCgiXFx3IiwgIisiKSk7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJc
XFciLCAiYWIiKSk7CisKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxzYSIsICJc
bmFiIikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXGQiLCAiMWEiKSk7Cit9
CisKK1RFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIFdvcmtzV2hlblJlZ2V4U3RhcnRzV2l0aFJl
cGV0aXRpb24pIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIi4rYSIsICJhYmMi
KSk7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJhP2IiLCAiYWFiIikpOworCisg
IEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIi4qYSIsICJiYzEyLWFiIikpOworICBFWFBF
Q1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJhP2IiLCAiYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0
Y2hSZWdleEF0SGVhZCgiYT9iIiwgImFiIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBdEhlYWRU
ZXN0LAorICAgICBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhSZXBldGlvbk9mRXNjYXBlU2VxdWVu
Y2UpIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIlxcLithIiwgImFiYyIpKTsK
KyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIlxccz9iIiwgIiAgYiIpKTsKKworICBF
WFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXCgqYSIsICIoKCgoYWIiKSk7CisgIEVYUEVD
VF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcXj9iIiwgIl5iIikpOworICBFWFBFQ1RfVFJVRShN
YXRjaFJlZ2V4QXRIZWFkKCJcXFxcP2IiLCAiYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdl
eEF0SGVhZCgiXFxcXD9iIiwgIlxcYiIpKTsKK30KKworVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVz
dCwgTWF0Y2hlc1NlcXVlbnRpYWxseSkgeworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVh
ZCgiYWIuKmMiLCAiYWNhYmMiKSk7CisKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgi
YWIuKmMiLCAiYWItZnNjIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFJl
dHVybnNGYWxzZVdoZW5TdHJpbmdJc051bGwpIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhB
bnl3aGVyZSgiIiwgTlVMTCkpOworfQorCitURVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFdv
cmtzV2hlblJlZ2V4U3RhcnRzV2l0aENhcmV0KSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4
QW55d2hlcmUoIl5hIiwgImJhIikpOworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJl
KCJeJCIsICJhIikpOworCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXmEiLCAi
YWIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXiIsICJhYiIpKTsKKyAg
RVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJeJCIsICIiKSk7Cit9CisKK1RFU1QoTWF0
Y2hSZWdleEFueXdoZXJlVGVzdCwgUmV0dXJuc0ZhbHNlV2hlbk5vTWF0Y2gpIHsKKyAgRVhQRUNU
X0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiYSIsICJiY2RlMTIzIikpOworICBFWFBFQ1RfRkFM
U0UoTWF0Y2hSZWdleEFueXdoZXJlKCJhLithIiwgIi0tYWE4ODg4ODg4OCIpKTsKK30KKworVEVT
VChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5zVHJ1ZVdoZW5NYXRjaGluZ1ByZWZpeCkg
eworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIlxcdysiLCAiYWIxXyAtIDUiKSk7
CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiLio9IiwgIj0iKSk7CisgIEVYUEVD
VF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgieC4qYWI/LipiYyIsICJ4YWFhYmMiKSk7Cit9CisK
K1RFU1QoTWF0Y2hSZWdleEFueXdoZXJlVGVzdCwgUmV0dXJuc1RydWVXaGVuTWF0Y2hpbmdOb25Q
cmVmaXgpIHsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJcXHcrIiwgIiQkJCBh
YjFfIC0gNSIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJcXC4rPSIsICI9
ICAuLi49IikpOworfQorCisvLyBUZXN0cyBSRSdzIGltcGxpY2l0IGNvbnN0cnVjdG9ycy4KK1RF
U1QoUkVUZXN0LCBJbXBsaWNpdENvbnN0cnVjdG9yV29ya3MpIHsKKyAgY29uc3QgUkUgZW1wdHko
IiIpOworICBFWFBFQ1RfU1RSRVEoIiIsIGVtcHR5LnBhdHRlcm4oKSk7CisKKyAgY29uc3QgUkUg
c2ltcGxlKCJoZWxsbyIpOworICBFWFBFQ1RfU1RSRVEoImhlbGxvIiwgc2ltcGxlLnBhdHRlcm4o
KSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUkUncyBjb25zdHJ1Y3RvcnMgcmVqZWN0IGludmFsaWQg
cmVndWxhciBleHByZXNzaW9ucy4KK1RFU1QoUkVUZXN0LCBSZWplY3RzSW52YWxpZFJlZ2V4KSB7
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKKyAgICBjb25zdCBSRSBub3JtYWwoTlVMTCk7
CisgIH0sICJOVUxMIGlzIG5vdCBhIHZhbGlkIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24iKTsK
KworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgICAgY29uc3QgUkUgbm9ybWFsKCIuKihc
XHcrIik7CisgIH0sICInKCcgaXMgdW5zdXBwb3J0ZWQiKTsKKworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRSh7CisgICAgY29uc3QgUkUgaW52YWxpZCgiXj8iKTsKKyAgfSwgIic/JyBjYW4gb25s
eSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2VuIik7Cit9CisKKy8vIFRlc3RzIFJFOjpGdWxsTWF0
Y2goKS4KK1RFU1QoUkVUZXN0LCBGdWxsTWF0Y2hXb3JrcykgeworICBjb25zdCBSRSBlbXB0eSgi
Iik7CisgIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goIiIsIGVtcHR5KSk7CisgIEVYUEVDVF9G
QUxTRShSRTo6RnVsbE1hdGNoKCJhIiwgZW1wdHkpKTsKKworICBjb25zdCBSRSByZTEoImEiKTsK
KyAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaCgiYSIsIHJlMSkpOworCisgIGNvbnN0IFJFIHJl
KCJhLip6Iik7CisgIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goImF6IiwgcmUpKTsKKyAgRVhQ
RUNUX1RSVUUoUkU6OkZ1bGxNYXRjaCgiYXh5eiIsIHJlKSk7CisgIEVYUEVDVF9GQUxTRShSRTo6
RnVsbE1hdGNoKCJiYXoiLCByZSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaCgiYXp5
IiwgcmUpKTsKK30KKworLy8gVGVzdHMgUkU6OlBhcnRpYWxNYXRjaCgpLgorVEVTVChSRVRlc3Qs
IFBhcnRpYWxNYXRjaFdvcmtzKSB7CisgIGNvbnN0IFJFIGVtcHR5KCIiKTsKKyAgRVhQRUNUX1RS
VUUoUkU6OlBhcnRpYWxNYXRjaCgiIiwgZW1wdHkpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRp
YWxNYXRjaCgiYSIsIGVtcHR5KSk7CisKKyAgY29uc3QgUkUgcmUoImEuKnoiKTsKKyAgRVhQRUNU
X1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiYXoiLCByZSkpOworICBFWFBFQ1RfVFJVRShSRTo6UGFy
dGlhbE1hdGNoKCJheHl6IiwgcmUpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgi
YmF6IiwgcmUpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiYXp5IiwgcmUpKTsK
KyAgRVhQRUNUX0ZBTFNFKFJFOjpQYXJ0aWFsTWF0Y2goInp6YSIsIHJlKSk7Cit9CisKKyNlbmRp
ZiAgLy8gR1RFU1RfVVNFU19QT1NJWF9SRQorCisjaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxF
CisKK1RFU1QoQ2FwdHVyZVRlc3QsIENhcHR1cmVzU3Rkb3V0KSB7CisgIENhcHR1cmVTdGRvdXQo
KTsKKyAgZnByaW50ZihzdGRvdXQsICJhYmMiKTsKKyAgRVhQRUNUX1NUUkVRKCJhYmMiLCBHZXRD
YXB0dXJlZFN0ZG91dCgpLmNfc3RyKCkpOworCisgIENhcHR1cmVTdGRvdXQoKTsKKyAgZnByaW50
ZihzdGRvdXQsICJkZWYlY2doaSIsICdcMCcpOworICBFWFBFQ1RfRVEoOjpzdGQ6OnN0cmluZygi
ZGVmXDBnaGkiLCA3KSwgOjpzdGQ6OnN0cmluZyhHZXRDYXB0dXJlZFN0ZG91dCgpKSk7Cit9CisK
K1RFU1QoQ2FwdHVyZVRlc3QsIENhcHR1cmVzU3RkZXJyKSB7CisgIENhcHR1cmVTdGRlcnIoKTsK
KyAgZnByaW50ZihzdGRlcnIsICJqa2wiKTsKKyAgRVhQRUNUX1NUUkVRKCJqa2wiLCBHZXRDYXB0
dXJlZFN0ZGVycigpLmNfc3RyKCkpOworCisgIENhcHR1cmVTdGRlcnIoKTsKKyAgZnByaW50Zihz
dGRlcnIsICJqa2wlY21ubyIsICdcMCcpOworICBFWFBFQ1RfRVEoOjpzdGQ6OnN0cmluZygiamts
XDBtbm8iLCA3KSwgOjpzdGQ6OnN0cmluZyhHZXRDYXB0dXJlZFN0ZGVycigpKSk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgc3Rkb3V0IGFuZCBzdGRlcnIgY2FwdHVyZSBkb24ndCBpbnRlcmZlcmUgd2l0
aCBlYWNoIG90aGVyLgorVEVTVChDYXB0dXJlVGVzdCwgQ2FwdHVyZXNTdGRvdXRBbmRTdGRlcnIp
IHsKKyAgQ2FwdHVyZVN0ZG91dCgpOworICBDYXB0dXJlU3RkZXJyKCk7CisgIGZwcmludGYoc3Rk
b3V0LCAicHFyIik7CisgIGZwcmludGYoc3RkZXJyLCAic3R1Iik7CisgIEVYUEVDVF9TVFJFUSgi
cHFyIiwgR2V0Q2FwdHVyZWRTdGRvdXQoKS5jX3N0cigpKTsKKyAgRVhQRUNUX1NUUkVRKCJzdHUi
LCBHZXRDYXB0dXJlZFN0ZGVycigpLmNfc3RyKCkpOworfQorCitURVNUKENhcHR1cmVEZWF0aFRl
c3QsIENhbm5vdFJlZW50ZXJTdGRvdXRDYXB0dXJlKSB7CisgIENhcHR1cmVTdGRvdXQoKTsKKyAg
RVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChDYXB0dXJlU3Rkb3V0KCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIk9ubHkgb25lIHN0ZG91dCBjYXB0dXJlciBjYW4gZXhpc3QgYXQgYSB0
aW1lIik7CisgIEdldENhcHR1cmVkU3Rkb3V0KCk7CisKKyAgLy8gV2UgY2Fubm90IHRlc3Qgc3Rk
ZXJyIGNhcHR1cmluZyB1c2luZyBkZWF0aCB0ZXN0cyBhcyB0aGV5IHVzZSBpdAorICAvLyB0aGVt
c2VsdmVzLgorfQorCisjZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCitURVNU
KFRocmVhZExvY2FsVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9ySW5pdGlhbGl6ZXNUb0RlZmF1bHRW
YWx1ZXMpIHsKKyAgVGhyZWFkTG9jYWw8aW50PiB0MTsKKyAgRVhQRUNUX0VRKDAsIHQxLmdldCgp
KTsKKworICBUaHJlYWRMb2NhbDx2b2lkKj4gdDI7CisgIEVYUEVDVF9UUlVFKHQyLmdldCgpID09
IE5VTEwpOworfQorCitURVNUKFRocmVhZExvY2FsVGVzdCwgU2luZ2xlUGFyYW1Db25zdHJ1Y3Rv
ckluaXRpYWxpemVzVG9QYXJhbSkgeworICBUaHJlYWRMb2NhbDxpbnQ+IHQxKDEyMyk7CisgIEVY
UEVDVF9FUSgxMjMsIHQxLmdldCgpKTsKKworICBpbnQgaSA9IDA7CisgIFRocmVhZExvY2FsPGlu
dCo+IHQyKCZpKTsKKyAgRVhQRUNUX0VRKCZpLCB0Mi5nZXQoKSk7Cit9CisKK2NsYXNzIE5vRGVm
YXVsdENvbnRydWN0b3IgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgTm9EZWZhdWx0Q29udHJ1Y3Rv
cihjb25zdCBjaGFyKikge30KKyAgTm9EZWZhdWx0Q29udHJ1Y3Rvcihjb25zdCBOb0RlZmF1bHRD
b250cnVjdG9yJikge30KK307CisKK1RFU1QoVGhyZWFkTG9jYWxUZXN0LCBWYWx1ZURlZmF1bHRD
b250cnVjdG9ySXNOb3RSZXF1aXJlZEZvclBhcmFtVmVyc2lvbikgeworICBUaHJlYWRMb2NhbDxO
b0RlZmF1bHRDb250cnVjdG9yPiBiYXIoTm9EZWZhdWx0Q29udHJ1Y3RvcigiZm9vIikpOworICBi
YXIucG9pbnRlcigpOworfQorCitURVNUKFRocmVhZExvY2FsVGVzdCwgR2V0QW5kUG9pbnRlclJl
dHVyblNhbWVWYWx1ZSkgeworICBUaHJlYWRMb2NhbDxzdGQ6OnN0cmluZz4gdGhyZWFkX2xvY2Fs
X3N0cmluZzsKKworICBFWFBFQ1RfRVEodGhyZWFkX2xvY2FsX3N0cmluZy5wb2ludGVyKCksICYo
dGhyZWFkX2xvY2FsX3N0cmluZy5nZXQoKSkpOworCisgIC8vIFZlcmlmaWVzIHRoZSBjb25kaXRp
b24gc3RpbGwgaG9sZHMgYWZ0ZXIgY2FsbGluZyBzZXQuCisgIHRocmVhZF9sb2NhbF9zdHJpbmcu
c2V0KCJmb28iKTsKKyAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpLCAm
KHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkpKTsKK30KKworVEVTVChUaHJlYWRMb2NhbFRlc3Qs
IFBvaW50ZXJBbmRDb25zdFBvaW50ZXJSZXR1cm5TYW1lVmFsdWUpIHsKKyAgVGhyZWFkTG9jYWw8
c3RkOjpzdHJpbmc+IHRocmVhZF9sb2NhbF9zdHJpbmc7CisgIGNvbnN0IFRocmVhZExvY2FsPHN0
ZDo6c3RyaW5nPiYgY29uc3RfdGhyZWFkX2xvY2FsX3N0cmluZyA9CisgICAgICB0aHJlYWRfbG9j
YWxfc3RyaW5nOworCisgIEVYUEVDVF9FUSh0aHJlYWRfbG9jYWxfc3RyaW5nLnBvaW50ZXIoKSwg
Y29uc3RfdGhyZWFkX2xvY2FsX3N0cmluZy5wb2ludGVyKCkpOworCisgIHRocmVhZF9sb2NhbF9z
dHJpbmcuc2V0KCJmb28iKTsKKyAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbF9zdHJpbmcucG9pbnRl
cigpLCBjb25zdF90aHJlYWRfbG9jYWxfc3RyaW5nLnBvaW50ZXIoKSk7Cit9CisKKyNpZiBHVEVT
VF9JU19USFJFQURTQUZFCisKK3ZvaWQgQWRkVHdvKGludCogcGFyYW0pIHsgKnBhcmFtICs9IDI7
IH0KKworVEVTVChUaHJlYWRXaXRoUGFyYW1UZXN0LCBDb25zdHJ1Y3RvckV4ZWN1dGVzVGhyZWFk
RnVuYykgeworICBpbnQgaSA9IDQwOworICBUaHJlYWRXaXRoUGFyYW08aW50Kj4gdGhyZWFkKCZB
ZGRUd28sICZpLCBOVUxMKTsKKyAgdGhyZWFkLkpvaW4oKTsKKyAgRVhQRUNUX0VRKDQyLCBpKTsK
K30KKworVEVTVChNdXRleERlYXRoVGVzdCwgQXNzZXJ0SGVsZFNob3VsZEFzc2VydFdoZW5Ob3RM
b2NrZWQpIHsKKyAgLy8gQXNzZXJ0SGVsZCgpIGlzIGZsYWt5IG9ubHkgaW4gdGhlIHByZXNlbmNl
IG9mIG11bHRpcGxlIHRocmVhZHMgYWNjZXNzaW5nCisgIC8vIHRoZSBsb2NrLiBJbiB0aGlzIGNh
c2UsIHRoZSB0ZXN0IGlzIHJvYnVzdC4KKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh7Cisg
ICAgTXV0ZXggbTsKKyAgICB7IE11dGV4TG9jayBsb2NrKCZtKTsgfQorICAgIG0uQXNzZXJ0SGVs
ZCgpOworICB9LAorICAidGhyZWFkIC4qaG9sZCIpOworfQorCitURVNUKE11dGV4VGVzdCwgQXNz
ZXJ0SGVsZFNob3VsZE5vdEFzc2VydFdoZW5Mb2NrZWQpIHsKKyAgTXV0ZXggbTsKKyAgTXV0ZXhM
b2NrIGxvY2soJm0pOworICBtLkFzc2VydEhlbGQoKTsKK30KKworY2xhc3MgQXRvbWljQ291bnRl
cldpdGhNdXRleCB7CisgcHVibGljOgorICBleHBsaWNpdCBBdG9taWNDb3VudGVyV2l0aE11dGV4
KE11dGV4KiBtdXRleCkgOgorICAgIHZhbHVlXygwKSwgbXV0ZXhfKG11dGV4KSwgcmFuZG9tXyg0
Mikge30KKworICB2b2lkIEluY3JlbWVudCgpIHsKKyAgICBNdXRleExvY2sgbG9jayhtdXRleF8p
OworICAgIGludCB0ZW1wID0gdmFsdWVfOworICAgIHsKKyAgICAgIC8vIFdlIG5lZWQgdG8gcHV0
IHVwIGEgbWVtb3J5IGJhcnJpZXIgdG8gcHJldmVudCByZWFkcyBhbmQgd3JpdGVzIHRvCisgICAg
ICAvLyB2YWx1ZV8gcmVhcnJhbmdlZCB3aXRoIHRoZSBjYWxsIHRvIFNsZWVwTWlsbGlzZWNvbmRz
IHdoZW4gb2JzZXJ2ZWQKKyAgICAgIC8vIGZyb20gb3RoZXIgdGhyZWFkcy4KKyNpZiBHVEVTVF9I
QVNfUFRIUkVBRAorICAgICAgLy8gT24gUE9TSVgsIGxvY2tpbmcgYSBtdXRleCBwdXRzIHVwIGEg
bWVtb3J5IGJhcnJpZXIuICBXZSBjYW5ub3QgdXNlCisgICAgICAvLyBNdXRleCBhbmQgTXV0ZXhM
b2NrIGhlcmUgb3IgcmVseSBvbiB0aGVpciBtZW1vcnkgYmFycmllcgorICAgICAgLy8gZnVuY3Rp
b25hbGl0eSBhcyB3ZSBhcmUgdGVzdGluZyB0aGVtIGhlcmUuCisgICAgICBwdGhyZWFkX211dGV4
X3QgbWVtb3J5X2JhcnJpZXJfbXV0ZXg7CisgICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNT
XygKKyAgICAgICAgICBwdGhyZWFkX211dGV4X2luaXQoJm1lbW9yeV9iYXJyaWVyX211dGV4LCBO
VUxMKSk7CisgICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4X2xv
Y2soJm1lbW9yeV9iYXJyaWVyX211dGV4KSk7CisKKyAgICAgIFNsZWVwTWlsbGlzZWNvbmRzKHJh
bmRvbV8uR2VuZXJhdGUoMzApKTsKKworICAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18o
cHRocmVhZF9tdXRleF91bmxvY2soJm1lbW9yeV9iYXJyaWVyX211dGV4KSk7CisgICAgICBHVEVT
VF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm1lbW9yeV9iYXJy
aWVyX211dGV4KSk7CisjZWxpZiBHVEVTVF9PU19XSU5ET1dTCisgICAgICAvLyBPbiBXaW5kb3dz
LCBwZXJmb3JtaW5nIGFuIGludGVybG9ja2VkIGFjY2VzcyBwdXRzIHVwIGEgbWVtb3J5IGJhcnJp
ZXIuCisgICAgICB2b2xhdGlsZSBMT05HIGR1bW15ID0gMDsKKyAgICAgIDo6SW50ZXJsb2NrZWRJ
bmNyZW1lbnQoJmR1bW15KTsKKyAgICAgIFNsZWVwTWlsbGlzZWNvbmRzKHJhbmRvbV8uR2VuZXJh
dGUoMzApKTsKKyAgICAgIDo6SW50ZXJsb2NrZWRJbmNyZW1lbnQoJmR1bW15KTsKKyNlbHNlCisj
IGVycm9yICJNZW1vcnkgYmFycmllciBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybS4i
CisjZW5kaWYgIC8vIEdURVNUX0hBU19QVEhSRUFECisgICAgfQorICAgIHZhbHVlXyA9IHRlbXAg
KyAxOworICB9CisgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQorCisgcHJp
dmF0ZToKKyAgdm9sYXRpbGUgaW50IHZhbHVlXzsKKyAgTXV0ZXgqIGNvbnN0IG11dGV4XzsgIC8v
IFByb3RlY3RzIHZhbHVlXy4KKyAgUmFuZG9tICAgICAgIHJhbmRvbV87Cit9OworCit2b2lkIENv
dW50aW5nVGhyZWFkRnVuYyhwYWlyPEF0b21pY0NvdW50ZXJXaXRoTXV0ZXgqLCBpbnQ+IHBhcmFt
KSB7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW0uc2Vjb25kOyArK2kpCisgICAgICBwYXJh
bS5maXJzdC0+SW5jcmVtZW50KCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIG11dGV4IG9ubHkg
bGV0cyBvbmUgdGhyZWFkIGF0IGEgdGltZSB0byBsb2NrIGl0LgorVEVTVChNdXRleFRlc3QsIE9u
bHlPbmVUaHJlYWRDYW5Mb2NrQXRBVGltZSkgeworICBNdXRleCBtdXRleDsKKyAgQXRvbWljQ291
bnRlcldpdGhNdXRleCBsb2NrZWRfY291bnRlcigmbXV0ZXgpOworCisgIHR5cGVkZWYgVGhyZWFk
V2l0aFBhcmFtPHBhaXI8QXRvbWljQ291bnRlcldpdGhNdXRleCosIGludD4gPiBUaHJlYWRUeXBl
OworICBjb25zdCBpbnQga0N5Y2xlQ291bnQgPSAyMDsKKyAgY29uc3QgaW50IGtUaHJlYWRDb3Vu
dCA9IDc7CisgIHNjb3BlZF9wdHI8VGhyZWFkVHlwZT4gY291bnRpbmdfdGhyZWFkc1trVGhyZWFk
Q291bnRdOworICBOb3RpZmljYXRpb24gdGhyZWFkc19jYW5fc3RhcnQ7CisgIC8vIENyZWF0ZXMg
YW5kIHJ1bnMga1RocmVhZENvdW50IHRocmVhZHMgdGhhdCBpbmNyZW1lbnQgbG9ja2VkX2NvdW50
ZXIKKyAgLy8ga0N5Y2xlQ291bnQgdGltZXMgZWFjaC4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBr
VGhyZWFkQ291bnQ7ICsraSkgeworICAgIGNvdW50aW5nX3RocmVhZHNbaV0ucmVzZXQobmV3IFRo
cmVhZFR5cGUoJkNvdW50aW5nVGhyZWFkRnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1ha2VfcGFpcigmbG9ja2VkX2NvdW50ZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0N5Y2xlQ291bnQp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRocmVhZHNf
Y2FuX3N0YXJ0KSk7CisgIH0KKyAgdGhyZWFkc19jYW5fc3RhcnQuTm90aWZ5KCk7CisgIGZvciAo
aW50IGkgPSAwOyBpIDwga1RocmVhZENvdW50OyArK2kpCisgICAgY291bnRpbmdfdGhyZWFkc1tp
XS0+Sm9pbigpOworCisgIC8vIElmIHRoZSBtdXRleCBsZXRzIG1vcmUgdGhhbiBvbmUgdGhyZWFk
IHRvIGluY3JlbWVudCB0aGUgY291bnRlciBhdCBhCisgIC8vIHRpbWUsIHRoZXkgYXJlIGxpa2Vs
eSB0byBlbmNvdW50ZXIgYSByYWNlIGNvbmRpdGlvbiBhbmQgaGF2ZSBzb21lCisgIC8vIGluY3Jl
bWVudHMgb3ZlcndyaXR0ZW4sIHJlc3VsdGluZyBpbiB0aGUgbG93ZXIgdGhlbiBleHBlY3RlZCBj
b3VudGVyCisgIC8vIHZhbHVlLgorICBFWFBFQ1RfRVEoa0N5Y2xlQ291bnQgKiBrVGhyZWFkQ291
bnQsIGxvY2tlZF9jb3VudGVyLnZhbHVlKCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K3ZvaWQgUnVuRnJvbVRocmVhZCh2b2lkIChmdW5jKShUKSwgVCBwYXJhbSkgeworICBUaHJlYWRX
aXRoUGFyYW08VD4gdGhyZWFkKGZ1bmMsIHBhcmFtLCBOVUxMKTsKKyAgdGhyZWFkLkpvaW4oKTsK
K30KKwordm9pZCBSZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUoCisgICAgcGFpcjxUaHJlYWRMb2Nh
bDxzdGQ6OnN0cmluZz4qLCBzdGQ6OnN0cmluZyo+IHBhcmFtKSB7CisgICpwYXJhbS5zZWNvbmQg
PSBwYXJhbS5maXJzdC0+Z2V0KCk7Cit9CisKK1RFU1QoVGhyZWFkTG9jYWxUZXN0LCBQYXJhbWV0
ZXJpemVkQ29uc3RydWN0b3JTZXRzRGVmYXVsdCkgeworICBUaHJlYWRMb2NhbDxzdGQ6OnN0cmlu
Zz4gdGhyZWFkX2xvY2FsX3N0cmluZygiZm9vIik7CisgIEVYUEVDVF9TVFJFUSgiZm9vIiwgdGhy
ZWFkX2xvY2FsX3N0cmluZy5nZXQoKS5jX3N0cigpKTsKKworICB0aHJlYWRfbG9jYWxfc3RyaW5n
LnNldCgiYmFyIik7CisgIEVYUEVDVF9TVFJFUSgiYmFyIiwgdGhyZWFkX2xvY2FsX3N0cmluZy5n
ZXQoKS5jX3N0cigpKTsKKworICBzdGQ6OnN0cmluZyByZXN1bHQ7CisgIFJ1bkZyb21UaHJlYWQo
JlJldHJpZXZlVGhyZWFkTG9jYWxWYWx1ZSwKKyAgICAgICAgICAgICAgICBtYWtlX3BhaXIoJnRo
cmVhZF9sb2NhbF9zdHJpbmcsICZyZXN1bHQpKTsKKyAgRVhQRUNUX1NUUkVRKCJmb28iLCByZXN1
bHQuY19zdHIoKSk7Cit9CisKKy8vIEtlZXBzIHRyYWNrIG9mIHdoZXRoZXIgb2YgZGVzdHJ1Y3Rv
cnMgYmVpbmcgY2FsbGVkIG9uIGluc3RhbmNlcyBvZgorLy8gRGVzdHJ1Y3RvclRyYWNrZXIuICBP
biBXaW5kb3dzLCB3YWl0cyBmb3IgdGhlIGRlc3RydWN0b3IgY2FsbCByZXBvcnRzLgorY2xhc3Mg
RGVzdHJ1Y3RvckNhbGwgeworIHB1YmxpYzoKKyAgRGVzdHJ1Y3RvckNhbGwoKSB7CisgICAgaW52
b2tlZF8gPSBmYWxzZTsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgICAgd2FpdF9ldmVudF8uUmVz
ZXQoOjpDcmVhdGVFdmVudChOVUxMLCBUUlVFLCBGQUxTRSwgTlVMTCkpOworICAgIEdURVNUX0NI
RUNLXyh3YWl0X2V2ZW50Xy5HZXQoKSAhPSBOVUxMKTsKKyNlbmRpZgorICB9CisKKyAgYm9vbCBD
aGVja0Rlc3Ryb3llZCgpIGNvbnN0IHsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgICAgaWYgKDo6
V2FpdEZvclNpbmdsZU9iamVjdCh3YWl0X2V2ZW50Xy5HZXQoKSwgMTAwMCkgIT0gV0FJVF9PQkpF
Q1RfMCkKKyAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIHJldHVybiBpbnZva2VkXzsK
KyAgfQorCisgIHZvaWQgUmVwb3J0RGVzdHJveWVkKCkgeworICAgIGludm9rZWRfID0gdHJ1ZTsK
KyNpZiBHVEVTVF9PU19XSU5ET1dTCisgICAgOjpTZXRFdmVudCh3YWl0X2V2ZW50Xy5HZXQoKSk7
CisjZW5kaWYKKyAgfQorCisgIHN0YXRpYyBzdGQ6OnZlY3RvcjxEZXN0cnVjdG9yQ2FsbCo+JiBM
aXN0KCkgeyByZXR1cm4gKmxpc3RfOyB9CisKKyAgc3RhdGljIHZvaWQgUmVzZXRMaXN0KCkgewor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdF8tPnNpemUoKTsgKytpKSB7CisgICAgICBk
ZWxldGUgbGlzdF8tPmF0KGkpOworICAgIH0KKyAgICBsaXN0Xy0+Y2xlYXIoKTsKKyAgfQorCisg
cHJpdmF0ZToKKyAgYm9vbCBpbnZva2VkXzsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIEF1dG9I
YW5kbGUgd2FpdF9ldmVudF87CisjZW5kaWYKKyAgc3RhdGljIHN0ZDo6dmVjdG9yPERlc3RydWN0
b3JDYWxsKj4qIGNvbnN0IGxpc3RfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oRGVzdHJ1Y3RvckNhbGwpOworfTsKKworc3RkOjp2ZWN0b3I8RGVzdHJ1Y3RvckNhbGwqPiog
Y29uc3QgRGVzdHJ1Y3RvckNhbGw6Omxpc3RfID0KKyAgICBuZXcgc3RkOjp2ZWN0b3I8RGVzdHJ1
Y3RvckNhbGwqPjsKKworLy8gRGVzdHJ1Y3RvclRyYWNrZXIga2VlcHMgdHJhY2sgb2Ygd2hldGhl
ciBpdHMgaW5zdGFuY2VzIGhhdmUgYmVlbgorLy8gZGVzdHJveWVkLgorY2xhc3MgRGVzdHJ1Y3Rv
clRyYWNrZXIgeworIHB1YmxpYzoKKyAgRGVzdHJ1Y3RvclRyYWNrZXIoKSA6IGluZGV4XyhHZXRO
ZXdJbmRleCgpKSB7fQorICBEZXN0cnVjdG9yVHJhY2tlcihjb25zdCBEZXN0cnVjdG9yVHJhY2tl
ciYgLyogcmhzICovKQorICAgICAgOiBpbmRleF8oR2V0TmV3SW5kZXgoKSkge30KKyAgfkRlc3Ry
dWN0b3JUcmFja2VyKCkgeworICAgIC8vIFdlIG5ldmVyIGFjY2VzcyBEZXN0cnVjdG9yQ2FsbDo6
TGlzdCgpIGNvbmN1cnJlbnRseSwgc28gd2UgZG9uJ3QgbmVlZAorICAgIC8vIHRvIHByb3RlY3Qg
dGhpcyBhY2Nlc3Mgd2l0aCBhIG11dGV4LgorICAgIERlc3RydWN0b3JDYWxsOjpMaXN0KClbaW5k
ZXhfXS0+UmVwb3J0RGVzdHJveWVkKCk7CisgIH0KKworIHByaXZhdGU6CisgIHN0YXRpYyBzaXpl
X3QgR2V0TmV3SW5kZXgoKSB7CisgICAgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKS5wdXNoX2JhY2so
bmV3IERlc3RydWN0b3JDYWxsKTsKKyAgICByZXR1cm4gRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKS5z
aXplKCkgLSAxOworICB9CisgIGNvbnN0IHNpemVfdCBpbmRleF87CisKKyAgR1RFU1RfRElTQUxM
T1dfQVNTSUdOXyhEZXN0cnVjdG9yVHJhY2tlcik7Cit9OworCit0eXBlZGVmIFRocmVhZExvY2Fs
PERlc3RydWN0b3JUcmFja2VyPiogVGhyZWFkUGFyYW07CisKK3ZvaWQgQ2FsbFRocmVhZExvY2Fs
R2V0KFRocmVhZFBhcmFtIHRocmVhZF9sb2NhbF9wYXJhbSkgeworICB0aHJlYWRfbG9jYWxfcGFy
YW0tPmdldCgpOworfQorCisvLyBUZXN0cyB0aGF0IHdoZW4gYSBUaHJlYWRMb2NhbCBvYmplY3Qg
ZGllcyBpbiBhIHRocmVhZCwgaXQgZGVzdHJveXMKKy8vIHRoZSBtYW5hZ2VkIG9iamVjdCBmb3Ig
dGhhdCB0aHJlYWQuCitURVNUKFRocmVhZExvY2FsVGVzdCwgRGVzdHJveXNNYW5hZ2VkT2JqZWN0
Rm9yT3duVGhyZWFkV2hlbkR5aW5nKSB7CisgIERlc3RydWN0b3JDYWxsOjpSZXNldExpc3QoKTsK
KworICB7CisgICAgVGhyZWFkTG9jYWw8RGVzdHJ1Y3RvclRyYWNrZXI+IHRocmVhZF9sb2NhbF90
cmFja2VyOworICAgIEFTU0VSVF9FUSgwVSwgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKS5zaXplKCkp
OworCisgICAgLy8gVGhpcyBjcmVhdGVzIGFub3RoZXIgRGVzdHJ1Y3RvclRyYWNrZXIgb2JqZWN0
IGZvciB0aGUgbWFpbiB0aHJlYWQuCisgICAgdGhyZWFkX2xvY2FsX3RyYWNrZXIuZ2V0KCk7Cisg
ICAgQVNTRVJUX0VRKDFVLCBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnNpemUoKSk7CisgICAgQVNT
RVJUX0ZBTFNFKERlc3RydWN0b3JDYWxsOjpMaXN0KClbMF0tPkNoZWNrRGVzdHJveWVkKCkpOwor
ICB9CisKKyAgLy8gTm93IHRocmVhZF9sb2NhbF90cmFja2VyIGhhcyBkaWVkLgorICBBU1NFUlRf
RVEoMVUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpKTsKKyAgRVhQRUNUX1RSVUUoRGVz
dHJ1Y3RvckNhbGw6Okxpc3QoKVswXS0+Q2hlY2tEZXN0cm95ZWQoKSk7CisKKyAgRGVzdHJ1Y3Rv
ckNhbGw6OlJlc2V0TGlzdCgpOworfQorCisvLyBUZXN0cyB0aGF0IHdoZW4gYSB0aHJlYWQgZXhp
dHMsIHRoZSB0aHJlYWQtbG9jYWwgb2JqZWN0IGZvciB0aGF0CisvLyB0aHJlYWQgaXMgZGVzdHJv
eWVkLgorVEVTVChUaHJlYWRMb2NhbFRlc3QsIERlc3Ryb3lzTWFuYWdlZE9iamVjdEF0VGhyZWFk
RXhpdCkgeworICBEZXN0cnVjdG9yQ2FsbDo6UmVzZXRMaXN0KCk7CisKKyAgeworICAgIFRocmVh
ZExvY2FsPERlc3RydWN0b3JUcmFja2VyPiB0aHJlYWRfbG9jYWxfdHJhY2tlcjsKKyAgICBBU1NF
UlRfRVEoMFUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpKTsKKworICAgIC8vIFRoaXMg
Y3JlYXRlcyBhbm90aGVyIERlc3RydWN0b3JUcmFja2VyIG9iamVjdCBpbiB0aGUgbmV3IHRocmVh
ZC4KKyAgICBUaHJlYWRXaXRoUGFyYW08VGhyZWFkUGFyYW0+IHRocmVhZCgKKyAgICAgICAgJkNh
bGxUaHJlYWRMb2NhbEdldCwgJnRocmVhZF9sb2NhbF90cmFja2VyLCBOVUxMKTsKKyAgICB0aHJl
YWQuSm9pbigpOworCisgICAgLy8gVGhlIHRocmVhZCBoYXMgZXhpdGVkLCBhbmQgd2Ugc2hvdWxk
IGhhdmUgYSBEZXN0cm95ZWRUcmFja2VyCisgICAgLy8gaW5zdGFuY2UgY3JlYXRlZCBmb3IgaXQu
IEJ1dCBpdCBtYXkgbm90IGhhdmUgYmVlbiBkZXN0cm95ZWQgeWV0LgorICAgIEFTU0VSVF9FUSgx
VSwgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKS5zaXplKCkpOworICB9CisKKyAgLy8gVGhlIHRocmVh
ZCBoYXMgZXhpdGVkIGFuZCB0aHJlYWRfbG9jYWxfdHJhY2tlciBoYXMgZGllZC4KKyAgQVNTRVJU
X0VRKDFVLCBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnNpemUoKSk7CisgIEVYUEVDVF9UUlVFKERl
c3RydWN0b3JDYWxsOjpMaXN0KClbMF0tPkNoZWNrRGVzdHJveWVkKCkpOworCisgIERlc3RydWN0
b3JDYWxsOjpSZXNldExpc3QoKTsKK30KKworVEVTVChUaHJlYWRMb2NhbFRlc3QsIFRocmVhZExv
Y2FsTXV0YXRpb25zQWZmZWN0T25seUN1cnJlbnRUaHJlYWQpIHsKKyAgVGhyZWFkTG9jYWw8c3Rk
OjpzdHJpbmc+IHRocmVhZF9sb2NhbF9zdHJpbmc7CisgIHRocmVhZF9sb2NhbF9zdHJpbmcuc2V0
KCJGb28iKTsKKyAgRVhQRUNUX1NUUkVRKCJGb28iLCB0aHJlYWRfbG9jYWxfc3RyaW5nLmdldCgp
LmNfc3RyKCkpOworCisgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKKyAgUnVuRnJvbVRocmVhZCgmUmV0
cmlldmVUaHJlYWRMb2NhbFZhbHVlLAorICAgICAgICAgICAgICAgIG1ha2VfcGFpcigmdGhyZWFk
X2xvY2FsX3N0cmluZywgJnJlc3VsdCkpOworICBFWFBFQ1RfVFJVRShyZXN1bHQuZW1wdHkoKSk7
Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFEU0FGRQorCisjaWYgR1RFU1RfT1NfV0lO
RE9XUworVEVTVChXaW5kb3dzVHlwZXNUZXN0LCBIQU5ETEVJc1ZvaWRTdGFyKSB7CisgIFN0YXRp
Y0Fzc2VydFR5cGVFcTxIQU5ETEUsIHZvaWQqPigpOworfQorCisjaWYgR1RFU1RfT1NfV0lORE9X
U19NSU5HVyAmJiAhZGVmaW5lZChfX01JTkdXNjRfVkVSU0lPTl9NQUpPUikKK1RFU1QoV2luZG93
c1R5cGVzVGVzdCwgX0NSSVRJQ0FMX1NFQ1RJT05Jc19DUklUSUNBTF9TRUNUSU9OKSB7CisgIFN0
YXRpY0Fzc2VydFR5cGVFcTxDUklUSUNBTF9TRUNUSU9OLCBfQ1JJVElDQUxfU0VDVElPTj4oKTsK
K30KKyNlbHNlCitURVNUKFdpbmRvd3NUeXBlc1Rlc3QsIENSSVRJQ0FMX1NFQ1RJT05Jc19SVExf
Q1JJVElDQUxfU0VDVElPTikgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8Q1JJVElDQUxfU0VDVElP
TiwgX1JUTF9DUklUSUNBTF9TRUNUSU9OPigpOworfQorI2VuZGlmCisKKyNlbmRpZiAgLy8gR1RF
U1RfT1NfV0lORE9XUworCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3QtcHJpbnRlcnMtdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC1wcmludGVycy10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhODM2OWQyN2U1MDQ3MGYxZWFi
ZTNhZjI4MDRkMzQ1NDkzYWRlZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcHJpbnRlcnMtdGVzdC5jYwpAQCAtMCwwICsxLDE3NDgg
QEAKKy8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
Ly8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBH
b29nbGUgVGVzdCAtIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3Jr
CisvLworLy8gVGhpcyBmaWxlIHRlc3RzIHRoZSB1bml2ZXJzYWwgdmFsdWUgcHJpbnRlci4KKwor
I2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8c3RyaW5n
Lmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGRlcXVlPgorI2luY2x1ZGUgPGxp
c3Q+CisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHNldD4KKyNpbmNsdWRlIDxzc3RyZWFtPgor
I2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHZlY3Rvcj4K
KworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXByaW50ZXJzLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKKworI2lmIEdURVNUX0hBU19VTk9SREVSRURfTUFQXworIyBpbmNsdWRlIDx1bm9yZGVy
ZWRfbWFwPiAgLy8gTk9MSU5UCisjZW5kaWYgIC8vIEdURVNUX0hBU19VTk9SREVSRURfTUFQXwor
CisjaWYgR1RFU1RfSEFTX1VOT1JERVJFRF9TRVRfCisjIGluY2x1ZGUgPHVub3JkZXJlZF9zZXQ+
ICAvLyBOT0xJTlQKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1VOT1JERVJFRF9TRVRfCisKKyNpZiBH
VEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8KKyMgaW5jbHVkZSA8Zm9yd2FyZF9saXN0PiAvLyBO
T0xJTlQKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9GT1JXQVJEX0xJU1RfCisKKy8vIFNvbWUg
dXNlci1kZWZpbmVkIHR5cGVzIGZvciB0ZXN0aW5nIHRoZSB1bml2ZXJzYWwgdmFsdWUgcHJpbnRl
ci4KKworLy8gQW4gYW5vbnltb3VzIGVudW0gdHlwZS4KK2VudW0gQW5vbnltb3VzRW51bSB7Cisg
IGtBRTEgPSAtMSwKKyAga0FFMiA9IDEKK307CisKKy8vIEFuIGVudW0gd2l0aG91dCBhIHVzZXIt
ZGVmaW5lZCBwcmludGVyLgorZW51bSBFbnVtV2l0aG91dFByaW50ZXIgeworICBrRVdQMSA9IC0y
LAorICBrRVdQMiA9IDQyCit9OworCisvLyBBbiBlbnVtIHdpdGggYSA8PCBvcGVyYXRvci4KK2Vu
dW0gRW51bVdpdGhTdHJlYW1pbmcgeworICBrRVdTMSA9IDEwCit9OworCitzdGQ6Om9zdHJlYW0m
IG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgRW51bVdpdGhTdHJlYW1pbmcgZSkgeworICBy
ZXR1cm4gb3MgPDwgKGUgPT0ga0VXUzEgPyAia0VXUzEiIDogImludmFsaWQiKTsKK30KKworLy8g
QW4gZW51bSB3aXRoIGEgUHJpbnRUbygpIGZ1bmN0aW9uLgorZW51bSBFbnVtV2l0aFByaW50VG8g
eworICBrRVdQVDEgPSAxCit9OworCit2b2lkIFByaW50VG8oRW51bVdpdGhQcmludFRvIGUsIHN0
ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8IChlID09IGtFV1BUMSA/ICJrRVdQVDEiIDogImlu
dmFsaWQiKTsKK30KKworLy8gQSBjbGFzcyBpbXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRvIEJpZ2dl
c3RJbnQuCitjbGFzcyBCaWdnZXN0SW50Q29udmVydGlibGUgeworIHB1YmxpYzoKKyAgb3BlcmF0
b3IgOjp0ZXN0aW5nOjppbnRlcm5hbDo6QmlnZ2VzdEludCgpIGNvbnN0IHsgcmV0dXJuIDQyOyB9
Cit9OworCisvLyBBIHVzZXItZGVmaW5lZCB1bnByaW50YWJsZSBjbGFzcyB0ZW1wbGF0ZSBpbiB0
aGUgZ2xvYmFsIG5hbWVzcGFjZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVW5wcmlu
dGFibGVUZW1wbGF0ZUluR2xvYmFsIHsKKyBwdWJsaWM6CisgIFVucHJpbnRhYmxlVGVtcGxhdGVJ
bkdsb2JhbCgpIDogdmFsdWVfKCkge30KKyBwcml2YXRlOgorICBUIHZhbHVlXzsKK307CisKKy8v
IEEgdXNlci1kZWZpbmVkIHN0cmVhbWFibGUgdHlwZSBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4K
K2NsYXNzIFN0cmVhbWFibGVJbkdsb2JhbCB7CisgcHVibGljOgorICB2aXJ0dWFsIH5TdHJlYW1h
YmxlSW5HbG9iYWwoKSB7fQorfTsKKworaW5saW5lIHZvaWQgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0
cmVhbSYgb3MsIGNvbnN0IFN0cmVhbWFibGVJbkdsb2JhbCYgLyogeCAqLykgeworICBvcyA8PCAi
U3RyZWFtYWJsZUluR2xvYmFsIjsKK30KKwordm9pZCBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFt
JiBvcywgY29uc3QgU3RyZWFtYWJsZUluR2xvYmFsKiAvKiB4ICovKSB7CisgIG9zIDw8ICJTdHJl
YW1hYmxlSW5HbG9iYWwqIjsKK30KKworbmFtZXNwYWNlIGZvbyB7CisKKy8vIEEgdXNlci1kZWZp
bmVkIHVucHJpbnRhYmxlIHR5cGUgaW4gYSB1c2VyIG5hbWVzcGFjZS4KK2NsYXNzIFVucHJpbnRh
YmxlSW5Gb28geworIHB1YmxpYzoKKyAgVW5wcmludGFibGVJbkZvbygpIDogel8oMCkgeyBtZW1j
cHkoeHlfLCAiXHhFRlx4MTJceDBceDBceDM0XHhBQlx4MFx4MCIsIDgpOyB9CisgIGRvdWJsZSB6
KCkgY29uc3QgeyByZXR1cm4gel87IH0KKyBwcml2YXRlOgorICBjaGFyIHh5X1s4XTsKKyAgZG91
YmxlIHpfOworfTsKKworLy8gQSB1c2VyLWRlZmluZWQgcHJpbnRhYmxlIHR5cGUgaW4gYSB1c2Vy
LWNob3NlbiBuYW1lc3BhY2UuCitzdHJ1Y3QgUHJpbnRhYmxlVmlhUHJpbnRUbyB7CisgIFByaW50
YWJsZVZpYVByaW50VG8oKSA6IHZhbHVlKCkge30KKyAgaW50IHZhbHVlOworfTsKKwordm9pZCBQ
cmludFRvKGNvbnN0IFByaW50YWJsZVZpYVByaW50VG8mIHgsIDo6c3RkOjpvc3RyZWFtKiBvcykg
eworICAqb3MgPDwgIlByaW50YWJsZVZpYVByaW50VG86ICIgPDwgeC52YWx1ZTsKK30KKworLy8g
QSB0eXBlIHdpdGggYSB1c2VyLWRlZmluZWQgPDwgZm9yIHByaW50aW5nIGl0cyBwb2ludGVyLgor
c3RydWN0IFBvaW50ZXJQcmludGFibGUgeworfTsKKworOjpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9y
PDwoOjpzdGQ6Om9zdHJlYW0mIG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UG9pbnRlclByaW50YWJsZSogLyogeCAqLykgeworICByZXR1cm4gb3MgPDwgIlBvaW50ZXJQcmlu
dGFibGUqIjsKK30KKworLy8gQSB1c2VyLWRlZmluZWQgcHJpbnRhYmxlIGNsYXNzIHRlbXBsYXRl
IGluIGEgdXNlci1jaG9zZW4gbmFtZXNwYWNlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFz
cyBQcmludGFibGVWaWFQcmludFRvVGVtcGxhdGUgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgUHJp
bnRhYmxlVmlhUHJpbnRUb1RlbXBsYXRlKGNvbnN0IFQmIGFfdmFsdWUpIDogdmFsdWVfKGFfdmFs
dWUpIHt9CisKKyAgY29uc3QgVCYgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KKyBw
cml2YXRlOgorICBUIHZhbHVlXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBQ
cmludFRvKGNvbnN0IFByaW50YWJsZVZpYVByaW50VG9UZW1wbGF0ZTxUPiYgeCwgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgICpvcyA8PCAiUHJpbnRhYmxlVmlhUHJpbnRUb1RlbXBsYXRlOiAiIDw8
IHgudmFsdWUoKTsKK30KKworLy8gQSB1c2VyLWRlZmluZWQgc3RyZWFtYWJsZSBjbGFzcyB0ZW1w
bGF0ZSBpbiBhIHVzZXIgbmFtZXNwYWNlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBT
dHJlYW1hYmxlVGVtcGxhdGVJbkZvbyB7CisgcHVibGljOgorICBTdHJlYW1hYmxlVGVtcGxhdGVJ
bkZvbygpIDogdmFsdWVfKCkge30KKworICBjb25zdCBUJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IHZhbHVlXzsgfQorIHByaXZhdGU6CisgIFQgdmFsdWVfOworfTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitpbmxpbmUgOjpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0m
IG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmVhbWFibGVU
ZW1wbGF0ZUluRm9vPFQ+JiB4KSB7CisgIHJldHVybiBvcyA8PCAiU3RyZWFtYWJsZVRlbXBsYXRl
SW5Gb286ICIgPDwgeC52YWx1ZSgpOworfQorCisvLyBBIHVzZXItZGVmaW5lZCBzdHJlYW1hYmxl
IGJ1dCByZWN1cnNpdmx5LWRlZmluZWQgY29udGFpbmVyIHR5cGUgaW4KKy8vIGEgdXNlciBuYW1l
c3BhY2UsIGl0IG1pbWljcyB0aGVyZWZvcmUgc3RkOjpmaWxlc3lzdGVtOjpwYXRoIG9yCisvLyBi
b29zdDo6ZmlsZXN5c3RlbTo6cGF0aC4KK2NsYXNzIFBhdGhMaWtlIHsKKyBwdWJsaWM6CisgIHN0
cnVjdCBpdGVyYXRvciB7CisgICAgdHlwZWRlZiBQYXRoTGlrZSB2YWx1ZV90eXBlOworICB9Owor
CisgIFBhdGhMaWtlKCkge30KKworICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGl0
ZXJhdG9yKCk7IH0KKyAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKTsg
fQorCisgIGZyaWVuZCA6OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYg
b3MsIGNvbnN0IFBhdGhMaWtlJikgeworICAgIHJldHVybiBvcyA8PCAiU3RyZWFtYWJsZS1QYXRo
TGlrZSI7CisgIH0KK307CisKK30gIC8vIG5hbWVzcGFjZSBmb28KKworbmFtZXNwYWNlIHRlc3Rp
bmcgeworbmFtZXNwYWNlIGd0ZXN0X3ByaW50ZXJzX3Rlc3QgeworCit1c2luZyA6OnN0ZDo6ZGVx
dWU7Cit1c2luZyA6OnN0ZDo6bGlzdDsKK3VzaW5nIDo6c3RkOjptYWtlX3BhaXI7Cit1c2luZyA6
OnN0ZDo6bWFwOwordXNpbmcgOjpzdGQ6Om11bHRpbWFwOwordXNpbmcgOjpzdGQ6Om11bHRpc2V0
OwordXNpbmcgOjpzdGQ6OnBhaXI7Cit1c2luZyA6OnN0ZDo6c2V0OwordXNpbmcgOjpzdGQ6OnZl
Y3RvcjsKK3VzaW5nIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZzsKK3VzaW5nIDo6dGVzdGluZzo6
aW50ZXJuYWw6OkZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZTsKK3VzaW5nIDo6dGVz
dGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF87Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFs
OjpOYXRpdmVBcnJheTsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlJFOwordXNpbmcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6UmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZTsKK3VzaW5nIDo6dGVz
dGluZzo6aW50ZXJuYWw6OlN0cmluZ3M7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2
ZXJzYWxQcmludDsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFByaW50ZXI7
Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50OworI2lmIEdU
RVNUX0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8KK3VzaW5nIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nczsKKyNl
bmRpZgorCisvLyBQcmludHMgYSB2YWx1ZSB0byBhIHN0cmluZyB1c2luZyB0aGUgdW5pdmVyc2Fs
IHZhbHVlIHByaW50ZXIuICBUaGlzCisvLyBpcyBhIGhlbHBlciBmb3IgdGVzdGluZyBVbml2ZXJz
YWxQcmludGVyPFQ+OjpQcmludCgpIGZvciB2YXJpb3VzIHR5cGVzLgordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitzdGQ6OnN0cmluZyBQcmludChjb25zdCBUJiB2YWx1ZSkgeworICA6OnN0ZDo6c3Ry
aW5nc3RyZWFtIHNzOworICBVbml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCh2YWx1ZSwgJnNzKTsK
KyAgcmV0dXJuIHNzLnN0cigpOworfQorCisvLyBQcmludHMgYSB2YWx1ZSBwYXNzZWQgYnkgcmVm
ZXJlbmNlIHRvIGEgc3RyaW5nLCB1c2luZyB0aGUgdW5pdmVyc2FsCisvLyB2YWx1ZSBwcmludGVy
LiAgVGhpcyBpcyBhIGhlbHBlciBmb3IgdGVzdGluZworLy8gVW5pdmVyc2FsUHJpbnRlcjxUJj46
OlByaW50KCkgZm9yIHZhcmlvdXMgdHlwZXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0ZDo6
c3RyaW5nIFByaW50QnlSZWYoY29uc3QgVCYgdmFsdWUpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVh
bSBzczsKKyAgVW5pdmVyc2FsUHJpbnRlcjxUJj46OlByaW50KHZhbHVlLCAmc3MpOworICByZXR1
cm4gc3Muc3RyKCk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIHZhcmlvdXMgZW51bSB0eXBlcy4K
KworVEVTVChQcmludEVudW1UZXN0LCBBbm9ueW1vdXNFbnVtKSB7CisgIEVYUEVDVF9FUSgiLTEi
LCBQcmludChrQUUxKSk7CisgIEVYUEVDVF9FUSgiMSIsIFByaW50KGtBRTIpKTsKK30KKworVEVT
VChQcmludEVudW1UZXN0LCBFbnVtV2l0aG91dFByaW50ZXIpIHsKKyAgRVhQRUNUX0VRKCItMiIs
IFByaW50KGtFV1AxKSk7CisgIEVYUEVDVF9FUSgiNDIiLCBQcmludChrRVdQMikpOworfQorCitU
RVNUKFByaW50RW51bVRlc3QsIEVudW1XaXRoU3RyZWFtaW5nKSB7CisgIEVYUEVDVF9FUSgia0VX
UzEiLCBQcmludChrRVdTMSkpOworICBFWFBFQ1RfRVEoImludmFsaWQiLCBQcmludChzdGF0aWNf
Y2FzdDxFbnVtV2l0aFN0cmVhbWluZz4oMCkpKTsKK30KKworVEVTVChQcmludEVudW1UZXN0LCBF
bnVtV2l0aFByaW50VG8pIHsKKyAgRVhQRUNUX0VRKCJrRVdQVDEiLCBQcmludChrRVdQVDEpKTsK
KyAgRVhQRUNUX0VRKCJpbnZhbGlkIiwgUHJpbnQoc3RhdGljX2Nhc3Q8RW51bVdpdGhQcmludFRv
PigwKSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyBhIGNsYXNzIGltcGxpY2l0bHkgY29udmVy
dGlibGUgdG8gQmlnZ2VzdEludC4KKworVEVTVChQcmludENsYXNzVGVzdCwgQmlnZ2VzdEludENv
bnZlcnRpYmxlKSB7CisgIEVYUEVDVF9FUSgiNDIiLCBQcmludChCaWdnZXN0SW50Q29udmVydGli
bGUoKSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyB2YXJpb3VzIGNoYXIgdHlwZXMuCisKKy8v
IGNoYXIuCitURVNUKFByaW50Q2hhclRlc3QsIFBsYWluQ2hhcikgeworICBFWFBFQ1RfRVEoIidc
XDAnIiwgUHJpbnQoJ1wwJykpOworICBFWFBFQ1RfRVEoIidcXCcnICgzOSwgMHgyNykiLCBQcmlu
dCgnXCcnKSk7CisgIEVYUEVDVF9FUSgiJ1wiJyAoMzQsIDB4MjIpIiwgUHJpbnQoJyInKSk7Cisg
IEVYUEVDVF9FUSgiJz8nICg2MywgMHgzRikiLCBQcmludCgnPycpKTsKKyAgRVhQRUNUX0VRKCIn
XFxcXCcgKDkyLCAweDVDKSIsIFByaW50KCdcXCcpKTsKKyAgRVhQRUNUX0VRKCInXFxhJyAoNyki
LCBQcmludCgnXGEnKSk7CisgIEVYUEVDVF9FUSgiJ1xcYicgKDgpIiwgUHJpbnQoJ1xiJykpOwor
ICBFWFBFQ1RfRVEoIidcXGYnICgxMiwgMHhDKSIsIFByaW50KCdcZicpKTsKKyAgRVhQRUNUX0VR
KCInXFxuJyAoMTAsIDB4QSkiLCBQcmludCgnXG4nKSk7CisgIEVYUEVDVF9FUSgiJ1xccicgKDEz
LCAweEQpIiwgUHJpbnQoJ1xyJykpOworICBFWFBFQ1RfRVEoIidcXHQnICg5KSIsIFByaW50KCdc
dCcpKTsKKyAgRVhQRUNUX0VRKCInXFx2JyAoMTEsIDB4QikiLCBQcmludCgnXHYnKSk7CisgIEVY
UEVDVF9FUSgiJ1xceDdGJyAoMTI3KSIsIFByaW50KCdceDdGJykpOworICBFWFBFQ1RfRVEoIidc
XHhGRicgKDI1NSkiLCBQcmludCgnXHhGRicpKTsKKyAgRVhQRUNUX0VRKCInICcgKDMyLCAweDIw
KSIsIFByaW50KCcgJykpOworICBFWFBFQ1RfRVEoIidhJyAoOTcsIDB4NjEpIiwgUHJpbnQoJ2En
KSk7Cit9CisKKy8vIHNpZ25lZCBjaGFyLgorVEVTVChQcmludENoYXJUZXN0LCBTaWduZWRDaGFy
KSB7CisgIEVYUEVDVF9FUSgiJ1xcMCciLCBQcmludChzdGF0aWNfY2FzdDxzaWduZWQgY2hhcj4o
J1wwJykpKTsKKyAgRVhQRUNUX0VRKCInXFx4Q0UnICgtNTApIiwKKyAgICAgICAgICAgIFByaW50
KHN0YXRpY19jYXN0PHNpZ25lZCBjaGFyPigtNTApKSk7Cit9CisKKy8vIHVuc2lnbmVkIGNoYXIu
CitURVNUKFByaW50Q2hhclRlc3QsIFVuc2lnbmVkQ2hhcikgeworICBFWFBFQ1RfRVEoIidcXDAn
IiwgUHJpbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oJ1wwJykpKTsKKyAgRVhQRUNUX0VR
KCInYicgKDk4LCAweDYyKSIsCisgICAgICAgICAgICBQcmludChzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPignYicpKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIG90aGVyIHNpbXBsZSwgYnVp
bHQtaW4gdHlwZXMuCisKKy8vIGJvb2wuCitURVNUKFByaW50QnVpbHRJblR5cGVUZXN0LCBCb29s
KSB7CisgIEVYUEVDVF9FUSgiZmFsc2UiLCBQcmludChmYWxzZSkpOworICBFWFBFQ1RfRVEoInRy
dWUiLCBQcmludCh0cnVlKSk7Cit9CisKKy8vIHdjaGFyX3QuCitURVNUKFByaW50QnVpbHRJblR5
cGVUZXN0LCBXY2hhcl90KSB7CisgIEVYUEVDVF9FUSgiTCdcXDAnIiwgUHJpbnQoTCdcMCcpKTsK
KyAgRVhQRUNUX0VRKCJMJ1xcJycgKDM5LCAweDI3KSIsIFByaW50KEwnXCcnKSk7CisgIEVYUEVD
VF9FUSgiTCdcIicgKDM0LCAweDIyKSIsIFByaW50KEwnIicpKTsKKyAgRVhQRUNUX0VRKCJMJz8n
ICg2MywgMHgzRikiLCBQcmludChMJz8nKSk7CisgIEVYUEVDVF9FUSgiTCdcXFxcJyAoOTIsIDB4
NUMpIiwgUHJpbnQoTCdcXCcpKTsKKyAgRVhQRUNUX0VRKCJMJ1xcYScgKDcpIiwgUHJpbnQoTCdc
YScpKTsKKyAgRVhQRUNUX0VRKCJMJ1xcYicgKDgpIiwgUHJpbnQoTCdcYicpKTsKKyAgRVhQRUNU
X0VRKCJMJ1xcZicgKDEyLCAweEMpIiwgUHJpbnQoTCdcZicpKTsKKyAgRVhQRUNUX0VRKCJMJ1xc
bicgKDEwLCAweEEpIiwgUHJpbnQoTCdcbicpKTsKKyAgRVhQRUNUX0VRKCJMJ1xccicgKDEzLCAw
eEQpIiwgUHJpbnQoTCdccicpKTsKKyAgRVhQRUNUX0VRKCJMJ1xcdCcgKDkpIiwgUHJpbnQoTCdc
dCcpKTsKKyAgRVhQRUNUX0VRKCJMJ1xcdicgKDExLCAweEIpIiwgUHJpbnQoTCdcdicpKTsKKyAg
RVhQRUNUX0VRKCJMJ1xceDdGJyAoMTI3KSIsIFByaW50KEwnXHg3RicpKTsKKyAgRVhQRUNUX0VR
KCJMJ1xceEZGJyAoMjU1KSIsIFByaW50KEwnXHhGRicpKTsKKyAgRVhQRUNUX0VRKCJMJyAnICgz
MiwgMHgyMCkiLCBQcmludChMJyAnKSk7CisgIEVYUEVDVF9FUSgiTCdhJyAoOTcsIDB4NjEpIiwg
UHJpbnQoTCdhJykpOworICBFWFBFQ1RfRVEoIkwnXFx4NTc2JyAoMTM5OCkiLCBQcmludChzdGF0
aWNfY2FzdDx3Y2hhcl90PigweDU3NikpKTsKKyAgRVhQRUNUX0VRKCJMJ1xceEM3NEQnICg1MTAy
MSkiLCBQcmludChzdGF0aWNfY2FzdDx3Y2hhcl90PigweEM3NEQpKSk7Cit9CisKKy8vIFRlc3Qg
dGhhdCBJbnQ2NCBwcm92aWRlcyBtb3JlIHN0b3JhZ2UgdGhhbiB3Y2hhcl90LgorVEVTVChQcmlu
dFR5cGVTaXplVGVzdCwgV2NoYXJfdCkgeworICBFWFBFQ1RfTFQoc2l6ZW9mKHdjaGFyX3QpLCBz
aXplb2YodGVzdGluZzo6aW50ZXJuYWw6OkludDY0KSk7Cit9CisKKy8vIFZhcmlvdXMgaW50ZWdl
ciB0eXBlcy4KK1RFU1QoUHJpbnRCdWlsdEluVHlwZVRlc3QsIEludGVnZXIpIHsKKyAgRVhQRUNU
X0VRKCInXFx4RkYnICgyNTUpIiwgUHJpbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMjU1
KSkpOyAgLy8gdWludDgKKyAgRVhQRUNUX0VRKCInXFx4ODAnICgtMTI4KSIsIFByaW50KHN0YXRp
Y19jYXN0PHNpZ25lZCBjaGFyPigtMTI4KSkpOyAgLy8gaW50OAorICBFWFBFQ1RfRVEoIjY1NTM1
IiwgUHJpbnQoVVNIUlRfTUFYKSk7ICAvLyB1aW50MTYKKyAgRVhQRUNUX0VRKCItMzI3NjgiLCBQ
cmludChTSFJUX01JTikpOyAgLy8gaW50MTYKKyAgRVhQRUNUX0VRKCI0Mjk0OTY3Mjk1IiwgUHJp
bnQoVUlOVF9NQVgpKTsgIC8vIHVpbnQzMgorICBFWFBFQ1RfRVEoIi0yMTQ3NDgzNjQ4IiwgUHJp
bnQoSU5UX01JTikpOyAgLy8gaW50MzIKKyAgRVhQRUNUX0VRKCIxODQ0Njc0NDA3MzcwOTU1MTYx
NSIsCisgICAgICAgICAgICBQcmludChzdGF0aWNfY2FzdDx0ZXN0aW5nOjppbnRlcm5hbDo6VUlu
dDY0PigtMSkpKTsgIC8vIHVpbnQ2NAorICBFWFBFQ1RfRVEoIi05MjIzMzcyMDM2ODU0Nzc1ODA4
IiwKKyAgICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0PHRlc3Rpbmc6OmludGVybmFsOjpJbnQ2
ND4oMSkgPDwgNjMpKTsgIC8vIGludDY0Cit9CisKKy8vIFNpemUgdHlwZXMuCitURVNUKFByaW50
QnVpbHRJblR5cGVUZXN0LCBTaXplX3QpIHsKKyAgRVhQRUNUX0VRKCIxIiwgUHJpbnQoc2l6ZW9m
KCdhJykpKTsgIC8vIHNpemVfdC4KKyNpZiAhR1RFU1RfT1NfV0lORE9XUworICAvLyBXaW5kb3dz
IGhhcyBubyBzc2l6ZV90IHR5cGUuCisgIEVYUEVDVF9FUSgiLTIiLCBQcmludChzdGF0aWNfY2Fz
dDxzc2l6ZV90PigtMikpKTsgIC8vIHNzaXplX3QuCisjZW5kaWYgIC8vICFHVEVTVF9PU19XSU5E
T1dTCit9CisKKy8vIEZsb2F0aW5nLXBvaW50cy4KK1RFU1QoUHJpbnRCdWlsdEluVHlwZVRlc3Qs
IEZsb2F0aW5nUG9pbnRzKSB7CisgIEVYUEVDVF9FUSgiMS41IiwgUHJpbnQoMS41ZikpOyAgIC8v
IGZsb2F0CisgIEVYUEVDVF9FUSgiLTIuNSIsIFByaW50KC0yLjUpKTsgIC8vIGRvdWJsZQorfQor
CisvLyBTaW5jZSA6OnN0ZDo6c3RyaW5nc3RyZWFtOjpvcGVyYXRvcjw8KGNvbnN0IHZvaWQgKikg
Zm9ybWF0cyB0aGUgcG9pbnRlcgorLy8gb3V0cHV0IGRpZmZlcmVudGx5IHdpdGggZGlmZmVyZW50
IGNvbXBpbGVycywgd2UgaGF2ZSB0byBjcmVhdGUgdGhlIGV4cGVjdGVkCisvLyBvdXRwdXQgZmly
c3QgYW5kIHVzZSBpdCBhcyBvdXIgZXhwZWN0YXRpb24uCitzdGF0aWMgc3RkOjpzdHJpbmcgUHJp
bnRQb2ludGVyKGNvbnN0IHZvaWQqIHApIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBleHBlY3Rl
ZF9yZXN1bHRfc3RyZWFtOworICBleHBlY3RlZF9yZXN1bHRfc3RyZWFtIDw8IHA7CisgIHJldHVy
biBleHBlY3RlZF9yZXN1bHRfc3RyZWFtLnN0cigpOworfQorCisvLyBUZXN0cyBwcmludGluZyBD
IHN0cmluZ3MuCisKKy8vIGNvbnN0IGNoYXIqLgorVEVTVChQcmludENTdHJpbmdUZXN0LCBDb25z
dCkgeworICBjb25zdCBjaGFyKiBwID0gIldvcmxkIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRl
cihwKSArICIgcG9pbnRpbmcgdG8gXCJXb3JsZFwiIiwgUHJpbnQocCkpOworfQorCisvLyBjaGFy
Ki4KK1RFU1QoUHJpbnRDU3RyaW5nVGVzdCwgTm9uQ29uc3QpIHsKKyAgY2hhciBwW10gPSAiSGki
OworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApICsgIiBwb2ludGluZyB0byBcIkhpXCIiLAor
ICAgICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8Y2hhcio+KHApKSk7Cit9CisKKy8vIE5VTEwg
QyBzdHJpbmcuCitURVNUKFByaW50Q1N0cmluZ1Rlc3QsIE51bGwpIHsKKyAgY29uc3QgY2hhciog
cCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gVGVzdHMg
dGhhdCBDIHN0cmluZ3MgYXJlIGVzY2FwZWQgcHJvcGVybHkuCitURVNUKFByaW50Q1N0cmluZ1Rl
c3QsIEVzY2FwZXNQcm9wZXJseSkgeworICBjb25zdCBjaGFyKiBwID0gIidcIj9cXFxhXGJcZlxu
XHJcdFx2XHg3Rlx4RkYgYSI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCkgKyAiIHBvaW50
aW5nIHRvIFwiJ1xcXCI/XFxcXFxcYVxcYlxcZiIKKyAgICAgICAgICAgICJcXG5cXHJcXHRcXHZc
XHg3RlxceEZGIGFcIiIsCisgICAgICAgICAgICBQcmludChwKSk7Cit9CisKKy8vIE1TVkMgY29t
cGlsZXIgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gZGVmaW5lIHdoYXJfdCBhcyBhIHR5cGVkZWYKKy8v
IG9mIHVuc2lnbmVkIHNob3J0LiBEZWZpbmluZyBhbiBvdmVybG9hZCBmb3IgY29uc3Qgd2NoYXJf
dCogaW4gdGhhdCBjYXNlCisvLyB3b3VsZCBjYXVzZSBwb2ludGVycyB0byB1bnNpZ25lZCBzaG9y
dHMgYmUgcHJpbnRlZCBhcyB3aWRlIHN0cmluZ3MsCisvLyBwb3NzaWJseSBhY2Nlc3NpbmcgbW9y
ZSBtZW1vcnkgdGhhbiBpbnRlbmRlZCBhbmQgY2F1c2luZyBpbnZhbGlkCisvLyBtZW1vcnkgYWNj
ZXNzZXMuIE1TVkMgZGVmaW5lcyBfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCBzeW1ib2wgd2hlbgor
Ly8gd2NoYXJfdCBpcyBpbXBsZW1lbnRlZCBhcyBhIG5hdGl2ZSB0eXBlLgorI2lmICFkZWZpbmVk
KF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEKQorCisvLyBjb25z
dCB3Y2hhcl90Ki4KK1RFU1QoUHJpbnRXaWRlQ1N0cmluZ1Rlc3QsIENvbnN0KSB7CisgIGNvbnN0
IHdjaGFyX3QqIHAgPSBMIldvcmxkIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSArICIg
cG9pbnRpbmcgdG8gTFwiV29ybGRcIiIsIFByaW50KHApKTsKK30KKworLy8gd2NoYXJfdCouCitU
RVNUKFByaW50V2lkZUNTdHJpbmdUZXN0LCBOb25Db25zdCkgeworICB3Y2hhcl90IHBbXSA9IEwi
SGkiOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApICsgIiBwb2ludGluZyB0byBMXCJIaVwi
IiwKKyAgICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0PHdjaGFyX3QqPihwKSkpOworfQorCisv
LyBOVUxMIHdpZGUgQyBzdHJpbmcuCitURVNUKFByaW50V2lkZUNTdHJpbmdUZXN0LCBOdWxsKSB7
CisgIGNvbnN0IHdjaGFyX3QqIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChw
KSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgd2lkZSBDIHN0cmluZ3MgYXJlIGVzY2FwZWQgcHJvcGVy
bHkuCitURVNUKFByaW50V2lkZUNTdHJpbmdUZXN0LCBFc2NhcGVzUHJvcGVybHkpIHsKKyAgY29u
c3Qgd2NoYXJfdCBzW10gPSB7J1wnJywgJyInLCAnPycsICdcXCcsICdcYScsICdcYicsICdcZics
ICdcbicsICdccicsCisgICAgICAgICAgICAgICAgICAgICAgICdcdCcsICdcdicsIDB4RDMsIDB4
NTc2LCAweDhEMywgMHhDNzRELCAnICcsICdhJywgJ1wwJ307CisgIEVYUEVDVF9FUShQcmludFBv
aW50ZXIocykgKyAiIHBvaW50aW5nIHRvIExcIidcXFwiP1xcXFxcXGFcXGJcXGYiCisgICAgICAg
ICAgICAiXFxuXFxyXFx0XFx2XFx4RDNcXHg1NzZcXHg4RDNcXHhDNzREIGFcIiIsCisgICAgICAg
ICAgICBQcmludChzdGF0aWNfY2FzdDxjb25zdCB3Y2hhcl90Kj4ocykpKTsKK30KKyNlbmRpZiAg
Ly8gbmF0aXZlIHdjaGFyX3QKKworLy8gVGVzdHMgcHJpbnRpbmcgcG9pbnRlcnMgdG8gb3RoZXIg
Y2hhciB0eXBlcy4KKworLy8gc2lnbmVkIGNoYXIqLgorVEVTVChQcmludENoYXJQb2ludGVyVGVz
dCwgU2lnbmVkQ2hhcikgeworICBzaWduZWQgY2hhciogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2ln
bmVkIGNoYXIqPigweDEyMzQpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChw
KSk7CisgIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9CisKKy8v
IGNvbnN0IHNpZ25lZCBjaGFyKi4KK1RFU1QoUHJpbnRDaGFyUG9pbnRlclRlc3QsIENvbnN0U2ln
bmVkQ2hhcikgeworICBzaWduZWQgY2hhciogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2lnbmVkIGNo
YXIqPigweDEyMzQpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7Cisg
IHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9CisKKy8vIHVuc2ln
bmVkIGNoYXIqLgorVEVTVChQcmludENoYXJQb2ludGVyVGVzdCwgVW5zaWduZWRDaGFyKSB7Cisg
IHVuc2lnbmVkIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPigweDEy
MzQpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7CisgIHAgPSBOVUxM
OworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9CisKKy8vIGNvbnN0IHVuc2lnbmVk
IGNoYXIqLgorVEVTVChQcmludENoYXJQb2ludGVyVGVzdCwgQ29uc3RVbnNpZ25lZENoYXIpIHsK
KyAgY29uc3QgdW5zaWduZWQgY2hhciogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWdu
ZWQgY2hhcio+KDB4MTIzNCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHAp
KTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8g
VGVzdHMgcHJpbnRpbmcgcG9pbnRlcnMgdG8gc2ltcGxlLCBidWlsdC1pbiB0eXBlcy4KKworLy8g
Ym9vbCouCitURVNUKFByaW50UG9pbnRlclRvQnVpbHRJblR5cGVUZXN0LCBCb29sKSB7CisgIGJv
b2wqIHAgPSByZWludGVycHJldF9jYXN0PGJvb2wqPigweEFCQ0QpOworICBFWFBFQ1RfRVEoUHJp
bnRQb2ludGVyKHApLCBQcmludChwKSk7CisgIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwi
LCBQcmludChwKSk7Cit9CisKKy8vIHZvaWQqLgorVEVTVChQcmludFBvaW50ZXJUb0J1aWx0SW5U
eXBlVGVzdCwgVm9pZCkgeworICB2b2lkKiBwID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMHhB
QkNEKTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0gTlVM
TDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBjb25zdCB2b2lkKi4K
K1RFU1QoUHJpbnRQb2ludGVyVG9CdWlsdEluVHlwZVRlc3QsIENvbnN0Vm9pZCkgeworICBjb25z
dCB2b2lkKiBwID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oMHhBQkNEKTsKKyAgRVhQ
RUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNU
X0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBUZXN0cyBwcmludGluZyBwb2ludGVycyB0
byBwb2ludGVycy4KK1RFU1QoUHJpbnRQb2ludGVyVG9Qb2ludGVyVGVzdCwgSW50UG9pbnRlclBv
aW50ZXIpIHsKKyAgaW50KiogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50Kio+KDB4QUJDRCk7Cisg
IEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5VTEw7CisgIEVY
UEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgKG5vbi1t
ZW1iZXIpIGZ1bmN0aW9uIHBvaW50ZXJzLgorCit2b2lkIE15RnVuY3Rpb24oaW50IC8qIG4gKi8p
IHt9CisKK1RFU1QoUHJpbnRQb2ludGVyVGVzdCwgTm9uTWVtYmVyRnVuY3Rpb25Qb2ludGVyKSB7
CisgIC8vIFdlIGNhbm5vdCBkaXJlY3RseSBjYXN0ICZNeUZ1bmN0aW9uIHRvIGNvbnN0IHZvaWQq
IGJlY2F1c2UgdGhlCisgIC8vIHN0YW5kYXJkIGRpc2FsbG93cyBjYXN0aW5nIGJldHdlZW4gcG9p
bnRlcnMgdG8gZnVuY3Rpb25zIGFuZAorICAvLyBwb2ludGVycyB0byBvYmplY3RzLCBhbmQgc29t
ZSBjb21waWxlcnMgKGUuZy4gR0NDIDMuNCkgZW5mb3JjZQorICAvLyB0aGlzIGxpbWl0YXRpb24u
CisgIEVYUEVDVF9FUSgKKyAgICAgIFByaW50UG9pbnRlcihyZWludGVycHJldF9jYXN0PGNvbnN0
IHZvaWQqPigKKyAgICAgICAgICByZWludGVycHJldF9jYXN0PGludGVybmFsOjpCaWdnZXN0SW50
PigmTXlGdW5jdGlvbikpKSwKKyAgICAgIFByaW50KCZNeUZ1bmN0aW9uKSk7CisgIGludCAoKnAp
KGJvb2wpID0gTlVMTDsgIC8vIE5PTElOVAorICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7
Cit9CisKKy8vIEFuIGFzc2VydGlvbiBwcmVkaWNhdGUgZGV0ZXJtaW5pbmcgd2hldGhlciBhIG9u
ZSBzdHJpbmcgaXMgYSBwcmVmaXggZm9yCisvLyBhbm90aGVyLgordGVtcGxhdGUgPHR5cGVuYW1l
IFN0cmluZ1R5cGU+CitBc3NlcnRpb25SZXN1bHQgSGFzUHJlZml4KGNvbnN0IFN0cmluZ1R5cGUm
IHN0ciwgY29uc3QgU3RyaW5nVHlwZSYgcHJlZml4KSB7CisgIGlmIChzdHIuZmluZChwcmVmaXgs
IDApID09IDApCisgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKKworICBjb25zdCBib29s
IGlzX3dpZGVfc3RyaW5nID0gc2l6ZW9mKHByZWZpeFswXSkgPiAxOworICBjb25zdCBjaGFyKiBj
b25zdCBiZWdpbl9zdHJpbmdfcXVvdGUgPSBpc193aWRlX3N0cmluZyA/ICJMXCIiIDogIlwiIjsK
KyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKQorICAgICAgPDwgYmVnaW5fc3RyaW5nX3F1b3Rl
IDw8IHByZWZpeCA8PCAiXCIgaXMgbm90IGEgcHJlZml4IG9mICIKKyAgICAgIDw8IGJlZ2luX3N0
cmluZ19xdW90ZSA8PCBzdHIgPDwgIlwiXG4iOworfQorCisvLyBUZXN0cyBwcmludGluZyBtZW1i
ZXIgdmFyaWFibGUgcG9pbnRlcnMuICBBbHRob3VnaCB0aGV5IGFyZSBjYWxsZWQKKy8vIHBvaW50
ZXJzLCB0aGV5IGRvbid0IHBvaW50IHRvIGEgbG9jYXRpb24gaW4gdGhlIGFkZHJlc3Mgc3BhY2Uu
CisvLyBUaGVpciByZXByZXNlbnRhdGlvbiBpcyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLiAgVGh1
cyB0aGV5IHdpbGwgYmUKKy8vIHByaW50ZWQgYXMgcmF3IGJ5dGVzLgorCitzdHJ1Y3QgRm9vIHsK
KyBwdWJsaWM6CisgIHZpcnR1YWwgfkZvbygpIHt9CisgIGludCBNeU1ldGhvZChjaGFyIHgpIHsg
cmV0dXJuIHggKyAxOyB9CisgIHZpcnR1YWwgY2hhciBNeVZpcnR1YWxNZXRob2QoaW50IC8qIG4g
Ki8pIHsgcmV0dXJuICdhJzsgfQorCisgIGludCB2YWx1ZTsKK307CisKK1RFU1QoUHJpbnRQb2lu
dGVyVGVzdCwgTWVtYmVyVmFyaWFibGVQb2ludGVyKSB7CisgIEVYUEVDVF9UUlVFKEhhc1ByZWZp
eChQcmludCgmRm9vOjp2YWx1ZSksCisgICAgICAgICAgICAgICAgICAgICAgICBQcmludChzaXpl
b2YoJkZvbzo6dmFsdWUpKSArICItYnl0ZSBvYmplY3QgIikpOworICBpbnQgRm9vOjoqcCA9IE5V
TEw7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KFByaW50KHApLAorICAgICAg
ICAgICAgICAgICAgICAgICAgUHJpbnQoc2l6ZW9mKHApKSArICItYnl0ZSBvYmplY3QgIikpOwor
fQorCisvLyBUZXN0cyBwcmludGluZyBtZW1iZXIgZnVuY3Rpb24gcG9pbnRlcnMuICBBbHRob3Vn
aCB0aGV5IGFyZSBjYWxsZWQKKy8vIHBvaW50ZXJzLCB0aGV5IGRvbid0IHBvaW50IHRvIGEgbG9j
YXRpb24gaW4gdGhlIGFkZHJlc3Mgc3BhY2UuCisvLyBUaGVpciByZXByZXNlbnRhdGlvbiBpcyBp
bXBsZW1lbnRhdGlvbi1kZWZpbmVkLiAgVGh1cyB0aGV5IHdpbGwgYmUKKy8vIHByaW50ZWQgYXMg
cmF3IGJ5dGVzLgorVEVTVChQcmludFBvaW50ZXJUZXN0LCBNZW1iZXJGdW5jdGlvblBvaW50ZXIp
IHsKKyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KFByaW50KCZGb286Ok15TWV0aG9kKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFByaW50KHNpemVvZigmRm9vOjpNeU1ldGhvZCkpICsgIi1ieXRl
IG9iamVjdCAiKSk7CisgIEVYUEVDVF9UUlVFKAorICAgICAgSGFzUHJlZml4KFByaW50KCZGb286
Ok15VmlydHVhbE1ldGhvZCksCisgICAgICAgICAgICAgICAgUHJpbnQoc2l6ZW9mKCgmRm9vOjpN
eVZpcnR1YWxNZXRob2QpKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKKyAgaW50IChGb286OipwKShj
aGFyKSA9IE5VTEw7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KFByaW50KHAp
LAorICAgICAgICAgICAgICAgICAgICAgICAgUHJpbnQoc2l6ZW9mKHApKSArICItYnl0ZSBvYmpl
Y3QgIikpOworfQorCisvLyBUZXN0cyBwcmludGluZyBDIGFycmF5cy4KKworLy8gVGhlIGRpZmZl
cmVuY2UgYmV0d2VlbiB0aGlzIGFuZCBQcmludCgpIGlzIHRoYXQgaXQgZW5zdXJlcyB0aGF0IHRo
ZQorLy8gYXJndW1lbnQgaXMgYSByZWZlcmVuY2UgdG8gYW4gYXJyYXkuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgc2l6ZV90IE4+CitzdGQ6OnN0cmluZyBQcmludEFycmF5SGVscGVyKFQgKCZhKVtO
XSkgeworICByZXR1cm4gUHJpbnQoYSk7Cit9CisKKy8vIE9uZS1kaW1lbnNpb25hbCBhcnJheS4K
K1RFU1QoUHJpbnRBcnJheVRlc3QsIE9uZURpbWVuc2lvbmFsQXJyYXkpIHsKKyAgaW50IGFbNV0g
PSB7IDEsIDIsIDMsIDQsIDUgfTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDIsIDMsIDQsIDUgfSIsIFBy
aW50QXJyYXlIZWxwZXIoYSkpOworfQorCisvLyBUd28tZGltZW5zaW9uYWwgYXJyYXkuCitURVNU
KFByaW50QXJyYXlUZXN0LCBUd29EaW1lbnNpb25hbEFycmF5KSB7CisgIGludCBhWzJdWzVdID0g
eworICAgIHsgMSwgMiwgMywgNCwgNSB9LAorICAgIHsgNiwgNywgOCwgOSwgMCB9CisgIH07Cisg
IEVYUEVDVF9FUSgieyB7IDEsIDIsIDMsIDQsIDUgfSwgeyA2LCA3LCA4LCA5LCAwIH0gfSIsIFBy
aW50QXJyYXlIZWxwZXIoYSkpOworfQorCisvLyBBcnJheSBvZiBjb25zdCBlbGVtZW50cy4KK1RF
U1QoUHJpbnRBcnJheVRlc3QsIENvbnN0QXJyYXkpIHsKKyAgY29uc3QgYm9vbCBhWzFdID0geyBm
YWxzZSB9OworICBFWFBFQ1RfRVEoInsgZmFsc2UgfSIsIFByaW50QXJyYXlIZWxwZXIoYSkpOwor
fQorCisvLyBjaGFyIGFycmF5IHdpdGhvdXQgdGVybWluYXRpbmcgTlVMLgorVEVTVChQcmludEFy
cmF5VGVzdCwgQ2hhckFycmF5V2l0aE5vVGVybWluYXRpbmdOdWwpIHsKKyAgLy8gQXJyYXkgYSBj
b250YWlucyAnXDAnIGluIHRoZSBtaWRkbGUgYW5kIGRvZXNuJ3QgZW5kIHdpdGggJ1wwJy4KKyAg
Y2hhciBhW10gPSB7ICdIJywgJ1wwJywgJ2knIH07CisgIEVYUEVDVF9FUSgiXCJIXFwwaVwiIChu
byB0ZXJtaW5hdGluZyBOVUwpIiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIGNvbnN0
IGNoYXIgYXJyYXkgd2l0aCB0ZXJtaW5hdGluZyBOVUwuCitURVNUKFByaW50QXJyYXlUZXN0LCBD
b25zdENoYXJBcnJheVdpdGhUZXJtaW5hdGluZ051bCkgeworICBjb25zdCBjaGFyIGFbXSA9ICJc
MEhpIjsKKyAgRVhQRUNUX0VRKCJcIlxcMEhpXCIiLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30K
KworLy8gY29uc3Qgd2NoYXJfdCBhcnJheSB3aXRob3V0IHRlcm1pbmF0aW5nIE5VTC4KK1RFU1Qo
UHJpbnRBcnJheVRlc3QsIFdDaGFyQXJyYXlXaXRoTm9UZXJtaW5hdGluZ051bCkgeworICAvLyBB
cnJheSBhIGNvbnRhaW5zICdcMCcgaW4gdGhlIG1pZGRsZSBhbmQgZG9lc24ndCBlbmQgd2l0aCAn
XDAnLgorICBjb25zdCB3Y2hhcl90IGFbXSA9IHsgTCdIJywgTCdcMCcsIEwnaScgfTsKKyAgRVhQ
RUNUX0VRKCJMXCJIXFwwaVwiIChubyB0ZXJtaW5hdGluZyBOVUwpIiwgUHJpbnRBcnJheUhlbHBl
cihhKSk7Cit9CisKKy8vIHdjaGFyX3QgYXJyYXkgd2l0aCB0ZXJtaW5hdGluZyBOVUwuCitURVNU
KFByaW50QXJyYXlUZXN0LCBXQ29uc3RDaGFyQXJyYXlXaXRoVGVybWluYXRpbmdOdWwpIHsKKyAg
Y29uc3Qgd2NoYXJfdCBhW10gPSBMIlwwSGkiOworICBFWFBFQ1RfRVEoIkxcIlxcMEhpXCIiLCBQ
cmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8gQXJyYXkgb2Ygb2JqZWN0cy4KK1RFU1QoUHJp
bnRBcnJheVRlc3QsIE9iamVjdEFycmF5KSB7CisgIHN0ZDo6c3RyaW5nIGFbM10gPSB7IkhpIiwg
IkhlbGxvIiwgIk5pIGhhbyJ9OworICBFWFBFQ1RfRVEoInsgXCJIaVwiLCBcIkhlbGxvXCIsIFwi
TmkgaGFvXCIgfSIsIFByaW50QXJyYXlIZWxwZXIoYSkpOworfQorCisvLyBBcnJheSB3aXRoIG1h
bnkgZWxlbWVudHMuCitURVNUKFByaW50QXJyYXlUZXN0LCBCaWdBcnJheSkgeworICBpbnQgYVsx
MDBdID0geyAxLCAyLCAzIH07CisgIEVYUEVDVF9FUSgieyAxLCAyLCAzLCAwLCAwLCAwLCAwLCAw
LCAuLi4sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAgfSIsCisgICAgICAgICAgICBQcmludEFycmF5
SGVscGVyKGEpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgOjpzdHJpbmcgYW5kIDo6c3RkOjpz
dHJpbmcuCisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworLy8gOjpzdHJpbmcuCitURVNU
KFByaW50U3RyaW5nVGVzdCwgU3RyaW5nSW5HbG9iYWxOYW1lc3BhY2UpIHsKKyAgY29uc3QgY2hh
ciBzW10gPSAiJ1wiP1xcXGFcYlxmXG5cMFxyXHRcdlx4N0ZceEZGIGEiOworICBjb25zdCA6OnN0
cmluZyBzdHIocywgc2l6ZW9mKHMpKTsKKyAgRVhQRUNUX0VRKCJcIidcXFwiP1xcXFxcXGFcXGJc
XGZcXG5cXDBcXHJcXHRcXHZcXHg3RlxceEZGIGFcXDBcIiIsCisgICAgICAgICAgICBQcmludChz
dHIpKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKworLy8gOjpzdGQ6
OnN0cmluZy4KK1RFU1QoUHJpbnRTdHJpbmdUZXN0LCBTdHJpbmdJblN0ZE5hbWVzcGFjZSkgewor
ICBjb25zdCBjaGFyIHNbXSA9ICInXCI/XFxcYVxiXGZcblwwXHJcdFx2XHg3Rlx4RkYgYSI7Cisg
IGNvbnN0IDo6c3RkOjpzdHJpbmcgc3RyKHMsIHNpemVvZihzKSk7CisgIEVYUEVDVF9FUSgiXCIn
XFxcIj9cXFxcXFxhXFxiXFxmXFxuXFwwXFxyXFx0XFx2XFx4N0ZcXHhGRiBhXFwwXCIiLAorICAg
ICAgICAgICAgUHJpbnQoc3RyKSk7Cit9CisKK1RFU1QoUHJpbnRTdHJpbmdUZXN0LCBTdHJpbmdB
bWJpZ3VvdXNIZXgpIHsKKyAgLy8gIlx4NkJBTkFOQSIgaXMgYW1iaWd1b3VzLCBpdCBjYW4gYmUg
aW50ZXJwcmV0ZWQgYXMgc3RhcnRpbmcgd2l0aCBlaXRoZXIgb2Y6CisgIC8vICdceDYnLCAnXHg2
QicsIG9yICdceDZCQScuCisKKyAgLy8gYSBoZXggZXNjYXBpbmcgc2VxdWVuY2UgZm9sbG93aW5n
IGJ5IGEgZGVjaW1hbCBkaWdpdAorICBFWFBFQ1RfRVEoIlwiMFxceDEyXCIgXCIzXCIiLCBQcmlu
dCg6OnN0ZDo6c3RyaW5nKCIwXHgxMiIgIjMiKSkpOworICAvLyBhIGhleCBlc2NhcGluZyBzZXF1
ZW5jZSBmb2xsb3dpbmcgYnkgYSBoZXggZGlnaXQgKGxvd2VyLWNhc2UpCisgIEVYUEVDVF9FUSgi
XCJtbVxceDZcIiBcImJhbmFuYXNcIiIsIFByaW50KDo6c3RkOjpzdHJpbmcoIm1tXHg2IiAiYmFu
YW5hcyIpKSk7CisgIC8vIGEgaGV4IGVzY2FwaW5nIHNlcXVlbmNlIGZvbGxvd2luZyBieSBhIGhl
eCBkaWdpdCAodXBwZXItY2FzZSkKKyAgRVhQRUNUX0VRKCJcIk5PTVxceDZcIiBcIkJBTkFOQVwi
IiwgUHJpbnQoOjpzdGQ6OnN0cmluZygiTk9NXHg2IiAiQkFOQU5BIikpKTsKKyAgLy8gYSBoZXgg
ZXNjYXBpbmcgc2VxdWVuY2UgZm9sbG93aW5nIGJ5IGEgbm9uLXhkaWdpdAorICBFWFBFQ1RfRVEo
IlwiIVxceDUtIVwiIiwgUHJpbnQoOjpzdGQ6OnN0cmluZygiIVx4NS0hIikpKTsKK30KKworLy8g
VGVzdHMgcHJpbnRpbmcgOjp3c3RyaW5nIGFuZCA6OnN0ZDo6d3N0cmluZy4KKworI2lmIEdURVNU
X0hBU19HTE9CQUxfV1NUUklORworLy8gOjp3c3RyaW5nLgorVEVTVChQcmludFdpZGVTdHJpbmdU
ZXN0LCBTdHJpbmdJbkdsb2JhbE5hbWVzcGFjZSkgeworICBjb25zdCB3Y2hhcl90IHNbXSA9IEwi
J1wiP1xcXGFcYlxmXG5cMFxyXHRcdlx4RDNceDU3Nlx4OEQzXHhDNzREIGEiOworICBjb25zdCA6
OndzdHJpbmcgc3RyKHMsIHNpemVvZihzKS9zaXplb2Yod2NoYXJfdCkpOworICBFWFBFQ1RfRVEo
IkxcIidcXFwiP1xcXFxcXGFcXGJcXGZcXG5cXDBcXHJcXHRcXHYiCisgICAgICAgICAgICAiXFx4
RDNcXHg1NzZcXHg4RDNcXHhDNzREIGFcXDBcIiIsCisgICAgICAgICAgICBQcmludChzdHIpKTsK
K30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCisKKyNpZiBHVEVTVF9IQVNf
U1REX1dTVFJJTkcKKy8vIDo6c3RkOjp3c3RyaW5nLgorVEVTVChQcmludFdpZGVTdHJpbmdUZXN0
LCBTdHJpbmdJblN0ZE5hbWVzcGFjZSkgeworICBjb25zdCB3Y2hhcl90IHNbXSA9IEwiJ1wiP1xc
XGFcYlxmXG5cMFxyXHRcdlx4RDNceDU3Nlx4OEQzXHhDNzREIGEiOworICBjb25zdCA6OnN0ZDo6
d3N0cmluZyBzdHIocywgc2l6ZW9mKHMpL3NpemVvZih3Y2hhcl90KSk7CisgIEVYUEVDVF9FUSgi
TFwiJ1xcXCI/XFxcXFxcYVxcYlxcZlxcblxcMFxcclxcdFxcdiIKKyAgICAgICAgICAgICJcXHhE
M1xceDU3NlxceDhEM1xceEM3NEQgYVxcMFwiIiwKKyAgICAgICAgICAgIFByaW50KHN0cikpOwor
fQorCitURVNUKFByaW50V2lkZVN0cmluZ1Rlc3QsIFN0cmluZ0FtYmlndW91c0hleCkgeworICAv
LyBzYW1lIGZvciB3aWRlIHN0cmluZ3MuCisgIEVYUEVDVF9FUSgiTFwiMFxceDEyXCIgTFwiM1wi
IiwgUHJpbnQoOjpzdGQ6OndzdHJpbmcoTCIwXHgxMiIgTCIzIikpKTsKKyAgRVhQRUNUX0VRKCJM
XCJtbVxceDZcIiBMXCJiYW5hbmFzXCIiLAorICAgICAgICAgICAgUHJpbnQoOjpzdGQ6OndzdHJp
bmcoTCJtbVx4NiIgTCJiYW5hbmFzIikpKTsKKyAgRVhQRUNUX0VRKCJMXCJOT01cXHg2XCIgTFwi
QkFOQU5BXCIiLAorICAgICAgICAgICAgUHJpbnQoOjpzdGQ6OndzdHJpbmcoTCJOT01ceDYiIEwi
QkFOQU5BIikpKTsKKyAgRVhQRUNUX0VRKCJMXCIhXFx4NS0hXCIiLCBQcmludCg6OnN0ZDo6d3N0
cmluZyhMIiFceDUtISIpKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORwor
CisvLyBUZXN0cyBwcmludGluZyB0eXBlcyB0aGF0IHN1cHBvcnQgZ2VuZXJpYyBzdHJlYW1pbmcg
KGkuZS4gc3RyZWFtaW5nCisvLyB0byBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0
cz4gZm9yIGFueSB2YWxpZCBDaGFyIGFuZAorLy8gQ2hhclRyYWl0cyB0eXBlcykuCisKKy8vIFRl
c3RzIHByaW50aW5nIGEgbm9uLXRlbXBsYXRlIHR5cGUgdGhhdCBzdXBwb3J0cyBnZW5lcmljIHN0
cmVhbWluZy4KKworY2xhc3MgQWxsb3dzR2VuZXJpY1N0cmVhbWluZyB7fTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIENoYXIsIHR5cGVuYW1lIENoYXJUcmFpdHM+CitzdGQ6OmJhc2ljX29zdHJlYW08
Q2hhciwgQ2hhclRyYWl0cz4mIG9wZXJhdG9yPDwoCisgICAgc3RkOjpiYXNpY19vc3RyZWFtPENo
YXIsIENoYXJUcmFpdHM+JiBvcywKKyAgICBjb25zdCBBbGxvd3NHZW5lcmljU3RyZWFtaW5nJiAv
KiBhICovKSB7CisgIHJldHVybiBvcyA8PCAiQWxsb3dzR2VuZXJpY1N0cmVhbWluZyI7Cit9CisK
K1RFU1QoUHJpbnRUeXBlV2l0aEdlbmVyaWNTdHJlYW1pbmdUZXN0LCBOb25UZW1wbGF0ZVR5cGUp
IHsKKyAgQWxsb3dzR2VuZXJpY1N0cmVhbWluZyBhOworICBFWFBFQ1RfRVEoIkFsbG93c0dlbmVy
aWNTdHJlYW1pbmciLCBQcmludChhKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIGEgdGVtcGxh
dGUgdHlwZSB0aGF0IHN1cHBvcnRzIGdlbmVyaWMgc3RyZWFtaW5nLgorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2NsYXNzIEFsbG93c0dlbmVyaWNTdHJlYW1pbmdUZW1wbGF0ZSB7fTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIENoYXIsIHR5cGVuYW1lIENoYXJUcmFpdHMsIHR5cGVuYW1lIFQ+Citz
dGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9wZXJhdG9yPDwoCisgICAgc3Rk
OjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcywKKyAgICBjb25zdCBBbGxvd3NH
ZW5lcmljU3RyZWFtaW5nVGVtcGxhdGU8VD4mIC8qIGEgKi8pIHsKKyAgcmV0dXJuIG9zIDw8ICJB
bGxvd3NHZW5lcmljU3RyZWFtaW5nVGVtcGxhdGUiOworfQorCitURVNUKFByaW50VHlwZVdpdGhH
ZW5lcmljU3RyZWFtaW5nVGVzdCwgVGVtcGxhdGVUeXBlKSB7CisgIEFsbG93c0dlbmVyaWNTdHJl
YW1pbmdUZW1wbGF0ZTxpbnQ+IGE7CisgIEVYUEVDVF9FUSgiQWxsb3dzR2VuZXJpY1N0cmVhbWlu
Z1RlbXBsYXRlIiwgUHJpbnQoYSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyBhIHR5cGUgdGhh
dCBzdXBwb3J0cyBnZW5lcmljIHN0cmVhbWluZyBhbmQgY2FuIGJlCisvLyBpbXBsaWNpdGx5IGNv
bnZlcnRlZCB0byBhbm90aGVyIHByaW50YWJsZSB0eXBlLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK2NsYXNzIEFsbG93c0dlbmVyaWNTdHJlYW1pbmdBbmRJbXBsaWNpdENvbnZlcnNpb25UZW1w
bGF0ZSB7CisgcHVibGljOgorICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyLCB0eXBlbmFtZSBDaGFyVHJhaXRzLCB0
eXBlbmFtZSBUPgorc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcGVyYXRv
cjw8KAorICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYgb3MsCisgICAg
Y29uc3QgQWxsb3dzR2VuZXJpY1N0cmVhbWluZ0FuZEltcGxpY2l0Q29udmVyc2lvblRlbXBsYXRl
PFQ+JiAvKiBhICovKSB7CisgIHJldHVybiBvcyA8PCAiQWxsb3dzR2VuZXJpY1N0cmVhbWluZ0Fu
ZEltcGxpY2l0Q29udmVyc2lvblRlbXBsYXRlIjsKK30KKworVEVTVChQcmludFR5cGVXaXRoR2Vu
ZXJpY1N0cmVhbWluZ1Rlc3QsIFR5cGVJbXBsaWNpdGx5Q29udmVydGlibGUpIHsKKyAgQWxsb3dz
R2VuZXJpY1N0cmVhbWluZ0FuZEltcGxpY2l0Q29udmVyc2lvblRlbXBsYXRlPGludD4gYTsKKyAg
RVhQRUNUX0VRKCJBbGxvd3NHZW5lcmljU3RyZWFtaW5nQW5kSW1wbGljaXRDb252ZXJzaW9uVGVt
cGxhdGUiLCBQcmludChhKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfQUJTTAorCisvLyBUZXN0cyBw
cmludGluZyA6OmFic2w6OnN0cmluZ192aWV3LgorCitURVNUKFByaW50U3RyaW5nVmlld1Rlc3Qs
IFNpbXBsZVN0cmluZ1ZpZXcpIHsKKyAgY29uc3QgOjphYnNsOjpzdHJpbmdfdmlldyBzcCA9ICJI
ZWxsbyI7CisgIEVYUEVDVF9FUSgiXCJIZWxsb1wiIiwgUHJpbnQoc3ApKTsKK30KKworVEVTVChQ
cmludFN0cmluZ1ZpZXdUZXN0LCBVbnByaW50YWJsZUNoYXJhY3RlcnMpIHsKKyAgY29uc3QgY2hh
ciBzdHJbXSA9ICJOVUwgKFwwKSBhbmQgXHJcdCI7CisgIGNvbnN0IDo6YWJzbDo6c3RyaW5nX3Zp
ZXcgc3Aoc3RyLCBzaXplb2Yoc3RyKSAtIDEpOworICBFWFBFQ1RfRVEoIlwiTlVMIChcXDApIGFu
ZCBcXHJcXHRcIiIsIFByaW50KHNwKSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0FCU0wK
KworLy8gVGVzdHMgcHJpbnRpbmcgU1RMIGNvbnRhaW5lcnMuCisKK1RFU1QoUHJpbnRTdGxDb250
YWluZXJUZXN0LCBFbXB0eURlcXVlKSB7CisgIGRlcXVlPGNoYXI+IGVtcHR5OworICBFWFBFQ1Rf
RVEoInt9IiwgUHJpbnQoZW1wdHkpKTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3Qs
IE5vbkVtcHR5RGVxdWUpIHsKKyAgZGVxdWU8aW50PiBub25fZW1wdHk7CisgIG5vbl9lbXB0eS5w
dXNoX2JhY2soMSk7CisgIG5vbl9lbXB0eS5wdXNoX2JhY2soMyk7CisgIEVYUEVDVF9FUSgieyAx
LCAzIH0iLCBQcmludChub25fZW1wdHkpKTsKK30KKworI2lmIEdURVNUX0hBU19VTk9SREVSRURf
TUFQXworCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgT25lRWxlbWVudEhhc2hNYXApIHsK
KyAgOjpzdGQ6OnVub3JkZXJlZF9tYXA8aW50LCBjaGFyPiBtYXAxOworICBtYXAxWzFdID0gJ2En
OworICBFWFBFQ1RfRVEoInsgKDEsICdhJyAoOTcsIDB4NjEpKSB9IiwgUHJpbnQobWFwMSkpOwor
fQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgSGFzaE11bHRpTWFwKSB7CisgIDo6c3Rk
Ojp1bm9yZGVyZWRfbXVsdGltYXA8aW50LCBib29sPiBtYXAxOworICBtYXAxLmluc2VydChtYWtl
X3BhaXIoNSwgdHJ1ZSkpOworICBtYXAxLmluc2VydChtYWtlX3BhaXIoNSwgZmFsc2UpKTsKKwor
ICAvLyBFbGVtZW50cyBvZiBoYXNoX211bHRpbWFwIGNhbiBiZSBwcmludGVkIGluIGFueSBvcmRl
ci4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgcmVzdWx0ID0gUHJpbnQobWFwMSk7CisgIEVYUEVDVF9U
UlVFKHJlc3VsdCA9PSAieyAoNSwgdHJ1ZSksICg1LCBmYWxzZSkgfSIgfHwKKyAgICAgICAgICAg
ICAgcmVzdWx0ID09ICJ7ICg1LCBmYWxzZSksICg1LCB0cnVlKSB9IikKKyAgICAgICAgICAgICAg
ICAgIDw8ICIgd2hlcmUgUHJpbnQobWFwMSkgcmV0dXJucyBcIiIgPDwgcmVzdWx0IDw8ICJcIi4i
OworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19VTk9SREVSRURfTUFQXworCisjaWYgR1RFU1Rf
SEFTX1VOT1JERVJFRF9TRVRfCisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBIYXNoU2V0
KSB7CisgIDo6c3RkOjp1bm9yZGVyZWRfc2V0PGludD4gc2V0MTsKKyAgc2V0MS5pbnNlcnQoMSk7
CisgIEVYUEVDVF9FUSgieyAxIH0iLCBQcmludChzZXQxKSk7Cit9CisKK1RFU1QoUHJpbnRTdGxD
b250YWluZXJUZXN0LCBIYXNoTXVsdGlTZXQpIHsKKyAgY29uc3QgaW50IGtTaXplID0gNTsKKyAg
aW50IGFba1NpemVdID0geyAxLCAxLCAyLCA1LCAxIH07CisgIDo6c3RkOjp1bm9yZGVyZWRfbXVs
dGlzZXQ8aW50PiBzZXQxKGEsIGEgKyBrU2l6ZSk7CisKKyAgLy8gRWxlbWVudHMgb2YgaGFzaF9t
dWx0aXNldCBjYW4gYmUgcHJpbnRlZCBpbiBhbnkgb3JkZXIuCisgIGNvbnN0IHN0ZDo6c3RyaW5n
IHJlc3VsdCA9IFByaW50KHNldDEpOworICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3RlZF9wYXR0
ZXJuID0gInsgZCwgZCwgZCwgZCwgZCB9IjsgIC8vIGQgbWVhbnMgYSBkaWdpdC4KKworICAvLyBW
ZXJpZmllcyB0aGUgcmVzdWx0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIHBhdHRlcm47IGFsc28gZXh0
cmFjdHMKKyAgLy8gdGhlIG51bWJlcnMgaW4gdGhlIHJlc3VsdC4KKyAgQVNTRVJUX0VRKGV4cGVj
dGVkX3BhdHRlcm4ubGVuZ3RoKCksIHJlc3VsdC5sZW5ndGgoKSk7CisgIHN0ZDo6dmVjdG9yPGlu
dD4gbnVtYmVyczsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gcmVzdWx0Lmxlbmd0aCgpOyBp
KyspIHsKKyAgICBpZiAoZXhwZWN0ZWRfcGF0dGVybltpXSA9PSAnZCcpIHsKKyAgICAgIEFTU0VS
VF9ORShpc2RpZ2l0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHJlc3VsdFtpXSkpLCAwKTsK
KyAgICAgIG51bWJlcnMucHVzaF9iYWNrKHJlc3VsdFtpXSAtICcwJyk7CisgICAgfSBlbHNlIHsK
KyAgICAgIEVYUEVDVF9FUShleHBlY3RlZF9wYXR0ZXJuW2ldLCByZXN1bHRbaV0pIDw8ICIgd2hl
cmUgcmVzdWx0IGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8IHJlc3VsdDsKKyAgICB9CisgIH0KKworICAvLyBNYWtlcyBzdXJlIHRoZSByZXN1
bHQgY29udGFpbnMgdGhlIHJpZ2h0IG51bWJlcnMuCisgIHN0ZDo6c29ydChudW1iZXJzLmJlZ2lu
KCksIG51bWJlcnMuZW5kKCkpOworICBzdGQ6OnNvcnQoYSwgYSArIGtTaXplKTsKKyAgRVhQRUNU
X1RSVUUoc3RkOjplcXVhbChhLCBhICsga1NpemUsIG51bWJlcnMuYmVnaW4oKSkpOworfQorCisj
ZW5kaWYgIC8vICBHVEVTVF9IQVNfVU5PUkRFUkVEX1NFVF8KKworVEVTVChQcmludFN0bENvbnRh
aW5lclRlc3QsIExpc3QpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgYVtdID0geyJoZWxsbyIsICJ3
b3JsZCJ9OworICBjb25zdCBsaXN0PHN0ZDo6c3RyaW5nPiBzdHJpbmdzKGEsIGEgKyAyKTsKKyAg
RVhQRUNUX0VRKCJ7IFwiaGVsbG9cIiwgXCJ3b3JsZFwiIH0iLCBQcmludChzdHJpbmdzKSk7Cit9
CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBNYXApIHsKKyAgbWFwPGludCwgYm9vbD4g
bWFwMTsKKyAgbWFwMVsxXSA9IHRydWU7CisgIG1hcDFbNV0gPSBmYWxzZTsKKyAgbWFwMVszXSA9
IHRydWU7CisgIEVYUEVDVF9FUSgieyAoMSwgdHJ1ZSksICgzLCB0cnVlKSwgKDUsIGZhbHNlKSB9
IiwgUHJpbnQobWFwMSkpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgTXVsdGlN
YXApIHsKKyAgbXVsdGltYXA8Ym9vbCwgaW50PiBtYXAxOworICAvLyBUaGUgbWFrZV9wYWlyIHRl
bXBsYXRlIGZ1bmN0aW9uIHdvdWxkIGRlZHVjZSB0aGUgdHlwZSBhcworICAvLyBwYWlyPGJvb2ws
IGludD4gaGVyZSwgYW5kIHNpbmNlIHRoZSBrZXkgcGFydCBpbiBhIG11bHRpbWFwIGhhcyB0bwor
ICAvLyBiZSBjb25zdGFudCwgd2l0aG91dCBhIHRlbXBsYXRlZCBjdG9yIGluIHRoZSBwYWlyIGNs
YXNzIChhcyBpbgorICAvLyBsaWJDc3RkIG9uIFNvbGFyaXMpLCBtYWtlX3BhaXIgY2FsbCB3b3Vs
ZCBmYWlsIHRvIGNvbXBpbGUgYXMgbm8KKyAgLy8gaW1wbGljaXQgY29udmVyc2lvbiBpcyBmb3Vu
ZC4gIFRodXMgZXhwbGljaXQgdHlwZW5hbWUgaXMgdXNlZAorICAvLyBoZXJlIGluc3RlYWQuCisg
IG1hcDEuaW5zZXJ0KHBhaXI8Y29uc3QgYm9vbCwgaW50Pih0cnVlLCAwKSk7CisgIG1hcDEuaW5z
ZXJ0KHBhaXI8Y29uc3QgYm9vbCwgaW50Pih0cnVlLCAxKSk7CisgIG1hcDEuaW5zZXJ0KHBhaXI8
Y29uc3QgYm9vbCwgaW50PihmYWxzZSwgMikpOworICBFWFBFQ1RfRVEoInsgKGZhbHNlLCAyKSwg
KHRydWUsIDApLCAodHJ1ZSwgMSkgfSIsIFByaW50KG1hcDEpKTsKK30KKworVEVTVChQcmludFN0
bENvbnRhaW5lclRlc3QsIFNldCkgeworICBjb25zdCB1bnNpZ25lZCBpbnQgYVtdID0geyAzLCAw
LCA1IH07CisgIHNldDx1bnNpZ25lZCBpbnQ+IHNldDEoYSwgYSArIDMpOworICBFWFBFQ1RfRVEo
InsgMCwgMywgNSB9IiwgUHJpbnQoc2V0MSkpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVy
VGVzdCwgTXVsdGlTZXQpIHsKKyAgY29uc3QgaW50IGFbXSA9IHsgMSwgMSwgMiwgNSwgMSB9Owor
ICBtdWx0aXNldDxpbnQ+IHNldDEoYSwgYSArIDUpOworICBFWFBFQ1RfRVEoInsgMSwgMSwgMSwg
MiwgNSB9IiwgUHJpbnQoc2V0MSkpOworfQorCisjaWYgR1RFU1RfSEFTX1NURF9GT1JXQVJEX0xJ
U1RfCisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBTaW5nbHlMaW5rZWRMaXN0KSB7Cisg
IGludCBhW10gPSB7IDksIDIsIDggfTsKKyAgY29uc3Qgc3RkOjpmb3J3YXJkX2xpc3Q8aW50PiBp
bnRzKGEsIGEgKyAzKTsKKyAgRVhQRUNUX0VRKCJ7IDksIDIsIDggfSIsIFByaW50KGludHMpKTsK
K30KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9GT1JXQVJEX0xJU1RfCisKK1RFU1QoUHJpbnRT
dGxDb250YWluZXJUZXN0LCBQYWlyKSB7CisgIHBhaXI8Y29uc3QgYm9vbCwgaW50PiBwKHRydWUs
IDUpOworICBFWFBFQ1RfRVEoIih0cnVlLCA1KSIsIFByaW50KHApKTsKK30KKworVEVTVChQcmlu
dFN0bENvbnRhaW5lclRlc3QsIFZlY3RvcikgeworICB2ZWN0b3I8aW50PiB2OworICB2LnB1c2hf
YmFjaygxKTsKKyAgdi5wdXNoX2JhY2soMik7CisgIEVYUEVDVF9FUSgieyAxLCAyIH0iLCBQcmlu
dCh2KSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBMb25nU2VxdWVuY2UpIHsK
KyAgY29uc3QgaW50IGFbMTAwXSA9IHsgMSwgMiwgMyB9OworICBjb25zdCB2ZWN0b3I8aW50PiB2
KGEsIGEgKyAxMDApOworICBFWFBFQ1RfRVEoInsgMSwgMiwgMywgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgIgorICAgICAgICAgICAgIjAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIC4uLiB9IiwgUHJpbnQodikpOworfQorCitURVNU
KFByaW50U3RsQ29udGFpbmVyVGVzdCwgTmVzdGVkQ29udGFpbmVyKSB7CisgIGNvbnN0IGludCBh
MVtdID0geyAxLCAyIH07CisgIGNvbnN0IGludCBhMltdID0geyAzLCA0LCA1IH07CisgIGNvbnN0
IGxpc3Q8aW50PiBsMShhMSwgYTEgKyAyKTsKKyAgY29uc3QgbGlzdDxpbnQ+IGwyKGEyLCBhMiAr
IDMpOworCisgIHZlY3RvcjxsaXN0PGludD4gPiB2OworICB2LnB1c2hfYmFjayhsMSk7CisgIHYu
cHVzaF9iYWNrKGwyKTsKKyAgRVhQRUNUX0VRKCJ7IHsgMSwgMiB9LCB7IDMsIDQsIDUgfSB9Iiwg
UHJpbnQodikpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgT25lRGltZW5zaW9u
YWxOYXRpdmVBcnJheSkgeworICBjb25zdCBpbnQgYVszXSA9IHsgMSwgMiwgMyB9OworICBOYXRp
dmVBcnJheTxpbnQ+IGIoYSwgMywgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgpKTsKKyAgRVhQ
RUNUX0VRKCJ7IDEsIDIsIDMgfSIsIFByaW50KGIpKTsKK30KKworVEVTVChQcmludFN0bENvbnRh
aW5lclRlc3QsIFR3b0RpbWVuc2lvbmFsTmF0aXZlQXJyYXkpIHsKKyAgY29uc3QgaW50IGFbMl1b
M10gPSB7IHsgMSwgMiwgMyB9LCB7IDQsIDUsIDYgfSB9OworICBOYXRpdmVBcnJheTxpbnRbM10+
IGIoYSwgMiwgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgpKTsKKyAgRVhQRUNUX0VRKCJ7IHsg
MSwgMiwgMyB9LCB7IDQsIDUsIDYgfSB9IiwgUHJpbnQoYikpOworfQorCisvLyBUZXN0cyB0aGF0
IGEgY2xhc3MgbmFtZWQgaXRlcmF0b3IgaXNuJ3QgdHJlYXRlZCBhcyBhIGNvbnRhaW5lci4KKwor
c3RydWN0IGl0ZXJhdG9yIHsKKyAgY2hhciB4OworfTsKKworVEVTVChQcmludFN0bENvbnRhaW5l
clRlc3QsIEl0ZXJhdG9yKSB7CisgIGl0ZXJhdG9yIGl0ID0ge307CisgIEVYUEVDVF9FUSgiMS1i
eXRlIG9iamVjdCA8MDA+IiwgUHJpbnQoaXQpKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIGNsYXNz
IG5hbWVkIGNvbnN0X2l0ZXJhdG9yIGlzbid0IHRyZWF0ZWQgYXMgYSBjb250YWluZXIuCisKK3N0
cnVjdCBjb25zdF9pdGVyYXRvciB7CisgIGNoYXIgeDsKK307CisKK1RFU1QoUHJpbnRTdGxDb250
YWluZXJUZXN0LCBDb25zdEl0ZXJhdG9yKSB7CisgIGNvbnN0X2l0ZXJhdG9yIGl0ID0ge307Cisg
IEVYUEVDVF9FUSgiMS1ieXRlIG9iamVjdCA8MDA+IiwgUHJpbnQoaXQpKTsKK30KKworI2lmIEdU
RVNUX0hBU19UUjFfVFVQTEUKKy8vIFRlc3RzIHByaW50aW5nIDo6c3RkOjp0cjE6OnR1cGxlcy4K
KworLy8gVHVwbGVzIG9mIHZhcmlvdXMgYXJpdGllcy4KK1RFU1QoUHJpbnRUcjFUdXBsZVRlc3Qs
IFZhcmlvdXNTaXplcykgeworICA6OnN0ZDo6dHIxOjp0dXBsZTw+IHQwOworICBFWFBFQ1RfRVEo
IigpIiwgUHJpbnQodDApKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxpbnQ+IHQxKDUpOworICBF
WFBFQ1RfRVEoIig1KSIsIFByaW50KHQxKSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Y2hhciwg
Ym9vbD4gdDIoJ2EnLCB0cnVlKTsKKyAgRVhQRUNUX0VRKCIoJ2EnICg5NywgMHg2MSksIHRydWUp
IiwgUHJpbnQodDIpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQsIGludD4gdDMo
ZmFsc2UsIDIsIDMpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMykiLCBQcmludCh0MykpOwor
CisgIDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQ+IHQ0KGZhbHNlLCAyLCAz
LCA0KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQpIiwgUHJpbnQodDQpKTsKKworICA6
OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29sPiB0NShmYWxzZSwgMiwg
MywgNCwgdHJ1ZSk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlKSIsIFByaW50
KHQ1KSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwg
aW50PiB0NihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNik7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAy
LCAzLCA0LCB0cnVlLCA2KSIsIFByaW50KHQ2KSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9v
bCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQ+IHQ3KAorICAgICAgZmFsc2UsIDIsIDMs
IDQsIHRydWUsIDYsIDcpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwg
NykiLCBQcmludCh0NykpOworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludCwgaW50LCBp
bnQsIGJvb2wsIGludCwgaW50LCBib29sPiB0OCgKKyAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVl
LCA2LCA3LCB0cnVlKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcs
IHRydWUpIiwgUHJpbnQodDgpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQsIGlu
dCwgaW50LCBib29sLCBpbnQsIGludCwgYm9vbCwgaW50PiB0OSgKKyAgICAgIGZhbHNlLCAyLCAz
LCA0LCB0cnVlLCA2LCA3LCB0cnVlLCA5KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQs
IHRydWUsIDYsIDcsIHRydWUsIDkpIiwgUHJpbnQodDkpKTsKKworICBjb25zdCBjaGFyKiBjb25z
dCBzdHIgPSAiOCI7CisgIC8vIFZDKysgMjAxMCdzIGltcGxlbWVudGF0aW9uIG9mIHR1cGxlIG9m
IEMrKzB4IGlzIGRlZmljaWVudCwgcmVxdWlyaW5nCisgIC8vIGFuIGV4cGxpY2l0IHR5cGUgY2Fz
dCBvZiBOVUxMIHRvIGJlIHVzZWQuCisgIDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGNoYXIsIHNo
b3J0LCB0ZXN0aW5nOjppbnRlcm5hbDo6SW50MzIsICAvLyBOT0xJTlQKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdGluZzo6aW50ZXJuYWw6OkludDY0LCBmbG9hdCwgZG91YmxlLCBjb25zdCBjaGFy
Kiwgdm9pZCosCisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nPgorICAgICAgdDEwKGZh
bHNlLCAnYScsIHN0YXRpY19jYXN0PHNob3J0PigzKSwgNCwgNSwgMS41RiwgLTIuNSwgc3RyLCAg
Ly8gTk9MSU5UCisgICAgICAgICAgSW1wbGljaXRDYXN0Xzx2b2lkKj4oTlVMTCksICIxMCIpOwor
ICBFWFBFQ1RfRVEoIihmYWxzZSwgJ2EnICg5NywgMHg2MSksIDMsIDQsIDUsIDEuNSwgLTIuNSwg
IiArIFByaW50UG9pbnRlcihzdHIpICsKKyAgICAgICAgICAgICIgcG9pbnRpbmcgdG8gXCI4XCIs
IE5VTEwsIFwiMTBcIikiLAorICAgICAgICAgICAgUHJpbnQodDEwKSk7Cit9CisKKy8vIE5lc3Rl
ZCB0dXBsZXMuCitURVNUKFByaW50VHIxVHVwbGVUZXN0LCBOZXN0ZWRUdXBsZSkgeworICA6OnN0
ZDo6dHIxOjp0dXBsZTwgOjpzdGQ6OnRyMTo6dHVwbGU8aW50LCBib29sPiwgY2hhcj4gbmVzdGVk
KAorICAgICAgOjpzdGQ6OnRyMTo6bWFrZV90dXBsZSg1LCB0cnVlKSwgJ2EnKTsKKyAgRVhQRUNU
X0VRKCIoKDUsIHRydWUpLCAnYScgKDk3LCAweDYxKSkiLCBQcmludChuZXN0ZWQpKTsKK30KKwor
I2VuZGlmICAvLyBHVEVTVF9IQVNfVFIxX1RVUExFCisKKyNpZiBHVEVTVF9IQVNfU1REX1RVUExF
XworLy8gVGVzdHMgcHJpbnRpbmcgOjpzdGQ6OnR1cGxlcy4KKworLy8gVHVwbGVzIG9mIHZhcmlv
dXMgYXJpdGllcy4KK1RFU1QoUHJpbnRTdGRUdXBsZVRlc3QsIFZhcmlvdXNTaXplcykgeworICA6
OnN0ZDo6dHVwbGU8PiB0MDsKKyAgRVhQRUNUX0VRKCIoKSIsIFByaW50KHQwKSk7CisKKyAgOjpz
dGQ6OnR1cGxlPGludD4gdDEoNSk7CisgIEVYUEVDVF9FUSgiKDUpIiwgUHJpbnQodDEpKTsKKwor
ICA6OnN0ZDo6dHVwbGU8Y2hhciwgYm9vbD4gdDIoJ2EnLCB0cnVlKTsKKyAgRVhQRUNUX0VRKCIo
J2EnICg5NywgMHg2MSksIHRydWUpIiwgUHJpbnQodDIpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9v
bCwgaW50LCBpbnQ+IHQzKGZhbHNlLCAyLCAzKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMp
IiwgUHJpbnQodDMpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludD4gdDQo
ZmFsc2UsIDIsIDMsIDQpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCkiLCBQcmludCh0
NCkpOworCisgIDo6c3RkOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29sPiB0NShmYWxz
ZSwgMiwgMywgNCwgdHJ1ZSk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlKSIs
IFByaW50KHQ1KSk7CisKKyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2ws
IGludD4gdDYoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYpOworICBFWFBFQ1RfRVEoIihmYWxzZSwg
MiwgMywgNCwgdHJ1ZSwgNikiLCBQcmludCh0NikpOworCisgIDo6c3RkOjp0dXBsZTxib29sLCBp
bnQsIGludCwgaW50LCBib29sLCBpbnQsIGludD4gdDcoCisgICAgICBmYWxzZSwgMiwgMywgNCwg
dHJ1ZSwgNiwgNyk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3KSIs
IFByaW50KHQ3KSk7CisKKyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2ws
IGludCwgaW50LCBib29sPiB0OCgKKyAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0
cnVlKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUpIiwg
UHJpbnQodDgpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwg
aW50LCBpbnQsIGJvb2wsIGludD4gdDkoCisgICAgICBmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwg
NywgdHJ1ZSwgOSk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0
cnVlLCA5KSIsIFByaW50KHQ5KSk7CisKKyAgY29uc3QgY2hhciogY29uc3Qgc3RyID0gIjgiOwor
ICAvLyBWQysrIDIwMTAncyBpbXBsZW1lbnRhdGlvbiBvZiB0dXBsZSBvZiBDKysweCBpcyBkZWZp
Y2llbnQsIHJlcXVpcmluZworICAvLyBhbiBleHBsaWNpdCB0eXBlIGNhc3Qgb2YgTlVMTCB0byBi
ZSB1c2VkLgorICA6OnN0ZDo6dHVwbGU8Ym9vbCwgY2hhciwgc2hvcnQsIHRlc3Rpbmc6OmludGVy
bmFsOjpJbnQzMiwgIC8vIE5PTElOVAorICAgICAgICAgICAgICAgdGVzdGluZzo6aW50ZXJuYWw6
OkludDY0LCBmbG9hdCwgZG91YmxlLCBjb25zdCBjaGFyKiwgdm9pZCosCisgICAgICAgICAgICAg
ICBzdGQ6OnN0cmluZz4KKyAgICAgIHQxMChmYWxzZSwgJ2EnLCBzdGF0aWNfY2FzdDxzaG9ydD4o
MyksIDQsIDUsIDEuNUYsIC0yLjUsIHN0ciwgIC8vIE5PTElOVAorICAgICAgICAgIEltcGxpY2l0
Q2FzdF88dm9pZCo+KE5VTEwpLCAiMTAiKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsICdhJyAoOTcs
IDB4NjEpLCAzLCA0LCA1LCAxLjUsIC0yLjUsICIgKyBQcmludFBvaW50ZXIoc3RyKSArCisgICAg
ICAgICAgICAiIHBvaW50aW5nIHRvIFwiOFwiLCBOVUxMLCBcIjEwXCIpIiwKKyAgICAgICAgICAg
IFByaW50KHQxMCkpOworfQorCisvLyBOZXN0ZWQgdHVwbGVzLgorVEVTVChQcmludFN0ZFR1cGxl
VGVzdCwgTmVzdGVkVHVwbGUpIHsKKyAgOjpzdGQ6OnR1cGxlPCA6OnN0ZDo6dHVwbGU8aW50LCBi
b29sPiwgY2hhcj4gbmVzdGVkKAorICAgICAgOjpzdGQ6Om1ha2VfdHVwbGUoNSwgdHJ1ZSksICdh
Jyk7CisgIEVYUEVDVF9FUSgiKCg1LCB0cnVlKSwgJ2EnICg5NywgMHg2MSkpIiwgUHJpbnQobmVz
dGVkKSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfTEFOR19DWFgxMQorCisjaWYgR1RFU1RfTEFO
R19DWFgxMQorVEVTVChQcmludE51bGxwdHJULCBCYXNpYykgeworICBFWFBFQ1RfRVEoIihudWxs
cHRyKSIsIFByaW50KG51bGxwdHIpKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfTEFOR19DWFgxMQor
CisvLyBUZXN0cyBwcmludGluZyB1c2VyLWRlZmluZWQgdW5wcmludGFibGUgdHlwZXMuCisKKy8v
IFVucHJpbnRhYmxlIHR5cGVzIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgorVEVTVChQcmludFVu
cHJpbnRhYmxlVHlwZVRlc3QsIEluR2xvYmFsTmFtZXNwYWNlKSB7CisgIEVYUEVDVF9FUSgiMS1i
eXRlIG9iamVjdCA8MDA+IiwKKyAgICAgICAgICAgIFByaW50KFVucHJpbnRhYmxlVGVtcGxhdGVJ
bkdsb2JhbDxjaGFyPigpKSk7Cit9CisKKy8vIFVucHJpbnRhYmxlIHR5cGVzIGluIGEgdXNlciBu
YW1lc3BhY2UuCitURVNUKFByaW50VW5wcmludGFibGVUeXBlVGVzdCwgSW5Vc2VyTmFtZXNwYWNl
KSB7CisgIEVYUEVDVF9FUSgiMTYtYnl0ZSBvYmplY3QgPEVGLTEyIDAwLTAwIDM0LUFCIDAwLTAw
IDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwPiIsCisgICAgICAgICAgICBQcmludCg6OmZvbzo6VW5w
cmludGFibGVJbkZvbygpKSk7Cit9CisKKy8vIFVucHJpbnRhYmxlIHR5cGVzIGFyZSB0aGF0IHRv
byBiaWcgdG8gYmUgcHJpbnRlZCBjb21wbGV0ZWx5LgorCitzdHJ1Y3QgQmlnIHsKKyAgQmlnKCkg
eyBtZW1zZXQoYXJyYXksIDAsIHNpemVvZihhcnJheSkpOyB9CisgIGNoYXIgYXJyYXlbMjU3XTsK
K307CisKK1RFU1QoUHJpbnRVbnByaXRhYmxlVHlwZVRlc3QsIEJpZ09iamVjdCkgeworICBFWFBF
Q1RfRVEoIjI1Ny1ieXRlIG9iamVjdCA8MDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAt
MDAgIgorICAgICAgICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAw
LTAwIDAwLTAwIDAwLTAwIDAwLTAwICIKKyAgICAgICAgICAgICIwMC0wMCAwMC0wMCAwMC0wMCAw
MC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAiCisgICAgICAgICAgICAi
MDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgLi4uIDAwLTAwIDAwLTAwIDAwLTAw
ICIKKyAgICAgICAgICAgICIwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0w
MCAwMC0wMCAwMC0wMCAwMC0wMCAiCisgICAgICAgICAgICAiMDAtMDAgMDAtMDAgMDAtMDAgMDAt
MDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgIgorICAgICAgICAgICAgIjAw
LTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwPiIsCisgICAg
ICAgICAgICBQcmludChCaWcoKSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyB1c2VyLWRlZmlu
ZWQgc3RyZWFtYWJsZSB0eXBlcy4KKworLy8gU3RyZWFtYWJsZSB0eXBlcyBpbiB0aGUgZ2xvYmFs
IG5hbWVzcGFjZS4KK1RFU1QoUHJpbnRTdHJlYW1hYmxlVHlwZVRlc3QsIEluR2xvYmFsTmFtZXNw
YWNlKSB7CisgIFN0cmVhbWFibGVJbkdsb2JhbCB4OworICBFWFBFQ1RfRVEoIlN0cmVhbWFibGVJ
bkdsb2JhbCIsIFByaW50KHgpKTsKKyAgRVhQRUNUX0VRKCJTdHJlYW1hYmxlSW5HbG9iYWwqIiwg
UHJpbnQoJngpKTsKK30KKworLy8gUHJpbnRhYmxlIHRlbXBsYXRlIHR5cGVzIGluIGEgdXNlciBu
YW1lc3BhY2UuCitURVNUKFByaW50U3RyZWFtYWJsZVR5cGVUZXN0LCBUZW1wbGF0ZVR5cGVJblVz
ZXJOYW1lc3BhY2UpIHsKKyAgRVhQRUNUX0VRKCJTdHJlYW1hYmxlVGVtcGxhdGVJbkZvbzogMCIs
CisgICAgICAgICAgICBQcmludCg6OmZvbzo6U3RyZWFtYWJsZVRlbXBsYXRlSW5Gb288aW50Pigp
KSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIGEgdXNlci1kZWZpbmVkIHJlY3Vyc2l2ZSBjb250
YWluZXIgdHlwZSB0aGF0IGhhcyBhIDw8CisvLyBvcGVyYXRvci4KK1RFU1QoUHJpbnRTdHJlYW1h
YmxlVHlwZVRlc3QsIFBhdGhMaWtlSW5Vc2VyTmFtZXNwYWNlKSB7CisgIDo6Zm9vOjpQYXRoTGlr
ZSB4OworICBFWFBFQ1RfRVEoIlN0cmVhbWFibGUtUGF0aExpa2UiLCBQcmludCh4KSk7CisgIGNv
bnN0IDo6Zm9vOjpQYXRoTGlrZSBjeDsKKyAgRVhQRUNUX0VRKCJTdHJlYW1hYmxlLVBhdGhMaWtl
IiwgUHJpbnQoY3gpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgdXNlci1kZWZpbmVkIHR5cGVz
IHRoYXQgaGF2ZSBhIFByaW50VG8oKSBmdW5jdGlvbi4KK1RFU1QoUHJpbnRQcmludGFibGVUeXBl
VGVzdCwgSW5Vc2VyTmFtZXNwYWNlKSB7CisgIEVYUEVDVF9FUSgiUHJpbnRhYmxlVmlhUHJpbnRU
bzogMCIsCisgICAgICAgICAgICBQcmludCg6OmZvbzo6UHJpbnRhYmxlVmlhUHJpbnRUbygpKSk7
Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIGEgcG9pbnRlciB0byBhIHVzZXItZGVmaW5lZCB0eXBl
IHRoYXQgaGFzIGEgPDwKKy8vIG9wZXJhdG9yIGZvciBpdHMgcG9pbnRlci4KK1RFU1QoUHJpbnRQ
cmludGFibGVUeXBlVGVzdCwgUG9pbnRlckluVXNlck5hbWVzcGFjZSkgeworICA6OmZvbzo6UG9p
bnRlclByaW50YWJsZSB4OworICBFWFBFQ1RfRVEoIlBvaW50ZXJQcmludGFibGUqIiwgUHJpbnQo
JngpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgdXNlci1kZWZpbmVkIGNsYXNzIHRlbXBsYXRl
IHRoYXQgaGF2ZSBhIFByaW50VG8oKSBmdW5jdGlvbi4KK1RFU1QoUHJpbnRQcmludGFibGVUeXBl
VGVzdCwgVGVtcGxhdGVJblVzZXJOYW1lc3BhY2UpIHsKKyAgRVhQRUNUX0VRKCJQcmludGFibGVW
aWFQcmludFRvVGVtcGxhdGU6IDUiLAorICAgICAgICAgICAgUHJpbnQoOjpmb286OlByaW50YWJs
ZVZpYVByaW50VG9UZW1wbGF0ZTxpbnQ+KDUpKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIHVu
aXZlcnNhbCBwcmludGVyIHByaW50cyBib3RoIHRoZSBhZGRyZXNzIGFuZCB0aGUKKy8vIHZhbHVl
IG9mIGEgcmVmZXJlbmNlLgorVEVTVChQcmludFJlZmVyZW5jZVRlc3QsIFByaW50c0FkZHJlc3NB
bmRWYWx1ZSkgeworICBpbnQgbiA9IDU7CisgIEVYUEVDVF9FUSgiQCIgKyBQcmludFBvaW50ZXIo
Jm4pICsgIiA1IiwgUHJpbnRCeVJlZihuKSk7CisKKyAgaW50IGFbMl1bM10gPSB7CisgICAgeyAw
LCAxLCAyIH0sCisgICAgeyAzLCA0LCA1IH0KKyAgfTsKKyAgRVhQRUNUX0VRKCJAIiArIFByaW50
UG9pbnRlcihhKSArICIgeyB7IDAsIDEsIDIgfSwgeyAzLCA0LCA1IH0gfSIsCisgICAgICAgICAg
ICBQcmludEJ5UmVmKGEpKTsKKworICBjb25zdCA6OmZvbzo6VW5wcmludGFibGVJbkZvbyB4Owor
ICBFWFBFQ1RfRVEoIkAiICsgUHJpbnRQb2ludGVyKCZ4KSArICIgMTYtYnl0ZSBvYmplY3QgIgor
ICAgICAgICAgICAgIjxFRi0xMiAwMC0wMCAzNC1BQiAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAw
MC0wMD4iLAorICAgICAgICAgICAgUHJpbnRCeVJlZih4KSk7Cit9CisKKy8vIFRlc3RzIHRoYXQg
dGhlIHVuaXZlcnNhbCBwcmludGVyIHByaW50cyBhIGZ1bmN0aW9uIHBvaW50ZXIgcGFzc2VkIGJ5
CisvLyByZWZlcmVuY2UuCitURVNUKFByaW50UmVmZXJlbmNlVGVzdCwgSGFuZGxlc0Z1bmN0aW9u
UG9pbnRlcikgeworICB2b2lkICgqZnApKGludCBuKSA9ICZNeUZ1bmN0aW9uOworICBjb25zdCBz
dGQ6OnN0cmluZyBmcF9wb2ludGVyX3N0cmluZyA9CisgICAgICBQcmludFBvaW50ZXIocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB2b2lkKj4oJmZwKSk7CisgIC8vIFdlIGNhbm5vdCBkaXJlY3RseSBj
YXN0ICZNeUZ1bmN0aW9uIHRvIGNvbnN0IHZvaWQqIGJlY2F1c2UgdGhlCisgIC8vIHN0YW5kYXJk
IGRpc2FsbG93cyBjYXN0aW5nIGJldHdlZW4gcG9pbnRlcnMgdG8gZnVuY3Rpb25zIGFuZAorICAv
LyBwb2ludGVycyB0byBvYmplY3RzLCBhbmQgc29tZSBjb21waWxlcnMgKGUuZy4gR0NDIDMuNCkg
ZW5mb3JjZQorICAvLyB0aGlzIGxpbWl0YXRpb24uCisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZwX3N0
cmluZyA9IFByaW50UG9pbnRlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigKKyAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50ZXJuYWw6OkJpZ2dlc3RJbnQ+KGZwKSkpOworICBFWFBFQ1Rf
RVEoIkAiICsgZnBfcG9pbnRlcl9zdHJpbmcgKyAiICIgKyBmcF9zdHJpbmcsCisgICAgICAgICAg
ICBQcmludEJ5UmVmKGZwKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIHVuaXZlcnNhbCBwcmlu
dGVyIHByaW50cyBhIG1lbWJlciBmdW5jdGlvbiBwb2ludGVyCisvLyBwYXNzZWQgYnkgcmVmZXJl
bmNlLgorVEVTVChQcmludFJlZmVyZW5jZVRlc3QsIEhhbmRsZXNNZW1iZXJGdW5jdGlvblBvaW50
ZXIpIHsKKyAgaW50IChGb286OipwKShjaGFyIGNoKSA9ICZGb286Ok15TWV0aG9kOworICBFWFBF
Q1RfVFJVRShIYXNQcmVmaXgoCisgICAgICBQcmludEJ5UmVmKHApLAorICAgICAgIkAiICsgUHJp
bnRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KCZwKSkgKyAiICIgKworICAg
ICAgICAgIFByaW50KHNpemVvZihwKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKKworICBjaGFyIChG
b286OipwMikoaW50IG4pID0gJkZvbzo6TXlWaXJ0dWFsTWV0aG9kOworICBFWFBFQ1RfVFJVRShI
YXNQcmVmaXgoCisgICAgICBQcmludEJ5UmVmKHAyKSwKKyAgICAgICJAIiArIFByaW50UG9pbnRl
cihyZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigmcDIpKSArICIgIiArCisgICAgICAgICAg
UHJpbnQoc2l6ZW9mKHAyKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKK30KKworLy8gVGVzdHMgdGhh
dCB0aGUgdW5pdmVyc2FsIHByaW50ZXIgcHJpbnRzIGEgbWVtYmVyIHZhcmlhYmxlIHBvaW50ZXIK
Ky8vIHBhc3NlZCBieSByZWZlcmVuY2UuCitURVNUKFByaW50UmVmZXJlbmNlVGVzdCwgSGFuZGxl
c01lbWJlclZhcmlhYmxlUG9pbnRlcikgeworICBpbnQgRm9vOjoqcCA9ICZGb286OnZhbHVlOyAg
Ly8gTk9MSU5UCisgIEVYUEVDVF9UUlVFKEhhc1ByZWZpeCgKKyAgICAgIFByaW50QnlSZWYocCks
CisgICAgICAiQCIgKyBQcmludFBvaW50ZXIoJnApICsgIiAiICsgUHJpbnQoc2l6ZW9mKHApKSAr
ICItYnl0ZSBvYmplY3QgIikpOworfQorCisvLyBUZXN0cyB0aGF0IEZvcm1hdEZvckNvbXBhcmlz
b25GYWlsdXJlTWVzc2FnZSgpLCB3aGljaCBpcyB1c2VkIHRvIHByaW50CisvLyBhbiBvcGVyYW5k
IGluIGEgY29tcGFyaXNvbiBhc3NlcnRpb24gKGUuZy4gQVNTRVJUX0VRKSB3aGVuIHRoZSBhc3Nl
cnRpb24KKy8vIGZhaWxzLCBmb3JtYXRzIHRoZSBvcGVyYW5kIGluIHRoZSBkZXNpcmVkIHdheS4K
KworLy8gc2NhbGFyCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3Qs
IFdvcmtzRm9yU2NhbGFyKSB7CisgIEVYUEVDVF9TVFJFUSgiMTIzIiwKKyAgICAgICAgICAgICAg
IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSgxMjMsIDEyNCkuY19zdHIoKSk7Cit9
CisKKy8vIG5vbi1jaGFyIHBvaW50ZXIKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVN
ZXNzYWdlVGVzdCwgV29ya3NGb3JOb25DaGFyUG9pbnRlcikgeworICBpbnQgbiA9IDA7CisgIEVY
UEVDVF9FUShQcmludFBvaW50ZXIoJm4pLAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNv
bkZhaWx1cmVNZXNzYWdlKCZuLCAmbikuY19zdHIoKSk7Cit9CisKKy8vIG5vbi1jaGFyIGFycmF5
CitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIEZvcm1hdHNOb25D
aGFyQXJyYXlBc1BvaW50ZXIpIHsKKyAgLy8gSW4gZXhwcmVzc2lvbiAnYXJyYXkgPT0geCcsICdh
cnJheScgaXMgY29tcGFyZWQgYnkgcG9pbnRlci4KKyAgLy8gVGhlcmVmb3JlIHdlIHdhbnQgdG8g
cHJpbnQgYW4gYXJyYXkgb3BlcmFuZCBhcyBhIHBvaW50ZXIuCisgIGludCBuW10gPSB7IDEsIDIs
IDMgfTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihuKSwKKyAgICAgICAgICAgIEZvcm1hdEZv
ckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShuLCBuKS5jX3N0cigpKTsKK30KKworLy8gVGVzdHMg
Zm9ybWF0dGluZyBhIGNoYXIgcG9pbnRlciB3aGVuIGl0J3MgY29tcGFyZWQgd2l0aCBhbm90aGVy
IHBvaW50ZXIuCisvLyBJbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBwcmludCBpdCBhcyBhIHJhdyBw
b2ludGVyLCBhcyB0aGUgY29tcGFyaXNvbiBpcyBieQorLy8gcG9pbnRlci4KKworLy8gY2hhciBw
b2ludGVyIHZzIHBvaW50ZXIKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdl
VGVzdCwgV29ya3NGb3JDaGFyUG9pbnRlclZzUG9pbnRlcikgeworICAvLyBJbiBleHByZXNzaW9u
ICdwID09IHgnLCB3aGVyZSAncCcgYW5kICd4JyBhcmUgKGNvbnN0IG9yIG5vdCkgY2hhcgorICAv
LyBwb2ludGVycywgdGhlIG9wZXJhbmRzIGFyZSBjb21wYXJlZCBieSBwb2ludGVyLiAgVGhlcmVm
b3JlIHdlCisgIC8vIHdhbnQgdG8gcHJpbnQgJ3AnIGFzIGEgcG9pbnRlciBpbnN0ZWFkIG9mIGEg
QyBzdHJpbmcgKHdlIGRvbid0CisgIC8vIGV2ZW4ga25vdyBpZiBpdCdzIHN1cHBvc2VkIHRvIHBv
aW50IHRvIGEgdmFsaWQgQyBzdHJpbmcpLgorCisgIC8vIGNvbnN0IGNoYXIqCisgIGNvbnN0IGNo
YXIqIHMgPSAiaGVsbG8iOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHMpLAorICAgICAgICAg
ICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHMsIHMpLmNfc3RyKCkpOworCisg
IC8vIGNoYXIqCisgIGNoYXIgY2ggPSAnYSc7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIoJmNo
KSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSgmY2gsICZj
aCkuY19zdHIoKSk7Cit9CisKKy8vIHdjaGFyX3QgcG9pbnRlciB2cyBwb2ludGVyCitURVNUKEZv
cm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJQb2ludGVy
VnNQb2ludGVyKSB7CisgIC8vIEluIGV4cHJlc3Npb24gJ3AgPT0geCcsIHdoZXJlICdwJyBhbmQg
J3gnIGFyZSAoY29uc3Qgb3Igbm90KSBjaGFyCisgIC8vIHBvaW50ZXJzLCB0aGUgb3BlcmFuZHMg
YXJlIGNvbXBhcmVkIGJ5IHBvaW50ZXIuICBUaGVyZWZvcmUgd2UKKyAgLy8gd2FudCB0byBwcmlu
dCAncCcgYXMgYSBwb2ludGVyIGluc3RlYWQgb2YgYSB3aWRlIEMgc3RyaW5nICh3ZSBkb24ndAor
ICAvLyBldmVuIGtub3cgaWYgaXQncyBzdXBwb3NlZCB0byBwb2ludCB0byBhIHZhbGlkIHdpZGUg
QyBzdHJpbmcpLgorCisgIC8vIGNvbnN0IHdjaGFyX3QqCisgIGNvbnN0IHdjaGFyX3QqIHMgPSBM
ImhlbGxvIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihzKSwKKyAgICAgICAgICAgIEZvcm1h
dEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzLCBzKS5jX3N0cigpKTsKKworICAvLyB3Y2hh
cl90KgorICB3Y2hhcl90IGNoID0gTCdhJzsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcigmY2gp
LAorICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKCZjaCwgJmNo
KS5jX3N0cigpKTsKK30KKworLy8gVGVzdHMgZm9ybWF0dGluZyBhIGNoYXIgcG9pbnRlciB3aGVu
IGl0J3MgY29tcGFyZWQgdG8gYSBzdHJpbmcgb2JqZWN0LgorLy8gSW4gdGhpcyBjYXNlIHdlIHdh
bnQgdG8gcHJpbnQgdGhlIGNoYXIgcG9pbnRlciBhcyBhIEMgc3RyaW5nLgorCisjaWYgR1RFU1Rf
SEFTX0dMT0JBTF9TVFJJTkcKKy8vIGNoYXIgcG9pbnRlciB2cyA6OnN0cmluZworVEVTVChGb3Jt
YXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJQb2ludGVyVnNT
dHJpbmcpIHsKKyAgY29uc3QgY2hhciogcyA9ICJoZWxsbyBcIndvcmxkIjsKKyAgRVhQRUNUX1NU
UkVRKCJcImhlbGxvIFxcXCJ3b3JsZFwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQg
YmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVz
c2FnZShzLCA6OnN0cmluZygpKS5jX3N0cigpKTsKKworICAvLyBjaGFyKgorICBjaGFyIHN0cltd
ID0gImhpXDEiOworICBjaGFyKiBwID0gc3RyOworICBFWFBFQ1RfU1RSRVEoIlwiaGlcXHgxXCIi
LCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAg
ICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHAsIDo6c3RyaW5nKCkpLmNfc3Ry
KCkpOworfQorI2VuZGlmCisKKy8vIGNoYXIgcG9pbnRlciB2cyBzdGQ6OnN0cmluZworVEVTVChG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJQb2ludGVy
VnNTdGRTdHJpbmcpIHsKKyAgY29uc3QgY2hhciogcyA9ICJoZWxsbyBcIndvcmxkIjsKKyAgRVhQ
RUNUX1NUUkVRKCJcImhlbGxvIFxcXCJ3b3JsZFwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBz
aG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWls
dXJlTWVzc2FnZShzLCA6OnN0ZDo6c3RyaW5nKCkpLmNfc3RyKCkpOworCisgIC8vIGNoYXIqCisg
IGNoYXIgc3RyW10gPSAiaGlcMSI7CisgIGNoYXIqIHAgPSBzdHI7CisgIEVYUEVDVF9TVFJFUSgi
XCJoaVxceDFcIiIsICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisg
ICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocCwgOjpzdGQ6
OnN0cmluZygpKS5jX3N0cigpKTsKK30KKworI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwor
Ly8gd2NoYXJfdCBwb2ludGVyIHZzIDo6d3N0cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJpc29u
RmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvcldDaGFyUG9pbnRlclZzV1N0cmluZykgeworICBj
b25zdCB3Y2hhcl90KiBzID0gTCJoaSBcIndvcmxkIjsKKyAgRVhQRUNUX1NUUkVRKCJMXCJoaSBc
XFwid29ybGRcIiIsICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisg
ICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgOjp3c3Ry
aW5nKCkpLmNfc3RyKCkpOworCisgIC8vIHdjaGFyX3QqCisgIHdjaGFyX3Qgc3RyW10gPSBMImhp
XDEiOworICB3Y2hhcl90KiBwID0gc3RyOworICBFWFBFQ1RfU1RSRVEoIkxcImhpXFx4MVwiIiwg
IC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAg
IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShwLCA6OndzdHJpbmcoKSkuY19zdHIo
KSk7Cit9CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORworLy8gd2NoYXJfdCBw
b2ludGVyIHZzIHN0ZDo6d3N0cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2VUZXN0LCBXb3Jrc0ZvcldDaGFyUG9pbnRlclZzU3RkV1N0cmluZykgeworICBjb25zdCB3
Y2hhcl90KiBzID0gTCJoaSBcIndvcmxkIjsKKyAgRVhQRUNUX1NUUkVRKCJMXCJoaSBcXFwid29y
bGRcIiIsICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAg
ICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgOjpzdGQ6OndzdHJp
bmcoKSkuY19zdHIoKSk7CisKKyAgLy8gd2NoYXJfdCoKKyAgd2NoYXJfdCBzdHJbXSA9IEwiaGlc
MSI7CisgIHdjaGFyX3QqIHAgPSBzdHI7CisgIEVYUEVDVF9TVFJFUSgiTFwiaGlcXHgxXCIiLCAg
Ly8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAg
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHAsIDo6c3RkOjp3c3RyaW5nKCkpLmNf
c3RyKCkpOworfQorI2VuZGlmCisKKy8vIFRlc3RzIGZvcm1hdHRpbmcgYSBjaGFyIGFycmF5IHdo
ZW4gaXQncyBjb21wYXJlZCB3aXRoIGEgcG9pbnRlciBvciBhcnJheS4KKy8vIEluIHRoaXMgY2Fz
ZSB3ZSB3YW50IHRvIHByaW50IHRoZSBhcnJheSBhcyBhIHJvdyBwb2ludGVyLCBhcyB0aGUgY29t
cGFyaXNvbgorLy8gaXMgYnkgcG9pbnRlci4KKworLy8gY2hhciBhcnJheSB2cyBwb2ludGVyCitU
RVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhckFy
cmF5VnNQb2ludGVyKSB7CisgIGNoYXIgc3RyW10gPSAiaGkgXCJ3b3JsZFwiIjsKKyAgY2hhciog
cCA9IE5VTEw7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIoc3RyKSwKKyAgICAgICAgICAgIEZv
cm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzdHIsIHApLmNfc3RyKCkpOworfQorCisv
LyBjaGFyIGFycmF5IHZzIGNoYXIgYXJyYXkKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1
cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JDaGFyQXJyYXlWc0NoYXJBcnJheSkgeworICBjb25zdCBj
aGFyIHN0cltdID0gImhpIFwid29ybGRcIiI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIoc3Ry
KSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzdHIsIHN0
cikuY19zdHIoKSk7Cit9CisKKy8vIHdjaGFyX3QgYXJyYXkgdnMgcG9pbnRlcgorVEVTVChGb3Jt
YXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvcldDaGFyQXJyYXlWc1Bv
aW50ZXIpIHsKKyAgd2NoYXJfdCBzdHJbXSA9IEwiaGkgXCJ3b3JsZFwiIjsKKyAgd2NoYXJfdCog
cCA9IE5VTEw7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIoc3RyKSwKKyAgICAgICAgICAgIEZv
cm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzdHIsIHApLmNfc3RyKCkpOworfQorCisv
LyB3Y2hhcl90IGFycmF5IHZzIHdjaGFyX3QgYXJyYXkKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNv
bkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhckFycmF5VnNXQ2hhckFycmF5KSB7Cisg
IGNvbnN0IHdjaGFyX3Qgc3RyW10gPSBMImhpIFwid29ybGRcIiI7CisgIEVYUEVDVF9FUShQcmlu
dFBvaW50ZXIoc3RyKSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVz
c2FnZShzdHIsIHN0cikuY19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIGZvcm1hdHRpbmcgYSBjaGFy
IGFycmF5IHdoZW4gaXQncyBjb21wYXJlZCB3aXRoIGEgc3RyaW5nIG9iamVjdC4KKy8vIEluIHRo
aXMgY2FzZSB3ZSB3YW50IHRvIHByaW50IHRoZSBhcnJheSBhcyBhIEMgc3RyaW5nLgorCisjaWYg
R1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKy8vIGNoYXIgYXJyYXkgdnMgc3RyaW5nCitURVNUKEZv
cm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhckFycmF5VnNT
dHJpbmcpIHsKKyAgY29uc3QgY2hhciBzdHJbXSA9ICJoaSBcIndcMHJsZFwiIjsKKyAgRVhQRUNU
X1NUUkVRKCJcImhpIFxcXCJ3XCIiLCAgLy8gVGhlIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQu
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVtYmVkZGVkIE5VTCB0ZXJtaW5h
dGVzIHRoZSBzdHJpbmcuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVy
ZU1lc3NhZ2Uoc3RyLCA6OnN0cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisvLyBjaGFy
IGFycmF5IHZzIHN0ZDo6c3RyaW5nCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVz
c2FnZVRlc3QsIFdvcmtzRm9yQ2hhckFycmF5VnNTdGRTdHJpbmcpIHsKKyAgY29uc3QgY2hhciBz
dHJbXSA9ICJoaSBcIndvcmxkXCIiOworICBFWFBFQ1RfU1RSRVEoIlwiaGkgXFxcIndvcmxkXFxc
IlwiIiwgIC8vIFRoZSBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAg
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgOjpzdGQ6OnN0cmluZygpKS5j
X3N0cigpKTsKK30KKworI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORworLy8gd2NoYXJfdCBh
cnJheSB2cyB3c3RyaW5nCitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRl
c3QsIFdvcmtzRm9yV0NoYXJBcnJheVZzV1N0cmluZykgeworICBjb25zdCB3Y2hhcl90IHN0cltd
ID0gTCJoaSBcIndvcmxkXCIiOworICBFWFBFQ1RfU1RSRVEoIkxcImhpIFxcXCJ3b3JsZFxcXCJc
IiIsICAvLyBUaGUgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgIEZv
cm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzdHIsIDo6d3N0cmluZygpKS5jX3N0cigp
KTsKK30KKyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCisvLyB3Y2hhcl90IGFy
cmF5IHZzIHN0ZDo6d3N0cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2VUZXN0LCBXb3Jrc0ZvcldDaGFyQXJyYXlWc1N0ZFdTdHJpbmcpIHsKKyAgY29uc3Qgd2NoYXJf
dCBzdHJbXSA9IEwiaGkgXCJ3XDBybGRcIiI7CisgIEVYUEVDVF9TVFJFUSgKKyAgICAgICJMXCJo
aSBcXFwid1wiIiwgIC8vIFRoZSBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gRW1iZWRkZWQgTlVMIHRlcm1pbmF0ZXMgdGhlIHN0cmluZy4KKyAg
ICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzdHIsIDo6c3RkOjp3c3RyaW5n
KCkpLmNfc3RyKCkpOworfQorI2VuZGlmCisKKy8vIFVzZWZ1bCBmb3IgdGVzdGluZyBQcmludFRv
U3RyaW5nKCkuICBXZSBjYW5ub3QgdXNlIEVYUEVDVF9FUSgpCisvLyB0aGVyZSBhcyBpdHMgaW1w
bGVtZW50YXRpb24gdXNlcyBQcmludFRvU3RyaW5nKCkuICBUaGUgY2FsbGVyIG11c3QKKy8vIGVu
c3VyZSB0aGF0ICd2YWx1ZScgaGFzIG5vIHNpZGUgZWZmZWN0LgorI2RlZmluZSBFWFBFQ1RfUFJJ
TlRfVE9fU1RSSU5HXyh2YWx1ZSwgZXhwZWN0ZWRfc3RyaW5nKSAgICAgICAgIFwKKyAgRVhQRUNU
X1RSVUUoUHJpbnRUb1N0cmluZyh2YWx1ZSkgPT0gKGV4cGVjdGVkX3N0cmluZykpICAgICAgICBc
CisgICAgICA8PCAiIHdoZXJlICIgI3ZhbHVlICIgcHJpbnRzIGFzICIgPDwgKFByaW50VG9TdHJp
bmcodmFsdWUpKQorCitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvclNjYWxhcikgewor
ICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXygxMjMsICIxMjMiKTsKK30KKworVEVTVChQcmludFRv
U3RyaW5nVGVzdCwgV29ya3NGb3JQb2ludGVyVG9Db25zdENoYXIpIHsKKyAgY29uc3QgY2hhciog
cCA9ICJoZWxsbyI7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKHAsICJcImhlbGxvXCIiKTsK
K30KKworVEVTVChQcmludFRvU3RyaW5nVGVzdCwgV29ya3NGb3JQb2ludGVyVG9Ob25Db25zdENo
YXIpIHsKKyAgY2hhciBzW10gPSAiaGVsbG8iOworICBjaGFyKiBwID0gczsKKyAgRVhQRUNUX1BS
SU5UX1RPX1NUUklOR18ocCwgIlwiaGVsbG9cIiIpOworfQorCitURVNUKFByaW50VG9TdHJpbmdU
ZXN0LCBFc2NhcGVzRm9yUG9pbnRlclRvQ29uc3RDaGFyKSB7CisgIGNvbnN0IGNoYXIqIHAgPSAi
aGVsbG9cbiI7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKHAsICJcImhlbGxvXFxuXCIiKTsK
K30KKworVEVTVChQcmludFRvU3RyaW5nVGVzdCwgRXNjYXBlc0ZvclBvaW50ZXJUb05vbkNvbnN0
Q2hhcikgeworICBjaGFyIHNbXSA9ICJoZWxsb1wxIjsKKyAgY2hhciogcCA9IHM7CisgIEVYUEVD
VF9QUklOVF9UT19TVFJJTkdfKHAsICJcImhlbGxvXFx4MVwiIik7Cit9CisKK1RFU1QoUHJpbnRU
b1N0cmluZ1Rlc3QsIFdvcmtzRm9yQXJyYXkpIHsKKyAgaW50IG5bM10gPSB7IDEsIDIsIDMgfTsK
KyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18obiwgInsgMSwgMiwgMyB9Iik7Cit9CisKK1RFU1Qo
UHJpbnRUb1N0cmluZ1Rlc3QsIFdvcmtzRm9yQ2hhckFycmF5KSB7CisgIGNoYXIgc1tdID0gImhl
bGxvIjsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18ocywgIlwiaGVsbG9cIiIpOworfQorCitU
RVNUKFByaW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVdpdGhFbWJlZGRlZE51bCkg
eworICBjb25zdCBjaGFyIHN0cl93aXRoX251bFtdID0gImhlbGxvXDAgd29ybGQiOworICBFWFBF
Q1RfUFJJTlRfVE9fU1RSSU5HXyhzdHJfd2l0aF9udWwsICJcImhlbGxvXFwwIHdvcmxkXCIiKTsK
KworICBjaGFyIG11dGFibGVfc3RyX3dpdGhfbnVsW10gPSAiaGVsbG9cMCB3b3JsZCI7CisgIEVY
UEVDVF9QUklOVF9UT19TVFJJTkdfKG11dGFibGVfc3RyX3dpdGhfbnVsLCAiXCJoZWxsb1xcMCB3
b3JsZFwiIik7Cit9CisKKyAgVEVTVChQcmludFRvU3RyaW5nVGVzdCwgQ29udGFpbnNOb25MYXRp
bikgeworICAvLyBTYW5pdHkgdGVzdCB3aXRoIHZhbGlkIFVURi04LiBQcmludHMgYm90aCBpbiBo
ZXggYW5kIGFzIHRleHQuCisgIHN0ZDo6c3RyaW5nIG5vbl9hc2NpaV9zdHIgPSA6OnN0ZDo6c3Ry
aW5nKCLsmKTsoIQgNDozMCIpOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhub25fYXNjaWlf
c3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiXCJcXHhFQ1xceDk4XFx4QTRcXHhFQ1xc
eEEwXFx4ODQgNDozMFwiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgQXMgVGV4
dDogXCLsmKTsoIQgNDozMFwiIik7CisgIG5vbl9hc2NpaV9zdHIgPSA6OnN0ZDo6c3RyaW5nKCJG
cm9tIMOkIOKAlCDhupEiKTsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18obm9uX2FzY2lpX3N0
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlwiRnJvbSBcXHhDM1xceEE0IFxceEUyXFx4
ODBcXHg5NCBcXHhFMVxceEJBXFx4OTFcIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlxu
ICAgIEFzIFRleHQ6IFwiRnJvbSDDpCDigJQg4bqRXCIiKTsKK30KKworVEVTVChJc1ZhbGlkVVRG
OFRlc3QsIElsbEZvcm1lZFVURjgpIHsKKyAgLy8gVGhlIGZvbGxvd2luZyB0ZXN0IHN0cmluZ3Mg
YXJlIGlsbC1mb3JtZWQgVVRGLTggYW5kIGFyZSBwcmludGVkCisgIC8vIGFzIGhleCBvbmx5IChv
ciBBU0NJSSwgaW4gY2FzZSBvZiBBU0NJSSBieXRlcykgYmVjYXVzZSBJc1ZhbGlkVVRGOCgpIGlz
CisgIC8vIGV4cGVjdGVkIHRvIGZhaWwsIHRodXMgb3V0cHV0IGRvZXMgbm90IGNvbnRhaW4gIkFz
IFRleHQ6Ii4KKworICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qga1Rlc3RkYXRhW11bMl0gPSB7
CisgICAgLy8gMi1ieXRlIGxlYWQgYnl0ZSBmb2xsb3dlZCBieSBhIHNpbmdsZS1ieXRlIGNoYXJh
Y3Rlci4KKyAgICB7Ilx4QzNceDc0IiwgIlwiXFx4QzN0XCIifSwKKyAgICAvLyBWYWxpZCAyLWJ5
dGUgY2hhcmFjdGVyIGZvbGxvd2VkIGJ5IGFuIG9ycGhhbiB0cmFpbCBieXRlLgorICAgIHsiXHhD
M1x4ODRceEE0IiwgIlwiXFx4QzNcXHg4NFxceEE0XCIifSwKKyAgICAvLyBMZWFkIGJ5dGUgd2l0
aG91dCB0cmFpbCBieXRlLgorICAgIHsiYWJjXHhDMyIsICJcImFiY1xceEMzXCIifSwKKyAgICAv
LyAzLWJ5dGUgbGVhZCBieXRlLCBzaW5nbGUtYnl0ZSBjaGFyYWN0ZXIsIG9ycGhhbiB0cmFpbCBi
eXRlLgorICAgIHsieFx4RTJceDcwXHg5NCIsICJcInhcXHhFMnBcXHg5NFwiIn0sCisgICAgLy8g
VHJ1bmNhdGVkIDMtYnl0ZSBjaGFyYWN0ZXIuCisgICAgeyJceEUyXHg4MCIsICJcIlxceEUyXFx4
ODBcIiJ9LAorICAgIC8vIFRydW5jYXRlZCAzLWJ5dGUgY2hhcmFjdGVyIGZvbGxvd2VkIGJ5IHZh
bGlkIDItYnl0ZSBjaGFyLgorICAgIHsiXHhFMlx4ODBceEMzXHg4NCIsICJcIlxceEUyXFx4ODBc
XHhDM1xceDg0XCIifSwKKyAgICAvLyBUcnVuY2F0ZWQgMy1ieXRlIGNoYXJhY3RlciBmb2xsb3dl
ZCBieSBhIHNpbmdsZS1ieXRlIGNoYXJhY3Rlci4KKyAgICB7Ilx4RTJceDgwXHg3QSIsICJcIlxc
eEUyXFx4ODB6XCIifSwKKyAgICAvLyAzLWJ5dGUgbGVhZCBieXRlIGZvbGxvd2VkIGJ5IHZhbGlk
IDMtYnl0ZSBjaGFyYWN0ZXIuCisgICAgeyJceEUyXHhFMlx4ODBceDk0IiwgIlwiXFx4RTJcXHhF
MlxceDgwXFx4OTRcIiJ9LAorICAgIC8vIDQtYnl0ZSBsZWFkIGJ5dGUgZm9sbG93ZWQgYnkgdmFs
aWQgMy1ieXRlIGNoYXJhY3Rlci4KKyAgICB7Ilx4RjBceEUyXHg4MFx4OTQiLCAiXCJcXHhGMFxc
eEUyXFx4ODBcXHg5NFwiIn0sCisgICAgLy8gVHJ1bmNhdGVkIDQtYnl0ZSBjaGFyYWN0ZXIuCisg
ICAgeyJceEYwXHhFMlx4ODAiLCAiXCJcXHhGMFxceEUyXFx4ODBcIiJ9LAorICAgICAvLyBJbnZh
bGlkIFVURi04IGJ5dGUgc2VxdWVuY2VzIGVtYmVkZGVkIGluIG90aGVyIGNoYXJzLgorICAgIHsi
YWJjXHhFMlx4ODBceDk0XHhDM1x4NzR4eWMiLCAiXCJhYmNcXHhFMlxceDgwXFx4OTRcXHhDM3R4
eWNcIiJ9LAorICAgIHsiYWJjXHhDM1x4ODRceEUyXHg4MFx4QzNceDg0eHl6IiwKKyAgICAgIlwi
YWJjXFx4QzNcXHg4NFxceEUyXFx4ODBcXHhDM1xceDg0eHl6XCIifSwKKyAgICAvLyBOb24tc2hv
cnRlc3QgVVRGLTggYnl0ZSBzZXF1ZW5jZXMgYXJlIGFsc28gaWxsLWZvcm1lZC4KKyAgICAvLyBU
aGUgY2xhc3NpY3M6IHhDMCwgeEMxIGxlYWQgYnl0ZS4KKyAgICB7Ilx4QzBceDgwIiwgIlwiXFx4
QzBcXHg4MFwiIn0sCisgICAgeyJceEMxXHg4MSIsICJcIlxceEMxXFx4ODFcIiJ9LAorICAgIC8v
IE5vbi1zaG9ydGVzdCBzZXF1ZW5jZXMuCisgICAgeyJceEUwXHg4MFx4ODAiLCAiXCJcXHhFMFxc
eDgwXFx4ODBcIiJ9LAorICAgIHsiXHhmMFx4ODBceDgwXHg4MCIsICJcIlxceEYwXFx4ODBcXHg4
MFxceDgwXCIifSwKKyAgICAvLyBMYXN0IHZhbGlkIGNvZGUgcG9pbnQgYmVmb3JlIHN1cnJvZ2F0
ZSByYW5nZSwgc2hvdWxkIGJlIHByaW50ZWQgYXMgdGV4dCwKKyAgICAvLyB0b28uCisgICAgeyJc
eEVEXHg5Rlx4QkYiLCAiXCJcXHhFRFxceDlGXFx4QkZcIlxuICAgIEFzIFRleHQ6IFwi7Z+/XCIi
fSwKKyAgICAvLyBTdGFydCBvZiBzdXJyb2dhdGUgbGVhZC4gU3Vycm9nYXRlcyBhcmUgbm90IHBy
aW50ZWQgYXMgdGV4dC4KKyAgICB7Ilx4RURceEEwXHg4MCIsICJcIlxceEVEXFx4QTBcXHg4MFwi
In0sCisgICAgLy8gTGFzdCBub24tcHJpdmF0ZSBzdXJyb2dhdGUgbGVhZC4KKyAgICB7Ilx4RURc
eEFEXHhCRiIsICJcIlxceEVEXFx4QURcXHhCRlwiIn0sCisgICAgLy8gRmlyc3QgcHJpdmF0ZS11
c2Ugc3Vycm9nYXRlIGxlYWQuCisgICAgeyJceEVEXHhBRVx4ODAiLCAiXCJcXHhFRFxceEFFXFx4
ODBcIiJ9LAorICAgIC8vIExhc3QgcHJpdmF0ZS11c2Ugc3Vycm9nYXRlIGxlYWQuCisgICAgeyJc
eEVEXHhBRlx4QkYiLCAiXCJcXHhFRFxceEFGXFx4QkZcIiJ9LAorICAgIC8vIE1pZC1wb2ludCBv
ZiBzdXJyb2dhdGUgdHJhaWwuCisgICAgeyJceEVEXHhCM1x4QkYiLCAiXCJcXHhFRFxceEIzXFx4
QkZcIiJ9LAorICAgIC8vIEZpcnN0IHZhbGlkIGNvZGUgcG9pbnQgYWZ0ZXIgc3Vycm9nYXRlIHJh
bmdlLCBzaG91bGQgYmUgcHJpbnRlZCBhcyB0ZXh0LAorICAgIC8vIHRvby4KKyAgICB7Ilx4RUVc
eDgwXHg4MCIsICJcIlxceEVFXFx4ODBcXHg4MFwiXG4gICAgQXMgVGV4dDogXCLugIBcIiJ9Cisg
IH07CisKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnQoc2l6ZW9mKGtUZXN0ZGF0YSkvc2l6ZW9m
KGtUZXN0ZGF0YVswXSkpOyArK2kpIHsKKyAgICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhrVGVz
dGRhdGFbaV1bMF0sIGtUZXN0ZGF0YVtpXVsxXSk7CisgIH0KK30KKworI3VuZGVmIEVYUEVDVF9Q
UklOVF9UT19TVFJJTkdfCisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFRlc3QsIFdvcmtzRm9y
Tm9uUmVmZXJlbmNlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIFVuaXZlcnNhbFRl
cnNlUHJpbnQoMTIzLCAmc3MpOworICBFWFBFQ1RfRVEoIjEyMyIsIHNzLnN0cigpKTsKK30KKwor
VEVTVChVbml2ZXJzYWxUZXJzZVByaW50VGVzdCwgV29ya3NGb3JSZWZlcmVuY2UpIHsKKyAgY29u
c3QgaW50JiBuID0gMTIzOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICBVbml2ZXJzYWxU
ZXJzZVByaW50KG4sICZzcyk7CisgIEVYUEVDVF9FUSgiMTIzIiwgc3Muc3RyKCkpOworfQorCitU
RVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUZXN0LCBXb3Jrc0ZvckNTdHJpbmcpIHsKKyAgY29uc3Qg
Y2hhciogczEgPSAiYWJjIjsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczE7CisgIFVuaXZlcnNh
bFRlcnNlUHJpbnQoczEsICZzczEpOworICBFWFBFQ1RfRVEoIlwiYWJjXCIiLCBzczEuc3RyKCkp
OworCisgIGNoYXIqIHMyID0gY29uc3RfY2FzdDxjaGFyKj4oczEpOworICA6OnN0ZDo6c3RyaW5n
c3RyZWFtIHNzMjsKKyAgVW5pdmVyc2FsVGVyc2VQcmludChzMiwgJnNzMik7CisgIEVYUEVDVF9F
USgiXCJhYmNcIiIsIHNzMi5zdHIoKSk7CisKKyAgY29uc3QgY2hhciogczMgPSBOVUxMOworICA6
OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMzsKKyAgVW5pdmVyc2FsVGVyc2VQcmludChzMywgJnNzMyk7
CisgIEVYUEVDVF9FUSgiTlVMTCIsIHNzMy5zdHIoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsUHJp
bnRUZXN0LCBXb3Jrc0Zvck5vblJlZmVyZW5jZSkgeworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNz
OworICBVbml2ZXJzYWxQcmludCgxMjMsICZzcyk7CisgIEVYUEVDVF9FUSgiMTIzIiwgc3Muc3Ry
KCkpOworfQorCitURVNUKFVuaXZlcnNhbFByaW50VGVzdCwgV29ya3NGb3JSZWZlcmVuY2UpIHsK
KyAgY29uc3QgaW50JiBuID0gMTIzOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICBVbml2
ZXJzYWxQcmludChuLCAmc3MpOworICBFWFBFQ1RfRVEoIjEyMyIsIHNzLnN0cigpKTsKK30KKwor
VEVTVChVbml2ZXJzYWxQcmludFRlc3QsIFdvcmtzRm9yQ1N0cmluZykgeworICBjb25zdCBjaGFy
KiBzMSA9ICJhYmMiOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMTsKKyAgVW5pdmVyc2FsUHJp
bnQoczEsICZzczEpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHMxKSArICIgcG9pbnRpbmcg
dG8gXCJhYmNcIiIsIHN0ZDo6c3RyaW5nKHNzMS5zdHIoKSkpOworCisgIGNoYXIqIHMyID0gY29u
c3RfY2FzdDxjaGFyKj4oczEpOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMjsKKyAgVW5pdmVy
c2FsUHJpbnQoczIsICZzczIpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHMyKSArICIgcG9p
bnRpbmcgdG8gXCJhYmNcIiIsIHN0ZDo6c3RyaW5nKHNzMi5zdHIoKSkpOworCisgIGNvbnN0IGNo
YXIqIHMzID0gTlVMTDsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczM7CisgIFVuaXZlcnNhbFBy
aW50KHMzLCAmc3MzKTsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgc3MzLnN0cigpKTsKK30KKworVEVT
VChVbml2ZXJzYWxQcmludFRlc3QsIFdvcmtzRm9yQ2hhckFycmF5KSB7CisgIGNvbnN0IGNoYXIg
c3RyW10gPSAiXCJMaW5lXDAgMVwiXG5MaW5lIDIiOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNz
MTsKKyAgVW5pdmVyc2FsUHJpbnQoc3RyLCAmc3MxKTsKKyAgRVhQRUNUX0VRKCJcIlxcXCJMaW5l
XFwwIDFcXFwiXFxuTGluZSAyXCIiLCBzczEuc3RyKCkpOworCisgIGNvbnN0IGNoYXIgbXV0YWJs
ZV9zdHJbXSA9ICJcIkxpbmVcMCAxXCJcbkxpbmUgMiI7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0g
c3MyOworICBVbml2ZXJzYWxQcmludChtdXRhYmxlX3N0ciwgJnNzMik7CisgIEVYUEVDVF9FUSgi
XCJcXFwiTGluZVxcMCAxXFxcIlxcbkxpbmUgMlwiIiwgc3MyLnN0cigpKTsKK30KKworI2lmIEdU
RVNUX0hBU19UUjFfVFVQTEUKKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNU
b1N0cmluZ3NUZXN0V2l0aFRyMSwgUHJpbnRzRW1wdHlUdXBsZSkgeworICBTdHJpbmdzIHJlc3Vs
dCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKKyAgICAgIDo6c3Rk
Ojp0cjE6Om1ha2VfdHVwbGUoKSk7CisgIEVYUEVDVF9FUSgwdSwgcmVzdWx0LnNpemUoKSk7Cit9
CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhU
cjEsIFByaW50c09uZVR1cGxlKSB7CisgIFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQ
cmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAorICAgICAgOjpzdGQ6OnRyMTo6bWFrZV90dXBsZSgx
KSk7CisgIEFTU0VSVF9FUSgxdSwgcmVzdWx0LnNpemUoKSk7CisgIEVYUEVDVF9FUSgiMSIsIHJl
c3VsdFswXSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJp
bmdzVGVzdFdpdGhUcjEsIFByaW50c1R3b1R1cGxlKSB7CisgIFN0cmluZ3MgcmVzdWx0ID0gVW5p
dmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAorICAgICAgOjpzdGQ6OnRyMTo6
bWFrZV90dXBsZSgxLCAnYScpKTsKKyAgQVNTRVJUX0VRKDJ1LCByZXN1bHQuc2l6ZSgpKTsKKyAg
RVhQRUNUX0VRKCIxIiwgcmVzdWx0WzBdKTsKKyAgRVhQRUNUX0VRKCInYScgKDk3LCAweDYxKSIs
IHJlc3VsdFsxXSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9T
dHJpbmdzVGVzdFdpdGhUcjEsIFByaW50c1RlcnNlbHkpIHsKKyAgY29uc3QgaW50IG4gPSAxOwor
ICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5n
cygKKyAgICAgIDo6c3RkOjp0cjE6OnR1cGxlPGNvbnN0IGludCYsIGNvbnN0IGNoYXIqPihuLCAi
YSIpKTsKKyAgQVNTRVJUX0VRKDJ1LCByZXN1bHQuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKCIxIiwg
cmVzdWx0WzBdKTsKKyAgRVhQRUNUX0VRKCJcImFcIiIsIHJlc3VsdFsxXSk7Cit9CisKKyNlbmRp
ZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRQorCisjaWYgR1RFU1RfSEFTX1NURF9UVVBMRV8KKwor
VEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0aFN0ZCwg
UHJpbnRzRW1wdHlUdXBsZSkgeworICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJp
bnRUdXBsZUZpZWxkc1RvU3RyaW5ncyg6OnN0ZDo6bWFrZV90dXBsZSgpKTsKKyAgRVhQRUNUX0VR
KDB1LCByZXN1bHQuc2l6ZSgpKTsKK30KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVG
aWVsZHNUb1N0cmluZ3NUZXN0V2l0aFN0ZCwgUHJpbnRzT25lVHVwbGUpIHsKKyAgU3RyaW5ncyBy
ZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoCisgICAgICA6
OnN0ZDo6bWFrZV90dXBsZSgxKSk7CisgIEFTU0VSVF9FUSgxdSwgcmVzdWx0LnNpemUoKSk7Cisg
IEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmlu
dFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhTdGQsIFByaW50c1R3b1R1cGxlKSB7CisgIFN0
cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAor
ICAgICAgOjpzdGQ6Om1ha2VfdHVwbGUoMSwgJ2EnKSk7CisgIEFTU0VSVF9FUSgydSwgcmVzdWx0
LnNpemUoKSk7CisgIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7CisgIEVYUEVDVF9FUSgiJ2En
ICg5NywgMHg2MSkiLCByZXN1bHRbMV0pOworfQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRU
dXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoU3RkLCBQcmludHNUZXJzZWx5KSB7CisgIGNvbnN0
IGludCBuID0gMTsKKyAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVG
aWVsZHNUb1N0cmluZ3MoCisgICAgICA6OnN0ZDo6dHVwbGU8Y29uc3QgaW50JiwgY29uc3QgY2hh
cio+KG4sICJhIikpOworICBBU1NFUlRfRVEoMnUsIHJlc3VsdC5zaXplKCkpOworICBFWFBFQ1Rf
RVEoIjEiLCByZXN1bHRbMF0pOworICBFWFBFQ1RfRVEoIlwiYVwiIiwgcmVzdWx0WzFdKTsKK30K
KworI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1RVUExFXworCisjaWYgR1RFU1RfSEFTX0FCU0wK
KworVEVTVChQcmludE9wdGlvbmFsVGVzdCwgQmFzaWMpIHsKKyAgYWJzbDo6b3B0aW9uYWw8aW50
PiB2YWx1ZTsKKyAgRVhQRUNUX0VRKCIobnVsbG9wdCkiLCBQcmludFRvU3RyaW5nKHZhbHVlKSk7
CisgIHZhbHVlID0gezd9OworICBFWFBFQ1RfRVEoIig3KSIsIFByaW50VG9TdHJpbmcodmFsdWUp
KTsKKyAgRVhQRUNUX0VRKCIoMS4xKSIsIFByaW50VG9TdHJpbmcoYWJzbDo6b3B0aW9uYWw8ZG91
YmxlPnsxLjF9KSk7CisgIEVYUEVDVF9FUSgiKFwiQVwiKSIsIFByaW50VG9TdHJpbmcoYWJzbDo6
b3B0aW9uYWw8c3RkOjpzdHJpbmc+eyJBIn0pKTsKK30KKworc3RydWN0IE5vblByaW50YWJsZSB7
CisgIHVuc2lnbmVkIGNoYXIgY29udGVudHMgPSAxNzsKK307CisKK1RFU1QoUHJpbnRPbmVvZlRl
c3QsIEJhc2ljKSB7CisgIHVzaW5nIFR5cGUgPSBhYnNsOjp2YXJpYW50PGludCwgU3RyZWFtYWJs
ZUluR2xvYmFsLCBOb25QcmludGFibGU+OworICBFWFBFQ1RfRVEoIignaW50JyB3aXRoIHZhbHVl
IDcpIiwgUHJpbnRUb1N0cmluZyhUeXBlKDcpKSk7CisgIEVYUEVDVF9FUSgiKCdTdHJlYW1hYmxl
SW5HbG9iYWwnIHdpdGggdmFsdWUgU3RyZWFtYWJsZUluR2xvYmFsKSIsCisgICAgICAgICAgICBQ
cmludFRvU3RyaW5nKFR5cGUoU3RyZWFtYWJsZUluR2xvYmFse30pKSk7CisgIEVYUEVDVF9FUSgK
KyAgICAgICIoJ3Rlc3Rpbmc6Omd0ZXN0X3ByaW50ZXJzX3Rlc3Q6Ok5vblByaW50YWJsZScgd2l0
aCB2YWx1ZSAxLWJ5dGUgb2JqZWN0ICIKKyAgICAgICI8MTE+KSIsCisgICAgICBQcmludFRvU3Ry
aW5nKFR5cGUoTm9uUHJpbnRhYmxle30pKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNM
CisKK30gIC8vIG5hbWVzcGFjZSBndGVzdF9wcmludGVyc190ZXN0Cit9ICAvLyBuYW1lc3BhY2Ug
dGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LXNodWZmbGUtdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xl
dGVzdC1zaHVmZmxlLXRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTczY2M1ZWNhM2ZjZTQ1OGFhM2FjM2Uz
OTg1MGY0N2JiMzgyZTU1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3QucHkKQEAgLTAsMCArMSwzMjMgQEAKKyMh
L3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAwOSBHb29nbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6
CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVmVyaWZpZXMgdGhhdCB0
ZXN0IHNodWZmbGluZyB3b3Jrcy4iIiIKKworaW1wb3J0IG9zCitpbXBvcnQgZ3Rlc3RfdGVzdF91
dGlscworCisjIENvbW1hbmQgdG8gcnVuIHRoZSBnb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8gcHJv
Z3JhbS4KK0NPTU1BTkQgPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgn
Z29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfJykKKworIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVz
IGZvciB0ZXN0IHNoYXJkaW5nLgorVE9UQUxfU0hBUkRTX0VOVl9WQVIgPSAnR1RFU1RfVE9UQUxf
U0hBUkRTJworU0hBUkRfSU5ERVhfRU5WX1ZBUiA9ICdHVEVTVF9TSEFSRF9JTkRFWCcKKworVEVT
VF9GSUxURVIgPSAnQSouQTpBKi5COkMqJworCitBTExfVEVTVFMgPSBbXQorQUNUSVZFX1RFU1RT
ID0gW10KK0ZJTFRFUkVEX1RFU1RTID0gW10KK1NIQVJERURfVEVTVFMgPSBbXQorCitTSFVGRkxF
RF9BTExfVEVTVFMgPSBbXQorU0hVRkZMRURfQUNUSVZFX1RFU1RTID0gW10KK1NIVUZGTEVEX0ZJ
TFRFUkVEX1RFU1RTID0gW10KK1NIVUZGTEVEX1NIQVJERURfVEVTVFMgPSBbXQorCisKK2RlZiBB
bHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcoKToKKyAgcmV0dXJuICctLWd0ZXN0X2Fsc29fcnVuX2Rp
c2FibGVkX3Rlc3RzJworCisKK2RlZiBGaWx0ZXJGbGFnKHRlc3RfZmlsdGVyKToKKyAgcmV0dXJu
ICctLWd0ZXN0X2ZpbHRlcj0lcycgJSAodGVzdF9maWx0ZXIsKQorCisKK2RlZiBSZXBlYXRGbGFn
KG4pOgorICByZXR1cm4gJy0tZ3Rlc3RfcmVwZWF0PSVzJyAlIChuLCkKKworCitkZWYgU2h1ZmZs
ZUZsYWcoKToKKyAgcmV0dXJuICctLWd0ZXN0X3NodWZmbGUnCisKKworZGVmIFJhbmRvbVNlZWRG
bGFnKG4pOgorICByZXR1cm4gJy0tZ3Rlc3RfcmFuZG9tX3NlZWQ9JXMnICUgKG4sKQorCisKK2Rl
ZiBSdW5BbmRSZXR1cm5PdXRwdXQoZXh0cmFfZW52LCBhcmdzKToKKyAgIiIiUnVucyB0aGUgdGVz
dCBwcm9ncmFtIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQuIiIiCisKKyAgZW52aXJvbl9jb3B5ID0g
b3MuZW52aXJvbi5jb3B5KCkKKyAgZW52aXJvbl9jb3B5LnVwZGF0ZShleHRyYV9lbnYpCisKKyAg
cmV0dXJuIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhbQ09NTUFORF0gKyBhcmdzLCBlbnY9
ZW52aXJvbl9jb3B5KS5vdXRwdXQKKworCitkZWYgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKGV4
dHJhX2VudiwgYXJncyk6CisgICIiIlJ1bnMgdGhlIHRlc3QgcHJvZ3JhbSBhbmQgcmV0dXJucyBh
IGxpc3Qgb2YgdGVzdCBsaXN0cy4KKworICBBcmdzOgorICAgIGV4dHJhX2VudjogYSBtYXAgZnJv
bSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gdGhlaXIgdmFsdWVzCisgICAgYXJnczogY29tbWFu
ZCBsaW5lIGZsYWdzIHRvIHBhc3MgdG8gZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfCisKKyAgUmV0
dXJuczoKKyAgICBBIGxpc3Qgd2hlcmUgdGhlIGktdGggZWxlbWVudCBpcyB0aGUgbGlzdCBvZiB0
ZXN0cyBydW4gaW4gdGhlIGktdGgKKyAgICB0ZXN0IGl0ZXJhdGlvbi4KKyAgIiIiCisKKyAgdGVz
dF9pdGVyYXRpb25zID0gW10KKyAgZm9yIGxpbmUgaW4gUnVuQW5kUmV0dXJuT3V0cHV0KGV4dHJh
X2VudiwgYXJncykuc3BsaXQoJ1xuJyk6CisgICAgaWYgbGluZS5zdGFydHN3aXRoKCctLS0tJyk6
CisgICAgICB0ZXN0cyA9IFtdCisgICAgICB0ZXN0X2l0ZXJhdGlvbnMuYXBwZW5kKHRlc3RzKQor
ICAgIGVsaWYgbGluZS5zdHJpcCgpOgorICAgICAgdGVzdHMuYXBwZW5kKGxpbmUuc3RyaXAoKSkg
ICMgJ1Rlc3RDYXNlTmFtZS5UZXN0TmFtZScKKworICByZXR1cm4gdGVzdF9pdGVyYXRpb25zCisK
KworZGVmIEdldFRlc3RDYXNlcyh0ZXN0cyk6CisgICIiIlJldHVybnMgYSBsaXN0IG9mIHRlc3Qg
Y2FzZXMgaW4gdGhlIGdpdmVuIGZ1bGwgdGVzdCBuYW1lcy4KKworICBBcmdzOgorICAgIHRlc3Rz
OiBhIGxpc3Qgb2YgZnVsbCB0ZXN0IG5hbWVzCisKKyAgUmV0dXJuczoKKyAgICBBIGxpc3Qgb2Yg
dGVzdCBjYXNlcyBmcm9tICd0ZXN0cycsIGluIHRoZWlyIG9yaWdpbmFsIG9yZGVyLgorICAgIENv
bnNlY3V0aXZlIGR1cGxpY2F0ZXMgYXJlIHJlbW92ZWQuCisgICIiIgorCisgIHRlc3RfY2FzZXMg
PSBbXQorICBmb3IgdGVzdCBpbiB0ZXN0czoKKyAgICB0ZXN0X2Nhc2UgPSB0ZXN0LnNwbGl0KCcu
JylbMF0KKyAgICBpZiBub3QgdGVzdF9jYXNlIGluIHRlc3RfY2FzZXM6CisgICAgICB0ZXN0X2Nh
c2VzLmFwcGVuZCh0ZXN0X2Nhc2UpCisKKyAgcmV0dXJuIHRlc3RfY2FzZXMKKworCitkZWYgQ2Fs
Y3VsYXRlVGVzdExpc3RzKCk6CisgICIiIkNhbGN1bGF0ZXMgdGhlIGxpc3Qgb2YgdGVzdHMgcnVu
IHVuZGVyIGRpZmZlcmVudCBmbGFncy4iIiIKKworICBpZiBub3QgQUxMX1RFU1RTOgorICAgIEFM
TF9URVNUUy5leHRlbmQoCisgICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7fSwgW0Fs
c29SdW5EaXNhYmxlZFRlc3RzRmxhZygpXSlbMF0pCisKKyAgaWYgbm90IEFDVElWRV9URVNUUzoK
KyAgICBBQ1RJVkVfVEVTVFMuZXh0ZW5kKEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7fSwgW10p
WzBdKQorCisgIGlmIG5vdCBGSUxURVJFRF9URVNUUzoKKyAgICBGSUxURVJFRF9URVNUUy5leHRl
bmQoCisgICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7fSwgW0ZpbHRlckZsYWcoVEVT
VF9GSUxURVIpXSlbMF0pCisKKyAgaWYgbm90IFNIQVJERURfVEVTVFM6CisgICAgU0hBUkRFRF9U
RVNUUy5leHRlbmQoCisgICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7VE9UQUxfU0hB
UkRTX0VOVl9WQVI6ICczJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFS
RF9JTkRFWF9FTlZfVkFSOiAnMSd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
W10pWzBdKQorCisgIGlmIG5vdCBTSFVGRkxFRF9BTExfVEVTVFM6CisgICAgU0hVRkZMRURfQUxM
X1RFU1RTLmV4dGVuZChHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisgICAgICAgIHt9LCBbQWxz
b1J1bkRpc2FibGVkVGVzdHNGbGFnKCksIFNodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEp
XSlbMF0pCisKKyAgaWYgbm90IFNIVUZGTEVEX0FDVElWRV9URVNUUzoKKyAgICBTSFVGRkxFRF9B
Q1RJVkVfVEVTVFMuZXh0ZW5kKEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKKyAgICAgICAge30s
IFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0pWzBdKQorCisgIGlmIG5vdCBTSFVG
RkxFRF9GSUxURVJFRF9URVNUUzoKKyAgICBTSFVGRkxFRF9GSUxURVJFRF9URVNUUy5leHRlbmQo
R2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJh
bmRvbVNlZWRGbGFnKDEpLCBGaWx0ZXJGbGFnKFRFU1RfRklMVEVSKV0pWzBdKQorCisgIGlmIG5v
dCBTSFVGRkxFRF9TSEFSREVEX1RFU1RTOgorICAgIFNIVUZGTEVEX1NIQVJERURfVEVTVFMuZXh0
ZW5kKAorICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe1RPVEFMX1NIQVJEU19FTlZf
VkFSOiAnMycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBUkRfSU5ERVhf
RU5WX1ZBUjogJzEnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTaHVmZmxl
RmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0pWzBdKQorCisKK2NsYXNzIEdUZXN0U2h1ZmZsZVVu
aXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJUZXN0cyB0ZXN0IHNodWZm
bGluZy4iIiIKKworICBkZWYgc2V0VXAoc2VsZik6CisgICAgQ2FsY3VsYXRlVGVzdExpc3RzKCkK
KworICBkZWYgdGVzdFNodWZmbGVQcmVzZXJ2ZXNOdW1iZXJPZlRlc3RzKHNlbGYpOgorICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGVuKEFMTF9URVNUUyksIGxlbihTSFVGRkxFRF9BTExfVEVTVFMpKQor
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKEFDVElWRV9URVNUUyksIGxlbihTSFVGRkxFRF9BQ1RJ
VkVfVEVTVFMpKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKEZJTFRFUkVEX1RFU1RTKSwgbGVu
KFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTKSkKKyAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihTSEFS
REVEX1RFU1RTKSwgbGVuKFNIVUZGTEVEX1NIQVJERURfVEVTVFMpKQorCisgIGRlZiB0ZXN0U2h1
ZmZsZUNoYW5nZXNUZXN0T3JkZXIoc2VsZik6CisgICAgc2VsZi5hc3NlcnRfKFNIVUZGTEVEX0FM
TF9URVNUUyAhPSBBTExfVEVTVFMsIFNIVUZGTEVEX0FMTF9URVNUUykKKyAgICBzZWxmLmFzc2Vy
dF8oU0hVRkZMRURfQUNUSVZFX1RFU1RTICE9IEFDVElWRV9URVNUUywgU0hVRkZMRURfQUNUSVZF
X1RFU1RTKQorICAgIHNlbGYuYXNzZXJ0XyhTSFVGRkxFRF9GSUxURVJFRF9URVNUUyAhPSBGSUxU
RVJFRF9URVNUUywKKyAgICAgICAgICAgICAgICAgU0hVRkZMRURfRklMVEVSRURfVEVTVFMpCisg
ICAgc2VsZi5hc3NlcnRfKFNIVUZGTEVEX1NIQVJERURfVEVTVFMgIT0gU0hBUkRFRF9URVNUUywK
KyAgICAgICAgICAgICAgICAgU0hVRkZMRURfU0hBUkRFRF9URVNUUykKKworICBkZWYgdGVzdFNo
dWZmbGVDaGFuZ2VzVGVzdENhc2VPcmRlcihzZWxmKToKKyAgICBzZWxmLmFzc2VydF8oR2V0VGVz
dENhc2VzKFNIVUZGTEVEX0FMTF9URVNUUykgIT0gR2V0VGVzdENhc2VzKEFMTF9URVNUUyksCisg
ICAgICAgICAgICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9BTExfVEVTVFMpKQorICAgIHNl
bGYuYXNzZXJ0XygKKyAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX0FDVElWRV9URVNUUykg
IT0gR2V0VGVzdENhc2VzKEFDVElWRV9URVNUUyksCisgICAgICAgIEdldFRlc3RDYXNlcyhTSFVG
RkxFRF9BQ1RJVkVfVEVTVFMpKQorICAgIHNlbGYuYXNzZXJ0XygKKyAgICAgICAgR2V0VGVzdENh
c2VzKFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTKSAhPSBHZXRUZXN0Q2FzZXMoRklMVEVSRURfVEVT
VFMpLAorICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfRklMVEVSRURfVEVTVFMpKQorICAg
IHNlbGYuYXNzZXJ0XygKKyAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX1NIQVJERURfVEVT
VFMpICE9IEdldFRlc3RDYXNlcyhTSEFSREVEX1RFU1RTKSwKKyAgICAgICAgR2V0VGVzdENhc2Vz
KFNIVUZGTEVEX1NIQVJERURfVEVTVFMpKQorCisgIGRlZiB0ZXN0U2h1ZmZsZURvZXNOb3RSZXBl
YXRUZXN0KHNlbGYpOgorICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX0FMTF9URVNUUzoKKyAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoMSwgU0hVRkZMRURfQUxMX1RFU1RTLmNvdW50KHRlc3QpLAorICAg
ICAgICAgICAgICAgICAgICAgICAnJXMgYXBwZWFycyBtb3JlIHRoYW4gb25jZScgJSAodGVzdCwp
KQorICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX0FDVElWRV9URVNUUzoKKyAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMSwgU0hVRkZMRURfQUNUSVZFX1RFU1RTLmNvdW50KHRlc3QpLAorICAgICAgICAg
ICAgICAgICAgICAgICAnJXMgYXBwZWFycyBtb3JlIHRoYW4gb25jZScgJSAodGVzdCwpKQorICAg
IGZvciB0ZXN0IGluIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTOgorICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgxLCBTSFVGRkxFRF9GSUxURVJFRF9URVNUUy5jb3VudCh0ZXN0KSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgJyVzIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UnICUgKHRlc3QsKSkKKyAgICBm
b3IgdGVzdCBpbiBTSFVGRkxFRF9TSEFSREVEX1RFU1RTOgorICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgxLCBTSFVGRkxFRF9TSEFSREVEX1RFU1RTLmNvdW50KHRlc3QpLAorICAgICAgICAgICAgICAg
ICAgICAgICAnJXMgYXBwZWFycyBtb3JlIHRoYW4gb25jZScgJSAodGVzdCwpKQorCisgIGRlZiB0
ZXN0U2h1ZmZsZURvZXNOb3RDcmVhdGVOZXdUZXN0KHNlbGYpOgorICAgIGZvciB0ZXN0IGluIFNI
VUZGTEVEX0FMTF9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIEFMTF9URVNUUywg
JyVzIGlzIGFuIGludmFsaWQgdGVzdCcgJSAodGVzdCwpKQorICAgIGZvciB0ZXN0IGluIFNIVUZG
TEVEX0FDVElWRV9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIEFDVElWRV9URVNU
UywgJyVzIGlzIGFuIGludmFsaWQgdGVzdCcgJSAodGVzdCwpKQorICAgIGZvciB0ZXN0IGluIFNI
VUZGTEVEX0ZJTFRFUkVEX1RFU1RTOgorICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gRklMVEVS
RURfVEVTVFMsICclcyBpcyBhbiBpbnZhbGlkIHRlc3QnICUgKHRlc3QsKSkKKyAgICBmb3IgdGVz
dCBpbiBTSFVGRkxFRF9TSEFSREVEX1RFU1RTOgorICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4g
U0hBUkRFRF9URVNUUywgJyVzIGlzIGFuIGludmFsaWQgdGVzdCcgJSAodGVzdCwpKQorCisgIGRl
ZiB0ZXN0U2h1ZmZsZUluY2x1ZGVzQWxsVGVzdHMoc2VsZik6CisgICAgZm9yIHRlc3QgaW4gQUxM
X1RFU1RTOgorICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfQUxMX1RFU1RTLCAn
JXMgaXMgbWlzc2luZycgJSAodGVzdCwpKQorICAgIGZvciB0ZXN0IGluIEFDVElWRV9URVNUUzoK
KyAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIVUZGTEVEX0FDVElWRV9URVNUUywgJyVzIGlz
IG1pc3NpbmcnICUgKHRlc3QsKSkKKyAgICBmb3IgdGVzdCBpbiBGSUxURVJFRF9URVNUUzoKKyAg
ICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTLCAnJXMgaXMg
bWlzc2luZycgJSAodGVzdCwpKQorICAgIGZvciB0ZXN0IGluIFNIQVJERURfVEVTVFM6CisgICAg
ICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVGRkxFRF9TSEFSREVEX1RFU1RTLCAnJXMgaXMgbWlz
c2luZycgJSAodGVzdCwpKQorCisgIGRlZiB0ZXN0U2h1ZmZsZUxlYXZlc0RlYXRoVGVzdHNBdEZy
b250KHNlbGYpOgorICAgIG5vbl9kZWF0aF90ZXN0X2ZvdW5kID0gRmFsc2UKKyAgICBmb3IgdGVz
dCBpbiBTSFVGRkxFRF9BQ1RJVkVfVEVTVFM6CisgICAgICBpZiAnRGVhdGhUZXN0LicgaW4gdGVz
dDoKKyAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBub25fZGVhdGhfdGVzdF9mb3VuZCwKKyAgICAg
ICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIGFmdGVyIGEgbm9uLWRlYXRoIHRlc3QnICUgKHRl
c3QsKSkKKyAgICAgIGVsc2U6CisgICAgICAgIG5vbl9kZWF0aF90ZXN0X2ZvdW5kID0gVHJ1ZQor
CisgIGRlZiBfVmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRlcmxlYXZlKHNlbGYsIHRlc3RzKToKKyAg
ICB0ZXN0X2Nhc2VzID0gW10KKyAgICBmb3IgdGVzdCBpbiB0ZXN0czoKKyAgICAgIFt0ZXN0X2Nh
c2UsIF9dID0gdGVzdC5zcGxpdCgnLicpCisgICAgICBpZiB0ZXN0X2Nhc2VzIGFuZCB0ZXN0X2Nh
c2VzWy0xXSAhPSB0ZXN0X2Nhc2U6CisgICAgICAgIHRlc3RfY2FzZXMuYXBwZW5kKHRlc3RfY2Fz
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCB0ZXN0X2Nhc2VzLmNvdW50KHRlc3RfY2Fz
ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgY2FzZSAlcyBpcyBub3QgZ3JvdXBl
ZCB0b2dldGhlciBpbiAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0X2Nhc2Us
IHRlc3RzKSkKKworICBkZWYgdGVzdFNodWZmbGVEb2VzTm90SW50ZXJsZWF2ZVRlc3RDYXNlcyhz
ZWxmKToKKyAgICBzZWxmLl9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUoU0hVRkZMRURf
QUxMX1RFU1RTKQorICAgIHNlbGYuX1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50ZXJsZWF2ZShTSFVG
RkxFRF9BQ1RJVkVfVEVTVFMpCisgICAgc2VsZi5fVmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRlcmxl
YXZlKFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTKQorICAgIHNlbGYuX1ZlcmlmeVRlc3RDYXNlc0Rv
Tm90SW50ZXJsZWF2ZShTSFVGRkxFRF9TSEFSREVEX1RFU1RTKQorCisgIGRlZiB0ZXN0U2h1ZmZs
ZVJlc3RvcmVzT3JkZXJBZnRlckVhY2hJdGVyYXRpb24oc2VsZik6CisgICAgIyBHZXQgdGhlIHRl
c3QgbGlzdHMgaW4gYWxsIDMgaXRlcmF0aW9ucywgdXNpbmcgcmFuZG9tIHNlZWQgMSwgMiwKKyAg
ICAjIGFuZCAzIHJlc3BlY3RpdmVseS4gIEdvb2dsZSBUZXN0IHBpY2tzIGEgZGlmZmVyZW50IHNl
ZWQgaW4gZWFjaAorICAgICMgaXRlcmF0aW9uLCBhbmQgdGhpcyB0ZXN0IGRlcGVuZHMgb24gdGhl
IGN1cnJlbnQgaW1wbGVtZW50YXRpb24KKyAgICAjIHBpY2tpbmcgc3VjY2Vzc2l2ZSBudW1iZXJz
LiAgVGhpcyBkZXBlbmRlbmN5IGlzIG5vdCBpZGVhbCwgYnV0CisgICAgIyBtYWtlcyB0aGUgdGVz
dCBtdWNoIGVhc2llciB0byB3cml0ZS4KKyAgICBbdGVzdHNfaW5faXRlcmF0aW9uMSwgdGVzdHNf
aW5faXRlcmF0aW9uMiwgdGVzdHNfaW5faXRlcmF0aW9uM10gPSAoCisgICAgICAgIEdldFRlc3Rz
Rm9yQWxsSXRlcmF0aW9ucygKKyAgICAgICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9t
U2VlZEZsYWcoMSksIFJlcGVhdEZsYWcoMyldKSkKKworICAgICMgTWFrZSBzdXJlIHJ1bm5pbmcg
dGhlIHRlc3RzIHdpdGggcmFuZG9tIHNlZWQgMSBnZXRzIHRoZSBzYW1lCisgICAgIyBvcmRlciBh
cyBpbiBpdGVyYXRpb24gMSBhYm92ZS4KKyAgICBbdGVzdHNfd2l0aF9zZWVkMV0gPSBHZXRUZXN0
c0ZvckFsbEl0ZXJhdGlvbnMoCisgICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2Vl
ZEZsYWcoMSldKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHNfaW5faXRlcmF0aW9uMSwgdGVz
dHNfd2l0aF9zZWVkMSkKKworICAgICMgTWFrZSBzdXJlIHJ1bm5pbmcgdGhlIHRlc3RzIHdpdGgg
cmFuZG9tIHNlZWQgMiBnZXRzIHRoZSBzYW1lCisgICAgIyBvcmRlciBhcyBpbiBpdGVyYXRpb24g
MiBhYm92ZS4gIFN1Y2Nlc3MgbWVhbnMgdGhhdCBHb29nbGUgVGVzdAorICAgICMgY29ycmVjdGx5
IHJlc3RvcmVzIHRoZSB0ZXN0IG9yZGVyIGJlZm9yZSByZS1zaHVmZmxpbmcgYXQgdGhlCisgICAg
IyBiZWdpbm5pbmcgb2YgaXRlcmF0aW9uIDIuCisgICAgW3Rlc3RzX3dpdGhfc2VlZDJdID0gR2V0
VGVzdHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRv
bVNlZWRGbGFnKDIpXSkKKyAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzX2luX2l0ZXJhdGlvbjIs
IHRlc3RzX3dpdGhfc2VlZDIpCisKKyAgICAjIE1ha2Ugc3VyZSBydW5uaW5nIHRoZSB0ZXN0cyB3
aXRoIHJhbmRvbSBzZWVkIDMgZ2V0cyB0aGUgc2FtZQorICAgICMgb3JkZXIgYXMgaW4gaXRlcmF0
aW9uIDMgYWJvdmUuICBTdWNjZXNzIG1lYW5zIHRoYXQgR29vZ2xlIFRlc3QKKyAgICAjIGNvcnJl
Y3RseSByZXN0b3JlcyB0aGUgdGVzdCBvcmRlciBiZWZvcmUgcmUtc2h1ZmZsaW5nIGF0IHRoZQor
ICAgICMgYmVnaW5uaW5nIG9mIGl0ZXJhdGlvbiAzLgorICAgIFt0ZXN0c193aXRoX3NlZWQzXSA9
IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKKyAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBS
YW5kb21TZWVkRmxhZygzKV0pCisgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0c19pbl9pdGVyYXRp
b24zLCB0ZXN0c193aXRoX3NlZWQzKQorCisgIGRlZiB0ZXN0U2h1ZmZsZUdlbmVyYXRlc05ld09y
ZGVySW5FYWNoSXRlcmF0aW9uKHNlbGYpOgorICAgIFt0ZXN0c19pbl9pdGVyYXRpb24xLCB0ZXN0
c19pbl9pdGVyYXRpb24yLCB0ZXN0c19pbl9pdGVyYXRpb24zXSA9ICgKKyAgICAgICAgR2V0VGVz
dHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5k
b21TZWVkRmxhZygxKSwgUmVwZWF0RmxhZygzKV0pKQorCisgICAgc2VsZi5hc3NlcnRfKHRlc3Rz
X2luX2l0ZXJhdGlvbjEgIT0gdGVzdHNfaW5faXRlcmF0aW9uMiwKKyAgICAgICAgICAgICAgICAg
dGVzdHNfaW5faXRlcmF0aW9uMSkKKyAgICBzZWxmLmFzc2VydF8odGVzdHNfaW5faXRlcmF0aW9u
MSAhPSB0ZXN0c19pbl9pdGVyYXRpb24zLAorICAgICAgICAgICAgICAgICB0ZXN0c19pbl9pdGVy
YXRpb24xKQorICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0c19pbl9pdGVyYXRpb24yICE9IHRlc3RzX2lu
X2l0ZXJhdGlvbjMsCisgICAgICAgICAgICAgICAgIHRlc3RzX2luX2l0ZXJhdGlvbjIpCisKKyAg
ZGVmIHRlc3RTaHVmZmxlU2hhcmRlZFRlc3RzUHJlc2VydmVzUGFydGl0aW9uKHNlbGYpOgorICAg
ICMgSWYgd2UgcnVuIE0gdGVzdHMgb24gTiBzaGFyZHMsIHRoZSBzYW1lIE0gdGVzdHMgc2hvdWxk
IGJlIHJ1biBpbgorICAgICMgdG90YWwsIHJlZ2FyZGxlc3Mgb2YgdGhlIHJhbmRvbSBzZWVkcyB1
c2VkIGJ5IHRoZSBzaGFyZHMuCisgICAgW3Rlc3RzMV0gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlv
bnMoe1RPVEFMX1NIQVJEU19FTlZfVkFSOiAnMycsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcwJ30sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFn
KDEpXSkKKyAgICBbdGVzdHMyXSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7VE9UQUxfU0hB
UkRTX0VOVl9WQVI6ICczJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU0hBUkRfSU5ERVhfRU5WX1ZBUjogJzEnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMjApXSkKKyAgICBb
dGVzdHMzXSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7VE9UQUxfU0hBUkRTX0VOVl9WQVI6
ICczJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBUkRfSU5E
RVhfRU5WX1ZBUjogJzInfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMjUpXSkKKyAgICBzb3J0ZWRfc2hhcmRl
ZF90ZXN0cyA9IHRlc3RzMSArIHRlc3RzMiArIHRlc3RzMworICAgIHNvcnRlZF9zaGFyZGVkX3Rl
c3RzLnNvcnQoKQorICAgIHNvcnRlZF9hY3RpdmVfdGVzdHMgPSBbXQorICAgIHNvcnRlZF9hY3Rp
dmVfdGVzdHMuZXh0ZW5kKEFDVElWRV9URVNUUykKKyAgICBzb3J0ZWRfYWN0aXZlX3Rlc3RzLnNv
cnQoKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkX2FjdGl2ZV90ZXN0cywgc29ydGVkX3No
YXJkZWRfdGVzdHMpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3Rf
dXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3Qtc2h1ZmZsZS10ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmZTVmNmFiYTJhNWUwZmZj
YWI5MTVlNDYzOGQyM2Y1OGNmNDhmZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0Xy5jYwpAQCAtMCwwICsxLDEw
MiBAQAorLy8gQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8v
IFZlcmlmaWVzIHRoYXQgdGVzdCBzaHVmZmxpbmcgd29ya3MuCisKKyNpbmNsdWRlICJndGVzdC9n
dGVzdC5oIgorCituYW1lc3BhY2UgeworCit1c2luZyA6OnRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50
TGlzdGVuZXI7Cit1c2luZyA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0OwordXNpbmcgOjp0ZXN0
aW5nOjpNZXNzYWdlOwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0OwordXNpbmcgOjp0ZXN0aW5nOjpU
ZXN0RXZlbnRMaXN0ZW5lcnM7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3RJbmZvOwordXNpbmcgOjp0
ZXN0aW5nOjpVbml0VGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI7
CisKKy8vIFRoZSB0ZXN0IG1ldGhvZHMgYXJlIGVtcHR5LCBhcyB0aGUgc29sZSBwdXJwb3NlIG9m
IHRoaXMgcHJvZ3JhbSBpcworLy8gdG8gcHJpbnQgdGhlIHRlc3QgbmFtZXMgYmVmb3JlL2FmdGVy
IHNodWZmbGluZy4KKworY2xhc3MgQSA6IHB1YmxpYyBUZXN0IHt9OworVEVTVF9GKEEsIEEpIHt9
CitURVNUX0YoQSwgQikge30KKworVEVTVChBRGVhdGhUZXN0LCBBKSB7fQorVEVTVChBRGVhdGhU
ZXN0LCBCKSB7fQorVEVTVChBRGVhdGhUZXN0LCBDKSB7fQorCitURVNUKEIsIEEpIHt9CitURVNU
KEIsIEIpIHt9CitURVNUKEIsIEMpIHt9CitURVNUKEIsIERJU0FCTEVEX0QpIHt9CitURVNUKEIs
IERJU0FCTEVEX0UpIHt9CisKK1RFU1QoQkRlYXRoVGVzdCwgQSkge30KK1RFU1QoQkRlYXRoVGVz
dCwgQikge30KKworVEVTVChDLCBBKSB7fQorVEVTVChDLCBCKSB7fQorVEVTVChDLCBDKSB7fQor
VEVTVChDLCBESVNBQkxFRF9EKSB7fQorCitURVNUKENEZWF0aFRlc3QsIEEpIHt9CisKK1RFU1Qo
RElTQUJMRURfRCwgQSkge30KK1RFU1QoRElTQUJMRURfRCwgRElTQUJMRURfQikge30KKworLy8g
VGhpcyBwcmludGVyIHByaW50cyB0aGUgZnVsbCB0ZXN0IG5hbWVzIG9ubHksIHN0YXJ0aW5nIGVh
Y2ggdGVzdAorLy8gaXRlcmF0aW9uIHdpdGggYSAiLS0tLSIgbWFya2VyLgorY2xhc3MgVGVzdE5h
bWVQcmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgeworIHB1YmxpYzoKKyAg
dmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKiB1bml0
X3Rlc3QgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgLyogaXRl
cmF0aW9uICovKSB7CisgICAgcHJpbnRmKCItLS0tXG4iKTsKKyAgfQorCisgIHZpcnR1YWwgdm9p
ZCBPblRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CisgICAgcHJpbnRmKCIl
cy4lc1xuIiwgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOwor
ICB9Cit9OworCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiph
cmd2KSB7CisgIEluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICAvLyBSZXBsYWNlcyB0
aGUgZGVmYXVsdCBwcmludGVyIHdpdGggVGVzdE5hbWVQcmludGVyLCB3aGljaCBwcmludHMKKyAg
Ly8gdGhlIHRlc3QgbmFtZSBvbmx5LgorICBUZXN0RXZlbnRMaXN0ZW5lcnMmIGxpc3RlbmVycyA9
IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKTsKKyAgZGVsZXRlIGxpc3RlbmVy
cy5SZWxlYXNlKGxpc3RlbmVycy5kZWZhdWx0X3Jlc3VsdF9wcmludGVyKCkpOworICBsaXN0ZW5l
cnMuQXBwZW5kKG5ldyBUZXN0TmFtZVByaW50ZXIpOworCisgIHJldHVybiBSVU5fQUxMX1RFU1RT
KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtdGVzdC1wYXJ0LXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3QtdGVzdC1wYXJ0LXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2QyZDZmOWU4NThmNTI3OWJhNWEx
NmE1ZDFhNmUzN2FmZmU5MTBhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10ZXN0LXBhcnQtdGVzdC5jYwpAQCAtMCwwICsxLDIwNSBA
QAorLy8gQ29weXJpZ2h0IDIwMDggR29vZ2xlIEluYy4KKy8vIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8v
IGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC10ZXN0LXBhcnQuaCIKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisK
K3VzaW5nIHRlc3Rpbmc6Ok1lc3NhZ2U7Cit1c2luZyB0ZXN0aW5nOjpUZXN0OwordXNpbmcgdGVz
dGluZzo6VGVzdFBhcnRSZXN1bHQ7Cit1c2luZyB0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdEFycmF5
OworCituYW1lc3BhY2UgeworCisvLyBUZXN0cyB0aGUgVGVzdFBhcnRSZXN1bHQgY2xhc3MuCisK
Ky8vIFRoZSB0ZXN0IGZpeHR1cmUgZm9yIHRlc3RpbmcgVGVzdFBhcnRSZXN1bHQuCitjbGFzcyBU
ZXN0UGFydFJlc3VsdFRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgorICBUZXN0UGFy
dFJlc3VsdFRlc3QoKQorICAgICAgOiByMV8oVGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNzLCAiZm9v
L2Jhci5jYyIsIDEwLCAiU3VjY2VzcyEiKSwKKyAgICAgICAgcjJfKFRlc3RQYXJ0UmVzdWx0Ojpr
Tm9uRmF0YWxGYWlsdXJlLCAiZm9vL2Jhci5jYyIsIC0xLCAiRmFpbHVyZSEiKSwKKyAgICAgICAg
cjNfKFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLCBOVUxMLCAtMSwgIkZhaWx1cmUhIikg
e30KKworICBUZXN0UGFydFJlc3VsdCByMV8sIHIyXywgcjNfOworfTsKKworCitURVNUX0YoVGVz
dFBhcnRSZXN1bHRUZXN0LCBDb25zdHJ1Y3RvcldvcmtzKSB7CisgIE1lc3NhZ2UgbWVzc2FnZTsK
KyAgbWVzc2FnZSA8PCAic29tZXRoaW5nIGlzIHRlcnJpYmx5IHdyb25nIjsKKyAgbWVzc2FnZSA8
PCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4odGVzdGluZzo6aW50ZXJuYWw6OmtTdGFja1RyYWNl
TWFya2VyKTsKKyAgbWVzc2FnZSA8PCAic29tZSB1bmltcG9ydGFudCBzdGFjayB0cmFjZSI7CisK
KyAgY29uc3QgVGVzdFBhcnRSZXN1bHQgcmVzdWx0KFRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxG
YWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvbWVfZmlsZS5jYyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1lc3NhZ2UuR2V0U3RyaW5nKCkuY19zdHIoKSk7CisKKyAgRVhQRUNUX0VRKFRlc3RQ
YXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlLCByZXN1bHQudHlwZSgpKTsKKyAgRVhQRUNUX1NU
UkVRKCJzb21lX2ZpbGUuY2MiLCByZXN1bHQuZmlsZV9uYW1lKCkpOworICBFWFBFQ1RfRVEoNDIs
IHJlc3VsdC5saW5lX251bWJlcigpKTsKKyAgRVhQRUNUX1NUUkVRKG1lc3NhZ2UuR2V0U3RyaW5n
KCkuY19zdHIoKSwgcmVzdWx0Lm1lc3NhZ2UoKSk7CisgIEVYUEVDVF9TVFJFUSgic29tZXRoaW5n
IGlzIHRlcnJpYmx5IHdyb25nIiwgcmVzdWx0LnN1bW1hcnkoKSk7Cit9CisKK1RFU1RfRihUZXN0
UGFydFJlc3VsdFRlc3QsIFJlc3VsdEFjY2Vzc29yc1dvcmspIHsKKyAgY29uc3QgVGVzdFBhcnRS
ZXN1bHQgc3VjY2VzcyhUZXN0UGFydFJlc3VsdDo6a1N1Y2Nlc3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImZpbGUuY2MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIik7CisgIEVYUEVD
VF9UUlVFKHN1Y2Nlc3MucGFzc2VkKCkpOworICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcy5mYWlsZWQo
KSk7CisgIEVYUEVDVF9GQUxTRShzdWNjZXNzLm5vbmZhdGFsbHlfZmFpbGVkKCkpOworICBFWFBF
Q1RfRkFMU0Uoc3VjY2Vzcy5mYXRhbGx5X2ZhaWxlZCgpKTsKKworICBjb25zdCBUZXN0UGFydFJl
c3VsdCBub25mYXRhbF9mYWlsdXJlKFRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlLmNjIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSIpOworICBFWFBFQ1RfRkFMU0Uobm9uZmF0
YWxfZmFpbHVyZS5wYXNzZWQoKSk7CisgIEVYUEVDVF9UUlVFKG5vbmZhdGFsX2ZhaWx1cmUuZmFp
bGVkKCkpOworICBFWFBFQ1RfVFJVRShub25mYXRhbF9mYWlsdXJlLm5vbmZhdGFsbHlfZmFpbGVk
KCkpOworICBFWFBFQ1RfRkFMU0Uobm9uZmF0YWxfZmFpbHVyZS5mYXRhbGx5X2ZhaWxlZCgpKTsK
KworICBjb25zdCBUZXN0UGFydFJlc3VsdCBmYXRhbF9mYWlsdXJlKFRlc3RQYXJ0UmVzdWx0Ojpr
RmF0YWxGYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxl
LmNjIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSIpOworICBFWFBFQ1RfRkFMU0Uo
ZmF0YWxfZmFpbHVyZS5wYXNzZWQoKSk7CisgIEVYUEVDVF9UUlVFKGZhdGFsX2ZhaWx1cmUuZmFp
bGVkKCkpOworICBFWFBFQ1RfRkFMU0UoZmF0YWxfZmFpbHVyZS5ub25mYXRhbGx5X2ZhaWxlZCgp
KTsKKyAgRVhQRUNUX1RSVUUoZmF0YWxfZmFpbHVyZS5mYXRhbGx5X2ZhaWxlZCgpKTsKK30KKwor
Ly8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6OnR5cGUoKS4KK1RFU1RfRihUZXN0UGFydFJlc3VsdFRl
c3QsIHR5cGUpIHsKKyAgRVhQRUNUX0VRKFRlc3RQYXJ0UmVzdWx0OjprU3VjY2VzcywgcjFfLnR5
cGUoKSk7CisgIEVYUEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwgcjJf
LnR5cGUoKSk7CisgIEVYUEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwgcjNf
LnR5cGUoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpmaWxlX25hbWUoKS4KK1RF
U1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIGZpbGVfbmFtZSkgeworICBFWFBFQ1RfU1RSRVEoImZv
by9iYXIuY2MiLCByMV8uZmlsZV9uYW1lKCkpOworICBFWFBFQ1RfU1RSRVEoTlVMTCwgcjNfLmZp
bGVfbmFtZSgpKTsKK30KKworLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6OmxpbmVfbnVtYmVyKCku
CitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBsaW5lX251bWJlcikgeworICBFWFBFQ1RfRVEo
MTAsIHIxXy5saW5lX251bWJlcigpKTsKKyAgRVhQRUNUX0VRKC0xLCByMl8ubGluZV9udW1iZXIo
KSk7Cit9CisKKy8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjptZXNzYWdlKCkuCitURVNUX0YoVGVz
dFBhcnRSZXN1bHRUZXN0LCBtZXNzYWdlKSB7CisgIEVYUEVDVF9TVFJFUSgiU3VjY2VzcyEiLCBy
MV8ubWVzc2FnZSgpKTsKK30KKworLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6OnBhc3NlZCgpLgor
VEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgUGFzc2VkKSB7CisgIEVYUEVDVF9UUlVFKHIxXy5w
YXNzZWQoKSk7CisgIEVYUEVDVF9GQUxTRShyMl8ucGFzc2VkKCkpOworICBFWFBFQ1RfRkFMU0Uo
cjNfLnBhc3NlZCgpKTsKK30KKworLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6OmZhaWxlZCgpLgor
VEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgRmFpbGVkKSB7CisgIEVYUEVDVF9GQUxTRShyMV8u
ZmFpbGVkKCkpOworICBFWFBFQ1RfVFJVRShyMl8uZmFpbGVkKCkpOworICBFWFBFQ1RfVFJVRShy
M18uZmFpbGVkKCkpOworfQorCisvLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6ZmF0YWxseV9mYWls
ZWQoKS4KK1RFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIEZhdGFsbHlGYWlsZWQpIHsKKyAgRVhQ
RUNUX0ZBTFNFKHIxXy5mYXRhbGx5X2ZhaWxlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHIyXy5mYXRh
bGx5X2ZhaWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUocjNfLmZhdGFsbHlfZmFpbGVkKCkpOworfQor
CisvLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6bm9uZmF0YWxseV9mYWlsZWQoKS4KK1RFU1RfRihU
ZXN0UGFydFJlc3VsdFRlc3QsIE5vbmZhdGFsbHlGYWlsZWQpIHsKKyAgRVhQRUNUX0ZBTFNFKHIx
Xy5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUocjJfLm5vbmZhdGFsbHlfZmFp
bGVkKCkpOworICBFWFBFQ1RfRkFMU0UocjNfLm5vbmZhdGFsbHlfZmFpbGVkKCkpOworfQorCisv
LyBUZXN0cyB0aGUgVGVzdFBhcnRSZXN1bHRBcnJheSBjbGFzcy4KKworY2xhc3MgVGVzdFBhcnRS
ZXN1bHRBcnJheVRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgorICBUZXN0UGFydFJl
c3VsdEFycmF5VGVzdCgpCisgICAgICA6IHIxXyhUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFp
bHVyZSwgImZvby9iYXIuY2MiLCAtMSwgIkZhaWx1cmUgMSIpLAorICAgICAgICByMl8oVGVzdFBh
cnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsICJmb28vYmFyLmNjIiwgLTEsICJGYWlsdXJlIDIiKSB7
fQorCisgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IHIxXywgcjJfOworfTsKKworLy8gVGVzdHMgdGhh
dCBUZXN0UGFydFJlc3VsdEFycmF5IGluaXRpYWxseSBoYXMgc2l6ZSAwLgorVEVTVF9GKFRlc3RQ
YXJ0UmVzdWx0QXJyYXlUZXN0LCBJbml0aWFsU2l6ZUlzWmVybykgeworICBUZXN0UGFydFJlc3Vs
dEFycmF5IHJlc3VsdHM7CisgIEVYUEVDVF9FUSgwLCByZXN1bHRzLnNpemUoKSk7Cit9CisKKy8v
IFRlc3RzIHRoYXQgVGVzdFBhcnRSZXN1bHRBcnJheSBjb250YWlucyB0aGUgZ2l2ZW4gVGVzdFBh
cnRSZXN1bHQKKy8vIGFmdGVyIG9uZSBBcHBlbmQoKSBvcGVyYXRpb24uCitURVNUX0YoVGVzdFBh
cnRSZXN1bHRBcnJheVRlc3QsIENvbnRhaW5zR2l2ZW5SZXN1bHRBZnRlckFwcGVuZCkgeworICBU
ZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7CisgIHJlc3VsdHMuQXBwZW5kKHIxXyk7CisgIEVY
UEVDVF9FUSgxLCByZXN1bHRzLnNpemUoKSk7CisgIEVYUEVDVF9TVFJFUSgiRmFpbHVyZSAxIiwg
cmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgwKS5tZXNzYWdlKCkpOworfQorCisvLyBUZXN0cyB0
aGF0IFRlc3RQYXJ0UmVzdWx0QXJyYXkgY29udGFpbnMgdGhlIGdpdmVuIFRlc3RQYXJ0UmVzdWx0
cworLy8gYWZ0ZXIgdHdvIEFwcGVuZCgpIG9wZXJhdGlvbnMuCitURVNUX0YoVGVzdFBhcnRSZXN1
bHRBcnJheVRlc3QsIENvbnRhaW5zR2l2ZW5SZXN1bHRzQWZ0ZXJUd29BcHBlbmRzKSB7CisgIFRl
c3RQYXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsKKyAgcmVzdWx0cy5BcHBlbmQocjFfKTsKKyAgcmVz
dWx0cy5BcHBlbmQocjJfKTsKKyAgRVhQRUNUX0VRKDIsIHJlc3VsdHMuc2l6ZSgpKTsKKyAgRVhQ
RUNUX1NUUkVRKCJGYWlsdXJlIDEiLCByZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDApLm1lc3Nh
Z2UoKSk7CisgIEVYUEVDVF9TVFJFUSgiRmFpbHVyZSAyIiwgcmVzdWx0cy5HZXRUZXN0UGFydFJl
c3VsdCgxKS5tZXNzYWdlKCkpOworfQorCit0eXBlZGVmIFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0
IFRlc3RQYXJ0UmVzdWx0QXJyYXlEZWF0aFRlc3Q7CisKKy8vIFRlc3RzIHRoYXQgdGhlIHByb2dy
YW0gZGllcyB3aGVuIEdldFRlc3RQYXJ0UmVzdWx0KCkgaXMgY2FsbGVkIHdpdGgKKy8vIGFuIGlu
dmFsaWQgaW5kZXguCitURVNUX0YoVGVzdFBhcnRSZXN1bHRBcnJheURlYXRoVGVzdCwgRGllc1do
ZW5JbmRleElzT3V0T2ZCb3VuZCkgeworICBUZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7Cisg
IHJlc3VsdHMuQXBwZW5kKHIxXyk7CisKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChyZXN1
bHRzLkdldFRlc3RQYXJ0UmVzdWx0KC0xKSwgIiIpOworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9S
VEVEKHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMSksICIiKTsKK30KKworLy8gRklYTUU6IEFk
ZCBhIHRlc3QgZm9yIHRoZSBjbGFzcyBIYXNOZXdGYXRhbEZhaWx1cmVIZWxwZXIuCisKK30gIC8v
IG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LXRlc3QyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2ds
ZXRlc3QtdGVzdDJfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMmY5OGRjN2QxYzNlOTA5NzU4YmE2MDc3
MmU5Nzc0OThjZTgxZmYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LXRlc3QyX3Rlc3QuY2MKQEAgLTAsMCArMSw2MSBAQAorLy8gQ29w
eXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmli
dXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gVGVzdHMgZm9y
IEdvb2dsZSBUZXN0IGl0c2VsZi4gIFRoaXMgdmVyaWZpZXMgdGhhdCB0aGUgYmFzaWMgY29uc3Ry
dWN0cyBvZgorLy8gR29vZ2xlIFRlc3Qgd29yay4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CisjaW5jbHVkZSAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuaCIKKwordXNpbmcgOjp0ZXN0
aW5nOjpWYWx1ZXM7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVyYXRvcjsK
KworLy8gVGVzdHMgdGhhdCBnZW5lcmF0b3JzIGRlZmluZWQgaW4gYSBkaWZmZXJlbnQgdHJhbnNs
YXRpb24gdW5pdAorLy8gYXJlIGZ1bmN0aW9uYWwuIFRoZSB0ZXN0IHVzaW5nIGV4dGVybl9nZW5f
MiBpcyBkZWZpbmVkCisvLyBpbiBnb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYy4KK1BhcmFt
R2VuZXJhdG9yPGludD4gZXh0ZXJuX2dlbl8yID0gVmFsdWVzKDMzKTsKKworLy8gVGVzdHMgdGhh
dCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBkZWZpbmVkIGluIG9uZSB0cmFuc2xh
dGlvbiB1bml0CisvLyBhbmQgaW5zdGFudGlhdGVkIGluIGFub3RoZXIuIFRoZSB0ZXN0IGlzIGRl
ZmluZWQgaW4KKy8vIGdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmNjIGFuZCBFeHRlcm5hbElu
c3RhbnRpYXRpb25UZXN0IGZpeHR1cmUgY2xhc3MgaXMKKy8vIGRlZmluZWQgaW4gZ3Rlc3QtcGFy
YW0tdGVzdF90ZXN0LmguCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChNdWx0aXBsZXNPZjMzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbHVlcygzMywgNjYpKTsKKworLy8gVGVzdHMgdGhhdCBhIHBh
cmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBpbnN0YW50aWF0ZWQKKy8vIGluIG11bHRpcGxl
IHRyYW5zbGF0aW9uIHVuaXRzLiBBbm90aGVyIGluc3RhbnRpYXRpb24gaXMgZGVmaW5lZAorLy8g
aW4gZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MgYW5kCisvLyBJbnN0YW50aWF0aW9uSW5N
dWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QgZml4dHVyZSBpcyBkZWZpbmVkIGluCisvLyBndGVz
dC1wYXJhbS10ZXN0X3Rlc3QuaAorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2UyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9u
VW5pdHNUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDQyKjMsIDQyKjQsIDQy
KjUpKTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3
NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDZjYjlm
NmRhMzFkZWFkZmQ3ZWVmZDIzNWU5YjM3ZGYyOWZiM2JhZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRl
c3QucHkKQEAgLTAsMCArMSwxNjkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5
cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKyIiIlRlc3RzIEdvb2dsZSBUZXN0J3MgdGhyb3ctb24tZmFpbHVyZSBtb2Rl
IHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4KKworVGhpcyBzY3JpcHQgaW52b2tlcyBnb29nbGV0
ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8gKGEgcHJvZ3JhbSB3cml0dGVuIHdpdGgKK0dvb2ds
ZSBUZXN0KSB3aXRoIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgYW5kIGNvbW1hbmQgbGluZSBmbGFn
cy4KKyIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKKworIyBDb25z
dGFudHMuCisKKyMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciBlbmFibGluZy9kaXNhYmxpbmcg
dGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZS4KK1RIUk9XX09OX0ZBSUxVUkUgPSAnZ3Rlc3RfdGhy
b3dfb25fZmFpbHVyZScKKworIyBQYXRoIHRvIHRoZSBnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1
cmUtdGVzdF8gcHJvZ3JhbSwgY29tcGlsZWQgd2l0aAorIyBleGNlcHRpb25zIGRpc2FibGVkLgor
RVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKKyAgICAn
Z29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfJykKKworCisjIFV0aWxpdGllcy4KKwor
CitkZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToKKyAgIiIiU2V0cyBhbiBlbnZpcm9ubWVu
dCB2YXJpYWJsZSB0byBhIGdpdmVuIHZhbHVlOyB1bnNldHMgaXQgd2hlbiB0aGUKKyAgZ2l2ZW4g
dmFsdWUgaXMgTm9uZS4KKyAgIiIiCisKKyAgZW52X3ZhciA9IGVudl92YXIudXBwZXIoKQorICBp
ZiB2YWx1ZSBpcyBub3QgTm9uZToKKyAgICBvcy5lbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKKyAg
ZWxpZiBlbnZfdmFyIGluIG9zLmVudmlyb246CisgICAgZGVsIG9zLmVudmlyb25bZW52X3Zhcl0K
KworCitkZWYgUnVuKGNvbW1hbmQpOgorICAiIiJSdW5zIGEgY29tbWFuZDsgcmV0dXJucyBUcnVl
L0ZhbHNlIGlmIGl0cyBleGl0IGNvZGUgaXMvaXNuJ3QgMC4iIiIKKworICBwcmludCAnUnVubmlu
ZyAiJXMiLiAuIC4nICUgJyAnLmpvaW4oY29tbWFuZCkKKyAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
U3VicHJvY2Vzcyhjb21tYW5kKQorICByZXR1cm4gcC5leGl0ZWQgYW5kIHAuZXhpdF9jb2RlID09
IDAKKworCisjIFRoZSB0ZXN0cy4gIEZJWE1FOiByZWZhY3RvciB0aGUgY2xhc3MgdG8gc2hhcmUg
Y29tbW9uCisjIGxvZ2ljIHdpdGggY29kZSBpbiBnb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUt
dW5pdHRlc3QucHkuCitjbGFzcyBUaHJvd09uRmFpbHVyZVRlc3QoZ3Rlc3RfdGVzdF91dGlscy5U
ZXN0Q2FzZSk6CisgICIiIlRlc3RzIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUuIiIiCisKKyAg
ZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBlbnZfdmFyX3ZhbHVlLCBmbGFnX3ZhbHVlLCBzaG91bGRf
ZmFpbCk6CisgICAgIiIiUnVucyBnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8gYW5k
IHZlcmlmaWVzIHRoYXQgaXQgZG9lcworICAgIChvciBkb2VzIG5vdCkgZXhpdCB3aXRoIGEgbm9u
LXplcm8gY29kZS4KKworICAgIEFyZ3M6CisgICAgICBlbnZfdmFyX3ZhbHVlOiAgICB2YWx1ZSBv
ZiB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGU7IE5vbmUgaWYgdGhlIHZhcmlhYmxlIHNob3VsZCBiZSB1bnNldC4K
KyAgICAgIGZsYWdfdmFsdWU6ICAgICAgIHZhbHVlIG9mIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2Zh
aWx1cmUgZmxhZzsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUgaWYgdGhlIGZsYWcgc2hv
dWxkIG5vdCBiZSBwcmVzZW50LgorICAgICAgc2hvdWxkX2ZhaWw6ICAgICAgVHJ1ZSBpZmYgdGhl
IHByb2dyYW0gaXMgZXhwZWN0ZWQgdG8gZmFpbC4KKyAgICAiIiIKKworICAgIFNldEVudlZhcihU
SFJPV19PTl9GQUlMVVJFLCBlbnZfdmFyX3ZhbHVlKQorCisgICAgaWYgZW52X3Zhcl92YWx1ZSBp
cyBOb25lOgorICAgICAgZW52X3Zhcl92YWx1ZV9tc2cgPSAnIGlzIG5vdCBzZXQnCisgICAgZWxz
ZToKKyAgICAgIGVudl92YXJfdmFsdWVfbXNnID0gJz0nICsgZW52X3Zhcl92YWx1ZQorCisgICAg
aWYgZmxhZ192YWx1ZSBpcyBOb25lOgorICAgICAgZmxhZyA9ICcnCisgICAgZWxpZiBmbGFnX3Zh
bHVlID09ICcwJzoKKyAgICAgIGZsYWcgPSAnLS0lcz0wJyAlIFRIUk9XX09OX0ZBSUxVUkUKKyAg
ICBlbHNlOgorICAgICAgZmxhZyA9ICctLSVzJyAlIFRIUk9XX09OX0ZBSUxVUkUKKworICAgIGNv
bW1hbmQgPSBbRVhFX1BBVEhdCisgICAgaWYgZmxhZzoKKyAgICAgIGNvbW1hbmQuYXBwZW5kKGZs
YWcpCisKKyAgICBpZiBzaG91bGRfZmFpbDoKKyAgICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxk
JworICAgIGVsc2U6CisgICAgICBzaG91bGRfb3Jfbm90ID0gJ3Nob3VsZCBub3QnCisKKyAgICBm
YWlsZWQgPSBub3QgUnVuKGNvbW1hbmQpCisKKyAgICBTZXRFbnZWYXIoVEhST1dfT05fRkFJTFVS
RSwgTm9uZSkKKworICAgIG1zZyA9ICgnd2hlbiAlcyVzLCBhbiBhc3NlcnRpb24gZmFpbHVyZSBp
biAiJXMiICVzIGNhdXNlIGEgbm9uLXplcm8gJworICAgICAgICAgICAnZXhpdCBjb2RlLicgJQor
ICAgICAgICAgICAoVEhST1dfT05fRkFJTFVSRSwgZW52X3Zhcl92YWx1ZV9tc2csICcgJy5qb2lu
KGNvbW1hbmQpLAorICAgICAgICAgICAgc2hvdWxkX29yX25vdCkpCisgICAgc2VsZi5hc3NlcnRf
KGZhaWxlZCA9PSBzaG91bGRfZmFpbCwgbXNnKQorCisgIGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9y
KHNlbGYpOgorICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBtb2RlLiIi
IgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLCBmbGFnX3ZhbHVl
PU5vbmUsIHNob3VsZF9mYWlsPUZhbHNlKQorCisgIGRlZiB0ZXN0VGhyb3dPbkZhaWx1cmVFbnZW
YXIoc2VsZik6CisgICAgIiIiVGVzdHMgdXNpbmcgdGhlIEdURVNUX1RIUk9XX09OX0ZBSUxVUkUg
ZW52aXJvbm1lbnQgdmFyaWFibGUuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFy
X3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCisgICAg
ICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9RmFsc2UpCisgICAgc2VsZi5SdW5BbmRWZXJp
ZnkoZW52X3Zhcl92YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT1O
b25lLAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPVRydWUpCisKKyAgZGVmIHRl
c3RUaHJvd09uRmFpbHVyZUZsYWcoc2VsZik6CisgICAgIiIiVGVzdHMgdXNpbmcgdGhlIC0tZ3Rl
c3RfdGhyb3dfb25fZmFpbHVyZSBmbGFnLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52
X3Zhcl92YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAnLAor
ICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPUZhbHNlKQorICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3Zh
bHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1UcnVlKQorCisgIGRl
ZiB0ZXN0VGhyb3dPbkZhaWx1cmVGbGFnT3ZlcnJpZGVzRW52VmFyKHNlbGYpOgorICAgICIiIlRl
c3RzIHRoYXQgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlIG92ZXJyaWRlcyBHVEVTVF9USFJPV19P
Tl9GQUlMVVJFLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcs
CisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAg
ICAgICAgc2hvdWxkX2ZhaWw9RmFsc2UpCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92
YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCisgICAgICAg
ICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9VHJ1ZSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShl
bnZfdmFyX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywK
KyAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1GYWxzZSkKKyAgICBzZWxmLlJ1bkFu
ZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3Zh
bHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1UcnVlKQorCisKK2lm
IF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdGhyb3ctb24t
ZmFpbHVyZS10ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVz
dC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5YTJjNjQ0OGEyOWNhMjk2
NDlhMTI0ODA1OWE5ODVhNTFhZjg2MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0Xy5jYwpAQCAt
MCwwICsxLDcxIEBACisvLyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKworLy8gVGVzdHMgR29vZ2xlIFRlc3QncyB0aHJvdy1vbi1mYWlsdXJlIG1vZGUgd2l0aCBl
eGNlcHRpb25zIGRpc2FibGVkLgorLy8KKy8vIFRoaXMgcHJvZ3JhbSBtdXN0IGJlIGNvbXBpbGVk
IHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4gIEl0IHdpbGwgYmUKKy8vIGludm9rZWQgYnkgZ29v
Z2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3QucHksIGFuZCBpcyBleHBlY3RlZCB0byBleGl0
CisvLyB3aXRoIG5vbi16ZXJvIGluIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUgb3IgMCBvdGhl
cndpc2UuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisjaW5jbHVkZSA8c3RkaW8uaD4g
ICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGZmbHVzaCwgZnByaW50ZiwgTlVMTCwgZXRjLgor
I2luY2x1ZGUgPHN0ZGxpYi5oPiAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBleGl0CisjaW5j
bHVkZSA8ZXhjZXB0aW9uPiAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHNldF90ZXJtaW5hdGUK
KworLy8gVGhpcyB0ZXJtaW5hdGUgaGFuZGxlciBhYm9ydHMgdGhlIHByb2dyYW0gdXNpbmcgZXhp
dCgpIHJhdGhlciB0aGFuIGFib3J0KCkuCisvLyBUaGlzIGF2b2lkcyBzaG93aW5nIHBvcC11cHMg
b24gV2luZG93cyBzeXN0ZW1zIGFuZCBjb3JlIGR1bXBzIG9uIFVuaXgtbGlrZQorLy8gb25lcy4K
K3ZvaWQgVGVybWluYXRlSGFuZGxlcigpIHsKKyAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgIlVu
aGFuZGxlZCBDKysgZXhjZXB0aW9uIHRlcm1pbmF0aW5nIHRoZSBwcm9ncmFtLiIpOworICBmZmx1
c2goTlVMTCk7CisgIGV4aXQoMSk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJn
dikgeworI2lmIEdURVNUX0hBU19FWENFUFRJT05TCisgIHN0ZDo6c2V0X3Rlcm1pbmF0ZSgmVGVy
bWluYXRlSGFuZGxlcik7CisjZW5kaWYKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2Ms
IGFyZ3YpOworCisgIC8vIFdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgcGVvcGxlIGNhbiB1c2UgR29v
Z2xlIFRlc3QgYXNzZXJ0aW9ucyBpbgorICAvLyBvdGhlciB0ZXN0aW5nIGZyYW1ld29ya3MsIGFz
IGxvbmcgYXMgdGhleSBpbml0aWFsaXplIEdvb2dsZSBUZXN0CisgIC8vIHByb3Blcmx5IGFuZCBz
ZXQgdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZS4gIFRoZXJlZm9yZSwgd2UgZG9uJ3QKKyAgLy8g
dXNlIEdvb2dsZSBUZXN0J3MgY29uc3RydWN0cyBmb3IgZGVmaW5pbmcgYW5kIHJ1bm5pbmcgdGVz
dHMKKyAgLy8gKGUuZy4gVEVTVCBhbmQgUlVOX0FMTF9URVNUUykgaGVyZS4KKworICAvLyBJbiB0
aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZCwgdGhpcwor
ICAvLyBhc3NlcnRpb24gd2lsbCBjYXVzZSB0aGUgcHJvZ3JhbSB0byBleGl0IHdpdGggYSBub24t
emVybyBjb2RlLgorICBFWFBFQ1RfRVEoMiwgMyk7CisKKyAgLy8gV2hlbiBub3QgaW4gdGhlIHRo
cm93LW9uLWZhaWx1cmUgbW9kZSwgdGhlIGNvbnRyb2wgd2lsbCByZWFjaAorICAvLyBoZXJlLgor
ICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z29vZ2xldGVzdC10dXBsZS10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
b29nbGV0ZXN0LXR1cGxlLXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ4MmMxNjBmMTc3ZDZmM2JhZGQ3
NzA2NGFiOGM3ZTk4YmQyOTc2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10dXBsZS10ZXN0LmNjCkBAIC0wLDAgKzEsMzE5IEBACisv
LyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRp
c3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
Ky8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworI2luY2x1ZGUg
Imd0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgiCisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3BhY2UgeworCit1c2luZyA6OnN0ZDo6dHIxOjpn
ZXQ7Cit1c2luZyA6OnN0ZDo6dHIxOjptYWtlX3R1cGxlOwordXNpbmcgOjpzdGQ6OnRyMTo6dHVw
bGU7Cit1c2luZyA6OnN0ZDo6dHIxOjp0dXBsZV9lbGVtZW50OwordXNpbmcgOjpzdGQ6OnRyMTo6
dHVwbGVfc2l6ZTsKK3VzaW5nIDo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxOworCisvLyBU
ZXN0cyB0aGF0IHR1cGxlX2VsZW1lbnQ8SywgdHVwbGU8VDAsIFQxLCAuLi4sIFROPiA+Ojp0eXBl
IHJldHVybnMgVEsuCitURVNUKHR1cGxlX2VsZW1lbnRfVGVzdCwgUmV0dXJuc0VsZW1lbnRUeXBl
KSB7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIHR1cGxlX2VsZW1lbnQ8MCwgdHVwbGU8aW50
LCBjaGFyPiA+Ojp0eXBlPigpOworICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50JiwgdHVwbGVfZWxl
bWVudDwxLCB0dXBsZTxkb3VibGUsIGludCY+ID46OnR5cGU+KCk7CisgIFN0YXRpY0Fzc2VydFR5
cGVFcTxib29sLCB0dXBsZV9lbGVtZW50PDIsIHR1cGxlPGRvdWJsZSwgaW50LCBib29sPiA+Ojp0
eXBlPigpOworfQorCisvLyBUZXN0cyB0aGF0IHR1cGxlX3NpemU8VD46OnZhbHVlIGdpdmVzIHRo
ZSBudW1iZXIgb2YgZmllbGRzIGluIHR1cGxlCisvLyB0eXBlIFQuCitURVNUKHR1cGxlX3NpemVf
VGVzdCwgUmV0dXJuc051bWJlck9mRmllbGRzKSB7CisgIEVYUEVDVF9FUSgwLCArdHVwbGVfc2l6
ZTx0dXBsZTw+ID46OnZhbHVlKTsKKyAgRVhQRUNUX0VRKDEsICt0dXBsZV9zaXplPHR1cGxlPHZv
aWQqPiA+Ojp2YWx1ZSk7CisgIEVYUEVDVF9FUSgxLCArdHVwbGVfc2l6ZTx0dXBsZTxjaGFyPiA+
Ojp2YWx1ZSk7CisgIEVYUEVDVF9FUSgxLCArKHR1cGxlX3NpemU8dHVwbGU8dHVwbGU8aW50LCBk
b3VibGU+ID4gPjo6dmFsdWUpKTsKKyAgRVhQRUNUX0VRKDIsICsodHVwbGVfc2l6ZTx0dXBsZTxp
bnQmLCBjb25zdCBjaGFyPiA+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRVEoMywgKyh0dXBsZV9zaXpl
PHR1cGxlPGNoYXIqLCB2b2lkLCBjb25zdCBib29sJj4gPjo6dmFsdWUpKTsKK30KKworLy8gVGVz
dHMgY29tcGFyaW5nIGEgdHVwbGUgd2l0aCBpdHNlbGYuCitURVNUKENvbXBhcmlzb25UZXN0LCBD
b21wYXJlc1dpdGhTZWxmKSB7CisgIGNvbnN0IHR1cGxlPGludCwgY2hhciwgYm9vbD4gYSg1LCAn
YScsIGZhbHNlKTsKKworICBFWFBFQ1RfVFJVRShhID09IGEpOworICBFWFBFQ1RfRkFMU0UoYSAh
PSBhKTsKK30KKworLy8gVGVzdHMgY29tcGFyaW5nIHR3byB0dXBsZXMgd2l0aCB0aGUgc2FtZSB2
YWx1ZS4KK1RFU1QoQ29tcGFyaXNvblRlc3QsIENvbXBhcmVzRXF1YWxUdXBsZXMpIHsKKyAgY29u
c3QgdHVwbGU8aW50LCBib29sPiBhKDUsIHRydWUpLCBiKDUsIHRydWUpOworCisgIEVYUEVDVF9U
UlVFKGEgPT0gYik7CisgIEVYUEVDVF9GQUxTRShhICE9IGIpOworfQorCisvLyBUZXN0cyBjb21w
YXJpbmcgdHdvIGRpZmZlcmVudCB0dXBsZXMgdGhhdCBoYXZlIG5vIHJlZmVyZW5jZSBmaWVsZHMu
CitURVNUKENvbXBhcmlzb25UZXN0LCBDb21wYXJlc1VuZXF1YWxUdXBsZXNXaXRob3V0UmVmZXJl
bmNlRmllbGRzKSB7CisgIHR5cGVkZWYgdHVwbGU8Y29uc3QgaW50LCBjaGFyPiBGb29UdXBsZTsK
KworICBjb25zdCBGb29UdXBsZSBhKDAsICd4Jyk7CisgIGNvbnN0IEZvb1R1cGxlIGIoMSwgJ2En
KTsKKworICBFWFBFQ1RfVFJVRShhICE9IGIpOworICBFWFBFQ1RfRkFMU0UoYSA9PSBiKTsKKwor
ICBjb25zdCBGb29UdXBsZSBjKDEsICdiJyk7CisKKyAgRVhQRUNUX1RSVUUoYiAhPSBjKTsKKyAg
RVhQRUNUX0ZBTFNFKGIgPT0gYyk7Cit9CisKKy8vIFRlc3RzIGNvbXBhcmluZyB0d28gZGlmZmVy
ZW50IHR1cGxlcyB0aGF0IGhhdmUgcmVmZXJlbmNlIGZpZWxkcy4KK1RFU1QoQ29tcGFyaXNvblRl
c3QsIENvbXBhcmVzVW5lcXVhbFR1cGxlc1dpdGhSZWZlcmVuY2VGaWVsZHMpIHsKKyAgdHlwZWRl
ZiB0dXBsZTxpbnQmLCBjb25zdCBjaGFyJj4gRm9vVHVwbGU7CisKKyAgaW50IGkgPSA1OworICBj
b25zdCBjaGFyIGNoID0gJ2EnOworICBjb25zdCBGb29UdXBsZSBhKGksIGNoKTsKKworICBpbnQg
aiA9IDY7CisgIGNvbnN0IEZvb1R1cGxlIGIoaiwgY2gpOworCisgIEVYUEVDVF9UUlVFKGEgIT0g
Yik7CisgIEVYUEVDVF9GQUxTRShhID09IGIpOworCisgIGogPSA1OworICBjb25zdCBjaGFyIGNo
MiA9ICdiJzsKKyAgY29uc3QgRm9vVHVwbGUgYyhqLCBjaDIpOworCisgIEVYUEVDVF9UUlVFKGIg
IT0gYyk7CisgIEVYUEVDVF9GQUxTRShiID09IGMpOworfQorCisvLyBUZXN0cyB0aGF0IGEgdHVw
bGUgZmllbGQgd2l0aCBhIHJlZmVyZW5jZSB0eXBlIGlzIGFuIGFsaWFzIG9mIHRoZQorLy8gdmFy
aWFibGUgaXQncyBzdXBwb3NlZCB0byByZWZlcmVuY2UuCitURVNUKFJlZmVyZW5jZUZpZWxkVGVz
dCwgSXNBbGlhc09mUmVmZXJlbmNlZFZhcmlhYmxlKSB7CisgIGludCBuID0gMDsKKyAgdHVwbGU8
Ym9vbCwgaW50Jj4gdCh0cnVlLCBuKTsKKworICBuID0gMTsKKyAgRVhQRUNUX0VRKG4sIGdldDwx
Pih0KSkKKyAgICAgIDw8ICJDaGFuZ2luZyBhIHVuZGVybHlpbmcgdmFyaWFibGUgc2hvdWxkIHVw
ZGF0ZSB0aGUgcmVmZXJlbmNlIGZpZWxkLiI7CisKKyAgLy8gTWFrZXMgc3VyZSB0aGF0IHRoZSBp
bXBsZW1lbnRhdGlvbiBkb2Vzbid0IGRvIGFueXRoaW5nIGZ1bm55IHdpdGgKKyAgLy8gdGhlICYg
b3BlcmF0b3IgZm9yIHRoZSByZXR1cm4gdHlwZSBvZiBnZXQ8PigpLgorICBFWFBFQ1RfRVEoJm4s
ICYoZ2V0PDE+KHQpKSkKKyAgICAgIDw8ICJUaGUgYWRkcmVzcyBvZiBhIHJlZmVyZW5jZSBmaWVs
ZCBzaG91bGQgZXF1YWwgdGhlIGFkZHJlc3Mgb2YgIgorICAgICAgPDwgInRoZSB1bmRlcmx5aW5n
IHZhcmlhYmxlLiI7CisKKyAgZ2V0PDE+KHQpID0gMjsKKyAgRVhQRUNUX0VRKDIsIG4pCisgICAg
ICA8PCAiQ2hhbmdpbmcgYSByZWZlcmVuY2UgZmllbGQgc2hvdWxkIHVwZGF0ZSB0aGUgdW5kZXJs
eWluZyB2YXJpYWJsZS4iOworfQorCisvLyBUZXN0cyB0aGF0IHR1cGxlJ3MgZGVmYXVsdCBjb25z
dHJ1Y3RvciBkZWZhdWx0IGluaXRpYWxpemVzIGVhY2ggZmllbGQuCisvLyBUaGlzIHRlc3QgbmVl
ZHMgdG8gY29tcGlsZSB3aXRob3V0IGdlbmVyYXRpbmcgd2FybmluZ3MuCitURVNUKFR1cGxlQ29u
c3RydWN0b3JUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3JEZWZhdWx0SW5pdGlhbGl6ZXNFYWNoRmll
bGQpIHsKKyAgLy8gVGhlIFRSMSByZXBvcnQgcmVxdWlyZXMgdGhhdCB0dXBsZSdzIGRlZmF1bHQg
Y29uc3RydWN0b3IgZGVmYXVsdAorICAvLyBpbml0aWFsaXplcyBlYWNoIGZpZWxkLCBldmVuIGlm
IGl0J3MgYSBwcmltaXRpdmUgdHlwZS4gIElmIHRoZQorICAvLyBpbXBsZW1lbnRhdGlvbiBmb3Jn
ZXRzIHRvIGRvIHRoaXMsIHRoaXMgdGVzdCB3aWxsIGNhdGNoIGl0IGJ5CisgIC8vIGdlbmVyYXRp
bmcgd2FybmluZ3MgYWJvdXQgdXNpbmcgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgKGFzc3VtaW5n
CisgIC8vIGEgZGVjZW50IGNvbXBpbGVyKS4KKworICB0dXBsZTw+IGVtcHR5OworCisgIHR1cGxl
PGludD4gYTEsIGIxOworICBiMSA9IGExOworICBFWFBFQ1RfRVEoMCwgZ2V0PDA+KGIxKSk7CisK
KyAgdHVwbGU8aW50LCBkb3VibGU+IGEyLCBiMjsKKyAgYjIgPSBhMjsKKyAgRVhQRUNUX0VRKDAs
IGdldDwwPihiMikpOworICBFWFBFQ1RfRVEoMC4wLCBnZXQ8MT4oYjIpKTsKKworICB0dXBsZTxk
b3VibGUsIGNoYXIsIGJvb2wqPiBhMywgYjM7CisgIGIzID0gYTM7CisgIEVYUEVDVF9FUSgwLjAs
IGdldDwwPihiMykpOworICBFWFBFQ1RfRVEoJ1wwJywgZ2V0PDE+KGIzKSk7CisgIEVYUEVDVF9U
UlVFKGdldDwyPihiMykgPT0gTlVMTCk7CisKKyAgdHVwbGU8aW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50PiBhMTAsIGIxMDsKKyAgYjEwID0gYTEwOworICBF
WFBFQ1RfRVEoMCwgZ2V0PDA+KGIxMCkpOworICBFWFBFQ1RfRVEoMCwgZ2V0PDE+KGIxMCkpOwor
ICBFWFBFQ1RfRVEoMCwgZ2V0PDI+KGIxMCkpOworICBFWFBFQ1RfRVEoMCwgZ2V0PDM+KGIxMCkp
OworICBFWFBFQ1RfRVEoMCwgZ2V0PDQ+KGIxMCkpOworICBFWFBFQ1RfRVEoMCwgZ2V0PDU+KGIx
MCkpOworICBFWFBFQ1RfRVEoMCwgZ2V0PDY+KGIxMCkpOworICBFWFBFQ1RfRVEoMCwgZ2V0PDc+
KGIxMCkpOworICBFWFBFQ1RfRVEoMCwgZ2V0PDg+KGIxMCkpOworICBFWFBFQ1RfRVEoMCwgZ2V0
PDk+KGIxMCkpOworfQorCisvLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSB0dXBsZSBmcm9tIGl0cyBm
aWVsZHMuCitURVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBDb25zdHJ1Y3RzRnJvbUZpZWxkcykg
eworICBpbnQgbiA9IDE7CisgIC8vIFJlZmVyZW5jZSBmaWVsZC4KKyAgdHVwbGU8aW50Jj4gYShu
KTsKKyAgRVhQRUNUX0VRKCZuLCAmKGdldDwwPihhKSkpOworCisgIC8vIE5vbi1yZWZlcmVuY2Ug
ZmllbGRzLgorICB0dXBsZTxpbnQsIGNoYXI+IGIoNSwgJ2EnKTsKKyAgRVhQRUNUX0VRKDUsIGdl
dDwwPihiKSk7CisgIEVYUEVDVF9FUSgnYScsIGdldDwxPihiKSk7CisKKyAgLy8gQ29uc3QgcmVm
ZXJlbmNlIGZpZWxkLgorICBjb25zdCBpbnQgbSA9IDI7CisgIHR1cGxlPGJvb2wsIGNvbnN0IGlu
dCY+IGModHJ1ZSwgbSk7CisgIEVYUEVDVF9UUlVFKGdldDwwPihjKSk7CisgIEVYUEVDVF9FUSgm
bSwgJihnZXQ8MT4oYykpKTsKK30KKworLy8gVGVzdHMgdHVwbGUncyBjb3B5IGNvbnN0cnVjdG9y
LgorVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgQ29weUNvbnN0cnVjdG9yKSB7CisgIHR1cGxl
PGRvdWJsZSwgYm9vbD4gYSgwLjAsIHRydWUpOworICB0dXBsZTxkb3VibGUsIGJvb2w+IGIoYSk7
CisKKyAgRVhQRUNUX0RPVUJMRV9FUSgwLjAsIGdldDwwPihiKSk7CisgIEVYUEVDVF9UUlVFKGdl
dDwxPihiKSk7Cit9CisKKy8vIFRlc3RzIGNvbnN0cnVjdGluZyBhIHR1cGxlIGZyb20gYW5vdGhl
ciB0dXBsZSB0aGF0IGhhcyBhIGNvbXBhdGlibGUKKy8vIGJ1dCBkaWZmZXJlbnQgdHlwZS4KK1RF
U1QoVHVwbGVDb25zdHJ1Y3RvclRlc3QsIENvbnN0cnVjdHNGcm9tRGlmZmVyZW50VHVwbGVUeXBl
KSB7CisgIHR1cGxlPGludCwgaW50LCBjaGFyPiBhKDAsIDEsICdhJyk7CisgIHR1cGxlPGRvdWJs
ZSwgbG9uZywgaW50PiBiKGEpOworCisgIEVYUEVDVF9ET1VCTEVfRVEoMC4wLCBnZXQ8MD4oYikp
OworICBFWFBFQ1RfRVEoMSwgZ2V0PDE+KGIpKTsKKyAgRVhQRUNUX0VRKCdhJywgZ2V0PDI+KGIp
KTsKK30KKworLy8gVGVzdHMgY29uc3RydWN0aW5nIGEgMi10dXBsZSBmcm9tIGFuIHN0ZDo6cGFp
ci4KK1RFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3QsIENvbnN0cnVjdHNGcm9tUGFpcikgeworICA6
OnN0ZDo6cGFpcjxpbnQsIGNoYXI+IGEoMSwgJ2EnKTsKKyAgdHVwbGU8aW50LCBjaGFyPiBiKGEp
OworICB0dXBsZTxpbnQsIGNvbnN0IGNoYXImPiBjKGEpOworfQorCisvLyBUZXN0cyBhc3NpZ25p
bmcgYSB0dXBsZSB0byBhbm90aGVyIHR1cGxlIHdpdGggdGhlIHNhbWUgdHlwZS4KK1RFU1QoVHVw
bGVBc3NpZ25tZW50VGVzdCwgQXNzaWduc1RvU2FtZVR1cGxlVHlwZSkgeworICBjb25zdCB0dXBs
ZTxpbnQsIGxvbmc+IGEoNSwgN0wpOworICB0dXBsZTxpbnQsIGxvbmc+IGI7CisgIGIgPSBhOwor
ICBFWFBFQ1RfRVEoNSwgZ2V0PDA+KGIpKTsKKyAgRVhQRUNUX0VRKDdMLCBnZXQ8MT4oYikpOwor
fQorCisvLyBUZXN0cyBhc3NpZ25pbmcgYSB0dXBsZSB0byBhbm90aGVyIHR1cGxlIHdpdGggYSBk
aWZmZXJlbnQgYnV0CisvLyBjb21wYXRpYmxlIHR5cGUuCitURVNUKFR1cGxlQXNzaWdubWVudFRl
c3QsIEFzc2lnbnNUb0RpZmZlcmVudFR1cGxlVHlwZSkgeworICBjb25zdCB0dXBsZTxpbnQsIGxv
bmcsIGJvb2w+IGEoMSwgN0wsIHRydWUpOworICB0dXBsZTxsb25nLCBpbnQsIGJvb2w+IGI7Cisg
IGIgPSBhOworICBFWFBFQ1RfRVEoMUwsIGdldDwwPihiKSk7CisgIEVYUEVDVF9FUSg3LCBnZXQ8
MT4oYikpOworICBFWFBFQ1RfVFJVRShnZXQ8Mj4oYikpOworfQorCisvLyBUZXN0cyBhc3NpZ25p
bmcgYW4gc3RkOjpwYWlyIHRvIGEgMi10dXBsZS4KK1RFU1QoVHVwbGVBc3NpZ25tZW50VGVzdCwg
QXNzaWduc0Zyb21QYWlyKSB7CisgIGNvbnN0IDo6c3RkOjpwYWlyPGludCwgYm9vbD4gYSg1LCB0
cnVlKTsKKyAgdHVwbGU8aW50LCBib29sPiBiOworICBiID0gYTsKKyAgRVhQRUNUX0VRKDUsIGdl
dDwwPihiKSk7CisgIEVYUEVDVF9UUlVFKGdldDwxPihiKSk7CisKKyAgdHVwbGU8bG9uZywgYm9v
bD4gYzsKKyAgYyA9IGE7CisgIEVYUEVDVF9FUSg1TCwgZ2V0PDA+KGMpKTsKKyAgRVhQRUNUX1RS
VUUoZ2V0PDE+KGMpKTsKK30KKworLy8gQSBmaXh0dXJlIGZvciB0ZXN0aW5nIGJpZyB0dXBsZXMu
CitjbGFzcyBCaWdUdXBsZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVk
OgorICB0eXBlZGVmIHR1cGxlPGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludD4gQmlnVHVwbGU7CisKKyAgQmlnVHVwbGVUZXN0KCkgOgorICAgICAgYV8oMSwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMiksCisgICAgICBiXygxLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAzKSB7fQorCisgIEJpZ1R1cGxlIGFfLCBiXzsKK307CisKKy8vIFRlc3RzIGNvbnN0
cnVjdGluZyBiaWcgdHVwbGVzLgorVEVTVF9GKEJpZ1R1cGxlVGVzdCwgQ29uc3RydWN0aW9uKSB7
CisgIEJpZ1R1cGxlIGE7CisgIEJpZ1R1cGxlIGIoYl8pOworfQorCisvLyBUZXN0cyB0aGF0IGdl
dDxOPih0KSByZXR1cm5zIHRoZSBOLXRoICgwLWJhc2VkKSBmaWVsZCBvZiB0dXBsZSB0LgorVEVT
VF9GKEJpZ1R1cGxlVGVzdCwgZ2V0KSB7CisgIEVYUEVDVF9FUSgxLCBnZXQ8MD4oYV8pKTsKKyAg
RVhQRUNUX0VRKDIsIGdldDw5PihhXykpOworCisgIC8vIFRlc3RzIHRoYXQgZ2V0KCkgd29ya3Mg
b24gYSBjb25zdCB0dXBsZSB0b28uCisgIGNvbnN0IEJpZ1R1cGxlIGEoYV8pOworICBFWFBFQ1Rf
RVEoMSwgZ2V0PDA+KGEpKTsKKyAgRVhQRUNUX0VRKDIsIGdldDw5PihhKSk7Cit9CisKKy8vIFRl
c3RzIGNvbXBhcmluZyBiaWcgdHVwbGVzLgorVEVTVF9GKEJpZ1R1cGxlVGVzdCwgQ29tcGFyaXNv
bnMpIHsKKyAgRVhQRUNUX1RSVUUoYV8gPT0gYV8pOworICBFWFBFQ1RfRkFMU0UoYV8gIT0gYV8p
OworCisgIEVYUEVDVF9UUlVFKGFfICE9IGJfKTsKKyAgRVhQRUNUX0ZBTFNFKGFfID09IGJfKTsK
K30KKworVEVTVChNYWtlVHVwbGVUZXN0LCBXb3Jrc0ZvclNjYWxhclR5cGVzKSB7CisgIHR1cGxl
PGJvb2wsIGludD4gYTsKKyAgYSA9IG1ha2VfdHVwbGUodHJ1ZSwgNSk7CisgIEVYUEVDVF9UUlVF
KGdldDwwPihhKSk7CisgIEVYUEVDVF9FUSg1LCBnZXQ8MT4oYSkpOworCisgIHR1cGxlPGNoYXIs
IGludCwgbG9uZz4gYjsKKyAgYiA9IG1ha2VfdHVwbGUoJ2EnLCAnYicsIDUpOworICBFWFBFQ1Rf
RVEoJ2EnLCBnZXQ8MD4oYikpOworICBFWFBFQ1RfRVEoJ2InLCBnZXQ8MT4oYikpOworICBFWFBF
Q1RfRVEoNSwgZ2V0PDI+KGIpKTsKK30KKworVEVTVChNYWtlVHVwbGVUZXN0LCBXb3Jrc0ZvclBv
aW50ZXJzKSB7CisgIGludCBhW10gPSB7IDEsIDIsIDMsIDQgfTsKKyAgY29uc3QgY2hhciogY29u
c3Qgc3RyID0gImhpIjsKKyAgaW50KiBjb25zdCBwID0gYTsKKworICB0dXBsZTxjb25zdCBjaGFy
KiwgaW50Kj4gdDsKKyAgdCA9IG1ha2VfdHVwbGUoc3RyLCBwKTsKKyAgRVhQRUNUX0VRKHN0ciwg
Z2V0PDA+KHQpKTsKKyAgRVhQRUNUX0VRKHAsIGdldDwxPih0KSk7Cit9CisKK30gIC8vIG5hbWVz
cGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0
LXVuaW5pdGlhbGl6ZWQtdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC11bmluaXRpYWxpemVkLXRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWI3ZDFlNzRmNjdmY2Iw
MGNiODQ4NTU3OTY3ZGVmNGY2YTU2Y2M4ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3QucHkKQEAgLTAs
MCArMSw2NyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA4LCBH
b29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
IiIiVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCB3YXJucyB0aGUgdXNlciB3aGVuIG5vdCBpbml0
aWFsaXplZCBwcm9wZXJseS4iIiIKKworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworQ09NTUFO
RCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdnb29nbGV0ZXN0LXVu
aW5pdGlhbGl6ZWQtdGVzdF8nKQorCisKK2RlZiBBc3NlcnQoY29uZGl0aW9uKToKKyAgaWYgbm90
IGNvbmRpdGlvbjoKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCisKK2RlZiBBc3NlcnRFcShl
eHBlY3RlZCwgYWN0dWFsKToKKyAgaWYgZXhwZWN0ZWQgIT0gYWN0dWFsOgorICAgIHByaW50ICdF
eHBlY3RlZDogJXMnICUgKGV4cGVjdGVkLCkKKyAgICBwcmludCAnICBBY3R1YWw6ICVzJyAlIChh
Y3R1YWwsKQorICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisKKworZGVmIFRlc3RFeGl0Q29kZUFu
ZE91dHB1dChjb21tYW5kKToKKyAgIiIiUnVucyB0aGUgZ2l2ZW4gY29tbWFuZCBhbmQgdmVyaWZp
ZXMgaXRzIGV4aXQgY29kZSBhbmQgb3V0cHV0LiIiIgorCisgICMgVmVyaWZpZXMgdGhhdCAnY29t
bWFuZCcgZXhpdHMgd2l0aCBjb2RlIDEuCisgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nl
c3MoY29tbWFuZCkKKyAgaWYgcC5leGl0ZWQgYW5kIHAuZXhpdF9jb2RlID09IDA6CisgICAgQXNz
ZXJ0KCdJTVBPUlRBTlQgTk9USUNFJyBpbiBwLm91dHB1dCk7CisgIEFzc2VydCgnSW5pdEdvb2ds
ZVRlc3QnIGluIHAub3V0cHV0KQorCisKK2NsYXNzIEdUZXN0VW5pbml0aWFsaXplZFRlc3QoZ3Rl
c3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgIGRlZiB0ZXN0RXhpdENvZGVBbmRPdXRwdXQoc2Vs
Zik6CisgICAgVGVzdEV4aXRDb2RlQW5kT3V0cHV0KENPTU1BTkQpCisKKworaWYgX19uYW1lX18g
PT0gJ19fbWFpbl9fJzoKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3Rf
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXVuaW5pdGlhbGl6
ZWQtdGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ0MzRkNTFlZWJmZDg3MjZiZDNmMDRjMmQwNDI2YmJh
OTYwMjk4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3RfLmNjCkBAIC0wLDAgKzEsNDIgQEAKKy8vIENv
cHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisv
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJp
YnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKKworVEVTVChEdW1teVRlc3QsIER1bW15KSB7CisgIC8vIFRoaXMgdGVzdCBk
b2Vzbid0IHZlcmlmeSBhbnl0aGluZy4gIFdlIGp1c3QgbmVlZCBpdCB0byBjcmVhdGUgYQorICAv
LyByZWFsaXN0aWMgc3RhZ2UgZm9yIHRlc3RpbmcgdGhlIGJlaGF2aW9yIG9mIEdvb2dsZSBUZXN0
IHdoZW4KKyAgLy8gUlVOX0FMTF9URVNUUygpIGlzIGNhbGxlZCB3aXRob3V0CisgIC8vIHRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0KCkgYmVpbmcgY2FsbGVkIGZpcnN0LgorfQorCitpbnQgbWFpbigp
IHsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdF90ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGVkNWI1M2I3MWFmMmY3OTU2MGQ3MTcyYWE2N2NjNzQwYmE3MDQwMTEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2MKKysrIC9kZXYvbnVs
bApAQCAtMSwxMjMwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgotLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0v
LwotLy8gVGVzdHMgZm9yIGRlYXRoIHRlc3RzLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtZGVh
dGgtdGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaD4KLQotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5
c0ZhbHNlOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWU7Ci0KLSNpZiBHVEVT
VF9IQVNfREVBVEhfVEVTVAotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1ZGUgPGRpcmVj
dC5oPiAgICAgICAgICAvLyBGb3IgY2hkaXIoKS4KLSNlbHNlCi0jaW5jbHVkZSA8dW5pc3RkLmg+
Ci0jaW5jbHVkZSA8c3lzL3dhaXQuaD4gICAgICAgIC8vIEZvciB3YWl0cGlkLgotI2luY2x1ZGUg
PGxpbWl0cz4gICAgICAgICAgICAvLyBGb3Igc3RkOjpudW1lcmljX2xpbWl0cy4KLSNlbmRpZiAg
Ly8gR1RFU1RfT1NfV0lORE9XUwotCi0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8c2ln
bmFsLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5o
PgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBH
b29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rl
c3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29t
cGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFj
Y2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2Rl
LgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQotI2luY2x1ZGUgInNyYy9ndGVzdC1p
bnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KLQotbmFtZXNwYWNl
IHBvc2l4ID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg7Ci0KLXVzaW5nIHRlc3Rpbmc6Ok1l
c3NhZ2U7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0OwotdXNpbmcgdGVzdGlu
Zzo6aW50ZXJuYWw6OkRlYXRoVGVzdEZhY3Rvcnk7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6
RmlsZVBhdGg7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0TGFzdEVycm5vRGVzY3JpcHRp
b247Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsOwotdXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OlBhcnNlTmF0dXJhbE51bWJlcjsKLXVzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpTdHJpbmc7Ci0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7
Ci0KLS8vIEEgaGVscGVyIGNsYXNzIHdob3NlIG9iamVjdHMgcmVwbGFjZSB0aGUgZGVhdGggdGVz
dCBmYWN0b3J5IGZvciBhCi0vLyBzaW5nbGUgVW5pdFRlc3Qgb2JqZWN0IGR1cmluZyB0aGVpciBs
aWZldGltZXMuCi1jbGFzcyBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSB7Ci0gcHVibGljOgotICBl
eHBsaWNpdCBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeShEZWF0aFRlc3RGYWN0b3J5KiBuZXdfZmFj
dG9yeSkKLSAgICAgIDogdW5pdF90ZXN0X2ltcGxfKEdldFVuaXRUZXN0SW1wbCgpKSB7Ci0gICAg
b2xkX2ZhY3RvcnlfID0gdW5pdF90ZXN0X2ltcGxfLT5kZWF0aF90ZXN0X2ZhY3RvcnlfLnJlbGVh
c2UoKTsKLSAgICB1bml0X3Rlc3RfaW1wbF8tPmRlYXRoX3Rlc3RfZmFjdG9yeV8ucmVzZXQobmV3
X2ZhY3RvcnkpOwotICB9Ci0KLSAgflJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KCkgewotICAgIHVu
aXRfdGVzdF9pbXBsXy0+ZGVhdGhfdGVzdF9mYWN0b3J5Xy5yZWxlYXNlKCk7Ci0gICAgdW5pdF90
ZXN0X2ltcGxfLT5kZWF0aF90ZXN0X2ZhY3RvcnlfLnJlc2V0KG9sZF9mYWN0b3J5Xyk7Ci0gIH0K
LSBwcml2YXRlOgotICAvLyBQcmV2ZW50cyBjb3B5aW5nIFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5
IG9iamVjdHMuCi0gIFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KGNvbnN0IFJlcGxhY2VEZWF0aFRl
c3RGYWN0b3J5Jik7Ci0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFJlcGxhY2VEZWF0aFRlc3RGYWN0
b3J5Jik7Ci0KLSAgVW5pdFRlc3RJbXBsKiB1bml0X3Rlc3RfaW1wbF87Ci0gIERlYXRoVGVzdEZh
Y3RvcnkqIG9sZF9mYWN0b3J5XzsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAg
Ly8gbmFtZXNwYWNlIHRlc3RpbmcKLQotdm9pZCBEaWVJbnNpZGUoY29uc3QgY2hhciogZnVuY3Rp
b24pIHsKLSAgZnByaW50ZihzdGRlcnIsICJkZWF0aCBpbnNpZGUgJXMoKS4iLCBmdW5jdGlvbik7
Ci0gIGZmbHVzaChzdGRlcnIpOwotICAvLyBXZSBjYWxsIF9leGl0KCkgaW5zdGVhZCBvZiBleGl0
KCksIGFzIHRoZSBmb3JtZXIgaXMgYSBkaXJlY3QKLSAgLy8gc3lzdGVtIGNhbGwgYW5kIHRodXMg
c2FmZXIgaW4gdGhlIHByZXNlbmNlIG9mIHRocmVhZHMuICBleGl0KCkKLSAgLy8gd2lsbCBpbnZv
a2UgdXNlci1kZWZpbmVkIGV4aXQtaG9va3MsIHdoaWNoIG1heSBkbyBkYW5nZXJvdXMKLSAgLy8g
dGhpbmdzIHRoYXQgY29uZmxpY3Qgd2l0aCBkZWF0aCB0ZXN0cy4KLSAgLy8KLSAgLy8gU29tZSBj
b21waWxlcnMgY2FuIHJlY29nbml6ZSB0aGF0IF9leGl0KCkgbmV2ZXIgcmV0dXJucyBhbmQgaXNz
dWUgdGhlCi0gIC8vICd1bnJlYWNoYWJsZSBjb2RlJyB3YXJuaW5nIGZvciBjb2RlIGZvbGxvd2lu
ZyB0aGlzIGZ1bmN0aW9uLCB1bmxlc3MKLSAgLy8gZm9vbGVkIGJ5IGEgZmFrZSBjb25kaXRpb24u
Ci0gIGlmIChBbHdheXNUcnVlKCkpCi0gICAgX2V4aXQoMSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
ZGVhdGggdGVzdHMgd29yay4KLQotY2xhc3MgVGVzdEZvckRlYXRoVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIFRlc3RGb3JEZWF0aFRlc3QoKSA6IG9yaWdpbmFs
X2Rpcl8oRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKSkge30KLQotICB2aXJ0dWFsIH5UZXN0Rm9y
RGVhdGhUZXN0KCkgewotICAgIHBvc2l4OjpDaERpcihvcmlnaW5hbF9kaXJfLmNfc3RyKCkpOwot
ICB9Ci0KLSAgLy8gQSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uIHRoYXQncyBleHBlY3RlZCB0byBk
aWUuCi0gIHN0YXRpYyB2b2lkIFN0YXRpY01lbWJlckZ1bmN0aW9uKCkgeyBEaWVJbnNpZGUoIlN0
YXRpY01lbWJlckZ1bmN0aW9uIik7IH0KLQotICAvLyBBIG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0
dXJlIHRoYXQgbWF5IGRpZS4KLSAgdm9pZCBNZW1iZXJGdW5jdGlvbigpIHsKLSAgICBpZiAoc2hv
dWxkX2RpZV8pCi0gICAgICBEaWVJbnNpZGUoIk1lbWJlckZ1bmN0aW9uIik7Ci0gIH0KLQotICAv
LyBUcnVlIGlmZiBNZW1iZXJGdW5jdGlvbigpIHNob3VsZCBkaWUuCi0gIGJvb2wgc2hvdWxkX2Rp
ZV87Ci0gIGNvbnN0IEZpbGVQYXRoIG9yaWdpbmFsX2Rpcl87Ci19OwotCi0vLyBBIGNsYXNzIHdp
dGggYSBtZW1iZXIgZnVuY3Rpb24gdGhhdCBtYXkgZGllLgotY2xhc3MgTWF5RGllIHsKLSBwdWJs
aWM6Ci0gIGV4cGxpY2l0IE1heURpZShib29sIHNob3VsZF9kaWUpIDogc2hvdWxkX2RpZV8oc2hv
dWxkX2RpZSkge30KLQotICAvLyBBIG1lbWJlciBmdW5jdGlvbiB0aGF0IG1heSBkaWUuCi0gIHZv
aWQgTWVtYmVyRnVuY3Rpb24oKSBjb25zdCB7Ci0gICAgaWYgKHNob3VsZF9kaWVfKQotICAgICAg
RGllSW5zaWRlKCJNYXlEaWU6Ok1lbWJlckZ1bmN0aW9uIik7Ci0gIH0KLQotIHByaXZhdGU6Ci0g
IC8vIFRydWUgaWZmIE1lbWJlckZ1bmN0aW9uKCkgc2hvdWxkIGRpZS4KLSAgYm9vbCBzaG91bGRf
ZGllXzsKLX07Ci0KLS8vIEEgZ2xvYmFsIGZ1bmN0aW9uIHRoYXQncyBleHBlY3RlZCB0byBkaWUu
Ci12b2lkIEdsb2JhbEZ1bmN0aW9uKCkgeyBEaWVJbnNpZGUoIkdsb2JhbEZ1bmN0aW9uIik7IH0K
LQotLy8gQSBub24tdm9pZCBmdW5jdGlvbiB0aGF0J3MgZXhwZWN0ZWQgdG8gZGllLgotaW50IE5v
blZvaWRGdW5jdGlvbigpIHsKLSAgRGllSW5zaWRlKCJOb25Wb2lkRnVuY3Rpb24iKTsKLSAgcmV0
dXJuIDE7Ci19Ci0KLS8vIEEgdW5hcnkgZnVuY3Rpb24gdGhhdCBtYXkgZGllLgotdm9pZCBEaWVJ
Zihib29sIHNob3VsZF9kaWUpIHsKLSAgaWYgKHNob3VsZF9kaWUpCi0gICAgRGllSW5zaWRlKCJE
aWVJZiIpOwotfQotCi0vLyBBIGJpbmFyeSBmdW5jdGlvbiB0aGF0IG1heSBkaWUuCi1ib29sIERp
ZUlmTGVzc1RoYW4oaW50IHgsIGludCB5KSB7Ci0gIGlmICh4IDwgeSkgewotICAgIERpZUluc2lk
ZSgiRGllSWZMZXNzVGhhbiIpOwotICB9Ci0gIHJldHVybiB0cnVlOwotfQotCi0vLyBUZXN0cyB0
aGF0IEFTU0VSVF9ERUFUSCBjYW4gYmUgdXNlZCBvdXRzaWRlIGEgVEVTVCwgVEVTVF9GLCBvciB0
ZXN0IGZpeHR1cmUuCi12b2lkIERlYXRoVGVzdFN1YnJvdXRpbmUoKSB7Ci0gIEVYUEVDVF9ERUFU
SChHbG9iYWxGdW5jdGlvbigpLCAiZGVhdGguKkdsb2JhbEZ1bmN0aW9uIik7Ci0gIEFTU0VSVF9E
RUFUSChHbG9iYWxGdW5jdGlvbigpLCAiZGVhdGguKkdsb2JhbEZ1bmN0aW9uIik7Ci19Ci0KLS8v
IERlYXRoIGluIGRiZywgbm90IG9wdC4KLWludCBEaWVJbkRlYnVnRWxzZTEyKGludCogc2lkZWVm
ZmVjdCkgewotICBpZiAoc2lkZWVmZmVjdCkgKnNpZGVlZmZlY3QgPSAxMjsKLSNpZm5kZWYgTkRF
QlVHCi0gIERpZUluc2lkZSgiRGllSW5EZWJ1Z0Vsc2UxMiIpOwotI2VuZGlmICAvLyBOREVCVUcK
LSAgcmV0dXJuIDEyOwotfQotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotCi0vLyBUZXN0cyB0aGUg
RXhpdGVkV2l0aENvZGUgcHJlZGljYXRlLgotVEVTVChFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCwg
RXhpdGVkV2l0aENvZGUpIHsKLSAgLy8gT24gV2luZG93cywgdGhlIHByb2Nlc3MncyBleGl0IGNv
ZGUgaXMgdGhlIHNhbWUgYXMgaXRzIGV4aXQgc3RhdHVzLAotICAvLyBzbyB0aGUgcHJlZGljYXRl
IGp1c3QgY29tcGFyZXMgdGhlIGl0cyBpbnB1dCB3aXRoIGl0cyBwYXJhbWV0ZXIuCi0gIEVYUEVD
VF9UUlVFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApKDApKTsKLSAgRVhQRUNUX1RSVUUodGVz
dGluZzo6RXhpdGVkV2l0aENvZGUoMSkoMSkpOwotICBFWFBFQ1RfVFJVRSh0ZXN0aW5nOjpFeGl0
ZWRXaXRoQ29kZSg0MikoNDIpKTsKLSAgRVhQRUNUX0ZBTFNFKHRlc3Rpbmc6OkV4aXRlZFdpdGhD
b2RlKDApKDEpKTsKLSAgRVhQRUNUX0ZBTFNFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEpKDAp
KTsKLX0KLQotI2Vsc2UKLQotLy8gUmV0dXJucyB0aGUgZXhpdCBzdGF0dXMgb2YgYSBwcm9jZXNz
IHRoYXQgY2FsbHMgX2V4aXQoMikgd2l0aCBhCi0vLyBnaXZlbiBleGl0IGNvZGUuICBUaGlzIGlz
IGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGUKLS8vIEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0IHRl
c3Qgc3VpdGUuCi1zdGF0aWMgaW50IE5vcm1hbEV4aXRTdGF0dXMoaW50IGV4aXRfY29kZSkgewot
ICBwaWRfdCBjaGlsZF9waWQgPSBmb3JrKCk7Ci0gIGlmIChjaGlsZF9waWQgPT0gMCkgewotICAg
IF9leGl0KGV4aXRfY29kZSk7Ci0gIH0KLSAgaW50IHN0YXR1czsKLSAgd2FpdHBpZChjaGlsZF9w
aWQsICZzdGF0dXMsIDApOwotICByZXR1cm4gc3RhdHVzOwotfQotCi0vLyBSZXR1cm5zIHRoZSBl
eGl0IHN0YXR1cyBvZiBhIHByb2Nlc3MgdGhhdCByYWlzZXMgYSBnaXZlbiBzaWduYWwuCi0vLyBJ
ZiB0aGUgc2lnbmFsIGRvZXMgbm90IGNhdXNlIHRoZSBwcm9jZXNzIHRvIGRpZSwgdGhlbiBpdCBy
ZXR1cm5zCi0vLyBpbnN0ZWFkIHRoZSBleGl0IHN0YXR1cyBvZiBhIHByb2Nlc3MgdGhhdCBleGl0
cyBub3JtYWxseSB3aXRoIGV4aXQKLS8vIGNvZGUgMS4gIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rp
b24gZm9yIHRoZSBFeGl0U3RhdHVzUHJlZGljYXRlVGVzdAotLy8gdGVzdCBzdWl0ZS4KLXN0YXRp
YyBpbnQgS2lsbGVkRXhpdFN0YXR1cyhpbnQgc2lnbnVtKSB7Ci0gIHBpZF90IGNoaWxkX3BpZCA9
IGZvcmsoKTsKLSAgaWYgKGNoaWxkX3BpZCA9PSAwKSB7Ci0gICAgcmFpc2Uoc2lnbnVtKTsKLSAg
ICBfZXhpdCgxKTsKLSAgfQotICBpbnQgc3RhdHVzOwotICB3YWl0cGlkKGNoaWxkX3BpZCwgJnN0
YXR1cywgMCk7Ci0gIHJldHVybiBzdGF0dXM7Ci19Ci0KLS8vIFRlc3RzIHRoZSBFeGl0ZWRXaXRo
Q29kZSBwcmVkaWNhdGUuCi1URVNUKEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0LCBFeGl0ZWRXaXRo
Q29kZSkgewotICBjb25zdCBpbnQgc3RhdHVzMCAgPSBOb3JtYWxFeGl0U3RhdHVzKDApOwotICBj
b25zdCBpbnQgc3RhdHVzMSAgPSBOb3JtYWxFeGl0U3RhdHVzKDEpOwotICBjb25zdCBpbnQgc3Rh
dHVzNDIgPSBOb3JtYWxFeGl0U3RhdHVzKDQyKTsKLSAgY29uc3QgdGVzdGluZzo6RXhpdGVkV2l0
aENvZGUgcHJlZDAoMCk7Ci0gIGNvbnN0IHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlIHByZWQxKDEp
OwotICBjb25zdCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSBwcmVkNDIoNDIpOwotICBFWFBFQ1Rf
UFJFRDEocHJlZDAsICBzdGF0dXMwKTsKLSAgRVhQRUNUX1BSRUQxKHByZWQxLCAgc3RhdHVzMSk7
Ci0gIEVYUEVDVF9QUkVEMShwcmVkNDIsIHN0YXR1czQyKTsKLSAgRVhQRUNUX0ZBTFNFKHByZWQw
KHN0YXR1czEpKTsKLSAgRVhQRUNUX0ZBTFNFKHByZWQ0MihzdGF0dXMwKSk7Ci0gIEVYUEVDVF9G
QUxTRShwcmVkMShzdGF0dXM0MikpOwotfQotCi0vLyBUZXN0cyB0aGUgS2lsbGVkQnlTaWduYWwg
cHJlZGljYXRlLgotVEVTVChFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCwgS2lsbGVkQnlTaWduYWwp
IHsKLSAgY29uc3QgaW50IHN0YXR1c19zZWd2ID0gS2lsbGVkRXhpdFN0YXR1cyhTSUdTRUdWKTsK
LSAgY29uc3QgaW50IHN0YXR1c19raWxsID0gS2lsbGVkRXhpdFN0YXR1cyhTSUdLSUxMKTsKLSAg
Y29uc3QgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwgcHJlZF9zZWd2KFNJR1NFR1YpOwotICBjb25z
dCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbCBwcmVkX2tpbGwoU0lHS0lMTCk7Ci0gIEVYUEVDVF9Q
UkVEMShwcmVkX3NlZ3YsIHN0YXR1c19zZWd2KTsKLSAgRVhQRUNUX1BSRUQxKHByZWRfa2lsbCwg
c3RhdHVzX2tpbGwpOwotICBFWFBFQ1RfRkFMU0UocHJlZF9zZWd2KHN0YXR1c19raWxsKSk7Ci0g
IEVYUEVDVF9GQUxTRShwcmVkX2tpbGwoc3RhdHVzX3NlZ3YpKTsKLX0KLQotI2VuZGlmICAvLyBH
VEVTVF9PU19XSU5ET1dTCi0KLS8vIFRlc3RzIHRoYXQgdGhlIGRlYXRoIHRlc3QgbWFjcm9zIGV4
cGFuZCB0byBjb2RlIHdoaWNoIG1heSBvciBtYXkgbm90Ci0vLyBiZSBmb2xsb3dlZCBieSBvcGVy
YXRvcjw8LCBhbmQgdGhhdCBpbiBlaXRoZXIgY2FzZSB0aGUgY29tcGxldGUgdGV4dAotLy8gY29t
cHJpc2VzIG9ubHkgYSBzaW5nbGUgQysrIHN0YXRlbWVudC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhU
ZXN0LCBTaW5nbGVTdGF0ZW1lbnQpIHsKLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgLy8gVGhp
cyB3b3VsZCBmYWlsIGlmIGV4ZWN1dGVkOyB0aGlzIGlzIGEgY29tcGlsYXRpb24gdGVzdCBvbmx5
Ci0gICAgQVNTRVJUX0RFQVRIKHJldHVybiwgIiIpOwotCi0gIGlmIChBbHdheXNUcnVlKCkpCi0g
ICAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci0gIGVsc2UKLSAgICAvLyBUaGlzIGVtcHR5
ICJlbHNlIiBicmFuY2ggaXMgbWVhbnQgdG8gZW5zdXJlIHRoYXQgRVhQRUNUX0RFQVRICi0gICAg
Ly8gZG9lc24ndCBleHBhbmQgaW50byBhbiAiaWYiIHN0YXRlbWVudCB3aXRob3V0IGFuICJlbHNl
IgotICAgIDsKLQotICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAgICBBU1NFUlRfREVBVEgocmV0dXJu
LCAiIikgPDwgImRpZCBub3QgZGllIjsKLQotICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAgICA7Ci0g
IGVsc2UKLSAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKSA8PCAxIDw8IDIgPDwgMzsKLX0K
LQotdm9pZCBEaWVXaXRoRW1iZWRkZWROdWwoKSB7Ci0gIGZwcmludGYoc3RkZXJyLCAiSGVsbG8l
Y215IG51bGwgd29ybGQuXG4iLCAnXDAnKTsKLSAgZmZsdXNoKHN0ZGVycik7Ci0gIF9leGl0KDEp
OwotfQotCi0jaWYgR1RFU1RfVVNFU19QQ1JFCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSCBh
bmQgQVNTRVJUX0RFQVRIIHdvcmsgd2hlbiB0aGUgZXJyb3IKLS8vIG1lc3NhZ2UgaGFzIGEgTlVM
IGNoYXJhY3RlciBpbiBpdC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFbWJlZGRlZE51bElu
TWVzc2FnZSkgewotICAvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogPHJlZ2V4Lmg+IGRvZXNuJ3Qg
c3VwcG9ydCBtYXRjaGluZyBzdHJpbmdzCi0gIC8vIHdpdGggZW1iZWRkZWQgTlVMIGNoYXJhY3Rl
cnMgLSBmaW5kIGEgd2F5IHRvIHdvcmthcm91bmQgaXQuCi0gIEVYUEVDVF9ERUFUSChEaWVXaXRo
RW1iZWRkZWROdWwoKSwgIm15IG51bGwgd29ybGQiKTsKLSAgQVNTRVJUX0RFQVRIKERpZVdpdGhF
bWJlZGRlZE51bCgpLCAibXkgbnVsbCB3b3JsZCIpOwotfQotI2VuZGlmICAvLyBHVEVTVF9VU0VT
X1BDUkUKLQotLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29kZSB3
aGljaCBpbnRlcmFjdHMgd2VsbCB3aXRoIHN3aXRjaAotLy8gc3RhdGVtZW50cy4KLVRFU1RfRihU
ZXN0Rm9yRGVhdGhUZXN0LCBTd2l0Y2hTdGF0ZW1lbnQpIHsKLS8vIE1pY3Jvc29mdCBjb21waWxl
ciB1c3VhbGx5IGNvbXBsYWlucyBhYm91dCBzd2l0Y2ggc3RhdGVtZW50cyB3aXRob3V0Ci0vLyBj
YXNlIGxhYmVscy4gV2Ugc3VwcHJlc3MgdGhhdCB3YXJuaW5nIGZvciB0aGlzIHRlc3QuCi0jaWZk
ZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2Fi
bGU6IDQwNjUpCi0jZW5kaWYgIC8vIF9NU0NfVkVSCi0KLSAgc3dpdGNoICgwKQotICAgIGRlZmF1
bHQ6Ci0gICAgICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIiKSA8PCAiZXhpdCBpbiBkZWZhdWx0
IHN3aXRjaCBoYW5kbGVyIjsKLQotICBzd2l0Y2ggKDApCi0gICAgY2FzZSAwOgotICAgICAgRVhQ
RUNUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgImV4aXQgaW4gc3dpdGNoIGNhc2UiOwotCi0jaWZk
ZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYgIC8vIF9NU0NfVkVSCi19
Ci0KLS8vIFRlc3RzIHRoYXQgYSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGlu
IGEgImZhc3QiIHN0eWxlCi0vLyBkZWF0aCB0ZXN0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3Qs
IFN0YXRpY01lbWJlckZ1bmN0aW9uRmFzdFN0eWxlKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUco
ZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7Ci0gIEFTU0VSVF9ERUFUSChTdGF0aWNNZW1iZXJG
dW5jdGlvbigpLCAiZGVhdGguKlN0YXRpY01lbWJlciIpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEg
bWV0aG9kIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2FuIGJlIHVzZWQgaW4gYSAiZmFzdCIKLS8vIHN0
eWxlIGRlYXRoIHRlc3QuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgTWVtYmVyRnVuY3Rpb25G
YXN0U3R5bGUpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJm
YXN0IjsKLSAgc2hvdWxkX2RpZV8gPSB0cnVlOwotICBFWFBFQ1RfREVBVEgoTWVtYmVyRnVuY3Rp
b24oKSwgImluc2lkZS4qTWVtYmVyRnVuY3Rpb24iKTsKLX0KLQotdm9pZCBDaGFuZ2VUb1Jvb3RE
aXIoKSB7IHBvc2l4OjpDaERpcihHVEVTVF9QQVRIX1NFUF8pOyB9Ci0KLS8vIFRlc3RzIHRoYXQg
ZGVhdGggdGVzdHMgd29yayBldmVuIGlmIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBoYXMgYmVlbgot
Ly8gY2hhbmdlZC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBGYXN0RGVhdGhUZXN0SW5DaGFu
Z2VkRGlyKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFz
dCI7Ci0KLSAgQ2hhbmdlVG9Sb290RGlyKCk7Ci0gIEVYUEVDVF9FWElUKF9leGl0KDEpLCB0ZXN0
aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSwgIiIpOwotCi0gIENoYW5nZVRvUm9vdERpcigpOwotICBB
U1NFUlRfREVBVEgoX2V4aXQoMSksICIiKTsKLX0KLQotLy8gUmVwZWF0cyBhIHJlcHJlc2VudGF0
aXZlIHNhbXBsZSBvZiBkZWF0aCB0ZXN0cyBpbiB0aGUgInRocmVhZHNhZmUiIHN0eWxlOgotCi1U
RVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU3RhdGljTWVtYmVyRnVuY3Rpb25UaHJlYWRzYWZlU3R5
bGUpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRz
YWZlIjsKLSAgQVNTRVJUX0RFQVRIKFN0YXRpY01lbWJlckZ1bmN0aW9uKCksICJkZWF0aC4qU3Rh
dGljTWVtYmVyIik7Ci19Ci0KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNZW1iZXJGdW5jdGlv
blRocmVhZHNhZmVTdHlsZSkgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5
bGUpID0gInRocmVhZHNhZmUiOwotICBzaG91bGRfZGllXyA9IHRydWU7Ci0gIEVYUEVDVF9ERUFU
SChNZW1iZXJGdW5jdGlvbigpLCAiaW5zaWRlLipNZW1iZXJGdW5jdGlvbiIpOwotfQotCi1URVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgVGhyZWFkc2FmZURlYXRoVGVzdEluTG9vcCkgewotICB0ZXN0
aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOwotCi0gIGZv
ciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKQotICAgIEVYUEVDVF9FWElUKF9leGl0KGkpLCB0ZXN0
aW5nOjpFeGl0ZWRXaXRoQ29kZShpKSwgIiIpIDw8ICI6IGkgPSAiIDw8IGk7Ci19Ci0KLVRFU1Rf
RihUZXN0Rm9yRGVhdGhUZXN0LCBUaHJlYWRzYWZlRGVhdGhUZXN0SW5DaGFuZ2VkRGlyKSB7Ci0g
IHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7Ci0K
LSAgQ2hhbmdlVG9Sb290RGlyKCk7Ci0gIEVYUEVDVF9FWElUKF9leGl0KDEpLCB0ZXN0aW5nOjpF
eGl0ZWRXaXRoQ29kZSgxKSwgIiIpOwotCi0gIENoYW5nZVRvUm9vdERpcigpOwotICBBU1NFUlRf
REVBVEgoX2V4aXQoMSksICIiKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE1peGVk
U3R5bGVzKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhy
ZWFkc2FmZSI7Ci0gIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOwotICB0ZXN0aW5nOjpHVEVT
VF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOwotICBFWFBFQ1RfREVBVEgoX2V4aXQo
MSksICIiKTsKLX0KLQotbmFtZXNwYWNlIHsKLQotYm9vbCBwdGhyZWFkX2ZsYWc7Ci0KLXZvaWQg
U2V0UHRocmVhZEZsYWcoKSB7Ci0gIHB0aHJlYWRfZmxhZyA9IHRydWU7Ci19Ci0KLX0gIC8vIG5h
bWVzcGFjZQotCi0jaWYgR1RFU1RfSEFTX0NMT05FICYmIEdURVNUX0hBU19QVEhSRUFECi0KLVRF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEb2VzTm90RXhlY3V0ZUF0Zm9ya0hvb2tzKSB7Ci0gIGlm
ICghdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKSkgewotICAgIHRlc3Rp
bmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7Ci0gICAgcHRo
cmVhZF9mbGFnID0gZmFsc2U7Ci0gICAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXRmb3JrKCZTZXRQ
dGhyZWFkRmxhZywgTlVMTCwgTlVMTCkpOwotICAgIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwgIiIp
OwotICAgIEFTU0VSVF9GQUxTRShwdGhyZWFkX2ZsYWcpOwotICB9Ci19Ci0KLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX0NMT05FICYmIEdURVNUX0hBU19QVEhSRUFECi0KLS8vIFRlc3RzIHRoYXQgYSBt
ZXRob2Qgb2YgYW5vdGhlciBjbGFzcyBjYW4gYmUgdXNlZCBpbiBhIGRlYXRoIHRlc3QuCi1URVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgTWV0aG9kT2ZBbm90aGVyQ2xhc3MpIHsKLSAgY29uc3QgTWF5
RGllIHgodHJ1ZSk7Ci0gIEFTU0VSVF9ERUFUSCh4Lk1lbWJlckZ1bmN0aW9uKCksICJNYXlEaWVc
XDpcXDpNZW1iZXJGdW5jdGlvbiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgZ2xvYmFsIGZ1bmN0
aW9uIGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0
LCBHbG9iYWxGdW5jdGlvbikgewotICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgIkds
b2JhbEZ1bmN0aW9uIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYW55IHZhbHVlIGNvbnZlcnRpYmxl
IHRvIGFuIFJFIHdvcmtzIGFzIGEgc2Vjb25kCi0vLyBhcmd1bWVudCB0byBFWFBFQ1RfREVBVEgu
Ci1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQWNjZXB0c0FueXRoaW5nQ29udmVydGlibGVUb1JF
KSB7Ci0gIHN0YXRpYyBjb25zdCBjaGFyIHJlZ2V4X2Nfc3RyW10gPSAiR2xvYmFsRnVuY3Rpb24i
OwotICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXhfY19zdHIpOwotCi0gIGNv
bnN0IHRlc3Rpbmc6OmludGVybmFsOjpSRSByZWdleChyZWdleF9jX3N0cik7Ci0gIEVYUEVDVF9E
RUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleCk7Ci0KLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NU
UklORwotICBjb25zdCBzdHJpbmcgcmVnZXhfc3RyKHJlZ2V4X2Nfc3RyKTsKLSAgRVhQRUNUX0RF
QVRIKEdsb2JhbEZ1bmN0aW9uKCksIHJlZ2V4X3N0cik7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19H
TE9CQUxfU1RSSU5HCi0KLSAgY29uc3QgOjpzdGQ6OnN0cmluZyByZWdleF9zdGRfc3RyKHJlZ2V4
X2Nfc3RyKTsKLSAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksIHJlZ2V4X3N0ZF9zdHIp
OwotfQotCi0vLyBUZXN0cyB0aGF0IGEgbm9uLXZvaWQgZnVuY3Rpb24gY2FuIGJlIHVzZWQgaW4g
YSBkZWF0aCB0ZXN0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE5vblZvaWRGdW5jdGlvbikg
ewotICBBU1NFUlRfREVBVEgoTm9uVm9pZEZ1bmN0aW9uKCksICJOb25Wb2lkRnVuY3Rpb24iKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBmdW5jdGlvbnMgdGhhdCB0YWtlIHBhcmFtZXRlcihzKSBjYW4g
YmUgdXNlZCBpbiBhIGRlYXRoIHRlc3QuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRnVuY3Rp
b25XaXRoUGFyYW1ldGVyKSB7Ci0gIEVYUEVDVF9ERUFUSChEaWVJZih0cnVlKSwgIkRpZUlmXFwo
XFwpIik7Ci0gIEVYUEVDVF9ERUFUSChEaWVJZkxlc3NUaGFuKDIsIDMpLCAiRGllSWZMZXNzVGhh
biIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUFUSCBjYW4gYmUgdXNlZCBvdXRzaWRl
IGEgVEVTVCwgVEVTVF9GLCBvciB0ZXN0IGZpeHR1cmUuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVz
dCwgT3V0c2lkZUZpeHR1cmUpIHsKLSAgRGVhdGhUZXN0U3Vicm91dGluZSgpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IGRlYXRoIHRlc3RzIGNhbiBiZSBkb25lIGluc2lkZSBhIGxvb3AuCi1URVNUX0Yo
VGVzdEZvckRlYXRoVGVzdCwgSW5zaWRlTG9vcCkgewotICBmb3IgKGludCBpID0gMDsgaSA8IDU7
IGkrKykgewotICAgIEVYUEVDVF9ERUFUSChEaWVJZkxlc3NUaGFuKC0xLCBpKSwgIkRpZUlmTGVz
c1RoYW4iKSA8PCAid2hlcmUgaSA9PSAiIDw8IGk7Ci0gIH0KLX0KLQotLy8gVGVzdHMgdGhhdCBh
IGNvbXBvdW5kIHN0YXRlbWVudCBjYW4gYmUgdXNlZCBpbiBhIGRlYXRoIHRlc3QuCi1URVNUX0Yo
VGVzdEZvckRlYXRoVGVzdCwgQ29tcG91bmRTdGF0ZW1lbnQpIHsKLSAgRVhQRUNUX0RFQVRIKHsg
IC8vIE5PTElOVAotICAgIGNvbnN0IGludCB4ID0gMjsKLSAgICBjb25zdCBpbnQgeSA9IHggKyAx
OwotICAgIERpZUlmTGVzc1RoYW4oeCwgeSk7Ci0gIH0sCi0gICJEaWVJZkxlc3NUaGFuIik7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgY29kZSB0aGF0IGRvZXNuJ3QgZGllIGNhdXNlcyBhIGRlYXRoIHRl
c3QgdG8gZmFpbC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEb2VzTm90RGllKSB7Ci0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ERUFUSChEaWVJZihmYWxzZSksICJEaWVJZiIp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGRpZSIpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IGEgZGVhdGggdGVzdCBmYWlscyB3aGVuIHRoZSBlcnJvciBtZXNzYWdlIGlzbid0
IGV4cGVjdGVkLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEVycm9yTWVzc2FnZU1pc21hdGNo
KSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9E
RUFUSChEaWVJZih0cnVlKSwgIkRpZUlmTGVzc1RoYW4iKSA8PCAiRW5kIG9mIGRlYXRoIHRlc3Qg
bWVzc2FnZS4iOwotICB9LCAiZGllZCBidXQgbm90IHdpdGggZXhwZWN0ZWQgZXJyb3IiKTsKLX0K
LQotLy8gT24gZXhpdCwgKmFib3J0ZWQgd2lsbCBiZSB0cnVlIGlmZiB0aGUgRVhQRUNUX0RFQVRI
KCkgc3RhdGVtZW50Ci0vLyBhYm9ydGVkIHRoZSBmdW5jdGlvbi4KLXZvaWQgRXhwZWN0RGVhdGhU
ZXN0SGVscGVyKGJvb2wqIGFib3J0ZWQpIHsKLSAgKmFib3J0ZWQgPSB0cnVlOwotICBFWFBFQ1Rf
REVBVEgoRGllSWYoZmFsc2UpLCAiRGllSWYiKTsgIC8vIFRoaXMgYXNzZXJ0aW9uIHNob3VsZCBm
YWlsLgotICAqYWJvcnRlZCA9IGZhbHNlOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFU
SCBkb2Vzbid0IGFib3J0IHRoZSB0ZXN0IG9uIGZhaWx1cmUuCi1URVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgRVhQRUNUX0RFQVRIKSB7Ci0gIGJvb2wgYWJvcnRlZCA9IHRydWU7Ci0gIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEV4cGVjdERlYXRoVGVzdEhlbHBlcigmYWJvcnRlZCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZGllIik7Ci0gIEVYUEVDVF9GQUxTRShhYm9y
dGVkKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVBVEggZG9lcyBhYm9ydCB0aGUgdGVz
dCBvbiBmYWlsdXJlLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFTU0VSVF9ERUFUSCkgewot
ICBzdGF0aWMgYm9vbCBhYm9ydGVkOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJ
TlQKLSAgICBhYm9ydGVkID0gdHJ1ZTsKLSAgICBBU1NFUlRfREVBVEgoRGllSWYoZmFsc2UpLCAi
RGllSWYiKTsgIC8vIFRoaXMgYXNzZXJ0aW9uIHNob3VsZCBmYWlsLgotICAgIGFib3J0ZWQgPSBm
YWxzZTsKLSAgfSwgImZhaWxlZCB0byBkaWUiKTsKLSAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRIIGV2YWx1YXRlcyB0aGUgYXJndW1lbnRzIGV4
YWN0bHkgb25jZS4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTaW5nbGVFdmFsdWF0aW9uKSB7
Ci0gIGludCB4ID0gMzsKLSAgRVhQRUNUX0RFQVRIKERpZUlmKCgrK3gpID09IDQpLCAiRGllSWYi
KTsKLQotICBjb25zdCBjaGFyKiByZWdleCA9ICJEaWVJZiI7Ci0gIGNvbnN0IGNoYXIqIHJlZ2V4
X3NhdmUgPSByZWdleDsKLSAgRVhQRUNUX0RFQVRIKERpZUlmTGVzc1RoYW4oMywgNCksIHJlZ2V4
KyspOwotICBFWFBFQ1RfRVEocmVnZXhfc2F2ZSArIDEsIHJlZ2V4KTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBydW4tYXdheSBkZWF0aCB0ZXN0cyBhcmUgcmVwb3J0ZWQgYXMgZmFpbHVyZXMuCi1URVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgUnVuYXdheSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShFWFBFQ1RfREVBVEgoc3RhdGljX2Nhc3Q8dm9pZD4oMCksICJGb28iKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgImZhaWxlZCB0byBkaWUuIik7Ci0KLSAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoQVNTRVJUX0RFQVRIKHJldHVybiwgIkJhciIpLAotICAgICAgICAgICAgICAgICAgICAgICAi
aWxsZWdhbCByZXR1cm4gaW4gdGVzdCBzdGF0ZW1lbnQuIik7Ci19Ci0KLQotLy8gVGVzdHMgdGhh
dCBFWFBFQ1RfREVCVUdfREVBVEggd29ya3MgYXMgZXhwZWN0ZWQsCi0vLyB0aGF0IGlzLCBpbiBk
ZWJ1ZyBtb2RlLCBpdDoKLS8vIDEuIEFzc2VydHMgb24gZGVhdGguCi0vLyAyLiBIYXMgbm8gc2lk
ZSBlZmZlY3QuCi0vLwotLy8gQW5kIGluIG9wdCBtb2RlLCBpdDoKLS8vIDEuICBIYXMgc2lkZSBl
ZmZlY3RzIGJ1dCBkb2VzIG5vdCBhc3NlcnQuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgVGVz
dEV4cGVjdERlYnVnRGVhdGgpIHsKLSAgaW50IHNpZGVlZmZlY3QgPSAwOwotCi0gIEVYUEVDVF9E
RUJVR19ERUFUSChEaWVJbkRlYnVnRWxzZTEyKCZzaWRlZWZmZWN0KSwKLSAgICAgICAgICAgICAg
ICAgICAgICJkZWF0aC4qRGllSW5EZWJ1Z0Vsc2UxMiIpOwotCi0jaWZkZWYgTkRFQlVHCi0gIC8v
IENoZWNrcyB0aGF0IHRoZSBhc3NpZ25tZW50IG9jY3VycyBpbiBvcHQgbW9kZSAoc2lkZWVmZmVj
dCkuCi0gIEVYUEVDVF9FUSgxMiwgc2lkZWVmZmVjdCk7Ci0jZWxzZQotICAvLyBDaGVja3MgdGhh
dCB0aGUgYXNzaWdubWVudCBkb2VzIG5vdCBvY2N1ciBpbiBkYmcgbW9kZSAobm8gc2lkZWVmZmVj
dCkuCi0gIEVYUEVDVF9FUSgwLCBzaWRlZWZmZWN0KTsKLSNlbmRpZgotfQotCi0vLyBUZXN0cyB0
aGF0IEFTU0VSVF9ERUJVR19ERUFUSCB3b3JrcyBhcyBleHBlY3RlZAotLy8gSW4gZGVidWcgbW9k
ZToKLS8vIDEuIEFzc2VydHMgb24gZGVidWcgZGVhdGguCi0vLyAyLiBIYXMgbm8gc2lkZSBlZmZl
Y3QuCi0vLwotLy8gSW4gb3B0IG1vZGU6Ci0vLyAxLiBIYXMgc2lkZSBlZmZlY3RzIGFuZCByZXR1
cm5zIHRoZSBleHBlY3RlZCB2YWx1ZSAoMTIpLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRl
c3RBc3NlcnREZWJ1Z0RlYXRoKSB7Ci0gIGludCBzaWRlZWZmZWN0ID0gMDsKLQotICBBU1NFUlRf
REVCVUdfREVBVEgoeyAgLy8gTk9MSU5UCi0gICAgLy8gVGVzdHMgdGhhdCB0aGUgcmV0dXJuIHZh
bHVlIGlzIDEyIGluIG9wdCBtb2RlLgotICAgIEVYUEVDVF9FUSgxMiwgRGllSW5EZWJ1Z0Vsc2Ux
Migmc2lkZWVmZmVjdCkpOwotICAgIC8vIFRlc3RzIHRoYXQgdGhlIHNpZGUgZWZmZWN0IG9jY3Vy
cmVkIGluIG9wdCBtb2RlLgotICAgIEVYUEVDVF9FUSgxMiwgc2lkZWVmZmVjdCk7Ci0gIH0sICJk
ZWF0aC4qRGllSW5EZWJ1Z0Vsc2UxMiIpOwotCi0jaWZkZWYgTkRFQlVHCi0gIC8vIENoZWNrcyB0
aGF0IHRoZSBhc3NpZ25tZW50IG9jY3VycyBpbiBvcHQgbW9kZSAoc2lkZWVmZmVjdCkuCi0gIEVY
UEVDVF9FUSgxMiwgc2lkZWVmZmVjdCk7Ci0jZWxzZQotICAvLyBDaGVja3MgdGhhdCB0aGUgYXNz
aWdubWVudCBkb2VzIG5vdCBvY2N1ciBpbiBkYmcgbW9kZSAobm8gc2lkZWVmZmVjdCkuCi0gIEVY
UEVDVF9FUSgwLCBzaWRlZWZmZWN0KTsKLSNlbmRpZgotfQotCi0jaWZuZGVmIE5ERUJVRwotCi12
b2lkIEV4cGVjdERlYnVnRGVhdGhIZWxwZXIoYm9vbCogYWJvcnRlZCkgewotICAqYWJvcnRlZCA9
IHRydWU7Ci0gIEVYUEVDVF9ERUJVR19ERUFUSChyZXR1cm4sICIiKSA8PCAiVGhpcyBpcyBleHBl
Y3RlZCB0byBmYWlsLiI7Ci0gICphYm9ydGVkID0gZmFsc2U7Ci19Ci0KLSNpZiBHVEVTVF9PU19X
SU5ET1dTCi1URVNUKFBvcFVwRGVhdGhUZXN0LCBEb2VzTm90U2hvd1BvcFVwT25BYm9ydCkgewot
ICBwcmludGYoIlRoaXMgdGVzdCBzaG91bGQgYmUgY29uc2lkZXJlZCBmYWlsaW5nIGlmIGl0IHNo
b3dzICIKLSAgICAgICAgICJhbnkgcG9wLXVwIGRpYWxvZ3MuXG4iKTsKLSAgZmZsdXNoKHN0ZG91
dCk7Ci0KLSAgRVhQRUNUX0RFQVRIKHsKLSAgICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGNhdGNoX2V4
Y2VwdGlvbnMpID0gZmFsc2U7Ci0gICAgYWJvcnQoKTsKLSAgfSwgIiIpOwotfQotCi1URVNUKFBv
cFVwRGVhdGhUZXN0LCBEb2VzTm90U2hvd1BvcFVwT25UaHJvdykgewotICBwcmludGYoIlRoaXMg
dGVzdCBzaG91bGQgYmUgY29uc2lkZXJlZCBmYWlsaW5nIGlmIGl0IHNob3dzICIKLSAgICAgICAg
ICJhbnkgcG9wLXVwIGRpYWxvZ3MuXG4iKTsKLSAgZmZsdXNoKHN0ZG91dCk7Ci0KLSAgRVhQRUNU
X0RFQVRIKHsKLSAgICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpID0gZmFs
c2U7Ci0gICAgdGhyb3cgMTsKLSAgfSwgIiIpOwotfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5E
T1dTCi0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQlVHX0RFQVRIIGluIGRlYnVnIG1vZGUgZG9l
cyBub3QgYWJvcnQKLS8vIHRoZSBmdW5jdGlvbi4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBF
eHBlY3REZWJ1Z0RlYXRoRG9lc05vdEFib3J0KSB7Ci0gIGJvb2wgYWJvcnRlZCA9IHRydWU7Ci0g
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEV4cGVjdERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQp
LCAiIik7Ci0gIEVYUEVDVF9GQUxTRShhYm9ydGVkKTsKLX0KLQotdm9pZCBBc3NlcnREZWJ1Z0Rl
YXRoSGVscGVyKGJvb2wqIGFib3J0ZWQpIHsKLSAgKmFib3J0ZWQgPSB0cnVlOwotICBBU1NFUlRf
REVCVUdfREVBVEgocmV0dXJuLCAiIikgPDwgIlRoaXMgaXMgZXhwZWN0ZWQgdG8gZmFpbC4iOwot
ICAqYWJvcnRlZCA9IGZhbHNlOwotfQotCi0vLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUJVR19ERUFU
SCBpbiBkZWJ1ZyBtb2RlIGFib3J0cyB0aGUgZnVuY3Rpb24gb24KLS8vIGZhaWx1cmUuCi1URVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0cykgewotICBzdGF0aWMg
Ym9vbCBhYm9ydGVkOwotICBhYm9ydGVkID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJF
KEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7Ci0gIEVYUEVDVF9UUlVFKGFi
b3J0ZWQpOwotfQotCi0jZW5kaWYgIC8vIF9OREVCVUcKLQotLy8gVGVzdHMgdGhlICpfRVhJVCBm
YW1pbHkgb2YgbWFjcm9zLCB1c2luZyBhIHZhcmlldHkgb2YgcHJlZGljYXRlcy4KLXN0YXRpYyB2
b2lkIFRlc3RFeGl0TWFjcm9zKCkgewotICBFWFBFQ1RfRVhJVChfZXhpdCgxKSwgIHRlc3Rpbmc6
OkV4aXRlZFdpdGhDb2RlKDEpLCAgIiIpOwotICBBU1NFUlRfRVhJVChfZXhpdCg0MiksIHRlc3Rp
bmc6OkV4aXRlZFdpdGhDb2RlKDQyKSwgIiIpOwotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotICAv
LyBPZiBhbGwgc2lnbmFscyBlZmZlY3RzIG9uIHRoZSBwcm9jZXNzIGV4aXQgY29kZSwgb25seSB0
aG9zZSBvZiBTSUdBQlJUCi0gIC8vIGFyZSBkb2N1bWVudGVkIG9uIFdpbmRvd3MuCi0gIC8vIFNl
ZSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvZHd3emt0NGMoVlMuNzEp
LmFzcHguCi0gIEVYUEVDVF9FWElUKHJhaXNlKFNJR0FCUlQpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRo
Q29kZSgzKSwgIiIpOwotI2Vsc2UKLSAgRVhQRUNUX0VYSVQocmFpc2UoU0lHS0lMTCksIHRlc3Rp
bmc6OktpbGxlZEJ5U2lnbmFsKFNJR0tJTEwpLCAiIikgPDwgImZvbyI7Ci0gIEFTU0VSVF9FWElU
KHJhaXNlKFNJR1VTUjIpLCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChTSUdVU1IyKSwgIiIpIDw8
ICJiYXIiOwotCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VS
VF9FWElUKF9leGl0KDApLCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChTSUdTRUdWKSwgIiIpCi0g
ICAgICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIHRvby4iOwotICB9LCAiVGhpcyBm
YWlsdXJlIGlzIGV4cGVjdGVkLCB0b28uIik7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MK
LQotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfRVhJ
VChyYWlzZShTSUdTRUdWKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCksICIiKQotICAgICAg
ICA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiI7Ci0gIH0sICJUaGlzIGZhaWx1cmUgaXMg
ZXhwZWN0ZWQuIik7Ci19Ci0KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFeGl0TWFjcm9zKSB7
Ci0gIFRlc3RFeGl0TWFjcm9zKCk7Ci19Ci0KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFeGl0
TWFjcm9zVXNpbmdGb3JrKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2Vf
Zm9yaykgPSB0cnVlOwotICBUZXN0RXhpdE1hY3JvcygpOwotfQotCi1URVNUX0YoVGVzdEZvckRl
YXRoVGVzdCwgSW52YWxpZFN0eWxlKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVz
dF9zdHlsZSkgPSAicm9jb2NvIjsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9M
SU5UCi0gICAgRVhQRUNUX0RFQVRIKF9leGl0KDApLCAiIikgPDwgIlRoaXMgZmFpbHVyZSBpcyBl
eHBlY3RlZC4iOwotICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOwotfQotCi0vLyBB
IERlYXRoVGVzdEZhY3RvcnkgdGhhdCByZXR1cm5zIE1vY2tEZWF0aFRlc3RzLgotY2xhc3MgTW9j
a0RlYXRoVGVzdEZhY3RvcnkgOiBwdWJsaWMgRGVhdGhUZXN0RmFjdG9yeSB7Ci0gcHVibGljOgot
ICBNb2NrRGVhdGhUZXN0RmFjdG9yeSgpOwotICB2aXJ0dWFsIGJvb2wgQ3JlYXRlKGNvbnN0IGNo
YXIqIHN0YXRlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpSRSogcmVnZXgsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmls
ZSwgaW50IGxpbmUsIERlYXRoVGVzdCoqIHRlc3QpOwotCi0gIC8vIFNldHMgdGhlIHBhcmFtZXRl
cnMgZm9yIHN1YnNlcXVlbnQgY2FsbHMgdG8gQ3JlYXRlLgotICB2b2lkIFNldFBhcmFtZXRlcnMo
Ym9vbCBjcmVhdGUsIERlYXRoVGVzdDo6VGVzdFJvbGUgcm9sZSwKLSAgICAgICAgICAgICAgICAg
ICAgIGludCBzdGF0dXMsIGJvb2wgcGFzc2VkKTsKLQotICAvLyBBY2Nlc3NvcnMuCi0gIGludCBB
c3N1bWVSb2xlQ2FsbHMoKSBjb25zdCB7IHJldHVybiBhc3N1bWVfcm9sZV9jYWxsc187IH0KLSAg
aW50IFdhaXRDYWxscygpIGNvbnN0IHsgcmV0dXJuIHdhaXRfY2FsbHNfOyB9Ci0gIGludCBQYXNz
ZWRDYWxscygpIGNvbnN0IHsgcmV0dXJuIHBhc3NlZF9hcmdzXy5zaXplKCk7IH0KLSAgYm9vbCBQ
YXNzZWRBcmd1bWVudChpbnQgbikgY29uc3QgeyByZXR1cm4gcGFzc2VkX2FyZ3NfW25dOyB9Ci0g
IGludCBBYm9ydENhbGxzKCkgY29uc3QgeyByZXR1cm4gYWJvcnRfYXJnc18uc2l6ZSgpOyB9Ci0g
IERlYXRoVGVzdDo6QWJvcnRSZWFzb24gQWJvcnRBcmd1bWVudChpbnQgbikgY29uc3QgewotICAg
IHJldHVybiBhYm9ydF9hcmdzX1tuXTsKLSAgfQotICBib29sIFRlc3REZWxldGVkKCkgY29uc3Qg
eyByZXR1cm4gdGVzdF9kZWxldGVkXzsgfQotCi0gcHJpdmF0ZToKLSAgZnJpZW5kIGNsYXNzIE1v
Y2tEZWF0aFRlc3Q7Ci0gIC8vIElmIHRydWUsIENyZWF0ZSB3aWxsIHJldHVybiBhIE1vY2tEZWF0
aFRlc3Q7IG90aGVyd2lzZSBpdCByZXR1cm5zCi0gIC8vIE5VTEwuCi0gIGJvb2wgY3JlYXRlXzsK
LSAgLy8gVGhlIHZhbHVlIGEgTW9ja0RlYXRoVGVzdCB3aWxsIHJldHVybiBmcm9tIGl0cyBBc3N1
bWVSb2xlIG1ldGhvZC4KLSAgRGVhdGhUZXN0OjpUZXN0Um9sZSByb2xlXzsKLSAgLy8gVGhlIHZh
bHVlIGEgTW9ja0RlYXRoVGVzdCB3aWxsIHJldHVybiBmcm9tIGl0cyBXYWl0IG1ldGhvZC4KLSAg
aW50IHN0YXR1c187Ci0gIC8vIFRoZSB2YWx1ZSBhIE1vY2tEZWF0aFRlc3Qgd2lsbCByZXR1cm4g
ZnJvbSBpdHMgUGFzc2VkIG1ldGhvZC4KLSAgYm9vbCBwYXNzZWRfOwotCi0gIC8vIE51bWJlciBv
ZiB0aW1lcyBBc3N1bWVSb2xlIHdhcyBjYWxsZWQuCi0gIGludCBhc3N1bWVfcm9sZV9jYWxsc187
Ci0gIC8vIE51bWJlciBvZiB0aW1lcyBXYWl0IHdhcyBjYWxsZWQuCi0gIGludCB3YWl0X2NhbGxz
XzsKLSAgLy8gVGhlIGFyZ3VtZW50cyB0byB0aGUgY2FsbHMgdG8gUGFzc2VkIHNpbmNlIHRoZSBs
YXN0IGNhbGwgdG8KLSAgLy8gU2V0UGFyYW1ldGVycy4KLSAgc3RkOjp2ZWN0b3I8Ym9vbD4gcGFz
c2VkX2FyZ3NfOwotICAvLyBUaGUgYXJndW1lbnRzIHRvIHRoZSBjYWxscyB0byBBYm9ydCBzaW5j
ZSB0aGUgbGFzdCBjYWxsIHRvCi0gIC8vIFNldFBhcmFtZXRlcnMuCi0gIHN0ZDo6dmVjdG9yPERl
YXRoVGVzdDo6QWJvcnRSZWFzb24+IGFib3J0X2FyZ3NfOwotICAvLyBUcnVlIGlmIHRoZSBsYXN0
IE1vY2tEZWF0aFRlc3QgcmV0dXJuZWQgYnkgQ3JlYXRlIGhhcyBiZWVuCi0gIC8vIGRlbGV0ZWQu
Ci0gIGJvb2wgdGVzdF9kZWxldGVkXzsKLX07Ci0KLQotLy8gQSBEZWF0aFRlc3QgaW1wbGVtZW50
YXRpb24gdXNlZnVsIGluIHRlc3RpbmcuICBJdCByZXR1cm5zIHZhbHVlcyBzZXQKLS8vIGF0IGl0
cyBjcmVhdGlvbiBmcm9tIGl0cyB2YXJpb3VzIGluaGVyaXRlZCBEZWF0aFRlc3QgbWV0aG9kcywg
YW5kCi0vLyByZXBvcnRzIGNhbGxzIHRvIHRob3NlIG1ldGhvZHMgdG8gaXRzIHBhcmVudCBNb2Nr
RGVhdGhUZXN0RmFjdG9yeQotLy8gb2JqZWN0LgotY2xhc3MgTW9ja0RlYXRoVGVzdCA6IHB1Ymxp
YyBEZWF0aFRlc3QgewotIHB1YmxpYzoKLSAgTW9ja0RlYXRoVGVzdChNb2NrRGVhdGhUZXN0RmFj
dG9yeSAqcGFyZW50LAotICAgICAgICAgICAgICAgIFRlc3RSb2xlIHJvbGUsIGludCBzdGF0dXMs
IGJvb2wgcGFzc2VkKSA6Ci0gICAgICBwYXJlbnRfKHBhcmVudCksIHJvbGVfKHJvbGUpLCBzdGF0
dXNfKHN0YXR1cyksIHBhc3NlZF8ocGFzc2VkKSB7Ci0gIH0KLSAgdmlydHVhbCB+TW9ja0RlYXRo
VGVzdCgpIHsKLSAgICBwYXJlbnRfLT50ZXN0X2RlbGV0ZWRfID0gdHJ1ZTsKLSAgfQotICB2aXJ0
dWFsIFRlc3RSb2xlIEFzc3VtZVJvbGUoKSB7Ci0gICAgKytwYXJlbnRfLT5hc3N1bWVfcm9sZV9j
YWxsc187Ci0gICAgcmV0dXJuIHJvbGVfOwotICB9Ci0gIHZpcnR1YWwgaW50IFdhaXQoKSB7Ci0g
ICAgKytwYXJlbnRfLT53YWl0X2NhbGxzXzsKLSAgICByZXR1cm4gc3RhdHVzXzsKLSAgfQotICB2
aXJ0dWFsIGJvb2wgUGFzc2VkKGJvb2wgZXhpdF9zdGF0dXNfb2spIHsKLSAgICBwYXJlbnRfLT5w
YXNzZWRfYXJnc18ucHVzaF9iYWNrKGV4aXRfc3RhdHVzX29rKTsKLSAgICByZXR1cm4gcGFzc2Vk
XzsKLSAgfQotICB2aXJ0dWFsIHZvaWQgQWJvcnQoQWJvcnRSZWFzb24gcmVhc29uKSB7Ci0gICAg
cGFyZW50Xy0+YWJvcnRfYXJnc18ucHVzaF9iYWNrKHJlYXNvbik7Ci0gIH0KLSBwcml2YXRlOgot
ICBNb2NrRGVhdGhUZXN0RmFjdG9yeSogY29uc3QgcGFyZW50XzsKLSAgY29uc3QgVGVzdFJvbGUg
cm9sZV87Ci0gIGNvbnN0IGludCBzdGF0dXNfOwotICBjb25zdCBib29sIHBhc3NlZF87Ci19Owot
Ci0KLS8vIE1vY2tEZWF0aFRlc3RGYWN0b3J5IGNvbnN0cnVjdG9yLgotTW9ja0RlYXRoVGVzdEZh
Y3Rvcnk6Ok1vY2tEZWF0aFRlc3RGYWN0b3J5KCkKLSAgICA6IGNyZWF0ZV8odHJ1ZSksCi0gICAg
ICByb2xlXyhEZWF0aFRlc3Q6Ok9WRVJTRUVfVEVTVCksCi0gICAgICBzdGF0dXNfKDApLAotICAg
ICAgcGFzc2VkXyh0cnVlKSwKLSAgICAgIGFzc3VtZV9yb2xlX2NhbGxzXygwKSwKLSAgICAgIHdh
aXRfY2FsbHNfKDApLAotICAgICAgcGFzc2VkX2FyZ3NfKCksCi0gICAgICBhYm9ydF9hcmdzXygp
IHsKLX0KLQotCi0vLyBTZXRzIHRoZSBwYXJhbWV0ZXJzIGZvciBzdWJzZXF1ZW50IGNhbGxzIHRv
IENyZWF0ZS4KLXZvaWQgTW9ja0RlYXRoVGVzdEZhY3Rvcnk6OlNldFBhcmFtZXRlcnMoYm9vbCBj
cmVhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlYXRoVGVz
dDo6VGVzdFJvbGUgcm9sZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHN0YXR1cywgYm9vbCBwYXNzZWQpIHsKLSAgY3JlYXRlXyA9IGNyZWF0ZTsKLSAgcm9s
ZV8gPSByb2xlOwotICBzdGF0dXNfID0gc3RhdHVzOwotICBwYXNzZWRfID0gcGFzc2VkOwotCi0g
IGFzc3VtZV9yb2xlX2NhbGxzXyA9IDA7Ci0gIHdhaXRfY2FsbHNfID0gMDsKLSAgcGFzc2VkX2Fy
Z3NfLmNsZWFyKCk7Ci0gIGFib3J0X2FyZ3NfLmNsZWFyKCk7Ci19Ci0KLQotLy8gU2V0cyB0ZXN0
IHRvIE5VTEwgKGlmIGNyZWF0ZV8gaXMgZmFsc2UpIG9yIHRvIHRoZSBhZGRyZXNzIG9mIGEgbmV3
Ci0vLyBNb2NrRGVhdGhUZXN0IG9iamVjdCB3aXRoIHBhcmFtZXRlcnMgdGFrZW4gZnJvbSB0aGUg
bGFzdCBjYWxsCi0vLyB0byBTZXRQYXJhbWV0ZXJzIChpZiBjcmVhdGVfIGlzIHRydWUpLiAgQWx3
YXlzIHJldHVybnMgdHJ1ZS4KLWJvb2wgTW9ja0RlYXRoVGVzdEZhY3Rvcnk6OkNyZWF0ZShjb25z
dCBjaGFyKiAvKnN0YXRlbWVudCovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6OlJFKiAvKnJlZ2V4Ki8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLypmaWxlKi8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IC8qbGluZSovLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERlYXRoVGVzdCoqIHRlc3QpIHsKLSAgdGVzdF9kZWxldGVkXyA9IGZhbHNl
OwotICBpZiAoY3JlYXRlXykgewotICAgICp0ZXN0ID0gbmV3IE1vY2tEZWF0aFRlc3QodGhpcywg
cm9sZV8sIHN0YXR1c18sIHBhc3NlZF8pOwotICB9IGVsc2UgewotICAgICp0ZXN0ID0gTlVMTDsK
LSAgfQotICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gQSB0ZXN0IGZpeHR1cmUgZm9yIHRlc3Rpbmcg
dGhlIGxvZ2ljIG9mIHRoZSBHVEVTVF9ERUFUSF9URVNUXyBtYWNyby4KLS8vIEl0IGluc3RhbGxz
IGEgTW9ja0RlYXRoVGVzdEZhY3RvcnkgdGhhdCBpcyB1c2VkIGZvciB0aGUgZHVyYXRpb24KLS8v
IG9mIHRoZSB0ZXN0IGNhc2UuCi1jbGFzcyBNYWNyb0xvZ2ljRGVhdGhUZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgc3RhdGljIHRlc3Rpbmc6OmludGVybmFsOjpS
ZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSogcmVwbGFjZXJfOwotICBzdGF0aWMgTW9ja0RlYXRoVGVz
dEZhY3RvcnkqIGZhY3RvcnlfOwotCi0gIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7Ci0g
ICAgZmFjdG9yeV8gPSBuZXcgTW9ja0RlYXRoVGVzdEZhY3Rvcnk7Ci0gICAgcmVwbGFjZXJfID0g
bmV3IHRlc3Rpbmc6OmludGVybmFsOjpSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeShmYWN0b3J5Xyk7
Ci0gIH0KLQotICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgewotICAgIGRlbGV0ZSBy
ZXBsYWNlcl87Ci0gICAgcmVwbGFjZXJfID0gTlVMTDsKLSAgICBkZWxldGUgZmFjdG9yeV87Ci0g
ICAgZmFjdG9yeV8gPSBOVUxMOwotICB9Ci0KLSAgLy8gUnVucyBhIGRlYXRoIHRlc3QgdGhhdCBi
cmVha3MgdGhlIHJ1bGVzIGJ5IHJldHVybmluZy4gIFN1Y2ggYSBkZWF0aAotICAvLyB0ZXN0IGNh
bm5vdCBiZSBydW4gZGlyZWN0bHkgZnJvbSBhIHRlc3Qgcm91dGluZSB0aGF0IHVzZXMgYQotICAv
LyBNb2NrRGVhdGhUZXN0LCBvciB0aGUgcmVtYWluZGVyIG9mIHRoZSByb3V0aW5lIHdpbGwgbm90
IGJlIGV4ZWN1dGVkLgotICBzdGF0aWMgdm9pZCBSdW5SZXR1cm5pbmdEZWF0aFRlc3QoYm9vbCog
ZmxhZykgewotICAgIEFTU0VSVF9ERUFUSCh7ICAvLyBOT0xJTlQKLSAgICAgICpmbGFnID0gdHJ1
ZTsKLSAgICAgIHJldHVybjsKLSAgICB9LCAiIik7Ci0gIH0KLX07Ci0KLXRlc3Rpbmc6OmludGVy
bmFsOjpSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSogTWFjcm9Mb2dpY0RlYXRoVGVzdDo6cmVwbGFj
ZXJfCi0gICAgPSBOVUxMOwotTW9ja0RlYXRoVGVzdEZhY3RvcnkqIE1hY3JvTG9naWNEZWF0aFRl
c3Q6OmZhY3RvcnlfID0gTlVMTDsKLQotCi0vLyBUZXN0IHRoYXQgbm90aGluZyBoYXBwZW5zIHdo
ZW4gdGhlIGZhY3RvcnkgZG9lc24ndCByZXR1cm4gYSBEZWF0aFRlc3Q6Ci1URVNUX0YoTWFjcm9M
b2dpY0RlYXRoVGVzdCwgTm90aGluZ0hhcHBlbnMpIHsKLSAgYm9vbCBmbGFnID0gZmFsc2U7Ci0g
IGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJzKGZhbHNlLCBEZWF0aFRlc3Q6Ok9WRVJTRUVfVEVTVCwg
MCwgdHJ1ZSk7Ci0gIEVYUEVDVF9ERUFUSChmbGFnID0gdHJ1ZSwgIiIpOwotICBFWFBFQ1RfRkFM
U0UoZmxhZyk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOwot
ICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPldhaXRDYWxscygpKTsKLSAgRVhQRUNUX0VRKDAsIGZh
Y3RvcnlfLT5QYXNzZWRDYWxscygpKTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5BYm9ydENh
bGxzKCkpOwotICBFWFBFQ1RfRkFMU0UoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkpOwotfQotCi0v
LyBUZXN0IHRoYXQgdGhlIHBhcmVudCBwcm9jZXNzIGRvZXNuJ3QgcnVuIHRoZSBkZWF0aCB0ZXN0
IGNvZGUsCi0vLyBhbmQgdGhhdCB0aGUgUGFzc2VkIG1ldGhvZCByZXR1cm5zIGZhbHNlIHdoZW4g
dGhlIChzaW11bGF0ZWQpCi0vLyBjaGlsZCBwcm9jZXNzIGV4aXRzIHdpdGggc3RhdHVzIDA6Ci1U
RVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwgQ2hpbGRFeGl0c1N1Y2Nlc3NmdWxseSkgewotICBi
b29sIGZsYWcgPSBmYWxzZTsKLSAgZmFjdG9yeV8tPlNldFBhcmFtZXRlcnModHJ1ZSwgRGVhdGhU
ZXN0OjpPVkVSU0VFX1RFU1QsIDAsIHRydWUpOwotICBFWFBFQ1RfREVBVEgoZmxhZyA9IHRydWUs
ICIiKTsKLSAgRVhQRUNUX0ZBTFNFKGZsYWcpOwotICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFz
c3VtZVJvbGVDYWxscygpKTsKLSAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7
Ci0gIEFTU0VSVF9FUSgxLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7Ci0gIEVYUEVDVF9GQUxT
RShmYWN0b3J5Xy0+UGFzc2VkQXJndW1lbnQoMCkpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8t
PkFib3J0Q2FsbHMoKSk7Ci0gIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgUGFzc2VkIG1ldGhvZCB3YXMgZ2l2ZW4gdGhlIGFyZ3Vt
ZW50ICJ0cnVlIiB3aGVuCi0vLyB0aGUgKHNpbXVsYXRlZCkgY2hpbGQgcHJvY2VzcyBleGl0cyB3
aXRoIHN0YXR1cyAxOgotVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxkRXhpdHNVbnN1
Y2Nlc3NmdWxseSkgewotICBib29sIGZsYWcgPSBmYWxzZTsKLSAgZmFjdG9yeV8tPlNldFBhcmFt
ZXRlcnModHJ1ZSwgRGVhdGhUZXN0OjpPVkVSU0VFX1RFU1QsIDEsIHRydWUpOwotICBFWFBFQ1Rf
REVBVEgoZmxhZyA9IHRydWUsICIiKTsKLSAgRVhQRUNUX0ZBTFNFKGZsYWcpOwotICBFWFBFQ1Rf
RVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKLSAgRVhQRUNUX0VRKDEsIGZhY3Rv
cnlfLT5XYWl0Q2FsbHMoKSk7Ci0gIEFTU0VSVF9FUSgxLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMo
KSk7Ci0gIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5QYXNzZWRBcmd1bWVudCgwKSk7Ci0gIEVYUEVD
VF9FUSgwLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKLSAgRVhQRUNUX1RSVUUoZmFjdG9yeV8t
PlRlc3REZWxldGVkKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSAoc2ltdWxhdGVkKSBjaGls
ZCBwcm9jZXNzIGV4ZWN1dGVzIHRoZSBkZWF0aCB0ZXN0Ci0vLyBjb2RlLCBhbmQgaXMgYWJvcnRl
ZCB3aXRoIHRoZSBjb3JyZWN0IEFib3J0UmVhc29uIGlmIGl0Ci0vLyBleGVjdXRlcyBhIHJldHVy
biBzdGF0ZW1lbnQuCi1URVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwgQ2hpbGRQZXJmb3Jtc1Jl
dHVybikgewotICBib29sIGZsYWcgPSBmYWxzZTsKLSAgZmFjdG9yeV8tPlNldFBhcmFtZXRlcnMo
dHJ1ZSwgRGVhdGhUZXN0OjpFWEVDVVRFX1RFU1QsIDAsIHRydWUpOwotICBSdW5SZXR1cm5pbmdE
ZWF0aFRlc3QoJmZsYWcpOwotICBFWFBFQ1RfVFJVRShmbGFnKTsKLSAgRVhQRUNUX0VRKDEsIGZh
Y3RvcnlfLT5Bc3N1bWVSb2xlQ2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+V2Fp
dENhbGxzKCkpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOwotICBF
WFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7Ci0gIEVYUEVDVF9FUShEZWF0aFRl
c3Q6OlRFU1RfRU5DT1VOVEVSRURfUkVUVVJOX1NUQVRFTUVOVCwKLSAgICAgICAgICAgIGZhY3Rv
cnlfLT5BYm9ydEFyZ3VtZW50KDApKTsKLSAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3REZWxl
dGVkKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSAoc2ltdWxhdGVkKSBjaGlsZCBwcm9jZXNz
IGlzIGFib3J0ZWQgd2l0aCB0aGUKLS8vIGNvcnJlY3QgQWJvcnRSZWFzb24gaWYgaXQgZG9lcyBu
b3QgZGllLgotVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxkRG9lc05vdERpZSkgewot
ICBib29sIGZsYWcgPSBmYWxzZTsKLSAgZmFjdG9yeV8tPlNldFBhcmFtZXRlcnModHJ1ZSwgRGVh
dGhUZXN0OjpFWEVDVVRFX1RFU1QsIDAsIHRydWUpOwotICBFWFBFQ1RfREVBVEgoZmxhZyA9IHRy
dWUsICIiKTsKLSAgRVhQRUNUX1RSVUUoZmxhZyk7Ci0gIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+
QXNzdW1lUm9sZUNhbGxzKCkpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPldhaXRDYWxscygp
KTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKLSAgLy8gVGhpcyB0
aW1lIHRoZXJlIGFyZSB0d28gY2FsbHMgdG8gQWJvcnQ6IG9uZSBzaW5jZSB0aGUgdGVzdCBkaWRu
J3QKLSAgLy8gZGllLCBhbmQgYW5vdGhlciBmcm9tIHRoZSBSZXR1cm5TZW50aW5lbCB3aGVuIGl0
J3MgZGVzdHJveWVkLiAgVGhlCi0gIC8vIHNlbnRpbmVsIG5vcm1hbGx5IGlzbid0IGRlc3Ryb3ll
ZCBpZiBhIHRlc3QgZG9lc24ndCBkaWUsIHNpbmNlCi0gIC8vIF9leGl0KDIpIGlzIGNhbGxlZCBp
biB0aGF0IGNhc2UgYnkgRm9ya2luZ0RlYXRoVGVzdCwgYnV0IG5vdCBieQotICAvLyBvdXIgTW9j
a0RlYXRoVGVzdC4KLSAgQVNTRVJUX0VRKDIsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOwotICBF
WFBFQ1RfRVEoRGVhdGhUZXN0OjpURVNUX0RJRF9OT1RfRElFLAotICAgICAgICAgICAgZmFjdG9y
eV8tPkFib3J0QXJndW1lbnQoMCkpOwotICBFWFBFQ1RfRVEoRGVhdGhUZXN0OjpURVNUX0VOQ09V
TlRFUkVEX1JFVFVSTl9TVEFURU1FTlQsCi0gICAgICAgICAgICBmYWN0b3J5Xy0+QWJvcnRBcmd1
bWVudCgxKSk7Ci0gIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBhIHN1Y2Nlc3NmdWwgZGVhdGggdGVzdCBkb2VzIG5vdCByZWdpc3RlciBh
IHN1Y2Nlc3NmdWwKLS8vIHRlc3QgcGFydC4KLVRFU1QoU3VjY2Vzc1JlZ2lzdHJhdGlvbkRlYXRo
VGVzdCwgTm9TdWNjZXNzUGFydCkgewotICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKTsKLSAg
RVhQRUNUX0VRKDAsIEdldFVuaXRUZXN0SW1wbCgpLT5jdXJyZW50X3Rlc3RfcmVzdWx0KCktPnRv
dGFsX3BhcnRfY291bnQoKSk7Ci19Ci0KLVRFU1QoU3RyZWFtaW5nQXNzZXJ0aW9uc0RlYXRoVGVz
dCwgRGVhdGhUZXN0KSB7Ci0gIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8ICJ1bmV4cGVj
dGVkIGZhaWx1cmUiOwotICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIiKSA8PCAidW5leHBlY3Rl
ZCBmYWlsdXJlIjsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAg
RVhQRUNUX0RFQVRIKF9leGl0KDApLCAiIikgPDwgImV4cGVjdGVkIGZhaWx1cmUiOwotICB9LCAi
ZXhwZWN0ZWQgZmFpbHVyZSIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQK
LSAgICBBU1NFUlRfREVBVEgoX2V4aXQoMCksICIiKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSI7Ci0g
IH0sICJleHBlY3RlZCBmYWlsdXJlIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgR2V0TGFzdEVycm5v
RGVzY3JpcHRpb24gcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgd2hlbiB0aGUKLS8vIGxhc3QgZXJy
b3IgaXMgMCBhbmQgbm9uLWVtcHR5IHN0cmluZyB3aGVuIGl0IGlzIG5vbi16ZXJvLgotVEVTVChH
ZXRMYXN0RXJybm9EZXNjcmlwdGlvbiwgR2V0TGFzdEVycm5vRGVzY3JpcHRpb25Xb3Jrcykgewot
ICBlcnJubyA9IEVOT0VOVDsKLSAgRVhQRUNUX1NUUk5FKCIiLCBHZXRMYXN0RXJybm9EZXNjcmlw
dGlvbigpLmNfc3RyKCkpOwotICBlcnJubyA9IDA7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgR2V0TGFz
dEVycm5vRGVzY3JpcHRpb24oKS5jX3N0cigpKTsKLX0KLQotI2lmIEdURVNUX09TX1dJTkRPV1MK
LVRFU1QoQXV0b0hhbmRsZVRlc3QsIEF1dG9IYW5kbGVXb3JrcykgewotICBIQU5ETEUgaGFuZGxl
ID0gOjpDcmVhdGVFdmVudChOVUxMLCBGQUxTRSwgRkFMU0UsIE5VTEwpOwotICBBU1NFUlRfTkUo
SU5WQUxJRF9IQU5ETEVfVkFMVUUsIGhhbmRsZSk7Ci0KLSAgLy8gVGVzdHMgdGhhdCB0aGUgQXV0
b0hhbmRsZSBpcyBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgd2l0aCBhIGhhbmRsZS4KLSAgdGVzdGlu
Zzo6aW50ZXJuYWw6OkF1dG9IYW5kbGUgYXV0b19oYW5kbGUoaGFuZGxlKTsKLSAgRVhQRUNUX0VR
KGhhbmRsZSwgYXV0b19oYW5kbGUuR2V0KCkpOwotCi0gIC8vIFRlc3RzIHRoYXQgUmVzZXQgYXNz
aWducyBJTlZBTElEX0hBTkRMRV9WQUxVRS4KLSAgLy8gTm90ZSB0aGF0IHRoaXMgY2Fubm90IHZl
cmlmeSB3aGV0aGVyIHRoZSBvcmlnaW5hbCBoYW5kbGUgaXMgY2xvc2VkLgotICBhdXRvX2hhbmRs
ZS5SZXNldCgpOwotICBFWFBFQ1RfRVEoSU5WQUxJRF9IQU5ETEVfVkFMVUUsIGF1dG9faGFuZGxl
LkdldCgpKTsKLQotICAvLyBUZXN0cyB0aGF0IFJlc2V0IGFzc2lnbnMgdGhlIG5ldyBoYW5kbGUu
Ci0gIC8vIE5vdGUgdGhhdCB0aGlzIGNhbm5vdCB2ZXJpZnkgd2hldGhlciB0aGUgb3JpZ2luYWwg
aGFuZGxlIGlzIGNsb3NlZC4KLSAgaGFuZGxlID0gOjpDcmVhdGVFdmVudChOVUxMLCBGQUxTRSwg
RkFMU0UsIE5VTEwpOwotICBBU1NFUlRfTkUoSU5WQUxJRF9IQU5ETEVfVkFMVUUsIGhhbmRsZSk7
Ci0gIGF1dG9faGFuZGxlLlJlc2V0KGhhbmRsZSk7Ci0gIEVYUEVDVF9FUShoYW5kbGUsIGF1dG9f
aGFuZGxlLkdldCgpKTsKLQotICAvLyBUZXN0cyB0aGF0IEF1dG9IYW5kbGUgY29udGFpbnMgSU5W
QUxJRF9IQU5ETEVfVkFMVUUgYnkgZGVmYXVsdC4KLSAgdGVzdGluZzo6aW50ZXJuYWw6OkF1dG9I
YW5kbGUgYXV0b19oYW5kbGUyOwotICBFWFBFQ1RfRVEoSU5WQUxJRF9IQU5ETEVfVkFMVUUsIGF1
dG9faGFuZGxlMi5HZXQoKSk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotI2lm
IEdURVNUX09TX1dJTkRPV1MKLXR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCBCaWdnZXN0UGFyc2Fi
bGU7Ci10eXBlZGVmIHNpZ25lZCBfX2ludDY0IEJpZ2dlc3RTaWduZWRQYXJzYWJsZTsKLWNvbnN0
IEJpZ2dlc3RQYXJzYWJsZSBrQmlnZ2VzdFBhcnNhYmxlTWF4ID0gVUxMT05HX01BWDsKLWNvbnN0
IEJpZ2dlc3RQYXJzYWJsZSBrQmlnZ2VzdFNpZ25lZFBhcnNhYmxlTWF4ID0gTExPTkdfTUFYOwot
I2Vsc2UKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEJpZ2dlc3RQYXJzYWJsZTsKLXR5cGVk
ZWYgc2lnbmVkIGxvbmcgbG9uZyBCaWdnZXN0U2lnbmVkUGFyc2FibGU7Ci1jb25zdCBCaWdnZXN0
UGFyc2FibGUga0JpZ2dlc3RQYXJzYWJsZU1heCA9Ci0gICAgOjpzdGQ6Om51bWVyaWNfbGltaXRz
PEJpZ2dlc3RQYXJzYWJsZT46Om1heCgpOwotY29uc3QgQmlnZ2VzdFNpZ25lZFBhcnNhYmxlIGtC
aWdnZXN0U2lnbmVkUGFyc2FibGVNYXggPQotICAgIDo6c3RkOjpudW1lcmljX2xpbWl0czxCaWdn
ZXN0U2lnbmVkUGFyc2FibGU+OjptYXgoKTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwot
Ci1URVNUKFBhcnNlTmF0dXJhbE51bWJlclRlc3QsIFJlamVjdHNJbnZhbGlkRm9ybWF0KSB7Ci0g
IEJpZ2dlc3RQYXJzYWJsZSByZXN1bHQgPSAwOwotCi0gIC8vIFJlamVjdHMgbm9uLW51bWJlcnMu
Ci0gIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCJub24tbnVtYmVyIHN0
cmluZyIpLCAmcmVzdWx0KSk7Ci0KLSAgLy8gUmVqZWN0cyBudW1iZXJzIHdpdGggd2hpdGVzcGFj
ZSBwcmVmaXguCi0gIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCIgMTIz
IiksICZyZXN1bHQpKTsKLQotICAvLyBSZWplY3RzIG5lZ2F0aXZlIG51bWJlcnMuCi0gIEVYUEVD
VF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCItMTIzIiksICZyZXN1bHQpKTsKLQot
ICAvLyBSZWplY3RzIG51bWJlcnMgc3RhcnRpbmcgd2l0aCBhIHBsdXMgc2lnbi4KLSAgRVhQRUNU
X0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIisxMjMiKSwgJnJlc3VsdCkpOwotICBl
cnJubyA9IDA7Ci19Ci0KLVRFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgUmVqZWN0c092ZXJm
bG93bk51bWJlcnMpIHsKLSAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7Ci0KLSAgRVhQRUNU
X0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
IiksICZyZXN1bHQpKTsKLQotICBzaWduZWQgY2hhciBjaGFyX3Jlc3VsdCA9IDA7Ci0gIEVYUEVD
VF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCIyMDAiKSwgJmNoYXJfcmVzdWx0KSk7
Ci0gIGVycm5vID0gMDsKLX0KLQotVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBBY2NlcHRz
VmFsaWROdW1iZXJzKSB7Ci0gIEJpZ2dlc3RQYXJzYWJsZSByZXN1bHQgPSAwOwotCi0gIHJlc3Vs
dCA9IDA7Ci0gIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIjEyMyIpLCAm
cmVzdWx0KSk7Ci0gIEVYUEVDVF9FUSgxMjNVLCByZXN1bHQpOwotCi0gIC8vIENoZWNrIDAgYXMg
YW4gZWRnZSBjYXNlLgotICByZXN1bHQgPSAxOwotICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxO
dW1iZXIoU3RyaW5nKCIwIiksICZyZXN1bHQpKTsKLSAgRVhQRUNUX0VRKDBVLCByZXN1bHQpOwot
Ci0gIHJlc3VsdCA9IDE7Ci0gIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihTdHJpbmco
IjAwMDAwIiksICZyZXN1bHQpKTsKLSAgRVhQRUNUX0VRKDBVLCByZXN1bHQpOwotfQotCi1URVNU
KFBhcnNlTmF0dXJhbE51bWJlclRlc3QsIEFjY2VwdHNUeXBlTGltaXRzKSB7Ci0gIE1lc3NhZ2Ug
bXNnOwotICBtc2cgPDwga0JpZ2dlc3RQYXJzYWJsZU1heDsKLQotICBCaWdnZXN0UGFyc2FibGUg
cmVzdWx0ID0gMDsKLSAgRVhQRUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKG1zZy5HZXRTdHJp
bmcoKSwgJnJlc3VsdCkpOwotICBFWFBFQ1RfRVEoa0JpZ2dlc3RQYXJzYWJsZU1heCwgcmVzdWx0
KTsKLQotICBNZXNzYWdlIG1zZzI7Ci0gIG1zZzIgPDwga0JpZ2dlc3RTaWduZWRQYXJzYWJsZU1h
eDsKLQotICBCaWdnZXN0U2lnbmVkUGFyc2FibGUgc2lnbmVkX3Jlc3VsdCA9IDA7Ci0gIEVYUEVD
VF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihtc2cyLkdldFN0cmluZygpLCAmc2lnbmVkX3Jlc3Vs
dCkpOwotICBFWFBFQ1RfRVEoa0JpZ2dlc3RTaWduZWRQYXJzYWJsZU1heCwgc2lnbmVkX3Jlc3Vs
dCk7Ci0KLSAgTWVzc2FnZSBtc2czOwotICBtc2czIDw8IElOVF9NQVg7Ci0KLSAgaW50IGludF9y
ZXN1bHQgPSAwOwotICBFWFBFQ1RfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIobXNnMy5HZXRTdHJp
bmcoKSwgJmludF9yZXN1bHQpKTsKLSAgRVhQRUNUX0VRKElOVF9NQVgsIGludF9yZXN1bHQpOwot
Ci0gIE1lc3NhZ2UgbXNnNDsKLSAgbXNnNCA8PCBVSU5UX01BWDsKLQotICB1bnNpZ25lZCBpbnQg
dWludF9yZXN1bHQgPSAwOwotICBFWFBFQ1RfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIobXNnNC5H
ZXRTdHJpbmcoKSwgJnVpbnRfcmVzdWx0KSk7Ci0gIEVYUEVDVF9FUShVSU5UX01BWCwgdWludF9y
ZXN1bHQpOwotfQotCi1URVNUKFBhcnNlTmF0dXJhbE51bWJlclRlc3QsIFdvcmtzRm9yU2hvcnRl
ckludGVnZXJzKSB7Ci0gIHNob3J0IHNob3J0X3Jlc3VsdCA9IDA7Ci0gIEFTU0VSVF9UUlVFKFBh
cnNlTmF0dXJhbE51bWJlcihTdHJpbmcoIjEyMyIpLCAmc2hvcnRfcmVzdWx0KSk7Ci0gIEVYUEVD
VF9FUSgxMjMsIHNob3J0X3Jlc3VsdCk7Ci0KLSAgc2lnbmVkIGNoYXIgY2hhcl9yZXN1bHQgPSAw
OwotICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCIxMjMiKSwgJmNoYXJf
cmVzdWx0KSk7Ci0gIEVYUEVDVF9FUSgxMjMsIGNoYXJfcmVzdWx0KTsKLX0KLQotI2lmIEdURVNU
X09TX1dJTkRPV1MKLVRFU1QoRW52aXJvbm1lbnRUZXN0LCBIYW5kbGVGaXRzSW50b1NpemVUKSB7
Ci0gIC8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IFJlbW92ZSB0aGlzIHRlc3QgYWZ0ZXIgdGhp
cyBjb25kaXRpb24gaXMgdmVyaWZpZWQKLSAgLy8gaW4gYSBzdGF0aWMgYXNzZXJ0aW9uIGluIGd0
ZXN0LWRlYXRoLXRlc3QuY2MgaW4gdGhlIGZ1bmN0aW9uCi0gIC8vIEdldFN0YXR1c0ZpbGVEZXNj
cmlwdG9yLgotICBBU1NFUlRfVFJVRShzaXplb2YoSEFORExFKSA8PSBzaXplb2Yoc2l6ZV90KSk7
Ci19Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1Rf
REVBVEhfSUZfU1VQUE9SVEVEL0FTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgdHJpZ2dlcgotLy8g
ZmFpbHVyZXMgd2hlbiBkZWF0aCB0ZXN0cyBhcmUgYXZhaWxhYmxlIG9uIHRoZSBzeXN0ZW0uCi1U
RVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NEZWF0aFRlc3QsIEV4cGVjdHNEZWF0aFdoZW5EZWF0
aFRlc3RzQXZhaWxhYmxlKSB7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoRGllSW5zaWRl
KCJDb25kRGVhdGhUZXN0RXhwZWN0TWFjcm8iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZGVhdGggaW5zaWRlIENvbmREZWF0aFRlc3RFeHBlY3RNYWNybyIpOwotICBBU1NFUlRfREVB
VEhfSUZfU1VQUE9SVEVEKERpZUluc2lkZSgiQ29uZERlYXRoVGVzdEFzc2VydE1hY3JvIiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlYXRoIGluc2lkZSBDb25kRGVhdGhUZXN0QXNz
ZXJ0TWFjcm8iKTsKLQotICAvLyBFbXB0eSBzdGF0ZW1lbnQgd2lsbCBub3QgY3Jhc2gsIHdoaWNo
IG11c3QgdHJpZ2dlciBhIGZhaWx1cmUuCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVD
VF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIpLCAiIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJF
KEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIpLCAiIik7Ci19Ci0KLSNlbHNlCi0KLXVz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpDYXB0dXJlU3RkZXJyOwotdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OkdldENhcHR1cmVkU3RkZXJyOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlN0cmlu
ZzsKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEL0FTU0VSVF9ERUFU
SF9JRl9TVVBQT1JURUQgYXJlIHN0aWxsCi0vLyBkZWZpbmVkIGJ1dCBkbyBub3QgdHJpZ2dlciBm
YWlsdXJlcyB3aGVuIGRlYXRoIHRlc3RzIGFyZSBub3QgYXZhaWxhYmxlIG9uCi0vLyB0aGUgc3lz
dGVtLgotVEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zVGVzdCwgV2FybnNXaGVuRGVhdGhUZXN0
c05vdEF2YWlsYWJsZSkgewotICAvLyBFbXB0eSBzdGF0ZW1lbnQgd2lsbCBub3QgY3Jhc2gsIGJ1
dCB0aGF0IHNob3VsZCBub3QgdHJpZ2dlciBhIGZhaWx1cmUKLSAgLy8gd2hlbiBkZWF0aCB0ZXN0
cyBhcmUgbm90IHN1cHBvcnRlZC4KLSAgQ2FwdHVyZVN0ZGVycigpOwotICBFWFBFQ1RfREVBVEhf
SUZfU1VQUE9SVEVEKDssICIiKTsKLSAgU3RyaW5nIG91dHB1dCA9IEdldENhcHR1cmVkU3RkZXJy
KCk7Ci0gIEFTU0VSVF9UUlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiRGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24g
dGhpcyBwbGF0Zm9ybSIpKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCAhPSBzdHJzdHIob3V0cHV0LmNf
c3RyKCksICI7IikpOwotCi0gIC8vIFRoZSBzdHJlYW1lZCBtZXNzYWdlIHNob3VsZCBub3QgYmUg
cHJpbnRlZCBhcyB0aGVyZSBpcyBubyB0ZXN0IGZhaWx1cmUuCi0gIENhcHR1cmVTdGRlcnIoKTsK
LSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIikgPDwgInN0cmVhbWVkIG1lc3NhZ2Ui
OwotICBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVycigpOwotICBBU1NFUlRfVFJVRShOVUxMID09
IHN0cnN0cihvdXRwdXQuY19zdHIoKSwgInN0cmVhbWVkIG1lc3NhZ2UiKSk7Ci0KLSAgQ2FwdHVy
ZVN0ZGVycigpOwotICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKTsgIC8vIE5PTElO
VAotICBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVycigpOwotICBBU1NFUlRfVFJVRShOVUxMICE9
IHN0cnN0cihvdXRwdXQuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRl
YXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKSk7Ci0gIEFTU0VS
VF9UUlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLCAiOyIpKTsKLQotICBDYXB0dXJl
U3RkZXJyKCk7Ci0gIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIpIDw8ICJzdHJlYW1l
ZCBtZXNzYWdlIjsgIC8vIE5PTElOVAotICBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVycigpOwot
ICBBU1NFUlRfVFJVRShOVUxMID09IHN0cnN0cihvdXRwdXQuY19zdHIoKSwgInN0cmVhbWVkIG1l
c3NhZ2UiKSk7Ci19Ci0KLXZvaWQgRnVuY1dpdGhBc3NlcnQoaW50KiBuKSB7Ci0gIEFTU0VSVF9E
RUFUSF9JRl9TVVBQT1JURUQocmV0dXJuOywgIiIpOwotICAoKm4pKys7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCBkb2VzIG5vdCByZXR1cm4gZnJvbSB0aGUg
Y3VycmVudAotLy8gZnVuY3Rpb24gKGFzIEFTU0VSVF9ERUFUSCBkb2VzKSBpZiBkZWF0aCB0ZXN0
cyBhcmUgbm90IHN1cHBvcnRlZC4KLVRFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc1Rlc3QsIEFz
c2VydERlYXREb2VzTm90UmV0dXJuaElmVW5zdXBwb3J0ZWQpIHsKLSAgaW50IG4gPSAwOwotICBG
dW5jV2l0aEFzc2VydCgmbik7Ci0gIEVYUEVDVF9FUSgxLCBuKTsKLX0KLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX0RFQVRIX1RFU1QKLQotLy8gVGVzdHMgdGhhdCB0aGUgZGVhdGggdGVzdCBtYWNyb3Mg
ZXhwYW5kIHRvIGNvZGUgd2hpY2ggbWF5IG9yIG1heSBub3QKLS8vIGJlIGZvbGxvd2VkIGJ5IG9w
ZXJhdG9yPDwsIGFuZCB0aGF0IGluIGVpdGhlciBjYXNlIHRoZSBjb21wbGV0ZSB0ZXh0Ci0vLyBj
b21wcmlzZXMgb25seSBhIHNpbmdsZSBDKysgc3RhdGVtZW50LgotLy8KLS8vIFRoZSBzeW50YXgg
c2hvdWxkIHdvcmsgd2hldGhlciBkZWF0aCB0ZXN0cyBhcmUgYXZhaWxhYmxlIG9yIG5vdC4KLVRF
U1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc1N5bnRheERlYXRoVGVzdCwgU2luZ2xlU3RhdGVtZW50
KSB7Ci0gIGlmIChBbHdheXNGYWxzZSgpKQotICAgIC8vIFRoaXMgd291bGQgZmFpbCBpZiBleGVj
dXRlZDsgdGhpcyBpcyBhIGNvbXBpbGF0aW9uIHRlc3Qgb25seQotICAgIEFTU0VSVF9ERUFUSF9J
Rl9TVVBQT1JURUQocmV0dXJuLCAiIik7Ci0KLSAgaWYgKEFsd2F5c1RydWUoKSkKLSAgICBFWFBF
Q1RfREVBVEhfSUZfU1VQUE9SVEVEKF9leGl0KDEpLCAiIik7Ci0gIGVsc2UKLSAgICAvLyBUaGlz
IGVtcHR5ICJlbHNlIiBicmFuY2ggaXMgbWVhbnQgdG8gZW5zdXJlIHRoYXQgRVhQRUNUX0RFQVRI
Ci0gICAgLy8gZG9lc24ndCBleHBhbmQgaW50byBhbiAiaWYiIHN0YXRlbWVudCB3aXRob3V0IGFu
ICJlbHNlIgotICAgIDsgIC8vIE5PTElOVAotCi0gIGlmIChBbHdheXNGYWxzZSgpKQotICAgIEFT
U0VSVF9ERUFUSF9JRl9TVVBQT1JURUQocmV0dXJuLCAiIikgPDwgImRpZCBub3QgZGllIjsKLQot
ICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAgICA7ICAvLyBOT0xJTlQKLSAgZWxzZQotICAgIEVYUEVD
VF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQoMSksICIiKSA8PCAxIDw8IDIgPDwgMzsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBjb25kaXRpb25hbCBkZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29k
ZSB3aGljaCBpbnRlcmFjdHMKLS8vIHdlbGwgd2l0aCBzd2l0Y2ggc3RhdGVtZW50cy4KLVRFU1Qo
Q29uZGl0aW9uYWxEZWF0aE1hY3Jvc1N5bnRheERlYXRoVGVzdCwgU3dpdGNoU3RhdGVtZW50KSB7
Ci0vLyBNaWNyb3NvZnQgY29tcGlsZXIgdXN1YWxseSBjb21wbGFpbnMgYWJvdXQgc3dpdGNoIHN0
YXRlbWVudHMgd2l0aG91dAotLy8gY2FzZSBsYWJlbHMuIFdlIHN1cHByZXNzIHRoYXQgd2Fybmlu
ZyBmb3IgdGhpcyB0ZXN0LgotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkK
LSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MDY1KQotI2VuZGlmICAvLyBfTVNDX1ZFUgotCi0g
IHN3aXRjaCAoMCkKLSAgICBkZWZhdWx0OgotICAgICAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRF
RChfZXhpdCgxKSwgIiIpCi0gICAgICAgICAgPDwgImV4aXQgaW4gZGVmYXVsdCBzd2l0Y2ggaGFu
ZGxlciI7Ci0KLSAgc3dpdGNoICgwKQotICAgIGNhc2UgMDoKLSAgICAgIEVYUEVDVF9ERUFUSF9J
Rl9TVVBQT1JURUQoX2V4aXQoMSksICIiKSA8PCAiZXhpdCBpbiBzd2l0Y2ggY2FzZSI7Ci0KLSNp
ZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZiAgLy8gX01TQ19WRVIK
LX0KLQotLy8gVGVzdHMgdGhhdCBhIHRlc3QgY2FzZSB3aG9zZSBuYW1lIGVuZHMgd2l0aCAiRGVh
dGhUZXN0IiB3b3JrcyBmaW5lCi0vLyBvbiBXaW5kb3dzLgotVEVTVChOb3RBRGVhdGhUZXN0LCBU
ZXN0KSB7Ci0gIFNVQ0NFRUQoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3QtZmlsZXBhdGhfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3QtZmlsZXBhdGhfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjI1MDI4Mjc1OGRmYjNjOTNmNDdmMDkxYzUyYTJkYmY5MmNhY2VlYi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw2OTAgKzAs
MCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8v
IEF1dGhvcnM6IGtlaXRoLnJheUBnbWFpbC5jb20gKEtlaXRoIFJheSkKLS8vCi0vLyBHb29nbGUg
VGVzdCBmaWxlcGF0aCB1dGlsaXRpZXMKLS8vCi0vLyBUaGlzIGZpbGUgdGVzdHMgY2xhc3NlcyBh
bmQgZnVuY3Rpb25zIHVzZWQgaW50ZXJuYWxseSBieQotLy8gR29vZ2xlIFRlc3QuICBUaGV5IGFy
ZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4KLS8vCi0vLyBUaGlzIGZpbGUgaXMg
I2luY2x1ZGVkIGZyb20gZ3Rlc3RfdW5pdHRlc3QuY2MsIHRvIGF2b2lkIGNoYW5naW5nCi0vLyBi
dWlsZCBvciBtYWtlLWZpbGVzIGZvciBzb21lIGV4aXN0aW5nIEdvb2dsZSBUZXN0IGNsaWVudHMu
IERvIG5vdAotLy8gI2luY2x1ZGUgdGhpcyBmaWxlIGFueXdoZXJlIGVsc2UhCi0KLSNpbmNsdWRl
IDxndGVzdC9pbnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+Ci0KLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9m
IEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBn
dGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBj
b21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2VyIGZyb20g
YWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8gaGlzIGNv
ZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0
LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi0jaWYgR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKLSNpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBOT0xJTlQKLSNl
bGlmIEdURVNUX09TX1dJTkRPV1MKLSNpbmNsdWRlIDxkaXJlY3QuaD4gIC8vIE5PTElOVAotI2Vu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci1u
YW1lc3BhY2UgaW50ZXJuYWwgewotbmFtZXNwYWNlIHsKLQotI2lmIEdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogTW92ZSB0aGVzZSB0byB0aGUgUE9TSVgg
YWRhcHRlciBzZWN0aW9uIGluCi0vLyBndGVzdC1wb3J0LmguCi0KLS8vIFdpbmRvd3MgQ0UgZG9l
c24ndCBoYXZlIHRoZSByZW1vdmUgQyBmdW5jdGlvbi4KLWludCByZW1vdmUoY29uc3QgY2hhciog
cGF0aCkgewotICBMUENXU1RSIHdwYXRoID0gU3RyaW5nOjpBbnNpVG9VdGYxNihwYXRoKTsKLSAg
aW50IHJldCA9IERlbGV0ZUZpbGUod3BhdGgpID8gMCA6IC0xOwotICBkZWxldGUgW10gd3BhdGg7
Ci0gIHJldHVybiByZXQ7Ci19Ci0vLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSB0aGUgX3JtZGly
IEMgZnVuY3Rpb24uCi1pbnQgX3JtZGlyKGNvbnN0IGNoYXIqIHBhdGgpIHsKLSAgRmlsZVBhdGgg
ZmlsZXBhdGgocGF0aCk7Ci0gIExQQ1dTVFIgd3BhdGggPSBTdHJpbmc6OkFuc2lUb1V0ZjE2KAot
ICAgICAgZmlsZXBhdGguUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7Ci0g
IGludCByZXQgPSBSZW1vdmVEaXJlY3Rvcnkod3BhdGgpID8gMCA6IC0xOwotICBkZWxldGUgW10g
d3BhdGg7Ci0gIHJldHVybiByZXQ7Ci19Ci0KLSNlbHNlCi0KLVRFU1QoR2V0Q3VycmVudERpclRl
c3QsIFJldHVybnNDdXJyZW50RGlyKSB7Ci0gIGNvbnN0IEZpbGVQYXRoIG9yaWdpbmFsX2RpciA9
IEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCk7Ci0gIEVYUEVDVF9GQUxTRShvcmlnaW5hbF9kaXIu
SXNFbXB0eSgpKTsKLQotICBwb3NpeDo6Q2hEaXIoR1RFU1RfUEFUSF9TRVBfKTsKLSAgY29uc3Qg
RmlsZVBhdGggY3dkID0gRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKTsKLSAgcG9zaXg6OkNoRGly
KG9yaWdpbmFsX2Rpci5jX3N0cigpKTsKLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgLy8gU2tp
cHMgdGhlICI6Ii4KLSAgY29uc3QgY2hhciogY29uc3QgY3dkX3dpdGhvdXRfZHJpdmUgPSBzdHJj
aHIoY3dkLmNfc3RyKCksICc6Jyk7Ci0gIEFTU0VSVF9UUlVFKGN3ZF93aXRob3V0X2RyaXZlICE9
IE5VTEwpOwotICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLCBjd2Rfd2l0aG91dF9kcml2
ZSArIDEpOwotI2Vsc2UKLSAgRVhQRUNUX1NUUkVRKEdURVNUX1BBVEhfU0VQXywgY3dkLmNfc3Ry
KCkpOwotI2VuZGlmCi19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLQot
VEVTVChJc0VtcHR5VGVzdCwgUmV0dXJuc1RydWVGb3JFbXB0eVBhdGgpIHsKLSAgRVhQRUNUX1RS
VUUoRmlsZVBhdGgoIiIpLklzRW1wdHkoKSk7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKE5VTEwp
LklzRW1wdHkoKSk7Ci19Ci0KLVRFU1QoSXNFbXB0eVRlc3QsIFJldHVybnNGYWxzZUZvck5vbkVt
cHR5UGF0aCkgewotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImEiKS5Jc0VtcHR5KCkpOwotICBF
WFBFQ1RfRkFMU0UoRmlsZVBhdGgoIi4iKS5Jc0VtcHR5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmls
ZVBhdGgoImEvYiIpLklzRW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYVxcYlxc
IikuSXNFbXB0eSgpKTsKLX0KLQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiIiAtPiAiIgotVEVT
VChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgV2hlbkVtcHR5TmFtZSkgewotICBFWFBFQ1RfU1RS
RVEoIiIsIEZpbGVQYXRoKCIiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIoKSk7Ci19Ci0K
LS8vIFJlbW92ZURpcmVjdG9yeU5hbWUgImFmaWxlIiAtPiAiYWZpbGUiCi1URVNUKFJlbW92ZURp
cmVjdG9yeU5hbWVUZXN0LCBCdXROb0RpcmVjdG9yeSkgewotICBFWFBFQ1RfU1RSRVEoImFmaWxl
IiwKLSAgICAgIEZpbGVQYXRoKCJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0cigp
KTsKLX0KLQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiL2FmaWxlIiAtPiAiYWZpbGUiCi1URVNU
KFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBSb290RmlsZVNob3VsZEdpdmVGaWxlTmFtZSkgewot
ICBFWFBFQ1RfU1RSRVEoImFmaWxlIiwKLSAgICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyAi
YWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZURp
cmVjdG9yeU5hbWUgImFkaXIvIiAtPiAiIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwg
V2hlcmVUaGVyZUlzTm9GaWxlTmFtZSkgewotICBFWFBFQ1RfU1RSRVEoIiIsCi0gICAgICBGaWxl
UGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIo
KSk7Ci19Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5hbWUgImFkaXIvYWZpbGUiIC0+ICJhZmlsZSIK
LVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEdpdmVGaWxlTmFtZSkgewotICBF
WFBFQ1RfU1RSRVEoImFmaWxlIiwKLSAgICAgIEZpbGVQYXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NF
UF8gImFmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1v
dmVEaXJlY3RvcnlOYW1lICJhZGlyL3N1YmRpci9hZmlsZSIgLT4gImFmaWxlIgotVEVTVChSZW1v
dmVEaXJlY3RvcnlOYW1lVGVzdCwgU2hvdWxkQWxzb0dpdmVGaWxlTmFtZSkgewotICBFWFBFQ1Rf
U1RSRVEoImFmaWxlIiwKLSAgICAgIEZpbGVQYXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gInN1
YmRpciIgR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIpCi0gICAgICAuUmVtb3ZlRGlyZWN0b3J5TmFt
ZSgpLmNfc3RyKCkpOwotfQotCi0jaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KLQotLy8gVGVz
dHMgdGhhdCBSZW1vdmVEaXJlY3RvcnlOYW1lKCkgd29ya3Mgd2l0aCB0aGUgYWx0ZXJuYXRlIHNl
cGFyYXRvcgotLy8gb24gV2luZG93cy4KLQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgiL2FmaWxl
IikgLT4gImFmaWxlIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgUm9vdEZpbGVTaG91
bGRHaXZlRmlsZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCJh
ZmlsZSIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiL2FmaWxlIikuUmVtb3ZlRGlyZWN0b3J5
TmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCJhZGlyLyIpIC0+
ICIiCi1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBXaGVyZVRoZXJlSXNOb0ZpbGVOYW1l
Rm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgiIiwKLSAgICAgICAgICAg
ICAgIEZpbGVQYXRoKCJhZGlyLyIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0cigpKTsKLX0K
LQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgiYWRpci9hZmlsZSIpIC0+ICJhZmlsZSIKLVRFU1Qo
UmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEdpdmVGaWxlTmFtZUZvckFsdGVybmF0ZVNl
cGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoImFmaWxlIiwKLSAgICAgICAgICAgICAgIEZpbGVQ
YXRoKCJhZGlyL2FmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOwotfQotCi0v
LyBSZW1vdmVEaXJlY3RvcnlOYW1lKCJhZGlyL3N1YmRpci9hZmlsZSIpIC0+ICJhZmlsZSIKLVRF
U1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEFsc29HaXZlRmlsZU5hbWVGb3JBbHRl
cm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAgICAgICAgICAg
ICBGaWxlUGF0aCgiYWRpci9zdWJkaXIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19z
dHIoKSk7Ci19Ci0KLSNlbmRpZgotCi0vLyBSZW1vdmVGaWxlTmFtZSAiIiAtPiAiLi8iCi1URVNU
KFJlbW92ZUZpbGVOYW1lVGVzdCwgRW1wdHlOYW1lKSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKLSAgLy8gT24gV2luZG93cyBDRSwgd2UgdXNlIHRoZSByb290IGFzIHRoZSBjdXJyZW50
IGRpcmVjdG9yeS4KLSAgRVhQRUNUX1NUUkVRKEdURVNUX1BBVEhfU0VQXywKLSAgICAgIEZpbGVQ
YXRoKCIiKS5SZW1vdmVGaWxlTmFtZSgpLmNfc3RyKCkpOwotI2Vsc2UKLSAgRVhQRUNUX1NUUkVR
KCIuIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICBGaWxlUGF0aCgiIikuUmVtb3ZlRmlsZU5hbWUo
KS5jX3N0cigpKTsKLSNlbmRpZgotfQotCi0vLyBSZW1vdmVGaWxlTmFtZSAiYWRpci8iIC0+ICJh
ZGlyLyIKLVRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBCdXROb0ZpbGUpIHsKLSAgRVhQRUNUX1NU
UkVRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1Rf
UEFUSF9TRVBfKS5SZW1vdmVGaWxlTmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVGaWxl
TmFtZSAiYWRpci9hZmlsZSIgLT4gImFkaXIvIgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdp
dmVzRGlyTmFtZSkgewotICBFWFBFQ1RfU1RSRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXywKLSAg
ICAgIEZpbGVQYXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikKLSAgICAgIC5SZW1v
dmVGaWxlTmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVGaWxlTmFtZSAiYWRpci9zdWJk
aXIvYWZpbGUiIC0+ICJhZGlyL3N1YmRpci8iCi1URVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2
ZXNEaXJBbmRTdWJEaXJOYW1lKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWRpciIgR1RFU1RfUEFUSF9T
RVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXywKLSAgICAgIEZpbGVQYXRoKCJhZGlyIiBHVEVT
VF9QQVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIpCi0gICAgICAuUmVt
b3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRmlsZU5hbWUgIi9hZmlsZSIg
LT4gIi8iCi1URVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNSb290RGlyKSB7Ci0gIEVYUEVD
VF9TVFJFUShHVEVTVF9QQVRIX1NFUF8sCi0gICAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8g
ImFmaWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKLX0KLQotI2lmIEdURVNUX0hBU19B
TFRfUEFUSF9TRVBfCi0KLS8vIFRlc3RzIHRoYXQgUmVtb3ZlRmlsZU5hbWUoKSB3b3JrcyB3aXRo
IHRoZSBhbHRlcm5hdGUgc2VwYXJhdG9yIG9uCi0vLyBXaW5kb3dzLgotCi0vLyBSZW1vdmVGaWxl
TmFtZSgiYWRpci8iKSAtPiAiYWRpci8iCi1URVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgQnV0Tm9G
aWxlRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWRpciIgR1RFU1Rf
UEFUSF9TRVBfLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvIikuUmVtb3ZlRmlsZU5h
bWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRmlsZU5hbWUoImFkaXIvYWZpbGUiKSAtPiAi
YWRpci8iCi1URVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNEaXJOYW1lRm9yQWx0ZXJuYXRl
U2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAotICAg
ICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLmNfc3Ry
KCkpOwotfQotCi0vLyBSZW1vdmVGaWxlTmFtZSgiYWRpci9zdWJkaXIvYWZpbGUiKSAtPiAiYWRp
ci9zdWJkaXIvIgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzRGlyQW5kU3ViRGlyTmFt
ZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoImFkaXIiIEdURVNUX1BB
VEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICAgICAgICAgICBGaWxlUGF0
aCgiYWRpci9zdWJkaXIvYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLmNfc3RyKCkpOwotfQotCi0v
LyBSZW1vdmVGaWxlTmFtZSgiL2FmaWxlIikgLT4gIlwiCi1URVNUKFJlbW92ZUZpbGVOYW1lVGVz
dCwgR2l2ZXNSb290RGlyRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJFUShH
VEVTVF9QQVRIX1NFUF8sCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiL2FmaWxlIikuUmVtb3Zl
RmlsZU5hbWUoKS5jX3N0cigpKTsKLX0KLQotI2VuZGlmCi0KLVRFU1QoTWFrZUZpbGVOYW1lVGVz
dCwgR2VuZXJhdGVXaGVuTnVtYmVySXNaZXJvKSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQ
YXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoImZvbyIpLCBGaWxlUGF0aCgiYmFyIiksCi0gICAg
ICAwLCAieG1sIik7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54
bWwiLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJh
dGVGaWxlTmFtZU51bWJlckd0WmVybykgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6
TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCJmb28iKSwgRmlsZVBhdGgoImJhciIpLAotICAgICAgMTIs
ICJ4bWwiKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyXzEyLnht
bCIsIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0
ZUZpbGVOYW1lV2l0aFNsYXNoTnVtYmVySXNaZXJvKSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZp
bGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKSwKLSAg
ICAgIEZpbGVQYXRoKCJiYXIiKSwgMCwgInhtbCIpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RF
U1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNUKE1ha2VG
aWxlTmFtZVRlc3QsIEdlbmVyYXRlRmlsZU5hbWVXaXRoU2xhc2hOdW1iZXJHdFplcm8pIHsKLSAg
RmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiBH
VEVTVF9QQVRIX1NFUF8pLAotICAgICAgRmlsZVBhdGgoImJhciIpLCAxMiwgInhtbCIpOwotICBF
WFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXJfMTIueG1sIiwgYWN0dWFsLmNf
c3RyKCkpOwotfQotCi1URVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlV2hlbk51bWJlcklz
WmVyb0FuZERpcklzRW1wdHkpIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VG
aWxlTmFtZShGaWxlUGF0aCgiIiksIEZpbGVQYXRoKCJiYXIiKSwKLSAgICAgIDAsICJ4bWwiKTsK
LSAgRVhQRUNUX1NUUkVRKCJiYXIueG1sIiwgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNUKE1h
a2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlV2hlbk51bWJlcklzTm90WmVyb0FuZERpcklzRW1wdHkp
IHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgi
IiksIEZpbGVQYXRoKCJiYXIiKSwKLSAgICAgIDE0LCAieG1sIik7Ci0gIEVYUEVDVF9TVFJFUSgi
YmFyXzE0LnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChDb25jYXRQYXRoc1Rlc3Qs
IFdvcmtzV2hlbkRpckRvZXNOb3RFbmRXaXRoUGF0aFNlcCkgewotICBGaWxlUGF0aCBhY3R1YWwg
PSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJhci54bWwiKSk7Ci0gIEVYUEVD
VF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuY19zdHIoKSk7
Ci19Ci0KLVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBXb3Jrc1doZW5QYXRoMUVuZHNXaXRoUGF0aFNl
cCkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgo
ImZvbyIgR1RFU1RfUEFUSF9TRVBfKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZpbGVQYXRoKCJiYXIueG1sIikpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RF
U1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNUKENvbmNh
dFBhdGhzVGVzdCwgUGF0aDFCZWluZ0VtcHR5KSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQ
YXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiYmFyLnhtbCIpKTsKLSAgRVhQRUNUX1NUUkVRKCJi
YXIueG1sIiwgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0
aDJCZWluZ0VtcHR5KSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRo
cyhGaWxlUGF0aCgiZm9vIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGaWxlUGF0aCgiIikpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBf
LCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBCb3RoUGF0aEJl
aW5nRW1wdHkpIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZp
bGVQYXRoKCIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZp
bGVQYXRoKCIiKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1U
RVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDFDb250YWluc1BhdGhTZXApIHsKLSAgRmlsZVBhdGgg
YWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhf
U0VQXyAiYmFyIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
aWxlUGF0aCgiZm9vYmFyLnhtbCIpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhf
U0VQXyAiYmFyIiBHVEVTVF9QQVRIX1NFUF8gImZvb2Jhci54bWwiLAotICAgICAgICAgICAgICAg
YWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDJDb250YWlu
c1BhdGhTZXApIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKAot
ICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKSwKLSAgICAgIEZpbGVQYXRoKCJi
YXIiIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdU
RVNUX1BBVEhfU0VQXyAiYmFyIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiLAotICAgICAgICAg
ICAgICAgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDJF
bmRzV2l0aFBhdGhTZXApIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBh
dGhzKEZpbGVQYXRoKCJmb28iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZpbGVQYXRoKCJiYXIiIEdURVNUX1BBVEhfU0VQXykpOwotICBFWFBFQ1RfU1RSRVEo
ImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXywgYWN0dWFsLmNfc3Ry
KCkpOwotfQotCi0vLyBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IgIiIgLT4gIiIKLVRFU1Qo
UmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgRW1wdHlTdHJpbmcpIHsKLSAgRVhQRUNU
X1NUUkVRKCIiLAotICAgICAgRmlsZVBhdGgoIiIpLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRv
cigpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IgImZvbyIg
LT4gImZvbyIKLVRFU1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgRmlsZU5vU2xh
c2hTdHJpbmcpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28iLAotICAgICAgRmlsZVBhdGgoImZvbyIp
LlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVU
cmFpbGluZ1BhdGhTZXBhcmF0b3IgImZvby8iIC0+ICJmb28iCi1URVNUKFJlbW92ZVRyYWlsaW5n
UGF0aFNlcGFyYXRvclRlc3QsIFNob3VsZFJlbW92ZVRyYWlsaW5nU2VwYXJhdG9yKSB7Ci0gIEVY
UEVDVF9TVFJFUSgKLSAgICAgICJmb28iLAotICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFU
SF9TRVBfKS5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKLSNpZiBHVEVT
VF9IQVNfQUxUX1BBVEhfU0VQXwotICBFWFBFQ1RfU1RSRVEoImZvbyIsCi0gICAgICAgICAgICAg
ICBGaWxlUGF0aCgiZm9vLyIpLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLmNfc3RyKCkp
OwotI2VuZGlmCi19Ci0KLS8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiZm9vL2Jhci8i
IC0+ICJmb28vYmFyLyIKLVRFU1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgU2hv
dWxkUmVtb3ZlTGFzdFNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFU
SF9TRVBfICJiYXIiLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9T
RVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXykKLSAgICAgICAgICAgICAgIC5SZW1vdmVUcmFpbGlu
Z1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlVHJhaWxpbmdQYXRoU2Vw
YXJhdG9yICJmb28vYmFyIiAtPiAiZm9vL2JhciIKLVRFU1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2Vw
YXJhdG9yVGVzdCwgU2hvdWxkUmV0dXJuVW5tb2RpZmllZCkgewotICBFWFBFQ1RfU1RSRVEoImZv
byIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIg
R1RFU1RfUEFUSF9TRVBfICJiYXIiKQotICAgICAgICAgICAgICAgLlJlbW92ZVRyYWlsaW5nUGF0
aFNlcGFyYXRvcigpLmNfc3RyKCkpOwotfQotCi1URVNUKERpcmVjdG9yeVRlc3QsIFJvb3REaXJl
Y3RvcnlFeGlzdHMpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTICAvLyBXZSBhcmUgb24gV2luZG93
cy4KLSAgY2hhciBjdXJyZW50X2RyaXZlW19NQVhfUEFUSF07ICAvLyBOT0xJTlQKLSAgY3VycmVu
dF9kcml2ZVswXSA9IHN0YXRpY19jYXN0PGNoYXI+KF9nZXRkcml2ZSgpICsgJ0EnIC0gMSk7Ci0g
IGN1cnJlbnRfZHJpdmVbMV0gPSAnOic7Ci0gIGN1cnJlbnRfZHJpdmVbMl0gPSAnXFwnOwotICBj
dXJyZW50X2RyaXZlWzNdID0gJ1wwJzsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoY3VycmVudF9k
cml2ZSkuRGlyZWN0b3J5RXhpc3RzKCkpOwotI2Vsc2UKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgo
Ii8iKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLX0K
LQotI2lmIEdURVNUX09TX1dJTkRPV1MKLVRFU1QoRGlyZWN0b3J5VGVzdCwgUm9vdE9mV3JvbmdE
cml2ZURvZXNOb3RFeGlzdHMpIHsKLSAgY29uc3QgaW50IHNhdmVkX2RyaXZlXyA9IF9nZXRkcml2
ZSgpOwotICAvLyBGaW5kIGEgZHJpdmUgdGhhdCBkb2Vzbid0IGV4aXN0LiBTdGFydCB3aXRoICda
JyB0byBhdm9pZCBjb21tb24gb25lcy4KLSAgZm9yIChjaGFyIGRyaXZlID0gJ1onOyBkcml2ZSA+
PSAnQSc7IGRyaXZlLS0pCi0gICAgaWYgKF9jaGRyaXZlKGRyaXZlIC0gJ0EnICsgMSkgPT0gLTEp
IHsKLSAgICAgIGNoYXIgbm9uX2RyaXZlW19NQVhfUEFUSF07ICAvLyBOT0xJTlQKLSAgICAgIG5v
bl9kcml2ZVswXSA9IGRyaXZlOwotICAgICAgbm9uX2RyaXZlWzFdID0gJzonOwotICAgICAgbm9u
X2RyaXZlWzJdID0gJ1xcJzsKLSAgICAgIG5vbl9kcml2ZVszXSA9ICdcMCc7Ci0gICAgICBFWFBF
Q1RfRkFMU0UoRmlsZVBhdGgobm9uX2RyaXZlKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0gICAgICBi
cmVhazsKLSAgICB9Ci0gIF9jaGRyaXZlKHNhdmVkX2RyaXZlXyk7Ci19Ci0jZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MKLQotI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotLy8gV2luZG93
cyBDRSBfZG9lc18gY29uc2lkZXIgYW4gZW1wdHkgZGlyZWN0b3J5IHRvIGV4aXN0LgotVEVTVChE
aXJlY3RvcnlUZXN0LCBFbXB0eVBhdGhEaXJlY3RvcnlEb2VzTm90RXhpc3QpIHsKLSAgRVhQRUNU
X0ZBTFNFKEZpbGVQYXRoKCIiKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci19Ci0jZW5kaWYgIC8vICFH
VEVTVF9PU19XSU5ET1dTX01PQklMRQotCi1URVNUKERpcmVjdG9yeVRlc3QsIEN1cnJlbnREaXJl
Y3RvcnlFeGlzdHMpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTICAvLyBXZSBhcmUgb24gV2luZG93
cy4KLSNpZm5kZWYgX1dJTjMyX0NFICAvLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSBhIGN1cnJl
bnQgZGlyZWN0b3J5LgotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiLiIpLkRpcmVjdG9yeUV4aXN0
cygpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi5cXCIpLkRpcmVjdG9yeUV4aXN0cygpKTsK
LSNlbmRpZiAgLy8gX1dJTjMyX0NFCi0jZWxzZQotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiLiIp
LkRpcmVjdG9yeUV4aXN0cygpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi4vIikuRGlyZWN0
b3J5RXhpc3RzKCkpOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi19Ci0KLVRFU1QoTm9y
bWFsaXplVGVzdCwgTnVsbFN0cmluZ3NFcXVhbEVtcHR5RGlyZWN0b3J5KSB7Ci0gIEVYUEVDVF9T
VFJFUSgiIiwgRmlsZVBhdGgoTlVMTCkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgRmls
ZVBhdGgoU3RyaW5nKE5VTEwpKS5jX3N0cigpKTsKLX0KLQotLy8gImZvby9iYXIiID09IGZvby8v
YmFyIiA9PSAiZm9vLy8vYmFyIgotVEVTVChOb3JtYWxpemVUZXN0LCBNdWx0aXBsZUNvbnNlY3V0
aXZlU2VwYXBhcmF0b3JzSW5NaWRzdHJpbmcpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNU
X1BBVEhfU0VQXyAiYmFyIiwKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BB
VEhfU0VQXyAiYmFyIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRI
X1NFUF8gImJhciIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8gR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28i
IEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28iIEdU
RVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8KLSAgICAgICAgICAgICAgICAgICAgICAgIEdU
RVNUX1BBVEhfU0VQXyAiYmFyIikuY19zdHIoKSk7Ci19Ci0KLS8vICIvYmFyIiA9PSAvL2JhciIg
PT0gIi8vL2JhciIKLVRFU1QoTm9ybWFsaXplVGVzdCwgTXVsdGlwbGVDb25zZWN1dGl2ZVNlcGFw
YXJhdG9yc0F0U3RyaW5nU3RhcnQpIHsKLSAgRVhQRUNUX1NUUkVRKEdURVNUX1BBVEhfU0VQXyAi
YmFyIiwKLSAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gImJhciIpLmNfc3RyKCkpOwotICBF
WFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgIEZpbGVQYXRoKEdURVNUX1BB
VEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gImJhciIpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEo
R1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyBHVEVT
VF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5jX3N0cigpKTsKLX0KLQotLy8gImZv
by8iID09IGZvby8vIiA9PSAiZm9vLy8vIgotVEVTVChOb3JtYWxpemVUZXN0LCBNdWx0aXBsZUNv
bnNlY3V0aXZlU2VwYXBhcmF0b3JzQXRTdHJpbmdFbmQpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28i
IEdURVNUX1BBVEhfU0VQXywKLSAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLmNf
c3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAotICAgIEZpbGVQ
YXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8pLmNfc3RyKCkpOwotICBF
WFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAotICAgIEZpbGVQYXRoKCJmb28iIEdU
RVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfKS5jX3N0cigpKTsK
LX0KLQotI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCi0KLS8vIFRlc3RzIHRoYXQgc2VwYXJh
dG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgYXJlIG5vcm1hbGl6ZWQKLS8vIHJlZ2FyZGxl
c3Mgb2YgdGhlaXIgY29tYmluYXRpb24gKGUuZy4gImZvb1wiID09ImZvby9cIiA9PQotLy8gImZv
b1xcLyIpLgotVEVTVChOb3JtYWxpemVUZXN0LCBNaXhBbHRlcm5hdGVTZXBhcmF0b3JBdFN0cmlu
Z0VuZCkgewotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAotICAgICAgICAg
ICAgICAgRmlsZVBhdGgoImZvby8iKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdU
RVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhf
U0VQXyAiLyIpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBf
LAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvby8vIiBHVEVTVF9QQVRIX1NFUF8pLmNfc3Ry
KCkpOwotfQotCi0jZW5kaWYKLQotVEVTVChBc3NpZ25tZW50T3BlcmF0b3JUZXN0LCBEZWZhdWx0
QXNzaWduZWRUb05vbkRlZmF1bHQpIHsKLSAgRmlsZVBhdGggZGVmYXVsdF9wYXRoOwotICBGaWxl
UGF0aCBub25fZGVmYXVsdF9wYXRoKCJwYXRoIik7Ci0gIG5vbl9kZWZhdWx0X3BhdGggPSBkZWZh
dWx0X3BhdGg7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgbm9uX2RlZmF1bHRfcGF0aC5jX3N0cigpKTsK
LSAgRVhQRUNUX1NUUkVRKCIiLCBkZWZhdWx0X3BhdGguY19zdHIoKSk7ICAvLyBSSFMgdmFyIGlz
IHVuY2hhbmdlZC4KLX0KLQotVEVTVChBc3NpZ25tZW50T3BlcmF0b3JUZXN0LCBOb25EZWZhdWx0
QXNzaWduZWRUb0RlZmF1bHQpIHsKLSAgRmlsZVBhdGggbm9uX2RlZmF1bHRfcGF0aCgicGF0aCIp
OwotICBGaWxlUGF0aCBkZWZhdWx0X3BhdGg7Ci0gIGRlZmF1bHRfcGF0aCA9IG5vbl9kZWZhdWx0
X3BhdGg7Ci0gIEVYUEVDVF9TVFJFUSgicGF0aCIsIGRlZmF1bHRfcGF0aC5jX3N0cigpKTsKLSAg
RVhQRUNUX1NUUkVRKCJwYXRoIiwgbm9uX2RlZmF1bHRfcGF0aC5jX3N0cigpKTsgIC8vIFJIUyB2
YXIgaXMgdW5jaGFuZ2VkLgotfQotCi1URVNUKEFzc2lnbm1lbnRPcGVyYXRvclRlc3QsIENvbnN0
QXNzaWduZWRUb05vbkNvbnN0KSB7Ci0gIGNvbnN0IEZpbGVQYXRoIGNvbnN0X2RlZmF1bHRfcGF0
aCgiY29uc3RfcGF0aCIpOwotICBGaWxlUGF0aCBub25fZGVmYXVsdF9wYXRoKCJwYXRoIik7Ci0g
IG5vbl9kZWZhdWx0X3BhdGggPSBjb25zdF9kZWZhdWx0X3BhdGg7Ci0gIEVYUEVDVF9TVFJFUSgi
Y29uc3RfcGF0aCIsIG5vbl9kZWZhdWx0X3BhdGguY19zdHIoKSk7Ci19Ci0KLWNsYXNzIERpcmVj
dG9yeUNyZWF0aW9uVGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwg
dm9pZCBTZXRVcCgpIHsKLSAgICB0ZXN0ZGF0YV9wYXRoXy5TZXQoRmlsZVBhdGgoU3RyaW5nOjpG
b3JtYXQoIiVzJXMlcyIsCi0gICAgICAgIFRlbXBEaXIoKS5jX3N0cigpLCBHZXRDdXJyZW50RXhl
Y3V0YWJsZU5hbWUoKS5jX3N0cigpLAotICAgICAgICAiX2RpcmVjdG9yeV9jcmVhdGlvbiIgR1RF
U1RfUEFUSF9TRVBfICJ0ZXN0IiBHVEVTVF9QQVRIX1NFUF8pKSk7Ci0gICAgdGVzdGRhdGFfZmls
ZV8uU2V0KHRlc3RkYXRhX3BhdGhfLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpKTsKLQot
ICAgIHVuaXF1ZV9maWxlMF8uU2V0KEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUodGVzdGRhdGFfcGF0
aF8sIEZpbGVQYXRoKCJ1bmlxdWUiKSwKLSAgICAgICAgMCwgInR4dCIpKTsKLSAgICB1bmlxdWVf
ZmlsZTFfLlNldChGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKHRlc3RkYXRhX3BhdGhfLCBGaWxlUGF0
aCgidW5pcXVlIiksCi0gICAgICAgIDEsICJ0eHQiKSk7Ci0KLSAgICByZW1vdmUodGVzdGRhdGFf
ZmlsZV8uY19zdHIoKSk7Ci0gICAgcmVtb3ZlKHVuaXF1ZV9maWxlMF8uY19zdHIoKSk7Ci0gICAg
cmVtb3ZlKHVuaXF1ZV9maWxlMV8uY19zdHIoKSk7Ci0gICAgcG9zaXg6OlJtRGlyKHRlc3RkYXRh
X3BhdGhfLmNfc3RyKCkpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAg
IHJlbW92ZSh0ZXN0ZGF0YV9maWxlXy5jX3N0cigpKTsKLSAgICByZW1vdmUodW5pcXVlX2ZpbGUw
Xy5jX3N0cigpKTsKLSAgICByZW1vdmUodW5pcXVlX2ZpbGUxXy5jX3N0cigpKTsKLSAgICBwb3Np
eDo6Um1EaXIodGVzdGRhdGFfcGF0aF8uY19zdHIoKSk7Ci0gIH0KLQotICBTdHJpbmcgVGVtcERp
cigpIGNvbnN0IHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotICAgIHJldHVybiBTdHJp
bmcoIlxcdGVtcFxcIik7Ci0jZWxpZiBHVEVTVF9PU19XSU5ET1dTCi0gICAgY29uc3QgY2hhciog
dGVtcF9kaXIgPSBwb3NpeDo6R2V0RW52KCJURU1QIik7Ci0gICAgaWYgKHRlbXBfZGlyID09IE5V
TEwgfHwgdGVtcF9kaXJbMF0gPT0gJ1wwJykKLSAgICAgIHJldHVybiBTdHJpbmcoIlxcdGVtcFxc
Iik7Ci0gICAgZWxzZSBpZiAoU3RyaW5nKHRlbXBfZGlyKS5FbmRzV2l0aCgiXFwiKSkKLSAgICAg
IHJldHVybiBTdHJpbmcodGVtcF9kaXIpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBTdHJpbmc6
OkZvcm1hdCgiJXNcXCIsIHRlbXBfZGlyKTsKLSNlbHNlCi0gICAgcmV0dXJuIFN0cmluZygiL3Rt
cC8iKTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSAgfQotCi0gIHZvaWQg
Q3JlYXRlVGV4dEZpbGUoY29uc3QgY2hhciogZmlsZW5hbWUpIHsKLSAgICBGSUxFKiBmID0gcG9z
aXg6OkZPcGVuKGZpbGVuYW1lLCAidyIpOwotICAgIGZwcmludGYoZiwgInRleHRcbiIpOwotICAg
IGZjbG9zZShmKTsKLSAgfQotCi0gIC8vIFN0cmluZ3MgcmVwcmVzZW50aW5nIGEgZGlyZWN0b3J5
IGFuZCBhIGZpbGUsIHdpdGggaWRlbnRpY2FsIHBhdGhzCi0gIC8vIGV4Y2VwdCBmb3IgdGhlIHRy
YWlsaW5nIHNlcGFyYXRvciBjaGFyYWN0ZXIgdGhhdCBkaXN0aW5xdWlzaGVzCi0gIC8vIGEgZGly
ZWN0b3J5IG5hbWVkICd0ZXN0JyBmcm9tIGEgZmlsZSBuYW1lZCAndGVzdCcuIEV4YW1wbGUgbmFt
ZXM6Ci0gIEZpbGVQYXRoIHRlc3RkYXRhX3BhdGhfOyAgLy8gIi90bXAvZGlyZWN0b3J5X2NyZWF0
aW9uL3Rlc3QvIgotICBGaWxlUGF0aCB0ZXN0ZGF0YV9maWxlXzsgIC8vICIvdG1wL2RpcmVjdG9y
eV9jcmVhdGlvbi90ZXN0IgotICBGaWxlUGF0aCB1bmlxdWVfZmlsZTBfOyAgLy8gIi90bXAvZGly
ZWN0b3J5X2NyZWF0aW9uL3Rlc3QvdW5pcXVlLnR4dCIKLSAgRmlsZVBhdGggdW5pcXVlX2ZpbGUx
XzsgIC8vICIvdG1wL2RpcmVjdG9yeV9jcmVhdGlvbi90ZXN0L3VuaXF1ZV8xLnR4dCIKLX07Ci0K
LVRFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZl
bHkpIHsKLSAgRVhQRUNUX0ZBTFNFKHRlc3RkYXRhX3BhdGhfLkRpcmVjdG9yeUV4aXN0cygpKSA8
PCB0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpOwotICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5D
cmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOwotICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9w
YXRoXy5EaXJlY3RvcnlFeGlzdHMoKSk7Ci19Ci0KLVRFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRl
c3QsIENyZWF0ZURpcmVjdG9yaWVzRm9yQWxyZWFkeUV4aXN0aW5nUGF0aCkgewotICBFWFBFQ1Rf
RkFMU0UodGVzdGRhdGFfcGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkpIDw8IHRlc3RkYXRhX3BhdGhf
LmNfc3RyKCk7Ci0gIEVYUEVDVF9UUlVFKHRlc3RkYXRhX3BhdGhfLkNyZWF0ZURpcmVjdG9yaWVz
UmVjdXJzaXZlbHkoKSk7Ci0gIC8vIENhbGwgJ2NyZWF0ZScgYWdhaW4uLi4gc2hvdWxkIHN0aWxs
IHN1Y2NlZWQuCi0gIEVYUEVDVF9UUlVFKHRlc3RkYXRhX3BhdGhfLkNyZWF0ZURpcmVjdG9yaWVz
UmVjdXJzaXZlbHkoKSk7Ci19Ci0KLVRFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0
ZURpcmVjdG9yaWVzQW5kVW5pcXVlRmlsZW5hbWUpIHsKLSAgRmlsZVBhdGggZmlsZV9wYXRoKEZp
bGVQYXRoOjpHZW5lcmF0ZVVuaXF1ZUZpbGVOYW1lKHRlc3RkYXRhX3BhdGhfLAotICAgICAgRmls
ZVBhdGgoInVuaXF1ZSIpLCAidHh0IikpOwotICBFWFBFQ1RfU1RSRVEodW5pcXVlX2ZpbGUwXy5j
X3N0cigpLCBmaWxlX3BhdGguY19zdHIoKSk7Ci0gIEVYUEVDVF9GQUxTRShmaWxlX3BhdGguRmls
ZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8gZmlsZSBub3QgdGhlcmUKLQotICB0ZXN0ZGF0YV9w
YXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCk7Ci0gIEVYUEVDVF9GQUxTRShmaWxl
X3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8gZmlsZSBzdGlsbCBub3QgdGhlcmUK
LSAgQ3JlYXRlVGV4dEZpbGUoZmlsZV9wYXRoLmNfc3RyKCkpOwotICBFWFBFQ1RfVFJVRShmaWxl
X3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOwotCi0gIEZpbGVQYXRoIGZpbGVfcGF0aDIo
RmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5hbWUodGVzdGRhdGFfcGF0aF8sCi0gICAgICBG
aWxlUGF0aCgidW5pcXVlIiksICJ0eHQiKSk7Ci0gIEVYUEVDVF9TVFJFUSh1bmlxdWVfZmlsZTFf
LmNfc3RyKCksIGZpbGVfcGF0aDIuY19zdHIoKSk7Ci0gIEVYUEVDVF9GQUxTRShmaWxlX3BhdGgy
LkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsgIC8vIGZpbGUgbm90IHRoZXJlCi0gIENyZWF0ZVRl
eHRGaWxlKGZpbGVfcGF0aDIuY19zdHIoKSk7Ci0gIEVYUEVDVF9UUlVFKGZpbGVfcGF0aDIuRmls
ZU9yRGlyZWN0b3J5RXhpc3RzKCkpOwotfQotCi1URVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25UZXN0
LCBDcmVhdGVEaXJlY3Rvcmllc0ZhaWwpIHsKLSAgLy8gZm9yY2UgYSBmYWlsdXJlIGJ5IHB1dHRp
bmcgYSBmaWxlIHdoZXJlIHdlIHdpbGwgdHJ5IHRvIGNyZWF0ZSBhIGRpcmVjdG9yeS4KLSAgQ3Jl
YXRlVGV4dEZpbGUodGVzdGRhdGFfZmlsZV8uY19zdHIoKSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Rk
YXRhX2ZpbGVfLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsKLSAgRVhQRUNUX0ZBTFNFKHRlc3Rk
YXRhX2ZpbGVfLkRpcmVjdG9yeUV4aXN0cygpKTsKLSAgRVhQRUNUX0ZBTFNFKHRlc3RkYXRhX2Zp
bGVfLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKSk7Ci19Ci0KLVRFU1QoTm9EaXJlY3Rv
cnlDcmVhdGlvblRlc3QsIENyZWF0ZU5vRGlyZWN0b3JpZXNGb3JEZWZhdWx0WG1sRmlsZSkgewot
ICBjb25zdCBGaWxlUGF0aCB0ZXN0X2RldGFpbF94bWwoInRlc3RfZGV0YWlsLnhtbCIpOwotICBF
WFBFQ1RfRkFMU0UodGVzdF9kZXRhaWxfeG1sLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHko
KSk7Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3IpIHsKLSAgRmls
ZVBhdGggZnA7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgZnAuY19zdHIoKSk7Ci19Ci0KLVRFU1QoRmls
ZVBhdGhUZXN0LCBDaGFyQW5kQ29weUNvbnN0cnVjdG9ycykgewotICBjb25zdCBGaWxlUGF0aCBm
cCgic3BpY3kiKTsKLSAgRVhQRUNUX1NUUkVRKCJzcGljeSIsIGZwLmNfc3RyKCkpOwotCi0gIGNv
bnN0IEZpbGVQYXRoIGZwX2NvcHkoZnApOwotICBFWFBFQ1RfU1RSRVEoInNwaWN5IiwgZnBfY29w
eS5jX3N0cigpKTsKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIFN0cmluZ0NvbnN0cnVjdG9yKSB7
Ci0gIGNvbnN0IEZpbGVQYXRoIGZwKFN0cmluZygiY2lkZXIiKSk7Ci0gIEVYUEVDVF9TVFJFUSgi
Y2lkZXIiLCBmcC5jX3N0cigpKTsKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIFNldCkgewotICBj
b25zdCBGaWxlUGF0aCBhcHBsZSgiYXBwbGUiKTsKLSAgRmlsZVBhdGggbWFjKCJtYWMiKTsKLSAg
bWFjLlNldChhcHBsZSk7ICAvLyBJbXBsZW1lbnQgU2V0KCkgc2luY2Ugb3ZlcmxvYWRpbmcgb3Bl
cmF0b3I9IGlzIGZvcmJpZGRlbi4KLSAgRVhQRUNUX1NUUkVRKCJhcHBsZSIsIG1hYy5jX3N0cigp
KTsKLSAgRVhQRUNUX1NUUkVRKCJhcHBsZSIsIGFwcGxlLmNfc3RyKCkpOwotfQotCi1URVNUKEZp
bGVQYXRoVGVzdCwgVG9TdHJpbmcpIHsKLSAgY29uc3QgRmlsZVBhdGggZmlsZSgiZHJpbmsiKTsK
LSAgU3RyaW5nIHN0cihmaWxlLlRvU3RyaW5nKCkpOwotICBFWFBFQ1RfU1RSRVEoImRyaW5rIiwg
c3RyLmNfc3RyKCkpOwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgUmVtb3ZlRXh0ZW5zaW9uKSB7
Ci0gIEVYUEVDVF9TVFJFUSgiYXBwIiwgRmlsZVBhdGgoImFwcC5leGUiKS5SZW1vdmVFeHRlbnNp
b24oImV4ZSIpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIkFQUCIsIEZpbGVQYXRoKCJBUFAu
RVhFIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5jX3N0cigpKTsKLX0KLQotVEVTVChGaWxlUGF0
aFRlc3QsIFJlbW92ZUV4dGVuc2lvbldoZW5UaGVyZUlzTm9FeHRlbnNpb24pIHsKLSAgRVhQRUNU
X1NUUkVRKCJhcHAiLCBGaWxlUGF0aCgiYXBwIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5jX3N0
cigpKTsKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIElzRGlyZWN0b3J5KSB7Ci0gIEVYUEVDVF9G
QUxTRShGaWxlUGF0aCgiY29sYSIpLklzRGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfVFJVRShGaWxl
UGF0aCgia29hbGEiIEdURVNUX1BBVEhfU0VQXykuSXNEaXJlY3RvcnkoKSk7Ci0jaWYgR1RFU1Rf
SEFTX0FMVF9QQVRIX1NFUF8KLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImtvYWxhLyIpLklzRGly
ZWN0b3J5KCkpOwotI2VuZGlmCi19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0LCBJc0Fic29sdXRlUGF0
aCkgewotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImlzIiBHVEVTVF9QQVRIX1NFUF8gInJlbGF0
aXZlIikuSXNBYnNvbHV0ZVBhdGgoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiIikuSXNB
YnNvbHV0ZVBhdGgoKSk7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICBFWFBFQ1RfVFJVRShGaWxl
UGF0aCgiYzpcXCIgR1RFU1RfUEFUSF9TRVBfICJpc19ub3QiCi0gICAgICAgICAgICAgICAgICAg
ICAgIEdURVNUX1BBVEhfU0VQXyAicmVsYXRpdmUiKS5Jc0Fic29sdXRlUGF0aCgpKTsKLSAgRVhQ
RUNUX0ZBTFNFKEZpbGVQYXRoKCJjOmZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5Jc0Fic29s
dXRlUGF0aCgpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImM6LyIgR1RFU1RfUEFUSF9TRVBf
ICJpc19ub3QiCi0gICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1BBVEhfU0VQXyAicmVsYXRp
dmUiKS5Jc0Fic29sdXRlUGF0aCgpKTsKLSNlbHNlCi0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKEdU
RVNUX1BBVEhfU0VQXyAiaXNfbm90IiBHVEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIikKLSAgICAg
ICAgICAgICAgLklzQWJzb2x1dGVQYXRoKCkpOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dT
Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0LCBJc1Jvb3REaXJlY3RvcnkpIHsKLSNpZiBHVEVTVF9P
U19XSU5ET1dTCi0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJhOlxcIikuSXNSb290RGlyZWN0b3J5
KCkpOwotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiWjovIikuSXNSb290RGlyZWN0b3J5KCkpOwot
ICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiZTovLyIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQ
RUNUX0ZBTFNFKEZpbGVQYXRoKCIiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9GQUxT
RShGaWxlUGF0aCgiYjoiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxl
UGF0aCgiYjphIikuSXNSb290RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgo
Ijg6LyIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJjfC8i
KS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0jZWxzZQotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiLyIp
LklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi8vIikuSXNSb290
RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIiIpLklzUm9vdERpcmVjdG9y
eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJcXCIpLklzUm9vdERpcmVjdG9yeSgpKTsK
LSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIveCIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSNlbmRp
ZgotfQotCi19ICAvLyBuYW1lc3BhY2UKLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAgLy8g
bmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdC1saW5rZWRfcHRyX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGVhZTgyMjk2YzkyMWYwYWZlNDJmYzIzMzU3NDk3MGVlNzcwOWU1YmQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdC1saW5rZWRfcHRyX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAs
MCBAQAotLy8gQ29weXJpZ2h0IDIwMDMsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8v
IEF1dGhvcnM6IERhbiBFZ25vciAoZWdub3JAZ29vZ2xlLmNvbSkKLS8vIFBvcnRlZCB0byBXaW5k
b3dzOiBWYWRpbSBCZXJtYW4gKHZhZGltYkBnb29nbGUuY29tKQotCi0jaW5jbHVkZSA8Z3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oPgotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotbmFtZXNwYWNlIHsKLQotdXNpbmcgdGVzdGluZzo6TWVz
c2FnZTsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpsaW5rZWRfcHRyOwotCi1pbnQgbnVtOwot
TWVzc2FnZSogaGlzdG9yeSA9IE5VTEw7Ci0KLS8vIENsYXNzIHdoaWNoIHRyYWNrcyBhbGxvY2F0
aW9uL2RlYWxsb2NhdGlvbgotY2xhc3MgQSB7Ci0gcHVibGljOgotICBBKCk6IG15bnVtKG51bSsr
KSB7ICpoaXN0b3J5IDw8ICJBIiA8PCBteW51bSA8PCAiIGN0b3JcbiI7IH0KLSAgdmlydHVhbCB+
QSgpIHsgKmhpc3RvcnkgPDwgIkEiIDw8IG15bnVtIDw8ICIgZHRvclxuIjsgfQotICB2aXJ0dWFs
IHZvaWQgVXNlKCkgeyAqaGlzdG9yeSA8PCAiQSIgPDwgbXludW0gPDwgIiB1c2VcbiI7IH0KLSBw
cm90ZWN0ZWQ6Ci0gIGludCBteW51bTsKLX07Ci0KLS8vIFN1YmNsYXNzCi1jbGFzcyBCIDogcHVi
bGljIEEgewotIHB1YmxpYzoKLSAgQigpIHsgKmhpc3RvcnkgPDwgIkIiIDw8IG15bnVtIDw8ICIg
Y3RvclxuIjsgfQotICB+QigpIHsgKmhpc3RvcnkgPDwgIkIiIDw8IG15bnVtIDw8ICIgZHRvclxu
IjsgfQotICB2aXJ0dWFsIHZvaWQgVXNlKCkgeyAqaGlzdG9yeSA8PCAiQiIgPDwgbXludW0gPDwg
IiB1c2VcbiI7IH0KLX07Ci0KLWNsYXNzIExpbmtlZFB0clRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Ci0gcHVibGljOgotICBMaW5rZWRQdHJUZXN0KCkgewotICAgIG51bSA9IDA7Ci0gICAg
aGlzdG9yeSA9IG5ldyBNZXNzYWdlOwotICB9Ci0KLSAgdmlydHVhbCB+TGlua2VkUHRyVGVzdCgp
IHsKLSAgICBkZWxldGUgaGlzdG9yeTsKLSAgICBoaXN0b3J5ID0gTlVMTDsKLSAgfQotfTsKLQot
VEVTVF9GKExpbmtlZFB0clRlc3QsIEdlbmVyYWxUZXN0KSB7Ci0gIHsKLSAgICBsaW5rZWRfcHRy
PEE+IGEwLCBhMSwgYTI7Ci0gICAgYTAgPSBhMDsKLSAgICBhMSA9IGEyOwotICAgIEFTU0VSVF9F
UShhMC5nZXQoKSwgc3RhdGljX2Nhc3Q8QSo+KE5VTEwpKTsKLSAgICBBU1NFUlRfRVEoYTEuZ2V0
KCksIHN0YXRpY19jYXN0PEEqPihOVUxMKSk7Ci0gICAgQVNTRVJUX0VRKGEyLmdldCgpLCBzdGF0
aWNfY2FzdDxBKj4oTlVMTCkpOwotICAgIEFTU0VSVF9UUlVFKGEwID09IE5VTEwpOwotICAgIEFT
U0VSVF9UUlVFKGExID09IE5VTEwpOwotICAgIEFTU0VSVF9UUlVFKGEyID09IE5VTEwpOwotCi0g
ICAgewotICAgICAgbGlua2VkX3B0cjxBPiBhMyhuZXcgQSk7Ci0gICAgICBhMCA9IGEzOwotICAg
ICAgQVNTRVJUX1RSVUUoYTAgPT0gYTMpOwotICAgICAgQVNTRVJUX1RSVUUoYTAgIT0gTlVMTCk7
Ci0gICAgICBBU1NFUlRfVFJVRShhMC5nZXQoKSA9PSBhMyk7Ci0gICAgICBBU1NFUlRfVFJVRShh
MCA9PSBhMy5nZXQoKSk7Ci0gICAgICBsaW5rZWRfcHRyPEE+IGE0KGEwKTsKLSAgICAgIGExID0g
YTQ7Ci0gICAgICBsaW5rZWRfcHRyPEE+IGE1KG5ldyBBKTsKLSAgICAgIEFTU0VSVF9UUlVFKGE1
LmdldCgpICE9IGEzKTsKLSAgICAgIEFTU0VSVF9UUlVFKGE1ICE9IGEzLmdldCgpKTsKLSAgICAg
IGEyID0gYTU7Ci0gICAgICBsaW5rZWRfcHRyPEI+IGIwKG5ldyBCKTsKLSAgICAgIGxpbmtlZF9w
dHI8QT4gYTYoYjApOwotICAgICAgQVNTRVJUX1RSVUUoYjAgPT0gYTYpOwotICAgICAgQVNTRVJU
X1RSVUUoYTYgPT0gYjApOwotICAgICAgQVNTRVJUX1RSVUUoYjAgIT0gTlVMTCk7Ci0gICAgICBh
NSA9IGIwOwotICAgICAgYTUgPSBiMDsKLSAgICAgIGEzLT5Vc2UoKTsKLSAgICAgIGE0LT5Vc2Uo
KTsKLSAgICAgIGE1LT5Vc2UoKTsKLSAgICAgIGE2LT5Vc2UoKTsKLSAgICAgIGIwLT5Vc2UoKTsK
LSAgICAgICgqYjApLlVzZSgpOwotICAgICAgYjAuZ2V0KCktPlVzZSgpOwotICAgIH0KLQotICAg
IGEwLT5Vc2UoKTsKLSAgICBhMS0+VXNlKCk7Ci0gICAgYTItPlVzZSgpOwotCi0gICAgYTEgPSBh
MjsKLSAgICBhMi5yZXNldChuZXcgQSk7Ci0gICAgYTAucmVzZXQoKTsKLQotICAgIGxpbmtlZF9w
dHI8QT4gYTc7Ci0gIH0KLQotICBBU1NFUlRfU1RSRVEoCi0gICAgIkEwIGN0b3JcbiIKLSAgICAi
QTEgY3RvclxuIgotICAgICJBMiBjdG9yXG4iCi0gICAgIkIyIGN0b3JcbiIKLSAgICAiQTAgdXNl
XG4iCi0gICAgIkEwIHVzZVxuIgotICAgICJCMiB1c2VcbiIKLSAgICAiQjIgdXNlXG4iCi0gICAg
IkIyIHVzZVxuIgotICAgICJCMiB1c2VcbiIKLSAgICAiQjIgdXNlXG4iCi0gICAgIkIyIGR0b3Jc
biIKLSAgICAiQTIgZHRvclxuIgotICAgICJBMCB1c2VcbiIKLSAgICAiQTAgdXNlXG4iCi0gICAg
IkExIHVzZVxuIgotICAgICJBMyBjdG9yXG4iCi0gICAgIkEwIGR0b3JcbiIKLSAgICAiQTMgZHRv
clxuIgotICAgICJBMSBkdG9yXG4iLAotICAgIGhpc3RvcnktPkdldFN0cmluZygpLmNfc3RyKCkK
LSAgKTsKLX0KLQotfSAgLy8gVW5uYW1lZCBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYzliZTM5YTg3ZTg4ZDg5NjAxYjliYzkzNzJhMTRlZGFhZjYxMjk0My4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWxpc3RlbmVyX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApA
QCAtMSwzMTMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoK
LS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
Ly8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwot
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0vLwotLy8gVGhl
IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQotLy8KLS8vIFRoaXMg
ZmlsZSB2ZXJpZmllcyBHb29nbGUgVGVzdCBldmVudCBsaXN0ZW5lcnMgcmVjZWl2ZSBldmVudHMg
YXQgdGhlCi0vLyByaWdodCB0aW1lcy4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5j
bHVkZSA8dmVjdG9yPgotCi11c2luZyA6OnRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVu
dDsKLXVzaW5nIDo6dGVzdGluZzo6RW52aXJvbm1lbnQ7Ci11c2luZyA6OnRlc3Rpbmc6OkluaXRH
b29nbGVUZXN0OwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0OwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0
Q2FzZTsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXI7Ci11c2luZyA6OnRlc3Rp
bmc6OlRlc3RJbmZvOwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDsKLXVzaW5nIDo6
dGVzdGluZzo6VW5pdFRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmc7Ci0K
LS8vIFVzZWQgYnkgdGVzdHMgdG8gcmVnaXN0ZXIgdGhlaXIgZXZlbnRzLgotc3RkOjp2ZWN0b3I8
U3RyaW5nPiogZ19ldmVudHMgPSBOVUxMOwotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci1uYW1lc3Bh
Y2UgaW50ZXJuYWwgewotCi1jbGFzcyBFdmVudFJlY29yZGluZ0xpc3RlbmVyIDogcHVibGljIFRl
c3RFdmVudExpc3RlbmVyIHsKLSBwdWJsaWM6Ci0gIEV2ZW50UmVjb3JkaW5nTGlzdGVuZXIoY29u
c3QgY2hhciogbmFtZSkgOiBuYW1lXyhuYW1lKSB7fQotCi0gcHJvdGVjdGVkOgotICB2aXJ0dWFs
IHZvaWQgT25UZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7
Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0UHJvZ3Jh
bVN0YXJ0IikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvblN0YXJ0KGNv
bnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGl0ZXJhdGlvbikgewotICAgIE1lc3NhZ2UgbWVzc2FnZTsKLSAgICBtZXNz
YWdlIDw8IEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RJdGVyYXRpb25TdGFydCIpCi0gICAgICAg
ICAgICA8PCAiKCIgPDwgaXRlcmF0aW9uIDw8ICIpIjsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNr
KG1lc3NhZ2UuR2V0U3RyaW5nKCkpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1l
bnRzU2V0VXBTdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewotICAgIGdfZXZl
bnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRzU2V0VXBTdGFy
dCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1NldFVwRW5kKGNvbnN0
IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRG
dWxsTWV0aG9kTmFtZSgiT25FbnZpcm9ubWVudHNTZXRVcEVuZCIpKTsKLSAgfQotCi0gIHZpcnR1
YWwgdm9pZCBPblRlc3RDYXNlU3RhcnQoY29uc3QgVGVzdENhc2UmIC8qdGVzdF9jYXNlKi8pIHsK
LSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RDYXNlU3Rh
cnQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8m
IC8qdGVzdF9pbmZvKi8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2RO
YW1lKCJPblRlc3RTdGFydCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RQYXJ0UmVz
dWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiAvKnRlc3RfcGFydF9yZXN1bHQqLykgewotICAgIGdf
ZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdFBhcnRSZXN1bHQiKSk7
Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0RW5kKGNvbnN0IFRlc3RJbmZvJiAvKnRlc3Rf
aW5mbyovKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25U
ZXN0RW5kIikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdENhc2VFbmQoY29uc3QgVGVz
dENhc2UmIC8qdGVzdF9jYXNlKi8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxN
ZXRob2ROYW1lKCJPblRlc3RDYXNlRW5kIikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uRW52
aXJvbm1lbnRzVGVhckRvd25TdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewot
ICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRz
VGVhckRvd25TdGFydCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1Rl
YXJEb3duRW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7Ci0gICAgZ19ldmVudHMt
PnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25FbnZpcm9ubWVudHNUZWFyRG93bkVuZCIp
KTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRl
c3QmIC8qdW5pdF90ZXN0Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGl0ZXJhdGlvbikgewotICAgIE1lc3NhZ2UgbWVzc2FnZTsKLSAgICBtZXNzYWdlIDw8IEdldEZ1
bGxNZXRob2ROYW1lKCJPblRlc3RJdGVyYXRpb25FbmQiKQotICAgICAgICAgICAgPDwgIigiICA8
PCBpdGVyYXRpb24gPDwgIikiOwotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2sobWVzc2FnZS5HZXRT
dHJpbmcoKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0UHJvZ3JhbUVuZChjb25zdCBV
bml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVs
bE1ldGhvZE5hbWUoIk9uVGVzdFByb2dyYW1FbmQiKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIFN0
cmluZyBHZXRGdWxsTWV0aG9kTmFtZShjb25zdCBjaGFyKiBuYW1lKSB7Ci0gICAgTWVzc2FnZSBt
ZXNzYWdlOwotICAgIG1lc3NhZ2UgPDwgbmFtZV8gPDwgIi4iIDw8IG5hbWU7Ci0gICAgcmV0dXJu
IG1lc3NhZ2UuR2V0U3RyaW5nKCk7Ci0gIH0KLQotICBTdHJpbmcgbmFtZV87Ci19OwotCi1jbGFz
cyBFbnZpcm9ubWVudEludm9jYXRpb25DYXRjaGVyIDogcHVibGljIEVudmlyb25tZW50IHsKLSBw
cm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9i
YWNrKFN0cmluZygiRW52aXJvbm1lbnQ6OlNldFVwIikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lk
IFRlYXJEb3duKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJFbnZpcm9ubWVu
dDo6VGVhckRvd24iKSk7Ci0gIH0KLX07Ci0KLWNsYXNzIExpc3RlbmVyVGVzdCA6IHB1YmxpYyBU
ZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7Ci0gICAg
Z19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6U2V0VXBUZXN0Q2FzZSIp
KTsKLSAgfQotCi0gIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7Ci0gICAgZ19ldmVu
dHMtPnB1c2hfYmFjayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6VGVhckRvd25UZXN0Q2FzZSIpKTsK
LSAgfQotCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNr
KFN0cmluZygiTGlzdGVuZXJUZXN0OjpTZXRVcCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBU
ZWFyRG93bigpIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKFN0cmluZygiTGlzdGVuZXJUZXN0
OjpUZWFyRG93biIpKTsKLSAgfQotfTsKLQotVEVTVF9GKExpc3RlbmVyVGVzdCwgRG9lc0Zvbykg
ewotICAvLyBUZXN0IGV4ZWN1dGlvbiBvcmRlciB3aXRoaW4gYSB0ZXN0IGNhc2UgaXMgbm90IGd1
YXJhbnRlZWQgc28gd2UgYXJlIG5vdAotICAvLyByZWNvcmRpbmcgdGhlIHRlc3QgbmFtZS4KLSAg
Z19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHkiKSk7
Ci0gIFNVQ0NFRUQoKTsgIC8vIFRyaWdnZXJzIE9uVGVzdFBhcnRSZXN1bHQuCi19Ci0KLVRFU1Rf
RihMaXN0ZW5lclRlc3QsIERvZXNCYXIpIHsKLSAgZ19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmco
Ikxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHkiKSk7Ci0gIFNVQ0NFRUQoKTsgIC8vIFRyaWdnZXJz
IE9uVGVzdFBhcnRSZXN1bHQuCi19Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCi19ICAv
LyBuYW1lc3BhY2UgdGVzdGluZwotCi11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpFbnZpcm9u
bWVudEludm9jYXRpb25DYXRjaGVyOwotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RXZlbnRS
ZWNvcmRpbmdMaXN0ZW5lcjsKLQotdm9pZCBWZXJpZnlSZXN1bHRzKGNvbnN0IHN0ZDo6dmVjdG9y
PFN0cmluZz4mIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogY29uc3QqIGV4
cGVjdGVkX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgaW50IGV4cGVjdGVkX2RhdGFfc2l6ZSkg
ewotICBjb25zdCBpbnQgYWN0dWFsX3NpemUgPSBkYXRhLnNpemUoKTsKLSAgLy8gSWYgdGhlIGZv
bGxvd2luZyBhc3NlcnRpb24gZmFpbHMsIGEgbmV3IGVudHJ5IHdpbGwgYmUgYXBwZW5kZWQgdG8K
LSAgLy8gZGF0YS4gIEhlbmNlIHdlIHNhdmUgZGF0YS5zaXplKCkgZmlyc3QuCi0gIEVYUEVDVF9F
UShleHBlY3RlZF9kYXRhX3NpemUsIGFjdHVhbF9zaXplKTsKLQotICAvLyBDb21wYXJlcyB0aGUg
Y29tbW9uIHByZWZpeC4KLSAgY29uc3QgaW50IHNob3J0ZXJfc2l6ZSA9IGV4cGVjdGVkX2RhdGFf
c2l6ZSA8PSBhY3R1YWxfc2l6ZSA/Ci0gICAgICBleHBlY3RlZF9kYXRhX3NpemUgOiBhY3R1YWxf
c2l6ZTsKLSAgaW50IGkgPSAwOwotICBmb3IgKDsgaSA8IHNob3J0ZXJfc2l6ZTsgKytpKSB7Ci0g
ICAgQVNTRVJUX1NUUkVRKGV4cGVjdGVkX2RhdGFbaV0sIGRhdGFbaV0uY19zdHIoKSkKLSAgICAg
ICAgPDwgImF0IHBvc2l0aW9uICIgPDwgaTsKLSAgfQotCi0gIC8vIFByaW50cyBleHRyYSBlbGVt
ZW50cyBpbiB0aGUgYWN0dWFsIGRhdGEuCi0gIGZvciAoOyBpIDwgYWN0dWFsX3NpemU7ICsraSkg
ewotICAgIHByaW50ZigiICBBY3R1YWwgZXZlbnQgIyVkOiAlc1xuIiwgaSwgZGF0YVtpXS5jX3N0
cigpKTsKLSAgfQotfQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgc3Rk
Ojp2ZWN0b3I8U3RyaW5nPiBldmVudHM7Ci0gIGdfZXZlbnRzID0gJmV2ZW50czsKLSAgSW5pdEdv
b2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0
ZW5lcnMoKS5BcHBlbmQoCi0gICAgICBuZXcgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lcigiMXN0Iikp
OwotICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCkuQXBwZW5kKAotICAgICAg
bmV3IEV2ZW50UmVjb3JkaW5nTGlzdGVuZXIoIjJuZCIpKTsKLQotICBBZGRHbG9iYWxUZXN0RW52
aXJvbm1lbnQobmV3IEVudmlyb25tZW50SW52b2NhdGlvbkNhdGNoZXIpOwotCi0gIEdURVNUX0NI
RUNLXyhldmVudHMuc2l6ZSgpID09IDApCi0gICAgICA8PCAiQWRkR2xvYmFsVGVzdEVudmlyb25t
ZW50IHNob3VsZCBub3QgZ2VuZXJhdGUgYW55IGV2ZW50cyBpdHNlbGYuIjsKLQotICA6OnRlc3Rp
bmc6OkdURVNUX0ZMQUcocmVwZWF0KSA9IDI7Ci0gIGludCByZXRfdmFsID0gUlVOX0FMTF9URVNU
UygpOwotCi0gIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkX2V2ZW50c1tdID0gewotICAgICIx
c3QuT25UZXN0UHJvZ3JhbVN0YXJ0IiwKLSAgICAiMm5kLk9uVGVzdFByb2dyYW1TdGFydCIsCi0g
ICAgIjFzdC5PblRlc3RJdGVyYXRpb25TdGFydCgwKSIsCi0gICAgIjJuZC5PblRlc3RJdGVyYXRp
b25TdGFydCgwKSIsCi0gICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVwU3RhcnQiLAotICAgICIy
bmQuT25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0IiwKLSAgICAiRW52aXJvbm1lbnQ6OlNldFVwIiwK
LSAgICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiLAotICAgICIxc3QuT25FbnZpcm9ubWVu
dHNTZXRVcEVuZCIsCi0gICAgIjFzdC5PblRlc3RDYXNlU3RhcnQiLAotICAgICIybmQuT25UZXN0
Q2FzZVN0YXJ0IiwKLSAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcFRlc3RDYXNlIiwKLSAgICAiMXN0
Lk9uVGVzdFN0YXJ0IiwKLSAgICAiMm5kLk9uVGVzdFN0YXJ0IiwKLSAgICAiTGlzdGVuZXJUZXN0
OjpTZXRVcCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHkiLAotICAgICIxc3QuT25U
ZXN0UGFydFJlc3VsdCIsCi0gICAgIjJuZC5PblRlc3RQYXJ0UmVzdWx0IiwKLSAgICAiTGlzdGVu
ZXJUZXN0OjpUZWFyRG93biIsCi0gICAgIjJuZC5PblRlc3RFbmQiLAotICAgICIxc3QuT25UZXN0
RW5kIiwKLSAgICAiMXN0Lk9uVGVzdFN0YXJ0IiwKLSAgICAiMm5kLk9uVGVzdFN0YXJ0IiwKLSAg
ICAiTGlzdGVuZXJUZXN0OjpTZXRVcCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHki
LAotICAgICIxc3QuT25UZXN0UGFydFJlc3VsdCIsCi0gICAgIjJuZC5PblRlc3RQYXJ0UmVzdWx0
IiwKLSAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93biIsCi0gICAgIjJuZC5PblRlc3RFbmQiLAot
ICAgICIxc3QuT25UZXN0RW5kIiwKLSAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93blRlc3RDYXNl
IiwKLSAgICAiMm5kLk9uVGVzdENhc2VFbmQiLAotICAgICIxc3QuT25UZXN0Q2FzZUVuZCIsCi0g
ICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiLAotICAgICIybmQuT25FbnZpcm9u
bWVudHNUZWFyRG93blN0YXJ0IiwKLSAgICAiRW52aXJvbm1lbnQ6OlRlYXJEb3duIiwKLSAgICAi
Mm5kLk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiLAotICAgICIxc3QuT25FbnZpcm9ubWVudHNU
ZWFyRG93bkVuZCIsCi0gICAgIjJuZC5PblRlc3RJdGVyYXRpb25FbmQoMCkiLAotICAgICIxc3Qu
T25UZXN0SXRlcmF0aW9uRW5kKDApIiwKLSAgICAiMXN0Lk9uVGVzdEl0ZXJhdGlvblN0YXJ0KDEp
IiwKLSAgICAiMm5kLk9uVGVzdEl0ZXJhdGlvblN0YXJ0KDEpIiwKLSAgICAiMXN0Lk9uRW52aXJv
bm1lbnRzU2V0VXBTdGFydCIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50c1NldFVwU3RhcnQiLAot
ICAgICJFbnZpcm9ubWVudDo6U2V0VXAiLAotICAgICIybmQuT25FbnZpcm9ubWVudHNTZXRVcEVu
ZCIsCi0gICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVwRW5kIiwKLSAgICAiMXN0Lk9uVGVzdENh
c2VTdGFydCIsCi0gICAgIjJuZC5PblRlc3RDYXNlU3RhcnQiLAotICAgICJMaXN0ZW5lclRlc3Q6
OlNldFVwVGVzdENhc2UiLAotICAgICIxc3QuT25UZXN0U3RhcnQiLAotICAgICIybmQuT25UZXN0
U3RhcnQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwKLSAgICAiTGlzdGVuZXJUZXN0Ojoq
IFRlc3QgQm9keSIsCi0gICAgIjFzdC5PblRlc3RQYXJ0UmVzdWx0IiwKLSAgICAiMm5kLk9uVGVz
dFBhcnRSZXN1bHQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duIiwKLSAgICAiMm5kLk9u
VGVzdEVuZCIsCi0gICAgIjFzdC5PblRlc3RFbmQiLAotICAgICIxc3QuT25UZXN0U3RhcnQiLAot
ICAgICIybmQuT25UZXN0U3RhcnQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwKLSAgICAi
TGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCi0gICAgIjFzdC5PblRlc3RQYXJ0UmVzdWx0IiwK
LSAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3du
IiwKLSAgICAiMm5kLk9uVGVzdEVuZCIsCi0gICAgIjFzdC5PblRlc3RFbmQiLAotICAgICJMaXN0
ZW5lclRlc3Q6OlRlYXJEb3duVGVzdENhc2UiLAotICAgICIybmQuT25UZXN0Q2FzZUVuZCIsCi0g
ICAgIjFzdC5PblRlc3RDYXNlRW5kIiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzVGVhckRvd25T
dGFydCIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiLAotICAgICJFbnZp
cm9ubWVudDo6VGVhckRvd24iLAotICAgICIybmQuT25FbnZpcm9ubWVudHNUZWFyRG93bkVuZCIs
Ci0gICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5kIiwKLSAgICAiMm5kLk9uVGVzdEl0
ZXJhdGlvbkVuZCgxKSIsCi0gICAgIjFzdC5PblRlc3RJdGVyYXRpb25FbmQoMSkiLAotICAgICIy
bmQuT25UZXN0UHJvZ3JhbUVuZCIsCi0gICAgIjFzdC5PblRlc3RQcm9ncmFtRW5kIgotICB9Owot
ICBWZXJpZnlSZXN1bHRzKGV2ZW50cywKLSAgICAgICAgICAgICAgICBleHBlY3RlZF9ldmVudHMs
Ci0gICAgICAgICAgICAgICAgc2l6ZW9mKGV4cGVjdGVkX2V2ZW50cykvc2l6ZW9mKGV4cGVjdGVk
X2V2ZW50c1swXSkpOwotCi0gIC8vIFdlIG5lZWQgdG8gY2hlY2sgbWFudWFsbHkgZm9yIGFkIGhv
YyB0ZXN0IGZhaWx1cmVzIHRoYXQgaGFwcGVuIGFmdGVyCi0gIC8vIFJVTl9BTExfVEVTVFMgZmlu
aXNoZXMuCi0gIGlmIChVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+RmFpbGVkKCkpCi0gICAgcmV0
X3ZhbCA9IDE7Ci0KLSAgcmV0dXJuIHJldF92YWw7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LW1lc3NhZ2VfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBlNDJiMDM0NDc4NzJlM2U4ZjA3YTlhNGFkZDJiZTVkZDQ2OTgwYjU1Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEs
MTY3ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoK
LS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
Ly8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwot
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGVz
dHMgZm9yIHRoZSBNZXNzYWdlIGNsYXNzLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtbWVzc2Fn
ZS5oPgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotbmFtZXNwYWNlIHsKLQotdXNpbmcg
Ojp0ZXN0aW5nOjpNZXNzYWdlOwotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyU3RyZWFt
OwotCi0vLyBBIGhlbHBlciBmdW5jdGlvbiB0aGF0IHR1cm5zIGEgTWVzc2FnZSBpbnRvIGEgQyBz
dHJpbmcuCi1jb25zdCBjaGFyKiBUb0NTdHJpbmcoY29uc3QgTWVzc2FnZSYgbXNnKSB7Ci0gIHN0
YXRpYyB0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nIHJlc3VsdDsKLSAgcmVzdWx0ID0gbXNnLkdl
dFN0cmluZygpOwotICByZXR1cm4gcmVzdWx0LmNfc3RyKCk7Ci19Ci0KLS8vIFRlc3RzIHRoZSB0
ZXN0aW5nOjpNZXNzYWdlIGNsYXNzCi0KLS8vIFRlc3RzIHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9y
LgotVEVTVChNZXNzYWdlVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yKSB7Ci0gIGNvbnN0IE1lc3Nh
Z2UgbXNnOwotICBFWFBFQ1RfU1RSRVEoIiIsIFRvQ1N0cmluZyhtc2cpKTsKLX0KLQotLy8gVGVz
dHMgdGhlIGNvcHkgY29uc3RydWN0b3IuCi1URVNUKE1lc3NhZ2VUZXN0LCBDb3B5Q29uc3RydWN0
b3IpIHsKLSAgY29uc3QgTWVzc2FnZSBtc2cxKCJIZWxsbyIpOwotICBjb25zdCBNZXNzYWdlIG1z
ZzIobXNnMSk7Ci0gIEVYUEVDVF9TVFJFUSgiSGVsbG8iLCBUb0NTdHJpbmcobXNnMikpOwotfQot
Ci0vLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSBNZXNzYWdlIGZyb20gYSBDLXN0cmluZy4KLVRFU1Qo
TWVzc2FnZVRlc3QsIENvbnN0cnVjdHNGcm9tQ1N0cmluZykgewotICBNZXNzYWdlIG1zZygiSGVs
bG8iKTsKLSAgRVhQRUNUX1NUUkVRKCJIZWxsbyIsIFRvQ1N0cmluZyhtc2cpKTsKLX0KLQotLy8g
VGVzdHMgc3RyZWFtaW5nIGEgZmxvYXQuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zRmxvYXQp
IHsKLSAgY29uc3QgY2hhciogY29uc3QgcyA9IFRvQ1N0cmluZyhNZXNzYWdlKCkgPDwgMS4yMzQ1
NkYgPDwgIiAiIDw8IDIuMzQ1NjdGKTsKLSAgLy8gQm90aCBudW1iZXJzIHNob3VsZCBiZSBwcmlu
dGVkIHdpdGggZW5vdWdoIHByZWNpc2lvbi4KLSAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5n
OjpJc1N1YnN0cmluZywgIjEuMjM0NTYwIiwgcyk7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVz
dGluZzo6SXNTdWJzdHJpbmcsICIgMi4zNDU2NjkiLCBzKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFt
aW5nIGEgZG91YmxlLgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc0RvdWJsZSkgewotICBjb25z
dCBjaGFyKiBjb25zdCBzID0gVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCAxMjYwNTcwODgwLjQ1NTU0
OTcgPDwgIiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMTI2MDU3MjI2
NS4xOTU0NTM0KTsKLSAgLy8gQm90aCBudW1iZXJzIHNob3VsZCBiZSBwcmludGVkIHdpdGggZW5v
dWdoIHByZWNpc2lvbi4KLSAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmlu
ZywgIjEyNjA1NzA4ODAuNDUiLCBzKTsKLSAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5nOjpJ
c1N1YnN0cmluZywgIiAxMjYwNTcyMjY1LjE5Iiwgcyk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWlu
ZyBhIG5vbi1jaGFyIHBvaW50ZXIuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zUG9pbnRlcikg
ewotICBpbnQgbiA9IDA7Ci0gIGludCogcCA9ICZuOwotICBFWFBFQ1RfU1RSTkUoIihudWxsKSIs
IFRvQ1N0cmluZyhNZXNzYWdlKCkgPDwgcCkpOwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcgYSBO
VUxMIG5vbi1jaGFyIHBvaW50ZXIuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zTnVsbFBvaW50
ZXIpIHsKLSAgaW50KiBwID0gTlVMTDsKLSAgRVhQRUNUX1NUUkVRKCIobnVsbCkiLCBUb0NTdHJp
bmcoTWVzc2FnZSgpIDw8IHApKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFtaW5nIGEgQyBzdHJpbmcu
Ci1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zQ1N0cmluZykgewotICBFWFBFQ1RfU1RSRVEoIkZv
byIsIFRvQ1N0cmluZyhNZXNzYWdlKCkgPDwgIkZvbyIpKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFt
aW5nIGEgTlVMTCBDIHN0cmluZy4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNOdWxsQ1N0cmlu
ZykgewotICBjaGFyKiBwID0gTlVMTDsKLSAgRVhQRUNUX1NUUkVRKCIobnVsbCkiLCBUb0NTdHJp
bmcoTWVzc2FnZSgpIDw8IHApKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFtaW5nIHN0ZDo6c3RyaW5n
LgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc1N0cmluZykgewotICBjb25zdCA6OnN0ZDo6c3Ry
aW5nIHN0cigiSGVsbG8iKTsKLSAgRVhQRUNUX1NUUkVRKCJIZWxsbyIsIFRvQ1N0cmluZyhNZXNz
YWdlKCkgPDwgc3RyKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgd2UgY2FuIG91dHB1dCBzdHJpbmdz
IGNvbnRhaW5pbmcgZW1iZWRkZWQgTlVMcy4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNTdHJp
bmdXaXRoRW1iZWRkZWROVUwpIHsKLSAgY29uc3QgY2hhciBjaGFyX2FycmF5X3dpdGhfbnVsW10g
PQotICAgICAgIkhlcmUncyBhIE5VTFwwIGFuZCBzb21lIG1vcmUgc3RyaW5nIjsKLSAgY29uc3Qg
OjpzdGQ6OnN0cmluZyBzdHJpbmdfd2l0aF9udWwoY2hhcl9hcnJheV93aXRoX251bCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGNoYXJfYXJyYXlfd2l0aF9u
dWwpIC0gMSk7Ci0gIEVYUEVDVF9TVFJFUSgiSGVyZSdzIGEgTlVMXFwwIGFuZCBzb21lIG1vcmUg
c3RyaW5nIiwKLSAgICAgICAgICAgICAgIFRvQ1N0cmluZyhNZXNzYWdlKCkgPDwgc3RyaW5nX3dp
dGhfbnVsKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBhIE5VTCBjaGFyLgotVEVTVChNZXNz
YWdlVGVzdCwgU3RyZWFtc05VTENoYXIpIHsKLSAgRVhQRUNUX1NUUkVRKCJcXDAiLCBUb0NTdHJp
bmcoTWVzc2FnZSgpIDw8ICdcMCcpKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFtaW5nIGludC4KLVRF
U1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNJbnQpIHsKLSAgRVhQRUNUX1NUUkVRKCIxMjMiLCBUb0NT
dHJpbmcoTWVzc2FnZSgpIDw8IDEyMykpOwotfQotCi0vLyBUZXN0cyB0aGF0IGJhc2ljIElPIG1h
bmlwdWxhdG9ycyAoZW5kbCwgZW5kcywgYW5kIGZsdXNoKSBjYW4gYmUKLS8vIHN0cmVhbWVkIHRv
IE1lc3NhZ2UuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zQmFzaWNJb01hbmlwKSB7Ci0gIEVY
UEVDVF9TVFJFUSgiTGluZSAxLlxuQSBOVUwgY2hhciBcXDAgaW4gbGluZSAyLiIsCi0gICAgICAg
ICAgICAgICBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8ICJMaW5lIDEuIiA8PCBzdGQ6OmVuZGwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAiQSBOVUwgY2hhciAiIDw8IHN0ZDo6ZW5kcyA8PCBz
dGQ6OmZsdXNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBpbiBsaW5lIDIuIikpOwot
fQotCi0vLyBUZXN0cyBNZXNzYWdlOjpHZXRTdHJpbmcoKQotVEVTVChNZXNzYWdlVGVzdCwgR2V0
U3RyaW5nKSB7Ci0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgMSA8PCAiIGxhbWIiOwotICBFWFBF
Q1RfU1RSRVEoIjEgbGFtYiIsIG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKTsKLX0KLQotLy8gVGVz
dHMgc3RyZWFtaW5nIGEgTWVzc2FnZSBvYmplY3QgdG8gYW4gb3N0cmVhbS4KLVRFU1QoTWVzc2Fn
ZVRlc3QsIFN0cmVhbXNUb09TdHJlYW0pIHsKLSAgTWVzc2FnZSBtc2coIkhlbGxvIik7Ci0gIFN0
clN0cmVhbSBzczsKLSAgc3MgPDwgbXNnOwotICBFWFBFQ1RfU1RSRVEoIkhlbGxvIiwgdGVzdGlu
Zzo6aW50ZXJuYWw6OlN0clN0cmVhbVRvU3RyaW5nKCZzcykuY19zdHIoKSk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgYSBNZXNzYWdlIG9iamVjdCBkb2Vzbid0IHRha2UgdXAgdG9vIG11Y2ggc3RhY2sg
c3BhY2UuCi1URVNUKE1lc3NhZ2VUZXN0LCBEb2VzTm90VGFrZVVwTXVjaFN0YWNrU3BhY2UpIHsK
LSAgRVhQRUNUX0xFKHNpemVvZihNZXNzYWdlKSwgMTZVKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LW9wdGlvbnNf
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Qtb3B0aW9uc190ZXN0
LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTJjYmM5MmU1ZTAyOGM3NGM4MmYw
NzUwZmRkOGJkZmI0ZTg4MzFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Qtb3B0aW9uc190ZXN0
LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMjEyICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBH
b29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
Ly8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3JzOiBrZWl0aC5yYXlAZ21haWwu
Y29tIChLZWl0aCBSYXkpCi0vLwotLy8gR29vZ2xlIFRlc3QgVW5pdFRlc3RPcHRpb25zIHRlc3Rz
Ci0vLwotLy8gVGhpcyBmaWxlIHRlc3RzIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyB1c2VkIGludGVy
bmFsbHkgYnkKLS8vIEdvb2dsZSBUZXN0LiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0
aG91dCBub3RpY2UuCi0vLwotLy8gVGhpcyBmaWxlIGlzICNpbmNsdWRlZCBmcm9tIGd0ZXN0LmNj
LCB0byBhdm9pZCBjaGFuZ2luZyBidWlsZCBvcgotLy8gbWFrZS1maWxlcyBvbiBXaW5kb3dzIGFu
ZCBvdGhlciBwbGF0Zm9ybXMuIERvIG5vdCAjaW5jbHVkZSB0aGlzIGZpbGUKLS8vIGFueXdoZXJl
IGVsc2UhCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0jaWYgR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZWxpZiBHVEVTVF9PU19XSU5ET1dTCi0j
aW5jbHVkZSA8ZGlyZWN0Lmg+Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0K
LS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2ds
ZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1p
bnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxl
ciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRl
bnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8gaGlzIGNvZGUuCi0j
ZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWludGVy
bmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi1uYW1lc3BhY2UgdGVz
dGluZyB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotbmFtZXNwYWNlIHsKLQotLy8gVHVybnMgdGhl
IGdpdmVuIHJlbGF0aXZlIHBhdGggaW50byBhbiBhYnNvbHV0ZSBwYXRoLgotRmlsZVBhdGggR2V0
QWJzb2x1dGVQYXRoT2YoY29uc3QgRmlsZVBhdGgmIHJlbGF0aXZlX3BhdGgpIHsKLSAgcmV0dXJu
IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpLCByZWxhdGl2
ZV9wYXRoKTsKLX0KLQotLy8gVGVzdGluZyBVbml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1h
dC9HZXRPdXRwdXRGaWxlLgotCi1URVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZvcm1hdERl
ZmF1bHQpIHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0gIiI7Ci0gIEVYUEVDVF9TVFJFUSgiIiwg
VW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQoKS5jX3N0cigpKTsKLX0KLQotVEVTVChY
bWxPdXRwdXRUZXN0LCBHZXRPdXRwdXRGb3JtYXQpIHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0g
InhtbDpmaWxlbmFtZSI7Ci0gIEVYUEVDVF9TVFJFUSgieG1sIiwgVW5pdFRlc3RPcHRpb25zOjpH
ZXRPdXRwdXRGb3JtYXQoKS5jX3N0cigpKTsKLX0KLQotVEVTVChYbWxPdXRwdXRUZXN0LCBHZXRP
dXRwdXRGaWxlRGVmYXVsdCkgewotICBHVEVTVF9GTEFHKG91dHB1dCkgPSAiIjsKLSAgRVhQRUNU
X1NUUkVRKEdldEFic29sdXRlUGF0aE9mKEZpbGVQYXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuY19z
dHIoKSwKLSAgICAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9P
dXRwdXRGaWxlKCkuY19zdHIoKSk7Ci19Ci0KLVRFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0
RmlsZVNpbmdsZUZpbGUpIHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbDpmaWxlbmFtZS5h
YmMiOwotICBFWFBFQ1RfU1RSRVEoR2V0QWJzb2x1dGVQYXRoT2YoRmlsZVBhdGgoImZpbGVuYW1l
LmFiYyIpKS5jX3N0cigpLAotICAgICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNv
bHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0cigpKTsKLX0KLQotVEVTVChYbWxPdXRwdXRUZXN0
LCBHZXRPdXRwdXRGaWxlRnJvbURpcmVjdG9yeVBhdGgpIHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQp
ID0gInhtbDpwYXRoIiBHVEVTVF9QQVRIX1NFUF87Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVj
dGVkX291dHB1dF9maWxlID0KLSAgICAgIEdldEFic29sdXRlUGF0aE9mKAotICAgICAgICAgIEZp
bGVQYXRoKHN0ZDo6c3RyaW5nKCJwYXRoIikgKyBHVEVTVF9QQVRIX1NFUF8gKwotICAgICAgICAg
ICAgICAgICAgIEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLmNfc3RyKCkgKyAiLnhtbCIpKS5j
X3N0cigpOwotICBjb25zdCBTdHJpbmcmIG91dHB1dF9maWxlID0gVW5pdFRlc3RPcHRpb25zOjpH
ZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKTsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIEVY
UEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUuY19zdHIoKSwgb3V0cHV0X2ZpbGUu
Y19zdHIoKSk7Ci0jZWxzZQotICBFWFBFQ1RfRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUsIG91dHB1
dF9maWxlLmNfc3RyKCkpOwotI2VuZGlmCi19Ci0KLVRFU1QoT3V0cHV0RmlsZUhlbHBlcnNUZXN0
LCBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUpIHsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZXhlX3N0
ciA9IEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLmNfc3RyKCk7Ci0jaWYgR1RFU1RfT1NfV0lO
RE9XUwotICBjb25zdCBib29sIHN1Y2Nlc3MgPQotICAgICAgX3N0cmNtcGkoImd0ZXN0LW9wdGlv
bnNfdGVzdCIsIGV4ZV9zdHIuY19zdHIoKSkgPT0gMCB8fAotICAgICAgX3N0cmNtcGkoImd0ZXN0
LW9wdGlvbnMtZXhfdGVzdCIsIGV4ZV9zdHIuY19zdHIoKSkgPT0gMCB8fAotICAgICAgX3N0cmNt
cGkoImd0ZXN0X2FsbF90ZXN0IiwgZXhlX3N0ci5jX3N0cigpKSA9PSAwIHx8Ci0gICAgICBfc3Ry
Y21waSgiZ3Rlc3RfZGxsX3Rlc3QiLCBleGVfc3RyLmNfc3RyKCkpID09IDA7Ci0jZWxzZQotICAv
LyBUT0RPKHdhbkBnb29nbGUuY29tKTogcmVtb3ZlIHRoZSBoYXJkLWNvZGVkICJsdC0iIHByZWZp
eCB3aGVuCi0gIC8vICAgQ2hhbmRsZXIgQ2FycnV0aCdzIGxpYnRvb2wgcmVwbGFjZW1lbnQgaXMg
cmVhZHkuCi0gIGNvbnN0IGJvb2wgc3VjY2VzcyA9Ci0gICAgICBleGVfc3RyID09ICJndGVzdC1v
cHRpb25zX3Rlc3QiIHx8Ci0gICAgICBleGVfc3RyID09ICJndGVzdF9hbGxfdGVzdCIgfHwKLSAg
ICAgIGV4ZV9zdHIgPT0gImx0LWd0ZXN0X2FsbF90ZXN0IiB8fAotICAgICAgZXhlX3N0ciA9PSAi
Z3Rlc3RfZGxsX3Rlc3QiOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0gIGlmICghc3Vj
Y2VzcykKLSAgICBGQUlMKCkgPDwgIkdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpIHJldHVybnMg
IiA8PCBleGVfc3RyOwotfQotCi1jbGFzcyBYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0IDogcHVibGlj
IFRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIG9yaWdp
bmFsX3dvcmtpbmdfZGlyXyA9IEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCk7Ci0gICAgcG9zaXg6
OkNoRGlyKCIuLiIpOwotICAgIC8vIFRoaXMgd2lsbCBtYWtlIHRoZSB0ZXN0IGZhaWwgaWYgcnVu
IGZyb20gdGhlIHJvb3QgZGlyZWN0b3J5LgotICAgIEVYUEVDVF9TVFJORShvcmlnaW5hbF93b3Jr
aW5nX2Rpcl8uY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgRmlsZVBhdGg6OkdldEN1cnJlbnRE
aXIoKS5jX3N0cigpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBw
b3NpeDo6Q2hEaXIob3JpZ2luYWxfd29ya2luZ19kaXJfLmNfc3RyKCkpOwotICB9Ci0KLSAgRmls
ZVBhdGggb3JpZ2luYWxfd29ya2luZ19kaXJfOwotfTsKLQotVEVTVF9GKFhtbE91dHB1dENoYW5n
ZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aERlZmF1bHQpIHsKLSAgR1RF
U1RfRkxBRyhvdXRwdXQpID0gIiI7Ci0gIEVYUEVDVF9TVFJFUShGaWxlUGF0aDo6Q29uY2F0UGF0
aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZpbGVQYXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuY19zdHIoKSwKLSAgICAgICAgICAg
ICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIo
KSk7Ci19Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFs
V29ya2luZ0RpcldpdGhEZWZhdWx0WE1MKSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWwi
OwotICBFWFBFQ1RfU1RSRVEoRmlsZVBhdGg6OkNvbmNhdFBhdGhzKG9yaWdpbmFsX3dvcmtpbmdf
ZGlyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgidGVz
dF9kZXRhaWwueG1sIikpLmNfc3RyKCksCi0gICAgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6
OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOwotfQotCi1URVNUX0YoWG1s
T3V0cHV0Q2hhbmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoUmVsYXRp
dmVGaWxlKSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6ZmlsZW5hbWUuYWJjIjsKLSAg
RVhQRUNUX1NUUkVRKEZpbGVQYXRoOjpDb25jYXRQYXRocyhvcmlnaW5hbF93b3JraW5nX2Rpcl8s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImZpbGVuYW1l
LmFiYyIpKS5jX3N0cigpLAotICAgICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNv
bHV0ZVBhdGhUb091dHB1dEZpbGUoKS5jX3N0cigpKTsKLX0KLQotVEVTVF9GKFhtbE91dHB1dENo
YW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aFJlbGF0aXZlUGF0aCkg
ewotICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOnBhdGgiIEdURVNUX1BBVEhfU0VQXzsKLSAg
Y29uc3Qgc3RkOjpzdHJpbmcgZXhwZWN0ZWRfb3V0cHV0X2ZpbGUgPQotICAgICAgRmlsZVBhdGg6
OkNvbmNhdFBhdGhzKAotICAgICAgICAgIG9yaWdpbmFsX3dvcmtpbmdfZGlyXywKLSAgICAgICAg
ICBGaWxlUGF0aChzdGQ6OnN0cmluZygicGF0aCIpICsgR1RFU1RfUEFUSF9TRVBfICsKLSAgICAg
ICAgICAgICAgICAgICBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5jX3N0cigpICsgIi54bWwi
KSkuY19zdHIoKTsKLSAgY29uc3QgU3RyaW5nJiBvdXRwdXRfZmlsZSA9IFVuaXRUZXN0T3B0aW9u
czo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwot
ICBFWFBFQ1RfU1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxlLmNfc3RyKCksIG91dHB1dF9m
aWxlLmNfc3RyKCkpOwotI2Vsc2UKLSAgRVhQRUNUX0VRKGV4cGVjdGVkX291dHB1dF9maWxlLCBv
dXRwdXRfZmlsZS5jX3N0cigpKTsKLSNlbmRpZgotfQotCi1URVNUX0YoWG1sT3V0cHV0Q2hhbmdl
RGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoQWJzb2x1dGVGaWxlKSB7Ci0j
aWYgR1RFU1RfT1NfV0lORE9XUwotICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOmM6XFx0bXBc
XGZpbGVuYW1lLmFiYyI7Ci0gIEVYUEVDVF9TVFJFUShGaWxlUGF0aCgiYzpcXHRtcFxcZmlsZW5h
bWUuYWJjIikuY19zdHIoKSwKLSAgICAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJz
b2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSk7Ci0jZWxzZQotICBHVEVTVF9GTEFHKG91
dHB1dCkgPSJ4bWw6L3RtcC9maWxlbmFtZS5hYmMiOwotICBFWFBFQ1RfU1RSRVEoRmlsZVBhdGgo
Ii90bXAvZmlsZW5hbWUuYWJjIikuY19zdHIoKSwKLSAgICAgICAgICAgICAgIFVuaXRUZXN0T3B0
aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSk7Ci0jZW5kaWYKLX0K
LQotVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5n
RGlyV2l0aEFic29sdXRlUGF0aCkgewotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgY29uc3Qgc3Rk
OjpzdHJpbmcgcGF0aCA9ICJjOlxcdG1wXFwiOwotI2Vsc2UKLSAgY29uc3Qgc3RkOjpzdHJpbmcg
cGF0aCA9ICIvdG1wLyI7Ci0jZW5kaWYKLQotICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOiIg
KyBwYXRoOwotICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3RlZF9vdXRwdXRfZmlsZSA9Ci0gICAg
ICBwYXRoICsgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuY19zdHIoKSArICIueG1sIjsKLSAg
Y29uc3QgU3RyaW5nJiBvdXRwdXRfZmlsZSA9IFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQ
YXRoVG9PdXRwdXRGaWxlKCk7Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIEVYUEVDVF9TVFJD
QVNFRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUuY19zdHIoKSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7
Ci0jZWxzZQotICBFWFBFQ1RfRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUsIG91dHB1dF9maWxlLmNf
c3RyKCkpOwotI2VuZGlmCi19Ci0KLX0gIC8vIG5hbWVzcGFjZQotfSAgLy8gbmFtZXNwYWNlIGlu
dGVybmFsCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjY2I2Y2ZhYzllNzZiODI3ZjE3YWUxMTgyOWUyMzZkNmY5N2VlNjQ2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdDJfdGVzdC5jYworKysgL2Rldi9u
dWxsCkBAIC0xLDY1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0v
LwotLy8gVGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZi4gIFRoaXMgdmVyaWZpZXMgdGhhdCB0
aGUgYmFzaWMgY29uc3RydWN0cyBvZgotLy8gR29vZ2xlIFRlc3Qgd29yay4KLQotI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+Ci0KLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5o
IgotCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotdXNpbmcgOjp0ZXN0aW5nOjpWYWx1ZXM7
Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVyYXRvcjsKLQotLy8gVGVzdHMg
dGhhdCBnZW5lcmF0b3JzIGRlZmluZWQgaW4gYSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdAot
Ly8gYXJlIGZ1bmN0aW9uYWwuIFRoZSB0ZXN0IHVzaW5nIGV4dGVybl9nZW4gaXMgZGVmaW5lZAot
Ly8gaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmNjLgotUGFyYW1HZW5lcmF0b3I8aW50PiBleHRl
cm5fZ2VuID0gVmFsdWVzKDMzKTsKLQotLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVz
dCBjYXNlIGNhbiBiZSBkZWZpbmVkIGluIG9uZSB0cmFuc2xhdGlvbiB1bml0Ci0vLyBhbmQgaW5z
dGFudGlhdGVkIGluIGFub3RoZXIuIFRoZSB0ZXN0IGlzIGRlZmluZWQgaW4gZ3Rlc3QtcGFyYW0t
dGVzdF90ZXN0LmNjCi0vLyBhbmQgRXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCBmaXh0dXJlIGNs
YXNzIGlzIGRlZmluZWQgaW4KLS8vIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oLgotSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoTXVsdGlwbGVzT2YzMywKLSAgICAgICAgICAgICAgICAgICAgICAgIEV4
dGVybmFsSW5zdGFudGlhdGlvblRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMo
MzMsIDY2KSk7Ci0KLS8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4g
YmUgaW5zdGFudGlhdGVkCi0vLyBpbiBtdWx0aXBsZSB0cmFuc2xhdGlvbiB1bml0cy4gQW5vdGhl
ciBpbnN0YW50aWF0aW9uIGlzIGRlZmluZWQKLS8vIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5j
YyBhbmQgSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0Ci0vLyBmaXh0
dXJlIGlzIGRlZmluZWQgaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmgKLUlOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKFNlcXVlbmNlMiwKLSAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRp
b25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IFZhbHVlcyg0MiozLCA0Mio0LCA0Mio1KSk7Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFN
X1RFU1QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFy
YW0tdGVzdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wYXJh
bS10ZXN0X3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwYTBlNzM1YzBi
OTg4ZWYxYTIyYjdkN2FlNjkwMjcwMThiZGI4Y2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1w
YXJhbS10ZXN0X3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw4MzUgKzAsMCBAQAotLy8gQ29w
eXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmli
dXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogdmxh
ZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCi0vLyBUZXN0cyBmb3IgR29vZ2xlIFRlc3Qg
aXRzZWxmLiBUaGlzIGZpbGUgdmVyaWZpZXMgdGhhdCB0aGUgcGFyYW1ldGVyCi0vLyBnZW5lcmF0
b3JzIG9iamVjdHMgcHJvZHVjZSBjb3JyZWN0IHBhcmFtZXRlciBzZXF1ZW5jZXMgYW5kIHRoYXQK
LS8vIEdvb2dsZSBUZXN0IHJ1bnRpbWUgaW5zdGFudGlhdGVzIGNvcnJlY3QgdGVzdHMgZnJvbSB0
aG9zZSBzZXF1ZW5jZXMuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0jaWYgR1RFU1Rf
SEFTX1BBUkFNX1RFU1QKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxpb3N0cmVh
bT4KLSNpbmNsdWRlIDxsaXN0PgotI2luY2x1ZGUgPHNzdHJlYW0+Ci0jaW5jbHVkZSA8c3RyaW5n
PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotLy8gVG8gaW5jbHVkZSBndGVzdC1pbnRlcm5hbC1pbmwu
aC4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3Qt
aW50ZXJuYWwtaW5sLmgiICAvLyBmb3IgVW5pdFRlc3RPcHRpb25zCi0jdW5kZWYgR1RFU1RfSU1Q
TEVNRU5UQVRJT05fCi0KLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oIgot
Ci11c2luZyA6OnN0ZDo6dmVjdG9yOwotdXNpbmcgOjpzdGQ6OnNvcnQ7Ci0KLXVzaW5nIDo6dGVz
dGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50OwotdXNpbmcgOjp0ZXN0aW5nOjpCb29sOwot
dXNpbmcgOjp0ZXN0aW5nOjpNZXNzYWdlOwotdXNpbmcgOjp0ZXN0aW5nOjpSYW5nZTsKLXVzaW5n
IDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTsKLXVzaW5nIDo6dGVzdGluZzo6VmFsdWVzOwotdXNp
bmcgOjp0ZXN0aW5nOjpWYWx1ZXNJbjsKLQotI2lmIEdURVNUX0hBU19DT01CSU5FCi11c2luZyA6
OnRlc3Rpbmc6OkNvbWJpbmU7Ci11c2luZyA6OnN0ZDo6dHIxOjpnZXQ7Ci11c2luZyA6OnN0ZDo6
dHIxOjptYWtlX3R1cGxlOwotdXNpbmcgOjpzdGQ6OnRyMTo6dHVwbGU7Ci0jZW5kaWYgIC8vIEdU
RVNUX0hBU19DT01CSU5FCi0KLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJh
dG9yOwotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOwotCi0vLyBQ
cmludHMgYSB2YWx1ZSB0byBhIHN0cmluZy4KLS8vCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTog
cmVtb3ZlIFByaW50VmFsdWUoKSB3aGVuIHdlIG1vdmUgbWF0Y2hlcnMgYW5kCi0vLyBFWFBFQ1Rf
VEhBVCgpIGZyb20gR29vZ2xlIE1vY2sgdG8gR29vZ2xlIFRlc3QuICBBdCB0aGF0IHRpbWUsIHdl
Ci0vLyBjYW4gd3JpdGUgRVhQRUNUX1RIQVQoeCwgRXEoeSkpIHRvIGNvbXBhcmUgdHdvIHR1cGxl
cyB4IGFuZCB5LCBhcwotLy8gRVhQRUNUX1RIQVQoKSBhbmQgdGhlIG1hdGNoZXJzIGtub3cgaG93
IHRvIHByaW50IHR1cGxlcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotOjpzdGQ6OnN0cmluZyBQ
cmludFZhbHVlKGNvbnN0IFQmIHZhbHVlKSB7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFt
OwotICBzdHJlYW0gPDwgdmFsdWU7Ci0gIHJldHVybiBzdHJlYW0uc3RyKCk7Ci19Ci0KLSNpZiBH
VEVTVF9IQVNfQ09NQklORQotCi0vLyBUaGVzZSBvdmVybG9hZHMgYWxsb3cgcHJpbnRpbmcgdHVw
bGVzIGluIG91ciB0ZXN0cy4gIFdlIGNhbm5vdAotLy8gZGVmaW5lIGFuIG9wZXJhdG9yPDwgZm9y
IHR1cGxlcywgYXMgdGhhdCBkZWZpbml0aW9uIG5lZWRzIHRvIGJlIGluCi0vLyB0aGUgc3RkIG5h
bWVzcGFjZSBpbiBvcmRlciB0byBiZSBwaWNrZWQgdXAgYnkgR29vZ2xlIFRlc3QgdmlhCi0vLyBB
cmd1bWVudC1EZXBlbmRlbnQgTG9va3VwLCB5ZXQgZGVmaW5pbmcgYW55dGhpbmcgaW4gdGhlIHN0
ZAotLy8gbmFtZXNwYWNlIGluIG5vbi1TVEwgY29kZSBpcyB1bmRlZmluZWQgYmVoYXZpb3IuCi0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci06OnN0ZDo6c3RyaW5nIFByaW50
VmFsdWUoY29uc3QgdHVwbGU8VDEsIFQyPiYgdmFsdWUpIHsKLSAgOjpzdGQ6OnN0cmluZ3N0cmVh
bSBzdHJlYW07Ci0gIHN0cmVhbSA8PCAiKCIgPDwgZ2V0PDA+KHZhbHVlKSA8PCAiLCAiIDw8IGdl
dDwxPih2YWx1ZSkgPDwgIikiOwotICByZXR1cm4gc3RyZWFtLnN0cigpOwotfQotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLTo6c3RkOjpzdHJpbmcg
UHJpbnRWYWx1ZShjb25zdCB0dXBsZTxUMSwgVDIsIFQzPiYgdmFsdWUpIHsKLSAgOjpzdGQ6OnN0
cmluZ3N0cmVhbSBzdHJlYW07Ci0gIHN0cmVhbSA8PCAiKCIgPDwgZ2V0PDA+KHZhbHVlKSA8PCAi
LCAiIDw8IGdldDwxPih2YWx1ZSkKLSAgICAgICAgIDw8ICIsICI8PCBnZXQ8Mj4odmFsdWUpIDw8
ICIpIjsKLSAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAg
ICAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBU
OSwgdHlwZW5hbWUgVDEwPgotOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKAotICAgIGNvbnN0IHR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD4mIHZhbHVlKSB7Ci0g
IDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOwotICBzdHJlYW0gPDwgIigiIDw8IGdldDwwPih2
YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8MT4odmFsdWUpCi0gICAgICAgICA8PCAiLCAiPDwgZ2V0PDI+
KHZhbHVlKSA8PCAiLCAiIDw8IGdldDwzPih2YWx1ZSkKLSAgICAgICAgIDw8ICIsICI8PCBnZXQ8
ND4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDU+KHZhbHVlKQotICAgICAgICAgPDwgIiwgIjw8IGdl
dDw2Pih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8Nz4odmFsdWUpCi0gICAgICAgICA8PCAiLCAiPDwg
Z2V0PDg+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDw5Pih2YWx1ZSkgPDwgIikiOwotICByZXR1cm4g
c3RyZWFtLnN0cigpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCi0KLS8vIFZl
cmlmaWVzIHRoYXQgYSBzZXF1ZW5jZSBnZW5lcmF0ZWQgYnkgdGhlIGdlbmVyYXRvciBhbmQgYWNj
ZXNzZWQKLS8vIHZpYSB0aGUgaXRlcmF0b3Igb2JqZWN0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIG9u
ZSB1c2luZyBHb29nbGUgVGVzdAotLy8gYXNzZXJ0aW9ucy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
LCBzaXplX3QgTj4KLXZvaWQgVmVyaWZ5R2VuZXJhdG9yKGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ+
JiBnZW5lcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBUICgmZXhwZWN0ZWRfdmFs
dWVzKVtOXSkgewotICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUPjo6aXRlcmF0b3IgaXQgPSBn
ZW5lcmF0b3IuYmVnaW4oKTsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBOOyArK2kpIHsKLSAg
ICBBU1NFUlRfRkFMU0UoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKQotICAgICAgICA8PCAiQXQgZWxl
bWVudCAiIDw8IGkgPDwgIiB3aGVuIGFjY2Vzc2luZyB2aWEgYW4gaXRlcmF0b3IgIgotICAgICAg
ICA8PCAiY3JlYXRlZCB3aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9yLlxuIjsKLSAgICAvLyBXZSBj
YW5ub3QgdXNlIEVYUEVDVF9FUSgpIGhlcmUgYXMgdGhlIHZhbHVlcyBtYXkgYmUgdHVwbGVzLAot
ICAgIC8vIHdoaWNoIGRvbid0IHN1cHBvcnQgPDwuCi0gICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWRf
dmFsdWVzW2ldID09ICppdCkKLSAgICAgICAgPDwgIndoZXJlIGkgaXMgIiA8PCBpCi0gICAgICAg
IDw8ICIsIGV4cGVjdGVkX3ZhbHVlc1tpXSBpcyAiIDw8IFByaW50VmFsdWUoZXhwZWN0ZWRfdmFs
dWVzW2ldKQotICAgICAgICA8PCAiLCAqaXQgaXMgIiA8PCBQcmludFZhbHVlKCppdCkKLSAgICAg
ICAgPDwgIiwgYW5kICdpdCcgaXMgYW4gaXRlcmF0b3IgY3JlYXRlZCB3aXRoIHRoZSBjb3B5IGNv
bnN0cnVjdG9yLlxuIjsKLSAgICBpdCsrOwotICB9Ci0gIEVYUEVDVF9UUlVFKGl0ID09IGdlbmVy
YXRvci5lbmQoKSkKLSAgICAgICAgPDwgIkF0IHRoZSBwcmVzdW1lZCBlbmQgb2Ygc2VxdWVuY2Ug
d2hlbiBhY2Nlc3NpbmcgdmlhIGFuIGl0ZXJhdG9yICIKLSAgICAgICAgPDwgImNyZWF0ZWQgd2l0
aCB0aGUgY29weSBjb25zdHJ1Y3Rvci5cbiI7Ci0KLSAgLy8gVGVzdCB0aGUgaXRlcmF0b3IgYXNz
aWdubWVudC4gVGhlIGZvbGxvd2luZyBsaW5lcyB2ZXJpZnkgdGhhdAotICAvLyB0aGUgc2VxdWVu
Y2UgYWNjZXNzZWQgdmlhIGFuIGl0ZXJhdG9yIGluaXRpYWxpemVkIHZpYSB0aGUKLSAgLy8gYXNz
aWdubWVudCBvcGVyYXRvciAoYXMgb3Bwb3NlZCB0byBhIGNvcHkgY29uc3RydWN0b3IpIG1hdGNo
ZXMKLSAgLy8ganVzdCB0aGUgc2FtZS4KLSAgaXQgPSBnZW5lcmF0b3IuYmVnaW4oKTsKLSAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBOOyArK2kpIHsKLSAgICBBU1NFUlRfRkFMU0UoaXQgPT0gZ2Vu
ZXJhdG9yLmVuZCgpKQotICAgICAgICA8PCAiQXQgZWxlbWVudCAiIDw8IGkgPDwgIiB3aGVuIGFj
Y2Vzc2luZyB2aWEgYW4gaXRlcmF0b3IgIgotICAgICAgICA8PCAiY3JlYXRlZCB3aXRoIHRoZSBh
c3NpZ25tZW50IG9wZXJhdG9yLlxuIjsKLSAgICBFWFBFQ1RfVFJVRShleHBlY3RlZF92YWx1ZXNb
aV0gPT0gKml0KQotICAgICAgICA8PCAid2hlcmUgaSBpcyAiIDw8IGkKLSAgICAgICAgPDwgIiwg
ZXhwZWN0ZWRfdmFsdWVzW2ldIGlzICIgPDwgUHJpbnRWYWx1ZShleHBlY3RlZF92YWx1ZXNbaV0p
Ci0gICAgICAgIDw8ICIsICppdCBpcyAiIDw8IFByaW50VmFsdWUoKml0KQotICAgICAgICA8PCAi
LCBhbmQgJ2l0JyBpcyBhbiBpdGVyYXRvciBjcmVhdGVkIHdpdGggdGhlIGNvcHkgY29uc3RydWN0
b3IuXG4iOwotICAgIGl0Kys7Ci0gIH0KLSAgRVhQRUNUX1RSVUUoaXQgPT0gZ2VuZXJhdG9yLmVu
ZCgpKQotICAgICAgICA8PCAiQXQgdGhlIHByZXN1bWVkIGVuZCBvZiBzZXF1ZW5jZSB3aGVuIGFj
Y2Vzc2luZyB2aWEgYW4gaXRlcmF0b3IgIgotICAgICAgICA8PCAiY3JlYXRlZCB3aXRoIHRoZSBh
c3NpZ25tZW50IG9wZXJhdG9yLlxuIjsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lk
IFZlcmlmeUdlbmVyYXRvcklzRW1wdHkoY29uc3QgUGFyYW1HZW5lcmF0b3I8VD4mIGdlbmVyYXRv
cikgewotICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUPjo6aXRlcmF0b3IgaXQgPSBnZW5lcmF0
b3IuYmVnaW4oKTsKLSAgRVhQRUNUX1RSVUUoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKTsKLQotICBp
dCA9IGdlbmVyYXRvci5iZWdpbigpOwotICBFWFBFQ1RfVFJVRShpdCA9PSBnZW5lcmF0b3IuZW5k
KCkpOwotfQotCi0vLyBHZW5lcmF0b3IgdGVzdHMuIFRoZXkgdGVzdCB0aGF0IGVhY2ggb2YgdGhl
IHByb3ZpZGVkIGdlbmVyYXRvciBmdW5jdGlvbnMKLS8vIGdlbmVyYXRlcyBhbiBleHBlY3RlZCBz
ZXF1ZW5jZSBvZiB2YWx1ZXMuIFRoZSBnZW5lcmFsIHRlc3QgcGF0dGVybgotLy8gaW5zdGFudGlh
dGVzIGEgZ2VuZXJhdG9yIHVzaW5nIG9uZSBvZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9ucywKLS8v
IGNoZWNrcyB0aGUgc2VxdWVuY2UgcHJvZHVjZWQgYnkgdGhlIGdlbmVyYXRvciB1c2luZyBpdHMg
aXRlcmF0b3IgQVBJLAotLy8gYW5kIHRoZW4gcmVzZXRzIHRoZSBpdGVyYXRvciBiYWNrIHRvIHRo
ZSBiZWdpbm5pbmcgb2YgdGhlIHNlcXVlbmNlCi0vLyBhbmQgY2hlY2tzIHRoZSBzZXF1ZW5jZSBh
Z2Fpbi4KLQotLy8gVGVzdHMgdGhhdCBpdGVyYXRvcnMgcHJvZHVjZWQgYnkgZ2VuZXJhdG9yIGZ1
bmN0aW9ucyBjb25mb3JtIHRvIHRoZQotLy8gRm9yd2FyZEl0ZXJhdG9yIGNvbmNlcHQuCi1URVNU
KEl0ZXJhdG9yVGVzdCwgUGFyYW1JdGVyYXRvckNvbmZvcm1zVG9Gb3J3YXJkSXRlcmF0b3JDb25j
ZXB0KSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgMTApOwot
ICBQYXJhbUdlbmVyYXRvcjxpbnQ+OjppdGVyYXRvciBpdCA9IGdlbi5iZWdpbigpOwotCi0gIC8v
IFZlcmlmaWVzIHRoYXQgaXRlcmF0b3IgaW5pdGlhbGl6YXRpb24gd29ya3MgYXMgZXhwZWN0ZWQu
Ci0gIFBhcmFtR2VuZXJhdG9yPGludD46Oml0ZXJhdG9yIGl0MiA9IGl0OwotICBFWFBFQ1RfVFJV
RSgqaXQgPT0gKml0MikgPDwgIkluaXRpYWxpemVkIGl0ZXJhdG9ycyBtdXN0IHBvaW50IHRvIHRo
ZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiZWxlbWVudCBzYW1lIGFzIGl0cyBz
b3VyY2UgcG9pbnRzIHRvIjsKLQotICAvLyBWZXJpZmllcyB0aGF0IGl0ZXJhdG9yIGFzc2lnbm1l
bnQgd29ya3MgYXMgZXhwZWN0ZWQuCi0gIGl0Kys7Ci0gIEVYUEVDVF9GQUxTRSgqaXQgPT0gKml0
Mik7Ci0gIGl0MiA9IGl0OwotICBFWFBFQ1RfVFJVRSgqaXQgPT0gKml0MikgPDwgIkFzc2lnbmVk
IGl0ZXJhdG9ycyBtdXN0IHBvaW50IHRvIHRoZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCAiZWxlbWVudCBzYW1lIGFzIGl0cyBzb3VyY2UgcG9pbnRzIHRvIjsKLQotICAvLyBWZXJp
ZmllcyB0aGF0IHByZWZpeCBvcGVyYXRvcisrKCkgcmV0dXJucyAqdGhpcy4KLSAgRVhQRUNUX0VR
KCZpdCwgJigrK2l0KSkgPDwgIlJlc3VsdCBvZiB0aGUgcHJlZml4IG9wZXJhdG9yKysgbXVzdCBi
ZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJyZWZlciB0byB0aGUgb3JpZ2luYWwg
b2JqZWN0IjsKLQotICAvLyBWZXJpZmllcyB0aGF0IHRoZSByZXN1bHQgb2YgdGhlIHBvc3RmaXgg
b3BlcmF0b3IrKyBwb2ludHMgdG8gdGhlIHZhbHVlCi0gIC8vIHBvaW50ZWQgdG8gYnkgdGhlIG9y
aWdpbmFsIGl0ZXJhdG9yLgotICBpbnQgb3JpZ2luYWxfdmFsdWUgPSAqaXQ7ICAvLyBIYXZlIHRv
IGNvbXB1dGUgaXQgb3V0c2lkZSBvZiBtYWNybyBjYWxsIHRvIGJlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHVuYWZmZWN0ZWQgYnkgdGhlIHBhcmFtZXRlciBldmFsdWF0aW9uIG9y
ZGVyLgotICBFWFBFQ1RfRVEob3JpZ2luYWxfdmFsdWUsICooaXQrKykpOwotCi0gIC8vIFZlcmlm
aWVzIHRoYXQgcHJlZml4IGFuZCBwb3N0Zml4IG9wZXJhdG9yKysoKSBhZHZhbmNlIGFuIGl0ZXJh
dG9yCi0gIC8vIGFsbCB0aGUgc2FtZS4KLSAgaXQyID0gaXQ7Ci0gIGl0Kys7Ci0gICsraXQyOwot
ICBFWFBFQ1RfVFJVRSgqaXQgPT0gKml0Mik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUmFuZ2UoKSBn
ZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgotVEVTVChSYW5nZVRlc3QsIEludFJhbmdl
V2l0aERlZmF1bHRTdGVwKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gUmFu
Z2UoMCwgMyk7Ci0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHswLCAxLCAyfTsKLSAg
VmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gRWRnZSBjYXNl
LiBUZXN0cyB0aGF0IFJhbmdlKCkgZ2VuZXJhdGVzIHRoZSBzaW5nbGUgZWxlbWVudCBzZXF1ZW5j
ZQotLy8gYXMgZXhwZWN0ZWQgd2hlbiBwcm92aWRlZCB3aXRoIHJhbmdlIGxpbWl0cyB0aGF0IGFy
ZSBlcXVhbC4KLVRFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZVNpbmdsZVZhbHVlKSB7Ci0gIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgMSk7Ci0gIGNvbnN0IGludCBleHBl
Y3RlZF92YWx1ZXNbXSA9IHswfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFs
dWVzKTsKLX0KLQotLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFJhbmdlKCkgd2l0aCBnZW5lcmF0
ZXMgZW1wdHkgc2VxdWVuY2Ugd2hlbgotLy8gc3VwcGxpZWQgd2l0aCBhbiBlbXB0eSByYW5nZS4K
LVRFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZUVtcHR5KSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9y
PGludD4gZ2VuID0gUmFuZ2UoMCwgMCk7Ci0gIFZlcmlmeUdlbmVyYXRvcklzRW1wdHkoZ2VuKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBSYW5nZSgpIHdpdGggY3VzdG9tIHN0ZXAgKGdyZWF0ZXIgdGhl
biBvbmUpIGdlbmVyYXRlcwotLy8gdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgotVEVTVChSYW5nZVRl
c3QsIEludFJhbmdlV2l0aEN1c3RvbVN0ZXApIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50
PiBnZW4gPSBSYW5nZSgwLCA5LCAzKTsKLSAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0g
ezAsIDMsIDZ9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IFJhbmdlKCkgd2l0aCBjdXN0b20gc3RlcCAoZ3JlYXRlciB0aGVuIG9u
ZSkgZ2VuZXJhdGVzCi0vLyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2Ugd2hlbiB0aGUgbGFzdCBlbGVt
ZW50IGRvZXMgbm90IGZhbGwgb24gdGhlCi0vLyB1cHBlciByYW5nZSBsaW1pdC4gU2VxdWVuY2Vz
IGdlbmVyYXRlZCBieSBSYW5nZSgpIG11c3Qgbm90IGhhdmUKLS8vIGVsZW1lbnRzIGJleW9uZCB0
aGUgcmFuZ2UgbGltaXRzLgotVEVTVChSYW5nZVRlc3QsIEludFJhbmdlV2l0aEN1c3RvbVN0ZXBP
dmVyVXBwZXJCb3VuZCkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdl
KDAsIDQsIDMpOwotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MCwgM307Ci0gIFZl
cmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIFZlcmlmaWVzIHRo
YXQgUmFuZ2Ugd29ya3Mgd2l0aCB1c2VyLWRlZmluZWQgdHlwZXMgdGhhdCBkZWZpbmUKLS8vIGNv
cHkgY29uc3RydWN0b3IsIG9wZXJhdG9yPSgpLCBvcGVyYXRvcisoKSwgYW5kIG9wZXJhdG9yPCgp
LgotY2xhc3MgRG9nQWRkZXIgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgRG9nQWRkZXIoY29uc3Qg
Y2hhciogYV92YWx1ZSkgOiB2YWx1ZV8oYV92YWx1ZSkge30KLSAgRG9nQWRkZXIoY29uc3QgRG9n
QWRkZXImIG90aGVyKSA6IHZhbHVlXyhvdGhlci52YWx1ZV8uY19zdHIoKSkge30KLQotICBEb2dB
ZGRlciBvcGVyYXRvcj0oY29uc3QgRG9nQWRkZXImIG90aGVyKSB7Ci0gICAgaWYgKHRoaXMgIT0g
Jm90aGVyKQotICAgICAgdmFsdWVfID0gb3RoZXIudmFsdWVfOwotICAgIHJldHVybiAqdGhpczsK
LSAgfQotICBEb2dBZGRlciBvcGVyYXRvcisoY29uc3QgRG9nQWRkZXImIG90aGVyKSBjb25zdCB7
Ci0gICAgTWVzc2FnZSBtc2c7Ci0gICAgbXNnIDw8IHZhbHVlXy5jX3N0cigpIDw8IG90aGVyLnZh
bHVlXy5jX3N0cigpOwotICAgIHJldHVybiBEb2dBZGRlcihtc2cuR2V0U3RyaW5nKCkuY19zdHIo
KSk7Ci0gIH0KLSAgYm9vbCBvcGVyYXRvcjwoY29uc3QgRG9nQWRkZXImIG90aGVyKSBjb25zdCB7
Ci0gICAgcmV0dXJuIHZhbHVlXyA8IG90aGVyLnZhbHVlXzsKLSAgfQotICBjb25zdCA6OnRlc3Rp
bmc6OmludGVybmFsOjpTdHJpbmcmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9Ci0K
LSBwcml2YXRlOgotICA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmcgdmFsdWVfOwotfTsKLQot
VEVTVChSYW5nZVRlc3QsIFdvcmtzV2l0aEFDdXN0b21UeXBlKSB7Ci0gIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPERvZ0FkZGVyPiBnZW4gPQotICAgICAgUmFuZ2UoRG9nQWRkZXIoImNhdCIpLCBEb2dB
ZGRlcigiY2F0ZG9nZG9nIiksIERvZ0FkZGVyKCJkb2ciKSk7Ci0gIFBhcmFtR2VuZXJhdG9yPERv
Z0FkZGVyPjo6aXRlcmF0b3IgaXQgPSBnZW4uYmVnaW4oKTsKLQotICBBU1NFUlRfRkFMU0UoaXQg
PT0gZ2VuLmVuZCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJjYXQiLCBpdC0+dmFsdWUoKS5jX3N0cigp
KTsKLQotICBBU1NFUlRfRkFMU0UoKytpdCA9PSBnZW4uZW5kKCkpOwotICBFWFBFQ1RfU1RSRVEo
ImNhdGRvZyIsIGl0LT52YWx1ZSgpLmNfc3RyKCkpOwotCi0gIEVYUEVDVF9UUlVFKCsraXQgPT0g
Z2VuLmVuZCgpKTsKLX0KLQotY2xhc3MgSW50V3JhcHBlciB7Ci0gcHVibGljOgotICBleHBsaWNp
dCBJbnRXcmFwcGVyKGludCBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7fQotICBJbnRXcmFw
cGVyKGNvbnN0IEludFdyYXBwZXImIG90aGVyKSA6IHZhbHVlXyhvdGhlci52YWx1ZV8pIHt9Ci0K
LSAgSW50V3JhcHBlciBvcGVyYXRvcj0oY29uc3QgSW50V3JhcHBlciYgb3RoZXIpIHsKLSAgICB2
YWx1ZV8gPSBvdGhlci52YWx1ZV87Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0gIC8vIG9wZXJh
dG9yKygpIGFkZHMgYSBkaWZmZXJlbnQgdHlwZS4KLSAgSW50V3JhcHBlciBvcGVyYXRvcisoaW50
IG90aGVyKSBjb25zdCB7IHJldHVybiBJbnRXcmFwcGVyKHZhbHVlXyArIG90aGVyKTsgfQotICBi
b29sIG9wZXJhdG9yPChjb25zdCBJbnRXcmFwcGVyJiBvdGhlcikgY29uc3QgewotICAgIHJldHVy
biB2YWx1ZV8gPCBvdGhlci52YWx1ZV87Ci0gIH0KLSAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1
cm4gdmFsdWVfOyB9Ci0KLSBwcml2YXRlOgotICBpbnQgdmFsdWVfOwotfTsKLQotVEVTVChSYW5n
ZVRlc3QsIFdvcmtzV2l0aEFDdXN0b21UeXBlV2l0aERpZmZlcmVudEluY3JlbWVudFR5cGUpIHsK
LSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8SW50V3JhcHBlcj4gZ2VuID0gUmFuZ2UoSW50V3JhcHBl
cigwKSwgSW50V3JhcHBlcigyKSk7Ci0gIFBhcmFtR2VuZXJhdG9yPEludFdyYXBwZXI+OjppdGVy
YXRvciBpdCA9IGdlbi5iZWdpbigpOwotCi0gIEFTU0VSVF9GQUxTRShpdCA9PSBnZW4uZW5kKCkp
OwotICBFWFBFQ1RfRVEoMCwgaXQtPnZhbHVlKCkpOwotCi0gIEFTU0VSVF9GQUxTRSgrK2l0ID09
IGdlbi5lbmQoKSk7Ci0gIEVYUEVDVF9FUSgxLCBpdC0+dmFsdWUoKSk7Ci0KLSAgRVhQRUNUX1RS
VUUoKytpdCA9PSBnZW4uZW5kKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFZhbHVlc0luKCkgd2l0
aCBhbiBhcnJheSBwYXJhbWV0ZXIgZ2VuZXJhdGVzCi0vLyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2Uu
Ci1URVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5BcnJheSkgewotICBpbnQgYXJyYXlbXSA9IHsz
LCA1LCA4fTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbihhcnJh
eSk7Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGFycmF5KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBW
YWx1ZXNJbigpIHdpdGggYSBjb25zdCBhcnJheSBwYXJhbWV0ZXIgZ2VuZXJhdGVzCi0vLyB0aGUg
ZXhwZWN0ZWQgc2VxdWVuY2UuCi1URVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5Db25zdEFycmF5
KSB7Ci0gIGNvbnN0IGludCBhcnJheVtdID0gezMsIDUsIDh9OwotICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKGFycmF5KTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwg
YXJyYXkpOwotfQotCi0vLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSB3aXRoIGFu
IGFycmF5IHBhcmFtZXRlciBjb250YWluaW5nIGEKLS8vIHNpbmdsZSBlbGVtZW50IGdlbmVyYXRl
cyB0aGUgc2luZ2xlIGVsZW1lbnQgc2VxdWVuY2UuCi1URVNUKFZhbHVlc0luVGVzdCwgVmFsdWVz
SW5TaW5nbGVFbGVtZW50QXJyYXkpIHsKLSAgaW50IGFycmF5W10gPSB7NDJ9OwotICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKGFycmF5KTsKLSAgVmVyaWZ5R2VuZXJh
dG9yKGdlbiwgYXJyYXkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFZhbHVlc0luKCkgZ2VuZXJhdGVz
IHRoZSBleHBlY3RlZCBzZXF1ZW5jZSBmb3IgYW4gU1RMCi0vLyBjb250YWluZXIgKHZlY3Rvciku
Ci1URVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5WZWN0b3IpIHsKLSAgdHlwZWRlZiA6OnN0ZDo6
dmVjdG9yPGludD4gQ29udGFpbmVyVHlwZTsKLSAgQ29udGFpbmVyVHlwZSB2YWx1ZXM7Ci0gIHZh
bHVlcy5wdXNoX2JhY2soMyk7Ci0gIHZhbHVlcy5wdXNoX2JhY2soNSk7Ci0gIHZhbHVlcy5wdXNo
X2JhY2soOCk7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4odmFs
dWVzKTsKLQotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MywgNSwgOH07Ci0gIFZl
cmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
VmFsdWVzSW4oKSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgotVEVTVChWYWx1ZXNJ
blRlc3QsIFZhbHVlc0luSXRlcmF0b3JSYW5nZSkgewotICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8
aW50PiBDb250YWluZXJUeXBlOwotICBDb250YWluZXJUeXBlIHZhbHVlczsKLSAgdmFsdWVzLnB1
c2hfYmFjaygzKTsKLSAgdmFsdWVzLnB1c2hfYmFjayg1KTsKLSAgdmFsdWVzLnB1c2hfYmFjayg4
KTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbih2YWx1ZXMuYmVn
aW4oKSwgdmFsdWVzLmVuZCgpKTsKLQotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7
MywgNSwgOH07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0K
LS8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIHByb3ZpZGVkIHdpdGggYW4gaXRl
cmF0b3IgcmFuZ2Ugc3BlY2lmeWluZyBhCi0vLyBzaW5nbGUgdmFsdWUgZ2VuZXJhdGVzIGEgc2lu
Z2xlLWVsZW1lbnQgc2VxdWVuY2UuCi1URVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5TaW5nbGVF
bGVtZW50SXRlcmF0b3JSYW5nZSkgewotICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8aW50PiBDb250
YWluZXJUeXBlOwotICBDb250YWluZXJUeXBlIHZhbHVlczsKLSAgdmFsdWVzLnB1c2hfYmFjayg0
Mik7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4odmFsdWVzLmJl
Z2luKCksIHZhbHVlcy5lbmQoKSk7Ci0KLSAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0g
ezQyfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8g
RWRnZSBjYXNlLiBUZXN0cyB0aGF0IFZhbHVlc0luKCkgcHJvdmlkZWQgd2l0aCBhbiBlbXB0eSBp
dGVyYXRvciByYW5nZQotLy8gZ2VuZXJhdGVzIGFuIGVtcHR5IHNlcXVlbmNlLgotVEVTVChWYWx1
ZXNJblRlc3QsIFZhbHVlc0luRW1wdHlJdGVyYXRvclJhbmdlKSB7Ci0gIHR5cGVkZWYgOjpzdGQ6
OnZlY3RvcjxpbnQ+IENvbnRhaW5lclR5cGU7Ci0gIENvbnRhaW5lclR5cGUgdmFsdWVzOwotICBj
b25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVlcy5iZWdpbigpLCB2
YWx1ZXMuZW5kKCkpOwotCi0gIFZlcmlmeUdlbmVyYXRvcklzRW1wdHkoZ2VuKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCB0aGUgVmFsdWVzKCkgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4K
LVRFU1QoVmFsdWVzVGVzdCwgVmFsdWVzV29ya3MpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8
aW50PiBnZW4gPSBWYWx1ZXMoMywgNSwgOCk7Ci0KLSAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVl
c1tdID0gezMsIDUsIDh9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMp
OwotfQotCi0vLyBUZXN0cyB0aGF0IFZhbHVlcygpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2Vx
dWVuY2VzIGZyb20gZWxlbWVudHMgb2YKLS8vIGRpZmZlcmVudCB0eXBlcyBjb252ZXJ0aWJsZSB0
byBQYXJhbUdlbmVyYXRvcidzIHBhcmFtZXRlciB0eXBlLgotVEVTVChWYWx1ZXNUZXN0LCBWYWx1
ZXNXb3Jrc0ZvclZhbHVlc09mQ29tcGF0aWJsZVR5cGVzKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPGRvdWJsZT4gZ2VuID0gVmFsdWVzKDMsIDUuMGYsIDguMCk7Ci0KLSAgY29uc3QgZG91Ymxl
IGV4cGVjdGVkX3ZhbHVlc1tdID0gezMuMCwgNS4wLCA4LjB9OwotICBWZXJpZnlHZW5lcmF0b3Io
Z2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi1URVNUKFZhbHVlc1Rlc3QsIFZhbHVlc1dvcmtz
Rm9yTWF4TGVuZ3RoTGlzdCkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZh
bHVlcygKLSAgICAgIDEwLCAyMCwgMzAsIDQwLCA1MCwgNjAsIDcwLCA4MCwgOTAsIDEwMCwKLSAg
ICAgIDExMCwgMTIwLCAxMzAsIDE0MCwgMTUwLCAxNjAsIDE3MCwgMTgwLCAxOTAsIDIwMCwKLSAg
ICAgIDIxMCwgMjIwLCAyMzAsIDI0MCwgMjUwLCAyNjAsIDI3MCwgMjgwLCAyOTAsIDMwMCwKLSAg
ICAgIDMxMCwgMzIwLCAzMzAsIDM0MCwgMzUwLCAzNjAsIDM3MCwgMzgwLCAzOTAsIDQwMCwKLSAg
ICAgIDQxMCwgNDIwLCA0MzAsIDQ0MCwgNDUwLCA0NjAsIDQ3MCwgNDgwLCA0OTAsIDUwMCk7Ci0K
LSAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gewotICAgICAgMTAsIDIwLCAzMCwgNDAs
IDUwLCA2MCwgNzAsIDgwLCA5MCwgMTAwLAotICAgICAgMTEwLCAxMjAsIDEzMCwgMTQwLCAxNTAs
IDE2MCwgMTcwLCAxODAsIDE5MCwgMjAwLAotICAgICAgMjEwLCAyMjAsIDIzMCwgMjQwLCAyNTAs
IDI2MCwgMjcwLCAyODAsIDI5MCwgMzAwLAotICAgICAgMzEwLCAzMjAsIDMzMCwgMzQwLCAzNTAs
IDM2MCwgMzcwLCAzODAsIDM5MCwgNDAwLAotICAgICAgNDEwLCA0MjAsIDQzMCwgNDQwLCA0NTAs
IDQ2MCwgNDcwLCA0ODAsIDQ5MCwgNTAwfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0
ZWRfdmFsdWVzKTsKLX0KLQotLy8gRWRnZSBjYXNlIHRlc3QuIFRlc3RzIHRoYXQgc2luZ2xlLXBh
cmFtZXRlciBWYWx1ZXMoKSBnZW5lcmF0ZXMgdGhlIHNlcXVlbmNlCi0vLyB3aXRoIHRoZSBzaW5n
bGUgdmFsdWUuCi1URVNUKFZhbHVlc1Rlc3QsIFZhbHVlc1dpdGhTaW5nbGVQYXJhbWV0ZXIpIHsK
LSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXMoNDIpOwotCi0gIGNvbnN0
IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHs0Mn07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4
cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQm9vbCgpIGdlbmVyYXRlcyBzZXF1
ZW5jZSAoZmFsc2UsIHRydWUpLgotVEVTVChCb29sVGVzdCwgQm9vbFdvcmtzKSB7Ci0gIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPGJvb2w+IGdlbiA9IEJvb2woKTsKLQotICBjb25zdCBib29sIGV4cGVj
dGVkX3ZhbHVlc1tdID0ge2ZhbHNlLCB0cnVlfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhw
ZWN0ZWRfdmFsdWVzKTsKLX0KLQotI2lmIEdURVNUX0hBU19DT01CSU5FCi0KLS8vIFRlc3RzIHRo
YXQgQ29tYmluZSgpIHdpdGggdHdvIHBhcmFtZXRlcnMgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBz
ZXF1ZW5jZS4KLVRFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoVHdvUGFyYW1ldGVycykgewot
ICBjb25zdCBjaGFyKiBmb28gPSAiZm9vIjsKLSAgY29uc3QgY2hhciogYmFyID0gImJhciI7Ci0g
IGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGNvbnN0IGNoYXIqLCBpbnQ+ID4gZ2VuID0KLSAg
ICAgIENvbWJpbmUoVmFsdWVzKGZvbywgYmFyKSwgVmFsdWVzKDMsIDQpKTsKLQotICB0dXBsZTxj
b25zdCBjaGFyKiwgaW50PiBleHBlY3RlZF92YWx1ZXNbXSA9IHsKLSAgICBtYWtlX3R1cGxlKGZv
bywgMyksIG1ha2VfdHVwbGUoZm9vLCA0KSwKLSAgICBtYWtlX3R1cGxlKGJhciwgMyksIG1ha2Vf
dHVwbGUoYmFyLCA0KX07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQ29tYmluZSgpIHdpdGggdGhyZWUgcGFyYW1ldGVycyBnZW5l
cmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgotVEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdp
dGhUaHJlZVBhcmFtZXRlcnMpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBp
bnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcygwLCAxKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygzLCA0KSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcyg1LCA2KSk7Ci0gIHR1cGxlPGludCwgaW50LCBpbnQ+IGV4cGVjdGVkX3ZhbHVl
c1tdID0gewotICAgIG1ha2VfdHVwbGUoMCwgMywgNSksIG1ha2VfdHVwbGUoMCwgMywgNiksCi0g
ICAgbWFrZV90dXBsZSgwLCA0LCA1KSwgbWFrZV90dXBsZSgwLCA0LCA2KSwKLSAgICBtYWtlX3R1
cGxlKDEsIDMsIDUpLCBtYWtlX3R1cGxlKDEsIDMsIDYpLAotICAgIG1ha2VfdHVwbGUoMSwgNCwg
NSksIG1ha2VfdHVwbGUoMSwgNCwgNil9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3Rl
ZF92YWx1ZXMpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBDb21iaW5lKCkgd2l0aCB0aGUgZmly
c3QgcGFyYW1ldGVyIGdlbmVyYXRpbmcgYSBzaW5nbGUgdmFsdWUKLS8vIHNlcXVlbmNlIGdlbmVy
YXRlcyBhIHNlcXVlbmNlIHdpdGggdGhlIG51bWJlciBvZiBlbGVtZW50cyBlcXVhbCB0byB0aGUK
LS8vIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgc2VxdWVuY2UgZ2VuZXJhdGVkIGJ5IHRoZSBz
ZWNvbmQgcGFyYW1ldGVyLgotVEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdpdGhGaXJzdFBhcmFt
ZXRlclNpbmdsZVZhbHVlKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50
PiA+IGdlbiA9IENvbWJpbmUoVmFsdWVzKDQyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMCwgMSkpOwotCi0gIHR1cGxlPGlu
dCwgaW50PiBleHBlY3RlZF92YWx1ZXNbXSA9IHttYWtlX3R1cGxlKDQyLCAwKSwgbWFrZV90dXBs
ZSg0MiwgMSl9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IHRoZSBDb21iaW5lKCkgd2l0aCB0aGUgc2Vjb25kIHBhcmFtZXRlciBn
ZW5lcmF0aW5nIGEgc2luZ2xlIHZhbHVlCi0vLyBzZXF1ZW5jZSBnZW5lcmF0ZXMgYSBzZXF1ZW5j
ZSB3aXRoIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZXF1YWwgdG8gdGhlCi0vLyBudW1iZXIgb2Yg
ZWxlbWVudHMgaW4gdGhlIHNlcXVlbmNlIGdlbmVyYXRlZCBieSB0aGUgZmlyc3QgcGFyYW1ldGVy
LgotVEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdpdGhTZWNvbmRQYXJhbWV0ZXJTaW5nbGVWYWx1
ZSkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludD4gPiBnZW4gPSBDb21i
aW5lKFZhbHVlcygwLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWx1ZXMoNDIpKTsKLQotICB0dXBsZTxpbnQsIGludD4gZXhwZWN0
ZWRfdmFsdWVzW10gPSB7bWFrZV90dXBsZSgwLCA0MiksIG1ha2VfdHVwbGUoMSwgNDIpfTsKLSAg
VmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCB3aGVuIHRoZSBmaXJzdCBwYXJhbWV0ZXIgcHJvZHVjZXMgYW4gZW1wdHkgc2VxdWVuY2UsCi0v
LyBDb21iaW5lKCkgcHJvZHVjZXMgYW4gZW1wdHkgc2VxdWVuY2UsIHRvby4KLVRFU1QoQ29tYmlu
ZVRlc3QsIENvbWJpbmVXaXRoRmlyc3RQYXJhbWV0ZXJFbXB0eVJhbmdlKSB7Ci0gIGNvbnN0IFBh
cmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUoUmFuZ2UoMCwgMCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsdWVzKDAsIDEpKTsKLSAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShnZW4pOwotfQotCi0vLyBU
ZXN0cyB0aGF0IHdoZW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIgcHJvZHVjZXMgYW4gZW1wdHkgc2Vx
dWVuY2UsCi0vLyBDb21iaW5lKCkgcHJvZHVjZXMgYW4gZW1wdHkgc2VxdWVuY2UsIHRvby4KLVRF
U1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoU2Vjb25kUGFyYW1ldGVyRW1wdHlSYW5nZSkgewot
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFZh
bHVlcygwLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSYW5nZSgxLCAxKSk7Ci0gIFZlcmlmeUdlbmVyYXRvcklzRW1wdHkoZ2VuKTsK
LX0KLQotLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IGNvbWJpbmUgd29ya3Mgd2l0aCB0aGUgbWF4
aW11bSBudW1iZXIKLS8vIG9mIHBhcmFtZXRlcnMgc3VwcG9ydGVkIGJ5IEdvb2dsZSBUZXN0IChj
dXJyZW50bHkgMTApLgotVEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdpdGhNYXhOdW1iZXJPZlBh
cmFtZXRlcnMpIHsKLSAgY29uc3QgY2hhciogZm9vID0gImZvbyI7Ci0gIGNvbnN0IGNoYXIqIGJh
ciA9ICJiYXIiOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxjb25zdCBjaGFyKiwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcyhmb28sIGJhciksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDEp
LCBWYWx1ZXMoMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsdWVzKDMpLCBWYWx1ZXMoNCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDUpLCBWYWx1ZXMoNiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
dWVzKDcpLCBWYWx1ZXMoOCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsdWVzKDkpKTsKLQotICB0dXBsZTxjb25zdCBjaGFyKiwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludD4KLSAgICAgIGV4cGVjdGVk
X3ZhbHVlc1tdID0ge21ha2VfdHVwbGUoZm9vLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5KSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VfdHVwbGUoYmFyLCAxLCAyLCAzLCA0LCA1
LCA2LCA3LCA4LCA5KX07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7
Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKLQotLy8gVGVzdHMgdGhhdCBhbiBn
ZW5lcmF0b3IgcHJvZHVjZXMgY29ycmVjdCBzZXF1ZW5jZSBhZnRlciBiZWluZwotLy8gYXNzaWdu
ZWQgZnJvbSBhbm90aGVyIGdlbmVyYXRvci4KLVRFU1QoUGFyYW1HZW5lcmF0b3JUZXN0LCBBc3Np
Z25tZW50V29ya3MpIHsKLSAgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXMoMSwgMik7
Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuMiA9IFZhbHVlcygzLCA0KTsKLSAgZ2Vu
ID0gZ2VuMjsKLQotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MywgNH07Ci0gIFZl
cmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIFRoaXMgdGVzdCB2
ZXJpZmllcyB0aGF0IHRoZSB0ZXN0cyBhcmUgZXhwYW5kZWQgYW5kIHJ1biBhcyBzcGVjaWZpZWQ6
Ci0vLyBvbmUgdGVzdCBwZXIgZWxlbWVudCBmcm9tIHRoZSBzZXF1ZW5jZSBwcm9kdWNlZCBieSB0
aGUgZ2VuZXJhdG9yCi0vLyBzcGVjaWZpZWQgaW4gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AuIEl0
IGFsc28gdmVyaWZpZXMgdGhhdCB0aGUgdGVzdCdzCi0vLyBmaXh0dXJlIGNvbnN0cnVjdG9yLCBT
ZXRVcCgpLCBhbmQgVGVhckRvd24oKSBoYXZlIHJ1biBhbmQgaGF2ZSBiZWVuCi0vLyBzdXBwbGll
ZCB3aXRoIHRoZSBjb3JyZWN0IHBhcmFtZXRlcnMuCi0KLS8vIFRoZSB1c2Ugb2YgZW52aXJvbm1l
bnQgb2JqZWN0IGFsbG93cyBkZXRlY3Rpb24gb2YgdGhlIGNhc2Ugd2hlcmUgbm8gdGVzdAotLy8g
Y2FzZSBmdW5jdGlvbmFsaXR5IGlzIHJ1biBhdCBhbGwuIEluIHRoaXMgY2FzZSBUZXN0Q2FzZVRl
YXJEb3duIHdpbGwgbm90Ci0vLyBiZSBhYmxlIHRvIGRldGVjdCBtaXNzaW5nIHRlc3RzLCBuYXR1
cmFsbHkuCi10ZW1wbGF0ZSA8aW50IGtFeHBlY3RlZENhbGxzPgotY2xhc3MgVGVzdEdlbmVyYXRp
b25FbnZpcm9ubWVudCA6IHB1YmxpYyA6OnRlc3Rpbmc6OkVudmlyb25tZW50IHsKLSBwdWJsaWM6
Ci0gIHN0YXRpYyBUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50KiBJbnN0YW5jZSgpIHsKLSAgICBz
dGF0aWMgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudCogaW5zdGFuY2UgPSBuZXcgVGVzdEdlbmVy
YXRpb25FbnZpcm9ubWVudDsKLSAgICByZXR1cm4gaW5zdGFuY2U7Ci0gIH0KLQotICB2b2lkIEZp
eHR1cmVDb25zdHJ1Y3RvckV4ZWN1dGVkKCkgeyBmaXh0dXJlX2NvbnN0cnVjdG9yX2NvdW50Xysr
OyB9Ci0gIHZvaWQgU2V0VXBFeGVjdXRlZCgpIHsgc2V0X3VwX2NvdW50XysrOyB9Ci0gIHZvaWQg
VGVhckRvd25FeGVjdXRlZCgpIHsgdGVhcl9kb3duX2NvdW50XysrOyB9Ci0gIHZvaWQgVGVzdEJv
ZHlFeGVjdXRlZCgpIHsgdGVzdF9ib2R5X2NvdW50XysrOyB9Ci0KLSAgdmlydHVhbCB2b2lkIFRl
YXJEb3duKCkgewotICAgIC8vIElmIGFsbCBNdWx0aXBsZVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0
cyBoYXZlIGJlZW4gZGUtc2VsZWN0ZWQKLSAgICAvLyBieSB0aGUgZmlsdGVyIGZsYWcsIHRoZSBm
b2xsb3dpbmcgY2hlY2tzIG1ha2Ugbm8gc2Vuc2UuCi0gICAgYm9vbCBwZXJmb3JtX2NoZWNrID0g
ZmFsc2U7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGtFeHBlY3RlZENhbGxzOyArK2kpIHsK
LSAgICAgIE1lc3NhZ2UgbXNnOwotICAgICAgbXNnIDw8ICJUZXN0c0V4cGFuZGVkQW5kUnVuLyIg
PDwgaTsKLSAgICAgIGlmIChVbml0VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KAotICAg
ICAgICAgICAgICJUZXN0RXhwYW5zaW9uTW9kdWxlL011bHRpcGxlVGVzdEdlbmVyYXRpb25UZXN0
IiwKLSAgICAgICAgICAgICAgbXNnLkdldFN0cmluZygpLmNfc3RyKCkpKSB7Ci0gICAgICAgIHBl
cmZvcm1fY2hlY2sgPSB0cnVlOwotICAgICAgfQotICAgIH0KLSAgICBpZiAocGVyZm9ybV9jaGVj
aykgewotICAgICAgRVhQRUNUX0VRKGtFeHBlY3RlZENhbGxzLCBmaXh0dXJlX2NvbnN0cnVjdG9y
X2NvdW50XykKLSAgICAgICAgICA8PCAiRml4dHVyZSBjb25zdHJ1Y3RvciBvZiBQYXJhbVRlc3RH
ZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgotICAgICAgICAgIDw8ICJoYXMgbm90IGJlZW4gcnVu
IGFzIGV4cGVjdGVkLiI7Ci0gICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2FsbHMsIHNldF91cF9j
b3VudF8pCi0gICAgICAgICAgPDwgIkZpeHR1cmUgU2V0VXAgbWV0aG9kIG9mIFBhcmFtVGVzdEdl
bmVyYXRpb25UZXN0IHRlc3QgY2FzZSAiCi0gICAgICAgICAgPDwgImhhcyBub3QgYmVlbiBydW4g
YXMgZXhwZWN0ZWQuIjsKLSAgICAgIEVYUEVDVF9FUShrRXhwZWN0ZWRDYWxscywgdGVhcl9kb3du
X2NvdW50XykKLSAgICAgICAgICA8PCAiRml4dHVyZSBUZWFyRG93biBtZXRob2Qgb2YgUGFyYW1U
ZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlICIKLSAgICAgICAgICA8PCAiaGFzIG5vdCBiZWVu
IHJ1biBhcyBleHBlY3RlZC4iOwotICAgICAgRVhQRUNUX0VRKGtFeHBlY3RlZENhbGxzLCB0ZXN0
X2JvZHlfY291bnRfKQotICAgICAgICAgIDw8ICJUZXN0IGluIFBhcmFtVGVzdEdlbmVyYXRpb25U
ZXN0IHRlc3QgY2FzZSAiCi0gICAgICAgICAgPDwgImhhcyBub3QgYmVlbiBydW4gYXMgZXhwZWN0
ZWQuIjsKLSAgICB9Ci0gIH0KLSBwcml2YXRlOgotICBUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50
KCkgOiBmaXh0dXJlX2NvbnN0cnVjdG9yX2NvdW50XygwKSwgc2V0X3VwX2NvdW50XygwKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVhcl9kb3duX2NvdW50XygwKSwgdGVzdF9i
b2R5X2NvdW50XygwKSB7fQotCi0gIGludCBmaXh0dXJlX2NvbnN0cnVjdG9yX2NvdW50XzsKLSAg
aW50IHNldF91cF9jb3VudF87Ci0gIGludCB0ZWFyX2Rvd25fY291bnRfOwotICBpbnQgdGVzdF9i
b2R5X2NvdW50XzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRlc3RHZW5l
cmF0aW9uRW52aXJvbm1lbnQpOwotfTsKLQotY29uc3QgaW50IHRlc3RfZ2VuZXJhdGlvbl9wYXJh
bXNbXSA9IHszNiwgNDIsIDcyfTsKLQotY2xhc3MgVGVzdEdlbmVyYXRpb25UZXN0IDogcHVibGlj
IFRlc3RXaXRoUGFyYW08aW50PiB7Ci0gcHVibGljOgotICBlbnVtIHsKLSAgICBQQVJBTUVURVJf
Q09VTlQgPQotICAgICAgICBzaXplb2YodGVzdF9nZW5lcmF0aW9uX3BhcmFtcykvc2l6ZW9mKHRl
c3RfZ2VuZXJhdGlvbl9wYXJhbXNbMF0pCi0gIH07Ci0KLSAgdHlwZWRlZiBUZXN0R2VuZXJhdGlv
bkVudmlyb25tZW50PFBBUkFNRVRFUl9DT1VOVD4gRW52aXJvbm1lbnQ7Ci0KLSAgVGVzdEdlbmVy
YXRpb25UZXN0KCkgewotICAgIEVudmlyb25tZW50OjpJbnN0YW5jZSgpLT5GaXh0dXJlQ29uc3Ry
dWN0b3JFeGVjdXRlZCgpOwotICAgIGN1cnJlbnRfcGFyYW1ldGVyXyA9IEdldFBhcmFtKCk7Ci0g
IH0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIEVudmlyb25tZW50OjpJbnN0YW5jZSgp
LT5TZXRVcEV4ZWN1dGVkKCk7Ci0gICAgRVhQRUNUX0VRKGN1cnJlbnRfcGFyYW1ldGVyXywgR2V0
UGFyYW0oKSk7Ci0gIH0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIEVudmlyb25t
ZW50OjpJbnN0YW5jZSgpLT5UZWFyRG93bkV4ZWN1dGVkKCk7Ci0gICAgRVhQRUNUX0VRKGN1cnJl
bnRfcGFyYW1ldGVyXywgR2V0UGFyYW0oKSk7Ci0gIH0KLQotICBzdGF0aWMgdm9pZCBTZXRVcFRl
c3RDYXNlKCkgewotICAgIGJvb2wgYWxsX3Rlc3RzX2luX3Rlc3RfY2FzZV9zZWxlY3RlZCA9IHRy
dWU7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IFBBUkFNRVRFUl9DT1VOVDsgKytpKSB7Ci0g
ICAgICBNZXNzYWdlIHRlc3RfbmFtZTsKLSAgICAgIHRlc3RfbmFtZSA8PCAiVGVzdHNFeHBhbmRl
ZEFuZFJ1bi8iIDw8IGk7Ci0gICAgICBpZiAoICFVbml0VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNo
ZXNUZXN0KAotICAgICAgICAgICAgICAgICJUZXN0RXhwYW5zaW9uTW9kdWxlL011bHRpcGxlVGVz
dEdlbmVyYXRpb25UZXN0IiwKLSAgICAgICAgICAgICAgICB0ZXN0X25hbWUuR2V0U3RyaW5nKCkp
KSB7Ci0gICAgICAgIGFsbF90ZXN0c19pbl90ZXN0X2Nhc2Vfc2VsZWN0ZWQgPSBmYWxzZTsKLSAg
ICAgIH0KLSAgICB9Ci0gICAgRVhQRUNUX1RSVUUoYWxsX3Rlc3RzX2luX3Rlc3RfY2FzZV9zZWxl
Y3RlZCkKLSAgICAgICAgPDwgIldoZW4gcnVubmluZyB0aGUgVGVzdEdlbmVyYXRpb25UZXN0IHRl
c3QgY2FzZSBhbGwgb2YgaXRzIHRlc3RzXG4iCi0gICAgICAgIDw8ICJtdXN0IGJlIHNlbGVjdGVk
IGJ5IHRoZSBmaWx0ZXIgZmxhZyBmb3IgdGhlIHRlc3QgY2FzZSB0byBwYXNzLlxuIgotICAgICAg
ICA8PCAiSWYgbm90IGFsbCBvZiB0aGVtIGFyZSBlbmFibGVkLCB3ZSBjYW4ndCByZWxpYWJseSBj
b25jbHVkZVxuIgotICAgICAgICA8PCAidGhhdCB0aGUgY29ycmVjdCBudW1iZXIgb2YgdGVzdHMg
aGF2ZSBiZWVuIGdlbmVyYXRlZC4iOwotCi0gICAgY29sbGVjdGVkX3BhcmFtZXRlcnNfLmNsZWFy
KCk7Ci0gIH0KLQotICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgewotICAgIHZlY3Rv
cjxpbnQ+IGV4cGVjdGVkX3ZhbHVlcyh0ZXN0X2dlbmVyYXRpb25fcGFyYW1zLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2dlbmVyYXRpb25fcGFyYW1zICsgUEFSQU1FVEVS
X0NPVU5UKTsKLSAgICAvLyBUZXN0IGV4ZWN1dGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCBi
eSBHb29nbGUgVGVzdCwKLSAgICAvLyBzbyB0aGUgb3JkZXIgb2YgdmFsdWVzIGluIGNvbGxlY3Rl
ZF9wYXJhbWV0ZXJzXyBjYW4gYmUKLSAgICAvLyBkaWZmZXJlbnQgYW5kIHdlIGhhdmUgdG8gc29y
dCB0byBjb21wYXJlLgotICAgIHNvcnQoZXhwZWN0ZWRfdmFsdWVzLmJlZ2luKCksIGV4cGVjdGVk
X3ZhbHVlcy5lbmQoKSk7Ci0gICAgc29ydChjb2xsZWN0ZWRfcGFyYW1ldGVyc18uYmVnaW4oKSwg
Y29sbGVjdGVkX3BhcmFtZXRlcnNfLmVuZCgpKTsKLQotICAgIEVYUEVDVF9UUlVFKGNvbGxlY3Rl
ZF9wYXJhbWV0ZXJzXyA9PSBleHBlY3RlZF92YWx1ZXMpOwotICB9Ci0gcHJvdGVjdGVkOgotICBp
bnQgY3VycmVudF9wYXJhbWV0ZXJfOwotICBzdGF0aWMgdmVjdG9yPGludD4gY29sbGVjdGVkX3Bh
cmFtZXRlcnNfOwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdO
XyhUZXN0R2VuZXJhdGlvblRlc3QpOwotfTsKLXZlY3RvcjxpbnQ+IFRlc3RHZW5lcmF0aW9uVGVz
dDo6Y29sbGVjdGVkX3BhcmFtZXRlcnNfOwotCi1URVNUX1AoVGVzdEdlbmVyYXRpb25UZXN0LCBU
ZXN0c0V4cGFuZGVkQW5kUnVuKSB7Ci0gIEVudmlyb25tZW50OjpJbnN0YW5jZSgpLT5UZXN0Qm9k
eUV4ZWN1dGVkKCk7Ci0gIEVYUEVDVF9FUShjdXJyZW50X3BhcmFtZXRlcl8sIEdldFBhcmFtKCkp
OwotICBjb2xsZWN0ZWRfcGFyYW1ldGVyc18ucHVzaF9iYWNrKEdldFBhcmFtKCkpOwotfQotSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoVGVzdEV4cGFuc2lvbk1vZHVsZSwgVGVzdEdlbmVyYXRpb25U
ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzSW4odGVzdF9nZW5lcmF0aW9uX3Bh
cmFtcykpOwotCi0vLyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgZWxlbWVudCBzZXF1ZW5j
ZSAodGhpcmQgcGFyYW1ldGVyIG9mCi0vLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUCkgaXMgZXZh
bHVhdGVkIGluIEluaXRHb29nbGVUZXN0KCkgYW5kIG5laXRoZXIgYXQKLS8vIHRoZSBjYWxsIHNp
dGUgb2YgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Agbm9yIGluIFJVTl9BTExfVEVTVFMoKS4gIEZv
cgotLy8gdGhhdCwgd2UgZGVjbGFyZSBwYXJhbV92YWx1ZV8gdG8gYmUgYSBzdGF0aWMgbWVtYmVy
IG9mCi0vLyBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCBhbmQgaW5pdGlhbGl6ZSBpdCB0byAwLiAg
V2Ugc2V0IGl0IHRvIDEgaW4KLS8vIG1haW4oKSwganVzdCBiZWZvcmUgaW52b2NhdGlvbiBvZiBJ
bml0R29vZ2xlVGVzdCgpLiAgQWZ0ZXIgY2FsbGluZwotLy8gSW5pdEdvb2dsZVRlc3QoKSwgd2Ug
c2V0IHRoZSB2YWx1ZSB0byAyLiAgSWYgdGhlIHNlcXVlbmNlIGlzIGV2YWx1YXRlZAotLy8gYmVm
b3JlIG9yIGFmdGVyIEluaXRHb29nbGVUZXN0LCBJTlNUQU5USUFURV9URVNUX0NBU0VfUCB3aWxs
IGNyZWF0ZSBhCi0vLyB0ZXN0IHdpdGggcGFyYW1ldGVyIG90aGVyIHRoYW4gMSwgYW5kIHRoZSB0
ZXN0IGJvZHkgd2lsbCBmYWlsIHRoZQotLy8gYXNzZXJ0aW9uLgotY2xhc3MgR2VuZXJhdG9yRXZh
bHVhdGlvblRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsKLSBwdWJsaWM6Ci0gIHN0
YXRpYyBpbnQgcGFyYW1fdmFsdWUoKSB7IHJldHVybiBwYXJhbV92YWx1ZV87IH0KLSAgc3RhdGlj
IHZvaWQgc2V0X3BhcmFtX3ZhbHVlKGludCBwYXJhbV92YWx1ZSkgeyBwYXJhbV92YWx1ZV8gPSBw
YXJhbV92YWx1ZTsgfQotCi0gcHJpdmF0ZToKLSAgc3RhdGljIGludCBwYXJhbV92YWx1ZV87Ci19
OwotaW50IEdlbmVyYXRvckV2YWx1YXRpb25UZXN0OjpwYXJhbV92YWx1ZV8gPSAwOwotCi1URVNU
X1AoR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QsIEdlbmVyYXRvcnNFdmFsdWF0ZWRJbk1haW4pIHsK
LSAgRVhQRUNUX0VRKDEsIEdldFBhcmFtKCkpOwotfQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ao
R2VuRXZhbE1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvckV2YWx1YXRp
b25UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEdlbmVyYXRvckV2YWx1YXRp
b25UZXN0OjpwYXJhbV92YWx1ZSgpKSk7Ci0KLS8vIFRlc3RzIHRoYXQgZ2VuZXJhdG9ycyBkZWZp
bmVkIGluIGEgZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXQgYXJlCi0vLyBmdW5jdGlvbmFsLiBH
ZW5lcmF0b3IgZXh0ZXJuX2dlbiBpcyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdDIu
Y2MuCi1leHRlcm4gUGFyYW1HZW5lcmF0b3I8aW50PiBleHRlcm5fZ2VuOwotY2xhc3MgRXh0ZXJu
YWxHZW5lcmF0b3JUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7fTsKLVRFU1RfUChF
eHRlcm5hbEdlbmVyYXRvclRlc3QsIEV4dGVybmFsR2VuZXJhdG9yKSB7Ci0gIC8vIFNlcXVlbmNl
IHByb2R1Y2VkIGJ5IGV4dGVybl9nZW4gY29udGFpbnMgb25seSBhIHNpbmdsZSB2YWx1ZQotICAv
LyB3aGljaCB3ZSB2ZXJpZnkgaGVyZS4KLSAgRVhQRUNUX0VRKEdldFBhcmFtKCksIDMzKTsKLX0K
LUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEV4dGVybmFsR2VuZXJhdG9yTW9kdWxlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxHZW5lcmF0b3JUZXN0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgZXh0ZXJuX2dlbik7Ci0KLS8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRl
c3QgY2FzZSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgdHJhbnNsYXRpb24KLS8vIHVuaXQgYW5kIGlu
c3RhbnRpYXRlZCBpbiBhbm90aGVyLiBUaGlzIHRlc3Qgd2lsbCBiZSBpbnN0YW50aWF0ZWQgaW4K
LS8vIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdDIuY2MuIEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3Qg
Zml4dHVyZSBjbGFzcyBpcwotLy8gZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaC4K
LVRFU1RfUChFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0LCBJc011bHRpcGxlT2YzMykgewotICBF
WFBFQ1RfRVEoMCwgR2V0UGFyYW0oKSAlIDMzKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIHBhcmFt
ZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBpbnN0YW50aWF0ZWQgd2l0aCBtdWx0aXBsZQotLy8g
Z2VuZXJhdG9ycy4KLWNsYXNzIE11bHRpcGxlSW5zdGFudGlhdGlvblRlc3QgOiBwdWJsaWMgVGVz
dFdpdGhQYXJhbTxpbnQ+IHt9OwotVEVTVF9QKE11bHRpcGxlSW5zdGFudGlhdGlvblRlc3QsIEFs
bG93c011bHRpcGxlSW5zdGFuY2VzKSB7Ci19Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1
ZW5jZTEsIE11bHRpcGxlSW5zdGFudGlhdGlvblRlc3QsIFZhbHVlcygxLCAyKSk7Ci1JTlNUQU5U
SUFURV9URVNUX0NBU0VfUChTZXF1ZW5jZTIsIE11bHRpcGxlSW5zdGFudGlhdGlvblRlc3QsIFJh
bmdlKDMsIDUpKTsKLQotLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNh
biBiZSBpbnN0YW50aWF0ZWQKLS8vIGluIG11bHRpcGxlIHRyYW5zbGF0aW9uIHVuaXRzLiBUaGlz
IHRlc3Qgd2lsbCBiZSBpbnN0YW50aWF0ZWQKLS8vIGhlcmUgYW5kIGluIGd0ZXN0LXBhcmFtLXRl
c3RfdGVzdDIuY2MuCi0vLyBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGF0aW9uVW5pdHNU
ZXN0IGZpeHR1cmUgY2xhc3MKLS8vIGlzIGRlZmluZWQgaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0
LmguCi1URVNUX1AoSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0LCBJ
c011bHRpcGxlT2Y0MikgewotICBFWFBFQ1RfRVEoMCwgR2V0UGFyYW0oKSAlIDQyKTsKLX0KLUlO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbHVlcyg0MiwgNDIqMikpOwotCi0vLyBUZXN0cyB0aGF0IGVhY2ggaXRl
cmF0aW9uIG9mIHBhcmFtZXRlcml6ZWQgdGVzdCBydW5zIGluIGEgc2VwYXJhdGUgdGVzdAotLy8g
b2JqZWN0LgotY2xhc3MgU2VwYXJhdGVJbnN0YW5jZVRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJh
bTxpbnQ+IHsKLSBwdWJsaWM6Ci0gIFNlcGFyYXRlSW5zdGFuY2VUZXN0KCkgOiBjb3VudF8oMCkg
e30KLQotICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgewotICAgIEVYUEVDVF9HRShn
bG9iYWxfY291bnRfLCAyKQotICAgICAgICA8PCAiSWYgc29tZSAoYnV0IG5vdCBhbGwpIFNlcGFy
YXRlSW5zdGFuY2VUZXN0IHRlc3RzIGhhdmUgYmVlbiAiCi0gICAgICAgIDw8ICJmaWx0ZXJlZCBv
dXQgdGhpcyB0ZXN0IHdpbGwgZmFpbC4gTWFrZSBzdXJlIHRoYXQgYWxsICIKLSAgICAgICAgPDwg
IkdlbmVyYXRvckV2YWx1YXRpb25UZXN0IGFyZSBzZWxlY3RlZCBvciBkZS1zZWxlY3RlZCB0b2dl
dGhlciAiCi0gICAgICAgIDw8ICJieSB0aGUgdGVzdCBmaWx0ZXIuIjsKLSAgfQotCi0gcHJvdGVj
dGVkOgotICBpbnQgY291bnRfOwotICBzdGF0aWMgaW50IGdsb2JhbF9jb3VudF87Ci19OwotaW50
IFNlcGFyYXRlSW5zdGFuY2VUZXN0OjpnbG9iYWxfY291bnRfID0gMDsKLQotVEVTVF9QKFNlcGFy
YXRlSW5zdGFuY2VUZXN0LCBUZXN0c1J1bkluU2VwYXJhdGVJbnN0YW5jZXMpIHsKLSAgRVhQRUNU
X0VRKDAsIGNvdW50XysrKTsKLSAgZ2xvYmFsX2NvdW50XysrOwotfQotSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1AoRm91ckVsZW1TZXF1ZW5jZSwgU2VwYXJhdGVJbnN0YW5jZVRlc3QsIFJhbmdlKDEs
IDQpKTsKLQotLy8gVGVzdHMgdGhhdCBhbGwgaW5zdGFudGlhdGlvbnMgb2YgYSB0ZXN0IGhhdmUg
bmFtZWQgYXBwcm9wcmlhdGVseS4gVGVzdAotLy8gZGVmaW5lZCB3aXRoIFRFU1RfUChUZXN0Q2Fz
ZU5hbWUsIFRlc3ROYW1lKSBhbmQgaW5zdGFudGlhdGVkIHdpdGgKLS8vIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKFNlcXVlbmNlTmFtZSwgVGVzdENhc2VOYW1lLCBnZW5lcmF0b3IpIG11c3QgYmUg
bmFtZWQKLS8vIFNlcXVlbmNlTmFtZS9UZXN0Q2FzZU5hbWUuVGVzdE5hbWUvaSwgd2hlcmUgaSBp
cyB0aGUgMC1iYXNlZCBpbmRleCBvZiB0aGUKLS8vIHNlcXVlbmNlIGVsZW1lbnQgdXNlZCB0byBp
bnN0YW50aWF0ZSB0aGUgdGVzdC4KLWNsYXNzIE5hbWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQ
YXJhbTxpbnQ+IHt9OwotCi1URVNUX1AoTmFtaW5nVGVzdCwgVGVzdHNBcmVOYW1lZEFwcHJvcHJp
YXRlbHkpIHsKLSAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0K
LSAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2lu
Zm8oKTsKLQotICBFWFBFQ1RfU1RSRVEoIlplcm9Ub0ZpdmVTZXF1ZW5jZS9OYW1pbmdUZXN0Iiwg
dGVzdF9pbmZvLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLQotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8
ICJUZXN0c0FyZU5hbWVkQXBwcm9wcmlhdGVseS8iIDw8IEdldFBhcmFtKCk7Ci0gIEVYUEVDVF9T
VFJFUShtc2cuR2V0U3RyaW5nKCkuY19zdHIoKSwgdGVzdF9pbmZvLT5uYW1lKCkpOwotfQotCi1J
TlNUQU5USUFURV9URVNUX0NBU0VfUChaZXJvVG9GaXZlU2VxdWVuY2UsIE5hbWluZ1Rlc3QsIFJh
bmdlKDAsIDUpKTsKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi1URVNUKENv
bXBpbGVUZXN0LCBDb21iaW5lSXNEZWZpbmVkT25seVdoZW5HdGVzdEhhc1BhcmFtVGVzdElzRGVm
aW5lZCkgewotI2lmIEdURVNUX0hBU19DT01CSU5FICYmICFHVEVTVF9IQVNfUEFSQU1fVEVTVAot
ICBGQUlMKCkgPDwgIkdURVNUX0hBU19DT01CSU5FIGlzIGRlZmluZWQgd2hpbGUgR1RFU1RfSEFT
X1BBUkFNX1RFU1QgaXMgbm90XG4iCi0jZW5kaWYKLX0KLQotaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIgKiphcmd2KSB7Ci0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLSAgLy8gVXNlZCBpbiBUZXN0
R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlLgotICBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoVGVz
dEdlbmVyYXRpb25UZXN0OjpFbnZpcm9ubWVudDo6SW5zdGFuY2UoKSk7Ci0gIC8vIFVzZWQgaW4g
R2VuZXJhdG9yRXZhbHVhdGlvblRlc3QgdGVzdCBjYXNlLiBUZXN0cyB0aGF0IHRoZSB1cGRhdGVk
IHZhbHVlCi0gIC8vIHdpbGwgYmUgcGlja2VkIHVwIGZvciBpbnN0YW50aWF0aW5nIHRlc3RzIGlu
IEdlbmVyYXRvckV2YWx1YXRpb25UZXN0LgotICBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6c2V0
X3BhcmFtX3ZhbHVlKDEpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi0gIDo6
dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0jaWYgR1RFU1RfSEFTX1BB
UkFNX1RFU1QKLSAgLy8gVXNlZCBpbiBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCB0ZXN0IGNhc2Uu
IFRlc3RzIHRoYXQgdmFsdWUgdXBkYXRlZAotICAvLyBoZXJlIHdpbGwgTk9UIGJlIHVzZWQgZm9y
IGluc3RhbnRpYXRpbmcgdGVzdHMgaW4KLSAgLy8gR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QuCi0g
IEdlbmVyYXRvckV2YWx1YXRpb25UZXN0OjpzZXRfcGFyYW1fdmFsdWUoMik7Ci0jZW5kaWYgIC8v
IEdURVNUX0hBU19QQVJBTV9URVNUCi0KLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90
ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVz
dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2Y5NDkzNjEzN2RmYzVmM2YyZDU3
ZmE0MGRjYWY3YTE1Y2I2YjVlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90
ZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwg
R29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0v
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczogdmxhZGxAZ29vZ2xlLmNv
bSAoVmxhZCBMb3NldikKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAo
R29vZ2xlIFRlc3QpCi0vLwotLy8gVGhpcyBoZWFkZXIgZmlsZSBwcm92aWRlcyBjbGFzc2VzIGFu
ZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5Ci0vLyBmb3IgdGVzdGluZyBHb29nbGUgVGVzdCBp
dHNlbGYuCi0KLSNpZm5kZWYgR1RFU1RfVEVTVF9HVEVTVF9QQVJBTV9URVNUX1RFU1RfSF8KLSNk
ZWZpbmUgR1RFU1RfVEVTVF9HVEVTVF9QQVJBTV9URVNUX1RFU1RfSF8KLQotI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+Ci0KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi0vLyBUZXN0IGZpeHR1
cmUgZm9yIHRlc3RpbmcgZGVmaW5pdGlvbiBhbmQgaW5zdGFudGlhdGlvbiBvZiBhIHRlc3QKLS8v
IGluIHNlcGFyYXRlIHRyYW5zbGF0aW9uIHVuaXRzLgotY2xhc3MgRXh0ZXJuYWxJbnN0YW50aWF0
aW9uVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7fTsKLQotLy8g
VGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIGluc3RhbnRpYXRpb24gb2YgYSB0ZXN0IGluIG11bHRp
cGxlCi0vLyB0cmFuc2xhdGlvbiB1bml0cy4KLWNsYXNzIEluc3RhbnRpYXRpb25Jbk11bHRpcGxl
VHJhbnNsYWlvblVuaXRzVGVzdAotICAgIDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJh
bTxpbnQ+IHt9OwotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLSNlbmRpZiAg
Ly8gR1RFU1RfVEVTVF9HVEVTVF9QQVJBTV9URVNUX1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcG9ydF90ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1wb3J0X3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDM3MjU4NjAyZmE1Y2Y1YTc3OTk0N2NkNDI3ZTIwZTkwOWZjOTI1OGQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdC1wb3J0X3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMDE4
ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8v
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8g
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8v
Ci0vLyBBdXRob3JzOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KSwgd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBUaGlzIGZpbGUgdGVzdHMgdGhlIGludGVybmFsIGNy
b3NzLXBsYXRmb3JtIHN1cHBvcnQgdXRpbGl0aWVzLgotCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcG9ydC5oPgotCi0jaW5jbHVkZSA8c3RkaW8uaD4KLQotI2lmIEdURVNUX09TX01B
QwotI2luY2x1ZGUgPHRpbWUuaD4KLSNlbmRpZiAgLy8gR1RFU1RfT1NfTUFDCi0KLSNpbmNsdWRl
IDx1dGlsaXR5PiAgLy8gRm9yIHN0ZDo6cGFpciBhbmQgc3RkOjptYWtlX3BhaXIuCi0KLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgotCi0vLyBJ
bmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVz
dCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJu
YWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJy
b3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxs
eSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmlu
ZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1p
bmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KLQotdXNpbmcgc3RkOjptYWtlX3Bh
aXI7Ci11c2luZyBzdGQ6OnBhaXI7Ci0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBp
bnRlcm5hbCB7Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIGVsZW1lbnRfdHlwZSB0eXBlZGVmIGlzIGF2
YWlsYWJsZSBpbiBzY29wZWRfcHRyIGFuZCByZWZlcnMKLS8vIHRvIHRoZSBwYXJhbWV0ZXIgdHlw
ZS4KLVRFU1QoU2NvcGVkUHRyVGVzdCwgRGVmaW5lc0VsZW1lbnRUeXBlKSB7Ci0gIFN0YXRpY0Fz
c2VydFR5cGVFcTxpbnQsIDo6dGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI8aW50Pjo6ZWxl
bWVudF90eXBlPigpOwotfQotCi0vLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBJbXBsZW1lbnQg
VEhFIFJFU1Qgb2Ygc2NvcGVkX3B0ciB0ZXN0cy4KLQotVEVTVChHdGVzdENoZWNrU3ludGF4VGVz
dCwgQmVoYXZlc0xpa2VBU2luZ2xlU3RhdGVtZW50KSB7Ci0gIGlmIChBbHdheXNGYWxzZSgpKQot
ICAgIEdURVNUX0NIRUNLXyhmYWxzZSkgPDwgIlRoaXMgc2hvdWxkIG5ldmVyIGJlIGV4ZWN1dGVk
OyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiSXQncyBhIGNvbXBpbGF0aW9uIHRlc3Qg
b25seS4iOwotCi0gIGlmIChBbHdheXNUcnVlKCkpCi0gICAgR1RFU1RfQ0hFQ0tfKHRydWUpOwot
ICBlbHNlCi0gICAgOyAgLy8gTk9MSU5UCi0KLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgOyAg
Ly8gTk9MSU5UCi0gIGVsc2UKLSAgICBHVEVTVF9DSEVDS18odHJ1ZSkgPDwgIiI7Ci19Ci0KLVRF
U1QoR3Rlc3RDaGVja1N5bnRheFRlc3QsIFdvcmtzV2l0aFN3aXRjaCkgewotICBzd2l0Y2ggKDAp
IHsKLSAgICBjYXNlIDE6Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgR1RFU1Rf
Q0hFQ0tfKHRydWUpOwotICB9Ci0KLSAgc3dpdGNoKDApCi0gICAgY2FzZSAwOgotICAgICAgR1RF
U1RfQ0hFQ0tfKHRydWUpIDw8ICJDaGVjayBmYWlsZWQgaW4gc3dpdGNoIGNhc2UiOwotfQotCi0j
aWYgR1RFU1RfT1NfTUFDCi12b2lkKiBUaHJlYWRGdW5jKHZvaWQqIGRhdGEpIHsKLSAgcHRocmVh
ZF9tdXRleF90KiBtdXRleCA9IHN0YXRpY19jYXN0PHB0aHJlYWRfbXV0ZXhfdCo+KGRhdGEpOwot
ICBwdGhyZWFkX211dGV4X2xvY2sobXV0ZXgpOwotICBwdGhyZWFkX211dGV4X3VubG9jayhtdXRl
eCk7Ci0gIHJldHVybiBOVUxMOwotfQotCi1URVNUKEdldFRocmVhZENvdW50VGVzdCwgUmV0dXJu
c0NvcnJlY3RWYWx1ZSkgewotICBFWFBFQ1RfRVEoMVUsIEdldFRocmVhZENvdW50KCkpOwotICBw
dGhyZWFkX211dGV4X3QgbXV0ZXg7Ci0gIHB0aHJlYWRfYXR0cl90ICBhdHRyOwotICBwdGhyZWFk
X3QgICAgICAgdGhyZWFkX2lkOwotCi0gIC8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IHR1cm4g
bXV0ZXggaW50byBpbnRlcm5hbDo6TXV0ZXggZm9yIGF1dG9tYXRpYwotICAvLyBkZXN0cnVjdGlv
bi4KLSAgcHRocmVhZF9tdXRleF9pbml0KCZtdXRleCwgTlVMTCk7Ci0gIHB0aHJlYWRfbXV0ZXhf
bG9jaygmbXV0ZXgpOwotICBBU1NFUlRfRVEoMCwgcHRocmVhZF9hdHRyX2luaXQoJmF0dHIpKTsK
LSAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXR0cl9zZXRkZXRhY2hzdGF0ZSgmYXR0ciwgUFRIUkVB
RF9DUkVBVEVfSk9JTkFCTEUpKTsKLQotICBjb25zdCBpbnQgc3RhdHVzID0gcHRocmVhZF9jcmVh
dGUoJnRocmVhZF9pZCwgJmF0dHIsICZUaHJlYWRGdW5jLCAmbXV0ZXgpOwotICBBU1NFUlRfRVEo
MCwgcHRocmVhZF9hdHRyX2Rlc3Ryb3koJmF0dHIpKTsKLSAgQVNTRVJUX0VRKDAsIHN0YXR1cyk7
Ci0gIEVYUEVDVF9FUSgyVSwgR2V0VGhyZWFkQ291bnQoKSk7Ci0gIHB0aHJlYWRfbXV0ZXhfdW5s
b2NrKCZtdXRleCk7Ci0KLSAgdm9pZCogZHVtbXk7Ci0gIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2pv
aW4odGhyZWFkX2lkLCAmZHVtbXkpKTsKLQotICAvLyBNYWNPUyBYIG1heSBub3QgaW1tZWRpYXRl
bHkgcmVwb3J0IHRoZSB1cGRhdGVkIHRocmVhZCBjb3VudCBhZnRlcgotICAvLyBqb2luaW5nIGEg
dGhyZWFkLCBjYXVzaW5nIGZsYWtpbmVzcyBpbiB0aGlzIHRlc3QuIFRvIGNvdW50ZXIgdGhhdCwg
d2UKLSAgLy8gd2FpdCBmb3IgdXAgdG8gLjUgc2Vjb25kcyBmb3IgdGhlIE9TIHRvIHJlcG9ydCB0
aGUgY29ycmVjdCB2YWx1ZS4KLSAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyArK2kpIHsKLSAgICBp
ZiAoR2V0VGhyZWFkQ291bnQoKSA9PSAxKQotICAgICAgYnJlYWs7Ci0KLSAgICBTbGVlcE1pbGxp
c2Vjb25kcygxMDApOwotICB9Ci0gIEVYUEVDVF9FUSgxVSwgR2V0VGhyZWFkQ291bnQoKSk7Ci0g
IHB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmbXV0ZXgpOwotfQotI2Vsc2UKLVRFU1QoR2V0VGhyZWFk
Q291bnRUZXN0LCBSZXR1cm5zWmVyb1doZW5VbmFibGVUb0NvdW50VGhyZWFkcykgewotICBFWFBF
Q1RfRVEoMFUsIEdldFRocmVhZENvdW50KCkpOwotfQotI2VuZGlmICAvLyBHVEVTVF9PU19NQUMK
LQotVEVTVChHdGVzdENoZWNrRGVhdGhUZXN0LCBEaWVzV2l0aENvcnJlY3RPdXRwdXRPbkZhaWx1
cmUpIHsKLSAgY29uc3QgYm9vbCBhX2ZhbHNlX2NvbmRpdGlvbiA9IGZhbHNlOwotICBjb25zdCBj
aGFyIHJlZ2V4W10gPQotI2lmZGVmIF9NU0NfVkVSCi0gICAgICJndGVzdC1wb3J0X3Rlc3RcXC5j
Y1xcKFxcZCtcXCk6IgotI2Vsc2UKLSAgICAgImd0ZXN0LXBvcnRfdGVzdFxcLmNjOlswLTldKyIK
LSNlbmRpZiAgLy8gX01TQ19WRVIKLSAgICAgIi4qYV9mYWxzZV9jb25kaXRpb24uKkV4dHJhIGlu
Zm8uKiI7Ci0KLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChHVEVTVF9DSEVDS18oYV9mYWxz
ZV9jb25kaXRpb24pIDw8ICJFeHRyYSBpbmZvIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWdleCk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi1URVNUKEd0ZXN0Q2hl
Y2tEZWF0aFRlc3QsIExpdmVzU2lsZW50bHlPblN1Y2Nlc3MpIHsKLSAgRVhQRUNUX0VYSVQoewot
ICAgICAgR1RFU1RfQ0hFQ0tfKHRydWUpIDw8ICJFeHRyYSBpbmZvIjsKLSAgICAgIDo6c3RkOjpj
ZXJyIDw8ICJTdWNjZXNzXG4iOwotICAgICAgZXhpdCgwKTsgfSwKLSAgICAgIDo6dGVzdGluZzo6
RXhpdGVkV2l0aENvZGUoMCksICJTdWNjZXNzIik7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X0RFQVRIX1RFU1QKLQotI2lmIEdURVNUX1VTRVNfUE9TSVhfUkUKLQotI2lmIEdURVNUX0hBU19U
WVBFRF9URVNUCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBTdHI+Ci1jbGFzcyBSRVRlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHt9OwotCi0vLyBEZWZpbmVzIFN0cmluZ1R5cGVzIGFzIHRoZSBs
aXN0IG9mIGFsbCBzdHJpbmcgdHlwZXMgdGhhdCBjbGFzcyBSRQotLy8gc3VwcG9ydHMuCi10eXBl
ZGVmIHRlc3Rpbmc6OlR5cGVzPAotICAgIDo6c3RkOjpzdHJpbmcsCi0jaWYgR1RFU1RfSEFTX0dM
T0JBTF9TVFJJTkcKLSAgICA6OnN0cmluZywKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9T
VFJJTkcKLSAgICBjb25zdCBjaGFyKj4gU3RyaW5nVHlwZXM7Ci0KLVRZUEVEX1RFU1RfQ0FTRShS
RVRlc3QsIFN0cmluZ1R5cGVzKTsKLQotLy8gVGVzdHMgUkUncyBpbXBsaWNpdCBjb25zdHJ1Y3Rv
cnMuCi1UWVBFRF9URVNUKFJFVGVzdCwgSW1wbGljaXRDb25zdHJ1Y3RvcldvcmtzKSB7Ci0gIGNv
bnN0IFJFIGVtcHR5KFR5cGVQYXJhbSgiIikpOwotICBFWFBFQ1RfU1RSRVEoIiIsIGVtcHR5LnBh
dHRlcm4oKSk7Ci0KLSAgY29uc3QgUkUgc2ltcGxlKFR5cGVQYXJhbSgiaGVsbG8iKSk7Ci0gIEVY
UEVDVF9TVFJFUSgiaGVsbG8iLCBzaW1wbGUucGF0dGVybigpKTsKLQotICBjb25zdCBSRSBub3Jt
YWwoVHlwZVBhcmFtKCIuKihcXHcrKSIpKTsKLSAgRVhQRUNUX1NUUkVRKCIuKihcXHcrKSIsIG5v
cm1hbC5wYXR0ZXJuKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFJFJ3MgY29uc3RydWN0b3JzIHJl
amVjdCBpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCi1UWVBFRF9URVNUKFJFVGVzdCwgUmVq
ZWN0c0ludmFsaWRSZWdleCkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAgY29u
c3QgUkUgaW52YWxpZChUeXBlUGFyYW0oIj8iKSk7Ci0gIH0sICJcIj9cIiBpcyBub3QgYSB2YWxp
ZCBQT1NJWCBFeHRlbmRlZCByZWd1bGFyIGV4cHJlc3Npb24uIik7Ci19Ci0KLS8vIFRlc3RzIFJF
OjpGdWxsTWF0Y2goKS4KLVRZUEVEX1RFU1QoUkVUZXN0LCBGdWxsTWF0Y2hXb3JrcykgewotICBj
b25zdCBSRSBlbXB0eShUeXBlUGFyYW0oIiIpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRj
aChUeXBlUGFyYW0oIiIpLCBlbXB0eSkpOwotICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaChU
eXBlUGFyYW0oImEiKSwgZW1wdHkpKTsKLQotICBjb25zdCBSRSByZShUeXBlUGFyYW0oImEuKnoi
KSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJheiIpLCByZSkpOwot
ICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYXh5eiIpLCByZSkpOwotICBF
WFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oImJheiIpLCByZSkpOwotICBFWFBF
Q1RfRkFMU0UoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oImF6eSIpLCByZSkpOwotfQotCi0vLyBU
ZXN0cyBSRTo6UGFydGlhbE1hdGNoKCkuCi1UWVBFRF9URVNUKFJFVGVzdCwgUGFydGlhbE1hdGNo
V29ya3MpIHsKLSAgY29uc3QgUkUgZW1wdHkoVHlwZVBhcmFtKCIiKSk7Ci0gIEVYUEVDVF9UUlVF
KFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCIiKSwgZW1wdHkpKTsKLSAgRVhQRUNUX1RSVUUo
UkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oImEiKSwgZW1wdHkpKTsKLQotICBjb25zdCBSRSBy
ZShUeXBlUGFyYW0oImEuKnoiKSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goVHlw
ZVBhcmFtKCJheiIpLCByZSkpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQ
YXJhbSgiYXh5eiIpLCByZSkpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQ
YXJhbSgiYmF6IiksIHJlKSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBh
cmFtKCJhenkiKSwgcmUpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBh
cmFtKCJ6emEiKSwgcmUpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAot
Ci0jZWxpZiBHVEVTVF9VU0VTX1NJTVBMRV9SRQotCi1URVNUKElzSW5TZXRUZXN0LCBOdWxDaGFy
SXNOb3RJbkFueVNldCkgewotICBFWFBFQ1RfRkFMU0UoSXNJblNldCgnXDAnLCAiIikpOwotICBF
WFBFQ1RfRkFMU0UoSXNJblNldCgnXDAnLCAiXDAiKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0luU2V0
KCdcMCcsICJhIikpOwotfQotCi1URVNUKElzSW5TZXRUZXN0LCBXb3Jrc0Zvck5vbk51bENoYXJz
KSB7Ci0gIEVYUEVDVF9GQUxTRShJc0luU2V0KCdhJywgIkFiIikpOwotICBFWFBFQ1RfRkFMU0Uo
SXNJblNldCgnYycsICIiKSk7Ci0KLSAgRVhQRUNUX1RSVUUoSXNJblNldCgnYicsICJiY2QiKSk7
Ci0gIEVYUEVDVF9UUlVFKElzSW5TZXQoJ2InLCAiYWIiKSk7Ci19Ci0KLVRFU1QoSXNEaWdpdFRl
c3QsIElzRmFsc2VGb3JOb25EaWdpdCkgewotICBFWFBFQ1RfRkFMU0UoSXNEaWdpdCgnXDAnKSk7
Ci0gIEVYUEVDVF9GQUxTRShJc0RpZ2l0KCcgJykpOwotICBFWFBFQ1RfRkFMU0UoSXNEaWdpdCgn
KycpKTsKLSAgRVhQRUNUX0ZBTFNFKElzRGlnaXQoJy0nKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0Rp
Z2l0KCcuJykpOwotICBFWFBFQ1RfRkFMU0UoSXNEaWdpdCgnYScpKTsKLX0KLQotVEVTVChJc0Rp
Z2l0VGVzdCwgSXNUcnVlRm9yRGlnaXQpIHsKLSAgRVhQRUNUX1RSVUUoSXNEaWdpdCgnMCcpKTsK
LSAgRVhQRUNUX1RSVUUoSXNEaWdpdCgnMScpKTsKLSAgRVhQRUNUX1RSVUUoSXNEaWdpdCgnNScp
KTsKLSAgRVhQRUNUX1RSVUUoSXNEaWdpdCgnOScpKTsKLX0KLQotVEVTVChJc1B1bmN0VGVzdCwg
SXNGYWxzZUZvck5vblB1bmN0KSB7Ci0gIEVYUEVDVF9GQUxTRShJc1B1bmN0KCdcMCcpKTsKLSAg
RVhQRUNUX0ZBTFNFKElzUHVuY3QoJyAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1B1bmN0KCdcbicp
KTsKLSAgRVhQRUNUX0ZBTFNFKElzUHVuY3QoJ2EnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1B1bmN0
KCcwJykpOwotfQotCi1URVNUKElzUHVuY3RUZXN0LCBJc1RydWVGb3JQdW5jdCkgewotICBmb3Ig
KGNvbnN0IGNoYXIqIHAgPSAiXi0hXCIjJCUmJygpKissLi86Ozw9Pj9AW1xcXV9ge3x9fiI7ICpw
OyBwKyspIHsKLSAgICBFWFBFQ1RfUFJFRDEoSXNQdW5jdCwgKnApOwotICB9Ci19Ci0KLVRFU1Qo
SXNSZXBlYXRUZXN0LCBJc0ZhbHNlRm9yTm9uUmVwZWF0Q2hhcikgewotICBFWFBFQ1RfRkFMU0Uo
SXNSZXBlYXQoJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNSZXBlYXQoJyAnKSk7Ci0gIEVYUEVD
VF9GQUxTRShJc1JlcGVhdCgnYScpKTsKLSAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCcxJykpOwot
ICBFWFBFQ1RfRkFMU0UoSXNSZXBlYXQoJy0nKSk7Ci19Ci0KLVRFU1QoSXNSZXBlYXRUZXN0LCBJ
c1RydWVGb3JSZXBlYXRDaGFyKSB7Ci0gIEVYUEVDVF9UUlVFKElzUmVwZWF0KCc/JykpOwotICBF
WFBFQ1RfVFJVRShJc1JlcGVhdCgnKicpKTsKLSAgRVhQRUNUX1RSVUUoSXNSZXBlYXQoJysnKSk7
Ci19Ci0KLVRFU1QoSXNXaGl0ZVNwYWNlVGVzdCwgSXNGYWxzZUZvck5vbldoaXRlU3BhY2UpIHsK
LSAgRVhQRUNUX0ZBTFNFKElzV2hpdGVTcGFjZSgnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1do
aXRlU3BhY2UoJ2EnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1doaXRlU3BhY2UoJzEnKSk7Ci0gIEVY
UEVDVF9GQUxTRShJc1doaXRlU3BhY2UoJysnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1doaXRlU3Bh
Y2UoJ18nKSk7Ci19Ci0KLVRFU1QoSXNXaGl0ZVNwYWNlVGVzdCwgSXNUcnVlRm9yV2hpdGVTcGFj
ZSkgewotICBFWFBFQ1RfVFJVRShJc1doaXRlU3BhY2UoJyAnKSk7Ci0gIEVYUEVDVF9UUlVFKElz
V2hpdGVTcGFjZSgnXG4nKSk7Ci0gIEVYUEVDVF9UUlVFKElzV2hpdGVTcGFjZSgnXHInKSk7Ci0g
IEVYUEVDVF9UUlVFKElzV2hpdGVTcGFjZSgnXHQnKSk7Ci0gIEVYUEVDVF9UUlVFKElzV2hpdGVT
cGFjZSgnXHYnKSk7Ci0gIEVYUEVDVF9UUlVFKElzV2hpdGVTcGFjZSgnXGYnKSk7Ci19Ci0KLVRF
U1QoSXNXb3JkQ2hhclRlc3QsIElzRmFsc2VGb3JOb25Xb3JkQ2hhcikgewotICBFWFBFQ1RfRkFM
U0UoSXNXb3JkQ2hhcignXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1dvcmRDaGFyKCcrJykpOwot
ICBFWFBFQ1RfRkFMU0UoSXNXb3JkQ2hhcignLicpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV29yZENo
YXIoJyAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1dvcmRDaGFyKCdcbicpKTsKLX0KLQotVEVTVChJ
c1dvcmRDaGFyVGVzdCwgSXNUcnVlRm9yTGV0dGVyKSB7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENo
YXIoJ2EnKSk7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJ2InKSk7Ci0gIEVYUEVDVF9UUlVF
KElzV29yZENoYXIoJ0EnKSk7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJ1onKSk7Ci19Ci0K
LVRFU1QoSXNXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvckRpZ2l0KSB7Ci0gIEVYUEVDVF9UUlVFKElz
V29yZENoYXIoJzAnKSk7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJzEnKSk7Ci0gIEVYUEVD
VF9UUlVFKElzV29yZENoYXIoJzcnKSk7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJzknKSk7
Ci19Ci0KLVRFU1QoSXNXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvclVuZGVyc2NvcmUpIHsKLSAgRVhQ
RUNUX1RSVUUoSXNXb3JkQ2hhcignXycpKTsKLX0KLQotVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwg
SXNGYWxzZUZvck5vblByaW50YWJsZSkgewotICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgn
XDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdcMDA3JykpOwotfQotCi1URVNU
KElzVmFsaWRFc2NhcGVUZXN0LCBJc0ZhbHNlRm9yRGlnaXQpIHsKLSAgRVhQRUNUX0ZBTFNFKElz
VmFsaWRFc2NhcGUoJzAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCc5JykpOwot
fQotCi1URVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc0ZhbHNlRm9yV2hpdGVTcGFjZSkgewotICBF
WFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnICcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzVmFsaWRF
c2NhcGUoJ1xuJykpOwotfQotCi1URVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc0ZhbHNlRm9yU29t
ZUxldHRlcikgewotICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnYScpKTsKLSAgRVhQRUNU
X0ZBTFNFKElzVmFsaWRFc2NhcGUoJ1onKSk7Ci19Ci0KLVRFU1QoSXNWYWxpZEVzY2FwZVRlc3Qs
IElzVHJ1ZUZvclB1bmN0KSB7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJy4nKSk7Ci0g
IEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJy0nKSk7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRF
c2NhcGUoJ14nKSk7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJyQnKSk7Ci0gIEVYUEVD
VF9UUlVFKElzVmFsaWRFc2NhcGUoJygnKSk7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUo
J10nKSk7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ3snKSk7Ci0gIEVYUEVDVF9UUlVF
KElzVmFsaWRFc2NhcGUoJ3wnKSk7Ci19Ci0KLVRFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzVHJ1
ZUZvclNvbWVMZXR0ZXIpIHsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnZCcpKTsKLSAg
RVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnRCcpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVz
Y2FwZSgncycpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnUycpKTsKLSAgRVhQRUNU
X1RSVUUoSXNWYWxpZEVzY2FwZSgndycpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgn
VycpKTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkUHVuY3QpIHsKLSAg
RVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXFwnLCAnXDAnKSk7Ci0gIEVYUEVD
VF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1xcJywgJyAnKSk7Ci0gIEVYUEVDVF9GQUxT
RShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ18nLCAnLicpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAnLicsICdhJykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAnXFwnLCAnXFwnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAnXycsICdfJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJysn
LCAnKycpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICcuJywgJy4nKSk7
Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF9kKSB7Ci0gIEVYUEVDVF9G
QUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShB
dG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnYScpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAnZCcsICcuJykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hh
cih0cnVlLCAnZCcsICcwJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwg
J2QnLCAnOScpKTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX0QpIHsK
LSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcsICcwJykpOwotICBFWFBF
Q1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJzknKSk7Ci0KLSAgRVhQRUNUX1RS
VUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJ1wwJykpOwotICBFWFBFQ1RfVFJVRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ0QnLCAnYScpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXND
aGFyKHRydWUsICdEJywgJy0nKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNj
YXBlZF9zKSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnXDAn
KSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnYScpKTsKLSAg
RVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICcuJykpOwotICBFWFBFQ1Rf
RkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJzknKSk7Ci0KLSAgRVhQRUNUX1RSVUUo
QXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJyAnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAncycsICdcbicpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFy
KHRydWUsICdzJywgJ1x0JykpOwotfQotCi1URVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2Fw
ZWRfUykgewotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdTJywgJyAnKSk7
Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnXHInKSk7Ci0KLSAg
RVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdTJywgJ1wwJykpOwotICBFWFBFQ1Rf
VFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnYScpKTsKLSAgRVhQRUNUX1RSVUUoQXRv
bU1hdGNoZXNDaGFyKHRydWUsICdTJywgJzknKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXNDaGFy
VGVzdCwgRXNjYXBlZF93KSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwg
J3cnLCAnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAn
KycpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICcgJykpOwot
ICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJ1xuJykpOwotCi0gIEVY
UEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICcwJykpOwotICBFWFBFQ1RfVFJV
RShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnYicpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICd3JywgJ0MnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hh
cih0cnVlLCAndycsICdfJykpOwotfQotCi1URVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2Fw
ZWRfVykgewotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJ0EnKSk7
Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnYicpKTsKLSAgRVhQ
RUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICc5JykpOwotICBFWFBFQ1RfRkFM
U0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJ18nKSk7Ci0KLSAgRVhQRUNUX1RSVUUoQXRv
bU1hdGNoZXNDaGFyKHRydWUsICdXJywgJ1wwJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ1cnLCAnKicpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICdXJywgJ1xuJykpOwotfQotCi1URVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRX
aGl0ZVNwYWNlKSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2YnLCAn
XDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2YnLCAnXG4nKSk7
Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ24nLCAnXDAnKSk7Ci0gIEVY
UEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ24nLCAnXHInKSk7Ci0gIEVYUEVDVF9G
QUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3InLCAnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShB
dG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3InLCAnYScpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAndCcsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hh
cih0cnVlLCAndCcsICd0JykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICd2JywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd2Jywg
J1xmJykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZicsICdcZicp
KTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICduJywgJ1xuJykpOwotICBF
WFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3InLCAnXHInKSk7Ci0gIEVYUEVDVF9U
UlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndCcsICdcdCcpKTsKLSAgRVhQRUNUX1RSVUUoQXRv
bU1hdGNoZXNDaGFyKHRydWUsICd2JywgJ1x2JykpOwotfQotCi1URVNUKEF0b21NYXRjaGVzQ2hh
clRlc3QsIFVuZXNjYXBlZERvdCkgewotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKGZh
bHNlLCAnLicsICdcbicpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2Us
ICcuJywgJ1wwJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICcuJywg
Jy4nKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4nLCAnYScpKTsK
LSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnLicsICcgJykpOwotfQotCi1U
RVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIFVuZXNjYXBlZENoYXIpIHsKLSAgRVhQRUNUX0ZBTFNF
KEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJ2EnLCAnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIoZmFsc2UsICdhJywgJ2InKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hl
c0NoYXIoZmFsc2UsICckJywgJ2EnKSk7Ci0KLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFy
KGZhbHNlLCAnJCcsICckJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2Us
ICc1JywgJzUnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJ1onLCAn
WicpKTsKLX0KLQotVEVTVChWYWxpZGF0ZVJlZ2V4VGVzdCwgR2VuZXJhdGVzRmFpbHVyZUFuZFJl
dHVybnNGYWxzZUZvckludmFsaWQpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJU
X0ZBTFNFKFZhbGlkYXRlUmVnZXgoTlVMTCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAi
TlVMTCBpcyBub3QgYSB2YWxpZCBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uIik7Ci0gIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKAotICAgICAgQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImFc
XCIpKSwKLSAgICAgICJTeW50YXggZXJyb3IgYXQgaW5kZXggMSBpbiBzaW1wbGUgcmVndWxhciBl
eHByZXNzaW9uIFwiYVxcXCI6ICIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRf
RkFMU0UoVmFsaWRhdGVSZWdleCgiYVxcIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAi
J1xcJyBjYW5ub3QgYXBwZWFyIGF0IHRoZSBlbmQiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIlxcblxcIikpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAiJ1xcJyBjYW5ub3QgYXBwZWFyIGF0IHRoZSBlbmQiKTsKLSAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIlxcc1xcaGIiKSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBcIlxcaFwi
Iik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4
KCJeXiIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIideJyBjYW4gb25seSBhcHBlYXIg
YXQgdGhlIGJlZ2lubmluZyIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFM
U0UoVmFsaWRhdGVSZWdleCgiLipeYiIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIide
JyBjYW4gb25seSBhcHBlYXIgYXQgdGhlIGJlZ2lubmluZyIpOwotICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiJCQiKSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICInJCcgY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBlbmQiKTsKLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIl4kYSIpKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIickJyBjYW4gb25seSBhcHBlYXIgYXQgdGhlIGVuZCIp
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgi
YShiIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJygnIGlzIHVuc3VwcG9ydGVkIik7
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJh
YikiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInKScgaXMgdW5zdXBwb3J0ZWQiKTsK
LSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIlth
YiIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIidbJyBpcyB1bnN1cHBvcnRlZCIpOwot
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiYXsy
IikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3snIGlzIHVuc3VwcG9ydGVkIik7Ci0g
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCI/Iikp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJz8nIGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVh
dGFibGUgdG9rZW4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZh
bGlkYXRlUmVnZXgoIl4qIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJyonIGNhbiBv
bmx5IGZvbGxvdyBhIHJlcGVhdGFibGUgdG9rZW4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIjUqKyIpKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIicrJyBjYW4gb25seSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2VuIik7Ci19Ci0K
LVRFU1QoVmFsaWRhdGVSZWdleFRlc3QsIFJldHVybnNUcnVlRm9yVmFsaWQpIHsKLSAgRVhQRUNU
X1RSVUUoVmFsaWRhdGVSZWdleCgiIikpOwotICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCJh
IikpOwotICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCIuKiIpKTsKLSAgRVhQRUNUX1RSVUUo
VmFsaWRhdGVSZWdleCgiXmFfKyIpKTsKLSAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiXmFc
XHRcXCY/IikpOwotICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCIwOSokIikpOwotICBFWFBF
Q1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCJeWiQiKSk7Ci0gIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVn
ZXgoImFcXF5aXFwkXFwoXFwpXFx8XFxbXFxdXFx7XFx9IikpOwotfQotCi1URVNUKE1hdGNoUmVw
ZXRpdGlvbkFuZFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NGb3JaZXJvT3JPbmUpIHsKLSAgRVhQRUNU
X0ZBTFNFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImEi
LCAiYmEiKSk7Ci0gIC8vIFJlcGVhdGluZyBtb3JlIHRoYW4gb25jZS4KLSAgRVhQRUNUX0ZBTFNF
KE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImIiLCAiYWFi
IikpOwotCi0gIC8vIFJlcGVhdGluZyB6ZXJvIHRpbWVzLgotICBFWFBFQ1RfVFJVRShNYXRjaFJl
cGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJ2EnLCAnPycsICJiIiwgImJhIikpOwotICAv
LyBSZXBlYXRpbmcgb25jZS4KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhB
dEhlYWQoZmFsc2UsICdhJywgJz8nLCAiYiIsICJhYiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hS
ZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcjJywgJz8nLCAiLiIsICIjIyIpKTsKLX0K
LQotVEVTVChNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZFRlc3QsIFdvcmtzRm9yWmVyb09y
TWFueSkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFs
c2UsICcuJywgJyonLCAiYSQiLCAiYmFhYiIpKTsKLQotICAvLyBSZXBlYXRpbmcgemVybyB0aW1l
cy4KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcu
JywgJyonLCAiYiIsICJiYyIpKTsKLSAgLy8gUmVwZWF0aW5nIG9uY2UuCi0gIEVYUEVDVF9UUlVF
KE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcqJywgImIiLCAiYWJj
IikpOwotICAvLyBSZXBlYXRpbmcgbW9yZSB0aGFuIG9uY2UuCi0gIEVYUEVDVF9UUlVFKE1hdGNo
UmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKHRydWUsICd3JywgJyonLCAiLSIsICJhYl8xLWciKSk7
Ci19Ci0KLVRFU1QoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc0Zvck9u
ZU9yTWFueSkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQo
ZmFsc2UsICcuJywgJysnLCAiYSQiLCAiYmFhYiIpKTsKLSAgLy8gUmVwZWF0aW5nIHplcm8gdGlt
ZXMuCi0gIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwg
Jy4nLCAnKycsICJiIiwgImJjIikpOwotCi0gIC8vIFJlcGVhdGluZyBvbmNlLgotICBFWFBFQ1Rf
VFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKycsICJiIiwg
ImFiYyIpKTsKLSAgLy8gUmVwZWF0aW5nIG1vcmUgdGhhbiBvbmNlLgotICBFWFBFQ1RfVFJVRShN
YXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZCh0cnVlLCAndycsICcrJywgIi0iLCAiYWJfMS1n
IikpOwotfQotCi1URVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBSZXR1cm5zVHJ1ZUZvckVtcHR5
UmVnZXgpIHsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiIiwgIiIpKTsKLSAgRVhQ
RUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiIiwgImFiIikpOwotfQotCi1URVNUKE1hdGNoUmVn
ZXhBdEhlYWRUZXN0LCBXb3Jrc1doZW5Eb2xsYXJJc0luUmVnZXgpIHsKLSAgRVhQRUNUX0ZBTFNF
KE1hdGNoUmVnZXhBdEhlYWQoIiQiLCAiYSIpKTsKLQotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4
QXRIZWFkKCIkIiwgIiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiYSQiLCAi
YSIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NXaGVuUmVnZXhTdGFy
dHNXaXRoRXNjYXBlU2VxdWVuY2UpIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQo
IlxcdyIsICIrIikpOwotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiXFxXIiwgImFi
IikpOwotCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcc2EiLCAiXG5hYiIpKTsK
LSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxkIiwgIjFhIikpOwotfQotCi1URVNU
KE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhSZXBldGl0aW9u
KSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCIuK2EiLCAiYWJjIikpOwotICBF
WFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiYT9iIiwgImFhYiIpKTsKLQotICBFWFBFQ1Rf
VFJVRShNYXRjaFJlZ2V4QXRIZWFkKCIuKmEiLCAiYmMxMi1hYiIpKTsKLSAgRVhQRUNUX1RSVUUo
TWF0Y2hSZWdleEF0SGVhZCgiYT9iIiwgImIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhB
dEhlYWQoImE/YiIsICJhYiIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwKLSAg
ICAgV29ya3NXaGVuUmVnZXhTdGFydHNXaXRoUmVwZXRpb25PZkVzY2FwZVNlcXVlbmNlKSB7Ci0g
IEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJcXC4rYSIsICJhYmMiKSk7Ci0gIEVYUEVD
VF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJcXHM/YiIsICIgIGIiKSk7Ci0KLSAgRVhQRUNUX1RS
VUUoTWF0Y2hSZWdleEF0SGVhZCgiXFwoKmEiLCAiKCgoKGFiIikpOwotICBFWFBFQ1RfVFJVRShN
YXRjaFJlZ2V4QXRIZWFkKCJcXF4/YiIsICJeYiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdl
eEF0SGVhZCgiXFxcXD9iIiwgImIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQo
IlxcXFw/YiIsICJcXGIiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIE1hdGNo
ZXNTZXF1ZW50aWFsbHkpIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoImFiLipj
IiwgImFjYWJjIikpOwotCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoImFiLipjIiwg
ImFiLWZzYyIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5zRmFs
c2VXaGVuU3RyaW5nSXNOdWxsKSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hlcmUo
IiIsIE5VTEwpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBXb3Jrc1doZW5S
ZWdleFN0YXJ0c1dpdGhDYXJldCkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJl
KCJeYSIsICJiYSIpKTsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXiQiLCAi
YSIpKTsKLQotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIl5hIiwgImFiIikpOwot
ICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIl4iLCAiYWIiKSk7Ci0gIEVYUEVDVF9U
UlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXiQiLCAiIikpOwotfQotCi1URVNUKE1hdGNoUmVnZXhB
bnl3aGVyZVRlc3QsIFJldHVybnNGYWxzZVdoZW5Ob01hdGNoKSB7Ci0gIEVYUEVDVF9GQUxTRShN
YXRjaFJlZ2V4QW55d2hlcmUoImEiLCAiYmNkZTEyMyIpKTsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNo
UmVnZXhBbnl3aGVyZSgiYS4rYSIsICItLWFhODg4ODg4ODgiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hS
ZWdleEFueXdoZXJlVGVzdCwgUmV0dXJuc1RydWVXaGVuTWF0Y2hpbmdQcmVmaXgpIHsKLSAgRVhQ
RUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJcXHcrIiwgImFiMV8gLSA1IikpOwotICBFWFBF
Q1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIi4qPSIsICI9IikpOwotICBFWFBFQ1RfVFJVRShN
YXRjaFJlZ2V4QW55d2hlcmUoInguKmFiPy4qYmMiLCAieGFhYWJjIikpOwotfQotCi1URVNUKE1h
dGNoUmVnZXhBbnl3aGVyZVRlc3QsIFJldHVybnNUcnVlV2hlbk1hdGNoaW5nTm9uUHJlZml4KSB7
Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXFx3KyIsICIkJCQgYWIxXyAtIDUi
KSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXFwuKz0iLCAiPSAgLi4uPSIp
KTsKLX0KLQotLy8gVGVzdHMgUkUncyBpbXBsaWNpdCBjb25zdHJ1Y3RvcnMuCi1URVNUKFJFVGVz
dCwgSW1wbGljaXRDb25zdHJ1Y3RvcldvcmtzKSB7Ci0gIGNvbnN0IFJFIGVtcHR5KCIiKTsKLSAg
RVhQRUNUX1NUUkVRKCIiLCBlbXB0eS5wYXR0ZXJuKCkpOwotCi0gIGNvbnN0IFJFIHNpbXBsZSgi
aGVsbG8iKTsKLSAgRVhQRUNUX1NUUkVRKCJoZWxsbyIsIHNpbXBsZS5wYXR0ZXJuKCkpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IFJFJ3MgY29uc3RydWN0b3JzIHJlamVjdCBpbnZhbGlkIHJlZ3VsYXIg
ZXhwcmVzc2lvbnMuCi1URVNUKFJFVGVzdCwgUmVqZWN0c0ludmFsaWRSZWdleCkgewotICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAgY29uc3QgUkUgbm9ybWFsKE5VTEwpOwotICB9LCAi
TlVMTCBpcyBub3QgYSB2YWxpZCBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uIik7Ci0KLSAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIGNvbnN0IFJFIG5vcm1hbCgiLiooXFx3KyIpOwot
ICB9LCAiJygnIGlzIHVuc3VwcG9ydGVkIik7Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
ewotICAgIGNvbnN0IFJFIGludmFsaWQoIl4/Iik7Ci0gIH0sICInPycgY2FuIG9ubHkgZm9sbG93
IGEgcmVwZWF0YWJsZSB0b2tlbiIpOwotfQotCi0vLyBUZXN0cyBSRTo6RnVsbE1hdGNoKCkuCi1U
RVNUKFJFVGVzdCwgRnVsbE1hdGNoV29ya3MpIHsKLSAgY29uc3QgUkUgZW1wdHkoIiIpOwotICBF
WFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKCIiLCBlbXB0eSkpOwotICBFWFBFQ1RfRkFMU0UoUkU6
OkZ1bGxNYXRjaCgiYSIsIGVtcHR5KSk7Ci0KLSAgY29uc3QgUkUgcmUxKCJhIik7Ci0gIEVYUEVD
VF9UUlVFKFJFOjpGdWxsTWF0Y2goImEiLCByZTEpKTsKLQotICBjb25zdCBSRSByZSgiYS4qeiIp
OwotICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKCJheiIsIHJlKSk7Ci0gIEVYUEVDVF9UUlVF
KFJFOjpGdWxsTWF0Y2goImF4eXoiLCByZSkpOwotICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRj
aCgiYmF6IiwgcmUpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goImF6eSIsIHJlKSk7
Ci19Ci0KLS8vIFRlc3RzIFJFOjpQYXJ0aWFsTWF0Y2goKS4KLVRFU1QoUkVUZXN0LCBQYXJ0aWFs
TWF0Y2hXb3JrcykgewotICBjb25zdCBSRSBlbXB0eSgiIik7Ci0gIEVYUEVDVF9UUlVFKFJFOjpQ
YXJ0aWFsTWF0Y2goIiIsIGVtcHR5KSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2go
ImEiLCBlbXB0eSkpOwotCi0gIGNvbnN0IFJFIHJlKCJhLip6Iik7Ci0gIEVYUEVDVF9UUlVFKFJF
OjpQYXJ0aWFsTWF0Y2goImF6IiwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRj
aCgiYXh5eiIsIHJlKSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImJheiIsIHJl
KSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImF6eSIsIHJlKSk7Ci0gIEVYUEVD
VF9GQUxTRShSRTo6UGFydGlhbE1hdGNoKCJ6emEiLCByZSkpOwotfQotCi0jZW5kaWYgIC8vIEdU
RVNUX1VTRVNfUE9TSVhfUkUKLQotI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi1URVNU
KENhcHR1cmVUZXN0LCBDYXB0dXJlc1N0ZG91dCkgewotICBDYXB0dXJlU3Rkb3V0KCk7Ci0gIGZw
cmludGYoc3Rkb3V0LCAiYWJjIik7Ci0gIEVYUEVDVF9TVFJFUSgiYWJjIiwgR2V0Q2FwdHVyZWRT
dGRvdXQoKS5jX3N0cigpKTsKLQotICBDYXB0dXJlU3Rkb3V0KCk7Ci0gIGZwcmludGYoc3Rkb3V0
LCAiZGVmJWNnaGkiLCAnXDAnKTsKLSAgRVhQRUNUX0VRKDo6c3RkOjpzdHJpbmcoImRlZlwwZ2hp
IiwgNyksIDo6c3RkOjpzdHJpbmcoR2V0Q2FwdHVyZWRTdGRvdXQoKSkpOwotfQotCi1URVNUKENh
cHR1cmVUZXN0LCBDYXB0dXJlc1N0ZGVycikgewotICBDYXB0dXJlU3RkZXJyKCk7Ci0gIGZwcmlu
dGYoc3RkZXJyLCAiamtsIik7Ci0gIEVYUEVDVF9TVFJFUSgiamtsIiwgR2V0Q2FwdHVyZWRTdGRl
cnIoKS5jX3N0cigpKTsKLQotICBDYXB0dXJlU3RkZXJyKCk7Ci0gIGZwcmludGYoc3RkZXJyLCAi
amtsJWNtbm8iLCAnXDAnKTsKLSAgRVhQRUNUX0VRKDo6c3RkOjpzdHJpbmcoImprbFwwbW5vIiwg
NyksIDo6c3RkOjpzdHJpbmcoR2V0Q2FwdHVyZWRTdGRlcnIoKSkpOwotfQotCi0vLyBUZXN0cyB0
aGF0IHN0ZG91dCBhbmQgc3RkZXJyIGNhcHR1cmUgZG9uJ3QgaW50ZXJmZXJlIHdpdGggZWFjaCBv
dGhlci4KLVRFU1QoQ2FwdHVyZVRlc3QsIENhcHR1cmVzU3Rkb3V0QW5kU3RkZXJyKSB7Ci0gIENh
cHR1cmVTdGRvdXQoKTsKLSAgQ2FwdHVyZVN0ZGVycigpOwotICBmcHJpbnRmKHN0ZG91dCwgInBx
ciIpOwotICBmcHJpbnRmKHN0ZGVyciwgInN0dSIpOwotICBFWFBFQ1RfU1RSRVEoInBxciIsIEdl
dENhcHR1cmVkU3Rkb3V0KCkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgic3R1IiwgR2V0Q2Fw
dHVyZWRTdGRlcnIoKS5jX3N0cigpKTsKLX0KLQotVEVTVChDYXB0dXJlRGVhdGhUZXN0LCBDYW5u
b3RSZWVudGVyU3Rkb3V0Q2FwdHVyZSkgewotICBDYXB0dXJlU3Rkb3V0KCk7Ci0gIEVYUEVDVF9E
RUFUSF9JRl9TVVBQT1JURUQoQ2FwdHVyZVN0ZG91dCgpOywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiT25seSBvbmUgc3Rkb3V0IGNhcHR1cmVyIGNhbiBleGlzdCBhdCBhIHRpbWUiKTsK
LSAgR2V0Q2FwdHVyZWRTdGRvdXQoKTsKLQotICAvLyBXZSBjYW5ub3QgdGVzdCBzdGRlcnIgY2Fw
dHVyaW5nIHVzaW5nIGRlYXRoIHRlc3RzIGFzIHRoZXkgdXNlIGl0Ci0gIC8vIHRoZW1zZWx2ZXMu
Ci19Ci0KLSNlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLVRFU1QoVGhyZWFk
TG9jYWxUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3JJbml0aWFsaXplc1RvRGVmYXVsdFZhbHVlcykg
ewotICBUaHJlYWRMb2NhbDxpbnQ+IHQxOwotICBFWFBFQ1RfRVEoMCwgdDEuZ2V0KCkpOwotCi0g
IFRocmVhZExvY2FsPHZvaWQqPiB0MjsKLSAgRVhQRUNUX1RSVUUodDIuZ2V0KCkgPT0gTlVMTCk7
Ci19Ci0KLVRFU1QoVGhyZWFkTG9jYWxUZXN0LCBTaW5nbGVQYXJhbUNvbnN0cnVjdG9ySW5pdGlh
bGl6ZXNUb1BhcmFtKSB7Ci0gIFRocmVhZExvY2FsPGludD4gdDEoMTIzKTsKLSAgRVhQRUNUX0VR
KDEyMywgdDEuZ2V0KCkpOwotCi0gIGludCBpID0gMDsKLSAgVGhyZWFkTG9jYWw8aW50Kj4gdDIo
JmkpOwotICBFWFBFQ1RfRVEoJmksIHQyLmdldCgpKTsKLX0KLQotY2xhc3MgTm9EZWZhdWx0Q29u
dHJ1Y3RvciB7Ci0gcHVibGljOgotICBleHBsaWNpdCBOb0RlZmF1bHRDb250cnVjdG9yKGNvbnN0
IGNoYXIqKSB7fQotICBOb0RlZmF1bHRDb250cnVjdG9yKGNvbnN0IE5vRGVmYXVsdENvbnRydWN0
b3ImKSB7fQotfTsKLQotVEVTVChUaHJlYWRMb2NhbFRlc3QsIFZhbHVlRGVmYXVsdENvbnRydWN0
b3JJc05vdFJlcXVpcmVkRm9yUGFyYW1WZXJzaW9uKSB7Ci0gIFRocmVhZExvY2FsPE5vRGVmYXVs
dENvbnRydWN0b3I+IGJhcihOb0RlZmF1bHRDb250cnVjdG9yKCJmb28iKSk7Ci0gIGJhci5wb2lu
dGVyKCk7Ci19Ci0KLVRFU1QoVGhyZWFkTG9jYWxUZXN0LCBHZXRBbmRQb2ludGVyUmV0dXJuU2Ft
ZVZhbHVlKSB7Ci0gIFRocmVhZExvY2FsPFN0cmluZz4gdGhyZWFkX2xvY2FsOwotCi0gIEVYUEVD
VF9FUSh0aHJlYWRfbG9jYWwucG9pbnRlcigpLCAmKHRocmVhZF9sb2NhbC5nZXQoKSkpOwotCi0g
IC8vIFZlcmlmaWVzIHRoZSBjb25kaXRpb24gc3RpbGwgaG9sZHMgYWZ0ZXIgY2FsbGluZyBzZXQu
Ci0gIHRocmVhZF9sb2NhbC5zZXQoImZvbyIpOwotICBFWFBFQ1RfRVEodGhyZWFkX2xvY2FsLnBv
aW50ZXIoKSwgJih0aHJlYWRfbG9jYWwuZ2V0KCkpKTsKLX0KLQotVEVTVChUaHJlYWRMb2NhbFRl
c3QsIFBvaW50ZXJBbmRDb25zdFBvaW50ZXJSZXR1cm5TYW1lVmFsdWUpIHsKLSAgVGhyZWFkTG9j
YWw8U3RyaW5nPiB0aHJlYWRfbG9jYWw7Ci0gIGNvbnN0IFRocmVhZExvY2FsPFN0cmluZz4mIGNv
bnN0X3RocmVhZF9sb2NhbCA9IHRocmVhZF9sb2NhbDsKLQotICBFWFBFQ1RfRVEodGhyZWFkX2xv
Y2FsLnBvaW50ZXIoKSwgY29uc3RfdGhyZWFkX2xvY2FsLnBvaW50ZXIoKSk7Ci0KLSAgdGhyZWFk
X2xvY2FsLnNldCgiZm9vIik7Ci0gIEVYUEVDVF9FUSh0aHJlYWRfbG9jYWwucG9pbnRlcigpLCBj
b25zdF90aHJlYWRfbG9jYWwucG9pbnRlcigpKTsKLX0KLQotI2lmIEdURVNUX0lTX1RIUkVBRFNB
RkUKLQotdm9pZCBBZGRUd28oaW50KiBwYXJhbSkgeyAqcGFyYW0gKz0gMjsgfQotCi1URVNUKFRo
cmVhZFdpdGhQYXJhbVRlc3QsIENvbnN0cnVjdG9yRXhlY3V0ZXNUaHJlYWRGdW5jKSB7Ci0gIGlu
dCBpID0gNDA7Ci0gIFRocmVhZFdpdGhQYXJhbTxpbnQqPiB0aHJlYWQoJkFkZFR3bywgJmksIE5V
TEwpOwotICB0aHJlYWQuSm9pbigpOwotICBFWFBFQ1RfRVEoNDIsIGkpOwotfQotCi1URVNUKE11
dGV4RGVhdGhUZXN0LCBBc3NlcnRIZWxkU2hvdWxkQXNzZXJ0V2hlbk5vdExvY2tlZCkgewotICAv
LyBBc3NlcnRIZWxkKCkgaXMgZmxha3kgb25seSBpbiB0aGUgcHJlc2VuY2Ugb2YgbXVsdGlwbGUg
dGhyZWFkcyBhY2Nlc3NpbmcKLSAgLy8gdGhlIGxvY2suIEluIHRoaXMgY2FzZSwgdGhlIHRlc3Qg
aXMgcm9idXN0LgotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHsKLSAgICBNdXRleCBtOwot
ICAgIHsgTXV0ZXhMb2NrIGxvY2soJm0pOyB9Ci0gICAgbS5Bc3NlcnRIZWxkKCk7Ci0gIH0sCi0g
ICJ0aHJlYWQgLipob2xkIik7Ci19Ci0KLVRFU1QoTXV0ZXhUZXN0LCBBc3NlcnRIZWxkU2hvdWxk
Tm90QXNzZXJ0V2hlbkxvY2tlZCkgewotICBNdXRleCBtOwotICBNdXRleExvY2sgbG9jaygmbSk7
Ci0gIG0uQXNzZXJ0SGVsZCgpOwotfQotCi1jbGFzcyBBdG9taWNDb3VudGVyV2l0aE11dGV4IHsK
LSBwdWJsaWM6Ci0gIGV4cGxpY2l0IEF0b21pY0NvdW50ZXJXaXRoTXV0ZXgoTXV0ZXgqIG11dGV4
KSA6Ci0gICAgdmFsdWVfKDApLCBtdXRleF8obXV0ZXgpLCByYW5kb21fKDQyKSB7fQotCi0gIHZv
aWQgSW5jcmVtZW50KCkgewotICAgIE11dGV4TG9jayBsb2NrKG11dGV4Xyk7Ci0gICAgaW50IHRl
bXAgPSB2YWx1ZV87Ci0gICAgewotICAgICAgLy8gTG9ja2luZyBhIG11dGV4IHB1dHMgdXAgYSBt
ZW1vcnkgYmFycmllciwgcHJldmVudGluZyByZWFkcyBhbmQKLSAgICAgIC8vIHdyaXRlcyB0byB2
YWx1ZV8gcmVhcnJhbmdlZCB3aGVuIG9ic2VydmVkIGZyb20gb3RoZXIgdGhyZWFkcy4KLSAgICAg
IC8vCi0gICAgICAvLyBXZSBjYW5ub3QgdXNlIE11dGV4IGFuZCBNdXRleExvY2sgaGVyZSBvciBy
ZWx5IG9uIHRoZWlyIG1lbW9yeQotICAgICAgLy8gYmFycmllciBmdW5jdGlvbmFsaXR5IGFzIHdl
IGFyZSB0ZXN0aW5nIHRoZW0gaGVyZS4KLSAgICAgIHB0aHJlYWRfbXV0ZXhfdCBtZW1vcnlfYmFy
cmllcl9tdXRleDsKLSAgICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKAotICAgICAgICAg
IHB0aHJlYWRfbXV0ZXhfaW5pdCgmbWVtb3J5X2JhcnJpZXJfbXV0ZXgsIE5VTEwpKTsKLSAgICAg
IEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhfbG9jaygmbWVtb3J5X2Jh
cnJpZXJfbXV0ZXgpKTsKLQotICAgICAgU2xlZXBNaWxsaXNlY29uZHMocmFuZG9tXy5HZW5lcmF0
ZSgzMCkpOwotCi0gICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4
X3VubG9jaygmbWVtb3J5X2JhcnJpZXJfbXV0ZXgpKTsKLSAgICB9Ci0gICAgdmFsdWVfID0gdGVt
cCArIDE7Ci0gIH0KLSAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9Ci0KLSBw
cml2YXRlOgotICB2b2xhdGlsZSBpbnQgdmFsdWVfOwotICBNdXRleCogY29uc3QgbXV0ZXhfOyAg
Ly8gUHJvdGVjdHMgdmFsdWVfLgotICBSYW5kb20gICAgICAgcmFuZG9tXzsKLX07Ci0KLXZvaWQg
Q291bnRpbmdUaHJlYWRGdW5jKHBhaXI8QXRvbWljQ291bnRlcldpdGhNdXRleCosIGludD4gcGFy
YW0pIHsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbS5zZWNvbmQ7ICsraSkKLSAgICAgIHBh
cmFtLmZpcnN0LT5JbmNyZW1lbnQoKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgbXV0ZXggb25s
eSBsZXRzIG9uZSB0aHJlYWQgYXQgYSB0aW1lIHRvIGxvY2sgaXQuCi1URVNUKE11dGV4VGVzdCwg
T25seU9uZVRocmVhZENhbkxvY2tBdEFUaW1lKSB7Ci0gIE11dGV4IG11dGV4OwotICBBdG9taWND
b3VudGVyV2l0aE11dGV4IGxvY2tlZF9jb3VudGVyKCZtdXRleCk7Ci0KLSAgdHlwZWRlZiBUaHJl
YWRXaXRoUGFyYW08cGFpcjxBdG9taWNDb3VudGVyV2l0aE11dGV4KiwgaW50PiA+IFRocmVhZFR5
cGU7Ci0gIGNvbnN0IGludCBrQ3ljbGVDb3VudCA9IDIwOwotICBjb25zdCBpbnQga1RocmVhZENv
dW50ID0gNzsKLSAgc2NvcGVkX3B0cjxUaHJlYWRUeXBlPiBjb3VudGluZ190aHJlYWRzW2tUaHJl
YWRDb3VudF07Ci0gIE5vdGlmaWNhdGlvbiB0aHJlYWRzX2Nhbl9zdGFydDsKLSAgLy8gQ3JlYXRl
cyBhbmQgcnVucyBrVGhyZWFkQ291bnQgdGhyZWFkcyB0aGF0IGluY3JlbWVudCBsb2NrZWRfY291
bnRlcgotICAvLyBrQ3ljbGVDb3VudCB0aW1lcyBlYWNoLgotICBmb3IgKGludCBpID0gMDsgaSA8
IGtUaHJlYWRDb3VudDsgKytpKSB7Ci0gICAgY291bnRpbmdfdGhyZWFkc1tpXS5yZXNldChuZXcg
VGhyZWFkVHlwZSgmQ291bnRpbmdUaHJlYWRGdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWFrZV9wYWlyKCZsb2NrZWRfY291bnRlciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ3ljbGVDb3Vu
dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGhyZWFk
c19jYW5fc3RhcnQpKTsKLSAgfQotICB0aHJlYWRzX2Nhbl9zdGFydC5Ob3RpZnkoKTsKLSAgZm9y
IChpbnQgaSA9IDA7IGkgPCBrVGhyZWFkQ291bnQ7ICsraSkKLSAgICBjb3VudGluZ190aHJlYWRz
W2ldLT5Kb2luKCk7Ci0KLSAgLy8gSWYgdGhlIG11dGV4IGxldHMgbW9yZSB0aGFuIG9uZSB0aHJl
YWQgdG8gaW5jcmVtZW50IHRoZSBjb3VudGVyIGF0IGEKLSAgLy8gdGltZSwgdGhleSBhcmUgbGlr
ZWx5IHRvIGVuY291bnRlciBhIHJhY2UgY29uZGl0aW9uIGFuZCBoYXZlIHNvbWUKLSAgLy8gaW5j
cmVtZW50cyBvdmVyd3JpdHRlbiwgcmVzdWx0aW5nIGluIHRoZSBsb3dlciB0aGVuIGV4cGVjdGVk
IGNvdW50ZXIKLSAgLy8gdmFsdWUuCi0gIEVYUEVDVF9FUShrQ3ljbGVDb3VudCAqIGtUaHJlYWRD
b3VudCwgbG9ja2VkX2NvdW50ZXIudmFsdWUoKSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
Pgotdm9pZCBSdW5Gcm9tVGhyZWFkKHZvaWQgKGZ1bmMpKFQpLCBUIHBhcmFtKSB7Ci0gIFRocmVh
ZFdpdGhQYXJhbTxUPiB0aHJlYWQoZnVuYywgcGFyYW0sIE5VTEwpOwotICB0aHJlYWQuSm9pbigp
OwotfQotCi12b2lkIFJldHJpZXZlVGhyZWFkTG9jYWxWYWx1ZShwYWlyPFRocmVhZExvY2FsPFN0
cmluZz4qLCBTdHJpbmcqPiBwYXJhbSkgewotICAqcGFyYW0uc2Vjb25kID0gcGFyYW0uZmlyc3Qt
PmdldCgpOwotfQotCi1URVNUKFRocmVhZExvY2FsVGVzdCwgUGFyYW1ldGVyaXplZENvbnN0cnVj
dG9yU2V0c0RlZmF1bHQpIHsKLSAgVGhyZWFkTG9jYWw8U3RyaW5nPiB0aHJlYWRfbG9jYWwoImZv
byIpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIsIHRocmVhZF9sb2NhbC5nZXQoKS5jX3N0cigpKTsK
LQotICB0aHJlYWRfbG9jYWwuc2V0KCJiYXIiKTsKLSAgRVhQRUNUX1NUUkVRKCJiYXIiLCB0aHJl
YWRfbG9jYWwuZ2V0KCkuY19zdHIoKSk7Ci0KLSAgU3RyaW5nIHJlc3VsdDsKLSAgUnVuRnJvbVRo
cmVhZCgmUmV0cmlldmVUaHJlYWRMb2NhbFZhbHVlLCBtYWtlX3BhaXIoJnRocmVhZF9sb2NhbCwg
JnJlc3VsdCkpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIsIHJlc3VsdC5jX3N0cigpKTsKLX0KLQot
Ly8gRGVzdHJ1Y3RvclRyYWNrZXIga2VlcHMgdHJhY2sgb2Ygd2hldGhlciBpdHMgaW5zdGFuY2Vz
IGhhdmUgYmVlbgotLy8gZGVzdHJveWVkLgotc3RhdGljIHN0ZDo6dmVjdG9yPGJvb2w+IGdfZGVz
dHJveWVkOwotCi1jbGFzcyBEZXN0cnVjdG9yVHJhY2tlciB7Ci0gcHVibGljOgotICBEZXN0cnVj
dG9yVHJhY2tlcigpIDogaW5kZXhfKEdldE5ld0luZGV4KCkpIHt9Ci0gIERlc3RydWN0b3JUcmFj
a2VyKGNvbnN0IERlc3RydWN0b3JUcmFja2VyJiAvKiByaHMgKi8pCi0gICAgICA6IGluZGV4XyhH
ZXROZXdJbmRleCgpKSB7fQotICB+RGVzdHJ1Y3RvclRyYWNrZXIoKSB7Ci0gICAgLy8gV2UgbmV2
ZXIgYWNjZXNzIGdfZGVzdHJveWVkIGNvbmN1cnJlbnRseSwgc28gd2UgZG9uJ3QgbmVlZCB0bwot
ICAgIC8vIHByb3RlY3QgdGhlIHdyaXRlIG9wZXJhdGlvbiB1bmRlciBhIG11dGV4LgotICAgIGdf
ZGVzdHJveWVkW2luZGV4X10gPSB0cnVlOwotICB9Ci0KLSBwcml2YXRlOgotICBzdGF0aWMgaW50
IEdldE5ld0luZGV4KCkgewotICAgIGdfZGVzdHJveWVkLnB1c2hfYmFjayhmYWxzZSk7Ci0gICAg
cmV0dXJuIGdfZGVzdHJveWVkLnNpemUoKSAtIDE7Ci0gIH0KLSAgY29uc3QgaW50IGluZGV4XzsK
LX07Ci0KLXR5cGVkZWYgVGhyZWFkTG9jYWw8RGVzdHJ1Y3RvclRyYWNrZXI+KiBUaHJlYWRQYXJh
bTsKLQotdm9pZCBDYWxsVGhyZWFkTG9jYWxHZXQoVGhyZWFkUGFyYW0gdGhyZWFkX2xvY2FsKSB7
Ci0gIHRocmVhZF9sb2NhbC0+Z2V0KCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgd2hlbiBhIFRocmVh
ZExvY2FsIG9iamVjdCBkaWVzIGluIGEgdGhyZWFkLCBpdCBkZXN0cm95cwotLy8gdGhlIG1hbmFn
ZWQgb2JqZWN0IGZvciB0aGF0IHRocmVhZC4KLVRFU1QoVGhyZWFkTG9jYWxUZXN0LCBEZXN0cm95
c01hbmFnZWRPYmplY3RGb3JPd25UaHJlYWRXaGVuRHlpbmcpIHsKLSAgZ19kZXN0cm95ZWQuY2xl
YXIoKTsKLQotICB7Ci0gICAgLy8gVGhlIG5leHQgbGluZSBkZWZhdWx0IGNvbnN0cnVjdHMgYSBE
ZXN0cnVjdG9yVHJhY2tlciBvYmplY3QgYXMKLSAgICAvLyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBv
YmplY3RzIG1hbmFnZWQgYnkgdGhyZWFkX2xvY2FsLgotICAgIFRocmVhZExvY2FsPERlc3RydWN0
b3JUcmFja2VyPiB0aHJlYWRfbG9jYWw7Ci0gICAgQVNTRVJUX0VRKDFVLCBnX2Rlc3Ryb3llZC5z
aXplKCkpOwotICAgIEFTU0VSVF9GQUxTRShnX2Rlc3Ryb3llZFswXSk7Ci0KLSAgICAvLyBUaGlz
IGNyZWF0ZXMgYW5vdGhlciBEZXN0cnVjdG9yVHJhY2tlciBvYmplY3QgZm9yIHRoZSBtYWluIHRo
cmVhZC4KLSAgICB0aHJlYWRfbG9jYWwuZ2V0KCk7Ci0gICAgQVNTRVJUX0VRKDJVLCBnX2Rlc3Ry
b3llZC5zaXplKCkpOwotICAgIEFTU0VSVF9GQUxTRShnX2Rlc3Ryb3llZFswXSk7Ci0gICAgQVNT
RVJUX0ZBTFNFKGdfZGVzdHJveWVkWzFdKTsKLSAgfQotCi0gIC8vIE5vdyB0aHJlYWRfbG9jYWwg
aGFzIGRpZWQuICBJdCBzaG91bGQgaGF2ZSBkZXN0cm95ZWQgYm90aCB0aGUKLSAgLy8gZGVmYXVs
dCB2YWx1ZSBzaGFyZWQgYnkgYWxsIHRocmVhZHMgYW5kIHRoZSB2YWx1ZSBmb3IgdGhlIG1haW4K
LSAgLy8gdGhyZWFkLgotICBBU1NFUlRfRVEoMlUsIGdfZGVzdHJveWVkLnNpemUoKSk7Ci0gIEVY
UEVDVF9UUlVFKGdfZGVzdHJveWVkWzBdKTsKLSAgRVhQRUNUX1RSVUUoZ19kZXN0cm95ZWRbMV0p
OwotCi0gIGdfZGVzdHJveWVkLmNsZWFyKCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgd2hlbiBhIHRo
cmVhZCBleGl0cywgdGhlIHRocmVhZC1sb2NhbCBvYmplY3QgZm9yIHRoYXQKLS8vIHRocmVhZCBp
cyBkZXN0cm95ZWQuCi1URVNUKFRocmVhZExvY2FsVGVzdCwgRGVzdHJveXNNYW5hZ2VkT2JqZWN0
QXRUaHJlYWRFeGl0KSB7Ci0gIGdfZGVzdHJveWVkLmNsZWFyKCk7Ci0KLSAgewotICAgIC8vIFRo
ZSBuZXh0IGxpbmUgZGVmYXVsdCBjb25zdHJ1Y3RzIGEgRGVzdHJ1Y3RvclRyYWNrZXIgb2JqZWN0
IGFzCi0gICAgLy8gdGhlIGRlZmF1bHQgdmFsdWUgb2Ygb2JqZWN0cyBtYW5hZ2VkIGJ5IHRocmVh
ZF9sb2NhbC4KLSAgICBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4gdGhyZWFkX2xvY2Fs
OwotICAgIEFTU0VSVF9FUSgxVSwgZ19kZXN0cm95ZWQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRkFM
U0UoZ19kZXN0cm95ZWRbMF0pOwotCi0gICAgLy8gVGhpcyBjcmVhdGVzIGFub3RoZXIgRGVzdHJ1
Y3RvclRyYWNrZXIgb2JqZWN0IGluIHRoZSBuZXcgdGhyZWFkLgotICAgIFRocmVhZFdpdGhQYXJh
bTxUaHJlYWRQYXJhbT4gdGhyZWFkKAotICAgICAgICAmQ2FsbFRocmVhZExvY2FsR2V0LCAmdGhy
ZWFkX2xvY2FsLCBOVUxMKTsKLSAgICB0aHJlYWQuSm9pbigpOwotCi0gICAgLy8gTm93IHRoZSBu
ZXcgdGhyZWFkIGhhcyBleGl0ZWQuICBUaGUgcGVyLXRocmVhZCBvYmplY3QgZm9yIGl0Ci0gICAg
Ly8gc2hvdWxkIGhhdmUgYmVlbiBkZXN0cm95ZWQuCi0gICAgQVNTRVJUX0VRKDJVLCBnX2Rlc3Ry
b3llZC5zaXplKCkpOwotICAgIEFTU0VSVF9GQUxTRShnX2Rlc3Ryb3llZFswXSk7Ci0gICAgQVNT
RVJUX1RSVUUoZ19kZXN0cm95ZWRbMV0pOwotICB9Ci0KLSAgLy8gTm93IHRocmVhZF9sb2NhbCBo
YXMgZGllZC4gIFRoZSBkZWZhdWx0IHZhbHVlIHNob3VsZCBoYXZlIGJlZW4KLSAgLy8gZGVzdHJv
eWVkIHRvby4KLSAgQVNTRVJUX0VRKDJVLCBnX2Rlc3Ryb3llZC5zaXplKCkpOwotICBFWFBFQ1Rf
VFJVRShnX2Rlc3Ryb3llZFswXSk7Ci0gIEVYUEVDVF9UUlVFKGdfZGVzdHJveWVkWzFdKTsKLQot
ICBnX2Rlc3Ryb3llZC5jbGVhcigpOwotfQotCi1URVNUKFRocmVhZExvY2FsVGVzdCwgVGhyZWFk
TG9jYWxNdXRhdGlvbnNBZmZlY3RPbmx5Q3VycmVudFRocmVhZCkgewotICBUaHJlYWRMb2NhbDxT
dHJpbmc+IHRocmVhZF9sb2NhbDsKLSAgdGhyZWFkX2xvY2FsLnNldCgiRm9vIik7Ci0gIEVYUEVD
VF9TVFJFUSgiRm9vIiwgdGhyZWFkX2xvY2FsLmdldCgpLmNfc3RyKCkpOwotCi0gIFN0cmluZyBy
ZXN1bHQ7Ci0gIFJ1bkZyb21UaHJlYWQoJlJldHJpZXZlVGhyZWFkTG9jYWxWYWx1ZSwgbWFrZV9w
YWlyKCZ0aHJlYWRfbG9jYWwsICZyZXN1bHQpKTsKLSAgRVhQRUNUX1RSVUUocmVzdWx0LmNfc3Ry
KCkgPT0gTlVMTCk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFEU0FGRQotCi19ICAv
LyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEzZTkxOTZhYjk2ZTQxM2ZlZjMzMDc1MjRiMThj
OTJmNWVkYWRiMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0LmNjCisr
KyAvZGV2L251bGwKQEAgLTEsMjA4ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJ
bmMuCi0vLyBBbGwgUmlnaHRzIFJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0v
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogbWhldWxlQGdvb2dsZS5jb20gKE1hcmt1
cyBIZXVsZSkKLS8vCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC10ZXN0LXBhcnQuaD4KLQotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXVzaW5nIHRlc3Rpbmc6Ok1lc3NhZ2U7Ci11c2luZyB0
ZXN0aW5nOjpUZXN0OwotdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ7Ci11c2luZyB0ZXN0
aW5nOjpUZXN0UGFydFJlc3VsdEFycmF5OwotCi1uYW1lc3BhY2UgewotCi0vLyBUZXN0cyB0aGUg
VGVzdFBhcnRSZXN1bHQgY2xhc3MuCi0KLS8vIFRoZSB0ZXN0IGZpeHR1cmUgZm9yIHRlc3Rpbmcg
VGVzdFBhcnRSZXN1bHQuCi1jbGFzcyBUZXN0UGFydFJlc3VsdFRlc3QgOiBwdWJsaWMgVGVzdCB7
Ci0gcHJvdGVjdGVkOgotICBUZXN0UGFydFJlc3VsdFRlc3QoKQotICAgICAgOiByMV8oVGVzdFBh
cnRSZXN1bHQ6OmtTdWNjZXNzLCAiZm9vL2Jhci5jYyIsIDEwLCAiU3VjY2VzcyEiKSwKLSAgICAg
ICAgcjJfKFRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlLCAiZm9vL2Jhci5jYyIsIC0x
LCAiRmFpbHVyZSEiKSwKLSAgICAgICAgcjNfKFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJl
LCBOVUxMLCAtMSwgIkZhaWx1cmUhIikge30KLQotICBUZXN0UGFydFJlc3VsdCByMV8sIHIyXywg
cjNfOwotfTsKLQotCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBDb25zdHJ1Y3Rvcldvcmtz
KSB7Ci0gIE1lc3NhZ2UgbWVzc2FnZTsKLSAgbWVzc2FnZSA8PCAic29tZXRoaW5nIGlzIHRlcnJp
Ymx5IHdyb25nIjsKLSAgbWVzc2FnZSA8PCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4odGVzdGlu
Zzo6aW50ZXJuYWw6OmtTdGFja1RyYWNlTWFya2VyKTsKLSAgbWVzc2FnZSA8PCAic29tZSB1bmlt
cG9ydGFudCBzdGFjayB0cmFjZSI7Ci0KLSAgY29uc3QgVGVzdFBhcnRSZXN1bHQgcmVzdWx0KFRl
c3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInNvbWVfZmlsZS5jYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UuR2V0U3RyaW5nKCkuY19zdHIo
KSk7Ci0KLSAgRVhQRUNUX0VRKFRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlLCByZXN1
bHQudHlwZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCJzb21lX2ZpbGUuY2MiLCByZXN1bHQuZmlsZV9u
YW1lKCkpOwotICBFWFBFQ1RfRVEoNDIsIHJlc3VsdC5saW5lX251bWJlcigpKTsKLSAgRVhQRUNU
X1NUUkVRKG1lc3NhZ2UuR2V0U3RyaW5nKCkuY19zdHIoKSwgcmVzdWx0Lm1lc3NhZ2UoKSk7Ci0g
IEVYUEVDVF9TVFJFUSgic29tZXRoaW5nIGlzIHRlcnJpYmx5IHdyb25nIiwgcmVzdWx0LnN1bW1h
cnkoKSk7Ci19Ci0KLVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIFJlc3VsdEFjY2Vzc29yc1dv
cmspIHsKLSAgY29uc3QgVGVzdFBhcnRSZXN1bHQgc3VjY2VzcyhUZXN0UGFydFJlc3VsdDo6a1N1
Y2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUuY2MiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJtZXNzYWdlIik7Ci0gIEVYUEVDVF9UUlVFKHN1Y2Nlc3MucGFzc2VkKCkpOwotICBFWFBF
Q1RfRkFMU0Uoc3VjY2Vzcy5mYWlsZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShzdWNjZXNzLm5vbmZh
dGFsbHlfZmFpbGVkKCkpOwotICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcy5mYXRhbGx5X2ZhaWxlZCgp
KTsKLQotICBjb25zdCBUZXN0UGFydFJlc3VsdCBub25mYXRhbF9mYWlsdXJlKFRlc3RQYXJ0UmVz
dWx0OjprTm9uRmF0YWxGYWlsdXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJmaWxlLmNjIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSIp
OwotICBFWFBFQ1RfRkFMU0Uobm9uZmF0YWxfZmFpbHVyZS5wYXNzZWQoKSk7Ci0gIEVYUEVDVF9U
UlVFKG5vbmZhdGFsX2ZhaWx1cmUuZmFpbGVkKCkpOwotICBFWFBFQ1RfVFJVRShub25mYXRhbF9m
YWlsdXJlLm5vbmZhdGFsbHlfZmFpbGVkKCkpOwotICBFWFBFQ1RfRkFMU0Uobm9uZmF0YWxfZmFp
bHVyZS5mYXRhbGx5X2ZhaWxlZCgpKTsKLQotICBjb25zdCBUZXN0UGFydFJlc3VsdCBmYXRhbF9m
YWlsdXJlKFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJmaWxlLmNjIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVz
c2FnZSIpOwotICBFWFBFQ1RfRkFMU0UoZmF0YWxfZmFpbHVyZS5wYXNzZWQoKSk7Ci0gIEVYUEVD
VF9UUlVFKGZhdGFsX2ZhaWx1cmUuZmFpbGVkKCkpOwotICBFWFBFQ1RfRkFMU0UoZmF0YWxfZmFp
bHVyZS5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKLSAgRVhQRUNUX1RSVUUoZmF0YWxfZmFpbHVyZS5m
YXRhbGx5X2ZhaWxlZCgpKTsKLX0KLQotLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6OnR5cGUoKS4K
LVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIHR5cGUpIHsKLSAgRVhQRUNUX0VRKFRlc3RQYXJ0
UmVzdWx0OjprU3VjY2VzcywgcjFfLnR5cGUoKSk7Ci0gIEVYUEVDVF9FUShUZXN0UGFydFJlc3Vs
dDo6a05vbkZhdGFsRmFpbHVyZSwgcjJfLnR5cGUoKSk7Ci0gIEVYUEVDVF9FUShUZXN0UGFydFJl
c3VsdDo6a0ZhdGFsRmFpbHVyZSwgcjNfLnR5cGUoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQYXJ0
UmVzdWx0OjpmaWxlX25hbWUoKS4KLVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIGZpbGVfbmFt
ZSkgewotICBFWFBFQ1RfU1RSRVEoImZvby9iYXIuY2MiLCByMV8uZmlsZV9uYW1lKCkpOwotICBF
WFBFQ1RfU1RSRVEoTlVMTCwgcjNfLmZpbGVfbmFtZSgpKTsKLX0KLQotLy8gVGVzdHMgVGVzdFBh
cnRSZXN1bHQ6OmxpbmVfbnVtYmVyKCkuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBsaW5l
X251bWJlcikgewotICBFWFBFQ1RfRVEoMTAsIHIxXy5saW5lX251bWJlcigpKTsKLSAgRVhQRUNU
X0VRKC0xLCByMl8ubGluZV9udW1iZXIoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0
OjptZXNzYWdlKCkuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBtZXNzYWdlKSB7Ci0gIEVY
UEVDVF9TVFJFUSgiU3VjY2VzcyEiLCByMV8ubWVzc2FnZSgpKTsKLX0KLQotLy8gVGVzdHMgVGVz
dFBhcnRSZXN1bHQ6OnBhc3NlZCgpLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgUGFzc2Vk
KSB7Ci0gIEVYUEVDVF9UUlVFKHIxXy5wYXNzZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShyMl8ucGFz
c2VkKCkpOwotICBFWFBFQ1RfRkFMU0UocjNfLnBhc3NlZCgpKTsKLX0KLQotLy8gVGVzdHMgVGVz
dFBhcnRSZXN1bHQ6OmZhaWxlZCgpLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgRmFpbGVk
KSB7Ci0gIEVYUEVDVF9GQUxTRShyMV8uZmFpbGVkKCkpOwotICBFWFBFQ1RfVFJVRShyMl8uZmFp
bGVkKCkpOwotICBFWFBFQ1RfVFJVRShyM18uZmFpbGVkKCkpOwotfQotCi0vLyBUZXN0cyBUZXN0
UGFydFJlc3VsdDo6ZmF0YWxseV9mYWlsZWQoKS4KLVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3Qs
IEZhdGFsbHlGYWlsZWQpIHsKLSAgRVhQRUNUX0ZBTFNFKHIxXy5mYXRhbGx5X2ZhaWxlZCgpKTsK
LSAgRVhQRUNUX0ZBTFNFKHIyXy5mYXRhbGx5X2ZhaWxlZCgpKTsKLSAgRVhQRUNUX1RSVUUocjNf
LmZhdGFsbHlfZmFpbGVkKCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6bm9uZmF0
YWxseV9mYWlsZWQoKS4KLVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIE5vbmZhdGFsbHlGYWls
ZWQpIHsKLSAgRVhQRUNUX0ZBTFNFKHIxXy5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKLSAgRVhQRUNU
X1RSVUUocjJfLm5vbmZhdGFsbHlfZmFpbGVkKCkpOwotICBFWFBFQ1RfRkFMU0UocjNfLm5vbmZh
dGFsbHlfZmFpbGVkKCkpOwotfQotCi0vLyBUZXN0cyB0aGUgVGVzdFBhcnRSZXN1bHRBcnJheSBj
bGFzcy4KLQotY2xhc3MgVGVzdFBhcnRSZXN1bHRBcnJheVRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0g
cHJvdGVjdGVkOgotICBUZXN0UGFydFJlc3VsdEFycmF5VGVzdCgpCi0gICAgICA6IHIxXyhUZXN0
UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwgImZvby9iYXIuY2MiLCAtMSwgIkZhaWx1cmUg
MSIpLAotICAgICAgICByMl8oVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsICJmb28vYmFy
LmNjIiwgLTEsICJGYWlsdXJlIDIiKSB7fQotCi0gIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IHIxXywg
cjJfOwotfTsKLQotLy8gVGVzdHMgdGhhdCBUZXN0UGFydFJlc3VsdEFycmF5IGluaXRpYWxseSBo
YXMgc2l6ZSAwLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0LCBJbml0aWFsU2l6ZUlz
WmVybykgewotICBUZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7Ci0gIEVYUEVDVF9FUSgwLCBy
ZXN1bHRzLnNpemUoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVGVzdFBhcnRSZXN1bHRBcnJheSBj
b250YWlucyB0aGUgZ2l2ZW4gVGVzdFBhcnRSZXN1bHQKLS8vIGFmdGVyIG9uZSBBcHBlbmQoKSBv
cGVyYXRpb24uCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRBcnJheVRlc3QsIENvbnRhaW5zR2l2ZW5S
ZXN1bHRBZnRlckFwcGVuZCkgewotICBUZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7Ci0gIHJl
c3VsdHMuQXBwZW5kKHIxXyk7Ci0gIEVYUEVDVF9FUSgxLCByZXN1bHRzLnNpemUoKSk7Ci0gIEVY
UEVDVF9TVFJFUSgiRmFpbHVyZSAxIiwgcmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgwKS5tZXNz
YWdlKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFRlc3RQYXJ0UmVzdWx0QXJyYXkgY29udGFpbnMg
dGhlIGdpdmVuIFRlc3RQYXJ0UmVzdWx0cwotLy8gYWZ0ZXIgdHdvIEFwcGVuZCgpIG9wZXJhdGlv
bnMuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRBcnJheVRlc3QsIENvbnRhaW5zR2l2ZW5SZXN1bHRz
QWZ0ZXJUd29BcHBlbmRzKSB7Ci0gIFRlc3RQYXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsKLSAgcmVz
dWx0cy5BcHBlbmQocjFfKTsKLSAgcmVzdWx0cy5BcHBlbmQocjJfKTsKLSAgRVhQRUNUX0VRKDIs
IHJlc3VsdHMuc2l6ZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCJGYWlsdXJlIDEiLCByZXN1bHRzLkdl
dFRlc3RQYXJ0UmVzdWx0KDApLm1lc3NhZ2UoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiRmFpbHVyZSAy
IiwgcmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgxKS5tZXNzYWdlKCkpOwotfQotCi10eXBlZGVm
IFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0IFRlc3RQYXJ0UmVzdWx0QXJyYXlEZWF0aFRlc3Q7Ci0K
LS8vIFRlc3RzIHRoYXQgdGhlIHByb2dyYW0gZGllcyB3aGVuIEdldFRlc3RQYXJ0UmVzdWx0KCkg
aXMgY2FsbGVkIHdpdGgKLS8vIGFuIGludmFsaWQgaW5kZXguCi1URVNUX0YoVGVzdFBhcnRSZXN1
bHRBcnJheURlYXRoVGVzdCwgRGllc1doZW5JbmRleElzT3V0T2ZCb3VuZCkgewotICBUZXN0UGFy
dFJlc3VsdEFycmF5IHJlc3VsdHM7Ci0gIHJlc3VsdHMuQXBwZW5kKHIxXyk7Ci0KLSAgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRChyZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KC0xKSwgIiIpOwot
ICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMSks
ICIiKTsKLX0KLQotLy8gVE9ETyhtaGV1bGVAZ29vZ2xlLmNvbSk6IEFkZCBhIHRlc3QgZm9yIHRo
ZSBjbGFzcyBIYXNOZXdGYXRhbEZhaWx1cmVIZWxwZXIuCi0KLX0gIC8vIG5hbWVzcGFjZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10dXBsZV90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10dXBsZV90ZXN0LmNjCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzJmNzBiM2Q0ZTkwNzBmNDU5Njg2MjViM2ZmOTdj
Mzk4NDc1N2Q3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHVwbGVfdGVzdC5jYworKysgL2Rl
di9udWxsCkBAIC0xLDMyMCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4K
LS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KQotCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaD4KLSNpbmNsdWRlIDx1
dGlsaXR5PgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLW5hbWVzcGFjZSB7Ci0KLXVzaW5n
IDo6c3RkOjp0cjE6OmdldDsKLXVzaW5nIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGU7Ci11c2luZyA6
OnN0ZDo6dHIxOjp0dXBsZTsKLXVzaW5nIDo6c3RkOjp0cjE6OnR1cGxlX2VsZW1lbnQ7Ci11c2lu
ZyA6OnN0ZDo6dHIxOjp0dXBsZV9zaXplOwotdXNpbmcgOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRU
eXBlRXE7Ci0KLS8vIFRlc3RzIHRoYXQgdHVwbGVfZWxlbWVudDxLLCB0dXBsZTxUMCwgVDEsIC4u
LiwgVE4+ID46OnR5cGUgcmV0dXJucyBUSy4KLVRFU1QodHVwbGVfZWxlbWVudF9UZXN0LCBSZXR1
cm5zRWxlbWVudFR5cGUpIHsKLSAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCwgdHVwbGVfZWxlbWVu
dDwwLCB0dXBsZTxpbnQsIGNoYXI+ID46OnR5cGU+KCk7Ci0gIFN0YXRpY0Fzc2VydFR5cGVFcTxp
bnQmLCB0dXBsZV9lbGVtZW50PDEsIHR1cGxlPGRvdWJsZSwgaW50Jj4gPjo6dHlwZT4oKTsKLSAg
U3RhdGljQXNzZXJ0VHlwZUVxPGJvb2wsIHR1cGxlX2VsZW1lbnQ8MiwgdHVwbGU8ZG91YmxlLCBp
bnQsIGJvb2w+ID46OnR5cGU+KCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdHVwbGVfc2l6ZTxUPjo6
dmFsdWUgZ2l2ZXMgdGhlIG51bWJlciBvZiBmaWVsZHMgaW4gdHVwbGUKLS8vIHR5cGUgVC4KLVRF
U1QodHVwbGVfc2l6ZV9UZXN0LCBSZXR1cm5zTnVtYmVyT2ZGaWVsZHMpIHsKLSAgRVhQRUNUX0VR
KDAsICt0dXBsZV9zaXplPHR1cGxlPD4gPjo6dmFsdWUpOwotICBFWFBFQ1RfRVEoMSwgK3R1cGxl
X3NpemU8dHVwbGU8dm9pZCo+ID46OnZhbHVlKTsKLSAgRVhQRUNUX0VRKDEsICt0dXBsZV9zaXpl
PHR1cGxlPGNoYXI+ID46OnZhbHVlKTsKLSAgRVhQRUNUX0VRKDEsICsodHVwbGVfc2l6ZTx0dXBs
ZTx0dXBsZTxpbnQsIGRvdWJsZT4gPiA+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfRVEoMiwgKyh0dXBs
ZV9zaXplPHR1cGxlPGludCYsIGNvbnN0IGNoYXI+ID46OnZhbHVlKSk7Ci0gIEVYUEVDVF9FUSgz
LCArKHR1cGxlX3NpemU8dHVwbGU8Y2hhciosIHZvaWQsIGNvbnN0IGJvb2wmPiA+Ojp2YWx1ZSkp
OwotfQotCi0vLyBUZXN0cyBjb21wYXJpbmcgYSB0dXBsZSB3aXRoIGl0c2VsZi4KLVRFU1QoQ29t
cGFyaXNvblRlc3QsIENvbXBhcmVzV2l0aFNlbGYpIHsKLSAgY29uc3QgdHVwbGU8aW50LCBjaGFy
LCBib29sPiBhKDUsICdhJywgZmFsc2UpOwotCi0gIEVYUEVDVF9UUlVFKGEgPT0gYSk7Ci0gIEVY
UEVDVF9GQUxTRShhICE9IGEpOwotfQotCi0vLyBUZXN0cyBjb21wYXJpbmcgdHdvIHR1cGxlcyB3
aXRoIHRoZSBzYW1lIHZhbHVlLgotVEVTVChDb21wYXJpc29uVGVzdCwgQ29tcGFyZXNFcXVhbFR1
cGxlcykgewotICBjb25zdCB0dXBsZTxpbnQsIGJvb2w+IGEoNSwgdHJ1ZSksIGIoNSwgdHJ1ZSk7
Ci0KLSAgRVhQRUNUX1RSVUUoYSA9PSBiKTsKLSAgRVhQRUNUX0ZBTFNFKGEgIT0gYik7Ci19Ci0K
LS8vIFRlc3RzIGNvbXBhcmluZyB0d28gZGlmZmVyZW50IHR1cGxlcyB0aGF0IGhhdmUgbm8gcmVm
ZXJlbmNlIGZpZWxkcy4KLVRFU1QoQ29tcGFyaXNvblRlc3QsIENvbXBhcmVzVW5lcXVhbFR1cGxl
c1dpdGhvdXRSZWZlcmVuY2VGaWVsZHMpIHsKLSAgdHlwZWRlZiB0dXBsZTxjb25zdCBpbnQsIGNo
YXI+IEZvb1R1cGxlOwotCi0gIGNvbnN0IEZvb1R1cGxlIGEoMCwgJ3gnKTsKLSAgY29uc3QgRm9v
VHVwbGUgYigxLCAnYScpOwotCi0gIEVYUEVDVF9UUlVFKGEgIT0gYik7Ci0gIEVYUEVDVF9GQUxT
RShhID09IGIpOwotCi0gIGNvbnN0IEZvb1R1cGxlIGMoMSwgJ2InKTsKLQotICBFWFBFQ1RfVFJV
RShiICE9IGMpOwotICBFWFBFQ1RfRkFMU0UoYiA9PSBjKTsKLX0KLQotLy8gVGVzdHMgY29tcGFy
aW5nIHR3byBkaWZmZXJlbnQgdHVwbGVzIHRoYXQgaGF2ZSByZWZlcmVuY2UgZmllbGRzLgotVEVT
VChDb21wYXJpc29uVGVzdCwgQ29tcGFyZXNVbmVxdWFsVHVwbGVzV2l0aFJlZmVyZW5jZUZpZWxk
cykgewotICB0eXBlZGVmIHR1cGxlPGludCYsIGNvbnN0IGNoYXImPiBGb29UdXBsZTsKLQotICBp
bnQgaSA9IDU7Ci0gIGNvbnN0IGNoYXIgY2ggPSAnYSc7Ci0gIGNvbnN0IEZvb1R1cGxlIGEoaSwg
Y2gpOwotCi0gIGludCBqID0gNjsKLSAgY29uc3QgRm9vVHVwbGUgYihqLCBjaCk7Ci0KLSAgRVhQ
RUNUX1RSVUUoYSAhPSBiKTsKLSAgRVhQRUNUX0ZBTFNFKGEgPT0gYik7Ci0KLSAgaiA9IDU7Ci0g
IGNvbnN0IGNoYXIgY2gyID0gJ2InOwotICBjb25zdCBGb29UdXBsZSBjKGosIGNoMik7Ci0KLSAg
RVhQRUNUX1RSVUUoYiAhPSBjKTsKLSAgRVhQRUNUX0ZBTFNFKGIgPT0gYyk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgYSB0dXBsZSBmaWVsZCB3aXRoIGEgcmVmZXJlbmNlIHR5cGUgaXMgYW4gYWxpYXMg
b2YgdGhlCi0vLyB2YXJpYWJsZSBpdCdzIHN1cHBvc2VkIHRvIHJlZmVyZW5jZS4KLVRFU1QoUmVm
ZXJlbmNlRmllbGRUZXN0LCBJc0FsaWFzT2ZSZWZlcmVuY2VkVmFyaWFibGUpIHsKLSAgaW50IG4g
PSAwOwotICB0dXBsZTxib29sLCBpbnQmPiB0KHRydWUsIG4pOwotCi0gIG4gPSAxOwotICBFWFBF
Q1RfRVEobiwgZ2V0PDE+KHQpKQotICAgICAgPDwgIkNoYW5naW5nIGEgdW5kZXJseWluZyB2YXJp
YWJsZSBzaG91bGQgdXBkYXRlIHRoZSByZWZlcmVuY2UgZmllbGQuIjsKLQotICAvLyBNYWtlcyBz
dXJlIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgZG8gYW55dGhpbmcgZnVubnkgd2l0
aAotICAvLyB0aGUgJiBvcGVyYXRvciBmb3IgdGhlIHJldHVybiB0eXBlIG9mIGdldDw+KCkuCi0g
IEVYUEVDVF9FUSgmbiwgJihnZXQ8MT4odCkpKQotICAgICAgPDwgIlRoZSBhZGRyZXNzIG9mIGEg
cmVmZXJlbmNlIGZpZWxkIHNob3VsZCBlcXVhbCB0aGUgYWRkcmVzcyBvZiAiCi0gICAgICA8PCAi
dGhlIHVuZGVybHlpbmcgdmFyaWFibGUuIjsKLQotICBnZXQ8MT4odCkgPSAyOwotICBFWFBFQ1Rf
RVEoMiwgbikKLSAgICAgIDw8ICJDaGFuZ2luZyBhIHJlZmVyZW5jZSBmaWVsZCBzaG91bGQgdXBk
YXRlIHRoZSB1bmRlcmx5aW5nIHZhcmlhYmxlLiI7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdHVwbGUn
cyBkZWZhdWx0IGNvbnN0cnVjdG9yIGRlZmF1bHQgaW5pdGlhbGl6ZXMgZWFjaCBmaWVsZC4KLS8v
IFRoaXMgdGVzdCBuZWVkcyB0byBjb21waWxlIHdpdGhvdXQgZ2VuZXJhdGluZyB3YXJuaW5ncy4K
LVRFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvckRlZmF1bHRJbml0
aWFsaXplc0VhY2hGaWVsZCkgewotICAvLyBUaGUgVFIxIHJlcG9ydCByZXF1aXJlcyB0aGF0IHR1
cGxlJ3MgZGVmYXVsdCBjb25zdHJ1Y3RvciBkZWZhdWx0Ci0gIC8vIGluaXRpYWxpemVzIGVhY2gg
ZmllbGQsIGV2ZW4gaWYgaXQncyBhIHByaW1pdGl2ZSB0eXBlLiAgSWYgdGhlCi0gIC8vIGltcGxl
bWVudGF0aW9uIGZvcmdldHMgdG8gZG8gdGhpcywgdGhpcyB0ZXN0IHdpbGwgY2F0Y2ggaXQgYnkK
LSAgLy8gZ2VuZXJhdGluZyB3YXJuaW5ncyBhYm91dCB1c2luZyB1bmluaXRpYWxpemVkIHZhcmlh
YmxlcyAoYXNzdW1pbmcKLSAgLy8gYSBkZWNlbnQgY29tcGlsZXIpLgotCi0gIHR1cGxlPD4gZW1w
dHk7Ci0KLSAgdHVwbGU8aW50PiBhMSwgYjE7Ci0gIGIxID0gYTE7Ci0gIEVYUEVDVF9FUSgwLCBn
ZXQ8MD4oYjEpKTsKLQotICB0dXBsZTxpbnQsIGRvdWJsZT4gYTIsIGIyOwotICBiMiA9IGEyOwot
ICBFWFBFQ1RfRVEoMCwgZ2V0PDA+KGIyKSk7Ci0gIEVYUEVDVF9FUSgwLjAsIGdldDwxPihiMikp
OwotCi0gIHR1cGxlPGRvdWJsZSwgY2hhciwgYm9vbCo+IGEzLCBiMzsKLSAgYjMgPSBhMzsKLSAg
RVhQRUNUX0VRKDAuMCwgZ2V0PDA+KGIzKSk7Ci0gIEVYUEVDVF9FUSgnXDAnLCBnZXQ8MT4oYjMp
KTsKLSAgRVhQRUNUX1RSVUUoZ2V0PDI+KGIzKSA9PSBOVUxMKTsKLQotICB0dXBsZTxpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQ+IGExMCwgYjEwOwotICBi
MTAgPSBhMTA7Ci0gIEVYUEVDVF9FUSgwLCBnZXQ8MD4oYjEwKSk7Ci0gIEVYUEVDVF9FUSgwLCBn
ZXQ8MT4oYjEwKSk7Ci0gIEVYUEVDVF9FUSgwLCBnZXQ8Mj4oYjEwKSk7Ci0gIEVYUEVDVF9FUSgw
LCBnZXQ8Mz4oYjEwKSk7Ci0gIEVYUEVDVF9FUSgwLCBnZXQ8ND4oYjEwKSk7Ci0gIEVYUEVDVF9F
USgwLCBnZXQ8NT4oYjEwKSk7Ci0gIEVYUEVDVF9FUSgwLCBnZXQ8Nj4oYjEwKSk7Ci0gIEVYUEVD
VF9FUSgwLCBnZXQ8Nz4oYjEwKSk7Ci0gIEVYUEVDVF9FUSgwLCBnZXQ8OD4oYjEwKSk7Ci0gIEVY
UEVDVF9FUSgwLCBnZXQ8OT4oYjEwKSk7Ci19Ci0KLS8vIFRlc3RzIGNvbnN0cnVjdGluZyBhIHR1
cGxlIGZyb20gaXRzIGZpZWxkcy4KLVRFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3QsIENvbnN0cnVj
dHNGcm9tRmllbGRzKSB7Ci0gIGludCBuID0gMTsKLSAgLy8gUmVmZXJlbmNlIGZpZWxkLgotICB0
dXBsZTxpbnQmPiBhKG4pOwotICBFWFBFQ1RfRVEoJm4sICYoZ2V0PDA+KGEpKSk7Ci0KLSAgLy8g
Tm9uLXJlZmVyZW5jZSBmaWVsZHMuCi0gIHR1cGxlPGludCwgY2hhcj4gYig1LCAnYScpOwotICBF
WFBFQ1RfRVEoNSwgZ2V0PDA+KGIpKTsKLSAgRVhQRUNUX0VRKCdhJywgZ2V0PDE+KGIpKTsKLQot
ICAvLyBDb25zdCByZWZlcmVuY2UgZmllbGQuCi0gIGNvbnN0IGludCBtID0gMjsKLSAgdHVwbGU8
Ym9vbCwgY29uc3QgaW50Jj4gYyh0cnVlLCBtKTsKLSAgRVhQRUNUX1RSVUUoZ2V0PDA+KGMpKTsK
LSAgRVhQRUNUX0VRKCZtLCAmKGdldDwxPihjKSkpOwotfQotCi0vLyBUZXN0cyB0dXBsZSdzIGNv
cHkgY29uc3RydWN0b3IuCi1URVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBDb3B5Q29uc3RydWN0
b3IpIHsKLSAgdHVwbGU8ZG91YmxlLCBib29sPiBhKDAuMCwgdHJ1ZSk7Ci0gIHR1cGxlPGRvdWJs
ZSwgYm9vbD4gYihhKTsKLQotICBFWFBFQ1RfRE9VQkxFX0VRKDAuMCwgZ2V0PDA+KGIpKTsKLSAg
RVhQRUNUX1RSVUUoZ2V0PDE+KGIpKTsKLX0KLQotLy8gVGVzdHMgY29uc3RydWN0aW5nIGEgdHVw
bGUgZnJvbSBhbm90aGVyIHR1cGxlIHRoYXQgaGFzIGEgY29tcGF0aWJsZQotLy8gYnV0IGRpZmZl
cmVudCB0eXBlLgotVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgQ29uc3RydWN0c0Zyb21EaWZm
ZXJlbnRUdXBsZVR5cGUpIHsKLSAgdHVwbGU8aW50LCBpbnQsIGNoYXI+IGEoMCwgMSwgJ2EnKTsK
LSAgdHVwbGU8ZG91YmxlLCBsb25nLCBpbnQ+IGIoYSk7Ci0KLSAgRVhQRUNUX0RPVUJMRV9FUSgw
LjAsIGdldDwwPihiKSk7Ci0gIEVYUEVDVF9FUSgxLCBnZXQ8MT4oYikpOwotICBFWFBFQ1RfRVEo
J2EnLCBnZXQ8Mj4oYikpOwotfQotCi0vLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSAyLXR1cGxlIGZy
b20gYW4gc3RkOjpwYWlyLgotVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgQ29uc3RydWN0c0Zy
b21QYWlyKSB7Ci0gIDo6c3RkOjpwYWlyPGludCwgY2hhcj4gYSgxLCAnYScpOwotICB0dXBsZTxp
bnQsIGNoYXI+IGIoYSk7Ci0gIHR1cGxlPGludCwgY29uc3QgY2hhciY+IGMoYSk7Ci19Ci0KLS8v
IFRlc3RzIGFzc2lnbmluZyBhIHR1cGxlIHRvIGFub3RoZXIgdHVwbGUgd2l0aCB0aGUgc2FtZSB0
eXBlLgotVEVTVChUdXBsZUFzc2lnbm1lbnRUZXN0LCBBc3NpZ25zVG9TYW1lVHVwbGVUeXBlKSB7
Ci0gIGNvbnN0IHR1cGxlPGludCwgbG9uZz4gYSg1LCA3TCk7Ci0gIHR1cGxlPGludCwgbG9uZz4g
YjsKLSAgYiA9IGE7Ci0gIEVYUEVDVF9FUSg1LCBnZXQ8MD4oYikpOwotICBFWFBFQ1RfRVEoN0ws
IGdldDwxPihiKSk7Ci19Ci0KLS8vIFRlc3RzIGFzc2lnbmluZyBhIHR1cGxlIHRvIGFub3RoZXIg
dHVwbGUgd2l0aCBhIGRpZmZlcmVudCBidXQKLS8vIGNvbXBhdGlibGUgdHlwZS4KLVRFU1QoVHVw
bGVBc3NpZ25tZW50VGVzdCwgQXNzaWduc1RvRGlmZmVyZW50VHVwbGVUeXBlKSB7Ci0gIGNvbnN0
IHR1cGxlPGludCwgbG9uZywgYm9vbD4gYSgxLCA3TCwgdHJ1ZSk7Ci0gIHR1cGxlPGxvbmcsIGlu
dCwgYm9vbD4gYjsKLSAgYiA9IGE7Ci0gIEVYUEVDVF9FUSgxTCwgZ2V0PDA+KGIpKTsKLSAgRVhQ
RUNUX0VRKDcsIGdldDwxPihiKSk7Ci0gIEVYUEVDVF9UUlVFKGdldDwyPihiKSk7Ci19Ci0KLS8v
IFRlc3RzIGFzc2lnbmluZyBhbiBzdGQ6OnBhaXIgdG8gYSAyLXR1cGxlLgotVEVTVChUdXBsZUFz
c2lnbm1lbnRUZXN0LCBBc3NpZ25zRnJvbVBhaXIpIHsKLSAgY29uc3QgOjpzdGQ6OnBhaXI8aW50
LCBib29sPiBhKDUsIHRydWUpOwotICB0dXBsZTxpbnQsIGJvb2w+IGI7Ci0gIGIgPSBhOwotICBF
WFBFQ1RfRVEoNSwgZ2V0PDA+KGIpKTsKLSAgRVhQRUNUX1RSVUUoZ2V0PDE+KGIpKTsKLQotICB0
dXBsZTxsb25nLCBib29sPiBjOwotICBjID0gYTsKLSAgRVhQRUNUX0VRKDVMLCBnZXQ8MD4oYykp
OwotICBFWFBFQ1RfVFJVRShnZXQ8MT4oYykpOwotfQotCi0vLyBBIGZpeHR1cmUgZm9yIHRlc3Rp
bmcgYmlnIHR1cGxlcy4KLWNsYXNzIEJpZ1R1cGxlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKLSBwcm90ZWN0ZWQ6Ci0gIHR5cGVkZWYgdHVwbGU8aW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50PiBCaWdUdXBsZTsKLQotICBCaWdUdXBsZVRlc3QoKSA6
Ci0gICAgICBhXygxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyKSwKLSAgICAgIGJfKDEsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMpIHt9Ci0KLSAgQmlnVHVwbGUgYV8sIGJfOwotfTsKLQot
Ly8gVGVzdHMgY29uc3RydWN0aW5nIGJpZyB0dXBsZXMuCi1URVNUX0YoQmlnVHVwbGVUZXN0LCBD
b25zdHJ1Y3Rpb24pIHsKLSAgQmlnVHVwbGUgYTsKLSAgQmlnVHVwbGUgYihiXyk7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgZ2V0PE4+KHQpIHJldHVybnMgdGhlIE4tdGggKDAtYmFzZWQpIGZpZWxkIG9m
IHR1cGxlIHQuCi1URVNUX0YoQmlnVHVwbGVUZXN0LCBnZXQpIHsKLSAgRVhQRUNUX0VRKDEsIGdl
dDwwPihhXykpOwotICBFWFBFQ1RfRVEoMiwgZ2V0PDk+KGFfKSk7Ci0KLSAgLy8gVGVzdHMgdGhh
dCBnZXQoKSB3b3JrcyBvbiBhIGNvbnN0IHR1cGxlIHRvby4KLSAgY29uc3QgQmlnVHVwbGUgYShh
Xyk7Ci0gIEVYUEVDVF9FUSgxLCBnZXQ8MD4oYSkpOwotICBFWFBFQ1RfRVEoMiwgZ2V0PDk+KGEp
KTsKLX0KLQotLy8gVGVzdHMgY29tcGFyaW5nIGJpZyB0dXBsZXMuCi1URVNUX0YoQmlnVHVwbGVU
ZXN0LCBDb21wYXJpc29ucykgewotICBFWFBFQ1RfVFJVRShhXyA9PSBhXyk7Ci0gIEVYUEVDVF9G
QUxTRShhXyAhPSBhXyk7Ci0KLSAgRVhQRUNUX1RSVUUoYV8gIT0gYl8pOwotICBFWFBFQ1RfRkFM
U0UoYV8gPT0gYl8pOwotfQotCi1URVNUKE1ha2VUdXBsZVRlc3QsIFdvcmtzRm9yU2NhbGFyVHlw
ZXMpIHsKLSAgdHVwbGU8Ym9vbCwgaW50PiBhOwotICBhID0gbWFrZV90dXBsZSh0cnVlLCA1KTsK
LSAgRVhQRUNUX1RSVUUoZ2V0PDA+KGEpKTsKLSAgRVhQRUNUX0VRKDUsIGdldDwxPihhKSk7Ci0K
LSAgdHVwbGU8Y2hhciwgaW50LCBsb25nPiBiOwotICBiID0gbWFrZV90dXBsZSgnYScsICdiJywg
NSk7Ci0gIEVYUEVDVF9FUSgnYScsIGdldDwwPihiKSk7Ci0gIEVYUEVDVF9FUSgnYicsIGdldDwx
PihiKSk7Ci0gIEVYUEVDVF9FUSg1LCBnZXQ8Mj4oYikpOwotfQotCi1URVNUKE1ha2VUdXBsZVRl
c3QsIFdvcmtzRm9yUG9pbnRlcnMpIHsKLSAgaW50IGFbXSA9IHsgMSwgMiwgMywgNCB9OwotICBj
b25zdCBjaGFyKiBjb25zdCBzdHIgPSAiaGkiOwotICBpbnQqIGNvbnN0IHAgPSBhOwotCi0gIHR1
cGxlPGNvbnN0IGNoYXIqLCBpbnQqPiB0OwotICB0ID0gbWFrZV90dXBsZShzdHIsIHApOwotICBF
WFBFQ1RfRVEoc3RyLCBnZXQ8MD4odCkpOwotICBFWFBFQ1RfRVEocCwgZ2V0PDE+KHQpKTsKLX0K
LQotfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MKaW5kZXggNzlhOGE4N2RjZmRiZGU1M2MxZTBk
OGM2ZDExYTk4NjkyMmIwMmZmOC4uZWQ5NjQyMWM2N2NhOGEyZmIzOGYzZDg4OTYwMjMxZWYyMmJl
YTZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBl
ZC10ZXN0Ml90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Qt
dHlwZWQtdGVzdDJfdGVzdC5jYwpAQCAtMjYsMTMgKzI2LDEyIEBACiAvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQorCiAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJ0
ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oIgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Cisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2lmIEdURVNUX0hBU19UWVBFRF9URVNUX1AKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0
X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3Rf
dGVzdC5jYwppbmRleCBmMmMzOTcyMzEwMTc3OWU3NzE4NDdkNTkyZDlmYWJiNTZmM2I0NWM2Li5j
MzhiYjk0YTI5MGQ5MTQwMzIyOTExOWUzMGI5ZmRjNTU4OTZhNGVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYwpAQCAt
MjYsMTQgKzI2LDE4IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCisK
KyNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oIgogCiAjaW5jbHVkZSA8c2V0
PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90
ZXN0LmgiCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgorCisjaWYgX01TQ19WRVIKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQxMjcg
LyogY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudCAqLykKKyNlbmRpZiAgLy8gIF9N
U0NfVkVSCiAKIHVzaW5nIHRlc3Rpbmc6OlRlc3Q7CiAKQEAgLTE2NSw2ICsxNjksNDAgQEAgVFlQ
RURfVEVTVChOdW1lcmljVGVzdCwgRGVmYXVsdElzWmVybykgewogCiB9ICAvLyBuYW1lc3BhY2Ug
bGlicmFyeTEKIAorLy8gVGVzdHMgdGhhdCBjdXN0b20gbmFtZXMgd29yay4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorY2xhc3MgVHlwZWRUZXN0V2l0aE5hbWVzIDogcHVibGljIFRlc3Qge307CisK
K2NsYXNzIFR5cGVkVGVzdE5hbWVzIHsKKyBwdWJsaWM6CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgorICBzdGF0aWMgc3RkOjpzdHJpbmcgR2V0TmFtZShpbnQgaSkgeworICAgIGlmICh0ZXN0aW5n
OjppbnRlcm5hbDo6SXNTYW1lPFQsIGNoYXI+Ojp2YWx1ZSkgeworICAgICAgcmV0dXJuIHN0ZDo6
c3RyaW5nKCJjaGFyXyIpICsgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGkpOworICAgIH0KKyAg
ICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxULCBpbnQ+Ojp2YWx1ZSkgeworICAgICAg
cmV0dXJuIHN0ZDo6c3RyaW5nKCJpbnRfIikgKyA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoaSk7
CisgICAgfQorICB9Cit9OworCitUWVBFRF9URVNUX0NBU0UoVHlwZWRUZXN0V2l0aE5hbWVzLCBU
d29UeXBlcywgVHlwZWRUZXN0TmFtZXMpOworCitUWVBFRF9URVNUKFR5cGVkVGVzdFdpdGhOYW1l
cywgVGVzdENhc2VOYW1lKSB7CisgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFR5cGVQ
YXJhbSwgY2hhcj46OnZhbHVlKSB7CisgICAgRVhQRUNUX1NUUkVRKDo6dGVzdGluZzo6VW5pdFRl
c3Q6OkdldEluc3RhbmNlKCkKKyAgICAgICAgICAgICAgICAgICAgIC0+Y3VycmVudF90ZXN0X2lu
Zm8oKQorICAgICAgICAgICAgICAgICAgICAgLT50ZXN0X2Nhc2VfbmFtZSgpLAorICAgICAgICAg
ICAgICAgICAiVHlwZWRUZXN0V2l0aE5hbWVzL2NoYXJfMCIpOworICB9CisgIGlmICh0ZXN0aW5n
OjppbnRlcm5hbDo6SXNTYW1lPFR5cGVQYXJhbSwgaW50Pjo6dmFsdWUpIHsKKyAgICBFWFBFQ1Rf
U1RSRVEoOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKQorICAgICAgICAgICAgICAg
ICAgICAgLT5jdXJyZW50X3Rlc3RfaW5mbygpCisgICAgICAgICAgICAgICAgICAgICAtPnRlc3Rf
Y2FzZV9uYW1lKCksCisgICAgICAgICAgICAgICAgICJUeXBlZFRlc3RXaXRoTmFtZXMvaW50XzEi
KTsKKyAgfQorfQorCiAjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUCiAKIC8vIFRoaXMg
I2lmZGVmIGJsb2NrIHRlc3RzIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KQEAgLTI2NSw2ICsz
MDMsNDYgQEAgUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoRGVyaXZlZFRlc3QsCiB0eXBlZGVm
IFR5cGVzPHNob3J0LCBsb25nPiBNeVR3b1R5cGVzOwogSU5TVEFOVElBVEVfVFlQRURfVEVTVF9D
QVNFX1AoTXksIERlcml2ZWRUZXN0LCBNeVR3b1R5cGVzKTsKIAorLy8gVGVzdHMgdGhhdCBjdXN0
b20gbmFtZXMgd29yayB3aXRoIHR5cGUgcGFyYW1ldHJpemVkIHRlc3RzLiBXZSByZXVzZSB0aGUK
Ky8vIFR3b1R5cGVzIGZyb20gYWJvdmUgaGVyZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xh
c3MgVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRoTmFtZXMgOiBwdWJsaWMgVGVzdCB7fTsKKworVFlQ
RURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRoTmFtZXMpOworCitUWVBFRF9U
RVNUX1AoVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRoTmFtZXMsIFRlc3RDYXNlTmFtZSkgeworICBp
ZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxUeXBlUGFyYW0sIGNoYXI+Ojp2YWx1ZSkgewor
ICAgIEVYUEVDVF9TVFJFUSg6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpCisgICAg
ICAgICAgICAgICAgICAgICAtPmN1cnJlbnRfdGVzdF9pbmZvKCkKKyAgICAgICAgICAgICAgICAg
ICAgIC0+dGVzdF9jYXNlX25hbWUoKSwKKyAgICAgICAgICAgICAgICAgIkN1c3RvbU5hbWUvVHlw
ZVBhcmFtZXRyaXplZFRlc3RXaXRoTmFtZXMvcF9jaGFyXzAiKTsKKyAgfQorICBpZiAodGVzdGlu
Zzo6aW50ZXJuYWw6OklzU2FtZTxUeXBlUGFyYW0sIGludD46OnZhbHVlKSB7CisgICAgRVhQRUNU
X1NUUkVRKDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCkKKyAgICAgICAgICAgICAg
ICAgICAgIC0+Y3VycmVudF90ZXN0X2luZm8oKQorICAgICAgICAgICAgICAgICAgICAgLT50ZXN0
X2Nhc2VfbmFtZSgpLAorICAgICAgICAgICAgICAgICAiQ3VzdG9tTmFtZS9UeXBlUGFyYW1ldHJp
emVkVGVzdFdpdGhOYW1lcy9wX2ludF8xIik7CisgIH0KK30KKworUkVHSVNURVJfVFlQRURfVEVT
VF9DQVNFX1AoVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRoTmFtZXMsIFRlc3RDYXNlTmFtZSk7CisK
K2NsYXNzIFR5cGVQYXJhbWV0cml6ZWRUZXN0TmFtZXMgeworIHB1YmxpYzoKKyAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBHZXROYW1lKGludCBpKSB7CisgICAg
aWYgKHRlc3Rpbmc6OmludGVybmFsOjpJc1NhbWU8VCwgY2hhcj46OnZhbHVlKSB7CisgICAgICBy
ZXR1cm4gc3RkOjpzdHJpbmcoInBfY2hhcl8iKSArIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhp
KTsKKyAgICB9CisgICAgaWYgKHRlc3Rpbmc6OmludGVybmFsOjpJc1NhbWU8VCwgaW50Pjo6dmFs
dWUpIHsKKyAgICAgIHJldHVybiBzdGQ6OnN0cmluZygicF9pbnRfIikgKyA6OnRlc3Rpbmc6OlBy
aW50VG9TdHJpbmcoaSk7CisgICAgfQorICB9Cit9OworCitJTlNUQU5USUFURV9UWVBFRF9URVNU
X0NBU0VfUChDdXN0b21OYW1lLCBUeXBlUGFyYW1ldHJpemVkVGVzdFdpdGhOYW1lcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFR3b1R5cGVzLCBUeXBlUGFyYW1ldHJpemVkVGVzdE5h
bWVzKTsKKwogLy8gVGVzdHMgdGhhdCBtdWx0aXBsZSBUWVBFRF9URVNUX0NBU0VfUCdzIGNhbiBi
ZSBkZWZpbmVkIGluIHRoZSBzYW1lCiAvLyB0cmFuc2xhdGlvbiB1bml0LgogCkBAIC0zNDMsNiAr
NDIxLDI1IEBAIFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKE51bWVyaWNUZXN0LAogdHlwZWRl
ZiBUeXBlczxpbnQsIGRvdWJsZT4gTnVtZXJpY1R5cGVzOwogSU5TVEFOVElBVEVfVFlQRURfVEVT
VF9DQVNFX1AoTXksIE51bWVyaWNUZXN0LCBOdW1lcmljVHlwZXMpOwogCitzdGF0aWMgY29uc3Qg
Y2hhciogR2V0VGVzdE5hbWUoKSB7CisgIHJldHVybiB0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5z
dGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKS0+bmFtZSgpOworfQorLy8gVGVzdCB0aGUgc3Ry
aXBwaW5nIG9mIHNwYWNlIGZyb20gdGVzdCBuYW1lcwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIFRyaW1tZWRUZXN0IDogcHVibGljIFRlc3QgeyB9OworVFlQRURfVEVTVF9DQVNFX1AoVHJp
bW1lZFRlc3QpOworVFlQRURfVEVTVF9QKFRyaW1tZWRUZXN0LCBUZXN0MSkgeyBFWFBFQ1RfU1RS
RVEoIlRlc3QxIiwgR2V0VGVzdE5hbWUoKSk7IH0KK1RZUEVEX1RFU1RfUChUcmltbWVkVGVzdCwg
VGVzdDIpIHsgRVhQRUNUX1NUUkVRKCJUZXN0MiIsIEdldFRlc3ROYW1lKCkpOyB9CitUWVBFRF9U
RVNUX1AoVHJpbW1lZFRlc3QsIFRlc3QzKSB7IEVYUEVDVF9TVFJFUSgiVGVzdDMiLCBHZXRUZXN0
TmFtZSgpKTsgfQorVFlQRURfVEVTVF9QKFRyaW1tZWRUZXN0LCBUZXN0NCkgeyBFWFBFQ1RfU1RS
RVEoIlRlc3Q0IiwgR2V0VGVzdE5hbWUoKSk7IH0KK1RZUEVEX1RFU1RfUChUcmltbWVkVGVzdCwg
VGVzdDUpIHsgRVhQRUNUX1NUUkVRKCJUZXN0NSIsIEdldFRlc3ROYW1lKCkpOyB9CitSRUdJU1RF
Ul9UWVBFRF9URVNUX0NBU0VfUCgKKyAgICBUcmltbWVkVGVzdCwKKyAgICBUZXN0MSwgVGVzdDIs
VGVzdDMgLCBUZXN0NCAsVGVzdDUgKTsgIC8vIE5PTElOVAordGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMj4gc3RydWN0IE15UGFpciB7fTsKKy8vIEJlIHN1cmUgdG8gdHJ5IGEgdHlw
ZSB3aXRoIGEgY29tbWEgaW4gaXRzIG5hbWUganVzdCBpbiBjYXNlIGl0IG1hdHRlcnMuCit0eXBl
ZGVmIFR5cGVzPGludCwgZG91YmxlLCBNeVBhaXI8aW50LCBpbnQ+ID4gVHJpbVR5cGVzOworSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIFRyaW1tZWRUZXN0LCBUcmltVHlwZXMpOwor
CiB9ICAvLyBuYW1lc3BhY2UgbGlicmFyeTIKIAogI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURf
VEVTVF9QCkBAIC0zNTcsNCArNDU0LDggQEAgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1Ao
TXksIE51bWVyaWNUZXN0LCBOdW1lcmljVHlwZXMpOwogLy8gbXVzdCBiZSBkZWZpbmVkKS4gVGhp
cyBkdW1teSB0ZXN0IGtlZXBzIGd0ZXN0X21haW4gbGlua2VkIGluLgogVEVTVChEdW1teVRlc3Qs
IFR5cGVkVGVzdHNBcmVOb3RTdXBwb3J0ZWRPblRoaXNQbGF0Zm9ybSkge30KIAorI2lmIF9NU0Nf
VkVSCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkgIC8vICA0MTI3CisjZW5kaWYg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICBfTVNDX1ZFUgorCiAjZW5kaWYgIC8vICNp
ZiAhZGVmaW5lZChHVEVTVF9IQVNfVFlQRURfVEVTVCkgJiYgIWRlZmluZWQoR1RFU1RfSEFTX1RZ
UEVEX1RFU1RfUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3QtdHlwZWQtdGVzdF90ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
LXR5cGVkLXRlc3RfdGVzdC5oCmluZGV4IDQwZGZlYWM2ZTAxZDk3ZWNmN2ZlYmI4NjVmY2U2Njg0
OGJhOGU4ZGIuLjJjY2U2N2M4MjVhNmNhYmRiOWE1NGI5MTkyOWMwMGM5OTJhMGQ0N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rl
c3QuaApAQCAtMjYsMTMgKzI2LDEyIEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
IC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcg
V2FuKQorCiAKICNpZm5kZWYgR1RFU1RfVEVTVF9HVEVTVF9UWVBFRF9URVNUX1RFU1RfSF8KICNk
ZWZpbmUgR1RFU1RfVEVTVF9HVEVTVF9UWVBFRF9URVNUX1RFU1RfSF8KIAotI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2lmIEdURVNUX0hBU19U
WVBFRF9URVNUX1AKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2MKaW5kZXggN2UwZjhmODA0NWQ3MWMwMTVkMTI5NGZm
ZWY0Y2E1NDVkZGM1NTFmOS4uZjNlYTAzYTU5NmQwZjk5YTM5MTI1MjYzMGRjYTEwNjIyOTMxMTJm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC11bml0dGVz
dC1hcGlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXVu
aXR0ZXN0LWFwaV90ZXN0LmNjCkBAIC0yNSwxNSArMjUsMTQgQEAKIC8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwogLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29v
Z2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1l
d29yayAoR29vZ2xlIFRlc3QpCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5n
IEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBmaWxlIGNvbnRhaW5zIHRlc3Rz
IHZlcmlmeWluZyBjb3JyZWN0bmVzcyBvZiBkYXRhIHByb3ZpZGVkIHZpYQogLy8gVW5pdFRlc3Qn
cyBwdWJsaWMgbWV0aG9kcy4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKIAogI2luY2x1ZGUgPHN0cmluZy5oPiAgLy8gRm9yIHN0cmNtcC4KICNp
bmNsdWRlIDxhbGdvcml0aG0+CkBAIC01NCw3ICs1Myw3IEBAIGNsYXNzIFVuaXRUZXN0SGVscGVy
IHsKICBwdWJsaWM6CiAgIC8vIFJldHVybnMgdGhlIGFycmF5IG9mIHBvaW50ZXJzIHRvIGFsbCB0
ZXN0IGNhc2VzIHNvcnRlZCBieSB0aGUgdGVzdCBjYXNlCiAgIC8vIG5hbWUuICBUaGUgY2FsbGVy
IGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUgYXJyYXkuCi0gIHN0YXRpYyBUZXN0Q2Fz
ZSBjb25zdCoqIGNvbnN0IEdldFNvcnRlZFRlc3RDYXNlcygpIHsKKyAgc3RhdGljIFRlc3RDYXNl
IGNvbnN0KiogR2V0U29ydGVkVGVzdENhc2VzKCkgewogICAgIFVuaXRUZXN0JiB1bml0X3Rlc3Qg
PSAqVW5pdFRlc3Q6OkdldEluc3RhbmNlKCk7CiAgICAgVGVzdENhc2UgY29uc3QqKiBjb25zdCB0
ZXN0X2Nhc2VzID0KICAgICAgICAgbmV3IGNvbnN0IFRlc3RDYXNlKlt1bml0X3Rlc3QudG90YWxf
dGVzdF9jYXNlX2NvdW50KCldOwpAQCAtODMsNyArODIsNyBAQCBjbGFzcyBVbml0VGVzdEhlbHBl
ciB7CiAgIC8vIFJldHVybnMgdGhlIGFycmF5IG9mIHBvaW50ZXJzIHRvIGFsbCB0ZXN0cyBpbiBh
IHBhcnRpY3VsYXIgdGVzdCBjYXNlCiAgIC8vIHNvcnRlZCBieSB0aGUgdGVzdCBuYW1lLiAgVGhl
IGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgdGhlCiAgIC8vIGFycmF5LgotICBz
dGF0aWMgVGVzdEluZm8gY29uc3QqKiBjb25zdCBHZXRTb3J0ZWRUZXN0cyhjb25zdCBUZXN0Q2Fz
ZSogdGVzdF9jYXNlKSB7CisgIHN0YXRpYyBUZXN0SW5mbyBjb25zdCoqIEdldFNvcnRlZFRlc3Rz
KGNvbnN0IFRlc3RDYXNlKiB0ZXN0X2Nhc2UpIHsKICAgICBUZXN0SW5mbyBjb25zdCoqIGNvbnN0
IHRlc3RzID0KICAgICAgICAgbmV3IGNvbnN0IFRlc3RJbmZvKlt0ZXN0X2Nhc2UtPnRvdGFsX3Rl
c3RfY291bnQoKV07CiAKQEAgLTEwMywxMiArMTAyLDYgQEAgVFlQRURfVEVTVChUZXN0Q2FzZVdp
dGhDb21tZW50VGVzdCwgRHVtbXkpIHt9CiAKIGNvbnN0IGludCBrVHlwZWRUZXN0Q2FzZXMgPSAx
OwogY29uc3QgaW50IGtUeXBlZFRlc3RzID0gMTsKLQotU3RyaW5nIEdldEV4cGVjdGVkVGVzdENh
c2VDb21tZW50KCkgewotICBNZXNzYWdlIGNvbW1lbnQ7Ci0gIGNvbW1lbnQgPDwgIlR5cGVQYXJh
bSA9ICIgPDwgR2V0VHlwZU5hbWU8aW50PigpLmNfc3RyKCk7Ci0gIHJldHVybiBjb21tZW50Lkdl
dFN0cmluZygpOwotfQogI2Vsc2UKIGNvbnN0IGludCBrVHlwZWRUZXN0Q2FzZXMgPSAwOwogY29u
c3QgaW50IGtUeXBlZFRlc3RzID0gMDsKQEAgLTE0MywxMiArMTM2LDE5IEBAIFRFU1QoQXBpVGVz
dCwgVW5pdFRlc3RJbW11dGFibGVBY2Nlc3NvcnNXb3JrKSB7CiAgIFJlY29yZFByb3BlcnR5KCJr
ZXkiLCAidmFsdWUiKTsKIH0KIAorQXNzZXJ0aW9uUmVzdWx0IElzTnVsbChjb25zdCBjaGFyKiBz
dHIpIHsKKyAgaWYgKHN0ciAhPSBOVUxMKSB7CisgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlv
bkZhaWx1cmUoKSA8PCAiYXJndW1lbnQgaXMgIiA8PCBzdHI7CisgIH0KKyAgcmV0dXJuIEFzc2Vy
dGlvblN1Y2Nlc3MoKTsKK30KKwogVEVTVChBcGlUZXN0LCBUZXN0Q2FzZUltbXV0YWJsZUFjY2Vz
c29yc1dvcmspIHsKICAgY29uc3QgVGVzdENhc2UqIHRlc3RfY2FzZSA9IFVuaXRUZXN0SGVscGVy
OjpGaW5kVGVzdENhc2UoIkFwaVRlc3QiKTsKICAgQVNTRVJUX1RSVUUodGVzdF9jYXNlICE9IE5V
TEwpOwogCiAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RfY2FzZS0+bmFtZSgpKTsKLSAg
RVhQRUNUX1NUUkVRKCIiLCB0ZXN0X2Nhc2UtPmNvbW1lbnQoKSk7CisgIEVYUEVDVF9UUlVFKElz
TnVsbCh0ZXN0X2Nhc2UtPnR5cGVfcGFyYW0oKSkpOwogICBFWFBFQ1RfVFJVRSh0ZXN0X2Nhc2Ut
PnNob3VsZF9ydW4oKSk7CiAgIEVYUEVDVF9FUSgxLCB0ZXN0X2Nhc2UtPmRpc2FibGVkX3Rlc3Rf
Y291bnQoKSk7CiAgIEVYUEVDVF9FUSgzLCB0ZXN0X2Nhc2UtPnRlc3RfdG9fcnVuX2NvdW50KCkp
OwpAQCAtMTU4LDI2ICsxNTgsMjYgQEAgVEVTVChBcGlUZXN0LCBUZXN0Q2FzZUltbXV0YWJsZUFj
Y2Vzc29yc1dvcmspIHsKIAogICBFWFBFQ1RfU1RSRVEoIkRJU0FCTEVEX0R1bW15MSIsIHRlc3Rz
WzBdLT5uYW1lKCkpOwogICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1swXS0+dGVzdF9j
YXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMF0tPmNvbW1lbnQoKSk7Ci0g
IEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMF0tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICBFWFBF
Q1RfVFJVRShJc051bGwodGVzdHNbMF0tPnZhbHVlX3BhcmFtKCkpKTsKKyAgRVhQRUNUX1RSVUUo
SXNOdWxsKHRlc3RzWzBdLT50eXBlX3BhcmFtKCkpKTsKICAgRVhQRUNUX0ZBTFNFKHRlc3RzWzBd
LT5zaG91bGRfcnVuKCkpOwogCiAgIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VEaXNhYmxlZEFjY2Vz
c29yc1dvcmsiLCB0ZXN0c1sxXS0+bmFtZSgpKTsKICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0Iiwg
dGVzdHNbMV0tPnRlc3RfY2FzZV9uYW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzFd
LT5jb21tZW50KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzFdLT50ZXN0X2Nhc2VfY29t
bWVudCgpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzFdLT52YWx1ZV9wYXJhbSgpKSk7
CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1sxXS0+dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVD
VF9UUlVFKHRlc3RzWzFdLT5zaG91bGRfcnVuKCkpOwogCiAgIEVYUEVDVF9TVFJFUSgiVGVzdENh
c2VJbW11dGFibGVBY2Nlc3NvcnNXb3JrIiwgdGVzdHNbMl0tPm5hbWUoKSk7CiAgIEVYUEVDVF9T
VFJFUSgiQXBpVGVzdCIsIHRlc3RzWzJdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgRVhQRUNUX1NU
UkVRKCIiLCB0ZXN0c1syXS0+Y29tbWVudCgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1sy
XS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1syXS0+
dmFsdWVfcGFyYW0oKSkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMl0tPnR5cGVfcGFy
YW0oKSkpOwogICBFWFBFQ1RfVFJVRSh0ZXN0c1syXS0+c2hvdWxkX3J1bigpKTsKIAogICBFWFBF
Q1RfU1RSRVEoIlVuaXRUZXN0SW1tdXRhYmxlQWNjZXNzb3JzV29yayIsIHRlc3RzWzNdLT5uYW1l
KCkpOwogICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1szXS0+dGVzdF9jYXNlX25hbWUo
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbM10tPmNvbW1lbnQoKSk7Ci0gIEVYUEVDVF9T
VFJFUSgiIiwgdGVzdHNbM10tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJ
c051bGwodGVzdHNbM10tPnZhbHVlX3BhcmFtKCkpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRl
c3RzWzNdLT50eXBlX3BhcmFtKCkpKTsKICAgRVhQRUNUX1RSVUUodGVzdHNbM10tPnNob3VsZF9y
dW4oKSk7CiAKICAgZGVsZXRlW10gdGVzdHM7CkBAIC0xODgsNyArMTg4LDcgQEAgVEVTVChBcGlU
ZXN0LCBUZXN0Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dvcmspIHsKICAgQVNTRVJUX1RSVUUodGVz
dF9jYXNlICE9IE5VTEwpOwogCiAgIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VXaXRoQ29tbWVudFRl
c3QvMCIsIHRlc3RfY2FzZS0+bmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKEdldEV4cGVjdGVkVGVz
dENhc2VDb21tZW50KCkuY19zdHIoKSwgdGVzdF9jYXNlLT5jb21tZW50KCkpOworICBFWFBFQ1Rf
U1RSRVEoR2V0VHlwZU5hbWU8aW50PigpLmNfc3RyKCksIHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgp
KTsKICAgRVhQRUNUX1RSVUUodGVzdF9jYXNlLT5zaG91bGRfcnVuKCkpOwogICBFWFBFQ1RfRVEo
MCwgdGVzdF9jYXNlLT5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOwogICBFWFBFQ1RfRVEoMSwgdGVz
dF9jYXNlLT50ZXN0X3RvX3J1bl9jb3VudCgpKTsKQEAgLTE5OCw5ICsxOTgsOCBAQCBURVNUKEFw
aVRlc3QsIFRlc3RDYXNlSW1tdXRhYmxlQWNjZXNzb3JzV29yaykgewogCiAgIEVYUEVDVF9TVFJF
USgiRHVtbXkiLCB0ZXN0c1swXS0+bmFtZSgpKTsKICAgRVhQRUNUX1NUUkVRKCJUZXN0Q2FzZVdp
dGhDb21tZW50VGVzdC8wIiwgdGVzdHNbMF0tPnRlc3RfY2FzZV9uYW1lKCkpOwotICBFWFBFQ1Rf
U1RSRVEoIiIsIHRlc3RzWzBdLT5jb21tZW50KCkpOwotICBFWFBFQ1RfU1RSRVEoR2V0RXhwZWN0
ZWRUZXN0Q2FzZUNvbW1lbnQoKS5jX3N0cigpLAotICAgICAgICAgICAgICAgdGVzdHNbMF0tPnRl
c3RfY2FzZV9jb21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMF0tPnZhbHVl
X3BhcmFtKCkpKTsKKyAgRVhQRUNUX1NUUkVRKEdldFR5cGVOYW1lPGludD4oKS5jX3N0cigpLCB0
ZXN0c1swXS0+dHlwZV9wYXJhbSgpKTsKICAgRVhQRUNUX1RSVUUodGVzdHNbMF0tPnNob3VsZF9y
dW4oKSk7CiAKICAgZGVsZXRlW10gdGVzdHM7CkBAIC0yMTIsNyArMjExLDcgQEAgVEVTVChBcGlU
ZXN0LCBUZXN0Q2FzZURpc2FibGVkQWNjZXNzb3JzV29yaykgewogICBBU1NFUlRfVFJVRSh0ZXN0
X2Nhc2UgIT0gTlVMTCk7CiAKICAgRVhQRUNUX1NUUkVRKCJESVNBQkxFRF9UZXN0IiwgdGVzdF9j
YXNlLT5uYW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RfY2FzZS0+Y29tbWVudCgpKTsK
KyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVD
VF9GQUxTRSh0ZXN0X2Nhc2UtPnNob3VsZF9ydW4oKSk7CiAgIEVYUEVDVF9FUSgxLCB0ZXN0X2Nh
c2UtPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgIEVYUEVDVF9FUSgwLCB0ZXN0X2Nhc2UtPnRl
c3RfdG9fcnVuX2NvdW50KCkpOwpAQCAtMjIxLDggKzIyMCw4IEBAIFRFU1QoQXBpVGVzdCwgVGVz
dENhc2VEaXNhYmxlZEFjY2Vzc29yc1dvcmspIHsKICAgY29uc3QgVGVzdEluZm8qIGNvbnN0IHRl
c3RfaW5mbyA9IHRlc3RfY2FzZS0+R2V0VGVzdEluZm8oMCk7CiAgIEVYUEVDVF9TVFJFUSgiRHVt
bXkyIiwgdGVzdF9pbmZvLT5uYW1lKCkpOwogICBFWFBFQ1RfU1RSRVEoIkRJU0FCTEVEX1Rlc3Qi
LCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3Rf
aW5mby0+Y29tbWVudCgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0X2luZm8tPnRlc3RfY2Fz
ZV9jb21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdF9pbmZvLT52YWx1ZV9wYXJh
bSgpKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0X2luZm8tPnR5cGVfcGFyYW0oKSkpOwog
ICBFWFBFQ1RfRkFMU0UodGVzdF9pbmZvLT5zaG91bGRfcnVuKCkpOwogfQogCkBAIC0yNDcsNyAr
MjQ2LDcgQEAgY2xhc3MgRmluYWxTdWNjZXNzQ2hlY2tlciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7
CiAgICAgY29uc3QgVGVzdENhc2UqKiBjb25zdCB0ZXN0X2Nhc2VzID0gVW5pdFRlc3RIZWxwZXI6
OkdldFNvcnRlZFRlc3RDYXNlcygpOwogCiAgICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVz
dF9jYXNlc1swXS0+bmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RfY2FzZXNbMF0t
PmNvbW1lbnQoKSk7CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfY2FzZXNbMF0tPnR5cGVf
cGFyYW0oKSkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RfY2FzZXNbMF0tPnNob3VsZF9ydW4oKSk7
CiAgICAgRVhQRUNUX0VRKDEsIHRlc3RfY2FzZXNbMF0tPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7
CiAgICAgQVNTRVJUX0VRKDQsIHRlc3RfY2FzZXNbMF0tPnRvdGFsX3Rlc3RfY291bnQoKSk7CkBA
IC0yNTcsNyArMjU2LDcgQEAgY2xhc3MgRmluYWxTdWNjZXNzQ2hlY2tlciA6IHB1YmxpYyBFbnZp
cm9ubWVudCB7CiAgICAgRVhQRUNUX0ZBTFNFKHRlc3RfY2FzZXNbMF0tPkZhaWxlZCgpKTsKIAog
ICAgIEVYUEVDVF9TVFJFUSgiRElTQUJMRURfVGVzdCIsIHRlc3RfY2FzZXNbMV0tPm5hbWUoKSk7
Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0X2Nhc2VzWzFdLT5jb21tZW50KCkpOworICAgIEVY
UEVDVF9UUlVFKElzTnVsbCh0ZXN0X2Nhc2VzWzFdLT50eXBlX3BhcmFtKCkpKTsKICAgICBFWFBF
Q1RfRkFMU0UodGVzdF9jYXNlc1sxXS0+c2hvdWxkX3J1bigpKTsKICAgICBFWFBFQ1RfRVEoMSwg
dGVzdF9jYXNlc1sxXS0+ZGlzYWJsZWRfdGVzdF9jb3VudCgpKTsKICAgICBBU1NFUlRfRVEoMSwg
dGVzdF9jYXNlc1sxXS0+dG90YWxfdGVzdF9jb3VudCgpKTsKQEAgLTI2Niw4ICsyNjUsNyBAQCBj
bGFzcyBGaW5hbFN1Y2Nlc3NDaGVja2VyIDogcHVibGljIEVudmlyb25tZW50IHsKIAogI2lmIEdU
RVNUX0hBU19UWVBFRF9URVNUCiAgICAgRVhQRUNUX1NUUkVRKCJUZXN0Q2FzZVdpdGhDb21tZW50
VGVzdC8wIiwgdGVzdF9jYXNlc1syXS0+bmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoR2V0RXhw
ZWN0ZWRUZXN0Q2FzZUNvbW1lbnQoKS5jX3N0cigpLAotICAgICAgICAgICAgICAgICB0ZXN0X2Nh
c2VzWzJdLT5jb21tZW50KCkpOworICAgIEVYUEVDVF9TVFJFUShHZXRUeXBlTmFtZTxpbnQ+KCku
Y19zdHIoKSwgdGVzdF9jYXNlc1syXS0+dHlwZV9wYXJhbSgpKTsKICAgICBFWFBFQ1RfVFJVRSh0
ZXN0X2Nhc2VzWzJdLT5zaG91bGRfcnVuKCkpOwogICAgIEVYUEVDVF9FUSgwLCB0ZXN0X2Nhc2Vz
WzJdLT5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOwogICAgIEFTU0VSVF9FUSgxLCB0ZXN0X2Nhc2Vz
WzJdLT50b3RhbF90ZXN0X2NvdW50KCkpOwpAQCAtMjg1LDI0ICsyODMsMjQgQEAgY2xhc3MgRmlu
YWxTdWNjZXNzQ2hlY2tlciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7CiAKICAgICBFWFBFQ1RfU1RS
RVEoIlRlc3RDYXNlRGlzYWJsZWRBY2Nlc3NvcnNXb3JrIiwgdGVzdHNbMV0tPm5hbWUoKSk7CiAg
ICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbMV0tPnRlc3RfY2FzZV9uYW1lKCkpOwot
ICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMV0tPmNvbW1lbnQoKSk7Ci0gICAgRVhQRUNUX1NU
UkVRKCIiLCB0ZXN0c1sxXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgICAgRVhQRUNUX1RSVUUo
SXNOdWxsKHRlc3RzWzFdLT52YWx1ZV9wYXJhbSgpKSk7CisgICAgRVhQRUNUX1RSVUUoSXNOdWxs
KHRlc3RzWzFdLT50eXBlX3BhcmFtKCkpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0c1sxXS0+c2hv
dWxkX3J1bigpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0c1sxXS0+cmVzdWx0KCktPlBhc3NlZCgp
KTsKICAgICBFWFBFQ1RfRVEoMCwgdGVzdHNbMV0tPnJlc3VsdCgpLT50ZXN0X3Byb3BlcnR5X2Nv
dW50KCkpOwogCiAgICAgRVhQRUNUX1NUUkVRKCJUZXN0Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dv
cmsiLCB0ZXN0c1syXS0+bmFtZSgpKTsKICAgICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0
c1syXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1syXS0+
Y29tbWVudCgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzJdLT50ZXN0X2Nhc2VfY29t
bWVudCgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMl0tPnZhbHVlX3BhcmFtKCkp
KTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMl0tPnR5cGVfcGFyYW0oKSkpOwogICAg
IEVYUEVDVF9UUlVFKHRlc3RzWzJdLT5zaG91bGRfcnVuKCkpOwogICAgIEVYUEVDVF9UUlVFKHRl
c3RzWzJdLT5yZXN1bHQoKS0+UGFzc2VkKCkpOwogICAgIEVYUEVDVF9FUSgwLCB0ZXN0c1syXS0+
cmVzdWx0KCktPnRlc3RfcHJvcGVydHlfY291bnQoKSk7CiAKICAgICBFWFBFQ1RfU1RSRVEoIlVu
aXRUZXN0SW1tdXRhYmxlQWNjZXNzb3JzV29yayIsIHRlc3RzWzNdLT5uYW1lKCkpOwogICAgIEVY
UEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzNdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgICBF
WFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzNdLT5jb21tZW50KCkpOwotICAgIEVYUEVDVF9TVFJFUSgi
IiwgdGVzdHNbM10tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICAgIEVYUEVDVF9UUlVFKElzTnVs
bCh0ZXN0c1szXS0+dmFsdWVfcGFyYW0oKSkpOworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0
c1szXS0+dHlwZV9wYXJhbSgpKSk7CiAgICAgRVhQRUNUX1RSVUUodGVzdHNbM10tPnNob3VsZF9y
dW4oKSk7CiAgICAgRVhQRUNUX1RSVUUodGVzdHNbM10tPnJlc3VsdCgpLT5QYXNzZWQoKSk7CiAg
ICAgRVhQRUNUX0VRKDEsIHRlc3RzWzNdLT5yZXN1bHQoKS0+dGVzdF9wcm9wZXJ0eV9jb3VudCgp
KTsKQEAgLTMxOCw5ICszMTYsOCBAQCBjbGFzcyBGaW5hbFN1Y2Nlc3NDaGVja2VyIDogcHVibGlj
IEVudmlyb25tZW50IHsKIAogICAgIEVYUEVDVF9TVFJFUSgiRHVtbXkiLCB0ZXN0c1swXS0+bmFt
ZSgpKTsKICAgICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlV2l0aENvbW1lbnRUZXN0LzAiLCB0ZXN0
c1swXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1swXS0+
Y29tbWVudCgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoR2V0RXhwZWN0ZWRUZXN0Q2FzZUNvbW1lbnQo
KS5jX3N0cigpLAotICAgICAgICAgICAgICAgICB0ZXN0c1swXS0+dGVzdF9jYXNlX2NvbW1lbnQo
KSk7CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzBdLT52YWx1ZV9wYXJhbSgpKSk7Cisg
ICAgRVhQRUNUX1NUUkVRKEdldFR5cGVOYW1lPGludD4oKS5jX3N0cigpLCB0ZXN0c1swXS0+dHlw
ZV9wYXJhbSgpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0c1swXS0+c2hvdWxkX3J1bigpKTsKICAg
ICBFWFBFQ1RfVFJVRSh0ZXN0c1swXS0+cmVzdWx0KCktPlBhc3NlZCgpKTsKICAgICBFWFBFQ1Rf
RVEoMCwgdGVzdHNbMF0tPnJlc3VsdCgpLT50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9hbGxfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfYWxsX3Rlc3QuY2MKaW5kZXggZTFlZGIw
OGUzM2ExOGMyMzkxMTVkYWQ1ZTRhMGQ2ZmI2MzJkYmIxNy4uZTYxZTM2YjFkZmU4ZGEwMzAxNmFm
NTc4NTViMmM3ODFlZTdkOTFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF9hbGxfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X2FsbF90ZXN0LmNjCkBAIC0yNiwyMyArMjYsMjEgQEAKIC8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwogLy8KLS8vIEF1dGhvcjogd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBUZXN0cyBmb3IgR29vZ2xlIEMrKyBUZXN0aW5n
IEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBUZXN0cyBmb3IgR29vZ2xlIEMrKyBUZXN0aW5n
IGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gU29tZXRpbWVzIGl0
J3MgZGVzaXJhYmxlIHRvIGJ1aWxkIG1vc3Qgb2YgR29vZ2xlIFRlc3QncyBvd24gdGVzdHMKIC8v
IGJ5IGNvbXBpbGluZyBhIHNpbmdsZSBmaWxlLiAgVGhpcyBmaWxlIHNlcnZlcyB0aGlzIHB1cnBv
c2UuCi0jaW5jbHVkZSAidGVzdC9ndGVzdC1maWxlcGF0aF90ZXN0LmNjIgotI2luY2x1ZGUgInRl
c3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNjIgotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtbWVzc2Fn
ZV90ZXN0LmNjIgotI2luY2x1ZGUgInRlc3QvZ3Rlc3Qtb3B0aW9uc190ZXN0LmNjIgotI2luY2x1
ZGUgInRlc3QvZ3Rlc3QtcG9ydF90ZXN0LmNjIgorI2luY2x1ZGUgInRlc3QvZ29vZ2xldGVzdC1m
aWxlcGF0aC10ZXN0LmNjIgorI2luY2x1ZGUgInRlc3QvZ29vZ2xldGVzdC1saW5rZWQtcHRyLXRl
c3QuY2MiCisjaW5jbHVkZSAidGVzdC9nb29nbGV0ZXN0LW1lc3NhZ2UtdGVzdC5jYyIKKyNpbmNs
dWRlICJ0ZXN0L2dvb2dsZXRlc3Qtb3B0aW9ucy10ZXN0LmNjIgorI2luY2x1ZGUgInRlc3QvZ29v
Z2xldGVzdC1wb3J0LXRlc3QuY2MiCiAjaW5jbHVkZSAidGVzdC9ndGVzdF9wcmVkX2ltcGxfdW5p
dHRlc3QuY2MiCiAjaW5jbHVkZSAidGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2MiCi0jaW5jbHVkZSAi
dGVzdC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYyIKKyNpbmNsdWRlICJ0ZXN0L2dvb2dsZXRlc3Qt
dGVzdC1wYXJ0LXRlc3QuY2MiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3Qu
Y2MiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC10eXBlZC10ZXN0Ml90ZXN0LmNjIgogI2luY2x1ZGUg
InRlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MiCiAjaW5jbHVkZSAidGVzdC9wcm9kdWN0aW9uLmNjIgot
I2luY2x1ZGUgInNyYy9ndGVzdF9tYWluLmNjIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF9hc3NlcnRfYnlfZXhjZXB0aW9uX3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Fzc2VydF9ieV9leGNlcHRpb25fdGVzdC5jYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wZWFlODU3NWYzZmVlMzBiYWM2NDJiYTE1ODlmZjIzNGQwN2Y5NDU0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9hc3NlcnRf
YnlfZXhjZXB0aW9uX3Rlc3QuY2MKQEAgLTAsMCArMSwxMTggQEAKKy8vIENvcHlyaWdodCAyMDA5
LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBUZXN0cyBHb29nbGUgVGVzdCdzIGFz
c2VydC1ieS1leGNlcHRpb24gbW9kZSB3aXRoIGV4Y2VwdGlvbnMgZW5hYmxlZC4KKworI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRp
by5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KKworY2xhc3Mg
VGhyb3dMaXN0ZW5lciA6IHB1YmxpYyB0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsK
KyAgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0JiBy
ZXN1bHQpIG92ZXJyaWRlIHsKKyAgICBpZiAocmVzdWx0LnR5cGUoKSA9PSB0ZXN0aW5nOjpUZXN0
UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSkgeworICAgICAgdGhyb3cgdGVzdGluZzo6QXNzZXJ0
aW9uRXhjZXB0aW9uKHJlc3VsdCk7CisgICAgfQorICB9Cit9OworCisvLyBQcmludHMgdGhlIGdp
dmVuIGZhaWx1cmUgbWVzc2FnZSBhbmQgZXhpdHMgdGhlIHByb2dyYW0gd2l0aAorLy8gbm9uLXpl
cm8uICBXZSB1c2UgdGhpcyBpbnN0ZWFkIG9mIGEgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIHRvCisv
LyBpbmRpY2F0ZSBhIGZhaWx1cmUsIGFzIHRoZSBsYXR0ZXIgaXMgYmVlbiB0ZXN0ZWQgYW5kIGNh
bm5vdCBiZQorLy8gcmVsaWVkIG9uLgordm9pZCBGYWlsKGNvbnN0IGNoYXIqIG1zZykgeworICBw
cmludGYoIkZBSUxVUkU6ICVzXG4iLCBtc2cpOworICBmZmx1c2goc3Rkb3V0KTsKKyAgZXhpdCgx
KTsKK30KKworc3RhdGljIHZvaWQgQXNzZXJ0RmFsc2UoKSB7CisgIEFTU0VSVF9FUSgyLCAzKSA8
PCAiRXhwZWN0ZWQgZmFpbHVyZSI7Cit9CisKKy8vIFRlc3RzIHRoYXQgYW4gYXNzZXJ0aW9uIGZh
aWx1cmUgdGhyb3dzIGEgc3ViY2xhc3Mgb2YKKy8vIHN0ZDo6cnVudGltZV9lcnJvci4KK1RFU1Qo
VGVzdCwgVGVzdCkgeworICAvLyBBIHN1Y2Nlc3NmdWwgYXNzZXJ0aW9uIHNob3VsZG4ndCB0aHJv
dy4KKyAgdHJ5IHsKKyAgICBFWFBFQ1RfRVEoMywgMyk7CisgIH0gY2F0Y2goLi4uKSB7CisgICAg
RmFpbCgiQSBzdWNjZXNzZnVsIGFzc2VydGlvbiB3cm9uZ2Z1bGx5IHRocmV3LiIpOworICB9CisK
KyAgLy8gQSBzdWNjZXNzZnVsIGFzc2VydGlvbiBzaG91bGRuJ3QgdGhyb3cuCisgIHRyeSB7Cisg
ICAgRVhQRUNUX0VRKDMsIDQpOworICB9IGNhdGNoKC4uLikgeworICAgIEZhaWwoIkEgZmFpbGVk
IG5vbi1mYXRhbCBhc3NlcnRpb24gd3JvbmdmdWxseSB0aHJldy4iKTsKKyAgfQorCisgIC8vIEEg
ZmFpbGVkIGFzc2VydGlvbiBzaG91bGQgdGhyb3cuCisgIHRyeSB7CisgICAgQXNzZXJ0RmFsc2Uo
KTsKKyAgfSBjYXRjaChjb25zdCB0ZXN0aW5nOjpBc3NlcnRpb25FeGNlcHRpb24mIGUpIHsKKyAg
ICBpZiAoc3Ryc3RyKGUud2hhdCgpLCAiRXhwZWN0ZWQgZmFpbHVyZSIpICE9IE5VTEwpCisgICAg
ICB0aHJvdzsKKworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQSBmYWlsZWQgYXNzZXJ0
aW9uIGRpZCB0aHJvdyBhbiBleGNlcHRpb24gb2YgdGhlIHJpZ2h0IHR5cGUsICIKKyAgICAgICAg
ICAgImJ1dCB0aGUgbWVzc2FnZSBpcyBpbmNvcnJlY3QuICBJbnN0ZWFkIG9mIGNvbnRhaW5pbmcg
XCJFeHBlY3RlZCAiCisgICAgICAgICAgICJmYWlsdXJlXCIsIGl0IGlzOlxuIik7CisgICAgRmFp
bChlLndoYXQoKSk7CisgIH0gY2F0Y2goLi4uKSB7CisgICAgRmFpbCgiQSBmYWlsZWQgYXNzZXJ0
aW9uIHRocmV3IHRoZSB3cm9uZyB0eXBlIG9mIGV4Y2VwdGlvbi4iKTsKKyAgfQorICBGYWlsKCJB
IGZhaWxlZCBhc3NlcnRpb24gc2hvdWxkJ3ZlIHRocm93biBidXQgZGlkbid0LiIpOworfQorCitp
bnQga1Rlc3RGb3JDb250aW51aW5nVGVzdCA9IDA7CisKK1RFU1QoVGVzdCwgVGVzdDIpIHsKKyAg
Ly8gRklYTUU6IGhvdyB0byBmb3JjZSBUZXN0MiB0byBiZSBhZnRlciBUZXN0PworICBrVGVzdEZv
ckNvbnRpbnVpbmdUZXN0ID0gMTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2
KSB7CisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgdGVzdGluZzo6
VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpLkFwcGVuZChuZXcgVGhyb3dMaXN0
ZW5lcik7CisKKyAgaW50IHJlc3VsdCA9IFJVTl9BTExfVEVTVFMoKTsKKyAgaWYgKHJlc3VsdCA9
PSAwKSB7CisgICAgcHJpbnRmKCJSVU5fQUxMX1RFU1RTIHJldHVybmVkICVkXG4iLCByZXN1bHQp
OworICAgIEZhaWwoIkV4cGVjdGVkIGZhaWx1cmUgaW5zdGVhZC4iKTsKKyAgfQorCisgIGlmIChr
VGVzdEZvckNvbnRpbnVpbmdUZXN0ID09IDApIHsKKyAgICBGYWlsKCJTaG91bGQgaGF2ZSBjb250
aW51ZWQgd2l0aCBvdGhlciB0ZXN0cywgYnV0IGRpZCBub3QuIik7CisgIH0KKyAgcmV0dXJuIDA7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFr
X29uX2ZhaWx1cmVfdW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IGM4MTkxODMzMTIyNzVkZWNhMDVjNzYzMTg2MDQwNDcxYmZmNDlmMzMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0LnB5CisrKyAvZGV2L251
bGwKQEAgLTEsMjE4ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmln
aHQgMjAwNiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLSIiIlVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyBicmVhay1vbi1mYWlsdXJl
IG1vZGUuCi0KLUEgdXNlciBjYW4gYXNrIEdvb2dsZSBUZXN0IHRvIHNlZy1mYXVsdCB3aGVuIGFu
IGFzc2VydGlvbiBmYWlscywgdXNpbmcKLWVpdGhlciB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVS
RSBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUKLS0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBm
bGFnLiAgVGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5Ci1ieSBpbnZva2luZyBn
dGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aAot
R29vZ2xlIFRlc3QpIHdpdGggZGlmZmVyZW50IGVudmlyb25tZW50cyBhbmQgY29tbWFuZCBsaW5l
IGZsYWdzLgotIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdh
biknCi0KLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQot
Ci0jIENvbnN0YW50cy4KLQotSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250JwotCi0jIFRoZSBl
bnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBicmVhay1vbi1m
YWlsdXJlIG1vZGUuCi1CUkVBS19PTl9GQUlMVVJFX0VOVl9WQVIgPSAnR1RFU1RfQlJFQUtfT05f
RkFJTFVSRScKLQotIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgZm9yIGVuYWJsaW5nL2Rpc2FibGlu
ZyB0aGUgYnJlYWstb24tZmFpbHVyZSBtb2RlLgotQlJFQUtfT05fRkFJTFVSRV9GTEFHID0gJ2d0
ZXN0X2JyZWFrX29uX2ZhaWx1cmUnCi0KLSMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciBl
bmFibGluZy9kaXNhYmxpbmcgdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZS4KLVRIUk9XX09OX0ZB
SUxVUkVfRU5WX1ZBUiA9ICdHVEVTVF9USFJPV19PTl9GQUlMVVJFJwotCi0jIFRoZSBlbnZpcm9u
bWVudCB2YXJpYWJsZSBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBjYXRjaC1leGNlcHRpb25z
IG1vZGUuCi1DQVRDSF9FWENFUFRJT05TX0VOVl9WQVIgPSAnR1RFU1RfQ0FUQ0hfRVhDRVBUSU9O
UycKLQotIyBQYXRoIHRvIHRoZSBndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0XyBwcm9n
cmFtLgotRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgK
LSAgICAnZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8nKQotCi0KLSMgVXRpbGl0aWVz
LgotCi0KLWVudmlyb24gPSBvcy5lbnZpcm9uLmNvcHkoKQotCi0KLWRlZiBTZXRFbnZWYXIoZW52
X3ZhciwgdmFsdWUpOgotICAiIiJTZXRzIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEgZ2l2
ZW4gdmFsdWU7IHVuc2V0cyBpdCB3aGVuIHRoZQotICBnaXZlbiB2YWx1ZSBpcyBOb25lLgotICAi
IiIKLQotICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICBlbnZpcm9uW2Vudl92YXJdID0gdmFs
dWUKLSAgZWxpZiBlbnZfdmFyIGluIGVudmlyb246Ci0gICAgZGVsIGVudmlyb25bZW52X3Zhcl0K
LQotCi1kZWYgUnVuKGNvbW1hbmQpOgotICAiIiJSdW5zIGEgY29tbWFuZDsgcmV0dXJucyAxIGlm
IGl0IHdhcyBraWxsZWQgYnkgYSBzaWduYWwsIG9yIDAgb3RoZXJ3aXNlLiIiIgotCi0gIHAgPSBn
dGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCwgZW52PWVudmlyb24pCi0gIGlmIHAu
dGVybWluYXRlZF9ieV9zaWduYWw6Ci0gICAgcmV0dXJuIDEKLSAgZWxzZToKLSAgICByZXR1cm4g
MAotCi0KLSMgVGhlIHRlc3RzLgotCi0KLWNsYXNzIEdUZXN0QnJlYWtPbkZhaWx1cmVVbml0VGVz
dChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAgIiIiVGVzdHMgdXNpbmcgdGhlIEdURVNU
X0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IKLSAgdGhlIC0tZ3Rlc3Rf
YnJlYWtfb25fZmFpbHVyZSBmbGFnIHRvIHR1cm4gYXNzZXJ0aW9uIGZhaWx1cmVzIGludG8KLSAg
c2VnbWVudGF0aW9uIGZhdWx0cy4KLSAgIiIiCi0KLSAgZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBl
bnZfdmFyX3ZhbHVlLCBmbGFnX3ZhbHVlLCBleHBlY3Rfc2VnX2ZhdWx0KToKLSAgICAiIiJSdW5z
IGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfIGFuZCB2ZXJpZmllcyB0aGF0IGl0IGRv
ZXMKLSAgICAob3IgZG9lcyBub3QpIGhhdmUgYSBzZWctZmF1bHQuCi0KLSAgICBBcmdzOgotICAg
ICAgZW52X3Zhcl92YWx1ZTogICAgdmFsdWUgb2YgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUg
ZW52aXJvbm1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlOyBOb25lIGlmIHRo
ZSB2YXJpYWJsZSBzaG91bGQgYmUgdW5zZXQuCi0gICAgICBmbGFnX3ZhbHVlOiAgICAgICB2YWx1
ZSBvZiB0aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWc7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBub3QgYmUgcHJlc2VudC4KLSAgICAgIGV4
cGVjdF9zZWdfZmF1bHQ6IDEgaWYgdGhlIHByb2dyYW0gaXMgZXhwZWN0ZWQgdG8gZ2VuZXJhdGUg
YSBzZWctZmF1bHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAwIG90aGVyd2lzZS4KLSAgICAi
IiIKLQotICAgIFNldEVudlZhcihCUkVBS19PTl9GQUlMVVJFX0VOVl9WQVIsIGVudl92YXJfdmFs
dWUpCi0KLSAgICBpZiBlbnZfdmFyX3ZhbHVlIGlzIE5vbmU6Ci0gICAgICBlbnZfdmFyX3ZhbHVl
X21zZyA9ICcgaXMgbm90IHNldCcKLSAgICBlbHNlOgotICAgICAgZW52X3Zhcl92YWx1ZV9tc2cg
PSAnPScgKyBlbnZfdmFyX3ZhbHVlCi0KLSAgICBpZiBmbGFnX3ZhbHVlIGlzIE5vbmU6Ci0gICAg
ICBmbGFnID0gJycKLSAgICBlbGlmIGZsYWdfdmFsdWUgPT0gJzAnOgotICAgICAgZmxhZyA9ICct
LSVzPTAnICUgQlJFQUtfT05fRkFJTFVSRV9GTEFHCi0gICAgZWxzZToKLSAgICAgIGZsYWcgPSAn
LS0lcycgJSBCUkVBS19PTl9GQUlMVVJFX0ZMQUcKLQotICAgIGNvbW1hbmQgPSBbRVhFX1BBVEhd
Ci0gICAgaWYgZmxhZzoKLSAgICAgIGNvbW1hbmQuYXBwZW5kKGZsYWcpCi0KLSAgICBpZiBleHBl
Y3Rfc2VnX2ZhdWx0OgotICAgICAgc2hvdWxkX29yX25vdCA9ICdzaG91bGQnCi0gICAgZWxzZToK
LSAgICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxkIG5vdCcKLQotICAgIGhhc19zZWdfZmF1bHQg
PSBSdW4oY29tbWFuZCkKLQotICAgIFNldEVudlZhcihCUkVBS19PTl9GQUlMVVJFX0VOVl9WQVIs
IE5vbmUpCi0KLSAgICBtc2cgPSAoJ3doZW4gJXMlcywgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4g
IiVzIiAlcyBjYXVzZSBhIHNlZy1mYXVsdC4nICUKLSAgICAgICAgICAgKEJSRUFLX09OX0ZBSUxV
UkVfRU5WX1ZBUiwgZW52X3Zhcl92YWx1ZV9tc2csICcgJy5qb2luKGNvbW1hbmQpLAotICAgICAg
ICAgICAgc2hvdWxkX29yX25vdCkpCi0gICAgc2VsZi5hc3NlcnRfKGhhc19zZWdfZmF1bHQgPT0g
ZXhwZWN0X3NlZ19mYXVsdCwgbXNnKQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9yKHNlbGYp
OgotICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBtb2RlLiIiIgotCi0g
ICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAg
ICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2Vn
X2ZhdWx0PTApCi0KLSAgZGVmIHRlc3RFbnZWYXIoc2VsZik6Ci0gICAgIiIiVGVzdHMgdXNpbmcg
dGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFyaWFibGUuIiIiCi0KLSAg
ICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAg
ICAgICBmbGFnX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19m
YXVsdD0wKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAotICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBl
eHBlY3Rfc2VnX2ZhdWx0PTEpCi0KLSAgZGVmIHRlc3RGbGFnKHNlbGYpOgotICAgICIiIlRlc3Rz
IHVzaW5nIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZy4iIiIKLQotICAgIHNlbGYu
UnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBm
bGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTAp
Ci0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAotICAgICAgICAgICAg
ICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9z
ZWdfZmF1bHQ9MSkKLQotICBkZWYgdGVzdEZsYWdPdmVycmlkZXNFbnZWYXIoc2VsZik6Ci0gICAg
IiIiVGVzdHMgdGhhdCB0aGUgZmxhZyBvdmVycmlkZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxl
LiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0X3NlZ19mYXVsdD0wKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAn
LAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFy
X3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKLSAgICAg
ICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCi0gICAgc2VsZi5SdW5BbmRWZXJp
ZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0n
MScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0xKQotCi0gIGRlZiB0
ZXN0QnJlYWtPbkZhaWx1cmVPdmVycmlkZXNUaHJvd09uRmFpbHVyZShzZWxmKToKLSAgICAiIiJU
ZXN0cyB0aGF0IGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgb3ZlcnJpZGVzIGd0ZXN0X3Rocm93X29u
X2ZhaWx1cmUuIiIiCi0KLSAgICBTZXRFbnZWYXIoVEhST1dfT05fRkFJTFVSRV9FTlZfVkFSLCAn
MScpCi0gICAgdHJ5OgotICAgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25l
LAotICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCi0gICAgZmluYWxseToKLSAgICAgIFNldEVu
dlZhcihUSFJPV19PTl9GQUlMVVJFX0VOVl9WQVIsIE5vbmUpCi0KLSAgaWYgSVNfV0lORE9XUzoK
LSAgICBkZWYgdGVzdENhdGNoRXhjZXB0aW9uc0RvZXNOb3RJbnRlcmZlcmUoc2VsZik6Ci0gICAg
ICAiIiJUZXN0cyB0aGF0IGd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnMgZG9lc24ndCBpbnRlcmZlcmUu
IiIiCi0KLSAgICAgIFNldEVudlZhcihDQVRDSF9FWENFUFRJT05TX0VOVl9WQVIsICcxJykKLSAg
ICAgIHRyeToKLSAgICAgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCi0gICAgICBmaW5hbGx5OgotICAgICAgICBT
ZXRFbnZWYXIoQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSLCBOb25lKQotCi0KLWlmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRl
c3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9icmVha19vbl9mYWls
dXJlX3VuaXR0ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI4ZDFkM2Rh
ZDQ2YjhmZGYzYzM0MDk2N2RiZmNhODUyZjU5ZTRhMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfLmNjCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAs
MCBAQAotLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8v
IEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gVW5pdCB0ZXN0IGZv
ciBHb29nbGUgVGVzdCdzIGJyZWFrLW9uLWZhaWx1cmUgbW9kZS4KLS8vCi0vLyBBIHVzZXIgY2Fu
IGFzayBHb29nbGUgVGVzdCB0byBzZWctZmF1bHQgd2hlbiBhbiBhc3NlcnRpb24gZmFpbHMsIHVz
aW5nCi0vLyBlaXRoZXIgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFy
aWFibGUgb3IgdGhlCi0vLyAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZy4gIFRoaXMgZmls
ZSBpcyB1c2VkIGZvciB0ZXN0aW5nIHN1Y2gKLS8vIGZ1bmN0aW9uYWxpdHkuCi0vLwotLy8gVGhp
cyBwcm9ncmFtIHdpbGwgYmUgaW52b2tlZCBmcm9tIGEgUHl0aG9uIHVuaXQgdGVzdC4gIEl0IGlz
Ci0vLyBleHBlY3RlZCB0byBmYWlsLiAgRG9uJ3QgcnVuIGl0IGRpcmVjdGx5LgotCi0jaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLSNpbmNsdWRlIDx3aW5k
b3dzLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIHsKLQotLy8g
QSB0ZXN0IHRoYXQncyBleHBlY3RlZCB0byBmYWlsLgotVEVTVChGb28sIEJhcikgewotICBFWFBF
Q1RfRVEoMiwgMyk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfU0VIICYmICFHVEVTVF9PU19XSU5ET1dT
X01PQklMRQotLy8gT24gV2luZG93cyBNb2JpbGUgZ2xvYmFsIGV4Y2VwdGlvbiBoYW5kbGVycyBh
cmUgbm90IHN1cHBvcnRlZC4KLUxPTkcgV0lOQVBJIEV4aXRXaXRoRXhjZXB0aW9uQ29kZSgKLSAg
ICBzdHJ1Y3QgX0VYQ0VQVElPTl9QT0lOVEVSUyogZXhjZXB0aW9uX3BvaW50ZXJzKSB7Ci0gIGV4
aXQoZXhjZXB0aW9uX3BvaW50ZXJzLT5FeGNlcHRpb25SZWNvcmQtPkV4Y2VwdGlvbkNvZGUpOwot
fQotI2VuZGlmCi0KLX0gIC8vIG5hbWVzcGFjZQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
KmFyZ3YpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIC8vIFN1cHByZXNzZXMgZGlzcGxheSBv
ZiB0aGUgV2luZG93cyBlcnJvciBkaWFsb2cgdXBvbiBlbmNvdW50ZXJpbmcKLSAgLy8gYSBnZW5l
cmFsIHByb3RlY3Rpb24gZmF1bHQgKHNlZ21lbnQgdmlvbGF0aW9uKS4KLSAgU2V0RXJyb3JNb2Rl
KFNFTV9OT0dQRkFVTFRFUlJPUkJPWCB8IFNFTV9GQUlMQ1JJVElDQUxFUlJPUlMpOwotCi0jaWYg
IUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0gIC8vIFRoZSBkZWZhdWx0IHVuaGFuZGxlZCBleGNl
cHRpb24gZmlsdGVyIGRvZXMgbm90IGFsd2F5cyBleGl0Ci0gIC8vIHdpdGggdGhlIGV4Y2VwdGlv
biBjb2RlIGFzIGV4aXQgY29kZSAtIGZvciBleGFtcGxlIGl0IGV4aXRzIHdpdGgKLSAgLy8gMCBm
b3IgRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT04gYW5kIDEgZm9yIEVYQ0VQVElPTl9CUkVBS1BP
SU5UCi0gIC8vIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBjb21waWxlZCBpbiBkZWJ1ZyBtb2RlLiBU
aHVzIHdlIHVzZSBvdXIgb3duCi0gIC8vIGZpbHRlciB3aGljaCBhbHdheXMgZXhpdHMgd2l0aCB0
aGUgZXhjZXB0aW9uIGNvZGUgZm9yIHVuaGFuZGxlZAotICAvLyBleGNlcHRpb25zLgotICBTZXRV
bmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIoRXhpdFdpdGhFeGNlcHRpb25Db2RlKTsKLSNlbmRpZgot
I2VuZGlmCi0KLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIHJl
dHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGQw
MmE1M2VkODU3Yzc0YzgwMGJjY2Q2N2JjNDE4YTUxYTA5ZDY5MzcuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF9jb2xvcl90ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLSMh
L3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLSMg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlZlcmlmaWVzIHRo
YXQgR29vZ2xlIFRlc3QgY29ycmVjdGx5IGRldGVybWluZXMgd2hldGhlciB0byB1c2UgY29sb3Jz
LiIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1p
bXBvcnQgb3MKLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi0KLQotSVNfV0lORE9XUyA9IG9zLm5h
bWUgPSAnbnQnCi0KLUNPTE9SX0VOVl9WQVIgPSAnR1RFU1RfQ09MT1InCi1DT0xPUl9GTEFHID0g
J2d0ZXN0X2NvbG9yJwotQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFi
bGVQYXRoKCdndGVzdF9jb2xvcl90ZXN0XycpCi0KLQotZGVmIFNldEVudlZhcihlbnZfdmFyLCB2
YWx1ZSk6Ci0gICIiIlNldHMgdGhlIGVudiB2YXJpYWJsZSB0byAndmFsdWUnOyB1bnNldHMgaXQg
d2hlbiAndmFsdWUnIGlzIE5vbmUuIiIiCi0KLSAgaWYgdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAg
b3MuZW52aXJvbltlbnZfdmFyXSA9IHZhbHVlCi0gIGVsaWYgZW52X3ZhciBpbiBvcy5lbnZpcm9u
OgotICAgIGRlbCBvcy5lbnZpcm9uW2Vudl92YXJdCi0KLQotZGVmIFVzZXNDb2xvcih0ZXJtLCBj
b2xvcl9lbnZfdmFyLCBjb2xvcl9mbGFnKToKLSAgIiIiUnVucyBndGVzdF9jb2xvcl90ZXN0XyBh
bmQgcmV0dXJucyBpdHMgZXhpdCBjb2RlLiIiIgotCi0gIFNldEVudlZhcignVEVSTScsIHRlcm0p
Ci0gIFNldEVudlZhcihDT0xPUl9FTlZfVkFSLCBjb2xvcl9lbnZfdmFyKQotCi0gIGlmIGNvbG9y
X2ZsYWcgaXMgTm9uZToKLSAgICBhcmdzID0gW10KLSAgZWxzZToKLSAgICBhcmdzID0gWyctLSVz
PSVzJyAlIChDT0xPUl9GTEFHLCBjb2xvcl9mbGFnKV0KLSAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
U3VicHJvY2VzcyhbQ09NTUFORF0gKyBhcmdzKQotICByZXR1cm4gbm90IHAuZXhpdGVkIG9yIHAu
ZXhpdF9jb2RlCi0KLQotY2xhc3MgR1Rlc3RDb2xvclRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0
Q2FzZSk6Ci0gIGRlZiB0ZXN0Tm9FbnZWYXJOb0ZsYWcoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhl
IGNhc2Ugd2hlbiB0aGVyZSdzIG5laXRoZXIgR1RFU1RfQ09MT1Igbm9yIC0tZ3Rlc3RfY29sb3Iu
IiIiCi0KLSAgICBpZiBub3QgSVNfV0lORE9XUzoKLSAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNl
c0NvbG9yKCdkdW1iJywgTm9uZSwgTm9uZSkpCi0gICAgICBzZWxmLmFzc2VydF8obm90IFVzZXND
b2xvcignZW1hY3MnLCBOb25lLCBOb25lKSkKLSAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0Nv
bG9yKCd4dGVybS1tb25vJywgTm9uZSwgTm9uZSkpCi0gICAgICBzZWxmLmFzc2VydF8obm90IFVz
ZXNDb2xvcigndW5rbm93bicsIE5vbmUsIE5vbmUpKQotICAgICAgc2VsZi5hc3NlcnRfKG5vdCBV
c2VzQ29sb3IoTm9uZSwgTm9uZSwgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcign
bGludXgnLCBOb25lLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdjeWd3aW4n
LCBOb25lLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybScsIE5vbmUs
IE5vbmUpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywgTm9uZSwg
Tm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tMjU2Y29sb3InLCBOb25l
LCBOb25lKSkKLQotICBkZWYgdGVzdEZsYWdPbmx5KHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBj
YXNlIHdoZW4gdGhlcmUncyAtLWd0ZXN0X2NvbG9yIGJ1dCBub3QgR1RFU1RfQ09MT1IuIiIiCi0K
LSAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcignZHVtYicsIE5vbmUsICdubycpKQotICAg
IHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsIE5vbmUsICdubycpKQot
ICAgIGlmIG5vdCBJU19XSU5ET1dTOgotICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3Io
J2VtYWNzJywgTm9uZSwgJ2F1dG8nKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVy
bScsIE5vbmUsICdhdXRvJykpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsIE5v
bmUsICd5ZXMnKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybScsIE5vbmUsICd5
ZXMnKSkKLQotICBkZWYgdGVzdEVudlZhck9ubHkoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhlIGNh
c2Ugd2hlbiB0aGVyZSdzIEdURVNUX0NPTE9SIGJ1dCBub3QgLS1ndGVzdF9jb2xvci4iIiIKLQot
ICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdkdW1iJywgJ25vJywgTm9uZSkpCi0gICAg
c2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywgJ25vJywgTm9uZSkpCi0g
ICAgaWYgbm90IElTX1dJTkRPV1M6Ci0gICAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcign
ZHVtYicsICdhdXRvJywgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0t
Y29sb3InLCAnYXV0bycsIE5vbmUpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWIn
LCAneWVzJywgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tY29sb3In
LCAneWVzJywgTm9uZSkpCi0KLSAgZGVmIHRlc3RFbnZWYXJBbmRGbGFnKHNlbGYpOgotICAgICIi
IlRlc3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUgYXJlIGJvdGggR1RFU1RfQ09MT1IgYW5kIC0tZ3Rl
c3RfY29sb3IuIiIiCi0KLSAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0tY29s
b3InLCAnbm8nLCAnbm8nKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgJ25v
JywgJ3llcycpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywgJ25v
JywgJ2F1dG8nKSkKLQotICBkZWYgdGVzdEFsaWFzZXNPZlllc0FuZE5vKHNlbGYpOgotICAgICIi
IlRlc3RzIHVzaW5nIGFsaWFzZXMgaW4gc3BlY2lmeWluZyAtLWd0ZXN0X2NvbG9yLiIiIgotCi0g
ICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUsICd0cnVlJykpCi0gICAgc2Vs
Zi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUsICdZRVMnKSkKLSAgICBzZWxmLmFzc2Vy
dF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ1QnKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0Nv
bG9yKCdkdW1iJywgTm9uZSwgJzEnKSkKLQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9y
KCd4dGVybScsIE5vbmUsICdmJykpCi0gICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0
ZXJtJywgTm9uZSwgJ2ZhbHNlJykpCi0gICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0
ZXJtJywgTm9uZSwgJzAnKSkKLSAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0n
LCBOb25lLCAndW5rbm93bicpKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGd0
ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF9jb2xvcl90ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThk
Mzc3YzliMmFmMGJmZTgxOTVjYTJjMGE5MDIxMzlkOTExMDY0Mi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLy8g
Q29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8K
LS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0
cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0v
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gQSBoZWxwZXIgcHJvZ3JhbSBmb3Ig
dGVzdGluZyBob3cgR29vZ2xlIFRlc3QgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHVzZQotLy8gY29s
b3JzIGluIHRoZSBvdXRwdXQuICBJdCBwcmludHMgIllFUyIgYW5kIHJldHVybnMgMSBpZiBHb29n
bGUgVGVzdAotLy8gZGVjaWRlcyB0byB1c2UgY29sb3JzLCBhbmQgcHJpbnRzICJOTyIgYW5kIHJl
dHVybnMgMCBvdGhlcndpc2UuCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlz
IHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUg
YmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2ls
bCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVz
ZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0v
LyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJz
cmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0K
LXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaG91bGRVc2VDb2xvcjsKLQotLy8gVGhlIHB1cnBv
c2Ugb2YgdGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUgVW5pdFRlc3Qgc2luZ2xldG9uIGlzCi0v
LyBjcmVhdGVkIGJlZm9yZSBtYWluKCkgaXMgZW50ZXJlZCwgYW5kIHRodXMgdGhhdCBTaG91bGRV
c2VDb2xvcigpCi0vLyB3b3JrcyB0aGUgc2FtZSB3YXkgYXMgaW4gYSByZWFsIEdvb2dsZS1UZXN0
LWJhc2VkIHRlc3QuICBXZSBkb24ndCBhY3R1YWwKLS8vIHJ1biB0aGUgVEVTVCBpdHNlbGYuCi1U
RVNUKEdUZXN0Q29sb3JUZXN0LCBEdW1teSkgewotfQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hh
cioqIGFyZ3YpIHsKLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0g
IGlmIChTaG91bGRVc2VDb2xvcih0cnVlKSkgewotICAgIC8vIEdvb2dsZSBUZXN0IGRlY2lkZXMg
dG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0IChhc3N1bWluZyBpdAotICAgIC8vIGdvZXMgdG8g
YSBUVFkpLgotICAgIHByaW50ZigiWUVTXG4iKTsKLSAgICByZXR1cm4gMTsKLSAgfSBlbHNlIHsK
LSAgICAvLyBHb29nbGUgVGVzdCBkZWNpZGVzIG5vdCB0byB1c2UgY29sb3JzIGluIHRoZSBvdXRw
dXQuCi0gICAgcHJpbnRmKCJOT1xuIik7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0LnB5IGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3QucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGJjYzBiZmQ1NTMyOTcyNjgwNzYxNTc3MzZjODNlNGE4
NGNhZTA1NmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3QucHkKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENv
cHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotIiIiVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCBjb3JyZWN0bHkgcGFy
c2VzIGVudmlyb25tZW50IHZhcmlhYmxlcy4iIiIKLQotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IG9zCi1pbXBvcnQgZ3Rlc3RfdGVzdF91dGls
cwotCi0KLUlTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdudCcKLUlTX0xJTlVYID0gb3MubmFtZSA9
PSAncG9zaXgnIGFuZCBvcy51bmFtZSgpWzBdID09ICdMaW51eCcKLQotQ09NTUFORCA9IGd0ZXN0
X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9lbnZfdmFyX3Rlc3RfJykK
LQotZW52aXJvbiA9IG9zLmVudmlyb24uY29weSgpCi0KLQotZGVmIEFzc2VydEVxKGV4cGVjdGVk
LCBhY3R1YWwpOgotICBpZiBleHBlY3RlZCAhPSBhY3R1YWw6Ci0gICAgcHJpbnQgJ0V4cGVjdGVk
OiAlcycgJSAoZXhwZWN0ZWQsKQotICAgIHByaW50ICcgIEFjdHVhbDogJXMnICUgKGFjdHVhbCwp
Ci0gICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKLQotCi1kZWYgU2V0RW52VmFyKGVudl92YXIsIHZh
bHVlKToKLSAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxlIHRvICd2YWx1ZSc7IHVuc2V0cyBpdCB3
aGVuICd2YWx1ZScgaXMgTm9uZS4iIiIKLQotICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICBl
bnZpcm9uW2Vudl92YXJdID0gdmFsdWUKLSAgZWxpZiBlbnZfdmFyIGluIGVudmlyb246Ci0gICAg
ZGVsIGVudmlyb25bZW52X3Zhcl0KLQotCi1kZWYgR2V0RmxhZyhmbGFnKToKLSAgIiIiUnVucyBn
dGVzdF9lbnZfdmFyX3Rlc3RfIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQuIiIiCi0KLSAgYXJncyA9
IFtDT01NQU5EXQotICBpZiBmbGFnIGlzIG5vdCBOb25lOgotICAgIGFyZ3MgKz0gW2ZsYWddCi0g
IHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoYXJncywgZW52PWVudmlyb24pLm91
dHB1dAotCi0KLWRlZiBUZXN0RmxhZyhmbGFnLCB0ZXN0X3ZhbCwgZGVmYXVsdF92YWwpOgotICAi
IiJWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBmbGFnIGlzIGFmZmVjdGVkIGJ5IHRoZSBjb3JyZXNw
b25kaW5nIGVudiB2YXIuIiIiCi0KLSAgZW52X3ZhciA9ICdHVEVTVF8nICsgZmxhZy51cHBlcigp
Ci0gIFNldEVudlZhcihlbnZfdmFyLCB0ZXN0X3ZhbCkKLSAgQXNzZXJ0RXEodGVzdF92YWwsIEdl
dEZsYWcoZmxhZykpCi0gIFNldEVudlZhcihlbnZfdmFyLCBOb25lKQotICBBc3NlcnRFcShkZWZh
dWx0X3ZhbCwgR2V0RmxhZyhmbGFnKSkKLQotCi1jbGFzcyBHVGVzdEVudlZhclRlc3QoZ3Rlc3Rf
dGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gIGRlZiB0ZXN0RW52VmFyQWZmZWN0c0ZsYWcoc2VsZik6
Ci0gICAgIiIiVGVzdHMgdGhhdCBlbnZpcm9ubWVudCB2YXJpYWJsZSBzaG91bGQgYWZmZWN0IHRo
ZSBjb3JyZXNwb25kaW5nIGZsYWcuIiIiCi0KLSAgICBUZXN0RmxhZygnYnJlYWtfb25fZmFpbHVy
ZScsICcxJywgJzAnKQotICAgIFRlc3RGbGFnKCdjb2xvcicsICd5ZXMnLCAnYXV0bycpCi0gICAg
VGVzdEZsYWcoJ2ZpbHRlcicsICdGb29UZXN0LkJhcicsICcqJykKLSAgICBUZXN0RmxhZygnb3V0
cHV0JywgJ3htbDp0bXAvZm9vLnhtbCcsICcnKQotICAgIFRlc3RGbGFnKCdwcmludF90aW1lJywg
JzAnLCAnMScpCi0gICAgVGVzdEZsYWcoJ3JlcGVhdCcsICc5OTknLCAnMScpCi0gICAgVGVzdEZs
YWcoJ3Rocm93X29uX2ZhaWx1cmUnLCAnMScsICcwJykKLSAgICBUZXN0RmxhZygnZGVhdGhfdGVz
dF9zdHlsZScsICd0aHJlYWRzYWZlJywgJ2Zhc3QnKQotCi0gICAgaWYgSVNfV0lORE9XUzoKLSAg
ICAgIFRlc3RGbGFnKCdjYXRjaF9leGNlcHRpb25zJywgJzEnLCAnMCcpCi0KLSAgICBpZiBJU19M
SU5VWDoKLSAgICAgIFRlc3RGbGFnKCdkZWF0aF90ZXN0X3VzZV9mb3JrJywgJzEnLCAnMCcpCi0g
ICAgICBUZXN0RmxhZygnc3RhY2tfdHJhY2VfZGVwdGgnLCAnMCcsICcxMDAnKQotCi0KLWlmIF9f
bmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdF8uY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdF8uY2MKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3Yzc4ZmNmMzA1MzEyYTY2YzI2NWIxODEwYTY5
MTA3N2RiNzcxZjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3RfLmNjCisr
KyAvZGV2L251bGwKQEAgLTEsMTI2ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUg
SW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
Ly8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9u
ZyBXYW4pCi0KLS8vIEEgaGVscGVyIHByb2dyYW0gZm9yIHRlc3RpbmcgdGhhdCBHb29nbGUgVGVz
dCBwYXJzZXMgdGhlIGVudmlyb25tZW50Ci0vLyB2YXJpYWJsZXMgY29ycmVjdGx5LgotCi0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2luY2x1ZGUgPGlvc3RyZWFtPgotCi0jZGVmaW5lIEdU
RVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5o
IgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi11c2luZyA6OnN0ZDo6Y291dDsKLQot
bmFtZXNwYWNlIHRlc3RpbmcgewotCi0vLyBUaGUgcHVycG9zZSBvZiB0aGlzIGlzIHRvIG1ha2Ug
dGhlIHRlc3QgbW9yZSByZWFsaXN0aWMgYnkgZW5zdXJpbmcKLS8vIHRoYXQgdGhlIFVuaXRUZXN0
IHNpbmdsZXRvbiBpcyBjcmVhdGVkIGJlZm9yZSBtYWluKCkgaXMgZW50ZXJlZC4KLS8vIFdlIGRv
bid0IGFjdHVhbCBydW4gdGhlIFRFU1QgaXRzZWxmLgotVEVTVChHVGVzdEVudlZhclRlc3QsIER1
bW15KSB7Ci19Ci0KLXZvaWQgUHJpbnRGbGFnKGNvbnN0IGNoYXIqIGZsYWcpIHsKLSAgaWYgKHN0
cmNtcChmbGFnLCAiYnJlYWtfb25fZmFpbHVyZSIpID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNU
X0ZMQUcoYnJlYWtfb25fZmFpbHVyZSk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaWYgKHN0cmNt
cChmbGFnLCAiY2F0Y2hfZXhjZXB0aW9ucyIpID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZM
QUcoY2F0Y2hfZXhjZXB0aW9ucyk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaWYgKHN0cmNtcChm
bGFnLCAiY29sb3IiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKGNvbG9yKTsKLSAg
ICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcsICJkZWF0aF90ZXN0X3N0eWxlIikg
PT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKTsKLSAgICBy
ZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcsICJkZWF0aF90ZXN0X3VzZV9mb3JrIikg
PT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKTsKLSAg
ICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcsICJmaWx0ZXIiKSA9PSAwKSB7Ci0g
ICAgY291dCA8PCBHVEVTVF9GTEFHKGZpbHRlcik7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaWYg
KHN0cmNtcChmbGFnLCAib3V0cHV0IikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhv
dXRwdXQpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywgInByaW50X3Rp
bWUiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKHByaW50X3RpbWUpOwotICAgIHJl
dHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywgInJlcGVhdCIpID09IDApIHsKLSAgICBj
b3V0IDw8IEdURVNUX0ZMQUcocmVwZWF0KTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3Ry
Y21wKGZsYWcsICJzdGFja190cmFjZV9kZXB0aCIpID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNU
X0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJj
bXAoZmxhZywgInRocm93X29uX2ZhaWx1cmUiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9G
TEFHKHRocm93X29uX2ZhaWx1cmUpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGNvdXQgPDwgIklu
dmFsaWQgZmxhZyBuYW1lICIgPDwgZmxhZwotICAgICAgIDw8ICIuICBWYWxpZCBuYW1lcyBhcmUg
YnJlYWtfb25fZmFpbHVyZSwgY29sb3IsIGZpbHRlciwgZXRjLlxuIjsKLSAgZXhpdCgxKTsKLX0K
LQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBh
cmd2KSB7Ci0gIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICBpZiAo
YXJnYyAhPSAyKSB7Ci0gICAgY291dCA8PCAiVXNhZ2U6IGd0ZXN0X2Vudl92YXJfdGVzdF8gTkFN
RV9PRl9GTEFHXG4iOwotICAgIHJldHVybiAxOwotICB9Ci0KLSAgdGVzdGluZzo6UHJpbnRGbGFn
KGFyZ3ZbMV0pOwotICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVzdC5jYwppbmRleCBjOTM5MjYxNGQ3NGQ3
ZmMyMzJlODZiMmMzZDZjZGIxYjFlMmI2MTMxLi5iYzk1MjRkNjYzNzNlNzE5NTFjYWNjZDkwNmMw
NjZlZjRhZjk0YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X2Vudmlyb25tZW50X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjCkBAIC0yNiwxNCArMjYsMTQgQEAKIC8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdh
bkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIC8vCiAvLyBUZXN0cyB1c2luZyBnbG9iYWwg
dGVzdCBlbnZpcm9ubWVudHMuCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdGRp
by5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
KyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCiAKIG5hbWVzcGFjZSB0ZXN0aW5n
IHsKIEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhmaWx0ZXIpOwpAQCAtOTIsNiArOTIsNyBAQCBjbGFz
cyBNeUVudmlyb25tZW50IDogcHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50IHsKIAogICAvLyBX
YXMgVGVhckRvd24oKSBydW4/CiAgIGJvb2wgdGVhcl9kb3duX3dhc19ydW4oKSBjb25zdCB7IHJl
dHVybiB0ZWFyX2Rvd25fd2FzX3J1bl87IH0KKwogIHByaXZhdGU6CiAgIEZhaWx1cmVUeXBlIGZh
aWx1cmVfaW5fc2V0X3VwXzsKICAgYm9vbCBzZXRfdXBfd2FzX3J1bl87CkBAIC0xMTEsNyArMTEy
LDcgQEAgVEVTVChGb29UZXN0LCBCYXIpIHsKIHZvaWQgQ2hlY2soYm9vbCBjb25kaXRpb24sIGNv
bnN0IGNoYXIqIG1zZykgewogICBpZiAoIWNvbmRpdGlvbikgewogICAgIHByaW50ZigiRkFJTEVE
OiAlc1xuIiwgbXNnKTsKLSAgICBhYm9ydCgpOworICAgIHRlc3Rpbmc6OmludGVybmFsOjpwb3Np
eDo6QWJvcnQoKTsKICAgfQogfQogCkBAIC0xMjMsNiArMTI0LDcgQEAgaW50IFJ1bkFsbFRlc3Rz
KE15RW52aXJvbm1lbnQqIGVudiwgRmFpbHVyZVR5cGUgZmFpbHVyZSkgewogICBlbnYtPlJlc2V0
KCk7CiAgIGVudi0+c2V0X2ZhaWx1cmVfaW5fc2V0X3VwKGZhaWx1cmUpOwogICB0ZXN0X3dhc19y
dW4gPSBmYWxzZTsKKyAgdGVzdGluZzo6aW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpLT5DbGVh
ckFkSG9jVGVzdFJlc3VsdCgpOwogICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2ZpbHRlcl91bml0dGVz
dC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwZDFhNzcwMDU4Y2NiOTAxMTU0Njgw
OTI0Y2JkM2M2NGQ4YzhkMTc5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0
ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjMzICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5
dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0
aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCB0ZXN0
IGZpbHRlcnMuCi0KLUEgdXNlciBjYW4gc3BlY2lmeSB3aGljaCB0ZXN0KHMpIGluIGEgR29vZ2xl
IFRlc3QgcHJvZ3JhbSB0byBydW4gdmlhIGVpdGhlcgotdGhlIEdURVNUX0ZJTFRFUiBlbnZpcm9u
bWVudCB2YXJpYWJsZSBvciB0aGUgLS1ndGVzdF9maWx0ZXIgZmxhZy4KLVRoaXMgc2NyaXB0IHRl
c3RzIHN1Y2ggZnVuY3Rpb25hbGl0eSBieSBpbnZva2luZwotZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0
XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aCBHb29nbGUgVGVzdCkgd2l0aCBkaWZmZXJlbnQKLWVu
dmlyb25tZW50cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdzLgotCi1Ob3RlIHRoYXQgdGVzdCBzaGFy
ZGluZyBtYXkgYWxzbyBpbmZsdWVuY2Ugd2hpY2ggdGVzdHMgYXJlIGZpbHRlcmVkLiBUaGVyZWZv
cmUsCi13ZSB0ZXN0IHRoYXQgaGVyZSBhbHNvLgotIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdv
b2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQg
c2V0cwotaW1wb3J0IHN5cwotCi1pbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwotCi0jIENvbnN0YW50
cy4KLQotIyBDaGVja3MgaWYgdGhpcyBwbGF0Zm9ybSBjYW4gcGFzcyBlbXB0eSBlbnZpcm9ubWVu
dCB2YXJpYWJsZXMgdG8gY2hpbGQKLSMgcHJvY2Vzc2VzLiAgV2Ugc2V0IGFuIGVudiB2YXJpYWJs
ZSB0byBhbiBlbXB0eSBzdHJpbmcgYW5kIGludm9rZSBhIHB5dGhvbgotIyBzY3JpcHQgaW4gYSBz
dWJwcm9jZXNzIHRvIHByaW50IHdoZXRoZXIgdGhlIHZhcmlhYmxlIGlzIFNUSUxMIGluCi0jIG9z
LmVudmlyb24uICBXZSB0aGVuIHVzZSAnZXZhbCcgdG8gcGFyc2UgdGhlIGNoaWxkJ3Mgb3V0cHV0
IHNvIHRoYXQgYW4KLSMgZXhjZXB0aW9uIGlzIHRocm93biBpZiB0aGUgaW5wdXQgaXMgYW55dGhp
bmcgb3RoZXIgdGhhbiAnVHJ1ZScgbm9yICdGYWxzZScuCi1vcy5lbnZpcm9uWydFTVBUWV9WQVIn
XSA9ICcnCi1jaGlsZCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKLSAgICBbc3lzLmV4
ZWN1dGFibGUsICctYycsICdpbXBvcnQgb3M7IHByaW50IFwnRU1QVFlfVkFSXCcgaW4gb3MuZW52
aXJvbiddKQotQ0FOX1BBU1NfRU1QVFlfRU5WID0gZXZhbChjaGlsZC5vdXRwdXQpCi0KLQotIyBD
aGVjayBpZiB0aGlzIHBsYXRmb3JtIGNhbiB1bnNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW4g
Y2hpbGQgcHJvY2Vzc2VzLgotIyBXZSBzZXQgYW4gZW52IHZhcmlhYmxlIHRvIGEgbm9uLWVtcHR5
IHN0cmluZywgdW5zZXQgaXQsIGFuZCBpbnZva2UKLSMgYSBweXRob24gc2NyaXB0IGluIGEgc3Vi
cHJvY2VzcyB0byBwcmludCB3aGV0aGVyIHRoZSB2YXJpYWJsZQotIyBpcyBOTyBMT05HRVIgaW4g
b3MuZW52aXJvbi4KLSMgV2UgdXNlICdldmFsJyB0byBwYXJzZSB0aGUgY2hpbGQncyBvdXRwdXQg
c28gdGhhdCBhbiBleGNlcHRpb24KLSMgaXMgdGhyb3duIGlmIHRoZSBpbnB1dCBpcyBuZWl0aGVy
ICdUcnVlJyBub3IgJ0ZhbHNlJy4KLW9zLmVudmlyb25bJ1VOU0VUX1ZBUiddID0gJ1gnCi1kZWwg
b3MuZW52aXJvblsnVU5TRVRfVkFSJ10KLWNoaWxkID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9j
ZXNzKAotICAgIFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgJ2ltcG9ydCBvczsgcHJpbnQgXCdVTlNF
VF9WQVJcJyBub3QgaW4gb3MuZW52aXJvbiddKQotQ0FOX1VOU0VUX0VOViA9IGV2YWwoY2hpbGQu
b3V0cHV0KQotCi0KLSMgQ2hlY2tzIGlmIHdlIHNob3VsZCB0ZXN0IHdpdGggYW4gZW1wdHkgZmls
dGVyLiBUaGlzIGRvZXNuJ3QKLSMgbWFrZSBzZW5zZSBvbiBwbGF0Zm9ybXMgdGhhdCBjYW5ub3Qg
cGFzcyBlbXB0eSBlbnYgdmFyaWFibGVzIChXaW4zMikKLSMgYW5kIG9uIHBsYXRmb3JtcyB0aGF0
IGNhbm5vdCB1bnNldCB2YXJpYWJsZXMgKHNpbmNlIHdlIGNhbm5vdCB0ZWxsCi0jIHRoZSBkaWZm
ZXJlbmNlIGJldHdlZW4gIiIgYW5kIE5VTEwgLS0gQm9ybGFuZCBhbmQgU29sYXJpcyA8IDUuMTAp
Ci1DQU5fVEVTVF9FTVBUWV9GSUxURVIgPSAoQ0FOX1BBU1NfRU1QVFlfRU5WIGFuZCBDQU5fVU5T
RVRfRU5WKQotCi0KLSMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciBzcGVjaWZ5aW5nIHRo
ZSB0ZXN0IGZpbHRlcnMuCi1GSUxURVJfRU5WX1ZBUiA9ICdHVEVTVF9GSUxURVInCi0KLSMgVGhl
IGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBzaGFyZGluZy4KLVRPVEFMX1NIQVJEU19F
TlZfVkFSID0gJ0dURVNUX1RPVEFMX1NIQVJEUycKLVNIQVJEX0lOREVYX0VOVl9WQVIgPSAnR1RF
U1RfU0hBUkRfSU5ERVgnCi1TSEFSRF9TVEFUVVNfRklMRV9FTlZfVkFSID0gJ0dURVNUX1NIQVJE
X1NUQVRVU19GSUxFJwotCi0jIFRoZSBjb21tYW5kIGxpbmUgZmxhZyBmb3Igc3BlY2lmeWluZyB0
aGUgdGVzdCBmaWx0ZXJzLgotRklMVEVSX0ZMQUcgPSAnZ3Rlc3RfZmlsdGVyJwotCi0jIFRoZSBj
b21tYW5kIGxpbmUgZmxhZyBmb3IgaW5jbHVkaW5nIGRpc2FibGVkIHRlc3RzLgotQUxTT19SVU5f
RElTQUJFRF9URVNUU19GTEFHID0gJ2d0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzJwotCi0j
IENvbW1hbmQgdG8gcnVuIHRoZSBndGVzdF9maWx0ZXJfdW5pdHRlc3RfIHByb2dyYW0uCi1DT01N
QU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2d0ZXN0X2ZpbHRl
cl91bml0dGVzdF8nKQotCi0jIFJlZ2V4IGZvciBkZXRlcm1pbmluZyB3aGV0aGVyIHBhcmFtZXRl
cml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQgaW4gdGhlIGJpbmFyeS4KLVBBUkFNX1RFU1RfUkVHRVgg
PSByZS5jb21waWxlKHInL1BhcmFtVGVzdCcpCi0KLSMgUmVnZXggZm9yIHBhcnNpbmcgdGVzdCBj
YXNlIG5hbWVzIGZyb20gR29vZ2xlIFRlc3QncyBvdXRwdXQuCi1URVNUX0NBU0VfUkVHRVggPSBy
ZS5jb21waWxlKHInXlxbXC0rXF0gXGQrIHRlc3RzPyBmcm9tIChcdysoL1x3Kyk/KScpCi0KLSMg
UmVnZXggZm9yIHBhcnNpbmcgdGVzdCBuYW1lcyBmcm9tIEdvb2dsZSBUZXN0J3Mgb3V0cHV0Lgot
VEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocideXFtccypSVU5ccypcXS4qXC4oXHcrKC9cdyspPykn
KQotCi0jIFRoZSBjb21tYW5kIGxpbmUgZmxhZyB0byB0ZWxsIEdvb2dsZSBUZXN0IHRvIG91dHB1
dCB0aGUgbGlzdCBvZiB0ZXN0cyBpdAotIyB3aWxsIHJ1bi4KLUxJU1RfVEVTVFNfRkxBRyA9ICct
LWd0ZXN0X2xpc3RfdGVzdHMnCi0KLSMgSW5kaWNhdGVzIHdoZXRoZXIgR29vZ2xlIFRlc3Qgc3Vw
cG9ydHMgZGVhdGggdGVzdHMuCi1TVVBQT1JUU19ERUFUSF9URVNUUyA9ICdIYXNEZWF0aFRlc3Qn
IGluIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKLSAgICBbQ09NTUFORCwgTElTVF9URVNU
U19GTEFHXSkub3V0cHV0Ci0KLSMgRnVsbCBuYW1lcyBvZiBhbGwgdGVzdHMgaW4gZ3Rlc3RfZmls
dGVyX3VuaXR0ZXN0c18uCi1QQVJBTV9URVNUUyA9IFsKLSAgICAnU2VxUC9QYXJhbVRlc3QuVGVz
dFgvMCcsCi0gICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzEnLAotICAgICdTZXFQL1BhcmFtVGVz
dC5UZXN0WS8wJywKLSAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMScsCi0gICAgJ1NlcVEvUGFy
YW1UZXN0LlRlc3RYLzAnLAotICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WC8xJywKLSAgICAnU2Vx
US9QYXJhbVRlc3QuVGVzdFkvMCcsCi0gICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RZLzEnLAotICAg
IF0KLQotRElTQUJMRURfVEVTVFMgPSBbCi0gICAgJ0JhclRlc3QuRElTQUJMRURfVGVzdEZvdXIn
LAotICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rlc3RGaXZlJywKLSAgICAnQmF6VGVzdC5ESVNBQkxF
RF9UZXN0QycsCi0gICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnLAotICAgICdESVNBQkxF
RF9Gb29iYXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywKLSAgICAnRElTQUJMRURfRm9vYmFyYmF6VGVz
dC5UZXN0QScsCi0gICAgXQotCi1pZiBTVVBQT1JUU19ERUFUSF9URVNUUzoKLSAgREVBVEhfVEVT
VFMgPSBbCi0gICAgJ0hhc0RlYXRoVGVzdC5UZXN0MScsCi0gICAgJ0hhc0RlYXRoVGVzdC5UZXN0
MicsCi0gICAgXQotZWxzZToKLSAgREVBVEhfVEVTVFMgPSBbXQotCi0jIEFsbCB0aGUgbm9uLWRp
c2FibGVkIHRlc3RzLgotQUNUSVZFX1RFU1RTID0gWwotICAgICdGb29UZXN0LkFiYycsCi0gICAg
J0Zvb1Rlc3QuWHl6JywKLQotICAgICdCYXJUZXN0LlRlc3RPbmUnLAotICAgICdCYXJUZXN0LlRl
c3RUd28nLAotICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCi0KLSAgICAnQmF6VGVzdC5UZXN0T25l
JywKLSAgICAnQmF6VGVzdC5UZXN0QScsCi0gICAgJ0JhelRlc3QuVGVzdEInLAotICAgIF0gKyBE
RUFUSF9URVNUUyArIFBBUkFNX1RFU1RTCi0KLXBhcmFtX3Rlc3RzX3ByZXNlbnQgPSBOb25lCi0K
LSMgVXRpbGl0aWVzLgotCi1lbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkKLQotCi1kZWYgU2V0
RW52VmFyKGVudl92YXIsIHZhbHVlKToKLSAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxlIHRvICd2
YWx1ZSc7IHVuc2V0cyBpdCB3aGVuICd2YWx1ZScgaXMgTm9uZS4iIiIKLQotICBpZiB2YWx1ZSBp
cyBub3QgTm9uZToKLSAgICBlbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKLSAgZWxpZiBlbnZfdmFy
IGluIGVudmlyb246Ci0gICAgZGVsIGVudmlyb25bZW52X3Zhcl0KLQotCi1kZWYgUnVuQW5kUmV0
dXJuT3V0cHV0KGFyZ3MgPSBOb25lKToKLSAgIiIiUnVucyB0aGUgdGVzdCBwcm9ncmFtIGFuZCBy
ZXR1cm5zIGl0cyBvdXRwdXQuIiIiCi0KLSAgcmV0dXJuIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJv
Y2VzcyhbQ09NTUFORF0gKyAoYXJncyBvciBbXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZW52PWVudmlyb24pLm91dHB1dAotCi0KLWRlZiBSdW5BbmRFeHRyYWN0VGVz
dExpc3QoYXJncyA9IE5vbmUpOgotICAiIiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0gYW5kIHJldHVy
bnMgaXRzIGV4aXQgY29kZSBhbmQgYSBsaXN0IG9mIHRlc3RzIHJ1bi4iIiIKLQotICBwID0gZ3Rl
c3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtDT01NQU5EXSArIChhcmdzIG9yIFtdKSwgZW52PWVu
dmlyb24pCi0gIHRlc3RzX3J1biA9IFtdCi0gIHRlc3RfY2FzZSA9ICcnCi0gIHRlc3QgPSAnJwot
ICBmb3IgbGluZSBpbiBwLm91dHB1dC5zcGxpdCgnXG4nKToKLSAgICBtYXRjaCA9IFRFU1RfQ0FT
RV9SRUdFWC5tYXRjaChsaW5lKQotICAgIGlmIG1hdGNoIGlzIG5vdCBOb25lOgotICAgICAgdGVz
dF9jYXNlID0gbWF0Y2guZ3JvdXAoMSkKLSAgICBlbHNlOgotICAgICAgbWF0Y2ggPSBURVNUX1JF
R0VYLm1hdGNoKGxpbmUpCi0gICAgICBpZiBtYXRjaCBpcyBub3QgTm9uZToKLSAgICAgICAgdGVz
dCA9IG1hdGNoLmdyb3VwKDEpCi0gICAgICAgIHRlc3RzX3J1bi5hcHBlbmQodGVzdF9jYXNlICsg
Jy4nICsgdGVzdCkKLSAgcmV0dXJuICh0ZXN0c19ydW4sIHAuZXhpdF9jb2RlKQotCi0KLWRlZiBJ
bnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LCBmdW5jdGlvbiwgKmFyZ3MsICoqa3dhcmdz
KToKLSAgIiIiUnVucyB0aGUgZ2l2ZW4gZnVuY3Rpb24gYW5kIGFyZ3VtZW50cyBpbiBhIG1vZGlm
aWVkIGVudmlyb25tZW50LiIiIgotICB0cnk6Ci0gICAgb3JpZ2luYWxfZW52ID0gZW52aXJvbi5j
b3B5KCkKLSAgICBlbnZpcm9uLnVwZGF0ZShleHRyYV9lbnYpCi0gICAgcmV0dXJuIGZ1bmN0aW9u
KCphcmdzLCAqKmt3YXJncykKLSAgZmluYWxseToKLSAgICBlbnZpcm9uLmNsZWFyKCkKLSAgICBl
bnZpcm9uLnVwZGF0ZShvcmlnaW5hbF9lbnYpCi0KLQotZGVmIFJ1bldpdGhTaGFyZGluZyh0b3Rh
bF9zaGFyZHMsIHNoYXJkX2luZGV4LCBjb21tYW5kKToKLSAgIiIiUnVucyBhIHRlc3QgcHJvZ3Jh
bSBzaGFyZCBhbmQgcmV0dXJucyBleGl0IGNvZGUgYW5kIGEgbGlzdCBvZiB0ZXN0cyBydW4uIiIi
Ci0KLSAgZXh0cmFfZW52ID0ge1NIQVJEX0lOREVYX0VOVl9WQVI6IHN0cihzaGFyZF9pbmRleCks
Ci0gICAgICAgICAgICAgICBUT1RBTF9TSEFSRFNfRU5WX1ZBUjogc3RyKHRvdGFsX3NoYXJkcyl9
Ci0gIHJldHVybiBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LCBSdW5BbmRFeHRyYWN0
VGVzdExpc3QsIGNvbW1hbmQpCi0KLSMgVGhlIHVuaXQgdGVzdC4KLQotCi1jbGFzcyBHVGVzdEZp
bHRlclVuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgotICAiIiJUZXN0cyB0aGUg
ZW52IHZhcmlhYmxlIG9yIHRoZSBjb21tYW5kIGxpbmUgZmxhZyB0byBmaWx0ZXIgdGVzdHMuIiIi
Ci0KLSAgIyBVdGlsaXRpZXMuCi0KLSAgZGVmIEFzc2VydFNldEVxdWFsKHNlbGYsIGxocywgcmhz
KToKLSAgICAiIiJBc3NlcnRzIHRoYXQgdHdvIHNldHMgYXJlIGVxdWFsLiIiIgotCi0gICAgZm9y
IGVsZW0gaW4gbGhzOgotICAgICAgc2VsZi5hc3NlcnRfKGVsZW0gaW4gcmhzLCAnJXMgaW4gJXMn
ICUgKGVsZW0sIHJocykpCi0KLSAgICBmb3IgZWxlbSBpbiByaHM6Ci0gICAgICBzZWxmLmFzc2Vy
dF8oZWxlbSBpbiBsaHMsICclcyBpbiAlcycgJSAoZWxlbSwgbGhzKSkKLQotICBkZWYgQXNzZXJ0
UGFydGl0aW9uSXNWYWxpZChzZWxmLCBzZXRfdmFyLCBsaXN0X29mX3NldHMpOgotICAgICIiIkFz
c2VydHMgdGhhdCBsaXN0X29mX3NldHMgaXMgYSB2YWxpZCBwYXJ0aXRpb24gb2Ygc2V0X3Zhci4i
IiIKLQotICAgIGZ1bGxfcGFydGl0aW9uID0gW10KLSAgICBmb3Igc2xpY2VfdmFyIGluIGxpc3Rf
b2Zfc2V0czoKLSAgICAgIGZ1bGxfcGFydGl0aW9uLmV4dGVuZChzbGljZV92YXIpCi0gICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4oc2V0X3ZhciksIGxlbihmdWxsX3BhcnRpdGlvbikpCi0gICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZXRzLlNldChzZXRfdmFyKSwgc2V0cy5TZXQoZnVsbF9wYXJ0aXRpb24p
KQotCi0gIGRlZiBBZGp1c3RGb3JQYXJhbWV0ZXJpemVkVGVzdHMoc2VsZiwgdGVzdHNfdG9fcnVu
KToKLSAgICAiIiJBZGp1c3QgdGVzdHNfdG9fcnVuIGluIGNhc2UgdmFsdWUgcGFyYW1ldGVyaXpl
ZCB0ZXN0cyBhcmUgZGlzYWJsZWQuIiIiCi0KLSAgICBnbG9iYWwgcGFyYW1fdGVzdHNfcHJlc2Vu
dAotICAgIGlmIG5vdCBwYXJhbV90ZXN0c19wcmVzZW50OgotICAgICAgcmV0dXJuIGxpc3Qoc2V0
cy5TZXQodGVzdHNfdG9fcnVuKSAtIHNldHMuU2V0KFBBUkFNX1RFU1RTKSkKLSAgICBlbHNlOgot
ICAgICAgcmV0dXJuIHRlc3RzX3RvX3J1bgotCi0gIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwgZ3Rl
c3RfZmlsdGVyLCB0ZXN0c190b19ydW4pOgotICAgICIiIkNoZWNrcyB0aGF0IHRoZSBiaW5hcnkg
cnVucyBjb3JyZWN0IHNldCBvZiB0ZXN0cyBmb3IgYSBnaXZlbiBmaWx0ZXIuIiIiCi0KLSAgICB0
ZXN0c190b19ydW4gPSBzZWxmLkFkanVzdEZvclBhcmFtZXRlcml6ZWRUZXN0cyh0ZXN0c190b19y
dW4pCi0KLSAgICAjIEZpcnN0LCB0ZXN0cyB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUu
Ci0KLSAgICAjIFdpbmRvd3MgcmVtb3ZlcyBlbXB0eSB2YXJpYWJsZXMgZnJvbSB0aGUgZW52aXJv
bm1lbnQgd2hlbiBwYXNzaW5nIGl0Ci0gICAgIyB0byBhIG5ldyBwcm9jZXNzLiAgVGhpcyBtZWFu
cyBpdCBpcyBpbXBvc3NpYmxlIHRvIHBhc3MgYW4gZW1wdHkgZmlsdGVyCi0gICAgIyBpbnRvIGEg
cHJvY2VzcyB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuICBIb3dldmVyLCB3ZSBjYW4g
c3RpbGwKLSAgICAjIHRlc3QgdGhlIGNhc2Ugd2hlbiB0aGUgdmFyaWFibGUgaXMgbm90IHN1cHBs
aWVkIChpLmUuLCBndGVzdF9maWx0ZXIgaXMKLSAgICAjIE5vbmUpLgotICAgICMgcHlsaW50OiBk
aXNhYmxlLW1zZz1DNjQwMwotICAgIGlmIENBTl9URVNUX0VNUFRZX0ZJTFRFUiBvciBndGVzdF9m
aWx0ZXIgIT0gJyc6Ci0gICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIGd0ZXN0X2ZpbHRl
cikKLSAgICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0TGlzdCgpWzBdCi0gICAgICBT
ZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIE5vbmUpCi0gICAgICBzZWxmLkFzc2VydFNldEVxdWFs
KHRlc3RzX3J1biwgdGVzdHNfdG9fcnVuKQotICAgICMgcHlsaW50OiBlbmFibGUtbXNnPUM2NDAz
Ci0KLSAgICAjIE5leHQsIHRlc3RzIHVzaW5nIHRoZSBjb21tYW5kIGxpbmUgZmxhZy4KLQotICAg
IGlmIGd0ZXN0X2ZpbHRlciBpcyBOb25lOgotICAgICAgYXJncyA9IFtdCi0gICAgZWxzZToKLSAg
ICAgIGFyZ3MgPSBbJy0tJXM9JXMnICUgKEZJTFRFUl9GTEFHLCBndGVzdF9maWx0ZXIpXQotCi0g
ICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KGFyZ3MpWzBdCi0gICAgc2VsZi5B
c3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIHRlc3RzX3RvX3J1bikKLQotICBkZWYgUnVuQW5kVmVy
aWZ5V2l0aFNoYXJkaW5nKHNlbGYsIGd0ZXN0X2ZpbHRlciwgdG90YWxfc2hhcmRzLCB0ZXN0c190
b19ydW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz1Ob25lLCBjaGVja19l
eGl0XzA9RmFsc2UpOgotICAgICIiIkNoZWNrcyB0aGF0IGJpbmFyeSBydW5zIGNvcnJlY3QgdGVz
dHMgZm9yIHRoZSBnaXZlbiBmaWx0ZXIgYW5kIHNoYXJkLgotCi0gICAgUnVucyBhbGwgc2hhcmRz
IG9mIGd0ZXN0X2ZpbHRlcl91bml0dGVzdF8gd2l0aCB0aGUgZ2l2ZW4gZmlsdGVyLCBhbmQKLSAg
ICB2ZXJpZmllcyB0aGF0IHRoZSByaWdodCBzZXQgb2YgdGVzdHMgd2VyZSBydW4uIFRoZSB1bmlv
biBvZiB0ZXN0cyBydW4KLSAgICBvbiBlYWNoIHNoYXJkIHNob3VsZCBiZSBpZGVudGljYWwgdG8g
dGVzdHNfdG9fcnVuLCB3aXRob3V0IGR1cGxpY2F0ZXMuCi0KLSAgICBBcmdzOgotICAgICAgZ3Rl
c3RfZmlsdGVyOiBBIGZpbHRlciB0byBhcHBseSB0byB0aGUgdGVzdHMuCi0gICAgICB0b3RhbF9z
aGFyZHM6IEEgdG90YWwgbnVtYmVyIG9mIHNoYXJkcyB0byBzcGxpdCB0ZXN0IHJ1biBpbnRvLgot
ICAgICAgdGVzdHNfdG9fcnVuOiBBIHNldCBvZiB0ZXN0cyBleHBlY3RlZCB0byBydW4uCi0gICAg
ICBhcmdzICAgOiAgICAgIEFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSB0byB0aGUgdGVzdCBiaW5h
cnkuCi0gICAgICBjaGVja19leGl0XzA6IFdoZW4gc2V0IHRvIGEgdHJ1ZSB2YWx1ZSwgbWFrZSBz
dXJlIHRoYXQgYWxsIHNoYXJkcwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMC4KLSAgICAi
IiIKLQotICAgIHRlc3RzX3RvX3J1biA9IHNlbGYuQWRqdXN0Rm9yUGFyYW1ldGVyaXplZFRlc3Rz
KHRlc3RzX3RvX3J1bikKLQotICAgICMgV2luZG93cyByZW1vdmVzIGVtcHR5IHZhcmlhYmxlcyBm
cm9tIHRoZSBlbnZpcm9ubWVudCB3aGVuIHBhc3NpbmcgaXQKLSAgICAjIHRvIGEgbmV3IHByb2Nl
c3MuICBUaGlzIG1lYW5zIGl0IGlzIGltcG9zc2libGUgdG8gcGFzcyBhbiBlbXB0eSBmaWx0ZXIK
LSAgICAjIGludG8gYSBwcm9jZXNzIHVzaW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS4gIEhv
d2V2ZXIsIHdlIGNhbiBzdGlsbAotICAgICMgdGVzdCB0aGUgY2FzZSB3aGVuIHRoZSB2YXJpYWJs
ZSBpcyBub3Qgc3VwcGxpZWQgKGkuZS4sIGd0ZXN0X2ZpbHRlciBpcwotICAgICMgTm9uZSkuCi0g
ICAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2NDAzCi0gICAgaWYgQ0FOX1RFU1RfRU1QVFlfRklM
VEVSIG9yIGd0ZXN0X2ZpbHRlciAhPSAnJzoKLSAgICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZB
UiwgZ3Rlc3RfZmlsdGVyKQotICAgICAgcGFydGl0aW9uID0gW10KLSAgICAgIGZvciBpIGluIHJh
bmdlKDAsIHRvdGFsX3NoYXJkcyk6Ci0gICAgICAgICh0ZXN0c19ydW4sIGV4aXRfY29kZSkgPSBS
dW5XaXRoU2hhcmRpbmcodG90YWxfc2hhcmRzLCBpLCBhcmdzKQotICAgICAgICBpZiBjaGVja19l
eGl0XzA6Ci0gICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBleGl0X2NvZGUpCi0gICAgICAg
IHBhcnRpdGlvbi5hcHBlbmQodGVzdHNfcnVuKQotCi0gICAgICBzZWxmLkFzc2VydFBhcnRpdGlv
bklzVmFsaWQodGVzdHNfdG9fcnVuLCBwYXJ0aXRpb24pCi0gICAgICBTZXRFbnZWYXIoRklMVEVS
X0VOVl9WQVIsIE5vbmUpCi0gICAgIyBweWxpbnQ6IGVuYWJsZS1tc2c9QzY0MDMKLQotICBkZWYg
UnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZChzZWxmLCBndGVzdF9maWx0ZXIsIHRlc3RzX3Rv
X3J1bik6Ci0gICAgIiIiQ2hlY2tzIHRoYXQgdGhlIGJpbmFyeSBydW5zIGNvcnJlY3Qgc2V0IG9m
IHRlc3RzIGZvciB0aGUgZ2l2ZW4gZmlsdGVyLgotCi0gICAgUnVucyBndGVzdF9maWx0ZXJfdW5p
dHRlc3RfIHdpdGggdGhlIGdpdmVuIGZpbHRlciwgYW5kIGVuYWJsZXMKLSAgICBkaXNhYmxlZCB0
ZXN0cy4gVmVyaWZpZXMgdGhhdCB0aGUgcmlnaHQgc2V0IG9mIHRlc3RzIHdlcmUgcnVuLgotCi0g
ICAgQXJnczoKLSAgICAgIGd0ZXN0X2ZpbHRlcjogQSBmaWx0ZXIgdG8gYXBwbHkgdG8gdGhlIHRl
c3RzLgotICAgICAgdGVzdHNfdG9fcnVuOiBBIHNldCBvZiB0ZXN0cyBleHBlY3RlZCB0byBydW4u
Ci0gICAgIiIiCi0KLSAgICB0ZXN0c190b19ydW4gPSBzZWxmLkFkanVzdEZvclBhcmFtZXRlcml6
ZWRUZXN0cyh0ZXN0c190b19ydW4pCi0KLSAgICAjIENvbnN0cnVjdCB0aGUgY29tbWFuZCBsaW5l
LgotICAgIGFyZ3MgPSBbJy0tJXMnICUgQUxTT19SVU5fRElTQUJFRF9URVNUU19GTEFHXQotICAg
IGlmIGd0ZXN0X2ZpbHRlciBpcyBub3QgTm9uZToKLSAgICAgIGFyZ3MuYXBwZW5kKCctLSVzPSVz
JyAlIChGSUxURVJfRkxBRywgZ3Rlc3RfZmlsdGVyKSkKLQotICAgIHRlc3RzX3J1biA9IFJ1bkFu
ZEV4dHJhY3RUZXN0TGlzdChhcmdzKVswXQotICAgIHNlbGYuQXNzZXJ0U2V0RXF1YWwodGVzdHNf
cnVuLCB0ZXN0c190b19ydW4pCi0KLSAgZGVmIHNldFVwKHNlbGYpOgotICAgICIiIlNldHMgdXAg
dGVzdCBjYXNlLgotCi0gICAgRGV0ZXJtaW5lcyB3aGV0aGVyIHZhbHVlLXBhcmFtZXRlcml6ZWQg
dGVzdHMgYXJlIGVuYWJsZWQgaW4gdGhlIGJpbmFyeSBhbmQKLSAgICBzZXRzIHRoZSBmbGFncyBh
Y2NvcmRpbmdseS4KLSAgICAiIiIKLQotICAgIGdsb2JhbCBwYXJhbV90ZXN0c19wcmVzZW50Ci0g
ICAgaWYgcGFyYW1fdGVzdHNfcHJlc2VudCBpcyBOb25lOgotICAgICAgcGFyYW1fdGVzdHNfcHJl
c2VudCA9IFBBUkFNX1RFU1RfUkVHRVguc2VhcmNoKAotICAgICAgICAgIFJ1bkFuZFJldHVybk91
dHB1dCgpKSBpcyBub3QgTm9uZQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9yKHNlbGYpOgot
ICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiBub3Qgc3BlY2lmeWluZyB0aGUgZmlsdGVyLiIi
IgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoTm9uZSwgQUNUSVZFX1RFU1RTKQotCi0gIGRlZiB0
ZXN0RGVmYXVsdEJlaGF2aW9yV2l0aFNoYXJkcyhzZWxmKToKLSAgICAiIiJUZXN0cyB0aGUgYmVo
YXZpb3Igd2l0aG91dCB0aGUgZmlsdGVyLCB3aXRoIHNoYXJkaW5nIGVuYWJsZWQuIiIiCi0KLSAg
ICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhOb25lLCAxLCBBQ1RJVkVfVEVTVFMpCi0g
ICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgMiwgQUNUSVZFX1RFU1RTKQot
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKE5vbmUsIGxlbihBQ1RJVkVfVEVTVFMp
IC0gMSwgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKE5v
bmUsIGxlbihBQ1RJVkVfVEVTVFMpLCBBQ1RJVkVfVEVTVFMpCi0gICAgc2VsZi5SdW5BbmRWZXJp
ZnlXaXRoU2hhcmRpbmcoTm9uZSwgbGVuKEFDVElWRV9URVNUUykgKyAxLCBBQ1RJVkVfVEVTVFMp
Ci0KLSAgZGVmIHRlc3RFbXB0eUZpbHRlcihzZWxmKToKLSAgICAiIiJUZXN0cyBhbiBlbXB0eSBm
aWx0ZXIuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnJywgW10pCi0gICAgc2VsZi5SdW5B
bmRWZXJpZnlXaXRoU2hhcmRpbmcoJycsIDEsIFtdKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0
aFNoYXJkaW5nKCcnLCAyLCBbXSkKLQotICBkZWYgdGVzdEJhZEZpbHRlcihzZWxmKToKLSAgICAi
IiJUZXN0cyBhIGZpbHRlciB0aGF0IG1hdGNoZXMgbm90aGluZy4iIiIKLQotICAgIHNlbGYuUnVu
QW5kVmVyaWZ5KCdCYWRGaWx0ZXInLCBbXSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5n
RGlzYWJsZWQoJ0JhZEZpbHRlcicsIFtdKQotCi0gIGRlZiB0ZXN0RnVsbE5hbWUoc2VsZik6Ci0g
ICAgIiIiVGVzdHMgZmlsdGVyaW5nIGJ5IGZ1bGwgbmFtZS4iIiIKLQotICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KCdGb29UZXN0Llh5eicsIFsnRm9vVGVzdC5YeXonXSkKLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeUFsbG93aW5nRGlzYWJsZWQoJ0Zvb1Rlc3QuWHl6JywgWydGb29UZXN0Llh5eiddKQotICAg
IHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKCdGb29UZXN0Llh5eicsIDUsIFsnRm9vVGVz
dC5YeXonXSkKLQotICBkZWYgdGVzdFVuaXZlcnNhbEZpbHRlcnMoc2VsZik6Ci0gICAgIiIiVGVz
dHMgZmlsdGVycyB0aGF0IG1hdGNoIGV2ZXJ5dGhpbmcuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeSgnKicsIEFDVElWRV9URVNUUykKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi4qJywgQUNU
SVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKCcqLionLCBsZW4o
QUNUSVZFX1RFU1RTKSAtIDMsIEFDVElWRV9URVNUUykKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFs
bG93aW5nRGlzYWJsZWQoJyonLCBBQ1RJVkVfVEVTVFMgKyBESVNBQkxFRF9URVNUUykKLSAgICBz
ZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJyouKicsIEFDVElWRV9URVNUUyArIERJ
U0FCTEVEX1RFU1RTKQotCi0gIGRlZiB0ZXN0RmlsdGVyQnlUZXN0Q2FzZShzZWxmKToKLSAgICAi
IiJUZXN0cyBmaWx0ZXJpbmcgYnkgdGVzdCBjYXNlIG5hbWUuIiIiCi0KLSAgICBzZWxmLlJ1bkFu
ZFZlcmlmeSgnRm9vVGVzdC4qJywgWydGb29UZXN0LkFiYycsICdGb29UZXN0Llh5eiddKQotCi0g
ICAgQkFaX1RFU1RTID0gWydCYXpUZXN0LlRlc3RPbmUnLCAnQmF6VGVzdC5UZXN0QScsICdCYXpU
ZXN0LlRlc3RCJ10KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnQmF6VGVzdC4qJywgQkFaX1RFU1RT
KQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnQmF6VGVzdC4qJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkFaX1RFU1RTICsgWydCYXpUZXN0
LkRJU0FCTEVEX1Rlc3RDJ10pCi0KLSAgZGVmIHRlc3RGaWx0ZXJCeVRlc3Qoc2VsZik6Ci0gICAg
IiIiVGVzdHMgZmlsdGVyaW5nIGJ5IHRlc3QgbmFtZS4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVy
aWZ5KCcqLlRlc3RPbmUnLCBbJ0JhclRlc3QuVGVzdE9uZScsICdCYXpUZXN0LlRlc3RPbmUnXSkK
LQotICBkZWYgdGVzdEZpbHRlckRpc2FibGVkVGVzdHMoc2VsZik6Ci0gICAgIiIiU2VsZWN0IG9u
bHkgdGhlIGRpc2FibGVkIHRlc3RzIHRvIHJ1bi4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5
KCdESVNBQkxFRF9Gb29iYXJUZXN0LlRlc3QxJywgW10pCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlB
bGxvd2luZ0Rpc2FibGVkKCdESVNBQkxFRF9Gb29iYXJUZXN0LlRlc3QxJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWydESVNBQkxFRF9Gb29iYXJUZXN0LlRlc3QxJ10p
Ci0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKkRJU0FCTEVEXyonLCBbXSkKLSAgICBzZWxmLlJ1
bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJypESVNBQkxFRF8qJywgRElTQUJMRURfVEVTVFMp
Ci0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi5ESVNBQkxFRF8qJywgW10pCi0gICAgc2VsZi5S
dW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCcqLkRJU0FCTEVEXyonLCBbCi0gICAgICAgICdC
YXJUZXN0LkRJU0FCTEVEX1Rlc3RGb3VyJywKLSAgICAgICAgJ0JhclRlc3QuRElTQUJMRURfVGVz
dEZpdmUnLAotICAgICAgICAnQmF6VGVzdC5ESVNBQkxFRF9UZXN0QycsCi0gICAgICAgICdESVNB
QkxFRF9Gb29iYXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywKLSAgICAgICAgXSkKLQotICAgIHNlbGYu
UnVuQW5kVmVyaWZ5KCdESVNBQkxFRF8qJywgW10pCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxv
d2luZ0Rpc2FibGVkKCdESVNBQkxFRF8qJywgWwotICAgICAgICAnRElTQUJMRURfRm9vYmFyVGVz
dC5UZXN0MScsCi0gICAgICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywK
LSAgICAgICAgJ0RJU0FCTEVEX0Zvb2JhcmJhelRlc3QuVGVzdEEnLAotICAgICAgICBdKQotCi0g
IGRlZiB0ZXN0V2lsZGNhcmRJblRlc3RDYXNlTmFtZShzZWxmKToKLSAgICAiIiJUZXN0cyB1c2lu
ZyB3aWxkY2FyZCBpbiB0aGUgdGVzdCBjYXNlIG5hbWUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeSgnKmEqLionLCBbCi0gICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAotICAgICAgICAnQmFy
VGVzdC5UZXN0VHdvJywKLSAgICAgICAgJ0JhclRlc3QuVGVzdFRocmVlJywKLQotICAgICAgICAn
QmF6VGVzdC5UZXN0T25lJywKLSAgICAgICAgJ0JhelRlc3QuVGVzdEEnLAotICAgICAgICAnQmF6
VGVzdC5UZXN0QicsIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTKQotCi0gIGRlZiB0ZXN0
V2lsZGNhcmRJblRlc3ROYW1lKHNlbGYpOgotICAgICIiIlRlc3RzIHVzaW5nIHdpbGRjYXJkIGlu
IHRoZSB0ZXN0IG5hbWUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi4qQSonLCBbJ0Zv
b1Rlc3QuQWJjJywgJ0JhelRlc3QuVGVzdEEnXSkKLQotICBkZWYgdGVzdEZpbHRlcldpdGhvdXRE
b3Qoc2VsZik6Ci0gICAgIiIiVGVzdHMgYSBmaWx0ZXIgdGhhdCBoYXMgbm8gJy4nIGluIGl0LiIi
IgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJyp6KicsIFsKLSAgICAgICAgJ0Zvb1Rlc3QuWHl6
JywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAgICAgICAgJ0JhelRlc3QuVGVzdEEn
LAotICAgICAgICAnQmF6VGVzdC5UZXN0QicsCi0gICAgICAgIF0pCi0KLSAgZGVmIHRlc3RUd29Q
YXR0ZXJucyhzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0ZXJzIHRoYXQgY29uc2lzdCBvZiB0d28g
cGF0dGVybnMuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnRm9vKi4qOipBKicsIFsKLSAg
ICAgICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICAgICAn
QmF6VGVzdC5UZXN0QScsCi0gICAgICAgIF0pCi0KLSAgICAjIEFuIGVtcHR5IHBhdHRlcm4gKyBh
IG5vbi1lbXB0eSBvbmUKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnOipBKicsIFsnRm9vVGVzdC5B
YmMnLCAnQmF6VGVzdC5UZXN0QSddKQotCi0gIGRlZiB0ZXN0VGhyZWVQYXR0ZXJucyhzZWxmKToK
LSAgICAiIiJUZXN0cyBmaWx0ZXJzIHRoYXQgY29uc2lzdCBvZiB0aHJlZSBwYXR0ZXJucy4iIiIK
LQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqb28qOipBKjoqT25lJywgWwotICAgICAgICAnRm9v
VGVzdC5BYmMnLAotICAgICAgICAnRm9vVGVzdC5YeXonLAotCi0gICAgICAgICdCYXJUZXN0LlRl
c3RPbmUnLAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RPbmUnLAotICAgICAgICAnQmF6VGVzdC5U
ZXN0QScsCi0gICAgICAgIF0pCi0KLSAgICAjIFRoZSAybmQgcGF0dGVybiBpcyBlbXB0eS4KLSAg
ICBzZWxmLlJ1bkFuZFZlcmlmeSgnKm9vKjo6Kk9uZScsIFsKLSAgICAgICAgJ0Zvb1Rlc3QuQWJj
JywKLSAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywK
LQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAgICAgICAgXSkKLQotICAgICMgVGhlIGxh
c3QgMiBwYXR0ZXJucyBhcmUgZW1wdHkuCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJypvbyo6Oics
IFsKLSAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKLSAgICAg
ICAgXSkKLQotICBkZWYgdGVzdE5lZ2F0aXZlRmlsdGVycyhzZWxmKToKLSAgICBzZWxmLlJ1bkFu
ZFZlcmlmeSgnKi1CYXpUZXN0LlRlc3RPbmUnLCBbCi0gICAgICAgICdGb29UZXN0LkFiYycsCi0g
ICAgICAgICdGb29UZXN0Llh5eicsCi0KLSAgICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCi0gICAg
ICAgICdCYXJUZXN0LlRlc3RUd28nLAotICAgICAgICAnQmFyVGVzdC5UZXN0VGhyZWUnLAotCi0g
ICAgICAgICdCYXpUZXN0LlRlc3RBJywKLSAgICAgICAgJ0JhelRlc3QuVGVzdEInLAotICAgICAg
ICBdICsgREVBVEhfVEVTVFMgKyBQQVJBTV9URVNUUykKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5
KCcqLUZvb1Rlc3QuQWJjOkJhelRlc3QuKicsIFsKLSAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKLQot
ICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKLSAgICAgICAgJ0JhclRlc3QuVGVzdFR3bycsCi0g
ICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCi0gICAgICAgIF0gKyBERUFUSF9URVNUUyArIFBB
UkFNX1RFU1RTKQotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0JhclRlc3QuKi1CYXJUZXN0LlRl
c3RPbmUnLCBbCi0gICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAotICAgICAgICAnQmFyVGVzdC5U
ZXN0VGhyZWUnLAotICAgICAgICBdKQotCi0gICAgIyBUZXN0cyB3aXRob3V0IGxlYWRpbmcgJyon
LgotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCctRm9vVGVzdC5BYmM6Rm9vVGVzdC5YeXo6QmF6VGVz
dC4qJywgWwotICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKLSAgICAgICAgJ0JhclRlc3QuVGVz
dFR3bycsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCi0gICAgICAgIF0gKyBERUFUSF9U
RVNUUyArIFBBUkFNX1RFU1RTKQotCi0gICAgIyBWYWx1ZSBwYXJhbWV0ZXJpemVkIHRlc3RzLgot
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLyonLCBQQVJBTV9URVNUUykKLQotICAgICMgVmFsdWUg
cGFyYW1ldGVyaXplZCB0ZXN0cyBmaWx0ZXJpbmcgYnkgdGhlIHNlcXVlbmNlIG5hbWUuCi0gICAg
c2VsZi5SdW5BbmRWZXJpZnkoJ1NlcVAvKicsIFsKLSAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRl
c3RYLzAnLAotICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMScsCi0gICAgICAgICdTZXFQ
L1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzEnLAot
ICAgICAgICBdKQotCi0gICAgIyBWYWx1ZSBwYXJhbWV0ZXJpemVkIHRlc3RzIGZpbHRlcmluZyBi
eSB0aGUgdGVzdCBuYW1lLgotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLzAnLCBbCi0gICAgICAg
ICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywKLSAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZ
LzAnLAotICAgICAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFgvMCcsCi0gICAgICAgICdTZXFRL1Bh
cmFtVGVzdC5UZXN0WS8wJywKLSAgICAgICAgXSkKLQotICBkZWYgdGVzdEZsYWdPdmVycmlkZXNF
bnZWYXIoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCB0aGUgZmlsdGVyIGZsYWcgb3ZlcnJpZGVz
IHRoZSBmaWx0ZXJpbmcgZW52LiB2YXJpYWJsZS4iIiIKLQotICAgIFNldEVudlZhcihGSUxURVJf
RU5WX1ZBUiwgJ0ZvbyonKQotICAgIGFyZ3MgPSBbJy0tJXM9JXMnICUgKEZJTFRFUl9GTEFHLCAn
Kk9uZScpXQotICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0TGlzdChhcmdzKVswXQot
ICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgTm9uZSkKLQotICAgIHNlbGYuQXNzZXJ0U2V0
RXF1YWwodGVzdHNfcnVuLCBbJ0JhclRlc3QuVGVzdE9uZScsICdCYXpUZXN0LlRlc3RPbmUnXSkK
LQotICBkZWYgdGVzdFNoYXJkU3RhdHVzRmlsZUlzQ3JlYXRlZChzZWxmKToKLSAgICAiIiJUZXN0
cyB0aGF0IHRoZSBzaGFyZCBmaWxlIGlzIGNyZWF0ZWQgaWYgc3BlY2lmaWVkIGluIHRoZSBlbnZp
cm9ubWVudC4iIiIKLQotICAgIHNoYXJkX3N0YXR1c19maWxlID0gb3MucGF0aC5qb2luKGd0ZXN0
X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdzaGFyZF9zdGF0dXNfZmlsZScpCi0gICAgc2VsZi5hc3NlcnRfKG5vdCBvcy5wYXRo
LmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkpCi0KLSAgICBleHRyYV9lbnYgPSB7U0hBUkRfU1RB
VFVTX0ZJTEVfRU5WX1ZBUjogc2hhcmRfc3RhdHVzX2ZpbGV9Ci0gICAgdHJ5OgotICAgICAgSW52
b2tlV2l0aE1vZGlmaWVkRW52KGV4dHJhX2VudiwgUnVuQW5kUmV0dXJuT3V0cHV0KQotICAgIGZp
bmFsbHk6Ci0gICAgICBzZWxmLmFzc2VydF8ob3MucGF0aC5leGlzdHMoc2hhcmRfc3RhdHVzX2Zp
bGUpKQotICAgICAgb3MucmVtb3ZlKHNoYXJkX3N0YXR1c19maWxlKQotCi0gIGRlZiB0ZXN0U2hh
cmRTdGF0dXNGaWxlSXNDcmVhdGVkV2l0aExpc3RUZXN0cyhzZWxmKToKLSAgICAiIiJUZXN0cyB0
aGF0IHRoZSBzaGFyZCBmaWxlIGlzIGNyZWF0ZWQgd2l0aCB0aGUgImxpc3RfdGVzdHMiIGZsYWcu
IiIiCi0KLSAgICBzaGFyZF9zdGF0dXNfZmlsZSA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0
aWxzLkdldFRlbXBEaXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
c2hhcmRfc3RhdHVzX2ZpbGUyJykKLSAgICBzZWxmLmFzc2VydF8obm90IG9zLnBhdGguZXhpc3Rz
KHNoYXJkX3N0YXR1c19maWxlKSkKLQotICAgIGV4dHJhX2VudiA9IHtTSEFSRF9TVEFUVVNfRklM
RV9FTlZfVkFSOiBzaGFyZF9zdGF0dXNfZmlsZX0KLSAgICB0cnk6Ci0gICAgICBvdXRwdXQgPSBJ
bnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJ1bkFuZFJldHVybk91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbTElTVF9URVNUU19GTEFHXSkKLSAgICBmaW5hbGx5OgotICAgICAgIyBU
aGlzIGFzc2VydGlvbiBlbnN1cmVzIHRoYXQgR29vZ2xlIFRlc3QgZW51bWVyYXRlZCB0aGUgdGVz
dHMgYXMKLSAgICAgICMgb3Bwb3NlZCB0byBydW5uaW5nIHRoZW0uCi0gICAgICBzZWxmLmFzc2Vy
dF8oJ1s9PT09PT09PT09XScgbm90IGluIG91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAnVW5l
eHBlY3RlZCBvdXRwdXQgZHVyaW5nIHRlc3QgZW51bWVyYXRpb24uXG4nCi0gICAgICAgICAgICAg
ICAgICAgJ1BsZWFzZSBlbnN1cmUgdGhhdCBMSVNUX1RFU1RTX0ZMQUcgaXMgYXNzaWduZWQgdGhl
XG4nCi0gICAgICAgICAgICAgICAgICAgJ2NvcnJlY3QgZmxhZyB2YWx1ZSBmb3IgbGlzdGluZyBH
b29nbGUgVGVzdCB0ZXN0cy4nKQotCi0gICAgICBzZWxmLmFzc2VydF8ob3MucGF0aC5leGlzdHMo
c2hhcmRfc3RhdHVzX2ZpbGUpKQotICAgICAgb3MucmVtb3ZlKHNoYXJkX3N0YXR1c19maWxlKQot
Ci0gIGlmIFNVUFBPUlRTX0RFQVRIX1RFU1RTOgotICAgIGRlZiB0ZXN0U2hhcmRpbmdXb3Jrc1dp
dGhEZWF0aFRlc3RzKHNlbGYpOgotICAgICAgIiIiVGVzdHMgaW50ZWdyYXRpb24gd2l0aCBkZWF0
aCB0ZXN0cyBhbmQgc2hhcmRpbmcuIiIiCi0KLSAgICAgIGd0ZXN0X2ZpbHRlciA9ICdIYXNEZWF0
aFRlc3QuKjpTZXFQLyonCi0gICAgICBleHBlY3RlZF90ZXN0cyA9IFsKLSAgICAgICAgICAnSGFz
RGVhdGhUZXN0LlRlc3QxJywKLSAgICAgICAgICAnSGFzRGVhdGhUZXN0LlRlc3QyJywKLQotICAg
ICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywKLSAgICAgICAgICAnU2VxUC9QYXJhbVRl
c3QuVGVzdFgvMScsCi0gICAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzAnLAotICAgICAg
ICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8xJywKLSAgICAgICAgICBdCi0KLSAgICAgIGZvciBm
bGFnIGluIFsnLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlPXRocmVhZHNhZmUnLAotICAgICAgICAg
ICAgICAgICAgICctLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGU9ZmFzdCddOgotICAgICAgICBzZWxm
LlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhndGVzdF9maWx0ZXIsIDMsIGV4cGVjdGVkX3Rlc3Rz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19leGl0XzA9VHJ1
ZSwgYXJncz1bZmxhZ10pCi0gICAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKGd0
ZXN0X2ZpbHRlciwgNSwgZXhwZWN0ZWRfdGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoZWNrX2V4aXRfMD1UcnVlLCBhcmdzPVtmbGFnXSkKLQotaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0Xy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0Xy5jYwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI1NTA0ZmU5NGFmYzE3N2M0NmNiYzEzNWZl
YzY3NWM1NTRkMmUwZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2ZpbHRlcl91bml0dGVzdF8u
Y2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdv
b2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0v
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbikKLQotLy8gVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCB0ZXN0IGZpbHRlcnMu
Ci0vLwotLy8gQSB1c2VyIGNhbiBzcGVjaWZ5IHdoaWNoIHRlc3QocykgaW4gYSBHb29nbGUgVGVz
dCBwcm9ncmFtIHRvIHJ1biB2aWEKLS8vIGVpdGhlciB0aGUgR1RFU1RfRklMVEVSIGVudmlyb25t
ZW50IHZhcmlhYmxlIG9yIHRoZSAtLWd0ZXN0X2ZpbHRlcgotLy8gZmxhZy4gIFRoaXMgaXMgdXNl
ZCBmb3IgdGVzdGluZyBzdWNoIGZ1bmN0aW9uYWxpdHkuCi0vLwotLy8gVGhlIHByb2dyYW0gd2ls
bCBiZSBpbnZva2VkIGZyb20gYSBQeXRob24gdW5pdCB0ZXN0LiAgRG9uJ3QgcnVuIGl0Ci0vLyBk
aXJlY3RseS4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLW5hbWVzcGFjZSB7Ci0KLS8v
IFRlc3QgY2FzZSBGb29UZXN0LgotCi1jbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewotfTsKLQotVEVTVF9GKEZvb1Rlc3QsIEFiYykgewotfQotCi1URVNUX0YoRm9vVGVzdCwg
WHl6KSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi0vLyBUZXN0IGNh
c2UgQmFyVGVzdC4KLQotVEVTVChCYXJUZXN0LCBUZXN0T25lKSB7Ci19Ci0KLVRFU1QoQmFyVGVz
dCwgVGVzdFR3bykgewotfQotCi1URVNUKEJhclRlc3QsIFRlc3RUaHJlZSkgewotfQotCi1URVNU
KEJhclRlc3QsIERJU0FCTEVEX1Rlc3RGb3VyKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFp
bHVyZS4iOwotfQotCi1URVNUKEJhclRlc3QsIERJU0FCTEVEX1Rlc3RGaXZlKSB7Ci0gIEZBSUwo
KSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi0vLyBUZXN0IGNhc2UgQmF6VGVzdC4KLQot
VEVTVChCYXpUZXN0LCBUZXN0T25lKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4i
OwotfQotCi1URVNUKEJhelRlc3QsIFRlc3RBKSB7Ci19Ci0KLVRFU1QoQmF6VGVzdCwgVGVzdEIp
IHsKLX0KLQotVEVTVChCYXpUZXN0LCBESVNBQkxFRF9UZXN0QykgewotICBGQUlMKCkgPDwgIkV4
cGVjdGVkIGZhaWx1cmUuIjsKLX0KLQotLy8gVGVzdCBjYXNlIEhhc0RlYXRoVGVzdAotCi1URVNU
KEhhc0RlYXRoVGVzdCwgVGVzdDEpIHsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChleGl0
KDEpLCAiLioiKTsKLX0KLQotLy8gV2UgbmVlZCBhdCBsZWFzdCB0d28gZGVhdGggdGVzdHMgdG8g
bWFrZSBzdXJlIHRoYXQgdGhlIGFsbCBkZWF0aCB0ZXN0cwotLy8gYXJlbid0IG9uIHRoZSBmaXJz
dCBzaGFyZC4KLVRFU1QoSGFzRGVhdGhUZXN0LCBUZXN0MikgewotICBFWFBFQ1RfREVBVEhfSUZf
U1VQUE9SVEVEKGV4aXQoMSksICIuKiIpOwotfQotCi0vLyBUZXN0IGNhc2UgRm9vYmFyVGVzdAot
Ci1URVNUKERJU0FCTEVEX0Zvb2JhclRlc3QsIFRlc3QxKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0
ZWQgZmFpbHVyZS4iOwotfQotCi1URVNUKERJU0FCTEVEX0Zvb2JhclRlc3QsIERJU0FCTEVEX1Rl
c3QyKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi0vLyBUZXN0IGNh
c2UgRm9vYmFyYmF6VGVzdAotCi1URVNUKERJU0FCTEVEX0Zvb2JhcmJhelRlc3QsIFRlc3RBKSB7
Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi0jaWYgR1RFU1RfSEFTX1BB
UkFNX1RFU1QKLWNsYXNzIFBhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFt
PGludD4gewotfTsKLQotVEVTVF9QKFBhcmFtVGVzdCwgVGVzdFgpIHsKLX0KLQotVEVTVF9QKFBh
cmFtVGVzdCwgVGVzdFkpIHsKLX0KLQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxUCwgUGFy
YW1UZXN0LCB0ZXN0aW5nOjpWYWx1ZXMoMSwgMikpOwotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ao
U2VxUSwgUGFyYW1UZXN0LCB0ZXN0aW5nOjpWYWx1ZXMoNSwgNikpOwotI2VuZGlmICAvLyBHVEVT
VF9IQVNfUEFSQU1fVEVTVAotCi19ICAvLyBuYW1lc3BhY2UKLQotaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIgKiphcmd2KSB7Ci0gIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3Yp
OwotCi0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5CmluZGV4IDNjYjRjNDhlMGI0NjI4ZDlhYTdj
NmYzMjA3YWI3ZWUxMGNkMjJiYTMuLjU4MmQyNGMyZGNjZTg5NDUzOGFhNjNjY2JkNjEyMGJkZDRi
MzUwYTAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVs
cF90ZXN0LnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90
ZXN0LnB5CkBAIC0yOSwyNyArMjksMjYgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAKLSIiIlRlc3RzIHRoZSAtLWhlbHAgZmxhZyBvZiBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3
b3JrLgorIiIiVGVzdHMgdGhlIC0taGVscCBmbGFnIG9mIEdvb2dsZSBDKysgVGVzdGluZyBhbmQg
TW9ja2luZyBGcmFtZXdvcmsuCiAKIFNZTk9QU0lTCi0gICAgICAgZ3Rlc3RfaGVscF90ZXN0LnB5
IC0tZ3Rlc3RfYnVpbGRfZGlyPUJVSUxEL0RJUgorICAgICAgIGd0ZXN0X2hlbHBfdGVzdC5weSAt
LWJ1aWxkX2Rpcj1CVUlMRC9ESVIKICAgICAgICAgICMgd2hlcmUgQlVJTEQvRElSIGNvbnRhaW5z
IHRoZSBidWlsdCBndGVzdF9oZWxwX3Rlc3RfIGZpbGUuCiAgICAgICAgZ3Rlc3RfaGVscF90ZXN0
LnB5CiAiIiIKIAotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScK
LQogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBndGVzdF90ZXN0X3V0aWxzCiAKIAorSVNf
TElOVVggPSBvcy5uYW1lID09ICdwb3NpeCcgYW5kIG9zLnVuYW1lKClbMF0gPT0gJ0xpbnV4Jwog
SVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250JwogCiBQUk9HUkFNX1BBVEggPSBndGVzdF90ZXN0
X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ3Rlc3RfaGVscF90ZXN0XycpCiBGTEFHX1BS
RUZJWCA9ICctLWd0ZXN0XycKLUNBVENIX0VYQ0VQVElPTlNfRkxBRyA9IEZMQUdfUFJFRklYICsg
J2NhdGNoX2V4Y2VwdGlvbnMnCiBERUFUSF9URVNUX1NUWUxFX0ZMQUcgPSBGTEFHX1BSRUZJWCAr
ICdkZWF0aF90ZXN0X3N0eWxlJworU1RSRUFNX1JFU1VMVF9UT19GTEFHID0gRkxBR19QUkVGSVgg
KyAnc3RyZWFtX3Jlc3VsdF90bycKIFVOS05PV05fRkxBRyA9IEZMQUdfUFJFRklYICsgJ3Vua25v
d25fZmxhZ19mb3JfdGVzdGluZycKIExJU1RfVEVTVFNfRkxBRyA9IEZMQUdfUFJFRklYICsgJ2xp
c3RfdGVzdHMnCiBJTkNPUlJFQ1RfRkxBR19WQVJJQU5UUyA9IFtyZS5zdWIoJ14tLScsICctJywg
TElTVF9URVNUU19GTEFHKSwKQEAgLTcyLDcgKzcxLDggQEAgSEVMUF9SRUdFWCA9IHJlLmNvbXBp
bGUoCiAgICAgRkxBR19QUkVGSVggKyByJ3ByaW50X3RpbWUuKicgKwogICAgIEZMQUdfUFJFRklY
ICsgcidvdXRwdXQ9LionICsKICAgICBGTEFHX1BSRUZJWCArIHInYnJlYWtfb25fZmFpbHVyZS4q
JyArCi0gICAgRkxBR19QUkVGSVggKyByJ3Rocm93X29uX2ZhaWx1cmUuKicsCisgICAgRkxBR19Q
UkVGSVggKyByJ3Rocm93X29uX2ZhaWx1cmUuKicgKworICAgIEZMQUdfUFJFRklYICsgcidjYXRj
aF9leGNlcHRpb25zPTAuKicsCiAgICAgcmUuRE9UQUxMKQogCiAKQEAgLTEwOSwxMCArMTA5LDEx
IEBAIGNsYXNzIEdUZXN0SGVscFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CiAgICAg
ZXhpdF9jb2RlLCBvdXRwdXQgPSBSdW5XaXRoRmxhZyhmbGFnKQogICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKDAsIGV4aXRfY29kZSkKICAgICBzZWxmLmFzc2VydF8oSEVMUF9SRUdFWC5zZWFyY2gob3V0
cHV0KSwgb3V0cHV0KQotICAgIGlmIElTX1dJTkRPV1M6Ci0gICAgICBzZWxmLmFzc2VydF8oQ0FU
Q0hfRVhDRVBUSU9OU19GTEFHIGluIG91dHB1dCwgb3V0cHV0KQorCisgICAgaWYgSVNfTElOVVg6
CisgICAgICBzZWxmLmFzc2VydF8oU1RSRUFNX1JFU1VMVF9UT19GTEFHIGluIG91dHB1dCwgb3V0
cHV0KQogICAgIGVsc2U6Ci0gICAgICBzZWxmLmFzc2VydF8oQ0FUQ0hfRVhDRVBUSU9OU19GTEFH
IG5vdCBpbiBvdXRwdXQsIG91dHB1dCkKKyAgICAgIHNlbGYuYXNzZXJ0XyhTVFJFQU1fUkVTVUxU
X1RPX0ZMQUcgbm90IGluIG91dHB1dCwgb3V0cHV0KQogCiAgICAgaWYgU1VQUE9SVFNfREVBVEhf
VEVTVFMgYW5kIG5vdCBJU19XSU5ET1dTOgogICAgICAgc2VsZi5hc3NlcnRfKERFQVRIX1RFU1Rf
U1RZTEVfRkxBRyBpbiBvdXRwdXQsIG91dHB1dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0Xy5jYwppbmRleCBhYWQwZDcyZDc2NzUzNWUxYjdhNzIy
MjQ3NzU0MzAxMDMzZTcxMDZmLi43NTBhZTZjZTk1ZmNiY2IzMzhlZDVkYjJiNTg4ZjE1Y2RkNWMy
ZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2hlbHBf
dGVzdF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rl
c3RfLmNjCkBAIC0yNiwxMyArMjYsMTIgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9u
ZyBXYW4pCisKIAogLy8gVGhpcyBwcm9ncmFtIGlzIG1lYW50IHRvIGJlIHJ1biBieSBndGVzdF9o
ZWxwX3Rlc3QucHkuICBEbyBub3QgcnVuCiAvLyBpdCBkaXJlY3RseS4KIAotI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogLy8gV2hlbiBhIGhlbHAg
ZmxhZyBpcyBzcGVjaWZpZWQsIHRoaXMgcHJvZ3JhbSBzaG91bGQgc2tpcCB0aGUgdGVzdHMKIC8v
IGFuZCBleGl0IHdpdGggMDsgb3RoZXJ3aXNlIHRoZSBmb2xsb3dpbmcgdGVzdCB3aWxsIGJlIGV4
ZWN1dGVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9q
c29uX3Rlc3RfdXRpbHMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2pz
b25fdGVzdF91dGlscy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmJiZmMyODhmODJiMzg3Y2Q4MzQ0NmMwYTA1
YmExNjdiMWFhNzU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF9qc29uX3Rlc3RfdXRpbHMucHkKQEAgLTAsMCArMSw2MCBAQAorIyBDb3B5cmln
aHQgMjAxOCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyIiIlVuaXQgdGVzdCB1dGlsaXRpZXMgZm9yIGd0ZXN0X2pzb25fb3V0cHV0LiIi
IgorCitpbXBvcnQgcmUKKworCitkZWYgbm9ybWFsaXplKG9iaik6CisgICIiIk5vcm1hbGl6ZSBv
dXRwdXQgb2JqZWN0LgorCisgIEFyZ3M6CisgICAgIG9iajogR29vZ2xlIFRlc3QncyBKU09OIG91
dHB1dCBvYmplY3QgdG8gbm9ybWFsaXplLgorCisgIFJldHVybnM6CisgICAgIE5vcm1hbGl6ZWQg
b3V0cHV0IHdpdGhvdXQgYW55IHJlZmVyZW5jZXMgdG8gdHJhbnNpZW50IGluZm9ybWF0aW9uIHRo
YXQgbWF5CisgICAgIGNoYW5nZSBmcm9tIHJ1biB0byBydW4uCisgICIiIgorICBkZWYgX25vcm1h
bGl6ZShrZXksIHZhbHVlKToKKyAgICBpZiBrZXkgPT0gJ3RpbWUnOgorICAgICAgcmV0dXJuIHJl
LnN1YihyJ15cZCsoXC5cZCspP3MkJywgJyonLCB2YWx1ZSkKKyAgICBlbGlmIGtleSA9PSAndGlt
ZXN0YW1wJzoKKyAgICAgIHJldHVybiByZS5zdWIocideXGR7NH0tXGRcZC1cZFxkVFxkXGQ6XGRc
ZDpcZFxkWiQnLCAnKicsIHZhbHVlKQorICAgIGVsaWYga2V5ID09ICdmYWlsdXJlJzoKKyAgICAg
IHZhbHVlID0gcmUuc3ViKHInXi4qWy9cXF0oLio6KVxkK1xuJywgJ1xcMSpcbicsIHZhbHVlKQor
ICAgICAgcmV0dXJuIHJlLnN1YihyJ1N0YWNrIHRyYWNlOlxuKC58XG4pKicsICdTdGFjayB0cmFj
ZTpcbionLCB2YWx1ZSkKKyAgICBlbHNlOgorICAgICAgcmV0dXJuIG5vcm1hbGl6ZSh2YWx1ZSkK
KyAgaWYgaXNpbnN0YW5jZShvYmosIGRpY3QpOgorICAgIHJldHVybiB7azogX25vcm1hbGl6ZShr
LCB2KSBmb3IgaywgdiBpbiBvYmouaXRlbXMoKX0KKyAgaWYgaXNpbnN0YW5jZShvYmosIGxpc3Qp
OgorICAgIHJldHVybiBbbm9ybWFsaXplKHgpIGZvciB4IGluIG9ial0KKyAgZWxzZToKKyAgICBy
ZXR1cm4gb2JqCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9saXN0X291dHB1dF91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYmJhN2VhMmNmZDM3Y2Fk
NTUwOWY0MGY4ZThiMDAyMjcwNmJlNzg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X291dHB1dF91bml0dGVzdC5weQpAQCAtMCwwICsx
LDE0MSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA2LCBHb29n
bGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisj
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlVu
aXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4KKworQSB1
c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gbGlzdCBhbGwgdGVzdHMgYnkgc3BlY2lmeWluZyB0
aGUKKy0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLiBJZiBvdXRwdXQgaXMgcmVxdWVzdGVkLCB2aWEg
LS1ndGVzdF9vdXRwdXQ9eG1sCitvciAtLWd0ZXN0X291dHB1dD1qc29uLCB0aGUgdGVzdHMgYXJl
IGxpc3RlZCwgd2l0aCBleHRyYSBpbmZvcm1hdGlvbiBpbiB0aGUKK291dHB1dCBmaWxlLgorVGhp
cyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5IGJ5IGludm9raW5nIGd0ZXN0X2xpc3Rf
b3V0cHV0X3VuaXR0ZXN0XworIChhIHByb2dyYW0gd3JpdHRlbiB3aXRoIEdvb2dsZSBUZXN0KSB0
aGUgY29tbWFuZCBsaW5lIGZsYWdzLgorIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBv
cnQgZ3Rlc3RfdGVzdF91dGlscworCitHVEVTVF9MSVNUX1RFU1RTX0ZMQUcgPSAnLS1ndGVzdF9s
aXN0X3Rlc3RzJworR1RFU1RfT1VUUFVUX0ZMQUcgPSAnLS1ndGVzdF9vdXRwdXQnCisKK0VYUEVD
VEVEX1hNTCA9ICIiIjxcP3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCJcPz4KKzx0
ZXN0c3VpdGVzIHRlc3RzPSIyIiBuYW1lPSJBbGxUZXN0cyI+CisgIDx0ZXN0c3VpdGUgbmFtZT0i
Rm9vVGVzdCIgdGVzdHM9IjIiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJUZXN0MSIgZmlsZT0iLipn
dGVzdF9saXN0X291dHB1dF91bml0dGVzdF8uY2MiIGxpbmU9IjQzIiAvPgorICAgIDx0ZXN0Y2Fz
ZSBuYW1lPSJUZXN0MiIgZmlsZT0iLipndGVzdF9saXN0X291dHB1dF91bml0dGVzdF8uY2MiIGxp
bmU9IjQ1IiAvPgorICA8L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1aXRlcz4KKyIiIgorCitFWFBFQ1RF
RF9KU09OID0gIiIieworICAidGVzdHMiOiAyLAorICAibmFtZSI6ICJBbGxUZXN0cyIsCisgICJ0
ZXN0c3VpdGVzIjogXFsKKyAgICB7CisgICAgICAibmFtZSI6ICJGb29UZXN0IiwKKyAgICAgICJ0
ZXN0cyI6IDIsCisgICAgICAidGVzdHN1aXRlIjogXFsKKyAgICAgICAgeworICAgICAgICAgICJu
YW1lIjogIlRlc3QxIiwKKyAgICAgICAgICAiZmlsZSI6ICIuKmd0ZXN0X2xpc3Rfb3V0cHV0X3Vu
aXR0ZXN0Xy5jYyIsCisgICAgICAgICAgImxpbmUiOiA0MworICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgIm5hbWUiOiAiVGVzdDIiLAorICAgICAgICAgICJmaWxlIjogIi4qZ3Rlc3Rf
bGlzdF9vdXRwdXRfdW5pdHRlc3RfLmNjIiwKKyAgICAgICAgICAibGluZSI6IDQ1CisgICAgICAg
IH0KKyAgICAgIFxdCisgICAgfQorICBcXQorfQorIiIiCisKKworY2xhc3MgR1Rlc3RMaXN0VGVz
dHNPdXRwdXRVbml0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgIiIiVW5pdCB0
ZXN0IGZvciBHb29nbGUgVGVzdCdzIGxpc3QgdGVzdHMgd2l0aCBvdXRwdXQgdG8gZmlsZSBmdW5j
dGlvbmFsaXR5LgorICAiIiIKKworICBkZWYgdGVzdFhtbChzZWxmKToKKyAgICAiIiJWZXJpZmll
cyBYTUwgb3V0cHV0IGZvciBsaXN0aW5nIHRlc3RzIGluIGEgR29vZ2xlIFRlc3QgYmluYXJ5Lgor
CisgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBhbiBlbXB0eSBYTUwgb3V0
cHV0LCBhbmQKKyAgICB0ZXN0cyB0aGF0IHRoZSBYTUwgb3V0cHV0IGlzIGV4cGVjdGVkLgorICAg
ICIiIgorICAgIHNlbGYuX1Rlc3RPdXRwdXQoJ3htbCcsIEVYUEVDVEVEX1hNTCkKKworICBkZWYg
dGVzdEpTT04oc2VsZik6CisgICAgIiIiVmVyaWZpZXMgWE1MIG91dHB1dCBmb3IgbGlzdGluZyB0
ZXN0cyBpbiBhIEdvb2dsZSBUZXN0IGJpbmFyeS4KKworICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0g
dGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkgWE1MIG91dHB1dCwgYW5kCisgICAgdGVzdHMgdGhhdCB0
aGUgWE1MIG91dHB1dCBpcyBleHBlY3RlZC4KKyAgICAiIiIKKyAgICBzZWxmLl9UZXN0T3V0cHV0
KCdqc29uJywgRVhQRUNURURfSlNPTikKKworICBkZWYgX0dldE91dHB1dChzZWxmLCBvdXRfZm9y
bWF0KToKKyAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRU
ZW1wRGlyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0X291dC4nICsgb3V0
X2Zvcm1hdCkKKyAgICBndGVzdF9wcm9nX3BhdGggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RF
eGVjdXRhYmxlUGF0aCgKKyAgICAgICAgJ2d0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0XycpCisK
KyAgICBjb21tYW5kID0gKFsKKyAgICAgICAgZ3Rlc3RfcHJvZ19wYXRoLAorICAgICAgICAnJXM9
JXM6JXMnICUgKEdURVNUX09VVFBVVF9GTEFHLCBvdXRfZm9ybWF0LCBmaWxlX3BhdGgpLAorICAg
ICAgICAnLS1ndGVzdF9saXN0X3Rlc3RzJworICAgIF0pCisgICAgZW52aXJvbl9jb3B5ID0gb3Mu
ZW52aXJvbi5jb3B5KCkKKyAgICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAorICAg
ICAgICBjb21tYW5kLCBlbnY9ZW52aXJvbl9jb3B5LCB3b3JraW5nX2Rpcj1ndGVzdF90ZXN0X3V0
aWxzLkdldFRlbXBEaXIoKSkKKworICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKKyAgICBzZWxm
LmFzc2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkKKyAgICB3aXRoIG9wZW4oZmlsZV9wYXRoKSBh
cyBmOgorICAgICAgcmVzdWx0ID0gZi5yZWFkKCkKKyAgICByZXR1cm4gcmVzdWx0CisKKyAgZGVm
IF9UZXN0T3V0cHV0KHNlbGYsIHRlc3RfZm9ybWF0LCBleHBlY3RlZF9vdXRwdXQpOgorICAgIGFj
dHVhbCA9IHNlbGYuX0dldE91dHB1dCh0ZXN0X2Zvcm1hdCkKKyAgICBhY3R1YWxfbGluZXMgPSBh
Y3R1YWwuc3BsaXRsaW5lcygpCisgICAgZXhwZWN0ZWRfbGluZXMgPSBleHBlY3RlZF9vdXRwdXQu
c3BsaXRsaW5lcygpCisgICAgbGluZV9jb3VudCA9IDAKKyAgICBmb3IgYWN0dWFsX2xpbmUgaW4g
YWN0dWFsX2xpbmVzOgorICAgICAgZXhwZWN0ZWRfbGluZSA9IGV4cGVjdGVkX2xpbmVzW2xpbmVf
Y291bnRdCisgICAgICBleHBlY3RlZF9saW5lX3JlID0gcmUuY29tcGlsZShleHBlY3RlZF9saW5l
LnN0cmlwKCkpCisgICAgICBzZWxmLmFzc2VydF8oCisgICAgICAgICAgZXhwZWN0ZWRfbGluZV9y
ZS5tYXRjaChhY3R1YWxfbGluZS5zdHJpcCgpKSwKKyAgICAgICAgICAoJ2FjdHVhbCBvdXRwdXQg
b2YgIiVzIixcbicKKyAgICAgICAgICAgJ3doaWNoIGRvZXMgbm90IG1hdGNoIGV4cGVjdGVkIHJl
Z2V4IG9mICIlcyJcbicKKyAgICAgICAgICAgJ29uIGxpbmUgJWQnICUgKGFjdHVhbCwgZXhwZWN0
ZWRfb3V0cHV0LCBsaW5lX2NvdW50KSkpCisgICAgICBsaW5lX2NvdW50ID0gbGluZV9jb3VudCAr
IDEKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBvcy5lbnZpcm9uWydHVEVTVF9T
VEFDS19UUkFDRV9ERVBUSCddID0gJzEnCisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3Rfb3V0cHV0X3Vu
aXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF9vdXRw
dXRfdW5pdHRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxYzdiNGRlMzQ2MWZjMTY0NWY0MTFiNzFmOWUz
N2Y4MjI0ZmQ4YTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0Xy5jYwpAQCAtMCwwICsxLDUxIEBACisvLyBD
b3B5cmlnaHQgMjAxOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3Ry
aWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gQXV0aG9yOiBk
YXZpZC5zY2h1bGRlbmZyZWlAZ21haWwuY29tIChEYXZpZCBTY2h1bGRlbmZyZWkpCisKKy8vIFVu
aXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0ZXN0X2xpc3RfdGVzdHMgYW5kIC0tZ3Rlc3Rf
b3V0cHV0IGZsYWcuCisvLworLy8gQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gbGlzdCBh
bGwgdGVzdHMgdGhhdCB3aWxsIHJ1biwKKy8vIGFuZCBoYXZlIHRoZSBvdXRwdXQgc2F2ZWQgaW4g
YSBKc29uL1htbCBmaWxlLgorLy8gVGhlIHRlc3RzIHdpbGwgbm90IGJlIHJ1biBhZnRlciBsaXN0
aW5nLgorLy8KKy8vIFRoaXMgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1
bml0IHRlc3QuCisvLyBEb24ndCBydW4gaXQgZGlyZWN0bHkuCisKKyNpbmNsdWRlICJndGVzdC9n
dGVzdC5oIgorCitURVNUKEZvb1Rlc3QsIFRlc3QxKSB7fQorCitURVNUKEZvb1Rlc3QsIFRlc3Qy
KSB7fQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90
ZXN0c191bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlz
dF90ZXN0c191bml0dGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggY2U4YzNl
ZjA1ZjY2MDBlODcyMTRhNmQ0MDE2MjhlZDkyM2ExNTJkYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBA
QAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5j
LgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0j
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVW5pdCB0
ZXN0IGZvciBHb29nbGUgVGVzdCdzIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLgotCi1BIHVzZXIg
Y2FuIGFzayBHb29nbGUgVGVzdCB0byBsaXN0IGFsbCB0ZXN0cyBieSBzcGVjaWZ5aW5nIHRoZQot
LS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuICBUaGlzIHNjcmlwdCB0ZXN0cyBzdWNoIGZ1bmN0aW9u
YWxpdHkKLWJ5IGludm9raW5nIGd0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfIChhIHByb2dyYW0g
d3JpdHRlbiB3aXRoCi1Hb29nbGUgVGVzdCkgdGhlIGNvbW1hbmQgbGluZSBmbGFncy4KLSIiIgot
Ci1fX2F1dGhvcl9fID0gJ3BoYW5uYUBnb29nbGUuY29tIChQYXRyaWNrIEhhbm5hKScKLQotaW1w
b3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLQotCi0jIENvbnN0YW50cy4KLQotIyBUaGUgY29tbWFuZCBs
aW5lIGZsYWcgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBsaXN0aW5nIGFsbCB0ZXN0cy4KLUxJU1Rf
VEVTVFNfRkxBRyA9ICdndGVzdF9saXN0X3Rlc3RzJwotCi0jIFBhdGggdG8gdGhlIGd0ZXN0X2xp
c3RfdGVzdHNfdW5pdHRlc3RfIHByb2dyYW0uCi1FWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
R2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0XycpCi0KLSMg
VGhlIGV4cGVjdGVkIG91dHB1dCB3aGVuIHJ1bm5pbmcgZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVz
dF8gd2l0aAotIyAtLWd0ZXN0X2xpc3RfdGVzdHMKLUVYUEVDVEVEX09VVFBVVF9OT19GSUxURVIg
PSAiIiJGb29EZWF0aFRlc3QuCi0gIFRlc3QxCi1Gb28uCi0gIEJhcjEKLSAgQmFyMgotICBESVNB
QkxFRF9CYXIzCi1BYmMuCi0gIFh5egotICBEZWYKLUZvb0Jhci4KLSAgQmF6Ci1Gb29UZXN0Lgot
ICBUZXN0MQotICBESVNBQkxFRF9UZXN0MgotICBUZXN0MwotIiIiCi0KLSMgVGhlIGV4cGVjdGVk
IG91dHB1dCB3aGVuIHJ1bm5pbmcgZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8gd2l0aAotIyAt
LWd0ZXN0X2xpc3RfdGVzdHMgYW5kIC0tZ3Rlc3RfZmlsdGVyPUZvbyouCi1FWFBFQ1RFRF9PVVRQ
VVRfRklMVEVSX0ZPTyA9ICIiIkZvb0RlYXRoVGVzdC4KLSAgVGVzdDEKLUZvby4KLSAgQmFyMQot
ICBCYXIyCi0gIERJU0FCTEVEX0JhcjMKLUZvb0Jhci4KLSAgQmF6Ci1Gb29UZXN0LgotICBUZXN0
MQotICBESVNBQkxFRF9UZXN0MgotICBUZXN0MwotIiIiCi0KLSMgVXRpbGl0aWVzLgotCi0KLWRl
ZiBSdW4oYXJncyk6Ci0gICIiIlJ1bnMgZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8gYW5kIHJl
dHVybnMgdGhlIGxpc3Qgb2YgdGVzdHMgcHJpbnRlZC4iIiIKLQotICByZXR1cm4gZ3Rlc3RfdGVz
dF91dGlscy5TdWJwcm9jZXNzKFtFWEVfUEFUSF0gKyBhcmdzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhcHR1cmVfc3RkZXJyPUZhbHNlKS5vdXRwdXQKLQotCi0jIFRo
ZSB1bml0IHRlc3QuCi0KLWNsYXNzIEdUZXN0TGlzdFRlc3RzVW5pdFRlc3QoZ3Rlc3RfdGVzdF91
dGlscy5UZXN0Q2FzZSk6Ci0gICIiIlRlc3RzIHVzaW5nIHRoZSAtLWd0ZXN0X2xpc3RfdGVzdHMg
ZmxhZyB0byBsaXN0IGFsbCB0ZXN0cy4iIiIKLQotICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGZs
YWdfdmFsdWUsIGV4cGVjdGVkX291dHB1dCwgb3RoZXJfZmxhZyk6Ci0gICAgIiIiUnVucyBndGVz
dF9saXN0X3Rlc3RzX3VuaXR0ZXN0XyBhbmQgdmVyaWZpZXMgdGhhdCBpdCBwcmludHMKLSAgICB0
aGUgY29ycmVjdCB0ZXN0cy4KLQotICAgIEFyZ3M6Ci0gICAgICBmbGFnX3ZhbHVlOiAgICAgICB2
YWx1ZSBvZiB0aGUgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWc7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBub3QgYmUgcHJlc2VudC4KLQotICAgICAgZXhw
ZWN0ZWRfb3V0cHV0OiAgdGhlIGV4cGVjdGVkIG91dHB1dCBhZnRlciBydW5uaW5nIGNvbW1hbmQ7
Ci0KLSAgICAgIG90aGVyX2ZsYWc6ICAgICAgIGEgZGlmZmVyZW50IGZsYWcgdG8gYmUgcGFzc2Vk
IHRvIGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsb25nIHdpdGggZ3Rlc3RfbGlz
dF90ZXN0czsKLSAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxk
IG5vdCBiZSBwcmVzZW50LgotICAgICIiIgotCi0gICAgaWYgZmxhZ192YWx1ZSBpcyBOb25lOgot
ICAgICAgZmxhZyA9ICcnCi0gICAgICBmbGFnX2V4cHJlc3Npb24gPSAnbm90IHNldCcKLSAgICBl
bGlmIGZsYWdfdmFsdWUgPT0gJzAnOgotICAgICAgZmxhZyA9ICctLSVzPTAnICUgTElTVF9URVNU
U19GTEFHCi0gICAgICBmbGFnX2V4cHJlc3Npb24gPSAnMCcKLSAgICBlbHNlOgotICAgICAgZmxh
ZyA9ICctLSVzJyAlIExJU1RfVEVTVFNfRkxBRwotICAgICAgZmxhZ19leHByZXNzaW9uID0gJzEn
Ci0KLSAgICBhcmdzID0gW2ZsYWddCi0KLSAgICBpZiBvdGhlcl9mbGFnIGlzIG5vdCBOb25lOgot
ICAgICAgYXJncyArPSBbb3RoZXJfZmxhZ10KLQotICAgIG91dHB1dCA9IFJ1bihhcmdzKQotCi0g
ICAgbXNnID0gKCd3aGVuICVzIGlzICVzLCB0aGUgb3V0cHV0IG9mICIlcyIgaXMgIiVzIi4nICUK
LSAgICAgICAgICAgKExJU1RfVEVTVFNfRkxBRywgZmxhZ19leHByZXNzaW9uLCAnICcuam9pbihh
cmdzKSwgb3V0cHV0KSkKLQotICAgIGlmIGV4cGVjdGVkX291dHB1dCBpcyBub3QgTm9uZToKLSAg
ICAgIHNlbGYuYXNzZXJ0XyhvdXRwdXQgPT0gZXhwZWN0ZWRfb3V0cHV0LCBtc2cpCi0gICAgZWxz
ZToKLSAgICAgIHNlbGYuYXNzZXJ0XyhvdXRwdXQgIT0gRVhQRUNURURfT1VUUFVUX05PX0ZJTFRF
UiwgbXNnKQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9yKHNlbGYpOgotICAgICIiIlRlc3Rz
IHRoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBtb2RlLiIiIgotCi0gICAgc2VsZi5SdW5BbmRW
ZXJpZnkoZmxhZ192YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX291
dHB1dD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2ZsYWc9Tm9uZSkKLQotICBk
ZWYgdGVzdEZsYWcoc2VsZik6Ci0gICAgIiIiVGVzdHMgdXNpbmcgdGhlIC0tZ3Rlc3RfbGlzdF90
ZXN0cyBmbGFnLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZmxhZ192YWx1ZT0nMCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0PU5vbmUsCi0gICAgICAgICAgICAg
ICAgICAgICAgb3RoZXJfZmxhZz1Ob25lKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFs
dWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dD1FWFBFQ1RFRF9P
VVRQVVRfTk9fRklMVEVSLAotICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2ZsYWc9Tm9uZSkK
LQotICBkZWYgdGVzdE92ZXJyaWRlTm9uRmlsdGVyRmxhZ3Moc2VsZik6Ci0gICAgIiIiVGVzdHMg
dGhhdCAtLWd0ZXN0X2xpc3RfdGVzdHMgb3ZlcnJpZGVzIHRoZSBub24tZmlsdGVyIGZsYWdzLiIi
IgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0PUVYUEVDVEVEX09VVFBVVF9OT19GSUxURVIsCi0gICAg
ICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz0nLS1ndGVzdF9icmVha19vbl9mYWlsdXJlJykK
LQotICBkZWYgdGVzdFdpdGhGaWx0ZXJGbGFncyhzZWxmKToKLSAgICAiIiJUZXN0cyB0aGF0IC0t
Z3Rlc3RfbGlzdF90ZXN0cyB0YWtlcyBpbnRvIGFjY291bnQgdGhlCi0gICAgLS1ndGVzdF9maWx0
ZXIgZmxhZy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFsdWU9JzEnLAotICAg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dD1FWFBFQ1RFRF9PVVRQVVRfRklMVEVS
X0ZPTywKLSAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPSctLWd0ZXN0X2ZpbHRlcj1G
b28qJykKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBndGVzdF90ZXN0X3V0aWxz
Lk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9s
aXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfbGlzdF90ZXN0c191bml0dGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGEwZWQwODI1YjVkODg5NjkyMzAxYzVhNGQ0ZjBlYjc1YmFiYzViYzguLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYworKysgL2Rldi9udWxsCkBAIC0xLDg1
ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8v
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8g
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8v
Ci0vLyBBdXRob3I6IHBoYW5uYUBnb29nbGUuY29tIChQYXRyaWNrIEhhbm5hKQotCi0vLyBVbml0
IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuCi0vLwotLy8g
QSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gbGlzdCBhbGwgdGVzdHMgdGhhdCB3aWxsIHJ1
bgotLy8gc28gdGhhdCB3aGVuIHVzaW5nIGEgZmlsdGVyLCBhIHVzZXIgd2lsbCBrbm93IHdoYXQK
LS8vIHRlc3RzIHRvIGxvb2sgZm9yLiBUaGUgdGVzdHMgd2lsbCBub3QgYmUgcnVuIGFmdGVyIGxp
c3RpbmcuCi0vLwotLy8gVGhpcyBwcm9ncmFtIHdpbGwgYmUgaW52b2tlZCBmcm9tIGEgUHl0aG9u
IHVuaXQgdGVzdC4KLS8vIERvbid0IHJ1biBpdCBkaXJlY3RseS4KLQotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIFNldmVyYWwgZGlmZmVyZW50IHRlc3QgY2Fz
ZXMgYW5kIHRlc3RzIHRoYXQgd2lsbCBiZSBsaXN0ZWQuCi1URVNUKEZvbywgQmFyMSkgewotfQot
Ci1URVNUKEZvbywgQmFyMikgewotfQotCi1URVNUKEZvbywgRElTQUJMRURfQmFyMykgewotfQot
Ci1URVNUKEFiYywgWHl6KSB7Ci19Ci0KLVRFU1QoQWJjLCBEZWYpIHsKLX0KLQotVEVTVChGb29C
YXIsIEJheikgewotfQotCi1jbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewot
fTsKLQotVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7Ci19Ci0KLVRFU1RfRihGb29UZXN0LCBESVNB
QkxFRF9UZXN0MikgewotfQotCi1URVNUX0YoRm9vVGVzdCwgVGVzdDMpIHsKLX0KLQotVEVTVChG
b29EZWF0aFRlc3QsIFRlc3QxKSB7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1pbnQgbWFpbihp
bnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJn
YywgYXJndik7Ci0KLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbWFpbl91bml0dGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbWFpbl91bml0dGVzdC5jYwppbmRleCA3YTNm
MGFkZmFkZjZkN2U1YzE5NWIzMTk0NDcxNGQ1YWM0MWJiOGUzLi5lZGRlZGVhYmU4ZjNiYjA4M2Rh
YmNhNjAwZTcyZjQ1MWI4ZDk0Y2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X21haW5fdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF9tYWluX3VuaXR0ZXN0LmNjCkBAIC0yNiwxMCArMjYsOSBAQAogLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAvLyBUZXN0cyB0aGF0IHdlIGRvbid0IGhh
dmUgdG8gZGVmaW5lIG1haW4oKSB3aGVuIHdlIGxpbmsgdG8KIC8vIGd0ZXN0X21haW4gaW5zdGVh
ZCBvZiBndGVzdC4KQEAgLTQxLDUgKzQwLDUgQEAgVEVTVChHVGVzdE1haW5UZXN0LCBTaG91bGRT
dWNjZWVkKSB7CiAKIH0gIC8vIG5hbWVzcGFjZQogCi0vLyBXZSBhcmUgdXNpbmcgdGhlIG1haW4o
KSBmdW5jdGlvbiBkZWZpbmVkIGluIHNyYy9ndGVzdF9tYWluLmNjLCBzbwotLy8gd2UgZG9uJ3Qg
ZGVmaW5lIGl0IGhlcmUuCisvLyBXZSBhcmUgdXNpbmcgdGhlIG1haW4oKSBmdW5jdGlvbiBkZWZp
bmVkIGluIGd0ZXN0X21haW4uY2MsIHNvIHdlCisvLyBkb24ndCBkZWZpbmUgaXQgaGVyZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbmMuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X25jLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3M2I1ZGI2ZDQxODMwOWE0N2EyM2RmZjE4MDA1M2I3NWQzMjAxMjRmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbmMuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyMzQgKzAsMCBA
QAotLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0v
LyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gVGhpcyBmaWxlIGlzIHRo
ZSBpbnB1dCB0byBhIG5lZ2F0aXZlLWNvbXBpbGF0aW9uIHRlc3QgZm9yIEdvb2dsZQotLy8gVGVz
dC4gIENvZGUgaGVyZSBpcyBOT1Qgc3VwcG9zZWQgdG8gY29tcGlsZS4gIEl0cyBwdXJwb3NlIGlz
IHRvCi0vLyB2ZXJpZnkgdGhhdCBjZXJ0YWluIGluY29ycmVjdCB1c2FnZXMgb2YgdGhlIEdvb2ds
ZSBUZXN0IEFQSSBhcmUKLS8vIGluZGVlZCByZWplY3RlZCBieSB0aGUgY29tcGlsZXIuCi0vLwot
Ly8gV2Ugc3RpbGwgbmVlZCB0byB3cml0ZSB0aGUgbmVnYXRpdmUtY29tcGlsYXRpb24gdGVzdCBp
dHNlbGYsIHdoaWNoCi0vLyB3aWxsIGJlIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBidWlsZCBl
bnZpcm9ubWVudC4KLS8vCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogZmluaXNoIHRoZSBuZWdh
dGl2ZS1jb21waWxhdGlvbiB0ZXN0LgotCi0jaWZkZWYgVEVTVF9DQU5OT1RfSUdOT1JFX1JVTl9B
TExfVEVTVFNfUkVTVUxUCi0vLyBUZXN0cyB0aGF0IHRoZSByZXN1bHQgb2YgUlVOX0FMTF9URVNU
UygpIGNhbm5vdCBiZSBpZ25vcmVkLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0
KCZhcmdjLCBhcmd2KTsKLSAgUlVOX0FMTF9URVNUUygpOyAgLy8gVGhpcyBsaW5lIHNob3VsZG4n
dCBjb21waWxlLgotfQotCi0jZWxpZiBkZWZpbmVkKFRFU1RfVVNFUl9DQU5OT1RfSU5DTFVERV9H
VEVTVF9JTlRFUk5BTF9JTkxfSCkKLS8vIFRlc3RzIHRoYXQgYSB1c2VyIGNhbm5vdCBpbmNsdWRl
IGd0ZXN0LWludGVybmFsLWlubC5oIGluIGhpcyBjb2RlLgotCi0jaW5jbHVkZSAic3JjL2d0ZXN0
LWludGVybmFsLWlubC5oIgotCi0jZWxpZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19ERUNMQVJJTkdf
U0VUVVBfSU5fVEVTVF9GSVhUVVJFX1dJVEhfVFlQTykKLS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBp
bGVyIGNhdGNoZXMgdGhlIHR5cG8gd2hlbiBhIHVzZXIgZGVjbGFyZXMgYQotLy8gU2V0dXAoKSBt
ZXRob2QgaW4gYSB0ZXN0IGZpeHR1cmUuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1j
bGFzcyBNeVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2b2lk
IFNldHVwKCkge30KLX07Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRDSEVTX0NBTExJTkdfU0VU
VVBfSU5fVEVTVF9XSVRIX1RZUE8pCi0vLyBUZXN0cyB0aGF0IHRoZSBjb21waWxlciBjYXRjaGVz
IHRoZSB0eXBvIHdoZW4gYSB1c2VyIGNhbGxzIFNldHVwKCkKLS8vIGZyb20gYSB0ZXN0IGZpeHR1
cmUuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi1jbGFzcyBNeVRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0g
ICAgdGVzdGluZzo6VGVzdDo6U2V0dXAoKTsgIC8vIFRyaWVzIHRvIGNhbGwgU2V0VXAoKSBpbiB0
aGUgcGFyZW50IGNsYXNzLgotICB9Ci19OwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19E
RUNMQVJJTkdfU0VUVVBfSU5fRU5WSVJPTk1FTlRfV0lUSF9UWVBPKQotLy8gVGVzdHMgdGhhdCB0
aGUgY29tcGlsZXIgY2F0Y2hlcyB0aGUgdHlwbyB3aGVuIGEgdXNlciBkZWNsYXJlcyBhCi0vLyBT
ZXR1cCgpIG1ldGhvZCBpbiBhIHN1YmNsYXNzIG9mIEVudmlyb25tZW50LgotCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KLQotY2xhc3MgTXlFbnZpcm9ubWVudCA6IHB1YmxpYyB0ZXN0aW5nOjpF
bnZpcm9ubWVudCB7Ci0gcHVibGljOgotICB2b2lkIFNldHVwKCkge30KLX07Ci0KLSNlbGlmIGRl
ZmluZWQoVEVTVF9DQVRDSEVTX0NBTExJTkdfU0VUVVBfSU5fRU5WSVJPTk1FTlRfV0lUSF9UWVBP
KQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0Y2hlcyB0aGUgdHlwbyB3aGVuIGEgdXNl
ciBjYWxscyBTZXR1cCgpCi0vLyBpbiBhbiBFbnZpcm9ubWVudC4KLQotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+Ci0KLWNsYXNzIE15RW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6RW52aXJv
bm1lbnQgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIC8vIFRy
aWVzIHRvIGNhbGwgU2V0VXAoKSBpbiB0aGUgcGFyZW50IGNsYXNzLgotICAgIHRlc3Rpbmc6OkVu
dmlyb25tZW50OjpTZXR1cCgpOwotICB9Ci19OwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfQ0FUQ0hF
U19XUk9OR19DQVNFX0lOX1RZUEVEX1RFU1RfUCkKLS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVy
IGNhdGNoZXMgdXNpbmcgdGhlIHdyb25nIHRlc3QgY2FzZSBuYW1lIGluCi0vLyBUWVBFRF9URVNU
X1AuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLWNsYXNzIEJhclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19Owot
Ci1UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0KTsKLVRZUEVEX1RFU1RfUChCYXJUZXN0LCBBKSB7
fSAgLy8gV3JvbmcgdGVzdCBjYXNlIG5hbWUuCi1SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChG
b29UZXN0LCBBKTsKLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCB0
ZXN0aW5nOjpUeXBlczxpbnQ+KTsKLQotI2VsaWYgZGVmaW5lZChURVNUX0NBVENIRVNfV1JPTkdf
Q0FTRV9JTl9SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUCkKLS8vIFRlc3RzIHRoYXQgdGhlIGNv
bXBpbGVyIGNhdGNoZXMgdXNpbmcgdGhlIHdyb25nIHRlc3QgY2FzZSBuYW1lIGluCi0vLyBSRUdJ
U1RFUl9UWVBFRF9URVNUX0NBU0VfUC4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgQmFyVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QpOwotVFlQRURf
VEVTVF9QKEZvb1Rlc3QsIEEpIHt9Ci1SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChCYXJUZXN0
LCBBKTsgIC8vIFdyb25nIHRlc3QgY2FzZSBuYW1lLgotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9D
QVNFX1AoTXksIEZvb1Rlc3QsIHRlc3Rpbmc6OlR5cGVzPGludD4pOwotCi0jZWxpZiBkZWZpbmVk
KFRFU1RfQ0FUQ0hFU19XUk9OR19DQVNFX0lOX0lOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9Q
KQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0Y2hlcyB1c2luZyB0aGUgd3JvbmcgdGVz
dCBjYXNlIG5hbWUgaW4KLS8vIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QLgotCi0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBGb29U
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1jbGFzcyBCYXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVFlQRURfVEVT
VF9DQVNFX1AoRm9vVGVzdCk7Ci1UWVBFRF9URVNUX1AoRm9vVGVzdCwgQSkge30KLVJFR0lTVEVS
X1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsIEEpOwotCi0vLyBXcm9uZyB0ZXN0IGNhc2UgbmFt
ZS4KLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBCYXJUZXN0LCB0ZXN0aW5nOjpU
eXBlczxpbnQ+KTsKLQotI2VsaWYgZGVmaW5lZChURVNUX0NBVENIRVNfSU5TVEFOVElBVEVfVFlQ
RURfVEVTRVRfQ0FTRV9QX1dJVEhfU0FNRV9OQU1FX1BSRUZJWCkKLS8vIFRlc3RzIHRoYXQgdGhl
IGNvbXBpbGVyIGNhdGNoZXMgaW5zdGFudGlhdGluZyBUWVBFRF9URVNUX0NBU0VfUAotLy8gdHdp
Y2Ugd2l0aCB0aGUgc2FtZSBuYW1lIHByZWZpeC4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QpOwotVFlQRURfVEVTVF9Q
KEZvb1Rlc3QsIEEpIHt9Ci1SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0LCBBKTsK
LQotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIHRlc3Rpbmc6OlR5
cGVzPGludD4pOwotCi0vLyBXcm9uZyBuYW1lIHByZWZpeDogIk15IiBoYXMgYmVlbiB1c2VkLgot
SU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIHRlc3Rpbmc6OlR5cGVz
PGRvdWJsZT4pOwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfU1RBVElDX0FTU0VSVF9UWVBFX0VRX0lT
X05PVF9BX1RZUEUpCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0vLyBUZXN0cyB0aGF0
IFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+IGNhbm5vdCBiZSB1c2VkIGFzIGEgdHlwZS4KLXRl
c3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIGludD4gZHVtbXk7Ci0KLSNlbGlmIGRlZmlu
ZWQoVEVTVF9TVEFUSUNfQVNTRVJUX1RZUEVfRVFfV09SS1NfSU5fTkFNRVNQQUNFKQotCi0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotLy8gVGVzdHMgdGhhdCBTdGF0aWNBc3NlcnRUeXBlRXE8
VDEsIFQyPiB3b3JrcyBpbiBhIG5hbWVzcGFjZSBzY29wZS4KLXN0YXRpYyBib29sIGR1bW15ID0g
dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGludCwgY29uc3QgaW50PigpOwotCi0jZWxpZiBk
ZWZpbmVkKFRFU1RfU1RBVElDX0FTU0VSVF9UWVBFX0VRX1dPUktTX0lOX0NMQVNTKQotCi0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBIZWxw
ZXIgewotIHB1YmxpYzoKLSAgLy8gVGVzdHMgdGhhdCBTdGF0aWNBc3NlcnRUeXBlRXE8VDEsIFQy
PiB3b3JrcyBpbiBhIGNsYXNzLgotICBIZWxwZXIoKSB7IHRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5
cGVFcTxpbnQsIFQ+KCk7IH0KLQotICB2b2lkIERvU29tZXRoaW5nKCkge30KLX07Ci0KLXZvaWQg
VGVzdCgpIHsKLSAgSGVscGVyPGJvb2w+IGg7Ci0gIGguRG9Tb21ldGhpbmcoKTsgIC8vIFRvIGF2
b2lkIHRoZSAidW51c2VkIHZhcmlhYmxlIiB3YXJuaW5nLgotfQotCi0jZWxpZiBkZWZpbmVkKFRF
U1RfU1RBVElDX0FTU0VSVF9UWVBFX0VRX1dPUktTX0lOX0ZVTkNUSU9OKQotCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KLQotdm9pZCBUZXN0KCkgewotICAvLyBUZXN0cyB0aGF0IFN0YXRpY0Fz
c2VydFR5cGVFcTxUMSwgVDI+IHdvcmtzIGluc2lkZSBhIGZ1bmN0aW9uLgotICB0ZXN0aW5nOjpT
dGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgaW50LCBpbnQ+KCk7Ci19Ci0KLSNlbHNlCi0vLyBBIHNh
bml0eSB0ZXN0LiAgVGhpcyBzaG91bGQgY29tcGlsZS4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+Ci0KLWludCBtYWluKCkgewotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbmNfdGVz
dC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbmNfdGVzdC5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDZmZmIzZjgwMzhmMGE1Nzk2ZTRiNmQ2MjlkMDJl
ODA1NjVhMjQzOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X25jX3Rlc3QucHkKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDYgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHly
aWdodCAyMDA3LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0j
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotIiIiTmVnYXRpdmUgY29tcGlsYXRpb24gdGVzdCBmb3IgR29vZ2xlIFRlc3Qu
IiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWlt
cG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotSVNfTElOVVggPSBvcy5u
YW1lID09ICdwb3NpeCcgYW5kIG9zLnVuYW1lKClbMF0gPT0gJ0xpbnV4JwotaWYgbm90IElTX0xJ
TlVYOgotICBzeXMuZXhpdCgwKSAgIyBOZWdhdGl2ZSBjb21waWxhdGlvbiB0ZXN0cyBhcmUgbm90
IHN1cHBvcnRlZCBvbiBXaW5kb3dzICYgTWFjLgotCi0KLWNsYXNzIEdUZXN0TkNUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKLSAgIiIiTmVnYXRpdmUgY29tcGlsYXRpb24gdGVzdCBmb3IgR29vZ2xl
IFRlc3QuIiIiCi0KLSAgZGVmIHRlc3RDb21waWxlckVycm9yKHNlbGYpOgotICAgICIiIlZlcmlm
aWVzIHRoYXQgZXJyb25lb3VzIGNvZGUgbGVhZHMgdG8gZXhwZWN0ZWQgY29tcGlsZXIKLSAgICBt
ZXNzYWdlcy4iIiIKLQotICAgICMgRGVmaW5lcyBhIGxpc3Qgb2YgdGVzdCBzcGVjcywgd2hlcmUg
ZWFjaCBlbGVtZW50IGlzIGEgdHVwbGUKLSAgICAjICh0ZXN0IG5hbWUsIGxpc3Qgb2YgcmVnZXhl
cyBmb3IgbWF0Y2hpbmcgdGhlIGNvbXBpbGVyIGVycm9ycykuCi0gICAgdGVzdF9zcGVjcyA9IFsK
LSAgICAgICgnQ0FOTk9UX0lHTk9SRV9SVU5fQUxMX1RFU1RTX1JFU1VMVCcsCi0gICAgICAgW3In
aWdub3JpbmcgcmV0dXJuIHZhbHVlJ10pLAotCi0gICAgICAoJ1VTRVJfQ0FOTk9UX0lOQ0xVREVf
R1RFU1RfSU5URVJOQUxfSU5MX0gnLAotICAgICAgIFtyJ211c3Qgbm90IGJlIGluY2x1ZGVkIGV4
Y2VwdCBieSBHb29nbGUgVGVzdCBpdHNlbGYnXSksCi0KLSAgICAgICgnQ0FUQ0hFU19ERUNMQVJJ
TkdfU0VUVVBfSU5fVEVTVF9GSVhUVVJFX1dJVEhfVFlQTycsCi0gICAgICAgW3InU2V0dXBfc2hv
dWxkX2JlX3NwZWxsZWRfU2V0VXAnXSksCi0KLSAgICAgICgnQ0FUQ0hFU19DQUxMSU5HX1NFVFVQ
X0lOX1RFU1RfV0lUSF9UWVBPJywKLSAgICAgICBbcidTZXR1cF9zaG91bGRfYmVfc3BlbGxlZF9T
ZXRVcCddKSwKLQotICAgICAgKCdDQVRDSEVTX0RFQ0xBUklOR19TRVRVUF9JTl9FTlZJUk9OTUVO
VF9XSVRIX1RZUE8nLAotICAgICAgIFtyJ1NldHVwX3Nob3VsZF9iZV9zcGVsbGVkX1NldFVwJ10p
LAotCi0gICAgICAoJ0NBVENIRVNfQ0FMTElOR19TRVRVUF9JTl9FTlZJUk9OTUVOVF9XSVRIX1RZ
UE8nLAotICAgICAgIFtyJ1NldHVwX3Nob3VsZF9iZV9zcGVsbGVkX1NldFVwJ10pLAotCi0gICAg
ICAoJ0NBVENIRVNfV1JPTkdfQ0FTRV9JTl9UWVBFRF9URVNUX1AnLAotICAgICAgIFtyJ0JhclRl
c3QuKndhcyBub3QgZGVjbGFyZWQnXSksCi0KLSAgICAgICgnQ0FUQ0hFU19XUk9OR19DQVNFX0lO
X1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QJywKLSAgICAgICBbcidCYXJUZXN0Lip3YXMgbm90
IGRlY2xhcmVkJ10pLAotCi0gICAgICAoJ0NBVENIRVNfV1JPTkdfQ0FTRV9JTl9JTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUCcsCi0gICAgICAgW3InQmFyVGVzdC4qbm90IGRlY2xhcmVkJ10p
LAotCi0gICAgICAoJ0NBVENIRVNfSU5TVEFOVElBVEVfVFlQRURfVEVTRVRfQ0FTRV9QX1dJVEhf
U0FNRV9OQU1FX1BSRUZJWCcsCi0gICAgICAgW3IncmVkZWZpbml0aW9uIG9mLipNeS4qRm9vVGVz
dCddKSwKLQotICAgICAgKCdTVEFUSUNfQVNTRVJUX1RZUEVfRVFfSVNfTk9UX0FfVFlQRScsCi0g
ICAgICAgW3InU3RhdGljQXNzZXJ0VHlwZUVxLiogZG9lcyBub3QgbmFtZSBhIHR5cGUnXSksCi0K
LSAgICAgICgnU1RBVElDX0FTU0VSVF9UWVBFX0VRX1dPUktTX0lOX05BTUVTUEFDRScsCi0gICAg
ICAgW3InU3RhdGljQXNzZXJ0VHlwZUVxLippbnQuKmNvbnN0IGludCddKSwKLQotICAgICAgKCdT
VEFUSUNfQVNTRVJUX1RZUEVfRVFfV09SS1NfSU5fQ0xBU1MnLAotICAgICAgIFtyJ1N0YXRpY0Fz
c2VydFR5cGVFcS4qaW50Lipib29sJ10pLAotCi0gICAgICAoJ1NUQVRJQ19BU1NFUlRfVFlQRV9F
UV9XT1JLU19JTl9GVU5DVElPTicsCi0gICAgICAgW3InU3RhdGljQXNzZXJ0VHlwZUVxLipjb25z
dCBpbnQuKmludCddKSwKLQotICAgICAgKCdTQU5JVFknLAotICAgICAgIE5vbmUpCi0gICAgICBd
Ci0KLSAgICAjIFRPRE8od2FuQGdvb2dsZS5jb20pOiB2ZXJpZnkgdGhhdCB0aGUgdGVzdCBzcGVj
cyBhcmUgc2F0aXNmaWVkLgotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIHVuaXR0
ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9ub190ZXN0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9ub190ZXN0X3VuaXR0ZXN0LmNjCmluZGV4IGFmZTJkYzBjOTJmZTQzYWU5MzViMjJjZWYzMTc3
ZTUxODRiN2ZmYTEuLmQ0Zjg4ZGJmZGZhNjhlNmEwYzQwYmI5OWZhYzZlNGRiY2NmZjhmM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X25vX3Rlc3Rf
dW5pdHRlc3QuY2MKQEAgLTI5LDI2ICsyOSwyNiBAQAogCiAvLyBUZXN0cyB0aGF0IGEgR29vZ2xl
IFRlc3QgcHJvZ3JhbSB0aGF0IGhhcyBubyB0ZXN0IGRlZmluZWQgY2FuIHJ1bgogLy8gc3VjY2Vz
c2Z1bGx5LgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiBp
bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKICAgdGVzdGluZzo6SW5pdEdvb2dsZVRl
c3QoJmFyZ2MsIGFyZ3YpOwogCiAgIC8vIEFuIGFkLWhvYyBhc3NlcnRpb24gb3V0c2lkZSBvZiBh
bGwgdGVzdHMuCiAgIC8vCi0gIC8vIFRoaXMgc2VydmVzIHR3byBwdXJwb3NlczoKKyAgLy8gVGhp
cyBzZXJ2ZXMgdGhyZWUgcHVycG9zZXM6CiAgIC8vCiAgIC8vIDEuIEl0IHZlcmlmaWVzIHRoYXQg
YW4gYWQtaG9jIGFzc2VydGlvbiBjYW4gYmUgZXhlY3V0ZWQgZXZlbiBpZgogICAvLyAgICBubyB0
ZXN0IGlzIGRlZmluZWQuCi0gIC8vIDIuIFdlIGhhZCBhIGJ1ZyB3aGVyZSB0aGUgWE1MIG91dHB1
dCB3b24ndCBiZSBnZW5lcmF0ZWQgaWYgYW4KKyAgLy8gMi4gSXQgdmVyaWZpZXMgdGhhdCBhIGZh
aWxlZCBhZC1ob2MgYXNzZXJ0aW9uIGNhdXNlcyB0aGUgdGVzdAorICAvLyAgICBwcm9ncmFtIHRv
IGZhaWwuCisgIC8vIDMuIFdlIGhhZCBhIGJ1ZyB3aGVyZSB0aGUgWE1MIG91dHB1dCB3b24ndCBi
ZSBnZW5lcmF0ZWQgaWYgYW4KICAgLy8gICAgYXNzZXJ0aW9uIGlzIGV4ZWN1dGVkIGJlZm9yZSBS
VU5fQUxMX1RFU1RTKCkgaXMgY2FsbGVkLCBldmVuCiAgIC8vICAgIHRob3VnaCAtLWd0ZXN0X291
dHB1dD14bWwgaXMgc3BlY2lmaWVkLiAgVGhpcyBtYWtlcyBzdXJlIHRoZQogICAvLyAgICBidWcg
aXMgZml4ZWQgYW5kIGRvZXNuJ3QgcmVncmVzcy4KLSAgRVhQRUNUX0VRKDEsIDEpOworICBFWFBF
Q1RfRVEoMSwgMik7CiAKLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKKyAgLy8gVGhlIGFib3Zl
IEVYUEVDVF9FUSgpIHNob3VsZCBjYXVzZSBSVU5fQUxMX1RFU1RTKCkgdG8gcmV0dXJuIG5vbi16
ZXJvLgorICByZXR1cm4gUlVOX0FMTF9URVNUUygpID8gMCA6IDE7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0LnB5IGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdC5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggMTkyMDMwYTIwMjBiZmQ0MWU5NGM0ZTQ5MTRjYWJhMzhkYjc0ZjJm
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0LnB5CisrKyAvZGV2L251bGwK
QEAgLTEsMzI3ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQg
MjAwOCwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLSIiIlRlc3RzIHRoZSB0ZXh0IG91dHB1dCBvZiBHb29nbGUgQysrIFRlc3RpbmcgRnJh
bWV3b3JrLgotCi1TWU5PUFNJUwotICAgICAgIGd0ZXN0X291dHB1dF90ZXN0LnB5IC0tZ3Rlc3Rf
YnVpbGRfZGlyPUJVSUxEL0RJUiAtLWdlbmdvbGRlbgotICAgICAgICAgIyB3aGVyZSBCVUlMRC9E
SVIgY29udGFpbnMgdGhlIGJ1aWx0IGd0ZXN0X291dHB1dF90ZXN0XyBmaWxlLgotICAgICAgIGd0
ZXN0X291dHB1dF90ZXN0LnB5IC0tZ2VuZ29sZGVuCi0gICAgICAgZ3Rlc3Rfb3V0cHV0X3Rlc3Qu
cHkKLSIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwot
Ci1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHN5cwotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRp
bHMKLQotCi0jIFRoZSBmbGFnIGZvciBnZW5lcmF0aW5nIHRoZSBnb2xkZW4gZmlsZQotR0VOR09M
REVOX0ZMQUcgPSAnLS1nZW5nb2xkZW4nCi1DQVRDSF9FWENFUFRJT05TX0VOVl9WQVJfTkFNRSA9
ICdHVEVTVF9DQVRDSF9FWENFUFRJT05TJwotCi1JU19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQn
Ci0KLWlmIElTX1dJTkRPV1M6Ci0gIEdPTERFTl9OQU1FID0gJ2d0ZXN0X291dHB1dF90ZXN0X2dv
bGRlbl93aW4udHh0JwotZWxzZToKLSAgR09MREVOX05BTUUgPSAnZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
Z29sZGVuX2xpbi50eHQnCi0KLVBST0dSQU1fUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVz
dEV4ZWN1dGFibGVQYXRoKCdndGVzdF9vdXRwdXRfdGVzdF8nKQotCi0jIEF0IGxlYXN0IG9uZSBj
b21tYW5kIHdlIGV4ZXJjaXNlIG11c3Qgbm90IGhhdmUgdGhlCi0jIC0tZ3Rlc3RfaW50ZXJuYWxf
c2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzIGZsYWcuCi1DT01NQU5EX0xJU1RfVEVT
VFMgPSAoe30sIFtQUk9HUkFNX1BBVEgsICctLWd0ZXN0X2xpc3RfdGVzdHMnXSkKLUNPTU1BTkRf
V0lUSF9DT0xPUiA9ICh7fSwgW1BST0dSQU1fUEFUSCwgJy0tZ3Rlc3RfY29sb3I9eWVzJ10pCi1D
T01NQU5EX1dJVEhfVElNRSA9ICh7fSwgW1BST0dSQU1fUEFUSCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgJy0tZ3Rlc3RfcHJpbnRfdGltZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICctLWd0ZXN0X2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cycsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICctLWd0ZXN0X2ZpbHRlcj1GYXRhbEZhaWx1cmVUZXN0
Lio6TG9nZ2luZ1Rlc3QuKiddKQotQ09NTUFORF9XSVRIX0RJU0FCTEVEID0gKAotICAgIHt9LCBb
UFJPR1JBTV9QQVRILAotICAgICAgICAgJy0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMn
LAotICAgICAgICAgJy0tZ3Rlc3RfaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9j
X3Rlc3RzJywKLSAgICAgICAgICctLWd0ZXN0X2ZpbHRlcj0qRElTQUJMRURfKiddKQotQ09NTUFO
RF9XSVRIX1NIQVJESU5HID0gKAotICAgIHsnR1RFU1RfU0hBUkRfSU5ERVgnOiAnMScsICdHVEVT
VF9UT1RBTF9TSEFSRFMnOiAnMid9LAotICAgIFtQUk9HUkFNX1BBVEgsCi0gICAgICctLWd0ZXN0
X2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cycsCi0gICAgICctLWd0
ZXN0X2ZpbHRlcj1QYXNzaW5nVGVzdC4qJ10pCi0KLUdPTERFTl9QQVRIID0gb3MucGF0aC5qb2lu
KGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNlRGlyKCksIEdPTERFTl9OQU1FKQotCi0KLWRlZiBU
b1VuaXhMaW5lRW5kaW5nKHMpOgotICAiIiJDaGFuZ2VzIGFsbCBXaW5kb3dzL01hYyBsaW5lIGVu
ZGluZ3MgaW4gcyB0byBVTklYIGxpbmUgZW5kaW5ncy4iIiIKLQotICByZXR1cm4gcy5yZXBsYWNl
KCdcclxuJywgJ1xuJykucmVwbGFjZSgnXHInLCAnXG4nKQotCi0KLWRlZiBSZW1vdmVMb2NhdGlv
bnModGVzdF9vdXRwdXQpOgotICAiIiJSZW1vdmVzIGFsbCBmaWxlIGxvY2F0aW9uIGluZm8gZnJv
bSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuCi0KLSAgQXJnczoKLSAgICAgICB0ZXN0
X291dHB1dDogIHRoZSBvdXRwdXQgb2YgYSBHb29nbGUgVGVzdCBwcm9ncmFtLgotCi0gIFJldHVy
bnM6Ci0gICAgICAgb3V0cHV0IHdpdGggYWxsIGZpbGUgbG9jYXRpb24gaW5mbyAoaW4gdGhlIGZv
cm0gb2YKLSAgICAgICAnRElSRUNUT1JZL0ZJTEVfTkFNRTpMSU5FX05VTUJFUjogJ29yCi0gICAg
ICAgJ0RJUkVDVE9SWVxcRklMRV9OQU1FKExJTkVfTlVNQkVSKTogJykgcmVwbGFjZWQgYnkKLSAg
ICAgICAnRklMRV9OQU1FOiM6ICcuCi0gICIiIgotCi0gIHJldHVybiByZS5zdWIocicuKlsvXFxd
KC4rKShcOlxkK3xcKFxkK1wpKVw6ICcsIHInXDE6IzogJywgdGVzdF9vdXRwdXQpCi0KLQotZGVm
IFJlbW92ZVN0YWNrVHJhY2VEZXRhaWxzKG91dHB1dCk6Ci0gICIiIlJlbW92ZXMgYWxsIHN0YWNr
IHRyYWNlcyBmcm9tIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4iIiIKLQotICAjICo/
IG1lYW5zICJmaW5kIHRoZSBzaG9ydGVzdCBzdHJpbmcgdGhhdCBtYXRjaGVzIi4KLSAgcmV0dXJu
IHJlLnN1YihyJ1N0YWNrIHRyYWNlOigufFxuKSo/XG5cbicsCi0gICAgICAgICAgICAgICAgJ1N0
YWNrIHRyYWNlOiAob21pdHRlZClcblxuJywgb3V0cHV0KQotCi0KLWRlZiBSZW1vdmVTdGFja1Ry
YWNlcyhvdXRwdXQpOgotICAiIiJSZW1vdmVzIGFsbCB0cmFjZXMgb2Ygc3RhY2sgdHJhY2VzIGZy
b20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgotCi0gICMgKj8gbWVhbnMgImZp
bmQgdGhlIHNob3J0ZXN0IHN0cmluZyB0aGF0IG1hdGNoZXMiLgotICByZXR1cm4gcmUuc3ViKHIn
U3RhY2sgdHJhY2U6KC58XG4pKj9cblxuJywgJycsIG91dHB1dCkKLQotCi1kZWYgUmVtb3ZlVGlt
ZShvdXRwdXQpOgotICAiIiJSZW1vdmVzIGFsbCB0aW1lIGluZm9ybWF0aW9uIGZyb20gYSBHb29n
bGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgotCi0gIHJldHVybiByZS5zdWIocidcKFxkKyBt
cycsICcoPyBtcycsIG91dHB1dCkKLQotCi1kZWYgUmVtb3ZlVHlwZUluZm9EZXRhaWxzKHRlc3Rf
b3V0cHV0KToKLSAgIiIiUmVtb3ZlcyBjb21waWxlci1zcGVjaWZpYyB0eXBlIGluZm8gZnJvbSBH
b29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LgotCi0gIEFyZ3M6Ci0gICAgICAgdGVzdF9vdXRw
dXQ6ICB0aGUgb3V0cHV0IG9mIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbS4KLQotICBSZXR1cm5zOgot
ICAgICAgIG91dHB1dCB3aXRoIHR5cGUgaW5mb3JtYXRpb24gbm9ybWFsaXplZCB0byBjYW5vbmlj
YWwgZm9ybS4KLSAgIiIiCi0KLSAgIyBzb21lIGNvbXBpbGVycyBvdXRwdXQgdGhlIG5hbWUgb2Yg
dHlwZSAndW5zaWduZWQgaW50JyBhcyAndW5zaWduZWQnCi0gIHJldHVybiByZS5zdWIocid1bnNp
Z25lZCBpbnQnLCAndW5zaWduZWQnLCB0ZXN0X291dHB1dCkKLQotCi1kZWYgUmVtb3ZlVGVzdENv
dW50cyhvdXRwdXQpOgotICAiIiJSZW1vdmVzIHRlc3QgY291bnRzIGZyb20gYSBHb29nbGUgVGVz
dCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgotCi0gIG91dHB1dCA9IHJlLnN1YihyJ1xkKyB0ZXN0cz8s
IGxpc3RlZCBiZWxvdycsCi0gICAgICAgICAgICAgICAgICAnPyB0ZXN0cywgbGlzdGVkIGJlbG93
Jywgb3V0cHV0KQotICBvdXRwdXQgPSByZS5zdWIocidcZCsgRkFJTEVEIFRFU1RTJywKLSAgICAg
ICAgICAgICAgICAgICc/IEZBSUxFRCBURVNUUycsIG91dHB1dCkKLSAgb3V0cHV0ID0gcmUuc3Vi
KHInXGQrIHRlc3RzPyBmcm9tIFxkKyB0ZXN0IGNhc2VzPycsCi0gICAgICAgICAgICAgICAgICAn
PyB0ZXN0cyBmcm9tID8gdGVzdCBjYXNlcycsIG91dHB1dCkKLSAgb3V0cHV0ID0gcmUuc3ViKHIn
XGQrIHRlc3RzPyBmcm9tIChbYS16QS1aX10pJywKLSAgICAgICAgICAgICAgICAgIHInPyB0ZXN0
cyBmcm9tIFwxJywgb3V0cHV0KQotICByZXR1cm4gcmUuc3ViKHInXGQrIHRlc3RzP1wuJywgJz8g
dGVzdHMuJywgb3V0cHV0KQotCi0KLWRlZiBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0
LCBwYXR0ZXJuKToKLSAgIiIiUmVtb3ZlcyBvdXRwdXQgb2Ygc3BlY2lmaWVkIHRlc3RzIGZyb20g
YSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LgotCi0gIFRoaXMgZnVuY3Rpb24gc3RyaXBz
IG5vdCBvbmx5IHRoZSBiZWdpbm5pbmcgYW5kIHRoZSBlbmQgb2YgYSB0ZXN0IGJ1dCBhbHNvCi0g
IGFsbCBvdXRwdXQgaW4gYmV0d2Vlbi4KLQotICBBcmdzOgotICAgIHRlc3Rfb3V0cHV0OiAgICAg
ICBBIHN0cmluZyBjb250YWluaW5nIHRoZSB0ZXN0IG91dHB1dC4KLSAgICBwYXR0ZXJuOiAgICAg
ICAgICAgQSByZWdleCBzdHJpbmcgdGhhdCBtYXRjaGVzIG5hbWVzIG9mIHRlc3QgY2FzZXMgb3IK
LSAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMgdG8gcmVtb3ZlLgotCi0gIFJldHVybnM6Ci0g
ICAgQ29udGVudHMgb2YgdGVzdF9vdXRwdXQgd2l0aCB0ZXN0cyB3aG9zZSBuYW1lcyBtYXRjaCBw
YXR0ZXJuIHJlbW92ZWQuCi0gICIiIgotCi0gIHRlc3Rfb3V0cHV0ID0gcmUuc3ViKAotICAgICAg
cicuKlxbIFJVTiAgICAgIFxdIC4qJXMoLnxcbikqP1xbKCAgRkFJTEVEICB8ICAgICAgIE9LIClc
XSAuKiVzLipcbicgJSAoCi0gICAgICAgICAgcGF0dGVybiwgcGF0dGVybiksCi0gICAgICAnJywK
LSAgICAgIHRlc3Rfb3V0cHV0KQotICByZXR1cm4gcmUuc3ViKHInLiolcy4qXG4nICUgcGF0dGVy
biwgJycsIHRlc3Rfb3V0cHV0KQotCi0KLWRlZiBOb3JtYWxpemVPdXRwdXQob3V0cHV0KToKLSAg
IiIiTm9ybWFsaXplcyBvdXRwdXQgKHRoZSBvdXRwdXQgb2YgZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmV4
ZSkuIiIiCi0KLSAgb3V0cHV0ID0gVG9Vbml4TGluZUVuZGluZyhvdXRwdXQpCi0gIG91dHB1dCA9
IFJlbW92ZUxvY2F0aW9ucyhvdXRwdXQpCi0gIG91dHB1dCA9IFJlbW92ZVN0YWNrVHJhY2VEZXRh
aWxzKG91dHB1dCkKLSAgb3V0cHV0ID0gUmVtb3ZlVGltZShvdXRwdXQpCi0gIHJldHVybiBvdXRw
dXQKLQotCi1kZWYgR2V0U2hlbGxDb21tYW5kT3V0cHV0KGVudl9jbWQpOgotICAiIiJSdW5zIGEg
Y29tbWFuZCBpbiBhIHN1Yi1wcm9jZXNzLCBhbmQgcmV0dXJucyBpdHMgb3V0cHV0IGluIGEgc3Ry
aW5nLgotCi0gIEFyZ3M6Ci0gICAgZW52X2NtZDogVGhlIHNoZWxsIGNvbW1hbmQuIEEgMi10dXBs
ZSB3aGVyZSBlbGVtZW50IDAgaXMgYSBkaWN0IG9mIGV4dHJhCi0gICAgICAgICAgICAgZW52aXJv
bm1lbnQgdmFyaWFibGVzIHRvIHNldCwgYW5kIGVsZW1lbnQgMSBpcyBhIHN0cmluZyB3aXRoCi0g
ICAgICAgICAgICAgdGhlIGNvbW1hbmQgYW5kIGFueSBmbGFncy4KLQotICBSZXR1cm5zOgotICAg
IEEgc3RyaW5nIHdpdGggdGhlIGNvbW1hbmQncyBjb21iaW5lZCBzdGFuZGFyZCBhbmQgZGlhZ25v
c3RpYyBvdXRwdXQuCi0gICIiIgotCi0gICMgU3Bhd25zIGNtZCBpbiBhIHN1Yi1wcm9jZXNzLCBh
bmQgZ2V0cyBpdHMgc3RhbmRhcmQgSS9PIGZpbGUgb2JqZWN0cy4KLSAgIyBTZXQgYW5kIHNhdmUg
dGhlIGVudmlyb25tZW50IHByb3Blcmx5LgotICBlbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkK
LSAgZW52aXJvbi51cGRhdGUoZW52X2NtZFswXSkKLSAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3Vi
cHJvY2VzcyhlbnZfY21kWzFdLCBlbnY9ZW52aXJvbikKLQotICByZXR1cm4gcC5vdXRwdXQKLQot
Ci1kZWYgR2V0Q29tbWFuZE91dHB1dChlbnZfY21kKToKLSAgIiIiUnVucyBhIGNvbW1hbmQgYW5k
IHJldHVybnMgaXRzIG91dHB1dCB3aXRoIGFsbCBmaWxlIGxvY2F0aW9uCi0gIGluZm8gc3RyaXBw
ZWQgb2ZmLgotCi0gIEFyZ3M6Ci0gICAgZW52X2NtZDogIFRoZSBzaGVsbCBjb21tYW5kLiBBIDIt
dHVwbGUgd2hlcmUgZWxlbWVudCAwIGlzIGEgZGljdCBvZiBleHRyYQotICAgICAgICAgICAgICBl
bnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0LCBhbmQgZWxlbWVudCAxIGlzIGEgc3RyaW5nIHdp
dGgKLSAgICAgICAgICAgICAgdGhlIGNvbW1hbmQgYW5kIGFueSBmbGFncy4KLSAgIiIiCi0KLSAg
IyBEaXNhYmxlcyBleGNlcHRpb24gcG9wLXVwcyBvbiBXaW5kb3dzLgotICBlbnZpcm9uLCBjbWRs
aW5lID0gZW52X2NtZAotICBlbnZpcm9uID0gZGljdChlbnZpcm9uKSAgIyBFbnN1cmVzIHdlIGFy
ZSBtb2RpZnlpbmcgYSBjb3B5LgotICBlbnZpcm9uW0NBVENIX0VYQ0VQVElPTlNfRU5WX1ZBUl9O
QU1FXSA9ICcxJwotICByZXR1cm4gTm9ybWFsaXplT3V0cHV0KEdldFNoZWxsQ29tbWFuZE91dHB1
dCgoZW52aXJvbiwgY21kbGluZSkpKQotCi0KLWRlZiBHZXRPdXRwdXRPZkFsbENvbW1hbmRzKCk6
Ci0gICIiIlJldHVybnMgY29uY2F0ZW5hdGVkIG91dHB1dCBmcm9tIHNldmVyYWwgcmVwcmVzZW50
YXRpdmUgY29tbWFuZHMuIiIiCi0KLSAgcmV0dXJuIChHZXRDb21tYW5kT3V0cHV0KENPTU1BTkRf
V0lUSF9DT0xPUikgKwotICAgICAgICAgIEdldENvbW1hbmRPdXRwdXQoQ09NTUFORF9XSVRIX1RJ
TUUpICsKLSAgICAgICAgICBHZXRDb21tYW5kT3V0cHV0KENPTU1BTkRfV0lUSF9ESVNBQkxFRCkg
KwotICAgICAgICAgIEdldENvbW1hbmRPdXRwdXQoQ09NTUFORF9XSVRIX1NIQVJESU5HKSkKLQot
Ci10ZXN0X2xpc3QgPSBHZXRTaGVsbENvbW1hbmRPdXRwdXQoQ09NTUFORF9MSVNUX1RFU1RTKQot
U1VQUE9SVFNfREVBVEhfVEVTVFMgPSAnRGVhdGhUZXN0JyBpbiB0ZXN0X2xpc3QKLVNVUFBPUlRT
X1RZUEVEX1RFU1RTID0gJ1R5cGVkVGVzdCcgaW4gdGVzdF9saXN0Ci1TVVBQT1JUU19USFJFQURT
ID0gJ0V4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QnIGluIHRlc3RfbGlzdAotU1VQUE9SVFNf
U1RBQ0tfVFJBQ0VTID0gRmFsc2UKLQotQ0FOX0dFTkVSQVRFX0dPTERFTl9GSUxFID0gKFNVUFBP
UlRTX0RFQVRIX1RFU1RTIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVUFBPUlRT
X1RZUEVEX1RFU1RTIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVUFBPUlRTX1RI
UkVBRFMpCi0KLQotY2xhc3MgR1Rlc3RPdXRwdXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENh
c2UpOgotICBkZWYgUmVtb3ZlVW5zdXBwb3J0ZWRUZXN0cyhzZWxmLCB0ZXN0X291dHB1dCk6Ci0g
ICAgaWYgbm90IFNVUFBPUlRTX0RFQVRIX1RFU1RTOgotICAgICAgdGVzdF9vdXRwdXQgPSBSZW1v
dmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCAnRGVhdGhUZXN0JykKLSAgICBpZiBub3QgU1VQ
UE9SVFNfVFlQRURfVEVTVFM6Ci0gICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVz
dHModGVzdF9vdXRwdXQsICdUeXBlZFRlc3QnKQotICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVN
YXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCAnVHlwZWREZWF0aFRlc3QnKQotICAgICAgdGVzdF9v
dXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCAnVHlwZVBhcmFtRGVhdGhU
ZXN0JykKLSAgICBpZiBub3QgU1VQUE9SVFNfVEhSRUFEUzoKLSAgICAgIHRlc3Rfb3V0cHV0ID0g
UmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCcpCi0gICAgICB0
ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Njb3BlZEZha2VUZXN0UGFydFJlc3VsdFJl
cG9ydGVyVGVzdCcpCi0gICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVz
dF9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1dvcmtz
Q29uY3VycmVudGx5JykKLSAgICBpZiBub3QgU1VQUE9SVFNfU1RBQ0tfVFJBQ0VTOgotICAgICAg
dGVzdF9vdXRwdXQgPSBSZW1vdmVTdGFja1RyYWNlcyh0ZXN0X291dHB1dCkKLQotICAgIHJldHVy
biB0ZXN0X291dHB1dAotCi0gIGRlZiB0ZXN0T3V0cHV0KHNlbGYpOgotICAgIG91dHB1dCA9IEdl
dE91dHB1dE9mQWxsQ29tbWFuZHMoKQotCi0gICAgZ29sZGVuX2ZpbGUgPSBvcGVuKEdPTERFTl9Q
QVRILCAncmInKQotICAgICMgQSBtaXMtY29uZmlndXJlZCBzb3VyY2UgY29udHJvbCBzeXN0ZW0g
Y2FuIGNhdXNlIFxyIGFwcGVhciBpbiBFT0wKLSAgICAjIHNlcXVlbmNlcyB3aGVuIHdlIHJlYWQg
dGhlIGdvbGRlbiBmaWxlIGlycmVzcGVjdGl2ZSBvZiBhbiBvcGVyYXRpbmcKLSAgICAjIHN5c3Rl
bSB1c2VkLiBUaGVyZWZvcmUsIHdlIG5lZWQgdG8gc3RyaXAgdGhvc2UgXHIncyBmcm9tIG5ld2xp
bmVzCi0gICAgIyB1bmNvbmRpdGlvbmFsbHkuCi0gICAgZ29sZGVuID0gVG9Vbml4TGluZUVuZGlu
Zyhnb2xkZW5fZmlsZS5yZWFkKCkpCi0gICAgZ29sZGVuX2ZpbGUuY2xvc2UoKQotCi0gICAgIyBX
ZSB3YW50IHRoZSB0ZXN0IHRvIHBhc3MgcmVnYXJkbGVzcyBvZiBjZXJ0YWluIGZlYXR1cmVzIGJl
aW5nCi0gICAgIyBzdXBwb3J0ZWQgb3Igbm90LgotCi0gICAgIyBXZSBzdGlsbCBoYXZlIHRvIHJl
bW92ZSB0eXBlIG5hbWUgc3BlY2lmaWNzIGluIGFsbCBjYXNlcy4KLSAgICBub3JtYWxpemVkX2Fj
dHVhbCA9IFJlbW92ZVR5cGVJbmZvRGV0YWlscyhvdXRwdXQpCi0gICAgbm9ybWFsaXplZF9nb2xk
ZW4gPSBSZW1vdmVUeXBlSW5mb0RldGFpbHMoZ29sZGVuKQotCi0gICAgaWYgQ0FOX0dFTkVSQVRF
X0dPTERFTl9GSUxFOgotICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtYWxpemVkX2dvbGRlbiwg
bm9ybWFsaXplZF9hY3R1YWwpCi0gICAgZWxzZToKLSAgICAgIG5vcm1hbGl6ZWRfYWN0dWFsID0g
UmVtb3ZlVGVzdENvdW50cyhub3JtYWxpemVkX2FjdHVhbCkKLSAgICAgIG5vcm1hbGl6ZWRfZ29s
ZGVuID0gUmVtb3ZlVGVzdENvdW50cyhzZWxmLlJlbW92ZVVuc3VwcG9ydGVkVGVzdHMoCi0gICAg
ICAgICAgbm9ybWFsaXplZF9nb2xkZW4pKQotCi0gICAgICAjIFRoaXMgY29kZSBpcyB2ZXJ5IGhh
bmR5IHdoZW4gZGVidWdnaW5nIGdvbGRlbiBmaWxlIGRpZmZlcmVuY2VzOgotICAgICAgaWYgb3Mu
Z2V0ZW52KCdERUJVR19HVEVTVF9PVVRQVVRfVEVTVCcpOgotICAgICAgICBvcGVuKG9zLnBhdGgu
am9pbigKLSAgICAgICAgICAgIGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNlRGlyKCksCi0gICAg
ICAgICAgICAnX2d0ZXN0X291dHB1dF90ZXN0X25vcm1hbGl6ZWRfYWN0dWFsLnR4dCcpLCAnd2In
KS53cml0ZSgKLSAgICAgICAgICAgICAgICBub3JtYWxpemVkX2FjdHVhbCkKLSAgICAgICAgb3Bl
bihvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICBndGVzdF90ZXN0X3V0aWxzLkdldFNvdXJjZURp
cigpLAotICAgICAgICAgICAgJ19ndGVzdF9vdXRwdXRfdGVzdF9ub3JtYWxpemVkX2dvbGRlbi50
eHQnKSwgJ3diJykud3JpdGUoCi0gICAgICAgICAgICAgICAgbm9ybWFsaXplZF9nb2xkZW4pCi0K
LSAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWFsaXplZF9nb2xkZW4sIG5vcm1hbGl6ZWRfYWN0
dWFsKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGlmIHN5cy5hcmd2WzE6XSA9
PSBbR0VOR09MREVOX0ZMQUddOgotICAgIGlmIENBTl9HRU5FUkFURV9HT0xERU5fRklMRToKLSAg
ICAgIG91dHB1dCA9IEdldE91dHB1dE9mQWxsQ29tbWFuZHMoKQotICAgICAgZ29sZGVuX2ZpbGUg
PSBvcGVuKEdPTERFTl9QQVRILCAnd2InKQotICAgICAgZ29sZGVuX2ZpbGUud3JpdGUob3V0cHV0
KQotICAgICAgZ29sZGVuX2ZpbGUuY2xvc2UoKQotICAgIGVsc2U6Ci0gICAgICBtZXNzYWdlID0g
KAotICAgICAgICAgICIiIlVuYWJsZSB0byB3cml0ZSBhIGdvbGRlbiBmaWxlIHdoZW4gY29tcGls
ZWQgaW4gYW4gZW52aXJvbm1lbnQKLXRoYXQgZG9lcyBub3Qgc3VwcG9ydCBhbGwgdGhlIHJlcXVp
cmVkIGZlYXR1cmVzIChkZWF0aCB0ZXN0cyIiIikKLSAgICAgIGlmIElTX1dJTkRPV1M6Ci0gICAg
ICAgIG1lc3NhZ2UgKz0gKAotICAgICAgICAgICAgIiIiXG5hbmQgdHlwZWQgdGVzdHMpLiBQbGVh
c2UgY2hlY2sgdGhhdCB5b3UgYXJlIHVzaW5nIFZDKysgOC4wIFNQMQotb3IgaGlnaGVyIGFzIHlv
dXIgY29tcGlsZXIuIiIiKQotICAgICAgZWxzZToKLSAgICAgICAgbWVzc2FnZSArPSAiIiJcbnR5
cGVkIHRlc3RzLCBhbmQgdGhyZWFkcykuICBQbGVhc2UgZ2VuZXJhdGUgdGhlCi1nb2xkZW4gZmls
ZSB1c2luZyBhIGJpbmFyeSBidWlsdCB3aXRoIHRob3NlIGZlYXR1cmVzIGVuYWJsZWQuIiIiCi0K
LSAgICAgIHN5cy5zdGRlcnIud3JpdGUobWVzc2FnZSkKLSAgICAgIHN5cy5leGl0KDEpCi0gIGVs
c2U6Ci0gICAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDI3M2U4ZTkzZWIwNTlmNWRiNjkzN2M4YzdkNzc3NjZmODc4MDUyNzAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwx
MTM1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoK
LS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
Ly8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwot
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LS8vCi0vLyBBIHVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QgaXRzZWxmLiAgVGhpcyB2ZXJpZmll
cyB0aGF0IHRoZSBiYXNpYwotLy8gY29uc3RydWN0cyBvZiBHb29nbGUgVGVzdCB3b3JrLgotLy8K
LS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0LXNwaS5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLS8vIEluZGljYXRl
cyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8v
IGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwu
aCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRo
aXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1
ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8gaGlzIGNvZGUuCi0jZGVmaW5lIEdURVNU
X0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgot
I3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0KLSNp
ZiBHVEVTVF9JU19USFJFQURTQUZFCi11c2luZyB0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlcjsKLXVzaW5nIHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0QXJyYXk7Ci0KLXVz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpOb3RpZmljYXRpb247Ci11c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6VGhyZWFkV2l0aFBhcmFtOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBwb3NpeCA9IDo6dGVz
dGluZzo6aW50ZXJuYWw6OnBvc2l4OwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZzsK
LXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpzY29wZWRfcHRyOwotCi0vLyBUZXN0cyBjYXRjaGlu
ZyBmYXRhbCBmYWlsdXJlcy4KLQotLy8gQSBzdWJyb3V0aW5lIHVzZWQgYnkgdGhlIGZvbGxvd2lu
ZyB0ZXN0Lgotdm9pZCBUZXN0RXExKGludCB4KSB7Ci0gIEFTU0VSVF9FUSgxLCB4KTsKLX0KLQot
Ly8gVGhpcyBmdW5jdGlvbiBjYWxscyBhIHRlc3Qgc3Vicm91dGluZSwgY2F0Y2hlcyB0aGUgZmF0
YWwgZmFpbHVyZSBpdAotLy8gZ2VuZXJhdGVzLCBhbmQgdGhlbiByZXR1cm5zIGVhcmx5Lgotdm9p
ZCBUcnlUZXN0U3Vicm91dGluZSgpIHsKLSAgLy8gQ2FsbHMgYSBzdWJyb3VudGluZSB0aGF0IHlp
ZWxkcyBhIGZhdGFsIGZhaWx1cmUuCi0gIFRlc3RFcTEoMik7Ci0KLSAgLy8gQ2F0Y2hlcyB0aGUg
ZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSB0ZXN0LgotICAvLwotICAvLyBUaGUgdGVzdGlu
Zzo6VGVzdDo6IHByZWZpeCBpcyBuZWNlc3Nhcnkgd2hlbiBjYWxsaW5nCi0gIC8vIEhhc0ZhdGFs
RmFpbHVyZSgpIG91dHNpZGUgb2YgYSBURVNULCBURVNUX0YsIG9yIHRlc3QgZml4dHVyZS4KLSAg
aWYgKHRlc3Rpbmc6OlRlc3Q6Okhhc0ZhdGFsRmFpbHVyZSgpKSByZXR1cm47Ci0KLSAgLy8gSWYg
d2UgZ2V0IGhlcmUsIHNvbWV0aGluZyBpcyB3cm9uZy4KLSAgRkFJTCgpIDw8ICJUaGlzIHNob3Vs
ZCBuZXZlciBiZSByZWFjaGVkLiI7Ci19Ci0KLVRFU1QoUGFzc2luZ1Rlc3QsIFBhc3NpbmdUZXN0
MSkgewotfQotCi1URVNUKFBhc3NpbmdUZXN0LCBQYXNzaW5nVGVzdDIpIHsKLX0KLQotLy8gVGVz
dHMgY2F0Y2hpbmcgYSBmYXRhbCBmYWlsdXJlIGluIGEgc3Vicm91dGluZS4KLVRFU1QoRmF0YWxG
YWlsdXJlVGVzdCwgRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lKSB7Ci0gIHByaW50ZigiKGV4cGVj
dGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKVxuIik7Ci0KLSAgVHJ5VGVzdFN1YnJv
dXRpbmUoKTsKLX0KLQotLy8gVGVzdHMgY2F0Y2hpbmcgYSBmYXRhbCBmYWlsdXJlIGluIGEgbmVz
dGVkIHN1YnJvdXRpbmUuCi1URVNUKEZhdGFsRmFpbHVyZVRlc3QsIEZhdGFsRmFpbHVyZUluTmVz
dGVkU3Vicm91dGluZSkgewotICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBz
aG91bGQgYmUgMSlcbiIpOwotCi0gIC8vIENhbGxzIGEgc3Vicm91bnRpbmUgdGhhdCB5aWVsZHMg
YSBmYXRhbCBmYWlsdXJlLgotICBUcnlUZXN0U3Vicm91dGluZSgpOwotCi0gIC8vIENhdGNoZXMg
dGhlIGZhdGFsIGZhaWx1cmUgYW5kIGFib3J0cyB0aGUgdGVzdC4KLSAgLy8KLSAgLy8gV2hlbiBj
YWxsaW5nIEhhc0ZhdGFsRmFpbHVyZSgpIGluc2lkZSBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdAot
ICAvLyBmaXh0dXJlLCB0aGUgdGVzdGluZzo6VGVzdDo6IHByZWZpeCBpcyBub3QgbmVlZGVkLgot
ICBpZiAoSGFzRmF0YWxGYWlsdXJlKCkpIHJldHVybjsKLQotICAvLyBJZiB3ZSBnZXQgaGVyZSwg
c29tZXRoaW5nIGlzIHdyb25nLgotICBGQUlMKCkgPDwgIlRoaXMgc2hvdWxkIG5ldmVyIGJlIHJl
YWNoZWQuIjsKLX0KLQotLy8gVGVzdHMgSGFzRmF0YWxGYWlsdXJlKCkgYWZ0ZXIgYSBmYWlsZWQg
RVhQRUNUIGNoZWNrLgotVEVTVChGYXRhbEZhaWx1cmVUZXN0LCBOb25mYXRhbEZhaWx1cmVJblN1
YnJvdXRpbmUpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiBmYWxzZSlcbiIp
OwotICBFWFBFQ1RfVFJVRShmYWxzZSk7ICAvLyBHZW5lcmF0ZXMgYSBub25mYXRhbCBmYWlsdXJl
Ci0gIEFTU0VSVF9GQUxTRShIYXNGYXRhbEZhaWx1cmUoKSk7ICAvLyBUaGlzIHNob3VsZCBzdWNj
ZWVkLgotfQotCi0vLyBUZXN0cyBpbnRlcmxlYXZpbmcgdXNlciBsb2dnaW5nIGFuZCBHb29nbGUg
VGVzdCBhc3NlcnRpb25zLgotVEVTVChMb2dnaW5nVGVzdCwgSW50ZXJsZWF2aW5nTG9nZ2luZ0Fu
ZEFzc2VydGlvbnMpIHsKLSAgc3RhdGljIGNvbnN0IGludCBhWzRdID0gewotICAgIDMsIDksIDIs
IDYKLSAgfTsKLQotICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFb
aV0pKVxuIik7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
YSkvc2l6ZW9mKCphKSk7IGkrKykgewotICAgIHByaW50ZigiaSA9PSAlZFxuIiwgaSk7Ci0gICAg
RVhQRUNUX0dFKDMsIGFbaV0pOwotICB9Ci19Ci0KLS8vIFRlc3RzIHRoZSBTQ09QRURfVFJBQ0Ug
bWFjcm8uCi0KLS8vIEEgaGVscGVyIGZ1bmN0aW9uIGZvciB0ZXN0aW5nIFNDT1BFRF9UUkFDRS4K
LXZvaWQgU3ViV2l0aG91dFRyYWNlKGludCBuKSB7Ci0gIEVYUEVDVF9FUSgxLCBuKTsKLSAgQVNT
RVJUX0VRKDIsIG4pOwotfQotCi0vLyBBbm90aGVyIGhlbHBlciBmdW5jdGlvbiBmb3IgdGVzdGlu
ZyBTQ09QRURfVFJBQ0UuCi12b2lkIFN1YldpdGhUcmFjZShpbnQgbikgewotICBTQ09QRURfVFJB
Q0UodGVzdGluZzo6TWVzc2FnZSgpIDw8ICJuID0gIiA8PCBuKTsKLQotICBTdWJXaXRob3V0VHJh
Y2Uobik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFKCkgb2JleXMgbGV4aWNhbCBz
Y29wZXMuCi1URVNUKFNDT1BFRF9UUkFDRVRlc3QsIE9iZXlzU2NvcGVzKSB7Ci0gIHByaW50Zigi
KGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKLQotICAvLyBUaGVyZSBzaG91bGQgYmUgbm8gdHJhY2Ug
YmVmb3JlIFNDT1BFRF9UUkFDRSgpIGlzIGludm9rZWQuCi0gIEFERF9GQUlMVVJFKCkgPDwgIlRo
aXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuIjsKLQot
ICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJFeHBlY3RlZCB0cmFjZSIpOwotICAgIC8vIEFmdGVyIFND
T1BFRF9UUkFDRSgpLCBhIGZhaWx1cmUgaW4gdGhlIGN1cnJlbnQgc2NvcGUgc2hvdWxkIGNvbnRh
aW4KLSAgICAvLyB0aGUgdHJhY2UuCi0gICAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJl
IGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGhhdmUgYSB0cmFjZS4iOwotICB9Ci0KLSAgLy8gT25j
ZSB0aGUgY29udHJvbCBsZWF2ZXMgdGhlIHNjb3BlIG9mIHRoZSBTQ09QRURfVFJBQ0UoKSwgdGhl
cmUKLSAgLy8gc2hvdWxkIGJlIG5vIHRyYWNlIGFnYWluLgotICBBRERfRkFJTFVSRSgpIDw8ICJU
aGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNlLiI7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFIHdvcmtzIGluc2lkZSBhIGxvb3AuCi1URVNU
KFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtzSW5Mb29wKSB7Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRv
IGZhaWwpXG4iKTsKLQotICBmb3IgKGludCBpID0gMTsgaSA8PSAyOyBpKyspIHsKLSAgICBTQ09Q
RURfVFJBQ0UodGVzdGluZzo6TWVzc2FnZSgpIDw8ICJpID0gIiA8PCBpKTsKLQotICAgIFN1Yldp
dGhvdXRUcmFjZShpKTsKLSAgfQotfQotCi0vLyBUZXN0cyB0aGF0IFNDT1BFRF9UUkFDRSB3b3Jr
cyBpbiBhIHN1YnJvdXRpbmUuCi1URVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtzSW5TdWJyb3V0
aW5lKSB7Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKLQotICBTdWJXaXRoVHJh
Y2UoMSk7Ci0gIFN1YldpdGhUcmFjZSgyKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBTQ09QRURfVFJB
Q0UgY2FuIGJlIG5lc3RlZC4KLVRFU1QoU0NPUEVEX1RSQUNFVGVzdCwgQ2FuQmVOZXN0ZWQpIHsK
LSAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIpOwotCi0gIFNDT1BFRF9UUkFDRSgiIik7
ICAvLyBBIHRyYWNlIHdpdGhvdXQgYSBtZXNzYWdlLgotCi0gIFN1YldpdGhUcmFjZSgyKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBtdWx0aXBsZSBTQ09QRURfVFJBQ0VzIGNhbiBiZSB1c2VkIGluIHRo
ZSBzYW1lIHNjb3BlLgotVEVTVChTQ09QRURfVFJBQ0VUZXN0LCBDYW5CZVJlcGVhdGVkKSB7Ci0g
IHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKLQotICBTQ09QRURfVFJBQ0UoIkEiKTsK
LSAgQUREX0ZBSUxVUkUoKQotICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5k
IHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEuIjsKLQotICBTQ09QRURfVFJBQ0UoIkIiKTsK
LSAgQUREX0ZBSUxVUkUoKQotICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5k
IHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEgYW5kIEIuIjsKLQotICB7Ci0gICAgU0NPUEVE
X1RSQUNFKCJDIik7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVj
dGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gIgotICAgICAgICAgICAgICAgICAgPDwgInRyYWNlIHBv
aW50IEEsIEIsIGFuZCBDLiI7Ci0gIH0KLQotICBTQ09QRURfVFJBQ0UoIkQiKTsKLSAgQUREX0ZB
SUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4g
IgotICAgICAgICAgICAgICAgIDw8ICJ0cmFjZSBwb2ludCBBLCBCLCBhbmQgRC4iOwotfQotCi0j
aWYgR1RFU1RfSVNfVEhSRUFEU0FGRQotLy8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0UoKXMgY2Fu
IGJlIHVzZWQgY29uY3VycmVudGx5IGZyb20gbXVsdGlwbGUKLS8vIHRocmVhZHMuICBOYW1lbHks
IGFuIGFzc2VydGlvbiBzaG91bGQgYmUgYWZmZWN0ZWQgYnkKLS8vIFNDT1BFRF9UUkFDRSgpcyBp
biBpdHMgb3duIHRocmVhZCBvbmx5LgotCi0vLyBIZXJlJ3MgdGhlIHNlcXVlbmNlIG9mIGFjdGlv
bnMgdGhhdCBoYXBwZW4gaW4gdGhlIHRlc3Q6Ci0vLwotLy8gICBUaHJlYWQgQSAobWFpbikgICAg
ICAgICAgICAgICAgfCBUaHJlYWQgQiAoc3Bhd25lZCkKLS8vICAgPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PXw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8gICBzcGF3
bnMgdGhyZWFkIEIgICAgICAgICAgICAgICAgfAotLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgIHdhaXRzIGZv
ciBuMSAgICAgICAgICAgICAgICAgICB8IFNDT1BFRF9UUkFDRSgiVHJhY2UgQiIpOwotLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnZW5lcmF0ZXMgZmFpbHVyZSAjMQotLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBub3RpZmllcyBuMQotLy8gICAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0vLyAgIFNDT1BFRF9UUkFDRSgiVHJhY2UgQSIpOyAgICAgICB8IHdhaXRzIGZvciBuMgot
Ly8gICBnZW5lcmF0ZXMgZmFpbHVyZSAjMiAgICAgICAgICAgfAotLy8gICBub3RpZmllcyBuMiAg
ICAgICAgICAgICAgICAgICAgfAotLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgIHdhaXRzIGZvciBuMyAgICAg
ICAgICAgICAgICAgICB8IGdlbmVyYXRlcyBmYWlsdXJlICMzCi0vLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IHRyYWNlIEIgZGllcwotLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCBnZW5lcmF0ZXMgZmFpbHVyZSAjNAotLy8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCBub3RpZmllcyBuMwotLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgIGdlbmVyYXRl
cyBmYWlsdXJlICM1ICAgICAgICAgICB8IGZpbmlzaGVzCi0vLyAgIHRyYWNlIEEgZGllcyAgICAg
ICAgICAgICAgICAgICB8Ci0vLyAgIGdlbmVyYXRlcyBmYWlsdXJlICM2ICAgICAgICAgICB8Ci0v
LyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS8vICAgd2FpdHMgZm9yIHRocmVhZCBCIHRvIGZpbmlzaCAgIHwKLQotc3Ry
dWN0IENoZWNrUG9pbnRzIHsKLSAgTm90aWZpY2F0aW9uIG4xOwotICBOb3RpZmljYXRpb24gbjI7
Ci0gIE5vdGlmaWNhdGlvbiBuMzsKLX07Ci0KLXN0YXRpYyB2b2lkIFRocmVhZFdpdGhTY29wZWRU
cmFjZShDaGVja1BvaW50cyogY2hlY2tfcG9pbnRzKSB7Ci0gIHsKLSAgICBTQ09QRURfVFJBQ0Uo
IlRyYWNlIEIiKTsKLSAgICBBRERfRkFJTFVSRSgpCi0gICAgICAgIDw8ICJFeHBlY3RlZCBmYWls
dXJlICMxIChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBCIGFsaXZlKS4iOwotICAgIGNoZWNrX3Bv
aW50cy0+bjEuTm90aWZ5KCk7Ci0gICAgY2hlY2tfcG9pbnRzLT5uMi5XYWl0Rm9yTm90aWZpY2F0
aW9uKCk7Ci0KLSAgICBBRERfRkFJTFVSRSgpCi0gICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJl
ICMzIChpbiB0aHJlYWQgQiwgdHJhY2UgQSAmIEIgYm90aCBhbGl2ZSkuIjsKLSAgfSAgLy8gVHJh
Y2UgQiBkaWVzIGhlcmUuCi0gIEFERF9GQUlMVVJFKCkKLSAgICAgIDw8ICJFeHBlY3RlZCBmYWls
dXJlICM0IChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBBIGFsaXZlKS4iOwotICBjaGVja19wb2lu
dHMtPm4zLk5vdGlmeSgpOwotfQotCi1URVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtzQ29uY3Vy
cmVudGx5KSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyA2IGZhaWx1cmVzKVxuIik7Ci0KLSAgQ2hl
Y2tQb2ludHMgY2hlY2tfcG9pbnRzOwotICBUaHJlYWRXaXRoUGFyYW08Q2hlY2tQb2ludHMqPiB0
aHJlYWQoJlRocmVhZFdpdGhTY29wZWRUcmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZjaGVja19wb2ludHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOVUxMKTsKLSAgY2hlY2tfcG9pbnRzLm4xLldhaXRGb3JOb3RpZmljYXRpb24o
KTsKLQotICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJUcmFjZSBBIik7Ci0gICAgQUREX0ZBSUxVUkUo
KQotICAgICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiAoaW4gdGhyZWFkIEEsIHRyYWNlIEEg
JiBCIGJvdGggYWxpdmUpLiI7Ci0gICAgY2hlY2tfcG9pbnRzLm4yLk5vdGlmeSgpOwotICAgIGNo
ZWNrX3BvaW50cy5uMy5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7Ci0KLSAgICBBRERfRkFJTFVSRSgp
Ci0gICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM1IChpbiB0aHJlYWQgQSwgb25seSB0cmFj
ZSBBIGFsaXZlKS4iOwotICB9ICAvLyBUcmFjZSBBIGRpZXMgaGVyZS4KLSAgQUREX0ZBSUxVUkUo
KQotICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzYgKGluIHRocmVhZCBBLCBubyB0cmFjZSBh
bGl2ZSkuIjsKLSAgdGhyZWFkLkpvaW4oKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFE
U0FGRQotCi1URVNUKERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdCwKLSAgICAgRElTQUJMRURfQWxz
b1J1bkRpc2FibGVkVGVzdHNGbGFnU3VwcHJlc3Nlc1dhcm5pbmcpIHsKLSAgLy8gVGhpcyB0ZXN0
IGJvZHkgaXMgaW50ZW50aW9uYWxseSBlbXB0eS4gIEl0cyBzb2xlIHB1cnBvc2UgaXMgZm9yCi0g
IC8vIHZlcmlmeWluZyB0aGF0IHRoZSAtLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIGZs
YWcKLSAgLy8gc3VwcHJlc3NlcyB0aGUgIllPVSBIQVZFIDEyIERJU0FCTEVEIFRFU1RTIiB3YXJu
aW5nIGF0IHRoZSBlbmQgb2YKLSAgLy8gdGhlIHRlc3Qgb3V0cHV0LgotfQotCi0vLyBUZXN0cyB1
c2luZyBhc3NlcnRpb25zIG91dHNpZGUgb2YgVEVTVCBhbmQgVEVTVF9GLgotLy8KLS8vIFRoaXMg
ZnVuY3Rpb24gY3JlYXRlcyB0d28gZmFpbHVyZXMgaW50ZW50aW9uYWxseS4KLXZvaWQgQWRIb2NU
ZXN0KCkgewotICBwcmludGYoIlRoZSBub24tdGVzdCBwYXJ0IG9mIHRoZSBjb2RlIGlzIGV4cGVj
dGVkIHRvIGhhdmUgMiBmYWlsdXJlcy5cblxuIik7Ci0gIEVYUEVDVF9UUlVFKGZhbHNlKTsKLSAg
RVhQRUNUX0VRKDIsIDMpOwotfQotCi0vLyBSdW5zIGFsbCBURVNUcywgYWxsIFRFU1RfRnMsIGFu
ZCB0aGUgYWQgaG9jIHRlc3QuCi1pbnQgUnVuQWxsVGVzdHMoKSB7Ci0gIEFkSG9jVGVzdCgpOwot
ICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQotCi0vLyBUZXN0cyBub24tZmF0YWwgZmFpbHVy
ZXMgaW4gdGhlIGZpeHR1cmUgY29uc3RydWN0b3IuCi1jbGFzcyBOb25GYXRhbEZhaWx1cmVJbkZp
eHR1cmVDb25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVk
OgotICBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QoKSB7Ci0gICAgcHJp
bnRmKCIoZXhwZWN0aW5nIDUgZmFpbHVyZXMpXG4iKTsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJF
eHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGMndG9yLiI7Ci0gIH0KLQot
ICB+Tm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0KCkgewotICAgIEFERF9G
QUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzUsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0
b3IuIjsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBBRERfRkFJTFVSRSgp
IDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBTZXRVcCgpLiI7Ci0gIH0KLQotICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVy
ZSAjNCwgaW4gVGVhckRvd24uIjsKLSAgfQotfTsKLQotVEVTVF9GKE5vbkZhdGFsRmFpbHVyZUlu
Rml4dHVyZUNvbnN0cnVjdG9yVGVzdCwgRmFpbHVyZUluQ29uc3RydWN0b3IpIHsKLSAgQUREX0ZB
SUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgYm9keS4iOwotfQot
Ci0vLyBUZXN0cyBmYXRhbCBmYWlsdXJlcyBpbiB0aGUgZml4dHVyZSBjb25zdHJ1Y3Rvci4KLWNs
YXNzIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9y
VGVzdCgpIHsKLSAgICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOwotICAgIElu
aXQoKTsKLSAgfQotCi0gIH5GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QoKSB7
Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3Qg
Zml4dHVyZSBkJ3Rvci4iOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIEFE
RF9GQUlMVVJFKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiBTZXRVcCgpLiAgIgotICAgICAg
ICAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgdGhlIHRlc3QgZml4
dHVyZSBjJ3RvciAiCi0gICAgICAgICAgICAgICAgICA8PCAiaGFkIGEgZmF0YWwgZmFpbHVyZS4i
OwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIEFERF9GQUlMVVJFKCkg
PDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiBUZWFyRG93bigpLiAgIgotICAgICAgICAgICAgICAg
ICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgdGhlIHRlc3QgZml4dHVyZSBjJ3Rv
ciAiCi0gICAgICAgICAgICAgICAgICA8PCAiaGFkIGEgZmF0YWwgZmFpbHVyZS4iOwotICB9Ci0g
cHJpdmF0ZToKLSAgdm9pZCBJbml0KCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVy
ZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4iOwotICB9Ci19OwotCi1URVNUX0YoRmF0
YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LCBGYWlsdXJlSW5Db25zdHJ1Y3Rvcikg
ewotICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gdGhlIHRlc3QgYm9k
eS4gICIKLSAgICAgICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0
aGUgdGVzdCBmaXh0dXJlIGMndG9yICIKLSAgICAgICAgICAgICAgICA8PCAiaGFkIGEgZmF0YWwg
ZmFpbHVyZS4iOwotfQotCi0vLyBUZXN0cyBub24tZmF0YWwgZmFpbHVyZXMgaW4gU2V0VXAoKS4K
LWNsYXNzIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qg
ewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB+Tm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QoKSB7
Ci0gICAgRGVpbml0KCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgcHJp
bnRmKCIoZXhwZWN0aW5nIDQgZmFpbHVyZXMpXG4iKTsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJF
eHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzLCBpbiBUZWFy
RG93bigpLiI7Ci0gIH0KLSBwcml2YXRlOgotICB2b2lkIERlaW5pdCgpIHsKLSAgICBGQUlMKCkg
PDwgIkV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKLSAg
fQotfTsKLQotVEVTVF9GKE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LCBGYWlsdXJlSW5TZXRV
cCkgewotICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZ1bmN0
aW9uLiI7Ci19Ci0KLS8vIFRlc3RzIGZhdGFsIGZhaWx1cmVzIGluIFNldFVwKCkuCi1jbGFzcyBG
YXRhbEZhaWx1cmVJblNldFVwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0
ZWQ6Ci0gIHZpcnR1YWwgfkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0KCkgewotICAgIERlaW5pdCgp
OwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIHByaW50ZigiKGV4cGVjdGlu
ZyAzIGZhaWx1cmVzKVxuIik7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBp
biBTZXRVcCgpLiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgRkFJ
TCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLiI7Ci0gIH0KLSBwcml2
YXRlOgotICB2b2lkIERlaW5pdCgpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUg
IzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKLSAgfQotfTsKLQotVEVTVF9GKEZhdGFs
RmFpbHVyZUluU2V0VXBUZXN0LCBGYWlsdXJlSW5TZXRVcCkgewotICBGQUlMKCkgPDwgIlVORVhQ
RUNURUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBmdW5jdGlvbi4gICIKLSAgICAgICAgIDw8ICJXZSBz
aG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIFNldFVwKCkgZmFpbGVkLiI7Ci19Ci0KLSNpZiBHVEVT
VF9PU19XSU5ET1dTCi0KLS8vIFRoaXMgZ3JvdXAgb2YgdGVzdHMgdmVyaWZpZXMgdGhhdCBHb29n
bGUgVGVzdCBoYW5kbGVzIFNFSCBhbmQgQysrCi0vLyBleGNlcHRpb25zIGNvcnJlY3RseS4KLQot
Ly8gQSBmdW5jdGlvbiB0aGF0IHRocm93cyBhbiBTRUggZXhjZXB0aW9uLgotc3RhdGljIHZvaWQg
VGhyb3dTRUgoKSB7Ci0gIGludCogcCA9IE5VTEw7Ci0gICpwID0gMDsgIC8vIFJhaXNlcyBhbiBh
Y2Nlc3MgdmlvbGF0aW9uLgotfQotCi0vLyBUZXN0cyBleGNlcHRpb25zIHRocm93biBpbiB0aGUg
dGVzdCBmaXh0dXJlIGNvbnN0cnVjdG9yLgotY2xhc3MgRXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICBFeGNlcHRpb25JbkZp
eHR1cmVDdG9yVGVzdCgpIHsKLSAgICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlIG9uIHRo
cm93biBleGNlcHRpb24gIgotICAgICAgICAgICAiaW4gdGhlIHRlc3QgZml4dHVyZSdzIGNvbnN0
cnVjdG9yKVxuIik7Ci0KLSAgICBUaHJvd1NFSCgpOwotICB9Ci0KLSAgdmlydHVhbCB+RXhjZXB0
aW9uSW5GaXh0dXJlQ3RvclRlc3QoKSB7Ci0gICAgRGVpbml0KCk7Ci0gIH0KLQotICB2aXJ0dWFs
IHZvaWQgU2V0VXAoKSB7Ci0gICAgRkFJTCgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gU2V0
VXAoKS4gICIKLSAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgdGhl
IHRlc3QgZml4dHVyZSBjJ3RvciB0aHJldy4iOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJE
b3duKCkgewotICAgIEZBSUwoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIFRlYXJEb3duKCku
ICAiCi0gICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0
IGZpeHR1cmUgYyd0b3IgdGhyZXcuIjsKLSAgfQotIHByaXZhdGU6Ci0gIHZvaWQgRGVpbml0KCkg
ewotICAgIEZBSUwoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIHRoZSBkJ3Rvci4gICIKLSAg
ICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgdGhlIHRlc3QgZml4dHVy
ZSBjJ3RvciB0aHJldy4iOwotICB9Ci19OwotCi1URVNUX0YoRXhjZXB0aW9uSW5GaXh0dXJlQ3Rv
clRlc3QsIEV4Y2VwdGlvbkluRml4dHVyZUN0b3IpIHsKLSAgRkFJTCgpIDw8ICJVTkVYUEVDVEVE
IGZhaWx1cmUgaW4gdGhlIHRlc3QgZnVuY3Rpb24uICAiCi0gICAgICAgICA8PCAiV2Ugc2hvdWxk
IG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yIHRocmV3LiI7Ci19Ci0K
LS8vIFRlc3RzIGV4Y2VwdGlvbnMgdGhyb3duIGluIFNldFVwKCkuCi1jbGFzcyBFeGNlcHRpb25J
blNldFVwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1
YWwgfkV4Y2VwdGlvbkluU2V0VXBUZXN0KCkgewotICAgIERlaW5pdCgpOwotICB9Ci0KLSAgdmly
dHVhbCB2b2lkIFNldFVwKCkgewotICAgIHByaW50ZigiKGV4cGVjdGluZyAzIGZhaWx1cmVzKVxu
Iik7Ci0KLSAgICBUaHJvd1NFSCgpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkg
ewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4iOwot
ICB9Ci0gcHJpdmF0ZToKLSAgdm9pZCBEZWluaXQoKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3Rl
ZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLiI7Ci0gIH0KLX07Ci0KLVRF
U1RfRihFeGNlcHRpb25JblNldFVwVGVzdCwgRXhjZXB0aW9uSW5TZXRVcCkgewotICBGQUlMKCkg
PDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBmdW5jdGlvbi4gICIKLSAgICAgICAg
IDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIFNldFVwKCkgdGhyZXcuIjsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBUZWFyRG93bigpIGFuZCB0aGUgdGVzdCBmaXh0dXJlIGQndG9yIGFyZSBh
bHdheXMgY2FsbGVkLAotLy8gZXZlbiB3aGVuIHRoZSB0ZXN0IGZ1bmN0aW9uIHRocm93cyBhbiBl
eGNlcHRpb24uCi1jbGFzcyBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIH5FeGNlcHRpb25JblRlc3RGdW5j
dGlvblRlc3QoKSB7Ci0gICAgRGVpbml0KCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRv
d24oKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigp
LiI7Ci0gIH0KLSBwcml2YXRlOgotICB2b2lkIERlaW5pdCgpIHsKLSAgICBGQUlMKCkgPDwgIkV4
cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKLSAgfQotfTsK
LQotLy8gVGVzdHMgdGhhdCB0aGUgdGVzdCBmaXh0dXJlIGQndG9yIGlzIGFsd2F5cyBjYWxsZWQs
IGV2ZW4gd2hlbiB0aGUKLS8vIHRlc3QgZnVuY3Rpb24gdGhyb3dzIGFuIFNFSCBleGNlcHRpb24u
Ci1URVNUX0YoRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0LCBTRUgpIHsKLSAgcHJpbnRmKCIo
ZXhwZWN0aW5nIDMgZmFpbHVyZXMpXG4iKTsKLQotICBUaHJvd1NFSCgpOwotfQotCi0jaWYgR1RF
U1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gVGVzdHMgdGhhdCB0aGUgdGVzdCBmaXh0dXJlIGQndG9y
IGlzIGFsd2F5cyBjYWxsZWQsIGV2ZW4gd2hlbiB0aGUKLS8vIHRlc3QgZnVuY3Rpb24gdGhyb3dz
IGEgQysrIGV4Y2VwdGlvbi4gIFdlIGRvIHRoaXMgb25seSB3aGVuCi0vLyBHVEVTVF9IQVNfRVhD
RVBUSU9OUyBpcyBub24temVybywgaS5lLiBDKysgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZC4KLVRF
U1RfRihFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QsIENwcEV4Y2VwdGlvbikgewotICB0aHJv
dyAxOwotfQotCi0vLyBUZXN0cyBleGNlcHRpb25zIHRocm93biBpbiBUZWFyRG93bigpLgotY2xh
c3MgRXhjZXB0aW9uSW5UZWFyRG93blRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJv
dGVjdGVkOgotICB2aXJ0dWFsIH5FeGNlcHRpb25JblRlYXJEb3duVGVzdCgpIHsKLSAgICBEZWlu
aXQoKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICB0aHJvdyAxOwot
ICB9Ci0gcHJpdmF0ZToKLSAgdm9pZCBEZWluaXQoKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3Rl
ZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLiI7Ci0gIH0KLX07Ci0KLVRF
U1RfRihFeGNlcHRpb25JblRlYXJEb3duVGVzdCwgRXhjZXB0aW9uSW5UZWFyRG93bikgewotICBw
cmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOwotfQotCi0jZW5kaWYgIC8vIEdURVNU
X0hBU19FWENFUFRJT05TCi0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0jaWYgR1RF
U1RfSVNfVEhSRUFEU0FGRQotCi0vLyBBIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KLXZv
aWQgRGllSWYoYm9vbCBzaG91bGRfZGllKSB7Ci0gIEdURVNUX0NIRUNLXyghc2hvdWxkX2RpZSkg
PDwgIiAtIGRlYXRoIGluc2lkZSBEaWVJZigpLiI7Ci19Ci0KLS8vIFRlc3RzIHJ1bm5pbmcgZGVh
dGggdGVzdHMgaW4gYSBtdWx0aS10aHJlYWRlZCBjb250ZXh0LgotCi0vLyBVc2VkIGZvciBjb29y
ZGluYXRpb24gYmV0d2VlbiB0aGUgbWFpbiBhbmQgdGhlIHNwYXduIHRocmVhZC4KLXN0cnVjdCBT
cGF3blRocmVhZE5vdGlmaWNhdGlvbnMgewotICBTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMoKSB7
fQotCi0gIE5vdGlmaWNhdGlvbiBzcGF3bl90aHJlYWRfc3RhcnRlZDsKLSAgTm90aWZpY2F0aW9u
IHNwYXduX3RocmVhZF9va190b190ZXJtaW5hdGU7Ci0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNB
TExPV19DT1BZX0FORF9BU1NJR05fKFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyk7Ci19OwotCi0v
LyBUaGUgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgaW4gdGhlIHRocmVhZCBzcGF3biBieSB0aGUK
LS8vIE11bHRpcGxlVGhyZWFkcyB0ZXN0IChiZWxvdykuCi1zdGF0aWMgdm9pZCBUaHJlYWRSb3V0
aW5lKFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyogbm90aWZpY2F0aW9ucykgewotICAvLyBTaWdu
YWxzIHRoZSBtYWluIHRocmVhZCB0aGF0IHRoaXMgdGhyZWFkIGhhcyBzdGFydGVkLgotICBub3Rp
ZmljYXRpb25zLT5zcGF3bl90aHJlYWRfc3RhcnRlZC5Ob3RpZnkoKTsKLQotICAvLyBXYWl0cyBm
b3IgcGVybWlzc2lvbiB0byBmaW5pc2ggZnJvbSB0aGUgbWFpbiB0aHJlYWQuCi0gIG5vdGlmaWNh
dGlvbnMtPnNwYXduX3RocmVhZF9va190b190ZXJtaW5hdGUuV2FpdEZvck5vdGlmaWNhdGlvbigp
OwotfQotCi0vLyBUaGlzIGlzIGEgZGVhdGgtdGVzdCB0ZXN0LCBidXQgaXQncyBub3QgbmFtZWQg
d2l0aCBhIERlYXRoVGVzdAotLy8gc3VmZml4LiAgSXQgc3RhcnRzIHRocmVhZHMgd2hpY2ggbWln
aHQgaW50ZXJmZXJlIHdpdGggbGF0ZXIKLS8vIGRlYXRoIHRlc3RzLCBzbyBpdCBtdXN0IHJ1biBh
ZnRlciBhbGwgb3RoZXIgZGVhdGggdGVzdHMuCi1jbGFzcyBEZWF0aFRlc3RBbmRNdWx0aVRocmVh
ZHNUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgLy8gU3RhcnRz
IGEgdGhyZWFkIGFuZCB3YWl0cyBmb3IgaXQgdG8gYmVnaW4uCi0gIHZpcnR1YWwgdm9pZCBTZXRV
cCgpIHsKLSAgICB0aHJlYWRfLnJlc2V0KG5ldyBUaHJlYWRXaXRoUGFyYW08U3Bhd25UaHJlYWRO
b3RpZmljYXRpb25zKj4oCi0gICAgICAgICZUaHJlYWRSb3V0aW5lLCAmbm90aWZpY2F0aW9uc18s
IE5VTEwpKTsKLSAgICBub3RpZmljYXRpb25zXy5zcGF3bl90aHJlYWRfc3RhcnRlZC5XYWl0Rm9y
Tm90aWZpY2F0aW9uKCk7Ci0gIH0KLSAgLy8gVGVsbHMgdGhlIHRocmVhZCB0byBmaW5pc2gsIGFu
ZCByZWFwcyBpdC4KLSAgLy8gRGVwZW5kaW5nIG9uIHRoZSB2ZXJzaW9uIG9mIHRoZSB0aHJlYWQg
bGlicmFyeSBpbiB1c2UsCi0gIC8vIGEgbWFuYWdlciB0aHJlYWQgbWlnaHQgc3RpbGwgYmUgbGVm
dCBydW5uaW5nIHRoYXQgd2lsbCBpbnRlcmZlcmUKLSAgLy8gd2l0aCBsYXRlciBkZWF0aCB0ZXN0
cy4gIFRoaXMgaXMgdW5mb3J0dW5hdGUsIGJ1dCB0aGlzIGNsYXNzCi0gIC8vIGNsZWFucyB1cCBh
ZnRlciBpdHNlbGYgYXMgYmVzdCBpdCBjYW4uCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsK
LSAgICBub3RpZmljYXRpb25zXy5zcGF3bl90aHJlYWRfb2tfdG9fdGVybWluYXRlLk5vdGlmeSgp
OwotICB9Ci0KLSBwcml2YXRlOgotICBTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMgbm90aWZpY2F0
aW9uc187Ci0gIHNjb3BlZF9wdHI8VGhyZWFkV2l0aFBhcmFtPFNwYXduVGhyZWFkTm90aWZpY2F0
aW9ucyo+ID4gdGhyZWFkXzsKLX07Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFEU0FGRQot
Ci0vLyBUaGUgTWl4ZWRVcFRlc3RDYXNlVGVzdCB0ZXN0IGNhc2UgdmVyaWZpZXMgdGhhdCBHb29n
bGUgVGVzdCB3aWxsIGZhaWwgYQotLy8gdGVzdCBpZiBpdCB1c2VzIGEgZGlmZmVyZW50IGZpeHR1
cmUgY2xhc3MgdGhhbiB3aGF0IG90aGVyIHRlc3RzIGluCi0vLyB0aGUgc2FtZSB0ZXN0IGNhc2Ug
dXNlLiAgSXQgZGVsaWJlcmF0ZWx5IGNvbnRhaW5zIHR3byBmaXh0dXJlCi0vLyBjbGFzc2VzIHdp
dGggdGhlIHNhbWUgbmFtZSBidXQgZGVmaW5lZCBpbiBkaWZmZXJlbnQgbmFtZXNwYWNlcy4KLQot
Ly8gVGhlIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0IHRlc3QgY2FzZSB2ZXJp
ZmllcyB0aGF0Ci0vLyB3aGVuIHRoZSB1c2VyIGRlZmluZXMgdHdvIHRlc3RzIHdpdGggdGhlIHNh
bWUgdGVzdCBjYXNlIG5hbWUgQU5ECi0vLyBzYW1lIHRlc3QgbmFtZSAoYnV0IGluIGRpZmZlcmVu
dCBuYW1lc3BhY2VzKSwgdGhlIHNlY29uZCB0ZXN0IHdpbGwKLS8vIGZhaWwuCi0KLW5hbWVzcGFj
ZSBmb28gewotCi1jbGFzcyBNaXhlZFVwVGVzdENhc2VUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewotfTsKLQotVEVTVF9GKE1peGVkVXBUZXN0Q2FzZVRlc3QsIEZpcnN0VGVzdEZyb21OYW1l
c3BhY2VGb28pIHt9Ci1URVNUX0YoTWl4ZWRVcFRlc3RDYXNlVGVzdCwgU2Vjb25kVGVzdEZyb21O
YW1lc3BhY2VGb28pIHt9Ci0KLWNsYXNzIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVEVTVF9GKE1peGVkVXBUZXN0Q2Fz
ZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAotICAgICAgIFRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVT
aG91bGRGYWlsKSB7fQotCi19ICAvLyBuYW1lc3BhY2UgZm9vCi0KLW5hbWVzcGFjZSBiYXIgewot
Ci1jbGFzcyBNaXhlZFVwVGVzdENhc2VUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsK
LQotLy8gVGhlIGZvbGxvd2luZyB0d28gdGVzdHMgYXJlIGV4cGVjdGVkIHRvIGZhaWwuICBXZSBy
ZWx5IG9uIHRoZQotLy8gZ29sZGVuIGZpbGUgdG8gY2hlY2sgdGhhdCBHb29nbGUgVGVzdCBnZW5l
cmF0ZXMgdGhlIHJpZ2h0IGVycm9yIG1lc3NhZ2UuCi1URVNUX0YoTWl4ZWRVcFRlc3RDYXNlVGVz
dCwgVGhpc1Nob3VsZEZhaWwpIHt9Ci1URVNUX0YoTWl4ZWRVcFRlc3RDYXNlVGVzdCwgVGhpc1No
b3VsZEZhaWxUb28pIHt9Ci0KLWNsYXNzIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotLy8gRXhwZWN0ZWQgdG8gZmFpbC4g
IFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIGNoZWNrIHRoYXQgR29vZ2xlIFRlc3QKLS8v
IGdlbmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KLVRFU1RfRihNaXhlZFVwVGVzdENh
c2VXaXRoU2FtZVRlc3ROYW1lVGVzdCwKLSAgICAgICBUaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1l
U2hvdWxkRmFpbCkge30KLQotfSAgLy8gbmFtZXNwYWNlIGJhcgotCi0vLyBUaGUgZm9sbG93aW5n
IHR3byB0ZXN0IGNhc2VzIHZlcmlmeSB0aGF0IEdvb2dsZSBUZXN0IGNhdGNoZXMgdGhlIHVzZXIK
LS8vIGVycm9yIG9mIG1peGluZyBURVNUIGFuZCBURVNUX0YgaW4gdGhlIHNhbWUgdGVzdCBjYXNl
LiAgVGhlIGZpcnN0Ci0vLyB0ZXN0IGNhc2UgY2hlY2tzIHRoZSBzY2VuYXJpbyB3aGVyZSBURVNU
X0YgYXBwZWFycyBiZWZvcmUgVEVTVCwgYW5kCi0vLyB0aGUgc2Vjb25kIG9uZSBjaGVja3Mgd2hl
cmUgVEVTVCBhcHBlYXJzIGJlZm9yZSBURVNUX0YuCi0KLWNsYXNzIFRFU1RfRl9iZWZvcmVfVEVT
VF9pbl9zYW1lX3Rlc3RfY2FzZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRFU1Rf
RihURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UsIERlZmluZWRVc2luZ1RFU1Rf
Rikge30KLQotLy8gRXhwZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxl
IHRvIGNoZWNrIHRoYXQgR29vZ2xlIFRlc3QKLS8vIGdlbmVyYXRlcyB0aGUgcmlnaHQgZXJyb3Ig
bWVzc2FnZS4KLVRFU1QoVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLCBEZWZp
bmVkVXNpbmdURVNUQW5kU2hvdWxkRmFpbCkge30KLQotY2xhc3MgVEVTVF9iZWZvcmVfVEVTVF9G
X2luX3NhbWVfdGVzdF9jYXNlIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVEVTVChU
RVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UsIERlZmluZWRVc2luZ1RFU1QpIHt9
Ci0KLS8vIEV4cGVjdGVkIHRvIGZhaWwuICBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmlsZSB0byBj
aGVjayB0aGF0IEdvb2dsZSBUZXN0Ci0vLyBnZW5lcmF0ZXMgdGhlIHJpZ2h0IGVycm9yIG1lc3Nh
Z2UuCi1URVNUX0YoVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLCBEZWZpbmVk
VXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsKSB7Ci19Ci0KLS8vIFVzZWQgZm9yIHRlc3RpbmcgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBhbmQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKS4KLWludCBn
bG9iYWxfaW50ZWdlciA9IDA7Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoKSBjYW4gcmVmZXJlbmNlIGdsb2JhbCB2YXJpYWJsZXMuCi1URVNUKEV4cGVjdE5vbmZhdGFs
RmFpbHVyZVRlc3QsIENhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcykgewotICBnbG9iYWxfaW50
ZWdlciA9IDA7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBFWFBFQ1RfRVEoMSwg
Z2xvYmFsX2ludGVnZXIpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOwotICB9LCAi
RXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoKSBjYW4gcmVmZXJlbmNlIGxvY2FsIHZhcmlhYmxlcwotLy8gKHN0
YXRpYyBvciBub3QpLgotVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBDYW5SZWZlcmVu
Y2VMb2NhbFZhcmlhYmxlcykgewotICBpbnQgbSA9IDA7Ci0gIHN0YXRpYyBpbnQgbjsKLSAgbiA9
IDE7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBFWFBFQ1RfRVEobSwgbikgPDwg
IkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7Ci0gIH0sICJFeHBlY3RlZCBub24tZmF0YWwg
ZmFpbHVyZS4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgp
IHN1Y2NlZWRzIHdoZW4gdGhlcmUgaXMgZXhhY3RseQotLy8gb25lIG5vbi1mYXRhbCBmYWlsdXJl
IGFuZCBubyBmYXRhbCBmYWlsdXJlLgotVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBT
dWNjZWVkc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKHsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFp
bHVyZS4iOwotICB9LCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZXJlIGlzIG5v
Ci0vLyBub24tZmF0YWwgZmFpbHVyZS4KLVRFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwg
RmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJlKSB7Ci0gIHByaW50ZigiKGV4cGVjdGlu
ZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICB9LCAiIik7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVu
IHRoZXJlIGFyZSB0d28KLS8vIG5vbi1mYXRhbCBmYWlsdXJlcy4KLVRFU1QoRXhwZWN0Tm9uZmF0
YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1cmVzKSB7Ci0g
IHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoewotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
IDEuIjsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSAy
LiI7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RSgpIGZhaWxzIHdoZW4gdGhlcmUgaXMgb25lIGZhdGFsCi0vLyBmYWlsdXJlLgotVEVTVChFeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlKSB7
Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOwotICB9
LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBmYWls
cyB3aGVuIHRoZSBzdGF0ZW1lbnQgYmVpbmcKLS8vIHRlc3RlZCByZXR1cm5zLgotVEVTVChFeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zKSB7Ci0gIHBy
aW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoewotICAgIHJldHVybjsKLSAgfSwgIiIpOwotfQotCi0jaWYgR1RFU1RfSEFTX0VYQ0VQVElP
TlMKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4g
dGhlIHN0YXRlbWVudCBiZWluZwotLy8gdGVzdGVkIHRocm93cy4KLVRFU1QoRXhwZWN0Tm9uZmF0
YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzKSB7Ci0gIHByaW50ZigiKGV4
cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgdHJ5IHsKLSAgICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSh7Ci0gICAgICB0aHJvdyAwOwotICAgIH0sICIiKTsKLSAgfSBjYXRjaChpbnQpIHsgIC8v
IE5PTElOVAotICB9Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVuY2UgZ2xvYmFsIHZh
cmlhYmxlcy4KLVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgQ2FuUmVmZXJlbmNlR2xvYmFs
VmFyaWFibGVzKSB7Ci0gIGdsb2JhbF9pbnRlZ2VyID0gMDsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoewotICAgIEFTU0VSVF9FUSgxLCBnbG9iYWxfaW50ZWdlcikgPDwgIkV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuIjsKLSAgfSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBjYW4gcmVmZXJlbmNlIGxvY2FsIHN0YXRp
YwotLy8gdmFyaWFibGVzLgotVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBDYW5SZWZlcmVu
Y2VMb2NhbFN0YXRpY1ZhcmlhYmxlcykgewotICBzdGF0aWMgaW50IG47Ci0gIG4gPSAxOwotICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0gICAgQVNTRVJUX0VRKDAsIG4pIDw8ICJFeHBlY3RlZCBm
YXRhbCBmYWlsdXJlLiI7Ci0gIH0sICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOwotfQotCi0v
LyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgc3VjY2VlZHMgd2hlbiB0aGVyZSBp
cyBleGFjdGx5Ci0vLyBvbmUgZmF0YWwgZmFpbHVyZSBhbmQgbm8gbm9uLWZhdGFsIGZhaWx1cmUu
Ci1URVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIFN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRh
bEZhaWx1cmUpIHsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICAgIEZBSUwoKSA8PCAiRXhw
ZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhl
cmUgaXMgbm8gZmF0YWwKLS8vIGZhaWx1cmUuCi1URVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qs
IEZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZSkgewotICBwcmludGYoIihleHBlY3Rpbmcg
YSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKLSAgfSwgIiIpOwotfQot
Ci0vLyBBIGhlbHBlciBmb3IgZ2VuZXJhdGluZyBhIGZhdGFsIGZhaWx1cmUuCi12b2lkIEZhdGFs
RmFpbHVyZSgpIHsKLSAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZXJlIGFy
ZSB0d28KLS8vIGZhdGFsIGZhaWx1cmVzLgotVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBG
YWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5n
IGEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0gICAgRmF0YWxGYWls
dXJlKCk7Ci0gICAgRmF0YWxGYWlsdXJlKCk7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgaXMgb25lIG5vbi1mYXRh
bAotLy8gZmFpbHVyZS4KLVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhl
cmVJc09uZU5vbmZhdGFsRmFpbHVyZSkgewotICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJl
KVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJF
eHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZSBzdGF0ZW1lbnQgYmVpbmcK
LS8vIHRlc3RlZCByZXR1cm5zLgotVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1do
ZW5TdGF0ZW1lbnRSZXR1cm5zKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4i
KTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICAgIHJldHVybjsKLSAgfSwgIiIpOwotfQot
Ci0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxf
RkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWluZwotLy8gdGVzdGVkIHRocm93
cy4KLVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dz
KSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgdHJ5IHsKLSAgICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0gICAgICB0aHJvdyAwOwotICAgIH0sICIiKTsKLSAgfSBj
YXRjaChpbnQpIHsgIC8vIE5PTElOVAotICB9Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0VY
Q0VQVElPTlMKLQotLy8gVGhpcyAjaWZkZWYgYmxvY2sgdGVzdHMgdGhlIG91dHB1dCBvZiB0eXBl
ZCB0ZXN0cy4KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLWNsYXNzIFR5cGVkVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVE
X1RFU1RfQ0FTRShUeXBlZFRlc3QsIHRlc3Rpbmc6OlR5cGVzPGludD4pOwotCi1UWVBFRF9URVNU
KFR5cGVkVGVzdCwgU3VjY2VzcykgewotICBFWFBFQ1RfRVEoMCwgVHlwZVBhcmFtKCkpOwotfQot
Ci1UWVBFRF9URVNUKFR5cGVkVGVzdCwgRmFpbHVyZSkgewotICBFWFBFQ1RfRVEoMSwgVHlwZVBh
cmFtKCkpIDw8ICJFeHBlY3RlZCBmYWlsdXJlIjsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNf
VFlQRURfVEVTVAotCi0vLyBUaGlzICNpZmRlZiBibG9jayB0ZXN0cyB0aGUgb3V0cHV0IG9mIHR5
cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgVHlwZWRUZXN0UCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRV9QKFR5cGVkVGVzdFApOwotCi1UWVBFRF9URVNU
X1AoVHlwZWRUZXN0UCwgU3VjY2VzcykgewotICBFWFBFQ1RfRVEoMFUsIFR5cGVQYXJhbSgpKTsK
LX0KLQotVFlQRURfVEVTVF9QKFR5cGVkVGVzdFAsIEZhaWx1cmUpIHsKLSAgRVhQRUNUX0VRKDFV
LCBUeXBlUGFyYW0oKSkgPDwgIkV4cGVjdGVkIGZhaWx1cmUiOwotfQotCi1SRUdJU1RFUl9UWVBF
RF9URVNUX0NBU0VfUChUeXBlZFRlc3RQLCBTdWNjZXNzLCBGYWlsdXJlKTsKLQotdHlwZWRlZiB0
ZXN0aW5nOjpUeXBlczx1bnNpZ25lZCBjaGFyLCB1bnNpZ25lZCBpbnQ+IFVuc2lnbmVkVHlwZXM7
Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChVbnNpZ25lZCwgVHlwZWRUZXN0UCwgVW5z
aWduZWRUeXBlcyk7Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotCi0jaWYg
R1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotLy8gV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8g
dmVyaWZ5IHRoYXQgdGVzdHMgd2hvc2UgdGVzdCBjYXNlCi0vLyBuYW1lIGVuZHMgd2l0aCBEZWF0
aFRlc3QgYXJlIHJ1biBmaXJzdC4KLQotVEVTVChBRGVhdGhUZXN0LCBTaG91bGRSdW5GaXJzdCkg
ewotfQotCi0jaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKLQotLy8gV2UgcmVseSBvbiB0aGUgZ29s
ZGVuIGZpbGUgdG8gdmVyaWZ5IHRoYXQgdHlwZWQgdGVzdHMgd2hvc2UgdGVzdAotLy8gY2FzZSBu
YW1lIGVuZHMgd2l0aCBEZWF0aFRlc3QgYXJlIHJ1biBmaXJzdC4KLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1jbGFzcyBBVHlwZWREZWF0aFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19
OwotCi10eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPGludCwgZG91YmxlPiBOdW1lcmljVHlwZXM7Ci1U
WVBFRF9URVNUX0NBU0UoQVR5cGVkRGVhdGhUZXN0LCBOdW1lcmljVHlwZXMpOwotCi1UWVBFRF9U
RVNUKEFUeXBlZERlYXRoVGVzdCwgU2hvdWxkUnVuRmlyc3QpIHsKLX0KLQotI2VuZGlmICAvLyBH
VEVTVF9IQVNfVFlQRURfVEVTVAotCi0jaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotCi0KLS8v
IFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIHZlcmlmeSB0aGF0IHR5cGUtcGFyYW1ldGVy
aXplZCB0ZXN0cwotLy8gd2hvc2UgdGVzdCBjYXNlIG5hbWUgZW5kcyB3aXRoIERlYXRoVGVzdCBh
cmUgcnVuIGZpcnN0LgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEFUeXBlUGFyYW1E
ZWF0aFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1UWVBFRF9URVNUX0NBU0Vf
UChBVHlwZVBhcmFtRGVhdGhUZXN0KTsKLQotVFlQRURfVEVTVF9QKEFUeXBlUGFyYW1EZWF0aFRl
c3QsIFNob3VsZFJ1bkZpcnN0KSB7Ci19Ci0KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEFU
eXBlUGFyYW1EZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0KTsKLQotSU5TVEFOVElBVEVfVFlQRURf
VEVTVF9DQVNFX1AoTXksIEFUeXBlUGFyYW1EZWF0aFRlc3QsIE51bWVyaWNUeXBlcyk7Ci0KLSNl
bmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19E
RUFUSF9URVNUCi0KLS8vIFRlc3RzIHZhcmlvdXMgZmFpbHVyZSBjb25kaXRpb25zIG9mCi0vLyBF
WFBFQ1RfeyxOT059RkFUQUxfRkFJTFVSRXssX09OX0FMTF9USFJFQURTfS4KLWNsYXNzIEV4cGVj
dEZhaWx1cmVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHB1YmxpYzogIC8vIE11c3Qg
YmUgcHVibGljIGFuZCBub3QgcHJvdGVjdGVkIGR1ZSB0byBhIGJ1ZyBpbiBnKysgMy40LjIuCi0g
IGVudW0gRmFpbHVyZU1vZGUgewotICAgIEZBVEFMX0ZBSUxVUkUsCi0gICAgTk9ORkFUQUxfRkFJ
TFVSRQotICB9OwotICBzdGF0aWMgdm9pZCBBZGRGYWlsdXJlKEZhaWx1cmVNb2RlIGZhaWx1cmUp
IHsKLSAgICBpZiAoZmFpbHVyZSA9PSBGQVRBTF9GQUlMVVJFKSB7Ci0gICAgICBGQUlMKCkgPDwg
IkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKLSAgICB9IGVsc2UgewotICAgICAgQUREX0ZBSUxV
UkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKLSAgICB9Ci0gIH0KLX07Ci0K
LVRFU1RfRihFeHBlY3RGYWlsdXJlVGVzdCwgRXhwZWN0RmF0YWxGYWlsdXJlKSB7Ci0gIC8vIEV4
cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4KLSAgcHJpbnRmKCIoZXhwZWN0aW5n
IDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShTVUNDRUVEKCksICJFeHBl
Y3RlZCBmYXRhbCBmYWlsdXJlLiIpOwotICAvLyBFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLCBidXQg
Z290IGEgbm9uLWZhdGFsIGZhaWx1cmUuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUp
XG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVyZShOT05GQVRBTF9GQUlMVVJF
KSwgIkV4cGVjdGVkIG5vbi1mYXRhbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICJmYWlsdXJl
LiIpOwotICAvLyBXcm9uZyBtZXNzYWdlLgotICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJl
KVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSks
ICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUgIgotICAgICAgICAgICAgICAgICAgICAgICAiZXhw
ZWN0ZWQuIik7Ci19Ci0KLVRFU1RfRihFeHBlY3RGYWlsdXJlVGVzdCwgRXhwZWN0Tm9uRmF0YWxG
YWlsdXJlKSB7Ci0gIC8vIEV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLCBidXQgc3VjY2VlZHMu
Ci0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoU1VDQ0VFRCgpLCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7Ci0gIC8v
IEV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLCBidXQgZ290IGEgZmF0YWwgZmFpbHVyZS4KLSAg
cHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShBZGRGYWlsdXJlKEZBVEFMX0ZBSUxVUkUpLCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4i
KTsKLSAgLy8gV3JvbmcgbWVzc2FnZS4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlc
biIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxV
UkUpLCAiU29tZSBvdGhlciBub24tZmF0YWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZmFpbHVyZS4iKTsKLX0KLQotI2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKLQotY2xhc3MgRXhwZWN0
RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCA6IHB1YmxpYyBFeHBlY3RGYWlsdXJlVGVzdCB7Ci0gcHJv
dGVjdGVkOgotICBzdGF0aWMgdm9pZCBBZGRGYWlsdXJlSW5PdGhlclRocmVhZChGYWlsdXJlTW9k
ZSBmYWlsdXJlKSB7Ci0gICAgVGhyZWFkV2l0aFBhcmFtPEZhaWx1cmVNb2RlPiB0aHJlYWQoJkFk
ZEZhaWx1cmUsIGZhaWx1cmUsIE5VTEwpOwotICAgIHRocmVhZC5Kb2luKCk7Ci0gIH0KLX07Ci0K
LVRFU1RfRihFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LCBFeHBlY3RGYXRhbEZhaWx1cmUp
IHsKLSAgLy8gV2Ugb25seSBpbnRlcmNlcHQgdGhlIGN1cnJlbnQgdGhyZWFkLgotICBwcmludGYo
IihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRG
YWlsdXJlSW5PdGhlclRocmVhZChGQVRBTF9GQUlMVVJFKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Ci19Ci0KLVRFU1RfRihFeHBlY3RGYWlsdXJl
V2l0aFRocmVhZHNUZXN0LCBFeHBlY3ROb25GYXRhbEZhaWx1cmUpIHsKLSAgLy8gV2Ugb25seSBp
bnRlcmNlcHQgdGhlIGN1cnJlbnQgdGhyZWFkLgotICBwcmludGYoIihleHBlY3RpbmcgMiBmYWls
dXJlcylcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlSW5PdGhlclRo
cmVhZChOT05GQVRBTF9GQUlMVVJFKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVj
dGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwotfQotCi10eXBlZGVmIEV4cGVjdEZhaWx1cmVXaXRo
VGhyZWFkc1Rlc3QgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0OwotCi0vLyBU
ZXN0cyB0aGF0IHRoZSBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlciBvbmx5IGNhdGNo
ZXMgZmFpbHVyZXMgZnJvbQotLy8gdGhlIGN1cnJlbnQgdGhyZWFkIGlmIGl0IGlzIGluc3RhbnRp
YXRlZCB3aXRoIElOVEVSQ0VQVF9PTkxZX0NVUlJFTlRfVEhSRUFELgotVEVTVF9GKFNjb3BlZEZh
a2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdCwgSW50ZXJjZXB0T25seUN1cnJlbnRUaHJlYWQp
IHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMpXG4iKTsKLSAgVGVzdFBhcnRSZXN1
bHRBcnJheSByZXN1bHRzOwotICB7Ci0gICAgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0
ZXIgcmVwb3J0ZXIoCi0gICAgICAgIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpJ
TlRFUkNFUFRfT05MWV9DVVJSRU5UX1RIUkVBRCwKLSAgICAgICAgJnJlc3VsdHMpOwotICAgIEFk
ZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZBVEFMX0ZBSUxVUkUpOwotICAgIEFkZEZhaWx1cmVJbk90
aGVyVGhyZWFkKE5PTkZBVEFMX0ZBSUxVUkUpOwotICB9Ci0gIC8vIFRoZSB0d28gZmFpbHVyZXMg
c2hvdWxkIG5vdCBoYXZlIGJlZW4gaW50ZXJjZXB0ZWQuCi0gIEVYUEVDVF9FUSgwLCByZXN1bHRz
LnNpemUoKSkgPDwgIlRoaXMgc2hvdWxkbid0IGZhaWwuIjsKLX0KLQotI2VuZGlmICAvLyBHVEVT
VF9JU19USFJFQURTQUZFCi0KLVRFU1RfRihFeHBlY3RGYWlsdXJlVGVzdCwgRXhwZWN0RmF0YWxG
YWlsdXJlT25BbGxUaHJlYWRzKSB7Ci0gIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBz
dWNjZWVkcy4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhTVUNDRUVEKCksICJFeHBlY3RlZCBmYXRhbCBm
YWlsdXJlLiIpOwotICAvLyBFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLCBidXQgZ290IGEgbm9uLWZh
dGFsIGZhaWx1cmUuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoQWRkRmFpbHVyZShOT05GQVRBTF9GQUlM
VVJFKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIG5v
bi1mYXRhbCBmYWlsdXJlLiIpOwotICAvLyBXcm9uZyBtZXNzYWdlLgotICBwcmludGYoIihleHBl
Y3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJF
QURTKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUgZXhwZWN0ZWQuIik7Ci19Ci0K
LVRFU1RfRihFeHBlY3RGYWlsdXJlVGVzdCwgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJl
YWRzKSB7Ci0gIC8vIEV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLCBidXQgc3VjY2VlZHMuCi0g
IHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkVfT05fQUxMX1RIUkVBRFMoU1VDQ0VFRCgpLCAiRXhwZWN0ZWQgbm9uLWZhdGFsICIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWx1cmUuIik7Ci0gIC8v
IEV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLCBidXQgZ290IGEgZmF0YWwgZmFpbHVyZS4KLSAg
cHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRV9PTl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlKEZBVEFMX0ZBSUxVUkUpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4i
KTsKLSAgLy8gV3JvbmcgbWVzc2FnZS4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlc
biIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhBZGRGYWlsdXJl
KE5PTkZBVEFMX0ZBSUxVUkUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiU29tZSBvdGhlciBub24tZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotCi0vLyBUd28gdGVz
dCBlbnZpcm9ubWVudHMgZm9yIHRlc3RpbmcgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25t
ZW50KCkuCi0KLWNsYXNzIEZvb0Vudmlyb25tZW50IDogcHVibGljIHRlc3Rpbmc6OkVudmlyb25t
ZW50IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBwcmludGYoIiVz
IiwgIkZvb0Vudmlyb25tZW50OjpTZXRVcCgpIGNhbGxlZC5cbiIpOwotICB9Ci0KLSAgdmlydHVh
bCB2b2lkIFRlYXJEb3duKCkgewotICAgIHByaW50ZigiJXMiLCAiRm9vRW52aXJvbm1lbnQ6OlRl
YXJEb3duKCkgY2FsbGVkLlxuIik7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWls
dXJlLiI7Ci0gIH0KLX07Ci0KLWNsYXNzIEJhckVudmlyb25tZW50IDogcHVibGljIHRlc3Rpbmc6
OkVudmlyb25tZW50IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBw
cmludGYoIiVzIiwgIkJhckVudmlyb25tZW50OjpTZXRVcCgpIGNhbGxlZC5cbiIpOwotICB9Ci0K
LSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIHByaW50ZigiJXMiLCAiQmFyRW52aXJv
bm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLlxuIik7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhw
ZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKLSAgfQotfTsKLQotR1RFU1RfREVGSU5FX2Jvb2xf
KGludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cywgZmFsc2UsCi0gICAg
ICAgICAgICAgICAgICAgIlRoaXMgZmxhZyBjYXVzZXMgdGhlIHByb2dyYW0gdG8gc2tpcCB0ZXN0
IGVudmlyb25tZW50ICIKLSAgICAgICAgICAgICAgICAgICAidGVzdHMgYW5kIGFkIGhvYyB0ZXN0
cy4iKTsKLQotLy8gVGhlIG1haW4gZnVuY3Rpb24uCi0vLwotLy8gVGhlIGlkZWEgaXMgdG8gdXNl
IEdvb2dsZSBUZXN0IHRvIHJ1biBhbGwgdGhlIHRlc3RzIHdlIGhhdmUgZGVmaW5lZCAoc29tZQot
Ly8gb2YgdGhlbSBhcmUgaW50ZW5kZWQgdG8gZmFpbCksIGFuZCB0aGVuIGNvbXBhcmUgdGhlIHRl
c3QgcmVzdWx0cwotLy8gd2l0aCB0aGUgImdvbGRlbiIgZmlsZS4KLWludCBtYWluKGludCBhcmdj
LCBjaGFyICoqYXJndikgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKHByaW50X3RpbWUpID0gZmFs
c2U7Ci0KLSAgLy8gV2UganVzdCBydW4gdGhlIHRlc3RzLCBrbm93aW5nIHNvbWUgb2YgdGhlbSBh
cmUgaW50ZW5kZWQgdG8gZmFpbC4KLSAgLy8gV2Ugd2lsbCB1c2UgYSBzZXBhcmF0ZSBQeXRob24g
c2NyaXB0IHRvIGNvbXBhcmUgdGhlIG91dHB1dCBvZgotICAvLyB0aGlzIHByb2dyYW0gd2l0aCB0
aGUgZ29sZGVuIGZpbGUuCi0KLSAgLy8gSXQncyBoYXJkIHRvIHRlc3QgSW5pdEdvb2dsZVRlc3Qo
KSBkaXJlY3RseSwgYXMgaXQgaGFzIG1hbnkKLSAgLy8gZ2xvYmFsIHNpZGUgZWZmZWN0cy4gIFRo
ZSBmb2xsb3dpbmcgbGluZSBzZXJ2ZXMgYXMgYSBzYW5pdHkgdGVzdAotICAvLyBmb3IgaXQuCi0g
IHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLSAgaWYgKGFyZ2MgPj0gMiAm
JgotICAgICAgU3RyaW5nKGFyZ3ZbMV0pID09ICItLWd0ZXN0X2ludGVybmFsX3NraXBfZW52aXJv
bm1lbnRfYW5kX2FkX2hvY190ZXN0cyIpCi0gICAgR1RFU1RfRkxBRyhpbnRlcm5hbF9za2lwX2Vu
dmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMpID0gdHJ1ZTsKLQotI2lmIEdURVNUX0hBU19ERUFU
SF9URVNUCi0gIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6R1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5f
ZGVhdGhfdGVzdCkgIT0gIiIpIHsKLSAgICAvLyBTa2lwIHRoZSB1c3VhbCBvdXRwdXQgY2FwdHVy
aW5nIGlmIHdlJ3JlIHJ1bm5pbmcgYXMgdGhlIGNoaWxkCi0gICAgLy8gcHJvY2VzcyBvZiBhbiB0
aHJlYWRzYWZlLXN0eWxlIGRlYXRoIHRlc3QuCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotICAgIHBv
c2l4OjpGUmVvcGVuKCJudWw6IiwgInciLCBzdGRvdXQpOwotI2Vsc2UKLSAgICBwb3NpeDo6RlJl
b3BlbigiL2Rldi9udWxsIiwgInciLCBzdGRvdXQpOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5E
T1dTCi0gICAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLSAgfQotI2VuZGlmICAvLyBHVEVTVF9I
QVNfREVBVEhfVEVTVAotCi0gIGlmIChHVEVTVF9GTEFHKGludGVybmFsX3NraXBfZW52aXJvbm1l
bnRfYW5kX2FkX2hvY190ZXN0cykpCi0gICAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLQotICAv
LyBSZWdpc3RlcnMgdHdvIGdsb2JhbCB0ZXN0IGVudmlyb25tZW50cy4KLSAgLy8gVGhlIGdvbGRl
biBmaWxlIHZlcmlmaWVzIHRoYXQgdGhleSBhcmUgc2V0IHVwIGluIHRoZSBvcmRlciB0aGV5Ci0g
IC8vIGFyZSByZWdpc3RlcmVkLCBhbmQgdG9ybiBkb3duIGluIHRoZSByZXZlcnNlIG9yZGVyLgot
ICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEZvb0Vudmlyb25tZW50KTsK
LSAgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBCYXJFbnZpcm9ubWVudCk7
Ci0KLSAgcmV0dXJuIFJ1bkFsbFRlc3RzKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0IGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fbGluLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM2MDQzN2FjYWE3NjQwZGZiZjNkYjI4M2Nm
MWQxNTAzNGMwNjIyZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRl
bl9saW4udHh0CisrKyAvZGV2L251bGwKQEAgLTEsNjk2ICswLDAgQEAKLVRoZSBub24tdGVzdCBw
YXJ0IG9mIHRoZSBjb2RlIGlzIGV4cGVjdGVkIHRvIGhhdmUgMiBmYWlsdXJlcy4KLQotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiBmYWxzZQotICBBY3R1YWw6IGZh
bHNlCi1FeHBlY3RlZDogdHJ1ZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZh
bHVlIG9mOiAzCi1FeHBlY3RlZDogMgotG1swOzMybVs9PT09PT09PT09XSAbW21SdW5uaW5nIDYw
IHRlc3RzIGZyb20gMjUgdGVzdCBjYXNlcy4KLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttR2xvYmFs
IHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotRm9vRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVk
LgotQmFyRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLgotG1swOzMybVstLS0tLS0tLS0tXSAb
W20xIHRlc3QgZnJvbSBBRGVhdGhUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUFEZWF0aFRl
c3QuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttQURlYXRoVGVzdC5TaG91
bGRSdW5GaXJzdAotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBBVHlwZWREZWF0
aFRlc3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUFU
eXBlZERlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJtWyAgICAgICBPSyBdIBtbbUFU
eXBlZERlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEg
dGVzdCBmcm9tIEFUeXBlZERlYXRoVGVzdC8xLCB3aGVyZSBUeXBlUGFyYW0gPSBkb3VibGUKLRtb
MDszMm1bIFJVTiAgICAgIF0gG1ttQVR5cGVkRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKLRtb
MDszMm1bICAgICAgIE9LIF0gG1ttQVR5cGVkRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKLRtb
MDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8w
LCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttTXkvQVR5cGVQ
YXJhbURlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJtWyAgICAgICBPSyBdIBtbbU15
L0FUeXBlUGFyYW1EZWF0aFRlc3QvMC5TaG91bGRSdW5GaXJzdAotG1swOzMybVstLS0tLS0tLS0t
XSAbW20xIHRlc3QgZnJvbSBNeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEsIHdoZXJlIFR5cGVQYXJh
bSA9IGRvdWJsZQotG1swOzMybVsgUlVOICAgICAgXSAbW21NeS9BVHlwZVBhcmFtRGVhdGhUZXN0
LzEuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttTXkvQVR5cGVQYXJhbURl
YXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMg
ZnJvbSBQYXNzaW5nVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21QYXNzaW5nVGVzdC5QYXNz
aW5nVGVzdDEKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3Qx
Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgotG1swOzMy
bVsgICAgICAgT0sgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDIKLRtbMDszMm1bLS0tLS0t
LS0tLV0gG1ttMyB0ZXN0cyBmcm9tIEZhdGFsRmFpbHVyZVRlc3QKLRtbMDszMm1bIFJVTiAgICAg
IF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLShleHBlY3Rp
bmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBGYWlsdXJlCi1WYWx1ZSBvZjogeAotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi0bWzA7MzFt
WyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5l
Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5O
ZXN0ZWRTdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEp
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IHgKLSAgQWN0dWFs
OiAyCi1FeHBlY3RlZDogMQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0
LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQotG1swOzMybVsgUlVOICAgICAgXSAbW21G
YXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotKGV4cGVjdGluZyBh
IGZhaWx1cmUgb24gZmFsc2UpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFs
dWUgb2Y6IGZhbHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4cGVjdGVkOiB0cnVlCi0bWzA7MzFtWyAg
RkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5l
Ci0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIExvZ2dpbmdUZXN0Ci0bWzA7MzJt
WyBSVU4gICAgICBdIBtbbUxvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRp
b25zCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24gKDMpID49IChhW2ldKSkKLWkgPT0gMAotaSA9
PSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6ICgzKSA+PSAo
YVtpXSksIGFjdHVhbDogMyB2cyA5Ci1pID09IDIKLWkgPT0gMwotZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgNgot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21Mb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5k
QXNzZXJ0aW9ucwotG1swOzMybVstLS0tLS0tLS0tXSAbW202IHRlc3RzIGZyb20gU0NPUEVEX1RS
QUNFVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lk9iZXlzU2Nv
cGVzCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1GYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEg
dHJhY2UuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1UaGlzIGZh
aWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgaGF2ZSBhIHRyYWNlLgotR29vZ2xlIFRlc3Qg
dHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRXhwZWN0ZWQgdHJhY2UKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVND
T1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttU0NPUEVE
X1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAxCi1FeHBlY3RlZDog
MgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogaSA9IDEKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogbgotICBBY3R1YWw6IDIK
LUV4cGVjdGVkOiAxCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBpID0gMgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5M
b29wCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJblN1YnJv
dXRpbmUKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1
cmUKLVZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMQotRXhwZWN0ZWQ6IDIKLUdvb2dsZSBUZXN0IHRy
YWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4gPSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotR29v
Z2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogbiA9IDIKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGluZQotG1swOzMy
bVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlTmVzdGVkCi0oZXhwZWN0ZWQg
dG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogbgot
ICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBuID0gMgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IAotG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlTmVzdGVkCi0bWzA7MzJtWyBSVU4g
ICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVSZXBlYXRlZAotKGV4cGVjdGVkIHRvIGZh
aWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1UaGlzIGZhaWx1
cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLgotR29vZ2xl
IFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQQotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQg
c2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSBhbmQgQi4KLUdvb2dsZSBUZXN0IHRyYWNlOgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEIKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBBCi1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMg
ZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQgQy4KLUdv
b2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEMKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBCCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQQotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBh
bmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEQuCi1Hb29nbGUgVGVzdCB0
cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBECi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEEKLRtbMDszMW1bICBGQUlMRUQgIF0gG1tt
U0NPUEVEX1RSQUNFVGVzdC5DYW5CZVJlcGVhdGVkCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVND
T1BFRF9UUkFDRVRlc3QuV29ya3NDb25jdXJyZW50bHkKLShleHBlY3RpbmcgNiBmYWlsdXJlcykK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1
cmUgIzEgKGluIHRocmVhZCBCLCBvbmx5IHRyYWNlIEIgYWxpdmUpLgotR29vZ2xlIFRlc3QgdHJh
Y2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogVHJhY2UgQgotZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiAoaW4gdGhyZWFkIEEs
IHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogVHJhY2UgQQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUK
LUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMyAoaW4gdGhyZWFkIEIsIHRyYWNlIEEgJiBCIGJv
dGggYWxpdmUpLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
VHJhY2UgQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0
ZWQgZmFpbHVyZSAjNCAoaW4gdGhyZWFkIEIsIG9ubHkgdHJhY2UgQSBhbGl2ZSkuCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICM1IChp
biB0aHJlYWQgQSwgb25seSB0cmFjZSBBIGFsaXZlKS4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFRyYWNlIEEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBG
YWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzYgKGluIHRocmVhZCBBLCBubyB0cmFj
ZSBhbGl2ZSkuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3ND
b25jdXJyZW50bHkKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gTm9uRmF0YWxG
YWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU5v
bkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3Rv
cgotKGV4cGVjdGluZyA1IGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1
cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rv
ci4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZh
aWx1cmUgIzIsIGluIFNldFVwKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQot
RmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBib2R5LgotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4g
VGVhckRvd24uCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBl
Y3RlZCBmYWlsdXJlICM1LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVy
ZUluQ29uc3RydWN0b3IKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gRmF0YWxG
YWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUZh
dGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3Rvcgot
KGV4cGVjdGluZyAyIGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUK
LUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4K
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1
cmUgIzIsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtb
bUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3Rv
cgotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBOb25GYXRhbEZhaWx1cmVJblNl
dFVwVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21Ob25GYXRhbEZhaWx1cmVJblNldFVwVGVz
dC5GYWlsdXJlSW5TZXRVcAotKGV4cGVjdGluZyA0IGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gU2V0VXAo
KS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZh
aWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gVGVhckRvd24oKS4KLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUg
IzQsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5v
bkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi0bWzA7MzJtWy0tLS0tLS0t
LS1dIBtbbTEgdGVzdCBmcm9tIEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0Ci0bWzA7MzJtWyBSVU4g
ICAgICBdIBtbbUZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi0oZXhwZWN0
aW5nIDMgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVk
Ci1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4K
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1
cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtb
bUZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi0bWzA7MzJtWy0tLS0tLS0t
LS1dIBtbbTQgdGVzdHMgZnJvbSBNaXhlZFVwVGVzdENhc2VUZXN0Ci0bWzA7MzJtWyBSVU4gICAg
ICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbwotG1sw
OzMybVsgICAgICAgT0sgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LkZpcnN0VGVzdEZyb21OYW1l
c3BhY2VGb28KLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5TZWNv
bmRUZXN0RnJvbU5hbWVzcGFjZUZvbwotG1swOzMybVsgICAgICAgT0sgXSAbW21NaXhlZFVwVGVz
dENhc2VUZXN0LlNlY29uZFRlc3RGcm9tTmFtZXNwYWNlRm9vCi0bWzA7MzJtWyBSVU4gICAgICBd
IBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwKLWd0ZXN0LmNjOiM6IEZhaWx1
cmUKLUZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUg
c2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAgSG93ZXZlciwgaW4gdGVzdCBjYXNlIE1peGVkVXBU
ZXN0Q2FzZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0IEZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28g
YW5kIHRlc3QgVGhpc1Nob3VsZEZhaWwKLXVzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJl
IGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKLXRoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBk
aWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlvbgotdW5pdHMgYW5kIGhhdmUgdGhlIHNh
bWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVuYW1lIG9uZQotb2YgdGhlIGNsYXNzZXMg
dG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0ZXN0IGNhc2VzLgotG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsCi0bWzA7MzJtWyBS
VU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWxUb28KLWd0ZXN0
LmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBt
dXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAgSG93ZXZlciwgaW4gdGVzdCBj
YXNlIE1peGVkVXBUZXN0Q2FzZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0IEZpcnN0VGVzdEZyb21O
YW1lc3BhY2VGb28gYW5kIHRlc3QgVGhpc1Nob3VsZEZhaWxUb28KLXVzaW5nIHR3byBkaWZmZXJl
bnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKLXRoZSB0d28gY2xh
c3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlvbgotdW5pdHMg
YW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVuYW1lIG9uZQot
b2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0ZXN0IGNhc2Vz
LgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRG
YWlsVG9vCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBNaXhlZFVwVGVzdENh
c2VXaXRoU2FtZVRlc3ROYW1lVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVz
dENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxk
RmFpbAotG1swOzMybVsgICAgICAgT0sgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3RO
YW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotG1swOzMybVsgUlVO
ICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRU
ZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRmFpbGVkCi1B
bGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4
dHVyZQotY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlV2l0aFNh
bWVUZXN0TmFtZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0IFRoZVNlY29uZFRlc3RXaXRoVGhpc05h
bWVTaG91bGRGYWlsIGFuZCB0ZXN0IFRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWls
Ci11c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAgVGhpcyBjYW4gaGFw
cGVuIGlmCi10aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMgb3Ig
dHJhbnNsYXRpb24KLXVuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZb3Ugc2hvdWxkIHBy
b2JhYmx5IHJlbmFtZSBvbmUKLW9mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50byBk
aWZmZXJlbnQgdGVzdCBjYXNlcy4KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RD
YXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZh
aWwKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFRFU1RfRl9iZWZvcmVfVEVT
VF9pbl9zYW1lX3Rlc3RfY2FzZQotG1swOzMybVsgUlVOICAgICAgXSAbW21URVNUX0ZfYmVmb3Jl
X1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GCi0bWzA7MzJtWyAgICAg
ICBPSyBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNp
bmdURVNUX0YKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2luX3Nh
bWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsCi1ndGVzdC5jYzojOiBG
YWlsdXJlCi1GYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2Ug
dGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcywgc28gbWl4aW5nIFRFU1RfRiBhbmQgVEVTVCBp
biB0aGUgc2FtZSB0ZXN0IGNhc2UgaXMKLWlsbGVnYWwuICBJbiB0ZXN0IGNhc2UgVEVTVF9GX2Jl
Zm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLAotdGVzdCBEZWZpbmVkVXNpbmdURVNUX0YgaXMg
ZGVmaW5lZCB1c2luZyBURVNUX0YgYnV0Ci10ZXN0IERlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRG
YWlsIGlzIGRlZmluZWQgdXNpbmcgVEVTVC4gIFlvdSBwcm9iYWJseQotd2FudCB0byBjaGFuZ2Ug
dGhlIFRFU1QgdG8gVEVTVF9GIG9yIG1vdmUgaXQgdG8gYW5vdGhlciB0ZXN0Ci1jYXNlLgotG1sw
OzMxbVsgIEZBSUxFRCAgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2Uu
RGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0
ZXN0cyBmcm9tIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZQotG1swOzMybVsg
UlVOICAgICAgXSAbW21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5l
ZFVzaW5nVEVTVAotG1swOzMybVsgICAgICAgT0sgXSAbW21URVNUX2JlZm9yZV9URVNUX0ZfaW5f
c2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVAotG1swOzMybVsgUlVOICAgICAgXSAbW21U
RVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5k
U2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhl
IHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3MsIHNv
IG1peGluZyBURVNUX0YgYW5kIFRFU1QgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIGlzCi1pbGxlZ2Fs
LiAgSW4gdGVzdCBjYXNlIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZSwKLXRl
c3QgRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbCBpcyBkZWZpbmVkIHVzaW5nIFRFU1Rf
RiBidXQKLXRlc3QgRGVmaW5lZFVzaW5nVEVTVCBpcyBkZWZpbmVkIHVzaW5nIFRFU1QuICBZb3Ug
cHJvYmFibHkKLXdhbnQgdG8gY2hhbmdlIHRoZSBURVNUIHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRv
IGFub3RoZXIgdGVzdAotY2FzZS4KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVEVTVF9iZWZvcmVf
VEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwK
LRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttOCB0ZXN0cyBmcm9tIEV4cGVjdE5vbmZhdGFsRmFpbHVy
ZVRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5D
YW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLRtbMDszMm1b
IFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2Nh
bFZhcmlhYmxlcwotG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVU
ZXN0LkNhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFp
bHVyZQotG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LlN1
Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAgIF0g
G1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZh
aWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0
ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAg
RkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05v
Tm9uZmF0YWxGYWlsdXJlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFp
bHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1cmVzCi0oZXhwZWN0aW5n
IGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBm
YWlsdXJlCi0gIEFjdHVhbDogMiBmYWlsdXJlcwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5v
bi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSAxLgot
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4
cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDIuCi0KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVy
ZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWls
c1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0
LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3Rl
ZCBmYXRhbCBmYWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFs
RmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotG1swOzMybVsgUlVO
ICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJl
dHVybnMKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0
ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAg
RkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50
UmV0dXJucwotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5j
YzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAg
ZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVz
dC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttOCB0ZXN0
cyBmcm9tIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhw
ZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLRtbMDszMm1b
ICAgICAgIE9LIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxW
YXJpYWJsZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5D
YW5SZWZlcmVuY2VMb2NhbFN0YXRpY1ZhcmlhYmxlcwotG1swOzMybVsgICAgICAgT0sgXSAbW21F
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsU3RhdGljVmFyaWFibGVzCi0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVu
VGhlcmVJc09uZUZhdGFsRmFpbHVyZQotG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3RGYXRh
bEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLRtbMDszMm1b
IFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9G
YXRhbEZhaWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQot
RXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9G
YXRhbEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVz
dC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMKLShleHBlY3RpbmcgYSBmYWlsdXJl
KQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1
YWw6IDIgZmFpbHVyZXMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgot
RmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotG1sw
OzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJl
QXJlVHdvRmF0YWxGYWlsdXJlcwotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKLShleHBlY3Rpbmcg
YSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVy
ZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6
Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFs
RmFpbHVyZQotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZh
aWxzV2hlblN0YXRlbWVudFJldHVybnMKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6
IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVy
ZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1do
ZW5TdGF0ZW1lbnRSZXR1cm5zCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFp
bHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkK
LWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFs
OiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRl
c3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVz
dHMgZnJvbSBUeXBlZFRlc3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci0bWzA7MzJtWyBSVU4g
ICAgICBdIBtbbVR5cGVkVGVzdC8wLlN1Y2Nlc3MKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttVHlw
ZWRUZXN0LzAuU3VjY2VzcwotG1swOzMybVsgUlVOICAgICAgXSAbW21UeXBlZFRlc3QvMC5GYWls
dXJlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IFR5cGVQYXJh
bSgpCi0gIEFjdHVhbDogMAotRXhwZWN0ZWQ6IDEKLUV4cGVjdGVkIGZhaWx1cmUKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttVHlwZWRUZXN0LzAuRmFpbHVyZQotG1swOzMybVstLS0tLS0tLS0tXSAb
W20yIHRlc3RzIGZyb20gVW5zaWduZWQvVHlwZWRUZXN0UC8wLCB3aGVyZSBUeXBlUGFyYW0gPSB1
bnNpZ25lZCBjaGFyCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAv
MC5TdWNjZXNzCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5T
dWNjZXNzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5GYWls
dXJlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IFR5cGVQYXJh
bSgpCi0gIEFjdHVhbDogXDAKLUV4cGVjdGVkOiAxVQotV2hpY2ggaXM6IDEKLUV4cGVjdGVkIGZh
aWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1
cmUKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFVuc2lnbmVkL1R5cGVkVGVz
dFAvMSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50Ci0bWzA7MzJtWyBSVU4gICAgICBd
IBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNzCi0bWzA7MzJtWyAgICAgICBPSyBdIBtb
bVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVVu
c2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFp
bHVyZQotVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogMAotRXhwZWN0ZWQ6IDFVCi1X
aGljaCBpczogMQotRXhwZWN0ZWQgZmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21VbnNp
Z25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZQotG1swOzMybVstLS0tLS0tLS0tXSAbW200IHRlc3Rz
IGZyb20gRXhwZWN0RmFpbHVyZVRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFp
bHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0
LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1TdWNjZWVkZWQKLQotKGV4cGVjdGluZyAx
IGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJl
Ci0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToK
LUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLShleHBlY3RpbmcgMSBmYWls
dXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZSBjb250
YWluaW5nICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUgZXhwZWN0ZWQuIgotICBBY3R1YWw6Ci1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQg
ZmF0YWwgZmFpbHVyZS4KLQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVz
dC5FeHBlY3RGYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVy
ZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0
LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBTdWNjZXNzOgotU3VjY2VlZGVkCi0KLShleHBlY3Rp
bmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFs
IGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1
cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLShleHBlY3RpbmcgMSBmYWls
dXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUg
Y29udGFpbmluZyAiU29tZSBvdGhlciBub24tZmF0YWwgZmFpbHVyZS4iCi0gIEFjdHVhbDoKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0
ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFp
bHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4
cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotKGV4cGVjdGlu
ZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBmYXRhbCBmYWls
dXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBTdWNjZXNzOgotU3VjY2Vl
ZGVkCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0
ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
Tm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgot
Ci0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAx
IGZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBmYXRhbCBmYWlsdXJlIGV4cGVj
dGVkLiIKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6
Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0bWzA7
MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVy
ZU9uQWxsVGhyZWFkcwotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJl
Ci1FeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2NlZWRlZAotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkK
LWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFj
dHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1F
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNj
OiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNv
bWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1cmUuIgotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBm
YWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVj
dE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRl
c3RzIGZyb20gRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdAotG1swOzMybVsgUlVOICAgICAg
XSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQotKGV4
cGVjdGluZyAyIGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZh
aWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVj
dGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0RmF0YWxGYWlsdXJl
Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhw
ZWN0Tm9uRmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4K
LWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFj
dHVhbDogMCBmYWlsdXJlcwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0
aFRocmVhZHNUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQotG1swOzMybVstLS0tLS0tLS0tXSAb
W20xIHRlc3QgZnJvbSBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3QKLRtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0Lklu
dGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMpCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJl
LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgbm9u
LWZhdGFsIGZhaWx1cmUuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNjb3BlZEZha2VUZXN0UGFy
dFJlc3VsdFJlcG9ydGVyVGVzdC5JbnRlcmNlcHRPbmx5Q3VycmVudFRocmVhZAotG1swOzMybVst
LS0tLS0tLS0tXSAbW21HbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KLUJhckVudmly
b25tZW50OjpUZWFyRG93bigpIGNhbGxlZC4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWls
dXJlCi1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotRm9vRW52aXJvbm1lbnQ6
OlRlYXJEb3duKCkgY2FsbGVkLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZh
aWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLRtbMDszMm1bPT09PT09PT09PV0gG1ttNjAg
dGVzdHMgZnJvbSAyNSB0ZXN0IGNhc2VzIHJhbi4KLRtbMDszMm1bICBQQVNTRUQgIF0gG1ttMjEg
dGVzdHMuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbTM5IHRlc3RzLCBsaXN0ZWQgYmVsb3c6Ci0b
WzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJy
b3V0aW5lCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWls
dXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVy
ZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtb
bUxvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCi0bWzA7MzFtWyAg
RkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMKLRtbMDszMW1bICBGQUlM
RUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAotG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJyb3V0aW5lCi0bWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZVJlcGVhdGVkCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtb
bVNDT1BFRF9UUkFDRVRlc3QuV29ya3NDb25jdXJyZW50bHkKLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0
cnVjdG9yCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0
cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21O
b25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsCi0bWzA7MzFt
WyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWxUb28KLRtb
MDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3Qu
VGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RB
bmRTaG91bGRGYWlsCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVRFU1RfYmVmb3JlX1RFU1RfRl9p
bl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsCi0bWzA7MzFt
WyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJ
c05vTm9uZmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFs
RmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1cmVzCi0bWzA7MzFt
WyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJ
c09uZUZhdGFsRmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLRtb
MDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVy
ZUlzTm9GYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWls
dXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMKLRtbMDszMW1bICBGQUlM
RUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0
YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qu
RmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RG
YXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21UeXBlZFRlc3QvMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLRtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUsIHdoZXJlIFR5
cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQv
VHlwZWRUZXN0UC8xLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAotG1sw
OzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUK
LRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxG
YWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZh
dGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWls
dXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLRtbMDszMW1bICBGQUlM
RUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUK
LRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBl
Y3ROb25GYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU2NvcGVkRmFrZVRlc3RQ
YXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCi0KLTM5IEZB
SUxFRCBURVNUUwotG1swOzMzbSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNUCi0KLRtbbU5vdGU6
IEdvb2dsZSBUZXN0IGZpbHRlciA9IEZhdGFsRmFpbHVyZVRlc3QuKjpMb2dnaW5nVGVzdC4qCi1b
PT09PT09PT09PV0gUnVubmluZyA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2VzLgotWy0tLS0tLS0t
LS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KLVstLS0tLS0tLS0tXSAzIHRlc3Rz
IGZyb20gRmF0YWxGYWlsdXJlVGVzdAotWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0
YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxk
IGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IHgKLSAg
QWN0dWFsOiAyCi1FeHBlY3RlZDogMQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0
YWxGYWlsdXJlSW5TdWJyb3V0aW5lICg/IG1zKQotWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRl
c3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSB0
aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFs
dWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotWyAgRkFJTEVEICBdIEZhdGFsRmFp
bHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lICg/IG1zKQotWyBSVU4gICAg
ICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0
aW5nIGEgZmFpbHVyZSBvbiBmYWxzZSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1WYWx1ZSBvZjogZmFsc2UKLSAgQWN0dWFsOiBmYWxzZQotRXhwZWN0ZWQ6IHRydWUKLVsgIEZB
SUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZSAoPyBt
cykKLVstLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdCAoPyBtcyB0b3Rh
bCkKLQotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExvZ2dpbmdUZXN0Ci1bIFJVTiAgICAgIF0g
TG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLShleHBlY3Rpbmcg
MiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKQotaSA9PSAwCi1pID09IDEKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAz
IHZzIDkKLWkgPT0gMgotaSA9PSAzCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQot
RXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA2Ci1bICBGQUlMRUQgIF0gTG9n
Z2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMgKD8gbXMpCi1bLS0tLS0t
LS0tLV0gMSB0ZXN0IGZyb20gTG9nZ2luZ1Rlc3QgKD8gbXMgdG90YWwpCi0KLVstLS0tLS0tLS0t
XSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KLVs9PT09PT09PT09XSA0IHRlc3Rz
IGZyb20gMiB0ZXN0IGNhc2VzIHJhbi4gKD8gbXMgdG90YWwpCi1bICBQQVNTRUQgIF0gMCB0ZXN0
cy4KLVsgIEZBSUxFRCAgXSA0IHRlc3RzLCBsaXN0ZWQgYmVsb3c6Ci1bICBGQUlMRUQgIF0gRmF0
YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBGYXRh
bEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQotWyAgRkFJTEVEICBd
IEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi1bICBGQUlMRUQg
IF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLQotIDQgRkFJ
TEVEIFRFU1RTCi0gIFlPVSBIQVZFIDEgRElTQUJMRUQgVEVTVAotCi1Ob3RlOiBHb29nbGUgVGVz
dCBmaWx0ZXIgPSAqRElTQUJMRURfKgotWz09PT09PT09PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20g
MSB0ZXN0IGNhc2UuCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVw
LgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdAotWyBS
VU4gICAgICBdIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJs
ZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2FybmluZwotWyAgICAgICBPSyBdIERpc2FibGVkVGVzdHNX
YXJuaW5nVGVzdC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2Fy
bmluZwotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgotWz09
PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlIHJhbi4KLVsgIFBBU1NFRCAgXSAxIHRl
c3QuCi1Ob3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSBQYXNzaW5nVGVzdC4qCi1Ob3RlOiBUaGlz
IGlzIHRlc3Qgc2hhcmQgMSBvZiAyLgotWz09PT09PT09PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20g
MSB0ZXN0IGNhc2UuCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVw
LgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIFBhc3NpbmdUZXN0Ci1bIFJVTiAgICAgIF0gUGFz
c2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi1bICAgICAgIE9LIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rl
c3QyCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCi1bPT09
PT09PT09PV0gMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UgcmFuLgotWyAgUEFTU0VEICBdIDEgdGVz
dC4KLQotICBZT1UgSEFWRSAxIERJU0FCTEVEIFRFU1QKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fd2luLnR4dCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX3dpbi50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxM2MzYWFmYzMxZjVmMTAwNWM3NzQy
ODNlMDBiZGIwOWRlODFmNjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9n
b2xkZW5fd2luLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYwNSArMCwwIEBACi1UaGUgbm9uLXRl
c3QgcGFydCBvZiB0aGUgY29kZSBpcyBleHBlY3RlZCB0byBoYXZlIDIgZmFpbHVyZXMuCi0KLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IGZhbHNlCi0gIEFjdHVhbDog
ZmFsc2UKLUV4cGVjdGVkOiB0cnVlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZh
bHVlIG9mOiAzCi1FeHBlY3RlZDogMgotWz09PT09PT09PT1dIFJ1bm5pbmcgNjEgdGVzdHMgZnJv
bSAyNyB0ZXN0IGNhc2VzLgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNl
dC11cC4KLUZvb0Vudmlyb25tZW50OjpTZXRVcCgpIGNhbGxlZC4KLUJhckVudmlyb25tZW50OjpT
ZXRVcCgpIGNhbGxlZC4KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBBRGVhdGhUZXN0Ci1bIFJV
TiAgICAgIF0gQURlYXRoVGVzdC5TaG91bGRSdW5GaXJzdAotWyAgICAgICBPSyBdIEFEZWF0aFRl
c3QuU2hvdWxkUnVuRmlyc3QKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBBVHlwZWREZWF0aFRl
c3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci1bIFJVTiAgICAgIF0gQVR5cGVkRGVhdGhUZXN0
LzAuU2hvdWxkUnVuRmlyc3QKLVsgICAgICAgT0sgXSBBVHlwZWREZWF0aFRlc3QvMC5TaG91bGRS
dW5GaXJzdAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIEFUeXBlZERlYXRoVGVzdC8xLCB3aGVy
ZSBUeXBlUGFyYW0gPSBkb3VibGUKLVsgUlVOICAgICAgXSBBVHlwZWREZWF0aFRlc3QvMS5TaG91
bGRSdW5GaXJzdAotWyAgICAgICBPSyBdIEFUeXBlZERlYXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0
Ci1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8wLCB3aGVy
ZSBUeXBlUGFyYW0gPSBpbnQKLVsgUlVOICAgICAgXSBNeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAu
U2hvdWxkUnVuRmlyc3QKLVsgICAgICAgT0sgXSBNeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAuU2hv
dWxkUnVuRmlyc3QKLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBNeS9BVHlwZVBhcmFtRGVhdGhU
ZXN0LzEsIHdoZXJlIFR5cGVQYXJhbSA9IGRvdWJsZQotWyBSVU4gICAgICBdIE15L0FUeXBlUGFy
YW1EZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAotWyAgICAgICBPSyBdIE15L0FUeXBlUGFyYW1E
ZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBQYXNz
aW5nVGVzdAotWyBSVU4gICAgICBdIFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MQotWyAgICAgICBP
SyBdIFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MQotWyBSVU4gICAgICBdIFBhc3NpbmdUZXN0LlBh
c3NpbmdUZXN0MgotWyAgICAgICBPSyBdIFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgotWy0tLS0t
LS0tLS1dIDMgdGVzdHMgZnJvbSBGYXRhbEZhaWx1cmVUZXN0Ci1bIFJVTiAgICAgIF0gRmF0YWxG
YWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJl
IHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFs
dWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotWyAgRkFJTEVEICBdIEZhdGFsRmFp
bHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi1bIFJVTiAgICAgIF0gRmF0YWxGYWls
dXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWls
dXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjog
VmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotWyAgRkFJTEVEICBdIEZhdGFs
RmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi1bIFJVTiAgICAgIF0g
RmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLShleHBlY3Rpbmcg
YSBmYWlsdXJlIG9uIGZhbHNlKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1
ZSBvZjogZmFsc2UKLSAgQWN0dWFsOiBmYWxzZQotRXhwZWN0ZWQ6IHRydWUKLVsgIEZBSUxFRCAg
XSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotWy0tLS0tLS0t
LS1dIDEgdGVzdCBmcm9tIExvZ2dpbmdUZXN0Ci1bIFJVTiAgICAgIF0gTG9nZ2luZ1Rlc3QuSW50
ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLShleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAo
MykgPj0gKGFbaV0pKQotaSA9PSAwCi1pID09IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBl
cnJvcjogRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA5Ci1pID09IDIKLWkg
PT0gMwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBFeHBlY3RlZDogKDMpID49IChh
W2ldKSwgYWN0dWFsOiAzIHZzIDYKLVsgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZp
bmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotWy0tLS0tLS0tLS1dIDUgdGVzdHMgZnJvbSBTQ09QRURf
VFJBQ0VUZXN0Ci1bIFJVTiAgICAgIF0gU0NPUEVEX1RSQUNFVGVzdC5PYmV5c1Njb3BlcwotKGV4
cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAot
VGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkbid0IGhhdmUgYSB0cmFjZS4KLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhw
ZWN0ZWQsIGFuZCBzaG91bGQgaGF2ZSBhIHRyYWNlLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogRXhwZWN0ZWQgdHJhY2UKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBlcnJvcjogRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGRu
J3QgaGF2ZSBhIHRyYWNlLgotWyAgRkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuT2JleXNTY29w
ZXMKLVsgUlVOICAgICAgXSBTQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCi0oZXhwZWN0ZWQg
dG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IG4KLSAg
QWN0dWFsOiAxCi1FeHBlY3RlZDogMgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogaSA9IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUg
b2Y6IG4KLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogaSA9IDIKLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0
LldvcmtzSW5Mb29wCi1bIFJVTiAgICAgIF0gU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91
dGluZQotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6
IFZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMQotRXhwZWN0ZWQ6IDIKLUdvb2dsZSBUZXN0IHRyYWNl
OgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4gPSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogZXJyb3I6IFZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMgotRXhwZWN0ZWQ6IDEKLUdvb2dsZSBU
ZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4gPSAyCi1bICBGQUlMRUQgIF0g
U0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGluZQotWyBSVU4gICAgICBdIFNDT1BFRF9U
UkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogbgotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1H
b29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBuID0gMgotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IAotWyAgRkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVO
ZXN0ZWQKLVsgUlVOICAgICAgXSBTQ09QRURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKLShleHBl
Y3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLVRo
aXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEu
Ci1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBBCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVk
LCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSBhbmQgQi4KLUdvb2dsZSBUZXN0IHRy
YWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEIKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBBCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotVGhpcyBmYWlsdXJl
IGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEMu
Ci1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBDCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEEKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQs
IGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQgRC4KLUdvb2dsZSBUZXN0
IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEQKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBCCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQQotWyAgRkFJTEVEICBdIFNDT1BFRF9U
UkFDRVRlc3QuQ2FuQmVSZXBlYXRlZAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIE5vbkZhdGFs
RmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdAotWyBSVU4gICAgICBdIE5vbkZhdGFsRmFp
bHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotKGV4cGVj
dGluZyA1IGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQK
LUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IuCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4g
U2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3Rl
ZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBib2R5LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIFRlYXJEb3duLgotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzUsIGlu
IHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi1bICBGQUlMRUQgIF0gTm9uRmF0YWxGYWlsdXJlSW5G
aXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi1bLS0tLS0tLS0tLV0g
MSB0ZXN0IGZyb20gRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0Ci1bIFJVTiAg
ICAgIF0gRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0
cnVjdG9yCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
ZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBj
J3Rvci4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBm
YWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIEZhdGFs
RmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotWy0t
LS0tLS0tLS1dIDEgdGVzdCBmcm9tIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0Ci1bIFJVTiAg
ICAgIF0gTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKLShleHBlY3Rp
bmcgNCBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1F
eHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZ1bmN0aW9u
LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1
cmUgIzMsIGluIFRlYXJEb3duKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZh
aWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLVsg
IEZBSUxFRCAgXSBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotWy0t
LS0tLS0tLS1dIDEgdGVzdCBmcm9tIEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0Ci1bIFJVTiAgICAg
IF0gRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVyZUluU2V0VXAKLShleHBlY3RpbmcgMyBm
YWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3Rl
ZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9y
OiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRlYXJEb3duKCkuCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhl
IHRlc3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVJblNldFVwVGVz
dC5GYWlsdXJlSW5TZXRVcAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIEV4Y2VwdGlvbkluRml4
dHVyZUN0b3JUZXN0Ci1bIFJVTiAgICAgIF0gRXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3QuRXhj
ZXB0aW9uSW5GaXh0dXJlQ3RvcgotKGV4cGVjdGluZyBhIGZhaWx1cmUgb24gdGhyb3duIGV4Y2Vw
dGlvbiBpbiB0aGUgdGVzdCBmaXh0dXJlJ3MgY29uc3RydWN0b3IpCi11bmtub3duIGZpbGU6IGVy
cm9yOiBFeGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAweGMwMDAwMDA1IGluIHRoZSB0ZXN0IGZp
eHR1cmUncyBjb25zdHJ1Y3Rvci4KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBFeGNlcHRpb25J
blNldFVwVGVzdAotWyBSVU4gICAgICBdIEV4Y2VwdGlvbkluU2V0VXBUZXN0LkV4Y2VwdGlvbklu
U2V0VXAKLShleHBlY3RpbmcgMyBmYWlsdXJlcykKLXVua25vd24gZmlsZTogZXJyb3I6IEV4Y2Vw
dGlvbiB0aHJvd24gd2l0aCBjb2RlIDB4YzAwMDAwMDUgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFy
RG93bigpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVk
IGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi1bICBGQUlMRUQgIF0gRXhj
ZXB0aW9uSW5TZXRVcFRlc3QuRXhjZXB0aW9uSW5TZXRVcAotWy0tLS0tLS0tLS1dIDIgdGVzdHMg
ZnJvbSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QKLVsgUlVOICAgICAgXSBFeGNlcHRpb25J
blRlc3RGdW5jdGlvblRlc3QuU0VICi0oZXhwZWN0aW5nIDMgZmFpbHVyZXMpCi11bmtub3duIGZp
bGU6IGVycm9yOiBFeGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAweGMwMDAwMDA1IGluIHRoZSB0
ZXN0IGJvZHkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0
ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBl
cnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQn
dG9yLgotWyAgRkFJTEVEICBdIEV4Y2VwdGlvbkluVGVzdEZ1bmN0aW9uVGVzdC5TRUgKLVsgUlVO
ICAgICAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QuQ3BwRXhjZXB0aW9uCi11bmtub3du
IGZpbGU6IGVycm9yOiBFeGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAweGUwNmQ3MzYzIGluIHRo
ZSB0ZXN0IGJvZHkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhw
ZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJl
IGQndG9yLgotWyAgRkFJTEVEICBdIEV4Y2VwdGlvbkluVGVzdEZ1bmN0aW9uVGVzdC5DcHBFeGNl
cHRpb24KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBFeGNlcHRpb25JblRlYXJEb3duVGVzdAot
WyBSVU4gICAgICBdIEV4Y2VwdGlvbkluVGVhckRvd25UZXN0LkV4Y2VwdGlvbkluVGVhckRvd24K
LShleHBlY3RpbmcgMiBmYWlsdXJlcykKLXVua25vd24gZmlsZTogZXJyb3I6IEV4Y2VwdGlvbiB0
aHJvd24gd2l0aCBjb2RlIDB4ZTA2ZDczNjMgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVz
dCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIEV4Y2VwdGlvbkluVGVhckRvd25UZXN0LkV4
Y2VwdGlvbkluVGVhckRvd24KLVstLS0tLS0tLS0tXSA0IHRlc3RzIGZyb20gTWl4ZWRVcFRlc3RD
YXNlVGVzdAotWyBSVU4gICAgICBdIE1peGVkVXBUZXN0Q2FzZVRlc3QuRmlyc3RUZXN0RnJvbU5h
bWVzcGFjZUZvbwotWyAgICAgICBPSyBdIE1peGVkVXBUZXN0Q2FzZVRlc3QuRmlyc3RUZXN0RnJv
bU5hbWVzcGFjZUZvbwotWyBSVU4gICAgICBdIE1peGVkVXBUZXN0Q2FzZVRlc3QuU2Vjb25kVGVz
dEZyb21OYW1lc3BhY2VGb28KLVsgICAgICAgT0sgXSBNaXhlZFVwVGVzdENhc2VUZXN0LlNlY29u
ZFRlc3RGcm9tTmFtZXNwYWNlRm9vCi1bIFJVTiAgICAgIF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5U
aGlzU2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogZXJyb3I6IEZhaWxlZAotQWxsIHRlc3RzIGluIHRo
ZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAg
SG93ZXZlciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVRlc3QsCi15b3UgZGVmaW5lZCB0
ZXN0IEZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28gYW5kIHRlc3QgVGhpc1Nob3VsZEZhaWwKLXVz
aW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4g
aWYKLXRoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFu
c2xhdGlvbgotdW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFi
bHkgcmVuYW1lIG9uZQotb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZl
cmVudCB0ZXN0IGNhc2VzLgotWyAgRkFJTEVEICBdIE1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1No
b3VsZEZhaWwKLVsgUlVOICAgICAgXSBNaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWls
VG9vCi1ndGVzdC5jYzojOiBlcnJvcjogRmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVz
dCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3MuICBIb3dldmVyLCBp
biB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlVGVzdCwKLXlvdSBkZWZpbmVkIHRlc3QgRmlyc3RU
ZXN0RnJvbU5hbWVzcGFjZUZvbyBhbmQgdGVzdCBUaGlzU2hvdWxkRmFpbFRvbwotdXNpbmcgdHdv
IGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBlbiBpZgotdGhl
IHR3byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9u
Ci11bml0cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAgWW91IHNob3VsZCBwcm9iYWJseSByZW5h
bWUgb25lCi1vZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50IHRl
c3QgY2FzZXMuCi1bICBGQUlMRUQgIF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFp
bFRvbwotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRl
c3ROYW1lVGVzdAotWyBSVU4gICAgICBdIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVU
ZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCi1bICAgICAgIE9LIF0gTWl4
ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFt
ZVNob3VsZEZhaWwKLVsgUlVOICAgICAgXSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1l
VGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogZXJy
b3I6IEZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUg
c2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAgSG93ZXZlciwgaW4gdGVzdCBjYXNlIE1peGVkVXBU
ZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAoteW91IGRlZmluZWQgdGVzdCBUaGVTZWNvbmRU
ZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbCBhbmQgdGVzdCBUaGVTZWNvbmRUZXN0V2l0aFRoaXNO
YW1lU2hvdWxkRmFpbAotdXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4g
IFRoaXMgY2FuIGhhcHBlbiBpZgotdGhlIHR3byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVudCBu
YW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCi11bml0cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAg
WW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25lCi1vZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhl
IHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMuCi1bICBGQUlMRUQgIF0gTWl4ZWRVcFRl
c3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3Vs
ZEZhaWwKLVstLS0tLS0tLS0tXSAyIHRlc3RzIGZyb20gVEVTVF9GX2JlZm9yZV9URVNUX2luX3Nh
bWVfdGVzdF9jYXNlCi1bIFJVTiAgICAgIF0gVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVz
dF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRgotWyAgICAgICBPSyBdIFRFU1RfRl9iZWZvcmVfVEVT
VF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0YKLVsgUlVOICAgICAgXSBURVNU
X0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFuZFNob3Vs
ZEZhaWwKLWd0ZXN0LmNjOiM6IGVycm9yOiBGYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0
ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcywgc28gbWl4aW5n
IFRFU1RfRiBhbmQgVEVTVCBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgaXMKLWlsbGVnYWwuICBJbiB0
ZXN0IGNhc2UgVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLAotdGVzdCBEZWZp
bmVkVXNpbmdURVNUX0YgaXMgZGVmaW5lZCB1c2luZyBURVNUX0YgYnV0Ci10ZXN0IERlZmluZWRV
c2luZ1RFU1RBbmRTaG91bGRGYWlsIGlzIGRlZmluZWQgdXNpbmcgVEVTVC4gIFlvdSBwcm9iYWJs
eQotd2FudCB0byBjaGFuZ2UgdGhlIFRFU1QgdG8gVEVTVF9GIG9yIG1vdmUgaXQgdG8gYW5vdGhl
ciB0ZXN0Ci1jYXNlLgotWyAgRkFJTEVEICBdIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rl
c3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxkRmFpbAotWy0tLS0tLS0tLS1dIDIgdGVz
dHMgZnJvbSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UKLVsgUlVOICAgICAg
XSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVAot
WyAgICAgICBPSyBdIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVk
VXNpbmdURVNUCi1bIFJVTiAgICAgIF0gVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9j
YXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwKLWd0ZXN0LmNjOiM6IGVycm9yOiBG
YWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUg
dGVzdCBmaXh0dXJlCi1jbGFzcywgc28gbWl4aW5nIFRFU1RfRiBhbmQgVEVTVCBpbiB0aGUgc2Ft
ZSB0ZXN0IGNhc2UgaXMKLWlsbGVnYWwuICBJbiB0ZXN0IGNhc2UgVEVTVF9iZWZvcmVfVEVTVF9G
X2luX3NhbWVfdGVzdF9jYXNlLAotdGVzdCBEZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWls
IGlzIGRlZmluZWQgdXNpbmcgVEVTVF9GIGJ1dAotdGVzdCBEZWZpbmVkVXNpbmdURVNUIGlzIGRl
ZmluZWQgdXNpbmcgVEVTVC4gIFlvdSBwcm9iYWJseQotd2FudCB0byBjaGFuZ2UgdGhlIFRFU1Qg
dG8gVEVTVF9GIG9yIG1vdmUgaXQgdG8gYW5vdGhlciB0ZXN0Ci1jYXNlLgotWyAgRkFJTEVEICBd
IFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZB
bmRTaG91bGRGYWlsCi1bLS0tLS0tLS0tLV0gOCB0ZXN0cyBmcm9tIEV4cGVjdE5vbmZhdGFsRmFp
bHVyZVRlc3QKLVsgUlVOICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVy
ZW5jZUdsb2JhbFZhcmlhYmxlcwotWyAgICAgICBPSyBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRl
c3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCi1bIFJVTiAgICAgIF0gRXhwZWN0Tm9uZmF0
YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFZhcmlhYmxlcwotWyAgICAgICBPSyBdIEV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxWYXJpYWJsZXMKLVsgUlVO
ICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVO
b25mYXRhbEZhaWx1cmUKLVsgICAgICAgT0sgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LlN1
Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKLVsgUlVOICAgICAgXSBFeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb05vbmZhdGFsRmFpbHVyZQotKGV4
cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZh
dGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKLVsgUlVO
ICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvTm9u
ZmF0YWxGYWlsdXJlcwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjog
RXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAyIGZhaWx1cmVzCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVk
IG5vbi1mYXRhbCBmYWlsdXJlIDEuCi0KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0
YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMi4KLQotWyAg
RkFJTEVEICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29O
b25mYXRhbEZhaWx1cmVzCi1bIFJVTiAgICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5G
YWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0
ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0
ZWQgZmF0YWwgZmFpbHVyZS4KLQotWyAgRkFJTEVEICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRl
c3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotWyBSVU4gICAgICBdIEV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotKGV4cGVjdGluZyBh
IGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1
cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWls
dXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi1bIFJVTiAgICAgIF0gRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLShleHBlY3RpbmcgYSBm
YWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJl
Ci0gIEFjdHVhbDogMCBmYWlsdXJlcwotWyAgRkFJTEVEICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVy
ZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi1bLS0tLS0tLS0tLV0gOCB0ZXN0cyBmcm9t
IEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QKLVsgUlVOICAgICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotWyAgICAgICBPSyBdIEV4cGVjdEZhdGFs
RmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCi1bIFJVTiAgICAgIF0gRXhw
ZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFN0YXRpY1ZhcmlhYmxlcwotWyAg
ICAgICBPSyBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxTdGF0aWNW
YXJpYWJsZXMKLVsgUlVOICAgICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hl
blRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLVsgICAgICAgT0sgXSBFeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLVsgUlVOICAgICAgXSBFeHBl
Y3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZQotKGV4cGVj
dGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFp
bHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1
cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZQotWyBSVU4gICAgICBdIEV4cGVj
dEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzCi0oZXhw
ZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBm
YWlsdXJlCi0gIEFjdHVhbDogMiBmYWlsdXJlcwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZh
dGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBm
YWlsdXJlLgotCi1bICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5U
aGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMKLVsgUlVOICAgICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgYSBmYWls
dXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0
dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVk
Ci1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQotWyAgRkFJTEVEICBdIEV4cGVjdEZhdGFs
RmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotWyBSVU4gICAg
ICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotKGV4
cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwg
ZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLVsgUlVOICAgICAgXSBFeHBlY3RG
YXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotKGV4cGVjdGluZyBhIGZh
aWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBB
Y3R1YWw6IDAgZmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZh
aWxzV2hlblN0YXRlbWVudFRocm93cwotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBUeXBlZFRl
c3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci1bIFJVTiAgICAgIF0gVHlwZWRUZXN0LzAuU3Vj
Y2VzcwotWyAgICAgICBPSyBdIFR5cGVkVGVzdC8wLlN1Y2Nlc3MKLVsgUlVOICAgICAgXSBUeXBl
ZFRlc3QvMC5GYWlsdXJlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9m
OiBUeXBlUGFyYW0oKQotICBBY3R1YWw6IDAKLUV4cGVjdGVkOiAxCi1FeHBlY3RlZCBmYWlsdXJl
Ci1bICBGQUlMRUQgIF0gVHlwZWRUZXN0LzAuRmFpbHVyZQotWy0tLS0tLS0tLS1dIDIgdGVzdHMg
ZnJvbSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNo
YXIKLVsgUlVOICAgICAgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAuU3VjY2VzcwotWyAgICAgICBP
SyBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMC5TdWNjZXNzCi1bIFJVTiAgICAgIF0gVW5zaWduZWQv
VHlwZWRUZXN0UC8wLkZhaWx1cmUKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFs
dWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogXDAKLUV4cGVjdGVkOiAxVQotV2hpY2ggaXM6
IDEKLUV4cGVjdGVkIGZhaWx1cmUKLVsgIEZBSUxFRCAgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAu
RmFpbHVyZQotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBVbnNpZ25lZC9UeXBlZFRlc3RQLzEs
IHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAotWyBSVU4gICAgICBdIFVuc2lnbmVkL1R5
cGVkVGVzdFAvMS5TdWNjZXNzCi1bICAgICAgIE9LIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1
Y2Nlc3MKLVsgUlVOICAgICAgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZQotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogVHlwZVBhcmFtKCkKLSAgQWN0dWFs
OiAwCi1FeHBlY3RlZDogMVUKLVdoaWNoIGlzOiAxCi1FeHBlY3RlZCBmYWlsdXJlCi1bICBGQUlM
RUQgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUKLVstLS0tLS0tLS0tXSA0IHRlc3Rz
IGZyb20gRXhwZWN0RmFpbHVyZVRlc3QKLVsgUlVOICAgICAgXSBFeHBlY3RGYWlsdXJlVGVzdC5F
eHBlY3RGYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJy
b3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IFN1Y2Nlc3M6Ci1TdWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1n
dGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVj
dGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNj
OiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3Ro
ZXIgZmF0YWwgZmFpbHVyZSBleHBlY3RlZC4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgot
Ci1bICBGQUlMRUQgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCi1bIFJV
TiAgICAgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0oZXhwZWN0
aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwg
ZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogU3VjY2VzczoKLVN1
Y2NlZWRlZAotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBl
Y3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQot
KGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9u
LWZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBub24tZmF0YWwgZmFpbHVyZS4i
Ci0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToK
LUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLVsgIEZBSUxFRCAgXSBFeHBl
Y3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLVsgUlVOICAgICAgXSBFeHBlY3RG
YWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLShleHBlY3RpbmcgMSBm
YWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAg
QWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1TdWNjZWVkZWQKLQot
KGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0
YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFs
IGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0
aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWls
dXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBlY3RlZC4iCi0gIEFj
dHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1F
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQgIF0gRXhwZWN0RmFpbHVyZVRlc3Qu
RXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi1bIFJVTiAgICAgIF0gRXhwZWN0RmFpbHVy
ZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0oZXhwZWN0aW5nIDEgZmFp
bHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQot
ICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2NlZWRlZAot
Ci0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBu
b24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0
YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotKGV4cGVjdGlu
ZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZh
aWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBub24tZmF0YWwgZmFpbHVyZS4iCi0gIEFjdHVh
bDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAot
RXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLVsgIEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJl
VGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLVstLS0tLS0tLS0tXSBHbG9i
YWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KLUJhckVudmlyb25tZW50OjpUZWFyRG93bigp
IGNhbGxlZC4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3Rl
ZCBub24tZmF0YWwgZmFpbHVyZS4KLUZvb0Vudmlyb25tZW50OjpUZWFyRG93bigpIGNhbGxlZC4K
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBm
YWlsdXJlLgotWz09PT09PT09PT1dIDYxIHRlc3RzIGZyb20gMjcgdGVzdCBjYXNlcyByYW4uCi1b
ICBQQVNTRUQgIF0gMjEgdGVzdHMuCi1bICBGQUlMRUQgIF0gNDAgdGVzdHMsIGxpc3RlZCBiZWxv
dzoKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGlu
ZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJy
b3V0aW5lCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1
YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5k
QXNzZXJ0aW9ucwotWyAgRkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMKLVsg
IEZBSUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCi1bICBGQUlMRUQgIF0gU0NP
UEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGluZQotWyAgRkFJTEVEICBdIFNDT1BFRF9UUkFD
RVRlc3QuQ2FuQmVOZXN0ZWQKLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0LkNhbkJlUmVw
ZWF0ZWQKLVsgIEZBSUxFRCAgXSBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRl
c3QuRmFpbHVyZUluQ29uc3RydWN0b3IKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVJbkZpeHR1
cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKLVsgIEZBSUxFRCAgXSBOb25G
YXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotWyAgRkFJTEVEICBdIEZhdGFs
RmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi1bICBGQUlMRUQgIF0gRXhjZXB0aW9u
SW5GaXh0dXJlQ3RvclRlc3QuRXhjZXB0aW9uSW5GaXh0dXJlQ3RvcgotWyAgRkFJTEVEICBdIEV4
Y2VwdGlvbkluU2V0VXBUZXN0LkV4Y2VwdGlvbkluU2V0VXAKLVsgIEZBSUxFRCAgXSBFeGNlcHRp
b25JblRlc3RGdW5jdGlvblRlc3QuU0VICi1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5UZXN0RnVu
Y3Rpb25UZXN0LkNwcEV4Y2VwdGlvbgotWyAgRkFJTEVEICBdIEV4Y2VwdGlvbkluVGVhckRvd25U
ZXN0LkV4Y2VwdGlvbkluVGVhckRvd24KLVsgIEZBSUxFRCAgXSBNaXhlZFVwVGVzdENhc2VUZXN0
LlRoaXNTaG91bGRGYWlsCi1bICBGQUlMRUQgIF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hv
dWxkRmFpbFRvbwotWyAgRkFJTEVEICBdIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVU
ZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCi1bICBGQUlMRUQgIF0gVEVT
VF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RBbmRTaG91
bGRGYWlsCi1bICBGQUlMRUQgIF0gVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNl
LkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwKLVsgIEZBSUxFRCAgXSBFeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb05vbmZhdGFsRmFpbHVyZQotWyAgRkFJ
TEVEICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25m
YXRhbEZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWls
c1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi1bICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxG
YWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi1bICBGQUlMRUQgIF0gRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLVsgIEZBSUxFRCAg
XSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZQot
WyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29G
YXRhbEZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1do
ZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi1bICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxGYWls
dXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi1bICBGQUlMRUQgIF0gRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLVsgIEZBSUxFRCAgXSBUeXBl
ZFRlc3QvMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLVsgIEZBSUxFRCAgXSBVbnNp
Z25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgY2hh
cgotWyAgRkFJTEVEICBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlLCB3aGVyZSBUeXBl
UGFyYW0gPSB1bnNpZ25lZCBpbnQKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBl
Y3RGYXRhbEZhaWx1cmUKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25G
YXRhbEZhaWx1cmUKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZh
aWx1cmVPbkFsbFRocmVhZHMKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RO
b25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLQotNDAgRkFJTEVEIFRFU1RTCi0gIFlPVSBIQVZF
IDEgRElTQUJMRUQgVEVTVAotCi1Ob3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSBGYXRhbEZhaWx1
cmVUZXN0Lio6TG9nZ2luZ1Rlc3QuKgotWz09PT09PT09PT1dIFJ1bm5pbmcgNCB0ZXN0cyBmcm9t
IDIgdGVzdCBjYXNlcy4KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQt
dXAuCi1bLS0tLS0tLS0tLV0gMyB0ZXN0cyBmcm9tIEZhdGFsRmFpbHVyZVRlc3QKLVsgUlVOICAg
ICAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotKGV4cGVjdGlu
ZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IGVycm9yOiBWYWx1ZSBvZjogeAotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1bICBGQUlMRUQg
IF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUgKD8gbXMpCi1bIFJV
TiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUK
LShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQot
WyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0
aW5lICg/IG1zKQotWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJl
SW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiBmYWxzZSkKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IGZhbHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4
cGVjdGVkOiB0cnVlCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1
cmVJblN1YnJvdXRpbmUgKD8gbXMpCi1bLS0tLS0tLS0tLV0gMyB0ZXN0cyBmcm9tIEZhdGFsRmFp
bHVyZVRlc3QgKD8gbXMgdG90YWwpCi0KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBMb2dnaW5n
VGVzdAotWyBSVU4gICAgICBdIExvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3Nl
cnRpb25zCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24gKDMpID49IChhW2ldKSkKLWkgPT0gMAot
aSA9PSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAoMykgPj0g
KGFbaV0pLCBhY3R1YWw6IDMgdnMgOQotaSA9PSAyCi1pID09IDMKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA2Ci1b
ICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMg
KD8gbXMpCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTG9nZ2luZ1Rlc3QgKD8gbXMgdG90YWwp
Ci0KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KLVs9PT09
PT09PT09XSA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2VzIHJhbi4gKD8gbXMgdG90YWwpCi1bICBQ
QVNTRUQgIF0gMCB0ZXN0cy4KLVsgIEZBSUxFRCAgXSA0IHRlc3RzLCBsaXN0ZWQgYmVsb3c6Ci1b
ICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLVsg
IEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGlu
ZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0
aW5lCi1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2Vy
dGlvbnMKLQotIDQgRkFJTEVEIFRFU1RTCi0gIFlPVSBIQVZFIDEgRElTQUJMRUQgVEVTVAotCi1O
b3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSAqRElTQUJMRURfKgotWz09PT09PT09PT1dIFJ1bm5p
bmcgMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52
aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIERpc2FibGVkVGVzdHNX
YXJuaW5nVGVzdAotWyBSVU4gICAgICBdIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdC5ESVNBQkxF
RF9BbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2FybmluZwotWyAgICAgICBPSyBd
IERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJsZWRUZXN0c0Zs
YWdTdXBwcmVzc2VzV2FybmluZwotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50
IHRlYXItZG93bgotWz09PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlIHJhbi4KLVsg
IFBBU1NFRCAgXSAxIHRlc3QuCi1Ob3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSBQYXNzaW5nVGVz
dC4qCi1Ob3RlOiBUaGlzIGlzIHRlc3Qgc2hhcmQgMSBvZiAyLgotWz09PT09PT09PT1dIFJ1bm5p
bmcgMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52
aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIFBhc3NpbmdUZXN0Ci1b
IFJVTiAgICAgIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi1bICAgICAgIE9LIF0gUGFzc2lu
Z1Rlc3QuUGFzc2luZ1Rlc3QyCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQg
dGVhci1kb3duCi1bPT09PT09PT09PV0gMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UgcmFuLgotWyAg
UEFTU0VEICBdIDEgdGVzdC4KLQotICBZT1UgSEFWRSAxIERJU0FCTEVEIFRFU1QKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcmVkX2ltcGxfdW5pdHRl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZWRfaW1wbF91bml0
dGVzdC5jYwppbmRleCBlN2VlNTRiNTZkODZiOWVhNTRiNzE2MTI1ODY5YWEyODdkMTI2YmU3Li5i
NDY2YzE1MGFlZGM0M2ZkYjEwMzczYjdhODAyY2NiZTc3NTc5MGY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZWRfaW1wbF91bml0dGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZWRfaW1wbF91bml0dGVzdC5j
YwpAQCAtMjcsNyArMjcsNyBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0v
LyBUaGlzIGZpbGUgaXMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQgb24gMTAvMDIvMjAwOCBieSBj
b21tYW5kCisvLyBUaGlzIGZpbGUgaXMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQgb24gMDEvMDIv
MjAxOCBieSBjb21tYW5kCiAvLyAnZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weSA1Jy4gIERPIE5PVCBF
RElUIEJZIEhBTkQhCiAKIC8vIFJlZ3Jlc3Npb24gdGVzdCBmb3IgZ3Rlc3RfcHJlZF9pbXBsLmgK
QEAgLTQ5LDggKzQ5LDggQEAKIAogI2luY2x1ZGUgPGlvc3RyZWFtPgogCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGkuaD4KKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgogCiAvLyBBIHVzZXItZGVm
aW5lZCBkYXRhIHR5cGUuCiBzdHJ1Y3QgQm9vbCB7CkBAIC0xMDMsMTEgKzEwMywxMCBAQCB0ZXN0
aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1bmN0aW9uMShjb25zdCBjaGFyKiBlMSwK
ICAgaWYgKFByZWRGdW5jdGlvbjEodjEpKQogICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25T
dWNjZXNzKCk7CiAKLSAgdGVzdGluZzo6TWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBlMQorICByZXR1
cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBlMQogICAgICAgPDwgIiBp
cyBleHBlY3RlZCB0byBiZSBwb3NpdGl2ZSwgYnV0IGV2YWx1YXRlcyB0byAiCiAgICAgICA8PCB2
MSA8PCAiLiI7Ci0gIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAK
IC8vIEEgdW5hcnkgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdG9yLgpAQCAtNDk0LDExICs0OTMs
MTAgQEAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRGb3JtYXRGdW5jdGlvbjIoY29uc3Qg
Y2hhciogZTEsCiAgIGlmIChQcmVkRnVuY3Rpb24yKHYxLCB2MikpCiAgICAgcmV0dXJuIHRlc3Rp
bmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5nOjpNZXNzYWdlIG1zZzsKLSAgbXNn
IDw8IGUxIDw8ICIgKyAiIDw8IGUyCisgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJl
KCkKKyAgICAgIDw8IGUxIDw8ICIgKyAiIDw8IGUyCiAgICAgICA8PCAiIGlzIGV4cGVjdGVkIHRv
IGJlIHBvc2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKICAgICAgIDw8IHYxICsgdjIgPDwgIi4i
OwotICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogCiAvLyBBIGJp
bmFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3IuCkBAIC05MjcsMTEgKzkyNSwxMCBAQCB0
ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1bmN0aW9uMyhjb25zdCBjaGFyKiBl
MSwKICAgaWYgKFByZWRGdW5jdGlvbjModjEsIHYyLCB2MykpCiAgICAgcmV0dXJuIHRlc3Rpbmc6
OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5nOjpNZXNzYWdlIG1zZzsKLSAgbXNnIDw8
IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUzCisgIHJldHVybiB0ZXN0aW5nOjpBc3Nl
cnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUz
CiAgICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlLCBidXQgZXZhbHVhdGVzIHRv
ICIKICAgICAgIDw8IHYxICsgdjIgKyB2MyA8PCAiLiI7Ci0gIHJldHVybiB0ZXN0aW5nOjpBc3Nl
cnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIC8vIEEgdGVybmFyeSBwcmVkaWNhdGUtZm9ybWF0dGVy
IGZ1bmN0b3IuCkBAIC0xNDAyLDExICsxMzk5LDEwIEBAIHRlc3Rpbmc6OkFzc2VydGlvblJlc3Vs
dCBQcmVkRm9ybWF0RnVuY3Rpb240KGNvbnN0IGNoYXIqIGUxLAogICBpZiAoUHJlZEZ1bmN0aW9u
NCh2MSwgdjIsIHYzLCB2NCkpCiAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3Mo
KTsKIAotICB0ZXN0aW5nOjpNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGUxIDw8ICIgKyAiIDw8IGUy
IDw8ICIgKyAiIDw8IGUzIDw8ICIgKyAiIDw8IGU0CisgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRp
b25GYWlsdXJlKCkKKyAgICAgIDw8IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUzIDw8
ICIgKyAiIDw8IGU0CiAgICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlLCBidXQg
ZXZhbHVhdGVzIHRvICIKICAgICAgIDw8IHYxICsgdjIgKyB2MyArIHY0IDw8ICIuIjsKLSAgcmV0
dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNnKTsKIH0KIAogLy8gQSA0LWFyeSBwcmVk
aWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3IuCkBAIC0xOTE5LDExICsxOTE1LDEwIEBAIHRlc3Rpbmc6
OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rpb241KGNvbnN0IGNoYXIqIGUxLAogICBp
ZiAoUHJlZEZ1bmN0aW9uNSh2MSwgdjIsIHYzLCB2NCwgdjUpKQogICAgIHJldHVybiB0ZXN0aW5n
OjpBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgdGVzdGluZzo6TWVzc2FnZSBtc2c7Ci0gIG1zZyA8
PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBlMyA8PCAiICsgIiA8PCBlNCA8PCAiICsg
IiA8PCBlNQorICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCBl
MSA8PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBlMyA8PCAiICsgIiA8PCBlNCA8PCAiICsgIiA8
PCBlNQogICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBiZSBwb3NpdGl2ZSwgYnV0IGV2YWx1YXRl
cyB0byAiCiAgICAgICA8PCB2MSArIHYyICsgdjMgKyB2NCArIHY1IDw8ICIuIjsKLSAgcmV0dXJu
IHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNnKTsKIH0KIAogLy8gQSA1LWFyeSBwcmVkaWNh
dGUtZm9ybWF0dGVyIGZ1bmN0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X3ByZW1hdHVyZV9leGl0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3ByZW1hdHVyZV9leGl0X3Rlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFlOTMw
NTZkOGI1NjJjNTlmZWJhODI3OGUyMGMyOWRmMTNlMTkxNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJlbWF0dXJlX2V4aXRfdGVzdC5jYwpA
QCAtMCwwICsxLDEyNiBAQAorLy8gQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCisvLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8g
bWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisvLworLy8gVGVzdHMgdGhhdCBHb29nbGUgVGVzdCBtYW5pcHVsYXRlcyB0aGUgcHJl
bWF0dXJlLWV4aXQtZGV0ZWN0aW9uCisvLyBmaWxlIGNvcnJlY3RseS4KKworI2luY2x1ZGUgPHN0
ZGlvLmg+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCit1c2luZyA6OnRlc3Rpbmc6Oklu
aXRHb29nbGVUZXN0OwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0OwordXNpbmcgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6cG9zaXg6OkdldEVudjsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4
OjpTdGF0OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OlN0YXRTdHJ1Y3Q7CisK
K25hbWVzcGFjZSB7CisKK2NsYXNzIFByZW1hdHVyZUV4aXRUZXN0IDogcHVibGljIFRlc3Qgewor
IHB1YmxpYzoKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgZ2l2ZW4gZmlsZSBleGlzdHMuCisg
IHN0YXRpYyBib29sIEZpbGVFeGlzdHMoY29uc3QgY2hhciogZmlsZXBhdGgpIHsKKyAgICBTdGF0
U3RydWN0IHN0YXQ7CisgICAgcmV0dXJuIFN0YXQoZmlsZXBhdGgsICZzdGF0KSA9PSAwOworICB9
CisKKyBwcm90ZWN0ZWQ6CisgIFByZW1hdHVyZUV4aXRUZXN0KCkgeworICAgIHByZW1hdHVyZV9l
eGl0X2ZpbGVfcGF0aF8gPSBHZXRFbnYoIlRFU1RfUFJFTUFUVVJFX0VYSVRfRklMRSIpOworCisg
ICAgLy8gTm9ybWFsaXplIE5VTEwgdG8gIiIgZm9yIGVhc2Ugb2YgaGFuZGxpbmcuCisgICAgaWYg
KHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8gPT0gTlVMTCkgeworICAgICAgcHJlbWF0dXJlX2V4
aXRfZmlsZV9wYXRoXyA9ICIiOworICAgIH0KKyAgfQorCisgIC8vIFJldHVybnMgdHJ1ZSBpZmYg
dGhlIHByZW1hdHVyZS1leGl0IGZpbGUgZXhpc3RzLgorICBib29sIFByZW1hdHVyZUV4aXRGaWxl
RXhpc3RzKCkgY29uc3QgeworICAgIHJldHVybiBGaWxlRXhpc3RzKHByZW1hdHVyZV9leGl0X2Zp
bGVfcGF0aF8pOworICB9CisKKyAgY29uc3QgY2hhciogcHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRo
XzsKK307CisKK3R5cGVkZWYgUHJlbWF0dXJlRXhpdFRlc3QgUHJlbWF0dXJlRXhpdERlYXRoVGVz
dDsKKworLy8gVGVzdHMgdGhhdDoKKy8vICAgLSB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZSBleGlz
dHMgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgYQorLy8gICAgIGRlYXRoIHRlc3QgKEVYUEVDVF9E
RUFUSCopLCBhbmQKKy8vICAgLSBhIGRlYXRoIHRlc3QgZG9lc24ndCBpbnRlcmZlcmUgd2l0aCB0
aGUgbWFpbiB0ZXN0IHByb2Nlc3MncworLy8gICAgIGhhbmRsaW5nIG9mIHRoZSBwcmVtYXR1cmUt
ZXhpdCBmaWxlLgorVEVTVF9GKFByZW1hdHVyZUV4aXREZWF0aFRlc3QsIEZpbGVFeGlzdHNEdXJp
bmdFeGVjdXRpb25PZkRlYXRoVGVzdCkgeworICBpZiAoKnByZW1hdHVyZV9leGl0X2ZpbGVfcGF0
aF8gPT0gJ1wwJykgeworICAgIHJldHVybjsKKyAgfQorCisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQ
T1JURUQoeworICAgICAgLy8gSWYgdGhlIGZpbGUgZXhpc3RzLCBjcmFzaCB0aGUgcHJvY2VzcyBz
dWNoIHRoYXQgdGhlIG1haW4gdGVzdAorICAgICAgLy8gcHJvY2VzcyB3aWxsIGNhdGNoIHRoZSAo
ZXhwZWN0ZWQpIGNyYXNoIGFuZCByZXBvcnQgYSBzdWNjZXNzOworICAgICAgLy8gb3RoZXJ3aXNl
IGRvbid0IGNyYXNoLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBtYWluIHRlc3QgcHJvY2VzcworICAg
ICAgLy8gdG8gcmVwb3J0IHRoYXQgdGhlIGRlYXRoIHRlc3QgaGFzIGZhaWxlZC4KKyAgICAgIGlm
IChQcmVtYXR1cmVFeGl0RmlsZUV4aXN0cygpKSB7CisgICAgICAgIGV4aXQoMSk7CisgICAgICB9
CisgICAgfSwgIiIpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxl
IGV4aXN0cyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiBhCisvLyBub3JtYWwgKG5vbi1kZWF0aCkg
dGVzdC4KK1RFU1RfRihQcmVtYXR1cmVFeGl0VGVzdCwgUHJlbWF0dXJlRXhpdEZpbGVFeGlzdHNE
dXJpbmdUZXN0RXhlY3V0aW9uKSB7CisgIGlmICgqcHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXyA9
PSAnXDAnKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgRVhQRUNUX1RSVUUoUHJlbWF0dXJlRXhp
dEZpbGVFeGlzdHMoKSkKKyAgICAgIDw8ICIgZmlsZSAiIDw8IHByZW1hdHVyZV9leGl0X2ZpbGVf
cGF0aF8KKyAgICAgIDw8ICIgc2hvdWxkIGV4aXN0IGR1cmluZyB0ZXN0IGV4ZWN1dGlvbiwgYnV0
IGRvZXNuJ3QuIjsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK2ludCBtYWluKGludCBhcmdjLCBj
aGFyICoqYXJndikgeworICBJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgIGNvbnN0IGlu
dCBleGl0X2NvZGUgPSBSVU5fQUxMX1RFU1RTKCk7CisKKyAgLy8gVGVzdCB0aGF0IHRoZSBwcmVt
YXR1cmUtZXhpdCBmaWxlIGlzIGRlbGV0ZWQgdXBvbiByZXR1cm4gZnJvbQorICAvLyBSVU5fQUxM
X1RFU1RTKCkuCisgIGNvbnN0IGNoYXIqIGNvbnN0IGZpbGVwYXRoID0gR2V0RW52KCJURVNUX1BS
RU1BVFVSRV9FWElUX0ZJTEUiKTsKKyAgaWYgKGZpbGVwYXRoICE9IE5VTEwgJiYgKmZpbGVwYXRo
ICE9ICdcMCcpIHsKKyAgICBpZiAoUHJlbWF0dXJlRXhpdFRlc3Q6OkZpbGVFeGlzdHMoZmlsZXBh
dGgpKSB7CisgICAgICBwcmludGYoCisgICAgICAgICAgIkZpbGUgJXMgc2hvdWxkbid0IGV4aXN0
IGFmdGVyIHRoZSB0ZXN0IHByb2dyYW0gZmluaXNoZXMsIGJ1dCBkb2VzLiIsCisgICAgICAgICAg
ZmlsZXBhdGgpOworICAgICAgcmV0dXJuIDE7CisgICAgfQorICB9CisKKyAgcmV0dXJuIGV4aXRf
Y29kZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
cHJvZF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcm9kX3Rl
c3QuY2MKaW5kZXggYmMzMjAxZDBmMjRhZTk4ZWQwNjJjN2I4YzlmNDRkN2RmZTZkN2M5Ni4uZWRl
ODFhMGQxN2EwMmM4NTNlZDIyMzRlYzg4ZmU4Mjc3MTgwYTM3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2MKQEAgLTI2LDEzICsyNiwxMiBA
QAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwot
Ly8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFVuaXQgdGVz
dCBmb3IgaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmguCisvLyBVbml0IHRlc3QgZm9yIGd0ZXN0
X3Byb2QuaC4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVkZSAidGVzdC9wcm9k
dWN0aW9uLmgiCisjaW5jbHVkZSAicHJvZHVjdGlvbi5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCiAKIC8vIFRlc3RzIHRoYXQgcHJpdmF0ZSBtZW1iZXJzIGNhbiBiZSBhY2Nlc3NlZCBmcm9t
IGEgVEVTVCBkZWNsYXJlZCBhcwogLy8gYSBmcmllbmQgb2YgdGhlIGNsYXNzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9yZXBlYXRfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcmVwZWF0X3Rlc3QuY2MKaW5kZXggZGY2
ODY4YjgzMDI5NjEyNWEyN2M3ZjM3ZjkzMTZjZWQ0ZWQ4MmQ1NC4uMWU4ZjQ5OWJiOWRlM2QxNGJj
YjNiYjFhNjQxYzA2ZDdhMTI1MGFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF9yZXBlYXRfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X3JlcGVhdF90ZXN0LmNjCkBAIC0yNiwyMyArMjYsMTQgQEAKIC8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdh
bkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogLy8gVGVzdHMgdGhlIC0tZ3Rlc3RfcmVw
ZWF0PW51bWJlciBmbGFnLgogCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8aW9zdHJl
YW0+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0
cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRp
b24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNs
dWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0
bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWlu
dGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJ
T05fIDEKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRl
cm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KIAogbmFtZXNwYWNlIHRl
c3RpbmcgewogCkBAIC02OSwxMyArNjAsMTMgQEAgbmFtZXNwYWNlIHsKICAgICAgICAgICAgICAg
ICAgIDw8ICIgIEFjdHVhbDogIiA8PCBhY3R1YWxfdmFsIDw8ICJcbiJcCiAgICAgICAgICAgICAg
ICAgICA8PCAiRXhwZWN0ZWQ6ICIgI2V4cGVjdGVkICJcbiJcCiAgICAgICAgICAgICAgICAgICA8
PCAiV2hpY2ggaXM6ICIgPDwgZXhwZWN0ZWRfdmFsIDw8ICJcbiI7XAotICAgICAgYWJvcnQoKTtc
CisgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6QWJvcnQoKTtcCiAgICAgfVwKLSAg
fSB3aGlsZSg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgpKQorICB9IHdoaWxlICg6
OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgpKQogCiAKIC8vIFVzZWQgZm9yIHZlcmlm
eWluZyB0aGF0IGdsb2JhbCBlbnZpcm9ubWVudCBzZXQtdXAgYW5kIHRlYXItZG93biBhcmUKLS8v
IGluc2lkZSB0aGUgZ3Rlc3RfcmVwZWF0IGxvb3AuCisvLyBpbnNpZGUgdGhlIC0tZ3Rlc3RfcmVw
ZWF0IGxvb3AuCiAKIGludCBnX2Vudmlyb25tZW50X3NldF91cF9jb3VudCA9IDA7CiBpbnQgZ19l
bnZpcm9ubWVudF90ZWFyX2Rvd25fY291bnQgPSAwOwpAQCAtMTEzLDEzICsxMDQsMTIgQEAgVEVT
VChCYXJEZWF0aFRlc3QsIFRocmVhZFNhZmVBbmRGYXN0KSB7CiAgIGdfZGVhdGhfdGVzdF9jb3Vu
dCsrOwogCiAgIEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7Ci0g
IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoYWJvcnQoKSwgIiIpOworICBFWFBFQ1RfREVBVEhf
SUZfU1VQUE9SVEVEKDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpBYm9ydCgpLCAiIik7CiAK
ICAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKLSAgRVhQRUNUX0RFQVRI
X0lGX1NVUFBPUlRFRChhYm9ydCgpLCAiIik7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQo
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OkFib3J0KCksICIiKTsKIH0KIAotI2lmIEdURVNU
X0hBU19QQVJBTV9URVNUCiBpbnQgZ19wYXJhbV90ZXN0X2NvdW50ID0gMDsKIAogY29uc3QgaW50
IGtOdW1iZXJPZlBhcmFtVGVzdHMgPSAxMDsKQEAgLTEyNywxNSArMTE3LDEzIEBAIGNvbnN0IGlu
dCBrTnVtYmVyT2ZQYXJhbVRlc3RzID0gMTA7CiBjbGFzcyBNeVBhcmFtVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4ge307CiAKIFRFU1RfUChNeVBhcmFtVGVzdCwgU2hv
dWxkUGFzcykgewotICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBNYWtlIHBhcmFtZXRlciB2
YWx1ZSBjaGVja2luZyByb2J1c3QKLSAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgV1JUIG9y
ZGVyIG9mIHRlc3RzLgorICAvLyBGSVhNRTogTWFrZSBwYXJhbWV0ZXIgdmFsdWUgY2hlY2tpbmcg
cm9idXN0IFdSVCBvcmRlciBvZiB0ZXN0cy4KICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhnX3BhcmFt
X3Rlc3RfY291bnQgJSBrTnVtYmVyT2ZQYXJhbVRlc3RzLCBHZXRQYXJhbSgpKTsKICAgZ19wYXJh
bV90ZXN0X2NvdW50Kys7CiB9CiBJTlNUQU5USUFURV9URVNUX0NBU0VfUChNeVBhcmFtU2VxdWVu
Y2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBNeVBhcmFtVGVzdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3Rpbmc6OlJhbmdlKDAsIGtOdW1iZXJPZlBhcmFtVGVzdHMpKTsKLSNlbmRp
ZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIAogLy8gUmVzZXRzIHRoZSBjb3VudCBmb3IgZWFj
aCB0ZXN0Lgogdm9pZCBSZXNldENvdW50cygpIHsKQEAgLTE0NCw5ICsxMzIsNyBAQCB2b2lkIFJl
c2V0Q291bnRzKCkgewogICBnX3Nob3VsZF9mYWlsX2NvdW50ID0gMDsKICAgZ19zaG91bGRfcGFz
c19jb3VudCA9IDA7CiAgIGdfZGVhdGhfdGVzdF9jb3VudCA9IDA7Ci0jaWYgR1RFU1RfSEFTX1BB
UkFNX1RFU1QKICAgZ19wYXJhbV90ZXN0X2NvdW50ID0gMDsKLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X1BBUkFNX1RFU1QKIH0KIAogLy8gQ2hlY2tzIHRoYXQgdGhlIGNvdW50IGZvciBlYWNoIHRlc3Qg
aXMgZXhwZWN0ZWQuCkBAIC0xNTYsOSArMTQyLDcgQEAgdm9pZCBDaGVja0NvdW50cyhpbnQgZXhw
ZWN0ZWQpIHsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhleHBlY3RlZCwgZ19zaG91bGRfZmFpbF9j
b3VudCk7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8oZXhwZWN0ZWQsIGdfc2hvdWxkX3Bhc3NfY291
bnQpOwogICBHVEVTVF9DSEVDS19JTlRfRVFfKGV4cGVjdGVkLCBnX2RlYXRoX3Rlc3RfY291bnQp
OwotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiAgIEdURVNUX0NIRUNLX0lOVF9FUV8oZXhwZWN0
ZWQgKiBrTnVtYmVyT2ZQYXJhbVRlc3RzLCBnX3BhcmFtX3Rlc3RfY291bnQpOwotI2VuZGlmICAv
LyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogfQogCiAvLyBUZXN0cyB0aGUgYmVoYXZpb3Igb2YgR29v
Z2xlIFRlc3Qgd2hlbiAtLWd0ZXN0X3JlcGVhdCBpcyBub3Qgc3BlY2lmaWVkLgpAQCAtMjAxLDkg
KzE4NSw3IEBAIHZvaWQgVGVzdFJlcGVhdFdpdGhGaWx0ZXJGb3JTdWNjZXNzZnVsVGVzdHMoaW50
IHJlcGVhdCkgewogICBHVEVTVF9DSEVDS19JTlRfRVFfKDAsIGdfc2hvdWxkX2ZhaWxfY291bnQp
OwogICBHVEVTVF9DSEVDS19JTlRfRVFfKHJlcGVhdCwgZ19zaG91bGRfcGFzc19jb3VudCk7CiAg
IEdURVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0LCBnX2RlYXRoX3Rlc3RfY291bnQpOwotI2lmIEdU
RVNUX0hBU19QQVJBTV9URVNUCiAgIEdURVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0ICoga051bWJl
ck9mUGFyYW1UZXN0cywgZ19wYXJhbV90ZXN0X2NvdW50KTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X1BBUkFNX1RFU1QKIH0KIAogLy8gVGVzdHMgdXNpbmcgLS1ndGVzdF9yZXBlYXQgd2hlbiAtLWd0
ZXN0X2ZpbHRlciBzcGVjaWZpZXMgYSBzZXQgb2YKQEAgLTIxOSwxNSArMjAxLDE0IEBAIHZvaWQg
VGVzdFJlcGVhdFdpdGhGaWx0ZXJGb3JGYWlsZWRUZXN0cyhpbnQgcmVwZWF0KSB7CiAgIEdURVNU
X0NIRUNLX0lOVF9FUV8ocmVwZWF0LCBnX3Nob3VsZF9mYWlsX2NvdW50KTsKICAgR1RFU1RfQ0hF
Q0tfSU5UX0VRXygwLCBnX3Nob3VsZF9wYXNzX2NvdW50KTsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VR
XygwLCBnX2RlYXRoX3Rlc3RfY291bnQpOwotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiAgIEdU
RVNUX0NIRUNLX0lOVF9FUV8oMCwgZ19wYXJhbV90ZXN0X2NvdW50KTsKLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX1BBUkFNX1RFU1QKIH0KIAogfSAgLy8gbmFtZXNwYWNlCiAKIGludCBtYWluKGludCBh
cmdjLCBjaGFyICoqYXJndikgewogICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJn
dik7CisKICAgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBNeUVudmlyb25t
ZW50KTsKIAogICBUZXN0UmVwZWF0VW5zcGVjaWZpZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0LnB5IGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDMwZDAzMDNkMTkzNTU0YTVmZDBiOWIxZjZhNTFlZjdkMDlmMzA2MTIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAt
MSwzMjUgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA5
IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0i
IiJWZXJpZmllcyB0aGF0IHRlc3Qgc2h1ZmZsaW5nIHdvcmtzLiIiIgotCi1fX2F1dGhvcl9fID0g
J3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWltcG9ydCBndGVz
dF90ZXN0X3V0aWxzCi0KLSMgQ29tbWFuZCB0byBydW4gdGhlIGd0ZXN0X3NodWZmbGVfdGVzdF8g
cHJvZ3JhbS4KLUNPTU1BTkQgPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0
aCgnZ3Rlc3Rfc2h1ZmZsZV90ZXN0XycpCi0KLSMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBm
b3IgdGVzdCBzaGFyZGluZy4KLVRPVEFMX1NIQVJEU19FTlZfVkFSID0gJ0dURVNUX1RPVEFMX1NI
QVJEUycKLVNIQVJEX0lOREVYX0VOVl9WQVIgPSAnR1RFU1RfU0hBUkRfSU5ERVgnCi0KLVRFU1Rf
RklMVEVSID0gJ0EqLkE6QSouQjpDKicKLQotQUxMX1RFU1RTID0gW10KLUFDVElWRV9URVNUUyA9
IFtdCi1GSUxURVJFRF9URVNUUyA9IFtdCi1TSEFSREVEX1RFU1RTID0gW10KLQotU0hVRkZMRURf
QUxMX1RFU1RTID0gW10KLVNIVUZGTEVEX0FDVElWRV9URVNUUyA9IFtdCi1TSFVGRkxFRF9GSUxU
RVJFRF9URVNUUyA9IFtdCi1TSFVGRkxFRF9TSEFSREVEX1RFU1RTID0gW10KLQotCi1kZWYgQWxz
b1J1bkRpc2FibGVkVGVzdHNGbGFnKCk6Ci0gIHJldHVybiAnLS1ndGVzdF9hbHNvX3J1bl9kaXNh
YmxlZF90ZXN0cycKLQotCi1kZWYgRmlsdGVyRmxhZyh0ZXN0X2ZpbHRlcik6Ci0gIHJldHVybiAn
LS1ndGVzdF9maWx0ZXI9JXMnICUgKHRlc3RfZmlsdGVyLCkKLQotCi1kZWYgUmVwZWF0RmxhZyhu
KToKLSAgcmV0dXJuICctLWd0ZXN0X3JlcGVhdD0lcycgJSAobiwpCi0KLQotZGVmIFNodWZmbGVG
bGFnKCk6Ci0gIHJldHVybiAnLS1ndGVzdF9zaHVmZmxlJwotCi0KLWRlZiBSYW5kb21TZWVkRmxh
ZyhuKToKLSAgcmV0dXJuICctLWd0ZXN0X3JhbmRvbV9zZWVkPSVzJyAlIChuLCkKLQotCi1kZWYg
UnVuQW5kUmV0dXJuT3V0cHV0KGV4dHJhX2VudiwgYXJncyk6Ci0gICIiIlJ1bnMgdGhlIHRlc3Qg
cHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgb3V0cHV0LiIiIgotCi0gIGVudmlyb25fY29weSA9IG9z
LmVudmlyb24uY29weSgpCi0gIGVudmlyb25fY29weS51cGRhdGUoZXh0cmFfZW52KQotCi0gIHJl
dHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0NPTU1BTkRdICsgYXJncywgZW52PWVu
dmlyb25fY29weSkub3V0cHV0Ci0KLQotZGVmIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyhleHRy
YV9lbnYsIGFyZ3MpOgotICAiIiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0gYW5kIHJldHVybnMgYSBs
aXN0IG9mIHRlc3QgbGlzdHMuCi0KLSAgQXJnczoKLSAgICBleHRyYV9lbnY6IGEgbWFwIGZyb20g
ZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHRoZWlyIHZhbHVlcwotICAgIGFyZ3M6IGNvbW1hbmQg
bGluZSBmbGFncyB0byBwYXNzIHRvIGd0ZXN0X3NodWZmbGVfdGVzdF8KLQotICBSZXR1cm5zOgot
ICAgIEEgbGlzdCB3aGVyZSB0aGUgaS10aCBlbGVtZW50IGlzIHRoZSBsaXN0IG9mIHRlc3RzIHJ1
biBpbiB0aGUgaS10aAotICAgIHRlc3QgaXRlcmF0aW9uLgotICAiIiIKLQotICB0ZXN0X2l0ZXJh
dGlvbnMgPSBbXQotICBmb3IgbGluZSBpbiBSdW5BbmRSZXR1cm5PdXRwdXQoZXh0cmFfZW52LCBh
cmdzKS5zcGxpdCgnXG4nKToKLSAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJy0tLS0nKToKLSAgICAg
IHRlc3RzID0gW10KLSAgICAgIHRlc3RfaXRlcmF0aW9ucy5hcHBlbmQodGVzdHMpCi0gICAgZWxp
ZiBsaW5lLnN0cmlwKCk6Ci0gICAgICB0ZXN0cy5hcHBlbmQobGluZS5zdHJpcCgpKSAgIyAnVGVz
dENhc2VOYW1lLlRlc3ROYW1lJwotCi0gIHJldHVybiB0ZXN0X2l0ZXJhdGlvbnMKLQotCi1kZWYg
R2V0VGVzdENhc2VzKHRlc3RzKToKLSAgIiIiUmV0dXJucyBhIGxpc3Qgb2YgdGVzdCBjYXNlcyBp
biB0aGUgZ2l2ZW4gZnVsbCB0ZXN0IG5hbWVzLgotCi0gIEFyZ3M6Ci0gICAgdGVzdHM6IGEgbGlz
dCBvZiBmdWxsIHRlc3QgbmFtZXMKLQotICBSZXR1cm5zOgotICAgIEEgbGlzdCBvZiB0ZXN0IGNh
c2VzIGZyb20gJ3Rlc3RzJywgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIuCi0gICAgQ29uc2VjdXRp
dmUgZHVwbGljYXRlcyBhcmUgcmVtb3ZlZC4KLSAgIiIiCi0KLSAgdGVzdF9jYXNlcyA9IFtdCi0g
IGZvciB0ZXN0IGluIHRlc3RzOgotICAgIHRlc3RfY2FzZSA9IHRlc3Quc3BsaXQoJy4nKVswXQot
ICAgIGlmIG5vdCB0ZXN0X2Nhc2UgaW4gdGVzdF9jYXNlczoKLSAgICAgIHRlc3RfY2FzZXMuYXBw
ZW5kKHRlc3RfY2FzZSkKLQotICByZXR1cm4gdGVzdF9jYXNlcwotCi0KLWRlZiBDYWxjdWxhdGVU
ZXN0TGlzdHMoKToKLSAgIiIiQ2FsY3VsYXRlcyB0aGUgbGlzdCBvZiB0ZXN0cyBydW4gdW5kZXIg
ZGlmZmVyZW50IGZsYWdzLiIiIgotCi0gIGlmIG5vdCBBTExfVEVTVFM6Ci0gICAgQUxMX1RFU1RT
LmV4dGVuZCgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHt9LCBbQWxzb1J1bkRp
c2FibGVkVGVzdHNGbGFnKCldKVswXSkKLQotICBpZiBub3QgQUNUSVZFX1RFU1RTOgotICAgIEFD
VElWRV9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHt9LCBbXSlbMF0pCi0K
LSAgaWYgbm90IEZJTFRFUkVEX1RFU1RTOgotICAgIEZJTFRFUkVEX1RFU1RTLmV4dGVuZCgKLSAg
ICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHt9LCBbRmlsdGVyRmxhZyhURVNUX0ZJTFRF
UildKVswXSkKLQotICBpZiBub3QgU0hBUkRFRF9URVNUUzoKLSAgICBTSEFSREVEX1RFU1RTLmV4
dGVuZCgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9TSEFSRFNfRU5W
X1ZBUjogJzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQVJEX0lOREVY
X0VOVl9WQVI6ICcxJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSlbMF0p
Ci0KLSAgaWYgbm90IFNIVUZGTEVEX0FMTF9URVNUUzoKLSAgICBTSFVGRkxFRF9BTExfVEVTVFMu
ZXh0ZW5kKEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKLSAgICAgICAge30sIFtBbHNvUnVuRGlz
YWJsZWRUZXN0c0ZsYWcoKSwgU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSldKVswXSkK
LQotICBpZiBub3QgU0hVRkZMRURfQUNUSVZFX1RFU1RTOgotICAgIFNIVUZGTEVEX0FDVElWRV9U
RVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAotICAgICAgICB7fSwgW1NodWZm
bGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSlbMF0pCi0KLSAgaWYgbm90IFNIVUZGTEVEX0ZJ
TFRFUkVEX1RFU1RTOgotICAgIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTLmV4dGVuZChHZXRUZXN0
c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2Vl
ZEZsYWcoMSksIEZpbHRlckZsYWcoVEVTVF9GSUxURVIpXSlbMF0pCi0KLSAgaWYgbm90IFNIVUZG
TEVEX1NIQVJERURfVEVTVFM6Ci0gICAgU0hVRkZMRURfU0hBUkRFRF9URVNUUy5leHRlbmQoCi0g
ICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7VE9UQUxfU0hBUkRTX0VOVl9WQVI6ICcz
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRF9JTkRFWF9FTlZfVkFS
OiAnMSd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NodWZmbGVGbGFnKCks
IFJhbmRvbVNlZWRGbGFnKDEpXSlbMF0pCi0KLQotY2xhc3MgR1Rlc3RTaHVmZmxlVW5pdFRlc3Qo
Z3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gICIiIlRlc3RzIHRlc3Qgc2h1ZmZsaW5nLiIi
IgotCi0gIGRlZiBzZXRVcChzZWxmKToKLSAgICBDYWxjdWxhdGVUZXN0TGlzdHMoKQotCi0gIGRl
ZiB0ZXN0U2h1ZmZsZVByZXNlcnZlc051bWJlck9mVGVzdHMoc2VsZik6Ci0gICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oQUxMX1RFU1RTKSwgbGVuKFNIVUZGTEVEX0FMTF9URVNUUykpCi0gICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4oQUNUSVZFX1RFU1RTKSwgbGVuKFNIVUZGTEVEX0FDVElWRV9URVNU
UykpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oRklMVEVSRURfVEVTVFMpLCBsZW4oU0hVRkZM
RURfRklMVEVSRURfVEVTVFMpKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFNIQVJERURfVEVT
VFMpLCBsZW4oU0hVRkZMRURfU0hBUkRFRF9URVNUUykpCi0KLSAgZGVmIHRlc3RTaHVmZmxlQ2hh
bmdlc1Rlc3RPcmRlcihzZWxmKToKLSAgICBzZWxmLmFzc2VydF8oU0hVRkZMRURfQUxMX1RFU1RT
ICE9IEFMTF9URVNUUywgU0hVRkZMRURfQUxMX1RFU1RTKQotICAgIHNlbGYuYXNzZXJ0XyhTSFVG
RkxFRF9BQ1RJVkVfVEVTVFMgIT0gQUNUSVZFX1RFU1RTLCBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMp
Ci0gICAgc2VsZi5hc3NlcnRfKFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTICE9IEZJTFRFUkVEX1RF
U1RTLAotICAgICAgICAgICAgICAgICBTSFVGRkxFRF9GSUxURVJFRF9URVNUUykKLSAgICBzZWxm
LmFzc2VydF8oU0hVRkZMRURfU0hBUkRFRF9URVNUUyAhPSBTSEFSREVEX1RFU1RTLAotICAgICAg
ICAgICAgICAgICBTSFVGRkxFRF9TSEFSREVEX1RFU1RTKQotCi0gIGRlZiB0ZXN0U2h1ZmZsZUNo
YW5nZXNUZXN0Q2FzZU9yZGVyKHNlbGYpOgotICAgIHNlbGYuYXNzZXJ0XyhHZXRUZXN0Q2FzZXMo
U0hVRkZMRURfQUxMX1RFU1RTKSAhPSBHZXRUZXN0Q2FzZXMoQUxMX1RFU1RTKSwKLSAgICAgICAg
ICAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX0FMTF9URVNUUykpCi0gICAgc2VsZi5hc3Nl
cnRfKAotICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfQUNUSVZFX1RFU1RTKSAhPSBHZXRU
ZXN0Q2FzZXMoQUNUSVZFX1RFU1RTKSwKLSAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX0FD
VElWRV9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRfKAotICAgICAgICBHZXRUZXN0Q2FzZXMoU0hV
RkZMRURfRklMVEVSRURfVEVTVFMpICE9IEdldFRlc3RDYXNlcyhGSUxURVJFRF9URVNUUyksCi0g
ICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9GSUxURVJFRF9URVNUUykpCi0gICAgc2VsZi5h
c3NlcnRfKAotICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfU0hBUkRFRF9URVNUUykgIT0g
R2V0VGVzdENhc2VzKFNIQVJERURfVEVTVFMpLAotICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZM
RURfU0hBUkRFRF9URVNUUykpCi0KLSAgZGVmIHRlc3RTaHVmZmxlRG9lc05vdFJlcGVhdFRlc3Qo
c2VsZik6Ci0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUxMX1RFU1RTOgotICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9BTExfVEVTVFMuY291bnQodGVzdCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0ZXN0LCkpCi0gICAg
Zm9yIHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgxLCBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMuY291bnQodGVzdCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRl
c3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydEVxdWFsKDEs
IFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTLmNvdW50KHRlc3QpLAotICAgICAgICAgICAgICAgICAg
ICAgICAnJXMgYXBwZWFycyBtb3JlIHRoYW4gb25jZScgJSAodGVzdCwpKQotICAgIGZvciB0ZXN0
IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIFNI
VUZGTEVEX1NIQVJERURfVEVTVFMuY291bnQodGVzdCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0ZXN0LCkpCi0KLSAgZGVmIHRlc3RTaHVm
ZmxlRG9lc05vdENyZWF0ZU5ld1Rlc3Qoc2VsZik6Ci0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURf
QUxMX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gQUxMX1RFU1RTLCAnJXMgaXMg
YW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUNU
SVZFX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gQUNUSVZFX1RFU1RTLCAnJXMg
aXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURf
RklMVEVSRURfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBGSUxURVJFRF9URVNU
UywgJyVzIGlzIGFuIGludmFsaWQgdGVzdCcgJSAodGVzdCwpKQotICAgIGZvciB0ZXN0IGluIFNI
VUZGTEVEX1NIQVJERURfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSEFSREVE
X1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCi0KLSAgZGVmIHRlc3RT
aHVmZmxlSW5jbHVkZXNBbGxUZXN0cyhzZWxmKToKLSAgICBmb3IgdGVzdCBpbiBBTExfVEVTVFM6
Ci0gICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVGRkxFRF9BTExfVEVTVFMsICclcyBpcyBt
aXNzaW5nJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gQUNUSVZFX1RFU1RTOgotICAgICAg
c2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTLCAnJXMgaXMgbWlzc2lu
ZycgJSAodGVzdCwpKQotICAgIGZvciB0ZXN0IGluIEZJTFRFUkVEX1RFU1RTOgotICAgICAgc2Vs
Zi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFMsICclcyBpcyBtaXNzaW5n
JyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hBUkRFRF9URVNUUzoKLSAgICAgIHNlbGYu
YXNzZXJ0Xyh0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFMsICclcyBpcyBtaXNzaW5nJyAl
ICh0ZXN0LCkpCi0KLSAgZGVmIHRlc3RTaHVmZmxlTGVhdmVzRGVhdGhUZXN0c0F0RnJvbnQoc2Vs
Zik6Ci0gICAgbm9uX2RlYXRoX3Rlc3RfZm91bmQgPSBGYWxzZQotICAgIGZvciB0ZXN0IGluIFNI
VUZGTEVEX0FDVElWRV9URVNUUzoKLSAgICAgIGlmICdEZWF0aFRlc3QuJyBpbiB0ZXN0OgotICAg
ICAgICBzZWxmLmFzc2VydF8obm90IG5vbl9kZWF0aF90ZXN0X2ZvdW5kLAotICAgICAgICAgICAg
ICAgICAgICAgJyVzIGFwcGVhcnMgYWZ0ZXIgYSBub24tZGVhdGggdGVzdCcgJSAodGVzdCwpKQot
ICAgICAgZWxzZToKLSAgICAgICAgbm9uX2RlYXRoX3Rlc3RfZm91bmQgPSBUcnVlCi0KLSAgZGVm
IF9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUoc2VsZiwgdGVzdHMpOgotICAgIHRlc3Rf
Y2FzZXMgPSBbXQotICAgIGZvciB0ZXN0IGluIHRlc3RzOgotICAgICAgW3Rlc3RfY2FzZSwgX10g
PSB0ZXN0LnNwbGl0KCcuJykKLSAgICAgIGlmIHRlc3RfY2FzZXMgYW5kIHRlc3RfY2FzZXNbLTFd
ICE9IHRlc3RfY2FzZToKLSAgICAgICAgdGVzdF9jYXNlcy5hcHBlbmQodGVzdF9jYXNlKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHRlc3RfY2FzZXMuY291bnQodGVzdF9jYXNlKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAnVGVzdCBjYXNlICVzIGlzIG5vdCBncm91cGVkIHRvZ2V0
aGVyIGluICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3RfY2FzZSwgdGVzdHMp
KQotCi0gIGRlZiB0ZXN0U2h1ZmZsZURvZXNOb3RJbnRlcmxlYXZlVGVzdENhc2VzKHNlbGYpOgot
ICAgIHNlbGYuX1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50ZXJsZWF2ZShTSFVGRkxFRF9BTExfVEVT
VFMpCi0gICAgc2VsZi5fVmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRlcmxlYXZlKFNIVUZGTEVEX0FD
VElWRV9URVNUUykKLSAgICBzZWxmLl9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUoU0hV
RkZMRURfRklMVEVSRURfVEVTVFMpCi0gICAgc2VsZi5fVmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRl
cmxlYXZlKFNIVUZGTEVEX1NIQVJERURfVEVTVFMpCi0KLSAgZGVmIHRlc3RTaHVmZmxlUmVzdG9y
ZXNPcmRlckFmdGVyRWFjaEl0ZXJhdGlvbihzZWxmKToKLSAgICAjIEdldCB0aGUgdGVzdCBsaXN0
cyBpbiBhbGwgMyBpdGVyYXRpb25zLCB1c2luZyByYW5kb20gc2VlZCAxLCAyLAotICAgICMgYW5k
IDMgcmVzcGVjdGl2ZWx5LiAgR29vZ2xlIFRlc3QgcGlja3MgYSBkaWZmZXJlbnQgc2VlZCBpbiBl
YWNoCi0gICAgIyBpdGVyYXRpb24sIGFuZCB0aGlzIHRlc3QgZGVwZW5kcyBvbiB0aGUgY3VycmVu
dCBpbXBsZW1lbnRhdGlvbgotICAgICMgcGlja2luZyBzdWNjZXNzaXZlIG51bWJlcnMuICBUaGlz
IGRlcGVuZGVuY3kgaXMgbm90IGlkZWFsLCBidXQKLSAgICAjIG1ha2VzIHRoZSB0ZXN0IG11Y2gg
ZWFzaWVyIHRvIHdyaXRlLgotICAgIFt0ZXN0c19pbl9pdGVyYXRpb24xLCB0ZXN0c19pbl9pdGVy
YXRpb24yLCB0ZXN0c19pbl9pdGVyYXRpb24zXSA9ICgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJ
dGVyYXRpb25zKAotICAgICAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxh
ZygxKSwgUmVwZWF0RmxhZygzKV0pKQotCi0gICAgIyBNYWtlIHN1cmUgcnVubmluZyB0aGUgdGVz
dHMgd2l0aCByYW5kb20gc2VlZCAxIGdldHMgdGhlIHNhbWUKLSAgICAjIG9yZGVyIGFzIGluIGl0
ZXJhdGlvbiAxIGFib3ZlLgotICAgIFt0ZXN0c193aXRoX3NlZWQxXSA9IEdldFRlc3RzRm9yQWxs
SXRlcmF0aW9ucygKLSAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygx
KV0pCi0gICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0c19pbl9pdGVyYXRpb24xLCB0ZXN0c193aXRo
X3NlZWQxKQotCi0gICAgIyBNYWtlIHN1cmUgcnVubmluZyB0aGUgdGVzdHMgd2l0aCByYW5kb20g
c2VlZCAyIGdldHMgdGhlIHNhbWUKLSAgICAjIG9yZGVyIGFzIGluIGl0ZXJhdGlvbiAyIGFib3Zl
LiAgU3VjY2VzcyBtZWFucyB0aGF0IEdvb2dsZSBUZXN0Ci0gICAgIyBjb3JyZWN0bHkgcmVzdG9y
ZXMgdGhlIHRlc3Qgb3JkZXIgYmVmb3JlIHJlLXNodWZmbGluZyBhdCB0aGUKLSAgICAjIGJlZ2lu
bmluZyBvZiBpdGVyYXRpb24gMi4KLSAgICBbdGVzdHNfd2l0aF9zZWVkMl0gPSBHZXRUZXN0c0Zv
ckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZs
YWcoMildKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHNfaW5faXRlcmF0aW9uMiwgdGVzdHNf
d2l0aF9zZWVkMikKLQotICAgICMgTWFrZSBzdXJlIHJ1bm5pbmcgdGhlIHRlc3RzIHdpdGggcmFu
ZG9tIHNlZWQgMyBnZXRzIHRoZSBzYW1lCi0gICAgIyBvcmRlciBhcyBpbiBpdGVyYXRpb24gMyBh
Ym92ZS4gIFN1Y2Nlc3MgbWVhbnMgdGhhdCBHb29nbGUgVGVzdAotICAgICMgY29ycmVjdGx5IHJl
c3RvcmVzIHRoZSB0ZXN0IG9yZGVyIGJlZm9yZSByZS1zaHVmZmxpbmcgYXQgdGhlCi0gICAgIyBi
ZWdpbm5pbmcgb2YgaXRlcmF0aW9uIDMuCi0gICAgW3Rlc3RzX3dpdGhfc2VlZDNdID0gR2V0VGVz
dHNGb3JBbGxJdGVyYXRpb25zKAotICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNl
ZWRGbGFnKDMpXSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzX2luX2l0ZXJhdGlvbjMsIHRl
c3RzX3dpdGhfc2VlZDMpCi0KLSAgZGVmIHRlc3RTaHVmZmxlR2VuZXJhdGVzTmV3T3JkZXJJbkVh
Y2hJdGVyYXRpb24oc2VsZik6Ci0gICAgW3Rlc3RzX2luX2l0ZXJhdGlvbjEsIHRlc3RzX2luX2l0
ZXJhdGlvbjIsIHRlc3RzX2luX2l0ZXJhdGlvbjNdID0gKAotICAgICAgICBHZXRUZXN0c0ZvckFs
bEl0ZXJhdGlvbnMoCi0gICAgICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRG
bGFnKDEpLCBSZXBlYXRGbGFnKDMpXSkpCi0KLSAgICBzZWxmLmFzc2VydF8odGVzdHNfaW5faXRl
cmF0aW9uMSAhPSB0ZXN0c19pbl9pdGVyYXRpb24yLAotICAgICAgICAgICAgICAgICB0ZXN0c19p
bl9pdGVyYXRpb24xKQotICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0c19pbl9pdGVyYXRpb24xICE9IHRl
c3RzX2luX2l0ZXJhdGlvbjMsCi0gICAgICAgICAgICAgICAgIHRlc3RzX2luX2l0ZXJhdGlvbjEp
Ci0gICAgc2VsZi5hc3NlcnRfKHRlc3RzX2luX2l0ZXJhdGlvbjIgIT0gdGVzdHNfaW5faXRlcmF0
aW9uMywKLSAgICAgICAgICAgICAgICAgdGVzdHNfaW5faXRlcmF0aW9uMikKLQotICBkZWYgdGVz
dFNodWZmbGVTaGFyZGVkVGVzdHNQcmVzZXJ2ZXNQYXJ0aXRpb24oc2VsZik6Ci0gICAgIyBJZiB3
ZSBydW4gTSB0ZXN0cyBvbiBOIHNoYXJkcywgdGhlIHNhbWUgTSB0ZXN0cyBzaG91bGQgYmUgcnVu
IGluCi0gICAgIyB0b3RhbCwgcmVnYXJkbGVzcyBvZiB0aGUgcmFuZG9tIHNlZWRzIHVzZWQgYnkg
dGhlIHNoYXJkcy4KLSAgICBbdGVzdHMxXSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7VE9U
QUxfU0hBUkRTX0VOVl9WQVI6ICczJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU0hBUkRfSU5ERVhfRU5WX1ZBUjogJzAnfSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSldKQot
ICAgIFt0ZXN0czJdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9TSEFSRFNfRU5W
X1ZBUjogJzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFS
RF9JTkRFWF9FTlZfVkFSOiAnMSd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygyMCldKQotICAgIFt0ZXN0czNd
ID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRF9JTkRFWF9FTlZf
VkFSOiAnMid9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTaHVm
ZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygyNSldKQotICAgIHNvcnRlZF9zaGFyZGVkX3Rlc3Rz
ID0gdGVzdHMxICsgdGVzdHMyICsgdGVzdHMzCi0gICAgc29ydGVkX3NoYXJkZWRfdGVzdHMuc29y
dCgpCi0gICAgc29ydGVkX2FjdGl2ZV90ZXN0cyA9IFtdCi0gICAgc29ydGVkX2FjdGl2ZV90ZXN0
cy5leHRlbmQoQUNUSVZFX1RFU1RTKQotICAgIHNvcnRlZF9hY3RpdmVfdGVzdHMuc29ydCgpCi0g
ICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWRfYWN0aXZlX3Rlc3RzLCBzb3J0ZWRfc2hhcmRlZF90
ZXN0cykKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5N
YWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1
ZmZsZV90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZs
ZV90ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNlY2Y3NzcwYTE0MTE3
NjY4YjRhZGVhNmZiNmY1MDI2NjcxN2RlNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3NodWZm
bGVfdGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotLy8gQ29weXJpZ2h0
IDIwMDksIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24u
Ci0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gVmVyaWZpZXMgdGhhdCB0ZXN0IHNodWZmbGluZyB3
b3Jrcy4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLW5hbWVzcGFjZSB7Ci0KLXVzaW5n
IDo6dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lcjsKLXVzaW5nIDo6dGVzdGluZzo6SW5p
dEdvb2dsZVRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6Ok1lc3NhZ2U7Ci11c2luZyA6OnRlc3Rpbmc6
OlRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyczsKLXVzaW5nIDo6dGVz
dGluZzo6VGVzdEluZm87Ci11c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OwotdXNpbmcgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6U3RyaW5nOwotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVk
X3B0cjsKLQotLy8gVGhlIHRlc3QgbWV0aG9kcyBhcmUgZW1wdHksIGFzIHRoZSBzb2xlIHB1cnBv
c2Ugb2YgdGhpcyBwcm9ncmFtIGlzCi0vLyB0byBwcmludCB0aGUgdGVzdCBuYW1lcyBiZWZvcmUv
YWZ0ZXIgc2h1ZmZsaW5nLgotCi1jbGFzcyBBIDogcHVibGljIFRlc3Qge307Ci1URVNUX0YoQSwg
QSkge30KLVRFU1RfRihBLCBCKSB7fQotCi1URVNUKEFEZWF0aFRlc3QsIEEpIHt9Ci1URVNUKEFE
ZWF0aFRlc3QsIEIpIHt9Ci1URVNUKEFEZWF0aFRlc3QsIEMpIHt9Ci0KLVRFU1QoQiwgQSkge30K
LVRFU1QoQiwgQikge30KLVRFU1QoQiwgQykge30KLVRFU1QoQiwgRElTQUJMRURfRCkge30KLVRF
U1QoQiwgRElTQUJMRURfRSkge30KLQotVEVTVChCRGVhdGhUZXN0LCBBKSB7fQotVEVTVChCRGVh
dGhUZXN0LCBCKSB7fQotCi1URVNUKEMsIEEpIHt9Ci1URVNUKEMsIEIpIHt9Ci1URVNUKEMsIEMp
IHt9Ci1URVNUKEMsIERJU0FCTEVEX0QpIHt9Ci0KLVRFU1QoQ0RlYXRoVGVzdCwgQSkge30KLQot
VEVTVChESVNBQkxFRF9ELCBBKSB7fQotVEVTVChESVNBQkxFRF9ELCBESVNBQkxFRF9CKSB7fQot
Ci0vLyBUaGlzIHByaW50ZXIgcHJpbnRzIHRoZSBmdWxsIHRlc3QgbmFtZXMgb25seSwgc3RhcnRp
bmcgZWFjaCB0ZXN0Ci0vLyBpdGVyYXRpb24gd2l0aCBhICItLS0tIiBtYXJrZXIuCi1jbGFzcyBU
ZXN0TmFtZVByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7Ci0gcHVibGlj
OgotICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8q
IHVuaXRfdGVzdCAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAv
KiBpdGVyYXRpb24gKi8pIHsKLSAgICBwcmludGYoIi0tLS1cbiIpOwotICB9Ci0KLSAgdmlydHVh
bCB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKLSAgICBwcmlu
dGYoIiVzLiVzXG4iLCB0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUo
KSk7Ci0gIH0KLX07Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hh
ciAqKmFyZ3YpIHsKLSAgSW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIC8vIFJlcGxh
Y2VzIHRoZSBkZWZhdWx0IHByaW50ZXIgd2l0aCBUZXN0TmFtZVByaW50ZXIsIHdoaWNoIHByaW50
cwotICAvLyB0aGUgdGVzdCBuYW1lIG9ubHkuCi0gIFRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVu
ZXJzID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpOwotICBkZWxldGUgbGlz
dGVuZXJzLlJlbGVhc2UobGlzdGVuZXJzLmRlZmF1bHRfcmVzdWx0X3ByaW50ZXIoKSk7Ci0gIGxp
c3RlbmVycy5BcHBlbmQobmV3IFRlc3ROYW1lUHJpbnRlcik7Ci0KLSAgcmV0dXJuIFJVTl9BTExf
VEVTVFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3Rfc29sZV9oZWFkZXJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3Rfc29sZV9oZWFkZXJfdGVzdC5jYwppbmRleCBkZTkxZTgwMGY1YTEzODI5OTlmYzIwMWY1Y2Yz
Y2UwNDY0Y2FhMWNlLi4xZDk0YWM2YjNhZDlmOWY3ZGJhZGJmYjJiZjc0OWI4MjcxNTYwZGFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3NvbGVfaGVhZGVy
X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zb2xlX2hl
YWRlcl90ZXN0LmNjCkBAIC0yNiwxMyArMjYsMTIgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IG1oZXVsZUBnb29nbGUuY29t
IChNYXJrdXMgSGV1bGUpCisKIC8vCiAvLyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBpdCdzIHBv
c3NpYmxlIHRvIHVzZSBHb29nbGUgVGVzdCBieSBpbmNsdWRpbmcKIC8vIHRoZSBndGVzdC5oIGhl
YWRlciBmaWxlIGFsb25lLgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2UgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3N0cmVzc190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9zdHJlc3NfdGVzdC5jYwppbmRleCBmNWFmNzhjYzZkM2YzOTVhMDBk
NGQxY2U4NTk5ZmE1ZjFkZmE3NjI2Li45NWFkYTM5YzMzN2QwZDRlY2U2ZmY1YjMyMzJkZTk2YzNk
NTk4NmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3N0
cmVzc190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc3Ry
ZXNzX3Rlc3QuY2MKQEAgLTI2LDIzICsyNiwxNiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbikKKwogCiAvLyBUZXN0cyB0aGF0IFNDT1BFRF9UUkFDRSgpIGFuZCB2YXJpb3Vz
IEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgY2FuIGJlCiAvLyB1c2VkIGluIGEgbGFyZ2UgbnVtYmVy
IG9mIHRocmVhZHMgY29uY3VycmVudGx5LgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNp
bmNsdWRlICJndGVzdC9ndGVzdC5oIgogCi0jaW5jbHVkZSA8aW9zdHJlYW0+CiAjaW5jbHVkZSA8
dmVjdG9yPgogCi0vLyBXZSBtdXN0IGRlZmluZSB0aGlzIG1hY3JvIGluIG9yZGVyIHRvICNpbmNs
dWRlCi0vLyBndGVzdC1pbnRlcm5hbC1pbmwuaC4gIFRoaXMgaXMgaG93IEdvb2dsZSBUZXN0IHBy
ZXZlbnRzIGEgdXNlciBmcm9tCi0vLyBhY2NpZGVudGFsbHkgZGVwZW5kaW5nIG9uIGl0cyBpbnRl
cm5hbCBpbXBsZW1lbnRhdGlvbi4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKICNp
bmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5U
QVRJT05fCiAKICNpZiBHVEVTVF9JU19USFJFQURTQUZFCiAKQEAgLTUwLDcgKzQzLDYgQEAgbmFt
ZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIHsKIAogdXNpbmcgaW50ZXJuYWw6Ok5vdGlmaWNh
dGlvbjsKLXVzaW5nIGludGVybmFsOjpTdHJpbmc7CiB1c2luZyBpbnRlcm5hbDo6VGVzdFByb3Bl
cnR5S2V5SXM7CiB1c2luZyBpbnRlcm5hbDo6VGhyZWFkV2l0aFBhcmFtOwogdXNpbmcgaW50ZXJu
YWw6OnNjb3BlZF9wdHI7CkBAIC02MiwxMyArNTQsMTMgQEAgdXNpbmcgaW50ZXJuYWw6OnNjb3Bl
ZF9wdHI7CiAvLyBIb3cgbWFueSB0aHJlYWRzIHRvIGNyZWF0ZT8KIGNvbnN0IGludCBrVGhyZWFk
Q291bnQgPSA1MDsKIAotU3RyaW5nIElkVG9LZXkoaW50IGlkLCBjb25zdCBjaGFyKiBzdWZmaXgp
IHsKK3N0ZDo6c3RyaW5nIElkVG9LZXkoaW50IGlkLCBjb25zdCBjaGFyKiBzdWZmaXgpIHsKICAg
TWVzc2FnZSBrZXk7CiAgIGtleSA8PCAia2V5XyIgPDwgaWQgPDwgIl8iIDw8IHN1ZmZpeDsKICAg
cmV0dXJuIGtleS5HZXRTdHJpbmcoKTsKIH0KIAotU3RyaW5nIElkVG9TdHJpbmcoaW50IGlkKSB7
CitzdGQ6OnN0cmluZyBJZFRvU3RyaW5nKGludCBpZCkgewogICBNZXNzYWdlIGlkX21lc3NhZ2U7
CiAgIGlkX21lc3NhZ2UgPDwgaWQ7CiAgIHJldHVybiBpZF9tZXNzYWdlLkdldFN0cmluZygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0X21hY3Jv
X3N0YWNrX2Zvb3RwcmludF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF90ZXN0X21hY3JvX3N0YWNrX2Zvb3RwcmludF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0OGRi
MDUwMTJjYzMwZTBlZGY0YTEzNTRmZjM5MmM5MmQwMDBiZjAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RfbWFjcm9fc3RhY2tfZm9vdHBy
aW50X3Rlc3QuY2MKQEAgLTAsMCArMSw4OSBAQAorLy8gQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJ
bmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gRWFjaCBURVNUKCkgZXhwYW5kcyB0byBzb21lIHN0
YXRpYyByZWdpc3RyYXRpb24gbG9naWMuICBHQ0MgcHV0cyBhbGwKKy8vIHN1Y2ggc3RhdGljIGlu
aXRpYWxpemF0aW9uIGxvZ2ljIGZvciBhIHRyYW5zbGF0aW9uIHVuaXQgaW4gYSBjb21tb24sCisv
LyBpbnRlcm5hbCBmdW5jdGlvbi4gIFNpbmNlIEdvb2dsZSdzIGJ1aWxkIHN5c3RlbSByZXN0cmlj
dHMgaG93IG11Y2gKKy8vIHN0YWNrIHNwYWNlIGEgZnVuY3Rpb24gY2FuIHVzZSwgdGhlcmUncyBh
IGxpbWl0IG9uIGhvdyBtYW55IFRFU1QoKXMKKy8vIG9uZSBjYW4gcHV0IGluIGEgc2luZ2xlIEMr
KyB0ZXN0IGZpbGUuICBUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IGEgbGFyZ2UKKy8vIG51bWJlciBv
ZiBURVNUKClzIGNhbiBiZSBkZWZpbmVkIGluIHRoZSBzYW1lIHRyYW5zbGF0aW9uIHVuaXQuCisK
KyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisvLyBUaGlzIG1hY3JvIGRlZmluZXMgMTAgZHVt
bXkgdGVzdHMuCisjZGVmaW5lIFRFTl9URVNUU18odGVzdF9jYXNlX25hbWUpIFwKKyAgVEVTVCh0
ZXN0X2Nhc2VfbmFtZSwgVDApIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDEpIHt9IFwK
KyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDIpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwg
VDMpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDQpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nh
c2VfbmFtZSwgVDUpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDYpIHt9IFwKKyAgVEVT
VCh0ZXN0X2Nhc2VfbmFtZSwgVDcpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDgpIHt9
IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDkpIHt9CisKKy8vIFRoaXMgbWFjcm8gZGVmaW5l
cyAxMDAgZHVtbXkgdGVzdHMuCisjZGVmaW5lIEhVTkRSRURfVEVTVFNfKHRlc3RfY2FzZV9uYW1l
X3ByZWZpeCkgXAorICBURU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyAwKSBcCisg
IFRFTl9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDEpIFwKKyAgVEVOX1RFU1RTXyh0
ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgMikgXAorICBURU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1l
X3ByZWZpeCAjIyAzKSBcCisgIFRFTl9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDQp
IFwKKyAgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgNSkgXAorICBURU5fVEVT
VFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyA2KSBcCisgIFRFTl9URVNUU18odGVzdF9jYXNl
X25hbWVfcHJlZml4ICMjIDcpIFwKKyAgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXgg
IyMgOCkgXAorICBURU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyA5KQorCisvLyBU
aGlzIG1hY3JvIGRlZmluZXMgMTAwMCBkdW1teSB0ZXN0cy4KKyNkZWZpbmUgVEhPVVNBTkRfVEVT
VFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCkgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2Vf
bmFtZV9wcmVmaXggIyMgMCkgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVm
aXggIyMgMSkgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgMikg
XAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgMykgXAorICBIVU5E
UkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgNCkgXAorICBIVU5EUkVEX1RFU1RT
Xyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgNSkgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nh
c2VfbmFtZV9wcmVmaXggIyMgNikgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9w
cmVmaXggIyMgNykgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMg
OCkgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgOSkKKworLy8g
RW5zdXJlcyB0aGF0IHdlIGNhbiBkZWZpbmUgMTAwMCBURVNUKClzIGluIHRoZSBzYW1lIHRyYW5z
bGF0aW9uCisvLyB1bml0LgorVEhPVVNBTkRfVEVTVFNfKFQpCisKK2ludCBtYWluKGludCBhcmdj
LCBjaGFyICoqYXJndikgeworICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7
CisKKyAgLy8gV2UgZG9uJ3QgYWN0dWFsbHkgbmVlZCB0byBydW4gdGhlIGR1bW15IHRlc3RzIC0g
dGhlIHB1cnBvc2UgaXMgdG8KKyAgLy8gZW5zdXJlIHRoYXQgdGhleSBjb21waWxlLgorICByZXR1
cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
dGVzdF91dGlscy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGVzdF91
dGlscy5weQppbmRleCBlMGY1OTczZTdlYTZmODFlNjY2YzMxMjFjM2M4ZmE4NDNmNDM0ZjYxLi40
M2NiYThmNGNkNjFkZmZmM2ExYTUyMTAxYmVkM2U3MzRhNWUxYjU0IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rlc3RfdXRpbHMucHkKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5CkBAIC0xLDUgKzEsMyBA
QAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCiAjIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5j
LgogIyBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwpAQCAtMjksMjAgKzI3LDIxIEBACiAjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0iIiJVbml0IHRlc3QgdXRpbGl0aWVzIGZvciBHb29n
bGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrLiIiIgorIiIiVW5pdCB0ZXN0IHV0aWxpdGllcyBmb3Ig
R29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yay4iIiIKKyMgU3VwcHJlc3Nl
cyB0aGUgJ0ltcG9ydCBub3QgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZScgbGludCBjb21wbGFpbnQu
CisjIHB5bGludDogZGlzYWJsZS1tc2c9QzYyMDQKKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCiAK
LV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCitJU19XSU5ET1dT
ID0gb3MubmFtZSA9PSAnbnQnCitJU19DWUdXSU4gPSBvcy5uYW1lID09ICdwb3NpeCcgYW5kICdD
WUdXSU4nIGluIG9zLnVuYW1lKClbMF0KIAogaW1wb3J0IGF0ZXhpdAotaW1wb3J0IG9zCiBpbXBv
cnQgc2h1dGlsCi1pbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKLWltcG9ydCB1bml0dGVzdAot
X3Rlc3RfbW9kdWxlID0gdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdCBhcyBfdGVzdF9tb2R1bGUK
IAotIyBTdXBwcmVzc2VzIHRoZSAnSW1wb3J0IG5vdCBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlJyBs
aW50IGNvbXBsYWludC4KLSMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjIwNAogdHJ5OgogICBpbXBv
cnQgc3VicHJvY2VzcwogICBfU1VCUFJPQ0VTU19NT0RVTEVfQVZBSUxBQkxFID0gVHJ1ZQpAQCAt
NTMsMTggKzUyLDMwIEBAIGV4Y2VwdDoKIAogR1RFU1RfT1VUUFVUX1ZBUl9OQU1FID0gJ0dURVNU
X09VVFBVVCcKIAotSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250JwotSVNfQ1lHV0lOID0gb3Mu
bmFtZSA9PSAncG9zaXgnIGFuZCAnQ1lHV0lOJyBpbiBvcy51bmFtZSgpWzBdCisjIFRoZSBlbnZp
cm9ubWVudCB2YXJpYWJsZSBmb3Igc3BlY2lmeWluZyB0aGUgcGF0aCB0byB0aGUgcHJlbWF0dXJl
LWV4aXQgZmlsZS4KK1BSRU1BVFVSRV9FWElUX0ZJTEVfRU5WX1ZBUiA9ICdURVNUX1BSRU1BVFVS
RV9FWElUX0ZJTEUnCisKK2Vudmlyb24gPSBvcy5lbnZpcm9uLmNvcHkoKQorCisKK2RlZiBTZXRF
bnZWYXIoZW52X3ZhciwgdmFsdWUpOgorICAiIiJTZXRzL3Vuc2V0cyBhbiBlbnZpcm9ubWVudCB2
YXJpYWJsZSB0byBhIGdpdmVuIHZhbHVlLiIiIgorCisgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgor
ICAgIGVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQorICBlbGlmIGVudl92YXIgaW4gZW52aXJvbjoK
KyAgICBkZWwgZW52aXJvbltlbnZfdmFyXQorCiAKICMgSGVyZSB3ZSBleHBvc2UgYSBjbGFzcyBm
cm9tIGEgcGFydGljdWxhciBtb2R1bGUsIGRlcGVuZGluZyBvbiB0aGUKICMgZW52aXJvbm1lbnQu
IFRoZSBjb21tZW50IHN1cHByZXNzZXMgdGhlICdJbnZhbGlkIHZhcmlhYmxlIG5hbWUnIGxpbnQK
ICMgY29tcGxhaW50LgotVGVzdENhc2UgPSBfdGVzdF9tb2R1bGUuVGVzdENhc2UgICMgcHlsaW50
OiBkaXNhYmxlLW1zZz1DNjQwOQorVGVzdENhc2UgPSBfdGVzdF9tb2R1bGUuVGVzdENhc2UgICMg
cHlsaW50OiBkaXNhYmxlPUM2NDA5CiAKICMgSW5pdGlhbGx5IG1hcHMgYSBmbGFnIHRvIGl0cyBk
ZWZhdWx0IHZhbHVlLiBBZnRlcgogIyBfUGFyc2VBbmRTdHJpcEdUZXN0RmxhZ3MoKSBpcyBjYWxs
ZWQsIG1hcHMgYSBmbGFnIHRvIGl0cyBhY3R1YWwgdmFsdWUuCi1fZmxhZ19tYXAgPSB7J2d0ZXN0
X3NvdXJjZV9kaXInOiBvcy5wYXRoLmRpcm5hbWUoc3lzLmFyZ3ZbMF0pLAotICAgICAgICAgICAg
ICdndGVzdF9idWlsZF9kaXInOiBvcy5wYXRoLmRpcm5hbWUoc3lzLmFyZ3ZbMF0pfQorX2ZsYWdf
bWFwID0geydzb3VyY2VfZGlyJzogb3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2WzBdKSwKKyAgICAg
ICAgICAgICAnYnVpbGRfZGlyJzogb3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2WzBdKX0KIF9ndGVz
dF9mbGFnc19hcmVfcGFyc2VkID0gRmFsc2UKIAogCkBAIC03Myw3ICs4NCw3IEBAIGRlZiBfUGFy
c2VBbmRTdHJpcEdUZXN0RmxhZ3MoYXJndik6CiAKICAgIyBTdXBwcmVzc2VzIHRoZSBsaW50IGNv
bXBsYWludCBhYm91dCBhIGdsb2JhbCB2YXJpYWJsZSBzaW5jZSB3ZSBuZWVkIGl0CiAgICMgaGVy
ZSB0byBtYWludGFpbiBtb2R1bGUtd2lkZSBzdGF0ZS4KLSAgZ2xvYmFsIF9ndGVzdF9mbGFnc19h
cmVfcGFyc2VkICAjIHB5bGludDogZGlzYWJsZS1tc2c9VzA2MDMKKyAgZ2xvYmFsIF9ndGVzdF9m
bGFnc19hcmVfcGFyc2VkICAjIHB5bGludDogZGlzYWJsZT1XMDYwMwogICBpZiBfZ3Rlc3RfZmxh
Z3NfYXJlX3BhcnNlZDoKICAgICByZXR1cm4KIApAQCAtMTExLDEzICsxMjIsMTMgQEAgZGVmIEdl
dEZsYWcoZmxhZyk6CiBkZWYgR2V0U291cmNlRGlyKCk6CiAgICIiIlJldHVybnMgdGhlIGFic29s
dXRlIHBhdGggb2YgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgLnB5IGZpbGVzIGFyZS4iIiIKIAot
ICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKEdldEZsYWcoJ2d0ZXN0X3NvdXJjZV9kaXInKSkKKyAg
cmV0dXJuIG9zLnBhdGguYWJzcGF0aChHZXRGbGFnKCdzb3VyY2VfZGlyJykpCiAKIAogZGVmIEdl
dEJ1aWxkRGlyKCk6CiAgICIiIlJldHVybnMgdGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGRpcmVj
dG9yeSB3aGVyZSB0aGUgdGVzdCBiaW5hcmllcyBhcmUuIiIiCiAKLSAgcmV0dXJuIG9zLnBhdGgu
YWJzcGF0aChHZXRGbGFnKCdndGVzdF9idWlsZF9kaXInKSkKKyAgcmV0dXJuIG9zLnBhdGguYWJz
cGF0aChHZXRGbGFnKCdidWlsZF9kaXInKSkKIAogCiBfdGVtcF9kaXIgPSBOb25lCkBAIC0xMzAs
OCArMTQxLDYgQEAgYXRleGl0LnJlZ2lzdGVyKF9SZW1vdmVUZW1wRGlyKQogCiAKIGRlZiBHZXRU
ZW1wRGlyKCk6Ci0gICIiIlJldHVybnMgYSBkaXJlY3RvcnkgZm9yIHRlbXBvcmFyeSBmaWxlcy4i
IiIKLQogICBnbG9iYWwgX3RlbXBfZGlyCiAgIGlmIG5vdCBfdGVtcF9kaXI6CiAgICAgX3RlbXBf
ZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCkBAIC0xNjAsMTMgKzE2OSw5IEBAIGRlZiBHZXRUZXN0
RXhlY3V0YWJsZVBhdGgoZXhlY3V0YWJsZV9uYW1lLCBidWlsZF9kaXI9Tm9uZSk6CiAKICAgaWYg
bm90IG9zLnBhdGguZXhpc3RzKHBhdGgpOgogICAgIG1lc3NhZ2UgPSAoCi0gICAgICAgICdVbmFi
bGUgdG8gZmluZCB0aGUgdGVzdCBiaW5hcnkuIFBsZWFzZSBtYWtlIHN1cmUgdG8gcHJvdmlkZSBw
YXRoXG4nCi0gICAgICAgICd0byB0aGUgYmluYXJ5IHZpYSB0aGUgLS1ndGVzdF9idWlsZF9kaXIg
ZmxhZyBvciB0aGUgR1RFU1RfQlVJTERfRElSXG4nCi0gICAgICAgICdlbnZpcm9ubWVudCB2YXJp
YWJsZS4gRm9yIGNvbnZlbmllbnQgdXNlLCBpbnZva2UgdGhpcyBzY3JpcHQgdmlhXG4nCi0gICAg
ICAgICdta190ZXN0LnB5LlxuJwotICAgICAgICAjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IGNo
YW5nZSBta190ZXN0LnB5IHRvIHRlc3QucHkgYWZ0ZXIgcmVuYW1pbmcKLSAgICAgICAgIyB0aGUg
ZmlsZS4KLSAgICAgICAgJ1BsZWFzZSBydW4gbWtfdGVzdC5weSAtaCBmb3IgaGVscC4nKQorICAg
ICAgICAnVW5hYmxlIHRvIGZpbmQgdGhlIHRlc3QgYmluYXJ5ICIlcyIuIFBsZWFzZSBtYWtlIHN1
cmUgdG8gcHJvdmlkZVxuJworICAgICAgICAnYSBwYXRoIHRvIHRoZSBiaW5hcnkgdmlhIHRoZSAt
LWJ1aWxkX2RpciBmbGFnIG9yIHRoZSBCVUlMRF9ESVJcbicKKyAgICAgICAgJ2Vudmlyb25tZW50
IHZhcmlhYmxlLicgJSBwYXRoKQogICAgIHByaW50ID4+IHN5cy5zdGRlcnIsIG1lc3NhZ2UKICAg
ICBzeXMuZXhpdCgxKQogCkBAIC0yMzQsNyArMjM5LDcgQEAgY2xhc3MgU3VicHJvY2VzczoKICAg
ICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNvbW1hbmQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3RkZXJyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3dkPXdvcmtpbmdfZGlyLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwg
ZW52PWVudikKLSAgICAgICMgY29tbXVuaWNhdGUgcmV0dXJucyBhIHR1cGxlIHdpdGggdGhlIGZp
bGUgb2JlY3QgZm9yIHRoZSBjaGlsZCdzCisgICAgICAjIGNvbW11bmljYXRlIHJldHVybnMgYSB0
dXBsZSB3aXRoIHRoZSBmaWxlIG9iamVjdCBmb3IgdGhlIGNoaWxkJ3MKICAgICAgICMgb3V0cHV0
LgogICAgICAgc2VsZi5vdXRwdXQgPSBwLmNvbW11bmljYXRlKClbMF0KICAgICAgIHNlbGYuX3Jl
dHVybl9jb2RlID0gcC5yZXR1cm5jb2RlCkBAIC0yNDUsNyArMjUwLDcgQEAgY2xhc3MgU3VicHJv
Y2VzczoKICAgICAgICAgIyBDaGFuZ2VzIG1hZGUgYnkgb3MuZW52aXJvbi5jbGVhciBhcmUgbm90
IGluaGVyaXRhYmxlIGJ5IGNoaWxkCiAgICAgICAgICMgcHJvY2Vzc2VzIHVudGlsIFB5dGhvbiAy
LjYuIFRvIHByb2R1Y2UgaW5oZXJpdGFibGUgY2hhbmdlcyB3ZSBoYXZlCiAgICAgICAgICMgdG8g
ZGVsZXRlIGVudmlyb25tZW50IGl0ZW1zIHdpdGggdGhlIGRlbCBzdGF0ZW1lbnQuCi0gICAgICAg
IGZvciBrZXkgaW4gZGVzdDoKKyAgICAgICAgZm9yIGtleSBpbiBkZXN0LmtleXMoKToKICAgICAg
ICAgICBkZWwgZGVzdFtrZXldCiAgICAgICAgIGRlc3QudXBkYXRlKHNyYykKIApAQCAtMzAxLDcg
KzMwNiw3IEBAIGRlZiBNYWluKCk6CiAgIF9QYXJzZUFuZFN0cmlwR1Rlc3RGbGFncyhzeXMuYXJn
dikKICAgIyBUaGUgdGVzdGVkIGJpbmFyaWVzIHNob3VsZCBub3QgYmUgd3JpdGluZyBYTUwgb3V0
cHV0IGZpbGVzIHVubGVzcyB0aGUKICAgIyBzY3JpcHQgZXhwbGljaXRseSBpbnN0cnVjdHMgdGhl
bSB0by4KLSAgIyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBNb3ZlIHRoaXMgaW50byBTdWJwcm9j
ZXNzIHdoZW4gd2UgaW1wbGVtZW50CisgICMgRklYTUU6IE1vdmUgdGhpcyBpbnRvIFN1YnByb2Nl
c3Mgd2hlbiB3ZSBpbXBsZW1lbnQKICAgIyBwYXNzaW5nIGVudmlyb25tZW50IGludG8gaXQgYXMg
YSBwYXJhbWV0ZXIuCiAgIGlmIEdURVNUX09VVFBVVF9WQVJfTkFNRSBpbiBvcy5lbnZpcm9uOgog
ICAgIGRlbCBvcy5lbnZpcm9uW0dURVNUX09VVFBVVF9WQVJfTkFNRV0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGVzdGJyaWRnZV90ZXN0LnB5IGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0YnJpZGdlX3Rlc3QucHkKbmV3IGZp
bGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODdmZmFkNzNkNDAwNjUyOThmMzA1MDBkZTgyNGQ4MDhiNjU3MWQ4ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGVzdGJyaWRnZV90
ZXN0LnB5CkBAIC0wLDAgKzEsNjMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5
cmlnaHQgMjAxOCBHb29nbGUgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3QgdXNlcyBmaWx0ZXIgcHJvdmlkZWQg
dmlhIHRlc3RicmlkZ2UuIiIiCisKK2ltcG9ydCBvcworCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGls
cworCitiaW5hcnlfbmFtZSA9ICdndGVzdF90ZXN0YnJpZGdlX3Rlc3RfJworQ09NTUFORCA9IGd0
ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKGJpbmFyeV9uYW1lKQorVEVTVEJS
SURHRV9OQU1FID0gJ1RFU1RCUklER0VfVEVTVF9PTkxZJworCisKK2RlZiBBc3NlcnQoY29uZGl0
aW9uKToKKyAgaWYgbm90IGNvbmRpdGlvbjoKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCisK
K2NsYXNzIEdUZXN0VGVzdEZpbHRlclRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisK
KyAgZGVmIHRlc3RUZXN0RXhlY3V0aW9uSXNGaWx0ZXJlZChzZWxmKToKKyAgICAiIiJUZXN0cyB0
aGF0IHRoZSB0ZXN0IGZpbHRlciBpcyBwaWNrZWQgdXAgZnJvbSB0aGUgdGVzdGJyaWRnZSBlbnYg
dmFyLiIiIgorICAgIHN1YnByb2Nlc3NfZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKKworICAgIHN1
YnByb2Nlc3NfZW52W1RFU1RCUklER0VfTkFNRV0gPSAnKi5UZXN0VGhhdFN1Y2NlZWRzJworICAg
IHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoQ09NTUFORCwgZW52PXN1YnByb2Nlc3Nf
ZW52KQorCisgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwgcC5leGl0X2NvZGUpCisKKyAgICBBc3Nl
cnQoJ2ZpbHRlciA9ICouVGVzdFRoYXRTdWNjZWVkcycgaW4gcC5vdXRwdXQpCisgICAgQXNzZXJ0
KCdbICAgICAgIE9LIF0gVGVzdEZpbHRlclRlc3QuVGVzdFRoYXRTdWNjZWVkcycgaW4gcC5vdXRw
dXQpCisgICAgQXNzZXJ0KCdbICBQQVNTRUQgIF0gMSB0ZXN0LicgaW4gcC5vdXRwdXQpCisKKwor
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGVzdGJyaWRnZV90
ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGVzdGJyaWRnZV90
ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yNDYxN2IyMDllMTBhOWQxNzk4MzY4ZTI2NDY1YWFhNjI3MTVm
MGVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF90ZXN0YnJpZGdlX3Rlc3RfLmNjCkBAIC0wLDAgKzEsNDMgQEAKKy8vIENvcHlyaWdodCAyMDE4
LCBHb29nbGUgTExDLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBUaGlzIHByb2dyYW0gaXMgbWVhbnQg
dG8gYmUgcnVuIGJ5IGd0ZXN0X3Rlc3RfZmlsdGVyX3Rlc3QucHkuICBEbyBub3QgcnVuCisvLyBp
dCBkaXJlY3RseS4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKy8vIFRoZXNlIHRlc3Rz
IGFyZSB1c2VkIHRvIGRldGVjdCBpZiBmaWx0ZXJpbmcgaXMgd29ya2luZy4gT25seQorLy8gJ1Rl
c3RUaGF0U3VjY2VlZHMnIHNob3VsZCBldmVyIHJ1bi4KKworVEVTVChUZXN0RmlsdGVyVGVzdCwg
VGVzdFRoYXRTdWNjZWVkcykge30KKworVEVTVChUZXN0RmlsdGVyVGVzdCwgVGVzdFRoYXRGYWls
cykgeworICBBU1NFUlRfVFJVRShmYWxzZSkgPDwgIlRoaXMgdGVzdCBzaG91bGQgbmV2ZXIgYmUg
cnVuLiI7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X3Rocm93X29uX2ZhaWx1cmVfZXhfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9leF90ZXN0LmNjCmluZGV4IDhiZjlkYzkwNWI1ZmY4
M2FjMDIxMDQxMzQzNTgwZjkwOTc1NDgzY2UuLjkzZjU5ZDQ5Y2ZkYjk0NzRkY2E2MjJjMTdhMmM5
NjRhYjBiZDU4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfdGhyb3dfb25fZmFpbHVyZV9leF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9leF90ZXN0LmNjCkBAIC0yNiwxMiArMjYs
MTEgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8v
Ci0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogLy8gVGVzdHMg
R29vZ2xlIFRlc3QncyB0aHJvdy1vbi1mYWlsdXJlIG1vZGUgd2l0aCBleGNlcHRpb25zIGVuYWJs
ZWQuCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
CiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdGRpby5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3Qu
cHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVf
dGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNTY3OGZmZWFmNmZhNjFlZjdk
Y2I0NWI4ZjM0YTAzNDExOTFhYmY2ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29u
X2ZhaWx1cmVfdGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0jIS91c3Iv
YmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoK
LSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJUZXN0cyBHb29nbGUgVGVz
dCdzIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQuCi0KLVRo
aXMgc2NyaXB0IGludm9rZXMgZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0XyAoYSBwcm9ncmFt
IHdyaXR0ZW4gd2l0aAotR29vZ2xlIFRlc3QpIHdpdGggZGlmZmVyZW50IGVudmlyb25tZW50cyBh
bmQgY29tbWFuZCBsaW5lIGZsYWdzLgotIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBvcwotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMK
LQotCi0jIENvbnN0YW50cy4KLQotIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgZm9yIGVuYWJsaW5n
L2Rpc2FibGluZyB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLgotVEhST1dfT05fRkFJTFVSRSA9
ICdndGVzdF90aHJvd19vbl9mYWlsdXJlJwotCi0jIFBhdGggdG8gdGhlIGd0ZXN0X3Rocm93X29u
X2ZhaWx1cmVfdGVzdF8gcHJvZ3JhbSwgY29tcGlsZWQgd2l0aAotIyBleGNlcHRpb25zIGRpc2Fi
bGVkLgotRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgK
LSAgICAnZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0XycpCi0KLQotIyBVdGlsaXRpZXMuCi0K
LQotZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6Ci0gICIiIlNldHMgYW4gZW52aXJvbm1l
bnQgdmFyaWFibGUgdG8gYSBnaXZlbiB2YWx1ZTsgdW5zZXRzIGl0IHdoZW4gdGhlCi0gIGdpdmVu
IHZhbHVlIGlzIE5vbmUuCi0gICIiIgotCi0gIGVudl92YXIgPSBlbnZfdmFyLnVwcGVyKCkKLSAg
aWYgdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgb3MuZW52aXJvbltlbnZfdmFyXSA9IHZhbHVlCi0g
IGVsaWYgZW52X3ZhciBpbiBvcy5lbnZpcm9uOgotICAgIGRlbCBvcy5lbnZpcm9uW2Vudl92YXJd
Ci0KLQotZGVmIFJ1bihjb21tYW5kKToKLSAgIiIiUnVucyBhIGNvbW1hbmQ7IHJldHVybnMgVHJ1
ZS9GYWxzZSBpZiBpdHMgZXhpdCBjb2RlIGlzL2lzbid0IDAuIiIiCi0KLSAgcHJpbnQgJ1J1bm5p
bmcgIiVzIi4gLiAuJyAlICcgJy5qb2luKGNvbW1hbmQpCi0gIHAgPSBndGVzdF90ZXN0X3V0aWxz
LlN1YnByb2Nlc3MoY29tbWFuZCkKLSAgcmV0dXJuIHAuZXhpdGVkIGFuZCBwLmV4aXRfY29kZSA9
PSAwCi0KLQotIyBUaGUgdGVzdHMuICBUT0RPKHdhbkBnb29nbGUuY29tKTogcmVmYWN0b3IgdGhl
IGNsYXNzIHRvIHNoYXJlIGNvbW1vbgotIyBsb2dpYyB3aXRoIGNvZGUgaW4gZ3Rlc3RfYnJlYWtf
b25fZmFpbHVyZV91bml0dGVzdC5weS4KLWNsYXNzIFRocm93T25GYWlsdXJlVGVzdChndGVzdF90
ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAgIiIiVGVzdHMgdGhlIHRocm93LW9uLWZhaWx1cmUgbW9k
ZS4iIiIKLQotICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGVudl92YXJfdmFsdWUsIGZsYWdfdmFs
dWUsIHNob3VsZF9mYWlsKToKLSAgICAiIiJSdW5zIGd0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVz
dF8gYW5kIHZlcmlmaWVzIHRoYXQgaXQgZG9lcwotICAgIChvciBkb2VzIG5vdCkgZXhpdCB3aXRo
IGEgbm9uLXplcm8gY29kZS4KLQotICAgIEFyZ3M6Ci0gICAgICBlbnZfdmFyX3ZhbHVlOiAgICB2
YWx1ZSBvZiB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudAotICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyaWFibGU7IE5vbmUgaWYgdGhlIHZhcmlhYmxlIHNob3VsZCBiZSB1
bnNldC4KLSAgICAgIGZsYWdfdmFsdWU6ICAgICAgIHZhbHVlIG9mIHRoZSAtLWd0ZXN0X2JyZWFr
X29uX2ZhaWx1cmUgZmxhZzsKLSAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUgaWYgdGhlIGZs
YWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgotICAgICAgc2hvdWxkX2ZhaWw6ICAgICAgVHJ1ZSBp
ZmYgdGhlIHByb2dyYW0gaXMgZXhwZWN0ZWQgdG8gZmFpbC4KLSAgICAiIiIKLQotICAgIFNldEVu
dlZhcihUSFJPV19PTl9GQUlMVVJFLCBlbnZfdmFyX3ZhbHVlKQotCi0gICAgaWYgZW52X3Zhcl92
YWx1ZSBpcyBOb25lOgotICAgICAgZW52X3Zhcl92YWx1ZV9tc2cgPSAnIGlzIG5vdCBzZXQnCi0g
ICAgZWxzZToKLSAgICAgIGVudl92YXJfdmFsdWVfbXNnID0gJz0nICsgZW52X3Zhcl92YWx1ZQot
Ci0gICAgaWYgZmxhZ192YWx1ZSBpcyBOb25lOgotICAgICAgZmxhZyA9ICcnCi0gICAgZWxpZiBm
bGFnX3ZhbHVlID09ICcwJzoKLSAgICAgIGZsYWcgPSAnLS0lcz0wJyAlIFRIUk9XX09OX0ZBSUxV
UkUKLSAgICBlbHNlOgotICAgICAgZmxhZyA9ICctLSVzJyAlIFRIUk9XX09OX0ZBSUxVUkUKLQot
ICAgIGNvbW1hbmQgPSBbRVhFX1BBVEhdCi0gICAgaWYgZmxhZzoKLSAgICAgIGNvbW1hbmQuYXBw
ZW5kKGZsYWcpCi0KLSAgICBpZiBzaG91bGRfZmFpbDoKLSAgICAgIHNob3VsZF9vcl9ub3QgPSAn
c2hvdWxkJwotICAgIGVsc2U6Ci0gICAgICBzaG91bGRfb3Jfbm90ID0gJ3Nob3VsZCBub3QnCi0K
LSAgICBmYWlsZWQgPSBub3QgUnVuKGNvbW1hbmQpCi0KLSAgICBTZXRFbnZWYXIoVEhST1dfT05f
RkFJTFVSRSwgTm9uZSkKLQotICAgIG1zZyA9ICgnd2hlbiAlcyVzLCBhbiBhc3NlcnRpb24gZmFp
bHVyZSBpbiAiJXMiICVzIGNhdXNlIGEgbm9uLXplcm8gJwotICAgICAgICAgICAnZXhpdCBjb2Rl
LicgJQotICAgICAgICAgICAoVEhST1dfT05fRkFJTFVSRSwgZW52X3Zhcl92YWx1ZV9tc2csICcg
Jy5qb2luKGNvbW1hbmQpLAotICAgICAgICAgICAgc2hvdWxkX29yX25vdCkpCi0gICAgc2VsZi5h
c3NlcnRfKGZhaWxlZCA9PSBzaG91bGRfZmFpbCwgbXNnKQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJl
aGF2aW9yKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBt
b2RlLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLCBmbGFn
X3ZhbHVlPU5vbmUsIHNob3VsZF9mYWlsPUZhbHNlKQotCi0gIGRlZiB0ZXN0VGhyb3dPbkZhaWx1
cmVFbnZWYXIoc2VsZik6Ci0gICAgIiIiVGVzdHMgdXNpbmcgdGhlIEdURVNUX1RIUk9XX09OX0ZB
SUxVUkUgZW52aXJvbm1lbnQgdmFyaWFibGUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShl
bnZfdmFyX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPU5vbmUs
Ci0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9RmFsc2UpCi0gICAgc2VsZi5SdW5B
bmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192
YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPVRydWUpCi0KLSAg
ZGVmIHRlc3RUaHJvd09uRmFpbHVyZUZsYWcoc2VsZik6Ci0gICAgIiIiVGVzdHMgdXNpbmcgdGhl
IC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZSBmbGFnLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJp
ZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9
JzAnLAotICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPUZhbHNlKQotICAgIHNlbGYu
UnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBm
bGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1UcnVlKQot
Ci0gIGRlZiB0ZXN0VGhyb3dPbkZhaWx1cmVGbGFnT3ZlcnJpZGVzRW52VmFyKHNlbGYpOgotICAg
ICIiIlRlc3RzIHRoYXQgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlIG92ZXJyaWRlcyBHVEVTVF9U
SFJPV19PTl9GQUlMVVJFLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1
ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkX2ZhaWw9RmFsc2UpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52
X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCi0g
ICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9VHJ1ZSkKLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVl
PScwJywKLSAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1GYWxzZSkKLSAgICBzZWxm
LlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBm
bGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1UcnVlKQot
Ci0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29u
X2ZhaWx1cmVfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Ro
cm93X29uX2ZhaWx1cmVfdGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4
ZmJkNWE3NmRjOTIwNmY0YTAyOTUxNGI4NzZkYzAxNDFlMzZiZmEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3RfLmNjCisrKyAvZGV2L251bGwKQEAgLTEsNTYg
KzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
Ly8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8K
LS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gVGVzdHMgR29v
Z2xlIFRlc3QncyB0aHJvdy1vbi1mYWlsdXJlIG1vZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVk
LgotLy8KLS8vIFRoaXMgcHJvZ3JhbSBtdXN0IGJlIGNvbXBpbGVkIHdpdGggZXhjZXB0aW9ucyBk
aXNhYmxlZC4gIEl0IHdpbGwgYmUKLS8vIGludm9rZWQgYnkgZ3Rlc3RfdGhyb3dfb25fZmFpbHVy
ZV90ZXN0LnB5LCBhbmQgaXMgZXhwZWN0ZWQgdG8gZXhpdAotLy8gd2l0aCBub24temVybyBpbiB0
aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlIG9yIDAgb3RoZXJ3aXNlLgotCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIHRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICAvLyBXZSB3YW50IHRvIGVuc3Vy
ZSB0aGF0IHBlb3BsZSBjYW4gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW4KLSAgLy8gb3Ro
ZXIgdGVzdGluZyBmcmFtZXdvcmtzLCBhcyBsb25nIGFzIHRoZXkgaW5pdGlhbGl6ZSBHb29nbGUg
VGVzdAotICAvLyBwcm9wZXJseSBhbmQgc2V0IHRoZSB0aHJvd24tb24tZmFpbHVyZSBtb2RlLiAg
VGhlcmVmb3JlLCB3ZSBkb24ndAotICAvLyB1c2UgR29vZ2xlIFRlc3QncyBjb25zdHJ1Y3RzIGZv
ciBkZWZpbmluZyBhbmQgcnVubmluZyB0ZXN0cwotICAvLyAoZS5nLiBURVNUIGFuZCBSVU5fQUxM
X1RFU1RTKSBoZXJlLgotCi0gIC8vIEluIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUgd2l0aCBl
eGNlcHRpb25zIGRpc2FibGVkLCB0aGlzCi0gIC8vIGFzc2VydGlvbiB3aWxsIGNhdXNlIHRoZSBw
cm9ncmFtIHRvIGV4aXQgd2l0aCBhIG5vbi16ZXJvIGNvZGUuCi0gIEVYUEVDVF9FUSgyLCAzKTsK
LQotICAvLyBXaGVuIG5vdCBpbiB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLCB0aGUgY29udHJv
bCB3aWxsIHJlYWNoCi0gIC8vIGhlcmUuCi0gIHJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3QucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5weQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNmFlNTdlZWVkYWZjZjA3NTA0ZGQ4ZDVkN2E4
YjVhN2Y4MzgxM2YyNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVz
dC5weQorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhv
bgotIwotIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1
dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3Qgd2Fy
bnMgdGhlIHVzZXIgd2hlbiBub3QgaW5pdGlhbGl6ZWQgcHJvcGVybHkuIiIiCi0KLV9fYXV0aG9y
X18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBndGVzdF90ZXN0
X3V0aWxzCi0KLQotQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQ
YXRoKCdndGVzdF91bmluaXRpYWxpemVkX3Rlc3RfJykKLQotCi1kZWYgQXNzZXJ0KGNvbmRpdGlv
bik6Ci0gIGlmIG5vdCBjb25kaXRpb246Ci0gICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKLQotCi1k
ZWYgQXNzZXJ0RXEoZXhwZWN0ZWQsIGFjdHVhbCk6Ci0gIGlmIGV4cGVjdGVkICE9IGFjdHVhbDoK
LSAgICBwcmludCAnRXhwZWN0ZWQ6ICVzJyAlIChleHBlY3RlZCwpCi0gICAgcHJpbnQgJyAgQWN0
dWFsOiAlcycgJSAoYWN0dWFsLCkKLSAgICByYWlzZSBBc3NlcnRpb25FcnJvcgotCi0KLWRlZiBU
ZXN0RXhpdENvZGVBbmRPdXRwdXQoY29tbWFuZCk6Ci0gICIiIlJ1bnMgdGhlIGdpdmVuIGNvbW1h
bmQgYW5kIHZlcmlmaWVzIGl0cyBleGl0IGNvZGUgYW5kIG91dHB1dC4iIiIKLQotICAjIFZlcmlm
aWVzIHRoYXQgJ2NvbW1hbmQnIGV4aXRzIHdpdGggY29kZSAxLgotICBwID0gZ3Rlc3RfdGVzdF91
dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCi0gIEFzc2VydChwLmV4aXRlZCkKLSAgQXNzZXJ0RXEo
MSwgcC5leGl0X2NvZGUpCi0gIEFzc2VydCgnSW5pdEdvb2dsZVRlc3QnIGluIHAub3V0cHV0KQot
Ci0KLWNsYXNzIEdUZXN0VW5pbml0aWFsaXplZFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2Fz
ZSk6Ci0gIGRlZiB0ZXN0RXhpdENvZGVBbmRPdXRwdXQoc2VsZik6Ci0gICAgVGVzdEV4aXRDb2Rl
QW5kT3V0cHV0KENPTU1BTkQpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rl
c3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZThiMmFhODFkZDU0ZDljNjQzYTU4ZGU1ZTQ0ZDZjY2I1MjBhNzc2NS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdF8uY2MKKysrIC9kZXYvbnVs
bApAQCAtMSw0MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0v
LyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0v
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0j
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotVEVTVChEdW1teVRlc3QsIER1bW15KSB7Ci0gIC8v
IFRoaXMgdGVzdCBkb2Vzbid0IHZlcmlmeSBhbnl0aGluZy4gIFdlIGp1c3QgbmVlZCBpdCB0byBj
cmVhdGUgYQotICAvLyByZWFsaXN0aWMgc3RhZ2UgZm9yIHRlc3RpbmcgdGhlIGJlaGF2aW9yIG9m
IEdvb2dsZSBUZXN0IHdoZW4KLSAgLy8gUlVOX0FMTF9URVNUUygpIGlzIGNhbGxlZCB3aXRob3V0
IHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCkgYmVpbmcKLSAgLy8gY2FsbGVkIGZpcnN0LgotfQot
Ci1pbnQgbWFpbigpIHsKLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjCmluZGV4IGExNGYwNjVhMmNj
ZDg2Mzc5YTAxNDlhMzNmYzU2NDVjMGVjOGIxODEuLmY3MjEzZmJmM2U1ZTg3MjA4OWJmYjk4NTUx
YWMzYmEzZTNhNjdiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF91bml0dGVzdC5jYwpAQCAtMjYsMTggKzI2LDE2IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAo
WmhhbnlvbmcgV2FuKQorCiAvLwogLy8gVGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZi4gIFRo
aXMgdmVyaWZpZXMgdGhhdCB0aGUgYmFzaWMgY29uc3RydWN0cyBvZgogLy8gR29vZ2xlIFRlc3Qg
d29yay4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8dmVjdG9yPgorI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKLS8vIFZlcmlmaWVzIHRoYXQgdGhlIGNvbW1hbmQgbGlu
ZSBmbGFnIHZhcmlhYmxlcyBjYW4gYmUgYWNjZXNzZWQKLS8vIGluIGNvZGUgb25jZSA8Z3Rlc3Qv
Z3Rlc3QuaD4gaGFzIGJlZW4gI2luY2x1ZGVkLgotLy8gRG8gbm90IG1vdmUgaXQgYWZ0ZXIgb3Ro
ZXIgI2luY2x1ZGVzLgorLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29tbWFuZCBsaW5lIGZsYWcgdmFy
aWFibGVzIGNhbiBiZSBhY2Nlc3NlZCBpbgorLy8gY29kZSBvbmNlICJndGVzdC5oIiBoYXMgYmVl
biAjaW5jbHVkZWQuCisvLyBEbyBub3QgbW92ZSBpdCBhZnRlciBvdGhlciBndGVzdCAjaW5jbHVk
ZXMuCiBURVNUKENvbW1hbmRMaW5lRmxhZ3NUZXN0LCBDYW5CZUFjY2Vzc2VkSW5Db2RlT25jZUdU
ZXN0SElzSW5jbHVkZWQpIHsKICAgYm9vbCBkdW1teSA9IHRlc3Rpbmc6OkdURVNUX0ZMQUcoYWxz
b19ydW5fZGlzYWJsZWRfdGVzdHMpCiAgICAgICB8fCB0ZXN0aW5nOjpHVEVTVF9GTEFHKGJyZWFr
X29uX2ZhaWx1cmUpCkBAIC01MiwzMCArNTAsMTA1IEBAIFRFU1QoQ29tbWFuZExpbmVGbGFnc1Rl
c3QsIENhbkJlQWNjZXNzZWRJbkNvZGVPbmNlR1Rlc3RISXNJbmNsdWRlZCkgewogICAgICAgfHwg
dGVzdGluZzo6R1RFU1RfRkxBRyhzaG93X2ludGVybmFsX3N0YWNrX2ZyYW1lcykKICAgICAgIHx8
IHRlc3Rpbmc6OkdURVNUX0ZMQUcoc2h1ZmZsZSkKICAgICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZM
QUcoc3RhY2tfdHJhY2VfZGVwdGgpID4gMAorICAgICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyhz
dHJlYW1fcmVzdWx0X3RvKSAhPSAidW5rbm93biIKICAgICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZM
QUcodGhyb3dfb25fZmFpbHVyZSk7CiAgIEVYUEVDVF9UUlVFKGR1bW15IHx8ICFkdW1teSk7ICAv
LyBTdXBwcmVzc2VzIHdhcm5pbmcgdGhhdCBkdW1teSBpcyB1bnVzZWQuCiB9CiAKLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC1zcGkuaD4KLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlv
biB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBt
dXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3Ig
dGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJl
dmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlu
bC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNp
bmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5U
QVRJT05fCi0KICNpbmNsdWRlIDxsaW1pdHMuaD4gIC8vIEZvciBJTlRfTUFYLgogI2luY2x1ZGUg
PHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHRpbWUuaD4KIAogI2lu
Y2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSA8b3N0cmVhbT4KKyNpZiBH
VEVTVF9MQU5HX0NYWDExCisjaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KKyNlbmRpZiAgLy8gR1RF
U1RfTEFOR19DWFgxMQorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCisjaW5jbHVkZSAi
c3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiBuYW1lc3Bh
Y2UgaW50ZXJuYWwgewogCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworCitjbGFzcyBT
dHJlYW1pbmdMaXN0ZW5lclRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBjbGFzcyBG
YWtlU29ja2V0V3JpdGVyIDogcHVibGljIFN0cmVhbWluZ0xpc3RlbmVyOjpBYnN0cmFjdFNvY2tl
dFdyaXRlciB7CisgICBwdWJsaWM6CisgICAgLy8gU2VuZHMgYSBzdHJpbmcgdG8gdGhlIHNvY2tl
dC4KKyAgICB2aXJ0dWFsIHZvaWQgU2VuZChjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgeyBv
dXRwdXRfICs9IG1lc3NhZ2U7IH0KKworICAgIHN0ZDo6c3RyaW5nIG91dHB1dF87CisgIH07CisK
KyAgU3RyZWFtaW5nTGlzdGVuZXJUZXN0KCkKKyAgICAgIDogZmFrZV9zb2NrX3dyaXRlcl8obmV3
IEZha2VTb2NrZXRXcml0ZXIpLAorICAgICAgICBzdHJlYW1lcl8oZmFrZV9zb2NrX3dyaXRlcl8p
LAorICAgICAgICB0ZXN0X2luZm9fb2JqXygiRm9vVGVzdCIsICJCYXIiLCBOVUxMLCBOVUxMLAor
ICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb24oX19GSUxFX18sIF9fTElORV9fKSwg
MCwgTlVMTCkge30KKworIHByb3RlY3RlZDoKKyAgc3RkOjpzdHJpbmcqIG91dHB1dCgpIHsgcmV0
dXJuICYoZmFrZV9zb2NrX3dyaXRlcl8tPm91dHB1dF8pOyB9CisKKyAgRmFrZVNvY2tldFdyaXRl
ciogY29uc3QgZmFrZV9zb2NrX3dyaXRlcl87CisgIFN0cmVhbWluZ0xpc3RlbmVyIHN0cmVhbWVy
XzsKKyAgVW5pdFRlc3QgdW5pdF90ZXN0XzsKKyAgVGVzdEluZm8gdGVzdF9pbmZvX29ial87ICAv
LyBUaGUgbmFtZSB0ZXN0X2luZm9fIHdhcyB0YWtlbiBieSB0ZXN0aW5nOjpUZXN0LgorfTsKKwor
VEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25UZXN0UHJvZ3JhbUVuZCkgeworICAqb3V0
cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdFByb2dyYW1FbmQodW5pdF90ZXN0Xyk7Cisg
IEVYUEVDVF9FUSgiZXZlbnQ9VGVzdFByb2dyYW1FbmQmcGFzc2VkPTFcbiIsICpvdXRwdXQoKSk7
Cit9CisKK1RFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRlc3QsIE9uVGVzdEl0ZXJhdGlvbkVuZCkg
eworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdEl0ZXJhdGlvbkVuZCh1bml0
X3Rlc3RfLCA0Mik7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdEl0ZXJhdGlvbkVuZCZwYXNzZWQ9
MSZlbGFwc2VkX3RpbWU9MG1zXG4iLCAqb3V0cHV0KCkpOworfQorCitURVNUX0YoU3RyZWFtaW5n
TGlzdGVuZXJUZXN0LCBPblRlc3RDYXNlU3RhcnQpIHsKKyAgKm91dHB1dCgpID0gIiI7CisgIHN0
cmVhbWVyXy5PblRlc3RDYXNlU3RhcnQoVGVzdENhc2UoIkZvb1Rlc3QiLCAiQmFyIiwgTlVMTCwg
TlVMTCkpOworICBFWFBFQ1RfRVEoImV2ZW50PVRlc3RDYXNlU3RhcnQmbmFtZT1Gb29UZXN0XG4i
LCAqb3V0cHV0KCkpOworfQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RD
YXNlRW5kKSB7CisgICpvdXRwdXQoKSA9ICIiOworICBzdHJlYW1lcl8uT25UZXN0Q2FzZUVuZChU
ZXN0Q2FzZSgiRm9vVGVzdCIsICJCYXIiLCBOVUxMLCBOVUxMKSk7CisgIEVYUEVDVF9FUSgiZXZl
bnQ9VGVzdENhc2VFbmQmcGFzc2VkPTEmZWxhcHNlZF90aW1lPTBtc1xuIiwgKm91dHB1dCgpKTsK
K30KKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25UZXN0U3RhcnQpIHsKKyAgKm91
dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RTdGFydCh0ZXN0X2luZm9fb2JqXyk7Cisg
IEVYUEVDVF9FUSgiZXZlbnQ9VGVzdFN0YXJ0Jm5hbWU9QmFyXG4iLCAqb3V0cHV0KCkpOworfQor
CitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RFbmQpIHsKKyAgKm91dHB1dCgp
ID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RFbmQodGVzdF9pbmZvX29ial8pOworICBFWFBFQ1Rf
RVEoImV2ZW50PVRlc3RFbmQmcGFzc2VkPTEmZWxhcHNlZF90aW1lPTBtc1xuIiwgKm91dHB1dCgp
KTsKK30KKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25UZXN0UGFydFJlc3VsdCkg
eworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdFBhcnRSZXN1bHQoVGVzdFBh
cnRSZXN1bHQoCisgICAgICBUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwgImZvby5jYyIs
IDQyLCAiZmFpbGVkPVxuJiUiKSk7CisKKyAgLy8gTWV0YSBjaGFyYWN0ZXJzIGluIHRoZSBmYWls
dXJlIG1lc3NhZ2Ugc2hvdWxkIGJlIHByb3Blcmx5IGVzY2FwZWQuCisgIEVYUEVDVF9FUSgKKyAg
ICAgICJldmVudD1UZXN0UGFydFJlc3VsdCZmaWxlPWZvby5jYyZsaW5lPTQyJm1lc3NhZ2U9ZmFp
bGVkJTNEJTBBJTI2JTI1XG4iLAorICAgICAgKm91dHB1dCgpKTsKK30KKworI2VuZGlmICAvLyBH
VEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKIC8vIFByb3ZpZGVzIGFjY2VzcyB0byBvdGhlcndp
c2UgcHJpdmF0ZSBwYXJ0cyBvZiB0aGUgVGVzdEV2ZW50TGlzdGVuZXJzIGNsYXNzCiAvLyB0aGF0
IGFyZSBuZWVkZWQgdG8gdGVzdCBpdC4KIGNsYXNzIFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29y
IHsKQEAgLTEwMiw2ICsxNzUsMTggQEAgY2xhc3MgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3Ig
ewogICB9CiB9OwogCitjbGFzcyBVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdEhlbHBlciA6IHB1
YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0SGVs
cGVyKCkge30KKworICAvLyBGb3J3YXJkcyB0byBVbml0VGVzdDo6UmVjb3JkUHJvcGVydHkoKSB0
byBieXBhc3MgYWNjZXNzIGNvbnRyb2xzLgorICB2b2lkIFVuaXRUZXN0UmVjb3JkUHJvcGVydHko
Y29uc3QgY2hhcioga2V5LCBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpIHsKKyAgICB1bml0X3Rl
c3RfLlJlY29yZFByb3BlcnR5KGtleSwgdmFsdWUpOworICB9CisKKyAgVW5pdFRlc3QgdW5pdF90
ZXN0XzsKK307CisKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRl
c3RpbmcKIApAQCAtMTEwLDYgKzE5NSw3IEBAIHVzaW5nIHRlc3Rpbmc6OkFzc2VydGlvblJlc3Vs
dDsKIHVzaW5nIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3M7CiB1c2luZyB0ZXN0aW5nOjpEb3Vi
bGVMRTsKIHVzaW5nIHRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXI7Cit1c2luZyB0ZXN0
aW5nOjpFbnZpcm9ubWVudDsKIHVzaW5nIHRlc3Rpbmc6OkZsb2F0TEU7CiB1c2luZyB0ZXN0aW5n
OjpHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzKTsKIHVzaW5nIHRlc3Rpbmc6OkdU
RVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSk7CkBAIC0xMjUsNiArMjExLDcgQEAgdXNpbmcgdGVz
dGluZzo6R1RFU1RfRkxBRyhyZXBlYXQpOwogdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhzaG93
X2ludGVybmFsX3N0YWNrX2ZyYW1lcyk7CiB1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHNodWZm
bGUpOwogdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCk7Cit1c2lu
ZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pOwogdXNpbmcgdGVzdGluZzo6
R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKIHVzaW5nIHRlc3Rpbmc6OklzTm90U3Vic3Ry
aW5nOwogdXNpbmcgdGVzdGluZzo6SXNTdWJzdHJpbmc7CkBAIC0xMzIsNTMgKzIxOSw3OCBAQCB1
c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwogdXNpbmcgdGVzdGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0
UmVzdWx0UmVwb3J0ZXI7CiB1c2luZyB0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE7CiB1c2lu
ZyB0ZXN0aW5nOjpUZXN0OwotdXNpbmcgdGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzOwogdXNp
bmcgdGVzdGluZzo6VGVzdENhc2U7Cit1c2luZyB0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7
Cit1c2luZyB0ZXN0aW5nOjpUZXN0SW5mbzsKIHVzaW5nIHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0
OwogdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHRBcnJheTsKIHVzaW5nIHRlc3Rpbmc6OlRl
c3RQcm9wZXJ0eTsKIHVzaW5nIHRlc3Rpbmc6OlRlc3RSZXN1bHQ7Cit1c2luZyB0ZXN0aW5nOjpU
aW1lSW5NaWxsaXM7CiB1c2luZyB0ZXN0aW5nOjpVbml0VGVzdDsKLXVzaW5nIHRlc3Rpbmc6OmtN
YXhTdGFja1RyYWNlRGVwdGg7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QWRkUmVmZXJlbmNl
OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlOwogdXNpbmcgdGVzdGluZzo6
aW50ZXJuYWw6OkFsd2F5c1RydWU7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QXBwZW5kVXNl
ck1lc3NhZ2U7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QXJyYXlBd2FyZUZpbmQ7Cit1c2lu
ZyB0ZXN0aW5nOjppbnRlcm5hbDo6QXJyYXlFcTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpD
b2RlUG9pbnRUb1V0Zjg7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q29tcGlsZUFzc2VydFR5
cGVzRXF1YWw7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q29weUFycmF5OwogdXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OkNvdW50SWY7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RXFGYWls
dXJlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZsb2F0aW5nUG9pbnQ7Ci11c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6Rm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzOwogdXNpbmcgdGVzdGlu
Zzo6aW50ZXJuYWw6OkZvckVhY2g7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0RXBv
Y2hUaW1lSW5NaWxsaXNBc0lzbzg2MDE7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0
VGltZUluTWlsbGlzQXNTZWNvbmRzOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdUZXN0Rmxh
Z1NhdmVyOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldEN1cnJlbnRPc1N0YWNrVHJhY2VF
eGNlcHRUb3A7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0RWxlbWVudE9yOwogdXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OkdldE5leHRSYW5kb21TZWVkOwogdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OkdldFJhbmRvbVNlZWRGcm9tRmxhZzsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpH
ZXRUZXN0VHlwZUlkOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldFRpbWVJbk1pbGxpczsK
IHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRUeXBlSWQ7CiB1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6R2V0VW5pdFRlc3RJbXBsOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0
bHlDb252ZXJ0aWJsZTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJbnQzMjsKIHVzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpJbnQzMkZyb21FbnZPckRpZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpJc0FQcm90b2NvbE1lc3NhZ2U7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SXNDb250
YWluZXI7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SXNDb250YWluZXJUZXN0OwordXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OklzTm90Q29udGFpbmVyOwordXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6Ok5hdGl2ZUFycmF5OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6Ok9zU3RhY2tUcmFjZUdl
dHRlcjsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZh
Y2U7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UGFyc2VJbnQzMkZsYWc7Cit1c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6UmVsYXRpb25Ub1NvdXJjZUNvcHk7Cit1c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6UmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjpSZW1vdmVDb25zdDsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpSZW1vdmVSZWZlcmVuY2U7
CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxkUnVuVGVzdE9uU2hhcmQ7CiB1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxkU2hhcmQ7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6
U2hvdWxkVXNlQ29sb3I7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2h1ZmZsZTsKIHVzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjpTaHVmZmxlUmFuZ2U7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6U2tpcFByZWZpeDsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJp
bmc7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOwogdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OlRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOwogdXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OlRlc3RSZXN1bHRBY2Nlc3NvcjsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpVSW50MzI7
Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdFRlc3RJbXBsOwogdXNpbmcgdGVzdGluZzo6
aW50ZXJuYWw6OldpZGVTdHJpbmdUb1V0Zjg7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6ZWRp
dF9kaXN0YW5jZTo6Q2FsY3VsYXRlT3B0aW1hbEVkaXRzOwordXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OmVkaXRfZGlzdGFuY2U6OkNyZWF0ZVVuaWZpZWREaWZmOwordXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OmVkaXRfZGlzdGFuY2U6OkVkaXRUeXBlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OmtNYXhSYW5kb21TZWVkOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmtUZXN0VHlwZUlkSW5H
b29nbGVUZXN0OwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI7Cit1c2luZyB0
ZXN0aW5nOjprTWF4U3RhY2tUcmFjZURlcHRoOwogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJ
UkVDVElPTl8KKyNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCiB1c2luZyB0ZXN0aW5n
OjppbnRlcm5hbDo6Q2FwdHVyZVN0ZG91dDsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRD
YXB0dXJlZFN0ZG91dDsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8K
KyNlbmRpZgogCiAjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQogdXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OlRocmVhZFdpdGhQYXJhbTsKQEAgLTI2Nyw2ICszNzksMzEgQEAgVEVTVChHZXRUZXN0VHlw
ZUlkVGVzdCwgUmV0dXJuc1RoZVNhbWVWYWx1ZUluc2lkZU9yT3V0c2lkZU9mR29vZ2xlVGVzdCkg
ewogICBFWFBFQ1RfRVEoa1Rlc3RUeXBlSWRJbkdvb2dsZVRlc3QsIEdldFRlc3RUeXBlSWQoKSk7
CiB9CiAKKy8vIFRlc3RzIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcuCisKK3VzaW5n
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkNhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmc7CisK
K1RFU1QoQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZywgTGVhdmVzVW52ZXJzaW9uZWRO
YW1lc1VuY2hhbmdlZCkgeworICBFWFBFQ1RfRVEoInN0ZDo6YmluZCIsIENhbm9uaWNhbGl6ZUZv
clN0ZExpYlZlcnNpb25pbmcoInN0ZDo6YmluZCIpKTsKKyAgRVhQRUNUX0VRKCJzdGQ6Ol8iLCBD
YW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJzdGQ6Ol8iKSk7CisgIEVYUEVDVF9FUSgi
c3RkOjpfX2ZvbyIsIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoInN0ZDo6X19mb28i
KSk7CisgIEVYUEVDVF9FUSgiZ3RsOjpfXzE6OngiLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJz
aW9uaW5nKCJndGw6Ol9fMTo6eCIpKTsKKyAgRVhQRUNUX0VRKCJfXzE6OngiLCBDYW5vbmljYWxp
emVGb3JTdGRMaWJWZXJzaW9uaW5nKCJfXzE6OngiKSk7CisgIEVYUEVDVF9FUSgiOjpfXzE6Ongi
LCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCI6Ol9fMTo6eCIpKTsKK30KKworVEVT
VChDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nLCBFbGlkZXNEb3VibGVVbmRlck5hbWVz
KSB7CisgIEVYUEVDVF9FUSgic3RkOjpiaW5kIiwgQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lv
bmluZygic3RkOjpfXzE6OmJpbmQiKSk7CisgIEVYUEVDVF9FUSgic3RkOjpfIiwgQ2Fub25pY2Fs
aXplRm9yU3RkTGliVmVyc2lvbmluZygic3RkOjpfXzE6Ol8iKSk7CisKKyAgRVhQRUNUX0VRKCJz
dGQ6OmJpbmQiLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJzdGQ6Ol9fZzo6Ymlu
ZCIpKTsKKyAgRVhQRUNUX0VRKCJzdGQ6Ol8iLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9u
aW5nKCJzdGQ6Ol9fZzo6XyIpKTsKKworICBFWFBFQ1RfRVEoInN0ZDo6YmluZCIsCisgICAgICAg
ICAgICBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJzdGQ6Ol9fZ29vZ2xlOjpiaW5k
IikpOworICBFWFBFQ1RfRVEoInN0ZDo6XyIsIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25p
bmcoInN0ZDo6X19nb29nbGU6Ol8iKSk7Cit9CisKIC8vIFRlc3RzIEZvcm1hdFRpbWVJbk1pbGxp
c0FzU2Vjb25kcygpLgogCiBURVNUKEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kc1Rlc3QsIEZv
cm1hdHNaZXJvKSB7CkBAIC0yODksMTIgKzQyNiw5OSBAQCBURVNUKEZvcm1hdFRpbWVJbk1pbGxp
c0FzU2Vjb25kc1Rlc3QsIEZvcm1hdHNOZWdhdGl2ZU51bWJlcikgewogICBFWFBFQ1RfRVEoIi0z
IiwgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKC0zMDAwKSk7CiB9CiAKKy8vIFRlc3RzIEZv
cm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKCkuICBUaGUgY29ycmVjdG5lc3Mgb2YgY29u
dmVyc2lvbgorLy8gZm9yIHBhcnRpY3VsYXIgZGF0ZXMgYmVsb3cgd2FzIHZlcmlmaWVkIGluIFB5
dGhvbiB1c2luZworLy8gZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXV0Y3RpbWVzdGFtcCg8dGltZXRh
bXA+LzEwMDApLgorCisvLyBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSBkZXBlbmRz
IG9uIHRoZSBjdXJyZW50IHRpbWV6b25lLCBzbyB3ZQorLy8gaGF2ZSB0byBzZXQgdXAgYSBwYXJ0
aWN1bGFyIHRpbWV6b25lIHRvIG9idGFpbiBwcmVkaWN0YWJsZSByZXN1bHRzLgorY2xhc3MgRm9y
bWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0IDogcHVibGljIFRlc3QgeworIHB1Ymxp
YzoKKyAgLy8gT24gQ3lnd2luLCBHQ0MgZG9lc24ndCBhbGxvdyB1bnF1YWxpZmllZCBpbnRlZ2Vy
IGxpdGVyYWxzIHRvIGV4Y2VlZAorICAvLyAzMiBiaXRzLCBldmVuIHdoZW4gNjQtYml0IGludGVn
ZXIgdHlwZXMgYXJlIGF2YWlsYWJsZS4gIFdlIGhhdmUgdG8KKyAgLy8gZm9yY2UgdGhlIGNvbnN0
YW50cyB0byBoYXZlIGEgNjQtYml0IHR5cGUgaGVyZS4KKyAgc3RhdGljIGNvbnN0IFRpbWVJbk1p
bGxpcyBrTWlsbGlzUGVyU2VjID0gMTAwMDsKKworIHByaXZhdGU6CisgIHZpcnR1YWwgdm9pZCBT
ZXRVcCgpIHsKKyAgICBzYXZlZF90el8gPSBOVUxMOworCisgICAgR1RFU1RfRElTQUJMRV9NU0Nf
REVQUkVDQVRFRF9QVVNIXygvKiBnZXRlbnYsIHN0cmR1cDogZGVwcmVjYXRlZCAqLykKKyAgICBp
ZiAoZ2V0ZW52KCJUWiIpKQorICAgICAgc2F2ZWRfdHpfID0gc3RyZHVwKGdldGVudigiVFoiKSk7
CisgICAgR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRFRF9QT1BfKCkKKworICAgIC8vIFNldCB1
cCB0aGUgdGltZSB6b25lIGZvciBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSB0byB1
c2UuICBXZQorICAgIC8vIGNhbm5vdCB1c2UgdGhlIGxvY2FsIHRpbWUgem9uZSBiZWNhdXNlIHRo
ZSBmdW5jdGlvbidzIG91dHB1dCBkZXBlbmRzCisgICAgLy8gb24gdGhlIHRpbWUgem9uZS4KKyAg
ICBTZXRUaW1lWm9uZSgiVVRDKzAwIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24o
KSB7CisgICAgU2V0VGltZVpvbmUoc2F2ZWRfdHpfKTsKKyAgICBmcmVlKGNvbnN0X2Nhc3Q8Y2hh
cio+KHNhdmVkX3R6XykpOworICAgIHNhdmVkX3R6XyA9IE5VTEw7CisgIH0KKworICBzdGF0aWMg
dm9pZCBTZXRUaW1lWm9uZShjb25zdCBjaGFyKiB0aW1lX3pvbmUpIHsKKyAgICAvLyB0enNldCgp
IGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiB0aGUgVFogdmFyaWFibGUgYmVpbmcgcHJlc2VudCBhbmQg
ZW1wdHkKKyAgICAvLyBhbmQgbm90IGJlaW5nIHByZXNlbnQsIHNvIHdlIGhhdmUgdG8gY29uc2lk
ZXIgdGhlIGNhc2Ugb2YgdGltZV96b25lCisgICAgLy8gYmVpbmcgTlVMTC4KKyNpZiBfTVNDX1ZF
UiB8fCBHVEVTVF9PU19XSU5ET1dTX01JTkdXCisgICAgLy8gLi4uVW5sZXNzIGl0J3MgTVNWQywg
d2hvc2Ugc3RhbmRhcmQgbGlicmFyeSdzIF9wdXRlbnYgZG9lc24ndAorICAgIC8vIGRpc3Rpbmd1
aXNoIGJldHdlZW4gYW4gZW1wdHkgYW5kIGEgbWlzc2luZyB2YXJpYWJsZS4KKyAgICBjb25zdCBz
dGQ6OnN0cmluZyBlbnZfdmFyID0KKyAgICAgICAgc3RkOjpzdHJpbmcoIlRaPSIpICsgKHRpbWVf
em9uZSA/IHRpbWVfem9uZSA6ICIiKTsKKyAgICBfcHV0ZW52KGVudl92YXIuY19zdHIoKSk7Cisg
ICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDk5NiAvKiBkZXByZWNhdGVkIGZ1
bmN0aW9uICovKQorICAgIHR6c2V0KCk7CisgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1Nf
UE9QXygpCisjZWxzZQorICAgIGlmICh0aW1lX3pvbmUpIHsKKyAgICAgIHNldGVudigoIlRaIiks
IHRpbWVfem9uZSwgMSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHVuc2V0ZW52KCJUWiIpOworICAg
IH0KKyAgICB0enNldCgpOworI2VuZGlmCisgIH0KKworICBjb25zdCBjaGFyKiBzYXZlZF90el87
Cit9OworCitjb25zdCBUaW1lSW5NaWxsaXMgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2
MDFUZXN0OjprTWlsbGlzUGVyU2VjOworCitURVNUX0YoRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNB
c0lzbzg2MDFUZXN0LCBQcmludHNUd29EaWdpdFNlZ21lbnRzKSB7CisgIEVYUEVDVF9FUSgiMjAx
MS0xMC0zMVQxODo1Mjo0MiIsCisgICAgICAgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0Fz
SXNvODYwMSgxMzIwMDg3MTYyICoga01pbGxpc1BlclNlYykpOworfQorCitURVNUX0YoRm9ybWF0
RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBNaWxsaXNlY29uZHNEb05vdEFmZmVjdFJl
c3VsdCkgeworICBFWFBFQ1RfRVEoCisgICAgICAiMjAxMS0xMC0zMVQxODo1Mjo0MiIsCisgICAg
ICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSgxMzIwMDg3MTYyICoga01pbGxpc1Bl
clNlYyArIDIzNCkpOworfQorCitURVNUX0YoRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2
MDFUZXN0LCBQcmludHNMZWFkaW5nWmVyb2VzKSB7CisgIEVYUEVDVF9FUSgiMjAxMS0wOS0wM1Qw
NTowNzowMiIsCisgICAgICAgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSgx
MzE1MDI2NDIyICoga01pbGxpc1BlclNlYykpOworfQorCitURVNUX0YoRm9ybWF0RXBvY2hUaW1l
SW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBQcmludHMyNEhvdXJUaW1lKSB7CisgIEVYUEVDVF9FUSgi
MjAxMS0wOS0yOFQxNzowODoyMiIsCisgICAgICAgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxp
c0FzSXNvODYwMSgxMzE3MjI5NzAyICoga01pbGxpc1BlclNlYykpOworfQorCitURVNUX0YoRm9y
bWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBQcmludHNFcG9jaFN0YXJ0KSB7Cisg
IEVYUEVDVF9FUSgiMTk3MC0wMS0wMVQwMDowMDowMCIsIEZvcm1hdEVwb2NoVGltZUluTWlsbGlz
QXNJc284NjAxKDApKTsKK30KKwogI2lmIEdURVNUX0NBTl9DT01QQVJFX05VTEwKIAotI2lmZGVm
IF9fQk9STEFORENfXworIyBpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFNpbGVuY2VzIHdhcm5pbmdz
OiAiQ29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlIiwgIlVucmVhY2hhYmxlIGNvZGUiCi0jcHJhZ21h
IG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gKLSNlbmRpZgorIyAgcHJhZ21hIG9wdGlvbiBwdXNo
IC13LWNjYyAtdy1yY2gKKyMgZW5kaWYKIAogLy8gVGVzdHMgdGhhdCBHVEVTVF9JU19OVUxMX0xJ
VEVSQUxfKHgpIGlzIHRydWUgd2hlbiB4IGlzIGEgbnVsbAogLy8gcG9pbnRlciBsaXRlcmFsLgpA
QCAtMzAzLDE0ICs1MjcsNiBAQCBURVNUKE51bGxMaXRlcmFsVGVzdCwgSXNUcnVlRm9yTnVsbExp
dGVyYWxzKSB7CiAgIEVYUEVDVF9UUlVFKEdURVNUX0lTX05VTExfTElURVJBTF8oMCkpOwogICBF
WFBFQ1RfVFJVRShHVEVTVF9JU19OVUxMX0xJVEVSQUxfKDBVKSk7CiAgIEVYUEVDVF9UUlVFKEdU
RVNUX0lTX05VTExfTElURVJBTF8oMEwpKTsKLSAgRVhQRUNUX1RSVUUoR1RFU1RfSVNfTlVMTF9M
SVRFUkFMXyhmYWxzZSkpOwotI2lmbmRlZiBfX0JPUkxBTkRDX18KLSAgLy8gU29tZSBjb21waWxl
cnMgbWF5IGZhaWwgdG8gZGV0ZWN0IHNvbWUgbnVsbCBwb2ludGVyIGxpdGVyYWxzOwotICAvLyBh
cyBsb25nIGFzIHVzZXJzIG9mIHRoZSBmcmFtZXdvcmsgZG9uJ3QgdXNlIHN1Y2ggbGl0ZXJhbHMs
IHRoaXMKLSAgLy8gaXMgaGFybWxlc3MuCi0gIEVYUEVDVF9UUlVFKEdURVNUX0lTX05VTExfTElU
RVJBTF8oMSAtIDEpKTsKLSAgRVhQRUNUX1RSVUUoR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh0cnVl
ICYmIGZhbHNlKSk7Ci0jZW5kaWYKIH0KIAogLy8gVGVzdHMgdGhhdCBHVEVTVF9JU19OVUxMX0xJ
VEVSQUxfKHgpIGlzIGZhbHNlIHdoZW4geCBpcyBub3QgYSBudWxsCkBAIC0zMjIsMTAgKzUzOCwx
MCBAQCBURVNUKE51bGxMaXRlcmFsVGVzdCwgSXNGYWxzZUZvck5vbk51bGxMaXRlcmFscykgewog
ICBFWFBFQ1RfRkFMU0UoR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyhzdGF0aWNfY2FzdDx2b2lkKj4o
TlVMTCkpKTsKIH0KIAotI2lmZGVmIF9fQk9STEFORENfXworIyBpZmRlZiBfX0JPUkxBTkRDX18K
IC8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9wdGlvbiBwdXNo
IiBzdXBwcmVzc2VkIHRoZW0uCi0jcHJhZ21hIG9wdGlvbiBwb3AKLSNlbmRpZgorIyAgcHJhZ21h
IG9wdGlvbiBwb3AKKyMgZW5kaWYKIAogI2VuZGlmICAvLyBHVEVTVF9DQU5fQ09NUEFSRV9OVUxM
CiAvLwpAQCAtMzMzLDM5ICs1NDksNDEgQEAgVEVTVChOdWxsTGl0ZXJhbFRlc3QsIElzRmFsc2VG
b3JOb25OdWxsTGl0ZXJhbHMpIHsKIAogLy8gVGVzdHMgdGhhdCB0aGUgTlVMIGNoYXJhY3RlciBM
J1wwJyBpcyBlbmNvZGVkIGNvcnJlY3RseS4KIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2Fu
RW5jb2RlTnVsKSB7Ci0gIGNoYXIgYnVmZmVyWzMyXTsKLSAgRVhQRUNUX1NUUkVRKCIiLCBDb2Rl
UG9pbnRUb1V0ZjgoTCdcMCcsIGJ1ZmZlcikpOworICBFWFBFQ1RfRVEoIiIsIENvZGVQb2ludFRv
VXRmOChMJ1wwJykpOwogfQogCiAvLyBUZXN0cyB0aGF0IEFTQ0lJIGNoYXJhY3RlcnMgYXJlIGVu
Y29kZWQgY29ycmVjdGx5LgogVEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBDYW5FbmNvZGVBc2Np
aSkgewotICBjaGFyIGJ1ZmZlclszMl07Ci0gIEVYUEVDVF9TVFJFUSgiYSIsIENvZGVQb2ludFRv
VXRmOChMJ2EnLCBidWZmZXIpKTsKLSAgRVhQRUNUX1NUUkVRKCJaIiwgQ29kZVBvaW50VG9VdGY4
KEwnWicsIGJ1ZmZlcikpOwotICBFWFBFQ1RfU1RSRVEoIiYiLCBDb2RlUG9pbnRUb1V0ZjgoTCcm
JywgYnVmZmVyKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHg3RiIsIENvZGVQb2ludFRvVXRmOChMJ1x4
N0YnLCBidWZmZXIpKTsKKyAgRVhQRUNUX0VRKCJhIiwgQ29kZVBvaW50VG9VdGY4KEwnYScpKTsK
KyAgRVhQRUNUX0VRKCJaIiwgQ29kZVBvaW50VG9VdGY4KEwnWicpKTsKKyAgRVhQRUNUX0VRKCIm
IiwgQ29kZVBvaW50VG9VdGY4KEwnJicpKTsKKyAgRVhQRUNUX0VRKCJceDdGIiwgQ29kZVBvaW50
VG9VdGY4KEwnXHg3RicpKTsKIH0KIAogLy8gVGVzdHMgdGhhdCBVbmljb2RlIGNvZGUtcG9pbnRz
IHRoYXQgaGF2ZSA4IHRvIDExIGJpdHMgYXJlIGVuY29kZWQKIC8vIGFzIDExMHh4eHh4IDEweHh4
eHh4LgogVEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBDYW5FbmNvZGU4VG8xMUJpdHMpIHsKLSAg
Y2hhciBidWZmZXJbMzJdOwogICAvLyAwMDAgMTEwMSAwMDExID0+IDExMC0wMDAxMSAxMC0wMTAw
MTEKLSAgRVhQRUNUX1NUUkVRKCJceEMzXHg5MyIsIENvZGVQb2ludFRvVXRmOChMJ1x4RDMnLCBi
dWZmZXIpKTsKKyAgRVhQRUNUX0VRKCJceEMzXHg5MyIsIENvZGVQb2ludFRvVXRmOChMJ1x4RDMn
KSk7CiAKICAgLy8gMTAxIDAxMTEgMDExMCA9PiAxMTAtMTAxMDEgMTAtMTEwMTEwCi0gIEVYUEVD
VF9TVFJFUSgiXHhENVx4QjYiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDU3NicsIGJ1ZmZlcikpOwor
ICAvLyBTb21lIGNvbXBpbGVycyAoZS5nLiwgR0NDIG9uIE1pbkdXKSBjYW5ub3QgaGFuZGxlIG5v
bi1BU0NJSSBjb2RlcG9pbnRzCisgIC8vIGluIHdpZGUgc3RyaW5ncyBhbmQgd2lkZSBjaGFycy4g
SW4gb3JkZXIgdG8gYWNjb21tb2RhdGUgdGhlbSwgd2UgaGF2ZSB0bworICAvLyBpbnRyb2R1Y2Ug
c3VjaCBjaGFyYWN0ZXIgY29uc3RhbnRzIGFzIGludGVnZXJzLgorICBFWFBFQ1RfRVEoIlx4RDVc
eEI2IiwKKyAgICAgICAgICAgIENvZGVQb2ludFRvVXRmOChzdGF0aWNfY2FzdDx3Y2hhcl90Pigw
eDU3NikpKTsKIH0KIAogLy8gVGVzdHMgdGhhdCBVbmljb2RlIGNvZGUtcG9pbnRzIHRoYXQgaGF2
ZSAxMiB0byAxNiBiaXRzIGFyZSBlbmNvZGVkCiAvLyBhcyAxMTEweHh4eCAxMHh4eHh4eCAxMHh4
eHh4eC4KIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2RlMTJUbzE2Qml0cykgewot
ICBjaGFyIGJ1ZmZlclszMl07CiAgIC8vIDAwMDAgMTAwMCAxMTAxIDAwMTEgPT4gMTExMC0wMDAw
IDEwLTEwMDAxMSAxMC0wMTAwMTEKLSAgRVhQRUNUX1NUUkVRKCJceEUwXHhBM1x4OTMiLCBDb2Rl
UG9pbnRUb1V0ZjgoTCdceDhEMycsIGJ1ZmZlcikpOworICBFWFBFQ1RfRVEoIlx4RTBceEEzXHg5
MyIsCisgICAgICAgICAgICBDb2RlUG9pbnRUb1V0Zjgoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHg4
RDMpKSk7CiAKICAgLy8gMTEwMCAwMTExIDAxMDAgMTEwMSA9PiAxMTEwLTExMDAgMTAtMDExMTAx
IDEwLTAwMTEwMQotICBFWFBFQ1RfU1RSRVEoIlx4RUNceDlEXHg4RCIsIENvZGVQb2ludFRvVXRm
OChMJ1x4Qzc0RCcsIGJ1ZmZlcikpOworICBFWFBFQ1RfRVEoIlx4RUNceDlEXHg4RCIsCisgICAg
ICAgICAgICBDb2RlUG9pbnRUb1V0Zjgoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHhDNzREKSkpOwog
fQogCiAjaWYgIUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCkBAIC0zNzYsMjIgKzU5NCwx
OSBAQCBURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29kZTEyVG8xNkJpdHMpIHsKIC8v
IFRlc3RzIHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0aGF0IGhhdmUgMTcgdG8gMjEgYml0cyBh
cmUgZW5jb2RlZAogLy8gYXMgMTExMTB4eHggMTB4eHh4eHggMTB4eHh4eHggMTB4eHh4eHguCiBU
RVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29kZTE3VG8yMUJpdHMpIHsKLSAgY2hhciBi
dWZmZXJbMzJdOwogICAvLyAwIDAwMDEgMDAwMCAxMDAwIDExMDEgMDAxMSA9PiAxMTExMC0wMDAg
MTAtMDEwMDAwIDEwLTEwMDAxMSAxMC0wMTAwMTEKLSAgRVhQRUNUX1NUUkVRKCJceEYwXHg5MFx4
QTNceDkzIiwgQ29kZVBvaW50VG9VdGY4KEwnXHgxMDhEMycsIGJ1ZmZlcikpOworICBFWFBFQ1Rf
RVEoIlx4RjBceDkwXHhBM1x4OTMiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDEwOEQzJykpOwogCiAg
IC8vIDAgMDAwMSAwMDAwIDAxMDAgMDAwMCAwMDAwID0+IDExMTEwLTAwMCAxMC0wMTAwMDAgMTAt
MDEwMDAwIDEwLTAwMDAwMAotICBFWFBFQ1RfU1RSRVEoIlx4RjBceDkwXHg5MFx4ODAiLCBDb2Rl
UG9pbnRUb1V0ZjgoTCdceDEwNDAwJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiXHhGMFx4OTBc
eDkwXHg4MCIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA0MDAnKSk7CiAKICAgLy8gMSAwMDAwIDEw
MDAgMDExMCAwMDExIDAxMDAgPT4gMTExMTAtMTAwIDEwLTAwMTAwMCAxMC0wMTEwMDAgMTAtMTEw
MTAwCi0gIEVYUEVDVF9TVFJFUSgiXHhGNFx4ODhceDk4XHhCNCIsIENvZGVQb2ludFRvVXRmOChM
J1x4MTA4NjM0JywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiXHhGNFx4ODhceDk4XHhCNCIsIENv
ZGVQb2ludFRvVXRmOChMJ1x4MTA4NjM0JykpOwogfQogCiAvLyBUZXN0cyB0aGF0IGVuY29kaW5n
IGFuIGludmFsaWQgY29kZS1wb2ludCBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHJlc3VsdC4KIFRF
U1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2RlSW52YWxpZENvZGVQb2ludCkgewotICBj
aGFyIGJ1ZmZlclszMl07Ci0gIEVYUEVDVF9TVFJFUSgiKEludmFsaWQgVW5pY29kZSAweDEyMzRB
QkNEKSIsCi0gICAgICAgICAgICAgICBDb2RlUG9pbnRUb1V0ZjgoTCdceDEyMzRBQkNEJywgYnVm
ZmVyKSk7CisgIEVYUEVDVF9FUSgiKEludmFsaWQgVW5pY29kZSAweDEyMzRBQkNEKSIsIENvZGVQ
b2ludFRvVXRmOChMJ1x4MTIzNEFCQ0QnKSk7CiB9CiAKICNlbmRpZiAgLy8gIUdURVNUX1dJREVf
U1RSSU5HX1VTRVNfVVRGMTZfCkBAIC00MjAsMjAgKzYzNSwyMyBAQCBURVNUKFdpZGVTdHJpbmdU
b1V0ZjhUZXN0LCBDYW5FbmNvZGU4VG8xMUJpdHMpIHsKICAgRVhQRUNUX1NUUkVRKCJceEMzXHg5
MyIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEQzIiwgLTEpLmNfc3RyKCkpOwogCiAgIC8vIDEwMSAw
MTExIDAxMTAgPT4gMTEwLTEwMTAxIDEwLTExMDExMAotICBFWFBFQ1RfU1RSRVEoIlx4RDVceEI2
IiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4NTc2IiwgMSkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJF
USgiXHhENVx4QjYiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHg1NzYiLCAtMSkuY19zdHIoKSk7Cisg
IGNvbnN0IHdjaGFyX3Qgc1tdID0geyAweDU3NiwgJ1wwJyB9OworICBFWFBFQ1RfU1RSRVEoIlx4
RDVceEI2IiwgV2lkZVN0cmluZ1RvVXRmOChzLCAxKS5jX3N0cigpKTsKKyAgRVhQRUNUX1NUUkVR
KCJceEQ1XHhCNiIsIFdpZGVTdHJpbmdUb1V0ZjgocywgLTEpLmNfc3RyKCkpOwogfQogCiAvLyBU
ZXN0cyB0aGF0IFVuaWNvZGUgY29kZS1wb2ludHMgdGhhdCBoYXZlIDEyIHRvIDE2IGJpdHMgYXJl
IGVuY29kZWQKIC8vIGFzIDExMTB4eHh4IDEweHh4eHh4IDEweHh4eHh4LgogVEVTVChXaWRlU3Ry
aW5nVG9VdGY4VGVzdCwgQ2FuRW5jb2RlMTJUbzE2Qml0cykgewogICAvLyAwMDAwIDEwMDAgMTEw
MSAwMDExID0+IDExMTAtMDAwMCAxMC0xMDAwMTEgMTAtMDEwMDExCi0gIEVYUEVDVF9TVFJFUSgi
XHhFMFx4QTNceDkzIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4OEQzIiwgMSkuY19zdHIoKSk7Ci0g
IEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4OEQzIiwg
LTEpLmNfc3RyKCkpOworICBjb25zdCB3Y2hhcl90IHMxW10gPSB7IDB4OEQzLCAnXDAnIH07Cisg
IEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lkZVN0cmluZ1RvVXRmOChzMSwgMSkuY19z
dHIoKSk7CisgIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lkZVN0cmluZ1RvVXRmOChz
MSwgLTEpLmNfc3RyKCkpOwogCiAgIC8vIDExMDAgMDExMSAwMTAwIDExMDEgPT4gMTExMC0xMTAw
IDEwLTAxMTEwMSAxMC0wMDExMDEKLSAgRVhQRUNUX1NUUkVRKCJceEVDXHg5RFx4OEQiLCBXaWRl
U3RyaW5nVG9VdGY4KEwiXHhDNzREIiwgMSkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHhF
Q1x4OURceDhEIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4Qzc0RCIsIC0xKS5jX3N0cigpKTsKKyAg
Y29uc3Qgd2NoYXJfdCBzMltdID0geyAweEM3NEQsICdcMCcgfTsKKyAgRVhQRUNUX1NUUkVRKCJc
eEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5nVG9VdGY4KHMyLCAxKS5jX3N0cigpKTsKKyAgRVhQRUNU
X1NUUkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5nVG9VdGY4KHMyLCAtMSkuY19zdHIoKSk7
CiB9CiAKIC8vIFRlc3RzIHRoYXQgdGhlIGNvbnZlcnNpb24gc3RvcHMgd2hlbiB0aGUgZnVuY3Rp
b24gZW5jb3VudGVycyBcMCBjaGFyYWN0ZXIuCkBAIC00NDcsNyArNjY1LDYgQEAgVEVTVChXaWRl
U3RyaW5nVG9VdGY4VGVzdCwgU3RvcHNXaGVuTGVuZ3RoTGltaXRSZWFjaGVkKSB7CiAgIEVYUEVD
VF9TVFJFUSgiQUJDIiwgV2lkZVN0cmluZ1RvVXRmOChMIkFCQ0RFRiIsIDMpLmNfc3RyKCkpOwog
fQogCi0KICNpZiAhR1RFU1RfV0lERV9TVFJJTkdfVVNFU19VVEYxNl8KIC8vIFRlc3RzIHRoYXQg
VW5pY29kZSBjb2RlLXBvaW50cyB0aGF0IGhhdmUgMTcgdG8gMjEgYml0cyBhcmUgZW5jb2RlZAog
Ly8gYXMgMTExMTB4eHggMTB4eHh4eHggMTB4eHh4eHggMTB4eHh4eHguIFRoaXMgY29kZSBtYXkg
bm90IGNvbXBpbGUKQEAgLTQ3MSwyNSArNjg4LDI5IEBAIFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRl
c3QsIENhbkVuY29kZUludmFsaWRDb2RlUG9pbnQpIHsKIC8vIFRlc3RzIHRoYXQgc3Vycm9nYXRl
IHBhaXJzIGFyZSBlbmNvZGVkIGNvcnJlY3RseSBvbiB0aGUgc3lzdGVtcyB1c2luZwogLy8gVVRG
LTE2IGVuY29kaW5nIGluIHRoZSB3aWRlIHN0cmluZ3MuCiBURVNUKFdpZGVTdHJpbmdUb1V0ZjhU
ZXN0LCBDYW5FbmNvZGVWYWxpZFV0ZjE2U1Vycm9nYXRlUGFpcnMpIHsKLSAgRVhQRUNUX1NUUkVR
KCJceEYwXHg5MFx4OTBceDgwIiwKLSAgICAgICAgICAgICAgIFdpZGVTdHJpbmdUb1V0ZjgoTCJc
eEQ4MDFceERDMDAiLCAtMSkuY19zdHIoKSk7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0geyAweEQ4
MDEsIDB4REMwMCwgJ1wwJyB9OworICBFWFBFQ1RfU1RSRVEoIlx4RjBceDkwXHg5MFx4ODAiLCBX
aWRlU3RyaW5nVG9VdGY4KHMsIC0xKS5jX3N0cigpKTsKIH0KIAogLy8gVGVzdHMgdGhhdCBlbmNv
ZGluZyBhbiBpbnZhbGlkIFVURi0xNiBzdXJyb2dhdGUgcGFpcgogLy8gZ2VuZXJhdGVzIHRoZSBl
eHBlY3RlZCByZXN1bHQuCiBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGVJbnZh
bGlkVXRmMTZTdXJyb2dhdGVQYWlyKSB7CiAgIC8vIExlYWRpbmcgc3Vycm9nYXRlIGlzIGF0IHRo
ZSBlbmQgb2YgdGhlIHN0cmluZy4KLSAgRVhQRUNUX1NUUkVRKCJceEVEXHhBMFx4ODAiLCBXaWRl
U3RyaW5nVG9VdGY4KEwiXHhEODAwIiwgLTEpLmNfc3RyKCkpOworICBjb25zdCB3Y2hhcl90IHMx
W10gPSB7IDB4RDgwMCwgJ1wwJyB9OworICBFWFBFQ1RfU1RSRVEoIlx4RURceEEwXHg4MCIsIFdp
ZGVTdHJpbmdUb1V0ZjgoczEsIC0xKS5jX3N0cigpKTsKICAgLy8gTGVhZGluZyBzdXJyb2dhdGUg
aXMgbm90IGZvbGxvd2VkIGJ5IHRoZSB0cmFpbGluZyBzdXJyb2dhdGUuCi0gIEVYUEVDVF9TVFJF
USgiXHhFRFx4QTBceDgwJCIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEQ4MDAkIiwgLTEpLmNfc3Ry
KCkpOworICBjb25zdCB3Y2hhcl90IHMyW10gPSB7IDB4RDgwMCwgJ00nLCAnXDAnIH07CisgIEVY
UEVDVF9TVFJFUSgiXHhFRFx4QTBceDgwTSIsIFdpZGVTdHJpbmdUb1V0ZjgoczIsIC0xKS5jX3N0
cigpKTsKICAgLy8gVHJhaWxpbmcgc3Vycm9nYXRlIGFwcGVhcmFzIHdpdGhvdXQgYSBsZWFkaW5n
IHN1cnJvZ2F0ZS4KLSAgRVhQRUNUX1NUUkVRKCJceEVEXHhCMFx4ODBQUVIiLCBXaWRlU3RyaW5n
VG9VdGY4KEwiXHhEQzAwUFFSIiwgLTEpLmNfc3RyKCkpOworICBjb25zdCB3Y2hhcl90IHMzW10g
PSB7IDB4REMwMCwgJ1AnLCAnUScsICdSJywgJ1wwJyB9OworICBFWFBFQ1RfU1RSRVEoIlx4RURc
eEIwXHg4MFBRUiIsIFdpZGVTdHJpbmdUb1V0ZjgoczMsIC0xKS5jX3N0cigpKTsKIH0KICNlbmRp
ZiAgLy8gIUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCiAKIC8vIFRlc3RzIHRoYXQgY29k
ZXBvaW50IGNvbmNhdGVuYXRpb24gd29ya3MgY29ycmVjdGx5LgogI2lmICFHVEVTVF9XSURFX1NU
UklOR19VU0VTX1VURjE2XwogVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgQ29uY2F0ZW5hdGVz
Q29kZXBvaW50c0NvcnJlY3RseSkgeworICBjb25zdCB3Y2hhcl90IHNbXSA9IHsgMHgxMDg2MzQs
IDB4Qzc0RCwgJ1xuJywgMHg1NzYsIDB4OEQzLCAweDEwODYzNCwgJ1wwJ307CiAgIEVYUEVDVF9T
VFJFUSgKICAgICAgICJceEY0XHg4OFx4OThceEI0IgogICAgICAgICAgICJceEVDXHg5RFx4OEQi
CkBAIC00OTcsMTMgKzcxOCwxNCBAQCBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDb25jYXRl
bmF0ZXNDb2RlcG9pbnRzQ29ycmVjdGx5KSB7CiAgICAgICAgICAgIlx4RDVceEI2IgogICAgICAg
ICAgICJceEUwXHhBM1x4OTMiCiAgICAgICAgICAgIlx4RjRceDg4XHg5OFx4QjQiLAotICAgICAg
V2lkZVN0cmluZ1RvVXRmOChMIlx4MTA4NjM0XHhDNzREXG5ceDU3Nlx4OEQzXHgxMDg2MzQiLCAt
MSkuY19zdHIoKSk7CisgICAgICBXaWRlU3RyaW5nVG9VdGY4KHMsIC0xKS5jX3N0cigpKTsKIH0K
ICNlbHNlCiBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDb25jYXRlbmF0ZXNDb2RlcG9pbnRz
Q29ycmVjdGx5KSB7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0geyAweEM3NEQsICdcbicsIDB4NTc2
LCAweDhEMywgJ1wwJ307CiAgIEVYUEVDVF9TVFJFUSgKICAgICAgICJceEVDXHg5RFx4OEQiICJc
biIgIlx4RDVceEI2IiAiXHhFMFx4QTNceDkzIiwKLSAgICAgIFdpZGVTdHJpbmdUb1V0ZjgoTCJc
eEM3NERcblx4NTc2XHg4RDMiLCAtMSkuY19zdHIoKSk7CisgICAgICBXaWRlU3RyaW5nVG9VdGY4
KHMsIC0xKS5jX3N0cigpKTsKIH0KICNlbmRpZiAgLy8gIUdURVNUX1dJREVfU1RSSU5HX1VTRVNf
VVRGMTZfCiAKQEAgLTc5NywyNjkgKzEwMTksMTYgQEAgVEVTVChBc3NlcnRIZWxwZXJUZXN0LCBB
c3NlcnRIZWxwZXJJc1NtYWxsKSB7CiAgIEVYUEVDVF9MRShzaXplb2YodGVzdGluZzo6aW50ZXJu
YWw6OkFzc2VydEhlbHBlciksIHNpemVvZih2b2lkKikpOwogfQogCi0vLyBUZXN0cyB0aGUgU3Ry
aW5nIGNsYXNzLgotCi0vLyBUZXN0cyBTdHJpbmcncyBjb25zdHJ1Y3RvcnMuCi1URVNUKFN0cmlu
Z1Rlc3QsIENvbnN0cnVjdG9ycykgewotICAvLyBEZWZhdWx0IGN0b3IuCi0gIFN0cmluZyBzMTsK
LSAgLy8gV2UgYXJlbid0IHVzaW5nIEVYUEVDVF9FUShOVUxMLCBzMS5jX3N0cigpKSBiZWNhdXNl
IGNvbXBhcmluZwotICAvLyBwb2ludGVycyB3aXRoIE5VTEwgaXNuJ3Qgc3VwcG9ydGVkIG9uIGFs
bCBwbGF0Zm9ybXMuCi0gIEVYUEVDVF9FUSgwVSwgczEubGVuZ3RoKCkpOwotICBFWFBFQ1RfVFJV
RShOVUxMID09IHMxLmNfc3RyKCkpOwotCi0gIC8vIEltcGxpY2l0bHkgY29uc3RydWN0cyBmcm9t
IGEgQy1zdHJpbmcuCi0gIFN0cmluZyBzMiA9ICJIaSI7Ci0gIEVYUEVDVF9FUSgyVSwgczIubGVu
Z3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoIkhpIiwgczIuY19zdHIoKSk7Ci0KLSAgLy8gQ29uc3Ry
dWN0cyBmcm9tIGEgQy1zdHJpbmcgYW5kIGEgbGVuZ3RoLgotICBTdHJpbmcgczMoImhlbGxvIiwg
Myk7Ci0gIEVYUEVDVF9FUSgzVSwgczMubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoImhlbCIs
IHMzLmNfc3RyKCkpOwotCi0gIC8vIFRoZSBlbXB0eSBTdHJpbmcgc2hvdWxkIGJlIGNyZWF0ZWQg
d2hlbiBTdHJpbmcgaXMgY29uc3RydWN0ZWQgd2l0aAotICAvLyBhIE5VTEwgcG9pbnRlciBhbmQg
bGVuZ3RoIDAuCi0gIEVYUEVDVF9FUSgwVSwgU3RyaW5nKE5VTEwsIDApLmxlbmd0aCgpKTsKLSAg
RVhQRUNUX0ZBTFNFKFN0cmluZyhOVUxMLCAwKS5jX3N0cigpID09IE5VTEwpOwotCi0gIC8vIENv
bnN0cnVjdHMgYSBTdHJpbmcgdGhhdCBjb250YWlucyAnXDAnLgotICBTdHJpbmcgczQoImFcMGJj
ZCIsIDQpOwotICBFWFBFQ1RfRVEoNFUsIHM0Lmxlbmd0aCgpKTsKLSAgRVhQRUNUX0VRKCdhJywg
czQuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgnXDAnLCBzNC5jX3N0cigpWzFdKTsKLSAgRVhQ
RUNUX0VRKCdiJywgczQuY19zdHIoKVsyXSk7Ci0gIEVYUEVDVF9FUSgnYycsIHM0LmNfc3RyKClb
M10pOwotCi0gIC8vIENvcHkgY3RvciB3aGVyZSB0aGUgc291cmNlIGlzIE5VTEwuCi0gIGNvbnN0
IFN0cmluZyBudWxsX3N0cjsKLSAgU3RyaW5nIHM1ID0gbnVsbF9zdHI7Ci0gIEVYUEVDVF9UUlVF
KHM1LmNfc3RyKCkgPT0gTlVMTCk7Ci0KLSAgLy8gQ29weSBjdG9yIHdoZXJlIHRoZSBzb3VyY2Ug
aXNuJ3QgTlVMTC4KLSAgU3RyaW5nIHM2ID0gczM7Ci0gIEVYUEVDVF9FUSgzVSwgczYubGVuZ3Ro
KCkpOwotICBFWFBFQ1RfU1RSRVEoImhlbCIsIHM2LmNfc3RyKCkpOwotCi0gIC8vIENvcHkgY3Rv
ciB3aGVyZSB0aGUgc291cmNlIGNvbnRhaW5zICdcMCcuCi0gIFN0cmluZyBzNyA9IHM0OwotICBF
WFBFQ1RfRVEoNFUsIHM3Lmxlbmd0aCgpKTsKLSAgRVhQRUNUX0VRKCdhJywgczcuY19zdHIoKVsw
XSk7Ci0gIEVYUEVDVF9FUSgnXDAnLCBzNy5jX3N0cigpWzFdKTsKLSAgRVhQRUNUX0VRKCdiJywg
czcuY19zdHIoKVsyXSk7Ci0gIEVYUEVDVF9FUSgnYycsIHM3LmNfc3RyKClbM10pOwotfQotCi1U
RVNUKFN0cmluZ1Rlc3QsIENvbnZlcnRzRnJvbVN0ZFN0cmluZykgewotICAvLyBBbiBlbXB0eSBz
dGQ6OnN0cmluZy4KLSAgY29uc3Qgc3RkOjpzdHJpbmcgc3JjMSgiIik7Ci0gIGNvbnN0IFN0cmlu
ZyBkZXN0MSA9IHNyYzE7Ci0gIEVYUEVDVF9FUSgwVSwgZGVzdDEubGVuZ3RoKCkpOwotICBFWFBF
Q1RfU1RSRVEoIiIsIGRlc3QxLmNfc3RyKCkpOwotCi0gIC8vIEEgbm9ybWFsIHN0ZDo6c3RyaW5n
LgotICBjb25zdCBzdGQ6OnN0cmluZyBzcmMyKCJIaSIpOwotICBjb25zdCBTdHJpbmcgZGVzdDIg
PSBzcmMyOwotICBFWFBFQ1RfRVEoMlUsIGRlc3QyLmxlbmd0aCgpKTsKLSAgRVhQRUNUX1NUUkVR
KCJIaSIsIGRlc3QyLmNfc3RyKCkpOwotCi0gIC8vIEFuIHN0ZDo6c3RyaW5nIHdpdGggYW4gZW1i
ZWRkZWQgTlVMIGNoYXJhY3Rlci4KLSAgY29uc3QgY2hhciBzcmMzW10gPSAiYVwwYiI7Ci0gIGNv
bnN0IFN0cmluZyBkZXN0MyA9IHN0ZDo6c3RyaW5nKHNyYzMsIHNpemVvZihzcmMzKSk7Ci0gIEVY
UEVDVF9FUShzaXplb2Yoc3JjMyksIGRlc3QzLmxlbmd0aCgpKTsKLSAgRVhQRUNUX0VRKCdhJywg
ZGVzdDMuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgnXDAnLCBkZXN0My5jX3N0cigpWzFdKTsK
LSAgRVhQRUNUX0VRKCdiJywgZGVzdDMuY19zdHIoKVsyXSk7Ci19Ci0KLVRFU1QoU3RyaW5nVGVz
dCwgQ29udmVydHNUb1N0ZFN0cmluZykgewotICAvLyBBbiBlbXB0eSBTdHJpbmcuCi0gIGNvbnN0
IFN0cmluZyBzcmMxKCIiKTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZGVzdDEgPSBzcmMxOwotICBF
WFBFQ1RfRVEoIiIsIGRlc3QxKTsKLQotICAvLyBBIG5vcm1hbCBTdHJpbmcuCi0gIGNvbnN0IFN0
cmluZyBzcmMyKCJIaSIpOwotICBjb25zdCBzdGQ6OnN0cmluZyBkZXN0MiA9IHNyYzI7Ci0gIEVY
UEVDVF9FUSgiSGkiLCBkZXN0Mik7Ci0KLSAgLy8gQSBTdHJpbmcgY29udGFpbmluZyBhICdcMCcu
Ci0gIGNvbnN0IFN0cmluZyBzcmMzKCJ4XDB5IiwgMyk7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGRl
c3QzID0gc3JjMzsKLSAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKCJ4XDB5IiwgMyksIGRlc3QzKTsK
LX0KLQotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0KLVRFU1QoU3RyaW5nVGVzdCwgQ29u
dmVydHNGcm9tR2xvYmFsU3RyaW5nKSB7Ci0gIC8vIEFuIGVtcHR5IDo6c3RyaW5nLgotICBjb25z
dCA6OnN0cmluZyBzcmMxKCIiKTsKLSAgY29uc3QgU3RyaW5nIGRlc3QxID0gc3JjMTsKLSAgRVhQ
RUNUX0VRKDBVLCBkZXN0MS5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgZGVzdDEuY19z
dHIoKSk7Ci0KLSAgLy8gQSBub3JtYWwgOjpzdHJpbmcuCi0gIGNvbnN0IDo6c3RyaW5nIHNyYzIo
IkhpIik7Ci0gIGNvbnN0IFN0cmluZyBkZXN0MiA9IHNyYzI7Ci0gIEVYUEVDVF9FUSgyVSwgZGVz
dDIubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoIkhpIiwgZGVzdDIuY19zdHIoKSk7Ci0KLSAg
Ly8gQW4gOjpzdHJpbmcgd2l0aCBhbiBlbWJlZGRlZCBOVUwgY2hhcmFjdGVyLgotICBjb25zdCBj
aGFyIHNyYzNbXSA9ICJ4XDB5IjsKLSAgY29uc3QgU3RyaW5nIGRlc3QzID0gOjpzdHJpbmcoc3Jj
Mywgc2l6ZW9mKHNyYzMpKTsKLSAgRVhQRUNUX0VRKHNpemVvZihzcmMzKSwgZGVzdDMubGVuZ3Ro
KCkpOwotICBFWFBFQ1RfRVEoJ3gnLCBkZXN0My5jX3N0cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdc
MCcsIGRlc3QzLmNfc3RyKClbMV0pOwotICBFWFBFQ1RfRVEoJ3knLCBkZXN0My5jX3N0cigpWzJd
KTsKLX0KLQotVEVTVChTdHJpbmdUZXN0LCBDb252ZXJ0c1RvR2xvYmFsU3RyaW5nKSB7Ci0gIC8v
IEFuIGVtcHR5IFN0cmluZy4KLSAgY29uc3QgU3RyaW5nIHNyYzEoIiIpOwotICBjb25zdCA6OnN0
cmluZyBkZXN0MSA9IHNyYzE7Ci0gIEVYUEVDVF9FUSgiIiwgZGVzdDEpOwotCi0gIC8vIEEgbm9y
bWFsIFN0cmluZy4KLSAgY29uc3QgU3RyaW5nIHNyYzIoIkhpIik7Ci0gIGNvbnN0IDo6c3RyaW5n
IGRlc3QyID0gc3JjMjsKLSAgRVhQRUNUX0VRKCJIaSIsIGRlc3QyKTsKLQotICBjb25zdCBTdHJp
bmcgc3JjMygieFwweSIsIDMpOwotICBjb25zdCA6OnN0cmluZyBkZXN0MyA9IHNyYzM7Ci0gIEVY
UEVDVF9FUSg6OnN0cmluZygieFwweSIsIDMpLCBkZXN0Myk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX0dMT0JBTF9TVFJJTkcKLQotLy8gVGVzdHMgU3RyaW5nOjpTaG93Q1N0cmluZ1F1b3Rl
ZCgpLgotVEVTVChTdHJpbmdUZXN0LCBTaG93Q1N0cmluZ1F1b3RlZCkgewotICBFWFBFQ1RfU1RS
RVEoIihudWxsKSIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKE5V
TEwpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIlwiXCIiLAotICAgICAgICAgICAgICAgU3Ry
aW5nOjpTaG93Q1N0cmluZ1F1b3RlZCgiIikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXCJm
b29cIiIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKCJmb28iKS5j
X3N0cigpKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjplbXB0eSgpLgotVEVTVChTdHJpbmdUZXN0
LCBFbXB0eSkgewotICBFWFBFQ1RfVFJVRShTdHJpbmcoIiIpLmVtcHR5KCkpOwotICBFWFBFQ1Rf
RkFMU0UoU3RyaW5nKCkuZW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShTdHJpbmcoTlVMTCkuZW1w
dHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShTdHJpbmcoImEiKS5lbXB0eSgpKTsKLSAgRVhQRUNUX0ZB
TFNFKFN0cmluZygiXDAiLCAxKS5lbXB0eSgpKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpDb21w
YXJlKCkuCi1URVNUKFN0cmluZ1Rlc3QsIENvbXBhcmUpIHsKLSAgLy8gTlVMTCB2cyBOVUxMLgot
ICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCkuQ29tcGFyZShTdHJpbmcoKSkpOwotCi0gIC8vIE5VTEwg
dnMgbm9uLU5VTEwuCi0gIEVYUEVDVF9FUSgtMSwgU3RyaW5nKCkuQ29tcGFyZShTdHJpbmcoIiIp
KSk7Ci0KLSAgLy8gTm9uLU5VTEwgdnMgTlVMTC4KLSAgRVhQRUNUX0VRKDEsIFN0cmluZygiIiku
Q29tcGFyZShTdHJpbmcoKSkpOwotCi0gIC8vIFRoZSBmb2xsb3dpbmcgY292ZXJzIG5vbi1OVUxM
IHZzIG5vbi1OVUxMLgotCi0gIC8vICIiIHZzICIiLgotICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCIi
KS5Db21wYXJlKFN0cmluZygiIikpKTsKLQotICAvLyAiIiB2cyBub24tIiIuCi0gIEVYUEVDVF9F
USgtMSwgU3RyaW5nKCIiKS5Db21wYXJlKFN0cmluZygiXDAiLCAxKSkpOwotICBFWFBFQ1RfRVEo
LTEsIFN0cmluZygiIikuQ29tcGFyZSgiICIpKTsKLQotICAvLyBOb24tIiIgdnMgIiIuCi0gIEVY
UEVDVF9FUSgxLCBTdHJpbmcoImEiKS5Db21wYXJlKFN0cmluZygiIikpKTsKLQotICAvLyBUaGUg
Zm9sbG93aW5nIGNvdmVycyBub24tIiIgdnMgbm9uLSIiLgotCi0gIC8vIFNhbWUgbGVuZ3RoIGFu
ZCBlcXVhbC4KLSAgRVhQRUNUX0VRKDAsIFN0cmluZygiYSIpLkNvbXBhcmUoU3RyaW5nKCJhIikp
KTsKLQotICAvLyBTYW1lIGxlbmd0aCBhbmQgZGlmZmVyZW50LgotICBFWFBFQ1RfRVEoLTEsIFN0
cmluZygiYVwwYiIsIDMpLkNvbXBhcmUoU3RyaW5nKCJhXDBjIiwgMykpKTsKLSAgRVhQRUNUX0VR
KDEsIFN0cmluZygiYiIpLkNvbXBhcmUoU3RyaW5nKCJhIikpKTsKLQotICAvLyBEaWZmZXJlbnQg
bGVuZ3Rocy4KLSAgRVhQRUNUX0VRKC0xLCBTdHJpbmcoImEiKS5Db21wYXJlKFN0cmluZygiYWIi
KSkpOwotICBFWFBFQ1RfRVEoLTEsIFN0cmluZygiYSIpLkNvbXBhcmUoU3RyaW5nKCJhXDAiLCAy
KSkpOwotICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCJhYmMiKS5Db21wYXJlKFN0cmluZygiYWFjZCIp
KSk7Ci19Ci0KLS8vIFRlc3RzIFN0cmluZzo6b3BlcmF0b3I9PSgpLgotVEVTVChTdHJpbmdUZXN0
LCBFcXVhbHMpIHsKLSAgY29uc3QgU3RyaW5nIG51bGwoTlVMTCk7Ci0gIEVYUEVDVF9UUlVFKG51
bGwgPT0gTlVMTCk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKG51bGwgPT0gIiIpOyAgLy8g
Tk9MSU5UCi0gIEVYUEVDVF9GQUxTRShudWxsID09ICJiYXIiKTsgIC8vIE5PTElOVAotCi0gIGNv
bnN0IFN0cmluZyBlbXB0eSgiIik7Ci0gIEVYUEVDVF9GQUxTRShlbXB0eSA9PSBOVUxMKTsgIC8v
IE5PTElOVAotICBFWFBFQ1RfVFJVRShlbXB0eSA9PSAiIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNU
X0ZBTFNFKGVtcHR5ID09ICJiYXIiKTsgIC8vIE5PTElOVAotCi0gIGNvbnN0IFN0cmluZyBmb28o
ImZvbyIpOwotICBFWFBFQ1RfRkFMU0UoZm9vID09IE5VTEwpOyAgLy8gTk9MSU5UCi0gIEVYUEVD
VF9GQUxTRShmb28gPT0gIiIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShmb28gPT0gImJh
ciIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKGZvbyA9PSAiZm9vIik7ICAvLyBOT0xJTlQK
LQotICBjb25zdCBTdHJpbmcgYmFyKCJ4XDB5IiwgMyk7Ci0gIEVYUEVDVF9GQUxTRShiYXIgPT0g
IngiKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpvcGVyYXRvciE9KCkuCi1URVNUKFN0cmluZ1Rl
c3QsIE5vdEVxdWFscykgewotICBjb25zdCBTdHJpbmcgbnVsbChOVUxMKTsKLSAgRVhQRUNUX0ZB
TFNFKG51bGwgIT0gTlVMTCk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUobnVsbCAhPSAiIik7
ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUobnVsbCAhPSAiYmFyIik7ICAvLyBOT0xJTlQKLQot
ICBjb25zdCBTdHJpbmcgZW1wdHkoIiIpOwotICBFWFBFQ1RfVFJVRShlbXB0eSAhPSBOVUxMKTsg
IC8vIE5PTElOVAotICBFWFBFQ1RfRkFMU0UoZW1wdHkgIT0gIiIpOyAgLy8gTk9MSU5UCi0gIEVY
UEVDVF9UUlVFKGVtcHR5ICE9ICJiYXIiKTsgIC8vIE5PTElOVAotCi0gIGNvbnN0IFN0cmluZyBm
b28oImZvbyIpOwotICBFWFBFQ1RfVFJVRShmb28gIT0gTlVMTCk7ICAvLyBOT0xJTlQKLSAgRVhQ
RUNUX1RSVUUoZm9vICE9ICIiKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShmb28gIT0gImJh
ciIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShmb28gIT0gImZvbyIpOyAgLy8gTk9MSU5U
Ci0KLSAgY29uc3QgU3RyaW5nIGJhcigieFwweSIsIDMpOwotICBFWFBFQ1RfVFJVRShiYXIgIT0g
IngiKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpsZW5ndGgoKS4KLVRFU1QoU3RyaW5nVGVzdCwg
TGVuZ3RoKSB7Ci0gIEVYUEVDVF9FUSgwVSwgU3RyaW5nKCkubGVuZ3RoKCkpOwotICBFWFBFQ1Rf
RVEoMFUsIFN0cmluZygiIikubGVuZ3RoKCkpOwotICBFWFBFQ1RfRVEoMlUsIFN0cmluZygiYWIi
KS5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgzVSwgU3RyaW5nKCJhXDBiIiwgMykubGVuZ3RoKCkp
OwotfQotCi0vLyBUZXN0cyBTdHJpbmc6OkVuZHNXaXRoKCkuCi1URVNUKFN0cmluZ1Rlc3QsIEVu
ZHNXaXRoKSB7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiZm9vYmFyIikuRW5kc1dpdGgoImJhciIp
KTsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCJmb29iYXIiKS5FbmRzV2l0aCgiIikpOwotICBFWFBF
Q1RfVFJVRShTdHJpbmcoIiIpLkVuZHNXaXRoKCIiKSk7Ci0KLSAgRVhQRUNUX0ZBTFNFKFN0cmlu
ZygiZm9vYmFyIikuRW5kc1dpdGgoImZvbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiIiku
RW5kc1dpdGgoImZvbyIpKTsKLX0KLQogLy8gVGVzdHMgU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNl
bnNpdGl2ZSgpLgogVEVTVChTdHJpbmdUZXN0LCBFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSkgewot
ICBFWFBFQ1RfVFJVRShTdHJpbmcoImZvb2JhciIpLkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCJC
QVIiKSk7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiZm9vYmFSIikuRW5kc1dpdGhDYXNlSW5zZW5z
aXRpdmUoImJhciIpKTsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCJmb29iYXIiKS5FbmRzV2l0aENh
c2VJbnNlbnNpdGl2ZSgiIikpOwotICBFWFBFQ1RfVFJVRShTdHJpbmcoIiIpLkVuZHNXaXRoQ2Fz
ZUluc2Vuc2l0aXZlKCIiKSk7CisgIEVYUEVDVF9UUlVFKFN0cmluZzo6RW5kc1dpdGhDYXNlSW5z
ZW5zaXRpdmUoImZvb2JhciIsICJCQVIiKSk7CisgIEVYUEVDVF9UUlVFKFN0cmluZzo6RW5kc1dp
dGhDYXNlSW5zZW5zaXRpdmUoImZvb2JhUiIsICJiYXIiKSk7CisgIEVYUEVDVF9UUlVFKFN0cmlu
Zzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImZvb2JhciIsICIiKSk7CisgIEVYUEVDVF9UUlVF
KFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoIiIsICIiKSk7CiAKLSAgRVhQRUNUX0ZB
TFNFKFN0cmluZygiRm9vYmFyIikuRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImZvbyIpKTsKLSAg
RVhQRUNUX0ZBTFNFKFN0cmluZygiZm9vYmFyIikuRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoIkZv
byIpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiIikuRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUo
ImZvbyIpKTsKKyAgRVhQRUNUX0ZBTFNFKFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUo
IkZvb2JhciIsICJmb28iKSk7CisgIEVYUEVDVF9GQUxTRShTdHJpbmc6OkVuZHNXaXRoQ2FzZUlu
c2Vuc2l0aXZlKCJmb29iYXIiLCAiRm9vIikpOworICBFWFBFQ1RfRkFMU0UoU3RyaW5nOjpFbmRz
V2l0aENhc2VJbnNlbnNpdGl2ZSgiIiwgImZvbyIpKTsKIH0KIAogLy8gQysrQnVpbGRlcidzIHBy
ZXByb2Nlc3NvciBpcyBidWdneTsgaXQgZmFpbHMgdG8gZXhwYW5kIG1hY3JvcyB0aGF0CkBAIC0x
MDc5LDg3ICsxMDQ4LDYgQEAgVEVTVChTdHJpbmdUZXN0LCBDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0
cmluZ0VxdWFscykgewogICBFWFBFQ1RfVFJVRShTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZVdpZGVD
U3RyaW5nRXF1YWxzKEwiRk9PQkFSIiwgTCJmb29iYXIiKSk7CiB9CiAKLS8vIFRlc3RzIHRoYXQg
TlVMTCBjYW4gYmUgYXNzaWduZWQgdG8gYSBTdHJpbmcuCi1URVNUKFN0cmluZ1Rlc3QsIENhbkJl
QXNzaWduZWROVUxMKSB7Ci0gIGNvbnN0IFN0cmluZyBzcmMoTlVMTCk7Ci0gIFN0cmluZyBkZXN0
OwotCi0gIGRlc3QgPSBzcmM7Ci0gIEVYUEVDVF9TVFJFUShOVUxMLCBkZXN0LmNfc3RyKCkpOwot
fQotCi0vLyBUZXN0cyB0aGF0IHRoZSBlbXB0eSBzdHJpbmcgIiIgY2FuIGJlIGFzc2lnbmVkIHRv
IGEgU3RyaW5nLgotVEVTVChTdHJpbmdUZXN0LCBDYW5CZUFzc2lnbmVkRW1wdHkpIHsKLSAgY29u
c3QgU3RyaW5nIHNyYygiIik7Ci0gIFN0cmluZyBkZXN0OwotCi0gIGRlc3QgPSBzcmM7Ci0gIEVY
UEVDVF9TVFJFUSgiIiwgZGVzdC5jX3N0cigpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIG5vbi1l
bXB0eSBzdHJpbmcgY2FuIGJlIGFzc2lnbmVkIHRvIGEgU3RyaW5nLgotVEVTVChTdHJpbmdUZXN0
LCBDYW5CZUFzc2lnbmVkTm9uRW1wdHkpIHsKLSAgY29uc3QgU3RyaW5nIHNyYygiaGVsbG8iKTsK
LSAgU3RyaW5nIGRlc3Q7Ci0gIGRlc3QgPSBzcmM7Ci0gIEVYUEVDVF9FUSg1VSwgZGVzdC5sZW5n
dGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiaGVsbG8iLCBkZXN0LmNfc3RyKCkpOwotCi0gIGNvbnN0
IFN0cmluZyBzcmMyKCJ4XDB5IiwgMyk7Ci0gIFN0cmluZyBkZXN0MjsKLSAgZGVzdDIgPSBzcmMy
OwotICBFWFBFQ1RfRVEoM1UsIGRlc3QyLmxlbmd0aCgpKTsKLSAgRVhQRUNUX0VRKCd4JywgZGVz
dDIuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgnXDAnLCBkZXN0Mi5jX3N0cigpWzFdKTsKLSAg
RVhQRUNUX0VRKCd5JywgZGVzdDIuY19zdHIoKVsyXSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBT
dHJpbmcgY2FuIGJlIGFzc2lnbmVkIHRvIGl0c2VsZi4KLVRFU1QoU3RyaW5nVGVzdCwgQ2FuQmVB
c3NpZ25lZFNlbGYpIHsKLSAgU3RyaW5nIGRlc3QoImhlbGxvIik7Ci0KLSAgZGVzdCA9IGRlc3Q7
Ci0gIEVYUEVDVF9TVFJFUSgiaGVsbG8iLCBkZXN0LmNfc3RyKCkpOwotfQotCi0vLyBTdW4gU3R1
ZGlvIDwgMTIgaW5jb3JyZWN0bHkgcmVqZWN0cyB0aGlzIGNvZGUgZHVlIHRvIGFuIG92ZXJsb2Fk
aW5nCi0vLyBhbWJpZ3VpdHkuCi0jaWYgIShkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiBfX1NVTlBS
T19DQyA8IDB4NTkwKQotLy8gVGVzdHMgc3RyZWFtaW5nIGEgU3RyaW5nLgotVEVTVChTdHJpbmdU
ZXN0LCBTdHJlYW1zKSB7Ci0gIEVYUEVDVF9FUShTdHJlYW1hYmxlVG9TdHJpbmcoU3RyaW5nKCkp
LCAiKG51bGwpIik7Ci0gIEVYUEVDVF9FUShTdHJlYW1hYmxlVG9TdHJpbmcoU3RyaW5nKCIiKSks
ICIiKTsKLSAgRVhQRUNUX0VRKFN0cmVhbWFibGVUb1N0cmluZyhTdHJpbmcoImFcMGIiLCAzKSks
ICJhXFwwYiIpOwotfQotI2VuZGlmCi0KLS8vIFRlc3RzIHRoYXQgU3RyaW5nOjpGb3JtYXQoKSB3
b3Jrcy4KLVRFU1QoU3RyaW5nVGVzdCwgRm9ybWF0V29ya3MpIHsKLSAgLy8gTm9ybWFsIGNhc2U6
IHRoZSBmb3JtYXQgc3BlYyBpcyB2YWxpZCwgdGhlIGFyZ3VtZW50cyBtYXRjaCB0aGUKLSAgLy8g
c3BlYywgYW5kIHRoZSByZXN1bHQgaXMgPCA0MDk1IGNoYXJhY3RlcnMuCi0gIEVYUEVDVF9TVFJF
USgiSGVsbG8sIDQyIiwgU3RyaW5nOjpGb3JtYXQoIiVzLCAlZCIsICJIZWxsbyIsIDQyKS5jX3N0
cigpKTsKLQotICAvLyBFZGdlIGNhc2U6IHRoZSByZXN1bHQgaXMgNDA5NSBjaGFyYWN0ZXJzLgot
ICBjaGFyIGJ1ZmZlcls0MDk2XTsKLSAgY29uc3Qgc2l6ZV90IGtTaXplID0gc2l6ZW9mKGJ1ZmZl
cik7Ci0gIG1lbXNldChidWZmZXIsICdhJywga1NpemUgLSAxKTsKLSAgYnVmZmVyW2tTaXplIC0g
MV0gPSAnXDAnOwotICBFWFBFQ1RfU1RSRVEoYnVmZmVyLCBTdHJpbmc6OkZvcm1hdCgiJXMiLCBi
dWZmZXIpLmNfc3RyKCkpOwotCi0gIC8vIFRoZSByZXN1bHQgbmVlZHMgdG8gYmUgNDA5NiBjaGFy
YWN0ZXJzLCBleGNlZWRpbmcgRm9ybWF0KCkncyBsaW1pdC4KLSAgRVhQRUNUX1NUUkVRKCI8Zm9y
bWF0dGluZyBlcnJvciBvciBidWZmZXIgZXhjZWVkZWQ+IiwKLSAgICAgICAgICAgICAgIFN0cmlu
Zzo6Rm9ybWF0KCJ4JXMiLCBidWZmZXIpLmNfc3RyKCkpOwotCi0jaWYgR1RFU1RfT1NfTElOVVgK
LSAgLy8gT24gTGludXgsIGludmFsaWQgZm9ybWF0IHNwZWMgc2hvdWxkIGxlYWQgdG8gYW4gZXJy
b3IgbWVzc2FnZS4KLSAgLy8gSW4gb3RoZXIgZW52aXJvbm1lbnQgKGUuZy4gTVNWQyBvbiBXaW5k
b3dzKSwgU3RyaW5nOjpGb3JtYXQoKSBtYXkKLSAgLy8gc2ltcGx5IGlnbm9yZSBhIGJhZCBmb3Jt
YXQgc3BlYywgc28gdGhpcyBhc3NlcnRpb24gaXMgcnVuIG9uCi0gIC8vIExpbnV4IG9ubHkuCi0g
IEVYUEVDVF9TVFJFUSgiPGZvcm1hdHRpbmcgZXJyb3Igb3IgYnVmZmVyIGV4Y2VlZGVkPiIsCi0g
ICAgICAgICAgICAgICBTdHJpbmc6OkZvcm1hdCgiJSIpLmNfc3RyKCkpOwotI2VuZGlmCi19Ci0K
ICNpZiBHVEVTVF9PU19XSU5ET1dTCiAKIC8vIFRlc3RzIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5n
KCkuCkBAIC0xMTcwLDE3ICsxMDU4LDcgQEAgVEVTVChTdHJpbmdUZXN0LCBTaG93V2lkZUNTdHJp
bmcpIHsKICAgRVhQRUNUX1NUUkVRKCJmb28iLCBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZyhMImZv
byIpLmNfc3RyKCkpOwogfQogCi0vLyBUZXN0cyBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3Rl
ZCgpLgotVEVTVChTdHJpbmdUZXN0LCBTaG93V2lkZUNTdHJpbmdRdW90ZWQpIHsKLSAgRVhQRUNU
X1NUUkVRKCIobnVsbCkiLAotICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdR
dW90ZWQoTlVMTCkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiTFwiXCIiLAotICAgICAgICAg
ICAgICAgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoTCIiKS5jX3N0cigpKTsKLSAgRVhQ
RUNUX1NUUkVRKCJMXCJmb29cIiIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OlNob3dXaWRlQ1N0
cmluZ1F1b3RlZChMImZvbyIpLmNfc3RyKCkpOwotfQotCi0jaWYgR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIFRFU1QoU3RyaW5nVGVzdCwgQW5z
aUFuZFV0ZjE2TnVsbCkgewogICBFWFBFQ1RfRVEoTlVMTCwgU3RyaW5nOjpBbnNpVG9VdGYxNihO
VUxMKSk7CiAgIEVYUEVDVF9FUShOVUxMLCBTdHJpbmc6OlV0ZjE2VG9BbnNpKE5VTEwpKTsKQEAg
LTEyMDMsNyArMTA4MSw3IEBAIFRFU1QoU3RyaW5nVGVzdCwgQW5zaUFuZFV0ZjE2Q29udmVydFBh
dGhDaGFycykgewogICBFWFBFQ1RfRVEoMCwgd2NzbmNtcChMIi46XFwgXCIqPyIsIHV0ZjE2LCAz
KSk7CiAgIGRlbGV0ZSBbXSB1dGYxNjsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAKICNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUwogCkBAIC0xMzE3LDYgKzExOTUsMTcgQEAgVEVTVF9GKEV4cGVjdEZh
dGFsRmFpbHVyZVRlc3QsIENhdGNoZXNGYXRhbEZhbGl1cmUpIHsKICAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoQWRkRmF0YWxGYWlsdXJlKCksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOwogfQog
CisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK1RFU1RfRihFeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LCBBY2NlcHRzU3RyaW5nT2JqZWN0KSB7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFkZEZh
dGFsRmFpbHVyZSgpLCA6OnN0cmluZygiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKSk7Cit9Cisj
ZW5kaWYKKworVEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEFjY2VwdHNTdGRTdHJpbmdP
YmplY3QpIHsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmF0YWxGYWlsdXJlKCksCisgICAg
ICAgICAgICAgICAgICAgICAgIDo6c3RkOjpzdHJpbmcoIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUu
IikpOworfQorCiBURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc0ZhdGFsRmFp
bHVyZU9uQWxsVGhyZWFkcykgewogICAvLyBXZSBoYXZlIGFub3RoZXIgdGVzdCBiZWxvdyB0byB2
ZXJpZnkgdGhhdCB0aGUgbWFjcm8gY2F0Y2hlcyBmYXRhbAogICAvLyBmYWlsdXJlcyBnZW5lcmF0
ZWQgb24gYW5vdGhlciB0aHJlYWQuCkBAIC0xMzI2LDcgKzEyMTUsNyBAQCBURVNUX0YoRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc0ZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcykgewogCiAj
aWZkZWYgX19CT1JMQU5EQ19fCiAvLyBTaWxlbmNlcyB3YXJuaW5nczogIkNvbmRpdGlvbiBpcyBh
bHdheXMgdHJ1ZSIKLSNwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjCisjIHByYWdtYSBvcHRpb24g
cHVzaCAtdy1jY2MKICNlbmRpZgogCiAvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJF
KCkgY2FuIGJlIHVzZWQgaW4gYSBub24tdm9pZApAQCAtMTM1NCw3ICsxMjQzLDcgQEAgdm9pZCBE
b2VzTm90QWJvcnRIZWxwZXIoYm9vbCogYWJvcnRlZCkgewogCiAjaWZkZWYgX19CT1JMQU5EQ19f
CiAvLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2aW91cyAiI3ByYWdtYSBvcHRpb24gcHVz
aCIgc3VwcHJlc3NlZCB0aGVtLgotI3ByYWdtYSBvcHRpb24gcG9wCisjIHByYWdtYSBvcHRpb24g
cG9wCiAjZW5kaWYKIAogVEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIERvZXNOb3RBYm9y
dCkgewpAQCAtMTM3MSw4ICsxMjYwLDggQEAgc3RhdGljIGludCBnbG9iYWxfdmFyID0gMDsKICNk
ZWZpbmUgR1RFU1RfVVNFX1VOUFJPVEVDVEVEX0NPTU1BXyBnbG9iYWxfdmFyKyssIGdsb2JhbF92
YXIrKwogCiBURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgQWNjZXB0c01hY3JvVGhhdEV4
cGFuZHNUb1VucHJvdGVjdGVkQ29tbWEpIHsKLSNpZiAhZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8
IF9fQk9STEFORENfXyA+PSAweDYwMAotICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcuCisj
aWZuZGVmIF9fQk9STEFORENfXworICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyLgogICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRSh7CiAgICAgR1RFU1RfVVNFX1VOUFJPVEVDVEVEX0NPTU1BXzsKICAgICBB
ZGRGYXRhbEZhaWx1cmUoKTsKQEAgLTEzOTQsNiArMTI4MywxOCBAQCBURVNUX0YoRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc05vbmZhdGFsRmFpbHVyZSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7CiB9CiAKKyNpZiBH
VEVTVF9IQVNfR0xPQkFMX1NUUklORworVEVTVF9GKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qs
IEFjY2VwdHNTdHJpbmdPYmplY3QpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQWRkTm9u
ZmF0YWxGYWlsdXJlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIDo6c3RyaW5nKCJFeHBl
Y3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKSk7Cit9CisjZW5kaWYKKworVEVTVF9GKEV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QsIEFjY2VwdHNTdGRTdHJpbmdPYmplY3QpIHsKKyAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoQWRkTm9uZmF0YWxGYWlsdXJlKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIDo6c3RkOjpzdHJpbmcoIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpKTsKK30K
KwogVEVTVF9GKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIENhdGNoZXNOb25mYXRhbEZhaWx1
cmVPbkFsbFRocmVhZHMpIHsKICAgLy8gV2UgaGF2ZSBhbm90aGVyIHRlc3QgYmVsb3cgdG8gdmVy
aWZ5IHRoYXQgdGhlIG1hY3JvIGNhdGNoZXMKICAgLy8gbm9uLWZhdGFsIGZhaWx1cmVzIGdlbmVy
YXRlZCBvbiBhbm90aGVyIHRocmVhZC4KQEAgLTE0ODMsOCArMTM4NCw3IEBAIGNsYXNzIFRlc3RS
ZXN1bHRUZXN0IDogcHVibGljIFRlc3QgewogICAgIC8vIEluIG9yZGVyIHRvIHRlc3QgVGVzdFJl
c3VsdCwgd2UgbmVlZCB0byBtb2RpZnkgaXRzIGludGVybmFsCiAgICAgLy8gc3RhdGUsIGluIHBh
cnRpY3VsYXIgdGhlIFRlc3RQYXJ0UmVzdWx0IHZlY3RvciBpdCBob2xkcy4KICAgICAvLyB0ZXN0
X3BhcnRfcmVzdWx0cygpIHJldHVybnMgYSBjb25zdCByZWZlcmVuY2UgdG8gdGhpcyB2ZWN0b3Iu
Ci0gICAgLy8gV2UgY2FzdCBpdCB0byBhIG5vbi1jb25zdCBvYmplY3Qgcy50LiBpdCBjYW4gYmUg
bW9kaWZpZWQgKHllcywKLSAgICAvLyB0aGlzIGlzIGEgaGFjaykuCisgICAgLy8gV2UgY2FzdCBp
dCB0byBhIG5vbi1jb25zdCBvYmplY3Qgcy50LiBpdCBjYW4gYmUgbW9kaWZpZWQKICAgICBUUFJW
ZWN0b3IqIHJlc3VsdHMxID0gY29uc3RfY2FzdDxUUFJWZWN0b3IqPigKICAgICAgICAgJlRlc3RS
ZXN1bHRBY2Nlc3Nvcjo6dGVzdF9wYXJ0X3Jlc3VsdHMoKnIxKSk7CiAgICAgVFBSVmVjdG9yKiBy
ZXN1bHRzMiA9IGNvbnN0X2Nhc3Q8VFBSVmVjdG9yKj4oCkBAIC0xNTA5LDcgKzE0MDksNyBAQCBj
bGFzcyBUZXN0UmVzdWx0VGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICBkZWxldGUgcjI7CiAgIH0K
IAotICAvLyBIZWxwZXIgdGhhdCBjb21wYXJlcyB0d28gdHdvIFRlc3RQYXJ0UmVzdWx0cy4KKyAg
Ly8gSGVscGVyIHRoYXQgY29tcGFyZXMgdHdvIFRlc3RQYXJ0UmVzdWx0cy4KICAgc3RhdGljIHZv
aWQgQ29tcGFyZVRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBleHBlY3RlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0
JiBhY3R1YWwpIHsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQudHlwZSgpLCBhY3R1YWwudHlwZSgp
KTsKQEAgLTE1NjYsNyArMTQ2Niw3IEBAIFRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgTm9Q
cm9wZXJ0aWVzRm91bmRXaGVuTm9uZUFyZUFkZGVkKSB7CiBURVNUKFRlc3RSZXN1bHRQcm9wZXJ0
eVRlc3QsIE9uZVByb3BlcnR5Rm91bmRXaGVuQWRkZWQpIHsKICAgVGVzdFJlc3VsdCB0ZXN0X3Jl
c3VsdDsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5KCJrZXlfMSIsICIxIik7Ci0gIFRlc3RSZXN1
bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9wZXJ0eSk7CisgIFRl
c3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2Ui
LCBwcm9wZXJ0eSk7CiAgIEFTU0VSVF9FUSgxLCB0ZXN0X3Jlc3VsdC50ZXN0X3Byb3BlcnR5X2Nv
dW50KCkpOwogICBjb25zdCBUZXN0UHJvcGVydHkmIGFjdHVhbF9wcm9wZXJ0eSA9IHRlc3RfcmVz
dWx0LkdldFRlc3RQcm9wZXJ0eSgwKTsKICAgRVhQRUNUX1NUUkVRKCJrZXlfMSIsIGFjdHVhbF9w
cm9wZXJ0eS5rZXkoKSk7CkBAIC0xNTc4LDggKzE0NzgsOCBAQCBURVNUKFRlc3RSZXN1bHRQcm9w
ZXJ0eVRlc3QsIE11bHRpcGxlUHJvcGVydGllc0ZvdW5kV2hlbkFkZGVkKSB7CiAgIFRlc3RSZXN1
bHQgdGVzdF9yZXN1bHQ7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8xKCJrZXlfMSIsICIxIik7
CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8yKCJrZXlfMiIsICIyIik7Ci0gIFRlc3RSZXN1bHRB
Y2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9wZXJ0eV8xKTsKLSAgVGVz
dFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzIp
OworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRl
c3RjYXNlIiwgcHJvcGVydHlfMSk7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVy
dHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8yKTsKICAgQVNTRVJUX0VRKDIs
IHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKSk7CiAgIGNvbnN0IFRlc3RQcm9wZXJ0
eSYgYWN0dWFsX3Byb3BlcnR5XzEgPSB0ZXN0X3Jlc3VsdC5HZXRUZXN0UHJvcGVydHkoMCk7CiAg
IEVYUEVDVF9TVFJFUSgia2V5XzEiLCBhY3R1YWxfcHJvcGVydHlfMS5rZXkoKSk7CkBAIC0xNTk3
LDEwICsxNDk3LDEwIEBAIFRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgT3ZlcnJpZGVzVmFs
dWVzRm9yRHVwbGljYXRlS2V5cykgewogICBUZXN0UHJvcGVydHkgcHJvcGVydHlfMl8xKCJrZXlf
MiIsICIyIik7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8xXzIoImtleV8xIiwgIjEyIik7CiAg
IFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8yXzIoImtleV8yIiwgIjIyIik7Ci0gIFRlc3RSZXN1bHRB
Y2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9wZXJ0eV8xXzEpOwotICBU
ZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlf
Ml8xKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQs
IHByb3BlcnR5XzFfMik7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRl
c3RfcmVzdWx0LCBwcm9wZXJ0eV8yXzIpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFBy
b3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMV8xKTsKKyAgVGVzdFJl
c3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHBy
b3BlcnR5XzJfMSk7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3Rf
cmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8xXzIpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6
OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMl8yKTsK
IAogICBBU1NFUlRfRVEoMiwgdGVzdF9yZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKICAg
Y29uc3QgVGVzdFByb3BlcnR5JiBhY3R1YWxfcHJvcGVydHlfMSA9IHRlc3RfcmVzdWx0LkdldFRl
c3RQcm9wZXJ0eSgwKTsKQEAgLTE2MTMsMTQgKzE1MTMsMTQgQEAgVEVTVChUZXN0UmVzdWx0UHJv
cGVydHlUZXN0LCBPdmVycmlkZXNWYWx1ZXNGb3JEdXBsaWNhdGVLZXlzKSB7CiB9CiAKIC8vIFRl
c3RzIFRlc3RSZXN1bHQ6OkdldFRlc3RQcm9wZXJ0eSgpLgotVEVTVChUZXN0UmVzdWx0UHJvcGVy
dHlEZWF0aFRlc3QsIEdldFRlc3RQcm9wZXJ0eSkgeworVEVTVChUZXN0UmVzdWx0UHJvcGVydHlU
ZXN0LCBHZXRUZXN0UHJvcGVydHkpIHsKICAgVGVzdFJlc3VsdCB0ZXN0X3Jlc3VsdDsKICAgVGVz
dFByb3BlcnR5IHByb3BlcnR5XzEoImtleV8xIiwgIjEiKTsKICAgVGVzdFByb3BlcnR5IHByb3Bl
cnR5XzIoImtleV8yIiwgIjIiKTsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzMoImtleV8zIiwg
IjMiKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQs
IHByb3BlcnR5XzEpOwotICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0
X3Jlc3VsdCwgcHJvcGVydHlfMik7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVy
dHkoJnRlc3RfcmVzdWx0LCBwcm9wZXJ0eV8zKTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNv
cmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzEpOworICBUZXN0
UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwg
cHJvcGVydHlfMik7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3Rf
cmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8zKTsKIAogICBjb25zdCBUZXN0UHJvcGVydHkm
IGZldGNoZWRfcHJvcGVydHlfMSA9IHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgwKTsKICAg
Y29uc3QgVGVzdFByb3BlcnR5JiBmZXRjaGVkX3Byb3BlcnR5XzIgPSB0ZXN0X3Jlc3VsdC5HZXRU
ZXN0UHJvcGVydHkoMSk7CkBAIC0xNjM5LDQxICsxNTM5LDE1IEBAIFRFU1QoVGVzdFJlc3VsdFBy
b3BlcnR5RGVhdGhUZXN0LCBHZXRUZXN0UHJvcGVydHkpIHsKICAgRVhQRUNUX0RFQVRIX0lGX1NV
UFBPUlRFRCh0ZXN0X3Jlc3VsdC5HZXRUZXN0UHJvcGVydHkoLTEpLCAiIik7CiB9CiAKLS8vIFdo
ZW4gYSBwcm9wZXJ0eSB1c2luZyBhIHJlc2VydmVkIGtleSBpcyBzdXBwbGllZCB0byB0aGlzIGZ1
bmN0aW9uLCBpdCB0ZXN0cwotLy8gdGhhdCBhIG5vbi1mYXRhbCBmYWlsdXJlIGlzIGFkZGVkLCBh
IGZhdGFsIGZhaWx1cmUgaXMgbm90IGFkZGVkLCBhbmQgdGhhdCB0aGUKLS8vIHByb3BlcnR5IGlz
IG5vdCByZWNvcmRlZC4KLXZvaWQgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVy
dHlXaXRoUmVzZXJ2ZWRLZXkoY29uc3QgY2hhcioga2V5KSB7Ci0gIFRlc3RSZXN1bHQgdGVzdF9y
ZXN1bHQ7Ci0gIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eShrZXksICIxIik7Ci0gIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKAotICAgICAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgm
dGVzdF9yZXN1bHQsIHByb3BlcnR5KSwKLSAgICAgICJSZXNlcnZlZCBrZXkiKTsKLSAgQVNTRVJU
X0VRKDAsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKSkgPDwgIk5vdCByZWNvcmRl
ZCI7Ci19Ci0KLS8vIEF0dGVtcHRpbmcgdG8gcmVjb3JkaW5nIGEgcHJvcGVydHkgd2l0aCB0aGUg
UmVzZXJ2ZWQgbGl0ZXJhbCAibmFtZSIKLS8vIHNob3VsZCBhZGQgYSBub24tZmF0YWwgZmFpbHVy
ZSBhbmQgdGhlIHByb3BlcnR5IHNob3VsZCBub3QgYmUgcmVjb3JkZWQuCi1URVNUKFRlc3RSZXN1
bHRQcm9wZXJ0eVRlc3QsIEFkZEZhaWx1cmVXaGVuVXNpbmdSZXNlcnZlZEtleUNhbGxlZE5hbWUp
IHsKLSAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRL
ZXkoIm5hbWUiKTsKLX0KLQotLy8gQXR0ZW1wdGluZyB0byByZWNvcmRpbmcgYSBwcm9wZXJ0eSB3
aXRoIHRoZSBSZXNlcnZlZCBsaXRlcmFsICJzdGF0dXMiCi0vLyBzaG91bGQgYWRkIGEgbm9uLWZh
dGFsIGZhaWx1cmUgYW5kIHRoZSBwcm9wZXJ0eSBzaG91bGQgbm90IGJlIHJlY29yZGVkLgotVEVT
VChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBBZGRGYWlsdXJlV2hlblVzaW5nUmVzZXJ2ZWRLZXlD
YWxsZWRTdGF0dXMpIHsKLSAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlX
aXRoUmVzZXJ2ZWRLZXkoInN0YXR1cyIpOwotfQotCi0vLyBBdHRlbXB0aW5nIHRvIHJlY29yZGlu
ZyBhIHByb3BlcnR5IHdpdGggdGhlIFJlc2VydmVkIGxpdGVyYWwgInRpbWUiCi0vLyBzaG91bGQg
YWRkIGEgbm9uLWZhdGFsIGZhaWx1cmUgYW5kIHRoZSBwcm9wZXJ0eSBzaG91bGQgbm90IGJlIHJl
Y29yZGVkLgotVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBBZGRGYWlsdXJlV2hlblVzaW5n
UmVzZXJ2ZWRLZXlDYWxsZWRUaW1lKSB7Ci0gIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGlu
Z1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5KCJ0aW1lIik7Ci19Ci0KLS8vIEF0dGVtcHRpbmcgdG8g
cmVjb3JkaW5nIGEgcHJvcGVydHkgd2l0aCB0aGUgUmVzZXJ2ZWQgbGl0ZXJhbCAiY2xhc3NuYW1l
IgotLy8gc2hvdWxkIGFkZCBhIG5vbi1mYXRhbCBmYWlsdXJlIGFuZCB0aGUgcHJvcGVydHkgc2hv
dWxkIG5vdCBiZSByZWNvcmRlZC4KLVRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgQWRkRmFp
bHVyZVdoZW5Vc2luZ1Jlc2VydmVkS2V5Q2FsbGVkQ2xhc3NuYW1lKSB7Ci0gIEV4cGVjdE5vbkZh
dGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5KCJjbGFzc25hbWUiKTsK
LX0KKy8vIFRlc3RzIHRoZSBUZXN0IGNsYXNzLgorLy8KKy8vIEl0J3MgZGlmZmljdWx0IHRvIHRl
c3QgZXZlcnkgcHVibGljIG1ldGhvZCBvZiB0aGlzIGNsYXNzICh3ZSBhcmUKKy8vIGFscmVhZHkg
c3RyZXRjaGluZyB0aGUgbGltaXQgb2YgR29vZ2xlIFRlc3QgYnkgdXNpbmcgaXQgdG8gdGVzdCBp
dHNlbGYhKS4KKy8vIEZvcnR1bmF0ZWx5LCB3ZSBkb24ndCBoYXZlIHRvIGRvIHRoYXQsIGFzIHdl
IGFyZSBhbHJlYWR5IHRlc3RpbmcKKy8vIHRoZSBmdW5jdGlvbmFsaXRpZXMgb2YgdGhlIFRlc3Qg
Y2xhc3MgZXh0ZW5zaXZlbHkgYnkgdXNpbmcgR29vZ2xlIFRlc3QKKy8vIGFsb25lLgorLy8KKy8v
IFRoZXJlZm9yZSwgdGhpcyBzZWN0aW9uIG9ubHkgY29udGFpbnMgb25lIHRlc3QuCiAKIC8vIFRl
c3RzIHRoYXQgR1Rlc3RGbGFnU2F2ZXIgd29ya3Mgb24gV2luZG93cyBhbmQgTWFjLgogCkBAIC0x
Njk4LDYgKzE1NzIsNyBAQCBjbGFzcyBHVGVzdEZsYWdTYXZlclRlc3QgOiBwdWJsaWMgVGVzdCB7
CiAgICAgR1RFU1RfRkxBRyhyZXBlYXQpID0gMTsKICAgICBHVEVTVF9GTEFHKHNodWZmbGUpID0g
ZmFsc2U7CiAgICAgR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkgPSBrTWF4U3RhY2tUcmFj
ZURlcHRoOworICAgIEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykgPSAiIjsKICAgICBHVEVT
VF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gZmFsc2U7CiAgIH0KIApAQCAtMTcyNCw2ICsxNTk5
LDcgQEAgY2xhc3MgR1Rlc3RGbGFnU2F2ZXJUZXN0IDogcHVibGljIFRlc3QgewogICAgIEVYUEVD
VF9FUSgxLCBHVEVTVF9GTEFHKHJlcGVhdCkpOwogICAgIEVYUEVDVF9GQUxTRShHVEVTVF9GTEFH
KHNodWZmbGUpKTsKICAgICBFWFBFQ1RfRVEoa01heFN0YWNrVHJhY2VEZXB0aCwgR1RFU1RfRkxB
RyhzdGFja190cmFjZV9kZXB0aCkpOworICAgIEVYUEVDVF9TVFJFUSgiIiwgR1RFU1RfRkxBRyhz
dHJlYW1fcmVzdWx0X3RvKS5jX3N0cigpKTsKICAgICBFWFBFQ1RfRkFMU0UoR1RFU1RfRkxBRyh0
aHJvd19vbl9mYWlsdXJlKSk7CiAKICAgICBHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rl
c3RzKSA9IHRydWU7CkBAIC0xNzM5LDggKzE2MTUsMTAgQEAgY2xhc3MgR1Rlc3RGbGFnU2F2ZXJU
ZXN0IDogcHVibGljIFRlc3QgewogICAgIEdURVNUX0ZMQUcocmVwZWF0KSA9IDEwMDsKICAgICBH
VEVTVF9GTEFHKHNodWZmbGUpID0gdHJ1ZTsKICAgICBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2Rl
cHRoKSA9IDE7CisgICAgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSA9ICJsb2NhbGhvc3Q6
MTIzNCI7CiAgICAgR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9IHRydWU7CiAgIH0KKwog
IHByaXZhdGU6CiAgIC8vIEZvciBzYXZpbmcgR29vZ2xlIFRlc3QgZmxhZ3MgZHVyaW5nIHRoaXMg
dGVzdCBjYXNlLgogICBzdGF0aWMgR1Rlc3RGbGFnU2F2ZXIqIHNhdmVyXzsKQEAgLTE3NzMsMTUg
KzE2NTEsMTYgQEAgc3RhdGljIHZvaWQgU2V0RW52KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNo
YXIqIHZhbHVlKSB7CiAgIC8vIEMrK0J1aWxkZXIncyBwdXRlbnYgb25seSBzdG9yZXMgYSBwb2lu
dGVyIHRvIGl0cyBwYXJhbWV0ZXI7IHdlIGhhdmUgdG8KICAgLy8gZW5zdXJlIHRoYXQgdGhlIHN0
cmluZyByZW1haW5zIHZhbGlkIGFzIGxvbmcgYXMgaXQgbWlnaHQgYmUgbmVlZGVkLgogICAvLyBX
ZSB1c2UgYW4gc3RkOjptYXAgdG8gZG8gc28uCi0gIHN0YXRpYyBzdGQ6Om1hcDxTdHJpbmcsIFN0
cmluZyo+IGFkZGVkX2VudjsKKyAgc3RhdGljIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0
cmluZyo+IGFkZGVkX2VudjsKIAogICAvLyBCZWNhdXNlIHB1dGVudiBzdG9yZXMgYSBwb2ludGVy
IHRvIHRoZSBzdHJpbmcgYnVmZmVyLCB3ZSBjYW4ndCBkZWxldGUgdGhlCiAgIC8vIHByZXZpb3Vz
IHN0cmluZyAoaWYgcHJlc2VudCkgdW50aWwgYWZ0ZXIgaXQncyByZXBsYWNlZC4KLSAgU3RyaW5n
ICpwcmV2X2VudiA9IE5VTEw7CisgIHN0ZDo6c3RyaW5nICpwcmV2X2VudiA9IE5VTEw7CiAgIGlm
IChhZGRlZF9lbnYuZmluZChuYW1lKSAhPSBhZGRlZF9lbnYuZW5kKCkpIHsKICAgICBwcmV2X2Vu
diA9IGFkZGVkX2VudltuYW1lXTsKICAgfQotICBhZGRlZF9lbnZbbmFtZV0gPSBuZXcgU3RyaW5n
KChNZXNzYWdlKCkgPDwgbmFtZSA8PCAiPSIgPDwgdmFsdWUpLkdldFN0cmluZygpKTsKKyAgYWRk
ZWRfZW52W25hbWVdID0gbmV3IHN0ZDo6c3RyaW5nKAorICAgICAgKE1lc3NhZ2UoKSA8PCBuYW1l
IDw8ICI9IiA8PCB2YWx1ZSkuR2V0U3RyaW5nKCkpOwogCiAgIC8vIFRoZSBzdGFuZGFyZCBzaWdu
YXR1cmUgb2YgcHV0ZW52IGFjY2VwdHMgYSAnY2hhcionIGFyZ3VtZW50LiBPdGhlcgogICAvLyBp
bXBsZW1lbnRhdGlvbnMsIGxpa2UgQysrQnVpbGRlcidzLCBhY2NlcHQgYSAnY29uc3QgY2hhcion
LgpAQCAtMTgxMyw2ICsxNjkyLDggQEAgVEVTVChJbnQzMkZyb21HVGVzdEVudlRlc3QsIFJldHVy
bnNEZWZhdWx0V2hlblZhcmlhYmxlSXNOb3RTZXQpIHsKICAgRVhQRUNUX0VRKDEwLCBJbnQzMkZy
b21HVGVzdEVudigidGVtcCIsIDEwKSk7CiB9CiAKKyMgaWYgIWRlZmluZWQoR1RFU1RfR0VUX0lO
VDMyX0ZST01fRU5WXykKKwogLy8gVGVzdHMgdGhhdCBJbnQzMkZyb21HVGVzdEVudigpIHJldHVy
bnMgdGhlIGRlZmF1bHQgdmFsdWUgd2hlbiB0aGUKIC8vIGVudmlyb25tZW50IHZhcmlhYmxlIG92
ZXJmbG93cyBhcyBhbiBJbnQzMi4KIFRFU1QoSW50MzJGcm9tR1Rlc3RFbnZUZXN0LCBSZXR1cm5z
RGVmYXVsdFdoZW5WYWx1ZU92ZXJmbG93cykgewpAQCAtMTgzNyw2ICsxNzE4LDggQEAgVEVTVChJ
bnQzMkZyb21HVGVzdEVudlRlc3QsIFJldHVybnNEZWZhdWx0V2hlblZhbHVlSXNJbnZhbGlkKSB7
CiAgIEVYUEVDVF9FUSg1MCwgSW50MzJGcm9tR1Rlc3RFbnYoInRlbXAiLCA1MCkpOwogfQogCisj
IGVuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9HRVRfSU5UMzJfRlJPTV9FTlZfKQorCiAvLyBUZXN0
cyB0aGF0IEludDMyRnJvbUdUZXN0RW52KCkgcGFyc2VzIGFuZCByZXR1cm5zIHRoZSB2YWx1ZSBv
ZiB0aGUKIC8vIGVudmlyb25tZW50IHZhcmlhYmxlIHdoZW4gaXQgcmVwcmVzZW50cyBhIHZhbGlk
IGRlY2ltYWwgaW50ZWdlciBpbgogLy8gdGhlIHJhbmdlIG9mIGFuIEludDMyLgpAQCAtMTkyNSw3
ICsxODA4LDcgQEAgVEVTVChJbnQzMkZyb21FbnZPckRpZURlYXRoVGVzdCwgQWJvcnRzT25GYWls
dXJlKSB7CiB9CiAKIC8vIFRlc3RzIHRoYXQgSW50MzJGcm9tRW52T3JEaWUoKSBhYm9ydHMgd2l0
aCBhbiBlcnJvciBtZXNzYWdlCi0vLyBpZiB0aGUgdmFyaWFibGUgY2Fubm90IGJlIHJlcHJlc250
ZWQgYnkgYW4gSW50MzIuCisvLyBpZiB0aGUgdmFyaWFibGUgY2Fubm90IGJlIHJlcHJlc2VudGVk
IGJ5IGFuIEludDMyLgogVEVTVChJbnQzMkZyb21FbnZPckRpZURlYXRoVGVzdCwgQWJvcnRzT25J
bnQzMk92ZXJmbG93KSB7CiAgIFNldEVudihHVEVTVF9GTEFHX1BSRUZJWF9VUFBFUl8gIlZBUiIs
ICIxMjM0NTY3ODkxMjM0NTY3ODkxMjM0Iik7CiAgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQo
CkBAIC0yMDcwLDYgKzE5NTMsMTczIEBAIFRFU1QoVW5pdFRlc3RUZXN0LCBDYW5HZXRPcmlnaW5h
bFdvcmtpbmdEaXIpIHsKICAgRVhQRUNUX1NUUk5FKFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5v
cmlnaW5hbF93b3JraW5nX2RpcigpLCAiIik7CiB9CiAKK1RFU1QoVW5pdFRlc3RUZXN0LCBSZXR1
cm5zUGxhdXNpYmxlVGltZXN0YW1wKSB7CisgIEVYUEVDVF9MVCgwLCBVbml0VGVzdDo6R2V0SW5z
dGFuY2UoKS0+c3RhcnRfdGltZXN0YW1wKCkpOworICBFWFBFQ1RfTEUoVW5pdFRlc3Q6OkdldElu
c3RhbmNlKCktPnN0YXJ0X3RpbWVzdGFtcCgpLCBHZXRUaW1lSW5NaWxsaXMoKSk7Cit9CisKKy8v
IFdoZW4gYSBwcm9wZXJ0eSB1c2luZyBhIHJlc2VydmVkIGtleSBpcyBzdXBwbGllZCB0byB0aGlz
IGZ1bmN0aW9uLCBpdAorLy8gdGVzdHMgdGhhdCBhIG5vbi1mYXRhbCBmYWlsdXJlIGlzIGFkZGVk
LCBhIGZhdGFsIGZhaWx1cmUgaXMgbm90IGFkZGVkLAorLy8gYW5kIHRoYXQgdGhlIHByb3BlcnR5
IGlzIG5vdCByZWNvcmRlZC4KK3ZvaWQgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJv
cGVydHlXaXRoUmVzZXJ2ZWRLZXkoCisgICAgY29uc3QgVGVzdFJlc3VsdCYgdGVzdF9yZXN1bHQs
IGNvbnN0IGNoYXIqIGtleSkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShUZXN0OjpSZWNv
cmRQcm9wZXJ0eShrZXksICIxIiksICJSZXNlcnZlZCBrZXkiKTsKKyAgQVNTRVJUX0VRKDAsIHRl
c3RfcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKSkgPDwgIlByb3BlcnR5IGZvciBrZXkgJyIg
PDwga2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDw8ICInIHJlY29yZGVkIHVuZXhwZWN0ZWRseS4iOworfQorCit2b2lkIEV4cGVjdE5vbkZhdGFs
RmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCisg
ICAgY29uc3QgY2hhcioga2V5KSB7CisgIGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8gPSBVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKyAgQVNTRVJUX1RSVUUo
dGVzdF9pbmZvICE9IE5VTEwpOworICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9w
ZXJ0eVdpdGhSZXNlcnZlZEtleSgqdGVzdF9pbmZvLT5yZXN1bHQoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5KTsKK30KKwordm9p
ZCBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZv
ckN1cnJlbnRUZXN0Q2FzZSgKKyAgICBjb25zdCBjaGFyKiBrZXkpIHsKKyAgY29uc3QgVGVzdENh
c2UqIHRlc3RfY2FzZSA9IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfY2Fz
ZSgpOworICBBU1NFUlRfVFJVRSh0ZXN0X2Nhc2UgIT0gTlVMTCk7CisgIEV4cGVjdE5vbkZhdGFs
RmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5KAorICAgICAgdGVzdF9jYXNl
LT5hZF9ob2NfdGVzdF9yZXN1bHQoKSwga2V5KTsKK30KKwordm9pZCBFeHBlY3ROb25GYXRhbEZh
aWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAor
ICAgIGNvbnN0IGNoYXIqIGtleSkgeworICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQ
cm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgKKyAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5h
ZF9ob2NfdGVzdF9yZXN1bHQoKSwga2V5KTsKK30KKworLy8gVGVzdHMgdGhhdCBwcm9wZXJ0eSBy
ZWNvcmRpbmcgZnVuY3Rpb25zIGluIFVuaXRUZXN0IG91dHNpZGUgb2YgdGVzdHMKKy8vIGZ1bmN0
aW9ucyBjb3JyZWNseS4gIENyZWF0aW5nIGEgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgVW5pdFRlc3Qg
ZW5zdXJlcyBpdAorLy8gaXMgaW4gYSBzdGF0ZSBzaW1pbGFyIHRvIHRoZSBVbml0VGVzdCdzIHNp
bmdsZXRvbidzIGJldHdlZW4gdGVzdHMuCitjbGFzcyBVbml0VGVzdFJlY29yZFByb3BlcnR5VGVz
dCA6CisgICAgcHVibGljIHRlc3Rpbmc6OmludGVybmFsOjpVbml0VGVzdFJlY29yZFByb3BlcnR5
VGVzdEhlbHBlciB7CisgcHVibGljOgorICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgewor
ICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5
Rm9yQ3VycmVudFRlc3RDYXNlKAorICAgICAgICAiZGlzYWJsZWQiKTsKKyAgICBFeHBlY3ROb25G
YXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0
Q2FzZSgKKyAgICAgICAgImVycm9ycyIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29y
ZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAorICAgICAgICAi
ZmFpbHVyZXMiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdp
dGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICAgICAgIm5hbWUiKTsKKyAgICBF
eHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1
cnJlbnRUZXN0Q2FzZSgKKyAgICAgICAgInRlc3RzIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWls
dXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdENhc2UoCisg
ICAgICAgICJ0aW1lIik7CisKKyAgICBUZXN0OjpSZWNvcmRQcm9wZXJ0eSgidGVzdF9jYXNlX2tl
eV8xIiwgIjEiKTsKKyAgICBjb25zdCBUZXN0Q2FzZSogdGVzdF9jYXNlID0gVW5pdFRlc3Q6Okdl
dEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9jYXNlKCk7CisgICAgQVNTRVJUX1RSVUUodGVzdF9j
YXNlICE9IE5VTEwpOworCisgICAgQVNTRVJUX0VRKDEsIHRlc3RfY2FzZS0+YWRfaG9jX3Rlc3Rf
cmVzdWx0KCkudGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInRlc3Rf
Y2FzZV9rZXlfMSIsCisgICAgICAgICAgICAgICAgIHRlc3RfY2FzZS0+YWRfaG9jX3Rlc3RfcmVz
dWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLmtleSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIjEiLAor
ICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2UtPmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQ
cm9wZXJ0eSgwKS52YWx1ZSgpKTsKKyAgfQorfTsKKworLy8gVGVzdHMgVGVzdFJlc3VsdCBoYXMg
dGhlIGV4cGVjdGVkIHByb3BlcnR5IHdoZW4gYWRkZWQuCitURVNUX0YoVW5pdFRlc3RSZWNvcmRQ
cm9wZXJ0eVRlc3QsIE9uZVByb3BlcnR5Rm91bmRXaGVuQWRkZWQpIHsKKyAgVW5pdFRlc3RSZWNv
cmRQcm9wZXJ0eSgia2V5XzEiLCAiMSIpOworCisgIEFTU0VSVF9FUSgxLCB1bml0X3Rlc3RfLmFk
X2hvY190ZXN0X3Jlc3VsdCgpLnRlc3RfcHJvcGVydHlfY291bnQoKSk7CisKKyAgRVhQRUNUX1NU
UkVRKCJrZXlfMSIsCisgICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3Vs
dCgpLkdldFRlc3RQcm9wZXJ0eSgwKS5rZXkoKSk7CisgIEVYUEVDVF9TVFJFUSgiMSIsCisgICAg
ICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0
eSgwKS52YWx1ZSgpKTsKK30KKworLy8gVGVzdHMgVGVzdFJlc3VsdCBoYXMgbXVsdGlwbGUgcHJv
cGVydGllcyB3aGVuIGFkZGVkLgorVEVTVF9GKFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0LCBN
dWx0aXBsZVByb3BlcnRpZXNGb3VuZFdoZW5BZGRlZCkgeworICBVbml0VGVzdFJlY29yZFByb3Bl
cnR5KCJrZXlfMSIsICIxIik7CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8yIiwgIjIi
KTsKKworICBBU1NFUlRfRVEoMiwgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS50ZXN0
X3Byb3BlcnR5X2NvdW50KCkpOworCisgIEVYUEVDVF9TVFJFUSgia2V5XzEiLAorICAgICAgICAg
ICAgICAgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMCku
a2V5KCkpOworICBFWFBFQ1RfU1RSRVEoIjEiLCB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3Vs
dCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKKworICBFWFBFQ1RfU1RSRVEoImtleV8y
IiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVz
dFByb3BlcnR5KDEpLmtleSgpKTsKKyAgRVhQRUNUX1NUUkVRKCIyIiwgdW5pdF90ZXN0Xy5hZF9o
b2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMSkudmFsdWUoKSk7Cit9CisKKy8vIFRl
c3RzIFRlc3RSZXN1bHQ6OlJlY29yZFByb3BlcnR5KCkgb3ZlcnJpZGVzIHZhbHVlcyBmb3IgZHVw
bGljYXRlIGtleXMuCitURVNUX0YoVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3QsIE92ZXJyaWRl
c1ZhbHVlc0ZvckR1cGxpY2F0ZUtleXMpIHsKKyAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5
XzEiLCAiMSIpOworICBVbml0VGVzdFJlY29yZFByb3BlcnR5KCJrZXlfMiIsICIyIik7CisgIFVu
aXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8xIiwgIjEyIik7CisgIFVuaXRUZXN0UmVjb3JkUHJv
cGVydHkoImtleV8yIiwgIjIyIik7CisKKyAgQVNTRVJUX0VRKDIsIHVuaXRfdGVzdF8uYWRfaG9j
X3Rlc3RfcmVzdWx0KCkudGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKKworICBFWFBFQ1RfU1RSRVEo
ImtleV8xIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCku
R2V0VGVzdFByb3BlcnR5KDApLmtleSgpKTsKKyAgRVhQRUNUX1NUUkVRKCIxMiIsCisgICAgICAg
ICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgw
KS52YWx1ZSgpKTsKKworICBFWFBFQ1RfU1RSRVEoImtleV8yIiwKKyAgICAgICAgICAgICAgIHVu
aXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDEpLmtleSgpKTsK
KyAgRVhQRUNUX1NUUkVRKCIyMiIsCisgICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190
ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgxKS52YWx1ZSgpKTsKK30KKworVEVTVF9GKFVu
aXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0LAorICAgICAgIEFkZEZhaWx1cmVJbnNpZGVUZXN0c1do
ZW5Vc2luZ1Rlc3RDYXNlUmVzZXJ2ZWRLZXlzKSB7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJl
Y29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgICAibmFt
ZSIpOworICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZl
ZEtleUZvckN1cnJlbnRUZXN0KAorICAgICAgInZhbHVlX3BhcmFtIik7CisgIEV4cGVjdE5vbkZh
dGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3Qo
CisgICAgICAidHlwZV9wYXJhbSIpOworICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQ
cm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0KAorICAgICAgInN0YXR1cyIpOwor
ICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZv
ckN1cnJlbnRUZXN0KAorICAgICAgInRpbWUiKTsKKyAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVj
b3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdCgKKyAgICAgICJjbGFz
c25hbWUiKTsKK30KKworVEVTVF9GKFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0LAorICAgICAg
IEFkZFJlY29yZFdpdGhSZXNlcnZlZEtleXNHZW5lcmF0ZXNDb3JyZWN0UHJvcGVydHlMaXN0KSB7
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAorICAgICAgVGVzdDo6UmVjb3JkUHJvcGVydHko
Im5hbWUiLCAiMSIpLAorICAgICAgIidjbGFzc25hbWUnLCAnbmFtZScsICdzdGF0dXMnLCAndGlt
ZScsICd0eXBlX3BhcmFtJywgJ3ZhbHVlX3BhcmFtJywiCisgICAgICAiICdmaWxlJywgYW5kICds
aW5lJyBhcmUgcmVzZXJ2ZWQiKTsKK30KKworY2xhc3MgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRl
c3RFbnZpcm9ubWVudCA6IHB1YmxpYyBFbnZpcm9ubWVudCB7CisgcHVibGljOgorICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJv
cGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgInRlc3RzIik7
CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRL
ZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgImZhaWx1cmVzIik7CisgICAgRXhwZWN0Tm9u
RmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0
Q2FzZSgKKyAgICAgICAgImRpc2FibGVkIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVj
b3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAg
ImVycm9ycyIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0
aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCisgICAgICAgICJuYW1lIik7CisgICAgRXhw
ZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRl
T2ZUZXN0Q2FzZSgKKyAgICAgICAgInRpbWVzdGFtcCIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFp
bHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCisg
ICAgICAgICJ0aW1lIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVy
dHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgInJhbmRvbV9zZWVk
Iik7CisgIH0KK307CisKKy8vIFRoaXMgd2lsbCB0ZXN0IHByb3BlcnR5IHJlY29yZGluZyBvdXRz
aWRlIG9mIGFueSB0ZXN0IG9yIHRlc3QgY2FzZS4KK3N0YXRpYyBFbnZpcm9ubWVudCogcmVjb3Jk
X3Byb3BlcnR5X2VudiA9CisgICAgQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBVbml0VGVz
dFJlY29yZFByb3BlcnR5VGVzdEVudmlyb25tZW50KTsKKwogLy8gVGhpcyBncm91cCBvZiB0ZXN0
cyBpcyBmb3IgcHJlZGljYXRlIGFzc2VydGlvbnMgKEFTU0VSVF9QUkVEKiwgZXRjKQogLy8gb2Yg
dmFyaW91cyBhcml0aWVzLiAgVGhleSBkbyBub3QgYXR0ZW1wdCB0byBiZSBleGhhdXN0aXZlLiAg
UmF0aGVyLAogLy8gdmlldyB0aGVtIGFzIHNtb2tlIHRlc3RzIHRoYXQgY2FuIGJlIGVhc2lseSBy
ZXZpZXdlZCBhbmQgdmVyaWZpZWQuCkBAIC0yNDAxLDcgKzI0NTEsNyBAQCBURVNUKFN0cmluZ0Fz
c2VydGlvblRlc3QsIEFTU0VSVF9TVFJFUSkgewogICBBU1NFUlRfU1RSRVEocDEsIHAyKTsKIAog
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfU1RSRVEoImJhZCIsICJnb29kIiksCi0gICAg
ICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogXCJiYWRcIiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAiICBcImJhZFwiXG4gIFwiZ29vZFwiIik7CiB9CiAKIC8vIFRlc3RzIEFTU0VSVF9T
VFJFUSB3aXRoIE5VTEwgYXJndW1lbnRzLgpAQCAtMjQzNyw3ICsyNDg3LDcgQEAgVEVTVChTdHJp
bmdBc3NlcnRpb25UZXN0LCBBU1NFUlRfU1RSQ0FTRUVRKSB7CiAKICAgQVNTRVJUX1NUUkNBU0VF
USgiIiwgIiIpOwogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfU1RSQ0FTRUVRKCJIaSIs
ICJoaTIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIihpZ25vcmluZyBjYXNlKSIpOworICAg
ICAgICAgICAgICAgICAgICAgICAiSWdub3JpbmcgY2FzZSIpOwogfQogCiAvLyBUZXN0cyBBU1NF
UlRfU1RSQ0FTRU5FLgpAQCAtMjQ3NSw2ICsyNTI1LDExIEBAIFRFU1QoU3RyaW5nQXNzZXJ0aW9u
VGVzdCwgU1RSRVFfV2lkZSkgewogICAvLyBTdHJpbmdzIGNvbnRhaW5pbmcgd2lkZSBjaGFyYWN0
ZXJzLgogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSRVEoTCJhYmNceDgxMTki
LCBMImFiY1x4ODEyMCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjIik7CisKKyAg
Ly8gVGhlIHN0cmVhbWluZyB2YXJpYXRpb24uCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsg
IC8vIE5PTElOVAorICAgIEVYUEVDVF9TVFJFUShMImFiY1x4ODExOSIsIEwiYWJjXHg4MTIxIikg
PDwgIkV4cGVjdGVkIGZhaWx1cmUiOworICB9LCAiRXhwZWN0ZWQgZmFpbHVyZSIpOwogfQogCiAv
LyBUZXN0cyAqX1NUUk5FIG9uIHdpZGUgc3RyaW5ncy4KQEAgLTI1MDEsNiArMjU1Niw5IEBAIFRF
U1QoU3RyaW5nQXNzZXJ0aW9uVGVzdCwgU1RSTkVfV2lkZSkgewogICAvLyBTdHJpbmdzIGNvbnRh
aW5pbmcgd2lkZSBjaGFyYWN0ZXJzLgogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1Rf
U1RSTkUoTCJhYmNceDgxMTkiLCBMImFiY1x4ODExOSIpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAiYWJjIik7CisKKyAgLy8gVGhlIHN0cmVhbWluZyB2YXJpYXRpb24uCisgIEFTU0VSVF9T
VFJORShMImFiY1x4ODExOSIsIEwiYWJjXHg4MTIwIikgPDwgIlRoaXMgc2hvdWxkbid0IGhhcHBl
biI7CiB9CiAKIC8vIFRlc3RzIGZvciA6OnRlc3Rpbmc6OklzU3Vic3RyaW5nKCkuCkBAIC0yNjMx
LDcgKzI2ODksNiBAQCBURVNUKElzTm90U3Vic3RyaW5nVGVzdCwgUmV0dXJuc0NvcnJlY3RSZXN1
bHRGb3JTdGRXc3RyaW5nKSB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmF3VHlwZT4KIGNsYXNzIEZs
b2F0aW5nUG9pbnRUZXN0IDogcHVibGljIFRlc3QgewogIHByb3RlY3RlZDoKLQogICAvLyBQcmUt
Y2FsY3VsYXRlZCBudW1iZXJzIHRvIGJlIHVzZWQgYnkgdGhlIHRlc3RzLgogICBzdHJ1Y3QgVGVz
dFZhbHVlcyB7CiAgICAgUmF3VHlwZSBjbG9zZV90b19wb3NpdGl2ZV96ZXJvOwpAQCAtMzA3OSwx
MyArMzEzNiwxMyBAQCBURVNUKERJU0FCTEVEX1Rlc3RDYXNlLCBESVNBQkxFRF9UZXN0U2hvdWxk
Tm90UnVuKSB7CiAgIEZBSUwoKSA8PCAiVW5leHBlY3RlZCBmYWlsdXJlOiBUZXN0IGluIGRpc2Fi
bGVkIHRlc3QgY2FzZSBzaG91bGQgbm90IGJlIHJ1bi4iOwogfQogCi0vLyBDaGVjayB0aGF0IHdo
ZW4gYWxsIHRlc3RzIGluIGEgdGVzdCBjYXNlIGFyZSBkaXNhYmxlZCwgU2V0dXBUZXN0Q2FzZSgp
IGFuZAorLy8gQ2hlY2sgdGhhdCB3aGVuIGFsbCB0ZXN0cyBpbiBhIHRlc3QgY2FzZSBhcmUgZGlz
YWJsZWQsIFNldFVwVGVzdENhc2UoKSBhbmQKIC8vIFRlYXJEb3duVGVzdENhc2UoKSBhcmUgbm90
IGNhbGxlZC4KIGNsYXNzIERpc2FibGVkVGVzdHNUZXN0IDogcHVibGljIFRlc3QgewogIHByb3Rl
Y3RlZDoKICAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKICAgICBGQUlMKCkgPDwgIlVu
ZXhwZWN0ZWQgZmFpbHVyZTogQWxsIHRlc3RzIGRpc2FibGVkIGluIHRlc3QgY2FzZS4gIgotICAg
ICAgICAgICAgICAiU2V0dXBUZXN0Q2FzZSgpIHNob3VsZCBub3QgYmUgY2FsbGVkLiI7CisgICAg
ICAgICAgICAgICJTZXRVcFRlc3RDYXNlKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQuIjsKICAgfQog
CiAgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7CkBAIC0zMjI0LDcgKzMyODEsNyBA
QCBURVNUX0YoU2luZ2xlRXZhbHVhdGlvblRlc3QsIEFTU0VSVF9TVFIpIHsKIAogICAvLyBmYWls
ZWQgRVhQRUNUX1NUUkNBU0VFUQogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RS
Q0FTRUVRKHAxXysrLCBwMl8rKyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJpZ25vcmlu
ZyBjYXNlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICJJZ25vcmluZyBjYXNlIik7CiAg
IEVYUEVDVF9FUShzMV8gKyAyLCBwMV8pOwogICBFWFBFQ1RfRVEoczJfICsgMiwgcDJfKTsKIH0K
QEAgLTMzMzIsNyArMzM4OSw3IEBAIGNsYXNzIE5vRmF0YWxGYWlsdXJlVGVzdCA6IHB1YmxpYyBU
ZXN0IHsKIAogICB2b2lkIERvQXNzZXJ0Tm9GYXRhbEZhaWx1cmVPbkZhaWxzKCkgewogICAgIEFT
U0VSVF9OT19GQVRBTF9GQUlMVVJFKEZhaWxzKCkpOwotICAgIEFERF9GQUlMVVJFKCkgPDwgInNo
b2xkIG5vdCByZWFjaCBoZXJlLiI7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAic2hvdWxkIG5vdCBy
ZWFjaCBoZXJlLiI7CiAgIH0KIAogICB2b2lkIERvRXhwZWN0Tm9GYXRhbEZhaWx1cmVPbkZhaWxz
KCkgewpAQCAtMzQxMiw1OSArMzQ2OSwxNTcgQEAgVEVTVF9GKE5vRmF0YWxGYWlsdXJlVGVzdCwg
TWVzc2FnZUlzU3RyZWFtYWJsZSkgewogCiAvLyBUZXN0cyBub24tc3RyaW5nIGFzc2VydGlvbnMu
CiAKK3N0ZDo6c3RyaW5nIEVkaXRzVG9TdHJpbmcoY29uc3Qgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+
JiBlZGl0cykgeworICBzdGQ6OnN0cmluZyBvdXQ7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZWRpdHMuc2l6ZSgpOyArK2kpIHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBrRWRpdHNbXSA9ICIg
Ky0vIjsKKyAgICBvdXQuYXBwZW5kKDEsIGtFZGl0c1tlZGl0c1tpXV0pOworICB9CisgIHJldHVy
biBvdXQ7Cit9CisKK3N0ZDo6dmVjdG9yPHNpemVfdD4gQ2hhcnNUb0luZGljZXMoY29uc3Qgc3Rk
OjpzdHJpbmcmIHN0cikgeworICBzdGQ6OnZlY3RvcjxzaXplX3Q+IG91dDsKKyAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzdHIuc2l6ZSgpOyArK2kpIHsKKyAgICBvdXQucHVzaF9iYWNrKHN0cltp
XSk7CisgIH0KKyAgcmV0dXJuIG91dDsKK30KKworc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IENo
YXJzVG9MaW5lcyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiBvdXQ7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyLnNpemUoKTsgKytpKSB7
CisgICAgb3V0LnB1c2hfYmFjayhzdHIuc3Vic3RyKGksIDEpKTsKKyAgfQorICByZXR1cm4gb3V0
OworfQorCitURVNUKEVkaXREaXN0YW5jZSwgVGVzdENhc2VzKSB7CisgIHN0cnVjdCBDYXNlIHsK
KyAgICBpbnQgbGluZTsKKyAgICBjb25zdCBjaGFyKiBsZWZ0OworICAgIGNvbnN0IGNoYXIqIHJp
Z2h0OworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkX2VkaXRzOworICAgIGNvbnN0IGNoYXIqIGV4
cGVjdGVkX2RpZmY7CisgIH07CisgIHN0YXRpYyBjb25zdCBDYXNlIGtDYXNlc1tdID0geworICAg
ICAgLy8gTm8gY2hhbmdlLgorICAgICAge19fTElORV9fLCAiQSIsICJBIiwgIiAiLCAiIn0sCisg
ICAgICB7X19MSU5FX18sICJBQkNERSIsICJBQkNERSIsICIgICAgICIsICIifSwKKyAgICAgIC8v
IFNpbXBsZSBhZGRzLgorICAgICAge19fTElORV9fLCAiWCIsICJYQSIsICIgKyIsICJAQCArMSwy
IEBAXG4gWFxuK0FcbiJ9LAorICAgICAge19fTElORV9fLCAiWCIsICJYQUJDRCIsICIgKysrKyIs
ICJAQCArMSw1IEBAXG4gWFxuK0FcbitCXG4rQ1xuK0RcbiJ9LAorICAgICAgLy8gU2ltcGxlIHJl
bW92ZXMuCisgICAgICB7X19MSU5FX18sICJYQSIsICJYIiwgIiAtIiwgIkBAIC0xLDIgQEBcbiBY
XG4tQVxuIn0sCisgICAgICB7X19MSU5FX18sICJYQUJDRCIsICJYIiwgIiAtLS0tIiwgIkBAIC0x
LDUgQEBcbiBYXG4tQVxuLUJcbi1DXG4tRFxuIn0sCisgICAgICAvLyBTaW1wbGUgcmVwbGFjZXMu
CisgICAgICB7X19MSU5FX18sICJBIiwgImEiLCAiLyIsICJAQCAtMSwxICsxLDEgQEBcbi1BXG4r
YVxuIn0sCisgICAgICB7X19MSU5FX18sICJBQkNEIiwgImFiY2QiLCAiLy8vLyIsCisgICAgICAg
IkBAIC0xLDQgKzEsNCBAQFxuLUFcbi1CXG4tQ1xuLURcbithXG4rYlxuK2NcbitkXG4ifSwKKyAg
ICAgIC8vIFBhdGggZmluZGluZy4KKyAgICAgIHtfX0xJTkVfXywgIkFCQ0RFRkdIIiwgIkFCWEVH
SDEiLCAiICAtLyAtICArIiwKKyAgICAgICAiQEAgLTEsOCArMSw3IEBAXG4gQVxuIEJcbi1DXG4t
RFxuK1hcbiBFXG4tRlxuIEdcbiBIXG4rMVxuIn0sCisgICAgICB7X19MSU5FX18sICJBQUFBQkND
Q0MiLCAiQUJBQkNEQ0RDIiwgIi0gLyAgICsgLyAiLAorICAgICAgICJAQCAtMSw5ICsxLDkgQEBc
bi1BXG4gQVxuLUFcbitCXG4gQVxuIEJcbiBDXG4rRFxuIENcbi1DXG4rRFxuIENcbiJ9LAorICAg
ICAge19fTElORV9fLCAiQUJDREUiLCAiQkNEQ0QiLCAiLSAgICsvIiwKKyAgICAgICAiQEAgLTEs
NSArMSw1IEBAXG4tQVxuIEJcbiBDXG4gRFxuLUVcbitDXG4rRFxuIn0sCisgICAgICB7X19MSU5F
X18sICJBQkNERUZHSElKS0wiLCAiQkNEQ0RFRkdKS0xKSyIsICItICsrICAgICAtLSAgICsrIiwK
KyAgICAgICAiQEAgLTEsNCArMSw1IEBAXG4tQVxuIEJcbitDXG4rRFxuIENcbiBEXG4iCisgICAg
ICAgIkBAIC02LDcgKzcsNyBAQFxuIEZcbiBHXG4tSFxuLUlcbiBKXG4gS1xuIExcbitKXG4rS1xu
In0sCisgICAgICB7fX07CisgIGZvciAoY29uc3QgQ2FzZSogYyA9IGtDYXNlczsgYy0+bGVmdDsg
KytjKSB7CisgICAgRVhQRUNUX1RSVUUoYy0+ZXhwZWN0ZWRfZWRpdHMgPT0KKyAgICAgICAgICAg
ICAgICBFZGl0c1RvU3RyaW5nKENhbGN1bGF0ZU9wdGltYWxFZGl0cyhDaGFyc1RvSW5kaWNlcyhj
LT5sZWZ0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDaGFyc1RvSW5kaWNlcyhjLT5yaWdodCkpKSkKKyAgICAgICAgPDwgIkxlZnQgPCIgPDwg
Yy0+bGVmdCA8PCAiPiBSaWdodCA8IiA8PCBjLT5yaWdodCA8PCAiPiBFZGl0cyA8IgorICAgICAg
ICA8PCBFZGl0c1RvU3RyaW5nKENhbGN1bGF0ZU9wdGltYWxFZGl0cygKKyAgICAgICAgICAgICAg
IENoYXJzVG9JbmRpY2VzKGMtPmxlZnQpLCBDaGFyc1RvSW5kaWNlcyhjLT5yaWdodCkpKSA8PCAi
PiI7CisgICAgRVhQRUNUX1RSVUUoYy0+ZXhwZWN0ZWRfZGlmZiA9PSBDcmVhdGVVbmlmaWVkRGlm
ZihDaGFyc1RvTGluZXMoYy0+bGVmdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDaGFyc1RvTGluZXMoYy0+cmlnaHQpKSkKKyAgICAgICAg
PDwgIkxlZnQgPCIgPDwgYy0+bGVmdCA8PCAiPiBSaWdodCA8IiA8PCBjLT5yaWdodCA8PCAiPiBE
aWZmIDwiCisgICAgICAgIDw8IENyZWF0ZVVuaWZpZWREaWZmKENoYXJzVG9MaW5lcyhjLT5sZWZ0
KSwgQ2hhcnNUb0xpbmVzKGMtPnJpZ2h0KSkKKyAgICAgICAgPDwgIj4iOworICB9Cit9CisKIC8v
IFRlc3RzIEVxRmFpbHVyZSgpLCB1c2VkIGZvciBpbXBsZW1lbnRpbmcgKkVRKiBhc3NlcnRpb25z
LgogVEVTVChBc3NlcnRpb25UZXN0LCBFcUZhaWx1cmUpIHsKLSAgY29uc3QgU3RyaW5nIGZvb192
YWwoIjUiKSwgYmFyX3ZhbCgiNiIpOwotICBjb25zdCBTdHJpbmcgbXNnMSgKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcgZm9vX3ZhbCgiNSIpLCBiYXJfdmFsKCI2Iik7CisgIGNvbnN0IHN0ZDo6c3RyaW5n
IG1zZzEoCiAgICAgICBFcUZhaWx1cmUoImZvbyIsICJiYXIiLCBmb29fdmFsLCBiYXJfdmFsLCBm
YWxzZSkKICAgICAgIC5mYWlsdXJlX21lc3NhZ2UoKSk7CiAgIEVYUEVDVF9TVFJFUSgKLSAgICAg
ICJWYWx1ZSBvZjogYmFyXG4iCi0gICAgICAiICBBY3R1YWw6IDZcbiIKLSAgICAgICJFeHBlY3Rl
ZDogZm9vXG4iCi0gICAgICAiV2hpY2ggaXM6IDUiLAorICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5
IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICIgIGZvb1xuIgorICAgICAgIiAgICBXaGljaCBp
czogNVxuIgorICAgICAgIiAgYmFyXG4iCisgICAgICAiICAgIFdoaWNoIGlzOiA2IiwKICAgICAg
IG1zZzEuY19zdHIoKSk7CiAKLSAgY29uc3QgU3RyaW5nIG1zZzIoCisgIGNvbnN0IHN0ZDo6c3Ry
aW5nIG1zZzIoCiAgICAgICBFcUZhaWx1cmUoImZvbyIsICI2IiwgZm9vX3ZhbCwgYmFyX3ZhbCwg
ZmFsc2UpCiAgICAgICAuZmFpbHVyZV9tZXNzYWdlKCkpOwogICBFWFBFQ1RfU1RSRVEoCi0gICAg
ICAiVmFsdWUgb2Y6IDZcbiIKLSAgICAgICJFeHBlY3RlZDogZm9vXG4iCi0gICAgICAiV2hpY2gg
aXM6IDUiLAorICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAg
ICAgICIgIGZvb1xuIgorICAgICAgIiAgICBXaGljaCBpczogNVxuIgorICAgICAgIiAgNiIsCiAg
ICAgICBtc2cyLmNfc3RyKCkpOwogCi0gIGNvbnN0IFN0cmluZyBtc2czKAorICBjb25zdCBzdGQ6
OnN0cmluZyBtc2czKAogICAgICAgRXFGYWlsdXJlKCI1IiwgImJhciIsIGZvb192YWwsIGJhcl92
YWwsIGZhbHNlKQogICAgICAgLmZhaWx1cmVfbWVzc2FnZSgpKTsKICAgRVhQRUNUX1NUUkVRKAot
ICAgICAgIlZhbHVlIG9mOiBiYXJcbiIKLSAgICAgICIgIEFjdHVhbDogNlxuIgotICAgICAgIkV4
cGVjdGVkOiA1IiwKKyAgICAgICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4i
CisgICAgICAiICA1XG4iCisgICAgICAiICBiYXJcbiIKKyAgICAgICIgICAgV2hpY2ggaXM6IDYi
LAogICAgICAgbXNnMy5jX3N0cigpKTsKIAotICBjb25zdCBTdHJpbmcgbXNnNCgKKyAgY29uc3Qg
c3RkOjpzdHJpbmcgbXNnNCgKICAgICAgIEVxRmFpbHVyZSgiNSIsICI2IiwgZm9vX3ZhbCwgYmFy
X3ZhbCwgZmFsc2UpLmZhaWx1cmVfbWVzc2FnZSgpKTsKICAgRVhQRUNUX1NUUkVRKAotICAgICAg
IlZhbHVlIG9mOiA2XG4iCi0gICAgICAiRXhwZWN0ZWQ6IDUiLAorICAgICAgIkV4cGVjdGVkIGVx
dWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICIgIDVcbiIKKyAgICAgICIgIDYiLAog
ICAgICAgbXNnNC5jX3N0cigpKTsKIAotICBjb25zdCBTdHJpbmcgbXNnNSgKKyAgY29uc3Qgc3Rk
OjpzdHJpbmcgbXNnNSgKICAgICAgIEVxRmFpbHVyZSgiZm9vIiwgImJhciIsCi0gICAgICAgICAg
ICAgICAgU3RyaW5nKCJcInhcIiIpLCBTdHJpbmcoIlwieVwiIiksCisgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmcoIlwieFwiIiksIHN0ZDo6c3RyaW5nKCJcInlcIiIpLAogICAgICAgICAgICAg
ICAgIHRydWUpLmZhaWx1cmVfbWVzc2FnZSgpKTsKICAgRVhQRUNUX1NUUkVRKAotICAgICAgIlZh
bHVlIG9mOiBiYXJcbiIKLSAgICAgICIgIEFjdHVhbDogXCJ5XCJcbiIKLSAgICAgICJFeHBlY3Rl
ZDogZm9vIChpZ25vcmluZyBjYXNlKVxuIgotICAgICAgIldoaWNoIGlzOiBcInhcIiIsCisgICAg
ICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgIiAgZm9vXG4i
CisgICAgICAiICAgIFdoaWNoIGlzOiBcInhcIlxuIgorICAgICAgIiAgYmFyXG4iCisgICAgICAi
ICAgIFdoaWNoIGlzOiBcInlcIlxuIgorICAgICAgIklnbm9yaW5nIGNhc2UiLAogICAgICAgbXNn
NS5jX3N0cigpKTsKIH0KIAorVEVTVChBc3NlcnRpb25UZXN0LCBFcUZhaWx1cmVXaXRoRGlmZikg
eworICBjb25zdCBzdGQ6OnN0cmluZyBsZWZ0KAorICAgICAgIjFcXG4yWFhYXFxuM1xcbjVcXG42
XFxuN1xcbjhcXG45XFxuMTBcXG4xMVxcbjEyWFhYXFxuMTNcXG4xNFxcbjE1Iik7CisgIGNvbnN0
IHN0ZDo6c3RyaW5nIHJpZ2h0KAorICAgICAgIjFcXG4yXFxuM1xcbjRcXG41XFxuNlxcbjdcXG44
XFxuOVxcbjExXFxuMTJcXG4xM1xcbjE0Iik7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG1zZzEoCisg
ICAgICBFcUZhaWx1cmUoImxlZnQiLCAicmlnaHQiLCBsZWZ0LCByaWdodCwgZmFsc2UpLmZhaWx1
cmVfbWVzc2FnZSgpKTsKKyAgRVhQRUNUX1NUUkVRKAorICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5
IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICIgIGxlZnRcbiIKKyAgICAgICIgICAgV2hpY2gg
aXM6ICIKKyAgICAgICIxXFxuMlhYWFxcbjNcXG41XFxuNlxcbjdcXG44XFxuOVxcbjEwXFxuMTFc
XG4xMlhYWFxcbjEzXFxuMTRcXG4xNVxuIgorICAgICAgIiAgcmlnaHRcbiIKKyAgICAgICIgICAg
V2hpY2ggaXM6IDFcXG4yXFxuM1xcbjRcXG41XFxuNlxcbjdcXG44XFxuOVxcbjExXFxuMTJcXG4x
M1xcbjE0XG4iCisgICAgICAiV2l0aCBkaWZmOlxuQEAgLTEsNSArMSw2IEBAXG4gMVxuLTJYWFhc
bisyXG4gM1xuKzRcbiA1XG4gNlxuIgorICAgICAgIkBAIC03LDggKzgsNiBAQFxuIDhcbiA5XG4t
MTBcbiAxMVxuLTEyWFhYXG4rMTJcbiAxM1xuIDE0XG4tMTVcbiIsCisgICAgICBtc2cxLmNfc3Ry
KCkpOworfQorCiAvLyBUZXN0cyBBcHBlbmRVc2VyTWVzc2FnZSgpLCB1c2VkIGZvciBpbXBsZW1l
bnRpbmcgdGhlICpFUSogbWFjcm9zLgogVEVTVChBc3NlcnRpb25UZXN0LCBBcHBlbmRVc2VyTWVz
c2FnZSkgewotICBjb25zdCBTdHJpbmcgZm9vKCJmb28iKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcg
Zm9vKCJmb28iKTsKIAogICBNZXNzYWdlIG1zZzsKICAgRVhQRUNUX1NUUkVRKCJmb28iLApAQCAt
MzQ3Nyw3ICszNjMyLDcgQEAgVEVTVChBc3NlcnRpb25UZXN0LCBBcHBlbmRVc2VyTWVzc2FnZSkg
ewogCiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBTaWxlbmNlcyB3YXJuaW5nczogIkNvbmRpdGlv
biBpcyBhbHdheXMgdHJ1ZSIsICJVbnJlYWNoYWJsZSBjb2RlIgotI3ByYWdtYSBvcHRpb24gcHVz
aCAtdy1jY2MgLXctcmNoCisjIHByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCiAjZW5k
aWYKIAogLy8gVGVzdHMgQVNTRVJUX1RSVUUuCkBAIC0zNDkwLDggKzM2NDUsOCBAQCBURVNUKEFz
c2VydGlvblRlc3QsIEFTU0VSVF9UUlVFKSB7CiAvLyBUZXN0cyBBU1NFUlRfVFJVRShwcmVkaWNh
dGUpIGZvciBwcmVkaWNhdGVzIHJldHVybmluZyBBc3NlcnRpb25SZXN1bHQuCiBURVNUKEFzc2Vy
dGlvblRlc3QsIEFzc2VydFRydWVXaXRoQXNzZXJ0aW9uUmVzdWx0KSB7CiAgIEFTU0VSVF9UUlVF
KFJlc3VsdElzRXZlbigyKSk7Ci0jaWYgIWRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCBfX0JPUkxB
TkRDX18gPj0gMHg2MDAKLSAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlciAyMDA3LgorI2lmbmRlZiBf
X0JPUkxBTkRDX18KKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4KICAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoQVNTRVJUX1RSVUUoUmVzdWx0SXNFdmVuKDMpKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIlZhbHVlIG9mOiBSZXN1bHRJc0V2ZW4oMylcbiIKICAgICAgICAgICAgICAgICAgICAgICAg
IiAgQWN0dWFsOiBmYWxzZSAoMyBpcyBvZGQpXG4iCkBAIC0zNTE2LDggKzM2NzEsOCBAQCBURVNU
KEFzc2VydGlvblRlc3QsIEFTU0VSVF9GQUxTRSkgewogLy8gVGVzdHMgQVNTRVJUX0ZBTFNFKHBy
ZWRpY2F0ZSkgZm9yIHByZWRpY2F0ZXMgcmV0dXJuaW5nIEFzc2VydGlvblJlc3VsdC4KIFRFU1Qo
QXNzZXJ0aW9uVGVzdCwgQXNzZXJ0RmFsc2VXaXRoQXNzZXJ0aW9uUmVzdWx0KSB7CiAgIEFTU0VS
VF9GQUxTRShSZXN1bHRJc0V2ZW4oMykpOwotI2lmICFkZWZpbmVkKF9fQk9STEFORENfXykgfHwg
X19CT1JMQU5EQ19fID49IDB4NjAwCi0gIC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAwNy4KKyNp
Zm5kZWYgX19CT1JMQU5EQ19fCisgIC8vIElDRSdzIGluIEMrK0J1aWxkZXIuCiAgIEVYUEVDVF9G
QVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShSZXN1bHRJc0V2ZW4oMikpLAogICAgICAgICAgICAg
ICAgICAgICAgICAiVmFsdWUgb2Y6IFJlc3VsdElzRXZlbigyKVxuIgogICAgICAgICAgICAgICAg
ICAgICAgICAiICBBY3R1YWw6IHRydWUgKDIgaXMgZXZlbilcbiIKQEAgLTM1MzEsOCArMzY4Niw4
IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0RmFsc2VXaXRoQXNzZXJ0aW9uUmVzdWx0KSB7
CiB9CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KLS8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHBy
ZXZpb3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXByZXNzZWQgdGhlbQotI3ByYWdtYSBvcHRp
b24gcG9wCisvLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2aW91cyAiI3ByYWdtYSBvcHRp
b24gcHVzaCIgc3VwcHJlc3NlZCB0aGVtCisjIHByYWdtYSBvcHRpb24gcG9wCiAjZW5kaWYKIAog
Ly8gVGVzdHMgdXNpbmcgQVNTRVJUX0VRIG9uIGRvdWJsZSB2YWx1ZXMuICBUaGUgcHVycG9zZSBp
cyB0byBtYWtlCkBAIC0zNTUxLDkgKzM3MDYsMTAgQEAgVEVTVChFeHBlY3RUZXN0LCBBU1NFUlRf
RVFfRG91YmxlKSB7CiBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9FUSkgewogICBBU1NFUlRf
RVEoNSwgMiArIDMpOwogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoNSwgMiozKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiAyKjNcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgIiAgQWN0dWFsOiA2XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3Rl
ZDogNSIpOworICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhl
c2UgdmFsdWVzOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAiICA1XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICIgIDIqM1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIFdoaWNo
IGlzOiA2Iik7CiB9CiAKIC8vIFRlc3RzIEFTU0VSVF9FUShOVUxMLCBwb2ludGVyKS4KQEAgLTM1
NjEsNyArMzcxNyw3IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0VRKSB7CiBURVNUKEFz
c2VydGlvblRlc3QsIEFTU0VSVF9FUV9OVUxMKSB7CiAgIC8vIEEgc3VjY2Vzcy4KICAgY29uc3Qg
Y2hhciogcCA9IE5VTEw7Ci0gIC8vIFNvbWUgb2xkZXIgR0NDIHZlcnNpb25zIG1heSBpc3N1ZSBh
IHNwdXJpb3VzIHdhcmluZyBpbiB0aGlzIG9yIHRoZSBuZXh0CisgIC8vIFNvbWUgb2xkZXIgR0ND
IHZlcnNpb25zIG1heSBpc3N1ZSBhIHNwdXJpb3VzIHdhcm5pbmcgaW4gdGhpcyBvciB0aGUgbmV4
dAogICAvLyBhc3NlcnRpb24gc3RhdGVtZW50LiBUaGlzIHdhcm5pbmcgc2hvdWxkIG5vdCBiZSBz
dXBwcmVzc2VkIHdpdGgKICAgLy8gc3RhdGljX2Nhc3Qgc2luY2UgdGhlIHRlc3QgdmVyaWZpZXMg
dGhlIGFiaWxpdHkgdG8gdXNlIGJhcmUgTlVMTCBhcyB0aGUKICAgLy8gZXhwZWN0ZWQgcGFyYW1l
dGVyIHRvIHRoZSBtYWNyby4KQEAgLTM1NzAsNyArMzcyNiw3IEBAIFRFU1QoQXNzZXJ0aW9uVGVz
dCwgQVNTRVJUX0VRX05VTEwpIHsKICAgLy8gQSBmYWlsdXJlLgogICBzdGF0aWMgaW50IG4gPSAw
OwogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoTlVMTCwgJm4pLAotICAgICAgICAg
ICAgICAgICAgICAgICAiVmFsdWUgb2Y6ICZuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IiAgJm5cbiAgICBXaGljaCBpczoiKTsKIH0KICNlbmRpZiAgLy8gR1RFU1RfQ0FOX0NPTVBBUkVf
TlVMTAogCkBAIC0zNTg2LDcgKzM3NDIsNyBAQCBURVNUKEV4cGVjdFRlc3QsIEFTU0VSVF9FUV8w
KSB7CiAKICAgLy8gQSBmYWlsdXJlLgogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEo
MCwgNS42KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiAwIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICIgIDBcbiAgNS42Iik7CiB9CiAKIC8vIFRlc3RzIEFTU0VSVF9ORS4K
QEAgLTM2MzUsMTMgKzM3OTEsMTQgQEAgdm9pZCBUaHJvd05vdGhpbmcoKSB7fQogVEVTVChBc3Nl
cnRpb25UZXN0LCBBU1NFUlRfVEhST1cpIHsKICAgQVNTRVJUX1RIUk9XKFRocm93QW5JbnRlZ2Vy
KCksIGludCk7CiAKLSNpZm5kZWYgX19CT1JMQU5EQ19fCisjIGlmbmRlZiBfX0JPUkxBTkRDX18K
KwogICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcgYW5kIDIwMDkuCiAgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKAogICAgICAgQVNTRVJUX1RIUk9XKFRocm93QW5JbnRlZ2VyKCksIGJvb2wpLAog
ICAgICAgIkV4cGVjdGVkOiBUaHJvd0FuSW50ZWdlcigpIHRocm93cyBhbiBleGNlcHRpb24gb2Yg
dHlwZSBib29sLlxuIgogICAgICAgIiAgQWN0dWFsOiBpdCB0aHJvd3MgYSBkaWZmZXJlbnQgdHlw
ZS4iKTsKLSNlbmRpZgorIyBlbmRpZgogCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKAogICAgICAg
QVNTRVJUX1RIUk9XKFRocm93Tm90aGluZygpLCBib29sKSwKQEAgLTM2NzIsNyArMzgyOSw4IEBA
IFRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0FOWV9USFJPVykgewogLy8gY29tcGlsZS4KIFRF
U1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0UHJlY2VkZW5jZSkgewogICBBU1NFUlRfRVEoMSA8IDIs
IHRydWUpOwotICBBU1NFUlRfRVEodHJ1ZSAmJiBmYWxzZSwgZmFsc2UpOworICBib29sIGZhbHNl
X3ZhbHVlID0gZmFsc2U7CisgIEFTU0VSVF9FUSh0cnVlICYmIGZhbHNlX3ZhbHVlLCBmYWxzZSk7
CiB9CiAKIC8vIEEgc3Vicm91dGluZSB1c2VkIGJ5IHRoZSBmb2xsb3dpbmcgdGVzdC4KQEAgLTM2
ODMsNyArMzg0MSw3IEBAIHZvaWQgVGVzdEVxMShpbnQgeCkgewogLy8gVGVzdHMgY2FsbGluZyBh
IHRlc3Qgc3Vicm91dGluZSB0aGF0J3Mgbm90IHBhcnQgb2YgYSBmaXh0dXJlLgogVEVTVChBc3Nl
cnRpb25UZXN0LCBOb25GaXh0dXJlU3Vicm91dGluZSkgewogICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RShUZXN0RXExKDIpLAotICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IHgiKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIiAgeFxuICAgIFdoaWNoIGlzOiAyIik7CiB9CiAKIC8vIEFu
IHVuY29weWFibGUgY2xhc3MuCkBAIC0zNzMyLDcgKzM4OTAsOCBAQCBURVNUKEFzc2VydGlvblRl
c3QsIEFzc2VydFdvcmtzV2l0aFVuY29weWFibGVPYmplY3QpIHsKICAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoVGVzdEFzc2VydE5vblBvc2l0aXZlKCksCiAgICAgIklzUG9zaXRpdmVVbmNvcHlhYmxl
KHkpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmVcbnkgZXZhbHVhdGVzIHRvIC0xIik7CiAgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKFRlc3RBc3NlcnRFcXVhbHNVbmNvcHlhYmxlKCksCi0gICAgIlZh
bHVlIG9mOiB5XG4gIEFjdHVhbDogLTFcbkV4cGVjdGVkOiB4XG5XaGljaCBpczogNSIpOworICAg
ICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxu
IgorICAgICAgICAgICAgICAgICAgICAgICAiICB4XG4gICAgV2hpY2ggaXM6IDVcbiAgeVxuICAg
IFdoaWNoIGlzOiAtMSIpOwogfQogCiAvLyBUZXN0cyB0aGF0IHVuY29weWFibGUgb2JqZWN0cyBj
YW4gYmUgdXNlZCBpbiBleHBlY3RzLgpAQCAtMzc0NCw1NyArMzkwMyw5MCBAQCBURVNUKEFzc2Vy
dGlvblRlc3QsIEV4cGVjdFdvcmtzV2l0aFVuY29weWFibGVPYmplY3QpIHsKICAgICAiSXNQb3Np
dGl2ZVVuY29weWFibGUoeSkgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZVxueSBldmFsdWF0ZXMg
dG8gLTEiKTsKICAgRVhQRUNUX0VRKHgsIHgpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShF
WFBFQ1RfRVEoeCwgeSksCi0gICAgIlZhbHVlIG9mOiB5XG4gIEFjdHVhbDogLTFcbkV4cGVjdGVk
OiB4XG5XaGljaCBpczogNSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQg
ZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAi
ICB4XG4gICAgV2hpY2ggaXM6IDVcbiAgeVxuICAgIFdoaWNoIGlzOiAtMSIpOwogfQogCitlbnVt
IE5hbWVkRW51bSB7CisgIGtFMSA9IDAsCisgIGtFMiA9IDEKK307CisKK1RFU1QoQXNzZXJ0aW9u
VGVzdCwgTmFtZWRFbnVtKSB7CisgIEVYUEVDVF9FUShrRTEsIGtFMSk7CisgIEVYUEVDVF9MVChr
RTEsIGtFMik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShrRTEsIGtFMiks
ICJXaGljaCBpczogMCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoa0Ux
LCBrRTIpLCAiV2hpY2ggaXM6IDEiKTsKK30KIAogLy8gVGhlIHZlcnNpb24gb2YgZ2NjIHVzZWQg
aW4gWENvZGUgMi4yIGhhcyBhIGJ1ZyBhbmQgZG9lc24ndCBhbGxvdwogLy8gYW5vbnltb3VzIGVu
dW1zIGluIGFzc2VydGlvbnMuICBUaGVyZWZvcmUgdGhlIGZvbGxvd2luZyB0ZXN0IGlzIG5vdAog
Ly8gZG9uZSBvbiBNYWMuCi0vLyBTdW4gU3R1ZGlvIGFsc28gcmVqZWN0cyB0aGlzIGNvZGUuCi0j
aWYgIUdURVNUX09TX01BQyAmJiAhZGVmaW5lZChfX1NVTlBST19DQykKKy8vIFN1biBTdHVkaW8g
YW5kIEhQIGFDQyBhbHNvIHJlamVjdCB0aGlzIGNvZGUuCisjaWYgIUdURVNUX09TX01BQyAmJiAh
ZGVmaW5lZChfX1NVTlBST19DQykgJiYgIWRlZmluZWQoX19IUF9hQ0MpCiAKIC8vIFRlc3RzIHVz
aW5nIGFzc2VydGlvbnMgd2l0aCBhbm9ueW1vdXMgZW51bXMuCiBlbnVtIHsKLSAgQ0FTRV9BID0g
LTEsCi0jaWYgR1RFU1RfT1NfTElOVVgKKyAga0Nhc2VBID0gLTEsCisKKyMgaWYgR1RFU1RfT1Nf
TElOVVgKKwogICAvLyBXZSB3YW50IHRvIHRlc3QgdGhlIGNhc2Ugd2hlcmUgdGhlIHNpemUgb2Yg
dGhlIGFub255bW91cyBlbnVtIGlzCiAgIC8vIGxhcmdlciB0aGFuIHNpemVvZihpbnQpLCB0byBt
YWtlIHN1cmUgb3VyIGltcGxlbWVudGF0aW9uIG9mIHRoZQogICAvLyBhc3NlcnRpb25zIGRvZXNu
J3QgdHJ1bmNhdGUgdGhlIGVudW1zLiAgSG93ZXZlciwgTVNWQwogICAvLyAoaW5jb3JyZWN0bHkp
IGRvZXNuJ3QgYWxsb3cgYW4gZW51bSB2YWx1ZSB0byBleGNlZWQgdGhlIHJhbmdlIG9mCiAgIC8v
IGFuIGludCwgc28gdGhpcyBoYXMgdG8gYmUgY29uZGl0aW9uYWxseSBjb21waWxlZC4KICAgLy8K
LSAgLy8gT24gTGludXgsIENBU0VfQiBhbmQgQ0FTRV9BIGhhdmUgdGhlIHNhbWUgdmFsdWUgd2hl
biB0cnVuY2F0ZWQgdG8KKyAgLy8gT24gTGludXgsIGtDYXNlQiBhbmQga0Nhc2VBIGhhdmUgdGhl
IHNhbWUgdmFsdWUgd2hlbiB0cnVuY2F0ZWQgdG8KICAgLy8gaW50IHNpemUuICBXZSB3YW50IHRv
IHRlc3Qgd2hldGhlciB0aGlzIHdpbGwgY29uZnVzZSB0aGUKICAgLy8gYXNzZXJ0aW9ucy4KLSAg
Q0FTRV9CID0gdGVzdGluZzo6aW50ZXJuYWw6OmtNYXhCaWdnZXN0SW50LAotI2Vsc2UKLSAgQ0FT
RV9CID0gSU5UX01BWCwKLSNlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKKyAga0Nhc2VCID0gdGVz
dGluZzo6aW50ZXJuYWw6OmtNYXhCaWdnZXN0SW50LAorCisjIGVsc2UKKworICBrQ2FzZUIgPSBJ
TlRfTUFYLAorCisjIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCisgIGtDYXNlQyA9IDQyCiB9
OwogCiBURVNUKEFzc2VydGlvblRlc3QsIEFub255bW91c0VudW0pIHsKLSNpZiBHVEVTVF9PU19M
SU5VWAotICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50PihDQVNFX0EpLCBzdGF0aWNfY2FzdDxp
bnQ+KENBU0VfQikpOwotI2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAotCi0gIEVYUEVDVF9FUShD
QVNFX0EsIENBU0VfQSk7Ci0gIEVYUEVDVF9ORShDQVNFX0EsIENBU0VfQik7Ci0gIEVYUEVDVF9M
VChDQVNFX0EsIENBU0VfQik7Ci0gIEVYUEVDVF9MRShDQVNFX0EsIENBU0VfQik7Ci0gIEVYUEVD
VF9HVChDQVNFX0IsIENBU0VfQSk7Ci0gIEVYUEVDVF9HRShDQVNFX0EsIENBU0VfQSk7Ci0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HRShDQVNFX0EsIENBU0VfQiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICIoQ0FTRV9BKSA+PSAoQ0FTRV9CKSIpOwotCi0gIEFTU0VSVF9F
UShDQVNFX0EsIENBU0VfQSk7Ci0gIEFTU0VSVF9ORShDQVNFX0EsIENBU0VfQik7Ci0gIEFTU0VS
VF9MVChDQVNFX0EsIENBU0VfQik7Ci0gIEFTU0VSVF9MRShDQVNFX0EsIENBU0VfQik7Ci0gIEFT
U0VSVF9HVChDQVNFX0IsIENBU0VfQSk7Ci0gIEFTU0VSVF9HRShDQVNFX0EsIENBU0VfQSk7Ci0g
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShDQVNFX0EsIENBU0VfQiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogQ0FTRV9CIik7CisjIGlmIEdURVNUX09TX0xJTlVY
CisKKyAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGludD4oa0Nhc2VBKSwgc3RhdGljX2Nhc3Q8aW50
PihrQ2FzZUIpKTsKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKKworICBFWFBFQ1RfRVEo
a0Nhc2VBLCBrQ2FzZUEpOworICBFWFBFQ1RfTkUoa0Nhc2VBLCBrQ2FzZUIpOworICBFWFBFQ1Rf
TFQoa0Nhc2VBLCBrQ2FzZUIpOworICBFWFBFQ1RfTEUoa0Nhc2VBLCBrQ2FzZUIpOworICBFWFBF
Q1RfR1Qoa0Nhc2VCLCBrQ2FzZUEpOworICBFWFBFQ1RfR0Uoa0Nhc2VBLCBrQ2FzZUEpOworICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR0Uoa0Nhc2VBLCBrQ2FzZUIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiKGtDYXNlQSkgPj0gKGtDYXNlQikiKTsKKyAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dFKGtDYXNlQSwga0Nhc2VDKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIi0xIHZzIDQyIik7CisKKyAgQVNTRVJUX0VRKGtDYXNlQSwga0Nhc2VBKTsK
KyAgQVNTRVJUX05FKGtDYXNlQSwga0Nhc2VCKTsKKyAgQVNTRVJUX0xUKGtDYXNlQSwga0Nhc2VC
KTsKKyAgQVNTRVJUX0xFKGtDYXNlQSwga0Nhc2VCKTsKKyAgQVNTRVJUX0dUKGtDYXNlQiwga0Nh
c2VBKTsKKyAgQVNTRVJUX0dFKGtDYXNlQSwga0Nhc2VBKTsKKworIyBpZm5kZWYgX19CT1JMQU5E
Q19fCisKKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4KKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
QVNTRVJUX0VRKGtDYXNlQSwga0Nhc2VCKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIiAga0Nh
c2VCXG4gICAgV2hpY2ggaXM6ICIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEo
a0Nhc2VBLCBrQ2FzZUMpLAorICAgICAgICAgICAgICAgICAgICAgICAiXG4gICAgV2hpY2ggaXM6
IDQyIik7CisjIGVuZGlmCisKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKGtDYXNl
QSwga0Nhc2VDKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuICAgIFdoaWNoIGlzOiAtMSIp
OwogfQogCiAjZW5kaWYgIC8vICFHVEVTVF9PU19NQUMgJiYgIWRlZmluZWQoX19TVU5QUk9fQ0Mp
CkBAIC0zODQwLDI0ICs0MDMyLDI2IEBAIFRFU1QoSFJFU1VMVEFzc2VydGlvblRlc3QsIEVYUEVD
VF9IUkVTVUxUX0ZBSUxFRCkgewogCiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9I
UkVTVUxUX0ZBSUxFRChPa0hSRVNVTFRTdWNjZXNzKCkpLAogICAgICJFeHBlY3RlZDogKE9rSFJF
U1VMVFN1Y2Nlc3MoKSkgZmFpbHMuXG4iCi0gICAgIiAgQWN0dWFsOiAweDAwMDAwMDAwIik7Cisg
ICAgIiAgQWN0dWFsOiAweDAiKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0hS
RVNVTFRfRkFJTEVEKEZhbHNlSFJFU1VMVFN1Y2Nlc3MoKSksCiAgICAgIkV4cGVjdGVkOiAoRmFs
c2VIUkVTVUxUU3VjY2VzcygpKSBmYWlscy5cbiIKLSAgICAiICBBY3R1YWw6IDB4MDAwMDAwMDEi
KTsKKyAgICAiICBBY3R1YWw6IDB4MSIpOwogfQogCiBURVNUKEhSRVNVTFRBc3NlcnRpb25UZXN0
LCBBU1NFUlRfSFJFU1VMVF9GQUlMRUQpIHsKICAgQVNTRVJUX0hSRVNVTFRfRkFJTEVEKEVfVU5F
WFBFQ1RFRCk7CiAKLSNpZm5kZWYgX19CT1JMQU5EQ19fCisjIGlmbmRlZiBfX0JPUkxBTkRDX18K
KwogICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcgYW5kIDIwMDkuCiAgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChPa0hSRVNVTFRTdWNjZXNzKCkpLAogICAg
ICJFeHBlY3RlZDogKE9rSFJFU1VMVFN1Y2Nlc3MoKSkgZmFpbHMuXG4iCi0gICAgIiAgQWN0dWFs
OiAweDAwMDAwMDAwIik7Ci0jZW5kaWYKKyAgICAiICBBY3R1YWw6IDB4MCIpOworIyBlbmRpZgor
CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChGYWxzZUhSRVNV
TFRTdWNjZXNzKCkpLAogICAgICJFeHBlY3RlZDogKEZhbHNlSFJFU1VMVFN1Y2Nlc3MoKSkgZmFp
bHMuXG4iCi0gICAgIiAgQWN0dWFsOiAweDAwMDAwMDAxIik7CisgICAgIiAgQWN0dWFsOiAweDEi
KTsKIH0KIAogLy8gVGVzdHMgdGhhdCBzdHJlYW1pbmcgdG8gdGhlIEhSRVNVTFQgbWFjcm9zIHdv
cmtzLgpAQCAtMzg3MSwxMiArNDA2NSwxMyBAQCBURVNUKEhSRVNVTFRBc3NlcnRpb25UZXN0LCBT
dHJlYW1pbmcpIHsKICAgICAgIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChFX1VORVhQRUNURUQp
IDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKICAgICAgICJleHBlY3RlZCBmYWlsdXJlIik7CiAKLSNp
Zm5kZWYgX19CT1JMQU5EQ19fCisjIGlmbmRlZiBfX0JPUkxBTkRDX18KKwogICAvLyBJQ0UncyBp
biBDKytCdWlsZGVyIDIwMDcgYW5kIDIwMDkuCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKAogICAg
ICAgQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKEVfVU5FWFBFQ1RFRCkgPDwgImV4cGVjdGVkIGZh
aWx1cmUiLAogICAgICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKLSNlbmRpZgorIyBlbmRpZgogCiAg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAogICAgICAgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKFNf
T0spIDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKQEAgLTM4OTEsNyArNDA4Niw3IEBAIFRFU1QoSFJF
U1VMVEFzc2VydGlvblRlc3QsIFN0cmVhbWluZykgewogCiAjaWZkZWYgX19CT1JMQU5EQ19fCiAv
LyBTaWxlbmNlcyB3YXJuaW5nczogIkNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZSIsICJVbnJlYWNo
YWJsZSBjb2RlIgotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCisjIHByYWdtYSBv
cHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCiAjZW5kaWYKIAogLy8gVGVzdHMgdGhhdCB0aGUgYXNz
ZXJ0aW9uIG1hY3JvcyBiZWhhdmUgbGlrZSBzaW5nbGUgc3RhdGVtZW50cy4KQEAgLTQwMDgsNyAr
NDIwMyw3IEBAIFRFU1QoQXNzZXJ0aW9uU3ludGF4VGVzdCwgV29ya3NXaXRoU3dpdGNoKSB7CiAj
aWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKIAogdm9pZCBUaHJvd0FTdHJpbmcoKSB7Ci0gICAgdGhy
b3cgIlN0cmluZyI7CisgICAgdGhyb3cgInN0ZDo6c3RyaW5nIjsKIH0KIAogLy8gVGVzdCB0aGF0
IHRoZSBleGNlcHRpb24gYXNzZXJ0aW9uIG1hY3JvcyBjb21waWxlIGFuZCB3b3JrIHdpdGggY29u
c3QKQEAgLTQwNjAsOCArNDI1NSwxMDkgQEAgVEVTVChTdWNjZXNzZnVsQXNzZXJ0aW9uVGVzdCwg
QVNTRVJUX1NUUikgewogCiBuYW1lc3BhY2UgewogCisvLyBUZXN0cyB0aGUgbWVzc2FnZSBzdHJl
YW1pbmcgdmFyaWF0aW9uIG9mIGFzc2VydGlvbnMuCisKK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3Nh
Z2VUZXN0LCBFWFBFQ1QpIHsKKyAgRVhQRUNUX0VRKDEsIDEpIDw8ICJUaGlzIHNob3VsZCBzdWNj
ZWVkLiI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ORSgxLCAxKSA8PCAiRXhw
ZWN0ZWQgZmFpbHVyZSAjMS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQg
ZmFpbHVyZSAjMSIpOworICBFWFBFQ1RfTEUoMSwgMikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQu
IjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0xUKDEsIDApIDw8ICJFeHBlY3Rl
ZCBmYWlsdXJlICMyLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYWls
dXJlICMyLiIpOworICBFWFBFQ1RfR0UoMSwgMCkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsK
KyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dUKDEsIDIpIDw8ICJFeHBlY3RlZCBm
YWlsdXJlICMzLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJl
ICMzLiIpOworCisgIEVYUEVDVF9TVFJFUSgiMSIsICIxIikgPDwgIlRoaXMgc2hvdWxkIHN1Y2Nl
ZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1NUUk5FKCIxIiwgIjEiKSA8
PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhw
ZWN0ZWQgZmFpbHVyZSAjNC4iKTsKKyAgRVhQRUNUX1NUUkNBU0VFUSgiYSIsICJBIikgPDwgIlRo
aXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1NU
UkNBU0VORSgiYSIsICJBIikgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzUuIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1cmUgIzUuIik7CisKKyAgRVhQRUNUX0ZMT0FU
X0VRKDEsIDEpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEVYUEVDVF9ET1VCTEVfRVEoMSwgMS4yKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNi4i
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZSAjNi4iKTsKKyAg
RVhQRUNUX05FQVIoMSwgMS4xLCAwLjIpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7Cit9CisK
K1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBBU1NFUlQpIHsKKyAgQVNTRVJUX0VRKDEs
IDEpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9ORSgxLCAyKSA8PCAiVGhp
cyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfTEUoMSwgMikgPDwgIlRoaXMgc2hvdWxkIHN1
Y2NlZWQuIjsKKyAgQVNTRVJUX0xUKDEsIDIpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7Cisg
IEFTU0VSVF9HRSgxLCAwKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShBU1NFUlRfR1QoMSwgMikgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1cmUuIik7Cit9CisKK1RFU1QoQXNzZXJ0
aW9uV2l0aE1lc3NhZ2VUZXN0LCBBU1NFUlRfU1RSKSB7CisgIEFTU0VSVF9TVFJFUSgiMSIsICIx
IikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJUX1NUUk5FKCIxIiwgIjIiKSA8
PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfU1RSQ0FTRUVRKCJhIiwgIkEiKSA8
PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRf
U1RSQ0FTRU5FKCJhIiwgIkEiKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iLAorICAgICAgICAgICAg
ICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZS4iKTsKK30KKworVEVTVChBc3NlcnRpb25XaXRo
TWVzc2FnZVRlc3QsIEFTU0VSVF9GTE9BVElORykgeworICBBU1NFUlRfRkxPQVRfRVEoMSwgMSkg
PDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJUX0RPVUJMRV9FUSgxLCAxKSA8PCAi
VGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfTkVB
UigxLDEuMiwgMC4xKSA8PCAiRXhwZWN0IGZhaWx1cmUuIiwgIC8vIE5PTElOVAorICAgICAgICAg
ICAgICAgICAgICAgICAiRXhwZWN0IGZhaWx1cmUuIik7CisgIC8vIFRvIHdvcmsgYXJvdW5kIGEg
YnVnIGluIGdjYyAyLjk1LjAsIHRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8KKyAgLy8gc3BhY2Ug
YWZ0ZXIgdGhlIGZpcnN0IGNvbW1hIGluIHRoZSBwcmV2aW91cyBzdGF0ZW1lbnQuCit9CisKKy8v
IFRlc3RzIHVzaW5nIEFTU0VSVF9GQUxTRSB3aXRoIGEgc3RyZWFtZWQgbWVzc2FnZS4KK1RFU1Qo
QXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBBU1NFUlRfRkFMU0UpIHsKKyAgQVNTRVJUX0ZBTFNF
KGZhbHNlKSA8PCAiVGhpcyBzaG91bGRuJ3QgZmFpbC4iOworICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfRkFMU0UodHJ1ZSkgPDwgIkV4cGVjdGVkIGZhaWx1
cmU6ICIgPDwgMiA8PCAiID4gIiA8PCAxCisgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgZXZh
bHVhdGVzIHRvICIgPDwgdHJ1ZTsKKyAgfSwgIkV4cGVjdGVkIGZhaWx1cmUiKTsKK30KKworLy8g
VGVzdHMgdXNpbmcgRkFJTCB3aXRoIGEgc3RyZWFtZWQgbWVzc2FnZS4KK1RFU1QoQXNzZXJ0aW9u
V2l0aE1lc3NhZ2VUZXN0LCBGQUlMKSB7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEZBSUwoKSA8
PCAwLAorICAgICAgICAgICAgICAgICAgICAgICAiMCIpOworfQorCisvLyBUZXN0cyB1c2luZyBT
VUNDRUVEIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgorVEVTVChBc3NlcnRpb25XaXRoTWVzc2Fn
ZVRlc3QsIFNVQ0NFRUQpIHsKKyAgU1VDQ0VFRCgpIDw8ICJTdWNjZXNzID09ICIgPDwgMTsKK30K
KworLy8gVGVzdHMgdXNpbmcgQVNTRVJUX1RSVUUgd2l0aCBhIHN0cmVhbWVkIG1lc3NhZ2UuCitU
RVNUKEFzc2VydGlvbldpdGhNZXNzYWdlVGVzdCwgQVNTRVJUX1RSVUUpIHsKKyAgQVNTRVJUX1RS
VUUodHJ1ZSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJUX1RSVUUodHJ1ZSkg
PDwgdHJ1ZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgQVNTRVJU
X1RSVUUoZmFsc2UpIDw8IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4oTlVMTCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8Y2hhciAqPihOVUxMKTsKKyAgfSwgIihudWxs
KShudWxsKSIpOworfQorCisjaWYgR1RFU1RfT1NfV0lORE9XUworLy8gVGVzdHMgdXNpbmcgd2lk
ZSBzdHJpbmdzIGluIGFzc2VydGlvbiBtZXNzYWdlcy4KK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3Nh
Z2VUZXN0LCBXaWRlU3RyaW5nTWVzc2FnZSkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7
ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfVFJVRShmYWxzZSkgPDwgTCJUaGlzIGZhaWx1cmUgaXMg
ZXhwZWN0ZWQuXHg4MTE5IjsKKyAgfSwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4iKTsKKyAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX0VRKDEsIDIpIDw8
ICJUaGlzIGZhaWx1cmUgaXMgIgorICAgICAgICAgICAgICAgICAgICA8PCBMImV4cGVjdGVkIHRv
by5ceDgxMjAiOworICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkIHRvby4iKTsKK30KKyNl
bmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCiAvLyBUZXN0cyBFWFBFQ1RfVFJVRS4KIFRFU1Qo
RXhwZWN0VGVzdCwgRVhQRUNUX1RSVUUpIHsKKyAgRVhQRUNUX1RSVUUodHJ1ZSkgPDwgIkludGVu
dGlvbmFsIHN1Y2Nlc3MiOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfVFJVRShm
YWxzZSkgPDwgIkludGVudGlvbmFsIGZhaWx1cmUgIzEuIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkludGVudGlvbmFsIGZhaWx1cmUgIzEuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEVYUEVDVF9UUlVFKGZhbHNlKSA8PCAiSW50ZW50aW9uYWwgZmFpbHVyZSAjMi4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9uYWwgZmFpbHVyZSAjMi4iKTsKICAgRVhQ
RUNUX1RSVUUoMiA+IDEpOyAgLy8gTk9MSU5UCiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVY
UEVDVF9UUlVFKDIgPCAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiAy
IDwgMVxuIgpAQCAtNDA4NSw5ICs0MzgxLDE0IEBAIFRFU1QoRXhwZWN0VGVzdCwgRXhwZWN0VHJ1
ZVdpdGhBc3NlcnRpb25SZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVj
dGVkOiB0cnVlIik7CiB9CiAKLS8vIFRlc3RzIEVYUEVDVF9GQUxTRS4KKy8vIFRlc3RzIEVYUEVD
VF9GQUxTRSB3aXRoIGEgc3RyZWFtZWQgbWVzc2FnZS4KIFRFU1QoRXhwZWN0VGVzdCwgRVhQRUNU
X0ZBTFNFKSB7CiAgIEVYUEVDVF9GQUxTRSgyIDwgMSk7ICAvLyBOT0xJTlQKKyAgRVhQRUNUX0ZB
TFNFKGZhbHNlKSA8PCAiSW50ZW50aW9uYWwgc3VjY2VzcyI7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEVYUEVDVF9GQUxTRSh0cnVlKSA8PCAiSW50ZW50aW9uYWwgZmFpbHVyZSAjMS4iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9uYWwgZmFpbHVyZSAjMS4iKTsKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0ZBTFNFKHRydWUpIDw8ICJJbnRlbnRpb25h
bCBmYWlsdXJlICMyLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlbnRpb25hbCBm
YWlsdXJlICMyLiIpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRkFMU0UoMiA+
IDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IDIgPiAxXG4iCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogdHJ1ZVxuIgpAQCAtNDExMSwxNyArNDQx
MiwxOCBAQCBURVNUKEV4cGVjdFRlc3QsIEV4cGVjdEZhbHNlV2l0aEFzc2VydGlvblJlc3VsdCkg
ewogfQogCiAjaWZkZWYgX19CT1JMQU5EQ19fCi0vLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBw
cmV2aW91cyAiI3ByYWdtYSBvcHRpb24gcHVzaCIgc3VwcmVzc2VkIHRoZW0KLSNwcmFnbWEgb3B0
aW9uIHBvcAorLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0ZXIgcHJldmlvdXMgIiNwcmFnbWEgb3B0
aW9uIHB1c2giIHN1cHByZXNzZWQgdGhlbQorIyBwcmFnbWEgb3B0aW9uIHBvcAogI2VuZGlmCiAK
IC8vIFRlc3RzIEVYUEVDVF9FUS4KIFRFU1QoRXhwZWN0VGVzdCwgRVhQRUNUX0VRKSB7CiAgIEVY
UEVDVF9FUSg1LCAyICsgMyk7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSg1
LCAyKjMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IDIqM1xuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IDZcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkV4cGVjdGVkOiA1Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBl
Y3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICIgIDVcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgMiozXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICIgICAgV2hpY2ggaXM6IDYiKTsKICAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRVhQRUNUX0VRKDUsIDIgLSAzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IjIgLSAzIik7CiB9CkBAIC00MTQzLDcgKzQ0NDUsNyBAQCBURVNUKEV4cGVjdFRlc3QsIEVYUEVD
VF9FUV9Eb3VibGUpIHsKIFRFU1QoRXhwZWN0VGVzdCwgRVhQRUNUX0VRX05VTEwpIHsKICAgLy8g
QSBzdWNjZXNzLgogICBjb25zdCBjaGFyKiBwID0gTlVMTDsKLSAgLy8gU29tZSBvbGRlciBHQ0Mg
dmVyc2lvbnMgbWF5IGlzc3VlIGEgc3B1cmlvdXMgd2FyaW5nIGluIHRoaXMgb3IgdGhlIG5leHQK
KyAgLy8gU29tZSBvbGRlciBHQ0MgdmVyc2lvbnMgbWF5IGlzc3VlIGEgc3B1cmlvdXMgd2Fybmlu
ZyBpbiB0aGlzIG9yIHRoZSBuZXh0CiAgIC8vIGFzc2VydGlvbiBzdGF0ZW1lbnQuIFRoaXMgd2Fy
bmluZyBzaG91bGQgbm90IGJlIHN1cHByZXNzZWQgd2l0aAogICAvLyBzdGF0aWNfY2FzdCBzaW5j
ZSB0aGUgdGVzdCB2ZXJpZmllcyB0aGUgYWJpbGl0eSB0byB1c2UgYmFyZSBOVUxMIGFzIHRoZQog
ICAvLyBleHBlY3RlZCBwYXJhbWV0ZXIgdG8gdGhlIG1hY3JvLgpAQCAtNDE1Miw3ICs0NDU0LDcg
QEAgVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVFfTlVMTCkgewogICAvLyBBIGZhaWx1cmUuCiAg
IGludCBuID0gMDsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKE5VTEwsICZu
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiAmblxuIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICIgICZuXG4gICAgV2hpY2ggaXM6Iik7CiB9CiAjZW5kaWYgIC8v
IEdURVNUX0NBTl9DT01QQVJFX05VTEwKIApAQCAtNDE2OCw3ICs0NDcwLDcgQEAgVEVTVChFeHBl
Y3RUZXN0LCBFWFBFQ1RfRVFfMCkgewogCiAgIC8vIEEgZmFpbHVyZS4KICAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDAsIDUuNiksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICJFeHBlY3RlZDogMCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiICAwXG4gIDUuNiIp
OwogfQogCiAvLyBUZXN0cyBFWFBFQ1RfTkUuCkBAIC00MjY4LDcgKzQ1NzAsNyBAQCBURVNUKEV4
cGVjdFRlc3QsIEVYUEVDVF9BTllfVEhST1cpIHsKIFRFU1QoRXhwZWN0VGVzdCwgRXhwZWN0UHJl
Y2VkZW5jZSkgewogICBFWFBFQ1RfRVEoMSA8IDIsIHRydWUpOwogICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShFWFBFQ1RfRVEodHJ1ZSwgdHJ1ZSAmJiBmYWxzZSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICJWYWx1ZSBvZjogdHJ1ZSAmJiBmYWxzZSIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICB0cnVlICYmIGZhbHNlXG4gICAgV2hpY2ggaXM6IGZhbHNlIik7CiB9CiAKIApA
QCAtNDM2MSw3ICs0NjYzLDcgQEAgVEVTVChTdHJlYW1hYmxlVGVzdCwgQmFzaWNJb01hbmlwKSB7
CiAKIHZvaWQgQWRkRmFpbHVyZUhlbHBlcihib29sKiBhYm9ydGVkKSB7CiAgICphYm9ydGVkID0g
dHJ1ZTsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiRmFpbHVyZSI7CisgIEFERF9GQUlMVVJFKCkgPDwg
IkludGVudGlvbmFsIGZhaWx1cmUuIjsKICAgKmFib3J0ZWQgPSBmYWxzZTsKIH0KIApAQCAtNDM2
OSwxMCArNDY3MSwyNSBAQCB2b2lkIEFkZEZhaWx1cmVIZWxwZXIoYm9vbCogYWJvcnRlZCkgewog
VEVTVChNYWNyb1Rlc3QsIEFERF9GQUlMVVJFKSB7CiAgIGJvb2wgYWJvcnRlZCA9IHRydWU7CiAg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmVIZWxwZXIoJmFib3J0ZWQpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAiRmFpbHVyZSIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAiSW50ZW50aW9uYWwgZmFpbHVyZS4iKTsKICAgRVhQRUNUX0ZBTFNFKGFib3J0ZWQpOwog
fQogCisvLyBUZXN0cyBBRERfRkFJTFVSRV9BVC4KK1RFU1QoTWFjcm9UZXN0LCBBRERfRkFJTFVS
RV9BVCkgeworICAvLyBWZXJpZmllcyB0aGF0IEFERF9GQUlMVVJFX0FUIGRvZXMgZ2VuZXJhdGUg
YSBub25mYXRhbCBmYWlsdXJlIGFuZAorICAvLyB0aGUgZmFpbHVyZSBtZXNzYWdlIGNvbnRhaW5z
IHRoZSB1c2VyLXN0cmVhbWVkIHBhcnQuCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFERF9G
QUlMVVJFX0FUKCJmb28uY2MiLCA0MikgPDwgIldyb25nISIsICJXcm9uZyEiKTsKKworICAvLyBW
ZXJpZmllcyB0aGF0IHRoZSB1c2VyLXN0cmVhbWVkIHBhcnQgaXMgb3B0aW9uYWwuCisgIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKEFERF9GQUlMVVJFX0FUKCJmb28uY2MiLCA0MiksICJGYWlsZWQi
KTsKKworICAvLyBVbmZvcnR1bmF0ZWx5LCB3ZSBjYW5ub3QgdmVyaWZ5IHRoYXQgdGhlIGZhaWx1
cmUgbWVzc2FnZSBjb250YWlucworICAvLyB0aGUgcmlnaHQgZmlsZSBwYXRoIGFuZCBsaW5lIG51
bWJlciB0aGUgc2FtZSB3YXksIGFzCisgIC8vIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgZG9l
c24ndCBnZXQgdG8gc2VlIHRoZSBmaWxlIHBhdGggYW5kCisgIC8vIGxpbmUgbnVtYmVyLiAgSW5z
dGVhZCwgd2UgZG8gdGhhdCBpbiBnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYy4KK30KKwogLy8g
VGVzdHMgRkFJTC4KIFRFU1QoTWFjcm9UZXN0LCBGQUlMKSB7CiAgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEZBSUwoKSwKQEAgLTQzODcsNyArNDcwNCw2IEBAIFRFU1QoTWFjcm9UZXN0LCBTVUNDRUVE
KSB7CiAgIFNVQ0NFRUQoKSA8PCAiRXhwbGljaXQgc3VjY2Vzcy4iOwogfQogCi0KIC8vIFRlc3Rz
IGZvciBFWFBFQ1RfRVEoKSBhbmQgQVNTRVJUX0VRKCkuCiAvLwogLy8gVGhlc2UgdGVzdHMgZmFp
bCAqaW50ZW50aW9uYWxseSosIHMudC4gdGhlIGZhaWx1cmUgbWVzc2FnZXMgY2FuIGJlCkBAIC00
Mzk4LDE1ICs0NzE0LDE3IEBAIFRFU1QoTWFjcm9UZXN0LCBTVUNDRUVEKSB7CiAvLyBUZXN0cyB1
c2luZyBib29sIHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCiBURVNUKEVxQXNzZXJ0aW9u
VGVzdCwgQm9vbCkgewogICBFWFBFQ1RfRVEodHJ1ZSwgIHRydWUpOwotICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShBU1NFUlRfRVEoZmFsc2UsIHRydWUpLAotICAgICAgICAgICAgICAgICAgICAgICAi
VmFsdWUgb2Y6IHRydWUiKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeworICAgICAgYm9vbCBm
YWxzZV92YWx1ZSA9IGZhbHNlOworICAgICAgQVNTRVJUX0VRKGZhbHNlX3ZhbHVlLCB0cnVlKTsK
KyAgICB9LCAiICBmYWxzZV92YWx1ZVxuICAgIFdoaWNoIGlzOiBmYWxzZVxuICB0cnVlIik7CiB9
CiAKIC8vIFRlc3RzIHVzaW5nIGludCB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgogVEVT
VChFcUFzc2VydGlvblRlc3QsIEludCkgewogICBBU1NFUlRfRVEoMzIsIDMyKTsKICAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDMyLCAzMyksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICIzMyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiICAzMlxuICAzMyIpOwog
fQogCiAvLyBUZXN0cyB1c2luZyB0aW1lX3QgdmFsdWVzIGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4K
QEAgLTQ0MjMsOSArNDc0MSw5IEBAIFRFU1QoRXFBc3NlcnRpb25UZXN0LCBDaGFyKSB7CiAgIEFT
U0VSVF9FUSgneicsICd6Jyk7CiAgIGNvbnN0IGNoYXIgY2ggPSAnYic7CiAgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9FUSgnXDAnLCBjaCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICJjaCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiICBjaFxuICAgIFdoaWNoIGlz
OiAnYiciKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKCdhJywgY2gpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAiY2giKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiAgY2hcbiAgICBXaGljaCBpczogJ2InIik7CiB9CiAKIC8vIFRlc3RzIHVzaW5nIHdjaGFy
X3QgdmFsdWVzIGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4KQEAgLTQ0MzMsMTggKzQ3NTEsMTkgQEAg
VEVTVChFcUFzc2VydGlvblRlc3QsIFdpZGVDaGFyKSB7CiAgIEVYUEVDVF9FUShMJ2InLCBMJ2In
KTsKIAogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoTCdcMCcsIEwneCcpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IEwneCdcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBMJ3gnICgxMjAsIDB4NzgpXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICJFeHBlY3RlZDogTCdcMCdcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIldoaWNoIGlzOiBMJ1wwJyAoMCwgMHgwKSIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiICBMJ1wwJ1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiICAg
IFdoaWNoIGlzOiBMJ1wwJyAoMCwgMHgwKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAi
ICBMJ3gnXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgV2hpY2ggaXM6IEwneCcg
KDEyMCwgMHg3OCkiKTsKIAogICBzdGF0aWMgd2NoYXJfdCB3Y2hhcjsKICAgd2NoYXIgPSBMJ2In
OwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoTCdhJywgd2NoYXIpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAid2NoYXIiKTsKLSAgd2NoYXIgPSBMJ1x4ODExOSc7Ci0g
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShMJ1x4ODEyMCcsIHdjaGFyKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiB3Y2hhciIpOworICB3Y2hhciA9IDB4ODExOTsK
KyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKHN0YXRpY19jYXN0PHdjaGFyX3Q+KDB4
ODEyMCksIHdjaGFyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgd2NoYXJcbiAgICBXaGlj
aCBpczogTCciKTsKIH0KIAogLy8gVGVzdHMgdXNpbmcgOjpzdGQ6OnN0cmluZyB2YWx1ZXMgaW4g
e0VYUEVDVHxBU1NFUlR9X0VRLgpAQCAtNDQ2MSw3ICs0NzgwLDcgQEAgVEVTVChFcUFzc2VydGlv
blRlc3QsIFN0ZFN0cmluZykgewogICAvLyBDb21wYXJlcyBhIGNvbnN0IGNoYXIqIHRvIGFuIHN0
ZDo6c3RyaW5nIHRoYXQgaGFzIGRpZmZlcmVudAogICAvLyBjb250ZW50CiAgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9FUSgiVGVzdCIsIDo6c3RkOjpzdHJpbmcoInRlc3QiKSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICI6OnN0ZDo6c3RyaW5nKFwidGVzdFwiKSIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXCJ0ZXN0XCIiKTsKIAogICAvLyBDb21wYXJlcyBhbiBz
dGQ6OnN0cmluZyB0byBhIGNoYXIqIHRoYXQgaGFzIGRpZmZlcmVudCBjb250ZW50LgogICBjaGFy
KiBjb25zdCBwMSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KCJmb28iKTsKQEAgLTQ0NzMsMjggKzQ3OTIs
MjkgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIFN0ZFN0cmluZykgewogICBzdGF0aWMgOjpzdGQ6
OnN0cmluZyBzdHIzKHN0cjEpOwogICBzdHIzLmF0KDIpID0gJ1wwJzsKICAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoQVNTRVJUX0VRKHN0cjEsIHN0cjMpLAotICAgICAgICAgICAgICAgICAgICAgICAi
VmFsdWUgb2Y6IHN0cjNcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBcIkEg
XFwwIGluIHRoZSBtaWRkbGVcIiIpOworICAgICAgICAgICAgICAgICAgICAgICAiICBzdHIzXG4g
ICAgV2hpY2ggaXM6IFwiQSBcXDAgaW4gdGhlIG1pZGRsZVwiIik7CiB9CiAKICNpZiBHVEVTVF9I
QVNfU1REX1dTVFJJTkcKIAogLy8gVGVzdHMgdXNpbmcgOjpzdGQ6OndzdHJpbmcgdmFsdWVzIGlu
IHtFWFBFQ1R8QVNTRVJUfV9FUS4KIFRFU1QoRXFBc3NlcnRpb25UZXN0LCBTdGRXaWRlU3RyaW5n
KSB7Ci0gIC8vIENvbXBhcmVzIGFuIHN0ZDo6d3N0cmluZyB0byBhIGNvbnN0IHdjaGFyX3QqIHRo
YXQgaGFzIGlkZW50aWNhbAotICAvLyBjb250ZW50LgotICBFWFBFQ1RfRVEoOjpzdGQ6OndzdHJp
bmcoTCJUZXN0XHg4MTE5IiksIEwiVGVzdFx4ODExOSIpOwotCiAgIC8vIENvbXBhcmVzIHR3byBp
ZGVudGljYWwgc3RkOjp3c3RyaW5ncy4KICAgY29uc3QgOjpzdGQ6OndzdHJpbmcgd3N0cjEoTCJB
ICogaW4gdGhlIG1pZGRsZSIpOwogICBjb25zdCA6OnN0ZDo6d3N0cmluZyB3c3RyMih3c3RyMSk7
CiAgIEFTU0VSVF9FUSh3c3RyMSwgd3N0cjIpOwogCisgIC8vIENvbXBhcmVzIGFuIHN0ZDo6d3N0
cmluZyB0byBhIGNvbnN0IHdjaGFyX3QqIHRoYXQgaGFzIGlkZW50aWNhbAorICAvLyBjb250ZW50
LgorICBjb25zdCB3Y2hhcl90IGtUZXN0WDgxMTlbXSA9IHsgJ1QnLCAnZScsICdzJywgJ3QnLCAw
eDgxMTksICdcMCcgfTsKKyAgRVhQRUNUX0VRKDo6c3RkOjp3c3RyaW5nKGtUZXN0WDgxMTkpLCBr
VGVzdFg4MTE5KTsKKwogICAvLyBDb21wYXJlcyBhbiBzdGQ6OndzdHJpbmcgdG8gYSBjb25zdCB3
Y2hhcl90KiB0aGF0IGhhcyBkaWZmZXJlbnQKICAgLy8gY29udGVudC4KKyAgY29uc3Qgd2NoYXJf
dCBrVGVzdFg4MTIwW10gPSB7ICdUJywgJ2UnLCAncycsICd0JywgMHg4MTIwLCAnXDAnIH07CiAg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9FUSg6OnN0
ZDo6d3N0cmluZyhMIlRlc3RceDgxMTkiKSwgTCJUZXN0XHg4MTIwIik7Ci0gIH0sICJMXCJUZXN0
XFx4ODEyMFwiIik7CisgICAgRVhQRUNUX0VRKDo6c3RkOjp3c3RyaW5nKGtUZXN0WDgxMTkpLCBr
VGVzdFg4MTIwKTsKKyAgfSwgImtUZXN0WDgxMjAiKTsKIAogICAvLyBDb21wYXJlcyB0d28gc3Rk
Ojp3c3RyaW5ncyB0aGF0IGhhdmUgZGlmZmVyZW50IGNvbnRlbnRzLCBvbmUgb2YKICAgLy8gd2hp
Y2ggaGF2aW5nIGEgTlVMIGNoYXJhY3RlciBpbiB0aGUgbWlkZGxlLgpAQCAtNDU0NiwxOCArNDg2
NiwyMCBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgR2xvYmFsU3RyaW5nKSB7CiAKIC8vIFRlc3Rz
IHVzaW5nIDo6d3N0cmluZyB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgogVEVTVChFcUFz
c2VydGlvblRlc3QsIEdsb2JhbFdpZGVTdHJpbmcpIHsKLSAgLy8gQ29tcGFyZXMgYSBjb25zdCB3
Y2hhcl90KiB0byBhIDo6d3N0cmluZyB0aGF0IGhhcyBpZGVudGljYWwgY29udGVudC4KLSAgQVNT
RVJUX0VRKEwiVGVzdFx4ODExOSIsIDo6d3N0cmluZyhMIlRlc3RceDgxMTkiKSk7Ci0KICAgLy8g
Q29tcGFyZXMgdHdvIGlkZW50aWNhbCA6OndzdHJpbmdzLgogICBzdGF0aWMgY29uc3QgOjp3c3Ry
aW5nIHdzdHIxKEwiQSAqIGluIHRoZSBtaWRkbGUiKTsKICAgc3RhdGljIGNvbnN0IDo6d3N0cmlu
ZyB3c3RyMih3c3RyMSk7CiAgIEVYUEVDVF9FUSh3c3RyMSwgd3N0cjIpOwogCisgIC8vIENvbXBh
cmVzIGEgY29uc3Qgd2NoYXJfdCogdG8gYSA6OndzdHJpbmcgdGhhdCBoYXMgaWRlbnRpY2FsIGNv
bnRlbnQuCisgIGNvbnN0IHdjaGFyX3Qga1Rlc3RYODExOVtdID0geyAnVCcsICdlJywgJ3MnLCAn
dCcsIDB4ODExOSwgJ1wwJyB9OworICBBU1NFUlRfRVEoa1Rlc3RYODExOSwgOjp3c3RyaW5nKGtU
ZXN0WDgxMTkpKTsKKwogICAvLyBDb21wYXJlcyBhIGNvbnN0IHdjaGFyX3QqIHRvIGEgOjp3c3Ry
aW5nIHRoYXQgaGFzIGRpZmZlcmVudAogICAvLyBjb250ZW50LgorICBjb25zdCB3Y2hhcl90IGtU
ZXN0WDgxMjBbXSA9IHsgJ1QnLCAnZScsICdzJywgJ3QnLCAweDgxMjAsICdcMCcgfTsKICAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX0VRKEwiVGVzdFx4
ODEyMCIsIDo6d3N0cmluZyhMIlRlc3RceDgxMTkiKSk7CisgICAgRVhQRUNUX0VRKGtUZXN0WDgx
MjAsIDo6d3N0cmluZyhrVGVzdFg4MTE5KSk7CiAgIH0sICJUZXN0XFx4ODExOSIpOwogCiAgIC8v
IENvbXBhcmVzIGEgd2NoYXJfdCogdG8gYSA6OndzdHJpbmcgdGhhdCBoYXMgZGlmZmVyZW50IGNv
bnRlbnQuCkBAIC00NTkwLDkgKzQ5MTIsOSBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgQ2hhclBv
aW50ZXIpIHsKICAgQVNTRVJUX0VRKHAxLCBwMSk7CiAKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoRVhQRUNUX0VRKHAwLCBwMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBv
ZjogcDIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgcDJcbiAgICBXaGljaCBpczoi
KTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHAxLCBwMiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICJwMiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiICBw
MlxuICAgIFdoaWNoIGlzOiIpOwogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEocmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oMHgxMjM0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KDB4QUJDMCkpLAogICAgICAgICAgICAgICAg
ICAgICAgICAiQUJDMCIpOwpAQCAtNDYxMiw5ICs0OTM0LDkgQEAgVEVTVChFcUFzc2VydGlvblRl
c3QsIFdpZGVDaGFyUG9pbnRlcikgewogICBFWFBFQ1RfRVEocDAsIHAwKTsKIAogICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEocDAsIHAyKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlZhbHVlIG9mOiBwMiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiICBwMlxu
ICAgIFdoaWNoIGlzOiIpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEocDEs
IHAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInAyIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgIHAyXG4gICAgV2hpY2ggaXM6Iik7CiAgIHZvaWQqIHB2MyA9ICh2b2lkKikw
eDEyMzQ7ICAvLyBOT0xJTlQKICAgdm9pZCogcHY0ID0gKHZvaWQqKTB4QUJDMDsgIC8vIE5PTElO
VAogICBjb25zdCB3Y2hhcl90KiBwMyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgd2NoYXJfdCo+
KHB2Myk7CkBAIC00NjMyLDYgKzQ5NTQsNjggQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIE90aGVy
UG9pbnRlcikgewogICAgICAgICAgICAgICAgICAgICAgICAiMHgxMjM0Iik7CiB9CiAKKy8vIEEg
Y2xhc3MgdGhhdCBzdXBwb3J0cyBiaW5hcnkgY29tcGFyaXNvbiBvcGVyYXRvcnMgYnV0IG5vdCBz
dHJlYW1pbmcuCitjbGFzcyBVbnByaW50YWJsZUNoYXIgeworIHB1YmxpYzoKKyAgZXhwbGljaXQg
VW5wcmludGFibGVDaGFyKGNoYXIgY2gpIDogY2hhcl8oY2gpIHt9CisKKyAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBjb25zdCB7CisgICAgcmV0dXJuIGNoYXJf
ID09IHJocy5jaGFyXzsKKyAgfQorICBib29sIG9wZXJhdG9yIT0oY29uc3QgVW5wcmludGFibGVD
aGFyJiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gY2hhcl8gIT0gcmhzLmNoYXJfOworICB9Cisg
IGJvb2wgb3BlcmF0b3I8KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBjb25zdCB7CisgICAg
cmV0dXJuIGNoYXJfIDwgcmhzLmNoYXJfOworICB9CisgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBV
bnByaW50YWJsZUNoYXImIHJocykgY29uc3QgeworICAgIHJldHVybiBjaGFyXyA8PSByaHMuY2hh
cl87CisgIH0KKyAgYm9vbCBvcGVyYXRvcj4oY29uc3QgVW5wcmludGFibGVDaGFyJiByaHMpIGNv
bnN0IHsKKyAgICByZXR1cm4gY2hhcl8gPiByaHMuY2hhcl87CisgIH0KKyAgYm9vbCBvcGVyYXRv
cj49KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBjb25zdCB7CisgICAgcmV0dXJuIGNoYXJf
ID49IHJocy5jaGFyXzsKKyAgfQorCisgcHJpdmF0ZToKKyAgY2hhciBjaGFyXzsKK307CisKKy8v
IFRlc3RzIHRoYXQgQVNTRVJUX0VRKCkgYW5kIGZyaWVuZHMgZG9uJ3QgcmVxdWlyZSB0aGUgYXJn
dW1lbnRzIHRvCisvLyBiZSBwcmludGFibGUuCitURVNUKENvbXBhcmlzb25Bc3NlcnRpb25UZXN0
LCBBY2NlcHRzVW5wcmludGFibGVBcmdzKSB7CisgIGNvbnN0IFVucHJpbnRhYmxlQ2hhciB4KCd4
JyksIHkoJ3knKTsKKyAgQVNTRVJUX0VRKHgsIHgpOworICBFWFBFQ1RfTkUoeCwgeSk7CisgIEFT
U0VSVF9MVCh4LCB5KTsKKyAgRVhQRUNUX0xFKHgsIHkpOworICBBU1NFUlRfR1QoeSwgeCk7Cisg
IEVYUEVDVF9HRSh4LCB4KTsKKworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEo
eCwgeSksICIxLWJ5dGUgb2JqZWN0IDw3OD4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX0VRKHgsIHkpLCAiMS1ieXRlIG9iamVjdCA8Nzk+Iik7CisgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9MVCh5LCB5KSwgIjEtYnl0ZSBvYmplY3QgPDc5PiIpOworICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR1QoeCwgeSksICIxLWJ5dGUgb2JqZWN0IDw3OD4i
KTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dUKHgsIHkpLCAiMS1ieXRlIG9i
amVjdCA8Nzk+Iik7CisKKyAgLy8gQ29kZSB0ZXN0ZWQgYnkgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUg
Y2Fubm90IHJlZmVyZW5jZSBsb2NhbAorICAvLyB2YXJpYWJsZXMsIHNvIHdlIGhhdmUgdG8gd3Jp
dGUgVW5wcmludGFibGVDaGFyKCd4JykgaW5zdGVhZCBvZiB4LgorI2lmbmRlZiBfX0JPUkxBTkRD
X18KKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4KKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNT
RVJUX05FKFVucHJpbnRhYmxlQ2hhcigneCcpLCBVbnByaW50YWJsZUNoYXIoJ3gnKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICIxLWJ5dGUgb2JqZWN0IDw3OD4iKTsKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoQVNTRVJUX0xFKFVucHJpbnRhYmxlQ2hhcigneScpLCBVbnByaW50YWJsZUNoYXIo
J3gnKSksCisgICAgICAgICAgICAgICAgICAgICAgICIxLWJ5dGUgb2JqZWN0IDw3OD4iKTsKKyNl
bmRpZgorICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfTEUoVW5wcmludGFibGVDaGFyKCd5
JyksIFVucHJpbnRhYmxlQ2hhcigneCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIjEtYnl0
ZSBvYmplY3QgPDc5PiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfR0UoVW5wcmlu
dGFibGVDaGFyKCd4JyksIFVucHJpbnRhYmxlQ2hhcigneScpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIjEtYnl0ZSBvYmplY3QgPDc4PiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NF
UlRfR0UoVW5wcmludGFibGVDaGFyKCd4JyksIFVucHJpbnRhYmxlQ2hhcigneScpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3QgPDc5PiIpOworfQorCiAvLyBUZXN0cyB0
aGUgRlJJRU5EX1RFU1QgbWFjcm8uCiAKIC8vIFRoaXMgY2xhc3MgaGFzIGEgcHJpdmF0ZSBtZW1i
ZXIgd2Ugd2FudCB0byB0ZXN0LiAgV2Ugd2lsbCB0ZXN0IGl0CkBAIC00NzQ5LDcgKzUxMzMsNyBA
QCBURVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIENvbnN0cnVjdGlvbldvcmtzKSB7CiAgIEVYUEVD
VF9TVFJFUSgiZ2hpIiwgcjUubWVzc2FnZSgpKTsKIH0KIAotLy8gVGVzdHMgdGhhdCB0aGUgbmVn
YXRpb24gZmlwcyB0aGUgcHJlZGljYXRlIHJlc3VsdCBidXQga2VlcHMgdGhlIG1lc3NhZ2UuCisv
LyBUZXN0cyB0aGF0IHRoZSBuZWdhdGlvbiBmbGlwcyB0aGUgcHJlZGljYXRlIHJlc3VsdCBidXQg
a2VlcHMgdGhlIG1lc3NhZ2UuCiBURVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIE5lZ2F0aW9uV29y
a3MpIHsKICAgQXNzZXJ0aW9uUmVzdWx0IHIxID0gQXNzZXJ0aW9uU3VjY2VzcygpIDw8ICJhYmMi
OwogICBFWFBFQ1RfRkFMU0UoIXIxKTsKQEAgLTQ3NjYsNiArNTE1MCwzNyBAQCBURVNUKEFzc2Vy
dGlvblJlc3VsdFRlc3QsIFN0cmVhbWluZ1dvcmtzKSB7CiAgIEVYUEVDVF9TVFJFUSgiYWJjZDB0
cnVlIiwgci5tZXNzYWdlKCkpOwogfQogCitURVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIENhblN0
cmVhbU9zdHJlYW1NYW5pcHVsYXRvcnMpIHsKKyAgQXNzZXJ0aW9uUmVzdWx0IHIgPSBBc3NlcnRp
b25TdWNjZXNzKCk7CisgIHIgPDwgIkRhdGEiIDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoIDw8
IHN0ZDo6ZW5kcyA8PCAiV2lsbCBiZSB2aXNpYmxlIjsKKyAgRVhQRUNUX1NUUkVRKCJEYXRhXG5c
XDBXaWxsIGJlIHZpc2libGUiLCByLm1lc3NhZ2UoKSk7Cit9CisKKy8vIFRoZSBuZXh0IHRlc3Qg
dXNlcyBleHBsaWNpdCBjb252ZXJzaW9uIG9wZXJhdG9ycyAtLSBhIEMrKzExIGZlYXR1cmUuCisj
aWYgR1RFU1RfTEFOR19DWFgxMQorCitURVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIENvbnN0cnVj
dGlibGVGcm9tQ29udGV4dHVhbGx5Q29udmVydGlibGVUb0Jvb2wpIHsKKyAgc3RydWN0IEV4cGxp
Y2l0bHlDb252ZXJ0aWJsZVRvQm9vbCB7CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuIHZhbHVlOyB9CisgICAgYm9vbCB2YWx1ZTsKKyAgfTsKKyAgRXhwbGljaXRs
eUNvbnZlcnRpYmxlVG9Cb29sIHYxID0ge2ZhbHNlfTsKKyAgRXhwbGljaXRseUNvbnZlcnRpYmxl
VG9Cb29sIHYyID0ge3RydWV9OworICBFWFBFQ1RfRkFMU0UodjEpOworICBFWFBFQ1RfVFJVRSh2
Mik7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfTEFOR19DWFgxMQorCitzdHJ1Y3QgQ29udmVydGli
bGVUb0Fzc2VydGlvblJlc3VsdCB7CisgIG9wZXJhdG9yIEFzc2VydGlvblJlc3VsdCgpIGNvbnN0
IHsgcmV0dXJuIEFzc2VydGlvblJlc3VsdCh0cnVlKTsgfQorfTsKKworVEVTVChBc3NlcnRpb25S
ZXN1bHRUZXN0LCBDb25zdHJ1Y3RpYmxlRnJvbUltcGxpY2l0bHlDb252ZXJ0aWJsZSkgeworICBD
b252ZXJ0aWJsZVRvQXNzZXJ0aW9uUmVzdWx0IG9iajsKKyAgRVhQRUNUX1RSVUUob2JqKTsKK30K
KwogLy8gVGVzdHMgc3RyZWFtaW5nIGEgdXNlciB0eXBlIHdob3NlIGRlZmluaXRpb24gYW5kIG9w
ZXJhdG9yIDw8IGFyZQogLy8gYm90aCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KIGNsYXNzIEJh
c2UgewpAQCAtNDk1MCw2ICs1MzY1LDU5IEBAIFRFU1RfRihUZXN0SW5mb1Rlc3QsIHJlc3VsdCkg
ewogICBBU1NFUlRfRVEoMCwgR2V0VGVzdFJlc3VsdCh0ZXN0X2luZm8pLT50b3RhbF9wYXJ0X2Nv
dW50KCkpOwogfQogCisjZGVmaW5lIFZFUklGWV9DT0RFX0xPQ0FUSU9OIFwKKyAgY29uc3QgaW50
IGV4cGVjdGVkX2xpbmUgPSBfX0xJTkVfXyAtIDE7IFwKKyAgY29uc3QgVGVzdEluZm8qIGNvbnN0
IHRlc3RfaW5mbyA9IEdldFVuaXRUZXN0SW1wbCgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOyBcCisg
IEFTU0VSVF9UUlVFKHRlc3RfaW5mbyk7IFwKKyAgRVhQRUNUX1NUUkVRKF9fRklMRV9fLCB0ZXN0
X2luZm8tPmZpbGUoKSk7IFwKKyAgRVhQRUNUX0VRKGV4cGVjdGVkX2xpbmUsIHRlc3RfaW5mby0+
bGluZSgpKQorCitURVNUKENvZGVMb2NhdGlvbkZvclRFU1QsIFZlcmlmeSkgeworICBWRVJJRllf
Q09ERV9MT0NBVElPTjsKK30KKworY2xhc3MgQ29kZUxvY2F0aW9uRm9yVEVTVEYgOiBwdWJsaWMg
VGVzdCB7Cit9OworCitURVNUX0YoQ29kZUxvY2F0aW9uRm9yVEVTVEYsIFZlcmlmeSkgeworICBW
RVJJRllfQ09ERV9MT0NBVElPTjsKK30KKworY2xhc3MgQ29kZUxvY2F0aW9uRm9yVEVTVFAgOiBw
dWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsKK307CisKK1RFU1RfUChDb2RlTG9jYXRpb25Gb3JU
RVNUUCwgVmVyaWZ5KSB7CisgIFZFUklGWV9DT0RFX0xPQ0FUSU9OOworfQorCitJTlNUQU5USUFU
RV9URVNUX0NBU0VfUCgsIENvZGVMb2NhdGlvbkZvclRFU1RQLCBWYWx1ZXMoMCkpOworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIENvZGVMb2NhdGlvbkZvclRZUEVEVEVTVCA6IHB1Ymxp
YyBUZXN0IHsKK307CisKK1RZUEVEX1RFU1RfQ0FTRShDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1Qs
IGludCk7CisKK1RZUEVEX1RFU1QoQ29kZUxvY2F0aW9uRm9yVFlQRURURVNULCBWZXJpZnkpIHsK
KyAgVkVSSUZZX0NPREVfTE9DQVRJT047Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xh
c3MgQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCA6IHB1YmxpYyBUZXN0IHsKK307CisKK1RZUEVE
X1RFU1RfQ0FTRV9QKENvZGVMb2NhdGlvbkZvclRZUEVEVEVTVFApOworCitUWVBFRF9URVNUX1Ao
Q29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCwgVmVyaWZ5KSB7CisgIFZFUklGWV9DT0RFX0xPQ0FU
SU9OOworfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChDb2RlTG9jYXRpb25Gb3JUWVBF
RFRFU1RQLCBWZXJpZnkpOworCitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgQ29k
ZUxvY2F0aW9uRm9yVFlQRURURVNUUCwgaW50KTsKKworI3VuZGVmIFZFUklGWV9DT0RFX0xPQ0FU
SU9OCisKIC8vIFRlc3RzIHNldHRpbmcgdXAgYW5kIHRlYXJpbmcgZG93biBhIHRlc3QgY2FzZS4K
IAogY2xhc3MgU2V0VXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgVGVzdCB7CkBAIC01MDEzLDcgKzU0
ODEsOCBAQCBURVNUX0YoU2V0VXBUZXN0Q2FzZVRlc3QsIFRlc3QyKSB7CiAgIEVYUEVDVF9TVFJF
USgiMTIzIiwgc2hhcmVkX3Jlc291cmNlXyk7CiB9CiAKLS8vIFRoZSBJbml0R29vZ2xlVGVzdFRl
c3QgdGVzdCBjYXNlIHRlc3RzIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCkuCisKKy8vIFRoZSBQ
YXJzZUZsYWdzVGVzdCB0ZXN0IGNhc2UgdGVzdHMgUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5Lgog
CiAvLyBUaGUgRmxhZ3Mgc3RydWN0IHN0b3JlcyBhIGNvcHkgb2YgYWxsIEdvb2dsZSBUZXN0IGZs
YWdzLgogc3RydWN0IEZsYWdzIHsKQEAgLTUwMzAsNiArNTQ5OSw3IEBAIHN0cnVjdCBGbGFncyB7
CiAgICAgICAgICAgICByZXBlYXQoMSksCiAgICAgICAgICAgICBzaHVmZmxlKGZhbHNlKSwKICAg
ICAgICAgICAgIHN0YWNrX3RyYWNlX2RlcHRoKGtNYXhTdGFja1RyYWNlRGVwdGgpLAorICAgICAg
ICAgICAgc3RyZWFtX3Jlc3VsdF90bygiIiksCiAgICAgICAgICAgICB0aHJvd19vbl9mYWlsdXJl
KGZhbHNlKSB7fQogCiAgIC8vIEZhY3RvcnkgbWV0aG9kcy4KQEAgLTUwOTgsOCArNTU2OCw4IEBA
IHN0cnVjdCBGbGFncyB7CiAgICAgcmV0dXJuIGZsYWdzOwogICB9CiAKLSAgLy8gQ3JlYXRlcyBh
IEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3RfcmFuZG9tX3NlZWQgZmxhZyBoYXMKLSAgLy8g
dGhlIGdpdmVuIHZhbHVlLgorICAvLyBDcmVhdGVzIGEgRmxhZ3Mgc3RydWN0IHdoZXJlIHRoZSBn
dGVzdF9yYW5kb21fc2VlZCBmbGFnIGhhcyB0aGUgZ2l2ZW4KKyAgLy8gdmFsdWUuCiAgIHN0YXRp
YyBGbGFncyBSYW5kb21TZWVkKEludDMyIHJhbmRvbV9zZWVkKSB7CiAgICAgRmxhZ3MgZmxhZ3M7
CiAgICAgZmxhZ3MucmFuZG9tX3NlZWQgPSByYW5kb21fc2VlZDsKQEAgLTUxMTQsOCArNTU4NCw4
IEBAIHN0cnVjdCBGbGFncyB7CiAgICAgcmV0dXJuIGZsYWdzOwogICB9CiAKLSAgLy8gQ3JlYXRl
cyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3Rfc2h1ZmZsZSBmbGFnIGhhcwotICAvLyB0
aGUgZ2l2ZW4gdmFsdWUuCisgIC8vIENyZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIGd0
ZXN0X3NodWZmbGUgZmxhZyBoYXMgdGhlIGdpdmVuCisgIC8vIHZhbHVlLgogICBzdGF0aWMgRmxh
Z3MgU2h1ZmZsZShib29sIHNodWZmbGUpIHsKICAgICBGbGFncyBmbGFnczsKICAgICBmbGFncy5z
aHVmZmxlID0gc2h1ZmZsZTsKQEAgLTUxMzAsNiArNTYwMCwxNCBAQCBzdHJ1Y3QgRmxhZ3Mgewog
ICAgIHJldHVybiBmbGFnczsKICAgfQogCisgIC8vIENyZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hl
cmUgdGhlIEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykgZmxhZyBoYXMKKyAgLy8gdGhlIGdp
dmVuIHZhbHVlLgorICBzdGF0aWMgRmxhZ3MgU3RyZWFtUmVzdWx0VG8oY29uc3QgY2hhciogc3Ry
ZWFtX3Jlc3VsdF90bykgeworICAgIEZsYWdzIGZsYWdzOworICAgIGZsYWdzLnN0cmVhbV9yZXN1
bHRfdG8gPSBzdHJlYW1fcmVzdWx0X3RvOworICAgIHJldHVybiBmbGFnczsKKyAgfQorCiAgIC8v
IENyZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIGd0ZXN0X3Rocm93X29uX2ZhaWx1cmUg
ZmxhZyBoYXMKICAgLy8gdGhlIGdpdmVuIHZhbHVlLgogICBzdGF0aWMgRmxhZ3MgVGhyb3dPbkZh
aWx1cmUoYm9vbCB0aHJvd19vbl9mYWlsdXJlKSB7CkBAIC01MTUxLDExICs1NjI5LDEyIEBAIHN0
cnVjdCBGbGFncyB7CiAgIEludDMyIHJlcGVhdDsKICAgYm9vbCBzaHVmZmxlOwogICBJbnQzMiBz
dGFja190cmFjZV9kZXB0aDsKKyAgY29uc3QgY2hhciogc3RyZWFtX3Jlc3VsdF90bzsKICAgYm9v
bCB0aHJvd19vbl9mYWlsdXJlOwogfTsKIAotLy8gRml4dHVyZSBmb3IgdGVzdGluZyBJbml0R29v
Z2xlVGVzdCgpLgotY2xhc3MgSW5pdEdvb2dsZVRlc3RUZXN0IDogcHVibGljIFRlc3QgeworLy8g
Rml4dHVyZSBmb3IgdGVzdGluZyBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoKS4KK2NsYXNzIFBh
cnNlRmxhZ3NUZXN0IDogcHVibGljIFRlc3QgewogIHByb3RlY3RlZDoKICAgLy8gQ2xlYXJzIHRo
ZSBmbGFncyBiZWZvcmUgZWFjaCB0ZXN0LgogICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CkBAIC01
MTcxLDYgKzU2NTAsNyBAQCBjbGFzcyBJbml0R29vZ2xlVGVzdFRlc3QgOiBwdWJsaWMgVGVzdCB7
CiAgICAgR1RFU1RfRkxBRyhyZXBlYXQpID0gMTsKICAgICBHVEVTVF9GTEFHKHNodWZmbGUpID0g
ZmFsc2U7CiAgICAgR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkgPSBrTWF4U3RhY2tUcmFj
ZURlcHRoOworICAgIEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykgPSAiIjsKICAgICBHVEVT
VF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gZmFsc2U7CiAgIH0KIApAQCAtNTE5OSw4ICs1Njc5
LDEwIEBAIGNsYXNzIEluaXRHb29nbGVUZXN0VGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICBFWFBF
Q1RfRVEoZXhwZWN0ZWQucmFuZG9tX3NlZWQsIEdURVNUX0ZMQUcocmFuZG9tX3NlZWQpKTsKICAg
ICBFWFBFQ1RfRVEoZXhwZWN0ZWQucmVwZWF0LCBHVEVTVF9GTEFHKHJlcGVhdCkpOwogICAgIEVY
UEVDVF9FUShleHBlY3RlZC5zaHVmZmxlLCBHVEVTVF9GTEFHKHNodWZmbGUpKTsKLSAgICBFWFBF
Q1RfRVEoZXhwZWN0ZWQudGhyb3dfb25fZmFpbHVyZSwgR1RFU1RfRkxBRyh0aHJvd19vbl9mYWls
dXJlKSk7CiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkLnN0YWNrX3RyYWNlX2RlcHRoLCBHVEVTVF9G
TEFHKHN0YWNrX3RyYWNlX2RlcHRoKSk7CisgICAgRVhQRUNUX1NUUkVRKGV4cGVjdGVkLnN0cmVh
bV9yZXN1bHRfdG8sCisgICAgICAgICAgICAgICAgIEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90
bykuY19zdHIoKSk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkLnRocm93X29uX2ZhaWx1cmUsIEdU
RVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkpOwogICB9CiAKICAgLy8gUGFyc2VzIGEgY29tbWFu
ZCBsaW5lIChzcGVjaWZpZWQgYnkgYXJnYzEgYW5kIGFyZ3YxKSwgdGhlbgpAQCAtNTIxMywxNiAr
NTY5NSwxNiBAQCBjbGFzcyBJbml0R29vZ2xlVGVzdFRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAg
Y29uc3QgYm9vbCBzYXZlZF9oZWxwX2ZsYWcgPSA6OnRlc3Rpbmc6OmludGVybmFsOjpnX2hlbHBf
ZmxhZzsKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpnX2hlbHBfZmxhZyA9IGZhbHNlOwogCi0j
aWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyMgaWYgR1RFU1RfSEFTX1NUUkVBTV9S
RURJUkVDVElPTgogICAgIENhcHR1cmVTdGRvdXQoKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NU
UkVBTV9SRURJUkVDVElPTl8KKyMgZW5kaWYKIAogICAgIC8vIFBhcnNlcyB0aGUgY29tbWFuZCBs
aW5lLgogICAgIGludGVybmFsOjpQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoJmFyZ2MxLCBjb25z
dF9jYXN0PENoYXJUeXBlKio+KGFyZ3YxKSk7CiAKLSNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElS
RUNUSU9OXwotICAgIGNvbnN0IFN0cmluZyBjYXB0dXJlZF9zdGRvdXQgPSBHZXRDYXB0dXJlZFN0
ZG91dCgpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXworIyBpZiBH
VEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgY2FwdHVy
ZWRfc3Rkb3V0ID0gR2V0Q2FwdHVyZWRTdGRvdXQoKTsKKyMgZW5kaWYKIAogICAgIC8vIFZlcmlm
aWVzIHRoZSBmbGFnIHZhbHVlcy4KICAgICBDaGVja0ZsYWdzKGV4cGVjdGVkKTsKQEAgLTUyMzUs
NyArNTcxNyw3IEBAIGNsYXNzIEluaXRHb29nbGVUZXN0VGVzdCA6IHB1YmxpYyBUZXN0IHsKICAg
ICAvLyBoZWxwIG1lc3NhZ2UgZm9yIHRoZSBmbGFncyBpdCByZWNvZ25pemVzLgogICAgIEVYUEVD
VF9FUShzaG91bGRfcHJpbnRfaGVscCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Z19oZWxwX2ZsYWcp
OwogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyMgaWYgR1RFU1RfSEFTX1NU
UkVBTV9SRURJUkVDVElPTgogICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkX2hlbHBfZnJh
Z21lbnQgPQogICAgICAgICAiVGhpcyBwcm9ncmFtIGNvbnRhaW5zIHRlc3RzIHdyaXR0ZW4gdXNp
bmciOwogICAgIGlmIChzaG91bGRfcHJpbnRfaGVscCkgewpAQCAtNTI0NCwyMSArNTcyNiwyMiBA
QCBjbGFzcyBJbml0R29vZ2xlVGVzdFRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgICBFWFBFQ1Rf
UFJFRF9GT1JNQVQyKElzTm90U3Vic3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICBl
eHBlY3RlZF9oZWxwX2ZyYWdtZW50LCBjYXB0dXJlZF9zdGRvdXQpOwogICAgIH0KLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyMgZW5kaWYgIC8vIEdURVNUX0hBU19T
VFJFQU1fUkVESVJFQ1RJT04KIAogICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OmdfaGVscF9mbGFn
ID0gc2F2ZWRfaGVscF9mbGFnOwogICB9CiAKICAgLy8gVGhpcyBtYWNybyB3cmFwcyBUZXN0UGFy
c2luZ0ZsYWdzIHMudC4gdGhlIHVzZXIgZG9lc24ndCBuZWVkCiAgIC8vIHRvIHNwZWNpZnkgdGhl
IGFycmF5IHNpemVzLgotI2RlZmluZSBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YxLCBh
cmd2MiwgZXhwZWN0ZWQsIHNob3VsZF9wcmludF9oZWxwKSBcCisKKyMgZGVmaW5lIEdURVNUX1RF
U1RfUEFSU0lOR19GTEFHU18oYXJndjEsIGFyZ3YyLCBleHBlY3RlZCwgc2hvdWxkX3ByaW50X2hl
bHApIFwKICAgVGVzdFBhcnNpbmdGbGFncyhzaXplb2YoYXJndjEpL3NpemVvZigqYXJndjEpIC0g
MSwgYXJndjEsIFwKICAgICAgICAgICAgICAgICAgICBzaXplb2YoYXJndjIpL3NpemVvZigqYXJn
djIpIC0gMSwgYXJndjIsIFwKICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwgc2hvdWxkX3By
aW50X2hlbHApCiB9OwogCiAvLyBUZXN0cyBwYXJzaW5nIGFuIGVtcHR5IGNvbW1hbmQgbGluZS4K
LVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEVtcHR5KSB7CitURVNUX0YoUGFyc2VGbGFnc1Rl
c3QsIEVtcHR5KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICBOVUxMCiAgIH07CkBA
IC01MjcxLDcgKzU3NTQsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBFbXB0eSkgewog
fQogCiAvLyBUZXN0cyBwYXJzaW5nIGEgY29tbWFuZCBsaW5lIHRoYXQgaGFzIG5vIGZsYWcuCi1U
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBOb0ZsYWcpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVz
dCwgTm9GbGFnKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAg
ICAgTlVMTApAQCAtNTI4Niw3ICs1NzY5LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwg
Tm9GbGFnKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgYSBiYWQgLS1ndGVzdF9maWx0ZXIgZmxh
Zy4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEZpbHRlckJhZCkgeworVEVTVF9GKFBhcnNl
RmxhZ3NUZXN0LCBGaWx0ZXJCYWQpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJm
b28uZXhlIiwKICAgICAiLS1ndGVzdF9maWx0ZXIiLApAQCAtNTMwMyw3ICs1Nzg2LDcgQEAgVEVT
VF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRmlsdGVyQmFkKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNp
bmcgYW4gZW1wdHkgLS1ndGVzdF9maWx0ZXIgZmxhZy4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRl
c3QsIEZpbHRlckVtcHR5KSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEZpbHRlckVtcHR5KSB7
CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rf
ZmlsdGVyPSIsCkBAIC01MzE5LDcgKzU4MDIsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0
LCBGaWx0ZXJFbXB0eSkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIGEgbm9uLWVtcHR5IC0tZ3Rl
c3RfZmlsdGVyIGZsYWcuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBGaWx0ZXJOb25FbXB0
eSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBGaWx0ZXJOb25FbXB0eSkgewogICBjb25zdCBj
aGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X2ZpbHRlcj1hYmMi
LApAQCAtNTMzNSw3ICs1ODE4LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRmlsdGVy
Tm9uRW1wdHkpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1
cmUuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVyZVdpdGhvdXRWYWx1
ZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBCcmVha09uRmFpbHVyZVdpdGhvdXRWYWx1ZSkg
ewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0
X2JyZWFrX29uX2ZhaWx1cmUiLApAQCAtNTM1MSw3ICs1ODM0LDcgQEAgVEVTVF9GKEluaXRHb29n
bGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVXaXRob3V0VmFsdWUpIHsKIH0KIAogLy8gVGVzdHMg
cGFyc2luZyAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9MC4KLVRFU1RfRihJbml0R29vZ2xlVGVz
dFRlc3QsIEJyZWFrT25GYWlsdXJlRmFsc2VfMCkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBC
cmVha09uRmFpbHVyZUZhbHNlXzApIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJm
b28uZXhlIiwKICAgICAiLS1ndGVzdF9icmVha19vbl9mYWlsdXJlPTAiLApAQCAtNTM2Nyw3ICs1
ODUwLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVGYWxzZV8w
KSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlPWYuCi1U
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVyZUZhbHNlX2YpIHsKK1RFU1Rf
RihQYXJzZUZsYWdzVGVzdCwgQnJlYWtPbkZhaWx1cmVGYWxzZV9mKSB7CiAgIGNvbnN0IGNoYXIq
IGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVy
ZT1mIiwKQEAgLTUzODMsNyArNTg2Niw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEJy
ZWFrT25GYWlsdXJlRmFsc2VfZikgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfYnJl
YWtfb25fZmFpbHVyZT1GLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1
cmVGYWxzZV9GKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEJyZWFrT25GYWlsdXJlRmFsc2Vf
RikgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0
ZXN0X2JyZWFrX29uX2ZhaWx1cmU9RiIsCkBAIC01NDAwLDcgKzU4ODMsNyBAQCBURVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVyZUZhbHNlX0YpIHsKIAogLy8gVGVzdHMgcGFy
c2luZyBhIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnIHRoYXQgaGFzIGEgInRydWUiCiAv
LyBkZWZpbml0aW9uLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVU
cnVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEJyZWFrT25GYWlsdXJlVHJ1ZSkgewogICBj
b25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X2JyZWFr
X29uX2ZhaWx1cmU9MSIsCkBAIC01NDE2LDcgKzU4OTksNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRl
c3RUZXN0LCBCcmVha09uRmFpbHVyZVRydWUpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0
ZXN0X2NhdGNoX2V4Y2VwdGlvbnMuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBDYXRjaEV4
Y2VwdGlvbnMpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgQ2F0Y2hFeGNlcHRpb25zKSB7CiAg
IGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfY2F0
Y2hfZXhjZXB0aW9ucyIsCkBAIC01NDMyLDcgKzU5MTUsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRl
c3RUZXN0LCBDYXRjaEV4Y2VwdGlvbnMpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0
X2RlYXRoX3Rlc3RfdXNlX2ZvcmsuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBEZWF0aFRl
c3RVc2VGb3JrKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIERlYXRoVGVzdFVzZUZvcmspIHsK
ICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9k
ZWF0aF90ZXN0X3VzZV9mb3JrIiwKQEAgLTU0NDksNyArNTkzMiw3IEBAIFRFU1RfRihJbml0R29v
Z2xlVGVzdFRlc3QsIERlYXRoVGVzdFVzZUZvcmspIHsKIAogLy8gVGVzdHMgaGF2aW5nIHRoZSBz
YW1lIGZsYWcgdHdpY2Ugd2l0aCBkaWZmZXJlbnQgdmFsdWVzLiAgVGhlCiAvLyBleHBlY3RlZCBi
ZWhhdmlvciBpcyB0aGF0IHRoZSBvbmUgY29taW5nIGxhc3QgdGFrZXMgcHJlY2VkZW5jZS4KLVRF
U1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIER1cGxpY2F0ZWRGbGFncykgeworVEVTVF9GKFBhcnNl
RmxhZ3NUZXN0LCBEdXBsaWNhdGVkRmxhZ3MpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewog
ICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9maWx0ZXI9YSIsCkBAIC01NDY2LDcgKzU5NDks
NyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBEdXBsaWNhdGVkRmxhZ3MpIHsKIH0KIAog
Ly8gVGVzdHMgaGF2aW5nIGFuIHVucmVjb2duaXplZCBmbGFnIG9uIHRoZSBjb21tYW5kIGxpbmUu
Ci1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBVbnJlY29nbml6ZWRGbGFnKSB7CitURVNUX0Yo
UGFyc2VGbGFnc1Rlc3QsIFVucmVjb2duaXplZEZsYWcpIHsKICAgY29uc3QgY2hhciogYXJndltd
ID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIiwKQEAg
LTU0ODgsNyArNTk3MSw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFVucmVjb2duaXpl
ZEZsYWcpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcK
LVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIExpc3RUZXN0c0ZsYWcpIHsKK1RFU1RfRihQYXJz
ZUZsYWdzVGVzdCwgTGlzdFRlc3RzRmxhZykgewogICAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsK
ICAgICAgICJmb28uZXhlIiwKICAgICAgICItLWd0ZXN0X2xpc3RfdGVzdHMiLApAQCAtNTUwNCw3
ICs1OTg3LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzRmxhZykgewog
fQogCiAvLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZyB3aXRoIGEgInRy
dWUiIHZhbHVlCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0VGVzdHNUcnVlKSB7CitU
RVNUX0YoUGFyc2VGbGFnc1Rlc3QsIExpc3RUZXN0c1RydWUpIHsKICAgICBjb25zdCBjaGFyKiBh
cmd2W10gPSB7CiAgICAgICAiZm9vLmV4ZSIsCiAgICAgICAiLS1ndGVzdF9saXN0X3Rlc3RzPTEi
LApAQCAtNTUyMCw3ICs2MDAzLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTGlzdFRl
c3RzVHJ1ZSkgewogfQogCiAvLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxh
ZyB3aXRoIGEgImZhbHNlIiB2YWx1ZQotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTGlzdFRl
c3RzRmFsc2UpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgTGlzdFRlc3RzRmFsc2UpIHsKICAg
ICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAiZm9vLmV4ZSIsCiAgICAgICAiLS1ndGVz
dF9saXN0X3Rlc3RzPTAiLApAQCAtNTUzNiw3ICs2MDE5LDcgQEAgVEVTVF9GKEluaXRHb29nbGVU
ZXN0VGVzdCwgTGlzdFRlc3RzRmFsc2UpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0
X2xpc3RfdGVzdHM9Zi4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIExpc3RUZXN0c0ZhbHNl
X2YpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgTGlzdFRlc3RzRmFsc2VfZikgewogICBjb25z
dCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X2xpc3RfdGVz
dHM9ZiIsCkBAIC01NTUyLDcgKzYwMzUsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBM
aXN0VGVzdHNGYWxzZV9mKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9saXN0X3Rl
c3RzPUYuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0VGVzdHNGYWxzZV9GKSB7CitU
RVNUX0YoUGFyc2VGbGFnc1Rlc3QsIExpc3RUZXN0c0ZhbHNlX0YpIHsKICAgY29uc3QgY2hhciog
YXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9saXN0X3Rlc3RzPUYiLApA
QCAtNTU2OCw3ICs2MDUxLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3Rz
RmFsc2VfRikgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3Rfb3V0cHV0IChpbnZhbGlk
KS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91dHB1dEVtcHR5KSB7CitURVNUX0YoUGFy
c2VGbGFnc1Rlc3QsIE91dHB1dEVtcHR5KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAg
ICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfb3V0cHV0IiwKQEAgLTU1ODUsNyArNjA2OCw3IEBA
IFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91dHB1dEVtcHR5KSB7CiB9CiAKIC8vIFRlc3Rz
IHBhcnNpbmcgLS1ndGVzdF9vdXRwdXQ9eG1sCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBP
dXRwdXRYbWwpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgT3V0cHV0WG1sKSB7CiAgIGNvbnN0
IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfb3V0cHV0PXht
bCIsCkBAIC01NjAxLDcgKzYwODQsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBPdXRw
dXRYbWwpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X291dHB1dD14bWw6ZmlsZQot
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgT3V0cHV0WG1sRmlsZSkgeworVEVTVF9GKFBhcnNl
RmxhZ3NUZXN0LCBPdXRwdXRYbWxGaWxlKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAg
ICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfb3V0cHV0PXhtbDpmaWxlIiwKQEAgLTU2MTcsNyAr
NjEwMCw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91dHB1dFhtbEZpbGUpIHsKIH0K
IAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X291dHB1dD14bWw6ZGlyZWN0b3J5L3BhdGgvCi1U
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBPdXRwdXRYbWxEaXJlY3RvcnkpIHsKK1RFU1RfRihQ
YXJzZUZsYWdzVGVzdCwgT3V0cHV0WG1sRGlyZWN0b3J5KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3Zb
XSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfb3V0cHV0PXhtbDpkaXJlY3Rvcnkv
cGF0aC8iLApAQCAtNTYzNCw3ICs2MTE3LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwg
T3V0cHV0WG1sRGlyZWN0b3J5KSB7CiB9CiAKIC8vIFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3RfcHJp
bnRfdGltZSBmbGFnCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBQcmludFRpbWVGbGFnKSB7
CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFByaW50VGltZUZsYWcpIHsKICAgICBjb25zdCBjaGFy
KiBhcmd2W10gPSB7CiAgICAgICAiZm9vLmV4ZSIsCiAgICAgICAiLS1ndGVzdF9wcmludF90aW1l
IiwKQEAgLTU2NTAsNyArNjEzMyw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50
VGltZUZsYWcpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9wcmludF90aW1lIGZs
YWcgd2l0aCBhICJ0cnVlIiB2YWx1ZQotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUHJpbnRU
aW1lVHJ1ZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBQcmludFRpbWVUcnVlKSB7CiAgICAg
Y29uc3QgY2hhciogYXJndltdID0gewogICAgICAgImZvby5leGUiLAogICAgICAgIi0tZ3Rlc3Rf
cHJpbnRfdGltZT0xIiwKQEAgLTU2NjYsNyArNjE0OSw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVz
dFRlc3QsIFByaW50VGltZVRydWUpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9w
cmludF90aW1lIGZsYWcgd2l0aCBhICJmYWxzZSIgdmFsdWUKLVRFU1RfRihJbml0R29vZ2xlVGVz
dFRlc3QsIFByaW50VGltZUZhbHNlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFByaW50VGlt
ZUZhbHNlKSB7CiAgICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICAgImZvby5leGUiLAog
ICAgICAgIi0tZ3Rlc3RfcHJpbnRfdGltZT0wIiwKQEAgLTU2ODIsNyArNjE2NSw3IEBAIFRFU1Rf
RihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZhbHNlKSB7CiB9CiAKIC8vIFRlc3RzIHBh
cnNpbmcgLS1ndGVzdF9wcmludF90aW1lPWYuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBQ
cmludFRpbWVGYWxzZV9mKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFByaW50VGltZUZhbHNl
X2YpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1n
dGVzdF9wcmludF90aW1lPWYiLApAQCAtNTY5OCw3ICs2MTgxLDcgQEAgVEVTVF9GKEluaXRHb29n
bGVUZXN0VGVzdCwgUHJpbnRUaW1lRmFsc2VfZikgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0t
Z3Rlc3RfcHJpbnRfdGltZT1GLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUHJpbnRUaW1l
RmFsc2VfRikgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBQcmludFRpbWVGYWxzZV9GKSB7CiAg
IGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfcHJp
bnRfdGltZT1GIiwKQEAgLTU3MTQsNyArNjE5Nyw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRl
c3QsIFByaW50VGltZUZhbHNlX0YpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X3Jh
bmRvbV9zZWVkPW51bWJlcgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUmFuZG9tU2VlZCkg
eworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBSYW5kb21TZWVkKSB7CiAgIGNvbnN0IGNoYXIqIGFy
Z3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfcmFuZG9tX3NlZWQ9MTAwMCIs
CkBAIC01NzMwLDcgKzYyMTMsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBSYW5kb21T
ZWVkKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9yZXBlYXQ9bnVtYmVyCi1URVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBSZXBlYXQpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwg
UmVwZWF0KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAg
Ii0tZ3Rlc3RfcmVwZWF0PTEwMDAiLApAQCAtNTc0Niw3ICs2MjI5LDcgQEAgVEVTVF9GKEluaXRH
b29nbGVUZXN0VGVzdCwgUmVwZWF0KSB7CiB9CiAKIC8vIFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3Rf
YWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxhZwotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwg
QWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEFsc29S
dW5EaXNhYmxlZFRlc3RzRmxhZykgewogICAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAg
ICJmb28uZXhlIiwKICAgICAgICItLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIiwKQEAg
LTU3NjMsNyArNjI0Niw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEFsc29SdW5EaXNh
YmxlZFRlc3RzRmxhZykgewogfQogCiAvLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X2Fsc29fcnVu
X2Rpc2FibGVkX3Rlc3RzIGZsYWcgd2l0aCBhICJ0cnVlIiB2YWx1ZQotVEVTVF9GKEluaXRHb29n
bGVUZXN0VGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNUcnVlKSB7CitURVNUX0YoUGFyc2VGbGFn
c1Rlc3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzVHJ1ZSkgewogICAgIGNvbnN0IGNoYXIqIGFyZ3Zb
XSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICItLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVk
X3Rlc3RzPTEiLApAQCAtNTc4MCw3ICs2MjYzLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVz
dCwgQWxzb1J1bkRpc2FibGVkVGVzdHNUcnVlKSB7CiB9CiAKIC8vIFRlc3RzIGhhdmluZyBhIC0t
Z3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxhZyB3aXRoIGEgImZhbHNlIiB2YWx1ZQot
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNGYWxzZSkgewor
VEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBBbHNvUnVuRGlzYWJsZWRUZXN0c0ZhbHNlKSB7CiAgICAg
Y29uc3QgY2hhciogYXJndltdID0gewogICAgICAgImZvby5leGUiLAogICAgICAgIi0tZ3Rlc3Rf
YWxzb19ydW5fZGlzYWJsZWRfdGVzdHM9MCIsCkBAIC01Nzk3LDcgKzYyODAsNyBAQCBURVNUX0Yo
SW5pdEdvb2dsZVRlc3RUZXN0LCBBbHNvUnVuRGlzYWJsZWRUZXN0c0ZhbHNlKSB7CiB9CiAKIC8v
IFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9zaHVmZmxlLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVz
dCwgU2h1ZmZsZVdpdGhvdXRWYWx1ZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBTaHVmZmxl
V2l0aG91dFZhbHVlKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIs
CiAgICAgIi0tZ3Rlc3Rfc2h1ZmZsZSIsCkBAIC01ODEzLDcgKzYyOTYsNyBAQCBURVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBTaHVmZmxlV2l0aG91dFZhbHVlKSB7CiB9CiAKIC8vIFRlc3RzIHBh
cnNpbmcgLS1ndGVzdF9zaHVmZmxlPTAuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBTaHVm
ZmxlRmFsc2VfMCkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBTaHVmZmxlRmFsc2VfMCkgewog
ICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X3No
dWZmbGU9MCIsCkBAIC01ODI4LDkgKzYzMTEsOCBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0
LCBTaHVmZmxlRmFsc2VfMCkgewogICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFy
Z3YyLCBGbGFnczo6U2h1ZmZsZShmYWxzZSksIGZhbHNlKTsKIH0KIAotLy8gVGVzdHMgcGFyc2lu
ZyBhIC0tZ3Rlc3Rfc2h1ZmZsZSBmbGFnIHRoYXQgaGFzIGEgInRydWUiCi0vLyBkZWZpbml0aW9u
LgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU2h1ZmZsZVRydWUpIHsKKy8vIFRlc3RzIHBh
cnNpbmcgYSAtLWd0ZXN0X3NodWZmbGUgZmxhZyB0aGF0IGhhcyBhICJ0cnVlIiBkZWZpbml0aW9u
LgorVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBTaHVmZmxlVHJ1ZSkgewogICBjb25zdCBjaGFyKiBh
cmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X3NodWZmbGU9MSIsCkBAIC01
ODQ2LDcgKzYzMjgsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBTaHVmZmxlVHJ1ZSkg
ewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3Rfc3RhY2tfdHJhY2VfZGVwdGg9bnVtYmVy
LgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU3RhY2tUcmFjZURlcHRoKSB7CitURVNUX0Yo
UGFyc2VGbGFnc1Rlc3QsIFN0YWNrVHJhY2VEZXB0aCkgewogICBjb25zdCBjaGFyKiBhcmd2W10g
PSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X3N0YWNrX3RyYWNlX2RlcHRoPTUiLApA
QCAtNTg2MSw4ICs2MzQzLDI0IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFN0YWNrVHJh
Y2VEZXB0aCkgewogICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFn
czo6U3RhY2tUcmFjZURlcHRoKDUpLCBmYWxzZSk7CiB9CiAKK1RFU1RfRihQYXJzZUZsYWdzVGVz
dCwgU3RyZWFtUmVzdWx0VG8pIHsKKyAgY29uc3QgY2hhciogYXJndltdID0geworICAgICJmb28u
ZXhlIiwKKyAgICAiLS1ndGVzdF9zdHJlYW1fcmVzdWx0X3RvPWxvY2FsaG9zdDoxMjM0IiwKKyAg
ICBOVUxMCisgIH07CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAiZm9vLmV4ZSIs
CisgICAgTlVMTAorICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oCisgICAgICBh
cmd2LCBhcmd2MiwgRmxhZ3M6OlN0cmVhbVJlc3VsdFRvKCJsb2NhbGhvc3Q6MTIzNCIpLCBmYWxz
ZSk7Cit9CisKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlLgotVEVT
VF9GKEluaXRHb29nbGVUZXN0VGVzdCwgVGhyb3dPbkZhaWx1cmVXaXRob3V0VmFsdWUpIHsKK1RF
U1RfRihQYXJzZUZsYWdzVGVzdCwgVGhyb3dPbkZhaWx1cmVXaXRob3V0VmFsdWUpIHsKICAgY29u
c3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF90aHJvd19v
bl9mYWlsdXJlIiwKQEAgLTU4NzgsNyArNjM3Niw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRl
c3QsIFRocm93T25GYWlsdXJlV2l0aG91dFZhbHVlKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcg
LS1ndGVzdF90aHJvd19vbl9mYWlsdXJlPTAuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBU
aHJvd09uRmFpbHVyZUZhbHNlXzApIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgVGhyb3dPbkZh
aWx1cmVGYWxzZV8wKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIs
CiAgICAgIi0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZT0wIiwKQEAgLTU4OTUsNyArNjM5Myw3IEBA
IFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFRocm93T25GYWlsdXJlRmFsc2VfMCkgewogCiAv
LyBUZXN0cyBwYXJzaW5nIGEgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlIGZsYWcgdGhhdCBoYXMg
YSAidHJ1ZSIKIC8vIGRlZmluaXRpb24uCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBUaHJv
d09uRmFpbHVyZVRydWUpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgVGhyb3dPbkZhaWx1cmVU
cnVlKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0t
Z3Rlc3RfdGhyb3dfb25fZmFpbHVyZT0xIiwKQEAgLTU5MTAsOSArNjQwOCw5IEBAIFRFU1RfRihJ
bml0R29vZ2xlVGVzdFRlc3QsIFRocm93T25GYWlsdXJlVHJ1ZSkgewogICBHVEVTVF9URVNUX1BB
UlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6VGhyb3dPbkZhaWx1cmUodHJ1ZSksIGZh
bHNlKTsKIH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lORE9XUwog
Ly8gVGVzdHMgcGFyc2luZyB3aWRlIHN0cmluZ3MuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0
LCBXaWRlU3RyaW5ncykgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBXaWRlU3RyaW5ncykgewog
ICBjb25zdCB3Y2hhcl90KiBhcmd2W10gPSB7CiAgICAgTCJmb28uZXhlIiwKICAgICBMIi0tZ3Rl
c3RfZmlsdGVyPUZvbyoiLApAQCAtNTkzNSw3ICs2NDMzLDEwOCBAQCBURVNUX0YoSW5pdEdvb2ds
ZVRlc3RUZXN0LCBXaWRlU3RyaW5ncykgewogCiAgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18o
YXJndiwgYXJndjIsIGV4cGVjdGVkX2ZsYWdzLCBmYWxzZSk7CiB9Ci0jZW5kaWYgIC8vIEdURVNU
X09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworI2lmIEdURVNUX1VT
RV9PV05fRkxBR0ZJTEVfRkxBR18KK2NsYXNzIEZsYWdmaWxlVGVzdCA6IHB1YmxpYyBQYXJzZUZs
YWdzVGVzdCB7CisgcHVibGljOgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgUGFyc2VG
bGFnc1Rlc3Q6OlNldFVwKCk7CisKKyAgICB0ZXN0ZGF0YV9wYXRoXy5TZXQoaW50ZXJuYWw6OkZp
bGVQYXRoKAorICAgICAgICB0ZXN0aW5nOjpUZW1wRGlyKCkgKyBpbnRlcm5hbDo6R2V0Q3VycmVu
dEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKworICAgICAgICAiX2ZsYWdmaWxlX3Rlc3QiKSk7
CisgICAgdGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0
cigpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVGb2xkZXIoKSk7Cisg
IH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgdGVzdGluZzo6aW50ZXJuYWw6
OnBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKKyAgICBQYXJzZUZsYWdzVGVz
dDo6VGVhckRvd24oKTsKKyAgfQorCisgIGludGVybmFsOjpGaWxlUGF0aCBDcmVhdGVGbGFnZmls
ZShjb25zdCBjaGFyKiBjb250ZW50cykgeworICAgIGludGVybmFsOjpGaWxlUGF0aCBmaWxlX3Bh
dGgoaW50ZXJuYWw6OkZpbGVQYXRoOjpHZW5lcmF0ZVVuaXF1ZUZpbGVOYW1lKAorICAgICAgICB0
ZXN0ZGF0YV9wYXRoXywgaW50ZXJuYWw6OkZpbGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIpKTsKKyAg
ICBGSUxFKiBmID0gdGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpGT3BlbihmaWxlX3BhdGguY19z
dHIoKSwgInciKTsKKyAgICBmcHJpbnRmKGYsICIlcyIsIGNvbnRlbnRzKTsKKyAgICBmY2xvc2Uo
Zik7CisgICAgcmV0dXJuIGZpbGVfcGF0aDsKKyAgfQorCisgcHJpdmF0ZToKKyAgaW50ZXJuYWw6
OkZpbGVQYXRoIHRlc3RkYXRhX3BhdGhfOworfTsKKworLy8gVGVzdHMgYW4gZW1wdHkgZmxhZ2Zp
bGUuCitURVNUX0YoRmxhZ2ZpbGVUZXN0LCBFbXB0eSkgeworICBpbnRlcm5hbDo6RmlsZVBhdGgg
ZmxhZ2ZpbGVfcGF0aChDcmVhdGVGbGFnZmlsZSgiIikpOworICBzdGQ6OnN0cmluZyBmbGFnZmls
ZV9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIgR1RFU1RfRkxBR19QUkVGSVhfICJmbGFn
ZmlsZT0iKSArIGZsYWdmaWxlX3BhdGguY19zdHIoKTsKKworICBjb25zdCBjaGFyKiBhcmd2W10g
PSB7CisgICAgImZvby5leGUiLAorICAgIGZsYWdmaWxlX2ZsYWcuY19zdHIoKSwKKyAgICBOVUxM
CisgIH07CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAg
TlVMTAorICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZs
YWdzKCksIGZhbHNlKTsKK30KKworLy8gVGVzdHMgcGFzc2luZyBhIG5vbi1lbXB0eSAtLWd0ZXN0
X2ZpbHRlciBmbGFnIHZpYSAtLWd0ZXN0X2ZsYWdmaWxlLgorVEVTVF9GKEZsYWdmaWxlVGVzdCwg
RmlsdGVyTm9uRW1wdHkpIHsKKyAgaW50ZXJuYWw6OkZpbGVQYXRoIGZsYWdmaWxlX3BhdGgoQ3Jl
YXRlRmxhZ2ZpbGUoCisgICAgICAiLS0iICBHVEVTVF9GTEFHX1BSRUZJWF8gICJmaWx0ZXI9YWJj
IikpOworICBzdGQ6OnN0cmluZyBmbGFnZmlsZV9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCIt
LSIgR1RFU1RfRkxBR19QUkVGSVhfICJmbGFnZmlsZT0iKSArIGZsYWdmaWxlX3BhdGguY19zdHIo
KTsKKworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgImZvby5leGUiLAorICAgIGZsYWdm
aWxlX2ZsYWcuY19zdHIoKSwKKyAgICBOVUxMCisgIH07CisKKyAgY29uc3QgY2hhciogYXJndjJb
XSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAorICB9OworCisgIEdURVNUX1RFU1RfUEFS
U0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpGaWx0ZXIoImFiYyIpLCBmYWxzZSk7Cit9
CisKKy8vIFRlc3RzIHBhc3Npbmcgc2V2ZXJhbCBmbGFncyB2aWEgLS1ndGVzdF9mbGFnZmlsZS4K
K1RFU1RfRihGbGFnZmlsZVRlc3QsIFNldmVyYWxGbGFncykgeworICBpbnRlcm5hbDo6RmlsZVBh
dGggZmxhZ2ZpbGVfcGF0aChDcmVhdGVGbGFnZmlsZSgKKyAgICAgICItLSIgIEdURVNUX0ZMQUdf
UFJFRklYXyAgImZpbHRlcj1hYmNcbiIKKyAgICAgICItLSIgIEdURVNUX0ZMQUdfUFJFRklYXyAg
ImJyZWFrX29uX2ZhaWx1cmVcbiIKKyAgICAgICItLSIgIEdURVNUX0ZMQUdfUFJFRklYXyAgImxp
c3RfdGVzdHMiKSk7CisgIHN0ZDo6c3RyaW5nIGZsYWdmaWxlX2ZsYWcgPQorICAgICAgc3RkOjpz
dHJpbmcoIi0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImZsYWdmaWxlPSIpICsgZmxhZ2ZpbGVfcGF0
aC5jX3N0cigpOworCisgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisg
ICAgZmxhZ2ZpbGVfZmxhZy5jX3N0cigpLAorICAgIE5VTEwKKyAgfTsKKworICBjb25zdCBjaGFy
KiBhcmd2MltdID0geworICAgICJmb28uZXhlIiwKKyAgICBOVUxMCisgIH07CisKKyAgRmxhZ3Mg
ZXhwZWN0ZWRfZmxhZ3M7CisgIGV4cGVjdGVkX2ZsYWdzLmJyZWFrX29uX2ZhaWx1cmUgPSB0cnVl
OworICBleHBlY3RlZF9mbGFncy5maWx0ZXIgPSAiYWJjIjsKKyAgZXhwZWN0ZWRfZmxhZ3MubGlz
dF90ZXN0cyA9IHRydWU7CisKKyAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2
MiwgZXhwZWN0ZWRfZmxhZ3MsIGZhbHNlKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfVVNFX09XTl9G
TEFHRklMRV9GTEFHXwogCiAvLyBUZXN0cyBjdXJyZW50X3Rlc3RfaW5mbygpIGluIFVuaXRUZXN0
LgogY2xhc3MgQ3VycmVudFRlc3RJbmZvVGVzdCA6IHB1YmxpYyBUZXN0IHsKQEAgLTU5OTAsNiAr
NjU4OSw3IEBAIFRFU1RfRihDdXJyZW50VGVzdEluZm9UZXN0LCBXb3Jrc0ZvclNlY29uZFRlc3RJ
bkFUZXN0Q2FzZSkgewogCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCisKIC8vIFRoZXNlIHR3
byBsaW5lcyB0ZXN0IHRoYXQgd2UgY2FuIGRlZmluZSB0ZXN0cyBpbiBhIG5hbWVzcGFjZSB0aGF0
CiAvLyBoYXMgdGhlIG5hbWUgInRlc3RpbmciIGFuZCBpcyBuZXN0ZWQgaW4gYW5vdGhlciBuYW1l
c3BhY2UuCiBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlIHsKQEAgLTYwNDgsNyArNjY0OCw3IEBAIFRF
U1QoU3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIFVuY29uZGl0aW9uYWwpIHsKIAogI2lmZGVmIF9f
Qk9STEFORENfXwogLy8gU2lsZW5jZXMgd2FybmluZ3M6ICJDb25kaXRpb24gaXMgYWx3YXlzIHRy
dWUiLCAiVW5yZWFjaGFibGUgY29kZSIKLSNwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjIC13LXJj
aAorIyBwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAogI2VuZGlmCiAKIFRFU1QoU3Ry
ZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIFRydXRoKSB7CkBAIC02MDcwLDggKzY2NzAsOCBAQCBURVNU
KFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBUcnV0aDIpIHsKIH0KIAogI2lmZGVmIF9fQk9STEFO
RENfXwotLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0ZXIgcHJldmlvdXMgIiNwcmFnbWEgb3B0aW9u
IHB1c2giIHN1cHJlc3NlZCB0aGVtCi0jcHJhZ21hIG9wdGlvbiBwb3AKKy8vIFJlc3RvcmVzIHdh
cm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXBwcmVzc2VkIHRo
ZW0KKyMgcHJhZ21hIG9wdGlvbiBwb3AKICNlbmRpZgogCiBURVNUKFN0cmVhbWluZ0Fzc2VydGlv
bnNUZXN0LCBJbnRlZ2VyRXF1YWxzKSB7CkBAIC02MjY0LDE1ICs2ODY0LDQwIEBAIFRFU1QoQ29s
b3JlZE91dHB1dFRlc3QsIFVzZXNDb2xvcnNXaGVuVGVybVN1cHBvcnRzQ29sb3JzKSB7CiAgIFNl
dEVudigiVEVSTSIsICJ4dGVybS1jb2xvciIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCiAg
IEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4K
IAorICBTZXRFbnYoIlRFUk0iLCAieHRlcm0tMjU2Y29sb3IiKTsgIC8vIFRFUk0gc3VwcG9ydHMg
Y29sb3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQg
aXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInNjcmVlbiIpOyAgLy8gVEVSTSBzdXBwb3J0
cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91
dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAic2NyZWVuLTI1NmNvbG9yIik7ICAvLyBU
RVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkp
OyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgorCisgIFNldEVudigiVEVSTSIsICJ0bXV4Iik7ICAvLyBU
RVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkp
OyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgorCisgIFNldEVudigiVEVSTSIsICJ0bXV4LTI1NmNvbG9y
Iik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29s
b3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgorCisgIFNldEVudigiVEVSTSIsICJyeHZ0
LXVuaWNvZGUiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBFWFBFQ1RfVFJVRShTaG91
bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJN
IiwgInJ4dnQtdW5pY29kZS0yNTZjb2xvciIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCisg
IEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4K
KwogICBTZXRFbnYoIlRFUk0iLCAibGludXgiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgog
ICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFku
CisKKyAgU2V0RW52KCJURVJNIiwgImN5Z3dpbiIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMu
CisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRU
WS4KICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogfQogCiAvLyBWZXJpZmllcyB0aGF0IFN0
YXRpY0Fzc2VydFR5cGVFcSB3b3JrcyBpbiBhIG5hbWVzcGFjZSBzY29wZS4KIAotc3RhdGljIGJv
b2wgZHVtbXkxID0gU3RhdGljQXNzZXJ0VHlwZUVxPGJvb2wsIGJvb2w+KCk7Ci1zdGF0aWMgYm9v
bCBkdW1teTIgPSBTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgaW50LCBjb25zdCBpbnQ+KCk7Citz
dGF0aWMgYm9vbCBkdW1teTEgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gPSBTdGF0aWNBc3NlcnRU
eXBlRXE8Ym9vbCwgYm9vbD4oKTsKK3N0YXRpYyBib29sIGR1bW15MiBHVEVTVF9BVFRSSUJVVEVf
VU5VU0VEXyA9CisgICAgU3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGludCwgY29uc3QgaW50Pigp
OwogCiAvLyBWZXJpZmllcyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcSB3b3JrcyBpbiBhIGNsYXNz
LgogCkBAIC02Mjk1LDE0ICs2OTIwLDYgQEAgVEVTVChTdGF0aWNBc3NlcnRUeXBlRXFUZXN0LCBD
b21waWxlc0ZvckVxdWFsVHlwZXMpIHsKICAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCosIEludEFs
aWFzKj4oKTsKIH0KIAotVEVTVChHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wVGVzdCwg
UmV0dXJuc1RoZVN0YWNrVHJhY2UpIHsKLSAgdGVzdGluZzo6VW5pdFRlc3QqIGNvbnN0IHVuaXRf
dGVzdCA9IHRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpOwotCi0gIC8vIFdlIGRvbid0
IGhhdmUgYSBzdGFjayB3YWxrZXIgaW4gR29vZ2xlIFRlc3QgeWV0LgotICBFWFBFQ1RfU1RSRVEo
IiIsIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AodW5pdF90ZXN0LCAwKS5jX3N0cigp
KTsKLSAgRVhQRUNUX1NUUkVRKCIiLCBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKHVu
aXRfdGVzdCwgMSkuY19zdHIoKSk7Ci19Ci0KIFRFU1QoSGFzTm9uZmF0YWxGYWlsdXJlVGVzdCwg
UmV0dXJuc0ZhbHNlV2hlblRoZXJlSXNOb0ZhaWx1cmUpIHsKICAgRVhQRUNUX0ZBTFNFKEhhc05v
bmZhdGFsRmFpbHVyZSgpKTsKIH0KQEAgLTY0NjYsNyArNzA4Myw3IEBAIFRFU1QoVGVzdEV2ZW50
TGlzdGVuZXJzVGVzdCwgQXBwZW5kKSB7CiAvLyBvcmRlci4KIGNsYXNzIFNlcXVlbmNlVGVzdGlu
Z0xpc3RlbmVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewogIHB1YmxpYzoKLSAg
U2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIoc3RkOjp2ZWN0b3I8U3RyaW5nPiogdmVjdG9yLCBjb25z
dCBjaGFyKiBpZCkKKyAgU2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIoc3RkOjp2ZWN0b3I8c3RkOjpz
dHJpbmc+KiB2ZWN0b3IsIGNvbnN0IGNoYXIqIGlkKQogICAgICAgOiB2ZWN0b3JfKHZlY3Rvciks
IGlkXyhpZCkge30KIAogIHByb3RlY3RlZDoKQEAgLTY0ODksMjAgKzcxMDYsMjAgQEAgY2xhc3Mg
U2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7
CiAgIH0KIAogIHByaXZhdGU6Ci0gIFN0cmluZyBHZXRFdmVudERlc2NyaXB0aW9uKGNvbnN0IGNo
YXIqIG1ldGhvZCkgeworICBzdGQ6OnN0cmluZyBHZXRFdmVudERlc2NyaXB0aW9uKGNvbnN0IGNo
YXIqIG1ldGhvZCkgewogICAgIE1lc3NhZ2UgbWVzc2FnZTsKICAgICBtZXNzYWdlIDw8IGlkXyA8
PCAiLiIgPDwgbWV0aG9kOwogICAgIHJldHVybiBtZXNzYWdlLkdldFN0cmluZygpOwogICB9CiAK
LSAgc3RkOjp2ZWN0b3I8U3RyaW5nPiogdmVjdG9yXzsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+KiB2ZWN0b3JfOwogICBjb25zdCBjaGFyKiBjb25zdCBpZF87CiAKICAgR1RFU1RfRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOXyhTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lcik7CiB9OwogCiBURVNU
KEV2ZW50TGlzdGVuZXJUZXN0LCBBcHBlbmRLZWVwc09yZGVyKSB7Ci0gIHN0ZDo6dmVjdG9yPFN0
cmluZz4gdmVjOworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdmVjOwogICBUZXN0RXZlbnRM
aXN0ZW5lcnMgbGlzdGVuZXJzOwogICBsaXN0ZW5lcnMuQXBwZW5kKG5ldyBTZXF1ZW5jZVRlc3Rp
bmdMaXN0ZW5lcigmdmVjLCAiMXN0IikpOwogICBsaXN0ZW5lcnMuQXBwZW5kKG5ldyBTZXF1ZW5j
ZVRlc3RpbmdMaXN0ZW5lcigmdmVjLCAiMm5kIikpOwpAQCAtNjcxNSw0ICs3MzMyLDQ2NCBAQCBH
VEVTVF9URVNUKEFsdGVybmF0aXZlTmFtZVRlc3QsIFdvcmtzKSB7ICAvLyBHVEVTVF9URVNUIGlz
IHRoZSBzYW1lIGFzIFRFU1QuCiAgIC8vIEdURVNUX0ZBSUwgaXMgdGhlIHNhbWUgYXMgRkFJTC4K
ICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfRkFJTCgpIDw8ICJBbiBleHBlY3RlZCBmYWls
dXJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKwor
ICAvLyBHVEVTVF9BU1NFUlRfWFkgaXMgdGhlIHNhbWUgYXMgQVNTRVJUX1hZLgorCisgIEdURVNU
X0FTU0VSVF9FUSgwLCAwKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0VR
KDAsIDEpIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNT
RVJUX0VRKDEsIDApIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKworICBHVEVTVF9BU1NFUlRfTkUoMCwgMSk7
CisgIEdURVNUX0FTU0VSVF9ORSgxLCAwKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1Rf
QVNTRVJUX05FKDAsIDApIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKworICBHVEVTVF9BU1NFUlRfTEUoMCwg
MCk7CisgIEdURVNUX0FTU0VSVF9MRSgwLCAxKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RF
U1RfQVNTRVJUX0xFKDEsIDApIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKworICBHVEVTVF9BU1NFUlRfTFQo
MCwgMSk7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdURVNUX0FTU0VSVF9MVCgwLCAwKSA8PCAi
QW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAgICAgICAgICAgICAgICJBbiBleHBlY3Rl
ZCBmYWlsdXJlIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdURVNUX0FTU0VSVF9MVCgxLCAw
KSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAgICAgICAgICAgICAgICJBbiBl
eHBlY3RlZCBmYWlsdXJlIik7CisKKyAgR1RFU1RfQVNTRVJUX0dFKDAsIDApOworICBHVEVTVF9B
U1NFUlRfR0UoMSwgMCk7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdURVNUX0FTU0VSVF9HRSgw
LCAxKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAgICAgICAgICAgICAgICJB
biBleHBlY3RlZCBmYWlsdXJlIik7CisKKyAgR1RFU1RfQVNTRVJUX0dUKDEsIDApOworICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfR1QoMCwgMSkgPDwgIkFuIGV4cGVjdGVkIGZh
aWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOwor
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfR1QoMSwgMSkgPDwgIkFuIGV4cGVj
dGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVy
ZSIpOworfQorCisvLyBUZXN0cyBmb3IgaW50ZXJuYWwgdXRpbGl0aWVzIG5lY2Vzc2FyeSBmb3Ig
aW1wbGVtZW50YXRpb24gb2YgdGhlIHVuaXZlcnNhbAorLy8gcHJpbnRpbmcuCisvLyBGSVhNRTog
RmluZCBhIGJldHRlciBob21lIGZvciB0aGVtLgorCitjbGFzcyBDb252ZXJzaW9uSGVscGVyQmFz
ZSB7fTsKK2NsYXNzIENvbnZlcnNpb25IZWxwZXJEZXJpdmVkIDogcHVibGljIENvbnZlcnNpb25I
ZWxwZXJCYXNlIHt9OworCisvLyBUZXN0cyB0aGF0IElzQVByb3RvY29sTWVzc2FnZTxUPjo6dmFs
dWUgaXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuCitURVNUKElzQVByb3RvY29sTWVzc2FnZVRl
c3QsIFZhbHVlSXNDb21waWxlVGltZUNvbnN0YW50KSB7CisgIEdURVNUX0NPTVBJTEVfQVNTRVJU
XyhJc0FQcm90b2NvbE1lc3NhZ2U8UHJvdG9jb2xNZXNzYWdlPjo6dmFsdWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdF90cnVlKTsKKyAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKCFJc0FQ
cm90b2NvbE1lc3NhZ2U8aW50Pjo6dmFsdWUsIGNvbnN0X2ZhbHNlKTsKK30KKworLy8gVGVzdHMg
dGhhdCBJc0FQcm90b2NvbE1lc3NhZ2U8VD46OnZhbHVlIGlzIHRydWUgd2hlbiBUIGlzCisvLyBw
cm90bzI6Ok1lc3NhZ2Ugb3IgYSBzdWItY2xhc3Mgb2YgaXQuCitURVNUKElzQVByb3RvY29sTWVz
c2FnZVRlc3QsIFZhbHVlSXNUcnVlV2hlblR5cGVJc0FQcm90b2NvbE1lc3NhZ2UpIHsKKyAgRVhQ
RUNUX1RSVUUoSXNBUHJvdG9jb2xNZXNzYWdlPCA6OnByb3RvMjo6TWVzc2FnZT46OnZhbHVlKTsK
KyAgRVhQRUNUX1RSVUUoSXNBUHJvdG9jb2xNZXNzYWdlPFByb3RvY29sTWVzc2FnZT46OnZhbHVl
KTsKK30KKworLy8gVGVzdHMgdGhhdCBJc0FQcm90b2NvbE1lc3NhZ2U8VD46OnZhbHVlIGlzIGZh
bHNlIHdoZW4gVCBpcyBuZWl0aGVyCisvLyBQcm90b2NvbE1lc3NhZ2Ugbm9yIGEgc3ViLWNsYXNz
IG9mIGl0LgorVEVTVChJc0FQcm90b2NvbE1lc3NhZ2VUZXN0LCBWYWx1ZUlzRmFsc2VXaGVuVHlw
ZUlzTm90QVByb3RvY29sTWVzc2FnZSkgeworICBFWFBFQ1RfRkFMU0UoSXNBUHJvdG9jb2xNZXNz
YWdlPGludD46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNFKElzQVByb3RvY29sTWVzc2FnZTxjb25z
dCBDb252ZXJzaW9uSGVscGVyQmFzZT46OnZhbHVlKTsKK30KKworLy8gVGVzdHMgdGhhdCBDb21w
aWxlQXNzZXJ0VHlwZXNFcXVhbCBjb21waWxlcyB3aGVuIHRoZSB0eXBlIGFyZ3VtZW50cyBhcmUK
Ky8vIGVxdWFsLgorVEVTVChDb21waWxlQXNzZXJ0VHlwZXNFcXVhbCwgQ29tcGlsZXNXaGVuVHlw
ZXNBcmVFcXVhbCkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDx2b2lkLCB2b2lkPigpOwor
ICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQqLCBpbnQqPigpOworfQorCisvLyBUZXN0cyB0
aGF0IFJlbW92ZVJlZmVyZW5jZSBkb2VzIG5vdCBhZmZlY3Qgbm9uLXJlZmVyZW5jZSB0eXBlcy4K
K1RFU1QoUmVtb3ZlUmVmZXJlbmNlVGVzdCwgRG9lc05vdEFmZmVjdE5vblJlZmVyZW5jZVR5cGUp
IHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50LCBSZW1vdmVSZWZlcmVuY2U8aW50Pjo6
dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y29uc3QgY2hhciwgUmVtb3ZlUmVm
ZXJlbmNlPGNvbnN0IGNoYXI+Ojp0eXBlPigpOworfQorCisvLyBUZXN0cyB0aGF0IFJlbW92ZVJl
ZmVyZW5jZSByZW1vdmVzIHJlZmVyZW5jZSBmcm9tIHJlZmVyZW5jZSB0eXBlcy4KK1RFU1QoUmVt
b3ZlUmVmZXJlbmNlVGVzdCwgUmVtb3Zlc1JlZmVyZW5jZSkgeworICBDb21waWxlQXNzZXJ0VHlw
ZXNFcXVhbDxpbnQsIFJlbW92ZVJlZmVyZW5jZTxpbnQmPjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFz
c2VydFR5cGVzRXF1YWw8Y29uc3QgY2hhciwgUmVtb3ZlUmVmZXJlbmNlPGNvbnN0IGNoYXImPjo6
dHlwZT4oKTsKK30KKworLy8gVGVzdHMgR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV8uCisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lkIFRlc3RHVGVzdFJlbW92ZVJlZmVy
ZW5jZSgpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8VDEsIEdURVNUX1JFTU9WRV9SRUZF
UkVOQ0VfKFQyKT4oKTsKK30KKworVEVTVChSZW1vdmVSZWZlcmVuY2VUZXN0LCBNYWNyb1ZlcnNp
b24pIHsKKyAgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNlPGludCwgaW50PigpOworICBUZXN0R1Rl
c3RSZW1vdmVSZWZlcmVuY2U8Y29uc3QgY2hhciwgY29uc3QgY2hhciY+KCk7Cit9CisKKworLy8g
VGVzdHMgdGhhdCBSZW1vdmVDb25zdCBkb2VzIG5vdCBhZmZlY3Qgbm9uLWNvbnN0IHR5cGVzLgor
VEVTVChSZW1vdmVDb25zdFRlc3QsIERvZXNOb3RBZmZlY3ROb25Db25zdFR5cGUpIHsKKyAgQ29t
cGlsZUFzc2VydFR5cGVzRXF1YWw8aW50LCBSZW1vdmVDb25zdDxpbnQ+Ojp0eXBlPigpOworICBD
b21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjaGFyJiwgUmVtb3ZlQ29uc3Q8Y2hhciY+Ojp0eXBlPigp
OworfQorCisvLyBUZXN0cyB0aGF0IFJlbW92ZUNvbnN0IHJlbW92ZXMgY29uc3QgZnJvbSBjb25z
dCB0eXBlcy4KK1RFU1QoUmVtb3ZlQ29uc3RUZXN0LCBSZW1vdmVzQ29uc3QpIHsKKyAgQ29tcGls
ZUFzc2VydFR5cGVzRXF1YWw8aW50LCBSZW1vdmVDb25zdDxjb25zdCBpbnQ+Ojp0eXBlPigpOwor
ICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjaGFyWzJdLCBSZW1vdmVDb25zdDxjb25zdCBjaGFy
WzJdPjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y2hhclsyXVszXSwgUmVt
b3ZlQ29uc3Q8Y29uc3QgY2hhclsyXVszXT46OnR5cGU+KCk7Cit9CisKKy8vIFRlc3RzIEdURVNU
X1JFTU9WRV9DT05TVF8uCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2
b2lkIFRlc3RHVGVzdFJlbW92ZUNvbnN0KCkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxU
MSwgR1RFU1RfUkVNT1ZFX0NPTlNUXyhUMik+KCk7Cit9CisKK1RFU1QoUmVtb3ZlQ29uc3RUZXN0
LCBNYWNyb1ZlcnNpb24pIHsKKyAgVGVzdEdUZXN0UmVtb3ZlQ29uc3Q8aW50LCBpbnQ+KCk7Cisg
IFRlc3RHVGVzdFJlbW92ZUNvbnN0PGRvdWJsZSYsIGRvdWJsZSY+KCk7CisgIFRlc3RHVGVzdFJl
bW92ZUNvbnN0PGNoYXIsIGNvbnN0IGNoYXI+KCk7Cit9CisKKy8vIFRlc3RzIEdURVNUX1JFTU9W
RV9SRUZFUkVOQ0VfQU5EX0NPTlNUXy4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMj4KK3ZvaWQgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3QoKSB7CisgIENvbXBp
bGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBHVEVTVF9SRU1PVkVfUkVGRVJFTkNFX0FORF9DT05TVF8o
VDIpPigpOworfQorCitURVNUKFJlbW92ZVJlZmVyZW5jZVRvQ29uc3RUZXN0LCBXb3Jrcykgewor
ICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxpbnQsIGludD4oKTsKKyAgVGVzdEdU
ZXN0UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8ZG91YmxlLCBkb3VibGUmPigpOworICBUZXN0R1Rl
c3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxjaGFyLCBjb25zdCBjaGFyPigpOworICBUZXN0R1Rl
c3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxjaGFyLCBjb25zdCBjaGFyJj4oKTsKKyAgVGVzdEdU
ZXN0UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqPigpOwor
fQorCisvLyBUZXN0cyB0aGF0IEFkZFJlZmVyZW5jZSBkb2VzIG5vdCBhZmZlY3QgcmVmZXJlbmNl
IHR5cGVzLgorVEVTVChBZGRSZWZlcmVuY2VUZXN0LCBEb2VzTm90QWZmZWN0UmVmZXJlbmNlVHlw
ZSkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQmLCBBZGRSZWZlcmVuY2U8aW50Jj46
OnR5cGU+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNvbnN0IGNoYXImLCBBZGRSZWZl
cmVuY2U8Y29uc3QgY2hhciY+Ojp0eXBlPigpOworfQorCisvLyBUZXN0cyB0aGF0IEFkZFJlZmVy
ZW5jZSBhZGRzIHJlZmVyZW5jZSB0byBub24tcmVmZXJlbmNlIHR5cGVzLgorVEVTVChBZGRSZWZl
cmVuY2VUZXN0LCBBZGRzUmVmZXJlbmNlKSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGlu
dCYsIEFkZFJlZmVyZW5jZTxpbnQ+Ojp0eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVh
bDxjb25zdCBjaGFyJiwgQWRkUmVmZXJlbmNlPGNvbnN0IGNoYXI+Ojp0eXBlPigpOworfQorCisv
LyBUZXN0cyBHVEVTVF9BRERfUkVGRVJFTkNFXy4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMj4KK3ZvaWQgVGVzdEdUZXN0QWRkUmVmZXJlbmNlKCkgeworICBDb21waWxlQXNz
ZXJ0VHlwZXNFcXVhbDxUMSwgR1RFU1RfQUREX1JFRkVSRU5DRV8oVDIpPigpOworfQorCitURVNU
KEFkZFJlZmVyZW5jZVRlc3QsIE1hY3JvVmVyc2lvbikgeworICBUZXN0R1Rlc3RBZGRSZWZlcmVu
Y2U8aW50JiwgaW50PigpOworICBUZXN0R1Rlc3RBZGRSZWZlcmVuY2U8Y29uc3QgY2hhciYsIGNv
bnN0IGNoYXImPigpOworfQorCisvLyBUZXN0cyBHVEVTVF9SRUZFUkVOQ0VfVE9fQ09OU1RfLgor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgordm9pZCBUZXN0R1Rlc3RSZWZl
cmVuY2VUb0NvbnN0KCkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxUMSwgR1RFU1RfUkVG
RVJFTkNFX1RPX0NPTlNUXyhUMik+KCk7Cit9CisKK1RFU1QoR1Rlc3RSZWZlcmVuY2VUb0NvbnN0
VGVzdCwgV29ya3MpIHsKKyAgVGVzdEdUZXN0UmVmZXJlbmNlVG9Db25zdDxjb25zdCBjaGFyJiwg
Y2hhcj4oKTsKKyAgVGVzdEdUZXN0UmVmZXJlbmNlVG9Db25zdDxjb25zdCBpbnQmLCBjb25zdCBp
bnQ+KCk7CisgIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29uc3Q8Y29uc3QgZG91YmxlJiwgZG91Ymxl
PigpOworICBUZXN0R1Rlc3RSZWZlcmVuY2VUb0NvbnN0PGNvbnN0IHN0ZDo6c3RyaW5nJiwgY29u
c3Qgc3RkOjpzdHJpbmcmPigpOworfQorCisvLyBUZXN0cyB0aGF0IEltcGxpY2l0bHlDb252ZXJ0
aWJsZTxUMSwgVDI+Ojp2YWx1ZSBpcyBhIGNvbXBpbGUtdGltZSBjb25zdGFudC4KK1RFU1QoSW1w
bGljaXRseUNvbnZlcnRpYmxlVGVzdCwgVmFsdWVJc0NvbXBpbGVUaW1lQ29uc3RhbnQpIHsKKyAg
R1RFU1RfQ09NUElMRV9BU1NFUlRfKChJbXBsaWNpdGx5Q29udmVydGlibGU8aW50LCBpbnQ+Ojp2
YWx1ZSksIGNvbnN0X3RydWUpOworICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oKCFJbXBsaWNpdGx5
Q29udmVydGlibGU8dm9pZCosIGludCo+Ojp2YWx1ZSksCisgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdF9mYWxzZSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgSW1wbGljaXRseUNvbnZlcnRpYmxl
PFQxLCBUMj46OnZhbHVlIGlzIHRydWUgd2hlbiBUMSBjYW4KKy8vIGJlIGltcGxpY2l0bHkgY29u
dmVydGVkIHRvIFQyLgorVEVTVChJbXBsaWNpdGx5Q29udmVydGlibGVUZXN0LCBWYWx1ZUlzVHJ1
ZVdoZW5Db252ZXJ0aWJsZSkgeworICBFWFBFQ1RfVFJVRSgoSW1wbGljaXRseUNvbnZlcnRpYmxl
PGludCwgZG91YmxlPjo6dmFsdWUpKTsKKyAgRVhQRUNUX1RSVUUoKEltcGxpY2l0bHlDb252ZXJ0
aWJsZTxkb3VibGUsIGludD46OnZhbHVlKSk7CisgIEVYUEVDVF9UUlVFKChJbXBsaWNpdGx5Q29u
dmVydGlibGU8aW50Kiwgdm9pZCo+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoSW1wbGljaXRs
eUNvbnZlcnRpYmxlPGludCosIGNvbnN0IGludCo+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgo
SW1wbGljaXRseUNvbnZlcnRpYmxlPENvbnZlcnNpb25IZWxwZXJEZXJpdmVkJiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb252ZXJzaW9uSGVscGVyQmFzZSY+
Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPGNvbnN0IENv
bnZlcnNpb25IZWxwZXJCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENvbnZlcnNpb25IZWxwZXJCYXNlPjo6dmFsdWUpKTsKK30KKworLy8gVGVzdHMgdGhhdCBJbXBs
aWNpdGx5Q29udmVydGlibGU8VDEsIFQyPjo6dmFsdWUgaXMgZmFsc2Ugd2hlbiBUMQorLy8gY2Fu
bm90IGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIFQyLgorVEVTVChJbXBsaWNpdGx5Q29udmVy
dGlibGVUZXN0LCBWYWx1ZUlzRmFsc2VXaGVuTm90Q29udmVydGlibGUpIHsKKyAgRVhQRUNUX0ZB
TFNFKChJbXBsaWNpdGx5Q29udmVydGlibGU8ZG91YmxlLCBpbnQqPjo6dmFsdWUpKTsKKyAgRVhQ
RUNUX0ZBTFNFKChJbXBsaWNpdGx5Q29udmVydGlibGU8dm9pZCosIGludCo+Ojp2YWx1ZSkpOwor
ICBFWFBFQ1RfRkFMU0UoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxjb25zdCBpbnQqLCBpbnQqPjo6
dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKChJbXBsaWNpdGx5Q29udmVydGlibGU8Q29udmVyc2lv
bkhlbHBlckJhc2UmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252
ZXJzaW9uSGVscGVyRGVyaXZlZCY+Ojp2YWx1ZSkpOworfQorCisvLyBUZXN0cyBJc0NvbnRhaW5l
clRlc3QuCisKK2NsYXNzIE5vbkNvbnRhaW5lciB7fTsKKworVEVTVChJc0NvbnRhaW5lclRlc3RU
ZXN0LCBXb3Jrc0Zvck5vbkNvbnRhaW5lcikgeworICBFWFBFQ1RfRVEoc2l6ZW9mKElzTm90Q29u
dGFpbmVyKSwgc2l6ZW9mKElzQ29udGFpbmVyVGVzdDxpbnQ+KDApKSk7CisgIEVYUEVDVF9FUShz
aXplb2YoSXNOb3RDb250YWluZXIpLCBzaXplb2YoSXNDb250YWluZXJUZXN0PGNoYXJbNV0+KDAp
KSk7CisgIEVYUEVDVF9FUShzaXplb2YoSXNOb3RDb250YWluZXIpLCBzaXplb2YoSXNDb250YWlu
ZXJUZXN0PE5vbkNvbnRhaW5lcj4oMCkpKTsKK30KKworVEVTVChJc0NvbnRhaW5lclRlc3RUZXN0
LCBXb3Jrc0ZvckNvbnRhaW5lcikgeworICBFWFBFQ1RfRVEoc2l6ZW9mKElzQ29udGFpbmVyKSwK
KyAgICAgICAgICAgIHNpemVvZihJc0NvbnRhaW5lclRlc3Q8c3RkOjp2ZWN0b3I8Ym9vbD4gPigw
KSkpOworICBFWFBFQ1RfRVEoc2l6ZW9mKElzQ29udGFpbmVyKSwKKyAgICAgICAgICAgIHNpemVv
ZihJc0NvbnRhaW5lclRlc3Q8c3RkOjptYXA8aW50LCBkb3VibGU+ID4oMCkpKTsKK30KKworI2lm
IEdURVNUX0xBTkdfQ1hYMTEKK3N0cnVjdCBDb25zdE9ubHlDb250YWluZXJXaXRoUG9pbnRlckl0
ZXJhdG9yIHsKKyAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBpbnQqOworICBjb25zdF9pdGVyYXRv
ciBiZWdpbigpIGNvbnN0OworICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdDsKK307CisKK3N0
cnVjdCBDb25zdE9ubHlDb250YWluZXJXaXRoQ2xhc3NJdGVyYXRvciB7CisgIHN0cnVjdCBjb25z
dF9pdGVyYXRvciB7CisgICAgY29uc3QgaW50JiBvcGVyYXRvciooKSBjb25zdDsKKyAgICBjb25z
dF9pdGVyYXRvciYgb3BlcmF0b3IrKygvKiBwcmUtaW5jcmVtZW50ICovKTsKKyAgfTsKKyAgY29u
c3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKKyAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7
Cit9OworCitURVNUKElzQ29udGFpbmVyVGVzdFRlc3QsIENvbnN0T25seUNvbnRhaW5lcikgewor
ICBFWFBFQ1RfRVEoc2l6ZW9mKElzQ29udGFpbmVyKSwKKyAgICAgICAgICAgIHNpemVvZihJc0Nv
bnRhaW5lclRlc3Q8Q29uc3RPbmx5Q29udGFpbmVyV2l0aFBvaW50ZXJJdGVyYXRvcj4oMCkpKTsK
KyAgRVhQRUNUX0VRKHNpemVvZihJc0NvbnRhaW5lciksCisgICAgICAgICAgICBzaXplb2YoSXND
b250YWluZXJUZXN0PENvbnN0T25seUNvbnRhaW5lcldpdGhDbGFzc0l0ZXJhdG9yPigwKSkpOwor
fQorI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisKKy8vIFRlc3RzIElzSGFzaFRhYmxlLgor
c3RydWN0IEFIYXNoVGFibGUgeworICB0eXBlZGVmIHZvaWQgaGFzaGVyOworfTsKK3N0cnVjdCBO
b3RSZWFsbHlBSGFzaFRhYmxlIHsKKyAgdHlwZWRlZiB2b2lkIGhhc2hlcjsKKyAgdHlwZWRlZiB2
b2lkIHJldmVyc2VfaXRlcmF0b3I7Cit9OworVEVTVChJc0hhc2hUYWJsZSwgQmFzaWMpIHsKKyAg
RVhQRUNUX1RSVUUodGVzdGluZzo6aW50ZXJuYWw6OklzSGFzaFRhYmxlPEFIYXNoVGFibGU+Ojp2
YWx1ZSk7CisgIEVYUEVDVF9GQUxTRSh0ZXN0aW5nOjppbnRlcm5hbDo6SXNIYXNoVGFibGU8Tm90
UmVhbGx5QUhhc2hUYWJsZT46OnZhbHVlKTsKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisgIEVYUEVD
VF9GQUxTRSh0ZXN0aW5nOjppbnRlcm5hbDo6SXNIYXNoVGFibGU8c3RkOjp2ZWN0b3I8aW50Pj46
OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUodGVzdGluZzo6aW50ZXJuYWw6OklzSGFzaFRhYmxlPHN0
ZDo6dW5vcmRlcmVkX3NldDxpbnQ+Pjo6dmFsdWUpOworI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NY
WDExCisjaWYgR1RFU1RfSEFTX0hBU0hfU0VUXworICBFWFBFQ1RfVFJVRSh0ZXN0aW5nOjppbnRl
cm5hbDo6SXNIYXNoVGFibGU8X19nbnVfY3h4OjpoYXNoX3NldDxpbnQ+Pjo6dmFsdWUpOworI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfSEFTSF9TRVRfCit9CisKKy8vIFRlc3RzIEFycmF5RXEoKS4KKwor
VEVTVChBcnJheUVxVGVzdCwgV29ya3NGb3JEZWdlbmVyYXRlZEFycmF5cykgeworICBFWFBFQ1Rf
VFJVRShBcnJheUVxKDUsIDVMKSk7CisgIEVYUEVDVF9GQUxTRShBcnJheUVxKCdhJywgMCkpOwor
fQorCitURVNUKEFycmF5RXFUZXN0LCBXb3Jrc0Zvck9uZURpbWVuc2lvbmFsQXJyYXlzKSB7Cisg
IC8vIE5vdGUgdGhhdCBhIGFuZCBiIGFyZSBkaXN0aW5jdCBidXQgY29tcGF0aWJsZSB0eXBlcy4K
KyAgY29uc3QgaW50IGFbXSA9IHsgMCwgMSB9OworICBsb25nIGJbXSA9IHsgMCwgMSB9OworICBF
WFBFQ1RfVFJVRShBcnJheUVxKGEsIGIpKTsKKyAgRVhQRUNUX1RSVUUoQXJyYXlFcShhLCAyLCBi
KSk7CisKKyAgYlswXSA9IDI7CisgIEVYUEVDVF9GQUxTRShBcnJheUVxKGEsIGIpKTsKKyAgRVhQ
RUNUX0ZBTFNFKEFycmF5RXEoYSwgMSwgYikpOworfQorCitURVNUKEFycmF5RXFUZXN0LCBXb3Jr
c0ZvclR3b0RpbWVuc2lvbmFsQXJyYXlzKSB7CisgIGNvbnN0IGNoYXIgYVtdWzNdID0geyAiaGki
LCAibG8iIH07CisgIGNvbnN0IGNoYXIgYltdWzNdID0geyAiaGkiLCAibG8iIH07CisgIGNvbnN0
IGNoYXIgY1tdWzNdID0geyAiaGkiLCAibGkiIH07CisKKyAgRVhQRUNUX1RSVUUoQXJyYXlFcShh
LCBiKSk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgMiwgYikpOworCisgIEVYUEVDVF9GQUxT
RShBcnJheUVxKGEsIGMpKTsKKyAgRVhQRUNUX0ZBTFNFKEFycmF5RXEoYSwgMiwgYykpOworfQor
CisvLyBUZXN0cyBBcnJheUF3YXJlRmluZCgpLgorCitURVNUKEFycmF5QXdhcmVGaW5kVGVzdCwg
V29ya3NGb3JPbmVEaW1lbnNpb25hbEFycmF5KSB7CisgIGNvbnN0IGNoYXIgYVtdID0gImhlbGxv
IjsKKyAgRVhQRUNUX0VRKGEgKyA0LCBBcnJheUF3YXJlRmluZChhLCBhICsgNSwgJ28nKSk7Cisg
IEVYUEVDVF9FUShhICsgNSwgQXJyYXlBd2FyZUZpbmQoYSwgYSArIDUsICd4JykpOworfQorCitU
RVNUKEFycmF5QXdhcmVGaW5kVGVzdCwgV29ya3NGb3JUd29EaW1lbnNpb25hbEFycmF5KSB7Cisg
IGludCBhW11bMl0gPSB7IHsgMCwgMSB9LCB7IDIsIDMgfSwgeyA0LCA1IH0gfTsKKyAgY29uc3Qg
aW50IGJbMl0gPSB7IDIsIDMgfTsKKyAgRVhQRUNUX0VRKGEgKyAxLCBBcnJheUF3YXJlRmluZChh
LCBhICsgMywgYikpOworCisgIGNvbnN0IGludCBjWzJdID0geyA2LCA3IH07CisgIEVYUEVDVF9F
UShhICsgMywgQXJyYXlBd2FyZUZpbmQoYSwgYSArIDMsIGMpKTsKK30KKworLy8gVGVzdHMgQ29w
eUFycmF5KCkuCisKK1RFU1QoQ29weUFycmF5VGVzdCwgV29ya3NGb3JEZWdlbmVyYXRlZEFycmF5
cykgeworICBpbnQgbiA9IDA7CisgIENvcHlBcnJheSgnYScsICZuKTsKKyAgRVhQRUNUX0VRKCdh
Jywgbik7Cit9CisKK1RFU1QoQ29weUFycmF5VGVzdCwgV29ya3NGb3JPbmVEaW1lbnNpb25hbEFy
cmF5cykgeworICBjb25zdCBjaGFyIGFbM10gPSAiaGkiOworICBpbnQgYlszXTsKKyNpZm5kZWYg
X19CT1JMQU5EQ19fICAvLyBDKytCdWlsZGVyIGNhbm5vdCBjb21waWxlIHNvbWUgYXJyYXkgc2l6
ZSBkZWR1Y3Rpb25zLgorICBDb3B5QXJyYXkoYSwgJmIpOworICBFWFBFQ1RfVFJVRShBcnJheUVx
KGEsIGIpKTsKKyNlbmRpZgorCisgIGludCBjWzNdOworICBDb3B5QXJyYXkoYSwgMywgYyk7Cisg
IEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYykpOworfQorCitURVNUKENvcHlBcnJheVRlc3QsIFdv
cmtzRm9yVHdvRGltZW5zaW9uYWxBcnJheXMpIHsKKyAgY29uc3QgaW50IGFbMl1bM10gPSB7IHsg
MCwgMSwgMiB9LCB7IDMsIDQsIDUgfSB9OworICBpbnQgYlsyXVszXTsKKyNpZm5kZWYgX19CT1JM
QU5EQ19fICAvLyBDKytCdWlsZGVyIGNhbm5vdCBjb21waWxlIHNvbWUgYXJyYXkgc2l6ZSBkZWR1
Y3Rpb25zLgorICBDb3B5QXJyYXkoYSwgJmIpOworICBFWFBFQ1RfVFJVRShBcnJheUVxKGEsIGIp
KTsKKyNlbmRpZgorCisgIGludCBjWzJdWzNdOworICBDb3B5QXJyYXkoYSwgMiwgYyk7CisgIEVY
UEVDVF9UUlVFKEFycmF5RXEoYSwgYykpOworfQorCisvLyBUZXN0cyBOYXRpdmVBcnJheS4KKwor
VEVTVChOYXRpdmVBcnJheVRlc3QsIENvbnN0cnVjdG9yRnJvbUFycmF5V29ya3MpIHsKKyAgY29u
c3QgaW50IGFbM10gPSB7IDAsIDEsIDIgfTsKKyAgTmF0aXZlQXJyYXk8aW50PiBuYShhLCAzLCBS
ZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOworICBFWFBFQ1RfRVEoM1UsIG5hLnNpemUoKSk7
CisgIEVYUEVDVF9FUShhLCBuYS5iZWdpbigpKTsKK30KKworVEVTVChOYXRpdmVBcnJheVRlc3Qs
IENyZWF0ZXNBbmREZWxldGVzQ29weU9mQXJyYXlXaGVuQXNrZWRUbykgeworICB0eXBlZGVmIGlu
dCBBcnJheVsyXTsKKyAgQXJyYXkqIGEgPSBuZXcgQXJyYXlbMV07CisgICgqYSlbMF0gPSAwOwor
ICAoKmEpWzFdID0gMTsKKyAgTmF0aXZlQXJyYXk8aW50PiBuYSgqYSwgMiwgUmVsYXRpb25Ub1Nv
dXJjZUNvcHkoKSk7CisgIEVYUEVDVF9ORSgqYSwgbmEuYmVnaW4oKSk7CisgIGRlbGV0ZVtdIGE7
CisgIEVYUEVDVF9FUSgwLCBuYS5iZWdpbigpWzBdKTsKKyAgRVhQRUNUX0VRKDEsIG5hLmJlZ2lu
KClbMV0pOworCisgIC8vIFdlIHJlbHkgb24gdGhlIGhlYXAgY2hlY2tlciB0byB2ZXJpZnkgdGhh
dCBuYSBkZWxldGVzIHRoZSBjb3B5IG9mCisgIC8vIGFycmF5LgorfQorCitURVNUKE5hdGl2ZUFy
cmF5VGVzdCwgVHlwZU1lbWJlcnNBcmVDb3JyZWN0KSB7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxj
aGFyLCBOYXRpdmVBcnJheTxjaGFyPjo6dmFsdWVfdHlwZT4oKTsKKyAgU3RhdGljQXNzZXJ0VHlw
ZUVxPGludFsyXSwgTmF0aXZlQXJyYXk8aW50WzJdPjo6dmFsdWVfdHlwZT4oKTsKKworICBTdGF0
aWNBc3NlcnRUeXBlRXE8Y29uc3QgY2hhciosIE5hdGl2ZUFycmF5PGNoYXI+Ojpjb25zdF9pdGVy
YXRvcj4oKTsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGJvb2woKilbMl0sIE5hdGl2ZUFy
cmF5PGJvb2xbMl0+Ojpjb25zdF9pdGVyYXRvcj4oKTsKK30KKworVEVTVChOYXRpdmVBcnJheVRl
c3QsIE1ldGhvZHNXb3JrKSB7CisgIGNvbnN0IGludCBhWzNdID0geyAwLCAxLCAyIH07CisgIE5h
dGl2ZUFycmF5PGludD4gbmEoYSwgMywgUmVsYXRpb25Ub1NvdXJjZUNvcHkoKSk7CisgIEFTU0VS
VF9FUSgzVSwgbmEuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKDMsIG5hLmVuZCgpIC0gbmEuYmVnaW4o
KSk7CisKKyAgTmF0aXZlQXJyYXk8aW50Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBuYS5iZWdpbigp
OworICBFWFBFQ1RfRVEoMCwgKml0KTsKKyAgKytpdDsKKyAgRVhQRUNUX0VRKDEsICppdCk7Cisg
IGl0Kys7CisgIEVYUEVDVF9FUSgyLCAqaXQpOworICArK2l0OworICBFWFBFQ1RfRVEobmEuZW5k
KCksIGl0KTsKKworICBFWFBFQ1RfVFJVRShuYSA9PSBuYSk7CisKKyAgTmF0aXZlQXJyYXk8aW50
PiBuYTIoYSwgMywgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgpKTsKKyAgRVhQRUNUX1RSVUUo
bmEgPT0gbmEyKTsKKworICBjb25zdCBpbnQgYjFbM10gPSB7IDAsIDEsIDEgfTsKKyAgY29uc3Qg
aW50IGIyWzRdID0geyAwLCAxLCAyLCAzIH07CisgIEVYUEVDVF9GQUxTRShuYSA9PSBOYXRpdmVB
cnJheTxpbnQ+KGIxLCAzLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpKTsKKyAgRVhQRUNU
X0ZBTFNFKG5hID09IE5hdGl2ZUFycmF5PGludD4oYjIsIDQsIFJlbGF0aW9uVG9Tb3VyY2VDb3B5
KCkpKTsKK30KKworVEVTVChOYXRpdmVBcnJheVRlc3QsIFdvcmtzRm9yVHdvRGltZW5zaW9uYWxB
cnJheSkgeworICBjb25zdCBjaGFyIGFbMl1bM10gPSB7ICJoaSIsICJsbyIgfTsKKyAgTmF0aXZl
QXJyYXk8Y2hhclszXT4gbmEoYSwgMiwgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgpKTsKKyAg
QVNTRVJUX0VRKDJVLCBuYS5zaXplKCkpOworICBFWFBFQ1RfRVEoYSwgbmEuYmVnaW4oKSk7Cit9
CisKKy8vIFRlc3RzIFNraXBQcmVmaXgoKS4KKworVEVTVChTa2lwUHJlZml4VGVzdCwgU2tpcHNX
aGVuUHJlZml4TWF0Y2hlcykgeworICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAiaGVsbG8iOwor
CisgIGNvbnN0IGNoYXIqIHAgPSBzdHI7CisgIEVYUEVDVF9UUlVFKFNraXBQcmVmaXgoIiIsICZw
KSk7CisgIEVYUEVDVF9FUShzdHIsIHApOworCisgIHAgPSBzdHI7CisgIEVYUEVDVF9UUlVFKFNr
aXBQcmVmaXgoImhlbGwiLCAmcCkpOworICBFWFBFQ1RfRVEoc3RyICsgNCwgcCk7Cit9CisKK1RF
U1QoU2tpcFByZWZpeFRlc3QsIERvZXNOb3RTa2lwV2hlblByZWZpeERvZXNOb3RNYXRjaCkgewor
ICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAid29ybGQiOworCisgIGNvbnN0IGNoYXIqIHAgPSBz
dHI7CisgIEVYUEVDVF9GQUxTRShTa2lwUHJlZml4KCJXIiwgJnApKTsKKyAgRVhQRUNUX0VRKHN0
ciwgcCk7CisKKyAgcCA9IHN0cjsKKyAgRVhQRUNUX0ZBTFNFKFNraXBQcmVmaXgoIndvcmxkISIs
ICZwKSk7CisgIEVYUEVDVF9FUShzdHIsIHApOworfQorCisvLyBUZXN0cyBhZF9ob2NfdGVzdF9y
ZXN1bHQoKS4KKworY2xhc3MgQWRIb2NUZXN0UmVzdWx0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7CisgICAg
RkFJTCgpIDw8ICJBIGZhaWx1cmUgaGFwcGVuZWQgaW5zaWRlIFNldFVwVGVzdENhc2UoKS4iOwor
ICB9Cit9OworCitURVNUX0YoQWRIb2NUZXN0UmVzdWx0VGVzdCwgQWRIb2NUZXN0UmVzdWx0Rm9y
VGVzdENhc2VTaG93c0ZhaWx1cmUpIHsKKyAgY29uc3QgdGVzdGluZzo6VGVzdFJlc3VsdCYgdGVz
dF9yZXN1bHQgPSB0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmN1cnJlbnRfdGVzdF9jYXNlKCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5hZF9ob2Nf
dGVzdF9yZXN1bHQoKTsKKyAgRVhQRUNUX1RSVUUodGVzdF9yZXN1bHQuRmFpbGVkKCkpOworfQor
CitURVNUX0YoQWRIb2NUZXN0UmVzdWx0VGVzdCwgQWRIb2NUZXN0UmVzdWx0VGVzdEZvclVuaXRU
ZXN0RG9lc05vdFNob3dGYWlsdXJlKSB7CisgIGNvbnN0IHRlc3Rpbmc6OlRlc3RSZXN1bHQmIHRl
c3RfcmVzdWx0ID0KKyAgICAgIHRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5hZF9o
b2NfdGVzdF9yZXN1bHQoKTsKKyAgRVhQRUNUX0ZBTFNFKHRlc3RfcmVzdWx0LkZhaWxlZCgpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291
dGZpbGUxX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxf
b3V0ZmlsZTFfdGVzdF8uY2MKaW5kZXggNjY0YmFhZDJhYjg3M2JhMzg4MTkzYTY1ZDJiNzlmZDgz
ZGIyZTc3NS4uYTM4ZWJhYzgzOWY3YjRmY2Y3MTA5MzUxYzRkM2ZlY2RlMjcxNWIwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTFfdGVz
dF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0Zmls
ZTFfdGVzdF8uY2MKQEAgLTI3LDEyICsyNywxMCBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogLy8KLS8vIEF1dGhvcjoga2VpdGgucmF5QGdtYWlsLmNvbSAoS2VpdGggUmF5KQot
Ly8KIC8vIGd0ZXN0X3htbF9vdXRmaWxlMV90ZXN0XyB3cml0ZXMgc29tZSB4bWwgdmlhIFRlc3RQ
cm9wZXJ0eSB1c2VkIGJ5CiAvLyBndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weQogCi0jaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiBjbGFzcyBQcm9w
ZXJ0eU9uZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMl90ZXN0Xy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUyX3Rlc3Rf
LmNjCmluZGV4IDM0MTFhM2QzOGI4NjEwNGM2YTYwYzYwZDExMzFjYjY2YWE1NGMxOTIuLmFmYWYx
NWE1ZGMzMjMxNWQ1MWFjN2EwYTU1NWY4M2NhYjQxZWY3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfLmNjCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfLmNjCkBA
IC0yNywxMiArMjcsMTAgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIC8vCi0v
LyBBdXRob3I6IGtlaXRoLnJheUBnbWFpbC5jb20gKEtlaXRoIFJheSkKLS8vCiAvLyBndGVzdF94
bWxfb3V0ZmlsZTJfdGVzdF8gd3JpdGVzIHNvbWUgeG1sIHZpYSBUZXN0UHJvcGVydHkgdXNlZCBi
eQogLy8gZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogY2xhc3MgUHJvcGVydHlUd28gOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7CiAgcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkKaW5kZXggMGZlOTQ3
ZjA4NGM4ZjU2ZjRhZGY1ZDBjOWZhMDI2Y2UyOTk3NWQyYy4uMmMwMzFmZjhkYmE1MTJjMmUwNGUy
NzA1MzRlMjlmY2ViZTg4NmNmOSAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5CkBAIC0zMSwzMSArMzEsMzkgQEAK
IAogIiIiVW5pdCB0ZXN0IGZvciB0aGUgZ3Rlc3RfeG1sX291dHB1dCBtb2R1bGUuIiIiCiAKLV9f
YXV0aG9yX18gPSAia2VpdGgucmF5QGdtYWlsLmNvbSAoS2VpdGggUmF5KSIKLQogaW1wb3J0IG9z
CiBmcm9tIHhtbC5kb20gaW1wb3J0IG1pbmlkb20sIE5vZGUKLQogaW1wb3J0IGd0ZXN0X3Rlc3Rf
dXRpbHMKIGltcG9ydCBndGVzdF94bWxfdGVzdF91dGlscwogCi0KIEdURVNUX09VVFBVVF9TVUJE
SVIgPSAieG1sX291dGZpbGVzIgogR1RFU1RfT1VUUFVUXzFfVEVTVCA9ICJndGVzdF94bWxfb3V0
ZmlsZTFfdGVzdF8iCiBHVEVTVF9PVVRQVVRfMl9URVNUID0gImd0ZXN0X3htbF9vdXRmaWxlMl90
ZXN0XyIKIAogRVhQRUNURURfWE1MXzEgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0i
MCIgZXJyb3JzPSIwIiB0aW1lPSIqIiBuYW1lPSJBbGxUZXN0cyI+Cis8dGVzdHN1aXRlcyB0ZXN0
cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiIHRpbWVz
dGFtcD0iKiIgbmFtZT0iQWxsVGVzdHMiPgogICA8dGVzdHN1aXRlIG5hbWU9IlByb3BlcnR5T25l
IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9Iioi
PgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJUZXN0U29tZVByb3BlcnRpZXMiIHN0YXR1cz0icnVuIiB0
aW1lPSIqIiBjbGFzc25hbWU9IlByb3BlcnR5T25lIiBTZXRVcFByb3A9IjEiIFRlc3RTb21lUHJv
cGVydHk9IjEiIFRlYXJEb3duUHJvcD0iMSIgLz4KKyAgICA8dGVzdGNhc2UgbmFtZT0iVGVzdFNv
bWVQcm9wZXJ0aWVzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eU9u
ZSI+CisgICAgICA8cHJvcGVydGllcz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9IlNldFVwUHJv
cCIgdmFsdWU9IjEiLz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9IlRlc3RTb21lUHJvcGVydHki
IHZhbHVlPSIxIi8+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJUZWFyRG93blByb3AiIHZhbHVl
PSIxIi8+CisgICAgICA8L3Byb3BlcnRpZXM+CisgICAgPC90ZXN0Y2FzZT4KICAgPC90ZXN0c3Vp
dGU+CiA8L3Rlc3RzdWl0ZXM+CiAiIiIKIAogRVhQRUNURURfWE1MXzIgPSAiIiI8P3htbCB2ZXJz
aW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMgdGVzdHM9IjEiIGZhaWx1
cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiBuYW1lPSJBbGxUZXN0cyI+
Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9
IjAiIHRpbWU9IioiIHRpbWVzdGFtcD0iKiIgbmFtZT0iQWxsVGVzdHMiPgogICA8dGVzdHN1aXRl
IG5hbWU9IlByb3BlcnR5VHdvIiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBl
cnJvcnM9IjAiIHRpbWU9IioiPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJUZXN0U29tZVByb3BlcnRp
ZXMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlByb3BlcnR5VHdvIiBTZXRVcFBy
b3A9IjIiIFRlc3RTb21lUHJvcGVydHk9IjIiIFRlYXJEb3duUHJvcD0iMiIgLz4KKyAgICA8dGVz
dGNhc2UgbmFtZT0iVGVzdFNvbWVQcm9wZXJ0aWVzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xh
c3NuYW1lPSJQcm9wZXJ0eVR3byI+CisgICAgICA8cHJvcGVydGllcz4KKyAgICAgICAgPHByb3Bl
cnR5IG5hbWU9IlNldFVwUHJvcCIgdmFsdWU9IjIiLz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9
IlRlc3RTb21lUHJvcGVydHkiIHZhbHVlPSIyIi8+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJU
ZWFyRG93blByb3AiIHZhbHVlPSIyIi8+CisgICAgICA8L3Byb3BlcnRpZXM+CisgICAgPC90ZXN0
Y2FzZT4KICAgPC90ZXN0c3VpdGU+CiA8L3Rlc3RzdWl0ZXM+CiAiIiIKQEAgLTEwMywxMSArMTEx
LDExIEBAIGNsYXNzIEdUZXN0WE1MT3V0RmlsZXNUZXN0KGd0ZXN0X3htbF90ZXN0X3V0aWxzLkdU
ZXN0WE1MVGVzdENhc2UpOgogICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKICAgICBzZWxmLmFz
c2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkKIAotICAgICMgVE9ETyh3YW5AZ29vZ2xlLmNvbSk6
IGxpYnRvb2wgY2F1c2VzIHRoZSBidWlsdCB0ZXN0IGJpbmFyeSB0byBiZQorICAgICMgRklYTUU6
IGxpYnRvb2wgY2F1c2VzIHRoZSBidWlsdCB0ZXN0IGJpbmFyeSB0byBiZQogICAgICMgICBuYW1l
ZCBsdC1ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8gaW5zdGVhZCBvZgotICAgICMgICBndGVzdF94
bWxfb3V0ZmlsZXNfdGVzdF8uICBUbyBhY2NvdW50IGZvciB0aGlzIHBvc3NpYmlsbGl0eSwgd2UK
KyAgICAjICAgZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3RfLiAgVG8gYWNjb3VudCBmb3IgdGhpcyBw
b3NzaWJpbGl0eSwgd2UKICAgICAjICAgYWxsb3cgYm90aCBuYW1lcyBpbiB0aGUgZm9sbG93aW5n
IGNvZGUuICBXZSBzaG91bGQgcmVtb3ZlIHRoaXMKLSAgICAjICAgaGFjayB3aGVuIENoYW5kbGVy
IENhcnJ1dGgncyBsaWJ0b29sIHJlcGxhY2VtZW50IHRvb2wgaXMgcmVhZHkuCisgICAgIyAgIHdo
ZW4gbGlidG9vbCByZXBsYWNlbWVudCB0b29sIGlzIHJlYWR5LgogICAgIG91dHB1dF9maWxlX25h
bWUxID0gdGVzdF9uYW1lICsgIi54bWwiCiAgICAgb3V0cHV0X2ZpbGUxID0gb3MucGF0aC5qb2lu
KHNlbGYub3V0cHV0X2Rpcl8sIG91dHB1dF9maWxlX25hbWUxKQogICAgIG91dHB1dF9maWxlX25h
bWUyID0gJ2x0LScgKyBvdXRwdXRfZmlsZV9uYW1lMQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0LnB5IGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0LnB5CmluZGV4IDZk
NDQ5MjljYWNhMDNlYzZmYWU0NDcxZWQxYmExZDQxNmE1ZGZjZTAuLmZhZWRkNGU2Y2U3MmRhYmVm
Nzg2YTMxMmVmNGFlY2E1YzVkMjliZmEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdC5weQorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3QucHkKQEAgLTMxLDYyICsz
MSw3NiBAQAogCiAiIiJVbml0IHRlc3QgZm9yIHRoZSBndGVzdF94bWxfb3V0cHV0IG1vZHVsZSIi
IgogCi1fX2F1dGhvcl9fID0gJ2VlZmFjbUBnbWFpbC5jb20gKFNlYW4gTWNhZmVlKScKLQoraW1w
b3J0IGRhdGV0aW1lCiBpbXBvcnQgZXJybm8KIGltcG9ydCBvcworaW1wb3J0IHJlCiBpbXBvcnQg
c3lzCiBmcm9tIHhtbC5kb20gaW1wb3J0IG1pbmlkb20sIE5vZGUKIAogaW1wb3J0IGd0ZXN0X3Rl
c3RfdXRpbHMKIGltcG9ydCBndGVzdF94bWxfdGVzdF91dGlscwogCitHVEVTVF9GSUxURVJfRkxB
RyA9ICctLWd0ZXN0X2ZpbHRlcicKK0dURVNUX0xJU1RfVEVTVFNfRkxBRyA9ICctLWd0ZXN0X2xp
c3RfdGVzdHMnCitHVEVTVF9PVVRQVVRfRkxBRyA9ICctLWd0ZXN0X291dHB1dCcKK0dURVNUX0RF
RkFVTFRfT1VUUFVUX0ZJTEUgPSAndGVzdF9kZXRhaWwueG1sJworR1RFU1RfUFJPR1JBTV9OQU1F
ID0gJ2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfJworCisjIFRoZSBmbGFnIGluZGljYXRpbmcg
c3RhY2t0cmFjZXMgYXJlIG5vdCBzdXBwb3J0ZWQKK05PX1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFH
ID0gJy0tbm9fc3RhY2t0cmFjZV9zdXBwb3J0JwogCi1HVEVTVF9PVVRQVVRfRkxBRyAgICAgICAg
ID0gIi0tZ3Rlc3Rfb3V0cHV0IgotR1RFU1RfREVGQVVMVF9PVVRQVVRfRklMRSA9ICJ0ZXN0X2Rl
dGFpbC54bWwiCi1HVEVTVF9QUk9HUkFNX05BTUUgPSAiZ3Rlc3RfeG1sX291dHB1dF91bml0dGVz
dF8iCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRlc3Qgc2hhcmRpbmcuCitUT1RB
TF9TSEFSRFNfRU5WX1ZBUiA9ICdHVEVTVF9UT1RBTF9TSEFSRFMnCitTSEFSRF9JTkRFWF9FTlZf
VkFSID0gJ0dURVNUX1NIQVJEX0lOREVYJworU0hBUkRfU1RBVFVTX0ZJTEVfRU5WX1ZBUiA9ICdH
VEVTVF9TSEFSRF9TVEFUVVNfRklMRScKIAotU1VQUE9SVFNfU1RBQ0tfVFJBQ0VTID0gRmFsc2UK
K1NVUFBPUlRTX1NUQUNLX1RSQUNFUyA9IE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFHIG5vdCBp
biBzeXMuYXJndgogCiBpZiBTVVBQT1JUU19TVEFDS19UUkFDRVM6Ci0gIFNUQUNLX1RSQUNFX1RF
TVBMQVRFID0gIlxuU3RhY2sgdHJhY2U6XG4qIgorICBTVEFDS19UUkFDRV9URU1QTEFURSA9ICdc
blN0YWNrIHRyYWNlOlxuKicKIGVsc2U6Ci0gIFNUQUNLX1RSQUNFX1RFTVBMQVRFID0gIiIKKyAg
U1RBQ0tfVFJBQ0VfVEVNUExBVEUgPSAnJworICAjIHVuaXR0ZXN0Lm1haW4oKSBjYW4ndCBoYW5k
bGUgdW5rbm93biBmbGFncworICBzeXMuYXJndi5yZW1vdmUoTk9fU1RBQ0tUUkFDRV9TVVBQT1JU
X0ZMQUcpCiAKIEVYUEVDVEVEX05PTl9FTVBUWV9YTUwgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMgdGVzdHM9IjE1IiBmYWlsdXJlcz0iNCIg
ZGlzYWJsZWQ9IjIiIGVycm9ycz0iMCIgdGltZT0iKiIgbmFtZT0iQWxsVGVzdHMiPgorPHRlc3Rz
dWl0ZXMgdGVzdHM9IjIzIiBmYWlsdXJlcz0iNCIgZGlzYWJsZWQ9IjIiIGVycm9ycz0iMCIgdGlt
ZT0iKiIgdGltZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0cyIgYWRfaG9jX3Byb3BlcnR5PSI0MiI+
CiAgIDx0ZXN0c3VpdGUgbmFtZT0iU3VjY2Vzc2Z1bFRlc3QiIHRlc3RzPSIxIiBmYWlsdXJlcz0i
MCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CiAgICAgPHRlc3RjYXNlIG5hbWU9
IlN1Y2NlZWRzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJTdWNjZXNzZnVsVGVz
dCIvPgogICA8L3Rlc3RzdWl0ZT4KICAgPHRlc3RzdWl0ZSBuYW1lPSJGYWlsZWRUZXN0IiB0ZXN0
cz0iMSIgZmFpbHVyZXM9IjEiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgogICAg
IDx0ZXN0Y2FzZSBuYW1lPSJGYWlscyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0i
RmFpbGVkVGVzdCI+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogMiYjeDBBO0V4
cGVjdGVkOiAxIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNj
OioKLVZhbHVlIG9mOiAyCi1FeHBlY3RlZDogMSUoc3RhY2spc11dPjwvZmFpbHVyZT4KKyAgICAg
IDxmYWlsdXJlIG1lc3NhZ2U9Imd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOiomI3gwQTtF
eHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6JiN4MEE7ICAxJiN4MEE7ICAyIiB0eXBl
PSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioKK0V4cGVjdGVkIGVx
dWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICAyJShzdGFjaylzXV0+PC9mYWlsdXJlPgog
ICAgIDwvdGVzdGNhc2U+CiAgIDwvdGVzdHN1aXRlPgogICA8dGVzdHN1aXRlIG5hbWU9Ik1peGVk
UmVzdWx0VGVzdCIgdGVzdHM9IjMiIGZhaWx1cmVzPSIxIiBkaXNhYmxlZD0iMSIgZXJyb3JzPSIw
IiB0aW1lPSIqIj4KICAgICA8dGVzdGNhc2UgbmFtZT0iU3VjY2VlZHMiIHN0YXR1cz0icnVuIiB0
aW1lPSIqIiBjbGFzc25hbWU9Ik1peGVkUmVzdWx0VGVzdCIvPgogICAgIDx0ZXN0Y2FzZSBuYW1l
PSJGYWlscyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTWl4ZWRSZXN1bHRUZXN0
Ij4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IlZhbHVlIG9mOiAyJiN4MEE7RXhwZWN0ZWQ6IDEi
IHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgotVmFsdWUg
b2Y6IDIKLUV4cGVjdGVkOiAxJShzdGFjaylzXV0+PC9mYWlsdXJlPgotICAgICAgPGZhaWx1cmUg
bWVzc2FnZT0iVmFsdWUgb2Y6IDMmI3gwQTtFeHBlY3RlZDogMiIgdHlwZT0iIj48IVtDREFUQVtn
dGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCi1WYWx1ZSBvZjogMwotRXhwZWN0ZWQ6IDIl
KHN0YWNrKXNdXT48L2ZhaWx1cmU+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJndGVzdF94bWxf
b3V0cHV0X3VuaXR0ZXN0Xy5jYzoqJiN4MEE7RXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFs
dWVzOiYjeDBBOyAgMSYjeDBBOyAgMiIgdHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0
X3VuaXR0ZXN0Xy5jYzoqCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEK
KyAgMiUoc3RhY2spc11dPjwvZmFpbHVyZT4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Imd0ZXN0
X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOiomI3gwQTtFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVz
ZSB2YWx1ZXM6JiN4MEE7ICAyJiN4MEE7ICAzIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9v
dXRwdXRfdW5pdHRlc3RfLmNjOioKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoK
KyAgMgorICAzJShzdGFjaylzXV0+PC9mYWlsdXJlPgogICAgIDwvdGVzdGNhc2U+CiAgICAgPHRl
c3RjYXNlIG5hbWU9IkRJU0FCTEVEX3Rlc3QiIHN0YXR1cz0ibm90cnVuIiB0aW1lPSIqIiBjbGFz
c25hbWU9Ik1peGVkUmVzdWx0VGVzdCIvPgogICA8L3Rlc3RzdWl0ZT4KICAgPHRlc3RzdWl0ZSBu
YW1lPSJYbWxRdW90aW5nVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIxIiBkaXNhYmxlZD0iMCIg
ZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAgICA8dGVzdGNhc2UgbmFtZT0iT3V0cHV0c0NEYXRhIiBz
dGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJYbWxRdW90aW5nVGVzdCI+Ci0gICAgICA8
ZmFpbHVyZSBtZXNzYWdlPSJGYWlsZWQmI3gwQTtYTUwgb3V0cHV0OiAmbHQ7P3htbCBlbmNvZGlu
Zz0mcXVvdDt1dGYtOCZxdW90OyZndDsmbHQ7dG9wJmd0OyZsdDshW0NEQVRBW2NkYXRhIHRleHRd
XSZndDsmbHQ7L3RvcCZndDsiIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0
dGVzdF8uY2M6KgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0
dGVzdF8uY2M6KiYjeDBBO0ZhaWxlZCYjeDBBO1hNTCBvdXRwdXQ6ICZsdDs/eG1sIGVuY29kaW5n
PSZxdW90O3V0Zi04JnF1b3Q7Jmd0OyZsdDt0b3AmZ3Q7Jmx0OyFbQ0RBVEFbY2RhdGEgdGV4dF1d
Jmd0OyZsdDsvdG9wJmd0OyIgdHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0
ZXN0Xy5jYzoqCiBGYWlsZWQKIFhNTCBvdXRwdXQ6IDw/eG1sIGVuY29kaW5nPSJ1dGYtOCI+PHRv
cD48IVtDREFUQVtjZGF0YSB0ZXh0XV0+XV0mZ3Q7PCFbQ0RBVEFbPC90b3A+JShzdGFjaylzXV0+
PC9mYWlsdXJlPgogICAgIDwvdGVzdGNhc2U+CiAgIDwvdGVzdHN1aXRlPgogICA8dGVzdHN1aXRl
IG5hbWU9IkludmFsaWRDaGFyYWN0ZXJzVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIxIiBkaXNh
YmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAgICA8dGVzdGNhc2UgbmFtZT0iSW52YWxp
ZENoYXJhY3RlcnNJbk1lc3NhZ2UiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Iklu
dmFsaWRDaGFyYWN0ZXJzVGVzdCI+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJGYWlsZWQmI3gw
QTtJbnZhbGlkIGNoYXJhY3RlcnMgaW4gYnJhY2tldHMgW10iIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rl
c3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iZ3Rl
c3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBBO0ZhaWxlZCYjeDBBO0ludmFsaWQgY2hh
cmFjdGVycyBpbiBicmFja2V0cyBbXSIgdHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0
X3VuaXR0ZXN0Xy5jYzoqCiBGYWlsZWQKIEludmFsaWQgY2hhcmFjdGVycyBpbiBicmFja2V0cyBb
XSUoc3RhY2spc11dPjwvZmFpbHVyZT4KICAgICA8L3Rlc3RjYXNlPgpAQCAtOTQsNDUgKzEwOCwx
NTIgQEAgSW52YWxpZCBjaGFyYWN0ZXJzIGluIGJyYWNrZXRzIFtdJShzdGFjaylzXV0+PC9mYWls
dXJlPgogICA8dGVzdHN1aXRlIG5hbWU9IkRpc2FibGVkVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVz
PSIwIiBkaXNhYmxlZD0iMSIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAgICA8dGVzdGNhc2UgbmFt
ZT0iRElTQUJMRURfdGVzdF9ub3RfcnVuIiBzdGF0dXM9Im5vdHJ1biIgdGltZT0iKiIgY2xhc3Nu
YW1lPSJEaXNhYmxlZFRlc3QiLz4KICAgPC90ZXN0c3VpdGU+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0i
UHJvcGVydHlSZWNvcmRpbmdUZXN0IiB0ZXN0cz0iNCIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIw
IiBlcnJvcnM9IjAiIHRpbWU9IioiPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJPbmVQcm9wZXJ0eSIg
c3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0IiBr
ZXlfMT0iMSIvPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJJbnRWYWx1ZWRQcm9wZXJ0eSIgc3RhdHVz
PSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0IiBrZXlfaW50
PSIxIi8+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IlRocmVlUHJvcGVydGllcyIgc3RhdHVzPSJydW4i
IHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0IiBrZXlfMT0iMSIga2V5
XzI9IjIiIGtleV8zPSIzIi8+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IlR3b1ZhbHVlc0Zvck9uZUtl
eVVzZXNMYXN0VmFsdWUiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlByb3BlcnR5
UmVjb3JkaW5nVGVzdCIga2V5XzE9IjIiLz4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJQcm9wZXJ0eVJl
Y29yZGluZ1Rlc3QiIHRlc3RzPSI0IiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0i
MCIgdGltZT0iKiIgU2V0VXBUZXN0Q2FzZT0ieWVzIiBUZWFyRG93blRlc3RDYXNlPSJheWUiPgor
ICAgIDx0ZXN0Y2FzZSBuYW1lPSJPbmVQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNs
YXNzbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0Ij4KKyAgICAgIDxwcm9wZXJ0aWVzPgorICAg
ICAgICA8cHJvcGVydHkgbmFtZT0ia2V5XzEiIHZhbHVlPSIxIi8+CisgICAgICA8L3Byb3BlcnRp
ZXM+CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8dGVzdGNhc2UgbmFtZT0iSW50VmFsdWVkUHJvcGVy
dHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlByb3BlcnR5UmVjb3JkaW5nVGVz
dCI+CisgICAgICA8cHJvcGVydGllcz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImtleV9pbnQi
IHZhbHVlPSIxIi8+CisgICAgICA8L3Byb3BlcnRpZXM+CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8
dGVzdGNhc2UgbmFtZT0iVGhyZWVQcm9wZXJ0aWVzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xh
c3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiPgorICAgICAgPHByb3BlcnRpZXM+CisgICAg
ICAgIDxwcm9wZXJ0eSBuYW1lPSJrZXlfMSIgdmFsdWU9IjEiLz4KKyAgICAgICAgPHByb3BlcnR5
IG5hbWU9ImtleV8yIiB2YWx1ZT0iMiIvPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ia2V5XzMi
IHZhbHVlPSIzIi8+CisgICAgICA8L3Byb3BlcnRpZXM+CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8
dGVzdGNhc2UgbmFtZT0iVHdvVmFsdWVzRm9yT25lS2V5VXNlc0xhc3RWYWx1ZSIgc3RhdHVzPSJy
dW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0Ij4KKyAgICAgIDxw
cm9wZXJ0aWVzPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ia2V5XzEiIHZhbHVlPSIyIi8+Cisg
ICAgICA8L3Byb3BlcnRpZXM+CisgICAgPC90ZXN0Y2FzZT4KICAgPC90ZXN0c3VpdGU+CiAgIDx0
ZXN0c3VpdGUgbmFtZT0iTm9GaXh0dXJlVGVzdCIgdGVzdHM9IjMiIGZhaWx1cmVzPSIwIiBkaXNh
YmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KLSAgICAgPHRlc3RjYXNlIG5hbWU9IlJlY29y
ZFByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJOb0ZpeHR1cmVUZXN0
IiBrZXk9IjEiLz4KLSAgICAgPHRlc3RjYXNlIG5hbWU9IkV4dGVybmFsVXRpbGl0eVRoYXRDYWxs
c1JlY29yZEludFZhbHVlZFByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1l
PSJOb0ZpeHR1cmVUZXN0IiBrZXlfZm9yX3V0aWxpdHlfaW50PSIxIi8+Ci0gICAgIDx0ZXN0Y2Fz
ZSBuYW1lPSJFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRTdHJpbmdWYWx1ZWRQcm9wZXJ0
eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTm9GaXh0dXJlVGVzdCIga2V5X2Zv
cl91dGlsaXR5X3N0cmluZz0iMSIvPgorICAgICA8dGVzdGNhc2UgbmFtZT0iUmVjb3JkUHJvcGVy
dHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ik5vRml4dHVyZVRlc3QiPgorICAg
ICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImtleSIgdmFsdWU9IjEi
Lz4KKyAgICAgICA8L3Byb3BlcnRpZXM+CisgICAgIDwvdGVzdGNhc2U+CisgICAgIDx0ZXN0Y2Fz
ZSBuYW1lPSJFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRJbnRWYWx1ZWRQcm9wZXJ0eSIg
c3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTm9GaXh0dXJlVGVzdCI+CisgICAgICAg
PHByb3BlcnRpZXM+CisgICAgICAgICA8cHJvcGVydHkgbmFtZT0ia2V5X2Zvcl91dGlsaXR5X2lu
dCIgdmFsdWU9IjEiLz4KKyAgICAgICA8L3Byb3BlcnRpZXM+CisgICAgIDwvdGVzdGNhc2U+Cisg
ICAgIDx0ZXN0Y2FzZSBuYW1lPSJFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRTdHJpbmdW
YWx1ZWRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTm9GaXh0dXJl
VGVzdCI+CisgICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgICA8cHJvcGVydHkgbmFtZT0ia2V5
X2Zvcl91dGlsaXR5X3N0cmluZyIgdmFsdWU9IjEiLz4KKyAgICAgICA8L3Byb3BlcnRpZXM+Cisg
ICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorICA8dGVzdHN1aXRlIG5hbWU9IlNpbmds
ZS9WYWx1ZVBhcmFtVGVzdCIgdGVzdHM9IjQiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJy
b3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iSGFzVmFsdWVQYXJhbUF0dHJp
YnV0ZS8wIiB2YWx1ZV9wYXJhbT0iMzMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9
IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIgLz4KKyAgICA8dGVzdGNhc2UgbmFtZT0iSGFzVmFsdWVQ
YXJhbUF0dHJpYnV0ZS8xIiB2YWx1ZV9wYXJhbT0iNDIiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBj
bGFzc25hbWU9IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIgLz4KKyAgICA8dGVzdGNhc2UgbmFtZT0i
QW5vdGhlclRlc3RUaGF0SGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8wIiB2YWx1ZV9wYXJhbT0iMzMi
IHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIg
Lz4KKyAgICA8dGVzdGNhc2UgbmFtZT0iQW5vdGhlclRlc3RUaGF0SGFzVmFsdWVQYXJhbUF0dHJp
YnV0ZS8xIiB2YWx1ZV9wYXJhbT0iNDIiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9
IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIgLz4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUg
bmFtZT0iVHlwZWRUZXN0LzAiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVy
cm9ycz0iMCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNlIG5hbWU9Ikhhc1R5cGVQYXJhbUF0dHJp
YnV0ZSIgdHlwZV9wYXJhbT0iKiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iVHlw
ZWRUZXN0LzAiIC8+CisgIDwvdGVzdHN1aXRlPgorICA8dGVzdHN1aXRlIG5hbWU9IlR5cGVkVGVz
dC8xIiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9
IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNUeXBlUGFyYW1BdHRyaWJ1dGUiIHR5cGVfcGFy
YW09IioiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlR5cGVkVGVzdC8xIiAvPgor
ICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJTaW5nbGUvVHlwZVBhcmFtZXRlcml6
ZWRUZXN0Q2FzZS8wIiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9
IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNUeXBlUGFyYW1BdHRyaWJ1dGUi
IHR5cGVfcGFyYW09IioiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlNpbmdsZS9U
eXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLzAiIC8+CisgIDwvdGVzdHN1aXRlPgorICA8dGVzdHN1
aXRlIG5hbWU9IlNpbmdsZS9UeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLzEiIHRlc3RzPSIxIiBm
YWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgPHRlc3Rj
YXNlIG5hbWU9Ikhhc1R5cGVQYXJhbUF0dHJpYnV0ZSIgdHlwZV9wYXJhbT0iKiIgc3RhdHVzPSJy
dW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2Uv
MSIgLz4KICAgPC90ZXN0c3VpdGU+CiA8L3Rlc3RzdWl0ZXM+IiIiICUgeydzdGFjayc6IFNUQUNL
X1RSQUNFX1RFTVBMQVRFfQogCitFWFBFQ1RFRF9GSUxURVJFRF9URVNUX1hNTCA9ICIiIjw/eG1s
IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMSIg
ZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiCisgICAgICAgICAg
ICB0aW1lc3RhbXA9IioiIG5hbWU9IkFsbFRlc3RzIiBhZF9ob2NfcHJvcGVydHk9IjQyIj4KKyAg
PHRlc3RzdWl0ZSBuYW1lPSJTdWNjZXNzZnVsVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBk
aXNhYmxlZD0iMCIKKyAgICAgICAgICAgICBlcnJvcnM9IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0
Y2FzZSBuYW1lPSJTdWNjZWVkcyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU3Vj
Y2Vzc2Z1bFRlc3QiLz4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rlc3RzdWl0ZXM+IiIiCisKK0VYUEVD
VEVEX1NIQVJERURfVEVTVF9YTUwgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJV
VEYtOCI/PgorPHRlc3RzdWl0ZXMgdGVzdHM9IjMiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIg
ZXJyb3JzPSIwIiB0aW1lPSIqIiB0aW1lc3RhbXA9IioiIG5hbWU9IkFsbFRlc3RzIiBhZF9ob2Nf
cHJvcGVydHk9IjQyIj4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJTdWNjZXNzZnVsVGVzdCIgdGVzdHM9
IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8
dGVzdGNhc2UgbmFtZT0iU3VjY2VlZHMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9
IlN1Y2Nlc3NmdWxUZXN0Ii8+CisgIDwvdGVzdHN1aXRlPgorICA8dGVzdHN1aXRlIG5hbWU9Ik5v
Rml4dHVyZVRlc3QiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0i
MCIgdGltZT0iKiI+CisgICAgIDx0ZXN0Y2FzZSBuYW1lPSJSZWNvcmRQcm9wZXJ0eSIgc3RhdHVz
PSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTm9GaXh0dXJlVGVzdCI+CisgICAgICAgPHByb3Bl
cnRpZXM+CisgICAgICAgICA8cHJvcGVydHkgbmFtZT0ia2V5IiB2YWx1ZT0iMSIvPgorICAgICAg
IDwvcHJvcGVydGllcz4KKyAgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0
c3VpdGUgbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAi
IGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJB
bm90aGVyVGVzdFRoYXRIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzEiIHZhbHVlX3BhcmFtPSI0MiIg
c3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiAv
PgorICA8L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1aXRlcz4iIiIKIAogRVhQRUNURURfRU1QVFlfWE1M
ID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx0ZXN0c3VpdGVz
IHRlc3RzPSIwIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIg
bmFtZT0iQWxsVGVzdHMiPgorPHRlc3RzdWl0ZXMgdGVzdHM9IjAiIGZhaWx1cmVzPSIwIiBkaXNh
YmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIgorICAgICAgICAgICAgdGltZXN0YW1wPSIqIiBu
YW1lPSJBbGxUZXN0cyI+CiA8L3Rlc3RzdWl0ZXM+IiIiCiAKK0dURVNUX1BST0dSQU1fUEFUSCA9
IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKEdURVNUX1BST0dSQU1fTkFN
RSkKKworU1VQUE9SVFNfVFlQRURfVEVTVFMgPSAnVHlwZWRUZXN0JyBpbiBndGVzdF90ZXN0X3V0
aWxzLlN1YnByb2Nlc3MoCisgICAgW0dURVNUX1BST0dSQU1fUEFUSCwgR1RFU1RfTElTVF9URVNU
U19GTEFHXSwgY2FwdHVyZV9zdGRlcnI9RmFsc2UpLm91dHB1dAorCiAKIGNsYXNzIEdUZXN0WE1M
T3V0cHV0VW5pdFRlc3QoZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMuR1Rlc3RYTUxUZXN0Q2FzZSk6CiAg
ICIiIgogICBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgWE1MIG91dHB1dCBmdW5jdGlvbmFs
aXR5LgogICAiIiIKIAotICBkZWYgdGVzdE5vbkVtcHR5WG1sT3V0cHV0KHNlbGYpOgotICAgICIi
IgotICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYSBub24tZW1wdHkgWE1M
IG91dHB1dCwgYW5kCi0gICAgdGVzdHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBleHBlY3RlZC4K
LSAgICAiIiIKLSAgICBzZWxmLl9UZXN0WG1sT3V0cHV0KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQ
RUNURURfTk9OX0VNUFRZX1hNTCwgMSkKKyAgIyBUaGlzIHRlc3QgY3VycmVudGx5IGJyZWFrcyBv
biBwbGF0Zm9ybXMgdGhhdCBkbyBub3Qgc3VwcG9ydCB0eXBlZCBhbmQKKyAgIyB0eXBlLXBhcmFt
ZXRlcml6ZWQgdGVzdHMsIHNvIHdlIGRvbid0IHJ1biBpdCB1bmRlciB0aGVtLgorICBpZiBTVVBQ
T1JUU19UWVBFRF9URVNUUzoKKyAgICBkZWYgdGVzdE5vbkVtcHR5WG1sT3V0cHV0KHNlbGYpOgor
ICAgICAgIiIiCisgICAgICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRoYXQgZ2VuZXJhdGVzIGEgbm9u
LWVtcHR5IFhNTCBvdXRwdXQsIGFuZAorICAgICAgdGVzdHMgdGhhdCB0aGUgWE1MIG91dHB1dCBp
cyBleHBlY3RlZC4KKyAgICAgICIiIgorICAgICAgc2VsZi5fVGVzdFhtbE91dHB1dChHVEVTVF9Q
Uk9HUkFNX05BTUUsIEVYUEVDVEVEX05PTl9FTVBUWV9YTUwsIDEpCiAKICAgZGVmIHRlc3RFbXB0
eVhtbE91dHB1dChzZWxmKToKLSAgICAiIiIKKyAgICAiIiJWZXJpZmllcyBYTUwgb3V0cHV0IGZv
ciBhIEdvb2dsZSBUZXN0IGJpbmFyeSB3aXRob3V0IGFjdHVhbCB0ZXN0cy4KKwogICAgIFJ1bnMg
YSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkgWE1MIG91dHB1dCwgYW5kCiAg
ICAgdGVzdHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBleHBlY3RlZC4KICAgICAiIiIKIAotICAg
IHNlbGYuX1Rlc3RYbWxPdXRwdXQoImd0ZXN0X25vX3Rlc3RfdW5pdHRlc3QiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgRVhQRUNURURfRU1QVFlfWE1MLCAwKQorICAgIHNlbGYuX1Rlc3RYbWxP
dXRwdXQoJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnLCBFWFBFQ1RFRF9FTVBUWV9YTUwsIDApCisK
KyAgZGVmIHRlc3RUaW1lc3RhbXBWYWx1ZShzZWxmKToKKyAgICAiIiJDaGVja3Mgd2hldGhlciB0
aGUgdGltZXN0YW1wIGF0dHJpYnV0ZSBpbiB0aGUgWE1MIG91dHB1dCBpcyB2YWxpZC4KKworICAg
IFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkgWE1MIG91dHB1dCwg
YW5kIGNoZWNrcyBpZgorICAgIHRoZSB0aW1lc3RhbXAgYXR0cmlidXRlIGluIHRoZSB0ZXN0c3Vp
dGVzIHRhZyBpcyB2YWxpZC4KKyAgICAiIiIKKyAgICBhY3R1YWwgPSBzZWxmLl9HZXRYbWxPdXRw
dXQoJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnLCBbXSwge30sIDApCisgICAgZGF0ZV90aW1lX3N0
ciA9IGFjdHVhbC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlTm9kZSgndGltZXN0YW1wJyku
dmFsdWUKKyAgICAjIGRhdGV0aW1lLnN0cnB0aW1lKCkgaXMgb25seSBhdmFpbGFibGUgaW4gUHl0
aG9uIDIuNSsgc28gd2UgaGF2ZSB0bworICAgICMgcGFyc2UgdGhlIGV4cGVjdGVkIGRhdGV0aW1l
IG1hbnVhbGx5LgorICAgIG1hdGNoID0gcmUubWF0Y2gocicoXGQrKS0oXGRcZCktKFxkXGQpVChc
ZFxkKTooXGRcZCk6KFxkXGQpJywgZGF0ZV90aW1lX3N0cikKKyAgICBzZWxmLmFzc2VydFRydWUo
CisgICAgICAgIHJlLm1hdGNoLAorICAgICAgICAnWE1MIGRhdGV0dGltZSBzdHJpbmcgJXMgaGFz
IGluY29ycmVjdCBmb3JtYXQnICUgZGF0ZV90aW1lX3N0cikKKyAgICBkYXRlX3RpbWVfZnJvbV94
bWwgPSBkYXRldGltZS5kYXRldGltZSgKKyAgICAgICAgeWVhcj1pbnQobWF0Y2guZ3JvdXAoMSkp
LCBtb250aD1pbnQobWF0Y2guZ3JvdXAoMikpLAorICAgICAgICBkYXk9aW50KG1hdGNoLmdyb3Vw
KDMpKSwgaG91cj1pbnQobWF0Y2guZ3JvdXAoNCkpLAorICAgICAgICBtaW51dGU9aW50KG1hdGNo
Lmdyb3VwKDUpKSwgc2Vjb25kPWludChtYXRjaC5ncm91cCg2KSkpCisKKyAgICB0aW1lX2RlbHRh
ID0gYWJzKGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpIC0gZGF0ZV90aW1lX2Zyb21feG1sKQorICAg
ICMgdGltZXN0YW1wIHZhbHVlIHNob3VsZCBiZSBuZWFyIHRoZSBjdXJyZW50IGxvY2FsIHRpbWUK
KyAgICBzZWxmLmFzc2VydFRydWUodGltZV9kZWx0YSA8IGRhdGV0aW1lLnRpbWVkZWx0YShzZWNv
bmRzPTYwMCksCisgICAgICAgICAgICAgICAgICAgICd0aW1lX2RlbHRhIGlzICVzJyAlIHRpbWVf
ZGVsdGEpCisgICAgYWN0dWFsLnVubGluaygpCiAKICAgZGVmIHRlc3REZWZhdWx0T3V0cHV0Rmls
ZShzZWxmKToKICAgICAiIiIKQEAgLTE0Miw3ICsyNjMsNyBAQCBjbGFzcyBHVGVzdFhNTE91dHB1
dFVuaXRUZXN0KGd0ZXN0X3htbF90ZXN0X3V0aWxzLkdUZXN0WE1MVGVzdENhc2UpOgogICAgIG91
dHB1dF9maWxlID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUp
CiAgICAgZ3Rlc3RfcHJvZ19wYXRoID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJs
ZVBhdGgoCi0gICAgICAgICJndGVzdF9ub190ZXN0X3VuaXR0ZXN0IikKKyAgICAgICAgJ2d0ZXN0
X25vX3Rlc3RfdW5pdHRlc3QnKQogICAgIHRyeToKICAgICAgIG9zLnJlbW92ZShvdXRwdXRfZmls
ZSkKICAgICBleGNlcHQgT1NFcnJvciwgZToKQEAgLTE1MCw3ICsyNzEsNyBAQCBjbGFzcyBHVGVz
dFhNTE91dHB1dFVuaXRUZXN0KGd0ZXN0X3htbF90ZXN0X3V0aWxzLkdUZXN0WE1MVGVzdENhc2Up
OgogICAgICAgICByYWlzZQogCiAgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygK
LSAgICAgICAgW2d0ZXN0X3Byb2dfcGF0aCwgIiVzPXhtbCIgJSBHVEVTVF9PVVRQVVRfRkxBR10s
CisgICAgICAgIFtndGVzdF9wcm9nX3BhdGgsICclcz14bWwnICUgR1RFU1RfT1VUUFVUX0ZMQUdd
LAogICAgICAgICB3b3JraW5nX2Rpcj1ndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSkKICAg
ICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCiAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwgcC5leGl0
X2NvZGUpCkBAIC0xNjMsNjAgKzI4NCw5OCBAQCBjbGFzcyBHVGVzdFhNTE91dHB1dFVuaXRUZXN0
KGd0ZXN0X3htbF90ZXN0X3V0aWxzLkdUZXN0WE1MVGVzdENhc2UpOgogICAgICIiIgogCiAgICAg
eG1sX3BhdGggPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfUFJPR1JBTV9OQU1FICsgIm91dC54bWwi
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1BST0dSQU1fTkFNRSArICdvdXQu
eG1sJykKICAgICBpZiBvcy5wYXRoLmlzZmlsZSh4bWxfcGF0aCk6CiAgICAgICBvcy5yZW1vdmUo
eG1sX3BhdGgpCiAKLSAgICBndGVzdF9wcm9nX3BhdGggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRl
c3RFeGVjdXRhYmxlUGF0aChHVEVTVF9QUk9HUkFNX05BTUUpCi0KLSAgICBjb21tYW5kID0gW2d0
ZXN0X3Byb2dfcGF0aCwKLSAgICAgICAgICAgICAgICIlcz14bWw6JXMiICUgKEdURVNUX09VVFBV
VF9GTEFHLCB4bWxfcGF0aCksCi0gICAgICAgICAgICAgICAiLS1zaHV0X2Rvd25feG1sIl0KKyAg
ICBjb21tYW5kID0gW0dURVNUX1BST0dSQU1fUEFUSCwKKyAgICAgICAgICAgICAgICclcz14bWw6
JXMnICUgKEdURVNUX09VVFBVVF9GTEFHLCB4bWxfcGF0aCksCisgICAgICAgICAgICAgICAnLS1z
aHV0X2Rvd25feG1sJ10KICAgICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1h
bmQpCiAgICAgaWYgcC50ZXJtaW5hdGVkX2J5X3NpZ25hbDoKLSAgICAgIHNlbGYuYXNzZXJ0XyhG
YWxzZSwKLSAgICAgICAgICAgICAgICAgICAiJXMgd2FzIGtpbGxlZCBieSBzaWduYWwgJWQiICUg
KGd0ZXN0X3Byb2dfbmFtZSwgcC5zaWduYWwpKQorICAgICAgIyBwLnNpZ25hbCBpcyBhdmFpbGFi
bGUgb25seSBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsIGlzIFRydWUuCisgICAgICBzZWxmLmFz
c2VydEZhbHNlKAorICAgICAgICAgIHAudGVybWluYXRlZF9ieV9zaWduYWwsCisgICAgICAgICAg
JyVzIHdhcyBraWxsZWQgYnkgc2lnbmFsICVkJyAlIChHVEVTVF9QUk9HUkFNX05BTUUsIHAuc2ln
bmFsKSkKICAgICBlbHNlOgogICAgICAgc2VsZi5hc3NlcnRfKHAuZXhpdGVkKQogICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoMSwgcC5leGl0X2NvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAi
JyVzJyBleGl0ZWQgd2l0aCBjb2RlICVzLCB3aGljaCBkb2Vzbid0IG1hdGNoICIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICJ0aGUgZXhwZWN0ZWQgZXhpdCBjb2RlICVzLiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICd0aGUgZXhwZWN0ZWQgZXhpdCBjb2RlICVzLicKICAgICAgICAgICAgICAg
ICAgICAgICAgICUgKGNvbW1hbmQsIHAuZXhpdF9jb2RlLCAxKSkKIAogICAgIHNlbGYuYXNzZXJ0
Xyhub3Qgb3MucGF0aC5pc2ZpbGUoeG1sX3BhdGgpKQogCisgIGRlZiB0ZXN0RmlsdGVyZWRUZXN0
WG1sT3V0cHV0KHNlbGYpOgorICAgICIiIlZlcmlmaWVzIFhNTCBvdXRwdXQgd2hlbiBhIGZpbHRl
ciBpcyBhcHBsaWVkLgogCi0gIGRlZiBfVGVzdFhtbE91dHB1dChzZWxmLCBndGVzdF9wcm9nX25h
bWUsIGV4cGVjdGVkX3htbCwgZXhwZWN0ZWRfZXhpdF9jb2RlKToKKyAgICBSdW5zIGEgdGVzdCBw
cm9ncmFtIHRoYXQgZXhlY3V0ZXMgb25seSBzb21lIHRlc3RzIGFuZCB2ZXJpZmllcyB0aGF0Cisg
ICAgbm9uLXNlbGVjdGVkIHRlc3RzIGRvIG5vdCBzaG93IHVwIGluIHRoZSBYTUwgb3V0cHV0Lgog
ICAgICIiIgotICAgIEFzc2VydHMgdGhhdCB0aGUgWE1MIGRvY3VtZW50IGdlbmVyYXRlZCBieSBy
dW5uaW5nIHRoZSBwcm9ncmFtCi0gICAgZ3Rlc3RfcHJvZ19uYW1lIG1hdGNoZXMgZXhwZWN0ZWRf
eG1sLCBhIHN0cmluZyBjb250YWluaW5nIGFub3RoZXIKLSAgICBYTUwgZG9jdW1lbnQuICBGdXJ0
aGVybW9yZSwgdGhlIHByb2dyYW0ncyBleGl0IGNvZGUgbXVzdCBiZQotICAgIGV4cGVjdGVkX2V4
aXRfY29kZS4KKworICAgIHNlbGYuX1Rlc3RYbWxPdXRwdXQoR1RFU1RfUFJPR1JBTV9OQU1FLCBF
WFBFQ1RFRF9GSUxURVJFRF9URVNUX1hNTCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4
dHJhX2FyZ3M9Wyclcz1TdWNjZXNzZnVsVGVzdC4qJyAlIEdURVNUX0ZJTFRFUl9GTEFHXSkKKwor
ICBkZWYgdGVzdFNoYXJkZWRUZXN0WG1sT3V0cHV0KHNlbGYpOgorICAgICIiIlZlcmlmaWVzIFhN
TCBvdXRwdXQgd2hlbiBydW4gdXNpbmcgbXVsdGlwbGUgc2hhcmRzLgorCisgICAgUnVucyBhIHRl
c3QgcHJvZ3JhbSB0aGF0IGV4ZWN1dGVzIG9ubHkgb25lIHNoYXJkIGFuZCB2ZXJpZmllcyB0aGF0
IHRlc3RzCisgICAgZnJvbSBvdGhlciBzaGFyZHMgZG8gbm90IHNob3cgdXAgaW4gdGhlIFhNTCBv
dXRwdXQuCisgICAgIiIiCisKKyAgICBzZWxmLl9UZXN0WG1sT3V0cHV0KAorICAgICAgICBHVEVT
VF9QUk9HUkFNX05BTUUsCisgICAgICAgIEVYUEVDVEVEX1NIQVJERURfVEVTVF9YTUwsCisgICAg
ICAgIDAsCisgICAgICAgIGV4dHJhX2Vudj17U0hBUkRfSU5ERVhfRU5WX1ZBUjogJzAnLAorICAg
ICAgICAgICAgICAgICAgIFRPVEFMX1NIQVJEU19FTlZfVkFSOiAnMTAnfSkKKworICBkZWYgX0dl
dFhtbE91dHB1dChzZWxmLCBndGVzdF9wcm9nX25hbWUsIGV4dHJhX2FyZ3MsIGV4dHJhX2VudiwK
KyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlKToKKyAgICAiIiIKKyAgICBS
ZXR1cm5zIHRoZSB4bWwgb3V0cHV0IGdlbmVyYXRlZCBieSBydW5uaW5nIHRoZSBwcm9ncmFtIGd0
ZXN0X3Byb2dfbmFtZS4KKyAgICBGdXJ0aGVybW9yZSwgdGhlIHByb2dyYW0ncyBleGl0IGNvZGUg
bXVzdCBiZSBleHBlY3RlZF9leGl0X2NvZGUuCiAgICAgIiIiCiAgICAgeG1sX3BhdGggPSBvcy5w
YXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ3Rlc3RfcHJvZ19uYW1lICsgIm91dC54bWwiKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGd0ZXN0X3Byb2dfbmFtZSArICdvdXQueG1sJykKICAgICBndGVzdF9wcm9n
X3BhdGggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aChndGVzdF9wcm9n
X25hbWUpCiAKLSAgICBjb21tYW5kID0gW2d0ZXN0X3Byb2dfcGF0aCwgIiVzPXhtbDolcyIgJSAo
R1RFU1RfT1VUUFVUX0ZMQUcsIHhtbF9wYXRoKV0KLSAgICBwID0gZ3Rlc3RfdGVzdF91dGlscy5T
dWJwcm9jZXNzKGNvbW1hbmQpCisgICAgY29tbWFuZCA9IChbZ3Rlc3RfcHJvZ19wYXRoLCAnJXM9
eG1sOiVzJyAlIChHVEVTVF9PVVRQVVRfRkxBRywgeG1sX3BhdGgpXSArCisgICAgICAgICAgICAg
ICBleHRyYV9hcmdzKQorICAgIGVudmlyb25fY29weSA9IG9zLmVudmlyb24uY29weSgpCisgICAg
aWYgZXh0cmFfZW52OgorICAgICAgZW52aXJvbl9jb3B5LnVwZGF0ZShleHRyYV9lbnYpCisgICAg
cCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kLCBlbnY9ZW52aXJvbl9jb3B5
KQorCiAgICAgaWYgcC50ZXJtaW5hdGVkX2J5X3NpZ25hbDoKICAgICAgIHNlbGYuYXNzZXJ0XyhG
YWxzZSwKLSAgICAgICAgICAgICAgICAgICAiJXMgd2FzIGtpbGxlZCBieSBzaWduYWwgJWQiICUg
KGd0ZXN0X3Byb2dfbmFtZSwgcC5zaWduYWwpKQorICAgICAgICAgICAgICAgICAgICclcyB3YXMg
a2lsbGVkIGJ5IHNpZ25hbCAlZCcgJSAoZ3Rlc3RfcHJvZ19uYW1lLCBwLnNpZ25hbCkpCiAgICAg
ZWxzZToKICAgICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKGV4cGVjdGVkX2V4aXRfY29kZSwgcC5leGl0X2NvZGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAiJyVzJyBleGl0ZWQgd2l0aCBjb2RlICVzLCB3aGljaCBkb2Vzbid0IG1hdGNoICIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZXhwZWN0ZWQgZXhpdCBjb2RlICVzLiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICd0aGUgZXhwZWN0ZWQgZXhpdCBjb2RlICVzLicKICAgICAgICAg
ICAgICAgICAgICAgICAgICUgKGNvbW1hbmQsIHAuZXhpdF9jb2RlLCBleHBlY3RlZF9leGl0X2Nv
ZGUpKQorICAgIGFjdHVhbCA9IG1pbmlkb20ucGFyc2UoeG1sX3BhdGgpCisgICAgcmV0dXJuIGFj
dHVhbAogCisgIGRlZiBfVGVzdFhtbE91dHB1dChzZWxmLCBndGVzdF9wcm9nX25hbWUsIGV4cGVj
dGVkX3htbCwKKyAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZSwgZXh0cmFf
YXJncz1Ob25lLCBleHRyYV9lbnY9Tm9uZSk6CisgICAgIiIiCisgICAgQXNzZXJ0cyB0aGF0IHRo
ZSBYTUwgZG9jdW1lbnQgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgdGhlIHByb2dyYW0KKyAgICBndGVz
dF9wcm9nX25hbWUgbWF0Y2hlcyBleHBlY3RlZF94bWwsIGEgc3RyaW5nIGNvbnRhaW5pbmcgYW5v
dGhlcgorICAgIFhNTCBkb2N1bWVudC4gIEZ1cnRoZXJtb3JlLCB0aGUgcHJvZ3JhbSdzIGV4aXQg
Y29kZSBtdXN0IGJlCisgICAgZXhwZWN0ZWRfZXhpdF9jb2RlLgorICAgICIiIgorCisgICAgYWN0
dWFsID0gc2VsZi5fR2V0WG1sT3V0cHV0KGd0ZXN0X3Byb2dfbmFtZSwgZXh0cmFfYXJncyBvciBb
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfZW52IG9yIHt9LCBleHBl
Y3RlZF9leGl0X2NvZGUpCiAgICAgZXhwZWN0ZWQgPSBtaW5pZG9tLnBhcnNlU3RyaW5nKGV4cGVj
dGVkX3htbCkKLSAgICBhY3R1YWwgICA9IG1pbmlkb20ucGFyc2UoeG1sX3BhdGgpCiAgICAgc2Vs
Zi5Ob3JtYWxpemVYbWwoYWN0dWFsLmRvY3VtZW50RWxlbWVudCkKICAgICBzZWxmLkFzc2VydEVx
dWl2YWxlbnROb2RlcyhleHBlY3RlZC5kb2N1bWVudEVsZW1lbnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWN0dWFsLmRvY3VtZW50RWxlbWVudCkKICAgICBleHBlY3RlZC51bmxp
bmsoKQotICAgIGFjdHVhbCAgLnVubGluaygpCi0KKyAgICBhY3R1YWwudW5saW5rKCkKIAogCiBp
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MKaW5kZXggZmMwN2Vm
NDZiZDY2N2FhOTJlNWRhZjdmMjAyZWZjZDc2MzY2YmY4YS4uMmVlODgzODAwNWVlZWMyMzU3MWJh
ZTM4OWM3OTI2OThjMzBjNGQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjCkBAIC0yNyw4ICsyNyw2
IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLS8vIEF1dGhvcjogZWVmYWNt
QGdtYWlsLmNvbSAoU2VhbiBNY2FmZWUpCi0KIC8vIFVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3Qg
WE1MIG91dHB1dC4KIC8vCiAvLyBBIHVzZXIgY2FuIHNwZWNpZnkgWE1MIG91dHB1dCBpbiBhIEdv
b2dsZSBUZXN0IHByb2dyYW0gdG8gcnVuIHZpYQpAQCAtMzgsMTMgKzM2LDE2IEBACiAvLyBUaGlz
IHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRob24gdW5pdCB0ZXN0LiAgRG9uJ3Qg
cnVuIGl0CiAvLyBkaXJlY3RseS4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogdXNpbmcgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdDsKIHVz
aW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzOwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0
V2l0aFBhcmFtOwogdXNpbmcgOjp0ZXN0aW5nOjpVbml0VGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6
VGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6VmFsdWVzOwogCi1jbGFzcyBTdWNjZXNzZnVsVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIFN1Y2Nlc3NmdWxUZXN0IDogcHVibGljIFRl
c3QgewogfTsKIAogVEVTVF9GKFN1Y2Nlc3NmdWxUZXN0LCBTdWNjZWVkcykgewpAQCAtNTIsMTQg
KzUzLDE0IEBAIFRFU1RfRihTdWNjZXNzZnVsVGVzdCwgU3VjY2VlZHMpIHsKICAgQVNTRVJUX0VR
KDEsIDEpOwogfQogCi1jbGFzcyBGYWlsZWRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewor
Y2xhc3MgRmFpbGVkVGVzdCA6IHB1YmxpYyBUZXN0IHsKIH07CiAKIFRFU1RfRihGYWlsZWRUZXN0
LCBGYWlscykgewogICBBU1NFUlRfRVEoMSwgMik7CiB9CiAKLWNsYXNzIERpc2FibGVkVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIERpc2FibGVkVGVzdCA6IHB1YmxpYyBUZXN0
IHsKIH07CiAKIFRFU1RfRihEaXNhYmxlZFRlc3QsIERJU0FCTEVEX3Rlc3Rfbm90X3J1bikgewpA
QCAtOTEsNyArOTIsMTAgQEAgVEVTVChJbnZhbGlkQ2hhcmFjdGVyc1Rlc3QsIEludmFsaWRDaGFy
YWN0ZXJzSW5NZXNzYWdlKSB7CiAgIEZBSUwoKSA8PCAiSW52YWxpZCBjaGFyYWN0ZXJzIGluIGJy
YWNrZXRzIFtceDFceDJdIjsKIH0KIAotY2xhc3MgUHJvcGVydHlSZWNvcmRpbmdUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgUHJvcGVydHlSZWNvcmRpbmdUZXN0IDogcHVibGlj
IFRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsgUmVjb3Jk
UHJvcGVydHkoIlNldFVwVGVzdENhc2UiLCAieWVzIik7IH0KKyAgc3RhdGljIHZvaWQgVGVhckRv
d25UZXN0Q2FzZSgpIHsgUmVjb3JkUHJvcGVydHkoIlRlYXJEb3duVGVzdENhc2UiLCAiYXllIik7
IH0KIH07CiAKIFRFU1RfRihQcm9wZXJ0eVJlY29yZGluZ1Rlc3QsIE9uZVByb3BlcnR5KSB7CkBA
IC0xMTcsMTIgKzEyMSwxMiBAQCBURVNUKE5vRml4dHVyZVRlc3QsIFJlY29yZFByb3BlcnR5KSB7
CiAgIFJlY29yZFByb3BlcnR5KCJrZXkiLCAiMSIpOwogfQogCi12b2lkIEV4dGVybmFsVXRpbGl0
eVRoYXRDYWxsc1JlY29yZFByb3BlcnR5KGNvbnN0IGNoYXIqIGtleSwgaW50IHZhbHVlKSB7Cit2
b2lkIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3Ry
aW5nJiBrZXksIGludCB2YWx1ZSkgewogICB0ZXN0aW5nOjpUZXN0OjpSZWNvcmRQcm9wZXJ0eShr
ZXksIHZhbHVlKTsKIH0KIAotdm9pZCBFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRQcm9w
ZXJ0eShjb25zdCBjaGFyKiBrZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHZhbHVlKSB7Cit2b2lkIEV4dGVybmFsVXRpbGl0eVRoYXRD
YWxsc1JlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkg
ewogICB0ZXN0aW5nOjpUZXN0OjpSZWNvcmRQcm9wZXJ0eShrZXksIHZhbHVlKTsKIH0KIApAQCAt
MTM0LDYgKzEzOCwzNSBAQCBURVNUKE5vRml4dHVyZVRlc3QsIEV4dGVybmFsVXRpbGl0eVRoYXRD
YWxsc1JlY29yZFN0cmluZ1ZhbHVlZFByb3BlcnR5KSB7CiAgIEV4dGVybmFsVXRpbGl0eVRoYXRD
YWxsc1JlY29yZFByb3BlcnR5KCJrZXlfZm9yX3V0aWxpdHlfc3RyaW5nIiwgIjEiKTsKIH0KIAor
Ly8gVmVyaWZpZXMgdGhhdCB0aGUgdGVzdCBwYXJhbWV0ZXIgdmFsdWUgaXMgb3V0cHV0IGluIHRo
ZSAndmFsdWVfcGFyYW0nCisvLyBYTUwgYXR0cmlidXRlIGZvciB2YWx1ZS1wYXJhbWV0ZXJpemVk
IHRlc3RzLgorY2xhc3MgVmFsdWVQYXJhbVRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+
IHt9OworVEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBIYXNWYWx1ZVBhcmFtQXR0cmlidXRlKSB7fQor
VEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBBbm90aGVyVGVzdFRoYXRIYXNWYWx1ZVBhcmFtQXR0cmli
dXRlKSB7fQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2luZ2xlLCBWYWx1ZVBhcmFtVGVzdCwg
VmFsdWVzKDMzLCA0MikpOworCisjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKKy8vIFZlcmlmaWVz
IHRoYXQgdGhlIHR5cGUgcGFyYW1ldGVyIG5hbWUgaXMgb3V0cHV0IGluIHRoZSAndHlwZV9wYXJh
bScKKy8vIFhNTCBhdHRyaWJ1dGUgZm9yIHR5cGVkIHRlc3RzLgordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGNsYXNzIFR5cGVkVGVzdCA6IHB1YmxpYyBUZXN0IHt9OwordHlwZWRlZiB0ZXN0aW5nOjpU
eXBlczxpbnQsIGxvbmc+IFR5cGVkVGVzdFR5cGVzOworVFlQRURfVEVTVF9DQVNFKFR5cGVkVGVz
dCwgVHlwZWRUZXN0VHlwZXMpOworVFlQRURfVEVTVChUeXBlZFRlc3QsIEhhc1R5cGVQYXJhbUF0
dHJpYnV0ZSkge30KKyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorLy8gVmVy
aWZpZXMgdGhhdCB0aGUgdHlwZSBwYXJhbWV0ZXIgbmFtZSBpcyBvdXRwdXQgaW4gdGhlICd0eXBl
X3BhcmFtJworLy8gWE1MIGF0dHJpYnV0ZSBmb3IgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UgOiBw
dWJsaWMgVGVzdCB7fTsKK1RZUEVEX1RFU1RfQ0FTRV9QKFR5cGVQYXJhbWV0ZXJpemVkVGVzdENh
c2UpOworVFlQRURfVEVTVF9QKFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UsIEhhc1R5cGVQYXJh
bUF0dHJpYnV0ZSkge30KK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKFR5cGVQYXJhbWV0ZXJp
emVkVGVzdENhc2UsIEhhc1R5cGVQYXJhbUF0dHJpYnV0ZSk7Cit0eXBlZGVmIHRlc3Rpbmc6OlR5
cGVzPGludCwgbG9uZz4gVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZVR5cGVzOworSU5TVEFOVElB
VEVfVFlQRURfVEVTVF9DQVNFX1AoU2luZ2xlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2VUeXBlcyk7CisjZW5kaWYKKwogaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CiAgIEluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsK
IApAQCAtMTQxLDUgKzE3NCw2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewog
ICAgIFRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0gVW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPmxpc3RlbmVycygpOwogICAgIGRlbGV0ZSBsaXN0ZW5lcnMuUmVsZWFzZShsaXN0ZW5lcnMu
ZGVmYXVsdF94bWxfZ2VuZXJhdG9yKCkpOwogICB9CisgIHRlc3Rpbmc6OlRlc3Q6OlJlY29yZFBy
b3BlcnR5KCJhZF9ob2NfcHJvcGVydHkiLCAiNDIiKTsKICAgcmV0dXJuIFJVTl9BTExfVEVTVFMo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1s
X3Rlc3RfdXRpbHMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF90
ZXN0X3V0aWxzLnB5CmluZGV4IGM4M2MzYjdlYTc5YjJkNzYyZWVkNjY1ZTJkNjFkZjhiOWVhMDg0
NDMuLjFlMDM1ODU5MmZiMDA4NGYwYTg5YzM0MzZmZjc1MTc0ODY4MjdhY2QgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfdGVzdF91dGlscy5weQpA
QCAtMSw1ICsxLDMgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwogIyBDb3B5cmlnaHQgMjAw
NiwgR29vZ2xlIEluYy4KICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKQEAgLTMxLDE2ICsyOSwx
MSBAQAogCiAiIiJVbml0IHRlc3QgdXRpbGl0aWVzIGZvciBndGVzdF94bWxfb3V0cHV0IiIiCiAK
LV9fYXV0aG9yX18gPSAnZWVmYWNtQGdtYWlsLmNvbSAoU2VhbiBNY2FmZWUpJwotCiBpbXBvcnQg
cmUKIGZyb20geG1sLmRvbSBpbXBvcnQgbWluaWRvbSwgTm9kZQotCiBpbXBvcnQgZ3Rlc3RfdGVz
dF91dGlscwogCi0KLUdURVNUX09VVFBVVF9GTEFHICAgICAgICAgPSAiLS1ndGVzdF9vdXRwdXQi
Ci1HVEVTVF9ERUZBVUxUX09VVFBVVF9GSUxFID0gInRlc3RfZGV0YWlsLnhtbCIKK0dURVNUX0RF
RkFVTFRfT1VUUFVUX0ZJTEUgPSAndGVzdF9kZXRhaWwueG1sJwogCiBjbGFzcyBHVGVzdFhNTFRl
c3RDYXNlKGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgogICAiIiIKQEAgLTU4LDggKzUxLDkg
QEAgY2xhc3MgR1Rlc3RYTUxUZXN0Q2FzZShndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKICAg
ICAqICBJdCBoYXMgdGhlIHNhbWUgdGFnIG5hbWUgYXMgZXhwZWN0ZWRfbm9kZS4KICAgICAqICBJ
dCBoYXMgdGhlIHNhbWUgc2V0IG9mIGF0dHJpYnV0ZXMgYXMgZXhwZWN0ZWRfbm9kZSwgZWFjaCB3
aXRoCiAgICAgICAgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRl
IG9mIGV4cGVjdGVkX25vZGUuCi0gICAgICAgQW4gZXhjZXB0aW9uIGlzIGFueSBhdHRyaWJ1dGUg
bmFtZWQgInRpbWUiLCB3aGljaCBuZWVkcyBvbmx5IGJlCi0gICAgICAgY29udmVydGlibGUgdG8g
YSBmbG9hdGluZy1wb2ludCBudW1iZXIuCisgICAgICAgRXhjZXB0aW9ucyBhcmUgYW55IGF0dHJp
YnV0ZSBuYW1lZCAidGltZSIsIHdoaWNoIG5lZWRzIG9ubHkgYmUKKyAgICAgICBjb252ZXJ0aWJs
ZSB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBhbmQgYW55IGF0dHJpYnV0ZSBuYW1lZAorICAg
ICAgICJ0eXBlX3BhcmFtIiB3aGljaCBvbmx5IGhhcyB0byBiZSBub24tZW1wdHkuCiAgICAgKiAg
SXQgaGFzIGFuIGVxdWl2YWxlbnQgc2V0IG9mIGNoaWxkIG5vZGVzIChpbmNsdWRpbmcgZWxlbWVu
dHMgYW5kCiAgICAgICAgQ0RBVEEgc2VjdGlvbnMpIGFzIGV4cGVjdGVkX25vZGUuICBOb3RlIHRo
YXQgd2UgaWdub3JlIHRoZQogICAgICAgIG9yZGVyIG9mIHRoZSBjaGlsZHJlbiBhcyB0aGV5IGFy
ZSBub3QgZ3VhcmFudGVlZCB0byBiZSBpbiBhbnkKQEAgLTc5LDIzICs3MywyNyBAQCBjbGFzcyBH
VGVzdFhNTFRlc3RDYXNlKGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgogICAgIGFjdHVhbF9h
dHRyaWJ1dGVzICAgPSBhY3R1YWxfbm9kZSAgLmF0dHJpYnV0ZXMKICAgICBzZWxmLmFzc2VydEVx
dWFscygKICAgICAgICAgZXhwZWN0ZWRfYXR0cmlidXRlcy5sZW5ndGgsIGFjdHVhbF9hdHRyaWJ1
dGVzLmxlbmd0aCwKLSAgICAgICAgImF0dHJpYnV0ZSBudW1iZXJzIGRpZmZlciBpbiBlbGVtZW50
ICIgKyBhY3R1YWxfbm9kZS50YWdOYW1lKQorICAgICAgICAnYXR0cmlidXRlIG51bWJlcnMgZGlm
ZmVyIGluIGVsZW1lbnQgJXM6XG5FeHBlY3RlZDogJXJcbkFjdHVhbDogJXInICUgKAorICAgICAg
ICAgICAgYWN0dWFsX25vZGUudGFnTmFtZSwgZXhwZWN0ZWRfYXR0cmlidXRlcy5rZXlzKCksCisg
ICAgICAgICAgICBhY3R1YWxfYXR0cmlidXRlcy5rZXlzKCkpKQogICAgIGZvciBpIGluIHJhbmdl
KGV4cGVjdGVkX2F0dHJpYnV0ZXMubGVuZ3RoKToKICAgICAgIGV4cGVjdGVkX2F0dHIgPSBleHBl
Y3RlZF9hdHRyaWJ1dGVzLml0ZW0oaSkKICAgICAgIGFjdHVhbF9hdHRyICAgPSBhY3R1YWxfYXR0
cmlidXRlcy5nZXQoZXhwZWN0ZWRfYXR0ci5uYW1lKQogICAgICAgc2VsZi5hc3NlcnRfKAogICAg
ICAgICAgIGFjdHVhbF9hdHRyIGlzIG5vdCBOb25lLAotICAgICAgICAgICJleHBlY3RlZCBhdHRy
aWJ1dGUgJXMgbm90IGZvdW5kIGluIGVsZW1lbnQgJXMiICUKKyAgICAgICAgICAnZXhwZWN0ZWQg
YXR0cmlidXRlICVzIG5vdCBmb3VuZCBpbiBlbGVtZW50ICVzJyAlCiAgICAgICAgICAgKGV4cGVj
dGVkX2F0dHIubmFtZSwgYWN0dWFsX25vZGUudGFnTmFtZSkpCi0gICAgICBzZWxmLmFzc2VydEVx
dWFscyhleHBlY3RlZF9hdHRyLnZhbHVlLCBhY3R1YWxfYXR0ci52YWx1ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICIgdmFsdWVzIG9mIGF0dHJpYnV0ZSAlcyBpbiBlbGVtZW50ICVzIGRpZmZl
ciIgJQotICAgICAgICAgICAgICAgICAgICAgICAgKGV4cGVjdGVkX2F0dHIubmFtZSwgYWN0dWFs
X25vZGUudGFnTmFtZSkpCisgICAgICBzZWxmLmFzc2VydEVxdWFscygKKyAgICAgICAgICBleHBl
Y3RlZF9hdHRyLnZhbHVlLCBhY3R1YWxfYXR0ci52YWx1ZSwKKyAgICAgICAgICAnIHZhbHVlcyBv
ZiBhdHRyaWJ1dGUgJXMgaW4gZWxlbWVudCAlcyBkaWZmZXI6ICVzIHZzICVzJyAlCisgICAgICAg
ICAgKGV4cGVjdGVkX2F0dHIubmFtZSwgYWN0dWFsX25vZGUudGFnTmFtZSwKKyAgICAgICAgICAg
ZXhwZWN0ZWRfYXR0ci52YWx1ZSwgYWN0dWFsX2F0dHIudmFsdWUpKQogCiAgICAgZXhwZWN0ZWRf
Y2hpbGRyZW4gPSBzZWxmLl9HZXRDaGlsZHJlbihleHBlY3RlZF9ub2RlKQogICAgIGFjdHVhbF9j
aGlsZHJlbiA9IHNlbGYuX0dldENoaWxkcmVuKGFjdHVhbF9ub2RlKQogICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKAogICAgICAgICBsZW4oZXhwZWN0ZWRfY2hpbGRyZW4pLCBsZW4oYWN0dWFsX2NoaWxk
cmVuKSwKLSAgICAgICAgIm51bWJlciBvZiBjaGlsZCBlbGVtZW50cyBkaWZmZXIgaW4gZWxlbWVu
dCAiICsgYWN0dWFsX25vZGUudGFnTmFtZSkKKyAgICAgICAgJ251bWJlciBvZiBjaGlsZCBlbGVt
ZW50cyBkaWZmZXIgaW4gZWxlbWVudCAnICsgYWN0dWFsX25vZGUudGFnTmFtZSkKICAgICBmb3Ig
Y2hpbGRfaWQsIGNoaWxkIGluIGV4cGVjdGVkX2NoaWxkcmVuLml0ZXJpdGVtcygpOgogICAgICAg
c2VsZi5hc3NlcnRfKGNoaWxkX2lkIGluIGFjdHVhbF9jaGlsZHJlbiwKICAgICAgICAgICAgICAg
ICAgICAnPCVzPiBpcyBub3QgaW4gPCVzPiAoaW4gZWxlbWVudCAlcyknICUKQEAgLTEwMywxOSAr
MTAxLDIyIEBAIGNsYXNzIEdUZXN0WE1MVGVzdENhc2UoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2Fz
ZSk6CiAgICAgICBzZWxmLkFzc2VydEVxdWl2YWxlbnROb2RlcyhjaGlsZCwgYWN0dWFsX2NoaWxk
cmVuW2NoaWxkX2lkXSkKIAogICBpZGVudGlmeWluZ19hdHRyaWJ1dGUgPSB7Ci0gICAgInRlc3Rz
dWl0ZXMiOiAibmFtZSIsCi0gICAgInRlc3RzdWl0ZSI6ICJuYW1lIiwKLSAgICAidGVzdGNhc2Ui
OiAgIm5hbWUiLAotICAgICJmYWlsdXJlIjogICAibWVzc2FnZSIsCi0gICAgfQorICAgICAgJ3Rl
c3RzdWl0ZXMnOiAnbmFtZScsCisgICAgICAndGVzdHN1aXRlJzogJ25hbWUnLAorICAgICAgJ3Rl
c3RjYXNlJzogJ25hbWUnLAorICAgICAgJ2ZhaWx1cmUnOiAnbWVzc2FnZScsCisgICAgICAncHJv
cGVydHknOiAnbmFtZScsCisgIH0KIAogICBkZWYgX0dldENoaWxkcmVuKHNlbGYsIGVsZW1lbnQp
OgogICAgICIiIgogICAgIEZldGNoZXMgYWxsIG9mIHRoZSBjaGlsZCBub2RlcyBvZiBlbGVtZW50
LCBhIERPTSBFbGVtZW50IG9iamVjdC4KICAgICBSZXR1cm5zIHRoZW0gYXMgdGhlIHZhbHVlcyBv
ZiBhIGRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIElEcyBvZiB0aGUKLSAgICBjaGlsZHJlbi4gIEZv
ciA8dGVzdHN1aXRlcz4sIDx0ZXN0c3VpdGU+IGFuZCA8dGVzdGNhc2U+IGVsZW1lbnRzLCB0aGUg
SUQKLSAgICBpcyB0aGUgdmFsdWUgb2YgdGhlaXIgIm5hbWUiIGF0dHJpYnV0ZTsgZm9yIDxmYWls
dXJlPiBlbGVtZW50cywgaXQgaXMKLSAgICB0aGUgdmFsdWUgb2YgdGhlICJtZXNzYWdlIiBhdHRy
aWJ1dGU7IENEQVRBIHNlY3Rpb25zIGFuZCBub24td2hpdGVzcGFjZQorICAgIGNoaWxkcmVuLiAg
Rm9yIDx0ZXN0c3VpdGVzPiwgPHRlc3RzdWl0ZT4sIDx0ZXN0Y2FzZT4sIGFuZCA8cHJvcGVydHk+
CisgICAgZWxlbWVudHMsIHRoZSBJRCBpcyB0aGUgdmFsdWUgb2YgdGhlaXIgIm5hbWUiIGF0dHJp
YnV0ZTsgZm9yIDxmYWlsdXJlPgorICAgIGVsZW1lbnRzLCBpdCBpcyB0aGUgdmFsdWUgb2YgdGhl
ICJtZXNzYWdlIiBhdHRyaWJ1dGU7IGZvciA8cHJvcGVydGllcz4KKyAgICBlbGVtZW50cywgaXQg
aXMgdGhlIHZhbHVlIG9mIHRoZWlyIHBhcmVudCdzICJuYW1lIiBhdHRyaWJ1dGUgcGx1cyB0aGUK
KyAgICBsaXRlcmFsIHN0cmluZyAicHJvcGVydGllcyI7IENEQVRBIHNlY3Rpb25zIGFuZCBub24t
d2hpdGVzcGFjZQogICAgIHRleHQgbm9kZXMgYXJlIGNvbmNhdGVuYXRlZCBpbnRvIGEgc2luZ2xl
IENEQVRBIHNlY3Rpb24gd2l0aCBJRAogICAgICJkZXRhaWwiLiAgQW4gZXhjZXB0aW9uIGlzIHJh
aXNlZCBpZiBhbnkgZWxlbWVudCBvdGhlciB0aGFuIHRoZSBhYm92ZQogICAgIGZvdXIgaXMgZW5j
b3VudGVyZWQsIGlmIHR3byBjaGlsZCBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIGlkZW50aWZ5aW5n
CkBAIC0xMjUsMjEgKzEyNiwyNyBAQCBjbGFzcyBHVGVzdFhNTFRlc3RDYXNlKGd0ZXN0X3Rlc3Rf
dXRpbHMuVGVzdENhc2UpOgogICAgIGNoaWxkcmVuID0ge30KICAgICBmb3IgY2hpbGQgaW4gZWxl
bWVudC5jaGlsZE5vZGVzOgogICAgICAgaWYgY2hpbGQubm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5U
X05PREU6Ci0gICAgICAgIHNlbGYuYXNzZXJ0XyhjaGlsZC50YWdOYW1lIGluIHNlbGYuaWRlbnRp
ZnlpbmdfYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgIkVuY291bnRlcmVkIHVua25v
d24gZWxlbWVudCA8JXM+IiAlIGNoaWxkLnRhZ05hbWUpCi0gICAgICAgIGNoaWxkSUQgPSBjaGls
ZC5nZXRBdHRyaWJ1dGUoc2VsZi5pZGVudGlmeWluZ19hdHRyaWJ1dGVbY2hpbGQudGFnTmFtZV0p
Ci0gICAgICAgIHNlbGYuYXNzZXJ0XyhjaGlsZElEIG5vdCBpbiBjaGlsZHJlbikKLSAgICAgICAg
Y2hpbGRyZW5bY2hpbGRJRF0gPSBjaGlsZAorICAgICAgICBpZiBjaGlsZC50YWdOYW1lID09ICdw
cm9wZXJ0aWVzJzoKKyAgICAgICAgICBzZWxmLmFzc2VydF8oY2hpbGQucGFyZW50Tm9kZSBpcyBu
b3QgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgJ0VuY291bnRlcmVkIDxwcm9wZXJ0aWVz
PiBlbGVtZW50IHdpdGhvdXQgYSBwYXJlbnQnKQorICAgICAgICAgIGNoaWxkX2lkID0gY2hpbGQu
cGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoJ25hbWUnKSArICctcHJvcGVydGllcycKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICBzZWxmLmFzc2VydF8oY2hpbGQudGFnTmFtZSBpbiBzZWxmLmlkZW50
aWZ5aW5nX2F0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgJ0VuY291bnRlcmVkIHVu
a25vd24gZWxlbWVudCA8JXM+JyAlIGNoaWxkLnRhZ05hbWUpCisgICAgICAgICAgY2hpbGRfaWQg
PSBjaGlsZC5nZXRBdHRyaWJ1dGUoCisgICAgICAgICAgICAgIHNlbGYuaWRlbnRpZnlpbmdfYXR0
cmlidXRlW2NoaWxkLnRhZ05hbWVdKQorICAgICAgICBzZWxmLmFzc2VydF8oY2hpbGRfaWQgbm90
IGluIGNoaWxkcmVuKQorICAgICAgICBjaGlsZHJlbltjaGlsZF9pZF0gPSBjaGlsZAogICAgICAg
ZWxpZiBjaGlsZC5ub2RlVHlwZSBpbiBbTm9kZS5URVhUX05PREUsIE5vZGUuQ0RBVEFfU0VDVElP
Tl9OT0RFXToKLSAgICAgICAgaWYgImRldGFpbCIgbm90IGluIGNoaWxkcmVuOgorICAgICAgICBp
ZiAnZGV0YWlsJyBub3QgaW4gY2hpbGRyZW46CiAgICAgICAgICAgaWYgKGNoaWxkLm5vZGVUeXBl
ID09IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFIG9yCiAgICAgICAgICAgICAgIG5vdCBjaGlsZC5u
b2RlVmFsdWUuaXNzcGFjZSgpKToKLSAgICAgICAgICAgIGNoaWxkcmVuWyJkZXRhaWwiXSA9IGNo
aWxkLm93bmVyRG9jdW1lbnQuY3JlYXRlQ0RBVEFTZWN0aW9uKAorICAgICAgICAgICAgY2hpbGRy
ZW5bJ2RldGFpbCddID0gY2hpbGQub3duZXJEb2N1bWVudC5jcmVhdGVDREFUQVNlY3Rpb24oCiAg
ICAgICAgICAgICAgICAgY2hpbGQubm9kZVZhbHVlKQogICAgICAgICBlbHNlOgotICAgICAgICAg
IGNoaWxkcmVuWyJkZXRhaWwiXS5ub2RlVmFsdWUgKz0gY2hpbGQubm9kZVZhbHVlCisgICAgICAg
ICAgY2hpbGRyZW5bJ2RldGFpbCddLm5vZGVWYWx1ZSArPSBjaGlsZC5ub2RlVmFsdWUKICAgICAg
IGVsc2U6Ci0gICAgICAgIHNlbGYuZmFpbCgiRW5jb3VudGVyZWQgdW5leHBlY3RlZCBub2RlIHR5
cGUgJWQiICUgY2hpbGQubm9kZVR5cGUpCisgICAgICAgIHNlbGYuZmFpbCgnRW5jb3VudGVyZWQg
dW5leHBlY3RlZCBub2RlIHR5cGUgJWQnICUgY2hpbGQubm9kZVR5cGUpCiAgICAgcmV0dXJuIGNo
aWxkcmVuCiAKICAgZGVmIE5vcm1hbGl6ZVhtbChzZWxmLCBlbGVtZW50KToKQEAgLTE1MCwyMyAr
MTU3LDQwIEBAIGNsYXNzIEdUZXN0WE1MVGVzdENhc2UoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2Fz
ZSk6CiAgICAgKiAgVGhlICJ0aW1lIiBhdHRyaWJ1dGUgb2YgPHRlc3RzdWl0ZXM+LCA8dGVzdHN1
aXRlPiBhbmQgPHRlc3RjYXNlPgogICAgICAgIGVsZW1lbnRzIGlzIHJlcGxhY2VkIHdpdGggYSBz
aW5nbGUgYXN0ZXJpc2ssIGlmIGl0IGNvbnRhaW5zCiAgICAgICAgb25seSBkaWdpdCBjaGFyYWN0
ZXJzLgotICAgICogIFRoZSBsaW5lIG51bWJlciByZXBvcnRlZCBpbiB0aGUgZmlyc3QgbGluZSBv
ZiB0aGUgIm1lc3NhZ2UiCi0gICAgICAgYXR0cmlidXRlIG9mIDxmYWlsdXJlPiBlbGVtZW50cyBp
cyByZXBsYWNlZCB3aXRoIGEgc2luZ2xlIGFzdGVyaXNrLgorICAgICogIFRoZSAidGltZXN0YW1w
IiBhdHRyaWJ1dGUgb2YgPHRlc3RzdWl0ZXM+IGVsZW1lbnRzIGlzIHJlcGxhY2VkIHdpdGggYQor
ICAgICAgIHNpbmdsZSBhc3RlcmlzaywgaWYgaXQgY29udGFpbnMgYSB2YWxpZCBJU084NjAxIGRh
dGV0aW1lIHZhbHVlLgorICAgICogIFRoZSAidHlwZV9wYXJhbSIgYXR0cmlidXRlIG9mIDx0ZXN0
Y2FzZT4gZWxlbWVudHMgaXMgcmVwbGFjZWQgd2l0aCBhCisgICAgICAgc2luZ2xlIGFzdGVyaXNr
IChpZiBpdCBzbiBub24tZW1wdHkpIGFzIGl0IGlzIHRoZSB0eXBlIG5hbWUgcmV0dXJuZWQKKyAg
ICAgICBieSB0aGUgY29tcGlsZXIgYW5kIGlzIHBsYXRmb3JtIGRlcGVuZGVudC4KKyAgICAqICBU
aGUgbGluZSBpbmZvIHJlcG9ydGVkIGluIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSAibWVzc2FnZSIK
KyAgICAgICBhdHRyaWJ1dGUgYW5kIENEQVRBIHNlY3Rpb24gb2YgPGZhaWx1cmU+IGVsZW1lbnRz
IGlzIHJlcGxhY2VkIHdpdGggdGhlCisgICAgICAgZmlsZSdzIGJhc2VuYW1lIGFuZCBhIHNpbmds
ZSBhc3RlcmlzayBmb3IgdGhlIGxpbmUgbnVtYmVyLgogICAgICogIFRoZSBkaXJlY3RvcnkgbmFt
ZXMgaW4gZmlsZSBwYXRocyBhcmUgcmVtb3ZlZC4KICAgICAqICBUaGUgc3RhY2sgdHJhY2VzIGFy
ZSByZW1vdmVkLgogICAgICIiIgogCi0gICAgaWYgZWxlbWVudC50YWdOYW1lIGluICgidGVzdHN1
aXRlcyIsICJ0ZXN0c3VpdGUiLCAidGVzdGNhc2UiKToKLSAgICAgIHRpbWUgPSBlbGVtZW50Lmdl
dEF0dHJpYnV0ZU5vZGUoInRpbWUiKQotICAgICAgdGltZS52YWx1ZSA9IHJlLnN1YihyIl5cZCso
XC5cZCspPyQiLCAiKiIsIHRpbWUudmFsdWUpCi0gICAgZWxpZiBlbGVtZW50LnRhZ05hbWUgPT0g
ImZhaWx1cmUiOgorICAgIGlmIGVsZW1lbnQudGFnTmFtZSA9PSAndGVzdHN1aXRlcyc6CisgICAg
ICB0aW1lc3RhbXAgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoJ3RpbWVzdGFtcCcpCisgICAg
ICB0aW1lc3RhbXAudmFsdWUgPSByZS5zdWIocideXGR7NH0tXGRcZC1cZFxkVFxkXGQ6XGRcZDpc
ZFxkJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyonLCB0aW1lc3RhbXAudmFs
dWUpCisgICAgaWYgZWxlbWVudC50YWdOYW1lIGluICgndGVzdHN1aXRlcycsICd0ZXN0c3VpdGUn
LCAndGVzdGNhc2UnKToKKyAgICAgIHRpbWUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoJ3Rp
bWUnKQorICAgICAgdGltZS52YWx1ZSA9IHJlLnN1YihyJ15cZCsoXC5cZCspPyQnLCAnKicsIHRp
bWUudmFsdWUpCisgICAgICB0eXBlX3BhcmFtID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKCd0
eXBlX3BhcmFtJykKKyAgICAgIGlmIHR5cGVfcGFyYW0gYW5kIHR5cGVfcGFyYW0udmFsdWU6Cisg
ICAgICAgIHR5cGVfcGFyYW0udmFsdWUgPSAnKicKKyAgICBlbGlmIGVsZW1lbnQudGFnTmFtZSA9
PSAnZmFpbHVyZSc6CisgICAgICBzb3VyY2VfbGluZV9wYXQgPSByJ14uKlsvXFxdKC4qOilcZCtc
bicKKyAgICAgICMgUmVwbGFjZXMgdGhlIHNvdXJjZSBsaW5lIGluZm9ybWF0aW9uIHdpdGggYSBu
b3JtYWxpemVkIGZvcm0uCisgICAgICBtZXNzYWdlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVOb2Rl
KCdtZXNzYWdlJykKKyAgICAgIG1lc3NhZ2UudmFsdWUgPSByZS5zdWIoc291cmNlX2xpbmVfcGF0
LCAnXFwxKlxuJywgbWVzc2FnZS52YWx1ZSkKICAgICAgIGZvciBjaGlsZCBpbiBlbGVtZW50LmNo
aWxkTm9kZXM6CiAgICAgICAgIGlmIGNoaWxkLm5vZGVUeXBlID09IE5vZGUuQ0RBVEFfU0VDVElP
Tl9OT0RFOgotICAgICAgICAgICMgUmVtb3ZlcyB0aGUgc291cmNlIGxpbmUgbnVtYmVyLgotICAg
ICAgICAgIGNkYXRhID0gcmUuc3ViKHIiXi4qWy9cXF0oLio6KVxkK1xuIiwgIlxcMSpcbiIsIGNo
aWxkLm5vZGVWYWx1ZSkKKyAgICAgICAgICAjIFJlcGxhY2VzIHRoZSBzb3VyY2UgbGluZSBpbmZv
cm1hdGlvbiB3aXRoIGEgbm9ybWFsaXplZCBmb3JtLgorICAgICAgICAgIGNkYXRhID0gcmUuc3Vi
KHNvdXJjZV9saW5lX3BhdCwgJ1xcMSpcbicsIGNoaWxkLm5vZGVWYWx1ZSkKICAgICAgICAgICAj
IFJlbW92ZXMgdGhlIGFjdHVhbCBzdGFjayB0cmFjZS4KLSAgICAgICAgICBjaGlsZC5ub2RlVmFs
dWUgPSByZS5zdWIociJcblN0YWNrIHRyYWNlOlxuKC58XG4pKiIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIiLCBjZGF0YSkKKyAgICAgICAgICBjaGlsZC5ub2RlVmFsdWUg
PSByZS5zdWIocidTdGFjayB0cmFjZTpcbigufFxuKSonLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnU3RhY2sgdHJhY2U6XG4qJywgY2RhdGEpCiAgICAgZm9yIGNoaWxkIGlu
IGVsZW1lbnQuY2hpbGROb2RlczoKICAgICAgIGlmIGNoaWxkLm5vZGVUeXBlID09IE5vZGUuRUxF
TUVOVF9OT0RFOgogICAgICAgICBzZWxmLk5vcm1hbGl6ZVhtbChjaGlsZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5jYwppbmRleCA4YjhhNDBiNDRlOWI0MWY0YzI5
ZDc1NTI2OTA4NTY4YWYyMzc5MTJkLi4wZjY5ZjZkYmQyZTI2YTNhOWJkZjc1NmI0ODA3MzdhNGVm
NDIxOGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3Byb2R1Y3Rp
b24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9kdWN0aW9uLmNjCkBA
IC0yNiwxMCArMjYsOSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQot
Ly8KLS8vIFRoaXMgaXMgcGFydCBvZiB0aGUgdW5pdCB0ZXN0IGZvciBpbmNsdWRlL2d0ZXN0L2d0
ZXN0X3Byb2QuaC4KKy8vIFRoaXMgaXMgcGFydCBvZiB0aGUgdW5pdCB0ZXN0IGZvciBndGVzdF9w
cm9kLmguCiAKICNpbmNsdWRlICJwcm9kdWN0aW9uLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9wcm9kdWN0aW9uLmgKaW5kZXggOGYxNmZmZmEyNDE2YzU3MTUzZmFiM2UwOTdkMTM0
YWYxZmI0YTliYy4uNTQyNzIzYjcwODczODdkNGZiNTI5ZmMwN2E2ODhiYzFjOGQ3OGIxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9kdWN0aW9uLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9kdWN0aW9uLmgKQEAgLTI2LDE1ICsyNiwx
NCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAv
LwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRoaXMg
aXMgcGFydCBvZiB0aGUgdW5pdCB0ZXN0IGZvciBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaC4K
Ky8vIFRoaXMgaXMgcGFydCBvZiB0aGUgdW5pdCB0ZXN0IGZvciBndGVzdF9wcm9kLmguCiAKICNp
Zm5kZWYgR1RFU1RfVEVTVF9QUk9EVUNUSU9OX0hfCiAjZGVmaW5lIEdURVNUX1RFU1RfUFJPRFVD
VElPTl9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3RfcHJvZC5oPgorI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0X3Byb2QuaCIKIAogY2xhc3MgUHJpdmF0ZUNvZGUgewogIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3RzX3V0aWwucHkgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0c191dGlsLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCA5ZTU3OTMxZWJhMmM2MTFlMGExZjYwZmZmNGYwOTUzOWUxMDc2N2Fk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3RzX3V0aWwucHkKKysrIC9kZXYvbnVsbApAQCAt
MSw0NjYgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlz
dHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiUHJvdmlkZXMgZmFjaWxpdGllcyBmb3Ig
cnVubmluZyBTQ29ucy1idWlsdCBHb29nbGUgVGVzdC9Nb2NrIHRlc3RzLiIiIgotCi0KLWltcG9y
dCBvcHRwYXJzZQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzZXRzCi1pbXBvcnQgc3lz
Ci0KLXRyeToKLSAgIyBzdWJyb2Nlc3MgbW9kdWxlIGlzIGEgcHJlZmVyYWJsZSB3YXkgdG8gaW52
b2tlIHN1YnByb2Nlc3NlcyBidXQgaXQgbWF5Ci0gICMgbm90IGJlIGF2YWlsYWJsZSBvbiBNYWNP
UyBYIDEwLjQuCi0gICMgU3VwcHJlc3NlcyB0aGUgJ0ltcG9ydCBub3QgYXQgdGhlIHRvcCBvZiB0
aGUgZmlsZScgbGludCBjb21wbGFpbnQuCi0gICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjIwNAot
ICBpbXBvcnQgc3VicHJvY2VzcwotZXhjZXB0IEltcG9ydEVycm9yOgotICBzdWJwcm9jZXNzID0g
Tm9uZQotCi1IRUxQX01TRyA9ICIiIlJ1bnMgdGhlIHNwZWNpZmllZCB0ZXN0cyBmb3IgJShwcm9q
KXMuCi0KLVNZTk9QU0lTCi0gICAgICAgcnVuX3Rlc3RzLnB5IFtPUFRJT05dLi4uIFtCVUlMRF9E
SVJdLi4uIFtURVNUXS4uLgotCi1ERVNDUklQVElPTgotICAgICAgIFJ1bnMgdGhlIHNwZWNpZmll
ZCB0ZXN0cyAoZWl0aGVyIGJpbmFyeSBvciBQeXRob24pLCBhbmQgcHJpbnRzIGEKLSAgICAgICBz
dW1tYXJ5IG9mIHRoZSByZXN1bHRzLiBCVUlMRF9ESVJTIHdpbGwgYmUgdXNlZCB0byBzZWFyY2gg
Zm9yIHRoZQotICAgICAgIGJpbmFyaWVzLiBJZiBubyBURVNUcyBhcmUgc3BlY2lmaWVkLCBhbGwg
YmluYXJ5IHRlc3RzIGZvdW5kIGluCi0gICAgICAgQlVJTERfRElScyBhbmQgYWxsIFB5dGhvbiB0
ZXN0cyBmb3VuZCBpbiB0aGUgZGlyZWN0b3J5IHRlc3QvIChpbiB0aGUKLSAgICAgICAlKHByb2op
cyByb290KSBhcmUgcnVuLgotCi0gICAgICAgVEVTVCBpcyBhIG5hbWUgb2YgZWl0aGVyIGEgYmlu
YXJ5IG9yIGEgUHl0aG9uIHRlc3QuIEEgYmluYXJ5IHRlc3QgaXMKLSAgICAgICBhbiBleGVjdXRh
YmxlIGZpbGUgbmFtZWQgKl90ZXN0IG9yICpfdW5pdHRlc3QgKHdpdGggdGhlIC5leGUKLSAgICAg
ICBleHRlbnNpb24gb24gV2luZG93cykgQSBQeXRob24gdGVzdCBpcyBhIHNjcmlwdCBuYW1lZCAq
X3Rlc3QucHkgb3IKLSAgICAgICAqX3VuaXR0ZXN0LnB5LgotCi1PUFRJT05TCi0gICAgICAgLWgs
IC0taGVscAotICAgICAgICAgICAgICBQcmludCB0aGlzIGhlbHAgbWVzc2FnZS4KLSAgICAgICAt
YyBDT05GSUdVUkFUSU9OUwotICAgICAgICAgICAgICBTcGVjaWZ5IGJ1aWxkIGRpcmVjdG9yaWVz
IHZpYSBidWlsZCBjb25maWd1cmF0aW9ucy4KLSAgICAgICAgICAgICAgQ09ORklHVVJBVElPTlMg
aXMgZWl0aGVyIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYnVpbGQKLSAgICAgICAgICAgICAg
Y29uZmlndXJhdGlvbnMgb3IgJ2FsbCcuIEVhY2ggY29uZmlndXJhdGlvbiBpcyBlcXVpdmFsZW50
IHRvCi0gICAgICAgICAgICAgIGFkZGluZyAnc2NvbnMvYnVpbGQvPGNvbmZpZ3VyYXRpb24+LyUo
cHJvailzL3Njb25zJyB0byBCVUlMRF9ESVJzLgotICAgICAgICAgICAgICBTcGVjaWZ5aW5nIC1j
PWFsbCBpcyBlcXVpdmFsZW50IHRvIHByb3ZpZGluZyBhbGwgZGlyZWN0b3JpZXMKLSAgICAgICAg
ICAgICAgbGlzdGVkIGluIEtOT1dOIEJVSUxEIERJUkVDVE9SSUVTIHNlY3Rpb24gYmVsb3cuCi0g
ICAgICAgLWEKLSAgICAgICAgICAgICAgRXF1aXZhbGVudCB0byAtYz1hbGwKLSAgICAgICAtYgot
ICAgICAgICAgICAgICBFcXVpdmFsZW50IHRvIC1jPWFsbCB3aXRoIHRoZSBleGNlcHRpb24gdGhh
dCB0aGUgc2NyaXB0IHdpbGwgbm90Ci0gICAgICAgICAgICAgIGZhaWwgaWYgc29tZSBvZiB0aGUg
S05PV04gQlVJTEQgRElSRUNUT1JJRVMgZG8gbm90IGV4aXN0czsgdGhlCi0gICAgICAgICAgICAg
IHNjcmlwdCB3aWxsIHNpbXBseSBub3QgcnVuIHRoZSB0ZXN0cyB0aGVyZS4gJ2InIHN0YW5kcyBm
b3IKLSAgICAgICAgICAgICAgJ2J1aWx0IGRpcmVjdG9yaWVzJy4KLQotUkVUVVJOIFZBTFVFCi0g
ICAgICAgUmV0dXJucyAwIGlmIGFsbCB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bDsgb3RoZXJ3aXNlIHJl
dHVybnMgMS4KLQotRVhBTVBMRVMKLSAgICAgICBydW5fdGVzdHMucHkKLSAgICAgICAgICAgICAg
UnVucyBhbGwgdGVzdHMgZm9yIHRoZSBkZWZhdWx0IGJ1aWxkIGNvbmZpZ3VyYXRpb24uCi0gICAg
ICAgcnVuX3Rlc3RzLnB5IC1hCi0gICAgICAgICAgICAgIFJ1bnMgYWxsIHRlc3RzIHdpdGggYmlu
YXJpZXMgaW4gS05PV04gQlVJTEQgRElSRUNUT1JJRVMuCi0gICAgICAgcnVuX3Rlc3RzLnB5IC1i
Ci0gICAgICAgICAgICAgIFJ1bnMgYWxsIHRlc3RzIGluIEtOT1dOIEJVSUxEIERJUkVDVE9SSUVT
IHRoYXQgaGF2ZSBiZWVuCi0gICAgICAgICAgICAgIGJ1aWx0LgotICAgICAgIHJ1bl90ZXN0cy5w
eSBmb28vCi0gICAgICAgICAgICAgIFJ1bnMgYWxsIHRlc3RzIGluIHRoZSBmb28vIGRpcmVjdG9y
eSBhbmQgYWxsIFB5dGhvbiB0ZXN0cyBpbgotICAgICAgICAgICAgICB0aGUgZGlyZWN0b3J5IHRl
c3QuIFRoZSBQeXRob24gdGVzdHMgYXJlIGluc3RydWN0ZWQgdG8gbG9vawotICAgICAgICAgICAg
ICBmb3IgYmluYXJpZXMgaW4gZm9vLy4KLSAgICAgICBydW5fdGVzdHMucHkgYmFyX3Rlc3QuZXhl
IHRlc3QvYmF6X3Rlc3QuZXhlIGZvby8gYmFyLwotICAgICAgICAgICAgICBSdW5zIGZvby9iYXJf
dGVzdC5leGUsIGJhci9iYXJfdGVzdC5leGUsIGZvby9iYXpfdGVzdC5leGUsIGFuZAotICAgICAg
ICAgICAgICBiYXIvYmF6X3Rlc3QuZXhlLgotICAgICAgIHJ1bl90ZXN0cy5weSBmb28gYmFyIHRl
c3QvZm9vX3Rlc3QucHkKLSAgICAgICAgICAgICAgUnVucyB0ZXN0L2Zvb190ZXN0LnB5IHR3aWNl
IGluc3RydWN0aW5nIGl0IHRvIGxvb2sgZm9yIGl0cwotICAgICAgICAgICAgICB0ZXN0IGJpbmFy
aWVzIGluIHRoZSBkaXJlY3RvcmllcyBmb28gYW5kIGJhciwKLSAgICAgICAgICAgICAgY29ycmVz
cG9uZGluZ2x5LgotCi1LTk9XTiBCVUlMRCBESVJFQ1RPUklFUwotICAgICAgcnVuX3Rlc3RzLnB5
IGtub3dzIGFib3V0IGRpcmVjdG9yaWVzIHdoZXJlIHRoZSBTQ29ucyBidWlsZCBzY3JpcHQKLSAg
ICAgIGRlcG9zaXRzIGl0cyBwcm9kdWN0cy4gVGhlc2UgYXJlIHRoZSBkaXJlY3RvcmllcyB3aGVy
ZSBydW5fdGVzdHMucHkKLSAgICAgIHdpbGwgYmUgbG9va2luZyBmb3IgaXRzIGJpbmFyaWVzLiBD
dXJyZW50bHksICUocHJvailzJ3MgU0NvbnN0cnVjdCBmaWxlCi0gICAgICBkZWZpbmVzIHRoZW0g
YXMgZm9sbG93cyAodGhlIGRlZmF1bHQgYnVpbGQgZGlyZWN0b3J5IGlzIHRoZSBmaXJzdCBvbmUK
LSAgICAgIGxpc3RlZCBpbiBlYWNoIGdyb3VwKToKLSAgICAgIE9uIFdpbmRvd3M6Ci0gICAgICAg
ICAgICAgIDwlKHByb2opcyByb290Pi9zY29ucy9idWlsZC93aW4tZGJnOC8lKHByb2opcy9zY29u
cy8KLSAgICAgICAgICAgICAgPCUocHJvailzIHJvb3Q+L3Njb25zL2J1aWxkL3dpbi1vcHQ4LyUo
cHJvailzL3Njb25zLwotICAgICAgT24gTWFjOgotICAgICAgICAgICAgICA8JShwcm9qKXMgcm9v
dD4vc2NvbnMvYnVpbGQvbWFjLWRiZy8lKHByb2opcy9zY29ucy8KLSAgICAgICAgICAgICAgPCUo
cHJvailzIHJvb3Q+L3Njb25zL2J1aWxkL21hYy1vcHQvJShwcm9qKXMvc2NvbnMvCi0gICAgICBP
biBvdGhlciBwbGF0Zm9ybXM6Ci0gICAgICAgICAgICAgIDwlKHByb2opcyByb290Pi9zY29ucy9i
dWlsZC9kYmcvJShwcm9qKXMvc2NvbnMvCi0gICAgICAgICAgICAgIDwlKHByb2opcyByb290Pi9z
Y29ucy9idWlsZC9vcHQvJShwcm9qKXMvc2NvbnMvIiIiCi0KLUlTX1dJTkRPV1MgPSBvcy5uYW1l
ID09ICdudCcKLUlTX01BQyA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBhbmQgb3MudW5hbWUoKVswXSA9
PSAnRGFyd2luJwotSVNfQ1lHV0lOID0gb3MubmFtZSA9PSAncG9zaXgnIGFuZCAnQ1lHV0lOJyBp
biBvcy51bmFtZSgpWzBdCi0KLSMgRGVmaW5pdGlvbiBvZiBDT05GSUdTIG11c3QgbWF0Y2ggdGhh
dCBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5IG5hbWVzIGluIHRoZQotIyBTQ29uc3RydWN0IHNjcmlw
dC4gVGhlIGZpcnN0IGxpc3QgaXRlbSBpcyB0aGUgZGVmYXVsdCBidWlsZCBjb25maWd1cmF0aW9u
LgotaWYgSVNfV0lORE9XUzoKLSAgQ09ORklHUyA9ICgnd2luLWRiZzgnLCAnd2luLW9wdDgnKQot
ZWxpZiBJU19NQUM6Ci0gIENPTkZJR1MgPSAoJ21hYy1kYmcnLCAnbWFjLW9wdCcpCi1lbHNlOgot
ICBDT05GSUdTID0gKCdkYmcnLCAnb3B0JykKLQotaWYgSVNfV0lORE9XUyBvciBJU19DWUdXSU46
Ci0gIFBZVEhPTl9URVNUX1JFR0VYID0gcmUuY29tcGlsZShyJ18odW5pdCk/dGVzdFwucHkkJywg
cmUuSUdOT1JFQ0FTRSkKLSAgQklOQVJZX1RFU1RfUkVHRVggPSByZS5jb21waWxlKHInXyh1bml0
KT90ZXN0KFwuZXhlKT8kJywgcmUuSUdOT1JFQ0FTRSkKLSAgQklOQVJZX1RFU1RfU0VBUkNIX1JF
R0VYID0gcmUuY29tcGlsZShyJ18odW5pdCk/dGVzdFwuZXhlJCcsIHJlLklHTk9SRUNBU0UpCi1l
bHNlOgotICBQWVRIT05fVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocidfKHVuaXQpP3Rlc3RcLnB5
JCcpCi0gIEJJTkFSWV9URVNUX1JFR0VYID0gcmUuY29tcGlsZShyJ18odW5pdCk/dGVzdCQnKQot
ICBCSU5BUllfVEVTVF9TRUFSQ0hfUkVHRVggPSBCSU5BUllfVEVTVF9SRUdFWAotCi0KLWRlZiBf
R2V0R3Rlc3RCdWlsZERpcihpbmplY3RlZF9vcywgc2NyaXB0X2RpciwgY29uZmlnKToKLSAgIiIi
Q2FsY3VsYXRlcyBwYXRoIHRvIHRoZSBHb29nbGUgVGVzdCBTQ29ucyBidWlsZCBkaXJlY3Rvcnku
IiIiCi0KLSAgcmV0dXJuIGluamVjdGVkX29zLnBhdGgubm9ybXBhdGgoaW5qZWN0ZWRfb3MucGF0
aC5qb2luKHNjcmlwdF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnc2NvbnMvYnVpbGQnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2d0ZXN0L3Njb25z
JykpCi0KLQotZGVmIF9HZXRDb25maWdGcm9tQnVpbGREaXIoYnVpbGRfZGlyKToKLSAgIiIiRXh0
cmFjdHMgdGhlIGNvbmZpZ3VyYXRpb24gbmFtZSBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkuIiIi
Ci0KLSAgIyBXZSBkb24ndCB3YW50IHRvIGRlcGVuZCBvbiBidWlsZF9kaXIgY29udGFpbmluZyB0
aGUgY29ycmVjdCBwYXRoCi0gICMgc2VwYXJhdG9ycy4KLSAgbSA9IHJlLm1hdGNoKHInLipbXFwv
XShbXlxcL10rKVtcXC9dW15cXC9dK1tcXC9dc2NvbnNbXFwvXT8kJywgYnVpbGRfZGlyKQotICBp
ZiBtOgotICAgIHJldHVybiBtLmdyb3VwKDEpCi0gIGVsc2U6Ci0gICAgcHJpbnQgPj5zeXMuc3Rk
ZXJyLCAoJyVzIGlzIGFuIGludmFsaWQgYnVpbGQgZGlyZWN0b3J5IHRoYXQgZG9lcyBub3QgJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICdjb3JyZXNwb25kIHRvIGFueSBjb25maWd1cmF0aW9u
LicgJSAoYnVpbGRfZGlyLCkpCi0gICAgcmV0dXJuICcnCi0KLQotIyBBbGwgcGF0aHMgaW4gdGhp
cyBzY3JpcHQgYXJlIGVpdGhlciBhYnNvbHV0ZSBvciByZWxhdGl2ZSB0byB0aGUgY3VycmVudAot
IyB3b3JraW5nIGRpcmVjdG9yeSwgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuCi1jbGFzcyBU
ZXN0UnVubmVyKG9iamVjdCk6Ci0gICIiIlByb3ZpZGVzIGZhY2lsaXRpZXMgZm9yIHJ1bm5pbmcg
UHl0aG9uIGFuZCBiaW5hcnkgdGVzdHMgZm9yIEdvb2dsZSBUZXN0LiIiIgotCi0gIGRlZiBfX2lu
aXRfXyhzZWxmLAotICAgICAgICAgICAgICAgc2NyaXB0X2RpciwKLSAgICAgICAgICAgICAgIGJ1
aWxkX2Rpcl92YXJfbmFtZT0nR1RFU1RfQlVJTERfRElSJywKLSAgICAgICAgICAgICAgIGluamVj
dGVkX29zPW9zLAotICAgICAgICAgICAgICAgaW5qZWN0ZWRfc3VicHJvY2Vzcz1zdWJwcm9jZXNz
LAotICAgICAgICAgICAgICAgaW5qZWN0ZWRfYnVpbGRfZGlyX2ZpbmRlcj1fR2V0R3Rlc3RCdWls
ZERpcik6Ci0gICAgIiIiSW5pdGlhbGl6ZXMgYSBUZXN0UnVubmVyIGluc3RhbmNlLgotCi0gICAg
QXJnczoKLSAgICAgIHNjcmlwdF9kaXI6ICAgICAgICAgICAgICAgIEZpbGUgcGF0aCB0byB0aGUg
Y2FsbGluZyBzY3JpcHQuCi0gICAgICBidWlsZF9kaXJfdmFyX25hbWU6ICAgICAgICBOYW1lIG9m
IHRoZSBlbnYgdmFyaWFibGUgdXNlZCB0byBwYXNzIHRoZQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhlIGJ1aWxkIGRpcmVjdG9yeSBwYXRoIHRvIHRoZSBpbnZva2VkCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cy4KLSAgICAgIGluamVjdGVkX29zOiAg
ICAgICAgICAgICAgIHN0YW5kYXJkIG9zIG1vZHVsZSBvciBhIG1vY2svc3R1YiBmb3IKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RpbmcuCi0gICAgICBpbmplY3RlZF9zdWJw
cm9jZXNzOiAgICAgICBzdGFuZGFyZCBzdWJwcm9jZXNzIG1vZHVsZSBvciBhIG1vY2svc3R1Ygot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRlc3RpbmcKLSAgICAgIGluamVj
dGVkX2J1aWxkX2Rpcl9maW5kZXI6IGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB0aGUgcGF0aCB0
bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIGRpcmVjdG9yeS4K
LSAgICAiIiIKLQotICAgIHNlbGYub3MgPSBpbmplY3RlZF9vcwotICAgIHNlbGYuc3VicHJvY2Vz
cyA9IGluamVjdGVkX3N1YnByb2Nlc3MKLSAgICBzZWxmLmJ1aWxkX2Rpcl9maW5kZXIgPSBpbmpl
Y3RlZF9idWlsZF9kaXJfZmluZGVyCi0gICAgc2VsZi5idWlsZF9kaXJfdmFyX25hbWUgPSBidWls
ZF9kaXJfdmFyX25hbWUKLSAgICBzZWxmLnNjcmlwdF9kaXIgPSBzY3JpcHRfZGlyCi0KLSAgZGVm
IF9HZXRCdWlsZERpckZvckNvbmZpZyhzZWxmLCBjb25maWcpOgotICAgICIiIlJldHVybnMgdGhl
IGJ1aWxkIGRpcmVjdG9yeSBmb3IgYSBnaXZlbiBjb25maWd1cmF0aW9uLiIiIgotCi0gICAgcmV0
dXJuIHNlbGYuYnVpbGRfZGlyX2ZpbmRlcihzZWxmLm9zLCBzZWxmLnNjcmlwdF9kaXIsIGNvbmZp
ZykKLQotICBkZWYgX1J1bihzZWxmLCBhcmdzKToKLSAgICAiIiJSdW5zIHRoZSBleGVjdXRhYmxl
IHdpdGggZ2l2ZW4gYXJncyAoYXJnc1swXSBpcyB0aGUgZXhlY3V0YWJsZSBuYW1lKS4KLQotICAg
IEFyZ3M6Ci0gICAgICBhcmdzOiBDb21tYW5kIGxpbmUgYXJndW1lbnRzIGZvciB0aGUgcHJvY2Vz
cy4KLQotICAgIFJldHVybnM6Ci0gICAgICBQcm9jZXNzJ3MgZXhpdCBjb2RlIGlmIGl0IGV4aXRz
IG5vcm1hbGx5LCBvciAtc2lnbmFsIGlmIHRoZSBwcm9jZXNzIGlzCi0gICAgICBraWxsZWQgYnkg
YSBzaWduYWwuCi0gICAgIiIiCi0KLSAgICBpZiBzZWxmLnN1YnByb2Nlc3M6Ci0gICAgICByZXR1
cm4gc2VsZi5zdWJwcm9jZXNzLlBvcGVuKGFyZ3MpLndhaXQoKQotICAgIGVsc2U6Ci0gICAgICBy
ZXR1cm4gc2VsZi5vcy5zcGF3bnYoc2VsZi5vcy5QX1dBSVQsIGFyZ3NbMF0sIGFyZ3MpCi0KLSAg
ZGVmIF9SdW5CaW5hcnlUZXN0KHNlbGYsIHRlc3QpOgotICAgICIiIlJ1bnMgdGhlIGJpbmFyeSB0
ZXN0IGdpdmVuIGl0cyBwYXRoLgotCi0gICAgQXJnczoKLSAgICAgIHRlc3Q6IFBhdGggdG8gdGhl
IHRlc3QgYmluYXJ5LgotCi0gICAgUmV0dXJuczoKLSAgICAgIFByb2Nlc3MncyBleGl0IGNvZGUg
aWYgaXQgZXhpdHMgbm9ybWFsbHksIG9yIC1zaWduYWwgaWYgdGhlIHByb2Nlc3MgaXMKLSAgICAg
IGtpbGxlZCBieSBhIHNpZ25hbC4KLSAgICAiIiIKLQotICAgIHJldHVybiBzZWxmLl9SdW4oW3Rl
c3RdKQotCi0gIGRlZiBfUnVuUHl0aG9uVGVzdChzZWxmLCB0ZXN0LCBidWlsZF9kaXIpOgotICAg
ICIiIlJ1bnMgdGhlIFB5dGhvbiB0ZXN0IHNjcmlwdCB3aXRoIHRoZSBzcGVjaWZpZWQgYnVpbGQg
ZGlyZWN0b3J5LgotCi0gICAgQXJnczoKLSAgICAgIHRlc3Q6IFBhdGggdG8gdGhlIHRlc3QncyBQ
eXRob24gc2NyaXB0LgotICAgICAgYnVpbGRfZGlyOiBQYXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hl
cmUgdGhlIHRlc3QgYmluYXJ5IGlzIHRvIGJlIGZvdW5kLgotCi0gICAgUmV0dXJuczoKLSAgICAg
IFByb2Nlc3MncyBleGl0IGNvZGUgaWYgaXQgZXhpdHMgbm9ybWFsbHksIG9yIC1zaWduYWwgaWYg
dGhlIHByb2Nlc3MgaXMKLSAgICAgIGtpbGxlZCBieSBhIHNpZ25hbC4KLSAgICAiIiIKLQotICAg
IG9sZF9idWlsZF9kaXIgPSBzZWxmLm9zLmVudmlyb24uZ2V0KHNlbGYuYnVpbGRfZGlyX3Zhcl9u
YW1lKQotCi0gICAgdHJ5OgotICAgICAgc2VsZi5vcy5lbnZpcm9uW3NlbGYuYnVpbGRfZGlyX3Zh
cl9uYW1lXSA9IGJ1aWxkX2RpcgotCi0gICAgICAjIElmIHRoaXMgc2NyaXB0IGlzIHJ1biBvbiBh
IFdpbmRvd3MgbWFjaGluZSB0aGF0IGhhcyBubyBhc3NvY2lhdGlvbgotICAgICAgIyBiZXR3ZWVu
IHRoZSAucHkgZXh0ZW5zaW9uIGFuZCBhIHB5dGhvbiBpbnRlcnByZXRlciwgc2ltcGx5IHBhc3Np
bmcKLSAgICAgICMgdGhlIHNjcmlwdCBuYW1lIGludG8gc3VicHJvY2Vzcy5Qb3Blbi9vcy5zcGF3
biB3aWxsIG5vdCB3b3JrLgotICAgICAgcHJpbnQgJ1J1bm5pbmcgJXMgLiAuIC4nICUgKHRlc3Qs
KQotICAgICAgcmV0dXJuIHNlbGYuX1J1bihbc3lzLmV4ZWN1dGFibGUsIHRlc3RdKQotCi0gICAg
ZmluYWxseToKLSAgICAgIGlmIG9sZF9idWlsZF9kaXIgaXMgTm9uZToKLSAgICAgICAgZGVsIHNl
bGYub3MuZW52aXJvbltzZWxmLmJ1aWxkX2Rpcl92YXJfbmFtZV0KLSAgICAgIGVsc2U6Ci0gICAg
ICAgIHNlbGYub3MuZW52aXJvbltzZWxmLmJ1aWxkX2Rpcl92YXJfbmFtZV0gPSBvbGRfYnVpbGRf
ZGlyCi0KLSAgZGVmIF9GaW5kRmlsZXNCeVJlZ2V4KHNlbGYsIGRpcmVjdG9yeSwgcmVnZXgpOgot
ICAgICIiIlJldHVybnMgZmlsZXMgaW4gYSBkaXJlY3Rvcnkgd2hvc2UgbmFtZXMgbWF0Y2ggYSBy
ZWd1bGFyIGV4cHJlc3Npb24uCi0KLSAgICBBcmdzOgotICAgICAgZGlyZWN0b3J5OiBQYXRoIHRv
IHRoZSBkaXJlY3RvcnkgdG8gc2VhcmNoIGZvciBmaWxlcy4KLSAgICAgIHJlZ2V4OiBSZWd1bGFy
IGV4cHJlc3Npb24gdG8gZmlsdGVyIGZpbGUgbmFtZXMuCi0KLSAgICBSZXR1cm5zOgotICAgICAg
VGhlIGxpc3Qgb2YgdGhlIHBhdGhzIHRvIHRoZSBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5LgotICAg
ICIiIgotCi0gICAgcmV0dXJuIFtzZWxmLm9zLnBhdGguam9pbihkaXJlY3RvcnksIGZpbGVfbmFt
ZSkKLSAgICAgICAgICAgIGZvciBmaWxlX25hbWUgaW4gc2VsZi5vcy5saXN0ZGlyKGRpcmVjdG9y
eSkKLSAgICAgICAgICAgIGlmIHJlLnNlYXJjaChyZWdleCwgZmlsZV9uYW1lKV0KLQotICAjIFRP
RE8odmxhZGxAZ29vZ2xlLmNvbSk6IEltcGxlbWVudCBwYXJzaW5nIG9mIHNjb25zL1NDb25zY3Jp
cHQgdG8gcnVuIGFsbAotICAjIHRlc3RzIGRlZmluZWQgdGhlcmUgd2hlbiBubyB0ZXN0cyBhcmUg
c3BlY2lmaWVkLgotICAjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IFVwZGF0ZSB0aGUgZG9jc3Ry
aW5nIGFmdGVyIHRoZSBjb2RlIGlzIGNoYW5nZWQgdG8KLSAgIyB0cnkgdG8gdGVzdCBhbGwgYnVp
bGRzIGRlZmluZWQgaW4gc2NvbnMvU0NvbnNjcmlwdC4KLSAgZGVmIEdldFRlc3RzVG9SdW4oc2Vs
ZiwKLSAgICAgICAgICAgICAgICAgICAgYXJncywKLSAgICAgICAgICAgICAgICAgICAgbmFtZWRf
Y29uZmlndXJhdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgIGJ1aWx0X2NvbmZpZ3VyYXRpb25z
LAotICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9Q09ORklHUywK
LSAgICAgICAgICAgICAgICAgICAgcHl0aG9uX3Rlc3RzX3RvX3NraXA9Tm9uZSk6Ci0gICAgIiIi
RGV0ZXJtaW5lcyB3aGF0IHRlc3RzIHNob3VsZCBiZSBydW4uCi0KLSAgICBBcmdzOgotICAgICAg
YXJnczogVGhlIGxpc3Qgb2Ygbm9uLW9wdGlvbiBhcmd1bWVudHMgZnJvbSB0aGUgY29tbWFuZCBs
aW5lLgotICAgICAgbmFtZWRfY29uZmlndXJhdGlvbnM6IFRoZSBsaXN0IG9mIGNvbmZpZ3VyYXRp
b25zIHNwZWNpZmllZCB2aWEgLWMgb3IgLWEuCi0gICAgICBidWlsdF9jb25maWd1cmF0aW9uczog
VHJ1ZSBpZiAtYiBoYXMgYmVlbiBzcGVjaWZpZWQuCi0gICAgICBhdmFpbGFibGVfY29uZmlndXJh
dGlvbnM6IGEgbGlzdCBvZiBjb25maWd1cmF0aW9ucyBhdmFpbGFibGUgb24gdGhlCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3VycmVudCBwbGF0Zm9ybSwgaW5qZWN0YWJsZSBmb3IgdGVz
dGluZy4KLSAgICAgIHB5dGhvbl90ZXN0c190b19za2lwOiBhIGNvbGxlY3Rpb24gb2YgKGNvbmZp
Z3VyYXRpb24sIHB5dGhvbiB0ZXN0IG5hbWUpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRoYXQgbmVlZCB0byBiZSBza2lwcGVkLgotCi0gICAgUmV0dXJuczoKLSAgICAgIEEgdHVwbGUg
d2l0aCAyIGVsZW1lbnRzOiB0aGUgbGlzdCBvZiBQeXRob24gdGVzdHMgdG8gcnVuIGFuZCB0aGUg
bGlzdCBvZgotICAgICAgYmluYXJ5IHRlc3RzIHRvIHJ1bi4KLSAgICAiIiIKLQotICAgIGlmIG5h
bWVkX2NvbmZpZ3VyYXRpb25zID09ICdhbGwnOgotICAgICAgbmFtZWRfY29uZmlndXJhdGlvbnMg
PSAnLCcuam9pbihhdmFpbGFibGVfY29uZmlndXJhdGlvbnMpCi0KLSAgICBub3JtYWxpemVkX2Fy
Z3MgPSBbc2VsZi5vcy5wYXRoLm5vcm1wYXRoKGFyZykgZm9yIGFyZyBpbiBhcmdzXQotCi0gICAg
IyBBIGZpbmFsIGxpc3Qgb2YgYnVpbGQgZGlyZWN0b3JpZXMgd2hpY2ggd2lsbCBiZSBzZWFyY2hl
ZCBmb3IgdGhlIHRlc3QKLSAgICAjIGJpbmFyaWVzLiBGaXJzdCwgYWRkIGRpcmVjdG9yaWVzIHNw
ZWNpZmllZCBkaXJlY3RseSBvbiB0aGUgY29tbWFuZAotICAgICMgbGluZS4KLSAgICBidWlsZF9k
aXJzID0gZmlsdGVyKHNlbGYub3MucGF0aC5pc2Rpciwgbm9ybWFsaXplZF9hcmdzKQotCi0gICAg
IyBBZGRzIGJ1aWxkIGRpcmVjdG9yaWVzIHNwZWNpZmllZCB2aWEgdGhlaXIgYnVpbGQgY29uZmln
dXJhdGlvbnMgdXNpbmcKLSAgICAjIHRoZSAtYyBvciAtYSBvcHRpb25zLgotICAgIGlmIG5hbWVk
X2NvbmZpZ3VyYXRpb25zOgotICAgICAgYnVpbGRfZGlycyArPSBbc2VsZi5fR2V0QnVpbGREaXJG
b3JDb25maWcoY29uZmlnKQotICAgICAgICAgICAgICAgICAgICAgZm9yIGNvbmZpZyBpbiBuYW1l
ZF9jb25maWd1cmF0aW9ucy5zcGxpdCgnLCcpXQotCi0gICAgIyBBZGRzIEtOT1dOIEJVSUxEIERJ
UkVDVE9SSUVTIGlmIC1iIGlzIHNwZWNpZmllZC4KLSAgICBpZiBidWlsdF9jb25maWd1cmF0aW9u
czoKLSAgICAgIGJ1aWxkX2RpcnMgKz0gW3NlbGYuX0dldEJ1aWxkRGlyRm9yQ29uZmlnKGNvbmZp
ZykKLSAgICAgICAgICAgICAgICAgICAgIGZvciBjb25maWcgaW4gYXZhaWxhYmxlX2NvbmZpZ3Vy
YXRpb25zCi0gICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLm9zLnBhdGguaXNkaXIoc2VsZi5f
R2V0QnVpbGREaXJGb3JDb25maWcoY29uZmlnKSldCi0KLSAgICAjIElmIG5vIGRpcmVjdG9yaWVz
IHdlcmUgc3BlY2lmaWVkIGVpdGhlciB2aWEgLWEsIC1iLCAtYywgb3IgZGlyZWN0bHksIHVzZQot
ICAgICMgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbi4KLSAgICBlbGlmIG5vdCBidWlsZF9kaXJz
OgotICAgICAgYnVpbGRfZGlycyA9IFtzZWxmLl9HZXRCdWlsZERpckZvckNvbmZpZyhhdmFpbGFi
bGVfY29uZmlndXJhdGlvbnNbMF0pXQotCi0gICAgIyBNYWtlcyBzdXJlIHRoZXJlIGFyZSBubyBk
dXBsaWNhdGlvbnMuCi0gICAgYnVpbGRfZGlycyA9IHNldHMuU2V0KGJ1aWxkX2RpcnMpCi0KLSAg
ICBlcnJvcnNfZm91bmQgPSBGYWxzZQotICAgIGxpc3RlZF9weXRob25fdGVzdHMgPSBbXSAgIyBB
bGwgUHl0aG9uIHRlc3RzIGxpc3RlZCBvbiB0aGUgY29tbWFuZCBsaW5lLgotICAgIGxpc3RlZF9i
aW5hcnlfdGVzdHMgPSBbXSAgIyBBbGwgYmluYXJ5IHRlc3RzIGxpc3RlZCBvbiB0aGUgY29tbWFu
ZCBsaW5lLgotCi0gICAgdGVzdF9kaXIgPSBzZWxmLm9zLnBhdGgubm9ybXBhdGgoc2VsZi5vcy5w
YXRoLmpvaW4oc2VsZi5zY3JpcHRfZGlyLCAndGVzdCcpKQotCi0gICAgIyBTaWZ0cyB0aHJvdWdo
IG5vbi1kaXJlY3RvcnkgYXJndW1lbnRzIGZpc2hpbmcgZm9yIGFueSBQeXRob24gb3IgYmluYXJ5
Ci0gICAgIyB0ZXN0cyBhbmQgZGV0ZWN0aW5nIGVycm9ycy4KLSAgICBmb3IgYXJndW1lbnQgaW4g
c2V0cy5TZXQobm9ybWFsaXplZF9hcmdzKSAtIGJ1aWxkX2RpcnM6Ci0gICAgICBpZiByZS5zZWFy
Y2goUFlUSE9OX1RFU1RfUkVHRVgsIGFyZ3VtZW50KToKLSAgICAgICAgcHl0aG9uX3BhdGggPSBz
ZWxmLm9zLnBhdGguam9pbih0ZXN0X2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLm9zLnBhdGguYmFzZW5hbWUoYXJndW1lbnQpKQotICAgICAgICBpZiBz
ZWxmLm9zLnBhdGguaXNmaWxlKHB5dGhvbl9wYXRoKToKLSAgICAgICAgICBsaXN0ZWRfcHl0aG9u
X3Rlc3RzLmFwcGVuZChweXRob25fcGF0aCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICBzeXMu
c3RkZXJyLndyaXRlKCdVbmFibGUgdG8gZmluZCBQeXRob24gdGVzdCAlcycgJSBhcmd1bWVudCkK
LSAgICAgICAgICBlcnJvcnNfZm91bmQgPSBUcnVlCi0gICAgICBlbGlmIHJlLnNlYXJjaChCSU5B
UllfVEVTVF9SRUdFWCwgYXJndW1lbnQpOgotICAgICAgICAjIFRoaXMgc2NyaXB0IGFsc28gYWNj
ZXB0cyBiaW5hcnkgdGVzdCBuYW1lcyBwcmVmaXhlZCB3aXRoIHRlc3QvIGZvcgotICAgICAgICAj
IHRoZSBjb252ZW5pZW5jZSBvZiB0eXBpbmcgdGhlbSAoY2FuIHVzZSBwYXRoIGNvbXBsZXRpb25z
IGluIHRoZQotICAgICAgICAjIHNoZWxsKS4gIFN0cmlwcyB0ZXN0LyBwcmVmaXggZnJvbSB0aGUg
YmluYXJ5IHRlc3QgbmFtZXMuCi0gICAgICAgIGxpc3RlZF9iaW5hcnlfdGVzdHMuYXBwZW5kKHNl
bGYub3MucGF0aC5iYXNlbmFtZShhcmd1bWVudCkpCi0gICAgICBlbHNlOgotICAgICAgICBzeXMu
c3RkZXJyLndyaXRlKCclcyBpcyBuZWl0aGVyIHRlc3Qgbm9yIGJ1aWxkIGRpcmVjdG9yeScgJSBh
cmd1bWVudCkKLSAgICAgICAgZXJyb3JzX2ZvdW5kID0gVHJ1ZQotCi0gICAgaWYgZXJyb3JzX2Zv
dW5kOgotICAgICAgcmV0dXJuIE5vbmUKLQotICAgIHVzZXJfaGFzX2xpc3RlZF90ZXN0cyA9IGxp
c3RlZF9weXRob25fdGVzdHMgb3IgbGlzdGVkX2JpbmFyeV90ZXN0cwotCi0gICAgaWYgdXNlcl9o
YXNfbGlzdGVkX3Rlc3RzOgotICAgICAgc2VsZWN0ZWRfcHl0aG9uX3Rlc3RzID0gbGlzdGVkX3B5
dGhvbl90ZXN0cwotICAgIGVsc2U6Ci0gICAgICBzZWxlY3RlZF9weXRob25fdGVzdHMgPSBzZWxm
Ll9GaW5kRmlsZXNCeVJlZ2V4KHRlc3RfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQWVRIT05fVEVTVF9SRUdFWCkKLQotICAgICMgVE9E
Tyh2bGFkbEBnb29nbGUuY29tKTogc2tpcCB1bmJ1aWx0IFB5dGhvbiB0ZXN0cyB3aGVuIC1iIGlz
IHNwZWNpZmllZC4KLSAgICBweXRob25fdGVzdF9wYWlycyA9IFtdCi0gICAgZm9yIGRpcmVjdG9y
eSBpbiBidWlsZF9kaXJzOgotICAgICAgZm9yIHRlc3QgaW4gc2VsZWN0ZWRfcHl0aG9uX3Rlc3Rz
OgotICAgICAgICBjb25maWcgPSBfR2V0Q29uZmlnRnJvbUJ1aWxkRGlyKGRpcmVjdG9yeSkKLSAg
ICAgICAgZmlsZV9uYW1lID0gb3MucGF0aC5iYXNlbmFtZSh0ZXN0KQotICAgICAgICBpZiBweXRo
b25fdGVzdHNfdG9fc2tpcCBhbmQgKGNvbmZpZywgZmlsZV9uYW1lKSBpbiBweXRob25fdGVzdHNf
dG9fc2tpcDoKLSAgICAgICAgICBwcmludCAoJ05PVEU6ICVzIGlzIHNraXBwZWQgZm9yIGNvbmZp
Z3VyYXRpb24gJXMsIGFzIGl0IGRvZXMgbm90ICcKLSAgICAgICAgICAgICAgICAgJ3dvcmsgdGhl
cmUuJyAlIChmaWxlX25hbWUsIGNvbmZpZykpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgcHl0
aG9uX3Rlc3RfcGFpcnMuYXBwZW5kKChkaXJlY3RvcnksIHRlc3QpKQotCi0gICAgYmluYXJ5X3Rl
c3RfcGFpcnMgPSBbXQotICAgIGZvciBkaXJlY3RvcnkgaW4gYnVpbGRfZGlyczoKLSAgICAgIGlm
IHVzZXJfaGFzX2xpc3RlZF90ZXN0czoKLSAgICAgICAgYmluYXJ5X3Rlc3RfcGFpcnMuZXh0ZW5k
KAotICAgICAgICAgICAgWyhkaXJlY3RvcnksIHNlbGYub3MucGF0aC5qb2luKGRpcmVjdG9yeSwg
dGVzdCkpCi0gICAgICAgICAgICAgZm9yIHRlc3QgaW4gbGlzdGVkX2JpbmFyeV90ZXN0c10pCi0g
ICAgICBlbHNlOgotICAgICAgICB0ZXN0cyA9IHNlbGYuX0ZpbmRGaWxlc0J5UmVnZXgoZGlyZWN0
b3J5LCBCSU5BUllfVEVTVF9TRUFSQ0hfUkVHRVgpCi0gICAgICAgIGJpbmFyeV90ZXN0X3BhaXJz
LmV4dGVuZChbKGRpcmVjdG9yeSwgdGVzdCkgZm9yIHRlc3QgaW4gdGVzdHNdKQotCi0gICAgcmV0
dXJuIChweXRob25fdGVzdF9wYWlycywgYmluYXJ5X3Rlc3RfcGFpcnMpCi0KLSAgZGVmIFJ1blRl
c3RzKHNlbGYsIHB5dGhvbl90ZXN0cywgYmluYXJ5X3Rlc3RzKToKLSAgICAiIiJSdW5zIFB5dGhv
biBhbmQgYmluYXJ5IHRlc3RzIGFuZCByZXBvcnRzIHJlc3VsdHMgdG8gdGhlIHN0YW5kYXJkIG91
dHB1dC4KLQotICAgIEFyZ3M6Ci0gICAgICBweXRob25fdGVzdHM6IExpc3Qgb2YgUHl0aG9uIHRl
c3RzIHRvIHJ1biBpbiB0aGUgZm9ybSBvZiB0dXBsZXMKLSAgICAgICAgICAgICAgICAgICAgKGJ1
aWxkIGRpcmVjdG9yeSwgUHl0aG9uIHRlc3Qgc2NyaXB0KS4KLSAgICAgIGJpbmFyeV90ZXN0czog
TGlzdCBvZiBiaW5hcnkgdGVzdHMgdG8gcnVuIGluIHRoZSBmb3JtIG9mIHR1cGxlcwotICAgICAg
ICAgICAgICAgICAgICAoYnVpbGQgZGlyZWN0b3J5LCBiaW5hcnkgZmlsZSkuCi0KLSAgICBSZXR1
cm5zOgotICAgICAgVGhlIGV4aXQgY29kZSB0aGUgcHJvZ3JhbSBzaG91bGQgcGFzcyBpbnRvIHN5
cy5leGl0KCkuCi0gICAgIiIiCi0KLSAgICBpZiBweXRob25fdGVzdHMgb3IgYmluYXJ5X3Rlc3Rz
OgotICAgICAgcmVzdWx0cyA9IFtdCi0gICAgICBmb3IgZGlyZWN0b3J5LCB0ZXN0IGluIHB5dGhv
bl90ZXN0czoKLSAgICAgICAgcmVzdWx0cy5hcHBlbmQoKGRpcmVjdG9yeSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9SdW5QeXRo
b25UZXN0KHRlc3QsIGRpcmVjdG9yeSkgPT0gMCkpCi0gICAgICBmb3IgZGlyZWN0b3J5LCB0ZXN0
IGluIGJpbmFyeV90ZXN0czoKLSAgICAgICAgcmVzdWx0cy5hcHBlbmQoKGRpcmVjdG9yeSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYub3MucGF0aC5iYXNlbmFtZSh0ZXN0KSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX1J1bkJpbmFyeVRlc3QodGVzdCkgPT0gMCkpCi0KLSAg
ICAgIGZhaWxlZCA9IFsoZGlyZWN0b3J5LCB0ZXN0KQotICAgICAgICAgICAgICAgIGZvciAoZGly
ZWN0b3J5LCB0ZXN0LCBzdWNjZXNzKSBpbiByZXN1bHRzCi0gICAgICAgICAgICAgICAgaWYgbm90
IHN1Y2Nlc3NdCi0gICAgICBwcmludAotICAgICAgcHJpbnQgJyVkIHRlc3RzIHJ1bi4nICUgbGVu
KHJlc3VsdHMpCi0gICAgICBpZiBmYWlsZWQ6Ci0gICAgICAgIHByaW50ICdUaGUgZm9sbG93aW5n
ICVkIHRlc3RzIGZhaWxlZDonICUgbGVuKGZhaWxlZCkKLSAgICAgICAgZm9yIChkaXJlY3Rvcnks
IHRlc3QpIGluIGZhaWxlZDoKLSAgICAgICAgICBwcmludCAnJXMgaW4gJXMnICUgKHRlc3QsIGRp
cmVjdG9yeSkKLSAgICAgICAgcmV0dXJuIDEKLSAgICAgIGVsc2U6Ci0gICAgICAgIHByaW50ICdB
bGwgdGVzdHMgcGFzc2VkIScKLSAgICBlbHNlOiAgIyBObyB0ZXN0cyBkZWZpbmVkCi0gICAgICBw
cmludCAnTm90aGluZyB0byB0ZXN0IC0gbm8gdGVzdHMgc3BlY2lmaWVkIScKLQotICAgIHJldHVy
biAwCi0KLQotZGVmIFBhcnNlQXJncyhwcm9qZWN0X25hbWUsIGFyZ3Y9Tm9uZSwgaGVscF9jYWxs
YmFjaz1Ob25lKToKLSAgIiIiUGFyc2VzIHRoZSBvcHRpb25zIHJ1bl90ZXN0cy5weSB1c2VzLiIi
IgotCi0gICMgU3VwcHJlc3NlcyBsaW50IHdhcm5pbmcgb24gdW51c2VkIGFyZ3VtZW50cy4gIFRo
ZXNlIGFyZ3VtZW50cyBhcmUKLSAgIyByZXF1aXJlZCBieSBvcHRwYXJzZSwgZXZlbiB0aG91Z2gg
dGhleSBhcmUgdW51c2VkLgotICAjIHB5bGludDogZGlzYWJsZS1tc2c9VzA2MTMKLSAgZGVmIFBy
aW50SGVscChvcHRpb24sIG9wdCwgdmFsdWUsIHBhcnNlcik6Ci0gICAgcHJpbnQgSEVMUF9NU0cg
JSB7J3Byb2onOiBwcm9qZWN0X25hbWV9Ci0gICAgc3lzLmV4aXQoMSkKLQotICBwYXJzZXIgPSBv
cHRwYXJzZS5PcHRpb25QYXJzZXIoKQotICBwYXJzZXIuYWRkX29wdGlvbignLWMnLAotICAgICAg
ICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlJywKLSAgICAgICAgICAgICAgICAgICAgZGVzdD0n
Y29uZmlndXJhdGlvbnMnLAotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUpCi0gIHBh
cnNlci5hZGRfb3B0aW9uKCctYScsCi0gICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVf
Y29uc3QnLAotICAgICAgICAgICAgICAgICAgICBkZXN0PSdjb25maWd1cmF0aW9ucycsCi0gICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3Q9
J2FsbCcpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctYicsCi0gICAgICAgICAgICAgICAgICAgIGFj
dGlvbj0nc3RvcmVfY29uc3QnLAotICAgICAgICAgICAgICAgICAgICBkZXN0PSdidWlsdF9jb25m
aWd1cmF0aW9ucycsCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnN0PVRydWUpCi0gICMgUmVwbGFjZXMgdGhlIGJ1aWx0LWluIGhlbHAg
d2l0aCBvdXJzLgotICBwYXJzZXIucmVtb3ZlX29wdGlvbignLWgnKQotICBwYXJzZXIuYWRkX29w
dGlvbignLWgnLCAnLS1oZWxwJywKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdjYWxsYmFj
aycsCi0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrPWhlbHBfY2FsbGJhY2sgb3IgUHJpbnRI
ZWxwKQotICByZXR1cm4gcGFyc2VyLnBhcnNlX2FyZ3MoYXJndikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3RzX3V0aWxfdGVzdC5weSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3RzX3V0aWxfdGVzdC5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggOWM1NTcyNmZkNTBiMmEwYzI1MDY4MTQxZDdlNjY5NDNmMGI2ZGU3
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0c191dGlsX3Rlc3QucHkKKysrIC9kZXYvbnVs
bApAQCAtMSw2NzYgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdo
dCAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0j
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi0iIiJUZXN0cyBmb3IgcnVuX3Rlc3RzX3V0aWwucHkgdGVzdCBydW5uZXIgc2NyaXB0LiIi
IgotCi1fX2F1dGhvcl9fID0gJ3ZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpJwotCi1pbXBv
cnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNldHMKLWltcG9ydCB1bml0dGVzdAotCi1pbXBvcnQg
cnVuX3Rlc3RzX3V0aWwKLQotCi1HVEVTVF9EQkdfRElSID0gJ3Njb25zL2J1aWxkL2RiZy9ndGVz
dC9zY29ucycKLUdURVNUX09QVF9ESVIgPSAnc2NvbnMvYnVpbGQvb3B0L2d0ZXN0L3Njb25zJwot
R1RFU1RfT1RIRVJfRElSID0gJ3Njb25zL2J1aWxkL290aGVyL2d0ZXN0L3Njb25zJwotCi0KLWRl
ZiBBZGRFeGVFeHRlbnNpb24ocGF0aCk6Ci0gICIiIkFwcGVuZHMgLmV4ZSB0byB0aGUgcGF0aCBv
biBXaW5kb3dzIG9yIEN5Z3dpbi4iIiIKLQotICBpZiBydW5fdGVzdHNfdXRpbC5JU19XSU5ET1dT
IG9yIHJ1bl90ZXN0c191dGlsLklTX0NZR1dJTjoKLSAgICByZXR1cm4gcGF0aCArICcuZXhlJwot
ICBlbHNlOgotICAgIHJldHVybiBwYXRoCi0KLQotY2xhc3MgRmFrZVBhdGgob2JqZWN0KToKLSAg
IiIiQSBmYWtlIG9zLnBhdGggbW9kdWxlIGZvciB0ZXN0aW5nLiIiIgotCi0gIGRlZiBfX2luaXRf
XyhzZWxmLCBjdXJyZW50X2Rpcj1vcy5nZXRjd2QoKSwga25vd25fcGF0aHM9Tm9uZSk6Ci0gICAg
c2VsZi5jdXJyZW50X2RpciA9IGN1cnJlbnRfZGlyCi0gICAgc2VsZi50cmVlID0ge30KLSAgICBz
ZWxmLnBhdGhfc2VwYXJhdG9yID0gb3Muc2VwCi0KLSAgICAjIGtub3duX3BhdGhzIGNvbnRhaW5z
IGVpdGhlciBhYnNvbHV0ZSBvciByZWxhdGl2ZSBwYXRocy4gUmVsYXRpdmUgcGF0aHMKLSAgICAj
IGFyZSBhYnNvbHV0aXplZCB3aXRoIHNlbGYuY3VycmVudF9kaXIuCi0gICAgaWYga25vd25fcGF0
aHM6Ci0gICAgICBzZWxmLl9BZGRQYXRocyhrbm93bl9wYXRocykKLQotICBkZWYgX0FkZFBhdGgo
c2VsZiwgcGF0aCk6Ci0gICAgZW5kc193aXRoX3NsYXNoID0gcGF0aC5lbmRzd2l0aCgnLycpCi0g
ICAgcGF0aCA9IHNlbGYuYWJzcGF0aChwYXRoKQotICAgIGlmIGVuZHNfd2l0aF9zbGFzaDoKLSAg
ICAgIHBhdGggKz0gc2VsZi5wYXRoX3NlcGFyYXRvcgotICAgIG5hbWVfbGlzdCA9IHBhdGguc3Bs
aXQoc2VsZi5wYXRoX3NlcGFyYXRvcikKLSAgICB0cmVlID0gc2VsZi50cmVlCi0gICAgZm9yIG5h
bWUgaW4gbmFtZV9saXN0WzotMV06Ci0gICAgICBpZiBub3QgbmFtZToKLSAgICAgICAgY29udGlu
dWUKLSAgICAgIGlmIG5hbWUgaW4gdHJlZToKLSAgICAgICAgdHJlZSA9IHRyZWVbbmFtZV0KLSAg
ICAgIGVsc2U6Ci0gICAgICAgIHRyZWVbbmFtZV0gPSB7fQotICAgICAgICB0cmVlID0gdHJlZVtu
YW1lXQotCi0gICAgbmFtZSA9IG5hbWVfbGlzdFstMV0KLSAgICBpZiBuYW1lOgotICAgICAgaWYg
bmFtZSBpbiB0cmVlOgotICAgICAgICBhc3NlcnQgdHJlZVtuYW1lXSA9PSAxCi0gICAgICBlbHNl
OgotICAgICAgICB0cmVlW25hbWVdID0gMQotCi0gIGRlZiBfQWRkUGF0aHMoc2VsZiwgcGF0aHMp
OgotICAgIGZvciBwYXRoIGluIHBhdGhzOgotICAgICAgc2VsZi5fQWRkUGF0aChwYXRoKQotCi0g
IGRlZiBQYXRoRWxlbWVudChzZWxmLCBwYXRoKToKLSAgICAiIiJSZXR1cm5zIGFuIGludGVybmFs
IHJlcHJlc2VudGF0aW9uIG9mIGRpcmVjdG9yeSB0cmVlIGVudHJ5IGZvciBwYXRoLiIiIgotICAg
IHRyZWUgPSBzZWxmLnRyZWUKLSAgICBuYW1lX2xpc3QgPSBzZWxmLmFic3BhdGgocGF0aCkuc3Bs
aXQoc2VsZi5wYXRoX3NlcGFyYXRvcikKLSAgICBmb3IgbmFtZSBpbiBuYW1lX2xpc3Q6Ci0gICAg
ICBpZiBub3QgbmFtZToKLSAgICAgICAgY29udGludWUKLSAgICAgIHRyZWUgPSB0cmVlLmdldChu
YW1lLCBOb25lKQotICAgICAgaWYgdHJlZSBpcyBOb25lOgotICAgICAgICBicmVhawotCi0gICAg
cmV0dXJuIHRyZWUKLQotICAjIFNpbGVuY2VzIHB5bGludCB3YXJuaW5nIGFib3V0IHVzaW5nIHN0
YW5kYXJkIG5hbWVzLgotICAjIHB5bGludDogZGlzYWJsZS1tc2c9QzY0MDkKLSAgZGVmIG5vcm1w
YXRoKHNlbGYsIHBhdGgpOgotICAgIHJldHVybiBvcy5wYXRoLm5vcm1wYXRoKHBhdGgpCi0KLSAg
ZGVmIGFic3BhdGgoc2VsZiwgcGF0aCk6Ci0gICAgcmV0dXJuIHNlbGYubm9ybXBhdGgob3MucGF0
aC5qb2luKHNlbGYuY3VycmVudF9kaXIsIHBhdGgpKQotCi0gIGRlZiBpc2ZpbGUoc2VsZiwgcGF0
aCk6Ci0gICAgcmV0dXJuIHNlbGYuUGF0aEVsZW1lbnQoc2VsZi5hYnNwYXRoKHBhdGgpKSA9PSAx
Ci0KLSAgZGVmIGlzZGlyKHNlbGYsIHBhdGgpOgotICAgIHJldHVybiB0eXBlKHNlbGYuUGF0aEVs
ZW1lbnQoc2VsZi5hYnNwYXRoKHBhdGgpKSkgPT0gdHlwZShkaWN0KCkpCi0KLSAgZGVmIGJhc2Vu
YW1lKHNlbGYsIHBhdGgpOgotICAgIHJldHVybiBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpCi0KLSAg
ZGVmIGRpcm5hbWUoc2VsZiwgcGF0aCk6Ci0gICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShwYXRo
KQotCi0gIGRlZiBqb2luKHNlbGYsICprYXJncyk6Ci0gICAgcmV0dXJuIG9zLnBhdGguam9pbigq
a2FyZ3MpCi0KLQotY2xhc3MgRmFrZU9zKG9iamVjdCk6Ci0gICIiIkEgZmFrZSBvcyBtb2R1bGUg
Zm9yIHRlc3RpbmcuIiIiCi0gIFBfV0FJVCA9IG9zLlBfV0FJVAotCi0gIGRlZiBfX2luaXRfXyhz
ZWxmLCBmYWtlX3BhdGhfbW9kdWxlKToKLSAgICBzZWxmLnBhdGggPSBmYWtlX3BhdGhfbW9kdWxl
Ci0KLSAgICAjIFNvbWUgbWV0aG9kcy9hdHRyaWJ1dGVzIGFyZSBkZWxlZ2F0ZWQgdG8gdGhlIHJl
YWwgb3MgbW9kdWxlLgotICAgIHNlbGYuZW52aXJvbiA9IG9zLmVudmlyb24KLQotICAjIHB5bGlu
dDogZGlzYWJsZS1tc2c9QzY0MDkKLSAgZGVmIGxpc3RkaXIoc2VsZiwgcGF0aCk6Ci0gICAgYXNz
ZXJ0IHNlbGYucGF0aC5pc2RpcihwYXRoKQotICAgIHJldHVybiBzZWxmLnBhdGguUGF0aEVsZW1l
bnQocGF0aCkuaXRlcmtleXMoKQotCi0gIGRlZiBzcGF3bnYoc2VsZiwgd2FpdCwgZXhlY3V0YWJs
ZSwgKmthcmdzKToKLSAgICBhc3NlcnQgd2FpdCA9PSBGYWtlT3MuUF9XQUlUCi0gICAgcmV0dXJu
IHNlbGYuc3Bhd25faW1wbChleGVjdXRhYmxlLCBrYXJncykKLQotCi1jbGFzcyBHZXRUZXN0c1Rv
UnVuVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICIiIkV4ZXJjaXNlcyBUZXN0UnVubmVyLkdl
dFRlc3RzVG9SdW4uIiIiCi0KLSAgZGVmIE5vcm1hbGl6ZUdldFRlc3RzVG9SdW5SZXN1bHRzKHNl
bGYsIHJlc3VsdHMpOgotICAgICIiIk5vcm1hbGl6ZXMgcGF0aCBkYXRhIHJldHVybmVkIGZyb20g
R2V0VGVzdHNUb1J1biBmb3IgY29tcGFyaXNvbi4iIiIKLQotICAgIGRlZiBOb3JtYWxpemVQeXRo
b25UZXN0UGFpcihwYWlyKToKLSAgICAgICIiIk5vcm1hbGl6ZXMgcGF0aCBkYXRhIGluIHRoZSAo
ZGlyZWN0b3J5LCBweXRob25fc2NyaXB0KSBwYWlyLiIiIgotCi0gICAgICByZXR1cm4gKG9zLnBh
dGgubm9ybXBhdGgocGFpclswXSksIG9zLnBhdGgubm9ybXBhdGgocGFpclsxXSkpCi0KLSAgICBk
ZWYgTm9ybWFsaXplQmluYXJ5VGVzdFBhaXIocGFpcik6Ci0gICAgICAiIiJOb3JtYWxpemVzIHBh
dGggZGF0YSBpbiB0aGUgKGRpcmVjdG9yeSwgYmluYXJ5X2V4ZWN1dGFibGUpIHBhaXIuIiIiCi0K
LSAgICAgIGRpcmVjdG9yeSwgZXhlY3V0YWJsZSA9IG1hcChvcy5wYXRoLm5vcm1wYXRoLCBwYWly
KQotCi0gICAgICAjIE9uIFdpbmRvd3MgYW5kIEN5Z3dpbiwgdGhlIHRlc3QgZmlsZSBuYW1lcyBo
YXZlIHRoZSAuZXhlIGV4dGVuc2lvbiwgYnV0Ci0gICAgICAjIHRoZXkgY2FuIGJlIGludm9rZWQg
ZWl0aGVyIGJ5IG5hbWUgb3IgYnkgbmFtZStleHRlbnNpb24uIE91ciB0ZXN0IG11c3QKLSAgICAg
ICMgYWNjb21tb2RhdGUgYm90aCBzaXR1YXRpb25zLgotICAgICAgaWYgcnVuX3Rlc3RzX3V0aWwu
SVNfV0lORE9XUyBvciBydW5fdGVzdHNfdXRpbC5JU19DWUdXSU46Ci0gICAgICAgIGV4ZWN1dGFi
bGUgPSByZS5zdWIocidcLmV4ZSQnLCAnJywgZXhlY3V0YWJsZSkKLSAgICAgIHJldHVybiAoZGly
ZWN0b3J5LCBleGVjdXRhYmxlKQotCi0gICAgcHl0aG9uX3Rlc3RzID0gc2V0cy5TZXQobWFwKE5v
cm1hbGl6ZVB5dGhvblRlc3RQYWlyLCByZXN1bHRzWzBdKSkKLSAgICBiaW5hcnlfdGVzdHMgPSBz
ZXRzLlNldChtYXAoTm9ybWFsaXplQmluYXJ5VGVzdFBhaXIsIHJlc3VsdHNbMV0pKQotICAgIHJl
dHVybiAocHl0aG9uX3Rlc3RzLCBiaW5hcnlfdGVzdHMpCi0KLSAgZGVmIEFzc2VydFJlc3VsdHNF
cXVhbChzZWxmLCByZXN1bHRzLCBleHBlY3RlZCk6Ci0gICAgIiIiQXNzZXJ0cyByZXN1bHRzIHJl
dHVybmVkIGJ5IEdldFRlc3RzVG9SdW4gZXF1YWwgdG8gZXhwZWN0ZWQgcmVzdWx0cy4iIiIKLQot
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5Ob3JtYWxpemVHZXRUZXN0c1RvUnVuUmVzdWx0cyhy
ZXN1bHRzKSwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuTm9ybWFsaXplR2V0VGVzdHNUb1J1
blJlc3VsdHMoZXhwZWN0ZWQpLAotICAgICAgICAgICAgICAgICAgICAgJ0luY29ycmVjdCBzZXQg
b2YgdGVzdHMgcmV0dXJuZWQ6XG4lc1xuZXhwZWN0ZWQ6XG4lcycgJQotICAgICAgICAgICAgICAg
ICAgICAgKHJlc3VsdHMsIGV4cGVjdGVkKSkKLQotICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgc2Vs
Zi5mYWtlX29zID0gRmFrZU9zKEZha2VQYXRoKAotICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRo
LmFic3BhdGgob3MucGF0aC5kaXJuYW1lKHJ1bl90ZXN0c191dGlsLl9fZmlsZV9fKSksCi0gICAg
ICAgIGtub3duX3BhdGhzPVtBZGRFeGVFeHRlbnNpb24oR1RFU1RfREJHX0RJUiArICcvZ3Rlc3Rf
dW5pdHRlc3QnKSwKLSAgICAgICAgICAgICAgICAgICAgIEFkZEV4ZUV4dGVuc2lvbihHVEVTVF9P
UFRfRElSICsgJy9ndGVzdF91bml0dGVzdCcpLAotICAgICAgICAgICAgICAgICAgICAgJ3Rlc3Qv
Z3Rlc3RfY29sb3JfdGVzdC5weSddKSkKLSAgICBzZWxmLmZha2VfY29uZmlndXJhdGlvbnMgPSBb
J2RiZycsICdvcHQnXQotICAgIHNlbGYudGVzdF9ydW5uZXIgPSBydW5fdGVzdHNfdXRpbC5UZXN0
UnVubmVyKHNjcmlwdF9kaXI9Jy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluamVjdGVkX29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3RlZF9zdWJwcm9jZXNzPU5v
bmUpCi0KLSAgZGVmIHRlc3RCaW5hcnlUZXN0c09ubHkoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2Vz
IEdldFRlc3RzVG9SdW4gd2l0aCBwYXJhbWV0ZXJzIGRlc2lnbmF0aW5nIGJpbmFyeSB0ZXN0cyBv
bmx5LiIiIgotCi0gICAgIyBBIGRlZmF1bHQgYnVpbGQuCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRz
RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAg
ICAgIFsnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFs
c2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZp
Z3VyYXRpb25zKSwKLSAgICAgICAgKFtdLAotICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVT
VF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIEFuIGV4cGxpY2l0bHkg
c3BlY2lmaWVkIGRpcmVjdG9yeS4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAg
ICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgW0dURVNUX0RC
R19ESVIsICdndGVzdF91bml0dGVzdCddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBG
YWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29u
ZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdU
RVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgQSBwYXJ0aWN1bGFy
IGNvbmZpZ3VyYXRpb24uCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNl
bGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRl
c3QnXSwKLSAgICAgICAgICAgICdvdGhlcicsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAg
ICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAot
ICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX09USEVSX0RJUiwgR1RFU1RfT1RIRVJfRElS
ICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIEFsbCBhdmFpbGFibGUgY29uZmlndXJh
dGlvbnMKLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1
bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF91bml0dGVzdCddLAotICAg
ICAgICAgICAgJ2FsbCcsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJs
ZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10s
Ci0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0
ZXN0JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIsIEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0
X3VuaXR0ZXN0JyldKSkKLQotICAgICMgQWxsIGJ1aWx0IGNvbmZpZ3VyYXRpb25zICh1bmJ1aWx0
IGRvbid0IGNhdXNlIGZhaWx1cmUpLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAg
ICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0
X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIFRydWUsCi0gICAgICAg
ICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zICsg
Wyd1bmJ1aWx0J10pLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdU
RVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgKEdURVNUX09QVF9E
SVIsIEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgQSBjb21i
aW5hdGlvbiBvZiBhbiBleHBsaWNpdCBkaXJlY3RvcnkgYW5kIGEgY29uZmlndXJhdGlvbi4KLSAg
ICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRU
ZXN0c1RvUnVuKAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIsICdndGVzdF91bml0dGVzdCdd
LAotICAgICAgICAgICAgJ29wdCcsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2
YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAg
ICAoW10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0
X3VuaXR0ZXN0JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIsIEdURVNUX09QVF9ESVIgKyAn
L2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgU2FtZSB0ZXN0IHNwZWNpZmllZCBpbiBhbiBl
eHBsaWNpdCBkaXJlY3RvcnkgYW5kIHZpYSBhIGNvbmZpZ3VyYXRpb24uCi0gICAgc2VsZi5Bc3Nl
cnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigK
LSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAg
ICAgICdkYmcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29u
ZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFtdLAotICAg
ICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcp
XSkpCi0KLSAgICAjIEFsbCBidWlsdCBjb25maWd1cmF0aW9ucyArIGV4cGxpY2l0IGRpcmVjdG9y
eSArIGV4cGxpY2l0IGNvbmZpZ3VyYXRpb24uCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwo
Ci0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtH
VEVTVF9EQkdfRElSLCAnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICdvcHQnLAotICAg
ICAgICAgICAgVHJ1ZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxm
LmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX0RC
R19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgKEdU
RVNUX09QVF9ESVIsIEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICBk
ZWYgdGVzdFB5dGhvblRlc3RzT25seShzZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgR2V0VGVzdHNU
b1J1biB3aXRoIHBhcmFtZXRlcnMgZGVzaWduYXRpbmcgUHl0aG9uIHRlc3RzIG9ubHkuIiIiCi0K
LSAgICAjIEEgZGVmYXVsdCBidWlsZC4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAg
ICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVz
dF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAot
ICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0
aW9ucyksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Qu
cHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEFuIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGRp
cmVjdG9yeS4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0
X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIsICd0ZXN0
L2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFs
c2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZp
Z3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3Jf
dGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAgICMgQSBwYXJ0aWN1bGFyIGNvbmZpZ3Vy
YXRpb24uCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9y
dW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfY29sb3JfdGVzdC5weSdd
LAotICAgICAgICAgICAgJ290aGVyJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAg
YXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAg
ICAgIChbKEdURVNUX09USEVSX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAg
ICAgICAgIFtdKSkKLQotICAgICMgQWxsIGF2YWlsYWJsZSBjb25maWd1cmF0aW9ucwotICAgIHNl
bGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3Rz
VG9SdW4oCi0gICAgICAgICAgICBbJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weSddLAotICAgICAg
ICAgICAgJ2FsbCcsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9j
b25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoWyhHVEVT
VF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyksCi0gICAgICAgICAgKEdURVNU
X09QVF9ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAgICBbXSkpCi0K
LSAgICAjIEFsbCBidWlsdCBjb25maWd1cmF0aW9ucyAodW5idWlsdCBkb24ndCBjYXVzZSBmYWls
dXJlKS4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1
bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF9jb2xvcl90ZXN0LnB5J10s
Ci0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIFRydWUsCi0gICAgICAgICAgICBhdmFpbGFi
bGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zICsgWyd1bmJ1aWx0J10p
LAotICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5Jyks
Ci0gICAgICAgICAgKEdURVNUX09QVF9ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0s
Ci0gICAgICAgICBbXSkpCi0KLSAgICAjIEEgY29tYmluYXRpb24gb2YgYW4gZXhwbGljaXQgZGly
ZWN0b3J5IGFuZCBhIGNvbmZpZ3VyYXRpb24uCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwo
Ci0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtH
VEVTVF9EQkdfRElSLCAnZ3Rlc3RfY29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJ29wdCcs
Ci0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9u
cz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAn
dGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIsICd0
ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIFNhbWUg
dGVzdCBzcGVjaWZpZWQgaW4gYW4gZXhwbGljaXQgZGlyZWN0b3J5IGFuZCB2aWEgYSBjb25maWd1
cmF0aW9uLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3Rf
cnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbR1RFU1RfREJHX0RJUiwgJ2d0ZXN0
X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICdkYmcnLAotICAgICAgICAgICAgRmFsc2Us
Ci0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3Vy
YXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVz
dC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAgICMgQWxsIGJ1aWx0IGNvbmZpZ3VyYXRpb25z
ICsgZXhwbGljaXQgZGlyZWN0b3J5ICsgZXhwbGljaXQgY29uZmlndXJhdGlvbi4KLSAgICBzZWxm
LkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1Rv
UnVuKAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIsICdndGVzdF9jb2xvcl90ZXN0LnB5J10s
Ci0gICAgICAgICAgICAnb3B0JywKLSAgICAgICAgICAgIFRydWUsCi0gICAgICAgICAgICBhdmFp
bGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAg
KFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpLAotICAgICAgICAg
IChHVEVTVF9PUFRfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyldLAotICAgICAgICAg
W10pKQotCi0gIGRlZiB0ZXN0Q29tYmluYXRpb25PZkJpbmFyeUFuZFB5dGhvblRlc3RzKHNlbGYp
OgotICAgICIiIkV4ZXJjaXNlcyBHZXRUZXN0c1RvUnVuIHdpdGggbWl4ZWQgYmluYXJ5L1B5dGhv
biB0ZXN0cy4iIiIKLQotICAgICMgVXNlIG9ubHkgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZvciB0
aGlzIHRlc3QuCi0KLSAgICAjIE5laXRoZXIgYmluYXJ5IG5vciBQeXRob24gdGVzdHMgYXJlIHNw
ZWNpZmllZCBzbyBmaW5kIGFsbC4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAg
ICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgW10sCi0gICAg
ICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2Nv
bmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbKEdURVNU
X0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAgICBbKEdURVNU
X0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMg
U3BlY2lmeWluZyBib3RoIGJpbmFyeSBhbmQgUHl0aG9uIHRlc3RzLgotICAgIHNlbGYuQXNzZXJ0
UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0g
ICAgICAgICAgICBbJ2d0ZXN0X3VuaXR0ZXN0JywgJ2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAg
ICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVf
Y29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RF
U1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFsoR1RF
U1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pKQotCi0gICAg
IyBTcGVjaWZ5aW5nIGJpbmFyeSB0ZXN0cyBzdXBwcmVzc2VzIFB5dGhvbiB0ZXN0cy4KLSAgICBz
ZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0
c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF91bml0dGVzdCddLAotICAgICAgICAgICAgJycs
Ci0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9u
cz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdU
RVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAg
IyBTcGVjaWZ5aW5nIFB5dGhvbiB0ZXN0cyBzdXBwcmVzc2VzIGJpbmFyeSB0ZXN0cy4KLSAgICBz
ZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0
c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAg
ICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3Vy
YXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbKEdURVNUX0RCR19E
SVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgZGVm
IHRlc3RJZ25vcmVzTm9uVGVzdEZpbGVzKHNlbGYpOgotICAgICIiIlZlcmlmaWVzIHRoYXQgR2V0
VGVzdHNUb1J1biBpZ25vcmVzIG5vbi10ZXN0IGZpbGVzIGluIHRoZSBmaWxlc3lzdGVtLiIiIgot
Ci0gICAgc2VsZi5mYWtlX29zID0gRmFrZU9zKEZha2VQYXRoKAotICAgICAgICBjdXJyZW50X2Rp
cj1vcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKHJ1bl90ZXN0c191dGlsLl9fZmlsZV9f
KSksCi0gICAgICAgIGtub3duX3BhdGhzPVtBZGRFeGVFeHRlbnNpb24oR1RFU1RfREJHX0RJUiAr
ICcvZ3Rlc3Rfbm9udGVzdCcpLAotICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QvJ10pKQotICAg
IHNlbGYudGVzdF9ydW5uZXIgPSBydW5fdGVzdHNfdXRpbC5UZXN0UnVubmVyKHNjcmlwdF9kaXI9
Jy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
amVjdGVkX29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmplY3RlZF9zdWJwcm9jZXNzPU5vbmUpCi0gICAgc2VsZi5Bc3Nl
cnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigK
LSAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBUcnVlLAotICAg
ICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9u
cyksCi0gICAgICAgIChbXSwgW10pKQotCi0gIGRlZiB0ZXN0V29ya3NGcm9tRGlmZmVyZW50RGly
KHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBHZXRUZXN0c1RvUnVuIGZyb20gYSBkaXJlY3Rvcnkg
ZGlmZmVyZW50IGZyb20gcnVuX3Rlc3QucHkncy4iIiIKLQotICAgICMgSGVyZSB3ZSBzaW11bGF0
ZSBhbiB0ZXN0IHNjcmlwdCBpbiBkaXJlY3RvcnkgL2QvIGNhbGxlZCBmcm9tIHRoZQotICAgICMg
ZGlyZWN0b3J5IC9hL2IvYy8uCi0gICAgc2VsZi5mYWtlX29zID0gRmFrZU9zKEZha2VQYXRoKAot
ICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRoLmFic3BhdGgoJy9hL2IvYycpLAotICAgICAgICBr
bm93bl9wYXRocz1bCi0gICAgICAgICAgICAnL2EvYi9jLycsCi0gICAgICAgICAgICBBZGRFeGVF
eHRlbnNpb24oJy9kLycgKyBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpLAotICAg
ICAgICAgICAgQWRkRXhlRXh0ZW5zaW9uKCcvZC8nICsgR1RFU1RfT1BUX0RJUiArICcvZ3Rlc3Rf
dW5pdHRlc3QnKSwKLSAgICAgICAgICAgICcvZC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknXSkp
Ci0gICAgc2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zID0gWydkYmcnLCAnb3B0J10KLSAgICBzZWxm
LnRlc3RfcnVubmVyID0gcnVuX3Rlc3RzX3V0aWwuVGVzdFJ1bm5lcihzY3JpcHRfZGlyPScvZC8n
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluamVj
dGVkX29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbmplY3RlZF9zdWJwcm9jZXNzPU5vbmUpCi0gICAgIyBBIGJpbmFyeSB0
ZXN0LgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVu
bmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAg
ICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2Nv
bmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbXSwKLSAg
ICAgICAgIFsoJy9kLycgKyBHVEVTVF9EQkdfRElSLCAnL2QvJyArIEdURVNUX0RCR19ESVIgKyAn
L2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgQSBQeXRob24gdGVzdC4KLSAgICBzZWxmLkFz
c2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVu
KAotICAgICAgICAgICAgWydndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnJywK
LSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25z
PXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbKCcvZC8nICsgR1RFU1RfREJH
X0RJUiwgJy9kL3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwgW10pKQotCi0gIGRlZiB0ZXN0
Tm9uVGVzdEJpbmFyeShzZWxmKToKLSAgICAiIiJFeGVyY2lzZXMgR2V0VGVzdHNUb1J1biB3aXRo
IGEgbm9uLXRlc3QgcGFyYW1ldGVyLiIiIgotCi0gICAgc2VsZi5hc3NlcnRfKAotICAgICAgICBu
b3Qgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF91
bml0dGVzdF9ub3RfcmVhbGx5J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNl
LAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1
cmF0aW9ucykpCi0KLSAgZGVmIHRlc3ROb25FeGlzdGluZ1B5dGhvblRlc3Qoc2VsZik6Ci0gICAg
IiIiRXhlcmNpc2VzIEdldFRlc3RzVG9SdW4gd2l0aCBhIG5vbi1leGlzdGVudCBQeXRob24gdGVz
dCBwYXJhbWV0ZXIuIiIiCi0KLSAgICBzZWxmLmFzc2VydF8oCi0gICAgICAgIG5vdCBzZWxmLnRl
c3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ25vbmV4aXN0ZW50X3Rlc3Qu
cHknXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBh
dmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSkKLQotICBp
ZiBydW5fdGVzdHNfdXRpbC5JU19XSU5ET1dTIG9yIHJ1bl90ZXN0c191dGlsLklTX0NZR1dJTjoK
LQotICAgIGRlZiB0ZXN0RG9lc05vdFBpY2tOb25FeGVGaWxlc09uV2luZG93cyhzZWxmKToKLSAg
ICAgICIiIlZlcmlmaWVzIHRoYXQgR2V0VGVzdHNUb1J1biBkb2VzIG5vdCBmaW5kIF90ZXN0IGZp
bGVzIG9uIFdpbmRvd3MuIiIiCi0KLSAgICAgIHNlbGYuZmFrZV9vcyA9IEZha2VPcyhGYWtlUGF0
aCgKLSAgICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1l
KHJ1bl90ZXN0c191dGlsLl9fZmlsZV9fKSksCi0gICAgICAgICAga25vd25fcGF0aHM9WycvZC8n
ICsgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdGVzdCcsICd0ZXN0LyddKSkKLSAgICAgIHNlbGYu
dGVzdF9ydW5uZXIgPSBydW5fdGVzdHNfdXRpbC5UZXN0UnVubmVyKHNjcmlwdF9kaXI9Jy4nLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5qZWN0
ZWRfb3M9c2VsZi5mYWtlX29zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5qZWN0ZWRfc3VicHJvY2Vzcz1Ob25lKQotICAgICAgc2VsZi5Bc3Nl
cnRSZXN1bHRzRXF1YWwoCi0gICAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVu
KAotICAgICAgICAgICAgICBbXSwKLSAgICAgICAgICAgICAgJycsCi0gICAgICAgICAgICAgIFRy
dWUsCi0gICAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29u
ZmlndXJhdGlvbnMpLAotICAgICAgICAgIChbXSwgW10pKQotCi0KLWNsYXNzIFJ1blRlc3RzVGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICIiIkV4ZXJjaXNlcyBUZXN0UnVubmVyLlJ1blRlc3Rz
LiIiIgotCi0gIGRlZiBTcGF3blN1Y2Nlc3Moc2VsZiwgdW51c2VkX2V4ZWN1dGFibGUsIHVudXNl
ZF9hcmd2KToKLSAgICAiIiJGYWtlcyB0ZXN0IHN1Y2Nlc3MgYnkgcmV0dXJuaW5nIDAgYXMgYW4g
ZXhpdCBjb2RlLiIiIgotCi0gICAgc2VsZi5udW1fc3Bhd25fY2FsbHMgKz0gMQotICAgIHJldHVy
biAwCi0KLSAgZGVmIFNwYXduRmFpbHVyZShzZWxmLCB1bnVzZWRfZXhlY3V0YWJsZSwgdW51c2Vk
X2FyZ3YpOgotICAgICIiIkZha2VzIHRlc3Qgc3VjY2VzcyBieSByZXR1cm5pbmcgMSBhcyBhbiBl
eGl0IGNvZGUuIiIiCi0KLSAgICBzZWxmLm51bV9zcGF3bl9jYWxscyArPSAxCi0gICAgcmV0dXJu
IDEKLQotICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgc2VsZi5mYWtlX29zID0gRmFrZU9zKEZha2VQ
YXRoKAotICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1l
KHJ1bl90ZXN0c191dGlsLl9fZmlsZV9fKSksCi0gICAgICAgIGtub3duX3BhdGhzPVsKLSAgICAg
ICAgICAgIEFkZEV4ZUV4dGVuc2lvbihHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcp
LAotICAgICAgICAgICAgQWRkRXhlRXh0ZW5zaW9uKEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0X3Vu
aXR0ZXN0JyksCi0gICAgICAgICAgICAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5J10pKQotICAg
IHNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyA9IFsnZGJnJywgJ29wdCddCi0gICAgc2VsZi50ZXN0
X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5uZXIoCi0gICAgICAgIHNjcmlwdF9kaXI9
b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSBvciAnLicsCi0gICAgICAgIGluamVjdGVkX29zPXNl
bGYuZmFrZV9vcywKLSAgICAgICAgaW5qZWN0ZWRfc3VicHJvY2Vzcz1Ob25lKQotICAgIHNlbGYu
bnVtX3NwYXduX2NhbGxzID0gMCAgIyBBIG51bWJlciBvZiBjYWxscyB0byBzcGF3bi4KLQotICBk
ZWYgdGVzdFJ1blB5dGhvblRlc3RTdWNjZXNzKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBSdW5U
ZXN0cyB0byBoYW5kbGUgYSBQeXRob24gdGVzdCBzdWNjZXNzLiIiIgotCi0gICAgc2VsZi5mYWtl
X29zLnNwYXduX2ltcGwgPSBzZWxmLlNwYXduU3VjY2VzcwotICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Ci0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuUnVuVGVzdHMoCi0gICAgICAgICAgICBbKEdURVNU
X0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAgICAgICBbXSks
Ci0gICAgICAgIDApCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm51bV9zcGF3bl9jYWxscywg
MSkKLQotICBkZWYgdGVzdFJ1bkJpbmFyeVRlc3RTdWNjZXNzKHNlbGYpOgotICAgICIiIkV4ZXJj
aXNlcyBSdW5UZXN0cyB0byBoYW5kbGUgYSBiaW5hcnkgdGVzdCBzdWNjZXNzLiIiIgotCi0gICAg
c2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxmLlNwYXduU3VjY2VzcwotICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuUnVuVGVzdHMoCi0gICAgICAgICAg
ICBbXSwKLSAgICAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rl
c3RfdW5pdHRlc3QnKV0pLAotICAgICAgICAwKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5u
dW1fc3Bhd25fY2FsbHMsIDEpCi0KLSAgZGVmIHRlc3RSdW5QeXRob25UZXN0RmF1aWx1cmUoc2Vs
Zik6Ci0gICAgIiIiRXhlcmNpc2VzIFJ1blRlc3RzIHRvIGhhbmRsZSBhIFB5dGhvbiB0ZXN0IGZh
aWx1cmUuIiIiCi0KLSAgICBzZWxmLmZha2Vfb3Muc3Bhd25faW1wbCA9IHNlbGYuU3Bhd25GYWls
dXJlCi0gICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5SdW5U
ZXN0cygKLSAgICAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVz
dC5weScpXSwKLSAgICAgICAgICAgIFtdKSwKLSAgICAgICAgMSkKLSAgICBzZWxmLmFzc2VydEVx
dWFsKHNlbGYubnVtX3NwYXduX2NhbGxzLCAxKQotCi0gIGRlZiB0ZXN0UnVuQmluYXJ5VGVzdEZh
aWx1cmUoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIFJ1blRlc3RzIHRvIGhhbmRsZSBhIGJpbmFy
eSB0ZXN0IGZhaWx1cmUuIiIiCi0KLSAgICBzZWxmLmZha2Vfb3Muc3Bhd25faW1wbCA9IHNlbGYu
U3Bhd25GYWlsdXJlCi0gICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1
bm5lci5SdW5UZXN0cygKLSAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgWyhHVEVTVF9EQkdf
RElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSksCi0gICAgICAgIDEpCi0g
ICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm51bV9zcGF3bl9jYWxscywgMSkKLQotICBkZWYgdGVz
dENvbWJpbmVkVGVzdFN1Y2Nlc3Moc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIFJ1blRlc3RzIHRv
IGhhbmRsZSBhIHN1Y2Nlc3Mgb2YgYm90aCBQeXRob24gYW5kIGJpbmFyeSB0ZXN0LiIiIgotCi0g
ICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxmLlNwYXduU3VjY2VzcwotICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuUnVuVGVzdHMoCi0gICAgICAg
ICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0Jyld
LAotICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91
bml0dGVzdCcpXSksCi0gICAgICAgIDApCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm51bV9z
cGF3bl9jYWxscywgMikKLQotICBkZWYgdGVzdENvbWJpbmVkVGVzdFN1Y2Nlc3NBbmRGYWlsdXJl
KHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0cyB0byBoYW5kbGUgYSBzdWNjZXNzIG9m
IGJvdGggUHl0aG9uIGFuZCBiaW5hcnkgdGVzdC4iIiIKLQotICAgIGRlZiBTcGF3bkltcGwoZXhl
Y3V0YWJsZSwgYXJndik6Ci0gICAgICBzZWxmLm51bV9zcGF3bl9jYWxscyArPSAxCi0gICAgICAj
IFNpbXVsYXRlcyBmYWlsdXJlIG9mIGEgUHl0aG9uIHRlc3QgYW5kIHN1Y2Nlc3Mgb2YgYSBiaW5h
cnkgdGVzdC4KLSAgICAgIGlmICcucHknIGluIGV4ZWN1dGFibGUgb3IgJy5weScgaW4gYXJndlsw
XToKLSAgICAgICAgcmV0dXJuIDEKLSAgICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAwCi0KLSAg
ICBzZWxmLmZha2Vfb3Muc3Bhd25faW1wbCA9IFNwYXduSW1wbAotICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuUnVuVGVzdHMoCi0gICAgICAgICAgICBbKEdU
RVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldLAotICAgICAg
ICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcp
XSksCi0gICAgICAgIDApCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm51bV9zcGF3bl9jYWxs
cywgMikKLQotCi1jbGFzcyBQYXJzZUFyZ3NUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgIiIi
RXhlcmNpc2VzIFBhcnNlQXJncy4iIiIKLQotICBkZWYgdGVzdE5vT3B0aW9ucyhzZWxmKToKLSAg
ICBvcHRpb25zLCBhcmdzID0gcnVuX3Rlc3RzX3V0aWwuUGFyc2VBcmdzKCdndGVzdCcsIGFyZ3Y9
WydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10p
Ci0gICAgc2VsZi5hc3NlcnRfKG9wdGlvbnMuY29uZmlndXJhdGlvbnMgaXMgTm9uZSkKLSAgICBz
ZWxmLmFzc2VydEZhbHNlKG9wdGlvbnMuYnVpbHRfY29uZmlndXJhdGlvbnMpCi0KLSAgZGVmIHRl
c3RPcHRpb25DKHNlbGYpOgotICAgIG9wdGlvbnMsIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJz
ZUFyZ3MoCi0gICAgICAgICdndGVzdCcsIGFyZ3Y9WydzY3JpcHQucHknLCAnLWMnLCAnZGJnJ10p
Ci0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBbJ3NjcmlwdC5weSddKQotICAgIHNlbGYuYXNz
ZXJ0RXF1YWwob3B0aW9ucy5jb25maWd1cmF0aW9ucywgJ2RiZycpCi0gICAgc2VsZi5hc3NlcnRG
YWxzZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRpb25zKQotCi0gIGRlZiB0ZXN0T3B0aW9uQShz
ZWxmKToKLSAgICBvcHRpb25zLCBhcmdzID0gcnVuX3Rlc3RzX3V0aWwuUGFyc2VBcmdzKCdndGVz
dCcsIGFyZ3Y9WydzY3JpcHQucHknLCAnLWEnXSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3Ms
IFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLmNvbmZpZ3VyYXRp
b25zLCAnYWxsJykKLSAgICBzZWxmLmFzc2VydEZhbHNlKG9wdGlvbnMuYnVpbHRfY29uZmlndXJh
dGlvbnMpCi0KLSAgZGVmIHRlc3RPcHRpb25CKHNlbGYpOgotICAgIG9wdGlvbnMsIGFyZ3MgPSBy
dW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoJ2d0ZXN0JywgYXJndj1bJ3NjcmlwdC5weScsICctYidd
KQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgWydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFz
c2VydF8ob3B0aW9ucy5jb25maWd1cmF0aW9ucyBpcyBOb25lKQotICAgIHNlbGYuYXNzZXJ0VHJ1
ZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRpb25zKQotCi0gIGRlZiB0ZXN0T3B0aW9uQ0FuZE9w
dGlvbkIoc2VsZik6Ci0gICAgb3B0aW9ucywgYXJncyA9IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJn
cygKLSAgICAgICAgJ2d0ZXN0JywgYXJndj1bJ3NjcmlwdC5weScsICctYycsICdkYmcnLCAnLWIn
XSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5h
c3NlcnRFcXVhbChvcHRpb25zLmNvbmZpZ3VyYXRpb25zLCAnZGJnJykKLSAgICBzZWxmLmFzc2Vy
dFRydWUob3B0aW9ucy5idWlsdF9jb25maWd1cmF0aW9ucykKLQotICBkZWYgdGVzdE9wdGlvbkgo
c2VsZik6Ci0gICAgaGVscF9jYWxsZWQgPSBbRmFsc2VdCi0KLSAgICAjIFN1cHByZXNzZXMgbGlu
dCB3YXJuaW5nIG9uIHVudXNlZCBhcmd1bWVudHMuICBUaGVzZSBhcmd1bWVudHMgYXJlCi0gICAg
IyByZXF1aXJlZCBieSBvcHRwYXJzZSwgZXZlbiB0aG91Z2ggdGhleSBhcmUgdW51c2VkLgotICAg
ICMgcHlsaW50OiBkaXNhYmxlLW1zZz1XMDYxMwotICAgIGRlZiBWZXJpZnlIZWxwKG9wdGlvbiwg
b3B0LCB2YWx1ZSwgcGFyc2VyKToKLSAgICAgIGhlbHBfY2FsbGVkWzBdID0gVHJ1ZQotCi0gICAg
IyBWZXJpZmllcyB0aGF0IC1oIGNhdXNlcyB0aGUgaGVscCBjYWxsYmFjayB0byBiZSBjYWxsZWQu
Ci0gICAgaGVscF9jYWxsZWRbMF0gPSBGYWxzZQotICAgIF8sIGFyZ3MgPSBydW5fdGVzdHNfdXRp
bC5QYXJzZUFyZ3MoCi0gICAgICAgICdndGVzdCcsIGFyZ3Y9WydzY3JpcHQucHknLCAnLWgnXSwg
aGVscF9jYWxsYmFjaz1WZXJpZnlIZWxwKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgWydz
Y3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydFRydWUoaGVscF9jYWxsZWRbMF0pCi0KLSAgICAj
IFZlcmlmaWVzIHRoYXQgLS1oZWxwIGNhdXNlcyB0aGUgaGVscCBjYWxsYmFjayB0byBiZSBjYWxs
ZWQuCi0gICAgaGVscF9jYWxsZWRbMF0gPSBGYWxzZQotICAgIF8sIGFyZ3MgPSBydW5fdGVzdHNf
dXRpbC5QYXJzZUFyZ3MoCi0gICAgICAgICdndGVzdCcsIGFyZ3Y9WydzY3JpcHQucHknLCAnLS1o
ZWxwJ10sIGhlbHBfY2FsbGJhY2s9VmVyaWZ5SGVscCkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGFy
Z3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRUcnVlKGhlbHBfY2FsbGVkWzBdKQot
Ci0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0RlYnVnUHJvamVjdC54
Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9EZWJ1Z1Byb2pl
Y3QueGNjb25maWcKaW5kZXggNTc2ZjNkOWJmMGUyNGY2ZWU5ODkxODEzZTRlMThlNGYxYzFiZTQ2
Mi4uNzZmM2FiMjk1YTkxMDY3OGM1NWM1MGZhN2Y4YWM3NGU3NzMwMmY5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0RlYnVnUHJvamVjdC54Y2NvbmZp
ZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvRGVidWdQcm9qZWN0
LnhjY29uZmlnCkBAIC01LDcgKzUsNyBAQAogLy8gIGV4YW1wbGVzLiBJdCBpcyBzZXQgaW4gdGhl
ICJCYXNlZCBPbjoiIGRyb3Bkb3duIGluIHRoZSAiUHJvamVjdCIgaW5mbwogLy8gIGRpYWxvZy4K
IC8vICBUaGlzIGZpbGUgaXMgYmFzZWQgb24gdGhlIFhjb2RlIENvbmZpZ3VyYXRpb24gZmlsZXMg
aW46Ci0vLyAgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS10b29sYm94LWZvci1tYWMv
CisvLyAgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGUtdG9vbGJveC1mb3ItbWFjCiAv
LyAKIAogI2luY2x1ZGUgIkdlbmVyYWwueGNjb25maWciCkBAIC0yOSw5ICsyOSw2IEBAIE9USEVS
X0NGTEFHUyA9ICQoT1RIRVJfQ0ZMQUdTKSAtRERFQlVHPTEKIC8vIC8vIFR1cm5zIG9uIHNwZWNp
YWwgQysrIFNUTCBjaGVja3MgdG8gImVuY291cmFnZSIgZ29vZCBTVEwgdXNlCiAvLyBHQ0NfUFJF
UFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TKSBf
R0xJQkNYWF9ERUJVR19QRURBTlRJQyBfR0xJQkNYWF9ERUJVRyBfR0xJQkNQUF9DT05DRVBUX0NI
RUNLUwogCi0vLyBVc2VkIGJ5IEhFQURFUl9TRUFSQ0hfUEFUSFMgaW4gR2VuZXJhbC54Y2NvbmZp
ZwotV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL1dl
YkNvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwotCiBPTkxZX0FDVElWRV9BUkNIID0gWUVT
CiAKIFNES1JPT1QgPSAkKFNES1JPT1RfJChVU0VfSU5URVJOQUxfU0RLKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvRnJhbWV3b3JrVGFyZ2V0Lnhj
Y29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0ZyYW1ld29ya1Rh
cmdldC54Y2NvbmZpZwppbmRleCBmNGRhOWQyMzk5MTYzNWFiZGNkYTgyYjZhMDZlYWMzZmM4NTg5
MGFkLi43ZDAyNGNkMjk0ODY3YzE1NzMyYmUyZTg5Yzc5Yjg3ZWJhZWRhZjQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvRnJhbWV3b3JrVGFyZ2V0Lnhj
Y29uZmlnCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9GcmFtZXdv
cmtUYXJnZXQueGNjb25maWcKQEAgLTQsNyArNCw3IEBACiAvLyAgVGhlc2UgYXJlIEZyYW1ld29y
ayB0YXJnZXQgc2V0dGluZ3MgZm9yIHRoZSBndGVzdCBmcmFtZXdvcmsgYW5kIGV4YW1wbGVzLiBJ
dAogLy8gIGlzIHNldCBpbiB0aGUgIkJhc2VkIE9uOiIgZHJvcGRvd24gaW4gdGhlICJUYXJnZXQi
IGluZm8gZGlhbG9nLgogLy8gIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiB0aGUgWGNvZGUgQ29uZmln
dXJhdGlvbiBmaWxlcyBpbjoKLS8vICBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXRv
b2xib3gtZm9yLW1hYy8KKy8vICBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZS10b29s
Ym94LWZvci1tYWMKIC8vIAogCiAvLyBEeW5hbWljIGxpYnMgbmVlZCB0byBiZSBwb3NpdGlvbiBp
bmRlcGVuZGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29u
ZmlnL0dlbmVyYWwueGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25m
aWcvR2VuZXJhbC54Y2NvbmZpZwppbmRleCAzYmQyYTU4NmE1NzA1ZmNmNjZlYzJkOTU5MmFmYWMz
ZDhkNmQ3ZGUwLi41M2UwM2RlNTFjYzJmOWI3MTU2YmQ1Njc0YTE3M2EwZjNhM2ZhNDFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvR2VuZXJhbC54Y2Nv
bmZpZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvR2VuZXJhbC54
Y2NvbmZpZwpAQCAtMTgsNyArMTgsNyBAQCBHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxl
cnMubGx2bS5jbGFuZy4xXzA7CiAKIEFSQ0hTID0gJChBUkNIU19TVEFOREFSRF8zMl82NF9CSVQp
OwogCi1IRUFERVJfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2Nh
bC9pbmNsdWRlICIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRm9yd2FyZGluZ0hlYWRl
cnMiIC4uLyAuLi9pbmNsdWRlLworSEVBREVSX1NFQVJDSF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVD
VFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZSAuLi8gLi4vaW5jbHVkZS8KIAogLy8gWmVyb2xpbmsg
cHJldmVudHMgbGluayB3YXJuaW5ncyBzbyB0dXJuIGl0IG9mZgogWkVST19MSU5LID0gTk8KQEAg
LTU5LDggKzU5LDYgQEAgQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk8KIC8vIFR1cm4gb24g
cG9zaXRpb24gZGVwZW5kZW50IGNvZGUgZm9yIG1vc3QgY2FzZXMgKG92ZXJyaWRkZW4gd2hlcmUg
YXBwcm9wcmlhdGUpCiBHQ0NfRFlOQU1JQ19OT19QSUMgPSBZRVMKIAotR0NDX1BSRVBST0NFU1NP
Ul9ERUZJTklUSU9OUyA9ICQoR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUykgR1RFU1RfSEFT
X1RSMV9UVVBMRT0wIEdURVNUX0hBU19SVFRJPTA7Ci0KIENMQU5HX0NYWF9MSUJSQVJZID0gbGli
YysrOwogCiBUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUiA9ICQoTUFDX09TX1hfVkVSU0lP
Tl9NQUpPUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25m
aWcvUHJvZHVjdGlvblByb2plY3QueGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94
Y29kZS9Db25maWcvUHJvZHVjdGlvblByb2plY3QueGNjb25maWcKaW5kZXggMDE2YzY4NzhlOTc2
MTAxODhkYWE4NjI5ZDM1MjFhYjk0Nzc2YmFjNi4uZDkyNzVmMDJmODU3MmEwMTgzNWM4NTA3OTdh
ZGFiY2I1MDQ1NjE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUv
Q29uZmlnL1Byb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmlnCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3hjb2RlL0NvbmZpZy9Qcm9kdWN0aW9uUHJvamVjdC54Y2NvbmZpZwpAQCAtMTAsMjUg
KzEwLDYgQEAKIAogI2luY2x1ZGUgIlJlbGVhc2VQcm9qZWN0LnhjY29uZmlnIgogCi0vLyBVc2Vk
IGJ5IEhFQURFUl9TRUFSQ0hfUEFUSFMgaW4gR2VuZXJhbC54Y2NvbmZpZwotV0VCQ09SRV9QUklW
QVRFX0hFQURFUlNfRElSID0gJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVJfJChXS19VU0Vf
T1ZFUlJJREVfRlJBTUVXT1JLU19ESVIpKTsKLVdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUl9O
TyA9ICQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL1dlYktpdC5mcmFtZXdvcmsvVmVy
c2lvbnMvQS9GcmFtZXdvcmtzL1dlYkNvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwotV0VC
Q09SRV9QUklWQVRFX0hFQURFUlNfRElSX1lFUyA9ICQoV0tfT1ZFUlJJREVfRlJBTUVXT1JLU19E
SVIpL1dlYkNvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwotCi1GUkFNRVdPUktfU0VBUkNI
X1BBVEhTID0gJChXS19RVU9URURfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVIpICQoaW5oZXJpdGVk
KTsKLQogT05MWV9BQ1RJVkVfQVJDSCA9IE5PCiAKIFNES1JPT1QgPSBtYWNvc3guaW50ZXJuYWw7
Ci0KLVdLX0VNUFRZXyA9IFlFUzsKLVdLX05PVF8gPSBZRVM7Ci1XS19OT1RfWUVTID0gTk87Ci0K
LVdLX1VTRV9PVkVSUklERV9GUkFNRVdPUktTX0RJUltzZGs9bWFjb3N4Kl0gPSAkKFdLX05PVF8k
KFdLX0VNUFRZXyQoV0tfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVIpKSk7Ci0KLVdLX09WRVJSSURF
X0ZSQU1FV09SS1NfRElSID0gJChXS19PVkVSUklERV9GUkFNRVdPUktTX0RJUl9VU0VfU1RBR0lO
R19JTlNUQUxMX1BBVEhfJChVU0VfU1RBR0lOR19JTlNUQUxMX1BBVEgpKTsKLVdLX09WRVJSSURF
X0ZSQU1FV09SS1NfRElSX1VTRV9TVEFHSU5HX0lOU1RBTExfUEFUSF9ZRVMgPSAkKFNZU1RFTV9M
SUJSQVJZX0RJUikvU3RhZ2VkRnJhbWV3b3Jrcy9TYWZhcmk7Ci0KLVdLX1FVT1RFRF9PVkVSUklE
RV9GUkFNRVdPUktTX0RJUiA9ICQoV0tfUVVPVEVEX09WRVJSSURFX0ZSQU1FV09SS1NfRElSXyQo
V0tfVVNFX09WRVJSSURFX0ZSQU1FV09SS1NfRElSKSk7Ci1XS19RVU9URURfT1ZFUlJJREVfRlJB
TUVXT1JLU19ESVJfWUVTID0gIiQoV0tfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVIpIjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9SZWxlYXNlUHJvamVj
dC54Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9SZWxlYXNl
UHJvamVjdC54Y2NvbmZpZwppbmRleCAxM2U5MTdmYmZhMmRkZjJkM2VlNTMxNTk4ZGMwZmIwZjJi
NWJmODc2Li5lMGRkYmU5NjRkOWIwMDY3YWM5MWI2NjNlYzQwZWVhZjA4OTM0Y2MxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvUmVsZWFzZVByb2plY3Qu
eGNjb25maWcKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1JlbGVh
c2VQcm9qZWN0LnhjY29uZmlnCkBAIC01LDcgKzUsNyBAQAogLy8gIGFuZCBleGFtcGxlcy4gSXQg
aXMgc2V0IGluIHRoZSAiQmFzZWQgT246IiBkcm9wZG93biBpbiB0aGUgIlByb2plY3QiIGluZm8K
IC8vICBkaWFsb2cuCiAvLyAgVGhpcyBmaWxlIGlzIGJhc2VkIG9uIHRoZSBYY29kZSBDb25maWd1
cmF0aW9uIGZpbGVzIGluOgotLy8gIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGUtdG9v
bGJveC1mb3ItbWFjLworLy8gIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xlLXRvb2xi
b3gtZm9yLW1hYwogLy8gCiAKICNpbmNsdWRlICJHZW5lcmFsLnhjY29uZmlnIgpAQCAtMzEsOSAr
MzEsNiBAQCBPVEhFUl9DRkxBR1MgPSAkKE9USEVSX0NGTEFHUykgLUROREVCVUc9MSAtV25vLXVu
dXNlZC12YXJpYWJsZQogLy8gV2hlbiB3ZSBzdHJpcCB3ZSB3YW50IHRvIHN0cmlwIGFsbCBzeW1i
b2xzIGluIHJlbGVhc2UsIGJ1dCBzYXZlIGV4dGVybmFscy4KIFNUUklQX1NUWUxFID0gYWxsCiAK
LS8vIFVzZWQgYnkgSEVBREVSX1NFQVJDSF9QQVRIUyBpbiBHZW5lcmFsLnhjY29uZmlnCi1XRUJD
T1JFX1BSSVZBVEVfSEVBREVSU19ESVIgPSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvV2ViQ29yZS5m
cmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnM7Ci0KIE9OTFlfQUNUSVZFX0FSQ0ggPSBZRVMKIAogU0RL
Uk9PVCA9ICQoU0RLUk9PVF8kKFVTRV9JTlRFUk5BTF9TREspKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9TdGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29u
ZmlnIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlU
YXJnZXQueGNjb25maWcKaW5kZXggZGQzMzI1NWE5NDQ3NzAyMGNmMTFmNzA1NWU0NGFlMjUyOGVi
OWY5Ny4uMDRiNzNiYzkyZDAxMjFkOTU4ZjVmODY5OWRhZjM3N2ViNjk4YzM5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlUYXJn
ZXQueGNjb25maWcKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1N0
YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcKQEAgLTQsNyArNCw3IEBACiAvLyAgVGhlc2UgYXJl
IHN0YXRpYyBsaWJyYXJ5IHRhcmdldCBzZXR0aW5ncyBmb3IgbGliZ3Rlc3QuYS4gSXQKIC8vICBp
cyBzZXQgaW4gdGhlICJCYXNlZCBPbjoiIGRyb3Bkb3duIGluIHRoZSAiVGFyZ2V0IiBpbmZvIGRp
YWxvZy4KIC8vICBUaGlzIGZpbGUgaXMgYmFzZWQgb24gdGhlIFhjb2RlIENvbmZpZ3VyYXRpb24g
ZmlsZXMgaW46Ci0vLyAgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS10b29sYm94LWZv
ci1tYWMvCisvLyAgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGUtdG9vbGJveC1mb3It
bWFjCiAvLyAKIAogLy8gU3RhdGljIGxpYnMgY2FuIGJlIGluY2x1ZGVkIGluIGJ1bmRsZXMgc28g
bWFrZSB0aGVtIHBvc2l0aW9uIGluZGVwZW5kZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS93aWRnZXRfdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dp
ZGdldF90ZXN0LmNjCmluZGV4IDYxYzBkMmZmZDc2ZDE4MDZhYTM1OTc5ZDhhZTM2NDEwNjQ4YWFh
MTUuLjg3MjU5OTQyMTg1MTQwOGU3NmFhYjZjNTYwYjgxODkyNDU5YmJkMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dp
ZGdldF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL1NhbXBsZXMv
RnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjCkBAIC0zNiw3ICszNiw3IEBACiAvLyBUaGlz
IGlzIGEgc2ltcGxlIHRlc3QgZmlsZSBmb3IgdGhlIFdpZGdldCBjbGFzcyBpbiB0aGUgV2lkZ2V0
LmZyYW1ld29yawogCiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2luY2x1ZGUgPFdpZGdldC93aWRnZXQuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2NyaXB0cy92ZXJz
aW9uZ2VuZXJhdGUucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9TY3JpcHRzL3Zl
cnNpb25nZW5lcmF0ZS5weQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDgx
ZGU4Yzk2YWM1ZDg2Y2E2Mzk0NTZjOTBjNDMzMDY3YmRmZDQwZTUuLmJkZDc1NDFhZDc5N2ZhNjcz
ZjY1ZGEzODE2OGUxNTgwZmQ3ZGRlM2EKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNv
ZGUvU2NyaXB0cy92ZXJzaW9uZ2VuZXJhdGUucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QveGNvZGUvU2NyaXB0cy92ZXJzaW9uZ2VuZXJhdGUucHkKQEAgLTI5LDcgKzI5LDcgQEAKICMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSIiIkEgc2NyaXB0IHRvIHByZXBhcmUgdmVy
c2lvbiBpbmZvcm10aW9uIGZvciB1c2UgdGhlIGd0ZXN0IEluZm8ucGxpc3QgZmlsZS4KKyIiIkEg
c2NyaXB0IHRvIHByZXBhcmUgdmVyc2lvbiBpbmZvcm1hdGlvbiBmb3IgdXNlIHRoZSBndGVzdCBJ
bmZvLnBsaXN0IGZpbGUuCiAKICAgVGhpcyBzY3JpcHQgZXh0cmFjdHMgdGhlIHZlcnNpb24gaW5m
b3JtYXRpb24gZnJvbSB0aGUgY29uZmlndXJlLmFjIGZpbGUgYW5kCiAgIHVzZXMgaXQgdG8gZ2Vu
ZXJhdGUgYSBoZWFkZXIgZmlsZSBjb250YWluaW5nIHRoZSBzYW1lIGluZm9ybWF0aW9uLiBUaGUK
QEAgLTQyLDcgKzQyLDcgQEAKICAgICAxLiBUaGUgQUNfSU5JVCBtYWNybyB3aWxsIGJlIGNvbnRh
aW5lZCB3aXRoaW4gdGhlIGZpcnN0IDEwMjQgY2hhcmFjdGVycwogICAgICAgIG9mIGNvbmZpZ3Vy
ZS5hYwogICAgIDIuIFRoZSB2ZXJzaW9uIHN0cmluZyB3aWxsIGJlIDMgaW50ZWdlcnMgc2VwYXJh
dGVkIGJ5IHBlcmlvZHMgYW5kIHdpbGwgYmUKLSAgICAgICBzdXJyb3VuZGVkIGJ5IHNxdXJlIGJy
YWNrZXRzLCAiWyIgYW5kICJdIiAoZS5nLiBbMS4wLjFdKS4gVGhlIGZpcnN0CisgICAgICAgc3Vy
cm91bmRlZCBieSBzcXVhcmUgYnJhY2tldHMsICJbIiBhbmQgIl0iIChlLmcuIFsxLjAuMV0pLiBU
aGUgZmlyc3QKICAgICAgICBzZWdtZW50IHJlcHJlc2VudHMgdGhlIG1ham9yIHZlcnNpb24sIHRo
ZSBzZWNvbmQgcmVwcmVzZW50cyB0aGUgbWlub3IKICAgICAgICB2ZXJzaW9uIGFuZCB0aGUgdGhp
cmQgcmVwcmVzZW50cyB0aGUgZml4IHZlcnNpb24uCiAgICAgMy4gTm8gIikiIGNoYXJhY3RlciBl
eGlzdHMgYmV0d2VlbiB0aGUgb3BlbmluZyAiKCIgYW5kIGNsb3NpbmcgIikiIG9mCkBAIC02OCw3
ICs2OCw3IEBAIGNvbmZpZ19maWxlLmNsb3NlKCkKIAogIyBFeHRyYWN0IHRoZSB2ZXJzaW9uIHN0
cmluZyBmcm9tIHRoZSBBQ19JTklUIG1hY3JvCiAjICAgVGhlIGZvbGxvd2luZyBpbml0X2V4cHJl
c3Npb24gbWVhbnM6Ci0jICAgICBFeHRyYWN0IHRocmVlIGludGVnZXJzIHNlcGFyYXRlZCBieSBw
ZXJpb2RzIGFuZCBzdXJyb3VuZGVkIGJ5IHNxdXJlCisjICAgICBFeHRyYWN0IHRocmVlIGludGVn
ZXJzIHNlcGFyYXRlZCBieSBwZXJpb2RzIGFuZCBzdXJyb3VuZGVkIGJ5IHNxdWFyZQogIyAgICAg
YnJhY2tldHMoZS5nLiAiWzEuMC4xXSIpIGJldHdlZW4gIkFDX0lOSVQoIiBhbmQgIikiLiBEbyBu
b3QgYmUgZ3JlZWR5CiAjICAgICAoKj8gaXMgdGhlIG5vbi1ncmVlZHkgZmxhZykgc2luY2UgdGhh
dCB3b3VsZCBwdWxsIGluIGV2ZXJ5dGhpbmcgYmV0d2VlbgogIyAgICAgdGhlIGZpcnN0ICIoIiBh
bmQgdGhlIGxhc3QgIikiIGluIHRoZSBmaWxlLgpAQCAtODgsNyArODgsNyBAQCBmaWxlX2RhdGEg
PSAiIiIvLwogLy8gaXMgZXhlY3V0ZWQgaW4gYSAiUnVuIFNjcmlwdCIgYnVpbGQgcGhhc2Ugd2hl
biBjcmVhdGluZyBndGVzdC5mcmFtZXdvcmsuIFRoaXMKIC8vIGhlYWRlciBmaWxlIGlzIG5vdCB1
c2VkIGR1cmluZyBjb21waWxhdGlvbiBvZiBDLXNvdXJjZS4gUmF0aGVyLCBpdCBzaW1wbHkKIC8v
IGRlZmluZXMgc29tZSB2ZXJzaW9uIHN0cmluZ3MgZm9yIHN1YnN0aXR1dGlvbiBpbiB0aGUgSW5m
by5wbGlzdC4gQmVjYXVzZSBvZgotLy8gdGhpcywgd2UgYXJlIG5vdCBub3QgcmVzdHJpY3RlZCB0
byBDLXN5bnRheCBub3IgYXJlIHdlIHVzaW5nIGluY2x1ZGUgZ3VhcmRzLgorLy8gdGhpcywgd2Ug
YXJlIG5vdCByZXN0cmljdGVkIHRvIEMtc3ludGF4IG5vciBhcmUgd2UgdXNpbmcgaW5jbHVkZSBn
dWFyZHMuCiAvLwogCiAjZGVmaW5lIEdURVNUX1ZFUlNJT05JTkZPX1NIT1JUICVzLiVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9ndGVzdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvZ3Rlc3QueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZmYzZmJhZmVmYmFhYzNiODM4MjQ4YjE3ZDU2ODc2
YjNkNWY2YmU4Li43N2ZjNDg4ZTAxYjZlODBjY2I1YzU5YzM5NDIyYzM0NzcyZTRjMDA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9ndGVzdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL2d0ZXN0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3LDcgKzM3LDYgQEAKIC8qIEVuZCBQQlhBZ2dy
ZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAq
LwotCQkxQTBBNEM0NTE0QjdBM0I1MDA4OTUxMzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3Jr
IGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwQTRD
NDQxNEI3QTNCNTAwODk1MTM1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJ
MjI0QTEyQTMwRTlFQURDQzAwQkQxN0ZEIC8qIGd0ZXN0LXRlc3QtcGFydC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjI0QTEyQTIwRTlFQURDQzAwQkQx
N0ZEIC8qIGd0ZXN0LXRlc3QtcGFydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1
YmxpYywgKTsgfTsgfTsKIAkJM0JGNkYyQTAwRTc5QjVBRDAwMEYyRUVFIC8qIGd0ZXN0LXR5cGUt
dXRpbC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzQkY2RjI5RjBFNzlCNUFEMDAwRjJFRUUgLyogZ3Rlc3QtdHlwZS11dGlsLmgg
Ki87IH07CiAJCTNCRjZGMkE1MEU3OUI2MTYwMDBGMkVFRSAvKiBndGVzdC10eXBlZC10ZXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQkY2RjJBNDBF
NzlCNjE2MDAwRjJFRUUgLyogZ3Rlc3QtdHlwZWQtdGVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKQEAgLTQ3LDcgKzQ2LDcgQEAKIAkJNDA0ODg0M0Iw
RTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNERTBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTQwNDg4NDNDMEUy
Rjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcmVkX2ltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0RGMEUyRjc5OUIwMENGNzY1OCAvKiBndGVz
dF9wcmVkX2ltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07CiAJCTQwNDg4NDNEMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcm9kLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNFMDBFMkY3OTlCMDBD
Rjc2NTggLyogZ3Rlc3RfcHJvZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1Ymxp
YywgKTsgfTsgfTsKLQkJNDA0ODg0NTAwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRSBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRjYwRTJGNzk5
QjAwQ0Y3NjU4IC8qIFJFQURNRSAqLzsgfTsKKwkJNDA0ODg0NTAwRTJGNzk5QjAwQ0Y3NjU4IC8q
IFJFQURNRS5tZCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCAqLzsgfTsKIAkJNDA0ODg0
QTAwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCBpbiBDb3B5
IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0
ODgzRTIwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCAqLzsg
fTsKIAkJNDA0ODg0QTEwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0LWZpbGVwYXRoLmggaW4gQ29w
eSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQw
NDg4M0UzMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1maWxlcGF0aC5oICovOyB9OwogCQk0MDQ4
ODRBMjBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3QtaW50ZXJuYWwuaCBpbiBDb3B5IEhlYWRlcnMg
SW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRTQwRTJG
Nzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWludGVybmFsLmggKi87IH07CkBAIC01NSw3ICs1NCw3IEBA
CiAJCTQwNDg4NEE0MEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1zdHJpbmcuaCBpbiBDb3B5IEhl
YWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgz
RTYwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXN0cmluZy5oICovOyB9OwogCQk0MDQ4ODRBQzBF
MkY3Q0Q5MDBDRjc2NTggLyogQ0hBTkdFUyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDA0ODg0QTkwRTJGN0NEOTAwQ0Y3NjU4IC8qIENIQU5HRVMgKi87
IH07CiAJCTQwNDg4NEFEMEUyRjdDRDkwMENGNzY1OCAvKiBDT05UUklCVVRPUlMgaW4gUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4NEFBMEUyRjdDRDkw
MENGNzY1OCAvKiBDT05UUklCVVRPUlMgKi87IH07Ci0JCTQwNDg4NEFFMEUyRjdDRDkwMENGNzY1
OCAvKiBDT1BZSU5HIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogQ09QWUlORyAqLzsgfTsKKwkJNDA0ODg0
QUUwRTJGN0NEOTAwQ0Y3NjU4IC8qIExJQ0VOU0UgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4NEFCMEUyRjdDRDkwMENGNzY1OCAvKiBMSUNFTlNF
ICovOyB9OwogCQk0MDg5OUYzQTBGRkE3MEQ0MDAwQjI5QUUgLyogZ3Rlc3QtYWxsLmNjIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjI0QTEyQTEwRTlFQURB
NzAwQkQxN0ZEIC8qIGd0ZXN0LWFsbC5jYyAqLzsgfTsKIAkJNDA4OTlGNTAwRkZBNzI4MTAwMEIy
OUFFIC8qIGd0ZXN0LXR1cGxlLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwODk5RjREMEZGQTcyNzEwMDBCMjlBRSAvKiBndGVz
dC10dXBsZS5oICovOyB9OwogCQk0MDg5OUY1MzBGRkE3MkEwMDAwQjI5QUUgLyogZ3Rlc3RfdW5p
dHRlc3QuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
QjIzOEMxMjBFN0ZFMTNDMDA4NDZFMTEgLyogZ3Rlc3RfdW5pdHRlc3QuY2MgKi87IH07CkBAIC03
OSw2ICs3OCwxNCBAQAogCQk0NTM5QzkzODBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtbGlua2Vk
X3B0ci5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NTM5QzkzNTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtbGlua2VkX3B0ci5o
ICovOyB9OwogCQk0NTM5QzkzOTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC1n
ZW5lcmF0ZWQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDUzOUM5MzYwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0
aWwtZ2VuZXJhdGVkLmggKi87IH07CiAJCTQ1MzlDOTNBMEVDMjgwRTIwMEE3MEY0QyAvKiBndGVz
dC1wYXJhbS11dGlsLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MzlDOTM3MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJh
bS11dGlsLmggKi87IH07CisJCTQ1NjdDODE4MTI2NEZGNzEwMDc3NDBCRSAvKiBndGVzdC1wcmlu
dGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDU2
N0M4MTcxMjY0RkY3MTAwNzc0MEJFIC8qIGd0ZXN0LXByaW50ZXJzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlGNjdENEYzRTFDN0Y1RDhCMDAxN0M3
MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNjdENEYzRDFDN0Y1RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNo
LmggKi87IH07CisJCUY2N0Q0RjNGMUM3RjVEQTcwMDE3QzcyOSAvKiBndGVzdC1wb3J0LWFyY2gu
aCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjY3RDRGM0QxQzdGNUQ4QjAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQtYXJjaC5oICovOyB9
OworCQlGNjdENEY0NDFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGNDExQzdGNUREMDAwMTdD
NzI5IC8qIGd0ZXN0LXBvcnQuaCAqLzsgfTsKKwkJRjY3RDRGNDUxQzdGNUREMDAwMTdDNzI5IC8q
IGd0ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNjdENEY0MjFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLzsg
fTsKKwkJRjY3RDRGNDYxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdENEY0MzFDN0Y1REQwMDAxN0M3Mjkg
LyogZ3Rlc3QuaCAqLzsgfTsKKwkJRjY3RDRGNDgxQzdGNUUxNjAwMTdDNzI5IC8qIGd0ZXN0LXBv
cnQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgQ3VzdG9tICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY2N0Q0RjQxMUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC1wb3J0Lmgg
Ki87IH07CisJCUY2N0Q0RjQ5MUM3RjVFMjYwMDE3QzcyOSAvKiBndGVzdC1wcmludGVycy5oIGlu
IENvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20gKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjY3RDRGNDIxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggKi87
IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFp
bmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTE4OCw2ICsxOTUsNyBAQAogCQkJCTQ1MzlDOTM4
MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1saW5rZWRfcHRyLmggaW4gQ29weSBIZWFkZXJzIElu
dGVybmFsICovLAogCQkJCTQ1MzlDOTM5MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11
dGlsLWdlbmVyYXRlZC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKIAkJCQk0NTM5Qzkz
QTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC5oIGluIENvcHkgSGVhZGVycyBJ
bnRlcm5hbCAqLywKKwkJCQlGNjdENEYzRjFDN0Y1REE3MDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1h
cmNoLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLAogCQkJCTQwNDg4NEEzMEUyRjdCRTYw
MENGNzY1OCAvKiBndGVzdC1wb3J0LmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLAogCQkJ
CTQwNDg4NEE0MEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1zdHJpbmcuaCBpbiBDb3B5IEhlYWRl
cnMgSW50ZXJuYWwgKi8sCiAJCQkJNDA4OTlGNTAwRkZBNzI4MTAwMEIyOUFFIC8qIGd0ZXN0LXR1
cGxlLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLApAQCAtMTk2LDEwICsyMDQsMjEgQEAK
IAkJCW5hbWUgPSAiQ29weSBIZWFkZXJzIEludGVybmFsIjsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OworCQlGNjdENEY0NzFDN0Y1REY2MDAxN0M3Mjkg
LyogQ29weSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlG
aWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0
UGF0aCA9IEhlYWRlcnMvaW50ZXJuYWwvY3VzdG9tOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDY7
CisJCQlmaWxlcyA9ICgKKwkJCQlGNjdENEY0ODFDN0Y1RTE2MDAxN0M3MjkgLyogZ3Rlc3QtcG9y
dC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20gKi8sCisJCQkJRjY3RDRGNDkxQzdG
NUUyNjAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFs
IEN1c3RvbSAqLywKKwkJCSk7CisJCQluYW1lID0gIkNvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0
b20iOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAv
KiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZp
bGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCQkxQTBBNEM0NDE0QjdBM0I1MDA4OTUxMzUgLyogSmF2
YVNjcmlwdENvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTIyNEExMkEx
MEU5RUFEQTcwMEJEMTdGRCAvKiBndGVzdC1hbGwuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gImd0ZXN0LWFsbC5jYyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTIyNEExMkEyMEU5RUFEQ0MwMEJEMTdGRCAvKiBndGVzdC10ZXN0LXBhcnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC10ZXN0LXBhcnQuaCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNCMjM4QzEyMEU3RkUxM0MwMDg0NkUxMSAvKiBndGVzdF91
bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGd0ZXN0X3Vu
aXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE4LDExICsyMzcsMTEg
QEAKIAkJNDA0ODgzRTQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWludGVybmFsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1pbnRlcm5hbC5oIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDA0ODgzRTUwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXBv
cnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXBvcnQuaCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwNDg4M0U2MEUyRjc5OUIwMENGNzY1OCAvKiBn
dGVzdC1zdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXN0
cmluZy5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDA0ODgzRjYwRTJGNzk5QjAw
Q0Y3NjU4IC8qIFJFQURNRSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBSRUFETUU7IHBhdGggPSAu
Li9SRUFETUU7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNDA0ODgzRjYwRTJGNzk5
QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBSRUFETUUubWQ7
IHBhdGggPSAuLi9SRUFETUUubWQ7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNDA0
ODg0MEQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X21haW4uY2MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBndGVzdF9tYWluLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MDQ4ODRBOTBFMkY3Q0Q5MDBDRjc2NTggLyogQ0hBTkdFUyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IG5hbWUgPSBDSEFOR0VTOyBwYXRoID0gLi4vQ0hBTkdFUzsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OwogCQk0MDQ4ODRBQTBFMkY3Q0Q5MDBDRjc2NTggLyogQ09OVFJJQlVUT1JTICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgbmFtZSA9IENPTlRSSUJVVE9SUzsgcGF0aCA9IC4uL0NPTlRSSUJVVE9S
Uzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQk0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2
NTggLyogQ09QWUlORyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDT1BZSU5HOyBwYXRoID0gLi4v
Q09QWUlORzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk0MDQ4ODRBQjBFMkY3Q0Q5
MDBDRjc2NTggLyogTElDRU5TRSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBMSUNFTlNFOyBwYXRo
ID0gLi4vTElDRU5TRTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk0MDg5OUY0MzBG
RkE3MTg0MDAwQjI5QUUgLyogZ3Rlc3RfdW5pdHRlc3QtZnJhbWV3b3JrICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1
dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSAiZ3Rlc3RfdW5pdHRlc3QtZnJhbWV3
b3JrIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDA4OTlGNEQwRkZB
NzI3MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9ICJndGVzdC10dXBsZS5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDA4
OTlGQjMwRkZBNzU2NzAwMEIyOUFFIC8qIFN0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZp
Zzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0NSw2ICsyNjQsMTEgQEAKIAkJNDUz
OUM5MzUwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LWxpbmtlZF9wdHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LWxpbmtlZF9wdHIuaCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ1MzlDOTM2MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11
dGlsLWdlbmVyYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3Qt
cGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1
MzlDOTM3MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1wYXJhbS11dGlsLmgiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0NTY3QzgxNzEyNjRGRjcxMDA3NzQwQkUgLyogZ3Rlc3QtcHJpbnRl
cnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXByaW50ZXJzLmgi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNjdENEYzRDFDN0Y1RDhCMDAxN0M3Mjkg
LyogZ3Rlc3QtcG9ydC1hcmNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJn
dGVzdC1wb3J0LWFyY2guaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2N0Q0RjQx
MUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC1wb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9ICJndGVzdC1wb3J0LmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
NjdENEY0MjFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXByaW50ZXJzLmgiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGNjdENEY0MzFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZ3Rlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMjg0LDE0ICszMDgsNiBAQAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwotCQk0
NDREMTE3MjE0QTI2MjhGMDA5RkVDM0YgLyogRnJhbWV3b3JrcyAqLyA9IHsKLQkJCWlzYSA9IFBC
WEZyYW1ld29ya3NCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
LQkJCWZpbGVzID0gKAotCQkJCTFBMEE0QzQ1MTRCN0EzQjUwMDg5NTEzNSAvKiBKYXZhU2NyaXB0
Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKIC8qIEVuZCBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KQEAgLTMx
Niw3ICszMzIsNiBAQAogCQkJCTA4RkI3N0FDRkU4NDE3MDdDMDJBQUMwNyAvKiBTb3VyY2UgKi8s
CiAJCQkJNDBENENGNEUwRTMwRjVFMjAwMjk0ODAxIC8qIFJlc291cmNlcyAqLywKIAkJCQk0MDNF
RTM3QjBFMzc3ODIyMDA0QkQxRTIgLyogU2NyaXB0cyAqLywKLQkJCQkxQTBBNEM0NjE0QjdBM0JD
MDA4OTUxMzUgLyogRnJhbWV3b3JrcyAqLywKIAkJCQkwMzQ3NjhEREZGMzhBNDVBMTFEQjlDOEIg
LyogUHJvZHVjdHMgKi8sCiAJCQkpOwogCQkJbmFtZSA9IGd0ZXN0OwpAQCAtMzI3LDI0ICszNDIs
MTYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTQwNDg4NEE5MEUyRjdDRDkwMENGNzY1OCAvKiBD
SEFOR0VTICovLAogCQkJCTQwNDg4NEFBMEUyRjdDRDkwMENGNzY1OCAvKiBDT05UUklCVVRPUlMg
Ki8sCi0JCQkJNDA0ODg0QUIwRTJGN0NEOTAwQ0Y3NjU4IC8qIENPUFlJTkcgKi8sCiAJCQkJNDA0
ODgzRDkwRTJGNzk5QjAwQ0Y3NjU4IC8qIGluY2x1ZGUgKi8sCi0JCQkJNDA0ODgzRjYwRTJGNzk5
QjAwQ0Y3NjU4IC8qIFJFQURNRSAqLywKKwkJCQk0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyog
TElDRU5TRSAqLywKIAkJCQk0MDg5QTAyRjBGRkFDRjg0MDAwQjI5QUUgLyogc2FtcGxlcyAqLywK
IAkJCQk0MDQ4ODQwNzBFMkY3OTlCMDBDRjc2NTggLyogc3JjICovLAogCQkJCTNCMjM4QkYwMEU3
RkUxM0IwMDg0NkUxMSAvKiB0ZXN0ICovLAorCQkJCTQwNDg4M0Y2MEUyRjc5OUIwMENGNzY1OCAv
KiBSRUFETUUubWQgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFNvdXJjZTsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CiAJCX07Ci0JCTFBMEE0QzQ2MTRCN0EzQkMwMDg5NTEzNSAvKiBGcmFtZXdv
cmtzICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkxQTBB
NEM0NDE0QjdBM0I1MDA4OTUxMzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovLAotCQkJ
KTsKLQkJCW5hbWUgPSBGcmFtZXdvcmtzOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJ
fTsKIAkJM0IyMzhCRjAwRTdGRTEzQjAwODQ2RTExIC8qIHRlc3QgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMzc5LDYgKzM4Niw3IEBACiAJCQkJNDA0ODgz
REIwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRoLXRlc3QuaCAqLywKIAkJCQk0MDQ4ODNE
QzBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtbWVzc2FnZS5oICovLAogCQkJCTQ1MzlDOTMzMEVD
MjgwQUUwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS10ZXN0LmggKi8sCisJCQkJNDU2N0M4MTcxMjY0
RkY3MTAwNzc0MEJFIC8qIGd0ZXN0LXByaW50ZXJzLmggKi8sCiAJCQkJNDA0ODgzREQwRTJGNzk5
QjAwQ0Y3NjU4IC8qIGd0ZXN0LXNwaS5oICovLAogCQkJCTIyNEExMkEyMEU5RUFEQ0MwMEJEMTdG
RCAvKiBndGVzdC10ZXN0LXBhcnQuaCAqLywKIAkJCQkzQkY2RjJBNDBFNzlCNjE2MDAwRjJFRUUg
LyogZ3Rlc3QtdHlwZWQtdGVzdC5oICovLApAQCAtMzkyLDEyICs0MDAsMTQgQEAKIAkJNDA0ODgz
RTEwRTJGNzk5QjAwQ0Y3NjU4IC8qIGludGVybmFsICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlGNjdENEY0MDFDN0Y1REQwMDAxN0M3MjkgLyogY3VzdG9t
ICovLAogCQkJCTQwNDg4M0UyMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1kZWF0aC10ZXN0LWlu
dGVybmFsLmggKi8sCiAJCQkJNDA0ODgzRTMwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWZpbGVw
YXRoLmggKi8sCiAJCQkJNDA0ODgzRTQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWludGVybmFs
LmggKi8sCiAJCQkJNDUzOUM5MzUwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LWxpbmtlZF9wdHIu
aCAqLywKIAkJCQk0NTM5QzkzNjBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC1n
ZW5lcmF0ZWQuaCAqLywKIAkJCQk0NTM5QzkzNzBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFy
YW0tdXRpbC5oICovLAorCQkJCUY2N0Q0RjNEMUM3RjVEOEIwMDE3QzcyOSAvKiBndGVzdC1wb3J0
LWFyY2guaCAqLywKIAkJCQk0MDQ4ODNFNTBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtcG9ydC5o
ICovLAogCQkJCTQwNDg4M0U2MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zdHJpbmcuaCAqLywK
IAkJCQk0MDg5OUY0RDBGRkE3MjcxMDAwQjI5QUUgLyogZ3Rlc3QtdHVwbGUuaCAqLywKQEAgLTQ0
OCw2ICs0NTgsMTYgQEAKIAkJCXBhdGggPSBSZXNvdXJjZXM7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQlGNjdENEY0MDFDN0Y1REQwMDAxN0M3MjkgLyogY3VzdG9tICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlGNjdENEY0MTFDN0Y1
REQwMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oICovLAorCQkJCUY2N0Q0RjQyMUM3RjVERDAwMDE3
QzcyOSAvKiBndGVzdC1wcmludGVycy5oICovLAorCQkJCUY2N0Q0RjQzMUM3RjVERDAwMDE3Qzcy
OSAvKiBndGVzdC5oICovLAorCQkJKTsKKwkJCXBhdGggPSBjdXN0b207CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDU4LDkgKzQ3OCwxNCBAQAog
CQkJCTQwNDg4NDM4MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1kZWF0aC10ZXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MDQ4ODQzOTBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtbWVzc2FnZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDUzOUM5MzQwRUMyODBBRTAwQTcwRjRDIC8qIGd0ZXN0LXBh
cmFtLXRlc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUY2N0Q0RjNFMUM3RjVEOEIwMDE3QzcyOSAv
KiBndGVzdC1wb3J0LWFyY2guaCBpbiBIZWFkZXJzICovLAorCQkJCUY2N0Q0RjQ0MUM3RjVERDAw
MDE3QzcyOSAvKiBndGVzdC1wb3J0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNjdENEY0NTFDN0Y1
REQwMDAxN0M3MjkgLyogZ3Rlc3QtcHJpbnRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ1NjdD
ODE4MTI2NEZGNzEwMDc3NDBCRSAvKiBndGVzdC1wcmludGVycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDA0ODg0M0EwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXNwaS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMjI0QTEyQTMwRTlFQURDQzAwQkQxN0ZEIC8qIGd0ZXN0LXRlc3QtcGFydC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJM0JGNkYyQTUwRTc5QjYxNjAwMEYyRUVFIC8qIGd0ZXN0LXR5cGVkLXRl
c3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUY2N0Q0RjQ2MUM3RjVERDAwMDE3QzcyOSAvKiBndGVz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0M0IwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MDQ4ODQzQzBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Rf
cHJlZF9pbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MDQ4ODQzRDBFMkY3OTlCMDBDRjc2NTgg
LyogZ3Rlc3RfcHJvZC5oIGluIEhlYWRlcnMgKi8sCkBAIC01NzcsOCArNjAyLDggQEAKIAkJCQk4
RDA3RjJDMTA0ODZDQzdBMDA3Q0QxRDAgLyogU291cmNlcyAqLywKIAkJCQk4RDA3RjJCRDA0ODZD
QzdBMDA3Q0QxRDAgLyogSGVhZGVycyAqLywKIAkJCQk0MDQ4ODRBNTBFMkY3QzA0MDBDRjc2NTgg
LyogQ29weSBIZWFkZXJzIEludGVybmFsICovLAorCQkJCUY2N0Q0RjQ3MUM3RjVERjYwMDE3Qzcy
OSAvKiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgQ3VzdG9tICovLAogCQkJCThEMDdGMkJGMDQ4NkND
N0EwMDdDRDFEMCAvKiBSZXNvdXJjZXMgKi8sCi0JCQkJNDQ0RDExNzIxNEEyNjI4RjAwOUZFQzNG
IC8qIEZyYW1ld29ya3MgKi8sCiAJCQkpOwogCQkJYnVpbGRSdWxlcyA9ICgKIAkJCSk7CkBAIC02
MzgsOSArNjYzLDkgQEAKIAkJCWZpbGVzID0gKAogCQkJCTQwNDg4NEFDMEUyRjdDRDkwMENGNzY1
OCAvKiBDSEFOR0VTIGluIFJlc291cmNlcyAqLywKIAkJCQk0MDQ4ODRBRDBFMkY3Q0Q5MDBDRjc2
NTggLyogQ09OVFJJQlVUT1JTIGluIFJlc291cmNlcyAqLywKLQkJCQk0MDQ4ODRBRTBFMkY3Q0Q5
MDBDRjc2NTggLyogQ09QWUlORyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJNDBDODQ5NzgxMDFBMzY1
NDAwODM2NDJBIC8qIGxpYmd0ZXN0X21haW4uYSBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJNDA0ODg0
NTAwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRSBpbiBSZXNvdXJjZXMgKi8sCisJCQkJNDA0ODg0
QUUwRTJGN0NEOTAwQ0Y3NjU4IC8qIExJQ0VOU0UgaW4gUmVzb3VyY2VzICovLAorCQkJCTQwNDg4
NDUwMEUyRjc5OUIwMENGNzY1OCAvKiBSRUFETUUubWQgaW4gUmVzb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGUyYjM3N2JiOGE1
MDYxNjM3NTNhNDFhYjYyMjdiZmQ1ZTE3ZjU5OWMuLjRjN2UzYTU3ZTk1Y2NkNThlYjY5NWM1ZDNh
Mjk0M2E3OGZlMTA5MjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOC0wOC0zMCAgUm9zcyBLaXJzbGluZyAgPHJv
c3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgVXBkYXRlIGdvb2dsZXRlc3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTcyMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9jb25maWcuaDoKKyAgICAgICAgSW5zdGVhZCBvZiBtb2RpZnlpbmcgdGhlIGd0ZXN0IHNvdXJj
ZSwgYWRkIHRoZSBuZWNlc3NhcnkgV1RGIGluY2x1ZGVzIGhlcmUuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKKyAgICAgICAgUmVtb3ZlIG9i
c29sZXRlZCBkZWZpbml0aW9ucyBHVEVTVF9IQVNfVFIxX1RVUExFPTAgYW5kIEdURVNUX0hBU19S
VFRJPTAuCisKIDIwMTgtMDgtMzAgIFRob21hcyBEZW5uZXkgIDx0ZGVubmV5QGFwcGxlLmNvbT4K
IAogICAgICAgICBbV0hMU0xdIEZpeCBhcnJheSBpbmRleGluZyBiZWhhdmlvcgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCmluZGV4IDNjMmU1
OWViNmM1ZDQxYzNiMmYzNDlmZmNjZTUyODQ2OGJjYWEyNWIuLjNmNGJkZmJjOWI2MTRkMjczODEw
NzljZTQ2MDJhNjZlNDIyNmM0YmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29u
ZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZworKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZp
Z3VyYXRpb25zL0Jhc2UueGNjb25maWcKQEAgLTM1LDcgKzM1LDcgQEAgQ0xBTkdfV0FSTl9DWFgw
WF9FWFRFTlNJT05TID0gTk87CiBIRUFERVJfU0VBUkNIX1BBVEhTID0gJHtCVUlMVF9QUk9EVUNU
U19ESVJ9L3Vzci9sb2NhbC9pbmNsdWRlICQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9G
b3J3YXJkaW5nSGVhZGVycyAkKEJVSUxUX1BST0RVQ1RTX0RJUikvV2ViQ29yZVRlc3RTdXBwb3J0
OwogCiBHQ0NfTk9fQ09NTU9OX0JMT0NLUyA9IFlFUzsKLUdDQ19QUkVQUk9DRVNTT1JfREVGSU5J
VElPTlMgPSAkKERFQlVHX0RFRklORVMpICQoRkVBVFVSRV9ERUZJTkVTKSBHVEVTVF9IQVNfVFIx
X1RVUExFPTAgR1RFU1RfSEFTX1JUVEk9MCBVX0RJU0FCTEVfUkVOQU1JTkc9MSBVX1NIT1dfQ1BM
VVNQTFVTX0FQST0wICQoR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OU18kKFBMQVRGT1JNX05B
TUUpKTsKK0dDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAkKERFQlVHX0RFRklORVMpICQo
RkVBVFVSRV9ERUZJTkVTKSBVX0RJU0FCTEVfUkVOQU1JTkc9MSBVX1NIT1dfQ1BMVVNQTFVTX0FQ
ST0wICQoR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OU18kKFBMQVRGT1JNX05BTUUpKTsKIEdD
Q19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlNfbWFjb3N4ID0gRU5BQkxFX0RBU0hCT0FSRF9TVVBQ
T1JUOwogREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gZHdhcmYtd2l0aC1kc3ltOwogUFJFQklO
RElORyA9IE5PCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAppbmRleCBlZGY4YTZmMWY1NmIwYmVkZmZlODRlNjYw
ZWU4ZWY1MDRjNGM1MmNhLi4wYzJjNGFlN2JmMGU5Y2U1ZTk4Nzk1OGU1NDg0M2VkNDM3NDYyMjQ2
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29uZmlnLmgKQEAgLTU3LDggKzU3LDE0IEBACiAKICNpZmRlZiBfX2NwbHVz
cGx1cwogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KKyN1bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgogI2VuZGlmCiAKKyNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5oPgorCiAjaWZkZWYgX19j
bGFuZ19fCiAvLyBGaW5pc2ggd29ya2luZyBhcm91bmQgdGhlIGxlc3Mgc3RyaWN0IGNvZGluZyBz
dGFuZGFyZHMgb2YgdGhlIGd0ZXN0IGZyYW1ld29yay4KICNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwb3AK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348740</attachid>
            <date>2018-09-02 11:40:52 -0700</date>
            <delta_ts>2018-09-02 11:52:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175722-20180902114049.patch</filename>
            <type>text/plain</type>
            <size>2569520</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9DaGFuZ2VMb2cKaW5kZXggZmI1MTE0ZTAz
ZmM3ZTUxZjg2N2YzOWFiZjhkYjIwNDA1YWRhOWJiYS4uZTkwNWY4ZjdkMjRmYTBlZWM4YzMwMzJm
YjdhYjlkYTNjZDgzYmU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4
LTA4LTMwICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAg
ICBVcGRhdGUgZ29vZ2xldGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc1NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBndGVzdC86CisgICAgICAgIFVwZGF0ZSB0byAxLjguMS4KKworICAgICAg
ICAqIGd0ZXN0L0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIGd0ZXN0L3hjb2RlLzoKKyAgICAg
ICAgS2VlcCBvdXIgdmVyc2lvbnMgb2YgdGhlc2UgYnVpbGQgZmlsZXMsIG1ha2luZyBhbnkgbmVj
ZXNzYXJ5IGFkZGl0aXZlIHVwZGF0ZXMKKyAgICAgICAgYW5kIHJlbW92aW5nIFdURi9KU0MgZGVw
ZW5kZW5jaWVzIHNvIHRoYXQgd2Ugc3RvcCBmb3JraW5nIHRoaXJkLXBhcnR5IHNvdXJjZS4KKwog
MjAxOC0wNy0xNyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW1dQRV1bR1RLXSBVcGRhdGUgeGRnbWltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvQ0hBTkdFUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NIQU5HRVMK
aW5kZXggZTU3NDQxNWVlNmVkODFjZjQ5MmJlMjk1MzQ2YzQ0NGVlYjEwY2U4OC4uMDU1MjEzMjQy
MTJjOTEyODdkOTI0NGQ0NGJhYjMwNmRiNjY0YmFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvQ0hBTkdFUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DSEFOR0VT
CkBAIC0xLDMgKzEsNjIgQEAKK0NoYW5nZXMgZm9yIDEuNy4wOgorCisqIE5ldyBmZWF0dXJlOiBk
ZWF0aCB0ZXN0cyBhcmUgc3VwcG9ydGVkIG9uIE9wZW5CU0QgYW5kIGluIGlPUworICBzaW11bGF0
b3Igbm93LgorKiBOZXcgZmVhdHVyZTogR29vZ2xlIFRlc3Qgbm93IGltcGxlbWVudHMgYSBwcm90
b2NvbCB0byBhbGxvdworICBhIHRlc3QgcnVubmVyIHRvIGRldGVjdCB0aGF0IGEgdGVzdCBwcm9n
cmFtIGhhcyBleGl0ZWQKKyAgcHJlbWF0dXJlbHkgYW5kIHJlcG9ydCBpdCBhcyBhIGZhaWx1cmUg
KGJlZm9yZSBpdCB3b3VsZCBiZQorICBmYWxzZWx5IHJlcG9ydGVkIGFzIGEgc3VjY2VzcyBpZiB0
aGUgZXhpdCBjb2RlIGlzIDApLgorKiBOZXcgZmVhdHVyZTogVGVzdDo6UmVjb3JkUHJvcGVydHko
KSBjYW4gbm93IGJlIHVzZWQgb3V0c2lkZSBvZiB0aGUKKyAgbGlmZXNwYW4gb2YgYSB0ZXN0IG1l
dGhvZCwgaW4gd2hpY2ggY2FzZSBpdCB3aWxsIGJlIGF0dHJpYnV0ZWQgdG8KKyAgdGhlIGN1cnJl
bnQgdGVzdCBjYXNlIG9yIHRoZSB0ZXN0IHByb2dyYW0gaW4gdGhlIFhNTCByZXBvcnQuCisqIE5l
dyBmZWF0dXJlIChwb3RlbnRpYWxseSBicmVha2luZyk6IC0tZ3Rlc3RfbGlzdF90ZXN0cyBub3cg
cHJpbnRzCisgIHRoZSB0eXBlIHBhcmFtZXRlcnMgYW5kIHZhbHVlIHBhcmFtZXRlcnMgZm9yIGVh
Y2ggdGVzdC4KKyogSW1wcm92ZW1lbnQ6IGNoYXIgcG9pbnRlcnMgYW5kIGNoYXIgYXJyYXlzIGFy
ZSBub3cgZXNjYXBlZCBwcm9wZXJseQorICBpbiBmYWlsdXJlIG1lc3NhZ2VzLgorKiBJbXByb3Zl
bWVudDogZmFpbHVyZSBzdW1tYXJ5IGluIFhNTCByZXBvcnRzIG5vdyBpbmNsdWRlcyBmaWxlIGFu
ZAorICBsaW5lIGluZm9ybWF0aW9uLgorKiBJbXByb3ZlbWVudDogdGhlIDx0ZXN0c3VpdGVzPiBY
TUwgZWxlbWVudCBub3cgaGFzIGEgdGltZXN0YW1wIGF0dHJpYnV0ZS4KKyogSW1wcm92ZW1lbnQ6
IFdoZW4gLS1ndGVzdF9maWx0ZXIgaXMgc3BlY2lmaWVkLCBYTUwgcmVwb3J0IG5vdyBkb2Vzbid0
CisgIGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGVzdHMgdGhhdCBhcmUgZmlsdGVyZWQgb3V0
LgorKiBGaXhlZCB0aGUgYnVnIHdoZXJlIGxvbmcgLS1ndGVzdF9maWx0ZXIgZmxhZyB2YWx1ZXMg
YXJlIHRydW5jYXRlZCBpbgorICBkZWF0aCB0ZXN0cy4KKyogUG90ZW50aWFsbHkgYnJlYWtpbmcg
Y2hhbmdlOiBSVU5fQUxMX1RFU1RTKCkgaXMgbm93IGltcGxlbWVudGVkIGFzIGEKKyAgZnVuY3Rp
b24gaW5zdGVhZCBvZiBhIG1hY3JvIGluIG9yZGVyIHRvIHdvcmsgYmV0dGVyIHdpdGggQ2xhbmcu
CisqIENvbXBhdGliaWxpdHkgZml4ZXMgd2l0aCBDKysgMTEgYW5kIHZhcmlvdXMgcGxhdGZvcm1z
LgorKiBCdWcvd2FybmluZyBmaXhlcy4KKworQ2hhbmdlcyBmb3IgMS42LjA6CisKKyogTmV3IGZl
YXR1cmU6IEFERF9GQUlMVVJFX0FUKCkgZm9yIHJlcG9ydGluZyBhIHRlc3QgZmFpbHVyZSBhdCB0
aGUKKyAgZ2l2ZW4gc291cmNlIGxvY2F0aW9uIC0tIHVzZWZ1bCBmb3Igd3JpdGluZyB0ZXN0aW5n
IHV0aWxpdGllcy4KKyogTmV3IGZlYXR1cmU6IHRoZSB1bml2ZXJzYWwgdmFsdWUgcHJpbnRlciBp
cyBtb3ZlZCBmcm9tIEdvb2dsZSBNb2NrCisgIHRvIEdvb2dsZSBUZXN0LgorKiBOZXcgZmVhdHVy
ZTogdHlwZSBwYXJhbWV0ZXJzIGFuZCB2YWx1ZSBwYXJhbWV0ZXJzIGFyZSByZXBvcnRlZCBpbgor
ICB0aGUgWE1MIHJlcG9ydCBub3cuCisqIEEgZ3Rlc3RfZGlzYWJsZV9wdGhyZWFkcyBDTWFrZSBv
cHRpb24uCisqIENvbG9yZWQgb3V0cHV0IHdvcmtzIGluIEdOVSBTY3JlZW4gc2Vzc2lvbnMgbm93
LgorKiBQYXJhbWV0ZXJzIG9mIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIG5vdyBwcmlu
dGVkIGluIHRoZQorICB0ZXh0dWFsIG91dHB1dC4KKyogRmFpbHVyZXMgZnJvbSBhZCBob2MgdGVz
dCBhc3NlcnRpb25zIHJ1biBiZWZvcmUgUlVOX0FMTF9URVNUUygpIGFyZQorICBub3cgY29ycmVj
dGx5IHJlcG9ydGVkLgorKiBBcmd1bWVudHMgb2YgQVNTRVJUX1hZIGFuZCBFWFBFQ1RfWFkgbm8g
bG9uZ2VyIG5lZWQgdG8gc3VwcG9ydCA8PCB0bworICBvc3RyZWFtLgorKiBNb3JlIGNvbXBsZXRl
IGhhbmRsaW5nIG9mIGV4Y2VwdGlvbnMuCisqIEdURVNUX0FTU0VSVF9YWSBjYW4gYmUgdXNlZCBp
bnN0ZWFkIG9mIEFTU0VSVF9YWSBpbiBjYXNlIHRoZSBsYXR0ZXIKKyAgbmFtZSBpcyBhbHJlYWR5
IHVzZWQgYnkgYW5vdGhlciBsaWJyYXJ5LgorKiAtLWd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnMgaXMg
bm93IHRydWUgYnkgZGVmYXVsdCwgYWxsb3dpbmcgYSB0ZXN0CisgIHByb2dyYW0gdG8gY29udGlu
dWUgYWZ0ZXIgYW4gZXhjZXB0aW9uIGlzIHRocm93bi4KKyogVmFsdWUtcGFyYW1ldGVyaXplZCB0
ZXN0IGZpeHR1cmVzIGNhbiBub3cgZGVyaXZlIGZyb20gVGVzdCBhbmQKKyAgV2l0aFBhcmFtSW50
ZXJmYWNlPFQ+IHNlcGFyYXRlbHksIGVhc2luZyBjb252ZXJzaW9uIG9mIGxlZ2FjeSB0ZXN0cy4K
KyogRGVhdGggdGVzdCBtZXNzYWdlcyBhcmUgY2xlYXJseSBtYXJrZWQgdG8gbWFrZSB0aGVtIG1v
cmUKKyAgZGlzdGluZ3Vpc2hhYmxlIGZyb20gb3RoZXIgbWVzc2FnZXMuCisqIENvbXBhdGliaWxp
dHkgZml4ZXMgZm9yIEFuZHJvaWQsIEdvb2dsZSBOYXRpdmUgQ2xpZW50LCBNaW5HVywgSFAgVVgs
CisgIFBvd2VyUEMsIEx1Y2lkIGF1dG90b29scywgbGliQ1N0ZCwgU3VuIEMrKywgQm9ybGFuZCBD
KysgQnVpbGRlciAoQ29kZSBHZWFyKSwKKyAgSUJNIFhMIEMrKyAoVmlzdWFsIEFnZSBDKyspLCBh
bmQgQysrMHguCisqIEJ1ZyBmaXhlcyBhbmQgaW1wbGVtZW50YXRpb24gY2xlYW4tdXBzLgorKiBQ
b3RlbnRpYWxseSBpbmNvbXBhdGlibGUgY2hhbmdlczogZGlzYWJsZXMgdGhlIGhhcm1mdWwgJ21h
a2UgaW5zdGFsbCcKKyAgY29tbWFuZCBpbiBhdXRvdG9vbHMuCisKIENoYW5nZXMgZm9yIDEuNS4w
OgogCiAgKiBOZXcgZmVhdHVyZTogYXNzZXJ0aW9ucyBjYW4gYmUgc2FmZWx5IGNhbGxlZCBpbiBt
dWx0aXBsZSB0aHJlYWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NNYWtlTGlzdHMudHh0CmluZGV4
IGRkMTAwNWZlNmU1N2M1MjBiZTk3ZjRmODA1MmI0MjZmMGZlMDU2OGYuLjQzMDdiYzhiNzJmZWRl
NmFiODJmMGY5NTM3OTU1ZWJiYjFkZDRkMTMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NNYWtl
TGlzdHMudHh0CkBAIC0xLDE0ICsxLDEyIEBACiAjIFRoaXMgaXMgYW4gYWx0ZXJuYXRpdmUgQ01h
a2VMaXN0cy50eHQgdG8gdGhlIGV4cGVyaW1lbnRhbCBvbmUKICMgc2hpcHBlZCB3aXRoIHRoZSBv
cmlnaW5hbCBwYWNrYWdlLiBJdCBidWlsZHMgb25seSB0aGUgZXNzZW50aWFsCi0jIGZvciBvdXIg
dGVzdHMuIFRoZSBXZWJLaXQgdmVyc2lvbiBvZiBndGVzdCBuZWVkcyBhY2Nlc3MgdG8gc29tZQot
IyBoZWFkZXJzIGZyb20gV1RGIGFuZCBKU0MgZm9yIGNvbmZpZ3VyYXRpb24uCisjIGZvciBvdXIg
dGVzdHMuCiAKIHNldChHVEVTVF9ESVIgIiR7VEhJUkRQQVJUWV9ESVJ9L2d0ZXN0IikKIAogc2V0
KEdURVNUX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtHVEVTVF9ESVJ9IgogICAgICIke0dU
RVNUX0RJUn0vaW5jbHVkZSIKLSAgICAiJHtGT1JXQVJESU5HX0hFQURFUlNfRElSfSIKICkKIAog
c2V0KEdURVNUX1NPVVJDRVMKQEAgLTE3LDYgKzE1LDcgQEAgc2V0KEdURVNUX1NPVVJDRVMKICAg
ICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LWZpbGVwYXRoLmNjCiAgICAgJHtHVEVTVF9ESVJ9L3Ny
Yy9ndGVzdF9tYWluLmNjCiAgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1wb3J0LmNjCisgICAg
JHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1wcmludGVycy5jYwogICAgICR7R1RFU1RfRElSfS9zcmMv
Z3Rlc3QtdGVzdC1wYXJ0LmNjCiAgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC10eXBlZC10ZXN0
LmNjCiApCkBAIC0zMiwyMyArMzEsMTEgQEAgZWxzZSAoKQogZW5kaWYgKCkKIAogaW5jbHVkZV9k
aXJlY3Rvcmllcygke0dURVNUX0lOQ0xVREVfRElSRUNUT1JJRVN9KQotYWRkX2RlZmluaXRpb25z
KC1ER1RFU1RfSEFTX1JUVEk9MCkKIAogV0VCS0lUX0FERF9UQVJHRVRfQ1hYX0ZMQUdTKGd0ZXN0
IC1Xbm8tdW5kZWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtV25vLXN0cmlu
Z29wLXRydW5jYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtV25vLXN1
Z2dlc3QtYXR0cmlidXRlPWZvcm1hdCkKIAotIyBGSVhNRTogVGhpcyB3b3JrcyBhcm91bmQgY29t
cGF0aWJpbGl0eSBwcm9ibGVtcyBpbiB0aGUgb2xkIHZlcnNpb24gb2YgdGhlIHRoaXJkLXBhcnkK
LSMgZ29vZ2xldGVzdCBzb3VyY2UgY29kZSBjaGVja291dC4gSXQgc2hvdWxkIGJlIHJlbW92ZWQg
b25jZSB3ZSB1cGdyYWRlIHRvIGEgbmV3ZXIgdmVyc2lvbi4KLWlmIChDT01QSUxFUl9JU19DTEFO
RykKLSAgICBhZGRfZGVmaW5pdGlvbnMoLURHVEVTVF9IQVNfVFIxX1RVUExFPTApCi1lbmRpZiAo
KQotCi10YXJnZXRfbGlua19saWJyYXJpZXMoZ3Rlc3QKLSAgICBXVEYKLSkKLWFkZF9kZXBlbmRl
bmNpZXMoZ3Rlc3QgSmF2YVNjcmlwdENvcmVQcml2YXRlRm9yd2FyZGluZ0hlYWRlcnMpCi0KIGlm
IChDTUFLRV9VU0VfUFRIUkVBRFNfSU5JVCkKICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoZ3Rl
c3QgJHtDTUFLRV9USFJFQURfTElCU19JTklUfSkKICAgICBhZGRfZGVmaW5pdGlvbnMoLURHVEVT
VF9IQVNfUFRIUkVBRD0xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09O
VFJJQlVUT1JTIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09OVFJJQlVUT1JTCmluZGV4IDA5
MzRhZTEzMDU5YWZjZGMwNWRmODEyNDdlNjFiOWE4NGEyMzEyZTIuLmZlYWUyZmMwNDQxMGRjMzA4
ZTQ2NGFhMjU2ZmUxZjJkMzFlZGM5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L0NPTlRSSUJVVE9SUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DT05UUklCVVRP
UlMKQEAgLTIxLDYgKzIxLDcgQEAgTWFudWVsIEtsaW1layA8a2xpbWVrQGdvb2dsZS5jb20+CiBN
YXJrdXMgSGV1bGUgPG1hcmt1cy5oZXVsZUBnbWFpbC5jb20+CiBNaWthIFJhZW50byA8bWlraWVA
aWtpLmZpPgogTWlrbMOzcyBGYXpla2FzIDxtZmF6ZWthc0BzemVtYWZvci5jb20+CitQYXNpIFZh
bG1pbmVuIDxwYXNpLnZhbG1pbmVuQGdtYWlsLmNvbT4KIFBhdHJpY2sgSGFubmEgPHBoYW5uYUBn
b29nbGUuY29tPgogUGF0cmljayBSaWxleSA8cGZyQGdvb2dsZS5jb20+CiBQZXRlciBLYW1pbnNr
aSA8cGlvdHJrQGdvb2dsZS5jb20+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9DT1BZSU5HIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09QWUlORwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTk0MWExMWY4Y2U5NDM4OTE2MGI0NTg5MjdhMjliYTIxNzU0Mjgx
OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9DT1BZSU5HCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAot
Q29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi1BbGwgcmlnaHRzIHJlc2VydmVkLgotCi1SZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQotICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLW5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLWNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLWluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLWRpc3RyaWJ1dGlvbi4KLSAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLWNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi10aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotCi1USElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
TElDRU5TRSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0xJQ0VOU0UKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTk0
MWExMWY4Y2U5NDM4OTE2MGI0NTg5MjdhMjliYTIxNzU0MjgxOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0xJQ0VOU0UKQEAgLTAsMCArMSwyOCBAQAorQ29weXJp
Z2h0IDIwMDgsIEdvb2dsZSBJbmMuCitBbGwgcmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
K21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKK21ldDoKKworICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKK25vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKK2NvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKK2luIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKK2Rpc3RyaWJ1dGlvbi4KKyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKK2NvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCit0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCitBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCitTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCitMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKK0RBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CitPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvTWFrZWZp
bGUuYW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9NYWtlZmlsZS5hbQppbmRleCA4ZDc1ZTMy
Y2MyMGNkZTgzYzE3NGY0ZTA3OGUyOTkzYTkzMmE5ZDE4Li5iNDRjODQxNmJhMDgwYzJmMDE2ZjE2
NmIxOGI0MmMwZjczZWNlN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9N
YWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9NYWtlZmlsZS5hbQpAQCAt
MSwxMyArMSwxNiBAQAogIyBBdXRvbWFrZSBmaWxlCiAKK0FDTE9DQUxfQU1GTEFHUyA9IC1JIG00
CisKICMgTm9uc3RhbmRhcmQgcGFja2FnZSBmaWxlcyBmb3IgZGlzdHJpYnV0aW9uCiBFWFRSQV9E
SVNUID0gXAogICBDSEFOR0VTIFwKICAgQ09OVFJJQlVUT1JTIFwKKyAgTElDRU5TRSBcCiAgIGlu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1bXAgXAorICBpbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcCBcCiAgIGluY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1wIFwKICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wIFwKLSAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oLnB1bXAgXAogICBtYWtlL01ha2VmaWxlIFwKICAgc2Ny
aXB0cy9mdXNlX2d0ZXN0X2ZpbGVzLnB5IFwKICAgc2NyaXB0cy9nZW5fZ3Rlc3RfcHJlZF9pbXBs
LnB5IFwKQEAgLTE3LDE5ICsyMCwyMSBAQCBFWFRSQV9ESVNUID0gXAogIyBndGVzdCBzb3VyY2Ug
ZmlsZXMgdGhhdCB3ZSBkb24ndCBjb21waWxlIGRpcmVjdGx5LiAgVGhleSBhcmUKICMgI2luY2x1
ZGVkIGJ5IGd0ZXN0LWFsbC5jYy4KIEdURVNUX1NSQyA9IFwKLSAgc3JjL2d0ZXN0LmNjIFwKICAg
c3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MgXAogICBzcmMvZ3Rlc3QtZmlsZXBhdGguY2MgXAogICBz
cmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmggXAogICBzcmMvZ3Rlc3QtcG9ydC5jYyBcCisgIHNyYy9n
dGVzdC1wcmludGVycy5jYyBcCiAgIHNyYy9ndGVzdC10ZXN0LXBhcnQuY2MgXAotICBzcmMvZ3Rl
c3QtdHlwZWQtdGVzdC5jYworICBzcmMvZ3Rlc3QtdHlwZWQtdGVzdC5jYyBcCisgIHNyYy9ndGVz
dC5jYwogCiBFWFRSQV9ESVNUICs9ICQoR1RFU1RfU1JDKQogCiAjIFNhbXBsZSBmaWxlcyB0aGF0
IHdlIGRvbid0IGNvbXBpbGUuCiBFWFRSQV9ESVNUICs9IFwKICAgc2FtcGxlcy9wcmltZV90YWJs
ZXMuaCBcCisgIHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYyBcCiAgIHNhbXBsZXMvc2FtcGxl
Ml91bml0dGVzdC5jYyBcCiAgIHNhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYyBcCiAgIHNhbXBs
ZXMvc2FtcGxlNF91bml0dGVzdC5jYyBcCkBAIC00MSw4OCArNDYsOTEgQEAgRVhUUkFfRElTVCAr
PSBcCiAKICMgQysrIHRlc3QgZmlsZXMgdGhhdCB3ZSBkb24ndCBjb21waWxlIGRpcmVjdGx5Lgog
RVhUUkFfRElTVCArPSBcCisgIHRlc3QvZ3Rlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNjIFwKICAg
dGVzdC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0X2Vudmlyb25tZW50
X3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0
LWxpbmtlZF9wdHJfdGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYyBcCiAg
IHRlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdF9ub190ZXN0X3VuaXR0
ZXN0LmNjIFwKICAgdGVzdC9ndGVzdC1vcHRpb25zX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXBh
cmFtLXRlc3RfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtcGFyYW0tdGVzdDJfdGVzdC5jYyBcCisg
IHRlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0Mi10ZXN0LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0
LXBhcmFtLXRlc3QyLXRlc3QuY2MgXAorICB0ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0
LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYyBcCiAgIHRlc3QvZ3Rl
c3QtcGFyYW0tdGVzdF90ZXN0LmggXAogICB0ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYyBcCisgIHRl
c3QvZ3Rlc3RfcHJlbWF0dXJlX2V4aXRfdGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3QtcHJpbnRlcnNf
dGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2MgXAorICB0ZXN0L2dvb2ds
ZXRlc3QtdHVwbGUtdGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYyBc
CisgIHRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC10eXBlZC10
ZXN0X3Rlc3QuaCBcCisgIHRlc3QvZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2MgXAorICB0ZXN0
L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8uY2MgXAorICB0ZXN0L2dvb2ds
ZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0Xy5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC1jb2xv
ci10ZXN0Xy5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3RfLmNjIFwKKyAgdGVz
dC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LWZpbHRlci11
bml0dGVzdF8uY2MgXAorICB0ZXN0L2d0ZXN0X2hlbHBfdGVzdF8uY2MgXAorICB0ZXN0L2dvb2ds
ZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdF8uY2MgXAorICB0ZXN0L2d0ZXN0X21haW5fdW5pdHRl
c3QuY2MgXAorICB0ZXN0L2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QuY2MgXAorICB0ZXN0L2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjIFwKICAgdGVzdC9ndGVzdF9wcmVkX2ltcGxfdW5pdHRlc3Qu
Y2MgXAogICB0ZXN0L2d0ZXN0X3Byb2RfdGVzdC5jYyBcCi0gIHRlc3QvcHJvZHVjdGlvbi5jYyBc
Ci0gIHRlc3QvcHJvZHVjdGlvbi5oIFwKICAgdGVzdC9ndGVzdF9yZXBlYXRfdGVzdC5jYyBcCisg
IHRlc3QvZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfLmNjIFwKICAgdGVzdC9ndGVzdF9zb2xlX2hl
YWRlcl90ZXN0LmNjIFwKICAgdGVzdC9ndGVzdF9zdHJlc3NfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rl
c3QtdGVzdC1wYXJ0X3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfZXhf
dGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNjIFwKLSAgdGVzdC9ndGVz
dC10eXBlZC10ZXN0Ml90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuaCBc
CisgIHRlc3QvZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfLmNjIFwKKyAgdGVzdC9n
b29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdF8uY2MgXAogICB0ZXN0L2d0ZXN0X3VuaXR0ZXN0
LmNjIFwKLSAgdGVzdC9ndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3Qt
bGlzdGVuZXJfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfbWFpbl91bml0dGVzdC5jYyBcCiAgIHRl
c3QvZ3Rlc3RfdW5pdHRlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXR1cGxlX3Rlc3QuY2MgXAotICB0
ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtcGFyYW0tdGVzdDJf
dGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8uY2MgXAot
ICB0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3Rf
LmNjIFwKLSAgdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9o
ZWxwX3Rlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYyBcCi0g
IHRlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3Rf
LmNjIFwKLSAgdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3RfLmNjIFwKLSAgdGVzdC9n
dGVzdF91bmluaXRpYWxpemVkX3Rlc3RfLmNjIFwKICAgdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTFf
dGVzdF8uY2MgXAogICB0ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMl90ZXN0Xy5jYyBcCi0gIHRlc3Qv
Z3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MKKyAgdGVzdC9ndGVzdF94bWxfb3V0cHV0X3Vu
aXR0ZXN0Xy5jYyBcCisgIHRlc3QvcHJvZHVjdGlvbi5jYyBcCisgIHRlc3QvcHJvZHVjdGlvbi5o
CiAKICMgUHl0aG9uIHRlc3RzIHRoYXQgd2UgZG9uJ3QgcnVuLgogRVhUUkFfRElTVCArPSBcCi0g
IHRlc3QvZ3Rlc3RfdGVzdF91dGlscy5weSBcCi0gIHRlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMu
cHkgXAotICB0ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkgXAotICB0ZXN0
L2d0ZXN0X2NvbG9yX3Rlc3QucHkgXAotICB0ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weSBcCi0g
IHRlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LWJyZWFr
LW9uLWZhaWx1cmUtdW5pdHRlc3QucHkgXAorICB0ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0
aW9ucy10ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LWNvbG9yLXRlc3QucHkgXAorICB0ZXN0
L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LWZpbHRlci11
bml0dGVzdC5weSBcCiAgIHRlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF9s
aXN0X3Rlc3RzX3VuaXR0ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF9vdXRwdXRfdGVzdC5weSBcCi0g
IHRlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQgXAotICB0ZXN0L2d0ZXN0X291
dHB1dF90ZXN0X2dvbGRlbl93aW4udHh0IFwKLSAgdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3QucHkg
XAotICB0ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3Rf
dW5pbml0aWFsaXplZF90ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5p
dHRlc3QucHkgXAorICB0ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3QucHkgXAorICB0ZXN0L2dv
b2dsZXRlc3Qtb3V0cHV0LXRlc3RfZ29sZGVuX2xpbi50eHQgXAorICB0ZXN0L2dvb2dsZXRlc3Qt
c2h1ZmZsZS10ZXN0LnB5IFwKKyAgdGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5IFwKKyAgdGVzdC9n
b29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdC5weSBcCisgIHRlc3QvZ29vZ2xldGVzdC11
bmluaXRpYWxpemVkLXRlc3QucHkgXAogICB0ZXN0L2d0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5
IFwKICAgdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0LnB5IFwKLSAgdGVzdC9ydW5fdGVz
dHNfdXRpbC5weSBcCi0gIHRlc3QvcnVuX3Rlc3RzX3V0aWxfdGVzdC5weQorICB0ZXN0L2d0ZXN0
X3htbF90ZXN0X3V0aWxzLnB5CiAKICMgQ01ha2Ugc2NyaXB0CiBFWFRSQV9ESVNUICs9IFwKLSAg
Q01ha2VMaXN0cy50eHQKKyAgQ01ha2VMaXN0cy50eHQgXAorICBjbWFrZS9pbnRlcm5hbF91dGls
cy5jbWFrZQogCiAjIE1TVkMgcHJvamVjdCBmaWxlcwogRVhUUkFfRElTVCArPSBcCi0gIG1zdmMv
Z3Rlc3QtbWQuc2xuIFwKLSAgbXN2Yy9ndGVzdC5zbG4gXAotICBtc3ZjL2d0ZXN0LW1kLnZjcHJv
aiBcCi0gIG1zdmMvZ3Rlc3QudmNwcm9qIFwKLSAgbXN2Yy9ndGVzdF9tYWluLW1kLnZjcHJvaiBc
Ci0gIG1zdmMvZ3Rlc3RfbWFpbi52Y3Byb2ogXAotICBtc3ZjL2d0ZXN0X3Byb2RfdGVzdC1tZC52
Y3Byb2ogXAotICBtc3ZjL2d0ZXN0X3Byb2RfdGVzdC52Y3Byb2ogXAotICBtc3ZjL2d0ZXN0X3Vu
aXR0ZXN0LW1kLnZjcHJvaiBcCi0gIG1zdmMvZ3Rlc3RfdW5pdHRlc3QudmNwcm9qCisgIG1zdmMv
MjAxMC9ndGVzdC1tZC5zbG4gXAorICBtc3ZjLzIwMTAvZ3Rlc3QtbWQudmN4cHJvaiBcCisgIG1z
dmMvMjAxMC9ndGVzdC5zbG4gXAorICBtc3ZjLzIwMTAvZ3Rlc3QudmN4cHJvaiBcCisgIG1zdmMv
MjAxMC9ndGVzdF9tYWluLW1kLnZjeHByb2ogXAorICBtc3ZjLzIwMTAvZ3Rlc3RfbWFpbi52Y3hw
cm9qIFwKKyAgbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qIFwKKyAgbXN2Yy8y
MDEwL2d0ZXN0X3Byb2RfdGVzdC52Y3hwcm9qIFwKKyAgbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0
LW1kLnZjeHByb2ogXAorICBtc3ZjLzIwMTAvZ3Rlc3RfdW5pdHRlc3QudmN4cHJvagogCiAjIHhj
b2RlIHByb2plY3QgZmlsZXMKIEVYVFJBX0RJU1QgKz0gXApAQCAtMTMzLDMxICsxNDEsMjcgQEAg
RVhUUkFfRElTVCArPSBcCiAgIHhjb2RlL0NvbmZpZy9TdGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29u
ZmlnIFwKICAgeGNvZGUvQ29uZmlnL1Rlc3RUYXJnZXQueGNjb25maWcgXAogICB4Y29kZS9SZXNv
dXJjZXMvSW5mby5wbGlzdCBcCi0gIHhjb2RlL1NjcmlwdHMvdmVyc2lvbmdlbmVyYXRlLnB5IFwK
ICAgeGNvZGUvU2NyaXB0cy9ydW50ZXN0cy5zaCBcCisgIHhjb2RlL1NjcmlwdHMvdmVyc2lvbmdl
bmVyYXRlLnB5IFwKICAgeGNvZGUvZ3Rlc3QueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagogCiAj
IHhjb2RlIHNhbXBsZSBmaWxlcwogRVhUUkFfRElTVCArPSBcCiAgIHhjb2RlL1NhbXBsZXMvRnJh
bWV3b3JrU2FtcGxlL0luZm8ucGxpc3QgXAorICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBs
ZS9XaWRnZXRGcmFtZXdvcmsueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBcCiAgIHhjb2RlL1Nh
bXBsZXMvRnJhbWV3b3JrU2FtcGxlL3J1bnRlc3RzLnNoIFwKLSAgeGNvZGUvU2FtcGxlcy9GcmFt
ZXdvcmtTYW1wbGUvd2lkZ2V0X3Rlc3QuY2MgXAogICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1Nh
bXBsZS93aWRnZXQuY2MgXAogICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS93aWRnZXQu
aCBcCi0gIHhjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL1dpZGdldEZyYW1ld29yay54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisgIHhjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dp
ZGdldF90ZXN0LmNjCiAKICMgQysrQnVpbGRlciBwcm9qZWN0IGZpbGVzCiBFWFRSQV9ESVNUICs9
IFwKKyAgY29kZWdlYXIvZ3Rlc3QuY2Jwcm9qIFwKKyAgY29kZWdlYXIvZ3Rlc3QuZ3JvdXBwcm9q
IFwKICAgY29kZWdlYXIvZ3Rlc3RfYWxsLmNjIFwKICAgY29kZWdlYXIvZ3Rlc3RfbGluay5jYyBc
Ci0gIGNvZGVnZWFyL2d0ZXN0LmNicHJvaiBcCiAgIGNvZGVnZWFyL2d0ZXN0X21haW4uY2Jwcm9q
IFwKLSAgY29kZWdlYXIvZ3Rlc3RfdW5pdHRlc3QuY2Jwcm9qIFwKLSAgY29kZWdlYXIvZ3Rlc3Qu
Z3JvdXBwcm9qCi0KLSMgU2NyaXB0cyBhbmQgdXRpbGl0aWVzCi1iaW5fU0NSSVBUUyA9IHNjcmlw
dHMvZ3Rlc3QtY29uZmlnCi1DTEVBTkZJTEVTID0gJChiaW5fU0NSSVBUUykKKyAgY29kZWdlYXIv
Z3Rlc3RfdW5pdHRlc3QuY2Jwcm9qCiAKICMgRGlzdHJpYnV0ZSBhbmQgaW5zdGFsbCBNNCBtYWNy
bwogbTRkYXRhZGlyID0gJChkYXRhZGlyKS9hY2xvY2FsCkBAIC0xODEsMTUgKzE4NSwxNyBAQCBs
aWJfTFRMSUJSQVJJRVMgPSBsaWIvbGliZ3Rlc3QubGEgbGliL2xpYmd0ZXN0X21haW4ubGEKIAog
bGliX2xpYmd0ZXN0X2xhX1NPVVJDRVMgPSBzcmMvZ3Rlc3QtYWxsLmNjCiAKLXBrZ2luY2x1ZGVf
SEVBREVSUyA9IGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCBcCi0gICAgICAgICAgICAgICAgICAgICBp
bmNsdWRlL2d0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaCBcCi0gICAgICAgICAgICAgICAgICAgICBp
bmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCBcCi0gICAgICAgICAgICAgICAgICAgICBpbmNs
dWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaCBcCi0gICAgICAgICAgICAgICAgICAgICBpbmNs
dWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIFwKLSAgICAgICAgICAgICAgICAgICAgIGluY2x1
ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oIFwKLSAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUvZ3Rl
c3QvZ3Rlc3Qtc3BpLmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVz
dC10ZXN0LXBhcnQuaCBcCi0gICAgICAgICAgICAgICAgICAgICBpbmNsdWRlL2d0ZXN0L2d0ZXN0
LXR5cGVkLXRlc3QuaAorcGtnaW5jbHVkZV9IRUFERVJTID0gXAorICBpbmNsdWRlL2d0ZXN0L2d0
ZXN0LWRlYXRoLXRlc3QuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIFwKKyAg
aW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0
LXByaW50ZXJzLmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXNwaS5oIFwKKyAgaW5jbHVkZS9n
dGVzdC9ndGVzdC10ZXN0LXBhcnQuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVz
dC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdF9w
cmVkX2ltcGwuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oCiAKIHBrZ2luY2x1ZGVf
aW50ZXJuYWxkaXIgPSAkKHBrZ2luY2x1ZGVkaXIpL2ludGVybmFsCiBwa2dpbmNsdWRlX2ludGVy
bmFsX0hFQURFUlMgPSBcCkBAIC0yMDAsNjEgKzIwNiw5NyBAQCBwa2dpbmNsdWRlX2ludGVybmFs
X0hFQURFUlMgPSBcCiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1n
ZW5lcmF0ZWQuaCBcCiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5o
IFwKICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmggXAorICBpbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oIFwKICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC1zdHJpbmcuaCBcCiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUu
aCBcCi0gIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgKKyAgaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvY3VzdG9tL2d0ZXN0LmggXAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9n
dGVzdC1wb3J0LmggXAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wcmlu
dGVycy5oCiAKIGxpYl9saWJndGVzdF9tYWluX2xhX1NPVVJDRVMgPSBzcmMvZ3Rlc3RfbWFpbi5j
YwogbGliX2xpYmd0ZXN0X21haW5fbGFfTElCQUREID0gbGliL2xpYmd0ZXN0LmxhCiAKLSMgQnVs
aWQgcnVsZXMgZm9yIHNhbXBsZXMgYW5kIHRlc3RzLiBBdXRvbWFrZSdzIG5hbWluZyBmb3Igc29t
ZSBvZgorIyBCdWlsZCBydWxlcyBmb3Igc2FtcGxlcyBhbmQgdGVzdHMuIEF1dG9tYWtlJ3MgbmFt
aW5nIGZvciBzb21lIG9mCiAjIHRoZXNlIHZhcmlhYmxlcyBpc24ndCB0ZXJyaWJseSBvYnZpb3Vz
LCBzbyB0aGlzIGlzIGEgYnJpZWYKICMgcmVmZXJlbmNlOgogIwogIyBURVNUUyAtLSBQcm9ncmFt
cyBydW4gYXV0b21hdGljYWxseSBieSAibWFrZSBjaGVjayIKICMgY2hlY2tfUFJPR1JBTVMgLS0g
UHJvZ3JhbXMgYnVpbHQgYnkgIm1ha2UgY2hlY2siIGJ1dCBub3QgbmVjZXNzYXJpbHkgcnVuCiAK
LW5vaW5zdF9MVExJQlJBUklFUyA9IHNhbXBsZXMvbGlic2FtcGxlcy5sYQotCi1zYW1wbGVzX2xp
YnNhbXBsZXNfbGFfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlMS5jYyBcCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvc2FtcGxlMS5oIFwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2FtcGxlcy9zYW1wbGUyLmNjIFwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2FtcGxlcy9zYW1wbGUyLmggXAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzYW1wbGVzL3NhbXBsZTMtaW5sLmggXAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzYW1wbGVzL3NhbXBsZTQuY2MgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzYW1wbGVzL3NhbXBsZTQuaAotCiBURVNUUz0KIFRFU1RTX0VOVklST05NRU5UID0gR1RF
U1RfU09VUkNFX0RJUj0iJChzcmNkaXIpL3Rlc3QiIFwKICAgICAgICAgICAgICAgICAgICAgR1RF
U1RfQlVJTERfRElSPSIkKHRvcF9idWlsZGRpcikvdGVzdCIKIGNoZWNrX1BST0dSQU1TPQogCiAj
IEEgc2ltcGxlIHNhbXBsZSBvbiB1c2luZyBndGVzdC4KLVRFU1RTICs9IHNhbXBsZXMvc2FtcGxl
MV91bml0dGVzdAotY2hlY2tfUFJPR1JBTVMgKz0gc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0Ci1z
YW1wbGVzX3NhbXBsZTFfdW5pdHRlc3RfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlMV91bml0dGVz
dC5jYworVEVTVFMgKz0gc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3Nh
bXBsZTJfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlM191bml0dGVzdCBcCisgICAgc2Ft
cGxlcy9zYW1wbGU0X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QgXAor
ICAgIHNhbXBsZXMvc2FtcGxlNl91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGU3X3VuaXR0
ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxl
OV91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdAorY2hlY2tfUFJPR1JB
TVMgKz0gc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTJfdW5p
dHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlM191bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1w
bGU0X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QgXAorICAgIHNhbXBs
ZXMvc2FtcGxlNl91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGU3X3VuaXR0ZXN0IFwKKyAg
ICBzYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlOV91bml0dGVz
dCBcCisgICAgc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdAorCitzYW1wbGVzX3NhbXBsZTFfdW5p
dHRlc3RfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYyBzYW1wbGVzL3NhbXBs
ZTEuY2MKIHNhbXBsZXNfc2FtcGxlMV91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWlu
LmxhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvbGlic2FtcGxl
cy5sYQotCi0jIEFub3RoZXIgc2FtcGxlLiAgSXQgYWxzbyB2ZXJpZmllcyB0aGF0IGxpYmd0ZXN0
IHdvcmtzLgotVEVTVFMgKz0gc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdAotY2hlY2tfUFJPR1JB
TVMgKz0gc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBsZTJfdW5pdHRlc3RfU09VUkNF
UyA9IHNhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYyBzYW1wbGVzL3NhbXBsZTIuY2MKK3NhbXBs
ZXNfc2FtcGxlMl91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWluLmxhIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQorc2FtcGxlc19zYW1w
bGUzX3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MKK3NhbXBs
ZXNfc2FtcGxlM191bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWluLmxhIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQorc2FtcGxlc19zYW1w
bGU0X3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QuY2Mgc2FtcGxl
cy9zYW1wbGU0LmNjCitzYW1wbGVzX3NhbXBsZTRfdW5pdHRlc3RfTERBREQgPSBsaWIvbGliZ3Rl
c3RfbWFpbi5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWIvbGliZ3Rl
c3QubGEKK3NhbXBsZXNfc2FtcGxlNV91bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGU1
X3VuaXR0ZXN0LmNjIHNhbXBsZXMvc2FtcGxlMS5jYworc2FtcGxlc19zYW1wbGU1X3VuaXR0ZXN0
X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBsZTZfdW5pdHRlc3RfU09VUkNF
UyA9IHNhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYworc2FtcGxlc19zYW1wbGU2X3VuaXR0ZXN0
X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBsZTdfdW5pdHRlc3RfU09VUkNF
UyA9IHNhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYworc2FtcGxlc19zYW1wbGU3X3VuaXR0ZXN0
X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBsZThfdW5pdHRlc3RfU09VUkNF
UyA9IHNhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYworc2FtcGxlc19zYW1wbGU4X3VuaXR0ZXN0
X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCisKKyMgQWxzbyB2ZXJpZnkgdGhhdCBsaWJndGVzdCB3
b3JrcyBieSBpdHNlbGYuCitzYW1wbGVzX3NhbXBsZTlfdW5pdHRlc3RfU09VUkNFUyA9IHNhbXBs
ZXMvc2FtcGxlOV91bml0dGVzdC5jYworc2FtcGxlc19zYW1wbGU5X3VuaXR0ZXN0X0xEQUREID0g
bGliL2xpYmd0ZXN0LmxhCiBzYW1wbGVzX3NhbXBsZTEwX3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1w
bGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjCiBzYW1wbGVzX3NhbXBsZTEwX3VuaXR0ZXN0X0xEQURE
ID0gbGliL2xpYmd0ZXN0LmxhCiAKICMgVGhpcyB0ZXN0cyBtb3N0IGNvbnN0cnVjdHMgb2YgZ3Rl
c3QgYW5kIHZlcmlmaWVzIHRoYXQgbGliZ3Rlc3RfbWFpbgotIyB3b3Jrcy4KKyMgYW5kIGxpYmd0
ZXN0IHdvcmsuCiBURVNUUyArPSB0ZXN0L2d0ZXN0X2FsbF90ZXN0CiBjaGVja19QUk9HUkFNUyAr
PSB0ZXN0L2d0ZXN0X2FsbF90ZXN0CiB0ZXN0X2d0ZXN0X2FsbF90ZXN0X1NPVVJDRVMgPSB0ZXN0
L2d0ZXN0X2FsbF90ZXN0LmNjCi10ZXN0X2d0ZXN0X2FsbF90ZXN0X0xEQUREID0gbGliL2xpYmd0
ZXN0X21haW4ubGEKK3Rlc3RfZ3Rlc3RfYWxsX3Rlc3RfTERBREQgPSBsaWIvbGliZ3Rlc3RfbWFp
bi5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCiAKICMg
VGVzdHMgdGhhdCBmdXNlZCBndGVzdCBmaWxlcyBjb21waWxlIGFuZCB3b3JrLgogRlVTRURfR1RF
U1RfU1JDID0gXAogICBmdXNlZC1zcmMvZ3Rlc3QvZ3Rlc3QtYWxsLmNjIFwKLSAgZnVzZWQtc3Jj
L2d0ZXN0L2d0ZXN0X21haW4uY2MgXAotICBmdXNlZC1zcmMvZ3Rlc3QvZ3Rlc3QuaAorICBmdXNl
ZC1zcmMvZ3Rlc3QvZ3Rlc3QuaCBcCisgIGZ1c2VkLXNyYy9ndGVzdC9ndGVzdF9tYWluLmNjCiAK
K2lmIEhBVkVfUFlUSE9OCiBURVNUUyArPSB0ZXN0L2Z1c2VkX2d0ZXN0X3Rlc3QKIGNoZWNrX1BS
T0dSQU1TICs9IHRlc3QvZnVzZWRfZ3Rlc3RfdGVzdAogdGVzdF9mdXNlZF9ndGVzdF90ZXN0X1NP
VVJDRVMgPSAkKEZVU0VEX0dURVNUX1NSQykgXApAQCAtMjc4LDcgKzMyMCwyMCBAQCBmdXNlZC1n
dGVzdDogJChwa2dpbmNsdWRlX0hFQURFUlMpICQocGtnaW5jbHVkZV9pbnRlcm5hbF9IRUFERVJT
KSBcCiAKIG1haW50YWluZXItY2xlYW4tbG9jYWw6CiAJcm0gLXJmICIkKHNyY2RpcikvZnVzZWQt
c3JjIgorZW5kaWYKIAogIyBEZWF0aCB0ZXN0cyBtYXkgcHJvZHVjZSBjb3JlIGR1bXBzIGluIHRo
ZSBidWlsZCBkaXJlY3RvcnkuIEluIGNhc2UKICMgdGhpcyBoYXBwZW5zLCBjbGVhbiB0aGVtIHRv
IGtlZXAgZGlzdGNsZWFuY2hlY2sgaGFwcHkuCi1DTEVBTkZJTEVTICs9IGNvcmUKK0NMRUFORklM
RVMgPSBjb3JlCisKKyMgRGlzYWJsZXMgJ21ha2UgaW5zdGFsbCcgYXMgaW5zdGFsbGluZyBhIGNv
bXBpbGVkIHZlcnNpb24gb2YgR29vZ2xlCisjIFRlc3QgY2FuIGxlYWQgdG8gdW5kZWZpbmVkIGJl
aGF2aW9yIGR1ZSB0byB2aW9sYXRpb24gb2YgdGhlCisjIE9uZS1EZWZpbml0aW9uIFJ1bGUuCisK
K2luc3RhbGwtZXhlYy1sb2NhbDoKKwllY2hvICInbWFrZSBpbnN0YWxsJyBpcyBkYW5nZXJvdXMg
YW5kIG5vdCBzdXBwb3J0ZWQuIEluc3RlYWQsIHNlZSBSRUFETUUgZm9yIGhvdyB0byBpbnRlZ3Jh
dGUgR29vZ2xlIFRlc3QgaW50byB5b3VyIGJ1aWxkIHN5c3RlbS4iCisJZmFsc2UKKworaW5zdGFs
bC1kYXRhLWxvY2FsOgorCWVjaG8gIidtYWtlIGluc3RhbGwnIGlzIGRhbmdlcm91cyBhbmQgbm90
IHN1cHBvcnRlZC4gSW5zdGVhZCwgc2VlIFJFQURNRSBmb3IgaG93IHRvIGludGVncmF0ZSBHb29n
bGUgVGVzdCBpbnRvIHlvdXIgYnVpbGQgc3lzdGVtLiIKKwlmYWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVBRE1FIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVB
RE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzYxMTkwMDIwOTkxNTBkNzE1NzQ5
YTE2ZTAzYzJmNTczNjg2YmI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRQorKysgL2Rldi9udWxsCkBA
IC0xLDQxNyArMCwwIEBACi1Hb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrCi09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0KLWh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0
LwotCi1PdmVydmlldwotLS0tLS0tLS0KLQotR29vZ2xlJ3MgZnJhbWV3b3JrIGZvciB3cml0aW5n
IEMrKyB0ZXN0cyBvbiBhIHZhcmlldHkgb2YgcGxhdGZvcm1zCi0oTGludXgsIE1hYyBPUyBYLCBX
aW5kb3dzLCBXaW5kb3dzIENFLCBTeW1iaWFuLCBldGMpLiAgQmFzZWQgb24gdGhlCi14VW5pdCBh
cmNoaXRlY3R1cmUuICBTdXBwb3J0cyBhdXRvbWF0aWMgdGVzdCBkaXNjb3ZlcnksIGEgcmljaCBz
ZXQgb2YKLWFzc2VydGlvbnMsIHVzZXItZGVmaW5lZCBhc3NlcnRpb25zLCBkZWF0aCB0ZXN0cywg
ZmF0YWwgYW5kIG5vbi1mYXRhbAotZmFpbHVyZXMsIHZhcmlvdXMgb3B0aW9ucyBmb3IgcnVubmlu
ZyB0aGUgdGVzdHMsIGFuZCBYTUwgdGVzdCByZXBvcnQKLWdlbmVyYXRpb24uCi0KLVBsZWFzZSBz
ZWUgdGhlIHByb2plY3QgcGFnZSBhYm92ZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhcyB3ZWxsIGFz
IHRoZQotbWFpbGluZyBsaXN0IGZvciBxdWVzdGlvbnMsIGRpc2N1c3Npb25zLCBhbmQgZGV2ZWxv
cG1lbnQuICBUaGVyZSBpcwotYWxzbyBhbiBJUkMgY2hhbm5lbCBvbiBPRlRDIChpcmMub2Z0Yy5u
ZXQpICNndGVzdCBhdmFpbGFibGUuICBQbGVhc2UKLWpvaW4gdXMhCi0KLVJlcXVpcmVtZW50cyBm
b3IgRW5kIFVzZXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Hb29nbGUgVGVzdCBp
cyBkZXNpZ25lZCB0byBoYXZlIGZhaXJseSBtaW5pbWFsIHJlcXVpcmVtZW50cyB0byBidWlsZAot
YW5kIHVzZSB3aXRoIHlvdXIgcHJvamVjdHMsIGJ1dCB0aGVyZSBhcmUgc29tZS4gIEN1cnJlbnRs
eSwgd2Ugc3VwcG9ydAotTGludXgsIFdpbmRvd3MsIE1hYyBPUyBYLCBhbmQgQ3lnd2luLiAgV2Ug
d2lsbCBhbHNvIG1ha2Ugb3VyIGJlc3QKLWVmZm9ydCB0byBzdXBwb3J0IG90aGVyIHBsYXRmb3Jt
cyAoZS5nLiBTb2xhcmlzLCBBSVgsIGFuZCB6L09TKS4KLUhvd2V2ZXIsIHNpbmNlIGNvcmUgbWVt
YmVycyBvZiB0aGUgR29vZ2xlIFRlc3QgcHJvamVjdCBoYXZlIG5vIGFjY2VzcwotdG8gdGhlc2Ug
cGxhdGZvcm1zLCBHb29nbGUgVGVzdCBtYXkgaGF2ZSBvdXRzdGFuZGluZyBpc3N1ZXMgdGhlcmUu
ICBJZgoteW91IG5vdGljZSBhbnkgcHJvYmxlbXMgb24geW91ciBwbGF0Zm9ybSwgcGxlYXNlIG5v
dGlmeQotZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tLiAgUGF0Y2hlcyBmb3Ig
Zml4aW5nIHRoZW0gYXJlCi1ldmVuIG1vcmUgd2VsY29tZSEKLQotIyMjIExpbnV4IFJlcXVpcmVt
ZW50cyAjIyMKLQotVGhlc2UgYXJlIHRoZSBiYXNlIHJlcXVpcmVtZW50cyB0byBidWlsZCBhbmQg
dXNlIEdvb2dsZSBUZXN0IGZyb20gYSBzb3VyY2UKLXBhY2thZ2UgKGFzIGRlc2NyaWJlZCBiZWxv
dyk6Ci0gICogR05VLWNvbXBhdGlibGUgTWFrZSBvciBnbWFrZQotICAqIFBPU0lYLXN0YW5kYXJk
IHNoZWxsCi0gICogUE9TSVgoLTIpIFJlZ3VsYXIgRXhwcmVzc2lvbnMgKHJlZ2V4LmgpCi0gICog
QSBDKys5OC1zdGFuZGFyZC1jb21wbGlhbnQgY29tcGlsZXIKLQotIyMjIFdpbmRvd3MgUmVxdWly
ZW1lbnRzICMjIwotCi0gICogTWljcm9zb2Z0IFZpc3VhbCBDKysgNy4xIG9yIG5ld2VyCi0KLSMj
IyBDeWd3aW4gUmVxdWlyZW1lbnRzICMjIwotCi0gICogQ3lnd2luIDEuNS4yNS0xNCBvciBuZXdl
cgotCi0jIyMgTWFjIE9TIFggUmVxdWlyZW1lbnRzICMjIwotCi0gICogTWFjIE9TIFggMTAuNCBU
aWdlciBvciBuZXdlcgotICAqIERldmVsb3BlciBUb29scyBJbnN0YWxsZWQKLQotQWxzbywgeW91
J2xsIG5lZWQgQ01ha2UgMi42LjQgb3IgaGlnaGVyIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHRoZQot
c2FtcGxlcyB1c2luZyB0aGUgcHJvdmlkZWQgQ01ha2Ugc2NyaXB0LCByZWdhcmRsZXNzIG9mIHRo
ZSBwbGF0Zm9ybS4KLQotUmVxdWlyZW1lbnRzIGZvciBDb250cmlidXRvcnMKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0KLVdlIHdlbGNvbWUgcGF0Y2hlcy4gIElmIHlvdSBwbGFuIHRv
IGNvbnRyaWJ1dGUgYSBwYXRjaCwgeW91IG5lZWQgdG8KLWJ1aWxkIEdvb2dsZSBUZXN0IGFuZCBp
dHMgb3duIHRlc3RzIGZyb20gYW4gU1ZOIGNoZWNrb3V0IChkZXNjcmliZWQKLWJlbG93KSwgd2hp
Y2ggaGFzIGZ1cnRoZXIgcmVxdWlyZW1lbnRzOgotCi0gICogUHl0aG9uIHZlcnNpb24gMi4zIG9y
IG5ld2VyIChmb3IgcnVubmluZyBzb21lIG9mIHRoZSB0ZXN0cyBhbmQKLSAgICByZS1nZW5lcmF0
aW5nIGNlcnRhaW4gc291cmNlIGZpbGVzIGZyb20gdGVtcGxhdGVzKQotICAqIENNYWtlIDIuNi40
IG9yIG5ld2VyCi0KLUdldHRpbmcgdGhlIFNvdXJjZQotLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRo
ZXJlIGFyZSB0d28gcHJpbWFyeSB3YXlzIG9mIGdldHRpbmcgR29vZ2xlIFRlc3QncyBzb3VyY2Ug
Y29kZTogeW91Ci1jYW4gZG93bmxvYWQgYSBzdGFibGUgc291cmNlIHJlbGVhc2UgaW4geW91ciBw
cmVmZXJyZWQgYXJjaGl2ZSBmb3JtYXQsCi1vciBkaXJlY3RseSBjaGVjayBvdXQgdGhlIHNvdXJj
ZSBmcm9tIG91ciBTdWJ2ZXJzaW9uIChTVk4pIHJlcG9zaXRhcnkuCi1UaGUgU1ZOIGNoZWNrb3V0
IHJlcXVpcmVzIGEgZmV3IGV4dHJhIHN0ZXBzIGFuZCBzb21lIGV4dHJhIHNvZnR3YXJlCi1wYWNr
YWdlcyBvbiB5b3VyIHN5c3RlbSwgYnV0IGxldHMgeW91IHRyYWNrIHRoZSBsYXRlc3QgZGV2ZWxv
cG1lbnQgYW5kCi1tYWtlIHBhdGNoZXMgbXVjaCBtb3JlIGVhc2lseSwgc28gd2UgaGlnaGx5IGVu
Y291cmFnZSBpdC4KLQotIyMjIFNvdXJjZSBQYWNrYWdlICMjIwotCi1Hb29nbGUgVGVzdCBpcyBy
ZWxlYXNlZCBpbiB2ZXJzaW9uZWQgc291cmNlIHBhY2thZ2VzIHdoaWNoIGNhbiBiZQotZG93bmxv
YWRlZCBmcm9tIHRoZSBkb3dubG9hZCBwYWdlIFsxXS4gIFNldmVyYWwgZGlmZmVyZW50IGFyY2hp
dmUKLWZvcm1hdHMgYXJlIHByb3ZpZGVkLCBidXQgdGhlIG9ubHkgZGlmZmVyZW5jZSBpcyB0aGUg
dG9vbHMgdXNlZCB0bwotbWFuaXB1bGF0ZSB0aGVtLCBhbmQgdGhlIHNpemUgb2YgdGhlIHJlc3Vs
dGluZyBmaWxlLiAgRG93bmxvYWQKLXdoaWNoZXZlciB5b3UgYXJlIG1vc3QgY29tZm9ydGFibGUg
d2l0aC4KLQotICBbMV0gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3QvZG93bmxv
YWRzL2xpc3QKLQotT25jZSB0aGUgcGFja2FnZSBpcyBkb3dubG9hZGVkLCBleHBhbmQgaXQgdXNp
bmcgd2hpY2hldmVyIHRvb2xzIHlvdQotcHJlZmVyIGZvciB0aGF0IHR5cGUuICBUaGlzIHdpbGwg
cmVzdWx0IGluIGEgbmV3IGRpcmVjdG9yeSB3aXRoIHRoZQotbmFtZSAiZ3Rlc3QtWC5ZLloiIHdo
aWNoIGNvbnRhaW5zIGFsbCBvZiB0aGUgc291cmNlIGNvZGUuICBIZXJlIGFyZQotc29tZSBleGFt
cGxlcyBvbiBMaW51eDoKLQotICB0YXIgLXh2emYgZ3Rlc3QtWC5ZLloudGFyLmd6Ci0gIHRhciAt
eHZqZiBndGVzdC1YLlkuWi50YXIuYnoyCi0gIHVuemlwIGd0ZXN0LVguWS5aLnppcAotCi0jIyMg
U1ZOIENoZWNrb3V0ICMjIwotCi1UbyBjaGVjayBvdXQgdGhlIG1haW4gYnJhbmNoIChhbHNvIGtu
b3duIGFzIHRoZSAidHJ1bmsiKSBvZiBHb29nbGUKLVRlc3QsIHJ1biB0aGUgZm9sbG93aW5nIFN1
YnZlcnNpb24gY29tbWFuZDoKLQotICBzdm4gY2hlY2tvdXQgaHR0cDovL2dvb2dsZXRlc3QuZ29v
Z2xlY29kZS5jb20vc3ZuL3RydW5rLyBndGVzdC1zdm4KLQotU2V0dGluZyB1cCB0aGUgQnVpbGQK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRvIGJ1aWxkIEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRl
c3RzIHRoYXQgdXNlIGl0LCB5b3UgbmVlZCB0byB0ZWxsIHlvdXIKLWJ1aWxkIHN5c3RlbSB3aGVy
ZSB0byBmaW5kIGl0cyBoZWFkZXJzIGFuZCBzb3VyY2UgZmlsZXMuICBUaGUgZXhhY3QKLXdheSB0
byBkbyBpdCBkZXBlbmRzIG9uIHdoaWNoIGJ1aWxkIHN5c3RlbSB5b3UgdXNlLCBhbmQgaXMgdXN1
YWxseQotc3RyYWlnaHRmb3J3YXJkLgotCi0jIyMgR2VuZXJpYyBCdWlsZCBJbnN0cnVjdGlvbnMg
IyMjCi0KLVN1cHBvc2UgeW91IHB1dCBHb29nbGUgVGVzdCBpbiBkaXJlY3RvcnkgJHtHVEVTVF9E
SVJ9LiAgVG8gYnVpbGQgaXQsCi1jcmVhdGUgYSBsaWJyYXJ5IGJ1aWxkIHRhcmdldCAob3IgYSBw
cm9qZWN0IGFzIGNhbGxlZCBieSBWaXN1YWwgU3R1ZGlvCi1hbmQgWGNvZGUpIHRvIGNvbXBpbGUK
LQotICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LWFsbC5jYwotCi13aXRoCi0KLSAgJHtHVEVTVF9E
SVJ9L2luY2x1ZGUgYW5kICR7R1RFU1RfRElSfQotCi1pbiB0aGUgaGVhZGVyIHNlYXJjaCBwYXRo
LiAgQXNzdW1pbmcgYSBMaW51eC1saWtlIHN5c3RlbSBhbmQgZ2NjLAotc29tZXRoaW5nIGxpa2Ug
dGhlIGZvbGxvd2luZyB3aWxsIGRvOgotCi0gIGcrKyAtSSR7R1RFU1RfRElSfS9pbmNsdWRlIC1J
JHtHVEVTVF9ESVJ9IC1jICR7R1RFU1RfRElSfS9zcmMvZ3Rlc3QtYWxsLmNjCi0gIGFyIC1ydiBs
aWJndGVzdC5hIGd0ZXN0LWFsbC5vCi0KLU5leHQsIHlvdSBzaG91bGQgY29tcGlsZSB5b3VyIHRl
c3Qgc291cmNlIGZpbGUgd2l0aAotJHtHVEVTVF9ESVJ9L2luY2x1ZGUgaW4gdGhlIGhlYWRlciBz
ZWFyY2ggcGF0aCwgYW5kIGxpbmsgaXQgd2l0aCBndGVzdAotYW5kIGFueSBvdGhlciBuZWNlc3Nh
cnkgbGlicmFyaWVzOgotCi0gIGcrKyAtSSR7R1RFU1RfRElSfS9pbmNsdWRlIHBhdGgvdG8veW91
cl90ZXN0LmNjIGxpYmd0ZXN0LmEgLW8geW91cl90ZXN0Ci0KLUFzIGFuIGV4YW1wbGUsIHRoZSBt
YWtlLyBkaXJlY3RvcnkgY29udGFpbnMgYSBNYWtlZmlsZSB0aGF0IHlvdSBjYW4KLXVzZSB0byBi
dWlsZCBHb29nbGUgVGVzdCBvbiBzeXN0ZW1zIHdoZXJlIEdOVSBtYWtlIGlzIGF2YWlsYWJsZQot
KGUuZy4gTGludXgsIE1hYyBPUyBYLCBhbmQgQ3lnd2luKS4gIEl0IGRvZXNuJ3QgdHJ5IHRvIGJ1
aWxkIEdvb2dsZQotVGVzdCdzIG93biB0ZXN0cy4gIEluc3RlYWQsIGl0IGp1c3QgYnVpbGRzIHRo
ZSBHb29nbGUgVGVzdCBsaWJyYXJ5IGFuZAotYSBzYW1wbGUgdGVzdC4gIFlvdSBjYW4gdXNlIGl0
IGFzIGEgc3RhcnRpbmcgcG9pbnQgZm9yIHlvdXIgb3duIGJ1aWxkCi1zY3JpcHQuCi0KLUlmIHRo
ZSBkZWZhdWx0IHNldHRpbmdzIGFyZSBjb3JyZWN0IGZvciB5b3VyIGVudmlyb25tZW50LCB0aGUK
LWZvbGxvd2luZyBjb21tYW5kcyBzaG91bGQgc3VjY2VlZDoKLQotICBjZCAke0dURVNUX0RJUn0v
bWFrZQotICBtYWtlCi0gIC4vc2FtcGxlMV91bml0dGVzdAotCi1JZiB5b3Ugc2VlIGVycm9ycywg
dHJ5IHRvIHR3ZWFrIHRoZSBjb250ZW50cyBvZiBtYWtlL01ha2VmaWxlIHRvIG1ha2UKLXRoZW0g
Z28gYXdheS4gIFRoZXJlIGFyZSBpbnN0cnVjdGlvbnMgaW4gbWFrZS9NYWtlZmlsZSBvbiBob3cg
dG8gZG8KLWl0LgotCi0jIyMgVXNpbmcgQ01ha2UgIyMjCi0KLUdvb2dsZSBUZXN0IGNvbWVzIHdp
dGggYSBDTWFrZSBidWlsZCBzY3JpcHQgKENNYWtlTGlzdHMudHh0KSB0aGF0IGNhbgotYmUgdXNl
ZCBvbiBhIHdpZGUgcmFuZ2Ugb2YgcGxhdGZvcm1zICgiQyIgc3RhbmRzIGZvciBjcm9zcy1wbGF0
b2ZybS4pLgotSWYgeW91IGRvbid0IGhhdmUgQ01ha2UgaW5zdGFsbGVkIGFscmVhZHksIHlvdSBj
YW4gZG93bmxvYWQgaXQgZm9yCi1mcmVlIGZyb20gaHR0cDovL3d3dy5jbWFrZS5vcmcvLgotCi1D
TWFrZSB3b3JrcyBieSBnZW5lcmF0aW5nIG5hdGl2ZSBtYWtlZmlsZXMgb3IgYnVpbGQgcHJvamVj
dHMgdGhhdCBjYW4KLWJlIHVzZWQgaW4gdGhlIGNvbXBpbGVyIGVudmlyb25tZW50IG9mIHlvdXIg
Y2hvaWNlLiAgVGhlIHR5cGljYWwKLXdvcmtmbG93IHN0YXJ0cyB3aXRoOgotCi0gIG1rZGlyIG15
YnVpbGQgICAgICAgIyBDcmVhdGUgYSBkaXJlY3RvcnkgdG8gaG9sZCB0aGUgYnVpbGQgb3V0cHV0
LgotICBjZCBteWJ1aWxkCi0gIGNtYWtlICR7R1RFU1RfRElSfSAgIyBHZW5lcmF0ZSBuYXRpdmUg
YnVpbGQgc2NyaXB0cy4KLQotSWYgeW91IHdhbnQgdG8gYnVpbGQgR29vZ2xlIFRlc3QncyBzYW1w
bGVzLCB5b3Ugc2hvdWxkIHJlcGxhY2UgdGhlCi1sYXN0IGNvbW1hbmQgd2l0aAotCi0gIGNtYWtl
IC1EYnVpbGRfZ3Rlc3Rfc2FtcGxlcz1PTiAke0dURVNUX0RJUn0KLQotSWYgeW91IGFyZSBvbiBh
ICpuaXggc3lzdGVtLCB5b3Ugc2hvdWxkIG5vdyBzZWUgYSBNYWtlZmlsZSBpbiB0aGUKLWN1cnJl
bnQgZGlyZWN0b3J5LiAgSnVzdCB0eXBlICdtYWtlJyB0byBidWlsZCBndGVzdC4KLQotSWYgeW91
IHVzZSBXaW5kb3dzIGFuZCBoYXZlIFZpc3R1YWwgU3R1ZGlvIGluc3RhbGxlZCwgYSBndGVzdC5z
bG4gZmlsZQotYW5kIHNldmVyYWwgLnZjcHJvaiBmaWxlcyB3aWxsIGJlIGNyZWF0ZWQuICBZb3Ug
Y2FuIHRoZW4gYnVpbGQgdGhlbQotdXNpbmcgVmlzdWFsIFN0dWRpby4KLQotT24gTWFjIE9TIFgg
d2l0aCBYY29kZSBpbnN0YWxsZWQsIGEgLnhjb2RlcHJvaiBmaWxlIHdpbGwgYmUgZ2VuZXJhdGVk
LgotCi0jIyMgTGVnYWN5IEJ1aWxkIFNjcmlwdHMgIyMjCi0KLUJlZm9yZSBzZXR0bGluZyBvbiBD
TWFrZSwgd2UgaGF2ZSBiZWVuIHByb3ZpZGluZyBoYW5kLW1haW50YWluZWQgYnVpbGQKLXByb2pl
Y3RzL3NjcmlwdHMgZm9yIFZpc3VhbCBTdHVkaW8sIFhjb2RlLCBhbmQgQXV0b3Rvb2xzLiAgV2hp
bGUgd2UKLWNvbnRpbnVlIHRvIHByb3ZpZGUgdGhlbSBmb3IgY29udmVuaWVuY2UsIHRoZXkgYXJl
IG5vdCBhY3RpdmVseQotbWFpbnRhaW5lZCBhbnkgbW9yZS4gIFdlIGhpZ2hseSByZWNvbW1lbmQg
dGhhdCB5b3UgZm9sbG93IHRoZQotaW5zdHJ1Y3Rpb25zIGluIHRoZSBwcmV2aW91cyB0d28gc2Vj
dGlvbnMgdG8gaW50ZWdyYXRlIEdvb2dsZSBUZXN0Ci13aXRoIHlvdXIgZXhpc3RpbmcgYnVpbGQg
c3lzdGVtLgotCi1JZiB5b3Ugc3RpbGwgbmVlZCB0byB1c2UgdGhlIGxlZ2FjeSBidWlsZCBzY3Jp
cHRzLCBoZXJlJ3MgaG93OgotCi1UaGUgbXN2Y1wgZm9sZGVyIGNvbnRhaW5zIHR3byBzb2x1dGlv
bnMgd2l0aCBWaXN1YWwgQysrIHByb2plY3RzLgotT3BlbiB0aGUgZ3Rlc3Quc2xuIG9yIGd0ZXN0
LW1kLnNsbiBmaWxlIHVzaW5nIFZpc3VhbCBTdHVkaW8sIGFuZCB5b3UKLWFyZSByZWFkeSB0byBi
dWlsZCBHb29nbGUgVGVzdCB0aGUgc2FtZSB3YXkgeW91IGJ1aWxkIGFueSBWaXN1YWwKLVN0dWRp
byBwcm9qZWN0LiAgRmlsZXMgdGhhdCBoYXZlIG5hbWVzIGVuZGluZyB3aXRoIC1tZCB1c2UgRExM
Ci12ZXJzaW9ucyBvZiBNaWNyb3NvZnQgcnVudGltZSBsaWJyYXJpZXMgKHRoZSAvTUQgb3IgdGhl
IC9NRGQgY29tcGlsZXIKLW9wdGlvbikuICBGaWxlcyB3aXRob3V0IHRoYXQgc3VmZml4IHVzZSBz
dGF0aWMgdmVyc2lvbnMgb2YgdGhlIHJ1bnRpbWUKLWxpYnJhcmllcyAodGhlIC9NVCBvciB0aGUg
L01UZCBvcHRpb24pLiAgUGxlYXNlIG5vdGUgdGhhdCBvbmUgbXVzdCB1c2UKLXRoZSBzYW1lIG9w
dGlvbiB0byBjb21waWxlIGJvdGggZ3Rlc3QgYW5kIHRoZSB0ZXN0IGNvZGUuICBJZiB5b3UgdXNl
Ci1WaXN1YWwgU3R1ZGlvIDIwMDUgb3IgYWJvdmUsIHdlIHJlY29tbWVuZCB0aGUgLW1kIHZlcnNp
b24gYXMgL01EIGlzCi10aGUgZGVmYXVsdCBmb3IgbmV3IHByb2plY3RzIGluIHRoZXNlIHZlcnNp
b25zIG9mIFZpc3VhbCBTdHVkaW8uCi0KLU9uIE1hYyBPUyBYLCBvcGVuIHRoZSBndGVzdC54Y29k
ZXByb2ogaW4gdGhlIHhjb2RlLyBmb2xkZXIgdXNpbmcKLVhjb2RlLiAgQnVpbGQgdGhlICJndGVz
dCIgdGFyZ2V0LiAgVGhlIHVuaXZlcnNhbCBiaW5hcnkgZnJhbWV3b3JrIHdpbGwKLWVuZCB1cCBp
biB5b3VyIHNlbGVjdGVkIGJ1aWxkIGRpcmVjdG9yeSAoc2VsZWN0ZWQgaW4gdGhlIFhjb2RlCi0i
UHJlZmVyZW5jZXMuLi4iIC0+ICJCdWlsZGluZyIgcGFuZSBhbmQgZGVmYXVsdHMgdG8geGNvZGUv
YnVpbGQpLgotQWx0ZXJuYXRpdmVseSwgYXQgdGhlIGNvbW1hbmQgbGluZSwgZW50ZXI6Ci0KLSAg
eGNvZGVidWlsZAotCi1UaGlzIHdpbGwgYnVpbGQgdGhlICJSZWxlYXNlIiBjb25maWd1cmF0aW9u
IG9mIGd0ZXN0LmZyYW1ld29yayBpbiB5b3VyCi1kZWZhdWx0IGJ1aWxkIGxvY2F0aW9uLiAgU2Vl
IHRoZSAieGNvZGVidWlsZCIgbWFuIHBhZ2UgZm9yIG1vcmUKLWluZm9ybWF0aW9uIGFib3V0IGJ1
aWxkaW5nIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBhbmQgYnVpbGRpbmcgaW4KLWRpZmZlcmVu
dCBsb2NhdGlvbnMuCi0KLVR3ZWFraW5nIEdvb2dsZSBUZXN0Ci0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCi1Hb29nbGUgVGVzdCBjYW4gYmUgdXNlZCBpbiBkaXZlcnNlIGVudmlyb25tZW50cy4gIFRo
ZSBkZWZhdWx0Ci1jb25maWd1cmF0aW9uIG1heSBub3Qgd29yayAob3IgbWF5IG5vdCB3b3JrIHdl
bGwpIG91dCBvZiB0aGUgYm94IGluCi1zb21lIGVudmlyb25tZW50cy4gIEhvd2V2ZXIsIHlvdSBj
YW4gZWFzaWx5IHR3ZWFrIEdvb2dsZSBUZXN0IGJ5Ci1kZWZpbmluZyBjb250cm9sIG1hY3JvcyBv
biB0aGUgY29tcGlsZXIgY29tbWFuZCBsaW5lLiAgR2VuZXJhbGx5LAotdGhlc2UgbWFjcm9zIGFy
ZSBuYW1lZCBsaWtlIEdURVNUX1hZWiBhbmQgeW91IGRlZmluZSB0aGVtIHRvIGVpdGhlciAxCi1v
ciAwIHRvIGVuYWJsZSBvciBkaXNhYmxlIGEgY2VydGFpbiBmZWF0dXJlLgotCi1XZSBsaXN0IHRo
ZSBtb3N0IGZyZXF1ZW50bHkgdXNlZCBtYWNyb3MgYmVsb3cuICBGb3IgYSBjb21wbGV0ZSBsaXN0
LAotc2VlIGZpbGUgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmguCi0KLSMjIyBD
aG9vc2luZyBhIFRSMSBUdXBsZSBMaWJyYXJ5ICMjIwotCi1Tb21lIEdvb2dsZSBUZXN0IGZlYXR1
cmVzIHJlcXVpcmUgdGhlIEMrKyBUZWNobmljYWwgUmVwb3J0IDEgKFRSMSkKLXR1cGxlIGxpYnJh
cnksIHdoaWNoIGlzIG5vdCB5ZXQgYXZhaWxhYmxlIHdpdGggYWxsIGNvbXBpbGVycy4gIFRoZQot
Z29vZCBuZXdzIGlzIHRoYXQgR29vZ2xlIFRlc3QgaW1wbGVtZW50cyBhIHN1YnNldCBvZiBUUjEg
dHVwbGUgdGhhdCdzCi1lbm91Z2ggZm9yIGl0cyBvd24gbmVlZCwgYW5kIHdpbGwgYXV0b21hdGlj
YWxseSB1c2UgdGhpcyB3aGVuIHRoZQotY29tcGlsZXIgZG9lc24ndCBwcm92aWRlIFRSMSB0dXBs
ZS4KLQotVXN1YWxseSB5b3UgZG9uJ3QgbmVlZCB0byBjYXJlIGFib3V0IHdoaWNoIHR1cGxlIGxp
YnJhcnkgR29vZ2xlIFRlc3QKLXVzZXMuICBIb3dldmVyLCBpZiB5b3VyIHByb2plY3QgYWxyZWFk
eSB1c2VzIFRSMSB0dXBsZSwgeW91IG5lZWQgdG8KLXRlbGwgR29vZ2xlIFRlc3QgdG8gdXNlIHRo
ZSBzYW1lIFRSMSB0dXBsZSBsaWJyYXJ5IHRoZSByZXN0IG9mIHlvdXIKLXByb2plY3QgdXNlcywg
b3IgdGhlIHR3byB0dXBsZSBpbXBsZW1lbnRhdGlvbnMgd2lsbCBjbGFzaC4gIFRvIGRvCi10aGF0
LCBhZGQKLQotICAtREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTAKLQotdG8gdGhlIGNvbXBpbGVy
IGZsYWdzIHdoaWxlIGNvbXBpbGluZyBHb29nbGUgVGVzdCBhbmQgeW91ciB0ZXN0cy4gIElmCi15
b3Ugd2FudCB0byBmb3JjZSBHb29nbGUgVGVzdCB0byB1c2UgaXRzIG93biB0dXBsZSBsaWJyYXJ5
LCBqdXN0IGFkZAotCi0gIC1ER1RFU1RfVVNFX09XTl9UUjFfVFVQTEU9MQotCi10byB0aGUgY29t
cGlsZXIgZmxhZ3MgaW5zdGVhZC4KLQotSWYgeW91IGRvbid0IHdhbnQgR29vZ2xlIFRlc3QgdG8g
dXNlIHR1cGxlIGF0IGFsbCwgYWRkCi0KLSAgLURHVEVTVF9IQVNfVFIxX1RVUExFPTAKLQotYW5k
IGFsbCBmZWF0dXJlcyB1c2luZyB0dXBsZSB3aWxsIGJlIGRpc2FibGVkLgotCi0jIyMgTXVsdGkt
dGhyZWFkZWQgVGVzdHMgIyMjCi0KLUdvb2dsZSBUZXN0IGlzIHRocmVhZC1zYWZlIHdoZXJlIHRo
ZSBwdGhyZWFkIGxpYnJhcnkgaXMgYXZhaWxhYmxlLgotQWZ0ZXIgI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0Lmg+LCB5b3UgY2FuIGNoZWNrIHRoZSBHVEVTVF9JU19USFJFQURTQUZFCi1tYWNybyB0byBz
ZWUgd2hldGhlciB0aGlzIGlzIHRoZSBjYXNlICh5ZXMgaWYgdGhlIG1hY3JvIGlzICNkZWZpbmVk
IHRvCi0xLCBubyBpZiBpdCdzIHVuZGVmaW5lZC4pLgotCi1JZiBHb29nbGUgVGVzdCBkb2Vzbid0
IGNvcnJlY3RseSBkZXRlY3Qgd2hldGhlciBwdGhyZWFkIGlzIGF2YWlsYWJsZQotaW4geW91ciBl
bnZpcm9ubWVudCwgeW91IGNhbiBmb3JjZSBpdCB3aXRoCi0KLSAgLURHVEVTVF9IQVNfUFRIUkVB
RD0xCi0KLW9yCi0KLSAgLURHVEVTVF9IQVNfUFRIUkVBRD0wCi0KLVdoZW4gR29vZ2xlIFRlc3Qg
dXNlcyBwdGhyZWFkLCB5b3UgbWF5IG5lZWQgdG8gYWRkIGZsYWdzIHRvIHlvdXIKLWNvbXBpbGVy
IGFuZC9vciBsaW5rZXIgdG8gc2VsZWN0IHRoZSBwdGhyZWFkIGxpYnJhcnksIG9yIHlvdSdsbCBn
ZXQKLWxpbmsgZXJyb3JzLiAgSWYgeW91IHVzZSB0aGUgQ01ha2Ugc2NyaXB0IG9yIHRoZSBkZXBy
ZWNhdGVkIEF1dG90b29scwotc2NyaXB0LCB0aGlzIGlzIHRha2VuIGNhcmUgb2YgZm9yIHlvdS4g
IElmIHlvdSB1c2UgeW91ciBvd24gYnVpbGQKLXNjcmlwdCwgeW91J2xsIG5lZWQgdG8gcmVhZCB5
b3VyIGNvbXBpbGVyIGFuZCBsaW5rZXIncyBtYW51YWwgdG8KLWZpZ3VyZSBvdXQgd2hhdCBmbGFn
cyB0byBhZGQuCi0KLSMjIyBBcyBhIFNoYXJlZCBMaWJyYXJ5IChETEwpICMjIwotCi1Hb29nbGUg
VGVzdCBpcyBjb21wYWN0LCBzbyBtb3N0IHVzZXJzIGNhbiBidWlsZCBhbmQgbGluayBpdCBhcyBh
Ci1zdGF0aWMgbGlicmFyeSBmb3IgdGhlIHNpbXBsaWNpdHkuICBZb3UgY2FuIGNob29zZSB0byB1
c2UgR29vZ2xlIFRlc3QKLWFzIGEgc2hhcmVkIGxpYnJhcnkgKGtub3duIGFzIGEgRExMIG9uIFdp
bmRvd3MpIGlmIHlvdSBwcmVmZXIuCi0KLVRvIGNvbXBpbGUgZ3Rlc3QgYXMgYSBzaGFyZWQgbGli
cmFyeSwgYWRkCi0KLSAgLURHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJBUlk9MQotCi10byB0aGUg
Y29tcGlsZXIgZmxhZ3MuICBZb3UnbGwgYWxzbyBuZWVkIHRvIHRlbGwgdGhlIGxpbmtlciB0byBw
cm9kdWNlCi1hIHNoYXJlZCBsaWJyYXJ5IGluc3RlYWQgLSBjb25zdWx0IHlvdXIgbGlua2VyJ3Mg
bWFudWFsIGZvciBob3cgdG8gZG8KLWl0LgotCi1UbyBjb21waWxlIHlvdXIgdGVzdHMgdGhhdCB1
c2UgdGhlIGd0ZXN0IHNoYXJlZCBsaWJyYXJ5LCBhZGQKLQotICAtREdURVNUX0xJTktFRF9BU19T
SEFSRURfTElCUkFSWT0xCi0KLXRvIHRoZSBjb21waWxlciBmbGFncy4KLQotIyMjIEF2b2lkaW5n
IE1hY3JvIE5hbWUgQ2xhc2hlcyAjIyMKLQotSW4gQysrLCBtYWNyb3MgZG9uJ3Qgb2JleSBuYW1l
c3BhY2VzLiAgVGhlcmVmb3JlIHR3byBsaWJyYXJpZXMgdGhhdAotYm90aCBkZWZpbmUgYSBtYWNy
byBvZiB0aGUgc2FtZSBuYW1lIHdpbGwgY2xhc2ggaWYgeW91ICNpbmNsdWRlIGJvdGgKLWRlZmlu
aXRpb25zLiAgSW4gY2FzZSBhIEdvb2dsZSBUZXN0IG1hY3JvIGNsYXNoZXMgd2l0aCBhbm90aGVy
Ci1saWJyYXJ5LCB5b3UgY2FuIGZvcmNlIEdvb2dsZSBUZXN0IHRvIHJlbmFtZSBpdHMgbWFjcm8g
dG8gYXZvaWQgdGhlCi1jb25mbGljdC4KLQotU3BlY2lmaWNhbGx5LCBpZiBib3RoIEdvb2dsZSBU
ZXN0IGFuZCBzb21lIG90aGVyIGNvZGUgZGVmaW5lIG1hY3JvCi1GT08sIHlvdSBjYW4gYWRkCi0K
LSAgLURHVEVTVF9ET05UX0RFRklORV9GT089MQotCi10byB0aGUgY29tcGlsZXIgZmxhZ3MgdG8g
dGVsbCBHb29nbGUgVGVzdCB0byBjaGFuZ2UgdGhlIG1hY3JvJ3MgbmFtZQotZnJvbSBGT08gdG8g
R1RFU1RfRk9PLiAgQ3VycmVudGx5IEZPTyBjYW4gYmUgRkFJTCwgU1VDQ0VFRCwgb3IgVEVTVC4K
LUZvciBleGFtcGxlLCB3aXRoIC1ER1RFU1RfRE9OVF9ERUZJTkVfVEVTVD0xLCB5b3UnbGwgbmVl
ZCB0byB3cml0ZQotCi0gIEdURVNUX1RFU1QoU29tZVRlc3QsIERvZXNUaGlzKSB7IC4uLiB9Ci0K
LWluc3RlYWQgb2YKLQotICBURVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAuLi4gfQotCi1pbiBv
cmRlciB0byBkZWZpbmUgYSB0ZXN0LgotCi1VcGdyYXRpbmcgZnJvbSBhbiBFYXJsaWVyIFZlcnNp
b24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1XZSBzdHJpdmUgdG8ga2Vl
cCBHb29nbGUgVGVzdCByZWxlYXNlcyBiYWNrd2FyZCBjb21wYXRpYmxlLgotU29tZXRpbWVzLCB0
aG91Z2gsIHdlIGhhdmUgdG8gbWFrZSBzb21lIGJyZWFraW5nIGNoYW5nZXMgZm9yIHRoZQotdXNl
cnMnIGxvbmctdGVybSBiZW5lZml0cy4gIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgd2hhdCB5b3Un
bGwgbmVlZCB0bwotZG8gaWYgeW91IGFyZSB1cGdyYWRpbmcgZnJvbSBhbiBlYXJsaWVyIHZlcnNp
b24gb2YgR29vZ2xlIFRlc3QuCi0KLSMjIyBVcGdyYWRpbmcgZnJvbSAxLjMuMCBvciBFYXJsaWVy
ICMjIwotCi1Zb3UgbWF5IG5lZWQgdG8gZXhwbGljaXRseSBlbmFibGUgb3IgZGlzYWJsZSBHb29n
bGUgVGVzdCdzIG93biBUUjEKLXR1cGxlIGxpYnJhcnkuICBTZWUgdGhlIGluc3RydWN0aW9ucyBp
biBzZWN0aW9uICJDaG9vc2luZyBhIFRSMSBUdXBsZQotTGlicmFyeSIuCi0KLSMjIyBVcGdyYWRp
bmcgZnJvbSAxLjQuMCBvciBFYXJsaWVyICMjIwotCi1UaGUgQXV0b3Rvb2xzIGJ1aWxkIHNjcmlw
dCAoY29uZmlndXJlICsgbWFrZSkgaXMgbm8gbG9uZ2VyIG9mZmljaWFsbHkKLXN1cHBvcnR0ZWQu
ICBZb3UgYXJlIGVuY291cmFnZWQgdG8gbWlncmF0ZSB0byB5b3VyIG93biBidWlsZCBzeXN0ZW0g
b3IKLXVzZSBDTWFrZS4gIElmIHlvdSBzdGlsbCBuZWVkIHRvIHVzZSBBdXRvdG9vbHMsIHlvdSBj
YW4gZmluZAotaW5zdHJ1Y3Rpb25zIGluIHRoZSBSRUFETUUgZmlsZSBmcm9tIEdvb2dsZSBUZXN0
IDEuNC4wLgotCi1PbiBwbGF0Zm9ybXMgd2hlcmUgdGhlIHB0aHJlYWQgbGlicmFyeSBpcyBhdmFp
bGFibGUsIEdvb2dsZSBUZXN0IHVzZXMKLWl0IGluIG9yZGVyIHRvIGJlIHRocmVhZC1zYWZlLiAg
U2VlIHRoZSAiTXVsdGktdGhyZWFkZWQgVGVzdHMiIHNlY3Rpb24KLWZvciB3aGF0IHRoaXMgbWVh
bnMgdG8geW91ciBidWlsZCBzY3JpcHQuCi0KLUlmIHlvdSB1c2UgTWljcm9zb2Z0IFZpc3VhbCBD
KysgNy4xIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZCwgR29vZ2xlCi1UZXN0IHdpbGwgbm8gbG9u
Z2VyIGNvbXBpbGUuICBUaGlzIHNob3VsZCBhZmZlY3QgdmVyeSBmZXcgcGVvcGxlLCBhcyBhCi1s
YXJnZSBwb3J0aW9uIG9mIFNUTCAoaW5jbHVkaW5nIDxzdHJpbmc+KSBkb2Vzbid0IGNvbXBpbGUg
aW4gdGhpcyBtb2RlCi1hbnl3YXkuICBXZSBkZWNpZGVkIHRvIHN0b3Agc3VwcG9ydGluZyBpdCBp
biBvcmRlciB0byBncmVhdGx5IHNpbXBsaWZ5Ci1Hb29nbGUgVGVzdCdzIGltcGxlbWVudGF0aW9u
LgotCi1EZXZlbG9waW5nIEdvb2dsZSBUZXN0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRo
aXMgc2VjdGlvbiBkaXNjdXNzZXMgaG93IHRvIG1ha2UgeW91ciBvd24gY2hhbmdlcyB0byBHb29n
bGUgVGVzdC4KLQotIyMjIFRlc3RpbmcgR29vZ2xlIFRlc3QgSXRzZWxmICMjIwotCi1UbyBtYWtl
IHN1cmUgeW91ciBjaGFuZ2VzIHdvcmsgYXMgaW50ZW5kZWQgYW5kIGRvbid0IGJyZWFrIGV4aXN0
aW5nCi1mdW5jdGlvbmFsaXR5LCB5b3UnbGwgd2FudCB0byBjb21waWxlIGFuZCBydW4gR29vZ2xl
IFRlc3QncyBvd24gdGVzdHMuCi1Gb3IgdGhhdCB5b3UgY2FuIHVzZSBDTWFrZToKLQotICBta2Rp
ciBteWJ1aWxkCi0gIGNkIG15YnVpbGQKLSAgY21ha2UgLURidWlsZF9hbGxfZ3Rlc3RfdGVzdHM9
T04gJHtHVEVTVF9ESVJ9Ci0KLU1ha2Ugc3VyZSB5b3UgaGF2ZSBQeXRob24gaW5zdGFsbGVkLCBh
cyBzb21lIG9mIEdvb2dsZSBUZXN0J3MgdGVzdHMKLWFyZSB3cml0dGVuIGluIFB5dGhvbi4gIElm
IHRoZSBjbWFrZSBjb21tYW5kIGNvbXBsYWlucyBhYm91dCBub3QgYmVpbmcKLWFibGUgdG8gZmlu
ZCBQeXRob24gKCJDb3VsZCBOT1QgZmluZCBQeXRob25JbnRlcnAgKG1pc3Npbmc6Ci1QWVRIT05f
RVhFQ1VUQUJMRSkiKSwgdHJ5IHRlbGxpbmcgaXQgZXhwbGljaXRseSB3aGVyZSB5b3VyIFB5dGhv
bgotZXhlY3V0YWJsZSBjYW4gYmUgZm91bmQ6Ci0KLSAgY21ha2UgLURQWVRIT05fRVhFQ1VUQUJM
RT1wYXRoL3RvL3B5dGhvbiAtRGJ1aWxkX2FsbF9ndGVzdF90ZXN0cz1PTiBcCi0gICAgICAke0dU
RVNUX0RJUn0KLQotTmV4dCwgeW91IGNhbiBidWlsZCBHb29nbGUgVGVzdCBhbmQgYWxsIG9mIGl0
cyBvd24gdGVzdHMuICBPbiAqbml4LAotdGhpcyBpcyB1c3VhbGx5IGRvbmUgYnkgJ21ha2UnLiAg
VG8gcnVuIHRoZSB0ZXN0cywgZG8KLQotICBtYWtlIHRlc3QKLQotQWxsIHRlc3RzIHNob3VsZCBw
YXNzLgotCi0jIyMgUmVnZW5lcmF0aW5nIFNvdXJjZSBGaWxlcyAjIyMKLQotU29tZSBvZiBHb29n
bGUgVGVzdCdzIHNvdXJjZSBmaWxlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGVtcGxhdGVzIChub3QK
LWluIHRoZSBDKysgc2Vuc2UpIHVzaW5nIGEgc2NyaXB0LiAgQSB0ZW1wbGF0ZSBmaWxlIGlzIG5h
bWVkIEZPTy5wdW1wLAotd2hlcmUgRk9PIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGl0IHdpbGwg
Z2VuZXJhdGUuICBGb3IgZXhhbXBsZSwgdGhlCi1maWxlIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtdHlwZS11dGlsLmgucHVtcCBpcyB1c2VkIHRvIGdlbmVyYXRlCi1ndGVzdC10eXBlLXV0
aWwuaCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCi0KLU5vcm1hbGx5IHlvdSBkb24ndCBuZWVkIHRv
IHdvcnJ5IGFib3V0IHJlZ2VuZXJhdGluZyB0aGUgc291cmNlIGZpbGVzLAotdW5sZXNzIHlvdSBu
ZWVkIHRvIG1vZGlmeSB0aGVtLiAgSW4gdGhhdCBjYXNlLCB5b3Ugc2hvdWxkIG1vZGlmeSB0aGUK
LWNvcnJlc3BvbmRpbmcgLnB1bXAgZmlsZXMgaW5zdGVhZCBhbmQgcnVuIHRoZSBwdW1wLnB5IFB5
dGhvbiBzY3JpcHQgdG8KLXJlZ2VuZXJhdGUgdGhlbS4gIFlvdSBjYW4gZmluZCBwdW1wLnB5IGlu
IHRoZSBzY3JpcHRzLyBkaXJlY3RvcnkuCi1SZWFkIHRoZSBQdW1wIG1hbnVhbCBbMl0gZm9yIGhv
dyB0byB1c2UgaXQuCi0KLSAgWzJdIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0
L3dpa2kvUHVtcE1hbnVhbAotCi0jIyMgQ29udHJpYnV0aW5nIGEgUGF0Y2ggIyMjCi0KLVdlIHdl
bGNvbWUgcGF0Y2hlcy4gIFBsZWFzZSByZWFkIHRoZSBHb29nbGUgVGVzdCBkZXZlbG9wZXIncyBn
dWlkZSBbM10KLWZvciBob3cgeW91IGNhbiBjb250cmlidXRlLiAgSW4gcGFydGljdWxhciwgbWFr
ZSBzdXJlIHlvdSBoYXZlIHNpZ25lZAotdGhlIENvbnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVtZW50
LCBvciB3ZSB3b24ndCBiZSBhYmxlIHRvIGFjY2VwdCB0aGUKLXBhdGNoLgotCi0gIFszXSBodHRw
Oi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL0dvb2dsZVRlc3REZXZHdWlkZQot
Ci1IYXBweSB0ZXN0aW5nIQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVB
RE1FLldlYktpdCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5XZWJLaXQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhMzE4ZmY2MmUzMjQ5YzhlNjUzMjA5M2Y0MGUzY2I0
MWMxNWY5YWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVBRE1FLldlYktpdAorKysgL2Rldi9udWxsCkBAIC0x
LDE2ICswLDAgQEAKLUdUZXN0IHYuMS41LjAKLQotaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29k
ZS5jb20vc3ZuL3RhZ3MvcmVsZWFzZS0xLjUuMC8gCi0KLTIwMTYtMDEtMDIgVGluZy1XZWkgTGFu
IChsYW50dzQ0QGdtYWlsLmNvbSkKLSAgICAgIFJlbW92ZSB1c2FnZSBvZiBlbnZpcm9uIGdsb2Jh
bCB2YXJpYWJsZSB0byBmaXggdGhlIGJ1aWxkIG9uIEZyZWVCU0QuCi0KLTIwMTItMDEtMDQgRG1p
dHJ5IExvbW92IChkc2xvbW92QGdvb2dsZS5jb20pICBEYXZpZCBLaWx6ZXIgKGRka2lsemVyQGFw
cGxlLmNvbSkKLSAgICAgIC0gV2ViS2l0IHBvcnQgb2YgZ3Rlc3QgdXNlcyBGYXN0TWFsbG9jICJu
ZXciIGFuZCAiZGVsZXRlIiBvcGVyYXRvcnMgZnJvbSBKYXZhU2NyaXB0Q29yZS4KLSAgICAgIC0g
VGhlIGd0ZXN0LmZyYW1ld29yayB0YXJnZXQgbm93IGxpbmtzIHRvIEphdmFTY3JpcHRDb3JlLmZy
YW1ld29yay4KLQotMjAxMS0xMi0yMiBEYXZpZCBLaWx6ZXIgKGRka2lsemVyQGFwcGxlLmNvbSkK
LSAgICAgIEFkZGVkIFByb2R1Y3Rpb24gY29uZmlndXJhdGlvbiB0byBndGVzdCBYY29kZSBwcm9q
ZWN0LgotCi0yMDExLTA1LTA2IERtaXRyeSBMb21vdiAoZHNsb21vdkBnb29nbGUuY29tKQotICAg
ICAgZ3Rlc3QtbWQudmNwcm9qIHVwZ3JhZGVkIHRvIFZTIDIwMDUgKDguMCkgZm9ybWF0IHRvIG1h
dGNoIHRoZSByZXN0IG9mIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvUkVBRE1FLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVBRE1FLm1kCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUzMGZlODA0NzEyN2JlZTE2ZDJjNzFmMTRiNTA5ZjM3NTcxYWRkNDEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9SRUFETUUubWQKQEAgLTAsMCArMSwzNDEg
QEAKKyMjIyBHZW5lcmljIEJ1aWxkIEluc3RydWN0aW9ucworCisjIyMjIFNldHVwCisKK1RvIGJ1
aWxkIEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRlc3RzIHRoYXQgdXNlIGl0LCB5b3UgbmVlZCB0byB0
ZWxsIHlvdXIgYnVpbGQKK3N5c3RlbSB3aGVyZSB0byBmaW5kIGl0cyBoZWFkZXJzIGFuZCBzb3Vy
Y2UgZmlsZXMuIFRoZSBleGFjdCB3YXkgdG8gZG8gaXQKK2RlcGVuZHMgb24gd2hpY2ggYnVpbGQg
c3lzdGVtIHlvdSB1c2UsIGFuZCBpcyB1c3VhbGx5IHN0cmFpZ2h0Zm9yd2FyZC4KKworIyMjIyBC
dWlsZAorCitTdXBwb3NlIHlvdSBwdXQgR29vZ2xlIFRlc3QgaW4gZGlyZWN0b3J5IGAke0dURVNU
X0RJUn1gLiBUbyBidWlsZCBpdCwgY3JlYXRlIGEKK2xpYnJhcnkgYnVpbGQgdGFyZ2V0IChvciBh
IHByb2plY3QgYXMgY2FsbGVkIGJ5IFZpc3VhbCBTdHVkaW8gYW5kIFhjb2RlKSB0bworY29tcGls
ZQorCisgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1hbGwuY2MKKword2l0aCBgJHtHVEVTVF9E
SVJ9L2luY2x1ZGVgIGluIHRoZSBzeXN0ZW0gaGVhZGVyIHNlYXJjaCBwYXRoIGFuZCBgJHtHVEVT
VF9ESVJ9YAoraW4gdGhlIG5vcm1hbCBoZWFkZXIgc2VhcmNoIHBhdGguIEFzc3VtaW5nIGEgTGlu
dXgtbGlrZSBzeXN0ZW0gYW5kIGdjYywKK3NvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgd2ls
bCBkbzoKKworICAgIGcrKyAtaXN5c3RlbSAke0dURVNUX0RJUn0vaW5jbHVkZSAtSSR7R1RFU1Rf
RElSfSBcCisgICAgICAgIC1wdGhyZWFkIC1jICR7R1RFU1RfRElSfS9zcmMvZ3Rlc3QtYWxsLmNj
CisgICAgYXIgLXJ2IGxpYmd0ZXN0LmEgZ3Rlc3QtYWxsLm8KKworKFdlIG5lZWQgYC1wdGhyZWFk
YCBhcyBHb29nbGUgVGVzdCB1c2VzIHRocmVhZHMuKQorCitOZXh0LCB5b3Ugc2hvdWxkIGNvbXBp
bGUgeW91ciB0ZXN0IHNvdXJjZSBmaWxlIHdpdGggYCR7R1RFU1RfRElSfS9pbmNsdWRlYCBpbgor
dGhlIHN5c3RlbSBoZWFkZXIgc2VhcmNoIHBhdGgsIGFuZCBsaW5rIGl0IHdpdGggZ3Rlc3QgYW5k
IGFueSBvdGhlciBuZWNlc3NhcnkKK2xpYnJhcmllczoKKworICAgIGcrKyAtaXN5c3RlbSAke0dU
RVNUX0RJUn0vaW5jbHVkZSAtcHRocmVhZCBwYXRoL3RvL3lvdXJfdGVzdC5jYyBsaWJndGVzdC5h
IFwKKyAgICAgICAgLW8geW91cl90ZXN0CisKK0FzIGFuIGV4YW1wbGUsIHRoZSBtYWtlLyBkaXJl
Y3RvcnkgY29udGFpbnMgYSBNYWtlZmlsZSB0aGF0IHlvdSBjYW4gdXNlIHRvIGJ1aWxkCitHb29n
bGUgVGVzdCBvbiBzeXN0ZW1zIHdoZXJlIEdOVSBtYWtlIGlzIGF2YWlsYWJsZSAoZS5nLiBMaW51
eCwgTWFjIE9TIFgsIGFuZAorQ3lnd2luKS4gSXQgZG9lc24ndCB0cnkgdG8gYnVpbGQgR29vZ2xl
IFRlc3QncyBvd24gdGVzdHMuIEluc3RlYWQsIGl0IGp1c3QKK2J1aWxkcyB0aGUgR29vZ2xlIFRl
c3QgbGlicmFyeSBhbmQgYSBzYW1wbGUgdGVzdC4gWW91IGNhbiB1c2UgaXQgYXMgYSBzdGFydGlu
ZworcG9pbnQgZm9yIHlvdXIgb3duIGJ1aWxkIHNjcmlwdC4KKworSWYgdGhlIGRlZmF1bHQgc2V0
dGluZ3MgYXJlIGNvcnJlY3QgZm9yIHlvdXIgZW52aXJvbm1lbnQsIHRoZSBmb2xsb3dpbmcgY29t
bWFuZHMKK3Nob3VsZCBzdWNjZWVkOgorCisgICAgY2QgJHtHVEVTVF9ESVJ9L21ha2UKKyAgICBt
YWtlCisgICAgLi9zYW1wbGUxX3VuaXR0ZXN0CisKK0lmIHlvdSBzZWUgZXJyb3JzLCB0cnkgdG8g
dHdlYWsgdGhlIGNvbnRlbnRzIG9mIGBtYWtlL01ha2VmaWxlYCB0byBtYWtlIHRoZW0gZ28KK2F3
YXkuIFRoZXJlIGFyZSBpbnN0cnVjdGlvbnMgaW4gYG1ha2UvTWFrZWZpbGVgIG9uIGhvdyB0byBk
byBpdC4KKworIyMjIFVzaW5nIENNYWtlCisKK0dvb2dsZSBUZXN0IGNvbWVzIHdpdGggYSBDTWFr
ZSBidWlsZCBzY3JpcHQgKAorW0NNYWtlTGlzdHMudHh0XShodHRwczovL2dpdGh1Yi5jb20vZ29v
Z2xlL2dvb2dsZXRlc3QvYmxvYi9tYXN0ZXIvQ01ha2VMaXN0cy50eHQpKQordGhhdCBjYW4gYmUg
dXNlZCBvbiBhIHdpZGUgcmFuZ2Ugb2YgcGxhdGZvcm1zICgiQyIgc3RhbmRzIGZvciBjcm9zcy1w
bGF0Zm9ybS4pLgorSWYgeW91IGRvbid0IGhhdmUgQ01ha2UgaW5zdGFsbGVkIGFscmVhZHksIHlv
dSBjYW4gZG93bmxvYWQgaXQgZm9yIGZyZWUgZnJvbQorPGh0dHA6Ly93d3cuY21ha2Uub3JnLz4u
CisKK0NNYWtlIHdvcmtzIGJ5IGdlbmVyYXRpbmcgbmF0aXZlIG1ha2VmaWxlcyBvciBidWlsZCBw
cm9qZWN0cyB0aGF0IGNhbiBiZSB1c2VkIGluCit0aGUgY29tcGlsZXIgZW52aXJvbm1lbnQgb2Yg
eW91ciBjaG9pY2UuIFlvdSBjYW4gZWl0aGVyIGJ1aWxkIEdvb2dsZSBUZXN0IGFzIGEKK3N0YW5k
YWxvbmUgcHJvamVjdCBvciBpdCBjYW4gYmUgaW5jb3Jwb3JhdGVkIGludG8gYW4gZXhpc3Rpbmcg
Q01ha2UgYnVpbGQgZm9yCithbm90aGVyIHByb2plY3QuCisKKyMjIyMgU3RhbmRhbG9uZSBDTWFr
ZSBQcm9qZWN0CisKK1doZW4gYnVpbGRpbmcgR29vZ2xlIFRlc3QgYXMgYSBzdGFuZGFsb25lIHBy
b2plY3QsIHRoZSB0eXBpY2FsIHdvcmtmbG93IHN0YXJ0cword2l0aDoKKworICAgIG1rZGlyIG15
YnVpbGQgICAgICAgIyBDcmVhdGUgYSBkaXJlY3RvcnkgdG8gaG9sZCB0aGUgYnVpbGQgb3V0cHV0
LgorICAgIGNkIG15YnVpbGQKKyAgICBjbWFrZSAke0dURVNUX0RJUn0gICMgR2VuZXJhdGUgbmF0
aXZlIGJ1aWxkIHNjcmlwdHMuCisKK0lmIHlvdSB3YW50IHRvIGJ1aWxkIEdvb2dsZSBUZXN0J3Mg
c2FtcGxlcywgeW91IHNob3VsZCByZXBsYWNlIHRoZSBsYXN0IGNvbW1hbmQKK3dpdGgKKworICAg
IGNtYWtlIC1EZ3Rlc3RfYnVpbGRfc2FtcGxlcz1PTiAke0dURVNUX0RJUn0KKworSWYgeW91IGFy
ZSBvbiBhIFwqbml4IHN5c3RlbSwgeW91IHNob3VsZCBub3cgc2VlIGEgTWFrZWZpbGUgaW4gdGhl
IGN1cnJlbnQKK2RpcmVjdG9yeS4gSnVzdCB0eXBlICdtYWtlJyB0byBidWlsZCBndGVzdC4KKwor
SWYgeW91IHVzZSBXaW5kb3dzIGFuZCBoYXZlIFZpc3VhbCBTdHVkaW8gaW5zdGFsbGVkLCBhIGBn
dGVzdC5zbG5gIGZpbGUgYW5kCitzZXZlcmFsIGAudmNwcm9qYCBmaWxlcyB3aWxsIGJlIGNyZWF0
ZWQuIFlvdSBjYW4gdGhlbiBidWlsZCB0aGVtIHVzaW5nIFZpc3VhbAorU3R1ZGlvLgorCitPbiBN
YWMgT1MgWCB3aXRoIFhjb2RlIGluc3RhbGxlZCwgYSBgLnhjb2RlcHJvamAgZmlsZSB3aWxsIGJl
IGdlbmVyYXRlZC4KKworIyMjIyBJbmNvcnBvcmF0aW5nIEludG8gQW4gRXhpc3RpbmcgQ01ha2Ug
UHJvamVjdAorCitJZiB5b3Ugd2FudCB0byB1c2UgZ3Rlc3QgaW4gYSBwcm9qZWN0IHdoaWNoIGFs
cmVhZHkgdXNlcyBDTWFrZSwgdGhlbiBhIG1vcmUKK3JvYnVzdCBhbmQgZmxleGlibGUgYXBwcm9h
Y2ggaXMgdG8gYnVpbGQgZ3Rlc3QgYXMgcGFydCBvZiB0aGF0IHByb2plY3QgZGlyZWN0bHkuCitU
aGlzIGlzIGRvbmUgYnkgbWFraW5nIHRoZSBHb29nbGVUZXN0IHNvdXJjZSBjb2RlIGF2YWlsYWJs
ZSB0byB0aGUgbWFpbiBidWlsZAorYW5kIGFkZGluZyBpdCB1c2luZyBDTWFrZSdzIGBhZGRfc3Vi
ZGlyZWN0b3J5KClgIGNvbW1hbmQuIFRoaXMgaGFzIHRoZQorc2lnbmlmaWNhbnQgYWR2YW50YWdl
IHRoYXQgdGhlIHNhbWUgY29tcGlsZXIgYW5kIGxpbmtlciBzZXR0aW5ncyBhcmUgdXNlZAorYmV0
d2VlbiBndGVzdCBhbmQgdGhlIHJlc3Qgb2YgeW91ciBwcm9qZWN0LCBzbyBpc3N1ZXMgYXNzb2Np
YXRlZCB3aXRoIHVzaW5nCitpbmNvbXBhdGlibGUgbGlicmFyaWVzIChlZyBkZWJ1Zy9yZWxlYXNl
KSwgZXRjLiBhcmUgYXZvaWRlZC4gVGhpcyBpcworcGFydGljdWxhcmx5IHVzZWZ1bCBvbiBXaW5k
b3dzLiBNYWtpbmcgR29vZ2xlVGVzdCdzIHNvdXJjZSBjb2RlIGF2YWlsYWJsZSB0byB0aGUKK21h
aW4gYnVpbGQgY2FuIGJlIGRvbmUgYSBmZXcgZGlmZmVyZW50IHdheXM6CisKKyogICBEb3dubG9h
ZCB0aGUgR29vZ2xlVGVzdCBzb3VyY2UgY29kZSBtYW51YWxseSBhbmQgcGxhY2UgaXQgYXQgYSBr
bm93bgorICAgIGxvY2F0aW9uLiBUaGlzIGlzIHRoZSBsZWFzdCBmbGV4aWJsZSBhcHByb2FjaCBh
bmQgY2FuIG1ha2UgaXQgbW9yZSBkaWZmaWN1bHQKKyAgICB0byB1c2Ugd2l0aCBjb250aW51b3Vz
IGludGVncmF0aW9uIHN5c3RlbXMsIGV0Yy4KKyogICBFbWJlZCB0aGUgR29vZ2xlVGVzdCBzb3Vy
Y2UgY29kZSBhcyBhIGRpcmVjdCBjb3B5IGluIHRoZSBtYWluIHByb2plY3QncworICAgIHNvdXJj
ZSB0cmVlLiBUaGlzIGlzIG9mdGVuIHRoZSBzaW1wbGVzdCBhcHByb2FjaCwgYnV0IGlzIGFsc28g
dGhlIGhhcmRlc3QgdG8KKyAgICBrZWVwIHVwIHRvIGRhdGUuIFNvbWUgb3JnYW5pemF0aW9ucyBt
YXkgbm90IHBlcm1pdCB0aGlzIG1ldGhvZC4KKyogICBBZGQgR29vZ2xlVGVzdCBhcyBhIGdpdCBz
dWJtb2R1bGUgb3IgZXF1aXZhbGVudC4gVGhpcyBtYXkgbm90IGFsd2F5cyBiZQorICAgIHBvc3Np
YmxlIG9yIGFwcHJvcHJpYXRlLiBHaXQgc3VibW9kdWxlcywgZm9yIGV4YW1wbGUsIGhhdmUgdGhl
aXIgb3duIHNldCBvZgorICAgIGFkdmFudGFnZXMgYW5kIGRyYXdiYWNrcy4KKyogICBVc2UgQ01h
a2UgdG8gZG93bmxvYWQgR29vZ2xlVGVzdCBhcyBwYXJ0IG9mIHRoZSBidWlsZCdzIGNvbmZpZ3Vy
ZSBzdGVwLiBUaGlzCisgICAgaXMganVzdCBhIGxpdHRsZSBtb3JlIGNvbXBsZXgsIGJ1dCBkb2Vz
bid0IGhhdmUgdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBvdGhlcgorICAgIG1ldGhvZHMuCisKK1Ro
ZSBsYXN0IG9mIHRoZSBhYm92ZSBtZXRob2RzIGlzIGltcGxlbWVudGVkIHdpdGggYSBzbWFsbCBw
aWVjZSBvZiBDTWFrZSBjb2RlIGluCithIHNlcGFyYXRlIGZpbGUgKGUuZy4gYENNYWtlTGlzdHMu
dHh0LmluYCkgd2hpY2ggaXMgY29waWVkIHRvIHRoZSBidWlsZCBhcmVhIGFuZAordGhlbiBpbnZv
a2VkIGFzIGEgc3ViLWJ1aWxkIF9kdXJpbmcgdGhlIENNYWtlIHN0YWdlXy4gVGhhdCBkaXJlY3Rv
cnkgaXMgdGhlbgorcHVsbGVkIGludG8gdGhlIG1haW4gYnVpbGQgd2l0aCBgYWRkX3N1YmRpcmVj
dG9yeSgpYC4gRm9yIGV4YW1wbGU6CisKK05ldyBmaWxlIGBDTWFrZUxpc3RzLnR4dC5pbmA6CisK
KyAgICBjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMi44LjIpCisKKyAgICBwcm9qZWN0
KGdvb2dsZXRlc3QtZG93bmxvYWQgTk9ORSkKKworICAgIGluY2x1ZGUoRXh0ZXJuYWxQcm9qZWN0
KQorICAgIEV4dGVybmFsUHJvamVjdF9BZGQoZ29vZ2xldGVzdAorICAgICAgR0lUX1JFUE9TSVRP
UlkgICAgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0LmdpdAorICAgICAgR0lU
X1RBRyAgICAgICAgICAgbWFzdGVyCisgICAgICBTT1VSQ0VfRElSICAgICAgICAiJHtDTUFLRV9C
SU5BUllfRElSfS9nb29nbGV0ZXN0LXNyYyIKKyAgICAgIEJJTkFSWV9ESVIgICAgICAgICIke0NN
QUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3QtYnVpbGQiCisgICAgICBDT05GSUdVUkVfQ09NTUFO
RCAiIgorICAgICAgQlVJTERfQ09NTUFORCAgICAgIiIKKyAgICAgIElOU1RBTExfQ09NTUFORCAg
ICIiCisgICAgICBURVNUX0NPTU1BTkQgICAgICAiIgorICAgICkKKworRXhpc3RpbmcgYnVpbGQn
cyBgQ01ha2VMaXN0cy50eHRgOgorCisgICAgIyBEb3dubG9hZCBhbmQgdW5wYWNrIGdvb2dsZXRl
c3QgYXQgY29uZmlndXJlIHRpbWUKKyAgICBjb25maWd1cmVfZmlsZShDTWFrZUxpc3RzLnR4dC5p
biBnb29nbGV0ZXN0LWRvd25sb2FkL0NNYWtlTGlzdHMudHh0KQorICAgIGV4ZWN1dGVfcHJvY2Vz
cyhDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUcgIiR7Q01BS0VfR0VORVJBVE9SfSIgLgorICAg
ICAgUkVTVUxUX1ZBUklBQkxFIHJlc3VsdAorICAgICAgV09SS0lOR19ESVJFQ1RPUlkgJHtDTUFL
RV9CSU5BUllfRElSfS9nb29nbGV0ZXN0LWRvd25sb2FkICkKKyAgICBpZihyZXN1bHQpCisgICAg
ICBtZXNzYWdlKEZBVEFMX0VSUk9SICJDTWFrZSBzdGVwIGZvciBnb29nbGV0ZXN0IGZhaWxlZDog
JHtyZXN1bHR9IikKKyAgICBlbmRpZigpCisgICAgZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgJHtD
TUFLRV9DT01NQU5EfSAtLWJ1aWxkIC4KKyAgICAgIFJFU1VMVF9WQVJJQUJMRSByZXN1bHQKKyAg
ICAgIFdPUktJTkdfRElSRUNUT1JZICR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1kb3du
bG9hZCApCisgICAgaWYocmVzdWx0KQorICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiQnVpbGQg
c3RlcCBmb3IgZ29vZ2xldGVzdCBmYWlsZWQ6ICR7cmVzdWx0fSIpCisgICAgZW5kaWYoKQorCisg
ICAgIyBQcmV2ZW50IG92ZXJyaWRpbmcgdGhlIHBhcmVudCBwcm9qZWN0J3MgY29tcGlsZXIvbGlu
a2VyCisgICAgIyBzZXR0aW5ncyBvbiBXaW5kb3dzCisgICAgc2V0KGd0ZXN0X2ZvcmNlX3NoYXJl
ZF9jcnQgT04gQ0FDSEUgQk9PTCAiIiBGT1JDRSkKKworICAgICMgQWRkIGdvb2dsZXRlc3QgZGly
ZWN0bHkgdG8gb3VyIGJ1aWxkLiBUaGlzIGRlZmluZXMKKyAgICAjIHRoZSBndGVzdCBhbmQgZ3Rl
c3RfbWFpbiB0YXJnZXRzLgorICAgIGFkZF9zdWJkaXJlY3RvcnkoJHtDTUFLRV9CSU5BUllfRElS
fS9nb29nbGV0ZXN0LXNyYworICAgICAgICAgICAgICAgICAgICAgJHtDTUFLRV9CSU5BUllfRElS
fS9nb29nbGV0ZXN0LWJ1aWxkCisgICAgICAgICAgICAgICAgICAgICBFWENMVURFX0ZST01fQUxM
KQorCisgICAgIyBUaGUgZ3Rlc3QvZ3Rlc3RfbWFpbiB0YXJnZXRzIGNhcnJ5IGhlYWRlciBzZWFy
Y2ggcGF0aAorICAgICMgZGVwZW5kZW5jaWVzIGF1dG9tYXRpY2FsbHkgd2hlbiB1c2luZyBDTWFr
ZSAyLjguMTEgb3IKKyAgICAjIGxhdGVyLiBPdGhlcndpc2Ugd2UgaGF2ZSB0byBhZGQgdGhlbSBo
ZXJlIG91cnNlbHZlcy4KKyAgICBpZiAoQ01BS0VfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMi44LjEx
KQorICAgICAgaW5jbHVkZV9kaXJlY3RvcmllcygiJHtndGVzdF9TT1VSQ0VfRElSfS9pbmNsdWRl
IikKKyAgICBlbmRpZigpCisKKyAgICAjIE5vdyBzaW1wbHkgbGluayBhZ2FpbnN0IGd0ZXN0IG9y
IGd0ZXN0X21haW4gYXMgbmVlZGVkLiBFZworICAgIGFkZF9leGVjdXRhYmxlKGV4YW1wbGUgZXhh
bXBsZS5jcHApCisgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGV4YW1wbGUgZ3Rlc3RfbWFpbikK
KyAgICBhZGRfdGVzdChOQU1FIGV4YW1wbGVfdGVzdCBDT01NQU5EIGV4YW1wbGUpCisKK05vdGUg
dGhhdCB0aGlzIGFwcHJvYWNoIHJlcXVpcmVzIENNYWtlIDIuOC4yIG9yIGxhdGVyIGR1ZSB0byBp
dHMgdXNlIG9mIHRoZQorYEV4dGVybmFsUHJvamVjdF9BZGQoKWAgY29tbWFuZC4gVGhlIGFib3Zl
IHRlY2huaXF1ZSBpcyBkaXNjdXNzZWQgaW4gbW9yZSBkZXRhaWwKK2luIFt0aGlzIHNlcGFyYXRl
IGFydGljbGVdKGh0dHA6Ly9jcmFzY2l0LmNvbS8yMDE1LzA3LzI1L2NtYWtlLWd0ZXN0Lykgd2hp
Y2gKK2Fsc28gY29udGFpbnMgYSBsaW5rIHRvIGEgZnVsbHkgZ2VuZXJhbGl6ZWQgaW1wbGVtZW50
YXRpb24gb2YgdGhlIHRlY2huaXF1ZS4KKworIyMjIyMgVmlzdWFsIFN0dWRpbyBEeW5hbWljIHZz
IFN0YXRpYyBSdW50aW1lcworCitCeSBkZWZhdWx0LCBuZXcgVmlzdWFsIFN0dWRpbyBwcm9qZWN0
cyBsaW5rIHRoZSBDIHJ1bnRpbWVzIGR5bmFtaWNhbGx5IGJ1dAorR29vZ2xlIFRlc3QgbGlua3Mg
dGhlbSBzdGF0aWNhbGx5LiBUaGlzIHdpbGwgZ2VuZXJhdGUgYW4gZXJyb3IgdGhhdCBsb29rcwor
c29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZzogZ3Rlc3QubGliKGd0ZXN0LWFsbC5vYmopIDog
ZXJyb3IgTE5LMjAzODogbWlzbWF0Y2gKK2RldGVjdGVkIGZvciAnUnVudGltZUxpYnJhcnknOiB2
YWx1ZSAnTVRkX1N0YXRpY0RlYnVnJyBkb2Vzbid0IG1hdGNoIHZhbHVlCisnTURkX0R5bmFtaWNE
ZWJ1ZycgaW4gbWFpbi5vYmoKKworR29vZ2xlIFRlc3QgYWxyZWFkeSBoYXMgYSBDTWFrZSBvcHRp
b24gZm9yIHRoaXM6IGBndGVzdF9mb3JjZV9zaGFyZWRfY3J0YAorCitFbmFibGluZyB0aGlzIG9w
dGlvbiB3aWxsIG1ha2UgZ3Rlc3QgbGluayB0aGUgcnVudGltZXMgZHluYW1pY2FsbHkgdG9vLCBh
bmQKK21hdGNoIHRoZSBwcm9qZWN0IGluIHdoaWNoIGl0IGlzIGluY2x1ZGVkLgorCisjIyMgTGVn
YWN5IEJ1aWxkIFNjcmlwdHMKKworQmVmb3JlIHNldHRsaW5nIG9uIENNYWtlLCB3ZSBoYXZlIGJl
ZW4gcHJvdmlkaW5nIGhhbmQtbWFpbnRhaW5lZCBidWlsZAorcHJvamVjdHMvc2NyaXB0cyBmb3Ig
VmlzdWFsIFN0dWRpbywgWGNvZGUsIGFuZCBBdXRvdG9vbHMuIFdoaWxlIHdlIGNvbnRpbnVlIHRv
Citwcm92aWRlIHRoZW0gZm9yIGNvbnZlbmllbmNlLCB0aGV5IGFyZSBub3QgYWN0aXZlbHkgbWFp
bnRhaW5lZCBhbnkgbW9yZS4gV2UKK2hpZ2hseSByZWNvbW1lbmQgdGhhdCB5b3UgZm9sbG93IHRo
ZSBpbnN0cnVjdGlvbnMgaW4gdGhlIGFib3ZlIHNlY3Rpb25zIHRvCitpbnRlZ3JhdGUgR29vZ2xl
IFRlc3Qgd2l0aCB5b3VyIGV4aXN0aW5nIGJ1aWxkIHN5c3RlbS4KKworSWYgeW91IHN0aWxsIG5l
ZWQgdG8gdXNlIHRoZSBsZWdhY3kgYnVpbGQgc2NyaXB0cywgaGVyZSdzIGhvdzoKKworVGhlIG1z
dmNcIGZvbGRlciBjb250YWlucyB0d28gc29sdXRpb25zIHdpdGggVmlzdWFsIEMrKyBwcm9qZWN0
cy4gT3BlbiB0aGUKK2BndGVzdC5zbG5gIG9yIGBndGVzdC1tZC5zbG5gIGZpbGUgdXNpbmcgVmlz
dWFsIFN0dWRpbywgYW5kIHlvdSBhcmUgcmVhZHkgdG8KK2J1aWxkIEdvb2dsZSBUZXN0IHRoZSBz
YW1lIHdheSB5b3UgYnVpbGQgYW55IFZpc3VhbCBTdHVkaW8gcHJvamVjdC4gRmlsZXMgdGhhdAor
aGF2ZSBuYW1lcyBlbmRpbmcgd2l0aCAtbWQgdXNlIERMTCB2ZXJzaW9ucyBvZiBNaWNyb3NvZnQg
cnVudGltZSBsaWJyYXJpZXMgKHRoZQorL01EIG9yIHRoZSAvTURkIGNvbXBpbGVyIG9wdGlvbiku
IEZpbGVzIHdpdGhvdXQgdGhhdCBzdWZmaXggdXNlIHN0YXRpYyB2ZXJzaW9ucworb2YgdGhlIHJ1
bnRpbWUgbGlicmFyaWVzICh0aGUgL01UIG9yIHRoZSAvTVRkIG9wdGlvbikuIFBsZWFzZSBub3Rl
IHRoYXQgb25lIG11c3QKK3VzZSB0aGUgc2FtZSBvcHRpb24gdG8gY29tcGlsZSBib3RoIGd0ZXN0
IGFuZCB0aGUgdGVzdCBjb2RlLiBJZiB5b3UgdXNlIFZpc3VhbAorU3R1ZGlvIDIwMDUgb3IgYWJv
dmUsIHdlIHJlY29tbWVuZCB0aGUgLW1kIHZlcnNpb24gYXMgL01EIGlzIHRoZSBkZWZhdWx0IGZv
ciBuZXcKK3Byb2plY3RzIGluIHRoZXNlIHZlcnNpb25zIG9mIFZpc3VhbCBTdHVkaW8uCisKK09u
IE1hYyBPUyBYLCBvcGVuIHRoZSBgZ3Rlc3QueGNvZGVwcm9qYCBpbiB0aGUgYHhjb2RlL2AgZm9s
ZGVyIHVzaW5nIFhjb2RlLgorQnVpbGQgdGhlICJndGVzdCIgdGFyZ2V0LiBUaGUgdW5pdmVyc2Fs
IGJpbmFyeSBmcmFtZXdvcmsgd2lsbCBlbmQgdXAgaW4geW91cgorc2VsZWN0ZWQgYnVpbGQgZGly
ZWN0b3J5IChzZWxlY3RlZCBpbiB0aGUgWGNvZGUgIlByZWZlcmVuY2VzLi4uIiAtPiAiQnVpbGRp
bmciCitwYW5lIGFuZCBkZWZhdWx0cyB0byB4Y29kZS9idWlsZCkuIEFsdGVybmF0aXZlbHksIGF0
IHRoZSBjb21tYW5kIGxpbmUsIGVudGVyOgorCisgICAgeGNvZGVidWlsZAorCitUaGlzIHdpbGwg
YnVpbGQgdGhlICJSZWxlYXNlIiBjb25maWd1cmF0aW9uIG9mIGd0ZXN0LmZyYW1ld29yayBpbiB5
b3VyIGRlZmF1bHQKK2J1aWxkIGxvY2F0aW9uLiBTZWUgdGhlICJ4Y29kZWJ1aWxkIiBtYW4gcGFn
ZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dAorYnVpbGRpbmcgZGlmZmVyZW50IGNvbmZpZ3Vy
YXRpb25zIGFuZCBidWlsZGluZyBpbiBkaWZmZXJlbnQgbG9jYXRpb25zLgorCitJZiB5b3Ugd2lz
aCB0byB1c2UgdGhlIEdvb2dsZSBUZXN0IFhjb2RlIHByb2plY3Qgd2l0aCBYY29kZSA0LnggYW5k
IGFib3ZlLCB5b3UKK25lZWQgdG8gZWl0aGVyOgorCisqICAgdXBkYXRlIHRoZSBTREsgY29uZmln
dXJhdGlvbiBvcHRpb25zIGluIHhjb2RlL0NvbmZpZy9HZW5lcmFsLnhjb25maWcuCisgICAgQ29t
bWVudCBvcHRpb25zIGBTREtST09UYCwgYE1BQ09TX0RFUExPWU1FTlRfVEFSR0VUYCwgYW5kIGBH
Q0NfVkVSU0lPTmAuIElmCisgICAgeW91IGNob29zZSB0aGlzIHJvdXRlIHlvdSBsb3NlIHRoZSBh
YmlsaXR5IHRvIHRhcmdldCBlYXJsaWVyIHZlcnNpb25zIG9mCisgICAgTWFjT1MgWC4KKyogICBJ
bnN0YWxsIGFuIFNESyBmb3IgYW4gZWFybGllciB2ZXJzaW9uLiBUaGlzIGRvZXNuJ3QgYXBwZWFy
IHRvIGJlIHN1cHBvcnRlZAorICAgIGJ5IEFwcGxlLCBidXQgaGFzIGJlZW4gcmVwb3J0ZWQgdG8g
d29yaworICAgIChodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzUzNzg1MTgpLgor
CisjIyMgVHdlYWtpbmcgR29vZ2xlIFRlc3QKKworR29vZ2xlIFRlc3QgY2FuIGJlIHVzZWQgaW4g
ZGl2ZXJzZSBlbnZpcm9ubWVudHMuIFRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gbWF5Citub3Qg
d29yayAob3IgbWF5IG5vdCB3b3JrIHdlbGwpIG91dCBvZiB0aGUgYm94IGluIHNvbWUgZW52aXJv
bm1lbnRzLiBIb3dldmVyLAoreW91IGNhbiBlYXNpbHkgdHdlYWsgR29vZ2xlIFRlc3QgYnkgZGVm
aW5pbmcgY29udHJvbCBtYWNyb3Mgb24gdGhlIGNvbXBpbGVyCitjb21tYW5kIGxpbmUuIEdlbmVy
YWxseSwgdGhlc2UgbWFjcm9zIGFyZSBuYW1lZCBsaWtlIGBHVEVTVF9YWVpgIGFuZCB5b3UgZGVm
aW5lCit0aGVtIHRvIGVpdGhlciAxIG9yIDAgdG8gZW5hYmxlIG9yIGRpc2FibGUgYSBjZXJ0YWlu
IGZlYXR1cmUuCisKK1dlIGxpc3QgdGhlIG1vc3QgZnJlcXVlbnRseSB1c2VkIG1hY3JvcyBiZWxv
dy4gRm9yIGEgY29tcGxldGUgbGlzdCwgc2VlIGZpbGUKK1tpbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXBvcnQuaF0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2Iv
bWFzdGVyL2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oKS4KKworIyMjIENob29z
aW5nIGEgVFIxIFR1cGxlIExpYnJhcnkKKworU29tZSBHb29nbGUgVGVzdCBmZWF0dXJlcyByZXF1
aXJlIHRoZSBDKysgVGVjaG5pY2FsIFJlcG9ydCAxIChUUjEpIHR1cGxlCitsaWJyYXJ5LCB3aGlj
aCBpcyBub3QgeWV0IGF2YWlsYWJsZSB3aXRoIGFsbCBjb21waWxlcnMuIFRoZSBnb29kIG5ld3Mg
aXMgdGhhdAorR29vZ2xlIFRlc3QgaW1wbGVtZW50cyBhIHN1YnNldCBvZiBUUjEgdHVwbGUgdGhh
dCdzIGVub3VnaCBmb3IgaXRzIG93biBuZWVkLCBhbmQKK3dpbGwgYXV0b21hdGljYWxseSB1c2Ug
dGhpcyB3aGVuIHRoZSBjb21waWxlciBkb2Vzbid0IHByb3ZpZGUgVFIxIHR1cGxlLgorCitVc3Vh
bGx5IHlvdSBkb24ndCBuZWVkIHRvIGNhcmUgYWJvdXQgd2hpY2ggdHVwbGUgbGlicmFyeSBHb29n
bGUgVGVzdCB1c2VzLgorSG93ZXZlciwgaWYgeW91ciBwcm9qZWN0IGFscmVhZHkgdXNlcyBUUjEg
dHVwbGUsIHlvdSBuZWVkIHRvIHRlbGwgR29vZ2xlIFRlc3QgdG8KK3VzZSB0aGUgc2FtZSBUUjEg
dHVwbGUgbGlicmFyeSB0aGUgcmVzdCBvZiB5b3VyIHByb2plY3QgdXNlcywgb3IgdGhlIHR3byB0
dXBsZQoraW1wbGVtZW50YXRpb25zIHdpbGwgY2xhc2guIFRvIGRvIHRoYXQsIGFkZAorCisgICAg
LURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0wCisKK3RvIHRoZSBjb21waWxlciBmbGFncyB3aGls
ZSBjb21waWxpbmcgR29vZ2xlIFRlc3QgYW5kIHlvdXIgdGVzdHMuIElmIHlvdSB3YW50IHRvCitm
b3JjZSBHb29nbGUgVGVzdCB0byB1c2UgaXRzIG93biB0dXBsZSBsaWJyYXJ5LCBqdXN0IGFkZAor
CisgICAgLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0xCisKK3RvIHRoZSBjb21waWxlciBmbGFn
cyBpbnN0ZWFkLgorCitJZiB5b3UgZG9uJ3Qgd2FudCBHb29nbGUgVGVzdCB0byB1c2UgdHVwbGUg
YXQgYWxsLCBhZGQKKworICAgIC1ER1RFU1RfSEFTX1RSMV9UVVBMRT0wCisKK2FuZCBhbGwgZmVh
dHVyZXMgdXNpbmcgdHVwbGUgd2lsbCBiZSBkaXNhYmxlZC4KKworIyMjIE11bHRpLXRocmVhZGVk
IFRlc3RzCisKK0dvb2dsZSBUZXN0IGlzIHRocmVhZC1zYWZlIHdoZXJlIHRoZSBwdGhyZWFkIGxp
YnJhcnkgaXMgYXZhaWxhYmxlLiBBZnRlcgorYCNpbmNsdWRlICJndGVzdC9ndGVzdC5oImAsIHlv
dSBjYW4gY2hlY2sgdGhlIGBHVEVTVF9JU19USFJFQURTQUZFYCBtYWNybyB0byBzZWUKK3doZXRo
ZXIgdGhpcyBpcyB0aGUgY2FzZSAoeWVzIGlmIHRoZSBtYWNybyBpcyBgI2RlZmluZWRgIHRvIDEs
IG5vIGlmIGl0J3MKK3VuZGVmaW5lZC4pLgorCitJZiBHb29nbGUgVGVzdCBkb2Vzbid0IGNvcnJl
Y3RseSBkZXRlY3Qgd2hldGhlciBwdGhyZWFkIGlzIGF2YWlsYWJsZSBpbiB5b3VyCitlbnZpcm9u
bWVudCwgeW91IGNhbiBmb3JjZSBpdCB3aXRoCisKKyAgICAtREdURVNUX0hBU19QVEhSRUFEPTEK
Kworb3IKKworICAgIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MAorCitXaGVuIEdvb2dsZSBUZXN0IHVz
ZXMgcHRocmVhZCwgeW91IG1heSBuZWVkIHRvIGFkZCBmbGFncyB0byB5b3VyIGNvbXBpbGVyIGFu
ZC9vcgorbGlua2VyIHRvIHNlbGVjdCB0aGUgcHRocmVhZCBsaWJyYXJ5LCBvciB5b3UnbGwgZ2V0
IGxpbmsgZXJyb3JzLiBJZiB5b3UgdXNlIHRoZQorQ01ha2Ugc2NyaXB0IG9yIHRoZSBkZXByZWNh
dGVkIEF1dG90b29scyBzY3JpcHQsIHRoaXMgaXMgdGFrZW4gY2FyZSBvZiBmb3IgeW91LgorSWYg
eW91IHVzZSB5b3VyIG93biBidWlsZCBzY3JpcHQsIHlvdSdsbCBuZWVkIHRvIHJlYWQgeW91ciBj
b21waWxlciBhbmQgbGlua2VyJ3MKK21hbnVhbCB0byBmaWd1cmUgb3V0IHdoYXQgZmxhZ3MgdG8g
YWRkLgorCisjIyMgQXMgYSBTaGFyZWQgTGlicmFyeSAoRExMKQorCitHb29nbGUgVGVzdCBpcyBj
b21wYWN0LCBzbyBtb3N0IHVzZXJzIGNhbiBidWlsZCBhbmQgbGluayBpdCBhcyBhIHN0YXRpYyBs
aWJyYXJ5Citmb3IgdGhlIHNpbXBsaWNpdHkuIFlvdSBjYW4gY2hvb3NlIHRvIHVzZSBHb29nbGUg
VGVzdCBhcyBhIHNoYXJlZCBsaWJyYXJ5IChrbm93bgorYXMgYSBETEwgb24gV2luZG93cykgaWYg
eW91IHByZWZlci4KKworVG8gY29tcGlsZSAqZ3Rlc3QqIGFzIGEgc2hhcmVkIGxpYnJhcnksIGFk
ZAorCisgICAgLURHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJBUlk9MQorCit0byB0aGUgY29tcGls
ZXIgZmxhZ3MuIFlvdSdsbCBhbHNvIG5lZWQgdG8gdGVsbCB0aGUgbGlua2VyIHRvIHByb2R1Y2Ug
YSBzaGFyZWQKK2xpYnJhcnkgaW5zdGVhZCAtIGNvbnN1bHQgeW91ciBsaW5rZXIncyBtYW51YWwg
Zm9yIGhvdyB0byBkbyBpdC4KKworVG8gY29tcGlsZSB5b3VyICp0ZXN0cyogdGhhdCB1c2UgdGhl
IGd0ZXN0IHNoYXJlZCBsaWJyYXJ5LCBhZGQKKworICAgIC1ER1RFU1RfTElOS0VEX0FTX1NIQVJF
RF9MSUJSQVJZPTEKKwordG8gdGhlIGNvbXBpbGVyIGZsYWdzLgorCitOb3RlOiB3aGlsZSB0aGUg
YWJvdmUgc3RlcHMgYXJlbid0IHRlY2huaWNhbGx5IG5lY2Vzc2FyeSB0b2RheSB3aGVuIHVzaW5n
IHNvbWUKK2NvbXBpbGVycyAoZS5nLiBHQ0MpLCB0aGV5IG1heSBiZWNvbWUgbmVjZXNzYXJ5IGlu
IHRoZSBmdXR1cmUsIGlmIHdlIGRlY2lkZSB0bworaW1wcm92ZSB0aGUgc3BlZWQgb2YgbG9hZGlu
ZyB0aGUgbGlicmFyeSAoc2VlCis8aHR0cDovL2djYy5nbnUub3JnL3dpa2kvVmlzaWJpbGl0eT4g
Zm9yIGRldGFpbHMpLiBUaGVyZWZvcmUgeW91IGFyZSByZWNvbW1lbmRlZAordG8gYWx3YXlzIGFk
ZCB0aGUgYWJvdmUgZmxhZ3Mgd2hlbiB1c2luZyBHb29nbGUgVGVzdCBhcyBhIHNoYXJlZCBsaWJy
YXJ5LgorT3RoZXJ3aXNlIGEgZnV0dXJlIHJlbGVhc2Ugb2YgR29vZ2xlIFRlc3QgbWF5IGJyZWFr
IHlvdXIgYnVpbGQgc2NyaXB0LgorCisjIyMgQXZvaWRpbmcgTWFjcm8gTmFtZSBDbGFzaGVzCisK
K0luIEMrKywgbWFjcm9zIGRvbid0IG9iZXkgbmFtZXNwYWNlcy4gVGhlcmVmb3JlIHR3byBsaWJy
YXJpZXMgdGhhdCBib3RoIGRlZmluZSBhCittYWNybyBvZiB0aGUgc2FtZSBuYW1lIHdpbGwgY2xh
c2ggaWYgeW91IGAjaW5jbHVkZWAgYm90aCBkZWZpbml0aW9ucy4gSW4gY2FzZSBhCitHb29nbGUg
VGVzdCBtYWNybyBjbGFzaGVzIHdpdGggYW5vdGhlciBsaWJyYXJ5LCB5b3UgY2FuIGZvcmNlIEdv
b2dsZSBUZXN0IHRvCityZW5hbWUgaXRzIG1hY3JvIHRvIGF2b2lkIHRoZSBjb25mbGljdC4KKwor
U3BlY2lmaWNhbGx5LCBpZiBib3RoIEdvb2dsZSBUZXN0IGFuZCBzb21lIG90aGVyIGNvZGUgZGVm
aW5lIG1hY3JvIEZPTywgeW91IGNhbgorYWRkCisKKyAgICAtREdURVNUX0RPTlRfREVGSU5FX0ZP
Tz0xCisKK3RvIHRoZSBjb21waWxlciBmbGFncyB0byB0ZWxsIEdvb2dsZSBUZXN0IHRvIGNoYW5n
ZSB0aGUgbWFjcm8ncyBuYW1lIGZyb20gYEZPT2AKK3RvIGBHVEVTVF9GT09gLiBDdXJyZW50bHkg
YEZPT2AgY2FuIGJlIGBGQUlMYCwgYFNVQ0NFRURgLCBvciBgVEVTVGAuIEZvcgorZXhhbXBsZSwg
d2l0aCBgLURHVEVTVF9ET05UX0RFRklORV9URVNUPTFgLCB5b3UnbGwgbmVlZCB0byB3cml0ZQor
CisgICAgR1RFU1RfVEVTVChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KKworaW5zdGVhZCBv
ZgorCisgICAgVEVTVChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KKworaW4gb3JkZXIgdG8g
ZGVmaW5lIGEgdGVzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtl
L0NvbmZpZy5jbWFrZS5pbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL0NvbmZpZy5j
bWFrZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMmJlNDQ5OGIxYTA3OTY4MWExMjllMzFiMTdjNTdlMTgxMjZh
NjNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvQ29u
ZmlnLmNtYWtlLmluCkBAIC0wLDAgKzEsOSBAQAorQFBBQ0tBR0VfSU5JVEAKK2luY2x1ZGUoQ01h
a2VGaW5kRGVwZW5kZW5jeU1hY3JvKQoraWYgKEBHVEVTVF9IQVNfUFRIUkVBREApCisgIHNldChU
SFJFQURTX1BSRUZFUl9QVEhSRUFEX0ZMQUcgQFRIUkVBRFNfUFJFRkVSX1BUSFJFQURfRkxBR0Ap
CisgIGZpbmRfZGVwZW5kZW5jeShUaHJlYWRzKQorZW5kaWYoKQorCitpbmNsdWRlKCIke0NNQUtF
X0NVUlJFTlRfTElTVF9ESVJ9L0B0YXJnZXRzX2V4cG9ydF9uYW1lQC5jbWFrZSIpCitjaGVja19y
ZXF1aXJlZF9jb21wb25lbnRzKCJAcHJvamVjdF9uYW1lQCIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9ndGVzdC5wYy5pbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2NtYWtlL2d0ZXN0LnBjLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3OTY3YWQ1NmZmMmMzMmVkNGJhMDY3
MDNhZWE1MjVkY2FkMmNlN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9jbWFrZS9ndGVzdC5wYy5pbgpAQCAtMCwwICsxLDkgQEAKK2xpYmRpcj1AQ01BS0VfSU5T
VEFMTF9GVUxMX0xJQkRJUkAKK2luY2x1ZGVkaXI9QENNQUtFX0lOU1RBTExfRlVMTF9JTkNMVURF
RElSQAorCitOYW1lOiBndGVzdAorRGVzY3JpcHRpb246IEdvb2dsZVRlc3QgKHdpdGhvdXQgbWFp
bigpIGZ1bmN0aW9uKQorVmVyc2lvbjogQFBST0pFQ1RfVkVSU0lPTkAKK1VSTDogaHR0cHM6Ly9n
aXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0CitMaWJzOiAtTCR7bGliZGlyfSAtbGd0ZXN0IEBD
TUFLRV9USFJFQURfTElCU19JTklUQAorQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gQEdURVNUX0hB
U19QVEhSRUFEX01BQ1JPQCBAQ01BS0VfVEhSRUFEX0xJQlNfSU5JVEAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2d0ZXN0X21haW4ucGMuaW4gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9jbWFrZS9ndGVzdF9tYWluLnBjLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlMjVkOWM3
M2M2ODNiNjQxN2I5OWJiNzAzYzEzYWUxNmJhOGE5NTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9ndGVzdF9tYWluLnBjLmluCkBAIC0wLDAgKzEsMTAg
QEAKK2xpYmRpcj1AQ01BS0VfSU5TVEFMTF9GVUxMX0xJQkRJUkAKK2luY2x1ZGVkaXI9QENNQUtF
X0lOU1RBTExfRlVMTF9JTkNMVURFRElSQAorCitOYW1lOiBndGVzdF9tYWluCitEZXNjcmlwdGlv
bjogR29vZ2xlVGVzdCAod2l0aCBtYWluKCkgZnVuY3Rpb24pCitWZXJzaW9uOiBAUFJPSkVDVF9W
RVJTSU9OQAorVVJMOiBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QKK1JlcXVp
cmVzOiBndGVzdAorTGliczogLUwke2xpYmRpcn0gLWxndGVzdF9tYWluIEBDTUFLRV9USFJFQURf
TElCU19JTklUQAorQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gQEdURVNUX0hBU19QVEhSRUFEX01B
Q1JPQCBAQ01BS0VfVEhSRUFEX0xJQlNfSU5JVEAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2NtYWtlL2ludGVybmFsX3V0aWxzLmNtYWtlIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvY21ha2UvaW50ZXJuYWxfdXRpbHMuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGMxZjliYTk5Y2Y1
MDU3NGY2NjlkZDdkZWJhMzI0ZGNlNDA1OTVmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2ludGVybmFsX3V0aWxzLmNtYWtlCkBAIC0wLDAgKzEsMzE4
IEBACisjIERlZmluZXMgZnVuY3Rpb25zIGFuZCBtYWNyb3MgdXNlZnVsIGZvciBidWlsZGluZyBH
b29nbGUgVGVzdCBhbmQKKyMgR29vZ2xlIE1vY2suCisjCisjIE5vdGU6CisjCisjIC0gVGhpcyBm
aWxlIHdpbGwgYmUgcnVuIHR3aWNlIHdoZW4gYnVpbGRpbmcgR29vZ2xlIE1vY2sgKG9uY2Ugdmlh
CisjICAgR29vZ2xlIFRlc3QncyBDTWFrZUxpc3RzLnR4dCwgYW5kIG9uY2UgdmlhIEdvb2dsZSBN
b2NrJ3MpLgorIyAgIFRoZXJlZm9yZSBpdCBzaG91bGRuJ3QgaGF2ZSBhbnkgc2lkZSBlZmZlY3Rz
IG90aGVyIHRoYW4gZGVmaW5pbmcKKyMgICB0aGUgZnVuY3Rpb25zIGFuZCBtYWNyb3MuCisjCisj
IC0gVGhlIGZ1bmN0aW9ucy9tYWNyb3MgZGVmaW5lZCBpbiB0aGlzIGZpbGUgbWF5IGRlcGVuZCBv
biBHb29nbGUKKyMgICBUZXN0IGFuZCBHb29nbGUgTW9jaydzIG9wdGlvbigpIGRlZmluaXRpb25z
LCBhbmQgdGh1cyBtdXN0IGJlCisjICAgY2FsbGVkICphZnRlciogdGhlIG9wdGlvbnMgaGF2ZSBi
ZWVuIGRlZmluZWQuCisKKyMgVHdlYWtzIENNYWtlJ3MgZGVmYXVsdCBjb21waWxlci9saW5rZXIg
c2V0dGluZ3MgdG8gc3VpdCBHb29nbGUgVGVzdCdzIG5lZWRzLgorIworIyBUaGlzIG11c3QgYmUg
YSBtYWNybygpLCBhcyBpbnNpZGUgYSBmdW5jdGlvbiBzdHJpbmcoKSBjYW4gb25seQorIyB1cGRh
dGUgdmFyaWFibGVzIGluIHRoZSBmdW5jdGlvbiBzY29wZS4KK21hY3JvKGZpeF9kZWZhdWx0X2Nv
bXBpbGVyX3NldHRpbmdzXykKKyAgaWYgKE1TVkMpCisgICAgIyBGb3IgTVNWQywgQ01ha2Ugc2V0
cyBjZXJ0YWluIGZsYWdzIHRvIGRlZmF1bHRzIHdlIHdhbnQgdG8gb3ZlcnJpZGUuCisgICAgIyBU
aGlzIHJlcGxhY2VtZW50IGNvZGUgaXMgdGFrZW4gZnJvbSBzYW1wbGUgaW4gdGhlIENNYWtlIFdp
a2kgYXQKKyAgICAjIGh0dHBzOi8vZ2l0bGFiLmtpdHdhcmUuY29tL2NtYWtlL2NvbW11bml0eS93
aWtpcy9GQVEjZHluYW1pYy1yZXBsYWNlLgorICAgIGZvcmVhY2ggKGZsYWdfdmFyCisgICAgICAg
ICAgICAgQ01BS0VfQ1hYX0ZMQUdTIENNQUtFX0NYWF9GTEFHU19ERUJVRyBDTUFLRV9DWFhfRkxB
R1NfUkVMRUFTRQorICAgICAgICAgICAgIENNQUtFX0NYWF9GTEFHU19NSU5TSVpFUkVMIENNQUtF
X0NYWF9GTEFHU19SRUxXSVRIREVCSU5GTykKKyAgICAgIGlmIChOT1QgQlVJTERfU0hBUkVEX0xJ
QlMgQU5EIE5PVCBndGVzdF9mb3JjZV9zaGFyZWRfY3J0KQorICAgICAgICAjIFdoZW4gR29vZ2xl
IFRlc3QgaXMgYnVpbHQgYXMgYSBzaGFyZWQgbGlicmFyeSwgaXQgc2hvdWxkIGFsc28gdXNlCisg
ICAgICAgICMgc2hhcmVkIHJ1bnRpbWUgbGlicmFyaWVzLiAgT3RoZXJ3aXNlLCBpdCBtYXkgZW5k
IHVwIHdpdGggbXVsdGlwbGUKKyAgICAgICAgIyBjb3BpZXMgb2YgcnVudGltZSBsaWJyYXJ5IGRh
dGEgaW4gZGlmZmVyZW50IG1vZHVsZXMsIHJlc3VsdGluZyBpbgorICAgICAgICAjIGhhcmQtdG8t
ZmluZCBjcmFzaGVzLiBXaGVuIGl0IGlzIGJ1aWx0IGFzIGEgc3RhdGljIGxpYnJhcnksIGl0IGlz
CisgICAgICAgICMgcHJlZmVyYWJsZSB0byB1c2UgQ1JUIGFzIHN0YXRpYyBsaWJyYXJpZXMsIGFz
IHdlIGRvbid0IGhhdmUgdG8gcmVseQorICAgICAgICAjIG9uIENSVCBETExzIGJlaW5nIGF2YWls
YWJsZS4gQ01ha2UgYWx3YXlzIGRlZmF1bHRzIHRvIHVzaW5nIHNoYXJlZAorICAgICAgICAjIENS
VCBsaWJyYXJpZXMsIHNvIHdlIG92ZXJyaWRlIHRoYXQgZGVmYXVsdCBoZXJlLgorICAgICAgICBz
dHJpbmcoUkVQTEFDRSAiL01EIiAiLU1UIiAke2ZsYWdfdmFyfSAiJHske2ZsYWdfdmFyfX0iKQor
ICAgICAgZW5kaWYoKQorCisgICAgICAjIFdlIHByZWZlciBtb3JlIHN0cmljdCB3YXJuaW5nIGNo
ZWNraW5nIGZvciBidWlsZGluZyBHb29nbGUgVGVzdC4KKyAgICAgICMgUmVwbGFjZXMgL1czIHdp
dGggL1c0IGluIGRlZmF1bHRzLgorICAgICAgc3RyaW5nKFJFUExBQ0UgIi9XMyIgIi9XNCIgJHtm
bGFnX3Zhcn0gIiR7JHtmbGFnX3Zhcn19IikKKworICAgICAgIyBQcmV2ZW50IEQ5MDI1IHdhcm5p
bmcgZm9yIHRhcmdldHMgdGhhdCBoYXZlIGV4Y2VwdGlvbiBoYW5kbGluZworICAgICAgIyB0dXJu
ZWQgb2ZmICgvRUhzLWMtIGZsYWcpLiBXaGVyZSByZXF1aXJlZCwgZXhjZXB0aW9ucyBhcmUgZXhw
bGljaXRseQorICAgICAgIyByZS1lbmFibGVkIHVzaW5nIHRoZSBjeHhfZXhjZXB0aW9uX2ZsYWdz
IHZhcmlhYmxlLgorICAgICAgc3RyaW5nKFJFUExBQ0UgIi9FSHNjIiAiIiAke2ZsYWdfdmFyfSAi
JHske2ZsYWdfdmFyfX0iKQorICAgIGVuZGZvcmVhY2goKQorICBlbmRpZigpCitlbmRtYWNybygp
CisKKyMgRGVmaW5lcyB0aGUgY29tcGlsZXIvbGlua2VyIGZsYWdzIHVzZWQgdG8gYnVpbGQgR29v
Z2xlIFRlc3QgYW5kCisjIEdvb2dsZSBNb2NrLiAgWW91IGNhbiB0d2VhayB0aGVzZSBkZWZpbml0
aW9ucyB0byBzdWl0IHlvdXIgbmVlZC4gIEEKKyMgdmFyaWFibGUncyB2YWx1ZSBpcyBlbXB0eSBi
ZWZvcmUgaXQncyBleHBsaWNpdGx5IGFzc2lnbmVkIHRvLgorbWFjcm8oY29uZmlnX2NvbXBpbGVy
X2FuZF9saW5rZXIpCisgICMgTm90ZTogcHRocmVhZHMgb24gTWluR1cgaXMgbm90IHN1cHBvcnRl
ZCwgZXZlbiBpZiBhdmFpbGFibGUKKyAgIyBpbnN0ZWFkLCB3ZSB1c2Ugd2luZG93cyB0aHJlYWRp
bmcgcHJpbWl0aXZlcworICB1bnNldChHVEVTVF9IQVNfUFRIUkVBRCkKKyAgaWYgKE5PVCBndGVz
dF9kaXNhYmxlX3B0aHJlYWRzIEFORCBOT1QgTUlOR1cpCisgICAgIyBEZWZpbmVzIENNQUtFX1VT
RV9QVEhSRUFEU19JTklUIGFuZCBDTUFLRV9USFJFQURfTElCU19JTklULgorICAgIHNldChUSFJF
QURTX1BSRUZFUl9QVEhSRUFEX0ZMQUcgT04pCisgICAgZmluZF9wYWNrYWdlKFRocmVhZHMpCisg
ICAgaWYgKENNQUtFX1VTRV9QVEhSRUFEU19JTklUKQorICAgICAgc2V0KEdURVNUX0hBU19QVEhS
RUFEIE9OKQorICAgIGVuZGlmKCkKKyAgZW5kaWYoKQorCisgIGZpeF9kZWZhdWx0X2NvbXBpbGVy
X3NldHRpbmdzXygpCisgIGlmIChNU1ZDKQorICAgICMgTmV3bGluZXMgaW5zaWRlIGZsYWdzIHZh
cmlhYmxlcyBicmVhayBDTWFrZSdzIE5NYWtlIGdlbmVyYXRvci4KKyAgICAjIFRPRE8odmxhZGxA
Z29vZ2xlLmNvbSk6IEFkZCAtUlRDcyBhbmQgLVJUQ3UgdG8gZGVidWcgYnVpbGRzLgorICAgIHNl
dChjeHhfYmFzZV9mbGFncyAiLUdTIC1XNCAtV1ggLXdkNDI1MSAtd2Q0Mjc1IC1ub2xvZ28gLUog
LVppIikKKyAgICBpZiAoTVNWQ19WRVJTSU9OIExFU1MgMTQwMCkgICMgMTQwMCBpcyBWaXN1YWwg
U3R1ZGlvIDIwMDUKKyAgICAgICMgU3VwcHJlc3Mgc3B1cmlvdXMgd2FybmluZ3MgTVNWQyA3LjEg
c29tZXRpbWVzIGlzc3Vlcy4KKyAgICAgICMgRm9yY2luZyB2YWx1ZSB0byBib29sLgorICAgICAg
c2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtd2Q0ODAwIikKKyAgICAgICMg
Q29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVyYXRvciBjb3VsZCBub3QgYmUgZ2Vu
ZXJhdGVkLgorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtd2Q0
NTExIC13ZDQ1MTIiKQorICAgICAgIyBDb21wYXRpYmlsaXR5IHdhcm5pbmdzIG5vdCBhcHBsaWNh
YmxlIHRvIEdvb2dsZSBUZXN0LgorICAgICAgIyBSZXNvbHZlZCBvdmVybG9hZCB3YXMgZm91bmQg
YnkgYXJndW1lbnQtZGVwZW5kZW50IGxvb2t1cC4KKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAi
JHtjeHhfYmFzZV9mbGFnc30gLXdkNDY3NSIpCisgICAgZW5kaWYoKQorICAgIGlmIChNU1ZDX1ZF
UlNJT04gTEVTUyAxNTAwKSAgIyAxNTAwIGlzIFZpc3VhbCBTdHVkaW8gMjAwOAorICAgICAgIyBD
b25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50LgorICAgICAgIyBXaGVuIGNvbXBpbGlu
ZyB3aXRoIC9XNCwgd2UgZ2V0IHNldmVyYWwgaW5zdGFuY2VzIG9mIEM0MTI3CisgICAgICAjIChD
b25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50KS4gSW4gb3VyIGNvZGUsIHdlIGRpc2Fi
bGUgdGhhdAorICAgICAgIyB3YXJuaW5nIG9uIGEgY2FzZS1ieS1jYXNlIGJhc2lzLiBIb3dldmVy
LCBvbiBWaXN1YWwgU3R1ZGlvIDIwMDUsCisgICAgICAjIHRoZSB3YXJuaW5nIGZpcmVzIG9uIHN0
ZDo6bGlzdC4gVGhlcmVmb3JlIG9uIHRoYXQgY29tcGlsZXIgYW5kIGVhcmxpZXIsCisgICAgICAj
IHdlIGRpc2FibGUgdGhlIHdhcm5pbmcgcHJvamVjdC13aWRlLgorICAgICAgc2V0KGN4eF9iYXNl
X2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtd2Q0MTI3IikKKyAgICBlbmRpZigpCisgICAgaWYg
KE5PVCAoTVNWQ19WRVJTSU9OIExFU1MgMTcwMCkpICAjIDE3MDAgaXMgVmlzdWFsIFN0dWRpbyAy
MDEyLgorICAgICAgIyBTdXBwcmVzcyAidW5yZWFjaGFibGUgY29kZSIgd2FybmluZyBvbiBWUyAy
MDEyIGFuZCBsYXRlci4KKyAgICAgICMgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9u
cy8zMjMyNjY5IGV4cGxhaW5zIHRoZSBpc3N1ZS4KKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAi
JHtjeHhfYmFzZV9mbGFnc30gLXdkNDcwMiIpCisgICAgZW5kaWYoKQorCisgICAgc2V0KGN4eF9i
YXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtRF9VTklDT0RFIC1EVU5JQ09ERSAtRFdJTjMy
IC1EX1dJTjMyIikKKyAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC1E
U1RSSUNUIC1EV0lOMzJfTEVBTl9BTkRfTUVBTiIpCisgICAgc2V0KGN4eF9leGNlcHRpb25fZmxh
Z3MgIi1FSHNjIC1EX0hBU19FWENFUFRJT05TPTEiKQorICAgIHNldChjeHhfbm9fZXhjZXB0aW9u
X2ZsYWdzICItRUhzLWMtIC1EX0hBU19FWENFUFRJT05TPTAiKQorICAgIHNldChjeHhfbm9fcnR0
aV9mbGFncyAiLUdSLSIpCisgIGVsc2VpZiAoQ01BS0VfQ09NUElMRVJfSVNfR05VQ1hYKQorICAg
IHNldChjeHhfYmFzZV9mbGFncyAiLVdhbGwgLVdzaGFkb3cgLVdlcnJvciIpCisgICAgaWYoTk9U
IENNQUtFX0NYWF9DT01QSUxFUl9WRVJTSU9OIFZFUlNJT05fTEVTUyA3LjAuMCkKKyAgICAgIHNl
dChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLVduby1lcnJvcj1kYW5nbGluZy1l
bHNlIikKKyAgICBlbmRpZigpCisgICAgc2V0KGN4eF9leGNlcHRpb25fZmxhZ3MgIi1mZXhjZXB0
aW9ucyIpCisgICAgc2V0KGN4eF9ub19leGNlcHRpb25fZmxhZ3MgIi1mbm8tZXhjZXB0aW9ucyIp
CisgICAgIyBVbnRpbCB2ZXJzaW9uIDQuMy4yLCBHQ0MgZG9lc24ndCBkZWZpbmUgYSBtYWNybyB0
byBpbmRpY2F0ZQorICAgICMgd2hldGhlciBSVFRJIGlzIGVuYWJsZWQuICBUaGVyZWZvcmUgd2Ug
ZGVmaW5lIEdURVNUX0hBU19SVFRJCisgICAgIyBleHBsaWNpdGx5LgorICAgIHNldChjeHhfbm9f
cnR0aV9mbGFncyAiLWZuby1ydHRpIC1ER1RFU1RfSEFTX1JUVEk9MCIpCisgICAgc2V0KGN4eF9z
dHJpY3RfZmxhZ3MKKyAgICAgICItV2V4dHJhIC1Xbm8tdW51c2VkLXBhcmFtZXRlciAtV25vLW1p
c3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIikKKyAgZWxzZWlmIChDTUFLRV9DWFhfQ09NUElMRVJf
SUQgU1RSRVFVQUwgIlN1blBybyIpCisgICAgc2V0KGN4eF9leGNlcHRpb25fZmxhZ3MgIi1mZWF0
dXJlcz1leGNlcHQiKQorICAgICMgU3VuIFBybyBkb2Vzbid0IHByb3ZpZGUgbWFjcm9zIHRvIGlu
ZGljYXRlIHdoZXRoZXIgZXhjZXB0aW9ucyBhbmQKKyAgICAjIFJUVEkgYXJlIGVuYWJsZWQsIHNv
IHdlIGRlZmluZSBHVEVTVF9IQVNfKiBleHBsaWNpdGx5LgorICAgIHNldChjeHhfbm9fZXhjZXB0
aW9uX2ZsYWdzICItZmVhdHVyZXM9bm8lZXhjZXB0IC1ER1RFU1RfSEFTX0VYQ0VQVElPTlM9MCIp
CisgICAgc2V0KGN4eF9ub19ydHRpX2ZsYWdzICItZmVhdHVyZXM9bm8lcnR0aSAtREdURVNUX0hB
U19SVFRJPTAiKQorICBlbHNlaWYgKENNQUtFX0NYWF9DT01QSUxFUl9JRCBTVFJFUVVBTCAiVmlz
dWFsQWdlIiBPUgorICAgICAgQ01BS0VfQ1hYX0NPTVBJTEVSX0lEIFNUUkVRVUFMICJYTCIpCisg
ICAgIyBDTWFrZSAyLjggY2hhbmdlcyBWaXN1YWwgQWdlJ3MgY29tcGlsZXIgSUQgdG8gIlhMIi4K
KyAgICBzZXQoY3h4X2V4Y2VwdGlvbl9mbGFncyAiLXFlaCIpCisgICAgc2V0KGN4eF9ub19leGNl
cHRpb25fZmxhZ3MgIi1xbm9laCIpCisgICAgIyBVbnRpbCB2ZXJzaW9uIDkuMCwgVmlzdWFsIEFn
ZSBkb2Vzbid0IGRlZmluZSBhIG1hY3JvIHRvIGluZGljYXRlCisgICAgIyB3aGV0aGVyIFJUVEkg
aXMgZW5hYmxlZC4gIFRoZXJlZm9yZSB3ZSBkZWZpbmUgR1RFU1RfSEFTX1JUVEkKKyAgICAjIGV4
cGxpY2l0bHkuCisgICAgc2V0KGN4eF9ub19ydHRpX2ZsYWdzICItcW5vcnR0aSAtREdURVNUX0hB
U19SVFRJPTAiKQorICBlbHNlaWYgKENNQUtFX0NYWF9DT01QSUxFUl9JRCBTVFJFUVVBTCAiSFAi
KQorICAgIHNldChjeHhfYmFzZV9mbGFncyAiLUFBIC1tdCIpCisgICAgc2V0KGN4eF9leGNlcHRp
b25fZmxhZ3MgIi1ER1RFU1RfSEFTX0VYQ0VQVElPTlM9MSIpCisgICAgc2V0KGN4eF9ub19leGNl
cHRpb25fZmxhZ3MgIitub2VoIC1ER1RFU1RfSEFTX0VYQ0VQVElPTlM9MCIpCisgICAgIyBSVFRJ
IGNhbiBub3QgYmUgZGlzYWJsZWQgaW4gSFAgYUNDIGNvbXBpbGVyLgorICAgIHNldChjeHhfbm9f
cnR0aV9mbGFncyAiIikKKyAgZW5kaWYoKQorCisgICMgVGhlIHB0aHJlYWRzIGxpYnJhcnkgaXMg
YXZhaWxhYmxlIGFuZCBhbGxvd2VkPworICBpZiAoREVGSU5FRCBHVEVTVF9IQVNfUFRIUkVBRCkK
KyAgICBzZXQoR1RFU1RfSEFTX1BUSFJFQURfTUFDUk8gIi1ER1RFU1RfSEFTX1BUSFJFQUQ9MSIp
CisgIGVsc2UoKQorICAgIHNldChHVEVTVF9IQVNfUFRIUkVBRF9NQUNSTyAiLURHVEVTVF9IQVNf
UFRIUkVBRD0wIikKKyAgZW5kaWYoKQorICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2Vf
ZmxhZ3N9ICR7R1RFU1RfSEFTX1BUSFJFQURfTUFDUk99IikKKworICAjIEZvciBidWlsZGluZyBn
dGVzdCdzIG93biB0ZXN0cyBhbmQgc2FtcGxlcy4KKyAgc2V0KGN4eF9leGNlcHRpb24gIiR7Y3h4
X2Jhc2VfZmxhZ3N9ICR7Y3h4X2V4Y2VwdGlvbl9mbGFnc30iKQorICBzZXQoY3h4X25vX2V4Y2Vw
dGlvbgorICAgICIke0NNQUtFX0NYWF9GTEFHU30gJHtjeHhfYmFzZV9mbGFnc30gJHtjeHhfbm9f
ZXhjZXB0aW9uX2ZsYWdzfSIpCisgIHNldChjeHhfZGVmYXVsdCAiJHtjeHhfZXhjZXB0aW9ufSIp
CisgIHNldChjeHhfbm9fcnR0aSAiJHtjeHhfZGVmYXVsdH0gJHtjeHhfbm9fcnR0aV9mbGFnc30i
KQorICBzZXQoY3h4X3VzZV9vd25fdHVwbGUgIiR7Y3h4X2RlZmF1bHR9IC1ER1RFU1RfVVNFX09X
Tl9UUjFfVFVQTEU9MSIpCisKKyAgIyBGb3IgYnVpbGRpbmcgdGhlIGd0ZXN0IGxpYnJhcmllcy4K
KyAgc2V0KGN4eF9zdHJpY3QgIiR7Y3h4X2RlZmF1bHR9ICR7Y3h4X3N0cmljdF9mbGFnc30iKQor
ZW5kbWFjcm8oKQorCisjIERlZmluZXMgdGhlIGd0ZXN0ICYgZ3Rlc3RfbWFpbiBsaWJyYXJpZXMu
ICBVc2VyIHRlc3RzIHNob3VsZCBsaW5rCisjIHdpdGggb25lIG9mIHRoZW0uCitmdW5jdGlvbihj
eHhfbGlicmFyeV93aXRoX3R5cGUgbmFtZSB0eXBlIGN4eF9mbGFncykKKyAgIyB0eXBlIGNhbiBi
ZSBlaXRoZXIgU1RBVElDIG9yIFNIQVJFRCB0byBkZW5vdGUgYSBzdGF0aWMgb3Igc2hhcmVkIGxp
YnJhcnkuCisgICMgQVJHTiByZWZlcnMgdG8gYWRkaXRpb25hbCBhcmd1bWVudHMgYWZ0ZXIgJ2N4
eF9mbGFncycuCisgIGFkZF9saWJyYXJ5KCR7bmFtZX0gJHt0eXBlfSAke0FSR059KQorICBzZXRf
dGFyZ2V0X3Byb3BlcnRpZXMoJHtuYW1lfQorICAgIFBST1BFUlRJRVMKKyAgICBDT01QSUxFX0ZM
QUdTICIke2N4eF9mbGFnc30iKQorICAjIEdlbmVyYXRlIGRlYnVnIGxpYnJhcnkgbmFtZSB3aXRo
IGEgcG9zdGZpeC4KKyAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7bmFtZX0KKyAgICBQUk9QRVJU
SUVTCisgICAgREVCVUdfUE9TVEZJWCAiZCIpCisgIGlmIChCVUlMRF9TSEFSRURfTElCUyBPUiB0
eXBlIFNUUkVRVUFMICJTSEFSRUQiKQorICAgIHNldF90YXJnZXRfcHJvcGVydGllcygke25hbWV9
CisgICAgICBQUk9QRVJUSUVTCisgICAgICBDT01QSUxFX0RFRklOSVRJT05TICJHVEVTVF9DUkVB
VEVfU0hBUkVEX0xJQlJBUlk9MSIpCisgICAgaWYgKE5PVCAiJHtDTUFLRV9WRVJTSU9OfSIgVkVS
U0lPTl9MRVNTICIyLjguMTEiKQorICAgICAgdGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMoJHtu
YW1lfSBJTlRFUkZBQ0UKKyAgICAgICAgJDxJTlNUQUxMX0lOVEVSRkFDRTpHVEVTVF9MSU5LRURf
QVNfU0hBUkVEX0xJQlJBUlk9MT4pCisgICAgZW5kaWYoKQorICBlbmRpZigpCisgIGlmIChERUZJ
TkVEIEdURVNUX0hBU19QVEhSRUFEKQorICAgIGlmICgiJHtDTUFLRV9WRVJTSU9OfSIgVkVSU0lP
Tl9MRVNTICIzLjEuMCIpCisgICAgICBzZXQodGhyZWFkc19zcGVjICR7Q01BS0VfVEhSRUFEX0xJ
QlNfSU5JVH0pCisgICAgZWxzZSgpCisgICAgICBzZXQodGhyZWFkc19zcGVjIFRocmVhZHM6OlRo
cmVhZHMpCisgICAgZW5kaWYoKQorICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke25hbWV9IFBV
QkxJQyAke3RocmVhZHNfc3BlY30pCisgIGVuZGlmKCkKK2VuZGZ1bmN0aW9uKCkKKworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisjCisjIEhlbHBlciBmdW5jdGlvbnMgZm9yIGNyZWF0aW5nIGJ1aWxkIHRhcmdl
dHMuCisKK2Z1bmN0aW9uKGN4eF9zaGFyZWRfbGlicmFyeSBuYW1lIGN4eF9mbGFncykKKyAgY3h4
X2xpYnJhcnlfd2l0aF90eXBlKCR7bmFtZX0gU0hBUkVEICIke2N4eF9mbGFnc30iICR7QVJHTn0p
CitlbmRmdW5jdGlvbigpCisKK2Z1bmN0aW9uKGN4eF9saWJyYXJ5IG5hbWUgY3h4X2ZsYWdzKQor
ICBjeHhfbGlicmFyeV93aXRoX3R5cGUoJHtuYW1lfSAiIiAiJHtjeHhfZmxhZ3N9IiAke0FSR059
KQorZW5kZnVuY3Rpb24oKQorCisjIGN4eF9leGVjdXRhYmxlX3dpdGhfZmxhZ3MobmFtZSBjeHhf
ZmxhZ3MgbGlicyBzcmNzLi4uKQorIworIyBjcmVhdGVzIGEgbmFtZWQgQysrIGV4ZWN1dGFibGUg
dGhhdCBkZXBlbmRzIG9uIHRoZSBnaXZlbiBsaWJyYXJpZXMgYW5kCisjIGlzIGJ1aWx0IGZyb20g
dGhlIGdpdmVuIHNvdXJjZSBmaWxlcyB3aXRoIHRoZSBnaXZlbiBjb21waWxlciBmbGFncy4KK2Z1
bmN0aW9uKGN4eF9leGVjdXRhYmxlX3dpdGhfZmxhZ3MgbmFtZSBjeHhfZmxhZ3MgbGlicykKKyAg
YWRkX2V4ZWN1dGFibGUoJHtuYW1lfSAke0FSR059KQorICBpZiAoTVNWQyBBTkQgKE5PVCAoTVNW
Q19WRVJTSU9OIExFU1MgMTcwMCkpKSAgIyAxNzAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxMi4KKyAg
ICAjIEJpZ09iaiByZXF1aXJlZCBmb3IgdGVzdHMuCisgICAgc2V0KGN4eF9mbGFncyAiJHtjeHhf
ZmxhZ3N9IC1iaWdvYmoiKQorICBlbmRpZigpCisgIGlmIChjeHhfZmxhZ3MpCisgICAgc2V0X3Rh
cmdldF9wcm9wZXJ0aWVzKCR7bmFtZX0KKyAgICAgIFBST1BFUlRJRVMKKyAgICAgIENPTVBJTEVf
RkxBR1MgIiR7Y3h4X2ZsYWdzfSIpCisgIGVuZGlmKCkKKyAgaWYgKEJVSUxEX1NIQVJFRF9MSUJT
KQorICAgIHNldF90YXJnZXRfcHJvcGVydGllcygke25hbWV9CisgICAgICBQUk9QRVJUSUVTCisg
ICAgICBDT01QSUxFX0RFRklOSVRJT05TICJHVEVTVF9MSU5LRURfQVNfU0hBUkVEX0xJQlJBUlk9
MSIpCisgIGVuZGlmKCkKKyAgIyBUbyBzdXBwb3J0IG1peGluZyBsaW5raW5nIGluIHN0YXRpYyBh
bmQgZHluYW1pYyBsaWJyYXJpZXMsIGxpbmsgZWFjaAorICAjIGxpYnJhcnkgaW4gd2l0aCBhbiBl
eHRyYSBjYWxsIHRvIHRhcmdldF9saW5rX2xpYnJhcmllcy4KKyAgZm9yZWFjaCAobGliICIke2xp
YnN9IikKKyAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtuYW1lfSAke2xpYn0pCisgIGVuZGZv
cmVhY2goKQorZW5kZnVuY3Rpb24oKQorCisjIGN4eF9leGVjdXRhYmxlKG5hbWUgZGlyIGxpYiBz
cmNzLi4uKQorIworIyBjcmVhdGVzIGEgbmFtZWQgdGFyZ2V0IHRoYXQgZGVwZW5kcyBvbiB0aGUg
Z2l2ZW4gbGlicyBhbmQgaXMgYnVpbHQKKyMgZnJvbSB0aGUgZ2l2ZW4gc291cmNlIGZpbGVzLiAg
ZGlyL25hbWUuY2MgaXMgaW1wbGljaXRseSBpbmNsdWRlZCBpbgorIyB0aGUgc291cmNlIGZpbGUg
bGlzdC4KK2Z1bmN0aW9uKGN4eF9leGVjdXRhYmxlIG5hbWUgZGlyIGxpYnMpCisgIGN4eF9leGVj
dXRhYmxlX3dpdGhfZmxhZ3MoCisgICAgJHtuYW1lfSAiJHtjeHhfZGVmYXVsdH0iICIke2xpYnN9
IiAiJHtkaXJ9LyR7bmFtZX0uY2MiICR7QVJHTn0pCitlbmRmdW5jdGlvbigpCisKKyMgU2V0cyBQ
WVRIT05JTlRFUlBfRk9VTkQgYW5kIFBZVEhPTl9FWEVDVVRBQkxFLgorZmluZF9wYWNrYWdlKFB5
dGhvbkludGVycCkKKworIyBjeHhfdGVzdF93aXRoX2ZsYWdzKG5hbWUgY3h4X2ZsYWdzIGxpYnMg
c3Jjcy4uLikKKyMKKyMgY3JlYXRlcyBhIG5hbWVkIEMrKyB0ZXN0IHRoYXQgZGVwZW5kcyBvbiB0
aGUgZ2l2ZW4gbGlicyBhbmQgaXMgYnVpbHQKKyMgZnJvbSB0aGUgZ2l2ZW4gc291cmNlIGZpbGVz
IHdpdGggdGhlIGdpdmVuIGNvbXBpbGVyIGZsYWdzLgorZnVuY3Rpb24oY3h4X3Rlc3Rfd2l0aF9m
bGFncyBuYW1lIGN4eF9mbGFncyBsaWJzKQorICBjeHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzKCR7
bmFtZX0gIiR7Y3h4X2ZsYWdzfSIgIiR7bGlic30iICR7QVJHTn0pCisgIGFkZF90ZXN0KE5BTUUg
JHtuYW1lfSBDT01NQU5EICR7bmFtZX0pCitlbmRmdW5jdGlvbigpCisKKyMgY3h4X3Rlc3QobmFt
ZSBsaWJzIHNyY3MuLi4pCisjCisjIGNyZWF0ZXMgYSBuYW1lZCB0ZXN0IHRhcmdldCB0aGF0IGRl
cGVuZHMgb24gdGhlIGdpdmVuIGxpYnMgYW5kIGlzCisjIGJ1aWx0IGZyb20gdGhlIGdpdmVuIHNv
dXJjZSBmaWxlcy4gIFVubGlrZSBjeHhfdGVzdF93aXRoX2ZsYWdzLAorIyB0ZXN0L25hbWUuY2Mg
aXMgYWxyZWFkeSBpbXBsaWNpdGx5IGluY2x1ZGVkIGluIHRoZSBzb3VyY2UgZmlsZSBsaXN0Lgor
ZnVuY3Rpb24oY3h4X3Rlc3QgbmFtZSBsaWJzKQorICBjeHhfdGVzdF93aXRoX2ZsYWdzKCIke25h
bWV9IiAiJHtjeHhfZGVmYXVsdH0iICIke2xpYnN9IgorICAgICJ0ZXN0LyR7bmFtZX0uY2MiICR7
QVJHTn0pCitlbmRmdW5jdGlvbigpCisKKyMgcHlfdGVzdChuYW1lKQorIworIyBjcmVhdGVzIGEg
UHl0aG9uIHRlc3Qgd2l0aCB0aGUgZ2l2ZW4gbmFtZSB3aG9zZSBtYWluIG1vZHVsZSBpcyBpbgor
IyB0ZXN0L25hbWUucHkuICBJdCBkb2VzIG5vdGhpbmcgaWYgUHl0aG9uIGlzIG5vdCBpbnN0YWxs
ZWQuCitmdW5jdGlvbihweV90ZXN0IG5hbWUpCisgIGlmIChQWVRIT05JTlRFUlBfRk9VTkQpCisg
ICAgaWYgKCR7Q01BS0VfTUFKT1JfVkVSU0lPTn0uJHtDTUFLRV9NSU5PUl9WRVJTSU9OfSBHUkVB
VEVSIDMuMSkKKyAgICAgIGlmIChDTUFLRV9DT05GSUdVUkFUSU9OX1RZUEVTKQorCSMgTXVsdGkt
Y29uZmlndXJhdGlvbiBidWlsZCBnZW5lcmF0b3JzIGFzIGZvciBWaXN1YWwgU3R1ZGlvIHNhdmUK
KwkjIG91dHB1dCBpbiBhIHN1YmRpcmVjdG9yeSBvZiBDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVIg
KERlYnVnLAorCSMgUmVsZWFzZSBldGMuKSwgc28gd2UgaGF2ZSB0byBwcm92aWRlIGl0IGhlcmUu
CisgICAgICAgIGFkZF90ZXN0KAorICAgICAgICAgIE5BTUUgJHtuYW1lfQorICAgICAgICAgIENP
TU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3Rl
c3QvJHtuYW1lfS5weQorICAgICAgICAgICAgICAtLWJ1aWxkX2Rpcj0ke0NNQUtFX0NVUlJFTlRf
QklOQVJZX0RJUn0vJDxDT05GSUc+ICR7QVJHTn0pCisgICAgICBlbHNlIChDTUFLRV9DT05GSUdV
UkFUSU9OX1RZUEVTKQorCSMgU2luZ2xlLWNvbmZpZ3VyYXRpb24gYnVpbGQgZ2VuZXJhdG9ycyBs
aWtlIE1ha2VmaWxlIGdlbmVyYXRvcnMKKwkjIGRvbid0IGhhdmUgc3ViZGlycyBiZWxvdyBDTUFL
RV9DVVJSRU5UX0JJTkFSWV9ESVIuCisgICAgICAgIGFkZF90ZXN0KAorICAgICAgICAgIE5BTUUg
JHtuYW1lfQorICAgICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L3Rlc3QvJHtuYW1lfS5weQorICAgICAgICAgICAgICAtLWJ1aWxk
X2Rpcj0ke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0gJHtBUkdOfSkKKyAgICAgIGVuZGlmIChD
TUFLRV9DT05GSUdVUkFUSU9OX1RZUEVTKQorICAgIGVsc2UgKCR7Q01BS0VfTUFKT1JfVkVSU0lP
Tn0uJHtDTUFLRV9NSU5PUl9WRVJTSU9OfSBHUkVBVEVSIDMuMSkKKyAgICAgICMgJHtDTUFLRV9D
VVJSRU5UX0JJTkFSWV9ESVJ9IGlzIGtub3duIGF0IGNvbmZpZ3VyYXRpb24gdGltZSwgc28gd2Ug
Y2FuCisgICAgICAjIGRpcmVjdGx5IGJpbmQgaXQgZnJvbSBjbWFrZS4gJHtDVEVTVF9DT05GSUdV
UkFUSU9OX1RZUEV9IGlzIGtub3duCisgICAgICAjIG9ubHkgYXQgY3Rlc3QgcnVudGltZSAoYnkg
Y2FsbGluZyBjdGVzdCAtYyA8Q29uZmlndXJhdGlvbj4pLCBzbworICAgICAgIyB3ZSBoYXZlIHRv
IGVzY2FwZSAkIHRvIGRlbGF5IHZhcmlhYmxlIHN1YnN0aXR1dGlvbiBoZXJlLgorICAgICAgYWRk
X3Rlc3QoCisgICAgICAgICR7bmFtZX0KKyAgICAgICAgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3Rlc3QvJHtuYW1lfS5weQorICAgICAgICAgIC0tYnVp
bGRfZGlyPSR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9cJHtDVEVTVF9DT05GSUdVUkFUSU9O
X1RZUEV9ICR7QVJHTn0pCisgICAgZW5kaWYgKCR7Q01BS0VfTUFKT1JfVkVSU0lPTn0uJHtDTUFL
RV9NSU5PUl9WRVJTSU9OfSBHUkVBVEVSIDMuMSkKKyAgZW5kaWYoUFlUSE9OSU5URVJQX0ZPVU5E
KQorZW5kZnVuY3Rpb24oKQorCisjIGluc3RhbGxfcHJvamVjdCh0YXJnZXRzLi4uKQorIworIyBJ
bnN0YWxscyB0aGUgc3BlY2lmaWVkIHRhcmdldHMgYW5kIGNvbmZpZ3VyZXMgdGhlIGFzc29jaWF0
ZWQgcGtnY29uZmlnIGZpbGVzLgorZnVuY3Rpb24oaW5zdGFsbF9wcm9qZWN0KQorICBpZihJTlNU
QUxMX0dURVNUKQorICAgIGluc3RhbGwoRElSRUNUT1JZICIke1BST0pFQ1RfU09VUkNFX0RJUn0v
aW5jbHVkZS8iCisgICAgICBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9
IikKKyAgICAjIEluc3RhbGwgdGhlIHByb2plY3QgdGFyZ2V0cy4KKyAgICBpbnN0YWxsKFRBUkdF
VFMgJHtBUkdOfQorICAgICAgRVhQT1JUICR7dGFyZ2V0c19leHBvcnRfbmFtZX0KKyAgICAgIFJV
TlRJTUUgREVTVElOQVRJT04gIiR7Q01BS0VfSU5TVEFMTF9CSU5ESVJ9IgorICAgICAgQVJDSElW
RSBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0iCisgICAgICBMSUJSQVJZIERF
U1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfTElCRElSfSIpCisgICAgIyBDb25maWd1cmUgYW5k
IGluc3RhbGwgcGtnY29uZmlnIGZpbGVzLgorICAgIGZvcmVhY2godCAke0FSR059KQorICAgICAg
c2V0KGNvbmZpZ3VyZWRfcGMgIiR7Z2VuZXJhdGVkX2Rpcn0vJHt0fS5wYyIpCisgICAgICBjb25m
aWd1cmVfZmlsZSgiJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2NtYWtlLyR7dH0ucGMuaW4iCisgICAg
ICAgICIke2NvbmZpZ3VyZWRfcGN9IiBAT05MWSkKKyAgICAgIGluc3RhbGwoRklMRVMgIiR7Y29u
ZmlndXJlZF9wY30iCisgICAgICAgIERFU1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfTElCRElS
fS9wa2djb25maWciKQorICAgIGVuZGZvcmVhY2goKQorICBlbmRpZigpCitlbmRmdW5jdGlvbigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9hbGwu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9hbGwuY2MKaW5kZXgg
YmE3YWQ2OGFkMWNhYTVmYjIwODM4YzcwMDg5NmE0MTgyYmE1OWQ5Zi4uMTIxYjJkODBlODNlYzdj
ZDBmZGY3ZGM2NzEyNzJkYzU0ZjZlOWYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvY29kZWdlYXIvZ3Rlc3RfYWxsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2NvZGVnZWFyL2d0ZXN0X2FsbC5jYwpAQCAtMSwzOCArMSwzOCBAQAotLy8gQ29weXJpZ2h0IDIw
MDksIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0v
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogSm9zaCBLZWxsZXkg
KGpvc2hrZWxAZ21haWwuY29tKQotLy8KLS8vIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsg
KEdvb2dsZSBUZXN0KQotLy8KLS8vIEMrK0J1aWxkZXIncyBJREUgY2Fubm90IGJ1aWxkIGEgc3Rh
dGljIGxpYnJhcnkgZnJvbSBmaWxlcyB3aXRoIGh5cGhlbnMKLS8vIGluIHRoZWlyIG5hbWUuICBT
ZWUgaHR0cDovL3FjLmNvZGVnZWFyLmNvbS93Yy9xY21haW4uYXNweD9kPTcwOTc3IC4KLS8vIFRo
aXMgZmlsZSBzZXJ2ZXMgYXMgYSB3b3JrYXJvdW5kLgotCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWFs
bC5jYyIKKy8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLg0KKy8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuDQorLy8NCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlDQorLy8gbWV0Og0K
Ky8vDQorLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQNCisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KKy8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXINCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlDQorLy8gZGlzdHJpYnV0aW9uLg0KKy8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCisvLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQ0K
Ky8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uDQorLy8NCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQorLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QNCisvLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IN
CisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVA0KKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KKy8vIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QNCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwNCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkNCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFDQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4NCisvLw0KKy8vIEF1dGhvcjogSm9zaCBLZWxsZXkgKGpvc2hr
ZWxAZ21haWwuY29tKQ0KKy8vDQorLy8gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29v
Z2xlIFRlc3QpDQorLy8NCisvLyBDKytCdWlsZGVyJ3MgSURFIGNhbm5vdCBidWlsZCBhIHN0YXRp
YyBsaWJyYXJ5IGZyb20gZmlsZXMgd2l0aCBoeXBoZW5zDQorLy8gaW4gdGhlaXIgbmFtZS4gIFNl
ZSBodHRwOi8vcWMuY29kZWdlYXIuY29tL3djL3FjbWFpbi5hc3B4P2Q9NzA5NzcgLg0KKy8vIFRo
aXMgZmlsZSBzZXJ2ZXMgYXMgYSB3b3JrYXJvdW5kLg0KKw0KKyNpbmNsdWRlICJzcmMvZ3Rlc3Qt
YWxsLmNjIg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NvZGVnZWFyL2d0
ZXN0X2xpbmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9saW5r
LmNjCmluZGV4IGI5NTVlYmYyZjkxMTBlNjM1M2M2ODdjYzM5NDIzNDhkYTc5N2NiNTAuLjkxOGVj
Y2QxOWI3ZGFmYTMyYjUyOTM4MGI3MDkyMzhjOWUzYTM2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2NvZGVnZWFyL2d0ZXN0X2xpbmsuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvY29kZWdlYXIvZ3Rlc3RfbGluay5jYwpAQCAtMSw0MCArMSw0MCBAQAotLy8g
Q29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8K
LS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0
cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0v
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
Sm9zaCBLZWxsZXkgKGpvc2hrZWxAZ21haWwuY29tKQotLy8KLS8vIEdvb2dsZSBDKysgVGVzdGlu
ZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQotLy8KLS8vIExpbmtzIGd0ZXN0LmxpYiBhbmQgZ3Rl
c3RfbWFpbi5saWIgaW50byB0aGUgY3VycmVudCBwcm9qZWN0IGluIEMrK0J1aWxkZXIuCi0vLyBU
aGlzIG1lYW5zIHRoYXQgdGhlc2UgbGlicmFyaWVzIGNhbid0IGJlIHJlbmFtZWQsIGJ1dCBpdCdz
IHRoZSBvbmx5IHdheSB0bwotLy8gZW5zdXJlIHRoYXQgRGVidWcgdmVyc3VzIFJlbGVhc2UgdGVz
dCBidWlsZHMgYXJlIGxpbmtlZCBhZ2FpbnN0IHRoZQotLy8gYXBwcm9wcmlhdGUgRGVidWcgb3Ig
UmVsZWFzZSBidWlsZCBvZiB0aGUgbGlicmFyaWVzLgotCi0jcHJhZ21hIGxpbmsgImd0ZXN0Lmxp
YiIKLSNwcmFnbWEgbGluayAiZ3Rlc3RfbWFpbi5saWIiCisvLyBDb3B5cmlnaHQgMjAwOSwgR29v
Z2xlIEluYy4NCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vDQorLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQ0KKy8vIG1ldDoNCisvLw0KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorLy8gbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Lg0KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUNCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyDQorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KKy8vIGRpc3RyaWJ1dGlv
bi4NCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzDQorLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKy8vDQorLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0KKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UDQorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwNCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UDQorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQorLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVA0KKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorLy8NCisv
LyBBdXRob3I6IEpvc2ggS2VsbGV5IChqb3Noa2VsQGdtYWlsLmNvbSkNCisvLw0KKy8vIEdvb2ds
ZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQ0KKy8vDQorLy8gTGlua3MgZ3Rl
c3QubGliIGFuZCBndGVzdF9tYWluLmxpYiBpbnRvIHRoZSBjdXJyZW50IHByb2plY3QgaW4gQysr
QnVpbGRlci4NCisvLyBUaGlzIG1lYW5zIHRoYXQgdGhlc2UgbGlicmFyaWVzIGNhbid0IGJlIHJl
bmFtZWQsIGJ1dCBpdCdzIHRoZSBvbmx5IHdheSB0bw0KKy8vIGVuc3VyZSB0aGF0IERlYnVnIHZl
cnN1cyBSZWxlYXNlIHRlc3QgYnVpbGRzIGFyZSBsaW5rZWQgYWdhaW5zdCB0aGUNCisvLyBhcHBy
b3ByaWF0ZSBEZWJ1ZyBvciBSZWxlYXNlIGJ1aWxkIG9mIHRoZSBsaWJyYXJpZXMuDQorDQorI3By
YWdtYSBsaW5rICJndGVzdC5saWIiDQorI3ByYWdtYSBsaW5rICJndGVzdF9tYWluLmxpYiINCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb25maWd1cmUuYWMgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9jb25maWd1cmUuYWMKaW5kZXggMWI5MTIzNzQ2MWUzOWZmNjFiNjMw
ZjNlMDE5YWRmZWVlYjc4M2FlNi4uMjU0YzhjNGIzMTg4NWQyNTcxZmEyMzAwYjYzMWU4YmY5ZDk1
YWUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29uZmlndXJlLmFjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NvbmZpZ3VyZS5hYwpAQCAtNSwxMyArNSwxNCBA
QCBtNF9pbmNsdWRlKG00L2FjeF9wdGhyZWFkLm00KQogIyAiWzEuMC4xXSIpLiBJdCBhbHNvIGFz
dW1lcyB0aGF0IHRoZXJlIHdvbid0IGJlIGFueSBjbG9zaW5nIHBhcmVudGhlc2lzCiAjIGJldHdl
ZW4gIkFDX0lOSVQoIiBhbmQgdGhlIGNsb3NpbmcgIikiIGluY2x1ZGluZyBjb21tZW50cyBhbmQg
c3RyaW5ncy4KIEFDX0lOSVQoW0dvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmtdLAotICAgICAg
ICBbMS41LjBdLAorICAgICAgICBbMS44LjBdLAogICAgICAgICBbZ29vZ2xldGVzdGZyYW1ld29y
a0Bnb29nbGVncm91cHMuY29tXSwKICAgICAgICAgW2d0ZXN0XSkKIAogIyBQcm92aWRlIHZhcmlv
dXMgb3B0aW9ucyB0byBpbml0aWFsaXplIHRoZSBBdXRvY29uZiBhbmQgY29uZmlndXJlIHByb2Nl
c3Nlcy4KIEFDX1BSRVJFUShbMi41OV0pCi1BQ19DT05GSUdfU1JDRElSKFsuL0NPUFlJTkddKQor
QUNfQ09ORklHX1NSQ0RJUihbLi9MSUNFTlNFXSkKK0FDX0NPTkZJR19NQUNST19ESVIoW200XSkK
IEFDX0NPTkZJR19BVVhfRElSKFtidWlsZC1hdXhdKQogQUNfQ09ORklHX0hFQURFUlMoW2J1aWxk
LWF1eC9jb25maWcuaF0pCiBBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlXSkKQEAgLTU0LDcgKzU1
LDcgQEAgQVNfSUYoW3Rlc3QgIngkd2l0aF9wdGhyZWFkcyIgIT0gInhubyJdLAogICAgICAgICAg
ICAgICAgW0FDX01TR19GQUlMVVJFKAogICAgICAgICAgICAgICAgICBbLS13aXRoLXB0aHJlYWRz
IHdhcyBzcGVjaWZpZWQsIGJ1dCB1bmFibGUgdG8gYmUgdXNlZF0pXSldKQogICAgICAgIGhhdmVf
cHRocmVhZHM9IiRhY3hfcHRocmVhZF9vayJdKQotQU1fQ09ORElUSU9OQUwoW0hBVkVfUFRIUkVB
RFNdLFt0ZXN0ICJ4JGhhdmVfcHRocmVhZHMiID09ICJ4eWVzIl0pCitBTV9DT05ESVRJT05BTChb
SEFWRV9QVEhSRUFEU10sW3Rlc3QgIngkaGF2ZV9wdGhyZWFkcyIgPSAieHllcyJdKQogQUNfU1VC
U1QoUFRIUkVBRF9DRkxBR1MpCiBBQ19TVUJTVChQVEhSRUFEX0xJQlMpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvUGtnY29uZmlnLm1kIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvZG9jcy9Qa2djb25maWcubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc2MTI4OTRkMmEzYzhl
YWRiNDQyYzU1ODc4MDRmYjc3ODVlYWE3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2RvY3MvUGtnY29uZmlnLm1kCkBAIC0wLDAgKzEsMTQ2IEBACisjIyBVc2lu
ZyBHb29nbGVUZXN0IGZyb20gdmFyaW91cyBidWlsZCBzeXN0ZW1zICMjCisKK0dvb2dsZVRlc3Qg
Y29tZXMgd2l0aCBwa2ctY29uZmlnIGZpbGVzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5l
IGFsbAorbmVjZXNzYXJ5IGZsYWdzIGZvciBjb21waWxpbmcgYW5kIGxpbmtpbmcgdG8gR29vZ2xl
VGVzdCAoYW5kIEdvb2dsZU1vY2spLgorUGtnLWNvbmZpZyBpcyBhIHN0YW5kYXJkaXNlZCBwbGFp
bi10ZXh0IGZvcm1hdCBjb250YWluaW5nCisKKyAgKiB0aGUgaW5jbHVkZWRpciAoLUkpIHBhdGgK
KyAgKiBuZWNlc3NhcnkgbWFjcm8gKC1EKSBkZWZpbml0aW9ucworICAqIGZ1cnRoZXIgcmVxdWly
ZWQgZmxhZ3MgKC1wdGhyZWFkKQorICAqIHRoZSBsaWJyYXJ5ICgtTCkgcGF0aAorICAqIHRoZSBs
aWJyYXJ5ICgtbCkgdG8gbGluayB0bworCitBbGwgY3VycmVudCBidWlsZCBzeXN0ZW1zIHN1cHBv
cnQgcGtnLWNvbmZpZyBpbiBvbmUgd2F5IG9yIGFub3RoZXIuIEZvcgorYWxsIGV4YW1wbGVzIGhl
cmUgd2UgYXNzdW1lIHlvdSB3YW50IHRvIGNvbXBpbGUgdGhlIHNhbXBsZQorYHNhbXBsZXMvc2Ft
cGxlM191bml0dGVzdC5jY2AuCisKKworIyMjIENNYWtlICMjIworCitVc2luZyBgcGtnLWNvbmZp
Z2AgaW4gQ01ha2UgaXMgZmFpcmx5IGVhc3k6CisKK2BgYAorY21ha2VfbWluaW11bV9yZXF1aXJl
ZChWRVJTSU9OIDMuMCkKKworY21ha2VfcG9saWN5KFNFVCBDTVAwMDQ4IE5FVykKK3Byb2plY3Qo
bXlfZ3Rlc3RfcGtnY29uZmlnIFZFUlNJT04gMC4wLjEgTEFOR1VBR0VTIENYWCkKKworZmluZF9w
YWNrYWdlKFBrZ0NvbmZpZykKK3BrZ19zZWFyY2hfbW9kdWxlKEdURVNUIFJFUVVJUkVEIGd0ZXN0
X21haW4pCisKK2FkZF9leGVjdXRhYmxlKHRlc3RhcHAgc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0
LmNjKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzKHRlc3RhcHAgJHtHVEVTVF9MREZMQUdTfSkKK3Rh
cmdldF9jb21waWxlX29wdGlvbnModGVzdGFwcCBQVUJMSUMgJHtHVEVTVF9DRkxBR1N9KQorCitp
bmNsdWRlKENUZXN0KQorYWRkX3Rlc3QoZmlyc3RfYW5kX29ubHlfdGVzdCB0ZXN0YXBwKQorYGBg
CisKK0l0IGlzIGdlbmVyYWxseSByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgYHRhcmdldF9jb21w
aWxlX29wdGlvbnNgICsgYF9DRkxBR1NgCitvdmVyIGB0YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmll
c2AgKyBgX0lOQ0xVREVfRElSU2AgYXMgdGhlIGZvcm1lciBpbmNsdWRlcyBub3QKK2p1c3QgLUkg
ZmxhZ3MgKEdvb2dsZVRlc3QgbWlnaHQgcmVxdWlyZSBhIG1hY3JvIGluZGljYXRpbmcgdG8gaW50
ZXJuYWwgaGVhZGVycwordGhhdCBhbGwgbGlicmFyaWVzIGhhdmUgYmVlbiBjb21waWxlZCB3aXRo
IHRocmVhZGluZyBlbmFibGVkLiBJbiBhZGRpdGlvbiwKK0dvb2dsZVRlc3QgbWlnaHQgYWxzbyBy
ZXF1aXJlIGAtcHRocmVhZGAgaW4gdGhlIGNvbXBpbGluZyBzdGVwLCBhbmQgYXMgc3VjaAorc3Bs
aXR0aW5nIHRoZSBwa2ctY29uZmlnIGBDZmxhZ3NgIHZhcmlhYmxlIGludG8gaW5jbHVkZSBkaXJz
IGFuZCBtYWNyb3MgZm9yCitgdGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMoKWAgbWlnaHQgc3Rp
bGwgbWlzcyB0aGlzKS4gVGhlIHNhbWUgcmVjb21tZW5kYXRpb24KK2dvZXMgZm9yIHVzaW5nIGBf
TERGTEFHU2Agb3ZlciB0aGUgbW9yZSBjb21tb25wbGFjZSBgX0xJQlJBUklFU2AsIHdoaWNoCito
YXBwZW5zIHRvIGRpc2NhcmQgYC1MYCBmbGFncyBhbmQgYC1wdGhyZWFkYC4KKworCisjIyMgQXV0
b3Rvb2xzICMjIworCitGaW5kaW5nIEdvb2dsZVRlc3QgaW4gQXV0b2NvbmYgYW5kIHVzaW5nIGl0
IGZyb20gQXV0b21ha2UgaXMgYWxzbyBmYWlybHkgZWFzeToKKworSW4geW91ciBgY29uZmlndXJl
LmFjYDoKKworYGBgCitBQ19QUkVSRVEoWzIuNjldKQorQUNfSU5JVChbbXlfZ3Rlc3RfcGtnY29u
ZmlnXSwgWzAuMC4xXSkKK0FDX0NPTkZJR19TUkNESVIoW3NhbXBsZXMvc2FtcGxlM191bml0dGVz
dC5jY10pCitBQ19QUk9HX0NYWAorCitQS0dfQ0hFQ0tfTU9EVUxFUyhbR1RFU1RdLCBbZ3Rlc3Rf
bWFpbl0pCisKK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ24gc3ViZGlyLW9iamVjdHNdKQorQUNf
Q09ORklHX0ZJTEVTKFtNYWtlZmlsZV0pCitBQ19PVVRQVVQKK2BgYAorCithbmQgaW4geW91ciBg
TWFrZWZpbGUuYW1gOgorCitgYGAKK2NoZWNrX1BST0dSQU1TID0gdGVzdGFwcAorVEVTVFMgPSAk
KGNoZWNrX1BST0dSQU1TKQorCit0ZXN0YXBwX1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTNfdW5p
dHRlc3QuY2MKK3Rlc3RhcHBfQ1hYRkxBR1MgPSAkKEdURVNUX0NGTEFHUykKK3Rlc3RhcHBfTERB
REQgPSAkKEdURVNUX0xJQlMpCitgYGAKKworCisjIyMgTWVzb24gIyMjCisKK01lc29uIG5hdGl2
ZWx5IHVzZXMgcGtnY29uZmlnIHRvIHF1ZXJ5IGRlcGVuZGVuY2llczoKKworYGBgCitwcm9qZWN0
KCdteV9ndGVzdF9wa2djb25maWcnLCAnY3BwJywgdmVyc2lvbiA6ICcwLjAuMScpCisKK2d0ZXN0
X2RlcCA9IGRlcGVuZGVuY3koJ2d0ZXN0X21haW4nKQorCit0ZXN0YXBwID0gZXhlY3V0YWJsZSgK
KyAgJ3Rlc3RhcHAnLAorICBmaWxlcyhbJ3NhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYyddKSwK
KyAgZGVwZW5kZW5jaWVzIDogZ3Rlc3RfZGVwLAorICBpbnN0YWxsIDogZmFsc2UpCisKK3Rlc3Qo
J2ZpcnN0X2FuZF9vbmx5X3Rlc3QnLCB0ZXN0YXBwKQorYGBgCisKKworIyMjIFBsYWluIE1ha2Vm
aWxlcyAjIyMKKworU2luY2UgYHBrZy1jb25maWdgIGlzIGEgc21hbGwgVW5peCBjb21tYW5kLWxp
bmUgdXRpbGl0eSwgaXQgY2FuIGJlIHVzZWQKK2luIGhhbmR3cml0dGVuIGBNYWtlZmlsZWBzIHRv
bzoKKworYGBgCitHVEVTVF9DRkxBR1MgPSBgcGtnLWNvbmZpZyAtLWNmbGFncyBndGVzdF9tYWlu
YAorR1RFU1RfTElCUyA9IGBwa2ctY29uZmlnIC0tbGlicyBndGVzdF9tYWluYAorCisuUEhPTlk6
IHRlc3RzIGFsbAorCit0ZXN0czogYWxsCisJLi90ZXN0YXBwCisKK2FsbDogdGVzdGFwcAorCit0
ZXN0YXBwOiB0ZXN0YXBwLm8KKwkkKENYWCkgJChDWFhGTEFHUykgJChMREZMQUdTKSAkPCAtbyAk
QCAkKEdURVNUX0xJQlMpCisKK3Rlc3RhcHAubzogc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNj
CisJJChDWFgpICQoQ1BQRkxBR1MpICQoQ1hYRkxBR1MpICQ8IC1jIC1vICRAICQoR1RFU1RfQ0ZM
QUdTKQorYGBgCisKKworIyMjIEhlbHAhIHBrZy1jb25maWcgY2FuJ3QgZmluZCBHb29nbGVUZXN0
ISAjIyMKKworTGV0J3Mgc2F5IHlvdSBoYXZlIGEgYENNYWtlTGlzdHMudHh0YCBhbG9uZyB0aGUg
bGluZXMgb2YgdGhlIG9uZSBpbiB0aGlzCit0dXRvcmlhbCBhbmQgeW91IHRyeSB0byBydW4gYGNt
YWtlYC4gSXQgaXMgdmVyeSBwb3NzaWJsZSB0aGF0IHlvdSBnZXQgYQorZmFpbHVyZSBhbG9uZyB0
aGUgbGluZXMgb2Y6CisKK2BgYAorLS0gQ2hlY2tpbmcgZm9yIG9uZSBvZiB0aGUgbW9kdWxlcyAn
Z3Rlc3RfbWFpbicKK0NNYWtlIEVycm9yIGF0IC91c3Ivc2hhcmUvY21ha2UvTW9kdWxlcy9GaW5k
UGtnQ29uZmlnLmNtYWtlOjY0MCAobWVzc2FnZSk6CisgIE5vbmUgb2YgdGhlIHJlcXVpcmVkICdn
dGVzdF9tYWluJyBmb3VuZAorYGBgCisKK1RoZXNlIGZhaWx1cmVzIGFyZSBjb21tb24gaWYgeW91
IGluc3RhbGxlZCBHb29nbGVUZXN0IHlvdXJzZWxmIGFuZCBoYXZlIG5vdAorc291cmNlZCBpdCBm
cm9tIGEgZGlzdHJvIG9yIG90aGVyIHBhY2thZ2UgbWFuYWdlci4gSWYgc28sIHlvdSBuZWVkIHRv
IHRlbGwKK3BrZy1jb25maWcgd2hlcmUgaXQgY2FuIGZpbmQgdGhlIGAucGNgIGZpbGVzIGNvbnRh
aW5pbmcgdGhlIGluZm9ybWF0aW9uLgorU2F5IHlvdSBpbnN0YWxsZWQgR29vZ2xlVGVzdCB0byBg
L3Vzci9sb2NhbGAsIHRoZW4gaXQgbWlnaHQgYmUgdGhhdCB0aGUKK2AucGNgIGZpbGVzIGFyZSBp
bnN0YWxsZWQgdW5kZXIgYC91c3IvbG9jYWwvbGliNjQvcGtnY29uZmlnYC4gSWYgeW91IHNldAor
CitgYGAKK2V4cG9ydCBQS0dfQ09ORklHX1BBVEg9L3Vzci9sb2NhbC9saWI2NC9wa2djb25maWcK
K2BgYAorCitwa2ctY29uZmlnIHdpbGwgYWxzbyB0cnkgdG8gbG9vayBpbiBgUEtHX0NPTkZJR19Q
QVRIYCB0byBmaW5kIGBndGVzdF9tYWluLnBjYC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2RvY3MvUHVtcE1hbnVhbC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2Rv
Y3MvUHVtcE1hbnVhbC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjdiYjI0YjA0MmRjNTQzYWY0YzQwOWFkMDNl
MTQ3ZWE1OTQ5YjdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
ZG9jcy9QdW1wTWFudWFsLm1kCkBAIC0wLDAgKzEsMTc3IEBACisKKworPGI+UDwvYj51bXAgaXMg
PGI+VTwvYj5zZWZ1bCBmb3IgPGI+TTwvYj5ldGEgPGI+UDwvYj5yb2dyYW1taW5nLgorCisjIFRo
ZSBQcm9ibGVtICMKKworVGVtcGxhdGUgYW5kIG1hY3JvIGxpYnJhcmllcyBvZnRlbiBuZWVkIHRv
IGRlZmluZSBtYW55IGNsYXNzZXMsCitmdW5jdGlvbnMsIG9yIG1hY3JvcyB0aGF0IHZhcnkgb25s
eSAob3IgYWxtb3N0IG9ubHkpIGluIHRoZSBudW1iZXIgb2YKK2FyZ3VtZW50cyB0aGV5IHRha2Uu
IEl0J3MgYSBsb3Qgb2YgcmVwZXRpdGl2ZSwgbWVjaGFuaWNhbCwgYW5kCitlcnJvci1wcm9uZSB3
b3JrLgorCitWYXJpYWRpYyB0ZW1wbGF0ZXMgYW5kIHZhcmlhZGljIG1hY3JvcyBjYW4gYWxsZXZp
YXRlIHRoZSBwcm9ibGVtLgorSG93ZXZlciwgd2hpbGUgYm90aCBhcmUgYmVpbmcgY29uc2lkZXJl
ZCBieSB0aGUgQysrIGNvbW1pdHRlZSwgbmVpdGhlcgoraXMgaW4gdGhlIHN0YW5kYXJkIHlldCBv
ciB3aWRlbHkgc3VwcG9ydGVkIGJ5IGNvbXBpbGVycy4gIFRodXMgdGhleQorYXJlIG9mdGVuIG5v
dCBhIGdvb2QgY2hvaWNlLCBlc3BlY2lhbGx5IHdoZW4geW91ciBjb2RlIG5lZWRzIHRvIGJlCitw
b3J0YWJsZS4gQW5kIHRoZWlyIGNhcGFiaWxpdGllcyBhcmUgc3RpbGwgbGltaXRlZC4KKworQXMg
YSByZXN1bHQsIGF1dGhvcnMgb2Ygc3VjaCBsaWJyYXJpZXMgb2Z0ZW4gaGF2ZSB0byB3cml0ZSBz
Y3JpcHRzIHRvCitnZW5lcmF0ZSB0aGVpciBpbXBsZW1lbnRhdGlvbi4gSG93ZXZlciwgb3VyIGV4
cGVyaWVuY2UgaXMgdGhhdCBpdCdzCit0ZWRpb3VzIHRvIHdyaXRlIHN1Y2ggc2NyaXB0cywgd2hp
Y2ggdGVuZCB0byByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YKK3RoZSBnZW5lcmF0ZWQgY29kZSBw
b29ybHkgYW5kIGFyZSBvZnRlbiBoYXJkIHRvIHJlYWQgYW5kIGVkaXQuIEZvcgorZXhhbXBsZSwg
YSBzbWFsbCBjaGFuZ2UgbmVlZGVkIGluIHRoZSBnZW5lcmF0ZWQgY29kZSBtYXkgcmVxdWlyZSBz
b21lCitub24taW50dWl0aXZlLCBub24tdHJpdmlhbCBjaGFuZ2VzIGluIHRoZSBzY3JpcHQuIFRo
aXMgaXMgZXNwZWNpYWxseQorcGFpbmZ1bCB3aGVuIGV4cGVyaW1lbnRpbmcgd2l0aCB0aGUgY29k
ZS4KKworIyBPdXIgU29sdXRpb24gIworCitQdW1wIChmb3IgUHVtcCBpcyBVc2VmdWwgZm9yIE1l
dGEgUHJvZ3JhbW1pbmcsIFByZXR0eSBVc2VmdWwgZm9yIE1ldGEKK1Byb2dyYW1taW5nLCBvciBQ
cmFjdGljYWwgVXRpbGl0eSBmb3IgTWV0YSBQcm9ncmFtbWluZywgd2hpY2hldmVyIHlvdQorcHJl
ZmVyKSBpcyBhIHNpbXBsZSBtZXRhLXByb2dyYW1taW5nIHRvb2wgZm9yIEMrKy4gVGhlIGlkZWEg
aXMgdGhhdCBhCitwcm9ncmFtbWVyIHdyaXRlcyBhIGBmb28ucHVtcGAgZmlsZSB3aGljaCBjb250
YWlucyBDKysgY29kZSBwbHVzIG1ldGEKK2NvZGUgdGhhdCBtYW5pcHVsYXRlcyB0aGUgQysrIGNv
ZGUuIFRoZSBtZXRhIGNvZGUgY2FuIGhhbmRsZQoraXRlcmF0aW9ucyBvdmVyIGEgcmFuZ2UsIG5l
c3RlZCBpdGVyYXRpb25zLCBsb2NhbCBtZXRhIHZhcmlhYmxlCitkZWZpbml0aW9ucywgc2ltcGxl
IGFyaXRobWV0aWMsIGFuZCBjb25kaXRpb25hbCBleHByZXNzaW9ucy4gWW91IGNhbgordmlldyBp
dCBhcyBhIHNtYWxsIERvbWFpbi1TcGVjaWZpYyBMYW5ndWFnZS4gVGhlIG1ldGEgbGFuZ3VhZ2Ug
aXMKK2Rlc2lnbmVkIHRvIGJlIG5vbi1pbnRydXNpdmUgKHMudC4gaXQgd29uJ3QgY29uZnVzZSBF
bWFjcycgQysrIG1vZGUsCitmb3IgZXhhbXBsZSkgYW5kIGNvbmNpc2UsIG1ha2luZyBQdW1wIGNv
ZGUgaW50dWl0aXZlIGFuZCBlYXN5IHRvCittYWludGFpbi4KKworIyMgSGlnaGxpZ2h0cyAjIwor
CisgICogVGhlIGltcGxlbWVudGF0aW9uIGlzIGluIGEgc2luZ2xlIFB5dGhvbiBzY3JpcHQgYW5k
IHRodXMgdWx0cmEgcG9ydGFibGU6IG5vIGJ1aWxkIG9yIGluc3RhbGxhdGlvbiBpcyBuZWVkZWQg
YW5kIGl0IHdvcmtzIGNyb3NzIHBsYXRmb3Jtcy4KKyAgKiBQdW1wIHRyaWVzIHRvIGJlIHNtYXJ0
IHdpdGggcmVzcGVjdCB0byBbR29vZ2xlJ3Mgc3R5bGUgZ3VpZGVdKGh0dHBzOi8vZ2l0aHViLmNv
bS9nb29nbGUvc3R5bGVndWlkZSk6IGl0IGJyZWFrcyBsb25nIGxpbmVzIChlYXN5IHRvIGhhdmUg
d2hlbiB0aGV5IGFyZSBnZW5lcmF0ZWQpIGF0IGFjY2VwdGFibGUgcGxhY2VzIHRvIGZpdCB3aXRo
aW4gODAgY29sdW1ucyBhbmQgaW5kZW50IHRoZSBjb250aW51YXRpb24gbGluZXMgY29ycmVjdGx5
LgorICAqIFRoZSBmb3JtYXQgaXMgaHVtYW4tcmVhZGFibGUgYW5kIG1vcmUgY29uY2lzZSB0aGFu
IFhNTC4KKyAgKiBUaGUgZm9ybWF0IHdvcmtzIHJlbGF0aXZlbHkgd2VsbCB3aXRoIEVtYWNzJyBD
KysgbW9kZS4KKworIyMgRXhhbXBsZXMgIyMKKworVGhlIGZvbGxvd2luZyBQdW1wIGNvZGUgKHdo
ZXJlIG1ldGEga2V5d29yZHMgc3RhcnQgd2l0aCBgJGAsIGBbW2AgYW5kIGBdXWAgYXJlIG1ldGEg
YnJhY2tldHMsIGFuZCBgJCRgIHN0YXJ0cyBhIG1ldGEgY29tbWVudCB0aGF0IGVuZHMgd2l0aCB0
aGUgbGluZSk6CisKK2BgYAorJHZhciBuID0gMyAgICAgJCQgRGVmaW5lcyBhIG1ldGEgdmFyaWFi
bGUgbi4KKyRyYW5nZSBpIDAuLm4gICQkIERlY2xhcmVzIHRoZSByYW5nZSBvZiBtZXRhIGl0ZXJh
dG9yIGkgKGluY2x1c2l2ZSkuCiskZm9yIGkgW1sKKyAgICAgICAgICAgICAgICQkIE1ldGEgbG9v
cC4KKy8vIEZvbyRpIGRvZXMgYmxhaCBmb3IgJGktYXJ5IHByZWRpY2F0ZXMuCiskcmFuZ2UgaiAx
Li5pCit0ZW1wbGF0ZSA8c2l6ZV90IE4gJGZvciBqIFtbLCB0eXBlbmFtZSBBJGpdXT4KK2NsYXNz
IEZvbyRpIHsKKyRpZiBpID09IDAgW1sKKyAgYmxhaCBhOworXV0gJGVsaWYgaSA8PSAyIFtbCisg
IGJsYWggYjsKK11dICRlbHNlIFtbCisgIGJsYWggYzsKK11dCit9OworCitdXQorYGBgCisKK3dp
bGwgYmUgdHJhbnNsYXRlZCBieSB0aGUgUHVtcCBjb21waWxlciB0bzoKKworYGBgCisvLyBGb28w
IGRvZXMgYmxhaCBmb3IgMC1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTj4KK2Ns
YXNzIEZvbzAgeworICBibGFoIGE7Cit9OworCisvLyBGb28xIGRvZXMgYmxhaCBmb3IgMS1hcnkg
cHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTE+CitjbGFzcyBGb28x
IHsKKyAgYmxhaCBiOworfTsKKworLy8gRm9vMiBkb2VzIGJsYWggZm9yIDItYXJ5IHByZWRpY2F0
ZXMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KK2NsYXNz
IEZvbzIgeworICBibGFoIGI7Cit9OworCisvLyBGb28zIGRvZXMgYmxhaCBmb3IgMy1hcnkgcHJl
ZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0
eXBlbmFtZSBBMz4KK2NsYXNzIEZvbzMgeworICBibGFoIGM7Cit9OworYGBgCisKK0luIGFub3Ro
ZXIgZXhhbXBsZSwKKworYGBgCiskcmFuZ2UgaSAxLi5uCitGdW5jKCRmb3IgaSArIFtbYSRpXV0p
OworJCQgVGhlIHRleHQgYmV0d2VlbiBpIGFuZCBbWyBpcyB0aGUgc2VwYXJhdG9yIGJldHdlZW4g
aXRlcmF0aW9ucy4KK2BgYAorCit3aWxsIGdlbmVyYXRlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGxp
bmVzICh3aXRob3V0IHRoZSBjb21tZW50cyksIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgYG5g
OgorCitgYGAKK0Z1bmMoKTsgICAgICAgICAgICAgIC8vIElmIG4gaXMgMC4KK0Z1bmMoYTEpOyAg
ICAgICAgICAgIC8vIElmIG4gaXMgMS4KK0Z1bmMoYTEgKyBhMik7ICAgICAgIC8vIElmIG4gaXMg
Mi4KK0Z1bmMoYTEgKyBhMiArIGEzKTsgIC8vIElmIG4gaXMgMy4KKy8vIEFuZCBzbyBvbi4uLgor
YGBgCisKKyMjIENvbnN0cnVjdHMgIyMKKworV2Ugc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGEg
cHJvZ3JhbW1pbmcgY29uc3RydWN0czoKKworfCBgJHZhciBpZCA9IGV4cGAgfCBEZWZpbmVzIGEg
bmFtZWQgY29uc3RhbnQgdmFsdWUuIGAkaWRgIGlzIHZhbGlkIHV0aWwgdGhlIGVuZCBvZiB0aGUg
Y3VycmVudCBtZXRhIGxleGljYWwgYmxvY2suIHwKK3w6LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGAkcmFuZ2UgaWQgZXhwLi5leHBg
IHwgU2V0cyB0aGUgcmFuZ2Ugb2YgYW4gaXRlcmF0aW9uIHZhcmlhYmxlLCB3aGljaCBjYW4gYmUg
cmV1c2VkIGluIG11bHRpcGxlIGxvb3BzIGxhdGVyLiAgICAgICAgICB8Cit8IGAkZm9yIGlkIHNl
cCBbWyBjb2RlIF1dYCB8IEl0ZXJhdGlvbi4gVGhlIHJhbmdlIG9mIGBpZGAgbXVzdCBoYXZlIGJl
ZW4gZGVmaW5lZCBlYXJsaWVyLiBgJGlkYCBpcyB2YWxpZCBpbiBgY29kZWAuICAgICAgICAgfAor
fCBgJCgkKWAgICAgICAgICAgfCBHZW5lcmF0ZXMgYSBzaW5nbGUgYCRgIGNoYXJhY3Rlci4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKK3wgYCRpZGAgICAgICAgICAgIHwgVmFsdWUgb2YgdGhlIG5hbWVkIGNvbnN0YW50IG9yIGl0
ZXJhdGlvbiB2YXJpYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8Cit8IGAkKGV4cClgICAgICAgICB8IFZhbHVlIG9mIHRoZSBleHByZXNzaW9uLiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorfCBgJGlmIGV4cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNoYCB8IENvbmRpdGlv
bmFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgW1sgY29kZSBdXWAgICAgfCBNZXRh
IGxleGljYWwgYmxvY2suICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYGNwcF9jb2RlYCAgICAgIHwg
UmF3IEMrKyBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGAkJCBjb21tZW50YCAg
ICB8IE1ldGEgY29tbWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCisqKk5vdGU6Kiog
VG8gZ2l2ZSB0aGUgdXNlciBzb21lIGZyZWVkb20gaW4gZm9ybWF0dGluZyB0aGUgUHVtcCBzb3Vy
Y2UKK2NvZGUsIFB1bXAgaWdub3JlcyBhIG5ldy1saW5lIGNoYXJhY3RlciBpZiBpdCdzIHJpZ2h0
IGFmdGVyIGAkZm9yIGZvb2AKK29yIG5leHQgdG8gYFtbYCBvciBgXV1gLiBXaXRob3V0IHRoaXMg
cnVsZSB5b3UnbGwgb2Z0ZW4gYmUgZm9yY2VkIHRvIHdyaXRlCit2ZXJ5IGxvbmcgbGluZXMgdG8g
Z2V0IHRoZSBkZXNpcmVkIG91dHB1dC4gVGhlcmVmb3JlIHNvbWV0aW1lcyB5b3UgbWF5CituZWVk
IHRvIGluc2VydCBhbiBleHRyYSBuZXctbGluZSBpbiBzdWNoIHBsYWNlcyBmb3IgYSBuZXctbGlu
ZSB0byBzaG93Cit1cCBpbiB5b3VyIG91dHB1dC4KKworIyMgR3JhbW1hciAjIworCitgYGAKK2Nv
ZGUgOjo9IGF0b21pY19jb2RlKgorYXRvbWljX2NvZGUgOjo9ICR2YXIgaWQgPSBleHAKKyAgICB8
ICR2YXIgaWQgPSBbWyBjb2RlIF1dCisgICAgfCAkcmFuZ2UgaWQgZXhwLi5leHAKKyAgICB8ICRm
b3IgaWQgc2VwIFtbIGNvZGUgXV0KKyAgICB8ICQoJCkKKyAgICB8ICRpZAorICAgIHwgJChleHAp
CisgICAgfCAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2gKKyAgICB8IFtbIGNvZGUgXV0K
KyAgICB8IGNwcF9jb2RlCitzZXAgOjo9IGNwcF9jb2RlIHwgZW1wdHlfc3RyaW5nCitlbHNlX2Jy
YW5jaCA6Oj0gJGVsc2UgW1sgY29kZSBdXQorICAgIHwgJGVsaWYgZXhwIFtbIGNvZGUgXV0gZWxz
ZV9icmFuY2gKKyAgICB8IGVtcHR5X3N0cmluZworZXhwIDo6PSBzaW1wbGVfZXhwcmVzc2lvbl9p
bl9QeXRob25fc3ludGF4CitgYGAKKworIyMgQ29kZSAjIworCitZb3UgY2FuIGZpbmQgdGhlIHNv
dXJjZSBjb2RlIG9mIFB1bXAgaW4gW3NjcmlwdHMvcHVtcC5weV0oLi4vc2NyaXB0cy9wdW1wLnB5
KS4gSXQgaXMgc3RpbGwKK3ZlcnkgdW5wb2xpc2hlZCBhbmQgbGFja3MgYXV0b21hdGVkIHRlc3Rz
LCBhbHRob3VnaCBpdCBoYXMgYmVlbgorc3VjY2Vzc2Z1bGx5IHVzZWQgbWFueSB0aW1lcy4gSWYg
eW91IGZpbmQgYSBjaGFuY2UgdG8gdXNlIGl0IGluIHlvdXIKK3Byb2plY3QsIHBsZWFzZSBsZXQg
dXMga25vdyB3aGF0IHlvdSB0aGluayEgIFdlIGFsc28gd2VsY29tZSBoZWxwIG9uCitpbXByb3Zp
bmcgUHVtcC4KKworIyMgUmVhbCBFeGFtcGxlcyAjIworCitZb3UgY2FuIGZpbmQgcmVhbC13b3Js
ZCBhcHBsaWNhdGlvbnMgb2YgUHVtcCBpbiBbR29vZ2xlIFRlc3RdKGh0dHBzOi8vZ2l0aHViLmNv
bS9nb29nbGUvZ29vZ2xldGVzdC90cmVlL21hc3Rlci9nb29nbGV0ZXN0KSBhbmQgW0dvb2dsZSBN
b2NrXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvdHJlZS9tYXN0ZXIvZ29v
Z2xlbW9jaykuIFRoZSBzb3VyY2UgZmlsZSBgZm9vLmgucHVtcGAgZ2VuZXJhdGVzIGBmb28uaGAu
CisKKyMjIFRpcHMgIyMKKworICAqIElmIGEgbWV0YSB2YXJpYWJsZSBpcyBmb2xsb3dlZCBieSBh
IGxldHRlciBvciBkaWdpdCwgeW91IGNhbiBzZXBhcmF0ZSB0aGVtIHVzaW5nIGBbW11dYCwgd2hp
Y2ggaW5zZXJ0cyBhbiBlbXB0eSBzdHJpbmcuIEZvciBleGFtcGxlIGBGb28kaltbXV1IZWxwZXJg
IGdlbmVyYXRlIGBGb28xSGVscGVyYCB3aGVuIGBqYCBpcyAxLgorICAqIFRvIGF2b2lkIGV4dHJh
LWxvbmcgUHVtcCBzb3VyY2UgbGluZXMsIHlvdSBjYW4gYnJlYWsgYSBsaW5lIGFueXdoZXJlIHlv
dSB3YW50IGJ5IGluc2VydGluZyBgW1tdXWAgZm9sbG93ZWQgYnkgYSBuZXcgbGluZS4gU2luY2Ug
YW55IG5ldy1saW5lIGNoYXJhY3RlciBuZXh0IHRvIGBbW2Agb3IgYF1dYCBpcyBpZ25vcmVkLCB0
aGUgZ2VuZXJhdGVkIGNvZGUgd29uJ3QgY29udGFpbiB0aGlzIG5ldyBsaW5lLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9YY29kZUd1aWRlLm1kIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvZG9jcy9YY29kZUd1aWRlLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjNjBhMzNkYWQ0
M2JhZjk4MzgxZjdjOWYyMGY2OWI1NThiMmFhZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1hjb2RlR3VpZGUubWQKQEAgLTAsMCArMSw5MyBAQAorCisK
K1RoaXMgZ3VpZGUgd2lsbCBleHBsYWluIGhvdyB0byB1c2UgdGhlIEdvb2dsZSBUZXN0aW5nIEZy
YW1ld29yayBpbiB5b3VyIFhjb2RlIHByb2plY3RzIG9uIE1hYyBPUyBYLiBUaGlzIHR1dG9yaWFs
IGJlZ2lucyBieSBxdWlja2x5IGV4cGxhaW5pbmcgd2hhdCB0byBkbyBmb3IgZXhwZXJpZW5jZWQg
dXNlcnMuIEFmdGVyIHRoZSBxdWljayBzdGFydCwgdGhlIGd1aWRlIGdvZXMgcHJvdmlkZXMgYWRk
aXRpb25hbCBleHBsYW5hdGlvbiBhYm91dCBlYWNoIHN0ZXAuCisKKyMgUXVpY2sgU3RhcnQgIwor
CitIZXJlIGlzIHRoZSBxdWljayBndWlkZSBmb3IgdXNpbmcgR29vZ2xlIFRlc3QgaW4geW91ciBY
Y29kZSBwcm9qZWN0LgorCisgIDEuIERvd25sb2FkIHRoZSBzb3VyY2UgZnJvbSB0aGUgW3dlYnNp
dGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdCkgdXNpbmcgdGhpcyBjb21t
YW5kOiBgc3ZuIGNoZWNrb3V0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90
cnVuay8gZ29vZ2xldGVzdC1yZWFkLW9ubHlgLgorICAxLiBPcGVuIHVwIHRoZSBgZ3Rlc3QueGNv
ZGVwcm9qYCBpbiB0aGUgYGdvb2dsZXRlc3QtcmVhZC1vbmx5L3hjb2RlL2AgZGlyZWN0b3J5IGFu
ZCBidWlsZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrLgorICAxLiBDcmVhdGUgYSBuZXcgIlNoZWxsIFRv
b2wiIHRhcmdldCBpbiB5b3VyIFhjb2RlIHByb2plY3QgY2FsbGVkIHNvbWV0aGluZyBsaWtlICJV
bml0VGVzdHMiLgorICAxLiBBZGQgdGhlIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyIHByb2plY3Qg
YW5kIGFkZCBpdCB0byB0aGUgIkxpbmsgQmluYXJ5IHdpdGggTGlicmFyaWVzIiBidWlsZCBwaGFz
ZSBvZiAiVW5pdFRlc3RzIi4KKyAgMS4gQWRkIHlvdXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRv
IHRoZSAiQ29tcGlsZSBTb3VyY2VzIiBidWlsZCBwaGFzZSBvZiAiVW5pdFRlc3RzIi4KKyAgMS4g
RWRpdCB0aGUgIlVuaXRUZXN0cyIgZXhlY3V0YWJsZSBhbmQgYWRkIGFuIGVudmlyb25tZW50IHZh
cmlhYmxlIG5hbWVkICJEWUxEXF9GUkFNRVdPUktcX1BBVEgiIHdpdGggYSB2YWx1ZSBlcXVhbCB0
byB0aGUgcGF0aCB0byB0aGUgZnJhbWV3b3JrIGNvbnRhaW5pbmcgdGhlIGd0ZXN0LmZyYW1ld29y
ayByZWxhdGl2ZSB0byB0aGUgY29tcGlsZWQgZXhlY3V0YWJsZS4KKyAgMS4gQnVpbGQgYW5kIEdv
LgorCitUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGZ1cnRoZXIgZXhwbGFpbiBlYWNoIG9mIHRoZSBz
dGVwcyBsaXN0ZWQgYWJvdmUgaW4gZGVwdGgsIGRlc2NyaWJpbmcgaW4gbW9yZSBkZXRhaWwgaG93
IHRvIGNvbXBsZXRlIGl0IGluY2x1ZGluZyBzb21lIHZhcmlhdGlvbnMuCisKKyMgR2V0IHRoZSBT
b3VyY2UgIworCitDdXJyZW50bHksIHRoZSBndGVzdC5mcmFtZXdvcmsgZGlzY3Vzc2VkIGhlcmUg
aXNuJ3QgYXZhaWxhYmxlIGluIGEgdGFnZ2VkIHJlbGVhc2Ugb2YgR29vZ2xlIFRlc3QsIGl0IGlz
IG9ubHkgYXZhaWxhYmxlIGluIHRoZSB0cnVuay4gQXMgZXhwbGFpbmVkIGF0IHRoZSBHb29nbGUg
VGVzdCBbc2l0ZV0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0KSwgeW91IGNh
biBnZXQgdGhlIGNvZGUgZnJvbSBhbm9ueW1vdXMgU1ZOIHdpdGggdGhpcyBjb21tYW5kOgorCitg
YGAKK3N2biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1
bmsvIGdvb2dsZXRlc3QtcmVhZC1vbmx5CitgYGAKKworQWx0ZXJuYXRpdmVseSwgaWYgeW91IGFy
ZSB3b3JraW5nIHdpdGggU3VidmVyc2lvbiBpbiB5b3VyIG93biBjb2RlIGJhc2UsIHlvdSBjYW4g
YWRkIEdvb2dsZSBUZXN0IGFzIGFuIGV4dGVybmFsIGRlcGVuZGVuY3kgdG8geW91ciBvd24gU3Vi
dmVyc2lvbiByZXBvc2l0b3J5LiBCeSBmb2xsb3dpbmcgdGhpcyBhcHByb2FjaCwgZXZlcnlvbmUg
dGhhdCBjaGVja3Mgb3V0IHlvdXIgc3ZuIHJlcG9zaXRvcnkgd2lsbCBhbHNvIHJlY2VpdmUgYSBj
b3B5IG9mIEdvb2dsZSBUZXN0IChhIHNwZWNpZmljIHZlcnNpb24sIGlmIHlvdSB3aXNoKSB3aXRo
b3V0IGhhdmluZyB0byBjaGVjayBpdCBvdXQgZXhwbGljaXRseS4gVGhpcyBtYWtlcyB0aGUgc2V0
IHVwIG9mIHlvdXIgcHJvamVjdCBzaW1wbGVyIGFuZCByZWR1Y2VzIHRoZSBjb3BpZWQgY29kZSBp
biB0aGUgcmVwb3NpdG9yeS4KKworVG8gdXNlIGBzdm46ZXh0ZXJuYWxzYCwgZGVjaWRlIHdoZXJl
IHlvdSB3b3VsZCBsaWtlIHRvIGhhdmUgdGhlIGV4dGVybmFsIHNvdXJjZSByZXNpZGUuIFlvdSBt
aWdodCBjaG9vc2UgdG8gcHV0IHRoZSBleHRlcm5hbCBzb3VyY2UgaW5zaWRlIHRoZSB0cnVuaywg
YmVjYXVzZSB5b3Ugd2FudCBpdCB0byBiZSBwYXJ0IG9mIHRoZSBicmFuY2ggd2hlbiB5b3UgbWFr
ZSBhIHJlbGVhc2UuIEhvd2V2ZXIsIGtlZXBpbmcgaXQgb3V0c2lkZSB0aGUgdHJ1bmsgaW4gYSB2
ZXJzaW9uLXRhZ2dlZCBkaXJlY3RvcnkgY2FsbGVkIHNvbWV0aGluZyBsaWtlIGB0aGlyZC1wYXJ0
eS9nb29nbGV0ZXN0LzEuMC4xYCwgaXMgYW5vdGhlciBvcHRpb24uIE9uY2UgdGhlIGxvY2F0aW9u
IGlzIGVzdGFibGlzaGVkLCB1c2UgYHN2biBwcm9wZWRpdCBzdm46ZXh0ZXJuYWxzIF9kaXJlY3Rv
cnlfYCB0byBzZXQgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgb24gYSBkaXJlY3RvcnkgaW4g
eW91ciByZXBvc2l0b3J5LiBUaGlzIGRpcmVjdG9yeSB3b24ndCBjb250YWluIHRoZSBjb2RlLCBi
dXQgYmUgaXRzIHZlcnNpb25lZCBwYXJlbnQgZGlyZWN0b3J5LgorCitUaGUgY29tbWFuZCBgc3Zu
IHByb3BlZGl0YCB3aWxsIGJyaW5nIHVwIHlvdXIgU3VidmVyc2lvbiBlZGl0b3IsIG1ha2luZyBl
ZGl0aW5nIHRoZSBsb25nLCAocG90ZW50aWFsbHkgbXVsdGktbGluZSkgcHJvcGVydHkgc2ltcGxl
ci4gVGhpcyBzYW1lIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjaGVjayBvdXQgYSB0YWdnZWQgYnJh
bmNoLCBieSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgVVJMIChlLmcuIGBodHRwczovL2dpdGh1Yi5j
b20vZ29vZ2xlL2dvb2dsZXRlc3QvcmVsZWFzZXMvdGFnL3JlbGVhc2UtMS4wLjFgKS4gQWRkaXRp
b25hbGx5LCB0aGUgc3ZuOmV4dGVybmFscyBwcm9wZXJ0eSBhbGxvd3MgdGhlIHNwZWNpZmljYXRp
b24gb2YgYSBwYXJ0aWN1bGFyIHJldmlzaW9uIG9mIHRoZSB0cnVuayB3aXRoIHRoZSBgLXJfIyNf
YCBvcHRpb24gKGUuZy4gYGV4dGVybmFscy9zcmMvZ29vZ2xldGVzdCAtcjYwIGh0dHA6Ly9nb29n
bGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVua2ApLgorCitIZXJlIGlzIGFuIGV4YW1wbGUg
b2YgdXNpbmcgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydGllcyBvbiBhIHRydW5rIChyZWFkIHZp
YSBgc3ZuIHByb3BnZXRgKSBvZiBhIHByb2plY3QuIFRoaXMgdmFsdWUgY2hlY2tzIG91dCBhIGNv
cHkgb2YgR29vZ2xlIFRlc3QgaW50byB0aGUgYHRydW5rL2V4dGVybmFscy9zcmMvZ29vZ2xldGVz
dC9gIGRpcmVjdG9yeS4KKworYGBgCitbQ29tcHV0ZXI6c3ZuXSB1c2VyJCBzdm4gcHJvcGdldCBz
dm46ZXh0ZXJuYWxzIHRydW5rCitleHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QgaHR0cDovL2dvb2ds
ZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rCitgYGAKKworIyBBZGQgdGhlIEZyYW1ld29y
ayB0byBZb3VyIFByb2plY3QgIworCitUaGUgbmV4dCBzdGVwIGlzIHRvIGJ1aWxkIGFuZCBhZGQg
dGhlIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyIG93biBwcm9qZWN0LiBUaGlzIGd1aWRlIGRlc2Ny
aWJlcyB0d28gY29tbW9uIHdheXMgYmVsb3cuCisKKyAgKiAqKk9wdGlvbiAxKiogLS0tIFRoZSBz
aW1wbGVzdCB3YXkgdG8gYWRkIEdvb2dsZSBUZXN0IHRvIHlvdXIgb3duIHByb2plY3QsIGlzIHRv
IG9wZW4gZ3Rlc3QueGNvZGVwcm9qIChmb3VuZCBpbiB0aGUgeGNvZGUvIGRpcmVjdG9yeSBvZiB0
aGUgR29vZ2xlIFRlc3QgdHJ1bmspIGFuZCBidWlsZCB0aGUgZnJhbWV3b3JrIG1hbnVhbGx5LiBU
aGVuLCBhZGQgdGhlIGJ1aWx0IGZyYW1ld29yayBpbnRvIHlvdXIgcHJvamVjdCB1c2luZyB0aGUg
IkFkZC0+RXhpc3RpbmcgRnJhbWV3b3JrLi4uIiBmcm9tIHRoZSBjb250ZXh0IG1lbnUgb3IgIlBy
b2plY3QtPkFkZC4uLiIgZnJvbSB0aGUgbWFpbiBtZW51LiBUaGUgZ3Rlc3QuZnJhbWV3b3JrIGlz
IHJlbG9jYXRhYmxlIGFuZCBjb250YWlucyB0aGUgaGVhZGVycyBhbmQgb2JqZWN0IGNvZGUgdGhh
dCB5b3UnbGwgbmVlZCB0byBtYWtlIHRlc3RzLiBUaGlzIG1ldGhvZCByZXF1aXJlcyByZWJ1aWxk
aW5nIGV2ZXJ5IHRpbWUgeW91IHVwZ3JhZGUgR29vZ2xlIFRlc3QgaW4geW91ciBwcm9qZWN0Lgor
ICAqICoqT3B0aW9uIDIqKiAtLS0gSWYgeW91IGFyZSBnb2luZyB0byBiZSBsaXZpbmcgb2ZmIHRo
ZSB0cnVuayBvZiBHb29nbGUgVGVzdCwgaW5jb3Jwb3JhdGluZyBpdHMgbGF0ZXN0IGZlYXR1cmVz
IGludG8geW91ciB1bml0IHRlc3RzIChvciBhcmUgYSBHb29nbGUgVGVzdCBkZXZlbG9wZXIgeW91
cnNlbGYpLiBZb3UnbGwgd2FudCB0byByZWJ1aWxkIHRoZSBmcmFtZXdvcmsgZXZlcnkgdGltZSB0
aGUgc291cmNlIHVwZGF0ZXMuIHRvIGRvIHRoaXMsIHlvdSdsbCBuZWVkIHRvIGFkZCB0aGUgZ3Rl
c3QueGNvZGVwcm9qIGZpbGUsIG5vdCB0aGUgZnJhbWV3b3JrIGl0c2VsZiwgdG8geW91ciBvd24g
WGNvZGUgcHJvamVjdC4gVGhlbiwgZnJvbSB0aGUgYnVpbGQgcHJvZHVjdHMgdGhhdCBhcmUgcmV2
ZWFsZWQgYnkgdGhlIHByb2plY3QncyBkaXNjbG9zdXJlIHRyaWFuZ2xlLCB5b3UgY2FuIGZpbmQg
dGhlIGd0ZXN0LmZyYW1ld29yaywgd2hpY2ggY2FuIGJlIGFkZGVkIHRvIHlvdXIgdGFyZ2V0cyAo
ZGlzY3Vzc2VkIGJlbG93KS4KKworIyBNYWtlIGEgVGVzdCBUYXJnZXQgIworCitUbyBzdGFydCB3
cml0aW5nIHRlc3RzLCBtYWtlIGEgbmV3ICJTaGVsbCBUb29sIiB0YXJnZXQuIFRoaXMgdGFyZ2V0
IHRlbXBsYXRlIGlzIGF2YWlsYWJsZSB1bmRlciBCU0QsIENvY29hLCBvciBDYXJib24uIEFkZCB5
b3VyIHVuaXQgdGVzdCBzb3VyY2UgY29kZSB0byB0aGUgIkNvbXBpbGUgU291cmNlcyIgYnVpbGQg
cGhhc2Ugb2YgdGhlIHRhcmdldC4KKworTmV4dCwgeW91J2xsIHdhbnQgdG8gYWRkIGd0ZXN0LmZy
YW1ld29yayBpbiB0d28gZGlmZmVyZW50IHdheXMsIGRlcGVuZGluZyB1cG9uIHdoaWNoIG9wdGlv
biB5b3UgY2hvc2UgYWJvdmUuCisKKyAgKiAqKk9wdGlvbiAxKiogLS0tIER1cmluZyBjb21waWxh
dGlvbiwgWGNvZGUgd2lsbCBuZWVkIHRvIGtub3cgdGhhdCB5b3UgYXJlIGxpbmtpbmcgYWdhaW5z
dCB0aGUgZ3Rlc3QuZnJhbWV3b3JrLiBBZGQgdGhlIGd0ZXN0LmZyYW1ld29yayB0byB0aGUgIkxp
bmsgQmluYXJ5IHdpdGggTGlicmFyaWVzIiBidWlsZCBwaGFzZSBvZiB5b3VyIHRlc3QgdGFyZ2V0
LiBUaGlzIHdpbGwgaW5jbHVkZSB0aGUgR29vZ2xlIFRlc3QgaGVhZGVycyBpbiB5b3VyIGhlYWRl
ciBzZWFyY2ggcGF0aCwgYW5kIHdpbGwgdGVsbCB0aGUgbGlua2VyIHdoZXJlIHRvIGZpbmQgdGhl
IGxpYnJhcnkuCisgICogKipPcHRpb24gMioqIC0tLSBJZiB5b3VyIHdvcmtpbmcgb3V0IG9mIHRo
ZSB0cnVuaywgeW91J2xsIGFsc28gd2FudCB0byBhZGQgZ3Rlc3QuZnJhbWV3b3JrIHRvIHlvdXIg
IkxpbmsgQmluYXJ5IHdpdGggTGlicmFyaWVzIiBidWlsZCBwaGFzZSBvZiB5b3VyIHRlc3QgdGFy
Z2V0LiBJbiBhZGRpdGlvbiwgeW91J2xsICB3YW50IHRvIGFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3Jr
IGFzIGEgZGVwZW5kZW5jeSB0byB5b3VyIHVuaXQgdGVzdCB0YXJnZXQuIFRoaXMgd2F5LCBYY29k
ZSB3aWxsIG1ha2Ugc3VyZSB0aGF0IGd0ZXN0LmZyYW1ld29yayBpcyB1cCB0byBkYXRlLCBldmVy
eSB0aW1lIHlvdXIgYnVpbGQgeW91ciB0YXJnZXQuIEZpbmFsbHksIGlmIHlvdSBkb24ndCBzaGFy
ZSBidWlsZCBkaXJlY3RvcmllcyB3aXRoIEdvb2dsZSBUZXN0LCB5b3UnbGwgaGF2ZSB0byBjb3B5
IHRoZSBndGVzdC5mcmFtZXdvcmsgaW50byB5b3VyIG93biBidWlsZCBwcm9kdWN0cyBkaXJlY3Rv
cnkgdXNpbmcgYSAiUnVuIFNjcmlwdCIgYnVpbGQgcGhhc2UuCisKKyMgU2V0IFVwIHRoZSBFeGVj
dXRhYmxlIFJ1biBFbnZpcm9ubWVudCAjCisKK1NpbmNlIHRoZSB1bml0IHRlc3QgZXhlY3V0YWJs
ZSBpcyBhIHNoZWxsIHRvb2wsIGl0IGRvZXNuJ3QgaGF2ZSBhIGJ1bmRsZSB3aXRoIGEgYENvbnRl
bnRzL0ZyYW1ld29ya3NgIGRpcmVjdG9yeSwgaW4gd2hpY2ggdG8gcGxhY2UgZ3Rlc3QuZnJhbWV3
b3JrLiBJbnN0ZWFkLCB0aGUgZHluYW1pYyBsaW5rZXIgbXVzdCBiZSB0b2xkIGF0IHJ1bnRpbWUg
dG8gc2VhcmNoIGZvciB0aGUgZnJhbWV3b3JrIGluIGFub3RoZXIgbG9jYXRpb24uIFRoaXMgY2Fu
IGJlIGFjY29tcGxpc2hlZCBieSBzZXR0aW5nIHRoZSAiRFlMRFxfRlJBTUVXT1JLXF9QQVRIIiBl
bnZpcm9ubWVudCB2YXJpYWJsZSBpbiB0aGUgIkVkaXQgQWN0aXZlIEV4ZWN1dGFibGUgLi4uIiBB
cmd1bWVudHMgdGFiLCB1bmRlciAiVmFyaWFibGVzIHRvIGJlIHNldCBpbiB0aGUgZW52aXJvbm1l
bnQ6Ii4gVGhlIHBhdGggZm9yIHRoaXMgdmFsdWUgaXMgdGhlIHBhdGggKHJlbGF0aXZlIG9yIGFi
c29sdXRlKSBvZiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGd0ZXN0LmZyYW1ld29yay4K
KworSWYgeW91IGhhdmVuJ3Qgc2V0IHVwIHRoZSBEWUxEXF9GUkFNRVdPUktcX1BBVEgsIGNvcnJl
Y3RseSwgeW91IG1pZ2h0IGdldCBhIG1lc3NhZ2UgbGlrZSB0aGlzOgorCitgYGAKK1tTZXNzaW9u
IHN0YXJ0ZWQgYXQgMjAwOC0wOC0xNSAwNjoyMzo1NyAtMDYwMC5dCisgIGR5bGQ6IExpYnJhcnkg
bm90IGxvYWRlZDogQGxvYWRlcl9wYXRoLy4uL0ZyYW1ld29ya3MvZ3Rlc3QuZnJhbWV3b3JrL1Zl
cnNpb25zL0EvZ3Rlc3QKKyAgICBSZWZlcmVuY2VkIGZyb206IC9Vc2Vycy91c2VybmFtZS9Eb2N1
bWVudHMvU2FuZGJveC9ndGVzdFNhbXBsZS9idWlsZC9EZWJ1Zy9XaWRnZXRGcmFtZXdvcmtUZXN0
CisgICAgUmVhc29uOiBpbWFnZSBub3QgZm91bmQKK2BgYAorCitUbyBjb3JyZWN0IHRoaXMgcHJv
YmxlbSwgZ28gdG8gdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBleGVjdXRhYmxlIG5h
bWVkIGluICJSZWZlcmVuY2VkIGZyb206IiB2YWx1ZSBpbiB0aGUgZXJyb3IgbWVzc2FnZSBhYm92
ZS4gVGhlbiwgd2l0aCB0aGUgdGVybWluYWwgaW4gdGhpcyBsb2NhdGlvbiwgZmluZCB0aGUgcmVs
YXRpdmUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGd0ZXN0LmZyYW1ld29y
ay4gVGhhdCBpcyB0aGUgdmFsdWUgeW91J2xsIG5lZWQgdG8gc2V0IGFzIHRoZSBEWUxEXF9GUkFN
RVdPUktcX1BBVEguCisKKyMgQnVpbGQgYW5kIEdvICMKKworTm93LCB3aGVuIHlvdSBjbGljayAi
QnVpbGQgYW5kIEdvIiwgdGhlIHRlc3Qgd2lsbCBiZSBleGVjdXRlZC4gRHVtcGluZyBvdXQgc29t
ZXRoaW5nIGxpa2UgdGhpczoKKworYGBgCitbU2Vzc2lvbiBzdGFydGVkIGF0IDIwMDgtMDgtMDYg
MDY6MzY6MTMgLTA2MDAuXQorWz09PT09PT09PT1dIFJ1bm5pbmcgMiB0ZXN0cyBmcm9tIDEgdGVz
dCBjYXNlLgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KK1st
LS0tLS0tLS0tXSAyIHRlc3RzIGZyb20gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0CitbIFJVTiAgICAg
IF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb25zdHJ1Y3RvcgorWyAgICAgICBPSyBdIFdp
ZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29uc3RydWN0b3IKK1sgUlVOICAgICAgXSBXaWRnZXRJ
bml0aWFsaXplclRlc3QuVGVzdENvbnZlcnNpb24KK1sgICAgICAgT0sgXSBXaWRnZXRJbml0aWFs
aXplclRlc3QuVGVzdENvbnZlcnNpb24KK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9u
bWVudCB0ZWFyLWRvd24KK1s9PT09PT09PT09XSAyIHRlc3RzIGZyb20gMSB0ZXN0IGNhc2UgcmFu
LgorWyAgUEFTU0VEICBdIDIgdGVzdHMuCisKK1RoZSBEZWJ1Z2dlciBoYXMgZXhpdGVkIHdpdGgg
c3RhdHVzIDAuICAKK2BgYAorCisjIFN1bW1hcnkgIworCitVbml0IHRlc3RpbmcgaXMgYSB2YWx1
YWJsZSB3YXkgdG8gZW5zdXJlIHlvdXIgZGF0YSBtb2RlbCBzdGF5cyB2YWxpZCBldmVuIGR1cmlu
ZyByYXBpZCBkZXZlbG9wbWVudCBvciByZWZhY3RvcmluZy4gVGhlIEdvb2dsZSBUZXN0aW5nIEZy
YW1ld29yayBpcyBhIGdyZWF0IHVuaXQgdGVzdGluZyBmcmFtZXdvcmsgZm9yIEMgYW5kIEMrKyB3
aGljaCBpbnRlZ3JhdGVzIHdlbGwgd2l0aCBhbiBYY29kZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVu
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvYWR2YW5jZWQubWQg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL2FkdmFuY2VkLm1kCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgw
NjVkMTk2MjFhOGIzN2ZiNzhjYjVlMGVkMWI4NjE4ZmU3NjI1ZDIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL2FkdmFuY2VkLm1kCkBAIC0wLDAgKzEsMjUy
MCBAQAorIyBBZHZhbmNlZCBnb29nbGV0ZXN0IFRvcGljcworCisKKyMjIEludHJvZHVjdGlvbgor
CitOb3cgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBbZ29vZ2xldGVzdCBQcmltZXJdKHByaW1lci5t
ZCkgYW5kIGxlYXJuZWQgaG93IHRvIHdyaXRlCit0ZXN0cyB1c2luZyBnb29nbGV0ZXN0LCBpdCdz
IHRpbWUgdG8gbGVhcm4gc29tZSBuZXcgdHJpY2tzLiBUaGlzIGRvY3VtZW50IHdpbGwKK3Nob3cg
eW91IG1vcmUgYXNzZXJ0aW9ucyBhcyB3ZWxsIGFzIGhvdyB0byBjb25zdHJ1Y3QgY29tcGxleCBm
YWlsdXJlIG1lc3NhZ2VzLAorcHJvcGFnYXRlIGZhdGFsIGZhaWx1cmVzLCByZXVzZSBhbmQgc3Bl
ZWQgdXAgeW91ciB0ZXN0IGZpeHR1cmVzLCBhbmQgdXNlIHZhcmlvdXMKK2ZsYWdzIHdpdGggeW91
ciB0ZXN0cy4KKworIyMgTW9yZSBBc3NlcnRpb25zCisKK1RoaXMgc2VjdGlvbiBjb3ZlcnMgc29t
ZSBsZXNzIGZyZXF1ZW50bHkgdXNlZCwgYnV0IHN0aWxsIHNpZ25pZmljYW50LAorYXNzZXJ0aW9u
cy4KKworIyMjIEV4cGxpY2l0IFN1Y2Nlc3MgYW5kIEZhaWx1cmUKKworVGhlc2UgdGhyZWUgYXNz
ZXJ0aW9ucyBkbyBub3QgYWN0dWFsbHkgdGVzdCBhIHZhbHVlIG9yIGV4cHJlc3Npb24uIEluc3Rl
YWQsIHRoZXkKK2dlbmVyYXRlIGEgc3VjY2VzcyBvciBmYWlsdXJlIGRpcmVjdGx5LiBMaWtlIHRo
ZSBtYWNyb3MgdGhhdCBhY3R1YWxseSBwZXJmb3JtIGEKK3Rlc3QsIHlvdSBtYXkgc3RyZWFtIGEg
Y3VzdG9tIGZhaWx1cmUgbWVzc2FnZSBpbnRvIHRoZW0uCisKK2BgYGMrKworU1VDQ0VFRCgpOwor
YGBgCisKK0dlbmVyYXRlcyBhIHN1Y2Nlc3MuIFRoaXMgZG9lcyAqKk5PVCoqIG1ha2UgdGhlIG92
ZXJhbGwgdGVzdCBzdWNjZWVkLiBBIHRlc3QgaXMKK2NvbnNpZGVyZWQgc3VjY2Vzc2Z1bCBvbmx5
IGlmIG5vbmUgb2YgaXRzIGFzc2VydGlvbnMgZmFpbCBkdXJpbmcgaXRzIGV4ZWN1dGlvbi4KKwor
Tk9URTogYFNVQ0NFRUQoKWAgaXMgcHVyZWx5IGRvY3VtZW50YXJ5IGFuZCBjdXJyZW50bHkgZG9l
c24ndCBnZW5lcmF0ZSBhbnkKK3VzZXItdmlzaWJsZSBvdXRwdXQuIEhvd2V2ZXIsIHdlIG1heSBh
ZGQgYFNVQ0NFRUQoKWAgbWVzc2FnZXMgdG8gZ29vZ2xldGVzdCdzCitvdXRwdXQgaW4gdGhlIGZ1
dHVyZS4KKworYGBgYysrCitGQUlMKCk7CitBRERfRkFJTFVSRSgpOworQUREX0ZBSUxVUkVfQVQo
ImZpbGVfcGF0aCIsIGxpbmVfbnVtYmVyKTsKK2BgYAorCitgRkFJTCgpYCBnZW5lcmF0ZXMgYSBm
YXRhbCBmYWlsdXJlLCB3aGlsZSBgQUREX0ZBSUxVUkUoKWAgYW5kIGBBRERfRkFJTFVSRV9BVCgp
YAorZ2VuZXJhdGUgYSBub25mYXRhbCBmYWlsdXJlLiBUaGVzZSBhcmUgdXNlZnVsIHdoZW4gY29u
dHJvbCBmbG93LCByYXRoZXIgdGhhbiBhCitCb29sZWFuIGV4cHJlc3Npb24sIGRldGVybWluZXMg
dGhlIHRlc3QncyBzdWNjZXNzIG9yIGZhaWx1cmUuIEZvciBleGFtcGxlLCB5b3UKK21pZ2h0IHdh
bnQgdG8gd3JpdGUgc29tZXRoaW5nIGxpa2U6CisKK2BgYGMrKworc3dpdGNoKGV4cHJlc3Npb24p
IHsKKyAgY2FzZSAxOgorICAgICAuLi4gc29tZSBjaGVja3MgLi4uCisgIGNhc2UgMjoKKyAgICAg
Li4uIHNvbWUgb3RoZXIgY2hlY2tzIC4uLgorICBkZWZhdWx0OgorICAgICBGQUlMKCkgPDwgIldl
IHNob3VsZG4ndCBnZXQgaGVyZS4iOworfQorYGBgCisKK05PVEU6IHlvdSBjYW4gb25seSB1c2Ug
YEZBSUwoKWAgaW4gZnVuY3Rpb25zIHRoYXQgcmV0dXJuIGB2b2lkYC4gU2VlIHRoZQorW0Fzc2Vy
dGlvbiBQbGFjZW1lbnQgc2VjdGlvbl0oI2Fzc2VydGlvbi1wbGFjZW1lbnQpIGZvciBtb3JlIGlu
Zm9ybWF0aW9uLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisj
IyMgRXhjZXB0aW9uIEFzc2VydGlvbnMKKworVGhlc2UgYXJlIGZvciB2ZXJpZnlpbmcgdGhhdCBh
IHBpZWNlIG9mIGNvZGUgdGhyb3dzIChvciBkb2VzIG5vdCB0aHJvdykgYW4KK2V4Y2VwdGlvbiBv
ZiB0aGUgZ2l2ZW4gdHlwZToKKworRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVy
aWZpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tCitgQVNTRVJU
X1RIUk9XKHN0YXRlbWVudCwgZXhjZXB0aW9uX3R5cGUpO2AgfCBgRVhQRUNUX1RIUk9XKHN0YXRl
bWVudCwgZXhjZXB0aW9uX3R5cGUpO2AgfCBgc3RhdGVtZW50YCB0aHJvd3MgYW4gZXhjZXB0aW9u
IG9mIHRoZSBnaXZlbiB0eXBlCitgQVNTRVJUX0FOWV9USFJPVyhzdGF0ZW1lbnQpO2AgICAgICAg
ICAgICAgfCBgRVhQRUNUX0FOWV9USFJPVyhzdGF0ZW1lbnQpO2AgICAgICAgICAgICAgfCBgc3Rh
dGVtZW50YCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIGFueSB0eXBlCitgQVNTRVJUX05PX1RIUk9X
KHN0YXRlbWVudCk7YCAgICAgICAgICAgICAgfCBgRVhQRUNUX05PX1RIUk9XKHN0YXRlbWVudCk7
YCAgICAgICAgICAgICAgfCBgc3RhdGVtZW50YCBkb2Vzbid0IHRocm93IGFueSBleGNlcHRpb24K
KworRXhhbXBsZXM6CisKK2BgYGMrKworQVNTRVJUX1RIUk9XKEZvbyg1KSwgYmFyX2V4Y2VwdGlv
bik7CisKK0VYUEVDVF9OT19USFJPVyh7CisgIGludCBuID0gNTsKKyAgQmFyKCZuKTsKK30pOwor
YGBgCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWM7IHJlcXVpcmVzIGV4
Y2VwdGlvbnMgdG8gYmUgZW5hYmxlZCBpbiB0aGUKK2J1aWxkIGVudmlyb25tZW50IChub3RlIHRo
YXQgYGdvb2dsZTNgICoqZGlzYWJsZXMqKiBleGNlcHRpb25zKS4KKworIyMjIFByZWRpY2F0ZSBB
c3NlcnRpb25zIGZvciBCZXR0ZXIgRXJyb3IgTWVzc2FnZXMKKworRXZlbiB0aG91Z2ggZ29vZ2xl
dGVzdCBoYXMgYSByaWNoIHNldCBvZiBhc3NlcnRpb25zLCB0aGV5IGNhbiBuZXZlciBiZSBjb21w
bGV0ZSwKK2FzIGl0J3MgaW1wb3NzaWJsZSAobm9yIGEgZ29vZCBpZGVhKSB0byBhbnRpY2lwYXRl
IGFsbCBzY2VuYXJpb3MgYSB1c2VyIG1pZ2h0CitydW4gaW50by4gVGhlcmVmb3JlLCBzb21ldGlt
ZXMgYSB1c2VyIGhhcyB0byB1c2UgYEVYUEVDVF9UUlVFKClgIHRvIGNoZWNrIGEKK2NvbXBsZXgg
ZXhwcmVzc2lvbiwgZm9yIGxhY2sgb2YgYSBiZXR0ZXIgbWFjcm8uIFRoaXMgaGFzIHRoZSBwcm9i
bGVtIG9mIG5vdAorc2hvd2luZyB5b3UgdGhlIHZhbHVlcyBvZiB0aGUgcGFydHMgb2YgdGhlIGV4
cHJlc3Npb24sIG1ha2luZyBpdCBoYXJkIHRvCit1bmRlcnN0YW5kIHdoYXQgd2VudCB3cm9uZy4g
QXMgYSB3b3JrYXJvdW5kLCBzb21lIHVzZXJzIGNob29zZSB0byBjb25zdHJ1Y3QgdGhlCitmYWls
dXJlIG1lc3NhZ2UgYnkgdGhlbXNlbHZlcywgc3RyZWFtaW5nIGl0IGludG8gYEVYUEVDVF9UUlVF
KClgLiBIb3dldmVyLCB0aGlzCitpcyBhd2t3YXJkIGVzcGVjaWFsbHkgd2hlbiB0aGUgZXhwcmVz
c2lvbiBoYXMgc2lkZS1lZmZlY3RzIG9yIGlzIGV4cGVuc2l2ZSB0bworZXZhbHVhdGUuCisKK2dv
b2dsZXRlc3QgZ2l2ZXMgeW91IHRocmVlIGRpZmZlcmVudCBvcHRpb25zIHRvIHNvbHZlIHRoaXMg
cHJvYmxlbToKKworIyMjIyBVc2luZyBhbiBFeGlzdGluZyBCb29sZWFuIEZ1bmN0aW9uCisKK0lm
IHlvdSBhbHJlYWR5IGhhdmUgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHRoYXQgcmV0dXJucyBgYm9v
bGAgKG9yIGEgdHlwZSB0aGF0CitjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYGJvb2xg
KSwgeW91IGNhbiB1c2UgaXQgaW4gYSAqcHJlZGljYXRlCithc3NlcnRpb24qIHRvIGdldCB0aGUg
ZnVuY3Rpb24gYXJndW1lbnRzIHByaW50ZWQgZm9yIGZyZWU6CisKK3wgRmF0YWwgYXNzZXJ0aW9u
ICAgICAgICAgICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAg
fCBWZXJpZmllcyAgICAgICAgICAgICAgICAgICAgfAorfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8Cit8IGBBU1NFUlRfUFJFRDEocHJlZDEsIHZhbDEpO2Ag
ICAgICAgfCBgRVhQRUNUX1BSRUQxKHByZWQxLCB2YWwxKTtgICAgICAgIHwgYHByZWQxKHZhbDEp
YCBpcyB0cnVlICAgICAgIHwKK3wgYEFTU0VSVF9QUkVEMihwcmVkMiwgdmFsMSwgdmFsMik7YCB8
IGBFWFBFQ1RfUFJFRDIocHJlZDIsIHZhbDEsIHZhbDIpO2AgfCBgcHJlZDIodmFsMSwgdmFsMilg
IGlzIHRydWUgfAorfCBgLi4uYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYC4uLmAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisKK0luIHRoZSBhYm92ZSwgYHByZWRuYCBpcyBhbiBgbmAtYXJ5IHByZWRpY2F0ZSBmdW5j
dGlvbiBvciBmdW5jdG9yLCB3aGVyZSBgdmFsMWAsCitgdmFsMmAsIC4uLiwgYW5kIGB2YWxuYCBh
cmUgaXRzIGFyZ3VtZW50cy4gVGhlIGFzc2VydGlvbiBzdWNjZWVkcyBpZiB0aGUKK3ByZWRpY2F0
ZSByZXR1cm5zIGB0cnVlYCB3aGVuIGFwcGxpZWQgdG8gdGhlIGdpdmVuIGFyZ3VtZW50cywgYW5k
IGZhaWxzCitvdGhlcndpc2UuIFdoZW4gdGhlIGFzc2VydGlvbiBmYWlscywgaXQgcHJpbnRzIHRo
ZSB2YWx1ZSBvZiBlYWNoIGFyZ3VtZW50LiBJbgorZWl0aGVyIGNhc2UsIHRoZSBhcmd1bWVudHMg
YXJlIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuCisKK0hlcmUncyBhbiBleGFtcGxlLiBHaXZlbgor
CitgYGBjKysKKy8vIFJldHVybnMgdHJ1ZSBpZiBtIGFuZCBuIGhhdmUgbm8gY29tbW9uIGRpdmlz
b3JzIGV4Y2VwdCAxLgorYm9vbCBNdXR1YWxseVByaW1lKGludCBtLCBpbnQgbikgeyAuLi4gfQor
Citjb25zdCBpbnQgYSA9IDM7Citjb25zdCBpbnQgYiA9IDQ7Citjb25zdCBpbnQgYyA9IDEwOwor
YGBgCisKK3RoZSBhc3NlcnRpb24KKworYGBgYysrCisgIEVYUEVDVF9QUkVEMihNdXR1YWxseVBy
aW1lLCBhLCBiKTsKK2BgYAorCit3aWxsIHN1Y2NlZWQsIHdoaWxlIHRoZSBhc3NlcnRpb24KKwor
YGBgYysrCisgIEVYUEVDVF9QUkVEMihNdXR1YWxseVByaW1lLCBiLCBjKTsKK2BgYAorCit3aWxs
IGZhaWwgd2l0aCB0aGUgbWVzc2FnZQorCitgYGBub25lCitNdXR1YWxseVByaW1lKGIsIGMpIGlz
IGZhbHNlLCB3aGVyZQorYiBpcyA0CitjIGlzIDEwCitgYGAKKworPiBOT1RFOgorPgorPiAxLiAg
SWYgeW91IHNlZSBhIGNvbXBpbGVyIGVycm9yICJubyBtYXRjaGluZyBmdW5jdGlvbiB0byBjYWxs
IiB3aGVuIHVzaW5nCis+ICAgICBgQVNTRVJUX1BSRUQqYCBvciBgRVhQRUNUX1BSRUQqYCwgcGxl
YXNlIHNlZQorPiAgICAgW3RoaXNdKGZhcS5tZCNPdmVybG9hZGVkUHJlZGljYXRlKSBmb3IgaG93
IHRvIHJlc29sdmUgaXQuCis+IDEuICBDdXJyZW50bHkgd2Ugb25seSBwcm92aWRlIHByZWRpY2F0
ZSBhc3NlcnRpb25zIG9mIGFyaXR5IDw9IDUuIElmIHlvdSBuZWVkCis+ICAgICBhIGhpZ2hlci1h
cml0eSBhc3NlcnRpb24sIGxldCBbdXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xl
dGVzdC9pc3N1ZXMpIGtub3cuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBN
YWMuCisKKyMjIyMgVXNpbmcgYSBGdW5jdGlvbiBUaGF0IFJldHVybnMgYW4gQXNzZXJ0aW9uUmVz
dWx0CisKK1doaWxlIGBFWFBFQ1RfUFJFRCooKWAgYW5kIGZyaWVuZHMgYXJlIGhhbmR5IGZvciBh
IHF1aWNrIGpvYiwgdGhlIHN5bnRheCBpcyBub3QKK3NhdGlzZmFjdG9yeTogeW91IGhhdmUgdG8g
dXNlIGRpZmZlcmVudCBtYWNyb3MgZm9yIGRpZmZlcmVudCBhcml0aWVzLCBhbmQgaXQKK2ZlZWxz
IG1vcmUgbGlrZSBMaXNwIHRoYW4gQysrLiBUaGUgYDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0
YCBjbGFzcyBzb2x2ZXMKK3RoaXMgcHJvYmxlbS4KKworQW4gYEFzc2VydGlvblJlc3VsdGAgb2Jq
ZWN0IHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBhbiBhc3NlcnRpb24gKHdoZXRoZXIgaXQncwor
YSBzdWNjZXNzIG9yIGEgZmFpbHVyZSwgYW5kIGFuIGFzc29jaWF0ZWQgbWVzc2FnZSkuIFlvdSBj
YW4gY3JlYXRlIGFuCitgQXNzZXJ0aW9uUmVzdWx0YCB1c2luZyBvbmUgb2YgdGhlc2UgZmFjdG9y
eSBmdW5jdGlvbnM6CisKK2BgYGMrKworbmFtZXNwYWNlIHRlc3RpbmcgeworCisvLyBSZXR1cm5z
IGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBhbiBhc3NlcnRpb24g
aGFzCisvLyBzdWNjZWVkZWQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uU3VjY2VzcygpOwor
CisvLyBSZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBh
biBhc3NlcnRpb24gaGFzCisvLyBmYWlsZWQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uRmFp
bHVyZSgpOworCit9CitgYGAKKworWW91IGNhbiB0aGVuIHVzZSB0aGUgYDw8YCBvcGVyYXRvciB0
byBzdHJlYW0gbWVzc2FnZXMgdG8gdGhlIGBBc3NlcnRpb25SZXN1bHRgCitvYmplY3QuCisKK1Rv
IHByb3ZpZGUgbW9yZSByZWFkYWJsZSBtZXNzYWdlcyBpbiBCb29sZWFuIGFzc2VydGlvbnMgKGUu
Zy4gYEVYUEVDVF9UUlVFKClgKSwKK3dyaXRlIGEgcHJlZGljYXRlIGZ1bmN0aW9uIHRoYXQgcmV0
dXJucyBgQXNzZXJ0aW9uUmVzdWx0YCBpbnN0ZWFkIG9mIGBib29sYC4gRm9yCitleGFtcGxlLCBp
ZiB5b3UgZGVmaW5lIGBJc0V2ZW4oKWAgYXM6CisKK2BgYGMrKworOjp0ZXN0aW5nOjpBc3NlcnRp
b25SZXN1bHQgSXNFdmVuKGludCBuKSB7CisgIGlmICgobiAlIDIpID09IDApCisgICAgIHJldHVy
biA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKKyAgZWxzZQorICAgICByZXR1cm4gOjp0
ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgbiA8PCAiIGlzIG9kZCI7Cit9CitgYGAKKwor
aW5zdGVhZCBvZjoKKworYGBgYysrCitib29sIElzRXZlbihpbnQgbikgeworICByZXR1cm4gKG4g
JSAyKSA9PSAwOworfQorYGBgCisKK3RoZSBmYWlsZWQgYXNzZXJ0aW9uIGBFWFBFQ1RfVFJVRShJ
c0V2ZW4oRmliKDQpKSlgIHdpbGwgcHJpbnQ6CisKK2BgYG5vbmUKK1ZhbHVlIG9mOiBJc0V2ZW4o
RmliKDQpKQorICBBY3R1YWw6IGZhbHNlICgzIGlzIG9kZCkKK0V4cGVjdGVkOiB0cnVlCitgYGAK
KworaW5zdGVhZCBvZiBhIG1vcmUgb3BhcXVlCisKK2BgYG5vbmUKK1ZhbHVlIG9mOiBJc0V2ZW4o
RmliKDQpKQorICBBY3R1YWw6IGZhbHNlCitFeHBlY3RlZDogdHJ1ZQorYGBgCisKK0lmIHlvdSB3
YW50IGluZm9ybWF0aXZlIG1lc3NhZ2VzIGluIGBFWFBFQ1RfRkFMU0VgIGFuZCBgQVNTRVJUX0ZB
TFNFYCBhcyB3ZWxsCisob25lIHRoaXJkIG9mIEJvb2xlYW4gYXNzZXJ0aW9ucyBpbiB0aGUgR29v
Z2xlIGNvZGUgYmFzZSBhcmUgbmVnYXRpdmUgb25lcyksIGFuZAorYXJlIGZpbmUgd2l0aCBtYWtp
bmcgdGhlIHByZWRpY2F0ZSBzbG93ZXIgaW4gdGhlIHN1Y2Nlc3MgY2FzZSwgeW91IGNhbiBzdXBw
bHkgYQorc3VjY2VzcyBtZXNzYWdlOgorCitgYGBjKysKKzo6dGVzdGluZzo6QXNzZXJ0aW9uUmVz
dWx0IElzRXZlbihpbnQgbikgeworICBpZiAoKG4gJSAyKSA9PSAwKQorICAgICByZXR1cm4gOjp0
ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCkgPDwgbiA8PCAiIGlzIGV2ZW4iOworICBlbHNlCisg
ICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2Rk
IjsKK30KK2BgYAorCitUaGVuIHRoZSBzdGF0ZW1lbnQgYEVYUEVDVF9GQUxTRShJc0V2ZW4oRmli
KDYpKSlgIHdpbGwgcHJpbnQKKworYGBgbm9uZQorICBWYWx1ZSBvZjogSXNFdmVuKEZpYig2KSkK
KyAgICAgQWN0dWFsOiB0cnVlICg4IGlzIGV2ZW4pCisgIEV4cGVjdGVkOiBmYWxzZQorYGBgCisK
KyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyMgVXNpbmcgYSBQ
cmVkaWNhdGUtRm9ybWF0dGVyCisKK0lmIHlvdSBmaW5kIHRoZSBkZWZhdWx0IG1lc3NhZ2UgZ2Vu
ZXJhdGVkIGJ5IGAoQVNTRVJUfEVYUEVDVClfUFJFRCpgIGFuZAorYChBU1NFUlR8RVhQRUNUKV8o
VFJVRXxGQUxTRSlgIHVuc2F0aXNmYWN0b3J5LCBvciBzb21lIGFyZ3VtZW50cyB0byB5b3VyCitw
cmVkaWNhdGUgZG8gbm90IHN1cHBvcnQgc3RyZWFtaW5nIHRvIGBvc3RyZWFtYCwgeW91IGNhbiBp
bnN0ZWFkIHVzZSB0aGUKK2ZvbGxvd2luZyAqcHJlZGljYXRlLWZvcm1hdHRlciBhc3NlcnRpb25z
KiB0byAqZnVsbHkqIGN1c3RvbWl6ZSBob3cgdGhlIG1lc3NhZ2UKK2lzIGZvcm1hdHRlZDoKKwor
RmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZmF0
YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyaWZpZXMKKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tCitgQVNT
RVJUX1BSRURfRk9STUFUMShwcmVkX2Zvcm1hdDEsIHZhbDEpO2AgICAgICAgfCBgRVhQRUNUX1BS
RURfRk9STUFUMShwcmVkX2Zvcm1hdDEsIHZhbDEpO2AgICAgICAgfCBgcHJlZF9mb3JtYXQxKHZh
bDEpYCBpcyBzdWNjZXNzZnVsCitgQVNTRVJUX1BSRURfRk9STUFUMihwcmVkX2Zvcm1hdDIsIHZh
bDEsIHZhbDIpO2AgfCBgRVhQRUNUX1BSRURfRk9STUFUMihwcmVkX2Zvcm1hdDIsIHZhbDEsIHZh
bDIpO2AgfCBgcHJlZF9mb3JtYXQyKHZhbDEsIHZhbDIpYCBpcyBzdWNjZXNzZnVsCitgLi4uYCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgLi4uYCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAuLi4KKworVGhlIGRpZmZlcmVu
Y2UgYmV0d2VlbiB0aGlzIGFuZCB0aGUgcHJldmlvdXMgZ3JvdXAgb2YgbWFjcm9zIGlzIHRoYXQg
aW5zdGVhZCBvZgorYSBwcmVkaWNhdGUsIGAoQVNTRVJUfEVYUEVDVClfUFJFRF9GT1JNQVQqYCB0
YWtlIGEgKnByZWRpY2F0ZS1mb3JtYXR0ZXIqCisoYHByZWRfZm9ybWF0bmApLCB3aGljaCBpcyBh
IGZ1bmN0aW9uIG9yIGZ1bmN0b3Igd2l0aCB0aGUgc2lnbmF0dXJlOgorCitgYGBjKysKKzo6dGVz
dGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRpY2F0ZUZvcm1hdHRlcm4oY29uc3QgY2hhciogZXhw
cjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGV4cHIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogZXhwcm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFQxIHZhbDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFQyIHZhbDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUbiB2YWxuKTsKK2BgYAorCit3aGVyZSBgdmFsMWAsIGB2YWwyYCwgLi4uLCBhbmQgYHZh
bG5gIGFyZSB0aGUgdmFsdWVzIG9mIHRoZSBwcmVkaWNhdGUgYXJndW1lbnRzLAorYW5kIGBleHBy
MWAsIGBleHByMmAsIC4uLiwgYW5kIGBleHBybmAgYXJlIHRoZSBjb3JyZXNwb25kaW5nIGV4cHJl
c3Npb25zIGFzIHRoZXkKK2FwcGVhciBpbiB0aGUgc291cmNlIGNvZGUuIFRoZSB0eXBlcyBgVDFg
LCBgVDJgLCAuLi4sIGFuZCBgVG5gIGNhbiBiZSBlaXRoZXIKK3ZhbHVlIHR5cGVzIG9yIHJlZmVy
ZW5jZSB0eXBlcy4gRm9yIGV4YW1wbGUsIGlmIGFuIGFyZ3VtZW50IGhhcyB0eXBlIGBGb29gLCB5
b3UKK2NhbiBkZWNsYXJlIGl0IGFzIGVpdGhlciBgRm9vYCBvciBgY29uc3QgRm9vJmAsIHdoaWNo
ZXZlciBpcyBhcHByb3ByaWF0ZS4KKworQXMgYW4gZXhhbXBsZSwgbGV0J3MgaW1wcm92ZSB0aGUg
ZmFpbHVyZSBtZXNzYWdlIGluIGBNdXR1YWxseVByaW1lKClgLCB3aGljaCB3YXMKK3VzZWQgd2l0
aCBgRVhQRUNUX1BSRUQyKClgOgorCitgYGBjKysKKy8vIFJldHVybnMgdGhlIHNtYWxsZXN0IHBy
aW1lIGNvbW1vbiBkaXZpc29yIG9mIG0gYW5kIG4sCisvLyBvciAxIHdoZW4gbSBhbmQgbiBhcmUg
bXV0dWFsbHkgcHJpbWUuCitpbnQgU21hbGxlc3RQcmltZUNvbW1vbkRpdmlzb3IoaW50IG0sIGlu
dCBuKSB7IC4uLiB9CisKKy8vIEEgcHJlZGljYXRlLWZvcm1hdHRlciBmb3IgYXNzZXJ0aW5nIHRo
YXQgdHdvIGludGVnZXJzIGFyZSBtdXR1YWxseSBwcmltZS4KKzo6dGVzdGluZzo6QXNzZXJ0aW9u
UmVzdWx0IEFzc2VydE11dHVhbGx5UHJpbWUoY29uc3QgY2hhciogbV9leHByLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuX2V4cHIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbikgewor
ICBpZiAoTXV0dWFsbHlQcmltZShtLCBuKSkgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3Vj
Y2VzcygpOworCisgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBtX2V4
cHIgPDwgIiBhbmQgIiA8PCBuX2V4cHIKKyAgICAgIDw8ICIgKCIgPDwgbSA8PCAiIGFuZCAiIDw8
IG4gPDwgIikgYXJlIG5vdCBtdXR1YWxseSBwcmltZSwgIgorICAgICAgPDwgImFzIHRoZXkgaGF2
ZSBhIGNvbW1vbiBkaXZpc29yICIgPDwgU21hbGxlc3RQcmltZUNvbW1vbkRpdmlzb3IobSwgbik7
Cit9CitgYGAKKworV2l0aCB0aGlzIHByZWRpY2F0ZS1mb3JtYXR0ZXIsIHdlIGNhbiB1c2UKKwor
YGBgYysrCisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoQXNzZXJ0TXV0dWFsbHlQcmltZSwgYiwgYyk7
CitgYGAKKwordG8gZ2VuZXJhdGUgdGhlIG1lc3NhZ2UKKworYGBgbm9uZQorYiBhbmQgYyAoNCBh
bmQgMTApIGFyZSBub3QgbXV0dWFsbHkgcHJpbWUsIGFzIHRoZXkgaGF2ZSBhIGNvbW1vbiBkaXZp
c29yIDIuCitgYGAKKworQXMgeW91IG1heSBoYXZlIHJlYWxpemVkLCBtYW55IG9mIHRoZSBidWls
dC1pbiBhc3NlcnRpb25zIHdlIGludHJvZHVjZWQgZWFybGllcgorYXJlIHNwZWNpYWwgY2FzZXMg
b2YgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZPUk1BVCpgLiBJbiBmYWN0LCBtb3N0IG9mIHRoZW0g
YXJlCitpbmRlZWQgZGVmaW5lZCB1c2luZyBgKEVYUEVDVHxBU1NFUlQpX1BSRURfRk9STUFUKmAu
CisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBGbG9hdGlu
Zy1Qb2ludCBDb21wYXJpc29uCisKK0NvbXBhcmluZyBmbG9hdGluZy1wb2ludCBudW1iZXJzIGlz
IHRyaWNreS4gRHVlIHRvIHJvdW5kLW9mZiBlcnJvcnMsIGl0IGlzIHZlcnkKK3VubGlrZWx5IHRo
YXQgdHdvIGZsb2F0aW5nLXBvaW50cyB3aWxsIG1hdGNoIGV4YWN0bHkuIFRoZXJlZm9yZSwgYEFT
U0VSVF9FUWAgJ3MKK25haXZlIGNvbXBhcmlzb24gdXN1YWxseSBkb2Vzbid0IHdvcmsuIEFuZCBz
aW5jZSBmbG9hdGluZy1wb2ludHMgY2FuIGhhdmUgYSB3aWRlCit2YWx1ZSByYW5nZSwgbm8gc2lu
Z2xlIGZpeGVkIGVycm9yIGJvdW5kIHdvcmtzLiBJdCdzIGJldHRlciB0byBjb21wYXJlIGJ5IGEK
K2ZpeGVkIHJlbGF0aXZlIGVycm9yIGJvdW5kLCBleGNlcHQgZm9yIHZhbHVlcyBjbG9zZSB0byAw
IGR1ZSB0byB0aGUgbG9zcyBvZgorcHJlY2lzaW9uIHRoZXJlLgorCitJbiBnZW5lcmFsLCBmb3Ig
ZmxvYXRpbmctcG9pbnQgY29tcGFyaXNvbiB0byBtYWtlIHNlbnNlLCB0aGUgdXNlciBuZWVkcyB0
bworY2FyZWZ1bGx5IGNob29zZSB0aGUgZXJyb3IgYm91bmQuIElmIHRoZXkgZG9uJ3Qgd2FudCBv
ciBjYXJlIHRvLCBjb21wYXJpbmcgaW4KK3Rlcm1zIG9mIFVuaXRzIGluIHRoZSBMYXN0IFBsYWNl
IChVTFBzKSBpcyBhIGdvb2QgZGVmYXVsdCwgYW5kIGdvb2dsZXRlc3QKK3Byb3ZpZGVzIGFzc2Vy
dGlvbnMgdG8gZG8gdGhpcy4gRnVsbCBkZXRhaWxzIGFib3V0IFVMUHMgYXJlIHF1aXRlIGxvbmc7
IGlmIHlvdQord2FudCB0byBsZWFybiBtb3JlLCBzZWUKK1toZXJlXShodHRwczovL3JhbmRvbWFz
Y2lpLndvcmRwcmVzcy5jb20vMjAxMi8wMi8yNS9jb21wYXJpbmctZmxvYXRpbmctcG9pbnQtbnVt
YmVycy0yMDEyLWVkaXRpb24vKS4KKworIyMjIyBGbG9hdGluZy1Qb2ludCBNYWNyb3MKKworfCBG
YXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAg
ICAgICAgIHwgVmVyaWZpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKK3wgYEFT
U0VSVF9GTE9BVF9FUSh2YWwxLCB2YWwyKTtgICB8IGBFWFBFQ1RfRkxPQVRfRVEodmFsMSx2YWwy
KTtgICB8IHRoZSB0d28gYGZsb2F0YCB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbCAgfAorfCBgQVNT
RVJUX0RPVUJMRV9FUSh2YWwxLCB2YWwyKTtgIHwgYEVYUEVDVF9ET1VCTEVfRVEodmFsMSwgdmFs
Mik7YHwgdGhlIHR3byBgZG91YmxlYCB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbCB8CisKK0J5ICJh
bG1vc3QgZXF1YWwiIHdlIG1lYW4gdGhlIHZhbHVlcyBhcmUgd2l0aGluIDQgVUxQJ3MgZnJvbSBl
YWNoIG90aGVyLgorCitOT1RFOiBgQ0hFQ0tfRE9VQkxFX0VRKClgIGluIGBiYXNlL2xvZ2dpbmcu
aGAgdXNlcyBhIGZpeGVkIGFic29sdXRlIGVycm9yIGJvdW5kLAorc28gaXRzIHJlc3VsdCBtYXkg
ZGlmZmVyIGZyb20gdGhhdCBvZiB0aGUgZ29vZ2xldGVzdCBtYWNyb3MuIFRoYXQgbWFjcm8gaXMK
K3Vuc2FmZSBhbmQgaGFzIGJlZW4gZGVwcmVjYXRlZC4gUGxlYXNlIGRvbid0IHVzZSBpdCBhbnkg
bW9yZS4KKworVGhlIGZvbGxvd2luZyBhc3NlcnRpb25zIGFsbG93IHlvdSB0byBjaG9vc2UgdGhl
IGFjY2VwdGFibGUgZXJyb3IgYm91bmQ6CisKK3wgRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAg
ICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgfCBWZXJp
ZmllcyAgICAgICAgICAgICAgICAgIHwKK3wgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIHwKK3wgYEFTU0VSVF9ORUFSKHZhbDEsIHZhbDIsIGFic19lcnJv
cik7YCB8IGBFWFBFQ1RfTkVBUih2YWwxLCB2YWwyLCBhYnNfZXJyb3IpO2AgfCB0aGUgZGlmZmVy
ZW5jZSBiZXR3ZWVuIGB2YWwxYCBhbmQgYHZhbDJgIGRvZXNuJ3QgZXhjZWVkIHRoZSBnaXZlbiBh
YnNvbHV0ZSBlcnJvciB8CisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKKyMjIyMgRmxvYXRpbmctUG9pbnQgUHJlZGljYXRlLUZvcm1hdCBGdW5jdGlvbnMKKworU29t
ZSBmbG9hdGluZy1wb2ludCBvcGVyYXRpb25zIGFyZSB1c2VmdWwsIGJ1dCBub3QgdGhhdCBvZnRl
biB1c2VkLiBJbiBvcmRlciB0bworYXZvaWQgYW4gZXhwbG9zaW9uIG9mIG5ldyBtYWNyb3MsIHdl
IHByb3ZpZGUgdGhlbSBhcyBwcmVkaWNhdGUtZm9ybWF0IGZ1bmN0aW9ucwordGhhdCBjYW4gYmUg
dXNlZCBpbiBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3JvcyAoZS5nLiBgRVhQRUNUX1BSRURfRk9S
TUFUMmAsCitldGMpLgorCitgYGBjKysKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpG
bG9hdExFLCB2YWwxLCB2YWwyKTsKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpEb3Vi
bGVMRSwgdmFsMSwgdmFsMik7CitgYGAKKworVmVyaWZpZXMgdGhhdCBgdmFsMWAgaXMgbGVzcyB0
aGFuLCBvciBhbG1vc3QgZXF1YWwgdG8sIGB2YWwyYC4gWW91IGNhbiByZXBsYWNlCitgRVhQRUNU
X1BSRURfRk9STUFUMmAgaW4gdGhlIGFib3ZlIHRhYmxlIHdpdGggYEFTU0VSVF9QUkVEX0ZPUk1B
VDJgLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgQXNz
ZXJ0aW5nIFVzaW5nIGdNb2NrIE1hdGNoZXJzCisKK0dvb2dsZS1kZXZlbG9wZWQgQysrIG1vY2tp
bmcgZnJhbWV3b3JrIFtnTW9ja10oLi4vLi4vZ29vZ2xlbW9jaykgY29tZXMgd2l0aCBhCitsaWJy
YXJ5IG9mIG1hdGNoZXJzIGZvciB2YWxpZGF0aW5nIGFyZ3VtZW50cyBwYXNzZWQgdG8gbW9jayBv
YmplY3RzLiBBIGdNb2NrCisqbWF0Y2hlciogaXMgYmFzaWNhbGx5IGEgcHJlZGljYXRlIHRoYXQg
a25vd3MgaG93IHRvIGRlc2NyaWJlIGl0c2VsZi4gSXQgY2FuIGJlCit1c2VkIGluIHRoZXNlIGFz
c2VydGlvbiBtYWNyb3M6CisKK3wgRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgIHwgTm9u
ZmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgIHwgVmVyaWZpZXMgICAgICAgICAgICAgIHwKK3wg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKK3wgYEFTU0VSVF9USEFUKHZhbHVlLCBt
YXRjaGVyKTtgIHwgYEVYUEVDVF9USEFUKHZhbHVlLCBtYXRjaGVyKTtgIHwgdmFsdWUgbWF0Y2hl
cyBtYXRjaGVyIHwKKworRm9yIGV4YW1wbGUsIGBTdGFydHNXaXRoKHByZWZpeClgIGlzIGEgbWF0
Y2hlciB0aGF0IG1hdGNoZXMgYSBzdHJpbmcgc3RhcnRpbmcKK3dpdGggYHByZWZpeGAsIGFuZCB5
b3UgY2FuIHdyaXRlOgorCitgYGBjKysKK3VzaW5nIDo6dGVzdGluZzo6U3RhcnRzV2l0aDsKKy4u
LgorICAgIC8vIFZlcmlmaWVzIHRoYXQgRm9vKCkgcmV0dXJucyBhIHN0cmluZyBzdGFydGluZyB3
aXRoICJIZWxsbyIuCisgICAgRVhQRUNUX1RIQVQoRm9vKCksIFN0YXJ0c1dpdGgoIkhlbGxvIikp
OworYGBgCisKK1JlYWQgdGhpcyBbcmVjaXBlXSguLi8uLi9nb29nbGVtb2NrL2RvY3MvQ29va0Jv
b2subWQjdXNpbmctbWF0Y2hlcnMtaW4tZ29vZ2xlLXRlc3QtYXNzZXJ0aW9ucykgaW4KK3RoZSBn
TW9jayBDb29rYm9vayBmb3IgbW9yZSBkZXRhaWxzLgorCitnTW9jayBoYXMgYSByaWNoIHNldCBv
ZiBtYXRjaGVycy4gWW91IGNhbiBkbyBtYW55IHRoaW5ncyBnb29nbGV0ZXN0IGNhbm5vdCBkbwor
YWxvbmUgd2l0aCB0aGVtLiBGb3IgYSBsaXN0IG9mIG1hdGNoZXJzIGdNb2NrIHByb3ZpZGVzLCBy
ZWFkCitbdGhpc10oLi4vLi4vZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3VzaW5nLW1hdGNo
ZXJzKS4gRXNwZWNpYWxseSB1c2VmdWwgYW1vbmcgdGhlbSBhcmUKK3NvbWUgW3Byb3RvY29sIGJ1
ZmZlciBtYXRjaGVyc10oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9udWNsZXVzL2Jsb2IvbWFz
dGVyL251Y2xldXMvdGVzdGluZy9wcm90b2NvbC1idWZmZXItbWF0Y2hlcnMuaCkuIEl0J3MgZWFz
eSB0byB3cml0ZQoreW91ciBbb3duIG1hdGNoZXJzXSguLi8uLi9nb29nbGVtb2NrL2RvY3MvQ29v
a0Jvb2subWQjd3JpdGluZy1uZXctbWF0Y2hlcnMtcXVpY2tseSkgdG9vLgorCitGb3IgZXhhbXBs
ZSwgeW91IGNhbiB1c2UgZ01vY2sncworW0VxdWFsc1Byb3RvXShodHRwczovL2dpdGh1Yi5jb20v
Z29vZ2xlL251Y2xldXMvYmxvYi9tYXN0ZXIvbnVjbGV1cy90ZXN0aW5nL3Byb3RvY29sLWJ1ZmZl
ci1tYXRjaGVycy5oKQordG8gY29tcGFyZSBwcm90b3MgaW4geW91ciB0ZXN0czoKKworYGBgYysr
CisjaW5jbHVkZSAidGVzdGluZy9iYXNlL3B1YmxpYy9nbW9jay5oIgordXNpbmcgOjp0ZXN0aW5n
OjpFcXVhbHNQcm90bzsKKy4uLgorICAgIEVYUEVDVF9USEFUKGFjdHVhbF9wcm90bywgRXF1YWxz
UHJvdG8oImZvbzogMTIzIGJhcjogJ3h5eiciKSk7CisgICAgRVhQRUNUX1RIQVQoKmFjdHVhbF9w
cm90b19wdHIsIEVxdWFsc1Byb3RvKGV4cGVjdGVkX3Byb3RvKSk7CitgYGAKKworZ01vY2sgaXMg
YnVuZGxlZCB3aXRoIGdvb2dsZXRlc3QsIHNvIHlvdSBkb24ndCBuZWVkIHRvIGFkZCBhbnkgYnVp
bGQgZGVwZW5kZW5jeQoraW4gb3JkZXIgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhpcy4gSnVzdCBp
bmNsdWRlIGAidGVzdGluZy9iYXNlL3B1YmxpYy9nbW9jay5oImAKK2FuZCB5b3UncmUgcmVhZHkg
dG8gZ28uCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBhbmQgTWFjLgorCisj
IyMgTW9yZSBTdHJpbmcgQXNzZXJ0aW9ucworCisoUGxlYXNlIHJlYWQgdGhlIFtwcmV2aW91c10o
I0Fzc2VydFRoYXQpIHNlY3Rpb24gZmlyc3QgaWYgeW91IGhhdmVuJ3QuKQorCitZb3UgY2FuIHVz
ZSB0aGUgZ01vY2sgW3N0cmluZyBtYXRjaGVyc10oLi4vLi4vZ29vZ2xlbW9jay9kb2NzL0NoZWF0
U2hlZXQubWQjc3RyaW5nLW1hdGNoZXJzKQord2l0aCBgRVhQRUNUX1RIQVQoKWAgb3IgYEFTU0VS
VF9USEFUKClgIHRvIGRvIG1vcmUgc3RyaW5nIGNvbXBhcmlzb24gdHJpY2tzCisoc3ViLXN0cmlu
ZywgcHJlZml4LCBzdWZmaXgsIHJlZ3VsYXIgZXhwcmVzc2lvbiwgYW5kIGV0YykuIEZvciBleGFt
cGxlLAorCitgYGBjKysKK3VzaW5nIDo6dGVzdGluZzo6SGFzU3Vic3RyOwordXNpbmcgOjp0ZXN0
aW5nOjpNYXRjaGVzUmVnZXg7CisuLi4KKyAgQVNTRVJUX1RIQVQoZm9vX3N0cmluZywgSGFzU3Vi
c3RyKCJuZWVkbGUiKSk7CisgIEVYUEVDVF9USEFUKGJhcl9zdHJpbmcsIE1hdGNoZXNSZWdleCgi
XFx3KlxcZCsiKSk7CitgYGAKKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1h
Yy4KKworSWYgdGhlIHN0cmluZyBjb250YWlucyBhIHdlbGwtZm9ybWVkIEhUTUwgb3IgWE1MIGRv
Y3VtZW50LCB5b3UgY2FuIGNoZWNrIHdoZXRoZXIKK2l0cyBET00gdHJlZSBtYXRjaGVzIGFuIFtY
UGF0aAorZXhwcmVzc2lvbl0oaHR0cDovL3d3dy53My5vcmcvVFIveHBhdGgvI2NvbnRlbnRzKToK
KworYGBgYysrCisvLyBDdXJyZW50bHkgc3RpbGwgaW4gLy90ZW1wbGF0ZS9wcm90b3RlbXBsYXRl
L3Rlc3Rpbmc6eHBhdGhfbWF0Y2hlcgorI2luY2x1ZGUgInRlbXBsYXRlL3Byb3RvdGVtcGxhdGUv
dGVzdGluZy94cGF0aF9tYXRjaGVyLmgiCit1c2luZyBwcm90b3RlbXBsYXRlOjp0ZXN0aW5nOjpN
YXRjaGVzWFBhdGg7CitFWFBFQ1RfVEhBVChodG1sX3N0cmluZywgTWF0Y2hlc1hQYXRoKCIvL2Fb
dGV4dCgpPSdjbGljayBoZXJlJ10iKSk7CitgYGAKKworKipBdmFpbGFiaWxpdHkqKjogTGludXgu
CisKKyMjIyBXaW5kb3dzIEhSRVNVTFQgYXNzZXJ0aW9ucworCitUaGVzZSBhc3NlcnRpb25zIHRl
c3QgZm9yIGBIUkVTVUxUYCBzdWNjZXNzIG9yIGZhaWx1cmUuCisKK0ZhdGFsIGFzc2VydGlvbiAg
ICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAg
ICAgICAgfCBWZXJpZmllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
fCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tCitgQVNT
RVJUX0hSRVNVTFRfU1VDQ0VFREVEKGV4cHJlc3Npb24pYCB8IGBFWFBFQ1RfSFJFU1VMVF9TVUND
RUVERUQoZXhwcmVzc2lvbilgIHwgYGV4cHJlc3Npb25gIGlzIGEgc3VjY2VzcyBgSFJFU1VMVGAK
K2BBU1NFUlRfSFJFU1VMVF9GQUlMRUQoZXhwcmVzc2lvbilgICAgIHwgYEVYUEVDVF9IUkVTVUxU
X0ZBSUxFRChleHByZXNzaW9uKWAgICAgfCBgZXhwcmVzc2lvbmAgaXMgYSBmYWlsdXJlIGBIUkVT
VUxUYAorCitUaGUgZ2VuZXJhdGVkIG91dHB1dCBjb250YWlucyB0aGUgaHVtYW4tcmVhZGFibGUg
ZXJyb3IgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGgKK3RoZSBgSFJFU1VMVGAgY29kZSByZXR1cm5l
ZCBieSBgZXhwcmVzc2lvbmAuCisKK1lvdSBtaWdodCB1c2UgdGhlbSBsaWtlIHRoaXM6CisKK2Bg
YGMrKworQ0NvbVB0cjxJU2hlbGxEaXNwYXRjaDI+IHNoZWxsOworQVNTRVJUX0hSRVNVTFRfU1VD
Q0VFREVEKHNoZWxsLkNvQ3JlYXRlSW5zdGFuY2UoTCJTaGVsbC5BcHBsaWNhdGlvbiIpKTsKK0ND
b21WYXJpYW50IGVtcHR5OworQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKHNoZWxsLT5TaGVsbEV4
ZWN1dGUoQ0NvbUJTVFIodXJsKSwgZW1wdHksIGVtcHR5LCBlbXB0eSwgZW1wdHkpKTsKK2BgYAor
CisqKkF2YWlsYWJpbGl0eSoqOiBXaW5kb3dzLgorCisjIyMgVHlwZSBBc3NlcnRpb25zCisKK1lv
dSBjYW4gY2FsbCB0aGUgZnVuY3Rpb24KKworYGBgYysrCis6OnRlc3Rpbmc6OlN0YXRpY0Fzc2Vy
dFR5cGVFcTxUMSwgVDI+KCk7CitgYGAKKwordG8gYXNzZXJ0IHRoYXQgdHlwZXMgYFQxYCBhbmQg
YFQyYCBhcmUgdGhlIHNhbWUuIFRoZSBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgaWYKK3RoZSBhc3Nl
cnRpb24gaXMgc2F0aXNmaWVkLiBJZiB0aGUgdHlwZXMgYXJlIGRpZmZlcmVudCwgdGhlIGZ1bmN0
aW9uIGNhbGwgd2lsbAorZmFpbCB0byBjb21waWxlLCBhbmQgdGhlIGNvbXBpbGVyIGVycm9yIG1l
c3NhZ2Ugd2lsbCBsaWtlbHkgKGRlcGVuZGluZyBvbiB0aGUKK2NvbXBpbGVyKSBzaG93IHlvdSB0
aGUgYWN0dWFsIHZhbHVlcyBvZiBgVDFgIGFuZCBgVDJgLiBUaGlzIGlzIG1haW5seSB1c2VmdWwK
K2luc2lkZSB0ZW1wbGF0ZSBjb2RlLgorCisqKkNhdmVhdCoqOiBXaGVuIHVzZWQgaW5zaWRlIGEg
bWVtYmVyIGZ1bmN0aW9uIG9mIGEgY2xhc3MgdGVtcGxhdGUgb3IgYSBmdW5jdGlvbgordGVtcGxh
dGUsIGBTdGF0aWNBc3NlcnRUeXBlRXE8VDEsIFQyPigpYCBpcyBlZmZlY3RpdmUgb25seSBpZiB0
aGUgZnVuY3Rpb24gaXMKK2luc3RhbnRpYXRlZC4gRm9yIGV4YW1wbGUsIGdpdmVuOgorCitgYGBj
KysKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb28geworIHB1YmxpYzoKKyAgdm9pZCBC
YXIoKSB7IDo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGludCwgVD4oKTsgfQorfTsKK2Bg
YAorCit0aGUgY29kZToKKworYGBgYysrCit2b2lkIFRlc3QxKCkgeyBGb288Ym9vbD4gZm9vOyB9
CitgYGAKKword2lsbCBub3QgZ2VuZXJhdGUgYSBjb21waWxlciBlcnJvciwgYXMgYEZvbzxib29s
Pjo6QmFyKClgIGlzIG5ldmVyIGFjdHVhbGx5CitpbnN0YW50aWF0ZWQuIEluc3RlYWQsIHlvdSBu
ZWVkOgorCitgYGBjKysKK3ZvaWQgVGVzdDIoKSB7IEZvbzxib29sPiBmb287IGZvby5CYXIoKTsg
fQorYGBgCisKK3RvIGNhdXNlIGEgY29tcGlsZXIgZXJyb3IuCisKKyoqQXZhaWxhYmlsaXR5Kio6
IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBBc3NlcnRpb24gUGxhY2VtZW50CisKK1lvdSBj
YW4gdXNlIGFzc2VydGlvbnMgaW4gYW55IEMrKyBmdW5jdGlvbi4gSW4gcGFydGljdWxhciwgaXQg
ZG9lc24ndCBoYXZlIHRvIGJlCithIG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLiBU
aGUgb25lIGNvbnN0cmFpbnQgaXMgdGhhdCBhc3NlcnRpb25zIHRoYXQKK2dlbmVyYXRlIGEgZmF0
YWwgZmFpbHVyZSAoYEZBSUwqYCBhbmQgYEFTU0VSVF8qYCkgY2FuIG9ubHkgYmUgdXNlZCBpbgor
dm9pZC1yZXR1cm5pbmcgZnVuY3Rpb25zLiBUaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2YgR29vZ2xl
J3Mgbm90IHVzaW5nCitleGNlcHRpb25zLiBCeSBwbGFjaW5nIGl0IGluIGEgbm9uLXZvaWQgZnVu
Y3Rpb24geW91J2xsIGdldCBhIGNvbmZ1c2luZyBjb21waWxlCitlcnJvciBsaWtlIGAiZXJyb3I6
IHZvaWQgdmFsdWUgbm90IGlnbm9yZWQgYXMgaXQgb3VnaHQgdG8gYmUiYCBvciBgImNhbm5vdAor
aW5pdGlhbGl6ZSByZXR1cm4gb2JqZWN0IG9mIHR5cGUgJ2Jvb2wnIHdpdGggYW4gcnZhbHVlIG9m
IHR5cGUgJ3ZvaWQnImAgb3IKK2AiZXJyb3I6IG5vIHZpYWJsZSBjb252ZXJzaW9uIGZyb20gJ3Zv
aWQnIHRvICdzdHJpbmcnImAuCisKK0lmIHlvdSBuZWVkIHRvIHVzZSBmYXRhbCBhc3NlcnRpb25z
IGluIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIG5vbi12b2lkLCBvbmUKK29wdGlvbiBpcyB0byBt
YWtlIHRoZSBmdW5jdGlvbiByZXR1cm4gdGhlIHZhbHVlIGluIGFuIG91dCBwYXJhbWV0ZXIgaW5z
dGVhZC4gRm9yCitleGFtcGxlLCB5b3UgY2FuIHJld3JpdGUgYFQyIEZvbyhUMSB4KWAgdG8gYHZv
aWQgRm9vKFQxIHgsIFQyKiByZXN1bHQpYC4gWW91CituZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGAq
cmVzdWx0YCBjb250YWlucyBzb21lIHNlbnNpYmxlIHZhbHVlIGV2ZW4gd2hlbiB0aGUKK2Z1bmN0
aW9uIHJldHVybnMgcHJlbWF0dXJlbHkuIEFzIHRoZSBmdW5jdGlvbiBub3cgcmV0dXJucyBgdm9p
ZGAsIHlvdSBjYW4gdXNlCithbnkgYXNzZXJ0aW9uIGluc2lkZSBvZiBpdC4KKworSWYgY2hhbmdp
bmcgdGhlIGZ1bmN0aW9uJ3MgdHlwZSBpcyBub3QgYW4gb3B0aW9uLCB5b3Ugc2hvdWxkIGp1c3Qg
dXNlIGFzc2VydGlvbnMKK3RoYXQgZ2VuZXJhdGUgbm9uLWZhdGFsIGZhaWx1cmVzLCBzdWNoIGFz
IGBBRERfRkFJTFVSRSpgIGFuZCBgRVhQRUNUXypgLgorCitOT1RFOiBDb25zdHJ1Y3RvcnMgYW5k
IGRlc3RydWN0b3JzIGFyZSBub3QgY29uc2lkZXJlZCB2b2lkLXJldHVybmluZyBmdW5jdGlvbnMs
CithY2NvcmRpbmcgdG8gdGhlIEMrKyBsYW5ndWFnZSBzcGVjaWZpY2F0aW9uLCBhbmQgc28geW91
IG1heSBub3QgdXNlIGZhdGFsCithc3NlcnRpb25zIGluIHRoZW0uIFlvdSdsbCBnZXQgYSBjb21w
aWxhdGlvbiBlcnJvciBpZiB5b3UgdHJ5LiBBIHNpbXBsZQord29ya2Fyb3VuZCBpcyB0byB0cmFu
c2ZlciB0aGUgZW50aXJlIGJvZHkgb2YgdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IgdG8g
YQorcHJpdmF0ZSB2b2lkLXJldHVybmluZyBtZXRob2QuIEhvd2V2ZXIsIHlvdSBzaG91bGQgYmUg
YXdhcmUgdGhhdCBhIGZhdGFsCithc3NlcnRpb24gZmFpbHVyZSBpbiBhIGNvbnN0cnVjdG9yIGRv
ZXMgbm90IHRlcm1pbmF0ZSB0aGUgY3VycmVudCB0ZXN0LCBhcyB5b3VyCitpbnR1aXRpb24gbWln
aHQgc3VnZ2VzdDsgaXQgbWVyZWx5IHJldHVybnMgZnJvbSB0aGUgY29uc3RydWN0b3IgZWFybHks
IHBvc3NpYmx5CitsZWF2aW5nIHlvdXIgb2JqZWN0IGluIGEgcGFydGlhbGx5LWNvbnN0cnVjdGVk
IHN0YXRlLiBMaWtld2lzZSwgYSBmYXRhbAorYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYSBkZXN0cnVj
dG9yIG1heSBsZWF2ZSB5b3VyIG9iamVjdCBpbiBhCitwYXJ0aWFsbHktZGVzdHJ1Y3RlZCBzdGF0
ZS4gVXNlIGFzc2VydGlvbnMgY2FyZWZ1bGx5IGluIHRoZXNlIHNpdHVhdGlvbnMhCisKKyMjIFRl
YWNoaW5nIGdvb2dsZXRlc3QgSG93IHRvIFByaW50IFlvdXIgVmFsdWVzCisKK1doZW4gYSB0ZXN0
IGFzc2VydGlvbiBzdWNoIGFzIGBFWFBFQ1RfRVFgIGZhaWxzLCBnb29nbGV0ZXN0IHByaW50cyB0
aGUgYXJndW1lbnQKK3ZhbHVlcyB0byBoZWxwIHlvdSBkZWJ1Zy4gSXQgZG9lcyB0aGlzIHVzaW5n
IGEgdXNlci1leHRlbnNpYmxlIHZhbHVlIHByaW50ZXIuCisKK1RoaXMgcHJpbnRlciBrbm93cyBo
b3cgdG8gcHJpbnQgYnVpbHQtaW4gQysrIHR5cGVzLCBuYXRpdmUgYXJyYXlzLCBTVEwKK2NvbnRh
aW5lcnMsIGFuZCBhbnkgdHlwZSB0aGF0IHN1cHBvcnRzIHRoZSBgPDxgIG9wZXJhdG9yLiBGb3Ig
b3RoZXIgdHlwZXMsIGl0CitwcmludHMgdGhlIHJhdyBieXRlcyBpbiB0aGUgdmFsdWUgYW5kIGhv
cGVzIHRoYXQgeW91IHRoZSB1c2VyIGNhbiBmaWd1cmUgaXQgb3V0LgorCitBcyBtZW50aW9uZWQg
ZWFybGllciwgdGhlIHByaW50ZXIgaXMgKmV4dGVuc2libGUqLiBUaGF0IG1lYW5zIHlvdSBjYW4g
dGVhY2ggaXQKK3RvIGRvIGEgYmV0dGVyIGpvYiBhdCBwcmludGluZyB5b3VyIHBhcnRpY3VsYXIg
dHlwZSB0aGFuIHRvIGR1bXAgdGhlIGJ5dGVzLiBUbworZG8gdGhhdCwgZGVmaW5lIGA8PGAgZm9y
IHlvdXIgdHlwZToKKworYGBgYysrCisvLyBTdHJlYW1zIGFyZSBhbGxvd2VkIG9ubHkgZm9yIGxv
Z2dpbmcuICBEb24ndCBpbmNsdWRlIHRoaXMgZm9yCisvLyBhbnkgb3RoZXIgcHVycG9zZS4KKyNp
bmNsdWRlIDxvc3RyZWFtPgorCituYW1lc3BhY2UgZm9vIHsKKworY2xhc3MgQmFyIHsgIC8vIFdl
IHdhbnQgZ29vZ2xldGVzdCB0byBiZSBhYmxlIHRvIHByaW50IGluc3RhbmNlcyBvZiB0aGlzLgor
Li4uCisgIC8vIENyZWF0ZSBhIGZyZWUgaW5saW5lIGZyaWVuZCBmdW5jdGlvbi4KKyAgZnJpZW5k
IHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBCYXImIGJh
cikgeworICAgIHJldHVybiBvcyA8PCBiYXIuRGVidWdTdHJpbmcoKTsgIC8vIHdoYXRldmVyIG5l
ZWRlZCB0byBwcmludCBiYXIgdG8gb3MKKyAgfQorfTsKKworLy8gSWYgeW91IGNhbid0IGRlY2xh
cmUgdGhlIGZ1bmN0aW9uIGluIHRoZSBjbGFzcyBpdCdzIGltcG9ydGFudCB0aGF0IHRoZQorLy8g
PDwgb3BlcmF0b3IgaXMgZGVmaW5lZCBpbiB0aGUgU0FNRSBuYW1lc3BhY2UgdGhhdCBkZWZpbmVz
IEJhci4gIEMrKydzIGxvb2stdXAKKy8vIHJ1bGVzIHJlbHkgb24gdGhhdC4KK3N0ZDo6b3N0cmVh
bSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBCYXImIGJhcikgeworICByZXR1
cm4gb3MgPDwgYmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3aGF0ZXZlciBuZWVkZWQgdG8gcHJpbnQg
YmFyIHRvIG9zCit9CisKK30gIC8vIG5hbWVzcGFjZSBmb28KK2BgYAorCitTb21ldGltZXMsIHRo
aXMgbWlnaHQgbm90IGJlIGFuIG9wdGlvbjogeW91ciB0ZWFtIG1heSBjb25zaWRlciBpdCBiYWQg
c3R5bGUgdG8KK2hhdmUgYSBgPDxgIG9wZXJhdG9yIGZvciBgQmFyYCwgb3IgYEJhcmAgbWF5IGFs
cmVhZHkgaGF2ZSBhIGA8PGAgb3BlcmF0b3IgdGhhdAorZG9lc24ndCBkbyB3aGF0IHlvdSB3YW50
IChhbmQgeW91IGNhbm5vdCBjaGFuZ2UgaXQpLiBJZiBzbywgeW91IGNhbiBpbnN0ZWFkCitkZWZp
bmUgYSBgUHJpbnRUbygpYCBmdW5jdGlvbiBsaWtlIHRoaXM6CisKK2BgYGMrKworLy8gU3RyZWFt
cyBhcmUgYWxsb3dlZCBvbmx5IGZvciBsb2dnaW5nLiAgRG9uJ3QgaW5jbHVkZSB0aGlzIGZvcgor
Ly8gYW55IG90aGVyIHB1cnBvc2UuCisjaW5jbHVkZSA8b3N0cmVhbT4KKworbmFtZXNwYWNlIGZv
byB7CisKK2NsYXNzIEJhciB7CisgIC4uLgorICBmcmllbmQgdm9pZCBQcmludFRvKGNvbnN0IEJh
ciYgYmFyLCBzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgKm9zIDw8IGJhci5EZWJ1Z1N0cmluZygp
OyAgLy8gd2hhdGV2ZXIgbmVlZGVkIHRvIHByaW50IGJhciB0byBvcworICB9Cit9OworCisvLyBJ
ZiB5b3UgY2FuJ3QgZGVjbGFyZSB0aGUgZnVuY3Rpb24gaW4gdGhlIGNsYXNzIGl0J3MgaW1wb3J0
YW50IHRoYXQgUHJpbnRUbygpCisvLyBpcyBkZWZpbmVkIGluIHRoZSBTQU1FIG5hbWVzcGFjZSB0
aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11cCBydWxlcyByZWx5CisvLyBvbiB0aGF0Lgor
dm9pZCBQcmludFRvKGNvbnN0IEJhciYgYmFyLCBzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8
PCBiYXIuRGVidWdTdHJpbmcoKTsgIC8vIHdoYXRldmVyIG5lZWRlZCB0byBwcmludCBiYXIgdG8g
b3MKK30KKworfSAgLy8gbmFtZXNwYWNlIGZvbworYGBgCisKK0lmIHlvdSBoYXZlIGRlZmluZWQg
Ym90aCBgPDxgIGFuZCBgUHJpbnRUbygpYCwgdGhlIGxhdHRlciB3aWxsIGJlIHVzZWQgd2hlbgor
Z29vZ2xldGVzdCBpcyBjb25jZXJuZWQuIFRoaXMgYWxsb3dzIHlvdSB0byBjdXN0b21pemUgaG93
IHRoZSB2YWx1ZSBhcHBlYXJzIGluCitnb29nbGV0ZXN0J3Mgb3V0cHV0IHdpdGhvdXQgYWZmZWN0
aW5nIGNvZGUgdGhhdCByZWxpZXMgb24gdGhlIGJlaGF2aW9yIG9mIGl0cworYDw8YCBvcGVyYXRv
ci4KKworSWYgeW91IHdhbnQgdG8gcHJpbnQgYSB2YWx1ZSBgeGAgdXNpbmcgZ29vZ2xldGVzdCdz
IHZhbHVlIHByaW50ZXIgeW91cnNlbGYsIGp1c3QKK2NhbGwgYDo6dGVzdGluZzo6UHJpbnRUb1N0
cmluZyh4KWAsIHdoaWNoIHJldHVybnMgYW4gYHN0ZDo6c3RyaW5nYDoKKworYGBgYysrCit2ZWN0
b3I8cGFpcjxCYXIsIGludD4gPiBiYXJfaW50cyA9IEdldEJhckludFZlY3RvcigpOworCitFWFBF
Q1RfVFJVRShJc0NvcnJlY3RCYXJJbnRWZWN0b3IoYmFyX2ludHMpKQorICAgIDw8ICJiYXJfaW50
cyA9ICIgPDwgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGJhcl9pbnRzKTsKK2BgYAorCisjIyBE
ZWF0aCBUZXN0cworCitJbiBtYW55IGFwcGxpY2F0aW9ucywgdGhlcmUgYXJlIGFzc2VydGlvbnMg
dGhhdCBjYW4gY2F1c2UgYXBwbGljYXRpb24gZmFpbHVyZSBpZgorYSBjb25kaXRpb24gaXMgbm90
IG1ldC4gVGhlc2Ugc2FuaXR5IGNoZWNrcywgd2hpY2ggZW5zdXJlIHRoYXQgdGhlIHByb2dyYW0g
aXMgaW4KK2Ega25vd24gZ29vZCBzdGF0ZSwgYXJlIHRoZXJlIHRvIGZhaWwgYXQgdGhlIGVhcmxp
ZXN0IHBvc3NpYmxlIHRpbWUgYWZ0ZXIgc29tZQorcHJvZ3JhbSBzdGF0ZSBpcyBjb3JydXB0ZWQu
IElmIHRoZSBhc3NlcnRpb24gY2hlY2tzIHRoZSB3cm9uZyBjb25kaXRpb24sIHRoZW4KK3RoZSBw
cm9ncmFtIG1heSBwcm9jZWVkIGluIGFuIGVycm9uZW91cyBzdGF0ZSwgd2hpY2ggY291bGQgbGVh
ZCB0byBtZW1vcnkKK2NvcnJ1cHRpb24sIHNlY3VyaXR5IGhvbGVzLCBvciB3b3JzZS4gSGVuY2Ug
aXQgaXMgdml0YWxseSBpbXBvcnRhbnQgdG8gdGVzdCB0aGF0CitzdWNoIGFzc2VydGlvbiBzdGF0
ZW1lbnRzIHdvcmsgYXMgZXhwZWN0ZWQuCisKK1NpbmNlIHRoZXNlIHByZWNvbmRpdGlvbiBjaGVj
a3MgY2F1c2UgdGhlIHByb2Nlc3NlcyB0byBkaWUsIHdlIGNhbGwgc3VjaCB0ZXN0cworX2RlYXRo
IHRlc3RzXy4gTW9yZSBnZW5lcmFsbHksIGFueSB0ZXN0IHRoYXQgY2hlY2tzIHRoYXQgYSBwcm9n
cmFtIHRlcm1pbmF0ZXMKKyhleGNlcHQgYnkgdGhyb3dpbmcgYW4gZXhjZXB0aW9uKSBpbiBhbiBl
eHBlY3RlZCBmYXNoaW9uIGlzIGFsc28gYSBkZWF0aCB0ZXN0LgorCisKK05vdGUgdGhhdCBpZiBh
IHBpZWNlIG9mIGNvZGUgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgd2UgZG9uJ3QgY29uc2lkZXIgaXQg
ImRlYXRoIgorZm9yIHRoZSBwdXJwb3NlIG9mIGRlYXRoIHRlc3RzLCBhcyB0aGUgY2FsbGVyIG9m
IHRoZSBjb2RlIGNvdWxkIGNhdGNoIHRoZQorZXhjZXB0aW9uIGFuZCBhdm9pZCB0aGUgY3Jhc2gu
IElmIHlvdSB3YW50IHRvIHZlcmlmeSBleGNlcHRpb25zIHRocm93biBieSB5b3VyCitjb2RlLCBz
ZWUgW0V4Y2VwdGlvbiBBc3NlcnRpb25zXSgjZXhjZXB0aW9uLWFzc2VydGlvbnMpLgorCitJZiB5
b3Ugd2FudCB0byB0ZXN0IGBFWFBFQ1RfKigpL0FTU0VSVF8qKClgIGZhaWx1cmVzIGluIHlvdXIg
dGVzdCBjb2RlLCBzZWUKK0NhdGNoaW5nIEZhaWx1cmVzCisKKyMjIyBIb3cgdG8gV3JpdGUgYSBE
ZWF0aCBUZXN0CisKK2dvb2dsZXRlc3QgaGFzIHRoZSBmb2xsb3dpbmcgbWFjcm9zIHRvIHN1cHBv
cnQgZGVhdGggdGVzdHM6CisKK0ZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgVmVyaWZpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0t
LS0tLS0KK2BBU1NFUlRfREVBVEgoc3RhdGVtZW50LCByZWdleCk7YCAgICAgICAgICAgICAgfCBg
RVhQRUNUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpO2AgICAgICAgICAgICAgIHwgYHN0YXRlbWVu
dGAgY3Jhc2hlcyB3aXRoIHRoZSBnaXZlbiBlcnJvcgorYEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JU
RUQoc3RhdGVtZW50LCByZWdleCk7YCB8IGBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRl
bWVudCwgcmVnZXgpO2AgfCBpZiBkZWF0aCB0ZXN0cyBhcmUgc3VwcG9ydGVkLCB2ZXJpZmllcyB0
aGF0IGBzdGF0ZW1lbnRgIGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3I7IG90aGVyd2lzZSB2
ZXJpZmllcyBub3RoaW5nCitgQVNTRVJUX0VYSVQoc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4
KTtgICAgIHwgYEVYUEVDVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCk7YCAgICB8
IGBzdGF0ZW1lbnRgIGV4aXRzIHdpdGggdGhlIGdpdmVuIGVycm9yLCBhbmQgaXRzIGV4aXQgY29k
ZSBtYXRjaGVzIGBwcmVkaWNhdGVgCisKK3doZXJlIGBzdGF0ZW1lbnRgIGlzIGEgc3RhdGVtZW50
IHRoYXQgaXMgZXhwZWN0ZWQgdG8gY2F1c2UgdGhlIHByb2Nlc3MgdG8gZGllLAorYHByZWRpY2F0
ZWAgaXMgYSBmdW5jdGlvbiBvciBmdW5jdGlvbiBvYmplY3QgdGhhdCBldmFsdWF0ZXMgYW4gaW50
ZWdlciBleGl0CitzdGF0dXMsIGFuZCBgcmVnZXhgIGlzIGEgKFBlcmwpIHJlZ3VsYXIgZXhwcmVz
c2lvbiB0aGF0IHRoZSBzdGRlcnIgb3V0cHV0IG9mCitgc3RhdGVtZW50YCBpcyBleHBlY3RlZCB0
byBtYXRjaC4gTm90ZSB0aGF0IGBzdGF0ZW1lbnRgIGNhbiBiZSAqYW55IHZhbGlkCitzdGF0ZW1l
bnQqIChpbmNsdWRpbmcgKmNvbXBvdW5kIHN0YXRlbWVudCopIGFuZCBkb2Vzbid0IGhhdmUgdG8g
YmUgYW4KK2V4cHJlc3Npb24uCisKKworQXMgdXN1YWwsIHRoZSBgQVNTRVJUYCB2YXJpYW50cyBh
Ym9ydCB0aGUgY3VycmVudCB0ZXN0IGZ1bmN0aW9uLCB3aGlsZSB0aGUKK2BFWFBFQ1RgIHZhcmlh
bnRzIGRvIG5vdC4KKworPiBOT1RFOiBXZSB1c2UgdGhlIHdvcmQgImNyYXNoIiBoZXJlIHRvIG1l
YW4gdGhhdCB0aGUgcHJvY2VzcyB0ZXJtaW5hdGVzIHdpdGggYQorPiAqbm9uLXplcm8qIGV4aXQg
c3RhdHVzIGNvZGUuIFRoZXJlIGFyZSB0d28gcG9zc2liaWxpdGllczogZWl0aGVyIHRoZSBwcm9j
ZXNzCis+IGhhcyBjYWxsZWQgYGV4aXQoKWAgb3IgYF9leGl0KClgIHdpdGggYSBub24temVybyB2
YWx1ZSwgb3IgaXQgbWF5IGJlIGtpbGxlZCBieQorPiBhIHNpZ25hbC4KKz4KKz4gVGhpcyBtZWFu
cyB0aGF0IGlmIGAqc3RhdGVtZW50KmAgdGVybWluYXRlcyB0aGUgcHJvY2VzcyB3aXRoIGEgMCBl
eGl0IGNvZGUsIGl0Cis+IGlzICpub3QqIGNvbnNpZGVyZWQgYSBjcmFzaCBieSBgRVhQRUNUX0RF
QVRIYC4gVXNlIGBFWFBFQ1RfRVhJVGAgaW5zdGVhZCBpZgorPiB0aGlzIGlzIHRoZSBjYXNlLCBv
ciBpZiB5b3Ugd2FudCB0byByZXN0cmljdCB0aGUgZXhpdCBjb2RlIG1vcmUgcHJlY2lzZWx5Lgor
CitBIHByZWRpY2F0ZSBoZXJlIG11c3QgYWNjZXB0IGFuIGBpbnRgIGFuZCByZXR1cm4gYSBgYm9v
bGAuIFRoZSBkZWF0aCB0ZXN0CitzdWNjZWVkcyBvbmx5IGlmIHRoZSBwcmVkaWNhdGUgcmV0dXJu
cyBgdHJ1ZWAuIGdvb2dsZXRlc3QgZGVmaW5lcyBhIGZldworcHJlZGljYXRlcyB0aGF0IGhhbmRs
ZSB0aGUgbW9zdCBjb21tb24gY2FzZXM6CisKK2BgYGMrKworOjp0ZXN0aW5nOjpFeGl0ZWRXaXRo
Q29kZShleGl0X2NvZGUpCitgYGAKKworVGhpcyBleHByZXNzaW9uIGlzIGB0cnVlYCBpZiB0aGUg
cHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHkgd2l0aCB0aGUgZ2l2ZW4gZXhpdAorY29kZS4KKworYGBg
YysrCis6OnRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKHNpZ25hbF9udW1iZXIpICAvLyBOb3QgYXZh
aWxhYmxlIG9uIFdpbmRvd3MuCitgYGAKKworVGhpcyBleHByZXNzaW9uIGlzIGB0cnVlYCBpZiB0
aGUgcHJvZ3JhbSB3YXMga2lsbGVkIGJ5IHRoZSBnaXZlbiBzaWduYWwuCisKK1RoZSBgKl9ERUFU
SGAgbWFjcm9zIGFyZSBjb252ZW5pZW50IHdyYXBwZXJzIGZvciBgKl9FWElUYCB0aGF0IHVzZSBh
IHByZWRpY2F0ZQordGhhdCB2ZXJpZmllcyB0aGUgcHJvY2VzcycgZXhpdCBjb2RlIGlzIG5vbi16
ZXJvLgorCitOb3RlIHRoYXQgYSBkZWF0aCB0ZXN0IG9ubHkgY2FyZXMgYWJvdXQgdGhyZWUgdGhp
bmdzOgorCisxLiAgZG9lcyBgc3RhdGVtZW50YCBhYm9ydCBvciBleGl0IHRoZSBwcm9jZXNzPwor
Mi4gIChpbiB0aGUgY2FzZSBvZiBgQVNTRVJUX0VYSVRgIGFuZCBgRVhQRUNUX0VYSVRgKSBkb2Vz
IHRoZSBleGl0IHN0YXR1cworICAgIHNhdGlzZnkgYHByZWRpY2F0ZWA/IE9yIChpbiB0aGUgY2Fz
ZSBvZiBgQVNTRVJUX0RFQVRIYCBhbmQgYEVYUEVDVF9ERUFUSGApCisgICAgaXMgdGhlIGV4aXQg
c3RhdHVzIG5vbi16ZXJvPyBBbmQKKzMuICBkb2VzIHRoZSBzdGRlcnIgb3V0cHV0IG1hdGNoIGBy
ZWdleGA/CisKK0luIHBhcnRpY3VsYXIsIGlmIGBzdGF0ZW1lbnRgIGdlbmVyYXRlcyBhbiBgQVNT
RVJUXypgIG9yIGBFWFBFQ1RfKmAgZmFpbHVyZSwgaXQKK3dpbGwgKipub3QqKiBjYXVzZSB0aGUg
ZGVhdGggdGVzdCB0byBmYWlsLCBhcyBnb29nbGV0ZXN0IGFzc2VydGlvbnMgZG9uJ3QgYWJvcnQK
K3RoZSBwcm9jZXNzLgorCitUbyB3cml0ZSBhIGRlYXRoIHRlc3QsIHNpbXBseSB1c2Ugb25lIG9m
IHRoZSBhYm92ZSBtYWNyb3MgaW5zaWRlIHlvdXIgdGVzdAorZnVuY3Rpb24uIEZvciBleGFtcGxl
LAorCitgYGBjKysKK1RFU1QoTXlEZWF0aFRlc3QsIEZvbykgeworICAvLyBUaGlzIGRlYXRoIHRl
c3QgdXNlcyBhIGNvbXBvdW5kIHN0YXRlbWVudC4KKyAgQVNTRVJUX0RFQVRIKHsKKyAgICBpbnQg
biA9IDU7CisgICAgRm9vKCZuKTsKKyAgfSwgIkVycm9yIG9uIGxpbmUgLiogb2YgRm9vKCkiKTsK
K30KKworVEVTVChNeURlYXRoVGVzdCwgTm9ybWFsRXhpdCkgeworICBFWFBFQ1RfRVhJVChOb3Jt
YWxFeGl0KCksIDo6dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCksICJTdWNjZXNzIik7Cit9CisK
K1RFU1QoTXlEZWF0aFRlc3QsIEtpbGxNeXNlbGYpIHsKKyAgRVhQRUNUX0VYSVQoS2lsbE15c2Vs
ZigpLCA6OnRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKFNJR0tJTEwpLAorICAgICAgICAgICAgICAi
U2VuZGluZyBteXNlbGYgdW5ibG9ja2FibGUgc2lnbmFsIik7Cit9CitgYGAKKwordmVyaWZpZXMg
dGhhdDoKKworKiAgIGNhbGxpbmcgYEZvbyg1KWAgY2F1c2VzIHRoZSBwcm9jZXNzIHRvIGRpZSB3
aXRoIHRoZSBnaXZlbiBlcnJvciBtZXNzYWdlLAorKiAgIGNhbGxpbmcgYE5vcm1hbEV4aXQoKWAg
Y2F1c2VzIHRoZSBwcm9jZXNzIHRvIHByaW50IGAiU3VjY2VzcyJgIHRvIHN0ZGVyciBhbmQKKyAg
ICBleGl0IHdpdGggZXhpdCBjb2RlIDAsIGFuZAorKiAgIGNhbGxpbmcgYEtpbGxNeXNlbGYoKWAg
a2lsbHMgdGhlIHByb2Nlc3Mgd2l0aCBzaWduYWwgYFNJR0tJTExgLgorCitUaGUgdGVzdCBmdW5j
dGlvbiBib2R5IG1heSBjb250YWluIG90aGVyIGFzc2VydGlvbnMgYW5kIHN0YXRlbWVudHMgYXMg
d2VsbCwgaWYKK25lY2Vzc2FyeS4KKworIyMjIERlYXRoIFRlc3QgTmFtaW5nCisKK0lNUE9SVEFO
VDogV2Ugc3Ryb25nbHkgcmVjb21tZW5kIHlvdSB0byBmb2xsb3cgdGhlIGNvbnZlbnRpb24gb2Yg
bmFtaW5nIHlvdXIKKyoqdGVzdCBjYXNlKiogKG5vdCB0ZXN0KSBgKkRlYXRoVGVzdGAgd2hlbiBp
dCBjb250YWlucyBhIGRlYXRoIHRlc3QsIGFzCitkZW1vbnN0cmF0ZWQgaW4gdGhlIGFib3ZlIGV4
YW1wbGUuIFRoZSBbRGVhdGggVGVzdHMgQW5kCitUaHJlYWRzXSgjZGVhdGgtdGVzdHMtYW5kLXRo
cmVhZHMpIHNlY3Rpb24gYmVsb3cgZXhwbGFpbnMgd2h5LgorCitJZiBhIHRlc3QgZml4dHVyZSBj
bGFzcyBpcyBzaGFyZWQgYnkgbm9ybWFsIHRlc3RzIGFuZCBkZWF0aCB0ZXN0cywgeW91IGNhbiB1
c2UKK2B1c2luZ2Agb3IgYHR5cGVkZWZgIHRvIGludHJvZHVjZSBhbiBhbGlhcyBmb3IgdGhlIGZp
eHR1cmUgY2xhc3MgYW5kIGF2b2lkCitkdXBsaWNhdGluZyBpdHMgY29kZToKKworYGBgYysrCitj
bGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OworCit1c2luZyBG
b29EZWF0aFRlc3QgPSBGb29UZXN0OworCitURVNUX0YoRm9vVGVzdCwgRG9lc1RoaXMpIHsKKyAg
Ly8gbm9ybWFsIHRlc3QKK30KKworVEVTVF9GKEZvb0RlYXRoVGVzdCwgRG9lc1RoYXQpIHsKKyAg
Ly8gZGVhdGggdGVzdAorfQorYGBgCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dz
IChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIEN5Z3dpbiwgYW5kIE1hYworCisjIyMgUmVn
dWxhciBFeHByZXNzaW9uIFN5bnRheAorCisKK09uIFBPU0lYIHN5c3RlbXMgKGUuZy4gTGludXgs
IEN5Z3dpbiwgYW5kIE1hYyksIGdvb2dsZXRlc3QgdXNlcyB0aGUKK1tQT1NJWCBleHRlbmRlZCBy
ZWd1bGFyIGV4cHJlc3Npb25dKGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAw
OTY5NTM5OS9iYXNlZGVmcy94YmRfY2hhcDA5Lmh0bWwjdGFnXzA5XzA0KQorc3ludGF4LiBUbyBs
ZWFybiBhYm91dCB0aGlzIHN5bnRheCwgeW91IG1heSB3YW50IHRvIHJlYWQgdGhpcworW1dpa2lw
ZWRpYSBlbnRyeV0oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWd1bGFyX2V4cHJlc3Np
b24jUE9TSVhfRXh0ZW5kZWRfUmVndWxhcl9FeHByZXNzaW9ucykuCisKK09uIFdpbmRvd3MsIGdv
b2dsZXRlc3QgdXNlcyBpdHMgb3duIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24gaW1wbGVtZW50
YXRpb24uIEl0CitsYWNrcyBtYW55IGZlYXR1cmVzLiBGb3IgZXhhbXBsZSwgd2UgZG9uJ3Qgc3Vw
cG9ydCB1bmlvbiAoYCJ4fHkiYCksIGdyb3VwaW5nCisoYCIoeHkpImApLCBicmFja2V0cyAoYCJb
eHldImApLCBhbmQgcmVwZXRpdGlvbiBjb3VudCAoYCJ4ezUsN30iYCksIGFtb25nCitvdGhlcnMu
IEJlbG93IGlzIHdoYXQgd2UgZG8gc3VwcG9ydCAoYEFgIGRlbm90ZXMgYSBsaXRlcmFsIGNoYXJh
Y3RlciwgcGVyaW9kCisoYC5gKSwgb3IgYSBzaW5nbGUgYFxcIGAgZXNjYXBlIHNlcXVlbmNlOyBg
eGAgYW5kIGB5YCBkZW5vdGUgcmVndWxhcgorZXhwcmVzc2lvbnMuKToKKworRXhwcmVzc2lvbiB8
IE1lYW5pbmcKKy0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorYGNgICAgICAgICB8IG1hdGNoZXMgYW55IGxp
dGVyYWwgY2hhcmFjdGVyIGBjYAorYFxcZGAgICAgICB8IG1hdGNoZXMgYW55IGRlY2ltYWwgZGln
aXQKK2BcXERgICAgICAgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBhIGRlY2lt
YWwgZGlnaXQKK2BcXGZgICAgICAgfCBtYXRjaGVzIGBcZmAKK2BcXG5gICAgICAgfCBtYXRjaGVz
IGBcbmAKK2BcXHJgICAgICAgfCBtYXRjaGVzIGBccmAKK2BcXHNgICAgICAgfCBtYXRjaGVzIGFu
eSBBU0NJSSB3aGl0ZXNwYWNlLCBpbmNsdWRpbmcgYFxuYAorYFxcU2AgICAgICB8IG1hdGNoZXMg
YW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgd2hpdGVzcGFjZQorYFxcdGAgICAgICB8IG1hdGNo
ZXMgYFx0YAorYFxcdmAgICAgICB8IG1hdGNoZXMgYFx2YAorYFxcd2AgICAgICB8IG1hdGNoZXMg
YW55IGxldHRlciwgYF9gLCBvciBkZWNpbWFsIGRpZ2l0CitgXFxXYCAgICAgIHwgbWF0Y2hlcyBh
bnkgY2hhcmFjdGVyIHRoYXQgYFxcd2AgZG9lc24ndCBtYXRjaAorYFxcY2AgICAgICB8IG1hdGNo
ZXMgYW55IGxpdGVyYWwgY2hhcmFjdGVyIGBjYCwgd2hpY2ggbXVzdCBiZSBhIHB1bmN0dWF0aW9u
CitgLmAgICAgICAgIHwgbWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciBleGNlcHQgYFxuYAor
YEE/YCAgICAgICB8IG1hdGNoZXMgMCBvciAxIG9jY3VycmVuY2VzIG9mIGBBYAorYEEqYCAgICAg
ICB8IG1hdGNoZXMgMCBvciBtYW55IG9jY3VycmVuY2VzIG9mIGBBYAorYEErYCAgICAgICB8IG1h
dGNoZXMgMSBvciBtYW55IG9jY3VycmVuY2VzIG9mIGBBYAorYF5gICAgICAgICB8IG1hdGNoZXMg
dGhlIGJlZ2lubmluZyBvZiBhIHN0cmluZyAobm90IHRoYXQgb2YgZWFjaCBsaW5lKQorYCRgICAg
ICAgICB8IG1hdGNoZXMgdGhlIGVuZCBvZiBhIHN0cmluZyAobm90IHRoYXQgb2YgZWFjaCBsaW5l
KQorYHh5YCAgICAgICB8IG1hdGNoZXMgYHhgIGZvbGxvd2VkIGJ5IGB5YAorCitUbyBoZWxwIHlv
dSBkZXRlcm1pbmUgd2hpY2ggY2FwYWJpbGl0eSBpcyBhdmFpbGFibGUgb24geW91ciBzeXN0ZW0s
IGdvb2dsZXRlc3QKK2RlZmluZXMgbWFjcm9zIHRvIGdvdmVybiB3aGljaCByZWd1bGFyIGV4cHJl
c3Npb24gaXQgaXMgdXNpbmcuIFRoZSBtYWNyb3MgYXJlOgorPCEtLWFic2w6Z29vZ2xlMy1iZWdp
bihnb29nbGUzLW9ubHkpLS0+YEdURVNUX1VTRVNfUENSRT0xYCwgb3IKKzwhLS1hYnNsOmdvb2ds
ZTMtZW5kLS0+IGBHVEVTVF9VU0VTX1NJTVBMRV9SRT0xYCBvciBgR1RFU1RfVVNFU19QT1NJWF9S
RT0xYC4gSWYKK3lvdSB3YW50IHlvdXIgZGVhdGggdGVzdHMgdG8gd29yayBpbiBhbGwgY2FzZXMs
IHlvdSBjYW4gZWl0aGVyIGAjaWZgIG9uIHRoZXNlCittYWNyb3Mgb3IgdXNlIHRoZSBtb3JlIGxp
bWl0ZWQgc3ludGF4IG9ubHkuCisKKyMjIyBIb3cgSXQgV29ya3MKKworVW5kZXIgdGhlIGhvb2Qs
IGBBU1NFUlRfRVhJVCgpYCBzcGF3bnMgYSBuZXcgcHJvY2VzcyBhbmQgZXhlY3V0ZXMgdGhlIGRl
YXRoIHRlc3QKK3N0YXRlbWVudCBpbiB0aGF0IHByb2Nlc3MuIFRoZSBkZXRhaWxzIG9mIGhvdyBw
cmVjaXNlbHkgdGhhdCBoYXBwZW5zIGRlcGVuZCBvbgordGhlIHBsYXRmb3JtIGFuZCB0aGUgdmFy
aWFibGUgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpICh3aGljaCBpcwor
aW5pdGlhbGl6ZWQgZnJvbSB0aGUgY29tbWFuZC1saW5lIGZsYWcgYC0tZ3Rlc3RfZGVhdGhfdGVz
dF9zdHlsZWApLgorCisqICAgT24gUE9TSVggc3lzdGVtcywgYGZvcmsoKWAgKG9yIGBjbG9uZSgp
YCBvbiBMaW51eCkgaXMgdXNlZCB0byBzcGF3biB0aGUKKyAgICBjaGlsZCwgYWZ0ZXIgd2hpY2g6
CisgICAgKiAgIElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlzIGAiZmFzdCJgLCB0aGUgZGVhdGgg
dGVzdCBzdGF0ZW1lbnQgaXMKKyAgICAgICAgaW1tZWRpYXRlbHkgZXhlY3V0ZWQuCisgICAgKiAg
IElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlzIGAidGhyZWFkc2FmZSJgLCB0aGUgY2hpbGQgcHJv
Y2VzcyByZS1leGVjdXRlcworICAgICAgICB0aGUgdW5pdCB0ZXN0IGJpbmFyeSBqdXN0IGFzIGl0
IHdhcyBvcmlnaW5hbGx5IGludm9rZWQsIGJ1dCB3aXRoIHNvbWUKKyAgICAgICAgZXh0cmEgZmxh
Z3MgdG8gY2F1c2UganVzdCB0aGUgc2luZ2xlIGRlYXRoIHRlc3QgdW5kZXIgY29uc2lkZXJhdGlv
biB0bworICAgICAgICBiZSBydW4uCisqICAgT24gV2luZG93cywgdGhlIGNoaWxkIGlzIHNwYXdu
ZWQgdXNpbmcgdGhlIGBDcmVhdGVQcm9jZXNzKClgIEFQSSwgYW5kCisgICAgcmUtZXhlY3V0ZXMg
dGhlIGJpbmFyeSB0byBjYXVzZSBqdXN0IHRoZSBzaW5nbGUgZGVhdGggdGVzdCB1bmRlcgorICAg
IGNvbnNpZGVyYXRpb24gdG8gYmUgcnVuIC0gbXVjaCBsaWtlIHRoZSBgdGhyZWFkc2FmZWAgbW9k
ZSBvbiBQT1NJWC4KKworT3RoZXIgdmFsdWVzIGZvciB0aGUgdmFyaWFibGUgYXJlIGlsbGVnYWwg
YW5kIHdpbGwgY2F1c2UgdGhlIGRlYXRoIHRlc3QgdG8gZmFpbC4KK0N1cnJlbnRseSwgdGhlIGZs
YWcncyBkZWZhdWx0IHZhbHVlIGlzCisiZmFzdCIuIEhvd2V2ZXIsIHdlIHJlc2VydmUKK3RoZSBy
aWdodCB0byBjaGFuZ2UgaXQgaW4gdGhlIGZ1dHVyZS4gVGhlcmVmb3JlLCB5b3VyIHRlc3RzIHNo
b3VsZCBub3QgZGVwZW5kIG9uCit0aGlzLiBJbiBlaXRoZXIgY2FzZSwgdGhlIHBhcmVudCBwcm9j
ZXNzIHdhaXRzIGZvciB0aGUgY2hpbGQgcHJvY2VzcyB0bworY29tcGxldGUsIGFuZCBjaGVja3Mg
dGhhdAorCisxLiAgdGhlIGNoaWxkJ3MgZXhpdCBzdGF0dXMgc2F0aXNmaWVzIHRoZSBwcmVkaWNh
dGUsIGFuZAorMi4gIHRoZSBjaGlsZCdzIHN0ZGVyciBtYXRjaGVzIHRoZSByZWd1bGFyIGV4cHJl
c3Npb24uCisKK0lmIHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudCBydW5zIHRvIGNvbXBsZXRpb24g
d2l0aG91dCBkeWluZywgdGhlIGNoaWxkIHByb2Nlc3MKK3dpbGwgbm9uZXRoZWxlc3MgdGVybWlu
YXRlLCBhbmQgdGhlIGFzc2VydGlvbiBmYWlscy4KKworIyMjIERlYXRoIFRlc3RzIEFuZCBUaHJl
YWRzCisKK1RoZSByZWFzb24gZm9yIHRoZSB0d28gZGVhdGggdGVzdCBzdHlsZXMgaGFzIHRvIGRv
IHdpdGggdGhyZWFkIHNhZmV0eS4gRHVlIHRvCit3ZWxsLWtub3duIHByb2JsZW1zIHdpdGggZm9y
a2luZyBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhyZWFkcywgZGVhdGggdGVzdHMgc2hvdWxkCitiZSBy
dW4gaW4gYSBzaW5nbGUtdGhyZWFkZWQgY29udGV4dC4gU29tZXRpbWVzLCBob3dldmVyLCBpdCBp
c24ndCBmZWFzaWJsZSB0bworYXJyYW5nZSB0aGF0IGtpbmQgb2YgZW52aXJvbm1lbnQuIEZvciBl
eGFtcGxlLCBzdGF0aWNhbGx5LWluaXRpYWxpemVkIG1vZHVsZXMKK21heSBzdGFydCB0aHJlYWRz
IGJlZm9yZSBtYWluIGlzIGV2ZXIgcmVhY2hlZC4gT25jZSB0aHJlYWRzIGhhdmUgYmVlbiBjcmVh
dGVkLAoraXQgbWF5IGJlIGRpZmZpY3VsdCBvciBpbXBvc3NpYmxlIHRvIGNsZWFuIHRoZW0gdXAu
CisKK2dvb2dsZXRlc3QgaGFzIHRocmVlIGZlYXR1cmVzIGludGVuZGVkIHRvIHJhaXNlIGF3YXJl
bmVzcyBvZiB0aHJlYWRpbmcgaXNzdWVzLgorCisxLiAgQSB3YXJuaW5nIGlzIGVtaXR0ZWQgaWYg
bXVsdGlwbGUgdGhyZWFkcyBhcmUgcnVubmluZyB3aGVuIGEgZGVhdGggdGVzdCBpcworICAgIGVu
Y291bnRlcmVkLgorMi4gIFRlc3QgY2FzZXMgd2l0aCBhIG5hbWUgZW5kaW5nIGluICJEZWF0aFRl
c3QiIGFyZSBydW4gYmVmb3JlIGFsbCBvdGhlciB0ZXN0cy4KKzMuICBJdCB1c2VzIGBjbG9uZSgp
YCBpbnN0ZWFkIG9mIGBmb3JrKClgIHRvIHNwYXduIHRoZSBjaGlsZCBwcm9jZXNzIG9uIExpbnV4
CisgICAgKGBjbG9uZSgpYCBpcyBub3QgYXZhaWxhYmxlIG9uIEN5Z3dpbiBhbmQgTWFjKSwgYXMg
YGZvcmsoKWAgaXMgbW9yZSBsaWtlbHkKKyAgICB0byBjYXVzZSB0aGUgY2hpbGQgdG8gaGFuZyB3
aGVuIHRoZSBwYXJlbnQgcHJvY2VzcyBoYXMgbXVsdGlwbGUgdGhyZWFkcy4KKworSXQncyBwZXJm
ZWN0bHkgZmluZSB0byBjcmVhdGUgdGhyZWFkcyBpbnNpZGUgYSBkZWF0aCB0ZXN0IHN0YXRlbWVu
dDsgdGhleSBhcmUKK2V4ZWN1dGVkIGluIGEgc2VwYXJhdGUgcHJvY2VzcyBhbmQgY2Fubm90IGFm
ZmVjdCB0aGUgcGFyZW50LgorCisjIyMgRGVhdGggVGVzdCBTdHlsZXMKKworCitUaGUgInRocmVh
ZHNhZmUiIGRlYXRoIHRlc3Qgc3R5bGUgd2FzIGludHJvZHVjZWQgaW4gb3JkZXIgdG8gaGVscCBt
aXRpZ2F0ZSB0aGUKK3Jpc2tzIG9mIHRlc3RpbmcgaW4gYSBwb3NzaWJseSBtdWx0aXRocmVhZGVk
IGVudmlyb25tZW50LiBJdCB0cmFkZXMgaW5jcmVhc2VkCit0ZXN0IGV4ZWN1dGlvbiB0aW1lIChw
b3RlbnRpYWxseSBkcmFtYXRpY2FsbHkgc28pIGZvciBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5Lgor
CitUaGUgYXV0b21hdGVkIHRlc3RpbmcgZnJhbWV3b3JrIGRvZXMgbm90IHNldCB0aGUgc3R5bGUg
ZmxhZy4gWW91IGNhbiBjaG9vc2UgYQorcGFydGljdWxhciBzdHlsZSBvZiBkZWF0aCB0ZXN0cyBi
eSBzZXR0aW5nIHRoZSBmbGFnIHByb2dyYW1tYXRpY2FsbHk6CisKK2BgYGMrKwordGVzdGluZzo6
RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZT0idGhyZWFkc2FmZSIKK2BgYAorCitZb3UgY2Fu
IGRvIHRoaXMgaW4gYG1haW4oKWAgdG8gc2V0IHRoZSBzdHlsZSBmb3IgYWxsIGRlYXRoIHRlc3Rz
IGluIHRoZSBiaW5hcnksCitvciBpbiBpbmRpdmlkdWFsIHRlc3RzLiBSZWNhbGwgdGhhdCBmbGFn
cyBhcmUgc2F2ZWQgYmVmb3JlIHJ1bm5pbmcgZWFjaCB0ZXN0IGFuZAorcmVzdG9yZWQgYWZ0ZXJ3
YXJkcywgc28geW91IG5lZWQgbm90IGRvIHRoYXQgeW91cnNlbGYuIEZvciBleGFtcGxlOgorCitg
YGBjKysKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICBJbml0R29vZ2xlKGFy
Z3ZbMF0sICZhcmdjLCAmYXJndiwgdHJ1ZSk7CisgIDo6dGVzdGluZzo6RkxBR1NfZ3Rlc3RfZGVh
dGhfdGVzdF9zdHlsZSA9ICJmYXN0IjsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KKwor
VEVTVChNeURlYXRoVGVzdCwgVGVzdE9uZSkgeworICA6OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2Rl
YXRoX3Rlc3Rfc3R5bGUgPSAidGhyZWFkc2FmZSI7CisgIC8vIFRoaXMgdGVzdCBpcyBydW4gaW4g
dGhlICJ0aHJlYWRzYWZlIiBzdHlsZToKKyAgQVNTRVJUX0RFQVRIKFRoaXNTaG91bGREaWUoKSwg
IiIpOworfQorCitURVNUKE15RGVhdGhUZXN0LCBUZXN0VHdvKSB7CisgIC8vIFRoaXMgdGVzdCBp
cyBydW4gaW4gdGhlICJmYXN0IiBzdHlsZToKKyAgQVNTRVJUX0RFQVRIKFRoaXNTaG91bGREaWUo
KSwgIiIpOworfQorYGBgCisKKworIyMjIENhdmVhdHMKKworVGhlIGBzdGF0ZW1lbnRgIGFyZ3Vt
ZW50IG9mIGBBU1NFUlRfRVhJVCgpYCBjYW4gYmUgYW55IHZhbGlkIEMrKyBzdGF0ZW1lbnQuIElm
CitpdCBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gdmlhIGEgYHJldHVybmAgc3RhdGVtZW50
IG9yIGJ5IHRocm93aW5nIGFuCitleGNlcHRpb24sIHRoZSBkZWF0aCB0ZXN0IGlzIGNvbnNpZGVy
ZWQgdG8gaGF2ZSBmYWlsZWQuIFNvbWUgZ29vZ2xldGVzdCBtYWNyb3MKK21heSByZXR1cm4gZnJv
bSB0aGUgY3VycmVudCBmdW5jdGlvbiAoZS5nLiBgQVNTRVJUX1RSVUUoKWApLCBzbyBiZSBzdXJl
IHRvIGF2b2lkCit0aGVtIGluIGBzdGF0ZW1lbnRgLgorCitTaW5jZSBgc3RhdGVtZW50YCBydW5z
IGluIHRoZSBjaGlsZCBwcm9jZXNzLCBhbnkgaW4tbWVtb3J5IHNpZGUgZWZmZWN0IChlLmcuCitt
b2RpZnlpbmcgYSB2YXJpYWJsZSwgcmVsZWFzaW5nIG1lbW9yeSwgZXRjKSBpdCBjYXVzZXMgd2ls
bCAqbm90KiBiZSBvYnNlcnZhYmxlCitpbiB0aGUgcGFyZW50IHByb2Nlc3MuIEluIHBhcnRpY3Vs
YXIsIGlmIHlvdSByZWxlYXNlIG1lbW9yeSBpbiBhIGRlYXRoIHRlc3QsCit5b3VyIHByb2dyYW0g
d2lsbCBmYWlsIHRoZSBoZWFwIGNoZWNrIGFzIHRoZSBwYXJlbnQgcHJvY2VzcyB3aWxsIG5ldmVy
IHNlZSB0aGUKK21lbW9yeSByZWNsYWltZWQuIFRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgeW91IGNh
bgorCisxLiAgdHJ5IG5vdCB0byBmcmVlIG1lbW9yeSBpbiBhIGRlYXRoIHRlc3Q7CisyLiAgZnJl
ZSB0aGUgbWVtb3J5IGFnYWluIGluIHRoZSBwYXJlbnQgcHJvY2Vzczsgb3IKKzMuICBkbyBub3Qg
dXNlIHRoZSBoZWFwIGNoZWNrZXIgaW4geW91ciBwcm9ncmFtLgorCitEdWUgdG8gYW4gaW1wbGVt
ZW50YXRpb24gZGV0YWlsLCB5b3UgY2Fubm90IHBsYWNlIG11bHRpcGxlIGRlYXRoIHRlc3QgYXNz
ZXJ0aW9ucworb24gdGhlIHNhbWUgbGluZTsgb3RoZXJ3aXNlLCBjb21waWxhdGlvbiB3aWxsIGZh
aWwgd2l0aCBhbiB1bm9idmlvdXMgZXJyb3IKK21lc3NhZ2UuCisKK0Rlc3BpdGUgdGhlIGltcHJv
dmVkIHRocmVhZCBzYWZldHkgYWZmb3JkZWQgYnkgdGhlICJ0aHJlYWRzYWZlIiBzdHlsZSBvZiBk
ZWF0aAordGVzdCwgdGhyZWFkIHByb2JsZW1zIHN1Y2ggYXMgZGVhZGxvY2sgYXJlIHN0aWxsIHBv
c3NpYmxlIGluIHRoZSBwcmVzZW5jZSBvZgoraGFuZGxlcnMgcmVnaXN0ZXJlZCB3aXRoIGBwdGhy
ZWFkX2F0Zm9yaygzKWAuCisKKworIyMgVXNpbmcgQXNzZXJ0aW9ucyBpbiBTdWItcm91dGluZXMK
KworIyMjIEFkZGluZyBUcmFjZXMgdG8gQXNzZXJ0aW9ucworCitJZiBhIHRlc3Qgc3ViLXJvdXRp
bmUgaXMgY2FsbGVkIGZyb20gc2V2ZXJhbCBwbGFjZXMsIHdoZW4gYW4gYXNzZXJ0aW9uIGluc2lk
ZSBpdAorZmFpbHMsIGl0IGNhbiBiZSBoYXJkIHRvIHRlbGwgd2hpY2ggaW52b2NhdGlvbiBvZiB0
aGUgc3ViLXJvdXRpbmUgdGhlIGZhaWx1cmUgaXMKK2Zyb20uIAorWW91IGNhbiBhbGxldmlhdGUg
dGhpcyBwcm9ibGVtIHVzaW5nIGV4dHJhIGxvZ2dpbmcgb3IgY3VzdG9tIGZhaWx1cmUgbWVzc2Fn
ZXMsCitidXQgdGhhdCB1c3VhbGx5IGNsdXR0ZXJzIHVwIHlvdXIgdGVzdHMuIEEgYmV0dGVyIHNv
bHV0aW9uIGlzIHRvIHVzZSB0aGUKK2BTQ09QRURfVFJBQ0VgIG1hY3JvIG9yIHRoZSBgU2NvcGVk
VHJhY2VgIHV0aWxpdHk6CisKK2BgYGMrKworU0NPUEVEX1RSQUNFKG1lc3NhZ2UpOworU2NvcGVk
VHJhY2UgdHJhY2UoImZpbGVfcGF0aCIsIGxpbmVfbnVtYmVyLCBtZXNzYWdlKTsKK2BgYAorCit3
aGVyZSBgbWVzc2FnZWAgY2FuIGJlIGFueXRoaW5nIHN0cmVhbWFibGUgdG8gYHN0ZDo6b3N0cmVh
bWAuIGBTQ09QRURfVFJBQ0VgCittYWNybyB3aWxsIGNhdXNlIHRoZSBjdXJyZW50IGZpbGUgbmFt
ZSwgbGluZSBudW1iZXIsIGFuZCB0aGUgZ2l2ZW4gbWVzc2FnZSB0byBiZQorYWRkZWQgaW4gZXZl
cnkgZmFpbHVyZSBtZXNzYWdlLiBgU2NvcGVkVHJhY2VgIGFjY2VwdHMgZXhwbGljaXQgZmlsZSBu
YW1lIGFuZAorbGluZSBudW1iZXIgaW4gYXJndW1lbnRzLCB3aGljaCBpcyB1c2VmdWwgZm9yIHdy
aXRpbmcgdGVzdCBoZWxwZXJzLiBUaGUgZWZmZWN0Cit3aWxsIGJlIHVuZG9uZSB3aGVuIHRoZSBj
b250cm9sIGxlYXZlcyB0aGUgY3VycmVudCBsZXhpY2FsIHNjb3BlLgorCitGb3IgZXhhbXBsZSwK
KworYGBgYysrCisxMDogdm9pZCBTdWIxKGludCBuKSB7CisxMTogICBFWFBFQ1RfRVEoMSwgQmFy
KG4pKTsKKzEyOiAgIEVYUEVDVF9FUSgyLCBCYXIobiArIDEpKTsKKzEzOiB9CisxNDoKKzE1OiBU
RVNUKEZvb1Rlc3QsIEJhcikgeworMTY6ICAgeworMTc6ICAgICBTQ09QRURfVFJBQ0UoIkEiKTsg
IC8vIFRoaXMgdHJhY2UgcG9pbnQgd2lsbCBiZSBpbmNsdWRlZCBpbgorMTg6ICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGV2ZXJ5IGZhaWx1cmUgaW4gdGhpcyBzY29wZS4KKzE5OiAgICAgU3Vi
MSgxKTsKKzIwOiAgIH0KKzIxOiAgIC8vIE5vdyBpdCB3b24ndC4KKzIyOiAgIFN1YjEoOSk7Cisy
MzogfQorYGBgCisKK2NvdWxkIHJlc3VsdCBpbiBtZXNzYWdlcyBsaWtlIHRoZXNlOgorCitgYGBu
b25lCitwYXRoL3RvL2Zvb190ZXN0LmNjOjExOiBGYWlsdXJlCitWYWx1ZSBvZjogQmFyKG4pCitF
eHBlY3RlZDogMQorICBBY3R1YWw6IDIKKyAgIFRyYWNlOgorcGF0aC90by9mb29fdGVzdC5jYzox
NzogQQorCitwYXRoL3RvL2Zvb190ZXN0LmNjOjEyOiBGYWlsdXJlCitWYWx1ZSBvZjogQmFyKG4g
KyAxKQorRXhwZWN0ZWQ6IDIKKyAgQWN0dWFsOiAzCitgYGAKKworV2l0aG91dCB0aGUgdHJhY2Us
IGl0IHdvdWxkJ3ZlIGJlZW4gZGlmZmljdWx0IHRvIGtub3cgd2hpY2ggaW52b2NhdGlvbiBvZgor
YFN1YjEoKWAgdGhlIHR3byBmYWlsdXJlcyBjb21lIGZyb20gcmVzcGVjdGl2ZWx5LiAoWW91IGNv
dWxkIGFkZAorCithbiBleHRyYSBtZXNzYWdlIHRvIGVhY2ggYXNzZXJ0aW9uIGluIGBTdWIxKClg
IHRvIGluZGljYXRlIHRoZSB2YWx1ZSBvZiBgbmAsIGJ1dAordGhhdCdzIHRlZGlvdXMuKQorCitT
b21lIHRpcHMgb24gdXNpbmcgYFNDT1BFRF9UUkFDRWA6CisKKzEuICBXaXRoIGEgc3VpdGFibGUg
bWVzc2FnZSwgaXQncyBvZnRlbiBlbm91Z2ggdG8gdXNlIGBTQ09QRURfVFJBQ0VgIGF0IHRoZQor
ICAgIGJlZ2lubmluZyBvZiBhIHN1Yi1yb3V0aW5lLCBpbnN0ZWFkIG9mIGF0IGVhY2ggY2FsbCBz
aXRlLgorMi4gIFdoZW4gY2FsbGluZyBzdWItcm91dGluZXMgaW5zaWRlIGEgbG9vcCwgbWFrZSB0
aGUgbG9vcCBpdGVyYXRvciBwYXJ0IG9mIHRoZQorICAgIG1lc3NhZ2UgaW4gYFNDT1BFRF9UUkFD
RWAgc3VjaCB0aGF0IHlvdSBjYW4ga25vdyB3aGljaCBpdGVyYXRpb24gdGhlIGZhaWx1cmUKKyAg
ICBpcyBmcm9tLgorMy4gIFNvbWV0aW1lcyB0aGUgbGluZSBudW1iZXIgb2YgdGhlIHRyYWNlIHBv
aW50IGlzIGVub3VnaCBmb3IgaWRlbnRpZnlpbmcgdGhlCisgICAgcGFydGljdWxhciBpbnZvY2F0
aW9uIG9mIGEgc3ViLXJvdXRpbmUuIEluIHRoaXMgY2FzZSwgeW91IGRvbid0IGhhdmUgdG8KKyAg
ICBjaG9vc2UgYSB1bmlxdWUgbWVzc2FnZSBmb3IgYFNDT1BFRF9UUkFDRWAuIFlvdSBjYW4gc2lt
cGx5IHVzZSBgIiJgLgorNC4gIFlvdSBjYW4gdXNlIGBTQ09QRURfVFJBQ0VgIGluIGFuIGlubmVy
IHNjb3BlIHdoZW4gdGhlcmUgaXMgb25lIGluIHRoZSBvdXRlcgorICAgIHNjb3BlLiBJbiB0aGlz
IGNhc2UsIGFsbCBhY3RpdmUgdHJhY2UgcG9pbnRzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGZh
aWx1cmUKKyAgICBtZXNzYWdlcywgaW4gcmV2ZXJzZSBvcmRlciB0aGV5IGFyZSBlbmNvdW50ZXJl
ZC4KKzUuICBUaGUgdHJhY2UgZHVtcCBpcyBjbGlja2FibGUgaW4gRW1hY3MgLSBoaXQgYHJldHVy
bmAgb24gYSBsaW5lIG51bWJlciBhbmQKKyAgICB5b3UnbGwgYmUgdGFrZW4gdG8gdGhhdCBsaW5l
IGluIHRoZSBzb3VyY2UgZmlsZSEKKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3Ms
IE1hYy4KKworIyMjIFByb3BhZ2F0aW5nIEZhdGFsIEZhaWx1cmVzCisKK0EgY29tbW9uIHBpdGZh
bGwgd2hlbiB1c2luZyBgQVNTRVJUXypgIGFuZCBgRkFJTCpgIGlzIG5vdCB1bmRlcnN0YW5kaW5n
IHRoYXQKK3doZW4gdGhleSBmYWlsIHRoZXkgb25seSBhYm9ydCB0aGUgX2N1cnJlbnQgZnVuY3Rp
b25fLCBub3QgdGhlIGVudGlyZSB0ZXN0LiBGb3IKK2V4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVz
dCB3aWxsIHNlZ2ZhdWx0OgorCitgYGBjKysKK3ZvaWQgU3Vicm91dGluZSgpIHsKKyAgLy8gR2Vu
ZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgor
ICBBU1NFUlRfRVEoMSwgMik7CisKKyAgLy8gVGhlIGZvbGxvd2luZyB3b24ndCBiZSBleGVjdXRl
ZC4KKyAgLi4uCit9CisKK1RFU1QoRm9vVGVzdCwgQmFyKSB7CisgIFN1YnJvdXRpbmUoKTsgIC8v
IFRoZSBpbnRlbmRlZCBiZWhhdmlvciBpcyBmb3IgdGhlIGZhdGFsIGZhaWx1cmUKKyAgICAgICAg
ICAgICAgICAgLy8gaW4gU3Vicm91dGluZSgpIHRvIGFib3J0IHRoZSBlbnRpcmUgdGVzdC4KKwor
ICAvLyBUaGUgYWN0dWFsIGJlaGF2aW9yOiB0aGUgZnVuY3Rpb24gZ29lcyBvbiBhZnRlciBTdWJy
b3V0aW5lKCkgcmV0dXJucy4KKyAgaW50KiBwID0gTlVMTDsKKyAgKnAgPSAzOyAgLy8gU2VnZmF1
bHQhCit9CitgYGAKKworVG8gYWxsZXZpYXRlIHRoaXMsIGdvb2dsZXRlc3QgcHJvdmlkZXMgdGhy
ZWUgZGlmZmVyZW50IHNvbHV0aW9ucy4gWW91IGNvdWxkIHVzZQorZWl0aGVyIGV4Y2VwdGlvbnMs
IHRoZSBgKEFTU0VSVHxFWFBFQ1QpX05PX0ZBVEFMX0ZBSUxVUkVgIGFzc2VydGlvbnMgb3IgdGhl
CitgSGFzRmF0YWxGYWlsdXJlKClgIGZ1bmN0aW9uLiBUaGV5IGFyZSBkZXNjcmliZWQgaW4gdGhl
IGZvbGxvd2luZyB0d28KK3N1YnNlY3Rpb25zLgorCisjIyMjIEFzc2VydGluZyBvbiBTdWJyb3V0
aW5lcyB3aXRoIGFuIGV4Y2VwdGlvbgorCitUaGUgZm9sbG93aW5nIGNvZGUgY2FuIHR1cm4gQVNT
RVJULWZhaWx1cmUgaW50byBhbiBleGNlcHRpb246CisKK2BgYGMrKworY2xhc3MgVGhyb3dMaXN0
ZW5lciA6IHB1YmxpYyB0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKKyAgdm9pZCBP
blRlc3RQYXJ0UmVzdWx0KGNvbnN0IHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0JiByZXN1bHQpIG92
ZXJyaWRlIHsKKyAgICBpZiAocmVzdWx0LnR5cGUoKSA9PSB0ZXN0aW5nOjpUZXN0UGFydFJlc3Vs
dDo6a0ZhdGFsRmFpbHVyZSkgeworICAgICAgdGhyb3cgdGVzdGluZzo6QXNzZXJ0aW9uRXhjZXB0
aW9uKHJlc3VsdCk7CisgICAgfQorICB9Cit9OworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBh
cmd2KSB7CisgIC4uLgorICB0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVu
ZXJzKCkuQXBwZW5kKG5ldyBUaHJvd0xpc3RlbmVyKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMo
KTsKK30KK2BgYAorCitUaGlzIGxpc3RlbmVyIHNob3VsZCBiZSBhZGRlZCBhZnRlciBvdGhlciBs
aXN0ZW5lcnMgaWYgeW91IGhhdmUgYW55LCBvdGhlcndpc2UKK3RoZXkgd29uJ3Qgc2VlIGZhaWxl
ZCBgT25UZXN0UGFydFJlc3VsdGAuCisKKyMjIyMgQXNzZXJ0aW5nIG9uIFN1YnJvdXRpbmVzCisK
K0FzIHNob3duIGFib3ZlLCBpZiB5b3VyIHRlc3QgY2FsbHMgYSBzdWJyb3V0aW5lIHRoYXQgaGFz
IGFuIGBBU1NFUlRfKmAgZmFpbHVyZQoraW4gaXQsIHRoZSB0ZXN0IHdpbGwgY29udGludWUgYWZ0
ZXIgdGhlIHN1YnJvdXRpbmUgcmV0dXJucy4gVGhpcyBtYXkgbm90IGJlIHdoYXQKK3lvdSB3YW50
LgorCitPZnRlbiBwZW9wbGUgd2FudCBmYXRhbCBmYWlsdXJlcyB0byBwcm9wYWdhdGUgbGlrZSBl
eGNlcHRpb25zLiBGb3IgdGhhdAorZ29vZ2xldGVzdCBvZmZlcnMgdGhlIGZvbGxvd2luZyBtYWNy
b3M6CisKK0ZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgICAgfCBOb25mYXRhbCBh
c3NlcnRpb24gICAgICAgICAgICAgICAgICAgIHwgVmVyaWZpZXMKKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIHwgLS0tLS0tLS0KK2BBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShzdGF0ZW1lbnQpO2AgfCBg
RVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoc3RhdGVtZW50KTtgIHwgYHN0YXRlbWVudGAgZG9lc24n
dCBnZW5lcmF0ZSBhbnkgbmV3IGZhdGFsIGZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZC4K
KworT25seSBmYWlsdXJlcyBpbiB0aGUgdGhyZWFkIHRoYXQgZXhlY3V0ZXMgdGhlIGFzc2VydGlv
biBhcmUgY2hlY2tlZCB0byBkZXRlcm1pbmUKK3RoZSByZXN1bHQgb2YgdGhpcyB0eXBlIG9mIGFz
c2VydGlvbnMuIElmIGBzdGF0ZW1lbnRgIGNyZWF0ZXMgbmV3IHRocmVhZHMsCitmYWlsdXJlcyBp
biB0aGVzZSB0aHJlYWRzIGFyZSBpZ25vcmVkLgorCitFeGFtcGxlczoKKworYGBgYysrCitBU1NF
UlRfTk9fRkFUQUxfRkFJTFVSRShGb28oKSk7CisKK2ludCBpOworRVhQRUNUX05PX0ZBVEFMX0ZB
SUxVUkUoeworICBpID0gQmFyKCk7Cit9KTsKK2BgYAorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51
eCwgV2luZG93cywgTWFjLiBBc3NlcnRpb25zIGZyb20gbXVsdGlwbGUgdGhyZWFkcyBhcmUKK2N1
cnJlbnRseSBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MuCisKKyMjIyMgQ2hlY2tpbmcgZm9yIEZh
aWx1cmVzIGluIHRoZSBDdXJyZW50IFRlc3QKKworYEhhc0ZhdGFsRmFpbHVyZSgpYCBpbiB0aGUg
YDo6dGVzdGluZzo6VGVzdGAgY2xhc3MgcmV0dXJucyBgdHJ1ZWAgaWYgYW4KK2Fzc2VydGlvbiBp
biB0aGUgY3VycmVudCB0ZXN0IGhhcyBzdWZmZXJlZCBhIGZhdGFsIGZhaWx1cmUuIFRoaXMgYWxs
b3dzCitmdW5jdGlvbnMgdG8gY2F0Y2ggZmF0YWwgZmFpbHVyZXMgaW4gYSBzdWItcm91dGluZSBh
bmQgcmV0dXJuIGVhcmx5LgorCitgYGBjKysKK2NsYXNzIFRlc3QgeworIHB1YmxpYzoKKyAgLi4u
CisgIHN0YXRpYyBib29sIEhhc0ZhdGFsRmFpbHVyZSgpOworfTsKK2BgYAorCitUaGUgdHlwaWNh
bCB1c2FnZSwgd2hpY2ggYmFzaWNhbGx5IHNpbXVsYXRlcyB0aGUgYmVoYXZpb3Igb2YgYSB0aHJv
d24gZXhjZXB0aW9uLAoraXM6CisKK2BgYGMrKworVEVTVChGb29UZXN0LCBCYXIpIHsKKyAgU3Vi
cm91dGluZSgpOworICAvLyBBYm9ydHMgaWYgU3Vicm91dGluZSgpIGhhZCBhIGZhdGFsIGZhaWx1
cmUuCisgIGlmIChIYXNGYXRhbEZhaWx1cmUoKSkgcmV0dXJuOworCisgIC8vIFRoZSBmb2xsb3dp
bmcgd29uJ3QgYmUgZXhlY3V0ZWQuCisgIC4uLgorfQorYGBgCisKK0lmIGBIYXNGYXRhbEZhaWx1
cmUoKWAgaXMgdXNlZCBvdXRzaWRlIG9mIGBURVNUKClgICwgYFRFU1RfRigpYCAsIG9yIGEgdGVz
dAorZml4dHVyZSwgeW91IG11c3QgYWRkIHRoZSBgOjp0ZXN0aW5nOjpUZXN0OjpgIHByZWZpeCwg
YXMgaW46CisKK2BgYGMrKworaWYgKDo6dGVzdGluZzo6VGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkp
IHJldHVybjsKK2BgYAorCitTaW1pbGFybHksIGBIYXNOb25mYXRhbEZhaWx1cmUoKWAgcmV0dXJu
cyBgdHJ1ZWAgaWYgdGhlIGN1cnJlbnQgdGVzdCBoYXMgYXQKK2xlYXN0IG9uZSBub24tZmF0YWwg
ZmFpbHVyZSwgYW5kIGBIYXNGYWlsdXJlKClgIHJldHVybnMgYHRydWVgIGlmIHRoZSBjdXJyZW50
Cit0ZXN0IGhhcyBhdCBsZWFzdCBvbmUgZmFpbHVyZSBvZiBlaXRoZXIga2luZC4KKworKipBdmFp
bGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgTG9nZ2luZyBBZGRpdGlvbmFs
IEluZm9ybWF0aW9uCisKK0luIHlvdXIgdGVzdCBjb2RlLCB5b3UgY2FuIGNhbGwgYFJlY29yZFBy
b3BlcnR5KCJrZXkiLCB2YWx1ZSlgIHRvIGxvZyBhZGRpdGlvbmFsCitpbmZvcm1hdGlvbiwgd2hl
cmUgYHZhbHVlYCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIGBpbnRgLiBUaGUgKmxhc3Qq
IHZhbHVlCityZWNvcmRlZCBmb3IgYSBrZXkgd2lsbCBiZSBlbWl0dGVkIHRvIHRoZSBbWE1MIG91
dHB1dF0oI2dlbmVyYXRpbmctYW4teG1sLXJlcG9ydCkgaWYgeW91CitzcGVjaWZ5IG9uZS4gRm9y
IGV4YW1wbGUsIHRoZSB0ZXN0CisKK2BgYGMrKworVEVTVF9GKFdpZGdldFVzYWdlVGVzdCwgTWlu
QW5kTWF4V2lkZ2V0cykgeworICBSZWNvcmRQcm9wZXJ0eSgiTWF4aW11bVdpZGdldHMiLCBDb21w
dXRlTWF4VXNhZ2UoKSk7CisgIFJlY29yZFByb3BlcnR5KCJNaW5pbXVtV2lkZ2V0cyIsIENvbXB1
dGVNaW5Vc2FnZSgpKTsKK30KK2BgYAorCit3aWxsIG91dHB1dCBYTUwgbGlrZSB0aGlzOgorCitg
YGB4bWwKKyAgLi4uCisgICAgPHRlc3RjYXNlIG5hbWU9Ik1pbkFuZE1heFdpZGdldHMiIHN0YXR1
cz0icnVuIiB0aW1lPSIwLjAwNiIgY2xhc3NuYW1lPSJXaWRnZXRVc2FnZVRlc3QiIE1heGltdW1X
aWRnZXRzPSIxMiIgTWluaW11bVdpZGdldHM9IjkiIC8+CisgIC4uLgorYGBgCisKKz4gTk9URToK
Kz4KKz4gKiAgIGBSZWNvcmRQcm9wZXJ0eSgpYCBpcyBhIHN0YXRpYyBtZW1iZXIgb2YgdGhlIGBU
ZXN0YCBjbGFzcy4gVGhlcmVmb3JlIGl0Cis+ICAgICBuZWVkcyB0byBiZSBwcmVmaXhlZCB3aXRo
IGA6OnRlc3Rpbmc6OlRlc3Q6OmAgaWYgdXNlZCBvdXRzaWRlIG9mIHRoZQorPiAgICAgYFRFU1Rg
IGJvZHkgYW5kIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuCis+ICogICBgKmtleSpgIG11c3QgYmUg
YSB2YWxpZCBYTUwgYXR0cmlidXRlIG5hbWUsIGFuZCBjYW5ub3QgY29uZmxpY3Qgd2l0aCB0aGUK
Kz4gICAgIG9uZXMgYWxyZWFkeSB1c2VkIGJ5IGdvb2dsZXRlc3QgKGBuYW1lYCwgYHN0YXR1c2As
IGB0aW1lYCwgYGNsYXNzbmFtZWAsCis+ICAgICBgdHlwZV9wYXJhbWAsIGFuZCBgdmFsdWVfcGFy
YW1gKS4KKz4gKiAgIENhbGxpbmcgYFJlY29yZFByb3BlcnR5KClgIG91dHNpZGUgb2YgdGhlIGxp
ZmVzcGFuIG9mIGEgdGVzdCBpcyBhbGxvd2VkLgorPiAgICAgSWYgaXQncyBjYWxsZWQgb3V0c2lk
ZSBvZiBhIHRlc3QgYnV0IGJldHdlZW4gYSB0ZXN0IGNhc2UncworPiAgICAgYFNldFVwVGVzdENh
c2UoKWAgYW5kIGBUZWFyRG93blRlc3RDYXNlKClgIG1ldGhvZHMsIGl0IHdpbGwgYmUgYXR0cmli
dXRlZAorPiAgICAgdG8gdGhlIFhNTCBlbGVtZW50IGZvciB0aGUgdGVzdCBjYXNlLiBJZiBpdCdz
IGNhbGxlZCBvdXRzaWRlIG9mIGFsbCB0ZXN0Cis+ICAgICBjYXNlcyAoZS5nLiBpbiBhIHRlc3Qg
ZW52aXJvbm1lbnQpLCBpdCB3aWxsIGJlIGF0dHJpYnV0ZWQgdG8gdGhlIHRvcC1sZXZlbAorPiAg
ICAgWE1MIGVsZW1lbnQuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKKyMjIFNoYXJpbmcgUmVzb3VyY2VzIEJldHdlZW4gVGVzdHMgaW4gdGhlIFNhbWUgVGVzdCBD
YXNlCisKK2dvb2dsZXRlc3QgY3JlYXRlcyBhIG5ldyB0ZXN0IGZpeHR1cmUgb2JqZWN0IGZvciBl
YWNoIHRlc3QgaW4gb3JkZXIgdG8gbWFrZQordGVzdHMgaW5kZXBlbmRlbnQgYW5kIGVhc2llciB0
byBkZWJ1Zy4gSG93ZXZlciwgc29tZXRpbWVzIHRlc3RzIHVzZSByZXNvdXJjZXMKK3RoYXQgYXJl
IGV4cGVuc2l2ZSB0byBzZXQgdXAsIG1ha2luZyB0aGUgb25lLWNvcHktcGVyLXRlc3QgbW9kZWwg
cHJvaGliaXRpdmVseQorZXhwZW5zaXZlLgorCitJZiB0aGUgdGVzdHMgZG9uJ3QgY2hhbmdlIHRo
ZSByZXNvdXJjZSwgdGhlcmUncyBubyBoYXJtIGluIHRoZWlyIHNoYXJpbmcgYQorc2luZ2xlIHJl
c291cmNlIGNvcHkuIFNvLCBpbiBhZGRpdGlvbiB0byBwZXItdGVzdCBzZXQtdXAvdGVhci1kb3du
LCBnb29nbGV0ZXN0CithbHNvIHN1cHBvcnRzIHBlci10ZXN0LWNhc2Ugc2V0LXVwL3RlYXItZG93
bi4gVG8gdXNlIGl0OgorCisxLiAgSW4geW91ciB0ZXN0IGZpeHR1cmUgY2xhc3MgKHNheSBgRm9v
VGVzdGAgKSwgZGVjbGFyZSBhcyBgc3RhdGljYCBzb21lIG1lbWJlcgorICAgIHZhcmlhYmxlcyB0
byBob2xkIHRoZSBzaGFyZWQgcmVzb3VyY2VzLgorMS4gIE91dHNpZGUgeW91ciB0ZXN0IGZpeHR1
cmUgY2xhc3MgKHR5cGljYWxseSBqdXN0IGJlbG93IGl0KSwgZGVmaW5lIHRob3NlCisgICAgbWVt
YmVyIHZhcmlhYmxlcywgb3B0aW9uYWxseSBnaXZpbmcgdGhlbSBpbml0aWFsIHZhbHVlcy4KKzEu
ICBJbiB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUgY2xhc3MsIGRlZmluZSBhIGBzdGF0aWMgdm9pZCBT
ZXRVcFRlc3RDYXNlKClgCisgICAgZnVuY3Rpb24gKHJlbWVtYmVyIG5vdCB0byBzcGVsbCBpdCBh
cyAqKmBTZXR1cFRlc3RDYXNlYCoqIHdpdGggYSBzbWFsbCBgdWAhKQorICAgIHRvIHNldCB1cCB0
aGUgc2hhcmVkIHJlc291cmNlcyBhbmQgYSBgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgp
YAorICAgIGZ1bmN0aW9uIHRvIHRlYXIgdGhlbSBkb3duLgorCitUaGF0J3MgaXQhIGdvb2dsZXRl
c3QgYXV0b21hdGljYWxseSBjYWxscyBgU2V0VXBUZXN0Q2FzZSgpYCBiZWZvcmUgcnVubmluZyB0
aGUKKypmaXJzdCB0ZXN0KiBpbiB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZSAoaS5lLiBiZWZvcmUg
Y3JlYXRpbmcgdGhlIGZpcnN0CitgRm9vVGVzdGAgb2JqZWN0KSwgYW5kIGNhbGxzIGBUZWFyRG93
blRlc3RDYXNlKClgIGFmdGVyIHJ1bm5pbmcgdGhlICpsYXN0IHRlc3QqCitpbiBpdCAoaS5lLiBh
ZnRlciBkZWxldGluZyB0aGUgbGFzdCBgRm9vVGVzdGAgb2JqZWN0KS4gSW4gYmV0d2VlbiwgdGhl
IHRlc3RzIGNhbgordXNlIHRoZSBzaGFyZWQgcmVzb3VyY2VzLgorCitSZW1lbWJlciB0aGF0IHRo
ZSB0ZXN0IG9yZGVyIGlzIHVuZGVmaW5lZCwgc28geW91ciBjb2RlIGNhbid0IGRlcGVuZCBvbiBh
IHRlc3QKK3ByZWNlZGluZyBvciBmb2xsb3dpbmcgYW5vdGhlci4gQWxzbywgdGhlIHRlc3RzIG11
c3QgZWl0aGVyIG5vdCBtb2RpZnkgdGhlIHN0YXRlCitvZiBhbnkgc2hhcmVkIHJlc291cmNlLCBv
ciwgaWYgdGhleSBkbyBtb2RpZnkgdGhlIHN0YXRlLCB0aGV5IG11c3QgcmVzdG9yZSB0aGUKK3N0
YXRlIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZSBiZWZvcmUgcGFzc2luZyBjb250cm9sIHRvIHRoZSBu
ZXh0IHRlc3QuCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIHBlci10ZXN0LWNhc2Ugc2V0LXVwIGFu
ZCB0ZWFyLWRvd246CisKK2BgYGMrKworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLy8gUGVyLXRlc3QtY2FzZSBzZXQtdXAuCisgIC8vIENh
bGxlZCBiZWZvcmUgdGhlIGZpcnN0IHRlc3QgaW4gdGhpcyB0ZXN0IGNhc2UuCisgIC8vIENhbiBi
ZSBvbWl0dGVkIGlmIG5vdCBuZWVkZWQuCisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7
CisgICAgc2hhcmVkX3Jlc291cmNlXyA9IG5ldyAuLi47CisgIH0KKworICAvLyBQZXItdGVzdC1j
YXNlIHRlYXItZG93bi4KKyAgLy8gQ2FsbGVkIGFmdGVyIHRoZSBsYXN0IHRlc3QgaW4gdGhpcyB0
ZXN0IGNhc2UuCisgIC8vIENhbiBiZSBvbWl0dGVkIGlmIG5vdCBuZWVkZWQuCisgIHN0YXRpYyB2
b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7CisgICAgZGVsZXRlIHNoYXJlZF9yZXNvdXJjZV87Cisg
ICAgc2hhcmVkX3Jlc291cmNlXyA9IE5VTEw7CisgIH0KKworICAvLyBZb3UgY2FuIGRlZmluZSBw
ZXItdGVzdCBzZXQtdXAgbG9naWMgYXMgdXN1YWwuCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsg
Li4uIH0KKworICAvLyBZb3UgY2FuIGRlZmluZSBwZXItdGVzdCB0ZWFyLWRvd24gbG9naWMgYXMg
dXN1YWwuCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsgLi4uIH0KKworICAvLyBTb21lIGV4
cGVuc2l2ZSByZXNvdXJjZSBzaGFyZWQgYnkgYWxsIHRlc3RzLgorICBzdGF0aWMgVCogc2hhcmVk
X3Jlc291cmNlXzsKK307CisKK1QqIEZvb1Rlc3Q6OnNoYXJlZF9yZXNvdXJjZV8gPSBOVUxMOwor
CitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVk
X3Jlc291cmNlXyBoZXJlIC4uLgorfQorCitURVNUX0YoRm9vVGVzdCwgVGVzdDIpIHsKKyAgLi4u
IHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlXyBoZXJlIC4uLgorfQorYGBgCisKK05P
VEU6IFRob3VnaCB0aGUgYWJvdmUgY29kZSBkZWNsYXJlcyBgU2V0VXBUZXN0Q2FzZSgpYCBwcm90
ZWN0ZWQsIGl0IG1heQorc29tZXRpbWVzIGJlIG5lY2Vzc2FyeSB0byBkZWNsYXJlIGl0IHB1Ymxp
Yywgc3VjaCBhcyB3aGVuIHVzaW5nIGl0IHdpdGgKK2BURVNUX1BgLgorCisqKkF2YWlsYWJpbGl0
eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBHbG9iYWwgU2V0LVVwIGFuZCBUZWFyLURv
d24KKworSnVzdCBhcyB5b3UgY2FuIGRvIHNldC11cCBhbmQgdGVhci1kb3duIGF0IHRoZSB0ZXN0
IGxldmVsIGFuZCB0aGUgdGVzdCBjYXNlCitsZXZlbCwgeW91IGNhbiBhbHNvIGRvIGl0IGF0IHRo
ZSB0ZXN0IHByb2dyYW0gbGV2ZWwuIEhlcmUncyBob3cuCisKK0ZpcnN0LCB5b3Ugc3ViY2xhc3Mg
dGhlIGA6OnRlc3Rpbmc6OkVudmlyb25tZW50YCBjbGFzcyB0byBkZWZpbmUgYSB0ZXN0CitlbnZp
cm9ubWVudCwgd2hpY2gga25vd3MgaG93IHRvIHNldC11cCBhbmQgdGVhci1kb3duOgorCitgYGBj
KysKK2NsYXNzIEVudmlyb25tZW50IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfkVudmlyb25tZW50
KCkge30KKworICAvLyBPdmVycmlkZSB0aGlzIHRvIGRlZmluZSBob3cgdG8gc2V0IHVwIHRoZSBl
bnZpcm9ubWVudC4KKyAgdmlydHVhbCB2b2lkIFNldFVwKCkge30KKworICAvLyBPdmVycmlkZSB0
aGlzIHRvIGRlZmluZSBob3cgdG8gdGVhciBkb3duIHRoZSBlbnZpcm9ubWVudC4KKyAgdmlydHVh
bCB2b2lkIFRlYXJEb3duKCkge30KK307CitgYGAKKworVGhlbiwgeW91IHJlZ2lzdGVyIGFuIGlu
c3RhbmNlIG9mIHlvdXIgZW52aXJvbm1lbnQgY2xhc3Mgd2l0aCBnb29nbGV0ZXN0IGJ5CitjYWxs
aW5nIHRoZSBgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgZnVuY3Rpb246
CisKK2BgYGMrKworRW52aXJvbm1lbnQqIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChFbnZpcm9u
bWVudCogZW52KTsKK2BgYAorCitOb3csIHdoZW4gYFJVTl9BTExfVEVTVFMoKWAgaXMgY2FsbGVk
LCBpdCBmaXJzdCBjYWxscyB0aGUgYFNldFVwKClgIG1ldGhvZCBvZgordGhlIGVudmlyb25tZW50
IG9iamVjdCwgdGhlbiBydW5zIHRoZSB0ZXN0cyBpZiB0aGVyZSB3YXMgbm8gZmF0YWwgZmFpbHVy
ZXMsIGFuZAorZmluYWxseSBjYWxscyBgVGVhckRvd24oKWAgb2YgdGhlIGVudmlyb25tZW50IG9i
amVjdC4KKworSXQncyBPSyB0byByZWdpc3RlciBtdWx0aXBsZSBlbnZpcm9ubWVudCBvYmplY3Rz
LiBJbiB0aGlzIGNhc2UsIHRoZWlyIGBTZXRVcCgpYAord2lsbCBiZSBjYWxsZWQgaW4gdGhlIG9y
ZGVyIHRoZXkgYXJlIHJlZ2lzdGVyZWQsIGFuZCB0aGVpciBgVGVhckRvd24oKWAgd2lsbCBiZQor
Y2FsbGVkIGluIHRoZSByZXZlcnNlIG9yZGVyLgorCitOb3RlIHRoYXQgZ29vZ2xldGVzdCB0YWtl
cyBvd25lcnNoaXAgb2YgdGhlIHJlZ2lzdGVyZWQgZW52aXJvbm1lbnQgb2JqZWN0cy4KK1RoZXJl
Zm9yZSAqKmRvIG5vdCBkZWxldGUgdGhlbSoqIGJ5IHlvdXJzZWxmLgorCitZb3Ugc2hvdWxkIGNh
bGwgYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCBiZWZvcmUgYFJVTl9BTExfVEVTVFMoKWAg
aXMgY2FsbGVkLAorcHJvYmFibHkgaW4gYG1haW4oKWAuIElmIHlvdSB1c2UgYGd0ZXN0X21haW5g
LCB5b3UgbmVlZCB0byBjYWxsIHRoaXMgYmVmb3JlCitgbWFpbigpYCBzdGFydHMgZm9yIGl0IHRv
IHRha2UgZWZmZWN0LiBPbmUgd2F5IHRvIGRvIHRoaXMgaXMgdG8gZGVmaW5lIGEgZ2xvYmFsCit2
YXJpYWJsZSBsaWtlIHRoaXM6CisKK2BgYGMrKworOjp0ZXN0aW5nOjpFbnZpcm9ubWVudCogY29u
c3QgZm9vX2VudiA9CisgICAgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3
IEZvb0Vudmlyb25tZW50KTsKK2BgYAorCitIb3dldmVyLCB3ZSBzdHJvbmdseSByZWNvbW1lbmQg
eW91IHRvIHdyaXRlIHlvdXIgb3duIGBtYWluKClgIGFuZCBjYWxsCitgQWRkR2xvYmFsVGVzdEVu
dmlyb25tZW50KClgIHRoZXJlLCBhcyByZWx5aW5nIG9uIGluaXRpYWxpemF0aW9uIG9mIGdsb2Jh
bAordmFyaWFibGVzIG1ha2VzIHRoZSBjb2RlIGhhcmRlciB0byByZWFkIGFuZCBtYXkgY2F1c2Ug
cHJvYmxlbXMgd2hlbiB5b3UgcmVnaXN0ZXIKK211bHRpcGxlIGVudmlyb25tZW50cyBmcm9tIGRp
ZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cyBhbmQgdGhlIGVudmlyb25tZW50cyBoYXZlCitkZXBl
bmRlbmNpZXMgYW1vbmcgdGhlbSAocmVtZW1iZXIgdGhhdCB0aGUgY29tcGlsZXIgZG9lc24ndCBn
dWFyYW50ZWUgdGhlIG9yZGVyCitpbiB3aGljaCBnbG9iYWwgdmFyaWFibGVzIGZyb20gZGlmZmVy
ZW50IHRyYW5zbGF0aW9uIHVuaXRzIGFyZSBpbml0aWFsaXplZCkuCisKKyMjIFZhbHVlLVBhcmFt
ZXRlcml6ZWQgVGVzdHMKKworKlZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMqIGFsbG93IHlvdSB0
byB0ZXN0IHlvdXIgY29kZSB3aXRoIGRpZmZlcmVudAorcGFyYW1ldGVycyB3aXRob3V0IHdyaXRp
bmcgbXVsdGlwbGUgY29waWVzIG9mIHRoZSBzYW1lIHRlc3QuIFRoaXMgaXMgdXNlZnVsIGluIGEK
K251bWJlciBvZiBzaXR1YXRpb25zLCBmb3IgZXhhbXBsZToKKworKiAgIFlvdSBoYXZlIGEgcGll
Y2Ugb2YgY29kZSB3aG9zZSBiZWhhdmlvciBpcyBhZmZlY3RlZCBieSBvbmUgb3IgbW9yZQorICAg
IGNvbW1hbmQtbGluZSBmbGFncy4gWW91IHdhbnQgdG8gbWFrZSBzdXJlIHlvdXIgY29kZSBwZXJm
b3JtcyBjb3JyZWN0bHkgZm9yCisgICAgdmFyaW91cyB2YWx1ZXMgb2YgdGhvc2UgZmxhZ3MuCisq
ICAgWW91IHdhbnQgdG8gdGVzdCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIG9mIGFuIE9PIGlu
dGVyZmFjZS4KKyogICBZb3Ugd2FudCB0byB0ZXN0IHlvdXIgY29kZSBvdmVyIHZhcmlvdXMgaW5w
dXRzIChhLmsuYS4gZGF0YS1kcml2ZW4gdGVzdGluZykuCisgICAgVGhpcyBmZWF0dXJlIGlzIGVh
c3kgdG8gYWJ1c2UsIHNvIHBsZWFzZSBleGVyY2lzZSB5b3VyIGdvb2Qgc2Vuc2Ugd2hlbiBkb2lu
ZworICAgIGl0IQorCisjIyMgSG93IHRvIFdyaXRlIFZhbHVlLVBhcmFtZXRlcml6ZWQgVGVzdHMK
KworVG8gd3JpdGUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cywgZmlyc3QgeW91IHNob3VsZCBk
ZWZpbmUgYSBmaXh0dXJlIGNsYXNzLiBJdAorbXVzdCBiZSBkZXJpdmVkIGZyb20gYm90aCBgOjp0
ZXN0aW5nOjpUZXN0YCBhbmQKK2A6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxUPmAgKHRo
ZSBsYXR0ZXIgaXMgYSBwdXJlIGludGVyZmFjZSksIHdoZXJlIGBUYAoraXMgdGhlIHR5cGUgb2Yg
eW91ciBwYXJhbWV0ZXIgdmFsdWVzLiBGb3IgY29udmVuaWVuY2UsIHlvdSBjYW4ganVzdCBkZXJp
dmUgdGhlCitmaXh0dXJlIGNsYXNzIGZyb20gYDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxUPmAs
IHdoaWNoIGl0c2VsZiBpcyBkZXJpdmVkIGZyb20KK2JvdGggYDo6dGVzdGluZzo6VGVzdGAgYW5k
IGA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxUPmAuIGBUYCBjYW4gYmUgYW55Citjb3B5
YWJsZSB0eXBlLiBJZiBpdCdzIGEgcmF3IHBvaW50ZXIsIHlvdSBhcmUgcmVzcG9uc2libGUgZm9y
IG1hbmFnaW5nIHRoZQorbGlmZXNwYW4gb2YgdGhlIHBvaW50ZWQgdmFsdWVzLgorCitOT1RFOiBJ
ZiB5b3VyIHRlc3QgZml4dHVyZSBkZWZpbmVzIGBTZXRVcFRlc3RDYXNlKClgIG9yIGBUZWFyRG93
blRlc3RDYXNlKClgCit0aGV5IG11c3QgYmUgZGVjbGFyZWQgKipwdWJsaWMqKiByYXRoZXIgdGhh
biAqKnByb3RlY3RlZCoqIGluIG9yZGVyIHRvIHVzZQorYFRFU1RfUGAuCisKK2BgYGMrKworY2xh
c3MgRm9vVGVzdCA6CisgICAgcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBj
aGFyKj4geworICAvLyBZb3UgY2FuIGltcGxlbWVudCBhbGwgdGhlIHVzdWFsIGZpeHR1cmUgY2xh
c3MgbWVtYmVycyBoZXJlLgorICAvLyBUbyBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyLCBjYWxs
IEdldFBhcmFtKCkgZnJvbSBjbGFzcworICAvLyBUZXN0V2l0aFBhcmFtPFQ+LgorfTsKKworLy8g
T3IsIHdoZW4geW91IHdhbnQgdG8gYWRkIHBhcmFtZXRlcnMgdG8gYSBwcmUtZXhpc3RpbmcgZml4
dHVyZSBjbGFzczoKK2NsYXNzIEJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Cisg
IC4uLgorfTsKK2NsYXNzIEJhclRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsCisgICAgICAgICAgICAg
ICAgcHVibGljIDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPGNvbnN0IGNoYXIqPiB7Cisg
IC4uLgorfTsKK2BgYAorCitUaGVuLCB1c2UgdGhlIGBURVNUX1BgIG1hY3JvIHRvIGRlZmluZSBh
cyBtYW55IHRlc3QgcGF0dGVybnMgdXNpbmcgdGhpcyBmaXh0dXJlCithcyB5b3Ugd2FudC4gVGhl
IGBfUGAgc3VmZml4IGlzIGZvciAicGFyYW1ldGVyaXplZCIgb3IgInBhdHRlcm4iLCB3aGljaGV2
ZXIgeW91CitwcmVmZXIgdG8gdGhpbmsuCisKK2BgYGMrKworVEVTVF9QKEZvb1Rlc3QsIERvZXNC
bGFoKSB7CisgIC8vIEluc2lkZSBhIHRlc3QsIGFjY2VzcyB0aGUgdGVzdCBwYXJhbWV0ZXIgd2l0
aCB0aGUgR2V0UGFyYW0oKSBtZXRob2QKKyAgLy8gb2YgdGhlIFRlc3RXaXRoUGFyYW08VD4gY2xh
c3M6CisgIEVYUEVDVF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsKKyAgLi4uCit9CisKK1RF
U1RfUChGb29UZXN0LCBIYXNCbGFoQmxhaCkgeworICAuLi4KK30KK2BgYAorCitGaW5hbGx5LCB5
b3UgY2FuIHVzZSBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIHRvIGluc3RhbnRpYXRlIHRoZSB0
ZXN0IGNhc2Ugd2l0aAorYW55IHNldCBvZiBwYXJhbWV0ZXJzIHlvdSB3YW50LiBnb29nbGV0ZXN0
IGRlZmluZXMgYSBudW1iZXIgb2YgZnVuY3Rpb25zIGZvcgorZ2VuZXJhdGluZyB0ZXN0IHBhcmFt
ZXRlcnMuIFRoZXkgcmV0dXJuIHdoYXQgd2UgY2FsbCAoc3VycHJpc2UhKSAqcGFyYW1ldGVyCitn
ZW5lcmF0b3JzKi4gSGVyZSBpcyBhIHN1bW1hcnkgb2YgdGhlbSwgd2hpY2ggYXJlIGFsbCBpbiB0
aGUgYHRlc3RpbmdgCituYW1lc3BhY2U6CisKK3wgUGFyYW1ldGVyIEdlbmVyYXRvciAgICAgICAg
ICB8IEJlaGF2aW9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSB8Cit8IGBSYW5nZShiZWdpbiwgZW5kIFssIHN0ZXBdKWAgfCBZaWVsZHMg
dmFsdWVzIGB7YmVnaW4sIGJlZ2luK3N0ZXAsIGJlZ2luK3N0ZXArc3RlcCwgLi4ufWAuIFRoZSB2
YWx1ZXMgZG8gbm90IGluY2x1ZGUgYGVuZGAuIGBzdGVwYCBkZWZhdWx0cyB0byAxLiAgICAgIHwK
K3wgYFZhbHVlcyh2MSwgdjIsIC4uLiwgdk4pYCAgICB8IFlpZWxkcyB2YWx1ZXMgYHt2MSwgdjIs
IC4uLiwgdk59YC4gICAgICAgICAgfAorfCBgVmFsdWVzSW4oY29udGFpbmVyKWAgYW5kIGBWYWx1
ZXNJbihiZWdpbixlbmQpYCAgIHwgWWllbGRzIHZhbHVlcyBmcm9tIGEgQy1zdHlsZSBhcnJheSwg
YW4gU1RMLXN0eWxlIGNvbnRhaW5lciwgb3IgYW4gaXRlcmF0b3IgcmFuZ2UgIGBbYmVnaW4sIGVu
ZClgLiB8Cit8IGBCb29sKClgICAgICAgICAgICAgICAgICAgICAgfCBZaWVsZHMgc2VxdWVuY2Ug
YHtmYWxzZSwgdHJ1ZX1gLiAgICAgICAgICAgIHwKK3wgYENvbWJpbmUoZzEsIGcyLCAuLi4sIGdO
KWAgICB8IFlpZWxkcyBhbGwgY29tYmluYXRpb25zIChDYXJ0ZXNpYW4gcHJvZHVjdCkgYXMgc3Rk
XDpcOnR1cGxlcyBvZiB0aGUgdmFsdWVzIGdlbmVyYXRlZCBieSB0aGUgYE5gIGdlbmVyYXRvcnMu
ICAgICAgICAgICAgfAorCitGb3IgbW9yZSBkZXRhaWxzLCBzZWUgdGhlIGNvbW1lbnRzIGF0IHRo
ZSBkZWZpbml0aW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMuCisKK1RoZSBmb2xsb3dpbmcgc3RhdGVt
ZW50IHdpbGwgaW5zdGFudGlhdGUgdGVzdHMgZnJvbSB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZSBl
YWNoCit3aXRoIHBhcmFtZXRlciB2YWx1ZXMgYCJtZWVueSJgLCBgIm1pbnkiYCwgYW5kIGAibW9l
ImAuCisKK2BgYGMrKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSW5zdGFudGlhdGlvbk5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICBGb29UZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgOjp0ZXN0aW5nOjpWYWx1ZXMoIm1lZW55IiwgIm1pbnkiLCAibW9lIikpOworYGBgCisKK05P
VEU6IFRoZSBjb2RlIGFib3ZlIG11c3QgYmUgcGxhY2VkIGF0IGdsb2JhbCBvciBuYW1lc3BhY2Ug
c2NvcGUsIG5vdCBhdAorZnVuY3Rpb24gc2NvcGUuCisKK05PVEU6IERvbid0IGZvcmdldCB0aGlz
IHN0ZXAhIElmIHlvdSBkbyB5b3VyIHRlc3Qgd2lsbCBzaWxlbnRseSBwYXNzLCBidXQgbm9uZQor
b2YgaXRzIGNhc2VzIHdpbGwgZXZlciBydW4hCisKK1RvIGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBp
bnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4gKHllcywgeW91IGNhbiBpbnN0YW50aWF0ZSBpdAorbW9y
ZSB0aGFuIG9uY2UpLCB0aGUgZmlyc3QgYXJndW1lbnQgdG8gYElOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QYCBpcyBhIHByZWZpeAordGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBhY3R1YWwgdGVzdCBj
YXNlIG5hbWUuIFJlbWVtYmVyIHRvIHBpY2sgdW5pcXVlCitwcmVmaXhlcyBmb3IgZGlmZmVyZW50
IGluc3RhbnRpYXRpb25zLiBUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZQor
d2lsbCBoYXZlIHRoZXNlIG5hbWVzOgorCisqICAgYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3Qu
RG9lc0JsYWgvMGAgZm9yIGAibWVlbnkiYAorKiAgIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0
LkRvZXNCbGFoLzFgIGZvciBgIm1pbnkiYAorKiAgIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0
LkRvZXNCbGFoLzJgIGZvciBgIm1vZSJgCisqICAgYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3Qu
SGFzQmxhaEJsYWgvMGAgZm9yIGAibWVlbnkiYAorKiAgIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29U
ZXN0Lkhhc0JsYWhCbGFoLzFgIGZvciBgIm1pbnkiYAorKiAgIGBJbnN0YW50aWF0aW9uTmFtZS9G
b29UZXN0Lkhhc0JsYWhCbGFoLzJgIGZvciBgIm1vZSJgCisKK1lvdSBjYW4gdXNlIHRoZXNlIG5h
bWVzIGluIFtgLS1ndGVzdF9maWx0ZXJgXSgjcnVubmluZy1hLXN1YnNldC1vZi10aGUtdGVzdHMp
LgorCitUaGlzIHN0YXRlbWVudCB3aWxsIGluc3RhbnRpYXRlIGFsbCB0ZXN0cyBmcm9tIGBGb29U
ZXN0YCBhZ2FpbiwgZWFjaCB3aXRoCitwYXJhbWV0ZXIgdmFsdWVzIGAiY2F0ImAgYW5kIGAiZG9n
ImA6CisKK2BgYGMrKworY29uc3QgY2hhciogcGV0c1tdID0geyJjYXQiLCAiZG9nIn07CitJTlNU
QU5USUFURV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFudGlhdGlvbk5hbWUsIEZvb1Rlc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlc0luKHBldHMpKTsKK2BgYAor
CitUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhhdmUgdGhlc2Ug
bmFtZXM6CisKKyogICBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgv
MGAgZm9yIGAiY2F0ImAKKyogICBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9l
c0JsYWgvMWAgZm9yIGAiZG9nImAKKyogICBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rl
c3QuSGFzQmxhaEJsYWgvMGAgZm9yIGAiY2F0ImAKKyogICBgQW5vdGhlckluc3RhbnRpYXRpb25O
YW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMWAgZm9yIGAiZG9nImAKKworUGxlYXNlIG5vdGUgdGhh
dCBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIHdpbGwgaW5zdGFudGlhdGUgKmFsbCogdGVzdHMg
aW4gdGhlCitnaXZlbiB0ZXN0IGNhc2UsIHdoZXRoZXIgdGhlaXIgZGVmaW5pdGlvbnMgY29tZSBi
ZWZvcmUgb3IgKmFmdGVyKiB0aGUKK2BJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgc3RhdGVtZW50
LgorCitZb3UgY2FuIHNlZSBzYW1wbGU3X3VuaXR0ZXN0LmNjIGFuZCBzYW1wbGU4X3VuaXR0ZXN0
LmNjIGZvciBtb3JlIGV4YW1wbGVzLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93
cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBNYWMKKworIyMjIENyZWF0aW5nIFZhbHVl
LVBhcmFtZXRlcml6ZWQgQWJzdHJhY3QgVGVzdHMKKworSW4gdGhlIGFib3ZlLCB3ZSBkZWZpbmUg
YW5kIGluc3RhbnRpYXRlIGBGb29UZXN0YCBpbiB0aGUgKnNhbWUqIHNvdXJjZSBmaWxlLgorU29t
ZXRpbWVzIHlvdSBtYXkgd2FudCB0byBkZWZpbmUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBp
biBhIGxpYnJhcnkgYW5kIGxldAorb3RoZXIgcGVvcGxlIGluc3RhbnRpYXRlIHRoZW0gbGF0ZXIu
IFRoaXMgcGF0dGVybiBpcyBrbm93biBhcyAqYWJzdHJhY3QgdGVzdHMqLgorQXMgYW4gZXhhbXBs
ZSBvZiBpdHMgYXBwbGljYXRpb24sIHdoZW4geW91IGFyZSBkZXNpZ25pbmcgYW4gaW50ZXJmYWNl
IHlvdSBjYW4KK3dyaXRlIGEgc3RhbmRhcmQgc3VpdGUgb2YgYWJzdHJhY3QgdGVzdHMgKHBlcmhh
cHMgdXNpbmcgYSBmYWN0b3J5IGZ1bmN0aW9uIGFzCit0aGUgdGVzdCBwYXJhbWV0ZXIpIHRoYXQg
YWxsIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgaW50ZXJmYWNlIGFyZSBleHBlY3RlZCB0bworcGFz
cy4gV2hlbiBzb21lb25lIGltcGxlbWVudHMgdGhlIGludGVyZmFjZSwgdGhleSBjYW4gaW5zdGFu
dGlhdGUgeW91ciBzdWl0ZSB0bworZ2V0IGFsbCB0aGUgaW50ZXJmYWNlLWNvbmZvcm1hbmNlIHRl
c3RzIGZvciBmcmVlLgorCitUbyBkZWZpbmUgYWJzdHJhY3QgdGVzdHMsIHlvdSBzaG91bGQgb3Jn
YW5pemUgeW91ciBjb2RlIGxpa2UgdGhpczoKKworMS4gIFB1dCB0aGUgZGVmaW5pdGlvbiBvZiB0
aGUgcGFyYW1ldGVyaXplZCB0ZXN0IGZpeHR1cmUgY2xhc3MgKGUuZy4gYEZvb1Rlc3RgKQorICAg
IGluIGEgaGVhZGVyIGZpbGUsIHNheSBgZm9vX3BhcmFtX3Rlc3QuaGAuIFRoaW5rIG9mIHRoaXMg
YXMgKmRlY2xhcmluZyogeW91cgorICAgIGFic3RyYWN0IHRlc3RzLgorMS4gIFB1dCB0aGUgYFRF
U1RfUGAgZGVmaW5pdGlvbnMgaW4gYGZvb19wYXJhbV90ZXN0LmNjYCwgd2hpY2ggaW5jbHVkZXMK
KyAgICBgZm9vX3BhcmFtX3Rlc3QuaGAuIFRoaW5rIG9mIHRoaXMgYXMgKmltcGxlbWVudGluZyog
eW91ciBhYnN0cmFjdCB0ZXN0cy4KKworT25jZSB0aGV5IGFyZSBkZWZpbmVkLCB5b3UgY2FuIGlu
c3RhbnRpYXRlIHRoZW0gYnkgaW5jbHVkaW5nIGBmb29fcGFyYW1fdGVzdC5oYCwKK2ludm9raW5n
IGBJTlNUQU5USUFURV9URVNUX0NBU0VfUCgpYCwgYW5kIGRlcGVuZGluZyBvbiB0aGUgbGlicmFy
eSB0YXJnZXQgdGhhdAorY29udGFpbnMgYGZvb19wYXJhbV90ZXN0LmNjYC4gWW91IGNhbiBpbnN0
YW50aWF0ZSB0aGUgc2FtZSBhYnN0cmFjdCB0ZXN0IGNhc2UKK211bHRpcGxlIHRpbWVzLCBwb3Nz
aWJseSBpbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgorCisjIyMgU3BlY2lmeWluZyBOYW1lcyBm
b3IgVmFsdWUtUGFyYW1ldGVyaXplZCBUZXN0IFBhcmFtZXRlcnMKKworVGhlIG9wdGlvbmFsIGxh
c3QgYXJndW1lbnQgdG8gYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKClgIGFsbG93cyB0aGUgdXNl
ciB0bworc3BlY2lmeSBhIGZ1bmN0aW9uIG9yIGZ1bmN0b3IgdGhhdCBnZW5lcmF0ZXMgY3VzdG9t
IHRlc3QgbmFtZSBzdWZmaXhlcyBiYXNlZCBvbgordGhlIHRlc3QgcGFyYW1ldGVycy4gVGhlIGZ1
bmN0aW9uIHNob3VsZCBhY2NlcHQgb25lIGFyZ3VtZW50IG9mIHR5cGUKK2B0ZXN0aW5nOjpUZXN0
UGFyYW1JbmZvPGNsYXNzIFBhcmFtVHlwZT5gLCBhbmQgcmV0dXJuIGBzdGQ6OnN0cmluZ2AuCisK
K2B0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1OYW1lYCBpcyBhIGJ1aWx0aW4gdGVzdCBzdWZm
aXggZ2VuZXJhdG9yIHRoYXQKK3JldHVybnMgdGhlIHZhbHVlIG9mIGB0ZXN0aW5nOjpQcmludFRv
U3RyaW5nKEdldFBhcmFtKCkpYC4gSXQgZG9lcyBub3Qgd29yayBmb3IKK2BzdGQ6OnN0cmluZ2Ag
b3IgQyBzdHJpbmdzLgorCitOT1RFOiB0ZXN0IG5hbWVzIG11c3QgYmUgbm9uLWVtcHR5LCB1bmlx
dWUsIGFuZCBtYXkgb25seSBjb250YWluIEFTQ0lJCithbHBoYW51bWVyaWMgY2hhcmFjdGVycy4g
SW4gcGFydGljdWxhciwgdGhleSBbc2hvdWxkIG5vdCBjb250YWluCit1bmRlcnNjb3Jlc10oaHR0
cHM6Ly9nM2RvYy5jb3JwLmdvb2dsZS5jb20vdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L2czZG9jL2ZhcS5tZCNuby11bmRlcnNjb3JlcykuCisKK2BgYGMrKworY2xhc3MgTXlUZXN0
Q2FzZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4ge307CisKK1RFU1RfUChN
eVRlc3RDYXNlLCBNeVRlc3QpCit7CisgIHN0ZDo6Y291dCA8PCAiRXhhbXBsZSBUZXN0IFBhcmFt
OiAiIDw8IEdldFBhcmFtKCkgPDwgc3RkOjplbmRsOworfQorCitJTlNUQU5USUFURV9URVNUX0NB
U0VfUChNeUdyb3VwLCBNeVRlc3RDYXNlLCB0ZXN0aW5nOjpSYW5nZSgwLCAxMCksCisgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1OYW1lKCkpOworYGBg
CisKKyMjIFR5cGVkIFRlc3RzPC9pZD4KKworU3VwcG9zZSB5b3UgaGF2ZSBtdWx0aXBsZSBpbXBs
ZW1lbnRhdGlvbnMgb2YgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZCB3YW50IHRvIG1ha2UKK3N1cmUg
dGhhdCBhbGwgb2YgdGhlbSBzYXRpc2Z5IHNvbWUgY29tbW9uIHJlcXVpcmVtZW50cy4gT3IsIHlv
dSBtYXkgaGF2ZSBkZWZpbmVkCitzZXZlcmFsIHR5cGVzIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGNv
bmZvcm0gdG8gdGhlIHNhbWUgImNvbmNlcHQiIGFuZCB5b3Ugd2FudCB0bwordmVyaWZ5IGl0LiBJ
biBib3RoIGNhc2VzLCB5b3Ugd2FudCB0aGUgc2FtZSB0ZXN0IGxvZ2ljIHJlcGVhdGVkIGZvciBk
aWZmZXJlbnQKK3R5cGVzLgorCitXaGlsZSB5b3UgY2FuIHdyaXRlIG9uZSBgVEVTVGAgb3IgYFRF
U1RfRmAgZm9yIGVhY2ggdHlwZSB5b3Ugd2FudCB0byB0ZXN0IChhbmQKK3lvdSBtYXkgZXZlbiBm
YWN0b3IgdGhlIHRlc3QgbG9naWMgaW50byBhIGZ1bmN0aW9uIHRlbXBsYXRlIHRoYXQgeW91IGlu
dm9rZSBmcm9tCit0aGUgYFRFU1RgKSwgaXQncyB0ZWRpb3VzIGFuZCBkb2Vzbid0IHNjYWxlOiBp
ZiB5b3Ugd2FudCBgbWAgdGVzdHMgb3ZlciBgbmAKK3R5cGVzLCB5b3UnbGwgZW5kIHVwIHdyaXRp
bmcgYG0qbmAgYFRFU1Rgcy4KKworKlR5cGVkIHRlc3RzKiBhbGxvdyB5b3UgdG8gcmVwZWF0IHRo
ZSBzYW1lIHRlc3QgbG9naWMgb3ZlciBhIGxpc3Qgb2YgdHlwZXMuIFlvdQorb25seSBuZWVkIHRv
IHdyaXRlIHRoZSB0ZXN0IGxvZ2ljIG9uY2UsIGFsdGhvdWdoIHlvdSBtdXN0IGtub3cgdGhlIHR5
cGUgbGlzdAord2hlbiB3cml0aW5nIHR5cGVkIHRlc3RzLiBIZXJlJ3MgaG93IHlvdSBkbyBpdDoK
KworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUuIEl0IHNob3VsZCBiZSBw
YXJhbWV0ZXJpemVkIGJ5IGEgdHlwZS4KK1JlbWVtYmVyIHRvIGRlcml2ZSBpdCBmcm9tIGA6OnRl
c3Rpbmc6OlRlc3RgOgorCitgYGBjKysKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgRm9v
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHB1YmxpYzoKKyAgLi4uCisgIHR5cGVk
ZWYgc3RkOjpsaXN0PFQ+IExpc3Q7CisgIHN0YXRpYyBUIHNoYXJlZF87CisgIFQgdmFsdWVfOwor
fTsKK2BgYAorCitOZXh0LCBhc3NvY2lhdGUgYSBsaXN0IG9mIHR5cGVzIHdpdGggdGhlIHRlc3Qg
Y2FzZSwgd2hpY2ggd2lsbCBiZSByZXBlYXRlZCBmb3IKK2VhY2ggdHlwZSBpbiB0aGUgbGlzdDoK
KworYGBgYysrCit1c2luZyBNeVR5cGVzID0gOjp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQsIHVu
c2lnbmVkIGludD47CitUWVBFRF9URVNUX0NBU0UoRm9vVGVzdCwgTXlUeXBlcyk7CitgYGAKKwor
VGhlIHR5cGUgYWxpYXMgKGB1c2luZ2Agb3IgYHR5cGVkZWZgKSBpcyBuZWNlc3NhcnkgZm9yIHRo
ZSBgVFlQRURfVEVTVF9DQVNFYAorbWFjcm8gdG8gcGFyc2UgY29ycmVjdGx5LiBPdGhlcndpc2Ug
dGhlIGNvbXBpbGVyIHdpbGwgdGhpbmsgdGhhdCBlYWNoIGNvbW1hIGluCit0aGUgdHlwZSBsaXN0
IGludHJvZHVjZXMgYSBuZXcgbWFjcm8gYXJndW1lbnQuCisKK1RoZW4sIHVzZSBgVFlQRURfVEVT
VCgpYCBpbnN0ZWFkIG9mIGBURVNUX0YoKWAgdG8gZGVmaW5lIGEgdHlwZWQgdGVzdCBmb3IgdGhp
cwordGVzdCBjYXNlLiBZb3UgY2FuIHJlcGVhdCB0aGlzIGFzIG1hbnkgdGltZXMgYXMgeW91IHdh
bnQ6CisKK2BgYGMrKworVFlQRURfVEVTVChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJbnNp
ZGUgYSB0ZXN0LCByZWZlciB0byB0aGUgc3BlY2lhbCBuYW1lIFR5cGVQYXJhbSB0byBnZXQgdGhl
IHR5cGUKKyAgLy8gcGFyYW1ldGVyLiAgU2luY2Ugd2UgYXJlIGluc2lkZSBhIGRlcml2ZWQgY2xh
c3MgdGVtcGxhdGUsIEMrKyByZXF1aXJlcworICAvLyB1cyB0byB2aXNpdCB0aGUgbWVtYmVycyBv
ZiBGb29UZXN0IHZpYSAndGhpcycuCisgIFR5cGVQYXJhbSBuID0gdGhpcy0+dmFsdWVfOworCisg
IC8vIFRvIHZpc2l0IHN0YXRpYyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlLCBhZGQgdGhlICdUZXN0
Rml4dHVyZTo6JworICAvLyBwcmVmaXguCisgIG4gKz0gVGVzdEZpeHR1cmU6OnNoYXJlZF87CisK
KyAgLy8gVG8gcmVmZXIgdG8gdHlwZWRlZnMgaW4gdGhlIGZpeHR1cmUsIGFkZCB0aGUgJ3R5cGVu
YW1lIFRlc3RGaXh0dXJlOjonCisgIC8vIHByZWZpeC4gIFRoZSAndHlwZW5hbWUnIGlzIHJlcXVp
cmVkIHRvIHNhdGlzZnkgdGhlIGNvbXBpbGVyLgorICB0eXBlbmFtZSBUZXN0Rml4dHVyZTo6TGlz
dCB2YWx1ZXM7CisKKyAgdmFsdWVzLnB1c2hfYmFjayhuKTsKKyAgLi4uCit9CisKK1RZUEVEX1RF
U1QoRm9vVGVzdCwgSGFzUHJvcGVydHlBKSB7IC4uLiB9CitgYGAKKworWW91IGNhbiBzZWUgc2Ft
cGxlNl91bml0dGVzdC5jYworCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cyAocmVx
dWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBNYWMKKworIyMgVHlwZS1QYXJhbWV0ZXJpemVkIFRl
c3RzCisKKypUeXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMqIGFyZSBsaWtlIHR5cGVkIHRlc3RzLCBl
eGNlcHQgdGhhdCB0aGV5IGRvbid0IHJlcXVpcmUKK3lvdSB0byBrbm93IHRoZSBsaXN0IG9mIHR5
cGVzIGFoZWFkIG9mIHRpbWUuIEluc3RlYWQsIHlvdSBjYW4gZGVmaW5lIHRoZSB0ZXN0Citsb2dp
YyBmaXJzdCBhbmQgaW5zdGFudGlhdGUgaXQgd2l0aCBkaWZmZXJlbnQgdHlwZSBsaXN0cyBsYXRl
ci4gWW91IGNhbiBldmVuCitpbnN0YW50aWF0ZSBpdCBtb3JlIHRoYW4gb25jZSBpbiB0aGUgc2Ft
ZSBwcm9ncmFtLgorCitJZiB5b3UgYXJlIGRlc2lnbmluZyBhbiBpbnRlcmZhY2Ugb3IgY29uY2Vw
dCwgeW91IGNhbiBkZWZpbmUgYSBzdWl0ZSBvZgordHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzIHRv
IHZlcmlmeSBwcm9wZXJ0aWVzIHRoYXQgYW55IHZhbGlkIGltcGxlbWVudGF0aW9uIG9mCit0aGUg
aW50ZXJmYWNlL2NvbmNlcHQgc2hvdWxkIGhhdmUuIFRoZW4sIHRoZSBhdXRob3Igb2YgZWFjaCBp
bXBsZW1lbnRhdGlvbiBjYW4KK2p1c3QgaW5zdGFudGlhdGUgdGhlIHRlc3Qgc3VpdGUgd2l0aCB0
aGVpciB0eXBlIHRvIHZlcmlmeSB0aGF0IGl0IGNvbmZvcm1zIHRvCit0aGUgcmVxdWlyZW1lbnRz
LCB3aXRob3V0IGhhdmluZyB0byB3cml0ZSBzaW1pbGFyIHRlc3RzIHJlcGVhdGVkbHkuIEhlcmUn
cyBhbgorZXhhbXBsZToKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUs
IGFzIHdlIGRpZCB3aXRoIHR5cGVkIHRlc3RzOgorCitgYGBjKysKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICAuLi4KK307
CitgYGAKKworTmV4dCwgZGVjbGFyZSB0aGF0IHlvdSB3aWxsIGRlZmluZSBhIHR5cGUtcGFyYW1l
dGVyaXplZCB0ZXN0IGNhc2U6CisKK2BgYGMrKworVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7
CitgYGAKKworVGhlbiwgdXNlIGBUWVBFRF9URVNUX1AoKWAgdG8gZGVmaW5lIGEgdHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3QuIFlvdSBjYW4gcmVwZWF0Cit0aGlzIGFzIG1hbnkgdGltZXMgYXMgeW91
IHdhbnQ6CisKK2BgYGMrKworVFlQRURfVEVTVF9QKEZvb1Rlc3QsIERvZXNCbGFoKSB7CisgIC8v
IEluc2lkZSBhIHRlc3QsIHJlZmVyIHRvIFR5cGVQYXJhbSB0byBnZXQgdGhlIHR5cGUgcGFyYW1l
dGVyLgorICBUeXBlUGFyYW0gbiA9IDA7CisgIC4uLgorfQorCitUWVBFRF9URVNUX1AoRm9vVGVz
dCwgSGFzUHJvcGVydHlBKSB7IC4uLiB9CitgYGAKKworTm93IHRoZSB0cmlja3kgcGFydDogeW91
IG5lZWQgdG8gcmVnaXN0ZXIgYWxsIHRlc3QgcGF0dGVybnMgdXNpbmcgdGhlCitgUkVHSVNURVJf
VFlQRURfVEVTVF9DQVNFX1BgIG1hY3JvIGJlZm9yZSB5b3UgY2FuIGluc3RhbnRpYXRlIHRoZW0u
IFRoZSBmaXJzdAorYXJndW1lbnQgb2YgdGhlIG1hY3JvIGlzIHRoZSB0ZXN0IGNhc2UgbmFtZTsg
dGhlIHJlc3QgYXJlIHRoZSBuYW1lcyBvZiB0aGUgdGVzdHMKK2luIHRoaXMgdGVzdCBjYXNlOgor
CitgYGBjKysKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEb2VzQmxhaCwgSGFzUHJvcGVydHlBKTsKK2BgYAorCitGaW5hbGx5
LCB5b3UgYXJlIGZyZWUgdG8gaW5zdGFudGlhdGUgdGhlIHBhdHRlcm4gd2l0aCB0aGUgdHlwZXMg
eW91IHdhbnQuIElmIHlvdQorcHV0IHRoZSBhYm92ZSBjb2RlIGluIGEgaGVhZGVyIGZpbGUsIHlv
dSBjYW4gYCNpbmNsdWRlYCBpdCBpbiBtdWx0aXBsZSBDKysKK3NvdXJjZSBmaWxlcyBhbmQgaW5z
dGFudGlhdGUgaXQgbXVsdGlwbGUgdGltZXMuCisKK2BgYGMrKwordHlwZWRlZiA6OnRlc3Rpbmc6
OlR5cGVzPGNoYXIsIGludCwgdW5zaWduZWQgaW50PiBNeVR5cGVzOworSU5TVEFOVElBVEVfVFlQ
RURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMpOworYGBgCisKK1RvIGRpc3Rpbmd1
aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4sIHRoZSBmaXJzdCBhcmd1bWVu
dCB0byB0aGUKK2BJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUGAgbWFjcm8gaXMgYSBwcmVm
aXggdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZQorYWN0dWFsIHRlc3QgY2FzZSBuYW1lLiBSZW1l
bWJlciB0byBwaWNrIHVuaXF1ZSBwcmVmaXhlcyBmb3IgZGlmZmVyZW50IGluc3RhbmNlcy4KKwor
SW4gdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGUgdHlwZSBsaXN0IGNvbnRhaW5zIG9ubHkgb25l
IHR5cGUsIHlvdSBjYW4gd3JpdGUKK3RoYXQgdHlwZSBkaXJlY3RseSB3aXRob3V0IGA6OnRlc3Rp
bmc6OlR5cGVzPC4uLj5gLCBsaWtlIHRoaXM6CisKK2BgYGMrKworSU5TVEFOVElBVEVfVFlQRURf
VEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIGludCk7CitgYGAKKworWW91IGNhbiBzZWUgYHNhbXBs
ZTZfdW5pdHRlc3QuY2NgIGZvciBhIGNvbXBsZXRlIGV4YW1wbGUuCisKKyoqQXZhaWxhYmlsaXR5
Kio6IExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYworCisj
IyBUZXN0aW5nIFByaXZhdGUgQ29kZQorCitJZiB5b3UgY2hhbmdlIHlvdXIgc29mdHdhcmUncyBp
bnRlcm5hbCBpbXBsZW1lbnRhdGlvbiwgeW91ciB0ZXN0cyBzaG91bGQgbm90CiticmVhayBhcyBs
b25nIGFzIHRoZSBjaGFuZ2UgaXMgbm90IG9ic2VydmFibGUgYnkgdXNlcnMuIFRoZXJlZm9yZSwg
KipwZXIgdGhlCitibGFjay1ib3ggdGVzdGluZyBwcmluY2lwbGUsIG1vc3Qgb2YgdGhlIHRpbWUg
eW91IHNob3VsZCB0ZXN0IHlvdXIgY29kZSB0aHJvdWdoCitpdHMgcHVibGljIGludGVyZmFjZXMu
KioKKworKipJZiB5b3Ugc3RpbGwgZmluZCB5b3Vyc2VsZiBuZWVkaW5nIHRvIHRlc3QgaW50ZXJu
YWwgaW1wbGVtZW50YXRpb24gY29kZSwKK2NvbnNpZGVyIGlmIHRoZXJlJ3MgYSBiZXR0ZXIgZGVz
aWduLioqIFRoZSBkZXNpcmUgdG8gdGVzdCBpbnRlcm5hbAoraW1wbGVtZW50YXRpb24gaXMgb2Z0
ZW4gYSBzaWduIHRoYXQgdGhlIGNsYXNzIGlzIGRvaW5nIHRvbyBtdWNoLiBDb25zaWRlcgorZXh0
cmFjdGluZyBhbiBpbXBsZW1lbnRhdGlvbiBjbGFzcywgYW5kIHRlc3RpbmcgaXQuIFRoZW4gdXNl
IHRoYXQgaW1wbGVtZW50YXRpb24KK2NsYXNzIGluIHRoZSBvcmlnaW5hbCBjbGFzcy4KKworSWYg
eW91IGFic29sdXRlbHkgaGF2ZSB0byB0ZXN0IG5vbi1wdWJsaWMgaW50ZXJmYWNlIGNvZGUgdGhv
dWdoLCB5b3UgY2FuLiBUaGVyZQorYXJlIHR3byBjYXNlcyB0byBjb25zaWRlcjoKKworKiAgIFN0
YXRpYyBmdW5jdGlvbnMgKCAqbm90KiB0aGUgc2FtZSBhcyBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9u
cyEpIG9yIHVubmFtZWQKKyAgICBuYW1lc3BhY2VzLCBhbmQKKyogICBQcml2YXRlIG9yIHByb3Rl
Y3RlZCBjbGFzcyBtZW1iZXJzCisKK1RvIHRlc3QgdGhlbSwgd2UgdXNlIHRoZSBmb2xsb3dpbmcg
c3BlY2lhbCB0ZWNobmlxdWVzOgorCisqICAgQm90aCBzdGF0aWMgZnVuY3Rpb25zIGFuZCBkZWZp
bml0aW9ucy9kZWNsYXJhdGlvbnMgaW4gYW4gdW5uYW1lZCBuYW1lc3BhY2UKKyAgICBhcmUgb25s
eSB2aXNpYmxlIHdpdGhpbiB0aGUgc2FtZSB0cmFuc2xhdGlvbiB1bml0LiBUbyB0ZXN0IHRoZW0s
IHlvdSBjYW4KKyAgICBgI2luY2x1ZGVgIHRoZSBlbnRpcmUgYC5jY2AgZmlsZSBiZWluZyB0ZXN0
ZWQgaW4geW91ciBgKl90ZXN0LmNjYCBmaWxlLgorICAgIChpbmNsdWRpbmcgYC5jY2AgZmlsZXMg
aXMgbm90IGEgZ29vZCB3YXkgdG8gcmV1c2UgY29kZSAtIHlvdSBzaG91bGQgbm90IGRvCisgICAg
dGhpcyBpbiBwcm9kdWN0aW9uIGNvZGUhKQorCisgICAgSG93ZXZlciwgYSBiZXR0ZXIgYXBwcm9h
Y2ggaXMgdG8gbW92ZSB0aGUgcHJpdmF0ZSBjb2RlIGludG8gdGhlCisgICAgYGZvbzo6aW50ZXJu
YWxgIG5hbWVzcGFjZSwgd2hlcmUgYGZvb2AgaXMgdGhlIG5hbWVzcGFjZSB5b3VyIHByb2plY3QK
KyAgICBub3JtYWxseSB1c2VzLCBhbmQgcHV0IHRoZSBwcml2YXRlIGRlY2xhcmF0aW9ucyBpbiBh
IGAqLWludGVybmFsLmhgIGZpbGUuCisgICAgWW91ciBwcm9kdWN0aW9uIGAuY2NgIGZpbGVzIGFu
ZCB5b3VyIHRlc3RzIGFyZSBhbGxvd2VkIHRvIGluY2x1ZGUgdGhpcworICAgIGludGVybmFsIGhl
YWRlciwgYnV0IHlvdXIgY2xpZW50cyBhcmUgbm90LiBUaGlzIHdheSwgeW91IGNhbiBmdWxseSB0
ZXN0IHlvdXIKKyAgICBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiB3aXRob3V0IGxlYWtpbmcgaXQg
dG8geW91ciBjbGllbnRzLgorCisqICAgUHJpdmF0ZSBjbGFzcyBtZW1iZXJzIGFyZSBvbmx5IGFj
Y2Vzc2libGUgZnJvbSB3aXRoaW4gdGhlIGNsYXNzIG9yIGJ5CisgICAgZnJpZW5kcy4gVG8gYWNj
ZXNzIGEgY2xhc3MnIHByaXZhdGUgbWVtYmVycywgeW91IGNhbiBkZWNsYXJlIHlvdXIgdGVzdAor
ICAgIGZpeHR1cmUgYXMgYSBmcmllbmQgdG8gdGhlIGNsYXNzIGFuZCBkZWZpbmUgYWNjZXNzb3Jz
IGluIHlvdXIgZml4dHVyZS4gVGVzdHMKKyAgICB1c2luZyB0aGUgZml4dHVyZSBjYW4gdGhlbiBh
Y2Nlc3MgdGhlIHByaXZhdGUgbWVtYmVycyBvZiB5b3VyIHByb2R1Y3Rpb24KKyAgICBjbGFzcyB2
aWEgdGhlIGFjY2Vzc29ycyBpbiB0aGUgZml4dHVyZS4gTm90ZSB0aGF0IGV2ZW4gdGhvdWdoIHlv
dXIgZml4dHVyZQorICAgIGlzIGEgZnJpZW5kIHRvIHlvdXIgcHJvZHVjdGlvbiBjbGFzcywgeW91
ciB0ZXN0cyBhcmUgbm90IGF1dG9tYXRpY2FsbHkKKyAgICBmcmllbmRzIHRvIGl0LCBhcyB0aGV5
IGFyZSB0ZWNobmljYWxseSBkZWZpbmVkIGluIHN1Yi1jbGFzc2VzIG9mIHRoZQorICAgIGZpeHR1
cmUuCisKKyAgICBBbm90aGVyIHdheSB0byB0ZXN0IHByaXZhdGUgbWVtYmVycyBpcyB0byByZWZh
Y3RvciB0aGVtIGludG8gYW4KKyAgICBpbXBsZW1lbnRhdGlvbiBjbGFzcywgd2hpY2ggaXMgdGhl
biBkZWNsYXJlZCBpbiBhIGAqLWludGVybmFsLmhgIGZpbGUuIFlvdXIKKyAgICBjbGllbnRzIGFy
ZW4ndCBhbGxvd2VkIHRvIGluY2x1ZGUgdGhpcyBoZWFkZXIgYnV0IHlvdXIgdGVzdHMgY2FuLiBT
dWNoIGlzCisgICAgY2FsbGVkIHRoZQorICAgIFtQaW1wbF0oaHR0cHM6Ly93d3cuZ2FtZWRldi5u
ZXQvYXJ0aWNsZXMvcHJvZ3JhbW1pbmcvZ2VuZXJhbC1hbmQtZ2FtZXBsYXktcHJvZ3JhbW1pbmcv
dGhlLWMtcGltcGwtcjE3OTQvKQorICAgIChQcml2YXRlIEltcGxlbWVudGF0aW9uKSBpZGlvbS4K
KworICAgIE9yLCB5b3UgY2FuIGRlY2xhcmUgYW4gaW5kaXZpZHVhbCB0ZXN0IGFzIGEgZnJpZW5k
IG9mIHlvdXIgY2xhc3MgYnkgYWRkaW5nCisgICAgdGhpcyBsaW5lIGluIHRoZSBjbGFzcyBib2R5
OgorCisgICAgYGBgYysrCisgICAgICAgIEZSSUVORF9URVNUKFRlc3RDYXNlTmFtZSwgVGVzdE5h
bWUpOworICAgIGBgYAorCisgICAgRm9yIGV4YW1wbGUsCisKKyAgICBgYGBjKysKKyAgICAvLyBm
b28uaAorCisgICAgI2luY2x1ZGUgImd0ZXN0L2d0ZXN0X3Byb2QuaCIKKworICAgIGNsYXNzIEZv
byB7CisgICAgICAuLi4KKyAgICBwcml2YXRlOgorICAgICAgRlJJRU5EX1RFU1QoRm9vVGVzdCwg
QmFyUmV0dXJuc1plcm9Pbk51bGwpOworCisgICAgICBpbnQgQmFyKHZvaWQqIHgpOworICAgIH07
CisKKyAgICAvLyBmb29fdGVzdC5jYworICAgIC4uLgorICAgIFRFU1QoRm9vVGVzdCwgQmFyUmV0
dXJuc1plcm9Pbk51bGwpIHsKKyAgICAgIEZvbyBmb287CisgICAgICBFWFBFQ1RfRVEoMCwgZm9v
LkJhcihOVUxMKSk7ICAvLyBVc2VzIEZvbydzIHByaXZhdGUgbWVtYmVyIEJhcigpLgorICAgIH0K
KyAgICBgYGAKKworICAgIFBheSBzcGVjaWFsIGF0dGVudGlvbiB3aGVuIHlvdXIgY2xhc3MgaXMg
ZGVmaW5lZCBpbiBhIG5hbWVzcGFjZSwgYXMgeW91CisgICAgc2hvdWxkIGRlZmluZSB5b3VyIHRl
c3QgZml4dHVyZXMgYW5kIHRlc3RzIGluIHRoZSBzYW1lIG5hbWVzcGFjZSBpZiB5b3Ugd2FudAor
ICAgIHRoZW0gdG8gYmUgZnJpZW5kcyBvZiB5b3VyIGNsYXNzLiBGb3IgZXhhbXBsZSwgaWYgdGhl
IGNvZGUgdG8gYmUgdGVzdGVkCisgICAgbG9va3MgbGlrZToKKworICAgIGBgYGMrKworICAgIG5h
bWVzcGFjZSBteV9uYW1lc3BhY2UgeworCisgICAgY2xhc3MgRm9vIHsKKyAgICAgIGZyaWVuZCBj
bGFzcyBGb29UZXN0OworICAgICAgRlJJRU5EX1RFU1QoRm9vVGVzdCwgQmFyKTsKKyAgICAgIEZS
SUVORF9URVNUKEZvb1Rlc3QsIEJheik7CisgICAgICAuLi4gZGVmaW5pdGlvbiBvZiB0aGUgY2xh
c3MgRm9vIC4uLgorICAgIH07CisKKyAgICB9ICAvLyBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlCisg
ICAgYGBgCisKKyAgICBZb3VyIHRlc3QgY29kZSBzaG91bGQgYmUgc29tZXRoaW5nIGxpa2U6CisK
KyAgICBgYGBjKysKKyAgICBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlIHsKKworICAgIGNsYXNzIEZv
b1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyAgICAgcHJvdGVjdGVkOgorICAgICAg
Li4uCisgICAgfTsKKworICAgIFRFU1RfRihGb29UZXN0LCBCYXIpIHsgLi4uIH0KKyAgICBURVNU
X0YoRm9vVGVzdCwgQmF6KSB7IC4uLiB9CisKKyAgICB9ICAvLyBuYW1lc3BhY2UgbXlfbmFtZXNw
YWNlCisgICAgYGBgCisKKworIyMgIkNhdGNoaW5nIiBGYWlsdXJlcworCitJZiB5b3UgYXJlIGJ1
aWxkaW5nIGEgdGVzdGluZyB1dGlsaXR5IG9uIHRvcCBvZiBnb29nbGV0ZXN0LCB5b3UnbGwgd2Fu
dCB0byB0ZXN0Cit5b3VyIHV0aWxpdHkuIFdoYXQgZnJhbWV3b3JrIHdvdWxkIHlvdSB1c2UgdG8g
dGVzdCBpdD8gZ29vZ2xldGVzdCwgb2YgY291cnNlLgorCitUaGUgY2hhbGxlbmdlIGlzIHRvIHZl
cmlmeSB0aGF0IHlvdXIgdGVzdGluZyB1dGlsaXR5IHJlcG9ydHMgZmFpbHVyZXMgY29ycmVjdGx5
LgorSW4gZnJhbWV3b3JrcyB0aGF0IHJlcG9ydCBhIGZhaWx1cmUgYnkgdGhyb3dpbmcgYW4gZXhj
ZXB0aW9uLCB5b3UgY291bGQgY2F0Y2gKK3RoZSBleGNlcHRpb24gYW5kIGFzc2VydCBvbiBpdC4g
QnV0IGdvb2dsZXRlc3QgZG9lc24ndCB1c2UgZXhjZXB0aW9ucywgc28gaG93IGRvCit3ZSB0ZXN0
IHRoYXQgYSBwaWVjZSBvZiBjb2RlIGdlbmVyYXRlcyBhbiBleHBlY3RlZCBmYWlsdXJlPworCitn
dW5pdC1zcGkuaCBjb250YWlucyBzb21lIGNvbnN0cnVjdHMgdG8gZG8gdGhpcy4gQWZ0ZXIgI2lu
Y2x1ZGluZyB0aGlzIGhlYWRlciwKK3lvdSBjYW4gdXNlCisKK2BgYGMrKworICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShzdGF0ZW1lbnQsIHN1YnN0cmluZyk7CitgYGAKKwordG8gYXNzZXJ0IHRoYXQg
YHN0YXRlbWVudGAgZ2VuZXJhdGVzIGEgZmF0YWwgKGUuZy4gYEFTU0VSVF8qYCkgZmFpbHVyZSBp
biB0aGUKK2N1cnJlbnQgdGhyZWFkIHdob3NlIG1lc3NhZ2UgY29udGFpbnMgdGhlIGdpdmVuIGBz
dWJzdHJpbmdgLCBvciB1c2UKKworYGBgYysrCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHN0
YXRlbWVudCwgc3Vic3RyaW5nKTsKK2BgYAorCitpZiB5b3UgYXJlIGV4cGVjdGluZyBhIG5vbi1m
YXRhbCAoZS5nLiBgRVhQRUNUXypgKSBmYWlsdXJlLgorCitPbmx5IGZhaWx1cmVzIGluIHRoZSBj
dXJyZW50IHRocmVhZCBhcmUgY2hlY2tlZCB0byBkZXRlcm1pbmUgdGhlIHJlc3VsdCBvZiB0aGlz
Cit0eXBlIG9mIGV4cGVjdGF0aW9ucy4gSWYgYHN0YXRlbWVudGAgY3JlYXRlcyBuZXcgdGhyZWFk
cywgZmFpbHVyZXMgaW4gdGhlc2UKK3RocmVhZHMgYXJlIGFsc28gaWdub3JlZC4gSWYgeW91IHdh
bnQgdG8gY2F0Y2ggZmFpbHVyZXMgaW4gb3RoZXIgdGhyZWFkcyBhcword2VsbCwgdXNlIG9uZSBv
ZiB0aGUgZm9sbG93aW5nIG1hY3JvcyBpbnN0ZWFkOgorCitgYGBjKysKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoc3RhdGVtZW50LCBzdWJzdHJpbmcpOworICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhzdGF0ZW1lbnQsIHN1YnN0cmluZyk7Citg
YGAKKworTk9URTogQXNzZXJ0aW9ucyBmcm9tIG11bHRpcGxlIHRocmVhZHMgYXJlIGN1cnJlbnRs
eSBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MuCisKK0ZvciB0ZWNobmljYWwgcmVhc29ucywgdGhl
cmUgYXJlIHNvbWUgY2F2ZWF0czoKKworMS4gIFlvdSBjYW5ub3Qgc3RyZWFtIGEgZmFpbHVyZSBt
ZXNzYWdlIHRvIGVpdGhlciBtYWNyby4KKworMS4gIGBzdGF0ZW1lbnRgIGluIGBFWFBFQ1RfRkFU
QUxfRkFJTFVSRXtfT05fQUxMX1RIUkVBRFN9KClgIGNhbm5vdCByZWZlcmVuY2UKKyAgICBsb2Nh
bCBub24tc3RhdGljIHZhcmlhYmxlcyBvciBub24tc3RhdGljIG1lbWJlcnMgb2YgYHRoaXNgIG9i
amVjdC4KKworMS4gIGBzdGF0ZW1lbnRgIGluIGBFWFBFQ1RfRkFUQUxfRkFJTFVSRXtfT05fQUxM
X1RIUkVBRFN9KCkoKWAgY2Fubm90IHJldHVybiBhCisgICAgdmFsdWUuCisKKworIyMgR2V0dGlu
ZyB0aGUgQ3VycmVudCBUZXN0J3MgTmFtZQorCitTb21ldGltZXMgYSBmdW5jdGlvbiBtYXkgbmVl
ZCB0byBrbm93IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LgorRm9yIGV4
YW1wbGUsIHlvdSBtYXkgYmUgdXNpbmcgdGhlIGBTZXRVcCgpYCBtZXRob2Qgb2YgeW91ciB0ZXN0
IGZpeHR1cmUgdG8gc2V0Cit0aGUgZ29sZGVuIGZpbGUgbmFtZSBiYXNlZCBvbiB3aGljaCB0ZXN0
IGlzIHJ1bm5pbmcuIFRoZSBgOjp0ZXN0aW5nOjpUZXN0SW5mb2AKK2NsYXNzIGhhcyB0aGlzIGlu
Zm9ybWF0aW9uOgorCitgYGBjKysKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworY2xhc3MgVGVzdElu
Zm8geworIHB1YmxpYzoKKyAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIG5hbWUgYW5kIHRoZSB0
ZXN0IG5hbWUsIHJlc3BlY3RpdmVseS4KKyAgLy8KKyAgLy8gRG8gTk9UIGRlbGV0ZSBvciBmcmVl
IHRoZSByZXR1cm4gdmFsdWUgLSBpdCdzIG1hbmFnZWQgYnkgdGhlCisgIC8vIFRlc3RJbmZvIGNs
YXNzLgorICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0OworICBjb25zdCBjaGFy
KiBuYW1lKCkgY29uc3Q7Cit9OworCit9CitgYGAKKworVG8gb2J0YWluIGEgYFRlc3RJbmZvYCBv
YmplY3QgZm9yIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LCBjYWxsCitgY3VycmVudF90ZXN0
X2luZm8oKWAgb24gdGhlIGBVbml0VGVzdGAgc2luZ2xldG9uIG9iamVjdDoKKworYGBgYysrCisg
IC8vIEdldHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRlc3QuCisg
IC8vIERvIE5PVCBkZWxldGUgdGhlIHJldHVybmVkIG9iamVjdCAtIGl0J3MgbWFuYWdlZCBieSB0
aGUgVW5pdFRlc3QgY2xhc3MuCisgIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRl
c3RfaW5mbyA9CisgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVu
dF90ZXN0X2luZm8oKTsKKworCisKKyAgcHJpbnRmKCJXZSBhcmUgaW4gdGVzdCAlcyBvZiB0ZXN0
IGNhc2UgJXMuXG4iLAorICAgICAgICAgdGVzdF9pbmZvLT5uYW1lKCksCisgICAgICAgICB0ZXN0
X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOworYGBgCisKK2BjdXJyZW50X3Rlc3RfaW5mbygpYCBy
ZXR1cm5zIGEgbnVsbCBwb2ludGVyIGlmIG5vIHRlc3QgaXMgcnVubmluZy4gSW4KK3BhcnRpY3Vs
YXIsIHlvdSBjYW5ub3QgZmluZCB0aGUgdGVzdCBjYXNlIG5hbWUgaW4gYFRlc3RDYXNlU2V0VXAo
KWAsCitgVGVzdENhc2VUZWFyRG93bigpYCAod2hlcmUgeW91IGtub3cgdGhlIHRlc3QgY2FzZSBu
YW1lIGltcGxpY2l0bHkpLCBvcgorZnVuY3Rpb25zIGNhbGxlZCBmcm9tIHRoZW0uCisKKyoqQXZh
aWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIEV4dGVuZGluZyBnb29nbGV0
ZXN0IGJ5IEhhbmRsaW5nIFRlc3QgRXZlbnRzCisKK2dvb2dsZXRlc3QgcHJvdmlkZXMgYW4gKipl
dmVudCBsaXN0ZW5lciBBUEkqKiB0byBsZXQgeW91IHJlY2VpdmUgbm90aWZpY2F0aW9ucworYWJv
dXQgdGhlIHByb2dyZXNzIG9mIGEgdGVzdCBwcm9ncmFtIGFuZCB0ZXN0IGZhaWx1cmVzLiBUaGUg
ZXZlbnRzIHlvdSBjYW4KK2xpc3RlbiB0byBpbmNsdWRlIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRo
ZSB0ZXN0IHByb2dyYW0sIGEgdGVzdCBjYXNlLCBvciBhIHRlc3QKK21ldGhvZCwgYW1vbmcgb3Ro
ZXJzLiBZb3UgbWF5IHVzZSB0aGlzIEFQSSB0byBhdWdtZW50IG9yIHJlcGxhY2UgdGhlIHN0YW5k
YXJkCitjb25zb2xlIG91dHB1dCwgcmVwbGFjZSB0aGUgWE1MIG91dHB1dCwgb3IgcHJvdmlkZSBh
IGNvbXBsZXRlbHkgZGlmZmVyZW50IGZvcm0KK29mIG91dHB1dCwgc3VjaCBhcyBhIEdVSSBvciBh
IGRhdGFiYXNlLiBZb3UgY2FuIGFsc28gdXNlIHRlc3QgZXZlbnRzIGFzCitjaGVja3BvaW50cyB0
byBpbXBsZW1lbnQgYSByZXNvdXJjZSBsZWFrIGNoZWNrZXIsIGZvciBleGFtcGxlLgorCisqKkF2
YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgRGVmaW5pbmcgRXZlbnQg
TGlzdGVuZXJzCisKK1RvIGRlZmluZSBhIGV2ZW50IGxpc3RlbmVyLCB5b3Ugc3ViY2xhc3MgZWl0
aGVyIHRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyIG9yCit0ZXN0aW5nOjpFbXB0eVRlc3RFdmVu
dExpc3RlbmVyIFRoZSBmb3JtZXIgaXMgYW4gKGFic3RyYWN0KSBpbnRlcmZhY2UsIHdoZXJlCisq
ZWFjaCBwdXJlIHZpcnR1YWwgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIHRvIGhhbmRsZSBhIHRl
c3QgZXZlbnQqIChGb3IKK2V4YW1wbGUsIHdoZW4gYSB0ZXN0IHN0YXJ0cywgdGhlIGBPblRlc3RT
dGFydCgpYCBtZXRob2Qgd2lsbCBiZSBjYWxsZWQuKS4gVGhlCitsYXR0ZXIgcHJvdmlkZXMgYW4g
ZW1wdHkgaW1wbGVtZW50YXRpb24gb2YgYWxsIG1ldGhvZHMgaW4gdGhlIGludGVyZmFjZSwgc3Vj
aAordGhhdCBhIHN1YmNsYXNzIG9ubHkgbmVlZHMgdG8gb3ZlcnJpZGUgdGhlIG1ldGhvZHMgaXQg
Y2FyZXMgYWJvdXQuCisKK1doZW4gYW4gZXZlbnQgaXMgZmlyZWQsIGl0cyBjb250ZXh0IGlzIHBh
c3NlZCB0byB0aGUgaGFuZGxlciBmdW5jdGlvbiBhcyBhbgorYXJndW1lbnQuIFRoZSBmb2xsb3dp
bmcgYXJndW1lbnQgdHlwZXMgYXJlIHVzZWQ6CisKKyogICBVbml0VGVzdCByZWZsZWN0cyB0aGUg
c3RhdGUgb2YgdGhlIGVudGlyZSB0ZXN0IHByb2dyYW0sCisqICAgVGVzdENhc2UgaGFzIGluZm9y
bWF0aW9uIGFib3V0IGEgdGVzdCBjYXNlLCB3aGljaCBjYW4gY29udGFpbiBvbmUgb3IgbW9yZQor
ICAgIHRlc3RzLAorKiAgIFRlc3RJbmZvIGNvbnRhaW5zIHRoZSBzdGF0ZSBvZiBhIHRlc3QsIGFu
ZAorKiAgIFRlc3RQYXJ0UmVzdWx0IHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBhIHRlc3QgYXNz
ZXJ0aW9uLgorCitBbiBldmVudCBoYW5kbGVyIGZ1bmN0aW9uIGNhbiBleGFtaW5lIHRoZSBhcmd1
bWVudCBpdCByZWNlaXZlcyB0byBmaW5kIG91dAoraW50ZXJlc3RpbmcgaW5mb3JtYXRpb24gYWJv
dXQgdGhlIGV2ZW50IGFuZCB0aGUgdGVzdCBwcm9ncmFtJ3Mgc3RhdGUuCisKK0hlcmUncyBhbiBl
eGFtcGxlOgorCitgYGBjKysKKyAgY2xhc3MgTWluaW1hbGlzdFByaW50ZXIgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKKyAgICAvLyBDYWxsZWQgYmVmb3JlIGEg
dGVzdCBzdGFydHMuCisgICAgdmlydHVhbCB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IDo6dGVzdGlu
Zzo6VGVzdEluZm8mIHRlc3RfaW5mbykgeworICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBz
dGFydGluZy5cbiIsCisgICAgICAgICAgICAgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRl
c3RfaW5mby5uYW1lKCkpOworICAgIH0KKworICAgIC8vIENhbGxlZCBhZnRlciBhIGZhaWxlZCBh
c3NlcnRpb24gb3IgYSBTVUNDRVNTKCkuCisgICAgdmlydHVhbCB2b2lkIE9uVGVzdFBhcnRSZXN1
bHQoY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgewor
ICAgICAgcHJpbnRmKCIlcyBpbiAlczolZFxuJXNcbiIsCisgICAgICAgICAgICAgdGVzdF9wYXJ0
X3Jlc3VsdC5mYWlsZWQoKSA/ICIqKiogRmFpbHVyZSIgOiAiU3VjY2VzcyIsCisgICAgICAgICAg
ICAgdGVzdF9wYXJ0X3Jlc3VsdC5maWxlX25hbWUoKSwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRf
cmVzdWx0LmxpbmVfbnVtYmVyKCksCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5zdW1t
YXJ5KCkpOworICAgIH0KKworICAgIC8vIENhbGxlZCBhZnRlciBhIHRlc3QgZW5kcy4KKyAgICB2
aXJ0dWFsIHZvaWQgT25UZXN0RW5kKGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8mIHRlc3RfaW5m
bykgeworICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBlbmRpbmcuXG4iLAorICAgICAgICAg
ICAgIHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgICB9
CisgIH07CitgYGAKKworIyMjIFVzaW5nIEV2ZW50IExpc3RlbmVycworCitUbyB1c2UgdGhlIGV2
ZW50IGxpc3RlbmVyIHlvdSBoYXZlIGRlZmluZWQsIGFkZCBhbiBpbnN0YW5jZSBvZiBpdCB0byB0
aGUKK2dvb2dsZXRlc3QgZXZlbnQgbGlzdGVuZXIgbGlzdCAocmVwcmVzZW50ZWQgYnkgY2xhc3Mg
VGVzdEV2ZW50TGlzdGVuZXJzIC0gbm90ZQordGhlICJzIiBhdCB0aGUgZW5kIG9mIHRoZSBuYW1l
KSBpbiB5b3VyIGBtYWluKClgIGZ1bmN0aW9uLCBiZWZvcmUgY2FsbGluZworYFJVTl9BTExfVEVT
VFMoKWA6CisKK2BgYGMrKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIDo6
dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICAvLyBHZXRzIGhvbGQgb2Yg
dGhlIGV2ZW50IGxpc3RlbmVyIGxpc3QuCisgIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJz
JiBsaXN0ZW5lcnMgPQorICAgICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgp
LT5saXN0ZW5lcnMoKTsKKyAgLy8gQWRkcyBhIGxpc3RlbmVyIHRvIHRoZSBlbmQuICBnb29nbGV0
ZXN0IHRha2VzIHRoZSBvd25lcnNoaXAuCisgIGxpc3RlbmVycy5BcHBlbmQobmV3IE1pbmltYWxp
c3RQcmludGVyKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAorCitUaGVyZSdz
IG9ubHkgb25lIHByb2JsZW06IHRoZSBkZWZhdWx0IHRlc3QgcmVzdWx0IHByaW50ZXIgaXMgc3Rp
bGwgaW4gZWZmZWN0LCBzbworaXRzIG91dHB1dCB3aWxsIG1pbmdsZSB3aXRoIHRoZSBvdXRwdXQg
ZnJvbSB5b3VyIG1pbmltYWxpc3QgcHJpbnRlci4gVG8gc3VwcHJlc3MKK3RoZSBkZWZhdWx0IHBy
aW50ZXIsIGp1c3QgcmVsZWFzZSBpdCBmcm9tIHRoZSBldmVudCBsaXN0ZW5lciBsaXN0IGFuZCBk
ZWxldGUgaXQuCitZb3UgY2FuIGRvIHNvIGJ5IGFkZGluZyBvbmUgbGluZToKKworYGBgYysrCisg
IC4uLgorICBkZWxldGUgbGlzdGVuZXJzLlJlbGVhc2UobGlzdGVuZXJzLmRlZmF1bHRfcmVzdWx0
X3ByaW50ZXIoKSk7CisgIGxpc3RlbmVycy5BcHBlbmQobmV3IE1pbmltYWxpc3RQcmludGVyKTsK
KyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK2BgYAorCitOb3csIHNpdCBiYWNrIGFuZCBlbmpv
eSBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IG91dHB1dCBmcm9tIHlvdXIgdGVzdHMuIEZvciBtb3Jl
CitkZXRhaWxzLCB5b3UgY2FuIHJlYWQgdGhpcyBzYW1wbGU5X3VuaXR0ZXN0LmNjCisKK1lvdSBt
YXkgYXBwZW5kIG1vcmUgdGhhbiBvbmUgbGlzdGVuZXIgdG8gdGhlIGxpc3QuIFdoZW4gYW4gYE9u
KlN0YXJ0KClgIG9yCitgT25UZXN0UGFydFJlc3VsdCgpYCBldmVudCBpcyBmaXJlZCwgdGhlIGxp
c3RlbmVycyB3aWxsIHJlY2VpdmUgaXQgaW4gdGhlIG9yZGVyCit0aGV5IGFwcGVhciBpbiB0aGUg
bGlzdCAoc2luY2UgbmV3IGxpc3RlbmVycyBhcmUgYWRkZWQgdG8gdGhlIGVuZCBvZiB0aGUgbGlz
dCwKK3RoZSBkZWZhdWx0IHRleHQgcHJpbnRlciBhbmQgdGhlIGRlZmF1bHQgWE1MIGdlbmVyYXRv
ciB3aWxsIHJlY2VpdmUgdGhlIGV2ZW50CitmaXJzdCkuIEFuIGBPbipFbmQoKWAgZXZlbnQgd2ls
bCBiZSByZWNlaXZlZCBieSB0aGUgbGlzdGVuZXJzIGluIHRoZSAqcmV2ZXJzZSoKK29yZGVyLiBU
aGlzIGFsbG93cyBvdXRwdXQgYnkgbGlzdGVuZXJzIGFkZGVkIGxhdGVyIHRvIGJlIGZyYW1lZCBi
eSBvdXRwdXQgZnJvbQorbGlzdGVuZXJzIGFkZGVkIGVhcmxpZXIuCisKKyMjIyBHZW5lcmF0aW5n
IEZhaWx1cmVzIGluIExpc3RlbmVycworCitZb3UgbWF5IHVzZSBmYWlsdXJlLXJhaXNpbmcgbWFj
cm9zIChgRVhQRUNUXyooKWAsIGBBU1NFUlRfKigpYCwgYEZBSUwoKWAsIGV0YykKK3doZW4gcHJv
Y2Vzc2luZyBhbiBldmVudC4gVGhlcmUgYXJlIHNvbWUgcmVzdHJpY3Rpb25zOgorCisxLiAgWW91
IGNhbm5vdCBnZW5lcmF0ZSBhbnkgZmFpbHVyZSBpbiBgT25UZXN0UGFydFJlc3VsdCgpYCAob3Ro
ZXJ3aXNlIGl0IHdpbGwKKyAgICBjYXVzZSBgT25UZXN0UGFydFJlc3VsdCgpYCB0byBiZSBjYWxs
ZWQgcmVjdXJzaXZlbHkpLgorMS4gIEEgbGlzdGVuZXIgdGhhdCBoYW5kbGVzIGBPblRlc3RQYXJ0
UmVzdWx0KClgIGlzIG5vdCBhbGxvd2VkIHRvIGdlbmVyYXRlIGFueQorICAgIGZhaWx1cmUuCisK
K1doZW4geW91IGFkZCBsaXN0ZW5lcnMgdG8gdGhlIGxpc3RlbmVyIGxpc3QsIHlvdSBzaG91bGQg
cHV0IGxpc3RlbmVycyB0aGF0CitoYW5kbGUgYE9uVGVzdFBhcnRSZXN1bHQoKWAgKmJlZm9yZSog
bGlzdGVuZXJzIHRoYXQgY2FuIGdlbmVyYXRlIGZhaWx1cmVzLiBUaGlzCitlbnN1cmVzIHRoYXQg
ZmFpbHVyZXMgZ2VuZXJhdGVkIGJ5IHRoZSBsYXR0ZXIgYXJlIGF0dHJpYnV0ZWQgdG8gdGhlIHJp
Z2h0IHRlc3QKK2J5IHRoZSBmb3JtZXIuCisKK1dlIGhhdmUgYSBzYW1wbGUgb2YgZmFpbHVyZS1y
YWlzaW5nIGxpc3RlbmVyIHNhbXBsZTEwX3VuaXR0ZXN0LmNjCisKKyMjIFJ1bm5pbmcgVGVzdCBQ
cm9ncmFtczogQWR2YW5jZWQgT3B0aW9ucworCitnb29nbGV0ZXN0IHRlc3QgcHJvZ3JhbXMgYXJl
IG9yZGluYXJ5IGV4ZWN1dGFibGVzLiBPbmNlIGJ1aWx0LCB5b3UgY2FuIHJ1biB0aGVtCitkaXJl
Y3RseSBhbmQgYWZmZWN0IHRoZWlyIGJlaGF2aW9yIHZpYSB0aGUgZm9sbG93aW5nIGVudmlyb25t
ZW50IHZhcmlhYmxlcworYW5kL29yIGNvbW1hbmQgbGluZSBmbGFncy4gRm9yIHRoZSBmbGFncyB0
byB3b3JrLCB5b3VyIHByb2dyYW1zIG11c3QgY2FsbAorYDo6dGVzdGluZzo6SW5pdEdvb2dsZVRl
c3QoKWAgYmVmb3JlIGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWAuCisKK1RvIHNlZSBhIGxpc3Qg
b2Ygc3VwcG9ydGVkIGZsYWdzIGFuZCB0aGVpciB1c2FnZSwgcGxlYXNlIHJ1biB5b3VyIHRlc3Qg
cHJvZ3JhbQord2l0aCB0aGUgYC0taGVscGAgZmxhZy4gWW91IGNhbiBhbHNvIHVzZSBgLWhgLCBg
LT9gLCBvciBgLz9gIGZvciBzaG9ydC4KKworSWYgYW4gb3B0aW9uIGlzIHNwZWNpZmllZCBib3Ro
IGJ5IGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGFuZCBieSBhIGZsYWcsIHRoZQorbGF0dGVyIHRh
a2VzIHByZWNlZGVuY2UuCisKKyMjIyBTZWxlY3RpbmcgVGVzdHMKKworIyMjIyBMaXN0aW5nIFRl
c3QgTmFtZXMKKworU29tZXRpbWVzIGl0IGlzIG5lY2Vzc2FyeSB0byBsaXN0IHRoZSBhdmFpbGFi
bGUgdGVzdHMgaW4gYSBwcm9ncmFtIGJlZm9yZQorcnVubmluZyB0aGVtIHNvIHRoYXQgYSBmaWx0
ZXIgbWF5IGJlIGFwcGxpZWQgaWYgbmVlZGVkLiBJbmNsdWRpbmcgdGhlIGZsYWcKK2AtLWd0ZXN0
X2xpc3RfdGVzdHNgIG92ZXJyaWRlcyBhbGwgb3RoZXIgZmxhZ3MgYW5kIGxpc3RzIHRlc3RzIGlu
IHRoZSBmb2xsb3dpbmcKK2Zvcm1hdDoKKworYGBgbm9uZQorVGVzdENhc2UxLgorICBUZXN0TmFt
ZTEKKyAgVGVzdE5hbWUyCitUZXN0Q2FzZTIuCisgIFRlc3ROYW1lCitgYGAKKworTm9uZSBvZiB0
aGUgdGVzdHMgbGlzdGVkIGFyZSBhY3R1YWxseSBydW4gaWYgdGhlIGZsYWcgaXMgcHJvdmlkZWQu
IFRoZXJlIGlzIG5vCitjb3JyZXNwb25kaW5nIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciB0aGlz
IGZsYWcuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyMg
UnVubmluZyBhIFN1YnNldCBvZiB0aGUgVGVzdHMKKworQnkgZGVmYXVsdCwgYSBnb29nbGV0ZXN0
IHByb2dyYW0gcnVucyBhbGwgdGVzdHMgdGhlIHVzZXIgaGFzIGRlZmluZWQuIFNvbWV0aW1lcywK
K3lvdSB3YW50IHRvIHJ1biBvbmx5IGEgc3Vic2V0IG9mIHRoZSB0ZXN0cyAoZS5nLiBmb3IgZGVi
dWdnaW5nIG9yIHF1aWNrbHkKK3ZlcmlmeWluZyBhIGNoYW5nZSkuIElmIHlvdSBzZXQgdGhlIGBH
VEVTVF9GSUxURVJgIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQorYC0tZ3Rlc3RfZmlsdGVy
YCBmbGFnIHRvIGEgZmlsdGVyIHN0cmluZywgZ29vZ2xldGVzdCB3aWxsIG9ubHkgcnVuIHRoZSB0
ZXN0cword2hvc2UgZnVsbCBuYW1lcyAoaW4gdGhlIGZvcm0gb2YgYFRlc3RDYXNlTmFtZS5UZXN0
TmFtZWApIG1hdGNoIHRoZSBmaWx0ZXIuCisKK1RoZSBmb3JtYXQgb2YgYSBmaWx0ZXIgaXMgYSAn
YDpgJy1zZXBhcmF0ZWQgbGlzdCBvZiB3aWxkY2FyZCBwYXR0ZXJucyAoY2FsbGVkCit0aGUgKnBv
c2l0aXZlIHBhdHRlcm5zKikgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhICdgLWAnIGFuZCBhbm90
aGVyCisnYDpgJy1zZXBhcmF0ZWQgcGF0dGVybiBsaXN0IChjYWxsZWQgdGhlICpuZWdhdGl2ZSBw
YXR0ZXJucyopLiBBIHRlc3QgbWF0Y2hlcwordGhlIGZpbHRlciBpZiBhbmQgb25seSBpZiBpdCBt
YXRjaGVzIGFueSBvZiB0aGUgcG9zaXRpdmUgcGF0dGVybnMgYnV0IGRvZXMgbm90CittYXRjaCBh
bnkgb2YgdGhlIG5lZ2F0aXZlIHBhdHRlcm5zLgorCitBIHBhdHRlcm4gbWF5IGNvbnRhaW4gYCcq
J2AgKG1hdGNoZXMgYW55IHN0cmluZykgb3IgYCc/J2AgKG1hdGNoZXMgYW55IHNpbmdsZQorY2hh
cmFjdGVyKS4gRm9yIGNvbnZlbmllbmNlLCB0aGUgZmlsdGVyCisKK2AnKi1OZWdhdGl2ZVBhdHRl
cm5zJ2AgY2FuIGJlIGFsc28gd3JpdHRlbiBhcyBgJy1OZWdhdGl2ZVBhdHRlcm5zJ2AuCisKK0Zv
ciBleGFtcGxlOgorCisqICAgYC4vZm9vX3Rlc3RgIEhhcyBubyBmbGFnLCBhbmQgdGh1cyBydW5z
IGFsbCBpdHMgdGVzdHMuCisqICAgYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9KmAgQWxzbyBy
dW5zIGV2ZXJ5dGhpbmcsIGR1ZSB0byB0aGUgc2luZ2xlCisgICAgbWF0Y2gtZXZlcnl0aGluZyBg
KmAgdmFsdWUuCisqICAgYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Rm9vVGVzdC4qYCBSdW5z
IGV2ZXJ5dGhpbmcgaW4gdGVzdCBjYXNlIGBGb29UZXN0YAorICAgIC4KKyogICBgLi9mb29fdGVz
dCAtLWd0ZXN0X2ZpbHRlcj0qTnVsbCo6KkNvbnN0cnVjdG9yKmAgUnVucyBhbnkgdGVzdCB3aG9z
ZSBmdWxsCisgICAgbmFtZSBjb250YWlucyBlaXRoZXIgYCJOdWxsImAgb3IgYCJDb25zdHJ1Y3Rv
ciJgIC4KKyogICBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj0tKkRlYXRoVGVzdC4qYCBSdW5z
IGFsbCBub24tZGVhdGggdGVzdHMuCisqICAgYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Rm9v
VGVzdC4qLUZvb1Rlc3QuQmFyYCBSdW5zIGV2ZXJ5dGhpbmcgaW4gdGVzdAorICAgIGNhc2UgYEZv
b1Rlc3RgIGV4Y2VwdCBgRm9vVGVzdC5CYXJgLgorKiAgIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmls
dGVyPUZvb1Rlc3QuKjpCYXJUZXN0LiotRm9vVGVzdC5CYXI6QmFyVGVzdC5Gb29gIFJ1bnMKKyAg
ICBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBgRm9vVGVzdGAgZXhjZXB0IGBGb29UZXN0LkJhcmAg
YW5kIGV2ZXJ5dGhpbmcgaW4KKyAgICB0ZXN0IGNhc2UgYEJhclRlc3RgIGV4Y2VwdCBgQmFyVGVz
dC5Gb29gLgorICAgIAorIyMjIyBUZW1wb3JhcmlseSBEaXNhYmxpbmcgVGVzdHMKKworSWYgeW91
IGhhdmUgYSBicm9rZW4gdGVzdCB0aGF0IHlvdSBjYW5ub3QgZml4IHJpZ2h0IGF3YXksIHlvdSBj
YW4gYWRkIHRoZQorYERJU0FCTEVEX2AgcHJlZml4IHRvIGl0cyBuYW1lLiBUaGlzIHdpbGwgZXhj
bHVkZSBpdCBmcm9tIGV4ZWN1dGlvbi4gVGhpcyBpcworYmV0dGVyIHRoYW4gY29tbWVudGluZyBv
dXQgdGhlIGNvZGUgb3IgdXNpbmcgYCNpZiAwYCwgYXMgZGlzYWJsZWQgdGVzdHMgYXJlCitzdGls
bCBjb21waWxlZCAoYW5kIHRodXMgd29uJ3Qgcm90KS4KKworSWYgeW91IG5lZWQgdG8gZGlzYWJs
ZSBhbGwgdGVzdHMgaW4gYSB0ZXN0IGNhc2UsIHlvdSBjYW4gZWl0aGVyIGFkZCBgRElTQUJMRURf
YAordG8gdGhlIGZyb250IG9mIHRoZSBuYW1lIG9mIGVhY2ggdGVzdCwgb3IgYWx0ZXJuYXRpdmVs
eSBhZGQgaXQgdG8gdGhlIGZyb250IG9mCit0aGUgdGVzdCBjYXNlIG5hbWUuCisKK0ZvciBleGFt
cGxlLCB0aGUgZm9sbG93aW5nIHRlc3RzIHdvbid0IGJlIHJ1biBieSBnb29nbGV0ZXN0LCBldmVu
IHRob3VnaCB0aGV5Cit3aWxsIHN0aWxsIGJlIGNvbXBpbGVkOgorCitgYGBjKysKKy8vIFRlc3Rz
IHRoYXQgRm9vIGRvZXMgQWJjLgorVEVTVChGb29UZXN0LCBESVNBQkxFRF9Eb2VzQWJjKSB7IC4u
LiB9CisKK2NsYXNzIERJU0FCTEVEX0JhclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsg
Li4uIH07CisKKy8vIFRlc3RzIHRoYXQgQmFyIGRvZXMgWHl6LgorVEVTVF9GKERJU0FCTEVEX0Jh
clRlc3QsIERvZXNYeXopIHsgLi4uIH0KK2BgYAorCitOT1RFOiBUaGlzIGZlYXR1cmUgc2hvdWxk
IG9ubHkgYmUgdXNlZCBmb3IgdGVtcG9yYXJ5IHBhaW4tcmVsaWVmLiBZb3Ugc3RpbGwgaGF2ZQor
dG8gZml4IHRoZSBkaXNhYmxlZCB0ZXN0cyBhdCBhIGxhdGVyIGRhdGUuIEFzIGEgcmVtaW5kZXIs
IGdvb2dsZXRlc3Qgd2lsbCBwcmludAorYSBiYW5uZXIgd2FybmluZyB5b3UgaWYgYSB0ZXN0IHBy
b2dyYW0gY29udGFpbnMgYW55IGRpc2FibGVkIHRlc3RzLgorCitUSVA6IFlvdSBjYW4gZWFzaWx5
IGNvdW50IHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgeW91IGhhdmUgdXNpbmcgYGdzZWFy
Y2hgCithbmQvb3IgYGdyZXBgLiBUaGlzIG51bWJlciBjYW4gYmUgdXNlZCBhcyBhIG1ldHJpYyBm
b3IgaW1wcm92aW5nIHlvdXIgdGVzdAorcXVhbGl0eS4KKworKipBdmFpbGFiaWxpdHkqKjogTGlu
dXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIyBUZW1wb3JhcmlseSBFbmFibGluZyBEaXNhYmxlZCBU
ZXN0cworCitUbyBpbmNsdWRlIGRpc2FibGVkIHRlc3RzIGluIHRlc3QgZXhlY3V0aW9uLCBqdXN0
IGludm9rZSB0aGUgdGVzdCBwcm9ncmFtIHdpdGgKK3RoZSBgLS1ndGVzdF9hbHNvX3J1bl9kaXNh
YmxlZF90ZXN0c2AgZmxhZyBvciBzZXQgdGhlCitgR1RFU1RfQUxTT19SVU5fRElTQUJMRURfVEVT
VFNgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEgdmFsdWUgb3RoZXIgdGhhbiBgMGAuCitZb3Ug
Y2FuIGNvbWJpbmUgdGhpcyB3aXRoIHRoZSBgLS1ndGVzdF9maWx0ZXJgIGZsYWcgdG8gZnVydGhl
ciBzZWxlY3Qgd2hpY2gKK2Rpc2FibGVkIHRlc3RzIHRvIHJ1bi4KKworKipBdmFpbGFiaWxpdHkq
KjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIFJlcGVhdGluZyB0aGUgVGVzdHMKKworT25j
ZSBpbiBhIHdoaWxlIHlvdSdsbCBydW4gaW50byBhIHRlc3Qgd2hvc2UgcmVzdWx0IGlzIGhpdC1v
ci1taXNzLiBQZXJoYXBzIGl0Cit3aWxsIGZhaWwgb25seSAxJSBvZiB0aGUgdGltZSwgbWFraW5n
IGl0IHJhdGhlciBoYXJkIHRvIHJlcHJvZHVjZSB0aGUgYnVnIHVuZGVyCithIGRlYnVnZ2VyLiBU
aGlzIGNhbiBiZSBhIG1ham9yIHNvdXJjZSBvZiBmcnVzdHJhdGlvbi4KKworVGhlIGAtLWd0ZXN0
X3JlcGVhdGAgZmxhZyBhbGxvd3MgeW91IHRvIHJlcGVhdCBhbGwgKG9yIHNlbGVjdGVkKSB0ZXN0
IG1ldGhvZHMgaW4KK2EgcHJvZ3JhbSBtYW55IHRpbWVzLiBIb3BlZnVsbHksIGEgZmxha3kgdGVz
dCB3aWxsIGV2ZW50dWFsbHkgZmFpbCBhbmQgZ2l2ZSB5b3UKK2EgY2hhbmNlIHRvIGRlYnVnLiBI
ZXJlJ3MgaG93IHRvIHVzZSBpdDoKKworYGBgbm9uZQorJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVh
dD0xMDAwCitSZXBlYXQgZm9vX3Rlc3QgMTAwMCB0aW1lcyBhbmQgZG9uJ3Qgc3RvcCBhdCBmYWls
dXJlcy4KKworJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0tMQorQSBuZWdhdGl2ZSBjb3VudCBt
ZWFucyByZXBlYXRpbmcgZm9yZXZlci4KKworJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAw
IC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZQorUmVwZWF0IGZvb190ZXN0IDEwMDAgdGltZXMsIHN0
b3BwaW5nIGF0IHRoZSBmaXJzdCBmYWlsdXJlLiAgVGhpcworaXMgZXNwZWNpYWxseSB1c2VmdWwg
d2hlbiBydW5uaW5nIHVuZGVyIGEgZGVidWdnZXI6IHdoZW4gdGhlIHRlc3QKK2ZhaWxzLCBpdCB3
aWxsIGRyb3AgaW50byB0aGUgZGVidWdnZXIgYW5kIHlvdSBjYW4gdGhlbiBpbnNwZWN0Cit2YXJp
YWJsZXMgYW5kIHN0YWNrcy4KKworJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwIC0tZ3Rl
c3RfZmlsdGVyPUZvb0Jhci4qCitSZXBlYXQgdGhlIHRlc3RzIHdob3NlIG5hbWUgbWF0Y2hlcyB0
aGUgZmlsdGVyIDEwMDAgdGltZXMuCitgYGAKKworSWYgeW91ciB0ZXN0IHByb2dyYW0gY29udGFp
bnMgW2dsb2JhbCBzZXQtdXAvdGVhci1kb3duXSgjZ2xvYmFsLXNldC11cC1hbmQtdGVhci1kb3du
KSBjb2RlLCBpdAord2lsbCBiZSByZXBlYXRlZCBpbiBlYWNoIGl0ZXJhdGlvbiBhcyB3ZWxsLCBh
cyB0aGUgZmxha2luZXNzIG1heSBiZSBpbiBpdC4gWW91CitjYW4gYWxzbyBzcGVjaWZ5IHRoZSBy
ZXBlYXQgY291bnQgYnkgc2V0dGluZyB0aGUgYEdURVNUX1JFUEVBVGAgZW52aXJvbm1lbnQKK3Zh
cmlhYmxlLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMg
U2h1ZmZsaW5nIHRoZSBUZXN0cworCitZb3UgY2FuIHNwZWNpZnkgdGhlIGAtLWd0ZXN0X3NodWZm
bGVgIGZsYWcgKG9yIHNldCB0aGUgYEdURVNUX1NIVUZGTEVgCitlbnZpcm9ubWVudCB2YXJpYWJs
ZSB0byBgMWApIHRvIHJ1biB0aGUgdGVzdHMgaW4gYSBwcm9ncmFtIGluIGEgcmFuZG9tIG9yZGVy
LgorVGhpcyBoZWxwcyB0byByZXZlYWwgYmFkIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRlc3RzLgor
CitCeSBkZWZhdWx0LCBnb29nbGV0ZXN0IHVzZXMgYSByYW5kb20gc2VlZCBjYWxjdWxhdGVkIGZy
b20gdGhlIGN1cnJlbnQgdGltZS4KK1RoZXJlZm9yZSB5b3UnbGwgZ2V0IGEgZGlmZmVyZW50IG9y
ZGVyIGV2ZXJ5IHRpbWUuIFRoZSBjb25zb2xlIG91dHB1dCBpbmNsdWRlcwordGhlIHJhbmRvbSBz
ZWVkIHZhbHVlLCBzdWNoIHRoYXQgeW91IGNhbiByZXByb2R1Y2UgYW4gb3JkZXItcmVsYXRlZCB0
ZXN0IGZhaWx1cmUKK2xhdGVyLiBUbyBzcGVjaWZ5IHRoZSByYW5kb20gc2VlZCBleHBsaWNpdGx5
LCB1c2UgdGhlIGAtLWd0ZXN0X3JhbmRvbV9zZWVkPVNFRURgCitmbGFnIChvciBzZXQgdGhlIGBH
VEVTVF9SQU5ET01fU0VFRGAgZW52aXJvbm1lbnQgdmFyaWFibGUpLCB3aGVyZSBgU0VFRGAgaXMg
YW4KK2ludGVnZXIgaW4gdGhlIHJhbmdlIFswLCA5OTk5OV0uIFRoZSBzZWVkIHZhbHVlIDAgaXMg
c3BlY2lhbDogaXQgdGVsbHMKK2dvb2dsZXRlc3QgdG8gZG8gdGhlIGRlZmF1bHQgYmVoYXZpb3Ig
b2YgY2FsY3VsYXRpbmcgdGhlIHNlZWQgZnJvbSB0aGUgY3VycmVudAordGltZS4KKworSWYgeW91
IGNvbWJpbmUgdGhpcyB3aXRoIGAtLWd0ZXN0X3JlcGVhdD1OYCwgZ29vZ2xldGVzdCB3aWxsIHBp
Y2sgYSBkaWZmZXJlbnQKK3JhbmRvbSBzZWVkIGFuZCByZS1zaHVmZmxlIHRoZSB0ZXN0cyBpbiBl
YWNoIGl0ZXJhdGlvbi4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4K
KworIyMjIENvbnRyb2xsaW5nIFRlc3QgT3V0cHV0CisKKyMjIyMgQ29sb3JlZCBUZXJtaW5hbCBP
dXRwdXQKKworZ29vZ2xldGVzdCBjYW4gdXNlIGNvbG9ycyBpbiBpdHMgdGVybWluYWwgb3V0cHV0
IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNwb3QgdGhlCitpbXBvcnRhbnQgaW5mb3JtYXRpb246CisK
Ky4uLjxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPlstLS0tLS0tLS0tXTxzcGFuIHN0
eWxlPSJjb2xvcjpibGFjayI+IDEgdGVzdCBmcm9tIEZvb1Rlc3Q8YnIvPgorPHNwYW4gc3R5bGU9
ImNvbG9yOmdyZWVuIj5bIFJVTiAgICAgIF08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiBGb29U
ZXN0LkRvZXNBYmM8YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuIj5bICAgICAgIE9LIF08
c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiBGb29UZXN0LkRvZXNBYmM8YnIvPgorPHNwYW4gc3R5
bGU9ImNvbG9yOmdyZWVuIj5bLS0tLS0tLS0tLV08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiAy
IHRlc3RzIGZyb20gQmFyVGVzdDxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPlsgUlVO
ICAgICAgXTxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+IEJhclRlc3QuSGFzWHl6UHJvcGVydHk8
YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuIj5bICAgICAgIE9LIF08c3BhbiBzdHlsZT0i
Y29sb3I6YmxhY2siPiBCYXJUZXN0Lkhhc1h5elByb3BlcnR5PGJyLz4KKzxzcGFuIHN0eWxlPSJj
b2xvcjpncmVlbiI+WyBSVU4gICAgICBdPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4gQmFyVGVz
dC5SZXR1cm5zVHJ1ZU9uU3VjY2Vzczxici8+CisuLi4gc29tZSBlcnJvciBtZXNzYWdlcyAuLi48
YnIvPgorPHNwYW4gICBzdHlsZT0iY29sb3I6cmVkIj5bICBGQUlMRUQgIF0gPHNwYW4gc3R5bGU9
ImNvbG9yOmJsYWNrIj5CYXJUZXN0LlJldHVybnNUcnVlT25TdWNjZXNzPGJyLz4KKy4uLjxici8+
Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPls9PT09PT09PT09XTxzcGFuIHN0eWxlPSJjb2xv
cjpibGFjayI+IDMwIHRlc3RzIGZyb20gMTQgdGVzdCBjYXNlcyByYW4uPGJyLz4KKzxzcGFuIHN0
eWxlPSJjb2xvcjpncmVlbiI+WyAgUEFTU0VEICBdPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4g
MjggdGVzdHMuPGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPlsgIEZBSUxFRCAgXTxzcGFu
IHN0eWxlPSJjb2xvcjpibGFjayI+IDIgdGVzdHMsIGxpc3RlZCBiZWxvdzo8YnIvPgorPHNwYW4g
c3R5bGU9ImNvbG9yOnJlZCI+WyAgRkFJTEVEICBdPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4g
QmFyVGVzdC5SZXR1cm5zVHJ1ZU9uU3VjY2Vzczxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6cmVk
Ij5bICBGQUlMRUQgIF08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiBBbm90aGVyVGVzdC5Eb2Vz
WHl6PGJyLz4KKyAgMiBGQUlMRUQgVEVTVFMKKworWW91IGNhbiBzZXQgdGhlIGBHVEVTVF9DT0xP
UmAgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlIGAtLWd0ZXN0X2NvbG9yYAorY29tbWFuZCBs
aW5lIGZsYWcgdG8gYHllc2AsIGBub2AsIG9yIGBhdXRvYCAodGhlIGRlZmF1bHQpIHRvIGVuYWJs
ZSBjb2xvcnMsCitkaXNhYmxlIGNvbG9ycywgb3IgbGV0IGdvb2dsZXRlc3QgZGVjaWRlLiBXaGVu
IHRoZSB2YWx1ZSBpcyBgYXV0b2AsIGdvb2dsZXRlc3QKK3dpbGwgdXNlIGNvbG9ycyBpZiBhbmQg
b25seSBpZiB0aGUgb3V0cHV0IGdvZXMgdG8gYSB0ZXJtaW5hbCBhbmQgKG9uIG5vbi1XaW5kb3dz
CitwbGF0Zm9ybXMpIHRoZSBgVEVSTWAgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0IHRvIGB4
dGVybWAgb3IgYHh0ZXJtLWNvbG9yYC4KKworICoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5k
b3dzLCBNYWMuCisKKyMjIyMgU3VwcHJlc3NpbmcgdGhlIEVsYXBzZWQgVGltZQorCitCeSBkZWZh
dWx0LCBnb29nbGV0ZXN0IHByaW50cyB0aGUgdGltZSBpdCB0YWtlcyB0byBydW4gZWFjaCB0ZXN0
LiBUbyBkaXNhYmxlCit0aGF0LCBydW4gdGhlIHRlc3QgcHJvZ3JhbSB3aXRoIHRoZSBgLS1ndGVz
dF9wcmludF90aW1lPTBgIGNvbW1hbmQgbGluZSBmbGFnLCBvcgorc2V0IHRoZSBHVEVTVF9QUklO
VF9USU1FIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGAwYC4KKworKipBdmFpbGFiaWxpdHkqKjog
TGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIyBTdXBwcmVzc2luZyBVVEYtOCBUZXh0IE91dHB1
dAorCitJbiBjYXNlIG9mIGFzc2VydGlvbiBmYWlsdXJlcywgZ29vZ2xldGVzdCBwcmludHMgZXhw
ZWN0ZWQgYW5kIGFjdHVhbCB2YWx1ZXMgb2YKK3R5cGUgYHN0cmluZ2AgYm90aCBhcyBoZXgtZW5j
b2RlZCBzdHJpbmdzIGFzIHdlbGwgYXMgaW4gcmVhZGFibGUgVVRGLTggdGV4dCBpZgordGhleSBj
b250YWluIHZhbGlkIG5vbi1BU0NJSSBVVEYtOCBjaGFyYWN0ZXJzLiBJZiB5b3Ugd2FudCB0byBz
dXBwcmVzcyB0aGUgVVRGLTgKK3RleHQgYmVjYXVzZSwgZm9yIGV4YW1wbGUsIHlvdSBkb24ndCBo
YXZlIGFuIFVURi04IGNvbXBhdGlibGUgb3V0cHV0IG1lZGl1bSwgcnVuCit0aGUgdGVzdCBwcm9n
cmFtIHdpdGggYC0tZ3Rlc3RfcHJpbnRfdXRmOD0wYCBvciBzZXQgdGhlIGBHVEVTVF9QUklOVF9V
VEY4YAorZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYDBgLgorCisqKkF2YWlsYWJpbGl0eSoqOiBM
aW51eCwgV2luZG93cywgTWFjLgorCisKKyMjIyMgR2VuZXJhdGluZyBhbiBYTUwgUmVwb3J0CisK
K2dvb2dsZXRlc3QgY2FuIGVtaXQgYSBkZXRhaWxlZCBYTUwgcmVwb3J0IHRvIGEgZmlsZSBpbiBh
ZGRpdGlvbiB0byBpdHMgbm9ybWFsCit0ZXh0dWFsIG91dHB1dC4gVGhlIHJlcG9ydCBjb250YWlu
cyB0aGUgZHVyYXRpb24gb2YgZWFjaCB0ZXN0LCBhbmQgdGh1cyBjYW4gaGVscAoreW91IGlkZW50
aWZ5IHNsb3cgdGVzdHMuIFRoZSByZXBvcnQgaXMgYWxzbyB1c2VkIGJ5IHRoZSBodHRwOi8vdW5p
dHRlc3QKK2Rhc2hib2FyZCB0byBzaG93IHBlci10ZXN0LW1ldGhvZCBlcnJvciBtZXNzYWdlcy4K
KworVG8gZ2VuZXJhdGUgdGhlIFhNTCByZXBvcnQsIHNldCB0aGUgYEdURVNUX09VVFBVVGAgZW52
aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCitgLS1ndGVzdF9vdXRwdXRgIGZsYWcgdG8gdGhlIHN0
cmluZyBgInhtbDpwYXRoX3RvX291dHB1dF9maWxlImAsIHdoaWNoIHdpbGwKK2NyZWF0ZSB0aGUg
ZmlsZSBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24uIFlvdSBjYW4gYWxzbyBqdXN0IHVzZSB0aGUgc3Ry
aW5nIGAieG1sImAsCitpbiB3aGljaCBjYXNlIHRoZSBvdXRwdXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBgdGVzdF9kZXRhaWwueG1sYCBmaWxlIGluIHRoZQorY3VycmVudCBkaXJlY3RvcnkuCisKK0lm
IHlvdSBzcGVjaWZ5IGEgZGlyZWN0b3J5IChmb3IgZXhhbXBsZSwgYCJ4bWw6b3V0cHV0L2RpcmVj
dG9yeS8iYCBvbiBMaW51eCBvcgorYCJ4bWw6b3V0cHV0XGRpcmVjdG9yeVwiYCBvbiBXaW5kb3dz
KSwgZ29vZ2xldGVzdCB3aWxsIGNyZWF0ZSB0aGUgWE1MIGZpbGUgaW4KK3RoYXQgZGlyZWN0b3J5
LCBuYW1lZCBhZnRlciB0aGUgdGVzdCBleGVjdXRhYmxlIChlLmcuIGBmb29fdGVzdC54bWxgIGZv
ciB0ZXN0Citwcm9ncmFtIGBmb29fdGVzdGAgb3IgYGZvb190ZXN0LmV4ZWApLiBJZiB0aGUgZmls
ZSBhbHJlYWR5IGV4aXN0cyAocGVyaGFwcyBsZWZ0CitvdmVyIGZyb20gYSBwcmV2aW91cyBydW4p
LCBnb29nbGV0ZXN0IHdpbGwgcGljayBhIGRpZmZlcmVudCBuYW1lIChlLmcuCitgZm9vX3Rlc3Rf
MS54bWxgKSB0byBhdm9pZCBvdmVyd3JpdGluZyBpdC4KKworCitUaGUgcmVwb3J0IGlzIGJhc2Vk
IG9uIHRoZSBganVuaXRyZXBvcnRgIEFudCB0YXNrLiBTaW5jZSB0aGF0IGZvcm1hdCB3YXMKK29y
aWdpbmFsbHkgaW50ZW5kZWQgZm9yIEphdmEsIGEgbGl0dGxlIGludGVycHJldGF0aW9uIGlzIHJl
cXVpcmVkIHRvIG1ha2UgaXQKK2FwcGx5IHRvIGdvb2dsZXRlc3QgdGVzdHMsIGFzIHNob3duIGhl
cmU6CisKK2BgYHhtbAorPHRlc3RzdWl0ZXMgbmFtZT0iQWxsVGVzdHMiIC4uLj4KKyAgPHRlc3Rz
dWl0ZSBuYW1lPSJ0ZXN0X2Nhc2VfbmFtZSIgLi4uPgorICAgIDx0ZXN0Y2FzZSAgICBuYW1lPSJ0
ZXN0X25hbWUiIC4uLj4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiIvPgorICAgICAgPGZh
aWx1cmUgbWVzc2FnZT0iLi4uIi8+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4KKyAg
ICA8L3Rlc3RjYXNlPgorICA8L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1aXRlcz4KK2BgYAorCisqICAg
VGhlIHJvb3QgYDx0ZXN0c3VpdGVzPmAgZWxlbWVudCBjb3JyZXNwb25kcyB0byB0aGUgZW50aXJl
IHRlc3QgcHJvZ3JhbS4KKyogICBgPHRlc3RzdWl0ZT5gIGVsZW1lbnRzIGNvcnJlc3BvbmQgdG8g
Z29vZ2xldGVzdCB0ZXN0IGNhc2VzLgorKiAgIGA8dGVzdGNhc2U+YCBlbGVtZW50cyBjb3JyZXNw
b25kIHRvIGdvb2dsZXRlc3QgdGVzdCBmdW5jdGlvbnMuCisKK0ZvciBpbnN0YW5jZSwgdGhlIGZv
bGxvd2luZyBwcm9ncmFtCisKK2BgYGMrKworVEVTVChNYXRoVGVzdCwgQWRkaXRpb24pIHsgLi4u
IH0KK1RFU1QoTWF0aFRlc3QsIFN1YnRyYWN0aW9uKSB7IC4uLiB9CitURVNUKExvZ2ljVGVzdCwg
Tm9uQ29udHJhZGljdGlvbikgeyAuLi4gfQorYGBgCisKK2NvdWxkIGdlbmVyYXRlIHRoaXMgcmVw
b3J0OgorCitgYGB4bWwKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8
dGVzdHN1aXRlcyB0ZXN0cz0iMyIgZmFpbHVyZXM9IjEiIGVycm9ycz0iMCIgdGltZT0iMC4wMzUi
IHRpbWVzdGFtcD0iMjAxMS0xMC0zMVQxODo1Mjo0MiIgbmFtZT0iQWxsVGVzdHMiPgorICA8dGVz
dHN1aXRlIG5hbWU9Ik1hdGhUZXN0IiB0ZXN0cz0iMiIgZmFpbHVyZXM9IjEiIGVycm9ycz0iMCIg
dGltZT0iMC4wMTUiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJBZGRpdGlvbiIgc3RhdHVzPSJydW4i
IHRpbWU9IjAuMDA3IiBjbGFzc25hbWU9IiI+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1
ZSBvZjogYWRkKDEsIDEpJiN4MEE7ICBBY3R1YWw6IDMmI3gwQTtFeHBlY3RlZDogMiIgdHlwZT0i
Ij4uLi48L2ZhaWx1cmU+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogYWRkKDEs
IC0xKSYjeDBBOyAgQWN0dWFsOiAxJiN4MEE7RXhwZWN0ZWQ6IDAiIHR5cGU9IiI+Li4uPC9mYWls
dXJlPgorICAgIDwvdGVzdGNhc2U+CisgICAgPHRlc3RjYXNlIG5hbWU9IlN1YnRyYWN0aW9uIiBz
dGF0dXM9InJ1biIgdGltZT0iMC4wMDUiIGNsYXNzbmFtZT0iIj4KKyAgICA8L3Rlc3RjYXNlPgor
ICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJMb2dpY1Rlc3QiIHRlc3RzPSIxIiBm
YWlsdXJlcz0iMCIgZXJyb3JzPSIwIiB0aW1lPSIwLjAwNSI+CisgICAgPHRlc3RjYXNlIG5hbWU9
Ik5vbkNvbnRyYWRpY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSIwLjAwNSIgY2xhc3NuYW1lPSIi
PgorICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPgorYGBgCisK
K1RoaW5ncyB0byBub3RlOgorCisqICAgVGhlIGB0ZXN0c2AgYXR0cmlidXRlIG9mIGEgYDx0ZXN0
c3VpdGVzPmAgb3IgYDx0ZXN0c3VpdGU+YCBlbGVtZW50IHRlbGxzIGhvdworICAgIG1hbnkgdGVz
dCBmdW5jdGlvbnMgdGhlIGdvb2dsZXRlc3QgcHJvZ3JhbSBvciB0ZXN0IGNhc2UgY29udGFpbnMs
IHdoaWxlIHRoZQorICAgIGBmYWlsdXJlc2AgYXR0cmlidXRlIHRlbGxzIGhvdyBtYW55IG9mIHRo
ZW0gZmFpbGVkLgorCisqICAgVGhlIGB0aW1lYCBhdHRyaWJ1dGUgZXhwcmVzc2VzIHRoZSBkdXJh
dGlvbiBvZiB0aGUgdGVzdCwgdGVzdCBjYXNlLCBvcgorICAgIGVudGlyZSB0ZXN0IHByb2dyYW0g
aW4gc2Vjb25kcy4KKworKiAgIFRoZSBgdGltZXN0YW1wYCBhdHRyaWJ1dGUgcmVjb3JkcyB0aGUg
bG9jYWwgZGF0ZSBhbmQgdGltZSBvZiB0aGUgdGVzdAorICAgIGV4ZWN1dGlvbi4KKworKiAgIEVh
Y2ggYDxmYWlsdXJlPmAgZWxlbWVudCBjb3JyZXNwb25kcyB0byBhIHNpbmdsZSBmYWlsZWQgZ29v
Z2xldGVzdAorICAgIGFzc2VydGlvbi4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRv
d3MsIE1hYy4KKworIyMjIyBHZW5lcmF0aW5nIGFuIEpTT04gUmVwb3J0CisKK2dvb2dsZXRlc3Qg
Y2FuIGFsc28gZW1pdCBhIEpTT04gcmVwb3J0IGFzIGFuIGFsdGVybmF0aXZlIGZvcm1hdCB0byBY
TUwuIFRvCitnZW5lcmF0ZSB0aGUgSlNPTiByZXBvcnQsIHNldCB0aGUgYEdURVNUX09VVFBVVGAg
ZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCitgLS1ndGVzdF9vdXRwdXRgIGZsYWcgdG8gdGhl
IHN0cmluZyBgImpzb246cGF0aF90b19vdXRwdXRfZmlsZSJgLCB3aGljaCB3aWxsCitjcmVhdGUg
dGhlIGZpbGUgYXQgdGhlIGdpdmVuIGxvY2F0aW9uLiBZb3UgY2FuIGFsc28ganVzdCB1c2UgdGhl
IHN0cmluZworYCJqc29uImAsIGluIHdoaWNoIGNhc2UgdGhlIG91dHB1dCBjYW4gYmUgZm91bmQg
aW4gdGhlIGB0ZXN0X2RldGFpbC5qc29uYCBmaWxlCitpbiB0aGUgY3VycmVudCBkaXJlY3Rvcnku
CisKK1RoZSByZXBvcnQgZm9ybWF0IGNvbmZvcm1zIHRvIHRoZSBmb2xsb3dpbmcgSlNPTiBTY2hl
bWE6CisKK2BgYGpzb24KK3sKKyAgIiRzY2hlbWEiOiAiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9z
Y2hlbWEjIiwKKyAgInR5cGUiOiAib2JqZWN0IiwKKyAgImRlZmluaXRpb25zIjogeworICAgICJU
ZXN0Q2FzZSI6IHsKKyAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAicHJvcGVydGllcyI6
IHsKKyAgICAgICAgIm5hbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgInRlc3Rz
IjogeyAidHlwZSI6ICJpbnRlZ2VyIiB9LAorICAgICAgICAiZmFpbHVyZXMiOiB7ICJ0eXBlIjog
ImludGVnZXIiIH0sCisgICAgICAgICJkaXNhYmxlZCI6IHsgInR5cGUiOiAiaW50ZWdlciIgfSwK
KyAgICAgICAgInRpbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgInRlc3RzdWl0
ZSI6IHsKKyAgICAgICAgICAidHlwZSI6ICJhcnJheSIsCisgICAgICAgICAgIml0ZW1zIjogewor
ICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9UZXN0SW5mbyIKKyAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJUZXN0SW5mbyI6IHsKKyAgICAgICJ0
eXBlIjogIm9iamVjdCIsCisgICAgICAicHJvcGVydGllcyI6IHsKKyAgICAgICAgIm5hbWUiOiB7
ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgInN0YXR1cyI6IHsKKyAgICAgICAgICAidHlw
ZSI6ICJzdHJpbmciLAorICAgICAgICAgICJlbnVtIjogWyJSVU4iLCAiTk9UUlVOIl0KKyAgICAg
ICAgfSwKKyAgICAgICAgInRpbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgImNs
YXNzbmFtZSI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAiZmFpbHVyZXMiOiB7Cisg
ICAgICAgICAgInR5cGUiOiAiYXJyYXkiLAorICAgICAgICAgICJpdGVtcyI6IHsKKyAgICAgICAg
ICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvRmFpbHVyZSIKKyAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICB9LAorICAgICJGYWlsdXJlIjogeworICAgICAgInR5cGUiOiAib2Jq
ZWN0IiwKKyAgICAgICJwcm9wZXJ0aWVzIjogeworICAgICAgICAiZmFpbHVyZXMiOiB7ICJ0eXBl
IjogInN0cmluZyIgfSwKKyAgICAgICAgInR5cGUiOiB7ICJ0eXBlIjogInN0cmluZyIgfQorICAg
ICAgfQorICAgIH0KKyAgfSwKKyAgInByb3BlcnRpZXMiOiB7CisgICAgInRlc3RzIjogeyAidHlw
ZSI6ICJpbnRlZ2VyIiB9LAorICAgICJmYWlsdXJlcyI6IHsgInR5cGUiOiAiaW50ZWdlciIgfSwK
KyAgICAiZGlzYWJsZWQiOiB7ICJ0eXBlIjogImludGVnZXIiIH0sCisgICAgImVycm9ycyI6IHsg
InR5cGUiOiAiaW50ZWdlciIgfSwKKyAgICAidGltZXN0YW1wIjogeworICAgICAgInR5cGUiOiAi
c3RyaW5nIiwKKyAgICAgICJmb3JtYXQiOiAiZGF0ZS10aW1lIgorICAgIH0sCisgICAgInRpbWUi
OiB7ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAibmFtZSI6IHsgInR5cGUiOiAic3RyaW5nIiB9
LAorICAgICJ0ZXN0c3VpdGVzIjogeworICAgICAgInR5cGUiOiAiYXJyYXkiLAorICAgICAgIml0
ZW1zIjogeworICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL1Rlc3RDYXNlIgorICAgICAg
fQorICAgIH0KKyAgfQorfQorYGBgCisKK1RoZSByZXBvcnQgdXNlcyB0aGUgZm9ybWF0IHRoYXQg
Y29uZm9ybXMgdG8gdGhlIGZvbGxvd2luZyBQcm90bzMgdXNpbmcgdGhlIFtKU09OCitlbmNvZGlu
Z10oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vcHJvdG9jb2wtYnVmZmVycy9kb2NzL3By
b3RvMyNqc29uKToKKworYGBgcHJvdG8KK3N5bnRheCA9ICJwcm90bzMiOworCitwYWNrYWdlIGdv
b2dsZXRlc3Q7CisKK2ltcG9ydCAiZ29vZ2xlL3Byb3RvYnVmL3RpbWVzdGFtcC5wcm90byI7Citp
bXBvcnQgImdvb2dsZS9wcm90b2J1Zi9kdXJhdGlvbi5wcm90byI7CisKK21lc3NhZ2UgVW5pdFRl
c3QgeworICBpbnQzMiB0ZXN0cyA9IDE7CisgIGludDMyIGZhaWx1cmVzID0gMjsKKyAgaW50MzIg
ZGlzYWJsZWQgPSAzOworICBpbnQzMiBlcnJvcnMgPSA0OworICBnb29nbGUucHJvdG9idWYuVGlt
ZXN0YW1wIHRpbWVzdGFtcCA9IDU7CisgIGdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbiB0aW1lID0g
NjsKKyAgc3RyaW5nIG5hbWUgPSA3OworICByZXBlYXRlZCBUZXN0Q2FzZSB0ZXN0c3VpdGVzID0g
ODsKK30KKworbWVzc2FnZSBUZXN0Q2FzZSB7CisgIHN0cmluZyBuYW1lID0gMTsKKyAgaW50MzIg
dGVzdHMgPSAyOworICBpbnQzMiBmYWlsdXJlcyA9IDM7CisgIGludDMyIGRpc2FibGVkID0gNDsK
KyAgaW50MzIgZXJyb3JzID0gNTsKKyAgZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uIHRpbWUgPSA2
OworICByZXBlYXRlZCBUZXN0SW5mbyB0ZXN0c3VpdGUgPSA3OworfQorCittZXNzYWdlIFRlc3RJ
bmZvIHsKKyAgc3RyaW5nIG5hbWUgPSAxOworICBlbnVtIFN0YXR1cyB7CisgICAgUlVOID0gMDsK
KyAgICBOT1RSVU4gPSAxOworICB9CisgIFN0YXR1cyBzdGF0dXMgPSAyOworICBnb29nbGUucHJv
dG9idWYuRHVyYXRpb24gdGltZSA9IDM7CisgIHN0cmluZyBjbGFzc25hbWUgPSA0OworICBtZXNz
YWdlIEZhaWx1cmUgeworICAgIHN0cmluZyBmYWlsdXJlcyA9IDE7CisgICAgc3RyaW5nIHR5cGUg
PSAyOworICB9CisgIHJlcGVhdGVkIEZhaWx1cmUgZmFpbHVyZXMgPSA1OworfQorYGBgCisKK0Zv
ciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBwcm9ncmFtCisKK2BgYGMrKworVEVTVChNYXRoVGVz
dCwgQWRkaXRpb24pIHsgLi4uIH0KK1RFU1QoTWF0aFRlc3QsIFN1YnRyYWN0aW9uKSB7IC4uLiB9
CitURVNUKExvZ2ljVGVzdCwgTm9uQ29udHJhZGljdGlvbikgeyAuLi4gfQorYGBgCisKK2NvdWxk
IGdlbmVyYXRlIHRoaXMgcmVwb3J0OgorCitgYGBqc29uCit7CisgICJ0ZXN0cyI6IDMsCisgICJm
YWlsdXJlcyI6IDEsCisgICJlcnJvcnMiOiAwLAorICAidGltZSI6ICIwLjAzNXMiLAorICAidGlt
ZXN0YW1wIjogIjIwMTEtMTAtMzFUMTg6NTI6NDJaIgorICAibmFtZSI6ICJBbGxUZXN0cyIsCisg
ICJ0ZXN0c3VpdGVzIjogWworICAgIHsKKyAgICAgICJuYW1lIjogIk1hdGhUZXN0IiwKKyAgICAg
ICJ0ZXN0cyI6IDIsCisgICAgICAiZmFpbHVyZXMiOiAxLAorICAgICAgImVycm9ycyI6IDAsCisg
ICAgICAidGltZSI6ICIwLjAxNXMiLAorICAgICAgInRlc3RzdWl0ZSI6IFsKKyAgICAgICAgewor
ICAgICAgICAgICJuYW1lIjogIkFkZGl0aW9uIiwKKyAgICAgICAgICAic3RhdHVzIjogIlJVTiIs
CisgICAgICAgICAgInRpbWUiOiAiMC4wMDdzIiwKKyAgICAgICAgICAiY2xhc3NuYW1lIjogIiIs
CisgICAgICAgICAgImZhaWx1cmVzIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAi
bWVzc2FnZSI6ICJWYWx1ZSBvZjogYWRkKDEsIDEpXHgwQSAgQWN0dWFsOiAzXHgwQUV4cGVjdGVk
OiAyIiwKKyAgICAgICAgICAgICAgInR5cGUiOiAiIgorICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgIm1lc3NhZ2UiOiAiVmFsdWUgb2Y6IGFkZCgxLCAtMSlceDBB
ICBBY3R1YWw6IDFceDBBRXhwZWN0ZWQ6IDAiLAorICAgICAgICAgICAgICAidHlwZSI6ICIiCisg
ICAgICAgICAgICB9CisgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg
ICAgIm5hbWUiOiAiU3VidHJhY3Rpb24iLAorICAgICAgICAgICJzdGF0dXMiOiAiUlVOIiwKKyAg
ICAgICAgICAidGltZSI6ICIwLjAwNXMiLAorICAgICAgICAgICJjbGFzc25hbWUiOiAiIgorICAg
ICAgICB9CisgICAgICBdCisgICAgfQorICAgIHsKKyAgICAgICJuYW1lIjogIkxvZ2ljVGVzdCIs
CisgICAgICAidGVzdHMiOiAxLAorICAgICAgImZhaWx1cmVzIjogMCwKKyAgICAgICJlcnJvcnMi
OiAwLAorICAgICAgInRpbWUiOiAiMC4wMDVzIiwKKyAgICAgICJ0ZXN0c3VpdGUiOiBbCisgICAg
ICAgIHsKKyAgICAgICAgICAibmFtZSI6ICJOb25Db250cmFkaWN0aW9uIiwKKyAgICAgICAgICAi
c3RhdHVzIjogIlJVTiIsCisgICAgICAgICAgInRpbWUiOiAiMC4wMDVzIiwKKyAgICAgICAgICAi
Y2xhc3NuYW1lIjogIiIKKyAgICAgICAgfQorICAgICAgXQorICAgIH0KKyAgXQorfQorYGBgCisK
K0lNUE9SVEFOVDogVGhlIGV4YWN0IGZvcm1hdCBvZiB0aGUgSlNPTiBkb2N1bWVudCBpcyBzdWJq
ZWN0IHRvIGNoYW5nZS4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4K
KworIyMjIENvbnRyb2xsaW5nIEhvdyBGYWlsdXJlcyBBcmUgUmVwb3J0ZWQKKworIyMjIyBUdXJu
aW5nIEFzc2VydGlvbiBGYWlsdXJlcyBpbnRvIEJyZWFrLVBvaW50cworCitXaGVuIHJ1bm5pbmcg
dGVzdCBwcm9ncmFtcyB1bmRlciBhIGRlYnVnZ2VyLCBpdCdzIHZlcnkgY29udmVuaWVudCBpZiB0
aGUKK2RlYnVnZ2VyIGNhbiBjYXRjaCBhbiBhc3NlcnRpb24gZmFpbHVyZSBhbmQgYXV0b21hdGlj
YWxseSBkcm9wIGludG8gaW50ZXJhY3RpdmUKK21vZGUuIGdvb2dsZXRlc3QncyAqYnJlYWstb24t
ZmFpbHVyZSogbW9kZSBzdXBwb3J0cyB0aGlzIGJlaGF2aW9yLgorCitUbyBlbmFibGUgaXQsIHNl
dCB0aGUgYEdURVNUX0JSRUFLX09OX0ZBSUxVUkVgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEg
dmFsdWUKK290aGVyIHRoYW4gYDBgIC4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhlIGAt
LWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVgCitjb21tYW5kIGxpbmUgZmxhZy4KKworKipBdmFpbGFi
aWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIyBEaXNhYmxpbmcgQ2F0Y2hpbmcg
VGVzdC1UaHJvd24gRXhjZXB0aW9ucworCitnb29nbGV0ZXN0IGNhbiBiZSB1c2VkIGVpdGhlciB3
aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucyBlbmFibGVkLiBJZiBhIHRlc3QKK3Rocm93cyBhIEMr
KyBleGNlcHRpb24gb3IgKG9uIFdpbmRvd3MpIGEgc3RydWN0dXJlZCBleGNlcHRpb24gKFNFSCks
IGJ5IGRlZmF1bHQKK2dvb2dsZXRlc3QgY2F0Y2hlcyBpdCwgcmVwb3J0cyBpdCBhcyBhIHRlc3Qg
ZmFpbHVyZSwgYW5kIGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0Cit0ZXN0IG1ldGhvZC4gVGhpcyBt
YXhpbWl6ZXMgdGhlIGNvdmVyYWdlIG9mIGEgdGVzdCBydW4uIEFsc28sIG9uIFdpbmRvd3MgYW4K
K3VuY2F1Z2h0IGV4Y2VwdGlvbiB3aWxsIGNhdXNlIGEgcG9wLXVwIHdpbmRvdywgc28gY2F0Y2hp
bmcgdGhlIGV4Y2VwdGlvbnMgYWxsb3dzCit5b3UgdG8gcnVuIHRoZSB0ZXN0cyBhdXRvbWF0aWNh
bGx5LgorCitXaGVuIGRlYnVnZ2luZyB0aGUgdGVzdCBmYWlsdXJlcywgaG93ZXZlciwgeW91IG1h
eSBpbnN0ZWFkIHdhbnQgdGhlIGV4Y2VwdGlvbnMKK3RvIGJlIGhhbmRsZWQgYnkgdGhlIGRlYnVn
Z2VyLCBzdWNoIHRoYXQgeW91IGNhbiBleGFtaW5lIHRoZSBjYWxsIHN0YWNrIHdoZW4gYW4KK2V4
Y2VwdGlvbiBpcyB0aHJvd24uIFRvIGFjaGlldmUgdGhhdCwgc2V0IHRoZSBgR1RFU1RfQ0FUQ0hf
RVhDRVBUSU9OU2AKK2Vudmlyb25tZW50IHZhcmlhYmxlIHRvIGAwYCwgb3IgdXNlIHRoZSBgLS1n
dGVzdF9jYXRjaF9leGNlcHRpb25zPTBgIGZsYWcgd2hlbgorcnVubmluZyB0aGUgdGVzdHMuCisK
KyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvZmFxLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvZG9jcy9mYXEubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q0MmZmN2RiYWE4ZmFiZDBjYzY1MmZkNzA1Mjc5
ODE4NGU5NWM0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2Rv
Y3MvZmFxLm1kCkBAIC0wLDAgKzEsNzcwIEBACisjIEdvb2dsZXRlc3QgRkFRCisKKworIyMgV2h5
IHNob3VsZCB0ZXN0IGNhc2UgbmFtZXMgYW5kIHRlc3QgbmFtZXMgbm90IGNvbnRhaW4gdW5kZXJz
Y29yZT8KKworVW5kZXJzY29yZSAoYF9gKSBpcyBzcGVjaWFsLCBhcyBDKysgcmVzZXJ2ZXMgdGhl
IGZvbGxvd2luZyB0byBiZSB1c2VkIGJ5IHRoZQorY29tcGlsZXIgYW5kIHRoZSBzdGFuZGFyZCBs
aWJyYXJ5OgorCisxLiAgYW55IGlkZW50aWZpZXIgdGhhdCBzdGFydHMgd2l0aCBhbiBgX2AgZm9s
bG93ZWQgYnkgYW4gdXBwZXItY2FzZSBsZXR0ZXIsIGFuZAorMS4gIGFueSBpZGVudGlmaWVyIHRo
YXQgY29udGFpbnMgdHdvIGNvbnNlY3V0aXZlIHVuZGVyc2NvcmVzIChpLmUuIGBfX2ApCisgICAg
KmFueXdoZXJlKiBpbiBpdHMgbmFtZS4KKworVXNlciBjb2RlIGlzICpwcm9oaWJpdGVkKiBmcm9t
IHVzaW5nIHN1Y2ggaWRlbnRpZmllcnMuCisKK05vdyBsZXQncyBsb29rIGF0IHdoYXQgdGhpcyBt
ZWFucyBmb3IgYFRFU1RgIGFuZCBgVEVTVF9GYC4KKworQ3VycmVudGx5IGBURVNUKFRlc3RDYXNl
TmFtZSwgVGVzdE5hbWUpYCBnZW5lcmF0ZXMgYSBjbGFzcyBuYW1lZAorYFRlc3RDYXNlTmFtZV9U
ZXN0TmFtZV9UZXN0YC4gV2hhdCBoYXBwZW5zIGlmIGBUZXN0Q2FzZU5hbWVgIG9yIGBUZXN0TmFt
ZWAKK2NvbnRhaW5zIGBfYD8KKworMS4gIElmIGBUZXN0Q2FzZU5hbWVgIHN0YXJ0cyB3aXRoIGFu
IGBfYCBmb2xsb3dlZCBieSBhbiB1cHBlci1jYXNlIGxldHRlciAoc2F5LAorICAgIGBfRm9vYCks
IHdlIGVuZCB1cCB3aXRoIGBfRm9vX1Rlc3ROYW1lX1Rlc3RgLCB3aGljaCBpcyByZXNlcnZlZCBh
bmQgdGh1cworICAgIGludmFsaWQuCisxLiAgSWYgYFRlc3RDYXNlTmFtZWAgZW5kcyB3aXRoIGFu
IGBfYCAoc2F5LCBgRm9vX2ApLCB3ZSBnZXQKKyAgICBgRm9vX19UZXN0TmFtZV9UZXN0YCwgd2hp
Y2ggaXMgaW52YWxpZC4KKzEuICBJZiBgVGVzdE5hbWVgIHN0YXJ0cyB3aXRoIGFuIGBfYCAoc2F5
LCBgX0JhcmApLCB3ZSBnZXQKKyAgICBgVGVzdENhc2VOYW1lX19CYXJfVGVzdGAsIHdoaWNoIGlz
IGludmFsaWQuCisxLiAgSWYgYFRlc3ROYW1lYCBlbmRzIHdpdGggYW4gYF9gIChzYXksIGBCYXJf
YCksIHdlIGdldAorICAgIGBUZXN0Q2FzZU5hbWVfQmFyX19UZXN0YCwgd2hpY2ggaXMgaW52YWxp
ZC4KKworU28gY2xlYXJseSBgVGVzdENhc2VOYW1lYCBhbmQgYFRlc3ROYW1lYCBjYW5ub3Qgc3Rh
cnQgb3IgZW5kIHdpdGggYF9gIChBY3R1YWxseSwKK2BUZXN0Q2FzZU5hbWVgIGNhbiBzdGFydCB3
aXRoIGBfYCAtLSBhcyBsb25nIGFzIHRoZSBgX2AgaXNuJ3QgZm9sbG93ZWQgYnkgYW4KK3VwcGVy
LWNhc2UgbGV0dGVyLiBCdXQgdGhhdCdzIGdldHRpbmcgY29tcGxpY2F0ZWQuIFNvIGZvciBzaW1w
bGljaXR5IHdlIGp1c3Qgc2F5Cit0aGF0IGl0IGNhbm5vdCBzdGFydCB3aXRoIGBfYC4pLgorCitJ
dCBtYXkgc2VlbSBmaW5lIGZvciBgVGVzdENhc2VOYW1lYCBhbmQgYFRlc3ROYW1lYCB0byBjb250
YWluIGBfYCBpbiB0aGUgbWlkZGxlLgorSG93ZXZlciwgY29uc2lkZXIgdGhpczoKKworYGBgYysr
CitURVNUKFRpbWUsIEZsaWVzX0xpa2VfQW5fQXJyb3cpIHsgLi4uIH0KK1RFU1QoVGltZV9GbGll
cywgTGlrZV9Bbl9BcnJvdykgeyAuLi4gfQorYGBgCisKK05vdywgdGhlIHR3byBgVEVTVGBzIHdp
bGwgYm90aCBnZW5lcmF0ZSB0aGUgc2FtZSBjbGFzcworKGBUaW1lX0ZsaWVzX0xpa2VfQW5fQXJy
b3dfVGVzdGApLiBUaGF0J3Mgbm90IGdvb2QuCisKK1NvIGZvciBzaW1wbGljaXR5LCB3ZSBqdXN0
IGFzayB0aGUgdXNlcnMgdG8gYXZvaWQgYF9gIGluIGBUZXN0Q2FzZU5hbWVgIGFuZAorYFRlc3RO
YW1lYC4gVGhlIHJ1bGUgaXMgbW9yZSBjb25zdHJhaW5pbmcgdGhhbiBuZWNlc3NhcnksIGJ1dCBp
dCdzIHNpbXBsZSBhbmQKK2Vhc3kgdG8gcmVtZW1iZXIuIEl0IGFsc28gZ2l2ZXMgZ29vZ2xldGVz
dCBzb21lIHdpZ2dsZSByb29tIGluIGNhc2UgaXRzCitpbXBsZW1lbnRhdGlvbiBuZWVkcyB0byBj
aGFuZ2UgaW4gdGhlIGZ1dHVyZS4KKworSWYgeW91IHZpb2xhdGUgdGhlIHJ1bGUsIHRoZXJlIG1h
eSBub3QgYmUgaW1tZWRpYXRlIGNvbnNlcXVlbmNlcywgYnV0IHlvdXIgdGVzdAorbWF5IChqdXN0
IG1heSkgYnJlYWsgd2l0aCBhIG5ldyBjb21waWxlciAob3IgYSBuZXcgdmVyc2lvbiBvZiB0aGUg
Y29tcGlsZXIgeW91CithcmUgdXNpbmcpIG9yIHdpdGggYSBuZXcgdmVyc2lvbiBvZiBnb29nbGV0
ZXN0LiBUaGVyZWZvcmUgaXQncyBiZXN0IHRvIGZvbGxvdwordGhlIHJ1bGUuCisKKyMjIFdoeSBk
b2VzIGdvb2dsZXRlc3Qgc3VwcG9ydCBgRVhQRUNUX0VRKE5VTEwsIHB0cilgIGFuZCBgQVNTRVJU
X0VRKE5VTEwsIHB0cilgIGJ1dCBub3QgYEVYUEVDVF9ORShOVUxMLCBwdHIpYCBhbmQgYEFTU0VS
VF9ORShOVUxMLCBwdHIpYD8KKworRmlyc3Qgb2YgYWxsIHlvdSBjYW4gdXNlIGBFWFBFQ1RfTkUo
bnVsbHB0ciwgcHRyKWAgYW5kIGBBU1NFUlRfTkUobnVsbHB0ciwKK3B0cilgLiBUaGlzIGlzIHRo
ZSBwcmVmZXJyZWQgc3ludGF4IGluIHRoZSBzdHlsZSBndWlkZSBiZWNhdXNlIG51bGxwdHIgZG9l
cyBub3QKK2hhdmUgdGhlIHR5cGUgcHJvYmxlbXMgdGhhdCBOVUxMIGRvZXMuIFdoaWNoIGlzIHdo
eSBOVUxMIGRvZXMgbm90IHdvcmsuCisKK0R1ZSB0byBzb21lIHBlY3VsaWFyaXR5IG9mIEMrKywg
aXQgcmVxdWlyZXMgc29tZSBub24tdHJpdmlhbCB0ZW1wbGF0ZSBtZXRhCitwcm9ncmFtbWluZyB0
cmlja3MgdG8gc3VwcG9ydCB1c2luZyBgTlVMTGAgYXMgYW4gYXJndW1lbnQgb2YgdGhlIGBFWFBF
Q1RfWFgoKWAKK2FuZCBgQVNTRVJUX1hYKClgIG1hY3Jvcy4gVGhlcmVmb3JlIHdlIG9ubHkgZG8g
aXQgd2hlcmUgaXQncyBtb3N0IG5lZWRlZAorKG90aGVyd2lzZSB3ZSBtYWtlIHRoZSBpbXBsZW1l
bnRhdGlvbiBvZiBnb29nbGV0ZXN0IGhhcmRlciB0byBtYWludGFpbiBhbmQgbW9yZQorZXJyb3It
cHJvbmUgdGhhbiBuZWNlc3NhcnkpLgorCitUaGUgYEVYUEVDVF9FUSgpYCBtYWNybyB0YWtlcyB0
aGUgKmV4cGVjdGVkKiB2YWx1ZSBhcyBpdHMgZmlyc3QgYXJndW1lbnQgYW5kIHRoZQorKmFjdHVh
bCogdmFsdWUgYXMgdGhlIHNlY29uZC4gSXQncyByZWFzb25hYmxlIHRoYXQgc29tZW9uZSB3YW50
cyB0byB3cml0ZQorYEVYUEVDVF9FUShOVUxMLCBzb21lX2V4cHJlc3Npb24pYCwgYW5kIHRoaXMg
aW5kZWVkIHdhcyByZXF1ZXN0ZWQgc2V2ZXJhbCB0aW1lcy4KK1RoZXJlZm9yZSB3ZSBpbXBsZW1l
bnRlZCBpdC4KKworVGhlIG5lZWQgZm9yIGBFWFBFQ1RfTkUoTlVMTCwgcHRyKWAgaXNuJ3QgbmVh
cmx5IGFzIHN0cm9uZy4gV2hlbiB0aGUgYXNzZXJ0aW9uCitmYWlscywgeW91IGFscmVhZHkga25v
dyB0aGF0IGBwdHJgIG11c3QgYmUgYE5VTExgLCBzbyBpdCBkb2Vzbid0IGFkZCBhbnkKK2luZm9y
bWF0aW9uIHRvIHByaW50IGBwdHJgIGluIHRoaXMgY2FzZS4gVGhhdCBtZWFucyBgRVhQRUNUX1RS
VUUocHRyICE9IE5VTEwpYAord29ya3MganVzdCBhcyB3ZWxsLgorCitJZiB3ZSB3ZXJlIHRvIHN1
cHBvcnQgYEVYUEVDVF9ORShOVUxMLCBwdHIpYCwgZm9yIGNvbnNpc3RlbmN5IHdlJ2xsIGhhdmUg
dG8KK3N1cHBvcnQgYEVYUEVDVF9ORShwdHIsIE5VTEwpYCBhcyB3ZWxsLCBhcyB1bmxpa2UgYEVY
UEVDVF9FUWAsIHdlIGRvbid0IGhhdmUgYQorY29udmVudGlvbiBvbiB0aGUgb3JkZXIgb2YgdGhl
IHR3byBhcmd1bWVudHMgZm9yIGBFWFBFQ1RfTkVgLiBUaGlzIG1lYW5zIHVzaW5nCit0aGUgdGVt
cGxhdGUgbWV0YSBwcm9ncmFtbWluZyB0cmlja3MgdHdpY2UgaW4gdGhlIGltcGxlbWVudGF0aW9u
LCBtYWtpbmcgaXQgZXZlbgoraGFyZGVyIHRvIHVuZGVyc3RhbmQgYW5kIG1haW50YWluLiBXZSBi
ZWxpZXZlIHRoZSBiZW5lZml0IGRvZXNuJ3QganVzdGlmeSB0aGUKK2Nvc3QuCisKK0ZpbmFsbHks
IHdpdGggdGhlIGdyb3d0aCBvZiB0aGUgZ01vY2sgbWF0Y2hlciBsaWJyYXJ5LCB3ZSBhcmUgZW5j
b3VyYWdpbmcgcGVvcGxlCit0byB1c2UgdGhlIHVuaWZpZWQgYEVYUEVDVF9USEFUKHZhbHVlLCBt
YXRjaGVyKWAgc3ludGF4IG1vcmUgb2Z0ZW4gaW4gdGVzdHMuIE9uZQorc2lnbmlmaWNhbnQgYWR2
YW50YWdlIG9mIHRoZSBtYXRjaGVyIGFwcHJvYWNoIGlzIHRoYXQgbWF0Y2hlcnMgY2FuIGJlIGVh
c2lseQorY29tYmluZWQgdG8gZm9ybSBuZXcgbWF0Y2hlcnMsIHdoaWxlIHRoZSBgRVhQRUNUX05F
YCwgZXRjLCBtYWNyb3MgY2Fubm90IGJlCitlYXNpbHkgY29tYmluZWQuIFRoZXJlZm9yZSB3ZSB3
YW50IHRvIGludmVzdCBtb3JlIGluIHRoZSBtYXRjaGVycyB0aGFuIGluIHRoZQorYEVYUEVDVF9Y
WCgpYCBtYWNyb3MuCisKKyMjIEkgbmVlZCB0byB0ZXN0IHRoYXQgZGlmZmVyZW50IGltcGxlbWVu
dGF0aW9ucyBvZiBhbiBpbnRlcmZhY2Ugc2F0aXNmeSBzb21lIGNvbW1vbiByZXF1aXJlbWVudHMu
IFNob3VsZCBJIHVzZSB0eXBlZCB0ZXN0cyBvciB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzPwor
CitGb3IgdGVzdGluZyB2YXJpb3VzIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgc2FtZSBpbnRlcmZh
Y2UsIGVpdGhlciB0eXBlZCB0ZXN0cyBvcgordmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBjYW4g
Z2V0IGl0IGRvbmUuIEl0J3MgcmVhbGx5IHVwIHRvIHlvdSB0aGUgdXNlciB0bworZGVjaWRlIHdo
aWNoIGlzIG1vcmUgY29udmVuaWVudCBmb3IgeW91LCBkZXBlbmRpbmcgb24geW91ciBwYXJ0aWN1
bGFyIGNhc2UuIFNvbWUKK3JvdWdoIGd1aWRlbGluZXM6CisKKyogICBUeXBlZCB0ZXN0cyBjYW4g
YmUgZWFzaWVyIHRvIHdyaXRlIGlmIGluc3RhbmNlcyBvZiB0aGUgZGlmZmVyZW50CisgICAgaW1w
bGVtZW50YXRpb25zIGNhbiBiZSBjcmVhdGVkIHRoZSBzYW1lIHdheSwgbW9kdWxvIHRoZSB0eXBl
LiBGb3IgZXhhbXBsZSwKKyAgICBpZiBhbGwgdGhlc2UgaW1wbGVtZW50YXRpb25zIGhhdmUgYSBw
dWJsaWMgZGVmYXVsdCBjb25zdHJ1Y3RvciAoc3VjaCB0aGF0CisgICAgeW91IGNhbiB3cml0ZSBg
bmV3IFR5cGVQYXJhbWApLCBvciBpZiB0aGVpciBmYWN0b3J5IGZ1bmN0aW9ucyBoYXZlIHRoZSBz
YW1lCisgICAgZm9ybSAoZS5nLiBgQ3JlYXRlSW5zdGFuY2U8VHlwZVBhcmFtPigpYCkuCisqICAg
VmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBjYW4gYmUgZWFzaWVyIHRvIHdyaXRlIGlmIHlvdSBu
ZWVkIGRpZmZlcmVudCBjb2RlCisgICAgcGF0dGVybnMgdG8gY3JlYXRlIGRpZmZlcmVudCBpbXBs
ZW1lbnRhdGlvbnMnIGluc3RhbmNlcywgZS5nLiBgbmV3IEZvb2AgdnMKKyAgICBgbmV3IEJhcig1
KWAuIFRvIGFjY29tbW9kYXRlIGZvciB0aGUgZGlmZmVyZW5jZXMsIHlvdSBjYW4gd3JpdGUgZmFj
dG9yeQorICAgIGZ1bmN0aW9uIHdyYXBwZXJzIGFuZCBwYXNzIHRoZXNlIGZ1bmN0aW9uIHBvaW50
ZXJzIHRvIHRoZSB0ZXN0cyBhcyB0aGVpcgorICAgIHBhcmFtZXRlcnMuCisqICAgV2hlbiBhIHR5
cGVkIHRlc3QgZmFpbHMsIHRoZSBvdXRwdXQgaW5jbHVkZXMgdGhlIG5hbWUgb2YgdGhlIHR5cGUs
IHdoaWNoIGNhbgorICAgIGhlbHAgeW91IHF1aWNrbHkgaWRlbnRpZnkgd2hpY2ggaW1wbGVtZW50
YXRpb24gaXMgd3JvbmcuIFZhbHVlLXBhcmFtZXRlcml6ZWQKKyAgICB0ZXN0cyBjYW5ub3QgZG8g
dGhpcywgc28gdGhlcmUgeW91J2xsIGhhdmUgdG8gbG9vayBhdCB0aGUgaXRlcmF0aW9uIG51bWJl
cgorICAgIHRvIGtub3cgd2hpY2ggaW1wbGVtZW50YXRpb24gdGhlIGZhaWx1cmUgaXMgZnJvbSwg
d2hpY2ggaXMgbGVzcyBkaXJlY3QuCisqICAgSWYgeW91IG1ha2UgYSBtaXN0YWtlIHdyaXRpbmcg
YSB0eXBlZCB0ZXN0LCB0aGUgY29tcGlsZXIgZXJyb3JzIGNhbiBiZQorICAgIGhhcmRlciB0byBk
aWdlc3QsIGFzIHRoZSBjb2RlIGlzIHRlbXBsYXRpemVkLgorKiAgIFdoZW4gdXNpbmcgdHlwZWQg
dGVzdHMsIHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB5b3UgYXJlIHRlc3RpbmcgYWdhaW5zdCB0aGUK
KyAgICBpbnRlcmZhY2UgdHlwZSwgbm90IHRoZSBjb25jcmV0ZSB0eXBlcyAoaW4gb3RoZXIgd29y
ZHMsIHlvdSB3YW50IHRvIG1ha2UKKyAgICBzdXJlIGBpbXBsaWNpdF9jYXN0PE15SW50ZXJmYWNl
Kj4obXlfY29uY3JldGVfaW1wbClgIHdvcmtzLCBub3QganVzdCB0aGF0CisgICAgYG15X2NvbmNy
ZXRlX2ltcGxgIHdvcmtzKS4gSXQncyBsZXNzIGxpa2VseSB0byBtYWtlIG1pc3Rha2VzIGluIHRo
aXMgYXJlYQorICAgIHdoZW4gdXNpbmcgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKworSSBo
b3BlIEkgZGlkbid0IGNvbmZ1c2UgeW91IG1vcmUuIDotKSBJZiB5b3UgZG9uJ3QgbWluZCwgSSdk
IHN1Z2dlc3QgeW91IHRvIGdpdmUKK2JvdGggYXBwcm9hY2hlcyBhIHRyeS4gUHJhY3RpY2UgaXMg
YSBtdWNoIGJldHRlciB3YXkgdG8gZ3Jhc3AgdGhlIHN1YnRsZQorZGlmZmVyZW5jZXMgYmV0d2Vl
biB0aGUgdHdvIHRvb2xzLiBPbmNlIHlvdSBoYXZlIHNvbWUgY29uY3JldGUgZXhwZXJpZW5jZSwg
eW91CitjYW4gbXVjaCBtb3JlIGVhc2lseSBkZWNpZGUgd2hpY2ggb25lIHRvIHVzZSB0aGUgbmV4
dCB0aW1lLgorCisjIyBNeSBkZWF0aCB0ZXN0cyBiZWNhbWUgdmVyeSBzbG93IC0gd2hhdCBoYXBw
ZW5lZD8KKworSW4gQXVndXN0IDIwMDggd2UgaGFkIHRvIHN3aXRjaCB0aGUgZGVmYXVsdCBkZWF0
aCB0ZXN0IHN0eWxlIGZyb20gYGZhc3RgIHRvCitgdGhyZWFkc2FmZWAsIGFzIHRoZSBmb3JtZXIg
aXMgbm8gbG9uZ2VyIHNhZmUgbm93IHRoYXQgdGhyZWFkZWQgbG9nZ2luZyBpcyB0aGUKK2RlZmF1
bHQuIFRoaXMgY2F1c2VkIG1hbnkgZGVhdGggdGVzdHMgdG8gc2xvdyBkb3duLiBVbmZvcnR1bmF0
ZWx5IHRoaXMgY2hhbmdlCit3YXMgbmVjZXNzYXJ5LgorCitQbGVhc2UgcmVhZCBbRml4aW5nIEZh
aWxpbmcgRGVhdGggVGVzdHNdKGRlYXRoX3Rlc3Rfc3R5bGVzLm1kKSBmb3Igd2hhdCB5b3UgY2Fu
Citkby4KKworIyMgSSBnb3Qgc29tZSBydW4tdGltZSBlcnJvcnMgYWJvdXQgaW52YWxpZCBwcm90
byBkZXNjcmlwdG9ycyB3aGVuIHVzaW5nIGBQcm90b2NvbE1lc3NhZ2VFcXVhbHNgLiBIZWxwIQor
CisqKk5vdGU6KiogYFByb3RvY29sTWVzc2FnZUVxdWFsc2AgYW5kIGBQcm90b2NvbE1lc3NhZ2VF
cXVpdmAgYXJlICpkZXByZWNhdGVkKgorbm93LiBQbGVhc2UgdXNlIGBFcXVhbHNQcm90b2AsIGV0
YyBpbnN0ZWFkLgorCitgUHJvdG9jb2xNZXNzYWdlRXF1YWxzYCBhbmQgYFByb3RvY29sTWVzc2Fn
ZUVxdWl2YCB3ZXJlIHJlZGVmaW5lZCByZWNlbnRseSBhbmQKK2FyZSBub3cgbGVzcyB0b2xlcmFu
dCBvbiBpbnZhbGlkIHByb3RvY29sIGJ1ZmZlciBkZWZpbml0aW9ucy4gSW4gcGFydGljdWxhciwg
aWYKK3lvdSBoYXZlIGEgYGZvby5wcm90b2AgdGhhdCBkb2Vzbid0IGZ1bGx5IHF1YWxpZnkgdGhl
IHR5cGUgb2YgYSBwcm90b2NvbCBtZXNzYWdlCitpdCByZWZlcmVuY2VzIChlLmcuIGBtZXNzYWdl
PEJhcj5gIHdoZXJlIGl0IHNob3VsZCBiZSBgbWVzc2FnZTxibGFoLkJhcj5gKSwgeW91Cit3aWxs
IG5vdyBnZXQgcnVuLXRpbWUgZXJyb3JzIGxpa2U6CisKK2BgYAorLi4uIGRlc2NyaXB0b3IuY2M6
Li4uXSBJbnZhbGlkIHByb3RvIGRlc2NyaXB0b3IgZm9yIGZpbGUgInBhdGgvdG8vZm9vLnByb3Rv
IjoKKy4uLiBkZXNjcmlwdG9yLmNjOi4uLl0gIGJsYWguTXlNZXNzYWdlLm15X2ZpZWxkOiAiLkJh
ciIgaXMgbm90IGRlZmluZWQuCitgYGAKKworSWYgeW91IHNlZSB0aGlzLCB5b3VyIGAucHJvdG9g
IGZpbGUgaXMgYnJva2VuIGFuZCBuZWVkcyB0byBiZSBmaXhlZCBieSBtYWtpbmcKK3RoZSB0eXBl
cyBmdWxseSBxdWFsaWZpZWQuIFRoZSBuZXcgZGVmaW5pdGlvbiBvZiBgUHJvdG9jb2xNZXNzYWdl
RXF1YWxzYCBhbmQKK2BQcm90b2NvbE1lc3NhZ2VFcXVpdmAganVzdCBoYXBwZW4gdG8gcmV2ZWFs
IHlvdXIgYnVnLgorCisjIyBNeSBkZWF0aCB0ZXN0IG1vZGlmaWVzIHNvbWUgc3RhdGUsIGJ1dCB0
aGUgY2hhbmdlIHNlZW1zIGxvc3QgYWZ0ZXIgdGhlIGRlYXRoIHRlc3QgZmluaXNoZXMuIFdoeT8K
KworRGVhdGggdGVzdHMgKGBFWFBFQ1RfREVBVEhgLCBldGMpIGFyZSBleGVjdXRlZCBpbiBhIHN1
Yi1wcm9jZXNzIHMudC4gdGhlCitleHBlY3RlZCBjcmFzaCB3b24ndCBraWxsIHRoZSB0ZXN0IHBy
b2dyYW0gKGkuZS4gdGhlIHBhcmVudCBwcm9jZXNzKS4gQXMgYQorcmVzdWx0LCBhbnkgaW4tbWVt
b3J5IHNpZGUgZWZmZWN0cyB0aGV5IGluY3VyIGFyZSBvYnNlcnZhYmxlIGluIHRoZWlyIHJlc3Bl
Y3RpdmUKK3N1Yi1wcm9jZXNzZXMsIGJ1dCBub3QgaW4gdGhlIHBhcmVudCBwcm9jZXNzLiBZb3Ug
Y2FuIHRoaW5rIG9mIHRoZW0gYXMgcnVubmluZworaW4gYSBwYXJhbGxlbCB1bml2ZXJzZSwgbW9y
ZSBvciBsZXNzLgorCitJbiBwYXJ0aWN1bGFyLCBpZiB5b3UgdXNlIFtnTW9ja10oLi4vLi4vZ29v
Z2xlbW9jaykgYW5kIHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudAoraW52b2tlcyBzb21lIG1vY2sg
bWV0aG9kcywgdGhlIHBhcmVudCBwcm9jZXNzIHdpbGwgdGhpbmsgdGhlIGNhbGxzIGhhdmUgbmV2
ZXIKK29jY3VycmVkLiBUaGVyZWZvcmUsIHlvdSBtYXkgd2FudCB0byBtb3ZlIHlvdXIgYEVYUEVD
VF9DQUxMYCBzdGF0ZW1lbnRzIGluc2lkZQordGhlIGBFWFBFQ1RfREVBVEhgIG1hY3JvLgorCisj
IyBFWFBFQ1RfRVEoaHRvbmwoYmxhaCksIGJsYWhfYmxhaCkgZ2VuZXJhdGVzIHdlaXJkIGNvbXBp
bGVyIGVycm9ycyBpbiBvcHQgbW9kZS4gSXMgdGhpcyBhIGdvb2dsZXRlc3QgYnVnPworCitBY3R1
YWxseSwgdGhlIGJ1ZyBpcyBpbiBgaHRvbmwoKWAuCisKK0FjY29yZGluZyB0byBgJ21hbiBodG9u
bCdgLCBgaHRvbmwoKWAgaXMgYSAqZnVuY3Rpb24qLCB3aGljaCBtZWFucyBpdCdzIHZhbGlkIHRv
Cit1c2UgYGh0b25sYCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuIEhvd2V2ZXIsIGluIG9wdCBtb2Rl
IGBodG9ubCgpYCBpcyBkZWZpbmVkIGFzCithICptYWNybyosIHdoaWNoIGJyZWFrcyB0aGlzIHVz
YWdlLgorCitXb3JzZSwgdGhlIG1hY3JvIGRlZmluaXRpb24gb2YgYGh0b25sKClgIHVzZXMgYSBg
Z2NjYCBleHRlbnNpb24gYW5kIGlzICpub3QqCitzdGFuZGFyZCBDKysuIFRoYXQgaGFja3kgaW1w
bGVtZW50YXRpb24gaGFzIHNvbWUgYWQgaG9jIGxpbWl0YXRpb25zLiBJbgorcGFydGljdWxhciwg
aXQgcHJldmVudHMgeW91IGZyb20gd3JpdGluZyBgRm9vPHNpemVvZihodG9ubCh4KSk+KClgLCB3
aGVyZSBgRm9vYAoraXMgYSB0ZW1wbGF0ZSB0aGF0IGhhcyBhbiBpbnRlZ3JhbCBhcmd1bWVudC4K
KworVGhlIGltcGxlbWVudGF0aW9uIG9mIGBFWFBFQ1RfRVEoYSwgYilgIHVzZXMgYHNpemVvZigu
Li4gYSAuLi4pYCBpbnNpZGUgYQordGVtcGxhdGUgYXJndW1lbnQsIGFuZCB0aHVzIGRvZXNuJ3Qg
Y29tcGlsZSBpbiBvcHQgbW9kZSB3aGVuIGBhYCBjb250YWlucyBhIGNhbGwKK3RvIGBodG9ubCgp
YC4gSXQgaXMgZGlmZmljdWx0IHRvIG1ha2UgYEVYUEVDVF9FUWAgYnlwYXNzIHRoZSBgaHRvbmwo
KWAgYnVnLCBhcwordGhlIHNvbHV0aW9uIG11c3Qgd29yayB3aXRoIGRpZmZlcmVudCBjb21waWxl
cnMgb24gdmFyaW91cyBwbGF0Zm9ybXMuCisKK2BodG9ubCgpYCBoYXMgc29tZSBvdGhlciBwcm9i
bGVtcyBhcyBkZXNjcmliZWQgaW4gYC8vdXRpbC9lbmRpYW4vZW5kaWFuLmhgLAord2hpY2ggZGVm
aW5lcyBgZ2h0b25sKClgIHRvIHJlcGxhY2UgaXQuIGBnaHRvbmwoKWAgZG9lcyB0aGUgc2FtZSB0
aGluZyBgaHRvbmwoKWAKK2RvZXMsIG9ubHkgd2l0aG91dCBpdHMgcHJvYmxlbXMuIFdlIHN1Z2dl
c3QgeW91IHRvIHVzZSBgZ2h0b25sKClgIGluc3RlYWQgb2YKK2BodG9ubCgpYCwgYm90aCBpbiB5
b3VyIHRlc3RzIGFuZCBwcm9kdWN0aW9uIGNvZGUuCisKK2AvL3V0aWwvZW5kaWFuL2VuZGlhbi5o
YCBhbHNvIGRlZmluZXMgYGdodG9ucygpYCwgd2hpY2ggc29sdmVzIHNpbWlsYXIgcHJvYmxlbXMK
K2luIGBodG9ucygpYC4KKworRG9uJ3QgZm9yZ2V0IHRvIGFkZCBgLy91dGlsL2VuZGlhbmAgdG8g
dGhlIGxpc3Qgb2YgZGVwZW5kZW5jaWVzIGluIHRoZSBgQlVJTERgCitmaWxlIHdoZXJldmVyIGBn
aHRvbmwoKWAgYW5kIGBnaHRvbnMoKWAgYXJlIHVzZWQuIFRoZSBsaWJyYXJ5IGNvbnNpc3RzIG9m
IGEKK3NpbmdsZSBoZWFkZXIgZmlsZSBhbmQgd2lsbCBub3QgYmxvYXQgeW91ciBiaW5hcnkuCisK
KyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgInVuZGVmaW5lZCByZWZlcmVuY2VzIiB0
byBzb21lIHN0YXRpYyBjb25zdCBtZW1iZXIgdmFyaWFibGVzLCBidXQgSSBkaWQgZGVmaW5lIHRo
ZW0gaW4gdGhlIGNsYXNzIGJvZHkuIFdoYXQncyB3cm9uZz8KKworSWYgeW91ciBjbGFzcyBoYXMg
YSBzdGF0aWMgZGF0YSBtZW1iZXI6CisKK2BgYGMrKworLy8gZm9vLmgKK2NsYXNzIEZvbyB7Cisg
IC4uLgorICBzdGF0aWMgY29uc3QgaW50IGtCYXIgPSAxMDA7Cit9OworYGBgCisKK1lvdSBhbHNv
IG5lZWQgdG8gZGVmaW5lIGl0ICpvdXRzaWRlKiBvZiB0aGUgY2xhc3MgYm9keSBpbiBgZm9vLmNj
YDoKKworYGBgYysrCitjb25zdCBpbnQgRm9vOjprQmFyOyAgLy8gTm8gaW5pdGlhbGl6ZXIgaGVy
ZS4KK2BgYAorCitPdGhlcndpc2UgeW91ciBjb2RlIGlzICoqaW52YWxpZCBDKysqKiwgYW5kIG1h
eSBicmVhayBpbiB1bmV4cGVjdGVkIHdheXMuIEluCitwYXJ0aWN1bGFyLCB1c2luZyBpdCBpbiBn
b29nbGV0ZXN0IGNvbXBhcmlzb24gYXNzZXJ0aW9ucyAoYEVYUEVDVF9FUWAsIGV0Yykgd2lsbAor
Z2VuZXJhdGUgYW4gInVuZGVmaW5lZCByZWZlcmVuY2UiIGxpbmtlciBlcnJvci4gVGhlIGZhY3Qg
dGhhdCAiaXQgdXNlZCB0byB3b3JrIgorZG9lc24ndCBtZWFuIGl0J3MgdmFsaWQuIEl0IGp1c3Qg
bWVhbnMgdGhhdCB5b3Ugd2VyZSBsdWNreS4gOi0pCisKKyMjIENhbiBJIGRlcml2ZSBhIHRlc3Qg
Zml4dHVyZSBmcm9tIGFub3RoZXI/CisKK1llcy4KKworRWFjaCB0ZXN0IGZpeHR1cmUgaGFzIGEg
Y29ycmVzcG9uZGluZyBhbmQgc2FtZSBuYW1lZCB0ZXN0IGNhc2UuIFRoaXMgbWVhbnMgb25seQor
b25lIHRlc3QgY2FzZSBjYW4gdXNlIGEgcGFydGljdWxhciBmaXh0dXJlLiBTb21ldGltZXMsIGhv
d2V2ZXIsIG11bHRpcGxlIHRlc3QKK2Nhc2VzIG1heSB3YW50IHRvIHVzZSB0aGUgc2FtZSBvciBz
bGlnaHRseSBkaWZmZXJlbnQgZml4dHVyZXMuIEZvciBleGFtcGxlLCB5b3UKK21heSB3YW50IHRv
IG1ha2Ugc3VyZSB0aGF0IGFsbCBvZiBhIEdVSSBsaWJyYXJ5J3MgdGVzdCBjYXNlcyBkb24ndCBs
ZWFrCitpbXBvcnRhbnQgc3lzdGVtIHJlc291cmNlcyBsaWtlIGZvbnRzIGFuZCBicnVzaGVzLgor
CitJbiBnb29nbGV0ZXN0LCB5b3Ugc2hhcmUgYSBmaXh0dXJlIGFtb25nIHRlc3QgY2FzZXMgYnkg
cHV0dGluZyB0aGUgc2hhcmVkIGxvZ2ljCitpbiBhIGJhc2UgdGVzdCBmaXh0dXJlLCB0aGVuIGRl
cml2aW5nIGZyb20gdGhhdCBiYXNlIGEgc2VwYXJhdGUgZml4dHVyZSBmb3IgZWFjaAordGVzdCBj
YXNlIHRoYXQgd2FudHMgdG8gdXNlIHRoaXMgY29tbW9uIGxvZ2ljLiBZb3UgdGhlbiB1c2UgYFRF
U1RfRigpYCB0byB3cml0ZQordGVzdHMgdXNpbmcgZWFjaCBkZXJpdmVkIGZpeHR1cmUuCisKK1R5
cGljYWxseSwgeW91ciBjb2RlIGxvb2tzIGxpa2UgdGhpczoKKworYGBgYysrCisvLyBEZWZpbmVz
IGEgYmFzZSB0ZXN0IGZpeHR1cmUuCitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLi4uCit9OworCisvLyBEZXJpdmVzIGEgZml4dHVyZSBG
b29UZXN0IGZyb20gQmFzZVRlc3QuCitjbGFzcyBGb29UZXN0IDogcHVibGljIEJhc2VUZXN0IHsK
KyBwcm90ZWN0ZWQ6CisgIHZvaWQgU2V0VXAoKSBvdmVycmlkZSB7CisgICAgQmFzZVRlc3Q6OlNl
dFVwKCk7ICAvLyBTZXRzIHVwIHRoZSBiYXNlIGZpeHR1cmUgZmlyc3QuCisgICAgLi4uIGFkZGl0
aW9uYWwgc2V0LXVwIHdvcmsgLi4uCisgIH0KKworICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUg
eworICAgIC4uLiBjbGVhbi11cCB3b3JrIGZvciBGb29UZXN0IC4uLgorICAgIEJhc2VUZXN0OjpU
ZWFyRG93bigpOyAgLy8gUmVtZW1iZXIgdG8gdGVhciBkb3duIHRoZSBiYXNlIGZpeHR1cmUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFmdGVyIGNsZWFuaW5nIHVwIEZvb1Rlc3QhCisg
IH0KKworICAuLi4gZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMgZm9yIEZvb1Rlc3QgLi4uCit9Owor
CisvLyBUZXN0cyB0aGF0IHVzZSB0aGUgZml4dHVyZSBGb29UZXN0LgorVEVTVF9GKEZvb1Rlc3Qs
IEJhcikgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIEJheikgeyAuLi4gfQorCisuLi4gYWRkaXRp
b25hbCBmaXh0dXJlcyBkZXJpdmVkIGZyb20gQmFzZVRlc3QgLi4uCitgYGAKKworSWYgbmVjZXNz
YXJ5LCB5b3UgY2FuIGNvbnRpbnVlIHRvIGRlcml2ZSB0ZXN0IGZpeHR1cmVzIGZyb20gYSBkZXJp
dmVkIGZpeHR1cmUuCitnb29nbGV0ZXN0IGhhcyBubyBsaW1pdCBvbiBob3cgZGVlcCB0aGUgaGll
cmFyY2h5IGNhbiBiZS4KKworRm9yIGEgY29tcGxldGUgZXhhbXBsZSB1c2luZyBkZXJpdmVkIHRl
c3QgZml4dHVyZXMsIHNlZSBbZ29vZ2xldGVzdAorc2FtcGxlXShodHRwczovL2dpdGh1Yi5jb20v
Z29vZ2xlL2dvb2dsZXRlc3QvYmxvYi9tYXN0ZXIvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTVf
dW5pdHRlc3QuY2MpCisKKyMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyAidm9pZCB2YWx1ZSBub3Qg
aWdub3JlZCBhcyBpdCBvdWdodCB0byBiZS4iIFdoYXQgZG9lcyB0aGlzIG1lYW4/CisKK1lvdSdy
ZSBwcm9iYWJseSB1c2luZyBhbiBgQVNTRVJUXyooKWAgaW4gYSBmdW5jdGlvbiB0aGF0IGRvZXNu
J3QgcmV0dXJuIGB2b2lkYC4KK2BBU1NFUlRfKigpYCBjYW4gb25seSBiZSB1c2VkIGluIGB2b2lk
YCBmdW5jdGlvbnMsIGR1ZSB0byBleGNlcHRpb25zIGJlaW5nCitkaXNhYmxlZCBieSBvdXIgYnVp
bGQgc3lzdGVtLiBQbGVhc2Ugc2VlIG1vcmUgZGV0YWlscworW2hlcmVdKGFkdmFuY2VkLm1kI2Fz
c2VydGlvbi1wbGFjZW1lbnQpLgorCisjIyBNeSBkZWF0aCB0ZXN0IGhhbmdzIChvciBzZWctZmF1
bHRzKS4gSG93IGRvIEkgZml4IGl0PworCitJbiBnb29nbGV0ZXN0LCBkZWF0aCB0ZXN0cyBhcmUg
cnVuIGluIGEgY2hpbGQgcHJvY2VzcyBhbmQgdGhlIHdheSB0aGV5IHdvcmsgaXMKK2RlbGljYXRl
LiBUbyB3cml0ZSBkZWF0aCB0ZXN0cyB5b3UgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZCBob3cg
dGhleSB3b3JrLgorUGxlYXNlIG1ha2Ugc3VyZSB5b3UgaGF2ZSByZWFkIFt0aGlzXShhZHZhbmNl
ZC5tZCNob3ctaXQtd29ya3MpLgorCitJbiBwYXJ0aWN1bGFyLCBkZWF0aCB0ZXN0cyBkb24ndCBs
aWtlIGhhdmluZyBtdWx0aXBsZSB0aHJlYWRzIGluIHRoZSBwYXJlbnQKK3Byb2Nlc3MuIFNvIHRo
ZSBmaXJzdCB0aGluZyB5b3UgY2FuIHRyeSBpcyB0byBlbGltaW5hdGUgY3JlYXRpbmcgdGhyZWFk
cyBvdXRzaWRlCitvZiBgRVhQRUNUX0RFQVRIKClgLiBGb3IgZXhhbXBsZSwgeW91IG1heSB3YW50
IHRvIHVzZSBbbW9ja3NdKC4uLy4uL2dvb2dsZW1vY2spCitvciBmYWtlIG9iamVjdHMgaW5zdGVh
ZCBvZiByZWFsIG9uZXMgaW4geW91ciB0ZXN0cy4KKworU29tZXRpbWVzIHRoaXMgaXMgaW1wb3Nz
aWJsZSBhcyBzb21lIGxpYnJhcnkgeW91IG11c3QgdXNlIG1heSBiZSBjcmVhdGluZwordGhyZWFk
cyBiZWZvcmUgYG1haW4oKWAgaXMgZXZlbiByZWFjaGVkLiBJbiB0aGlzIGNhc2UsIHlvdSBjYW4g
dHJ5IHRvIG1pbmltaXplCit0aGUgY2hhbmNlIG9mIGNvbmZsaWN0cyBieSBlaXRoZXIgbW92aW5n
IGFzIG1hbnkgYWN0aXZpdGllcyBhcyBwb3NzaWJsZSBpbnNpZGUKK2BFWFBFQ1RfREVBVEgoKWAg
KGluIHRoZSBleHRyZW1lIGNhc2UsIHlvdSB3YW50IHRvIG1vdmUgZXZlcnl0aGluZyBpbnNpZGUp
LCBvcgorbGVhdmluZyBhcyBmZXcgdGhpbmdzIGFzIHBvc3NpYmxlIGluIGl0LiBBbHNvLCB5b3Ug
Y2FuIHRyeSB0byBzZXQgdGhlIGRlYXRoIHRlc3QKK3N0eWxlIHRvIGAidGhyZWFkc2FmZSJgLCB3
aGljaCBpcyBzYWZlciBidXQgc2xvd2VyLCBhbmQgc2VlIGlmIGl0IGhlbHBzLgorCitJZiB5b3Ug
Z28gd2l0aCB0aHJlYWQtc2FmZSBkZWF0aCB0ZXN0cywgcmVtZW1iZXIgdGhhdCB0aGV5IHJlcnVu
IHRoZSB0ZXN0Citwcm9ncmFtIGZyb20gdGhlIGJlZ2lubmluZyBpbiB0aGUgY2hpbGQgcHJvY2Vz
cy4gVGhlcmVmb3JlIG1ha2Ugc3VyZSB5b3VyCitwcm9ncmFtIGNhbiBydW4gc2lkZS1ieS1zaWRl
IHdpdGggaXRzZWxmIGFuZCBpcyBkZXRlcm1pbmlzdGljLgorCitJbiB0aGUgZW5kLCB0aGlzIGJv
aWxzIGRvd24gdG8gZ29vZCBjb25jdXJyZW50IHByb2dyYW1taW5nLiBZb3UgaGF2ZSB0byBtYWtl
CitzdXJlIHRoYXQgdGhlcmUgaXMgbm8gcmFjZSBjb25kaXRpb25zIG9yIGRlYWQgbG9ja3MgaW4g
eW91ciBwcm9ncmFtLiBObyBzaWx2ZXIKK2J1bGxldCAtIHNvcnJ5IQorCisjIyBTaG91bGQgSSB1
c2UgdGhlIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3Igb2YgdGhlIHRlc3QgZml4dHVyZSBvciBTZXRV
cCgpL1RlYXJEb3duKCk/CisKK1RoZSBmaXJzdCB0aGluZyB0byByZW1lbWJlciBpcyB0aGF0IGdv
b2dsZXRlc3QgZG9lcyAqKm5vdCoqIHJldXNlIHRoZSBzYW1lIHRlc3QKK2ZpeHR1cmUgb2JqZWN0
IGFjcm9zcyBtdWx0aXBsZSB0ZXN0cy4gRm9yIGVhY2ggYFRFU1RfRmAsIGdvb2dsZXRlc3Qgd2ls
bCBjcmVhdGUKK2EgKipmcmVzaCoqIHRlc3QgZml4dHVyZSBvYmplY3QsIGltbWVkaWF0ZWx5IGNh
bGwgYFNldFVwKClgLCBydW4gdGhlIHRlc3QgYm9keSwKK2NhbGwgYFRlYXJEb3duKClgLCBhbmQg
dGhlbiBkZWxldGUgdGhlIHRlc3QgZml4dHVyZSBvYmplY3QuCisKK1doZW4geW91IG5lZWQgdG8g
d3JpdGUgcGVyLXRlc3Qgc2V0LXVwIGFuZCB0ZWFyLWRvd24gbG9naWMsIHlvdSBoYXZlIHRoZSBj
aG9pY2UKK2JldHdlZW4gdXNpbmcgdGhlIHRlc3QgZml4dHVyZSBjb25zdHJ1Y3Rvci9kZXN0cnVj
dG9yIG9yIGBTZXRVcCgpL1RlYXJEb3duKClgLgorVGhlIGZvcm1lciBpcyB1c3VhbGx5IHByZWZl
cnJlZCwgYXMgaXQgaGFzIHRoZSBmb2xsb3dpbmcgYmVuZWZpdHM6CisKKyogICBCeSBpbml0aWFs
aXppbmcgYSBtZW1iZXIgdmFyaWFibGUgaW4gdGhlIGNvbnN0cnVjdG9yLCB3ZSBoYXZlIHRoZSBv
cHRpb24gdG8KKyAgICBtYWtlIGl0IGBjb25zdGAsIHdoaWNoIGhlbHBzIHByZXZlbnQgYWNjaWRl
bnRhbCBjaGFuZ2VzIHRvIGl0cyB2YWx1ZSBhbmQKKyAgICBtYWtlcyB0aGUgdGVzdHMgbW9yZSBv
YnZpb3VzbHkgY29ycmVjdC4KKyogICBJbiBjYXNlIHdlIG5lZWQgdG8gc3ViY2xhc3MgdGhlIHRl
c3QgZml4dHVyZSBjbGFzcywgdGhlIHN1YmNsYXNzJworICAgIGNvbnN0cnVjdG9yIGlzIGd1YXJh
bnRlZWQgdG8gY2FsbCB0aGUgYmFzZSBjbGFzcycgY29uc3RydWN0b3IgKmZpcnN0KiwgYW5kCisg
ICAgdGhlIHN1YmNsYXNzJyBkZXN0cnVjdG9yIGlzIGd1YXJhbnRlZWQgdG8gY2FsbCB0aGUgYmFz
ZSBjbGFzcycgZGVzdHJ1Y3RvcgorICAgICphZnRlcndhcmQqLiBXaXRoIGBTZXRVcCgpL1RlYXJE
b3duKClgLCBhIHN1YmNsYXNzIG1heSBtYWtlIHRoZSBtaXN0YWtlIG9mCisgICAgZm9yZ2V0dGlu
ZyB0byBjYWxsIHRoZSBiYXNlIGNsYXNzJyBgU2V0VXAoKS9UZWFyRG93bigpYCBvciBjYWxsIHRo
ZW0gYXQgdGhlCisgICAgd3JvbmcgdGltZS4KKworWW91IG1heSBzdGlsbCB3YW50IHRvIHVzZSBg
U2V0VXAoKS9UZWFyRG93bigpYCBpbiB0aGUgZm9sbG93aW5nIHJhcmUgY2FzZXM6CisKKyogICBJ
biB0aGUgYm9keSBvZiBhIGNvbnN0cnVjdG9yIChvciBkZXN0cnVjdG9yKSwgaXQncyBub3QgcG9z
c2libGUgdG8gdXNlIHRoZQorICAgIGBBU1NFUlRfeHhgIG1hY3Jvcy4gVGhlcmVmb3JlLCBpZiB0
aGUgc2V0LXVwIG9wZXJhdGlvbiBjb3VsZCBjYXVzZSBhIGZhdGFsCisgICAgdGVzdCBmYWlsdXJl
IHRoYXQgc2hvdWxkIHByZXZlbnQgdGhlIHRlc3QgZnJvbSBydW5uaW5nLCBpdCdzIG5lY2Vzc2Fy
eSB0bworICAgIHVzZSBhIGBDSEVDS2AgbWFjcm8gb3IgdG8gdXNlIGBTZXRVcCgpYCBpbnN0ZWFk
IG9mIGEgY29uc3RydWN0b3IuCisqICAgSWYgdGhlIHRlYXItZG93biBvcGVyYXRpb24gY291bGQg
dGhyb3cgYW4gZXhjZXB0aW9uLCB5b3UgbXVzdCB1c2UKKyAgICBgVGVhckRvd24oKWAgYXMgb3Bw
b3NlZCB0byB0aGUgZGVzdHJ1Y3RvciwgYXMgdGhyb3dpbmcgaW4gYSBkZXN0cnVjdG9yIGxlYWRz
CisgICAgdG8gdW5kZWZpbmVkIGJlaGF2aW9yIGFuZCB1c3VhbGx5IHdpbGwga2lsbCB5b3VyIHBy
b2dyYW0gcmlnaHQgYXdheS4gTm90ZQorICAgIHRoYXQgbWFueSBzdGFuZGFyZCBsaWJyYXJpZXMg
KGxpa2UgU1RMKSBtYXkgdGhyb3cgd2hlbiBleGNlcHRpb25zIGFyZQorICAgIGVuYWJsZWQgaW4g
dGhlIGNvbXBpbGVyLiBUaGVyZWZvcmUgeW91IHNob3VsZCBwcmVmZXIgYFRlYXJEb3duKClgIGlm
IHlvdQorICAgIHdhbnQgdG8gd3JpdGUgcG9ydGFibGUgdGVzdHMgdGhhdCB3b3JrIHdpdGggb3Ig
d2l0aG91dCBleGNlcHRpb25zLgorKiAgIFRoZSBnb29nbGV0ZXN0IHRlYW0gaXMgY29uc2lkZXJp
bmcgbWFraW5nIHRoZSBhc3NlcnRpb24gbWFjcm9zIHRocm93IG9uCisgICAgcGxhdGZvcm1zIHdo
ZXJlIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQgKGUuZy4gV2luZG93cywgTWFjIE9TLCBhbmQgTGlu
dXgKKyAgICBjbGllbnQtc2lkZSksIHdoaWNoIHdpbGwgZWxpbWluYXRlIHRoZSBuZWVkIGZvciB0
aGUgdXNlciB0byBwcm9wYWdhdGUKKyAgICBmYWlsdXJlcyBmcm9tIGEgc3Vicm91dGluZSB0byBp
dHMgY2FsbGVyLiBUaGVyZWZvcmUsIHlvdSBzaG91bGRuJ3QgdXNlCisgICAgZ29vZ2xldGVzdCBh
c3NlcnRpb25zIGluIGEgZGVzdHJ1Y3RvciBpZiB5b3VyIGNvZGUgY291bGQgcnVuIG9uIHN1Y2gg
YQorICAgIHBsYXRmb3JtLgorKiAgIEluIGEgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciwgeW91
IGNhbm5vdCBtYWtlIGEgdmlydHVhbCBmdW5jdGlvbiBjYWxsIG9uCisgICAgdGhpcyBvYmplY3Qu
IChZb3UgY2FuIGNhbGwgYSBtZXRob2QgZGVjbGFyZWQgYXMgdmlydHVhbCwgYnV0IGl0IHdpbGwg
YmUKKyAgICBzdGF0aWNhbGx5IGJvdW5kLikgVGhlcmVmb3JlLCBpZiB5b3UgbmVlZCB0byBjYWxs
IGEgbWV0aG9kIHRoYXQgd2lsbCBiZQorICAgIG92ZXJyaWRkZW4gaW4gYSBkZXJpdmVkIGNsYXNz
LCB5b3UgaGF2ZSB0byB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAuCisKKworIyMgVGhlIGNvbXBp
bGVyIGNvbXBsYWlucyAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gdG8gY2FsbCIgd2hlbiBJIHVzZSBB
U1NFUlRfUFJFRCouIEhvdyBkbyBJIGZpeCBpdD8KKworSWYgdGhlIHByZWRpY2F0ZSBmdW5jdGlv
biB5b3UgdXNlIGluIGBBU1NFUlRfUFJFRCpgIG9yIGBFWFBFQ1RfUFJFRCpgIGlzCitvdmVybG9h
ZGVkIG9yIGEgdGVtcGxhdGUsIHRoZSBjb21waWxlciB3aWxsIGhhdmUgdHJvdWJsZSBmaWd1cmlu
ZyBvdXQgd2hpY2gKK292ZXJsb2FkZWQgdmVyc2lvbiBpdCBzaG91bGQgdXNlLiBgQVNTRVJUX1BS
RURfRk9STUFUKmAgYW5kCitgRVhQRUNUX1BSRURfRk9STUFUKmAgZG9uJ3QgaGF2ZSB0aGlzIHBy
b2JsZW0uCisKK0lmIHlvdSBzZWUgdGhpcyBlcnJvciwgeW91IG1pZ2h0IHdhbnQgdG8gc3dpdGNo
IHRvCitgKEFTU0VSVHxFWFBFQ1QpX1BSRURfRk9STUFUKmAsIHdoaWNoIHdpbGwgYWxzbyBnaXZl
IHlvdSBhIGJldHRlciBmYWlsdXJlCittZXNzYWdlLiBJZiwgaG93ZXZlciwgdGhhdCBpcyBub3Qg
YW4gb3B0aW9uLCB5b3UgY2FuIHJlc29sdmUgdGhlIHByb2JsZW0gYnkKK2V4cGxpY2l0bHkgdGVs
bGluZyB0aGUgY29tcGlsZXIgd2hpY2ggdmVyc2lvbiB0byBwaWNrLgorCitGb3IgZXhhbXBsZSwg
c3VwcG9zZSB5b3UgaGF2ZQorCitgYGBjKysKK2Jvb2wgSXNQb3NpdGl2ZShpbnQgbikgeworICBy
ZXR1cm4gbiA+IDA7Cit9CisKK2Jvb2wgSXNQb3NpdGl2ZShkb3VibGUgeCkgeworICByZXR1cm4g
eCA+IDA7Cit9CitgYGAKKworeW91IHdpbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IgaWYgeW91IHdy
aXRlCisKK2BgYGMrKworRVhQRUNUX1BSRUQxKElzUG9zaXRpdmUsIDUpOworYGBgCisKK0hvd2V2
ZXIsIHRoaXMgd2lsbCB3b3JrOgorCitgYGBjKysKK0VYUEVDVF9QUkVEMShzdGF0aWNfY2FzdDxi
b29sICgqKShpbnQpPihJc1Bvc2l0aXZlKSwgNSk7CitgYGAKKworKFRoZSBzdHVmZiBpbnNpZGUg
dGhlIGFuZ2xlZCBicmFja2V0cyBmb3IgdGhlIGBzdGF0aWNfY2FzdGAgb3BlcmF0b3IgaXMgdGhl
IHR5cGUKK29mIHRoZSBmdW5jdGlvbiBwb2ludGVyIGZvciB0aGUgYGludGAtdmVyc2lvbiBvZiBg
SXNQb3NpdGl2ZSgpYC4pCisKK0FzIGFub3RoZXIgZXhhbXBsZSwgd2hlbiB5b3UgaGF2ZSBhIHRl
bXBsYXRlIGZ1bmN0aW9uCisKK2BgYGMrKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citib29sIElz
TmVnYXRpdmUoVCB4KSB7CisgIHJldHVybiB4IDwgMDsKK30KK2BgYAorCit5b3UgY2FuIHVzZSBp
dCBpbiBhIHByZWRpY2F0ZSBhc3NlcnRpb24gbGlrZSB0aGlzOgorCitgYGBjKysKK0FTU0VSVF9Q
UkVEMShJc05lZ2F0aXZlPGludD4sIC01KTsKK2BgYAorCitUaGluZ3MgYXJlIG1vcmUgaW50ZXJl
c3RpbmcgaWYgeW91ciB0ZW1wbGF0ZSBoYXMgbW9yZSB0aGFuIG9uZSBwYXJhbWV0ZXJzLiBUaGUK
K2ZvbGxvd2luZyB3b24ndCBjb21waWxlOgorCitgYGBjKysKK0FTU0VSVF9QUkVEMihHcmVhdGVy
VGhhbjxpbnQsIGludD4sIDUsIDApOworYGBgCisKK2FzIHRoZSBDKysgcHJlLXByb2Nlc3NvciB0
aGlua3MgeW91IGFyZSBnaXZpbmcgYEFTU0VSVF9QUkVEMmAgNCBhcmd1bWVudHMsIHdoaWNoCitp
cyBvbmUgbW9yZSB0aGFuIGV4cGVjdGVkLiBUaGUgd29ya2Fyb3VuZCBpcyB0byB3cmFwIHRoZSBw
cmVkaWNhdGUgZnVuY3Rpb24gaW4KK3BhcmVudGhlc2VzOgorCitgYGBjKysKK0FTU0VSVF9QUkVE
MigoR3JlYXRlclRoYW48aW50LCBpbnQ+KSwgNSwgMCk7CitgYGAKKworCisjIyBNeSBjb21waWxl
ciBjb21wbGFpbnMgYWJvdXQgImlnbm9yaW5nIHJldHVybiB2YWx1ZSIgd2hlbiBJIGNhbGwgUlVO
X0FMTF9URVNUUygpLiBXaHk/CisKK1NvbWUgcGVvcGxlIGhhZCBiZWVuIGlnbm9yaW5nIHRoZSBy
ZXR1cm4gdmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAuIFRoYXQgaXMsCitpbnN0ZWFkIG9mCisK
K2BgYGMrKworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworYGBgCisKK3RoZXkgd3JpdGUKKwor
YGBgYysrCisgIFJVTl9BTExfVEVTVFMoKTsKK2BgYAorCitUaGlzIGlzICoqd3JvbmcgYW5kIGRh
bmdlcm91cyoqLiBUaGUgdGVzdGluZyBzZXJ2aWNlcyBuZWVkcyB0byBzZWUgdGhlIHJldHVybgor
dmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGlmIGEgdGVz
dCBoYXMgcGFzc2VkLiBJZiB5b3VyCitgbWFpbigpYCBmdW5jdGlvbiBpZ25vcmVzIGl0LCB5b3Vy
IHRlc3Qgd2lsbCBiZSBjb25zaWRlcmVkIHN1Y2Nlc3NmdWwgZXZlbiBpZiBpdAoraGFzIGEgZ29v
Z2xldGVzdCBhc3NlcnRpb24gZmFpbHVyZS4gVmVyeSBiYWQuCisKK1dlIGhhdmUgZGVjaWRlZCB0
byBmaXggdGhpcyAodGhhbmtzIHRvIE1pY2hhZWwgQ2hhc3RhaW4gZm9yIHRoZSBpZGVhKS4gTm93
LCB5b3VyCitjb2RlIHdpbGwgbm8gbG9uZ2VyIGJlIGFibGUgdG8gaWdub3JlIGBSVU5fQUxMX1RF
U1RTKClgIHdoZW4gY29tcGlsZWQgd2l0aAorYGdjY2AuIElmIHlvdSBkbyBzbywgeW91J2xsIGdl
dCBhIGNvbXBpbGVyIGVycm9yLgorCitJZiB5b3Ugc2VlIHRoZSBjb21waWxlciBjb21wbGFpbmlu
ZyBhYm91dCB5b3UgaWdub3JpbmcgdGhlIHJldHVybiB2YWx1ZSBvZgorYFJVTl9BTExfVEVTVFMo
KWAsIHRoZSBmaXggaXMgc2ltcGxlOiBqdXN0IG1ha2Ugc3VyZSBpdHMgdmFsdWUgaXMgdXNlZCBh
cyB0aGUKK3JldHVybiB2YWx1ZSBvZiBgbWFpbigpYC4KKworQnV0IGhvdyBjb3VsZCB3ZSBpbnRy
b2R1Y2UgYSBjaGFuZ2UgdGhhdCBicmVha3MgZXhpc3RpbmcgdGVzdHM/IFdlbGwsIGluIHRoaXMK
K2Nhc2UsIHRoZSBjb2RlIHdhcyBhbHJlYWR5IGJyb2tlbiBpbiB0aGUgZmlyc3QgcGxhY2UsIHNv
IHdlIGRpZG4ndCBicmVhayBpdC4gOi0pCisKKyMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyB0aGF0
IGEgY29uc3RydWN0b3IgKG9yIGRlc3RydWN0b3IpIGNhbm5vdCByZXR1cm4gYSB2YWx1ZS4gV2hh
dCdzIGdvaW5nIG9uPworCitEdWUgdG8gYSBwZWN1bGlhcml0eSBvZiBDKyssIGluIG9yZGVyIHRv
IHN1cHBvcnQgdGhlIHN5bnRheCBmb3Igc3RyZWFtaW5nCittZXNzYWdlcyB0byBhbiBgQVNTRVJU
XypgLCBlLmcuCisKK2BgYGMrKworICBBU1NFUlRfRVEoMSwgRm9vKCkpIDw8ICJibGFoIGJsYWgi
IDw8IGZvbzsKK2BgYAorCit3ZSBoYWQgdG8gZ2l2ZSB1cCB1c2luZyBgQVNTRVJUKmAgYW5kIGBG
QUlMKmAgKGJ1dCBub3QgYEVYUEVDVCpgIGFuZAorYEFERF9GQUlMVVJFKmApIGluIGNvbnN0cnVj
dG9ycyBhbmQgZGVzdHJ1Y3RvcnMuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIG1vdmUgdGhlCitjb250
ZW50IG9mIHlvdXIgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciB0byBhIHByaXZhdGUgdm9pZCBtZW1i
ZXIgZnVuY3Rpb24sIG9yCitzd2l0Y2ggdG8gYEVYUEVDVF8qKClgIGlmIHRoYXQgd29ya3MuIFRo
aXMKK1tzZWN0aW9uXShhZHZhbmNlZC5tZCNhc3NlcnRpb24tcGxhY2VtZW50KSBpbiB0aGUgdXNl
cidzIGd1aWRlIGV4cGxhaW5zIGl0LgorCisjIyBNeSBTZXRVcCgpIGZ1bmN0aW9uIGlzIG5vdCBj
YWxsZWQuIFdoeT8KKworQysrIGlzIGNhc2Utc2Vuc2l0aXZlLiBEaWQgeW91IHNwZWxsIGl0IGFz
IGBTZXR1cCgpYD8KKworU2ltaWxhcmx5LCBzb21ldGltZXMgcGVvcGxlIHNwZWxsIGBTZXRVcFRl
c3RDYXNlKClgIGFzIGBTZXR1cFRlc3RDYXNlKClgIGFuZAord29uZGVyIHdoeSBpdCdzIG5ldmVy
IGNhbGxlZC4KKworIyMgSG93IGRvIEkganVtcCB0byB0aGUgbGluZSBvZiBhIGZhaWx1cmUgaW4g
RW1hY3MgZGlyZWN0bHk/CisKK2dvb2dsZXRlc3QncyBmYWlsdXJlIG1lc3NhZ2UgZm9ybWF0IGlz
IHVuZGVyc3Rvb2QgYnkgRW1hY3MgYW5kIG1hbnkgb3RoZXIgSURFcywKK2xpa2UgYWNtZSBhbmQg
WENvZGUuIElmIGEgZ29vZ2xldGVzdCBtZXNzYWdlIGlzIGluIGEgY29tcGlsYXRpb24gYnVmZmVy
IGluCitFbWFjcywgdGhlbiBpdCdzIGNsaWNrYWJsZS4KKworCisjIyBJIGhhdmUgc2V2ZXJhbCB0
ZXN0IGNhc2VzIHdoaWNoIHNoYXJlIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBsb2dpYywgZG8gSSBo
YXZlIHRvIGRlZmluZSBhIG5ldyB0ZXN0IGZpeHR1cmUgY2xhc3MgZm9yIGVhY2ggb2YgdGhlbT8g
VGhpcyBzZWVtcyBwcmV0dHkgdGVkaW91cy4KKworWW91IGRvbid0IGhhdmUgdG8uIEluc3RlYWQg
b2YKKworYGBgYysrCitjbGFzcyBGb29UZXN0IDogcHVibGljIEJhc2VUZXN0IHt9OworCitURVNU
X0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9CisK
K2NsYXNzIEJhclRlc3QgOiBwdWJsaWMgQmFzZVRlc3Qge307CisKK1RFU1RfRihCYXJUZXN0LCBB
YmMpIHsgLi4uIH0KK1RFU1RfRihCYXJUZXN0LCBEZWYpIHsgLi4uIH0KK2BgYAorCit5b3UgY2Fu
IHNpbXBseSBgdHlwZWRlZmAgdGhlIHRlc3QgZml4dHVyZXM6CisKK2BgYGMrKwordHlwZWRlZiBC
YXNlVGVzdCBGb29UZXN0OworCitURVNUX0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0Yo
Rm9vVGVzdCwgRGVmKSB7IC4uLiB9CisKK3R5cGVkZWYgQmFzZVRlc3QgQmFyVGVzdDsKKworVEVT
VF9GKEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIERlZikgeyAuLi4gfQor
YGBgCisKKyMjIGdvb2dsZXRlc3Qgb3V0cHV0IGlzIGJ1cmllZCBpbiBhIHdob2xlIGJ1bmNoIG9m
IExPRyBtZXNzYWdlcy4gV2hhdCBkbyBJIGRvPworCitUaGUgZ29vZ2xldGVzdCBvdXRwdXQgaXMg
bWVhbnQgdG8gYmUgYSBjb25jaXNlIGFuZCBodW1hbi1mcmllbmRseSByZXBvcnQuIElmCit5b3Vy
IHRlc3QgZ2VuZXJhdGVzIHRleHR1YWwgb3V0cHV0IGl0c2VsZiwgaXQgd2lsbCBtaXggd2l0aCB0
aGUgZ29vZ2xldGVzdAorb3V0cHV0LCBtYWtpbmcgaXQgaGFyZCB0byByZWFkLiBIb3dldmVyLCB0
aGVyZSBpcyBhbiBlYXN5IHNvbHV0aW9uIHRvIHRoaXMKK3Byb2JsZW0uCisKK1NpbmNlIGBMT0dg
IG1lc3NhZ2VzIGdvIHRvIHN0ZGVyciwgd2UgZGVjaWRlZCB0byBsZXQgZ29vZ2xldGVzdCBvdXRw
dXQgZ28gdG8KK3N0ZG91dC4gVGhpcyB3YXksIHlvdSBjYW4gZWFzaWx5IHNlcGFyYXRlIHRoZSB0
d28gdXNpbmcgcmVkaXJlY3Rpb24uIEZvcgorZXhhbXBsZToKKworYGBgc2hlbGwKKyQgLi9teV90
ZXN0ID4gZ3Rlc3Rfb3V0cHV0LnR4dAorYGBgCisKKworIyMgV2h5IHNob3VsZCBJIHByZWZlciB0
ZXN0IGZpeHR1cmVzIG92ZXIgZ2xvYmFsIHZhcmlhYmxlcz8KKworVGhlcmUgYXJlIHNldmVyYWwg
Z29vZCByZWFzb25zOgorCisxLiAgSXQncyBsaWtlbHkgeW91ciB0ZXN0IG5lZWRzIHRvIGNoYW5n
ZSB0aGUgc3RhdGVzIG9mIGl0cyBnbG9iYWwgdmFyaWFibGVzLgorICAgIFRoaXMgbWFrZXMgaXQg
ZGlmZmljdWx0IHRvIGtlZXAgc2lkZSBlZmZlY3RzIGZyb20gZXNjYXBpbmcgb25lIHRlc3QgYW5k
CisgICAgY29udGFtaW5hdGluZyBvdGhlcnMsIG1ha2luZyBkZWJ1Z2dpbmcgZGlmZmljdWx0LiBC
eSB1c2luZyBmaXh0dXJlcywgZWFjaAorICAgIHRlc3QgaGFzIGEgZnJlc2ggc2V0IG9mIHZhcmlh
YmxlcyB0aGF0J3MgZGlmZmVyZW50IChidXQgd2l0aCB0aGUgc2FtZQorICAgIG5hbWVzKS4gVGh1
cywgdGVzdHMgYXJlIGtlcHQgaW5kZXBlbmRlbnQgb2YgZWFjaCBvdGhlci4KKzEuICBHbG9iYWwg
dmFyaWFibGVzIHBvbGx1dGUgdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisxLiAgVGVzdCBmaXh0dXJl
cyBjYW4gYmUgcmV1c2VkIHZpYSBzdWJjbGFzc2luZywgd2hpY2ggY2Fubm90IGJlIGRvbmUgZWFz
aWx5CisgICAgd2l0aCBnbG9iYWwgdmFyaWFibGVzLiBUaGlzIGlzIHVzZWZ1bCBpZiBtYW55IHRl
c3QgY2FzZXMgaGF2ZSBzb21ldGhpbmcgaW4KKyAgICBjb21tb24uCisKKworICAgICMjIFdoYXQg
Y2FuIHRoZSBzdGF0ZW1lbnQgYXJndW1lbnQgaW4gQVNTRVJUX0RFQVRIKCkgYmU/CisKK2BBU1NF
UlRfREVBVEgoKnN0YXRlbWVudCosICpyZWdleCopYCAob3IgYW55IGRlYXRoIGFzc2VydGlvbiBt
YWNybykgY2FuIGJlIHVzZWQKK3doZXJldmVyIGAqc3RhdGVtZW50KmAgaXMgdmFsaWQuIFNvIGJh
c2ljYWxseSBgKnN0YXRlbWVudCpgIGNhbiBiZSBhbnkgQysrCitzdGF0ZW1lbnQgdGhhdCBtYWtl
cyBzZW5zZSBpbiB0aGUgY3VycmVudCBjb250ZXh0LiBJbiBwYXJ0aWN1bGFyLCBpdCBjYW4KK3Jl
ZmVyZW5jZSBnbG9iYWwgYW5kL29yIGxvY2FsIHZhcmlhYmxlcywgYW5kIGNhbiBiZToKKworKiAg
IGEgc2ltcGxlIGZ1bmN0aW9uIGNhbGwgKG9mdGVuIHRoZSBjYXNlKSwKKyogICBhIGNvbXBsZXgg
ZXhwcmVzc2lvbiwgb3IKKyogICBhIGNvbXBvdW5kIHN0YXRlbWVudC4KKworU29tZSBleGFtcGxl
cyBhcmUgc2hvd24gaGVyZToKKworYGBgYysrCisvLyBBIGRlYXRoIHRlc3QgY2FuIGJlIGEgc2lt
cGxlIGZ1bmN0aW9uIGNhbGwuCitURVNUKE15RGVhdGhUZXN0LCBGdW5jdGlvbkNhbGwpIHsKKyAg
QVNTRVJUX0RFQVRIKFh5eig1KSwgIlh5eiBmYWlsZWQiKTsKK30KKworLy8gT3IgYSBjb21wbGV4
IGV4cHJlc3Npb24gdGhhdCByZWZlcmVuY2VzIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zLgorVEVT
VChNeURlYXRoVGVzdCwgQ29tcGxleEV4cHJlc3Npb24pIHsKKyAgY29uc3QgYm9vbCBjID0gQ29u
ZGl0aW9uKCk7CisgIEFTU0VSVF9ERUFUSCgoYyA/IEZ1bmMxKDApIDogb2JqZWN0Mi5NZXRob2Qo
InRlc3QiKSksCisgICAgICAgICAgICAgICAiKEZ1bmMxfE1ldGhvZCkgZmFpbGVkIik7Cit9CisK
Ky8vIERlYXRoIGFzc2VydGlvbnMgY2FuIGJlIHVzZWQgYW55IHdoZXJlIGluIGEgZnVuY3Rpb24u
ICBJbgorLy8gcGFydGljdWxhciwgdGhleSBjYW4gYmUgaW5zaWRlIGEgbG9vcC4KK1RFU1QoTXlE
ZWF0aFRlc3QsIEluc2lkZUxvb3ApIHsKKyAgLy8gVmVyaWZpZXMgdGhhdCBGb28oMCksIEZvbygx
KSwgLi4uLCBhbmQgRm9vKDQpIGFsbCBkaWUuCisgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsr
KSB7CisgICAgRVhQRUNUX0RFQVRIX00oRm9vKGkpLCAiRm9vIGhhcyBcXGQrIGVycm9ycyIsCisg
ICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpNZXNzYWdlKCkgPDwgIndoZXJlIGkgaXMgIiA8
PCBpKTsKKyAgfQorfQorCisvLyBBIGRlYXRoIGFzc2VydGlvbiBjYW4gY29udGFpbiBhIGNvbXBv
dW5kIHN0YXRlbWVudC4KK1RFU1QoTXlEZWF0aFRlc3QsIENvbXBvdW5kU3RhdGVtZW50KSB7Cisg
IC8vIFZlcmlmaWVzIHRoYXQgYXQgbGVhc2Ugb25lIG9mIEJhcigwKSwgQmFyKDEpLCAuLi4sIGFu
ZAorICAvLyBCYXIoNCkgZGllcy4KKyAgQVNTRVJUX0RFQVRIKHsKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IDU7IGkrKykgeworICAgICAgQmFyKGkpOworICAgIH0KKyAgfSwKKyAgIkJhciBoYXMg
XFxkKyBlcnJvcnMiKTsKK30KK2BgYAorCitndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2MgY29udGFp
bnMgbW9yZSBleGFtcGxlcyBpZiB5b3UgYXJlIGludGVyZXN0ZWQuCisKKyMjIEkgaGF2ZSBhIGZp
eHR1cmUgY2xhc3MgYEZvb1Rlc3RgLCBidXQgYFRFU1RfRihGb29UZXN0LCBCYXIpYCBnaXZlcyBt
ZSBlcnJvciBgYCJubyBtYXRjaGluZyBmdW5jdGlvbiBmb3IgY2FsbCB0byBgRm9vVGVzdDo6Rm9v
VGVzdCgpJyJgYC4gV2h5PworCitHb29nbGV0ZXN0IG5lZWRzIHRvIGJlIGFibGUgdG8gY3JlYXRl
IG9iamVjdHMgb2YgeW91ciB0ZXN0IGZpeHR1cmUgY2xhc3MsIHNvIGl0CittdXN0IGhhdmUgYSBk
ZWZhdWx0IGNvbnN0cnVjdG9yLiBOb3JtYWxseSB0aGUgY29tcGlsZXIgd2lsbCBkZWZpbmUgb25l
IGZvciB5b3UuCitIb3dldmVyLCB0aGVyZSBhcmUgY2FzZXMgd2hlcmUgeW91IGhhdmUgdG8gZGVm
aW5lIHlvdXIgb3duOgorCisqICAgSWYgeW91IGV4cGxpY2l0bHkgZGVjbGFyZSBhIG5vbi1kZWZh
dWx0IGNvbnN0cnVjdG9yIGZvciBjbGFzcyBgRm9vVGVzdGAKKyAgICAoYERJU0FMTE9XX0VWSUxf
Q09OU1RSVUNUT1JTKClgIGRvZXMgdGhpcyksIHRoZW4geW91IG5lZWQgdG8gZGVmaW5lIGEKKyAg
ICBkZWZhdWx0IGNvbnN0cnVjdG9yLCBldmVuIGlmIGl0IHdvdWxkIGJlIGVtcHR5LgorKiAgIElm
IGBGb29UZXN0YCBoYXMgYSBjb25zdCBub24tc3RhdGljIGRhdGEgbWVtYmVyLCB0aGVuIHlvdSBo
YXZlIHRvIGRlZmluZSB0aGUKKyAgICBkZWZhdWx0IGNvbnN0cnVjdG9yICphbmQqIGluaXRpYWxp
emUgdGhlIGNvbnN0IG1lbWJlciBpbiB0aGUgaW5pdGlhbGl6ZXIKKyAgICBsaXN0IG9mIHRoZSBj
b25zdHJ1Y3Rvci4gKEVhcmx5IHZlcnNpb25zIG9mIGBnY2NgIGRvZXNuJ3QgZm9yY2UgeW91IHRv
CisgICAgaW5pdGlhbGl6ZSB0aGUgY29uc3QgbWVtYmVyLiBJdCdzIGEgYnVnIHRoYXQgaGFzIGJl
ZW4gZml4ZWQgaW4gYGdjYyA0YC4pCisKKyMjIFdoeSBkb2VzIEFTU0VSVF9ERUFUSCBjb21wbGFp
biBhYm91dCBwcmV2aW91cyB0aHJlYWRzIHRoYXQgd2VyZSBhbHJlYWR5IGpvaW5lZD8KKworV2l0
aCB0aGUgTGludXggcHRocmVhZCBsaWJyYXJ5LCB0aGVyZSBpcyBubyB0dXJuaW5nIGJhY2sgb25j
ZSB5b3UgY3Jvc3MgdGhlIGxpbmUKK2Zyb20gc2luZ2xlIHRocmVhZCB0byBtdWx0aXBsZSB0aHJl
YWRzLiBUaGUgZmlyc3QgdGltZSB5b3UgY3JlYXRlIGEgdGhyZWFkLCBhCittYW5hZ2VyIHRocmVh
ZCBpcyBjcmVhdGVkIGluIGFkZGl0aW9uLCBzbyB5b3UgZ2V0IDMsIG5vdCAyLCB0aHJlYWRzLiBM
YXRlciB3aGVuCit0aGUgdGhyZWFkIHlvdSBjcmVhdGUgam9pbnMgdGhlIG1haW4gdGhyZWFkLCB0
aGUgdGhyZWFkIGNvdW50IGRlY3JlbWVudHMgYnkgMSwKK2J1dCB0aGUgbWFuYWdlciB0aHJlYWQg
d2lsbCBuZXZlciBiZSBraWxsZWQsIHNvIHlvdSBzdGlsbCBoYXZlIDIgdGhyZWFkcywgd2hpY2gK
K21lYW5zIHlvdSBjYW5ub3Qgc2FmZWx5IHJ1biBhIGRlYXRoIHRlc3QuCisKK1RoZSBuZXcgTlBU
TCB0aHJlYWQgbGlicmFyeSBkb2Vzbid0IHN1ZmZlciBmcm9tIHRoaXMgcHJvYmxlbSwgYXMgaXQg
ZG9lc24ndAorY3JlYXRlIGEgbWFuYWdlciB0aHJlYWQuIEhvd2V2ZXIsIGlmIHlvdSBkb24ndCBj
b250cm9sIHdoaWNoIG1hY2hpbmUgeW91ciB0ZXN0CitydW5zIG9uLCB5b3Ugc2hvdWxkbid0IGRl
cGVuZCBvbiB0aGlzLgorCisjIyBXaHkgZG9lcyBnb29nbGV0ZXN0IHJlcXVpcmUgdGhlIGVudGly
ZSB0ZXN0IGNhc2UsIGluc3RlYWQgb2YgaW5kaXZpZHVhbCB0ZXN0cywgdG8gYmUgbmFtZWQgKkRl
YXRoVGVzdCB3aGVuIGl0IHVzZXMgQVNTRVJUX0RFQVRIPworCitnb29nbGV0ZXN0IGRvZXMgbm90
IGludGVybGVhdmUgdGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcy4gVGhhdCBpcywgaXQg
cnVucworYWxsIHRlc3RzIGluIG9uZSB0ZXN0IGNhc2UgZmlyc3QsIGFuZCB0aGVuIHJ1bnMgYWxs
IHRlc3RzIGluIHRoZSBuZXh0IHRlc3QgY2FzZSwKK2FuZCBzbyBvbi4gZ29vZ2xldGVzdCBkb2Vz
IHRoaXMgYmVjYXVzZSBpdCBuZWVkcyB0byBzZXQgdXAgYSB0ZXN0IGNhc2UgYmVmb3JlCit0aGUg
Zmlyc3QgdGVzdCBpbiBpdCBpcyBydW4sIGFuZCB0ZWFyIGl0IGRvd24gYWZ0ZXJ3b3Jkcy4gU3Bs
aXR0aW5nIHVwIHRoZSB0ZXN0CitjYXNlIHdvdWxkIHJlcXVpcmUgbXVsdGlwbGUgc2V0LXVwIGFu
ZCB0ZWFyLWRvd24gcHJvY2Vzc2VzLCB3aGljaCBpcyBpbmVmZmljaWVudAorYW5kIG1ha2VzIHRo
ZSBzZW1hbnRpY3MgdW5jbGVhbi4KKworSWYgd2Ugd2VyZSB0byBkZXRlcm1pbmUgdGhlIG9yZGVy
IG9mIHRlc3RzIGJhc2VkIG9uIHRlc3QgbmFtZSBpbnN0ZWFkIG9mIHRlc3QKK2Nhc2UgbmFtZSwg
dGhlbiB3ZSB3b3VsZCBoYXZlIGEgcHJvYmxlbSB3aXRoIHRoZSBmb2xsb3dpbmcgc2l0dWF0aW9u
OgorCitgYGBjKysKK1RFU1RfRihGb29UZXN0LCBBYmNEZWF0aFRlc3QpIHsgLi4uIH0KK1RFU1Rf
RihGb29UZXN0LCBVdncpIHsgLi4uIH0KKworVEVTVF9GKEJhclRlc3QsIERlZkRlYXRoVGVzdCkg
eyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIFh5eikgeyAuLi4gfQorYGBgCisKK1NpbmNlIGBGb29U
ZXN0LkFiY0RlYXRoVGVzdGAgbmVlZHMgdG8gcnVuIGJlZm9yZSBgQmFyVGVzdC5YeXpgLCBhbmQg
d2UgZG9uJ3QKK2ludGVybGVhdmUgdGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcywgd2Ug
bmVlZCB0byBydW4gYWxsIHRlc3RzIGluIHRoZQorYEZvb1Rlc3RgIGNhc2UgYmVmb3JlIHJ1bm5p
bmcgYW55IHRlc3QgaW4gdGhlIGBCYXJUZXN0YCBjYXNlLiBUaGlzIGNvbnRyYWRpY3RzCit3aXRo
IHRoZSByZXF1aXJlbWVudCB0byBydW4gYEJhclRlc3QuRGVmRGVhdGhUZXN0YCBiZWZvcmUgYEZv
b1Rlc3QuVXZ3YC4KKworIyMgQnV0IEkgZG9uJ3QgbGlrZSBjYWxsaW5nIG15IGVudGlyZSB0ZXN0
IGNhc2UgXCpEZWF0aFRlc3Qgd2hlbiBpdCBjb250YWlucyBib3RoIGRlYXRoIHRlc3RzIGFuZCBu
b24tZGVhdGggdGVzdHMuIFdoYXQgZG8gSSBkbz8KKworWW91IGRvbid0IGhhdmUgdG8sIGJ1dCBp
ZiB5b3UgbGlrZSwgeW91IG1heSBzcGxpdCB1cCB0aGUgdGVzdCBjYXNlIGludG8KK2BGb29UZXN0
YCBhbmQgYEZvb0RlYXRoVGVzdGAsIHdoZXJlIHRoZSBuYW1lcyBtYWtlIGl0IGNsZWFyIHRoYXQg
dGhleSBhcmUKK3JlbGF0ZWQ6CisKK2BgYGMrKworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgeyAuLi4gfTsKKworVEVTVF9GKEZvb1Rlc3QsIEFiYykgeyAuLi4gfQorVEVT
VF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQorCit1c2luZyBGb29EZWF0aFRlc3QgPSBGb29UZXN0
OworCitURVNUX0YoRm9vRGVhdGhUZXN0LCBVdncpIHsgLi4uIEVYUEVDVF9ERUFUSCguLi4pIC4u
LiB9CitURVNUX0YoRm9vRGVhdGhUZXN0LCBYeXopIHsgLi4uIEFTU0VSVF9ERUFUSCguLi4pIC4u
LiB9CitgYGAKKworIyMgZ29vZ2xldGVzdCBwcmludHMgdGhlIExPRyBtZXNzYWdlcyBpbiBhIGRl
YXRoIHRlc3QncyBjaGlsZCBwcm9jZXNzIG9ubHkgd2hlbiB0aGUgdGVzdCBmYWlscy4gSG93IGNh
biBJIHNlZSB0aGUgTE9HIG1lc3NhZ2VzIHdoZW4gdGhlIGRlYXRoIHRlc3Qgc3VjY2VlZHM/CisK
K1ByaW50aW5nIHRoZSBMT0cgbWVzc2FnZXMgZ2VuZXJhdGVkIGJ5IHRoZSBzdGF0ZW1lbnQgaW5z
aWRlIGBFWFBFQ1RfREVBVEgoKWAKK21ha2VzIGl0IGhhcmRlciB0byBzZWFyY2ggZm9yIHJlYWwg
cHJvYmxlbXMgaW4gdGhlIHBhcmVudCdzIGxvZy4gVGhlcmVmb3JlLAorZ29vZ2xldGVzdCBvbmx5
IHByaW50cyB0aGVtIHdoZW4gdGhlIGRlYXRoIHRlc3QgaGFzIGZhaWxlZC4KKworSWYgeW91IHJl
YWxseSBuZWVkIHRvIHNlZSBzdWNoIExPRyBtZXNzYWdlcywgYSB3b3JrYXJvdW5kIGlzIHRvIHRl
bXBvcmFyaWx5CiticmVhayB0aGUgZGVhdGggdGVzdCAoZS5nLiBieSBjaGFuZ2luZyB0aGUgcmVn
ZXggcGF0dGVybiBpdCBpcyBleHBlY3RlZCB0bworbWF0Y2gpLiBBZG1pdHRlZGx5LCB0aGlzIGlz
IGEgaGFjay4gV2UnbGwgY29uc2lkZXIgYSBtb3JlIHBlcm1hbmVudCBzb2x1dGlvbgorYWZ0ZXIg
dGhlIGZvcmstYW5kLWV4ZWMtc3R5bGUgZGVhdGggdGVzdHMgYXJlIGltcGxlbWVudGVkLgorCisj
IyBUaGUgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJubyBtYXRjaCBmb3IgJ29wZXJhdG9yPDwn
IiB3aGVuIEkgdXNlIGFuIGFzc2VydGlvbi4gV2hhdCBnaXZlcz8KKworSWYgeW91IHVzZSBhIHVz
ZXItZGVmaW5lZCB0eXBlIGBGb29UeXBlYCBpbiBhbiBhc3NlcnRpb24sIHlvdSBtdXN0IG1ha2Ug
c3VyZQordGhlcmUgaXMgYW4gYHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0m
LCBjb25zdCBGb29UeXBlJilgIGZ1bmN0aW9uCitkZWZpbmVkIHN1Y2ggdGhhdCB3ZSBjYW4gcHJp
bnQgYSB2YWx1ZSBvZiBgRm9vVHlwZWAuCisKK0luIGFkZGl0aW9uLCBpZiBgRm9vVHlwZWAgaXMg
ZGVjbGFyZWQgaW4gYSBuYW1lIHNwYWNlLCB0aGUgYDw8YCBvcGVyYXRvciBhbHNvCituZWVkcyB0
byBiZSBkZWZpbmVkIGluIHRoZSAqc2FtZSogbmFtZSBzcGFjZS4gU2VlIGdvL3RvdHcvNDkgZm9y
IGRldGFpbHMuCisKKyMjIEhvdyBkbyBJIHN1cHByZXNzIHRoZSBtZW1vcnkgbGVhayBtZXNzYWdl
cyBvbiBXaW5kb3dzPworCitTaW5jZSB0aGUgc3RhdGljYWxseSBpbml0aWFsaXplZCBnb29nbGV0
ZXN0IHNpbmdsZXRvbiByZXF1aXJlcyBhbGxvY2F0aW9ucyBvbgordGhlIGhlYXAsIHRoZSBWaXN1
YWwgQysrIG1lbW9yeSBsZWFrIGRldGVjdG9yIHdpbGwgcmVwb3J0IG1lbW9yeSBsZWFrcyBhdCB0
aGUKK2VuZCBvZiB0aGUgcHJvZ3JhbSBydW4uIFRoZSBlYXNpZXN0IHdheSB0byBhdm9pZCB0aGlz
IGlzIHRvIHVzZSB0aGUKK2BfQ3J0TWVtQ2hlY2twb2ludGAgYW5kIGBfQ3J0TWVtRHVtcEFsbE9i
amVjdHNTaW5jZWAgY2FsbHMgdG8gbm90IHJlcG9ydCBhbnkKK3N0YXRpY2FsbHkgaW5pdGlhbGl6
ZWQgaGVhcCBvYmplY3RzLiBTZWUgTVNETiBmb3IgbW9yZSBkZXRhaWxzIGFuZCBhZGRpdGlvbmFs
CitoZWFwIGNoZWNrL2RlYnVnIHJvdXRpbmVzLgorCisKKyMjIEhvdyBjYW4gbXkgY29kZSBkZXRl
Y3QgaWYgaXQgaXMgcnVubmluZyBpbiBhIHRlc3Q/CisKK0lmIHlvdSB3cml0ZSBjb2RlIHRoYXQg
c25pZmZzIHdoZXRoZXIgaXQncyBydW5uaW5nIGluIGEgdGVzdCBhbmQgZG9lcyBkaWZmZXJlbnQK
K3RoaW5ncyBhY2NvcmRpbmdseSwgeW91IGFyZSBsZWFraW5nIHRlc3Qtb25seSBsb2dpYyBpbnRv
IHByb2R1Y3Rpb24gY29kZSBhbmQKK3RoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIGVuc3VyZSB0aGF0
IHRoZSB0ZXN0LW9ubHkgY29kZSBwYXRocyBhcmVuJ3QgcnVuIGJ5CittaXN0YWtlIGluIHByb2R1
Y3Rpb24uIFN1Y2ggY2xldmVybmVzcyBhbHNvIGxlYWRzIHRvCitbSGVpc2VuYnVnc10oaHR0cHM6
Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVpc2VuYnVnKS4gVGhlcmVmb3JlIHdlIHN0cm9uZ2x5
CithZHZpc2UgYWdhaW5zdCB0aGUgcHJhY3RpY2UsIGFuZCBnb29nbGV0ZXN0IGRvZXNuJ3QgcHJv
dmlkZSBhIHdheSB0byBkbyBpdC4KKworSW4gZ2VuZXJhbCwgdGhlIHJlY29tbWVuZGVkIHdheSB0
byBjYXVzZSB0aGUgY29kZSB0byBiZWhhdmUgZGlmZmVyZW50bHkgdW5kZXIKK3Rlc3QgaXMgW0Rl
cGVuZGVuY3kgSW5qZWN0aW9uXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZXBlbmRl
bmN5X2luamVjdGlvbikuIFlvdSBjYW4gaW5qZWN0CitkaWZmZXJlbnQgZnVuY3Rpb25hbGl0eSBm
cm9tIHRoZSB0ZXN0IGFuZCBmcm9tIHRoZSBwcm9kdWN0aW9uIGNvZGUuIFNpbmNlIHlvdXIKK3By
b2R1Y3Rpb24gY29kZSBkb2Vzbid0IGxpbmsgaW4gdGhlIGZvci10ZXN0IGxvZ2ljIGF0IGFsbCAo
dGhlCitbYHRlc3Rvbmx5YF0oaHR0cHM6Ly9kb2NzLmJhemVsLmJ1aWxkL3ZlcnNpb25zL21hc3Rl
ci9iZS9jb21tb24tZGVmaW5pdGlvbnMuaHRtbCNjb21tb24udGVzdG9ubHkpCithdHRyaWJ1dGUg
Zm9yIEJVSUxEIHRhcmdldHMgaGVscHMgdG8gZW5zdXJlIHRoYXQpLCB0aGVyZSBpcyBubyBkYW5n
ZXIgaW4KK2FjY2lkZW50YWxseSBydW5uaW5nIGl0LgorCitIb3dldmVyLCBpZiB5b3UgKnJlYWxs
eSosICpyZWFsbHkqLCAqcmVhbGx5KiBoYXZlIG5vIGNob2ljZSwgYW5kIGlmIHlvdSBmb2xsb3cK
K3RoZSBydWxlIG9mIGVuZGluZyB5b3VyIHRlc3QgcHJvZ3JhbSBuYW1lcyB3aXRoIGBfdGVzdGAs
IHlvdSBjYW4gdXNlIHRoZQorKmhvcnJpYmxlKiBoYWNrIG9mIHNuaWZmaW5nIHlvdXIgZXhlY3V0
YWJsZSBuYW1lIChgYXJndlswXWAgaW4gYG1haW4oKWApIHRvIGtub3cKK3doZXRoZXIgdGhlIGNv
ZGUgaXMgdW5kZXIgdGVzdC4KKworCisjIyBIb3cgZG8gSSB0ZW1wb3JhcmlseSBkaXNhYmxlIGEg
dGVzdD8KKworSWYgeW91IGhhdmUgYSBicm9rZW4gdGVzdCB0aGF0IHlvdSBjYW5ub3QgZml4IHJp
Z2h0IGF3YXksIHlvdSBjYW4gYWRkIHRoZQorRElTQUJMRURfIHByZWZpeCB0byBpdHMgbmFtZS4g
VGhpcyB3aWxsIGV4Y2x1ZGUgaXQgZnJvbSBleGVjdXRpb24uIFRoaXMgaXMKK2JldHRlciB0aGFu
IGNvbW1lbnRpbmcgb3V0IHRoZSBjb2RlIG9yIHVzaW5nICNpZiAwLCBhcyBkaXNhYmxlZCB0ZXN0
cyBhcmUgc3RpbGwKK2NvbXBpbGVkIChhbmQgdGh1cyB3b24ndCByb3QpLgorCitUbyBpbmNsdWRl
IGRpc2FibGVkIHRlc3RzIGluIHRlc3QgZXhlY3V0aW9uLCBqdXN0IGludm9rZSB0aGUgdGVzdCBw
cm9ncmFtIHdpdGgKK3RoZSAtLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIGZsYWcuCisK
KyMjIElzIGl0IE9LIGlmIEkgaGF2ZSB0d28gc2VwYXJhdGUgYFRFU1QoRm9vLCBCYXIpYCB0ZXN0
IG1ldGhvZHMgZGVmaW5lZCBpbiBkaWZmZXJlbnQgbmFtZXNwYWNlcz8KKworWWVzLgorCitUaGUg
cnVsZSBpcyAqKmFsbCB0ZXN0IG1ldGhvZHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNl
IHRoZSBzYW1lIGZpeHR1cmUKK2NsYXNzLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5n
IGlzICoqYWxsb3dlZCoqIGJlY2F1c2UgYm90aCB0ZXN0cyB1c2UgdGhlCitzYW1lIGZpeHR1cmUg
Y2xhc3MgKGA6OnRlc3Rpbmc6OlRlc3RgKS4KKworYGBgYysrCituYW1lc3BhY2UgZm9vIHsKK1RF
U1QoQ29vbFRlc3QsIERvU29tZXRoaW5nKSB7CisgIFNVQ0NFRUQoKTsKK30KK30gIC8vIG5hbWVz
cGFjZSBmb28KKworbmFtZXNwYWNlIGJhciB7CitURVNUKENvb2xUZXN0LCBEb1NvbWV0aGluZykg
eworICBTVUNDRUVEKCk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgYmFyCitgYGAKKworSG93ZXZlciwg
dGhlIGZvbGxvd2luZyBjb2RlIGlzICoqbm90IGFsbG93ZWQqKiBhbmQgd2lsbCBwcm9kdWNlIGEg
cnVudGltZSBlcnJvcgorZnJvbSBnb29nbGV0ZXN0IGJlY2F1c2UgdGhlIHRlc3QgbWV0aG9kcyBh
cmUgdXNpbmcgZGlmZmVyZW50IHRlc3QgZml4dHVyZQorY2xhc3NlcyB3aXRoIHRoZSBzYW1lIHRl
c3QgY2FzZSBuYW1lLgorCitgYGBjKysKK25hbWVzcGFjZSBmb28geworY2xhc3MgQ29vbFRlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OyAgLy8gRml4dHVyZSBmb286OkNvb2xUZXN0CitU
RVNUX0YoQ29vbFRlc3QsIERvU29tZXRoaW5nKSB7CisgIFNVQ0NFRUQoKTsKK30KK30gIC8vIG5h
bWVzcGFjZSBmb28KKworbmFtZXNwYWNlIGJhciB7CitjbGFzcyBDb29sVGVzdCA6IHB1YmxpYyA6
OnRlc3Rpbmc6OlRlc3Qge307ICAvLyBGaXh0dXJlOiBiYXI6OkNvb2xUZXN0CitURVNUX0YoQ29v
bFRlc3QsIERvU29tZXRoaW5nKSB7CisgIFNVQ0NFRUQoKTsKK30KK30gIC8vIG5hbWVzcGFjZSBi
YXIKK2BgYApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9wcmltZXIu
bWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL3ByaW1lci5tZApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
YThlYThkNzE3YjgzNWJjYmQyM2Y4NGM5ZWEwNWYxNmE4NzhhNWQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9wcmltZXIubWQKQEAgLTAsMCArMSw1Njkg
QEAKKyMgR29vZ2xldGVzdCBQcmltZXIKKworCisjIyBJbnRyb2R1Y3Rpb246IFdoeSBnb29nbGV0
ZXN0PworCisqZ29vZ2xldGVzdCogaGVscHMgeW91IHdyaXRlIGJldHRlciBDKysgdGVzdHMuCisK
K2dvb2dsZXRlc3QgaXMgYSB0ZXN0aW5nIGZyYW1ld29yayBkZXZlbG9wZWQgYnkgdGhlIFRlc3Rp
bmcKK1RlY2hub2xvZ3kgdGVhbSB3aXRoIEdvb2dsZSdzIHNwZWNpZmljCityZXF1aXJlbWVudHMg
YW5kIGNvbnN0cmFpbnRzIGluIG1pbmQuIE5vIG1hdHRlciB3aGV0aGVyIHlvdSB3b3JrIG9uIExp
bnV4LAorV2luZG93cywgb3IgYSBNYWMsIGlmIHlvdSB3cml0ZSBDKysgY29kZSwgZ29vZ2xldGVz
dCBjYW4gaGVscCB5b3UuIEFuZCBpdAorc3VwcG9ydHMgKmFueSoga2luZCBvZiB0ZXN0cywgbm90
IGp1c3QgdW5pdCB0ZXN0cy4KKworU28gd2hhdCBtYWtlcyBhIGdvb2QgdGVzdCwgYW5kIGhvdyBk
b2VzIGdvb2dsZXRlc3QgZml0IGluPyBXZSBiZWxpZXZlOgorCisxLiAgVGVzdHMgc2hvdWxkIGJl
ICppbmRlcGVuZGVudCogYW5kICpyZXBlYXRhYmxlKi4gSXQncyBhIHBhaW4gdG8gZGVidWcgYSB0
ZXN0CisgICAgdGhhdCBzdWNjZWVkcyBvciBmYWlscyBhcyBhIHJlc3VsdCBvZiBvdGhlciB0ZXN0
cy4gZ29vZ2xldGVzdCBpc29sYXRlcyB0aGUKKyAgICB0ZXN0cyBieSBydW5uaW5nIGVhY2ggb2Yg
dGhlbSBvbiBhIGRpZmZlcmVudCBvYmplY3QuIFdoZW4gYSB0ZXN0IGZhaWxzLAorICAgIGdvb2ds
ZXRlc3QgYWxsb3dzIHlvdSB0byBydW4gaXQgaW4gaXNvbGF0aW9uIGZvciBxdWljayBkZWJ1Z2dp
bmcuCisxLiAgVGVzdHMgc2hvdWxkIGJlIHdlbGwgKm9yZ2FuaXplZCogYW5kIHJlZmxlY3QgdGhl
IHN0cnVjdHVyZSBvZiB0aGUgdGVzdGVkCisgICAgY29kZS4gZ29vZ2xldGVzdCBncm91cHMgcmVs
YXRlZCB0ZXN0cyBpbnRvIHRlc3QgY2FzZXMgdGhhdCBjYW4gc2hhcmUgZGF0YQorICAgIGFuZCBz
dWJyb3V0aW5lcy4gVGhpcyBjb21tb24gcGF0dGVybiBpcyBlYXN5IHRvIHJlY29nbml6ZSBhbmQg
bWFrZXMgdGVzdHMKKyAgICBlYXN5IHRvIG1haW50YWluLiBTdWNoIGNvbnNpc3RlbmN5IGlzIGVz
cGVjaWFsbHkgaGVscGZ1bCB3aGVuIHBlb3BsZSBzd2l0Y2gKKyAgICBwcm9qZWN0cyBhbmQgc3Rh
cnQgdG8gd29yayBvbiBhIG5ldyBjb2RlIGJhc2UuCisxLiAgVGVzdHMgc2hvdWxkIGJlICpwb3J0
YWJsZSogYW5kICpyZXVzYWJsZSouIEdvb2dsZSBoYXMgYSBsb3Qgb2YgY29kZSB0aGF0IGlzCisg
ICAgcGxhdGZvcm0tbmV1dHJhbCwgaXRzIHRlc3RzIHNob3VsZCBhbHNvIGJlIHBsYXRmb3JtLW5l
dXRyYWwuIGdvb2dsZXRlc3QKKyAgICB3b3JrcyBvbiBkaWZmZXJlbnQgT1Nlcywgd2l0aCBkaWZm
ZXJlbnQgY29tcGlsZXJzIChnY2MsIGljYywgYW5kIE1TVkMpLCB3aXRoCisgICAgb3Igd2l0aG91
dCBleGNlcHRpb25zLCBzbyBnb29nbGV0ZXN0IHRlc3RzIGNhbiBlYXNpbHkgd29yayB3aXRoIGEg
dmFyaWV0eSBvZgorICAgIGNvbmZpZ3VyYXRpb25zLgorMS4gIFdoZW4gdGVzdHMgZmFpbCwgdGhl
eSBzaG91bGQgcHJvdmlkZSBhcyBtdWNoICppbmZvcm1hdGlvbiogYWJvdXQgdGhlIHByb2JsZW0K
KyAgICBhcyBwb3NzaWJsZS4gZ29vZ2xldGVzdCBkb2Vzbid0IHN0b3AgYXQgdGhlIGZpcnN0IHRl
c3QgZmFpbHVyZS4gSW5zdGVhZCwgaXQKKyAgICBvbmx5IHN0b3BzIHRoZSBjdXJyZW50IHRlc3Qg
YW5kIGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0LiBZb3UgY2FuIGFsc28gc2V0IHVwCisgICAgdGVz
dHMgdGhhdCByZXBvcnQgbm9uLWZhdGFsIGZhaWx1cmVzIGFmdGVyIHdoaWNoIHRoZSBjdXJyZW50
IHRlc3QgY29udGludWVzLgorICAgIFRodXMsIHlvdSBjYW4gZGV0ZWN0IGFuZCBmaXggbXVsdGlw
bGUgYnVncyBpbiBhIHNpbmdsZSBydW4tZWRpdC1jb21waWxlCisgICAgY3ljbGUuCisxLiAgVGhl
IHRlc3RpbmcgZnJhbWV3b3JrIHNob3VsZCBsaWJlcmF0ZSB0ZXN0IHdyaXRlcnMgZnJvbSBob3Vz
ZWtlZXBpbmcgY2hvcmVzCisgICAgYW5kIGxldCB0aGVtIGZvY3VzIG9uIHRoZSB0ZXN0ICpjb250
ZW50Ki4gZ29vZ2xldGVzdCBhdXRvbWF0aWNhbGx5IGtlZXBzCisgICAgdHJhY2sgb2YgYWxsIHRl
c3RzIGRlZmluZWQsIGFuZCBkb2Vzbid0IHJlcXVpcmUgdGhlIHVzZXIgdG8gZW51bWVyYXRlIHRo
ZW0KKyAgICBpbiBvcmRlciB0byBydW4gdGhlbS4KKzEuICBUZXN0cyBzaG91bGQgYmUgKmZhc3Qq
LiBXaXRoIGdvb2dsZXRlc3QsIHlvdSBjYW4gcmV1c2Ugc2hhcmVkIHJlc291cmNlcworICAgIGFj
cm9zcyB0ZXN0cyBhbmQgcGF5IGZvciB0aGUgc2V0LXVwL3RlYXItZG93biBvbmx5IG9uY2UsIHdp
dGhvdXQgbWFraW5nCisgICAgdGVzdHMgZGVwZW5kIG9uIGVhY2ggb3RoZXIuCisKK1NpbmNlIGdv
b2dsZXRlc3QgaXMgYmFzZWQgb24gdGhlIHBvcHVsYXIgeFVuaXQgYXJjaGl0ZWN0dXJlLCB5b3Un
bGwgZmVlbCByaWdodAorYXQgaG9tZSBpZiB5b3UndmUgdXNlZCBKVW5pdCBvciBQeVVuaXQgYmVm
b3JlLiBJZiBub3QsIGl0IHdpbGwgdGFrZSB5b3UgYWJvdXQgMTAKK21pbnV0ZXMgdG8gbGVhcm4g
dGhlIGJhc2ljcyBhbmQgZ2V0IHN0YXJ0ZWQuIFNvIGxldCdzIGdvIQorCisjIyBCZXdhcmUgb2Yg
dGhlIG5vbWVuY2xhdHVyZQorCitfTm90ZTpfIFRoZXJlIG1pZ2h0IGJlIHNvbWUgY29uZnVzaW9u
IG9mIGlkZWEgZHVlIHRvIGRpZmZlcmVudAorZGVmaW5pdGlvbnMgb2YgdGhlIHRlcm1zIF9UZXN0
XywgX1Rlc3QgQ2FzZV8gYW5kIF9UZXN0IFN1aXRlXywgc28gYmV3YXJlCitvZiBtaXN1bmRlcnN0
YW5kaW5nIHRoZXNlLgorCitIaXN0b3JpY2FsbHksIGdvb2dsZXRlc3Qgc3RhcnRlZCB0byB1c2Ug
dGhlIHRlcm0gX1Rlc3QgQ2FzZV8gZm9yIGdyb3VwaW5nCityZWxhdGVkIHRlc3RzLCB3aGVyZWFz
IGN1cnJlbnQgcHVibGljYXRpb25zIGluY2x1ZGluZyB0aGUgSW50ZXJuYXRpb25hbCBTb2Z0d2Fy
ZQorVGVzdGluZyBRdWFsaWZpY2F0aW9ucyBCb2FyZCAoW0lTVFFCXShodHRwOi8vd3d3LmlzdHFi
Lm9yZy8pKSBhbmQgdmFyaW91cwordGV4dGJvb2tzIG9uIFNvZnR3YXJlIFF1YWxpdHkgdXNlIHRo
ZSB0ZXJtIF9bVGVzdAorU3VpdGVdKGh0dHA6Ly9nbG9zc2FyeS5pc3RxYi5vcmcvc2VhcmNoL3Rl
c3QlMjBzdWl0ZSlfIGZvciB0aGlzLgorCitUaGUgcmVsYXRlZCB0ZXJtIF9UZXN0XywgYXMgaXQg
aXMgdXNlZCBpbiB0aGUgZ29vZ2xldGVzdCwgaXMgY29ycmVzcG9uZGluZyB0bwordGhlIHRlcm0g
X1tUZXN0IENhc2VdKGh0dHA6Ly9nbG9zc2FyeS5pc3RxYi5vcmcvc2VhcmNoL3Rlc3QlMjBjYXNl
KV8gb2YgSVNUUUIKK2FuZCBvdGhlcnMuCisKK1RoZSB0ZXJtIF9UZXN0XyBpcyBjb21tb25seSBv
ZiBicm9hZCBlbm91Z2ggc2Vuc2UsIGluY2x1ZGluZyBJU1RRQidzCitkZWZpbml0aW9uIG9mIF9U
ZXN0IENhc2VfLCBzbyBpdCdzIG5vdCBtdWNoIG9mIGEgcHJvYmxlbSBoZXJlLiBCdXQgdGhlCit0
ZXJtIF9UZXN0IENhc2VfIGFzIHVzZWQgaW4gR29vZ2xlIFRlc3QgaXMgb2YgY29udHJhZGljdG9y
eSBzZW5zZSBhbmQgdGh1cyBjb25mdXNpbmcuCisKK1VuZm9ydHVuYXRlbHkgcmVwbGFjaW5nIHRo
ZSB0ZXJtIF9UZXN0IENhc2VfIGJ5IF9UZXN0IFN1aXRlXyB0aHJvdWdob3V0IHRoZQorZ29vZ2xl
dGVzdCBpcyBub3QgZWFzeSB3aXRob3V0IGJyZWFraW5nIGRlcGVuZGVudCBwcm9qZWN0cywgYXMg
YFRlc3RDYXNlYCBpcworcGFydCBvZiB0aGUgcHVibGljIEFQSSBhdCB2YXJpb3VzIHBsYWNlcy4K
KworU28gZm9yIHRoZSB0aW1lIGJlaW5nLCBwbGVhc2UgYmUgYXdhcmUgb2YgdGhlIGRpZmZlcmVu
dCBkZWZpbml0aW9ucyBvZgordGhlIHRlcm1zOgorCitNZWFuaW5nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCBnb29nbGV0ZXN0IFRlcm0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
W0lTVFFCXShodHRwOi8vd3d3LmlzdHFiLm9yZy8pIFRlcm0KKzotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRXhlcmNpc2UgYSBwYXJ0
aWN1bGFyIHByb2dyYW0gcGF0aCB3aXRoIHNwZWNpZmljIGlucHV0IHZhbHVlcyBhbmQgdmVyaWZ5
IHRoZSByZXN1bHRzIHwgW1RFU1QoKV0oI3NpbXBsZS10ZXN0cykgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IFtUZXN0IENhc2VdKGh0dHA6Ly9nbG9zc2FyeS5pc3RxYi5vcmcvc2VhcmNoL3Rl
c3QlMjBjYXNlKQorQSBzZXQgb2Ygc2V2ZXJhbCB0ZXN0cyByZWxhdGVkIHRvIG9uZSBjb21wb25l
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW1Rlc3RDYXNlXSgjYmFz
aWMtY29uY2VwdHMpIHwgW1Rlc3RTdWl0ZV0oaHR0cDovL2dsb3NzYXJ5LmlzdHFiLm9yZy9zZWFy
Y2gvdGVzdCUyMHN1aXRlKQorCisjIyBCYXNpYyBDb25jZXB0cworCitXaGVuIHVzaW5nIGdvb2ds
ZXRlc3QsIHlvdSBzdGFydCBieSB3cml0aW5nICphc3NlcnRpb25zKiwgd2hpY2ggYXJlIHN0YXRl
bWVudHMKK3RoYXQgY2hlY2sgd2hldGhlciBhIGNvbmRpdGlvbiBpcyB0cnVlLiBBbiBhc3NlcnRp
b24ncyByZXN1bHQgY2FuIGJlICpzdWNjZXNzKiwKKypub25mYXRhbCBmYWlsdXJlKiwgb3IgKmZh
dGFsIGZhaWx1cmUqLiBJZiBhIGZhdGFsIGZhaWx1cmUgb2NjdXJzLCBpdCBhYm9ydHMgdGhlCitj
dXJyZW50IGZ1bmN0aW9uOyBvdGhlcndpc2UgdGhlIHByb2dyYW0gY29udGludWVzIG5vcm1hbGx5
LgorCisqVGVzdHMqIHVzZSBhc3NlcnRpb25zIHRvIHZlcmlmeSB0aGUgdGVzdGVkIGNvZGUncyBi
ZWhhdmlvci4gSWYgYSB0ZXN0IGNyYXNoZXMKK29yIGhhcyBhIGZhaWxlZCBhc3NlcnRpb24sIHRo
ZW4gaXQgKmZhaWxzKjsgb3RoZXJ3aXNlIGl0ICpzdWNjZWVkcyouCisKK0EgKnRlc3QgY2FzZSog
Y29udGFpbnMgb25lIG9yIG1hbnkgdGVzdHMuIFlvdSBzaG91bGQgZ3JvdXAgeW91ciB0ZXN0cyBp
bnRvIHRlc3QKK2Nhc2VzIHRoYXQgcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mIHRoZSB0ZXN0ZWQg
Y29kZS4gV2hlbiBtdWx0aXBsZSB0ZXN0cyBpbiBhCit0ZXN0IGNhc2UgbmVlZCB0byBzaGFyZSBj
b21tb24gb2JqZWN0cyBhbmQgc3Vicm91dGluZXMsIHlvdSBjYW4gcHV0IHRoZW0gaW50byBhCisq
dGVzdCBmaXh0dXJlKiBjbGFzcy4KKworQSAqdGVzdCBwcm9ncmFtKiBjYW4gY29udGFpbiBtdWx0
aXBsZSB0ZXN0IGNhc2VzLgorCitXZSdsbCBub3cgZXhwbGFpbiBob3cgdG8gd3JpdGUgYSB0ZXN0
IHByb2dyYW0sIHN0YXJ0aW5nIGF0IHRoZSBpbmRpdmlkdWFsCithc3NlcnRpb24gbGV2ZWwgYW5k
IGJ1aWxkaW5nIHVwIHRvIHRlc3RzIGFuZCB0ZXN0IGNhc2VzLgorCisjIyBBc3NlcnRpb25zCisK
K2dvb2dsZXRlc3QgYXNzZXJ0aW9ucyBhcmUgbWFjcm9zIHRoYXQgcmVzZW1ibGUgZnVuY3Rpb24g
Y2FsbHMuIFlvdSB0ZXN0IGEgY2xhc3MKK29yIGZ1bmN0aW9uIGJ5IG1ha2luZyBhc3NlcnRpb25z
IGFib3V0IGl0cyBiZWhhdmlvci4gV2hlbiBhbiBhc3NlcnRpb24gZmFpbHMsCitnb29nbGV0ZXN0
IHByaW50cyB0aGUgYXNzZXJ0aW9uJ3Mgc291cmNlIGZpbGUgYW5kIGxpbmUgbnVtYmVyIGxvY2F0
aW9uLCBhbG9uZword2l0aCBhIGZhaWx1cmUgbWVzc2FnZS4gWW91IG1heSBhbHNvIHN1cHBseSBh
IGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2Ugd2hpY2ggd2lsbAorYmUgYXBwZW5kZWQgdG8gZ29vZ2xl
dGVzdCdzIG1lc3NhZ2UuCisKK1RoZSBhc3NlcnRpb25zIGNvbWUgaW4gcGFpcnMgdGhhdCB0ZXN0
IHRoZSBzYW1lIHRoaW5nIGJ1dCBoYXZlIGRpZmZlcmVudCBlZmZlY3RzCitvbiB0aGUgY3VycmVu
dCBmdW5jdGlvbi4gYEFTU0VSVF8qYCB2ZXJzaW9ucyBnZW5lcmF0ZSBmYXRhbCBmYWlsdXJlcyB3
aGVuIHRoZXkKK2ZhaWwsIGFuZCAqKmFib3J0IHRoZSBjdXJyZW50IGZ1bmN0aW9uKiouIGBFWFBF
Q1RfKmAgdmVyc2lvbnMgZ2VuZXJhdGUgbm9uZmF0YWwKK2ZhaWx1cmVzLCB3aGljaCBkb24ndCBh
Ym9ydCB0aGUgY3VycmVudCBmdW5jdGlvbi4gVXN1YWxseSBgRVhQRUNUXypgIGFyZQorcHJlZmVy
cmVkLCBhcyB0aGV5IGFsbG93IG1vcmUgdGhhbiBvbmUgZmFpbHVyZSB0byBiZSByZXBvcnRlZCBp
biBhIHRlc3QuCitIb3dldmVyLCB5b3Ugc2hvdWxkIHVzZSBgQVNTRVJUXypgIGlmIGl0IGRvZXNu
J3QgbWFrZSBzZW5zZSB0byBjb250aW51ZSB3aGVuIHRoZQorYXNzZXJ0aW9uIGluIHF1ZXN0aW9u
IGZhaWxzLgorCitTaW5jZSBhIGZhaWxlZCBgQVNTRVJUXypgIHJldHVybnMgZnJvbSB0aGUgY3Vy
cmVudCBmdW5jdGlvbiBpbW1lZGlhdGVseSwKK3Bvc3NpYmx5IHNraXBwaW5nIGNsZWFuLXVwIGNv
ZGUgdGhhdCBjb21lcyBhZnRlciBpdCwgaXQgbWF5IGNhdXNlIGEgc3BhY2UgbGVhay4KK0RlcGVu
ZGluZyBvbiB0aGUgbmF0dXJlIG9mIHRoZSBsZWFrLCBpdCBtYXkgb3IgbWF5IG5vdCBiZSB3b3J0
aCBmaXhpbmcgLSBzbyBrZWVwCit0aGlzIGluIG1pbmQgaWYgeW91IGdldCBhIGhlYXAgY2hlY2tl
ciBlcnJvciBpbiBhZGRpdGlvbiB0byBhc3NlcnRpb24gZXJyb3JzLgorCitUbyBwcm92aWRlIGEg
Y3VzdG9tIGZhaWx1cmUgbWVzc2FnZSwgc2ltcGx5IHN0cmVhbSBpdCBpbnRvIHRoZSBtYWNybyB1
c2luZyB0aGUKK2A8PGAgb3BlcmF0b3IsIG9yIGEgc2VxdWVuY2Ugb2Ygc3VjaCBvcGVyYXRvcnMu
IEFuIGV4YW1wbGU6CisKK2BgYGMrKworQVNTRVJUX0VRKHguc2l6ZSgpLCB5LnNpemUoKSkgPDwg
IlZlY3RvcnMgeCBhbmQgeSBhcmUgb2YgdW5lcXVhbCBsZW5ndGgiOworCitmb3IgKGludCBpID0g
MDsgaSA8IHguc2l6ZSgpOyArK2kpIHsKKyAgRVhQRUNUX0VRKHhbaV0sIHlbaV0pIDw8ICJWZWN0
b3JzIHggYW5kIHkgZGlmZmVyIGF0IGluZGV4ICIgPDwgaTsKK30KK2BgYAorCitBbnl0aGluZyB0
aGF0IGNhbiBiZSBzdHJlYW1lZCB0byBhbiBgb3N0cmVhbWAgY2FuIGJlIHN0cmVhbWVkIHRvIGFu
IGFzc2VydGlvbgorbWFjcm8tLWluIHBhcnRpY3VsYXIsIEMgc3RyaW5ncyBhbmQgYHN0cmluZ2Ag
b2JqZWN0cy4gSWYgYSB3aWRlIHN0cmluZworKGB3Y2hhcl90KmAsIGBUQ0hBUipgIGluIGBVTklD
T0RFYCBtb2RlIG9uIFdpbmRvd3MsIG9yIGBzdGQ6OndzdHJpbmdgKSBpcworc3RyZWFtZWQgdG8g
YW4gYXNzZXJ0aW9uLCBpdCB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gVVRGLTggd2hlbiBwcmludGVk
LgorCisjIyMgQmFzaWMgQXNzZXJ0aW9ucworCitUaGVzZSBhc3NlcnRpb25zIGRvIGJhc2ljIHRy
dWUvZmFsc2UgY29uZGl0aW9uIHRlc3RpbmcuCisKK0ZhdGFsIGFzc2VydGlvbiAgICAgICAgICAg
IHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgICAgfCBWZXJpZmllcworLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0t
LS0tLS0tCitgQVNTRVJUX1RSVUUoY29uZGl0aW9uKTtgICB8IGBFWFBFQ1RfVFJVRShjb25kaXRp
b24pO2AgIHwgYGNvbmRpdGlvbmAgaXMgdHJ1ZQorYEFTU0VSVF9GQUxTRShjb25kaXRpb24pO2Ag
fCBgRVhQRUNUX0ZBTFNFKGNvbmRpdGlvbik7YCB8IGBjb25kaXRpb25gIGlzIGZhbHNlCisKK1Jl
bWVtYmVyLCB3aGVuIHRoZXkgZmFpbCwgYEFTU0VSVF8qYCB5aWVsZHMgYSBmYXRhbCBmYWlsdXJl
IGFuZCByZXR1cm5zIGZyb20gdGhlCitjdXJyZW50IGZ1bmN0aW9uLCB3aGlsZSBgRVhQRUNUXypg
IHlpZWxkcyBhIG5vbmZhdGFsIGZhaWx1cmUsIGFsbG93aW5nIHRoZQorZnVuY3Rpb24gdG8gY29u
dGludWUgcnVubmluZy4gSW4gZWl0aGVyIGNhc2UsIGFuIGFzc2VydGlvbiBmYWlsdXJlIG1lYW5z
IGl0cworY29udGFpbmluZyB0ZXN0IGZhaWxzLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwg
V2luZG93cywgTWFjLgorCisjIyMgQmluYXJ5IENvbXBhcmlzb24KKworVGhpcyBzZWN0aW9uIGRl
c2NyaWJlcyBhc3NlcnRpb25zIHRoYXQgY29tcGFyZSB0d28gdmFsdWVzLgorCitGYXRhbCBhc3Nl
cnRpb24gICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAgfCBWZXJpZmllcworLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0t
LS0tLS0tLS0KK2BBU1NFUlRfRVEodmFsMSwgdmFsMik7YCB8IGBFWFBFQ1RfRVEodmFsMSwgdmFs
Mik7YCB8IGB2YWwxID09IHZhbDJgCitgQVNTRVJUX05FKHZhbDEsIHZhbDIpO2AgfCBgRVhQRUNU
X05FKHZhbDEsIHZhbDIpO2AgfCBgdmFsMSAhPSB2YWwyYAorYEFTU0VSVF9MVCh2YWwxLCB2YWwy
KTtgIHwgYEVYUEVDVF9MVCh2YWwxLCB2YWwyKTtgIHwgYHZhbDEgPCB2YWwyYAorYEFTU0VSVF9M
RSh2YWwxLCB2YWwyKTtgIHwgYEVYUEVDVF9MRSh2YWwxLCB2YWwyKTtgIHwgYHZhbDEgPD0gdmFs
MmAKK2BBU1NFUlRfR1QodmFsMSwgdmFsMik7YCB8IGBFWFBFQ1RfR1QodmFsMSwgdmFsMik7YCB8
IGB2YWwxID4gdmFsMmAKK2BBU1NFUlRfR0UodmFsMSwgdmFsMik7YCB8IGBFWFBFQ1RfR0UodmFs
MSwgdmFsMik7YCB8IGB2YWwxID49IHZhbDJgCisKK1ZhbHVlIGFyZ3VtZW50cyBtdXN0IGJlIGNv
bXBhcmFibGUgYnkgdGhlIGFzc2VydGlvbidzIGNvbXBhcmlzb24gb3BlcmF0b3Igb3IKK3lvdSds
bCBnZXQgYSBjb21waWxlciBlcnJvci4gV2UgdXNlZCB0byByZXF1aXJlIHRoZSBhcmd1bWVudHMg
dG8gc3VwcG9ydCB0aGUKK2A8PGAgb3BlcmF0b3IgZm9yIHN0cmVhbWluZyB0byBhbiBgb3N0cmVh
bWAsIGJ1dCBpdCdzIG5vIGxvbmdlciBuZWNlc3NhcnkuIElmCitgPDxgIGlzIHN1cHBvcnRlZCwg
aXQgd2lsbCBiZSBjYWxsZWQgdG8gcHJpbnQgdGhlIGFyZ3VtZW50cyB3aGVuIHRoZSBhc3NlcnRp
b24KK2ZhaWxzOyBvdGhlcndpc2UgZ29vZ2xldGVzdCB3aWxsIGF0dGVtcHQgdG8gcHJpbnQgdGhl
bSBpbiB0aGUgYmVzdCB3YXkgaXQgY2FuLgorRm9yIG1vcmUgZGV0YWlscyBhbmQgaG93IHRvIGN1
c3RvbWl6ZSB0aGUgcHJpbnRpbmcgb2YgdGhlIGFyZ3VtZW50cywgc2VlCitnTW9jayBbcmVjaXBl
XSguLi8uLi9nb29nbGVtb2NrL2RvY3MvQ29va0Jvb2subWQjdGVhY2hpbmctZ29vZ2xlLW1vY2st
aG93LXRvLXByaW50LXlvdXItdmFsdWVzKS4pLgorCitUaGVzZSBhc3NlcnRpb25zIGNhbiB3b3Jr
IHdpdGggYSB1c2VyLWRlZmluZWQgdHlwZSwgYnV0IG9ubHkgaWYgeW91IGRlZmluZSB0aGUKK2Nv
cnJlc3BvbmRpbmcgY29tcGFyaXNvbiBvcGVyYXRvciAoZS5nLiBgPT1gLCBgPGAsIGV0YykuIFNp
bmNlIHRoaXMgaXMKK2Rpc2NvdXJhZ2VkIGJ5IHRoZSBHb29nbGUgW0MrKyBTdHlsZQorR3VpZGVd
KGh0dHBzOi8vZ29vZ2xlLmdpdGh1Yi5pby9zdHlsZWd1aWRlL2NwcGd1aWRlLmh0bWwjT3BlcmF0
b3JfT3ZlcmxvYWRpbmcpLAoreW91IG1heSBuZWVkIHRvIHVzZSBgQVNTRVJUX1RSVUUoKWAgb3Ig
YEVYUEVDVF9UUlVFKClgIHRvIGFzc2VydCB0aGUgZXF1YWxpdHkgb2YKK3R3byBvYmplY3RzIG9m
IGEgdXNlci1kZWZpbmVkIHR5cGUuCisKK0hvd2V2ZXIsIHdoZW4gcG9zc2libGUsIGBBU1NFUlRf
RVEoYWN0dWFsLCBleHBlY3RlZClgIGlzIHByZWZlcnJlZCB0bworYEFTU0VSVF9UUlVFKGFjdHVh
bCA9PSBleHBlY3RlZClgLCBzaW5jZSBpdCB0ZWxscyB5b3UgYGFjdHVhbGAgYW5kIGBleHBlY3Rl
ZGAncwordmFsdWVzIG9uIGZhaWx1cmUuCisKK0FyZ3VtZW50cyBhcmUgYWx3YXlzIGV2YWx1YXRl
ZCBleGFjdGx5IG9uY2UuIFRoZXJlZm9yZSwgaXQncyBPSyBmb3IgdGhlCithcmd1bWVudHMgdG8g
aGF2ZSBzaWRlIGVmZmVjdHMuIEhvd2V2ZXIsIGFzIHdpdGggYW55IG9yZGluYXJ5IEMvQysrIGZ1
bmN0aW9uLAordGhlIGFyZ3VtZW50cycgZXZhbHVhdGlvbiBvcmRlciBpcyB1bmRlZmluZWQgKGku
ZS4gdGhlIGNvbXBpbGVyIGlzIGZyZWUgdG8KK2Nob29zZSBhbnkgb3JkZXIpIGFuZCB5b3VyIGNv
ZGUgc2hvdWxkIG5vdCBkZXBlbmQgb24gYW55IHBhcnRpY3VsYXIgYXJndW1lbnQKK2V2YWx1YXRp
b24gb3JkZXIuCisKK2BBU1NFUlRfRVEoKWAgZG9lcyBwb2ludGVyIGVxdWFsaXR5IG9uIHBvaW50
ZXJzLiBJZiB1c2VkIG9uIHR3byBDIHN0cmluZ3MsIGl0Cit0ZXN0cyBpZiB0aGV5IGFyZSBpbiB0
aGUgc2FtZSBtZW1vcnkgbG9jYXRpb24sIG5vdCBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgdmFsdWUu
CitUaGVyZWZvcmUsIGlmIHlvdSB3YW50IHRvIGNvbXBhcmUgQyBzdHJpbmdzIChlLmcuIGBjb25z
dCBjaGFyKmApIGJ5IHZhbHVlLCB1c2UKK2BBU1NFUlRfU1RSRVEoKWAsIHdoaWNoIHdpbGwgYmUg
ZGVzY3JpYmVkIGxhdGVyIG9uLiBJbiBwYXJ0aWN1bGFyLCB0byBhc3NlcnQKK3RoYXQgYSBDIHN0
cmluZyBpcyBgTlVMTGAsIHVzZSBgQVNTRVJUX1NUUkVRKGNfc3RyaW5nLCBOVUxMKWAuIENvbnNp
ZGVyIHVzZQorYEFTU0VSVF9FUShjX3N0cmluZywgbnVsbHB0cilgIGlmIGMrKzExIGlzIHN1cHBv
cnRlZC4gVG8gY29tcGFyZSB0d28gYHN0cmluZ2AKK29iamVjdHMsIHlvdSBzaG91bGQgdXNlIGBB
U1NFUlRfRVFgLgorCitXaGVuIGRvaW5nIHBvaW50ZXIgY29tcGFyaXNvbnMgdXNlIGAqX0VRKHB0
ciwgbnVsbHB0cilgIGFuZCBgKl9ORShwdHIsIG51bGxwdHIpYAoraW5zdGVhZCBvZiBgKl9FUShw
dHIsIE5VTEwpYCBhbmQgYCpfTkUocHRyLCBOVUxMKWAuIFRoaXMgaXMgYmVjYXVzZSBgbnVsbHB0
cmAgaXMKK3R5cGVkIHdoaWxlIGBOVUxMYCBpcyBub3QuIFNlZSBbRkFRXShmYXEubWQjd2h5LWRv
ZXMtZ29vZ2xlLXRlc3Qtc3VwcG9ydC1leHBlY3RfZXFudWxsLXB0ci1hbmQtYXNzZXJ0X2VxbnVs
bC1wdHItYnV0LW5vdC1leHBlY3RfbmVudWxsLXB0ci1hbmQtYXNzZXJ0X25lbnVsbC1wdHIpCitm
b3IgbW9yZSBkZXRhaWxzLgorCitJZiB5b3UncmUgd29ya2luZyB3aXRoIGZsb2F0aW5nIHBvaW50
IG51bWJlcnMsIHlvdSBtYXkgd2FudCB0byB1c2UgdGhlIGZsb2F0aW5nCitwb2ludCB2YXJpYXRp
b25zIG9mIHNvbWUgb2YgdGhlc2UgbWFjcm9zIGluIG9yZGVyIHRvIGF2b2lkIHByb2JsZW1zIGNh
dXNlZCBieQorcm91bmRpbmcuIFNlZSBbQWR2YW5jZWQgZ29vZ2xldGVzdCBUb3BpY3NdKGFkdmFu
Y2VkLm1kKSBmb3IgZGV0YWlscy4KKworTWFjcm9zIGluIHRoaXMgc2VjdGlvbiB3b3JrIHdpdGgg
Ym90aCBuYXJyb3cgYW5kIHdpZGUgc3RyaW5nIG9iamVjdHMgKGBzdHJpbmdgCithbmQgYHdzdHJp
bmdgKS4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworKipIaXN0
b3JpY2FsIG5vdGUqKjogQmVmb3JlIEZlYnJ1YXJ5IDIwMTYgYCpfRVFgIGhhZCBhIGNvbnZlbnRp
b24gb2YgY2FsbGluZyBpdAorYXMgYEFTU0VSVF9FUShleHBlY3RlZCwgYWN0dWFsKWAsIHNvIGxv
dHMgb2YgZXhpc3RpbmcgY29kZSB1c2VzIHRoaXMgb3JkZXIuIE5vdworYCpfRVFgIHRyZWF0cyBi
b3RoIHBhcmFtZXRlcnMgaW4gdGhlIHNhbWUgd2F5LgorCisjIyMgU3RyaW5nIENvbXBhcmlzb24K
KworVGhlIGFzc2VydGlvbnMgaW4gdGhpcyBncm91cCBjb21wYXJlIHR3byAqKkMgc3RyaW5ncyoq
LiBJZiB5b3Ugd2FudCB0byBjb21wYXJlCit0d28gYHN0cmluZ2Agb2JqZWN0cywgdXNlIGBFWFBF
Q1RfRVFgLCBgRVhQRUNUX05FYCwgYW5kIGV0YyBpbnN0ZWFkLgorCit8IEZhdGFsIGFzc2VydGlv
biAgICAgICAgICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgIHwgVmVy
aWZpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
fCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIHwKK3wgYEFTU0VSVF9TVFJFUShzdHIxLCBzdHIyKTtgICAgICB8IGBFWFBF
Q1RfU1RSRVEoc3RyMSwgc3RyMik7YCAgICAgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIHRoZSBz
YW1lIGNvbnRlbnQgICAgICAgICAgICAgICAgICB8Cit8IGBBU1NFUlRfU1RSTkUoc3RyMSwgc3Ry
Mik7YCAgICAgfCBgRVhQRUNUX1NUUk5FKHN0cjEsIHN0cjIpO2AgICAgIHwgdGhlIHR3byBDIHN0
cmluZ3MgaGF2ZSBkaWZmZXJlbnQgY29udGVudHMgICAgICAgICAgICAgICAgfAorfCBgQVNTRVJU
X1NUUkNBU0VFUShzdHIxLCBzdHIyKTtgIHwgYEVYUEVDVF9TVFJDQVNFRVEoc3RyMSwgc3RyMik7
YCB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUgdGhlIHNhbWUgY29udGVudCwgaWdub3JpbmcgY2Fz
ZSAgIHwKK3wgYEFTU0VSVF9TVFJDQVNFTkUoc3RyMSwgc3RyMik7YCB8IGBFWFBFQ1RfU1RSQ0FT
RU5FKHN0cjEsIHN0cjIpO2AgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIGRpZmZlcmVudCBjb250
ZW50cywgaWdub3JpbmcgY2FzZSB8CisKK05vdGUgdGhhdCAiQ0FTRSIgaW4gYW4gYXNzZXJ0aW9u
IG5hbWUgbWVhbnMgdGhhdCBjYXNlIGlzIGlnbm9yZWQuIEEgYE5VTExgCitwb2ludGVyIGFuZCBh
biBlbXB0eSBzdHJpbmcgYXJlIGNvbnNpZGVyZWQgKmRpZmZlcmVudCouCisKK2AqU1RSRVEqYCBh
bmQgYCpTVFJORSpgIGFsc28gYWNjZXB0IHdpZGUgQyBzdHJpbmdzIChgd2NoYXJfdCpgKS4gSWYg
YSBjb21wYXJpc29uCitvZiB0d28gd2lkZSBzdHJpbmdzIGZhaWxzLCB0aGVpciB2YWx1ZXMgd2ls
bCBiZSBwcmludGVkIGFzIFVURi04IG5hcnJvdyBzdHJpbmdzLgorCisqKkF2YWlsYWJpbGl0eSoq
OiBMaW51eCwgV2luZG93cywgTWFjLgorCisqKlNlZSBhbHNvKio6IEZvciBtb3JlIHN0cmluZyBj
b21wYXJpc29uIHRyaWNrcyAoc3Vic3RyaW5nLCBwcmVmaXgsIHN1ZmZpeCwgYW5kCityZWd1bGFy
IGV4cHJlc3Npb24gbWF0Y2hpbmcsIGZvciBleGFtcGxlKSwgc2VlCitbdGhpc10oaHR0cHM6Ly9n
aXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2dsZXRlc3QvZG9jcy9h
ZHZhbmNlZC5tZCkKK2luIHRoZSBBZHZhbmNlZCBnb29nbGV0ZXN0IEd1aWRlLgorCisjIyBTaW1w
bGUgVGVzdHMKKworVG8gY3JlYXRlIGEgdGVzdDoKKworMS4gIFVzZSB0aGUgYFRFU1QoKWAgbWFj
cm8gdG8gZGVmaW5lIGFuZCBuYW1lIGEgdGVzdCBmdW5jdGlvbiwgVGhlc2UgYXJlCisgICAgb3Jk
aW5hcnkgQysrIGZ1bmN0aW9ucyB0aGF0IGRvbid0IHJldHVybiBhIHZhbHVlLgorMS4gIEluIHRo
aXMgZnVuY3Rpb24sIGFsb25nIHdpdGggYW55IHZhbGlkIEMrKyBzdGF0ZW1lbnRzIHlvdSB3YW50
IHRvIGluY2x1ZGUsCisgICAgdXNlIHRoZSB2YXJpb3VzIGdvb2dsZXRlc3QgYXNzZXJ0aW9ucyB0
byBjaGVjayB2YWx1ZXMuCisxLiAgVGhlIHRlc3QncyByZXN1bHQgaXMgZGV0ZXJtaW5lZCBieSB0
aGUgYXNzZXJ0aW9uczsgaWYgYW55IGFzc2VydGlvbiBpbiB0aGUKKyAgICB0ZXN0IGZhaWxzIChl
aXRoZXIgZmF0YWxseSBvciBub24tZmF0YWxseSksIG9yIGlmIHRoZSB0ZXN0IGNyYXNoZXMsIHRo
ZQorICAgIGVudGlyZSB0ZXN0IGZhaWxzLiBPdGhlcndpc2UsIGl0IHN1Y2NlZWRzLgorCitgYGBj
KysKK1RFU1QoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSkgeworICAuLi4gdGVzdCBib2R5IC4uLgor
fQorYGBgCisKK2BURVNUKClgIGFyZ3VtZW50cyBnbyBmcm9tIGdlbmVyYWwgdG8gc3BlY2lmaWMu
IFRoZSAqZmlyc3QqIGFyZ3VtZW50IGlzIHRoZSBuYW1lCitvZiB0aGUgdGVzdCBjYXNlLCBhbmQg
dGhlICpzZWNvbmQqIGFyZ3VtZW50IGlzIHRoZSB0ZXN0J3MgbmFtZSB3aXRoaW4gdGhlIHRlc3QK
K2Nhc2UuIEJvdGggbmFtZXMgbXVzdCBiZSB2YWxpZCBDKysgaWRlbnRpZmllcnMsIGFuZCB0aGV5
IHNob3VsZCBub3QgY29udGFpbgordW5kZXJzY29yZSAoYF9gKS4gQSB0ZXN0J3MgKmZ1bGwgbmFt
ZSogY29uc2lzdHMgb2YgaXRzIGNvbnRhaW5pbmcgdGVzdCBjYXNlIGFuZAoraXRzIGluZGl2aWR1
YWwgbmFtZS4gVGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcyBjYW4gaGF2ZSB0aGUgc2Ft
ZQoraW5kaXZpZHVhbCBuYW1lLgorCitGb3IgZXhhbXBsZSwgbGV0J3MgdGFrZSBhIHNpbXBsZSBp
bnRlZ2VyIGZ1bmN0aW9uOgorCitgYGBjKysKK2ludCBGYWN0b3JpYWwoaW50IG4pOyAgLy8gUmV0
dXJucyB0aGUgZmFjdG9yaWFsIG9mIG4KK2BgYAorCitBIHRlc3QgY2FzZSBmb3IgdGhpcyBmdW5j
dGlvbiBtaWdodCBsb29rIGxpa2U6CisKK2BgYGMrKworLy8gVGVzdHMgZmFjdG9yaWFsIG9mIDAu
CitURVNUKEZhY3RvcmlhbFRlc3QsIEhhbmRsZXNaZXJvSW5wdXQpIHsKKyAgRVhQRUNUX0VRKEZh
Y3RvcmlhbCgwKSwgMSk7Cit9CisKKy8vIFRlc3RzIGZhY3RvcmlhbCBvZiBwb3NpdGl2ZSBudW1i
ZXJzLgorVEVTVChGYWN0b3JpYWxUZXN0LCBIYW5kbGVzUG9zaXRpdmVJbnB1dCkgeworICBFWFBF
Q1RfRVEoRmFjdG9yaWFsKDEpLCAxKTsKKyAgRVhQRUNUX0VRKEZhY3RvcmlhbCgyKSwgMik7Cisg
IEVYUEVDVF9FUShGYWN0b3JpYWwoMyksIDYpOworICBFWFBFQ1RfRVEoRmFjdG9yaWFsKDgpLCA0
MDMyMCk7Cit9CitgYGAKKworZ29vZ2xldGVzdCBncm91cHMgdGhlIHRlc3QgcmVzdWx0cyBieSB0
ZXN0IGNhc2VzLCBzbyBsb2dpY2FsbHktcmVsYXRlZCB0ZXN0cworc2hvdWxkIGJlIGluIHRoZSBz
YW1lIHRlc3QgY2FzZTsgaW4gb3RoZXIgd29yZHMsIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGVp
cgorYFRFU1QoKWAgc2hvdWxkIGJlIHRoZSBzYW1lLiBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgd2Ug
aGF2ZSB0d28gdGVzdHMsCitgSGFuZGxlc1plcm9JbnB1dGAgYW5kIGBIYW5kbGVzUG9zaXRpdmVJ
bnB1dGAsIHRoYXQgYmVsb25nIHRvIHRoZSBzYW1lIHRlc3QgY2FzZQorYEZhY3RvcmlhbFRlc3Rg
LgorCitXaGVuIG5hbWluZyB5b3VyIHRlc3QgY2FzZXMgYW5kIHRlc3RzLCB5b3Ugc2hvdWxkIGZv
bGxvdyB0aGUgc2FtZSBjb252ZW50aW9uIGFzCitmb3IgW25hbWluZyBmdW5jdGlvbnMgYW5kCitj
bGFzc2VzXShodHRwczovL2dvb2dsZS5naXRodWIuaW8vc3R5bGVndWlkZS9jcHBndWlkZS5odG1s
I0Z1bmN0aW9uX05hbWVzKS4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1h
Yy4KKworIyMgVGVzdCBGaXh0dXJlczogVXNpbmcgdGhlIFNhbWUgRGF0YSBDb25maWd1cmF0aW9u
IGZvciBNdWx0aXBsZSBUZXN0cworCitJZiB5b3UgZmluZCB5b3Vyc2VsZiB3cml0aW5nIHR3byBv
ciBtb3JlIHRlc3RzIHRoYXQgb3BlcmF0ZSBvbiBzaW1pbGFyIGRhdGEsIHlvdQorY2FuIHVzZSBh
ICp0ZXN0IGZpeHR1cmUqLiBJdCBhbGxvd3MgeW91IHRvIHJldXNlIHRoZSBzYW1lIGNvbmZpZ3Vy
YXRpb24gb2YKK29iamVjdHMgZm9yIHNldmVyYWwgZGlmZmVyZW50IHRlc3RzLgorCitUbyBjcmVh
dGUgYSBmaXh0dXJlOgorCisxLiAgRGVyaXZlIGEgY2xhc3MgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0
YCAuIFN0YXJ0IGl0cyBib2R5IHdpdGggYHByb3RlY3RlZDpgIGFzCisgICAgd2UnbGwgd2FudCB0
byBhY2Nlc3MgZml4dHVyZSBtZW1iZXJzIGZyb20gc3ViLWNsYXNzZXMuCisxLiAgSW5zaWRlIHRo
ZSBjbGFzcywgZGVjbGFyZSBhbnkgb2JqZWN0cyB5b3UgcGxhbiB0byB1c2UuCisxLiAgSWYgbmVj
ZXNzYXJ5LCB3cml0ZSBhIGRlZmF1bHQgY29uc3RydWN0b3Igb3IgYFNldFVwKClgIGZ1bmN0aW9u
IHRvIHByZXBhcmUKKyAgICB0aGUgb2JqZWN0cyBmb3IgZWFjaCB0ZXN0LiBBIGNvbW1vbiBtaXN0
YWtlIGlzIHRvIHNwZWxsIGBTZXRVcCgpYCBhcworICAgICoqYFNldHVwKClgKiogd2l0aCBhIHNt
YWxsIGB1YCAtIFVzZSBgb3ZlcnJpZGVgIGluIEMrKzExIHRvIG1ha2Ugc3VyZSB5b3UKKyAgICBz
cGVsbGVkIGl0IGNvcnJlY3RseQorMS4gIElmIG5lY2Vzc2FyeSwgd3JpdGUgYSBkZXN0cnVjdG9y
IG9yIGBUZWFyRG93bigpYCBmdW5jdGlvbiB0byByZWxlYXNlIGFueQorICAgIHJlc291cmNlcyB5
b3UgYWxsb2NhdGVkIGluIGBTZXRVcCgpYCAuIFRvIGxlYXJuIHdoZW4geW91IHNob3VsZCB1c2Ug
dGhlCisgICAgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBhbmQgd2hlbiB5b3Ugc2hvdWxkIHVzZSBg
U2V0VXAoKS9UZWFyRG93bigpYCwgcmVhZAorICAgIHRoaXMgW0ZBUV0oZmFxLm1kI3Nob3VsZC1p
LXVzZS10aGUtY29uc3RydWN0b3JkZXN0cnVjdG9yLW9mLXRoZS10ZXN0LWZpeHR1cmUtb3Itc2V0
dXB0ZWFyZG93bikgZW50cnkuCisxLiAgSWYgbmVlZGVkLCBkZWZpbmUgc3Vicm91dGluZXMgZm9y
IHlvdXIgdGVzdHMgdG8gc2hhcmUuCisKK1doZW4gdXNpbmcgYSBmaXh0dXJlLCB1c2UgYFRFU1Rf
RigpYCBpbnN0ZWFkIG9mIGBURVNUKClgIGFzIGl0IGFsbG93cyB5b3UgdG8KK2FjY2VzcyBvYmpl
Y3RzIGFuZCBzdWJyb3V0aW5lcyBpbiB0aGUgdGVzdCBmaXh0dXJlOgorCitgYGBjKysKK1RFU1Rf
RihUZXN0Q2FzZU5hbWUsIFRlc3ROYW1lKSB7CisgIC4uLiB0ZXN0IGJvZHkgLi4uCit9CitgYGAK
KworTGlrZSBgVEVTVCgpYCwgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSB0ZXN0IGNhc2UgbmFt
ZSwgYnV0IGZvciBgVEVTVF9GKClgIHRoaXMKK211c3QgYmUgdGhlIG5hbWUgb2YgdGhlIHRlc3Qg
Zml4dHVyZSBjbGFzcy4gWW91J3ZlIHByb2JhYmx5IGd1ZXNzZWQ6IGBfRmAgaXMgZm9yCitmaXh0
dXJlLgorCitVbmZvcnR1bmF0ZWx5LCB0aGUgQysrIG1hY3JvIHN5c3RlbSBkb2VzIG5vdCBhbGxv
dyB1cyB0byBjcmVhdGUgYSBzaW5nbGUgbWFjcm8KK3RoYXQgY2FuIGhhbmRsZSBib3RoIHR5cGVz
IG9mIHRlc3RzLiBVc2luZyB0aGUgd3JvbmcgbWFjcm8gY2F1c2VzIGEgY29tcGlsZXIKK2Vycm9y
LgorCitBbHNvLCB5b3UgbXVzdCBmaXJzdCBkZWZpbmUgYSB0ZXN0IGZpeHR1cmUgY2xhc3MgYmVm
b3JlIHVzaW5nIGl0IGluIGEKK2BURVNUX0YoKWAsIG9yIHlvdSdsbCBnZXQgdGhlIGNvbXBpbGVy
IGVycm9yICJgdmlydHVhbCBvdXRzaWRlIGNsYXNzCitkZWNsYXJhdGlvbmAiLgorCitGb3IgZWFj
aCB0ZXN0IGRlZmluZWQgd2l0aCBgVEVTVF9GKClgICwgZ29vZ2xldGVzdCB3aWxsIGNyZWF0ZSBh
ICpmcmVzaCogdGVzdAorZml4dHVyZSBhdCBydW50aW1lLCBpbW1lZGlhdGVseSBpbml0aWFsaXpl
IGl0IHZpYSBgU2V0VXAoKWAgLCBydW4gdGhlIHRlc3QsCitjbGVhbiB1cCBieSBjYWxsaW5nIGBU
ZWFyRG93bigpYCAsIGFuZCB0aGVuIGRlbGV0ZSB0aGUgdGVzdCBmaXh0dXJlLiBOb3RlIHRoYXQK
K2RpZmZlcmVudCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgaGF2ZSBkaWZmZXJlbnQgdGVz
dCBmaXh0dXJlIG9iamVjdHMsIGFuZAorZ29vZ2xldGVzdCBhbHdheXMgZGVsZXRlcyBhIHRlc3Qg
Zml4dHVyZSBiZWZvcmUgaXQgY3JlYXRlcyB0aGUgbmV4dCBvbmUuCitnb29nbGV0ZXN0IGRvZXMg
Kipub3QqKiByZXVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUgZm9yIG11bHRpcGxlIHRlc3RzLiBB
bnkKK2NoYW5nZXMgb25lIHRlc3QgbWFrZXMgdG8gdGhlIGZpeHR1cmUgZG8gbm90IGFmZmVjdCBv
dGhlciB0ZXN0cy4KKworQXMgYW4gZXhhbXBsZSwgbGV0J3Mgd3JpdGUgdGVzdHMgZm9yIGEgRklG
TyBxdWV1ZSBjbGFzcyBuYW1lZCBgUXVldWVgLCB3aGljaCBoYXMKK3RoZSBmb2xsb3dpbmcgaW50
ZXJmYWNlOgorCitgYGBjKysKK3RlbXBsYXRlIDx0eXBlbmFtZSBFPiAgLy8gRSBpcyB0aGUgZWxl
bWVudCB0eXBlLgorY2xhc3MgUXVldWUgeworIHB1YmxpYzoKKyAgUXVldWUoKTsKKyAgdm9pZCBF
bnF1ZXVlKGNvbnN0IEUmIGVsZW1lbnQpOworICBFKiBEZXF1ZXVlKCk7ICAvLyBSZXR1cm5zIE5V
TEwgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LgorICBzaXplX3Qgc2l6ZSgpIGNvbnN0OworICAuLi4K
K307CitgYGAKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MuIEJ5IGNvbnZlbnRpb24s
IHlvdSBzaG91bGQgZ2l2ZSBpdCB0aGUgbmFtZQorYEZvb1Rlc3RgIHdoZXJlIGBGb29gIGlzIHRo
ZSBjbGFzcyBiZWluZyB0ZXN0ZWQuCisKK2BgYGMrKworY2xhc3MgUXVldWVUZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUg
eworICAgICBxMV8uRW5xdWV1ZSgxKTsKKyAgICAgcTJfLkVucXVldWUoMik7CisgICAgIHEyXy5F
bnF1ZXVlKDMpOworICB9CisKKyAgLy8gdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlIHt9CisKKyAg
UXVldWU8aW50PiBxMF87CisgIFF1ZXVlPGludD4gcTFfOworICBRdWV1ZTxpbnQ+IHEyXzsKK307
CitgYGAKKworSW4gdGhpcyBjYXNlLCBgVGVhckRvd24oKWAgaXMgbm90IG5lZWRlZCBzaW5jZSB3
ZSBkb24ndCBoYXZlIHRvIGNsZWFuIHVwIGFmdGVyCitlYWNoIHRlc3QsIG90aGVyIHRoYW4gd2hh
dCdzIGFscmVhZHkgZG9uZSBieSB0aGUgZGVzdHJ1Y3Rvci4KKworTm93IHdlJ2xsIHdyaXRlIHRl
c3RzIHVzaW5nIGBURVNUX0YoKWAgYW5kIHRoaXMgZml4dHVyZS4KKworYGBgYysrCitURVNUX0Yo
UXVldWVUZXN0LCBJc0VtcHR5SW5pdGlhbGx5KSB7CisgIEVYUEVDVF9FUShxMF8uc2l6ZSgpLCAw
KTsKK30KKworVEVTVF9GKFF1ZXVlVGVzdCwgRGVxdWV1ZVdvcmtzKSB7CisgIGludCogbiA9IHEw
Xy5EZXF1ZXVlKCk7CisgIEVYUEVDVF9FUShuLCBudWxscHRyKTsKKworICBuID0gcTFfLkRlcXVl
dWUoKTsKKyAgQVNTRVJUX05FKG4sIG51bGxwdHIpOworICBFWFBFQ1RfRVEoKm4sIDEpOworICBF
WFBFQ1RfRVEocTFfLnNpemUoKSwgMCk7CisgIGRlbGV0ZSBuOworCisgIG4gPSBxMl8uRGVxdWV1
ZSgpOworICBBU1NFUlRfTkUobiwgbnVsbHB0cik7CisgIEVYUEVDVF9FUSgqbiwgMik7CisgIEVY
UEVDVF9FUShxMl8uc2l6ZSgpLCAxKTsKKyAgZGVsZXRlIG47Cit9CitgYGAKKworVGhlIGFib3Zl
IHVzZXMgYm90aCBgQVNTRVJUXypgIGFuZCBgRVhQRUNUXypgIGFzc2VydGlvbnMuIFRoZSBydWxl
IG9mIHRodW1iIGlzCit0byB1c2UgYEVYUEVDVF8qYCB3aGVuIHlvdSB3YW50IHRoZSB0ZXN0IHRv
IGNvbnRpbnVlIHRvIHJldmVhbCBtb3JlIGVycm9ycyBhZnRlcgordGhlIGFzc2VydGlvbiBmYWls
dXJlLCBhbmQgdXNlIGBBU1NFUlRfKmAgd2hlbiBjb250aW51aW5nIGFmdGVyIGZhaWx1cmUgZG9l
c24ndAorbWFrZSBzZW5zZS4gRm9yIGV4YW1wbGUsIHRoZSBzZWNvbmQgYXNzZXJ0aW9uIGluIHRo
ZSBgRGVxdWV1ZWAgdGVzdCBpcworPUFTU0VSVF9ORShudWxscHRyLCBuKT0sIGFzIHdlIG5lZWQg
dG8gZGVyZWZlcmVuY2UgdGhlIHBvaW50ZXIgYG5gIGxhdGVyLCB3aGljaAord291bGQgbGVhZCB0
byBhIHNlZ2ZhdWx0IHdoZW4gYG5gIGlzIGBOVUxMYC4KKworV2hlbiB0aGVzZSB0ZXN0cyBydW4s
IHRoZSBmb2xsb3dpbmcgaGFwcGVuczoKKworMS4gIGdvb2dsZXRlc3QgY29uc3RydWN0cyBhIGBR
dWV1ZVRlc3RgIG9iamVjdCAobGV0J3MgY2FsbCBpdCBgdDFgICkuCisxLiAgYHQxLlNldFVwKClg
IGluaXRpYWxpemVzIGB0MWAgLgorMS4gIFRoZSBmaXJzdCB0ZXN0ICggYElzRW1wdHlJbml0aWFs
bHlgICkgcnVucyBvbiBgdDFgIC4KKzEuICBgdDEuVGVhckRvd24oKWAgY2xlYW5zIHVwIGFmdGVy
IHRoZSB0ZXN0IGZpbmlzaGVzLgorMS4gIGB0MWAgaXMgZGVzdHJ1Y3RlZC4KKzEuICBUaGUgYWJv
dmUgc3RlcHMgYXJlIHJlcGVhdGVkIG9uIGFub3RoZXIgYFF1ZXVlVGVzdGAgb2JqZWN0LCB0aGlz
IHRpbWUKKyAgICBydW5uaW5nIHRoZSBgRGVxdWV1ZVdvcmtzYCB0ZXN0LgorCisqKkF2YWlsYWJp
bGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisKKyMjIEludm9raW5nIHRoZSBUZXN0cwor
CitgVEVTVCgpYCBhbmQgYFRFU1RfRigpYCBpbXBsaWNpdGx5IHJlZ2lzdGVyIHRoZWlyIHRlc3Rz
IHdpdGggZ29vZ2xldGVzdC4gU28sCit1bmxpa2Ugd2l0aCBtYW55IG90aGVyIEMrKyB0ZXN0aW5n
IGZyYW1ld29ya3MsIHlvdSBkb24ndCBoYXZlIHRvIHJlLWxpc3QgYWxsCit5b3VyIGRlZmluZWQg
dGVzdHMgaW4gb3JkZXIgdG8gcnVuIHRoZW0uCisKK0FmdGVyIGRlZmluaW5nIHlvdXIgdGVzdHMs
IHlvdSBjYW4gcnVuIHRoZW0gd2l0aCBgUlVOX0FMTF9URVNUUygpYCAsIHdoaWNoCityZXR1cm5z
IGAwYCBpZiBhbGwgdGhlIHRlc3RzIGFyZSBzdWNjZXNzZnVsLCBvciBgMWAgb3RoZXJ3aXNlLiBO
b3RlIHRoYXQKK2BSVU5fQUxMX1RFU1RTKClgIHJ1bnMgKmFsbCB0ZXN0cyogaW4geW91ciBsaW5r
IHVuaXQgLS0gdGhleSBjYW4gYmUgZnJvbQorZGlmZmVyZW50IHRlc3QgY2FzZXMsIG9yIGV2ZW4g
ZGlmZmVyZW50IHNvdXJjZSBmaWxlcy4KKworV2hlbiBpbnZva2VkLCB0aGUgYFJVTl9BTExfVEVT
VFMoKWAgbWFjcm86CisKKzEuIFNhdmVzIHRoZSBzdGF0ZSBvZiBhbGwgZ29vZ2xldGVzdCBmbGFn
cworCisqICAgQ3JlYXRlcyBhIHRlc3QgZml4dHVyZSBvYmplY3QgZm9yIHRoZSBmaXJzdCB0ZXN0
LgorCisqICAgSW5pdGlhbGl6ZXMgaXQgdmlhIGBTZXRVcCgpYC4KKworKiAgIFJ1bnMgdGhlIHRl
c3Qgb24gdGhlIGZpeHR1cmUgb2JqZWN0LgorCisqICAgQ2xlYW5zIHVwIHRoZSBmaXh0dXJlIHZp
YSBgVGVhckRvd24oKWAuCisKKyogICBEZWxldGVzIHRoZSBmaXh0dXJlLgorCisqIFJlc3RvcmVz
IHRoZSBzdGF0ZSBvZiBhbGwgZ29vZ2xldGVzdCBmbGFncworCisqICAgUmVwZWF0cyB0aGUgYWJv
dmUgc3RlcHMgZm9yIHRoZSBuZXh0IHRlc3QsIHVudGlsIGFsbCB0ZXN0cyBoYXZlIHJ1bi4KKwor
SWYgYSBmYXRhbCBmYWlsdXJlIGhhcHBlbnMgdGhlIHN1YnNlcXVlbnQgc3RlcHMgd2lsbCBiZSBz
a2lwcGVkLgorCis+IElNUE9SVEFOVDogWW91IG11c3QgKipub3QqKiBpZ25vcmUgdGhlIHJldHVy
biB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYCwgb3IKKz4geW91IHdpbGwgZ2V0IGEgY29tcGls
ZXIgZXJyb3IuIFRoZSByYXRpb25hbGUgZm9yIHRoaXMgZGVzaWduIGlzIHRoYXQgdGhlCis+IGF1
dG9tYXRlZCB0ZXN0aW5nIHNlcnZpY2UgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgdGVzdCBoYXMgcGFz
c2VkIGJhc2VkIG9uIGl0cworPiBleGl0IGNvZGUsIG5vdCBvbiBpdHMgc3Rkb3V0L3N0ZGVyciBv
dXRwdXQ7IHRodXMgeW91ciBgbWFpbigpYCBmdW5jdGlvbiBtdXN0Cis+IHJldHVybiB0aGUgdmFs
dWUgb2YgYFJVTl9BTExfVEVTVFMoKWAuCis+Cis+IEFsc28sIHlvdSBzaG91bGQgY2FsbCBgUlVO
X0FMTF9URVNUUygpYCBvbmx5ICoqb25jZSoqLiBDYWxsaW5nIGl0IG1vcmUgdGhhbgorPiBvbmNl
IGNvbmZsaWN0cyB3aXRoIHNvbWUgYWR2YW5jZWQgZ29vZ2xldGVzdCBmZWF0dXJlcyAoZS5nLiB0
aHJlYWQtc2FmZSBbZGVhdGgKKz4gdGVzdHNdKGFkdmFuY2VkI2RlYXRoLXRlc3RzKSkgYW5kIHRo
dXMgaXMgbm90IHN1cHBvcnRlZC4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3Ms
IE1hYy4KKworIyMgV3JpdGluZyB0aGUgbWFpbigpIEZ1bmN0aW9uCisKK0luIGBnb29nbGUzYCwg
dGhlIHNpbXBsZXN0IGFwcHJvYWNoIGlzIHRvIHVzZSB0aGUgZGVmYXVsdCBtYWluKCkgZnVuY3Rp
b24KK3Byb3ZpZGVkIGJ5IGxpbmtpbmcgaW4gYCIvL3Rlc3RpbmcvYmFzZS9wdWJsaWM6Z3Rlc3Rf
bWFpbiJgLiBJZiB0aGF0IGRvZXNuJ3QKK2NvdmVyIHdoYXQgeW91IG5lZWQsIHlvdSBzaG91bGQg
d3JpdGUgeW91ciBvd24gbWFpbigpIGZ1bmN0aW9uLCB3aGljaCBzaG91bGQKK3JldHVybiB0aGUg
dmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAuIExpbmsgdG8gYCIvL3Rlc3RpbmcvYmFzZS9wdWJs
aWM6Z3VuaXQiYC4KK1lvdSBjYW4gc3RhcnQgZnJvbSB0aGlzIGJvaWxlcnBsYXRlOgorCitgYGBj
KysKKyNpbmNsdWRlICJ0aGlzL3BhY2thZ2UvZm9vLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKKworbmFtZXNwYWNlIHsKKworLy8gVGhlIGZpeHR1cmUgZm9yIHRlc3RpbmcgY2xhc3MgRm9v
LgorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoK
KyAgLy8gWW91IGNhbiByZW1vdmUgYW55IG9yIGFsbCBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9u
cyBpZiBpdHMgYm9keQorICAvLyBpcyBlbXB0eS4KKworICBGb29UZXN0KCkgeworICAgICAvLyBZ
b3UgY2FuIGRvIHNldC11cCB3b3JrIGZvciBlYWNoIHRlc3QgaGVyZS4KKyAgfQorCisgIH5Gb29U
ZXN0KCkgb3ZlcnJpZGUgeworICAgICAvLyBZb3UgY2FuIGRvIGNsZWFuLXVwIHdvcmsgdGhhdCBk
b2Vzbid0IHRocm93IGV4Y2VwdGlvbnMgaGVyZS4KKyAgfQorCisgIC8vIElmIHRoZSBjb25zdHJ1
Y3RvciBhbmQgZGVzdHJ1Y3RvciBhcmUgbm90IGVub3VnaCBmb3Igc2V0dGluZyB1cAorICAvLyBh
bmQgY2xlYW5pbmcgdXAgZWFjaCB0ZXN0LCB5b3UgY2FuIGRlZmluZSB0aGUgZm9sbG93aW5nIG1l
dGhvZHM6CisKKyAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIHsKKyAgICAgLy8gQ29kZSBoZXJlIHdp
bGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjb25zdHJ1Y3RvciAocmlnaHQKKyAg
ICAgLy8gYmVmb3JlIGVhY2ggdGVzdCkuCisgIH0KKworICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJp
ZGUgeworICAgICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIg
ZWFjaCB0ZXN0IChyaWdodAorICAgICAvLyBiZWZvcmUgdGhlIGRlc3RydWN0b3IpLgorICB9CisK
KyAgLy8gT2JqZWN0cyBkZWNsYXJlZCBoZXJlIGNhbiBiZSB1c2VkIGJ5IGFsbCB0ZXN0cyBpbiB0
aGUgdGVzdCBjYXNlIGZvciBGb28uCit9OworCisvLyBUZXN0cyB0aGF0IHRoZSBGb286OkJhcigp
IG1ldGhvZCBkb2VzIEFiYy4KK1RFU1RfRihGb29UZXN0LCBNZXRob2RCYXJEb2VzQWJjKSB7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGlucHV0X2ZpbGVwYXRoID0gInRoaXMvcGFja2FnZS90ZXN0ZGF0
YS9teWlucHV0ZmlsZS5kYXQiOworICBjb25zdCBzdGQ6OnN0cmluZyBvdXRwdXRfZmlsZXBhdGgg
PSAidGhpcy9wYWNrYWdlL3Rlc3RkYXRhL215b3V0cHV0ZmlsZS5kYXQiOworICBGb28gZjsKKyAg
RVhQRUNUX0VRKGYuQmFyKGlucHV0X2ZpbGVwYXRoLCBvdXRwdXRfZmlsZXBhdGgpLCAwKTsKK30K
KworLy8gVGVzdHMgdGhhdCBGb28gZG9lcyBYeXouCitURVNUX0YoRm9vVGVzdCwgRG9lc1h5eikg
eworICAvLyBFeGVyY2lzZXMgdGhlIFh5eiBmZWF0dXJlIG9mIEZvby4KK30KKworfSAgLy8gbmFt
ZXNwYWNlCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICA6OnRlc3Rpbmc6
OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsK
K30KK2BgYAorCisKK1RoZSBgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpYCBmdW5jdGlvbiBw
YXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IKK2dvb2dsZXRlc3QgZmxhZ3MsIGFuZCByZW1vdmVz
IGFsbCByZWNvZ25pemVkIGZsYWdzLiBUaGlzIGFsbG93cyB0aGUgdXNlciB0bworY29udHJvbCBh
IHRlc3QgcHJvZ3JhbSdzIGJlaGF2aW9yIHZpYSB2YXJpb3VzIGZsYWdzLCB3aGljaCB3ZSdsbCBj
b3ZlciBpbgorW0FkdmFuY2VkR3VpZGVdKGFkdmFuY2VkLm1kKS4gWW91ICoqbXVzdCoqIGNhbGwg
dGhpcyBmdW5jdGlvbiBiZWZvcmUgY2FsbGluZworYFJVTl9BTExfVEVTVFMoKWAsIG9yIHRoZSBm
bGFncyB3b24ndCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4KKworT24gV2luZG93cywgYEluaXRH
b29nbGVUZXN0KClgIGFsc28gd29ya3Mgd2l0aCB3aWRlIHN0cmluZ3MsIHNvIGl0IGNhbiBiZSB1
c2VkCitpbiBwcm9ncmFtcyBjb21waWxlZCBpbiBgVU5JQ09ERWAgbW9kZSBhcyB3ZWxsLgorCitC
dXQgbWF5YmUgeW91IHRoaW5rIHRoYXQgd3JpdGluZyBhbGwgdGhvc2UgbWFpbigpIGZ1bmN0aW9u
cyBpcyB0b28gbXVjaCB3b3JrPyBXZQorYWdyZWUgd2l0aCB5b3UgY29tcGxldGVseSBhbmQgdGhh
dCdzIHdoeSBHb29nbGUgVGVzdCBwcm92aWRlcyBhIGJhc2ljCitpbXBsZW1lbnRhdGlvbiBvZiBt
YWluKCkuIElmIGl0IGZpdHMgeW91ciBuZWVkcywgdGhlbiBqdXN0IGxpbmsgeW91ciB0ZXN0IHdp
dGgKK2d0ZXN0XF9tYWluIGxpYnJhcnkgYW5kIHlvdSBhcmUgZ29vZCB0byBnby4KKworTk9URTog
YFBhcnNlR1VuaXRGbGFncygpYCBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBJbml0R29vZ2xl
VGVzdCgpYC4KKworCisjIyBLbm93biBMaW1pdGF0aW9ucworCisqICAgR29vZ2xlIFRlc3QgaXMg
ZGVzaWduZWQgdG8gYmUgdGhyZWFkLXNhZmUuIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyB0aHJlYWQt
c2FmZQorICAgIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGBwdGhyZWFkc2AgbGlicmFyeSBpcyBhdmFp
bGFibGUuIEl0IGlzIGN1cnJlbnRseQorICAgIF91bnNhZmVfIHRvIHVzZSBHb29nbGUgVGVzdCBh
c3NlcnRpb25zIGZyb20gdHdvIHRocmVhZHMgY29uY3VycmVudGx5IG9uCisgICAgb3RoZXIgc3lz
dGVtcyAoZS5nLiBXaW5kb3dzKS4gSW4gbW9zdCB0ZXN0cyB0aGlzIGlzIG5vdCBhbiBpc3N1ZSBh
cyB1c3VhbGx5CisgICAgdGhlIGFzc2VydGlvbnMgYXJlIGRvbmUgaW4gdGhlIG1haW4gdGhyZWFk
LiBJZiB5b3Ugd2FudCB0byBoZWxwLCB5b3UgY2FuCisgICAgdm9sdW50ZWVyIHRvIGltcGxlbWVu
dCB0aGUgbmVjZXNzYXJ5IHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGluCisgICAgYGd0ZXN0
LXBvcnQuaGAgZm9yIHlvdXIgcGxhdGZvcm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9kb2NzL3NhbXBsZXMubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL3Nh
bXBsZXMubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMThkY2NhMzgxNDkxZTE5ODIzMzJjNmQ0NDcyY2E4MmQwZDAy
MTcwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3Mvc2Ft
cGxlcy5tZApAQCAtMCwwICsxLDIyIEBACisjIEdvb2dsZXRlc3QgU2FtcGxlcyB7I3NhbXBsZXN9
CisKK0lmIHlvdSdyZSBsaWtlIHVzLCB5b3UnZCBsaWtlIHRvIGxvb2sgYXQgW2dvb2dsZXRlc3QK
K3NhbXBsZXMuXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvdHJlZS9tYXN0
ZXIvZ29vZ2xldGVzdC9zYW1wbGVzKQorVGhlIHNhbXBsZSBkaXJlY3RvcnkgaGFzIGEgbnVtYmVy
IG9mIHdlbGwtY29tbWVudGVkIHNhbXBsZXMgc2hvd2luZyBob3cgdG8gdXNlIGEKK3ZhcmlldHkg
b2YgZ29vZ2xldGVzdCBmZWF0dXJlcy4KKworKiAgIFNhbXBsZSAjMSBzaG93cyB0aGUgYmFzaWMg
c3RlcHMgb2YgdXNpbmcgZ29vZ2xldGVzdCB0byB0ZXN0IEMrKyBmdW5jdGlvbnMuCisqICAgU2Ft
cGxlICMyIHNob3dzIGEgbW9yZSBjb21wbGV4IHVuaXQgdGVzdCBmb3IgYSBjbGFzcyB3aXRoIG11
bHRpcGxlIG1lbWJlcgorICAgIGZ1bmN0aW9ucy4KKyogICBTYW1wbGUgIzMgdXNlcyBhIHRlc3Qg
Zml4dHVyZS4KKyogICBTYW1wbGUgIzQgdGVhY2hlcyB5b3UgaG93IHRvIHVzZSBnb29nbGV0ZXN0
IGFuZCBgZ29vZ2xldGVzdC5oYCB0b2dldGhlciB0bworICAgIGdldCB0aGUgYmVzdCBvZiBib3Ro
IGxpYnJhcmllcy4KKyogICBTYW1wbGUgIzUgcHV0cyBzaGFyZWQgdGVzdGluZyBsb2dpYyBpbiBh
IGJhc2UgdGVzdCBmaXh0dXJlLCBhbmQgcmV1c2VzIGl0IGluCisgICAgZGVyaXZlZCBmaXh0dXJl
cy4KKyogICBTYW1wbGUgIzYgZGVtb25zdHJhdGVzIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4K
KyogICBTYW1wbGUgIzcgdGVhY2hlcyB0aGUgYmFzaWNzIG9mIHZhbHVlLXBhcmFtZXRlcml6ZWQg
dGVzdHMuCisqICAgU2FtcGxlICM4IHNob3dzIHVzaW5nIGBDb21iaW5lKClgIGluIHZhbHVlLXBh
cmFtZXRlcml6ZWQgdGVzdHMuCisqICAgU2FtcGxlICM5IHNob3dzIHVzZSBvZiB0aGUgbGlzdGVu
ZXIgQVBJIHRvIG1vZGlmeSBHb29nbGUgVGVzdCdzIGNvbnNvbGUKKyAgICBvdXRwdXQgYW5kIHRo
ZSB1c2Ugb2YgaXRzIHJlZmxlY3Rpb24gQVBJIHRvIGluc3BlY3QgdGVzdCByZXN1bHRzLgorKiAg
IFNhbXBsZSAjMTAgc2hvd3MgdXNlIG9mIHRoZSBsaXN0ZW5lciBBUEkgdG8gaW1wbGVtZW50IGEg
cHJpbWl0aXZlIG1lbW9yeQorICAgIGxlYWsgY2hlY2tlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgKaW5kZXgg
MTIxZGMxZmI1YWM1ZDU5YTMzZDUzMDM0MDU4ZWVlOTFjMjEyYTIwOC4uMjBjNTRkODY5NTE5ZjY5
MzBlN2ViZmQyYzA4MDViYWNhNDIyMTZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgKQEAgLTI2LDE5ICsy
NiwxOSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CiAvLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRo
ZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIFRoZSBHb29n
bGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAv
LyBUaGlzIGhlYWRlciBmaWxlIGRlZmluZXMgdGhlIHB1YmxpYyBBUEkgZm9yIGRlYXRoIHRlc3Rz
LiAgSXQgaXMKIC8vICNpbmNsdWRlZCBieSBndGVzdC5oIHNvIGEgdXNlciBkb2Vzbid0IG5lZWQg
dG8gaW5jbHVkZSB0aGlzCiAvLyBkaXJlY3RseS4KKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5P
VCBERUxFVEUKIAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0RFQVRIX1RFU1Rf
SF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9ERUFUSF9URVNUX0hfCiAKLSNp
bmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmg+CisjaW5j
bHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5oIgogCiBuYW1l
c3BhY2UgdGVzdGluZyB7CiAKQEAgLTUxLDYgKzUxLDE3IEBAIEdURVNUX0RFQ0xBUkVfc3RyaW5n
XyhkZWF0aF90ZXN0X3N0eWxlKTsKIAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCiAKK25hbWVz
cGFjZSBpbnRlcm5hbCB7CisKKy8vIFJldHVybnMgYSBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcg
d2hldGhlciB0aGUgY2FsbGVyIGlzIGN1cnJlbnRseQorLy8gZXhlY3V0aW5nIGluIHRoZSBjb250
ZXh0IG9mIHRoZSBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nlc3MuICBUb29scyBzdWNoIGFzCisvLyBW
YWxncmluZCBoZWFwIGNoZWNrZXJzIG1heSBuZWVkIHRoaXMgdG8gbW9kaWZ5IHRoZWlyIGJlaGF2
aW9yIGluIGRlYXRoCisvLyB0ZXN0cy4gIElNUE9SVEFOVDogVGhpcyBpcyBhbiBpbnRlcm5hbCB1
dGlsaXR5LiAgVXNpbmcgaXQgbWF5IGJyZWFrIHRoZQorLy8gaW1wbGVtZW50YXRpb24gb2YgZGVh
dGggdGVzdHMuICBVc2VyIGNvZGUgTVVTVCBOT1QgdXNlIGl0LgorR1RFU1RfQVBJXyBib29sIElu
RGVhdGhUZXN0Q2hpbGQoKTsKKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKIC8vIFRoZSBm
b2xsb3dpbmcgbWFjcm9zIGFyZSB1c2VmdWwgZm9yIHdyaXRpbmcgZGVhdGggdGVzdHMuCiAKIC8v
IEhlcmUncyB3aGF0IGhhcHBlbnMgd2hlbiBhbiBBU1NFUlRfREVBVEgqIG9yIEVYUEVDVF9ERUFU
SCogaXMKQEAgLTc1LDcgKzg2LDcgQEAgR1RFU1RfREVDTEFSRV9zdHJpbmdfKGRlYXRoX3Rlc3Rf
c3R5bGUpOwogLy8gICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgewogLy8gICAgIEVYUEVD
VF9ERUFUSChzZXJ2ZXIuUHJvY2Vzc1JlcXVlc3QoaSksCiAvLyAgICAgICAgICAgICAgICAgICJJ
bnZhbGlkIHJlcXVlc3QgLiogaW4gUHJvY2Vzc1JlcXVlc3QoKSIpCi0vLyAgICAgICAgIDw8ICJG
YWlsZWQgdG8gZGllIG9uIHJlcXVlc3QgIiA8PCBpKTsKKy8vICAgICAgICAgICAgICAgICAgPDwg
IkZhaWxlZCB0byBkaWUgb24gcmVxdWVzdCAiIDw8IGk7CiAvLyAgIH0KIC8vCiAvLyAgIEFTU0VS
VF9FWElUKHNlcnZlci5FeGl0Tm93KCksIDo6dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCksICJF
eGl0aW5nIik7CkBAIC04OCwxMCArOTksMTEgQEAgR1RFU1RfREVDTEFSRV9zdHJpbmdfKGRlYXRo
X3Rlc3Rfc3R5bGUpOwogLy8KIC8vIE9uIHRoZSByZWd1bGFyIGV4cHJlc3Npb25zIHVzZWQgaW4g
ZGVhdGggdGVzdHM6CiAvLworLy8gICBHT09HTEVURVNUX0NNMDAwNSBETyBOT1QgREVMRVRFCiAv
LyAgIE9uIFBPU0lYLWNvbXBsaWFudCBzeXN0ZW1zICgqbml4KSwgd2UgdXNlIHRoZSA8cmVnZXgu
aD4gbGlicmFyeSwKIC8vICAgd2hpY2ggdXNlcyB0aGUgUE9TSVggZXh0ZW5kZWQgcmVnZXggc3lu
dGF4LgogLy8KLS8vICAgT24gb3RoZXIgcGxhdGZvcm1zIChlLmcuIFdpbmRvd3MpLCB3ZSBvbmx5
IHN1cHBvcnQgYSBzaW1wbGUgcmVnZXgKKy8vICAgT24gb3RoZXIgcGxhdGZvcm1zIChlLmcuIFdp
bmRvd3Mgb3IgTWFjKSwgd2Ugb25seSBzdXBwb3J0IGEgc2ltcGxlIHJlZ2V4CiAvLyAgIHN5bnRh
eCBpbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIEdvb2dsZSBUZXN0LiAgVGhpcyBsaW1pdGVkCiAvLyAg
IGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSBlbm91Z2ggbW9zdCBvZiB0aGUgdGltZSB3aGVuIHdy
aXRpbmcKIC8vICAgZGVhdGggdGVzdHM7IHRob3VnaCBpdCBsYWNrcyBtYW55IGZlYXR1cmVzIHlv
dSBjYW4gZmluZCBpbiBQQ1JFCkBAIC0xNDksMjkgKzE2MSwyOSBAQCBHVEVTVF9ERUNMQVJFX3N0
cmluZ18oZGVhdGhfdGVzdF9zdHlsZSk7CiAvLyAgIGlzIHJhcmVseSBhIHByb2JsZW0gYXMgcGVv
cGxlIHVzdWFsbHkgZG9uJ3QgcHV0IHRoZSB0ZXN0IGJpbmFyeQogLy8gICBkaXJlY3RvcnkgaW4g
UEFUSC4KIC8vCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogbWFrZSB0aHJlYWQtc2FmZSBkZWF0
aCB0ZXN0cyBzZWFyY2ggdGhlIFBBVEguCisvLyBGSVhNRTogbWFrZSB0aHJlYWQtc2FmZSBkZWF0
aCB0ZXN0cyBzZWFyY2ggdGhlIFBBVEguCiAKIC8vIEFzc2VydHMgdGhhdCBhIGdpdmVuIHN0YXRl
bWVudCBjYXVzZXMgdGhlIHByb2dyYW0gdG8gZXhpdCwgd2l0aCBhbgogLy8gaW50ZWdlciBleGl0
IHN0YXR1cyB0aGF0IHNhdGlzZmllcyBwcmVkaWNhdGUsIGFuZCBlbWl0dGluZyBlcnJvciBvdXRw
dXQKIC8vIHRoYXQgbWF0Y2hlcyByZWdleC4KLSNkZWZpbmUgQVNTRVJUX0VYSVQoc3RhdGVtZW50
LCBwcmVkaWNhdGUsIHJlZ2V4KSBcCi0gIEdURVNUX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJl
ZGljYXRlLCByZWdleCwgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCisjIGRlZmluZSBBU1NFUlRfRVhJ
VChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpIFwKKyAgICBHVEVTVF9ERUFUSF9URVNUXyhz
dGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIEdURVNUX0ZBVEFMX0ZBSUxVUkVfKQogCiAvLyBM
aWtlIEFTU0VSVF9FWElULCBidXQgY29udGludWVzIG9uIHRvIHN1Y2Nlc3NpdmUgdGVzdHMgaW4g
dGhlCiAvLyB0ZXN0IGNhc2UsIGlmIGFueToKLSNkZWZpbmUgRVhQRUNUX0VYSVQoc3RhdGVtZW50
LCBwcmVkaWNhdGUsIHJlZ2V4KSBcCi0gIEdURVNUX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJl
ZGljYXRlLCByZWdleCwgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8pCisjIGRlZmluZSBFWFBFQ1Rf
RVhJVChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpIFwKKyAgICBHVEVTVF9ERUFUSF9URVNU
XyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVfKQog
CiAvLyBBc3NlcnRzIHRoYXQgYSBnaXZlbiBzdGF0ZW1lbnQgY2F1c2VzIHRoZSBwcm9ncmFtIHRv
IGV4aXQsIGVpdGhlciBieQogLy8gZXhwbGljaXRseSBleGl0aW5nIHdpdGggYSBub256ZXJvIGV4
aXQgY29kZSBvciBiZWluZyBraWxsZWQgYnkgYQogLy8gc2lnbmFsLCBhbmQgZW1pdHRpbmcgZXJy
b3Igb3V0cHV0IHRoYXQgbWF0Y2hlcyByZWdleC4KLSNkZWZpbmUgQVNTRVJUX0RFQVRIKHN0YXRl
bWVudCwgcmVnZXgpIFwKLSAgQVNTRVJUX0VYSVQoc3RhdGVtZW50LCA6OnRlc3Rpbmc6OmludGVy
bmFsOjpFeGl0ZWRVbnN1Y2Nlc3NmdWxseSwgcmVnZXgpCisjIGRlZmluZSBBU1NFUlRfREVBVEgo
c3RhdGVtZW50LCByZWdleCkgXAorICAgIEFTU0VSVF9FWElUKHN0YXRlbWVudCwgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6RXhpdGVkVW5zdWNjZXNzZnVsbHksIHJlZ2V4KQogCiAvLyBMaWtlIEFTU0VS
VF9ERUFUSCwgYnV0IGNvbnRpbnVlcyBvbiB0byBzdWNjZXNzaXZlIHRlc3RzIGluIHRoZQogLy8g
dGVzdCBjYXNlLCBpZiBhbnk6Ci0jZGVmaW5lIEVYUEVDVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4
KSBcCi0gIEVYUEVDVF9FWElUKHN0YXRlbWVudCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RXhpdGVk
VW5zdWNjZXNzZnVsbHksIHJlZ2V4KQorIyBkZWZpbmUgRVhQRUNUX0RFQVRIKHN0YXRlbWVudCwg
cmVnZXgpIFwKKyAgICBFWFBFQ1RfRVhJVChzdGF0ZW1lbnQsIDo6dGVzdGluZzo6aW50ZXJuYWw6
OkV4aXRlZFVuc3VjY2Vzc2Z1bGx5LCByZWdleCkKIAogLy8gVHdvIHByZWRpY2F0ZSBjbGFzc2Vz
IHRoYXQgY2FuIGJlIHVzZWQgaW4ge0FTU0VSVCxFWFBFQ1R9X0VYSVQqOgogCkBAIC0xODcsOSAr
MTk5LDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gRXhpdGVkV2l0aENvZGUgewogICBjb25zdCBpbnQg
ZXhpdF9jb2RlXzsKIH07CiAKLSNpZiAhR1RFU1RfT1NfV0lORE9XUworIyBpZiAhR1RFU1RfT1Nf
V0lORE9XUyAmJiAhR1RFU1RfT1NfRlVDSFNJQQogLy8gVGVzdHMgdGhhdCBhbiBleGl0IGNvZGUg
ZGVzY3JpYmVzIGFuIGV4aXQgZHVlIHRvIHRlcm1pbmF0aW9uIGJ5IGEKIC8vIGdpdmVuIHNpZ25h
bC4KKy8vIEdPT0dMRVRFU1RfQ00wMDA2IERPIE5PVCBERUxFVEUKIGNsYXNzIEdURVNUX0FQSV8g
S2lsbGVkQnlTaWduYWwgewogIHB1YmxpYzoKICAgZXhwbGljaXQgS2lsbGVkQnlTaWduYWwoaW50
IHNpZ251bSk7CkBAIC0xOTcsNyArMjEwLDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBLaWxsZWRCeVNp
Z25hbCB7CiAgcHJpdmF0ZToKICAgY29uc3QgaW50IHNpZ251bV87CiB9OwotI2VuZGlmICAvLyAh
R1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1MKIAogLy8gRVhQ
RUNUX0RFQlVHX0RFQVRIIGFzc2VydHMgdGhhdCB0aGUgZ2l2ZW4gc3RhdGVtZW50cyBkaWUgaW4g
ZGVidWcgbW9kZS4KIC8vIFRoZSBkZWF0aCB0ZXN0aW5nIGZyYW1ld29yayBjYXVzZXMgdGhpcyB0
byBoYXZlIGludGVyZXN0aW5nIHNlbWFudGljcywKQEAgLTI0Miw0MCArMjU1LDg4IEBAIGNsYXNz
IEdURVNUX0FQSV8gS2lsbGVkQnlTaWduYWwgewogLy8gICBFWFBFQ1RfRVEoMTIsIERpZUluRGVi
dWdPcjEyKCZzaWRlZWZmZWN0KSk7CiAvLyB9LCAiZGVhdGgiKTsKIC8vCi0jaWZkZWYgTkRFQlVH
CisjIGlmZGVmIE5ERUJVRwogCi0jZGVmaW5lIEVYUEVDVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQs
IHJlZ2V4KSBcCi0gIGRvIHsgc3RhdGVtZW50OyB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFs
OjpBbHdheXNGYWxzZSgpKQorIyAgZGVmaW5lIEVYUEVDVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQs
IHJlZ2V4KSBcCisgIEdURVNUX0VYRUNVVEVfU1RBVEVNRU5UXyhzdGF0ZW1lbnQsIHJlZ2V4KQog
Ci0jZGVmaW5lIEFTU0VSVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCi0gIGRvIHsg
c3RhdGVtZW50OyB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgpKQor
IyAgZGVmaW5lIEFTU0VSVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgIEdURVNU
X0VYRUNVVEVfU1RBVEVNRU5UXyhzdGF0ZW1lbnQsIHJlZ2V4KQogCi0jZWxzZQorIyBlbHNlCiAK
LSNkZWZpbmUgRVhQRUNUX0RFQlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKKyMgIGRlZmlu
ZSBFWFBFQ1RfREVCVUdfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAogICBFWFBFQ1RfREVBVEgo
c3RhdGVtZW50LCByZWdleCkKIAotI2RlZmluZSBBU1NFUlRfREVCVUdfREVBVEgoc3RhdGVtZW50
LCByZWdleCkgXAorIyAgZGVmaW5lIEFTU0VSVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4
KSBcCiAgIEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KQogCi0jZW5kaWYgIC8vIE5ERUJV
RyBmb3IgRVhQRUNUX0RFQlVHX0RFQVRICisjIGVuZGlmICAvLyBOREVCVUcgZm9yIEVYUEVDVF9E
RUJVR19ERUFUSAogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCisvLyBUaGlzIG1h
Y3JvIGlzIHVzZWQgZm9yIGltcGxlbWVudGluZyBtYWNyb3Mgc3VjaCBhcworLy8gRVhQRUNUX0RF
QVRIX0lGX1NVUFBPUlRFRCBhbmQgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCBvbiBzeXN0ZW1z
IHdoZXJlCisvLyBkZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZC4gVGhvc2UgbWFjcm9zIG11
c3QgY29tcGlsZSBvbiBzdWNoIHN5c3RlbXMKKy8vIGlmZiBFWFBFQ1RfREVBVEggYW5kIEFTU0VS
VF9ERUFUSCBjb21waWxlIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycyBvbgorLy8gc3lzdGVtcyB0
aGF0IHN1cHBvcnQgZGVhdGggdGVzdHMuIFRoaXMgYWxsb3dzIG9uZSB0byB3cml0ZSBzdWNoIGEg
bWFjcm8KKy8vIG9uIGEgc3lzdGVtIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCBkZWF0aCB0ZXN0cyBh
bmQgYmUgc3VyZSB0aGF0IGl0IHdpbGwKKy8vIGNvbXBpbGUgb24gYSBkZWF0aC10ZXN0IHN1cHBv
cnRpbmcgc3lzdGVtLiBJdCBpcyBleHBvc2VkIHB1YmxpY2x5IHNvIHRoYXQKKy8vIHN5c3RlbXMg
dGhhdCBoYXZlIGRlYXRoLXRlc3RzIHdpdGggc3RyaWN0ZXIgcmVxdWlyZW1lbnRzIHRoYW4KKy8v
IEdURVNUX0hBU19ERUFUSF9URVNUIGNhbiB3cml0ZSB0aGVpciBvd24gZXF1aXZhbGVudCBvZgor
Ly8gRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCBhbmQgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRF
RC4KKy8vCisvLyBQYXJhbWV0ZXJzOgorLy8gICBzdGF0ZW1lbnQgLSAgQSBzdGF0ZW1lbnQgdGhh
dCBhIG1hY3JvIHN1Y2ggYXMgRVhQRUNUX0RFQVRIIHdvdWxkIHRlc3QKKy8vICAgICAgICAgICAg
ICAgIGZvciBwcm9ncmFtIHRlcm1pbmF0aW9uLiBUaGlzIG1hY3JvIGhhcyB0byBtYWtlIHN1cmUg
dGhpcworLy8gICAgICAgICAgICAgICAgc3RhdGVtZW50IGlzIGNvbXBpbGVkIGJ1dCBub3QgZXhl
Y3V0ZWQsIHRvIGVuc3VyZSB0aGF0CisvLyAgICAgICAgICAgICAgICBFWFBFQ1RfREVBVEhfSUZf
U1VQUE9SVEVEIGNvbXBpbGVzIHdpdGggYSBjZXJ0YWluCisvLyAgICAgICAgICAgICAgICBwYXJh
bWV0ZXIgaWZmIEVYUEVDVF9ERUFUSCBjb21waWxlcyB3aXRoIGl0LgorLy8gICByZWdleCAgICAg
LSAgQSByZWdleCB0aGF0IGEgbWFjcm8gc3VjaCBhcyBFWFBFQ1RfREVBVEggd291bGQgdXNlIHRv
IHRlc3QKKy8vICAgICAgICAgICAgICAgIHRoZSBvdXRwdXQgb2Ygc3RhdGVtZW50LiAgVGhpcyBw
YXJhbWV0ZXIgaGFzIHRvIGJlCisvLyAgICAgICAgICAgICAgICBjb21waWxlZCBidXQgbm90IGV2
YWx1YXRlZCBieSB0aGlzIG1hY3JvLCB0byBlbnN1cmUgdGhhdAorLy8gICAgICAgICAgICAgICAg
dGhpcyBtYWNybyBvbmx5IGFjY2VwdHMgZXhwcmVzc2lvbnMgdGhhdCBhIG1hY3JvIHN1Y2ggYXMK
Ky8vICAgICAgICAgICAgICAgIEVYUEVDVF9ERUFUSCB3b3VsZCBhY2NlcHQuCisvLyAgIHRlcm1p
bmF0b3IgLSBNdXN0IGJlIGFuIGVtcHR5IHN0YXRlbWVudCBmb3IgRVhQRUNUX0RFQVRIX0lGX1NV
UFBPUlRFRAorLy8gICAgICAgICAgICAgICAgYW5kIGEgcmV0dXJuIHN0YXRlbWVudCBmb3IgQVNT
RVJUX0RFQVRIX0lGX1NVUFBPUlRFRC4KKy8vICAgICAgICAgICAgICAgIFRoaXMgZW5zdXJlcyB0
aGF0IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgd2lsbCBub3QKKy8vICAgICAgICAgICAgICAg
IGNvbXBpbGUgaW5zaWRlIGZ1bmN0aW9ucyB3aGVyZSBBU1NFUlRfREVBVEggZG9lc24ndAorLy8g
ICAgICAgICAgICAgICAgY29tcGlsZS4KKy8vCisvLyAgVGhlIGJyYW5jaCB0aGF0IGhhcyBhbiBh
bHdheXMgZmFsc2UgY29uZGl0aW9uIGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQKKy8vICBzdGF0ZW1l
bnQgYW5kIHJlZ2V4IGFyZSBjb21waWxlZCAoYW5kIHRodXMgc3ludGFjdGljYWxseSBjb3JyZWN0
KSBidXQKKy8vICBuZXZlciBleGVjdXRlZC4gVGhlIHVucmVhY2hhYmxlIGNvZGUgbWFjcm8gcHJv
dGVjdHMgdGhlIHRlcm1pbmF0b3IKKy8vICBzdGF0ZW1lbnQgZnJvbSBnZW5lcmF0aW5nIGFuICd1
bnJlYWNoYWJsZSBjb2RlJyB3YXJuaW5nIGluIGNhc2UKKy8vICBzdGF0ZW1lbnQgdW5jb25kaXRp
b25hbGx5IHJldHVybnMgb3IgdGhyb3dzLiBUaGUgTWVzc2FnZSBjb25zdHJ1Y3RvciBhdAorLy8g
IHRoZSBlbmQgYWxsb3dzIHRoZSBzeW50YXggb2Ygc3RyZWFtaW5nIGFkZGl0aW9uYWwgbWVzc2Fn
ZXMgaW50byB0aGUKKy8vICBtYWNybywgZm9yIGNvbXBpbGF0aW9uYWwgY29tcGF0aWJpbGl0eSB3
aXRoIEVYUEVDVF9ERUFUSC9BU1NFUlRfREVBVEguCisjIGRlZmluZSBHVEVTVF9VTlNVUFBPUlRF
RF9ERUFUSF9URVNUKHN0YXRlbWVudCwgcmVnZXgsIHRlcm1pbmF0b3IpIFwKKyAgICBHVEVTVF9B
TUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCisgICAgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFs
d2F5c1RydWUoKSkgeyBcCisgICAgICBHVEVTVF9MT0dfKFdBUk5JTkcpIFwKKyAgICAgICAgICA8
PCAiRGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS5cbiIgXAor
ICAgICAgICAgIDw8ICJTdGF0ZW1lbnQgJyIgI3N0YXRlbWVudCAiJyBjYW5ub3QgYmUgdmVyaWZp
ZWQuIjsgXAorICAgIH0gZWxzZSBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2Uo
KSkgeyBcCisgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpSRTo6UGFydGlhbE1hdGNoKCIuKiIs
IChyZWdleCkpOyBcCisgICAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5J
TkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKKyAgICAgIHRlcm1pbmF0b3I7IFwKKyAgICB9IGVsc2Ug
XAorICAgICAgOjp0ZXN0aW5nOjpNZXNzYWdlKCkKKwogLy8gRVhQRUNUX0RFQVRIX0lGX1NVUFBP
UlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBhbmQKIC8vIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQo
c3RhdGVtZW50LCByZWdleCkgZXhwYW5kIHRvIHJlYWwgZGVhdGggdGVzdHMgaWYKIC8vIGRlYXRo
IHRlc3RzIGFyZSBzdXBwb3J0ZWQ7IG90aGVyd2lzZSB0aGV5IGp1c3QgaXNzdWUgYSB3YXJuaW5n
LiAgVGhpcyBpcwogLy8gdXNlZnVsIHdoZW4geW91IGFyZSBjb21iaW5pbmcgZGVhdGggdGVzdCBh
c3NlcnRpb25zIHdpdGggbm9ybWFsIHRlc3QKIC8vIGFzc2VydGlvbnMgaW4gb25lIHRlc3QuCiAj
aWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLSNkZWZpbmUgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRF
RChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisjIGRlZmluZSBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVE
KHN0YXRlbWVudCwgcmVnZXgpIFwKICAgICBFWFBFQ1RfREVBVEgoc3RhdGVtZW50LCByZWdleCkK
LSNkZWZpbmUgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisj
IGRlZmluZSBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKICAg
ICBBU1NFUlRfREVBVEgoc3RhdGVtZW50LCByZWdleCkKICNlbHNlCi0jZGVmaW5lIEVYUEVDVF9E
RUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAotICAgIEdURVNUX1VOU1VQUE9S
VEVEX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcmVnZXgsICkKLSNkZWZpbmUgQVNTRVJUX0RFQVRI
X0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCi0gICAgR1RFU1RfVU5TVVBQT1JURURf
REVBVEhfVEVTVF8oc3RhdGVtZW50LCByZWdleCwgcmV0dXJuKQorIyBkZWZpbmUgRVhQRUNUX0RF
QVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgICAgR1RFU1RfVU5TVVBQT1JU
RURfREVBVEhfVEVTVChzdGF0ZW1lbnQsIHJlZ2V4LCApCisjIGRlZmluZSBBU1NFUlRfREVBVEhf
SUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKKyAgICBHVEVTVF9VTlNVUFBPUlRFRF9E
RUFUSF9URVNUKHN0YXRlbWVudCwgcmVnZXgsIHJldHVybikKICNlbmRpZgogCiB9ICAvLyBuYW1l
c3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaAppbmRleCBmMTM1YjY5NDI3ZmU5ZWJlMjM3YzRjZGE3YTlj
MmYwZDc4ZGQ3NjhlLi41Y2EwNDE2MTRjYjM1NTkyMmYzNTViODkzZjljODRhM2I3ZjUyYzZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LW1l
c3NhZ2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0
LW1lc3NhZ2UuaApAQCAtMjYsMTAgKzI2LDkgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKwogLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbikKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29v
Z2xlIFRlc3QpCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29y
ayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVzIHRoZSBNZXNz
YWdlIGNsYXNzLgogLy8KQEAgLTQzLDEzICs0MiwyMSBAQAogLy8gdG8gQ0hBTkdFIFdJVEhPVVQg
Tk9USUNFLiAgVGhlcmVmb3JlIERPIE5PVCBERVBFTkQgT04gSVQgaW4gYSB1c2VyCiAvLyBwcm9n
cmFtIQogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RF
U1RfSU5DTFVERV9HVEVTVF9HVEVTVF9NRVNTQUdFX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVf
R1RFU1RfR1RFU1RfTUVTU0FHRV9IXwogCiAjaW5jbHVkZSA8bGltaXRzPgogCi0jaW5jbHVkZSA8
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtaW50ZXJuYWwuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmgi
CisKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQyNTEgXAorLyogY2xhc3MgQSBu
ZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBieSBjbGllbnRzIG9mIGNsYXNz
IEIgKi8pCisKKy8vIEVuc3VyZXMgdGhhdCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgb3BlcmF0b3I8
PCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KKy8vIFNlZSBNZXNzYWdlJiBvcGVyYXRvcjw8KC4u
LikgYmVsb3cgZm9yIHdoeS4KK3ZvaWQgb3BlcmF0b3I8PChjb25zdCB0ZXN0aW5nOjppbnRlcm5h
bDo6U2VjcmV0JiwgaW50KTsKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC01OCw3ICs2NSw3
IEBAIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIC8vIFR5cGljYWwgdXNhZ2U6CiAvLwogLy8gICAxLiBZ
b3Ugc3RyZWFtIGEgYnVuY2ggb2YgdmFsdWVzIHRvIGEgTWVzc2FnZSBvYmplY3QuCi0vLyAgICAg
IEl0IHdpbGwgcmVtZW1iZXIgdGhlIHRleHQgaW4gYSBTdHJTdHJlYW0uCisvLyAgICAgIEl0IHdp
bGwgcmVtZW1iZXIgdGhlIHRleHQgaW4gYSBzdHJpbmdzdHJlYW0uCiAvLyAgIDIuIFRoZW4geW91
IHN0cmVhbSB0aGUgTWVzc2FnZSBvYmplY3QgdG8gYW4gb3N0cmVhbS4KIC8vICAgICAgVGhpcyBj
YXVzZXMgdGhlIHRleHQgaW4gdGhlIE1lc3NhZ2UgdG8gYmUgc3RyZWFtZWQKIC8vICAgICAgdG8g
dGhlIG9zdHJlYW0uCkBAIC03NCw3ICs4MSw3IEBAIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIC8vIE1l
c3NhZ2UgaXMgbm90IGludGVuZGVkIHRvIGJlIGluaGVyaXRlZCBmcm9tLiAgSW4gcGFydGljdWxh
ciwgaXRzCiAvLyBkZXN0cnVjdG9yIGlzIG5vdCB2aXJ0dWFsLgogLy8KLS8vIE5vdGUgdGhhdCBT
dHJTdHJlYW0gYmVoYXZlcyBkaWZmZXJlbnRseSBpbiBnY2MgYW5kIGluIE1TVkMuICBZb3UKKy8v
IE5vdGUgdGhhdCBzdHJpbmdzdHJlYW0gYmVoYXZlcyBkaWZmZXJlbnRseSBpbiBnY2MgYW5kIGlu
IE1TVkMuICBZb3UKIC8vIGNhbiBzdHJlYW0gYSBOVUxMIGNoYXIgcG9pbnRlciB0byBpdCBpbiB0
aGUgZm9ybWVyLCBidXQgbm90IGluIHRoZQogLy8gbGF0dGVyIChpdCBjYXVzZXMgYW4gYWNjZXNz
IHZpb2xhdGlvbiBpZiB5b3UgZG8pLiAgVGhlIE1lc3NhZ2UKIC8vIGNsYXNzIGhpZGVzIHRoaXMg
ZGlmZmVyZW5jZSBieSB0cmVhdGluZyBhIE5VTEwgY2hhciBwb2ludGVyIGFzCkBAIC04NywyNyAr
OTQsMTggQEAgY2xhc3MgR1RFU1RfQVBJXyBNZXNzYWdlIHsKIAogIHB1YmxpYzoKICAgLy8gQ29u
c3RydWN0cyBhbiBlbXB0eSBNZXNzYWdlLgotICAvLyBXZSBhbGxvY2F0ZSB0aGUgU3RyU3RyZWFt
IHNlcGFyYXRlbHkgYmVjYXVzZSBpdCBvdGhlcndpc2UgZWFjaCB1c2Ugb2YKLSAgLy8gQVNTRVJU
L0VYUEVDVCBpbiBhIHByb2NlZHVyZSBhZGRzIG92ZXIgMjAwIGJ5dGVzIHRvIHRoZSBwcm9jZWR1
cmUncwotICAvLyBzdGFjayBmcmFtZSBsZWFkaW5nIHRvIGh1Z2Ugc3RhY2sgZnJhbWVzIGluIHNv
bWUgY2FzZXM7IGdjYyBkb2VzIG5vdCByZXVzZQotICAvLyB0aGUgc3RhY2sgc3BhY2UuCi0gIE1l
c3NhZ2UoKSA6IHNzXyhuZXcgaW50ZXJuYWw6OlN0clN0cmVhbSkgewotICAgIC8vIEJ5IGRlZmF1
bHQsIHdlIHdhbnQgdGhlcmUgdG8gYmUgZW5vdWdoIHByZWNpc2lvbiB3aGVuIHByaW50aW5nCi0g
ICAgLy8gYSBkb3VibGUgdG8gYSBNZXNzYWdlLgotICAgICpzc18gPDwgc3RkOjpzZXRwcmVjaXNp
b24oc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpkaWdpdHMxMCArIDIpOwotICB9CisgIE1l
c3NhZ2UoKTsKIAogICAvLyBDb3B5IGNvbnN0cnVjdG9yLgotICBNZXNzYWdlKGNvbnN0IE1lc3Nh
Z2UmIG1zZykgOiBzc18obmV3IGludGVybmFsOjpTdHJTdHJlYW0pIHsgIC8vIE5PTElOVAorICBN
ZXNzYWdlKGNvbnN0IE1lc3NhZ2UmIG1zZykgOiBzc18obmV3IDo6c3RkOjpzdHJpbmdzdHJlYW0p
IHsgIC8vIE5PTElOVAogICAgICpzc18gPDwgbXNnLkdldFN0cmluZygpOwogICB9CiAKICAgLy8g
Q29uc3RydWN0cyBhIE1lc3NhZ2UgZnJvbSBhIEMtc3RyaW5nLgotICBleHBsaWNpdCBNZXNzYWdl
KGNvbnN0IGNoYXIqIHN0cikgOiBzc18obmV3IGludGVybmFsOjpTdHJTdHJlYW0pIHsKKyAgZXhw
bGljaXQgTWVzc2FnZShjb25zdCBjaGFyKiBzdHIpIDogc3NfKG5ldyA6OnN0ZDo6c3RyaW5nc3Ry
ZWFtKSB7CiAgICAgKnNzXyA8PCBzdHI7CiAgIH0KIAotICB+TWVzc2FnZSgpIHsgZGVsZXRlIHNz
XzsgfQogI2lmIEdURVNUX09TX1NZTUJJQU4KICAgLy8gU3RyZWFtcyBhIHZhbHVlIChlaXRoZXIg
YSBwb2ludGVyIG9yIG5vdCkgdG8gdGhpcyBvYmplY3QuCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgpAQCAtMTE5LDcgKzExNywyMiBAQCBjbGFzcyBHVEVTVF9BUElfIE1lc3NhZ2UgewogICAvLyBT
dHJlYW1zIGEgbm9uLXBvaW50ZXIgdmFsdWUgdG8gdGhpcyBvYmplY3QuCiAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogICBpbmxpbmUgTWVzc2FnZSYgb3BlcmF0b3IgPDwoY29uc3QgVCYgdmFsKSB7
Ci0gICAgOjpHVGVzdFN0cmVhbVRvSGVscGVyKHNzXywgdmFsKTsKKyAgICAvLyBTb21lIGxpYnJh
cmllcyBvdmVybG9hZCA8PCBmb3IgU1RMIGNvbnRhaW5lcnMuICBUaGVzZQorICAgIC8vIG92ZXJs
b2FkcyBhcmUgZGVmaW5lZCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZSBpbnN0ZWFkIG9mIDo6c3Rk
LgorICAgIC8vCisgICAgLy8gQysrJ3Mgc3ltYm9sIGxvb2t1cCBydWxlIChpLmUuIEtvZW5pZyBs
b29rdXApIHNheXMgdGhhdCB0aGVzZQorICAgIC8vIG92ZXJsb2FkcyBhcmUgdmlzaWJsZSBpbiBl
aXRoZXIgdGhlIHN0ZCBuYW1lc3BhY2Ugb3IgdGhlIGdsb2JhbAorICAgIC8vIG5hbWVzcGFjZSwg
YnV0IG5vdCBvdGhlciBuYW1lc3BhY2VzLCBpbmNsdWRpbmcgdGhlIHRlc3RpbmcKKyAgICAvLyBu
YW1lc3BhY2Ugd2hpY2ggR29vZ2xlIFRlc3QncyBNZXNzYWdlIGNsYXNzIGlzIGluLgorICAgIC8v
CisgICAgLy8gVG8gYWxsb3cgU1RMIGNvbnRhaW5lcnMgKGFuZCBvdGhlciB0eXBlcyB0aGF0IGhh
cyBhIDw8IG9wZXJhdG9yCisgICAgLy8gZGVmaW5lZCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZSkg
dG8gYmUgdXNlZCBpbiBHb29nbGUgVGVzdAorICAgIC8vIGFzc2VydGlvbnMsIHRlc3Rpbmc6Ok1l
c3NhZ2UgbXVzdCBhY2Nlc3MgdGhlIGN1c3RvbSA8PCBvcGVyYXRvcgorICAgIC8vIGZyb20gdGhl
IGdsb2JhbCBuYW1lc3BhY2UuICBXaXRoIHRoaXMgdXNpbmcgZGVjbGFyYXRpb24sCisgICAgLy8g
b3ZlcmxvYWRzIG9mIDw8IGRlZmluZWQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UgYW5kIHRob3Nl
CisgICAgLy8gdmlzaWJsZSB2aWEgS29lbmlnIGxvb2t1cCBhcmUgYm90aCBleHBvc2VkIGluIHRo
aXMgZnVuY3Rpb24uCisgICAgdXNpbmcgOjpvcGVyYXRvciA8PDsKKyAgICAqc3NfIDw8IHZhbDsK
ICAgICByZXR1cm4gKnRoaXM7CiAgIH0KIApAQCAtMTQxLDcgKzE1NCw3IEBAIGNsYXNzIEdURVNU
X0FQSV8gTWVzc2FnZSB7CiAgICAgaWYgKHBvaW50ZXIgPT0gTlVMTCkgewogICAgICAgKnNzXyA8
PCAiKG51bGwpIjsKICAgICB9IGVsc2UgewotICAgICAgOjpHVGVzdFN0cmVhbVRvSGVscGVyKHNz
XywgcG9pbnRlcik7CisgICAgICAqc3NfIDw8IHBvaW50ZXI7CiAgICAgfQogICAgIHJldHVybiAq
dGhpczsKICAgfQpAQCAtMTY1LDEyICsxNzgsOCBAQCBjbGFzcyBHVEVTVF9BUElfIE1lc3NhZ2Ug
ewogCiAgIC8vIFRoZXNlIHR3byBvdmVybG9hZHMgYWxsb3cgc3RyZWFtaW5nIGEgd2lkZSBDIHN0
cmluZyB0byBhIE1lc3NhZ2UKICAgLy8gdXNpbmcgdGhlIFVURi04IGVuY29kaW5nLgotICBNZXNz
YWdlJiBvcGVyYXRvciA8PChjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKSB7Ci0gICAgcmV0dXJu
ICp0aGlzIDw8IGludGVybmFsOjpTdHJpbmc6OlNob3dXaWRlQ1N0cmluZyh3aWRlX2Nfc3RyKTsK
LSAgfQotICBNZXNzYWdlJiBvcGVyYXRvciA8PCh3Y2hhcl90KiB3aWRlX2Nfc3RyKSB7Ci0gICAg
cmV0dXJuICp0aGlzIDw8IGludGVybmFsOjpTdHJpbmc6OlNob3dXaWRlQ1N0cmluZyh3aWRlX2Nf
c3RyKTsKLSAgfQorICBNZXNzYWdlJiBvcGVyYXRvciA8PChjb25zdCB3Y2hhcl90KiB3aWRlX2Nf
c3RyKTsKKyAgTWVzc2FnZSYgb3BlcmF0b3IgPDwod2NoYXJfdCogd2lkZV9jX3N0cik7CiAKICNp
ZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKICAgLy8gQ29udmVydHMgdGhlIGdpdmVuIHdpZGUgc3Ry
aW5nIHRvIGEgbmFycm93IHN0cmluZyB1c2luZyB0aGUgVVRGLTgKQEAgLTE4NCwxMyArMTkzLDEx
IEBAIGNsYXNzIEdURVNUX0FQSV8gTWVzc2FnZSB7CiAgIE1lc3NhZ2UmIG9wZXJhdG9yIDw8KGNv
bnN0IDo6d3N0cmluZyYgd3N0cik7CiAjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklO
RwogCi0gIC8vIEdldHMgdGhlIHRleHQgc3RyZWFtZWQgdG8gdGhpcyBvYmplY3Qgc28gZmFyIGFz
IGEgU3RyaW5nLgorICAvLyBHZXRzIHRoZSB0ZXh0IHN0cmVhbWVkIHRvIHRoaXMgb2JqZWN0IHNv
IGZhciBhcyBhbiBzdGQ6OnN0cmluZy4KICAgLy8gRWFjaCAnXDAnIGNoYXJhY3RlciBpbiB0aGUg
YnVmZmVyIGlzIHJlcGxhY2VkIHdpdGggIlxcMCIuCiAgIC8vCiAgIC8vIElOVEVSTkFMIElNUExF
TUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KLSAgaW50ZXJuYWw6OlN0
cmluZyBHZXRTdHJpbmcoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGludGVybmFsOjpTdHJTdHJlYW1U
b1N0cmluZyhzc18pOwotICB9CisgIHN0ZDo6c3RyaW5nIEdldFN0cmluZygpIGNvbnN0OwogCiAg
cHJpdmF0ZToKICNpZiBHVEVTVF9PU19TWU1CSUFOCkBAIC0xOTksMjEgKzIwNiwyNSBAQCBjbGFz
cyBHVEVTVF9BUElfIE1lc3NhZ2UgewogICAvLyBkZWNpZGUgYmV0d2VlbiBjbGFzcyB0ZW1wbGF0
ZSBzcGVjaWFsaXphdGlvbnMgZm9yIFQgYW5kIFQqLCBzbyBhCiAgIC8vIHRyMTo6dHlwZV90cmFp
dHMtbGlrZSBpc19wb2ludGVyIHdvcmtzLCBhbmQgd2UgY2FuIG92ZXJsb2FkIG9uIHRoYXQuCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBpbmxpbmUgdm9pZCBTdHJlYW1IZWxwZXIoaW50ZXJu
YWw6OnRydWVfdHlwZSAvKmR1bW15Ki8sIFQqIHBvaW50ZXIpIHsKKyAgaW5saW5lIHZvaWQgU3Ry
ZWFtSGVscGVyKGludGVybmFsOjp0cnVlX3R5cGUgLyppc19wb2ludGVyKi8sIFQqIHBvaW50ZXIp
IHsKICAgICBpZiAocG9pbnRlciA9PSBOVUxMKSB7CiAgICAgICAqc3NfIDw8ICIobnVsbCkiOwog
ICAgIH0gZWxzZSB7Ci0gICAgICA6OkdUZXN0U3RyZWFtVG9IZWxwZXIoc3NfLCBwb2ludGVyKTsK
KyAgICAgICpzc18gPDwgcG9pbnRlcjsKICAgICB9CiAgIH0KICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci0gIGlubGluZSB2b2lkIFN0cmVhbUhlbHBlcihpbnRlcm5hbDo6ZmFsc2VfdHlwZSAvKmR1
bW15Ki8sIGNvbnN0IFQmIHZhbHVlKSB7Ci0gICAgOjpHVGVzdFN0cmVhbVRvSGVscGVyKHNzXywg
dmFsdWUpOworICBpbmxpbmUgdm9pZCBTdHJlYW1IZWxwZXIoaW50ZXJuYWw6OmZhbHNlX3R5cGUg
Lyppc19wb2ludGVyKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiB2YWx1
ZSkgeworICAgIC8vIFNlZSB0aGUgY29tbWVudHMgaW4gTWVzc2FnZSYgb3BlcmF0b3IgPDwoY29u
c3QgVCYpIGFib3ZlIGZvciB3aHkKKyAgICAvLyB3ZSBuZWVkIHRoaXMgdXNpbmcgc3RhdGVtZW50
LgorICAgIHVzaW5nIDo6b3BlcmF0b3IgPDw7CisgICAgKnNzXyA8PCB2YWx1ZTsKICAgfQogI2Vu
ZGlmICAvLyBHVEVTVF9PU19TWU1CSUFOCiAKICAgLy8gV2UnbGwgaG9sZCB0aGUgdGV4dCBzdHJl
YW1lZCB0byB0aGlzIG9iamVjdCBoZXJlLgotICBpbnRlcm5hbDo6U3RyU3RyZWFtKiBjb25zdCBz
c187CisgIGNvbnN0IGludGVybmFsOjpzY29wZWRfcHRyPCA6OnN0ZDo6c3RyaW5nc3RyZWFtPiBz
c187CiAKICAgLy8gV2UgZGVjbGFyZSAoYnV0IGRvbid0IGltcGxlbWVudCkgdGhpcyB0byBwcmV2
ZW50IHRoZSBjb21waWxlcgogICAvLyBmcm9tIGltcGxlbWVudGluZyB0aGUgYXNzaWdubWVudCBv
cGVyYXRvci4KQEAgLTIyNSw2ICsyMzYsMjAgQEAgaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0
b3IgPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgTWVzc2FnZSYgc2IpIHsKICAgcmV0dXJuIG9z
IDw8IHNiLkdldFN0cmluZygpOwogfQogCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBDb252
ZXJ0cyBhIHN0cmVhbWFibGUgdmFsdWUgdG8gYW4gc3RkOjpzdHJpbmcuICBBIE5VTEwgcG9pbnRl
ciBpcworLy8gY29udmVydGVkIHRvICIobnVsbCkiLiAgV2hlbiB0aGUgaW5wdXQgdmFsdWUgaXMg
YSA6OnN0cmluZywKKy8vIDo6c3RkOjpzdHJpbmcsIDo6d3N0cmluZywgb3IgOjpzdGQ6OndzdHJp
bmcgb2JqZWN0LCBlYWNoIE5VTAorLy8gY2hhcmFjdGVyIGluIGl0IGlzIHJlcGxhY2VkIHdpdGgg
IlxcMCIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0ZDo6c3RyaW5nIFN0cmVhbWFibGVUb1N0
cmluZyhjb25zdCBUJiBzdHJlYW1hYmxlKSB7CisgIHJldHVybiAoTWVzc2FnZSgpIDw8IHN0cmVh
bWFibGUpLkdldFN0cmluZygpOworfQorCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8v
IG5hbWVzcGFjZSB0ZXN0aW5nCiAKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAg
Ly8gIDQyNTEKKwogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX01FU1NBR0Vf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rl
c3QtcGFyYW0tdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9n
dGVzdC1wYXJhbS10ZXN0LmgKaW5kZXggODEwMDY5NjQ0ZDIzYWQzNTU5NzNjYjUzZmNlYjBhODU2
YjBhMDA2Yy4uM2U5NWU0MzkwZTAwZTExNjMxMGE0MjM4M2QyZTMwYjU4ZWRhNWYwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10
ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1w
YXJhbS10ZXN0LmgKQEAgLTEsNCArMSw2IEBACi0vLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBi
eSBhIHNjcmlwdC4gIERPIE5PVCBFRElUIEJZIEhBTkQhISEKKy8vIFRoaXMgZmlsZSB3YXMgR0VO
RVJBVEVEIGJ5IGNvbW1hbmQ6CisvLyAgICAgcHVtcC5weSBndGVzdC1wYXJhbS10ZXN0LmgucHVt
cAorLy8gRE8gTk9UIEVESVQgQlkgSEFORCEhIQogCiAvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xl
IEluYy4KIC8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0yOSwxMyArMzEsMTIgQEAKIC8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRob3JzOiB2bGFkbEBnb29nbGUu
Y29tIChWbGFkIExvc2V2KQotLy8KIC8vIE1hY3JvcyBhbmQgZnVuY3Rpb25zIGZvciBpbXBsZW1l
bnRpbmcgcGFyYW1ldGVyaXplZCB0ZXN0cwotLy8gaW4gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1l
d29yayAoR29vZ2xlIFRlc3QpCisvLyBpbiBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcg
RnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5
IGEgU0NSSVBULiAgRE8gTk9UIEVESVQgQlkgSEFORCEKIC8vCisvLyBHT09HTEVURVNUX0NNMDAw
MSBETyBOT1QgREVMRVRFCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUEFSQU1f
VEVTVF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8K
IApAQCAtNDgsMTAgKzQ5LDEyIEBACiAjaWYgMAogCiAvLyBUbyB3cml0ZSB2YWx1ZS1wYXJhbWV0
ZXJpemVkIHRlc3RzLCBmaXJzdCB5b3Ugc2hvdWxkIGRlZmluZSBhIGZpeHR1cmUKLS8vIGNsYXNz
LiBJdCBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPFQ+LCB3aGVy
ZSBUIGlzCi0vLyB0aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuIFRlc3RXaXRoUGFy
YW08VD4gaXMgaXRzZWxmIGRlcml2ZWQKLS8vIGZyb20gdGVzdGluZzo6VGVzdC4gVCBjYW4gYmUg
YW55IGNvcHlhYmxlIHR5cGUuIElmIGl0J3MgYSByYXcgcG9pbnRlciwKLS8vIHlvdSBhcmUgcmVz
cG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBsaWZlc3BhbiBvZiB0aGUgcG9pbnRlZCB2YWx1ZXMu
CisvLyBjbGFzcy4gSXQgaXMgdXN1YWxseSBkZXJpdmVkIGZyb20gdGVzdGluZzo6VGVzdFdpdGhQ
YXJhbTxUPiAoc2VlIGJlbG93IGZvcgorLy8gYW5vdGhlciBpbmhlcml0YW5jZSBzY2hlbWUgdGhh
dCdzIHNvbWV0aW1lcyB1c2VmdWwgaW4gbW9yZSBjb21wbGljYXRlZAorLy8gY2xhc3MgaGllcmFy
Y2hpZXMpLCB3aGVyZSB0aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuCisvLyBUZXN0
V2l0aFBhcmFtPFQ+IGlzIGl0c2VsZiBkZXJpdmVkIGZyb20gdGVzdGluZzo6VGVzdC4gVCBjYW4g
YmUgYW55CisvLyBjb3B5YWJsZSB0eXBlLiBJZiBpdCdzIGEgcmF3IHBvaW50ZXIsIHlvdSBhcmUg
cmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZQorLy8gbGlmZXNwYW4gb2YgdGhlIHBvaW50ZWQg
dmFsdWVzLgogCiBjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJh
bTxjb25zdCBjaGFyKj4gewogICAvLyBZb3UgY2FuIGltcGxlbWVudCBhbGwgdGhlIHVzdWFsIGNs
YXNzIGZpeHR1cmUgbWVtYmVycyBoZXJlLgpAQCAtNzUsNyArNzgsNyBAQCBURVNUX1AoRm9vVGVz
dCwgSGFzQmxhaEJsYWgpIHsKIC8vIEZpbmFsbHksIHlvdSBjYW4gdXNlIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QIHRvIGluc3RhbnRpYXRlIHRoZSB0ZXN0CiAvLyBjYXNlIHdpdGggYW55IHNldCBv
ZiBwYXJhbWV0ZXJzIHlvdSB3YW50LiBHb29nbGUgVGVzdCBkZWZpbmVzIGEgbnVtYmVyCiAvLyBv
ZiBmdW5jdGlvbnMgZm9yIGdlbmVyYXRpbmcgdGVzdCBwYXJhbWV0ZXJzLiBUaGV5IHJldHVybiB3
aGF0IHdlIGNhbGwKLS8vIChzdXJwcmlzZSEpIHBhcmFtZXRlciBnZW5lcmF0b3JzLiBIZXJlIGlz
IGEgIHN1bW1hcnkgb2YgdGhlbSwgd2hpY2gKKy8vIChzdXJwcmlzZSEpIHBhcmFtZXRlciBnZW5l
cmF0b3JzLiBIZXJlIGlzIGEgc3VtbWFyeSBvZiB0aGVtLCB3aGljaAogLy8gYXJlIGFsbCBpbiB0
aGUgdGVzdGluZyBuYW1lc3BhY2U6CiAvLwogLy8KQEAgLTE0NiwyMyArMTQ5LDQ0IEBAIElOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QKEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwgVmFs
dWVzSW4ocGV0cykpOwogLy8gSW4gdGhlIGZ1dHVyZSwgd2UgcGxhbiB0byBwdWJsaXNoIHRoZSBB
UEkgZm9yIGRlZmluaW5nIG5ldyBwYXJhbWV0ZXIKIC8vIGdlbmVyYXRvcnMuIEJ1dCBmb3Igbm93
IHRoaXMgaW50ZXJmYWNlIHJlbWFpbnMgcGFydCBvZiB0aGUgaW50ZXJuYWwKIC8vIGltcGxlbWVu
dGF0aW9uIGFuZCBpcyBzdWJqZWN0IHRvIGNoYW5nZS4KKy8vCisvLworLy8gQSBwYXJhbWV0ZXJp
emVkIHRlc3QgZml4dHVyZSBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0IGFuZCBm
cm9tCisvLyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD4sIHdoZXJlIFQgaXMgdGhlIHR5
cGUgb2YgdGhlIHBhcmFtZXRlcgorLy8gdmFsdWVzLiBJbmhlcml0aW5nIGZyb20gVGVzdFdpdGhQ
YXJhbTxUPiBzYXRpc2ZpZXMgdGhhdCByZXF1aXJlbWVudCBiZWNhdXNlCisvLyBUZXN0V2l0aFBh
cmFtPFQ+IGluaGVyaXRzIGZyb20gYm90aCBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UuIElu
IG1vcmUKKy8vIGNvbXBsaWNhdGVkIGhpZXJhcmNoaWVzLCBob3dldmVyLCBpdCBpcyBvY2Nhc2lv
bmFsbHkgdXNlZnVsIHRvIGluaGVyaXQKKy8vIHNlcGFyYXRlbHkgZnJvbSBUZXN0IGFuZCBXaXRo
UGFyYW1JbnRlcmZhY2UuIEZvciBleGFtcGxlOgorCitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6
OnRlc3Rpbmc6OlRlc3QgeworICAvLyBZb3UgY2FuIGluaGVyaXQgYWxsIHRoZSB1c3VhbCBtZW1i
ZXJzIGZvciBhIG5vbi1wYXJhbWV0ZXJpemVkIHRlc3QKKyAgLy8gZml4dHVyZSBoZXJlLgorfTsK
KworY2xhc3MgRGVyaXZlZFRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsIHB1YmxpYyA6OnRlc3Rpbmc6
OldpdGhQYXJhbUludGVyZmFjZTxpbnQ+IHsKKyAgLy8gVGhlIHVzdWFsIHRlc3QgZml4dHVyZSBt
ZW1iZXJzIGdvIGhlcmUgdG9vLgorfTsKKworVEVTVF9GKEJhc2VUZXN0LCBIYXNGb28pIHsKKyAg
Ly8gVGhpcyBpcyBhbiBvcmRpbmFyeSBub24tcGFyYW1ldGVyaXplZCB0ZXN0LgorfQorCitURVNU
X1AoRGVyaXZlZFRlc3QsIERvZXNCbGFoKSB7CisgIC8vIEdldFBhcmFtIHdvcmtzIGp1c3QgdGhl
IHNhbWUgaGVyZSBhcyBpZiB5b3UgaW5oZXJpdCBmcm9tIFRlc3RXaXRoUGFyYW0uCisgIEVYUEVD
VF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsKK30KIAogI2VuZGlmICAvLyAwCiAKLSNpbmNs
dWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcG9ydC5oIgogCiAjaWYgIUdURVNUX09TX1NZTUJJQU4KLSNpbmNsdWRlIDx1dGls
aXR5PgorIyBpbmNsdWRlIDx1dGlsaXR5PgogI2VuZGlmCiAKLS8vIHNjcmlwdHMvZnVzZV9ndGVz
dC5weSBkZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKLS8vICp1
bmNvbmRpdGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92
ZWQKLS8vIGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVz
dC1wYXJhbS11dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRp
bC1nZW5lcmF0ZWQuaD4KLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCisjaW5jbHVkZSAiZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9n
dGVzdC1wYXJhbS11dGlsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC1nZW5lcmF0ZWQuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC0yNDMsNyArMjY3
LDcgQEAgaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFJhbmdlKFQgc3RhcnQsIFQgZW5kKSB7
CiAvLyBlYWNoIHdpdGggQy1zdHJpbmcgdmFsdWVzIG9mICJmb28iLCAiYmFyIiwgYW5kICJiYXoi
OgogLy8KIC8vIGNvbnN0IGNoYXIqIHN0cmluZ3NbXSA9IHsiZm9vIiwgImJhciIsICJiYXoifTsK
LS8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFN0cmluZ1NlcXVlbmNlLCBTcnRpbmdUZXN0LCBW
YWx1ZXNJbihzdHJpbmdzKSk7CisvLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChTdHJpbmdTZXF1
ZW5jZSwgU3RyaW5nVGVzdCwgVmFsdWVzSW4oc3RyaW5ncykpOwogLy8KIC8vIFRoaXMgaW5zdGFu
dGlhdGVzIHRlc3RzIGZyb20gdGVzdCBjYXNlIFN0bFN0cmluZ1Rlc3QKIC8vIGVhY2ggd2l0aCBT
VEwgc3RyaW5ncyB3aXRoIHZhbHVlcyAiYSIgYW5kICJiIjoKQEAgLTI3NiwxMSArMzAwLDEwIEBA
IGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxUPiBSYW5nZShUIHN0YXJ0LCBUIGVuZCkgewogLy8K
IHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+CiBpbnRlcm5hbDo6UGFyYW1HZW5l
cmF0b3I8Ci0gICAgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0
b3I+Ojp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKLSAgRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLAotICBG
b3J3YXJkSXRlcmF0b3IgZW5kKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9y
X3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCi0gICAgICBQYXJhbVR5cGU7Cisg
IHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJhaXRzPEZvcndhcmRJdGVy
YXRvcj46OnZhbHVlX3R5cGU+CitWYWx1ZXNJbihGb3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndh
cmRJdGVyYXRvciBlbmQpIHsKKyAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFs
OjpJdGVyYXRvclRyYWl0czxGb3J3YXJkSXRlcmF0b3I+CisgICAgICA6OnZhbHVlX3R5cGUgUGFy
YW1UeXBlOwogICByZXR1cm4gaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT4oCiAg
ICAgICBuZXcgaW50ZXJuYWw6OlZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvcjxQYXJhbVR5
cGU+KGJlZ2luLCBlbmQpKTsKIH0KQEAgLTExOTIsNyArMTIxNSw3IEBAIGlubGluZSBpbnRlcm5h
bDo6UGFyYW1HZW5lcmF0b3I8Ym9vbD4gQm9vbCgpIHsKICAgcmV0dXJuIFZhbHVlcyhmYWxzZSwg
dHJ1ZSk7CiB9CiAKLSNpZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNfQ09NQklO
RQogLy8gQ29tYmluZSgpIGFsbG93cyB0aGUgdXNlciB0byBjb21iaW5lIHR3byBvciBtb3JlIHNl
cXVlbmNlcyB0byBwcm9kdWNlCiAvLyB2YWx1ZXMgb2YgYSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB0
aG9zZSBzZXF1ZW5jZXMnIGVsZW1lbnRzLgogLy8KQEAgLTEyMjgsNyArMTI1MSw3IEBAIGlubGlu
ZSBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ym9vbD4gQm9vbCgpIHsKIC8vIEJvb2xlYW4gZmxh
Z3M6CiAvLwogLy8gY2xhc3MgRmxhZ0RlcGVuZGVudFRlc3QKLS8vICAgICA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0V2l0aFBhcmFtPHR1cGxlKGJvb2wsIGJvb2wpPiA+IHsKKy8vICAgICA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHR1cGxlPGJvb2wsIGJvb2w+ID4gewogLy8gICB2aXJ0
dWFsIHZvaWQgU2V0VXAoKSB7CiAvLyAgICAgLy8gQXNzaWducyBleHRlcm5hbF9mbGFnXzEgYW5k
IGV4dGVybmFsX2ZsYWdfMiB2YWx1ZXMgZnJvbSB0aGUgdHVwbGUuCiAvLyAgICAgdGllKGV4dGVy
bmFsX2ZsYWdfMSwgZXh0ZXJuYWxfZmxhZ18yKSA9IEdldFBhcmFtKCk7CkBAIC0xMzQ0LDExICsx
MzY3LDkgQEAgaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIxMDxHZW5lcmF0b3IxLCBH
ZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAogICAgICAgR2VuZXJhdG9yMTA+KAogICAgICAgZzEsIGcy
LCBnMywgZzQsIGc1LCBnNiwgZzcsIGc4LCBnOSwgZzEwKTsKIH0KLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX0NPTUJJTkUKLQotCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQogCi0jZGVmaW5l
IFRFU1RfUCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBcCisjIGRlZmluZSBURVNUX1AodGVz
dF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXAogICBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVf
KHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIFwKICAgICAgIDogcHVibGljIHRlc3RfY2FzZV9u
YW1lIHsgXAogICAgcHVibGljOiBcCkBAIC0xMzU4LDE0ICsxMzc5LDE3IEBAIGludGVybmFsOjpD
YXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMTA8R2VuZXJhdG9yMSwgR2VuZXJhdG9yMiwgR2VuZXJhdG9y
MywKICAgICBzdGF0aWMgaW50IEFkZFRvUmVnaXN0cnkoKSB7IFwKICAgICAgIDo6dGVzdGluZzo6
VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpLiBc
CiAgICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVyPHRlc3RfY2FzZV9uYW1lPihcCi0g
ICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgX19GSUxFX18sIF9fTElORV9fKS0+QWRkVGVz
dFBhdHRlcm4oXAotICAgICAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCi0gICAgICAg
ICAgICAgICAgICAjdGVzdF9uYW1lLCBcCi0gICAgICAgICAgICAgICAgICBuZXcgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6VGVzdE1ldGFGYWN0b3J5PCBcCi0gICAgICAgICAgICAgICAgICAgICAgR1RF
U1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKT4oKSk7IFwKKyAg
ICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCisgICAgICAgICAgICAgIDo6dGVzdGluZzo6
aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihcCisgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19M
SU5FX18pKS0+QWRkVGVzdFBhdHRlcm4oXAorICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1NU
UklOR0lGWV8odGVzdF9jYXNlX25hbWUpLCBcCisgICAgICAgICAgICAgICAgICAgICAgR1RFU1Rf
U1RSSU5HSUZZXyh0ZXN0X25hbWUpLCBcCisgICAgICAgICAgICAgICAgICAgICAgbmV3IDo6dGVz
dGluZzo6aW50ZXJuYWw6OlRlc3RNZXRhRmFjdG9yeTwgXAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpPigpKTsgXAogICAgICAgcmV0dXJuIDA7IFwK
ICAgICB9IFwKLSAgICBzdGF0aWMgaW50IGd0ZXN0X3JlZ2lzdGVyaW5nX2R1bW15XzsgXAorICAg
IHN0YXRpYyBpbnQgZ3Rlc3RfcmVnaXN0ZXJpbmdfZHVtbXlfIEdURVNUX0FUVFJJQlVURV9VTlVT
RURfOyBcCiAgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhcCiAgICAgICAgIEdU
RVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkpOyBcCiAgIH07
IFwKQEAgLTEzNzQsMTkgKzEzOTgsMzcgQEAgaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xk
ZXIxMDxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAogICAgICAgR1RFU1RfVEVT
VF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKTo6QWRkVG9SZWdpc3RyeSgp
OyBcCiAgIHZvaWQgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9u
YW1lKTo6VGVzdEJvZHkoKQogCi0jZGVmaW5lIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKHByZWZp
eCwgdGVzdF9jYXNlX25hbWUsIGdlbmVyYXRvcikgXAotICA6OnRlc3Rpbmc6OmludGVybmFsOjpQ
YXJhbUdlbmVyYXRvcjx0ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiBcCisvLyBUaGUgb3B0aW9u
YWwgbGFzdCBhcmd1bWVudCB0byBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBhbGxvd3MgdGhlIHVz
ZXIKKy8vIHRvIHNwZWNpZnkgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHRoYXQgZ2VuZXJhdGVzIGN1
c3RvbSB0ZXN0IG5hbWUgc3VmZml4ZXMKKy8vIGJhc2VkIG9uIHRoZSB0ZXN0IHBhcmFtZXRlcnMu
IFRoZSBmdW5jdGlvbiBzaG91bGQgYWNjZXB0IG9uZSBhcmd1bWVudCBvZgorLy8gdHlwZSB0ZXN0
aW5nOjpUZXN0UGFyYW1JbmZvPGNsYXNzIFBhcmFtVHlwZT4sIGFuZCByZXR1cm4gc3RkOjpzdHJp
bmcuCisvLworLy8gdGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSBpcyBhIGJ1aWx0aW4g
dGVzdCBzdWZmaXggZ2VuZXJhdG9yIHRoYXQKKy8vIHJldHVybnMgdGhlIHZhbHVlIG9mIHRlc3Rp
bmc6OlByaW50VG9TdHJpbmcoR2V0UGFyYW0oKSkuCisvLworLy8gTm90ZTogdGVzdCBuYW1lcyBt
dXN0IGJlIG5vbi1lbXB0eSwgdW5pcXVlLCBhbmQgbWF5IG9ubHkgY29udGFpbiBBU0NJSQorLy8g
YWxwaGFudW1lcmljIGNoYXJhY3RlcnMgb3IgdW5kZXJzY29yZS4gQmVjYXVzZSBQcmludFRvU3Ry
aW5nIGFkZHMgcXVvdGVzCisvLyB0byBzdGQ6OnN0cmluZyBhbmQgQyBzdHJpbmdzLCBpdCB3b24n
dCB3b3JrIGZvciB0aGVzZSB0eXBlcy4KKworIyBkZWZpbmUgSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AocHJlZml4LCB0ZXN0X2Nhc2VfbmFtZSwgZ2VuZXJhdG9yLCAuLi4pIFwKKyAgc3RhdGljIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5
cGU+IFwKICAgICAgIGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0
b3JfKCkgeyByZXR1cm4gZ2VuZXJhdG9yOyB9IFwKLSAgaW50IGd0ZXN0XyMjcHJlZml4IyN0ZXN0
X2Nhc2VfbmFtZSMjX2R1bW15XyA9IFwKKyAgc3RhdGljIDo6c3RkOjpzdHJpbmcgZ3Rlc3RfIyNw
cmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRlTmFtZV8oIFwKKyAgICAgIGNvbnN0
IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzx0ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiYgaW5m
bykgeyBcCisgICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkdldFBhcmFtTmFtZUdlbjx0
ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiBcCisgICAgICAgIChfX1ZBX0FSR1NfXykoaW5mbyk7
IFwKKyAgfSBcCisgIHN0YXRpYyBpbnQgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNf
ZHVtbXlfIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gXAogICAgICAgOjp0ZXN0aW5nOjpVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkuIFwKICAg
ICAgICAgICBHZXRUZXN0Q2FzZVBhdHRlcm5Ib2xkZXI8dGVzdF9jYXNlX25hbWU+KFwKLSAgICAg
ICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBfX0ZJTEVfXywgX19MSU5FX18pLT5BZGRUZXN0Q2Fz
ZUluc3RhbnRpYXRpb24oXAotICAgICAgICAgICAgICAgICAgI3ByZWZpeCwgXAotICAgICAgICAg
ICAgICAgICAgJmd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0b3Jf
LCBcCi0gICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pCisgICAgICAgICAgICAg
ICN0ZXN0X2Nhc2VfbmFtZSwgXAorICAgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpD
b2RlTG9jYXRpb24oXAorICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKSktPkFk
ZFRlc3RDYXNlSW5zdGFudGlhdGlvbihcCisgICAgICAgICAgICAgICAgICAgICAgI3ByZWZpeCwg
XAorICAgICAgICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUj
I19FdmFsR2VuZXJhdG9yXywgXAorICAgICAgICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZp
eCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdGVOYW1lXywgXAorICAgICAgICAgICAgICAg
ICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAot
I2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xV
REVfR1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1bXAKaW5k
ZXggYTIzMTE4ODI3ZjFkNDgwZmJiYjgyNTJmMzQwZjBlYmVkYTM0NmUyNS4uMjc0ZjJiM2I1Njkz
MzAwMTJlODVlZTNjZjRmZDU3ZWIwYjU0MjFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC5wdW1w
CkBAIC0zMCwxMyArMzAsMTIgQEAgJHZhciBtYXh0dXBsZSA9IDEwICAkJCBNYXhpbXVtIG51bWJl
ciBvZiBDb21iaW5lIGFyZ3VtZW50cyB3ZSB3YW50IHRvIHN1cHBvcnQuCiAvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQXV0aG9yczogdmxhZGxAZ29vZ2xlLmNvbSAoVmxh
ZCBMb3NldikKLS8vCiAvLyBNYWNyb3MgYW5kIGZ1bmN0aW9ucyBmb3IgaW1wbGVtZW50aW5nIHBh
cmFtZXRlcml6ZWQgdGVzdHMKLS8vIGluIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdv
b2dsZSBUZXN0KQorLy8gaW4gR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29y
ayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBhIFNDUklQ
VC4gIERPIE5PVCBFRElUIEJZIEhBTkQhCiAvLworLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9U
IERFTEVURQogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8K
ICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QQVJBTV9URVNUX0hfCiAKQEAgLTQ5
LDEwICs0OCwxMiBAQCAkdmFyIG1heHR1cGxlID0gMTAgICQkIE1heGltdW0gbnVtYmVyIG9mIENv
bWJpbmUgYXJndW1lbnRzIHdlIHdhbnQgdG8gc3VwcG9ydC4KICNpZiAwCiAKIC8vIFRvIHdyaXRl
IHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4
dHVyZQotLy8gY2xhc3MuIEl0IG11c3QgYmUgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3RXaXRo
UGFyYW08VD4sIHdoZXJlIFQgaXMKLS8vIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVl
cy4gVGVzdFdpdGhQYXJhbTxUPiBpcyBpdHNlbGYgZGVyaXZlZAotLy8gZnJvbSB0ZXN0aW5nOjpU
ZXN0LiBUIGNhbiBiZSBhbnkgY29weWFibGUgdHlwZS4gSWYgaXQncyBhIHJhdyBwb2ludGVyLAot
Ly8geW91IGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIGxpZmVzcGFuIG9mIHRoZSBw
b2ludGVkIHZhbHVlcy4KKy8vIGNsYXNzLiBJdCBpcyB1c3VhbGx5IGRlcml2ZWQgZnJvbSB0ZXN0
aW5nOjpUZXN0V2l0aFBhcmFtPFQ+IChzZWUgYmVsb3cgZm9yCisvLyBhbm90aGVyIGluaGVyaXRh
bmNlIHNjaGVtZSB0aGF0J3Mgc29tZXRpbWVzIHVzZWZ1bCBpbiBtb3JlIGNvbXBsaWNhdGVkCisv
LyBjbGFzcyBoaWVyYXJjaGllcyksIHdoZXJlIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZh
bHVlcy4KKy8vIFRlc3RXaXRoUGFyYW08VD4gaXMgaXRzZWxmIGRlcml2ZWQgZnJvbSB0ZXN0aW5n
OjpUZXN0LiBUIGNhbiBiZSBhbnkKKy8vIGNvcHlhYmxlIHR5cGUuIElmIGl0J3MgYSByYXcgcG9p
bnRlciwgeW91IGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlCisvLyBsaWZlc3BhbiBv
ZiB0aGUgcG9pbnRlZCB2YWx1ZXMuCiAKIGNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0V2l0aFBhcmFtPGNvbnN0IGNoYXIqPiB7CiAgIC8vIFlvdSBjYW4gaW1wbGVtZW50IGFs
bCB0aGUgdXN1YWwgY2xhc3MgZml4dHVyZSBtZW1iZXJzIGhlcmUuCkBAIC03Niw3ICs3Nyw3IEBA
IFRFU1RfUChGb29UZXN0LCBIYXNCbGFoQmxhaCkgewogLy8gRmluYWxseSwgeW91IGNhbiB1c2Ug
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgdG8gaW5zdGFudGlhdGUgdGhlIHRlc3QKIC8vIGNhc2Ug
d2l0aCBhbnkgc2V0IG9mIHBhcmFtZXRlcnMgeW91IHdhbnQuIEdvb2dsZSBUZXN0IGRlZmluZXMg
YSBudW1iZXIKIC8vIG9mIGZ1bmN0aW9ucyBmb3IgZ2VuZXJhdGluZyB0ZXN0IHBhcmFtZXRlcnMu
IFRoZXkgcmV0dXJuIHdoYXQgd2UgY2FsbAotLy8gKHN1cnByaXNlISkgcGFyYW1ldGVyIGdlbmVy
YXRvcnMuIEhlcmUgaXMgYSAgc3VtbWFyeSBvZiB0aGVtLCB3aGljaAorLy8gKHN1cnByaXNlISkg
cGFyYW1ldGVyIGdlbmVyYXRvcnMuIEhlcmUgaXMgYSBzdW1tYXJ5IG9mIHRoZW0sIHdoaWNoCiAv
LyBhcmUgYWxsIGluIHRoZSB0ZXN0aW5nIG5hbWVzcGFjZToKIC8vCiAvLwpAQCAtMTM0LDkgKzEz
NSwxMiBAQCBJTlNUQU5USUFURV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFudGlhdGlvbk5hbWUs
IEZvb1Rlc3QsIFZhbHVlc0luKHBldHMpKTsKIC8vIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UsIHdo
ZXRoZXIgdGhlaXIgZGVmaW5pdGlvbnMgY29tZSBiZWZvcmUgb3IKIC8vIEFGVEVSIHRoZSBJTlNU
QU5USUFURV9URVNUX0NBU0VfUCBzdGF0ZW1lbnQuCiAvLwotLy8gUGxlYXNlIGFsc28gbm90ZSB0
aGF0IGdlbmVyYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIGluCi0vLyBSVU5fQUxMX1RF
U1RTKCksIGFmdGVyIG1haW4oKSBoYXMgc3RhcnRlZC4gVGhpcyBhbGxvd3MgZXZhbHVhdGlvbiBv
ZgotLy8gcGFyYW1ldGVyIGxpc3QgYmFzZWQgb24gY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMuCisv
LyBQbGVhc2UgYWxzbyBub3RlIHRoYXQgZ2VuZXJhdG9yIGV4cHJlc3Npb25zIChpbmNsdWRpbmcg
cGFyYW1ldGVycyB0byB0aGUKKy8vIGdlbmVyYXRvcnMpIGFyZSBldmFsdWF0ZWQgaW4gSW5pdEdv
b2dsZVRlc3QoKSwgYWZ0ZXIgbWFpbigpIGhhcyBzdGFydGVkLgorLy8gVGhpcyBhbGxvd3MgdGhl
IHVzZXIgb24gb25lIGhhbmQsIHRvIGFkanVzdCBnZW5lcmF0b3IgcGFyYW1ldGVycyBpbiBvcmRl
cgorLy8gdG8gZHluYW1pY2FsbHkgZGV0ZXJtaW5lIGEgc2V0IG9mIHRlc3RzIHRvIHJ1biBhbmQg
b24gdGhlIG90aGVyIGhhbmQsCisvLyBnaXZlIHRoZSB1c2VyIGEgY2hhbmNlIHRvIGluc3BlY3Qg
dGhlIGdlbmVyYXRlZCB0ZXN0cyB3aXRoIEdvb2dsZSBUZXN0CisvLyByZWZsZWN0aW9uIEFQSSBi
ZWZvcmUgUlVOX0FMTF9URVNUUygpIGlzIGV4ZWN1dGVkLgogLy8KIC8vIFlvdSBjYW4gc2VlIHNh
bXBsZXMvc2FtcGxlN191bml0dGVzdC5jYyBhbmQgc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNj
CiAvLyBmb3IgbW9yZSBleGFtcGxlcy4KQEAgLTE0NCwyMyArMTQ4LDQ0IEBAIElOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwgVmFsdWVzSW4o
cGV0cykpOwogLy8gSW4gdGhlIGZ1dHVyZSwgd2UgcGxhbiB0byBwdWJsaXNoIHRoZSBBUEkgZm9y
IGRlZmluaW5nIG5ldyBwYXJhbWV0ZXIKIC8vIGdlbmVyYXRvcnMuIEJ1dCBmb3Igbm93IHRoaXMg
aW50ZXJmYWNlIHJlbWFpbnMgcGFydCBvZiB0aGUgaW50ZXJuYWwKIC8vIGltcGxlbWVudGF0aW9u
IGFuZCBpcyBzdWJqZWN0IHRvIGNoYW5nZS4KKy8vCisvLworLy8gQSBwYXJhbWV0ZXJpemVkIHRl
c3QgZml4dHVyZSBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0IGFuZCBmcm9tCisv
LyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD4sIHdoZXJlIFQgaXMgdGhlIHR5cGUgb2Yg
dGhlIHBhcmFtZXRlcgorLy8gdmFsdWVzLiBJbmhlcml0aW5nIGZyb20gVGVzdFdpdGhQYXJhbTxU
PiBzYXRpc2ZpZXMgdGhhdCByZXF1aXJlbWVudCBiZWNhdXNlCisvLyBUZXN0V2l0aFBhcmFtPFQ+
IGluaGVyaXRzIGZyb20gYm90aCBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UuIEluIG1vcmUK
Ky8vIGNvbXBsaWNhdGVkIGhpZXJhcmNoaWVzLCBob3dldmVyLCBpdCBpcyBvY2Nhc2lvbmFsbHkg
dXNlZnVsIHRvIGluaGVyaXQKKy8vIHNlcGFyYXRlbHkgZnJvbSBUZXN0IGFuZCBXaXRoUGFyYW1J
bnRlcmZhY2UuIEZvciBleGFtcGxlOgorCitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3QgeworICAvLyBZb3UgY2FuIGluaGVyaXQgYWxsIHRoZSB1c3VhbCBtZW1iZXJzIGZv
ciBhIG5vbi1wYXJhbWV0ZXJpemVkIHRlc3QKKyAgLy8gZml4dHVyZSBoZXJlLgorfTsKKworY2xh
c3MgRGVyaXZlZFRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQ
YXJhbUludGVyZmFjZTxpbnQ+IHsKKyAgLy8gVGhlIHVzdWFsIHRlc3QgZml4dHVyZSBtZW1iZXJz
IGdvIGhlcmUgdG9vLgorfTsKKworVEVTVF9GKEJhc2VUZXN0LCBIYXNGb28pIHsKKyAgLy8gVGhp
cyBpcyBhbiBvcmRpbmFyeSBub24tcGFyYW1ldGVyaXplZCB0ZXN0LgorfQorCitURVNUX1AoRGVy
aXZlZFRlc3QsIERvZXNCbGFoKSB7CisgIC8vIEdldFBhcmFtIHdvcmtzIGp1c3QgdGhlIHNhbWUg
aGVyZSBhcyBpZiB5b3UgaW5oZXJpdCBmcm9tIFRlc3RXaXRoUGFyYW0uCisgIEVYUEVDVF9UUlVF
KGZvby5CbGFoKEdldFBhcmFtKCkpKTsKK30KIAogI2VuZGlmICAvLyAwCiAKLSNpbmNsdWRlIDxn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oIgogCiAjaWYgIUdURVNUX09TX1NZTUJJQU4KLSNpbmNsdWRlIDx1dGlsaXR5Pgor
IyBpbmNsdWRlIDx1dGlsaXR5PgogI2VuZGlmCiAKLS8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBk
ZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKLS8vICp1bmNvbmRp
dGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKLS8v
IGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJh
bS11dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5l
cmF0ZWQuaD4KLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCisjaW5jbHVkZSAiZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1w
YXJhbS11dGlsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1n
ZW5lcmF0ZWQuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC0yNDEsNyArMjY2LDcgQEAg
aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFJhbmdlKFQgc3RhcnQsIFQgZW5kKSB7CiAvLyBl
YWNoIHdpdGggQy1zdHJpbmcgdmFsdWVzIG9mICJmb28iLCAiYmFyIiwgYW5kICJiYXoiOgogLy8K
IC8vIGNvbnN0IGNoYXIqIHN0cmluZ3NbXSA9IHsiZm9vIiwgImJhciIsICJiYXoifTsKLS8vIElO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFN0cmluZ1NlcXVlbmNlLCBTcnRpbmdUZXN0LCBWYWx1ZXNJ
bihzdHJpbmdzKSk7CisvLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChTdHJpbmdTZXF1ZW5jZSwg
U3RyaW5nVGVzdCwgVmFsdWVzSW4oc3RyaW5ncykpOwogLy8KIC8vIFRoaXMgaW5zdGFudGlhdGVz
IHRlc3RzIGZyb20gdGVzdCBjYXNlIFN0bFN0cmluZ1Rlc3QKIC8vIGVhY2ggd2l0aCBTVEwgc3Ry
aW5ncyB3aXRoIHZhbHVlcyAiYSIgYW5kICJiIjoKQEAgLTI3NCwxMSArMjk5LDEwIEBAIGludGVy
bmFsOjpQYXJhbUdlbmVyYXRvcjxUPiBSYW5nZShUIHN0YXJ0LCBUIGVuZCkgewogLy8KIHRlbXBs
YXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8
Ci0gICAgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2
YWx1ZV90eXBlPiBWYWx1ZXNJbigKLSAgRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLAotICBGb3J3YXJk
SXRlcmF0b3IgZW5kKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0
czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCi0gICAgICBQYXJhbVR5cGU7CisgIHR5cGVu
YW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJhaXRzPEZvcndhcmRJdGVyYXRvcj46
OnZhbHVlX3R5cGU+CitWYWx1ZXNJbihGb3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJdGVy
YXRvciBlbmQpIHsKKyAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVy
YXRvclRyYWl0czxGb3J3YXJkSXRlcmF0b3I+CisgICAgICA6OnZhbHVlX3R5cGUgUGFyYW1UeXBl
OwogICByZXR1cm4gaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT4oCiAgICAgICBu
ZXcgaW50ZXJuYWw6OlZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvcjxQYXJhbVR5cGU+KGJl
Z2luLCBlbmQpKTsKIH0KQEAgLTM0OCw3ICszNzIsNyBAQCBpbmxpbmUgaW50ZXJuYWw6OlBhcmFt
R2VuZXJhdG9yPGJvb2w+IEJvb2woKSB7CiAgIHJldHVybiBWYWx1ZXMoZmFsc2UsIHRydWUpOwog
fQogCi0jaWYgR1RFU1RfSEFTX0NPTUJJTkUKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKIC8vIENv
bWJpbmUoKSBhbGxvd3MgdGhlIHVzZXIgdG8gY29tYmluZSB0d28gb3IgbW9yZSBzZXF1ZW5jZXMg
dG8gcHJvZHVjZQogLy8gdmFsdWVzIG9mIGEgQ2FydGVzaWFuIHByb2R1Y3Qgb2YgdGhvc2Ugc2Vx
dWVuY2VzJyBlbGVtZW50cy4KIC8vCkBAIC0zODQsNyArNDA4LDcgQEAgaW5saW5lIGludGVybmFs
OjpQYXJhbUdlbmVyYXRvcjxib29sPiBCb29sKCkgewogLy8gQm9vbGVhbiBmbGFnczoKIC8vCiAv
LyBjbGFzcyBGbGFnRGVwZW5kZW50VGVzdAotLy8gICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3RX
aXRoUGFyYW08dHVwbGUoYm9vbCwgYm9vbCk+ID4geworLy8gICAgIDogcHVibGljIHRlc3Rpbmc6
OlRlc3RXaXRoUGFyYW08dHVwbGU8Ym9vbCwgYm9vbD4gPiB7CiAvLyAgIHZpcnR1YWwgdm9pZCBT
ZXRVcCgpIHsKIC8vICAgICAvLyBBc3NpZ25zIGV4dGVybmFsX2ZsYWdfMSBhbmQgZXh0ZXJuYWxf
ZmxhZ18yIHZhbHVlcyBmcm9tIHRoZSB0dXBsZS4KIC8vICAgICB0aWUoZXh0ZXJuYWxfZmxhZ18x
LCBleHRlcm5hbF9mbGFnXzIpID0gR2V0UGFyYW0oKTsKQEAgLTQwOSwxMSArNDMzLDkgQEAgaW50
ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIkaTwkZm9yIGosIFtbR2VuZXJhdG9yJGpdXT4g
Q29tYmluZSgKIH0KIAogXV0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKLQotCisjIGVu
ZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQogCi0jZGVmaW5lIFRFU1RfUCh0ZXN0X2Nhc2VfbmFt
ZSwgdGVzdF9uYW1lKSBcCisjIGRlZmluZSBURVNUX1AodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFt
ZSkgXAogICBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0
X25hbWUpIFwKICAgICAgIDogcHVibGljIHRlc3RfY2FzZV9uYW1lIHsgXAogICAgcHVibGljOiBc
CkBAIC00MjMsMTQgKzQ0NSwxNyBAQCBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlciRp
PCRmb3IgaiwgW1tHZW5lcmF0b3Ikal1dPiBDb21iaW5lKAogICAgIHN0YXRpYyBpbnQgQWRkVG9S
ZWdpc3RyeSgpIHsgXAogICAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+
cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkuIFwKICAgICAgICAgICBHZXRUZXN0Q2FzZVBh
dHRlcm5Ib2xkZXI8dGVzdF9jYXNlX25hbWU+KFwKLSAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9u
YW1lLCBfX0ZJTEVfXywgX19MSU5FX18pLT5BZGRUZXN0UGF0dGVybihcCi0gICAgICAgICAgICAg
ICAgICAjdGVzdF9jYXNlX25hbWUsIFwKLSAgICAgICAgICAgICAgICAgICN0ZXN0X25hbWUsIFwK
LSAgICAgICAgICAgICAgICAgIG5ldyA6OnRlc3Rpbmc6OmludGVybmFsOjpUZXN0TWV0YUZhY3Rv
cnk8IFwKLSAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3Rf
Y2FzZV9uYW1lLCB0ZXN0X25hbWUpPigpKTsgXAorICAgICAgICAgICAgICAjdGVzdF9jYXNlX25h
bWUsIFwKKyAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKFwK
KyAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykpLT5BZGRUZXN0UGF0dGVybihc
CisgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfU1RSSU5HSUZZXyh0ZXN0X2Nhc2VfbmFtZSks
IFwKKyAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9TVFJJTkdJRllfKHRlc3RfbmFtZSksIFwK
KyAgICAgICAgICAgICAgICAgICAgICBuZXcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdE1ldGFG
YWN0b3J5PCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFN
RV8oXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jYXNlX25hbWUsIHRlc3Rf
bmFtZSk+KCkpOyBcCiAgICAgICByZXR1cm4gMDsgXAogICAgIH0gXAotICAgIHN0YXRpYyBpbnQg
Z3Rlc3RfcmVnaXN0ZXJpbmdfZHVtbXlfOyBcCisgICAgc3RhdGljIGludCBndGVzdF9yZWdpc3Rl
cmluZ19kdW1teV8gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF87IFwKICAgICBHVEVTVF9ESVNBTExP
V19DT1BZX0FORF9BU1NJR05fKFwKICAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0
X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSk7IFwKICAgfTsgXApAQCAtNDM5LDE5ICs0NjQsMzcgQEAg
aW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIkaTwkZm9yIGosIFtbR2VuZXJhdG9yJGpd
XT4gQ29tYmluZSgKICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUs
IHRlc3RfbmFtZSk6OkFkZFRvUmVnaXN0cnkoKTsgXAogICB2b2lkIEdURVNUX1RFU1RfQ0xBU1Nf
TkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSk6OlRlc3RCb2R5KCkKIAotI2RlZmluZSBJ
TlNUQU5USUFURV9URVNUX0NBU0VfUChwcmVmaXgsIHRlc3RfY2FzZV9uYW1lLCBnZW5lcmF0b3Ip
IFwKLSAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dGVzdF9jYXNlX25hbWU6
OlBhcmFtVHlwZT4gXAorLy8gVGhlIG9wdGlvbmFsIGxhc3QgYXJndW1lbnQgdG8gSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AgYWxsb3dzIHRoZSB1c2VyCisvLyB0byBzcGVjaWZ5IGEgZnVuY3Rpb24g
b3IgZnVuY3RvciB0aGF0IGdlbmVyYXRlcyBjdXN0b20gdGVzdCBuYW1lIHN1ZmZpeGVzCisvLyBi
YXNlZCBvbiB0aGUgdGVzdCBwYXJhbWV0ZXJzLiBUaGUgZnVuY3Rpb24gc2hvdWxkIGFjY2VwdCBv
bmUgYXJndW1lbnQgb2YKKy8vIHR5cGUgdGVzdGluZzo6VGVzdFBhcmFtSW5mbzxjbGFzcyBQYXJh
bVR5cGU+LCBhbmQgcmV0dXJuIHN0ZDo6c3RyaW5nLgorLy8KKy8vIHRlc3Rpbmc6OlByaW50VG9T
dHJpbmdQYXJhbU5hbWUgaXMgYSBidWlsdGluIHRlc3Qgc3VmZml4IGdlbmVyYXRvciB0aGF0Cisv
LyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0ZXN0aW5nOjpQcmludFRvU3RyaW5nKEdldFBhcmFtKCkp
LgorLy8KKy8vIE5vdGU6IHRlc3QgbmFtZXMgbXVzdCBiZSBub24tZW1wdHksIHVuaXF1ZSwgYW5k
IG1heSBvbmx5IGNvbnRhaW4gQVNDSUkKKy8vIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9yIHVu
ZGVyc2NvcmUuIEJlY2F1c2UgUHJpbnRUb1N0cmluZyBhZGRzIHF1b3RlcworLy8gdG8gc3RkOjpz
dHJpbmcgYW5kIEMgc3RyaW5ncywgaXQgd29uJ3Qgd29yayBmb3IgdGhlc2UgdHlwZXMuCisKKyMg
ZGVmaW5lIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKHByZWZpeCwgdGVzdF9jYXNlX25hbWUsIGdl
bmVyYXRvciwgLi4uKSBcCisgIHN0YXRpYyA6OnRlc3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVy
YXRvcjx0ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiBcCiAgICAgICBndGVzdF8jI3ByZWZpeCMj
dGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdG9yXygpIHsgcmV0dXJuIGdlbmVyYXRvcjsgfSBc
Ci0gIGludCBndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19kdW1teV8gPSBcCisgIHN0
YXRpYyA6OnN0ZDo6c3RyaW5nIGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxH
ZW5lcmF0ZU5hbWVfKCBcCisgICAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88dGVz
dF9jYXNlX25hbWU6OlBhcmFtVHlwZT4mIGluZm8pIHsgXAorICAgIHJldHVybiA6OnRlc3Rpbmc6
OmludGVybmFsOjpHZXRQYXJhbU5hbWVHZW48dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlwZT4gXAor
ICAgICAgICAoX19WQV9BUkdTX18pKGluZm8pOyBcCisgIH0gXAorICBzdGF0aWMgaW50IGd0ZXN0
XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX2R1bW15XyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VE
XyA9IFwKICAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRl
cml6ZWRfdGVzdF9yZWdpc3RyeSgpLiBcCiAgICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9s
ZGVyPHRlc3RfY2FzZV9uYW1lPihcCi0gICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgX19G
SUxFX18sIF9fTElORV9fKS0+QWRkVGVzdENhc2VJbnN0YW50aWF0aW9uKFwKLSAgICAgICAgICAg
ICAgICAgICNwcmVmaXgsIFwKLSAgICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVz
dF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdG9yXywgXAotICAgICAgICAgICAgICAgICAgX19GSUxF
X18sIF9fTElORV9fKQorICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIFwKKyAgICAgICAg
ICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKFwKKyAgICAgICAgICAgICAg
ICAgIF9fRklMRV9fLCBfX0xJTkVfXykpLT5BZGRUZXN0Q2FzZUluc3RhbnRpYXRpb24oXAorICAg
ICAgICAgICAgICAgICAgICAgICNwcmVmaXgsIFwKKyAgICAgICAgICAgICAgICAgICAgICAmZ3Rl
c3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRvcl8sIFwKKyAgICAgICAg
ICAgICAgICAgICAgICAmZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVy
YXRlTmFtZV8sIFwKKyAgICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pCiAK
IH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RF
U1QKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qt
cHJpbnRlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qt
cHJpbnRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTg2NWY4NGU2ZjZmYTNlMGZjZTE5ODcwMGI1YTVkZmU1
ZjY1NTBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9ndGVzdC1wcmludGVycy5oCkBAIC0wLDAgKzEsMTEwNyBAQAorLy8gQ29weXJpZ2h0
IDIwMDcsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24u
CisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIEdvb2dsZSBUZXN0IC0gVGhl
IEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsKKy8vCisvLyBUaGlzIGZp
bGUgaW1wbGVtZW50cyBhIHVuaXZlcnNhbCB2YWx1ZSBwcmludGVyIHRoYXQgY2FuIHByaW50IGEK
Ky8vIHZhbHVlIG9mIGFueSB0eXBlIFQ6CisvLworLy8gICB2b2lkIDo6dGVzdGluZzo6aW50ZXJu
YWw6OlVuaXZlcnNhbFByaW50ZXI8VD46OlByaW50KHZhbHVlLCBvc3RyZWFtX3B0cik7CisvLwor
Ly8gQSB1c2VyIGNhbiB0ZWFjaCB0aGlzIGZ1bmN0aW9uIGhvdyB0byBwcmludCBhIGNsYXNzIHR5
cGUgVCBieQorLy8gZGVmaW5pbmcgZWl0aGVyIG9wZXJhdG9yPDwoKSBvciBQcmludFRvKCkgaW4g
dGhlIG5hbWVzcGFjZSB0aGF0CisvLyBkZWZpbmVzIFQuICBNb3JlIHNwZWNpZmljYWxseSwgdGhl
IEZJUlNUIGRlZmluZWQgZnVuY3Rpb24gaW4gdGhlCisvLyBmb2xsb3dpbmcgbGlzdCB3aWxsIGJl
IHVzZWQgKGFzc3VtaW5nIFQgaXMgZGVmaW5lZCBpbiBuYW1lc3BhY2UKKy8vIGZvbyk6CisvLwor
Ly8gICAxLiBmb286OlByaW50VG8oY29uc3QgVCYsIG9zdHJlYW0qKQorLy8gICAyLiBvcGVyYXRv
cjw8KG9zdHJlYW0mLCBjb25zdCBUJikgZGVmaW5lZCBpbiBlaXRoZXIgZm9vIG9yIHRoZQorLy8g
ICAgICBnbG9iYWwgbmFtZXNwYWNlLgorLy8KKy8vIEhvd2V2ZXIgaWYgVCBpcyBhbiBTVEwtc3R5
bGUgY29udGFpbmVyIHRoZW4gaXQgaXMgcHJpbnRlZCBlbGVtZW50LXdpc2UKKy8vIHVubGVzcyBm
b286OlByaW50VG8oY29uc3QgVCYsIG9zdHJlYW0qKSBpcyBkZWZpbmVkLiBOb3RlIHRoYXQKKy8v
IG9wZXJhdG9yPDwoKSBpcyBpZ25vcmVkIGZvciBjb250YWluZXIgdHlwZXMuCisvLworLy8gSWYg
bm9uZSBvZiB0aGUgYWJvdmUgaXMgZGVmaW5lZCwgaXQgd2lsbCBwcmludCB0aGUgZGVidWcgc3Ry
aW5nIG9mCisvLyB0aGUgdmFsdWUgaWYgaXQgaXMgYSBwcm90b2NvbCBidWZmZXIsIG9yIHByaW50
IHRoZSByYXcgYnl0ZXMgaW4gdGhlCisvLyB2YWx1ZSBvdGhlcndpc2UuCisvLworLy8gVG8gYWlk
IGRlYnVnZ2luZzogd2hlbiBUIGlzIGEgcmVmZXJlbmNlIHR5cGUsIHRoZSBhZGRyZXNzIG9mIHRo
ZQorLy8gdmFsdWUgaXMgYWxzbyBwcmludGVkOyB3aGVuIFQgaXMgYSAoY29uc3QpIGNoYXIgcG9p
bnRlciwgYm90aCB0aGUKKy8vIHBvaW50ZXIgdmFsdWUgYW5kIHRoZSBOVUwtdGVybWluYXRlZCBz
dHJpbmcgaXQgcG9pbnRzIHRvIGFyZQorLy8gcHJpbnRlZC4KKy8vCisvLyBXZSBhbHNvIHByb3Zp
ZGUgc29tZSBjb252ZW5pZW50IHdyYXBwZXJzOgorLy8KKy8vICAgLy8gUHJpbnRzIGEgdmFsdWUg
dG8gYSBzdHJpbmcuICBGb3IgYSAoY29uc3Qgb3Igbm90KSBjaGFyCisvLyAgIC8vIHBvaW50ZXIs
IHRoZSBOVUwtdGVybWluYXRlZCBzdHJpbmcgKGJ1dCBub3QgdGhlIHBvaW50ZXIpIGlzCisvLyAg
IC8vIHByaW50ZWQuCisvLyAgIHN0ZDo6c3RyaW5nIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhj
b25zdCBUJiB2YWx1ZSk7CisvLworLy8gICAvLyBQcmludHMgYSB2YWx1ZSB0ZXJzZWx5OiBmb3Ig
YSByZWZlcmVuY2UgdHlwZSwgdGhlIHJlZmVyZW5jZWQKKy8vICAgLy8gdmFsdWUgKGJ1dCBub3Qg
dGhlIGFkZHJlc3MpIGlzIHByaW50ZWQ7IGZvciBhIChjb25zdCBvciBub3QpIGNoYXIKKy8vICAg
Ly8gcG9pbnRlciwgdGhlIE5VTC10ZXJtaW5hdGVkIHN0cmluZyAoYnV0IG5vdCB0aGUgcG9pbnRl
cikgaXMKKy8vICAgLy8gcHJpbnRlZC4KKy8vICAgdm9pZCA6OnRlc3Rpbmc6OmludGVybmFsOjpV
bml2ZXJzYWxUZXJzZVByaW50KGNvbnN0IFQmIHZhbHVlLCBvc3RyZWFtKik7CisvLworLy8gICAv
LyBQcmludHMgdmFsdWUgdXNpbmcgdGhlIHR5cGUgaW5mZXJyZWQgYnkgdGhlIGNvbXBpbGVyLiAg
VGhlIGRpZmZlcmVuY2UKKy8vICAgLy8gZnJvbSBVbml2ZXJzYWxUZXJzZVByaW50KCkgaXMgdGhh
dCB0aGlzIGZ1bmN0aW9uIHByaW50cyBib3RoIHRoZQorLy8gICAvLyBwb2ludGVyIGFuZCB0aGUg
TlVMLXRlcm1pbmF0ZWQgc3RyaW5nIGZvciBhIChjb25zdCBvciBub3QpIGNoYXIgcG9pbnRlci4K
Ky8vICAgdm9pZCA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxQcmludChjb25zdCBUJiB2
YWx1ZSwgb3N0cmVhbSopOworLy8KKy8vICAgLy8gUHJpbnRzIHRoZSBmaWVsZHMgb2YgYSB0dXBs
ZSB0ZXJzZWx5IHRvIGEgc3RyaW5nIHZlY3Rvciwgb25lCisvLyAgIC8vIGVsZW1lbnQgZm9yIGVh
Y2ggZmllbGQuIFR1cGxlIHN1cHBvcnQgbXVzdCBiZSBlbmFibGVkIGluCisvLyAgIC8vIGd0ZXN0
LXBvcnQuaC4KKy8vICAgc3RkOjp2ZWN0b3I8c3RyaW5nPiBVbml2ZXJzYWxUZXJzZVByaW50VHVw
bGVGaWVsZHNUb1N0cmluZ3MoCisvLyAgICAgICBjb25zdCBUdXBsZSYgdmFsdWUpOworLy8KKy8v
IEtub3duIGxpbWl0YXRpb246CisvLworLy8gVGhlIHByaW50IHByaW1pdGl2ZXMgcHJpbnQgdGhl
IGVsZW1lbnRzIG9mIGFuIFNUTC1zdHlsZSBjb250YWluZXIKKy8vIHVzaW5nIHRoZSBjb21waWxl
ci1pbmZlcnJlZCB0eXBlIG9mICppdGVyIHdoZXJlIGl0ZXIgaXMgYQorLy8gY29uc3RfaXRlcmF0
b3Igb2YgdGhlIGNvbnRhaW5lci4gIFdoZW4gY29uc3RfaXRlcmF0b3IgaXMgYW4gaW5wdXQKKy8v
IGl0ZXJhdG9yIGJ1dCBub3QgYSBmb3J3YXJkIGl0ZXJhdG9yLCB0aGlzIGluZmVycmVkIHR5cGUg
bWF5IG5vdAorLy8gbWF0Y2ggdmFsdWVfdHlwZSwgYW5kIHRoZSBwcmludCBvdXRwdXQgbWF5IGJl
IGluY29ycmVjdC4gIEluCisvLyBwcmFjdGljZSwgdGhpcyBpcyByYXJlbHkgYSBwcm9ibGVtIGFz
IGZvciBtb3N0IGNvbnRhaW5lcnMKKy8vIGNvbnN0X2l0ZXJhdG9yIGlzIGEgZm9yd2FyZCBpdGVy
YXRvci4gIFdlJ2xsIGZpeCB0aGlzIGlmIHRoZXJlJ3MgYW4KKy8vIGFjdHVhbCBuZWVkIGZvciBp
dC4gIE5vdGUgdGhhdCB0aGlzIGZpeCBjYW5ub3QgcmVseSBvbiB2YWx1ZV90eXBlCisvLyBiZWlu
ZyBkZWZpbmVkIGFzIG1hbnkgdXNlci1kZWZpbmVkIGNvbnRhaW5lciB0eXBlcyBkb24ndCBoYXZl
CisvLyB2YWx1ZV90eXBlLgorCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisK
KyNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUklOVEVSU19IXworI2RlZmluZSBH
VEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BSSU5URVJTX0hfCisKKyNpbmNsdWRlIDxvc3RyZWFt
PiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5j
bHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcG9ydC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFs
LmgiCisKKyNpZiBHVEVTVF9IQVNfU1REX1RVUExFXworIyBpbmNsdWRlIDx0dXBsZT4KKyNlbmRp
ZgorCisjaWYgR1RFU1RfSEFTX0FCU0wKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3Zp
ZXcuaCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYWJzbC90
eXBlcy92YXJpYW50LmgiCisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCisKK25hbWVzcGFjZSB0
ZXN0aW5nIHsKKworLy8gRGVmaW5pdGlvbnMgaW4gdGhlICdpbnRlcm5hbCcgYW5kICdpbnRlcm5h
bDInIG5hbWUgc3BhY2VzIGFyZQorLy8gc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2Uu
ICBETyBOT1QgVVNFIFRIRU0gSU4gVVNFUiBDT0RFIQorbmFtZXNwYWNlIGludGVybmFsMiB7CisK
Ky8vIFByaW50cyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBnaXZlbiBvYmplY3Qg
dG8gdGhlIGdpdmVuCisvLyBvc3RyZWFtLgorR1RFU1RfQVBJXyB2b2lkIFByaW50Qnl0ZXNJbk9i
amVjdFRvKGNvbnN0IHVuc2lnbmVkIGNoYXIqIG9ial9ieXRlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKKworLy8gRm9yIHNlbGVjdGluZyB3
aGljaCBwcmludGVyIHRvIHVzZSB3aGVuIGEgZ2l2ZW4gdHlwZSBoYXMgbmVpdGhlciA8PAorLy8g
bm9yIFByaW50VG8oKS4KK2VudW0gVHlwZUtpbmQgeworICBrUHJvdG9idWYsICAgICAgICAgICAg
ICAvLyBhIHByb3RvYnVmIHR5cGUKKyAga0NvbnZlcnRpYmxlVG9JbnRlZ2VyLCAgLy8gYSB0eXBl
IGltcGxpY2l0bHkgY29udmVydGlibGUgdG8gQmlnZ2VzdEludAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyAoZS5nLiBhIG5hbWVkIG9yIHVubmFtZWQgZW51bSB0eXBlKQorI2lmIEdURVNU
X0hBU19BQlNMCisgIGtDb252ZXJ0aWJsZVRvU3RyaW5nVmlldywgIC8vIGEgdHlwZSBpbXBsaWNp
dGx5IGNvbnZlcnRpYmxlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFic2w6
OnN0cmluZ192aWV3CisjZW5kaWYKKyAga090aGVyVHlwZSAgLy8gYW55dGhpbmcgZWxzZQorfTsK
KworLy8gVHlwZVdpdGhvdXRGb3JtYXR0ZXI8VCwga1R5cGVLaW5kPjo6UHJpbnRWYWx1ZSh2YWx1
ZSwgb3MpIGlzIGNhbGxlZAorLy8gYnkgdGhlIHVuaXZlcnNhbCBwcmludGVyIHRvIHByaW50IGEg
dmFsdWUgb2YgdHlwZSBUIHdoZW4gbmVpdGhlcgorLy8gb3BlcmF0b3I8PCBub3IgUHJpbnRUbygp
IGlzIGRlZmluZWQgZm9yIFQsIHdoZXJlIGtUeXBlS2luZCBpcyB0aGUKKy8vICJraW5kIiBvZiBU
IGFzIGRlZmluZWQgYnkgZW51bSBUeXBlS2luZC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBUeXBl
S2luZCBrVHlwZUtpbmQ+CitjbGFzcyBUeXBlV2l0aG91dEZvcm1hdHRlciB7CisgcHVibGljOgor
ICAvLyBUaGlzIGRlZmF1bHQgdmVyc2lvbiBpcyBjYWxsZWQgd2hlbiBrVHlwZUtpbmQgaXMga090
aGVyVHlwZS4KKyAgc3RhdGljIHZvaWQgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgICAgUHJpbnRCeXRlc0luT2JqZWN0VG8oc3RhdGljX2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhcio+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVy
cHJldF9jYXN0PGNvbnN0IHZvaWQqPigmdmFsdWUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplb2YodmFsdWUpLCBvcyk7CisgIH0KK307CisKKy8vIFdlIHByaW50IGEgcHJvdG9idWYg
dXNpbmcgaXRzIFNob3J0RGVidWdTdHJpbmcoKSB3aGVuIHRoZSBzdHJpbmcKKy8vIGRvZXNuJ3Qg
ZXhjZWVkIHRoaXMgbWFueSBjaGFyYWN0ZXJzOyBvdGhlcndpc2Ugd2UgcHJpbnQgaXQgdXNpbmcK
Ky8vIERlYnVnU3RyaW5nKCkgZm9yIGJldHRlciByZWFkYWJpbGl0eS4KK2NvbnN0IHNpemVfdCBr
UHJvdG9idWZPbmVMaW5lck1heExlbmd0aCA9IDUwOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2NsYXNzIFR5cGVXaXRob3V0Rm9ybWF0dGVyPFQsIGtQcm90b2J1Zj4geworIHB1YmxpYzoKKyAg
c3RhdGljIHZvaWQgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9z
KSB7CisgICAgc3RkOjpzdHJpbmcgcHJldHR5X3N0ciA9IHZhbHVlLlNob3J0RGVidWdTdHJpbmco
KTsKKyAgICBpZiAocHJldHR5X3N0ci5sZW5ndGgoKSA+IGtQcm90b2J1Zk9uZUxpbmVyTWF4TGVu
Z3RoKSB7CisgICAgICBwcmV0dHlfc3RyID0gIlxuIiArIHZhbHVlLkRlYnVnU3RyaW5nKCk7Cisg
ICAgfQorICAgICpvcyA8PCAoIjwiICsgcHJldHR5X3N0ciArICI+Iik7CisgIH0KK307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZVdpdGhvdXRGb3JtYXR0ZXI8VCwga0NvbnZl
cnRpYmxlVG9JbnRlZ2VyPiB7CisgcHVibGljOgorICAvLyBTaW5jZSBUIGhhcyBubyA8PCBvcGVy
YXRvciBvciBQcmludFRvKCkgYnV0IGNhbiBiZSBpbXBsaWNpdGx5CisgIC8vIGNvbnZlcnRlZCB0
byBCaWdnZXN0SW50LCB3ZSBwcmludCBpdCBhcyBhIEJpZ2dlc3RJbnQuCisgIC8vCisgIC8vIE1v
c3QgbGlrZWx5IFQgaXMgYW4gZW51bSB0eXBlIChlaXRoZXIgbmFtZWQgb3IgdW5uYW1lZCksIGlu
IHdoaWNoCisgIC8vIGNhc2UgcHJpbnRpbmcgaXQgYXMgYW4gaW50ZWdlciBpcyB0aGUgZGVzaXJl
ZCBiZWhhdmlvci4gIEluIGNhc2UKKyAgLy8gVCBpcyBub3QgYW4gZW51bSwgcHJpbnRpbmcgaXQg
YXMgYW4gaW50ZWdlciBpcyB0aGUgYmVzdCB3ZSBjYW4gZG8KKyAgLy8gZ2l2ZW4gdGhhdCBpdCBo
YXMgbm8gdXNlci1kZWZpbmVkIHByaW50ZXIuCisgIHN0YXRpYyB2b2lkIFByaW50VmFsdWUoY29u
c3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIGNvbnN0IGludGVybmFsOjpC
aWdnZXN0SW50IGtCaWdJbnQgPSB2YWx1ZTsKKyAgICAqb3MgPDwga0JpZ0ludDsKKyAgfQorfTsK
KworI2lmIEdURVNUX0hBU19BQlNMCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVX
aXRob3V0Rm9ybWF0dGVyPFQsIGtDb252ZXJ0aWJsZVRvU3RyaW5nVmlldz4geworIHB1YmxpYzoK
KyAgLy8gU2luY2UgVCBoYXMgbmVpdGhlciBvcGVyYXRvcjw8IG5vciBQcmludFRvKCkgYnV0IGNh
biBiZSBpbXBsaWNpdGx5CisgIC8vIGNvbnZlcnRlZCB0byBhYnNsOjpzdHJpbmdfdmlldywgd2Ug
cHJpbnQgaXQgYXMgYSBhYnNsOjpzdHJpbmdfdmlldy4KKyAgLy8KKyAgLy8gTm90ZTogdGhlIGlt
cGxlbWVudGF0aW9uIGlzIGZ1cnRoZXIgYmVsb3csIGFzIGl0IGRlcGVuZHMgb24KKyAgLy8gaW50
ZXJuYWw6OlByaW50VG8gc3ltYm9sIHdoaWNoIGlzIGRlZmluZWQgbGF0ZXIgaW4gdGhlIGZpbGUu
CisgIHN0YXRpYyB2b2lkIFByaW50VmFsdWUoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFt
KiBvcyk7Cit9OworI2VuZGlmCisKKy8vIFByaW50cyB0aGUgZ2l2ZW4gdmFsdWUgdG8gdGhlIGdp
dmVuIG9zdHJlYW0uICBJZiB0aGUgdmFsdWUgaXMgYQorLy8gcHJvdG9jb2wgbWVzc2FnZSwgaXRz
IGRlYnVnIHN0cmluZyBpcyBwcmludGVkOyBpZiBpdCdzIGFuIGVudW0gb3IKKy8vIG9mIGEgdHlw
ZSBpbXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRvIEJpZ2dlc3RJbnQsIGl0J3MgcHJpbnRlZCBhcyBh
bgorLy8gaW50ZWdlcjsgb3RoZXJ3aXNlIHRoZSBieXRlcyBpbiB0aGUgdmFsdWUgYXJlIHByaW50
ZWQuICBUaGlzIGlzCisvLyB3aGF0IFVuaXZlcnNhbFByaW50ZXI8VD46OlByaW50KCkgZG9lcyB3
aGVuIGl0IGtub3dzIG5vdGhpbmcgYWJvdXQKKy8vIHR5cGUgVCBhbmQgVCBoYXMgbmVpdGhlciA8
PCBvcGVyYXRvciBub3IgUHJpbnRUbygpLgorLy8KKy8vIEEgdXNlciBjYW4gb3ZlcnJpZGUgdGhp
cyBiZWhhdmlvciBmb3IgYSBjbGFzcyB0eXBlIEZvbyBieSBkZWZpbmluZworLy8gYSA8PCBvcGVy
YXRvciBpbiB0aGUgbmFtZXNwYWNlIHdoZXJlIEZvbyBpcyBkZWZpbmVkLgorLy8KKy8vIFdlIHB1
dCB0aGlzIG9wZXJhdG9yIGluIG5hbWVzcGFjZSAnaW50ZXJuYWwyJyBpbnN0ZWFkIG9mICdpbnRl
cm5hbCcKKy8vIHRvIHNpbXBsaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbiwgYXMgbXVjaCBjb2RlIGlu
ICdpbnRlcm5hbCcgbmVlZHMgdG8KKy8vIHVzZSA8PCBpbiBTVEwsIHdoaWNoIHdvdWxkIGNvbmZs
aWN0IHdpdGggb3VyIG93biA8PCB3ZXJlIGl0IGRlZmluZWQKKy8vIGluICdpbnRlcm5hbCcuCisv
LworLy8gTm90ZSB0aGF0IHRoaXMgb3BlcmF0b3I8PCB0YWtlcyBhIGdlbmVyaWMgc3RkOjpiYXNp
Y19vc3RyZWFtPENoYXIsCisvLyBDaGFyVHJhaXRzPiB0eXBlIGluc3RlYWQgb2YgdGhlIG1vcmUg
cmVzdHJpY3RlZCBzdGQ6Om9zdHJlYW0uICBJZgorLy8gd2UgZGVmaW5lIGl0IHRvIHRha2UgYW4g
c3RkOjpvc3RyZWFtIGluc3RlYWQsIHdlJ2xsIGdldCBhbgorLy8gImFtYmlndW91cyBvdmVybG9h
ZHMiIGNvbXBpbGVyIGVycm9yIHdoZW4gdHJ5aW5nIHRvIHByaW50IGEgdHlwZQorLy8gRm9vIHRo
YXQgc3VwcG9ydHMgc3RyZWFtaW5nIHRvIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLAorLy8gQ2hh
clRyYWl0cz4sIGFzIHRoZSBjb21waWxlciBjYW5ub3QgdGVsbCB3aGV0aGVyCisvLyBvcGVyYXRv
cjw8KHN0ZDo6b3N0cmVhbSYsIGNvbnN0IFQmKSBvcgorLy8gb3BlcmF0b3I8PChzdGQ6OmJhc2lj
X3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiwgY29uc3QgRm9vJikgaXMgbW9yZQorLy8gc3BlY2lm
aWMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhciwgdHlwZW5hbWUgQ2hhclRyYWl0cywgdHlwZW5h
bWUgVD4KKzo6c3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcGVyYXRvcjw8
KAorICAgIDo6c3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcywgY29uc3Qg
VCYgeCkgeworICBUeXBlV2l0aG91dEZvcm1hdHRlcjxULCAoaW50ZXJuYWw6OklzQVByb3RvY29s
TWVzc2FnZTxUPjo6dmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGtQcm90
b2J1ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50ZXJuYWw6OkltcGxpY2l0
bHlDb252ZXJ0aWJsZTwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUJiwgaW50ZXJuYWw6OkJpZ2dlc3RJbnQ+Ojp2YWx1ZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID8ga0NvbnZlcnRpYmxlVG9JbnRlZ2VyCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOgorI2lmIEdURVNUX0hBU19BQlNMCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCYsIGFic2w6
OnN0cmluZ192aWV3Pjo6dmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPyBrQ29udmVydGlibGVUb1N0cmluZ1ZpZXcKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOgorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtPdGhlclR5cGUpPjo6UHJpbnRWYWx1ZSh4LCAmb3MpOworICByZXR1cm4g
b3M7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbDIKK30gIC8vIG5hbWVzcGFjZSB0ZXN0
aW5nCisKKy8vIFRoaXMgbmFtZXNwYWNlIE1VU1QgTk9UIEJFIE5FU1RFRCBJTiA6OnRlc3Rpbmcs
IG9yIHRoZSBuYW1lIGxvb2stdXAKKy8vIG1hZ2ljIG5lZWRlZCBmb3IgaW1wbGVtZW50aW5nIFVu
aXZlcnNhbFByaW50ZXIgd29uJ3Qgd29yay4KK25hbWVzcGFjZSB0ZXN0aW5nX2ludGVybmFsIHsK
KworLy8gVXNlZCB0byBwcmludCBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIFNUTC1zdHlsZSBjb250
YWluZXIgd2hlbiB0aGUKKy8vIHVzZXIgZG9lc24ndCBkZWZpbmUgUHJpbnRUbygpIGZvciBpdC4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBEZWZhdWx0UHJpbnROb25Db250YWluZXJUbyhj
b25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIC8vIFdpdGggdGhlIGZvbGxv
d2luZyBzdGF0ZW1lbnQsIGR1cmluZyB1bnF1YWxpZmllZCBuYW1lIGxvb2t1cCwKKyAgLy8gdGVz
dGluZzo6aW50ZXJuYWwyOjpvcGVyYXRvcjw8IGFwcGVhcnMgYXMgaWYgaXQgd2FzIGRlY2xhcmVk
IGluCisgIC8vIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UgdGhhdCBjb250YWlucyBi
b3RoCisgIC8vIDo6dGVzdGluZ19pbnRlcm5hbCBhbmQgOjp0ZXN0aW5nOjppbnRlcm5hbDIsIGku
ZS4gdGhlIGdsb2JhbAorICAvLyBuYW1lc3BhY2UuICBGb3IgbW9yZSBkZXRhaWxzLCByZWZlciB0
byB0aGUgQysrIFN0YW5kYXJkIHNlY3Rpb24KKyAgLy8gNy4zLjQtMSBbbmFtZXNwYWNlLnVkaXJd
LiAgVGhpcyBhbGxvd3MgdXMgdG8gZmFsbCBiYWNrIG9udG8KKyAgLy8gdGVzdGluZzo6aW50ZXJu
YWwyOjpvcGVyYXRvcjw8IGluIGNhc2UgVCBkb2Vzbid0IGNvbWUgd2l0aCBhIDw8CisgIC8vIG9w
ZXJhdG9yLgorICAvLworICAvLyBXZSBjYW5ub3Qgd3JpdGUgJ3VzaW5nIDo6dGVzdGluZzo6aW50
ZXJuYWwyOjpvcGVyYXRvcjw8OycsIHdoaWNoCisgIC8vIGdjYyAzLjMgZmFpbHMgdG8gY29tcGls
ZSBkdWUgdG8gYSBjb21waWxlciBidWcuCisgIHVzaW5nIG5hbWVzcGFjZSA6OnRlc3Rpbmc6Omlu
dGVybmFsMjsgIC8vIE5PTElOVAorCisgIC8vIEFzc3VtaW5nIFQgaXMgZGVmaW5lZCBpbiBuYW1l
c3BhY2UgZm9vLCBpbiB0aGUgbmV4dCBzdGF0ZW1lbnQsCisgIC8vIHRoZSBjb21waWxlciB3aWxs
IGNvbnNpZGVyIGFsbCBvZjoKKyAgLy8KKyAgLy8gICAxLiBmb286Om9wZXJhdG9yPDwgKHRoYW5r
cyB0byBLb2VuaWcgbG9vay11cCksCisgIC8vICAgMi4gOjpvcGVyYXRvcjw8IChhcyB0aGUgY3Vy
cmVudCBuYW1lc3BhY2UgaXMgZW5jbG9zZWQgaW4gOjopLAorICAvLyAgIDMuIHRlc3Rpbmc6Omlu
dGVybmFsMjo6b3BlcmF0b3I8PCAodGhhbmtzIHRvIHRoZSB1c2luZyBzdGF0ZW1lbnQgYWJvdmUp
LgorICAvLworICAvLyBUaGUgb3BlcmF0b3I8PCB3aG9zZSB0eXBlIG1hdGNoZXMgVCBiZXN0IHdp
bGwgYmUgcGlja2VkLgorICAvLworICAvLyBXZSBkZWxpYmVyYXRlbHkgYWxsb3cgIzIgdG8gYmUg
YSBjYW5kaWRhdGUsIGFzIHNvbWV0aW1lcyBpdCdzCisgIC8vIGltcG9zc2libGUgdG8gZGVmaW5l
ICMxIChlLmcuIHdoZW4gZm9vIGlzIDo6c3RkLCBkZWZpbmluZworICAvLyBhbnl0aGluZyBpbiBp
dCBpcyB1bmRlZmluZWQgYmVoYXZpb3IgdW5sZXNzIHlvdSBhcmUgYSBjb21waWxlcgorICAvLyB2
ZW5kb3IuKS4KKyAgKm9zIDw8IHZhbHVlOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZ19p
bnRlcm5hbAorCituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCisv
LyBGb3JtYXRGb3JDb21wYXJpc29uPFRvUHJpbnQsIE90aGVyT3BlcmFuZD46OkZvcm1hdCh2YWx1
ZSkgZm9ybWF0cyBhCisvLyB2YWx1ZSBvZiB0eXBlIFRvUHJpbnQgdGhhdCBpcyBhbiBvcGVyYW5k
IG9mIGEgY29tcGFyaXNvbiBhc3NlcnRpb24KKy8vIChlLmcuIEFTU0VSVF9FUSkuICBPdGhlck9w
ZXJhbmQgaXMgdGhlIHR5cGUgb2YgdGhlIG90aGVyIG9wZXJhbmQgaW4KKy8vIHRoZSBjb21wYXJp
c29uLCBhbmQgaXMgdXNlZCB0byBoZWxwIGRldGVybWluZSB0aGUgYmVzdCB3YXkgdG8KKy8vIGZv
cm1hdCB0aGUgdmFsdWUuICBJbiBwYXJ0aWN1bGFyLCB3aGVuIHRoZSB2YWx1ZSBpcyBhIEMgc3Ry
aW5nCisvLyAoY2hhciBwb2ludGVyKSBhbmQgdGhlIG90aGVyIG9wZXJhbmQgaXMgYW4gU1RMIHN0
cmluZyBvYmplY3QsIHdlCisvLyB3YW50IHRvIGZvcm1hdCB0aGUgQyBzdHJpbmcgYXMgYSBzdHJp
bmcsIHNpbmNlIHdlIGtub3cgaXQgaXMKKy8vIGNvbXBhcmVkIGJ5IHZhbHVlIHdpdGggdGhlIHN0
cmluZyBvYmplY3QuICBJZiB0aGUgdmFsdWUgaXMgYSBjaGFyCisvLyBwb2ludGVyIGJ1dCB0aGUg
b3RoZXIgb3BlcmFuZCBpcyBub3QgYW4gU1RMIHN0cmluZyBvYmplY3QsIHdlIGRvbid0CisvLyBr
bm93IHdoZXRoZXIgdGhlIHBvaW50ZXIgaXMgc3VwcG9zZWQgdG8gcG9pbnQgdG8gYSBOVUwtdGVy
bWluYXRlZAorLy8gc3RyaW5nLCBhbmQgdGh1cyB3YW50IHRvIHByaW50IGl0IGFzIGEgcG9pbnRl
ciB0byBiZSBzYWZlLgorLy8KKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVT
RSBJTiBBIFVTRVIgUFJPR1JBTS4KKworLy8gVGhlIGRlZmF1bHQgY2FzZS4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUb1ByaW50LCB0eXBlbmFtZSBPdGhlck9wZXJhbmQ+CitjbGFzcyBGb3JtYXRGb3JD
b21wYXJpc29uIHsKKyBwdWJsaWM6CisgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1hdChjb25z
dCBUb1ByaW50JiB2YWx1ZSkgeworICAgIHJldHVybiA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmco
dmFsdWUpOworICB9Cit9OworCisvLyBBcnJheS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUb1ByaW50
LCBzaXplX3QgTiwgdHlwZW5hbWUgT3RoZXJPcGVyYW5kPgorY2xhc3MgRm9ybWF0Rm9yQ29tcGFy
aXNvbjxUb1ByaW50W05dLCBPdGhlck9wZXJhbmQ+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyA6OnN0
ZDo6c3RyaW5nIEZvcm1hdChjb25zdCBUb1ByaW50KiB2YWx1ZSkgeworICAgIHJldHVybiBGb3Jt
YXRGb3JDb21wYXJpc29uPGNvbnN0IFRvUHJpbnQqLCBPdGhlck9wZXJhbmQ+OjpGb3JtYXQodmFs
dWUpOworICB9Cit9OworCisvLyBCeSBkZWZhdWx0LCBwcmludCBDIHN0cmluZyBhcyBwb2ludGVy
cyB0byBiZSBzYWZlLCBhcyB3ZSBkb24ndCBrbm93CisvLyB3aGV0aGVyIHRoZXkgYWN0dWFsbHkg
cG9pbnQgdG8gYSBOVUwtdGVybWluYXRlZCBzdHJpbmcuCisKKyNkZWZpbmUgR1RFU1RfSU1QTF9G
T1JNQVRfQ19TVFJJTkdfQVNfUE9JTlRFUl8oQ2hhclR5cGUpICAgICAgICAgICAgICAgIFwKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIE90aGVyT3BlcmFuZD4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgY2xhc3MgRm9ybWF0Rm9yQ29tcGFyaXNvbjxDaGFyVHlwZSosIE90
aGVyT3BlcmFuZD4geyAgICAgICAgICAgICAgICAgIFwKKyAgIHB1YmxpYzogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBz
dGF0aWMgOjpzdGQ6OnN0cmluZyBGb3JtYXQoQ2hhclR5cGUqIHZhbHVlKSB7ICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgIHJldHVybiA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoc3RhdGlj
X2Nhc3Q8Y29uc3Qgdm9pZCo+KHZhbHVlKSk7IFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCitH
VEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19QT0lOVEVSXyhjaGFyKTsKK0dURVNUX0lNUExf
Rk9STUFUX0NfU1RSSU5HX0FTX1BPSU5URVJfKGNvbnN0IGNoYXIpOworR1RFU1RfSU1QTF9GT1JN
QVRfQ19TVFJJTkdfQVNfUE9JTlRFUl8od2NoYXJfdCk7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NU
UklOR19BU19QT0lOVEVSXyhjb25zdCB3Y2hhcl90KTsKKworI3VuZGVmIEdURVNUX0lNUExfRk9S
TUFUX0NfU1RSSU5HX0FTX1BPSU5URVJfCisKKy8vIElmIGEgQyBzdHJpbmcgaXMgY29tcGFyZWQg
d2l0aCBhbiBTVEwgc3RyaW5nIG9iamVjdCwgd2Uga25vdyBpdCdzIG1lYW50CisvLyB0byBwb2lu
dCB0byBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZywgYW5kIHRodXMgY2FuIHByaW50IGl0IGFzIGEg
c3RyaW5nLgorCisjZGVmaW5lIEdURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18o
Q2hhclR5cGUsIE90aGVyU3RyaW5nVHlwZSkgXAorICB0ZW1wbGF0ZSA8PiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBjbGFzcyBG
b3JtYXRGb3JDb21wYXJpc29uPENoYXJUeXBlKiwgT3RoZXJTdHJpbmdUeXBlPiB7ICAgICAgICAg
ICAgICAgXAorICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1h
dChDaGFyVHlwZSogdmFsdWUpIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgcmV0dXJu
IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyh2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5H
X0FTX1NUUklOR18oY2hhciwgOjpzdGQ6OnN0cmluZyk7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NU
UklOR19BU19TVFJJTkdfKGNvbnN0IGNoYXIsIDo6c3RkOjpzdHJpbmcpOworCisjaWYgR1RFU1Rf
SEFTX0dMT0JBTF9TVFJJTkcKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18o
Y2hhciwgOjpzdHJpbmcpOworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhj
b25zdCBjaGFyLCA6OnN0cmluZyk7CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19HTE9CQUxfV1NU
UklORworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyh3Y2hhcl90LCA6Ondz
dHJpbmcpOworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjb25zdCB3Y2hh
cl90LCA6OndzdHJpbmcpOworI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKK0dU
RVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18od2NoYXJfdCwgOjpzdGQ6OndzdHJp
bmcpOworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjb25zdCB3Y2hhcl90
LCA6OnN0ZDo6d3N0cmluZyk7CisjZW5kaWYKKworI3VuZGVmIEdURVNUX0lNUExfRk9STUFUX0Nf
U1RSSU5HX0FTX1NUUklOR18KKworLy8gRm9ybWF0cyBhIGNvbXBhcmlzb24gYXNzZXJ0aW9uIChl
LmcuIEFTU0VSVF9FUSwgRVhQRUNUX0xULCBhbmQgZXRjKQorLy8gb3BlcmFuZCB0byBiZSB1c2Vk
IGluIGEgZmFpbHVyZSBtZXNzYWdlLiAgVGhlIHR5cGUgKGJ1dCBub3QgdmFsdWUpCisvLyBvZiB0
aGUgb3RoZXIgb3BlcmFuZCBtYXkgYWZmZWN0IHRoZSBmb3JtYXQuICBUaGlzIGFsbG93cyB1cyB0
bworLy8gcHJpbnQgYSBjaGFyKiBhcyBhIHJhdyBwb2ludGVyIHdoZW4gaXQgaXMgY29tcGFyZWQg
YWdhaW5zdCBhbm90aGVyCisvLyBjaGFyKiBvciB2b2lkKiwgYW5kIHByaW50IGl0IGFzIGEgQyBz
dHJpbmcgd2hlbiBpdCBpcyBjb21wYXJlZAorLy8gYWdhaW5zdCBhbiBzdGQ6OnN0cmluZyBvYmpl
Y3QsIGZvciBleGFtcGxlLgorLy8KKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9U
IFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDI+CitzdGQ6OnN0cmluZyBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoCisgICAg
Y29uc3QgVDEmIHZhbHVlLCBjb25zdCBUMiYgLyogb3RoZXJfb3BlcmFuZCAqLykgeworICByZXR1
cm4gRm9ybWF0Rm9yQ29tcGFyaXNvbjxUMSwgVDI+OjpGb3JtYXQodmFsdWUpOworfQorCisvLyBV
bml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCh2YWx1ZSwgb3N0cmVhbV9wdHIpIHByaW50cyB0aGUg
Z2l2ZW4KKy8vIHZhbHVlIHRvIHRoZSBnaXZlbiBvc3RyZWFtLiAgVGhlIGNhbGxlciBtdXN0IGVu
c3VyZSB0aGF0CisvLyAnb3N0cmVhbV9wdHInIGlzIG5vdCBOVUxMLCBvciB0aGUgYmVoYXZpb3Ig
aXMgdW5kZWZpbmVkLgorLy8KKy8vIFdlIGRlZmluZSBVbml2ZXJzYWxQcmludGVyIGFzIGEgY2xh
c3MgdGVtcGxhdGUgKGFzIG9wcG9zZWQgdG8gYQorLy8gZnVuY3Rpb24gdGVtcGxhdGUpLCBhcyB3
ZSBuZWVkIHRvIHBhcnRpYWxseSBzcGVjaWFsaXplIGl0IGZvcgorLy8gcmVmZXJlbmNlIHR5cGVz
LCB3aGljaCBjYW5ub3QgYmUgZG9uZSB3aXRoIGZ1bmN0aW9uIHRlbXBsYXRlcy4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorY2xhc3MgVW5pdmVyc2FsUHJpbnRlcjsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVh
bSogb3MpOworCitlbnVtIERlZmF1bHRQcmludGVyVHlwZSB7CisgIGtQcmludENvbnRhaW5lciwK
KyAga1ByaW50UG9pbnRlciwKKyAga1ByaW50RnVuY3Rpb25Qb2ludGVyLAorICBrUHJpbnRPdGhl
ciwKK307Cit0ZW1wbGF0ZSA8RGVmYXVsdFByaW50ZXJUeXBlIHR5cGU+IHN0cnVjdCBXcmFwUHJp
bnRlclR5cGUge307CisKKy8vIFVzZWQgdG8gcHJpbnQgYW4gU1RMLXN0eWxlIGNvbnRhaW5lciB3
aGVuIHRoZSB1c2VyIGRvZXNuJ3QgZGVmaW5lCisvLyBhIFByaW50VG8oKSBmb3IgaXQuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgQz4KK3ZvaWQgRGVmYXVsdFByaW50VG8oV3JhcFByaW50ZXJUeXBlPGtQ
cmludENvbnRhaW5lcj4gLyogZHVtbXkgKi8sCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEMm
IGNvbnRhaW5lciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIGNvbnN0IHNpemVfdCBrTWF4Q291
bnQgPSAzMjsgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyB0byBwcmludC4KKyAg
Km9zIDw8ICd7JzsKKyAgc2l6ZV90IGNvdW50ID0gMDsKKyAgZm9yICh0eXBlbmFtZSBDOjpjb25z
dF9pdGVyYXRvciBpdCA9IGNvbnRhaW5lci5iZWdpbigpOworICAgICAgIGl0ICE9IGNvbnRhaW5l
ci5lbmQoKTsgKytpdCwgKytjb3VudCkgeworICAgIGlmIChjb3VudCA+IDApIHsKKyAgICAgICpv
cyA8PCAnLCc7CisgICAgICBpZiAoY291bnQgPT0ga01heENvdW50KSB7ICAvLyBFbm91Z2ggaGFz
IGJlZW4gcHJpbnRlZC4KKyAgICAgICAgKm9zIDw8ICIgLi4uIjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICB9CisgICAgfQorICAgICpvcyA8PCAnICc7CisgICAgLy8gV2UgY2Fubm90IGNhbGwgUHJp
bnRUbygqaXQsIG9zKSBoZXJlIGFzIFByaW50VG8oKSBkb2Vzbid0CisgICAgLy8gaGFuZGxlICpp
dCBiZWluZyBhIG5hdGl2ZSBhcnJheS4KKyAgICBpbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnQoKml0
LCBvcyk7CisgIH0KKworICBpZiAoY291bnQgPiAwKSB7CisgICAgKm9zIDw8ICcgJzsKKyAgfQor
ICAqb3MgPDwgJ30nOworfQorCisvLyBVc2VkIHRvIHByaW50IGEgcG9pbnRlciB0aGF0IGlzIG5l
aXRoZXIgYSBjaGFyIHBvaW50ZXIgbm9yIGEgbWVtYmVyCisvLyBwb2ludGVyLCB3aGVuIHRoZSB1
c2VyIGRvZXNuJ3QgZGVmaW5lIFByaW50VG8oKSBmb3IgaXQuICAoQSBtZW1iZXIKKy8vIHZhcmlh
YmxlIHBvaW50ZXIgb3IgbWVtYmVyIGZ1bmN0aW9uIHBvaW50ZXIgZG9lc24ndCByZWFsbHkgcG9p
bnQgdG8KKy8vIGEgbG9jYXRpb24gaW4gdGhlIGFkZHJlc3Mgc3BhY2UuICBUaGVpciByZXByZXNl
bnRhdGlvbiBpcworLy8gaW1wbGVtZW50YXRpb24tZGVmaW5lZC4gIFRoZXJlZm9yZSB0aGV5IHdp
bGwgYmUgcHJpbnRlZCBhcyByYXcKKy8vIGJ5dGVzLikKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
dm9pZCBEZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5cGU8a1ByaW50UG9pbnRlcj4gLyogZHVt
bXkgKi8sCisgICAgICAgICAgICAgICAgICAgIFQqIHAsIDo6c3RkOjpvc3RyZWFtKiBvcykgewor
ICBpZiAocCA9PSBOVUxMKSB7CisgICAgKm9zIDw8ICJOVUxMIjsKKyAgfSBlbHNlIHsKKyAgICAv
LyBUIGlzIG5vdCBhIGZ1bmN0aW9uIHR5cGUuICBXZSBqdXN0IGNhbGwgPDwgdG8gcHJpbnQgcCwK
KyAgICAvLyByZWx5aW5nIG9uIEFETCB0byBwaWNrIHVwIHVzZXItZGVmaW5lZCA8PCBmb3IgdGhl
aXIgcG9pbnRlcgorICAgIC8vIHR5cGVzLCBpZiBhbnkuCisgICAgKm9zIDw8IHA7CisgIH0KK30K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBEZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5
cGU8a1ByaW50RnVuY3Rpb25Qb2ludGVyPiAvKiBkdW1teSAqLywKKyAgICAgICAgICAgICAgICAg
ICAgVCogcCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIGlmIChwID09IE5VTEwpIHsKKyAgICAq
b3MgPDwgIk5VTEwiOworICB9IGVsc2UgeworICAgIC8vIFQgaXMgYSBmdW5jdGlvbiB0eXBlLCBz
byAnKm9zIDw8IHAnIGRvZXNuJ3QgZG8gd2hhdCB3ZSB3YW50CisgICAgLy8gKGl0IGp1c3QgcHJp
bnRzIHAgYXMgYm9vbCkuICBXZSB3YW50IHRvIHByaW50IHAgYXMgYSBjb25zdAorICAgIC8vIHZv
aWQqLgorICAgICpvcyA8PCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihwKTsKKyAgfQor
fQorCisvLyBVc2VkIHRvIHByaW50IGEgbm9uLWNvbnRhaW5lciwgbm9uLXBvaW50ZXIgdmFsdWUg
d2hlbiB0aGUgdXNlcgorLy8gZG9lc24ndCBkZWZpbmUgUHJpbnRUbygpIGZvciBpdC4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgordm9pZCBEZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5cGU8a1By
aW50T3RoZXI+IC8qIGR1bW15ICovLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiB2YWx1
ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIDo6dGVzdGluZ19pbnRlcm5hbDo6RGVmYXVsdFBy
aW50Tm9uQ29udGFpbmVyVG8odmFsdWUsIG9zKTsKK30KKworLy8gUHJpbnRzIHRoZSBnaXZlbiB2
YWx1ZSB1c2luZyB0aGUgPDwgb3BlcmF0b3IgaWYgaXQgaGFzIG9uZTsKKy8vIG90aGVyd2lzZSBw
cmludHMgdGhlIGJ5dGVzIGluIGl0LiAgVGhpcyBpcyB3aGF0CisvLyBVbml2ZXJzYWxQcmludGVy
PFQ+OjpQcmludCgpIGRvZXMgd2hlbiBQcmludFRvKCkgaXMgbm90IHNwZWNpYWxpemVkCisvLyBv
ciBvdmVybG9hZGVkIGZvciB0eXBlIFQuCisvLworLy8gQSB1c2VyIGNhbiBvdmVycmlkZSB0aGlz
IGJlaGF2aW9yIGZvciBhIGNsYXNzIHR5cGUgRm9vIGJ5IGRlZmluaW5nCisvLyBhbiBvdmVybG9h
ZCBvZiBQcmludFRvKCkgaW4gdGhlIG5hbWVzcGFjZSB3aGVyZSBGb28gaXMgZGVmaW5lZC4gIFdl
CisvLyBnaXZlIHRoZSB1c2VyIHRoaXMgb3B0aW9uIGFzIHNvbWV0aW1lcyBkZWZpbmluZyBhIDw8
IG9wZXJhdG9yIGZvcgorLy8gRm9vIGlzIG5vdCBkZXNpcmFibGUgKGUuZy4gdGhlIGNvZGluZyBz
dHlsZSBtYXkgcHJldmVudCBkb2luZyBpdCwKKy8vIG9yIHRoZXJlIGlzIGFscmVhZHkgYSA8PCBv
cGVyYXRvciBidXQgaXQgZG9lc24ndCBkbyB3aGF0IHRoZSB1c2VyCisvLyB3YW50cykuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgUHJpbnRUbyhjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgIC8vIERlZmF1bHRQcmludFRvKCkgaXMgb3ZlcmxvYWRlZC4gIFRoZSB0
eXBlIG9mIGl0cyBmaXJzdCBhcmd1bWVudAorICAvLyBkZXRlcm1pbmVzIHdoaWNoIHZlcnNpb24g
d2lsbCBiZSBwaWNrZWQuCisgIC8vCisgIC8vIE5vdGUgdGhhdCB3ZSBjaGVjayBmb3IgY29udGFp
bmVyIHR5cGVzIGhlcmUsIHByaW9yIHRvIHdlIGNoZWNrCisgIC8vIGZvciBwcm90b2NvbCBtZXNz
YWdlIHR5cGVzIGluIG91ciBvcGVyYXRvcjw8LiAgVGhlIHJhdGlvbmFsZSBpczoKKyAgLy8KKyAg
Ly8gRm9yIHByb3RvY29sIG1lc3NhZ2VzLCB3ZSB3YW50IHRvIGdpdmUgcGVvcGxlIGEgY2hhbmNl
IHRvCisgIC8vIG92ZXJyaWRlIEdvb2dsZSBNb2NrJ3MgZm9ybWF0IGJ5IGRlZmluaW5nIGEgUHJp
bnRUbygpIG9yCisgIC8vIG9wZXJhdG9yPDwuICBGb3IgU1RMIGNvbnRhaW5lcnMsIG90aGVyIGZv
cm1hdHMgY2FuIGJlCisgIC8vIGluY29tcGF0aWJsZSB3aXRoIEdvb2dsZSBNb2NrJ3MgZm9ybWF0
IGZvciB0aGUgY29udGFpbmVyCisgIC8vIGVsZW1lbnRzOyB0aGVyZWZvcmUgd2UgY2hlY2sgZm9y
IGNvbnRhaW5lciB0eXBlcyBoZXJlIHRvIGVuc3VyZQorICAvLyB0aGF0IG91ciBmb3JtYXQgaXMg
dXNlZC4KKyAgLy8KKyAgLy8gTm90ZSB0aGF0IE1TVkMgYW5kIGNsYW5nLWNsIGRvIGFsbG93IGFu
IGltcGxpY2l0IGNvbnZlcnNpb24gZnJvbQorICAvLyBwb2ludGVyLXRvLWZ1bmN0aW9uIHRvIHBv
aW50ZXItdG8tb2JqZWN0LCBidXQgY2xhbmctY2wgd2FybnMgb24gaXQuCisgIC8vIFNvIGRvbid0
IHVzZSBJbXBsaWNpdGx5Q29udmVydGlibGUgaWYgaXQgY2FuIGJlIGhlbHBlZCBzaW5jZSBpdCB3
aWxsCisgIC8vIGNhdXNlIHRoaXMgd2FybmluZywgYW5kIHVzZSBhIHNlcGFyYXRlIG92ZXJsb2Fk
IG9mIERlZmF1bHRQcmludFRvIGZvcgorICAvLyBmdW5jdGlvbiBwb2ludGVycyBzbyB0aGF0IHRo
ZSBgKm9zIDw8IHBgIGluIHRoZSBvYmplY3QgcG9pbnRlciBvdmVybG9hZAorICAvLyBkb2Vzbid0
IGNhdXNlIHRoYXQgd2FybmluZyBlaXRoZXIuCisgIERlZmF1bHRQcmludFRvKAorICAgICAgV3Jh
cFByaW50ZXJUeXBlIDwKKyAgICAgICAgICAgICAgICAgIChzaXplb2YoSXNDb250YWluZXJUZXN0
PFQ+KDApKSA9PSBzaXplb2YoSXNDb250YWluZXIpKSAmJgorICAgICAgICAgICAgICAhSXNSZWN1
cnNpdmVDb250YWluZXI8VD46OnZhbHVlCisgICAgICAgICAgPyBrUHJpbnRDb250YWluZXIKKyAg
ICAgICAgICA6ICFpc19wb2ludGVyPFQ+Ojp2YWx1ZQorICAgICAgICAgICAgICAgID8ga1ByaW50
T3RoZXIKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisgICAgICAgICAgICAgICAgOiBzdGQ6OmlzX2Z1
bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+Ojp2YWx1ZQorI2Vs
c2UKKyAgICAgICAgICAgICAgICA6ICFpbnRlcm5hbDo6SW1wbGljaXRseUNvbnZlcnRpYmxlPFQs
IGNvbnN0IHZvaWQqPjo6dmFsdWUKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgID8ga1By
aW50RnVuY3Rpb25Qb2ludGVyCisgICAgICAgICAgICAgICAgICAgICAgOiBrUHJpbnRQb2ludGVy
ID4gKCksCisgICAgICB2YWx1ZSwgb3MpOworfQorCisvLyBUaGUgZm9sbG93aW5nIGxpc3Qgb2Yg
UHJpbnRUbygpIG92ZXJsb2FkcyB0ZWxscworLy8gVW5pdmVyc2FsUHJpbnRlcjxUPjo6UHJpbnQo
KSBob3cgdG8gcHJpbnQgc3RhbmRhcmQgdHlwZXMgKGJ1aWx0LWluCisvLyB0eXBlcywgc3RyaW5n
cywgcGxhaW4gYXJyYXlzLCBhbmQgcG9pbnRlcnMpLgorCisvLyBPdmVybG9hZHMgZm9yIHZhcmlv
dXMgY2hhciB0eXBlcy4KK0dURVNUX0FQSV8gdm9pZCBQcmludFRvKHVuc2lnbmVkIGNoYXIgYywg
OjpzdGQ6Om9zdHJlYW0qIG9zKTsKK0dURVNUX0FQSV8gdm9pZCBQcmludFRvKHNpZ25lZCBjaGFy
IGMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRvKGNoYXIgYywgOjpz
dGQ6Om9zdHJlYW0qIG9zKSB7CisgIC8vIFdoZW4gcHJpbnRpbmcgYSBwbGFpbiBjaGFyLCB3ZSBh
bHdheXMgdHJlYXQgaXQgYXMgdW5zaWduZWQuICBUaGlzCisgIC8vIHdheSwgdGhlIG91dHB1dCB3
b24ndCBiZSBhZmZlY3RlZCBieSB3aGV0aGVyIHRoZSBjb21waWxlciB0aGlua3MKKyAgLy8gY2hh
ciBpcyBzaWduZWQgb3Igbm90LgorICBQcmludFRvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KGMpLCBvcyk7Cit9CisKKy8vIE92ZXJsb2FkcyBmb3Igb3RoZXIgc2ltcGxlIGJ1aWx0LWluIHR5
cGVzLgoraW5saW5lIHZvaWQgUHJpbnRUbyhib29sIHgsIDo6c3RkOjpvc3RyZWFtKiBvcykgewor
ICAqb3MgPDwgKHggPyAidHJ1ZSIgOiAiZmFsc2UiKTsKK30KKworLy8gT3ZlcmxvYWQgZm9yIHdj
aGFyX3QgdHlwZS4KKy8vIFByaW50cyBhIHdjaGFyX3QgYXMgYSBzeW1ib2wgaWYgaXQgaXMgcHJp
bnRhYmxlIG9yIGFzIGl0cyBpbnRlcm5hbAorLy8gY29kZSBvdGhlcndpc2UgYW5kIGFsc28gYXMg
aXRzIGRlY2ltYWwgY29kZSAoZXhjZXB0IGZvciBMJ1wwJykuCisvLyBUaGUgTCdcMCcgY2hhciBp
cyBwcmludGVkIGFzICJMJ1xcMCciLiBUaGUgZGVjaW1hbCBjb2RlIGlzIHByaW50ZWQKKy8vIGFz
IHNpZ25lZCBpbnRlZ2VyIHdoZW4gd2NoYXJfdCBpcyBpbXBsZW1lbnRlZCBieSB0aGUgY29tcGls
ZXIKKy8vIGFzIGEgc2lnbmVkIHR5cGUgYW5kIGlzIHByaW50ZWQgYXMgYW4gdW5zaWduZWQgaW50
ZWdlciB3aGVuIHdjaGFyX3QKKy8vIGlzIGltcGxlbWVudGVkIGFzIGFuIHVuc2lnbmVkIHR5cGUu
CitHVEVTVF9BUElfIHZvaWQgUHJpbnRUbyh3Y2hhcl90IHdjLCA6OnN0ZDo6b3N0cmVhbSogb3Mp
OworCisvLyBPdmVybG9hZHMgZm9yIEMgc3RyaW5ncy4KK0dURVNUX0FQSV8gdm9pZCBQcmludFRv
KGNvbnN0IGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRv
KGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFRvKEltcGxpY2l0Q2FzdF88
Y29uc3QgY2hhcio+KHMpLCBvcyk7Cit9CisKKy8vIHNpZ25lZC91bnNpZ25lZCBjaGFyIGlzIG9m
dGVuIHVzZWQgZm9yIHJlcHJlc2VudGluZyBiaW5hcnkgZGF0YSwgc28KKy8vIHdlIHByaW50IHBv
aW50ZXJzIHRvIGl0IGFzIHZvaWQqIHRvIGJlIHNhZmUuCitpbmxpbmUgdm9pZCBQcmludFRvKGNv
bnN0IHNpZ25lZCBjaGFyKiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUbyhJbXBs
aWNpdENhc3RfPGNvbnN0IHZvaWQqPihzKSwgb3MpOworfQoraW5saW5lIHZvaWQgUHJpbnRUbyhz
aWduZWQgY2hhciogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGljaXRD
YXN0Xzxjb25zdCB2b2lkKj4ocyksIG9zKTsKK30KK2lubGluZSB2b2lkIFByaW50VG8oY29uc3Qg
dW5zaWduZWQgY2hhciogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGlj
aXRDYXN0Xzxjb25zdCB2b2lkKj4ocyksIG9zKTsKK30KK2lubGluZSB2b2lkIFByaW50VG8odW5z
aWduZWQgY2hhciogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGljaXRD
YXN0Xzxjb25zdCB2b2lkKj4ocyksIG9zKTsKK30KKworLy8gTVNWQyBjYW4gYmUgY29uZmlndXJl
ZCB0byBkZWZpbmUgd2NoYXJfdCBhcyBhIHR5cGVkZWYgb2YgdW5zaWduZWQKKy8vIHNob3J0LiAg
SXQgZGVmaW5lcyBfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCB3aGVuIHdjaGFyX3QgaXMgYSBuYXRp
dmUKKy8vIHR5cGUuICBXaGVuIHdjaGFyX3QgaXMgYSB0eXBlZGVmLCBkZWZpbmluZyBhbiBvdmVy
bG9hZCBmb3IgY29uc3QKKy8vIHdjaGFyX3QqIHdvdWxkIGNhdXNlIHVuc2lnbmVkIHNob3J0KiBi
ZSBwcmludGVkIGFzIGEgd2lkZSBzdHJpbmcsCisvLyBwb3NzaWJseSBjYXVzaW5nIGludmFsaWQg
bWVtb3J5IGFjY2Vzc2VzLgorI2lmICFkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9OQVRJ
VkVfV0NIQVJfVF9ERUZJTkVEKQorLy8gT3ZlcmxvYWRzIGZvciB3aWRlIEMgc3RyaW5ncworR1RF
U1RfQVBJXyB2b2lkIFByaW50VG8oY29uc3Qgd2NoYXJfdCogcywgOjpzdGQ6Om9zdHJlYW0qIG9z
KTsKK2lubGluZSB2b2lkIFByaW50VG8od2NoYXJfdCogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7
CisgIFByaW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB3Y2hhcl90Kj4ocyksIG9zKTsKK30KKyNl
bmRpZgorCisvLyBPdmVybG9hZCBmb3IgQyBhcnJheXMuICBNdWx0aS1kaW1lbnNpb25hbCBhcnJh
eXMgYXJlIHByaW50ZWQKKy8vIHByb3Blcmx5LgorCisvLyBQcmludHMgdGhlIGdpdmVuIG51bWJl
ciBvZiBlbGVtZW50cyBpbiBhbiBhcnJheSwgd2l0aG91dCBwcmludGluZworLy8gdGhlIGN1cmx5
IGJyYWNlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBQcmludFJhd0FycmF5VG8oY29u
c3QgVCBhW10sIHNpemVfdCBjb3VudCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFVuaXZlcnNh
bFByaW50KGFbMF0sIG9zKTsKKyAgZm9yIChzaXplX3QgaSA9IDE7IGkgIT0gY291bnQ7IGkrKykg
eworICAgICpvcyA8PCAiLCAiOworICAgIFVuaXZlcnNhbFByaW50KGFbaV0sIG9zKTsKKyAgfQor
fQorCisvLyBPdmVybG9hZHMgZm9yIDo6c3RyaW5nIGFuZCA6OnN0ZDo6c3RyaW5nLgorI2lmIEdU
RVNUX0hBU19HTE9CQUxfU1RSSU5HCitHVEVTVF9BUElfIHZvaWQgUHJpbnRTdHJpbmdUbyhjb25z
dCA6OnN0cmluZyZzLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhj
b25zdCA6OnN0cmluZyYgcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50U3RyaW5nVG8o
cywgb3MpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCitHVEVTVF9B
UElfIHZvaWQgUHJpbnRTdHJpbmdUbyhjb25zdCA6OnN0ZDo6c3RyaW5nJnMsIDo6c3RkOjpvc3Ry
ZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHMsIDo6
c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFN0cmluZ1RvKHMsIG9zKTsKK30KKworLy8gT3Zl
cmxvYWRzIGZvciA6OndzdHJpbmcgYW5kIDo6c3RkOjp3c3RyaW5nLgorI2lmIEdURVNUX0hBU19H
TE9CQUxfV1NUUklORworR1RFU1RfQVBJXyB2b2lkIFByaW50V2lkZVN0cmluZ1RvKGNvbnN0IDo6
d3N0cmluZyZzLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhjb25z
dCA6OndzdHJpbmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFdpZGVTdHJpbmdU
byhzLCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORworCisjaWYg
R1RFU1RfSEFTX1NURF9XU1RSSU5HCitHVEVTVF9BUElfIHZvaWQgUHJpbnRXaWRlU3RyaW5nVG8o
Y29uc3QgOjpzdGQ6OndzdHJpbmcmcywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKK2lubGluZSB2b2lk
IFByaW50VG8oY29uc3QgOjpzdGQ6OndzdHJpbmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgewor
ICBQcmludFdpZGVTdHJpbmdUbyhzLCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERf
V1NUUklORworCisjaWYgR1RFU1RfSEFTX0FCU0wKKy8vIE92ZXJsb2FkIGZvciBhYnNsOjpzdHJp
bmdfdmlldy4KK2lubGluZSB2b2lkIFByaW50VG8oYWJzbDo6c3RyaW5nX3ZpZXcgc3AsIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgeworICBQcmludFRvKDo6c3RkOjpzdHJpbmcoc3ApLCBvcyk7Cit9Cisj
ZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCisKKyNpZiBHVEVTVF9MQU5HX0NYWDExCitpbmxpbmUg
dm9pZCBQcmludFRvKHN0ZDo6bnVsbHB0cl90LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsgKm9zIDw8
ICIobnVsbHB0cikiOyB9CisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKworI2lmIEdURVNU
X0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8KKy8vIEhlbHBlciBmdW5jdGlv
biBmb3IgcHJpbnRpbmcgYSB0dXBsZS4gIFQgbXVzdCBiZSBpbnN0YW50aWF0ZWQgd2l0aAorLy8g
YSB0dXBsZSB0eXBlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFByaW50VHVwbGVUbyhj
b25zdCBUJiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfVFIx
X1RVUExFIHx8IEdURVNUX0hBU19TVERfVFVQTEVfCisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExF
CisvLyBPdmVybG9hZCBmb3IgOjpzdGQ6OnRyMTo6dHVwbGUuICBOZWVkZWQgZm9yIHByaW50aW5n
IGZ1bmN0aW9uIGFyZ3VtZW50cywKKy8vIHdoaWNoIGFyZSBwYWNrZWQgYXMgdHVwbGVzLgorCisv
LyBPdmVybG9hZGVkIFByaW50VG8oKSBmb3IgdHVwbGVzIG9mIHZhcmlvdXMgYXJpdGllcy4gIFdl
IHN1cHBvcnQKKy8vIHR1cGxlcyBvZiB1cC10byAxMCBmaWVsZHMuICBUaGUgZm9sbG93aW5nIGlt
cGxlbWVudGF0aW9uIHdvcmtzCisvLyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdHIxOjp0dXBsZSBp
cyBpbXBsZW1lbnRlZCB1c2luZyB0aGUKKy8vIG5vbi1zdGFuZGFyZCB2YXJpYWRpYyB0ZW1wbGF0
ZSBmZWF0dXJlIG9yIG5vdC4KKworaW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIx
Ojp0dXBsZTw+JiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9z
KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3Rk
Ojp0cjE6OnR1cGxlPFQxPiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVU
byh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lk
IFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyPiYgdCwgOjpzdGQ6Om9zdHJl
YW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3Rk
Ojp0cjE6OnR1cGxlPFQxLCBUMiwgVDM+JiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJp
bnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Pgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0
cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFBy
aW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+Cit2b2lkIFByaW50VG8o
Y29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiYgdCwKKyAgICAgICAg
ICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0eXBlbmFtZSBUNj4KK3ZvaWQgUHJpbnRUbyhj
b25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiYgdCwKKyAgICAg
ICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVu
YW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+
Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDc+JiB0LAorICAgICAgICAgICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmlu
dFR1cGxlVG8odCwgb3MpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgICAgICAgIHR5cGVu
YW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+Cit2b2lkIFByaW50VG8oY29uc3QgOjpz
dGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiYgdCwKKyAgICAg
ICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVu
YW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcs
IHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOT4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIx
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiYgdCwKKyAgICAgICAg
ICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5
cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgordm9pZCBQcmludFRvKAorICAg
IGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksIFQxMD4mIHQsCisgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0
LCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUKKworI2lmIEdURVNUX0hB
U19TVERfVFVQTEVfCit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHlwZXM+Cit2b2lkIFByaW50VG8o
Y29uc3QgOjpzdGQ6OnR1cGxlPFR5cGVzLi4uPiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Cisg
IFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfVFVQTEVf
CisKKy8vIE92ZXJsb2FkIGZvciBzdGQ6OnBhaXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjpwYWlyPFQxLCBUMj4mIHZhbHVl
LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8ICcoJzsKKyAgLy8gV2UgY2Fubm90IHVz
ZSBVbml2ZXJzYWxQcmludCh2YWx1ZS5maXJzdCwgb3MpIGhlcmUsIGFzIFQxIG1heSBiZQorICAv
LyBhIHJlZmVyZW5jZSB0eXBlLiAgVGhlIHNhbWUgZm9yIHByaW50aW5nIHZhbHVlLnNlY29uZC4K
KyAgVW5pdmVyc2FsUHJpbnRlcjxUMT46OlByaW50KHZhbHVlLmZpcnN0LCBvcyk7CisgICpvcyA8
PCAiLCAiOworICBVbml2ZXJzYWxQcmludGVyPFQyPjo6UHJpbnQodmFsdWUuc2Vjb25kLCBvcyk7
CisgICpvcyA8PCAnKSc7Cit9CisKKy8vIEltcGxlbWVudHMgcHJpbnRpbmcgYSBub24tcmVmZXJl
bmNlIHR5cGUgVCBieSBsZXR0aW5nIHRoZSBjb21waWxlcgorLy8gcGljayB0aGUgcmlnaHQgb3Zl
cmxvYWQgb2YgUHJpbnRUbygpIGZvciBULgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBV
bml2ZXJzYWxQcmludGVyIHsKKyBwdWJsaWM6CisgIC8vIE1TVkMgd2FybnMgYWJvdXQgYWRkaW5n
IGNvbnN0IHRvIGEgZnVuY3Rpb24gdHlwZSwgc28gd2Ugd2FudCB0bworICAvLyBkaXNhYmxlIHRo
ZSB3YXJuaW5nLgorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MTgwKQorCisg
IC8vIE5vdGU6IHdlIGRlbGliZXJhdGVseSBkb24ndCBjYWxsIHRoaXMgUHJpbnRUbygpLCBhcyB0
aGF0IG5hbWUKKyAgLy8gY29uZmxpY3RzIHdpdGggOjp0ZXN0aW5nOjppbnRlcm5hbDo6UHJpbnRU
byBpbiB0aGUgYm9keSBvZiB0aGUKKyAgLy8gZnVuY3Rpb24uCisgIHN0YXRpYyB2b2lkIFByaW50
KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICAvLyBCeSBkZWZhdWx0
LCA6OnRlc3Rpbmc6OmludGVybmFsOjpQcmludFRvKCkgaXMgdXNlZCBmb3IgcHJpbnRpbmcKKyAg
ICAvLyB0aGUgdmFsdWUuCisgICAgLy8KKyAgICAvLyBUaGFua3MgdG8gS29lbmlnIGxvb2stdXAs
IGlmIFQgaXMgYSBjbGFzcyBhbmQgaGFzIGl0cyBvd24KKyAgICAvLyBQcmludFRvKCkgZnVuY3Rp
b24gZGVmaW5lZCBpbiBpdHMgbmFtZXNwYWNlLCB0aGF0IGZ1bmN0aW9uIHdpbGwKKyAgICAvLyBi
ZSB2aXNpYmxlIGhlcmUuICBTaW5jZSBpdCBpcyBtb3JlIHNwZWNpZmljIHRoYW4gdGhlIGdlbmVy
aWMgb25lcworICAgIC8vIGluIDo6dGVzdGluZzo6aW50ZXJuYWwsIGl0IHdpbGwgYmUgcGlja2Vk
IGJ5IHRoZSBjb21waWxlciBpbiB0aGUKKyAgICAvLyBmb2xsb3dpbmcgc3RhdGVtZW50IC0gZXhh
Y3RseSB3aGF0IHdlIHdhbnQuCisgICAgUHJpbnRUbyh2YWx1ZSwgb3MpOworICB9CisKKyAgR1RF
U1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCit9OworCisjaWYgR1RFU1RfSEFTX0FCU0wK
KworLy8gUHJpbnRlciBmb3IgYWJzbDo6b3B0aW9uYWwKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitjbGFzcyBVbml2ZXJzYWxQcmludGVyPDo6YWJzbDo6b3B0aW9uYWw8VD4+IHsKKyBwdWJsaWM6
CisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IDo6YWJzbDo6b3B0aW9uYWw8VD4mIHZhbHVlLCA6
OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICAqb3MgPDwgJygnOworICAgIGlmICghdmFsdWUpIHsK
KyAgICAgICpvcyA8PCAibnVsbG9wdCI7CisgICAgfSBlbHNlIHsKKyAgICAgIFVuaXZlcnNhbFBy
aW50KCp2YWx1ZSwgb3MpOworICAgIH0KKyAgICAqb3MgPDwgJyknOworICB9Cit9OworCisvLyBQ
cmludGVyIGZvciBhYnNsOjp2YXJpYW50CisKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBUPgorY2xh
c3MgVW5pdmVyc2FsUHJpbnRlcjw6OmFic2w6OnZhcmlhbnQ8VC4uLj4+IHsKKyBwdWJsaWM6Cisg
IHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IDo6YWJzbDo6dmFyaWFudDxULi4uPiYgdmFsdWUsIDo6
c3RkOjpvc3RyZWFtKiBvcykgeworICAgICpvcyA8PCAnKCc7CisgICAgYWJzbDo6dmlzaXQoVmlz
aXRvcntvc30sIHZhbHVlKTsKKyAgICAqb3MgPDwgJyknOworICB9CisKKyBwcml2YXRlOgorICBz
dHJ1Y3QgVmlzaXRvciB7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgICAgdm9pZCBvcGVy
YXRvcigpKGNvbnN0IFUmIHUpIGNvbnN0IHsKKyAgICAgICpvcyA8PCAiJyIgPDwgR2V0VHlwZU5h
bWU8VT4oKSA8PCAiJyB3aXRoIHZhbHVlICI7CisgICAgICBVbml2ZXJzYWxQcmludCh1LCBvcyk7
CisgICAgfQorICAgIDo6c3RkOjpvc3RyZWFtKiBvczsKKyAgfTsKK307CisKKyNlbmRpZiAgLy8g
R1RFU1RfSEFTX0FCU0wKKworLy8gVW5pdmVyc2FsUHJpbnRBcnJheShiZWdpbiwgbGVuLCBvcykg
cHJpbnRzIGFuIGFycmF5IG9mICdsZW4nCisvLyBlbGVtZW50cywgc3RhcnRpbmcgYXQgYWRkcmVz
cyAnYmVnaW4nLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFByaW50QXJy
YXkoY29uc3QgVCogYmVnaW4sIHNpemVfdCBsZW4sIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBp
ZiAobGVuID09IDApIHsKKyAgICAqb3MgPDwgInt9IjsKKyAgfSBlbHNlIHsKKyAgICAqb3MgPDwg
InsgIjsKKyAgICBjb25zdCBzaXplX3Qga1RocmVzaG9sZCA9IDE4OworICAgIGNvbnN0IHNpemVf
dCBrQ2h1bmtTaXplID0gODsKKyAgICAvLyBJZiB0aGUgYXJyYXkgaGFzIG1vcmUgdGhhbiBrVGhy
ZXNob2xkIGVsZW1lbnRzLCB3ZSdsbCBoYXZlIHRvCisgICAgLy8gb21pdCBzb21lIGRldGFpbHMg
YnkgcHJpbnRpbmcgb25seSB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0CisgICAgLy8ga0NodW5rU2l6
ZSBlbGVtZW50cy4KKyAgICAvLyBGSVhNRTogbGV0IHRoZSB1c2VyIGNvbnRyb2wgdGhlIHRocmVz
aG9sZCB1c2luZyBhIGZsYWcuCisgICAgaWYgKGxlbiA8PSBrVGhyZXNob2xkKSB7CisgICAgICBQ
cmludFJhd0FycmF5VG8oYmVnaW4sIGxlbiwgb3MpOworICAgIH0gZWxzZSB7CisgICAgICBQcmlu
dFJhd0FycmF5VG8oYmVnaW4sIGtDaHVua1NpemUsIG9zKTsKKyAgICAgICpvcyA8PCAiLCAuLi4s
ICI7CisgICAgICBQcmludFJhd0FycmF5VG8oYmVnaW4gKyBsZW4gLSBrQ2h1bmtTaXplLCBrQ2h1
bmtTaXplLCBvcyk7CisgICAgfQorICAgICpvcyA8PCAiIH0iOworICB9Cit9CisvLyBUaGlzIG92
ZXJsb2FkIHByaW50cyBhIChjb25zdCkgY2hhciBhcnJheSBjb21wYWN0bHkuCitHVEVTVF9BUElf
IHZvaWQgVW5pdmVyc2FsUHJpbnRBcnJheSgKKyAgICBjb25zdCBjaGFyKiBiZWdpbiwgc2l6ZV90
IGxlbiwgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKKworLy8gVGhpcyBvdmVybG9hZCBwcmludHMgYSAo
Y29uc3QpIHdjaGFyX3QgYXJyYXkgY29tcGFjdGx5LgorR1RFU1RfQVBJXyB2b2lkIFVuaXZlcnNh
bFByaW50QXJyYXkoCisgICAgY29uc3Qgd2NoYXJfdCogYmVnaW4sIHNpemVfdCBsZW4sIDo6c3Rk
Ojpvc3RyZWFtKiBvcyk7CisKKy8vIEltcGxlbWVudHMgcHJpbnRpbmcgYW4gYXJyYXkgdHlwZSBU
W05dLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgorY2xhc3MgVW5pdmVyc2FsUHJp
bnRlcjxUW05dPiB7CisgcHVibGljOgorICAvLyBQcmludHMgdGhlIGdpdmVuIGFycmF5LCBvbWl0
dGluZyBzb21lIGVsZW1lbnRzIHdoZW4gdGhlcmUgYXJlIHRvbworICAvLyBtYW55LgorICBzdGF0
aWMgdm9pZCBQcmludChjb25zdCBUICgmYSlbTl0sIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAg
IFVuaXZlcnNhbFByaW50QXJyYXkoYSwgTiwgb3MpOworICB9Cit9OworCisvLyBJbXBsZW1lbnRz
IHByaW50aW5nIGEgcmVmZXJlbmNlIHR5cGUgVCYuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIFVuaXZlcnNhbFByaW50ZXI8VCY+IHsKKyBwdWJsaWM6CisgIC8vIE1TVkMgd2FybnMgYWJv
dXQgYWRkaW5nIGNvbnN0IHRvIGEgZnVuY3Rpb24gdHlwZSwgc28gd2Ugd2FudCB0bworICAvLyBk
aXNhYmxlIHRoZSB3YXJuaW5nLgorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0
MTgwKQorCisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgICAvLyBQcmludHMgdGhlIGFkZHJlc3Mgb2YgdGhlIHZhbHVlLiAgV2UgdXNl
IHJlaW50ZXJwcmV0X2Nhc3QgaGVyZQorICAgIC8vIGFzIHN0YXRpY19jYXN0IGRvZXNuJ3QgY29t
cGlsZSB3aGVuIFQgaXMgYSBmdW5jdGlvbiB0eXBlLgorICAgICpvcyA8PCAiQCIgPDwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB2b2lkKj4oJnZhbHVlKSA8PCAiICI7CisKKyAgICAvLyBUaGVuIHBy
aW50cyB0aGUgdmFsdWUgaXRzZWxmLgorICAgIFVuaXZlcnNhbFByaW50KHZhbHVlLCBvcyk7Cisg
IH0KKworICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKK307CisKKy8vIFByaW50
cyBhIHZhbHVlIHRlcnNlbHk6IGZvciBhIHJlZmVyZW5jZSB0eXBlLCB0aGUgcmVmZXJlbmNlZCB2
YWx1ZQorLy8gKGJ1dCBub3QgdGhlIGFkZHJlc3MpIGlzIHByaW50ZWQ7IGZvciBhIChjb25zdCkg
Y2hhciBwb2ludGVyLCB0aGUKKy8vIE5VTC10ZXJtaW5hdGVkIHN0cmluZyAoYnV0IG5vdCB0aGUg
cG9pbnRlcikgaXMgcHJpbnRlZC4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbml2
ZXJzYWxUZXJzZVByaW50ZXIgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3Qg
VCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIFVuaXZlcnNhbFByaW50KHZhbHVl
LCBvcyk7CisgIH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFVuaXZlcnNhbFRl
cnNlUHJpbnRlcjxUJj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCYg
dmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIFVuaXZlcnNhbFByaW50KHZhbHVlLCBv
cyk7CisgIH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitjbGFzcyBVbml2
ZXJzYWxUZXJzZVByaW50ZXI8VFtOXT4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQo
Y29uc3QgVCAoJnZhbHVlKVtOXSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVW5pdmVyc2Fs
UHJpbnRlcjxUW05dPjo6UHJpbnQodmFsdWUsIG9zKTsKKyAgfQorfTsKK3RlbXBsYXRlIDw+Citj
bGFzcyBVbml2ZXJzYWxUZXJzZVByaW50ZXI8Y29uc3QgY2hhcio+IHsKKyBwdWJsaWM6CisgIHN0
YXRpYyB2b2lkIFByaW50KGNvbnN0IGNoYXIqIHN0ciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Cisg
ICAgaWYgKHN0ciA9PSBOVUxMKSB7CisgICAgICAqb3MgPDwgIk5VTEwiOworICAgIH0gZWxzZSB7
CisgICAgICBVbml2ZXJzYWxQcmludChzdGQ6OnN0cmluZyhzdHIpLCBvcyk7CisgICAgfQorICB9
Cit9OwordGVtcGxhdGUgPD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjaGFyKj4gewor
IHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY2hhciogc3RyLCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgICBVbml2ZXJzYWxUZXJzZVByaW50ZXI8Y29uc3QgY2hhcio+OjpQcmludChzdHIs
IG9zKTsKKyAgfQorfTsKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORwordGVtcGxhdGUgPD4K
K2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjb25zdCB3Y2hhcl90Kj4geworIHB1YmxpYzoK
KyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3Qgd2NoYXJfdCogc3RyLCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICpvcyA8PCAiTlVMTCI7CisgICAg
fSBlbHNlIHsKKyAgICAgIFVuaXZlcnNhbFByaW50KDo6c3RkOjp3c3RyaW5nKHN0ciksIG9zKTsK
KyAgICB9CisgIH0KK307CisjZW5kaWYKKwordGVtcGxhdGUgPD4KK2NsYXNzIFVuaXZlcnNhbFRl
cnNlUHJpbnRlcjx3Y2hhcl90Kj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQod2No
YXJfdCogc3RyLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBVbml2ZXJzYWxUZXJzZVByaW50
ZXI8Y29uc3Qgd2NoYXJfdCo+OjpQcmludChzdHIsIG9zKTsKKyAgfQorfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFRlcnNlUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6
c3RkOjpvc3RyZWFtKiBvcykgeworICBVbml2ZXJzYWxUZXJzZVByaW50ZXI8VD46OlByaW50KHZh
bHVlLCBvcyk7Cit9CisKKy8vIFByaW50cyBhIHZhbHVlIHVzaW5nIHRoZSB0eXBlIGluZmVycmVk
IGJ5IHRoZSBjb21waWxlci4gIFRoZQorLy8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIFVu
aXZlcnNhbFRlcnNlUHJpbnQoKSBpcyB0aGF0IGZvciBhCisvLyAoY29uc3QpIGNoYXIgcG9pbnRl
ciwgdGhpcyBwcmludHMgYm90aCB0aGUgcG9pbnRlciBhbmQgdGhlCisvLyBOVUwtdGVybWluYXRl
ZCBzdHJpbmcuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVW5pdmVyc2FsUHJpbnQoY29u
c3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAvLyBBIHdvcmthcm9uZCBmb3Ig
dGhlIGJ1ZyBpbiBWQysrIDcuMSB0aGF0IHByZXZlbnRzIHVzIGZyb20gaW5zdGFudGlhdGluZwor
ICAvLyBVbml2ZXJzYWxQcmludGVyIHdpdGggVCBkaXJlY3RseS4KKyAgdHlwZWRlZiBUIFQxOwor
ICBVbml2ZXJzYWxQcmludGVyPFQxPjo6UHJpbnQodmFsdWUsIG9zKTsKK30KKwordHlwZWRlZiA6
OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6c3RyaW5nPiBTdHJpbmdzOworCisvLyBUdXBsZVBvbGljeTxU
dXBsZVQ+IG11c3QgcHJvdmlkZToKKy8vIC0gdHVwbGVfc2l6ZQorLy8gICAgIHNpemUgb2YgdHVw
bGUgVHVwbGVULgorLy8gLSBnZXQ8c2l6ZV90IEk+KGNvbnN0IFR1cGxlVCYgdCkKKy8vICAgICBz
dGF0aWMgZnVuY3Rpb24gZXh0cmFjdGluZyBlbGVtZW50IEkgb2YgdHVwbGUgVHVwbGVULgorLy8g
LSB0dXBsZV9lbGVtZW50PHNpemVfdCBJPjo6dHlwZQorLy8gICAgIHR5cGUgb2YgZWxlbWVudCBJ
IG9mIHR1cGxlIFR1cGxlVC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZVQ+CitzdHJ1Y3QgVHVw
bGVQb2xpY3k7CisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VHVwbGVUPgorc3RydWN0IFR1cGxlUG9saWN5IHsKKyAgdHlwZWRlZiBUdXBsZVQgVHVwbGU7Cisg
IHN0YXRpYyBjb25zdCBzaXplX3QgdHVwbGVfc2l6ZSA9IDo6c3RkOjp0cjE6OnR1cGxlX3NpemU8
VHVwbGU+Ojp2YWx1ZTsKKworICB0ZW1wbGF0ZSA8c2l6ZV90IEk+CisgIHN0cnVjdCB0dXBsZV9l
bGVtZW50IDogOjpzdGQ6OnRyMTo6dHVwbGVfZWxlbWVudDxzdGF0aWNfY2FzdDxpbnQ+KEkpLCBU
dXBsZT4geworICB9OworCisgIHRlbXBsYXRlIDxzaXplX3QgST4KKyAgc3RhdGljIHR5cGVuYW1l
IEFkZFJlZmVyZW5jZTxjb25zdCB0eXBlbmFtZSA6OnN0ZDo6dHIxOjp0dXBsZV9lbGVtZW50PAor
ICAgICAgc3RhdGljX2Nhc3Q8aW50PihJKSwgVHVwbGU+Ojp0eXBlPjo6dHlwZQorICBnZXQoY29u
c3QgVHVwbGUmIHR1cGxlKSB7CisgICAgcmV0dXJuIDo6c3RkOjp0cjE6OmdldDxJPih0dXBsZSk7
CisgIH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGVUPgorY29uc3Qgc2l6ZV90IFR1cGxl
UG9saWN5PFR1cGxlVD46OnR1cGxlX3NpemU7CisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQ
TEUKKworI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHlw
ZXM+CitzdHJ1Y3QgVHVwbGVQb2xpY3k8IDo6c3RkOjp0dXBsZTxUeXBlcy4uLj4gPiB7CisgIHR5
cGVkZWYgOjpzdGQ6OnR1cGxlPFR5cGVzLi4uPiBUdXBsZTsKKyAgc3RhdGljIGNvbnN0IHNpemVf
dCB0dXBsZV9zaXplID0gOjpzdGQ6OnR1cGxlX3NpemU8VHVwbGU+Ojp2YWx1ZTsKKworICB0ZW1w
bGF0ZSA8c2l6ZV90IEk+CisgIHN0cnVjdCB0dXBsZV9lbGVtZW50IDogOjpzdGQ6OnR1cGxlX2Vs
ZW1lbnQ8SSwgVHVwbGU+IHt9OworCisgIHRlbXBsYXRlIDxzaXplX3QgST4KKyAgc3RhdGljIGNv
bnN0IHR5cGVuYW1lIDo6c3RkOjp0dXBsZV9lbGVtZW50PEksIFR1cGxlPjo6dHlwZSYgZ2V0KAor
ICAgICAgY29uc3QgVHVwbGUmIHR1cGxlKSB7CisgICAgcmV0dXJuIDo6c3RkOjpnZXQ8ST4odHVw
bGUpOworICB9Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFR5cGVzPgorY29uc3Qgc2l6ZV90
IFR1cGxlUG9saWN5PCA6OnN0ZDo6dHVwbGU8VHlwZXMuLi4+ID46OnR1cGxlX3NpemU7CisjZW5k
aWYgIC8vIEdURVNUX0hBU19TVERfVFVQTEVfCisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFIHx8
IEdURVNUX0hBU19TVERfVFVQTEVfCisvLyBUaGlzIGhlbHBlciB0ZW1wbGF0ZSBhbGxvd3MgUHJp
bnRUbygpIGZvciB0dXBsZXMgYW5kCisvLyBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNU
b1N0cmluZ3MoKSB0byBiZSBkZWZpbmVkIGJ5CisvLyBpbmR1Y3Rpb24gb24gdGhlIG51bWJlciBv
ZiB0dXBsZSBmaWVsZHMuICBUaGUgaWRlYSBpcyB0aGF0CisvLyBUdXBsZVByZWZpeFByaW50ZXI8
Tj46OlByaW50UHJlZml4VG8odCwgb3MpIHByaW50cyB0aGUgZmlyc3QgTgorLy8gZmllbGRzIGlu
IHR1cGxlIHQsIGFuZCBjYW4gYmUgZGVmaW5lZCBpbiB0ZXJtcyBvZgorLy8gVHVwbGVQcmVmaXhQ
cmludGVyPE4gLSAxPi4KKy8vCisvLyBUaGUgaW5kdWN0aXZlIGNhc2UuCit0ZW1wbGF0ZSA8c2l6
ZV90IE4+CitzdHJ1Y3QgVHVwbGVQcmVmaXhQcmludGVyIHsKKyAgLy8gUHJpbnRzIHRoZSBmaXJz
dCBOIGZpZWxkcyBvZiBhIHR1cGxlLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+CisgIHN0
YXRpYyB2b2lkIFByaW50UHJlZml4VG8oY29uc3QgVHVwbGUmIHQsIDo6c3RkOjpvc3RyZWFtKiBv
cykgeworICAgIFR1cGxlUHJlZml4UHJpbnRlcjxOIC0gMT46OlByaW50UHJlZml4VG8odCwgb3Mp
OworICAgIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUFVTSF8oKQorICAgIGlmIChOID4g
MSkgeworICAgIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUE9QXygpCisgICAgICAqb3Mg
PDwgIiwgIjsKKyAgICB9CisgICAgVW5pdmVyc2FsUHJpbnRlcjwKKyAgICAgICAgdHlwZW5hbWUg
VHVwbGVQb2xpY3k8VHVwbGU+Ojp0ZW1wbGF0ZSB0dXBsZV9lbGVtZW50PE4gLSAxPjo6dHlwZT4K
KyAgICAgICAgOjpQcmludChUdXBsZVBvbGljeTxUdXBsZT46OnRlbXBsYXRlIGdldDxOIC0gMT4o
dCksIG9zKTsKKyAgfQorCisgIC8vIFRlcnNlbHkgcHJpbnRzIHRoZSBmaXJzdCBOIGZpZWxkcyBv
ZiBhIHR1cGxlIHRvIGEgc3RyaW5nIHZlY3RvciwKKyAgLy8gb25lIGVsZW1lbnQgZm9yIGVhY2gg
ZmllbGQuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4KKyAgc3RhdGljIHZvaWQgVGVyc2VQ
cmludFByZWZpeFRvU3RyaW5ncyhjb25zdCBUdXBsZSYgdCwgU3RyaW5ncyogc3RyaW5ncykgewor
ICAgIFR1cGxlUHJlZml4UHJpbnRlcjxOIC0gMT46OlRlcnNlUHJpbnRQcmVmaXhUb1N0cmluZ3Mo
dCwgc3RyaW5ncyk7CisgICAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgICBVbml2ZXJzYWxU
ZXJzZVByaW50KFR1cGxlUG9saWN5PFR1cGxlPjo6dGVtcGxhdGUgZ2V0PE4gLSAxPih0KSwgJnNz
KTsKKyAgICBzdHJpbmdzLT5wdXNoX2JhY2soc3Muc3RyKCkpOworICB9Cit9OworCisvLyBCYXNl
IGNhc2UuCit0ZW1wbGF0ZSA8Pgorc3RydWN0IFR1cGxlUHJlZml4UHJpbnRlcjwwPiB7CisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4KKyAgc3RhdGljIHZvaWQgUHJpbnRQcmVmaXhUbyhjb25z
dCBUdXBsZSYsIDo6c3RkOjpvc3RyZWFtKikge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVw
bGU+CisgIHN0YXRpYyB2b2lkIFRlcnNlUHJpbnRQcmVmaXhUb1N0cmluZ3MoY29uc3QgVHVwbGUm
LCBTdHJpbmdzKikge30KK307CisKKy8vIEhlbHBlciBmdW5jdGlvbiBmb3IgcHJpbnRpbmcgYSB0
dXBsZS4KKy8vIFR1cGxlIG11c3QgYmUgZWl0aGVyIHN0ZDo6dHIxOjp0dXBsZSBvciBzdGQ6OnR1
cGxlIHR5cGUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+Cit2b2lkIFByaW50VHVwbGVUbyhj
b25zdCBUdXBsZSYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCAiKCI7CisgIFR1
cGxlUHJlZml4UHJpbnRlcjxUdXBsZVBvbGljeTxUdXBsZT46OnR1cGxlX3NpemU+OjpQcmludFBy
ZWZpeFRvKHQsIG9zKTsKKyAgKm9zIDw8ICIpIjsKK30KKworLy8gUHJpbnRzIHRoZSBmaWVsZHMg
b2YgYSB0dXBsZSB0ZXJzZWx5IHRvIGEgc3RyaW5nIHZlY3Rvciwgb25lCisvLyBlbGVtZW50IGZv
ciBlYWNoIGZpZWxkLiAgU2VlIHRoZSBjb21tZW50IGJlZm9yZQorLy8gVW5pdmVyc2FsVGVyc2VQ
cmludCgpIGZvciBob3cgd2UgZGVmaW5lICJ0ZXJzZWx5Ii4KK3RlbXBsYXRlIDx0eXBlbmFtZSBU
dXBsZT4KK1N0cmluZ3MgVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKGNv
bnN0IFR1cGxlJiB2YWx1ZSkgeworICBTdHJpbmdzIHJlc3VsdDsKKyAgVHVwbGVQcmVmaXhQcmlu
dGVyPFR1cGxlUG9saWN5PFR1cGxlPjo6dHVwbGVfc2l6ZT46OgorICAgICAgVGVyc2VQcmludFBy
ZWZpeFRvU3RyaW5ncyh2YWx1ZSwgJnJlc3VsdCk7CisgIHJldHVybiByZXN1bHQ7Cit9CisjZW5k
aWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8KKworfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCisKKyNpZiBHVEVTVF9IQVNfQUJTTAorbmFtZXNwYWNlIGlu
dGVybmFsMiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVHlwZVdpdGhvdXRGb3JtYXR0
ZXI8VCwga0NvbnZlcnRpYmxlVG9TdHJpbmdWaWV3Pjo6UHJpbnRWYWx1ZSgKKyAgICBjb25zdCBU
JiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIGludGVybmFsOjpQcmludFRvKGFic2w6
OnN0cmluZ192aWV3KHZhbHVlKSwgb3MpOworfQorfSAgLy8gbmFtZXNwYWNlIGludGVybmFsMgor
I2VuZGlmCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorOjpzdGQ6OnN0cmluZyBQcmludFRvU3Ry
aW5nKGNvbnN0IFQmIHZhbHVlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIGludGVy
bmFsOjpVbml2ZXJzYWxUZXJzZVByaW50ZXI8VD46OlByaW50KHZhbHVlLCAmc3MpOworICByZXR1
cm4gc3Muc3RyKCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKy8vIEluY2x1ZGUg
YW55IGN1c3RvbSBwcmludGVyIGFkZGVkIGJ5IHRoZSBsb2NhbCBpbnN0YWxsYXRpb24uCisvLyBX
ZSBtdXN0IGluY2x1ZGUgdGhpcyBoZWFkZXIgYXQgdGhlIGVuZCB0byBtYWtlIHN1cmUgaXQgY2Fu
IHVzZSB0aGUKKy8vIGRlY2xhcmF0aW9ucyBmcm9tIHRoaXMgZmlsZS4KKyNpbmNsdWRlICJndGVz
dC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcHJpbnRlcnMuaCIKKworI2VuZGlmICAvLyBHVEVTVF9J
TkNMVURFX0dURVNUX0dURVNUX1BSSU5URVJTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXNwaS5oIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1zcGkuaAppbmRleCBjNDFkYTQ4NDQ3NjAzZTk2NWZi
NzcyYWJjYTJmMTQ1ZWU4MmE2MDZmLi4xZTg5ODM5MzhlYTI3OTJjNTI2OTBlYWQyOWIwMGFiNThj
ZGFhZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2d0ZXN0LXNwaS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
Z3Rlc3Qtc3BpLmgKQEAgLTI2LDE2ICsyNiwyMCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbikKKwogLy8KIC8vIFV0aWxpdGllcyBmb3IgdGVzdGluZyBHb29nbGUgVGVzdCBp
dHNlbGYgYW5kIGNvZGUgdGhhdCB1c2VzIEdvb2dsZSBUZXN0CiAvLyAoZS5nLiBmcmFtZXdvcmtz
IGJ1aWx0IG9uIHRvcCBvZiBHb29nbGUgVGVzdCkuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDA0IERP
IE5PVCBERUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1NQSV9IXwog
I2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1NQSV9IXwogCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCitHVEVTVF9ESVNBQkxFX01T
Q19XQVJOSU5HU19QVVNIXyg0MjUxIFwKKy8qIGNsYXNzIEEgbmVlZHMgdG8gaGF2ZSBkbGwtaW50
ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50cyBvZiBjbGFzcyBCICovKQogCiBuYW1lc3BhY2Ug
dGVzdGluZyB7CiAKQEAgLTk3LDEzICsxMDEsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBTaW5nbGVG
YWlsdXJlQ2hlY2tlciB7CiAgcHVibGljOgogICAvLyBUaGUgY29uc3RydWN0b3IgcmVtZW1iZXJz
IHRoZSBhcmd1bWVudHMuCiAgIFNpbmdsZUZhaWx1cmVDaGVja2VyKGNvbnN0IFRlc3RQYXJ0UmVz
dWx0QXJyYXkqIHJlc3VsdHMsCi0gICAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0
OjpUeXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN1YnN0cik7
CisgICAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUsIGNvbnN0
IHN0ZDo6c3RyaW5nJiBzdWJzdHIpOwogICB+U2luZ2xlRmFpbHVyZUNoZWNrZXIoKTsKICBwcml2
YXRlOgogICBjb25zdCBUZXN0UGFydFJlc3VsdEFycmF5KiBjb25zdCByZXN1bHRzXzsKICAgY29u
c3QgVGVzdFBhcnRSZXN1bHQ6OlR5cGUgdHlwZV87Ci0gIGNvbnN0IFN0cmluZyBzdWJzdHJfOwor
ICBjb25zdCBzdGQ6OnN0cmluZyBzdWJzdHJfOwogCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8oU2luZ2xlRmFpbHVyZUNoZWNrZXIpOwogfTsKQEAgLTExMiw2ICsxMTUsOCBAQCBj
bGFzcyBHVEVTVF9BUElfIFNpbmdsZUZhaWx1cmVDaGVja2VyIHsKIAogfSAgLy8gbmFtZXNwYWNl
IHRlc3RpbmcKIAorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQor
CiAvLyBBIHNldCBvZiBtYWNyb3MgZm9yIHRlc3RpbmcgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBv
ciBjb2RlIHRoYXQncyBleHBlY3RlZAogLy8gdG8gZ2VuZXJhdGUgR29vZ2xlIFRlc3QgZmF0YWwg
ZmFpbHVyZXMuICBJdCB2ZXJpZmllcyB0aGF0IHRoZSBnaXZlbgogLy8gc3RhdGVtZW50IHdpbGwg
Y2F1c2UgZXhhY3RseSBvbmUgZmF0YWwgR29vZ2xlIFRlc3QgZmFpbHVyZSB3aXRoICdzdWJzdHIn
CkBAIC0yMjMsNyArMjI4LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBTaW5nbGVGYWlsdXJlQ2hlY2tl
ciB7CiAgICAgICAgIChzdWJzdHIpKTtcCiAgICAge1wKICAgICAgIDo6dGVzdGluZzo6U2NvcGVk
RmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIgZ3Rlc3RfcmVwb3J0ZXIoXAotICAgICAgICAgIDo6
dGVzdGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6OklOVEVSQ0VQVF9BTExf
VEhSRUFEUyxcCisgICAgICAgICAgOjp0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRS
ZXBvcnRlcjo6SU5URVJDRVBUX0FMTF9USFJFQURTLCBcCiAgICAgICAgICAgJmd0ZXN0X2ZhaWx1
cmVzKTtcCiAgICAgICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IHN0
YXRlbWVudDsgfVwKICAgICB9XApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBhcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgKaW5kZXggZjcxNDc1OTA2NzYzOWYxZWE0
ZWMwYTEyNjM0N2RlYzEyMDQ4MjQzOS4uMWM3Yjg5ZTA4Nzk2ZDk3MzBmOWY4ZWVhZTQwNjIyNzE3
N2RiYTUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9ndGVzdC10ZXN0LXBhcnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oCkBAIC0yNywxNiArMjcsMTggQEAKIC8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRob3I6IG1oZXVsZUBnb29nbGUuY29tIChN
YXJrdXMgSGV1bGUpCi0vLworLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQogCiAj
aWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfVEVTVF9QQVJUX0hfCiAjZGVmaW5lIEdU
RVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfVEVTVF9QQVJUX0hfCiAKICNpbmNsdWRlIDxpb3Nmd2Q+
CiAjaW5jbHVkZSA8dmVjdG9yPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVy
bmFsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+CisjaW5jbHVk
ZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRl
cm5hbC9ndGVzdC1zdHJpbmcuaCIKKworR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8o
NDI1MSBcCisvKiBjbGFzcyBBIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2Vk
IGJ5IGNsaWVudHMgb2YgY2xhc3MgQiAqLykKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC02
Miw3ICs2NCw3IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFBhcnRSZXN1bHQgewogICAgICAgICAg
ICAgICAgICBpbnQgYV9saW5lX251bWJlciwKICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
YV9tZXNzYWdlKQogICAgICAgOiB0eXBlXyhhX3R5cGUpLAotICAgICAgICBmaWxlX25hbWVfKGFf
ZmlsZV9uYW1lKSwKKyAgICAgICAgZmlsZV9uYW1lXyhhX2ZpbGVfbmFtZSA9PSBOVUxMID8gIiIg
OiBhX2ZpbGVfbmFtZSksCiAgICAgICAgIGxpbmVfbnVtYmVyXyhhX2xpbmVfbnVtYmVyKSwKICAg
ICAgICAgc3VtbWFyeV8oRXh0cmFjdFN1bW1hcnkoYV9tZXNzYWdlKSksCiAgICAgICAgIG1lc3Nh
Z2VfKGFfbWVzc2FnZSkgewpAQCAtNzMsNyArNzUsOSBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RQ
YXJ0UmVzdWx0IHsKIAogICAvLyBHZXRzIHRoZSBuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB3aGVy
ZSB0aGUgdGVzdCBwYXJ0IHRvb2sgcGxhY2UsIG9yCiAgIC8vIE5VTEwgaWYgaXQncyB1bmtub3du
LgotICBjb25zdCBjaGFyKiBmaWxlX25hbWUoKSBjb25zdCB7IHJldHVybiBmaWxlX25hbWVfLmNf
c3RyKCk7IH0KKyAgY29uc3QgY2hhciogZmlsZV9uYW1lKCkgY29uc3QgeworICAgIHJldHVybiBm
aWxlX25hbWVfLmVtcHR5KCkgPyBOVUxMIDogZmlsZV9uYW1lXy5jX3N0cigpOworICB9CiAKICAg
Ly8gR2V0cyB0aGUgbGluZSBpbiB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0
b29rIHBsYWNlLAogICAvLyBvciAtMSBpZiBpdCdzIHVua25vd24uCkBAIC05NiwyMSArMTAwLDIy
IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFBhcnRSZXN1bHQgewogCiAgIC8vIFJldHVybnMgdHJ1
ZSBpZmYgdGhlIHRlc3QgcGFydCBmYXRhbGx5IGZhaWxlZC4KICAgYm9vbCBmYXRhbGx5X2ZhaWxl
ZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGVfID09IGtGYXRhbEZhaWx1cmU7IH0KKwogIHByaXZhdGU6
CiAgIFR5cGUgdHlwZV87CiAKICAgLy8gR2V0cyB0aGUgc3VtbWFyeSBvZiB0aGUgZmFpbHVyZSBt
ZXNzYWdlIGJ5IG9taXR0aW5nIHRoZSBzdGFjawogICAvLyB0cmFjZSBpbiBpdC4KLSAgc3RhdGlj
IGludGVybmFsOjpTdHJpbmcgRXh0cmFjdFN1bW1hcnkoY29uc3QgY2hhciogbWVzc2FnZSk7Cisg
IHN0YXRpYyBzdGQ6OnN0cmluZyBFeHRyYWN0U3VtbWFyeShjb25zdCBjaGFyKiBtZXNzYWdlKTsK
IAogICAvLyBUaGUgbmFtZSBvZiB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0
b29rIHBsYWNlLCBvcgotICAvLyBOVUxMIGlmIHRoZSBzb3VyY2UgZmlsZSBpcyB1bmtub3duLgot
ICBpbnRlcm5hbDo6U3RyaW5nIGZpbGVfbmFtZV87CisgIC8vICIiIGlmIHRoZSBzb3VyY2UgZmls
ZSBpcyB1bmtub3duLgorICBzdGQ6OnN0cmluZyBmaWxlX25hbWVfOwogICAvLyBUaGUgbGluZSBp
biB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0b29rIHBsYWNlLCBvciAtMQog
ICAvLyBpZiB0aGUgbGluZSBudW1iZXIgaXMgdW5rbm93bi4KICAgaW50IGxpbmVfbnVtYmVyXzsK
LSAgaW50ZXJuYWw6OlN0cmluZyBzdW1tYXJ5XzsgIC8vIFRoZSB0ZXN0IGZhaWx1cmUgc3VtbWFy
eS4KLSAgaW50ZXJuYWw6OlN0cmluZyBtZXNzYWdlXzsgIC8vIFRoZSB0ZXN0IGZhaWx1cmUgbWVz
c2FnZS4KKyAgc3RkOjpzdHJpbmcgc3VtbWFyeV87ICAvLyBUaGUgdGVzdCBmYWlsdXJlIHN1bW1h
cnkuCisgIHN0ZDo6c3RyaW5nIG1lc3NhZ2VfOyAgLy8gVGhlIHRlc3QgZmFpbHVyZSBtZXNzYWdl
LgogfTsKIAogLy8gUHJpbnRzIGEgVGVzdFBhcnRSZXN1bHQgb2JqZWN0LgpAQCAtMTQwLDcgKzE0
NSw3IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFBhcnRSZXN1bHRBcnJheSB7CiB9OwogCiAvLyBU
aGlzIGludGVyZmFjZSBrbm93cyBob3cgdG8gcmVwb3J0IGEgdGVzdCBwYXJ0IHJlc3VsdC4KLWNs
YXNzIFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2UgeworY2xhc3MgR1RFU1RfQVBJXyBU
ZXN0UGFydFJlc3VsdFJlcG9ydGVySW50ZXJmYWNlIHsKICBwdWJsaWM6CiAgIHZpcnR1YWwgflRl
c3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2UoKSB7fQogCkBAIC0xNzMsNCArMTc4LDYgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBIYXNOZXdGYXRhbEZhaWx1cmVIZWxwZXIKIAogfSAgLy8gbmFtZXNw
YWNlIHRlc3RpbmcKIAorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1
MQorCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfVEVTVF9QQVJUX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXR5
cGVkLXRlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qt
dHlwZWQtdGVzdC5oCmluZGV4IDFlYzhlYjhkMzA5Mzk4ZDUyYmQ0OTYzODRjZjQ3NDgzYWUxMTUy
ZWUuLjc0YmNlNDZiZGM1MGY0YzhjZGUyYzZkNzI2NDkxMWZmNGQ5OWNmMTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQt
dGVzdC5oCkBAIC0yNiw4ICsyNiw5IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
IC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcg
V2FuKQorCisKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKIAogI2lmbmRlZiBH
VEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1RZUEVEX1RFU1RfSF8KICNkZWZpbmUgR1RFU1RfSU5D
TFVERV9HVEVTVF9HVEVTVF9UWVBFRF9URVNUX0hfCkBAIC04Miw2ICs4MywyNCBAQCBUWVBFRF9U
RVNUKEZvb1Rlc3QsIERvZXNCbGFoKSB7CiAKIFRZUEVEX1RFU1QoRm9vVGVzdCwgSGFzUHJvcGVy
dHlBKSB7IC4uLiB9CiAKKy8vIFRZUEVEX1RFU1RfQ0FTRSB0YWtlcyBhbiBvcHRpb25hbCB0aGly
ZCBhcmd1bWVudCB3aGljaCBhbGxvd3MgdG8gc3BlY2lmeSBhCisvLyBjbGFzcyB0aGF0IGdlbmVy
YXRlcyBjdXN0b20gdGVzdCBuYW1lIHN1ZmZpeGVzIGJhc2VkIG9uIHRoZSB0eXBlLiBUaGlzIHNo
b3VsZAorLy8gYmUgYSBjbGFzcyB3aGljaCBoYXMgYSBzdGF0aWMgdGVtcGxhdGUgZnVuY3Rpb24g
R2V0TmFtZShpbnQgaW5kZXgpIHJldHVybmluZworLy8gYSBzdHJpbmcgZm9yIGVhY2ggdHlwZS4g
VGhlIHByb3ZpZGVkIGludGVnZXIgaW5kZXggZXF1YWxzIHRoZSBpbmRleCBvZiB0aGUKKy8vIHR5
cGUgaW4gdGhlIHByb3ZpZGVkIHR5cGUgbGlzdC4gSW4gbWFueSBjYXNlcyB0aGUgaW5kZXggY2Fu
IGJlIGlnbm9yZWQuCisvLworLy8gRm9yIGV4YW1wbGU6CisvLyAgIGNsYXNzIE15VHlwZU5hbWVz
IHsKKy8vICAgIHB1YmxpYzoKKy8vICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy8vICAgICBz
dGF0aWMgc3RkOjpzdHJpbmcgR2V0TmFtZShpbnQpIHsKKy8vICAgICAgIGlmIChzdGQ6OmlzX3Nh
bWU8VCwgY2hhcj4oKSkgcmV0dXJuICJjaGFyIjsKKy8vICAgICAgIGlmIChzdGQ6OmlzX3NhbWU8
VCwgaW50PigpKSByZXR1cm4gImludCI7CisvLyAgICAgICBpZiAoc3RkOjppc19zYW1lPFQsIHVu
c2lnbmVkIGludD4oKSkgcmV0dXJuICJ1bnNpZ25lZEludCI7CisvLyAgICAgfQorLy8gICB9Owor
Ly8gICBUWVBFRF9URVNUX0NBU0UoRm9vVGVzdCwgTXlUeXBlcywgTXlUeXBlTmFtZXMpOworCiAj
ZW5kaWYgIC8vIDAKIAogLy8gVHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBhYnN0cmFjdCB0
ZXN0IHBhdHRlcm5zIHBhcmFtZXRlcml6ZWQKQEAgLTE0MywxMSArMTYyLDE2IEBAIElOU1RBTlRJ
QVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsKIC8vIElmIHRoZSB0
eXBlIGxpc3QgY29udGFpbnMgb25seSBvbmUgdHlwZSwgeW91IGNhbiB3cml0ZSB0aGF0IHR5cGUK
IC8vIGRpcmVjdGx5IHdpdGhvdXQgVHlwZXM8Li4uPjoKIC8vICAgSU5TVEFOVElBVEVfVFlQRURf
VEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIGludCk7CisvLworLy8gU2ltaWxhciB0byB0aGUgb3B0
aW9uYWwgYXJndW1lbnQgb2YgVFlQRURfVEVTVF9DQVNFIGFib3ZlLAorLy8gSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AgdGFrZXMgYW4gb3B0aW9uYWwgZm91cnRoIGFyZ3VtZW50IHdoaWNoIGFsbG93
cyB0bworLy8gZ2VuZXJhdGUgY3VzdG9tIG5hbWVzLgorLy8gICBJTlNUQU5USUFURV9UWVBFRF9U
RVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcywgTXlUeXBlTmFtZXMpOwogCiAjZW5kaWYg
IC8vIDAKIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLSNpbmNsdWRl
IDxndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRl
cm5hbC9ndGVzdC1wb3J0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11
dGlsLmgiCiAKIC8vIEltcGxlbWVudHMgdHlwZWQgdGVzdHMuCiAKQEAgLTE1NywzMyArMTgxLDQ4
IEBAIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsK
IC8vCiAvLyBFeHBhbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSB0eXBlZGVmIGZvciB0aGUgdHlwZSBw
YXJhbWV0ZXJzIG9mIHRoZQogLy8gZ2l2ZW4gdGVzdCBjYXNlLgotI2RlZmluZSBHVEVTVF9UWVBF
X1BBUkFNU18oVGVzdENhc2VOYW1lKSBndGVzdF90eXBlX3BhcmFtc18jI1Rlc3RDYXNlTmFtZSMj
XworIyBkZWZpbmUgR1RFU1RfVFlQRV9QQVJBTVNfKFRlc3RDYXNlTmFtZSkgZ3Rlc3RfdHlwZV9w
YXJhbXNfIyNUZXN0Q2FzZU5hbWUjI18KKworLy8gRXhwYW5kcyB0byB0aGUgbmFtZSBvZiB0aGUg
dHlwZWRlZiBmb3IgdGhlIE5hbWVHZW5lcmF0b3IsIHJlc3BvbnNpYmxlIGZvcgorLy8gY3JlYXRp
bmcgdGhlIHN1ZmZpeGVzIG9mIHRoZSBuYW1lLgorI2RlZmluZSBHVEVTVF9OQU1FX0dFTkVSQVRP
Ul8oVGVzdENhc2VOYW1lKSBcCisgIGd0ZXN0X3R5cGVfcGFyYW1zXyMjVGVzdENhc2VOYW1lIyNf
TmFtZUdlbmVyYXRvcgogCiAvLyBUaGUgJ1R5cGVzJyB0ZW1wbGF0ZSBhcmd1bWVudCBiZWxvdyBt
dXN0IGhhdmUgc3BhY2VzIGFyb3VuZCBpdAogLy8gc2luY2Ugc29tZSBjb21waWxlcnMgbWF5IGNo
b2tlIG9uICc+Picgd2hlbiBwYXNzaW5nIGEgdGVtcGxhdGUKIC8vIGluc3RhbmNlIChlLmcuIFR5
cGVzPGludD4pCi0jZGVmaW5lIFRZUEVEX1RFU1RfQ0FTRShDYXNlTmFtZSwgVHlwZXMpIFwKLSAg
dHlwZWRlZiA6OnRlc3Rpbmc6OmludGVybmFsOjpUeXBlTGlzdDwgVHlwZXMgPjo6dHlwZSBcCi0g
ICAgICBHVEVTVF9UWVBFX1BBUkFNU18oQ2FzZU5hbWUpCi0KLSNkZWZpbmUgVFlQRURfVEVTVChD
YXNlTmFtZSwgVGVzdE5hbWUpIFwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIGd0ZXN0X1R5cGVQYXJh
bV8+IFwKLSAgY2xhc3MgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyhDYXNlTmFtZSwgVGVzdE5hbWUp
IFwKLSAgICAgIDogcHVibGljIENhc2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IHsgXAotICAgcHJp
dmF0ZTogXAotICAgIHR5cGVkZWYgQ2FzZU5hbWU8Z3Rlc3RfVHlwZVBhcmFtXz4gVGVzdEZpeHR1
cmU7IFwKLSAgICB0eXBlZGVmIGd0ZXN0X1R5cGVQYXJhbV8gVHlwZVBhcmFtOyBcCi0gICAgdmly
dHVhbCB2b2lkIFRlc3RCb2R5KCk7IFwKLSAgfTsgXAotICBib29sIGd0ZXN0XyMjQ2FzZU5hbWUj
I18jI1Rlc3ROYW1lIyNfcmVnaXN0ZXJlZF8gPSBcCi0gICAgICA6OnRlc3Rpbmc6OmludGVybmFs
OjpUeXBlUGFyYW1ldGVyaXplZFRlc3Q8IFwKLSAgICAgICAgICBDYXNlTmFtZSwgXAotICAgICAg
ICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlRlbXBsYXRlU2VsPCBcCi0gICAgICAgICAgICAgIEdU
RVNUX1RFU1RfQ0xBU1NfTkFNRV8oQ2FzZU5hbWUsIFRlc3ROYW1lKT4sIFwKLSAgICAgICAgICBH
VEVTVF9UWVBFX1BBUkFNU18oQ2FzZU5hbWUpPjo6UmVnaXN0ZXIoXAotICAgICAgICAgICAgICAi
IiwgI0Nhc2VOYW1lLCAjVGVzdE5hbWUsIDApOyBcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBndGVz
dF9UeXBlUGFyYW1fPiBcCi0gIHZvaWQgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyhDYXNlTmFtZSwg
VGVzdE5hbWUpPGd0ZXN0X1R5cGVQYXJhbV8+OjpUZXN0Qm9keSgpCisjIGRlZmluZSBUWVBFRF9U
RVNUX0NBU0UoQ2FzZU5hbWUsIFR5cGVzLCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgIHR5cGVkZWYgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZUxpc3Q8IFR5cGVzID46OnR5
cGUgR1RFU1RfVFlQRV9QQVJBTVNfKCBcCisgICAgICBDYXNlTmFtZSk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHR5cGVkZWYg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6TmFtZUdlbmVyYXRvclNlbGVjdG9yPF9fVkFfQVJHU19fPjo6
dHlwZSAgICBcCisgICAgICBHVEVTVF9OQU1FX0dFTkVSQVRPUl8oQ2FzZU5hbWUpCisKKyMgZGVm
aW5lIFRZUEVEX1RFU1QoQ2FzZU5hbWUsIFRlc3ROYW1lKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIGd0ZXN0X1R5cGVQYXJhbV8+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgY2xhc3MgR1RFU1Rf
VEVTVF9DTEFTU19OQU1FXyhDYXNlTmFtZSwgVGVzdE5hbWUpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgIDogcHVibGljIENhc2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIHByaXZhdGU6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB0eXBlZGVmIENhc2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IFRlc3RGaXh0dXJlOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0eXBlZGVmIGd0ZXN0X1R5cGVQYXJhbV8gVHlw
ZVBhcmFtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2aXJ0
dWFsIHZvaWQgVGVzdEJvZHkoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgc3RhdGljIGJvb2wgZ3Rl
c3RfIyNDYXNlTmFtZSMjXyMjVGVzdE5hbWUjI19yZWdpc3RlcmVkXyAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gPSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6
OlR5cGVQYXJhbWV0ZXJpemVkVGVzdDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICBDYXNlTmFtZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpUZW1w
bGF0ZVNlbDxHVEVTVF9URVNUX0NMQVNTX05BTUVfKENhc2VOYW1lLCAgIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
c3ROYW1lKT4sIFwKKyAgICAgICAgICBHVEVTVF9UWVBFX1BBUkFNU18oICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgQ2FzZU5h
bWUpPjo6UmVnaXN0ZXIoIiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q29kZUxvY2F0aW9uKCAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXyksICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI0Nhc2VOYW1lLCAjVGVzdE5hbWUsIDAsICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6R2VuZXJhdGVOYW1lczwgICAgICAgIFwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX05BTUVfR0VORVJBVE9SXyhDYXNlTmFtZSks
ICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1RZ
UEVfUEFSQU1TXyhDYXNlTmFtZSk+KCkpOyAgICAgIFwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIGd0
ZXN0X1R5cGVQYXJhbV8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgdm9pZCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKENhc2VOYW1lLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
c3ROYW1lKTxndGVzdF9UeXBlUGFyYW1fPjo6VGVzdEJvZHkoKQogCiAjZW5kaWYgIC8vIEdURVNU
X0hBU19UWVBFRF9URVNUCiAKQEAgLTE5NiwzMSArMjM1LDMxIEBAIElOU1RBTlRJQVRFX1RZUEVE
X1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsKIC8vIEV4cGFuZHMgdG8gdGhlIG5h
bWVzcGFjZSBuYW1lIHRoYXQgdGhlIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyBmb3IKIC8vIHRo
ZSBnaXZlbiB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGFyZSBkZWZpbmVkIGluLiAgVGhl
IGV4YWN0CiAvLyBuYW1lIG9mIHRoZSBuYW1lc3BhY2UgaXMgc3ViamVjdCB0byBjaGFuZ2Ugd2l0
aG91dCBub3RpY2UuCi0jZGVmaW5lIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhUZXN0Q2FzZU5hbWUp
IFwKKyMgZGVmaW5lIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhUZXN0Q2FzZU5hbWUpIFwKICAgZ3Rl
c3RfY2FzZV8jI1Rlc3RDYXNlTmFtZSMjXwogCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAt
IERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgogLy8KIC8vIEV4cGFuZHMgdG8gdGhlIG5hbWUgb2Yg
dGhlIHZhcmlhYmxlIHVzZWQgdG8gcmVtZW1iZXIgdGhlIG5hbWVzIG9mCiAvLyB0aGUgZGVmaW5l
ZCB0ZXN0cyBpbiB0aGUgZ2l2ZW4gdGVzdCBjYXNlLgotI2RlZmluZSBHVEVTVF9UWVBFRF9URVNU
X0NBU0VfUF9TVEFURV8oVGVzdENhc2VOYW1lKSBcCisjIGRlZmluZSBHVEVTVF9UWVBFRF9URVNU
X0NBU0VfUF9TVEFURV8oVGVzdENhc2VOYW1lKSBcCiAgIGd0ZXN0X3R5cGVkX3Rlc3RfY2FzZV9w
X3N0YXRlXyMjVGVzdENhc2VOYW1lIyNfCiAKIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0g
RE8gTk9UIFVTRSBJTiBVU0VSIENPREUgRElSRUNUTFkuCiAvLwogLy8gRXhwYW5kcyB0byB0aGUg
bmFtZSBvZiB0aGUgdmFyaWFibGUgdXNlZCB0byByZW1lbWJlciB0aGUgbmFtZXMgb2YKIC8vIHRo
ZSByZWdpc3RlcmVkIHRlc3RzIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UuCi0jZGVmaW5lIEdURVNU
X1JFR0lTVEVSRURfVEVTVF9OQU1FU18oVGVzdENhc2VOYW1lKSBcCisjIGRlZmluZSBHVEVTVF9S
RUdJU1RFUkVEX1RFU1RfTkFNRVNfKFRlc3RDYXNlTmFtZSkgXAogICBndGVzdF9yZWdpc3RlcmVk
X3Rlc3RfbmFtZXNfIyNUZXN0Q2FzZU5hbWUjI18KIAogLy8gVGhlIHZhcmlhYmxlcyBkZWZpbmVk
IGluIHRoZSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBtYWNyb3MgYXJlCiAvLyBzdGF0aWMgYXMg
dHlwaWNhbGx5IHRoZXNlIG1hY3JvcyBhcmUgdXNlZCBpbiBhIC5oIGZpbGUgdGhhdCBjYW4gYmUK
IC8vICNpbmNsdWRlZCBpbiBtdWx0aXBsZSB0cmFuc2xhdGlvbiB1bml0cyBsaW5rZWQgdG9nZXRo
ZXIuCi0jZGVmaW5lIFRZUEVEX1RFU1RfQ0FTRV9QKENhc2VOYW1lKSBcCisjIGRlZmluZSBUWVBF
RF9URVNUX0NBU0VfUChDYXNlTmFtZSkgXAogICBzdGF0aWMgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
VHlwZWRUZXN0Q2FzZVBTdGF0ZSBcCiAgICAgICBHVEVTVF9UWVBFRF9URVNUX0NBU0VfUF9TVEFU
RV8oQ2FzZU5hbWUpCiAKLSNkZWZpbmUgVFlQRURfVEVTVF9QKENhc2VOYW1lLCBUZXN0TmFtZSkg
XAorIyBkZWZpbmUgVFlQRURfVEVTVF9QKENhc2VOYW1lLCBUZXN0TmFtZSkgXAogICBuYW1lc3Bh
Y2UgR1RFU1RfQ0FTRV9OQU1FU1BBQ0VfKENhc2VOYW1lKSB7IFwKICAgdGVtcGxhdGUgPHR5cGVu
YW1lIGd0ZXN0X1R5cGVQYXJhbV8+IFwKICAgY2xhc3MgVGVzdE5hbWUgOiBwdWJsaWMgQ2FzZU5h
bWU8Z3Rlc3RfVHlwZVBhcmFtXz4geyBcCkBAIC0yMjksMzAgKzI2OCwzOCBAQCBJTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcyk7CiAgICAgdHlwZWRlZiBn
dGVzdF9UeXBlUGFyYW1fIFR5cGVQYXJhbTsgXAogICAgIHZpcnR1YWwgdm9pZCBUZXN0Qm9keSgp
OyBcCiAgIH07IFwKLSAgc3RhdGljIGJvb2wgZ3Rlc3RfIyNUZXN0TmFtZSMjX2RlZmluZWRfID0g
XAorICBzdGF0aWMgYm9vbCBndGVzdF8jI1Rlc3ROYW1lIyNfZGVmaW5lZF8gR1RFU1RfQVRUUklC
VVRFX1VOVVNFRF8gPSBcCiAgICAgICBHVEVTVF9UWVBFRF9URVNUX0NBU0VfUF9TVEFURV8oQ2Fz
ZU5hbWUpLkFkZFRlc3ROYW1lKFwKICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sICNDYXNl
TmFtZSwgI1Rlc3ROYW1lKTsgXAogICB9IFwKICAgdGVtcGxhdGUgPHR5cGVuYW1lIGd0ZXN0X1R5
cGVQYXJhbV8+IFwKICAgdm9pZCBHVEVTVF9DQVNFX05BTUVTUEFDRV8oQ2FzZU5hbWUpOjpUZXN0
TmFtZTxndGVzdF9UeXBlUGFyYW1fPjo6VGVzdEJvZHkoKQogCi0jZGVmaW5lIFJFR0lTVEVSX1RZ
UEVEX1RFU1RfQ0FTRV9QKENhc2VOYW1lLCAuLi4pIFwKKyMgZGVmaW5lIFJFR0lTVEVSX1RZUEVE
X1RFU1RfQ0FTRV9QKENhc2VOYW1lLCAuLi4pIFwKICAgbmFtZXNwYWNlIEdURVNUX0NBU0VfTkFN
RVNQQUNFXyhDYXNlTmFtZSkgeyBcCiAgIHR5cGVkZWYgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVt
cGxhdGVzPF9fVkFfQVJHU19fPjo6dHlwZSBndGVzdF9BbGxUZXN0c187IFwKICAgfSBcCi0gIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBHVEVTVF9SRUdJU1RFUkVEX1RFU1RfTkFNRVNfKENhc2VO
YW1lKSA9IFwKLSAgICAgIEdURVNUX1RZUEVEX1RFU1RfQ0FTRV9QX1NUQVRFXyhDYXNlTmFtZSku
VmVyaWZ5UmVnaXN0ZXJlZFRlc3ROYW1lcyhcCi0gICAgICAgICAgX19GSUxFX18sIF9fTElORV9f
LCAjX19WQV9BUkdTX18pCisgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBHVEVTVF9SRUdJU1RF
UkVEX1RFU1RfTkFNRVNfKENhc2VOYW1lKSBcCisgICAgICBHVEVTVF9BVFRSSUJVVEVfVU5VU0VE
XyA9IFwKKyAgICAgICAgICBHVEVTVF9UWVBFRF9URVNUX0NBU0VfUF9TVEFURV8oQ2FzZU5hbWUp
LlZlcmlmeVJlZ2lzdGVyZWRUZXN0TmFtZXMoIFwKKyAgICAgICAgICAgICAgX19GSUxFX18sIF9f
TElORV9fLCAjX19WQV9BUkdTX18pCiAKIC8vIFRoZSAnVHlwZXMnIHRlbXBsYXRlIGFyZ3VtZW50
IGJlbG93IG11c3QgaGF2ZSBzcGFjZXMgYXJvdW5kIGl0CiAvLyBzaW5jZSBzb21lIGNvbXBpbGVy
cyBtYXkgY2hva2Ugb24gJz4+JyB3aGVuIHBhc3NpbmcgYSB0ZW1wbGF0ZQogLy8gaW5zdGFuY2Ug
KGUuZy4gVHlwZXM8aW50PikKLSNkZWZpbmUgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1Ao
UHJlZml4LCBDYXNlTmFtZSwgVHlwZXMpIFwKLSAgYm9vbCBndGVzdF8jI1ByZWZpeCMjXyMjQ2Fz
ZU5hbWUgPSBcCi0gICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpUeXBlUGFyYW1ldGVyaXplZFRl
c3RDYXNlPENhc2VOYW1lLCBcCi0gICAgICAgICAgR1RFU1RfQ0FTRV9OQU1FU1BBQ0VfKENhc2VO
YW1lKTo6Z3Rlc3RfQWxsVGVzdHNfLCBcCi0gICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
VHlwZUxpc3Q8IFR5cGVzID46OnR5cGU+OjpSZWdpc3RlcihcCi0gICAgICAgICAgICAgICNQcmVm
aXgsICNDYXNlTmFtZSwgR1RFU1RfUkVHSVNURVJFRF9URVNUX05BTUVTXyhDYXNlTmFtZSkpCisj
IGRlZmluZSBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChQcmVmaXgsIENhc2VOYW1lLCBU
eXBlcywgLi4uKSAgICAgIFwKKyAgc3RhdGljIGJvb2wgZ3Rlc3RfIyNQcmVmaXgjI18jI0Nhc2VO
YW1lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gICAgICAgXAorICAgICAgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6VHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTwgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgQ2FzZU5hbWUsIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhDYXNlTmFtZSk6Omd0
ZXN0X0FsbFRlc3RzXywgICAgIFwKKyAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpUeXBl
TGlzdDwgVHlwZXMgPjo6dHlwZT46OiAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIFJlZ2lz
dGVyKCNQcmVmaXgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9u
KF9fRklMRV9fLCBfX0xJTkVfXyksIFwKKyAgICAgICAgICAgICAgICAgICAmR1RFU1RfVFlQRURf
VEVTVF9DQVNFX1BfU1RBVEVfKENhc2VOYW1lKSwgI0Nhc2VOYW1lLCAgXAorICAgICAgICAgICAg
ICAgICAgIEdURVNUX1JFR0lTVEVSRURfVEVTVF9OQU1FU18oQ2FzZU5hbWUpLCAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6R2VuZXJhdGVO
YW1lczwgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6TmFtZUdlbmVyYXRvclNlbGVjdG9yPCAgICAgICAgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19WQV9BUkdTX18+Ojp0eXBlLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlR5
cGVMaXN0PCBUeXBlcyA+Ojp0eXBlPigpKQogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9U
RVNUX1AKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9ndGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC5o
CmluZGV4IDkyMWZhZDExZmNjOGYyNGMwZGQyMjM5NGE0ODY3YWIyNGI2ZWEwYzMuLjVkZjRiMGEz
YTcxMjc2OTA0NTVhOTQ1Y2IxNTI4YjZiZDc0NDliNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgKQEAgLTI2LDEwICsyNiw5IEBACiAvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKIC8vCi0vLyBBdXRob3I6
IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGhlIEdvb2dsZSBDKysgVGVz
dGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBh
bmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogLy8KIC8vIFRoaXMgaGVhZGVyIGZp
bGUgZGVmaW5lcyB0aGUgcHVibGljIEFQSSBmb3IgR29vZ2xlIFRlc3QuICBJdCBzaG91bGQgYmUK
IC8vIGluY2x1ZGVkIGJ5IGFueSB0ZXN0IHByb2dyYW0gdGhhdCB1c2VzIEdvb2dsZSBUZXN0LgpA
QCAtNDgsMzggKzQ3LDU0IEBACiAvLyByZWdpc3RyYXRpb24gZnJvbSBCYXJ0aGVsZW15IERhZ2Vu
YWlzJyAoYmFydGhlbGVteUBwcm9sb2dpcXVlLmNvbSkKIC8vIGVhc3lVbml0IGZyYW1ld29yay4K
IAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lO
Q0xVREVfR1RFU1RfR1RFU1RfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9I
XwogCiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPG9zdHJlYW0+CiAjaW5jbHVkZSA8dmVj
dG9yPgogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNs
dWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC1kZWF0aC10ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oPgotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdF9wcm9k
Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QtdHlwZWQtdGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVy
bmFsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgiCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LW1lc3Nh
Z2UuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgiCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QtcHJpbnRlcnMuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdF9wcm9kLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtdHlw
ZWQtdGVzdC5oIgorCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MjUxIFwKKy8q
IGNsYXNzIEEgbmVlZHMgdG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50
cyBvZiBjbGFzcyBCICovKQogCiAvLyBEZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLCBkaWZmZXJl
bnQgc3RyaW5nIGNsYXNzZXMgYXJlIGF2YWlsYWJsZS4KIC8vIE9uIExpbnV4LCBpbiBhZGRpdGlv
biB0byA6OnN0ZDo6c3RyaW5nLCBHb29nbGUgYWxzbyBtYWtlcyB1c2Ugb2YKIC8vIGNsYXNzIDo6
c3RyaW5nLCB3aGljaCBoYXMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIDo6c3RkOjpzdHJpbmcsIGJ1
dAogLy8gaGFzIGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uLgogLy8KLS8vIFRoZSB1c2VyIGNh
biBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgdG8gMSB0byBpbmRpY2F0ZSB0aGF0Cisv
LyBZb3UgY2FuIGRlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORyB0byAxIHRvIGluZGljYXRl
IHRoYXQKIC8vIDo6c3RyaW5nIGlzIGF2YWlsYWJsZSBBTkQgaXMgYSBkaXN0aW5jdCB0eXBlIHRv
IDo6c3RkOjpzdHJpbmcsIG9yCiAvLyBkZWZpbmUgaXQgdG8gMCB0byBpbmRpY2F0ZSBvdGhlcndp
c2UuCiAvLwotLy8gSWYgdGhlIHVzZXIncyA6OnN0ZDo6c3RyaW5nIGFuZCA6OnN0cmluZyBhcmUg
dGhlIHNhbWUgY2xhc3MgZHVlIHRvCi0vLyBhbGlhc2luZywgaGUgc2hvdWxkIGRlZmluZSBHVEVT
VF9IQVNfR0xPQkFMX1NUUklORyB0byAwLgorLy8gSWYgOjpzdGQ6OnN0cmluZyBhbmQgOjpzdHJp
bmcgYXJlIHRoZSBzYW1lIGNsYXNzIG9uIHlvdXIgcGxhdGZvcm0KKy8vIGR1ZSB0byBhbGlhc2lu
ZywgeW91IHNob3VsZCBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgdG8gMC4KIC8vCi0v
LyBJZiB0aGUgdXNlciBkb2Vzbid0IGRlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORywgaXQg
aXMgZGVmaW5lZAorLy8gSWYgeW91IGRvIG5vdCBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJ
TkcsIGl0IGlzIGRlZmluZWQKIC8vIGhldXJpc3RpY2FsbHkuCiAKIG5hbWVzcGFjZSB0ZXN0aW5n
IHsKIAorLy8gU2lsZW5jZSBDNDEwMCAodW5yZWZlcmVuY2VkIGZvcm1hbCBwYXJhbWV0ZXIpIGFu
ZCA0ODA1CisvLyB1bnNhZmUgbWl4IG9mIHR5cGUgJ2NvbnN0IGludCcgYW5kIHR5cGUgJ2NvbnN0
IGJvb2wnCisjaWZkZWYgX01TQ19WRVIKKyMgcHJhZ21hIHdhcm5pbmcocHVzaCkKKyMgcHJhZ21h
IHdhcm5pbmcoZGlzYWJsZTo0ODA1KQorIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDApCisj
ZW5kaWYKKworCiAvLyBEZWNsYXJlcyB0aGUgZmxhZ3MuCiAKIC8vIFRoaXMgZmxhZyB0ZW1wb3Jh
cnkgZW5hYmxlcyB0aGUgZGlzYWJsZWQgdGVzdHMuCkBAIC0xMDEsNiArMTE2LDEwIEBAIEdURVNU
X0RFQ0xBUkVfc3RyaW5nXyhjb2xvcik7CiAvLyB0aGUgdGVzdHMgdG8gcnVuLiBJZiB0aGUgZmls
dGVyIGlzIG5vdCBnaXZlbiBhbGwgdGVzdHMgYXJlIGV4ZWN1dGVkLgogR1RFU1RfREVDTEFSRV9z
dHJpbmdfKGZpbHRlcik7CiAKKy8vIFRoaXMgZmxhZyBjb250cm9scyB3aGV0aGVyIEdvb2dsZSBU
ZXN0IGluc3RhbGxzIGEgc2lnbmFsIGhhbmRsZXIgdGhhdCBkdW1wcworLy8gZGVidWdnaW5nIGlu
Zm9ybWF0aW9uIHdoZW4gZmF0YWwgc2lnbmFscyBhcmUgcmFpc2VkLgorR1RFU1RfREVDTEFSRV9i
b29sXyhpbnN0YWxsX2ZhaWx1cmVfc2lnbmFsX2hhbmRsZXIpOworCiAvLyBUaGlzIGZsYWcgY2F1
c2VzIHRoZSBHb29nbGUgVGVzdCB0byBsaXN0IHRlc3RzLiBOb25lIG9mIHRoZSB0ZXN0cyBsaXN0
ZWQKIC8vIGFyZSBhY3R1YWxseSBydW4gaWYgdGhlIGZsYWcgaXMgcHJvdmlkZWQuCiBHVEVTVF9E
RUNMQVJFX2Jvb2xfKGxpc3RfdGVzdHMpOwpAQCAtMTEzLDYgKzEzMiw5IEBAIEdURVNUX0RFQ0xB
UkVfc3RyaW5nXyhvdXRwdXQpOwogLy8gdGVzdC4KIEdURVNUX0RFQ0xBUkVfYm9vbF8ocHJpbnRf
dGltZSk7CiAKKy8vIFRoaXMgZmxhZ3MgY29udHJvbCB3aGV0aGVyIEdvb2dsZSBUZXN0IHByaW50
cyBVVEY4IGNoYXJhY3RlcnMgYXMgdGV4dC4KK0dURVNUX0RFQ0xBUkVfYm9vbF8ocHJpbnRfdXRm
OCk7CisKIC8vIFRoaXMgZmxhZyBzcGVjaWZpZXMgdGhlIHJhbmRvbSBudW1iZXIgc2VlZC4KIEdU
RVNUX0RFQ0xBUkVfaW50MzJfKHJhbmRvbV9zZWVkKTsKIApAQCAtMTMzLDkgKzE1NSwxOCBAQCBH
VEVTVF9ERUNMQVJFX2ludDMyXyhzdGFja190cmFjZV9kZXB0aCk7CiAKIC8vIFdoZW4gdGhpcyBm
bGFnIGlzIHNwZWNpZmllZCwgYSBmYWlsZWQgYXNzZXJ0aW9uIHdpbGwgdGhyb3cgYW4KIC8vIGV4
Y2VwdGlvbiBpZiBleGNlcHRpb25zIGFyZSBlbmFibGVkLCBvciBleGl0IHRoZSBwcm9ncmFtIHdp
dGggYQotLy8gbm9uLXplcm8gY29kZSBvdGhlcndpc2UuCisvLyBub24temVybyBjb2RlIG90aGVy
d2lzZS4gRm9yIHVzZSB3aXRoIGFuIGV4dGVybmFsIHRlc3QgZnJhbWV3b3JrLgogR1RFU1RfREVD
TEFSRV9ib29sXyh0aHJvd19vbl9mYWlsdXJlKTsKIAorLy8gV2hlbiB0aGlzIGZsYWcgaXMgc2V0
IHdpdGggYSAiaG9zdDpwb3J0IiBzdHJpbmcsIG9uIHN1cHBvcnRlZAorLy8gcGxhdGZvcm1zIHRl
c3QgcmVzdWx0cyBhcmUgc3RyZWFtZWQgdG8gdGhlIHNwZWNpZmllZCBwb3J0IG9uCisvLyB0aGUg
c3BlY2lmaWVkIGhvc3QgbWFjaGluZS4KK0dURVNUX0RFQ0xBUkVfc3RyaW5nXyhzdHJlYW1fcmVz
dWx0X3RvKTsKKworI2lmIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KK0dURVNUX0RFQ0xB
UkVfc3RyaW5nXyhmbGFnZmlsZSk7CisjZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVf
RkxBR18KKwogLy8gVGhlIHVwcGVyIGxpbWl0IGZvciB2YWxpZCBzdGFjayB0cmFjZSBkZXB0aHMu
CiBjb25zdCBpbnQga01heFN0YWNrVHJhY2VEZXB0aCA9IDEwMDsKIApAQCAtMTQ3LDMxICsxNzgs
MjcgQEAgY2xhc3MgRXhlY0RlYXRoVGVzdDsKIGNsYXNzIE5vRXhlY0RlYXRoVGVzdDsKIGNsYXNz
IEZpbmFsU3VjY2Vzc0NoZWNrZXI7CiBjbGFzcyBHVGVzdEZsYWdTYXZlcjsKLWNsYXNzIFRlc3RJ
bmZvSW1wbDsKK2NsYXNzIFN0cmVhbWluZ0xpc3RlbmVyVGVzdDsKIGNsYXNzIFRlc3RSZXN1bHRB
Y2Nlc3NvcjsKIGNsYXNzIFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOwogY2xhc3MgVGVzdEV2
ZW50UmVwZWF0ZXI7CitjbGFzcyBVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdEhlbHBlcjsKIGNs
YXNzIFdpbmRvd3NEZWF0aFRlc3Q7CitjbGFzcyBGdWNoc2lhRGVhdGhUZXN0OwogY2xhc3MgVW5p
dFRlc3RJbXBsKiBHZXRVbml0VGVzdEltcGwoKTsKIHZvaWQgUmVwb3J0RmFpbHVyZUluVW5rbm93
bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLWNsYXNzIFBy
ZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjsKLWNsYXNzIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRl
cjsKLQotLy8gQ29udmVydHMgYSBzdHJlYW1hYmxlIHZhbHVlIHRvIGEgU3RyaW5nLiAgQSBOVUxM
IHBvaW50ZXIgaXMKLS8vIGNvbnZlcnRlZCB0byAiKG51bGwpIi4gIFdoZW4gdGhlIGlucHV0IHZh
bHVlIGlzIGEgOjpzdHJpbmcsCi0vLyA6OnN0ZDo6c3RyaW5nLCA6OndzdHJpbmcsIG9yIDo6c3Rk
Ojp3c3RyaW5nIG9iamVjdCwgZWFjaCBOVUwKLS8vIGNoYXJhY3RlciBpbiBpdCBpcyByZXBsYWNl
ZCB3aXRoICJcXDAiLgotLy8gRGVjbGFyZWQgaW4gZ3Rlc3QtaW50ZXJuYWwuaCBidXQgZGVmaW5l
ZCBoZXJlLCBzbyB0aGF0IGl0IGhhcyBhY2Nlc3MKLS8vIHRvIHRoZSBkZWZpbml0aW9uIG9mIHRo
ZSBNZXNzYWdlIGNsYXNzLCByZXF1aXJlZCBieSB0aGUgQVJNCi0vLyBjb21waWxlci4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotU3RyaW5nIFN0cmVhbWFibGVUb1N0cmluZyhjb25zdCBUJiBzdHJl
YW1hYmxlKSB7Ci0gIHJldHVybiAoTWVzc2FnZSgpIDw8IHN0cmVhbWFibGUpLkdldFN0cmluZygp
OwotfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIG1lc3NhZ2UpOwogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAorLy8gVGhlIGZyaWVu
ZCByZWxhdGlvbnNoaXAgb2Ygc29tZSBvZiB0aGVzZSBjbGFzc2VzIGlzIGN5Y2xpYy4KKy8vIElm
IHdlIGRvbid0IGZvcndhcmQgZGVjbGFyZSB0aGVtIHRoZSBjb21waWxlciBtaWdodCBjb25mdXNl
IHRoZSBjbGFzc2VzCisvLyBpbiBmcmllbmRzaGlwIGNsYXVzZXMgd2l0aCBzYW1lIG5hbWVkIGNs
YXNzZXMgb24gdGhlIHNjb3BlLgorY2xhc3MgVGVzdDsKK2NsYXNzIFRlc3RDYXNlOworY2xhc3Mg
VGVzdEluZm87CitjbGFzcyBVbml0VGVzdDsKKwogLy8gQSBjbGFzcyBmb3IgaW5kaWNhdGluZyB3
aGV0aGVyIGFuIGFzc2VydGlvbiB3YXMgc3VjY2Vzc2Z1bC4gIFdoZW4KIC8vIHRoZSBhc3NlcnRp
b24gd2Fzbid0IHN1Y2Nlc3NmdWwsIHRoZSBBc3NlcnRpb25SZXN1bHQgb2JqZWN0CiAvLyByZW1l
bWJlcnMgYSBub24tZW1wdHkgbWVzc2FnZSB0aGF0IGRlc2NyaWJlcyBob3cgaXQgZmFpbGVkLgpA
QCAtMjU2LDggKzI4MywzNSBAQCBjbGFzcyBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCB7CiAg
IC8vIENvcHkgY29uc3RydWN0b3IuCiAgIC8vIFVzZWQgaW4gRVhQRUNUX1RSVUUvRkFMU0UoYXNz
ZXJ0aW9uX3Jlc3VsdCkuCiAgIEFzc2VydGlvblJlc3VsdChjb25zdCBBc3NlcnRpb25SZXN1bHQm
IG90aGVyKTsKKworI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSIDwgMTkxMAorICBH
VEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0ODAwIC8qIGZvcmNpbmcgdmFsdWUgdG8g
Ym9vbCAqLykKKyNlbmRpZgorCiAgIC8vIFVzZWQgaW4gdGhlIEVYUEVDVF9UUlVFL0ZBTFNFKGJv
b2xfZXhwcmVzc2lvbikuCi0gIGV4cGxpY2l0IEFzc2VydGlvblJlc3VsdChib29sIHN1Y2Nlc3Mp
IDogc3VjY2Vzc18oc3VjY2Vzcykge30KKyAgLy8KKyAgLy8gVCBtdXN0IGJlIGNvbnRleHR1YWxs
eSBjb252ZXJ0aWJsZSB0byBib29sLgorICAvLworICAvLyBUaGUgc2Vjb25kIHBhcmFtZXRlciBw
cmV2ZW50cyB0aGlzIG92ZXJsb2FkIGZyb20gYmVpbmcgY29uc2lkZXJlZCBpZgorICAvLyB0aGUg
YXJndW1lbnQgaXMgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0byBBc3NlcnRpb25SZXN1bHQuIElu
IHRoYXQgY2FzZQorICAvLyB3ZSB3YW50IEFzc2VydGlvblJlc3VsdCdzIGNvcHkgY29uc3RydWN0
b3IgdG8gYmUgdXNlZC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIGV4cGxpY2l0IEFzc2Vy
dGlvblJlc3VsdCgKKyAgICAgIGNvbnN0IFQmIHN1Y2Nlc3MsCisgICAgICB0eXBlbmFtZSBpbnRl
cm5hbDo6RW5hYmxlSWY8CisgICAgICAgICAgIWludGVybmFsOjpJbXBsaWNpdGx5Q29udmVydGli
bGU8VCwgQXNzZXJ0aW9uUmVzdWx0Pjo6dmFsdWU+Ojp0eXBlKgorICAgICAgICAgIC8qZW5hYmxl
ciovID0gTlVMTCkKKyAgICAgIDogc3VjY2Vzc18oc3VjY2Vzcykge30KKworI2lmIGRlZmluZWQo
X01TQ19WRVIpICYmIF9NU0NfVkVSIDwgMTkxMAorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5H
U19QT1BfKCkKKyNlbmRpZgorCisgIC8vIEFzc2lnbm1lbnQgb3BlcmF0b3IuCisgIEFzc2VydGlv
blJlc3VsdCYgb3BlcmF0b3I9KEFzc2VydGlvblJlc3VsdCBvdGhlcikgeworICAgIHN3YXAob3Ro
ZXIpOworICAgIHJldHVybiAqdGhpczsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhl
IGFzc2VydGlvbiBzdWNjZWVkZWQuCiAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBz
dWNjZXNzXzsgfSAgLy8gTk9MSU5UCkBAIC0yNzAsMjAgKzMyNCwzNiBAQCBjbGFzcyBHVEVTVF9B
UElfIEFzc2VydGlvblJlc3VsdCB7CiAgIC8vIGFzc2VydGlvbidzIGV4cGVjdGF0aW9uKS4gV2hl
biBub3RoaW5nIGhhcyBiZWVuIHN0cmVhbWVkIGludG8gdGhlCiAgIC8vIG9iamVjdCwgcmV0dXJu
cyBhbiBlbXB0eSBzdHJpbmcuCiAgIGNvbnN0IGNoYXIqIG1lc3NhZ2UoKSBjb25zdCB7Ci0gICAg
cmV0dXJuIG1lc3NhZ2VfLmdldCgpICE9IE5VTEwgJiYgbWVzc2FnZV8tPmNfc3RyKCkgIT0gTlVM
TCA/Ci0gICAgICAgICAgIG1lc3NhZ2VfLT5jX3N0cigpIDogIiI7CisgICAgcmV0dXJuIG1lc3Nh
Z2VfLmdldCgpICE9IE5VTEwgPyAgbWVzc2FnZV8tPmNfc3RyKCkgOiAiIjsKICAgfQotICAvLyBU
T0RPKHZsYWRsQGdvb2dsZS5jb20pOiBSZW1vdmUgdGhpcyBhZnRlciBtYWtpbmcgc3VyZSBubyBj
bGllbnRzIHVzZSBpdC4KKyAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGFmdGVyIG1ha2luZyBzdXJl
IG5vIGNsaWVudHMgdXNlIGl0LgogICAvLyBEZXByZWNhdGVkOyBwbGVhc2UgdXNlIG1lc3NhZ2Uo
KSBpbnN0ZWFkLgogICBjb25zdCBjaGFyKiBmYWlsdXJlX21lc3NhZ2UoKSBjb25zdCB7IHJldHVy
biBtZXNzYWdlKCk7IH0KIAogICAvLyBTdHJlYW1zIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSBp
bnRvIHRoaXMgb2JqZWN0LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gQXNzZXJ0aW9uUmVzdWx0
JiBvcGVyYXRvcjw8KGNvbnN0IFQmIHZhbHVlKTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IEFz
c2VydGlvblJlc3VsdCYgb3BlcmF0b3I8PChjb25zdCBUJiB2YWx1ZSkgeworICAgIEFwcGVuZE1l
c3NhZ2UoTWVzc2FnZSgpIDw8IHZhbHVlKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICAv
LyBBbGxvd3Mgc3RyZWFtaW5nIGJhc2ljIG91dHB1dCBtYW5pcHVsYXRvcnMgc3VjaCBhcyBlbmRs
IG9yIGZsdXNoIGludG8KKyAgLy8gdGhpcyBvYmplY3QuCisgIEFzc2VydGlvblJlc3VsdCYgb3Bl
cmF0b3I8PCgKKyAgICAgIDo6c3RkOjpvc3RyZWFtJiAoKmJhc2ljX21hbmlwdWxhdG9yKSg6OnN0
ZDo6b3N0cmVhbSYgc3RyZWFtKSkgeworICAgIEFwcGVuZE1lc3NhZ2UoTWVzc2FnZSgpIDw8IGJh
c2ljX21hbmlwdWxhdG9yKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KIAogIHByaXZhdGU6Ci0g
IC8vIE5vIGltcGxlbWVudGF0aW9uIC0gd2Ugd2FudCBBc3NlcnRpb25SZXN1bHQgdG8gYmUKLSAg
Ly8gY29weS1jb25zdHJ1Y3RpYmxlIGJ1dCBub3QgYXNzaWduYWJsZS4KLSAgdm9pZCBvcGVyYXRv
cj0oY29uc3QgQXNzZXJ0aW9uUmVzdWx0JiBvdGhlcik7CisgIC8vIEFwcGVuZHMgdGhlIGNvbnRl
bnRzIG9mIG1lc3NhZ2UgdG8gbWVzc2FnZV8uCisgIHZvaWQgQXBwZW5kTWVzc2FnZShjb25zdCBN
ZXNzYWdlJiBhX21lc3NhZ2UpIHsKKyAgICBpZiAobWVzc2FnZV8uZ2V0KCkgPT0gTlVMTCkKKyAg
ICAgIG1lc3NhZ2VfLnJlc2V0KG5ldyA6OnN0ZDo6c3RyaW5nKTsKKyAgICBtZXNzYWdlXy0+YXBw
ZW5kKGFfbWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0cigpKTsKKyAgfQorCisgIC8vIFN3YXAgdGhl
IGNvbnRlbnRzIG9mIHRoaXMgQXNzZXJ0aW9uUmVzdWx0IHdpdGggb3RoZXIuCisgIHZvaWQgc3dh
cChBc3NlcnRpb25SZXN1bHQmIG90aGVyKTsKIAogICAvLyBTdG9yZXMgcmVzdWx0IG9mIHRoZSBh
c3NlcnRpb24gcHJlZGljYXRlLgogICBib29sIHN1Y2Nlc3NfOwpAQCAtMjkxLDE5ICszNjEsOCBA
QCBjbGFzcyBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCB7CiAgIC8vIGNvbnN0cnVjdCBpcyBu
b3Qgc2F0aXNmaWVkIHdpdGggdGhlIHByZWRpY2F0ZSdzIG91dGNvbWUuCiAgIC8vIFJlZmVyZW5j
ZWQgdmlhIGEgcG9pbnRlciB0byBhdm9pZCB0YWtpbmcgdG9vIG11Y2ggc3RhY2sgZnJhbWUgc3Bh
Y2UKICAgLy8gd2l0aCB0ZXN0IGFzc2VydGlvbnMuCi0gIGludGVybmFsOjpzY29wZWRfcHRyPGlu
dGVybmFsOjpTdHJpbmc+IG1lc3NhZ2VfOwotfTsgIC8vIGNsYXNzIEFzc2VydGlvblJlc3VsdAot
Ci0vLyBTdHJlYW1zIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSBpbnRvIHRoaXMgb2JqZWN0Lgot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1Bc3NlcnRpb25SZXN1bHQmIEFzc2VydGlvblJlc3VsdDo6
b3BlcmF0b3I8PChjb25zdCBUJiB2YWx1ZSkgewotICBNZXNzYWdlIG1zZzsKLSAgaWYgKG1lc3Nh
Z2VfLmdldCgpICE9IE5VTEwpCi0gICAgbXNnIDw8ICptZXNzYWdlXzsKLSAgbXNnIDw8IHZhbHVl
OwotICBtZXNzYWdlXy5yZXNldChuZXcgaW50ZXJuYWw6OlN0cmluZyhtc2cuR2V0U3RyaW5nKCkp
KTsKLSAgcmV0dXJuICp0aGlzOwotfQorICBpbnRlcm5hbDo6c2NvcGVkX3B0cjwgOjpzdGQ6OnN0
cmluZz4gbWVzc2FnZV87Cit9OwogCiAvLyBNYWtlcyBhIHN1Y2Nlc3NmdWwgYXNzZXJ0aW9uIHJl
c3VsdC4KIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvblN1Y2Nlc3MoKTsKQEAg
LTMxNSw2ICszNzQsMTUgQEAgR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uRmFp
bHVyZSgpOwogLy8gRGVwcmVjYXRlZDsgdXNlIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBtc2cuCiBH
VEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKGNvbnN0IE1lc3NhZ2Um
IG1zZyk7CiAKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKy8vIEluY2x1ZGVzIHRoZSBhdXRv
LWdlbmVyYXRlZCBoZWFkZXIgdGhhdCBpbXBsZW1lbnRzIGEgZmFtaWx5IG9mIGdlbmVyaWMKKy8v
IHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9zLiBUaGlzIGluY2x1ZGUgY29tZXMgbGF0ZSBiZWNh
dXNlIGl0IHJlbGllcyBvbgorLy8gQVBJcyBkZWNsYXJlZCBhYm92ZS4KKyNpbmNsdWRlICJndGVz
dC9ndGVzdF9wcmVkX2ltcGwuaCIKKworbmFtZXNwYWNlIHRlc3RpbmcgeworCiAvLyBUaGUgYWJz
dHJhY3QgY2xhc3MgdGhhdCBhbGwgdGVzdHMgaW5oZXJpdCBmcm9tLgogLy8KIC8vIEluIEdvb2ds
ZSBUZXN0LCBhIHVuaXQgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIG9uZSBvciBtYW55IFRlc3RDYXNl
cywgYW5kCkBAIC0zMjUsMTIgKzM5MywxMiBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBB
c3NlcnRpb25GYWlsdXJlKGNvbnN0IE1lc3NhZ2UmIG1zZyk7CiAvLyB0aGlzIGZvciB5b3UuCiAv
LwogLy8gVGhlIG9ubHkgdGltZSB5b3UgZGVyaXZlIGZyb20gVGVzdCBpcyB3aGVuIGRlZmluaW5n
IGEgdGVzdCBmaXh0dXJlCi0vLyB0byBiZSB1c2VkIGEgVEVTVF9GLiAgRm9yIGV4YW1wbGU6Cisv
LyB0byBiZSB1c2VkIGluIGEgVEVTVF9GLiAgRm9yIGV4YW1wbGU6CiAvLwogLy8gICBjbGFzcyBG
b29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogLy8gICAgcHJvdGVjdGVkOgotLy8gICAg
IHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsgLi4uIH0KLS8vICAgICB2aXJ0dWFsIHZvaWQgVGVhckRv
d24oKSB7IC4uLiB9CisvLyAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIHsgLi4uIH0KKy8vICAg
ICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUgeyAuLi4gfQogLy8gICAgIC4uLgogLy8gICB9Owog
Ly8KQEAgLTM0MCw3ICs0MDgsNyBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBBc3NlcnRp
b25GYWlsdXJlKGNvbnN0IE1lc3NhZ2UmIG1zZyk7CiAvLyBUZXN0IGlzIG5vdCBjb3B5YWJsZS4K
IGNsYXNzIEdURVNUX0FQSV8gVGVzdCB7CiAgcHVibGljOgotICBmcmllbmQgY2xhc3MgaW50ZXJu
YWw6OlRlc3RJbmZvSW1wbDsKKyAgZnJpZW5kIGNsYXNzIFRlc3RJbmZvOwogCiAgIC8vIERlZmlu
ZXMgdHlwZXMgZm9yIHBvaW50ZXJzIHRvIGZ1bmN0aW9ucyB0aGF0IHNldCB1cCBhbmQgdGVhciBk
b3duCiAgIC8vIGEgdGVzdCBjYXNlLgpAQCAtMzc2LDIwICs0NDQsMjEgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBUZXN0IHsKICAgLy8gbm9uLWZhdGFsKSBmYWlsdXJlLgogICBzdGF0aWMgYm9vbCBIYXNG
YWlsdXJlKCkgeyByZXR1cm4gSGFzRmF0YWxGYWlsdXJlKCkgfHwgSGFzTm9uZmF0YWxGYWlsdXJl
KCk7IH0KIAotICAvLyBMb2dzIGEgcHJvcGVydHkgZm9yIHRoZSBjdXJyZW50IHRlc3QuICBPbmx5
IHRoZSBsYXN0IHZhbHVlIGZvciBhIGdpdmVuCi0gIC8vIGtleSBpcyByZW1lbWJlcmVkLgotICAv
LyBUaGVzZSBhcmUgcHVibGljIHN0YXRpYyBzbyB0aGV5IGNhbiBiZSBjYWxsZWQgZnJvbSB1dGls
aXR5IGZ1bmN0aW9ucwotICAvLyB0aGF0IGFyZSBub3QgbWVtYmVycyBvZiB0aGUgdGVzdCBmaXh0
dXJlLgotICAvLyBUaGUgYXJndW1lbnRzIGFyZSBjb25zdCBjaGFyKiBpbnN0ZWFkIHN0cmluZ3Ms
IGFzIEdvb2dsZSBUZXN0IGlzIHVzZWQKLSAgLy8gb24gcGxhdGZvcm1zIHdoZXJlIHN0cmluZyBk
b2Vzbid0IGNvbXBpbGUuCi0gIC8vCi0gIC8vIE5vdGUgdGhhdCBhIGRyaXZpbmcgY29uc2lkZXJh
dGlvbiBmb3IgdGhlc2UgUmVjb3JkUHJvcGVydHkgbWV0aG9kcwotICAvLyB3YXMgdG8gcHJvZHVj
ZSB4bWwgb3V0cHV0IHN1aXRlZCB0byB0aGUgR3JlZW5zcGFuIGNoYXJ0aW5nIHV0aWxpdHksCi0g
IC8vIHdoaWNoIGF0IHByZXNlbnQgd2lsbCBvbmx5IGNoYXJ0IHZhbHVlcyB0aGF0IGZpdCBpbiBh
IDMyLWJpdCBpbnQuIEl0Ci0gIC8vIGlzIHRoZSB1c2VyJ3MgcmVzcG9uc2liaWxpdHkgdG8gcmVz
dHJpY3QgdGhlaXIgdmFsdWVzIHRvIDMyLWJpdCBpbnRzCi0gIC8vIGlmIHRoZXkgaW50ZW5kIHRo
ZW0gdG8gYmUgdXNlZCB3aXRoIEdyZWVuc3Bhbi4KLSAgc3RhdGljIHZvaWQgUmVjb3JkUHJvcGVy
dHkoY29uc3QgY2hhcioga2V5LCBjb25zdCBjaGFyKiB2YWx1ZSk7Ci0gIHN0YXRpYyB2b2lkIFJl
Y29yZFByb3BlcnR5KGNvbnN0IGNoYXIqIGtleSwgaW50IHZhbHVlKTsKKyAgLy8gTG9ncyBhIHBy
b3BlcnR5IGZvciB0aGUgY3VycmVudCB0ZXN0LCB0ZXN0IGNhc2UsIG9yIGZvciB0aGUgZW50aXJl
CisgIC8vIGludm9jYXRpb24gb2YgdGhlIHRlc3QgcHJvZ3JhbSB3aGVuIHVzZWQgb3V0c2lkZSBv
ZiB0aGUgY29udGV4dCBvZiBhCisgIC8vIHRlc3QgY2FzZS4gIE9ubHkgdGhlIGxhc3QgdmFsdWUg
Zm9yIGEgZ2l2ZW4ga2V5IGlzIHJlbWVtYmVyZWQuICBUaGVzZQorICAvLyBhcmUgcHVibGljIHN0
YXRpYyBzbyB0aGV5IGNhbiBiZSBjYWxsZWQgZnJvbSB1dGlsaXR5IGZ1bmN0aW9ucyB0aGF0IGFy
ZQorICAvLyBub3QgbWVtYmVycyBvZiB0aGUgdGVzdCBmaXh0dXJlLiAgQ2FsbHMgdG8gUmVjb3Jk
UHJvcGVydHkgbWFkZSBkdXJpbmcKKyAgLy8gbGlmZXNwYW4gb2YgdGhlIHRlc3QgKGZyb20gdGhl
IG1vbWVudCBpdHMgY29uc3RydWN0b3Igc3RhcnRzIHRvIHRoZQorICAvLyBtb21lbnQgaXRzIGRl
c3RydWN0b3IgZmluaXNoZXMpIHdpbGwgYmUgb3V0cHV0IGluIFhNTCBhcyBhdHRyaWJ1dGVzIG9m
CisgIC8vIHRoZSA8dGVzdGNhc2U+IGVsZW1lbnQuICBQcm9wZXJ0aWVzIHJlY29yZGVkIGZyb20g
Zml4dHVyZSdzCisgIC8vIFNldFVwVGVzdENhc2Ugb3IgVGVhckRvd25UZXN0Q2FzZSBhcmUgbG9n
Z2VkIGFzIGF0dHJpYnV0ZXMgb2YgdGhlCisgIC8vIGNvcnJlc3BvbmRpbmcgPHRlc3RzdWl0ZT4g
ZWxlbWVudC4gIENhbGxzIHRvIFJlY29yZFByb3BlcnR5IG1hZGUgaW4gdGhlCisgIC8vIGdsb2Jh
bCBjb250ZXh0IChiZWZvcmUgb3IgYWZ0ZXIgaW52b2NhdGlvbiBvZiBSVU5fQUxMX1RFU1RTIGFu
ZCBmcm9tCisgIC8vIFNldFVwL1RlYXJEb3duIG1ldGhvZCBvZiBFbnZpcm9ubWVudCBvYmplY3Rz
IHJlZ2lzdGVyZWQgd2l0aCBHb29nbGUKKyAgLy8gVGVzdCkgd2lsbCBiZSBvdXRwdXQgYXMgYXR0
cmlidXRlcyBvZiB0aGUgPHRlc3RzdWl0ZXM+IGVsZW1lbnQuCisgIHN0YXRpYyB2b2lkIFJlY29y
ZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1
ZSk7CisgIHN0YXRpYyB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXks
IGludCB2YWx1ZSk7CiAKICBwcm90ZWN0ZWQ6CiAgIC8vIENyZWF0ZXMgYSBUZXN0IG9iamVjdC4K
QEAgLTQxNywyMCArNDg2LDIzIEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdCB7CiAgIC8vIFNldHMg
dXAsIGV4ZWN1dGVzLCBhbmQgdGVhcnMgZG93biB0aGUgdGVzdC4KICAgdm9pZCBSdW4oKTsKIAot
ICAvLyBVc2VzIGEgR1Rlc3RGbGFnU2F2ZXIgdG8gc2F2ZSBhbmQgcmVzdG9yZSBhbGwgR29vZ2xl
IFRlc3QgZmxhZ3MuCi0gIGNvbnN0IGludGVybmFsOjpHVGVzdEZsYWdTYXZlciogY29uc3QgZ3Rl
c3RfZmxhZ19zYXZlcl87CisgIC8vIERlbGV0ZXMgc2VsZi4gIFdlIGRlbGliZXJhdGVseSBwaWNr
IGFuIHVudXN1YWwgbmFtZSBmb3IgdGhpcworICAvLyBpbnRlcm5hbCBtZXRob2QgdG8gYXZvaWQg
Y2xhc2hpbmcgd2l0aCBuYW1lcyB1c2VkIGluIHVzZXIgVEVTVHMuCisgIHZvaWQgRGVsZXRlU2Vs
Zl8oKSB7IGRlbGV0ZSB0aGlzOyB9CisKKyAgY29uc3QgaW50ZXJuYWw6OnNjb3BlZF9wdHI8IEdU
RVNUX0ZMQUdfU0FWRVJfID4gZ3Rlc3RfZmxhZ19zYXZlcl87CiAKLSAgLy8gT2Z0ZW4gYSB1c2Vy
IG1pcy1zcGVsbHMgU2V0VXAoKSBhcyBTZXR1cCgpIGFuZCBzcGVuZHMgYSBsb25nIHRpbWUKKyAg
Ly8gT2Z0ZW4gYSB1c2VyIG1pc3NwZWxscyBTZXRVcCgpIGFzIFNldHVwKCkgYW5kIHNwZW5kcyBh
IGxvbmcgdGltZQogICAvLyB3b25kZXJpbmcgd2h5IGl0IGlzIG5ldmVyIGNhbGxlZCBieSBHb29n
bGUgVGVzdC4gIFRoZSBkZWNsYXJhdGlvbiBvZgogICAvLyB0aGUgZm9sbG93aW5nIG1ldGhvZCBp
cyBzb2xlbHkgZm9yIGNhdGNoaW5nIHN1Y2ggYW4gZXJyb3IgYXQKICAgLy8gY29tcGlsZSB0aW1l
OgogICAvLwogICAvLyAgIC0gVGhlIHJldHVybiB0eXBlIGlzIGRlbGliZXJhdGVseSBjaG9zZW4g
dG8gYmUgbm90IHZvaWQsIHNvIGl0Ci0gIC8vICAgd2lsbCBiZSBhIGNvbmZsaWN0IGlmIGEgdXNl
ciBkZWNsYXJlcyB2b2lkIFNldHVwKCkgaW4gaGlzIHRlc3QKLSAgLy8gICBmaXh0dXJlLgorICAv
LyAgIHdpbGwgYmUgYSBjb25mbGljdCBpZiB2b2lkIFNldHVwKCkgaXMgZGVjbGFyZWQgaW4gdGhl
IHVzZXIncworICAvLyAgIHRlc3QgZml4dHVyZS4KICAgLy8KICAgLy8gICAtIFRoaXMgbWV0aG9k
IGlzIHByaXZhdGUsIHNvIGl0IHdpbGwgYmUgYW5vdGhlciBjb21waWxlciBlcnJvcgotICAvLyAg
IGlmIGEgdXNlciBjYWxscyBpdCBmcm9tIGhpcyB0ZXN0IGZpeHR1cmUuCisgIC8vICAgaWYgdGhl
IG1ldGhvZCBpcyBjYWxsZWQgZnJvbSB0aGUgdXNlcidzIHRlc3QgZml4dHVyZS4KICAgLy8KICAg
Ly8gRE8gTk9UIE9WRVJSSURFIFRISVMgRlVOQ1RJT04uCiAgIC8vCkBAIC00NTQsNyArNTI2LDcg
QEAgY2xhc3MgVGVzdFByb3BlcnR5IHsKICAgLy8gQyd0b3IuICBUZXN0UHJvcGVydHkgZG9lcyBO
T1QgaGF2ZSBhIGRlZmF1bHQgY29uc3RydWN0b3IuCiAgIC8vIEFsd2F5cyB1c2UgdGhpcyBjb25z
dHJ1Y3RvciAod2l0aCBwYXJhbWV0ZXJzKSB0byBjcmVhdGUgYQogICAvLyBUZXN0UHJvcGVydHkg
b2JqZWN0LgotICBUZXN0UHJvcGVydHkoY29uc3QgY2hhciogYV9rZXksIGNvbnN0IGNoYXIqIGFf
dmFsdWUpIDoKKyAgVGVzdFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBhX2tleSwgY29uc3Qg
c3RkOjpzdHJpbmcmIGFfdmFsdWUpIDoKICAgICBrZXlfKGFfa2V5KSwgdmFsdWVfKGFfdmFsdWUp
IHsKICAgfQogCkBAIC00NjksMTUgKzU0MSwxNSBAQCBjbGFzcyBUZXN0UHJvcGVydHkgewogICB9
CiAKICAgLy8gU2V0cyBhIG5ldyB2YWx1ZSwgb3ZlcnJpZGluZyB0aGUgb25lIHN1cHBsaWVkIGlu
IHRoZSBjb25zdHJ1Y3Rvci4KLSAgdm9pZCBTZXRWYWx1ZShjb25zdCBjaGFyKiBuZXdfdmFsdWUp
IHsKKyAgdm9pZCBTZXRWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYgbmV3X3ZhbHVlKSB7CiAgICAg
dmFsdWVfID0gbmV3X3ZhbHVlOwogICB9CiAKICBwcml2YXRlOgogICAvLyBUaGUga2V5IHN1cHBs
aWVkIGJ5IHRoZSB1c2VyLgotICBpbnRlcm5hbDo6U3RyaW5nIGtleV87CisgIHN0ZDo6c3RyaW5n
IGtleV87CiAgIC8vIFRoZSB2YWx1ZSBzdXBwbGllZCBieSB0aGUgdXNlci4KLSAgaW50ZXJuYWw6
OlN0cmluZyB2YWx1ZV87CisgIHN0ZDo6c3RyaW5nIHZhbHVlXzsKIH07CiAKIC8vIFRoZSByZXN1
bHQgb2YgYSBzaW5nbGUgVGVzdC4gIFRoaXMgaW5jbHVkZXMgYSBsaXN0IG9mCkBAIC01MTYsOSAr
NTg4LDggQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0UmVzdWx0IHsKICAgLy8gUmV0dXJucyB0aGUg
ZWxhcHNlZCB0aW1lLCBpbiBtaWxsaXNlY29uZHMuCiAgIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3Rp
bWUoKSBjb25zdCB7IHJldHVybiBlbGFwc2VkX3RpbWVfOyB9CiAKLSAgLy8gUmV0dXJucyB0aGUg
aS10aCB0ZXN0IHBhcnQgcmVzdWx0IGFtb25nIGFsbCB0aGUgcmVzdWx0cy4gaSBjYW4gcmFuZ2UK
LSAgLy8gZnJvbSAwIHRvIHRlc3RfcHJvcGVydHlfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGlu
IHRoYXQgcmFuZ2UsIGFib3J0cwotICAvLyB0aGUgcHJvZ3JhbS4KKyAgLy8gUmV0dXJucyB0aGUg
aS10aCB0ZXN0IHBhcnQgcmVzdWx0IGFtb25nIGFsbCB0aGUgcmVzdWx0cy4gaSBjYW4gcmFuZ2Ug
ZnJvbSAwCisgIC8vIHRvIHRvdGFsX3BhcnRfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRo
YXQgcmFuZ2UsIGFib3J0cyB0aGUgcHJvZ3JhbS4KICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIEdl
dFRlc3RQYXJ0UmVzdWx0KGludCBpKSBjb25zdDsKIAogICAvLyBSZXR1cm5zIHRoZSBpLXRoIHRl
c3QgcHJvcGVydHkuIGkgY2FuIHJhbmdlIGZyb20gMCB0bwpAQCAtNTI4LDEzICs1OTksMTQgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBUZXN0UmVzdWx0IHsKIAogIHByaXZhdGU6CiAgIGZyaWVuZCBjbGFz
cyBUZXN0SW5mbzsKKyAgZnJpZW5kIGNsYXNzIFRlc3RDYXNlOwogICBmcmllbmQgY2xhc3MgVW5p
dFRlc3Q7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6RGVmYXVsdEdsb2JhbFRlc3RQYXJ0UmVz
dWx0UmVwb3J0ZXI7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6RXhlY0RlYXRoVGVzdDsKLSAg
ZnJpZW5kIGNsYXNzIGludGVybmFsOjpUZXN0SW5mb0ltcGw7CiAgIGZyaWVuZCBjbGFzcyBpbnRl
cm5hbDo6VGVzdFJlc3VsdEFjY2Vzc29yOwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlVuaXRU
ZXN0SW1wbDsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpXaW5kb3dzRGVhdGhUZXN0OworICBm
cmllbmQgY2xhc3MgaW50ZXJuYWw6OkZ1Y2hzaWFEZWF0aFRlc3Q7CiAKICAgLy8gR2V0cyB0aGUg
dmVjdG9yIG9mIFRlc3RQYXJ0UmVzdWx0cy4KICAgY29uc3Qgc3RkOjp2ZWN0b3I8VGVzdFBhcnRS
ZXN1bHQ+JiB0ZXN0X3BhcnRfcmVzdWx0cygpIGNvbnN0IHsKQEAgLTU1MywxMyArNjI1LDE2IEBA
IGNsYXNzIEdURVNUX0FQSV8gVGVzdFJlc3VsdCB7CiAgIC8vIGEgbm9uLWZhdGFsIGZhaWx1cmUg
aWYgaW52YWxpZCAoZS5nLiwgaWYgaXQgY29uZmxpY3RzIHdpdGggcmVzZXJ2ZWQKICAgLy8ga2V5
IG5hbWVzKS4gSWYgYSBwcm9wZXJ0eSBpcyBhbHJlYWR5IHJlY29yZGVkIGZvciB0aGUgc2FtZSBr
ZXksIHRoZQogICAvLyB2YWx1ZSB3aWxsIGJlIHVwZGF0ZWQsIHJhdGhlciB0aGFuIHN0b3Jpbmcg
bXVsdGlwbGUgdmFsdWVzIGZvciB0aGUgc2FtZQotICAvLyBrZXkuCi0gIHZvaWQgUmVjb3JkUHJv
cGVydHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5KTsKKyAgLy8ga2V5LiAgeG1s
X2VsZW1lbnQgc3BlY2lmaWVzIHRoZSBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvcGVydHkgaXMg
YmVpbmcKKyAgLy8gcmVjb3JkZWQgYW5kIGlzIHVzZWQgZm9yIHZhbGlkYXRpb24uCisgIHZvaWQg
UmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50LAorICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSk7CiAKICAgLy8g
QWRkcyBhIGZhaWx1cmUgaWYgdGhlIGtleSBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBvZiBHb29n
bGUgVGVzdAogICAvLyB0ZXN0Y2FzZSB0YWdzLiAgUmV0dXJucyB0cnVlIGlmIHRoZSBwcm9wZXJ0
eSBpcyB2YWxpZC4KLSAgLy8gVE9ETyhydXNzcik6IFZhbGlkYXRlIGF0dHJpYnV0ZSBuYW1lcyBh
cmUgbGVnYWwgYW5kIGh1bWFuIHJlYWRhYmxlLgotICBzdGF0aWMgYm9vbCBWYWxpZGF0ZVRlc3RQ
cm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpOworICAvLyBGSVhNRTog
VmFsaWRhdGUgYXR0cmlidXRlIG5hbWVzIGFyZSBsZWdhbCBhbmQgaHVtYW4gcmVhZGFibGUuCisg
IHN0YXRpYyBib29sIFZhbGlkYXRlVGVzdFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiB4bWxf
ZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFBy
b3BlcnR5JiB0ZXN0X3Byb3BlcnR5KTsKIAogICAvLyBBZGRzIGEgdGVzdCBwYXJ0IHJlc3VsdCB0
byB0aGUgbGlzdC4KICAgdm9pZCBBZGRUZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3Vs
dCYgdGVzdF9wYXJ0X3Jlc3VsdCk7CkBAIC02MTEsMjAgKzY4NiwzOSBAQCBjbGFzcyBHVEVTVF9B
UElfIFRlc3RJbmZvIHsKICAgflRlc3RJbmZvKCk7CiAKICAgLy8gUmV0dXJucyB0aGUgdGVzdCBj
YXNlIG5hbWUuCi0gIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lKCkgY29uc3Q7CisgIGNvbnN0
IGNoYXIqIHRlc3RfY2FzZV9uYW1lKCkgY29uc3QgeyByZXR1cm4gdGVzdF9jYXNlX25hbWVfLmNf
c3RyKCk7IH0KIAogICAvLyBSZXR1cm5zIHRoZSB0ZXN0IG5hbWUuCi0gIGNvbnN0IGNoYXIqIG5h
bWUoKSBjb25zdDsKKyAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG5hbWVfLmNf
c3RyKCk7IH0KKworICAvLyBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdHlwZSwg
b3IgTlVMTCBpZiB0aGlzIGlzIG5vdCBhIHR5cGVkCisgIC8vIG9yIGEgdHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3QuCisgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0oKSBjb25zdCB7CisgICAgaWYgKHR5
cGVfcGFyYW1fLmdldCgpICE9IE5VTEwpCisgICAgICByZXR1cm4gdHlwZV9wYXJhbV8tPmNfc3Ry
KCk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICAvLyBSZXR1cm5zIHRoZSB0ZXh0IHJlcHJl
c2VudGF0aW9uIG9mIHRoZSB2YWx1ZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYgdGhpcworICAvLyBp
cyBub3QgYSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisgIGNvbnN0IGNoYXIqIHZhbHVlX3Bh
cmFtKCkgY29uc3QgeworICAgIGlmICh2YWx1ZV9wYXJhbV8uZ2V0KCkgIT0gTlVMTCkKKyAgICAg
IHJldHVybiB2YWx1ZV9wYXJhbV8tPmNfc3RyKCk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KIAot
ICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNhc2UgY29tbWVudC4KLSAgY29uc3QgY2hhciogdGVzdF9j
YXNlX2NvbW1lbnQoKSBjb25zdDsKKyAgLy8gUmV0dXJucyB0aGUgZmlsZSBuYW1lIHdoZXJlIHRo
aXMgdGVzdCBpcyBkZWZpbmVkLgorICBjb25zdCBjaGFyKiBmaWxlKCkgY29uc3QgeyByZXR1cm4g
bG9jYXRpb25fLmZpbGUuY19zdHIoKTsgfQogCi0gIC8vIFJldHVybnMgdGhlIHRlc3QgY29tbWVu
dC4KLSAgY29uc3QgY2hhciogY29tbWVudCgpIGNvbnN0OworICAvLyBSZXR1cm5zIHRoZSBsaW5l
IHdoZXJlIHRoaXMgdGVzdCBpcyBkZWZpbmVkLgorICBpbnQgbGluZSgpIGNvbnN0IHsgcmV0dXJu
IGxvY2F0aW9uXy5saW5lOyB9CiAKLSAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBzaG91
bGQgcnVuLCB0aGF0IGlzIGlmIHRoZSB0ZXN0IGlzIG5vdCBkaXNhYmxlZAotICAvLyAob3IgaXQg
aXMgZGlzYWJsZWQgYnV0IHRoZSBhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnIGhhcyBiZWVu
IHNwZWNpZmllZCkKLSAgLy8gYW5kIGl0cyBmdWxsIG5hbWUgbWF0Y2hlcyB0aGUgdXNlci1zcGVj
aWZpZWQgZmlsdGVyLgorICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIHRlc3Qgc2hvdWxkIG5vdCBi
ZSBydW4gYmVjYXVzZSBpdCdzIGluIGFub3RoZXIgc2hhcmQuCisgIGJvb2wgaXNfaW5fYW5vdGhl
cl9zaGFyZCgpIGNvbnN0IHsgcmV0dXJuIGlzX2luX2Fub3RoZXJfc2hhcmRfOyB9CisKKyAgLy8g
UmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBzaG91bGQgcnVuLCB0aGF0IGlzIGlmIHRoZSB0ZXN0
IGlzIG5vdAorICAvLyBkaXNhYmxlZCAob3IgaXQgaXMgZGlzYWJsZWQgYnV0IHRoZSBhbHNvX3J1
bl9kaXNhYmxlZF90ZXN0cyBmbGFnIGhhcworICAvLyBiZWVuIHNwZWNpZmllZCkgYW5kIGl0cyBm
dWxsIG5hbWUgbWF0Y2hlcyB0aGUgdXNlci1zcGVjaWZpZWQgZmlsdGVyLgogICAvLwogICAvLyBH
b29nbGUgVGVzdCBhbGxvd3MgdGhlIHVzZXIgdG8gZmlsdGVyIHRoZSB0ZXN0cyBieSB0aGVpciBm
dWxsIG5hbWVzLgogICAvLyBUaGUgZnVsbCBuYW1lIG9mIGEgdGVzdCBCYXIgaW4gdGVzdCBjYXNl
IEZvbyBpcyBkZWZpbmVkIGFzCkBAIC02MzgsMTAgKzczMiwxNyBAQCBjbGFzcyBHVEVTVF9BUElf
IFRlc3RJbmZvIHsKICAgLy8KICAgLy8gRm9yIGV4YW1wbGUsICpBKjpGb28uKiBpcyBhIGZpbHRl
ciB0aGF0IG1hdGNoZXMgYW55IHN0cmluZyB0aGF0CiAgIC8vIGNvbnRhaW5zIHRoZSBjaGFyYWN0
ZXIgJ0EnIG9yIHN0YXJ0cyB3aXRoICJGb28uIi4KLSAgYm9vbCBzaG91bGRfcnVuKCkgY29uc3Q7
CisgIGJvb2wgc2hvdWxkX3J1bigpIGNvbnN0IHsgcmV0dXJuIHNob3VsZF9ydW5fOyB9CisKKyAg
Ly8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIHRlc3Qgd2lsbCBhcHBlYXIgaW4gdGhlIFhNTCByZXBv
cnQuCisgIGJvb2wgaXNfcmVwb3J0YWJsZSgpIGNvbnN0IHsKKyAgICAvLyBUaGUgWE1MIHJlcG9y
dCBpbmNsdWRlcyB0ZXN0cyBtYXRjaGluZyB0aGUgZmlsdGVyLCBleGNsdWRpbmcgdGhvc2UKKyAg
ICAvLyBydW4gaW4gb3RoZXIgc2hhcmRzLgorICAgIHJldHVybiBtYXRjaGVzX2ZpbHRlcl8gJiYg
IWlzX2luX2Fub3RoZXJfc2hhcmRfOworICB9CiAKICAgLy8gUmV0dXJucyB0aGUgcmVzdWx0IG9m
IHRoZSB0ZXN0LgotICBjb25zdCBUZXN0UmVzdWx0KiByZXN1bHQoKSBjb25zdDsKKyAgY29uc3Qg
VGVzdFJlc3VsdCogcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gJnJlc3VsdF87IH0KIAogIHByaXZh
dGU6CiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKQEAgLTY0OSwzNiArNzUwLDY1IEBAIGNsYXNz
IEdURVNUX0FQSV8gVGVzdEluZm8gewogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAog
ICBmcmllbmQgY2xhc3MgVGVzdDsKICAgZnJpZW5kIGNsYXNzIFRlc3RDYXNlOwotICBmcmllbmQg
Y2xhc3MgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbDsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpV
bml0VGVzdEltcGw7CisgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6U3RyZWFtaW5nTGlzdGVuZXJU
ZXN0OwogICBmcmllbmQgVGVzdEluZm8qIGludGVybmFsOjpNYWtlQW5kUmVnaXN0ZXJUZXN0SW5m
bygKLSAgICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLCBjb25zdCBjaGFyKiBuYW1lLAot
ICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX2NvbW1lbnQsIGNvbnN0IGNoYXIqIGNvbW1lbnQs
CisgICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgIGNvbnN0IGNoYXIqIG5h
bWUsCisgICAgICBjb25zdCBjaGFyKiB0eXBlX3BhcmFtLAorICAgICAgY29uc3QgY2hhciogdmFs
dWVfcGFyYW0sCisgICAgICBpbnRlcm5hbDo6Q29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24sCiAg
ICAgICBpbnRlcm5hbDo6VHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCiAgICAgICBUZXN0OjpTZXRV
cFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCiAgICAgICBUZXN0OjpUZWFyRG93blRlc3RDYXNlRnVu
YyB0ZWFyX2Rvd25fdGMsCiAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5
KTsKIAotICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IG1hdGNoZXMgdGhlIHVzZXItc3Bl
Y2lmaWVkIGZpbHRlci4KLSAgYm9vbCBtYXRjaGVzX2ZpbHRlcigpIGNvbnN0OworICAvLyBDb25z
dHJ1Y3RzIGEgVGVzdEluZm8gb2JqZWN0LiBUaGUgbmV3bHkgY29uc3RydWN0ZWQgaW5zdGFuY2Ug
YXNzdW1lcworICAvLyBvd25lcnNoaXAgb2YgdGhlIGZhY3Rvcnkgb2JqZWN0LgorICBUZXN0SW5m
byhjb25zdCBzdGQ6OnN0cmluZyYgdGVzdF9jYXNlX25hbWUsCisgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBuYW1lLAorICAgICAgICAgICBjb25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sICAg
Ly8gTlVMTCBpZiBub3QgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdAorICAgICAgICAgICBjb25z
dCBjaGFyKiBhX3ZhbHVlX3BhcmFtLCAgLy8gTlVMTCBpZiBub3QgYSB2YWx1ZS1wYXJhbWV0ZXJp
emVkIHRlc3QKKyAgICAgICAgICAgaW50ZXJuYWw6OkNvZGVMb2NhdGlvbiBhX2NvZGVfbG9jYXRp
b24sCisgICAgICAgICAgIGludGVybmFsOjpUeXBlSWQgZml4dHVyZV9jbGFzc19pZCwKKyAgICAg
ICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSk7CiAKICAgLy8gSW5jcmVt
ZW50cyB0aGUgbnVtYmVyIG9mIGRlYXRoIHRlc3RzIGVuY291bnRlcmVkIGluIHRoaXMgdGVzdCBz
bwogICAvLyBmYXIuCi0gIGludCBpbmNyZW1lbnRfZGVhdGhfdGVzdF9jb3VudCgpOworICBpbnQg
aW5jcmVtZW50X2RlYXRoX3Rlc3RfY291bnQoKSB7CisgICAgcmV0dXJuIHJlc3VsdF8uaW5jcmVt
ZW50X2RlYXRoX3Rlc3RfY291bnQoKTsKKyAgfQogCi0gIC8vIEFjY2Vzc29ycyBmb3IgdGhlIGlt
cGxlbWVudGF0aW9uIG9iamVjdC4KLSAgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbCogaW1wbCgpIHsg
cmV0dXJuIGltcGxfOyB9Ci0gIGNvbnN0IGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGltcGwoKSBj
b25zdCB7IHJldHVybiBpbXBsXzsgfQorICAvLyBDcmVhdGVzIHRoZSB0ZXN0IG9iamVjdCwgcnVu
cyBpdCwgcmVjb3JkcyBpdHMgcmVzdWx0LCBhbmQgdGhlbgorICAvLyBkZWxldGVzIGl0LgorICB2
b2lkIFJ1bigpOwogCi0gIC8vIENvbnN0cnVjdHMgYSBUZXN0SW5mbyBvYmplY3QuIFRoZSBuZXds
eSBjb25zdHJ1Y3RlZCBpbnN0YW5jZSBhc3N1bWVzCi0gIC8vIG93bmVyc2hpcCBvZiB0aGUgZmFj
dG9yeSBvYmplY3QuCi0gIFRlc3RJbmZvKGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLCBjb25z
dCBjaGFyKiBuYW1lLAotICAgICAgICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfY29tbWVudCwg
Y29uc3QgY2hhciogY29tbWVudCwKLSAgICAgICAgICAgaW50ZXJuYWw6OlR5cGVJZCBmaXh0dXJl
X2NsYXNzX2lkLAotICAgICAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5
KTsKKyAgc3RhdGljIHZvaWQgQ2xlYXJUZXN0UmVzdWx0KFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsK
KyAgICB0ZXN0X2luZm8tPnJlc3VsdF8uQ2xlYXIoKTsKKyAgfQogCi0gIC8vIEFuIG9wYXF1ZSBp
bXBsZW1lbnRhdGlvbiBvYmplY3QuCi0gIGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGltcGxfOwor
ICAvLyBUaGVzZSBmaWVsZHMgYXJlIGltbXV0YWJsZSBwcm9wZXJ0aWVzIG9mIHRoZSB0ZXN0Lgor
ICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0X2Nhc2VfbmFtZV87ICAgICAvLyBUZXN0IGNhc2UgbmFt
ZQorICBjb25zdCBzdGQ6OnN0cmluZyBuYW1lXzsgICAgICAgICAgICAgICAvLyBUZXN0IG5hbWUK
KyAgLy8gTmFtZSBvZiB0aGUgcGFyYW1ldGVyIHR5cGUsIG9yIE5VTEwgaWYgdGhpcyBpcyBub3Qg
YSB0eXBlZCBvciBhCisgIC8vIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LgorICBjb25zdCBpbnRl
cm5hbDo6c2NvcGVkX3B0cjxjb25zdCA6OnN0ZDo6c3RyaW5nPiB0eXBlX3BhcmFtXzsKKyAgLy8g
VGV4dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFsdWUgcGFyYW1ldGVyLCBvciBOVUxMIGlmIHRo
aXMgaXMgbm90IGEKKyAgLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0LgorICBjb25zdCBpbnRl
cm5hbDo6c2NvcGVkX3B0cjxjb25zdCA6OnN0ZDo6c3RyaW5nPiB2YWx1ZV9wYXJhbV87CisgIGlu
dGVybmFsOjpDb2RlTG9jYXRpb24gbG9jYXRpb25fOworICBjb25zdCBpbnRlcm5hbDo6VHlwZUlk
IGZpeHR1cmVfY2xhc3NfaWRfOyAgIC8vIElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKKyAg
Ym9vbCBzaG91bGRfcnVuXzsgICAgICAgICAgICAgICAgIC8vIFRydWUgaWZmIHRoaXMgdGVzdCBz
aG91bGQgcnVuCisgIGJvb2wgaXNfZGlzYWJsZWRfOyAgICAgICAgICAgICAgICAvLyBUcnVlIGlm
ZiB0aGlzIHRlc3QgaXMgZGlzYWJsZWQKKyAgYm9vbCBtYXRjaGVzX2ZpbHRlcl87ICAgICAgICAg
ICAgIC8vIFRydWUgaWYgdGhpcyB0ZXN0IG1hdGNoZXMgdGhlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB1c2VyLXNwZWNpZmllZCBmaWx0ZXIuCisgIGJvb2wgaXNfaW5f
YW5vdGhlcl9zaGFyZF87ICAgICAgICAvLyBXaWxsIGJlIHJ1biBpbiBhbm90aGVyIHNoYXJkLgor
ICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBjb25zdCBmYWN0b3J5XzsgIC8vIFRoZSBmYWN0
b3J5IHRoYXQgY3JlYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHRoZSB0ZXN0IG9iamVjdAorCisgIC8vIFRoaXMgZmllbGQgaXMgbXV0YWJsZSBh
bmQgbmVlZHMgdG8gYmUgcmVzZXQgYmVmb3JlIHJ1bm5pbmcgdGhlCisgIC8vIHRlc3QgZm9yIHRo
ZSBzZWNvbmQgdGltZS4KKyAgVGVzdFJlc3VsdCByZXN1bHRfOwogCiAgIEdURVNUX0RJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTl8oVGVzdEluZm8pOwogfTsKQEAgLTY5Niw5ICs4MjYsMTEgQEAgY2xh
c3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIEFyZ3VtZW50czoKICAgLy8KICAgLy8gICBu
YW1lOiAgICAgICAgIG5hbWUgb2YgdGhlIHRlc3QgY2FzZQorICAvLyAgIGFfdHlwZV9wYXJhbTog
dGhlIG5hbWUgb2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorICAvLyAg
ICAgICAgICAgICAgICAgdGhpcyBpcyBub3QgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KICAg
Ly8gICBzZXRfdXBfdGM6ICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0
aGUgdGVzdCBjYXNlCiAgIC8vICAgdGVhcl9kb3duX3RjOiBwb2ludGVyIHRvIHRoZSBmdW5jdGlv
biB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQotICBUZXN0Q2FzZShjb25zdCBjaGFyKiBu
YW1lLCBjb25zdCBjaGFyKiBjb21tZW50LAorICBUZXN0Q2FzZShjb25zdCBjaGFyKiBuYW1lLCBj
b25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sCiAgICAgICAgICAgIFRlc3Q6OlNldFVwVGVzdENhc2VG
dW5jIHNldF91cF90YywKICAgICAgICAgICAgVGVzdDo6VGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVh
cl9kb3duX3RjKTsKIApAQCAtNzA4LDggKzg0MCwxMyBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RD
YXNlIHsKICAgLy8gR2V0cyB0aGUgbmFtZSBvZiB0aGUgVGVzdENhc2UuCiAgIGNvbnN0IGNoYXIq
IG5hbWUoKSBjb25zdCB7IHJldHVybiBuYW1lXy5jX3N0cigpOyB9CiAKLSAgLy8gUmV0dXJucyB0
aGUgdGVzdCBjYXNlIGNvbW1lbnQuCi0gIGNvbnN0IGNoYXIqIGNvbW1lbnQoKSBjb25zdCB7IHJl
dHVybiBjb21tZW50Xy5jX3N0cigpOyB9CisgIC8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHBh
cmFtZXRlciB0eXBlLCBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEKKyAgLy8gdHlwZS1wYXJhbWV0
ZXJpemVkIHRlc3QgY2FzZS4KKyAgY29uc3QgY2hhciogdHlwZV9wYXJhbSgpIGNvbnN0IHsKKyAg
ICBpZiAodHlwZV9wYXJhbV8uZ2V0KCkgIT0gTlVMTCkKKyAgICAgIHJldHVybiB0eXBlX3BhcmFt
Xy0+Y19zdHIoKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiBhbnkgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZSBzaG91bGQgcnVuLgogICBib29sIHNob3VsZF9y
dW4oKSBjb25zdCB7IHJldHVybiBzaG91bGRfcnVuXzsgfQpAQCAtNzIwLDkgKzg1NywxNSBAQCBj
bGFzcyBHVEVTVF9BUElfIFRlc3RDYXNlIHsKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxl
ZCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KICAgaW50IGZhaWxlZF90ZXN0X2NvdW50KCkgY29u
c3Q7CiAKKyAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHRoYXQgd2lsbCBi
ZSByZXBvcnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFibGVfZGlzYWJsZWRf
dGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0
ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KICAgaW50IGRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25z
dDsKIAorICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0aGUg
WE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8v
IEdldCB0aGUgbnVtYmVyIG9mIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlIHRoYXQgc2hvdWxkIHJ1
bi4KICAgaW50IHRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3Q7CiAKQEAgLTc0Miw2ICs4ODUsMTAg
QEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIHRvdGFsX3Rlc3RfY291bnQoKSAt
IDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVMTC4KICAgY29uc3QgVGVz
dEluZm8qIEdldFRlc3RJbmZvKGludCBpKSBjb25zdDsKIAorICAvLyBSZXR1cm5zIHRoZSBUZXN0
UmVzdWx0IHRoYXQgaG9sZHMgdGVzdCBwcm9wZXJ0aWVzIHJlY29yZGVkIGR1cmluZworICAvLyBl
eGVjdXRpb24gb2YgU2V0VXBUZXN0Q2FzZSBhbmQgVGVhckRvd25UZXN0Q2FzZS4KKyAgY29uc3Qg
VGVzdFJlc3VsdCYgYWRfaG9jX3Rlc3RfcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gYWRfaG9jX3Rl
c3RfcmVzdWx0XzsgfQorCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNsYXNzIFRlc3Q7CiAgIGZyaWVu
ZCBjbGFzcyBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsOwpAQCAtNzc2LDE3ICs5MjMsNDQgQEAgY2xh
c3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIFJ1bnMgZXZlcnkgdGVzdCBpbiB0aGlzIFRl
c3RDYXNlLgogICB2b2lkIFJ1bigpOwogCisgIC8vIFJ1bnMgU2V0VXBUZXN0Q2FzZSgpIGZvciB0
aGlzIFRlc3RDYXNlLiAgVGhpcyB3cmFwcGVyIGlzIG5lZWRlZAorICAvLyBmb3IgY2F0Y2hpbmcg
ZXhjZXB0aW9ucyB0aHJvd24gZnJvbSBTZXRVcFRlc3RDYXNlKCkuCisgIHZvaWQgUnVuU2V0VXBU
ZXN0Q2FzZSgpIHsgKCpzZXRfdXBfdGNfKSgpOyB9CisKKyAgLy8gUnVucyBUZWFyRG93blRlc3RD
YXNlKCkgZm9yIHRoaXMgVGVzdENhc2UuICBUaGlzIHdyYXBwZXIgaXMKKyAgLy8gbmVlZGVkIGZv
ciBjYXRjaGluZyBleGNlcHRpb25zIHRocm93biBmcm9tIFRlYXJEb3duVGVzdENhc2UoKS4KKyAg
dm9pZCBSdW5UZWFyRG93blRlc3RDYXNlKCkgeyAoKnRlYXJfZG93bl90Y18pKCk7IH0KKwogICAv
LyBSZXR1cm5zIHRydWUgaWZmIHRlc3QgcGFzc2VkLgotICBzdGF0aWMgYm9vbCBUZXN0UGFzc2Vk
KGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKTsKKyAgc3RhdGljIGJvb2wgVGVzdFBhc3NlZChj
b25zdCBUZXN0SW5mbyogdGVzdF9pbmZvKSB7CisgICAgcmV0dXJuIHRlc3RfaW5mby0+c2hvdWxk
X3J1bigpICYmIHRlc3RfaW5mby0+cmVzdWx0KCktPlBhc3NlZCgpOworICB9CiAKICAgLy8gUmV0
dXJucyB0cnVlIGlmZiB0ZXN0IGZhaWxlZC4KLSAgc3RhdGljIGJvb2wgVGVzdEZhaWxlZChjb25z
dCBUZXN0SW5mbyAqIHRlc3RfaW5mbyk7CisgIHN0YXRpYyBib29sIFRlc3RGYWlsZWQoY29uc3Qg
VGVzdEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPnNob3VsZF9ydW4o
KSAmJiB0ZXN0X2luZm8tPnJlc3VsdCgpLT5GYWlsZWQoKTsKKyAgfQorCisgIC8vIFJldHVybnMg
dHJ1ZSBpZmYgdGhlIHRlc3QgaXMgZGlzYWJsZWQgYW5kIHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhl
IFhNTAorICAvLyByZXBvcnQuCisgIHN0YXRpYyBib29sIFRlc3RSZXBvcnRhYmxlRGlzYWJsZWQo
Y29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPmlzX3Jl
cG9ydGFibGUoKSAmJiB0ZXN0X2luZm8tPmlzX2Rpc2FibGVkXzsKKyAgfQogCiAgIC8vIFJldHVy
bnMgdHJ1ZSBpZmYgdGVzdCBpcyBkaXNhYmxlZC4KLSAgc3RhdGljIGJvb2wgVGVzdERpc2FibGVk
KGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKTsKKyAgc3RhdGljIGJvb2wgVGVzdERpc2FibGVk
KGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKKyAgICByZXR1cm4gdGVzdF9pbmZvLT5pc19k
aXNhYmxlZF87CisgIH0KKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgdGVzdCB3aWxsIGFw
cGVhciBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgc3RhdGljIGJvb2wgVGVzdFJlcG9ydGFibGUoY29u
c3QgVGVzdEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPmlzX3JlcG9y
dGFibGUoKTsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdGVzdCBzaG91
bGQgcnVuLgotICBzdGF0aWMgYm9vbCBTaG91bGRSdW5UZXN0KGNvbnN0IFRlc3RJbmZvICp0ZXN0
X2luZm8pOworICBzdGF0aWMgYm9vbCBTaG91bGRSdW5UZXN0KGNvbnN0IFRlc3RJbmZvKiB0ZXN0
X2luZm8pIHsKKyAgICByZXR1cm4gdGVzdF9pbmZvLT5zaG91bGRfcnVuKCk7CisgIH0KIAogICAv
LyBTaHVmZmxlcyB0aGUgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCiAgIHZvaWQgU2h1ZmZsZVRl
c3RzKGludGVybmFsOjpSYW5kb20qIHJhbmRvbSk7CkBAIC03OTUsOSArOTY5LDEwIEBAIGNsYXNz
IEdURVNUX0FQSV8gVGVzdENhc2UgewogICB2b2lkIFVuc2h1ZmZsZVRlc3RzKCk7CiAKICAgLy8g
TmFtZSBvZiB0aGUgdGVzdCBjYXNlLgotICBpbnRlcm5hbDo6U3RyaW5nIG5hbWVfOwotICAvLyBD
b21tZW50IG9uIHRoZSB0ZXN0IGNhc2UuCi0gIGludGVybmFsOjpTdHJpbmcgY29tbWVudF87Cisg
IHN0ZDo6c3RyaW5nIG5hbWVfOworICAvLyBOYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdHlwZSwgb3Ig
TlVMTCBpZiB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEKKyAgLy8gdHlwZS1wYXJhbWV0ZXJpemVk
IHRlc3QuCisgIGNvbnN0IGludGVybmFsOjpzY29wZWRfcHRyPGNvbnN0IDo6c3RkOjpzdHJpbmc+
IHR5cGVfcGFyYW1fOwogICAvLyBUaGUgdmVjdG9yIG9mIFRlc3RJbmZvcyBpbiB0aGVpciBvcmln
aW5hbCBvcmRlci4gIEl0IG93bnMgdGhlCiAgIC8vIGVsZW1lbnRzIGluIHRoZSB2ZWN0b3IuCiAg
IHN0ZDo6dmVjdG9yPFRlc3RJbmZvKj4gdGVzdF9pbmZvX2xpc3RfOwpAQCAtODEzLDEzICs5ODgs
MTYgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIGJvb2wgc2hvdWxkX3J1bl87CiAg
IC8vIEVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5NaWxsaXMgZWxhcHNl
ZF90aW1lXzsKKyAgLy8gSG9sZHMgdGVzdCBwcm9wZXJ0aWVzIHJlY29yZGVkIGR1cmluZyBleGVj
dXRpb24gb2YgU2V0VXBUZXN0Q2FzZSBhbmQKKyAgLy8gVGVhckRvd25UZXN0Q2FzZS4KKyAgVGVz
dFJlc3VsdCBhZF9ob2NfdGVzdF9yZXN1bHRfOwogCiAgIC8vIFdlIGRpc2FsbG93IGNvcHlpbmcg
VGVzdENhc2VzLgogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRlc3RDYXNlKTsK
IH07CiAKIC8vIEFuIEVudmlyb25tZW50IG9iamVjdCBpcyBjYXBhYmxlIG9mIHNldHRpbmcgdXAg
YW5kIHRlYXJpbmcgZG93biBhbgotLy8gZW52aXJvbm1lbnQuICBUaGUgdXNlciBzaG91bGQgc3Vi
Y2xhc3MgdGhpcyB0byBkZWZpbmUgaGlzIG93bgorLy8gZW52aXJvbm1lbnQuICBZb3Ugc2hvdWxk
IHN1YmNsYXNzIHRoaXMgdG8gZGVmaW5lIHlvdXIgb3duCiAvLyBlbnZpcm9ubWVudChzKS4KIC8v
CiAvLyBBbiBFbnZpcm9ubWVudCBvYmplY3QgZG9lcyB0aGUgc2V0LXVwIGFuZCB0ZWFyLWRvd24g
aW4gdmlydHVhbApAQCAtODQ5LDYgKzEwMjcsMTggQEAgY2xhc3MgRW52aXJvbm1lbnQgewogICB2
aXJ0dWFsIFNldHVwX3Nob3VsZF9iZV9zcGVsbGVkX1NldFVwKiBTZXR1cCgpIHsgcmV0dXJuIE5V
TEw7IH0KIH07CiAKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBFeGNlcHRpb24gd2hp
Y2ggY2FuIGJlIHRocm93biBmcm9tIFRlc3RFdmVudExpc3RlbmVyOjpPblRlc3RQYXJ0UmVzdWx0
LgorY2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRpb25FeGNlcHRpb24KKyAgICA6IHB1YmxpYyBpbnRl
cm5hbDo6R29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24geworIHB1YmxpYzoKKyAgZXhwbGljaXQg
QXNzZXJ0aW9uRXhjZXB0aW9uKGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiByZXN1bHQpCisgICAgICA6
IEdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uKHJlc3VsdCkge30KK307CisKKyNlbmRpZiAgLy8g
R1RFU1RfSEFTX0VYQ0VQVElPTlMKKwogLy8gVGhlIGludGVyZmFjZSBmb3IgdHJhY2luZyBleGVj
dXRpb24gb2YgdGVzdHMuIFRoZSBtZXRob2RzIGFyZSBvcmdhbml6ZWQgaW4KIC8vIHRoZSBvcmRl
ciB0aGUgY29ycmVzcG9uZGluZyBldmVudHMgYXJlIGZpcmVkLgogY2xhc3MgVGVzdEV2ZW50TGlz
dGVuZXIgewpAQCAtODc2LDcgKzEwNjYsOSBAQCBjbGFzcyBUZXN0RXZlbnRMaXN0ZW5lciB7CiAg
IC8vIEZpcmVkIGJlZm9yZSB0aGUgdGVzdCBzdGFydHMuCiAgIHZpcnR1YWwgdm9pZCBPblRlc3RT
dGFydChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSA9IDA7CiAKLSAgLy8gRmlyZWQgYWZ0ZXIg
YSBmYWlsZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VTUygpLgorICAvLyBGaXJlZCBhZnRlciBhIGZh
aWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRUVEKCkgaW52b2NhdGlvbi4KKyAgLy8gSWYgeW91IHdh
bnQgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIGZyb20gdGhpcyBmdW5jdGlvbiB0byBza2lwIHRvIHRo
ZSBuZXh0CisgIC8vIFRFU1QsIGl0IG11c3QgYmUgQXNzZXJ0aW9uRXhjZXB0aW9uIGRlZmluZWQg
YWJvdmUsIG9yIGluaGVyaXRlZCBmcm9tIGl0LgogICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJl
c3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgPSAwOwogCiAgIC8v
IEZpcmVkIGFmdGVyIHRoZSB0ZXN0IGVuZHMuCkBAIC05NjEsMTAgKzExNTMsMTAgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBUZXN0RXZlbnRMaXN0ZW5lcnMgewogCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNs
YXNzIFRlc3RDYXNlOworICBmcmllbmQgY2xhc3MgVGVzdEluZm87CiAgIGZyaWVuZCBjbGFzcyBp
bnRlcm5hbDo6RGVmYXVsdEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI7CiAgIGZyaWVuZCBj
bGFzcyBpbnRlcm5hbDo6Tm9FeGVjRGVhdGhUZXN0OwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6
OlRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOwotICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlRl
c3RJbmZvSW1wbDsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpVbml0VGVzdEltcGw7CiAKICAg
Ly8gUmV0dXJucyByZXBlYXRlciB0aGF0IGJyb2FkY2FzdHMgdGhlIFRlc3RFdmVudExpc3RlbmVy
IGV2ZW50cyB0byBhbGwKQEAgLTEwMzIsMjIgKzEyMjQsMjMgQEAgY2xhc3MgR1RFU1RfQVBJXyBV
bml0VGVzdCB7CiAKICAgLy8gUmV0dXJucyB0aGUgVGVzdENhc2Ugb2JqZWN0IGZvciB0aGUgdGVz
dCB0aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcsCiAgIC8vIG9yIE5VTEwgaWYgbm8gdGVzdCBpcyBy
dW5uaW5nLgotICBjb25zdCBUZXN0Q2FzZSogY3VycmVudF90ZXN0X2Nhc2UoKSBjb25zdDsKKyAg
Y29uc3QgVGVzdENhc2UqIGN1cnJlbnRfdGVzdF9jYXNlKCkgY29uc3QKKyAgICAgIEdURVNUX0xP
Q0tfRVhDTFVERURfKG11dGV4Xyk7CiAKICAgLy8gUmV0dXJucyB0aGUgVGVzdEluZm8gb2JqZWN0
IGZvciB0aGUgdGVzdCB0aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcsCiAgIC8vIG9yIE5VTEwgaWYg
bm8gdGVzdCBpcyBydW5uaW5nLgotICBjb25zdCBUZXN0SW5mbyogY3VycmVudF90ZXN0X2luZm8o
KSBjb25zdDsKKyAgY29uc3QgVGVzdEluZm8qIGN1cnJlbnRfdGVzdF9pbmZvKCkgY29uc3QKKyAg
ICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4Xyk7CiAKICAgLy8gUmV0dXJucyB0aGUgcmFu
ZG9tIHNlZWQgdXNlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQgdGVzdCBydW4uCiAgIGlu
dCByYW5kb21fc2VlZCgpIGNvbnN0OwogCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgLy8g
UmV0dXJucyB0aGUgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgb2JqZWN0IHVzZWQgdG8g
a2VlcCB0cmFjayBvZgogICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFuZCBpbnN0YW50
aWF0ZSBhbmQgcmVnaXN0ZXIgdGhlbS4KICAgLy8KICAgLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJ
T04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotICBpbnRlcm5hbDo6UGFyYW1ldGVy
aXplZFRlc3RDYXNlUmVnaXN0cnkmIHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpOwotI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAorICBpbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRl
c3RDYXNlUmVnaXN0cnkmIHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpCisgICAgICBHVEVT
VF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBzdWNj
ZXNzZnVsIHRlc3QgY2FzZXMuCiAgIGludCBzdWNjZXNzZnVsX3Rlc3RfY2FzZV9jb3VudCgpIGNv
bnN0OwpAQCAtMTA2OCwxNSArMTI2MSwyNSBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0IHsK
ICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cy4KICAgaW50IGZhaWxlZF90ZXN0
X2NvdW50KCkgY29uc3Q7CiAKKyAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3Rz
IHRoYXQgd2lsbCBiZSByZXBvcnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFi
bGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8vIEdldHMgdGhlIG51bWJlciBv
ZiBkaXNhYmxlZCB0ZXN0cy4KICAgaW50IGRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdDsKIAor
ICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJl
cG9ydC4KKyAgaW50IHJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8vIEdldHMg
dGhlIG51bWJlciBvZiBhbGwgdGVzdHMuCiAgIGludCB0b3RhbF90ZXN0X2NvdW50KCkgY29uc3Q7
CiAKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRoYXQgc2hvdWxkIHJ1bi4KICAgaW50
IHRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3Q7CiAKKyAgLy8gR2V0cyB0aGUgdGltZSBvZiB0aGUg
dGVzdCBwcm9ncmFtIHN0YXJ0LCBpbiBtcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUKKyAgLy8gVU5J
WCBlcG9jaC4KKyAgVGltZUluTWlsbGlzIHN0YXJ0X3RpbWVzdGFtcCgpIGNvbnN0OworCiAgIC8v
IEdldHMgdGhlIGVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5NaWxsaXMg
ZWxhcHNlZF90aW1lKCkgY29uc3Q7CiAKQEAgLTEwOTEsNiArMTI5NCwxMCBAQCBjbGFzcyBHVEVT
VF9BUElfIFVuaXRUZXN0IHsKICAgLy8gdG90YWxfdGVzdF9jYXNlX2NvdW50KCkgLSAxLiBJZiBp
IGlzIG5vdCBpbiB0aGF0IHJhbmdlLCByZXR1cm5zIE5VTEwuCiAgIGNvbnN0IFRlc3RDYXNlKiBH
ZXRUZXN0Q2FzZShpbnQgaSkgY29uc3Q7CiAKKyAgLy8gUmV0dXJucyB0aGUgVGVzdFJlc3VsdCBj
b250YWluaW5nIGluZm9ybWF0aW9uIG9uIHRlc3QgZmFpbHVyZXMgYW5kCisgIC8vIHByb3BlcnRp
ZXMgbG9nZ2VkIG91dHNpZGUgb2YgaW5kaXZpZHVhbCB0ZXN0IGNhc2VzLgorICBjb25zdCBUZXN0
UmVzdWx0JiBhZF9ob2NfdGVzdF9yZXN1bHQoKSBjb25zdDsKKwogICAvLyBSZXR1cm5zIHRoZSBs
aXN0IG9mIGV2ZW50IGxpc3RlbmVycyB0aGF0IGNhbiBiZSB1c2VkIHRvIHRyYWNrIGV2ZW50cwog
ICAvLyBpbnNpZGUgR29vZ2xlIFRlc3QuCiAgIFRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJz
KCk7CkBAIC0xMTE0LDEyICsxMzIxLDE2IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3Qgewog
ICB2b2lkIEFkZFRlc3RQYXJ0UmVzdWx0KFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGVfbmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgbGluZV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBpbnRlcm5hbDo6U3RyaW5nJiBvc19zdGFja190cmFjZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9zX3N0YWNrX3RyYWNlKQorICAgICAg
R1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKTsKIAotICAvLyBBZGRzIGEgVGVzdFByb3BlcnR5
IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0LiBJZiB0aGUgcmVzdWx0IGFscmVhZHkK
LSAgLy8gY29udGFpbnMgYSBwcm9wZXJ0eSB3aXRoIHRoZSBzYW1lIGtleSwgdGhlIHZhbHVlIHdp
bGwgYmUgdXBkYXRlZC4KLSAgdm9pZCBSZWNvcmRQcm9wZXJ0eUZvckN1cnJlbnRUZXN0KGNvbnN0
IGNoYXIqIGtleSwgY29uc3QgY2hhciogdmFsdWUpOworICAvLyBBZGRzIGEgVGVzdFByb3BlcnR5
IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0IHdoZW4gaW52b2tlZCBmcm9tCisgIC8v
IGluc2lkZSBhIHRlc3QsIHRvIGN1cnJlbnQgVGVzdENhc2UncyBhZF9ob2NfdGVzdF9yZXN1bHRf
IHdoZW4gaW52b2tlZAorICAvLyBmcm9tIFNldFVwVGVzdENhc2Ugb3IgVGVhckRvd25UZXN0Q2Fz
ZSwgb3IgdG8gdGhlIGdsb2JhbCBwcm9wZXJ0eSBzZXQKKyAgLy8gd2hlbiBpbnZva2VkIGVsc2V3
aGVyZS4gIElmIHRoZSByZXN1bHQgYWxyZWFkeSBjb250YWlucyBhIHByb3BlcnR5IHdpdGgKKyAg
Ly8gdGhlIHNhbWUga2V5LCB0aGUgdmFsdWUgd2lsbCBiZSB1cGRhdGVkLgorICB2b2lkIFJlY29y
ZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1
ZSk7CiAKICAgLy8gR2V0cyB0aGUgaS10aCB0ZXN0IGNhc2UgYW1vbmcgYWxsIHRoZSB0ZXN0IGNh
c2VzLiBpIGNhbiByYW5nZSBmcm9tIDAgdG8KICAgLy8gdG90YWxfdGVzdF9jYXNlX2NvdW50KCkg
LSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCByZXR1cm5zIE5VTEwuCkBAIC0xMTI5LDE2
ICsxMzQwLDE4IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3QgewogICBpbnRlcm5hbDo6VW5p
dFRlc3RJbXBsKiBpbXBsKCkgeyByZXR1cm4gaW1wbF87IH0KICAgY29uc3QgaW50ZXJuYWw6OlVu
aXRUZXN0SW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIGltcGxfOyB9CiAKLSAgLy8gVGhlc2Ug
Y2xhc3NlcyBhbmQgZnVuY2lvbnMgYXJlIGZyaWVuZHMgYXMgdGhleSBuZWVkIHRvIGFjY2VzcyBw
cml2YXRlCisgIC8vIFRoZXNlIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyBhcmUgZnJpZW5kcyBhcyB0
aGV5IG5lZWQgdG8gYWNjZXNzIHByaXZhdGUKICAgLy8gbWVtYmVycyBvZiBVbml0VGVzdC4KKyAg
ZnJpZW5kIGNsYXNzIFNjb3BlZFRyYWNlOwogICBmcmllbmQgY2xhc3MgVGVzdDsKICAgZnJpZW5k
IGNsYXNzIGludGVybmFsOjpBc3NlcnRIZWxwZXI7Ci0gIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6
U2NvcGVkVHJhY2U7CisgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6U3RyZWFtaW5nTGlzdGVuZXJU
ZXN0OworICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0
SGVscGVyOwogICBmcmllbmQgRW52aXJvbm1lbnQqIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChF
bnZpcm9ubWVudCogZW52KTsKICAgZnJpZW5kIGludGVybmFsOjpVbml0VGVzdEltcGwqIGludGVy
bmFsOjpHZXRVbml0VGVzdEltcGwoKTsKICAgZnJpZW5kIHZvaWQgaW50ZXJuYWw6OlJlcG9ydEZh
aWx1cmVJblVua25vd25Mb2NhdGlvbigKICAgICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3Vs
dF90eXBlLAotICAgICAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyYgbWVzc2FnZSk7CisgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSk7CiAKICAgLy8gQ3JlYXRlcyBhbiBlbXB0eSBVbml0
VGVzdC4KICAgVW5pdFRlc3QoKTsKQEAgLTExNDgsMTAgKzEzNjEsMTIgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBVbml0VGVzdCB7CiAKICAgLy8gUHVzaGVzIGEgdHJhY2UgZGVmaW5lZCBieSBTQ09QRURf
VFJBQ0UoKSBvbiB0byB0aGUgcGVyLXRocmVhZAogICAvLyBHb29nbGUgVGVzdCB0cmFjZSBzdGFj
ay4KLSAgdm9pZCBQdXNoR1Rlc3RUcmFjZShjb25zdCBpbnRlcm5hbDo6VHJhY2VJbmZvJiB0cmFj
ZSk7CisgIHZvaWQgUHVzaEdUZXN0VHJhY2UoY29uc3QgaW50ZXJuYWw6OlRyYWNlSW5mbyYgdHJh
Y2UpCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCiAgIC8vIFBvcHMgYSB0
cmFjZSBmcm9tIHRoZSBwZXItdGhyZWFkIEdvb2dsZSBUZXN0IHRyYWNlIHN0YWNrLgotICB2b2lk
IFBvcEdUZXN0VHJhY2UoKTsKKyAgdm9pZCBQb3BHVGVzdFRyYWNlKCkKKyAgICAgIEdURVNUX0xP
Q0tfRVhDTFVERURfKG11dGV4Xyk7CiAKICAgLy8gUHJvdGVjdHMgbXV0YWJsZSBzdGF0ZSBpbiAq
aW1wbF8uICBUaGlzIGlzIG11dGFibGUgYXMgc29tZSBjb25zdAogICAvLyBtZXRob2RzIG5lZWQg
dG8gbG9jayBpdCB0b28uCkBAIC0xMjA2LDgyICsxNDIxLDQwIEBAIEdURVNUX0FQSV8gdm9pZCBJ
bml0R29vZ2xlVGVzdChpbnQqIGFyZ2MsIHdjaGFyX3QqKiBhcmd2KTsKIAogbmFtZXNwYWNlIGlu
dGVybmFsIHsKIAotLy8gVGhlc2Ugb3ZlcmxvYWRlZCB2ZXJzaW9ucyBoYW5kbGUgOjpzdGQ6OnN0
cmluZyBhbmQgOjpzdGQ6OndzdHJpbmcuCi1HVEVTVF9BUElfIGlubGluZSBTdHJpbmcgRm9ybWF0
Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyKSB7Ci0gIHJldHVybiAo
TWVzc2FnZSgpIDw8ICciJyA8PCBzdHIgPDwgJyInKS5HZXRTdHJpbmcoKTsKLX0KLQotI2lmIEdU
RVNUX0hBU19TVERfV1NUUklORwotR1RFU1RfQVBJXyBpbmxpbmUgU3RyaW5nIEZvcm1hdEZvckZh
aWx1cmVNZXNzYWdlKGNvbnN0IDo6c3RkOjp3c3RyaW5nJiB3c3RyKSB7Ci0gIHJldHVybiAoTWVz
c2FnZSgpIDw8ICJMXCIiIDw8IHdzdHIgPDwgJyInKS5HZXRTdHJpbmcoKTsKLX0KLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1NURF9XU1RSSU5HCi0KLS8vIFRoZXNlIG92ZXJsb2FkZWQgdmVyc2lvbnMg
aGFuZGxlIDo6c3RyaW5nIGFuZCA6OndzdHJpbmcuCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJ
TkcKLUdURVNUX0FQSV8gaW5saW5lIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjb25z
dCA6OnN0cmluZyYgc3RyKSB7Ci0gIHJldHVybiAoTWVzc2FnZSgpIDw8ICciJyA8PCBzdHIgPDwg
JyInKS5HZXRTdHJpbmcoKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcK
LQotI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotR1RFU1RfQVBJXyBpbmxpbmUgU3RyaW5n
IEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKGNvbnN0IDo6d3N0cmluZyYgd3N0cikgewotICByZXR1
cm4gKE1lc3NhZ2UoKSA8PCAiTFwiIiA8PCB3c3RyIDw8ICciJykuR2V0U3RyaW5nKCk7Ci19Ci0j
ZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotCi0vLyBGb3JtYXRzIGEgY29tcGFy
aXNvbiBhc3NlcnRpb24gKGUuZy4gQVNTRVJUX0VRLCBFWFBFQ1RfTFQsIGFuZCBldGMpCi0vLyBv
cGVyYW5kIHRvIGJlIHVzZWQgaW4gYSBmYWlsdXJlIG1lc3NhZ2UuICBUaGUgdHlwZSAoYnV0IG5v
dCB2YWx1ZSkKLS8vIG9mIHRoZSBvdGhlciBvcGVyYW5kIG1heSBhZmZlY3QgdGhlIGZvcm1hdC4g
IFRoaXMgYWxsb3dzIHVzIHRvCi0vLyBwcmludCBhIGNoYXIqIGFzIGEgcmF3IHBvaW50ZXIgd2hl
biBpdCBpcyBjb21wYXJlZCBhZ2FpbnN0IGFub3RoZXIKLS8vIGNoYXIqLCBhbmQgcHJpbnQgaXQg
YXMgYSBDIHN0cmluZyB3aGVuIGl0IGlzIGNvbXBhcmVkIGFnYWluc3QgYW4KLS8vIHN0ZDo6c3Ry
aW5nIG9iamVjdCwgZm9yIGV4YW1wbGUuCi0vLwotLy8gVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRp
b24gaWdub3JlcyB0aGUgdHlwZSBvZiB0aGUgb3RoZXIgb3BlcmFuZC4KLS8vIFNvbWUgc3BlY2lh
bGl6ZWQgdmVyc2lvbnMgYXJlIHVzZWQgdG8gaGFuZGxlIGZvcm1hdHRpbmcgd2lkZSBvcgotLy8g
bmFycm93IEMgc3RyaW5ncy4KLS8vCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5P
VCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCisvLyBTZXBhcmF0ZSB0aGUgZXJyb3IgZ2VuZXJhdGlu
ZyBjb2RlIGZyb20gdGhlIGNvZGUgcGF0aCB0byByZWR1Y2UgdGhlIHN0YWNrCisvLyBmcmFtZSBz
aXplIG9mIENtcEhlbHBlckVRLiBUaGlzIGhlbHBzIHJlZHVjZSB0aGUgb3ZlcmhlYWQgb2Ygc29t
ZSBzYW5pdGl6ZXJzCisvLyB3aGVuIGNhbGxpbmcgRVhQRUNUXyogaW4gYSB0aWdodCBsb29wLgog
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLVN0cmluZyBGb3JtYXRGb3JDb21w
YXJpc29uRmFpbHVyZU1lc3NhZ2UoY29uc3QgVDEmIHZhbHVlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgLyogb3RoZXJfb3BlcmFuZCAqLykgewot
ICByZXR1cm4gRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UodmFsdWUpOworQXNzZXJ0aW9uUmVzdWx0
IENtcEhlbHBlckVRRmFpbHVyZShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiBsaHMsIGNvbnN0IFQy
JiByaHMpIHsKKyAgcmV0dXJuIEVxRmFpbHVyZShsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21w
YXJpc29uRmFpbHVyZU1lc3NhZ2UobGhzLCByaHMpLAorICAgICAgICAgICAgICAgICAgIEZvcm1h
dEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShyaHMsIGxocyksCisgICAgICAgICAgICAgICAg
ICAgZmFsc2UpOwogfQogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVD
VH1fRVEuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotQXNzZXJ0aW9uUmVz
dWx0IENtcEhlbHBlckVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGV4cGVjdGVkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFQyJiBhY3R1YWwpIHsKLSNpZmRlZiBfTVNDX1ZFUgotI3By
YWdtYSB3YXJuaW5nKHB1c2gpICAgICAgICAgIC8vIFNhdmVzIHRoZSBjdXJyZW50IHdhcm5pbmcg
c3RhdGUuCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0Mzg5KSAgLy8gVGVtcG9yYXJpbHkgZGlz
YWJsZXMgd2FybmluZyBvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpZ25l
ZC91bnNpZ25lZCBtaXNtYXRjaC4KLSNlbmRpZgotCi0gIGlmIChleHBlY3RlZCA9PSBhY3R1YWwp
IHsKK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgbGhzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiByaHMpIHsKKyAgaWYgKGxocyA9PSByaHMpIHsK
ICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9CiAKLSNpZmRlZiBfTVNDX1ZFUgot
I3ByYWdtYSB3YXJuaW5nKHBvcCkgICAgICAgICAgLy8gUmVzdG9yZXMgdGhlIHdhcm5pbmcgc3Rh
dGUuCi0jZW5kaWYKLQotICByZXR1cm4gRXFGYWlsdXJlKGV4cGVjdGVkX2V4cHJlc3Npb24sCi0g
ICAgICAgICAgICAgICAgICAgYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAg
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKGV4cGVjdGVkLCBhY3R1YWwpLAotICAg
ICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShhY3R1YWws
IGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAgICAgICBmYWxzZSk7CisgIHJldHVybiBDbXBIZWxw
ZXJFUUZhaWx1cmUobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7CiB9
CiAKIC8vIFdpdGggdGhpcyBvdmVybG9hZGVkIHZlcnNpb24sIHdlIGFsbG93IGFub255bW91cyBl
bnVtcyB0byBiZSB1c2VkCiAvLyBpbiB7QVNTRVJUfEVYUEVDVH1fRVEgd2hlbiBjb21waWxlZCB3
aXRoIGdjYyA0LCBhcyBhbm9ueW1vdXMgZW51bXMKIC8vIGNhbiBiZSBpbXBsaWNpdGx5IGNhc3Qg
dG8gQmlnZ2VzdEludC4KLUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRKGNv
bnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgZXhwZWN0ZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGFjdHVhbCk7CitHVEVT
VF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVz
c2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QmlnZ2VzdEludCBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
aWdnZXN0SW50IHJocyk7CiAKIC8vIFRoZSBoZWxwZXIgY2xhc3MgZm9yIHtBU1NFUlR8RVhQRUNU
fV9FUS4gIFRoZSB0ZW1wbGF0ZSBhcmd1bWVudAogLy8gbGhzX2lzX251bGxfbGl0ZXJhbCBpcyB0
cnVlIGlmZiB0aGUgZmlyc3QgYXJndW1lbnQgdG8gQVNTRVJUX0VRKCkKQEAgLTEyOTIsMTIgKzE0
NjUsMTEgQEAgY2xhc3MgRXFIZWxwZXIgewogIHB1YmxpYzoKICAgLy8gVGhpcyB0ZW1wbGF0aXpl
ZCB2ZXJzaW9uIGlzIGZvciB0aGUgZ2VuZXJhbCBjYXNlLgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyPgotICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUoY29uc3Qg
Y2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVDEmIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVDImIGFjdHVhbCkgewotICAgIHJldHVybiBDbXBIZWxwZXJFUShleHBl
Y3RlZF9leHByZXNzaW9uLCBhY3R1YWxfZXhwcmVzc2lvbiwgZXhwZWN0ZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgIGFjdHVhbCk7CisgIHN0YXRpYyBBc3NlcnRpb25SZXN1bHQgQ29tcGFyZShj
b25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVDEmIGxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFQyJiByaHMpIHsKKyAgICByZXR1cm4gQ21wSGVscGVyRVEobGhzX2V4cHJlc3Npb24s
IHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7CiAgIH0KIAogICAvLyBXaXRoIHRoaXMgb3Zlcmxv
YWRlZCB2ZXJzaW9uLCB3ZSBhbGxvdyBhbm9ueW1vdXMgZW51bXMgdG8gYmUgdXNlZApAQCAtMTMw
NiwxNyArMTQ3OCwxNiBAQCBjbGFzcyBFcUhlbHBlciB7CiAgIC8vCiAgIC8vIEV2ZW4gdGhvdWdo
IGl0cyBib2R5IGxvb2tzIHRoZSBzYW1lIGFzIHRoZSBhYm92ZSB2ZXJzaW9uLCB3ZQogICAvLyBj
YW5ub3QgbWVyZ2UgdGhlIHR3bywgYXMgaXQgd2lsbCBtYWtlIGFub255bW91cyBlbnVtcyB1bmhh
cHB5LgotICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUoY29uc3QgY2hhciogZXhwZWN0
ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QmlnZ2VzdEludCBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJp
Z2dlc3RJbnQgYWN0dWFsKSB7Ci0gICAgcmV0dXJuIENtcEhlbHBlckVRKGV4cGVjdGVkX2V4cHJl
c3Npb24sIGFjdHVhbF9leHByZXNzaW9uLCBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgYWN0dWFsKTsKKyAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBDb21wYXJlKGNvbnN0IGNoYXIq
IGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
aWdnZXN0SW50IGxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJ
bnQgcmhzKSB7CisgICAgcmV0dXJuIENtcEhlbHBlckVRKGxoc19leHByZXNzaW9uLCByaHNfZXhw
cmVzc2lvbiwgbGhzLCByaHMpOwogICB9CiB9OwogCiAvLyBUaGlzIHNwZWNpYWxpemF0aW9uIGlz
IHVzZWQgd2hlbiB0aGUgZmlyc3QgYXJndW1lbnQgdG8gQVNTRVJUX0VRKCkKLS8vIGlzIGEgbnVs
bCBwb2ludGVyIGxpdGVyYWwuCisvLyBpcyBhIG51bGwgcG9pbnRlciBsaXRlcmFsLCBsaWtlIE5V
TEwsIGZhbHNlLCBvciAwLgogdGVtcGxhdGUgPD4KIGNsYXNzIEVxSGVscGVyPHRydWU+IHsKICBw
dWJsaWM6CkBAIC0xMzI1LDI3ICsxNDk2LDUzIEBAIGNsYXNzIEVxSGVscGVyPHRydWU+IHsKICAg
Ly8gTk9UIGEgcG9pbnRlciwgZS5nLiBBU1NFUlRfRVEoMCwgQW5JbnRGdW5jdGlvbigpKSBvcgog
ICAvLyBFWFBFQ1RfRVEoZmFsc2UsIGFfYm9vbCkuCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDI+Ci0gIHN0YXRpYyBBc3NlcnRpb25SZXN1bHQgQ29tcGFyZShjb25zdCBjaGFy
KiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUMSYgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUMiYgYWN0dWFsKSB7Ci0gICAgcmV0dXJuIENtcEhlbHBlckVRKGV4cGVjdGVk
X2V4cHJlc3Npb24sIGFjdHVhbF9leHByZXNzaW9uLCBleHBlY3RlZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgYWN0dWFsKTsKKyAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBDb21wYXJlKAorICAg
ICAgY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICBjb25zdCBjaGFyKiByaHNfZXhw
cmVzc2lvbiwKKyAgICAgIGNvbnN0IFQxJiBsaHMsCisgICAgICBjb25zdCBUMiYgcmhzLAorICAg
ICAgLy8gVGhlIGZvbGxvd2luZyBsaW5lIHByZXZlbnRzIHRoaXMgb3ZlcmxvYWQgZnJvbSBiZWlu
ZyBjb25zaWRlcmVkIGlmIFQyCisgICAgICAvLyBpcyBub3QgYSBwb2ludGVyIHR5cGUuICBXZSBu
ZWVkIHRoaXMgYmVjYXVzZSBBU1NFUlRfRVEoTlVMTCwgbXlfcHRyKQorICAgICAgLy8gZXhwYW5k
cyB0byBDb21wYXJlKCIiLCAiIiwgTlVMTCwgbXlfcHRyKSwgd2hpY2ggcmVxdWlyZXMgYSBjb252
ZXJzaW9uCisgICAgICAvLyB0byBtYXRjaCB0aGUgU2VjcmV0KiBpbiB0aGUgb3RoZXIgb3Zlcmxv
YWQsIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBtYWtlCisgICAgICAvLyB0aGlzIHRlbXBsYXRlIG1h
dGNoIGJldHRlci4KKyAgICAgIHR5cGVuYW1lIEVuYWJsZUlmPCFpc19wb2ludGVyPFQyPjo6dmFs
dWU+Ojp0eXBlKiA9IDApIHsKKyAgICByZXR1cm4gQ21wSGVscGVyRVEobGhzX2V4cHJlc3Npb24s
IHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7CiAgIH0KIAotICAvLyBUaGlzIHZlcnNpb24gd2ls
bCBiZSBwaWNrZWQgd2hlbiB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvCi0gIC8vIEFTU0VSVF9FUSgp
IGlzIGEgcG9pbnRlciwgZS5nLiBBU1NFUlRfRVEoTlVMTCwgYV9wb2ludGVyKS4KLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBD
b21wYXJlKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiAvKiBleHBlY3RlZCAqLywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQyKiBhY3R1YWwpIHsKLSAgICAvLyBXZSBhbHJl
YWR5IGtub3cgdGhhdCAnZXhwZWN0ZWQnIGlzIGEgbnVsbCBwb2ludGVyLgotICAgIHJldHVybiBD
bXBIZWxwZXJFUShleHBlY3RlZF9leHByZXNzaW9uLCBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VDIqPihOVUxMKSwgYWN0dWFsKTsKKyAgLy8g
VGhpcyB2ZXJzaW9uIHdpbGwgYmUgcGlja2VkIHdoZW4gdGhlIHNlY29uZCBhcmd1bWVudCB0byBB
U1NFUlRfRVEoKSBpcyBhCisgIC8vIHBvaW50ZXIsIGUuZy4gQVNTRVJUX0VRKE5VTEwsIGFfcG9p
bnRlcikuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0
IENvbXBhcmUoCisgICAgICBjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgIGNvbnN0
IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgLy8gV2UgdXNlZCB0byBoYXZlIGEgc2Vjb25k
IHRlbXBsYXRlIHBhcmFtZXRlciBpbnN0ZWFkIG9mIFNlY3JldCouICBUaGF0CisgICAgICAvLyB0
ZW1wbGF0ZSBwYXJhbWV0ZXIgd291bGQgZGVkdWNlIHRvICdsb25nJywgbWFraW5nIHRoaXMgYSBi
ZXR0ZXIgbWF0Y2gKKyAgICAgIC8vIHRoYW4gdGhlIGZpcnN0IG92ZXJsb2FkIGV2ZW4gd2l0aG91
dCB0aGUgZmlyc3Qgb3ZlcmxvYWQncyBFbmFibGVJZi4KKyAgICAgIC8vIFVuZm9ydHVuYXRlbHks
IGdjYyB3aXRoIC1XY29udmVyc2lvbi1udWxsIHdhcm5zIHdoZW4gInBhc3NpbmcgTlVMTCB0bwor
ICAgICAgLy8gbm9uLXBvaW50ZXIgYXJndW1lbnQiIChldmVuIGEgZGVkdWNlZCBpbnRlZ3JhbCBh
cmd1bWVudCksIHNvIHRoZSBvbGQKKyAgICAgIC8vIGltcGxlbWVudGF0aW9uIGNhdXNlZCB3YXJu
aW5ncyBpbiB1c2VyIGNvZGUuCisgICAgICBTZWNyZXQqIC8qIGxocyAoTlVMTCkgKi8sCisgICAg
ICBUKiByaHMpIHsKKyAgICAvLyBXZSBhbHJlYWR5IGtub3cgdGhhdCAnbGhzJyBpcyBhIG51bGwg
cG9pbnRlci4KKyAgICByZXR1cm4gQ21wSGVscGVyRVEobGhzX2V4cHJlc3Npb24sIHJoc19leHBy
ZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxUKj4oTlVMTCksIHJo
cyk7CiAgIH0KIH07CiAKKy8vIFNlcGFyYXRlIHRoZSBlcnJvciBnZW5lcmF0aW5nIGNvZGUgZnJv
bSB0aGUgY29kZSBwYXRoIHRvIHJlZHVjZSB0aGUgc3RhY2sKKy8vIGZyYW1lIHNpemUgb2YgQ21w
SGVscGVyT1AuIFRoaXMgaGVscHMgcmVkdWNlIHRoZSBvdmVyaGVhZCBvZiBzb21lIHNhbml0aXpl
cnMKKy8vIHdoZW4gY2FsbGluZyBFWFBFQ1RfT1AgaW4gYSB0aWdodCBsb29wLgordGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJPcEZh
aWx1cmUoY29uc3QgY2hhciogZXhwcjEsIGNvbnN0IGNoYXIqIGV4cHIyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgdmFsMSwgY29uc3QgVDImIHZhbDIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG9wKSB7CisgIHJl
dHVybiBBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgICAgIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhw
cjEgPDwgIikgIiA8PCBvcCA8PCAiICgiIDw8IGV4cHIyCisgICAgICAgICA8PCAiKSwgYWN0dWFs
OiAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSh2YWwxLCB2YWwyKQorICAg
ICAgICAgPDwgIiB2cyAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSh2YWwy
LCB2YWwxKTsKK30KKwogLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHRoZSBoZWxwZXIgZnVu
Y3Rpb25zIG5lZWRlZCB0byBpbXBsZW1lbnQKIC8vIEFTU0VSVF8/PyBhbmQgRVhQRUNUXz8/LiAg
SXQgaXMgaGVyZSBqdXN0IHRvIGF2b2lkIGNvcHktYW5kLXBhc3RlCiAvLyBvZiBzaW1pbGFyIGNv
ZGUuCkBAIC0xMzU2LDYgKzE1NTMsNyBAQCBjbGFzcyBFcUhlbHBlcjx0cnVlPiB7CiAvLyB3aXRo
IGdjYyA0LgogLy8KIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBB
IFVTRVIgUFJPR1JBTS4KKwogI2RlZmluZSBHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKG9wX25hbWUs
IG9wKVwKIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+XAogQXNzZXJ0aW9uUmVz
dWx0IENtcEhlbHBlciMjb3BfbmFtZShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhw
cjIsIFwKQEAgLTEzNjMsMTEgKzE1NjEsNyBAQCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyIyNv
cF9uYW1lKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwgXAogICBpZiAodmFs
MSBvcCB2YWwyKSB7XAogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7XAogICB9IGVsc2Ug
e1wKLSAgICBNZXNzYWdlIG1zZztcCi0gICAgbXNnIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEg
PDwgIikgIiAjb3AgIiAoIiA8PCBleHByMlwKLSAgICAgICAgPDwgIiksIGFjdHVhbDogIiA8PCBG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UodmFsMSwgdmFsMilcCi0gICAgICAgIDw8
ICIgdnMgIiA8PCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UodmFsMiwgdmFsMSk7
XAotICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7XAorICAgIHJldHVybiBDbXBIZWxw
ZXJPcEZhaWx1cmUoZXhwcjEsIGV4cHIyLCB2YWwxLCB2YWwyLCAjb3ApO1wKICAgfVwKIH1cCiBH
VEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXIjI29wX25hbWUoXApAQCAtMTM4MCwy
OSArMTU3NCwyOSBAQCBHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKE5FLCAhPSk7CiAvLyBJbXBsZW1l
bnRzIHRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9MRQogR1RFU1RfSU1Q
TF9DTVBfSEVMUEVSXyhMRSwgPD0pOwogLy8gSW1wbGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9u
IGZvciB7QVNTRVJUfEVYUEVDVH1fTFQKLUdURVNUX0lNUExfQ01QX0hFTFBFUl8oTFQsIDwgKTsK
K0dURVNUX0lNUExfQ01QX0hFTFBFUl8oTFQsIDwpOwogLy8gSW1wbGVtZW50cyB0aGUgaGVscGVy
IGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fR0UKIEdURVNUX0lNUExfQ01QX0hFTFBFUl8o
R0UsID49KTsKIC8vIEltcGxlbWVudHMgdGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxF
WFBFQ1R9X0dUCi1HVEVTVF9JTVBMX0NNUF9IRUxQRVJfKEdULCA+ICk7CitHVEVTVF9JTVBMX0NN
UF9IRUxQRVJfKEdULCA+KTsKIAogI3VuZGVmIEdURVNUX0lNUExfQ01QX0hFTFBFUl8KIAogLy8g
VGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NUUkVRLgogLy8KIC8vIElO
VEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KLUdU
RVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGV4cGVj
dGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsKTsKK0dURVNUX0FQ
SV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Np
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBzMl9leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogczEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBzMik7CiAKIC8vIFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NF
UlR8RVhQRUNUfV9TVFJDQVNFRVEuCiAvLwogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBE
TyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQg
Q21wSGVscGVyU1RSQ0FTRUVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0
dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsKTsKK0dURVNUX0FQSV8gQXNzZXJ0
aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VFUShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHMyX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogczEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogczIpOwogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZv
ciB7QVNTRVJUfEVYUEVDVH1fU1RSTkUuCiAvLwpAQCAtMTQyNCwxMCArMTYxOCwxMCBAQCBHVEVT
VF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJDQVNFTkUoY29uc3QgY2hhciogczFf
ZXhwcmVzc2lvbiwKIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgKl9TVFJFUSBvbiB3aWRlIHN0cmlu
Z3MuCiAvLwogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNF
UiBQUk9HUkFNLgotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29u
c3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogZXhwZWN0ZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90
KiBhY3R1YWwpOworR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29u
c3QgY2hhciogczFfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHMyX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiBzMSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIHMyKTsKIAogLy8gSGVs
cGVyIGZ1bmN0aW9uIGZvciAqX1NUUk5FIG9uIHdpZGUgc3RyaW5ncy4KIC8vCkBAIC0xNDg1LDI4
ICsxNjc5LDI4IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLwogLy8gSU5URVJOQUwgSU1QTEVN
RU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgogdGVtcGxhdGUgPHR5cGVu
YW1lIFJhd1R5cGU+Ci1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRmxvYXRpbmdQb2ludEVRKGNv
bnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdUeXBlIGV4cGVjdGVkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdUeXBlIGFjdHVhbCkgewotICBj
b25zdCBGbG9hdGluZ1BvaW50PFJhd1R5cGU+IGxocyhleHBlY3RlZCksIHJocyhhY3R1YWwpOwor
QXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckZsb2F0aW5nUG9pbnRFUShjb25zdCBjaGFyKiBsaHNf
ZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJhd1R5cGUgbGhzX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSYXdUeXBlIHJoc192YWx1ZSkgeworICBjb25zdCBGbG9hdGluZ1BvaW50
PFJhd1R5cGU+IGxocyhsaHNfdmFsdWUpLCByaHMocmhzX3ZhbHVlKTsKIAogICBpZiAobGhzLkFs
bW9zdEVxdWFscyhyaHMpKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQog
Ci0gIFN0clN0cmVhbSBleHBlY3RlZF9zczsKLSAgZXhwZWN0ZWRfc3MgPDwgc3RkOjpzZXRwcmVj
aXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxSYXdUeXBlPjo6ZGlnaXRzMTAgKyAyKQotICAgICAg
ICAgICAgICA8PCBleHBlY3RlZDsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBsaHNfc3M7CisgIGxo
c19zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+Ojpk
aWdpdHMxMCArIDIpCisgICAgICAgICA8PCBsaHNfdmFsdWU7CiAKLSAgU3RyU3RyZWFtIGFjdHVh
bF9zczsKLSAgYWN0dWFsX3NzIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1p
dHM8UmF3VHlwZT46OmRpZ2l0czEwICsgMikKLSAgICAgICAgICAgIDw8IGFjdHVhbDsKKyAgOjpz
dGQ6OnN0cmluZ3N0cmVhbSByaHNfc3M7CisgIHJoc19zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihz
dGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+OjpkaWdpdHMxMCArIDIpCisgICAgICAgICA8PCBy
aHNfdmFsdWU7CiAKLSAgcmV0dXJuIEVxRmFpbHVyZShleHBlY3RlZF9leHByZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIFN0
clN0cmVhbVRvU3RyaW5nKCZleHBlY3RlZF9zcyksCi0gICAgICAgICAgICAgICAgICAgU3RyU3Ry
ZWFtVG9TdHJpbmcoJmFjdHVhbF9zcyksCisgIHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Np
b24sCisgICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAg
ICAgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJmxoc19zcyksCisgICAgICAgICAgICAgICAgICAgU3Ry
aW5nU3RyZWFtVG9TdHJpbmcoJnJoc19zcyksCiAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwog
fQogCkBAIC0xNTQ4LDkgKzE3NDIsOSBAQCBjbGFzcyBHVEVTVF9BUElfIEFzc2VydEhlbHBlciB7
CiAgICAgICAgIDogdHlwZSh0KSwgZmlsZShzcmNmaWxlKSwgbGluZShsaW5lX251bSksIG1lc3Nh
Z2UobXNnKSB7IH0KIAogICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIGNvbnN0IHR5cGU7Ci0gICAg
Y29uc3QgY2hhciogICAgICAgIGNvbnN0IGZpbGU7Ci0gICAgaW50ICAgICAgICAgICAgICAgIGNv
bnN0IGxpbmU7Ci0gICAgU3RyaW5nICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2U7CisgICAgY29u
c3QgY2hhciogY29uc3QgZmlsZTsKKyAgICBpbnQgY29uc3QgbGluZTsKKyAgICBzdGQ6OnN0cmlu
ZyBjb25zdCBtZXNzYWdlOwogCiAgICBwcml2YXRlOgogICAgIEdURVNUX0RJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTl8oQXNzZXJ0SGVscGVyRGF0YSk7CkBAIC0xNTYzLDEwICsxNzU3LDEzIEBAIGNs
YXNzIEdURVNUX0FQSV8gQXNzZXJ0SGVscGVyIHsKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
CiAKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotLy8gVGhlIGFic3RyYWN0IGJhc2UgY2xhc3Mg
dGhhdCBhbGwgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBpbmhlcml0IGZyb20uCisvLyBUaGUg
cHVyZSBpbnRlcmZhY2UgY2xhc3MgdGhhdCBhbGwgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBp
bmhlcml0IGZyb20uCisvLyBBIHZhbHVlLXBhcmFtZXRlcml6ZWQgY2xhc3MgbXVzdCBpbmhlcml0
IGZyb20gYm90aCA6OnRlc3Rpbmc6OlRlc3QgYW5kCisvLyA6OnRlc3Rpbmc6OldpdGhQYXJhbUlu
dGVyZmFjZS4gSW4gbW9zdCBjYXNlcyB0aGF0IGp1c3QgbWVhbnMgaW5oZXJpdGluZworLy8gZnJv
bSA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW0sIGJ1dCBtb3JlIGNvbXBsaWNhdGVkIHRlc3QgaGll
cmFyY2hpZXMKKy8vIG1heSBuZWVkIHRvIGluaGVyaXQgZnJvbSBUZXN0IGFuZCBXaXRoUGFyYW1J
bnRlcmZhY2UgYXQgZGlmZmVyZW50IGxldmVscy4KIC8vCi0vLyBUaGlzIGNsYXNzIGFkZHMgc3Vw
cG9ydCBmb3IgYWNjZXNzaW5nIHRoZSB0ZXN0IHBhcmFtZXRlciB2YWx1ZSB2aWEKKy8vIFRoaXMg
aW50ZXJmYWNlIGhhcyBzdXBwb3J0IGZvciBhY2Nlc3NpbmcgdGhlIHRlc3QgcGFyYW1ldGVyIHZh
bHVlIHZpYQogLy8gdGhlIEdldFBhcmFtKCkgbWV0aG9kLgogLy8KIC8vIFVzZSBpdCB3aXRoIG9u
ZSBvZiB0aGUgcGFyYW1ldGVyIGdlbmVyYXRvciBkZWZpbmluZyBmdW5jdGlvbnMsIGxpa2UgUmFu
Z2UoKSwKQEAgLTE1OTUsMTMgKzE3OTIsMjIgQEAgY2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRIZWxw
ZXIgewogLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoT25lVG9UZW5SYW5nZSwgRm9vVGVzdCwg
Ojp0ZXN0aW5nOjpSYW5nZSgxLCAxMCkpOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNz
IFRlc3RXaXRoUGFyYW0gOiBwdWJsaWMgVGVzdCB7CitjbGFzcyBXaXRoUGFyYW1JbnRlcmZhY2Ug
ewogIHB1YmxpYzoKICAgdHlwZWRlZiBUIFBhcmFtVHlwZTsKKyAgdmlydHVhbCB+V2l0aFBhcmFt
SW50ZXJmYWNlKCkge30KIAogICAvLyBUaGUgY3VycmVudCBwYXJhbWV0ZXIgdmFsdWUuIElzIGFs
c28gYXZhaWxhYmxlIGluIHRoZSB0ZXN0IGZpeHR1cmUncwotICAvLyBjb25zdHJ1Y3Rvci4KLSAg
Y29uc3QgUGFyYW1UeXBlJiBHZXRQYXJhbSgpIGNvbnN0IHsgcmV0dXJuICpwYXJhbWV0ZXJfOyB9
CisgIC8vIGNvbnN0cnVjdG9yLiBUaGlzIG1lbWJlciBmdW5jdGlvbiBpcyBub24tc3RhdGljLCBl
dmVuIHRob3VnaCBpdCBvbmx5CisgIC8vIHJlZmVyZW5jZXMgc3RhdGljIGRhdGEsIHRvIHJlZHVj
ZSB0aGUgb3Bwb3J0dW5pdHkgZm9yIGluY29ycmVjdCB1c2VzCisgIC8vIGxpa2Ugd3JpdGluZyAn
V2l0aFBhcmFtSW50ZXJmYWNlPGJvb2w+OjpHZXRQYXJhbSgpJyBmb3IgYSB0ZXN0IHRoYXQKKyAg
Ly8gdXNlcyBhIGZpeHR1cmUgd2hvc2UgcGFyYW1ldGVyIHR5cGUgaXMgaW50LgorICBjb25zdCBQ
YXJhbVR5cGUmIEdldFBhcmFtKCkgY29uc3QgeworICAgIEdURVNUX0NIRUNLXyhwYXJhbWV0ZXJf
ICE9IE5VTEwpCisgICAgICAgIDw8ICJHZXRQYXJhbSgpIGNhbiBvbmx5IGJlIGNhbGxlZCBpbnNp
ZGUgYSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QgIgorICAgICAgICA8PCAiLS0gZGlkIHlvdSBp
bnRlbmQgdG8gd3JpdGUgVEVTVF9QIGluc3RlYWQgb2YgVEVTVF9GPyI7CisgICAgcmV0dXJuICpw
YXJhbWV0ZXJfOworICB9CiAKICBwcml2YXRlOgogICAvLyBTZXRzIHBhcmFtZXRlciB2YWx1ZS4g
VGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgbWFraW5nIHN1cmUgdGhlIHZhbHVlCkBAIC0x
NjEzLDE0ICsxODE5LDE5IEBAIGNsYXNzIFRlc3RXaXRoUGFyYW0gOiBwdWJsaWMgVGVzdCB7CiAg
IC8vIFN0YXRpYyB2YWx1ZSB1c2VkIGZvciBhY2Nlc3NpbmcgcGFyYW1ldGVyIGR1cmluZyBhIHRl
c3QgbGlmZXRpbWUuCiAgIHN0YXRpYyBjb25zdCBQYXJhbVR5cGUqIHBhcmFtZXRlcl87CiAKLSAg
Ly8gVGVzdENsYXNzIG11c3QgYmUgYSBzdWJjbGFzcyBvZiBUZXN0V2l0aFBhcmFtPFQ+LgorICAv
LyBUZXN0Q2xhc3MgbXVzdCBiZSBhIHN1YmNsYXNzIG9mIFdpdGhQYXJhbUludGVyZmFjZTxUPiBh
bmQgVGVzdC4KICAgdGVtcGxhdGUgPGNsYXNzIFRlc3RDbGFzcz4gZnJpZW5kIGNsYXNzIGludGVy
bmFsOjpQYXJhbWV0ZXJpemVkVGVzdEZhY3Rvcnk7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLWNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOworY29uc3Qg
VCogV2l0aFBhcmFtSW50ZXJmYWNlPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIAotI2VuZGlmICAv
LyBHVEVTVF9IQVNfUEFSQU1fVEVTVAorLy8gTW9zdCB2YWx1ZS1wYXJhbWV0ZXJpemVkIGNsYXNz
ZXMgY2FuIGlnbm9yZSB0aGUgZXhpc3RlbmNlIG9mCisvLyBXaXRoUGFyYW1JbnRlcmZhY2UsIGFu
ZCBjYW4ganVzdCBpbmhlcml0IGZyb20gOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtLgorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFRlc3RXaXRoUGFyYW0gOiBwdWJsaWMgVGVzdCwgcHVi
bGljIFdpdGhQYXJhbUludGVyZmFjZTxUPiB7Cit9OwogCiAvLyBNYWNyb3MgZm9yIGluZGljYXRp
bmcgc3VjY2Vzcy9mYWlsdXJlIGluIHRlc3QgY29kZS4KIApAQCAtMTY0MCwyMyArMTg1MSwyMyBA
QCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIC8vIHVzdWFs
bHkgd2FudCB0aGUgZmFpbC1mYXN0IGJlaGF2aW9yIG9mIEZBSUwgYW5kIEFTU0VSVF8qLCBidXQg
dGhvc2UKIC8vIHdyaXRpbmcgZGF0YS1kcml2ZW4gdGVzdHMgb2Z0ZW4gZmluZCB0aGVtc2VsdmVz
IHVzaW5nIEFERF9GQUlMVVJFCiAvLyBhbmQgRVhQRUNUXyogbW9yZS4KLS8vCi0vLyBFeGFtcGxl
czoKLS8vCi0vLyAgIEVYUEVDVF9UUlVFKHNlcnZlci5TdGF0dXNJc09LKCkpOwotLy8gICBBU1NF
UlRfRkFMU0Uoc2VydmVyLkhhc1BlbmRpbmdSZXF1ZXN0KHBvcnQpKQotLy8gICAgICAgPDwgIlRo
ZXJlIGFyZSBzdGlsbCBwZW5kaW5nIHJlcXVlc3RzICIgPDwgIm9uIHBvcnQgIiA8PCBwb3J0Owog
CiAvLyBHZW5lcmF0ZXMgYSBub25mYXRhbCBmYWlsdXJlIHdpdGggYSBnZW5lcmljIG1lc3NhZ2Uu
CiAjZGVmaW5lIEFERF9GQUlMVVJFKCkgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8oIkZhaWxlZCIp
CiAKKy8vIEdlbmVyYXRlcyBhIG5vbmZhdGFsIGZhaWx1cmUgYXQgdGhlIGdpdmVuIHNvdXJjZSBm
aWxlIGxvY2F0aW9uIHdpdGgKKy8vIGEgZ2VuZXJpYyBtZXNzYWdlLgorI2RlZmluZSBBRERfRkFJ
TFVSRV9BVChmaWxlLCBsaW5lKSBcCisgIEdURVNUX01FU1NBR0VfQVRfKGZpbGUsIGxpbmUsICJG
YWlsZWQiLCBcCisgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ6
OmtOb25GYXRhbEZhaWx1cmUpCisKIC8vIEdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUgd2l0aCBh
IGdlbmVyaWMgbWVzc2FnZS4KICNkZWZpbmUgR1RFU1RfRkFJTCgpIEdURVNUX0ZBVEFMX0ZBSUxV
UkVfKCJGYWlsZWQiKQogCiAvLyBEZWZpbmUgdGhpcyBtYWNybyB0byAxIHRvIG9taXQgdGhlIGRl
ZmluaXRpb24gb2YgRkFJTCgpLCB3aGljaCBpcyBhCiAvLyBnZW5lcmljIG5hbWUgYW5kIGNsYXNo
ZXMgd2l0aCBzb21lIG90aGVyIGxpYnJhcmllcy4KICNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfRkFJ
TAotI2RlZmluZSBGQUlMKCkgR1RFU1RfRkFJTCgpCisjIGRlZmluZSBGQUlMKCkgR1RFU1RfRkFJ
TCgpCiAjZW5kaWYKIAogLy8gR2VuZXJhdGVzIGEgc3VjY2VzcyB3aXRoIGEgZ2VuZXJpYyBtZXNz
YWdlLgpAQCAtMTY2NSw3ICsxODc2LDcgQEAgY29uc3QgVCogVGVzdFdpdGhQYXJhbTxUPjo6cGFy
YW1ldGVyXyA9IE5VTEw7CiAvLyBEZWZpbmUgdGhpcyBtYWNybyB0byAxIHRvIG9taXQgdGhlIGRl
ZmluaXRpb24gb2YgU1VDQ0VFRCgpLCB3aGljaAogLy8gaXMgYSBnZW5lcmljIG5hbWUgYW5kIGNs
YXNoZXMgd2l0aCBzb21lIG90aGVyIGxpYnJhcmllcy4KICNpZiAhR1RFU1RfRE9OVF9ERUZJTkVf
U1VDQ0VFRAotI2RlZmluZSBTVUNDRUVEKCkgR1RFU1RfU1VDQ0VFRCgpCisjIGRlZmluZSBTVUND
RUVEKCkgR1RFU1RfU1VDQ0VFRCgpCiAjZW5kaWYKIAogLy8gTWFjcm9zIGZvciB0ZXN0aW5nIGV4
Y2VwdGlvbnMuCkBAIC0xNzA2LDE4ICsxOTE3LDE0IEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08
VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogICBHVEVTVF9URVNUX0JPT0xFQU5fKCEoY29uZGl0aW9u
KSwgI2NvbmRpdGlvbiwgdHJ1ZSwgZmFsc2UsIFwKICAgICAgICAgICAgICAgICAgICAgICBHVEVT
VF9GQVRBTF9GQUlMVVJFXykKIAotLy8gSW5jbHVkZXMgdGhlIGF1dG8tZ2VuZXJhdGVkIGhlYWRl
ciB0aGF0IGltcGxlbWVudHMgYSBmYW1pbHkgb2YKLS8vIGdlbmVyaWMgcHJlZGljYXRlIGFzc2Vy
dGlvbiBtYWNyb3MuCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmg+Ci0KIC8vIE1h
Y3JvcyBmb3IgdGVzdGluZyBlcXVhbGl0aWVzIGFuZCBpbmVxdWFsaXRpZXMuCiAvLwotLy8gICAg
KiB7QVNTRVJUfEVYUEVDVH1fRVEoZXhwZWN0ZWQsIGFjdHVhbCk6IFRlc3RzIHRoYXQgZXhwZWN0
ZWQgPT0gYWN0dWFsCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9ORSh2MSwgdjIpOiAgICAgICAg
ICAgVGVzdHMgdGhhdCB2MSAhPSB2MgotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTFQodjEsIHYy
KTogICAgICAgICAgIFRlc3RzIHRoYXQgdjEgPCB2MgotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1f
TEUodjEsIHYyKTogICAgICAgICAgIFRlc3RzIHRoYXQgdjEgPD0gdjIKLS8vICAgICoge0FTU0VS
VHxFWFBFQ1R9X0dUKHYxLCB2Mik6ICAgICAgICAgICBUZXN0cyB0aGF0IHYxID4gdjIKLS8vICAg
ICoge0FTU0VSVHxFWFBFQ1R9X0dFKHYxLCB2Mik6ICAgICAgICAgICBUZXN0cyB0aGF0IHYxID49
IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9FUSh2MSwgdjIpOiBUZXN0cyB0aGF0IHYxID09
IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9ORSh2MSwgdjIpOiBUZXN0cyB0aGF0IHYxICE9
IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9MVCh2MSwgdjIpOiBUZXN0cyB0aGF0IHYxIDwg
djIKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0xFKHYxLCB2Mik6IFRlc3RzIHRoYXQgdjEgPD0g
djIKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0dUKHYxLCB2Mik6IFRlc3RzIHRoYXQgdjEgPiB2
MgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fR0UodjEsIHYyKTogVGVzdHMgdGhhdCB2MSA+PSB2
MgogLy8KIC8vIFdoZW4gdGhleSBhcmUgbm90LCBHb29nbGUgVGVzdCBwcmludHMgYm90aCB0aGUg
dGVzdGVkIGV4cHJlc3Npb25zIGFuZAogLy8gdGhlaXIgYWN0dWFsIHZhbHVlcy4gIFRoZSB2YWx1
ZXMgbXVzdCBiZSBjb21wYXRpYmxlIGJ1aWx0LWluIHR5cGVzLApAQCAtMTczOSw4ICsxOTQ2LDgg
QEAgY29uc3QgVCogVGVzdFdpdGhQYXJhbTxUPjo6cGFyYW1ldGVyXyA9IE5VTEw7CiAvLyAgIGFy
ZSByZWxhdGVkLCBub3QgaG93IHRoZWlyIGNvbnRlbnQgaXMgcmVsYXRlZC4gIFRvIGNvbXBhcmUg
dHdvIEMKIC8vICAgc3RyaW5ncyBieSBjb250ZW50LCB1c2Uge0FTU0VSVHxFWFBFQ1R9X1NUUioo
KS4KIC8vCi0vLyAgIDMuIHtBU1NFUlR8RVhQRUNUfV9FUShleHBlY3RlZCwgYWN0dWFsKSBpcyBw
cmVmZXJyZWQgdG8KLS8vICAge0FTU0VSVHxFWFBFQ1R9X1RSVUUoZXhwZWN0ZWQgPT0gYWN0dWFs
KSwgYXMgdGhlIGZvcm1lciB0ZWxscyB5b3UKKy8vICAgMy4ge0FTU0VSVHxFWFBFQ1R9X0VRKHYx
LCB2MikgaXMgcHJlZmVycmVkIHRvCisvLyAgIHtBU1NFUlR8RVhQRUNUfV9UUlVFKHYxID09IHYy
KSwgYXMgdGhlIGZvcm1lciB0ZWxscyB5b3UKIC8vICAgd2hhdCB0aGUgYWN0dWFsIHZhbHVlIGlz
IHdoZW4gaXQgZmFpbHMsIGFuZCBzaW1pbGFybHkgZm9yIHRoZQogLy8gICBvdGhlciBjb21wYXJp
c29ucy4KIC8vCkBAIC0xNzUxLDE3ICsxOTU4LDE3IEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08
VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogLy8KIC8vIEV4YW1wbGVzOgogLy8KLS8vICAgRVhQRUNU
X05FKDUsIEZvbygpKTsKLS8vICAgRVhQRUNUX0VRKE5VTEwsIGFfcG9pbnRlcik7CisvLyAgIEVY
UEVDVF9ORShGb28oKSwgNSk7CisvLyAgIEVYUEVDVF9FUShhX3BvaW50ZXIsIE5VTEwpOwogLy8g
ICBBU1NFUlRfTFQoaSwgYXJyYXlfc2l6ZSk7CiAvLyAgIEFTU0VSVF9HVChyZWNvcmRzLnNpemUo
KSwgMCkgPDwgIlRoZXJlIGlzIG5vIHJlY29yZCBsZWZ0LiI7CiAKLSNkZWZpbmUgRVhQRUNUX0VR
KGV4cGVjdGVkLCBhY3R1YWwpIFwKKyNkZWZpbmUgRVhQRUNUX0VRKHZhbDEsIHZhbDIpIFwKICAg
RVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjogXAotICAgICAgICAgICAg
ICAgICAgICAgIEVxSGVscGVyPEdURVNUX0lTX05VTExfTElURVJBTF8oZXhwZWN0ZWQpPjo6Q29t
cGFyZSwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLCBhY3R1YWwpCi0jZGVmaW5l
IEVYUEVDVF9ORShleHBlY3RlZCwgYWN0dWFsKSBcCi0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0
ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyTkUsIGV4cGVjdGVkLCBhY3R1YWwpCisgICAgICAg
ICAgICAgICAgICAgICAgRXFIZWxwZXI8R1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh2YWwxKT46OkNv
bXBhcmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICB2YWwxLCB2YWwyKQorI2RlZmluZSBFWFBF
Q1RfTkUodmFsMSwgdmFsMikgXAorICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkNtcEhlbHBlck5FLCB2YWwxLCB2YWwyKQogI2RlZmluZSBFWFBFQ1RfTEUodmFsMSwg
dmFsMikgXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhl
bHBlckxFLCB2YWwxLCB2YWwyKQogI2RlZmluZSBFWFBFQ1RfTFQodmFsMSwgdmFsMikgXApAQCAt
MTc3MSwyMiArMTk3OCw0OSBAQCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJf
ID0gTlVMTDsKICNkZWZpbmUgRVhQRUNUX0dUKHZhbDEsIHZhbDIpIFwKICAgRVhQRUNUX1BSRURf
Rk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJHVCwgdmFsMSwgdmFsMikKIAot
I2RlZmluZSBBU1NFUlRfRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAorI2RlZmluZSBHVEVTVF9BU1NF
UlRfRVEodmFsMSwgdmFsMikgXAogICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50
ZXJuYWw6OiBcCi0gICAgICAgICAgICAgICAgICAgICAgRXFIZWxwZXI8R1RFU1RfSVNfTlVMTF9M
SVRFUkFMXyhleHBlY3RlZCk+OjpDb21wYXJlLCBcCi0gICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0ZWQsIGFjdHVhbCkKLSNkZWZpbmUgQVNTRVJUX05FKHZhbDEsIHZhbDIpIFwKKyAgICAgICAg
ICAgICAgICAgICAgICBFcUhlbHBlcjxHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHZhbDEpPjo6Q29t
cGFyZSwgXAorICAgICAgICAgICAgICAgICAgICAgIHZhbDEsIHZhbDIpCisjZGVmaW5lIEdURVNU
X0FTU0VSVF9ORSh2YWwxLCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5n
OjppbnRlcm5hbDo6Q21wSGVscGVyTkUsIHZhbDEsIHZhbDIpCi0jZGVmaW5lIEFTU0VSVF9MRSh2
YWwxLCB2YWwyKSBcCisjZGVmaW5lIEdURVNUX0FTU0VSVF9MRSh2YWwxLCB2YWwyKSBcCiAgIEFT
U0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyTEUsIHZhbDEs
IHZhbDIpCi0jZGVmaW5lIEFTU0VSVF9MVCh2YWwxLCB2YWwyKSBcCisjZGVmaW5lIEdURVNUX0FT
U0VSVF9MVCh2YWwxLCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6Q21wSGVscGVyTFQsIHZhbDEsIHZhbDIpCi0jZGVmaW5lIEFTU0VSVF9HRSh2YWwx
LCB2YWwyKSBcCisjZGVmaW5lIEdURVNUX0FTU0VSVF9HRSh2YWwxLCB2YWwyKSBcCiAgIEFTU0VS
VF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyR0UsIHZhbDEsIHZh
bDIpCi0jZGVmaW5lIEFTU0VSVF9HVCh2YWwxLCB2YWwyKSBcCisjZGVmaW5lIEdURVNUX0FTU0VS
VF9HVCh2YWwxLCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRl
cm5hbDo6Q21wSGVscGVyR1QsIHZhbDEsIHZhbDIpCiAKLS8vIEMgU3RyaW5nIENvbXBhcmlzb25z
LiAgQWxsIHRlc3RzIHRyZWF0IE5VTEwgYW5kIGFueSBub24tTlVMTCBzdHJpbmcKKy8vIERlZmlu
ZSBtYWNybyBHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfWFkgdG8gMSB0byBvbWl0IHRoZSBkZWZp
bml0aW9uIG9mCisvLyBBU1NFUlRfWFkoKSwgd2hpY2ggY2xhc2hlcyB3aXRoIHNvbWUgdXNlcnMn
IG93biBjb2RlLgorCisjaWYgIUdURVNUX0RPTlRfREVGSU5FX0FTU0VSVF9FUQorIyBkZWZpbmUg
QVNTRVJUX0VRKHZhbDEsIHZhbDIpIEdURVNUX0FTU0VSVF9FUSh2YWwxLCB2YWwyKQorI2VuZGlm
CisKKyNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX05FCisjIGRlZmluZSBBU1NFUlRfTkUo
dmFsMSwgdmFsMikgR1RFU1RfQVNTRVJUX05FKHZhbDEsIHZhbDIpCisjZW5kaWYKKworI2lmICFH
VEVTVF9ET05UX0RFRklORV9BU1NFUlRfTEUKKyMgZGVmaW5lIEFTU0VSVF9MRSh2YWwxLCB2YWwy
KSBHVEVTVF9BU1NFUlRfTEUodmFsMSwgdmFsMikKKyNlbmRpZgorCisjaWYgIUdURVNUX0RPTlRf
REVGSU5FX0FTU0VSVF9MVAorIyBkZWZpbmUgQVNTRVJUX0xUKHZhbDEsIHZhbDIpIEdURVNUX0FT
U0VSVF9MVCh2YWwxLCB2YWwyKQorI2VuZGlmCisKKyNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfQVNT
RVJUX0dFCisjIGRlZmluZSBBU1NFUlRfR0UodmFsMSwgdmFsMikgR1RFU1RfQVNTRVJUX0dFKHZh
bDEsIHZhbDIpCisjZW5kaWYKKworI2lmICFHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfR1QKKyMg
ZGVmaW5lIEFTU0VSVF9HVCh2YWwxLCB2YWwyKSBHVEVTVF9BU1NFUlRfR1QodmFsMSwgdmFsMikK
KyNlbmRpZgorCisvLyBDLXN0cmluZyBDb21wYXJpc29ucy4gIEFsbCB0ZXN0cyB0cmVhdCBOVUxM
IGFuZCBhbnkgbm9uLU5VTEwgc3RyaW5nCiAvLyBhcyBkaWZmZXJlbnQuICBUd28gTlVMTHMgYXJl
IGVxdWFsLgogLy8KIC8vICAgICoge0FTU0VSVHxFWFBFQ1R9X1NUUkVRKHMxLCBzMik6ICAgICBU
ZXN0cyB0aGF0IHMxID09IHMyCkBAIC0xODAyLDI5ICsyMDM2LDI5IEBAIGNvbnN0IFQqIFRlc3RX
aXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogLy8KIC8vIFRoZXNlIG1hY3JvcyBldmFs
dWF0ZSB0aGVpciBhcmd1bWVudHMgZXhhY3RseSBvbmNlLgogCi0jZGVmaW5lIEVYUEVDVF9TVFJF
UShleHBlY3RlZCwgYWN0dWFsKSBcCi0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6Q21wSGVscGVyU1RSRVEsIGV4cGVjdGVkLCBhY3R1YWwpCisjZGVmaW5lIEVYUEVD
VF9TVFJFUShzMSwgczIpIFwKKyAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVy
bmFsOjpDbXBIZWxwZXJTVFJFUSwgczEsIHMyKQogI2RlZmluZSBFWFBFQ1RfU1RSTkUoczEsIHMy
KSBcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVy
U1RSTkUsIHMxLCBzMikKLSNkZWZpbmUgRVhQRUNUX1NUUkNBU0VFUShleHBlY3RlZCwgYWN0dWFs
KSBcCi0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVy
U1RSQ0FTRUVRLCBleHBlY3RlZCwgYWN0dWFsKQorI2RlZmluZSBFWFBFQ1RfU1RSQ0FTRUVRKHMx
LCBzMikgXAorICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhl
bHBlclNUUkNBU0VFUSwgczEsIHMyKQogI2RlZmluZSBFWFBFQ1RfU1RSQ0FTRU5FKHMxLCBzMilc
CiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RS
Q0FTRU5FLCBzMSwgczIpCiAKLSNkZWZpbmUgQVNTRVJUX1NUUkVRKGV4cGVjdGVkLCBhY3R1YWwp
IFwKLSAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJT
VFJFUSwgZXhwZWN0ZWQsIGFjdHVhbCkKKyNkZWZpbmUgQVNTRVJUX1NUUkVRKHMxLCBzMikgXAor
ICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkVR
LCBzMSwgczIpCiAjZGVmaW5lIEFTU0VSVF9TVFJORShzMSwgczIpIFwKICAgQVNTRVJUX1BSRURf
Rk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJORSwgczEsIHMyKQotI2Rl
ZmluZSBBU1NFUlRfU1RSQ0FTRUVRKGV4cGVjdGVkLCBhY3R1YWwpIFwKLSAgQVNTRVJUX1BSRURf
Rk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJDQVNFRVEsIGV4cGVjdGVk
LCBhY3R1YWwpCisjZGVmaW5lIEFTU0VSVF9TVFJDQVNFRVEoczEsIHMyKSBcCisgIEFTU0VSVF9Q
UkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSQ0FTRUVRLCBzMSwg
czIpCiAjZGVmaW5lIEFTU0VSVF9TVFJDQVNFTkUoczEsIHMyKVwKICAgQVNTRVJUX1BSRURfRk9S
TUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJDQVNFTkUsIHMxLCBzMikKIAog
Ly8gTWFjcm9zIGZvciBjb21wYXJpbmcgZmxvYXRpbmctcG9pbnQgbnVtYmVycy4KIC8vCi0vLyAg
ICAqIHtBU1NFUlR8RVhQRUNUfV9GTE9BVF9FUShleHBlY3RlZCwgYWN0dWFsKToKKy8vICAgICog
e0FTU0VSVHxFWFBFQ1R9X0ZMT0FUX0VRKHZhbDEsIHZhbDIpOgogLy8gICAgICAgICBUZXN0cyB0
aGF0IHR3byBmbG9hdCB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbC4KLS8vICAgICoge0FTU0VSVHxF
WFBFQ1R9X0RPVUJMRV9FUShleHBlY3RlZCwgYWN0dWFsKToKKy8vICAgICoge0FTU0VSVHxFWFBF
Q1R9X0RPVUJMRV9FUSh2YWwxLCB2YWwyKToKIC8vICAgICAgICAgVGVzdHMgdGhhdCB0d28gZG91
YmxlIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsLgogLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTkVB
Uih2MSwgdjIsIGFic19lcnJvcik6CiAvLyAgICAgICAgIFRlc3RzIHRoYXQgdjEgYW5kIHYyIGFy
ZSB3aXRoaW4gdGhlIGdpdmVuIGRpc3RhbmNlIHRvIGVhY2ggb3RoZXIuCkBAIC0xODM0LDIxICsy
MDY4LDIxIEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwog
Ly8gRmxvYXRpbmdQb2ludCB0ZW1wbGF0ZSBjbGFzcyBpbiBndGVzdC1pbnRlcm5hbC5oIGlmIHlv
dSBhcmUKIC8vIGludGVyZXN0ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCiAKLSNk
ZWZpbmUgRVhQRUNUX0ZMT0FUX0VRKGV4cGVjdGVkLCBhY3R1YWwpXAorI2RlZmluZSBFWFBFQ1Rf
RkxPQVRfRVEodmFsMSwgdmFsMilcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6Q21wSGVscGVyRmxvYXRpbmdQb2ludEVRPGZsb2F0PiwgXAotICAgICAgICAgICAg
ICAgICAgICAgIGV4cGVjdGVkLCBhY3R1YWwpCisgICAgICAgICAgICAgICAgICAgICAgdmFsMSwg
dmFsMikKIAotI2RlZmluZSBFWFBFQ1RfRE9VQkxFX0VRKGV4cGVjdGVkLCBhY3R1YWwpXAorI2Rl
ZmluZSBFWFBFQ1RfRE9VQkxFX0VRKHZhbDEsIHZhbDIpXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckZsb2F0aW5nUG9pbnRFUTxkb3VibGU+LCBc
Ci0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQsIGFjdHVhbCkKKyAgICAgICAgICAgICAg
ICAgICAgICB2YWwxLCB2YWwyKQogCi0jZGVmaW5lIEFTU0VSVF9GTE9BVF9FUShleHBlY3RlZCwg
YWN0dWFsKVwKKyNkZWZpbmUgQVNTRVJUX0ZMT0FUX0VRKHZhbDEsIHZhbDIpXAogICBBU1NFUlRf
UFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckZsb2F0aW5nUG9pbnRF
UTxmbG9hdD4sIFwKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwgYWN0dWFsKQorICAg
ICAgICAgICAgICAgICAgICAgIHZhbDEsIHZhbDIpCiAKLSNkZWZpbmUgQVNTRVJUX0RPVUJMRV9F
UShleHBlY3RlZCwgYWN0dWFsKVwKKyNkZWZpbmUgQVNTRVJUX0RPVUJMRV9FUSh2YWwxLCB2YWwy
KVwKICAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJG
bG9hdGluZ1BvaW50RVE8ZG91YmxlPiwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
LCBhY3R1YWwpCisgICAgICAgICAgICAgICAgICAgICAgdmFsMSwgdmFsMikKIAogI2RlZmluZSBF
WFBFQ1RfTkVBUih2YWwxLCB2YWwyLCBhYnNfZXJyb3IpXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQz
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkRvdWJsZU5lYXJQcmVkRm9ybWF0LCBcCkBAIC0xODgyLDE2
ICsyMTE2LDE2IEBAIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IERvdWJsZUxFKGNvbnN0IGNo
YXIqIGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwKIC8vIGV4cGVjdGVkIHJlc3VsdCBhbmQgdGhl
IGFjdHVhbCByZXN1bHQgd2l0aCBib3RoIGEgaHVtYW4tcmVhZGFibGUKIC8vIHN0cmluZyByZXBy
ZXNlbnRhdGlvbiBvZiB0aGUgZXJyb3IsIGlmIGF2YWlsYWJsZSwgYXMgd2VsbCBhcyB0aGUKIC8v
IGhleCByZXN1bHQgY29kZS4KLSNkZWZpbmUgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKGV4cHIp
IFwKKyMgZGVmaW5lIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChleHByKSBcCiAgICAgRVhQRUNU
X1BSRURfRk9STUFUMSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hSRVNVTFRTdWNjZXNzLCAoZXhw
cikpCiAKLSNkZWZpbmUgQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKGV4cHIpIFwKKyMgZGVmaW5l
IEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChleHByKSBcCiAgICAgQVNTRVJUX1BSRURfRk9STUFU
MSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hSRVNVTFRTdWNjZXNzLCAoZXhwcikpCiAKLSNkZWZp
bmUgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKGV4cHIpIFwKKyMgZGVmaW5lIEVYUEVDVF9IUkVTVUxU
X0ZBSUxFRChleHByKSBcCiAgICAgRVhQRUNUX1BSRURfRk9STUFUMSg6OnRlc3Rpbmc6OmludGVy
bmFsOjpJc0hSRVNVTFRGYWlsdXJlLCAoZXhwcikpCiAKLSNkZWZpbmUgQVNTRVJUX0hSRVNVTFRf
RkFJTEVEKGV4cHIpIFwKKyMgZGVmaW5lIEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChleHByKSBcCiAg
ICAgQVNTRVJUX1BSRURfRk9STUFUMSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hSRVNVTFRGYWls
dXJlLCAoZXhwcikpCiAKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwpAQCAtMTkxMSw2ICsy
MTQ1LDU3IEBAIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IERvdWJsZUxFKGNvbnN0IGNoYXIq
IGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwKICNkZWZpbmUgRVhQRUNUX05PX0ZBVEFMX0ZBSUxV
UkUoc3RhdGVtZW50KSBcCiAgICAgR1RFU1RfVEVTVF9OT19GQVRBTF9GQUlMVVJFXyhzdGF0ZW1l
bnQsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVfKQogCisvLyBDYXVzZXMgYSB0cmFjZSAoaW5jbHVk
aW5nIHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBwYXRoIGFuZCBsaW5lIG51bWJlciwKKy8vIGFuZCB0
aGUgZ2l2ZW4gbWVzc2FnZSkgdG8gYmUgaW5jbHVkZWQgaW4gZXZlcnkgdGVzdCBmYWlsdXJlIG1l
c3NhZ2UgZ2VuZXJhdGVkCisvLyBieSBjb2RlIGluIHRoZSBzY29wZSBvZiB0aGUgbGlmZXRpbWUg
b2YgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy4gVGhlIGVmZmVjdAorLy8gaXMgdW5kb25lIHdp
dGggdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZS4KKy8vCisvLyBUaGUgbWVzc2FnZSBh
cmd1bWVudCBjYW4gYmUgYW55dGhpbmcgc3RyZWFtYWJsZSB0byBzdGQ6Om9zdHJlYW0uCisvLwor
Ly8gRXhhbXBsZToKKy8vICAgdGVzdGluZzo6U2NvcGVkVHJhY2UgdHJhY2UoImZpbGUuY2MiLCAx
MjMsICJtZXNzYWdlIik7CisvLworY2xhc3MgR1RFU1RfQVBJXyBTY29wZWRUcmFjZSB7CisgcHVi
bGljOgorICAvLyBUaGUgYyd0b3IgcHVzaGVzIHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlv
biBhbmQgbWVzc2FnZSBvbnRvCisgIC8vIGEgdHJhY2Ugc3RhY2sgbWFpbnRhaW5lZCBieSBHb29n
bGUgVGVzdC4KKworICAvLyBUZW1wbGF0ZSB2ZXJzaW9uLiBVc2VzIE1lc3NhZ2UoKSB0byBjb252
ZXJ0IHRoZSB2YWx1ZXMgaW50byBzdHJpbmdzLgorICAvLyBTbG93LCBidXQgZmxleGlibGUuCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBTY29wZWRUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBp
bnQgbGluZSwgY29uc3QgVCYgbWVzc2FnZSkgeworICAgIFB1c2hUcmFjZShmaWxlLCBsaW5lLCAo
TWVzc2FnZSgpIDw8IG1lc3NhZ2UpLkdldFN0cmluZygpKTsKKyAgfQorCisgIC8vIE9wdGltaXpl
IGZvciBzb21lIGtub3duIHR5cGVzLgorICBTY29wZWRUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBp
bnQgbGluZSwgY29uc3QgY2hhciogbWVzc2FnZSkgeworICAgIFB1c2hUcmFjZShmaWxlLCBsaW5l
LCBtZXNzYWdlID8gbWVzc2FnZSA6ICIobnVsbCkiKTsKKyAgfQorCisjaWYgR1RFU1RfSEFTX0dM
T0JBTF9TVFJJTkcKKyAgU2NvcGVkVHJhY2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNv
bnN0IDo6c3RyaW5nJiBtZXNzYWdlKSB7CisgICAgUHVzaFRyYWNlKGZpbGUsIGxpbmUsIG1lc3Nh
Z2UpOworICB9CisjZW5kaWYKKworICBTY29wZWRUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBpbnQg
bGluZSwgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsKKyAgICBQdXNoVHJhY2UoZmlsZSwg
bGluZSwgbWVzc2FnZSk7CisgIH0KKworICAvLyBUaGUgZCd0b3IgcG9wcyB0aGUgaW5mbyBwdXNo
ZWQgYnkgdGhlIGMndG9yLgorICAvLworICAvLyBOb3RlIHRoYXQgdGhlIGQndG9yIGlzIG5vdCB2
aXJ0dWFsIGluIG9yZGVyIHRvIGJlIGVmZmljaWVudC4KKyAgLy8gRG9uJ3QgaW5oZXJpdCBmcm9t
IFNjb3BlZFRyYWNlIQorICB+U2NvcGVkVHJhY2UoKTsKKworIHByaXZhdGU6CisgIHZvaWQgUHVz
aFRyYWNlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBzdGQ6OnN0cmluZyBtZXNzYWdlKTsK
KworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNjb3BlZFRyYWNlKTsKK30gR1RF
U1RfQVRUUklCVVRFX1VOVVNFRF87ICAvLyBBIFNjb3BlZFRyYWNlIG9iamVjdCBkb2VzIGl0cyBq
b2IgaW4gaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYyd0b3IgYW5kIGQndG9y
LiAgVGhlcmVmb3JlIGl0IGRvZXNuJ3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBu
ZWVkIHRvIGJlIHVzZWQgb3RoZXJ3aXNlLgorCiAvLyBDYXVzZXMgYSB0cmFjZSAoaW5jbHVkaW5n
IHRoZSBzb3VyY2UgZmlsZSBwYXRoLCB0aGUgY3VycmVudCBsaW5lCiAvLyBudW1iZXIsIGFuZCB0
aGUgZ2l2ZW4gbWVzc2FnZSkgdG8gYmUgaW5jbHVkZWQgaW4gZXZlcnkgdGVzdCBmYWlsdXJlCiAv
LyBtZXNzYWdlIGdlbmVyYXRlZCBieSBjb2RlIGluIHRoZSBjdXJyZW50IHNjb3BlLiAgVGhlIGVm
ZmVjdCBpcwpAQCAtMTkyMiwyMCArMjIwNywxNCBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3Vs
dCBEb3VibGVMRShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIsCiAvLyBvZiB0
aGUgZHVtbXkgdmFyaWFibGUgbmFtZSwgdGh1cyBhbGxvd2luZyBtdWx0aXBsZSBTQ09QRURfVFJB
Q0UoKXMKIC8vIHRvIGFwcGVhciBpbiB0aGUgc2FtZSBibG9jayAtIGFzIGxvbmcgYXMgdGhleSBh
cmUgb24gZGlmZmVyZW50CiAvLyBsaW5lcy4KKy8vCisvLyBBc3N1bWluZyB0aGF0IGVhY2ggdGhy
ZWFkIG1haW50YWlucyBpdHMgb3duIHN0YWNrIG9mIHRyYWNlcy4KKy8vIFRoZXJlZm9yZSwgYSBT
Q09QRURfVFJBQ0UoKSB3b3VsZCAoY29ycmVjdGx5KSBvbmx5IGFmZmVjdCB0aGUKKy8vIGFzc2Vy
dGlvbnMgaW4gaXRzIG93biB0aHJlYWQuCiAjZGVmaW5lIFNDT1BFRF9UUkFDRShtZXNzYWdlKSBc
Ci0gIDo6dGVzdGluZzo6aW50ZXJuYWw6OlNjb3BlZFRyYWNlIEdURVNUX0NPTkNBVF9UT0tFTl8o
Z3Rlc3RfdHJhY2VfLCBfX0xJTkVfXykoXAotICAgIF9fRklMRV9fLCBfX0xJTkVfXywgOjp0ZXN0
aW5nOjpNZXNzYWdlKCkgPDwgKG1lc3NhZ2UpKQotCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0v
LyBUaGlzIHRlbXBsYXRlIGlzIGRlY2xhcmVkLCBidXQgaW50ZW50aW9uYWxseSB1bmRlZmluZWQu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotc3RydWN0IFN0YXRpY0Fzc2Vy
dFR5cGVFcUhlbHBlcjsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgU3RhdGljQXNz
ZXJ0VHlwZUVxSGVscGVyPFQsIFQ+IHt9OworICA6OnRlc3Rpbmc6OlNjb3BlZFRyYWNlIEdURVNU
X0NPTkNBVF9UT0tFTl8oZ3Rlc3RfdHJhY2VfLCBfX0xJTkVfXykoXAorICAgIF9fRklMRV9fLCBf
X0xJTkVfXywgKG1lc3NhZ2UpKQogCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAogLy8gQ29t
cGlsZS10aW1lIGFzc2VydGlvbiBmb3IgdHlwZSBlcXVhbGl0eS4KIC8vIFN0YXRpY0Fzc2VydFR5
cGVFcTx0eXBlMSwgdHlwZTI+KCkgY29tcGlsZXMgaWZmIHR5cGUxIGFuZCB0eXBlMiBhcmUKQEAg
LTE5NjksNyArMjI0OCw3IEBAIHN0cnVjdCBTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI8VCwgVD4g
e307CiAvLyB0byBjYXVzZSBhIGNvbXBpbGVyIGVycm9yLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMj4KIGJvb2wgU3RhdGljQXNzZXJ0VHlwZUVxKCkgewotICBpbnRlcm5hbDo6
U3RhdGljQXNzZXJ0VHlwZUVxSGVscGVyPFQxLCBUMj4oKTsKKyAgKHZvaWQpaW50ZXJuYWw6OlN0
YXRpY0Fzc2VydFR5cGVFcUhlbHBlcjxUMSwgVDI+KCk7CiAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0xOTgxLDggKzIyNjAsOCBAQCBib29sIFN0YXRpY0Fzc2VydFR5cGVFcSgpIHsKIC8vIFRoZSBj
b252ZW50aW9uIGlzIHRvIGVuZCB0aGUgdGVzdCBjYXNlIG5hbWUgd2l0aCAiVGVzdCIuICBGb3IK
IC8vIGV4YW1wbGUsIGEgdGVzdCBjYXNlIGZvciB0aGUgRm9vIGNsYXNzIGNhbiBiZSBuYW1lZCBG
b29UZXN0LgogLy8KLS8vIFRoZSB1c2VyIHNob3VsZCBwdXQgaGlzIHRlc3QgY29kZSBiZXR3ZWVu
IGJyYWNlcyBhZnRlciB1c2luZyB0aGlzCi0vLyBtYWNyby4gIEV4YW1wbGU6CisvLyBUZXN0IGNv
ZGUgc2hvdWxkIGFwcGVhciBiZXR3ZWVuIGJyYWNlcyBhZnRlciBhbiBpbnZvY2F0aW9uIG9mCisv
LyB0aGlzIG1hY3JvLiAgRXhhbXBsZToKIC8vCiAvLyAgIFRFU1QoRm9vVGVzdCwgSW5pdGlhbGl6
ZXNDb3JyZWN0bHkpIHsKIC8vICAgICBGb28gZm9vOwpAQCAtMjAwNSw3ICsyMjg0LDcgQEAgYm9v
bCBTdGF0aWNBc3NlcnRUeXBlRXEoKSB7CiAvLyBEZWZpbmUgdGhpcyBtYWNybyB0byAxIHRvIG9t
aXQgdGhlIGRlZmluaXRpb24gb2YgVEVTVCgpLCB3aGljaAogLy8gaXMgYSBnZW5lcmljIG5hbWUg
YW5kIGNsYXNoZXMgd2l0aCBzb21lIG90aGVyIGxpYnJhcmllcy4KICNpZiAhR1RFU1RfRE9OVF9E
RUZJTkVfVEVTVAotI2RlZmluZSBURVNUKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIEdURVNU
X1RFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkKKyMgZGVmaW5lIFRFU1QodGVzdF9jYXNl
X25hbWUsIHRlc3RfbmFtZSkgR1RFU1RfVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKQog
I2VuZGlmCiAKIC8vIERlZmluZXMgYSB0ZXN0IHRoYXQgdXNlcyBhIHRlc3QgZml4dHVyZS4KQEAg
LTIwMTUsNyArMjI5NCw3IEBAIGJvb2wgU3RhdGljQXNzZXJ0VHlwZUVxKCkgewogLy8gbmFtZSBv
ZiB0aGUgdGVzdCB3aXRoaW4gdGhlIHRlc3QgY2FzZS4KIC8vCiAvLyBBIHRlc3QgZml4dHVyZSBj
bGFzcyBtdXN0IGJlIGRlY2xhcmVkIGVhcmxpZXIuICBUaGUgdXNlciBzaG91bGQgcHV0Ci0vLyBo
aXMgdGVzdCBjb2RlIGJldHdlZW4gYnJhY2VzIGFmdGVyIHVzaW5nIHRoaXMgbWFjcm8uICBFeGFt
cGxlOgorLy8gdGhlIHRlc3QgY29kZSBiZXR3ZWVuIGJyYWNlcyBhZnRlciB1c2luZyB0aGlzIG1h
Y3JvLiAgRXhhbXBsZToKIC8vCiAvLyAgIGNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7CiAvLyAgICBwcm90ZWN0ZWQ6CkBAIC0yMDMwLDIzICsyMzA5LDM4IEBAIGJvb2wgU3Rh
dGljQXNzZXJ0VHlwZUVxKCkgewogLy8gICB9CiAvLwogLy8gICBURVNUX0YoRm9vVGVzdCwgUmV0
dXJuc0VsZW1lbnRDb3VudENvcnJlY3RseSkgewotLy8gICAgIEVYUEVDVF9FUSgwLCBhXy5zaXpl
KCkpOwotLy8gICAgIEVYUEVDVF9FUSgxLCBiXy5zaXplKCkpOworLy8gICAgIEVYUEVDVF9FUShh
Xy5zaXplKCksIDApOworLy8gICAgIEVYUEVDVF9FUShiXy5zaXplKCksIDEpOwogLy8gICB9CiAK
ICNkZWZpbmUgVEVTVF9GKHRlc3RfZml4dHVyZSwgdGVzdF9uYW1lKVwKICAgR1RFU1RfVEVTVF8o
dGVzdF9maXh0dXJlLCB0ZXN0X25hbWUsIHRlc3RfZml4dHVyZSwgXAogICAgICAgICAgICAgICA6
OnRlc3Rpbmc6OmludGVybmFsOjpHZXRUeXBlSWQ8dGVzdF9maXh0dXJlPigpKQogCi0vLyBVc2Ug
dGhpcyBtYWNybyBpbiBtYWluKCkgdG8gcnVuIGFsbCB0ZXN0cy4gIEl0IHJldHVybnMgMCBpZiBh
bGwKKy8vIFJldHVybnMgYSBwYXRoIHRvIHRlbXBvcmFyeSBkaXJlY3RvcnkuCisvLyBUcmllcyB0
byBkZXRlcm1pbmUgYW4gYXBwcm9wcmlhdGUgZGlyZWN0b3J5IGZvciB0aGUgcGxhdGZvcm0uCitH
VEVTVF9BUElfIHN0ZDo6c3RyaW5nIFRlbXBEaXIoKTsKKworI2lmZGVmIF9NU0NfVkVSCisjICBw
cmFnbWEgd2FybmluZyhwb3ApCisjZW5kaWYKKworfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKwor
Ly8gVXNlIHRoaXMgZnVuY3Rpb24gaW4gbWFpbigpIHRvIHJ1biBhbGwgdGVzdHMuICBJdCByZXR1
cm5zIDAgaWYgYWxsCiAvLyB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3IgMSBvdGhlcndpc2UuCiAv
LwogLy8gUlVOX0FMTF9URVNUUygpIHNob3VsZCBiZSBpbnZva2VkIGFmdGVyIHRoZSBjb21tYW5k
IGxpbmUgaGFzIGJlZW4KIC8vIHBhcnNlZCBieSBJbml0R29vZ2xlVGVzdCgpLgorLy8KKy8vIFRo
aXMgZnVuY3Rpb24gd2FzIGZvcm1lcmx5IGEgbWFjcm87IHRodXMsIGl0IGlzIGluIHRoZSBnbG9i
YWwKKy8vIG5hbWVzcGFjZSBhbmQgaGFzIGFuIGFsbC1jYXBzIG5hbWUuCitpbnQgUlVOX0FMTF9U
RVNUUygpIEdURVNUX01VU1RfVVNFX1JFU1VMVF87CiAKLSNkZWZpbmUgUlVOX0FMTF9URVNUUygp
XAotICAoOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+UnVuKCkpCitpbmxpbmUg
aW50IFJVTl9BTExfVEVTVFMoKSB7CisgIHJldHVybiA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5SdW4oKTsKK30KIAotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKK0dURVNUX0RJ
U0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQyNTEKIAogI2VuZGlmICAvLyBHVEVTVF9J
TkNMVURFX0dURVNUX0dURVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcmVkX2ltcGwuaAppbmRleCBlMWUyZjhjNGM4ODdhOGRl
ZmNiNzU4Y2EwY2FhYjNiN2NlYjlkNDFhLi4wYzExMDVjYjhlYjJlZjdjMjYxNmU2N2ZmNTU1NmFh
YjI5ZmYyZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmgKQEAgLTI3LDE4ICsyNywxOSBAQAogLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0vLyBUaGlzIGZpbGUgaXMgQVVUT01BVElDQUxMWSBH
RU5FUkFURUQgb24gMTAvMDIvMjAwOCBieSBjb21tYW5kCisvLyBUaGlzIGZpbGUgaXMgQVVUT01B
VElDQUxMWSBHRU5FUkFURUQgb24gMDEvMDIvMjAxOCBieSBjb21tYW5kCiAvLyAnZ2VuX2d0ZXN0
X3ByZWRfaW1wbC5weSA1Jy4gIERPIE5PVCBFRElUIEJZIEhBTkQhCiAvLwogLy8gSW1wbGVtZW50
cyBhIGZhbWlseSBvZiBnZW5lcmljIHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9zLgogCisvLyBH
T09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9H
VEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVT
VF9QUkVEX0lNUExfSF8KIAotLy8gTWFrZXMgc3VyZSB0aGlzIGhlYWRlciBpcyBub3QgaW5jbHVk
ZWQgYmVmb3JlIGd0ZXN0LmguCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8K
LSNlcnJvciBEbyBub3QgaW5jbHVkZSBndGVzdF9wcmVkX2ltcGwuaCBkaXJlY3RseS4gIEluY2x1
ZGUgZ3Rlc3QuaCBpbnN0ZWFkLgotI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNU
X0hfCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHRlc3RpbmcgewogCiAv
LyBUaGlzIGhlYWRlciBpbXBsZW1lbnRzIGEgZmFtaWx5IG9mIGdlbmVyaWMgcHJlZGljYXRlIGFz
c2VydGlvbgogLy8gbWFjcm9zOgpAQCAtNjYsOCArNjcsNiBAQAogLy8gV2UgYWxzbyBkZWZpbmUg
dGhlIEVYUEVDVF8qIHZhcmlhdGlvbnMuCiAvLwogLy8gRm9yIG5vdyB3ZSBvbmx5IHN1cHBvcnQg
cHJlZGljYXRlcyB3aG9zZSBhcml0eSBpcyBhdCBtb3N0IDUuCi0vLyBQbGVhc2UgZW1haWwgZ29v
Z2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tIGlmIHlvdSBuZWVkCi0vLyBzdXBwb3J0
IGZvciBoaWdoZXIgYXJpdGllcy4KIAogLy8gR1RFU1RfQVNTRVJUXyBpcyB0aGUgYmFzaWMgc3Rh
dGVtZW50IHRvIHdoaWNoIGFsbCBvZiB0aGUgYXNzZXJ0aW9ucwogLy8gaW4gdGhpcyBmaWxlIHJl
ZHVjZS4gIERvbid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KQEAgLTkwLDE3ICs4OSwxNSBAQCBB
c3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDFIZWxwZXIoY29uc3QgY2hhciogcHJlZF90ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiB2MSkgewogICBpZiAo
cHJlZCh2MSkpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0g
IG1zZyA8PCBwcmVkX3RleHQgPDwgIigiCi0gICAgICA8PCBlMSA8PCAiKSBldmFsdWF0ZXMgdG8g
ZmFsc2UsIHdoZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8
IHYxOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9u
RmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCBlMSA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MTsKIH0K
IAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJF
RF9GT1JNQVQxLgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVT
VF9QUkVEX0ZPUk1BVDFfKHByZWRfZm9ybWF0LCB2MSwgb25fZmFpbHVyZSlcCi0gIEdURVNUX0FT
U0VSVF8ocHJlZF9mb3JtYXQoI3YxLCB2MSksXAorICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0
KCN2MSwgdjEpLCBcCiAgICAgICAgICAgICAgICAgb25fZmFpbHVyZSkKIAogLy8gSW50ZXJuYWwg
bWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRDEuICBEb24ndCB1c2UK
QEAgLTEzNiwxOSArMTMzLDE3IEBAIEFzc2VydGlvblJlc3VsdCBBc3NlcnRQcmVkMkhlbHBlcihj
b25zdCBjaGFyKiBwcmVkX3RleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVDImIHYyKSB7CiAgIGlmIChwcmVkKHYxLCB2MikpIHJldHVybiBBc3NlcnRpb25TdWNj
ZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBwcmVkX3RleHQgPDwgIigiCi0gICAg
ICA8PCBlMSA8PCAiLCAiCi0gICAgICA8PCBlMiA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdo
ZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxCi0gICAg
ICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjI7Ci0gIHJldHVybiBBc3Nl
cnRpb25GYWlsdXJlKG1zZyk7CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgcHJlZF90
ZXh0IDw8ICIoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUxIDw8ICIsICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMiA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2Us
IHdoZXJlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBl
dmFsdWF0ZXMgdG8gIiA8PCB2MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIg
PDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MjsKIH0KIAogLy8gSW50ZXJuYWwgbWFjcm8g
Zm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQyLgogLy8gRG9uJ3Qg
dXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDJfKHByZWRf
Zm9ybWF0LCB2MSwgdjIsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0
KCN2MSwgI3YyLCB2MSwgdjIpLFwKKyAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2
MiwgdjEsIHYyKSwgXAogICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVybmFs
IG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQyLiAgRG9uJ3QgdXNl
CkBAIC0xODksMjEgKzE4NCwxOSBAQCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDNIZWxwZXIo
Y29uc3QgY2hhciogcHJlZF90ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFQzJiB2MykgewogICBpZiAocHJlZCh2MSwgdjIsIHYzKSkgcmV0dXJuIEFzc2VydGlv
blN1Y2Nlc3MoKTsKIAotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IHByZWRfdGV4dCA8PCAiKCIK
LSAgICAgIDw8IGUxIDw8ICIsICIKLSAgICAgIDw8IGUyIDw8ICIsICIKLSAgICAgIDw8IGUzIDw8
ICIpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmUiCi0gICAgICA8PCAiXG4iIDw8IGUxIDw8ICIg
ZXZhbHVhdGVzIHRvICIgPDwgdjEKLSAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0ZXMg
dG8gIiA8PCB2MgotICAgICAgPDwgIlxuIiA8PCBlMyA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYz
OwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFp
bHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
PCBlMSA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTIgPDwgIiwgIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUzIDw8ICIpIGV2YWx1YXRlcyB0byBmYWxz
ZSwgd2hlcmUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIiA8PCBlMSA8PCAi
IGV2YWx1YXRlcyB0byAiIDw8IHYxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxu
IiA8PCBlMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYyCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgIlxuIiA8PCBlMyA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYzOwogfQogCiAvLyBJ
bnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEX0ZPUk1B
VDMuCiAvLyBEb24ndCB1c2UgdGhpcyBpbiB5b3VyIGNvZGUuCiAjZGVmaW5lIEdURVNUX1BSRURf
Rk9STUFUM18ocHJlZF9mb3JtYXQsIHYxLCB2MiwgdjMsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9B
U1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAjdjMsIHYxLCB2MiwgdjMpLFwKKyAgR1RFU1Rf
QVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3YzLCB2MSwgdjIsIHYzKSwgXAogICAgICAg
ICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRp
bmcge0VYUEVDVHxBU1NFUlR9X1BSRUQzLiAgRG9uJ3QgdXNlCkBAIC0yNDksMjMgKzI0MiwyMSBA
QCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDRIZWxwZXIoY29uc3QgY2hhciogcHJlZF90ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQ0JiB2NCkgewogICBp
ZiAocHJlZCh2MSwgdjIsIHYzLCB2NCkpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAg
TWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBwcmVkX3RleHQgPDwgIigiCi0gICAgICA8PCBlMSA8PCAi
LCAiCi0gICAgICA8PCBlMiA8PCAiLCAiCi0gICAgICA8PCBlMyA8PCAiLCAiCi0gICAgICA8PCBl
NCA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8
PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxCi0gICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVh
dGVzIHRvICIgPDwgdjIKLSAgICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8
PCB2MwotICAgICAgPDwgIlxuIiA8PCBlNCA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHY0OwotICBy
ZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgp
IDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMSA8
PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTIgPDwgIiwgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8IGUzIDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCBlNCA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2
MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0
ZXMgdG8gIiA8PCB2MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTMg
PDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICJcbiIgPDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NDsKIH0KIAogLy8gSW50ZXJuYWwg
bWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQ0LgogLy8g
RG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDRf
KHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCB2NCwgb25fZmFpbHVyZSlcCi0gIEdURVNUX0FTU0VS
VF8ocHJlZF9mb3JtYXQoI3YxLCAjdjIsICN2MywgI3Y0LCB2MSwgdjIsIHYzLCB2NCksXAorICBH
VEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAjdjMsICN2NCwgdjEsIHYyLCB2Mywg
djQpLCBcCiAgICAgICAgICAgICAgICAgb25fZmFpbHVyZSkKIAogLy8gSW50ZXJuYWwgbWFjcm8g
Zm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRDQuICBEb24ndCB1c2UKQEAgLTMx
NiwyNSArMzA3LDIzIEBAIEFzc2VydGlvblJlc3VsdCBBc3NlcnRQcmVkNUhlbHBlcihjb25zdCBj
aGFyKiBwcmVkX3RleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VDUmIHY1KSB7CiAgIGlmIChwcmVkKHYxLCB2MiwgdjMsIHY0LCB2NSkpIHJldHVybiBBc3NlcnRp
b25TdWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBwcmVkX3RleHQgPDwgIigi
Ci0gICAgICA8PCBlMSA8PCAiLCAiCi0gICAgICA8PCBlMiA8PCAiLCAiCi0gICAgICA8PCBlMyA8
PCAiLCAiCi0gICAgICA8PCBlNCA8PCAiLCAiCi0gICAgICA8PCBlNSA8PCAiKSBldmFsdWF0ZXMg
dG8gZmFsc2UsIHdoZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAi
IDw8IHYxCi0gICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjIKLSAg
ICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MwotICAgICAgPDwgIlxu
IiA8PCBlNCA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHY0Ci0gICAgICA8PCAiXG4iIDw8IGU1IDw8
ICIgZXZhbHVhdGVzIHRvICIgPDwgdjU7Ci0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7
CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgcHJlZF90ZXh0IDw8ICIoIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8IGUxIDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCBlMiA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTMg
PDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGU0IDw8ICIsICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCBlNSA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdo
ZXJlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFs
dWF0ZXMgdG8gIiA8PCB2MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwg
ZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTUgPDwgIiBldmFsdWF0ZXMgdG8g
IiA8PCB2NTsKIH0KIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNU
fEFTU0VSVH1fUFJFRF9GT1JNQVQ1LgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgog
I2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDVfKHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCB2NCwg
djUsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAj
djMsICN2NCwgI3Y1LCB2MSwgdjIsIHYzLCB2NCwgdjUpLFwKKyAgR1RFU1RfQVNTRVJUXyhwcmVk
X2Zvcm1hdCgjdjEsICN2MiwgI3YzLCAjdjQsICN2NSwgdjEsIHYyLCB2MywgdjQsIHY1KSwgXAog
ICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBs
ZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQ1LiAgRG9uJ3QgdXNlCkBAIC0zNjUsNCArMzU0
LDYgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQ1SGVscGVyKGNvbnN0IGNoYXIqIHByZWRf
dGV4dCwKIAogCiAKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKICNlbmRpZiAgLy8gR1RFU1Rf
SU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmgKaW5kZXggZGE4MGRkYzZjNzBlZTJk
Yzc3M2VkNjc2NWE0Zjg5ZGZhOGNiMzhlOC4uZTY1MTY3MWViZGU4NTlmYzczMWI1NDU5YmRjMDY2
MWFmMDc1N2NiNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdF9wcm9kLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdF9wcm9kLmgKQEAgLTI2LDEwICsyNiwxMCBAQAogLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsg
ZGVmaW5pdGlvbnMgdXNlZnVsIGluIHByb2R1Y3Rpb24gY29kZS4KKy8vIEdvb2dsZSBDKysgVGVz
dGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgZGVmaW5pdGlvbnMgdXNlZnVsIGluIHByb2R1Y3Rp
b24gY29kZS4KKy8vIEdPT0dMRVRFU1RfQ00wMDAzIERPIE5PVCBERUxFVEUKIAogI2lmbmRlZiBH
VEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BST0RfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9H
VEVTVF9HVEVTVF9QUk9EX0hfCkBAIC00MCwxNyArNDAsMjAgQEAKIC8vCiAvLyBjbGFzcyBNeUNs
YXNzIHsKIC8vICBwcml2YXRlOgotLy8gICB2b2lkIE15TWV0aG9kKCk7Ci0vLyAgIEZSSUVORF9U
RVNUKE15Q2xhc3NUZXN0LCBNeU1ldGhvZCk7CisvLyAgIHZvaWQgUHJpdmF0ZU1ldGhvZCgpOwor
Ly8gICBGUklFTkRfVEVTVChNeUNsYXNzVGVzdCwgUHJpdmF0ZU1ldGhvZFdvcmtzKTsKIC8vIH07
CiAvLwogLy8gY2xhc3MgTXlDbGFzc1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAvLyAg
IC8vIC4uLgogLy8gfTsKIC8vCi0vLyBURVNUX0YoTXlDbGFzc1Rlc3QsIE15TWV0aG9kKSB7Ci0v
LyAgIC8vIENhbiBjYWxsIE15Q2xhc3M6Ok15TWV0aG9kKCkgaGVyZS4KKy8vIFRFU1RfRihNeUNs
YXNzVGVzdCwgUHJpdmF0ZU1ldGhvZFdvcmtzKSB7CisvLyAgIC8vIENhbiBjYWxsIE15Q2xhc3M6
OlByaXZhdGVNZXRob2QoKSBoZXJlLgogLy8gfQorLy8KKy8vIE5vdGU6IFRoZSB0ZXN0IGNsYXNz
IG11c3QgYmUgaW4gdGhlIHNhbWUgbmFtZXNwYWNlIGFzIHRoZSBjbGFzcyBiZWluZyB0ZXN0ZWQu
CisvLyBGb3IgZXhhbXBsZSwgcHV0dGluZyBNeUNsYXNzVGVzdCBpbiBhbiBhbm9ueW1vdXMgbmFt
ZXNwYWNlIHdpbGwgbm90IHdvcmsuCiAKICNkZWZpbmUgRlJJRU5EX1RFU1QodGVzdF9jYXNlX25h
bWUsIHRlc3RfbmFtZSlcCiBmcmllbmQgY2xhc3MgdGVzdF9jYXNlX25hbWUjI18jI3Rlc3RfbmFt
ZSMjX1Rlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvY3VzdG9tL1JFQURNRS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjM5MWZi
NGUyYjU3NjVjYWM4YzY5NDMzNTliMTViYmQ1ZjRmMTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vUkVBRE1F
Lm1kCkBAIC0wLDAgKzEsNTYgQEAKKyMgQ3VzdG9taXphdGlvbiBQb2ludHMKKworVGhlIGN1c3Rv
bSBkaXJlY3RvcnkgaXMgYW4gaW5qZWN0aW9uIHBvaW50IGZvciBjdXN0b20gdXNlciBjb25maWd1
cmF0aW9ucy4KKworIyMgSGVhZGVyIGBndGVzdC5oYAorCisjIyMgVGhlIGZvbGxvd2luZyBtYWNy
b3MgY2FuIGJlIGRlZmluZWQ6CisKKyogICBgR1RFU1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVSX2Ag
LSBUaGUgbmFtZSBvZiBhbiBpbXBsZW1lbnRhdGlvbiBvZgorICAgIGBPc1N0YWNrVHJhY2VHZXR0
ZXJJbnRlcmZhY2VgLgorKiAgIGBHVEVTVF9DVVNUT01fVEVNUERJUl9GVU5DVElPTl9gIC0gQW4g
b3ZlcnJpZGUgZm9yIGB0ZXN0aW5nOjpUZW1wRGlyKClgLiBTZWUKKyAgICBgdGVzdGluZzo6VGVt
cERpcmAgZm9yIHNlbWFudGljcyBhbmQgc2lnbmF0dXJlLgorCisjIyBIZWFkZXIgYGd0ZXN0LXBv
cnQuaGAKKworVGhlIGZvbGxvd2luZyBtYWNyb3MgY2FuIGJlIGRlZmluZWQ6CisKKyMjIyBGbGFn
IHJlbGF0ZWQgbWFjcm9zOgorCisqICAgYEdURVNUX0ZMQUcoZmxhZ19uYW1lKWAKKyogICBgR1RF
U1RfVVNFX09XTl9GTEFHRklMRV9GTEFHX2AgLSBEZWZpbmUgdG8gMCB3aGVuIHRoZSBzeXN0ZW0g
cHJvdmlkZXMgaXRzCisgICAgb3duIGZsYWdmaWxlIGZsYWcgcGFyc2luZy4KKyogICBgR1RFU1Rf
REVDTEFSRV9ib29sXyhuYW1lKWAKKyogICBgR1RFU1RfREVDTEFSRV9pbnQzMl8obmFtZSlgCisq
ICAgYEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhuYW1lKWAKKyogICBgR1RFU1RfREVGSU5FX2Jvb2xf
KG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpYAorKiAgIGBHVEVTVF9ERUZJTkVfaW50MzJfKG5hbWUs
IGRlZmF1bHRfdmFsLCBkb2MpYAorKiAgIGBHVEVTVF9ERUZJTkVfc3RyaW5nXyhuYW1lLCBkZWZh
dWx0X3ZhbCwgZG9jKWAKKworIyMjIExvZ2dpbmc6CisKKyogICBgR1RFU1RfTE9HXyhzZXZlcml0
eSlgCisqICAgYEdURVNUX0NIRUNLXyhjb25kaXRpb24pYAorKiAgIEZ1bmN0aW9ucyBgTG9nVG9T
dGRlcnIoKWAgYW5kIGBGbHVzaEluZm9Mb2coKWAgaGF2ZSB0byBiZSBwcm92aWRlZCB0b28uCisK
KyMjIyBUaHJlYWRpbmc6CisKKyogICBgR1RFU1RfSEFTX05PVElGSUNBVElPTl9gIC0gRW5hYmxl
ZCBpZiBOb3RpZmljYXRpb24gaXMgYWxyZWFkeSBwcm92aWRlZC4KKyogICBgR1RFU1RfSEFTX01V
VEVYX0FORF9USFJFQURfTE9DQUxfYCAtIEVuYWJsZWQgaWYgYE11dGV4YCBhbmQgYFRocmVhZExv
Y2FsYAorICAgIGFyZSBhbHJlYWR5IHByb3ZpZGVkLiBNdXN0IGFsc28gcHJvdmlkZSBgR1RFU1Rf
REVDTEFSRV9TVEFUSUNfTVVURVhfKG11dGV4KWAKKyAgICBhbmQgYEdURVNUX0RFRklORV9TVEFU
SUNfTVVURVhfKG11dGV4KWAKKyogICBgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGxv
Y2tzKWAKKyogICBgR1RFU1RfTE9DS19FWENMVURFRF8obG9ja3MpYAorCisjIyMgVW5kZXJseWlu
ZyBsaWJyYXJ5IHN1cHBvcnQgZmVhdHVyZXMKKworKiAgIGBHVEVTVF9IQVNfQ1hYQUJJX0hfYAor
CisjIyMgRXhwb3J0aW5nIEFQSSBzeW1ib2xzOgorCisqICAgYEdURVNUX0FQSV9gIC0gU3BlY2lm
aWVyIGZvciBleHBvcnRlZCBzeW1ib2xzLgorCisjIyBIZWFkZXIgYGd0ZXN0LXByaW50ZXJzLmhg
CisKKyogICBTZWUgZG9jdW1lbnRhdGlvbiBhdCBgZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaGAgZm9y
IGRldGFpbHMgb24gaG93IHRvIGRlZmluZSBhCisgICAgY3VzdG9tIHByaW50ZXIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3Rv
bS9ndGVzdC1wb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q4NWQ5NTZkMmRjMTdiZDUz
N2YyMTQyMzQwYmRmNThmNDczNzExOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXBvcnQuaApAQCAt
MCwwICsxLDM3IEBACisvLyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisvLworLy8gSW5qZWN0aW9uIHBvaW50IGZvciBjdXN0b20gdXNlciBjb25maWd1cmF0aW9ucy4g
U2VlIFJFQURNRSBmb3IgZGV0YWlscworLy8KKy8vICoqIEN1c3RvbSBpbXBsZW1lbnRhdGlvbiBz
dGFydHMgaGVyZSAqKgorCisjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VT
VE9NX0dURVNUX1BPUlRfSF8KKyNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9D
VVNUT01fR1RFU1RfUE9SVF9IXworCisjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5U
RVJOQUxfQ1VTVE9NX0dURVNUX1BPUlRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXByaW50ZXJzLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVz
dC1wcmludGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViNDQ2N2FiY2FiZWE3ZmY3NmY5ZDJkNTI3Mzg3Yzlk
YTgxMDE0OGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wcmludGVycy5oCkBAIC0wLDAgKzEsNDIg
QEAKKy8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
Ly8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBU
aGlzIGZpbGUgcHJvdmlkZXMgYW4gaW5qZWN0aW9uIHBvaW50IGZvciBjdXN0b20gcHJpbnRlcnMg
aW4gYSBsb2NhbAorLy8gaW5zdGFsbGF0aW9uIG9mIGdUZXN0LgorLy8gSXQgd2lsbCBiZSBpbmNs
dWRlZCBmcm9tIGd0ZXN0LXByaW50ZXJzLmggYW5kIHRoZSBvdmVycmlkZXMgaW4gdGhpcyBmaWxl
CisvLyB3aWxsIGJlIHZpc2libGUgdG8gZXZlcnlvbmUuCisvLworLy8gSW5qZWN0aW9uIHBvaW50
IGZvciBjdXN0b20gdXNlciBjb25maWd1cmF0aW9ucy4gU2VlIFJFQURNRSBmb3IgZGV0YWlscwor
Ly8KKy8vICoqIEN1c3RvbSBpbXBsZW1lbnRhdGlvbiBzdGFydHMgaGVyZSAqKgorCisjaWZuZGVm
IEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX1BSSU5URVJTX0hfCisj
ZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX1BSSU5URVJT
X0hfCisKKyNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RF
U1RfUFJJTlRFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjOGUw
N2JlMjNmMWZkNjE1OWFmZWYyZWVmZDc0NDQwMzRkZDA2MDQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVz
dC5oCkBAIC0wLDAgKzEsMzcgQEAKKy8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgorLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
Ky8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
Ky8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKy8vCisvLyBJbmplY3Rpb24gcG9pbnQgZm9yIGN1c3RvbSB1c2VyIGNvbmZpZ3Vy
YXRpb25zLiBTZWUgUkVBRE1FIGZvciBkZXRhaWxzCisvLworLy8gKiogQ3VzdG9tIGltcGxlbWVu
dGF0aW9uIHN0YXJ0cyBoZXJlICoqCisKKyNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRF
Uk5BTF9DVVNUT01fR1RFU1RfSF8KKyNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5B
TF9DVVNUT01fR1RFU1RfSF8KKworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVS
TkFMX0NVU1RPTV9HVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRl
c3QtaW50ZXJuYWwuaAppbmRleCBlNDMzMDg0OGQ0ZWFlNTcwZjI4MGRhYzU3Y2YwMGIyOTcyMmM3
ZDBjLi4wYTliNDJjOGE1NzJhODcxOTRjNjUxMDkwM2UyMWVhMjI2MGZhYzVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRl
YXRoLXRlc3QtaW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaApAQCAtMjcsMTcgKzI3
LDE4IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQXV0aG9yczog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiksIGVlZmFjbUBnbWFpbC5jb20gKFNlYW4gTWNh
ZmVlKQotLy8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVz
dCkKKy8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29n
bGUgVGVzdCkKIC8vCiAvLyBUaGlzIGhlYWRlciBmaWxlIGRlZmluZXMgaW50ZXJuYWwgdXRpbGl0
aWVzIG5lZWRlZCBmb3IgaW1wbGVtZW50aW5nCiAvLyBkZWF0aCB0ZXN0cy4gIFRoZXkgYXJlIHN1
YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8g
Tk9UIERFTEVURQogCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1Rf
REVBVEhfVEVTVF9JTlRFUk5BTF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVS
TkFMX0dURVNUX0RFQVRIX1RFU1RfSU5URVJOQUxfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVy
bmFsL2d0ZXN0LWludGVybmFsLmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50
ZXJuYWwuaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+CiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5h
bWVzcGFjZSBpbnRlcm5hbCB7CkBAIC01MSw2ICs1Miw5IEBAIGNvbnN0IGNoYXIga0ludGVybmFs
UnVuRGVhdGhUZXN0RmxhZ1tdID0gImludGVybmFsX3J1bl9kZWF0aF90ZXN0IjsKIAogI2lmIEdU
RVNUX0hBU19ERUFUSF9URVNUCiAKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQy
NTEgXAorLyogY2xhc3MgQSBuZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBi
eSBjbGllbnRzIG9mIGNsYXNzIEIgKi8pCisKIC8vIERlYXRoVGVzdCBpcyBhIGNsYXNzIHRoYXQg
aGlkZXMgbXVjaCBvZiB0aGUgY29tcGxleGl0eSBvZiB0aGUKIC8vIEdURVNUX0RFQVRIX1RFU1Rf
IG1hY3JvLiAgSXQgaXMgYWJzdHJhY3Q7IGl0cyBzdGF0aWMgQ3JlYXRlIG1ldGhvZAogLy8gcmV0
dXJucyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiB0aGUgcHJldmFpbGluZyBkZWF0
aCB0ZXN0CkBAIC05Niw4ICsxMDAsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBEZWF0aFRlc3Qgewog
ICAvLyB0ZXN0LCB0aGVuIHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlLgogICBlbnVtIFRlc3RSb2xl
IHsgT1ZFUlNFRV9URVNULCBFWEVDVVRFX1RFU1QgfTsKIAotICAvLyBBbiBlbnVtZXJhdGlvbiBv
ZiB0aGUgdHdvIHJlYXNvbnMgdGhhdCBhIHRlc3QgbWlnaHQgYmUgYWJvcnRlZC4KLSAgZW51bSBB
Ym9ydFJlYXNvbiB7IFRFU1RfRU5DT1VOVEVSRURfUkVUVVJOX1NUQVRFTUVOVCwgVEVTVF9ESURf
Tk9UX0RJRSB9OworICAvLyBBbiBlbnVtZXJhdGlvbiBvZiB0aGUgdGhyZWUgcmVhc29ucyB0aGF0
IGEgdGVzdCBtaWdodCBiZSBhYm9ydGVkLgorICBlbnVtIEFib3J0UmVhc29uIHsKKyAgICBURVNU
X0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQsCisgICAgVEVTVF9USFJFV19FWENFUFRJT04s
CisgICAgVEVTVF9ESURfTk9UX0RJRQorICB9OwogCiAgIC8vIEFzc3VtZXMgb25lIG9mIHRoZSBh
Ym92ZSByb2xlcy4KICAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCkgPSAwOwpAQCAtMTIx
LDE1ICsxMjksMTcgQEAgY2xhc3MgR1RFU1RfQVBJXyBEZWF0aFRlc3QgewogICAvLyB0aGUgbGFz
dCBkZWF0aCB0ZXN0LgogICBzdGF0aWMgY29uc3QgY2hhciogTGFzdE1lc3NhZ2UoKTsKIAotICBz
dGF0aWMgdm9pZCBzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKKyAgc3RhdGljIHZvaWQgc2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKGNvbnN0IHN0
ZDo6c3RyaW5nJiBtZXNzYWdlKTsKIAogIHByaXZhdGU6CiAgIC8vIEEgc3RyaW5nIGNvbnRhaW5p
bmcgYSBkZXNjcmlwdGlvbiBvZiB0aGUgb3V0Y29tZSBvZiB0aGUgbGFzdCBkZWF0aCB0ZXN0Lgot
ICBzdGF0aWMgU3RyaW5nIGxhc3RfZGVhdGhfdGVzdF9tZXNzYWdlXzsKKyAgc3RhdGljIHN0ZDo6
c3RyaW5nIGxhc3RfZGVhdGhfdGVzdF9tZXNzYWdlXzsKIAogICBHVEVTVF9ESVNBTExPV19DT1BZ
X0FORF9BU1NJR05fKERlYXRoVGVzdCk7CiB9OwogCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5H
U19QT1BfKCkgIC8vICA0MjUxCisKIC8vIEZhY3RvcnkgaW50ZXJmYWNlIGZvciBkZWF0aCB0ZXN0
cy4gIE1heSBiZSBtb2NrZWQgb3V0IGZvciB0ZXN0aW5nLgogY2xhc3MgRGVhdGhUZXN0RmFjdG9y
eSB7CiAgcHVibGljOgpAQCAtMTQ5LDkgKzE1OSwzNCBAQCBjbGFzcyBEZWZhdWx0RGVhdGhUZXN0
RmFjdG9yeSA6IHB1YmxpYyBEZWF0aFRlc3RGYWN0b3J5IHsKIC8vIGJ5IGEgc2lnbmFsLCBvciBl
eGl0ZWQgbm9ybWFsbHkgd2l0aCBhIG5vbnplcm8gZXhpdCBjb2RlLgogR1RFU1RfQVBJXyBib29s
IEV4aXRlZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1cyk7CiAKKy8vIFRyYXBzIEMrKyBl
eGNlcHRpb25zIGVzY2FwaW5nIHN0YXRlbWVudCBhbmQgcmVwb3J0cyB0aGVtIGFzIHRlc3QKKy8v
IGZhaWx1cmVzLiBOb3RlIHRoYXQgdHJhcHBpbmcgU0VIIGV4Y2VwdGlvbnMgaXMgbm90IGltcGxl
bWVudGVkIGhlcmUuCisjIGlmIEdURVNUX0hBU19FWENFUFRJT05TCisjICBkZWZpbmUgR1RFU1Rf
RVhFQ1VURV9ERUFUSF9URVNUX1NUQVRFTUVOVF8oc3RhdGVtZW50LCBkZWF0aF90ZXN0KSBcCisg
IHRyeSB7IFwKKyAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVM
T1dfKHN0YXRlbWVudCk7IFwKKyAgfSBjYXRjaCAoY29uc3QgOjpzdGQ6OmV4Y2VwdGlvbiYgZ3Rl
c3RfZXhjZXB0aW9uKSB7IFwKKyAgICBmcHJpbnRmKFwKKyAgICAgICAgc3RkZXJyLCBcCisgICAg
ICAgICJcbiVzOiBDYXVnaHQgc3RkOjpleGNlcHRpb24tZGVyaXZlZCBleGNlcHRpb24gZXNjYXBp
bmcgdGhlICIgXAorICAgICAgICAiZGVhdGggdGVzdCBzdGF0ZW1lbnQuIEV4Y2VwdGlvbiBtZXNz
YWdlOiAlc1xuIiwgXAorICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRGaWxlTG9j
YXRpb24oX19GSUxFX18sIF9fTElORV9fKS5jX3N0cigpLCBcCisgICAgICAgIGd0ZXN0X2V4Y2Vw
dGlvbi53aGF0KCkpOyBcCisgICAgZmZsdXNoKHN0ZGVycik7IFwKKyAgICBkZWF0aF90ZXN0LT5B
Ym9ydCg6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OlRFU1RfVEhSRVdfRVhDRVBUSU9O
KTsgXAorICB9IGNhdGNoICguLi4pIHsgXAorICAgIGRlYXRoX3Rlc3QtPkFib3J0KDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkRlYXRoVGVzdDo6VEVTVF9USFJFV19FWENFUFRJT04pOyBcCisgIH0KKwor
IyBlbHNlCisjICBkZWZpbmUgR1RFU1RfRVhFQ1VURV9ERUFUSF9URVNUX1NUQVRFTUVOVF8oc3Rh
dGVtZW50LCBkZWF0aF90ZXN0KSBcCisgIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVf
V0FSTklOR19CRUxPV18oc3RhdGVtZW50KQorCisjIGVuZGlmCisKIC8vIFRoaXMgbWFjcm8gaXMg
Zm9yIGltcGxlbWVudGluZyBBU1NFUlRfREVBVEgqLCBFWFBFQ1RfREVBVEgqLAogLy8gQVNTRVJU
X0VYSVQqLCBhbmQgRVhQRUNUX0VYSVQqLgotI2RlZmluZSBHVEVTVF9ERUFUSF9URVNUXyhzdGF0
ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIGZhaWwpIFwKKyMgZGVmaW5lIEdURVNUX0RFQVRIX1RF
U1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgZmFpbCkgXAogICBHVEVTVF9BTUJJR1VP
VVNfRUxTRV9CTE9DS0VSXyBcCiAgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVl
KCkpIHsgXAogICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6OlJFJiBndGVzdF9yZWdleCA9
IChyZWdleCk7IFwKQEAgLTE3MiwxMCArMjA3LDEyIEBAIEdURVNUX0FQSV8gYm9vbCBFeGl0ZWRV
bnN1Y2Nlc3NmdWxseShpbnQgZXhpdF9zdGF0dXMpOwogICAgICAgICBjYXNlIDo6dGVzdGluZzo6
aW50ZXJuYWw6OkRlYXRoVGVzdDo6RVhFQ1VURV9URVNUOiB7IFwKICAgICAgICAgICA6OnRlc3Rp
bmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OlJldHVyblNlbnRpbmVsIFwKICAgICAgICAgICAgICAg
Z3Rlc3Rfc2VudGluZWwoZ3Rlc3RfZHQpOyBcCi0gICAgICAgICAgR1RFU1RfU1VQUFJFU1NfVU5S
RUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCisgICAgICAgICAgR1RF
U1RfRVhFQ1VURV9ERUFUSF9URVNUX1NUQVRFTUVOVF8oc3RhdGVtZW50LCBndGVzdF9kdCk7IFwK
ICAgICAgICAgICBndGVzdF9kdC0+QWJvcnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0
OjpURVNUX0RJRF9OT1RfRElFKTsgXAogICAgICAgICAgIGJyZWFrOyBcCiAgICAgICAgIH0gXAor
ICAgICAgICBkZWZhdWx0OiBcCisgICAgICAgICAgYnJlYWs7IFwKICAgICAgIH0gXAogICAgIH0g
XAogICB9IGVsc2UgXApAQCAtMTg0LDEyICsyMjEsMjcgQEAgR1RFU1RfQVBJXyBib29sIEV4aXRl
ZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1cyk7CiAvLyBUaGUgc3ltYm9sICJmYWlsIiBo
ZXJlIGV4cGFuZHMgdG8gc29tZXRoaW5nIGludG8gd2hpY2ggYSBtZXNzYWdlCiAvLyBjYW4gYmUg
c3RyZWFtZWQuCiAKKy8vIFRoaXMgbWFjcm8gaXMgZm9yIGltcGxlbWVudGluZyBBU1NFUlQvRVhQ
RUNUX0RFQlVHX0RFQVRIIHdoZW4gY29tcGlsZWQgaW4KKy8vIE5ERUJVRyBtb2RlLiBJbiB0aGlz
IGNhc2Ugd2UgbmVlZCB0aGUgc3RhdGVtZW50cyB0byBiZSBleGVjdXRlZCBhbmQgdGhlIG1hY3Jv
CisvLyBtdXN0IGFjY2VwdCBhIHN0cmVhbWVkIG1lc3NhZ2UgZXZlbiB0aG91Z2ggdGhlIG1lc3Nh
Z2UgaXMgbmV2ZXIgcHJpbnRlZC4KKy8vIFRoZSByZWdleCBvYmplY3QgaXMgbm90IGV2YWx1YXRl
ZCwgYnV0IGl0IGlzIHVzZWQgdG8gcHJldmVudCAidW51c2VkIgorLy8gd2FybmluZ3MgYW5kIHRv
IGF2b2lkIGFuIGV4cHJlc3Npb24gdGhhdCBkb2Vzbid0IGNvbXBpbGUgaW4gZGVidWcgbW9kZS4K
KyNkZWZpbmUgR1RFU1RfRVhFQ1VURV9TVEFURU1FTlRfKHN0YXRlbWVudCwgcmVnZXgpICAgICAg
ICAgICAgIFwKKyAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUo
KSkgeyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJM
RV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKKyAgfSBlbHNlIGlmICghOjp0ZXN0
aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7ICAgICAgICAgICAgIFwKKyAgICBjb25zdCA6
OnRlc3Rpbmc6OmludGVybmFsOjpSRSYgZ3Rlc3RfcmVnZXggPSAocmVnZXgpOyAgICAgIFwKKyAg
ICBzdGF0aWNfY2FzdDx2b2lkPihndGVzdF9yZWdleCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgfSBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICA6OnRlc3Rpbmc6Ok1lc3NhZ2UoKQorCiAvLyBBIGNsYXNzIHJl
cHJlc2VudGluZyB0aGUgcGFyc2VkIGNvbnRlbnRzIG9mIHRoZQogLy8gLS1ndGVzdF9pbnRlcm5h
bF9ydW5fZGVhdGhfdGVzdCBmbGFnLCBhcyBpdCBleGlzdGVkIHdoZW4KIC8vIFJVTl9BTExfVEVT
VFMgd2FzIGNhbGxlZC4KIGNsYXNzIEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyB7CiAgcHVibGlj
OgotICBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoY29uc3QgU3RyaW5nJiBhX2ZpbGUsCisgIElu
dGVybmFsUnVuRGVhdGhUZXN0RmxhZyhjb25zdCBzdGQ6OnN0cmluZyYgYV9maWxlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGFfbGluZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBhbl9pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhX3dyaXRl
X2ZkKQpAQCAtMjAxLDEzICsyNTMsMTMgQEAgY2xhc3MgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFn
IHsKICAgICAgIHBvc2l4OjpDbG9zZSh3cml0ZV9mZF8pOwogICB9CiAKLSAgU3RyaW5nIGZpbGUo
KSBjb25zdCB7IHJldHVybiBmaWxlXzsgfQorICBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZSgpIGNv
bnN0IHsgcmV0dXJuIGZpbGVfOyB9CiAgIGludCBsaW5lKCkgY29uc3QgeyByZXR1cm4gbGluZV87
IH0KICAgaW50IGluZGV4KCkgY29uc3QgeyByZXR1cm4gaW5kZXhfOyB9CiAgIGludCB3cml0ZV9m
ZCgpIGNvbnN0IHsgcmV0dXJuIHdyaXRlX2ZkXzsgfQogCiAgcHJpdmF0ZToKLSAgU3RyaW5nIGZp
bGVfOworICBzdGQ6OnN0cmluZyBmaWxlXzsKICAgaW50IGxpbmVfOwogICBpbnQgaW5kZXhfOwog
ICBpbnQgd3JpdGVfZmRfOwpAQCAtMjIwLDUzICsyNzIsNiBAQCBjbGFzcyBJbnRlcm5hbFJ1bkRl
YXRoVGVzdEZsYWcgewogLy8gdGhlIGZsYWcgaXMgc3BlY2lmaWVkOyBvdGhlcndpc2UgcmV0dXJu
cyBOVUxMLgogSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBQYXJzZUludGVybmFsUnVuRGVhdGhU
ZXN0RmxhZygpOwogCi0jZWxzZSAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotLy8gVGhpcyBt
YWNybyBpcyB1c2VkIGZvciBpbXBsZW1lbnRpbmcgbWFjcm9zIHN1Y2ggYXMKLS8vIEVYUEVDVF9E
RUFUSF9JRl9TVVBQT1JURUQgYW5kIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgb24gc3lzdGVt
cyB3aGVyZQotLy8gZGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQuIFRob3NlIG1hY3JvcyBt
dXN0IGNvbXBpbGUgb24gc3VjaCBzeXN0ZW1zCi0vLyBpZmYgRVhQRUNUX0RFQVRIIGFuZCBBU1NF
UlRfREVBVEggY29tcGlsZSB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMgb24KLS8vIHN5c3RlbXMg
dGhhdCBzdXBwb3J0IGRlYXRoIHRlc3RzLiBUaGlzIGFsbG93cyBvbmUgdG8gd3JpdGUgc3VjaCBh
IG1hY3JvCi0vLyBvbiBhIHN5c3RlbSB0aGF0IGRvZXMgbm90IHN1cHBvcnQgZGVhdGggdGVzdHMg
YW5kIGJlIHN1cmUgdGhhdCBpdCB3aWxsCi0vLyBjb21waWxlIG9uIGEgZGVhdGgtdGVzdCBzdXBw
b3J0aW5nIHN5c3RlbS4KLS8vCi0vLyBQYXJhbWV0ZXJzOgotLy8gICBzdGF0ZW1lbnQgLSAgQSBz
dGF0ZW1lbnQgdGhhdCBhIG1hY3JvIHN1Y2ggYXMgRVhQRUNUX0RFQVRIIHdvdWxkIHRlc3QKLS8v
ICAgICAgICAgICAgICAgIGZvciBwcm9ncmFtIHRlcm1pbmF0aW9uLiBUaGlzIG1hY3JvIGhhcyB0
byBtYWtlIHN1cmUgdGhpcwotLy8gICAgICAgICAgICAgICAgc3RhdGVtZW50IGlzIGNvbXBpbGVk
IGJ1dCBub3QgZXhlY3V0ZWQsIHRvIGVuc3VyZSB0aGF0Ci0vLyAgICAgICAgICAgICAgICBFWFBF
Q1RfREVBVEhfSUZfU1VQUE9SVEVEIGNvbXBpbGVzIHdpdGggYSBjZXJ0YWluCi0vLyAgICAgICAg
ICAgICAgICBwYXJhbWV0ZXIgaWZmIEVYUEVDVF9ERUFUSCBjb21waWxlcyB3aXRoIGl0LgotLy8g
ICByZWdleCAgICAgLSAgQSByZWdleCB0aGF0IGEgbWFjcm8gc3VjaCBhcyBFWFBFQ1RfREVBVEgg
d291bGQgdXNlIHRvIHRlc3QKLS8vICAgICAgICAgICAgICAgIHRoZSBvdXRwdXQgb2Ygc3RhdGVt
ZW50LiAgVGhpcyBwYXJhbWV0ZXIgaGFzIHRvIGJlCi0vLyAgICAgICAgICAgICAgICBjb21waWxl
ZCBidXQgbm90IGV2YWx1YXRlZCBieSB0aGlzIG1hY3JvLCB0byBlbnN1cmUgdGhhdAotLy8gICAg
ICAgICAgICAgICAgdGhpcyBtYWNybyBvbmx5IGFjY2VwdHMgZXhwcmVzc2lvbnMgdGhhdCBhIG1h
Y3JvIHN1Y2ggYXMKLS8vICAgICAgICAgICAgICAgIEVYUEVDVF9ERUFUSCB3b3VsZCBhY2NlcHQu
Ci0vLyAgIHRlcm1pbmF0b3IgLSBNdXN0IGJlIGFuIGVtcHR5IHN0YXRlbWVudCBmb3IgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRAotLy8gICAgICAgICAgICAgICAgYW5kIGEgcmV0dXJuIHN0YXRl
bWVudCBmb3IgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRC4KLS8vICAgICAgICAgICAgICAgIFRo
aXMgZW5zdXJlcyB0aGF0IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgd2lsbCBub3QKLS8vICAg
ICAgICAgICAgICAgIGNvbXBpbGUgaW5zaWRlIGZ1bmN0aW9ucyB3aGVyZSBBU1NFUlRfREVBVEgg
ZG9lc24ndAotLy8gICAgICAgICAgICAgICAgY29tcGlsZS4KLS8vCi0vLyAgVGhlIGJyYW5jaCB0
aGF0IGhhcyBhbiBhbHdheXMgZmFsc2UgY29uZGl0aW9uIGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQK
LS8vICBzdGF0ZW1lbnQgYW5kIHJlZ2V4IGFyZSBjb21waWxlZCAoYW5kIHRodXMgc3ludGFjdGlj
YWxseSBjb3JyZWN0KSBidXQKLS8vICBuZXZlciBleGVjdXRlZC4gVGhlIHVucmVhY2hhYmxlIGNv
ZGUgbWFjcm8gcHJvdGVjdHMgdGhlIHRlcm1pbmF0b3IKLS8vICBzdGF0ZW1lbnQgZnJvbSBnZW5l
cmF0aW5nIGFuICd1bnJlYWNoYWJsZSBjb2RlJyB3YXJuaW5nIGluIGNhc2UKLS8vICBzdGF0ZW1l
bnQgdW5jb25kaXRpb25hbGx5IHJldHVybnMgb3IgdGhyb3dzLiBUaGUgTWVzc2FnZSBjb25zdHJ1
Y3RvciBhdAotLy8gIHRoZSBlbmQgYWxsb3dzIHRoZSBzeW50YXggb2Ygc3RyZWFtaW5nIGFkZGl0
aW9uYWwgbWVzc2FnZXMgaW50byB0aGUKLS8vICBtYWNybywgZm9yIGNvbXBpbGF0aW9uYWwgY29t
cGF0aWJpbGl0eSB3aXRoIEVYUEVDVF9ERUFUSC9BU1NFUlRfREVBVEguCi0jZGVmaW5lIEdURVNU
X1VOU1VQUE9SVEVEX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcmVnZXgsIHRlcm1pbmF0b3IpIFwK
LSAgICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0gICAgaWYgKDo6dGVzdGluZzo6
aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBcCi0gICAgICBHVEVTVF9MT0dfKFdBUk5JTkcpIFwK
LSAgICAgICAgICA8PCAiRGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0
Zm9ybS5cbiIgXAotICAgICAgICAgIDw8ICJTdGF0ZW1lbnQgJyIgI3N0YXRlbWVudCAiJyBjYW5u
b3QgYmUgdmVyaWZpZWQuIjsgXAotICAgIH0gZWxzZSBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
QWx3YXlzRmFsc2UoKSkgeyBcCi0gICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpSRTo6UGFydGlh
bE1hdGNoKCIuKiIsIChyZWdleCkpOyBcCi0gICAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJM
RV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKLSAgICAgIHRlcm1pbmF0b3I7IFwK
LSAgICB9IGVsc2UgXAotICAgICAgOjp0ZXN0aW5nOjpNZXNzYWdlKCkKLQogI2VuZGlmICAvLyBH
VEVTVF9IQVNfREVBVEhfVEVTVAogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
ZmlsZXBhdGguaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtZmlsZXBhdGguaAppbmRleCA0Yjc2ZDc5NTA2YjAyNmFiYTM3MTY0NzJmYzQzY2Vm
YzFhN2UzODhhLi5hZTM4ZDk1YmY4NDRmYTlkYzIxNzM5Y2Y4MjEyNzZkNWIzNDE3ZTNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LWZpbGVwYXRoLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oCkBAIC0yNywyMCArMjcsMjMgQEAKIC8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRob3I6IGtlaXRoLnJheUBnbWFpbC5j
b20gKEtlaXRoIFJheSkKLS8vCiAvLyBHb29nbGUgVGVzdCBmaWxlcGF0aCB1dGlsaXRpZXMKIC8v
CiAvLyBUaGlzIGhlYWRlciBmaWxlIGRlY2xhcmVzIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyB1c2Vk
IGludGVybmFsbHkgYnkKIC8vIEdvb2dsZSBUZXN0LiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFu
Z2Ugd2l0aG91dCBub3RpY2UuCiAvLwotLy8gVGhpcyBmaWxlIGlzICNpbmNsdWRlZCBpbiA8Z3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4uCisvLyBUaGlzIGZpbGUgaXMgI2luY2x1ZGVk
IGluIGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmguCiAvLyBEbyBub3QgaW5jbHVkZSB0
aGlzIGhlYWRlciBmaWxlIHNlcGFyYXRlbHkhCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5P
VCBERUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0ZJ
TEVQQVRIX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfRklM
RVBBVEhfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oPgorI2lu
Y2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgorCitHVEVTVF9ESVNBQkxFX01T
Q19XQVJOSU5HU19QVVNIXyg0MjUxIFwKKy8qIGNsYXNzIEEgbmVlZHMgdG8gaGF2ZSBkbGwtaW50
ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50cyBvZiBjbGFzcyBCICovKQogCiBuYW1lc3BhY2Ug
dGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewpAQCAtNjEsMTEgKzY0LDcgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBGaWxlUGF0aCB7CiAgIEZpbGVQYXRoKCkgOiBwYXRobmFtZV8oIiIpIHsgfQog
ICBGaWxlUGF0aChjb25zdCBGaWxlUGF0aCYgcmhzKSA6IHBhdGhuYW1lXyhyaHMucGF0aG5hbWVf
KSB7IH0KIAotICBleHBsaWNpdCBGaWxlUGF0aChjb25zdCBjaGFyKiBwYXRobmFtZSkgOiBwYXRo
bmFtZV8ocGF0aG5hbWUpIHsKLSAgICBOb3JtYWxpemUoKTsKLSAgfQotCi0gIGV4cGxpY2l0IEZp
bGVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aG5hbWUpIDogcGF0aG5hbWVfKHBhdGhuYW1lKSB7Cisg
IGV4cGxpY2l0IEZpbGVQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRobmFtZSkgOiBwYXRobmFt
ZV8ocGF0aG5hbWUpIHsKICAgICBOb3JtYWxpemUoKTsKICAgfQogCkBAIC03OCw3ICs3Nyw3IEBA
IGNsYXNzIEdURVNUX0FQSV8gRmlsZVBhdGggewogICAgIHBhdGhuYW1lXyA9IHJocy5wYXRobmFt
ZV87CiAgIH0KIAotICBTdHJpbmcgVG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBwYXRobmFtZV87
IH0KKyAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHBhdGhuYW1l
XzsgfQogICBjb25zdCBjaGFyKiBjX3N0cigpIGNvbnN0IHsgcmV0dXJuIHBhdGhuYW1lXy5jX3N0
cigpOyB9CiAKICAgLy8gUmV0dXJucyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSwgb3Ig
IiIgaWYgdW5zdWNjZXNzZnVsLgpAQCAtMTExLDggKzExMCw4IEBAIGNsYXNzIEdURVNUX0FQSV8g
RmlsZVBhdGggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBGaWxlUGF0aCYgYmFzZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBleHRlbnNpb24pOwogCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYg
dGhlIHBhdGggaXMgTlVMTCBvciAiIi4KLSAgYm9vbCBJc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
Y19zdHIoKSA9PSBOVUxMIHx8ICpjX3N0cigpID09ICdcMCc7IH0KKyAgLy8gUmV0dXJucyB0cnVl
IGlmZiB0aGUgcGF0aCBpcyAiIi4KKyAgYm9vbCBJc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gcGF0
aG5hbWVfLmVtcHR5KCk7IH0KIAogICAvLyBJZiBpbnB1dCBuYW1lIGhhcyBhIHRyYWlsaW5nIHNl
cGFyYXRvciBjaGFyYWN0ZXIsIHJlbW92ZXMgaXQgYW5kIHJldHVybnMKICAgLy8gdGhlIG5hbWUs
IG90aGVyd2lzZSByZXR1cm4gdGhlIG5hbWUgc3RyaW5nIHVubW9kaWZpZWQuCkBAIC0yMDEsMTAg
KzIwMCwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIEZpbGVQYXRoIHsKICAgLy8gc2VwYXJhdG9ycy4g
UmV0dXJucyBOVUxMIGlmIG5vIHBhdGggc2VwYXJhdG9yIHdhcyBmb3VuZC4KICAgY29uc3QgY2hh
ciogRmluZExhc3RQYXRoU2VwYXJhdG9yKCkgY29uc3Q7CiAKLSAgU3RyaW5nIHBhdGhuYW1lXzsK
KyAgc3RkOjpzdHJpbmcgcGF0aG5hbWVfOwogfTsgIC8vIGNsYXNzIEZpbGVQYXRoCiAKIH0gIC8v
IG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAorR1RFU1RfRElT
QUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQorCiAjZW5kaWYgIC8vIEdURVNUX0lO
Q0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfRklMRVBBVEhfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
aW50ZXJuYWwuaAppbmRleCAzMWE2NmU5OWQzYzQ4MjE1MWU0MGZjMzVhNDAyNzAwNjkwMzJhMWQ1
Li5iNzYyZjYxZmM1M2MzZGI5Y2ZiNzUzOTQwZDkxYjVkNTRhYjM2MzU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVy
bmFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC1pbnRlcm5hbC5oCkBAIC0yNywzNCArMjcsNDMgQEAKIC8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRob3JzOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcg
V2FuKSwgZWVmYWNtQGdtYWlsLmNvbSAoU2VhbiBNY2FmZWUpCi0vLwotLy8gVGhlIEdvb2dsZSBD
KysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gVGhlIEdvb2dsZSBDKysgVGVz
dGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogLy8KIC8vIFRoaXMgaGVh
ZGVyIGZpbGUgZGVjbGFyZXMgZnVuY3Rpb25zIGFuZCBtYWNyb3MgdXNlZCBpbnRlcm5hbGx5IGJ5
CiAvLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90
aWNlLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RF
U1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9JTlRFUk5BTF9IXwogI2RlZmluZSBHVEVT
VF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0lOVEVSTkFMX0hfCiAKLSNpbmNsdWRlIDxn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oIgogCiAjaWYgR1RFU1RfT1NfTElOVVgKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNp
bmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvd2FpdC5oPgotI2luY2x1ZGUgPHVu
aXN0ZC5oPgorIyBpbmNsdWRlIDxzdGRsaWIuaD4KKyMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cisj
IGluY2x1ZGUgPHN5cy93YWl0Lmg+CisjIGluY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmICAvLyBH
VEVTVF9PU19MSU5VWAogCisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKyMgaW5jbHVkZSA8c3Rk
ZXhjZXB0PgorI2VuZGlmCisKICNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPGZsb2F0Lmg+
CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8aW9tYW5pcD4KICNpbmNsdWRlIDxsaW1p
dHM+CisjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHNldD4KKyNpbmNsdWRlIDxzdHJpbmc+Cisj
aW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaD4KLSNpbmNsdWRl
IDxndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVz
dC1tZXNzYWdlLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCIK
KyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKKyNpbmNsdWRlICJndGVz
dC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCIKIAogLy8gRHVlIHRvIEMrKyBwcmVwcm9jZXNz
b3Igd2VpcmRuZXNzLCB3ZSBuZWVkIGRvdWJsZSBpbmRpcmVjdGlvbiB0bwogLy8gY29uY2F0ZW5h
dGUgdHdvIHRva2VucyB3aGVuIG9uZSBvZiB0aGVtIGlzIF9fTElORV9fLiAgV3JpdGluZwpAQCAt
NjcsMzkgKzc2LDE1IEBACiAjZGVmaW5lIEdURVNUX0NPTkNBVF9UT0tFTl8oZm9vLCBiYXIpIEdU
RVNUX0NPTkNBVF9UT0tFTl9JTVBMXyhmb28sIGJhcikKICNkZWZpbmUgR1RFU1RfQ09OQ0FUX1RP
S0VOX0lNUExfKGZvbywgYmFyKSBmb28gIyMgYmFyCiAKLS8vIEdvb2dsZSBUZXN0IGRlZmluZXMg
dGhlIHRlc3Rpbmc6Ok1lc3NhZ2UgY2xhc3MgdG8gYWxsb3cgY29uc3RydWN0aW9uIG9mCi0vLyB0
ZXN0IG1lc3NhZ2VzIHZpYSB0aGUgPDwgb3BlcmF0b3IuICBUaGUgaWRlYSBpcyB0aGF0IGFueXRo
aW5nCi0vLyBzdHJlYW1hYmxlIHRvIHN0ZDo6b3N0cmVhbSBjYW4gYmUgc3RyZWFtZWQgdG8gYSB0
ZXN0aW5nOjpNZXNzYWdlLgotLy8gVGhpcyBhbGxvd3MgYSB1c2VyIHRvIHVzZSBoaXMgb3duIHR5
cGVzIGluIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgYnkKLS8vIG92ZXJsb2FkaW5nIHRoZSA8PCBv
cGVyYXRvci4KLS8vCi0vLyB1dGlsL2d0bC9zdGxfbG9nZ2luZy1pbmwuaCBvdmVybG9hZHMgPDwg
Zm9yIFNUTCBjb250YWluZXJzLiAgVGhlc2UKLS8vIG92ZXJsb2FkcyBjYW5ub3QgYmUgZGVmaW5l
ZCBpbiB0aGUgc3RkIG5hbWVzcGFjZSwgYXMgdGhhdCB3aWxsIGJlCi0vLyB1bmRlZmluZWQgYmVo
YXZpb3IuICBUaGVyZWZvcmUsIHRoZXkgYXJlIGRlZmluZWQgaW4gdGhlIGdsb2JhbAotLy8gbmFt
ZXNwYWNlIGluc3RlYWQuCi0vLwotLy8gQysrJ3Mgc3ltYm9sIGxvb2t1cCBydWxlIChpLmUuIEtv
ZW5pZyBsb29rdXApIHNheXMgdGhhdCB0aGVzZQotLy8gb3ZlcmxvYWRzIGFyZSB2aXNpYmxlIGlu
IGVpdGhlciB0aGUgc3RkIG5hbWVzcGFjZSBvciB0aGUgZ2xvYmFsCi0vLyBuYW1lc3BhY2UsIGJ1
dCBub3Qgb3RoZXIgbmFtZXNwYWNlcywgaW5jbHVkaW5nIHRoZSB0ZXN0aW5nCi0vLyBuYW1lc3Bh
Y2Ugd2hpY2ggR29vZ2xlIFRlc3QncyBNZXNzYWdlIGNsYXNzIGlzIGluLgotLy8KLS8vIFRvIGFs
bG93IFNUTCBjb250YWluZXJzIChhbmQgb3RoZXIgdHlwZXMgdGhhdCBoYXMgYSA8PCBvcGVyYXRv
cgotLy8gZGVmaW5lZCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZSkgdG8gYmUgdXNlZCBpbiBHb29n
bGUgVGVzdCBhc3NlcnRpb25zLAotLy8gdGVzdGluZzo6TWVzc2FnZSBtdXN0IGFjY2VzcyB0aGUg
Y3VzdG9tIDw8IG9wZXJhdG9yIGZyb20gdGhlIGdsb2JhbAotLy8gbmFtZXNwYWNlLiAgSGVuY2Ug
dGhpcyBoZWxwZXIgZnVuY3Rpb24uCi0vLwotLy8gTm90ZTogSmVmZnJleSBZYXNza2luIHN1Z2dl
c3RlZCBhbiBhbHRlcm5hdGl2ZSBmaXggYnkgInVzaW5nCi0vLyA6Om9wZXJhdG9yPDw7IiBpbiB0
aGUgZGVmaW5pdGlvbiBvZiBNZXNzYWdlJ3Mgb3BlcmF0b3I8PC4gIFRoYXQgZml4Ci0vLyBkb2Vz
bid0IHJlcXVpcmUgYSBoZWxwZXIgZnVuY3Rpb24sIGJ1dCB1bmZvcnR1bmF0ZWx5IGRvZXNuJ3QK
LS8vIGNvbXBpbGUgd2l0aCBNU1ZDLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9p
ZCBHVGVzdFN0cmVhbVRvSGVscGVyKHN0ZDo6b3N0cmVhbSogb3MsIGNvbnN0IFQmIHZhbCkgewot
ICAqb3MgPDwgdmFsOwotfQorLy8gU3RyaW5naWZpZXMgaXRzIGFyZ3VtZW50LgorI2RlZmluZSBH
VEVTVF9TVFJJTkdJRllfKG5hbWUpICNuYW1lCisKK2NsYXNzIFByb3RvY29sTWVzc2FnZTsKK25h
bWVzcGFjZSBwcm90bzIgeyBjbGFzcyBNZXNzYWdlOyB9CiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsK
IAotLy8gRm9yd2FyZCBkZWNsYXJhdGlvbiBvZiBjbGFzc2VzLgorLy8gRm9yd2FyZCBkZWNsYXJh
dGlvbnMuCiAKIGNsYXNzIEFzc2VydGlvblJlc3VsdDsgICAgICAgICAgICAgICAgIC8vIFJlc3Vs
dCBvZiBhbiBhc3NlcnRpb24uCiBjbGFzcyBNZXNzYWdlOyAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBSZXByZXNlbnRzIGEgZmFpbHVyZSBtZXNzYWdlLgpAQCAtMTA4LDI1ICs5MywxOSBAQCBj
bGFzcyBUZXN0SW5mbzsgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbmZvcm1hdGlvbiBhYm91
dCBhIHRlc3QuCiBjbGFzcyBUZXN0UGFydFJlc3VsdDsgICAgICAgICAgICAgICAgICAvLyBSZXN1
bHQgb2YgYSB0ZXN0IHBhcnQuCiBjbGFzcyBVbml0VGVzdDsgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBBIGNvbGxlY3Rpb24gb2YgdGVzdCBjYXNlcy4KIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Cis6OnN0ZDo6c3RyaW5nIFByaW50VG9TdHJpbmcoY29uc3QgVCYgdmFsdWUpOworCiBuYW1lc3Bh
Y2UgaW50ZXJuYWwgewogCiBzdHJ1Y3QgVHJhY2VJbmZvOyAgICAgICAgICAgICAgICAgICAgICAv
LyBJbmZvcm1hdGlvbiBhYm91dCBhIHRyYWNlIHBvaW50LgotY2xhc3MgU2NvcGVkVHJhY2U7ICAg
ICAgICAgICAgICAgICAgICAgLy8gSW1wbGVtZW50cyBzY29wZWQgdHJhY2UuCiBjbGFzcyBUZXN0
SW5mb0ltcGw7ICAgICAgICAgICAgICAgICAgICAvLyBPcGFxdWUgaW1wbGVtZW50YXRpb24gb2Yg
VGVzdEluZm8KIGNsYXNzIFVuaXRUZXN0SW1wbDsgICAgICAgICAgICAgICAgICAgIC8vIE9wYXF1
ZSBpbXBsZW1lbnRhdGlvbiBvZiBVbml0VGVzdAogCi0vLyBIb3cgbWFueSB0aW1lcyBJbml0R29v
Z2xlVGVzdCgpIGhhcyBiZWVuIGNhbGxlZC4KLWV4dGVybiBpbnQgZ19pbml0X2d0ZXN0X2NvdW50
OwotCiAvLyBUaGUgdGV4dCB1c2VkIGluIGZhaWx1cmUgbWVzc2FnZXMgdG8gaW5kaWNhdGUgdGhl
IHN0YXJ0IG9mIHRoZQogLy8gc3RhY2sgdHJhY2UuCiBHVEVTVF9BUElfIGV4dGVybiBjb25zdCBj
aGFyIGtTdGFja1RyYWNlTWFya2VyW107CiAKLS8vIEEgc2VjcmV0IHR5cGUgdGhhdCBHb29nbGUg
VGVzdCB1c2VycyBkb24ndCBrbm93IGFib3V0LiAgSXQgaGFzIG5vCi0vLyBkZWZpbml0aW9uIG9u
IHB1cnBvc2UuICBUaGVyZWZvcmUgaXQncyBpbXBvc3NpYmxlIHRvIGNyZWF0ZSBhCi0vLyBTZWNy
ZXQgb2JqZWN0LCB3aGljaCBpcyB3aGF0IHdlIHdhbnQuCi1jbGFzcyBTZWNyZXQ7Ci0KIC8vIFR3
byBvdmVybG9hZGVkIGhlbHBlcnMgZm9yIGNoZWNraW5nIGF0IGNvbXBpbGUgdGltZSB3aGV0aGVy
IGFuCiAvLyBleHByZXNzaW9uIGlzIGEgbnVsbCBwb2ludGVyIGxpdGVyYWwgKGkuZS4gTlVMTCBv
ciBhbnkgMC12YWx1ZWQKIC8vIGNvbXBpbGUtdGltZSBpbnRlZ3JhbCBjb25zdGFudCkuICBUaGVp
ciByZXR1cm4gdmFsdWVzIGhhdmUKQEAgLTE1MCwxMjcgKzEyOSw2NSBAQCBjaGFyICgmSXNOdWxs
TGl0ZXJhbEhlbHBlciguLi4pKVsyXTsgIC8vIE5PTElOVAogI2lmZGVmIEdURVNUX0VMTElQU0lT
X05FRURTX1BPRF8KIC8vIFdlIGxvc2Ugc3VwcG9ydCBmb3IgTlVMTCBkZXRlY3Rpb24gd2hlcmUg
dGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZQogLy8gcGFzc2luZyBub24tUE9EIGNsYXNzZXMgdGhy
b3VnaCBlbGxpcHNpcyAoLi4uKS4KLSNkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBm
YWxzZQorIyBkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBmYWxzZQogI2Vsc2UKLSNk
ZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBcCisjIGRlZmluZSBHVEVTVF9JU19OVUxM
X0xJVEVSQUxfKHgpIFwKICAgICAoc2l6ZW9mKDo6dGVzdGluZzo6aW50ZXJuYWw6OklzTnVsbExp
dGVyYWxIZWxwZXIoeCkpID09IDEpCiAjZW5kaWYgIC8vIEdURVNUX0VMTElQU0lTX05FRURTX1BP
RF8KIAogLy8gQXBwZW5kcyB0aGUgdXNlci1zdXBwbGllZCBtZXNzYWdlIHRvIHRoZSBHb29nbGUt
VGVzdC1nZW5lcmF0ZWQgbWVzc2FnZS4KLUdURVNUX0FQSV8gU3RyaW5nIEFwcGVuZFVzZXJNZXNz
YWdlKGNvbnN0IFN0cmluZyYgZ3Rlc3RfbXNnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgTWVzc2FnZSYgdXNlcl9tc2cpOwotCi0vLyBBIGhlbHBlciBjbGFzcyBm
b3IgY3JlYXRpbmcgc2NvcGVkIHRyYWNlcyBpbiB1c2VyIHByb2dyYW1zLgotY2xhc3MgR1RFU1Rf
QVBJXyBTY29wZWRUcmFjZSB7Ci0gcHVibGljOgotICAvLyBUaGUgYyd0b3IgcHVzaGVzIHRoZSBn
aXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlvbiBhbmQgbWVzc2FnZSBvbnRvCi0gIC8vIGEgdHJhY2Ug
c3RhY2sgbWFpbnRhaW5lZCBieSBHb29nbGUgVGVzdC4KLSAgU2NvcGVkVHJhY2UoY29uc3QgY2hh
ciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IE1lc3NhZ2UmIG1lc3NhZ2UpOwotCi0gIC8vIFRoZSBk
J3RvciBwb3BzIHRoZSBpbmZvIHB1c2hlZCBieSB0aGUgYyd0b3IuCi0gIC8vCi0gIC8vIE5vdGUg
dGhhdCB0aGUgZCd0b3IgaXMgbm90IHZpcnR1YWwgaW4gb3JkZXIgdG8gYmUgZWZmaWNpZW50Lgot
ICAvLyBEb24ndCBpbmhlcml0IGZyb20gU2NvcGVkVHJhY2UhCi0gIH5TY29wZWRUcmFjZSgpOwot
Ci0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTY29wZWRUcmFj
ZSk7Ci19IEdURVNUX0FUVFJJQlVURV9VTlVTRURfOyAgLy8gQSBTY29wZWRUcmFjZSBvYmplY3Qg
ZG9lcyBpdHMgam9iIGluIGl0cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGMndG9y
IGFuZCBkJ3Rvci4gIFRoZXJlZm9yZSBpdCBkb2Vzbid0Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gbmVlZCB0byBiZSB1c2VkIG90aGVyd2lzZS4KLQotLy8gQ29udmVydHMgYSBzdHJl
YW1hYmxlIHZhbHVlIHRvIGEgU3RyaW5nLiAgQSBOVUxMIHBvaW50ZXIgaXMKLS8vIGNvbnZlcnRl
ZCB0byAiKG51bGwpIi4gIFdoZW4gdGhlIGlucHV0IHZhbHVlIGlzIGEgOjpzdHJpbmcsCi0vLyA6
OnN0ZDo6c3RyaW5nLCA6OndzdHJpbmcsIG9yIDo6c3RkOjp3c3RyaW5nIG9iamVjdCwgZWFjaCBO
VUwKLS8vIGNoYXJhY3RlciBpbiBpdCBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgotLy8gRGVjbGFy
ZWQgaGVyZSBidXQgZGVmaW5lZCBpbiBndGVzdC5oLCBzbyB0aGF0IGl0IGhhcyBhY2Nlc3MKLS8v
IHRvIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBNZXNzYWdlIGNsYXNzLCByZXF1aXJlZCBieSB0aGUg
QVJNCi0vLyBjb21waWxlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotU3RyaW5nIFN0cmVhbWFi
bGVUb1N0cmluZyhjb25zdCBUJiBzdHJlYW1hYmxlKTsKLQotLy8gRm9ybWF0cyBhIHZhbHVlIHRv
IGJlIHVzZWQgaW4gYSBmYWlsdXJlIG1lc3NhZ2UuCi0KLSNpZmRlZiBHVEVTVF9ORUVEU19JU19Q
T0lOVEVSXwotCi0vLyBUaGVzZSBhcmUgbmVlZGVkIGFzIHRoZSBOb2tpYSBTeW1iaWFuIGFuZCBJ
Qk0gWEwgQy9DKysgY29tcGlsZXJzCi0vLyBjYW5ub3QgZGVjaWRlIGJldHdlZW4gY29uc3QgVCYg
YW5kIGNvbnN0IFQqIGluIGEgZnVuY3Rpb24gdGVtcGxhdGUuCi0vLyBUaGVzZSBjb21waWxlcnMg
X2Nhbl8gZGVjaWRlIGJldHdlZW4gY2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zCi0vLyBm
b3IgVCBhbmQgVCosIHNvIGEgdHIxOjp0eXBlX3RyYWl0cy1saWtlIGlzX3BvaW50ZXIgd29ya3Ms
IGFuZCB3ZQotLy8gY2FuIG92ZXJsb2FkIG9uIHRoYXQuCitHVEVTVF9BUElfIHN0ZDo6c3RyaW5n
IEFwcGVuZFVzZXJNZXNzYWdlKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBndGVzdF9tc2csIGNv
bnN0IE1lc3NhZ2UmIHVzZXJfbXNnKTsKIAotLy8gVGhpcyBvdmVybG9hZCBtYWtlcyBzdXJlIHRo
YXQgYWxsIHBvaW50ZXJzIChpbmNsdWRpbmcKLS8vIHRob3NlIHRvIGNoYXIgb3Igd2NoYXJfdCkg
YXJlIHByaW50ZWQgYXMgcmF3IHBvaW50ZXJzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxp
bmUgU3RyaW5nIEZvcm1hdFZhbHVlRm9yRmFpbHVyZU1lc3NhZ2UoaW50ZXJuYWw6OnRydWVfdHlw
ZSAvKmR1bW15Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VCogcG9pbnRlcikgewotICByZXR1cm4gU3RyZWFtYWJsZVRvU3RyaW5nKHN0YXRpY19jYXN0PGNv
bnN0IHZvaWQqPihwb2ludGVyKSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5l
IFN0cmluZyBGb3JtYXRWYWx1ZUZvckZhaWx1cmVNZXNzYWdlKGludGVybmFsOjpmYWxzZV90eXBl
IC8qZHVtbXkqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUJiB2YWx1ZSkgewotICByZXR1cm4gU3RyZWFtYWJsZVRvU3RyaW5nKHZhbHVlKTsKLX0K
KyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGlu
ZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3QgVCYgdmFsdWUpIHsKLSAgcmV0
dXJuIEZvcm1hdFZhbHVlRm9yRmFpbHVyZU1lc3NhZ2UoCi0gICAgICB0eXBlbmFtZSBpbnRlcm5h
bDo6aXNfcG9pbnRlcjxUPjo6dHlwZSgpLCB2YWx1ZSk7Ci19CitHVEVTVF9ESVNBQkxFX01TQ19X
QVJOSU5HU19QVVNIXyg0Mjc1IFwKKy8qIGFuIGV4cG9ydGVkIGNsYXNzIHdhcyBkZXJpdmVkIGZy
b20gYSBjbGFzcyB0aGF0IHdhcyBub3QgZXhwb3J0ZWQgKi8pCiAKLSNlbHNlCisvLyBUaGlzIGV4
Y2VwdGlvbiBpcyB0aHJvd24gYnkgKGFuZCBvbmx5IGJ5KSBhIGZhaWxlZCBHb29nbGUgVGVzdAor
Ly8gYXNzZXJ0aW9uIHdoZW4gR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSBpcyB0cnVlIChp
ZiBleGNlcHRpb25zCisvLyBhcmUgZW5hYmxlZCkuICBXZSBkZXJpdmUgaXQgZnJvbSBzdGQ6OnJ1
bnRpbWVfZXJyb3IsIHdoaWNoIGlzIGZvcgorLy8gZXJyb3JzIHByZXN1bWFibHkgZGV0ZWN0YWJs
ZSBvbmx5IGF0IHJ1biB0aW1lLiAgU2luY2UKKy8vIHN0ZDo6cnVudGltZV9lcnJvciBpbmhlcml0
cyBmcm9tIHN0ZDo6ZXhjZXB0aW9uLCBtYW55IHRlc3RpbmcKKy8vIGZyYW1ld29ya3Mga25vdyBo
b3cgdG8gZXh0cmFjdCBhbmQgcHJpbnQgdGhlIG1lc3NhZ2UgaW5zaWRlIGl0LgorY2xhc3MgR1RF
U1RfQVBJXyBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbiA6IHB1YmxpYyA6OnN0ZDo6cnVudGlt
ZV9lcnJvciB7CisgcHVibGljOgorICBleHBsaWNpdCBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlv
bihjb25zdCBUZXN0UGFydFJlc3VsdCYgZmFpbHVyZSk7Cit9OwogCi0vLyBUaGVzZSBhcmUgbmVl
ZGVkIGFzIHRoZSBhYm92ZSBzb2x1dGlvbiB1c2luZyBpc19wb2ludGVyIGhhcyB0aGUKLS8vIGxp
bWl0YXRpb24gdGhhdCBUIGNhbm5vdCBiZSBhIHR5cGUgd2l0aG91dCBleHRlcm5hbCBsaW5rYWdl
LCB3aGVuCi0vLyBjb21waWxlZCB1c2luZyBNU1ZDLgorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklO
R1NfUE9QXygpICAvLyAgNDI3NQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBTdHJp
bmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3QgVCYgdmFsdWUpIHsKLSAgcmV0dXJuIFN0
cmVhbWFibGVUb1N0cmluZyh2YWx1ZSk7Ci19CisjZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJ
T05TCiAKLS8vIFRoaXMgb3ZlcmxvYWQgbWFrZXMgc3VyZSB0aGF0IGFsbCBwb2ludGVycyAoaW5j
bHVkaW5nCi0vLyB0aG9zZSB0byBjaGFyIG9yIHdjaGFyX3QpIGFyZSBwcmludGVkIGFzIHJhdyBw
b2ludGVycy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFN0cmluZyBGb3JtYXRGb3JG
YWlsdXJlTWVzc2FnZShUKiBwb2ludGVyKSB7Ci0gIHJldHVybiBTdHJlYW1hYmxlVG9TdHJpbmco
c3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHBvaW50ZXIpKTsKLX0KK25hbWVzcGFjZSBlZGl0X2Rp
c3RhbmNlIHsKKy8vIFJldHVybnMgdGhlIG9wdGltYWwgZWRpdHMgdG8gZ28gZnJvbSAnbGVmdCcg
dG8gJ3JpZ2h0Jy4KKy8vIEFsbCBlZGl0cyBjb3N0IHRoZSBzYW1lLCB3aXRoIHJlcGxhY2UgaGF2
aW5nIGxvd2VyIHByaW9yaXR5IHRoYW4KKy8vIGFkZC9yZW1vdmUuCisvLyBTaW1wbGUgaW1wbGVt
ZW50YXRpb24gb2YgdGhlIFdhZ25lci1GaXNjaGVyIGFsZ29yaXRobS4KKy8vIFNlZSBodHRwOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL1dhZ25lci1GaXNjaGVyX2FsZ29yaXRobQorZW51bSBFZGl0
VHlwZSB7IGtNYXRjaCwga0FkZCwga1JlbW92ZSwga1JlcGxhY2UgfTsKK0dURVNUX0FQSV8gc3Rk
Ojp2ZWN0b3I8RWRpdFR5cGU+IENhbGN1bGF0ZU9wdGltYWxFZGl0cygKKyAgICBjb25zdCBzdGQ6
OnZlY3RvcjxzaXplX3Q+JiBsZWZ0LCBjb25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+JiByaWdodCk7
CiAKLSNlbmRpZiAgLy8gR1RFU1RfTkVFRFNfSVNfUE9JTlRFUl8KLQotLy8gVGhlc2Ugb3Zlcmxv
YWRlZCB2ZXJzaW9ucyBoYW5kbGUgbmFycm93IGFuZCB3aWRlIGNoYXJhY3RlcnMuCi1HVEVTVF9B
UElfIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjaGFyIGNoKTsKLUdURVNUX0FQSV8g
U3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKHdjaGFyX3Qgd2NoYXIpOwotCi0vLyBXaGVu
IHRoaXMgb3BlcmFuZCBpcyBhIGNvbnN0IGNoYXIqIG9yIGNoYXIqLCBhbmQgdGhlIG90aGVyIG9w
ZXJhbmQKLS8vIGlzIGEgOjpzdGQ6OnN0cmluZyBvciA6OnN0cmluZywgd2UgcHJpbnQgdGhpcyBv
cGVyYW5kIGFzIGEgQyBzdHJpbmcKLS8vIHJhdGhlciB0aGFuIGEgcG9pbnRlci4gIFdlIGRvIHRo
ZSBzYW1lIGZvciB3aWRlIHN0cmluZ3MuCi0KLS8vIFRoaXMgaW50ZXJuYWwgbWFjcm8gaXMgdXNl
ZCB0byBhdm9pZCBkdXBsaWNhdGVkIGNvZGUuCi0jZGVmaW5lIEdURVNUX0ZPUk1BVF9JTVBMXyhv
cGVyYW5kMl90eXBlLCBvcGVyYW5kMV9wcmludGVyKVwKLWlubGluZSBTdHJpbmcgRm9ybWF0Rm9y
Q29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKFwKLSAgICBvcGVyYW5kMl90eXBlOjp2YWx1ZV90eXBl
KiBzdHIsIGNvbnN0IG9wZXJhbmQyX3R5cGUmIC8qb3BlcmFuZDIqLykge1wKLSAgcmV0dXJuIG9w
ZXJhbmQxX3ByaW50ZXIoc3RyKTtcCi19XAotaW5saW5lIFN0cmluZyBGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2UoXAotICAgIGNvbnN0IG9wZXJhbmQyX3R5cGU6OnZhbHVlX3R5cGUq
IHN0ciwgY29uc3Qgb3BlcmFuZDJfdHlwZSYgLypvcGVyYW5kMiovKSB7XAotICByZXR1cm4gb3Bl
cmFuZDFfcHJpbnRlcihzdHIpO1wKLX0KKy8vIFNhbWUgYXMgYWJvdmUsIGJ1dCB0aGUgaW5wdXQg
aXMgcmVwcmVzZW50ZWQgYXMgc3RyaW5ncy4KK0dURVNUX0FQSV8gc3RkOjp2ZWN0b3I8RWRpdFR5
cGU+IENhbGN1bGF0ZU9wdGltYWxFZGl0cygKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4mIGxlZnQsCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiByaWdodCk7
CiAKLUdURVNUX0ZPUk1BVF9JTVBMXyg6OnN0ZDo6c3RyaW5nLCBTdHJpbmc6OlNob3dDU3RyaW5n
UXVvdGVkKQotI2lmIEdURVNUX0hBU19TVERfV1NUUklORwotR1RFU1RfRk9STUFUX0lNUExfKDo6
c3RkOjp3c3RyaW5nLCBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZCkKLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1NURF9XU1RSSU5HCisvLyBDcmVhdGUgYSBkaWZmIG9mIHRoZSBpbnB1dCBzdHJp
bmdzIGluIFVuaWZpZWQgZGlmZiBmb3JtYXQuCitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIENyZWF0
ZVVuaWZpZWREaWZmKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgbGVmdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+JiByaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGNvbnRleHQgPSAyKTsKIAotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi1H
VEVTVF9GT1JNQVRfSU1QTF8oOjpzdHJpbmcsIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQpCi0j
ZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9X
U1RSSU5HCi1HVEVTVF9GT1JNQVRfSU1QTF8oOjp3c3RyaW5nLCBTdHJpbmc6OlNob3dXaWRlQ1N0
cmluZ1F1b3RlZCkKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCit9ICAvLyBu
YW1lc3BhY2UgZWRpdF9kaXN0YW5jZQogCi0jdW5kZWYgR1RFU1RfRk9STUFUX0lNUExfCisvLyBD
YWxjdWxhdGUgdGhlIGRpZmYgYmV0d2VlbiAnbGVmdCcgYW5kICdyaWdodCcgYW5kIHJldHVybiBp
dCBpbiB1bmlmaWVkIGRpZmYKKy8vIGZvcm1hdC4KKy8vIElmIG5vdCBudWxsLCBzdG9yZXMgaW4g
J3RvdGFsX2xpbmVfY291bnQnIHRoZSB0b3RhbCBudW1iZXIgb2YgbGluZXMgZm91bmQKKy8vIGlu
IGxlZnQgKyByaWdodC4KK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgRGlmZlN0cmluZ3MoY29uc3Qg
c3RkOjpzdHJpbmcmIGxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiByaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90KiB0b3RhbF9saW5lX2NvdW50KTsKIAogLy8gQ29uc3RydWN0cyBhbmQgcmV0dXJu
cyB0aGUgbWVzc2FnZSBmb3IgYW4gZXF1YWxpdHkgYXNzZXJ0aW9uCiAvLyAoZS5nLiBBU1NFUlRf
RVEsIEVYUEVDVF9TVFJFUSwgZXRjKSBmYWlsdXJlLgpAQCAtMjg5LDEyICsyMDYsMTIgQEAgR1RF
U1RfRk9STUFUX0lNUExfKDo6d3N0cmluZywgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQp
CiAvLyBiZSBpbnNlcnRlZCBpbnRvIHRoZSBtZXNzYWdlLgogR1RFU1RfQVBJXyBBc3NlcnRpb25S
ZXN1bHQgRXFGYWlsdXJlKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBl
eHBlY3RlZF92YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBTdHJpbmcmIGFjdHVhbF92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRfdmFsdWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFjdHVhbF92YWx1ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yaW5nX2Nhc2UpOwog
CiAvLyBDb25zdHJ1Y3RzIGEgZmFpbHVyZSBtZXNzYWdlIGZvciBCb29sZWFuIGFzc2VydGlvbnMg
c3VjaCBhcyBFWFBFQ1RfVFJVRS4KLUdURVNUX0FQSV8gU3RyaW5nIEdldEJvb2xBc3NlcnRpb25G
YWlsdXJlTWVzc2FnZSgKK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgR2V0Qm9vbEFzc2VydGlvbkZh
aWx1cmVNZXNzYWdlKAogICAgIGNvbnN0IEFzc2VydGlvblJlc3VsdCYgYXNzZXJ0aW9uX3Jlc3Vs
dCwKICAgICBjb25zdCBjaGFyKiBleHByZXNzaW9uX3RleHQsCiAgICAgY29uc3QgY2hhciogYWN0
dWFsX3ByZWRpY2F0ZV92YWx1ZSwKQEAgLTM2OSw3ICsyODYsNyBAQCBjbGFzcyBGbG9hdGluZ1Bv
aW50IHsKICAgLy8gYml0cy4gIFRoZXJlZm9yZSwgNCBzaG91bGQgYmUgZW5vdWdoIGZvciBvcmRp
bmFyeSB1c2UuCiAgIC8vCiAgIC8vIFNlZSB0aGUgZm9sbG93aW5nIGFydGljbGUgZm9yIG1vcmUg
ZGV0YWlscyBvbiBVTFA6Ci0gIC8vIGh0dHA6Ly93d3cuY3lnbnVzLXNvZnR3YXJlLmNvbS9wYXBl
cnMvY29tcGFyaW5nZmxvYXRzL2NvbXBhcmluZ2Zsb2F0cy5odG0uCisgIC8vIGh0dHA6Ly9yYW5k
b21hc2NpaS53b3JkcHJlc3MuY29tLzIwMTIvMDIvMjUvY29tcGFyaW5nLWZsb2F0aW5nLXBvaW50
LW51bWJlcnMtMjAxMi1lZGl0aW9uLwogICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtNYXhVbHBzID0g
NDsKIAogICAvLyBDb25zdHJ1Y3RzIGEgRmxvYXRpbmdQb2ludCBmcm9tIGEgcmF3IGZsb2F0aW5n
LXBvaW50IG51bWJlci4KQEAgLTM5Niw2ICszMTMsOSBAQCBjbGFzcyBGbG9hdGluZ1BvaW50IHsK
ICAgICByZXR1cm4gUmVpbnRlcnByZXRCaXRzKGtFeHBvbmVudEJpdE1hc2spOwogICB9CiAKKyAg
Ly8gUmV0dXJucyB0aGUgbWF4aW11bSByZXByZXNlbnRhYmxlIGZpbml0ZSBmbG9hdGluZy1wb2lu
dCBudW1iZXIuCisgIHN0YXRpYyBSYXdUeXBlIE1heCgpOworCiAgIC8vIE5vbi1zdGF0aWMgbWV0
aG9kcwogCiAgIC8vIFJldHVybnMgdGhlIGJpdHMgdGhhdCByZXByZXNlbnRzIHRoaXMgbnVtYmVy
LgpAQCAtNDc2LDYgKzM5NiwxMyBAQCBjbGFzcyBGbG9hdGluZ1BvaW50IHsKICAgRmxvYXRpbmdQ
b2ludFVuaW9uIHVfOwogfTsKIAorLy8gV2UgY2Fubm90IHVzZSBzdGQ6Om51bWVyaWNfbGltaXRz
PFQ+OjptYXgoKSBhcyBpdCBjbGFzaGVzIHdpdGggdGhlIG1heCgpCisvLyBtYWNybyBkZWZpbmVk
IGJ5IDx3aW5kb3dzLmg+LgordGVtcGxhdGUgPD4KK2lubGluZSBmbG9hdCBGbG9hdGluZ1BvaW50
PGZsb2F0Pjo6TWF4KCkgeyByZXR1cm4gRkxUX01BWDsgfQordGVtcGxhdGUgPD4KK2lubGluZSBk
b3VibGUgRmxvYXRpbmdQb2ludDxkb3VibGU+OjpNYXgoKSB7IHJldHVybiBEQkxfTUFYOyB9CisK
IC8vIFR5cGVkZWZzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIEZsb2F0aW5nUG9pbnQgdGVtcGxhdGUg
Y2xhc3MgdGhhdCB3ZQogLy8gY2FyZSB0byB1c2UuCiB0eXBlZGVmIEZsb2F0aW5nUG9pbnQ8Zmxv
YXQ+IEZsb2F0OwpAQCAtNTU4LDI0ICs0ODUsMTggQEAgR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1
bHQgSXNIUkVTVUxURmFpbHVyZShjb25zdCBjaGFyKiBleHByLAogCiAjZW5kaWYgIC8vIEdURVNU
X09TX1dJTkRPV1MKIAotLy8gRm9ybWF0cyBhIHNvdXJjZSBmaWxlIHBhdGggYW5kIGEgbGluZSBu
dW1iZXIgYXMgdGhleSB3b3VsZCBhcHBlYXIKLS8vIGluIGEgY29tcGlsZXIgZXJyb3IgbWVzc2Fn
ZS4KLWlubGluZSBTdHJpbmcgRm9ybWF0RmlsZUxvY2F0aW9uKGNvbnN0IGNoYXIqIGZpbGUsIGlu
dCBsaW5lKSB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IGZpbGVfbmFtZSA9IGZpbGUgPT0gTlVMTCA/
ICJ1bmtub3duIGZpbGUiIDogZmlsZTsKLSAgaWYgKGxpbmUgPCAwKSB7Ci0gICAgcmV0dXJuIFN0
cmluZzo6Rm9ybWF0KCIlczoiLCBmaWxlX25hbWUpOwotICB9Ci0jaWZkZWYgX01TQ19WRVIKLSAg
cmV0dXJuIFN0cmluZzo6Rm9ybWF0KCIlcyglZCk6IiwgZmlsZV9uYW1lLCBsaW5lKTsKLSNlbHNl
Ci0gIHJldHVybiBTdHJpbmc6OkZvcm1hdCgiJXM6JWQ6IiwgZmlsZV9uYW1lLCBsaW5lKTsKLSNl
bmRpZiAgLy8gX01TQ19WRVIKLX0KLQogLy8gVHlwZXMgb2YgU2V0VXBUZXN0Q2FzZSgpIGFuZCBU
ZWFyRG93blRlc3RDYXNlKCkgZnVuY3Rpb25zLgogdHlwZWRlZiB2b2lkICgqU2V0VXBUZXN0Q2Fz
ZUZ1bmMpKCk7CiB0eXBlZGVmIHZvaWQgKCpUZWFyRG93blRlc3RDYXNlRnVuYykoKTsKIAorc3Ry
dWN0IENvZGVMb2NhdGlvbiB7CisgIENvZGVMb2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgYV9m
aWxlLCBpbnQgYV9saW5lKQorICAgICAgOiBmaWxlKGFfZmlsZSksIGxpbmUoYV9saW5lKSB7fQor
CisgIHN0ZDo6c3RyaW5nIGZpbGU7CisgIGludCBsaW5lOworfTsKKwogLy8gQ3JlYXRlcyBhIG5l
dyBUZXN0SW5mbyBvYmplY3QgYW5kIHJlZ2lzdGVycyBpdCB3aXRoIEdvb2dsZSBUZXN0OwogLy8g
cmV0dXJucyB0aGUgY3JlYXRlZCBvYmplY3QuCiAvLwpAQCAtNTgzLDEwICs1MDQsMTEgQEAgdHlw
ZWRlZiB2b2lkICgqVGVhckRvd25UZXN0Q2FzZUZ1bmMpKCk7CiAvLwogLy8gICB0ZXN0X2Nhc2Vf
bmFtZTogICBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UKIC8vICAgbmFtZTogICAgICAgICAgICAgbmFt
ZSBvZiB0aGUgdGVzdAotLy8gICB0ZXN0X2Nhc2VfY29tbWVudDogYSBjb21tZW50IG9uIHRoZSB0
ZXN0IGNhc2UgdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluCi0vLyAgICAgICAgICAgICAgICAgICAg
ICB0aGUgdGVzdCBvdXRwdXQKLS8vICAgY29tbWVudDogICAgICAgICAgYSBjb21tZW50IG9uIHRo
ZSB0ZXN0IHRoYXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKLS8vICAgICAgICAgICAgICAgICAg
ICAgdGVzdCBvdXRwdXQKKy8vICAgdHlwZV9wYXJhbSAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHRl
c3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorLy8gICAgICAgICAgICAgICAgICAgICB0
aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisvLyAgIHZh
bHVlX3BhcmFtICAgICAgIHRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRlc3QncyB2YWx1ZSBw
YXJhbWV0ZXIsCisvLyAgICAgICAgICAgICAgICAgICAgIG9yIE5VTEwgaWYgdGhpcyBpcyBub3Qg
YSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKy8vICAgY29kZV9sb2NhdGlvbjogICAgY29kZSBs
b2NhdGlvbiB3aGVyZSB0aGUgdGVzdCBpcyBkZWZpbmVkCiAvLyAgIGZpeHR1cmVfY2xhc3NfaWQ6
IElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKIC8vICAgc2V0X3VwX3RjOiAgICAgICAgcG9p
bnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSB0ZXN0IGNhc2UKIC8vICAgdGVh
cl9kb3duX3RjOiAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCB0ZWFycyBkb3duIHRo
ZSB0ZXN0IGNhc2UKQEAgLTU5NCw4ICs1MTYsMTEgQEAgdHlwZWRlZiB2b2lkICgqVGVhckRvd25U
ZXN0Q2FzZUZ1bmMpKCk7CiAvLyAgICAgICAgICAgICAgICAgICAgIFRoZSBuZXdseSBjcmVhdGVk
IFRlc3RJbmZvIGluc3RhbmNlIHdpbGwgYXNzdW1lCiAvLyAgICAgICAgICAgICAgICAgICAgIG93
bmVyc2hpcCBvZiB0aGUgZmFjdG9yeSBvYmplY3QuCiBHVEVTVF9BUElfIFRlc3RJbmZvKiBNYWtl
QW5kUmVnaXN0ZXJUZXN0SW5mbygKLSAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwgY29u
c3QgY2hhciogbmFtZSwKLSAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfY29tbWVudCwgY29uc3Qg
Y2hhciogY29tbWVudCwKKyAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICBjb25z
dCBjaGFyKiBuYW1lLAorICAgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0sCisgICAgY29uc3QgY2hh
ciogdmFsdWVfcGFyYW0sCisgICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24sCiAgICAgVHlw
ZUlkIGZpeHR1cmVfY2xhc3NfaWQsCiAgICAgU2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAog
ICAgIFRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YywKQEAgLTYwNCwxMCArNTI5LDEz
IEBAIEdURVNUX0FQSV8gVGVzdEluZm8qIE1ha2VBbmRSZWdpc3RlclRlc3RJbmZvKAogLy8gSWYg
KnBzdHIgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeCwgbW9kaWZpZXMgKnBzdHIgdG8gYmUg
cmlnaHQKIC8vIHBhc3QgdGhlIHByZWZpeCBhbmQgcmV0dXJucyB0cnVlOyBvdGhlcndpc2UgbGVh
dmVzICpwc3RyIHVuY2hhbmdlZAogLy8gYW5kIHJldHVybnMgZmFsc2UuICBOb25lIG9mIHBzdHIs
ICpwc3RyLCBhbmQgcHJlZml4IGNhbiBiZSBOVUxMLgotYm9vbCBTa2lwUHJlZml4KGNvbnN0IGNo
YXIqIHByZWZpeCwgY29uc3QgY2hhcioqIHBzdHIpOworR1RFU1RfQVBJXyBib29sIFNraXBQcmVm
aXgoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiogcHN0cik7CiAKICNpZiBHVEVTVF9I
QVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCiAKK0dURVNUX0RJU0FCTEVf
TVNDX1dBUk5JTkdTX1BVU0hfKDQyNTEgXAorLyogY2xhc3MgQSBuZWVkcyB0byBoYXZlIGRsbC1p
bnRlcmZhY2UgdG8gYmUgdXNlZCBieSBjbGllbnRzIG9mIGNsYXNzIEIgKi8pCisKIC8vIFN0YXRl
IG9mIHRoZSBkZWZpbml0aW9uIG9mIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZS4KIGNs
YXNzIEdURVNUX0FQSV8gVHlwZWRUZXN0Q2FzZVBTdGF0ZSB7CiAgcHVibGljOgpAQCAtNjI1LDEw
ICs1NTMsMjEgQEAgY2xhc3MgR1RFU1RfQVBJXyBUeXBlZFRlc3RDYXNlUFN0YXRlIHsKICAgICAg
IGZmbHVzaChzdGRlcnIpOwogICAgICAgcG9zaXg6OkFib3J0KCk7CiAgICAgfQotICAgIGRlZmlu
ZWRfdGVzdF9uYW1lc18uaW5zZXJ0KHRlc3RfbmFtZSk7CisgICAgcmVnaXN0ZXJlZF90ZXN0c18u
aW5zZXJ0KAorICAgICAgICA6OnN0ZDo6bWFrZV9wYWlyKHRlc3RfbmFtZSwgQ29kZUxvY2F0aW9u
KGZpbGUsIGxpbmUpKSk7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIAorICBib29sIFRlc3RFeGlz
dHMoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RfbmFtZSkgY29uc3QgeworICAgIHJldHVybiByZWdp
c3RlcmVkX3Rlc3RzXy5jb3VudCh0ZXN0X25hbWUpID4gMDsKKyAgfQorCisgIGNvbnN0IENvZGVM
b2NhdGlvbiYgR2V0Q29kZUxvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0X25hbWUpIGNv
bnN0IHsKKyAgICBSZWdpc3RlcmVkVGVzdHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVnaXN0
ZXJlZF90ZXN0c18uZmluZCh0ZXN0X25hbWUpOworICAgIEdURVNUX0NIRUNLXyhpdCAhPSByZWdp
c3RlcmVkX3Rlc3RzXy5lbmQoKSk7CisgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CisgIH0KKwogICAv
LyBWZXJpZmllcyB0aGF0IHJlZ2lzdGVyZWRfdGVzdHMgbWF0Y2ggdGhlIHRlc3QgbmFtZXMgaW4K
ICAgLy8gZGVmaW5lZF90ZXN0X25hbWVzXzsgcmV0dXJucyByZWdpc3RlcmVkX3Rlc3RzIGlmIHN1
Y2Nlc3NmdWwsIG9yCiAgIC8vIGFib3J0cyB0aGUgcHJvZ3JhbSBvdGhlcndpc2UuCkBAIC02MzYs
MTAgKzU3NSwxNCBAQCBjbGFzcyBHVEVTVF9BUElfIFR5cGVkVGVzdENhc2VQU3RhdGUgewogICAg
ICAgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIHJlZ2lzdGVyZWRfdGVz
dHMpOwogCiAgcHJpdmF0ZToKKyAgdHlwZWRlZiA6OnN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBDb2Rl
TG9jYXRpb24+IFJlZ2lzdGVyZWRUZXN0c01hcDsKKwogICBib29sIHJlZ2lzdGVyZWRfOwotICA6
OnN0ZDo6c2V0PGNvbnN0IGNoYXIqPiBkZWZpbmVkX3Rlc3RfbmFtZXNfOworICBSZWdpc3RlcmVk
VGVzdHNNYXAgcmVnaXN0ZXJlZF90ZXN0c187CiB9OwogCitHVEVTVF9ESVNBQkxFX01TQ19XQVJO
SU5HU19QT1BfKCkgIC8vICA0MjUxCisKIC8vIFNraXBzIHRvIHRoZSBmaXJzdCBub24tc3BhY2Ug
Y2hhciBhZnRlciB0aGUgZmlyc3QgY29tbWEgaW4gJ3N0cic7CiAvLyByZXR1cm5zIE5VTEwgaWYg
bm8gY29tbWEgaXMgZm91bmQgaW4gJ3N0cicuCiBpbmxpbmUgY29uc3QgY2hhciogU2tpcENvbW1h
KGNvbnN0IGNoYXIqIHN0cikgewpAQCAtNjQ3LDE1ICs1OTAsNTEgQEAgaW5saW5lIGNvbnN0IGNo
YXIqIFNraXBDb21tYShjb25zdCBjaGFyKiBzdHIpIHsKICAgaWYgKGNvbW1hID09IE5VTEwpIHsK
ICAgICByZXR1cm4gTlVMTDsKICAgfQotICB3aGlsZSAoaXNzcGFjZSgqKCsrY29tbWEpKSkge30K
KyAgd2hpbGUgKElzU3BhY2UoKigrK2NvbW1hKSkpIHt9CiAgIHJldHVybiBjb21tYTsKIH0KIAog
Ly8gUmV0dXJucyB0aGUgcHJlZml4IG9mICdzdHInIGJlZm9yZSB0aGUgZmlyc3QgY29tbWEgaW4g
aXQ7IHJldHVybnMKIC8vIHRoZSBlbnRpcmUgc3RyaW5nIGlmIGl0IGNvbnRhaW5zIG5vIGNvbW1h
LgotaW5saW5lIFN0cmluZyBHZXRQcmVmaXhVbnRpbENvbW1hKGNvbnN0IGNoYXIqIHN0cikgewor
aW5saW5lIHN0ZDo6c3RyaW5nIEdldFByZWZpeFVudGlsQ29tbWEoY29uc3QgY2hhciogc3RyKSB7
CiAgIGNvbnN0IGNoYXIqIGNvbW1hID0gc3RyY2hyKHN0ciwgJywnKTsKLSAgcmV0dXJuIGNvbW1h
ID09IE5VTEwgPyBTdHJpbmcoc3RyKSA6IFN0cmluZyhzdHIsIGNvbW1hIC0gc3RyKTsKKyAgcmV0
dXJuIGNvbW1hID09IE5VTEwgPyBzdHIgOiBzdGQ6OnN0cmluZyhzdHIsIGNvbW1hKTsKK30KKwor
Ly8gU3BsaXRzIGEgZ2l2ZW4gc3RyaW5nIG9uIGEgZ2l2ZW4gZGVsaW1pdGVyLCBwb3B1bGF0aW5n
IGEgZ2l2ZW4KKy8vIHZlY3RvciB3aXRoIHRoZSBmaWVsZHMuCit2b2lkIFNwbGl0U3RyaW5nKGNv
bnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgY2hhciBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAg
IDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpzdHJpbmc+KiBkZXN0KTsKKworLy8gVGhlIGRlZmF1bHQg
YXJndW1lbnQgdG8gdGhlIHRlbXBsYXRlIGJlbG93IGZvciB0aGUgY2FzZSB3aGVuIHRoZSB1c2Vy
IGRvZXMKKy8vIG5vdCBwcm92aWRlIGEgbmFtZSBnZW5lcmF0b3IuCitzdHJ1Y3QgRGVmYXVsdE5h
bWVHZW5lcmF0b3IgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIHN0ZDo6c3Ry
aW5nIEdldE5hbWUoaW50IGkpIHsKKyAgICByZXR1cm4gU3RyZWFtYWJsZVRvU3RyaW5nKGkpOwor
ICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUHJvdmlkZWQgPSBEZWZhdWx0TmFtZUdlbmVy
YXRvcj4KK3N0cnVjdCBOYW1lR2VuZXJhdG9yU2VsZWN0b3IgeworICB0eXBlZGVmIFByb3ZpZGVk
IHR5cGU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTmFtZUdlbmVyYXRvcj4KK3ZvaWQgR2Vu
ZXJhdGVOYW1lc1JlY3Vyc2l2ZWx5KFR5cGVzMCwgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+Kiwg
aW50KSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTmFtZUdlbmVyYXRvciwgdHlwZW5hbWUgVHlw
ZXM+Cit2b2lkIEdlbmVyYXRlTmFtZXNSZWN1cnNpdmVseShUeXBlcywgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+KiByZXN1bHQsIGludCBpKSB7CisgIHJlc3VsdC0+cHVzaF9iYWNrKE5hbWVHZW5l
cmF0b3I6OnRlbXBsYXRlIEdldE5hbWU8dHlwZW5hbWUgVHlwZXM6OkhlYWQ+KGkpKTsKKyAgR2Vu
ZXJhdGVOYW1lc1JlY3Vyc2l2ZWx5PE5hbWVHZW5lcmF0b3I+KHR5cGVuYW1lIFR5cGVzOjpUYWls
KCksIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkg
KyAxKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE5hbWVHZW5lcmF0b3IsIHR5cGVuYW1lIFR5
cGVzPgorc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdlbmVyYXRlTmFtZXMoKSB7CisgIHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiByZXN1bHQ7CisgIEdlbmVyYXRlTmFtZXNSZWN1cnNpdmVseTxO
YW1lR2VuZXJhdG9yPihUeXBlcygpLCAmcmVzdWx0LCAwKTsKKyAgcmV0dXJuIHJlc3VsdDsKIH0K
IAogLy8gVHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIFRlc3RTZWwsIFR5cGVzPjo6UmVn
aXN0ZXIoKQpAQCAtNjcyLDggKzY1MSwxMCBAQCBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3Qg
ewogICAvLyBzcGVjaWZpZWQgaW4gSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoUHJlZml4
LCBUZXN0Q2FzZSwKICAgLy8gVHlwZXMpLiAgVmFsaWQgdmFsdWVzIGZvciAnaW5kZXgnIGFyZSBb
MCwgTiAtIDFdIHdoZXJlIE4gaXMgdGhlCiAgIC8vIGxlbmd0aCBvZiBUeXBlcy4KLSAgc3RhdGlj
IGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiBjYXNlX25hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRlc3RfbmFtZXMsIGludCBpbmRl
eCkgeworICBzdGF0aWMgYm9vbCBSZWdpc3Rlcihjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IENv
ZGVMb2NhdGlvbiYgY29kZV9sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogY2FzZV9uYW1lLCBjb25zdCBjaGFyKiB0ZXN0X25hbWVzLCBpbnQgaW5kZXgsCisgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgdHlwZV9u
YW1lcyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU5hbWVzPERlZmF1bHRO
YW1lR2VuZXJhdG9yLCBUeXBlcz4oKSkgewogICAgIHR5cGVkZWYgdHlwZW5hbWUgVHlwZXM6Okhl
YWQgVHlwZTsKICAgICB0eXBlZGVmIEZpeHR1cmU8VHlwZT4gRml4dHVyZUNsYXNzOwogICAgIHR5
cGVkZWYgdHlwZW5hbWUgR1RFU1RfQklORF8oVGVzdFNlbCwgVHlwZSkgVGVzdENsYXNzOwpAQCAt
NjgxLDE5ICs2NjIsMjMgQEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0IHsKICAgICAvLyBG
aXJzdCwgcmVnaXN0ZXJzIHRoZSBmaXJzdCB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBpbiB0aGUg
dHlwZQogICAgIC8vIGxpc3QuCiAgICAgTWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8oCi0gICAgICAg
IFN0cmluZzo6Rm9ybWF0KCIlcyVzJXMvJWQiLCBwcmVmaXgsIHByZWZpeFswXSA9PSAnXDAnID8g
IiIgOiAiLyIsCi0gICAgICAgICAgICAgICAgICAgICAgIGNhc2VfbmFtZSwgaW5kZXgpLmNfc3Ry
KCksCi0gICAgICAgIEdldFByZWZpeFVudGlsQ29tbWEodGVzdF9uYW1lcykuY19zdHIoKSwKLSAg
ICAgICAgU3RyaW5nOjpGb3JtYXQoIlR5cGVQYXJhbSA9ICVzIiwgR2V0VHlwZU5hbWU8VHlwZT4o
KS5jX3N0cigpKS5jX3N0cigpLAotICAgICAgICAiIiwKLSAgICAgICAgR2V0VHlwZUlkPEZpeHR1
cmVDbGFzcz4oKSwKLSAgICAgICAgVGVzdENsYXNzOjpTZXRVcFRlc3RDYXNlLAotICAgICAgICBU
ZXN0Q2xhc3M6OlRlYXJEb3duVGVzdENhc2UsCi0gICAgICAgIG5ldyBUZXN0RmFjdG9yeUltcGw8
VGVzdENsYXNzPik7CisgICAgICAgIChzdGQ6OnN0cmluZyhwcmVmaXgpICsgKHByZWZpeFswXSA9
PSAnXDAnID8gIiIgOiAiLyIpICsgY2FzZV9uYW1lICsKKyAgICAgICAgICIvIiArIHR5cGVfbmFt
ZXNbaW5kZXhdKQorICAgICAgICAgICAgLmNfc3RyKCksCisgICAgICAgIFN0cmlwVHJhaWxpbmdT
cGFjZXMoR2V0UHJlZml4VW50aWxDb21tYSh0ZXN0X25hbWVzKSkuY19zdHIoKSwKKyAgICAgICAg
R2V0VHlwZU5hbWU8VHlwZT4oKS5jX3N0cigpLAorICAgICAgICBOVUxMLCAgLy8gTm8gdmFsdWUg
cGFyYW1ldGVyLgorICAgICAgICBjb2RlX2xvY2F0aW9uLCBHZXRUeXBlSWQ8Rml4dHVyZUNsYXNz
PigpLCBUZXN0Q2xhc3M6OlNldFVwVGVzdENhc2UsCisgICAgICAgIFRlc3RDbGFzczo6VGVhckRv
d25UZXN0Q2FzZSwgbmV3IFRlc3RGYWN0b3J5SW1wbDxUZXN0Q2xhc3M+KTsKIAogICAgIC8vIE5l
eHQsIHJlY3Vyc2VzIChhdCBjb21waWxlIHRpbWUpIHdpdGggdGhlIHRhaWwgb2YgdGhlIHR5cGUg
bGlzdC4KLSAgICByZXR1cm4gVHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIFRlc3RTZWws
IHR5cGVuYW1lIFR5cGVzOjpUYWlsPgotICAgICAgICA6OlJlZ2lzdGVyKHByZWZpeCwgY2FzZV9u
YW1lLCB0ZXN0X25hbWVzLCBpbmRleCArIDEpOworICAgIHJldHVybiBUeXBlUGFyYW1ldGVyaXpl
ZFRlc3Q8Rml4dHVyZSwgVGVzdFNlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHR5cGVuYW1lIFR5cGVzOjpUYWlsPjo6UmVnaXN0ZXIocHJlZml4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlX2xv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbmFtZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluZGV4ICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHlwZV9uYW1lcyk7CiAgIH0KIH07CiAKQEAgLTcwMSw4ICs2
ODYsMTEgQEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0IHsKIHRlbXBsYXRlIDxHVEVTVF9U
RU1QTEFURV8gRml4dHVyZSwgY2xhc3MgVGVzdFNlbD4KIGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVk
VGVzdDxGaXh0dXJlLCBUZXN0U2VsLCBUeXBlczA+IHsKICBwdWJsaWM6Ci0gIHN0YXRpYyBib29s
IFJlZ2lzdGVyKGNvbnN0IGNoYXIqIC8qcHJlZml4Ki8sIGNvbnN0IGNoYXIqIC8qY2FzZV9uYW1l
Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qdGVzdF9uYW1lcyovLCBp
bnQgLyppbmRleCovKSB7CisgIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIqIC8qcHJl
Zml4Ki8sIGNvbnN0IENvZGVMb2NhdGlvbiYsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIC8qY2FzZV9uYW1lKi8sIGNvbnN0IGNoYXIqIC8qdGVzdF9uYW1lcyovLAorICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgLyppbmRleCovLAorICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mID0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPigpIC8qdHlwZV9uYW1lcyovKSB7CiAgICAgcmV0
dXJuIHRydWU7CiAgIH0KIH07CkBAIC03MTQsMTcgKzcwMiwzNSBAQCBjbGFzcyBUeXBlUGFyYW1l
dGVyaXplZFRlc3Q8Rml4dHVyZSwgVGVzdFNlbCwgVHlwZXMwPiB7CiB0ZW1wbGF0ZSA8R1RFU1Rf
VEVNUExBVEVfIEZpeHR1cmUsIHR5cGVuYW1lIFRlc3RzLCB0eXBlbmFtZSBUeXBlcz4KIGNsYXNz
IFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UgewogIHB1YmxpYzoKLSAgc3RhdGljIGJvb2wgUmVn
aXN0ZXIoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiBjYXNlX25hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRlc3RfbmFtZXMpIHsKKyAgc3RhdGljIGJvb2wg
UmVnaXN0ZXIoY29uc3QgY2hhciogcHJlZml4LCBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHlwZWRUZXN0Q2FzZVBTdGF0ZSogc3RhdGUs
IGNvbnN0IGNoYXIqIGNhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogdGVzdF9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+JiB0eXBlX25hbWVzID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdl
bmVyYXRlTmFtZXM8RGVmYXVsdE5hbWVHZW5lcmF0b3IsIFR5cGVzPigpKSB7CisgICAgc3RkOjpz
dHJpbmcgdGVzdF9uYW1lID0gU3RyaXBUcmFpbGluZ1NwYWNlcygKKyAgICAgICAgR2V0UHJlZml4
VW50aWxDb21tYSh0ZXN0X25hbWVzKSk7CisgICAgaWYgKCFzdGF0ZS0+VGVzdEV4aXN0cyh0ZXN0
X25hbWUpKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgY29kZSBsb2Nh
dGlvbiBmb3IgdGVzdCAlcy4lcyBhdCAlcy4iLAorICAgICAgICAgICAgICBjYXNlX25hbWUsIHRl
c3RfbmFtZS5jX3N0cigpLAorICAgICAgICAgICAgICBGb3JtYXRGaWxlTG9jYXRpb24oY29kZV9s
b2NhdGlvbi5maWxlLmNfc3RyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b2RlX2xvY2F0aW9uLmxpbmUpLmNfc3RyKCkpOworICAgICAgZmZsdXNoKHN0ZGVycik7CisgICAg
ICBwb3NpeDo6QWJvcnQoKTsKKyAgICB9CisgICAgY29uc3QgQ29kZUxvY2F0aW9uJiB0ZXN0X2xv
Y2F0aW9uID0gc3RhdGUtPkdldENvZGVMb2NhdGlvbih0ZXN0X25hbWUpOworCiAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBUZXN0czo6SGVhZCBIZWFkOwogCiAgICAgLy8gRmlyc3QsIHJlZ2lzdGVyIHRo
ZSBmaXJzdCB0ZXN0IGluICdUZXN0JyBmb3IgZWFjaCB0eXBlIGluICdUeXBlcycuCiAgICAgVHlw
ZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIEhlYWQsIFR5cGVzPjo6UmVnaXN0ZXIoCi0gICAg
ICAgIHByZWZpeCwgY2FzZV9uYW1lLCB0ZXN0X25hbWVzLCAwKTsKKyAgICAgICAgcHJlZml4LCB0
ZXN0X2xvY2F0aW9uLCBjYXNlX25hbWUsIHRlc3RfbmFtZXMsIDAsIHR5cGVfbmFtZXMpOwogCiAg
ICAgLy8gTmV4dCwgcmVjdXJzZXMgKGF0IGNvbXBpbGUgdGltZSkgd2l0aCB0aGUgdGFpbCBvZiB0
aGUgdGVzdCBsaXN0LgotICAgIHJldHVybiBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlPEZpeHR1
cmUsIHR5cGVuYW1lIFRlc3RzOjpUYWlsLCBUeXBlcz4KLSAgICAgICAgOjpSZWdpc3RlcihwcmVm
aXgsIGNhc2VfbmFtZSwgU2tpcENvbW1hKHRlc3RfbmFtZXMpKTsKKyAgICByZXR1cm4gVHlwZVBh
cmFtZXRlcml6ZWRUZXN0Q2FzZTxGaXh0dXJlLCB0eXBlbmFtZSBUZXN0czo6VGFpbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlcz46OlJlZ2lzdGVyKHByZWZpeCwg
Y29kZV9sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlLCBjYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa2lwQ29tbWEodGVzdF9uYW1lcyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlX25h
bWVzKTsKICAgfQogfTsKIApAQCAtNzMyLDE1ICs3MzgsMTggQEAgY2xhc3MgVHlwZVBhcmFtZXRl
cml6ZWRUZXN0Q2FzZSB7CiB0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIEZpeHR1cmUsIHR5cGVu
YW1lIFR5cGVzPgogY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTxGaXh0dXJlLCBUZW1w
bGF0ZXMwLCBUeXBlcz4gewogIHB1YmxpYzoKLSAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3Qg
Y2hhciogLypwcmVmaXgqLywgY29uc3QgY2hhciogLypjYXNlX25hbWUqLywKLSAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogLyp0ZXN0X25hbWVzKi8pIHsKKyAgc3RhdGljIGJvb2wg
UmVnaXN0ZXIoY29uc3QgY2hhciogLypwcmVmaXgqLywgY29uc3QgQ29kZUxvY2F0aW9uJiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHlwZWRUZXN0Q2FzZVBTdGF0ZSogLypzdGF0ZSov
LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKmNhc2VfbmFtZSovLCBjb25z
dCBjaGFyKiAvKnRlc3RfbmFtZXMqLywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+JiA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4oKSAvKnR5cGVfbmFtZXMqLykgewogICAgIHJldHVybiB0cnVl
OwogICB9CiB9OwogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hB
U19UWVBFRF9URVNUX1AKIAotLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBh
cyBhIFN0cmluZy4KKy8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYW4g
c3RkOjpzdHJpbmcuCiAvLwogLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0
byBiZSBpbmNsdWRlZCBpcyBzcGVjaWZpZWQgYnkKIC8vIHRoZSBndGVzdF9zdGFja190cmFjZV9k
ZXB0aCBmbGFnLiAgVGhlIHNraXBfY291bnQgcGFyYW1ldGVyCkBAIC03NTAsOCArNzU5LDggQEAg
Y2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTxGaXh0dXJlLCBUZW1wbGF0ZXMwLCBUeXBl
cz4gewogLy8gRm9yIGV4YW1wbGUsIGlmIEZvbygpIGNhbGxzIEJhcigpLCB3aGljaCBpbiB0dXJu
IGNhbGxzCiAvLyBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKC4uLiwgMSksIEZvbygp
IHdpbGwgYmUgaW5jbHVkZWQgaW4KIC8vIHRoZSB0cmFjZSBidXQgQmFyKCkgYW5kIEdldEN1cnJl
bnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoKSB3b24ndC4KLUdURVNUX0FQSV8gU3RyaW5nIEdldEN1
cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoVW5pdFRlc3QqIHVuaXRfdGVzdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNraXBfY291bnQp
OworR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9w
KAorICAgIFVuaXRUZXN0KiB1bml0X3Rlc3QsIGludCBza2lwX2NvdW50KTsKIAogLy8gSGVscGVy
cyBmb3Igc3VwcHJlc3Npbmcgd2FybmluZ3Mgb24gdW5yZWFjaGFibGUgY29kZSBvciBjb25zdGFu
dAogLy8gY29uZGl0aW9uLgpAQCAtNzYyLDYgKzc3MSwxNSBAQCBHVEVTVF9BUElfIGJvb2wgQWx3
YXlzVHJ1ZSgpOwogLy8gQWx3YXlzIHJldHVybnMgZmFsc2UuCiBpbmxpbmUgYm9vbCBBbHdheXNG
YWxzZSgpIHsgcmV0dXJuICFBbHdheXNUcnVlKCk7IH0KIAorLy8gSGVscGVyIGZvciBzdXBwcmVz
c2luZyBmYWxzZSB3YXJuaW5nIGZyb20gQ2xhbmcgb24gYSBjb25zdCBjaGFyKgorLy8gdmFyaWFi
bGUgZGVjbGFyZWQgaW4gYSBjb25kaXRpb25hbCBleHByZXNzaW9uIGFsd2F5cyBiZWluZyBOVUxM
IGluCisvLyB0aGUgZWxzZSBicmFuY2guCitzdHJ1Y3QgR1RFU1RfQVBJXyBDb25zdENoYXJQdHIg
eworICBDb25zdENoYXJQdHIoY29uc3QgY2hhciogc3RyKSA6IHZhbHVlKHN0cikge30KKyAgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgY29uc3QgY2hhciogdmFsdWU7
Cit9OworCiAvLyBBIHNpbXBsZSBMaW5lYXIgQ29uZ3J1ZW50aWFsIEdlbmVyYXRvciBmb3IgZ2Vu
ZXJhdGluZyByYW5kb20KIC8vIG51bWJlcnMgd2l0aCBhIHVuaWZvcm0gZGlzdHJpYnV0aW9uLiAg
VW5saWtlIHJhbmQoKSBhbmQgc3JhbmQoKSwgaXQKIC8vIGRvZXNuJ3QgdXNlIGdsb2JhbCBzdGF0
ZSAoYW5kIHRoZXJlZm9yZSBjYW4ndCBpbnRlcmZlcmUgd2l0aCB1c2VyCkBAIC03ODQsMTMgKzgw
Miw0MDMgQEAgY2xhc3MgR1RFU1RfQVBJXyBSYW5kb20gewogICBHVEVTVF9ESVNBTExPV19DT1BZ
X0FORF9BU1NJR05fKFJhbmRvbSk7CiB9OwogCisvLyBEZWZpbmluZyBhIHZhcmlhYmxlIG9mIHR5
cGUgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8VDEsIFQyPiB3aWxsIGNhdXNlIGEKKy8vIGNvbXBp
bGVyIGVycm9yIGlmZiBUMSBhbmQgVDIgYXJlIGRpZmZlcmVudCB0eXBlcy4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitzdHJ1Y3QgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw7
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFs
PFQsIFQ+IHsKK307CisKKy8vIFJlbW92ZXMgdGhlIHJlZmVyZW5jZSBmcm9tIGEgdHlwZSBpZiBp
dCBpcyBhIHJlZmVyZW5jZSB0eXBlLAorLy8gb3RoZXJ3aXNlIGxlYXZlcyBpdCB1bmNoYW5nZWQu
ICBUaGlzIGlzIHRoZSBzYW1lIGFzCisvLyB0cjE6OnJlbW92ZV9yZWZlcmVuY2UsIHdoaWNoIGlz
IG5vdCB3aWRlbHkgYXZhaWxhYmxlIHlldC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0
IFJlbW92ZVJlZmVyZW5jZSB7IHR5cGVkZWYgVCB0eXBlOyB9OyAgLy8gTk9MSU5UCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBSZW1vdmVSZWZlcmVuY2U8VCY+IHsgdHlwZWRlZiBUIHR5
cGU7IH07ICAvLyBOT0xJTlQKKworLy8gQSBoYW5keSB3cmFwcGVyIGFyb3VuZCBSZW1vdmVSZWZl
cmVuY2UgdGhhdCB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudAorLy8gVCBkZXBlbmRzIG9uIHRlbXBs
YXRlIHBhcmFtZXRlcnMuCisjZGVmaW5lIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfKFQpIFwKKyAg
ICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpSZW1vdmVSZWZlcmVuY2U8VD46OnR5cGUK
KworLy8gUmVtb3ZlcyBjb25zdCBmcm9tIGEgdHlwZSBpZiBpdCBpcyBhIGNvbnN0IHR5cGUsIG90
aGVyd2lzZSBsZWF2ZXMKKy8vIGl0IHVuY2hhbmdlZC4gIFRoaXMgaXMgdGhlIHNhbWUgYXMgdHIx
OjpyZW1vdmVfY29uc3QsIHdoaWNoIGlzIG5vdAorLy8gd2lkZWx5IGF2YWlsYWJsZSB5ZXQuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBSZW1vdmVDb25zdCB7IHR5cGVkZWYgVCB0eXBl
OyB9OyAgLy8gTk9MSU5UCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBSZW1vdmVDb25z
dDxjb25zdCBUPiB7IHR5cGVkZWYgVCB0eXBlOyB9OyAgLy8gTk9MSU5UCisKKy8vIE1TVkMgOC4w
LCBTdW4gQysrLCBhbmQgSUJNIFhMIEMrKyBoYXZlIGEgYnVnIHdoaWNoIGNhdXNlcyB0aGUgYWJv
dmUKKy8vIGRlZmluaXRpb24gdG8gZmFpbCB0byByZW1vdmUgdGhlIGNvbnN0IGluICdjb25zdCBp
bnRbM10nIGFuZCAnY29uc3QKKy8vIGNoYXJbM11bNF0nLiAgVGhlIGZvbGxvd2luZyBzcGVjaWFs
aXphdGlvbiB3b3JrcyBhcm91bmQgdGhlIGJ1Zy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXpl
X3QgTj4KK3N0cnVjdCBSZW1vdmVDb25zdDxjb25zdCBUW05dPiB7CisgIHR5cGVkZWYgdHlwZW5h
bWUgUmVtb3ZlQ29uc3Q8VD46OnR5cGUgdHlwZVtOXTsKK307CisKKyNpZiBkZWZpbmVkKF9NU0Nf
VkVSKSAmJiBfTVNDX1ZFUiA8IDE0MDAKKy8vIFRoaXMgaXMgdGhlIG9ubHkgc3BlY2lhbGl6YXRp
b24gdGhhdCBhbGxvd3MgVkMrKyA3LjEgdG8gcmVtb3ZlIGNvbnN0IGluCisvLyAnY29uc3QgaW50
WzNdIGFuZCAnY29uc3QgaW50WzNdWzRdJy4gIEhvd2V2ZXIsIGl0IGNhdXNlcyB0cm91YmxlIHdp
dGggR0NDCisvLyBhbmQgdGh1cyBuZWVkcyB0byBiZSBjb25kaXRpb25hbGx5IGNvbXBpbGVkLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgorc3RydWN0IFJlbW92ZUNvbnN0PFRbTl0+
IHsKKyAgdHlwZWRlZiB0eXBlbmFtZSBSZW1vdmVDb25zdDxUPjo6dHlwZSB0eXBlW05dOworfTsK
KyNlbmRpZgorCisvLyBBIGhhbmR5IHdyYXBwZXIgYXJvdW5kIFJlbW92ZUNvbnN0IHRoYXQgd29y
a3Mgd2hlbiB0aGUgYXJndW1lbnQKKy8vIFQgZGVwZW5kcyBvbiB0ZW1wbGF0ZSBwYXJhbWV0ZXJz
LgorI2RlZmluZSBHVEVTVF9SRU1PVkVfQ09OU1RfKFQpIFwKKyAgICB0eXBlbmFtZSA6OnRlc3Rp
bmc6OmludGVybmFsOjpSZW1vdmVDb25zdDxUPjo6dHlwZQorCisvLyBUdXJucyBjb25zdCBVJiwg
VSYsIGNvbnN0IFUsIGFuZCBVIGFsbCBpbnRvIFUuCisjZGVmaW5lIEdURVNUX1JFTU9WRV9SRUZF
UkVOQ0VfQU5EX0NPTlNUXyhUKSBcCisgICAgR1RFU1RfUkVNT1ZFX0NPTlNUXyhHVEVTVF9SRU1P
VkVfUkVGRVJFTkNFXyhUKSkKKworLy8gSW1wbGljaXRseUNvbnZlcnRpYmxlPEZyb20sIFRvPjo6
dmFsdWUgaXMgYSBjb21waWxlLXRpbWUgYm9vbAorLy8gY29uc3RhbnQgdGhhdCdzIHRydWUgaWZm
IHR5cGUgRnJvbSBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8KKy8vIHR5cGUgVG8uCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+CitjbGFzcyBJbXBsaWNpdGx5Q29u
dmVydGlibGUgeworIHByaXZhdGU6CisgIC8vIFdlIG5lZWQgdGhlIGZvbGxvd2luZyBoZWxwZXIg
ZnVuY3Rpb25zIG9ubHkgZm9yIHRoZWlyIHR5cGVzLgorICAvLyBUaGV5IGhhdmUgbm8gaW1wbGVt
ZW50YXRpb25zLgorCisgIC8vIE1ha2VGcm9tKCkgaXMgYW4gZXhwcmVzc2lvbiB3aG9zZSB0eXBl
IGlzIEZyb20uICBXZSBjYW5ub3Qgc2ltcGx5CisgIC8vIHVzZSBGcm9tKCksIGFzIHRoZSB0eXBl
IEZyb20gbWF5IG5vdCBoYXZlIGEgcHVibGljIGRlZmF1bHQKKyAgLy8gY29uc3RydWN0b3IuCisg
IHN0YXRpYyB0eXBlbmFtZSBBZGRSZWZlcmVuY2U8RnJvbT46OnR5cGUgTWFrZUZyb20oKTsKKwor
ICAvLyBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSBvdmVybG9hZGVkLiAgR2l2ZW4gYW4gZXhwcmVz
c2lvbgorICAvLyBIZWxwZXIoeCksIHRoZSBjb21waWxlciB3aWxsIHBpY2sgdGhlIGZpcnN0IHZl
cnNpb24gaWYgeCBjYW4gYmUKKyAgLy8gaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gdHlwZSBUbzsg
b3RoZXJ3aXNlIGl0IHdpbGwgcGljayB0aGUKKyAgLy8gc2Vjb25kIHZlcnNpb24uCisgIC8vCisg
IC8vIFRoZSBmaXJzdCB2ZXJzaW9uIHJldHVybnMgYSB2YWx1ZSBvZiBzaXplIDEsIGFuZCB0aGUg
c2Vjb25kCisgIC8vIHZlcnNpb24gcmV0dXJucyBhIHZhbHVlIG9mIHNpemUgMi4gIFRoZXJlZm9y
ZSwgYnkgY2hlY2tpbmcgdGhlCisgIC8vIHNpemUgb2YgSGVscGVyKHgpLCB3aGljaCBjYW4gYmUg
ZG9uZSBhdCBjb21waWxlIHRpbWUsIHdlIGNhbiB0ZWxsCisgIC8vIHdoaWNoIHZlcnNpb24gb2Yg
SGVscGVyKCkgaXMgdXNlZCwgYW5kIGhlbmNlIHdoZXRoZXIgeCBjYW4gYmUKKyAgLy8gaW1wbGlj
aXRseSBjb252ZXJ0ZWQgdG8gdHlwZSBUby4KKyAgc3RhdGljIGNoYXIgSGVscGVyKFRvKTsKKyAg
c3RhdGljIGNoYXIgKCZIZWxwZXIoLi4uKSlbMl07ICAvLyBOT0xJTlQKKworICAvLyBXZSBoYXZl
IHRvIHB1dCB0aGUgJ3B1YmxpYycgc2VjdGlvbiBhZnRlciB0aGUgJ3ByaXZhdGUnIHNlY3Rpb24s
CisgIC8vIG9yIE1TVkMgcmVmdXNlcyB0byBjb21waWxlIHRoZSBjb2RlLgorIHB1YmxpYzoKKyNp
ZiBkZWZpbmVkKF9fQk9STEFORENfXykKKyAgLy8gQysrQnVpbGRlciBjYW5ub3QgdXNlIG1lbWJl
ciBvdmVybG9hZCByZXNvbHV0aW9uIGR1cmluZyB0ZW1wbGF0ZQorICAvLyBpbnN0YW50aWF0aW9u
LiAgVGhlIHNpbXBsZXN0IHdvcmthcm91bmQgaXMgdG8gdXNlIGl0cyBDKysweCB0eXBlIHRyYWl0
cworICAvLyBmdW5jdGlvbnMgKEMrK0J1aWxkZXIgMjAwOSBhbmQgYWJvdmUgb25seSkuCisgIHN0
YXRpYyBjb25zdCBib29sIHZhbHVlID0gX19pc19jb252ZXJ0aWJsZShGcm9tLCBUbyk7CisjZWxz
ZQorICAvLyBNU1ZDIHdhcm5zIGFib3V0IGltcGxpY2l0bHkgY29udmVydGluZyBmcm9tIGRvdWJs
ZSB0byBpbnQgZm9yCisgIC8vIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YSwgc28gd2UgbmVlZCB0byB0
ZW1wb3JhcmlseSBkaXNhYmxlIHRoZQorICAvLyB3YXJuaW5nLgorICBHVEVTVF9ESVNBQkxFX01T
Q19XQVJOSU5HU19QVVNIXyg0MjQ0KQorICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9CisgICAg
ICBzaXplb2YoSGVscGVyKEltcGxpY2l0bHlDb252ZXJ0aWJsZTo6TWFrZUZyb20oKSkpID09IDE7
CisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQorI2VuZGlmICAvLyBfX0JPUkxB
TkRDX18KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Citjb25zdCBi
b29sIEltcGxpY2l0bHlDb252ZXJ0aWJsZTxGcm9tLCBUbz46OnZhbHVlOworCisvLyBJc0FQcm90
b2NvbE1lc3NhZ2U8VD46OnZhbHVlIGlzIGEgY29tcGlsZS10aW1lIGJvb2wgY29uc3RhbnQgdGhh
dCdzCisvLyB0cnVlIGlmZiBUIGlzIHR5cGUgUHJvdG9jb2xNZXNzYWdlLCBwcm90bzI6Ok1lc3Nh
Z2UsIG9yIGEgc3ViY2xhc3MKKy8vIG9mIHRob3NlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citz
dHJ1Y3QgSXNBUHJvdG9jb2xNZXNzYWdlCisgICAgOiBwdWJsaWMgYm9vbF9jb25zdGFudDwKKyAg
SW1wbGljaXRseUNvbnZlcnRpYmxlPGNvbnN0IFQqLCBjb25zdCA6OlByb3RvY29sTWVzc2FnZSo+
Ojp2YWx1ZSB8fAorICBJbXBsaWNpdGx5Q29udmVydGlibGU8Y29uc3QgVCosIGNvbnN0IDo6cHJv
dG8yOjpNZXNzYWdlKj46OnZhbHVlPiB7Cit9OworCisvLyBXaGVuIHRoZSBjb21waWxlciBzZWVz
IGV4cHJlc3Npb24gSXNDb250YWluZXJUZXN0PEM+KDApLCBpZiBDIGlzIGFuCisvLyBTVEwtc3R5
bGUgY29udGFpbmVyIGNsYXNzLCB0aGUgZmlyc3Qgb3ZlcmxvYWQgb2YgSXNDb250YWluZXJUZXN0
CisvLyB3aWxsIGJlIHZpYWJsZSAoc2luY2UgYm90aCBDOjppdGVyYXRvciogYW5kIEM6OmNvbnN0
X2l0ZXJhdG9yKiBhcmUKKy8vIHZhbGlkIHR5cGVzIGFuZCBOVUxMIGNhbiBiZSBpbXBsaWNpdGx5
IGNvbnZlcnRlZCB0byB0aGVtKS4gIEl0IHdpbGwKKy8vIGJlIHBpY2tlZCBvdmVyIHRoZSBzZWNv
bmQgb3ZlcmxvYWQgYXMgJ2ludCcgaXMgYSBwZXJmZWN0IG1hdGNoIGZvcgorLy8gdGhlIHR5cGUg
b2YgYXJndW1lbnQgMC4gIElmIEM6Oml0ZXJhdG9yIG9yIEM6OmNvbnN0X2l0ZXJhdG9yIGlzIG5v
dAorLy8gYSB2YWxpZCB0eXBlLCB0aGUgZmlyc3Qgb3ZlcmxvYWQgaXMgbm90IHZpYWJsZSwgYW5k
IHRoZSBzZWNvbmQKKy8vIG92ZXJsb2FkIHdpbGwgYmUgcGlja2VkLiAgVGhlcmVmb3JlLCB3ZSBj
YW4gZGV0ZXJtaW5lIHdoZXRoZXIgQyBpcworLy8gYSBjb250YWluZXIgY2xhc3MgYnkgY2hlY2tp
bmcgdGhlIHR5cGUgb2YgSXNDb250YWluZXJUZXN0PEM+KDApLgorLy8gVGhlIHZhbHVlIG9mIHRo
ZSBleHByZXNzaW9uIGlzIGluc2lnbmlmaWNhbnQuCisvLworLy8gSW4gQysrMTEgbW9kZSB3ZSBj
aGVjayB0aGUgZXhpc3RlbmNlIG9mIGEgY29uc3RfaXRlcmF0b3IgYW5kIHRoYXQgYW4KKy8vIGl0
ZXJhdG9yIGlzIHByb3Blcmx5IGltcGxlbWVudGVkIGZvciB0aGUgY29udGFpbmVyLgorLy8KKy8v
IEZvciBwcmUtQysrMTEgdGhhdCB3ZSBsb29rIGZvciBib3RoIEM6Oml0ZXJhdG9yIGFuZCBDOjpj
b25zdF9pdGVyYXRvci4KKy8vIFRoZSByZWFzb24gaXMgdGhhdCBDKysgaW5qZWN0cyB0aGUgbmFt
ZSBvZiBhIGNsYXNzIGFzIGEgbWVtYmVyIG9mIHRoZQorLy8gY2xhc3MgaXRzZWxmIChlLmcuIHlv
dSBjYW4gcmVmZXIgdG8gY2xhc3MgaXRlcmF0b3IgYXMgZWl0aGVyCisvLyAnaXRlcmF0b3InIG9y
ICdpdGVyYXRvcjo6aXRlcmF0b3InKS4gIElmIHdlIGxvb2sgZm9yIEM6Oml0ZXJhdG9yCisvLyBv
bmx5LCBmb3IgZXhhbXBsZSwgd2Ugd291bGQgbWlzdGFrZW5seSB0aGluayB0aGF0IGEgY2xhc3Mg
bmFtZWQKKy8vIGl0ZXJhdG9yIGlzIGFuIFNUTCBjb250YWluZXIuCisvLworLy8gQWxzbyBub3Rl
IHRoYXQgdGhlIHNpbXBsZXIgYXBwcm9hY2ggb2Ygb3ZlcmxvYWRpbmcKKy8vIElzQ29udGFpbmVy
VGVzdCh0eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvciopIGFuZAorLy8gSXNDb250YWluZXJUZXN0
KC4uLikgZG9lc24ndCB3b3JrIHdpdGggVmlzdWFsIEFnZSBDKysgYW5kIFN1biBDKysuCit0eXBl
ZGVmIGludCBJc0NvbnRhaW5lcjsKKyNpZiBHVEVTVF9MQU5HX0NYWDExCit0ZW1wbGF0ZSA8Y2xh
c3MgQywKKyAgICAgICAgICBjbGFzcyBJdGVyYXRvciA9IGRlY2x0eXBlKDo6c3RkOjpkZWNsdmFs
PGNvbnN0IEMmPigpLmJlZ2luKCkpLAorICAgICAgICAgIGNsYXNzID0gZGVjbHR5cGUoOjpzdGQ6
OmRlY2x2YWw8Y29uc3QgQyY+KCkuZW5kKCkpLAorICAgICAgICAgIGNsYXNzID0gZGVjbHR5cGUo
Kys6OnN0ZDo6ZGVjbHZhbDxJdGVyYXRvciY+KCkpLAorICAgICAgICAgIGNsYXNzID0gZGVjbHR5
cGUoKjo6c3RkOjpkZWNsdmFsPEl0ZXJhdG9yPigpKSwKKyAgICAgICAgICBjbGFzcyA9IHR5cGVu
YW1lIEM6OmNvbnN0X2l0ZXJhdG9yPgorSXNDb250YWluZXIgSXNDb250YWluZXJUZXN0KGludCAv
KiBkdW1teSAqLykgeworICByZXR1cm4gMDsKK30KKyNlbHNlCit0ZW1wbGF0ZSA8Y2xhc3MgQz4K
K0lzQ29udGFpbmVyIElzQ29udGFpbmVyVGVzdChpbnQgLyogZHVtbXkgKi8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQzo6aXRlcmF0b3IqIC8qIGl0ICovID0gTlVMTCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvciog
LyogY29uc3RfaXQgKi8gPSBOVUxMKSB7CisgIHJldHVybiAwOworfQorI2VuZGlmICAvLyBHVEVT
VF9MQU5HX0NYWDExCisKK3R5cGVkZWYgY2hhciBJc05vdENvbnRhaW5lcjsKK3RlbXBsYXRlIDxj
bGFzcyBDPgorSXNOb3RDb250YWluZXIgSXNDb250YWluZXJUZXN0KGxvbmcgLyogZHVtbXkgKi8p
IHsgcmV0dXJuICdcMCc7IH0KKworLy8gVHJhaXQgdG8gZGV0ZWN0IHdoZXRoZXIgYSB0eXBlIFQg
aXMgYSBoYXNoIHRhYmxlLgorLy8gVGhlIGhldXJpc3RpYyB1c2VkIGlzIHRoYXQgdGhlIHR5cGUg
Y29udGFpbnMgYW4gaW5uZXIgdHlwZSBgaGFzaGVyYCBhbmQgZG9lcworLy8gbm90IGNvbnRhaW4g
YW4gaW5uZXIgdHlwZSBgcmV2ZXJzZV9pdGVyYXRvcmAuCisvLyBJZiB0aGUgY29udGFpbmVyIGlz
IGl0ZXJhYmxlIGluIHJldmVyc2UsIHRoZW4gb3JkZXIgbWlnaHQgYWN0dWFsbHkgbWF0dGVyLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNIYXNoVGFibGUgeworIHByaXZhdGU6Cisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICBzdGF0aWMgY2hhciB0ZXN0KHR5cGVuYW1lIFU6Omhh
c2hlciosIHR5cGVuYW1lIFU6OnJldmVyc2VfaXRlcmF0b3IqKTsKKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIFU+CisgIHN0YXRpYyBpbnQgdGVzdCh0eXBlbmFtZSBVOjpoYXNoZXIqLCAuLi4pOworICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgc3RhdGljIGNoYXIgdGVzdCguLi4pOworCisgcHVibGlj
OgorICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZih0ZXN0PFQ+KDAsIDApKSA9PSBz
aXplb2YoaW50KTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3QgYm9vbCBJc0hh
c2hUYWJsZTxUPjo6dmFsdWU7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgVm9pZFQg
eworICAgIHR5cGVkZWYgdm9pZCB2YWx1ZV90eXBlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHR5cGVuYW1lID0gdm9pZD4KK3N0cnVjdCBIYXNWYWx1ZVR5cGUgOiBmYWxzZV90eXBlIHt9
OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSGFzVmFsdWVUeXBlPFQsIFZvaWRUPHR5
cGVuYW1lIFQ6OnZhbHVlX3R5cGU+ID4gOiB0cnVlX3R5cGUgeworfTsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIEMsCisgICAgICAgICAgYm9vbCA9IHNpemVvZihJc0NvbnRhaW5lclRlc3Q8Qz4oMCkp
ID09IHNpemVvZihJc0NvbnRhaW5lciksCisgICAgICAgICAgYm9vbCA9IEhhc1ZhbHVlVHlwZTxD
Pjo6dmFsdWU+CitzdHJ1Y3QgSXNSZWN1cnNpdmVDb250YWluZXJJbXBsOworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgQywgYm9vbCBIVj4KK3N0cnVjdCBJc1JlY3Vyc2l2ZUNvbnRhaW5lckltcGw8Qywg
ZmFsc2UsIEhWPiA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OworCisvLyBTaW5jZSB0aGUgSXNSZWN1
cnNpdmVDb250YWluZXJJbXBsIGRlcGVuZHMgb24gdGhlIElzQ29udGFpbmVyVGVzdCB3ZSBuZWVk
IHRvCisvLyBvYmV5IHRoZSBzYW1lIGluY29uc2lzdGVuY2llcyBhcyB0aGUgSXNDb250YWluZXJU
ZXN0LCBuYW1lbHkgY2hlY2sgaWYKKy8vIHNvbWV0aGluZyBpcyBhIGNvbnRhaW5lciBpcyByZWx5
aW5nIG9uIG9ubHkgY29uc3RfaXRlcmF0b3IgaW4gQysrMTEgYW5kCisvLyBpcyByZWx5aW5nIG9u
IGJvdGggY29uc3RfaXRlcmF0b3IgYW5kIGl0ZXJhdG9yIG90aGVyd2lzZQordGVtcGxhdGUgPHR5
cGVuYW1lIEM+CitzdHJ1Y3QgSXNSZWN1cnNpdmVDb250YWluZXJJbXBsPEMsIHRydWUsIGZhbHNl
PiA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KK3N0cnVj
dCBJc1JlY3Vyc2l2ZUNvbnRhaW5lckltcGw8QywgdHJ1ZSwgdHJ1ZT4geworICAjaWYgR1RFU1Rf
TEFOR19DWFgxMQorICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yVHJhaXRzPHR5cGVuYW1lIEM6
OmNvbnN0X2l0ZXJhdG9yPjo6dmFsdWVfdHlwZQorICAgICAgdmFsdWVfdHlwZTsKKyNlbHNlCisg
IHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3JUcmFpdHM8dHlwZW5hbWUgQzo6aXRlcmF0b3I+Ojp2
YWx1ZV90eXBlIHZhbHVlX3R5cGU7CisjZW5kaWYKKyAgdHlwZWRlZiBpc19zYW1lPHZhbHVlX3R5
cGUsIEM+IHR5cGU7Cit9OworCisvLyBJc1JlY3Vyc2l2ZUNvbnRhaW5lcjxUeXBlPiBpcyBhIHVu
YXJ5IGNvbXBpbGUtdGltZSBwcmVkaWNhdGUgdGhhdAorLy8gZXZhbHVhdGVzIHdoZXRoZXIgQyBp
cyBhIHJlY3Vyc2l2ZSBjb250YWluZXIgdHlwZS4gQSByZWN1cnNpdmUgY29udGFpbmVyCisvLyB0
eXBlIGlzIGEgY29udGFpbmVyIHR5cGUgd2hvc2UgdmFsdWVfdHlwZSBpcyBlcXVhbCB0byB0aGUg
Y29udGFpbmVyIHR5cGUKKy8vIGl0c2VsZi4gQW4gZXhhbXBsZSBmb3IgYSByZWN1cnNpdmUgY29u
dGFpbmVyIHR5cGUgaXMKKy8vIGJvb3N0OjpmaWxlc3lzdGVtOjpwYXRoLCB3aG9zZSBpdGVyYXRv
ciBoYXMgYSB2YWx1ZV90eXBlIHRoYXQgaXMgZXF1YWwgdG8KKy8vIGJvb3N0OjpmaWxlc3lzdGVt
OjpwYXRoLgordGVtcGxhdGUgPHR5cGVuYW1lIEM+CitzdHJ1Y3QgSXNSZWN1cnNpdmVDb250YWlu
ZXIgOiBwdWJsaWMgSXNSZWN1cnNpdmVDb250YWluZXJJbXBsPEM+Ojp0eXBlIHt9OworCisvLyBF
bmFibGVJZjxjb25kaXRpb24+Ojp0eXBlIGlzIHZvaWQgd2hlbiAnQ29uZCcgaXMgdHJ1ZSwgYW5k
CisvLyB1bmRlZmluZWQgd2hlbiAnQ29uZCcgaXMgZmFsc2UuICBUbyB1c2UgU0ZJTkFFIHRvIG1h
a2UgYSBmdW5jdGlvbgorLy8gb3ZlcmxvYWQgb25seSBhcHBseSB3aGVuIGEgcGFydGljdWxhciBl
eHByZXNzaW9uIGlzIHRydWUsIGFkZAorLy8gInR5cGVuYW1lIEVuYWJsZUlmPGV4cHJlc3Npb24+
Ojp0eXBlKiA9IDAiIGFzIHRoZSBsYXN0IHBhcmFtZXRlci4KK3RlbXBsYXRlPGJvb2w+IHN0cnVj
dCBFbmFibGVJZjsKK3RlbXBsYXRlPD4gc3RydWN0IEVuYWJsZUlmPHRydWU+IHsgdHlwZWRlZiB2
b2lkIHR5cGU7IH07ICAvLyBOT0xJTlQKKworLy8gVXRpbGl0aWVzIGZvciBuYXRpdmUgYXJyYXlz
LgorCisvLyBBcnJheUVxKCkgY29tcGFyZXMgdHdvIGstZGltZW5zaW9uYWwgbmF0aXZlIGFycmF5
cyB1c2luZyB0aGUKKy8vIGVsZW1lbnRzJyBvcGVyYXRvcj09LCB3aGVyZSBrIGNhbiBiZSBhbnkg
aW50ZWdlciA+PSAwLiAgV2hlbiBrIGlzCisvLyAwLCBBcnJheUVxKCkgZGVnZW5lcmF0ZXMgaW50
byBjb21wYXJpbmcgYSBzaW5nbGUgcGFpciBvZiB2YWx1ZXMuCisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPgorYm9vbCBBcnJheUVxKGNvbnN0IFQqIGxocywgc2l6ZV90IHNpemUs
IGNvbnN0IFUqIHJocyk7CisKKy8vIFRoaXMgZ2VuZXJpYyB2ZXJzaW9uIGlzIHVzZWQgd2hlbiBr
IGlzIDAuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2lubGluZSBib29sIEFy
cmF5RXEoY29uc3QgVCYgbGhzLCBjb25zdCBVJiByaHMpIHsgcmV0dXJuIGxocyA9PSByaHM7IH0K
KworLy8gVGhpcyBvdmVybG9hZCBpcyB1c2VkIHdoZW4gayA+PSAxLgordGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBOPgoraW5saW5lIGJvb2wgQXJyYXlFcShjb25zdCBU
KCZsaHMpW05dLCBjb25zdCBVKCZyaHMpW05dKSB7CisgIHJldHVybiBpbnRlcm5hbDo6QXJyYXlF
cShsaHMsIE4sIHJocyk7Cit9CisKKy8vIFRoaXMgaGVscGVyIHJlZHVjZXMgY29kZSBibG9hdC4g
IElmIHdlIGluc3RlYWQgcHV0IGl0cyBsb2dpYyBpbnNpZGUKKy8vIHRoZSBwcmV2aW91cyBBcnJh
eUVxKCkgZnVuY3Rpb24sIGFycmF5cyB3aXRoIGRpZmZlcmVudCBzaXplcyB3b3VsZAorLy8gbGVh
ZCB0byBkaWZmZXJlbnQgY29waWVzIG9mIHRoZSB0ZW1wbGF0ZSBjb2RlLgordGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+Citib29sIEFycmF5RXEoY29uc3QgVCogbGhzLCBzaXplX3Qg
c2l6ZSwgY29uc3QgVSogcmhzKSB7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHNpemU7IGkr
KykgeworICAgIGlmICghaW50ZXJuYWw6OkFycmF5RXEobGhzW2ldLCByaHNbaV0pKQorICAgICAg
cmV0dXJuIGZhbHNlOworICB9CisgIHJldHVybiB0cnVlOworfQorCisvLyBGaW5kcyB0aGUgZmly
c3QgZWxlbWVudCBpbiB0aGUgaXRlcmF0b3IgcmFuZ2UgW2JlZ2luLCBlbmQpIHRoYXQKKy8vIGVx
dWFscyBlbGVtLiAgRWxlbWVudCBtYXkgYmUgYSBuYXRpdmUgYXJyYXkgdHlwZSBpdHNlbGYuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlciwgdHlwZW5hbWUgRWxlbWVudD4KK0l0ZXIgQXJyYXlBd2Fy
ZUZpbmQoSXRlciBiZWdpbiwgSXRlciBlbmQsIGNvbnN0IEVsZW1lbnQmIGVsZW0pIHsKKyAgZm9y
IChJdGVyIGl0ID0gYmVnaW47IGl0ICE9IGVuZDsgKytpdCkgeworICAgIGlmIChpbnRlcm5hbDo6
QXJyYXlFcSgqaXQsIGVsZW0pKQorICAgICAgcmV0dXJuIGl0OworICB9CisgIHJldHVybiBlbmQ7
Cit9CisKKy8vIENvcHlBcnJheSgpIGNvcGllcyBhIGstZGltZW5zaW9uYWwgbmF0aXZlIGFycmF5
IHVzaW5nIHRoZSBlbGVtZW50cycKKy8vIG9wZXJhdG9yPSwgd2hlcmUgayBjYW4gYmUgYW55IGlu
dGVnZXIgPj0gMC4gIFdoZW4gayBpcyAwLAorLy8gQ29weUFycmF5KCkgZGVnZW5lcmF0ZXMgaW50
byBjb3B5aW5nIGEgc2luZ2xlIHZhbHVlLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KK3ZvaWQgQ29weUFycmF5KGNvbnN0IFQqIGZyb20sIHNpemVfdCBzaXplLCBVKiB0byk7
CisKKy8vIFRoaXMgZ2VuZXJpYyB2ZXJzaW9uIGlzIHVzZWQgd2hlbiBrIGlzIDAuCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2lubGluZSB2b2lkIENvcHlBcnJheShjb25zdCBU
JiBmcm9tLCBVKiB0bykgeyAqdG8gPSBmcm9tOyB9CisKKy8vIFRoaXMgb3ZlcmxvYWQgaXMgdXNl
ZCB3aGVuIGsgPj0gMS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3Qg
Tj4KK2lubGluZSB2b2lkIENvcHlBcnJheShjb25zdCBUKCZmcm9tKVtOXSwgVSgqdG8pW05dKSB7
CisgIGludGVybmFsOjpDb3B5QXJyYXkoZnJvbSwgTiwgKnRvKTsKK30KKworLy8gVGhpcyBoZWxw
ZXIgcmVkdWNlcyBjb2RlIGJsb2F0LiAgSWYgd2UgaW5zdGVhZCBwdXQgaXRzIGxvZ2ljIGluc2lk
ZQorLy8gdGhlIHByZXZpb3VzIENvcHlBcnJheSgpIGZ1bmN0aW9uLCBhcnJheXMgd2l0aCBkaWZm
ZXJlbnQgc2l6ZXMKKy8vIHdvdWxkIGxlYWQgdG8gZGlmZmVyZW50IGNvcGllcyBvZiB0aGUgdGVt
cGxhdGUgY29kZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgordm9pZCBDb3B5
QXJyYXkoY29uc3QgVCogZnJvbSwgc2l6ZV90IHNpemUsIFUqIHRvKSB7CisgIGZvciAoc2l6ZV90
IGkgPSAwOyBpICE9IHNpemU7IGkrKykgeworICAgIGludGVybmFsOjpDb3B5QXJyYXkoZnJvbVtp
XSwgdG8gKyBpKTsKKyAgfQorfQorCisvLyBUaGUgcmVsYXRpb24gYmV0d2VlbiBhbiBOYXRpdmVB
cnJheSBvYmplY3QgKHNlZSBiZWxvdykgYW5kIHRoZQorLy8gbmF0aXZlIGFycmF5IGl0IHJlcHJl
c2VudHMuCisvLyBXZSB1c2UgMiBkaWZmZXJlbnQgc3RydWN0cyB0byBhbGxvdyBub24tY29weWFi
bGUgdHlwZXMgdG8gYmUgdXNlZCwgYXMgbG9uZworLy8gYXMgUmVsYXRpb25Ub1NvdXJjZVJlZmVy
ZW5jZSgpIGlzIHBhc3NlZC4KK3N0cnVjdCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlIHt9Owor
c3RydWN0IFJlbGF0aW9uVG9Tb3VyY2VDb3B5IHt9OworCisvLyBBZGFwdHMgYSBuYXRpdmUgYXJy
YXkgdG8gYSByZWFkLW9ubHkgU1RMLXN0eWxlIGNvbnRhaW5lci4gIEluc3RlYWQKKy8vIG9mIHRo
ZSBjb21wbGV0ZSBTVEwgY29udGFpbmVyIGNvbmNlcHQsIHRoaXMgYWRhcHRvciBvbmx5IGltcGxl
bWVudHMKKy8vIG1lbWJlcnMgdXNlZnVsIGZvciBHb29nbGUgTW9jaydzIGNvbnRhaW5lciBtYXRj
aGVycy4gIE5ldyBtZW1iZXJzCisvLyBzaG91bGQgYmUgYWRkZWQgYXMgbmVlZGVkLiAgVG8gc2lt
cGxpZnkgdGhlIGltcGxlbWVudGF0aW9uLCB3ZSBvbmx5CisvLyBzdXBwb3J0IEVsZW1lbnQgYmVp
bmcgYSByYXcgdHlwZSAoaS5lLiBoYXZpbmcgbm8gdG9wLWxldmVsIGNvbnN0IG9yCisvLyByZWZl
cmVuY2UgbW9kaWZpZXIpLiAgSXQncyB0aGUgY2xpZW50J3MgcmVzcG9uc2liaWxpdHkgdG8gc2F0
aXNmeQorLy8gdGhpcyByZXF1aXJlbWVudC4gIEVsZW1lbnQgY2FuIGJlIGFuIGFycmF5IHR5cGUg
aXRzZWxmIChoZW5jZQorLy8gbXVsdGktZGltZW5zaW9uYWwgYXJyYXlzIGFyZSBzdXBwb3J0ZWQp
LgordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnQ+CitjbGFzcyBOYXRpdmVBcnJheSB7CisgcHVi
bGljOgorICAvLyBTVEwtc3R5bGUgY29udGFpbmVyIHR5cGVkZWZzLgorICB0eXBlZGVmIEVsZW1l
bnQgdmFsdWVfdHlwZTsKKyAgdHlwZWRlZiBFbGVtZW50KiBpdGVyYXRvcjsKKyAgdHlwZWRlZiBj
b25zdCBFbGVtZW50KiBjb25zdF9pdGVyYXRvcjsKKworICAvLyBDb25zdHJ1Y3RzIGZyb20gYSBu
YXRpdmUgYXJyYXkuIFJlZmVyZW5jZXMgdGhlIHNvdXJjZS4KKyAgTmF0aXZlQXJyYXkoY29uc3Qg
RWxlbWVudCogYXJyYXksIHNpemVfdCBjb3VudCwgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSkg
eworICAgIEluaXRSZWYoYXJyYXksIGNvdW50KTsKKyAgfQorCisgIC8vIENvbnN0cnVjdHMgZnJv
bSBhIG5hdGl2ZSBhcnJheS4gQ29waWVzIHRoZSBzb3VyY2UuCisgIE5hdGl2ZUFycmF5KGNvbnN0
IEVsZW1lbnQqIGFycmF5LCBzaXplX3QgY291bnQsIFJlbGF0aW9uVG9Tb3VyY2VDb3B5KSB7Cisg
ICAgSW5pdENvcHkoYXJyYXksIGNvdW50KTsKKyAgfQorCisgIC8vIENvcHkgY29uc3RydWN0b3Iu
CisgIE5hdGl2ZUFycmF5KGNvbnN0IE5hdGl2ZUFycmF5JiByaHMpIHsKKyAgICAodGhpcy0+KnJo
cy5jbG9uZV8pKHJocy5hcnJheV8sIHJocy5zaXplXyk7CisgIH0KKworICB+TmF0aXZlQXJyYXko
KSB7CisgICAgaWYgKGNsb25lXyAhPSAmTmF0aXZlQXJyYXk6OkluaXRSZWYpCisgICAgICBkZWxl
dGVbXSBhcnJheV87CisgIH0KKworICAvLyBTVEwtc3R5bGUgY29udGFpbmVyIG1ldGhvZHMuCisg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZV87IH0KKyAgY29uc3RfaXRlcmF0b3Ig
YmVnaW4oKSBjb25zdCB7IHJldHVybiBhcnJheV87IH0KKyAgY29uc3RfaXRlcmF0b3IgZW5kKCkg
Y29uc3QgeyByZXR1cm4gYXJyYXlfICsgc2l6ZV87IH0KKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IE5hdGl2ZUFycmF5JiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gc2l6ZSgpID09IHJocy5zaXpl
KCkgJiYKKyAgICAgICAgQXJyYXlFcShiZWdpbigpLCBzaXplKCksIHJocy5iZWdpbigpKTsKKyAg
fQorCisgcHJpdmF0ZToKKyAgZW51bSB7CisgICAga0NoZWNrVHlwZUlzTm90Q29uc3RPckFSZWZl
cmVuY2UgPSBTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI8CisgICAgICAgIEVsZW1lbnQsIEdURVNU
X1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhFbGVtZW50KT46OnZhbHVlCisgIH07CisKKyAg
Ly8gSW5pdGlhbGl6ZXMgdGhpcyBvYmplY3Qgd2l0aCBhIGNvcHkgb2YgdGhlIGlucHV0LgorICB2
b2lkIEluaXRDb3B5KGNvbnN0IEVsZW1lbnQqIGFycmF5LCBzaXplX3QgYV9zaXplKSB7CisgICAg
RWxlbWVudCogY29uc3QgY29weSA9IG5ldyBFbGVtZW50W2Ffc2l6ZV07CisgICAgQ29weUFycmF5
KGFycmF5LCBhX3NpemUsIGNvcHkpOworICAgIGFycmF5XyA9IGNvcHk7CisgICAgc2l6ZV8gPSBh
X3NpemU7CisgICAgY2xvbmVfID0gJk5hdGl2ZUFycmF5OjpJbml0Q29weTsKKyAgfQorCisgIC8v
IEluaXRpYWxpemVzIHRoaXMgb2JqZWN0IHdpdGggYSByZWZlcmVuY2Ugb2YgdGhlIGlucHV0Lgor
ICB2b2lkIEluaXRSZWYoY29uc3QgRWxlbWVudCogYXJyYXksIHNpemVfdCBhX3NpemUpIHsKKyAg
ICBhcnJheV8gPSBhcnJheTsKKyAgICBzaXplXyA9IGFfc2l6ZTsKKyAgICBjbG9uZV8gPSAmTmF0
aXZlQXJyYXk6OkluaXRSZWY7CisgIH0KKworICBjb25zdCBFbGVtZW50KiBhcnJheV87CisgIHNp
emVfdCBzaXplXzsKKyAgdm9pZCAoTmF0aXZlQXJyYXk6OipjbG9uZV8pKGNvbnN0IEVsZW1lbnQq
LCBzaXplX3QpOworCisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oTmF0aXZlQXJyYXkpOworfTsK
KwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCi0j
ZGVmaW5lIEdURVNUX01FU1NBR0VfKG1lc3NhZ2UsIHJlc3VsdF90eXBlKSBcCi0gIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkFzc2VydEhlbHBlcihyZXN1bHRfdHlwZSwgX19GSUxFX18sIF9fTElORV9f
LCBtZXNzYWdlKSBcCisjZGVmaW5lIEdURVNUX01FU1NBR0VfQVRfKGZpbGUsIGxpbmUsIG1lc3Nh
Z2UsIHJlc3VsdF90eXBlKSBcCisgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkFzc2VydEhlbHBlcihy
ZXN1bHRfdHlwZSwgZmlsZSwgbGluZSwgbWVzc2FnZSkgXAogICAgID0gOjp0ZXN0aW5nOjpNZXNz
YWdlKCkKIAorI2RlZmluZSBHVEVTVF9NRVNTQUdFXyhtZXNzYWdlLCByZXN1bHRfdHlwZSkgXAor
ICBHVEVTVF9NRVNTQUdFX0FUXyhfX0ZJTEVfXywgX19MSU5FX18sIG1lc3NhZ2UsIHJlc3VsdF90
eXBlKQorCiAjZGVmaW5lIEdURVNUX0ZBVEFMX0ZBSUxVUkVfKG1lc3NhZ2UpIFwKICAgcmV0dXJu
IEdURVNUX01FU1NBR0VfKG1lc3NhZ2UsIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ6OmtGYXRh
bEZhaWx1cmUpCiAKQEAgLTgwMCw3ICsxMjA4LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBSYW5kb20g
ewogI2RlZmluZSBHVEVTVF9TVUNDRVNTXyhtZXNzYWdlKSBcCiAgIEdURVNUX01FU1NBR0VfKG1l
c3NhZ2UsIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNzKQogCi0vLyBTdXBwcmVz
c2VzIE1TVkMgd2FybmluZ3MgNDA3MiAodW5yZWFjaGFibGUgY29kZSkgZm9yIHRoZSBjb2RlIGZv
bGxvd2luZworLy8gU3VwcHJlc3MgTVNWQyB3YXJuaW5nIDQ3MDIgKHVucmVhY2hhYmxlIGNvZGUp
IGZvciB0aGUgY29kZSBmb2xsb3dpbmcKIC8vIHN0YXRlbWVudCBpZiBpdCByZXR1cm5zIG9yIHRo
cm93cyAob3IgZG9lc24ndCByZXR1cm4gb3IgdGhyb3cgaW4gc29tZQogLy8gc2l0dWF0aW9ucyku
CiAjZGVmaW5lIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18o
c3RhdGVtZW50KSBcCkBAIC04MDgsNyArMTIxNiw3IEBAIGNsYXNzIEdURVNUX0FQSV8gUmFuZG9t
IHsKIAogI2RlZmluZSBHVEVTVF9URVNUX1RIUk9XXyhzdGF0ZW1lbnQsIGV4cGVjdGVkX2V4Y2Vw
dGlvbiwgZmFpbCkgXAogICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0gIGlmIChj
b25zdCBjaGFyKiBndGVzdF9tc2cgPSAiIikgeyBcCisgIGlmICg6OnRlc3Rpbmc6OmludGVybmFs
OjpDb25zdENoYXJQdHIgZ3Rlc3RfbXNnID0gIiIpIHsgXAogICAgIGJvb2wgZ3Rlc3RfY2F1Z2h0
X2V4cGVjdGVkID0gZmFsc2U7IFwKICAgICB0cnkgeyBcCiAgICAgICBHVEVTVF9TVVBQUkVTU19V
TlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKQEAgLTgxNywzOCAr
MTIyNSwzOCBAQCBjbGFzcyBHVEVTVF9BUElfIFJhbmRvbSB7CiAgICAgICBndGVzdF9jYXVnaHRf
ZXhwZWN0ZWQgPSB0cnVlOyBcCiAgICAgfSBcCiAgICAgY2F0Y2ggKC4uLikgeyBcCi0gICAgICBn
dGVzdF9tc2cgPSAiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIHRocm93cyBhbiBleGNlcHRpb24g
b2YgdHlwZSAiIFwKLSAgICAgICAgICAgICAgICAgICNleHBlY3RlZF9leGNlcHRpb24gIi5cbiAg
QWN0dWFsOiBpdCB0aHJvd3MgYSBkaWZmZXJlbnQgIiBcCi0gICAgICAgICAgICAgICAgICAidHlw
ZS4iOyBcCisgICAgICBndGVzdF9tc2cudmFsdWUgPSBcCisgICAgICAgICAgIkV4cGVjdGVkOiAi
ICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5cGUgIiBcCisgICAgICAgICAg
I2V4cGVjdGVkX2V4Y2VwdGlvbiAiLlxuICBBY3R1YWw6IGl0IHRocm93cyBhIGRpZmZlcmVudCB0
eXBlLiI7IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0
dGhyb3dfLCBfX0xJTkVfXyk7IFwKICAgICB9IFwKICAgICBpZiAoIWd0ZXN0X2NhdWdodF9leHBl
Y3RlZCkgeyBcCi0gICAgICBndGVzdF9tc2cgPSAiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIHRo
cm93cyBhbiBleGNlcHRpb24gb2YgdHlwZSAiIFwKLSAgICAgICAgICAgICAgICAgICNleHBlY3Rl
ZF9leGNlcHRpb24gIi5cbiAgQWN0dWFsOiBpdCB0aHJvd3Mgbm90aGluZy4iOyBcCisgICAgICBn
dGVzdF9tc2cudmFsdWUgPSBcCisgICAgICAgICAgIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0
aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5cGUgIiBcCisgICAgICAgICAgI2V4cGVjdGVkX2V4Y2Vw
dGlvbiAiLlxuICBBY3R1YWw6IGl0IHRocm93cyBub3RoaW5nLiI7IFwKICAgICAgIGdvdG8gR1RF
U1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0dGhyb3dfLCBfX0xJTkVfXyk7IFwKICAg
ICB9IFwKICAgfSBlbHNlIFwKICAgICBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rl
c3R0aHJvd18sIF9fTElORV9fKTogXAotICAgICAgZmFpbChndGVzdF9tc2cpCisgICAgICBmYWls
KGd0ZXN0X21zZy52YWx1ZSkKIAogI2RlZmluZSBHVEVTVF9URVNUX05PX1RIUk9XXyhzdGF0ZW1l
bnQsIGZhaWwpIFwKICAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAotICBpZiAoY29u
c3QgY2hhciogZ3Rlc3RfbXNnID0gIiIpIHsgXAorICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
QWx3YXlzVHJ1ZSgpKSB7IFwKICAgICB0cnkgeyBcCiAgICAgICBHVEVTVF9TVVBQUkVTU19VTlJF
QUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKICAgICB9IFwKICAgICBj
YXRjaCAoLi4uKSB7IFwKLSAgICAgIGd0ZXN0X21zZyA9ICJFeHBlY3RlZDogIiAjc3RhdGVtZW50
ICIgZG9lc24ndCB0aHJvdyBhbiBleGNlcHRpb24uXG4iIFwKLSAgICAgICAgICAgICAgICAgICIg
IEFjdHVhbDogaXQgdGhyb3dzLiI7IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhn
dGVzdF9sYWJlbF90ZXN0bm90aHJvd18sIF9fTElORV9fKTsgXAogICAgIH0gXAogICB9IGVsc2Ug
XAogICAgIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdG5vdGhyb3dfLCBfX0xJ
TkVfXyk6IFwKLSAgICAgIGZhaWwoZ3Rlc3RfbXNnKQorICAgICAgZmFpbCgiRXhwZWN0ZWQ6ICIg
I3N0YXRlbWVudCAiIGRvZXNuJ3QgdGhyb3cgYW4gZXhjZXB0aW9uLlxuIiBcCisgICAgICAgICAg
ICIgIEFjdHVhbDogaXQgdGhyb3dzLiIpCiAKICNkZWZpbmUgR1RFU1RfVEVTVF9BTllfVEhST1df
KHN0YXRlbWVudCwgZmFpbCkgXAogICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0g
IGlmIChjb25zdCBjaGFyKiBndGVzdF9tc2cgPSAiIikgeyBcCisgIGlmICg6OnRlc3Rpbmc6Omlu
dGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAogICAgIGJvb2wgZ3Rlc3RfY2F1Z2h0X2FueSA9IGZh
bHNlOyBcCiAgICAgdHJ5IHsgXAogICAgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09E
RV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCkBAIC04NTcsMTMgKzEyNjUsMTIgQEAgY2xh
c3MgR1RFU1RfQVBJXyBSYW5kb20gewogICAgICAgZ3Rlc3RfY2F1Z2h0X2FueSA9IHRydWU7IFwK
ICAgICB9IFwKICAgICBpZiAoIWd0ZXN0X2NhdWdodF9hbnkpIHsgXAotICAgICAgZ3Rlc3RfbXNn
ID0gIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuIiBcCi0g
ICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IGl0IGRvZXNuJ3QuIjsgXAogICAgICAgZ290byBH
VEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3Rhbnl0aHJvd18sIF9fTElORV9fKTsg
XAogICAgIH0gXAogICB9IGVsc2UgXAogICAgIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFi
ZWxfdGVzdGFueXRocm93XywgX19MSU5FX18pOiBcCi0gICAgICBmYWlsKGd0ZXN0X21zZykKKyAg
ICAgIGZhaWwoIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxu
IiBcCisgICAgICAgICAgICIgIEFjdHVhbDogaXQgZG9lc24ndC4iKQogCiAKIC8vIEltcGxlbWVu
dHMgQm9vbGVhbiB0ZXN0IGFzc2VydGlvbnMgc3VjaCBhcyBFWFBFQ1RfVFJVRS4gZXhwcmVzc2lv
biBjYW4gYmUKQEAgLTg4MCwxOCArMTI4NywxNyBAQCBjbGFzcyBHVEVTVF9BUElfIFJhbmRvbSB7
CiAKICNkZWZpbmUgR1RFU1RfVEVTVF9OT19GQVRBTF9GQUlMVVJFXyhzdGF0ZW1lbnQsIGZhaWwp
IFwKICAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAotICBpZiAoY29uc3QgY2hhciog
Z3Rlc3RfbXNnID0gIiIpIHsgXAorICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1
ZSgpKSB7IFwKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpIYXNOZXdGYXRhbEZhaWx1cmVIZWxw
ZXIgZ3Rlc3RfZmF0YWxfZmFpbHVyZV9jaGVja2VyOyBcCiAgICAgR1RFU1RfU1VQUFJFU1NfVU5S
RUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCiAgICAgaWYgKGd0ZXN0
X2ZhdGFsX2ZhaWx1cmVfY2hlY2tlci5oYXNfbmV3X2ZhdGFsX2ZhaWx1cmUoKSkgeyBcCi0gICAg
ICBndGVzdF9tc2cgPSAiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgZ2VuZXJhdGUg
bmV3IGZhdGFsICIgXAotICAgICAgICAgICAgICAgICAgImZhaWx1cmVzIGluIHRoZSBjdXJyZW50
IHRocmVhZC5cbiIgXAotICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBpdCBkb2VzLiI7IFwK
ICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0bm9mYXRhbF8s
IF9fTElORV9fKTsgXAogICAgIH0gXAogICB9IGVsc2UgXAogICAgIEdURVNUX0NPTkNBVF9UT0tF
Tl8oZ3Rlc3RfbGFiZWxfdGVzdG5vZmF0YWxfLCBfX0xJTkVfXyk6IFwKLSAgICAgIGZhaWwoZ3Rl
c3RfbXNnKQorICAgICAgZmFpbCgiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgZ2Vu
ZXJhdGUgbmV3IGZhdGFsICIgXAorICAgICAgICAgICAiZmFpbHVyZXMgaW4gdGhlIGN1cnJlbnQg
dGhyZWFkLlxuIiBcCisgICAgICAgICAgICIgIEFjdHVhbDogaXQgZG9lcy4iKQogCiAvLyBFeHBh
bmRzIHRvIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyB0aGF0IGltcGxlbWVudHMgdGhlIGdpdmVuIHRl
c3QuCiAjZGVmaW5lIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3Rf
bmFtZSkgXApAQCAtOTA0LDcgKzEzMTAsNyBAQCBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVf
KHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIDogcHVibGljIHBhcmVudF9jbGFzcyB7XAogICBH
VEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpKCkge31cCiAg
cHJpdmF0ZTpcCiAgIHZpcnR1YWwgdm9pZCBUZXN0Qm9keSgpO1wKLSAgc3RhdGljIDo6dGVzdGlu
Zzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mb187XAorICBzdGF0aWMgOjp0ZXN0aW5nOjpUZXN0
SW5mbyogY29uc3QgdGVzdF9pbmZvXyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXztcCiAgIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oXAogICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1F
Xyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSk7XAogfTtcCkBAIC05MTIsNyArMTMxOCw4IEBA
IGNsYXNzIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkg
OiBwdWJsaWMgcGFyZW50X2NsYXNzIHtcCiA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCBHVEVT
VF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpXAogICA6OnRlc3Rf
aW5mb18gPVwKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpNYWtlQW5kUmVnaXN0ZXJUZXN0SW5m
byhcCi0gICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgI3Rlc3RfbmFtZSwgIiIsICIiLCBcCisgICAg
ICAgICN0ZXN0X2Nhc2VfbmFtZSwgI3Rlc3RfbmFtZSwgTlVMTCwgTlVMTCwgXAorICAgICAgICA6
OnRlc3Rpbmc6OmludGVybmFsOjpDb2RlTG9jYXRpb24oX19GSUxFX18sIF9fTElORV9fKSwgXAog
ICAgICAgICAocGFyZW50X2lkKSwgXAogICAgICAgICBwYXJlbnRfY2xhc3M6OlNldFVwVGVzdENh
c2UsIFwKICAgICAgICAgcGFyZW50X2NsYXNzOjpUZWFyRG93blRlc3RDYXNlLCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0
LWxpbmtlZF9wdHIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oCmluZGV4IDU0MGVmNGNkNDRlNzJiNTU4NjU3MDgxYTVm
MDdhMGYyOGIzZTQwZTMuLjA4MmI4NzI4OWFlMTdjOGFhN2I5NmQ4ZThjOTJiOTZlMDE4Yzc2OGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtbGlua2VkX3B0ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oCkBAIC0yNyw4ICsyNyw2IEBACiAv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQXV0aG9yczogRGFuIEVnbm9y
IChlZ25vckBnb29nbGUuY29tKQotLy8KIC8vIEEgInNtYXJ0IiBwb2ludGVyIHR5cGUgd2l0aCBy
ZWZlcmVuY2UgdHJhY2tpbmcuICBFdmVyeSBwb2ludGVyIHRvIGEKIC8vIHBhcnRpY3VsYXIgb2Jq
ZWN0IGlzIGtlcHQgb24gYSBjaXJjdWxhciBsaW5rZWQgbGlzdC4gIFdoZW4gdGhlIGxhc3QgcG9p
bnRlcgogLy8gdG8gYW4gb2JqZWN0IGlzIGRlc3Ryb3llZCBvciByZWFzc2lnbmVkLCB0aGUgb2Jq
ZWN0IGlzIGRlbGV0ZWQuCkBAIC02MiwxNiArNjAsMTggQEAKIC8vICAgICAgIHJhdyBwb2ludGVy
IChlLmcuIHZpYSBnZXQoKSkgY29uY3VycmVudGx5LCBhbmQKIC8vICAgICAtIGl0J3Mgc2FmZSB0
byB3cml0ZSB0byB0d28gbGlua2VkX3B0cnMgdGhhdCBwb2ludCB0byB0aGUgc2FtZQogLy8gICAg
ICAgc2hhcmVkIG9iamVjdCBjb25jdXJyZW50bHkuCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTog
cmVuYW1lIHRoaXMgdG8gc2FmZV9saW5rZWRfcHRyIHRvIGF2b2lkCisvLyBGSVhNRTogcmVuYW1l
IHRoaXMgdG8gc2FmZV9saW5rZWRfcHRyIHRvIGF2b2lkCiAvLyBjb25mdXNpb24gd2l0aCBub3Jt
YWwgbGlua2VkX3B0ci4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAj
aWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfTElOS0VEX1BUUl9IXwog
I2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0xJTktFRF9QVFJfSF8K
IAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPGFzc2VydC5oPgogCi0jaW5jbHVkZSA8
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsK
QEAgLTEwNSwyNSArMTA1LDM1IEBAIGNsYXNzIGxpbmtlZF9wdHJfaW50ZXJuYWwgewogICAvLyBm
cmFtZXdvcmsuCiAKICAgLy8gSm9pbiBhbiBleGlzdGluZyBjaXJjbGUuCi0gIC8vIEwgPCBnX2xp
bmtlZF9wdHJfbXV0ZXgKLSAgdm9pZCBqb2luKGxpbmtlZF9wdHJfaW50ZXJuYWwgY29uc3QqIHB0
cikgeworICB2b2lkIGpvaW4obGlua2VkX3B0cl9pbnRlcm5hbCBjb25zdCogcHRyKQorICAgICAg
R1RFU1RfTE9DS19FWENMVURFRF8oZ19saW5rZWRfcHRyX211dGV4KSB7CiAgICAgTXV0ZXhMb2Nr
IGxvY2soJmdfbGlua2VkX3B0cl9tdXRleCk7CiAKICAgICBsaW5rZWRfcHRyX2ludGVybmFsIGNv
bnN0KiBwID0gcHRyOwotICAgIHdoaWxlIChwLT5uZXh0XyAhPSBwdHIpIHAgPSBwLT5uZXh0XzsK
KyAgICB3aGlsZSAocC0+bmV4dF8gIT0gcHRyKSB7CisgICAgICBhc3NlcnQocC0+bmV4dF8gIT0g
dGhpcyAmJgorICAgICAgICAgICAgICJUcnlpbmcgdG8gam9pbigpIGEgbGlua2VkIHJpbmcgd2Ug
YXJlIGFscmVhZHkgaW4uICIKKyAgICAgICAgICAgICAiSXMgR01vY2sgdGhyZWFkIHNhZmV0eSBl
bmFibGVkPyIpOworICAgICAgcCA9IHAtPm5leHRfOworICAgIH0KICAgICBwLT5uZXh0XyA9IHRo
aXM7CiAgICAgbmV4dF8gPSBwdHI7CiAgIH0KIAogICAvLyBMZWF2ZSB3aGF0ZXZlciBjaXJjbGUg
d2UncmUgcGFydCBvZi4gIFJldHVybnMgdHJ1ZSBpZiB3ZSB3ZXJlIHRoZQogICAvLyBsYXN0IG1l
bWJlciBvZiB0aGUgY2lyY2xlLiAgT25jZSB0aGlzIGlzIGRvbmUsIHlvdSBjYW4gam9pbigpIGFu
b3RoZXIuCi0gIC8vIEwgPCBnX2xpbmtlZF9wdHJfbXV0ZXgKLSAgYm9vbCBkZXBhcnQoKSB7Cisg
IGJvb2wgZGVwYXJ0KCkKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGdfbGlua2VkX3B0cl9t
dXRleCkgewogICAgIE11dGV4TG9jayBsb2NrKCZnX2xpbmtlZF9wdHJfbXV0ZXgpOwogCiAgICAg
aWYgKG5leHRfID09IHRoaXMpIHJldHVybiB0cnVlOwogICAgIGxpbmtlZF9wdHJfaW50ZXJuYWwg
Y29uc3QqIHAgPSBuZXh0XzsKLSAgICB3aGlsZSAocC0+bmV4dF8gIT0gdGhpcykgcCA9IHAtPm5l
eHRfOworICAgIHdoaWxlIChwLT5uZXh0XyAhPSB0aGlzKSB7CisgICAgICBhc3NlcnQocC0+bmV4
dF8gIT0gbmV4dF8gJiYKKyAgICAgICAgICAgICAiVHJ5aW5nIHRvIGRlcGFydCgpIGEgbGlua2Vk
IHJpbmcgd2UgYXJlIG5vdCBpbi4gIgorICAgICAgICAgICAgICJJcyBHTW9jayB0aHJlYWQgc2Fm
ZXR5IGVuYWJsZWQ/Iik7CisgICAgICBwID0gcC0+bmV4dF87CisgICAgfQogICAgIHAtPm5leHRf
ID0gbmV4dF87CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CkBAIC0xNzIsMTUgKzE4Miw2IEBAIGNs
YXNzIGxpbmtlZF9wdHIgewogICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KICAg
VCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQogICBUJiBvcGVyYXRvcioo
KSBjb25zdCB7IHJldHVybiAqdmFsdWVfOyB9Ci0gIC8vIFJlbGVhc2Ugb3duZXJzaGlwIG9mIHRo
ZSBwb2ludGVkIG9iamVjdCBhbmQgcmV0dXJucyBpdC4KLSAgLy8gU29sZSBvd25lcnNoaXAgYnkg
dGhpcyBsaW5rZWRfcHRyIG9iamVjdCBpcyByZXF1aXJlZC4KLSAgVCogcmVsZWFzZSgpIHsKLSAg
ICBib29sIGxhc3QgPSBsaW5rXy5kZXBhcnQoKTsKLSAgICBhc3NlcnQobGFzdCk7Ci0gICAgVCog
diA9IHZhbHVlXzsKLSAgICB2YWx1ZV8gPSBOVUxMOwotICAgIHJldHVybiB2OwotICB9CiAKICAg
Ym9vbCBvcGVyYXRvcj09KFQqIHApIGNvbnN0IHsgcmV0dXJuIHZhbHVlXyA9PSBwOyB9CiAgIGJv
b2wgb3BlcmF0b3IhPShUKiBwKSBjb25zdCB7IHJldHVybiB2YWx1ZV8gIT0gcDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oCmluZGV4IDYyYjVh
ZTEzZTI4ZTU2NmIxZTg4NTEyN2RiYjA3Y2QxNzJhMjZmMTkuLjRmYWM4YzAyNzAzZDU5MWViMmYy
MmVmMTQ4NDFiNDI1NTZjNTA0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBh
cmFtLXV0aWwtZ2VuZXJhdGVkLmgKQEAgLTEsNCArMSw2IEBACi0vLyBUaGlzIGZpbGUgd2FzIEdF
TkVSQVRFRCBieSBhIHNjcmlwdC4gIERPIE5PVCBFRElUIEJZIEhBTkQhISEKKy8vIFRoaXMgZmls
ZSB3YXMgR0VORVJBVEVEIGJ5IGNvbW1hbmQ6CisvLyAgICAgcHVtcC5weSBndGVzdC1wYXJhbS11
dGlsLWdlbmVyYXRlZC5oLnB1bXAKKy8vIERPIE5PVCBFRElUIEJZIEhBTkQhISEKIAogLy8gQ29w
eXJpZ2h0IDIwMDggR29vZ2xlIEluYy4KIC8vIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCkBAIC0yOCw4
ICszMCw3IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQorCiAKIC8vIFR5
cGUgYW5kIGZ1bmN0aW9uIHV0aWxpdGllcyBmb3IgaW1wbGVtZW50aW5nIHBhcmFtZXRlcml6ZWQg
dGVzdHMuCiAvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBULiAgRE8gTk9UIEVE
SVQgQlkgSEFORCEKQEAgLTQxLDE2ICs0MiwxMyBAQAogLy8gYnkgdGhlIG1heGltdW0gYXJpdHkg
b2YgdGhlIGltcGxlbWVudGF0aW9uIG9mIHR1cGxlIHdoaWNoIGlzCiAvLyBjdXJyZW50bHkgc2V0
IGF0IDEwLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYg
R1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0dFTkVSQVRFRF9I
XwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BBUkFNX1VUSUxf
R0VORVJBVEVEX0hfCiAKLS8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBkZXBlbmRzIG9uIGd0ZXN0
J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKLS8vICp1bmNvbmRpdGlvbmFsbHkqLiAgVGhl
cmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKLS8vIGluc2lkZSAjaWYgR1RF
U1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLQotI2lmIEdU
RVNUX0hBU19QQVJBTV9URVNUCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKIAogbmFtZXNw
YWNlIHRlc3RpbmcgewogCkBAIC01OCw4ICs1Niw4IEBAIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIC8v
IGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLgogdGVtcGxhdGUgPHR5cGVuYW1lIEZv
cndhcmRJdGVyYXRvcj4KIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjwKLSAgICB0eXBlbmFtZSA6
OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+IFZhbHVl
c0luKAotICAgICAgICBGb3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJdGVyYXRvciBlbmQp
OworICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVyYXRvclRyYWl0czxGb3J3YXJk
SXRlcmF0b3I+Ojp2YWx1ZV90eXBlPgorVmFsdWVzSW4oRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLCBG
b3J3YXJkSXRlcmF0b3IgZW5kKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgog
aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFZhbHVlc0luKGNvbnN0IFQgKCZhcnJheSlbTl0p
OwpAQCAtNzcsNyArNzUsMTIgQEAgY2xhc3MgVmFsdWVBcnJheTEgewogICBleHBsaWNpdCBWYWx1
ZUFycmF5MShUMSB2MSkgOiB2MV8odjEpIHt9CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0g
IG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgeyByZXR1cm4gVmFsdWVzSW4oJnYx
XywgJnYxXyArIDEpOyB9CisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qgewor
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pfTsKKyAgICByZXR1cm4g
VmFsdWVzSW4oYXJyYXkpOworICB9CisKKyAgVmFsdWVBcnJheTEoY29uc3QgVmFsdWVBcnJheTEm
IG90aGVyKSA6IHYxXyhvdGhlci52MV8pIHt9CiAKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1l
bnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC05MywxMCArOTYsMTIgQEAg
Y2xhc3MgVmFsdWVBcnJheTIgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFf
LCB2Ml99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0
aWNfY2FzdDxUPih2Ml8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAg
VmFsdWVBcnJheTIoY29uc3QgVmFsdWVBcnJheTImIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2
Ml8ob3RoZXIudjJfKSB7fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBh
c3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFy
cmF5MiYgb3RoZXIpOwpAQCAtMTEyLDEwICsxMTcsMTQgQEAgY2xhc3MgVmFsdWVBcnJheTMgewog
CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigp
IGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzX307CisgICAgY29u
c3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJh
eSk7CiAgIH0KIAorICBWYWx1ZUFycmF5Myhjb25zdCBWYWx1ZUFycmF5MyYgb3RoZXIpIDogdjFf
KG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXykge30KKwog
IHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBv
cnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTMmIG90aGVyKTsKQEAgLTEz
MywxMCArMTQyLDE0IEBAIGNsYXNzIFZhbHVlQXJyYXk0IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3Qg
VCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0X307CisgICAgY29uc3QgVCBhcnJheVtdID0g
e3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJ
bihhcnJheSk7CiAgIH0KIAorICBWYWx1ZUFycmF5NChjb25zdCBWYWx1ZUFycmF5NCYgb3RoZXIp
IDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyks
IHY0XyhvdGhlci52NF8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAt
IGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVl
QXJyYXk0JiBvdGhlcik7CkBAIC0xNTUsMTAgKzE2OCwxNCBAQCBjbGFzcyBWYWx1ZUFycmF5NSB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19j
YXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+
KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7
CiAgIH0KIAorICBWYWx1ZUFycmF5NShjb25zdCBWYWx1ZUFycmF5NSYgb3RoZXIpIDogdjFfKG90
aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhl
ci52NF8pLCB2NV8ob3RoZXIudjVfKSB7fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50
YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25z
dCBWYWx1ZUFycmF5NSYgb3RoZXIpOwpAQCAtMTc5LDEwICsxOTYsMTUgQEAgY2xhc3MgVmFsdWVB
cnJheTYgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywg
djRfLCB2NV8sIHY2X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYx
XyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0
YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY2Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAorICBWYWx1
ZUFycmF5Nihjb25zdCBWYWx1ZUFycmF5NiYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhv
dGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3Ro
ZXIudjVfKSwgdjZfKG90aGVyLnY2Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVu
dGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgVmFsdWVBcnJheTYmIG90aGVyKTsKQEAgLTIwNCwxMCArMjI2LDE2IEBAIGNsYXNzIFZhbHVl
QXJyYXk3IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5l
cmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18s
IHY0XywgdjVfLCB2Nl8sIHY3X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0
PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
XyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3Xyl9OwogICAgIHJldHVybiBWYWx1
ZXNJbihhcnJheSk7CiAgIH0KIAorICBWYWx1ZUFycmF5Nyhjb25zdCBWYWx1ZUFycmF5NyYgb3Ro
ZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYz
XyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAg
ICB2N18ob3RoZXIudjdfKSB7fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24g
LSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1
ZUFycmF5NyYgb3RoZXIpOwpAQCAtMjMxLDEwICsyNTksMTYgQEAgY2xhc3MgVmFsdWVBcnJheTgg
ewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2
NV8sIHY2XywgdjdfLCB2OF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxU
Pih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18p
LCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8p
fTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTgoY29u
c3QgVmFsdWVBcnJheTgmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwK
KyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2
XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pIHt9CisK
ICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBw
b3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk4JiBvdGhlcik7CkBAIC0y
NTksMTAgKzI5MywxNyBAQCBjbGFzcyBWYWx1ZUFycmF5OSB7CiAKICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywgdjlf
fTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4o
djRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwg
c3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjlfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZh
bHVlQXJyYXk5KGNvbnN0IFZhbHVlQXJyYXk5JiBvdGhlcikgOiB2MV8ob3RoZXIudjFfKSwgdjJf
KG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0XyksIHY1Xyhv
dGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2OF8ob3Ro
ZXIudjhfKSwgdjlfKG90aGVyLnY5Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVu
dGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgVmFsdWVBcnJheTkmIG90aGVyKTsKQEAgLTI4OCwxMCArMzI5LDE3IEBAIGNsYXNzIFZhbHVl
QXJyYXkxMCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNf
LCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBffTsKKyAgICBjb25zdCBUIGFycmF5
W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEwXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAorICBW
YWx1ZUFycmF5MTAoY29uc3QgVmFsdWVBcnJheTEwJiBvdGhlcikgOiB2MV8ob3RoZXIudjFfKSwg
djJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0XyksIHY1
XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2OF8o
b3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXykge30KKwogIHByaXZh
dGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4K
ICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTEwJiBvdGhlcik7CkBAIC0zMTksMTAg
KzM2NywxOCBAQCBjbGFzcyBWYWx1ZUFycmF5MTEgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFy
cmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEw
XywgdjExX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJy
YXkxMShjb25zdCBWYWx1ZUFycmF5MTEmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3Ro
ZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVy
LnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52
OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIu
djExXykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVu
dCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTExJiBv
dGhlcik7CkBAIC0zNTEsMTEgKzQwNywxOSBAQCBjbGFzcyBWYWx1ZUFycmF5MTIgewogCiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0
IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywg
djdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyX307CisgICAgY29uc3QgVCBh
cnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0
PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3
XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0
YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjEyXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAorICBW
YWx1ZUFycmF5MTIoY29uc3QgVmFsdWVBcnJheTEyJiBvdGhlcikgOiB2MV8ob3RoZXIudjFfKSwg
djJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0XyksIHY1
XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2OF8o
b3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXyksCisgICAgICB2MTFf
KG90aGVyLnYxMV8pLCB2MTJfKG90aGVyLnYxMl8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBp
bXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0
b3I9KGNvbnN0IFZhbHVlQXJyYXkxMiYgb3RoZXIpOwpAQCAtMzg2LDExICs0NTAsMTkgQEAgY2xh
c3MgVmFsdWVBcnJheTEzIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3Ig
UGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywg
djJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAg
ICAgIHYxMl8sIHYxM199OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2
MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBz
dGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGlj
X2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2Fz
dDxUPih2MTNfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVl
QXJyYXkxMyhjb25zdCBWYWx1ZUFycmF5MTMmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8o
b3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90
aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhl
ci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3Ro
ZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXykge30KKwogIHByaXZh
dGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4K
ICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTEzJiBvdGhlcik7CkBAIC00MjIsMTEg
KzQ5NCwxOSBAQCBjbGFzcyBWYWx1ZUFycmF5MTQgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFy
cmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEw
XywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0X307CisgICAgY29uc3QgVCBhcnJheVtd
ID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0
YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19j
YXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKX07CiAg
ICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkxNChjb25zdCBW
YWx1ZUFycmF5MTQmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAg
ICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2Xyhv
dGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3Ro
ZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8o
b3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0Xykge30KKwogIHBy
aXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRl
ZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTE0JiBvdGhlcik7CkBAIC00NTks
MTEgKzUzOSwyMSBAQCBjbGFzcyBWYWx1ZUFycmF5MTUgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBU
IGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5Xywg
djEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1X307CisgICAgY29uc3Qg
VCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19j
YXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+
KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5Xyks
IHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2
MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJ
bihhcnJheSk7CiAgIH0KIAorICBWYWx1ZUFycmF5MTUoY29uc3QgVmFsdWVBcnJheTE1JiBvdGhl
cikgOiB2MV8ob3RoZXIudjFfKSwgdjJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNf
KSwgdjRfKG90aGVyLnY0XyksIHY1XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAg
IHY3XyhvdGhlci52N18pLCB2OF8ob3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3Ro
ZXIudjEwXyksCisgICAgICB2MTFfKG90aGVyLnYxMV8pLCB2MTJfKG90aGVyLnYxMl8pLCB2MTNf
KG90aGVyLnYxM18pLCB2MTRfKG90aGVyLnYxNF8pLAorICAgICAgdjE1XyhvdGhlci52MTVfKSB7
fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVu
c3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MTUmIG90aGVyKTsK
QEAgLTQ5OSwxMSArNTg5LDIxIEBAIGNsYXNzIFZhbHVlQXJyYXkxNiB7CiAKICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4
XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZf
fTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4o
djRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwg
c3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0
YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE2Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAorICBW
YWx1ZUFycmF5MTYoY29uc3QgVmFsdWVBcnJheTE2JiBvdGhlcikgOiB2MV8ob3RoZXIudjFfKSwg
djJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0XyksIHY1
XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2OF8o
b3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXyksCisgICAgICB2MTFf
KG90aGVyLnYxMV8pLCB2MTJfKG90aGVyLnYxMl8pLCB2MTNfKG90aGVyLnYxM18pLCB2MTRfKG90
aGVyLnYxNF8pLAorICAgICAgdjE1XyhvdGhlci52MTVfKSwgdjE2XyhvdGhlci52MTZfKSB7fQor
CiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3Vw
cG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MTYmIG90aGVyKTsKQEAg
LTU0MCwxMSArNjQwLDIxIEBAIGNsYXNzIFZhbHVlQXJyYXkxNyB7CiAKICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywg
djlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2
MTdffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyks
IHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pfTsKICAgICByZXR1cm4gVmFs
dWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTE3KGNvbnN0IFZhbHVlQXJyYXkxNyYg
b3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVy
LnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisg
ICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBf
KG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwg
djEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1
XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIudjE3Xykge30KKwogIHByaXZhdGU6CiAg
IC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9p
ZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTE3JiBvdGhlcik7CkBAIC01ODIsMTEgKzY5Miwy
MiBAQCBjbGFzcyBWYWx1ZUFycmF5MTggewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4X307Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNf
Y2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0
PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE4Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAorICBWYWx1ZUFycmF5
MTgoY29uc3QgVmFsdWVBcnJheTE4JiBvdGhlcikgOiB2MV8ob3RoZXIudjFfKSwgdjJfKG90aGVy
LnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0XyksIHY1XyhvdGhlci52
NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2OF8ob3RoZXIudjhf
KSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXyksCisgICAgICB2MTFfKG90aGVyLnYx
MV8pLCB2MTJfKG90aGVyLnYxMl8pLCB2MTNfKG90aGVyLnYxM18pLCB2MTRfKG90aGVyLnYxNF8p
LAorICAgICAgdjE1XyhvdGhlci52MTVfKSwgdjE2XyhvdGhlci52MTZfKSwgdjE3XyhvdGhlci52
MTdfKSwgdjE4XyhvdGhlci52MThfKSB7fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50
YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25z
dCBWYWx1ZUFycmF5MTgmIG90aGVyKTsKQEAgLTYyNSwxMSArNzQ2LDIzIEBAIGNsYXNzIFZhbHVl
QXJyYXkxOSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNf
LCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJf
LCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlffTsKKyAgICBjb25zdCBU
IGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nh
c3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4o
djdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwg
c3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYx
NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2Xyks
IHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE5Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAor
ICBWYWx1ZUFycmF5MTkoY29uc3QgVmFsdWVBcnJheTE5JiBvdGhlcikgOiB2MV8ob3RoZXIudjFf
KSwgdjJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0Xyks
IHY1XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2
OF8ob3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXyksCisgICAgICB2
MTFfKG90aGVyLnYxMV8pLCB2MTJfKG90aGVyLnYxMl8pLCB2MTNfKG90aGVyLnYxM18pLCB2MTRf
KG90aGVyLnYxNF8pLAorICAgICAgdjE1XyhvdGhlci52MTVfKSwgdjE2XyhvdGhlci52MTZfKSwg
djE3XyhvdGhlci52MTdfKSwgdjE4XyhvdGhlci52MThfKSwKKyAgICAgIHYxOV8ob3RoZXIudjE5
Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBp
cyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTE5JiBvdGhl
cik7CkBAIC02NzAsMTEgKzgwMywyMyBAQCBjbGFzcyBWYWx1ZUFycmF5MjAgewogCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
LSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywgdjdf
LCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1Xywg
djE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYx
OV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
ICAgfQogCisgIFZhbHVlQXJyYXkyMChjb25zdCBWYWx1ZUFycmF5MjAmIG90aGVyKSA6IHYxXyhv
dGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3Ro
ZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVy
LnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwK
KyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEz
XyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVy
LnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5Xyhv
dGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSB7fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1w
bGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9y
PShjb25zdCBWYWx1ZUFycmF5MjAmIG90aGVyKTsKQEAgLTcxNywxMSArODYyLDI0IEBAIGNsYXNz
IFZhbHVlQXJyYXkyMSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYy
XywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAg
ICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2
MjFffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyks
IHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkyMShjb25zdCBWYWx1ZUFycmF5MjEmIG90aGVyKSA6
IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2
NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdf
KG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52
MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3Ro
ZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZf
KG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAg
djE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSB7fQor
CiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3Vw
cG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MjEmIG90aGVyKTsKQEAg
LTc2NSwxMSArOTIzLDI0IEBAIGNsYXNzIFZhbHVlQXJyYXkyMiB7CiAKICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywg
djlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2
MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJffTsKKyAgICBjb25zdCBUIGFycmF5W10g
PSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nh
c3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19j
YXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8
VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7
CiAgIH0KIAorICBWYWx1ZUFycmF5MjIoY29uc3QgVmFsdWVBcnJheTIyJiBvdGhlcikgOiB2MV8o
b3RoZXIudjFfKSwgdjJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90
aGVyLnY0XyksIHY1XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhl
ci52N18pLCB2OF8ob3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXyks
CisgICAgICB2MTFfKG90aGVyLnYxMV8pLCB2MTJfKG90aGVyLnYxMl8pLCB2MTNfKG90aGVyLnYx
M18pLCB2MTRfKG90aGVyLnYxNF8pLAorICAgICAgdjE1XyhvdGhlci52MTVfKSwgdjE2XyhvdGhl
ci52MTZfKSwgdjE3XyhvdGhlci52MTdfKSwgdjE4XyhvdGhlci52MThfKSwKKyAgICAgIHYxOV8o
b3RoZXIudjE5XyksIHYyMF8ob3RoZXIudjIwXyksIHYyMV8ob3RoZXIudjIxXyksIHYyMl8ob3Ro
ZXIudjIyXykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdu
bWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTIy
JiBvdGhlcik7CkBAIC04MTUsMTIgKzk4NiwyNSBAQCBjbGFzcyBWYWx1ZUFycmF5MjMgewogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2
XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0Xywg
djE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywKLSAgICAgICAg
djIzX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRp
Y19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0
PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2
XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2
MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18p
LCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0
YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBz
dGF0aWNfY2FzdDxUPih2MjNfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQog
CisgIFZhbHVlQXJyYXkyMyhjb25zdCBWYWx1ZUFycmF5MjMmIG90aGVyKSA6IHYxXyhvdGhlci52
MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRf
KSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3Xyks
IHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAg
IHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYx
NF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8p
LCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52
MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJf
KSwKKyAgICAgIHYyM18ob3RoZXIudjIzXykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxl
bWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0o
Y29uc3QgVmFsdWVBcnJheTIzJiBvdGhlcik7CkBAIC04NjcsMTIgKzEwNTEsMjYgQEAgY2xhc3Mg
VmFsdWVBcnJheTI0IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFy
YW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJf
LCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAg
IHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYy
MV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtz
dGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNf
Y2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
Ml8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8
VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2
MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8p
LCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyNF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAK
KyAgVmFsdWVBcnJheTI0KGNvbnN0IFZhbHVlQXJyYXkyNCYgb3RoZXIpIDogdjFfKG90aGVyLnYx
XyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8p
LCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwg
djhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAg
djExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0
XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2Xyks
IHYxN18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYx
OV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8p
LAorICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSB7fQorCiAgcHJpdmF0
ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgog
ICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MjQmIG90aGVyKTsKQEAgLTkyMCwxMiAr
MTExOCwyNiBAQCBjbGFzcyBWYWx1ZUFycmF5MjUgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFy
cmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEw
XywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4
XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1X307Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNf
Y2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0
PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2Fz
dDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+
KHYyNV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJh
eTI1KGNvbnN0IFZhbHVlQXJyYXkyNSYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhl
ci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIu
djVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4
XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52
MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRf
KSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIu
djE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90
aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIz
XyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVfKSB7fQorCiAg
cHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9y
dGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MjUmIG90aGVyKTsKQEAgLTk3
NSwxMiArMTE4NywyNiBAQCBjbGFzcyBWYWx1ZUFycmF5MjYgewogCiAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25z
dCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5
XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3
XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1
XywgdjI2X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYx
M18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyks
IHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2
MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8p
LCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0
YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKX07CiAgICAgcmV0dXJuIFZh
bHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkyNihjb25zdCBWYWx1ZUFycmF5MjYm
IG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhl
ci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAor
ICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEw
XyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyks
IHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYx
NV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8p
LAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52
MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3Ro
ZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2Xykge30KKwogIHByaXZh
dGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4K
ICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTI2JiBvdGhlcik7CkBAIC0xMDMyLDEy
ICsxMjU4LDI4IEBAIGNsYXNzIFZhbHVlQXJyYXkyNyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2
MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2
MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2
MjZfLCB2MjdffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0
PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4o
djEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVf
KSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+
KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIy
XyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjdfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisg
IFZhbHVlQXJyYXkyNyhjb25zdCBWYWx1ZUFycmF5MjcmIG90aGVyKSA6IHYxXyhvdGhlci52MV8p
LCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwg
djVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4
XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYx
MV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8o
b3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2
MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlf
KSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwK
KyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1
XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pIHt9CisKICBwcml2
YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQu
CiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkyNyYgb3RoZXIpOwpAQCAtMTA5MCwx
MiArMTMzMiwyOCBAQCBjbGFzcyBWYWx1ZUFycmF5MjggewogCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBU
IGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5Xywg
djEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3Xywg
djE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1Xywg
djI2XywgdjI3XywgdjI4X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+
KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyks
IHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0
aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19j
YXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0
PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pfTsKICAgICByZXR1
cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTI4KGNvbnN0IFZhbHVlQXJy
YXkyOCYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNf
KG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2
XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8p
LCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52
MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3Ro
ZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIu
djE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90
aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0
XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAg
IHYyN18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIudjI4Xykge30KKwogIHByaXZhdGU6CiAgIC8v
IE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBv
cGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTI4JiBvdGhlcik7CkBAIC0xMTQ5LDEyICsxNDA3LDI4
IEBAIGNsYXNzIFZhbHVlQXJyYXkyOSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9w
ZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9
IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFf
LAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlf
LCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2Mjdf
LCB2MjhfLCB2MjlffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8
VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0
PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+
KHYyOV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJh
eTI5KGNvbnN0IFZhbHVlQXJyYXkyOSYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhl
ci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIu
djVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4
XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52
MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRf
KSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIu
djE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90
aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIz
XyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVfKSwgdjI2Xyhv
dGhlci52MjZfKSwKKyAgICAgIHYyN18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIudjI4XyksIHYy
OV8ob3RoZXIudjI5Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0g
YXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVB
cnJheTI5JiBvdGhlcik7CkBAIC0xMjEwLDEyICsxNDg0LDI5IEBAIGNsYXNzIFZhbHVlQXJyYXkz
MCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9y
PFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8s
IHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNf
LCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2
MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBffTsK
KyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRp
Y19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nh
c3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19j
YXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8
VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAg
fQogCisgIFZhbHVlQXJyYXkzMChjb25zdCBWYWx1ZUFycmF5MzAmIG90aGVyKSA6IHYxXyhvdGhl
ci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIu
djRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3
XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAg
ICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyks
IHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYx
Nl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhl
ci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52
MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3Ro
ZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pLCB2Mjhf
KG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pIHt9CisKICBw
cml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0
ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkzMCYgb3RoZXIpOwpAQCAtMTI3
MywxMiArMTU2NCwzMCBAQCBjbGFzcyBWYWx1ZUFycmF5MzEgewogCiAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25z
dCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5
XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3
XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1
XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxX307CisgICAgY29uc3QgVCBhcnJh
eVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+
KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3Xyks
IHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRp
Y19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0
aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19j
YXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0
PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkp
OwogICB9CiAKKyAgVmFsdWVBcnJheTMxKGNvbnN0IFZhbHVlQXJyYXkzMSYgb3RoZXIpIDogdjFf
KG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0Xyhv
dGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3Ro
ZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8p
LAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52
MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3Ro
ZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlf
KG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90
aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1
XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAgIHYyN18ob3RoZXIudjI3Xyks
IHYyOF8ob3RoZXIudjI4XyksIHYyOV8ob3RoZXIudjI5XyksIHYzMF8ob3RoZXIudjMwXyksCisg
ICAgICB2MzFfKG90aGVyLnYzMV8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRh
dGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0
IFZhbHVlQXJyYXkzMSYgb3RoZXIpOwpAQCAtMTMzNywxMiArMTY0NiwzMCBAQCBjbGFzcyBWYWx1
ZUFycmF5MzIgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdl
bmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYz
XywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEy
XywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywg
djIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5Xywg
djMwXywgdjMxXywgdjMyX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+
KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyks
IHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0
aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19j
YXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0
PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2Fz
dDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+
KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5
KTsKICAgfQogCisgIFZhbHVlQXJyYXkzMihjb25zdCBWYWx1ZUFycmF5MzImIG90aGVyKSA6IHYx
XyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8o
b3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90
aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBf
KSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIu
djEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90
aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5
XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhv
dGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYy
NV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18p
LCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pLAor
ICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52MzJfKSB7fQorCiAgcHJpdmF0ZToK
ICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2
b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MzImIG90aGVyKTsKQEAgLTE0MDMsMTIgKzE3
MzAsMzEgQEAgY2xhc3MgVmFsdWVBcnJheTMzIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
ICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJh
eVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8s
IHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8s
IHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8s
IHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM199OworICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2Fz
dDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2
N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBz
dGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwg
c3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0
aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNf
Y2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkp
OwogICB9CiAKKyAgVmFsdWVBcnJheTMzKGNvbnN0IFZhbHVlQXJyYXkzMyYgb3RoZXIpIDogdjFf
KG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0Xyhv
dGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3Ro
ZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8p
LAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52
MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3Ro
ZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlf
KG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90
aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1
XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAgIHYyN18ob3RoZXIudjI3Xyks
IHYyOF8ob3RoZXIudjI4XyksIHYyOV8ob3RoZXIudjI5XyksIHYzMF8ob3RoZXIudjMwXyksCisg
ICAgICB2MzFfKG90aGVyLnYzMV8pLCB2MzJfKG90aGVyLnYzMl8pLCB2MzNfKG90aGVyLnYzM18p
IHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMg
dW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkzMyYgb3RoZXIp
OwpAQCAtMTQ3MCwxMiArMTgxNiwzMSBAQCBjbGFzcyBWYWx1ZUFycmF5MzQgewogCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
LSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywgdjdf
LCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1Xywg
djE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAg
djI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMz
XywgdjM0X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYx
M18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyks
IHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2
MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8p
LCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0
YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2Mjlf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBz
dGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRp
Y19jYXN0PFQ+KHYzNF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAg
VmFsdWVBcnJheTM0KGNvbnN0IFZhbHVlQXJyYXkzNCYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyks
IHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2
NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhf
KG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjEx
XyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0Xyhv
dGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYx
N18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8p
LCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAor
ICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVf
KSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAgIHYyN18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIu
djI4XyksIHYyOV8ob3RoZXIudjI5XyksIHYzMF8ob3RoZXIudjMwXyksCisgICAgICB2MzFfKG90
aGVyLnYzMV8pLCB2MzJfKG90aGVyLnYzMl8pLCB2MzNfKG90aGVyLnYzM18pLCB2MzRfKG90aGVy
LnYzNF8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1l
bnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkzNCYg
b3RoZXIpOwpAQCAtMTUzOCwxMyArMTkwMywzMiBAQCBjbGFzcyBWYWx1ZUFycmF5MzUgewogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2
XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0Xywg
djE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAg
ICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMy
XywgdjMzXywgdjM0XywKLSAgICAgICAgdjM1X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYx
OV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyks
IHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2
MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8p
LCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0
YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVf
KX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkzNShj
b25zdCBWYWx1ZUFycmF5MzUmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJf
KSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1Xyks
IHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2
OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyks
IHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisg
ICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18p
LCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52
MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3Ro
ZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIu
djI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90
aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMy
XyhvdGhlci52MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAg
IHYzNV8ob3RoZXIudjM1Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9u
IC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFs
dWVBcnJheTM1JiBvdGhlcik7CkBAIC0xNjA5LDEzICsxOTkzLDMzIEBAIGNsYXNzIFZhbHVlQXJy
YXkzNiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJh
dG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2
NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2
MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJf
LCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBf
LCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZffTsKKyAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+
KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2
XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwg
c3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYy
M18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0
YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkzNihjb25zdCBWYWx1
ZUFycmF5MzYmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAg
IHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhl
ci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIu
djlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3Ro
ZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVf
KG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90
aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIx
XyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyks
IHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisg
ICAgICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8p
LCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52
MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAgIHYzNV8ob3Ro
ZXIudjM1XyksIHYzNl8ob3RoZXIudjM2Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxl
bWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0o
Y29uc3QgVmFsdWVBcnJheTM2JiBvdGhlcik7CkBAIC0xNjgyLDEzICsyMDg2LDMzIEBAIGNsYXNz
IFZhbHVlQXJyYXkzNyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYy
XywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAg
ICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2
MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2
MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2
MzdffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyks
IHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0
YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRp
Y19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nh
c3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJh
eSk7CiAgIH0KIAorICBWYWx1ZUFycmF5MzcoY29uc3QgVmFsdWVBcnJheTM3JiBvdGhlcikgOiB2
MV8ob3RoZXIudjFfKSwgdjJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRf
KG90aGVyLnY0XyksIHY1XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3Xyhv
dGhlci52N18pLCB2OF8ob3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEw
XyksCisgICAgICB2MTFfKG90aGVyLnYxMV8pLCB2MTJfKG90aGVyLnYxMl8pLCB2MTNfKG90aGVy
LnYxM18pLCB2MTRfKG90aGVyLnYxNF8pLAorICAgICAgdjE1XyhvdGhlci52MTVfKSwgdjE2Xyhv
dGhlci52MTZfKSwgdjE3XyhvdGhlci52MTdfKSwgdjE4XyhvdGhlci52MThfKSwKKyAgICAgIHYx
OV8ob3RoZXIudjE5XyksIHYyMF8ob3RoZXIudjIwXyksIHYyMV8ob3RoZXIudjIxXyksIHYyMl8o
b3RoZXIudjIyXyksCisgICAgICB2MjNfKG90aGVyLnYyM18pLCB2MjRfKG90aGVyLnYyNF8pLCB2
MjVfKG90aGVyLnYyNV8pLCB2MjZfKG90aGVyLnYyNl8pLAorICAgICAgdjI3XyhvdGhlci52Mjdf
KSwgdjI4XyhvdGhlci52MjhfKSwgdjI5XyhvdGhlci52MjlfKSwgdjMwXyhvdGhlci52MzBfKSwK
KyAgICAgIHYzMV8ob3RoZXIudjMxXyksIHYzMl8ob3RoZXIudjMyXyksIHYzM18ob3RoZXIudjMz
XyksIHYzNF8ob3RoZXIudjM0XyksCisgICAgICB2MzVfKG90aGVyLnYzNV8pLCB2MzZfKG90aGVy
LnYzNl8pLCB2MzdfKG90aGVyLnYzN18pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1l
bnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNv
bnN0IFZhbHVlQXJyYXkzNyYgb3RoZXIpOwpAQCAtMTc1NiwxMyArMjE4MCwzMyBAQCBjbGFzcyBW
YWx1ZUFycmF5MzggewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8s
IHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAg
djEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIx
XywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5
XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3
XywgdjM4X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYx
M18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyks
IHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2
MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8p
LCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0
YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2Mjlf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBz
dGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRp
Y19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKX07
CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkzOChjb25z
dCBWYWx1ZUFycmF5MzgmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwK
KyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2
XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8o
b3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYx
Ml8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAg
ICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2
MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBf
KSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIu
djIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2
XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90aGVy
LnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMyXyhv
dGhlci52MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAgIHYz
NV8ob3RoZXIudjM1XyksIHYzNl8ob3RoZXIudjM2XyksIHYzN18ob3RoZXIudjM3XyksIHYzOF8o
b3RoZXIudjM4Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNz
aWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJh
eTM4JiBvdGhlcik7CkBAIC0xODMxLDEzICsyMjc1LDM1IEBAIGNsYXNzIFZhbHVlQXJyYXkzOSB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2
MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNf
LAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFf
LCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2Mzlf
fTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4o
djRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwg
c3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0
YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRp
Y19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nh
c3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19j
YXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8
VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzlfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAg
fQogCisgIFZhbHVlQXJyYXkzOShjb25zdCBWYWx1ZUFycmF5MzkmIG90aGVyKSA6IHYxXyhvdGhl
ci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIu
djRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3
XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAg
ICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyks
IHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYx
Nl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhl
ci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52
MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3Ro
ZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pLCB2Mjhf
KG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAg
djMxXyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0
XyhvdGhlci52MzRfKSwKKyAgICAgIHYzNV8ob3RoZXIudjM1XyksIHYzNl8ob3RoZXIudjM2Xyks
IHYzN18ob3RoZXIudjM3XyksIHYzOF8ob3RoZXIudjM4XyksCisgICAgICB2MzlfKG90aGVyLnYz
OV8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQg
aXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkzOSYgb3Ro
ZXIpOwpAQCAtMTkwOCwxMyArMjM3NCwzNSBAQCBjbGFzcyBWYWx1ZUFycmF5NDAgewogCiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0
IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywg
djdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1
XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAg
ICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywg
djMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwX307
CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0
PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0
XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0
YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0
aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19j
YXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0
PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2Fz
dDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+
KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2
XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pfTsKICAgICByZXR1cm4g
VmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTQwKGNvbnN0IFZhbHVlQXJyYXk0
MCYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90
aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2Xyks
CisgICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2
MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJf
KSwgdjEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIu
djE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4
XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVy
LnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0Xyhv
dGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAgIHYy
N18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIudjI4XyksIHYyOV8ob3RoZXIudjI5XyksIHYzMF8o
b3RoZXIudjMwXyksCisgICAgICB2MzFfKG90aGVyLnYzMV8pLCB2MzJfKG90aGVyLnYzMl8pLCB2
MzNfKG90aGVyLnYzM18pLCB2MzRfKG90aGVyLnYzNF8pLAorICAgICAgdjM1XyhvdGhlci52MzVf
KSwgdjM2XyhvdGhlci52MzZfKSwgdjM3XyhvdGhlci52MzdfKSwgdjM4XyhvdGhlci52MzhfKSwK
KyAgICAgIHYzOV8ob3RoZXIudjM5XyksIHY0MF8ob3RoZXIudjQwXykge30KKwogIHByaXZhdGU6
CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTQwJiBvdGhlcik7CkBAIC0xOTg3LDEzICsy
NDc1LDM1IEBAIGNsYXNzIFZhbHVlQXJyYXk0MSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJy
YXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBf
LCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThf
LCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZf
LCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAot
ICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFffTsKKyAgICBjb25zdCBU
IGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nh
c3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4o
djdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwg
c3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYx
NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2Xyks
IHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0
YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRp
Y19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nh
c3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pfTsKICAg
ICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTQxKGNvbnN0IFZh
bHVlQXJyYXk0MSYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAg
ICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90
aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhl
ci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhv
dGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYx
NV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYxOF8o
b3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2
MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52MjNf
KSwgdjI0XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZfKSwK
KyAgICAgIHYyN18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIudjI4XyksIHYyOV8ob3RoZXIudjI5
XyksIHYzMF8ob3RoZXIudjMwXyksCisgICAgICB2MzFfKG90aGVyLnYzMV8pLCB2MzJfKG90aGVy
LnYzMl8pLCB2MzNfKG90aGVyLnYzM18pLCB2MzRfKG90aGVyLnYzNF8pLAorICAgICAgdjM1Xyhv
dGhlci52MzVfKSwgdjM2XyhvdGhlci52MzZfKSwgdjM3XyhvdGhlci52MzdfKSwgdjM4XyhvdGhl
ci52MzhfKSwKKyAgICAgIHYzOV8ob3RoZXIudjM5XyksIHY0MF8ob3RoZXIudjQwXyksIHY0MV8o
b3RoZXIudjQxXykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNz
aWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJh
eTQxJiBvdGhlcik7CkBAIC0yMDY3LDEzICsyNTc3LDM2IEBAIGNsYXNzIFZhbHVlQXJyYXk0MiB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2
MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNf
LAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFf
LCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2Mzlf
LCB2NDBfLCB2NDFfLCB2NDJffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8
VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNf
KSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0
YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRp
Y19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19j
YXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8
VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0
PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4o
djQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJf
KX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXk0Mihj
b25zdCBWYWx1ZUFycmF5NDImIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJf
KSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1Xyks
IHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2
OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyks
IHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisg
ICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18p
LCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52
MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3Ro
ZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIu
djI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90
aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMy
XyhvdGhlci52MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAg
IHYzNV8ob3RoZXIudjM1XyksIHYzNl8ob3RoZXIudjM2XyksIHYzN18ob3RoZXIudjM3XyksIHYz
OF8ob3RoZXIudjM4XyksCisgICAgICB2MzlfKG90aGVyLnYzOV8pLCB2NDBfKG90aGVyLnY0MF8p
LCB2NDFfKG90aGVyLnY0MV8pLCB2NDJfKG90aGVyLnY0Ml8pIHt9CisKICBwcml2YXRlOgogICAv
LyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQg
b3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk0MiYgb3RoZXIpOwpAQCAtMjE0OCwxMyArMjY4MSwz
NyBAQCBjbGFzcyBWYWx1ZUFycmF5NDMgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5
XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3
XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAg
ICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzX307CisgICAg
Y29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYy
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0
YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19j
YXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2Fz
dDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+
KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4
XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYy
NV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2
MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8p
LCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0
YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pfTsK
ICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTQzKGNvbnN0
IFZhbHVlQXJyYXk0MyYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAor
ICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZf
KG90aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5Xyhv
dGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEy
XyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAg
IHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYx
OF8ob3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8p
LCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52
MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZf
KSwKKyAgICAgIHYyN18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIudjI4XyksIHYyOV8ob3RoZXIu
djI5XyksIHYzMF8ob3RoZXIudjMwXyksCisgICAgICB2MzFfKG90aGVyLnYzMV8pLCB2MzJfKG90
aGVyLnYzMl8pLCB2MzNfKG90aGVyLnYzM18pLCB2MzRfKG90aGVyLnYzNF8pLAorICAgICAgdjM1
XyhvdGhlci52MzVfKSwgdjM2XyhvdGhlci52MzZfKSwgdjM3XyhvdGhlci52MzdfKSwgdjM4Xyhv
dGhlci52MzhfKSwKKyAgICAgIHYzOV8ob3RoZXIudjM5XyksIHY0MF8ob3RoZXIudjQwXyksIHY0
MV8ob3RoZXIudjQxXyksIHY0Ml8ob3RoZXIudjQyXyksCisgICAgICB2NDNfKG90aGVyLnY0M18p
IHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMg
dW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk0MyYgb3RoZXIp
OwpAQCAtMjIzMSwxMyArMjc4OCwzNyBAQCBjbGFzcyBWYWx1ZUFycmF5NDQgewogCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
LSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywgdjdf
LCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1Xywg
djE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAg
djI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMz
XywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQx
XywgdjQyXywgdjQzXywgdjQ0X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0
PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
XyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBz
dGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRp
Y19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0
aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19j
YXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNf
Y2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0
PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2Fz
dDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+
KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQy
XyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKX07CiAgICAgcmV0
dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXk0NChjb25zdCBWYWx1ZUFy
cmF5NDQmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYz
XyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52
Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlf
KSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIu
djEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90
aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVy
LnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhv
dGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYy
NF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAg
ICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8pLCB2
MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52MzJf
KSwgdjMzXyhvdGhlci52MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAgIHYzNV8ob3RoZXIu
djM1XyksIHYzNl8ob3RoZXIudjM2XyksIHYzN18ob3RoZXIudjM3XyksIHYzOF8ob3RoZXIudjM4
XyksCisgICAgICB2MzlfKG90aGVyLnYzOV8pLCB2NDBfKG90aGVyLnY0MF8pLCB2NDFfKG90aGVy
LnY0MV8pLCB2NDJfKG90aGVyLnY0Ml8pLAorICAgICAgdjQzXyhvdGhlci52NDNfKSwgdjQ0Xyhv
dGhlci52NDRfKSB7fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3Np
Z25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5
NDQmIG90aGVyKTsKQEAgLTIzMTUsMTMgKzI4OTYsMzggQEAgY2xhc3MgVmFsdWVBcnJheTQ1IHsK
IAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4o
KSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVf
LCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYx
NF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18s
Ci0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8s
IHYzMl8sIHYzM18sIHYzNF8sIHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYzOV8s
IHY0MF8sIHY0MV8sIHY0Ml8sIHY0M18sIHY0NF8sIHY0NV99OworICAgIGNvbnN0IFQgYXJyYXlb
XSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2
NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBz
dGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNf
Y2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2Fz
dDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nh
c3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxU
Pih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
MF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8
VD4odjM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2
MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8p
LCBzdGF0aWNfY2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY0Ml8pLCBzdGF0aWNfY2FzdDxUPih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4o
djQ0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0NV8pfTsKICAgICByZXR1cm4gVmFsdWVz
SW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTQ1KGNvbnN0IFZhbHVlQXJyYXk0NSYgb3Ro
ZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYz
XyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAg
ICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90
aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEz
XyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1Xyks
IHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4XyksCisg
ICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8p
LCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52
MjRfKSwgdjI1XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAgIHYyN18ob3Ro
ZXIudjI3XyksIHYyOF8ob3RoZXIudjI4XyksIHYyOV8ob3RoZXIudjI5XyksIHYzMF8ob3RoZXIu
djMwXyksCisgICAgICB2MzFfKG90aGVyLnYzMV8pLCB2MzJfKG90aGVyLnYzMl8pLCB2MzNfKG90
aGVyLnYzM18pLCB2MzRfKG90aGVyLnYzNF8pLAorICAgICAgdjM1XyhvdGhlci52MzVfKSwgdjM2
XyhvdGhlci52MzZfKSwgdjM3XyhvdGhlci52MzdfKSwgdjM4XyhvdGhlci52MzhfKSwKKyAgICAg
IHYzOV8ob3RoZXIudjM5XyksIHY0MF8ob3RoZXIudjQwXyksIHY0MV8ob3RoZXIudjQxXyksIHY0
Ml8ob3RoZXIudjQyXyksCisgICAgICB2NDNfKG90aGVyLnY0M18pLCB2NDRfKG90aGVyLnY0NF8p
LCB2NDVfKG90aGVyLnY0NV8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlv
biAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZh
bHVlQXJyYXk0NSYgb3RoZXIpOwpAQCAtMjQwMSwxMyArMzAwNywzOCBAQCBjbGFzcyBWYWx1ZUFy
cmF5NDYgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywg
djRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywg
djEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIy
XywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMw
XywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4
XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0XywgdjQ1XywgdjQ2X307CisgICAg
Y29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYy
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0
YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19j
YXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2Fz
dDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+
KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4
XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYy
NV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2
MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8p
LCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0
YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBz
dGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0YXRp
Y19jYXN0PFQ+KHY0Nl8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAg
VmFsdWVBcnJheTQ2KGNvbnN0IFZhbHVlQXJyYXk0NiYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyks
IHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2
NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhf
KG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjEx
XyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0Xyhv
dGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYx
N18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8p
LCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAor
ICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVf
KSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAgIHYyN18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIu
djI4XyksIHYyOV8ob3RoZXIudjI5XyksIHYzMF8ob3RoZXIudjMwXyksCisgICAgICB2MzFfKG90
aGVyLnYzMV8pLCB2MzJfKG90aGVyLnYzMl8pLCB2MzNfKG90aGVyLnYzM18pLCB2MzRfKG90aGVy
LnYzNF8pLAorICAgICAgdjM1XyhvdGhlci52MzVfKSwgdjM2XyhvdGhlci52MzZfKSwgdjM3Xyhv
dGhlci52MzdfKSwgdjM4XyhvdGhlci52MzhfKSwKKyAgICAgIHYzOV8ob3RoZXIudjM5XyksIHY0
MF8ob3RoZXIudjQwXyksIHY0MV8ob3RoZXIudjQxXyksIHY0Ml8ob3RoZXIudjQyXyksCisgICAg
ICB2NDNfKG90aGVyLnY0M18pLCB2NDRfKG90aGVyLnY0NF8pLCB2NDVfKG90aGVyLnY0NV8pLCB2
NDZfKG90aGVyLnY0Nl8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAt
IGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVl
QXJyYXk0NiYgb3RoZXIpOwpAQCAtMjQ4OSwxNCArMzEyMCwzOSBAQCBjbGFzcyBWYWx1ZUFycmF5
NDcgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRf
LCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEz
XywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywg
djIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywg
djMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4Xywg
djM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0XywgdjQ1XywgdjQ2XywKLSAgICAgICAg
djQ3X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRp
Y19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0
PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2
XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2
MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18p
LCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0
YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBz
dGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRp
Y19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0
aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19j
YXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNf
Y2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0
PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBzdGF0aWNfY2FzdDxUPih2NDdfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXk0Nyhjb25zdCBWYWx1
ZUFycmF5NDcmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAg
IHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhl
ci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIu
djlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3Ro
ZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVf
KG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90
aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIx
XyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyks
IHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisg
ICAgICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8p
LCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52
MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAgIHYzNV8ob3Ro
ZXIudjM1XyksIHYzNl8ob3RoZXIudjM2XyksIHYzN18ob3RoZXIudjM3XyksIHYzOF8ob3RoZXIu
djM4XyksCisgICAgICB2MzlfKG90aGVyLnYzOV8pLCB2NDBfKG90aGVyLnY0MF8pLCB2NDFfKG90
aGVyLnY0MV8pLCB2NDJfKG90aGVyLnY0Ml8pLAorICAgICAgdjQzXyhvdGhlci52NDNfKSwgdjQ0
XyhvdGhlci52NDRfKSwgdjQ1XyhvdGhlci52NDVfKSwgdjQ2XyhvdGhlci52NDZfKSwKKyAgICAg
IHY0N18ob3RoZXIudjQ3Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9u
IC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFs
dWVBcnJheTQ3JiBvdGhlcik7CkBAIC0yNTc5LDE0ICszMjM1LDQwIEBAIGNsYXNzIFZhbHVlQXJy
YXk0OCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJh
dG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2
NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2
MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJf
LCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBf
LCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2Mzhf
LCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJfLCB2NDNfLCB2NDRfLCB2NDVfLCB2NDZfLCB2NDdfLAot
ICAgICAgICB2NDhffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8
VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0
PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+
KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMx
XyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwg
c3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYz
OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyks
IHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3Rh
dGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2NDVfKSwgc3RhdGljX2Nhc3Q8VD4odjQ2XyksIHN0YXRpY19jYXN0PFQ+KHY0N18p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDhfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXk0OChjb25zdCBWYWx1ZUFycmF5NDgmIG90aGVyKSA6
IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2
NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdf
KG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52
MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3Ro
ZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZf
KG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAg
djE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIy
XyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3RoZXIudjI0Xyks
IHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAgICB2MjdfKG90aGVyLnYy
N18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8p
LAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52MzJfKSwgdjMzXyhvdGhlci52
MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAgIHYzNV8ob3RoZXIudjM1XyksIHYzNl8ob3Ro
ZXIudjM2XyksIHYzN18ob3RoZXIudjM3XyksIHYzOF8ob3RoZXIudjM4XyksCisgICAgICB2Mzlf
KG90aGVyLnYzOV8pLCB2NDBfKG90aGVyLnY0MF8pLCB2NDFfKG90aGVyLnY0MV8pLCB2NDJfKG90
aGVyLnY0Ml8pLAorICAgICAgdjQzXyhvdGhlci52NDNfKSwgdjQ0XyhvdGhlci52NDRfKSwgdjQ1
XyhvdGhlci52NDVfKSwgdjQ2XyhvdGhlci52NDZfKSwKKyAgICAgIHY0N18ob3RoZXIudjQ3Xyks
IHY0OF8ob3RoZXIudjQ4Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9u
IC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFs
dWVBcnJheTQ4JiBvdGhlcik7CkBAIC0yNjcwLDE0ICszMzUyLDQwIEBAIGNsYXNzIFZhbHVlQXJy
YXk0OSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJh
dG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2
NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2
MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJf
LCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBf
LCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2Mzhf
LCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJfLCB2NDNfLCB2NDRfLCB2NDVfLCB2NDZfLCB2NDdfLAot
ICAgICAgICB2NDhfLCB2NDlffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8
VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNf
KSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0
YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRp
Y19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19j
YXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8
VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0
PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4o
djQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJf
KSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2NDVfKSwgc3RhdGljX2Nhc3Q8VD4odjQ2XyksIHN0YXRpY19jYXN0PFQ+
KHY0N18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDhfKSwgc3RhdGljX2Nhc3Q8VD4odjQ5
Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAorICBWYWx1ZUFycmF5NDko
Y29uc3QgVmFsdWVBcnJheTQ5JiBvdGhlcikgOiB2MV8ob3RoZXIudjFfKSwgdjJfKG90aGVyLnYy
XyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0XyksIHY1XyhvdGhlci52NV8p
LCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2OF8ob3RoZXIudjhfKSwg
djlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXyksCisgICAgICB2MTFfKG90aGVyLnYxMV8p
LCB2MTJfKG90aGVyLnYxMl8pLCB2MTNfKG90aGVyLnYxM18pLCB2MTRfKG90aGVyLnYxNF8pLAor
ICAgICAgdjE1XyhvdGhlci52MTVfKSwgdjE2XyhvdGhlci52MTZfKSwgdjE3XyhvdGhlci52MTdf
KSwgdjE4XyhvdGhlci52MThfKSwKKyAgICAgIHYxOV8ob3RoZXIudjE5XyksIHYyMF8ob3RoZXIu
djIwXyksIHYyMV8ob3RoZXIudjIxXyksIHYyMl8ob3RoZXIudjIyXyksCisgICAgICB2MjNfKG90
aGVyLnYyM18pLCB2MjRfKG90aGVyLnYyNF8pLCB2MjVfKG90aGVyLnYyNV8pLCB2MjZfKG90aGVy
LnYyNl8pLAorICAgICAgdjI3XyhvdGhlci52MjdfKSwgdjI4XyhvdGhlci52MjhfKSwgdjI5Xyhv
dGhlci52MjlfKSwgdjMwXyhvdGhlci52MzBfKSwKKyAgICAgIHYzMV8ob3RoZXIudjMxXyksIHYz
Ml8ob3RoZXIudjMyXyksIHYzM18ob3RoZXIudjMzXyksIHYzNF8ob3RoZXIudjM0XyksCisgICAg
ICB2MzVfKG90aGVyLnYzNV8pLCB2MzZfKG90aGVyLnYzNl8pLCB2MzdfKG90aGVyLnYzN18pLCB2
MzhfKG90aGVyLnYzOF8pLAorICAgICAgdjM5XyhvdGhlci52MzlfKSwgdjQwXyhvdGhlci52NDBf
KSwgdjQxXyhvdGhlci52NDFfKSwgdjQyXyhvdGhlci52NDJfKSwKKyAgICAgIHY0M18ob3RoZXIu
djQzXyksIHY0NF8ob3RoZXIudjQ0XyksIHY0NV8ob3RoZXIudjQ1XyksIHY0Nl8ob3RoZXIudjQ2
XyksCisgICAgICB2NDdfKG90aGVyLnY0N18pLCB2NDhfKG90aGVyLnY0OF8pLCB2NDlfKG90aGVy
LnY0OV8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1l
bnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk0OSYg
b3RoZXIpOwpAQCAtMjc2MiwxNCArMzQ3MCw0MCBAQCBjbGFzcyBWYWx1ZUFycmF5NTAgewogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2
XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0Xywg
djE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAg
ICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMy
XywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQw
XywgdjQxXywgdjQyXywgdjQzXywgdjQ0XywgdjQ1XywgdjQ2XywgdjQ3XywKLSAgICAgICAgdjQ4
XywgdjQ5XywgdjUwX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYx
XyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0
YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNf
Y2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0
PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+
KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0
XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxU
Pih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYz
MV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyks
IHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2
MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8p
LCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0
YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBzdGF0aWNfY2FzdDxUPih2NDdf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ4XyksIHN0YXRpY19jYXN0PFQ+KHY0OV8pLCBz
dGF0aWNfY2FzdDxUPih2NTBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQog
CisgIFZhbHVlQXJyYXk1MChjb25zdCBWYWx1ZUFycmF5NTAmIG90aGVyKSA6IHYxXyhvdGhlci52
MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRf
KSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3Xyks
IHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAg
IHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYx
NF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8p
LCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52
MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJf
KSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIu
djI1XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90
aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMx
XyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0Xyhv
dGhlci52MzRfKSwKKyAgICAgIHYzNV8ob3RoZXIudjM1XyksIHYzNl8ob3RoZXIudjM2XyksIHYz
N18ob3RoZXIudjM3XyksIHYzOF8ob3RoZXIudjM4XyksCisgICAgICB2MzlfKG90aGVyLnYzOV8p
LCB2NDBfKG90aGVyLnY0MF8pLCB2NDFfKG90aGVyLnY0MV8pLCB2NDJfKG90aGVyLnY0Ml8pLAor
ICAgICAgdjQzXyhvdGhlci52NDNfKSwgdjQ0XyhvdGhlci52NDRfKSwgdjQ1XyhvdGhlci52NDVf
KSwgdjQ2XyhvdGhlci52NDZfKSwKKyAgICAgIHY0N18ob3RoZXIudjQ3XyksIHY0OF8ob3RoZXIu
djQ4XyksIHY0OV8ob3RoZXIudjQ5XyksIHY1MF8ob3RoZXIudjUwXykge30KKwogIHByaXZhdGU6
CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTUwJiBvdGhlcik7CkBAIC0yODI2LDcgKzM1
NjAsNyBAQCBjbGFzcyBWYWx1ZUFycmF5NTAgewogICBjb25zdCBUNTAgdjUwXzsKIH07CiAKLSNp
ZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNfQ09NQklORQogLy8gSU5URVJOQUwg
SU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KIC8vCiAvLyBHZW5lcmF0
ZXMgdmFsdWVzIGZyb20gdGhlIENhcnRlc2lhbiBwcm9kdWN0IG9mIHZhbHVlcyBwcm9kdWNlZApA
QCAtMjgzNCw5ICszNTY4LDkgQEAgY2xhc3MgVmFsdWVBcnJheTUwIHsKIC8vCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjIKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnR1cGxlPFQx
LCBUMj4gPiB7CisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGlu
Zzo6dHVwbGU8VDEsIFQyPiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnR1cGxlPFQx
LCBUMj4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyPiBQYXJh
bVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjIoY29uc3QgUGFyYW1HZW5lcmF0
b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIpCkBAIC0yODgy
LDcgKzM2MTYsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMgogICAgIHZpcnR1
YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKICAg
ICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwogICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0
IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQor
ICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gY3Vy
cmVudF92YWx1ZV8uZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFt
SXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKICAgICAgIC8vIEhh
dmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCiAg
ICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3Qu
CkBAIC0yOTE0LDcgKzM2NDgsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMgog
CiAgICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgpKQot
ICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJf
KTsKKyAgICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVudDFf
LCAqY3VycmVudDJfKSk7CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAv
LyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4g
ZWl0aGVyIG9mIHRoZQpAQCAtMjkzNiw3ICszNjcwLDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjIKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJh
dG9yIGJlZ2luMl87CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVy
YXRvciBlbmQyXzsKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9yIGN1
cnJlbnQyXzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0cjxQ
YXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjI6Okl0ZXJhdG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25t
ZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtMjk0OSw5ICszNjgzLDkgQEAgY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjIKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDM+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMwotICAgIDogcHVi
bGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMz4gPiB7
CisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8
VDEsIFQyLCBUMz4gPiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0dXBsZTxUMSwgVDIs
IFQzPiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzPiBQ
YXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjMoY29uc3QgUGFyYW1HZW5l
cmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMpCkBAIC0zMDA1LDcgKzM3MzksNyBAQCBjbGFzcyBDYXJ0
ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMwogICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFj
ZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKICAgICAgIHJldHVybiBuZXcgSXRlcmF0b3Io
KnRoaXMpOwogICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNv
bnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQorICAgIHZpcnR1YWwgY29uc3QgUGFyYW1U
eXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gY3VycmVudF92YWx1ZV8uZ2V0KCk7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1U
eXBlPiYgb3RoZXIpIGNvbnN0IHsKICAgICAgIC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVy
YXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCiAgICAgICAvLyBpdGVyYXRvciBpcyBvZiB0
aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCkBAIC0zMDQxLDcgKzM3NzUsNyBAQCBj
bGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMwogCiAgICAgdm9pZCBDb21wdXRlQ3VycmVu
dFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9
IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfKTsKKyAgICAgICAg
Y3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJf
LCAqY3VycmVudDNfKSk7CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAv
LyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4g
ZWl0aGVyIG9mIHRoZQpAQCAtMzA2Nyw3ICszODAxLDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjMKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJh
dG9yIGJlZ2luM187CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+OjppdGVy
YXRvciBlbmQzXzsKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yIGN1
cnJlbnQzXzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0cjxQ
YXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjM6Okl0ZXJhdG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25t
ZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtMzA4MSw5ICszODE1LDkgQEAgY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjMKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0PgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjQKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0PiA+IHsKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwg
Ojp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPiB7CiAgcHVibGljOgotICB0eXBlZGVm
IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVz
dGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yNChjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKQEAg
LTMxNDYsNyArMzg4MCw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0CiAgICAg
dmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3Qg
ewogICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwg
Y29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVf
OyB9CisgICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVy
biBjdXJyZW50X3ZhbHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3Qg
UGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAgICAg
Ly8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3Ro
ZXIKICAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3du
Y2FzdC4KQEAgLTMxODYsOCArMzkyMCw4IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0
b3I0CiAKICAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5k
KCkpCi0gICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJy
ZW50Ml8sICpjdXJyZW50M18sCi0gICAgICAgICAgICAqY3VycmVudDRfKTsKKyAgICAgICAgY3Vy
cmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAq
Y3VycmVudDNfLAorICAgICAgICAgICAgKmN1cnJlbnQ0XykpOwogICAgIH0KICAgICBib29sIEF0
RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUg
ZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAgLTMyMTcsNyArMzk1MSw3IEBA
IGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0CiAgICAgY29uc3QgdHlwZW5hbWUgUGFy
YW1HZW5lcmF0b3I8VDQ+OjppdGVyYXRvciBiZWdpbjRfOwogICAgIGNvbnN0IHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgZW5kNF87CiAgICAgdHlwZW5hbWUgUGFyYW1HZW5l
cmF0b3I8VDQ+OjppdGVyYXRvciBjdXJyZW50NF87Ci0gICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFs
dWVfOworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsKICAgfTsgIC8v
IGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0OjpJdGVyYXRvcgogCiAgIC8vIE5vIGlt
cGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTMyMzIsOSArMzk2
Niw5IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDU+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNQotICAgIDogcHVibGljIFBhcmFt
R2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiA+IHsK
KyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxU
MSwgVDIsIFQzLCBUNCwgVDU+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8
VDEsIFQyLCBUMywgVDQsIFQ1PiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBs
ZTxUMSwgVDIsIFQzLCBUNCwgVDU+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2Vu
ZXJhdG9yNShjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKQEAgLTMzMDQs
NyArNDAzOCw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1CiAgICAgdmlydHVh
bCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3QgewogICAg
ICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwgY29uc3Qg
UGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9Cisg
ICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiBjdXJy
ZW50X3ZhbHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1J
dGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAgICAgLy8gSGF2
aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKICAg
ICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4K
QEAgLTMzNDgsOCArNDA4Miw4IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1CiAK
ICAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkpCi0g
ICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8s
ICpjdXJyZW50M18sCi0gICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVudDVfKTsKKyAgICAg
ICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVu
dDJfLCAqY3VycmVudDNfLAorICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1cnJlbnQ1XykpOwog
ICAgIH0KICAgICBib29sIEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQg
aXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAg
LTMzODMsNyArNDExNyw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1CiAgICAg
Y29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+OjppdGVyYXRvciBiZWdpbjVfOwogICAg
IGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgZW5kNV87CiAgICAg
dHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+OjppdGVyYXRvciBjdXJyZW50NV87Ci0gICAgUGFy
YW1UeXBlIGN1cnJlbnRfdmFsdWVfOworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50
X3ZhbHVlXzsKICAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1OjpJdGVy
YXRvcgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRl
ZC4KQEAgLTM0MDAsMTAgKzQxMzQsMTAgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjUKIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgdHlwZW5hbWUgVDY+CiBjbGFzcyBDYXJ0ZXNpYW5Q
cm9kdWN0R2VuZXJhdG9yNgotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6
OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LAorICAgIDogcHVibGljIFBhcmFtR2VuZXJh
dG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwKICAgICAg
ICAgVDY+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNj4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNj4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0
b3I2KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLApAQCAtMzQ4MSw3ICs0
MjE1LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjYKICAgICB2aXJ0dWFsIFBh
cmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7CiAgICAgICBy
ZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJh
bVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KKyAgICB2
aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRf
dmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJh
dG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAvLyBIYXZpbmcg
dGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgogICAgICAg
Ly8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0LgpAQCAt
MzUyOSw4ICs0MjYzLDggQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjYKIAogICAg
IHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKICAgICAgIGlmICghQXRFbmQoKSkKLSAgICAg
ICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1
cnJlbnQzXywKLSAgICAgICAgICAgICpjdXJyZW50NF8sICpjdXJyZW50NV8sICpjdXJyZW50Nl8p
OworICAgICAgICBjdXJyZW50X3ZhbHVlXy5yZXNldChuZXcgUGFyYW1UeXBlKCpjdXJyZW50MV8s
ICpjdXJyZW50Ml8sICpjdXJyZW50M18sCisgICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVu
dDVfLCAqY3VycmVudDZfKSk7CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAg
ICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdo
ZW4gZWl0aGVyIG9mIHRoZQpAQCAtMzU2OCw3ICs0MzAyLDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjYKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0
ZXJhdG9yIGJlZ2luNl87CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDY+Ojpp
dGVyYXRvciBlbmQ2XzsKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0ZXJhdG9y
IGN1cnJlbnQ2XzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0
cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjY6Okl0ZXJhdG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3Np
Z25tZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtMzU4NiwxMCArNDMyMCwxMCBAQCBjbGFzcyBDYXJ0
ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNgogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICB0eXBlbmFtZSBU
NiwgdHlwZW5hbWUgVDc+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNwotICAgIDog
cHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0
aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAogICAgICAgICBUNz4gPiB7CiAgcHVi
bGljOgotICB0eXBlZGVmIDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4g
UGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDc+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNyhjb25z
dCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+
JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKQEAgLTM2NzUsNyArNDQwOSw3IEBA
IGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3CiAgICAgdmlydHVhbCBQYXJhbUl0ZXJh
dG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3QgewogICAgICAgcmV0dXJuIG5l
dyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBD
dXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9CisgICAgdmlydHVhbCBj
b25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiBjdXJyZW50X3ZhbHVlXy5n
ZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRvckludGVy
ZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAgICAgLy8gSGF2aW5nIHRoZSBzYW1l
IGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKICAgICAgIC8vIGl0ZXJh
dG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KQEAgLTM3MjcsOCAr
NDQ2MSw4IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3CiAKICAgICB2b2lkIENv
bXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkpCi0gICAgICAgIGN1cnJl
bnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18s
Ci0gICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVudDVfLCAqY3VycmVudDZfLCAqY3VycmVu
dDdfKTsKKyAgICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVu
dDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAorICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1
cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1cnJlbnQ3XykpOwogICAgIH0KICAgICBib29sIEF0RW5k
KCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUgZW5k
IG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAgLTM3NzAsNyArNDUwNCw3IEBAIGNs
YXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1H
ZW5lcmF0b3I8VDc+OjppdGVyYXRvciBiZWdpbjdfOwogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQ3Pjo6aXRlcmF0b3IgZW5kN187CiAgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0
b3I8VDc+OjppdGVyYXRvciBjdXJyZW50N187Ci0gICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFsdWVf
OworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsKICAgfTsgIC8vIGNs
YXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3OjpJdGVyYXRvcgogCiAgIC8vIE5vIGltcGxl
bWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTM3ODksMTAgKzQ1MjMs
MTAgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjcKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUs
CiAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOD4KIGNsYXNzIENhcnRl
c2lhblByb2R1Y3RHZW5lcmF0b3I4Ci0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZh
Y2U8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAorICAgIDogcHVibGljIFBh
cmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsCiAgICAgICAgIFQ3LCBUOD4gPiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0
dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+IFBhcmFtVHlwZTsKKyAgdHlwZWRl
ZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4gUGFyYW1U
eXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4KGNvbnN0IFBhcmFtR2VuZXJhdG9y
PFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJh
bUdlbmVyYXRvcjxUMz4mIGczLApAQCAtMzg4OCw3ICs0NjIyLDcgQEAgY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjgKICAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFy
YW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7CiAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlz
KTsKICAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7
IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSog
Q3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmly
dHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4m
IG90aGVyKSBjb25zdCB7CiAgICAgICAvLyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3Ig
Z3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgogICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNh
bWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0LgpAQCAtMzk0NCw4ICs0Njc4LDggQEAgY2xhc3Mg
Q2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjgKIAogICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1
ZSgpIHsKICAgICAgIGlmICghQXRFbmQoKSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJh
bVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKLSAgICAgICAgICAgICpj
dXJyZW50NF8sICpjdXJyZW50NV8sICpjdXJyZW50Nl8sICpjdXJyZW50N18sICpjdXJyZW50OF8p
OworICAgICAgICBjdXJyZW50X3ZhbHVlXy5yZXNldChuZXcgUGFyYW1UeXBlKCpjdXJyZW50MV8s
ICpjdXJyZW50Ml8sICpjdXJyZW50M18sCisgICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVu
dDVfLCAqY3VycmVudDZfLCAqY3VycmVudDdfLCAqY3VycmVudDhfKSk7CiAgICAgfQogICAgIGJv
b2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0
IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQpAQCAtMzk5MSw3ICs0NzI1
LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjgKICAgICBjb25zdCB0eXBlbmFt
ZSBQYXJhbUdlbmVyYXRvcjxUOD46Oml0ZXJhdG9yIGJlZ2luOF87CiAgICAgY29uc3QgdHlwZW5h
bWUgUGFyYW1HZW5lcmF0b3I8VDg+OjppdGVyYXRvciBlbmQ4XzsKICAgICB0eXBlbmFtZSBQYXJh
bUdlbmVyYXRvcjxUOD46Oml0ZXJhdG9yIGN1cnJlbnQ4XzsKLSAgICBQYXJhbVR5cGUgY3VycmVu
dF92YWx1ZV87CisgICAgbGlua2VkX3B0cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9
OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjg6Okl0ZXJhdG9yCiAKICAgLy8g
Tm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtNDAxMSwx
MCArNDc0NSwxMCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBl
bmFtZSBUNSwKICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBl
bmFtZSBUOT4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5Ci0gICAgOiBwdWJsaWMg
UGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LAorICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCiAgICAgICAgIFQ3LCBUOCwgVDk+ID4gewogIHB1
YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOT4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1
Y3RHZW5lcmF0b3I5KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLApAQCAt
NDExNyw3ICs0ODUxLDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjkKICAgICB2
aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7
CiAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBj
b25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87
IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJu
IGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQ
YXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAv
LyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhl
cgogICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25j
YXN0LgpAQCAtNDE3Nyw5ICs0OTExLDkgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjkKIAogICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKICAgICAgIGlmICghQXRFbmQo
KSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJl
bnQyXywgKmN1cnJlbnQzXywKKyAgICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFt
VHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAogICAgICAgICAgICAgKmN1
cnJlbnQ0XywgKmN1cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1cnJlbnQ3XywgKmN1cnJlbnQ4XywK
LSAgICAgICAgICAgICpjdXJyZW50OV8pOworICAgICAgICAgICAgKmN1cnJlbnQ5XykpOwogICAg
IH0KICAgICBib29sIEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRl
cmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAgLTQy
MjksNyArNDk2Myw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5CiAgICAgY29u
c3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDk+OjppdGVyYXRvciBiZWdpbjlfOwogICAgIGNv
bnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ5Pjo6aXRlcmF0b3IgZW5kOV87CiAgICAgdHlw
ZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDk+OjppdGVyYXRvciBjdXJyZW50OV87Ci0gICAgUGFyYW1U
eXBlIGN1cnJlbnRfdmFsdWVfOworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3Zh
bHVlXzsKICAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5OjpJdGVyYXRv
cgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4K
QEAgLTQyNTAsMTAgKzQ5ODQsMTAgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjkK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFt
ZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMD4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RH
ZW5lcmF0b3IxMAotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRv
ckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAogICAg
ICAgICBUNywgVDgsIFQ5LCBUMTA+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVw
bGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwPiBQYXJhbVR5cGU7Cisg
IHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTA+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMTAoY29u
c3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQy
PiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBAIC00MzY0LDcgKzUwOTgsNyBA
QCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMTAKICAgICB2aXJ0dWFsIFBhcmFtSXRl
cmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7CiAgICAgICByZXR1cm4g
bmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUq
IEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KKyAgICB2aXJ0dWFs
IGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfdmFsdWVf
LmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50
ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAvLyBIYXZpbmcgdGhlIHNh
bWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgogICAgICAgLy8gaXRl
cmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0LgpAQCAtNDQyOCw5
ICs1MTYyLDkgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjEwCiAKICAgICB2b2lk
IENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkpCi0gICAgICAgIGN1
cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50
M18sCisgICAgICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJhbVR5cGUoKmN1cnJlbnQx
XywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKICAgICAgICAgICAgICpjdXJyZW50NF8sICpjdXJy
ZW50NV8sICpjdXJyZW50Nl8sICpjdXJyZW50N18sICpjdXJyZW50OF8sCi0gICAgICAgICAgICAq
Y3VycmVudDlfLCAqY3VycmVudDEwXyk7CisgICAgICAgICAgICAqY3VycmVudDlfLCAqY3VycmVu
dDEwXykpOwogICAgIH0KICAgICBib29sIEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVz
dCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBv
ZiB0aGUKQEAgLTQ0ODQsNyArNTIxOCw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0
b3IxMAogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxMD46Oml0ZXJhdG9yIGJl
Z2luMTBfOwogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxMD46Oml0ZXJhdG9y
IGVuZDEwXzsKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMTA+OjppdGVyYXRvciBjdXJy
ZW50MTBfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKKyAgICBsaW5rZWRfcHRyPFBh
cmFtVHlwZT4gY3VycmVudF92YWx1ZV87CiAgIH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0
R2VuZXJhdG9yMTA6Okl0ZXJhdG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25t
ZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtNDUxNSw4ICs1MjQ5LDggQEAgY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEhvbGRlcjIgewogQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjIoY29uc3QgR2VuZXJhdG9y
MSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyKQogICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpIHt9
CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gIG9wZXJhdG9yIFBhcmFt
R2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyPiA+KCkgY29uc3QgewotICAgIHJldHVybiBQ
YXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMj4gPigKKyAgb3BlcmF0b3IgUGFyYW1H
ZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyPiA+KCkgY29uc3QgeworICAgIHJldHVy
biBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDI+ID4oCiAgICAgICAgIG5l
dyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMjxUMSwgVDI+KAogICAgICAgICBzdGF0aWNfY2Fz
dDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdl
bmVyYXRvcjxUMj4gPihnMl8pKSk7CkBAIC00NTM3LDggKzUyNzEsOCBAQCBDYXJ0ZXNpYW5Qcm9k
dWN0SG9sZGVyMyhjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAg
ICAgY29uc3QgR2VuZXJhdG9yMyYgZzMpCiAgICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhn
Mykge30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+
Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMz4gPigp
IGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIs
IFQzPiA+KAorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwg
VDIsIFQzPiA+KCkgY29uc3QgeworICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5n
Ojp0dXBsZTxUMSwgVDIsIFQzPiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVy
YXRvcjM8VDEsIFQyLCBUMz4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQx
PiA+KGcxXyksCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyks
CkBAIC00NTYyLDggKzUyOTYsOCBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNChjb25zdCBHZW5l
cmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgY29uc3QgR2VuZXJhdG9yMyYg
ZzMsIGNvbnN0IEdlbmVyYXRvcjQmIGc0KQogICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBnM18o
ZzMpLCBnNF8oZzQpIHt9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5
cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3Rk
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5l
cmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPigKKyAgb3BlcmF0b3IgUGFyYW1H
ZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+ID4oKSBjb25zdCB7Cisg
ICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0
PiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQ8VDEsIFQyLCBUMywg
VDQ+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLAogICAg
ICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pLApAQCAtNDU4OSw4ICs1
MzIzLDggQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjUoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNv
bnN0IEdlbmVyYXRvcjImIGcyLAogICAgIGNvbnN0IEdlbmVyYXRvcjMmIGczLCBjb25zdCBHZW5l
cmF0b3I0JiBnNCwgY29uc3QgR2VuZXJhdG9yNSYgZzUpCiAgICAgICA6IGcxXyhnMSksIGcyXyhn
MiksIGczXyhnMyksIGc0XyhnNCksIGc1XyhnNSkge30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KLSAg
b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+
ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEs
IFQyLCBUMywgVDQsIFQ1PiA+KAorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5n
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+ID4oKSBjb25zdCB7CisgICAgcmV0dXJuIFBhcmFt
R2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gPigKICAgICAg
ICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1PFQxLCBUMiwgVDMsIFQ0LCBUNT4oCiAg
ICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcxXyksCiAgICAgICAgIHN0
YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyksCkBAIC00NjIwLDggKzUzNTQsOCBA
QCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNihjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2Vu
ZXJhdG9yMiYgZzIsCiAgICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhnMyksIGc0XyhnNCks
IGc1XyhnNSksIGc2XyhnNikge30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICAgIHR5cGVuYW1l
IFQ2PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDY+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0
ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4gPigKKyAgb3BlcmF0b3IgUGFyYW1HZW5l
cmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4gPigpIGNvbnN0
IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNj4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVy
YXRvcjxUMT4gPihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4g
PihnMl8pLApAQCAtNDY1Myw5ICs1Mzg3LDkgQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjcoY29u
c3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICAgICAgOiBnMV8oZzEp
LCBnMl8oZzIpLCBnM18oZzMpLCBnNF8oZzQpLCBnNV8oZzUpLCBnNl8oZzYpLCBnN18oZzcpIHt9
CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+Ci0g
IG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwKICAgICAgIFQ3PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJh
bUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PiA+KAor
ICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNz4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1H
ZW5lcmF0b3I8VDE+ID4oZzFfKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8
VDI+ID4oZzJfKSwKQEAgLTQ2OTEsOSArNTQyNSw5IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXI4
KGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKICAgICAgICAgICBn
OF8oZzgpIHt9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5h
bWUgVDcsIHR5cGVuYW1lIFQ4PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LAorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywKICAgICAgIFQ4
PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4gPigKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0
b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiA+KAog
ICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjg8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4PigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4o
ZzFfKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwKQEAg
LTQ3MzIsOSArNTQ2Niw5IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXI5KGNvbnN0IEdlbmVyYXRv
cjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKICAgICAgICAgICBnOV8oZzkpIHt9CiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
NCwgdHlwZW5hbWUgVDUsCiAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1l
IFQ4LCB0eXBlbmFtZSBUOT4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBs
ZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsCisgIG9wZXJhdG9yIFBhcmFtR2VuZXJh
dG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwKICAg
ICAgIFQ5PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwKKyAgICByZXR1cm4gUGFyYW1HZW5l
cmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LAog
ICAgICAgICBUOT4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5PFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+KAogICAgICAgICBzdGF0aWNfY2FzdDxQ
YXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLApAQCAtNDc3NiwxMCArNTUxMCwxMCBAQCBDYXJ0ZXNp
YW5Qcm9kdWN0SG9sZGVyMTAoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjIm
IGcyLAogICAgICAgICAgIGc5XyhnOSksIGcxMF8oZzEwKSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1
LAogICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUg
VDksIHR5cGVuYW1lIFQxMD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBs
ZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsCi0gICAgICBUOSwgVDEwPiA+KCkgY29u
c3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwKLSAgICAgICAgVDksIFQxMD4gPigKKyAgb3BlcmF0b3IgUGFy
YW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwKKyAgICAgIFQxMD4gPigpIGNvbnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0
b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwK
KyAgICAgICAgVDEwPiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjEw
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksCiAgICAgICAgICAgICBUMTA+KAog
ICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLApAQCAtNDgxMCwx
MSArNTU0NCw5IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXIxMChjb25zdCBHZW5lcmF0b3IxJiBn
MSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgIGNvbnN0IEdlbmVyYXRvcjEwIGcxMF87CiB9OyAg
Ly8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjEwCiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X0NPTUJJTkUKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCiAKIH0gIC8vIG5hbWVzcGFj
ZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotI2VuZGlmICAvLyAgR1RFU1Rf
SEFTX1BBUkFNX1RFU1QKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFM
X0dURVNUX1BBUkFNX1VUSUxfR0VORVJBVEVEX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJh
dGVkLmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCmluZGV4IGJhZWRmYmMyZDdlODM0
MWI1YjU1OWQ5Y2UzM2I4ZDg3NDUzZGVkNDIuLjMwZGZmZTQzYzNjNjc4NTY4NTI0NmRiNWYzMWQx
OTQ3YzhhMjJjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUv
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC1nZW5lcmF0ZWQuaC5wdW1wCkBAIC0yOSw4ICsyOSw3IEBAICR2YXIgbWF4dHVwbGUgPSAx
MCAgJCQgTWF4aW11bSBudW1iZXIgb2YgQ29tYmluZSBhcmd1bWVudHMgd2Ugd2FudCB0byBzdXBw
b3J0LgogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8K
LS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKwogCiAvLyBUeXBlIGFu
ZCBmdW5jdGlvbiB1dGlsaXRpZXMgZm9yIGltcGxlbWVudGluZyBwYXJhbWV0ZXJpemVkIHRlc3Rz
LgogLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBhIFNDUklQVC4gIERPIE5PVCBFRElUIEJZ
IEhBTkQhCkBAIC0zOSwxOSArMzgsMTYgQEAgJHZhciBtYXh0dXBsZSA9IDEwICAkJCBNYXhpbXVt
IG51bWJlciBvZiBDb21iaW5lIGFyZ3VtZW50cyB3ZSB3YW50IHRvIHN1cHBvcnQuCiAvLyBhbmQg
YXQgbW9zdCAkbWF4dHVwbGUgYXJndW1lbnRzIGluIENvbWJpbmUuIFBsZWFzZSBjb250YWN0CiAv
LyBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20gaWYgeW91IG5lZWQgbW9yZS4K
IC8vIFBsZWFzZSBub3RlIHRoYXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgdG8gQ29tYmluZSBp
cyBsaW1pdGVkCi0vLyBieSB0aGUgbWF4aW11bSBhcml0eSBvZiB0aGUgaW1wbGVtZW50YXRpb24g
b2YgdHIxOjp0dXBsZSB3aGljaCBpcworLy8gYnkgdGhlIG1heGltdW0gYXJpdHkgb2YgdGhlIGlt
cGxlbWVudGF0aW9uIG9mIHR1cGxlIHdoaWNoIGlzCiAvLyBjdXJyZW50bHkgc2V0IGF0ICRtYXh0
dXBsZS4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdU
RVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFURURfSF8K
ICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0dF
TkVSQVRFRF9IXwogCi0vLyBzY3JpcHRzL2Z1c2VfZ3Rlc3QucHkgZGVwZW5kcyBvbiBndGVzdCdz
IG93biBoZWFkZXIgYmVpbmcgI2luY2x1ZGVkCi0vLyAqdW5jb25kaXRpb25hbGx5Ki4gIFRoZXJl
Zm9yZSB0aGVzZSAjaW5jbHVkZXMgY2Fubm90IGJlIG1vdmVkCi0vLyBpbnNpZGUgI2lmIEdURVNU
X0hBU19QQVJBTV9URVNULgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0
aWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+Ci0KLSNpZiBHVEVT
VF9IQVNfUEFSQU1fVEVTVAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0
aWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKIG5hbWVzcGFj
ZSB0ZXN0aW5nIHsKIApAQCAtNTksOCArNTUsOCBAQCBuYW1lc3BhY2UgdGVzdGluZyB7CiAvLyBp
bmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3
YXJkSXRlcmF0b3I+CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ci0gICAgdHlwZW5hbWUgOjpz
dGQ6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiBWYWx1ZXNJ
bigKLSAgICAgICAgRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKTsK
KyAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0
ZXJhdG9yPjo6dmFsdWVfdHlwZT4KK1ZhbHVlc0luKEZvcndhcmRJdGVyYXRvciBiZWdpbiwgRm9y
d2FyZEl0ZXJhdG9yIGVuZCk7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KIGlu
dGVybmFsOjpQYXJhbUdlbmVyYXRvcjxUPiBWYWx1ZXNJbihjb25zdCBUICgmYXJyYXkpW05dKTsK
QEAgLTcyLDM2ICs2OCwyMyBAQCBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dHlwZW5hbWUgQ29u
dGFpbmVyOjp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIC8v
IFVzZWQgaW4gdGhlIFZhbHVlcygpIGZ1bmN0aW9uIHRvIHByb3ZpZGUgcG9seW1vcnBoaWMgY2Fw
YWJpbGl0aWVzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxPgotY2xhc3MgVmFsdWVBcnJheTEgewot
IHB1YmxpYzoKLSAgZXhwbGljaXQgVmFsdWVBcnJheTEoVDEgdjEpIDogdjFfKHYxKSB7fQotCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsgcmV0dXJuIFZhbHVlc0luKCZ2MV8sICZ2MV8gKyAxKTsgfQotCi0gcHJpdmF0ZToKLSAg
Ly8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lk
IG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MSYgb3RoZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsK
LX07Ci0KLSRyYW5nZSBpIDIuLm4KKyRyYW5nZSBpIDEuLm4KICRmb3IgaSBbWwogJHJhbmdlIGog
MS4uaQogCiB0ZW1wbGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIFQkal1dPgogY2xhc3MgVmFsdWVB
cnJheSRpIHsKICBwdWJsaWM6Ci0gIFZhbHVlQXJyYXkkaSgkZm9yIGosIFtbVCRqIHYkal1dKSA6
ICRmb3IgaiwgW1t2JChqKV8odiRqKV1dIHt9CisgICRpZiBpPT0xIFtbZXhwbGljaXQgXV1WYWx1
ZUFycmF5JGkoJGZvciBqLCBbW1QkaiB2JGpdXSkgOiAkZm9yIGosIFtbdiQoailfKHYkaildXSB7
fQogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7JGZvciBqLCBbW3YkKGopX11dfTsK
KyAgICBjb25zdCBUIGFycmF5W10gPSB7JGZvciBqLCBbW3N0YXRpY19jYXN0PFQ+KHYkKGopXyld
XX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkkaShj
b25zdCBWYWx1ZUFycmF5JGkmIG90aGVyKSA6ICRmb3IgaiwgW1t2JChqKV8ob3RoZXIudiQoailf
KV1dIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQg
aXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkkaSYgb3Ro
ZXIpOwpAQCAtMTE1LDcgKzk4LDcgQEAgJGZvciBqIFtbCiAKIF1dCiAKLSNpZiBHVEVTVF9IQVNf
Q09NQklORQorIyBpZiBHVEVTVF9IQVNfQ09NQklORQogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJ
T04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KIC8vCiAvLyBHZW5lcmF0ZXMgdmFsdWVzIGZy
b20gdGhlIENhcnRlc2lhbiBwcm9kdWN0IG9mIHZhbHVlcyBwcm9kdWNlZApAQCAtMTI4LDkgKzEx
MSw5IEBAICRyYW5nZSBrIDIuLmkKIAogdGVtcGxhdGUgPCRmb3IgaiwgW1t0eXBlbmFtZSBUJGpd
XT4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IkaQotICAgIDogcHVibGljIFBhcmFt
R2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4g
eworICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxl
PCRmb3IgaiwgW1tUJGpdXT4gPiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0cjE6OnR1
cGxlPCRmb3IgaiwgW1tUJGpdXT4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVw
bGU8JGZvciBqLCBbW1Qkal1dPiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVy
YXRvciRpKCRmb3IgaiwgW1tjb25zdCBQYXJhbUdlbmVyYXRvcjxUJGo+JiBnJGpdXSkKICAgICAg
IDogJGZvciBqLCBbW2ckKGopXyhnJGopXV0ge30KQEAgLTE4MCw3ICsxNjMsNyBAQCAkZm9yIGsg
W1sKICAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUo
KSBjb25zdCB7CiAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAg
dmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVu
dF92YWx1ZV87IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0
IHsgcmV0dXJuIGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFs
cyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7
CiAgICAgICAvLyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0
IHRoZSBvdGhlcgogICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2Ug
Y2FuIGRvd25jYXN0LgpAQCAtMjEyLDcgKzE5NSw3IEBAICRmb3IgayBbWwogCiAgICAgdm9pZCBD
b21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBjdXJy
ZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgkZm9yIGosIFtbKmN1cnJlbnQkKGopX11dKTsKKyAgICAg
ICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgkZm9yIGosIFtbKmN1cnJlbnQk
KGopX11dKSk7CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAvLyBXZSBt
dXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVy
IG9mIHRoZQpAQCAtMjM3LDcgKzIyMCw3IEBAICRmb3IgaiBbWwogICAgIHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQkaj46Oml0ZXJhdG9yIGN1cnJlbnQkKGopXzsKIF1dCiAKLSAgICBQYXJhbVR5
cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFs
dWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpOjpJdGVyYXRv
cgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4K
QEAgLTI2OSw4ICsyNTIsOCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyJGkgewogQ2Fy
dGVzaWFuUHJvZHVjdEhvbGRlciRpKCRmb3IgaiwgW1tjb25zdCBHZW5lcmF0b3IkaiYgZyRqXV0p
CiAgICAgICA6ICRmb3IgaiwgW1tnJChqKV8oZyRqKV1dIHt9CiAgIHRlbXBsYXRlIDwkZm9yIGos
IFtbdHlwZW5hbWUgVCRqXV0+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIx
Ojp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2Vu
ZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4oCisgIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4gPigpIGNv
bnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8JGZvciBq
LCBbW1Qkal1dPiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpPCRm
b3IgaiwgW1tUJGpdXT4oCiAkZm9yIGosW1sKIApAQCAtMjkxLDExICsyNzQsOSBAQCAkZm9yIGog
W1sKIAogXV0KIAotI2VuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQorIyBlbmRpZiAgLy8gR1RF
U1RfSEFTX0NPTUJJTkUKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3Bh
Y2UgdGVzdGluZwogCi0jZW5kaWYgIC8vICBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCiAjZW5kaWYg
IC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFU
RURfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgKaW5kZXggMGNiYjU4YzIxYjdi
ODljZDQ4YThkMWM1Y2I1MjBmMzExMzc0Y2RlMi4uZDY0ZjYyMGM0YzY3NDM0NjczYzBhNjFlMjM5
NjBiNjE1YzM0ZTc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgKQEAgLTI2
LDI4ICsyNiw0OSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKwogCiAv
LyBUeXBlIGFuZCBmdW5jdGlvbiB1dGlsaXRpZXMgZm9yIGltcGxlbWVudGluZyBwYXJhbWV0ZXJp
emVkIHRlc3RzLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5k
ZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0hfCiAjZGVm
aW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9IXwogCisj
aW5jbHVkZSA8Y3R5cGUuaD4KKwogI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPHNldD4K
ICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotLy8gc2NyaXB0cy9mdXNl
X2d0ZXN0LnB5IGRlcGVuZHMgb24gZ3Rlc3QncyBvd24gaGVhZGVyIGJlaW5nICNpbmNsdWRlZAot
Ly8gKnVuY29uZGl0aW9uYWxseSouICBUaGVyZWZvcmUgdGhlc2UgI2luY2x1ZGVzIGNhbm5vdCBi
ZSBtb3ZlZAotLy8gaW5zaWRlICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVC4KLSNpbmNsdWRlIDxn
dGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFs
L2d0ZXN0LWxpbmtlZF9wdHIuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0
Lmg+Ci0KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFs
L2d0ZXN0LWludGVybmFsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2Vk
X3B0ci5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC1wcmludGVycy5oIgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CisKKy8vIElu
cHV0IHRvIGEgcGFyYW1ldGVyaXplZCB0ZXN0IG5hbWUgZ2VuZXJhdG9yLCBkZXNjcmliaW5nIGEg
dGVzdCBwYXJhbWV0ZXIuCisvLyBDb25zaXN0cyBvZiB0aGUgcGFyYW1ldGVyIHZhbHVlIGFuZCB0
aGUgaW50ZWdlciBwYXJhbWV0ZXIgaW5kZXguCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgor
c3RydWN0IFRlc3RQYXJhbUluZm8geworICBUZXN0UGFyYW1JbmZvKGNvbnN0IFBhcmFtVHlwZSYg
YV9wYXJhbSwgc2l6ZV90IGFuX2luZGV4KSA6CisgICAgcGFyYW0oYV9wYXJhbSksCisgICAgaW5k
ZXgoYW5faW5kZXgpIHt9CisgIFBhcmFtVHlwZSBwYXJhbTsKKyAgc2l6ZV90IGluZGV4OworfTsK
KworLy8gQSBidWlsdGluIHBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lIGdlbmVyYXRvciB3aGljaCBy
ZXR1cm5zIHRoZSByZXN1bHQgb2YKKy8vIHRlc3Rpbmc6OlByaW50VG9TdHJpbmcuCitzdHJ1Y3Qg
UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSB7CisgIHRlbXBsYXRlIDxjbGFzcyBQYXJhbVR5cGU+Cisg
IHN0ZDo6c3RyaW5nIG9wZXJhdG9yKCkoY29uc3QgVGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+JiBp
bmZvKSBjb25zdCB7CisgICAgcmV0dXJuIFByaW50VG9TdHJpbmcoaW5mby5wYXJhbSk7CisgIH0K
K307CisKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9O
IC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCkBAIC01Nyw3ICs3OCw3IEBAIG5hbWVzcGFjZSBp
bnRlcm5hbCB7CiAvLyBURVNUX1AgbWFjcm8gaXMgdXNlZCB0byBkZWZpbmUgdHdvIHRlc3RzIHdp
dGggdGhlIHNhbWUgbmFtZQogLy8gYnV0IGluIGRpZmZlcmVudCBuYW1lc3BhY2VzLgogR1RFU1Rf
QVBJXyB2b2lkIFJlcG9ydEludmFsaWRUZXN0Q2FzZVR5cGUoY29uc3QgY2hhciogdGVzdF9jYXNl
X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBmaWxlLCBpbnQgbGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbik7CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZT4gY2xhc3MgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U7CiB0ZW1wbGF0ZSA8dHlwZW5hbWU+IGNs
YXNzIFBhcmFtR2VuZXJhdG9yOwpAQCAtMTcxLDcgKzE5Miw3IEBAIGNsYXNzIFBhcmFtR2VuZXJh
dG9yIHsKICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoaW1wbF8tPkVu
ZCgpKTsgfQogCiAgcHJpdmF0ZToKLSAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjxj
b25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiA+IGltcGxfOworICBsaW5rZWRfcHRyPGNv
bnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+ID4gaW1wbF87CiB9OwogCiAvLyBHZW5lcmF0
ZXMgdmFsdWVzIGZyb20gYSByYW5nZSBvZiB0d28gY29tcGFyYWJsZSB2YWx1ZXMuIENhbiBiZSB1
c2VkIHRvCkBAIC0yMDUsNyArMjI2LDcgQEAgY2xhc3MgUmFuZ2VHZW5lcmF0b3IgOiBwdWJsaWMg
UGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4gewogICAgICAgcmV0dXJuIGJhc2VfOwogICAgIH0K
ICAgICB2aXJ0dWFsIHZvaWQgQWR2YW5jZSgpIHsKLSAgICAgIHZhbHVlXyA9IHZhbHVlXyArIHN0
ZXBfOworICAgICAgdmFsdWVfID0gc3RhdGljX2Nhc3Q8VD4odmFsdWVfICsgc3RlcF8pOwogICAg
ICAgaW5kZXhfKys7CiAgICAgfQogICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxU
PiogQ2xvbmUoKSBjb25zdCB7CkBAIC0yNDIsNyArMjYzLDcgQEAgY2xhc3MgUmFuZ2VHZW5lcmF0
b3IgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4gewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFQmIGVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBJbmNyZW1lbnRUJiBzdGVwKSB7CiAgICAgaW50IGVuZF9pbmRleCA9IDA7Ci0g
ICAgZm9yIChUIGkgPSBiZWdpbjsgaSA8IGVuZDsgaSA9IGkgKyBzdGVwKQorICAgIGZvciAoVCBp
ID0gYmVnaW47IGkgPCBlbmQ7IGkgPSBzdGF0aWNfY2FzdDxUPihpICsgc3RlcCkpCiAgICAgICBl
bmRfaW5kZXgrKzsKICAgICByZXR1cm4gZW5kX2luZGV4OwogICB9CkBAIC0yODUsNyArMzA2LDcg
QEAgY2xhc3MgVmFsdWVzSW5JdGVyYXRvclJhbmdlR2VuZXJhdG9yIDogcHVibGljIFBhcmFtR2Vu
ZXJhdG9ySW50ZXJmYWNlPFQ+IHsKICAgIHB1YmxpYzoKICAgICBJdGVyYXRvcihjb25zdCBQYXJh
bUdlbmVyYXRvckludGVyZmFjZTxUPiogYmFzZSwKICAgICAgICAgICAgICB0eXBlbmFtZSBDb250
YWluZXJUeXBlOjpjb25zdF9pdGVyYXRvciBpdGVyYXRvcikKLSAgICAgICAgOiAgYmFzZV8oYmFz
ZSksIGl0ZXJhdG9yXyhpdGVyYXRvcikge30KKyAgICAgICAgOiBiYXNlXyhiYXNlKSwgaXRlcmF0
b3JfKGl0ZXJhdG9yKSB7fQogICAgIHZpcnR1YWwgfkl0ZXJhdG9yKCkge30KIAogICAgIHZpcnR1
YWwgY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4qIEJhc2VHZW5lcmF0b3IoKSBjb25z
dCB7CkBAIC0zNDQsNiArMzY1LDM3IEBAIGNsYXNzIFZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVy
YXRvciA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiB7CiAgIGNvbnN0IENvbnRh
aW5lclR5cGUgY29udGFpbmVyXzsKIH07ICAvLyBjbGFzcyBWYWx1ZXNJbkl0ZXJhdG9yUmFuZ2VH
ZW5lcmF0b3IKIAorLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVT
RVIgQ09ERS4KKy8vCisvLyBEZWZhdWx0IHBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lIGdlbmVyYXRv
ciwgcmV0dXJucyBhIHN0cmluZyBjb250YWluaW5nIHRoZQorLy8gaW50ZWdlciB0ZXN0IHBhcmFt
ZXRlciBpbmRleC4KK3RlbXBsYXRlIDxjbGFzcyBQYXJhbVR5cGU+CitzdGQ6OnN0cmluZyBEZWZh
dWx0UGFyYW1OYW1lKGNvbnN0IFRlc3RQYXJhbUluZm88UGFyYW1UeXBlPiYgaW5mbykgeworICBN
ZXNzYWdlIG5hbWVfc3RyZWFtOworICBuYW1lX3N0cmVhbSA8PCBpbmZvLmluZGV4OworICByZXR1
cm4gbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCk7Cit9CisKKy8vIElOVEVSTkFMIElNUExFTUVOVEFU
SU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCisvLworLy8gUGFyYW1ldGVyaXplZCB0ZXN0
IG5hbWUgb3ZlcmxvYWQgaGVscGVycywgd2hpY2ggaGVscCB0aGUKKy8vIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QIG1hY3JvIGNob29zZSBiZXR3ZWVuIHRoZSBkZWZhdWx0IHBhcmFtZXRlcml6ZWQK
Ky8vIHRlc3QgbmFtZSBnZW5lcmF0b3IgYW5kIHVzZXIgcGFyYW0gbmFtZSBnZW5lcmF0b3IuCit0
ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlLCBjbGFzcyBQYXJhbU5hbWVHZW5GdW5jdG9yPgorUGFy
YW1OYW1lR2VuRnVuY3RvciBHZXRQYXJhbU5hbWVHZW4oUGFyYW1OYW1lR2VuRnVuY3RvciBmdW5j
KSB7CisgIHJldHVybiBmdW5jOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgorc3Ry
dWN0IFBhcmFtTmFtZUdlbkZ1bmMgeworICB0eXBlZGVmIHN0ZDo6c3RyaW5nIFR5cGUoY29uc3Qg
VGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+Jik7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1U
eXBlPgordHlwZW5hbWUgUGFyYW1OYW1lR2VuRnVuYzxQYXJhbVR5cGU+OjpUeXBlICpHZXRQYXJh
bU5hbWVHZW4oKSB7CisgIHJldHVybiBEZWZhdWx0UGFyYW1OYW1lOworfQorCiAvLyBJTlRFUk5B
TCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgogLy8KIC8vIFN0b3Jl
cyBhIHBhcmFtZXRlciB2YWx1ZSBhbmQgbGF0ZXIgY3JlYXRlcyB0ZXN0cyBwYXJhbWV0ZXJpemVk
IHdpdGggdGhhdApAQCAtNDE2LDcgKzQ2OCw3IEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2Fz
ZUluZm9CYXNlIHsKICAgdmlydHVhbCB+UGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UoKSB7
fQogCiAgIC8vIEJhc2UgcGFydCBvZiB0ZXN0IGNhc2UgbmFtZSBmb3IgZGlzcGxheSBwdXJwb3Nl
cy4KLSAgdmlydHVhbCBjb25zdCBTdHJpbmcmIEdldFRlc3RDYXNlTmFtZSgpIGNvbnN0ID0gMDsK
KyAgdmlydHVhbCBjb25zdCBzdGQ6OnN0cmluZyYgR2V0VGVzdENhc2VOYW1lKCkgY29uc3QgPSAw
OwogICAvLyBUZXN0IGNhc2UgaWQgdG8gdmVyaWZ5IGlkZW50aXR5LgogICB2aXJ0dWFsIFR5cGVJ
ZCBHZXRUZXN0Q2FzZVR5cGVJZCgpIGNvbnN0ID0gMDsKICAgLy8gVW5pdFRlc3QgY2xhc3MgaW52
b2tlcyB0aGlzIG1ldGhvZCB0byByZWdpc3RlciB0ZXN0cyBpbiB0aGlzCkBAIC00NDgsMTIgKzUw
MCwxNCBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvIDogcHVibGljIFBhcmFtZXRl
cml6ZWRUZXN0Q2FzZUluZm9CYXNlIHsKICAgdHlwZWRlZiB0eXBlbmFtZSBUZXN0Q2FzZTo6UGFy
YW1UeXBlIFBhcmFtVHlwZTsKICAgLy8gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gaW5zdGFu
Y2Ugb2YgYXBwcm9wcmlhdGUgZ2VuZXJhdG9yIHR5cGUuCiAgIHR5cGVkZWYgUGFyYW1HZW5lcmF0
b3I8UGFyYW1UeXBlPihHZW5lcmF0b3JDcmVhdGlvbkZ1bmMpKCk7CisgIHR5cGVkZWYgdHlwZW5h
bWUgUGFyYW1OYW1lR2VuRnVuYzxQYXJhbVR5cGU+OjpUeXBlIFBhcmFtTmFtZUdlbmVyYXRvckZ1
bmM7CiAKLSAgZXhwbGljaXQgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbyhjb25zdCBjaGFyKiBu
YW1lKQotICAgICAgOiB0ZXN0X2Nhc2VfbmFtZV8obmFtZSkge30KKyAgZXhwbGljaXQgUGFyYW1l
dGVyaXplZFRlc3RDYXNlSW5mbygKKyAgICAgIGNvbnN0IGNoYXIqIG5hbWUsIENvZGVMb2NhdGlv
biBjb2RlX2xvY2F0aW9uKQorICAgICAgOiB0ZXN0X2Nhc2VfbmFtZV8obmFtZSksIGNvZGVfbG9j
YXRpb25fKGNvZGVfbG9jYXRpb24pIHt9CiAKICAgLy8gVGVzdCBjYXNlIGJhc2UgbmFtZSBmb3Ig
ZGlzcGxheSBwdXJwb3Nlcy4KLSAgdmlydHVhbCBjb25zdCBTdHJpbmcmIEdldFRlc3RDYXNlTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIHRlc3RfY2FzZV9uYW1lXzsgfQorICB2aXJ0dWFsIGNvbnN0IHN0
ZDo6c3RyaW5nJiBHZXRUZXN0Q2FzZU5hbWUoKSBjb25zdCB7IHJldHVybiB0ZXN0X2Nhc2VfbmFt
ZV87IH0KICAgLy8gVGVzdCBjYXNlIGlkIHRvIHZlcmlmeSBpZGVudGl0eS4KICAgdmlydHVhbCBU
eXBlSWQgR2V0VGVzdENhc2VUeXBlSWQoKSBjb25zdCB7IHJldHVybiBHZXRUeXBlSWQ8VGVzdENh
c2U+KCk7IH0KICAgLy8gVEVTVF9QIG1hY3JvIHVzZXMgQWRkVGVzdFBhdHRlcm4oKSB0byByZWNv
cmQgaW5mb3JtYXRpb24KQEAgLTQ3MSwxMSArNTI1LDEyIEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRU
ZXN0Q2FzZUluZm8gOiBwdWJsaWMgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UgewogICB9
CiAgIC8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIG1hY3JvIHVzZXMgQWRkR2VuZXJhdG9yKCkg
dG8gcmVjb3JkIGluZm9ybWF0aW9uCiAgIC8vIGFib3V0IGEgZ2VuZXJhdG9yLgotICBpbnQgQWRk
VGVzdENhc2VJbnN0YW50aWF0aW9uKGNvbnN0IGNoYXIqIGluc3RhbnRpYXRpb25fbmFtZSwKKyAg
aW50IEFkZFRlc3RDYXNlSW5zdGFudGlhdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgaW5zdGFudGlh
dGlvbl9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvckNyZWF0
aW9uRnVuYyogZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiAvKiBmaWxlICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKiBsaW5l
ICovKSB7Ci0gICAgaW5zdGFudGlhdGlvbnNfLnB1c2hfYmFjayg6OnN0ZDo6bWFrZV9wYWlyKGlu
c3RhbnRpYXRpb25fbmFtZSwgZnVuYykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBhcmFtTmFtZUdlbmVyYXRvckZ1bmMqIG5hbWVfZnVuYywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSkgeworICAgIGluc3RhbnRpYXRp
b25zXy5wdXNoX2JhY2soCisgICAgICAgIEluc3RhbnRpYXRpb25JbmZvKGluc3RhbnRpYXRpb25f
bmFtZSwgZnVuYywgbmFtZV9mdW5jLCBmaWxlLCBsaW5lKSk7CiAgICAgcmV0dXJuIDA7ICAvLyBS
ZXR1cm4gdmFsdWUgdXNlZCBvbmx5IHRvIHJ1biB0aGlzIG1ldGhvZCBpbiBuYW1lc3BhY2Ugc2Nv
cGUuCiAgIH0KICAgLy8gVW5pdFRlc3QgY2xhc3MgaW52b2tlcyB0aGlzIG1ldGhvZCB0byByZWdp
c3RlciB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZQpAQCAtNDkwLDI2ICs1NDUsNDUgQEAgY2xhc3Mg
UGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbyA6IHB1YmxpYyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJ
bmZvQmFzZSB7CiAgICAgICBmb3IgKHR5cGVuYW1lIEluc3RhbnRpYXRpb25Db250YWluZXI6Oml0
ZXJhdG9yIGdlbl9pdCA9CiAgICAgICAgICAgICAgICBpbnN0YW50aWF0aW9uc18uYmVnaW4oKTsg
Z2VuX2l0ICE9IGluc3RhbnRpYXRpb25zXy5lbmQoKTsKICAgICAgICAgICAgICAgICsrZ2VuX2l0
KSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgaW5zdGFudGlhdGlvbl9uYW1lID0gZ2VuX2l0LT5m
aXJzdDsKLSAgICAgICAgUGFyYW1HZW5lcmF0b3I8UGFyYW1UeXBlPiBnZW5lcmF0b3IoKCpnZW5f
aXQtPnNlY29uZCkoKSk7CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnN0YW50aWF0aW9u
X25hbWUgPSBnZW5faXQtPm5hbWU7CisgICAgICAgIFBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT4g
Z2VuZXJhdG9yKCgqZ2VuX2l0LT5nZW5lcmF0b3IpKCkpOworICAgICAgICBQYXJhbU5hbWVHZW5l
cmF0b3JGdW5jKiBuYW1lX2Z1bmMgPSBnZW5faXQtPm5hbWVfZnVuYzsKKyAgICAgICAgY29uc3Qg
Y2hhciogZmlsZSA9IGdlbl9pdC0+ZmlsZTsKKyAgICAgICAgaW50IGxpbmUgPSBnZW5faXQtPmxp
bmU7CiAKLSAgICAgICAgTWVzc2FnZSB0ZXN0X2Nhc2VfbmFtZV9zdHJlYW07CisgICAgICAgIHN0
ZDo6c3RyaW5nIHRlc3RfY2FzZV9uYW1lOwogICAgICAgICBpZiAoICFpbnN0YW50aWF0aW9uX25h
bWUuZW1wdHkoKSApCi0gICAgICAgICAgdGVzdF9jYXNlX25hbWVfc3RyZWFtIDw8IGluc3RhbnRp
YXRpb25fbmFtZS5jX3N0cigpIDw8ICIvIjsKLSAgICAgICAgdGVzdF9jYXNlX25hbWVfc3RyZWFt
IDw8IHRlc3RfaW5mby0+dGVzdF9jYXNlX2Jhc2VfbmFtZS5jX3N0cigpOworICAgICAgICAgIHRl
c3RfY2FzZV9uYW1lID0gaW5zdGFudGlhdGlvbl9uYW1lICsgIi8iOworICAgICAgICB0ZXN0X2Nh
c2VfbmFtZSArPSB0ZXN0X2luZm8tPnRlc3RfY2FzZV9iYXNlX25hbWU7CiAKLSAgICAgICAgaW50
IGkgPSAwOworICAgICAgICBzaXplX3QgaSA9IDA7CisgICAgICAgIHN0ZDo6c2V0PHN0ZDo6c3Ry
aW5nPiB0ZXN0X3BhcmFtX25hbWVzOwogICAgICAgICBmb3IgKHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFBhcmFtVHlwZT46Oml0ZXJhdG9yIHBhcmFtX2l0ID0KICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmJlZ2luKCk7CiAgICAgICAgICAgICAgcGFyYW1faXQgIT0gZ2VuZXJhdG9yLmVuZCgp
OyArK3BhcmFtX2l0LCArK2kpIHsKICAgICAgICAgICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07
Ci0gICAgICAgICAgdGVzdF9uYW1lX3N0cmVhbSA8PCB0ZXN0X2luZm8tPnRlc3RfYmFzZV9uYW1l
LmNfc3RyKCkgPDwgIi8iIDw8IGk7Ci0gICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TWFr
ZUFuZFJlZ2lzdGVyVGVzdEluZm8oCi0gICAgICAgICAgICAgIHRlc3RfY2FzZV9uYW1lX3N0cmVh
bS5HZXRTdHJpbmcoKS5jX3N0cigpLAorCisgICAgICAgICAgc3RkOjpzdHJpbmcgcGFyYW1fbmFt
ZSA9IG5hbWVfZnVuYygKKyAgICAgICAgICAgICAgVGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+KCpw
YXJhbV9pdCwgaSkpOworCisgICAgICAgICAgR1RFU1RfQ0hFQ0tfKElzVmFsaWRQYXJhbU5hbWUo
cGFyYW1fbmFtZSkpCisgICAgICAgICAgICAgIDw8ICJQYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSAn
IiA8PCBwYXJhbV9uYW1lCisgICAgICAgICAgICAgIDw8ICInIGlzIGludmFsaWQsIGluICIgPDwg
ZmlsZQorICAgICAgICAgICAgICA8PCAiIGxpbmUgIiA8PCBsaW5lIDw8IHN0ZDo6ZW5kbDsKKwor
ICAgICAgICAgIEdURVNUX0NIRUNLXyh0ZXN0X3BhcmFtX25hbWVzLmNvdW50KHBhcmFtX25hbWUp
ID09IDApCisgICAgICAgICAgICAgIDw8ICJEdXBsaWNhdGUgcGFyYW1ldGVyaXplZCB0ZXN0IG5h
bWUgJyIgPDwgcGFyYW1fbmFtZQorICAgICAgICAgICAgICA8PCAiJywgaW4gIiA8PCBmaWxlIDw8
ICIgbGluZSAiIDw8IGxpbmUgPDwgc3RkOjplbmRsOworCisgICAgICAgICAgdGVzdF9wYXJhbV9u
YW1lcy5pbnNlcnQocGFyYW1fbmFtZSk7CisKKyAgICAgICAgICB0ZXN0X25hbWVfc3RyZWFtIDw8
IHRlc3RfaW5mby0+dGVzdF9iYXNlX25hbWUgPDwgIi8iIDw8IHBhcmFtX25hbWU7CisgICAgICAg
ICAgTWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8oCisgICAgICAgICAgICAgIHRlc3RfY2FzZV9uYW1l
LmNfc3RyKCksCiAgICAgICAgICAgICAgIHRlc3RfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19z
dHIoKSwKLSAgICAgICAgICAgICAgIiIsICAvLyB0ZXN0X2Nhc2VfY29tbWVudAotICAgICAgICAg
ICAgICAiIiwgIC8vIGNvbW1lbnQ7IFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IHByb3ZpZGUgcGFy
YW1ldGVyIHZhbHVlCi0gICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVwcmVzZW50YXRpb24uCisgICAgICAgICAgICAgIE5VTEwsICAvLyBObyB0
eXBlIHBhcmFtZXRlci4KKyAgICAgICAgICAgICAgUHJpbnRUb1N0cmluZygqcGFyYW1faXQpLmNf
c3RyKCksCisgICAgICAgICAgICAgIGNvZGVfbG9jYXRpb25fLAogICAgICAgICAgICAgICBHZXRU
ZXN0Q2FzZVR5cGVJZCgpLAogICAgICAgICAgICAgICBUZXN0Q2FzZTo6U2V0VXBUZXN0Q2FzZSwK
ICAgICAgICAgICAgICAgVGVzdENhc2U6OlRlYXJEb3duVGVzdENhc2UsCkBAIC01MzAsMTcgKzYw
NCw1MCBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvIDogcHVibGljIFBhcmFtZXRl
cml6ZWRUZXN0Q2FzZUluZm9CYXNlIHsKICAgICAgICAgdGVzdF9iYXNlX25hbWUoYV90ZXN0X2Jh
c2VfbmFtZSksCiAgICAgICAgIHRlc3RfbWV0YV9mYWN0b3J5KGFfdGVzdF9tZXRhX2ZhY3Rvcnkp
IHt9CiAKLSAgICBjb25zdCBTdHJpbmcgdGVzdF9jYXNlX2Jhc2VfbmFtZTsKLSAgICBjb25zdCBT
dHJpbmcgdGVzdF9iYXNlX25hbWU7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdF9jYXNlX2Jh
c2VfbmFtZTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0X2Jhc2VfbmFtZTsKICAgICBjb25z
dCBzY29wZWRfcHRyPFRlc3RNZXRhRmFjdG9yeUJhc2U8UGFyYW1UeXBlPiA+IHRlc3RfbWV0YV9m
YWN0b3J5OwogICB9OwogICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8bGlua2VkX3B0cjxUZXN0SW5m
bz4gPiBUZXN0SW5mb0NvbnRhaW5lcjsKLSAgLy8gS2VlcHMgcGFpcnMgb2YgPEluc3RhbnRpYXRp
b24gbmFtZSwgU2VxdWVuY2UgZ2VuZXJhdG9yIGNyZWF0aW9uIGZ1bmN0aW9uPgotICAvLyByZWNl
aXZlZCBmcm9tIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIG1hY3Jvcy4KLSAgdHlwZWRlZiA6OnN0
ZDo6dmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIEdlbmVyYXRvckNyZWF0aW9uRnVuYyo+ID4KLSAg
ICAgIEluc3RhbnRpYXRpb25Db250YWluZXI7CisgIC8vIFJlY29yZHMgZGF0YSByZWNlaXZlZCBm
cm9tIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIG1hY3JvczoKKyAgLy8gIDxJbnN0YW50aWF0aW9u
IG5hbWUsIFNlcXVlbmNlIGdlbmVyYXRvciBjcmVhdGlvbiBmdW5jdGlvbiwKKyAgLy8gICAgIE5h
bWUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBTb3VyY2UgZmlsZSwgU291cmNlIGxpbmU+CisgIHN0cnVj
dCBJbnN0YW50aWF0aW9uSW5mbyB7CisgICAgICBJbnN0YW50aWF0aW9uSW5mbyhjb25zdCBzdGQ6
OnN0cmluZyAmbmFtZV9pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvckNyZWF0
aW9uRnVuYyogZ2VuZXJhdG9yX2luLAorICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1OYW1l
R2VuZXJhdG9yRnVuYyogbmFtZV9mdW5jX2luLAorICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogZmlsZV9pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lX2luKQor
ICAgICAgICAgIDogbmFtZShuYW1lX2luKSwKKyAgICAgICAgICAgIGdlbmVyYXRvcihnZW5lcmF0
b3JfaW4pLAorICAgICAgICAgICAgbmFtZV9mdW5jKG5hbWVfZnVuY19pbiksCisgICAgICAgICAg
ICBmaWxlKGZpbGVfaW4pLAorICAgICAgICAgICAgbGluZShsaW5lX2luKSB7fQorCisgICAgICBz
dGQ6OnN0cmluZyBuYW1lOworICAgICAgR2VuZXJhdG9yQ3JlYXRpb25GdW5jKiBnZW5lcmF0b3I7
CisgICAgICBQYXJhbU5hbWVHZW5lcmF0b3JGdW5jKiBuYW1lX2Z1bmM7CisgICAgICBjb25zdCBj
aGFyKiBmaWxlOworICAgICAgaW50IGxpbmU7CisgIH07CisgIHR5cGVkZWYgOjpzdGQ6OnZlY3Rv
cjxJbnN0YW50aWF0aW9uSW5mbz4gSW5zdGFudGlhdGlvbkNvbnRhaW5lcjsKIAotICBjb25zdCBT
dHJpbmcgdGVzdF9jYXNlX25hbWVfOworICBzdGF0aWMgYm9vbCBJc1ZhbGlkUGFyYW1OYW1lKGNv
bnN0IHN0ZDo6c3RyaW5nJiBuYW1lKSB7CisgICAgLy8gQ2hlY2sgZm9yIGVtcHR5IHN0cmluZwor
ICAgIGlmIChuYW1lLmVtcHR5KCkpCisgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBDaGVj
ayBmb3IgaW52YWxpZCBjaGFyYWN0ZXJzCisgICAgZm9yIChzdGQ6OnN0cmluZzo6c2l6ZV90eXBl
IGluZGV4ID0gMDsgaW5kZXggPCBuYW1lLnNpemUoKTsgKytpbmRleCkgeworICAgICAgaWYgKCFp
c2FsbnVtKG5hbWVbaW5kZXhdKSAmJiBuYW1lW2luZGV4XSAhPSAnXycpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIGNvbnN0IHN0ZDo6
c3RyaW5nIHRlc3RfY2FzZV9uYW1lXzsKKyAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb25fOwog
ICBUZXN0SW5mb0NvbnRhaW5lciB0ZXN0c187CiAgIEluc3RhbnRpYXRpb25Db250YWluZXIgaW5z
dGFudGlhdGlvbnNfOwogCkBAIC01NjgsOCArNjc1LDcgQEAgY2xhc3MgUGFyYW1ldGVyaXplZFRl
c3RDYXNlUmVnaXN0cnkgewogICB0ZW1wbGF0ZSA8Y2xhc3MgVGVzdENhc2U+CiAgIFBhcmFtZXRl
cml6ZWRUZXN0Q2FzZUluZm88VGVzdENhc2U+KiBHZXRUZXN0Q2FzZVBhdHRlcm5Ib2xkZXIoCiAg
ICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgIGNvbnN0IGNoYXIqIGZpbGUs
Ci0gICAgICBpbnQgbGluZSkgeworICAgICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24pIHsK
ICAgICBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvPFRlc3RDYXNlPiogdHlwZWRfdGVzdF9pbmZv
ID0gTlVMTDsKICAgICBmb3IgKFRlc3RDYXNlSW5mb0NvbnRhaW5lcjo6aXRlcmF0b3IgaXQgPSB0
ZXN0X2Nhc2VfaW5mb3NfLmJlZ2luKCk7CiAgICAgICAgICBpdCAhPSB0ZXN0X2Nhc2VfaW5mb3Nf
LmVuZCgpOyArK2l0KSB7CkBAIC01NzgsOCArNjg0LDggQEAgY2xhc3MgUGFyYW1ldGVyaXplZFRl
c3RDYXNlUmVnaXN0cnkgewogICAgICAgICAgIC8vIENvbXBsYWluIGFib3V0IGluY29ycmVjdCB1
c2FnZSBvZiBHb29nbGUgVGVzdCBmYWNpbGl0aWVzCiAgICAgICAgICAgLy8gYW5kIHRlcm1pbmF0
ZSB0aGUgcHJvZ3JhbSBzaW5jZSB3ZSBjYW5ub3QgZ3VhcmFudHkgY29ycmVjdAogICAgICAgICAg
IC8vIHRlc3QgY2FzZSBzZXR1cCBhbmQgdGVhci1kb3duIGluIHRoaXMgY2FzZS4KLSAgICAgICAg
ICBSZXBvcnRJbnZhbGlkVGVzdENhc2VUeXBlKHRlc3RfY2FzZV9uYW1lLCAgZmlsZSwgbGluZSk7
Ci0gICAgICAgICAgYWJvcnQoKTsKKyAgICAgICAgICBSZXBvcnRJbnZhbGlkVGVzdENhc2VUeXBl
KHRlc3RfY2FzZV9uYW1lLCBjb2RlX2xvY2F0aW9uKTsKKyAgICAgICAgICBwb3NpeDo6QWJvcnQo
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGFyZSBz
dXJlIHRoYXQgdGhlIG9iamVjdCB3ZSBmb3VuZCBpcyBvZiB0aGUgc2FtZQogICAgICAgICAgIC8v
IHR5cGUgd2UgYXJlIGxvb2tpbmcgZm9yLCBzbyB3ZSBkb3duY2FzdCBpdCB0byB0aGF0IHR5cGUK
QEAgLTU5MSw3ICs2OTcsOCBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSB7
CiAgICAgICB9CiAgICAgfQogICAgIGlmICh0eXBlZF90ZXN0X2luZm8gPT0gTlVMTCkgewotICAg
ICAgdHlwZWRfdGVzdF9pbmZvID0gbmV3IFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm88VGVzdENh
c2U+KHRlc3RfY2FzZV9uYW1lKTsKKyAgICAgIHR5cGVkX3Rlc3RfaW5mbyA9IG5ldyBQYXJhbWV0
ZXJpemVkVGVzdENhc2VJbmZvPFRlc3RDYXNlPigKKyAgICAgICAgICB0ZXN0X2Nhc2VfbmFtZSwg
Y29kZV9sb2NhdGlvbik7CiAgICAgICB0ZXN0X2Nhc2VfaW5mb3NfLnB1c2hfYmFjayh0eXBlZF90
ZXN0X2luZm8pOwogICAgIH0KICAgICByZXR1cm4gdHlwZWRfdGVzdF9pbmZvOwpAQCAtNjE0LDYg
KzcyMSw0IEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IHsKIH0gIC8vIG5h
bWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotI2VuZGlmICAvLyAg
R1RFU1RfSEFTX1BBUkFNX1RFU1QKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lO
VEVSTkFMX0dURVNUX1BBUkFNX1VUSUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC1hcmNoLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY4MzcwMGUwNmQ5OGMzNmY2NDg3MjkxYzNmOTMxODA3YWYzNTNmNzQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oCkBAIC0wLDAgKzEsMTAwIEBACisvLyBDb3B5cmlnaHQg
MjAxNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4K
Ky8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gVGhlIEdvb2dsZSBDKysgVGVz
dGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8KKy8vIFRoaXMgaGVh
ZGVyIGZpbGUgZGVmaW5lcyB0aGUgR1RFU1RfT1NfKiBtYWNyby4KKy8vIEl0IGlzIHNlcGFyYXRl
IGZyb20gZ3Rlc3QtcG9ydC5oIHNvIHRoYXQgY3VzdG9tL2d0ZXN0LXBvcnQuaCBjYW4gaW5jbHVk
ZSBpdC4KKworI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRf
QVJDSF9IXworI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRf
QVJDSF9IXworCisvLyBEZXRlcm1pbmVzIHRoZSBwbGF0Zm9ybSBvbiB3aGljaCBHb29nbGUgVGVz
dCBpcyBjb21waWxlZC4KKyNpZmRlZiBfX0NZR1dJTl9fCisjIGRlZmluZSBHVEVTVF9PU19DWUdX
SU4gMQorI2VsaWYgZGVmaW5lZCBfX1NZTUJJQU4zMl9fCisjIGRlZmluZSBHVEVTVF9PU19TWU1C
SUFOIDEKKyNlbGlmIGRlZmluZWQgX1dJTjMyCisjIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTIDEK
KyMgaWZkZWYgX1dJTjMyX1dDRQorIyAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIDEK
KyMgZWxpZiBkZWZpbmVkKF9fTUlOR1dfXykgfHwgZGVmaW5lZChfX01JTkdXMzJfXykKKyMgIGRl
ZmluZSBHVEVTVF9PU19XSU5ET1dTX01JTkdXIDEKKyMgZWxpZiBkZWZpbmVkKFdJTkFQSV9GQU1J
TFkpCisjICBpbmNsdWRlIDx3aW5hcGlmYW1pbHkuaD4KKyMgIGlmIFdJTkFQSV9GQU1JTFlfUEFS
VElUSU9OKFdJTkFQSV9QQVJUSVRJT05fREVTS1RPUCkKKyMgICBkZWZpbmUgR1RFU1RfT1NfV0lO
RE9XU19ERVNLVE9QIDEKKyMgIGVsaWYgV0lOQVBJX0ZBTUlMWV9QQVJUSVRJT04oV0lOQVBJX1BB
UlRJVElPTl9QSE9ORV9BUFApCisjICAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfUEhPTkUgMQor
IyAgZWxpZiBXSU5BUElfRkFNSUxZX1BBUlRJVElPTihXSU5BUElfUEFSVElUSU9OX0FQUCkKKyMg
ICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19SVCAxCisjICBlbGlmIFdJTkFQSV9GQU1JTFlfUEFS
VElUSU9OKFdJTkFQSV9QQVJUSVRJT05fVFZfVElUTEUpCisjICAgZGVmaW5lIEdURVNUX09TX1dJ
TkRPV1NfUEhPTkUgMQorIyAgIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTX1RWX1RJVExFIDEKKyMg
IGVsc2UKKyAgICAvLyBXSU5BUElfRkFNSUxZIGRlZmluZWQgYnV0IG5vIGtub3duIHBhcnRpdGlv
biBtYXRjaGVkLgorICAgIC8vIERlZmF1bHQgdG8gZGVza3RvcC4KKyMgICBkZWZpbmUgR1RFU1Rf
T1NfV0lORE9XU19ERVNLVE9QIDEKKyMgIGVuZGlmCisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9P
U19XSU5ET1dTX0RFU0tUT1AgMQorIyBlbmRpZiAgLy8gX1dJTjMyX1dDRQorI2VsaWYgZGVmaW5l
ZCBfX0FQUExFX18KKyMgZGVmaW5lIEdURVNUX09TX01BQyAxCisjIGlmIFRBUkdFVF9PU19JUEhP
TkUKKyMgIGRlZmluZSBHVEVTVF9PU19JT1MgMQorIyBlbmRpZgorI2VsaWYgZGVmaW5lZCBfX0Zy
ZWVCU0RfXworIyBkZWZpbmUgR1RFU1RfT1NfRlJFRUJTRCAxCisjZWxpZiBkZWZpbmVkIF9fRnVj
aHNpYV9fCisjIGRlZmluZSBHVEVTVF9PU19GVUNIU0lBIDEKKyNlbGlmIGRlZmluZWQgX19saW51
eF9fCisjIGRlZmluZSBHVEVTVF9PU19MSU5VWCAxCisjIGlmIGRlZmluZWQgX19BTkRST0lEX18K
KyMgIGRlZmluZSBHVEVTVF9PU19MSU5VWF9BTkRST0lEIDEKKyMgZW5kaWYKKyNlbGlmIGRlZmlu
ZWQgX19NVlNfXworIyBkZWZpbmUgR1RFU1RfT1NfWk9TIDEKKyNlbGlmIGRlZmluZWQoX19zdW4p
ICYmIGRlZmluZWQoX19TVlI0KQorIyBkZWZpbmUgR1RFU1RfT1NfU09MQVJJUyAxCisjZWxpZiBk
ZWZpbmVkKF9BSVgpCisjIGRlZmluZSBHVEVTVF9PU19BSVggMQorI2VsaWYgZGVmaW5lZChfX2hw
dXgpCisjIGRlZmluZSBHVEVTVF9PU19IUFVYIDEKKyNlbGlmIGRlZmluZWQgX19uYXRpdmVfY2xp
ZW50X18KKyMgZGVmaW5lIEdURVNUX09TX05BQ0wgMQorI2VsaWYgZGVmaW5lZCBfX05ldEJTRF9f
CisjIGRlZmluZSBHVEVTVF9PU19ORVRCU0QgMQorI2VsaWYgZGVmaW5lZCBfX09wZW5CU0RfXwor
IyBkZWZpbmUgR1RFU1RfT1NfT1BFTkJTRCAxCisjZWxpZiBkZWZpbmVkIF9fUU5YX18KKyMgZGVm
aW5lIEdURVNUX09TX1FOWCAxCisjZW5kaWYgIC8vIF9fQ1lHV0lOX18KKworI2VuZGlmICAvLyBH
VEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRfQVJDSF9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1w
b3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaAppbmRleCBmOGJlODA5MjZmODk4N2QzYzk1ODI4NjE2MDIwMTBiZmY2ZTY0ZDZk
Li43ODY0OTdkODU0Yzk3ZjFiNmFiOTM3MmEyNDFjMWZhMTU1YTMwYTU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaApAQCAtMjcsMjkgKzI3LDU3IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAvLwotLy8gQXV0aG9yczogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8v
CiAvLyBMb3ctbGV2ZWwgdHlwZXMgYW5kIHV0aWxpdGllcyBmb3IgcG9ydGluZyBHb29nbGUgVGVz
dCB0byB2YXJpb3VzCi0vLyBwbGF0Zm9ybXMuICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3
aXRob3V0IG5vdGljZS4gIERPIE5PVCBVU0UKLS8vIFRIRU0gSU4gVVNFUiBDT0RFLgorLy8gcGxh
dGZvcm1zLiAgQWxsIG1hY3JvcyBlbmRpbmcgd2l0aCBfIGFuZCBzeW1ib2xzIGRlZmluZWQgaW4g
YW4KKy8vIGludGVybmFsIG5hbWVzcGFjZSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBu
b3RpY2UuICBDb2RlCisvLyBvdXRzaWRlIEdvb2dsZSBUZXN0IE1VU1QgTk9UIFVTRSBUSEVNIERJ
UkVDVExZLiAgTWFjcm9zIHRoYXQgZG9uJ3QKKy8vIGVuZCB3aXRoIF8gYXJlIHBhcnQgb2YgR29v
Z2xlIFRlc3QncyBwdWJsaWMgQVBJIGFuZCBjYW4gYmUgdXNlZCBieQorLy8gY29kZSBvdXRzaWRl
IEdvb2dsZSBUZXN0LgorLy8KKy8vIFRoaXMgZmlsZSBpcyBmdW5kYW1lbnRhbCB0byBHb29nbGUg
VGVzdC4gIEFsbCBvdGhlciBHb29nbGUgVGVzdCBzb3VyY2UKKy8vIGZpbGVzIGFyZSBleHBlY3Rl
ZCB0byAjaW5jbHVkZSB0aGlzLiAgVGhlcmVmb3JlLCBpdCBjYW5ub3QgI2luY2x1ZGUKKy8vIGFu
eSBvdGhlciBHb29nbGUgVGVzdCBoZWFkZXIuCisKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5P
VCBERUxFVEUKIAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BP
UlRfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QT1JUX0hf
CiAKLS8vIFRoZSB1c2VyIGNhbiBkZWZpbmUgdGhlIGZvbGxvd2luZyBtYWNyb3MgaW4gdGhlIGJ1
aWxkIHNjcmlwdCB0bwotLy8gY29udHJvbCBHb29nbGUgVGVzdCdzIGJlaGF2aW9yLiAgSWYgdGhl
IHVzZXIgZG9lc24ndCBkZWZpbmUgYSBtYWNybwotLy8gaW4gdGhpcyBsaXN0LCBHb29nbGUgVGVz
dCB3aWxsIGRlZmluZSBpdC4KKy8vIEVudmlyb25tZW50LWRlc2NyaWJpbmcgbWFjcm9zCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEdvb2dsZSBUZXN0IGNhbiBiZSB1
c2VkIGluIG1hbnkgZGlmZmVyZW50IGVudmlyb25tZW50cy4gIE1hY3JvcyBpbgorLy8gdGhpcyBz
ZWN0aW9uIHRlbGwgR29vZ2xlIFRlc3Qgd2hhdCBraW5kIG9mIGVudmlyb25tZW50IGl0IGlzIGJl
aW5nCisvLyB1c2VkIGluLCBzdWNoIHRoYXQgR29vZ2xlIFRlc3QgY2FuIHByb3ZpZGUgZW52aXJv
bm1lbnQtc3BlY2lmaWMKKy8vIGZlYXR1cmVzIGFuZCBpbXBsZW1lbnRhdGlvbnMuCisvLworLy8g
R29vZ2xlIFRlc3QgdHJpZXMgdG8gYXV0b21hdGljYWxseSBkZXRlY3QgdGhlIHByb3BlcnRpZXMg
b2YgaXRzCisvLyBlbnZpcm9ubWVudCwgc28gdXNlcnMgdXN1YWxseSBkb24ndCBuZWVkIHRvIHdv
cnJ5IGFib3V0IHRoZXNlCisvLyBtYWNyb3MuICBIb3dldmVyLCB0aGUgYXV0b21hdGljIGRldGVj
dGlvbiBpcyBub3QgcGVyZmVjdC4KKy8vIFNvbWV0aW1lcyBpdCdzIG5lY2Vzc2FyeSBmb3IgYSB1
c2VyIHRvIGRlZmluZSBzb21lIG9mIHRoZSBmb2xsb3dpbmcKKy8vIG1hY3JvcyBpbiB0aGUgYnVp
bGQgc2NyaXB0IHRvIG92ZXJyaWRlIEdvb2dsZSBUZXN0J3MgZGVjaXNpb25zLgorLy8KKy8vIElm
IHRoZSB1c2VyIGRvZXNuJ3QgZGVmaW5lIGEgbWFjcm8gaW4gdGhlIGxpc3QsIEdvb2dsZSBUZXN0
IHdpbGwKKy8vIHByb3ZpZGUgYSBkZWZhdWx0IGRlZmluaXRpb24uICBBZnRlciB0aGlzIGhlYWRl
ciBpcyAjaW5jbHVkZWQsIGFsbAorLy8gbWFjcm9zIGluIHRoaXMgbGlzdCB3aWxsIGJlIGRlZmlu
ZWQgdG8gZWl0aGVyIDEgb3IgMC4KKy8vCisvLyBOb3RlcyB0byBtYWludGFpbmVyczoKKy8vICAg
LSBFYWNoIG1hY3JvIGhlcmUgaXMgYSB1c2VyLXR3ZWFrYWJsZSBrbm9iOyBkbyBub3QgZ3JvdyB0
aGUgbGlzdAorLy8gICAgIGxpZ2h0bHkuCisvLyAgIC0gVXNlICNpZiB0byBrZXkgb2ZmIHRoZXNl
IG1hY3Jvcy4gIERvbid0IHVzZSAjaWZkZWYgb3IgIiNpZgorLy8gICAgIGRlZmluZWQoLi4uKSIs
IHdoaWNoIHdpbGwgbm90IHdvcmsgYXMgdGhlc2UgbWFjcm9zIGFyZSBBTFdBWVMKKy8vICAgICBk
ZWZpbmVkLgogLy8KIC8vICAgR1RFU1RfSEFTX0NMT05FICAgICAgICAgIC0gRGVmaW5lIGl0IHRv
IDEvMCB0byBpbmRpY2F0ZSB0aGF0IGNsb25lKDIpCiAvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlzL2lzbid0IGF2YWlsYWJsZS4KIC8vICAgR1RFU1RfSEFTX0VYQ0VQVElPTlMgICAg
IC0gRGVmaW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB0aGF0IGV4Y2VwdGlvbnMKIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGVuYWJsZWQuCiAvLyAgIEdURVNUX0hBU19HTE9C
QUxfU1RSSU5HICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA6OnN0cmluZwot
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcy9pc24ndCBhdmFpbGFibGUgKHNvbWUg
c3lzdGVtcyBkZWZpbmUKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdHJpbmcs
IHdoaWNoIGlzIGRpZmZlcmVudCB0byBzdGQ6OnN0cmluZykuCi0vLyAgIEdURVNUX0hBU19HTE9C
QUxfV1NUUklORyAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA6OnN0cmluZwot
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcy9pc24ndCBhdmFpbGFibGUgKHNvbWUg
c3lzdGVtcyBkZWZpbmUKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjp3c3RyaW5n
LCB3aGljaCBpcyBkaWZmZXJlbnQgdG8gc3RkOjp3c3RyaW5nKS4KKy8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlCisvLyAgIEdURVNUX0hBU19HTE9CQUxf
V1NUUklORyAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA6OndzdHJpbmcKKy8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlCisvLyAgIEdU
RVNUX0hBU19QT1NJWF9SRSAgICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhh
dCBQT1NJWCByZWd1bGFyCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Np
b25zIGFyZS9hcmVuJ3QgYXZhaWxhYmxlLgogLy8gICBHVEVTVF9IQVNfUFRIUkVBRCAgICAgICAg
LSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgPHB0aHJlYWQuaD4KIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlLgogLy8gICBHVEVTVF9I
QVNfUlRUSSAgICAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgUlRU
SSBpcy9pc24ndApAQCAtNjIsMTAgKzkwLDE2IEBACiAvLyAgIEdURVNUX0hBU19TRUggICAgICAg
ICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUKIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIgc3VwcG9ydHMgTWljcm9zb2Z0J3MgIlN0
cnVjdHVyZWQKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uIEhhbmRs
aW5nIi4KKy8vICAgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgorLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHdoZXRoZXIgdGhl
CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtIHN1cHBvcnRzIEkvTyBz
dHJlYW0gcmVkaXJlY3Rpb24gdXNpbmcKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZHVwKCkgYW5kIGR1cDIoKS4KIC8vICAgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgIC0gRGVmaW5l
IGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB3aGV0aGVyIEdvb2dsZQogLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXN0J3Mgb3duIHRyMSB0dXBsZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQg
YmUKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZC4gIFVudXNlZCB3aGVuIHRo
ZSB1c2VyIHNldHMKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfSEFTX1RS
MV9UVVBMRSB0byAwLgorLy8gICBHVEVTVF9MQU5HX0NYWDExICAgICAgICAgLSBEZWZpbmUgaXQg
dG8gMS8wIHRvIGluZGljYXRlIHRoYXQgR29vZ2xlIFRlc3QKKy8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXMgYnVpbGRpbmcgaW4gQysrMTEvQysrOTggbW9kZS4KIC8vICAgR1RFU1Rf
TElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAt
IERlZmluZSB0byAxIHdoZW4gY29tcGlsaW5nIHRlc3RzIHRoYXQgdXNlCiAvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdvb2dsZSBUZXN0IGFzIGEgc2hhcmVkIGxpYnJhcnkgKGtub3du
IGFzCkBAIC03MywyMyArMTA3LDQzIEBACiAvLyAgIEdURVNUX0NSRUFURV9TSEFSRURfTElCUkFS
WQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBEZWZpbmUgdG8gMSB3aGVuIGNvbXBp
bGluZyBHb29nbGUgVGVzdCBpdHNlbGYKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXMgYSBzaGFyZWQgbGlicmFyeS4KLQotLy8gVGhpcyBoZWFkZXIgZGVmaW5lcyB0aGUgZm9sbG93
aW5nIHV0aWxpdGllczoKKy8vICAgR1RFU1RfREVGQVVMVF9ERUFUSF9URVNUX1NUWUxFCisvLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoZSBkZWZhdWx0IHZhbHVlIG9mIC0tZ3Rlc3Rf
ZGVhdGhfdGVzdF9zdHlsZS4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxl
Z2FjeSBkZWZhdWx0IGhhcyBiZWVuICJmYXN0IiBpbiB0aGUgb3BlbgorLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzb3VyY2UgdmVyc2lvbiBzaW5jZSAyMDA4LiBUaGUgcmVjb21tZW5k
ZWQgdmFsdWUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgInRocmVhZHNhZmUi
LCBhbmQgY2FuIGJlIHNldCBpbgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0
b20vZ3Rlc3QtcG9ydC5oLgorCisvLyBQbGF0Zm9ybS1pbmRpY2F0aW5nIG1hY3JvcworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNYWNyb3MgaW5kaWNhdGluZyB0aGUgcGxh
dGZvcm0gb24gd2hpY2ggR29vZ2xlIFRlc3QgaXMgYmVpbmcgdXNlZAorLy8gKGEgbWFjcm8gaXMg
ZGVmaW5lZCB0byAxIGlmIGNvbXBpbGVkIG9uIHRoZSBnaXZlbiBwbGF0Zm9ybTsKKy8vIG90aGVy
d2lzZSBVTkRFRklORUQgLS0gaXQncyBuZXZlciBkZWZpbmVkIHRvIDAuKS4gIEdvb2dsZSBUZXN0
CisvLyBkZWZpbmVzIHRoZXNlIG1hY3JvcyBhdXRvbWF0aWNhbGx5LiAgQ29kZSBvdXRzaWRlIEdv
b2dsZSBUZXN0IE1VU1QKKy8vIE5PVCBkZWZpbmUgdGhlbS4KIC8vCi0vLyBNYWNyb3MgaW5kaWNh
dGluZyB0aGUgY3VycmVudCBwbGF0Zm9ybSAoZGVmaW5lZCB0byAxIGlmIGNvbXBpbGVkIG9uCi0v
LyB0aGUgZ2l2ZW4gcGxhdGZvcm07IG90aGVyd2lzZSB1bmRlZmluZWQpOgogLy8gICBHVEVTVF9P
U19BSVggICAgICAtIElCTSBBSVgKIC8vICAgR1RFU1RfT1NfQ1lHV0lOICAgLSBDeWd3aW4KLS8v
ICAgR1RFU1RfT1NfTElOVVggICAgLSBMaW51eAogLy8gICBHVEVTVF9PU19GUkVFQlNEICAtIEZy
ZWVCU0QKLS8vICAgR1RFU1RfT1NfSFVSRCAgICAgLSBHTlUvSHVyZAorLy8gICBHVEVTVF9PU19G
VUNIU0lBICAtIEZ1Y2hzaWEKKy8vICAgR1RFU1RfT1NfSFBVWCAgICAgLSBIUC1VWAorLy8gICBH
VEVTVF9PU19MSU5VWCAgICAtIExpbnV4CisvLyAgICAgR1RFU1RfT1NfTElOVVhfQU5EUk9JRCAt
IEdvb2dsZSBBbmRyb2lkCiAvLyAgIEdURVNUX09TX01BQyAgICAgIC0gTWFjIE9TIFgKKy8vICAg
ICBHVEVTVF9PU19JT1MgICAgLSBpT1MKKy8vICAgR1RFU1RfT1NfTkFDTCAgICAgLSBHb29nbGUg
TmF0aXZlIENsaWVudCAoTmFDbCkKKy8vICAgR1RFU1RfT1NfTkVUQlNEICAgLSBOZXRCU0QKKy8v
ICAgR1RFU1RfT1NfT1BFTkJTRCAgLSBPcGVuQlNECisvLyAgIEdURVNUX09TX1FOWCAgICAgIC0g
UU5YCiAvLyAgIEdURVNUX09TX1NPTEFSSVMgIC0gU3VuIFNvbGFyaXMKIC8vICAgR1RFU1RfT1Nf
U1lNQklBTiAgLSBTeW1iaWFuCiAvLyAgIEdURVNUX09TX1dJTkRPV1MgIC0gV2luZG93cyAoRGVz
a3RvcCwgTWluR1csIG9yIE1vYmlsZSkKIC8vICAgICBHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1Ag
IC0gV2luZG93cyBEZXNrdG9wCiAvLyAgICAgR1RFU1RfT1NfV0lORE9XU19NSU5HVyAgICAtIE1p
bkdXCiAvLyAgICAgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgICAtIFdpbmRvd3MgTW9iaWxlCisv
LyAgICAgR1RFU1RfT1NfV0lORE9XU19QSE9ORSAgICAtIFdpbmRvd3MgUGhvbmUKKy8vICAgICBH
VEVTVF9PU19XSU5ET1dTX1JUICAgICAgIC0gV2luZG93cyBTdG9yZSBBcHAvV2luUlQKIC8vICAg
R1RFU1RfT1NfWk9TICAgICAgLSB6L09TCiAvLwogLy8gQW1vbmcgdGhlIHBsYXRmb3JtcywgQ3ln
d2luLCBMaW51eCwgTWF4IE9TIFgsIGFuZCBXaW5kb3dzIGhhdmUgdGhlCkBAIC05OSwyMCArMTUz
LDUwIEBACiAvLyBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20gKHBhdGNoZXMg
Zm9yIGZpeGluZyB0aGVtIGFyZQogLy8gZXZlbiBtb3JlIHdlbGNvbWUhKS4KIC8vCi0vLyBOb3Rl
IHRoYXQgaXQgaXMgcG9zc2libGUgdGhhdCBub25lIG9mIHRoZSBHVEVTVF9PU18qIG1hY3JvcyBh
cmUgZGVmaW5lZC4KKy8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgbm9uZSBvZiB0aGUgR1RFU1RfT1Nf
KiBtYWNyb3MgYXJlIGRlZmluZWQuCisKKy8vIEZlYXR1cmUtaW5kaWNhdGluZyBtYWNyb3MKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNYWNyb3MgaW5kaWNhdGluZyB3aGlj
aCBHb29nbGUgVGVzdCBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlIChhIG1hY3JvCisvLyBpcyBkZWZp
bmVkIHRvIDEgaWYgdGhlIGNvcnJlc3BvbmRpbmcgZmVhdHVyZSBpcyBzdXBwb3J0ZWQ7CisvLyBv
dGhlcndpc2UgVU5ERUZJTkVEIC0tIGl0J3MgbmV2ZXIgZGVmaW5lZCB0byAwLikuICBHb29nbGUg
VGVzdAorLy8gZGVmaW5lcyB0aGVzZSBtYWNyb3MgYXV0b21hdGljYWxseS4gIENvZGUgb3V0c2lk
ZSBHb29nbGUgVGVzdCBNVVNUCisvLyBOT1QgZGVmaW5lIHRoZW0uCisvLworLy8gVGhlc2UgbWFj
cm9zIGFyZSBwdWJsaWMgc28gdGhhdCBwb3J0YWJsZSB0ZXN0cyBjYW4gYmUgd3JpdHRlbi4KKy8v
IFN1Y2ggdGVzdHMgdHlwaWNhbGx5IHN1cnJvdW5kIGNvZGUgdXNpbmcgYSBmZWF0dXJlIHdpdGgg
YW4gI2lmCisvLyB3aGljaCBjb250cm9scyB0aGF0IGNvZGUuICBGb3IgZXhhbXBsZToKKy8vCisv
LyAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKy8vICAgRVhQRUNUX0RFQVRIKERvU29tZXRoaW5n
RGVhZGx5KCkpOworLy8gI2VuZGlmCiAvLwotLy8gTWFjcm9zIGluZGljYXRpbmcgYXZhaWxhYmxl
IEdvb2dsZSBUZXN0IGZlYXR1cmVzIChkZWZpbmVkIHRvIDEgaWYKLS8vIHRoZSBjb3JyZXNwb25k
aW5nIGZlYXR1cmUgaXMgc3VwcG9ydGVkOyBvdGhlcndpc2UgdW5kZWZpbmVkKToKIC8vICAgR1RF
U1RfSEFTX0NPTUJJTkUgICAgICAtIHRoZSBDb21iaW5lKCkgZnVuY3Rpb24gKGZvciB2YWx1ZS1w
YXJhbWV0ZXJpemVkCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cykKIC8vICAg
R1RFU1RfSEFTX0RFQVRIX1RFU1QgICAtIGRlYXRoIHRlc3RzCi0vLyAgIEdURVNUX0hBU19QQVJB
TV9URVNUICAgLSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzCiAvLyAgIEdURVNUX0hBU19UWVBF
RF9URVNUICAgLSB0eXBlZCB0ZXN0cwogLy8gICBHVEVTVF9IQVNfVFlQRURfVEVTVF9QIC0gdHlw
ZS1wYXJhbWV0ZXJpemVkIHRlc3RzCi0vLyAgIEdURVNUX1VTRVNfUE9TSVhfUkUgICAgLSBlbmhh
bmNlZCBQT1NJWCByZWdleCBpcyB1c2VkLgorLy8gICBHVEVTVF9JU19USFJFQURTQUZFICAgIC0g
R29vZ2xlIFRlc3QgaXMgdGhyZWFkLXNhZmUuCisvLyAgIEdPT0dMRVRFU1RfQ00wMDA3IERPIE5P
VCBERUxFVEUKKy8vICAgR1RFU1RfVVNFU19QT1NJWF9SRSAgICAtIGVuaGFuY2VkIFBPU0lYIHJl
Z2V4IGlzIHVzZWQuIERvIG5vdCBjb25mdXNlIHdpdGgKKy8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdURVNUX0hBU19QT1NJWF9SRSAoc2VlIGFib3ZlKSB3aGljaCB1c2VycyBjYW4KKy8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSB0aGVtc2VsdmVzLgogLy8gICBHVEVT
VF9VU0VTX1NJTVBMRV9SRSAgIC0gb3VyIG93biBzaW1wbGUgcmVnZXggaXMgdXNlZDsKLS8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhYm92ZSB0d28gYXJlIG11dHVhbGx5IGV4Y2x1
c2l2ZS4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhYm92ZSBSRVxiKHMpIGFy
ZSBtdXR1YWxseSBleGNsdXNpdmUuCiAvLyAgIEdURVNUX0NBTl9DT01QQVJFX05VTEwgLSBhY2Nl
cHRzIHVudHlwZWQgTlVMTCBpbiBFWFBFQ1RfRVEoKS4KKworLy8gTWlzYyBwdWJsaWMgbWFjcm9z
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyAgIEdURVNUX0ZMQUcoZmxhZ19uYW1lKSAg
LSByZWZlcmVuY2VzIHRoZSB2YXJpYWJsZSBjb3JyZXNwb25kaW5nIHRvCisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGUgZ2l2ZW4gR29vZ2xlIFRlc3QgZmxhZy4KKworLy8gSW50ZXJu
YWwgdXRpbGl0aWVzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBUaGUgZm9sbG93aW5n
IG1hY3JvcyBhbmQgdXRpbGl0aWVzIGFyZSBmb3IgR29vZ2xlIFRlc3QncyBJTlRFUk5BTAorLy8g
dXNlIG9ubHkuICBDb2RlIG91dHNpZGUgR29vZ2xlIFRlc3QgTVVTVCBOT1QgVVNFIFRIRU0gRElS
RUNUTFkuCiAvLwogLy8gTWFjcm9zIGZvciBiYXNpYyBDKysgY29kaW5nOgogLy8gICBHVEVTVF9B
TUJJR1VPVVNfRUxTRV9CTE9DS0VSXyAtIGZvciBkaXNhYmxpbmcgYSBnY2Mgd2FybmluZy4KQEAg
LTEyMSwyNSArMjA1LDM0IEBACiAvLyAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8gICAtIGRpc2Fi
bGVzIG9wZXJhdG9yPS4KIC8vICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyAtIGRp
c2FibGVzIGNvcHkgY3RvciBhbmQgb3BlcmF0b3I9LgogLy8gICBHVEVTVF9NVVNUX1VTRV9SRVNV
TFRfICAgLSBkZWNsYXJlcyB0aGF0IGEgZnVuY3Rpb24ncyByZXN1bHQgbXVzdCBiZSB1c2VkLgor
Ly8gICBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BVU0hfIC0gc3RhcnQgY29kZSBzZWN0
aW9uIHdoZXJlIE1TVkMgQzQxMjcgaXMKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1cHByZXNzZWQgKGNvbnN0YW50IGNvbmRpdGlvbmFsKS4KKy8vICAgR1RFU1Rf
SU5URU5USU9OQUxfQ09OU1RfQ09ORF9QT1BfICAtIGZpbmlzaCBjb2RlIHNlY3Rpb24gd2hlcmUg
TVNWQyBDNDEyNworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMg
c3VwcHJlc3NlZC4KKy8vCisvLyBDKysxMSBmZWF0dXJlIHdyYXBwZXJzOgorLy8KKy8vICAgdGVz
dGluZzo6aW50ZXJuYWw6OmZvcndhcmQgLSBwb3J0YWJpbGl0eSB3cmFwcGVyIGZvciBzdGQ6OmZv
cndhcmQuCisvLyAgIHRlc3Rpbmc6OmludGVybmFsOjptb3ZlICAtIHBvcnRhYmlsaXR5IHdyYXBw
ZXIgZm9yIHN0ZDo6bW92ZS4KIC8vCiAvLyBTeW5jaHJvbml6YXRpb246CiAvLyAgIE11dGV4LCBN
dXRleExvY2ssIFRocmVhZExvY2FsLCBHZXRUaHJlYWRDb3VudCgpCi0vLyAgICAgICAgICAgICAg
ICAgIC0gc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMuCi0vLyAgIEdURVNUX0lTX1RIUkVBRFNB
RkUgLSBkZWZpbmVkIHRvIDEgdG8gaW5kaWNhdGUgdGhhdCB0aGUgYWJvdmUKLS8vICAgICAgICAg
ICAgICAgICAgICAgICAgIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGhhdmUgcmVhbCBpbXBs
ZW1lbnRhdGlvbnMKLS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBHb29nbGUgVGVzdCBp
cyB0aHJlYWQtc2FmZTsgb3IgMCBvdGhlcndpc2UuCisvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAtIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzLgogLy8KIC8vIFRlbXBsYXRlIG1ldGEg
cHJvZ3JhbW1pbmc6CiAvLyAgIGlzX3BvaW50ZXIgICAgIC0gYXMgaW4gVFIxOyBuZWVkZWQgb24g
U3ltYmlhbiBhbmQgSUJNIFhMIEMvQysrIG9ubHkuCisvLyAgIEl0ZXJhdG9yVHJhaXRzIC0gcGFy
dGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBzdGQ6Oml0ZXJhdG9yX3RyYWl0cywgd2hpY2gKKy8vICAg
ICAgICAgICAgICAgICAgICBpcyBub3QgYXZhaWxhYmxlIGluIGxpYkNzdGQgd2hlbiBjb21waWxl
ZCB3aXRoIFN1biBDKysuCiAvLwogLy8gU21hcnQgcG9pbnRlcnM6CiAvLyAgIHNjb3BlZF9wdHIg
ICAgIC0gYXMgaW4gVFIyLgogLy8KIC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnM6CiAvLyAgIFJFICAg
ICAgICAgICAgIC0gYSBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uIGNsYXNzIHVzaW5nIHRoZSBQ
T1NJWAotLy8gICAgICAgICAgICAgICAgICAgIEV4dGVuZGVkIFJlZ3VsYXIgRXhwcmVzc2lvbiBz
eW50YXguICBOb3QgYXZhaWxhYmxlIG9uCi0vLyAgICAgICAgICAgICAgICAgICAgV2luZG93cy4K
LS8vCisvLyAgICAgICAgICAgICAgICAgICAgRXh0ZW5kZWQgUmVndWxhciBFeHByZXNzaW9uIHN5
bnRheCBvbiBVTklYLWxpa2UgcGxhdGZvcm1zCisvLyAgICAgICAgICAgICAgICAgICAgR09PR0xF
VEVTVF9DTTAwMDggRE8gTk9UIERFTEVURQorLy8gICAgICAgICAgICAgICAgICAgIG9yIGEgcmVk
dWNlZCByZWd1bGFyIGV4Y2VwdGlvbiBzeW50YXggb24gb3RoZXIKKy8vICAgICAgICAgICAgICAg
ICAgICBwbGF0Zm9ybXMsIGluY2x1ZGluZyBXaW5kb3dzLgogLy8gTG9nZ2luZzoKIC8vICAgR1RF
U1RfTE9HXygpICAgLSBsb2dzIG1lc3NhZ2VzIGF0IHRoZSBzcGVjaWZpZWQgc2V2ZXJpdHkgbGV2
ZWwuCiAvLyAgIExvZ1RvU3RkZXJyKCkgIC0gZGlyZWN0cyBhbGwgbG9nIG1lc3NhZ2VzIHRvIHN0
ZGVyci4KQEAgLTE2MCwxMCArMjUzLDkgQEAKIC8vICAgQmlnZ2VzdEludCAgICAgLSB0aGUgYmln
Z2VzdCBzaWduZWQgaW50ZWdlciB0eXBlLgogLy8KIC8vIENvbW1hbmQtbGluZSB1dGlsaXRpZXM6
Ci0vLyAgIEdURVNUX0ZMQUcoKSAgICAgICAtIHJlZmVyZW5jZXMgYSBmbGFnLgogLy8gICBHVEVT
VF9ERUNMQVJFXyooKSAgLSBkZWNsYXJlcyBhIGZsYWcuCiAvLyAgIEdURVNUX0RFRklORV8qKCkg
ICAtIGRlZmluZXMgYSBmbGFnLgotLy8gICBHZXRBcmd2cygpICAgICAgICAgLSByZXR1cm5zIHRo
ZSBjb21tYW5kIGxpbmUgYXMgYSB2ZWN0b3Igb2Ygc3RyaW5ncy4KKy8vICAgR2V0SW5qZWN0YWJs
ZUFyZ3ZzKCkgLSByZXR1cm5zIHRoZSBjb21tYW5kIGxpbmUgYXMgYSB2ZWN0b3Igb2Ygc3RyaW5n
cy4KIC8vCiAvLyBFbnZpcm9ubWVudCB2YXJpYWJsZSB1dGlsaXRpZXM6CiAvLyAgIEdldEVudigp
ICAgICAgICAgICAgIC0gZ2V0cyB0aGUgdmFsdWUgb2YgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUu
CkBAIC0xNzEsMTcxICsyNjMsMzA1IEBACiAvLyAgIEludDMyRnJvbUdUZXN0RW52KCkgIC0gcGFy
c2VzIGFuIEludDMyIGVudmlyb25tZW50IHZhcmlhYmxlLgogLy8gICBTdHJpbmdGcm9tR1Rlc3RF
bnYoKSAtIHBhcnNlcyBhIHN0cmluZyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KIAotI2luY2x1ZGUg
PHN0ZGRlZi5oPiAgLy8gRm9yIHB0cmRpZmZfdAorI2luY2x1ZGUgPGN0eXBlLmg+ICAgLy8gZm9y
IGlzc3BhY2UsIGV0YworI2luY2x1ZGUgPHN0ZGRlZi5oPiAgLy8gZm9yIHB0cmRpZmZfdAogI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+
CiAjaWZuZGVmIF9XSU4zMl9XQ0UKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgorIyBpbmNsdWRlIDxz
eXMvdHlwZXMuaD4KKyMgaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNlbmRpZiAgLy8gIV9XSU4zMl9X
Q0UKIAotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgotI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNy
b3MuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0V4cG9ydE1hY3Jvcy5oPgotI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpZiBk
ZWZpbmVkIF9fQVBQTEVfXworIyBpbmNsdWRlIDxBdmFpbGFiaWxpdHlNYWNyb3MuaD4KKyMgaW5j
bHVkZSA8VGFyZ2V0Q29uZGl0aW9uYWxzLmg+CisjZW5kaWYKIAorLy8gQnJpbmdzIGluIHRoZSBk
ZWZpbml0aW9uIG9mIEhBU19HTE9CQUxfU1RSSU5HLiAgVGhpcyBtdXN0IGJlIGRvbmUKKy8vIEJF
Rk9SRSB3ZSB0ZXN0IEhBU19HTE9CQUxfU1RSSU5HLgorI2luY2x1ZGUgPHN0cmluZz4gIC8vIE5P
TElOVAorI2luY2x1ZGUgPGFsZ29yaXRobT4gIC8vIE5PTElOVAogI2luY2x1ZGUgPGlvc3RyZWFt
PiAgLy8gTk9MSU5UCiAjaW5jbHVkZSA8c3N0cmVhbT4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHN0
cmluZz4gIC8vIE5PTElOVAorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9yPiAg
Ly8gTk9MSU5UCisKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LWFyY2guaCIK
KyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oIgorCisjaWYgIWRl
ZmluZWQoR1RFU1RfREVWX0VNQUlMXykKKyMgZGVmaW5lIEdURVNUX0RFVl9FTUFJTF8gImdvb2ds
ZXRlc3RmcmFtZXdvcmtAQGdvb2dsZWdyb3Vwcy5jb20iCisjIGRlZmluZSBHVEVTVF9GTEFHX1BS
RUZJWF8gImd0ZXN0XyIKKyMgZGVmaW5lIEdURVNUX0ZMQUdfUFJFRklYX0RBU0hfICJndGVzdC0i
CisjIGRlZmluZSBHVEVTVF9GTEFHX1BSRUZJWF9VUFBFUl8gIkdURVNUXyIKKyMgZGVmaW5lIEdU
RVNUX05BTUVfICJHb29nbGUgVGVzdCIKKyMgZGVmaW5lIEdURVNUX1BST0pFQ1RfVVJMXyAiaHR0
cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0LyIKKyNlbmRpZiAgLy8gIWRlZmluZWQo
R1RFU1RfREVWX0VNQUlMXykKIAotI2RlZmluZSBHVEVTVF9ERVZfRU1BSUxfICJnb29nbGV0ZXN0
ZnJhbWV3b3JrQEBnb29nbGVncm91cHMuY29tIgotI2RlZmluZSBHVEVTVF9GTEFHX1BSRUZJWF8g
Imd0ZXN0XyIKLSNkZWZpbmUgR1RFU1RfRkxBR19QUkVGSVhfREFTSF8gImd0ZXN0LSIKLSNkZWZp
bmUgR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJHVEVTVF8iCi0jZGVmaW5lIEdURVNUX05BTUVf
ICJHb29nbGUgVGVzdCIKLSNkZWZpbmUgR1RFU1RfUFJPSkVDVF9VUkxfICJodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xldGVzdC8iCisjaWYgIWRlZmluZWQoR1RFU1RfSU5JVF9HT09HTEVf
VEVTVF9OQU1FXykKKyMgZGVmaW5lIEdURVNUX0lOSVRfR09PR0xFX1RFU1RfTkFNRV8gInRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0IgorI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9JTklUX0dPT0dM
RV9URVNUX05BTUVfKQogCiAvLyBEZXRlcm1pbmVzIHRoZSB2ZXJzaW9uIG9mIGdjYyB0aGF0IGlz
IHVzZWQgdG8gY29tcGlsZSB0aGlzLgogI2lmZGVmIF9fR05VQ19fCiAvLyA0MDMwMiBtZWFucyB2
ZXJzaW9uIDQuMy4yLgotI2RlZmluZSBHVEVTVF9HQ0NfVkVSXyBcCisjIGRlZmluZSBHVEVTVF9H
Q0NfVkVSXyBcCiAgICAgKF9fR05VQ19fKjEwMDAwICsgX19HTlVDX01JTk9SX18qMTAwICsgX19H
TlVDX1BBVENITEVWRUxfXykKICNlbmRpZiAgLy8gX19HTlVDX18KIAotLy8gRGV0ZXJtaW5lcyB0
aGUgcGxhdGZvcm0gb24gd2hpY2ggR29vZ2xlIFRlc3QgaXMgY29tcGlsZWQuCi0jaWZkZWYgX19D
WUdXSU5fXwotI2RlZmluZSBHVEVTVF9PU19DWUdXSU4gMQotI2VsaWYgZGVmaW5lZCBfX1NZTUJJ
QU4zMl9fCi0jZGVmaW5lIEdURVNUX09TX1NZTUJJQU4gMQotI2VsaWYgZGVmaW5lZCBfV0lOMzIK
LSNkZWZpbmUgR1RFU1RfT1NfV0lORE9XUyAxCi0jaWZkZWYgX1dJTjMyX1dDRQotI2RlZmluZSBH
VEVTVF9PU19XSU5ET1dTX01PQklMRSAxCi0jZWxpZiBkZWZpbmVkKF9fTUlOR1dfXykgfHwgZGVm
aW5lZChfX01JTkdXMzJfXykKLSNkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19NSU5HVyAxCisvLyBN
YWNyb3MgZm9yIGRpc2FibGluZyBNaWNyb3NvZnQgVmlzdWFsIEMrKyB3YXJuaW5ncy4KKy8vCisv
LyAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQ4MDAgNDM4NSkKKy8vICAgLyog
Y29kZSB0aGF0IHRyaWdnZXJzIHdhcm5pbmdzIEM0ODAwIGFuZCBDNDM4NSAqLworLy8gICBHVEVT
VF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKyNpZiBfTVNDX1ZFUiA+PSAxNDAwCisjIGRl
ZmluZSBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyh3YXJuaW5ncykgXAorICAgIF9f
cHJhZ21hKHdhcm5pbmcocHVzaCkpICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9fcHJh
Z21hKHdhcm5pbmcoZGlzYWJsZTogd2FybmluZ3MpKQorIyBkZWZpbmUgR1RFU1RfRElTQUJMRV9N
U0NfV0FSTklOR1NfUE9QXygpICAgICAgICAgIFwKKyAgICBfX3ByYWdtYSh3YXJuaW5nKHBvcCkp
CiAjZWxzZQotI2RlZmluZSBHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1AgMQotI2VuZGlmICAvLyBf
V0lOMzJfV0NFCi0jZWxpZiBkZWZpbmVkIF9fQVBQTEVfXwotI2RlZmluZSBHVEVTVF9PU19NQUMg
MQotI2VsaWYgZGVmaW5lZCBfX2xpbnV4X18KLSNkZWZpbmUgR1RFU1RfT1NfTElOVVggMQotI2Vs
aWYgZGVmaW5lZCBfX0dOVV9fCi0jZGVmaW5lIEdURVNUX09TX0hVUkQgMQotI2VsaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKF9fRnJl
ZUJTRF9rZXJuZWxfXykKLSNkZWZpbmUgR1RFU1RfT1NfRlJFRUJTRCAxCi0jZWxpZiBkZWZpbmVk
IF9fTVZTX18KLSNkZWZpbmUgR1RFU1RfT1NfWk9TIDEKLSNlbGlmIGRlZmluZWQoX19zdW4pICYm
IGRlZmluZWQoX19TVlI0KQotI2RlZmluZSBHVEVTVF9PU19TT0xBUklTIDEKLSNlbGlmIGRlZmlu
ZWQoX0FJWCkKLSNkZWZpbmUgR1RFU1RfT1NfQUlYIDEKLSNlbmRpZiAgLy8gX19DWUdXSU5fXwot
Ci0jaWYgR1RFU1RfT1NfQ1lHV0lOIHx8IEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8
fCBHVEVTVF9PU19TWU1CSUFOIHx8IFwKLSAgICBHVEVTVF9PU19TT0xBUklTIHx8IEdURVNUX09T
X0FJWCB8fCBHVEVTVF9PU19GUkVFQlNEIHx8IEdURVNUX09TX0hVUkQKKy8vIE9sZGVyIHZlcnNp
b25zIG9mIE1TVkMgZG9uJ3QgaGF2ZSBfX3ByYWdtYS4KKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVf
TVNDX1dBUk5JTkdTX1BVU0hfKHdhcm5pbmdzKQorIyBkZWZpbmUgR1RFU1RfRElTQUJMRV9NU0Nf
V0FSTklOR1NfUE9QXygpCisjZW5kaWYKKworLy8gQ2xhbmcgb24gV2luZG93cyBkb2VzIG5vdCB1
bmRlcnN0YW5kIE1TVkMncyBwcmFnbWEgd2FybmluZy4KKy8vIFdlIG5lZWQgY2xhbmctc3BlY2lm
aWMgd2F5IHRvIGRpc2FibGUgZnVuY3Rpb24gZGVwcmVjYXRpb24gd2FybmluZy4KKyNpZmRlZiBf
X2NsYW5nX18KKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVTSF8oKSAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgX1ByYWdtYSgiY2xhbmcgZGlhZ25vc3RpYyBw
dXNoIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9QcmFnbWEoImNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCBcIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNcIiIpIFwK
KyAgICBfUHJhZ21hKCJjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV2RlcHJlY2F0ZWQtaW1w
bGVtZW50YXRpb25zXCIiKQorI2RlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BP
UF8oKSBcCisgICAgX1ByYWdtYSgiY2xhbmcgZGlhZ25vc3RpYyBwb3AiKQorI2Vsc2UKKyMgZGVm
aW5lIEdURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVTSF8oKSBcCisgICAgR1RFU1RfRElT
QUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDk5NikKKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVND
X0RFUFJFQ0FURURfUE9QXygpIFwKKyAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1Bf
KCkKKyNlbmRpZgorCisjaWZuZGVmIEdURVNUX0xBTkdfQ1hYMTEKKy8vIGdjYyBhbmQgY2xhbmcg
ZGVmaW5lIF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fIHdoZW4KKy8vIC1zdGQ9e2MsZ251fSsr
ezB4LDExfSBpcyBwYXNzZWQuICBUaGUgQysrMTEgc3RhbmRhcmQgc3BlY2lmaWVzIGEKKy8vIHZh
bHVlIGZvciBfX2NwbHVzcGx1cywgYW5kIHJlY2VudCB2ZXJzaW9ucyBvZiBjbGFuZywgZ2NjLCBh
bmQKKy8vIHByb2JhYmx5IG90aGVyIGNvbXBpbGVycyBzZXQgdGhhdCB0b28gaW4gQysrMTEgbW9k
ZS4KKyMgaWYgX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18gfHwgX19jcGx1c3BsdXMgPj0gMjAx
MTAzTCB8fCBfTVNDX1ZFUiA+PSAxOTAwCisvLyBDb21waWxpbmcgaW4gYXQgbGVhc3QgQysrMTEg
bW9kZS4KKyMgIGRlZmluZSBHVEVTVF9MQU5HX0NYWDExIDEKKyMgZWxzZQorIyAgZGVmaW5lIEdU
RVNUX0xBTkdfQ1hYMTEgMAorIyBlbmRpZgorI2VuZGlmCisKKy8vIERpc3RpbmN0IGZyb20gQysr
MTEgbGFuZ3VhZ2Ugc3VwcG9ydCwgc29tZSBlbnZpcm9ubWVudHMgZG9uJ3QgcHJvdmlkZQorLy8g
cHJvcGVyIEMrKzExIGxpYnJhcnkgc3VwcG9ydC4gTm90YWJseSwgaXQncyBwb3NzaWJsZSB0byBi
dWlsZCBpbgorLy8gQysrMTEgbW9kZSB3aGVuIHRhcmdldGluZyBNYWMgT1MgWCAxMC42LCB3aGlj
aCBoYXMgYW4gb2xkIGxpYnN0ZGMrKworLy8gd2l0aCBubyBDKysxMSBzdXBwb3J0LgorLy8KKy8v
IGxpYnN0ZGMrKyBoYXMgc3VmZmljaWVudCBDKysxMSBzdXBwb3J0IGFzIG9mIEdDQyA0LjYuMCwg
X19HTElCQ1hYX18KKy8vIDIwMTEwMzI1LCBidXQgbWFpbnRlbmFuY2UgcmVsZWFzZXMgaW4gdGhl
IDQuNCBhbmQgNC41IHNlcmllcyBmb2xsb3dlZAorLy8gdGhpcyBkYXRlLCBzbyBjaGVjayBmb3Ig
dGhvc2UgdmVyc2lvbnMgYnkgdGhlaXIgZGF0ZSBzdGFtcHMuCisvLyBodHRwczovL2djYy5nbnUu
b3JnL29ubGluZWRvY3MvbGlic3RkYysrL21hbnVhbC9hYmkuaHRtbCNhYmkudmVyc2lvbmluZwor
I2lmIEdURVNUX0xBTkdfQ1hYMTEgJiYgXAorICAgICghZGVmaW5lZChfX0dMSUJDWFhfXykgfHwg
KCBcCisgICAgICAgIF9fR0xJQkNYWF9fID49IDIwMTEwMzI1dWwgJiYgIC8qIEdDQyA+PSA0LjYu
MCAqLyBcCisgICAgICAgIC8qIEJsYWNrbGlzdCBvZiBwYXRjaCByZWxlYXNlcyBvZiBvbGRlciBi
cmFuY2hlczogKi8gXAorICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDExMDQxNnVsICYmICAvKiBH
Q0MgNC40LjYgKi8gXAorICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDEyMDMxM3VsICYmICAvKiBH
Q0MgNC40LjcgKi8gXAorICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDExMDQyOHVsICYmICAvKiBH
Q0MgNC41LjMgKi8gXAorICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDEyMDcwMnVsKSkgICAvKiBH
Q0MgNC41LjQgKi8KKyMgZGVmaW5lIEdURVNUX1NURExJQl9DWFgxMSAxCisjZW5kaWYKKworLy8g
T25seSB1c2UgQysrMTEgbGlicmFyeSBmZWF0dXJlcyBpZiB0aGUgbGlicmFyeSBwcm92aWRlcyB0
aGVtLgorI2lmIEdURVNUX1NURExJQl9DWFgxMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9CRUdJ
Tl9BTkRfRU5EXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8gMQorIyBp
ZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgKF9NU0NfRlVMTF9WRVIgPj0gMTkwMDIzODI0KQorLy8g
d29ya3Mgb25seSB3aXRoIFZTMjAxNVUyIGFuZCBiZXR0ZXIKKyMgICBkZWZpbmUgR1RFU1RfSEFT
X1NURF9GVU5DVElPTl8gMQorIyBlbmRpZgorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9JTklUSUFM
SVpFUl9MSVNUXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX01PVkVfIDEKKyMgZGVmaW5lIEdU
RVNUX0hBU19TVERfVU5JUVVFX1BUUl8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9TSEFSRURf
UFRSXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfVU5PUkRFUkVEX01BUF8gMQorIyBkZWZpbmUgR1RF
U1RfSEFTX1VOT1JERVJFRF9TRVRfIDEKKyNlbmRpZgorCisvLyBDKysxMSBzcGVjaWZpZXMgdGhh
dCA8dHVwbGU+IHByb3ZpZGVzIHN0ZDo6dHVwbGUuCisvLyBTb21lIHBsYXRmb3JtcyBzdGlsbCBt
aWdodCBub3QgaGF2ZSBpdCwgaG93ZXZlci4KKyNpZiBHVEVTVF9MQU5HX0NYWDExCisjIGRlZmlu
ZSBHVEVTVF9IQVNfU1REX1RVUExFXyAxCisjIGlmIGRlZmluZWQoX19jbGFuZ19fKQorLy8gSW5z
cGlyZWQgYnkKKy8vIGh0dHBzOi8vY2xhbmcubGx2bS5vcmcvZG9jcy9MYW5ndWFnZUV4dGVuc2lv
bnMuaHRtbCNpbmNsdWRlLWZpbGUtY2hlY2tpbmctbWFjcm9zCisjICBpZiBkZWZpbmVkKF9faGFz
X2luY2x1ZGUpICYmICFfX2hhc19pbmNsdWRlKDx0dXBsZT4pCisjICAgdW5kZWYgR1RFU1RfSEFT
X1NURF9UVVBMRV8KKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfTVNDX1ZFUikKKy8vIEluc3Bp
cmVkIGJ5IGJvb3N0L2NvbmZpZy9zdGRsaWIvZGlua3Vtd2FyZS5ocHAKKyMgIGlmIGRlZmluZWQo
X0NQUExJQl9WRVIpICYmIF9DUFBMSUJfVkVSIDwgNTIwCisjICAgdW5kZWYgR1RFU1RfSEFTX1NU
RF9UVVBMRV8KKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX0dMSUJDWFhfXykKKy8vIEluc3Bp
cmVkIGJ5IGJvb3N0L2NvbmZpZy9zdGRsaWIvbGlic3RkY3BwMy5ocHAsCisvLyBodHRwOi8vZ2Nj
LmdudS5vcmcvZ2NjLTQuMi9jaGFuZ2VzLmh0bWwgYW5kCisvLyBodHRwczovL3dlYi5hcmNoaXZl
Lm9yZy93ZWIvMjAxNDAyMjcwNDQ0MjkvZ2NjLmdudS5vcmcvb25saW5lZG9jcy9saWJzdGRjKysv
bWFudWFsL2JrMDFwdDAxY2gwMS5odG1sI21hbnVhbC5pbnRyby5zdGF0dXMuc3RhbmRhcmQuMjAw
eAorIyAgaWYgX19HTlVDX18gPCA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9f
IDwgMikKKyMgICB1bmRlZiBHVEVTVF9IQVNfU1REX1RVUExFXworIyAgZW5kaWYKKyMgZW5kaWYK
KyNlbmRpZgorCisvLyBCcmluZ3MgaW4gZGVmaW5pdGlvbnMgZm9yIGZ1bmN0aW9ucyB1c2VkIGlu
IHRoZSB0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXgKKy8vIG5hbWVzcGFjZSAocmVhZCwgd3JpdGUs
IGNsb3NlLCBjaGRpciwgaXNhdHR5LCBzdGF0KS4gV2UgZG8gbm90IGN1cnJlbnRseQorLy8gdXNl
IHRoZW0gb24gV2luZG93cyBNb2JpbGUuCisjaWYgR1RFU1RfT1NfV0lORE9XUworIyBpZiAhR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKKyMgIGluY2x1ZGUgPGRpcmVjdC5oPgorIyAgaW5jbHVkZSA8
aW8uaD4KKyMgZW5kaWYKKy8vIEluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBpbmNsdWRlIDx3
aW5kb3dzLmg+LCB1c2UgZm9yd2FyZCBkZWNsYXJhdGlvbgorI2lmIEdURVNUX09TX1dJTkRPV1Nf
TUlOR1cgJiYgIWRlZmluZWQoX19NSU5HVzY0X1ZFUlNJT05fTUFKT1IpCisvLyBNaW5HVyBkZWZp
bmVkIF9DUklUSUNBTF9TRUNUSU9OIGFuZCBfUlRMX0NSSVRJQ0FMX1NFQ1RJT04gYXMgdHdvCisv
LyBzZXBhcmF0ZSAoZXF1aXZhbGVudCkgc3RydWN0cywgaW5zdGVhZCBvZiB1c2luZyB0eXBlZGVm
Cit0eXBlZGVmIHN0cnVjdCBfQ1JJVElDQUxfU0VDVElPTiBHVEVTVF9DUklUSUNBTF9TRUNUSU9O
OworI2Vsc2UKKy8vIEFzc3VtZSBDUklUSUNBTF9TRUNUSU9OIGlzIGEgdHlwZWRlZiBvZiBfUlRM
X0NSSVRJQ0FMX1NFQ1RJT04uCisvLyBUaGlzIGFzc3VtcHRpb24gaXMgdmVyaWZpZWQgYnkKKy8v
IFdpbmRvd3NUeXBlc1Rlc3QuQ1JJVElDQUxfU0VDVElPTklzX1JUTF9DUklUSUNBTF9TRUNUSU9O
LgordHlwZWRlZiBzdHJ1Y3QgX1JUTF9DUklUSUNBTF9TRUNUSU9OIEdURVNUX0NSSVRJQ0FMX1NF
Q1RJT047CisjZW5kaWYKKyNlbHNlCisvLyBUaGlzIGFzc3VtZXMgdGhhdCBub24tV2luZG93cyBP
U2VzIHByb3ZpZGUgdW5pc3RkLmguIEZvciBPU2VzIHdoZXJlIHRoaXMKKy8vIGlzIG5vdCB0aGUg
Y2FzZSwgd2UgbmVlZCB0byBpbmNsdWRlIGhlYWRlcnMgdGhhdCBwcm92aWRlIHRoZSBmdW5jdGlv
bnMKKy8vIG1lbnRpb25lZCBhYm92ZS4KKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjIGluY2x1ZGUg
PHN0cmluZ3MuaD4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjaWYgR1RFU1RfT1Nf
TElOVVhfQU5EUk9JRAorLy8gVXNlZCB0byBkZWZpbmUgX19BTkRST0lEX0FQSV9fIG1hdGNoaW5n
IHRoZSB0YXJnZXQgTkRLIEFQSSBsZXZlbC4KKyMgIGluY2x1ZGUgPGFuZHJvaWQvYXBpLWxldmVs
Lmg+ICAvLyBOT0xJTlQKKyNlbmRpZgorCisvLyBEZWZpbmVzIHRoaXMgdG8gdHJ1ZSBpZmYgR29v
Z2xlIFRlc3QgY2FuIHVzZSBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb25zLgorI2lmbmRlZiBHVEVT
VF9IQVNfUE9TSVhfUkUKKyMgaWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRAorLy8gT24gQW5kcm9p
ZCwgPHJlZ2V4Lmg+IGlzIG9ubHkgYXZhaWxhYmxlIHN0YXJ0aW5nIHdpdGggR2luZ2VyYnJlYWQu
CisjICBkZWZpbmUgR1RFU1RfSEFTX1BPU0lYX1JFIChfX0FORFJPSURfQVBJX18gPj0gOSkKKyMg
ZWxzZQorIyAgZGVmaW5lIEdURVNUX0hBU19QT1NJWF9SRSAoIUdURVNUX09TX1dJTkRPV1MpCisj
IGVuZGlmCisjZW5kaWYKKworI2lmIEdURVNUX1VTRVNfUENSRQorLy8gVGhlIGFwcHJvcHJpYXRl
IGhlYWRlcnMgaGF2ZSBhbHJlYWR5IGJlZW4gaW5jbHVkZWQuCisKKyNlbGlmIEdURVNUX0hBU19Q
T1NJWF9SRQogCiAvLyBPbiBzb21lIHBsYXRmb3JtcywgPHJlZ2V4Lmg+IG5lZWRzIHNvbWVvbmUg
dG8gZGVmaW5lIHNpemVfdCwgYW5kCiAvLyB3b24ndCBjb21waWxlIG90aGVyd2lzZS4gIFdlIGNh
biAjaW5jbHVkZSBpdCBoZXJlIGFzIHdlIGFscmVhZHkKIC8vIGluY2x1ZGVkIDxzdGRsaWIuaD4s
IHdoaWNoIGlzIGd1YXJhbnRlZWQgdG8gZGVmaW5lIHNpemVfdCB0aHJvdWdoCiAvLyA8c3RkZGVm
Lmg+LgotI2lmIEhBVkUoUkVHRVhfSCkKLSNpbmNsdWRlIDxyZWdleC5oPiAgLy8gTk9MSU5UCi0j
ZGVmaW5lIEdURVNUX1VTRVNfUE9TSVhfUkUgMQotI2Vsc2UKLSNkZWZpbmUgR1RFU1RfVVNFU19T
SU1QTEVfUkUgMQotI2VuZGlmCi0jaW5jbHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5UCi0jaW5j
bHVkZSA8c3lzL3R5cGVzLmg+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDx0aW1lLmg+ICAvLyBOT0xJ
TlQKLSNpbmNsdWRlIDx1bmlzdGQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxyZWdleC5oPiAg
Ly8gTk9MSU5UCiAKKyMgZGVmaW5lIEdURVNUX1VTRVNfUE9TSVhfUkUgMQogCiAjZWxpZiBHVEVT
VF9PU19XSU5ET1dTCiAKLSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSNpbmNsdWRlIDxk
aXJlY3QuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPGlvLmg+ICAvLyBOT0xJTlQKLSNlbmRpZgot
CiAvLyA8cmVnZXguaD4gaXMgbm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLiAgVXNlIG91ciBvd24g
c2ltcGxlIHJlZ2V4CiAvLyBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkLgotI2RlZmluZSBHVEVTVF9V
U0VTX1NJTVBMRV9SRSAxCisjIGRlZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9SRSAxCiAKICNlbHNl
CiAKIC8vIDxyZWdleC5oPiBtYXkgbm90IGJlIGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtLiAg
VXNlIG91ciBvd24KIC8vIHNpbXBsZSByZWdleCBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkLgotI2Rl
ZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9SRSAxCisjIGRlZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9S
RSAxCiAKLSNlbmRpZiAgLy8gR1RFU1RfT1NfQ1lHV0lOIHx8IEdURVNUX09TX0xJTlVYIHx8IEdU
RVNUX09TX01BQyB8fAotICAgICAgICAvLyBHVEVTVF9PU19TWU1CSUFOIHx8IEdURVNUX09TX1NP
TEFSSVMgfHwgR1RFU1RfT1NfQUlYIHx8Ci0gICAgICAgIC8vIEdURVNUX09TX0ZSRUVCU0QgfHwg
R1RFU1RfT1NfSFVSRAorI2VuZGlmICAvLyBHVEVTVF9VU0VTX1BDUkUKIAogI2lmbmRlZiBHVEVT
VF9IQVNfRVhDRVBUSU9OUwogLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMgd2hldGhlciBleGNl
cHRpb25zIGFyZSBlbmFibGVkLCBzbyB3ZSBuZWVkCiAvLyB0byBmaWd1cmUgaXQgb3V0LgotI2lm
IGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQotLy8gTVNWQydzIGFu
ZCBDKytCdWlsZGVyJ3MgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBTVEwgdXNlIHRoZSBfSEFTX0VY
Q0VQVElPTlMKKyMgaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZChfQ1BQVU5XSU5EKQor
Ly8gTVNWQyBkZWZpbmVzIF9DUFBVTldJTkQgdG8gMSBpZmYgZXhjZXB0aW9ucyBhcmUgZW5hYmxl
ZC4KKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCisjIGVsaWYgZGVmaW5lZChfX0JP
UkxBTkRDX18pCisvLyBDKytCdWlsZGVyJ3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNUTCB1c2Vz
IHRoZSBfSEFTX0VYQ0VQVElPTlMKIC8vIG1hY3JvIHRvIGVuYWJsZSBleGNlcHRpb25zLCBzbyB3
ZSdsbCBkbyB0aGUgc2FtZS4KIC8vIEFzc3VtZXMgdGhhdCBleGNlcHRpb25zIGFyZSBlbmFibGVk
IGJ5IGRlZmF1bHQuCi0jaWZuZGVmIF9IQVNfRVhDRVBUSU9OUwotI2RlZmluZSBfSEFTX0VYQ0VQ
VElPTlMgMQotI2VuZGlmICAvLyBfSEFTX0VYQ0VQVElPTlMKLSNkZWZpbmUgR1RFU1RfSEFTX0VY
Q0VQVElPTlMgX0hBU19FWENFUFRJT05TCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0VY
Q0VQVElPTlMKKyMgIGlmbmRlZiBfSEFTX0VYQ0VQVElPTlMKKyMgICBkZWZpbmUgX0hBU19FWENF
UFRJT05TIDEKKyMgIGVuZGlmICAvLyBfSEFTX0VYQ0VQVElPTlMKKyMgIGRlZmluZSBHVEVTVF9I
QVNfRVhDRVBUSU9OUyBfSEFTX0VYQ0VQVElPTlMKKyMgZWxpZiBkZWZpbmVkKF9fY2xhbmdfXykK
Ky8vIGNsYW5nIGRlZmluZXMgX19FWENFUFRJT05TIGlmZiBleGNlcHRpb25zIGFyZSBlbmFibGVk
IGJlZm9yZSBjbGFuZyAyMjA3MTQsCisvLyBidXQgaWZmIGNsZWFudXBzIGFyZSBlbmFibGVkIGFm
dGVyIHRoYXQuIEluIE9iai1DKysgZmlsZXMsIHRoZXJlIGNhbiBiZQorLy8gY2xlYW51cHMgZm9y
IE9iakMgZXhjZXB0aW9ucyB3aGljaCBhbHNvIG5lZWQgY2xlYW51cHMsIGV2ZW4gaWYgQysrIGV4
Y2VwdGlvbnMKKy8vIGFyZSBkaXNhYmxlZC4gY2xhbmcgaGFzIF9faGFzX2ZlYXR1cmUoY3h4X2V4
Y2VwdGlvbnMpIHdoaWNoIGNoZWNrcyBmb3IgQysrCisvLyBleGNlcHRpb25zIHN0YXJ0aW5nIGF0
IGNsYW5nIHIyMDYzNTIsIGJ1dCB3aGljaCBjaGVja2VkIGZvciBjbGVhbnVwcyBwcmlvciB0bwor
Ly8gdGhhdC4gVG8gcmVsaWFibHkgY2hlY2sgZm9yIEMrKyBleGNlcHRpb24gYXZhaWxhYmlsaXR5
IHdpdGggY2xhbmcsIGNoZWNrIGZvcgorLy8gX19FWENFUFRJT05TICYmIF9faGFzX2ZlYXR1cmUo
Y3h4X2V4Y2VwdGlvbnMpLgorIyAgZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIChfX0VYQ0VQ
VElPTlMgJiYgX19oYXNfZmVhdHVyZShjeHhfZXhjZXB0aW9ucykpCisjIGVsaWYgZGVmaW5lZChf
X0dOVUNfXykgJiYgX19FWENFUFRJT05TCiAvLyBnY2MgZGVmaW5lcyBfX0VYQ0VQVElPTlMgdG8g
MSBpZmYgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZC4KLSNkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElP
TlMgMQotI2VsaWYgZGVmaW5lZChfX1NVTlBST19DQykKKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhD
RVBUSU9OUyAxCisjIGVsaWYgZGVmaW5lZChfX1NVTlBST19DQykKIC8vIFN1biBQcm8gQ0Mgc3Vw
cG9ydHMgZXhjZXB0aW9ucy4gIEhvd2V2ZXIsIHRoZXJlIGlzIG5vIGNvbXBpbGUtdGltZSB3YXkg
b2YKIC8vIGRldGVjdGluZyB3aGV0aGVyIHRoZXkgYXJlIGVuYWJsZWQgb3Igbm90LiAgVGhlcmVm
b3JlLCB3ZSBhc3N1bWUgdGhhdAogLy8gdGhleSBhcmUgZW5hYmxlZCB1bmxlc3MgdGhlIHVzZXIg
dGVsbHMgdXMgb3RoZXJ3aXNlLgotI2RlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCi0jZWxp
ZiBkZWZpbmVkKF9fSUJNQ1BQX18pICYmIF9fRVhDRVBUSU9OUworIyAgZGVmaW5lIEdURVNUX0hB
U19FWENFUFRJT05TIDEKKyMgZWxpZiBkZWZpbmVkKF9fSUJNQ1BQX18pICYmIF9fRVhDRVBUSU9O
UwogLy8geGxDIGRlZmluZXMgX19FWENFUFRJT05TIHRvIDEgaWZmIGV4Y2VwdGlvbnMgYXJlIGVu
YWJsZWQuCi0jZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIDEKLSNlbHNlCisjICBkZWZpbmUg
R1RFU1RfSEFTX0VYQ0VQVElPTlMgMQorIyBlbGlmIGRlZmluZWQoX19IUF9hQ0MpCisvLyBFeGNl
cHRpb24gaGFuZGxpbmcgaXMgaW4gZWZmZWN0IGJ5IGRlZmF1bHQgaW4gSFAgYUNDIGNvbXBpbGVy
LiBJdCBoYXMgdG8KKy8vIGJlIHR1cm5lZCBvZiBieSArbm9laCBjb21waWxlciBvcHRpb24gaWYg
ZGVzaXJlZC4KKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCisjIGVsc2UKIC8vIEZv
ciBvdGhlciBjb21waWxlcnMsIHdlIGFzc3VtZSBleGNlcHRpb25zIGFyZSBkaXNhYmxlZCB0byBi
ZQogLy8gY29uc2VydmF0aXZlLgotI2RlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAwCi0jZW5k
aWYgIC8vIGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQorIyAgZGVm
aW5lIEdURVNUX0hBU19FWENFUFRJT05TIDAKKyMgZW5kaWYgIC8vIGRlZmluZWQoX01TQ19WRVIp
IHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQogI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9O
UwogCiAjaWYgIWRlZmluZWQoR1RFU1RfSEFTX1NURF9TVFJJTkcpCiAvLyBFdmVuIHRob3VnaCB3
ZSBkb24ndCB1c2UgdGhpcyBtYWNybyBhbnkgbG9uZ2VyLCB3ZSBrZWVwIGl0IGluIGNhc2UKIC8v
IHNvbWUgY2xpZW50cyBzdGlsbCBkZXBlbmQgb24gaXQuCi0jZGVmaW5lIEdURVNUX0hBU19TVERf
U1RSSU5HIDEKKyMgZGVmaW5lIEdURVNUX0hBU19TVERfU1RSSU5HIDEKICNlbGlmICFHVEVTVF9I
QVNfU1REX1NUUklORwogLy8gVGhlIHVzZXIgdG9sZCB1cyB0aGF0IDo6c3RkOjpzdHJpbmcgaXNu
J3QgYXZhaWxhYmxlLgotI2Vycm9yICJHb29nbGUgVGVzdCBjYW5ub3QgYmUgdXNlZCB3aGVyZSA6
OnN0ZDo6c3RyaW5nIGlzbid0IGF2YWlsYWJsZS4iCisjIGVycm9yICI6OnN0ZDo6c3RyaW5nIGlz
bid0IGF2YWlsYWJsZS4iCiAjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0hBU19TVERfU1RSSU5H
KQogCiAjaWZuZGVmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0vLyBUaGUgdXNlciBkaWRuJ3Qg
dGVsbCB1cyB3aGV0aGVyIDo6c3RyaW5nIGlzIGF2YWlsYWJsZSwgc28gd2UgbmVlZAotLy8gdG8g
ZmlndXJlIGl0IG91dC4KLQotI2RlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORyAwCi0KKyMg
ZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HIDAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0dM
T0JBTF9TVFJJTkcKIAogI2lmbmRlZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKIC8vIFRoZSB1c2Vy
IGRpZG4ndCB0ZWxsIHVzIHdoZXRoZXIgOjpzdGQ6OndzdHJpbmcgaXMgYXZhaWxhYmxlLCBzbyB3
ZSBuZWVkCiAvLyB0byBmaWd1cmUgaXQgb3V0LgotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHVz
ZXMgYXV0b2NvbmYgdG8gZGV0ZWN0IHdoZXRoZXIgOjpzdGQ6OndzdHJpbmcKKy8vIEZJWE1FOiB1
c2VzIGF1dG9jb25mIHRvIGRldGVjdCB3aGV0aGVyIDo6c3RkOjp3c3RyaW5nCiAvLyAgIGlzIGF2
YWlsYWJsZS4KIAotLy8gQ3lnd2luIDEuNSBhbmQgYmVsb3cgZG9lc24ndCBzdXBwb3J0IDo6c3Rk
Ojp3c3RyaW5nLgotLy8gQ3lnd2luIDEuNyBtaWdodCBhZGQgd3N0cmluZyBzdXBwb3J0OyB0aGlz
IHNob3VsZCBiZSB1cGRhdGVkIHdoZW4gY2xlYXIuCi0vLyBTb2xhcmlzJyBsaWJjKysgZG9lc24n
dCBzdXBwb3J0IGl0IGVpdGhlci4KLSNkZWZpbmUgR1RFU1RfSEFTX1NURF9XU1RSSU5HICghKEdU
RVNUX09TX0NZR1dJTiB8fCBHVEVTVF9PU19TT0xBUklTKSkKKy8vIEN5Z3dpbiAxLjcgYW5kIGJl
bG93IGRvZXNuJ3Qgc3VwcG9ydCA6OnN0ZDo6d3N0cmluZy4KKy8vIFNvbGFyaXMnIGxpYmMrKyBk
b2Vzbid0IHN1cHBvcnQgaXQgZWl0aGVyLiAgQW5kcm9pZCBoYXMKKy8vIG5vIHN1cHBvcnQgZm9y
IGl0IGF0IGxlYXN0IGFzIHJlY2VudCBhcyBGcm95byAoMi4yKS4KKyMgZGVmaW5lIEdURVNUX0hB
U19TVERfV1NUUklORyBcCisgICAgKCEoR1RFU1RfT1NfTElOVVhfQU5EUk9JRCB8fCBHVEVTVF9P
U19DWUdXSU4gfHwgR1RFU1RfT1NfU09MQVJJUykpCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1NU
RF9XU1RSSU5HCiAKICNpZm5kZWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCiAvLyBUaGUgdXNl
ciBkaWRuJ3QgdGVsbCB1cyB3aGV0aGVyIDo6d3N0cmluZyBpcyBhdmFpbGFibGUsIHNvIHdlIG5l
ZWQKIC8vIHRvIGZpZ3VyZSBpdCBvdXQuCi0jZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfV1NUUklO
RyBcCisjIGRlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcgXAogICAgIChHVEVTVF9IQVNf
U1REX1dTVFJJTkcgJiYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcpCiAjZW5kaWYgIC8vIEdURVNU
X0hBU19HTE9CQUxfV1NUUklORwogCkBAIC0zNDQsMTMzICs1NzAsMjEyIEBACiAvLyBUaGUgdXNl
ciBkaWRuJ3QgdGVsbCB1cyB3aGV0aGVyIFJUVEkgaXMgZW5hYmxlZCwgc28gd2UgbmVlZCB0bwog
Ly8gZmlndXJlIGl0IG91dC4KIAotI2lmZGVmIF9NU0NfVkVSCisjIGlmZGVmIF9NU0NfVkVSCiAK
LSNpZmRlZiBfQ1BQUlRUSSAgLy8gTVNWQyBkZWZpbmVzIHRoaXMgbWFjcm8gaWZmIFJUVEkgaXMg
ZW5hYmxlZC4KLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQotI2Vsc2UKLSNkZWZpbmUgR1RFU1Rf
SEFTX1JUVEkgMAotI2VuZGlmCisjICBpZmRlZiBfQ1BQUlRUSSAgLy8gTVNWQyBkZWZpbmVzIHRo
aXMgbWFjcm8gaWZmIFJUVEkgaXMgZW5hYmxlZC4KKyMgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkg
MQorIyAgZWxzZQorIyAgIGRlZmluZSBHVEVTVF9IQVNfUlRUSSAwCisjICBlbmRpZgogCiAvLyBT
dGFydGluZyB3aXRoIHZlcnNpb24gNC4zLjIsIGdjYyBkZWZpbmVzIF9fR1hYX1JUVEkgaWZmIFJU
VEkgaXMgZW5hYmxlZC4KLSNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIChHVEVTVF9HQ0NfVkVS
XyA+PSA0MDMwMikKLQotI2lmZGVmIF9fR1hYX1JUVEkKLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkg
MQotI2Vsc2UKLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAotI2VuZGlmICAvLyBfX0dYWF9SVFRJ
CisjIGVsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMzAyKQor
CisjICBpZmRlZiBfX0dYWF9SVFRJCisvLyBXaGVuIGJ1aWxkaW5nIGFnYWluc3QgU1RMcG9ydCB3
aXRoIHRoZSBBbmRyb2lkIE5ESyBhbmQgd2l0aAorLy8gLWZydHRpIC1mbm8tZXhjZXB0aW9ucywg
dGhlIGJ1aWxkIGZhaWxzIGF0IGxpbmsgdGltZSB3aXRoIHVuZGVmaW5lZAorLy8gcmVmZXJlbmNl
cyB0byBfX2N4YV9iYWRfdHlwZWlkLiBOb3RlIHN1cmUgaWYgU1RMIG9yIHRvb2xjaGFpbiBidWcs
CisvLyBzbyBkaXNhYmxlIFJUVEkgd2hlbiBkZXRlY3RlZC4KKyMgICBpZiBHVEVTVF9PU19MSU5V
WF9BTkRST0lEICYmIGRlZmluZWQoX1NUTFBPUlRfTUFKT1IpICYmIFwKKyAgICAgICAhZGVmaW5l
ZChfX0VYQ0VQVElPTlMpCisjICAgIGRlZmluZSBHVEVTVF9IQVNfUlRUSSAwCisjICAgZWxzZQor
IyAgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQorIyAgIGVuZGlmICAvLyBHVEVTVF9PU19MSU5V
WF9BTkRST0lEICYmIF9fU1RMUE9SVF9NQUpPUiAmJiAhX19FWENFUFRJT05TCisjICBlbHNlCisj
ICAgZGVmaW5lIEdURVNUX0hBU19SVFRJIDAKKyMgIGVuZGlmICAvLyBfX0dYWF9SVFRJCisKKy8v
IENsYW5nIGRlZmluZXMgX19HWFhfUlRUSSBzdGFydGluZyB3aXRoIHZlcnNpb24gMy4wLCBidXQg
aXRzIG1hbnVhbCByZWNvbW1lbmRzCisvLyB1c2luZyBoYXNfZmVhdHVyZSBpbnN0ZWFkLiBoYXNf
ZmVhdHVyZShjeHhfcnR0aSkgaXMgc3VwcG9ydGVkIHNpbmNlIDIuNywgdGhlCisvLyBmaXJzdCB2
ZXJzaW9uIHdpdGggQysrIHN1cHBvcnQuCisjIGVsaWYgZGVmaW5lZChfX2NsYW5nX18pCisKKyMg
IGRlZmluZSBHVEVTVF9IQVNfUlRUSSBfX2hhc19mZWF0dXJlKGN4eF9ydHRpKQogCiAvLyBTdGFy
dGluZyB3aXRoIHZlcnNpb24gOS4wIElCTSBWaXN1YWwgQWdlIGRlZmluZXMgX19SVFRJX0FMTF9f
IHRvIDEgaWYKIC8vIGJvdGggdGhlIHR5cGVpZCBhbmQgZHluYW1pY19jYXN0IGZlYXR1cmVzIGFy
ZSBwcmVzZW50LgotI2VsaWYgZGVmaW5lZChfX0lCTUNQUF9fKSAmJiAoX19JQk1DUFBfXyA+PSA5
MDApCisjIGVsaWYgZGVmaW5lZChfX0lCTUNQUF9fKSAmJiAoX19JQk1DUFBfXyA+PSA5MDApCiAK
LSNpZmRlZiBfX1JUVElfQUxMX18KLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQotI2Vsc2UKLSNk
ZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAotI2VuZGlmCisjICBpZmRlZiBfX1JUVElfQUxMX18KKyMg
ICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQorIyAgZWxzZQorIyAgIGRlZmluZSBHVEVTVF9IQVNf
UlRUSSAwCisjICBlbmRpZgogCi0jZWxzZQorIyBlbHNlCiAKIC8vIEZvciBhbGwgb3RoZXIgY29t
cGlsZXJzLCB3ZSBhc3N1bWUgUlRUSSBpcyBlbmFibGVkLgotI2RlZmluZSBHVEVTVF9IQVNfUlRU
SSAxCisjICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQogCi0jZW5kaWYgIC8vIF9NU0NfVkVSCisj
IGVuZGlmICAvLyBfTVNDX1ZFUgogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19SVFRJCiAKIC8vIEl0
J3MgdGhpcyBoZWFkZXIncyByZXNwb25zaWJpbGl0eSB0byAjaW5jbHVkZSA8dHlwZWluZm8+IHdo
ZW4gUlRUSQogLy8gaXMgZW5hYmxlZC4KICNpZiBHVEVTVF9IQVNfUlRUSQotI2luY2x1ZGUgPHR5
cGVpbmZvPgorIyBpbmNsdWRlIDx0eXBlaW5mbz4KICNlbmRpZgogCiAvLyBEZXRlcm1pbmVzIHdo
ZXRoZXIgR29vZ2xlIFRlc3QgY2FuIHVzZSB0aGUgcHRocmVhZHMgbGlicmFyeS4KICNpZm5kZWYg
R1RFU1RfSEFTX1BUSFJFQUQKLS8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIGV4cGxpY2l0bHks
IHNvIHdlIGFzc3VtZSBwdGhyZWFkcyBzdXBwb3J0IGlzCi0vLyBhdmFpbGFibGUgb24gTGludXgg
YW5kIE1hYy4KKy8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIGV4cGxpY2l0bHksIHNvIHdlIG1h
a2UgcmVhc29uYWJsZSBhc3N1bXB0aW9ucyBhYm91dAorLy8gd2hpY2ggcGxhdGZvcm1zIGhhdmUg
cHRocmVhZHMgc3VwcG9ydC4KIC8vCiAvLyBUbyBkaXNhYmxlIHRocmVhZGluZyBzdXBwb3J0IGlu
IEdvb2dsZSBUZXN0LCBhZGQgLURHVEVTVF9IQVNfUFRIUkVBRD0wCiAvLyB0byB5b3VyIGNvbXBp
bGVyIGZsYWdzLgotI2RlZmluZSBHVEVTVF9IQVNfUFRIUkVBRCAoR1RFU1RfT1NfTElOVVggfHwg
R1RFU1RfT1NfRlJFRUJTRCB8fCBHVEVTVF9PU19IVVJEIHx8IEdURVNUX09TX01BQykKKyNkZWZp
bmUgR1RFU1RfSEFTX1BUSFJFQUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgIChHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19NQUMgfHwgR1RFU1RfT1Nf
SFBVWCB8fCBHVEVTVF9PU19RTlggfHwgXAorICAgR1RFU1RfT1NfRlJFRUJTRCB8fCBHVEVTVF9P
U19OQUNMIHx8IEdURVNUX09TX05FVEJTRCB8fCBHVEVTVF9PU19GVUNIU0lBKQogI2VuZGlmICAv
LyBHVEVTVF9IQVNfUFRIUkVBRAogCisjaWYgR1RFU1RfSEFTX1BUSFJFQUQKKy8vIGd0ZXN0LXBv
cnQuaCBndWFyYW50ZWVzIHRvICNpbmNsdWRlIDxwdGhyZWFkLmg+IHdoZW4gR1RFU1RfSEFTX1BU
SFJFQUQgaXMKKy8vIHRydWUuCisjIGluY2x1ZGUgPHB0aHJlYWQuaD4gIC8vIE5PTElOVAorCisv
LyBGb3IgdGltZXNwZWMgYW5kIG5hbm9zbGVlcCwgdXNlZCBiZWxvdy4KKyMgaW5jbHVkZSA8dGlt
ZS5oPiAgLy8gTk9MSU5UCisjZW5kaWYKKworLy8gRGV0ZXJtaW5lcyBpZiBoYXNoX21hcC9oYXNo
X3NldCBhcmUgYXZhaWxhYmxlLgorLy8gT25seSB1c2VkIGZvciB0ZXN0aW5nIGFnYWluc3QgdGhv
c2UgY29udGFpbmVycy4KKyNpZiAhZGVmaW5lZChHVEVTVF9IQVNfSEFTSF9NQVBfKQorIyBpZiBk
ZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPCAxOTAwKQorIyAgZGVmaW5lIEdURVNUX0hB
U19IQVNIX01BUF8gMSAgLy8gSW5kaWNhdGVzIHRoYXQgaGFzaF9tYXAgaXMgYXZhaWxhYmxlLgor
IyAgZGVmaW5lIEdURVNUX0hBU19IQVNIX1NFVF8gMSAgLy8gSW5kaWNhdGVzIHRoYXQgaGFzaF9z
ZXQgaXMgYXZhaWxhYmxlLgorIyBlbmRpZiAgLy8gX01TQ19WRVIKKyNlbmRpZiAgLy8gIWRlZmlu
ZWQoR1RFU1RfSEFTX0hBU0hfTUFQXykKKwogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIEdvb2dsZSBU
ZXN0IGNhbiB1c2UgdHIxL3R1cGxlLiAgWW91IGNhbiBkZWZpbmUKIC8vIHRoaXMgbWFjcm8gdG8g
MCB0byBwcmV2ZW50IEdvb2dsZSBUZXN0IGZyb20gdXNpbmcgdHVwbGUgKGFueQogLy8gZmVhdHVy
ZSBkZXBlbmRpbmcgb24gdHVwbGUgd2l0aCBiZSBkaXNhYmxlZCBpbiB0aGlzIG1vZGUpLgogI2lm
bmRlZiBHVEVTVF9IQVNfVFIxX1RVUExFCisjIGlmIEdURVNUX09TX0xJTlVYX0FORFJPSUQgJiYg
ZGVmaW5lZChfU1RMUE9SVF9NQUpPUikKKy8vIFNUTHBvcnQsIHByb3ZpZGVkIHdpdGggdGhlIEFu
ZHJvaWQgTkRLLCBoYXMgbmVpdGhlciA8dHIxL3R1cGxlPiBvciA8dHVwbGU+LgorIyAgZGVmaW5l
IEdURVNUX0hBU19UUjFfVFVQTEUgMAorIyBlbGlmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVND
X1ZFUiA+PSAxOTEwKQorLy8gUHJldmVudCBgd2FybmluZyBDNDk5NjogJ3N0ZDo6dHIxJzogd2Fy
bmluZyBTVEw0MDAyOgorLy8gVGhlIG5vbi1TdGFuZGFyZCBzdGQ6OnRyMSBuYW1lc3BhY2UgYW5k
IFRSMS1vbmx5IG1hY2hpbmVyeQorLy8gYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgUkVNT1ZF
RC5gCisjICBkZWZpbmUgR1RFU1RfSEFTX1RSMV9UVVBMRSAwCisjIGVsaWYgR1RFU1RfTEFOR19D
WFgxMSAmJiBkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikKKy8vIGxpYmMrKyBkb2Vzbid0IHN1cHBv
cnQgVFIxLgorIyAgZGVmaW5lIEdURVNUX0hBU19UUjFfVFVQTEUgMAorIyBlbHNlCiAvLyBUaGUg
dXNlciBkaWRuJ3QgdGVsbCB1cyBub3QgdG8gZG8gaXQsIHNvIHdlIGFzc3VtZSBpdCdzIE9LLgot
I2RlZmluZSBHVEVTVF9IQVNfVFIxX1RVUExFIDEKKyMgIGRlZmluZSBHVEVTVF9IQVNfVFIxX1RV
UExFIDEKKyMgZW5kaWYKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRQogCiAvLyBEZXRl
cm1pbmVzIHdoZXRoZXIgR29vZ2xlIFRlc3QncyBvd24gdHIxIHR1cGxlIGltcGxlbWVudGF0aW9u
CiAvLyBzaG91bGQgYmUgdXNlZC4KICNpZm5kZWYgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUKKy8v
IFdlIHVzZSBvdXIgb3duIHR1cGxlIGltcGxlbWVudGF0aW9uIG9uIFN5bWJpYW4uCisjIGlmIEdU
RVNUX09TX1NZTUJJQU4KKyMgIGRlZmluZSBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSAxCisjIGVs
c2UKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzLCBzbyB3ZSBuZWVkIHRvIGZpZ3VyZSBpdCBv
dXQuCiAKIC8vIFdlIHVzZSBvdXIgb3duIFRSMSB0dXBsZSBpZiB3ZSBhcmVuJ3Qgc3VyZSB0aGUg
dXNlciBoYXMgYW4KLS8vIGltcGxlbWVudGF0aW9uIG9mIGl0IGFscmVhZHkuICBBdCB0aGlzIHRp
bWUsIEdDQyA0LjAuMCsgYW5kIE1TVkMKLS8vIDIwMTAgYXJlIHRoZSBvbmx5IG1haW5zdHJlYW0g
Y29tcGlsZXJzIHRoYXQgY29tZSB3aXRoIGEgVFIxIHR1cGxlCi0vLyBpbXBsZW1lbnRhdGlvbi4g
IE5WSURJQSdzIENVREEgTlZDQyBjb21waWxlciBwcmV0ZW5kcyB0byBiZSBHQ0MgYnkKLS8vIGRl
ZmluaW5nIF9fR05VQ19fIGFuZCBmcmllbmRzLCBidXQgY2Fubm90IGNvbXBpbGUgR0NDJ3MgdHVw
bGUKLS8vIGltcGxlbWVudGF0aW9uLiAgTVNWQyAyMDA4ICg5LjApIHByb3ZpZGVzIFRSMSB0dXBs
ZSBpbiBhIDMyMyBNQgotLy8gRmVhdHVyZSBQYWNrIGRvd25sb2FkLCB3aGljaCB3ZSBjYW5ub3Qg
YXNzdW1lIHRoZSB1c2VyIGhhcy4KLSNpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQo
X19DVURBQ0NfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMDAwKSkgXAotICAgIHx8IF9NU0Nf
VkVSID49IDE2MDAKLSNkZWZpbmUgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgMAotI2Vsc2UKLSNk
ZWZpbmUgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgMQotI2VuZGlmCi0KKy8vIGltcGxlbWVudGF0
aW9uIG9mIGl0IGFscmVhZHkuICBBdCB0aGlzIHRpbWUsIGxpYnN0ZGMrKyA0LjAuMCsgYW5kCisv
LyBNU1ZDIDIwMTAgYXJlIHRoZSBvbmx5IG1haW5zdHJlYW0gc3RhbmRhcmQgbGlicmFyaWVzIHRo
YXQgY29tZQorLy8gd2l0aCBhIFRSMSB0dXBsZSBpbXBsZW1lbnRhdGlvbi4gIE5WSURJQSdzIENV
REEgTlZDQyBjb21waWxlcgorLy8gcHJldGVuZHMgdG8gYmUgR0NDIGJ5IGRlZmluaW5nIF9fR05V
Q19fIGFuZCBmcmllbmRzLCBidXQgY2Fubm90CisvLyBjb21waWxlIEdDQydzIHR1cGxlIGltcGxl
bWVudGF0aW9uLiAgTVNWQyAyMDA4ICg5LjApIHByb3ZpZGVzIFRSMQorLy8gdHVwbGUgaW4gYSAz
MjMgTUIgRmVhdHVyZSBQYWNrIGRvd25sb2FkLCB3aGljaCB3ZSBjYW5ub3QgYXNzdW1lIHRoZQor
Ly8gdXNlciBoYXMuICBRTlgncyBRQ0MgY29tcGlsZXIgaXMgYSBtb2RpZmllZCBHQ0MgYnV0IGl0
IGRvZXNuJ3QKKy8vIHN1cHBvcnQgVFIxIHR1cGxlLiAgbGliYysrIG9ubHkgcHJvdmlkZXMgc3Rk
Ojp0dXBsZSwgaW4gQysrMTEgbW9kZSwKKy8vIGFuZCBpdCBjYW4gYmUgdXNlZCB3aXRoIHNvbWUg
Y29tcGlsZXJzIHRoYXQgZGVmaW5lIF9fR05VQ19fLgorIyBpZiAoZGVmaW5lZChfX0dOVUNfXykg
JiYgIWRlZmluZWQoX19DVURBQ0NfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMDAwKSBcCisg
ICAgICAmJiAhR1RFU1RfT1NfUU5YICYmICFkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikpIFwKKyAg
ICAgIHx8IChfTVNDX1ZFUiA+PSAxNjAwICYmIF9NU0NfVkVSIDwgMTkwMCkKKyMgIGRlZmluZSBH
VEVTVF9FTlZfSEFTX1RSMV9UVVBMRV8gMQorIyBlbmRpZgorCisvLyBDKysxMSBzcGVjaWZpZXMg
dGhhdCA8dHVwbGU+IHByb3ZpZGVzIHN0ZDo6dHVwbGUuIFVzZSB0aGF0IGlmIGd0ZXN0IGlzIHVz
ZWQKKy8vIGluIEMrKzExIG1vZGUgYW5kIGxpYnN0ZGMrKyBpc24ndCB2ZXJ5IG9sZCAoYmluYXJp
ZXMgdGFyZ2V0aW5nIE9TIFggMTAuNgorLy8gY2FuIGJ1aWxkIHdpdGggY2xhbmcgYnV0IG5lZWQg
dG8gdXNlIGdjYzQuMidzIGxpYnN0ZGMrKykuCisjIGlmIEdURVNUX0xBTkdfQ1hYMTEgJiYgKCFk
ZWZpbmVkKF9fR0xJQkNYWF9fKSB8fCBfX0dMSUJDWFhfXyA+IDIwMTEwMzI1KQorIyAgZGVmaW5l
IEdURVNUX0VOVl9IQVNfU1REX1RVUExFXyAxCisjIGVuZGlmCisKKyMgaWYgR1RFU1RfRU5WX0hB
U19UUjFfVFVQTEVfIHx8IEdURVNUX0VOVl9IQVNfU1REX1RVUExFXworIyAgZGVmaW5lIEdURVNU
X1VTRV9PV05fVFIxX1RVUExFIDAKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX1VTRV9PV05fVFIx
X1RVUExFIDEKKyMgZW5kaWYKKyMgZW5kaWYgIC8vIEdURVNUX09TX1NZTUJJQU4KICNlbmRpZiAg
Ly8gR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUKIAotLy8gVG8gYXZvaWQgY29uZGl0aW9uYWwgY29t
cGlsYXRpb24gZXZlcnl3aGVyZSwgd2UgbWFrZSBpdAotLy8gZ3Rlc3QtcG9ydC5oJ3MgcmVzcG9u
c2liaWxpdHkgdG8gI2luY2x1ZGUgdGhlIGhlYWRlciBpbXBsZW1lbnRpbmcKLS8vIHRyMS90dXBs
ZS4KKy8vIFRvIGF2b2lkIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHdlIG1ha2UgaXQgZ3Rlc3Qt
cG9ydC5oJ3MgcmVzcG9uc2liaWxpdHkKKy8vIHRvICNpbmNsdWRlIHRoZSBoZWFkZXIgaW1wbGVt
ZW50aW5nIHR1cGxlLgorI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCisjIGluY2x1ZGUgPHR1cGxl
PiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydAorIyBkZWZpbmUgR1RFU1RfVFVQTEVfTkFNRVNQQUNF
XyA6OnN0ZAorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1RVUExFXworCisvLyBXZSBpbmNsdWRl
IHRyMTo6dHVwbGUgZXZlbiBpZiBzdGQ6OnR1cGxlIGlzIGF2YWlsYWJsZSB0byBkZWZpbmUgcHJp
bnRlcnMgZm9yCisvLyB0aGVtLgogI2lmIEdURVNUX0hBU19UUjFfVFVQTEUKKyMgaWZuZGVmIEdU
RVNUX1RVUExFX05BTUVTUEFDRV8KKyMgIGRlZmluZSBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfIDo6
c3RkOjp0cjEKKyMgZW5kaWYgIC8vIEdURVNUX1RVUExFX05BTUVTUEFDRV8KIAotI2lmIEdURVNU
X1VTRV9PV05fVFIxX1RVUExFCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUu
aD4KLSNlbGlmIEdURVNUX09TX1NZTUJJQU4KKyMgaWYgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUK
KyMgIGluY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgiICAvLyBJV1lVIHByYWdt
YTogZXhwb3J0ICAvLyBOT0xJTlQKKyMgZWxpZiBHVEVTVF9PU19TWU1CSUFOCiAKIC8vIE9uIFN5
bWJpYW4sIEJPT1NUX0hBU19UUjFfVFVQTEUgY2F1c2VzIEJvb3N0J3MgVFIxIHR1cGxlIGxpYnJh
cnkgdG8KIC8vIHVzZSBTVExwb3J0J3MgdHVwbGUgaW1wbGVtZW50YXRpb24sIHdoaWNoIHVuZm9y
dHVuYXRlbHkgZG9lc24ndAogLy8gd29yayBhcyB0aGUgY29weSBvZiBTVExwb3J0IGRpc3RyaWJ1
dGVkIHdpdGggU3ltYmlhbiBpcyBpbmNvbXBsZXRlLgogLy8gQnkgbWFraW5nIHN1cmUgQk9PU1Rf
SEFTX1RSMV9UVVBMRSBpcyB1bmRlZmluZWQsIHdlIGZvcmNlIEJvb3N0IHRvCiAvLyB1c2UgaXRz
IG93biB0dXBsZSBpbXBsZW1lbnRhdGlvbi4KLSNpZmRlZiBCT09TVF9IQVNfVFIxX1RVUExFCi0j
dW5kZWYgQk9PU1RfSEFTX1RSMV9UVVBMRQotI2VuZGlmICAvLyBCT09TVF9IQVNfVFIxX1RVUExF
CisjICBpZmRlZiBCT09TVF9IQVNfVFIxX1RVUExFCisjICAgdW5kZWYgQk9PU1RfSEFTX1RSMV9U
VVBMRQorIyAgZW5kaWYgIC8vIEJPT1NUX0hBU19UUjFfVFVQTEUKIAogLy8gVGhpcyBwcmV2ZW50
cyA8Ym9vc3QvdHIxL2RldGFpbC9jb25maWcuaHBwPiwgd2hpY2ggZGVmaW5lcwogLy8gQk9PU1Rf
SEFTX1RSMV9UVVBMRSwgZnJvbSBiZWluZyAjaW5jbHVkZWQgYnkgQm9vc3QncyA8dHVwbGU+Lgot
I2RlZmluZSBCT09TVF9UUjFfREVUQUlMX0NPTkZJR19IUFBfSU5DTFVERUQKLSNpbmNsdWRlIDx0
dXBsZT4KKyMgIGRlZmluZSBCT09TVF9UUjFfREVUQUlMX0NPTkZJR19IUFBfSU5DTFVERUQKKyMg
IGluY2x1ZGUgPHR1cGxlPiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydCAgLy8gTk9MSU5UCiAKLSNl
bGlmIGRlZmluZWQoX19HTlVDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSA0MDAwMCkKKyMgZWxp
ZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0gNDAwMDApCiAvLyBHQ0Mg
NC4wKyBpbXBsZW1lbnRzIHRyMS90dXBsZSBpbiB0aGUgPHRyMS90dXBsZT4gaGVhZGVyLiAgVGhp
cyBkb2VzCiAvLyBub3QgY29uZm9ybSB0byB0aGUgVFIxIHNwZWMsIHdoaWNoIHJlcXVpcmVzIHRo
ZSBoZWFkZXIgdG8gYmUgPHR1cGxlPi4KIAotI2lmICFHVEVTVF9IQVNfUlRUSSAmJiBHVEVTVF9H
Q0NfVkVSXyA8IDQwMzAyCisjICBpZiAhR1RFU1RfSEFTX1JUVEkgJiYgR1RFU1RfR0NDX1ZFUl8g
PCA0MDMwMgogLy8gVW50aWwgdmVyc2lvbiA0LjMuMiwgZ2NjIGhhcyBhIGJ1ZyB0aGF0IGNhdXNl
cyA8dHIxL2Z1bmN0aW9uYWw+LAogLy8gd2hpY2ggaXMgI2luY2x1ZGVkIGJ5IDx0cjEvdHVwbGU+
LCB0byBub3QgY29tcGlsZSB3aGVuIFJUVEkgaXMKIC8vIGRpc2FibGVkLiAgX1RSMV9GVU5DVElP
TkFMIGlzIHRoZSBoZWFkZXIgZ3VhcmQgZm9yCi0vLyA8dHIxL2Z1bmN0aW9uYWw+LiAgSGVuY2Ug
dGhlIGZvbGxvd2luZyAjZGVmaW5lIGlzIGEgaGFjayB0byBwcmV2ZW50CisvLyA8dHIxL2Z1bmN0
aW9uYWw+LiAgSGVuY2UgdGhlIGZvbGxvd2luZyAjZGVmaW5lIGlzIHVzZWQgdG8gcHJldmVudAog
Ly8gPHRyMS9mdW5jdGlvbmFsPiBmcm9tIGJlaW5nIGluY2x1ZGVkLgotI2RlZmluZSBfVFIxX0ZV
TkNUSU9OQUwgMQotI2luY2x1ZGUgPHRyMS90dXBsZT4KLSN1bmRlZiBfVFIxX0ZVTkNUSU9OQUwg
IC8vIEFsbG93cyB0aGUgdXNlciB0byAjaW5jbHVkZQotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gPHRyMS9mdW5jdGlvbmFsPiBpZiBoZSBjaG9vc2VzIHRvLgotI2Vsc2UKLSNpbmNsdWRlIDx0
cjEvdHVwbGU+ICAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gIUdURVNUX0hBU19SVFRJICYmIEdURVNU
X0dDQ19WRVJfIDwgNDAzMDIKLQotI2Vsc2UKLS8vIElmIHRoZSBjb21waWxlciBpcyBub3QgR0ND
IDQuMCssIHdlIGFzc3VtZSB0aGUgdXNlciBpcyB1c2luZyBhCi0vLyBzcGVjLWNvbmZvcm1pbmcg
VFIxIGltcGxlbWVudGF0aW9uLgotI2luY2x1ZGUgPHR1cGxlPiAgLy8gTk9MSU5UCi0jZW5kaWYg
IC8vIEdURVNUX1VTRV9PV05fVFIxX1RVUExFCisjICAgZGVmaW5lIF9UUjFfRlVOQ1RJT05BTCAx
CisjICAgaW5jbHVkZSA8dHIxL3R1cGxlPgorIyAgIHVuZGVmIF9UUjFfRlVOQ1RJT05BTCAgLy8g
QWxsb3dzIHRoZSB1c2VyIHRvICNpbmNsdWRlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyA8
dHIxL2Z1bmN0aW9uYWw+IGlmIHRoZXkgY2hvb3NlIHRvLgorIyAgZWxzZQorIyAgIGluY2x1ZGUg
PHRyMS90dXBsZT4gIC8vIE5PTElOVAorIyAgZW5kaWYgIC8vICFHVEVTVF9IQVNfUlRUSSAmJiBH
VEVTVF9HQ0NfVkVSXyA8IDQwMzAyCisKKy8vIFZTIDIwMTAgbm93IGhhcyB0cjEgc3VwcG9ydC4K
KyMgZWxpZiBfTVNDX1ZFUiA+PSAxNjAwCisjICBpbmNsdWRlIDx0dXBsZT4gIC8vIElXWVUgcHJh
Z21hOiBleHBvcnQgIC8vIE5PTElOVAorCisjIGVsc2UgIC8vIEdURVNUX1VTRV9PV05fVFIxX1RV
UExFCisjICBpbmNsdWRlIDx0cjEvdHVwbGU+ICAvLyBJV1lVIHByYWdtYTogZXhwb3J0ICAvLyBO
T0xJTlQKKyMgZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fVFIxX1RVUExFCiAKICNlbmRpZiAgLy8g
R1RFU1RfSEFTX1RSMV9UVVBMRQogCkBAIC00ODEsNTkgKzc4Niw4MCBAQAogI2lmbmRlZiBHVEVT
VF9IQVNfQ0xPTkUKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzLCBzbyB3ZSBuZWVkIHRvIGZp
Z3VyZSBpdCBvdXQuCiAKLSNpZiBHVEVTVF9PU19MSU5VWCAmJiAhZGVmaW5lZChfX2lhNjRfXykK
LSNkZWZpbmUgR1RFU1RfSEFTX0NMT05FIDEKLSNlbHNlCi0jZGVmaW5lIEdURVNUX0hBU19DTE9O
RSAwCi0jZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYICYmICFkZWZpbmVkKF9faWE2NF9fKQorIyBp
ZiBHVEVTVF9PU19MSU5VWCAmJiAhZGVmaW5lZChfX2lhNjRfXykKKyMgIGlmIEdURVNUX09TX0xJ
TlVYX0FORFJPSUQKKy8vIE9uIEFuZHJvaWQsIGNsb25lKCkgYmVjYW1lIGF2YWlsYWJsZSBhdCBk
aWZmZXJlbnQgQVBJIGxldmVscyBmb3IgZWFjaCAzMi1iaXQKKy8vIGFyY2hpdGVjdHVyZS4KKyMg
ICAgaWYgZGVmaW5lZChfX0xQNjRfXykgfHwgXAorICAgICAgICAoZGVmaW5lZChfX2FybV9fKSAm
JiBfX0FORFJPSURfQVBJX18gPj0gOSkgfHwgXAorICAgICAgICAoZGVmaW5lZChfX21pcHNfXykg
JiYgX19BTkRST0lEX0FQSV9fID49IDEyKSB8fCBcCisgICAgICAgIChkZWZpbmVkKF9faTM4Nl9f
KSAmJiBfX0FORFJPSURfQVBJX18gPj0gMTcpCisjICAgICBkZWZpbmUgR1RFU1RfSEFTX0NMT05F
IDEKKyMgICAgZWxzZQorIyAgICAgZGVmaW5lIEdURVNUX0hBU19DTE9ORSAwCisjICAgIGVuZGlm
CisjICBlbHNlCisjICAgZGVmaW5lIEdURVNUX0hBU19DTE9ORSAxCisjICBlbmRpZgorIyBlbHNl
CisjICBkZWZpbmUgR1RFU1RfSEFTX0NMT05FIDAKKyMgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVY
ICYmICFkZWZpbmVkKF9faWE2NF9fKQogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORQogCiAv
LyBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc3VwcG9ydCBzdHJlYW0gcmVkaXJlY3Rpb24uIFRoaXMg
aXMgdXNlZCB0byB0ZXN0CiAvLyBvdXRwdXQgY29ycmVjdG5lc3MgYW5kIHRvIGltcGxlbWVudCBk
ZWF0aCB0ZXN0cy4KLSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZ
TUJJQU4KLSNkZWZpbmUgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8gMQotI2VuZGlmICAv
LyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZTUJJQU4KKyNpZm5kZWYg
R1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgorLy8gQnkgZGVmYXVsdCwgd2UgYXNzdW1lIHRo
YXQgc3RyZWFtIHJlZGlyZWN0aW9uIGlzIHN1cHBvcnRlZCBvbiBhbGwKKy8vIHBsYXRmb3JtcyBl
eGNlcHQga25vd24gbW9iaWxlIG9uZXMuCisjIGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8
IEdURVNUX09TX1NZTUJJQU4gfHwgXAorICAgIEdURVNUX09TX1dJTkRPV1NfUEhPTkUgfHwgR1RF
U1RfT1NfV0lORE9XU19SVAorIyAgZGVmaW5lIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04g
MAorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTiAxCisjIGVu
ZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZTUJJQU4KKyNl
bmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgogCiAvLyBEZXRlcm1pbmVzIHdo
ZXRoZXIgdG8gc3VwcG9ydCBkZWF0aCB0ZXN0cy4KIC8vIEdvb2dsZSBUZXN0IGRvZXMgbm90IHN1
cHBvcnQgZGVhdGggdGVzdHMgZm9yIFZDIDcuMSBhbmQgZWFybGllciBhcwogLy8gYWJvcnQoKSBp
biBhIFZDIDcuMSBhcHBsaWNhdGlvbiBjb21waWxlZCBhcyBHVUkgaW4gZGVidWcgY29uZmlnCiAv
LyBwb3BzIHVwIGEgZGlhbG9nIHdpbmRvdyB0aGF0IGNhbm5vdCBiZSBzdXBwcmVzc2VkIHByb2dy
YW1tYXRpY2FsbHkuCi0jaWYgKEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX0ZSRUVCU0QgfHwg
R1RFU1RfT1NfSFVSRCB8fCBcCi0gICAgIEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19DWUdXSU4g
fHwgR1RFU1RfT1NfU09MQVJJUyB8fCBcCi0gICAgIChHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1Ag
JiYgX01TQ19WRVIgPj0gMTQwMCkgfHwgXAotICAgICBHVEVTVF9PU19XSU5ET1dTX01JTkdXIHx8
IEdURVNUX09TX0FJWCkKLSNkZWZpbmUgR1RFU1RfSEFTX0RFQVRIX1RFU1QgMQotI2luY2x1ZGUg
PHZlY3Rvcj4gIC8vIE5PTElOVAorI2lmIChHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19DWUdX
SU4gfHwgR1RFU1RfT1NfU09MQVJJUyB8fCAgIFwKKyAgICAgKEdURVNUX09TX01BQyAmJiAhR1RF
U1RfT1NfSU9TKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIChHVEVTVF9PU19X
SU5ET1dTX0RFU0tUT1AgJiYgX01TQ19WRVIgPj0gMTQwMCkgfHwgICAgICAgICAgXAorICAgICBH
VEVTVF9PU19XSU5ET1dTX01JTkdXIHx8IEdURVNUX09TX0FJWCB8fCBHVEVTVF9PU19IUFVYIHx8
IFwKKyAgICAgR1RFU1RfT1NfT1BFTkJTRCB8fCBHVEVTVF9PU19RTlggfHwgR1RFU1RfT1NfRlJF
RUJTRCB8fCBcCisgICAgIEdURVNUX09TX05FVEJTRCB8fCBHVEVTVF9PU19GVUNIU0lBKQorIyBk
ZWZpbmUgR1RFU1RfSEFTX0RFQVRIX1RFU1QgMQogI2VuZGlmCiAKLS8vIFdlIGRvbid0IHN1cHBv
cnQgTVNWQyA3LjEgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkIG5vdy4gIFRoZXJlZm9yZQotLy8g
YWxsIHRoZSBjb21waWxlcnMgd2UgY2FyZSBhYm91dCBhcmUgYWRlcXVhdGUgZm9yIHN1cHBvcnRp
bmcKLS8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCi0jZGVmaW5lIEdURVNUX0hBU19QQVJB
TV9URVNUIDEKLQogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHN1cHBvcnQgdHlwZS1kcml2ZW4g
dGVzdHMuCiAKIC8vIFR5cGVkIHRlc3RzIG5lZWQgPHR5cGVpbmZvPiBhbmQgdmFyaWFkaWMgbWFj
cm9zLCB3aGljaCBHQ0MsIFZDKysgOC4wLAotLy8gU3VuIFBybyBDQywgYW5kIElCTSBWaXN1YWwg
QWdlIHN1cHBvcnQuCisvLyBTdW4gUHJvIENDLCBJQk0gVmlzdWFsIEFnZSwgYW5kIEhQIGFDQyBz
dXBwb3J0LgogI2lmIGRlZmluZWQoX19HTlVDX18pIHx8IChfTVNDX1ZFUiA+PSAxNDAwKSB8fCBk
ZWZpbmVkKF9fU1VOUFJPX0NDKSB8fCBcCi0gICAgZGVmaW5lZChfX0lCTUNQUF9fKQotI2RlZmlu
ZSBHVEVTVF9IQVNfVFlQRURfVEVTVCAxCi0jZGVmaW5lIEdURVNUX0hBU19UWVBFRF9URVNUX1Ag
MQorICAgIGRlZmluZWQoX19JQk1DUFBfXykgfHwgZGVmaW5lZChfX0hQX2FDQykKKyMgZGVmaW5l
IEdURVNUX0hBU19UWVBFRF9URVNUIDEKKyMgZGVmaW5lIEdURVNUX0hBU19UWVBFRF9URVNUX1Ag
MQogI2VuZGlmCiAKIC8vIERldGVybWluZXMgd2hldGhlciB0byBzdXBwb3J0IENvbWJpbmUoKS4g
VGhpcyBvbmx5IG1ha2VzIHNlbnNlIHdoZW4KIC8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMg
YXJlIGVuYWJsZWQuICBUaGUgaW1wbGVtZW50YXRpb24gZG9lc24ndAogLy8gd29yayBvbiBTdW4g
U3R1ZGlvIHNpbmNlIGl0IGRvZXNuJ3QgdW5kZXJzdGFuZCB0ZW1wbGF0ZWQgY29udmVyc2lvbgog
Ly8gb3BlcmF0b3JzLgotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUICYmIEdURVNUX0hBU19UUjFf
VFVQTEUgJiYgIWRlZmluZWQoX19TVU5QUk9fQ0MpCi0jZGVmaW5lIEdURVNUX0hBU19DT01CSU5F
IDEKKyNpZiAoR1RFU1RfSEFTX1RSMV9UVVBMRSB8fCBHVEVTVF9IQVNfU1REX1RVUExFXykgJiYg
IWRlZmluZWQoX19TVU5QUk9fQ0MpCisjIGRlZmluZSBHVEVTVF9IQVNfQ09NQklORSAxCiAjZW5k
aWYKIAogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzeXN0ZW0gY29tcGlsZXIgdXNlcyBVVEYt
MTYgZm9yIGVuY29kaW5nIHdpZGUgc3RyaW5ncy4KICNkZWZpbmUgR1RFU1RfV0lERV9TVFJJTkdf
VVNFU19VVEYxNl8gXAogICAgIChHVEVTVF9PU19XSU5ET1dTIHx8IEdURVNUX09TX0NZR1dJTiB8
fCBHVEVTVF9PU19TWU1CSUFOIHx8IEdURVNUX09TX0FJWCkKIAorLy8gRGV0ZXJtaW5lcyB3aGV0
aGVyIHRlc3QgcmVzdWx0cyBjYW4gYmUgc3RyZWFtZWQgdG8gYSBzb2NrZXQuCisjaWYgR1RFU1Rf
T1NfTElOVVgKKyMgZGVmaW5lIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18gMQorI2VuZGlmCisK
IC8vIERlZmluZXMgc29tZSB1dGlsaXR5IG1hY3Jvcy4KIAogLy8gVGhlIEdOVSBjb21waWxlciBl
bWl0cyBhIHdhcm5pbmcgaWYgbmVzdGVkICJpZiIgc3RhdGVtZW50cyBhcmUgZm9sbG93ZWQgYnkK
QEAgLTU0NSw5ICs4NzEsOSBAQAogLy8KIC8vIFRoZSAic3dpdGNoICgwKSBjYXNlIDA6IiBpZGlv
bSBpcyB1c2VkIHRvIHN1cHByZXNzIHRoaXMuCiAjaWZkZWYgX19JTlRFTF9DT01QSUxFUgotI2Rl
ZmluZSBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXworIyBkZWZpbmUgR1RFU1RfQU1CSUdV
T1VTX0VMU0VfQkxPQ0tFUl8KICNlbHNlCi0jZGVmaW5lIEdURVNUX0FNQklHVU9VU19FTFNFX0JM
T0NLRVJfIHN3aXRjaCAoMCkgY2FzZSAwOiAgLy8gTk9MSU5UCisjIGRlZmluZSBHVEVTVF9BTUJJ
R1VPVVNfRUxTRV9CTE9DS0VSXyBzd2l0Y2ggKDApIGNhc2UgMDogZGVmYXVsdDogIC8vIE5PTElO
VAogI2VuZGlmCiAKIC8vIFVzZSB0aGlzIGFubm90YXRpb24gYXQgdGhlIGVuZCBvZiBhIHN0cnVj
dC9jbGFzcyBkZWZpbml0aW9uIHRvCkBAIC01NjIsMjAgKzg4OCw0OSBAQAogLy8gQWxzbyB1c2Ug
aXQgYWZ0ZXIgYSB2YXJpYWJsZSBvciBwYXJhbWV0ZXIgZGVjbGFyYXRpb24gdG8gdGVsbCB0aGUK
IC8vIGNvbXBpbGVyIHRoZSB2YXJpYWJsZS9wYXJhbWV0ZXIgZG9lcyBub3QgaGF2ZSB0byBiZSB1
c2VkLgogI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKENPTVBJTEVSX0lDQykKLSNk
ZWZpbmUgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCisj
IGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkK
KyNlbGlmIGRlZmluZWQoX19jbGFuZ19fKQorIyBpZiBfX2hhc19hdHRyaWJ1dGUodW51c2VkKQor
IyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfIF9fYXR0cmlidXRlX18gKCh1bnVzZWQp
KQorIyBlbmRpZgorI2VuZGlmCisjaWZuZGVmIEdURVNUX0FUVFJJQlVURV9VTlVTRURfCisjIGRl
ZmluZSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXworI2VuZGlmCisKKyNpZiBHVEVTVF9MQU5HX0NY
WDExCisjIGRlZmluZSBHVEVTVF9DWFgxMV9FUVVBTFNfREVMRVRFXyA9IGRlbGV0ZQorI2Vsc2Ug
IC8vIEdURVNUX0xBTkdfQ1hYMTEKKyMgZGVmaW5lIEdURVNUX0NYWDExX0VRVUFMU19ERUxFVEVf
CisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKworLy8gVXNlIHRoaXMgYW5ub3RhdGlvbiBi
ZWZvcmUgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgcHJpbnRmIGZvcm1hdCBzdHJpbmcuCisjaWYg
KGRlZmluZWQoX19HTlVDX18pIHx8IGRlZmluZWQoX19jbGFuZ19fKSkgJiYgIWRlZmluZWQoQ09N
UElMRVJfSUNDKQorIyBpZiBkZWZpbmVkKF9fTUlOR1dfUFJJTlRGX0ZPUk1BVCkKKy8vIE1pbkdX
IGhhcyB0d28gZGlmZmVyZW50IHByaW50ZiBpbXBsZW1lbnRhdGlvbnMuIEVuc3VyZSB0aGUgZm9y
bWF0IG1hY3JvCisvLyBtYXRjaGVzIHRoZSBzZWxlY3RlZCBpbXBsZW1lbnRhdGlvbi4gU2VlCisv
LyBodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wL21pbmd3LXc2NC93aWtpMi9nbnUlMjBwcmludGYv
LgorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9QUklOVEZfKHN0cmluZ19pbmRleCwgZmlyc3Rf
dG9fY2hlY2spIFwKKyAgICAgICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fTUlOR1dfUFJJ
TlRGX0ZPUk1BVCwgc3RyaW5nX2luZGV4LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaXJzdF90b19jaGVjaykpKQorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRF
X1BSSU5URl8oc3RyaW5nX2luZGV4LCBmaXJzdF90b19jaGVjaykgXAorICAgICAgIF9fYXR0cmli
dXRlX18oKF9fZm9ybWF0X18oX19wcmludGZfXywgc3RyaW5nX2luZGV4LCBmaXJzdF90b19jaGVj
aykpKQorIyBlbmRpZgogI2Vsc2UKLSNkZWZpbmUgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8KKyMg
ZGVmaW5lIEdURVNUX0FUVFJJQlVURV9QUklOVEZfKHN0cmluZ19pbmRleCwgZmlyc3RfdG9fY2hl
Y2spCiAjZW5kaWYKIAorCiAvLyBBIG1hY3JvIHRvIGRpc2FsbG93IG9wZXJhdG9yPQogLy8gVGhp
cyBzaG91bGQgYmUgdXNlZCBpbiB0aGUgcHJpdmF0ZTogZGVjbGFyYXRpb25zIGZvciBhIGNsYXNz
LgotI2RlZmluZSBHVEVTVF9ESVNBTExPV19BU1NJR05fKHR5cGUpXAotICB2b2lkIG9wZXJhdG9y
PSh0eXBlIGNvbnN0ICYpCisjZGVmaW5lIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8odHlwZSkgXAor
ICB2b2lkIG9wZXJhdG9yPSh0eXBlIGNvbnN0ICYpIEdURVNUX0NYWDExX0VRVUFMU19ERUxFVEVf
CiAKIC8vIEEgbWFjcm8gdG8gZGlzYWxsb3cgY29weSBjb25zdHJ1Y3RvciBhbmQgb3BlcmF0b3I9
CiAvLyBUaGlzIHNob3VsZCBiZSB1c2VkIGluIHRoZSBwcml2YXRlOiBkZWNsYXJhdGlvbnMgZm9y
IGEgY2xhc3MuCi0jZGVmaW5lIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8odHlwZSlc
Ci0gIHR5cGUodHlwZSBjb25zdCAmKTtcCisjZGVmaW5lIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8odHlwZSkgXAorICB0eXBlKHR5cGUgY29uc3QgJikgR1RFU1RfQ1hYMTFfRVFVQUxT
X0RFTEVURV87IFwKICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyh0eXBlKQogCiAvLyBUZWxsIHRo
ZSBjb21waWxlciB0byB3YXJuIGFib3V0IHVudXNlZCByZXR1cm4gdmFsdWVzIGZvciBmdW5jdGlv
bnMgZGVjbGFyZWQKQEAgLTU4NCw3MiArOTM5LDI1MCBAQAogLy8KIC8vICAgU3Byb2NrZXQqIEFs
bG9jYXRlU3Byb2NrZXQoKSBHVEVTVF9NVVNUX1VTRV9SRVNVTFRfOwogI2lmIGRlZmluZWQoX19H
TlVDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSAzMDQwMCkgJiYgIWRlZmluZWQoQ09NUElMRVJf
SUNDKQotI2RlZmluZSBHVEVTVF9NVVNUX1VTRV9SRVNVTFRfIF9fYXR0cmlidXRlX18gKCh3YXJu
X3VudXNlZF9yZXN1bHQpKQorIyBkZWZpbmUgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXyBfX2F0dHJp
YnV0ZV9fICgod2Fybl91bnVzZWRfcmVzdWx0KSkKICNlbHNlCi0jZGVmaW5lIEdURVNUX01VU1Rf
VVNFX1JFU1VMVF8KKyMgZGVmaW5lIEdURVNUX01VU1RfVVNFX1JFU1VMVF8KICNlbmRpZiAgLy8g
X19HTlVDX18gJiYgKEdURVNUX0dDQ19WRVJfID49IDMwNDAwKSAmJiAhQ09NUElMRVJfSUNDCiAK
Ky8vIE1TIEMrKyBjb21waWxlciBlbWl0cyB3YXJuaW5nIHdoZW4gYSBjb25kaXRpb25hbCBleHBy
ZXNzaW9uIGlzIGNvbXBpbGUgdGltZQorLy8gY29uc3RhbnQuIEluIHNvbWUgY29udGV4dHMgdGhp
cyB3YXJuaW5nIGlzIGZhbHNlIHBvc2l0aXZlIGFuZCBuZWVkcyB0byBiZQorLy8gc3VwcHJlc3Nl
ZC4gVXNlIHRoZSBmb2xsb3dpbmcgdHdvIG1hY3JvcyBpbiBzdWNoIGNhc2VzOgorLy8KKy8vIEdU
RVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUFVTSF8oKQorLy8gd2hpbGUgKHRydWUpIHsKKy8v
IEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUE9QXygpCisvLyB9CisjIGRlZmluZSBHVEVT
VF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BVU0hfKCkgXAorICAgIEdURVNUX0RJU0FCTEVfTVND
X1dBUk5JTkdTX1BVU0hfKDQxMjcpCisjIGRlZmluZSBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9D
T05EX1BPUF8oKSBcCisgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCisKIC8v
IERldGVybWluZSB3aGV0aGVyIHRoZSBjb21waWxlciBzdXBwb3J0cyBNaWNyb3NvZnQncyBTdHJ1
Y3R1cmVkIEV4Y2VwdGlvbgogLy8gSGFuZGxpbmcuICBUaGlzIGlzIHN1cHBvcnRlZCBieSBzZXZl
cmFsIFdpbmRvd3MgY29tcGlsZXJzIGJ1dCBnZW5lcmFsbHkKIC8vIGRvZXMgbm90IGV4aXN0IG9u
IGFueSBvdGhlciBzeXN0ZW0uCiAjaWZuZGVmIEdURVNUX0hBU19TRUgKIC8vIFRoZSB1c2VyIGRp
ZG4ndCB0ZWxsIHVzLCBzbyB3ZSBuZWVkIHRvIGZpZ3VyZSBpdCBvdXQuCiAKLSNpZiBkZWZpbmVk
KF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykKKyMgaWYgZGVmaW5lZChfTVNDX1ZF
UikgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pCiAvLyBUaGVzZSB0d28gY29tcGlsZXJzIGFyZSBr
bm93biB0byBzdXBwb3J0IFNFSC4KLSNkZWZpbmUgR1RFU1RfSEFTX1NFSCAxCi0jZWxzZQorIyAg
ZGVmaW5lIEdURVNUX0hBU19TRUggMQorIyBlbHNlCiAvLyBBc3N1bWUgbm8gU0VILgotI2RlZmlu
ZSBHVEVTVF9IQVNfU0VIIDAKLSNlbmRpZgorIyAgZGVmaW5lIEdURVNUX0hBU19TRUggMAorIyBl
bmRpZgogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKKyNkZWZpbmUgR1RFU1RfSVNfVEhSRUFE
U0FGRSBcCisgICAgKEdURVNUX0hBU19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMXyBcCisgICAgIHx8
IChHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9P
U19XSU5ET1dTX1JUKSBcCisgICAgIHx8IEdURVNUX0hBU19QVEhSRUFEKQogCi0jaWZkZWYgX01T
Q19WRVIKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAogCi0jaWYgR1RFU1RfTElOS0VEX0FTX1NI
QVJFRF9MSUJSQVJZCi0jZGVmaW5lIEdURVNUX0FQSV8gX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0j
ZWxpZiBHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJBUlkKLSNkZWZpbmUgR1RFU1RfQVBJXyBfX2Rl
Y2xzcGVjKGRsbGV4cG9ydCkKLSNlbmRpZgorLy8gR1RFU1RfQVBJXyBxdWFsaWZpZXMgYWxsIHN5
bWJvbHMgdGhhdCBtdXN0IGJlIGV4cG9ydGVkLiBUaGUgZGVmaW5pdGlvbnMgYmVsb3cKKy8vIGFy
ZSBndWFyZGVkIGJ5ICNpZm5kZWYgdG8gZ2l2ZSBlbWJlZGRlcnMgYSBjaGFuY2UgdG8gZGVmaW5l
IEdURVNUX0FQSV8gaW4KKy8vIGd0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmgKKyNp
Zm5kZWYgR1RFU1RfQVBJXwogCisjaWZkZWYgX01TQ19WRVIKKyMgaWYgR1RFU1RfTElOS0VEX0FT
X1NIQVJFRF9MSUJSQVJZCisjICBkZWZpbmUgR1RFU1RfQVBJXyBfX2RlY2xzcGVjKGRsbGltcG9y
dCkKKyMgZWxpZiBHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJBUlkKKyMgIGRlZmluZSBHVEVTVF9B
UElfIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorIyBlbmRpZgorI2VsaWYgX19HTlVDX18gPj0gNCB8
fCBkZWZpbmVkKF9fY2xhbmdfXykKKyMgZGVmaW5lIEdURVNUX0FQSV8gX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAjZW5kaWYgIC8vIF9NU0NfVkVSCiAKKyNlbmRpZiAg
Ly8gR1RFU1RfQVBJXworCiAjaWZuZGVmIEdURVNUX0FQSV8KLSNkZWZpbmUgR1RFU1RfQVBJXwor
IyBkZWZpbmUgR1RFU1RfQVBJXworI2VuZGlmICAvLyBHVEVTVF9BUElfCisKKyNpZm5kZWYgR1RF
U1RfREVGQVVMVF9ERUFUSF9URVNUX1NUWUxFCisjIGRlZmluZSBHVEVTVF9ERUZBVUxUX0RFQVRI
X1RFU1RfU1RZTEUgICJmYXN0IgorI2VuZGlmICAvLyBHVEVTVF9ERUZBVUxUX0RFQVRIX1RFU1Rf
U1RZTEUKKworI2lmZGVmIF9fR05VQ19fCisvLyBBc2sgdGhlIGNvbXBpbGVyIHRvIG5ldmVyIGlu
bGluZSBhIGdpdmVuIGZ1bmN0aW9uLgorIyBkZWZpbmUgR1RFU1RfTk9fSU5MSU5FXyBfX2F0dHJp
YnV0ZV9fKChub2lubGluZSkpCisjZWxzZQorIyBkZWZpbmUgR1RFU1RfTk9fSU5MSU5FXwogI2Vu
ZGlmCiAKKy8vIF9MSUJDUFBfVkVSU0lPTiBpcyBkZWZpbmVkIGJ5IHRoZSBsaWJjKysgbGlicmFy
eSBmcm9tIHRoZSBMTFZNIHByb2plY3QuCisjaWYgIWRlZmluZWQoR1RFU1RfSEFTX0NYWEFCSV9I
XykKKyMgaWYgZGVmaW5lZChfX0dMSUJDWFhfXykgfHwgKGRlZmluZWQoX0xJQkNQUF9WRVJTSU9O
KSAmJiAhZGVmaW5lZChfTVNDX1ZFUikpCisjICBkZWZpbmUgR1RFU1RfSEFTX0NYWEFCSV9IXyAx
CisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9IQVNfQ1hYQUJJX0hfIDAKKyMgZW5kaWYKKyNlbmRp
ZgorCisvLyBBIGZ1bmN0aW9uIGxldmVsIGF0dHJpYnV0ZSB0byBkaXNhYmxlIGNoZWNraW5nIGZv
ciB1c2Ugb2YgdW5pbml0aWFsaXplZAorLy8gbWVtb3J5IHdoZW4gYnVpbHQgd2l0aCBNZW1vcnlT
YW5pdGl6ZXIuCisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisjIGlmIF9faGFzX2ZlYXR1cmUobWVt
b3J5X3Nhbml0aXplcikKKyMgIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfTUVN
T1JZXyBcCisgICAgICAgX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfbWVtb3J5KSkKKyMgZWxz
ZQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9NRU1PUllfCisjIGVuZGlm
ICAvLyBfX2hhc19mZWF0dXJlKG1lbW9yeV9zYW5pdGl6ZXIpCisjZWxzZQorIyBkZWZpbmUgR1RF
U1RfQVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8KKyNlbmRpZiAgLy8gX19jbGFuZ19fCisK
Ky8vIEEgZnVuY3Rpb24gbGV2ZWwgYXR0cmlidXRlIHRvIGRpc2FibGUgQWRkcmVzc1Nhbml0aXpl
ciBpbnN0cnVtZW50YXRpb24uCisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisjIGlmIF9faGFzX2Zl
YXR1cmUoYWRkcmVzc19zYW5pdGl6ZXIpCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NB
TklUSVpFX0FERFJFU1NfIFwKKyAgICAgICBfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV9hZGRy
ZXNzKSkKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERS
RVNTXworIyBlbmRpZiAgLy8gX19oYXNfZmVhdHVyZShhZGRyZXNzX3Nhbml0aXplcikKKyNlbHNl
CisjIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTU18KKyNlbmRpZiAg
Ly8gX19jbGFuZ19fCisKKy8vIEEgZnVuY3Rpb24gbGV2ZWwgYXR0cmlidXRlIHRvIGRpc2FibGUg
VGhyZWFkU2FuaXRpemVyIGluc3RydW1lbnRhdGlvbi4KKyNpZiBkZWZpbmVkKF9fY2xhbmdfXykK
KyMgaWYgX19oYXNfZmVhdHVyZSh0aHJlYWRfc2FuaXRpemVyKQorIyAgZGVmaW5lIEdURVNUX0FU
VFJJQlVURV9OT19TQU5JVElaRV9USFJFQURfIFwKKyAgICAgICBfX2F0dHJpYnV0ZV9fKChub19z
YW5pdGl6ZV90aHJlYWQpKQorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NB
TklUSVpFX1RIUkVBRF8KKyMgZW5kaWYgIC8vIF9faGFzX2ZlYXR1cmUodGhyZWFkX3Nhbml0aXpl
cikKKyNlbHNlCisjIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXwor
I2VuZGlmICAvLyBfX2NsYW5nX18KKwogbmFtZXNwYWNlIHRlc3RpbmcgewogCiBjbGFzcyBNZXNz
YWdlOwogCisjaWYgZGVmaW5lZChHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfKQorLy8gSW1wb3J0IHR1
cGxlIGFuZCBmcmllbmRzIGludG8gdGhlIDo6dGVzdGluZyBuYW1lc3BhY2UuCisvLyBJdCBpcyBw
YXJ0IG9mIG91ciBpbnRlcmZhY2UsIGhhdmluZyB0aGVtIGluIDo6dGVzdGluZyBhbGxvd3MgdXMg
dG8gY2hhbmdlCisvLyB0aGVpciB0eXBlcyBhcyBuZWVkZWQuCit1c2luZyBHVEVTVF9UVVBMRV9O
QU1FU1BBQ0VfOjpnZXQ7Cit1c2luZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjptYWtlX3R1cGxl
OwordXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXzo6dHVwbGU7Cit1c2luZyBHVEVTVF9UVVBM
RV9OQU1FU1BBQ0VfOjp0dXBsZV9zaXplOwordXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXzo6
dHVwbGVfZWxlbWVudDsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9UVVBMRV9OQU1FU1BBQ0Vf
KQorCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCi1jbGFzcyBTdHJpbmc7CisvLyBBIHNlY3JldCB0
eXBlIHRoYXQgR29vZ2xlIFRlc3QgdXNlcnMgZG9uJ3Qga25vdyBhYm91dC4gIEl0IGhhcyBubwor
Ly8gZGVmaW5pdGlvbiBvbiBwdXJwb3NlLiAgVGhlcmVmb3JlIGl0J3MgaW1wb3NzaWJsZSB0byBj
cmVhdGUgYQorLy8gU2VjcmV0IG9iamVjdCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LgorY2xhc3Mg
U2VjcmV0OwogCi1jbGFzcyBTdHJTdHJlYW0gOiBwdWJsaWMgOjpzdGQ6OnN0cmluZ3N0cmVhbSB7
Ci0gcHVibGljOgotICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVy
biBwOyB9Ci0gIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4g
cDsgfQorLy8gVGhlIEdURVNUX0NPTVBJTEVfQVNTRVJUXyBtYWNybyBjYW4gYmUgdXNlZCB0byB2
ZXJpZnkgdGhhdCBhIGNvbXBpbGUgdGltZQorLy8gZXhwcmVzc2lvbiBpcyB0cnVlLiBGb3IgZXhh
bXBsZSwgeW91IGNvdWxkIHVzZSBpdCB0byB2ZXJpZnkgdGhlCisvLyBzaXplIG9mIGEgc3RhdGlj
IGFycmF5OgorLy8KKy8vICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKEdURVNUX0FSUkFZX1NJWkVf
KG5hbWVzKSA9PSBOVU1fTkFNRVMsCisvLyAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc19p
bmNvcnJlY3Rfc2l6ZSk7CisvLworLy8gb3IgdG8gbWFrZSBzdXJlIGEgc3RydWN0IGlzIHNtYWxs
ZXIgdGhhbiBhIGNlcnRhaW4gc2l6ZToKKy8vCisvLyAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhz
aXplb2YoZm9vKSA8IDEyOCwgZm9vX3Rvb19sYXJnZSk7CisvLworLy8gVGhlIHNlY29uZCBhcmd1
bWVudCB0byB0aGUgbWFjcm8gaXMgdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlLiBJZgorLy8gdGhl
IGV4cHJlc3Npb24gaXMgZmFsc2UsIG1vc3QgY29tcGlsZXJzIHdpbGwgaXNzdWUgYSB3YXJuaW5n
L2Vycm9yCisvLyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZS4KKworI2lmIEdU
RVNUX0xBTkdfQ1hYMTEKKyMgZGVmaW5lIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhleHByLCBtc2cp
IHN0YXRpY19hc3NlcnQoZXhwciwgI21zZykKKyNlbHNlICAvLyAhR1RFU1RfTEFOR19DWFgxMQor
dGVtcGxhdGUgPGJvb2w+CisgIHN0cnVjdCBDb21waWxlQXNzZXJ0IHsKK307CiAKLSAgdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7Ci0gICAgcmV0dXJuIG1hbGxvYyhzaXplKTsKLSAg
fQorIyBkZWZpbmUgR1RFU1RfQ09NUElMRV9BU1NFUlRfKGV4cHIsIG1zZykgXAorICB0eXBlZGVm
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvbXBpbGVBc3NlcnQ8KHN0YXRpY19jYXN0PGJvb2w+KGV4
cHIpKT4gXAorICAgICAgbXNnW3N0YXRpY19jYXN0PGJvb2w+KGV4cHIpID8gMSA6IC0xXSBHVEVT
VF9BVFRSSUJVVEVfVU5VU0VEXworI2VuZGlmICAvLyAhR1RFU1RfTEFOR19DWFgxMQogCi0gIHZv
aWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsKLSAgICBmcmVlKHApOwotICB9CisvLyBJbXBs
ZW1lbnRhdGlvbiBkZXRhaWxzIG9mIEdURVNUX0NPTVBJTEVfQVNTRVJUXzoKKy8vCisvLyAoSW4g
QysrMTEsIHdlIHNpbXBseSB1c2Ugc3RhdGljX2Fzc2VydCBpbnN0ZWFkIG9mIHRoZSBmb2xsb3dp
bmcpCisvLworLy8gLSBHVEVTVF9DT01QSUxFX0FTU0VSVF8gd29ya3MgYnkgZGVmaW5pbmcgYW4g
YXJyYXkgdHlwZSB0aGF0IGhhcyAtMQorLy8gICBlbGVtZW50cyAoYW5kIHRodXMgaXMgaW52YWxp
ZCkgd2hlbiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZS4KKy8vCisvLyAtIFRoZSBzaW1wbGVyIGRl
ZmluaXRpb24KKy8vCisvLyAgICAjZGVmaW5lIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhleHByLCBt
c2cpIHR5cGVkZWYgY2hhciBtc2dbKGV4cHIpID8gMSA6IC0xXQorLy8KKy8vICAgZG9lcyBub3Qg
d29yaywgYXMgZ2NjIHN1cHBvcnRzIHZhcmlhYmxlLWxlbmd0aCBhcnJheXMgd2hvc2Ugc2l6ZXMK
Ky8vICAgYXJlIGRldGVybWluZWQgYXQgcnVuLXRpbWUgKHRoaXMgaXMgZ2NjJ3MgZXh0ZW5zaW9u
IGFuZCBub3QgcGFydAorLy8gICBvZiB0aGUgQysrIHN0YW5kYXJkKS4gIEFzIGEgcmVzdWx0LCBn
Y2MgZmFpbHMgdG8gcmVqZWN0IHRoZQorLy8gICBmb2xsb3dpbmcgY29kZSB3aXRoIHRoZSBzaW1w
bGUgZGVmaW5pdGlvbjoKKy8vCisvLyAgICAgaW50IGZvbzsKKy8vICAgICBHVEVTVF9DT01QSUxF
X0FTU0VSVF8oZm9vLCBtc2cpOyAvLyBub3Qgc3VwcG9zZWQgdG8gY29tcGlsZSBhcyBmb28gaXMK
Ky8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBub3QgYSBjb21waWxl
LXRpbWUgY29uc3RhbnQuCisvLworLy8gLSBCeSB1c2luZyB0aGUgdHlwZSBDb21waWxlQXNzZXJ0
PChib29sKGV4cHIpKT4sIHdlIGVuc3VyZXMgdGhhdAorLy8gICBleHByIGlzIGEgY29tcGlsZS10
aW1lIGNvbnN0YW50LiAgKFRlbXBsYXRlIGFyZ3VtZW50cyBtdXN0IGJlCisvLyAgIGRldGVybWlu
ZWQgYXQgY29tcGlsZS10aW1lLikKKy8vCisvLyAtIFRoZSBvdXR0ZXIgcGFyZW50aGVzZXMgaW4g
Q29tcGlsZUFzc2VydDwoYm9vbChleHByKSk+IGFyZSBuZWNlc3NhcnkKKy8vICAgdG8gd29yayBh
cm91bmQgYSBidWcgaW4gZ2NjIDMuNC40IGFuZCA0LjAuMS4gIElmIHdlIGhhZCB3cml0dGVuCisv
LworLy8gICAgIENvbXBpbGVBc3NlcnQ8Ym9vbChleHByKT4KKy8vCisvLyAgIGluc3RlYWQsIHRo
ZXNlIGNvbXBpbGVycyB3aWxsIHJlZnVzZSB0byBjb21waWxlCisvLworLy8gICAgIEdURVNUX0NP
TVBJTEVfQVNTRVJUXyg1ID4gMCwgc29tZV9tZXNzYWdlKTsKKy8vCisvLyAgIChUaGV5IHNlZW0g
dG8gdGhpbmsgdGhlICI+IiBpbiAiNSA+IDAiIG1hcmtzIHRoZSBlbmQgb2YgdGhlCisvLyAgIHRl
bXBsYXRlIGFyZ3VtZW50IGxpc3QuKQorLy8KKy8vIC0gVGhlIGFycmF5IHNpemUgaXMgKGJvb2wo
ZXhwcikgPyAxIDogLTEpLCBpbnN0ZWFkIG9mIHNpbXBseQorLy8KKy8vICAgICAoKGV4cHIpID8g
MSA6IC0xKS4KKy8vCisvLyAgIFRoaXMgaXMgdG8gYXZvaWQgcnVubmluZyBpbnRvIGEgYnVnIGlu
IE1TIFZDIDcuMSwgd2hpY2gKKy8vICAgY2F1c2VzICgoMC4wKSA/IDEgOiAtMSkgdG8gaW5jb3Jy
ZWN0bHkgZXZhbHVhdGUgdG8gMS4KIAotICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6
ZSkgewotICAgIHJldHVybiBtYWxsb2Moc2l6ZSk7Ci0gIH0KKy8vIFN0YXRpY0Fzc2VydFR5cGVF
cUhlbHBlciBpcyB1c2VkIGJ5IFN0YXRpY0Fzc2VydFR5cGVFcSBkZWZpbmVkIGluIGd0ZXN0Lmgu
CisvLworLy8gVGhpcyB0ZW1wbGF0ZSBpcyBkZWNsYXJlZCwgYnV0IGludGVudGlvbmFsbHkgdW5k
ZWZpbmVkLgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3N0cnVjdCBTdGF0
aWNBc3NlcnRUeXBlRXFIZWxwZXI7CiAKLSAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBw
KSB7Ci0gICAgZnJlZShwKTsKLSAgfQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgU3Rh
dGljQXNzZXJ0VHlwZUVxSGVscGVyPFQsIFQ+IHsKKyAgZW51bSB7IHZhbHVlID0gdHJ1ZSB9Owog
fTsKIAorLy8gU2FtZSBhcyBzdGQ6OmlzX3NhbWU8Pi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgorc3RydWN0IElzU2FtZSB7CisgIGVudW0geyB2YWx1ZSA9IGZhbHNlIH07Cit9
OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNTYW1lPFQsIFQ+IHsKKyAgZW51bSB7
IHZhbHVlID0gdHJ1ZSB9OworfTsKIAorLy8gRXZhbHVhdGVzIHRvIHRoZSBudW1iZXIgb2YgZWxl
bWVudHMgaW4gJ2FycmF5Jy4KKyNkZWZpbmUgR1RFU1RfQVJSQVlfU0laRV8oYXJyYXkpIChzaXpl
b2YoYXJyYXkpIC8gc2l6ZW9mKGFycmF5WzBdKSkKKworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RS
SU5HCit0eXBlZGVmIDo6c3RyaW5nIHN0cmluZzsKKyNlbHNlCit0eXBlZGVmIDo6c3RkOjpzdHJp
bmcgc3RyaW5nOworI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCisjaWYgR1RF
U1RfSEFTX0dMT0JBTF9XU1RSSU5HCit0eXBlZGVmIDo6d3N0cmluZyB3c3RyaW5nOworI2VsaWYg
R1RFU1RfSEFTX1NURF9XU1RSSU5HCit0eXBlZGVmIDo6c3RkOjp3c3RyaW5nIHdzdHJpbmc7Cisj
ZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwogCiAvLyBBIGhlbHBlciBmb3Igc3Vw
cHJlc3Npbmcgd2FybmluZ3Mgb24gY29uc3RhbnQgY29uZGl0aW9uLiAgSXQganVzdAogLy8gcmV0
dXJucyAnY29uZGl0aW9uJy4KQEAgLTY4NSw2ICsxMjE4LDEyIEBAIGNsYXNzIHNjb3BlZF9wdHIg
ewogICAgICAgcHRyXyA9IHA7CiAgICAgfQogICB9CisKKyAgZnJpZW5kIHZvaWQgc3dhcChzY29w
ZWRfcHRyJiBhLCBzY29wZWRfcHRyJiBiKSB7CisgICAgdXNpbmcgc3RkOjpzd2FwOworICAgIHN3
YXAoYS5wdHJfLCBiLnB0cl8pOworICB9CisKICBwcml2YXRlOgogICBUKiBwdHJfOwogCkBAIC02
OTMsNiArMTIzMiwxMCBAQCBjbGFzcyBzY29wZWRfcHRyIHsKIAogLy8gRGVmaW5lcyBSRS4KIAor
I2lmIEdURVNUX1VTRVNfUENSRQorLy8gaWYgdXNlZCwgUENSRSBpcyBpbmplY3RlZCBieSBjdXN0
b20vZ3Rlc3QtcG9ydC5oCisjZWxpZiBHVEVTVF9VU0VTX1BPU0lYX1JFIHx8IEdURVNUX1VTRVNf
U0lNUExFX1JFCisKIC8vIEEgc2ltcGxlIEMrKyB3cmFwcGVyIGZvciA8cmVnZXguaD4uICBJdCB1
c2VzIHRoZSBQT1NJWCBFeHRlbmRlZAogLy8gUmVndWxhciBFeHByZXNzaW9uIHN5bnRheC4KIGNs
YXNzIEdURVNUX0FQSV8gUkUgewpAQCAtNzA0LDkgKzEyNDcsMTEgQEAgY2xhc3MgR1RFU1RfQVBJ
XyBSRSB7CiAgIC8vIENvbnN0cnVjdHMgYW4gUkUgZnJvbSBhIHN0cmluZy4KICAgUkUoY29uc3Qg
OjpzdGQ6OnN0cmluZyYgcmVnZXgpIHsgSW5pdChyZWdleC5jX3N0cigpKTsgfSAgLy8gTk9MSU5U
CiAKLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworIyBpZiBHVEVTVF9IQVNfR0xPQkFMX1NU
UklORworCiAgIFJFKGNvbnN0IDo6c3RyaW5nJiByZWdleCkgeyBJbml0KHJlZ2V4LmNfc3RyKCkp
OyB9ICAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKworIyBl
bmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKIAogICBSRShjb25zdCBjaGFyKiByZWdl
eCkgeyBJbml0KHJlZ2V4KTsgfSAgLy8gTk9MSU5UCiAgIH5SRSgpOwpAQCAtNzE5LDcgKzEyNjQs
NyBAQCBjbGFzcyBHVEVTVF9BUElfIFJFIHsKICAgLy8gUGFydGlhbE1hdGNoKHN0ciwgcmUpIHJl
dHVybnMgdHJ1ZSBpZmYgcmVndWxhciBleHByZXNzaW9uIHJlCiAgIC8vIG1hdGNoZXMgYSBzdWJz
dHJpbmcgb2Ygc3RyIChpbmNsdWRpbmcgc3RyIGl0c2VsZikuCiAgIC8vCi0gIC8vIFRPRE8od2Fu
QGdvb2dsZS5jb20pOiBtYWtlIEZ1bGxNYXRjaCgpIGFuZCBQYXJ0aWFsTWF0Y2goKSB3b3JrCisg
IC8vIEZJWE1FOiBtYWtlIEZ1bGxNYXRjaCgpIGFuZCBQYXJ0aWFsTWF0Y2goKSB3b3JrCiAgIC8v
IHdoZW4gc3RyIGNvbnRhaW5zIE5VTCBjaGFyYWN0ZXJzLgogICBzdGF0aWMgYm9vbCBGdWxsTWF0
Y2goY29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyLCBjb25zdCBSRSYgcmUpIHsKICAgICByZXR1cm4g
RnVsbE1hdGNoKHN0ci5jX3N0cigpLCByZSk7CkBAIC03MjgsMTQgKzEyNzMsMTYgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBSRSB7CiAgICAgcmV0dXJuIFBhcnRpYWxNYXRjaChzdHIuY19zdHIoKSwgcmUp
OwogICB9CiAKLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworIyBpZiBHVEVTVF9IQVNfR0xP
QkFMX1NUUklORworCiAgIHN0YXRpYyBib29sIEZ1bGxNYXRjaChjb25zdCA6OnN0cmluZyYgc3Ry
LCBjb25zdCBSRSYgcmUpIHsKICAgICByZXR1cm4gRnVsbE1hdGNoKHN0ci5jX3N0cigpLCByZSk7
CiAgIH0KICAgc3RhdGljIGJvb2wgUGFydGlhbE1hdGNoKGNvbnN0IDo6c3RyaW5nJiBzdHIsIGNv
bnN0IFJFJiByZSkgewogICAgIHJldHVybiBQYXJ0aWFsTWF0Y2goc3RyLmNfc3RyKCksIHJlKTsK
ICAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCisjIGVuZGlmICAvLyBH
VEVTVF9IQVNfR0xPQkFMX1NUUklORwogCiAgIHN0YXRpYyBib29sIEZ1bGxNYXRjaChjb25zdCBj
aGFyKiBzdHIsIGNvbnN0IFJFJiByZSk7CiAgIHN0YXRpYyBib29sIFBhcnRpYWxNYXRjaChjb25z
dCBjaGFyKiBzdHIsIGNvbnN0IFJFJiByZSk7CkBAIC03NDMsMjIgKzEyOTAsMzggQEAgY2xhc3Mg
R1RFU1RfQVBJXyBSRSB7CiAgcHJpdmF0ZToKICAgdm9pZCBJbml0KGNvbnN0IGNoYXIqIHJlZ2V4
KTsKIAotICAvLyBXZSB1c2UgYSBjb25zdCBjaGFyKiBpbnN0ZWFkIG9mIGEgc3RyaW5nLCBhcyBH
b29nbGUgVGVzdCBtYXkgYmUgdXNlZAotICAvLyB3aGVyZSBzdHJpbmcgaXMgbm90IGF2YWlsYWJs
ZS4gIFdlIGFsc28gZG8gbm90IHVzZSBHb29nbGUgVGVzdCdzIG93bgotICAvLyBTdHJpbmcgdHlw
ZSBoZXJlLCBpbiBvcmRlciB0byBzaW1wbGlmeSBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGUKLSAg
Ly8gZmlsZXMuCisgIC8vIFdlIHVzZSBhIGNvbnN0IGNoYXIqIGluc3RlYWQgb2YgYW4gc3RkOjpz
dHJpbmcsIGFzIEdvb2dsZSBUZXN0IHVzZWQgdG8gYmUKKyAgLy8gdXNlZCB3aGVyZSBzdGQ6OnN0
cmluZyBpcyBub3QgYXZhaWxhYmxlLiAgRklYTUU6IGNoYW5nZSB0bworICAvLyBzdGQ6OnN0cmlu
Zy4KICAgY29uc3QgY2hhciogcGF0dGVybl87CiAgIGJvb2wgaXNfdmFsaWRfOwotI2lmIEdURVNU
X1VTRVNfUE9TSVhfUkUKKworIyBpZiBHVEVTVF9VU0VTX1BPU0lYX1JFCisKICAgcmVnZXhfdCBm
dWxsX3JlZ2V4XzsgICAgIC8vIEZvciBGdWxsTWF0Y2goKS4KICAgcmVnZXhfdCBwYXJ0aWFsX3Jl
Z2V4XzsgIC8vIEZvciBQYXJ0aWFsTWF0Y2goKS4KLSNlbHNlICAvLyBHVEVTVF9VU0VTX1NJTVBM
RV9SRQorCisjIGVsc2UgIC8vIEdURVNUX1VTRVNfU0lNUExFX1JFCisKICAgY29uc3QgY2hhciog
ZnVsbF9wYXR0ZXJuXzsgIC8vIEZvciBGdWxsTWF0Y2goKTsKLSNlbmRpZgorCisjIGVuZGlmCiAK
ICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhSRSk7CiB9OwogCisjZW5kaWYgIC8vIEdURVNUX1VT
RVNfUENSRQorCisvLyBGb3JtYXRzIGEgc291cmNlIGZpbGUgcGF0aCBhbmQgYSBsaW5lIG51bWJl
ciBhcyB0aGV5IHdvdWxkIGFwcGVhcgorLy8gaW4gYW4gZXJyb3IgbWVzc2FnZSBmcm9tIHRoZSBj
b21waWxlciB1c2VkIHRvIGNvbXBpbGUgdGhpcyBjb2RlLgorR1RFU1RfQVBJXyA6OnN0ZDo6c3Ry
aW5nIEZvcm1hdEZpbGVMb2NhdGlvbihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7CisKKy8v
IEZvcm1hdHMgYSBmaWxlIGxvY2F0aW9uIGZvciBjb21waWxlci1pbmRlcGVuZGVudCBYTUwgb3V0
cHV0LgorLy8gQWx0aG91Z2ggdGhpcyBmdW5jdGlvbiBpcyBub3QgcGxhdGZvcm0gZGVwZW5kZW50
LCB3ZSBwdXQgaXQgbmV4dCB0bworLy8gRm9ybWF0RmlsZUxvY2F0aW9uIGluIG9yZGVyIHRvIGNv
bnRyYXN0IHRoZSB0d28gZnVuY3Rpb25zLgorR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEZvcm1h
dENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oY29uc3QgY2hhciogZmlsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBsaW5lKTsKKwogLy8gRGVmaW5lcyBsb2dnaW5nIHV0aWxpdGllczoKIC8vICAgR1RFU1Rf
TE9HXyhzZXZlcml0eSkgLSBsb2dzIG1lc3NhZ2VzIGF0IHRoZSBzcGVjaWZpZWQgc2V2ZXJpdHkg
bGV2ZWwuIFRoZQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgaXRzZWxmIGlz
IHN0cmVhbWVkIGludG8gdGhlIG1hY3JvLgpAQCAtNzkwLDEzICsxMzUzLDE4IEBAIGNsYXNzIEdU
RVNUX0FQSV8gR1Rlc3RMb2cgewogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEdU
ZXN0TG9nKTsKIH07CiAKLSNkZWZpbmUgR1RFU1RfTE9HXyhzZXZlcml0eSkgXAorI2lmICFkZWZp
bmVkKEdURVNUX0xPR18pCisKKyMgZGVmaW5lIEdURVNUX0xPR18oc2V2ZXJpdHkpIFwKICAgICA6
OnRlc3Rpbmc6OmludGVybmFsOjpHVGVzdExvZyg6OnRlc3Rpbmc6OmludGVybmFsOjpHVEVTVF8j
I3NldmVyaXR5LCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18s
IF9fTElORV9fKS5HZXRTdHJlYW0oKQogCiBpbmxpbmUgdm9pZCBMb2dUb1N0ZGVycigpIHt9CiBp
bmxpbmUgdm9pZCBGbHVzaEluZm9Mb2coKSB7IGZmbHVzaChOVUxMKTsgfQogCisjZW5kaWYgIC8v
ICFkZWZpbmVkKEdURVNUX0xPR18pCisKKyNpZiAhZGVmaW5lZChHVEVTVF9DSEVDS18pCiAvLyBJ
TlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UuCiAvLwogLy8gR1RFU1RfQ0hFQ0tf
IGlzIGFuIGFsbC1tb2RlIGFzc2VydC4gSXQgYWJvcnRzIHRoZSBwcm9ncmFtIGlmIHRoZSBjb25k
aXRpb24KQEAgLTgxMSwxMiArMTM3OSwxMyBAQCBpbmxpbmUgdm9pZCBGbHVzaEluZm9Mb2coKSB7
IGZmbHVzaChOVUxMKTsgfQogLy8gICAgY29uZGl0aW9uIGl0c2VsZiwgcGx1cyBhZGRpdGlvbmFs
IG1lc3NhZ2Ugc3RyZWFtZWQgaW50byBpdCwgaWYgYW55LAogLy8gICAgYW5kIHRoZW4gaXQgYWJv
cnRzIHRoZSBwcm9ncmFtLiBJdCBhYm9ydHMgdGhlIHByb2dyYW0gaXJyZXNwZWN0aXZlIG9mCiAv
LyAgICB3aGV0aGVyIGl0IGlzIGJ1aWx0IGluIHRoZSBkZWJ1ZyBtb2RlIG9yIG5vdC4KLSNkZWZp
bmUgR1RFU1RfQ0hFQ0tfKGNvbmRpdGlvbikgXAorIyBkZWZpbmUgR1RFU1RfQ0hFQ0tfKGNvbmRp
dGlvbikgXAogICAgIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKICAgICBpZiAoOjp0
ZXN0aW5nOjppbnRlcm5hbDo6SXNUcnVlKGNvbmRpdGlvbikpIFwKICAgICAgIDsgXAogICAgIGVs
c2UgXAogICAgICAgR1RFU1RfTE9HXyhGQVRBTCkgPDwgIkNvbmRpdGlvbiAiICNjb25kaXRpb24g
IiBmYWlsZWQuICIKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfQ0hFQ0tfKQogCiAvLyBBbiBh
bGwtbW9kZSBhc3NlcnQgdG8gdmVyaWZ5IHRoYXQgdGhlIGdpdmVuIFBPU0lYLXN0eWxlIGZ1bmN0
aW9uCiAvLyBjYWxsIHJldHVybnMgMCAoaW5kaWNhdGluZyBzdWNjZXNzKS4gIEtub3duIGxpbWl0
YXRpb246IHRoaXMKQEAgLTgyOCw4ICsxMzk3LDEyNSBAQCBpbmxpbmUgdm9pZCBGbHVzaEluZm9M
b2coKSB7IGZmbHVzaChOVUxMKTsgfQogICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICNwb3NpeF9j
YWxsIDw8ICJmYWlsZWQgd2l0aCBlcnJvciAiIFwKICAgICAgICAgICAgICAgICAgICAgICA8PCBn
dGVzdF9lcnJvcgogCisvLyBBZGRzIHJlZmVyZW5jZSB0byBhIHR5cGUgaWYgaXQgaXMgbm90IGEg
cmVmZXJlbmNlIHR5cGUsCisvLyBvdGhlcndpc2UgbGVhdmVzIGl0IHVuY2hhbmdlZC4gIFRoaXMg
aXMgdGhlIHNhbWUgYXMKKy8vIHRyMTo6YWRkX3JlZmVyZW5jZSwgd2hpY2ggaXMgbm90IHdpZGVs
eSBhdmFpbGFibGUgeWV0LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQWRkUmVmZXJl
bmNlIHsgdHlwZWRlZiBUJiB0eXBlOyB9OyAgLy8gTk9MSU5UCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK3N0cnVjdCBBZGRSZWZlcmVuY2U8VCY+IHsgdHlwZWRlZiBUJiB0eXBlOyB9OyAgLy8gTk9M
SU5UCisKKy8vIEEgaGFuZHkgd3JhcHBlciBhcm91bmQgQWRkUmVmZXJlbmNlIHRoYXQgd29ya3Mg
d2hlbiB0aGUgYXJndW1lbnQgVAorLy8gZGVwZW5kcyBvbiB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgor
I2RlZmluZSBHVEVTVF9BRERfUkVGRVJFTkNFXyhUKSBcCisgICAgdHlwZW5hbWUgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6QWRkUmVmZXJlbmNlPFQ+Ojp0eXBlCisKKy8vIFRyYW5zZm9ybXMgIlQiIGlu
dG8gImNvbnN0IFQmIiBhY2NvcmRpbmcgdG8gc3RhbmRhcmQgcmVmZXJlbmNlIGNvbGxhcHNpbmcK
Ky8vIHJ1bGVzICh0aGlzIGlzIG9ubHkgbmVlZGVkIGFzIGEgYmFja3BvcnQgZm9yIEMrKzk4IGNv
bXBpbGVycyB0aGF0IGRvIG5vdAorLy8gc3VwcG9ydCByZWZlcmVuY2UgY29sbGFwc2luZykuIFNw
ZWNpZmljYWxseSwgaXQgdHJhbnNmb3JtczoKKy8vCisvLyAgIGNoYXIgICAgICAgICA9PT4gY29u
c3QgY2hhciYKKy8vICAgY29uc3QgY2hhciAgID09PiBjb25zdCBjaGFyJgorLy8gICBjaGFyJiAg
ICAgICAgPT0+IGNoYXImCisvLyAgIGNvbnN0IGNoYXImICA9PT4gY29uc3QgY2hhciYKKy8vCisv
LyBOb3RlIHRoYXQgdGhlIG5vbi1jb25zdCByZWZlcmVuY2Ugd2lsbCBub3QgaGF2ZSAiY29uc3Qi
IGFkZGVkLiBUaGlzIGlzCisvLyBzdGFuZGFyZCwgYW5kIG5lY2Vzc2FyeSBzbyB0aGF0ICJUIiBj
YW4gYWx3YXlzIGJpbmQgdG8gImNvbnN0IFQmIi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3Ry
dWN0IENvbnN0UmVmIHsgdHlwZWRlZiBjb25zdCBUJiB0eXBlOyB9OwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitzdHJ1Y3QgQ29uc3RSZWY8VCY+IHsgdHlwZWRlZiBUJiB0eXBlOyB9OworCisvLyBU
aGUgYXJndW1lbnQgVCBtdXN0IGRlcGVuZCBvbiBzb21lIHRlbXBsYXRlIHBhcmFtZXRlcnMuCisj
ZGVmaW5lIEdURVNUX1JFRkVSRU5DRV9UT19DT05TVF8oVCkgXAorICB0eXBlbmFtZSA6OnRlc3Rp
bmc6OmludGVybmFsOjpDb25zdFJlZjxUPjo6dHlwZQorCisjaWYgR1RFU1RfSEFTX1NURF9NT1ZF
XwordXNpbmcgc3RkOjpmb3J3YXJkOwordXNpbmcgc3RkOjptb3ZlOworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3N0cnVjdCBSdmFsdWVSZWYgeworICB0eXBlZGVmIFQmJiB0eXBlOworfTsKKyNl
bHNlICAvLyBHVEVTVF9IQVNfU1REX01PVkVfCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0
IFQmIG1vdmUoY29uc3QgVCYgdCkgeworICByZXR1cm4gdDsKK30KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorR1RFU1RfQUREX1JFRkVSRU5DRV8oVCkgZm9yd2FyZChHVEVTVF9BRERfUkVGRVJFTkNF
XyhUKSB0KSB7IHJldHVybiB0OyB9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IFJ2
YWx1ZVJlZiB7CisgIHR5cGVkZWYgY29uc3QgVCYgdHlwZTsKK307CisjZW5kaWYgIC8vIEdURVNU
X0hBU19TVERfTU9WRV8KKwogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNF
IElOIFVTRVIgQ09ERS4KIC8vCisvLyBVc2UgSW1wbGljaXRDYXN0XyBhcyBhIHNhZmUgdmVyc2lv
biBvZiBzdGF0aWNfY2FzdCBmb3IgdXBjYXN0aW5nIGluCisvLyB0aGUgdHlwZSBoaWVyYXJjaHkg
KGUuZy4gY2FzdGluZyBhIEZvbyogdG8gYSBTdXBlcmNsYXNzT2ZGb28qIG9yIGEKKy8vIGNvbnN0
IEZvbyopLiAgV2hlbiB5b3UgdXNlIEltcGxpY2l0Q2FzdF8sIHRoZSBjb21waWxlciBjaGVja3Mg
dGhhdAorLy8gdGhlIGNhc3QgaXMgc2FmZS4gIFN1Y2ggZXhwbGljaXQgSW1wbGljaXRDYXN0X3Mg
YXJlIG5lY2Vzc2FyeSBpbgorLy8gc3VycHJpc2luZ2x5IG1hbnkgc2l0dWF0aW9ucyB3aGVyZSBD
KysgZGVtYW5kcyBhbiBleGFjdCB0eXBlIG1hdGNoCisvLyBpbnN0ZWFkIG9mIGFuIGFyZ3VtZW50
IHR5cGUgY29udmVydGFibGUgdG8gYSB0YXJnZXQgdHlwZS4KKy8vCisvLyBUaGUgc3ludGF4IGZv
ciB1c2luZyBJbXBsaWNpdENhc3RfIGlzIHRoZSBzYW1lIGFzIGZvciBzdGF0aWNfY2FzdDoKKy8v
CisvLyAgIEltcGxpY2l0Q2FzdF88VG9UeXBlPihleHByKQorLy8KKy8vIEltcGxpY2l0Q2FzdF8g
d291bGQgaGF2ZSBiZWVuIHBhcnQgb2YgdGhlIEMrKyBzdGFuZGFyZCBsaWJyYXJ5LAorLy8gYnV0
IHRoZSBwcm9wb3NhbCB3YXMgc3VibWl0dGVkIHRvbyBsYXRlLiAgSXQgd2lsbCBwcm9iYWJseSBt
YWtlCisvLyBpdHMgd2F5IGludG8gdGhlIGxhbmd1YWdlIGluIHRoZSBmdXR1cmUuCisvLworLy8g
VGhpcyByZWxhdGl2ZWx5IHVnbHkgbmFtZSBpcyBpbnRlbnRpb25hbC4gSXQgcHJldmVudHMgY2xh
c2hlcyB3aXRoCisvLyBzaW1pbGFyIGZ1bmN0aW9ucyB1c2VycyBtYXkgaGF2ZSAoZS5nLiwgaW1w
bGljaXRfY2FzdCkuIFRoZSBpbnRlcm5hbAorLy8gbmFtZXNwYWNlIGFsb25lIGlzIG5vdCBlbm91
Z2ggYmVjYXVzZSB0aGUgZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGJ5IEFETC4KK3RlbXBsYXRlPHR5
cGVuYW1lIFRvPgoraW5saW5lIFRvIEltcGxpY2l0Q2FzdF8oVG8geCkgeyByZXR1cm4geDsgfQor
CisvLyBXaGVuIHlvdSB1cGNhc3QgKHRoYXQgaXMsIGNhc3QgYSBwb2ludGVyIGZyb20gdHlwZSBG
b28gdG8gdHlwZQorLy8gU3VwZXJjbGFzc09mRm9vKSwgaXQncyBmaW5lIHRvIHVzZSBJbXBsaWNp
dENhc3RfPD4sIHNpbmNlIHVwY2FzdHMKKy8vIGFsd2F5cyBzdWNjZWVkLiAgV2hlbiB5b3UgZG93
bmNhc3QgKHRoYXQgaXMsIGNhc3QgYSBwb2ludGVyIGZyb20KKy8vIHR5cGUgRm9vIHRvIHR5cGUg
U3ViY2xhc3NPZkZvbyksIHN0YXRpY19jYXN0PD4gaXNuJ3Qgc2FmZSwgYmVjYXVzZQorLy8gaG93
IGRvIHlvdSBrbm93IHRoZSBwb2ludGVyIGlzIHJlYWxseSBvZiB0eXBlIFN1YmNsYXNzT2ZGb28/
ICBJdAorLy8gY291bGQgYmUgYSBiYXJlIEZvbywgb3Igb2YgdHlwZSBEaWZmZXJlbnRTdWJjbGFz
c09mRm9vLiAgVGh1cywKKy8vIHdoZW4geW91IGRvd25jYXN0LCB5b3Ugc2hvdWxkIHVzZSB0aGlz
IG1hY3JvLiAgSW4gZGVidWcgbW9kZSwgd2UKKy8vIHVzZSBkeW5hbWljX2Nhc3Q8PiB0byBkb3Vi
bGUtY2hlY2sgdGhlIGRvd25jYXN0IGlzIGxlZ2FsICh3ZSBkaWUKKy8vIGlmIGl0J3Mgbm90KS4g
IEluIG5vcm1hbCBtb2RlLCB3ZSBkbyB0aGUgZWZmaWNpZW50IHN0YXRpY19jYXN0PD4KKy8vIGlu
c3RlYWQuICBUaHVzLCBpdCdzIGltcG9ydGFudCB0byB0ZXN0IGluIGRlYnVnIG1vZGUgdG8gbWFr
ZSBzdXJlCisvLyB0aGUgY2FzdCBpcyBsZWdhbCEKKy8vICAgIFRoaXMgaXMgdGhlIG9ubHkgcGxh
Y2UgaW4gdGhlIGNvZGUgd2Ugc2hvdWxkIHVzZSBkeW5hbWljX2Nhc3Q8Pi4KKy8vIEluIHBhcnRp
Y3VsYXIsIHlvdSBTSE9VTEROJ1QgYmUgdXNpbmcgZHluYW1pY19jYXN0PD4gaW4gb3JkZXIgdG8K
Ky8vIGRvIFJUVEkgKGVnIGNvZGUgbGlrZSB0aGlzOgorLy8gICAgaWYgKGR5bmFtaWNfY2FzdDxT
dWJjbGFzczE+KGZvbykpIEhhbmRsZUFTdWJjbGFzczFPYmplY3QoZm9vKTsKKy8vICAgIGlmIChk
eW5hbWljX2Nhc3Q8U3ViY2xhc3MyPihmb28pKSBIYW5kbGVBU3ViY2xhc3MyT2JqZWN0KGZvbyk7
CisvLyBZb3Ugc2hvdWxkIGRlc2lnbiB0aGUgY29kZSBzb21lIG90aGVyIHdheSBub3QgdG8gbmVl
ZCB0aGlzLgorLy8KKy8vIFRoaXMgcmVsYXRpdmVseSB1Z2x5IG5hbWUgaXMgaW50ZW50aW9uYWwu
IEl0IHByZXZlbnRzIGNsYXNoZXMgd2l0aAorLy8gc2ltaWxhciBmdW5jdGlvbnMgdXNlcnMgbWF5
IGhhdmUgKGUuZy4sIGRvd25fY2FzdCkuIFRoZSBpbnRlcm5hbAorLy8gbmFtZXNwYWNlIGFsb25l
IGlzIG5vdCBlbm91Z2ggYmVjYXVzZSB0aGUgZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGJ5IEFETC4K
K3RlbXBsYXRlPHR5cGVuYW1lIFRvLCB0eXBlbmFtZSBGcm9tPiAgLy8gdXNlIGxpa2UgdGhpczog
RG93bkNhc3RfPFQqPihmb28pOworaW5saW5lIFRvIERvd25DYXN0XyhGcm9tKiBmKSB7ICAvLyBz
byB3ZSBvbmx5IGFjY2VwdCBwb2ludGVycworICAvLyBFbnN1cmVzIHRoYXQgVG8gaXMgYSBzdWIt
dHlwZSBvZiBGcm9tICouICBUaGlzIHRlc3QgaXMgaGVyZSBvbmx5CisgIC8vIGZvciBjb21waWxl
LXRpbWUgdHlwZSBjaGVja2luZywgYW5kIGhhcyBubyBvdmVyaGVhZCBpbiBhbgorICAvLyBvcHRp
bWl6ZWQgYnVpbGQgYXQgcnVuLXRpbWUsIGFzIGl0IHdpbGwgYmUgb3B0aW1pemVkIGF3YXkKKyAg
Ly8gY29tcGxldGVseS4KKyAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QVVNIXygpCisg
IGlmIChmYWxzZSkgeworICBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BPUF8oKQorICAg
IGNvbnN0IFRvIHRvID0gTlVMTDsKKyAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENh
c3RfPEZyb20qPih0byk7CisgIH0KKworI2lmIEdURVNUX0hBU19SVFRJCisgIC8vIFJUVEk6IGRl
YnVnIG1vZGUgb25seSEKKyAgR1RFU1RfQ0hFQ0tfKGYgPT0gTlVMTCB8fCBkeW5hbWljX2Nhc3Q8
VG8+KGYpICE9IE5VTEwpOworI2VuZGlmCisgIHJldHVybiBzdGF0aWNfY2FzdDxUbz4oZik7Cit9
CisKIC8vIERvd25jYXN0cyB0aGUgcG9pbnRlciBvZiB0eXBlIEJhc2UgdG8gRGVyaXZlZC4KIC8v
IERlcml2ZWQgbXVzdCBiZSBhIHN1YmNsYXNzIG9mIEJhc2UuIFRoZSBwYXJhbWV0ZXIgTVVTVAog
Ly8gcG9pbnQgdG8gYSBjbGFzcyBvZiB0eXBlIERlcml2ZWQsIG5vdCBhbnkgc3ViY2xhc3Mgb2Yg
aXQuCkBAIC04MzksMTMgKzE1MjUsMTggQEAgdGVtcGxhdGUgPGNsYXNzIERlcml2ZWQsIGNsYXNz
IEJhc2U+CiBEZXJpdmVkKiBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGUoQmFzZSogYmFzZSkg
ewogI2lmIEdURVNUX0hBU19SVFRJCiAgIEdURVNUX0NIRUNLXyh0eXBlaWQoKmJhc2UpID09IHR5
cGVpZChEZXJpdmVkKSk7CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19ET1dOQ0FTVF8KKyAgcmV0
dXJuIDo6ZG93bl9jYXN0PERlcml2ZWQqPihiYXNlKTsKKyNlbGlmIEdURVNUX0hBU19SVFRJCiAg
IHJldHVybiBkeW5hbWljX2Nhc3Q8RGVyaXZlZCo+KGJhc2UpOyAgLy8gTk9MSU5UCiAjZWxzZQog
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZCo+KGJhc2UpOyAgLy8gUG9vciBtYW4ncyBkb3du
Y2FzdC4KICNlbmRpZgogfQogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNp
ZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCiAKIC8vIERlZmluZXMgdGhlIHN0ZGVyciBj
YXB0dXJlcjoKIC8vICAgQ2FwdHVyZVN0ZG91dCAgICAgLSBzdGFydHMgY2FwdHVyaW5nIHN0ZG91
dC4KQEAgLTg1NCwzMCArMTU0NSwzOSBAQCBEZXJpdmVkKiBDaGVja2VkRG93bmNhc3RUb0FjdHVh
bFR5cGUoQmFzZSogYmFzZSkgewogLy8gICBHZXRDYXB0dXJlZFN0ZGVyciAtIHN0b3BzIGNhcHR1
cmluZyBzdGRlcnIgYW5kIHJldHVybnMgdGhlIGNhcHR1cmVkIHN0cmluZy4KIC8vCiBHVEVTVF9B
UElfIHZvaWQgQ2FwdHVyZVN0ZG91dCgpOwotR1RFU1RfQVBJXyBTdHJpbmcgR2V0Q2FwdHVyZWRT
dGRvdXQoKTsKK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKTsKIEdU
RVNUX0FQSV8gdm9pZCBDYXB0dXJlU3RkZXJyKCk7Ci1HVEVTVF9BUElfIFN0cmluZyBHZXRDYXB0
dXJlZFN0ZGVycigpOworR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0ZGVycigp
OwogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCisjZW5kaWYgIC8v
IEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KKy8vIFJldHVybnMgdGhlIHNpemUgKGluIGJ5
dGVzKSBvZiBhIGZpbGUuCitHVEVTVF9BUElfIHNpemVfdCBHZXRGaWxlU2l6ZShGSUxFKiBmaWxl
KTsKIAorLy8gUmVhZHMgdGhlIGVudGlyZSBjb250ZW50IG9mIGEgZmlsZSBhcyBhIHN0cmluZy4K
K0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgUmVhZEVudGlyZUZpbGUoRklMRSogZmlsZSk7CiAKLSNp
ZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorLy8gQWxsIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCitH
VEVTVF9BUElfIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRBcmd2cygpOwogCi0vLyBBIGNv
cHkgb2YgYWxsIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuICBTZXQgYnkgSW5pdEdvb2dsZVRlc3Qo
KS4KLWV4dGVybiA6OnN0ZDo6dmVjdG9yPFN0cmluZz4gZ19hcmd2czsKKyNpZiBHVEVTVF9IQVNf
REVBVEhfVEVTVAogCi0vLyBHVEVTVF9IQVNfREVBVEhfVEVTVCBpbXBsaWVzIHdlIGhhdmUgOjpz
dGQ6OnN0cmluZy4KLWNvbnN0IDo6c3RkOjp2ZWN0b3I8U3RyaW5nPiYgR2V0QXJndnMoKTsKK3N0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRJbmplY3RhYmxlQXJndnMoKTsKKy8vIERlcHJlY2F0
ZWQ6IHBhc3MgdGhlIGFyZ3MgdmVjdG9yIGJ5IHZhbHVlIGluc3RlYWQuCit2b2lkIFNldEluamVj
dGFibGVBcmd2cyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIG5ld19hcmd2cyk7Cit2
b2lkIFNldEluamVjdGFibGVBcmd2cyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIG5l
d19hcmd2cyk7CisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK3ZvaWQgU2V0SW5qZWN0YWJs
ZUFyZ3ZzKGNvbnN0IHN0ZDo6dmVjdG9yPCA6OnN0cmluZz4mIG5ld19hcmd2cyk7CisjZW5kaWYg
IC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCit2b2lkIENsZWFySW5qZWN0YWJsZUFyZ3ZzKCk7
CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKIAogLy8gRGVmaW5lcyBzeW5jaHJv
bml6YXRpb24gcHJpbWl0aXZlcy4KLQotI2lmIEdURVNUX0hBU19QVEhSRUFECi0KLS8vIFNsZWVw
cyBmb3IgKHJvdWdobHkpIG4gbWlsbGktc2Vjb25kcy4gIFRoaXMgZnVuY3Rpb24gaXMgb25seSBm
b3IKLS8vIHRlc3RpbmcgR29vZ2xlIFRlc3QncyBvd24gY29uc3RydWN0cy4gIERvbid0IHVzZSBp
dCBpbiB1c2VyIHRlc3RzLAotLy8gZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCisjaWYg
R1RFU1RfSVNfVEhSRUFEU0FGRQorIyBpZiBHVEVTVF9IQVNfUFRIUkVBRAorLy8gU2xlZXBzIGZv
ciAocm91Z2hseSkgbiBtaWxsaXNlY29uZHMuICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZm9yIHRl
c3RpbmcKKy8vIEdvb2dsZSBUZXN0J3Mgb3duIGNvbnN0cnVjdHMuICBEb24ndCB1c2UgaXQgaW4g
dXNlciB0ZXN0cywgZWl0aGVyCisvLyBkaXJlY3RseSBvciBpbmRpcmVjdGx5LgogaW5saW5lIHZv
aWQgU2xlZXBNaWxsaXNlY29uZHMoaW50IG4pIHsKICAgY29uc3QgdGltZXNwZWMgdGltZSA9IHsK
ICAgICAwLCAgICAgICAgICAgICAgICAgIC8vIDAgc2Vjb25kcy4KQEAgLTg4NSw3ICsxNTg1LDEz
IEBAIGlubGluZSB2b2lkIFNsZWVwTWlsbGlzZWNvbmRzKGludCBuKSB7CiAgIH07CiAgIG5hbm9z
bGVlcCgmdGltZSwgTlVMTCk7CiB9CisjIGVuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVBRAogCisj
IGlmIEdURVNUX0hBU19OT1RJRklDQVRJT05fCisvLyBOb3RpZmljYXRpb24gaGFzIGFscmVhZHkg
YmVlbiBpbXBvcnRlZCBpbnRvIHRoZSBuYW1lc3BhY2UuCisvLyBOb3RoaW5nIHRvIGRvIGhlcmUu
CisKKyMgZWxpZiBHVEVTVF9IQVNfUFRIUkVBRAogLy8gQWxsb3dzIGEgY29udHJvbGxlciB0aHJl
YWQgdG8gcGF1c2UgZXhlY3V0aW9uIG9mIG5ld2x5IGNyZWF0ZWQKIC8vIHRocmVhZHMgdW50aWwg
bm90aWZpZWQuICBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBtdXN0IGJlIGNyZWF0ZWQKIC8vIGFu
ZCBkZXN0cm95ZWQgaW4gdGhlIGNvbnRyb2xsZXIgdGhyZWFkLgpAQCAtODk0LDI1ICsxNjAwLDk2
IEBAIGlubGluZSB2b2lkIFNsZWVwTWlsbGlzZWNvbmRzKGludCBuKSB7CiAvLyB1c2UgaXQgaW4g
dXNlciB0ZXN0cywgZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCiBjbGFzcyBOb3RpZmlj
YXRpb24gewogIHB1YmxpYzoKLSAgTm90aWZpY2F0aW9uKCkgOiBub3RpZmllZF8oZmFsc2UpIHt9
CisgIE5vdGlmaWNhdGlvbigpIDogbm90aWZpZWRfKGZhbHNlKSB7CisgICAgR1RFU1RfQ0hFQ0tf
UE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9pbml0KCZtdXRleF8sIE5VTEwpKTsKKyAgfQor
ICB+Tm90aWZpY2F0aW9uKCkgeworICAgIHB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmbXV0ZXhfKTsK
KyAgfQogCiAgIC8vIE5vdGlmaWVzIGFsbCB0aHJlYWRzIGNyZWF0ZWQgd2l0aCB0aGlzIG5vdGlm
aWNhdGlvbiB0byBzdGFydC4gTXVzdAogICAvLyBiZSBjYWxsZWQgZnJvbSB0aGUgY29udHJvbGxl
ciB0aHJlYWQuCi0gIHZvaWQgTm90aWZ5KCkgeyBub3RpZmllZF8gPSB0cnVlOyB9CisgIHZvaWQg
Tm90aWZ5KCkgeworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXhfKTsKKyAgICBub3RpZmll
ZF8gPSB0cnVlOworICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleF8pOworICB9CiAKICAg
Ly8gQmxvY2tzIHVudGlsIHRoZSBjb250cm9sbGVyIHRocmVhZCBub3RpZmllcy4gTXVzdCBiZSBj
YWxsZWQgZnJvbSBhIHRlc3QKICAgLy8gdGhyZWFkLgogICB2b2lkIFdhaXRGb3JOb3RpZmljYXRp
b24oKSB7Ci0gICAgd2hpbGUoIW5vdGlmaWVkXykgeworICAgIGZvciAoOzspIHsKKyAgICAgIHB0
aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXhfKTsKKyAgICAgIGNvbnN0IGJvb2wgbm90aWZpZWQgPSBu
b3RpZmllZF87CisgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXhfKTsKKyAgICAgIGlm
IChub3RpZmllZCkKKyAgICAgICAgYnJlYWs7CiAgICAgICBTbGVlcE1pbGxpc2Vjb25kcygxMCk7
CiAgICAgfQogICB9CiAKICBwcml2YXRlOgotICB2b2xhdGlsZSBib29sIG5vdGlmaWVkXzsKKyAg
cHRocmVhZF9tdXRleF90IG11dGV4XzsKKyAgYm9vbCBub3RpZmllZF87CisKKyAgR1RFU1RfRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhOb3RpZmljYXRpb24pOworfTsKKworIyBlbGlmIEdURVNU
X09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRP
V1NfUlQKKworR1RFU1RfQVBJXyB2b2lkIFNsZWVwTWlsbGlzZWNvbmRzKGludCBuKTsKKworLy8g
UHJvdmlkZXMgbGVhay1zYWZlIFdpbmRvd3Mga2VybmVsIGhhbmRsZSBvd25lcnNoaXAuCisvLyBV
c2VkIGluIGRlYXRoIHRlc3RzIGFuZCBpbiB0aHJlYWRpbmcgc3VwcG9ydC4KK2NsYXNzIEdURVNU
X0FQSV8gQXV0b0hhbmRsZSB7CisgcHVibGljOgorICAvLyBBc3N1bWUgdGhhdCBXaW4zMiBIQU5E
TEUgdHlwZSBpcyBlcXVpdmFsZW50IHRvIHZvaWQqLiBEb2luZyBzbyBhbGxvd3MgdXMgdG8KKyAg
Ly8gYXZvaWQgaW5jbHVkaW5nIDx3aW5kb3dzLmg+IGluIHRoaXMgaGVhZGVyIGZpbGUuIEluY2x1
ZGluZyA8d2luZG93cy5oPiBpcworICAvLyB1bmRlc2lyYWJsZSBiZWNhdXNlIGl0IGRlZmluZXMg
YSBsb3Qgb2Ygc3ltYm9scyBhbmQgbWFjcm9zIHRoYXQgdGVuZCB0bworICAvLyBjb25mbGljdCB3
aXRoIGNsaWVudCBjb2RlLiBUaGlzIGFzc3VtcHRpb24gaXMgdmVyaWZpZWQgYnkKKyAgLy8gV2lu
ZG93c1R5cGVzVGVzdC5IQU5ETEVJc1ZvaWRTdGFyLgorICB0eXBlZGVmIHZvaWQqIEhhbmRsZTsK
KyAgQXV0b0hhbmRsZSgpOworICBleHBsaWNpdCBBdXRvSGFuZGxlKEhhbmRsZSBoYW5kbGUpOwor
CisgIH5BdXRvSGFuZGxlKCk7CisKKyAgSGFuZGxlIEdldCgpIGNvbnN0OworICB2b2lkIFJlc2V0
KCk7CisgIHZvaWQgUmVzZXQoSGFuZGxlIGhhbmRsZSk7CisKKyBwcml2YXRlOgorICAvLyBSZXR1
cm5zIHRydWUgaWZmIHRoZSBoYW5kbGUgaXMgYSB2YWxpZCBoYW5kbGUgb2JqZWN0IHRoYXQgY2Fu
IGJlIGNsb3NlZC4KKyAgYm9vbCBJc0Nsb3NlYWJsZSgpIGNvbnN0OworCisgIEhhbmRsZSBoYW5k
bGVfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQXV0b0hhbmRsZSk7Cit9
OworCisvLyBBbGxvd3MgYSBjb250cm9sbGVyIHRocmVhZCB0byBwYXVzZSBleGVjdXRpb24gb2Yg
bmV3bHkgY3JlYXRlZAorLy8gdGhyZWFkcyB1bnRpbCBub3RpZmllZC4gIEluc3RhbmNlcyBvZiB0
aGlzIGNsYXNzIG11c3QgYmUgY3JlYXRlZAorLy8gYW5kIGRlc3Ryb3llZCBpbiB0aGUgY29udHJv
bGxlciB0aHJlYWQuCisvLworLy8gVGhpcyBjbGFzcyBpcyBvbmx5IGZvciB0ZXN0aW5nIEdvb2ds
ZSBUZXN0J3Mgb3duIGNvbnN0cnVjdHMuIERvIG5vdAorLy8gdXNlIGl0IGluIHVzZXIgdGVzdHMs
IGVpdGhlciBkaXJlY3RseSBvciBpbmRpcmVjdGx5LgorY2xhc3MgR1RFU1RfQVBJXyBOb3RpZmlj
YXRpb24geworIHB1YmxpYzoKKyAgTm90aWZpY2F0aW9uKCk7CisgIHZvaWQgTm90aWZ5KCk7Cisg
IHZvaWQgV2FpdEZvck5vdGlmaWNhdGlvbigpOworCisgcHJpdmF0ZToKKyAgQXV0b0hhbmRsZSBl
dmVudF87CiAKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhOb3RpZmljYXRpb24p
OwogfTsKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19OT1RJRklDQVRJT05fCisKKy8vIE9uIE1pbkdX
LCB3ZSBjYW4gaGF2ZSBib3RoIEdURVNUX09TX1dJTkRPV1MgYW5kIEdURVNUX0hBU19QVEhSRUFE
CisvLyBkZWZpbmVkLCBidXQgd2UgZG9uJ3Qgd2FudCB0byB1c2UgTWluR1cncyBwdGhyZWFkcyBp
bXBsZW1lbnRhdGlvbiwgd2hpY2gKKy8vIGhhcyBjb25mb3JtYW5jZSBwcm9ibGVtcyB3aXRoIHNv
bWUgdmVyc2lvbnMgb2YgdGhlIFBPU0lYIHN0YW5kYXJkLgorIyBpZiBHVEVTVF9IQVNfUFRIUkVB
RCAmJiAhR1RFU1RfT1NfV0lORE9XU19NSU5HVwogCiAvLyBBcyBhIEMtZnVuY3Rpb24sIFRocmVh
ZEZ1bmNXaXRoQ0xpbmthZ2UgY2Fubm90IGJlIHRlbXBsYXRlZCBpdHNlbGYuCiAvLyBDb25zZXF1
ZW50bHksIGl0IGNhbm5vdCBzZWxlY3QgYSBjb3JyZWN0IGluc3RhbnRpYXRpb24gb2YgVGhyZWFk
V2l0aFBhcmFtCkBAIC05NTEsMTAgKzE3MjgsOSBAQCBleHRlcm4gIkMiIGlubGluZSB2b2lkKiBU
aHJlYWRGdW5jV2l0aENMaW5rYWdlKHZvaWQqIHRocmVhZCkgewogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiBjbGFzcyBUaHJlYWRXaXRoUGFyYW0gOiBwdWJsaWMgVGhyZWFkV2l0aFBhcmFtQmFzZSB7
CiAgcHVibGljOgotICB0eXBlZGVmIHZvaWQgKCpVc2VyVGhyZWFkRnVuYykoVCk7CisgIHR5cGVk
ZWYgdm9pZCBVc2VyVGhyZWFkRnVuYyhUKTsKIAotICBUaHJlYWRXaXRoUGFyYW0oCi0gICAgICBV
c2VyVGhyZWFkRnVuYyBmdW5jLCBUIHBhcmFtLCBOb3RpZmljYXRpb24qIHRocmVhZF9jYW5fc3Rh
cnQpCisgIFRocmVhZFdpdGhQYXJhbShVc2VyVGhyZWFkRnVuYyogZnVuYywgVCBwYXJhbSwgTm90
aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KQogICAgICAgOiBmdW5jXyhmdW5jKSwKICAgICAg
ICAgcGFyYW1fKHBhcmFtKSwKICAgICAgICAgdGhyZWFkX2Nhbl9zdGFydF8odGhyZWFkX2Nhbl9z
dGFydCksCkBAIC05ODEsNyArMTc1Nyw3IEBAIGNsYXNzIFRocmVhZFdpdGhQYXJhbSA6IHB1Ymxp
YyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKICAgfQogCiAgcHJpdmF0ZToKLSAgY29uc3QgVXNlclRo
cmVhZEZ1bmMgZnVuY187ICAvLyBVc2VyLXN1cHBsaWVkIHRocmVhZCBmdW5jdGlvbi4KKyAgVXNl
clRocmVhZEZ1bmMqIGNvbnN0IGZ1bmNfOyAgLy8gVXNlci1zdXBwbGllZCB0aHJlYWQgZnVuY3Rp
b24uCiAgIGNvbnN0IFQgcGFyYW1fOyAgLy8gVXNlci1zdXBwbGllZCBwYXJhbWV0ZXIgdG8gdGhl
IHRocmVhZCBmdW5jdGlvbi4KICAgLy8gV2hlbiBub24tTlVMTCwgdXNlZCB0byBibG9jayBleGVj
dXRpb24gdW50aWwgdGhlIGNvbnRyb2xsZXIgdGhyZWFkCiAgIC8vIG5vdGlmaWVzLgpAQCAtOTkx
LDUxICsxNzY3LDMxNiBAQCBjbGFzcyBUaHJlYWRXaXRoUGFyYW0gOiBwdWJsaWMgVGhyZWFkV2l0
aFBhcmFtQmFzZSB7CiAKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJlYWRX
aXRoUGFyYW0pOwogfTsKKyMgZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTICYmIEdURVNUX0hB
U19QVEhSRUFEIHx8CisgICAgICAgICAvLyBHVEVTVF9IQVNfTVVURVhfQU5EX1RIUkVBRF9MT0NB
TF8KIAotLy8gZ3Rlc3QtcG9ydC5oIGd1YXJhbnRlZXMgdG8gI2luY2x1ZGUgPHB0aHJlYWQuaD4g
d2hlbiBHVEVTVF9IQVNfUFRIUkVBRCBpcwotLy8gdHJ1ZS4KLSNpbmNsdWRlIDxwdGhyZWFkLmg+
CisjIGlmIEdURVNUX0hBU19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMXworLy8gTXV0ZXggYW5kIFRo
cmVhZExvY2FsIGhhdmUgYWxyZWFkeSBiZWVuIGltcG9ydGVkIGludG8gdGhlIG5hbWVzcGFjZS4K
Ky8vIE5vdGhpbmcgdG8gZG8gaGVyZS4KIAotLy8gTXV0ZXhCYXNlIGFuZCBNdXRleCBpbXBsZW1l
bnQgbXV0ZXggb24gcHRocmVhZHMtYmFzZWQgcGxhdGZvcm1zLiBUaGV5Ci0vLyBhcmUgdXNlZCBp
biBjb25qdW5jdGlvbiB3aXRoIGNsYXNzIE11dGV4TG9jazoKKyMgZWxpZiBHVEVTVF9PU19XSU5E
T1dTICYmICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUCisK
Ky8vIE11dGV4IGltcGxlbWVudHMgbXV0ZXggb24gV2luZG93cyBwbGF0Zm9ybXMuICBJdCBpcyB1
c2VkIGluIGNvbmp1bmN0aW9uCisvLyB3aXRoIGNsYXNzIE11dGV4TG9jazoKIC8vCiAvLyAgIE11
dGV4IG11dGV4OwogLy8gICAuLi4KLS8vICAgTXV0ZXhMb2NrIGxvY2soJm11dGV4KTsgIC8vIEFj
cXVpcmVzIHRoZSBtdXRleCBhbmQgcmVsZWFzZXMgaXQgYXQgdGhlIGVuZAotLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gb2YgdGhlIGN1cnJlbnQgc2NvcGUuCi0vLwotLy8gTXV0ZXhC
YXNlIGltcGxlbWVudHMgYmVoYXZpb3IgZm9yIGJvdGggc3RhdGljYWxseSBhbmQgZHluYW1pY2Fs
bHkKLS8vIGFsbG9jYXRlZCBtdXRleGVzLiAgRG8gbm90IHVzZSBNdXRleEJhc2UgZGlyZWN0bHku
ICBJbnN0ZWFkLCB3cml0ZQotLy8gdGhlIGZvbGxvd2luZyB0byBkZWZpbmUgYSBzdGF0aWMgbXV0
ZXg6CisvLyAgIE11dGV4TG9jayBsb2NrKCZtdXRleCk7ICAvLyBBY3F1aXJlcyB0aGUgbXV0ZXgg
YW5kIHJlbGVhc2VzIGl0IGF0IHRoZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
ZW5kIG9mIHRoZSBjdXJyZW50IHNjb3BlLgogLy8KKy8vIEEgc3RhdGljIE11dGV4ICptdXN0KiBi
ZSBkZWZpbmVkIG9yIGRlY2xhcmVkIHVzaW5nIG9uZSBvZiB0aGUgZm9sbG93aW5nCisvLyBtYWNy
b3M6CiAvLyAgIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKGdfc29tZV9tdXRleCk7CisvLyAg
IEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhnX3NvbWVfbXV0ZXgpOworLy8KKy8vIChBIG5v
bi1zdGF0aWMgTXV0ZXggaXMgZGVmaW5lZC9kZWNsYXJlZCBpbiB0aGUgdXN1YWwgd2F5KS4KK2Ns
YXNzIEdURVNUX0FQSV8gTXV0ZXggeworIHB1YmxpYzoKKyAgZW51bSBNdXRleFR5cGUgeyBrU3Rh
dGljID0gMCwga0R5bmFtaWMgPSAxIH07CisgIC8vIFdlIHJlbHkgb24ga1N0YXRpY011dGV4IGJl
aW5nIDAgYXMgaXQgaXMgdG8gd2hhdCB0aGUgbGlua2VyIGluaXRpYWxpemVzCisgIC8vIHR5cGVf
IGluIHN0YXRpYyBtdXRleGVzLiAgY3JpdGljYWxfc2VjdGlvbl8gd2lsbCBiZSBpbml0aWFsaXpl
ZCBsYXppbHkKKyAgLy8gaW4gVGhyZWFkU2FmZUxhenlJbml0KCkuCisgIGVudW0gU3RhdGljQ29u
c3RydWN0b3JTZWxlY3RvciB7IGtTdGF0aWNNdXRleCA9IDAgfTsKKworICAvLyBUaGlzIGNvbnN0
cnVjdG9yIGludGVudGlvbmFsbHkgZG9lcyBub3RoaW5nLiAgSXQgcmVsaWVzIG9uIHR5cGVfIGJl
aW5nCisgIC8vIHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQgdG8gMCAoZWZmZWN0aXZlbHkgc2V0dGlu
ZyBpdCB0byBrU3RhdGljKSBhbmQgb24KKyAgLy8gVGhyZWFkU2FmZUxhenlJbml0KCkgdG8gbGF6
aWx5IGluaXRpYWxpemUgdGhlIHJlc3Qgb2YgdGhlIG1lbWJlcnMuCisgIGV4cGxpY2l0IE11dGV4
KFN0YXRpY0NvbnN0cnVjdG9yU2VsZWN0b3IgLypkdW1teSovKSB7fQorCisgIE11dGV4KCk7Cisg
IH5NdXRleCgpOworCisgIHZvaWQgTG9jaygpOworCisgIHZvaWQgVW5sb2NrKCk7CisKKyAgLy8g
RG9lcyBub3RoaW5nIGlmIHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUgbXV0ZXguIE90aGVy
d2lzZSwgY3Jhc2hlcworICAvLyB3aXRoIGhpZ2ggcHJvYmFiaWxpdHkuCisgIHZvaWQgQXNzZXJ0
SGVsZCgpOworCisgcHJpdmF0ZToKKyAgLy8gSW5pdGlhbGl6ZXMgb3duZXJfdGhyZWFkX2lkXyBh
bmQgY3JpdGljYWxfc2VjdGlvbl8gaW4gc3RhdGljIG11dGV4ZXMuCisgIHZvaWQgVGhyZWFkU2Fm
ZUxhenlJbml0KCk7CisKKyAgLy8gUGVyIGh0dHBzOi8vYmxvZ3MubXNkbi5taWNyb3NvZnQuY29t
L29sZG5ld3RoaW5nLzIwMDQwMjIzLTAwLz9wPTQwNTAzLAorICAvLyB3ZSBhc3N1bWUgdGhhdCAw
IGlzIGFuIGludmFsaWQgdmFsdWUgZm9yIHRocmVhZCBJRHMuCisgIHVuc2lnbmVkIGludCBvd25l
cl90aHJlYWRfaWRfOworCisgIC8vIEZvciBzdGF0aWMgbXV0ZXhlcywgd2UgcmVseSBvbiB0aGVz
ZSBtZW1iZXJzIGJlaW5nIGluaXRpYWxpemVkIHRvIHplcm9zCisgIC8vIGJ5IHRoZSBsaW5rZXIu
CisgIE11dGV4VHlwZSB0eXBlXzsKKyAgbG9uZyBjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhhc2Vf
OyAgLy8gTk9MSU5UCisgIEdURVNUX0NSSVRJQ0FMX1NFQ1RJT04qIGNyaXRpY2FsX3NlY3Rpb25f
OworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTXV0ZXgpOworfTsKKworIyBk
ZWZpbmUgR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVURVhfKG11dGV4KSBcCisgICAgZXh0ZXJuIDo6
dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4IG11dGV4CisKKyMgZGVmaW5lIEdURVNUX0RFRklORV9T
VEFUSUNfTVVURVhfKG11dGV4KSBcCisgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXggbXV0
ZXgoOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXg6OmtTdGF0aWNNdXRleCkKKworLy8gV2UgY2Fu
bm90IG5hbWUgdGhpcyBjbGFzcyBNdXRleExvY2sgYmVjYXVzZSB0aGUgY3RvciBkZWNsYXJhdGlv
biB3b3VsZAorLy8gY29uZmxpY3Qgd2l0aCBhIG1hY3JvIG5hbWVkIE11dGV4TG9jaywgd2hpY2gg
aXMgZGVmaW5lZCBvbiBzb21lCisvLyBwbGF0Zm9ybXMuIFRoYXQgbWFjcm8gaXMgdXNlZCBhcyBh
IGRlZmVuc2l2ZSBtZWFzdXJlIHRvIHByZXZlbnQgYWdhaW5zdAorLy8gaW5hZHZlcnRlbnQgbWlz
dXNlcyBvZiBNdXRleExvY2sgbGlrZSAiTXV0ZXhMb2NrKCZtdSkiIHJhdGhlciB0aGFuCisvLyAi
TXV0ZXhMb2NrIGwoJm11KSIuICBIZW5jZSB0aGUgdHlwZWRlZiB0cmljayBiZWxvdy4KK2NsYXNz
IEdUZXN0TXV0ZXhMb2NrIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEdUZXN0TXV0ZXhMb2NrKE11
dGV4KiBtdXRleCkKKyAgICAgIDogbXV0ZXhfKG11dGV4KSB7IG11dGV4Xy0+TG9jaygpOyB9CisK
KyAgfkdUZXN0TXV0ZXhMb2NrKCkgeyBtdXRleF8tPlVubG9jaygpOyB9CisKKyBwcml2YXRlOgor
ICBNdXRleCogY29uc3QgbXV0ZXhfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oR1Rlc3RNdXRleExvY2spOworfTsKKwordHlwZWRlZiBHVGVzdE11dGV4TG9jayBNdXRleExv
Y2s7CisKKy8vIEJhc2UgY2xhc3MgZm9yIFZhbHVlSG9sZGVyPFQ+LiAgQWxsb3dzIGEgY2FsbGVy
IHRvIGhvbGQgYW5kIGRlbGV0ZSBhIHZhbHVlCisvLyB3aXRob3V0IGtub3dpbmcgaXRzIHR5cGUu
CitjbGFzcyBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSB7CisgcHVibGljOgorICB2aXJ0dWFs
IH5UaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSgpIHt9Cit9OworCisvLyBQcm92aWRlcyBhIHdh
eSBmb3IgYSB0aHJlYWQgdG8gc2VuZCBub3RpZmljYXRpb25zIHRvIGEgVGhyZWFkTG9jYWwKKy8v
IHJlZ2FyZGxlc3Mgb2YgaXRzIHBhcmFtZXRlciB0eXBlLgorY2xhc3MgVGhyZWFkTG9jYWxCYXNl
IHsKKyBwdWJsaWM6CisgIC8vIENyZWF0ZXMgYSBuZXcgVmFsdWVIb2xkZXI8VD4gb2JqZWN0IGhv
bGRpbmcgYSBkZWZhdWx0IHZhbHVlIHBhc3NlZCB0bworICAvLyB0aGlzIFRocmVhZExvY2FsPFQ+
J3MgY29uc3RydWN0b3IgYW5kIHJldHVybnMgaXQuICBJdCBpcyB0aGUgY2FsbGVyJ3MKKyAgLy8g
cmVzcG9uc2liaWxpdHkgbm90IHRvIGNhbGwgdGhpcyB3aGVuIHRoZSBUaHJlYWRMb2NhbDxUPiBp
bnN0YW5jZSBhbHJlYWR5CisgIC8vIGhhcyBhIHZhbHVlIG9uIHRoZSBjdXJyZW50IHRocmVhZC4K
KyAgdmlydHVhbCBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogTmV3VmFsdWVGb3JDdXJyZW50
VGhyZWFkKCkgY29uc3QgPSAwOworCisgcHJvdGVjdGVkOgorICBUaHJlYWRMb2NhbEJhc2UoKSB7
fQorICB2aXJ0dWFsIH5UaHJlYWRMb2NhbEJhc2UoKSB7fQorCisgcHJpdmF0ZToKKyAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJlYWRMb2NhbEJhc2UpOworfTsKKworLy8gTWFw
cyBhIHRocmVhZCB0byBhIHNldCBvZiBUaHJlYWRMb2NhbHMgdGhhdCBoYXZlIHZhbHVlcyBpbnN0
YW50aWF0ZWQgb24gdGhhdAorLy8gdGhyZWFkIGFuZCBub3RpZmllcyB0aGVtIHdoZW4gdGhlIHRo
cmVhZCBleGl0cy4gIEEgVGhyZWFkTG9jYWwgaW5zdGFuY2UgaXMKKy8vIGV4cGVjdGVkIHRvIHBl
cnNpc3QgdW50aWwgYWxsIHRocmVhZHMgaXQgaGFzIHZhbHVlcyBvbiBoYXZlIHRlcm1pbmF0ZWQu
CitjbGFzcyBHVEVTVF9BUElfIFRocmVhZExvY2FsUmVnaXN0cnkgeworIHB1YmxpYzoKKyAgLy8g
UmVnaXN0ZXJzIHRocmVhZF9sb2NhbF9pbnN0YW5jZSBhcyBoYXZpbmcgdmFsdWUgb24gdGhlIGN1
cnJlbnQgdGhyZWFkLgorICAvLyBSZXR1cm5zIGEgdmFsdWUgdGhhdCBjYW4gYmUgdXNlZCB0byBp
ZGVudGlmeSB0aGUgdGhyZWFkIGZyb20gb3RoZXIgdGhyZWFkcy4KKyAgc3RhdGljIFRocmVhZExv
Y2FsVmFsdWVIb2xkZXJCYXNlKiBHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCgKKyAgICAgIGNvbnN0
IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKKworICAvLyBJbnZva2Vk
IHdoZW4gYSBUaHJlYWRMb2NhbCBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuCisgIHN0YXRpYyB2b2lk
IE9uVGhyZWFkTG9jYWxEZXN0cm95ZWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRo
cmVhZF9sb2NhbF9pbnN0YW5jZSk7Cit9OworCitjbGFzcyBHVEVTVF9BUElfIFRocmVhZFdpdGhQ
YXJhbUJhc2UgeworIHB1YmxpYzoKKyAgdm9pZCBKb2luKCk7CisKKyBwcm90ZWN0ZWQ6CisgIGNs
YXNzIFJ1bm5hYmxlIHsKKyAgIHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5SdW5uYWJsZSgpIHt9Cisg
ICAgdmlydHVhbCB2b2lkIFJ1bigpID0gMDsKKyAgfTsKKworICBUaHJlYWRXaXRoUGFyYW1CYXNl
KFJ1bm5hYmxlICpydW5uYWJsZSwgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KTsKKyAg
dmlydHVhbCB+VGhyZWFkV2l0aFBhcmFtQmFzZSgpOworCisgcHJpdmF0ZToKKyAgQXV0b0hhbmRs
ZSB0aHJlYWRfOworfTsKKworLy8gSGVscGVyIGNsYXNzIGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0
J3MgbXVsdGktdGhyZWFkaW5nIGNvbnN0cnVjdHMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIFRocmVhZFdpdGhQYXJhbSA6IHB1YmxpYyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKKyBwdWJs
aWM6CisgIHR5cGVkZWYgdm9pZCBVc2VyVGhyZWFkRnVuYyhUKTsKKworICBUaHJlYWRXaXRoUGFy
YW0oVXNlclRocmVhZEZ1bmMqIGZ1bmMsIFQgcGFyYW0sIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nh
bl9zdGFydCkKKyAgICAgIDogVGhyZWFkV2l0aFBhcmFtQmFzZShuZXcgUnVubmFibGVJbXBsKGZ1
bmMsIHBhcmFtKSwgdGhyZWFkX2Nhbl9zdGFydCkgeworICB9CisgIHZpcnR1YWwgflRocmVhZFdp
dGhQYXJhbSgpIHt9CisKKyBwcml2YXRlOgorICBjbGFzcyBSdW5uYWJsZUltcGwgOiBwdWJsaWMg
UnVubmFibGUgeworICAgcHVibGljOgorICAgIFJ1bm5hYmxlSW1wbChVc2VyVGhyZWFkRnVuYyog
ZnVuYywgVCBwYXJhbSkKKyAgICAgICAgOiBmdW5jXyhmdW5jKSwKKyAgICAgICAgICBwYXJhbV8o
cGFyYW0pIHsKKyAgICB9CisgICAgdmlydHVhbCB+UnVubmFibGVJbXBsKCkge30KKyAgICB2aXJ0
dWFsIHZvaWQgUnVuKCkgeworICAgICAgZnVuY18ocGFyYW1fKTsKKyAgICB9CisKKyAgIHByaXZh
dGU6CisgICAgVXNlclRocmVhZEZ1bmMqIGNvbnN0IGZ1bmNfOworICAgIGNvbnN0IFQgcGFyYW1f
OworCisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhSdW5uYWJsZUltcGwpOwor
ICB9OworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkV2l0aFBhcmFt
KTsKK307CisKKy8vIEltcGxlbWVudHMgdGhyZWFkLWxvY2FsIHN0b3JhZ2Ugb24gV2luZG93cyBz
eXN0ZW1zLgogLy8KLS8vIFlvdSBjYW4gZm9yd2FyZCBkZWNsYXJlIGEgc3RhdGljIG11dGV4IGxp
a2UgdGhpczoKKy8vICAgLy8gVGhyZWFkIDEKKy8vICAgVGhyZWFkTG9jYWw8aW50PiB0bCgxMDAp
OyAgLy8gMTAwIGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBlYWNoIHRocmVhZC4KIC8vCi0vLyAg
IEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhnX3NvbWVfbXV0ZXgpOworLy8gICAvLyBUaHJl
YWQgMgorLy8gICB0bC5zZXQoMTUwKTsgIC8vIENoYW5nZXMgdGhlIHZhbHVlIGZvciB0aHJlYWQg
MiBvbmx5LgorLy8gICBFWFBFQ1RfRVEoMTUwLCB0bC5nZXQoKSk7CiAvLwotLy8gVG8gY3JlYXRl
IGEgZHluYW1pYyBtdXRleCwganVzdCBkZWZpbmUgYW4gb2JqZWN0IG9mIHR5cGUgTXV0ZXguCisv
LyAgIC8vIFRocmVhZCAxCisvLyAgIEVYUEVDVF9FUSgxMDAsIHRsLmdldCgpKTsgIC8vIEluIHRo
cmVhZCAxLCB0bCBoYXMgdGhlIG9yaWdpbmFsIHZhbHVlLgorLy8gICB0bC5zZXQoMjAwKTsKKy8v
ICAgRVhQRUNUX0VRKDIwMCwgdGwuZ2V0KCkpOworLy8KKy8vIFRoZSB0ZW1wbGF0ZSB0eXBlIGFy
Z3VtZW50IFQgbXVzdCBoYXZlIGEgcHVibGljIGNvcHkgY29uc3RydWN0b3IuCisvLyBJbiBhZGRp
dGlvbiwgdGhlIGRlZmF1bHQgVGhyZWFkTG9jYWwgY29uc3RydWN0b3IgcmVxdWlyZXMgVCB0byBo
YXZlCisvLyBhIHB1YmxpYyBkZWZhdWx0IGNvbnN0cnVjdG9yLgorLy8KKy8vIFRoZSB1c2VycyBv
ZiBhIFRoZWFkTG9jYWwgaW5zdGFuY2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCBhbGwgYnV0IG9u
ZQorLy8gdGhyZWFkcyAoaW5jbHVkaW5nIHRoZSBtYWluIG9uZSkgdXNpbmcgdGhhdCBpbnN0YW5j
ZSBoYXZlIGV4aXRlZCBiZWZvcmUKKy8vIGRlc3Ryb3lpbmcgaXQuIE90aGVyd2lzZSwgdGhlIHBl
ci10aHJlYWQgb2JqZWN0cyBtYW5hZ2VkIGZvciB0aGVtIGJ5IHRoZQorLy8gVGhyZWFkTG9jYWwg
aW5zdGFuY2UgYXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlIGRlc3Ryb3llZCBvbiBhbGwgcGxhdGZv
cm1zLgorLy8KKy8vIEdvb2dsZSBUZXN0IG9ubHkgdXNlcyBnbG9iYWwgVGhyZWFkTG9jYWwgb2Jq
ZWN0cy4gIFRoYXQgbWVhbnMgdGhleQorLy8gd2lsbCBkaWUgYWZ0ZXIgbWFpbigpIGhhcyByZXR1
cm5lZC4gIFRoZXJlZm9yZSwgbm8gcGVyLXRocmVhZAorLy8gb2JqZWN0IG1hbmFnZWQgYnkgR29v
Z2xlIFRlc3Qgd2lsbCBiZSBsZWFrZWQgYXMgbG9uZyBhcyBhbGwgdGhyZWFkcworLy8gdXNpbmcg
R29vZ2xlIFRlc3QgaGF2ZSBleGl0ZWQgd2hlbiBtYWluKCkgcmV0dXJucy4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorY2xhc3MgVGhyZWFkTG9jYWwgOiBwdWJsaWMgVGhyZWFkTG9jYWxCYXNlIHsK
KyBwdWJsaWM6CisgIFRocmVhZExvY2FsKCkgOiBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0
VmFsdWVIb2xkZXJGYWN0b3J5KCkpIHt9CisgIGV4cGxpY2l0IFRocmVhZExvY2FsKGNvbnN0IFQm
IHZhbHVlKQorICAgICAgOiBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBJbnN0YW5jZVZhbHVlSG9sZGVy
RmFjdG9yeSh2YWx1ZSkpIHt9CisKKyAgflRocmVhZExvY2FsKCkgeyBUaHJlYWRMb2NhbFJlZ2lz
dHJ5OjpPblRocmVhZExvY2FsRGVzdHJveWVkKHRoaXMpOyB9CisKKyAgVCogcG9pbnRlcigpIHsg
cmV0dXJuIEdldE9yQ3JlYXRlVmFsdWUoKTsgfQorICBjb25zdCBUKiBwb2ludGVyKCkgY29uc3Qg
eyByZXR1cm4gR2V0T3JDcmVhdGVWYWx1ZSgpOyB9CisgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsg
cmV0dXJuICpwb2ludGVyKCk7IH0KKyAgdm9pZCBzZXQoY29uc3QgVCYgdmFsdWUpIHsgKnBvaW50
ZXIoKSA9IHZhbHVlOyB9CisKKyBwcml2YXRlOgorICAvLyBIb2xkcyBhIHZhbHVlIG9mIFQuICBD
YW4gYmUgZGVsZXRlZCB2aWEgaXRzIGJhc2UgY2xhc3Mgd2l0aG91dCB0aGUgY2FsbGVyCisgIC8v
IGtub3dpbmcgdGhlIHR5cGUgb2YgVC4KKyAgY2xhc3MgVmFsdWVIb2xkZXIgOiBwdWJsaWMgVGhy
ZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UgeworICAgcHVibGljOgorICAgIFZhbHVlSG9sZGVyKCkg
OiB2YWx1ZV8oKSB7fQorICAgIGV4cGxpY2l0IFZhbHVlSG9sZGVyKGNvbnN0IFQmIHZhbHVlKSA6
IHZhbHVlXyh2YWx1ZSkge30KKworICAgIFQqIHBvaW50ZXIoKSB7IHJldHVybiAmdmFsdWVfOyB9
CisKKyAgIHByaXZhdGU6CisgICAgVCB2YWx1ZV87CisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOXyhWYWx1ZUhvbGRlcik7CisgIH07CisKKworICBUKiBHZXRPckNyZWF0ZVZhbHVl
KCkgY29uc3QgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxWYWx1ZUhvbGRlcio+KAorICAgICAg
ICBUaHJlYWRMb2NhbFJlZ2lzdHJ5OjpHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCh0aGlzKSktPnBv
aW50ZXIoKTsKKyAgfQorCisgIHZpcnR1YWwgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UqIE5l
d1ZhbHVlRm9yQ3VycmVudFRocmVhZCgpIGNvbnN0IHsKKyAgICByZXR1cm4gZGVmYXVsdF9mYWN0
b3J5Xy0+TWFrZU5ld0hvbGRlcigpOworICB9CisKKyAgY2xhc3MgVmFsdWVIb2xkZXJGYWN0b3J5
IHsKKyAgIHB1YmxpYzoKKyAgICBWYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1YWwg
flZhbHVlSG9sZGVyRmFjdG9yeSgpIHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRlciogTWFrZU5l
d0hvbGRlcigpIGNvbnN0ID0gMDsKKworICAgcHJpdmF0ZToKKyAgICBHVEVTVF9ESVNBTExPV19D
T1BZX0FORF9BU1NJR05fKFZhbHVlSG9sZGVyRmFjdG9yeSk7CisgIH07CisKKyAgY2xhc3MgRGVm
YXVsdFZhbHVlSG9sZGVyRmFjdG9yeSA6IHB1YmxpYyBWYWx1ZUhvbGRlckZhY3RvcnkgeworICAg
cHVibGljOgorICAgIERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1YWwg
VmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCB7IHJldHVybiBuZXcgVmFsdWVIb2xk
ZXIoKTsgfQorCisgICBwcml2YXRlOgorICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oRGVmYXVsdFZhbHVlSG9sZGVyRmFjdG9yeSk7CisgIH07CisKKyAgY2xhc3MgSW5zdGFuY2VW
YWx1ZUhvbGRlckZhY3RvcnkgOiBwdWJsaWMgVmFsdWVIb2xkZXJGYWN0b3J5IHsKKyAgIHB1Ymxp
YzoKKyAgICBleHBsaWNpdCBJbnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeShjb25zdCBUJiB2YWx1
ZSkgOiB2YWx1ZV8odmFsdWUpIHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRlciogTWFrZU5ld0hv
bGRlcigpIGNvbnN0IHsKKyAgICAgIHJldHVybiBuZXcgVmFsdWVIb2xkZXIodmFsdWVfKTsKKyAg
ICB9CisKKyAgIHByaXZhdGU6CisgICAgY29uc3QgVCB2YWx1ZV87ICAvLyBUaGUgdmFsdWUgZm9y
IGVhY2ggdGhyZWFkLgorCisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhJbnN0
YW5jZVZhbHVlSG9sZGVyRmFjdG9yeSk7CisgIH07CisKKyAgc2NvcGVkX3B0cjxWYWx1ZUhvbGRl
ckZhY3Rvcnk+IGRlZmF1bHRfZmFjdG9yeV87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOXyhUaHJlYWRMb2NhbCk7Cit9OworCisjIGVsaWYgR1RFU1RfSEFTX1BUSFJFQUQKKwor
Ly8gTXV0ZXhCYXNlIGFuZCBNdXRleCBpbXBsZW1lbnQgbXV0ZXggb24gcHRocmVhZHMtYmFzZWQg
cGxhdGZvcm1zLgogY2xhc3MgTXV0ZXhCYXNlIHsKICBwdWJsaWM6CiAgIC8vIEFjcXVpcmVzIHRo
aXMgbXV0ZXguCiAgIHZvaWQgTG9jaygpIHsKICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNT
XyhwdGhyZWFkX211dGV4X2xvY2soJm11dGV4XykpOwogICAgIG93bmVyXyA9IHB0aHJlYWRfc2Vs
ZigpOworICAgIGhhc19vd25lcl8gPSB0cnVlOwogICB9CiAKICAgLy8gUmVsZWFzZXMgdGhpcyBt
dXRleC4KICAgdm9pZCBVbmxvY2soKSB7Ci0gICAgLy8gV2UgZG9uJ3QgcHJvdGVjdCB3cml0aW5n
IHRvIG93bmVyXyBoZXJlLCBhcyBpdCdzIHRoZSBjYWxsZXIncwotICAgIC8vIHJlc3BvbnNpYmls
aXR5IHRvIGVuc3VyZSB0aGF0IHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUKKyAgICAvLyBT
aW5jZSB0aGUgbG9jayBpcyBiZWluZyByZWxlYXNlZCB0aGUgb3duZXJfIGZpZWxkIHNob3VsZCBu
byBsb25nZXIgYmUKKyAgICAvLyBjb25zaWRlcmVkIHZhbGlkLiBXZSBkb24ndCBwcm90ZWN0IHdy
aXRpbmcgdG8gaGFzX293bmVyXyBoZXJlLCBhcyBpdCdzCisgICAgLy8gdGhlIGNhbGxlcidzIHJl
c3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGF0IHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUK
ICAgICAvLyBtdXRleCB3aGVuIHRoaXMgaXMgY2FsbGVkLgotICAgIG93bmVyXyA9IDA7CisgICAg
aGFzX293bmVyXyA9IGZhbHNlOwogICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJl
YWRfbXV0ZXhfdW5sb2NrKCZtdXRleF8pKTsKICAgfQogCiAgIC8vIERvZXMgbm90aGluZyBpZiB0
aGUgY3VycmVudCB0aHJlYWQgaG9sZHMgdGhlIG11dGV4LiBPdGhlcndpc2UsIGNyYXNoZXMKICAg
Ly8gd2l0aCBoaWdoIHByb2JhYmlsaXR5LgogICB2b2lkIEFzc2VydEhlbGQoKSBjb25zdCB7Ci0g
ICAgR1RFU1RfQ0hFQ0tfKG93bmVyXyA9PSBwdGhyZWFkX3NlbGYoKSkKKyAgICBHVEVTVF9DSEVD
S18oaGFzX293bmVyXyAmJiBwdGhyZWFkX2VxdWFsKG93bmVyXywgcHRocmVhZF9zZWxmKCkpKQog
ICAgICAgICA8PCAiVGhlIGN1cnJlbnQgdGhyZWFkIGlzIG5vdCBob2xkaW5nIHRoZSBtdXRleCBA
IiA8PCB0aGlzOwogICB9CiAKQEAgLTEwNDYsMTYgKzIwODcsMjggQEAgY2xhc3MgTXV0ZXhCYXNl
IHsKICAgLy8gaGF2ZSB0byBiZSBwdWJsaWMuCiAgcHVibGljOgogICBwdGhyZWFkX211dGV4X3Qg
bXV0ZXhfOyAgLy8gVGhlIHVuZGVybHlpbmcgcHRocmVhZCBtdXRleC4KLSAgcHRocmVhZF90IG93
bmVyXzsgIC8vIFRoZSB0aHJlYWQgaG9sZGluZyB0aGUgbXV0ZXg7IDAgbWVhbnMgbm8gb25lIGhv
bGRzIGl0LgorICAvLyBoYXNfb3duZXJfIGluZGljYXRlcyB3aGV0aGVyIHRoZSBvd25lcl8gZmll
bGQgYmVsb3cgY29udGFpbnMgYSB2YWxpZCB0aHJlYWQKKyAgLy8gSUQgYW5kIGlzIHRoZXJlZm9y
ZSBzYWZlIHRvIGluc3BlY3QgKGUuZy4sIHRvIHVzZSBpbiBwdGhyZWFkX2VxdWFsKCkpLiBBbGwK
KyAgLy8gYWNjZXNzZXMgdG8gdGhlIG93bmVyXyBmaWVsZCBzaG91bGQgYmUgcHJvdGVjdGVkIGJ5
IGEgY2hlY2sgb2YgdGhpcyBmaWVsZC4KKyAgLy8gQW4gYWx0ZXJuYXRpdmUgbWlnaHQgYmUgdG8g
bWVtc2V0KCkgb3duZXJfIHRvIGFsbCB6ZXJvcywgYnV0IHRoZXJlJ3Mgbm8KKyAgLy8gZ3VhcmFu
dGVlIHRoYXQgYSB6ZXJvJ2QgcHRocmVhZF90IGlzIG5lY2Vzc2FyaWx5IGludmFsaWQgb3IgZXZl
biBkaWZmZXJlbnQKKyAgLy8gZnJvbSBwdGhyZWFkX3NlbGYoKS4KKyAgYm9vbCBoYXNfb3duZXJf
OworICBwdGhyZWFkX3Qgb3duZXJfOyAgLy8gVGhlIHRocmVhZCBob2xkaW5nIHRoZSBtdXRleC4K
IH07CiAKIC8vIEZvcndhcmQtZGVjbGFyZXMgYSBzdGF0aWMgbXV0ZXguCi0jZGVmaW5lIEdURVNU
X0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRleCkgXAotICAgIGV4dGVybiA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpNdXRleEJhc2UgbXV0ZXgKKyMgIGRlZmluZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19N
VVRFWF8obXV0ZXgpIFwKKyAgICAgZXh0ZXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4QmFz
ZSBtdXRleAogCiAvLyBEZWZpbmVzIGFuZCBzdGF0aWNhbGx5IChpLmUuIGF0IGxpbmsgdGltZSkg
aW5pdGlhbGl6ZXMgYSBzdGF0aWMgbXV0ZXguCisvLyBUaGUgaW5pdGlhbGl6YXRpb24gbGlzdCBo
ZXJlIGRvZXMgbm90IGV4cGxpY2l0bHkgaW5pdGlhbGl6ZSBlYWNoIGZpZWxkLAorLy8gaW5zdGVh
ZCByZWx5aW5nIG9uIGRlZmF1bHQgaW5pdGlhbGl6YXRpb24gZm9yIHRoZSB1bnNwZWNpZmllZCBm
aWVsZHMuIEluCisvLyBwYXJ0aWN1bGFyLCB0aGUgb3duZXJfIGZpZWxkIChhIHB0aHJlYWRfdCkg
aXMgbm90IGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQuCisvLyBUaGlzIGFsbG93cyBpbml0aWFsaXph
dGlvbiB0byB3b3JrIHdoZXRoZXIgcHRocmVhZF90IGlzIGEgc2NhbGFyIG9yIHN0cnVjdC4KKy8v
IFRoZSBmbGFnIC1XbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMgbXVzdCBub3QgYmUgc3BlY2lm
aWVkIGZvciB0aGlzIHRvIHdvcmsuCiAjZGVmaW5lIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhf
KG11dGV4KSBcCi0gICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXhCYXNlIG11dGV4ID0geyBQ
VEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSLCAwIH0KKyAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0
ZXhCYXNlIG11dGV4ID0ge1BUSFJFQURfTVVURVhfSU5JVElBTElaRVIsIGZhbHNlLCAwfQogCiAv
LyBUaGUgTXV0ZXggY2xhc3MgY2FuIG9ubHkgYmUgdXNlZCBmb3IgbXV0ZXhlcyBjcmVhdGVkIGF0
IHJ1bnRpbWUuIEl0CiAvLyBzaGFyZXMgaXRzIEFQSSB3aXRoIE11dGV4QmFzZSBvdGhlcndpc2Uu
CkBAIC0xMDYzLDcgKzIxMTYsNyBAQCBjbGFzcyBNdXRleCA6IHB1YmxpYyBNdXRleEJhc2Ugewog
IHB1YmxpYzoKICAgTXV0ZXgoKSB7CiAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRo
cmVhZF9tdXRleF9pbml0KCZtdXRleF8sIE5VTEwpKTsKLSAgICBvd25lcl8gPSAwOworICAgIGhh
c19vd25lcl8gPSBmYWxzZTsKICAgfQogICB+TXV0ZXgoKSB7CiAgICAgR1RFU1RfQ0hFQ0tfUE9T
SVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9kZXN0cm95KCZtdXRleF8pKTsKQEAgLTEwNzMsOSAr
MjEyNiwxMSBAQCBjbGFzcyBNdXRleCA6IHB1YmxpYyBNdXRleEJhc2UgewogICBHVEVTVF9ESVNB
TExPV19DT1BZX0FORF9BU1NJR05fKE11dGV4KTsKIH07CiAKLS8vIFdlIGNhbm5vdCBuYW1lIHRo
aXMgY2xhc3MgTXV0ZXhMb2NrIGFzIHRoZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCisvLyBXZSBj
YW5ub3QgbmFtZSB0aGlzIGNsYXNzIE11dGV4TG9jayBiZWNhdXNlIHRoZSBjdG9yIGRlY2xhcmF0
aW9uIHdvdWxkCiAvLyBjb25mbGljdCB3aXRoIGEgbWFjcm8gbmFtZWQgTXV0ZXhMb2NrLCB3aGlj
aCBpcyBkZWZpbmVkIG9uIHNvbWUKLS8vIHBsYXRmb3Jtcy4gIEhlbmNlIHRoZSB0eXBlZGVmIHRy
aWNrIGJlbG93LgorLy8gcGxhdGZvcm1zLiBUaGF0IG1hY3JvIGlzIHVzZWQgYXMgYSBkZWZlbnNp
dmUgbWVhc3VyZSB0byBwcmV2ZW50IGFnYWluc3QKKy8vIGluYWR2ZXJ0ZW50IG1pc3VzZXMgb2Yg
TXV0ZXhMb2NrIGxpa2UgIk11dGV4TG9jaygmbXUpIiByYXRoZXIgdGhhbgorLy8gIk11dGV4TG9j
ayBsKCZtdSkiLiAgSGVuY2UgdGhlIHR5cGVkZWYgdHJpY2sgYmVsb3cuCiBjbGFzcyBHVGVzdE11
dGV4TG9jayB7CiAgcHVibGljOgogICBleHBsaWNpdCBHVGVzdE11dGV4TG9jayhNdXRleEJhc2Uq
IG11dGV4KQpAQCAtMTEwOSw0MSArMjE2NCwxNCBAQCBleHRlcm4gIkMiIGlubGluZSB2b2lkIERl
bGV0ZVRocmVhZExvY2FsVmFsdWUodm9pZCogdmFsdWVfaG9sZGVyKSB7CiB9CiAKIC8vIEltcGxl
bWVudHMgdGhyZWFkLWxvY2FsIHN0b3JhZ2Ugb24gcHRocmVhZHMtYmFzZWQgc3lzdGVtcy4KLS8v
Ci0vLyAgIC8vIFRocmVhZCAxCi0vLyAgIFRocmVhZExvY2FsPGludD4gdGwoMTAwKTsgIC8vIDEw
MCBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgZWFjaCB0aHJlYWQuCi0vLwotLy8gICAvLyBUaHJl
YWQgMgotLy8gICB0bC5zZXQoMTUwKTsgIC8vIENoYW5nZXMgdGhlIHZhbHVlIGZvciB0aHJlYWQg
MiBvbmx5LgotLy8gICBFWFBFQ1RfRVEoMTUwLCB0bC5nZXQoKSk7Ci0vLwotLy8gICAvLyBUaHJl
YWQgMQotLy8gICBFWFBFQ1RfRVEoMTAwLCB0bC5nZXQoKSk7ICAvLyBJbiB0aHJlYWQgMSwgdGwg
aGFzIHRoZSBvcmlnaW5hbCB2YWx1ZS4KLS8vICAgdGwuc2V0KDIwMCk7Ci0vLyAgIEVYUEVDVF9F
USgyMDAsIHRsLmdldCgpKTsKLS8vCi0vLyBUaGUgdGVtcGxhdGUgdHlwZSBhcmd1bWVudCBUIG11
c3QgaGF2ZSBhIHB1YmxpYyBjb3B5IGNvbnN0cnVjdG9yLgotLy8gSW4gYWRkaXRpb24sIHRoZSBk
ZWZhdWx0IFRocmVhZExvY2FsIGNvbnN0cnVjdG9yIHJlcXVpcmVzIFQgdG8gaGF2ZQotLy8gYSBw
dWJsaWMgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KLS8vCi0vLyBBbiBvYmplY3QgbWFuYWdlZCBmb3Ig
YSB0aHJlYWQgYnkgYSBUaHJlYWRMb2NhbCBpbnN0YW5jZSBpcyBkZWxldGVkCi0vLyB3aGVuIHRo
ZSB0aHJlYWQgZXhpdHMuICBPciwgaWYgdGhlIFRocmVhZExvY2FsIGluc3RhbmNlIGRpZXMgaW4K
LS8vIHRoYXQgdGhyZWFkLCB3aGVuIHRoZSBUaHJlYWRMb2NhbCBkaWVzLiAgSXQncyB0aGUgdXNl
cidzCi0vLyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCBhbGwgb3RoZXIgdGhyZWFkcyB1
c2luZyBhIFRocmVhZExvY2FsCi0vLyBoYXZlIGV4aXRlZCB3aGVuIGl0IGRpZXMsIG9yIHRoZSBw
ZXItdGhyZWFkIG9iamVjdHMgZm9yIHRob3NlCi0vLyB0aHJlYWRzIHdpbGwgbm90IGJlIGRlbGV0
ZWQuCi0vLwotLy8gR29vZ2xlIFRlc3Qgb25seSB1c2VzIGdsb2JhbCBUaHJlYWRMb2NhbCBvYmpl
Y3RzLiAgVGhhdCBtZWFucyB0aGV5Ci0vLyB3aWxsIGRpZSBhZnRlciBtYWluKCkgaGFzIHJldHVy
bmVkLiAgVGhlcmVmb3JlLCBubyBwZXItdGhyZWFkCi0vLyBvYmplY3QgbWFuYWdlZCBieSBHb29n
bGUgVGVzdCB3aWxsIGJlIGxlYWtlZCBhcyBsb25nIGFzIGFsbCB0aHJlYWRzCi0vLyB1c2luZyBH
b29nbGUgVGVzdCBoYXZlIGV4aXRlZCB3aGVuIG1haW4oKSByZXR1cm5zLgogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1jbGFzcyBUaHJlYWRMb2NhbCB7CitjbGFzcyBHVEVTVF9BUElfIFRocmVhZExv
Y2FsIHsKICBwdWJsaWM6Ci0gIFRocmVhZExvY2FsKCkgOiBrZXlfKENyZWF0ZUtleSgpKSwKLSAg
ICAgICAgICAgICAgICAgIGRlZmF1bHRfKCkge30KLSAgZXhwbGljaXQgVGhyZWFkTG9jYWwoY29u
c3QgVCYgdmFsdWUpIDoga2V5XyhDcmVhdGVLZXkoKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfKHZhbHVlKSB7fQorICBUaHJlYWRMb2NhbCgpCisg
ICAgICA6IGtleV8oQ3JlYXRlS2V5KCkpLCBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0VmFs
dWVIb2xkZXJGYWN0b3J5KCkpIHt9CisgIGV4cGxpY2l0IFRocmVhZExvY2FsKGNvbnN0IFQmIHZh
bHVlKQorICAgICAgOiBrZXlfKENyZWF0ZUtleSgpKSwKKyAgICAgICAgZGVmYXVsdF9mYWN0b3J5
XyhuZXcgSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkodmFsdWUpKSB7fQogCiAgIH5UaHJlYWRM
b2NhbCgpIHsKICAgICAvLyBEZXN0cm95cyB0aGUgbWFuYWdlZCBvYmplY3QgZm9yIHRoZSBjdXJy
ZW50IHRocmVhZCwgaWYgYW55LgpAQCAtMTE2Myw2ICsyMTkxLDcgQEAgY2xhc3MgVGhyZWFkTG9j
YWwgewogICAvLyBIb2xkcyBhIHZhbHVlIG9mIHR5cGUgVC4KICAgY2xhc3MgVmFsdWVIb2xkZXIg
OiBwdWJsaWMgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UgewogICAgcHVibGljOgorICAgIFZh
bHVlSG9sZGVyKCkgOiB2YWx1ZV8oKSB7fQogICAgIGV4cGxpY2l0IFZhbHVlSG9sZGVyKGNvbnN0
IFQmIHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KIAogICAgIFQqIHBvaW50ZXIoKSB7IHJldHVy
biAmdmFsdWVfOyB9CkBAIC0xMTg4LDIyICsyMjE3LDU0IEBAIGNsYXNzIFRocmVhZExvY2FsIHsK
ICAgICAgIHJldHVybiBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGU8VmFsdWVIb2xkZXI+KGhv
bGRlciktPnBvaW50ZXIoKTsKICAgICB9CiAKLSAgICBWYWx1ZUhvbGRlciogY29uc3QgbmV3X2hv
bGRlciA9IG5ldyBWYWx1ZUhvbGRlcihkZWZhdWx0Xyk7CisgICAgVmFsdWVIb2xkZXIqIGNvbnN0
IG5ld19ob2xkZXIgPSBkZWZhdWx0X2ZhY3RvcnlfLT5NYWtlTmV3SG9sZGVyKCk7CiAgICAgVGhy
ZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UqIGNvbnN0IGhvbGRlcl9iYXNlID0gbmV3X2hvbGRlcjsK
ICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX3NldHNwZWNpZmljKGtleV8s
IGhvbGRlcl9iYXNlKSk7CiAgICAgcmV0dXJuIG5ld19ob2xkZXItPnBvaW50ZXIoKTsKICAgfQog
CisgIGNsYXNzIFZhbHVlSG9sZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAgVmFsdWVIb2xk
ZXJGYWN0b3J5KCkge30KKyAgICB2aXJ0dWFsIH5WYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAg
IHZpcnR1YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCA9IDA7CisKKyAgIHBy
aXZhdGU6CisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhWYWx1ZUhvbGRlckZh
Y3RvcnkpOworICB9OworCisgIGNsYXNzIERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkgOiBwdWJs
aWMgVmFsdWVIb2xkZXJGYWN0b3J5IHsKKyAgIHB1YmxpYzoKKyAgICBEZWZhdWx0VmFsdWVIb2xk
ZXJGYWN0b3J5KCkge30KKyAgICB2aXJ0dWFsIFZhbHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkg
Y29uc3QgeyByZXR1cm4gbmV3IFZhbHVlSG9sZGVyKCk7IH0KKworICAgcHJpdmF0ZToKKyAgICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKERlZmF1bHRWYWx1ZUhvbGRlckZhY3Rvcnkp
OworICB9OworCisgIGNsYXNzIEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5IDogcHVibGljIFZh
bHVlSG9sZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAgZXhwbGljaXQgSW5zdGFuY2VWYWx1
ZUhvbGRlckZhY3RvcnkoY29uc3QgVCYgdmFsdWUpIDogdmFsdWVfKHZhbHVlKSB7fQorICAgIHZp
cnR1YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCB7CisgICAgICByZXR1cm4g
bmV3IFZhbHVlSG9sZGVyKHZhbHVlXyk7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGNvbnN0
IFQgdmFsdWVfOyAgLy8gVGhlIHZhbHVlIGZvciBlYWNoIHRocmVhZC4KKworICAgIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9
OworCiAgIC8vIEEga2V5IHB0aHJlYWRzIHVzZXMgZm9yIGxvb2tpbmcgdXAgcGVyLXRocmVhZCB2
YWx1ZXMuCiAgIGNvbnN0IHB0aHJlYWRfa2V5X3Qga2V5XzsKLSAgY29uc3QgVCBkZWZhdWx0Xzsg
IC8vIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBlYWNoIHRocmVhZC4KKyAgc2NvcGVkX3B0cjxWYWx1
ZUhvbGRlckZhY3Rvcnk+IGRlZmF1bHRfZmFjdG9yeV87CiAKICAgR1RFU1RfRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOXyhUaHJlYWRMb2NhbCk7CiB9OwogCi0jZGVmaW5lIEdURVNUX0lTX1RIUkVB
RFNBRkUgMQorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX01VVEVYX0FORF9USFJFQURfTE9DQUxfCiAK
LSNlbHNlICAvLyBHVEVTVF9IQVNfUFRIUkVBRAorI2Vsc2UgIC8vIEdURVNUX0lTX1RIUkVBRFNB
RkUKIAogLy8gQSBkdW1teSBpbXBsZW1lbnRhdGlvbiBvZiBzeW5jaHJvbml6YXRpb24gcHJpbWl0
aXZlcyAobXV0ZXgsIGxvY2ssCiAvLyBhbmQgdGhyZWFkLWxvY2FsIHZhcmlhYmxlKS4gIE5lY2Vz
c2FyeSBmb3IgY29tcGlsaW5nIEdvb2dsZSBUZXN0IHdoZXJlCkBAIC0xMjEzLDE0ICsyMjc0LDIx
IEBAIGNsYXNzIFRocmVhZExvY2FsIHsKIGNsYXNzIE11dGV4IHsKICBwdWJsaWM6CiAgIE11dGV4
KCkge30KKyAgdm9pZCBMb2NrKCkge30KKyAgdm9pZCBVbmxvY2soKSB7fQogICB2b2lkIEFzc2Vy
dEhlbGQoKSBjb25zdCB7fQogfTsKIAotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRF
WF8obXV0ZXgpIFwKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRleCkg
XAogICBleHRlcm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXggbXV0ZXgKIAotI2RlZmluZSBH
VEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhtdXRleCkgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0
ZXggbXV0ZXgKKyMgZGVmaW5lIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKG11dGV4KSA6OnRl
c3Rpbmc6OmludGVybmFsOjpNdXRleCBtdXRleAogCisvLyBXZSBjYW5ub3QgbmFtZSB0aGlzIGNs
YXNzIE11dGV4TG9jayBiZWNhdXNlIHRoZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCisvLyBjb25m
bGljdCB3aXRoIGEgbWFjcm8gbmFtZWQgTXV0ZXhMb2NrLCB3aGljaCBpcyBkZWZpbmVkIG9uIHNv
bWUKKy8vIHBsYXRmb3Jtcy4gVGhhdCBtYWNybyBpcyB1c2VkIGFzIGEgZGVmZW5zaXZlIG1lYXN1
cmUgdG8gcHJldmVudCBhZ2FpbnN0CisvLyBpbmFkdmVydGVudCBtaXN1c2VzIG9mIE11dGV4TG9j
ayBsaWtlICJNdXRleExvY2soJm11KSIgcmF0aGVyIHRoYW4KKy8vICJNdXRleExvY2sgbCgmbXUp
Ii4gIEhlbmNlIHRoZSB0eXBlZGVmIHRyaWNrIGJlbG93LgogY2xhc3MgR1Rlc3RNdXRleExvY2sg
ewogIHB1YmxpYzoKICAgZXhwbGljaXQgR1Rlc3RNdXRleExvY2soTXV0ZXgqKSB7fSAgLy8gTk9M
SU5UCkBAIC0xMjI5LDcgKzIyOTcsNyBAQCBjbGFzcyBHVGVzdE11dGV4TG9jayB7CiB0eXBlZGVm
IEdUZXN0TXV0ZXhMb2NrIE11dGV4TG9jazsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFz
cyBUaHJlYWRMb2NhbCB7CitjbGFzcyBHVEVTVF9BUElfIFRocmVhZExvY2FsIHsKICBwdWJsaWM6
CiAgIFRocmVhZExvY2FsKCkgOiB2YWx1ZV8oKSB7fQogICBleHBsaWNpdCBUaHJlYWRMb2NhbChj
b25zdCBUJiB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9CkBAIC0xMjQxLDI4ICsyMzA5LDI1IEBA
IGNsYXNzIFRocmVhZExvY2FsIHsKICAgVCB2YWx1ZV87CiB9OwogCi0vLyBUaGUgYWJvdmUgc3lu
Y2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaGF2ZSBkdW1teSBpbXBsZW1lbnRhdGlvbnMuCi0vLyBU
aGVyZWZvcmUgR29vZ2xlIFRlc3QgaXMgbm90IHRocmVhZC1zYWZlLgotI2RlZmluZSBHVEVTVF9J
U19USFJFQURTQUZFIDAKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVBRAorI2VuZGlmICAv
LyBHVEVTVF9JU19USFJFQURTQUZFCiAKIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiB0aHJlYWRz
IHJ1bm5pbmcgaW4gdGhlIHByb2Nlc3MsIG9yIDAgdG8gaW5kaWNhdGUgdGhhdAogLy8gd2UgY2Fu
bm90IGRldGVjdCBpdC4KIEdURVNUX0FQSV8gc2l6ZV90IEdldFRocmVhZENvdW50KCk7CiAKIC8v
IFBhc3Npbmcgbm9uLVBPRCBjbGFzc2VzIHRocm91Z2ggZWxsaXBzaXMgKC4uLikgY3Jhc2hlcyB0
aGUgQVJNCi0vLyBjb21waWxlciBhbmQgZ2VuZXJhdGVzIGEgd2FybmluZyBpbiBTdW4gU3R1ZGlv
LiAgVGhlIE5va2lhIFN5bWJpYW4KKy8vIGNvbXBpbGVyIGFuZCBnZW5lcmF0ZXMgYSB3YXJuaW5n
IGluIFN1biBTdHVkaW8gYmVmb3JlIDEydTQuIFRoZSBOb2tpYSBTeW1iaWFuCiAvLyBhbmQgdGhl
IElCTSBYTCBDL0MrKyBjb21waWxlciB0cnkgdG8gaW5zdGFudGlhdGUgYSBjb3B5IGNvbnN0cnVj
dG9yCiAvLyBmb3Igb2JqZWN0cyBwYXNzZWQgdGhyb3VnaCBlbGxpcHNpcyAoLi4uKSwgZmFpbGlu
ZyBmb3IgdW5jb3B5YWJsZQogLy8gb2JqZWN0cy4gIFdlIGRlZmluZSB0aGlzIHRvIGVuc3VyZSB0
aGF0IG9ubHkgUE9EIGlzIHBhc3NlZCB0aHJvdWdoCiAvLyBlbGxpcHNpcyBvbiB0aGVzZSBzeXN0
ZW1zLgotI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgfHwgZGVmaW5lZChfX0lCTUNQUF9fKSB8
fCBkZWZpbmVkKF9fU1VOUFJPX0NDKQorI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgfHwgZGVm
aW5lZChfX0lCTUNQUF9fKSB8fCBcCisgICAgIChkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiBfX1NV
TlBST19DQyA8IDB4NTEzMCkKIC8vIFdlIGxvc2Ugc3VwcG9ydCBmb3IgTlVMTCBkZXRlY3Rpb24g
d2hlcmUgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZQogLy8gcGFzc2luZyBub24tUE9EIGNsYXNz
ZXMgdGhyb3VnaCBlbGxpcHNpcyAoLi4uKS4KLSNkZWZpbmUgR1RFU1RfRUxMSVBTSVNfTkVFRFNf
UE9EXyAxCisjIGRlZmluZSBHVEVTVF9FTExJUFNJU19ORUVEU19QT0RfIDEKICNlbHNlCi0jZGVm
aW5lIEdURVNUX0NBTl9DT01QQVJFX05VTEwgMQorIyBkZWZpbmUgR1RFU1RfQ0FOX0NPTVBBUkVf
TlVMTCAxCiAjZW5kaWYKIAogLy8gVGhlIE5va2lhIFN5bWJpYW4gYW5kIElCTSBYTCBDL0MrKyBj
b21waWxlcnMgY2Fubm90IGRlY2lkZSBiZXR3ZWVuCkBAIC0xMjcwLDcgKzIzMzUsNyBAQCBHVEVT
VF9BUElfIHNpemVfdCBHZXRUaHJlYWRDb3VudCgpOwogLy8gX2Nhbl8gZGVjaWRlIGJldHdlZW4g
Y2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIGZvciBUIGFuZCBUKiwKIC8vIHNvIGEgdHIx
Ojp0eXBlX3RyYWl0cy1saWtlIGlzX3BvaW50ZXIgd29ya3MuCiAjaWYgZGVmaW5lZChfX1NZTUJJ
QU4zMl9fKSB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pCi0jZGVmaW5lIEdURVNUX05FRURTX0lTX1BP
SU5URVJfIDEKKyMgZGVmaW5lIEdURVNUX05FRURTX0lTX1BPSU5URVJfIDEKICNlbmRpZgogCiB0
ZW1wbGF0ZSA8Ym9vbCBib29sX3ZhbHVlPgpAQCAtMTI4MywyMyArMjM0OCw5MyBAQCB0ZW1wbGF0
ZSA8Ym9vbCBib29sX3ZhbHVlPiBjb25zdCBib29sIGJvb2xfY29uc3RhbnQ8Ym9vbF92YWx1ZT46
OnZhbHVlOwogdHlwZWRlZiBib29sX2NvbnN0YW50PGZhbHNlPiBmYWxzZV90eXBlOwogdHlwZWRl
ZiBib29sX2NvbnN0YW50PHRydWU+IHRydWVfdHlwZTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+CitzdHJ1Y3QgaXNfc2FtZSA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc19zYW1lPFQsIFQ+IDogcHVibGljIHRydWVf
dHlwZSB7fTsKKworCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0cnVjdCBpc19wb2ludGVyIDog
cHVibGljIGZhbHNlX3R5cGUge307CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RydWN0IGlz
X3BvaW50ZXI8VCo+IDogcHVibGljIHRydWVfdHlwZSB7fTsKIAordGVtcGxhdGUgPHR5cGVuYW1l
IEl0ZXJhdG9yPgorc3RydWN0IEl0ZXJhdG9yVHJhaXRzIHsKKyAgdHlwZWRlZiB0eXBlbmFtZSBJ
dGVyYXRvcjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOworfTsKKworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK3N0cnVjdCBJdGVyYXRvclRyYWl0czxUKj4geworICB0eXBlZGVmIFQgdmFsdWVfdHlw
ZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEl0ZXJhdG9yVHJhaXRzPGNv
bnN0IFQqPiB7CisgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOworfTsKKwogI2lmIEdURVNUX09TX1dJ
TkRPV1MKLSNkZWZpbmUgR1RFU1RfUEFUSF9TRVBfICJcXCIKLSNkZWZpbmUgR1RFU1RfSEFTX0FM
VF9QQVRIX1NFUF8gMQorIyBkZWZpbmUgR1RFU1RfUEFUSF9TRVBfICJcXCIKKyMgZGVmaW5lIEdU
RVNUX0hBU19BTFRfUEFUSF9TRVBfIDEKIC8vIFRoZSBiaWdnZXN0IHNpZ25lZCBpbnRlZ2VyIHR5
cGUgdGhlIGNvbXBpbGVyIHN1cHBvcnRzLgogdHlwZWRlZiBfX2ludDY0IEJpZ2dlc3RJbnQ7CiAj
ZWxzZQotI2RlZmluZSBHVEVTVF9QQVRIX1NFUF8gIi8iCi0jZGVmaW5lIEdURVNUX0hBU19BTFRf
UEFUSF9TRVBfIDAKKyMgZGVmaW5lIEdURVNUX1BBVEhfU0VQXyAiLyIKKyMgZGVmaW5lIEdURVNU
X0hBU19BTFRfUEFUSF9TRVBfIDAKIHR5cGVkZWYgbG9uZyBsb25nIEJpZ2dlc3RJbnQ7ICAvLyBO
T0xJTlQKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCisvLyBVdGlsaXRpZXMgZm9yIGNo
YXIuCisKKy8vIGlzc3BhY2UoaW50IGNoKSBhbmQgZnJpZW5kcyBhY2NlcHQgYW4gdW5zaWduZWQg
Y2hhciBvciBFT0YuICBjaGFyCisvLyBtYXkgYmUgc2lnbmVkLCBkZXBlbmRpbmcgb24gdGhlIGNv
bXBpbGVyIChvciBjb21waWxlciBmbGFncykuCisvLyBUaGVyZWZvcmUgd2UgbmVlZCB0byBjYXN0
IGEgY2hhciB0byB1bnNpZ25lZCBjaGFyIGJlZm9yZSBjYWxsaW5nCisvLyBpc3NwYWNlKCksIGV0
Yy4KKworaW5saW5lIGJvb2wgSXNBbHBoYShjaGFyIGNoKSB7CisgIHJldHVybiBpc2FscGhhKHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKK30KK2lubGluZSBib29sIElzQWxO
dW0oY2hhciBjaCkgeworICByZXR1cm4gaXNhbG51bShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PihjaCkpICE9IDA7Cit9CitpbmxpbmUgYm9vbCBJc0RpZ2l0KGNoYXIgY2gpIHsKKyAgcmV0dXJu
IGlzZGlnaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOworfQoraW5saW5l
IGJvb2wgSXNMb3dlcihjaGFyIGNoKSB7CisgIHJldHVybiBpc2xvd2VyKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKK30KK2lubGluZSBib29sIElzU3BhY2UoY2hhciBjaCkg
eworICByZXR1cm4gaXNzcGFjZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpICE9IDA7
Cit9CitpbmxpbmUgYm9vbCBJc1VwcGVyKGNoYXIgY2gpIHsKKyAgcmV0dXJuIGlzdXBwZXIoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNYRGln
aXQoY2hhciBjaCkgeworICByZXR1cm4gaXN4ZGlnaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cj4oY2gpKSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNYRGlnaXQod2NoYXJfdCBjaCkgeworICBj
b25zdCB1bnNpZ25lZCBjaGFyIGxvd19ieXRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
Y2gpOworICByZXR1cm4gY2ggPT0gbG93X2J5dGUgJiYgaXN4ZGlnaXQobG93X2J5dGUpICE9IDA7
Cit9CisKK2lubGluZSBjaGFyIFRvTG93ZXIoY2hhciBjaCkgeworICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y2hhcj4odG9sb3dlcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpKTsKK30KK2lu
bGluZSBjaGFyIFRvVXBwZXIoY2hhciBjaCkgeworICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcj4o
dG91cHBlcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpKTsKK30KKworaW5saW5lIHN0
ZDo6c3RyaW5nIFN0cmlwVHJhaWxpbmdTcGFjZXMoc3RkOjpzdHJpbmcgc3RyKSB7CisgIHN0ZDo6
c3RyaW5nOjppdGVyYXRvciBpdCA9IHN0ci5lbmQoKTsKKyAgd2hpbGUgKGl0ICE9IHN0ci5iZWdp
bigpICYmIElzU3BhY2UoKi0taXQpKQorICAgIGl0ID0gc3RyLmVyYXNlKGl0KTsKKyAgcmV0dXJu
IHN0cjsKK30KKwogLy8gVGhlIHRlc3Rpbmc6OmludGVybmFsOjpwb3NpeCBuYW1lc3BhY2UgaG9s
ZHMgd3JhcHBlcnMgZm9yIGNvbW1vbgogLy8gUE9TSVggZnVuY3Rpb25zLiAgVGhlc2Ugd3JhcHBl
cnMgaGlkZSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbgogLy8gV2luZG93cy9NU1ZDIGFuZCBQT1NJ
WCBzeXN0ZW1zLiAgU2luY2Ugc29tZSBjb21waWxlcnMgZGVmaW5lIHRoZXNlCkBAIC0xMzE0LDM2
ICsyNDQ5LDM2IEBAIG5hbWVzcGFjZSBwb3NpeCB7CiAKIHR5cGVkZWYgc3RydWN0IF9zdGF0IFN0
YXRTdHJ1Y3Q7CiAKLSNpZmRlZiBfX0JPUkxBTkRDX18KKyMgaWZkZWYgX19CT1JMQU5EQ19fCiBp
bmxpbmUgaW50IElzQVRUWShpbnQgZmQpIHsgcmV0dXJuIGlzYXR0eShmZCk7IH0KIGlubGluZSBp
bnQgU3RyQ2FzZUNtcChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIpIHsKICAgcmV0dXJu
IHN0cmljbXAoczEsIHMyKTsKIH0KIGlubGluZSBjaGFyKiBTdHJEdXAoY29uc3QgY2hhciogc3Jj
KSB7IHJldHVybiBzdHJkdXAoc3JjKTsgfQotI2Vsc2UgIC8vICFfX0JPUkxBTkRDX18KLSNpZiBH
VEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBlbHNlICAvLyAhX19CT1JMQU5EQ19fCisjICBpZiBH
VEVTVF9PU19XSU5ET1dTX01PQklMRQogaW5saW5lIGludCBJc0FUVFkoaW50IC8qIGZkICovKSB7
IHJldHVybiAwOyB9Ci0jZWxzZQorIyAgZWxzZQogaW5saW5lIGludCBJc0FUVFkoaW50IGZkKSB7
IHJldHVybiBfaXNhdHR5KGZkKTsgfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklM
RQorIyAgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiBpbmxpbmUgaW50IFN0ckNh
c2VDbXAoY29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyKSB7CiAgIHJldHVybiBfc3RyaWNt
cChzMSwgczIpOwogfQogaW5saW5lIGNoYXIqIFN0ckR1cChjb25zdCBjaGFyKiBzcmMpIHsgcmV0
dXJuIF9zdHJkdXAoc3JjKTsgfQotI2VuZGlmICAvLyBfX0JPUkxBTkRDX18KKyMgZW5kaWYgIC8v
IF9fQk9STEFORENfXwogCi0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaWYgR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKIGlubGluZSBpbnQgRmlsZU5vKEZJTEUqIGZpbGUpIHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50PihfZmlsZW5vKGZpbGUpKTsgfQogLy8gU3RhdCgpLCBSbURp
cigpLCBhbmQgSXNEaXIoKSBhcmUgbm90IG5lZWRlZCBvbiBXaW5kb3dzIENFIGF0IHRoaXMKIC8v
IHRpbWUgYW5kIHRodXMgbm90IGRlZmluZWQgdGhlcmUuCi0jZWxzZQorIyBlbHNlCiBpbmxpbmUg
aW50IEZpbGVObyhGSUxFKiBmaWxlKSB7IHJldHVybiBfZmlsZW5vKGZpbGUpOyB9CiBpbmxpbmUg
aW50IFN0YXQoY29uc3QgY2hhciogcGF0aCwgU3RhdFN0cnVjdCogYnVmKSB7IHJldHVybiBfc3Rh
dChwYXRoLCBidWYpOyB9CiBpbmxpbmUgaW50IFJtRGlyKGNvbnN0IGNoYXIqIGRpcikgeyByZXR1
cm4gX3JtZGlyKGRpcik7IH0KIGlubGluZSBib29sIElzRGlyKGNvbnN0IFN0YXRTdHJ1Y3QmIHN0
KSB7CiAgIHJldHVybiAoX1NfSUZESVIgJiBzdC5zdF9tb2RlKSAhPSAwOwogfQotI2VuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKIAogI2Vsc2UKIApAQCAtMTM2MywxMSArMjQ5OCw3IEBAIGlubGluZSBib29sIElzRGly
KGNvbnN0IFN0YXRTdHJ1Y3QmIHN0KSB7IHJldHVybiBTX0lTRElSKHN0LnN0X21vZGUpOyB9CiAK
IC8vIEZ1bmN0aW9ucyBkZXByZWNhdGVkIGJ5IE1TVkMgOC4wLgogCi0jaWZkZWYgX01TQ19WRVIK
LS8vIFRlbXBvcmFyaWx5IGRpc2FibGUgd2FybmluZyA0OTk2IChkZXByZWNhdGVkIGZ1bmN0aW9u
KS4KLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDk5NikK
LSNlbmRpZgorR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRFRF9QVVNIXygpCiAKIGlubGluZSBj
b25zdCBjaGFyKiBTdHJOQ3B5KGNoYXIqIGRlc3QsIGNvbnN0IGNoYXIqIHNyYywgc2l6ZV90IG4p
IHsKICAgcmV0dXJuIHN0cm5jcHkoZGVzdCwgc3JjLCBuKTsKQEAgLTEzNzcsNyArMjUwOCw3IEBA
IGlubGluZSBjb25zdCBjaGFyKiBTdHJOQ3B5KGNoYXIqIGRlc3QsIGNvbnN0IGNoYXIqIHNyYywg
c2l6ZV90IG4pIHsKIC8vIFN0ckVycm9yKCkgYXJlbid0IG5lZWRlZCBvbiBXaW5kb3dzIENFIGF0
IHRoaXMgdGltZSBhbmQgdGh1cyBub3QKIC8vIGRlZmluZWQgdGhlcmUuCiAKLSNpZiAhR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKKyNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNU
X09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQKIGlubGluZSBpbnQgQ2hE
aXIoY29uc3QgY2hhciogZGlyKSB7IHJldHVybiBjaGRpcihkaXIpOyB9CiAjZW5kaWYKIGlubGlu
ZSBGSUxFKiBGT3Blbihjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyKiBtb2RlKSB7CkBAIC0x
NDAxLDggKzI1MzIsOSBAQCBpbmxpbmUgaW50IENsb3NlKGludCBmZCkgeyByZXR1cm4gY2xvc2Uo
ZmQpOyB9CiBpbmxpbmUgY29uc3QgY2hhciogU3RyRXJyb3IoaW50IGVycm51bSkgeyByZXR1cm4g
c3RyZXJyb3IoZXJybnVtKTsgfQogI2VuZGlmCiBpbmxpbmUgY29uc3QgY2hhciogR2V0RW52KGNv
bnN0IGNoYXIqIG5hbWUpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorI2lmIEdURVNU
X09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNUX09TX1dJTkRPV1NfUEhPTkUgfHwgR1RFU1RfT1Nf
V0lORE9XU19SVAogICAvLyBXZSBhcmUgb24gV2luZG93cyBDRSwgd2hpY2ggaGFzIG5vIGVudmly
b25tZW50IHZhcmlhYmxlcy4KKyAgc3RhdGljX2Nhc3Q8dm9pZD4obmFtZSk7ICAvLyBUbyBwcmV2
ZW50ICd1bnVzZWQgYXJndW1lbnQnIHdhcm5pbmcuCiAgIHJldHVybiBOVUxMOwogI2VsaWYgZGVm
aW5lZChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQoX19TdW5PU181XzgpIHx8IGRlZmluZWQoX19T
dW5PU181XzkpCiAgIC8vIEVudmlyb25tZW50IHZhcmlhYmxlcyB3aGljaCB3ZSBwcm9ncmFtbWF0
aWNhbGx5IGNsZWFyIHdpbGwgYmUgc2V0IHRvIHRoZQpAQCAtMTQxNCw5ICsyNTQ2LDcgQEAgaW5s
aW5lIGNvbnN0IGNoYXIqIEdldEVudihjb25zdCBjaGFyKiBuYW1lKSB7CiAjZW5kaWYKIH0KIAot
I2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmcocG9wKSAgLy8gUmVzdG9yZXMgdGhlIHdh
cm5pbmcgc3RhdGUuCi0jZW5kaWYKK0dURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUE9QXygp
CiAKICNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogLy8gV2luZG93cyBDRSBoYXMgbm8gQyBs
aWJyYXJ5LiBUaGUgYWJvcnQoKSBmdW5jdGlvbiBpcyB1c2VkIGluCkBAIC0xNDI5LDYgKzI1NTks
MjMgQEAgaW5saW5lIHZvaWQgQWJvcnQoKSB7IGFib3J0KCk7IH0KIAogfSAgLy8gbmFtZXNwYWNl
IHBvc2l4CiAKKy8vIE1TVkMgImRlcHJlY2F0ZXMiIHNucHJpbnRmIGFuZCBpc3N1ZXMgd2Fybmlu
Z3Mgd2hlcmV2ZXIgaXQgaXMgdXNlZC4gIEluCisvLyBvcmRlciB0byBhdm9pZCB0aGVzZSB3YXJu
aW5ncywgd2UgbmVlZCB0byB1c2UgX3NucHJpbnRmIG9yIF9zbnByaW50Zl9zIG9uCisvLyBNU1ZD
LWJhc2VkIHBsYXRmb3Jtcy4gIFdlIG1hcCB0aGUgR1RFU1RfU05QUklOVEZfIG1hY3JvIHRvIHRo
ZSBhcHByb3ByaWF0ZQorLy8gZnVuY3Rpb24gaW4gb3JkZXIgdG8gYWNoaWV2ZSB0aGF0LiAgV2Ug
dXNlIG1hY3JvIGRlZmluaXRpb24gaGVyZSBiZWNhdXNlCisvLyBzbnByaW50ZiBpcyBhIHZhcmlh
ZGljIGZ1bmN0aW9uLgorI2lmIF9NU0NfVkVSID49IDE0MDAgJiYgIUdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFCisvLyBNU1ZDIDIwMDUgYW5kIGFib3ZlIHN1cHBvcnQgdmFyaWFkaWMgbWFjcm9zLgor
IyBkZWZpbmUgR1RFU1RfU05QUklOVEZfKGJ1ZmZlciwgc2l6ZSwgZm9ybWF0LCAuLi4pIFwKKyAg
ICAgX3NucHJpbnRmX3MoYnVmZmVyLCBzaXplLCBzaXplLCBmb3JtYXQsIF9fVkFfQVJHU19fKQor
I2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKy8vIFdpbmRvd3MgQ0UgZG9lcyBub3QgZGVmaW5lIF9z
bnByaW50Zl9zIGFuZCBNU1ZDIHByaW9yIHRvIDIwMDUgZG9lc24ndAorLy8gY29tcGxhaW4gYWJv
dXQgX3NucHJpbnRmLgorIyBkZWZpbmUgR1RFU1RfU05QUklOVEZfIF9zbnByaW50ZgorI2Vsc2UK
KyMgZGVmaW5lIEdURVNUX1NOUFJJTlRGXyBzbnByaW50ZgorI2VuZGlmCisKIC8vIFRoZSBtYXhp
bXVtIG51bWJlciBhIEJpZ2dlc3RJbnQgY2FuIHJlcHJlc2VudC4gIFRoaXMgZGVmaW5pdGlvbgog
Ly8gd29ya3Mgbm8gbWF0dGVyIEJpZ2dlc3RJbnQgaXMgcmVwcmVzZW50ZWQgaW4gb25lJ3MgY29t
cGxlbWVudCBvcgogLy8gdHdvJ3MgY29tcGxlbWVudC4KQEAgLTE1MDAsMjcgKzI2NDcsNDQgQEAg
dHlwZWRlZiBUeXBlV2l0aFNpemU8OD46OkludCBUaW1lSW5NaWxsaXM7ICAvLyBSZXByZXNlbnRz
IHRpbWUgaW4gbWlsbGlzZWNvbmRzLgogLy8gVXRpbGl0aWVzIGZvciBjb21tYW5kIGxpbmUgZmxh
Z3MgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlcy4KIAogLy8gTWFjcm8gZm9yIHJlZmVyZW5jaW5n
IGZsYWdzLgotI2RlZmluZSBHVEVTVF9GTEFHKG5hbWUpIEZMQUdTX2d0ZXN0XyMjbmFtZQorI2lm
ICFkZWZpbmVkKEdURVNUX0ZMQUcpCisjIGRlZmluZSBHVEVTVF9GTEFHKG5hbWUpIEZMQUdTX2d0
ZXN0XyMjbmFtZQorI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9GTEFHKQorCisjaWYgIWRlZmlu
ZWQoR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXykKKyMgZGVmaW5lIEdURVNUX1VTRV9PV05f
RkxBR0ZJTEVfRkxBR18gMQorI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9VU0VfT1dOX0ZMQUdG
SUxFX0ZMQUdfKQorCisjaWYgIWRlZmluZWQoR1RFU1RfREVDTEFSRV9ib29sXykKKyMgZGVmaW5l
IEdURVNUX0ZMQUdfU0FWRVJfIDo6dGVzdGluZzo6aW50ZXJuYWw6OkdUZXN0RmxhZ1NhdmVyCiAK
IC8vIE1hY3JvcyBmb3IgZGVjbGFyaW5nIGZsYWdzLgotI2RlZmluZSBHVEVTVF9ERUNMQVJFX2Jv
b2xfKG5hbWUpIEdURVNUX0FQSV8gZXh0ZXJuIGJvb2wgR1RFU1RfRkxBRyhuYW1lKQotI2RlZmlu
ZSBHVEVTVF9ERUNMQVJFX2ludDMyXyhuYW1lKSBcCisjIGRlZmluZSBHVEVTVF9ERUNMQVJFX2Jv
b2xfKG5hbWUpIEdURVNUX0FQSV8gZXh0ZXJuIGJvb2wgR1RFU1RfRkxBRyhuYW1lKQorIyBkZWZp
bmUgR1RFU1RfREVDTEFSRV9pbnQzMl8obmFtZSkgXAogICAgIEdURVNUX0FQSV8gZXh0ZXJuIDo6
dGVzdGluZzo6aW50ZXJuYWw6OkludDMyIEdURVNUX0ZMQUcobmFtZSkKLSNkZWZpbmUgR1RFU1Rf
REVDTEFSRV9zdHJpbmdfKG5hbWUpIFwKLSAgICBHVEVTVF9BUElfIGV4dGVybiA6OnRlc3Rpbmc6
OmludGVybmFsOjpTdHJpbmcgR1RFU1RfRkxBRyhuYW1lKQorIyBkZWZpbmUgR1RFU1RfREVDTEFS
RV9zdHJpbmdfKG5hbWUpIFwKKyAgICBHVEVTVF9BUElfIGV4dGVybiA6OnN0ZDo6c3RyaW5nIEdU
RVNUX0ZMQUcobmFtZSkKIAogLy8gTWFjcm9zIGZvciBkZWZpbmluZyBmbGFncy4KLSNkZWZpbmUg
R1RFU1RfREVGSU5FX2Jvb2xfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpIFwKKyMgZGVmaW5lIEdU
RVNUX0RFRklORV9ib29sXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCiAgICAgR1RFU1RfQVBJ
XyBib29sIEdURVNUX0ZMQUcobmFtZSkgPSAoZGVmYXVsdF92YWwpCi0jZGVmaW5lIEdURVNUX0RF
RklORV9pbnQzMl8obmFtZSwgZGVmYXVsdF92YWwsIGRvYykgXAorIyBkZWZpbmUgR1RFU1RfREVG
SU5FX2ludDMyXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCiAgICAgR1RFU1RfQVBJXyA6OnRl
c3Rpbmc6OmludGVybmFsOjpJbnQzMiBHVEVTVF9GTEFHKG5hbWUpID0gKGRlZmF1bHRfdmFsKQot
I2RlZmluZSBHVEVTVF9ERUZJTkVfc3RyaW5nXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCi0g
ICAgR1RFU1RfQVBJXyA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmcgR1RFU1RfRkxBRyhuYW1l
KSA9IChkZWZhdWx0X3ZhbCkKKyMgZGVmaW5lIEdURVNUX0RFRklORV9zdHJpbmdfKG5hbWUsIGRl
ZmF1bHRfdmFsLCBkb2MpIFwKKyAgICBHVEVTVF9BUElfIDo6c3RkOjpzdHJpbmcgR1RFU1RfRkxB
RyhuYW1lKSA9IChkZWZhdWx0X3ZhbCkKKworI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9ERUNM
QVJFX2Jvb2xfKQorCisvLyBUaHJlYWQgYW5ub3RhdGlvbnMKKyNpZiAhZGVmaW5lZChHVEVTVF9F
WENMVVNJVkVfTE9DS19SRVFVSVJFRF8pCisjIGRlZmluZSBHVEVTVF9FWENMVVNJVkVfTE9DS19S
RVFVSVJFRF8obG9ja3MpCisjIGRlZmluZSBHVEVTVF9MT0NLX0VYQ0xVREVEXyhsb2NrcykKKyNl
bmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKQogCiAvLyBQ
YXJzZXMgJ3N0cicgZm9yIGEgMzItYml0IHNpZ25lZCBpbnRlZ2VyLiAgSWYgc3VjY2Vzc2Z1bCwg
d3JpdGVzIHRoZSByZXN1bHQKIC8vIHRvICp2YWx1ZSBhbmQgcmV0dXJucyB0cnVlOyBvdGhlcndp
c2UgbGVhdmVzICp2YWx1ZSB1bmNoYW5nZWQgYW5kIHJldHVybnMKIC8vIGZhbHNlLgotLy8gVE9E
TyhjaGFuZGxlcmMpOiBGaW5kIGEgYmV0dGVyIHdheSB0byByZWZhY3RvciBmbGFnIGFuZCBlbnZp
cm9ubWVudCBwYXJzaW5nCisvLyBGSVhNRTogRmluZCBhIGJldHRlciB3YXkgdG8gcmVmYWN0b3Ig
ZmxhZyBhbmQgZW52aXJvbm1lbnQgcGFyc2luZwogLy8gb3V0IG9mIGJvdGggZ3Rlc3QtcG9ydC5j
YyBhbmQgZ3Rlc3QuY2MgdG8gYXZvaWQgZXhwb3J0aW5nIHRoaXMgdXRpbGl0eQogLy8gZnVuY3Rp
b24uCiBib29sIFBhcnNlSW50MzIoY29uc3QgTWVzc2FnZSYgc3JjX3RleHQsIGNvbnN0IGNoYXIq
IHN0ciwgSW50MzIqIHZhbHVlKTsKQEAgLTE1MjksNiArMjY5Myw3IEBAIGJvb2wgUGFyc2VJbnQz
Mihjb25zdCBNZXNzYWdlJiBzcmNfdGV4dCwgY29uc3QgY2hhciogc3RyLCBJbnQzMiogdmFsdWUp
OwogLy8gY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gR29vZ2xlIFRlc3QgZmxhZy4KIGJvb2wg
Qm9vbEZyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBib29sIGRlZmF1bHRfdmFsKTsKIEdU
RVNUX0FQSV8gSW50MzIgSW50MzJGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywgSW50MzIg
ZGVmYXVsdF92YWwpOworc3RkOjpzdHJpbmcgT3V0cHV0RmxhZ0Fsc29DaGVja0VudlZhcigpOwog
Y29uc3QgY2hhciogU3RyaW5nRnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIGNvbnN0IGNo
YXIqIGRlZmF1bHRfdmFsKTsKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXN0
cmluZy5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9n
dGVzdC1zdHJpbmcuaAppbmRleCBhZmYwOTNkZWM4ZGIzOTkwNzRlYTNiNzFiYjcyMjdkYTdlOTY3
MzBhLi40YzliNjI2MmMzYzEwMzcyNmFhM2NhYjRjMTk5OTViYWVmOTU4Yjk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXN0
cmluZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3Qtc3RyaW5nLmgKQEAgLTI3LDcwICsyNywzOCBAQAogLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogLy8KLS8vIEF1dGhvcnM6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBX
YW4pLCBlZWZhY21AZ21haWwuY29tIChTZWFuIE1jYWZlZSkKLS8vCi0vLyBUaGUgR29vZ2xlIEMr
KyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0
aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBoZWFk
ZXIgZmlsZSBkZWNsYXJlcyB0aGUgU3RyaW5nIGNsYXNzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRl
cm5hbGx5IGJ5CiAvLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdp
dGhvdXQgbm90aWNlLiBUaGV5IHNob3VsZCBub3QgdXNlZAogLy8gYnkgY29kZSBleHRlcm5hbCB0
byBHb29nbGUgVGVzdC4KIC8vCi0vLyBUaGlzIGhlYWRlciBmaWxlIGlzICNpbmNsdWRlZCBieSA8
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4uCisvLyBUaGlzIGhlYWRlciBmaWxlIGlz
ICNpbmNsdWRlZCBieSBndGVzdC1pbnRlcm5hbC5oLgogLy8gSXQgc2hvdWxkIG5vdCBiZSAjaW5j
bHVkZWQgYnkgb3RoZXIgZmlsZXMuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxF
VEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1NUUklOR19I
XwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1NUUklOR19IXwog
CiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBzdHJpbmcuaCBpcyBub3QgZ3VhcmFudGVlZCB0byBw
cm92aWRlIHN0cmNweSBvbiBDKysgQnVpbGRlci4KLSNpbmNsdWRlIDxtZW0uaD4KKyMgaW5jbHVk
ZSA8bWVtLmg+CiAjZW5kaWYKIAogI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPGd0ZXN0
L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLQogI2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUg
Imd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKwogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFt
ZXNwYWNlIGludGVybmFsIHsKIAotLy8gU3RyaW5nIC0gYSBVVEYtOCBzdHJpbmcgY2xhc3MuCi0v
LwotLy8gRm9yIGhpc3RvcmljIHJlYXNvbnMsIHdlIGRvbid0IHVzZSBzdGQ6OnN0cmluZy4KLS8v
Ci0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogcmVwbGFjZSB0aGlzIGNsYXNzIHdpdGggc3RkOjpz
dHJpbmcgb3IKLS8vIGltcGxlbWVudCBpdCBpbiB0ZXJtcyBvZiB0aGUgbGF0dGVyLgotLy8KLS8v
IE5vdGUgdGhhdCBTdHJpbmcgY2FuIHJlcHJlc2VudCBib3RoIE5VTEwgYW5kIHRoZSBlbXB0eSBz
dHJpbmcsCi0vLyB3aGlsZSBzdGQ6OnN0cmluZyBjYW5ub3QgcmVwcmVzZW50IE5VTEwuCi0vLwot
Ly8gTlVMTCBhbmQgdGhlIGVtcHR5IHN0cmluZyBhcmUgY29uc2lkZXJlZCBkaWZmZXJlbnQuICBO
VUxMIGlzIGxlc3MKLS8vIHRoYW4gYW55dGhpbmcgKGluY2x1ZGluZyB0aGUgZW1wdHkgc3RyaW5n
KSBleGNlcHQgaXRzZWxmLgotLy8KLS8vIFRoaXMgY2xhc3Mgb25seSBwcm92aWRlcyBtaW5pbXVt
IGZ1bmN0aW9uYWxpdHkgbmVjZXNzYXJ5IGZvcgotLy8gaW1wbGVtZW50aW5nIEdvb2dsZSBUZXN0
LiAgV2UgZG8gbm90IGludGVuZCB0byBpbXBsZW1lbnQgYSBmdWxsLWZsZWRnZWQKLS8vIHN0cmlu
ZyBjbGFzcyBoZXJlLgotLy8KLS8vIFNpbmNlIHRoZSBwdXJwb3NlIG9mIHRoaXMgY2xhc3MgaXMg
dG8gcHJvdmlkZSBhIHN1YnN0aXR1dGUgZm9yCi0vLyBzdGQ6OnN0cmluZyBvbiBwbGF0Zm9ybXMg
d2hlcmUgaXQgY2Fubm90IGJlIHVzZWQsIHdlIGRlZmluZSBhIGNvcHkKLS8vIGNvbnN0cnVjdG9y
IGFuZCBhc3NpZ25tZW50IG9wZXJhdG9ycyBzdWNoIHRoYXQgd2UgZG9uJ3QgbmVlZAotLy8gY29u
ZGl0aW9uYWwgY29tcGlsYXRpb24gaW4gYSBsb3Qgb2YgcGxhY2VzLgotLy8KLS8vIEluIG9yZGVy
IHRvIG1ha2UgdGhlIHJlcHJlc2VudGF0aW9uIGVmZmljaWVudCwgdGhlIGQndG9yIG9mIFN0cmlu
ZwotLy8gaXMgbm90IHZpcnR1YWwuICBUaGVyZWZvcmUgRE8gTk9UIElOSEVSSVQgRlJPTSBTdHJp
bmcuCisvLyBTdHJpbmcgLSBhbiBhYnN0cmFjdCBjbGFzcyBob2xkaW5nIHN0YXRpYyBzdHJpbmcg
dXRpbGl0aWVzLgogY2xhc3MgR1RFU1RfQVBJXyBTdHJpbmcgewogIHB1YmxpYzoKICAgLy8gU3Rh
dGljIHV0aWxpdHkgbWV0aG9kcwogCi0gIC8vIFJldHVybnMgdGhlIGlucHV0IGVuY2xvc2VkIGlu
IGRvdWJsZSBxdW90ZXMgaWYgaXQncyBub3QgTlVMTDsKLSAgLy8gb3RoZXJ3aXNlIHJldHVybnMg
IihudWxsKSIuICBGb3IgZXhhbXBsZSwgIlwiSGVsbG9cIiIgaXMgcmV0dXJuZWQKLSAgLy8gZm9y
IGlucHV0ICJIZWxsbyIuCi0gIC8vCi0gIC8vIFRoaXMgaXMgdXNlZnVsIGZvciBwcmludGluZyBh
IEMgc3RyaW5nIGluIHRoZSBzeW50YXggb2YgYSBsaXRlcmFsLgotICAvLwotICAvLyBLbm93biBp
c3N1ZTogZXNjYXBlIHNlcXVlbmNlcyBhcmUgbm90IGhhbmRsZWQgeWV0LgotICBzdGF0aWMgU3Ry
aW5nIFNob3dDU3RyaW5nUXVvdGVkKGNvbnN0IGNoYXIqIGNfc3RyKTsKLQogICAvLyBDbG9uZXMg
YSAwLXRlcm1pbmF0ZWQgQyBzdHJpbmcsIGFsbG9jYXRpbmcgbWVtb3J5IHVzaW5nIG5ldy4gIFRo
ZQogICAvLyBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZSByZXR1cm4gdmFs
dWUgdXNpbmcKICAgLy8gZGVsZXRlW10uICBSZXR1cm5zIHRoZSBjbG9uZWQgc3RyaW5nLCBvciBO
VUxMIGlmIHRoZSBpbnB1dCBpcwpAQCAtMTM3LDExICsxMDUsNyBAQCBjbGFzcyBHVEVTVF9BUElf
IFN0cmluZyB7CiAgIC8vIE5VTEwgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gIihudWxsKSIuICBJZiBh
biBlcnJvciBvY2N1cnJlZCBkdXJpbmcKICAgLy8gdGhlIGNvbnZlcnNpb24sICIoZmFpbGVkIHRv
IGNvbnZlcnQgZnJvbSB3aWRlIHN0cmluZykiIGlzCiAgIC8vIHJldHVybmVkLgotICBzdGF0aWMg
U3RyaW5nIFNob3dXaWRlQ1N0cmluZyhjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKTsKLQotICAv
LyBTaW1pbGFyIHRvIFNob3dXaWRlQ1N0cmluZygpLCBleGNlcHQgdGhhdCB0aGlzIGZ1bmN0aW9u
IGVuY2xvc2VzCi0gIC8vIHRoZSBjb252ZXJ0ZWQgc3RyaW5nIGluIGRvdWJsZSBxdW90ZXMuCi0g
IHN0YXRpYyBTdHJpbmcgU2hvd1dpZGVDU3RyaW5nUXVvdGVkKGNvbnN0IHdjaGFyX3QqIHdpZGVf
Y19zdHIpOworICBzdGF0aWMgc3RkOjpzdHJpbmcgU2hvd1dpZGVDU3RyaW5nKGNvbnN0IHdjaGFy
X3QqIHdpZGVfY19zdHIpOwogCiAgIC8vIENvbXBhcmVzIHR3byB3aWRlIEMgc3RyaW5ncy4gIFJl
dHVybnMgdHJ1ZSBpZmYgdGhleSBoYXZlIHRoZSBzYW1lCiAgIC8vIGNvbnRlbnQuCkBAIC0xNzUs
MTc0ICsxMzksMjcgQEAgY2xhc3MgR1RFU1RfQVBJXyBTdHJpbmcgewogICBzdGF0aWMgYm9vbCBD
YXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscyhjb25zdCB3Y2hhcl90KiBsaHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3Qq
IHJocyk7CiAKLSAgLy8gRm9ybWF0cyBhIGxpc3Qgb2YgYXJndW1lbnRzIHRvIGEgU3RyaW5nLCB1
c2luZyB0aGUgc2FtZSBmb3JtYXQKLSAgLy8gc3BlYyBzdHJpbmcgYXMgZm9yIHByaW50Zi4KLSAg
Ly8KLSAgLy8gV2UgZG8gbm90IHVzZSB0aGUgU3RyaW5nUHJpbnRmIGNsYXNzIGFzIGl0IGlzIG5v
dCB1bml2ZXJzYWxseQotICAvLyBhdmFpbGFibGUuCi0gIC8vCi0gIC8vIFRoZSByZXN1bHQgaXMg
bGltaXRlZCB0byA0MDk2IGNoYXJhY3RlcnMgKGluY2x1ZGluZyB0aGUgdGFpbGluZwotICAvLyAw
KS4gIElmIDQwOTYgY2hhcmFjdGVycyBhcmUgbm90IGVub3VnaCB0byBmb3JtYXQgdGhlIGlucHV0
LAotICAvLyAiPGJ1ZmZlciBleGNlZWRlZD4iIGlzIHJldHVybmVkLgotICBzdGF0aWMgU3RyaW5n
IEZvcm1hdChjb25zdCBjaGFyKiBmb3JtYXQsIC4uLik7Ci0KLSAgLy8gQyd0b3JzCi0KLSAgLy8g
VGhlIGRlZmF1bHQgYyd0b3IgY29uc3RydWN0cyBhIE5VTEwgc3RyaW5nLgotICBTdHJpbmcoKSA6
IGNfc3RyXyhOVUxMKSwgbGVuZ3RoXygwKSB7fQotCi0gIC8vIENvbnN0cnVjdHMgYSBTdHJpbmcg
YnkgY2xvbmluZyBhIDAtdGVybWluYXRlZCBDIHN0cmluZy4KLSAgU3RyaW5nKGNvbnN0IGNoYXIq
IGFfY19zdHIpIHsgIC8vIE5PTElOVAotICAgIGlmIChhX2Nfc3RyID09IE5VTEwpIHsKLSAgICAg
IGNfc3RyXyA9IE5VTEw7Ci0gICAgICBsZW5ndGhfID0gMDsKLSAgICB9IGVsc2UgewotICAgICAg
Q29uc3RydWN0Tm9uTnVsbChhX2Nfc3RyLCBzdHJsZW4oYV9jX3N0cikpOwotICAgIH0KLSAgfQor
ICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBnaXZlbiBzdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZl
biBzdWZmaXgsIGlnbm9yaW5nCisgIC8vIGNhc2UuIEFueSBzdHJpbmcgaXMgY29uc2lkZXJlZCB0
byBlbmQgd2l0aCBhbiBlbXB0eSBzdWZmaXguCisgIHN0YXRpYyBib29sIEVuZHNXaXRoQ2FzZUlu
c2Vuc2l0aXZlKAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0ciwgY29uc3Qgc3RkOjpzdHJp
bmcmIHN1ZmZpeCk7CiAKLSAgLy8gQ29uc3RydWN0cyBhIFN0cmluZyBieSBjb3B5aW5nIGEgZ2l2
ZW4gbnVtYmVyIG9mIGNoYXJzIGZyb20gYQotICAvLyBidWZmZXIuICBFLmcuIFN0cmluZygiaGVs
bG8iLCAzKSBjcmVhdGVzIHRoZSBzdHJpbmcgImhlbCIsCi0gIC8vIFN0cmluZygiYVwwYmNkIiwg
NCkgY3JlYXRlcyAiYVwwYmMiLCBTdHJpbmcoTlVMTCwgMCkgY3JlYXRlcyAiIiwKLSAgLy8gYW5k
IFN0cmluZyhOVUxMLCAxKSByZXN1bHRzIGluIGFjY2VzcyB2aW9sYXRpb24uCi0gIFN0cmluZyhj
b25zdCBjaGFyKiBidWZmZXIsIHNpemVfdCBhX2xlbmd0aCkgewotICAgIENvbnN0cnVjdE5vbk51
bGwoYnVmZmVyLCBhX2xlbmd0aCk7Ci0gIH0KKyAgLy8gRm9ybWF0cyBhbiBpbnQgdmFsdWUgYXMg
IiUwMmQiLgorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0SW50V2lkdGgyKGludCB2YWx1ZSk7
ICAvLyAiJTAyZCIgZm9yIHdpZHRoID09IDIKIAotICAvLyBUaGUgY29weSBjJ3RvciBjcmVhdGVz
IGEgbmV3IGNvcHkgb2YgdGhlIHN0cmluZy4gIFRoZSB0d28KLSAgLy8gU3RyaW5nIG9iamVjdHMg
ZG8gbm90IHNoYXJlIGNvbnRlbnQuCi0gIFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cikgOiBjX3N0
cl8oTlVMTCksIGxlbmd0aF8oMCkgeyAqdGhpcyA9IHN0cjsgfQorICAvLyBGb3JtYXRzIGFuIGlu
dCB2YWx1ZSBhcyAiJVgiLgorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0SGV4SW50KGludCB2
YWx1ZSk7CiAKLSAgLy8gRCd0b3IuICBTdHJpbmcgaXMgaW50ZW5kZWQgdG8gYmUgYSBmaW5hbCBj
bGFzcywgc28gdGhlIGQndG9yCi0gIC8vIGRvZXNuJ3QgbmVlZCB0byBiZSB2aXJ0dWFsLgotICB+
U3RyaW5nKCkgeyBkZWxldGVbXSBjX3N0cl87IH0KLQotICAvLyBBbGxvd3MgYSBTdHJpbmcgdG8g
YmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYW4gOjpzdGQ6OnN0cmluZyBvcgotICAvLyA6OnN0
cmluZywgYW5kIHZpY2UgdmVyc2EuICBDb252ZXJ0aW5nIGEgU3RyaW5nIGNvbnRhaW5pbmcgYSBO
VUxMCi0gIC8vIHBvaW50ZXIgdG8gOjpzdGQ6OnN0cmluZyBvciA6OnN0cmluZyBpcyB1bmRlZmlu
ZWQgYmVoYXZpb3IuCi0gIC8vIENvbnZlcnRpbmcgYSA6OnN0ZDo6c3RyaW5nIG9yIDo6c3RyaW5n
IGNvbnRhaW5pbmcgYW4gZW1iZWRkZWQgTlVMCi0gIC8vIGNoYXJhY3RlciB0byBhIFN0cmluZyB3
aWxsIHJlc3VsdCBpbiB0aGUgcHJlZml4IHVwIHRvIHRoZSBmaXJzdAotICAvLyBOVUwgY2hhcmFj
dGVyLgotICBTdHJpbmcoY29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyKSB7Ci0gICAgQ29uc3RydWN0
Tm9uTnVsbChzdHIuY19zdHIoKSwgc3RyLmxlbmd0aCgpKTsKLSAgfQotCi0gIG9wZXJhdG9yIDo6
c3RkOjpzdHJpbmcoKSBjb25zdCB7IHJldHVybiA6OnN0ZDo6c3RyaW5nKGNfc3RyKCksIGxlbmd0
aCgpKTsgfQotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLSAgU3RyaW5nKGNvbnN0IDo6
c3RyaW5nJiBzdHIpIHsKLSAgICBDb25zdHJ1Y3ROb25OdWxsKHN0ci5jX3N0cigpLCBzdHIubGVu
Z3RoKCkpOwotICB9Ci0KLSAgb3BlcmF0b3IgOjpzdHJpbmcoKSBjb25zdCB7IHJldHVybiA6OnN0
cmluZyhjX3N0cigpLCBsZW5ndGgoKSk7IH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9T
VFJJTkcKLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgaXMgYW4gZW1wdHkgc3RyaW5nIChp
LmUuICIiKS4KLSAgYm9vbCBlbXB0eSgpIGNvbnN0IHsgcmV0dXJuIChjX3N0cigpICE9IE5VTEwp
ICYmIChsZW5ndGgoKSA9PSAwKTsgfQotCi0gIC8vIENvbXBhcmVzIHRoaXMgd2l0aCBhbm90aGVy
IFN0cmluZy4KLSAgLy8gUmV0dXJucyA8IDAgaWYgdGhpcyBpcyBsZXNzIHRoYW4gcmhzLCAwIGlm
IHRoaXMgaXMgZXF1YWwgdG8gcmhzLCBvciA+IDAKLSAgLy8gaWYgdGhpcyBpcyBncmVhdGVyIHRo
YW4gcmhzLgotICBpbnQgQ29tcGFyZShjb25zdCBTdHJpbmcmIHJocykgY29uc3Q7Ci0KLSAgLy8g
UmV0dXJucyB0cnVlIGlmZiB0aGlzIFN0cmluZyBlcXVhbHMgdGhlIGdpdmVuIEMgc3RyaW5nLiAg
QSBOVUxMCi0gIC8vIHN0cmluZyBhbmQgYSBub24tTlVMTCBzdHJpbmcgYXJlIGNvbnNpZGVyZWQg
bm90IGVxdWFsLgotICBib29sIG9wZXJhdG9yPT0oY29uc3QgY2hhciogYV9jX3N0cikgY29uc3Qg
eyByZXR1cm4gQ29tcGFyZShhX2Nfc3RyKSA9PSAwOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlm
ZiB0aGlzIFN0cmluZyBpcyBsZXNzIHRoYW4gdGhlIGdpdmVuIFN0cmluZy4gIEEKLSAgLy8gTlVM
TCBzdHJpbmcgaXMgY29uc2lkZXJlZCBsZXNzIHRoYW4gIiIuCi0gIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IFN0cmluZyYgcmhzKSBjb25zdCB7IHJldHVybiBDb21wYXJlKHJocykgPCAwOyB9Ci0KLSAg
Ly8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIFN0cmluZyBkb2Vzbid0IGVxdWFsIHRoZSBnaXZlbiBD
IHN0cmluZy4gIEEgTlVMTAotICAvLyBzdHJpbmcgYW5kIGEgbm9uLU5VTEwgc3RyaW5nIGFyZSBj
b25zaWRlcmVkIG5vdCBlcXVhbC4KLSAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIqIGFfY19z
dHIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gYV9jX3N0cik7IH0KLQotICAvLyBSZXR1cm5z
IHRydWUgaWZmIHRoaXMgU3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LiAgKkFueSoK
LSAgLy8gU3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGggYSBOVUxMIG9yIGVtcHR5IHN1
ZmZpeC4KLSAgYm9vbCBFbmRzV2l0aChjb25zdCBjaGFyKiBzdWZmaXgpIGNvbnN0OwotCi0gIC8v
IFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBTdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXgs
IG5vdCBjb25zaWRlcmluZwotICAvLyBjYXNlLiBBbnkgU3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8g
ZW5kIHdpdGggYSBOVUxMIG9yIGVtcHR5IHN1ZmZpeC4KLSAgYm9vbCBFbmRzV2l0aENhc2VJbnNl
bnNpdGl2ZShjb25zdCBjaGFyKiBzdWZmaXgpIGNvbnN0OwotCi0gIC8vIFJldHVybnMgdGhlIGxl
bmd0aCBvZiB0aGUgZW5jYXBzdWxhdGVkIHN0cmluZywgb3IgMCBpZiB0aGUKLSAgLy8gc3RyaW5n
IGlzIE5VTEwuCi0gIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBsZW5ndGhfOyB9Ci0K
LSAgLy8gR2V0cyB0aGUgMC10ZXJtaW5hdGVkIEMgc3RyaW5nIHRoaXMgU3RyaW5nIG9iamVjdCBy
ZXByZXNlbnRzLgotICAvLyBUaGUgU3RyaW5nIG9iamVjdCBzdGlsbCBvd25zIHRoZSBzdHJpbmcu
ICBUaGVyZWZvcmUgdGhlIGNhbGxlcgotICAvLyBzaG91bGQgTk9UIGRlbGV0ZSB0aGUgcmV0dXJu
IHZhbHVlLgotICBjb25zdCBjaGFyKiBjX3N0cigpIGNvbnN0IHsgcmV0dXJuIGNfc3RyXzsgfQot
Ci0gIC8vIEFzc2lnbnMgYSBDIHN0cmluZyB0byB0aGlzIG9iamVjdC4gIFNlbGYtYXNzaWdubWVu
dCB3b3Jrcy4KLSAgY29uc3QgU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgY2hhciogYV9jX3N0cikg
ewotICAgIHJldHVybiAqdGhpcyA9IFN0cmluZyhhX2Nfc3RyKTsKLSAgfQotCi0gIC8vIEFzc2ln
bnMgYSBTdHJpbmcgb2JqZWN0IHRvIHRoaXMgb2JqZWN0LiAgU2VsZi1hc3NpZ25tZW50IHdvcmtz
LgotICBjb25zdCBTdHJpbmcmIG9wZXJhdG9yPShjb25zdCBTdHJpbmcmIHJocykgewotICAgIGlm
ICh0aGlzICE9ICZyaHMpIHsKLSAgICAgIGRlbGV0ZVtdIGNfc3RyXzsKLSAgICAgIGlmIChyaHMu
Y19zdHIoKSA9PSBOVUxMKSB7Ci0gICAgICAgIGNfc3RyXyA9IE5VTEw7Ci0gICAgICAgIGxlbmd0
aF8gPSAwOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgQ29uc3RydWN0Tm9uTnVsbChyaHMuY19z
dHIoKSwgcmhzLmxlbmd0aCgpKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gKnRoaXM7
Ci0gIH0KKyAgLy8gRm9ybWF0cyBhIGJ5dGUgYXMgIiUwMlgiLgorICBzdGF0aWMgc3RkOjpzdHJp
bmcgRm9ybWF0Qnl0ZSh1bnNpZ25lZCBjaGFyIHZhbHVlKTsKIAogIHByaXZhdGU6Ci0gIC8vIENv
bnN0cnVjdHMgYSBub24tTlVMTCBTdHJpbmcgZnJvbSB0aGUgZ2l2ZW4gY29udGVudC4gIFRoaXMK
LSAgLy8gZnVuY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gZGF0YV8gaGFzIG5vdCBiZWVu
IGFsbG9jYXRlZC4KLSAgLy8gQ29uc3RydWN0Tm9uTnVsbChOVUxMLCAwKSByZXN1bHRzIGluIGFu
IGVtcHR5IHN0cmluZyAoIiIpLgotICAvLyBDb25zdHJ1Y3ROb25OdWxsKE5VTEwsIG5vbl96ZXJv
KSBpcyB1bmRlZmluZWQgYmVoYXZpb3IuCi0gIHZvaWQgQ29uc3RydWN0Tm9uTnVsbChjb25zdCBj
aGFyKiBidWZmZXIsIHNpemVfdCBhX2xlbmd0aCkgewotICAgIGNoYXIqIGNvbnN0IHN0ciA9IG5l
dyBjaGFyW2FfbGVuZ3RoICsgMV07Ci0gICAgbWVtY3B5KHN0ciwgYnVmZmVyLCBhX2xlbmd0aCk7
Ci0gICAgc3RyW2FfbGVuZ3RoXSA9ICdcMCc7Ci0gICAgY19zdHJfID0gc3RyOwotICAgIGxlbmd0
aF8gPSBhX2xlbmd0aDsKLSAgfQotCi0gIGNvbnN0IGNoYXIqIGNfc3RyXzsKLSAgc2l6ZV90IGxl
bmd0aF87CisgIFN0cmluZygpOyAgLy8gTm90IG1lYW50IHRvIGJlIGluc3RhbnRpYXRlZC4KIH07
ICAvLyBjbGFzcyBTdHJpbmcKIAotLy8gU3RyZWFtcyBhIFN0cmluZyB0byBhbiBvc3RyZWFtLiAg
RWFjaCAnXDAnIGNoYXJhY3RlciBpbiB0aGUgU3RyaW5nCi0vLyBpcyByZXBsYWNlZCB3aXRoICJc
XDAiLgotaW5saW5lIDo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBv
cywgY29uc3QgU3RyaW5nJiBzdHIpIHsKLSAgaWYgKHN0ci5jX3N0cigpID09IE5VTEwpIHsKLSAg
ICBvcyA8PCAiKG51bGwpIjsKLSAgfSBlbHNlIHsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBjX3N0
ciA9IHN0ci5jX3N0cigpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHN0ci5sZW5ndGgo
KTsgaSsrKSB7Ci0gICAgICBpZiAoY19zdHJbaV0gPT0gJ1wwJykgewotICAgICAgICBvcyA8PCAi
XFwwIjsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIG9zIDw8IGNfc3RyW2ldOwotICAgICAgfQot
ICAgIH0KLSAgfQotICByZXR1cm4gb3M7Ci19Ci0KLS8vIEdldHMgdGhlIGNvbnRlbnQgb2YgdGhl
IFN0clN0cmVhbSdzIGJ1ZmZlciBhcyBhIFN0cmluZy4gIEVhY2ggJ1wwJworLy8gR2V0cyB0aGUg
Y29udGVudCBvZiB0aGUgc3RyaW5nc3RyZWFtJ3MgYnVmZmVyIGFzIGFuIHN0ZDo6c3RyaW5nLiAg
RWFjaCAnXDAnCiAvLyBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlciBpcyByZXBsYWNlZCB3aXRoICJc
XDAiLgotR1RFU1RfQVBJXyBTdHJpbmcgU3RyU3RyZWFtVG9TdHJpbmcoU3RyU3RyZWFtKiBzdHJl
YW0pOwotCi0vLyBDb252ZXJ0cyBhIHN0cmVhbWFibGUgdmFsdWUgdG8gYSBTdHJpbmcuICBBIE5V
TEwgcG9pbnRlciBpcwotLy8gY29udmVydGVkIHRvICIobnVsbCkiLiAgV2hlbiB0aGUgaW5wdXQg
dmFsdWUgaXMgYSA6OnN0cmluZywKLS8vIDo6c3RkOjpzdHJpbmcsIDo6d3N0cmluZywgb3IgOjpz
dGQ6OndzdHJpbmcgb2JqZWN0LCBlYWNoIE5VTAotLy8gY2hhcmFjdGVyIGluIGl0IGlzIHJlcGxh
Y2VkIHdpdGggIlxcMCIuCi0KLS8vIERlY2xhcmVkIGhlcmUgYnV0IGRlZmluZWQgaW4gZ3Rlc3Qu
aCwgc28gdGhhdCBpdCBoYXMgYWNjZXNzCi0vLyB0byB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgTWVz
c2FnZSBjbGFzcywgcmVxdWlyZWQgYnkgdGhlIEFSTQotLy8gY29tcGlsZXIuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLVN0cmluZyBTdHJlYW1hYmxlVG9TdHJpbmcoY29uc3QgVCYgc3RyZWFtYWJs
ZSk7CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFN0cmluZ1N0cmVhbVRvU3RyaW5nKDo6c3RkOjpz
dHJpbmdzdHJlYW0qIHN0cmVhbSk7CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8g
bmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaAppbmRleCBjMjdmM2E0MjFk
OWM0OTcxZWRlNDljYzMzMjkxMmQ0YTgzNjBjNWE1Li43OGEzYTZhMDFmYWM3NTUxN2VhYjgzMTMx
MjQyN2UxNWQ1ZTRlYmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oCkBAIC0xLDQgKzEsNiBA
QAotLy8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgYSBzY3JpcHQuICBETyBOT1QgRURJVCBC
WSBIQU5EISEhCisvLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBjb21tYW5kOgorLy8gICAg
IHB1bXAucHkgZ3Rlc3QtdHVwbGUuaC5wdW1wCisvLyBETyBOT1QgRURJVCBCWSBIQU5EISEhCiAK
IC8vIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuCiAvLyBBbGwgUmlnaHRzIFJlc2VydmVkLgpA
QCAtMjgsMTEgKzMwLDEyIEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQor
CiAKIC8vIEltcGxlbWVudHMgYSBzdWJzZXQgb2YgVFIxIHR1cGxlIG5lZWRlZCBieSBHb29nbGUg
VGVzdCBhbmQgR29vZ2xlIE1vY2suCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxF
VEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RVUExFX0hf
CiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFVQTEVfSF8KIApA
QCAtNDAsMTcgKzQzLDI1IEBACiAKIC8vIFRoZSBjb21waWxlciB1c2VkIGluIFN5bWJpYW4gaGFz
IGEgYnVnIHRoYXQgcHJldmVudHMgdXMgZnJvbSBkZWNsYXJpbmcgdGhlCiAvLyB0dXBsZSB0ZW1w
bGF0ZSBhcyBhIGZyaWVuZCAoaXQgY29tcGxhaW5zIHRoYXQgdHVwbGUgaXMgcmVkZWZpbmVkKS4g
IFRoaXMKLS8vIGhhY2sgYnlwYXNzZXMgdGhlIGJ1ZyBieSBkZWNsYXJpbmcgdGhlIG1lbWJlcnMg
dGhhdCBzaG91bGQgb3RoZXJ3aXNlIGJlCisvLyBieXBhc3NlcyB0aGUgYnVnIGJ5IGRlY2xhcmlu
ZyB0aGUgbWVtYmVycyB0aGF0IHNob3VsZCBvdGhlcndpc2UgYmUKIC8vIHByaXZhdGUgYXMgcHVi
bGljLgogLy8gU3VuIFN0dWRpbyB2ZXJzaW9ucyA8IDEyIGFsc28gaGF2ZSB0aGUgYWJvdmUgYnVn
LgogI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgfHwgKGRlZmluZWQoX19TVU5QUk9fQ0MpICYm
IF9fU1VOUFJPX0NDIDwgMHg1OTApCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJ
RU5EXyBwdWJsaWM6CisjIGRlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8gcHVi
bGljOgogI2Vsc2UKLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIFwKKyMg
ZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBcCiAgICAgdGVtcGxhdGUgPEdU
RVNUXzEwX1RZUEVOQU1FU18oVSk+IGZyaWVuZCBjbGFzcyB0dXBsZTsgXAogICAgcHJpdmF0ZToK
ICNlbmRpZgogCisvLyBWaXN1YWwgU3R1ZGlvIDIwMTAsIDIwMTIsIGFuZCAyMDEzIGRlZmluZSBz
eW1ib2xzIGluIHN0ZDo6dHIxIHRoYXQgY29uZmxpY3QKKy8vIHdpdGggb3VyIG93biBkZWZpbml0
aW9ucy4gVGhlcmVmb3JlIHVzaW5nIG91ciBvd24gdHVwbGUgZG9lcyBub3Qgd29yayBvbgorLy8g
dGhvc2UgY29tcGlsZXJzLgorI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE2
MDAgIC8qIDE2MDAgaXMgVmlzdWFsIFN0dWRpbyAyMDEwICovCisjIGVycm9yICJndGVzdCdzIHR1
cGxlIGRvZXNuJ3QgY29tcGlsZSBvbiBWaXN1YWwgU3R1ZGlvIDIwMTAgb3IgbGF0ZXIuIFwKK0dU
RVNUX1VTRV9PV05fVFIxX1RVUExFIG11c3QgYmUgc2V0IHRvIDAgb24gdGhvc2UgY29tcGlsZXJz
LiIKKyNlbmRpZgorCiAvLyBHVEVTVF9uX1RVUExFXyhUKSBpcyB0aGUgdHlwZSBvZiBhbiBuLXR1
cGxlLgogI2RlZmluZSBHVEVTVF8wX1RVUExFXyhUKSB0dXBsZTw+CiAjZGVmaW5lIEdURVNUXzFf
VFVQTEVfKFQpIHR1cGxlPFQjIzAsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQs
IFwKQEAgLTE0MCwzNCArMTUxLDU0IEBAIHRlbXBsYXRlIDxib29sIGtJbmRleFZhbGlkLCBpbnQg
a0luZGV4LCBjbGFzcyBUdXBsZT4KIHN0cnVjdCBUdXBsZUVsZW1lbnQ7CiAKIHRlbXBsYXRlIDxH
VEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAwLCBHVEVT
VF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUMCB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVu
dDx0cnVlLCAwLCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDAgdHlwZTsKK307
CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVu
dDx0cnVlLCAxLCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUMSB0eXBlOyB9Oworc3Ry
dWN0IFR1cGxlRWxlbWVudDx0cnVlLCAxLCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVk
ZWYgVDEgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3Ry
dWN0IFR1cGxlRWxlbWVudDx0cnVlLCAyLCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBU
MiB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAyLCBHVEVTVF8xMF9UVVBMRV8o
VCkgPiB7CisgIHR5cGVkZWYgVDIgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBF
TkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAzLCBHVEVTVF8xMF9UVVBMRV8o
VCk+IHsgdHlwZWRlZiBUMyB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAzLCBH
VEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDMgdHlwZTsKK307CiAKIHRlbXBsYXRl
IDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA0LCBH
VEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUNCB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxl
bWVudDx0cnVlLCA0LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDQgdHlwZTsK
K307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxl
bWVudDx0cnVlLCA1LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUNSB0eXBlOyB9Owor
c3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA1LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5
cGVkZWYgVDUgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgot
c3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA2LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRl
ZiBUNiB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA2LCBHVEVTVF8xMF9UVVBM
RV8oVCkgPiB7CisgIHR5cGVkZWYgVDYgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9U
WVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA3LCBHVEVTVF8xMF9UVVBM
RV8oVCk+IHsgdHlwZWRlZiBUNyB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA3
LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDcgdHlwZTsKK307CiAKIHRlbXBs
YXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA4
LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUOCB0eXBlOyB9Oworc3RydWN0IFR1cGxl
RWxlbWVudDx0cnVlLCA4LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDggdHlw
ZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxl
RWxlbWVudDx0cnVlLCA5LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUOSB0eXBlOyB9
Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA5LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7Cisg
IHR5cGVkZWYgVDkgdHlwZTsKK307CiAKIH0gIC8vIG5hbWVzcGFjZSBndGVzdF9pbnRlcm5hbAog
CkBAIC03MDgsMzcgKzczOSw1OSBAQCBpbmxpbmUgR1RFU1RfMTBfVFVQTEVfKFQpIG1ha2VfdHVw
bGUoY29uc3QgVDAmIGYwLCBjb25zdCBUMSYgZjEsIGNvbnN0IFQyJiBmMiwKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUdXBsZT4gc3RydWN0IHR1cGxlX3NpemU7CiAKIHRlbXBsYXRlIDxHVEVTVF8wX1RZ
UEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8wX1RVUExFXyhUKT4geyBzdGF0
aWMgY29uc3QgaW50IHZhbHVlID0gMDsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzBfVFVQ
TEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMDsKK307CiAKIHRlbXBsYXRl
IDxHVEVTVF8xX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8xX1RVUExF
XyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMTsgfTsKK3N0cnVjdCB0dXBsZV9zaXpl
PEdURVNUXzFfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMTsKK307
CiAKIHRlbXBsYXRlIDxHVEVTVF8yX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxH
VEVTVF8yX1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMjsgfTsKK3N0cnVj
dCB0dXBsZV9zaXplPEdURVNUXzJfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZh
bHVlID0gMjsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8zX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3Qg
dHVwbGVfc2l6ZTxHVEVTVF8zX1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0g
MzsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzNfVFVQTEVfKFQpID4geworICBzdGF0aWMg
Y29uc3QgaW50IHZhbHVlID0gMzsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF80X1RZUEVOQU1FU18o
VCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF80X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3Qg
aW50IHZhbHVlID0gNDsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzRfVFVQTEVfKFQpID4g
eworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNDsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF81
X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF81X1RVUExFXyhUKT4geyBz
dGF0aWMgY29uc3QgaW50IHZhbHVlID0gNTsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzVf
VFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNTsKK307CiAKIHRlbXBs
YXRlIDxHVEVTVF82X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF82X1RV
UExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNjsgfTsKK3N0cnVjdCB0dXBsZV9z
aXplPEdURVNUXzZfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNjsK
K307CiAKIHRlbXBsYXRlIDxHVEVTVF83X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6
ZTxHVEVTVF83X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNzsgfTsKK3N0
cnVjdCB0dXBsZV9zaXplPEdURVNUXzdfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50
IHZhbHVlID0gNzsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF84X1RZUEVOQU1FU18oVCk+Ci1zdHJ1
Y3QgdHVwbGVfc2l6ZTxHVEVTVF84X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVl
ID0gODsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzhfVFVQTEVfKFQpID4geworICBzdGF0
aWMgY29uc3QgaW50IHZhbHVlID0gODsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF85X1RZUEVOQU1F
U18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF85X1RVUExFXyhUKT4geyBzdGF0aWMgY29u
c3QgaW50IHZhbHVlID0gOTsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzlfVFVQTEVfKFQp
ID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gOTsKK307CiAKIHRlbXBsYXRlIDxHVEVT
VF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFQp
PiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAxMDsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdU
RVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDEwOworfTsK
IAogdGVtcGxhdGUgPGludCBrLCBjbGFzcyBUdXBsZT4KIHN0cnVjdCB0dXBsZV9lbGVtZW50IHsK
QEAgLTkxMiw3ICs5NjUsNyBAQCBzdHJ1Y3QgU2FtZVNpemVUdXBsZVByZWZpeENvbXBhcmF0b3I8
aywgaz4gewogICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGUxLCBjbGFzcyBUdXBsZTI+CiAgIHN0YXRp
YyBib29sIEVxKGNvbnN0IFR1cGxlMSYgdDEsIGNvbnN0IFR1cGxlMiYgdDIpIHsKICAgICByZXR1
cm4gU2FtZVNpemVUdXBsZVByZWZpeENvbXBhcmF0b3I8ayAtIDEsIGsgLSAxPjo6RXEodDEsIHQy
KSAmJgotICAgICAgICA6OnN0ZDo6Z2V0PGsgLSAxPih0MSkgPT0gOjpzdGQ6OmdldDxrIC0gMT4o
dDIpOworICAgICAgICA6OnN0ZDo6dHIxOjpnZXQ8ayAtIDE+KHQxKSA9PSA6OnN0ZDo6dHIxOjpn
ZXQ8ayAtIDE+KHQyKTsKICAgfQogfTsKIApAQCAtOTIyLDggKzk3NSw4IEBAIHRlbXBsYXRlIDxH
VEVTVF8xMF9UWVBFTkFNRVNfKFQpLCBHVEVTVF8xMF9UWVBFTkFNRVNfKFUpPgogaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBHVEVTVF8xMF9UVVBMRV8oVCkmIHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdURVNUXzEwX1RVUExFXyhVKSYgdSkgewogICByZXR1cm4gZ3Rlc3Rf
aW50ZXJuYWw6OlNhbWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9yPAotICAgICAgdHVwbGVfc2l6
ZTxHVEVTVF8xMF9UVVBMRV8oVCk+Ojp2YWx1ZSwKLSAgICAgIHR1cGxlX3NpemU8R1RFU1RfMTBf
VFVQTEVfKFUpPjo6dmFsdWU+OjpFcSh0LCB1KTsKKyAgICAgIHR1cGxlX3NpemU8R1RFU1RfMTBf
VFVQTEVfKFQpID46OnZhbHVlLAorICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8xMF9UVVBMRV8oVSkg
Pjo6dmFsdWU+OjpFcSh0LCB1KTsKIH0KIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18o
VCksIEdURVNUXzEwX1RZUEVOQU1FU18oVSk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5w
dW1wCmluZGV4IDg1ZWJjODA2MmVlMTA0NDczN2IzNmU4YTQwODVkMjY3ZjE4ZGMyMDUuLmJiNjI2
ZTA0OWYwODc4MGZmY2U5NmQ0ODUyY2I4ZWQ1ZDNlZjVmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1w
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtdHVwbGUuaC5wdW1wCkBAIC0yOSwxMSArMjksMTIgQEAgJCQgVGhpcyBtZXRhIGNvbW1lbnQg
Zml4ZXMgYXV0by1pbmRlbnRhdGlvbiBpbiBFbWFjcy4gfX0KIC8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29t
IChaaGFueW9uZyBXYW4pCisKIAogLy8gSW1wbGVtZW50cyBhIHN1YnNldCBvZiBUUjEgdHVwbGUg
bmVlZGVkIGJ5IEdvb2dsZSBUZXN0IGFuZCBHb29nbGUgTW9jay4KIAorLy8gR09PR0xFVEVTVF9D
TTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJO
QUxfR1RFU1RfVFVQTEVfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9H
VEVTVF9UVVBMRV9IXwogCkBAIC00MSwxNyArNDIsMjUgQEAgJCQgVGhpcyBtZXRhIGNvbW1lbnQg
Zml4ZXMgYXV0by1pbmRlbnRhdGlvbiBpbiBFbWFjcy4gfX0KIAogLy8gVGhlIGNvbXBpbGVyIHVz
ZWQgaW4gU3ltYmlhbiBoYXMgYSBidWcgdGhhdCBwcmV2ZW50cyB1cyBmcm9tIGRlY2xhcmluZyB0
aGUKIC8vIHR1cGxlIHRlbXBsYXRlIGFzIGEgZnJpZW5kIChpdCBjb21wbGFpbnMgdGhhdCB0dXBs
ZSBpcyByZWRlZmluZWQpLiAgVGhpcwotLy8gaGFjayBieXBhc3NlcyB0aGUgYnVnIGJ5IGRlY2xh
cmluZyB0aGUgbWVtYmVycyB0aGF0IHNob3VsZCBvdGhlcndpc2UgYmUKKy8vIGJ5cGFzc2VzIHRo
ZSBidWcgYnkgZGVjbGFyaW5nIHRoZSBtZW1iZXJzIHRoYXQgc2hvdWxkIG90aGVyd2lzZSBiZQog
Ly8gcHJpdmF0ZSBhcyBwdWJsaWMuCiAvLyBTdW4gU3R1ZGlvIHZlcnNpb25zIDwgMTIgYWxzbyBo
YXZlIHRoZSBhYm92ZSBidWcuCiAjaWYgZGVmaW5lZChfX1NZTUJJQU4zMl9fKSB8fCAoZGVmaW5l
ZChfX1NVTlBST19DQykgJiYgX19TVU5QUk9fQ0MgPCAweDU5MCkKLSNkZWZpbmUgR1RFU1RfREVD
TEFSRV9UVVBMRV9BU19GUklFTkRfIHB1YmxpYzoKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQ
TEVfQVNfRlJJRU5EXyBwdWJsaWM6CiAjZWxzZQotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExF
X0FTX0ZSSUVORF8gXAorIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIFwK
ICAgICB0ZW1wbGF0ZSA8R1RFU1RfJChuKV9UWVBFTkFNRVNfKFUpPiBmcmllbmQgY2xhc3MgdHVw
bGU7IFwKICAgIHByaXZhdGU6CiAjZW5kaWYKIAorLy8gVmlzdWFsIFN0dWRpbyAyMDEwLCAyMDEy
LCBhbmQgMjAxMyBkZWZpbmUgc3ltYm9scyBpbiBzdGQ6OnRyMSB0aGF0IGNvbmZsaWN0CisvLyB3
aXRoIG91ciBvd24gZGVmaW5pdGlvbnMuIFRoZXJlZm9yZSB1c2luZyBvdXIgb3duIHR1cGxlIGRv
ZXMgbm90IHdvcmsgb24KKy8vIHRob3NlIGNvbXBpbGVycy4KKyNpZiBkZWZpbmVkKF9NU0NfVkVS
KSAmJiBfTVNDX1ZFUiA+PSAxNjAwICAvKiAxNjAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxMCAqLwor
IyBlcnJvciAiZ3Rlc3QncyB0dXBsZSBkb2Vzbid0IGNvbXBpbGUgb24gVmlzdWFsIFN0dWRpbyAy
MDEwIG9yIGxhdGVyLiBcCitHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSBtdXN0IGJlIHNldCB0byAw
IG9uIHRob3NlIGNvbXBpbGVycy4iCisjZW5kaWYKKwogCiAkcmFuZ2UgaSAwLi5uLTEKICRyYW5n
ZSBqIDAuLm4KQEAgLTExOCw4ICsxMjcsOSBAQCBzdHJ1Y3QgVHVwbGVFbGVtZW50OwogCiAkZm9y
IGkgW1sKIHRlbXBsYXRlIDxHVEVTVF8kKG4pX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVF
bGVtZW50PHRydWUsICRpLCBHVEVTVF8kKG4pX1RVUExFXyhUKT4gW1tdXQoteyB0eXBlZGVmIFQk
aSB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAkaSwgR1RFU1RfJChuKV9UVVBM
RV8oVCkgPiB7CisgIHR5cGVkZWYgVCRpIHR5cGU7Cit9OwogCiAKIF1dCkBAIC0yMjAsNyArMjMw
LDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPiBzdHJ1Y3QgdHVwbGVfc2l6ZTsKIAogJGZv
ciBqIFtbCiB0ZW1wbGF0ZSA8R1RFU1RfJChqKV9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxl
X3NpemU8R1RFU1RfJChqKV9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9ICRq
OyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfJChqKV9UVVBMRV8oVCkgPiB7CisgIHN0YXRp
YyBjb25zdCBpbnQgdmFsdWUgPSAkajsKK307CiAKIAogXV0KQEAgLTMwMiw4ICszMTQsOCBAQCB0
ZW1wbGF0ZSA8R1RFU1RfJChuKV9UWVBFTkFNRVNfKFQpLCBHVEVTVF8kKG4pX1RZUEVOQU1FU18o
VSk+CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdURVNUXyQobilfVFVQTEVfKFQpJiB0
LAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHVEVTVF8kKG4pX1RVUExFXyhVKSYgdSkg
ewogICByZXR1cm4gZ3Rlc3RfaW50ZXJuYWw6OlNhbWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9y
PAotICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8kKG4pX1RVUExFXyhUKT46OnZhbHVlLAotICAgICAg
dHVwbGVfc2l6ZTxHVEVTVF8kKG4pX1RVUExFXyhVKT46OnZhbHVlPjo6RXEodCwgdSk7CisgICAg
ICB0dXBsZV9zaXplPEdURVNUXyQobilfVFVQTEVfKFQpID46OnZhbHVlLAorICAgICAgdHVwbGVf
c2l6ZTxHVEVTVF8kKG4pX1RVUExFXyhVKSA+Ojp2YWx1ZT46OkVxKHQsIHUpOwogfQogCiB0ZW1w
bGF0ZSA8R1RFU1RfJChuKV9UWVBFTkFNRVNfKFQpLCBHVEVTVF8kKG4pX1RZUEVOQU1FU18oVSk+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVy
bmFsL2d0ZXN0LXR5cGUtdXRpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaAppbmRleCAwOTNlZWU2ZjAxOTYzNTU2OWY0
MDRhZTYzNTdiOGRlNDhiNzE4ZTgxLi4yOGU0MTEyNDUzNjFjMDhmMjg3MDdlOTI0OGU2ZDAzMzIw
ZTY4NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgKQEAgLTMwLDggKzMwLDcg
QEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0v
LyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogLy8gVHlwZSB1dGls
aXRpZXMgbmVlZGVkIGZvciBpbXBsZW1lbnRpbmcgdHlwZWQgYW5kIHR5cGUtcGFyYW1ldGVyaXpl
ZAogLy8gdGVzdHMuICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBULiAgRE8gTk9U
IEVESVQgQlkgSEFORCEKQEAgLTQxLDU4ICs0MCw4NCBAQAogLy8gUGxlYXNlIGNvbnRhY3QgZ29v
Z2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tIGlmIHlvdSBuZWVkCiAvLyBtb3JlLgog
CisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1RfSU5D
TFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UWVBFX1VUSUxfSF8KICNkZWZpbmUgR1RFU1RfSU5D
TFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UWVBFX1VUSUxfSF8KIAotI2luY2x1ZGUgPGd0ZXN0
L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1z
dHJpbmcuaD4KLQotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9U
RVNUX1AKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKIC8vICNpZmRl
ZiBfX0dOVUNfXyBpcyB0b28gZ2VuZXJhbCBoZXJlLiAgSXQgaXMgcG9zc2libGUgdG8gdXNlIGdj
YyB3aXRob3V0IHVzaW5nCiAvLyBsaWJzdGRjKysgKHdoaWNoIGlzIHdoZXJlIGN4eGFiaS5oIGNv
bWVzIGZyb20pLgotI2lmZGVmIF9fR0xJQkNYWF9fCi0jaW5jbHVkZSA8Y3h4YWJpLmg+Ci0jZW5k
aWYgIC8vIF9fR0xJQkNYWF9fCisjIGlmIEdURVNUX0hBU19DWFhBQklfSF8KKyMgIGluY2x1ZGUg
PGN4eGFiaS5oPgorIyBlbGlmIGRlZmluZWQoX19IUF9hQ0MpCisjICBpbmNsdWRlIDxhY3h4X2Rl
bWFuZ2xlLmg+CisjIGVuZGlmICAvLyBHVEVTVF9IQVNIX0NYWEFCSV9IXwogCiBuYW1lc3BhY2Ug
dGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCi0vLyBBc3NlcnR5VHlwZUVxPFQxLCBU
Mj46OnR5cGUgaXMgZGVmaW5lZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQotLy8gdHlwZS4g
IFRoaXMgY2FuIGJlIHVzZWQgYXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0
aGF0Ci0vLyB0d28gdHlwZXMgYXJlIGVxdWFsLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyPgotc3RydWN0IEFzc2VydFR5cGVFcTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1zdHJ1Y3QgQXNzZXJ0VHlwZUVxPFQsIFQ+IHsKLSAgdHlwZWRlZiBib29sIHR5cGU7Ci19Owor
Ly8gQ2Fub25pY2FsaXplcyBhIGdpdmVuIG5hbWUgd2l0aCByZXNwZWN0IHRvIHRoZSBTdGFuZGFy
ZCBDKysgTGlicmFyeS4KKy8vIFRoaXMgaGFuZGxlcyByZW1vdmluZyB0aGUgaW5saW5lIG5hbWVz
cGFjZSB3aXRoaW4gYHN0ZGAgdGhhdCBpcworLy8gdXNlZCBieSB2YXJpb3VzIHN0YW5kYXJkIGxp
YnJhcmllcyAoZS5nLiwgYHN0ZDo6X18xYCkuICBOYW1lcyBvdXRzaWRlCisvLyBvZiBuYW1lc3Bh
Y2Ugc3RkIGFyZSByZXR1cm5lZCB1bm1vZGlmaWVkLgoraW5saW5lIHN0ZDo6c3RyaW5nIENhbm9u
aWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoc3RkOjpzdHJpbmcgcykgeworICBzdGF0aWMgY29u
c3QgY2hhciBwcmVmaXhbXSA9ICJzdGQ6Ol9fIjsKKyAgaWYgKHMuY29tcGFyZSgwLCBzdHJsZW4o
cHJlZml4KSwgcHJlZml4KSA9PSAwKSB7CisgICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBlbmQg
PSBzLmZpbmQoIjo6Iiwgc3RybGVuKHByZWZpeCkpOworICAgIGlmIChlbmQgIT0gcy5ucG9zKSB7
CisgICAgICAvLyBFcmFzZSBldmVyeXRoaW5nIGJldHdlZW4gdGhlIGluaXRpYWwgYHN0ZGAgYW5k
IHRoZSBzZWNvbmQgYDo6YC4KKyAgICAgIHMuZXJhc2Uoc3RybGVuKCJzdGQiKSwgZW5kIC0gc3Ry
bGVuKCJzdGQiKSk7CisgICAgfQorICB9CisgIHJldHVybiBzOworfQogCiAvLyBHZXRUeXBlTmFt
ZTxUPigpIHJldHVybnMgYSBodW1hbi1yZWFkYWJsZSBuYW1lIG9mIHR5cGUgVC4KKy8vIE5COiBU
aGlzIGZ1bmN0aW9uIGlzIGFsc28gdXNlZCBpbiBHb29nbGUgTW9jaywgc28gZG9uJ3QgbW92ZSBp
dCBpbnNpZGUgb2YKKy8vIHRoZSB0eXBlZC10ZXN0LW9ubHkgc2VjdGlvbiBiZWxvdy4KIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotU3RyaW5nIEdldFR5cGVOYW1lKCkgewotI2lmIEdURVNUX0hBU19S
VFRJCitzdGQ6OnN0cmluZyBHZXRUeXBlTmFtZSgpIHsKKyMgaWYgR1RFU1RfSEFTX1JUVEkKIAog
ICBjb25zdCBjaGFyKiBjb25zdCBuYW1lID0gdHlwZWlkKFQpLm5hbWUoKTsKLSNpZmRlZiBfX0dM
SUJDWFhfXworIyAgaWYgR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBkZWZpbmVkKF9fSFBfYUNDKQog
ICBpbnQgc3RhdHVzID0gMDsKICAgLy8gZ2NjJ3MgaW1wbGVtZW50YXRpb24gb2YgdHlwZWlkKFQp
Lm5hbWUoKSBtYW5nbGVzIHRoZSB0eXBlIG5hbWUsCiAgIC8vIHNvIHdlIGhhdmUgdG8gZGVtYW5n
bGUgaXQuCi0gIGNoYXIqIGNvbnN0IHJlYWRhYmxlX25hbWUgPSBhYmk6Ol9fY3hhX2RlbWFuZ2xl
KG5hbWUsIDAsIDAsICZzdGF0dXMpOwotICBjb25zdCBTdHJpbmcgbmFtZV9zdHIoc3RhdHVzID09
IDAgPyByZWFkYWJsZV9uYW1lIDogbmFtZSk7CisjICAgaWYgR1RFU1RfSEFTX0NYWEFCSV9IXwor
ICB1c2luZyBhYmk6Ol9fY3hhX2RlbWFuZ2xlOworIyAgIGVuZGlmICAvLyBHVEVTVF9IQVNfQ1hY
QUJJX0hfCisgIGNoYXIqIGNvbnN0IHJlYWRhYmxlX25hbWUgPSBfX2N4YV9kZW1hbmdsZShuYW1l
LCAwLCAwLCAmc3RhdHVzKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZV9zdHIoc3RhdHVzID09
IDAgPyByZWFkYWJsZV9uYW1lIDogbmFtZSk7CiAgIGZyZWUocmVhZGFibGVfbmFtZSk7Ci0gIHJl
dHVybiBuYW1lX3N0cjsKLSNlbHNlCisgIHJldHVybiBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJz
aW9uaW5nKG5hbWVfc3RyKTsKKyMgIGVsc2UKICAgcmV0dXJuIG5hbWU7Ci0jZW5kaWYgIC8vIF9f
R0xJQkNYWF9fCisjICBlbmRpZiAgLy8gR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBfX0hQX2FDQwor
CisjIGVsc2UKIAotI2Vsc2UKICAgcmV0dXJuICI8dHlwZT4iOwotI2VuZGlmICAvLyBHVEVTVF9I
QVNfUlRUSQorCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfUlRUSQogfQogCisjaWYgR1RFU1RfSEFT
X1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorCisvLyBBc3NlcnR5VHlwZUVx
PFQxLCBUMj46OnR5cGUgaXMgZGVmaW5lZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQorLy8g
dHlwZS4gIFRoaXMgY2FuIGJlIHVzZWQgYXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRvIGVu
c3VyZSB0aGF0CisvLyB0d28gdHlwZXMgYXJlIGVxdWFsLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyPgorc3RydWN0IEFzc2VydFR5cGVFcTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitzdHJ1Y3QgQXNzZXJ0VHlwZUVxPFQsIFQ+IHsKKyAgdHlwZWRlZiBib29sIHR5cGU7
Cit9OworCiAvLyBBIHVuaXF1ZSB0eXBlIHVzZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRo
ZSBhcmd1bWVudHMgb2YgY2xhc3MKIC8vIHRlbXBsYXRlIFR5cGVzLiAgVGhpcyBhbGxvd3MgdXMg
dG8gc2ltdWxhdGUgdmFyaWFkaWMgdGVtcGxhdGVzCiAvLyAoZS5nLiBUeXBlczxpbnQ+LCBUeXBl
PGludCwgZG91YmxlPiwgYW5kIGV0YyksIHdoaWNoIEMrKyBkb2Vzbid0CkBAIC0xNjExLDcgKzE2
MzYsNyBAQCBzdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKIAogbmFtZXNwYWNlIGludGVybmFsIHsKIAot
I2RlZmluZSBHVEVTVF9URU1QTEFURV8gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzCisjIGRl
ZmluZSBHVEVTVF9URU1QTEFURV8gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzCiAKIC8vIFRo
ZSB0ZW1wbGF0ZSAic2VsZWN0b3IiIHN0cnVjdCBUZW1wbGF0ZVNlbDxUbXBsPiBpcyB1c2VkIHRv
CiAvLyByZXByZXNlbnQgVG1wbCwgd2hpY2ggbXVzdCBiZSBhIGNsYXNzIHRlbXBsYXRlIHdpdGgg
b25lIHR5cGUKQEAgLTE2MjksNyArMTY1NCw3IEBAIHN0cnVjdCBUZW1wbGF0ZVNlbCB7CiAgIH07
CiB9OwogCi0jZGVmaW5lIEdURVNUX0JJTkRfKFRtcGxTZWwsIFQpIFwKKyMgZGVmaW5lIEdURVNU
X0JJTkRfKFRtcGxTZWwsIFQpIFwKICAgVG1wbFNlbDo6dGVtcGxhdGUgQmluZDxUPjo6dHlwZQog
CiAvLyBBIHVuaXF1ZSBzdHJ1Y3QgdGVtcGxhdGUgdXNlZCBhcyB0aGUgZGVmYXVsdCB2YWx1ZSBm
b3IgdGhlCkBAIC0zMjkxLDcgKzMzMTYsOSBAQCBzdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAogLy8gSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoKS4KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1z
dHJ1Y3QgVHlwZUxpc3QgeyB0eXBlZGVmIFR5cGVzMTxUPiB0eXBlOyB9Oworc3RydWN0IFR5cGVM
aXN0IHsKKyAgdHlwZWRlZiBUeXBlczE8VD4gdHlwZTsKK307CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUs
CiAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDks
IHR5cGVuYW1lIFQxMCwKQEAgLTMzMTMsOSArMzM0MCw5IEBAIHN0cnVjdCBUeXBlTGlzdDxUeXBl
czxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMs
CiAgICAgICBUNDEsIFQ0MiwgVDQzLCBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5LCBUNTA+
Ojp0eXBlIHR5cGU7CiB9OwogCisjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdU
RVNUX0hBU19UWVBFRF9URVNUX1AKKwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBu
YW1lc3BhY2UgdGVzdGluZwogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdU
RVNUX0hBU19UWVBFRF9URVNUX1AKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lO
VEVSTkFMX0dURVNUX1RZUEVfVVRJTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0
aWwuaC5wdW1wCmluZGV4IDVhZWQxZTU1NDRmYTJkYTE1ODk3MzRjYmMzYjQxNDFiNTg3YTFmMzIu
LjAwMDFhNWQzOWRmYTZkMjRjN2M0MWExNmExNWYyZTJhNWNlOTQ5ZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11
dGlsLmgucHVtcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oLnB1bXAKQEAgLTI4LDggKzI4LDcgQEAgJHZhciBuID0g
NTAgICQkIE1heGltdW0gbGVuZ3RoIG9mIHR5cGUgbGlzdHMgd2Ugd2FudCB0byBzdXBwb3J0Lgog
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUeXBlIHV0aWxpdGll
cyBuZWVkZWQgZm9yIGltcGxlbWVudGluZyB0eXBlZCBhbmQgdHlwZS1wYXJhbWV0ZXJpemVkCiAv
LyB0ZXN0cy4gIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBETyBOT1QgRURJ
VCBCWSBIQU5EIQpAQCAtMzksNTggKzM4LDg0IEBAICR2YXIgbiA9IDUwICAkJCBNYXhpbXVtIGxl
bmd0aCBvZiB0eXBlIGxpc3RzIHdlIHdhbnQgdG8gc3VwcG9ydC4KIC8vIFBsZWFzZSBjb250YWN0
IGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbSBpZiB5b3UgbmVlZAogLy8gbW9y
ZS4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNU
X0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCiAjZGVmaW5lIEdURVNU
X0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCiAKLSNpbmNsdWRlIDxn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rl
c3Qtc3RyaW5nLmg+Ci0KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQ
RURfVEVTVF9QCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAvLyAj
aWZkZWYgX19HTlVDX18gaXMgdG9vIGdlbmVyYWwgaGVyZS4gIEl0IGlzIHBvc3NpYmxlIHRvIHVz
ZSBnY2Mgd2l0aG91dCB1c2luZwogLy8gbGlic3RkYysrICh3aGljaCBpcyB3aGVyZSBjeHhhYmku
aCBjb21lcyBmcm9tKS4KLSNpZmRlZiBfX0dMSUJDWFhfXwotI2luY2x1ZGUgPGN4eGFiaS5oPgot
I2VuZGlmICAvLyBfX0dMSUJDWFhfXworIyBpZiBHVEVTVF9IQVNfQ1hYQUJJX0hfCisjICBpbmNs
dWRlIDxjeHhhYmkuaD4KKyMgZWxpZiBkZWZpbmVkKF9fSFBfYUNDKQorIyAgaW5jbHVkZSA8YWN4
eF9kZW1hbmdsZS5oPgorIyBlbmRpZiAgLy8gR1RFU1RfSEFTSF9DWFhBQklfSF8KIAogbmFtZXNw
YWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsKIAotLy8gQXNzZXJ0eVR5cGVFcTxU
MSwgVDI+Ojp0eXBlIGlzIGRlZmluZWQgaWZmIFQxIGFuZCBUMiBhcmUgdGhlIHNhbWUKLS8vIHR5
cGUuICBUaGlzIGNhbiBiZSB1c2VkIGFzIGEgY29tcGlsZS10aW1lIGFzc2VydGlvbiB0byBlbnN1
cmUgdGhhdAotLy8gdHdvIHR5cGVzIGFyZSBlcXVhbC4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMj4KLXN0cnVjdCBBc3NlcnRUeXBlRXE7Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotc3RydWN0IEFzc2VydFR5cGVFcTxULCBUPiB7Ci0gIHR5cGVkZWYgYm9vbCB0eXBlOwot
fTsKKy8vIENhbm9uaWNhbGl6ZXMgYSBnaXZlbiBuYW1lIHdpdGggcmVzcGVjdCB0byB0aGUgU3Rh
bmRhcmQgQysrIExpYnJhcnkuCisvLyBUaGlzIGhhbmRsZXMgcmVtb3ZpbmcgdGhlIGlubGluZSBu
YW1lc3BhY2Ugd2l0aGluIGBzdGRgIHRoYXQgaXMKKy8vIHVzZWQgYnkgdmFyaW91cyBzdGFuZGFy
ZCBsaWJyYXJpZXMgKGUuZy4sIGBzdGQ6Ol9fMWApLiAgTmFtZXMgb3V0c2lkZQorLy8gb2YgbmFt
ZXNwYWNlIHN0ZCBhcmUgcmV0dXJuZWQgdW5tb2RpZmllZC4KK2lubGluZSBzdGQ6OnN0cmluZyBD
YW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKHN0ZDo6c3RyaW5nIHMpIHsKKyAgc3RhdGlj
IGNvbnN0IGNoYXIgcHJlZml4W10gPSAic3RkOjpfXyI7CisgIGlmIChzLmNvbXBhcmUoMCwgc3Ry
bGVuKHByZWZpeCksIHByZWZpeCkgPT0gMCkgeworICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUg
ZW5kID0gcy5maW5kKCI6OiIsIHN0cmxlbihwcmVmaXgpKTsKKyAgICBpZiAoZW5kICE9IHMubnBv
cykgeworICAgICAgLy8gRXJhc2UgZXZlcnl0aGluZyBiZXR3ZWVuIHRoZSBpbml0aWFsIGBzdGRg
IGFuZCB0aGUgc2Vjb25kIGA6OmAuCisgICAgICBzLmVyYXNlKHN0cmxlbigic3RkIiksIGVuZCAt
IHN0cmxlbigic3RkIikpOworICAgIH0KKyAgfQorICByZXR1cm4gczsKK30KIAogLy8gR2V0VHlw
ZU5hbWU8VD4oKSByZXR1cm5zIGEgaHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0eXBlIFQuCisvLyBO
QjogVGhpcyBmdW5jdGlvbiBpcyBhbHNvIHVzZWQgaW4gR29vZ2xlIE1vY2ssIHNvIGRvbid0IG1v
dmUgaXQgaW5zaWRlIG9mCisvLyB0aGUgdHlwZWQtdGVzdC1vbmx5IHNlY3Rpb24gYmVsb3cuCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVN0cmluZyBHZXRUeXBlTmFtZSgpIHsKLSNpZiBHVEVTVF9I
QVNfUlRUSQorc3RkOjpzdHJpbmcgR2V0VHlwZU5hbWUoKSB7CisjIGlmIEdURVNUX0hBU19SVFRJ
CiAKICAgY29uc3QgY2hhciogY29uc3QgbmFtZSA9IHR5cGVpZChUKS5uYW1lKCk7Ci0jaWZkZWYg
X19HTElCQ1hYX18KKyMgIGlmIEdURVNUX0hBU19DWFhBQklfSF8gfHwgZGVmaW5lZChfX0hQX2FD
QykKICAgaW50IHN0YXR1cyA9IDA7CiAgIC8vIGdjYydzIGltcGxlbWVudGF0aW9uIG9mIHR5cGVp
ZChUKS5uYW1lKCkgbWFuZ2xlcyB0aGUgdHlwZSBuYW1lLAogICAvLyBzbyB3ZSBoYXZlIHRvIGRl
bWFuZ2xlIGl0LgotICBjaGFyKiBjb25zdCByZWFkYWJsZV9uYW1lID0gYWJpOjpfX2N4YV9kZW1h
bmdsZShuYW1lLCAwLCAwLCAmc3RhdHVzKTsKLSAgY29uc3QgU3RyaW5nIG5hbWVfc3RyKHN0YXR1
cyA9PSAwID8gcmVhZGFibGVfbmFtZSA6IG5hbWUpOworIyAgIGlmIEdURVNUX0hBU19DWFhBQklf
SF8KKyAgdXNpbmcgYWJpOjpfX2N4YV9kZW1hbmdsZTsKKyMgICBlbmRpZiAgLy8gR1RFU1RfSEFT
X0NYWEFCSV9IXworICBjaGFyKiBjb25zdCByZWFkYWJsZV9uYW1lID0gX19jeGFfZGVtYW5nbGUo
bmFtZSwgMCwgMCwgJnN0YXR1cyk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG5hbWVfc3RyKHN0YXR1
cyA9PSAwID8gcmVhZGFibGVfbmFtZSA6IG5hbWUpOwogICBmcmVlKHJlYWRhYmxlX25hbWUpOwot
ICByZXR1cm4gbmFtZV9zdHI7Ci0jZWxzZQorICByZXR1cm4gQ2Fub25pY2FsaXplRm9yU3RkTGli
VmVyc2lvbmluZyhuYW1lX3N0cik7CisjICBlbHNlCiAgIHJldHVybiBuYW1lOwotI2VuZGlmICAv
LyBfX0dMSUJDWFhfXworIyAgZW5kaWYgIC8vIEdURVNUX0hBU19DWFhBQklfSF8gfHwgX19IUF9h
Q0MKKworIyBlbHNlCiAKLSNlbHNlCiAgIHJldHVybiAiPHR5cGU+IjsKLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX1JUVEkKKworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX1JUVEkKIH0KIAorI2lmIEdURVNU
X0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AKKworLy8gQXNzZXJ0eVR5
cGVFcTxUMSwgVDI+Ojp0eXBlIGlzIGRlZmluZWQgaWZmIFQxIGFuZCBUMiBhcmUgdGhlIHNhbWUK
Ky8vIHR5cGUuICBUaGlzIGNhbiBiZSB1c2VkIGFzIGEgY29tcGlsZS10aW1lIGFzc2VydGlvbiB0
byBlbnN1cmUgdGhhdAorLy8gdHdvIHR5cGVzIGFyZSBlcXVhbC4KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMj4KK3N0cnVjdCBBc3NlcnRUeXBlRXE7CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorc3RydWN0IEFzc2VydFR5cGVFcTxULCBUPiB7CisgIHR5cGVkZWYgYm9vbCB0
eXBlOworfTsKKwogLy8gQSB1bmlxdWUgdHlwZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHZhbHVlIGZv
ciB0aGUgYXJndW1lbnRzIG9mIGNsYXNzCiAvLyB0ZW1wbGF0ZSBUeXBlcy4gIFRoaXMgYWxsb3dz
IHVzIHRvIHNpbXVsYXRlIHZhcmlhZGljIHRlbXBsYXRlcwogLy8gKGUuZy4gVHlwZXM8aW50Piwg
VHlwZTxpbnQsIGRvdWJsZT4sIGFuZCBldGMpLCB3aGljaCBDKysgZG9lc24ndApAQCAtMTY5LDcg
KzE5NCw3IEBAIHN0cnVjdCBUeXBlczwkZm9yIGosIFtbVCRqXV0kZm9yIGtbWywgaW50ZXJuYWw6
Ok5vbmVdXT4gewogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCi0jZGVmaW5lIEdURVNUX1RFTVBM
QVRFXyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MKKyMgZGVmaW5lIEdURVNUX1RFTVBMQVRF
XyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MKIAogLy8gVGhlIHRlbXBsYXRlICJzZWxlY3Rv
ciIgc3RydWN0IFRlbXBsYXRlU2VsPFRtcGw+IGlzIHVzZWQgdG8KIC8vIHJlcHJlc2VudCBUbXBs
LCB3aGljaCBtdXN0IGJlIGEgY2xhc3MgdGVtcGxhdGUgd2l0aCBvbmUgdHlwZQpAQCAtMTg3LDcg
KzIxMiw3IEBAIHN0cnVjdCBUZW1wbGF0ZVNlbCB7CiAgIH07CiB9OwogCi0jZGVmaW5lIEdURVNU
X0JJTkRfKFRtcGxTZWwsIFQpIFwKKyMgZGVmaW5lIEdURVNUX0JJTkRfKFRtcGxTZWwsIFQpIFwK
ICAgVG1wbFNlbDo6dGVtcGxhdGUgQmluZDxUPjo6dHlwZQogCiAvLyBBIHVuaXF1ZSBzdHJ1Y3Qg
dGVtcGxhdGUgdXNlZCBhcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlCkBAIC0yNzAsNyArMjk1
LDkgQEAgc3RydWN0IFRlbXBsYXRlczwkZm9yIGosIFtbVCRqXV0kZm9yIGtbWywgTm9uZVRdXT4g
ewogLy8gSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoKS4KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1zdHJ1Y3QgVHlwZUxpc3QgeyB0eXBlZGVmIFR5cGVzMTxUPiB0eXBlOyB9Oworc3Ry
dWN0IFR5cGVMaXN0IHsKKyAgdHlwZWRlZiBUeXBlczE8VD4gdHlwZTsKK307CiAKIAogJHJhbmdl
IGkgMS4ubgpAQCAtMjc5LDkgKzMwNiw5IEBAIHN0cnVjdCBUeXBlTGlzdDxUeXBlczwkZm9yIGks
IFtbVCRpXV0+ID4gewogICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzPCRmb3IgaSwgW1tUJGldXT46
OnR5cGUgdHlwZTsKIH07CiAKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RF
U1RfSEFTX1RZUEVEX1RFU1RfUAorCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5h
bWVzcGFjZSB0ZXN0aW5nCiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RF
U1RfSEFTX1RZUEVEX1RFU1RfUAotCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5U
RVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9tYWtlL01ha2VmaWxlIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbWFrZS9NYWtlZmls
ZQppbmRleCA1YjI3YjZhMmNiYjEzZTM4MGVlNzVkMTg2ZjU1M2JmYjVmYTE0NGI1Li45YWM3NDQ5
M2JhNTUyNDY1OTdlOTBiODk4ZmFlODQ3YWUzNThlYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9tYWtlL01ha2VmaWxlCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L21ha2UvTWFrZWZpbGUKQEAgLTIwLDEwICsyMCwxMiBAQCBHVEVTVF9ESVIgPSAuLgogVVNFUl9E
SVIgPSAuLi9zYW1wbGVzCiAKICMgRmxhZ3MgcGFzc2VkIHRvIHRoZSBwcmVwcm9jZXNzb3IuCi1D
UFBGTEFHUyArPSAtSSQoR1RFU1RfRElSKS9pbmNsdWRlCisjIFNldCBHb29nbGUgVGVzdCdzIGhl
YWRlciBkaXJlY3RvcnkgYXMgYSBzeXN0ZW0gZGlyZWN0b3J5LCBzdWNoIHRoYXQKKyMgdGhlIGNv
bXBpbGVyIGRvZXNuJ3QgZ2VuZXJhdGUgd2FybmluZ3MgaW4gR29vZ2xlIFRlc3QgaGVhZGVycy4K
K0NQUEZMQUdTICs9IC1pc3lzdGVtICQoR1RFU1RfRElSKS9pbmNsdWRlCiAKICMgRmxhZ3MgcGFz
c2VkIHRvIHRoZSBDKysgY29tcGlsZXIuCi1DWFhGTEFHUyArPSAtZyAtV2FsbCAtV2V4dHJhCitD
WFhGTEFHUyArPSAtZyAtV2FsbCAtV2V4dHJhIC1wdGhyZWFkCiAKICMgQWxsIHRlc3RzIHByb2R1
Y2VkIGJ5IHRoaXMgTWFrZWZpbGUuICBSZW1lbWJlciB0byBhZGQgbmV3IHRlc3RzIHlvdQogIyBj
cmVhdGVkIHRvIHRoZSBsaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
bXN2Yy8yMDEwL2d0ZXN0LW1kLnNsbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAx
MC9ndGVzdC1tZC5zbG4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM2YjMzYjYyMTVjMzc0YWZjMTE2YjUyMDg0YjE2
ZjQxNDg4MDQ3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21z
dmMvMjAxMC9ndGVzdC1tZC5zbG4KQEAgLTAsMCArMSw1NSBAQAorTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTEuMDAKKyMgVmlzdWFsIEMrKyBF
eHByZXNzIDIwMTAKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5
NDJ9IikgPSAiZ3Rlc3QtbWQiLCAiZ3Rlc3QtbWQudmN4cHJvaiIsICJ7QzhGNkMxNzItNTZGMi00
RTc2LUI1RkEtQzNCNDIzQjMxQkU4fSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04
QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3RfbWFpbi1tZCIsICJndGVzdF9t
YWluLW1kLnZjeHByb2oiLCAiezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzM30i
CitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJD
OTQyfSIpID0gImd0ZXN0X3Byb2RfdGVzdC1tZCIsICJndGVzdF9wcm9kX3Rlc3QtbWQudmN4cHJv
aiIsICJ7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfSIKK0VuZFByb2plY3QK
K1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rl
c3RfdW5pdHRlc3QtbWQiLCAiZ3Rlc3RfdW5pdHRlc3QtbWQudmN4cHJvaiIsICJ7NEQ5RkRGQjUt
OTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfSIKK0VuZFByb2plY3QKK0dsb2JhbAorCUdsb2Jh
bFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCisJ
CURlYnVnfFdpbjMyID0gRGVidWd8V2luMzIKKwkJRGVidWd8eDY0ID0gRGVidWd8eDY0CisJCVJl
bGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyCisJCVJlbGVhc2V8eDY0ID0gUmVsZWFzZXx4NjQK
KwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBs
YXRmb3JtcykgPSBwb3N0U29sdXRpb24KKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQy
M0IzMUJFOH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0M4RjZDMTcy
LTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVn
fFdpbjMyCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LkRlYnVnfHg2
NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQy
M0IzMUJFOH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJe0M4RjZDMTcyLTU2RjIt
NEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNl
fFdpbjMyCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LlJlbGVhc2V8
V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZB
LUMzQjQyM0IzMUJFOH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0M4
RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9
IFJlbGVhc2V8eDY0CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LkRl
YnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzIt
OTE0Ny1GNjhFRDk4NjIwMzN9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7
M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5EZWJ1Z3x4NjQuQWN0aXZlQ2Zn
ID0gRGVidWd8eDY0CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LkRl
YnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1G
NjhFRDk4NjIwMzN9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7
M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5SZWxlYXNlfFdpbjMyLkJ1aWxk
LjAgPSBSZWxlYXNlfFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIw
MzN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXszQUY1NEM4QS0xMEJG
LTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2
NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5EZWJ1Z3xXaW4zMi5B
Y3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5
QkMzRUNCfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezI0ODQ4NTUxLUVG
NEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2
NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5EZWJ1Z3x4NjQuQnVp
bGQuMCA9IERlYnVnfHg2NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNC
fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezI0ODQ4NTUxLUVG
NEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFz
ZXxXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5SZWxlYXNl
fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQt
RUE0RDQ5QkMzRUNCfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezREOUZE
RkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0g
RGVidWd8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uRGVi
dWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzktODIz
Qy1GNEVFMEVENDgxQTJ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezREOUZE
RkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1
Z3x4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uUmVsZWFzZXxX
aW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzktODIz
Qy1GNEVFMEVENDgxQTJ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJ
ezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uUmVsZWFzZXx4NjQuQWN0aXZl
Q2ZnID0gUmVsZWFzZXx4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFB
Mn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJRW5kR2xvYmFsU2VjdGlvbgor
CUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uCisJCUhpZGVT
b2x1dGlvbk5vZGUgPSBGQUxTRQorCUVuZEdsb2JhbFNlY3Rpb24KK0VuZEdsb2JhbApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1kLnZjeHByb2og
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QtbWQudmN4cHJvagpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNmE2ZmYxMmY3YjU3OTAxNWFiYjE0MTU4MGUyZjJkNGZkYTZmOWMzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1kLnZj
eHByb2oKQEAgLTAsMCArMSwxNDkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0i
NC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWls
ZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAg
ICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENv
bmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8
L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25m
aWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1
ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwv
UHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9
IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJh
dGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29u
ZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4
NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAg
IDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Cisg
IDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFBy
b2plY3RHdWlkPntDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9PC9Qcm9qZWN0
R3VpZD4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91
cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVm
YXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24i
PgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlw
ZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0
Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+Cisg
IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRp
b25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJT
ZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9Q
bGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExh
YmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFy
eTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJh
Y3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAg
PC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4K
KyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+
CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZv
cm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8
SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4K
KyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3Jv
dXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBv
cnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2Vy
LnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4k
KFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4K
KyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMi
PgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBs
YXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWlj
cm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQ
bGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJv
cGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9z
b2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJM
b2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIg
TGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlz
dHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycp
IiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQ
cm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAg
ICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+
CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSkt
JChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE91dERpcikkKFByb2pl
Y3ROYW1lKVw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlv
bk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERp
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3Vw
PgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9u
TmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGly
PiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0
ZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Cisg
ICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENv
bmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpJChQcm9qZWN0TmFt
ZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3Q8L1RhcmdldE5hbWU+CisgIDwvUHJv
cGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0ZDwv
VGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAg
ICA8VGFyZ2V0TmFtZT5ndGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8
SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRp
b24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50
cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFz
dENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRp
VGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZl
bDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRD
b250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4K
KyAgICA8TGliIC8+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9u
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0
aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJ
Q19NQVg9MTA7X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hl
Y2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJl
YWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4K
KyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwv
V2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFi
YXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAg
IDxMaWIgLz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJ
TjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRp
VGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgor
ICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9X
YXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJh
c2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAg
PExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQn
Ij4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMy
O19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8
L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhy
ZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAg
ICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJu
aW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8
L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExp
YiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3QtYWxsLmNjIj4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25h
bEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBp
bGU+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClc
TWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lv
blRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAx
MC9ndGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3Zj
LzIwMTAvZ3Rlc3QtbWQudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZWRlZmYyMzA2ZTFm
YWM5M2U3N2M1NTNmMDU2YjcwZmQyYTY4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QtbWQudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAg
KzEsMTggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJv
amVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5j
b20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJ
bmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0Yx
LUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8
RXh0ZW5zaW9ucz5jcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5z
aW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+
CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJF
NTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDto
bTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+
CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3Qt
YWxsLmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENv
bXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVz
dC5zbG4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3Quc2xuCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNhY2Q1YzBjZTZiOTMyODZiYTUyNzBmODMxMWY3ZDY0OTIxZTAyZTYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3Quc2xuCkBA
IC0wLDAgKzEsNTUgQEAKK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZv
cm1hdCBWZXJzaW9uIDExLjAwCisjIFZpc3VhbCBDKysgRXhwcmVzcyAyMDEwCitQcm9qZWN0KCJ7
OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0IiwgImd0ZXN0
LnZjeHByb2oiLCAie0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30iCitFbmRQ
cm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIp
ID0gImd0ZXN0X21haW4iLCAiZ3Rlc3RfbWFpbi52Y3hwcm9qIiwgInszQUY1NEM4QS0xMEJGLTQz
MzItOTE0Ny1GNjhFRDk4NjIwMzJ9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThC
NEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdF91bml0dGVzdCIsICJndGVzdF91
bml0dGVzdC52Y3hwcm9qIiwgIns0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9
IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFC
Qzk0Mn0iKSA9ICJndGVzdF9wcm9kX3Rlc3QiLCAiZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2oiLCAi
ezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQX0iCitFbmRQcm9qZWN0CitHbG9i
YWwKKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVT
b2x1dGlvbgorCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyCisJCURlYnVnfHg2NCA9IERlYnVn
fHg2NAorCQlSZWxlYXNlfFdpbjMyID0gUmVsZWFzZXxXaW4zMgorCQlSZWxlYXNlfHg2NCA9IFJl
bGVhc2V8eDY0CisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZp
Z3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYt
QjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJ
CXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnfFdpbjMyLkJ1aWxk
LjAgPSBEZWJ1Z3xXaW4zMgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3
fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXtDOEY2QzE3Mi01NkYyLTRFNzYt
QjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtDOEY2
QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2Zn
ID0gUmVsZWFzZXxXaW4zMgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3
fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtDOEY2QzE3Mi01NkYy
LTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8
eDY0CisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LlJlbGVhc2V8eDY0
LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5
ODYyMDMyfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7M0FGNTRDOEEt
MTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8
V2luMzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uRGVidWd8eDY0
LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5
ODYyMDMyfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00
MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8
V2luMzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uUmVsZWFzZXxX
aW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDct
RjY4RUQ5ODYyMDMyfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7M0FG
NTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0g
UmVsZWFzZXx4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uRGVi
dWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04
MjNDLUY0RUUwRUQ0ODFBMX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs0
RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9LkRlYnVnfHg2NC5BY3RpdmVDZmcg
PSBEZWJ1Z3x4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uRGVi
dWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0
RUUwRUQ0ODFBMX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs0
RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9LlJlbGVhc2V8V2luMzIuQnVpbGQu
MCA9IFJlbGVhc2V8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFB
MX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezREOUZERkI1LTk4NkEt
NDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0
CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LkRlYnVnfFdpbjMyLkFj
dGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlC
QzNFQ0F9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7MjQ4NDg1NTEtRUY0
Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0
CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LkRlYnVnfHg2NC5CdWls
ZC4wID0gRGVidWd8eDY0CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9
LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7MjQ4NDg1NTEtRUY0
Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNl
fFdpbjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LlJlbGVhc2V8
eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1F
QTRENDlCQzNFQ0F9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCUVuZEdsb2Jh
bFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlv
bgorCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UKKwlFbmRHbG9iYWxTZWN0aW9uCitFbmRHbG9i
YWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC52
Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LnZjeHByb2oK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTQ2ZjVjN2FmMjQ1MzhkMzk4YzM2MjZjOGVjY2U5MTQ4Yzk2ZjAxZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC52
Y3hwcm9qCkBAIC0wLDAgKzEsMTQ5IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249
IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVp
bGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+Cisg
ICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxD
b25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMy
PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29u
ZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVi
dWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8
L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRl
PSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3Vy
YXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENv
bmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8
eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAg
ICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgor
ICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQ
cm9qZWN0R3VpZD57QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fTwvUHJvamVj
dEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3Jv
dXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRl
ZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9u
Ij4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5
cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxh
dGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0
aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVy
U2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwv
UGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBM
YWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJh
cnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFy
YWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+Cisg
IDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+
CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBl
PgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRm
b3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAg
PEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+
CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdy
b3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1w
b3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+
CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRz
Ij4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRh
UGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlBy
b3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0i
TG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
IExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhp
c3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMn
KSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8
UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+Cisg
ICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9u
PgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0p
LSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpdGVtcFwk
KFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChT
b2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAg
PEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGly
KSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgor
ICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8
VGFyZ2V0TmFtZT5ndGVzdGQ8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFBy
b3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlc
JChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0
RGlyKXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3Q8
L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAg
IDxUYXJnZXROYW1lPmd0ZXN0ZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8
UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdDwvVGFyZ2V0TmFtZT4KKyAg
PC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGls
ZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElC
OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAg
ICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1
bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAg
PFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+CisgICAg
ICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAg
PFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0
aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4K
KyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGliIC8+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4K
KyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXph
dGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRp
b25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNo
ZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGlt
ZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVj
b21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2Fybmlu
Z0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3Jt
YXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwv
Q2xDb21waWxlPgorICAgIDxMaWIgLz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRl
bURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRp
bWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2
ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Q
cm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENv
bXBpbGU+CisgICAgPExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVm
aW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXx4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmlu
aXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJy
YXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVh
ZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2
ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFt
RGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+
CisgICAgPExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3QtYWxsLmNjIj4KKyAgICAgIDxB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAg
PC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJn
ZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9
IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L21zdmMvMjAxMC9ndGVzdC52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9tc3ZjLzIwMTAvZ3Rlc3QudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZWRlZmYyMzA2
ZTFmYWM5M2U3N2M1NTNmMDU2YjcwZmQyYTY4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAg
KzEsMTggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJv
amVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5j
b20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJ
bmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0Yx
LUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8
RXh0ZW5zaW9ucz5jcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5z
aW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+
CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJF
NTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDto
bTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+
CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3Qt
YWxsLmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENv
bXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVz
dF9tYWluLW1kLnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rl
c3RfbWFpbi1tZC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNzczODk1YjcwMjNkZTg0NzQwZDYyYmJh
NjNlYzkwMGY3NGM5MjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qCkBAIC0wLDAgKzEsMTU0IEBACivvu788
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRh
cmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1p
Y3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9
IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0
aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25m
aWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQi
PgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxh
dGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25m
aWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8
L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25m
aWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJl
bGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAg
ICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3Jv
dXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57M0FGNTRDOEEtMTBCRi00MzMy
LTkxNDctRjY4RUQ5ODYyMDMzfTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9q
PC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1Rh
cmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxX
aW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3Rh
dGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5
dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9v
bHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZp
Z3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1
cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pgor
ICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5
R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENv
bmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxD
aGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNl
dD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRp
Y0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRl
PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xz
ZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1Bh
dGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5z
aW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9
IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJl
bD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9u
PSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+
CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwv
SW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAg
PEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3Jt
IiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3Jv
cyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40
MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIp
JChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Cisg
ICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPE91dERp
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3Vy
YXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlc
PC9JbnREaXI+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8T3V0
RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJh
dGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0lu
dERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGly
KSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgor
ICAgIDxJbnREaXI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdl
dE5hbWU+Z3Rlc3RfbWFpbjwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJv
cGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfbWFpbmQ8L1RhcmdldE5hbWU+Cisg
IDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+
Z3Rlc3RfbWFpbjwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmlu
aXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJs
ZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtf
VkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9Q
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5p
bWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwv
QmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRE
ZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAg
ICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5p
bmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwv
RGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGli
IC8+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAg
ICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9u
PgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7
X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmlu
aXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNp
Y1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVn
RExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xl
dmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWIgLz4K
KyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAg
ICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJ
QURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRE
TEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9Q
cmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2
ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4u
LlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgor
ICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8
Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJ
Q19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8
L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVj
b21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+
CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5m
b3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwu
LlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgorICA8
L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlwuLlxzcmNcZ3Rlc3RfbWFpbi5jYyI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3x4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICA8
L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRl
PSJndGVzdC1tZC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjOGY2YzE3Mi01NmYyLTRlNzYt
YjVmYS1jM2I0MjNiMzFiZTh9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAg
PC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3Nv
ZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0
cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0
X21haW4tbWQudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8y
MDEwL2d0ZXN0X21haW4tbWQudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyNmM3NzNjY2Ix
Nzc2YTU4ZDZmNGZkNjVhMTZjYjUwZjQyMmQxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qLmZpbHRlcnMK
QEAgLTAsMCArMSwxOCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgi
Pz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWlj
cm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8
RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57
NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4K
KyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214
PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVy
IEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhF
Qi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDto
cHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0
ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNy
Y1xndGVzdF9tYWluLmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMv
MjAxMC9ndGVzdF9tYWluLnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIw
MTAvZ3Rlc3RfbWFpbi52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmYjI1ODk3YzhiMWMyZGJiM2NmNmMx
M2U5YjQxOTNmYzlhZTA1MGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi52Y3hwcm9qCkBAIC0wLDAgKzEsMTYyIEBACivvu788
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRh
cmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1p
Y3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9
IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0
aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25m
aWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQi
PgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxh
dGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25m
aWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8
L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25m
aWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJl
bGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAg
ICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3Jv
dXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57M0FGNTRDOEEtMTBCRi00MzMy
LTkxNDctRjY4RUQ5ODYyMDMyfTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9q
PC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1Rh
cmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxX
aW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3Rh
dGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5
dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9v
bHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZp
Z3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1
cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pgor
ICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5
R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENv
bmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxD
aGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNl
dD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRp
Y0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRl
PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xz
ZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1Bh
dGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5z
aW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9
IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJl
bD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9u
PSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+
CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwv
SW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAg
PEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3Jt
IiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3Jv
cyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40
MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIp
JChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Cisg
ICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8
T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29u
ZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE91dERpcil0ZW1wXCQoUHJv
amVjdE5hbWUpXDwvSW50RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0k
KENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFBy
b2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluZDwvVGFyZ2V0
TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE91dERp
cj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRp
b24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8
L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluPC9UYXJnZXROYW1lPgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9t
YWluZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5
R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAg
PE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19MSUI7JShQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmlt
YWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNr
cz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxp
YnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21w
aWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xl
dmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xD
b21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3RO
YW1lKWQubGliPC9PdXRwdXRGaWxlPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3Jv
dXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRp
bWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxCYXNpY1J1bnRp
bWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1
bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+CisgICAgICA8
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdh
cm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAg
ICA8L0NsQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQ
cm9qZWN0TmFtZSlkLmxpYjwvT3V0cHV0RmlsZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5p
dGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgor
ICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRF
QlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRp
b25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5
PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4K
KyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4u
OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQo
T3V0RGlyKSQoUHJvamVjdE5hbWUpLmxpYjwvT3V0cHV0RmlsZT4KKyAgICA8L0xpYj4KKyAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPENsQ29t
cGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFY
PTEwO05ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1l
TGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRI
ZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAg
PERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVk
ZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0
RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKS5saWI8L091dHB1dEZpbGU+CisgICAgPC9MaWI+
CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXC4uXHNyY1xndGVzdF9tYWluLmNjIj4KKyAgICAgIDxBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+
CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIElu
Y2x1ZGU9Imd0ZXN0LnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2M4ZjZjMTcyLTU2ZjItNGU3
Ni1iNWZhLWMzYjQyM2IzMWJlN308L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgor
ICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jv
c29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJn
ZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rl
c3RfbWFpbi52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIw
MTAvZ3Rlc3RfbWFpbi52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI2Yzc3M2NjYjE3NzZh
NThkNmY0ZmQ2NWExNmNiNTBmNDIyZDE1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9tYWluLnZjeHByb2ouZmlsdGVycwpAQCAtMCww
ICsxLDE4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFBy
b2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQu
Y29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIg
SW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdG
MS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAg
PEV4dGVuc2lvbnM+Y3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVu
c2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMi
PgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZC
RTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7
aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3Vw
PgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXGd0ZXN0
X21haW4uY2MiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0Ns
Q29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0
ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8y
MDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzMGU1ZGNlNDEwNjIz
YzE1YjY4ZmVhNzE4ZWQ5NGM0NTdmMDcwZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjeHByb2oKQEAgLTAs
MCArMSwxOTkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8
UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0i
aHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAg
PEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENv
bmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+
RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgor
ICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIElu
Y2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJh
dGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZp
Z3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2lu
MzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAg
IDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4K
KyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAg
PENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54
NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3Vw
PgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnsy
NDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0J9PC9Qcm9qZWN0R3VpZD4KKyAgICA8
S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9y
dCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIg
Lz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25m
aWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJh
Y3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYx
MDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0
JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNh
dGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0No
YXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4K
KyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRp
b24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5
cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxh
dGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlv
blR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+
TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0
Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZD
VGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJl
bD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMy
JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJl
eGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+Cisg
IDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIg
Q29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1w
b3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8
SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0i
IC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0
cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQo
UGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0
YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0i
VXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNp
b24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29s
dXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9P
dXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+Cisg
ICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5j
cmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPE91dERpciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0aW9u
RGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGly
PgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAg
PExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5j
cmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgIDwvUHJvcGVydHlHcm91cD4KKyAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUp
XCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91
dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9wcm9k
X3Rlc3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCci
PgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSkt
JChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKSQoUHJvamVj
dE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X3Byb2RfdGVzdDwvVGFyZ2V0
TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPFRhcmdl
dE5hbWU+Z3Rlc3RfcHJvZF90ZXN0PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+Cisg
IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X3Byb2RfdGVzdDwvVGFy
Z2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Cisg
ICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlv
bj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEw
O19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+
CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGlt
ZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1
bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRI
ZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAg
PERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVk
ZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVy
YXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAg
ICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF9wcm9kX3Rlc3QucGRiPC9Qcm9n
cmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Cisg
ICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGlu
az4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAg
IDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+
CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtf
REVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRl
ZmluaXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9C
YXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERl
YnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1By
ZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZl
bD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4u
XC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAg
ICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0
aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChPdXREaXIpZ3Rlc3RfcHJvZF90ZXN0
LnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3Vi
U3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURl
ZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRl
ZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50
aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVj
b21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZl
bD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlBy
b2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29t
cGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwv
R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJT
eXN0ZW0+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNl
cz4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+
CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwv
TGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+
CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtf
VkFSSUFESUNfTUFYPTEwO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25z
KTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlU
aHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNl
PC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5n
TGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0Rl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+
CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZv
cm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPE9w
dGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8RW5hYmxl
Q09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgIDwvTGluaz4KKyAg
PC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cLi5cdGVzdFxndGVzdF9wcm9kX3Rlc3QuY2MiPgorICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxl
ZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgIDwvQ2xDb21waWxlPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxwcm9kdWN0aW9uLmNjIj4KKyAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAg
ICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAg
IDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8eDY0JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAg
IDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAg
ICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8
L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24uaCIgLz4KKyAgPC9JdGVtR3JvdXA+Cisg
IDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iZ3Rlc3RfbWFpbi1t
ZC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnszYWY1NGM4YS0xMGJmLTQzMzItOTE0Ny1mNjhl
ZDk4NjIwMzN9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3Jv
dXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRh
cmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwv
SW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVz
dC1tZC52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAv
Z3Rlc3RfcHJvZF90ZXN0LW1kLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzM2NzMxMGFl
ZTYyNmY0ZWM5YzFkZmZkYTczM2E1MGYyYTVjNWVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qLmZp
bHRlcnMKQEAgLTAsMCArMSwyNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
dXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVt
YXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4K
KyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRp
Zmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRp
Zmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2Fz
bTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0i
SGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRi
MDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lv
bnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgor
ICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XC4uXHRlc3RcZ3Rlc3RfcHJvZF90ZXN0LmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwu
Llx0ZXN0XHByb2R1Y3Rpb24uY2MiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24uaCI+CisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91
cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2og
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHBy
b2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDQyZTEzNTExZGYyOGE1MzIyMjQyMDU3ZTc1NDFmOTY1NjcwZGRhMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVz
dF9wcm9kX3Rlc3QudmN4cHJvagpAQCAtMCwwICsxLDE5MSBAQAor77u/PD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIg
VG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2Rl
dmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmln
dXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4z
MiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQ
bGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAg
ICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25m
aWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxh
dGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3Vy
YXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxl
YXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAg
ICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNs
dWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1
cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29u
ZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9i
YWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJD
M0VDQX08L1Byb2plY3RHdWlkPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAg
PC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWlj
cm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0i
Q29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25m
aWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0
PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3Bl
cnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAg
PENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8
Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xz
ZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0
eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFw
cGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0
ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29s
c2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3Vy
YXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlv
blR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8
UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3Vw
PgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9w
cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1w
b3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAg
IDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3Jt
KS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0
LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9y
bSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlT
aGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNw
cC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFw
cERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJl
bD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilc
TWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygn
JChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExh
YmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9y
dEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9u
PSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+
CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91
cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZl
cnNpb24+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0
Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE91dERpcil0
ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8
L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVu
dGFsPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0
Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoT3V0RGly
KXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5m
YWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5r
SW5jcmVtZW50YWw+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8
T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmln
dXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5h
bWUpXDwvSW50RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAg
ICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29u
ZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERpcil0ZW1wXCQoUHJvamVj
dE5hbWUpXDwvSW50RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2lu
MzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0
aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJ
Q19NQVg9MTA7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFs
UmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFz
aWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1
ZzwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21w
aWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Cisg
ICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxp
bmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8
R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4K
KyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKWd0ZXN0X3Byb2RfdGVzdC5wZGI8
L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3Rl
bT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAg
PC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXph
dGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFY
PTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVj
a3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVh
ZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xl
dmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgor
ICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3Jt
YXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF9wcm9kX3Rl
c3QucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9T
dWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1
bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNv
bXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVs
PkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJv
Z3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21w
aWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9H
ZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5
c3RlbT4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2Vz
PgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4K
KyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9M
aW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4K
KyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19W
QVJJQURJQ19NQVg9MTA7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMp
PC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRo
cmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1By
ZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZl
bD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4u
XC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAg
ICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0
aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8T3B0aW1p
emVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxFbmFibGVDT01E
QVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgPC9MaW5rPgorICA8L0l0
ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlwuLlx0ZXN0XGd0ZXN0X3Byb2RfdGVzdC5jYyI+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
PgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
KTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVh
ZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4
NjQnIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24uY2MiPgorICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFBy
ZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJl
Y29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8QWRkaXRp
b25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFBy
ZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQ
cmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgIDwvQ2xD
b21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXC4uXHRlc3RccHJvZHVjdGlvbi5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0
ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJndGVzdF9tYWluLnZjeHBy
b2oiPgorICAgICAgPFByb2plY3Q+ezNhZjU0YzhhLTEwYmYtNDMzMi05MTQ3LWY2OGVkOTg2MjAz
Mn08L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAg
PEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIg
Lz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRH
cm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHBy
b2ouZmlsdGVycyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9wcm9k
X3Rlc3QudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjMzY3MzEwYWVlNjI2ZjRlYzljMWRm
ZmRhNzMzYTUwZjJhNWM1ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsx
LDI2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2pl
Y3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29t
L2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5j
bHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1D
N0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4
dGVuc2lvbnM+Y3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lv
bnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgor
ICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUy
RUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07
aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgor
ICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxndGVzdF9w
cm9kX3Rlc3QuY2MiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8
L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RccHJvZHVjdGlv
bi5jYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21w
aWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXC4uXHRlc3RccHJvZHVjdGlvbi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0Pgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC1tZC52Y3hwcm9qIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjeHByb2oKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTNiMGRjNGUxYTRlMDNhZThkNjNlZmYzNmM2N2JmZTgyMzY1ZjE4OAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC1t
ZC52Y3hwcm9qCkBAIC0wLDAgKzEsMTg4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNp
b249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21z
YnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+
CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAg
IDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldp
bjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0
Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+
RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAg
ICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNs
dWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZp
Z3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVj
dENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVh
c2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Cisg
ICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9u
PgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAg
IDxQcm9qZWN0R3VpZD57NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfTwvUHJv
amVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5
R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3Bw
LkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0
aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25U
eXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBs
YXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4K
KyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJh
dGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJT
ZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9Q
bGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExh
YmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248
L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0
ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwv
UHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Cisg
ICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAg
ICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRv
b2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBv
cnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8
SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4K
KyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQ
cm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJv
cHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxh
dGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8
L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Cisg
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRm
b3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0
eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2Fs
QXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJl
bD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilc
TWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygn
JChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExh
YmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3Bl
cnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxf
UHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAg
ICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENv
bmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5h
bWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0xpbmtJbmNyZW1lbnRh
bD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxPdXRE
aXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1
cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUp
XDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRh
bD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGly
KSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgor
ICAgIDxJbnREaXI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdl
dE5hbWU+Z3Rlc3RfdW5pdHRlc3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFt
ZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQo
T3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X3Vu
aXR0ZXN0PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF91bml0dGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF91
bml0dGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRp
b25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8
L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFS
SUFESUNfTUFYPTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwv
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWlu
aW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8
L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVk
RGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xl
dmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgor
ICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3Jt
YXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF91bml0dGVz
dC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1
YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+
CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlv
bkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09w
dGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFE
SUNfTUFYPTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZh
c3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0
aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVh
ZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwv
V2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFi
YXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAg
IDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURl
YnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVz
dF91bml0dGVzdC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNv
bnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4K
KyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztfQ09OU09M
RTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Cisg
ICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Cisg
ICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxX
YXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlv
bkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Cisg
ICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0
aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29u
c29sZTwvU3ViU3lzdGVtPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6
ZVJlZmVyZW5jZXM+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01E
QVRGb2xkaW5nPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGlu
ZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0
aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJy
YXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVs
MzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURh
dGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgor
ICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0
ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4K
KyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAg
ICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICA8
L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2MiPgorICAgICAgPE9w
dGltaXphdGlvbiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+TWluU3BhY2U8L09wdGltaXphdGlvbj4KKyAgICAgIDxPcHRpbWl6YXRpb24g
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5N
aW5TcGFjZTwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0
JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+RGVmYXVs
dDwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkRlZmF1bHQ8
L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgICA8
L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgICA8L1By
ZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPlByb2dyYW1E
YXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyI+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAg
IDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAg
ICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8
L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RS
ZWZlcmVuY2UgSW5jbHVkZT0iZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0
PnszYWY1NGM4YS0xMGJmLTQzMzItOTE0Ny1mNjhlZDk4NjIwMzN9PC9Qcm9qZWN0PgorICAgIDwv
UHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChW
Q1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBM
YWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjeHByb2ouZmlsdGVycyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC1tZC52Y3hwcm9qLmZp
bHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDQ3ZGFlNTEzZTg2MDE1M2E1Y2VjMmY0NWI0OGNkYmM3NWY5YjZj
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9n
dGVzdF91bml0dGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxOCBAQAor77u/PD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lv
bj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNi
dWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBG
aWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYt
MkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtj
O2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmls
dGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJ
ZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJ
ZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9F
eHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2MiPgor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAg
PC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0
LnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfdW5pdHRl
c3QudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzZhYmRlN2RhMTdlMjllZDI0NzZmNzBjNjk0MTVhZTk2
OGYyMWYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8y
MDEwL2d0ZXN0X3VuaXR0ZXN0LnZjeHByb2oKQEAgLTAsMCArMSwxODAgQEAKK++7vzw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0i
QnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0
LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVj
dENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVi
dWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+Cisg
ICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRp
b24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAg
ICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54
NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RD
b25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRp
b24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZv
cm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRp
b24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwv
Q29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJv
amVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJl
bD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPns0RDlGREZCNS05ODZBLTQxMzktODIzQy1G
NEVFMEVENDgxQTF9PC9Qcm9qZWN0R3VpZD4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdv
cmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1Bh
dGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIg
TGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlv
bjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJh
Y3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAg
PC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24i
PgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+
CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZv
cm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8
UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9u
VHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5N
dWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRm
b3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJD
b25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZp
Z3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+
CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVy
dHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5D
cHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgor
ICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRz
Ij4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRh
UGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlBy
b3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0i
TG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJl
eGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+Cisg
IDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0
PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENv
bmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9y
dEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3Bl
cnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVj
dEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUp
XCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChP
dXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVudGFs
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij50cnVlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0xpbmtJ
bmNyZW1lbnRhbD4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUp
XCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4k
KE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50
YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5mYWxz
ZTwvTGlua0luY3JlbWVudGFsPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0k
KENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFBy
b2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0
JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3Jt
KS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwk
KFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmlu
aXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJs
ZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtf
VkFSSUFESUNfTUFYPTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25z
KTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwv
TWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVj
a3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVh
ZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xl
dmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgor
ICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3Jt
YXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF91bml0dGVz
dC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1
YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+
CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlv
bkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09w
dGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFE
SUNfTUFYPTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZh
c3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0
aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVy
PlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2Fy
bmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNl
PC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxM
aW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVn
SW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF91
bml0dGVzdC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNv
bGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAg
PEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztfQ09OU09MRTsl
KFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAg
ICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8
UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5n
TGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1h
dD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9D
bENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRy
dWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwv
U3ViU3lzdGVtPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVy
ZW5jZXM+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xk
aW5nPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAg
ICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2
NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lO
MzI7X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11
bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVz
ZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2Fybmlu
Z0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9E
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5r
PgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5m
b3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxP
cHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPEVuYWJs
ZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICA8L0xpbms+Cisg
IDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2MiPgorICAgICAgPE9wdGltaXphdGlv
biBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+TWluU3BhY2U8L09wdGltaXphdGlvbj4KKyAgICAgIDxPcHRpbWl6YXRpb24gQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5NaW5TcGFjZTwv
T3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uOy4u
XGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Li47Li5c
aW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+RGVmYXVsdDwvQmFzaWNS
dW50aW1lQ2hlY2tzPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkRlZmF1bHQ8L0Jhc2ljUnVu
dGltZUNoZWNrcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgICA8L1ByZWNvbXBp
bGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgICA8L1ByZWNvbXBpbGVk
SGVhZGVyPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPlByb2dyYW1EYXRhYmFzZTwv
RGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0IENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+UHJv
Z3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21w
aWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29t
cGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8L0NsQ29tcGls
ZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2Ug
SW5jbHVkZT0iZ3Rlc3RfbWFpbi52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnszYWY1NGM4YS0x
MGJmLTQzMzItOTE0Ny1mNjhlZDk4NjIwMzJ9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVy
ZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRo
KVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5z
aW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8y
MDEwL2d0ZXN0X3VuaXR0ZXN0LnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDQ3ZGFlNTEzZTg2MDE1M2E1Y2VjMmY0NWI0OGNkYmM3NWY5YjZjZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC52Y3hw
cm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxOCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv
ZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDov
L3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1H
cm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVl
SWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVl
SWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7
YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5j
bHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04
OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4
dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmls
dGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2MiPgorICAgICAgPEZpbHRlcj5Tb3VyY2Ug
RmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2pl
Y3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvbXN2Yy9ndGVzdC1tZC52Y3hwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
MDA3OGU0YWFiNjkxNzEyYTEwM2MyZWI2M2VlN2RhYzFlZjQ5OWJlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21z
dmMvZ3Rlc3QtbWQudmN4cHJvagorKysgL2Rldi9udWxsCkBAIC0xLDM2MCArMCwwIEBACi3vu788
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRh
cmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjE0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5t
aWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SXRlbUdyb3VwIExhYmVs
PSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNs
dWRlPSJEZWJ1Z1N1ZmZpeHxXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Z1N1ZmZp
eDwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAg
PC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVk
ZT0iRGVidWdTdWZmaXh8eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnU3VmZml4PC9D
b25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9q
ZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVi
dWdfV2luQ2Fpcm98V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWdfV2luQ2Fpcm88
L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwv
UHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9
IkRlYnVnX1dpbkNhaXJvfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Z19XaW5DYWly
bzwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwv
UHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9
IkRlYnVnfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9u
PgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1
cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgot
ICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZv
cm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9q
ZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQcm9kdWN0aW9ufFdpbjMyIj4KLSAgICAgIDxDb25m
aWd1cmF0aW9uPlByb2R1Y3Rpb248L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2lu
MzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RD
b25maWd1cmF0aW9uIEluY2x1ZGU9IlByb2R1Y3Rpb258eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0
aW9uPlByb2R1Y3Rpb248L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0
Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJh
dGlvbiBJbmNsdWRlPSJSZWxlYXNlX1dpbkNhaXJvfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0
aW9uPlJlbGVhc2VfV2luQ2Fpcm88L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2lu
MzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RD
b25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2VfV2luQ2Fpcm98eDY0Ij4KLSAgICAgIDxDb25m
aWd1cmF0aW9uPlJlbGVhc2VfV2luQ2Fpcm88L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZv
cm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9q
ZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KLSAgICAgIDxDb25maWd1
cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1Bs
YXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1
cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVh
c2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8
L1Byb2plY3RDb25maWd1cmF0aW9uPgotICA8L0l0ZW1Hcm91cD4KLSAgPFByb3BlcnR5R3JvdXAg
TGFiZWw9Ikdsb2JhbHMiPgotICAgIDxQcm9qZWN0R3VpZD57QzhGNkMxNzItNTZGMi00RTc2LUI1
RkEtQzNCNDIzQjMxQkU4fTwvUHJvamVjdEd1aWQ+Ci0gICAgPFJvb3ROYW1lc3BhY2U+Z3Rlc3Qt
bWQ8L1Jvb3ROYW1lc3BhY2U+Ci0gICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgotICAg
IDxXaW5kb3dzVGFyZ2V0UGxhdGZvcm1WZXJzaW9uPjguMTwvV2luZG93c1RhcmdldFBsYXRmb3Jt
VmVyc2lvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJn
ZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRp
Y0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRl
PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xz
ZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1
cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJh
dGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAg
ICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdy
b3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+
Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBl
PgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRm
b3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29u
ZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENo
YXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0
PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBl
PlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVs
dGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9y
bVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciIExhYmVs
PSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwv
Q29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3Rl
clNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Q
cm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgot
ICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4K
LSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9y
bVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQ
cm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlw
ZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11
bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZv
cm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzIn
IiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xp
YnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9D
aGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+
Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIiBMYWJlbD0iQ29u
ZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZp
Z3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+
Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVy
dHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4K
LSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+
Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZv
cm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8
UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnU3VmZml4fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJh
dGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3Rl
clNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8
L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9
IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KLSAgPEltcG9ydEdyb3Vw
IExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChV
c2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRp
b249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2Vy
LnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+
Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRz
Ij4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRh
UGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRv
b2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
X1dpbkNhaXJvfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAg
PEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9u
LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciIExh
YmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3Rz
KCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIg
TGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChX
ZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBv
cnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0g
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRm
b3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2
c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4
NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249
ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnBy
b3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2pl
Y3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0g
IDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4K
LSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxh
dGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xz
XHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQn
IiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9v
dERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4
aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3Bz
JykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9
IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gIDwv
SW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hl
ZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBE
YXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMp
XHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1w
b3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z19XaW5DYWlyb3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJv
amVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3Bz
IiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8
SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24u
cHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyIgTGFiZWw9
IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJl
bD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktp
dF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICAgIDxJbXBvcnQg
UHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGRlYnVnc3VmZml4LnBy
b3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIiBMYWJlbD0iUHJv
cGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9z
b2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJM
b2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xp
YnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9q
ZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcZGVidWdzdWZmaXgucHJvcHMi
IC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9z
IiAvPgotICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQw
MjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXRE
aXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQn
Ij4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9P
dXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxp
YiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj4k
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXRE
aXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnU3VmZml4fFdpbjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj4kKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAg
PE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxp
YiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMy
JyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwv
T3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxs
aWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERp
cj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnx4NjQnIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Z3Rlc3QkKERlYnVn
U3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Z3Rlc3QkKERlYnVnU3VmZml4
KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj5ndGVzdCQoRGVidWdT
dWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj5ndGVzdCQoRGVi
dWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPmd0ZXN0JChEZWJ1
Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPmd0ZXN0JChEZWJ1Z1N1
ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8
L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXRO
YW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJn
ZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFy
Z2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFy
Z2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1Rhcmdl
dE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAg
IDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+
Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQ
cm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxw
cml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlw
dENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxQcmVj
b21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8QmFzaWNS
dW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICA8
L0NsQ29tcGlsZT4KLSAgICA8TGliPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpZ3Rlc3Qk
KERlYnVnU3VmZml4KS5saWI8L091dHB1dEZpbGU+Ci0gICAgPC9MaWI+Ci0gIDwvSXRlbURlZmlu
aXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAg
ICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNs
dWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hl
YWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAg
ICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25z
KTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0g
ICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFi
bGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAg
PExpYj4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKWd0ZXN0JChEZWJ1Z1N1ZmZpeCkubGli
PC9PdXRwdXRGaWxlPgotICAgIDwvTGliPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJ
dGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9w
dGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRl
ZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8
L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0
Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYj4K
LSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKWd0ZXN0LmxpYjwvT3V0cHV0RmlsZT4KLSAgICA8
L0xpYj4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJv
fHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9P
cHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2pl
Y3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZh
dGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5f
TElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4K
LSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4K
LSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0g
ICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNo
ZWNrcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliPgotICAgICAgPE91dHB1dEZpbGU+JChP
dXREaXIpZ3Rlc3QubGliPC9PdXRwdXRGaWxlPgotICAgIDwvTGliPgotICA8L0l0ZW1EZWZpbml0
aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj4KLSAgICA8Q2xDb21waWxl
PgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpciku
LlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2Fy
ZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmlu
aXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFk
ZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNr
cz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+
Ci0gICAgPExpYj4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKWd0ZXN0JChEZWJ1Z1N1ZmZp
eCkubGliPC9PdXRwdXRGaWxlPgotICAgIDwvTGliPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+
Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxP
cHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVkZTsk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJz
OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1By
ZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAg
PC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFz
dENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWI+
Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilndGVzdCQoRGVidWdTdWZmaXgpLmxpYjwvT3V0
cHV0RmlsZT4KLSAgICA8L0xpYj4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURl
ZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJl
Y29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFByZXBy
b2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPENsQ29t
cGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpciku
LjskKFByb2plY3REaXIpLi5cSW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNs
dWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZh
U2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVj
b21waWxlZEhlYWRlcj4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0Ns
Q29tcGlsZT4KLSAgICA8TGliIC8+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1E
ZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5c
SW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgot
ICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAg
ICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGli
IC8+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJv
fHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxp
bmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVjb21waWxlZEhl
YWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYiAvPgotICA8L0l0ZW1EZWZpbml0
aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+
Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQ
cm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxw
cml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlw
dENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGls
ZWRIZWFkZXI+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nl
c3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBp
bGU+Ci0gICAgPExpYiAvPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5p
dGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnx4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChD
b25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlY29t
cGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFByZXByb2Nl
c3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAgPC9JdGVt
RGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cc3JjXGd0ZXN0LWRlYXRoLXRlc3QuY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxzcmNcZ3Rlc3QtZmlsZXBhdGguY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxz
cmNcZ3Rlc3QtcG9ydC5jYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVz
dC10ZXN0LXBhcnQuY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3Qt
dHlwZWQtdGVzdC5jYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC5j
YyIgLz4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwu
aCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtZGVh
dGgtdGVzdC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxp
bnRlcm5hbFxndGVzdC1maWxlcGF0aC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
c3JjXGd0ZXN0LWludGVybmFsLWlubC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1pbnRlcm5hbC5oIiAvPgotICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC1tZXNzYWdlLmgiIC8+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LXBvcnQuaCIg
Lz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3Qtc3BpLmgi
IC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0
ZXN0LXN0cmluZy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVz
dFxndGVzdC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxn
dGVzdF9wcmVkX2ltcGwuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVc
Z3Rlc3RcZ3Rlc3RfcHJvZC5oIiAvPgotICA8L0l0ZW1Hcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0
PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KLSAgPEltcG9ydEdy
b3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KLSAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVj
dD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4
cHJvai5maWx0ZXJzIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3hw
cm9qLmZpbHRlcnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzN2QxYzliNGRjYTZh
MTRlYzcwNmJjNGE4YzEzMWY2YjVjODM4MDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52
Y3hwcm9qLmZpbHRlcnMKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi3vu788P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0
LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxk
LzIwMDMiPgotICA8SXRlbUdyb3VwPgotICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVz
Ij4KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMy
RDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgotICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y3h4
O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+Ci0gICAgPC9GaWx0ZXI+
Ci0gICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgotICAgICAgPFVuaXF1ZUlkZW50
aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50
aWZpZXI+Ci0gICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVu
c2lvbnM+Ci0gICAgPC9GaWx0ZXI+Ci0gIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LWRlYXRoLXRlc3QuY2MiPgotICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC1maWxlcGF0aC5jYyI+Ci0gICAgICA8RmlsdGVy
PlNvdXJjZSBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cc3JjXGd0ZXN0LXBvcnQuY2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmls
ZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHNyY1xndGVzdC10ZXN0LXBhcnQuY2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0Zp
bHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xn
dGVzdC10eXBlZC10ZXN0LmNjIj4KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+
Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3Qu
Y2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGls
ZT4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCI+
Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC1kZWF0aC10ZXN0
LmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVk
ZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rl
c3QtZmlsZXBhdGguaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAg
IDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LWludGVy
bmFsLWlubC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9D
bEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVy
bmFsXGd0ZXN0LWludGVybmFsLmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVc
Z3Rlc3RcZ3Rlc3QtbWVzc2FnZS5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0
ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRl
XGd0ZXN0XGludGVybmFsXGd0ZXN0LXBvcnQuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5jbHVkZVxndGVzdFxndGVzdC1zcGkuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwv
RmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5j
bHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1zdHJpbmcuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
PC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxp
bmNsdWRlXGd0ZXN0XGd0ZXN0X3ByZWRfaW1wbC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxpbmNsdWRlXGd0ZXN0XGd0ZXN0X3Byb2QuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9ydW5fdGVzdHMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9ydW5fdGVzdHMu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGUxMDg0MDU2ZTIzYmRkNWNmY2Y0NGYw
Njc2YzFkNjI4YWU2M2Q3NjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvcnVuX3Rlc3RzLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsNjAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdo
dCAyMDA4LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0j
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotIiIiUnVucyB0aGUgc3BlY2lmaWVkIHRlc3RzIGZvciBHb29nbGUgVGVzdC4KLQotVGhp
cyBzY3JpcHQgcmVxdWlyZXMgUHl0aG9uIDIuMyBvciBoaWdoZXIuICBUbyBsZWFybiB0aGUgdXNh
Z2UsIHJ1biBpdAotd2l0aCAtaC4KLSIiIgotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotU0NS
SVBUX0RJUiA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3IgJy4nCi0KLXN5cy5wYXRoLmFw
cGVuZChvcy5wYXRoLmpvaW4oU0NSSVBUX0RJUiwgJ3Rlc3QnKSkKLWltcG9ydCBydW5fdGVzdHNf
dXRpbAotCi0KLWRlZiBfTWFpbigpOgotICAiIiJSdW5zIGFsbCB0ZXN0cyBmb3IgR29vZ2xlIFRl
c3QuIiIiCi0KLSAgb3B0aW9ucywgYXJncyA9IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygnZ3Rl
c3QnKQotICB0ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5uZXIoc2NyaXB0X2Rp
cj1TQ1JJUFRfRElSKQotICB0ZXN0cyA9IHRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oYXJncywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuY29uZmlndXJhdGlv
bnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmJ1aWx0X2Nv
bmZpZ3VyYXRpb25zKQotICBpZiBub3QgdGVzdHM6Ci0gICAgc3lzLmV4aXQoMSkgICMgSW5jb3Jy
ZWN0IHBhcmFtZXRlcnMgZ2l2ZW4sIGFib3J0IGV4ZWN1dGlvbi4KLQotICBzeXMuZXhpdCh0ZXN0
X3J1bm5lci5SdW5UZXN0cyh0ZXN0c1swXSwgdGVzdHNbMV0pKQotCi1pZiBfX25hbWVfXyA9PSAn
X19tYWluX18nOgotICBfTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zYW1wbGVzL3ByaW1lX3RhYmxlcy5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxl
cy9wcmltZV90YWJsZXMuaAppbmRleCA5MmNlMTZhMDE0NGQ1MDJmZDBlNDViNzNmMzdkMzJiYmVk
ZjFjM2YzLi41MjNjNTBiOWFmYjFhMDkxOTE2ODA5NGQ3MWZkZjM3NmI2NGFmNmIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3ByaW1lX3RhYmxlcy5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvcHJpbWVfdGFibGVzLmgKQEAgLTI2LDkg
KzI2LDggQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLyBBdXRob3I6
IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCisKKwogCiAvLyBUaGlzIHByb3ZpZGVzIGlu
dGVyZmFjZSBQcmltZVRhYmxlIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgbnVtYmVyIGlzIGEK
IC8vIHByaW1lIGFuZCBkZXRlcm1pbmVzIGEgbmV4dCBwcmltZSBudW1iZXIuIFRoaXMgaW50ZXJm
YWNlIGlzIHVzZWQKQEAgLTEwMywxMSArMTAyLDE1IEBAIGNsYXNzIFByZUNhbGN1bGF0ZWRQcmlt
ZVRhYmxlIDogcHVibGljIFByaW1lVGFibGUgewogICAgIDo6c3RkOjpmaWxsKGlzX3ByaW1lXywg
aXNfcHJpbWVfICsgaXNfcHJpbWVfc2l6ZV8sIHRydWUpOwogICAgIGlzX3ByaW1lX1swXSA9IGlz
X3ByaW1lX1sxXSA9IGZhbHNlOwogCi0gICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gbWF4OyBpKysp
IHsKKyAgICAvLyBDaGVja3MgZXZlcnkgY2FuZGlkYXRlIGZvciBwcmltZSBudW1iZXIgKHdlIGtu
b3cgdGhhdCAyIGlzIHRoZSBvbmx5IGV2ZW4KKyAgICAvLyBwcmltZSkuCisgICAgZm9yIChpbnQg
aSA9IDI7IGkqaSA8PSBtYXg7IGkgKz0gaSUyKzEpIHsKICAgICAgIGlmICghaXNfcHJpbWVfW2ld
KSBjb250aW51ZTsKIAogICAgICAgLy8gTWFya3MgYWxsIG11bHRpcGxlcyBvZiBpIChleGNlcHQg
aSBpdHNlbGYpIGFzIG5vbi1wcmltZS4KLSAgICAgIGZvciAoaW50IGogPSAyKmk7IGogPD0gbWF4
OyBqICs9IGkpIHsKKyAgICAgIC8vIFdlIGFyZSBzdGFydGluZyBoZXJlIGZyb20gaS10aCBtdWx0
aXBsaWVyLCBiZWNhdXNlIGFsbCBzbWFsbGVyCisgICAgICAvLyBjb21wbGV4IG51bWJlcnMgd2Vy
ZSBhbHJlYWR5IG1hcmtlZC4KKyAgICAgIGZvciAoaW50IGogPSBpKmk7IGogPD0gbWF4OyBqICs9
IGkpIHsKICAgICAgICAgaXNfcHJpbWVfW2pdID0gZmFsc2U7CiAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmNjCmluZGV4IGYxNzFlMjYwOWQy
NTEzMjI4NDYyMWZiNjJjZjNiYTg2ZTFlNjk5MjUuLjEzY2VjMWQwZmJmYWJkYWFmMWM2YzQxYjFh
ODZiYzFkMDkwODk4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBs
ZXMvc2FtcGxlMS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBs
ZTEuY2MKQEAgLTI4LDggKzI4LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHBy
b2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgot
Ly8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAogI2luY2x1ZGUg
InNhbXBsZTEuaCIKIApAQCAtNTUsNyArNTMsNyBAQCBib29sIElzUHJpbWUoaW50IG4pIHsKIAog
ICAvLyBUcnkgdG8gZGl2aWRlIG4gYnkgZXZlcnkgb2RkIG51bWJlciBpLCBzdGFydGluZyBmcm9t
IDMKICAgZm9yIChpbnQgaSA9IDM7IDsgaSArPSAyKSB7Ci0gICAgLy8gV2Ugb25seSBoYXZlIHRv
IHRyeSBpIHVwIHRvIHRoZSBzcXVyZSByb290IG9mIG4KKyAgICAvLyBXZSBvbmx5IGhhdmUgdG8g
dHJ5IGkgdXAgdG8gdGhlIHNxdWFyZSByb290IG9mIG4KICAgICBpZiAoaSA+IG4vaSkgYnJlYWs7
CiAKICAgICAvLyBOb3csIHdlIGhhdmUgaSA8PSBuL2kgPCBuLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTEuaAppbmRleCAzZGZlYjk4YzQ1MDMwMTQ1ZjllYTE4ZDc5NTMx
YzkxYzgxZWU4NDlhLi4yYzNlOWYwNWYxYTEwYTQ0MjVmNzdiMjg3MTZlODA1OTY4MjE5NjFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEuaApAQCAtMjgsOCArMjgs
NiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5n
IHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCiAjaWZuZGVmIEdURVNUX1NBTVBMRVNfU0FNUExF
MV9IXwogI2RlZmluZSBHVEVTVF9TQU1QTEVTX1NBTVBMRTFfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjCmluZGV4IDNhZDZm
ZDY1MzgyNjE3ZjdkNmI0MDFmNGQxYmQ4M2ZjODZlZDg0ZmUuLjdjZTk1NTBmODgzYWEzNDJkMjVi
MDQ4NTkzZmFhOTZjYWJkOGUxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYwpAQCAtMjUsOCArMjUsNyBAQAogLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
dmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKwogCiAvLyBUaGlzIHNhbXBsZSBzaG93cyBo
b3cgdG8gdXNlIEdvb2dsZSBUZXN0IGxpc3RlbmVyIEFQSSB0byBpbXBsZW1lbnQKIC8vIGEgcHJp
bWl0aXZlIGxlYWsgY2hlY2tlci4KQEAgLTM0LDE5ICszMywxNiBAQAogI2luY2x1ZGUgPHN0ZGlv
Lmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIHVzaW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRM
aXN0ZW5lcjsKIHVzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7CiB1c2luZyA6OnRlc3Rp
bmc6OlRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RDYXNlOwogdXNpbmcgOjp0ZXN0aW5nOjpU
ZXN0RXZlbnRMaXN0ZW5lcnM7CiB1c2luZyA6OnRlc3Rpbmc6OlRlc3RJbmZvOwogdXNpbmcgOjp0
ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDsKIHVzaW5nIDo6dGVzdGluZzo6VW5pdFRlc3Q7CiAKIG5h
bWVzcGFjZSB7Ci0KIC8vIFdlIHdpbGwgdHJhY2sgbWVtb3J5IHVzZWQgYnkgdGhpcyBjbGFzcy4K
IGNsYXNzIFdhdGVyIHsKICBwdWJsaWM6CkBAIC04OSw4ICs4NSw3IEBAIGNsYXNzIExlYWtDaGVj
a2VyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewogICAgIC8vIFlvdSBjYW4gZ2Vu
ZXJhdGUgYSBmYWlsdXJlIGluIGFueSBldmVudCBoYW5kbGVyIGV4Y2VwdAogICAgIC8vIE9uVGVz
dFBhcnRSZXN1bHQuIEp1c3QgdXNlIGFuIGFwcHJvcHJpYXRlIEdvb2dsZSBUZXN0IGFzc2VydGlv
biB0byBkbwogICAgIC8vIGl0LgotICAgIEVYUEVDVF9UUlVFKGRpZmZlcmVuY2UgPD0gMCkKLSAg
ICAgICAgPDwgIkxlYWtlZCAiIDw8IGRpZmZlcmVuY2UgPDwgIiB1bml0KHMpIG9mIFdhdGVyISI7
CisgICAgRVhQRUNUX0xFKGRpZmZlcmVuY2UsIDApIDw8ICJMZWFrZWQgIiA8PCBkaWZmZXJlbmNl
IDw8ICIgdW5pdChzKSBvZiBXYXRlciEiOwogICB9CiAKICAgaW50IGluaXRpYWxseV9hbGxvY2F0
ZWRfOwpAQCAtMTA3LDcgKzEwMiw2IEBAIFRFU1QoTGlzdGVuZXJzVGVzdCwgTGVha3NXYXRlcikg
ewogICBXYXRlciogd2F0ZXIgPSBuZXcgV2F0ZXI7CiAgIEVYUEVDVF9UUlVFKHdhdGVyICE9IE5V
TEwpOwogfQotCiB9ICAvLyBuYW1lc3BhY2UKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiph
cmd2KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBs
ZTFfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTFf
dW5pdHRlc3QuY2MKaW5kZXggMDFlYjU0NjJmODFhZDU0YjM4YWM1ZWU2MzM3OTcyZWFhMDRkN2Fk
ZS4uY2IwOGI2MWE1OWE5ZTE2YjM2NTc4NjFmMWM5NjA5MDAxZDIwOTZiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYwpAQCAt
MjgsOSArMjgsNiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1v
bnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0
aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCiAKIC8vIFRoaXMgc2FtcGxlIHNo
b3dzIGhvdyB0byB3cml0ZSBhIHNpbXBsZSB1bml0IHRlc3QgZm9yIGEgZnVuY3Rpb24sCiAvLyB1
c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgpAQCAtNDUsOCArNDIsOCBAQAogCiAj
aW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSAic2FtcGxlMS5oIgotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+Ci0KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorbmFtZXNwYWNlIHsKIAogLy8g
U3RlcCAyLiBVc2UgdGhlIFRFU1QgbWFjcm8gdG8gZGVmaW5lIHlvdXIgdGVzdHMuCiAvLwpAQCAt
ODEsNyArNzgsNyBAQCBURVNUKEZhY3RvcmlhbFRlc3QsIE5lZ2F0aXZlKSB7CiAgIC8vIHRlc3Qg
Y2FzZS4KICAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgtNSkpOwogICBFWFBFQ1RfRVEoMSwgRmFj
dG9yaWFsKC0xKSk7Ci0gIEVYUEVDVF9UUlVFKEZhY3RvcmlhbCgtMTApID4gMCk7CisgIEVYUEVD
VF9HVChGYWN0b3JpYWwoLTEwKSwgMCk7CiAKICAgLy8gPFRlY2huaWNhbERldGFpbHM+CiAgIC8v
CkBAIC0xMzksNiArMTM2LDcgQEAgVEVTVChJc1ByaW1lVGVzdCwgUG9zaXRpdmUpIHsKICAgRVhQ
RUNUX0ZBTFNFKElzUHJpbWUoNikpOwogICBFWFBFQ1RfVFJVRShJc1ByaW1lKDIzKSk7CiB9Cit9
ICAvLyBuYW1lc3BhY2UKIAogLy8gU3RlcCAzLiBDYWxsIFJVTl9BTExfVEVTVFMoKSBpbiBtYWlu
KCkuCiAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1w
bGUyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUyLmNjCmluZGV4
IDVmNzYzYjliZGY4ZDdhYmMxM2M2MWM1NjgzMzFkMjFiOWZhNDk3NWQuLmYzYjcyMmZjYWNmZWVl
N2Q4OTBiMmQxZjE5YmM5NzQxNWVjYTQ5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9z
YW1wbGVzL3NhbXBsZTIuY2MKQEAgLTI4LDggKzI4LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8v
IEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3Rpbmcg
ZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikK
IAogI2luY2x1ZGUgInNhbXBsZTIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2FtcGxlcy9zYW1wbGUyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVz
L3NhbXBsZTIuaAppbmRleCA1YjU3ZTYwODJmYTRmNmI3MjRiZmI1ODI2ODdiZmUwYTYzMTlmMmE3
Li41OGYzNjBmNDVjNzY1OGMwMTk3ZTNmZmM2NWVjOGIzNzVmYjMzNmIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTIuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTIuaApAQCAtMjgsOCArMjgsNiBAQAogLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2ds
ZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAo
WmhhbnlvbmcgV2FuKQogCiAjaWZuZGVmIEdURVNUX1NBTVBMRVNfU0FNUExFMl9IXwogI2RlZmlu
ZSBHVEVTVF9TQU1QTEVTX1NBTVBMRTJfSF8KQEAgLTQ0LDcgKzQyLDYgQEAgY2xhc3MgTXlTdHJp
bmcgewogICBjb25zdCBNeVN0cmluZyYgb3BlcmF0b3I9KGNvbnN0IE15U3RyaW5nJiByaHMpOwog
CiAgcHVibGljOgotCiAgIC8vIENsb25lcyBhIDAtdGVybWluYXRlZCBDIHN0cmluZywgYWxsb2Nh
dGluZyBtZW1vcnkgdXNpbmcgbmV3LgogICBzdGF0aWMgY29uc3QgY2hhciogQ2xvbmVDU3RyaW5n
KGNvbnN0IGNoYXIqIGFfY19zdHJpbmcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2MKaW5kZXggMzIyMzJkOThjMGJkMjU0ODIx
YzhmNjkxYTZiODU1ZjFmMTYxNmZiOC4uMDg0ODgyNjE5MmNjNjZmY2I3OTA2ZWYyYzBhYWVmNjZh
Zjg0M2Y5MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1w
bGUyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2Ft
cGxlMl91bml0dGVzdC5jYwpAQCAtMjgsOSArMjgsNiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8g
QSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBm
cmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQot
CiAKIC8vIFRoaXMgc2FtcGxlIHNob3dzIGhvdyB0byB3cml0ZSBhIG1vcmUgY29tcGxleCB1bml0
IHRlc3QgZm9yIGEgY2xhc3MKIC8vIHRoYXQgaGFzIG11bHRpcGxlIG1lbWJlciBmdW5jdGlvbnMu
CkBAIC00MSw4ICszOCw4IEBACiAvLyBuZWVkZWQuCiAKICNpbmNsdWRlICJzYW1wbGUyLmgiCi0j
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCituYW1l
c3BhY2UgewogLy8gSW4gdGhpcyBleGFtcGxlLCB3ZSB0ZXN0IHRoZSBNeVN0cmluZyBjbGFzcyAo
YSBzaW1wbGUgc3RyaW5nKS4KIAogLy8gVGVzdHMgdGhlIGRlZmF1bHQgYyd0b3IuCkBAIC03OSw3
ICs3Niw3IEBAIGNvbnN0IGNoYXIga0hlbGxvU3RyaW5nW10gPSAiSGVsbG8sIHdvcmxkISI7CiAv
LyBUZXN0cyB0aGUgYyd0b3IgdGhhdCBhY2NlcHRzIGEgQyBzdHJpbmcuCiBURVNUKE15U3RyaW5n
LCBDb25zdHJ1Y3RvckZyb21DU3RyaW5nKSB7CiAgIGNvbnN0IE15U3RyaW5nIHMoa0hlbGxvU3Ry
aW5nKTsKLSAgRVhQRUNUX1RSVUUoc3RyY21wKHMuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSA9
PSAwKTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykp
OwogICBFWFBFQ1RfRVEoc2l6ZW9mKGtIZWxsb1N0cmluZykvc2l6ZW9mKGtIZWxsb1N0cmluZ1sw
XSkgLSAxLAogICAgICAgICAgICAgcy5MZW5ndGgoKSk7CiB9CkBAIC04OCw3ICs4NSw3IEBAIFRF
U1QoTXlTdHJpbmcsIENvbnN0cnVjdG9yRnJvbUNTdHJpbmcpIHsKIFRFU1QoTXlTdHJpbmcsIENv
cHlDb25zdHJ1Y3RvcikgewogICBjb25zdCBNeVN0cmluZyBzMShrSGVsbG9TdHJpbmcpOwogICBj
b25zdCBNeVN0cmluZyBzMiA9IHMxOwotICBFWFBFQ1RfVFJVRShzdHJjbXAoczIuY19zdHJpbmco
KSwga0hlbGxvU3RyaW5nKSA9PSAwKTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzMi5jX3N0cmlu
ZygpLCBrSGVsbG9TdHJpbmcpKTsKIH0KIAogLy8gVGVzdHMgdGhlIFNldCBtZXRob2QuCkBAIC05
NiwxNCArOTMsMTUgQEAgVEVTVChNeVN0cmluZywgU2V0KSB7CiAgIE15U3RyaW5nIHM7CiAKICAg
cy5TZXQoa0hlbGxvU3RyaW5nKTsKLSAgRVhQRUNUX1RSVUUoc3RyY21wKHMuY19zdHJpbmcoKSwg
a0hlbGxvU3RyaW5nKSA9PSAwKTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzLmNfc3RyaW5nKCks
IGtIZWxsb1N0cmluZykpOwogCiAgIC8vIFNldCBzaG91bGQgd29yayB3aGVuIHRoZSBpbnB1dCBw
b2ludGVyIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUKICAgLy8gYWxyZWFkeSBpbiB0aGUgTXlTdHJp
bmcgb2JqZWN0LgogICBzLlNldChzLmNfc3RyaW5nKCkpOwotICBFWFBFQ1RfVFJVRShzdHJjbXAo
cy5jX3N0cmluZygpLCBrSGVsbG9TdHJpbmcpID09IDApOworICBFWFBFQ1RfRVEoMCwgc3RyY21w
KHMuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSk7CiAKICAgLy8gQ2FuIHdlIHNldCB0aGUgTXlT
dHJpbmcgdG8gTlVMTD8KICAgcy5TZXQoTlVMTCk7CiAgIEVYUEVDVF9TVFJFUShOVUxMLCBzLmNf
c3RyaW5nKCkpOwogfQorfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTMtaW5sLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zYW1wbGVzL3NhbXBsZTMtaW5sLmgKaW5kZXggNDYzNjlhMDc2ZDg1YzQxMTQyM2FjYWE5OGRk
NDU1ZTU1OWVkMzAwYS4uMWEyOWNlOTI5NmE2NGRmZTk3YTlmN2ZkYzZkYTg2Mzg3ZGMwYjc1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzLWlubC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMy1pbmwuaApAQCAt
MjgsOCArMjgsNiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1v
bnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0
aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCiAjaWZuZGVmIEdURVNUX1NBTVBM
RVNfU0FNUExFM19JTkxfSF8KICNkZWZpbmUgR1RFU1RfU0FNUExFU19TQU1QTEUzX0lOTF9IXwpA
QCAtNjAsNyArNTgsNyBAQCBjbGFzcyBRdWV1ZU5vZGUgewogIHByaXZhdGU6CiAgIC8vIENyZWF0
ZXMgYSBub2RlIHdpdGggYSBnaXZlbiBlbGVtZW50IHZhbHVlLiAgVGhlIG5leHQgcG9pbnRlciBp
cwogICAvLyBzZXQgdG8gTlVMTC4KLSAgUXVldWVOb2RlKGNvbnN0IEUmIGFuX2VsZW1lbnQpIDog
ZWxlbWVudF8oYW5fZWxlbWVudCksIG5leHRfKE5VTEwpIHt9CisgIGV4cGxpY2l0IFF1ZXVlTm9k
ZShjb25zdCBFJiBhbl9lbGVtZW50KSA6IGVsZW1lbnRfKGFuX2VsZW1lbnQpLCBuZXh0XyhOVUxM
KSB7fQogCiAgIC8vIFdlIGRpc2FibGUgdGhlIGRlZmF1bHQgYXNzaWdubWVudCBvcGVyYXRvciBh
bmQgY29weSBjJ3Rvci4KICAgY29uc3QgUXVldWVOb2RlJiBvcGVyYXRvciA9IChjb25zdCBRdWV1
ZU5vZGUmKTsKQEAgLTcyLDggKzcwLDcgQEAgY2xhc3MgUXVldWVOb2RlIHsKIAogdGVtcGxhdGUg
PHR5cGVuYW1lIEU+ICAvLyBFIGlzIHRoZSBlbGVtZW50IHR5cGUuCiBjbGFzcyBRdWV1ZSB7Ci1w
dWJsaWM6Ci0KKyBwdWJsaWM6CiAgIC8vIENyZWF0ZXMgYW4gZW1wdHkgcXVldWUuCiAgIFF1ZXVl
KCkgOiBoZWFkXyhOVUxMKSwgbGFzdF8oTlVMTCksIHNpemVfKDApIHt9CiAKQEAgLTE2OCw2ICsx
NjUsNiBAQCBwdWJsaWM6CiAgIC8vIFdlIGRpc2FsbG93IGNvcHlpbmcgYSBxdWV1ZS4KICAgUXVl
dWUoY29uc3QgUXVldWUmKTsKICAgY29uc3QgUXVldWUmIG9wZXJhdG9yID0gKGNvbnN0IFF1ZXVl
Jik7Ci0gfTsKK307CiAKICNlbmRpZiAgLy8gR1RFU1RfU0FNUExFU19TQU1QTEUzX0lOTF9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0
LmNjCmluZGV4IDM0YzFjYTg2NTZlYWI1NjQxODE1NjBkYmYxNDlkMGEyYWE5MmNjMWQuLmUwOTNj
MjU4ODU3M2Y5NjI3MGE1ZWQ0MTI0NWFjN2U4OWY0ODUxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MKQEAgLTI4LDkgKzI4
LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGlu
ZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2Fu
QGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQogCiAvLyBJbiB0aGlzIGV4YW1wbGUsIHdlIHVz
ZSBhIG1vcmUgYWR2YW5jZWQgZmVhdHVyZSBvZiBHb29nbGUgVGVzdCBjYWxsZWQKIC8vIHRlc3Qg
Zml4dHVyZS4KQEAgLTY0LDE1ICs2MSwxNSBAQAogLy8gPC9UZWNobmljYWxEZXRhaWxzPgogCiAj
aW5jbHVkZSAic2FtcGxlMy1pbmwuaCIKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKK25hbWVzcGFjZSB7CiAvLyBUbyB1c2UgYSB0ZXN0IGZpeHR1
cmUsIGRlcml2ZSBhIGNsYXNzIGZyb20gdGVzdGluZzo6VGVzdC4KLWNsYXNzIFF1ZXVlVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIFF1ZXVlVGVzdFNtcGwzIDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgewogIHByb3RlY3RlZDogIC8vIFlvdSBzaG91bGQgbWFrZSB0aGUgbWVtYmVy
cyBwcm90ZWN0ZWQgcy50LiB0aGV5IGNhbiBiZQogICAgICAgICAgICAgIC8vIGFjY2Vzc2VkIGZy
b20gc3ViLWNsYXNzZXMuCiAKICAgLy8gdmlydHVhbCB2b2lkIFNldFVwKCkgd2lsbCBiZSBjYWxs
ZWQgYmVmb3JlIGVhY2ggdGVzdCBpcyBydW4uICBZb3UKLSAgLy8gc2hvdWxkIGRlZmluZSBpdCBp
ZiB5b3UgbmVlZCB0byBpbml0aWFsaXplIHRoZSB2YXJhaWJsZXMuCisgIC8vIHNob3VsZCBkZWZp
bmUgaXQgaWYgeW91IG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGUgdmFyaWFibGVzLgogICAvLyBPdGhl
cndpc2UsIHRoaXMgY2FuIGJlIHNraXBwZWQuCiAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKICAg
ICBxMV8uRW5xdWV1ZSgxKTsKQEAgLTEyMCwxMyArMTE3LDEzIEBAIGNsYXNzIFF1ZXVlVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIC8vIGluc3RlYWQgb2YgVEVTVC4KIAogLy8gVGVzdHMg
dGhlIGRlZmF1bHQgYyd0b3IuCi1URVNUX0YoUXVldWVUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3Ip
IHsKK1RFU1RfRihRdWV1ZVRlc3RTbXBsMywgRGVmYXVsdENvbnN0cnVjdG9yKSB7CiAgIC8vIFlv
dSBjYW4gYWNjZXNzIGRhdGEgaW4gdGhlIHRlc3QgZml4dHVyZSBoZXJlLgogICBFWFBFQ1RfRVEo
MHUsIHEwXy5TaXplKCkpOwogfQogCiAvLyBUZXN0cyBEZXF1ZXVlKCkuCi1URVNUX0YoUXVldWVU
ZXN0LCBEZXF1ZXVlKSB7CitURVNUX0YoUXVldWVUZXN0U21wbDMsIERlcXVldWUpIHsKICAgaW50
ICogbiA9IHEwXy5EZXF1ZXVlKCk7CiAgIEVYUEVDVF9UUlVFKG4gPT0gTlVMTCk7CiAKQEAgLTE0
NCw4ICsxNDEsOSBAQCBURVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVlKSB7CiB9CiAKIC8vIFRlc3Rz
IHRoZSBRdWV1ZTo6TWFwKCkgZnVuY3Rpb24uCi1URVNUX0YoUXVldWVUZXN0LCBNYXApIHsKK1RF
U1RfRihRdWV1ZVRlc3RTbXBsMywgTWFwKSB7CiAgIE1hcFRlc3RlcigmcTBfKTsKICAgTWFwVGVz
dGVyKCZxMV8pOwogICBNYXBUZXN0ZXIoJnEyXyk7CiB9Cit9ICAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNC5jYwppbmRleCBhZTQ0YmRhNmYxYmFk
NTNmZjNjNmYxNGUwMzAyYmQzYmIzMDljYmE3Li5iMGVlNjA5M2I0YTI1MGNmMTE5MzZjY2M4MjA4
YTYxMjI5MWI4MTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVz
L3NhbXBsZTQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0
LmNjCkBAIC0yOCw4ICsyOCw2IEBACiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAvLyBBIHNhbXBsZSBwcm9n
cmFtIGRlbW9uc3RyYXRpbmcgdXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8v
Ci0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAKICNpbmNsdWRlIDxz
dGRpby5oPgogCkBAIC00MCw2ICszOCwxNiBAQCBpbnQgQ291bnRlcjo6SW5jcmVtZW50KCkgewog
ICByZXR1cm4gY291bnRlcl8rKzsKIH0KIAorLy8gUmV0dXJucyB0aGUgY3VycmVudCBjb3VudGVy
IHZhbHVlLCBhbmQgZGVjcmVtZW50cyBpdC4KKy8vIGNvdW50ZXIgY2FuIG5vdCBiZSBsZXNzIHRo
YW4gMCwgcmV0dXJuIDAgaW4gdGhpcyBjYXNlCitpbnQgQ291bnRlcjo6RGVjcmVtZW50KCkgewor
ICBpZiAoY291bnRlcl8gPT0gMCkgeworICAgIHJldHVybiBjb3VudGVyXzsKKyAgfSBlbHNlICB7
CisgICAgcmV0dXJuIGNvdW50ZXJfLS07CisgIH0KK30KKwogLy8gUHJpbnRzIHRoZSBjdXJyZW50
IGNvdW50ZXIgdmFsdWUgdG8gU1RET1VULgogdm9pZCBDb3VudGVyOjpQcmludCgpIGNvbnN0IHsK
ICAgcHJpbnRmKCIlZCIsIGNvdW50ZXJfKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxl
cy9zYW1wbGU0LmgKaW5kZXggY2Q2MGYwZGQyZDE4NjA3MzdiN2YwZWE0NWM1Njc1YTNhOGVhNzIx
Zi4uZTI1NmY0MDY0ZmU5MWE3ZjAxYTk0NTUwZDMyYzNiYjExYjBhNGZmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0LmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0LmgKQEAgLTI4LDkgKzI4LDYgQEAKIC8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29n
bGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20g
KFpoYW55b25nIFdhbikKLQogI2lmbmRlZiBHVEVTVF9TQU1QTEVTX1NBTVBMRTRfSF8KICNkZWZp
bmUgR1RFU1RfU0FNUExFU19TQU1QTEU0X0hfCiAKQEAgLTQ2LDYgKzQzLDkgQEAgY2xhc3MgQ291
bnRlciB7CiAgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgY291bnRlciB2YWx1ZSwgYW5kIGluY3Jl
bWVudHMgaXQuCiAgIGludCBJbmNyZW1lbnQoKTsKIAorICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50
IGNvdW50ZXIgdmFsdWUsIGFuZCBkZWNyZW1lbnRzIGl0LgorICBpbnQgRGVjcmVtZW50KCk7CisK
ICAgLy8gUHJpbnRzIHRoZSBjdXJyZW50IGNvdW50ZXIgdmFsdWUgdG8gU1RET1VULgogICB2b2lk
IFByaW50KCkgY29uc3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGU0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ft
cGxlcy9zYW1wbGU0X3VuaXR0ZXN0LmNjCmluZGV4IGI0ZmIzNzM2YWJiZmY4M2Y3OWFmNDQ3Y2E0
YmM2YjkxMDU4NjkzMmUuLmQ1MTQ0YzBkMDBmNWM3NjAwNjkzZWEwMjU4MDJjMGQ3ZDUyNTBkMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNF91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTRfdW5p
dHRlc3QuY2MKQEAgLTI2LDIwICsyNiwyOCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKICNpbmNsdWRlICJzYW1wbGU0
LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAorbmFtZXNwYWNlIHsKIC8vIFRlc3RzIHRo
ZSBJbmNyZW1lbnQoKSBtZXRob2QuCisKIFRFU1QoQ291bnRlciwgSW5jcmVtZW50KSB7CiAgIENv
dW50ZXIgYzsKIAorICAvLyBUZXN0IHRoYXQgY291bnRlciAwIHJldHVybnMgMAorICBFWFBFQ1Rf
RVEoMCwgYy5EZWNyZW1lbnQoKSk7CisKICAgLy8gRVhQRUNUX0VRKCkgZXZhbHVhdGVzIGl0cyBh
cmd1bWVudHMgZXhhY3RseSBvbmNlLCBzbyB0aGV5CiAgIC8vIGNhbiBoYXZlIHNpZGUgZWZmZWN0
cy4KIAogICBFWFBFQ1RfRVEoMCwgYy5JbmNyZW1lbnQoKSk7CiAgIEVYUEVDVF9FUSgxLCBjLklu
Y3JlbWVudCgpKTsKICAgRVhQRUNUX0VRKDIsIGMuSW5jcmVtZW50KCkpOworCisgIEVYUEVDVF9F
USgzLCBjLkRlY3JlbWVudCgpKTsKIH0KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MKaW5kZXggNDlk
YWU3YzY5ZmE3NmU4YTQ4NjA3NzA2YjRhMTYyYzY0MmYwYTA4NS4uZDhhODc4OGM2ZDBmZGEyMzg2
NDZmZWEyOTBlMDk3Y2M3NjI3Nzg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYwpAQCAtMjYsOCArMjYsNyBAQAogLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUaGlzIHNhbXBsZSB0ZWFjaGVz
IGhvdyB0byByZXVzZSBhIHRlc3QgZml4dHVyZSBpbiBtdWx0aXBsZSB0ZXN0CiAvLyBjYXNlcyBi
eSBkZXJpdmluZyBzdWItZml4dHVyZXMgZnJvbSBpdC4KQEAgLTQ2LDEwICs0NSwxMCBAQAogCiAj
aW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8dGltZS5oPgotI2luY2x1ZGUgInNhbXBsZTMt
aW5sLmgiCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgogI2luY2x1ZGUgInNhbXBsZTEuaCIKLQorI2luY2x1ZGUgInNhbXBsZTMtaW5sLmgiCituYW1l
c3BhY2UgewogLy8gSW4gdGhpcyBzYW1wbGUsIHdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgZXZlcnkg
dGVzdCBmaW5pc2hlcyB3aXRoaW4KIC8vIH41IHNlY29uZHMuICBJZiBhIHRlc3QgdGFrZXMgbG9u
Z2VyIHRvIHJ1biwgd2UgY29uc2lkZXIgaXQgYQogLy8gZmFpbHVyZS4KQEAgLTEwMSw3ICsxMDAs
NyBAQCBURVNUX0YoSW50ZWdlckZ1bmN0aW9uVGVzdCwgRmFjdG9yaWFsKSB7CiAgIC8vIFRlc3Rz
IGZhY3RvcmlhbCBvZiBuZWdhdGl2ZSBudW1iZXJzLgogICBFWFBFQ1RfRVEoMSwgRmFjdG9yaWFs
KC01KSk7CiAgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoLTEpKTsKLSAgRVhQRUNUX1RSVUUoRmFj
dG9yaWFsKC0xMCkgPiAwKTsKKyAgRVhQRUNUX0dUKEZhY3RvcmlhbCgtMTApLCAwKTsKIAogICAv
LyBUZXN0cyBmYWN0b3JpYWwgb2YgMC4KICAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgwKSk7CkBA
IC0xMTcsMjAgKzExNiwyMCBAQCBURVNUX0YoSW50ZWdlckZ1bmN0aW9uVGVzdCwgRmFjdG9yaWFs
KSB7CiAvLyBUZXN0cyBJc1ByaW1lKCkKIFRFU1RfRihJbnRlZ2VyRnVuY3Rpb25UZXN0LCBJc1By
aW1lKSB7CiAgIC8vIFRlc3RzIG5lZ2F0aXZlIGlucHV0LgotICBFWFBFQ1RfVFJVRSghSXNQcmlt
ZSgtMSkpOwotICBFWFBFQ1RfVFJVRSghSXNQcmltZSgtMikpOwotICBFWFBFQ1RfVFJVRSghSXNQ
cmltZShJTlRfTUlOKSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKC0xKSk7CisgIEVYUEVDVF9G
QUxTRShJc1ByaW1lKC0yKSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKElOVF9NSU4pKTsKIAog
ICAvLyBUZXN0cyBzb21lIHRyaXZpYWwgY2FzZXMuCi0gIEVYUEVDVF9UUlVFKCFJc1ByaW1lKDAp
KTsKLSAgRVhQRUNUX1RSVUUoIUlzUHJpbWUoMSkpOworICBFWFBFQ1RfRkFMU0UoSXNQcmltZSgw
KSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKDEpKTsKICAgRVhQRUNUX1RSVUUoSXNQcmltZSgy
KSk7CiAgIEVYUEVDVF9UUlVFKElzUHJpbWUoMykpOwogCiAgIC8vIFRlc3RzIHBvc2l0aXZlIGlu
cHV0LgotICBFWFBFQ1RfVFJVRSghSXNQcmltZSg0KSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1l
KDQpKTsKICAgRVhQRUNUX1RSVUUoSXNQcmltZSg1KSk7Ci0gIEVYUEVDVF9UUlVFKCFJc1ByaW1l
KDYpKTsKKyAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoNikpOwogICBFWFBFQ1RfVFJVRShJc1ByaW1l
KDIzKSk7CiB9CiAKQEAgLTE5MSw3ICsxOTAsNyBAQCBURVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVl
KSB7CiAgIEVYUEVDVF9FUSgxdSwgcTJfLlNpemUoKSk7CiAgIGRlbGV0ZSBuOwogfQotCit9ICAv
LyBuYW1lc3BhY2UKIC8vIElmIG5lY2Vzc2FyeSwgeW91IGNhbiBkZXJpdmUgZnVydGhlciB0ZXN0
IGZpeHR1cmVzIGZyb20gYSBkZXJpdmVkCiAvLyBmaXh0dXJlIGl0c2VsZi4gIEZvciBleGFtcGxl
LCB5b3UgY2FuIGRlcml2ZSBhbm90aGVyIGZpeHR1cmUgZnJvbQogLy8gUXVldWVUZXN0LiAgR29v
Z2xlIFRlc3QgaW1wb3NlcyBubyBsaW1pdCBvbiBob3cgZGVlcCB0aGUgaGllcmFyY2h5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2MK
aW5kZXggZGQwZGYzMWYwYmI3Y2JmMjYxNjA3MzQyZTg2NDA0ZDc1YTg1MzQzZS4uZGRmMmYxYzEz
YmJlMDM0ODEzNDQ5MzZiMGE3MmRiYjJhMGIyODQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYwpAQCAtMjYsOCArMjYsNyBA
QAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8v
IEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUaGlzIHNhbXBs
ZSBzaG93cyBob3cgdG8gdGVzdCBjb21tb24gcHJvcGVydGllcyBvZiBtdWx0aXBsZQogLy8gaW1w
bGVtZW50YXRpb25zIG9mIHRoZSBzYW1lIGludGVyZmFjZSAoYWthIGludGVyZmFjZSB0ZXN0cyku
CkBAIC0zNSw4ICszNCw4IEBACiAvLyBUaGUgaW50ZXJmYWNlIGFuZCBpdHMgaW1wbGVtZW50YXRp
b25zIGFyZSBpbiB0aGlzIGhlYWRlci4KICNpbmNsdWRlICJwcmltZV90YWJsZXMuaCIKIAotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorbmFtZXNw
YWNlIHsKIC8vIEZpcnN0LCB3ZSBkZWZpbmUgc29tZSBmYWN0b3J5IGZ1bmN0aW9ucyBmb3IgY3Jl
YXRpbmcgaW5zdGFuY2VzIG9mCiAvLyB0aGUgaW1wbGVtZW50YXRpb25zLiAgWW91IG1heSBiZSBh
YmxlIHRvIHNraXAgdGhpcyBzdGVwIGlmIGFsbCB5b3VyCiAvLyBpbXBsZW1lbnRhdGlvbnMgY2Fu
IGJlIGNvbnN0cnVjdGVkIHRoZSBzYW1lIHdheS4KQEAgLTIyMiwzICsyMjEsNCBAQCBJTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChPblRoZUZseUFuZFByZUNhbGN1bGF0ZWQsICAgIC8vIElu
c3RhbmNlIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1lVGFibGVJbXBs
ZW1lbnRhdGlvbnMpOyAgLy8gVHlwZSBsaXN0CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVE
X1RFU1RfUAorfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MKaW5kZXggZjQ1NTI4MjdlZDliODMwNmNkZDMx
OWFhNTdmM2VkMDY3NjJiNGY1Zi4uYzFhZThiZGVkYzlhZmM5YTExZDBkOTIwMjFlZjc2NzdkMzk4
YTljOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU3
X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxl
N191bml0dGVzdC5jYwpAQCAtMjYsOCArMjYsNyBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAo
VmxhZCBMb3NldikKKwogCiAvLyBUaGlzIHNhbXBsZSBzaG93cyBob3cgdG8gdGVzdCBjb21tb24g
cHJvcGVydGllcyBvZiBtdWx0aXBsZQogLy8gaW1wbGVtZW50YXRpb25zIG9mIGFuIGludGVyZmFj
ZSAoYWthIGludGVyZmFjZSB0ZXN0cykgdXNpbmcKQEAgLTM4LDE5ICszNywxNyBAQAogLy8gVGhl
IGludGVyZmFjZSBhbmQgaXRzIGltcGxlbWVudGF0aW9ucyBhcmUgaW4gdGhpcyBoZWFkZXIuCiAj
aW5jbHVkZSAicHJpbWVfdGFibGVzLmgiCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0j
aWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorbmFtZXNw
YWNlIHsKIAogdXNpbmcgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtOwogdXNpbmcgOjp0ZXN0aW5n
OjpWYWx1ZXM7CiAKLS8vIEFzIGEgZ2VuZXJhbCBydWxlLCB0ZXN0ZWQgb2JqZWN0cyBzaG91bGQg
bm90IGJlIHJldXNlZCBiZXR3ZWVuIHRlc3RzLgotLy8gQWxzbywgdGhlaXIgY29uc3RydWN0b3Jz
IGFuZCBkZXN0cnVjdG9ycyBvZiB0ZXN0ZWQgb2JqZWN0cyBjYW4gaGF2ZQotLy8gc2lkZSBlZmZl
Y3RzLiBUaHVzIHlvdSBzaG91bGQgY3JlYXRlIGFuZCBkZXN0cm95IHRoZW0gZm9yIGVhY2ggdGVz
dC4KLS8vIEluIHRoaXMgc2FtcGxlIHdlIHdpbGwgZGVmaW5lIGEgc2ltcGxlIGZhY3RvcnkgZnVu
Y3Rpb24gZm9yIFByaW1lVGFibGUKLS8vIG9iamVjdHMuIFdlIHdpbGwgaW5zdGFudGlhdGUgb2Jq
ZWN0cyBpbiB0ZXN0J3MgU2V0VXAoKSBtZXRob2QgYW5kCi0vLyBkZWxldGUgdGhlbSBpbiBUZWFy
RG93bigpIG1ldGhvZC4KKy8vIEFzIGEgZ2VuZXJhbCBydWxlLCB0byBwcmV2ZW50IGEgdGVzdCBm
cm9tIGFmZmVjdGluZyB0aGUgdGVzdHMgdGhhdCBjb21lCisvLyBhZnRlciBpdCwgeW91IHNob3Vs
ZCBjcmVhdGUgYW5kIGRlc3Ryb3kgdGhlIHRlc3RlZCBvYmplY3RzIGZvciBlYWNoIHRlc3QKKy8v
IGluc3RlYWQgb2YgcmV1c2luZyB0aGVtLiAgSW4gdGhpcyBzYW1wbGUgd2Ugd2lsbCBkZWZpbmUg
YSBzaW1wbGUgZmFjdG9yeQorLy8gZnVuY3Rpb24gZm9yIFByaW1lVGFibGUgb2JqZWN0cy4gIFdl
IHdpbGwgaW5zdGFudGlhdGUgb2JqZWN0cyBpbiB0ZXN0J3MKKy8vIFNldFVwKCkgbWV0aG9kIGFu
ZCBkZWxldGUgdGhlbSBpbiBUZWFyRG93bigpIG1ldGhvZC4KIHR5cGVkZWYgUHJpbWVUYWJsZSog
Q3JlYXRlUHJpbWVUYWJsZUZ1bmMoKTsKIAogUHJpbWVUYWJsZSogQ3JlYXRlT25UaGVGbHlQcmlt
ZVRhYmxlKCkgewpAQCAtNjIsMTQgKzU5LDEzIEBAIFByaW1lVGFibGUqIENyZWF0ZVByZUNhbGN1
bGF0ZWRQcmltZVRhYmxlKCkgewogICByZXR1cm4gbmV3IFByZUNhbGN1bGF0ZWRQcmltZVRhYmxl
KG1heF9wcmVjYWxjdWxhdGVkKTsKIH0KIAotLy8gSW5zaWRlIHRoZSB0ZXN0IGJvZHksIGZpeHR1
cmUgY29uc3RydWN0b3IsIFNldFVwKCksIGFuZCBUZWFyRG93bigpCi0vLyB5b3UgY2FuIHJlZmVy
IHRvIHRoZSB0ZXN0IHBhcmFtZXRlciBieSBHZXRQYXJhbSgpLgotLy8gSW4gdGhpcyBjYXNlLCB0
aGUgdGVzdCBwYXJhbWV0ZXIgaXMgYSBQcmltZVRhYmxlRmFjdG9yeSBpbnRlcmZhY2UgcG9pbnRl
cgotLy8gd2hpY2ggd2UgdXNlIGluIGZpeHR1cmUncyBTZXRVcCgpIHRvIGNyZWF0ZSBhbmQgc3Rv
cmUgYW4gaW5zdGFuY2Ugb2YKLS8vIFByaW1lVGFibGUuCi1jbGFzcyBQcmltZVRhYmxlVGVzdCA6
IHB1YmxpYyBUZXN0V2l0aFBhcmFtPENyZWF0ZVByaW1lVGFibGVGdW5jKj4geworLy8gSW5zaWRl
IHRoZSB0ZXN0IGJvZHksIGZpeHR1cmUgY29uc3RydWN0b3IsIFNldFVwKCksIGFuZCBUZWFyRG93
bigpIHlvdQorLy8gY2FuIHJlZmVyIHRvIHRoZSB0ZXN0IHBhcmFtZXRlciBieSBHZXRQYXJhbSgp
LiAgSW4gdGhpcyBjYXNlLCB0aGUgdGVzdAorLy8gcGFyYW1ldGVyIGlzIGEgZmFjdG9yeSBmdW5j
dGlvbiB3aGljaCB3ZSBjYWxsIGluIGZpeHR1cmUncyBTZXRVcCgpIHRvCisvLyBjcmVhdGUgYW5k
IHN0b3JlIGFuIGluc3RhbmNlIG9mIFByaW1lVGFibGUuCitjbGFzcyBQcmltZVRhYmxlVGVzdFNt
cGw3IDogcHVibGljIFRlc3RXaXRoUGFyYW08Q3JlYXRlUHJpbWVUYWJsZUZ1bmMqPiB7CiAgcHVi
bGljOgotICB2aXJ0dWFsIH5QcmltZVRhYmxlVGVzdCgpIHsgZGVsZXRlIHRhYmxlXzsgfQorICB2
aXJ0dWFsIH5QcmltZVRhYmxlVGVzdFNtcGw3KCkgeyBkZWxldGUgdGFibGVfOyB9CiAgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsgdGFibGVfID0gKCpHZXRQYXJhbSgpKSgpOyB9CiAgIHZpcnR1YWwg
dm9pZCBUZWFyRG93bigpIHsKICAgICBkZWxldGUgdGFibGVfOwpAQCAtODAsNyArNzYsNyBAQCBj
bGFzcyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPENyZWF0ZVByaW1lVGFi
bGVGdW5jKj4gewogICBQcmltZVRhYmxlKiB0YWJsZV87CiB9OwogCi1URVNUX1AoUHJpbWVUYWJs
ZVRlc3QsIFJldHVybnNGYWxzZUZvck5vblByaW1lcykgeworVEVTVF9QKFByaW1lVGFibGVUZXN0
U21wbDcsIFJldHVybnNGYWxzZUZvck5vblByaW1lcykgewogICBFWFBFQ1RfRkFMU0UodGFibGVf
LT5Jc1ByaW1lKC01KSk7CiAgIEVYUEVDVF9GQUxTRSh0YWJsZV8tPklzUHJpbWUoMCkpOwogICBF
WFBFQ1RfRkFMU0UodGFibGVfLT5Jc1ByaW1lKDEpKTsKQEAgLTg5LDcgKzg1LDcgQEAgVEVTVF9Q
KFByaW1lVGFibGVUZXN0LCBSZXR1cm5zRmFsc2VGb3JOb25QcmltZXMpIHsKICAgRVhQRUNUX0ZB
TFNFKHRhYmxlXy0+SXNQcmltZSgxMDApKTsKIH0KIAotVEVTVF9QKFByaW1lVGFibGVUZXN0LCBS
ZXR1cm5zVHJ1ZUZvclByaW1lcykgeworVEVTVF9QKFByaW1lVGFibGVUZXN0U21wbDcsIFJldHVy
bnNUcnVlRm9yUHJpbWVzKSB7CiAgIEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSgyKSk7CiAg
IEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSgzKSk7CiAgIEVYUEVDVF9UUlVFKHRhYmxlXy0+
SXNQcmltZSg1KSk7CkBAIC05OCw3ICs5NCw3IEBAIFRFU1RfUChQcmltZVRhYmxlVGVzdCwgUmV0
dXJuc1RydWVGb3JQcmltZXMpIHsKICAgRVhQRUNUX1RSVUUodGFibGVfLT5Jc1ByaW1lKDEzMSkp
OwogfQogCi1URVNUX1AoUHJpbWVUYWJsZVRlc3QsIENhbkdldE5leHRQcmltZSkgeworVEVTVF9Q
KFByaW1lVGFibGVUZXN0U21wbDcsIENhbkdldE5leHRQcmltZSkgewogICBFWFBFQ1RfRVEoMiwg
dGFibGVfLT5HZXROZXh0UHJpbWUoMCkpOwogICBFWFBFQ1RfRVEoMywgdGFibGVfLT5HZXROZXh0
UHJpbWUoMikpOwogICBFWFBFQ1RfRVEoNSwgdGFibGVfLT5HZXROZXh0UHJpbWUoMykpOwpAQCAt
MTE0LDE5ICsxMTAsOCBAQCBURVNUX1AoUHJpbWVUYWJsZVRlc3QsIENhbkdldE5leHRQcmltZSkg
ewogLy8KIC8vIEhlcmUsIHdlIGluc3RhbnRpYXRlIG91ciB0ZXN0cyB3aXRoIGEgbGlzdCBvZiB0
d28gUHJpbWVUYWJsZSBvYmplY3QKIC8vIGZhY3RvcnkgZnVuY3Rpb25zOgotSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoCi0gICAgT25UaGVGbHlBbmRQcmVDYWxjdWxhdGVkLAotICAgIFByaW1lVGFi
bGVUZXN0LAotICAgIFZhbHVlcygmQ3JlYXRlT25UaGVGbHlQcmltZVRhYmxlLCAmQ3JlYXRlUHJl
Q2FsY3VsYXRlZFByaW1lVGFibGU8MTAwMD4pKTsKLQotI2Vsc2UKLQotLy8gR29vZ2xlIFRlc3Qg
bWF5IG5vdCBzdXBwb3J0IHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgd2l0aCBzb21lCi0vLyBj
b21waWxlcnMuIElmIHdlIHVzZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBjb21waWxlIG91
dCBhbGwKLS8vIGNvZGUgcmVmZXJyaW5nIHRvIHRoZSBndGVzdF9tYWluIGxpYnJhcnksIE1TVkMg
bGlua2VyIHdpbGwgbm90IGxpbmsKLS8vIHRoYXQgbGlicmFyeSBhdCBhbGwgYW5kIGNvbnNlcXVl
bnRseSBjb21wbGFpbiBhYm91dCBtaXNzaW5nIGVudHJ5Ci0vLyBwb2ludCBkZWZpbmVkIGluIHRo
YXQgbGlicmFyeSAoZmF0YWwgZXJyb3IgTE5LMTU2MTogZW50cnkgcG9pbnQKLS8vIG11c3QgYmUg
ZGVmaW5lZCkuIFRoaXMgZHVtbXkgdGVzdCBrZWVwcyBndGVzdF9tYWluIGxpbmtlZCBpbi4KLVRF
U1QoRHVtbXlUZXN0LCBWYWx1ZVBhcmFtZXRlcml6ZWRUZXN0c0FyZU5vdFN1cHBvcnRlZE9uVGhp
c1BsYXRmb3JtKSB7fQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoT25UaGVGbHlBbmRQcmVDYWxj
dWxhdGVkLCBQcmltZVRhYmxlVGVzdFNtcGw3LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFs
dWVzKCZDcmVhdGVPblRoZUZseVByaW1lVGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJkNyZWF0ZVByZUNhbGN1bGF0ZWRQcmltZVRhYmxlPDEwMDA+KSk7CiAKLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjCmluZGV4IGNjZjYx
ZDkyYjg1YzMxMmY3ZjJlYzJmNmQ4YTY3M2RmZjRiMDJkNjYuLmNlNzVjZjAzMDg3MGMzNzZkZmVj
NjAzMWRiMjQ3MTEwODcwMzgzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2MKQEAgLTI2LDggKzI2LDcgQEAKIC8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZs
YWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCisKIAogLy8gVGhpcyBzYW1wbGUgc2hvd3MgaG93
IHRvIHRlc3QgY29kZSByZWx5aW5nIG9uIHNvbWUgZ2xvYmFsIGZsYWcgdmFyaWFibGVzLgogLy8g
Q29tYmluZSgpIGhlbHBzIHdpdGggZ2VuZXJhdGluZyBhbGwgcG9zc2libGUgY29tYmluYXRpb25z
IG9mIHN1Y2ggZmxhZ3MsCkBAIC0zNiw4ICszNSw4IEBACiAvLyBVc2UgY2xhc3MgZGVmaW5pdGlv
bnMgdG8gdGVzdCBmcm9tIHRoaXMgaGVhZGVyLgogI2luY2x1ZGUgInByaW1lX3RhYmxlcy5oIgog
Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCitu
YW1lc3BhY2UgewogI2lmIEdURVNUX0hBU19DT01CSU5FCiAKIC8vIFN1cHBvc2Ugd2Ugd2FudCB0
byBpbnRyb2R1Y2UgYSBuZXcsIGltcHJvdmVkIGltcGxlbWVudGF0aW9uIG9mIFByaW1lVGFibGUK
QEAgLTkwLDcgKzg5LDcgQEAgdXNpbmcgOjp0ZXN0aW5nOjpDb21iaW5lOwogLy8gUHJlQ2FsY3Vs
YXRlZFByaW1lVGFibGUgZGlzYWJsZWQuIFdlIGRvIHRoaXMgYnkgZGVmaW5pbmcgZml4dHVyZSB3
aGljaCB3aWxsCiAvLyBhY2NlcHQgZGlmZmVyZW50IGNvbWJpbmF0aW9ucyBvZiBwYXJhbWV0ZXJz
IGZvciBpbnN0YW50aWF0aW5nIGEKIC8vIEh5YnJpZFByaW1lVGFibGUgaW5zdGFuY2UuCi1jbGFz
cyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPCA6OnN0ZDo6dHIxOjp0dXBs
ZTxib29sLCBpbnQ+ID4geworY2xhc3MgUHJpbWVUYWJsZVRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQ
YXJhbTwgOjp0ZXN0aW5nOjp0dXBsZTxib29sLCBpbnQ+ID4gewogIHByb3RlY3RlZDoKICAgdmly
dHVhbCB2b2lkIFNldFVwKCkgewogICAgIC8vIFRoaXMgY2FuIGJlIHdyaXR0ZW4gYXMKQEAgLTEw
MSw4ICsxMDAsOCBAQCBjbGFzcyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFt
PCA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQ+ID4gewogICAgIC8vCiAgICAgLy8gb25jZSB0
aGUgR29vZ2xlIEMrKyBTdHlsZSBHdWlkZSBhbGxvd3MgdXNlIG9mIDo6c3RkOjp0cjE6OnRpZS4K
ICAgICAvLwotICAgIGJvb2wgZm9yY2Vfb25fdGhlX2ZseSA9IDo6c3RkOjp0cjE6OmdldDwwPihH
ZXRQYXJhbSgpKTsKLSAgICBpbnQgbWF4X3ByZWNhbGN1bGF0ZWQgPSA6OnN0ZDo6dHIxOjpnZXQ8
MT4oR2V0UGFyYW0oKSk7CisgICAgYm9vbCBmb3JjZV9vbl90aGVfZmx5ID0gOjp0ZXN0aW5nOjpn
ZXQ8MD4oR2V0UGFyYW0oKSk7CisgICAgaW50IG1heF9wcmVjYWxjdWxhdGVkID0gOjp0ZXN0aW5n
OjpnZXQ8MT4oR2V0UGFyYW0oKSk7CiAgICAgdGFibGVfID0gbmV3IEh5YnJpZFByaW1lVGFibGUo
Zm9yY2Vfb25fdGhlX2ZseSwgbWF4X3ByZWNhbGN1bGF0ZWQpOwogICB9CiAgIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsKQEAgLTE3MSwzICsxNzAsNCBAQCBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UChNZWFuaW5nZnVsVGVzdFBhcmFtZXRlcnMsCiBURVNUKER1bW15VGVzdCwgQ29tYmluZUlzTm90
U3VwcG9ydGVkT25UaGlzUGxhdGZvcm0pIHt9CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJ
TkUKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ft
cGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjCmluZGV4IGQ4MjhlZjRkODZiNzQ2YjI1Njk3YmRkNDZk
MjEwMGE0NDYxNDJkMzEuLjUzZjlhZjViYTFkZmMyNjk1NjYwNzhmMjM2ZjY5NTU5OWRjNTJhZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlOV91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTlfdW5p
dHRlc3QuY2MKQEAgLTI1LDggKzI1LDcgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQg
TG9zZXYpCisKIAogLy8gVGhpcyBzYW1wbGUgc2hvd3MgaG93IHRvIHVzZSBHb29nbGUgVGVzdCBs
aXN0ZW5lciBBUEkgdG8gaW1wbGVtZW50CiAvLyBhbiBhbHRlcm5hdGl2ZSBjb25zb2xlIG91dHB1
dCBhbmQgaG93IHRvIHVzZSB0aGUgVW5pdFRlc3QgcmVmbGVjdGlvbiBBUEkKQEAgLTM0LDcgKzMz
LDcgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIHVzaW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZl
bnRMaXN0ZW5lcjsKIHVzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7CkBAIC00NCw5ICs0
Myw3IEBAIHVzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzOwogdXNpbmcgOjp0ZXN0
aW5nOjpUZXN0SW5mbzsKIHVzaW5nIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ7CiB1c2luZyA6
OnRlc3Rpbmc6OlVuaXRUZXN0OwotCiBuYW1lc3BhY2UgewotCiAvLyBQcm92aWRlcyBhbHRlcm5h
dGl2ZSBvdXRwdXQgbW9kZSB3aGljaCBwcm9kdWNlcyBtaW5pbWFsIGFtb3VudCBvZgogLy8gaW5m
b3JtYXRpb24gYWJvdXQgdGVzdHMuCiBjbGFzcyBUZXJzZVByaW50ZXIgOiBwdWJsaWMgRW1wdHlU
ZXN0RXZlbnRMaXN0ZW5lciB7CkBAIC02OSw3ICs2Niw3IEBAIGNsYXNzIFRlcnNlUHJpbnRlciA6
IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKICAgICBmZmx1c2goc3Rkb3V0KTsKICAg
fQogCi0gIC8vIENhbGxlZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRVNTKCku
CisgIC8vIENhbGxlZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRUVEKCkgaW52
b2NhdGlvbi4KICAgdmlydHVhbCB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRS
ZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKICAgICBmcHJpbnRmKHN0ZG91dCwKICAgICAgICAg
ICAgICIlcyBpbiAlczolZFxuJXNcbiIsCkBAIC0xMDIsNyArOTksNiBAQCBURVNUKEN1c3RvbU91
dHB1dFRlc3QsIEZhaWxzKSB7CiAgIEVYUEVDVF9FUSgxLCAyKQogICAgICAgPDwgIlRoaXMgdGVz
dCBmYWlscyBpbiBvcmRlciB0byBkZW1vbnN0cmF0ZSBhbHRlcm5hdGl2ZSBmYWlsdXJlIG1lc3Nh
Z2VzIjsKIH0KLQogfSAgLy8gbmFtZXNwYWNlCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoq
YXJndikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9jb21t
b24ucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2NvbW1vbi5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zYzAzNDdhNzViZGZmMzE4ODA5Nzc0NTAxNWE1ODAzNzY0YWQ3NDFjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9jb21tb24ucHkKQEAgLTAs
MCArMSw4MyBAQAorIyBDb3B5cmlnaHQgMjAxMyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiU2hhcmVkIHV0aWxpdGllcyBmb3Igd3JpdGlu
ZyBzY3JpcHRzIGZvciBHb29nbGUgVGVzdC9Nb2NrLiIiIgorCitfX2F1dGhvcl9fID0gJ3dhbkBn
b29nbGUuY29tIChaaGFueW9uZyBXYW4pJworCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCisKKwor
IyBNYXRjaGVzIHRoZSBsaW5lIGZyb20gJ3N2biBpbmZvIC4nIG91dHB1dCB0aGF0IGRlc2NyaWJl
cyB3aGF0IFNWTgorIyBwYXRoIHRoZSBjdXJyZW50IGxvY2FsIGRpcmVjdG9yeSBjb3JyZXNwb25k
cyB0by4gIEZvciBleGFtcGxlLCBpbgorIyBhIGdvb2dsZXRlc3QgU1ZOIHdvcmtzcGFjZSdzIHRy
dW5rL3Rlc3QgZGlyZWN0b3J5LCB0aGUgb3V0cHV0IHdpbGwgYmU6CisjCisjIFVSTDogaHR0cHM6
Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay90ZXN0CitfU1ZOX0lORk9fVVJM
X1JFID0gcmUuY29tcGlsZShyJ15VUkw6IGh0dHBzOi8vKFx3KylcLmdvb2dsZWNvZGVcLmNvbS9z
dm4oLiopJykKKworCitkZWYgR2V0Q29tbWFuZE91dHB1dChjb21tYW5kKToKKyAgIiIiUnVucyB0
aGUgc2hlbGwgY29tbWFuZCBhbmQgcmV0dXJucyBpdHMgc3Rkb3V0IGFzIGEgbGlzdCBvZiBsaW5l
cy4iIiIKKworICBmID0gb3MucG9wZW4oY29tbWFuZCwgJ3InKQorICBsaW5lcyA9IFtsaW5lLnN0
cmlwKCkgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKV0KKyAgZi5jbG9zZSgpCisgIHJldHVybiBs
aW5lcworCisKK2RlZiBHZXRTdm5JbmZvKCk6CisgICIiIlJldHVybnMgdGhlIHByb2plY3QgbmFt
ZSBhbmQgdGhlIGN1cnJlbnQgU1ZOIHdvcmtzcGFjZSdzIHJvb3QgcGF0aC4iIiIKKworICBmb3Ig
bGluZSBpbiBHZXRDb21tYW5kT3V0cHV0KCdzdm4gaW5mbyAuJyk6CisgICAgbSA9IF9TVk5fSU5G
T19VUkxfUkUubWF0Y2gobGluZSkKKyAgICBpZiBtOgorICAgICAgcHJvamVjdCA9IG0uZ3JvdXAo
MSkgICMgZ29vZ2xldGVzdCBvciBnb29nbGVtb2NrCisgICAgICByZWxfcGF0aCA9IG0uZ3JvdXAo
MikKKyAgICAgIHJvb3QgPSBvcy5wYXRoLnJlYWxwYXRoKHJlbF9wYXRoLmNvdW50KCcvJykgKiAn
Li4vJykKKyAgICAgIHJldHVybiBwcm9qZWN0LCByb290CisKKyAgcmV0dXJuIE5vbmUsIE5vbmUK
KworCitkZWYgR2V0U3ZuVHJ1bmsoKToKKyAgIiIiUmV0dXJucyB0aGUgY3VycmVudCBTVk4gd29y
a3NwYWNlJ3MgdHJ1bmsgcm9vdCBwYXRoLiIiIgorCisgIF8sIHJvb3QgPSBHZXRTdm5JbmZvKCkK
KyAgcmV0dXJuIHJvb3QgKyAnL3RydW5rJyBpZiByb290IGVsc2UgTm9uZQorCisKK2RlZiBJc0lu
R1Rlc3RTdm4oKToKKyAgcHJvamVjdCwgXyA9IEdldFN2bkluZm8oKQorICByZXR1cm4gcHJvamVj
dCA9PSAnZ29vZ2xldGVzdCcKKworCitkZWYgSXNJbkdNb2NrU3ZuKCk6CisgIHByb2plY3QsIF8g
PSBHZXRTdm5JbmZvKCkKKyAgcmV0dXJuIHByb2plY3QgPT0gJ2dvb2dsZW1vY2snCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMucHkg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMucHkKaW5k
ZXggMTQ4NDQ0Y2E3MTFiMWVkYWFhZmVhOGQ3ODI2ZDNjZmQ0YzAxZGUwYi4uZDBkZDQ2NGZlOGI1
OWM1NDEwYTNkMWI4NWRiNDc5NWJiZDAzMWQ4OSAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc2NyaXB0cy9mdXNlX2d0ZXN0X2ZpbGVzLnB5CisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3NjcmlwdHMvZnVzZV9ndGVzdF9maWxlcy5weQpAQCAtNTIsNyArNTIsNyBAQCBF
WEFNUExFUwogVGhpcyB0b29sIGlzIGV4cGVyaW1lbnRhbC4gIEluIHBhcnRpY3VsYXIsIGl0IGFz
c3VtZXMgdGhhdCB0aGVyZSBpcyBubwogY29uZGl0aW9uYWwgaW5jbHVzaW9uIG9mIEdvb2dsZSBU
ZXN0IGhlYWRlcnMuICBQbGVhc2UgcmVwb3J0IGFueQogcHJvYmxlbXMgdG8gZ29vZ2xldGVzdGZy
YW1ld29ya0Bnb29nbGVncm91cHMuY29tLiAgWW91IGNhbiByZWFkCi1odHRwOi8vY29kZS5nb29n
bGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL0dvb2dsZVRlc3RBZHZhbmNlZEd1aWRlIGZvcgoraHR0
cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2dsZXRlc3Qv
ZG9jcy9hZHZhbmNlZC5tZCBmb3IKIG1vcmUgaW5mb3JtYXRpb24uCiAiIiIKIApAQCAtNjAsMTUg
KzYwLDE4IEBAIF9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCiAK
IGltcG9ydCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgc2V0cwordHJ5OgorICBmcm9tIHNldHMgaW1w
b3J0IFNldCBhcyBzZXQgICMgRm9yIFB5dGhvbiAyLjMgY29tcGF0aWJpbGl0eQorZXhjZXB0IElt
cG9ydEVycm9yOgorICBwYXNzCiBpbXBvcnQgc3lzCiAKICMgV2UgYXNzdW1lIHRoYXQgdGhpcyBm
aWxlIGlzIGluIHRoZSBzY3JpcHRzLyBkaXJlY3RvcnkgaW4gdGhlIEdvb2dsZQogIyBUZXN0IHJv
b3QgZGlyZWN0b3J5LgogREVGQVVMVF9HVEVTVF9ST09UX0RJUiA9IG9zLnBhdGguam9pbihvcy5w
YXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nKQogCi0jIFJlZ2V4IGZvciBtYXRjaGluZyAnI2lu
Y2x1ZGUgPGd0ZXN0Ly4uLj4nLgotSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VYID0gcmUuY29tcGls
ZShyJ15ccyojXHMqaW5jbHVkZVxzKjwoZ3Rlc3QvLispPicpCisjIFJlZ2V4IGZvciBtYXRjaGlu
ZyAnI2luY2x1ZGUgImd0ZXN0Ly4uLiInLgorSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VYID0gcmUu
Y29tcGlsZShyJ15ccyojXHMqaW5jbHVkZVxzKiIoZ3Rlc3QvLispIicpCiAKICMgUmVnZXggZm9y
IG1hdGNoaW5nICcjaW5jbHVkZSAic3JjLy4uLiInLgogSU5DTFVERV9TUkNfRklMRV9SRUdFWCA9
IHJlLmNvbXBpbGUocideXHMqI1xzKmluY2x1ZGVccyoiKHNyYy8uKykiJykKQEAgLTkwLDEwICs5
MywxMCBAQCBkZWYgVmVyaWZ5RmlsZUV4aXN0cyhkaXJlY3RvcnksIHJlbGF0aXZlX3BhdGgpOgog
ICAiIiIKIAogICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGRpcmVjdG9yeSwg
cmVsYXRpdmVfcGF0aCkpOgotICAgIHByaW50ICdFUlJPUjogQ2Fubm90IGZpbmQgJXMgaW4gZGly
ZWN0b3J5ICVzLicgJSAocmVsYXRpdmVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSkKLSAgICBwcmludCAoJ1BsZWFz
ZSBlaXRoZXIgc3BlY2lmeSBhIHZhbGlkIHByb2plY3Qgcm9vdCBkaXJlY3RvcnkgJwotICAgICAg
ICAgICAnb3Igb21pdCBpdCBvbiB0aGUgY29tbWFuZCBsaW5lLicpCisgICAgcHJpbnQoJ0VSUk9S
OiBDYW5ub3QgZmluZCAlcyBpbiBkaXJlY3RvcnkgJXMuJyAlIChyZWxhdGl2ZV9wYXRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0
b3J5KSkKKyAgICBwcmludCgnUGxlYXNlIGVpdGhlciBzcGVjaWZ5IGEgdmFsaWQgcHJvamVjdCBy
b290IGRpcmVjdG9yeSAnCisgICAgICAgICAgJ29yIG9taXQgaXQgb24gdGhlIGNvbW1hbmQgbGlu
ZS4nKQogICAgIHN5cy5leGl0KDEpCiAKIApAQCAtMTE5LDExICsxMjIsMTEgQEAgZGVmIFZlcmlm
eU91dHB1dEZpbGUob3V0cHV0X2RpciwgcmVsYXRpdmVfcGF0aCk6CiAgICAgIyBUT0RPKHdhbkBn
b29nbGUuY29tKTogVGhlIGZvbGxvd2luZyB1c2VyLWludGVyYWN0aW9uIGRvZXNuJ3QKICAgICAj
IHdvcmsgd2l0aCBhdXRvbWF0ZWQgcHJvY2Vzc2VzLiAgV2Ugc2hvdWxkIHByb3ZpZGUgYSB3YXkg
Zm9yIHRoZQogICAgICMgTWFrZWZpbGUgdG8gZm9yY2Ugb3ZlcndyaXRpbmcgdGhlIGZpbGVzLgot
ICAgIHByaW50ICgnJXMgYWxyZWFkeSBleGlzdHMgaW4gZGlyZWN0b3J5ICVzIC0gb3ZlcndyaXRl
IGl0PyAoeS9OKSAnICUKLSAgICAgICAgICAgKHJlbGF0aXZlX3BhdGgsIG91dHB1dF9kaXIpKQor
ICAgIHByaW50KCclcyBhbHJlYWR5IGV4aXN0cyBpbiBkaXJlY3RvcnkgJXMgLSBvdmVyd3JpdGUg
aXQ/ICh5L04pICcgJQorICAgICAgICAgIChyZWxhdGl2ZV9wYXRoLCBvdXRwdXRfZGlyKSkKICAg
ICBhbnN3ZXIgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKS5zdHJpcCgpCiAgICAgaWYgYW5zd2VyIG5v
dCBpbiBbJ3knLCAnWSddOgotICAgICAgcHJpbnQgJ0FCT1JURUQuJworICAgICAgcHJpbnQoJ0FC
T1JURUQuJykKICAgICAgIHN5cy5leGl0KDEpCiAKICAgIyBNYWtlcyBzdXJlIHRoZSBkaXJlY3Rv
cnkgaG9sZGluZyB0aGUgb3V0cHV0IGZpbGUgZXhpc3RzOyBjcmVhdGVzCkBAIC0xNDYsOCArMTQ5
LDggQEAgZGVmIFZhbGlkYXRlT3V0cHV0RGlyKG91dHB1dF9kaXIpOgogZGVmIEZ1c2VHVGVzdEgo
Z3Rlc3Rfcm9vdCwgb3V0cHV0X2Rpcik6CiAgICIiIlNjYW5zIGZvbGRlciBndGVzdF9yb290IHRv
IGdlbmVyYXRlIGd0ZXN0L2d0ZXN0LmggaW4gb3V0cHV0X2Rpci4iIiIKIAotICBvdXRwdXRfZmls
ZSA9IGZpbGUob3MucGF0aC5qb2luKG91dHB1dF9kaXIsIEdURVNUX0hfT1VUUFVUKSwgJ3cnKQot
ICBwcm9jZXNzZWRfZmlsZXMgPSBzZXRzLlNldCgpICAjIEhvbGRzIGFsbCBndGVzdCBoZWFkZXJz
IHdlJ3ZlIHByb2Nlc3NlZC4KKyAgb3V0cHV0X2ZpbGUgPSBvcGVuKG9zLnBhdGguam9pbihvdXRw
dXRfZGlyLCBHVEVTVF9IX09VVFBVVCksICd3JykKKyAgcHJvY2Vzc2VkX2ZpbGVzID0gc2V0KCkg
ICMgSG9sZHMgYWxsIGd0ZXN0IGhlYWRlcnMgd2UndmUgcHJvY2Vzc2VkLgogCiAgIGRlZiBQcm9j
ZXNzRmlsZShndGVzdF9oZWFkZXJfcGF0aCk6CiAgICAgIiIiUHJvY2Vzc2VzIHRoZSBnaXZlbiBn
dGVzdCBoZWFkZXIgZmlsZS4iIiIKQEAgLTE1OSwxMCArMTYyLDEwIEBAIGRlZiBGdXNlR1Rlc3RI
KGd0ZXN0X3Jvb3QsIG91dHB1dF9kaXIpOgogICAgIHByb2Nlc3NlZF9maWxlcy5hZGQoZ3Rlc3Rf
aGVhZGVyX3BhdGgpCiAKICAgICAjIFJlYWRzIGVhY2ggbGluZSBpbiB0aGUgZ2l2ZW4gZ3Rlc3Qg
aGVhZGVyLgotICAgIGZvciBsaW5lIGluIGZpbGUob3MucGF0aC5qb2luKGd0ZXN0X3Jvb3QsIGd0
ZXN0X2hlYWRlcl9wYXRoKSwgJ3InKToKKyAgICBmb3IgbGluZSBpbiBvcGVuKG9zLnBhdGguam9p
bihndGVzdF9yb290LCBndGVzdF9oZWFkZXJfcGF0aCksICdyJyk6CiAgICAgICBtID0gSU5DTFVE
RV9HVEVTVF9GSUxFX1JFR0VYLm1hdGNoKGxpbmUpCiAgICAgICBpZiBtOgotICAgICAgICAjIEl0
J3MgJyNpbmNsdWRlIDxndGVzdC8uLi4+JyAtIGxldCdzIHByb2Nlc3MgaXQgcmVjdXJzaXZlbHku
CisgICAgICAgICMgSXQncyAnI2luY2x1ZGUgImd0ZXN0Ly4uLiInIC0gbGV0J3MgcHJvY2VzcyBp
dCByZWN1cnNpdmVseS4KICAgICAgICAgUHJvY2Vzc0ZpbGUoJ2luY2x1ZGUvJyArIG0uZ3JvdXAo
MSkpCiAgICAgICBlbHNlOgogICAgICAgICAjIE90aGVyd2lzZSB3ZSBjb3B5IHRoZSBsaW5lIHVu
Y2hhbmdlZCB0byB0aGUgb3V0cHV0IGZpbGUuCkBAIC0xNzUsNyArMTc4LDcgQEAgZGVmIEZ1c2VH
VGVzdEgoZ3Rlc3Rfcm9vdCwgb3V0cHV0X2Rpcik6CiBkZWYgRnVzZUdUZXN0QWxsQ2NUb0ZpbGUo
Z3Rlc3Rfcm9vdCwgb3V0cHV0X2ZpbGUpOgogICAiIiJTY2FucyBmb2xkZXIgZ3Rlc3Rfcm9vdCB0
byBnZW5lcmF0ZSBndGVzdC9ndGVzdC1hbGwuY2MgaW4gb3V0cHV0X2ZpbGUuIiIiCiAKLSAgcHJv
Y2Vzc2VkX2ZpbGVzID0gc2V0cy5TZXQoKQorICBwcm9jZXNzZWRfZmlsZXMgPSBzZXQoKQogCiAg
IGRlZiBQcm9jZXNzRmlsZShndGVzdF9zb3VyY2VfZmlsZSk6CiAgICAgIiIiUHJvY2Vzc2VzIHRo
ZSBnaXZlbiBndGVzdCBzb3VyY2UgZmlsZS4iIiIKQEAgLTE4NywyMyArMTkwLDIzIEBAIGRlZiBG
dXNlR1Rlc3RBbGxDY1RvRmlsZShndGVzdF9yb290LCBvdXRwdXRfZmlsZSk6CiAgICAgcHJvY2Vz
c2VkX2ZpbGVzLmFkZChndGVzdF9zb3VyY2VfZmlsZSkKIAogICAgICMgUmVhZHMgZWFjaCBsaW5l
IGluIHRoZSBnaXZlbiBndGVzdCBzb3VyY2UgZmlsZS4KLSAgICBmb3IgbGluZSBpbiBmaWxlKG9z
LnBhdGguam9pbihndGVzdF9yb290LCBndGVzdF9zb3VyY2VfZmlsZSksICdyJyk6CisgICAgZm9y
IGxpbmUgaW4gb3Blbihvcy5wYXRoLmpvaW4oZ3Rlc3Rfcm9vdCwgZ3Rlc3Rfc291cmNlX2ZpbGUp
LCAncicpOgogICAgICAgbSA9IElOQ0xVREVfR1RFU1RfRklMRV9SRUdFWC5tYXRjaChsaW5lKQog
ICAgICAgaWYgbToKICAgICAgICAgaWYgJ2luY2x1ZGUvJyArIG0uZ3JvdXAoMSkgPT0gR1RFU1Rf
U1BJX0hfU0VFRDoKLSAgICAgICAgICAjIEl0J3MgJyNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGku
aD4nLiAgVGhpcyBmaWxlIGlzIG5vdAotICAgICAgICAgICMgI2luY2x1ZGVkIGJ5IDxndGVzdC9n
dGVzdC5oPiwgc28gd2UgbmVlZCB0byBwcm9jZXNzIGl0LgorICAgICAgICAgICMgSXQncyAnI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIicuICBUaGlzIGZpbGUgaXMgbm90CisgICAgICAgICAg
IyAjaW5jbHVkZWQgYnkgImd0ZXN0L2d0ZXN0LmgiLCBzbyB3ZSBuZWVkIHRvIHByb2Nlc3MgaXQu
CiAgICAgICAgICAgUHJvY2Vzc0ZpbGUoR1RFU1RfU1BJX0hfU0VFRCkKICAgICAgICAgZWxzZToK
LSAgICAgICAgICAjIEl0J3MgJyNpbmNsdWRlIDxndGVzdC9mb28uaD4nIHdoZXJlIGZvbyBpcyBu
b3QgZ3Rlc3Qtc3BpLgotICAgICAgICAgICMgV2UgdHJlYXQgaXQgYXMgJyNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPicsIGFzIGFsbCBvdGhlcgorICAgICAgICAgICMgSXQncyAnI2luY2x1ZGUgImd0
ZXN0L2Zvby5oIicgd2hlcmUgZm9vIGlzIG5vdCBndGVzdC1zcGkuCisgICAgICAgICAgIyBXZSB0
cmVhdCBpdCBhcyAnI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiJywgYXMgYWxsIG90aGVyCiAgICAg
ICAgICAgIyBndGVzdCBoZWFkZXJzIGFyZSBiZWluZyBmdXNlZCBpbnRvIGd0ZXN0LmggYW5kIGNh
bm5vdCBiZQogICAgICAgICAgICMgI2luY2x1ZGVkIGRpcmVjdGx5LgogCi0gICAgICAgICAgIyBU
aGVyZSBpcyBubyBuZWVkIHRvICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPiBtb3JlIHRoYW4gb25j
ZS4KKyAgICAgICAgICAjIFRoZXJlIGlzIG5vIG5lZWQgdG8gI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiIG1vcmUgdGhhbiBvbmNlLgogICAgICAgICAgIGlmIG5vdCBHVEVTVF9IX1NFRUQgaW4gcHJv
Y2Vzc2VkX2ZpbGVzOgogICAgICAgICAgICAgcHJvY2Vzc2VkX2ZpbGVzLmFkZChHVEVTVF9IX1NF
RUQpCi0gICAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZSgnI2luY2x1ZGUgPCVzPlxuJyAlIChH
VEVTVF9IX09VVFBVVCwpKQorICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoJyNpbmNsdWRl
ICIlcyJcbicgJSAoR1RFU1RfSF9PVVRQVVQsKSkKICAgICAgIGVsc2U6CiAgICAgICAgIG0gPSBJ
TkNMVURFX1NSQ19GSUxFX1JFR0VYLm1hdGNoKGxpbmUpCiAgICAgICAgIGlmIG06CkBAIC0yMTgs
NyArMjIxLDcgQEAgZGVmIEZ1c2VHVGVzdEFsbENjVG9GaWxlKGd0ZXN0X3Jvb3QsIG91dHB1dF9m
aWxlKToKIGRlZiBGdXNlR1Rlc3RBbGxDYyhndGVzdF9yb290LCBvdXRwdXRfZGlyKToKICAgIiIi
U2NhbnMgZm9sZGVyIGd0ZXN0X3Jvb3QgdG8gZ2VuZXJhdGUgZ3Rlc3QvZ3Rlc3QtYWxsLmNjIGlu
IG91dHB1dF9kaXIuIiIiCiAKLSAgb3V0cHV0X2ZpbGUgPSBmaWxlKG9zLnBhdGguam9pbihvdXRw
dXRfZGlyLCBHVEVTVF9BTExfQ0NfT1VUUFVUKSwgJ3cnKQorICBvdXRwdXRfZmlsZSA9IG9wZW4o
b3MucGF0aC5qb2luKG91dHB1dF9kaXIsIEdURVNUX0FMTF9DQ19PVVRQVVQpLCAndycpCiAgIEZ1
c2VHVGVzdEFsbENjVG9GaWxlKGd0ZXN0X3Jvb3QsIG91dHB1dF9maWxlKQogICBvdXRwdXRfZmls
ZS5jbG9zZSgpCiAKQEAgLTI0Miw3ICsyNDUsNyBAQCBkZWYgbWFpbigpOgogICAgICMgZnVzZV9n
dGVzdF9maWxlcy5weSBHVEVTVF9ST09UX0RJUiBPVVRQVVRfRElSCiAgICAgRnVzZUdUZXN0KHN5
cy5hcmd2WzFdLCBzeXMuYXJndlsyXSkKICAgZWxzZToKLSAgICBwcmludCBfX2RvY19fCisgICAg
cHJpbnQoX19kb2NfXykKICAgICBzeXMuZXhpdCgxKQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weQppbmRleCA4MzA3
MTM0YWRhZjRkYTJiZThmYTIzMzIyOTE1MjBkMzljOTRiYjEyLi5iNDNlZmRmNDFlNWMwMjc0MGY3
MmIzNTUzMmJlNWNmMDQ5Nzk0ODM1IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zY3JpcHRzL2dlbl9ndGVzdF9wcmVkX2ltcGwucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2NyaXB0cy9nZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5CkBAIC0xMTUsMTAgKzExNSw5IEBA
IGRlZiBIZWFkZXJQcmVhbWJsZShuKToKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVT
VF9QUkVEX0lNUExfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lN
UExfSF8KIAotLy8gTWFrZXMgc3VyZSB0aGlzIGhlYWRlciBpcyBub3QgaW5jbHVkZWQgYmVmb3Jl
IGd0ZXN0LmguCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KLSNlcnJvciBE
byBub3QgaW5jbHVkZSBndGVzdF9wcmVkX2ltcGwuaCBkaXJlY3RseS4gIEluY2x1ZGUgZ3Rlc3Qu
aCBpbnN0ZWFkLgotI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0hfCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHRlc3RpbmcgewogCiAvLyBUaGlzIGhl
YWRlciBpbXBsZW1lbnRzIGEgZmFtaWx5IG9mIGdlbmVyaWMgcHJlZGljYXRlIGFzc2VydGlvbgog
Ly8gbWFjcm9zOgpAQCAtMjM4LDI3ICsyMzcsMjUgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFBy
ZWQlKG4pc0hlbHBlcihjb25zdCBjaGFyKiBwcmVkX3RleHQiIiIgJSBERUZTCiAgIGltcGwgKz0g
IiIiKSB7CiAgIGlmIChwcmVkKCUodnMpcykpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAK
LSAgTWVzc2FnZSBtc2c7CiAiIiIgJSBERUZTCiAKLSAgaW1wbCArPSAnICBtc2cgPDwgcHJlZF90
ZXh0IDw8ICIoIicKKyAgaW1wbCArPSAnICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHBy
ZWRfdGV4dCA8PCAiKCInCiAKICAgaW1wbCArPSBJdGVyKG4sICIiIgotICAgICAgPDwgZSVzIiIi
LCBzZXA9JyA8PCAiLCAiJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlJXMiIiIs
IHNlcD0nIDw8ICIsICInKQogCiAgIGltcGwgKz0gJyA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2Us
IHdoZXJlIicKIAogICBpbXBsICs9IEl0ZXIobiwgIiIiCi0gICAgICA8PCAiXFxuIiA8PCBlJXMg
PDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2JXMiIiIpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIlxcbiIgPDwgZSVzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdiVzIiIiKQogCiAgIGlt
cGwgKz0gIiIiOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogCiAvLyBJbnRl
cm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEX0ZPUk1BVCUo
bilzLgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVE
X0ZPUk1BVCUobilzXyhwcmVkX2Zvcm1hdCwgJSh2cylzLCBvbl9mYWlsdXJlKVxcCi0gIEdURVNU
X0FTU0VSVF8ocHJlZF9mb3JtYXQoJSh2dHMpcywgJSh2cylzKSxcXAorICBHVEVTVF9BU1NFUlRf
KHByZWRfZm9ybWF0KCUodnRzKXMsICUodnMpcyksIFxcCiAgICAgICAgICAgICAgICAgb25fZmFp
bHVyZSkKIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VS
VH1fUFJFRCUobilzLiAgRG9uJ3QgdXNlCkBAIC0yOTcsMTYgKzI5NCwxNyBAQCBkZWYgSGVhZGVy
UG9zdGFtYmxlKCk6CiAKICAgcmV0dXJuICIiIgogCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwor
CiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJFRF9JTVBMX0hfCiAiIiIK
IAogCiBkZWYgR2VuZXJhdGVGaWxlKHBhdGgsIGNvbnRlbnQpOgotICAiIiJHaXZlbiBhIGZpbGUg
cGF0aCBhbmQgYSBjb250ZW50IHN0cmluZywgb3ZlcndyaXRlcyBpdCB3aXRoIHRoZQotICBnaXZl
biBjb250ZW50LiIiIgotCisgICIiIkdpdmVuIGEgZmlsZSBwYXRoIGFuZCBhIGNvbnRlbnQgc3Ry
aW5nCisgICAgIG92ZXJ3cml0ZXMgaXQgd2l0aCB0aGUgZ2l2ZW4gY29udGVudC4KKyAgIiIiCiAg
IHByaW50ICdVcGRhdGluZyBmaWxlICVzIC4gLiAuJyAlIHBhdGgKLQogICBmID0gZmlsZShwYXRo
LCAndysnKQogICBwcmludCA+PmYsIGNvbnRlbnQsCiAgIGYuY2xvc2UoKQpAQCAtMzE2LDggKzMx
NCw4IEBAIGRlZiBHZW5lcmF0ZUZpbGUocGF0aCwgY29udGVudCk6CiAKIGRlZiBHZW5lcmF0ZUhl
YWRlcihuKToKICAgIiIiR2l2ZW4gdGhlIG1heGltdW0gYXJpdHkgbiwgdXBkYXRlcyB0aGUgaGVh
ZGVyIGZpbGUgdGhhdCBpbXBsZW1lbnRzCi0gIHRoZSBwcmVkaWNhdGUgYXNzZXJ0aW9ucy4iIiIK
LQorICB0aGUgcHJlZGljYXRlIGFzc2VydGlvbnMuCisgICIiIgogICBHZW5lcmF0ZUZpbGUoSEVB
REVSLAogICAgICAgICAgICAgICAgSGVhZGVyUHJlYW1ibGUobikKICAgICAgICAgICAgICAgICsg
Jycuam9pbihbSW1wbGVtZW50YXRpb25Gb3JBcml0eShpKSBmb3IgaSBpbiBPbmVUbyhuKV0pCkBA
IC0zODYsOCArMzg0LDggQEAgZGVmIFVuaXRUZXN0UHJlYW1ibGUoKToKIAogI2luY2x1ZGUgPGlv
c3RyZWFtPgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC1zcGkuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LXNwaS5oIgogCiAvLyBBIHVzZXItZGVmaW5lZCBkYXRhIHR5cGUuCiBzdHJ1Y3QgQm9vbCB7CkBA
IC00NzgsMTUgKzQ3NiwxNCBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1
bmN0aW9uJShuKXMoIiIiICUgREVGUwogICBpZiAoUHJlZEZ1bmN0aW9uJShuKXMoJSh2cylzKSkK
ICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIHRlc3Rpbmc6Ok1l
c3NhZ2UgbXNnOwotICBtc2cgPDwgIiIiICUgREVGUworICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0
aW9uRmFpbHVyZSgpCisgICAgICA8PCAiIiIgJSBERUZTCiAKICAgdGVzdHMgKz0gSXRlcihuLCAn
ZSVzJywgc2VwPScgPDwgIiArICIgPDwgJykKIAogICB0ZXN0cyArPSAiIiIKICAgICAgIDw8ICIg
aXMgZXhwZWN0ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgogICAgICAgPDwg
JSh2X3N1bSlzIDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNn
KTsKIH0KICIiIiAlIERFRlMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2NyaXB0cy9ndGVzdC1jb25maWcuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRz
L2d0ZXN0LWNvbmZpZy5pbgppbmRleCA5YzcyNjM4NTRiOWY4NjNiNjE4YzcwOGRlMWVmZTBlOGIx
ZjcyODBhLi43ODBmODQzMmVmY2MxYWVlYWFhZDA3MDYwODZkM2ZmNjQxMjg1YjY4IDEwMDc1NQot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2d0ZXN0LWNvbmZpZy5pbgorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2d0ZXN0LWNvbmZpZy5pbgpAQCAtMjA5
LDcgKzIwOSw3IEBAIGlmIHRlc3QgIiR7dGhpc19iaW5kaXJ9IiA9ICIke3RoaXNfYmluZGlyJSR7
YmluZGlyfX0iOyB0aGVuCiAgICMgVGhlIHBhdGggdG8gdGhlIHNjcmlwdCBkb2Vzbid0IGVuZCBp
biB0aGUgYmluZGlyIHNlcXVlbmNlIGZyb20gQXV0b2NvbmYsCiAgICMgYXNzdW1lIHRoYXQgd2Ug
YXJlIGluIGEgYnVpbGQgdHJlZS4KICAgYnVpbGRfZGlyPWBkaXJuYW1lICR7dGhpc19iaW5kaXJ9
YAotICBzcmNfZGlyPWBjZCAke3RoaXNfYmluZGlyfS9AdG9wX3NyY2RpckA7IHB3ZCAtUGAKKyAg
c3JjX2Rpcj1gY2QgJHt0aGlzX2JpbmRpcn07IGNkIEB0b3Bfc3JjZGlyQDsgcHdkIC1QYAogCiAg
ICMgVE9ETyhjaGFuZGxlcmNAZ29vZ2xlLmNvbSk6IFRoaXMgaXMgYSBkYW5nZXJvdXMgZGVwZW5k
ZW5jeSBvbiBsaWJ0b29sLCB3ZQogICAjIHNob3VsZCB3b3JrIHRvIHJlbW92ZSBpdCwgYW5kL29y
IHJlbW92ZSBsaWJ0b29sIGFsdG9nZXRoZXIsIHJlcGxhY2luZyBpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9wdW1wLnB5IGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2NyaXB0cy9wdW1wLnB5CmluZGV4IGYxNWMxYjZjZWI0YjhiMWJiMGJmNGU4M2UzZWE5
M2IzOGM3ODU4MDAuLjVlZmI2NTNjMjA3ZDFmMWMyYWVjYzRkNjkwYmY3MzJlM2MxZDcxYWIgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcHVtcC5weQorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3B1bXAucHkKQEAgLTI5LDcgKzI5LDcgQEAK
ICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSIiInB1bXAgdjAuMSAtIFByZXR0eSBV
c2VmdWwgZm9yIE1ldGEgUHJvZ3JhbW1pbmcuCisiIiJwdW1wIHYwLjIuMCAtIFByZXR0eSBVc2Vm
dWwgZm9yIE1ldGEgUHJvZ3JhbW1pbmcuCiAKIEEgdG9vbCBmb3IgcHJlcHJvY2Vzc29yIG1ldGEg
cHJvZ3JhbW1pbmcuICBVc2VmdWwgZm9yIGdlbmVyYXRpbmcKIHJlcGV0aXRpdmUgYm9pbGVycGxh
dGUgY29kZS4gIEVzcGVjaWFsbHkgdXNlZnVsIGZvciB3cml0aW5nIEMrKwpAQCAtNzgsNyArNzgs
NiBAQCBUT0tFTl9UQUJMRSA9IFsKICAgICAocmUuY29tcGlsZShyJ1wkcmFuZ2VccysnKSwgJyRy
YW5nZScpLAogICAgIChyZS5jb21waWxlKHInXCRbX0EtWmEtel1cdyonKSwgJyRpZCcpLAogICAg
IChyZS5jb21waWxlKHInXCRcKFwkXCknKSwgJyQoJCknKSwKLSAgICAocmUuY29tcGlsZShyJ1wk
XCQuKicpLCAnJCQnKSwKICAgICAocmUuY29tcGlsZShyJ1wkJyksICckJyksCiAgICAgKHJlLmNv
bXBpbGUocidcW1xbXG4/JyksICdbWycpLAogICAgIChyZS5jb21waWxlKHInXF1cXVxuPycpLCAn
XV0nKSwKQEAgLTIyNCw2ICsyMjMsMTcgQEAgZGVmIFN1YlN0cmluZyhsaW5lcywgc3RhcnQsIGVu
ZCk6CiAgIHJldHVybiAnJy5qb2luKHJlc3VsdF9saW5lcykKIAogCitkZWYgU3RyaXBNZXRhQ29t
bWVudHMoc3RyKToKKyAgIiIiU3RyaXAgbWV0YSBjb21tZW50cyBmcm9tIGVhY2ggbGluZSBpbiB0
aGUgZ2l2ZW4gc3RyaW5nLiIiIgorCisgICMgRmlyc3QsIGNvbXBsZXRlbHkgcmVtb3ZlIGxpbmVz
IGNvbnRhaW5pbmcgbm90aGluZyBidXQgYSBtZXRhCisgICMgY29tbWVudCwgaW5jbHVkaW5nIHRo
ZSB0cmFpbGluZyBcbi4KKyAgc3RyID0gcmUuc3ViKHInXlxzKlwkXCQuKlxuJywgJycsIHN0cikK
KworICAjIFRoZW4sIHJlbW92ZSBtZXRhIGNvbW1lbnRzIGZyb20gY29udGVudGZ1bCBsaW5lcy4K
KyAgcmV0dXJuIHJlLnN1YihyJ1xzKlwkXCQuKicsICcnLCBzdHIpCisKKwogZGVmIE1ha2VUb2tl
bihsaW5lcywgc3RhcnQsIGVuZCwgdG9rZW5fdHlwZSk6CiAgICIiIkNyZWF0ZXMgYSBuZXcgaW5z
dGFuY2Ugb2YgVG9rZW4uIiIiCiAKQEAgLTMxMSwxMSArMzIxLDcgQEAgZGVmIFRva2VuaXplTGlu
ZXMobGluZXMsIHBvcyk6CiAgICAgICBwcmV2X3Rva2VuID0gTWFrZVRva2VuKGxpbmVzLCBwb3Ms
IGZvdW5kLnN0YXJ0LCAnY29kZScpCiAgICAgICBwcmV2X3Rva2VuX3JzdHJpcHBlZCA9IFJTdHJp
cE5ld0xpbmVGcm9tVG9rZW4ocHJldl90b2tlbikKIAotICAgIGlmIGZvdW5kLnRva2VuX3R5cGUg
PT0gJyQkJzogICMgQSBtZXRhIGNvbW1lbnQuCi0gICAgICBpZiBwcmV2X3Rva2VuX3JzdHJpcHBl
ZDoKLSAgICAgICAgeWllbGQgcHJldl90b2tlbl9yc3RyaXBwZWQKLSAgICAgIHBvcyA9IEN1cnNv
cihmb3VuZC5lbmQubGluZSArIDEsIDApCi0gICAgZWxpZiBmb3VuZC50b2tlbl90eXBlID09ICck
dmFyJzoKKyAgICBpZiBmb3VuZC50b2tlbl90eXBlID09ICckdmFyJzoKICAgICAgIGlmIHByZXZf
dG9rZW5fcnN0cmlwcGVkOgogICAgICAgICB5aWVsZCBwcmV2X3Rva2VuX3JzdHJpcHBlZAogICAg
ICAgeWllbGQgZm91bmQKQEAgLTM3NCw4ICszODAsMTEgQEAgZGVmIFRva2VuaXplTGluZXMobGlu
ZXMsIHBvcyk6CiAKIAogZGVmIFRva2VuaXplKHMpOgotICBsaW5lcyA9IHMuc3BsaXRsaW5lcyhU
cnVlKQotICByZXR1cm4gVG9rZW5pemVMaW5lcyhsaW5lcywgQ3Vyc29yKDAsIDApKQorICAiIiJB
IGdlbmVyYXRvciB0aGF0IHlpZWxkcyB0aGUgdG9rZW5zIGluIHRoZSBnaXZlbiBzdHJpbmcuIiIi
CisgIGlmIHMgIT0gJyc6CisgICAgbGluZXMgPSBzLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICBmb3Ig
dG9rZW4gaW4gVG9rZW5pemVMaW5lcyhsaW5lcywgQ3Vyc29yKDAsIDApKToKKyAgICAgIHlpZWxk
IHRva2VuCiAKIAogY2xhc3MgQ29kZU5vZGU6CkBAIC01NjUsMTEgKzU3NCw5IEBAIGRlZiBQYXJz
ZUNvZGVOb2RlKHRva2Vucyk6CiAgIHJldHVybiBDb2RlTm9kZShhdG9taWNfY29kZV9saXN0KQog
CiAKLWRlZiBDb252ZXJ0KGZpbGVfcGF0aCk6Ci0gIHMgPSBmaWxlKGZpbGVfcGF0aCwgJ3InKS5y
ZWFkKCkKLSAgdG9rZW5zID0gW10KLSAgZm9yIHRva2VuIGluIFRva2VuaXplKHMpOgotICAgIHRv
a2Vucy5hcHBlbmQodG9rZW4pCitkZWYgUGFyc2VUb0FTVChwdW1wX3NyY190ZXh0KToKKyAgIiIi
Q29udmVydCB0aGUgZ2l2ZW4gUHVtcCBzb3VyY2UgdGV4dCBpbnRvIGFuIEFTVC4iIiIKKyAgdG9r
ZW5zID0gbGlzdChUb2tlbml6ZShwdW1wX3NyY190ZXh0KSkKICAgY29kZV9ub2RlID0gUGFyc2VD
b2RlTm9kZSh0b2tlbnMpCiAgIHJldHVybiBjb2RlX25vZGUKIApAQCAtNjk3LDE0ICs3MDQsMTQg
QEAgZGVmIFJ1bkNvZGUoZW52LCBjb2RlX25vZGUsIG91dHB1dCk6CiAgICAgUnVuQXRvbWljQ29k
ZShlbnYsIGF0b21pY19jb2RlLCBvdXRwdXQpCiAKIAotZGVmIElzQ29tbWVudChjdXJfbGluZSk6
CitkZWYgSXNTaW5nbGVMaW5lQ29tbWVudChjdXJfbGluZSk6CiAgIHJldHVybiAnLy8nIGluIGN1
cl9saW5lCiAKIAotZGVmIElzSW5QcmVwcm9jZXNzb3JEaXJldmF0aXZlKHByZXZfbGluZXMsIGN1
cl9saW5lKToKK2RlZiBJc0luUHJlcHJvY2Vzc29yRGlyZWN0aXZlKHByZXZfbGluZXMsIGN1cl9s
aW5lKToKICAgaWYgY3VyX2xpbmUubHN0cmlwKCkuc3RhcnRzd2l0aCgnIycpOgogICAgIHJldHVy
biBUcnVlCi0gIHJldHVybiBwcmV2X2xpbmVzICE9IFtdIGFuZCBwcmV2X2xpbmVzWy0xXS5lbmRz
d2l0aCgnXFwnKQorICByZXR1cm4gcHJldl9saW5lcyBhbmQgcHJldl9saW5lc1stMV0uZW5kc3dp
dGgoJ1xcJykKIAogCiBkZWYgV3JhcENvbW1lbnQobGluZSwgb3V0cHV0KToKQEAgLTc2MSw3ICs3
NjgsNyBAQCBkZWYgV3JhcENvZGUobGluZSwgbGluZV9jb25jYXQsIG91dHB1dCk6CiAgICAgb3V0
cHV0LmFwcGVuZChwcmVmaXggKyBjdXJfbGluZS5zdHJpcCgpKQogCiAKLWRlZiBXcmFwUHJlcHJv
Y2Vzc29yRGlyZXZhdGl2ZShsaW5lLCBvdXRwdXQpOgorZGVmIFdyYXBQcmVwcm9jZXNzb3JEaXJl
Y3RpdmUobGluZSwgb3V0cHV0KToKICAgV3JhcENvZGUobGluZSwgJyBcXCcsIG91dHB1dCkKIAog
CkBAIC03NjksMjkgKzc3NiwzNyBAQCBkZWYgV3JhcFBsYWluQ29kZShsaW5lLCBvdXRwdXQpOgog
ICBXcmFwQ29kZShsaW5lLCAnJywgb3V0cHV0KQogCiAKLWRlZiBJc0hlYWRlckd1YXJkT3JJbmNs
dWRlKGxpbmUpOgorZGVmIElzTXVsdGlMaW5lSVdZVVByYWdtYShsaW5lKToKKyAgcmV0dXJuIHJl
LnNlYXJjaChyJy9cKiBJV1lVIHByYWdtYTogJywgbGluZSkKKworCitkZWYgSXNIZWFkZXJHdWFy
ZEluY2x1ZGVPck9uZUxpbmVJV1lVUHJhZ21hKGxpbmUpOgogICByZXR1cm4gKHJlLm1hdGNoKHIn
XiMoaWZuZGVmfGRlZmluZXxlbmRpZlxzKi8vKVxzKltcd19dK1xzKiQnLCBsaW5lKSBvcgotICAg
ICAgICAgIHJlLm1hdGNoKHInXiNpbmNsdWRlXHMnLCBsaW5lKSkKKyAgICAgICAgICByZS5tYXRj
aChyJ14jaW5jbHVkZVxzJywgbGluZSkgb3IKKyAgICAgICAgICAjIERvbid0IGJyZWFrIElXWVUg
cHJhZ21hcywgZWl0aGVyOyB0aGF0IGNhdXNlcyBpd3l1LnB5IHByb2JsZW1zLgorICAgICAgICAg
IHJlLnNlYXJjaChyJy8vIElXWVUgcHJhZ21hOiAnLCBsaW5lKSkKIAogCiBkZWYgV3JhcExvbmdM
aW5lKGxpbmUsIG91dHB1dCk6CiAgIGxpbmUgPSBsaW5lLnJzdHJpcCgpCiAgIGlmIGxlbihsaW5l
KSA8PSA4MDoKICAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCi0gIGVsaWYgSXNDb21tZW50KGxpbmUp
OgotICAgIGlmIElzSGVhZGVyR3VhcmRPckluY2x1ZGUobGluZSk6Ci0gICAgICAjIFRoZSBzdHls
ZSBndWlkZSBtYWRlIGFuIGV4Y2VwdGlvbiB0byBhbGxvdyBsb25nIGhlYWRlciBndWFyZCBsaW5l
cwotICAgICAgIyBhbmQgaW5jbHVkZXMuCisgIGVsaWYgSXNTaW5nbGVMaW5lQ29tbWVudChsaW5l
KToKKyAgICBpZiBJc0hlYWRlckd1YXJkSW5jbHVkZU9yT25lTGluZUlXWVVQcmFnbWEobGluZSk6
CisgICAgICAjIFRoZSBzdHlsZSBndWlkZSBtYWRlIGFuIGV4Y2VwdGlvbiB0byBhbGxvdyBsb25n
IGhlYWRlciBndWFyZCBsaW5lcywKKyAgICAgICMgaW5jbHVkZXMgYW5kIElXWVUgcHJhZ21hcy4K
ICAgICAgIG91dHB1dC5hcHBlbmQobGluZSkKICAgICBlbHNlOgogICAgICAgV3JhcENvbW1lbnQo
bGluZSwgb3V0cHV0KQotICBlbGlmIElzSW5QcmVwcm9jZXNzb3JEaXJldmF0aXZlKG91dHB1dCwg
bGluZSk6Ci0gICAgaWYgSXNIZWFkZXJHdWFyZE9ySW5jbHVkZShsaW5lKToKLSAgICAgICMgVGhl
IHN0eWxlIGd1aWRlIG1hZGUgYW4gZXhjZXB0aW9uIHRvIGFsbG93IGxvbmcgaGVhZGVyIGd1YXJk
IGxpbmVzCi0gICAgICAjIGFuZCBpbmNsdWRlcy4KKyAgZWxpZiBJc0luUHJlcHJvY2Vzc29yRGly
ZWN0aXZlKG91dHB1dCwgbGluZSk6CisgICAgaWYgSXNIZWFkZXJHdWFyZEluY2x1ZGVPck9uZUxp
bmVJV1lVUHJhZ21hKGxpbmUpOgorICAgICAgIyBUaGUgc3R5bGUgZ3VpZGUgbWFkZSBhbiBleGNl
cHRpb24gdG8gYWxsb3cgbG9uZyBoZWFkZXIgZ3VhcmQgbGluZXMsCisgICAgICAjIGluY2x1ZGVz
IGFuZCBJV1lVIHByYWdtYXMuCiAgICAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCiAgICAgZWxzZToK
LSAgICAgIFdyYXBQcmVwcm9jZXNzb3JEaXJldmF0aXZlKGxpbmUsIG91dHB1dCkKKyAgICAgIFdy
YXBQcmVwcm9jZXNzb3JEaXJlY3RpdmUobGluZSwgb3V0cHV0KQorICBlbGlmIElzTXVsdGlMaW5l
SVdZVVByYWdtYShsaW5lKToKKyAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCiAgIGVsc2U6CiAgICAg
V3JhcFBsYWluQ29kZShsaW5lLCBvdXRwdXQpCiAKQEAgLTgwNSwxNiArODIwLDIxIEBAIGRlZiBC
ZWF1dGlmeUNvZGUoc3RyaW5nKToKICAgcmV0dXJuICdcbicuam9pbihvdXRwdXQyKSArICdcbicK
IAogCitkZWYgQ29udmVydEZyb21QdW1wU291cmNlKHNyY190ZXh0KToKKyAgIiIiUmV0dXJuIHRo
ZSB0ZXh0IGdlbmVyYXRlZCBmcm9tIHRoZSBnaXZlbiBQdW1wIHNvdXJjZSB0ZXh0LiIiIgorICBh
c3QgPSBQYXJzZVRvQVNUKFN0cmlwTWV0YUNvbW1lbnRzKHNyY190ZXh0KSkKKyAgb3V0cHV0ID0g
T3V0cHV0KCkKKyAgUnVuQ29kZShFbnYoKSwgYXN0LCBvdXRwdXQpCisgIHJldHVybiBCZWF1dGlm
eUNvZGUob3V0cHV0LnN0cmluZykKKworCiBkZWYgbWFpbihhcmd2KToKICAgaWYgbGVuKGFyZ3Yp
ID09IDE6CiAgICAgcHJpbnQgX19kb2NfXwogICAgIHN5cy5leGl0KDEpCiAKICAgZmlsZV9wYXRo
ID0gYXJndlstMV0KLSAgYXN0ID0gQ29udmVydChmaWxlX3BhdGgpCi0gIG91dHB1dCA9IE91dHB1
dCgpCi0gIFJ1bkNvZGUoRW52KCksIGFzdCwgb3V0cHV0KQotICBvdXRwdXRfc3RyID0gQmVhdXRp
ZnlDb2RlKG91dHB1dC5zdHJpbmcpCisgIG91dHB1dF9zdHIgPSBDb252ZXJ0RnJvbVB1bXBTb3Vy
Y2UoZmlsZShmaWxlX3BhdGgsICdyJykucmVhZCgpKQogICBpZiBmaWxlX3BhdGguZW5kc3dpdGgo
Jy5wdW1wJyk6CiAgICAgb3V0cHV0X2ZpbGVfcGF0aCA9IGZpbGVfcGF0aFs6LTVdCiAgIGVsc2U6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3JlbGVhc2VfZG9j
cy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcmVsZWFzZV9kb2NzLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjEyOTEzNDdmNjc0YWZkN2FmODQ5NjE1YTc1YjEzOGQ1MjkzZjljZjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3JlbGVhc2VfZG9j
cy5weQpAQCAtMCwwICsxLDE1OCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHly
aWdodCAyMDEzIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisiIiJTY3JpcHQgZm9yIGJyYW5jaGluZyBHb29nbGUgVGVzdC9Nb2NrIHdpa2kgcGFn
ZXMgZm9yIGEgbmV3IHZlcnNpb24uCisKK1NZTk9QU0lTCisgICAgICAgcmVsZWFzZV9kb2NzLnB5
IE5FV19SRUxFQVNFX1ZFUlNJT04KKworICAgICAgIEdvb2dsZSBUZXN0IGFuZCBHb29nbGUgTW9j
aydzIGV4dGVybmFsIHVzZXIgZG9jdW1lbnRhdGlvbiBpcyBpbgorICAgICAgIGludGVybGlua2Vk
IHdpa2kgZmlsZXMuICBXaGVuIHdlIHJlbGVhc2UgYSBuZXcgdmVyc2lvbiBvZgorICAgICAgIEdv
b2dsZSBUZXN0IG9yIEdvb2dsZSBNb2NrLCB3ZSBuZWVkIHRvIGJyYW5jaCB0aGUgd2lraSBmaWxl
cworICAgICAgIHN1Y2ggdGhhdCB1c2VycyBvZiBhIHNwZWNpZmljIHZlcnNpb24gb2YgR29vZ2xl
IFRlc3QvTW9jayBjYW4KKyAgICAgICBsb29rIHVwIGRvY3VtZW5hdGlvbiByZWxldmFudCBmb3Ig
dGhhdCB2ZXJzaW9uLiAgVGhpcyBzY3JpcHQKKyAgICAgICBhdXRvbWF0ZXMgdGhhdCBwcm9jZXNz
IGJ5OgorCisgICAgICAgICAtIGJyYW5jaGluZyB0aGUgY3VycmVudCB3aWtpIHBhZ2VzICh3aGlj
aCBkb2N1bWVudCB0aGUKKyAgICAgICAgICAgYmVoYXZpb3Igb2YgdGhlIFNWTiB0cnVuayBoZWFk
KSB0byBwYWdlcyBmb3IgdGhlIHNwZWNpZmllZAorICAgICAgICAgICB2ZXJzaW9uIChlLmcuIGJy
YW5jaGluZyBGQVEud2lraSB0byBWMl82X0ZBUS53aWtpIHdoZW4KKyAgICAgICAgICAgTkVXX1JF
TEVBU0VfVkVSU0lPTiBpcyAyLjYpOworICAgICAgICAgLSB1cGRhdGluZyB0aGUgbGlua3MgaW4g
dGhlIGJyYW5jaGVkIGZpbGVzIHRvIHBvaW50IHRvIHRoZSBicmFuY2hlZAorICAgICAgICAgICB2
ZXJzaW9uIChlLmcuIGEgbGluayBpbiBWMl82X0ZBUS53aWtpIHRoYXQgcG9pbnRlZCB0bworICAg
ICAgICAgICBQcmltZXIud2lraSNBbmNob3Igd2lsbCBub3cgcG9pbnQgdG8gVjJfNl9QcmltZXIu
d2lraSNBbmNob3IpLgorCisgICAgICAgTk9URTogTkVXX1JFTEVBU0VfVkVSU0lPTiBtdXN0IGJl
IGEgTkVXIHZlcnNpb24gbnVtYmVyIGZvcgorICAgICAgIHdoaWNoIHRoZSB3aWtpIHBhZ2VzIGRv
bid0IHlldCBleGlzdDsgb3RoZXJ3aXNlIHlvdSdsbCBnZXQgU1ZOCisgICAgICAgZXJyb3JzIGxp
a2UgInN2bjogUGF0aCAnVjFfN19QdW1wTWFudWFsLndpa2knIGlzIG5vdCBhCisgICAgICAgZGly
ZWN0b3J5IiB3aGVuIHJ1bm5pbmcgdGhlIHNjcmlwdC4KKworRVhBTVBMRQorICAgICAgICQgY2Qg
UEFUSC9UTy9HVEVTVF9TVk5fV09SS1NQQUNFL3RydW5rCisgICAgICAgJCBzY3JpcHRzL3JlbGVh
c2VfZG9jcy5weSAyLjYgICMgY3JlYXRlIHdpa2kgcGFnZXMgZm9yIHYyLjYKKyAgICAgICAkIHN2
biBzdGF0dXMgICAgICAgICAgICAgICAgICAgIyB2ZXJpZnkgdGhlIGZpbGUgbGlzdAorICAgICAg
ICQgc3ZuIGRpZmYgICAgICAgICAgICAgICAgICAgICAjIHZlcmlmeSB0aGUgZmlsZSBjb250ZW50
cworICAgICAgICQgc3ZuIGNvbW1pdCAtbSAicmVsZWFzZSB3aWtpIHBhZ2VzIGZvciB2Mi42Igor
IiIiCisKK19fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCisKK2lt
cG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCisKK2ltcG9ydCBjb21tb24KKworCisjIFdp
a2kgcGFnZXMgdGhhdCBzaG91bGRuJ3QgYmUgYnJhbmNoZWQgZm9yIGV2ZXJ5IGd0ZXN0L2dtb2Nr
IHJlbGVhc2UuCitHVEVTVF9VTlZFUlNJT05FRF9XSUtJUyA9IFsnRGV2R3VpZGUud2lraSddCitH
TU9DS19VTlZFUlNJT05FRF9XSUtJUyA9IFsKKyAgICAnRGVzaWduRG9jLndpa2knLAorICAgICdE
ZXZHdWlkZS53aWtpJywKKyAgICAnS25vd25Jc3N1ZXMud2lraScKKyAgICBdCisKKworZGVmIERy
b3BXaWtpU3VmZml4KHdpa2lfZmlsZW5hbWUpOgorICAiIiJSZW1vdmVzIHRoZSAud2lraSBzdWZm
aXggKGlmIGFueSkgZnJvbSB0aGUgZ2l2ZW4gZmlsZW5hbWUuIiIiCisKKyAgcmV0dXJuICh3aWtp
X2ZpbGVuYW1lWzotbGVuKCcud2lraScpXSBpZiB3aWtpX2ZpbGVuYW1lLmVuZHN3aXRoKCcud2lr
aScpCisgICAgICAgICAgZWxzZSB3aWtpX2ZpbGVuYW1lKQorCisKK2NsYXNzIFdpa2lCcmFuY2hl
cihvYmplY3QpOgorICAiIiJCcmFuY2hlcyAuLi4iIiIKKworICBkZWYgX19pbml0X18oc2VsZiwg
ZG90X3ZlcnNpb24pOgorICAgIHNlbGYucHJvamVjdCwgc3ZuX3Jvb3RfcGF0aCA9IGNvbW1vbi5H
ZXRTdm5JbmZvKCkKKyAgICBpZiBzZWxmLnByb2plY3Qgbm90IGluICgnZ29vZ2xldGVzdCcsICdn
b29nbGVtb2NrJyk6CisgICAgICBzeXMuZXhpdCgnVGhpcyBzY3JpcHQgbXVzdCBiZSBydW4gaW4g
YSBndGVzdCBvciBnbW9jayBTVk4gd29ya3NwYWNlLicpCisgICAgc2VsZi53aWtpX2RpciA9IHN2
bl9yb290X3BhdGggKyAnL3dpa2knCisgICAgIyBUdXJuICcyLjYnIHRvICdWMl82XycuCisgICAg
c2VsZi52ZXJzaW9uX3ByZWZpeCA9ICdWJyArIGRvdF92ZXJzaW9uLnJlcGxhY2UoJy4nLCAnXycp
ICsgJ18nCisgICAgc2VsZi5maWxlc190b19icmFuY2ggPSBzZWxmLkdldEZpbGVzVG9CcmFuY2go
KQorICAgIHBhZ2VfbmFtZXMgPSBbRHJvcFdpa2lTdWZmaXgoZikgZm9yIGYgaW4gc2VsZi5maWxl
c190b19icmFuY2hdCisgICAgIyBBIGxpbmsgdG8gRm9vLndpa2kgaXMgaW4gb25lIG9mIHRoZSBm
b2xsb3dpbmcgZm9ybXM6CisgICAgIyAgIFtGb28gd29yZHNdCisgICAgIyAgIFtGb28jQW5jaG9y
IHdvcmRzXQorICAgICMgICBbaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS8uLi4vd2lraS9Gb28gd29y
ZHNdCisgICAgIyAgIFtodHRwOi8vY29kZS5nb29nbGUuY29tLy4uLi93aWtpL0ZvbyNBbmNob3Ig
d29yZHNdCisgICAgIyBXZSB3YW50IHRvIHJlcGxhY2UgJ0Zvbycgd2l0aCAnVjJfNl9Gb28nIGlu
IHRoZSBhYm92ZSBjYXNlcy4KKyAgICBzZWxmLnNlYXJjaF9mb3JfcmUgPSByZS5jb21waWxlKAor
ICAgICAgICAjIFRoaXMgcmVnZXggbWF0Y2hlcyBlaXRoZXIKKyAgICAgICAgIyAgIFtGb28KKyAg
ICAgICAgIyBvcgorICAgICAgICAjICAgL3dpa2kvRm9vCisgICAgICAgICMgZm9sbG93ZWQgYnkg
YSBzcGFjZSBvciBhICMsIHdoZXJlIEZvbyBpcyB0aGUgbmFtZSBvZiBhbgorICAgICAgICAjIHVu
dmVyc2lvbmVkIHdpa2kgcGFnZS4KKyAgICAgICAgcicoXFt8L3dpa2kvKSglcykoWyAjXSknICUg
J3wnLmpvaW4ocGFnZV9uYW1lcykpCisgICAgc2VsZi5yZXBsYWNlX3dpdGggPSByJ1wxJXNcMlwz
JyAlIChzZWxmLnZlcnNpb25fcHJlZml4LCkKKworICBkZWYgR2V0RmlsZXNUb0JyYW5jaChzZWxm
KToKKyAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiAud2lraSBmaWxlIG5hbWVzIHRoYXQgbmVlZCB0
byBiZSBicmFuY2hlZC4iIiIKKworICAgIHVudmVyc2lvbmVkX3dpa2lzID0gKEdURVNUX1VOVkVS
U0lPTkVEX1dJS0lTIGlmIHNlbGYucHJvamVjdCA9PSAnZ29vZ2xldGVzdCcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIEdNT0NLX1VOVkVSU0lPTkVEX1dJS0lTKQorICAgIHJldHVybiBb
ZiBmb3IgZiBpbiBvcy5saXN0ZGlyKHNlbGYud2lraV9kaXIpCisgICAgICAgICAgICBpZiAoZi5l
bmRzd2l0aCgnLndpa2knKSBhbmQKKyAgICAgICAgICAgICAgICBub3QgcmUubWF0Y2gocideVlxk
JywgZikgYW5kICAjIEV4Y2x1ZGVkIHZlcnNpb25lZCAud2lraSBmaWxlcy4KKyAgICAgICAgICAg
ICAgICBmIG5vdCBpbiB1bnZlcnNpb25lZF93aWtpcyldCisKKyAgZGVmIEJyYW5jaEZpbGVzKHNl
bGYpOgorICAgICIiIkJyYW5jaGVzIHRoZSAud2lraSBmaWxlcyBuZWVkZWQgdG8gYmUgYnJhbmNo
ZWQuIiIiCisKKyAgICBwcmludCAnQnJhbmNoaW5nICVkIC53aWtpIGZpbGVzOicgJSAobGVuKHNl
bGYuZmlsZXNfdG9fYnJhbmNoKSwpCisgICAgb3MuY2hkaXIoc2VsZi53aWtpX2RpcikKKyAgICBm
b3IgZiBpbiBzZWxmLmZpbGVzX3RvX2JyYW5jaDoKKyAgICAgIGNvbW1hbmQgPSAnc3ZuIGNwICVz
ICVzJXMnICUgKGYsIHNlbGYudmVyc2lvbl9wcmVmaXgsIGYpCisgICAgICBwcmludCBjb21tYW5k
CisgICAgICBvcy5zeXN0ZW0oY29tbWFuZCkKKworICBkZWYgVXBkYXRlTGlua3NJbkJyYW5jaGVk
RmlsZXMoc2VsZik6CisKKyAgICBmb3IgZiBpbiBzZWxmLmZpbGVzX3RvX2JyYW5jaDoKKyAgICAg
IHNvdXJjZV9maWxlID0gb3MucGF0aC5qb2luKHNlbGYud2lraV9kaXIsIGYpCisgICAgICB2ZXJz
aW9uZWRfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndpa2lfZGlyLCBzZWxmLnZlcnNpb25fcHJl
Zml4ICsgZikKKyAgICAgIHByaW50ICdVcGRhdGluZyBsaW5rcyBpbiAlcy4nICUgKHZlcnNpb25l
ZF9maWxlLCkKKyAgICAgIHRleHQgPSBmaWxlKHNvdXJjZV9maWxlLCAncicpLnJlYWQoKQorICAg
ICAgbmV3X3RleHQgPSBzZWxmLnNlYXJjaF9mb3JfcmUuc3ViKHNlbGYucmVwbGFjZV93aXRoLCB0
ZXh0KQorICAgICAgZmlsZSh2ZXJzaW9uZWRfZmlsZSwgJ3cnKS53cml0ZShuZXdfdGV4dCkKKwor
CitkZWYgbWFpbigpOgorICBpZiBsZW4oc3lzLmFyZ3YpICE9IDI6CisgICAgc3lzLmV4aXQoX19k
b2NfXykKKworICBicmFuY2hlciA9IFdpa2lCcmFuY2hlcihzeXMuYXJndlsxXSkKKyAgYnJhbmNo
ZXIuQnJhbmNoRmlsZXMoKQorICBicmFuY2hlci5VcGRhdGVMaW5rc0luQnJhbmNoZWRGaWxlcygp
CisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgbWFpbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUKaW5kZXggZmZjMGM5MGFkOTk1NzJk
Zjk0YWZiNWI2NDEzNmE5YzI5NDg4YWUwNi4uY2RmZjU4NDYzN2I3YTZlOWRmMWZhNDNjZThmNTg4
YzQzODE1ZTU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy90
ZXN0L01ha2VmaWxlCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvdGVzdC9N
YWtlZmlsZQpAQCAtMjEsNyArMjEsOSBAQCBTQU1QTEVfRElSID0gLi4vLi4vc2FtcGxlcwogR1RF
U1RfTUFJTl9DQyA9IC4uLy4uL3NyYy9ndGVzdF9tYWluLmNjCiAKICMgRmxhZ3MgcGFzc2VkIHRv
IHRoZSBwcmVwcm9jZXNzb3IuCi1DUFBGTEFHUyArPSAtSSQoRlVTRURfR1RFU1RfRElSKQorIyBX
ZSBoYXZlIG5vIGlkZWEgaGVyZSB3aGV0aGVyIHB0aHJlYWRzIGlzIGF2YWlsYWJsZSBpbiB0aGUg
c3lzdGVtLCBzbworIyBkaXNhYmxlIGl0cyB1c2UuCitDUFBGTEFHUyArPSAtSSQoRlVTRURfR1RF
U1RfRElSKSAtREdURVNUX0hBU19QVEhSRUFEPTAKIAogIyBGbGFncyBwYXNzZWQgdG8gdGhlIEMr
KyBjb21waWxlci4KIENYWEZMQUdTICs9IC1nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zY3JpcHRzL3VwbG9hZC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Njcmlw
dHMvdXBsb2FkLnB5CmluZGV4IDZlNmY5YTE0NzE5ZWY4YzlmZGI2MDNhZDUwYmRkMzVkYzc5OTZl
MmQuLmM4NTJlNGM5MWUwNmVmN2M0OWUwMzg2ODM1MDlmZmQ5NDk1YzgyMGYgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvdXBsb2FkLnB5CisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvdXBsb2FkLnB5CkBAIC0yNDIsNyArMjQyLDcgQEAgY2xh
c3MgQWJzdHJhY3RScGNTZXJ2ZXIob2JqZWN0KToKICAgICBUaGUgYXV0aGVudGljYXRpb24gcHJv
Y2VzcyB3b3JrcyBhcyBmb2xsb3dzOgogICAgICAxKSBXZSBnZXQgYSB1c2VybmFtZSBhbmQgcGFz
c3dvcmQgZnJvbSB0aGUgdXNlcgogICAgICAyKSBXZSB1c2UgQ2xpZW50TG9naW4gdG8gb2J0YWlu
IGFuIEFVVEggdG9rZW4gZm9yIHRoZSB1c2VyCi0gICAgICAgIChzZWUgaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9hcGlzL2FjY291bnRzL0F1dGhGb3JJbnN0YWxsZWRBcHBzLmh0bWwpLgorICAgICAg
ICAoc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2lkZW50aXR5L3Byb3RvY29scy9B
dXRoRm9ySW5zdGFsbGVkQXBwcykuCiAgICAgIDMpIFdlIHBhc3MgdGhlIGF1dGggdG9rZW4gdG8g
L19haC9sb2dpbiBvbiB0aGUgc2VydmVyIHRvIG9idGFpbiBhbgogICAgICAgICBhdXRoZW50aWNh
dGlvbiBjb29raWUuIElmIGxvZ2luIHdhcyBzdWNjZXNzZnVsLCBpdCB0cmllcyB0byByZWRpcmVj
dAogICAgICAgICB1cyB0byB0aGUgVVJMIHdlIHByb3ZpZGVkLgpAQCAtNTA2LDcgKzUwNiw3IEBA
IGRlZiBFbmNvZGVNdWx0aXBhcnRGb3JtRGF0YShmaWVsZHMsIGZpbGVzKToKICAgICAoY29udGVu
dF90eXBlLCBib2R5KSByZWFkeSBmb3IgaHR0cGxpYi5IVFRQIGluc3RhbmNlLgogCiAgIFNvdXJj
ZToKLSAgICBodHRwOi8vYXNwbi5hY3RpdmVzdGF0ZS5jb20vQVNQTi9Db29rYm9vay9QeXRob24v
UmVjaXBlLzE0NjMwNgorICAgIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE2MDExNjA1
MjAwMS9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzE0NjMwNgogICAiIiIKICAgQk9VTkRB
UlkgPSAnLU0tQS1HLUktQy0tLUItTy1VLU4tRC1BLVItWS0nCiAgIENSTEYgPSAnXHJcbicKQEAg
LTczMiw3ICs3MzIsNyBAQCBjbGFzcyBTdWJ2ZXJzaW9uVkNTKFZlcnNpb25Db250cm9sU3lzdGVt
KToKICAgICBlbHNlOgogICAgICAgc2VsZi5yZXZfc3RhcnQgPSBzZWxmLnJldl9lbmQgPSBOb25l
CiAgICAgIyBDYWNoZSBvdXRwdXQgZnJvbSAic3ZuIGxpc3QgLXIgUkVWTk8gZGlybmFtZSIuCi0g
ICAgIyBLZXlzOiBkaXJuYW1lLCBWYWx1ZXM6IDItdHVwbGUgKG91cHV0IGZvciBzdGFydCByZXYg
YW5kIGVuZCByZXYpLgorICAgICMgS2V5czogZGlybmFtZSwgVmFsdWVzOiAyLXR1cGxlIChvdXRw
dXQgZm9yIHN0YXJ0IHJldiBhbmQgZW5kIHJldikuCiAgICAgc2VsZi5zdm5sc19jYWNoZSA9IHt9
CiAgICAgIyBTVk4gYmFzZSBVUkwgaXMgcmVxdWlyZWQgdG8gZmV0Y2ggZmlsZXMgZGVsZXRlZCBp
biBhbiBvbGRlciByZXZpc2lvbi4KICAgICAjIFJlc3VsdCBpcyBjYWNoZWQgdG8gbm90IGd1ZXNz
IGl0IG92ZXIgYW5kIG92ZXIgYWdhaW4gaW4gR2V0QmFzZUZpbGUoKS4KQEAgLTgwNyw3ICs4MDcs
NyBAQCBjbGFzcyBTdWJ2ZXJzaW9uVkNTKFZlcnNpb25Db250cm9sU3lzdGVtKToKICAgICAjIHN2
biBjYXQgdHJhbnNsYXRlcyBrZXl3b3JkcyBidXQgc3ZuIGRpZmYgZG9lc24ndC4gQXMgYSByZXN1
bHQgb2YgdGhpcwogICAgICMgYmVoYXZpb3IgcGF0Y2hpbmcuUGF0Y2hDaHVua3MoKSBmYWlscyB3
aXRoIGEgY2h1bmsgbWlzbWF0Y2ggZXJyb3IuCiAgICAgIyBUaGlzIHBhcnQgd2FzIG9yaWdpbmFs
bHkgd3JpdHRlbiBieSB0aGUgUmV2aWV3IEJvYXJkIGRldmVsb3BtZW50IHRlYW0KLSAgICAjIHdo
byBoYWQgdGhlIHNhbWUgcHJvYmxlbSAoaHR0cDovL3Jldmlld3MucmV2aWV3LWJvYXJkLm9yZy9y
LzI3Ni8pLgorICAgICMgd2hvIGhhZCB0aGUgc2FtZSBwcm9ibGVtIChodHRwczovL3Jldmlld3Mu
cmV2aWV3Ym9hcmQub3JnL3IvMjc2LykuCiAgICAgIyBNYXBwaW5nIG9mIGtleXdvcmRzIHRvIGtu
b3duIGFsaWFzZXMKICAgICBzdm5fa2V5d29yZHMgPSB7CiAgICAgICAjIFN0YW5kYXJkIGtleXdv
cmRzCkBAIC04NjAsNyArODYwLDcgQEAgY2xhc3MgU3VidmVyc2lvblZDUyhWZXJzaW9uQ29udHJv
bFN5c3RlbSk6CiAgICAgICBzdGF0dXNfbGluZXMgPSBzdGF0dXMuc3BsaXRsaW5lcygpCiAgICAg
ICAjIElmIGZpbGUgaXMgaW4gYSBjbCwgdGhlIG91dHB1dCB3aWxsIGJlZ2luIHdpdGgKICAgICAg
ICMgIlxuLS0tIENoYW5nZWxpc3QgJ2NsX25hbWUnOlxuIi4gIFNlZQotICAgICAgIyBodHRwOi8v
c3ZuLmNvbGxhYi5uZXQvcmVwb3Mvc3ZuL3RydW5rL25vdGVzL2NoYW5nZWxpc3QtZGVzaWduLnR4
dAorICAgICAgIyBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAwOTA5MTgyMzQ4MTUvc3Zu
LmNvbGxhYi5uZXQvcmVwb3Mvc3ZuL3RydW5rL25vdGVzL2NoYW5nZWxpc3QtZGVzaWduLnR4dAog
ICAgICAgaWYgKGxlbihzdGF0dXNfbGluZXMpID09IDMgYW5kCiAgICAgICAgICAgbm90IHN0YXR1
c19saW5lc1swXSBhbmQKICAgICAgICAgICBzdGF0dXNfbGluZXNbMV0uc3RhcnRzd2l0aCgiLS0t
IENoYW5nZWxpc3QiKSk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMv
Z3Rlc3QtYWxsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWFsbC5jYwpp
bmRleCBmZTM0NzY1ZmI2NzIxOGE1NmNiNWUyNTJhNzBlNjhhMzZiYzg4ZDA3Li5iMjE3YTE4MDA2
YjBjOGJkYWY0YTlmOWI2ZDA2ZGU0ZmQ4YWQ5ZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtYWxsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NyYy9ndGVzdC1hbGwuY2MKQEAgLTI2LDIyICsyNiwyMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiBtaGV1bGVAZ29v
Z2xlLmNvbSAoTWFya3VzIEhldWxlKQotLy8KLS8vIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdv
cmsgKEdvb2dsZSBUZXN0KQorLy8gR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1l
d29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gU29tZXRpbWVzIGl0J3MgZGVzaXJhYmxlIHRvIGJ1
aWxkIEdvb2dsZSBUZXN0IGJ5IGNvbXBpbGluZyBhIHNpbmdsZSBmaWxlLgogLy8gVGhpcyBmaWxl
IHNlcnZlcyB0aGlzIHB1cnBvc2UuCiAKIC8vIFRoaXMgbGluZSBlbnN1cmVzIHRoYXQgZ3Rlc3Qu
aCBjYW4gYmUgY29tcGlsZWQgb24gaXRzIG93biwgZXZlbgogLy8gd2hlbiBpdCdzIGZ1c2VkLgot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogLy8g
VGhlIGZvbGxvd2luZyBsaW5lcyBwdWxsIGluIHRoZSByZWFsIGd0ZXN0ICouY2MgZmlsZXMuCiAj
aW5jbHVkZSAic3JjL2d0ZXN0LmNjIgogI2luY2x1ZGUgInNyYy9ndGVzdC1kZWF0aC10ZXN0LmNj
IgogI2luY2x1ZGUgInNyYy9ndGVzdC1maWxlcGF0aC5jYyIKICNpbmNsdWRlICJzcmMvZ3Rlc3Qt
cG9ydC5jYyIKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtcHJpbnRlcnMuY2MiCiAjaW5jbHVkZSAic3Jj
L2d0ZXN0LXRlc3QtcGFydC5jYyIKICNpbmNsdWRlICJzcmMvZ3Rlc3QtdHlwZWQtdGVzdC5jYyIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1kZWF0aC10ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MKaW5k
ZXggMGNmNzgyNWJjYWM3OWZhMzVkMGExMjQ4ZTIzMDhhMjRhYTYyN2I4YS4uMDkwODM1NTE2MTJl
M2MzYjliM2JkN2QxZWU2MDZjMThmZmI1ZjczYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MKQEAgLTI2LDUyICsyNiw2NSBAQAogLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiksIHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9z
ZXYpCisKIC8vCiAvLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBkZWF0aCB0ZXN0cy4KIAotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9n
dGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgorI2luY2x1
ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5h
bC9jdXN0b20vZ3Rlc3QuaCIKIAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCiAKLSNpZiBHVEVT
VF9PU19NQUMKLSNpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgotI2VuZGlmICAvLyBHVEVTVF9PU19N
QUMKKyMgaWYgR1RFU1RfT1NfTUFDCisjICBpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgorIyBlbmRp
ZiAgLy8gR1RFU1RfT1NfTUFDCiAKLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZjbnRs
Lmg+Ci0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+CisjIGluY2x1ZGUg
PGVycm5vLmg+CisjIGluY2x1ZGUgPGZjbnRsLmg+CisjIGluY2x1ZGUgPGxpbWl0cy5oPgogCi0j
aWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbHNlCi0jaW5jbHVk
ZSA8c3lzL21tYW4uaD4KLSNpbmNsdWRlIDxzeXMvd2FpdC5oPgotI2VuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCisjIGlmIEdURVNUX09TX0xJTlVYCisjICBpbmNsdWRlIDxzaWduYWwuaD4KKyMg
ZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RF
U1QKKyMgaW5jbHVkZSA8c3RkYXJnLmg+CisKKyMgaWYgR1RFU1RfT1NfV0lORE9XUworIyAgaW5j
bHVkZSA8d2luZG93cy5oPgorIyBlbHNlCisjICBpbmNsdWRlIDxzeXMvbW1hbi5oPgorIyAgaW5j
bHVkZSA8c3lzL3dhaXQuaD4KKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworIyBpZiBH
VEVTVF9PU19RTlgKKyMgIGluY2x1ZGUgPHNwYXduLmg+CisjIGVuZGlmICAvLyBHVEVTVF9PU19R
TlgKKworIyBpZiBHVEVTVF9PU19GVUNIU0lBCisjICBpbmNsdWRlIDxsaWIvZmRpby9pby5oPgor
IyAgaW5jbHVkZSA8bGliL2ZkaW8vc3Bhd24uaD4KKyMgIGluY2x1ZGUgPHppcmNvbi9wcm9jZXNz
YXJncy5oPgorIyAgaW5jbHVkZSA8emlyY29uL3N5c2NhbGxzLmg+CisjICBpbmNsdWRlIDx6aXJj
b24vc3lzY2FsbHMvcG9ydC5oPgorIyBlbmRpZiAgLy8gR1RFU1RfT1NfRlVDSFNJQQogCi0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0
ZXN0LXN0cmluZy5oPgorI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCi0vLyBJbmRp
Y2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdz
Ci0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwt
aW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3Iu
ICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBp
bmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBH
VEVTVF9JTVBMRU1FTlRBVElPTl8gMQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCIK
KyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKICNpbmNsdWRlICJzcmMv
Z3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCiAKIG5h
bWVzcGFjZSB0ZXN0aW5nIHsKIAogLy8gQ29uc3RhbnRzLgogCiAvLyBUaGUgZGVmYXVsdCBkZWF0
aCB0ZXN0IHN0eWxlLgotc3RhdGljIGNvbnN0IGNoYXIga0RlZmF1bHREZWF0aFRlc3RTdHlsZVtd
ID0gImZhc3QiOworLy8KKy8vIFRoaXMgaXMgZGVmaW5lZCBpbiBpbnRlcm5hbC9ndGVzdC1wb3J0
LmggYXMgImZhc3QiLCBidXQgY2FuIGJlIG92ZXJyaWRkZW4gYnkKKy8vIGEgZGVmaW5pdGlvbiBp
biBpbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oLiBUaGUgcmVjb21tZW5kZWQgdmFsdWUsIHdo
aWNoIGlzCisvLyB1c2VkIGludGVybmFsbHkgYXQgR29vZ2xlLCBpcyAidGhyZWFkc2FmZSIuCitz
dGF0aWMgY29uc3QgY2hhciBrRGVmYXVsdERlYXRoVGVzdFN0eWxlW10gPSBHVEVTVF9ERUZBVUxU
X0RFQVRIX1RFU1RfU1RZTEU7CiAKIEdURVNUX0RFRklORV9zdHJpbmdfKAogICAgIGRlYXRoX3Rl
c3Rfc3R5bGUsCkBAIC0xMDAsMzYgKzExMyw3OSBAQCBHVEVTVF9ERUZJTkVfc3RyaW5nXygKICAg
ICAiSW5kaWNhdGVzIHRoZSBmaWxlLCBsaW5lIG51bWJlciwgdGVtcG9yYWwgaW5kZXggb2YgIgog
ICAgICJ0aGUgc2luZ2xlIGRlYXRoIHRlc3QgdG8gcnVuLCBhbmQgYSBmaWxlIGRlc2NyaXB0b3Ig
dG8gIgogICAgICJ3aGljaCBhIHN1Y2Nlc3MgY29kZSBtYXkgYmUgc2VudCwgYWxsIHNlcGFyYXRl
ZCBieSAiCi0gICAgImNvbG9ucy4gIFRoaXMgZmxhZyBpcyBzcGVjaWZpZWQgaWYgYW5kIG9ubHkg
aWYgdGhlIGN1cnJlbnQgIgorICAgICJ0aGUgJ3wnIGNoYXJhY3RlcnMuICBUaGlzIGZsYWcgaXMg
c3BlY2lmaWVkIGlmIGFuZCBvbmx5IGlmIHRoZSBjdXJyZW50ICIKICAgICAicHJvY2VzcyBpcyBh
IHN1Yi1wcm9jZXNzIGxhdW5jaGVkIGZvciBydW5uaW5nIGEgdGhyZWFkLXNhZmUgIgogICAgICJk
ZWF0aCB0ZXN0LiAgRk9SIElOVEVSTkFMIFVTRSBPTkxZLiIpOwogfSAgLy8gbmFtZXNwYWNlIGlu
dGVybmFsCiAKICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogCituYW1lc3BhY2UgaW50ZXJuYWwg
eworCisvLyBWYWxpZCBvbmx5IGZvciBmYXN0IGRlYXRoIHRlc3RzLiBJbmRpY2F0ZXMgdGhlIGNv
ZGUgaXMgcnVubmluZyBpbiB0aGUKKy8vIGNoaWxkIHByb2Nlc3Mgb2YgYSBmYXN0IHN0eWxlIGRl
YXRoIHRlc3QuCisjIGlmICFHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19GVUNIU0lBCitz
dGF0aWMgYm9vbCBnX2luX2Zhc3RfZGVhdGhfdGVzdF9jaGlsZCA9IGZhbHNlOworIyBlbmRpZgor
CisvLyBSZXR1cm5zIGEgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNhbGxl
ciBpcyBjdXJyZW50bHkKKy8vIGV4ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiB0aGUgZGVhdGgg
dGVzdCBjaGlsZCBwcm9jZXNzLiAgVG9vbHMgc3VjaCBhcworLy8gVmFsZ3JpbmQgaGVhcCBjaGVj
a2VycyBtYXkgbmVlZCB0aGlzIHRvIG1vZGlmeSB0aGVpciBiZWhhdmlvciBpbiBkZWF0aAorLy8g
dGVzdHMuICBJTVBPUlRBTlQ6IFRoaXMgaXMgYW4gaW50ZXJuYWwgdXRpbGl0eS4gIFVzaW5nIGl0
IG1heSBicmVhayB0aGUKKy8vIGltcGxlbWVudGF0aW9uIG9mIGRlYXRoIHRlc3RzLiAgVXNlciBj
b2RlIE1VU1QgTk9UIHVzZSBpdC4KK2Jvb2wgSW5EZWF0aFRlc3RDaGlsZCgpIHsKKyMgaWYgR1RF
U1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19GVUNIU0lBCisKKyAgLy8gT24gV2luZG93cyBhbmQg
RnVjaHNpYSwgZGVhdGggdGVzdHMgYXJlIHRocmVhZC1zYWZlIHJlZ2FyZGxlc3Mgb2YgdGhlIHZh
bHVlCisgIC8vIG9mIHRoZSBkZWF0aF90ZXN0X3N0eWxlIGZsYWcuCisgIHJldHVybiAhR1RFU1Rf
RkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkuZW1wdHkoKTsKKworIyBlbHNlCisKKyAgaWYg
KEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPT0gInRocmVhZHNhZmUiKQorICAgIHJldHVy
biAhR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkuZW1wdHkoKTsKKyAgZWxzZQor
ICAgIHJldHVybiBnX2luX2Zhc3RfZGVhdGhfdGVzdF9jaGlsZDsKKyNlbmRpZgorfQorCit9ICAv
LyBuYW1lc3BhY2UgaW50ZXJuYWwKKwogLy8gRXhpdGVkV2l0aENvZGUgY29uc3RydWN0b3IuCiBF
eGl0ZWRXaXRoQ29kZTo6RXhpdGVkV2l0aENvZGUoaW50IGV4aXRfY29kZSkgOiBleGl0X2NvZGVf
KGV4aXRfY29kZSkgewogfQogCiAvLyBFeGl0ZWRXaXRoQ29kZSBmdW5jdGlvbi1jYWxsIG9wZXJh
dG9yLgogYm9vbCBFeGl0ZWRXaXRoQ29kZTo6b3BlcmF0b3IoKShpbnQgZXhpdF9zdGF0dXMpIGNv
bnN0IHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MgfHwgR1RF
U1RfT1NfRlVDSFNJQQorCiAgIHJldHVybiBleGl0X3N0YXR1cyA9PSBleGl0X2NvZGVfOwotI2Vs
c2UKKworIyBlbHNlCisKICAgcmV0dXJuIFdJRkVYSVRFRChleGl0X3N0YXR1cykgJiYgV0VYSVRT
VEFUVVMoZXhpdF9zdGF0dXMpID09IGV4aXRfY29kZV87Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1MKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19GVUNIU0lB
CiB9CiAKLSNpZiAhR1RFU1RfT1NfV0lORE9XUworIyBpZiAhR1RFU1RfT1NfV0lORE9XUyAmJiAh
R1RFU1RfT1NfRlVDSFNJQQogLy8gS2lsbGVkQnlTaWduYWwgY29uc3RydWN0b3IuCiBLaWxsZWRC
eVNpZ25hbDo6S2lsbGVkQnlTaWduYWwoaW50IHNpZ251bSkgOiBzaWdudW1fKHNpZ251bSkgewog
fQogCiAvLyBLaWxsZWRCeVNpZ25hbCBmdW5jdGlvbi1jYWxsIG9wZXJhdG9yLgogYm9vbCBLaWxs
ZWRCeVNpZ25hbDo6b3BlcmF0b3IoKShpbnQgZXhpdF9zdGF0dXMpIGNvbnN0IHsKKyMgIGlmIGRl
ZmluZWQoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8pCisgIHsKKyAgICBib29sIHJl
c3VsdDsKKyAgICBpZiAoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8oc2lnbnVtXywg
ZXhpdF9zdGF0dXMsICZyZXN1bHQpKSB7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAg
fQorIyAgZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8p
CiAgIHJldHVybiBXSUZTSUdOQUxFRChleGl0X3N0YXR1cykgJiYgV1RFUk1TSUcoZXhpdF9zdGF0
dXMpID09IHNpZ251bV87CiB9Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlm
ICAvLyAhR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfRlVDSFNJQQogCiBuYW1lc3BhY2Ug
aW50ZXJuYWwgewogCkBAIC0xMzcsMjIgKzE5MywyNyBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewog
CiAvLyBHZW5lcmF0ZXMgYSB0ZXh0dWFsIGRlc2NyaXB0aW9uIG9mIGEgZ2l2ZW4gZXhpdCBjb2Rl
LCBpbiB0aGUgZm9ybWF0CiAvLyBzcGVjaWZpZWQgYnkgd2FpdCgyKS4KLXN0YXRpYyBTdHJpbmcg
RXhpdFN1bW1hcnkoaW50IGV4aXRfY29kZSkgeworc3RhdGljIHN0ZDo6c3RyaW5nIEV4aXRTdW1t
YXJ5KGludCBleGl0X2NvZGUpIHsKICAgTWVzc2FnZSBtOwotI2lmIEdURVNUX09TX1dJTkRPV1MK
KworIyBpZiBHVEVTVF9PU19XSU5ET1dTIHx8IEdURVNUX09TX0ZVQ0hTSUEKKwogICBtIDw8ICJF
eGl0ZWQgd2l0aCBleGl0IHN0YXR1cyAiIDw8IGV4aXRfY29kZTsKLSNlbHNlCisKKyMgZWxzZQor
CiAgIGlmIChXSUZFWElURUQoZXhpdF9jb2RlKSkgewogICAgIG0gPDwgIkV4aXRlZCB3aXRoIGV4
aXQgc3RhdHVzICIgPDwgV0VYSVRTVEFUVVMoZXhpdF9jb2RlKTsKICAgfSBlbHNlIGlmIChXSUZT
SUdOQUxFRChleGl0X2NvZGUpKSB7CiAgICAgbSA8PCAiVGVybWluYXRlZCBieSBzaWduYWwgIiA8
PCBXVEVSTVNJRyhleGl0X2NvZGUpOwogICB9Ci0jaWZkZWYgV0NPUkVEVU1QCisjICBpZmRlZiBX
Q09SRURVTVAKICAgaWYgKFdDT1JFRFVNUChleGl0X2NvZGUpKSB7CiAgICAgbSA8PCAiIChjb3Jl
IGR1bXBlZCkiOwogICB9Ci0jZW5kaWYKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIyAg
ZW5kaWYKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfRlVDSFNJQQor
CiAgIHJldHVybiBtLkdldFN0cmluZygpOwogfQogCkBAIC0xNjIsNDIgKzIyMyw1OSBAQCBib29s
IEV4aXRlZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1cykgewogICByZXR1cm4gIUV4aXRl
ZFdpdGhDb2RlKDApKGV4aXRfc3RhdHVzKTsKIH0KIAotI2lmICFHVEVTVF9PU19XSU5ET1dTCisj
IGlmICFHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19GVUNIU0lBCiAvLyBHZW5lcmF0ZXMg
YSB0ZXh0dWFsIGZhaWx1cmUgbWVzc2FnZSB3aGVuIGEgZGVhdGggdGVzdCBmaW5kcyBtb3JlIHRo
YW4KIC8vIG9uZSB0aHJlYWQgcnVubmluZywgb3IgY2Fubm90IGRldGVybWluZSB0aGUgbnVtYmVy
IG9mIHRocmVhZHMsIHByaW9yCiAvLyB0byBleGVjdXRpbmcgdGhlIGdpdmVuIHN0YXRlbWVudC4g
IEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUKIC8vIGNhbGxlciBub3QgdG8gcGFzcyBh
IHRocmVhZF9jb3VudCBvZiAxLgotc3RhdGljIFN0cmluZyBEZWF0aFRlc3RUaHJlYWRXYXJuaW5n
KHNpemVfdCB0aHJlYWRfY291bnQpIHsKK3N0YXRpYyBzdGQ6OnN0cmluZyBEZWF0aFRlc3RUaHJl
YWRXYXJuaW5nKHNpemVfdCB0aHJlYWRfY291bnQpIHsKICAgTWVzc2FnZSBtc2c7CiAgIG1zZyA8
PCAiRGVhdGggdGVzdHMgdXNlIGZvcmsoKSwgd2hpY2ggaXMgdW5zYWZlIHBhcnRpY3VsYXJseSIK
ICAgICAgIDw8ICIgaW4gYSB0aHJlYWRlZCBjb250ZXh0LiBGb3IgdGhpcyB0ZXN0LCAiIDw8IEdU
RVNUX05BTUVfIDw8ICIgIjsKLSAgaWYgKHRocmVhZF9jb3VudCA9PSAwKQorICBpZiAodGhyZWFk
X2NvdW50ID09IDApIHsKICAgICBtc2cgPDwgImNvdWxkbid0IGRldGVjdCB0aGUgbnVtYmVyIG9m
IHRocmVhZHMuIjsKLSAgZWxzZQorICB9IGVsc2UgewogICAgIG1zZyA8PCAiZGV0ZWN0ZWQgIiA8
PCB0aHJlYWRfY291bnQgPDwgIiB0aHJlYWRzLiI7CisgIH0KKyAgbXNnIDw8ICIgU2VlICIKKyAg
ICAgICAgICJodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvYmxvYi9tYXN0ZXIv
Z29vZ2xldGVzdC9kb2NzLyIKKyAgICAgICAgICJhZHZhbmNlZC5tZCNkZWF0aC10ZXN0cy1hbmQt
dGhyZWFkcyIKKyAgICAgIDw8ICIgZm9yIG1vcmUgZXhwbGFuYXRpb24gYW5kIHN1Z2dlc3RlZCBz
b2x1dGlvbnMsIGVzcGVjaWFsbHkgaWYiCisgICAgICA8PCAiIHRoaXMgaXMgdGhlIGxhc3QgbWVz
c2FnZSB5b3Ugc2VlIGJlZm9yZSB5b3VyIHRlc3QgdGltZXMgb3V0LiI7CiAgIHJldHVybiBtc2cu
R2V0U3RyaW5nKCk7CiB9Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAv
LyAhR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfRlVDSFNJQQogCiAvLyBGbGFnIGNoYXJh
Y3RlcnMgZm9yIHJlcG9ydGluZyBhIGRlYXRoIHRlc3QgdGhhdCBkaWQgbm90IGRpZS4KIHN0YXRp
YyBjb25zdCBjaGFyIGtEZWF0aFRlc3RMaXZlZCA9ICdMJzsKIHN0YXRpYyBjb25zdCBjaGFyIGtE
ZWF0aFRlc3RSZXR1cm5lZCA9ICdSJzsKK3N0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RUaHJl
dyA9ICdUJzsKIHN0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RJbnRlcm5hbEVycm9yID0gJ0kn
OwogCi0vLyBBbiBlbnVtZXJhdGlvbiBkZXNjcmliaW5nIGFsbCBvZiB0aGUgcG9zc2libGUgd2F5
cyB0aGF0IGEgZGVhdGggdGVzdAotLy8gY2FuIGNvbmNsdWRlLiAgRElFRCBtZWFucyB0aGF0IHRo
ZSBwcm9jZXNzIGRpZWQgd2hpbGUgZXhlY3V0aW5nIHRoZQotLy8gdGVzdCBjb2RlOyBMSVZFRCBt
ZWFucyB0aGF0IHByb2Nlc3MgbGl2ZWQgYmV5b25kIHRoZSBlbmQgb2YgdGhlIHRlc3QKLS8vIGNv
ZGU7IGFuZCBSRVRVUk5FRCBtZWFucyB0aGF0IHRoZSB0ZXN0IHN0YXRlbWVudCBhdHRlbXB0ZWQg
YSAicmV0dXJuLCIKLS8vIHdoaWNoIGlzIG5vdCBhbGxvd2VkLiAgSU5fUFJPR1JFU1MgbWVhbnMg
dGhlIHRlc3QgaGFzIG5vdCB5ZXQKLS8vIGNvbmNsdWRlZC4KLWVudW0gRGVhdGhUZXN0T3V0Y29t
ZSB7IElOX1BST0dSRVNTLCBESUVELCBMSVZFRCwgUkVUVVJORUQgfTsKKyNpZiBHVEVTVF9PU19G
VUNIU0lBCisKKy8vIEZpbGUgZGVzY3JpcHRvciB1c2VkIGZvciB0aGUgcGlwZSBpbiB0aGUgY2hp
bGQgcHJvY2Vzcy4KK3N0YXRpYyBjb25zdCBpbnQga0Z1Y2hzaWFSZWFkUGlwZUZkID0gMzsKKwor
I2VuZGlmCisKKy8vIEFuIGVudW1lcmF0aW9uIGRlc2NyaWJpbmcgYWxsIG9mIHRoZSBwb3NzaWJs
ZSB3YXlzIHRoYXQgYSBkZWF0aCB0ZXN0IGNhbgorLy8gY29uY2x1ZGUuICBESUVEIG1lYW5zIHRo
YXQgdGhlIHByb2Nlc3MgZGllZCB3aGlsZSBleGVjdXRpbmcgdGhlIHRlc3QKKy8vIGNvZGU7IExJ
VkVEIG1lYW5zIHRoYXQgcHJvY2VzcyBsaXZlZCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgdGVzdCBj
b2RlOworLy8gUkVUVVJORUQgbWVhbnMgdGhhdCB0aGUgdGVzdCBzdGF0ZW1lbnQgYXR0ZW1wdGVk
IHRvIGV4ZWN1dGUgYSByZXR1cm4KKy8vIHN0YXRlbWVudCwgd2hpY2ggaXMgbm90IGFsbG93ZWQ7
IFRIUkVXIG1lYW5zIHRoYXQgdGhlIHRlc3Qgc3RhdGVtZW50CisvLyByZXR1cm5lZCBjb250cm9s
IGJ5IHRocm93aW5nIGFuIGV4Y2VwdGlvbi4gIElOX1BST0dSRVNTIG1lYW5zIHRoZSB0ZXN0Cisv
LyBoYXMgbm90IHlldCBjb25jbHVkZWQuCisvLyBGSVhNRTogVW5pZnkgbmFtZXMgYW5kIHBvc3Np
Ymx5IHZhbHVlcyBmb3IKKy8vIEFib3J0UmVhc29uLCBEZWF0aFRlc3RPdXRjb21lLCBhbmQgZmxh
ZyBjaGFyYWN0ZXJzIGFib3ZlLgorZW51bSBEZWF0aFRlc3RPdXRjb21lIHsgSU5fUFJPR1JFU1Ms
IERJRUQsIExJVkVELCBSRVRVUk5FRCwgVEhSRVcgfTsKIAogLy8gUm91dGluZSBmb3IgYWJvcnRp
bmcgdGhlIHByb2dyYW0gd2hpY2ggaXMgc2FmZSB0byBjYWxsIGZyb20gYW4KIC8vIGV4ZWMtc3R5
bGUgZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzLCBpbiB3aGljaCBjYXNlIHRoZSBlcnJvcgogLy8g
bWVzc2FnZSBpcyBwcm9wYWdhdGVkIGJhY2sgdG8gdGhlIHBhcmVudCBwcm9jZXNzLiAgT3RoZXJ3
aXNlLCB0aGUKIC8vIG1lc3NhZ2UgaXMgc2ltcGx5IHByaW50ZWQgdG8gc3RkZXJyLiAgSW4gZWl0
aGVyIGNhc2UsIHRoZSBwcm9ncmFtCiAvLyB0aGVuIGV4aXRzIHdpdGggc3RhdHVzIDEuCi12b2lk
IERlYXRoVGVzdEFib3J0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgeworc3RhdGljIHZvaWQgRGVh
dGhUZXN0QWJvcnQoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsKICAgLy8gT24gYSBQT1NJ
WCBzeXN0ZW0sIHRoaXMgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCBmcm9tIGEgdGhyZWFkc2FmZS1z
dHlsZQogICAvLyBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nlc3MsIHdoaWNoIG9wZXJhdGVzIG9uIGEg
dmVyeSBzbWFsbCBzdGFjay4gIFVzZQogICAvLyB0aGUgaGVhcCBmb3IgYW55IGFkZGl0aW9uYWwg
bm9uLW1pbnVzY3VsZSBtZW1vcnkgcmVxdWlyZW1lbnRzLgpAQCAtMjEyLDE4ICsyOTAsMTkgQEAg
dm9pZCBEZWF0aFRlc3RBYm9ydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsKICAgfSBlbHNlIHsK
ICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgbWVzc2FnZS5jX3N0cigpKTsKICAgICBmZmx1c2go
c3RkZXJyKTsKLSAgICBhYm9ydCgpOworICAgIHBvc2l4OjpBYm9ydCgpOwogICB9CiB9CiAKIC8v
IEEgcmVwbGFjZW1lbnQgZm9yIENIRUNLIHRoYXQgY2FsbHMgRGVhdGhUZXN0QWJvcnQgaWYgdGhl
IGFzc2VydGlvbgogLy8gZmFpbHMuCi0jZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGV4
cHJlc3Npb24pIFwKKyMgZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGV4cHJlc3Npb24p
IFwKICAgZG8geyBcCiAgICAgaWYgKCE6OnRlc3Rpbmc6OmludGVybmFsOjpJc1RydWUoZXhwcmVz
c2lvbikpIHsgXAotICAgICAgRGVhdGhUZXN0QWJvcnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3Ry
aW5nOjpGb3JtYXQoIFwKLSAgICAgICAgICAiQ0hFQ0sgZmFpbGVkOiBGaWxlICVzLCBsaW5lICVk
OiAlcyIsIFwKLSAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sICNleHByZXNzaW9uKSk7IFwK
KyAgICAgIERlYXRoVGVzdEFib3J0KCBcCisgICAgICAgICAgOjpzdGQ6OnN0cmluZygiQ0hFQ0sg
ZmFpbGVkOiBGaWxlICIpICsgX19GSUxFX18gKyAgIiwgbGluZSAiIFwKKyAgICAgICAgICArIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlN0cmVhbWFibGVUb1N0cmluZyhfX0xJTkVfXykgKyAiOiAiIFwK
KyAgICAgICAgICArICNleHByZXNzaW9uKTsgXAogICAgIH0gXAogICB9IHdoaWxlICg6OnRlc3Rp
bmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgpKQogCkBAIC0yMzQsMjIgKzMxMywyMyBAQCB2b2lk
IERlYXRoVGVzdEFib3J0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewogLy8gZXZhbHVhdGVzIHRo
ZSBleHByZXNzaW9uIGFzIGxvbmcgYXMgaXQgZXZhbHVhdGVzIHRvIC0xIGFuZCBzZXRzCiAvLyBl
cnJubyB0byBFSU5UUi4gIElmIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAtMSBidXQgZXJy
bm8gaXMKIC8vIHNvbWV0aGluZyBvdGhlciB0aGFuIEVJTlRSLCBEZWF0aFRlc3RBYm9ydCBpcyBj
YWxsZWQuCi0jZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oZXhwcmVzc2lv
bikgXAorIyBkZWZpbmUgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhleHByZXNzaW9u
KSBcCiAgIGRvIHsgXAogICAgIGludCBndGVzdF9yZXR2YWw7IFwKICAgICBkbyB7IFwKICAgICAg
IGd0ZXN0X3JldHZhbCA9IChleHByZXNzaW9uKTsgXAogICAgIH0gd2hpbGUgKGd0ZXN0X3JldHZh
bCA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUik7IFwKICAgICBpZiAoZ3Rlc3RfcmV0dmFsID09IC0x
KSB7IFwKLSAgICAgIERlYXRoVGVzdEFib3J0KDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZzo6
Rm9ybWF0KCBcCi0gICAgICAgICAgIkNIRUNLIGZhaWxlZDogRmlsZSAlcywgbGluZSAlZDogJXMg
IT0gLTEiLCBcCi0gICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCAjZXhwcmVzc2lvbikpOyBc
CisgICAgICBEZWF0aFRlc3RBYm9ydCggXAorICAgICAgICAgIDo6c3RkOjpzdHJpbmcoIkNIRUNL
IGZhaWxlZDogRmlsZSAiKSArIF9fRklMRV9fICsgIiwgbGluZSAiIFwKKyAgICAgICAgICArIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlN0cmVhbWFibGVUb1N0cmluZyhfX0xJTkVfXykgKyAiOiAiIFwK
KyAgICAgICAgICArICNleHByZXNzaW9uICsgIiAhPSAtMSIpOyBcCiAgICAgfSBcCiAgIH0gd2hp
bGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCiAKIC8vIFJldHVybnMgdGhl
IG1lc3NhZ2UgZGVzY3JpYmluZyB0aGUgbGFzdCBzeXN0ZW0gZXJyb3IgaW4gZXJybm8uCi1TdHJp
bmcgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKSB7Ci0gICAgcmV0dXJuIFN0cmluZyhlcnJubyA9
PSAwID8gIiIgOiBwb3NpeDo6U3RyRXJyb3IoZXJybm8pKTsKK3N0ZDo6c3RyaW5nIEdldExhc3RF
cnJub0Rlc2NyaXB0aW9uKCkgeworICAgIHJldHVybiBlcnJubyA9PSAwID8gIiIgOiBwb3NpeDo6
U3RyRXJyb3IoZXJybm8pOwogfQogCiAvLyBUaGlzIGlzIGNhbGxlZCBmcm9tIGEgZGVhdGggdGVz
dCBwYXJlbnQgcHJvY2VzcyB0byByZWFkIGEgZmFpbHVyZQpAQCAtMjk5LDExICszNzksMTEgQEAg
Y29uc3QgY2hhciogRGVhdGhUZXN0OjpMYXN0TWVzc2FnZSgpIHsKICAgcmV0dXJuIGxhc3RfZGVh
dGhfdGVzdF9tZXNzYWdlXy5jX3N0cigpOwogfQogCi12b2lkIERlYXRoVGVzdDo6c2V0X2xhc3Rf
ZGVhdGhfdGVzdF9tZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewordm9pZCBEZWF0aFRl
c3Q6OnNldF9sYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2Fn
ZSkgewogICBsYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZV8gPSBtZXNzYWdlOwogfQogCi1TdHJpbmcg
RGVhdGhUZXN0OjpsYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZV87CitzdGQ6OnN0cmluZyBEZWF0aFRl
c3Q6Omxhc3RfZGVhdGhfdGVzdF9tZXNzYWdlXzsKIAogLy8gUHJvdmlkZXMgY3Jvc3MgcGxhdGZv
cm0gaW1wbGVtZW50YXRpb24gZm9yIHNvbWUgZGVhdGggZnVuY3Rpb25hbGl0eS4KIGNsYXNzIERl
YXRoVGVzdEltcGwgOiBwdWJsaWMgRGVhdGhUZXN0IHsKQEAgLTM4OCw2ICs0NjgsOSBAQCB2b2lk
IERlYXRoVGVzdEltcGw6OlJlYWRBbmRJbnRlcnByZXRTdGF0dXNCeXRlKCkgewogICAgICAgY2Fz
ZSBrRGVhdGhUZXN0UmV0dXJuZWQ6CiAgICAgICAgIHNldF9vdXRjb21lKFJFVFVSTkVEKTsKICAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIGtEZWF0aFRlc3RUaHJldzoKKyAgICAgICAgc2V0X291
dGNvbWUoVEhSRVcpOworICAgICAgICBicmVhazsKICAgICAgIGNhc2Uga0RlYXRoVGVzdExpdmVk
OgogICAgICAgICBzZXRfb3V0Y29tZShMSVZFRCk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDE2LDE5
ICs0OTksNDYgQEAgdm9pZCBEZWF0aFRlc3RJbXBsOjpBYm9ydChBYm9ydFJlYXNvbiByZWFzb24p
IHsKICAgLy8gaXQgZmluZHMgYW55IGRhdGEgaW4gb3VyIHBpcGUuICBTbywgaGVyZSB3ZSB3cml0
ZSBhIHNpbmdsZSBmbGFnIGJ5dGUKICAgLy8gdG8gdGhlIHBpcGUsIHRoZW4gZXhpdC4KICAgY29u
c3QgY2hhciBzdGF0dXNfY2ggPQotICAgICAgcmVhc29uID09IFRFU1RfRElEX05PVF9ESUUgPyBr
RGVhdGhUZXN0TGl2ZWQgOiBrRGVhdGhUZXN0UmV0dXJuZWQ7CisgICAgICByZWFzb24gPT0gVEVT
VF9ESURfTk9UX0RJRSA/IGtEZWF0aFRlc3RMaXZlZCA6CisgICAgICByZWFzb24gPT0gVEVTVF9U
SFJFV19FWENFUFRJT04gPyBrRGVhdGhUZXN0VGhyZXcgOiBrRGVhdGhUZXN0UmV0dXJuZWQ7CisK
ICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhwb3NpeDo6V3JpdGUod3JpdGVfZmQo
KSwgJnN0YXR1c19jaCwgMSkpOwotICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKHBv
c2l4OjpDbG9zZSh3cml0ZV9mZCgpKSk7CisgIC8vIFdlIGFyZSBsZWFraW5nIHRoZSBkZXNjcmlw
dG9yIGhlcmUgYmVjYXVzZSBvbiBzb21lIHBsYXRmb3JtcyAoaS5lLiwKKyAgLy8gd2hlbiBidWls
dCBhcyBXaW5kb3dzIERMTCksIGRlc3RydWN0b3JzIG9mIGdsb2JhbCBvYmplY3RzIHdpbGwgc3Rp
bGwKKyAgLy8gcnVuIGFmdGVyIGNhbGxpbmcgX2V4aXQoKS4gT24gc3VjaCBzeXN0ZW1zLCB3cml0
ZV9mZF8gd2lsbCBiZQorICAvLyBpbmRpcmVjdGx5IGNsb3NlZCBmcm9tIHRoZSBkZXN0cnVjdG9y
IG9mIFVuaXRUZXN0SW1wbCwgY2F1c2luZyBkb3VibGUKKyAgLy8gY2xvc2UgaWYgaXQgaXMgYWxz
byBjbG9zZWQgaGVyZS4gT24gZGVidWcgY29uZmlndXJhdGlvbnMsIGRvdWJsZSBjbG9zZQorICAv
LyBtYXkgYXNzZXJ0LiBBcyB0aGVyZSBhcmUgbm8gaW4tcHJvY2VzcyBidWZmZXJzIHRvIGZsdXNo
IGhlcmUsIHdlIGFyZQorICAvLyByZWx5aW5nIG9uIHRoZSBPUyB0byBjbG9zZSB0aGUgZGVzY3Jp
cHRvciBhZnRlciB0aGUgcHJvY2VzcyB0ZXJtaW5hdGVzCisgIC8vIHdoZW4gdGhlIGRlc3RydWN0
b3JzIGFyZSBub3QgcnVuLgogICBfZXhpdCgxKTsgIC8vIEV4aXRzIHcvbyBhbnkgbm9ybWFsIGV4
aXQgaG9va3MgKHdlIHdlcmUgc3VwcG9zZWQgdG8gY3Jhc2gpCiB9CiAKKy8vIFJldHVybnMgYW4g
aW5kZW50ZWQgY29weSBvZiBzdGRlcnIgb3V0cHV0IGZvciBhIGRlYXRoIHRlc3QuCisvLyBUaGlz
IG1ha2VzIGRpc3Rpbmd1aXNoaW5nIGRlYXRoIHRlc3Qgb3V0cHV0IGxpbmVzIGZyb20gcmVndWxh
ciBsb2cgbGluZXMKKy8vIG11Y2ggZWFzaWVyLgorc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9ybWF0
RGVhdGhUZXN0T3V0cHV0KGNvbnN0IDo6c3RkOjpzdHJpbmcmIG91dHB1dCkgeworICA6OnN0ZDo6
c3RyaW5nIHJldDsKKyAgZm9yIChzaXplX3QgYXQgPSAwOyA7ICkgeworICAgIGNvbnN0IHNpemVf
dCBsaW5lX2VuZCA9IG91dHB1dC5maW5kKCdcbicsIGF0KTsKKyAgICByZXQgKz0gIlsgIERFQVRI
ICAgXSAiOworICAgIGlmIChsaW5lX2VuZCA9PSA6OnN0ZDo6c3RyaW5nOjpucG9zKSB7CisgICAg
ICByZXQgKz0gb3V0cHV0LnN1YnN0cihhdCk7CisgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0
ICs9IG91dHB1dC5zdWJzdHIoYXQsIGxpbmVfZW5kICsgMSAtIGF0KTsKKyAgICBhdCA9IGxpbmVf
ZW5kICsgMTsKKyAgfQorICByZXR1cm4gcmV0OworfQorCiAvLyBBc3Nlc3NlcyB0aGUgc3VjY2Vz
cyBvciBmYWlsdXJlIG9mIGEgZGVhdGggdGVzdCwgdXNpbmcgYm90aCBwcml2YXRlCiAvLyBtZW1i
ZXJzIHdoaWNoIGhhdmUgcHJldmlvdXNseSBiZWVuIHNldCwgYW5kIG9uZSBhcmd1bWVudDoKIC8v
CiAvLyBQcml2YXRlIGRhdGEgbWVtYmVyczoKIC8vICAgb3V0Y29tZTogIEFuIGVudW1lcmF0aW9u
IGRlc2NyaWJpbmcgaG93IHRoZSBkZWF0aCB0ZXN0Ci0vLyAgICAgICAgICAgICBjb25jbHVkZWQ6
IERJRUQsIExJVkVELCBvciBSRVRVUk5FRC4gIFRoZSBkZWF0aCB0ZXN0IGZhaWxzCi0vLyAgICAg
ICAgICAgICBpbiB0aGUgbGF0dGVyIHR3byBjYXNlcy4KKy8vICAgICAgICAgICAgIGNvbmNsdWRl
ZDogRElFRCwgTElWRUQsIFRIUkVXLCBvciBSRVRVUk5FRC4gIFRoZSBkZWF0aCB0ZXN0CisvLyAg
ICAgICAgICAgICBmYWlscyBpbiB0aGUgbGF0dGVyIHRocmVlIGNhc2VzLgogLy8gICBzdGF0dXM6
ICAgVGhlIGV4aXQgc3RhdHVzIG9mIHRoZSBjaGlsZCBwcm9jZXNzLiBPbiAqbml4LCBpdCBpcyBp
biB0aGUKIC8vICAgICAgICAgICAgIGluIHRoZSBmb3JtYXQgc3BlY2lmaWVkIGJ5IHdhaXQoMiku
IE9uIFdpbmRvd3MsIHRoaXMgaXMgdGhlCiAvLyAgICAgICAgICAgICB2YWx1ZSBzdXBwbGllZCB0
byB0aGUgRXhpdFByb2Nlc3MoKSBBUEkgb3IgYSBudW1lcmljIGNvZGUKQEAgLTQ0OCw3ICs1NTgs
NyBAQCBib29sIERlYXRoVGVzdEltcGw6OlBhc3NlZChib29sIHN0YXR1c19vaykgewogICBpZiAo
IXNwYXduZWQoKSkKICAgICByZXR1cm4gZmFsc2U7CiAKLSAgY29uc3QgU3RyaW5nIGVycm9yX21l
c3NhZ2UgPSBHZXRDYXB0dXJlZFN0ZGVycigpOworICBjb25zdCBzdGQ6OnN0cmluZyBlcnJvcl9t
ZXNzYWdlID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKIAogICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsK
ICAgTWVzc2FnZSBidWZmZXI7CkBAIC00NTcsMjUgKzU2NywzNSBAQCBib29sIERlYXRoVGVzdElt
cGw6OlBhc3NlZChib29sIHN0YXR1c19vaykgewogICBzd2l0Y2ggKG91dGNvbWUoKSkgewogICAg
IGNhc2UgTElWRUQ6CiAgICAgICBidWZmZXIgPDwgIiAgICBSZXN1bHQ6IGZhaWxlZCB0byBkaWUu
XG4iCi0gICAgICAgICAgICAgPDwgIiBFcnJvciBtc2c6ICIgPDwgZXJyb3JfbWVzc2FnZTsKKyAg
ICAgICAgICAgICA8PCAiIEVycm9yIG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGVy
cm9yX21lc3NhZ2UpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBUSFJFVzoKKyAgICAgIGJ1ZmZl
ciA8PCAiICAgIFJlc3VsdDogdGhyZXcgYW4gZXhjZXB0aW9uLlxuIgorICAgICAgICAgICAgIDw8
ICIgRXJyb3IgbXNnOlxuIiA8PCBGb3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2FnZSk7
CiAgICAgICBicmVhazsKICAgICBjYXNlIFJFVFVSTkVEOgogICAgICAgYnVmZmVyIDw8ICIgICAg
UmVzdWx0OiBpbGxlZ2FsIHJldHVybiBpbiB0ZXN0IHN0YXRlbWVudC5cbiIKLSAgICAgICAgICAg
ICA8PCAiIEVycm9yIG1zZzogIiA8PCBlcnJvcl9tZXNzYWdlOworICAgICAgICAgICAgIDw8ICIg
RXJyb3IgbXNnOlxuIiA8PCBGb3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2FnZSk7CiAg
ICAgICBicmVhazsKICAgICBjYXNlIERJRUQ6CiAgICAgICBpZiAoc3RhdHVzX29rKSB7CisjIGlm
IEdURVNUX1VTRVNfUENSRQorICAgICAgICAvLyBQQ1JFIHJlZ2V4ZXMgc3VwcG9ydCBlbWJlZGRl
ZCBOVUxzLgorICAgICAgICBjb25zdCBib29sIG1hdGNoZWQgPSBSRTo6UGFydGlhbE1hdGNoKGVy
cm9yX21lc3NhZ2UsICpyZWdleCgpKTsKKyMgZWxzZQogICAgICAgICBjb25zdCBib29sIG1hdGNo
ZWQgPSBSRTo6UGFydGlhbE1hdGNoKGVycm9yX21lc3NhZ2UuY19zdHIoKSwgKnJlZ2V4KCkpOwor
IyBlbmRpZiAgLy8gR1RFU1RfVVNFU19QQ1JFCiAgICAgICAgIGlmIChtYXRjaGVkKSB7CiAgICAg
ICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgYnVmZmVy
IDw8ICIgICAgUmVzdWx0OiBkaWVkIGJ1dCBub3Qgd2l0aCBleHBlY3RlZCBlcnJvci5cbiIKICAg
ICAgICAgICAgICAgICAgPDwgIiAgRXhwZWN0ZWQ6ICIgPDwgcmVnZXgoKS0+cGF0dGVybigpIDw8
ICJcbiIKLSAgICAgICAgICAgICAgICAgPDwgIkFjdHVhbCBtc2c6ICIgPDwgZXJyb3JfbWVzc2Fn
ZTsKKyAgICAgICAgICAgICAgICAgPDwgIkFjdHVhbCBtc2c6XG4iIDw8IEZvcm1hdERlYXRoVGVz
dE91dHB1dChlcnJvcl9tZXNzYWdlKTsKICAgICAgICAgfQogICAgICAgfSBlbHNlIHsKICAgICAg
ICAgYnVmZmVyIDw8ICIgICAgUmVzdWx0OiBkaWVkIGJ1dCBub3Qgd2l0aCBleHBlY3RlZCBleGl0
IGNvZGU6XG4iCi0gICAgICAgICAgICAgICA8PCAiICAgICAgICAgICAgIiA8PCBFeGl0U3VtbWFy
eShzdGF0dXMoKSkgPDwgIlxuIjsKKyAgICAgICAgICAgICAgIDw8ICIgICAgICAgICAgICAiIDw8
IEV4aXRTdW1tYXJ5KHN0YXR1cygpKSA8PCAiXG4iCisgICAgICAgICAgICAgICA8PCAiQWN0dWFs
IG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGVycm9yX21lc3NhZ2UpOwogICAgICAg
fQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTl9QUk9HUkVTUzoKQEAgLTQ4OCw3ICs2MDgsNyBA
QCBib29sIERlYXRoVGVzdEltcGw6OlBhc3NlZChib29sIHN0YXR1c19vaykgewogICByZXR1cm4g
c3VjY2VzczsKIH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lORE9X
UwogLy8gV2luZG93c0RlYXRoVGVzdCBpbXBsZW1lbnRzIGRlYXRoIHRlc3RzIG9uIFdpbmRvd3Mu
IER1ZSB0byB0aGUKIC8vIHNwZWNpZmljcyBvZiBzdGFydGluZyBuZXcgcHJvY2Vzc2VzIG9uIFdp
bmRvd3MsIGRlYXRoIHRlc3RzIHRoZXJlIGFyZQogLy8gYWx3YXlzIHRocmVhZHNhZmUsIGFuZCBH
b29nbGUgVGVzdCBjb25zaWRlcnMgdGhlCkBAIC01MTksMTEgKzYzOSwxMSBAQCBib29sIERlYXRo
VGVzdEltcGw6OlBhc3NlZChib29sIHN0YXR1c19vaykgewogLy8KIGNsYXNzIFdpbmRvd3NEZWF0
aFRlc3QgOiBwdWJsaWMgRGVhdGhUZXN0SW1wbCB7CiAgcHVibGljOgotICBXaW5kb3dzRGVhdGhU
ZXN0KGNvbnN0IGNoYXIqIHN0YXRlbWVudCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBSRSog
cmVnZXgsCisgIFdpbmRvd3NEZWF0aFRlc3QoY29uc3QgY2hhciogYV9zdGF0ZW1lbnQsCisgICAg
ICAgICAgICAgICAgICAgY29uc3QgUkUqIGFfcmVnZXgsCiAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogZmlsZSwKICAgICAgICAgICAgICAgICAgICBpbnQgbGluZSkKLSAgICAgIDogRGVh
dGhUZXN0SW1wbChzdGF0ZW1lbnQsIHJlZ2V4KSwgZmlsZV8oZmlsZSksIGxpbmVfKGxpbmUpIHt9
CisgICAgICA6IERlYXRoVGVzdEltcGwoYV9zdGF0ZW1lbnQsIGFfcmVnZXgpLCBmaWxlXyhmaWxl
KSwgbGluZV8obGluZSkge30KIAogICAvLyBBbGwgb2YgdGhlc2UgdmlydHVhbCBmdW5jdGlvbnMg
YXJlIGluaGVyaXRlZCBmcm9tIERlYXRoVGVzdC4KICAgdmlydHVhbCBpbnQgV2FpdCgpOwpAQCAt
NTgwLDEyICs3MDAsMTIgQEAgaW50IFdpbmRvd3NEZWF0aFRlc3Q6OldhaXQoKSB7CiAgIEdURVNU
X0RFQVRIX1RFU1RfQ0hFQ0tfKAogICAgICAgV0FJVF9PQkpFQ1RfMCA9PSA6OldhaXRGb3JTaW5n
bGVPYmplY3QoY2hpbGRfaGFuZGxlXy5HZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIElORklOSVRFKSk7Ci0gIERXT1JEIHN0YXR1czsKLSAgR1RFU1Rf
REVBVEhfVEVTVF9DSEVDS18oOjpHZXRFeGl0Q29kZVByb2Nlc3MoY2hpbGRfaGFuZGxlXy5HZXQo
KSwgJnN0YXR1cykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gRkFMU0UpOworICBEV09S
RCBzdGF0dXNfY29kZTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oCisgICAgICA6OkdldEV4
aXRDb2RlUHJvY2VzcyhjaGlsZF9oYW5kbGVfLkdldCgpLCAmc3RhdHVzX2NvZGUpICE9IEZBTFNF
KTsKICAgY2hpbGRfaGFuZGxlXy5SZXNldCgpOwotICBzZXRfc3RhdHVzKHN0YXRpY19jYXN0PGlu
dD4oc3RhdHVzKSk7Ci0gIHJldHVybiB0aGlzLT5zdGF0dXMoKTsKKyAgc2V0X3N0YXR1cyhzdGF0
aWNfY2FzdDxpbnQ+KHN0YXR1c19jb2RlKSk7CisgIHJldHVybiBzdGF0dXMoKTsKIH0KIAogLy8g
VGhlIEFzc3VtZVJvbGUgcHJvY2VzcyBmb3IgYSBXaW5kb3dzIGRlYXRoIHRlc3QuICBJdCBjcmVh
dGVzIGEgY2hpbGQKQEAgLTYyNSwyMiArNzQ1LDE5IEBAIERlYXRoVGVzdDo6VGVzdFJvbGUgV2lu
ZG93c0RlYXRoVGVzdDo6QXNzdW1lUm9sZSgpIHsKICAgICAgIEZBTFNFLCAgIC8vIFRoZSBpbml0
aWFsIHN0YXRlIGlzIG5vbi1zaWduYWxsZWQuCiAgICAgICBOVUxMKSk7ICAvLyBUaGUgZXZlbiBp
cyB1bm5hbWVkLgogICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhldmVudF9oYW5kbGVfLkdldCgp
ICE9IE5VTEwpOwotICBjb25zdCBTdHJpbmcgZmlsdGVyX2ZsYWcgPSBTdHJpbmc6OkZvcm1hdCgi
LS0lcyVzPSVzLiVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR1RFU1RfRkxBR19QUkVGSVhfLCBrRmlsdGVyRmxhZywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+dGVzdF9jYXNlX25hbWUoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+bmFtZSgpKTsKLSAgY29u
c3QgU3RyaW5nIGludGVybmFsX2ZsYWcgPSBTdHJpbmc6OkZvcm1hdCgKLSAgICAiLS0lcyVzPSVz
fCVkfCVkfCV1fCVJdXwlSXUiLAotICAgICAgR1RFU1RfRkxBR19QUkVGSVhfLAotICAgICAga0lu
dGVybmFsUnVuRGVhdGhUZXN0RmxhZywKLSAgICAgIGZpbGVfLCBsaW5lXywKLSAgICAgIGRlYXRo
X3Rlc3RfaW5kZXgsCi0gICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KDo6R2V0Q3VycmVu
dFByb2Nlc3NJZCgpKSwKLSAgICAgIC8vIHNpemVfdCBoYXMgdGhlIHNhbWUgd2l0aCBhcyBwb2lu
dGVycyBvbiBib3RoIDMyLWJpdCBhbmQgNjQtYml0CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbHRl
cl9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsg
a0ZpbHRlckZsYWcgKyAiPSIgKworICAgICAgaW5mby0+dGVzdF9jYXNlX25hbWUoKSArICIuIiAr
IGluZm8tPm5hbWUoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgaW50ZXJuYWxfZmxhZyA9CisgICAg
ICBzdGQ6OnN0cmluZygiLS0iKSArIEdURVNUX0ZMQUdfUFJFRklYXyArIGtJbnRlcm5hbFJ1bkRl
YXRoVGVzdEZsYWcgKworICAgICAgIj0iICsgZmlsZV8gKyAifCIgKyBTdHJlYW1hYmxlVG9TdHJp
bmcobGluZV8pICsgInwiICsKKyAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhkZWF0aF90ZXN0X2lu
ZGV4KSArICJ8IiArCisgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50Pig6OkdldEN1cnJlbnRQcm9jZXNzSWQoKSkpICsKKyAgICAgIC8vIHNpemVfdCBoYXMg
dGhlIHNhbWUgd2lkdGggYXMgcG9pbnRlcnMgb24gYm90aCAzMi1iaXQgYW5kIDY0LWJpdAogICAg
ICAgLy8gV2luZG93cyBwbGF0Zm9ybXMuCiAgICAgICAvLyBTZWUgaHR0cDovL21zZG4ubWljcm9z
b2Z0LmNvbS9lbi11cy9saWJyYXJ5L3RjeGYxZHc2LmFzcHguCi0gICAgICByZWludGVycHJldF9j
YXN0PHNpemVfdD4od3JpdGVfaGFuZGxlKSwKLSAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90
PihldmVudF9oYW5kbGVfLkdldCgpKSk7CisgICAgICAifCIgKyBTdHJlYW1hYmxlVG9TdHJpbmco
cmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KHdyaXRlX2hhbmRsZSkpICsKKyAgICAgICJ8IiArIFN0
cmVhbWFibGVUb1N0cmluZyhyZWludGVycHJldF9jYXN0PHNpemVfdD4oZXZlbnRfaGFuZGxlXy5H
ZXQoKSkpOwogCiAgIGNoYXIgZXhlY3V0YWJsZV9wYXRoW19NQVhfUEFUSCArIDFdOyAgLy8gTk9M
SU5UCiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKApAQCAtNjQ4LDEwICs3NjUsOSBAQCBEZWF0
aFRlc3Q6OlRlc3RSb2xlIFdpbmRvd3NEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVfcGF0aCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01BWF9QQVRIKSk7CiAK
LSAgU3RyaW5nIGNvbW1hbmRfbGluZSA9IFN0cmluZzo6Rm9ybWF0KCIlcyAlcyBcIiVzXCIiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpHZXRDb21tYW5kTGluZUEo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl9mbGFnLmNf
c3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbF9m
bGFnLmNfc3RyKCkpOworICBzdGQ6OnN0cmluZyBjb21tYW5kX2xpbmUgPQorICAgICAgc3RkOjpz
dHJpbmcoOjpHZXRDb21tYW5kTGluZUEoKSkgKyAiICIgKyBmaWx0ZXJfZmxhZyArICIgXCIiICsK
KyAgICAgIGludGVybmFsX2ZsYWcgKyAiXCIiOwogCiAgIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVh
dGhfdGVzdF9tZXNzYWdlKCIiKTsKIApAQCAtNjg0LDcgKzgwMCwyMDAgQEAgRGVhdGhUZXN0OjpU
ZXN0Um9sZSBXaW5kb3dzRGVhdGhUZXN0OjpBc3N1bWVSb2xlKCkgewogICBzZXRfc3Bhd25lZCh0
cnVlKTsKICAgcmV0dXJuIE9WRVJTRUVfVEVTVDsKIH0KLSNlbHNlICAvLyBXZSBhcmUgbm90IG9u
IFdpbmRvd3MuCisKKyMgZWxpZiBHVEVTVF9PU19GVUNIU0lBCisKK2NsYXNzIEZ1Y2hzaWFEZWF0
aFRlc3QgOiBwdWJsaWMgRGVhdGhUZXN0SW1wbCB7CisgcHVibGljOgorICBGdWNoc2lhRGVhdGhU
ZXN0KGNvbnN0IGNoYXIqIGFfc3RhdGVtZW50LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFJF
KiBhX3JlZ2V4LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsCisgICAgICAg
ICAgICAgICAgICAgaW50IGxpbmUpCisgICAgICA6IERlYXRoVGVzdEltcGwoYV9zdGF0ZW1lbnQs
IGFfcmVnZXgpLCBmaWxlXyhmaWxlKSwgbGluZV8obGluZSkge30KKyAgdmlydHVhbCB+RnVjaHNp
YURlYXRoVGVzdCgpIHsKKyAgICB6eF9zdGF0dXNfdCBzdGF0dXMgPSB6eF9oYW5kbGVfY2xvc2Uo
Y2hpbGRfcHJvY2Vzc18pOworICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1cyA9PSBa
WF9PSyk7CisgICAgc3RhdHVzID0genhfaGFuZGxlX2Nsb3NlKHBvcnRfKTsKKyAgICBHVEVTVF9E
RUFUSF9URVNUX0NIRUNLXyhzdGF0dXMgPT0gWlhfT0spOworICB9CisKKyAgLy8gQWxsIG9mIHRo
ZXNlIHZpcnR1YWwgZnVuY3Rpb25zIGFyZSBpbmhlcml0ZWQgZnJvbSBEZWF0aFRlc3QuCisgIHZp
cnR1YWwgaW50IFdhaXQoKTsKKyAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCk7CisKKyBw
cml2YXRlOgorICAvLyBUaGUgbmFtZSBvZiB0aGUgZmlsZSBpbiB3aGljaCB0aGUgZGVhdGggdGVz
dCBpcyBsb2NhdGVkLgorICBjb25zdCBjaGFyKiBjb25zdCBmaWxlXzsKKyAgLy8gVGhlIGxpbmUg
bnVtYmVyIG9uIHdoaWNoIHRoZSBkZWF0aCB0ZXN0IGlzIGxvY2F0ZWQuCisgIGNvbnN0IGludCBs
aW5lXzsKKworICB6eF9oYW5kbGVfdCBjaGlsZF9wcm9jZXNzXyA9IFpYX0hBTkRMRV9JTlZBTElE
OworICB6eF9oYW5kbGVfdCBwb3J0XyA9IFpYX0hBTkRMRV9JTlZBTElEOworfTsKKworLy8gVXRp
bGl0eSBjbGFzcyBmb3IgYWNjdW11bGF0aW5nIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuCitjbGFz
cyBBcmd1bWVudHMgeworIHB1YmxpYzoKKyAgQXJndW1lbnRzKCkgeworICAgIGFyZ3NfLnB1c2hf
YmFjayhOVUxMKTsKKyAgfQorCisgIH5Bcmd1bWVudHMoKSB7CisgICAgZm9yIChzdGQ6OnZlY3Rv
cjxjaGFyKj46Oml0ZXJhdG9yIGkgPSBhcmdzXy5iZWdpbigpOyBpICE9IGFyZ3NfLmVuZCgpOwor
ICAgICAgICAgKytpKSB7CisgICAgICBmcmVlKCppKTsKKyAgICB9CisgIH0KKyAgdm9pZCBBZGRB
cmd1bWVudChjb25zdCBjaGFyKiBhcmd1bWVudCkgeworICAgIGFyZ3NfLmluc2VydChhcmdzXy5l
bmQoKSAtIDEsIHBvc2l4OjpTdHJEdXAoYXJndW1lbnQpKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBTdHI+CisgIHZvaWQgQWRkQXJndW1lbnRzKGNvbnN0IDo6c3RkOjp2ZWN0b3I8U3Ry
PiYgYXJndW1lbnRzKSB7CisgICAgZm9yICh0eXBlbmFtZSA6OnN0ZDo6dmVjdG9yPFN0cj46OmNv
bnN0X2l0ZXJhdG9yIGkgPSBhcmd1bWVudHMuYmVnaW4oKTsKKyAgICAgICAgIGkgIT0gYXJndW1l
bnRzLmVuZCgpOworICAgICAgICAgKytpKSB7CisgICAgICBhcmdzXy5pbnNlcnQoYXJnc18uZW5k
KCkgLSAxLCBwb3NpeDo6U3RyRHVwKGktPmNfc3RyKCkpKTsKKyAgICB9CisgIH0KKyAgY2hhciog
Y29uc3QqIEFyZ3YoKSB7CisgICAgcmV0dXJuICZhcmdzX1swXTsKKyAgfQorCisgIGludCBzaXpl
KCkgeworICAgIHJldHVybiBhcmdzXy5zaXplKCkgLSAxOworICB9CisKKyBwcml2YXRlOgorICBz
dGQ6OnZlY3RvcjxjaGFyKj4gYXJnc187Cit9OworCisvLyBXYWl0cyBmb3IgdGhlIGNoaWxkIGlu
IGEgZGVhdGggdGVzdCB0byBleGl0LCByZXR1cm5pbmcgaXRzIGV4aXQKKy8vIHN0YXR1cywgb3Ig
MCBpZiBubyBjaGlsZCBwcm9jZXNzIGV4aXN0cy4gIEFzIGEgc2lkZSBlZmZlY3QsIHNldHMgdGhl
CisvLyBvdXRjb21lIGRhdGEgbWVtYmVyLgoraW50IEZ1Y2hzaWFEZWF0aFRlc3Q6OldhaXQoKSB7
CisgIGlmICghc3Bhd25lZCgpKQorICAgIHJldHVybiAwOworCisgIC8vIFJlZ2lzdGVyIHRvIHdh
aXQgZm9yIHRoZSBjaGlsZCBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4KKyAgenhfc3RhdHVzX3Qgc3Rh
dHVzX3p4OworICBzdGF0dXNfenggPSB6eF9vYmplY3Rfd2FpdF9hc3luYyhjaGlsZF9wcm9jZXNz
XywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyoga2V5ICovLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBaWF9QUk9DRVNTX1RFUk1JTkFURUQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFpYX1dBSVRfQVNZTkNfT05DRSk7CisgIEdURVNUX0RFQVRIX1RF
U1RfQ0hFQ0tfKHN0YXR1c196eCA9PSBaWF9PSyk7CisKKyAgLy8gV2FpdCBmb3IgaXQgdG8gdGVy
bWluYXRlLCBvciBhbiBleGNlcHRpb24gdG8gYmUgcmVjZWl2ZWQuCisgIHp4X3BvcnRfcGFja2V0
X3QgcGFja2V0OworICBzdGF0dXNfenggPSB6eF9wb3J0X3dhaXQocG9ydF8sIFpYX1RJTUVfSU5G
SU5JVEUsICZwYWNrZXQpOworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhzdGF0dXNfenggPT0g
WlhfT0spOworCisgIGlmIChaWF9QS1RfSVNfRVhDRVBUSU9OKHBhY2tldC50eXBlKSkgeworICAg
IC8vIFByb2Nlc3MgZW5jb3VudGVyZWQgYW4gZXhjZXB0aW9uLiBLaWxsIGl0IGRpcmVjdGx5IHJh
dGhlciB0aGFuIGxldHRpbmcKKyAgICAvLyBvdGhlciBoYW5kbGVycyBwcm9jZXNzIHRoZSBldmVu
dC4KKyAgICBzdGF0dXNfenggPSB6eF90YXNrX2tpbGwoY2hpbGRfcHJvY2Vzc18pOworICAgIEdU
RVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1c196eCA9PSBaWF9PSyk7CisKKyAgICAvLyBOb3cg
d2FpdCBmb3IgfGNoaWxkX3Byb2Nlc3NffCB0byB0ZXJtaW5hdGUuCisgICAgenhfc2lnbmFsc190
IHNpZ25hbHMgPSAwOworICAgIHN0YXR1c196eCA9IHp4X29iamVjdF93YWl0X29uZSgKKyAgICAg
ICAgY2hpbGRfcHJvY2Vzc18sIFpYX1BST0NFU1NfVEVSTUlOQVRFRCwgWlhfVElNRV9JTkZJTklU
RSwgJnNpZ25hbHMpOworICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1c196eCA9PSBa
WF9PSyk7CisgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc2lnbmFscyAmIFpYX1BST0NFU1Nf
VEVSTUlOQVRFRCk7CisgIH0gZWxzZSB7CisgICAgLy8gUHJvY2VzcyB0ZXJtaW5hdGVkLgorICAg
IEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKFpYX1BLVF9JU19TSUdOQUxfT05FKHBhY2tldC50eXBl
KSk7CisgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18ocGFja2V0LnNpZ25hbC5vYnNlcnZlZCAm
IFpYX1BST0NFU1NfVEVSTUlOQVRFRCk7CisgIH0KKworICBSZWFkQW5kSW50ZXJwcmV0U3RhdHVz
Qnl0ZSgpOworCisgIHp4X2luZm9fcHJvY2Vzc190IGJ1ZmZlcjsKKyAgc3RhdHVzX3p4ID0genhf
b2JqZWN0X2dldF9pbmZvKAorICAgICAgY2hpbGRfcHJvY2Vzc18sCisgICAgICBaWF9JTkZPX1BS
T0NFU1MsCisgICAgICAmYnVmZmVyLAorICAgICAgc2l6ZW9mKGJ1ZmZlciksCisgICAgICBudWxs
cHRyLAorICAgICAgbnVsbHB0cik7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1c196
eCA9PSBaWF9PSyk7CisKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oYnVmZmVyLmV4aXRlZCk7
CisgIHNldF9zdGF0dXMoYnVmZmVyLnJldHVybl9jb2RlKTsKKyAgcmV0dXJuIHN0YXR1cygpOwor
fQorCisvLyBUaGUgQXNzdW1lUm9sZSBwcm9jZXNzIGZvciBhIEZ1Y2hzaWEgZGVhdGggdGVzdC4g
IEl0IGNyZWF0ZXMgYSBjaGlsZAorLy8gcHJvY2VzcyB3aXRoIHRoZSBzYW1lIGV4ZWN1dGFibGUg
YXMgdGhlIGN1cnJlbnQgcHJvY2VzcyB0byBydW4gdGhlCisvLyBkZWF0aCB0ZXN0LiAgVGhlIGNo
aWxkIHByb2Nlc3MgaXMgZ2l2ZW4gdGhlIC0tZ3Rlc3RfZmlsdGVyIGFuZAorLy8gLS1ndGVzdF9p
bnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFncyBzdWNoIHRoYXQgaXQga25vd3MgdG8gcnVuIHRo
ZQorLy8gY3VycmVudCBkZWF0aCB0ZXN0IG9ubHkuCitEZWF0aFRlc3Q6OlRlc3RSb2xlIEZ1Y2hz
aWFEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CisgIGNvbnN0IFVuaXRUZXN0SW1wbCogY29uc3Qg
aW1wbCA9IEdldFVuaXRUZXN0SW1wbCgpOworICBjb25zdCBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZs
YWcqIGNvbnN0IGZsYWcgPQorICAgICAgaW1wbC0+aW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfZmxh
ZygpOworICBjb25zdCBUZXN0SW5mbyogY29uc3QgaW5mbyA9IGltcGwtPmN1cnJlbnRfdGVzdF9p
bmZvKCk7CisgIGNvbnN0IGludCBkZWF0aF90ZXN0X2luZGV4ID0gaW5mby0+cmVzdWx0KCktPmRl
YXRoX3Rlc3RfY291bnQoKTsKKworICBpZiAoZmxhZyAhPSBOVUxMKSB7CisgICAgLy8gUGFyc2VJ
bnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoKSBoYXMgcGVyZm9ybWVkIGFsbCB0aGUgbmVjZXNzYXJ5
CisgICAgLy8gcHJvY2Vzc2luZy4KKyAgICBzZXRfd3JpdGVfZmQoa0Z1Y2hzaWFSZWFkUGlwZUZk
KTsKKyAgICByZXR1cm4gRVhFQ1VURV9URVNUOworICB9CisKKyAgQ2FwdHVyZVN0ZGVycigpOwor
ICAvLyBGbHVzaCB0aGUgbG9nIGJ1ZmZlcnMgc2luY2UgdGhlIGxvZyBzdHJlYW1zIGFyZSBzaGFy
ZWQgd2l0aCB0aGUgY2hpbGQuCisgIEZsdXNoSW5mb0xvZygpOworCisgIC8vIEJ1aWxkIHRoZSBj
aGlsZCBwcm9jZXNzIGNvbW1hbmQgbGluZS4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsdGVyX2Zs
YWcgPQorICAgICAgc3RkOjpzdHJpbmcoIi0tIikgKyBHVEVTVF9GTEFHX1BSRUZJWF8gKyBrRmls
dGVyRmxhZyArICI9IgorICAgICAgKyBpbmZvLT50ZXN0X2Nhc2VfbmFtZSgpICsgIi4iICsgaW5m
by0+bmFtZSgpOworICBjb25zdCBzdGQ6OnN0cmluZyBpbnRlcm5hbF9mbGFnID0KKyAgICAgIHN0
ZDo6c3RyaW5nKCItLSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsga0ludGVybmFsUnVuRGVhdGhU
ZXN0RmxhZyArICI9IgorICAgICAgKyBmaWxlXyArICJ8IgorICAgICAgKyBTdHJlYW1hYmxlVG9T
dHJpbmcobGluZV8pICsgInwiCisgICAgICArIFN0cmVhbWFibGVUb1N0cmluZyhkZWF0aF90ZXN0
X2luZGV4KTsKKyAgQXJndW1lbnRzIGFyZ3M7CisgIGFyZ3MuQWRkQXJndW1lbnRzKEdldEluamVj
dGFibGVBcmd2cygpKTsKKyAgYXJncy5BZGRBcmd1bWVudChmaWx0ZXJfZmxhZy5jX3N0cigpKTsK
KyAgYXJncy5BZGRBcmd1bWVudChpbnRlcm5hbF9mbGFnLmNfc3RyKCkpOworCisgIC8vIEJ1aWxk
IHRoZSBwaXBlIGZvciBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGNoaWxkLgorICB6eF9zdGF0dXNf
dCBzdGF0dXM7CisgIHp4X2hhbmRsZV90IGNoaWxkX3BpcGVfaGFuZGxlOworICB1aW50MzJfdCB0
eXBlOworICBzdGF0dXMgPSBmZGlvX3BpcGVfaGFsZigmY2hpbGRfcGlwZV9oYW5kbGUsICZ0eXBl
KTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhdHVzID49IDApOworICBzZXRfcmVhZF9m
ZChzdGF0dXMpOworCisgIC8vIFNldCB0aGUgcGlwZSBoYW5kbGUgZm9yIHRoZSBjaGlsZC4KKyAg
ZmRpb19zcGF3bl9hY3Rpb25fdCBhZGRfaGFuZGxlX2FjdGlvbiA9IHt9OworICBhZGRfaGFuZGxl
X2FjdGlvbi5hY3Rpb24gPSBGRElPX1NQQVdOX0FDVElPTl9BRERfSEFORExFOworICBhZGRfaGFu
ZGxlX2FjdGlvbi5oLmlkID0gUEFfSE5EKHR5cGUsIGtGdWNoc2lhUmVhZFBpcGVGZCk7CisgIGFk
ZF9oYW5kbGVfYWN0aW9uLmguaGFuZGxlID0gY2hpbGRfcGlwZV9oYW5kbGU7CisKKyAgLy8gU3Bh
d24gdGhlIGNoaWxkIHByb2Nlc3MuCisgIHN0YXR1cyA9IGZkaW9fc3Bhd25fZXRjKFpYX0hBTkRM
RV9JTlZBTElELCBGRElPX1NQQVdOX0NMT05FX0FMTCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXJncy5Bcmd2KClbMF0sIGFyZ3MuQXJndigpLCBudWxscHRyLCAxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAmYWRkX2hhbmRsZV9hY3Rpb24sICZjaGlsZF9wcm9jZXNzXywgbnVsbHB0
cik7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1cyA9PSBaWF9PSyk7CisKKyAgLy8g
Q3JlYXRlIGFuIGV4Y2VwdGlvbiBwb3J0IGFuZCBhdHRhY2ggaXQgdG8gdGhlIHxjaGlsZF9wcm9j
ZXNzX3wsIHRvIGFsbG93CisgIC8vIHVzIHRvIHN1cHByZXNzIHRoZSBzeXN0ZW0gZGVmYXVsdCBl
eGNlcHRpb24gaGFuZGxlciBmcm9tIGZpcmluZy4KKyAgc3RhdHVzID0genhfcG9ydF9jcmVhdGUo
MCwgJnBvcnRfKTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhdHVzID09IFpYX09LKTsK
KyAgc3RhdHVzID0genhfdGFza19iaW5kX2V4Y2VwdGlvbl9wb3J0KAorICAgICAgY2hpbGRfcHJv
Y2Vzc18sIHBvcnRfLCAwIC8qIGtleSAqLywgMCAvKm9wdGlvbnMgKi8pOworICBHVEVTVF9ERUFU
SF9URVNUX0NIRUNLXyhzdGF0dXMgPT0gWlhfT0spOworCisgIHNldF9zcGF3bmVkKHRydWUpOwor
ICByZXR1cm4gT1ZFUlNFRV9URVNUOworfQorCisjZWxzZSAgLy8gV2UgYXJlIG5laXRoZXIgb24g
V2luZG93cywgbm9yIG9uIEZ1Y2hzaWEuCiAKIC8vIEZvcmtpbmdEZWF0aFRlc3QgcHJvdmlkZXMg
aW1wbGVtZW50YXRpb25zIGZvciBtb3N0IG9mIHRoZSBhYnN0cmFjdAogLy8gbWV0aG9kcyBvZiB0
aGUgRGVhdGhUZXN0IGludGVyZmFjZS4gIE9ubHkgdGhlIEFzc3VtZVJvbGUgbWV0aG9kIGlzCkBA
IC03NjgsNiArMTA3Nyw3IEBAIERlYXRoVGVzdDo6VGVzdFJvbGUgTm9FeGVjRGVhdGhUZXN0OjpB
c3N1bWVSb2xlKCkgewogICAgIC8vIEV2ZW50IGZvcndhcmRpbmcgdG8gdGhlIGxpc3RlbmVycyBv
ZiBldmVudCBsaXN0ZW5lciBBUEkgbXVzaCBiZSBzaHV0CiAgICAgLy8gZG93biBpbiBkZWF0aCB0
ZXN0IHN1YnByb2Nlc3Nlcy4KICAgICBHZXRVbml0VGVzdEltcGwoKS0+bGlzdGVuZXJzKCktPlN1
cHByZXNzRXZlbnRGb3J3YXJkaW5nKCk7CisgICAgZ19pbl9mYXN0X2RlYXRoX3Rlc3RfY2hpbGQg
PSB0cnVlOwogICAgIHJldHVybiBFWEVDVVRFX1RFU1Q7CiAgIH0gZWxzZSB7CiAgICAgR1RFU1Rf
REVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhjbG9zZShwaXBlX2ZkWzFdKSk7CkBAIC03ODcsNiAr
MTA5NywxNSBAQCBjbGFzcyBFeGVjRGVhdGhUZXN0IDogcHVibGljIEZvcmtpbmdEZWF0aFRlc3Qg
ewogICAgICAgRm9ya2luZ0RlYXRoVGVzdChhX3N0YXRlbWVudCwgYV9yZWdleCksIGZpbGVfKGZp
bGUpLCBsaW5lXyhsaW5lKSB7IH0KICAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCk7CiAg
cHJpdmF0ZToKKyAgc3RhdGljIDo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdldEFyZ3ZzRm9y
RGVhdGhUZXN0Q2hpbGRQcm9jZXNzKCkgeworICAgIDo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
IGFyZ3MgPSBHZXRJbmplY3RhYmxlQXJndnMoKTsKKyMgIGlmIGRlZmluZWQoR1RFU1RfRVhUUkFf
REVBVEhfVEVTVF9DT01NQU5EX0xJTkVfQVJHU18pCisgICAgOjpzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4gZXh0cmFfYXJncyA9CisgICAgICAgIEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ09NTUFO
RF9MSU5FX0FSR1NfKCk7CisgICAgYXJncy5pbnNlcnQoYXJncy5lbmQoKSwgZXh0cmFfYXJncy5i
ZWdpbigpLCBleHRyYV9hcmdzLmVuZCgpKTsKKyMgIGVuZGlmICAvLyBkZWZpbmVkKEdURVNUX0VY
VFJBX0RFQVRIX1RFU1RfQ09NTUFORF9MSU5FX0FSR1NfKQorICAgIHJldHVybiBhcmdzOworICB9
CiAgIC8vIFRoZSBuYW1lIG9mIHRoZSBmaWxlIGluIHdoaWNoIHRoZSBkZWF0aCB0ZXN0IGlzIGxv
Y2F0ZWQuCiAgIGNvbnN0IGNoYXIqIGNvbnN0IGZpbGVfOwogICAvLyBUaGUgbGluZSBudW1iZXIg
b24gd2hpY2ggdGhlIGRlYXRoIHRlc3QgaXMgbG9jYXRlZC4KQEAgLTgyMSw2ICsxMTQwLDcgQEAg
Y2xhc3MgQXJndW1lbnRzIHsKICAgY2hhciogY29uc3QqIEFyZ3YoKSB7CiAgICAgcmV0dXJuICZh
cmdzX1swXTsKICAgfQorCiAgcHJpdmF0ZToKICAgc3RkOjp2ZWN0b3I8Y2hhcio+IGFyZ3NfOwog
fTsKQEAgLTgzMiw2ICsxMTUyLDIxIEBAIHN0cnVjdCBFeGVjRGVhdGhUZXN0QXJncyB7CiAgIGlu
dCBjbG9zZV9mZDsgICAgICAgLy8gRmlsZSBkZXNjcmlwdG9yIHRvIGNsb3NlOyB0aGUgcmVhZCBl
bmQgb2YgYSBwaXBlCiB9OwogCisjICBpZiBHVEVTVF9PU19NQUMKK2lubGluZSBjaGFyKiogR2V0
RW52aXJvbigpIHsKKyAgLy8gV2hlbiBHb29nbGUgVGVzdCBpcyBidWlsdCBhcyBhIGZyYW1ld29y
ayBvbiBNYWNPUyBYLCB0aGUgZW52aXJvbiB2YXJpYWJsZQorICAvLyBpcyB1bmF2YWlsYWJsZS4g
QXBwbGUncyBkb2N1bWVudGF0aW9uIChtYW4gZW52aXJvbikgcmVjb21tZW5kcyB1c2luZworICAv
LyBfTlNHZXRFbnZpcm9uKCkgaW5zdGVhZC4KKyAgcmV0dXJuICpfTlNHZXRFbnZpcm9uKCk7Cit9
CisjICBlbHNlCisvLyBTb21lIFBPU0lYIHBsYXRmb3JtcyBleHBlY3QgeW91IHRvIGRlY2xhcmUg
ZW52aXJvbi4gZXh0ZXJuICJDIiBtYWtlcworLy8gaXQgcmVzaWRlIGluIHRoZSBnbG9iYWwgbmFt
ZXNwYWNlLgorZXh0ZXJuICJDIiBjaGFyKiogZW52aXJvbjsKK2lubGluZSBjaGFyKiogR2V0RW52
aXJvbigpIHsgcmV0dXJuIGVudmlyb247IH0KKyMgIGVuZGlmICAvLyBHVEVTVF9PU19NQUMKKwor
IyAgaWYgIUdURVNUX09TX1FOWAogLy8gVGhlIG1haW4gZnVuY3Rpb24gZm9yIGEgdGhyZWFkc2Fm
ZS1zdHlsZSBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nlc3MuCiAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNh
bGxlZCBpbiBhIGNsb25lKCktZWQgcHJvY2VzcyBhbmQgdGh1cyBtdXN0IGF2b2lkCiAvLyBhbnkg
cG90ZW50aWFsbHkgdW5zYWZlIG9wZXJhdGlvbnMgbGlrZSBtYWxsb2Mgb3IgbGliYyBmdW5jdGlv
bnMuCkBAIC04NDYsOSArMTE4MSw4IEBAIHN0YXRpYyBpbnQgRXhlY0RlYXRoVGVzdENoaWxkTWFp
bih2b2lkKiBjaGlsZF9hcmcpIHsKICAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmln
aW5hbF93b3JraW5nX2RpcigpOwogICAvLyBXZSBjYW4gc2FmZWx5IGNhbGwgY2hkaXIoKSBhcyBp
dCdzIGEgZGlyZWN0IHN5c3RlbSBjYWxsLgogICBpZiAoY2hkaXIob3JpZ2luYWxfZGlyKSAhPSAw
KSB7Ci0gICAgRGVhdGhUZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQoImNoZGlyKFwiJXNcIikgZmFp
bGVkOiAlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxfZGly
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2NyaXB0
aW9uKCkuY19zdHIoKSkpOworICAgIERlYXRoVGVzdEFib3J0KHN0ZDo6c3RyaW5nKCJjaGRpcihc
IiIpICsgb3JpZ2luYWxfZGlyICsgIlwiKSBmYWlsZWQ6ICIgKworICAgICAgICAgICAgICAgICAg
IEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkpOwogICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAg
IH0KIApAQCAtODU3LDQwICsxMTkxLDk3IEBAIHN0YXRpYyBpbnQgRXhlY0RlYXRoVGVzdENoaWxk
TWFpbih2b2lkKiBjaGlsZF9hcmcpIHsKICAgLy8gdW5zYWZlLiAgU2luY2UgZXhlY3ZlKCkgZG9l
c24ndCBzZWFyY2ggdGhlIFBBVEgsIHRoZSB1c2VyIG11c3QKICAgLy8gaW52b2tlIHRoZSB0ZXN0
IHByb2dyYW0gdmlhIGEgdmFsaWQgcGF0aCB0aGF0IGNvbnRhaW5zIGF0IGxlYXN0CiAgIC8vIG9u
ZSBwYXRoIHNlcGFyYXRvci4KLSAgLy8gV2UgaGF2ZSByZXBsYWNlZCBleGVjdmUoKSB3aXRoIGV4
ZWN2KCkgZm9yIFdlYktpdCB0byBhdm9pZCB1c2luZwotICAvLyBlbnZpcm9uLiBJdCBzaG91bGQg
YmUgc2FmZSBiZWNhdXNlIGV4ZWN2KCkgaXMganVzdCBhIHNpbXBsZSB3cmFwcGVyCi0gIC8vIG9m
IGV4ZWN2ZSgpLgotICBleGVjdihhcmdzLT5hcmd2WzBdLCBhcmdzLT5hcmd2KTsKLSAgRGVhdGhU
ZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQoImV4ZWN2KCVzLCAuLi4pIGluICVzIGZhaWxlZDogJXMi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLT5hcmd2WzBdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbF9kaXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkuY19zdHIoKSkpOworICBl
eGVjdmUoYXJncy0+YXJndlswXSwgYXJncy0+YXJndiwgR2V0RW52aXJvbigpKTsKKyAgRGVhdGhU
ZXN0QWJvcnQoc3RkOjpzdHJpbmcoImV4ZWN2ZSgiKSArIGFyZ3MtPmFyZ3ZbMF0gKyAiLCAuLi4p
IGluICIgKworICAgICAgICAgICAgICAgICBvcmlnaW5hbF9kaXIgKyAiIGZhaWxlZDogIiArCisg
ICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkpOwogICByZXR1cm4gRVhJ
VF9GQUlMVVJFOwogfQorIyAgZW5kaWYgIC8vICFHVEVTVF9PU19RTlgKIAorIyAgaWYgR1RFU1Rf
SEFTX0NMT05FCiAvLyBUd28gdXRpbGl0eSByb3V0aW5lcyB0aGF0IHRvZ2V0aGVyIGRldGVybWlu
ZSB0aGUgZGlyZWN0aW9uIHRoZSBzdGFjawogLy8gZ3Jvd3MuCiAvLyBUaGlzIGNvdWxkIGJlIGFj
Y29tcGxpc2hlZCBtb3JlIGVsZWdhbnRseSBieSBhIHNpbmdsZSByZWN1cnNpdmUKIC8vIGZ1bmN0
aW9uLCBidXQgd2Ugd2FudCB0byBndWFyZCBhZ2FpbnN0IHRoZSB1bmxpa2VseSBwb3NzaWJpbGl0
eSBvZgogLy8gYSBzbWFydCBjb21waWxlciBvcHRpbWl6aW5nIHRoZSByZWN1cnNpb24gYXdheS4K
LWJvb2wgU3RhY2tMb3dlclRoYW5BZGRyZXNzKGNvbnN0IHZvaWQqIHB0cikgeworLy8KKy8vIEdU
RVNUX05PX0lOTElORV8gaXMgcmVxdWlyZWQgdG8gcHJldmVudCBHQ0MgNC42IGZyb20gaW5saW5p
bmcKKy8vIFN0YWNrTG93ZXJUaGFuQWRkcmVzcyBpbnRvIFN0YWNrR3Jvd3NEb3duLCB3aGljaCB0
aGVuIGRvZXNuJ3QgZ2l2ZQorLy8gY29ycmVjdCBhbnN3ZXIuCitzdGF0aWMgdm9pZCBTdGFja0xv
d2VyVGhhbkFkZHJlc3MoY29uc3Qgdm9pZCogcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wqIHJlc3VsdCkgR1RFU1RfTk9fSU5MSU5FXzsKK3N0YXRpYyB2b2lkIFN0
YWNrTG93ZXJUaGFuQWRkcmVzcyhjb25zdCB2b2lkKiBwdHIsIGJvb2wqIHJlc3VsdCkgewogICBp
bnQgZHVtbXk7Ci0gIHJldHVybiAmZHVtbXkgPCBwdHI7CisgICpyZXN1bHQgPSAoJmR1bW15IDwg
cHRyKTsKIH0KIAotYm9vbCBTdGFja0dyb3dzRG93bigpIHsKKy8vIE1ha2Ugc3VyZSBBZGRyZXNz
U2FuaXRpemVyIGRvZXMgbm90IHRhbXBlciB3aXRoIHRoZSBzdGFjayBoZXJlLgorR1RFU1RfQVRU
UklCVVRFX05PX1NBTklUSVpFX0FERFJFU1NfCitzdGF0aWMgYm9vbCBTdGFja0dyb3dzRG93bigp
IHsKICAgaW50IGR1bW15OwotICByZXR1cm4gU3RhY2tMb3dlclRoYW5BZGRyZXNzKCZkdW1teSk7
CisgIGJvb2wgcmVzdWx0OworICBTdGFja0xvd2VyVGhhbkFkZHJlc3MoJmR1bW15LCAmcmVzdWx0
KTsKKyAgcmV0dXJuIHJlc3VsdDsKIH0KLQotLy8gQSB0aHJlYWRzYWZlIGltcGxlbWVudGF0aW9u
IG9mIGZvcmsoMikgZm9yIHRocmVhZHNhZmUtc3R5bGUgZGVhdGggdGVzdHMKLS8vIHRoYXQgdXNl
cyBjbG9uZSgyKS4gIEl0IGRpZXMgd2l0aCBhbiBlcnJvciBtZXNzYWdlIGlmIGFueXRoaW5nIGdv
ZXMKLS8vIHdyb25nLgotc3RhdGljIHBpZF90IEV4ZWNEZWF0aFRlc3RGb3JrKGNoYXIqIGNvbnN0
KiBhcmd2LCBpbnQgY2xvc2VfZmQpIHsKKyMgIGVuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUKKwor
Ly8gU3Bhd25zIGEgY2hpbGQgcHJvY2VzcyB3aXRoIHRoZSBzYW1lIGV4ZWN1dGFibGUgYXMgdGhl
IGN1cnJlbnQgcHJvY2VzcyBpbgorLy8gYSB0aHJlYWQtc2FmZSBtYW5uZXIgYW5kIGluc3RydWN0
cyBpdCB0byBydW4gdGhlIGRlYXRoIHRlc3QuICBUaGUKKy8vIGltcGxlbWVudGF0aW9uIHVzZXMg
Zm9yaygyKSArIGV4ZWMuICBPbiBzeXN0ZW1zIHdoZXJlIGNsb25lKDIpIGlzCisvLyBhdmFpbGFi
bGUsIGl0IGlzIHVzZWQgaW5zdGVhZCwgYmVpbmcgc2xpZ2h0bHkgbW9yZSB0aHJlYWQtc2FmZS4g
IE9uIFFOWCwKKy8vIGZvcmsgc3VwcG9ydHMgb25seSBzaW5nbGUtdGhyZWFkZWQgZW52aXJvbm1l
bnRzLCBzbyB0aGlzIGZ1bmN0aW9uIHVzZXMKKy8vIHNwYXduKDIpIHRoZXJlIGluc3RlYWQuICBU
aGUgZnVuY3Rpb24gZGllcyB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaWYKKy8vIGFueXRoaW5nIGdv
ZXMgd3JvbmcuCitzdGF0aWMgcGlkX3QgRXhlY0RlYXRoVGVzdFNwYXduQ2hpbGQoY2hhciogY29u
c3QqIGFyZ3YsIGludCBjbG9zZV9mZCkgewogICBFeGVjRGVhdGhUZXN0QXJncyBhcmdzID0geyBh
cmd2LCBjbG9zZV9mZCB9OwogICBwaWRfdCBjaGlsZF9waWQgPSAtMTsKIAotI2lmIEdURVNUX0hB
U19DTE9ORQorIyAgaWYgR1RFU1RfT1NfUU5YCisgIC8vIE9idGFpbnMgdGhlIGN1cnJlbnQgZGly
ZWN0b3J5IGFuZCBzZXRzIGl0IHRvIGJlIGNsb3NlZCBpbiB0aGUgY2hpbGQKKyAgLy8gcHJvY2Vz
cy4KKyAgY29uc3QgaW50IGN3ZF9mZCA9IG9wZW4oIi4iLCBPX1JET05MWSk7CisgIEdURVNUX0RF
QVRIX1RFU1RfQ0hFQ0tfKGN3ZF9mZCAhPSAtMSk7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tf
U1lTQ0FMTF8oZmNudGwoY3dkX2ZkLCBGX1NFVEZELCBGRF9DTE9FWEVDKSk7CisgIC8vIFdlIG5l
ZWQgdG8gZXhlY3V0ZSB0aGUgdGVzdCBwcm9ncmFtIGluIHRoZSBzYW1lIGVudmlyb25tZW50IHdo
ZXJlCisgIC8vIGl0IHdhcyBvcmlnaW5hbGx5IGludm9rZWQuICBUaGVyZWZvcmUgd2UgY2hhbmdl
IHRvIHRoZSBvcmlnaW5hbAorICAvLyB3b3JraW5nIGRpcmVjdG9yeSBmaXJzdC4KKyAgY29uc3Qg
Y2hhciogY29uc3Qgb3JpZ2luYWxfZGlyID0KKyAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgp
LT5vcmlnaW5hbF93b3JraW5nX2RpcigpOworICAvLyBXZSBjYW4gc2FmZWx5IGNhbGwgY2hkaXIo
KSBhcyBpdCdzIGEgZGlyZWN0IHN5c3RlbSBjYWxsLgorICBpZiAoY2hkaXIob3JpZ2luYWxfZGly
KSAhPSAwKSB7CisgICAgRGVhdGhUZXN0QWJvcnQoc3RkOjpzdHJpbmcoImNoZGlyKFwiIikgKyBv
cmlnaW5hbF9kaXIgKyAiXCIpIGZhaWxlZDogIiArCisgICAgICAgICAgICAgICAgICAgR2V0TGFz
dEVycm5vRGVzY3JpcHRpb24oKSk7CisgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgfQorCisg
IGludCBmZF9mbGFnczsKKyAgLy8gU2V0IGNsb3NlX2ZkIHRvIGJlIGNsb3NlZCBhZnRlciBzcGF3
bi4KKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhmZF9mbGFncyA9IGZjbnRsKGNs
b3NlX2ZkLCBGX0dFVEZEKSk7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oZmNu
dGwoY2xvc2VfZmQsIEZfU0VURkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmRfZmxhZ3MgfCBGRF9DTE9FWEVDKSk7CisgIHN0cnVjdCBpbmhlcml0YW5jZSBpbmhl
cml0ID0gezB9OworICAvLyBzcGF3biBpcyBhIHN5c3RlbSBjYWxsLgorICBjaGlsZF9waWQgPSBz
cGF3bihhcmdzLmFyZ3ZbMF0sIDAsIE5VTEwsICZpbmhlcml0LCBhcmdzLmFyZ3YsIEdldEVudmly
b24oKSk7CisgIC8vIFJlc3RvcmVzIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorICBH
VEVTVF9ERUFUSF9URVNUX0NIRUNLXyhmY2hkaXIoY3dkX2ZkKSAhPSAtMSk7CisgIEdURVNUX0RF
QVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oY2xvc2UoY3dkX2ZkKSk7CisKKyMgIGVsc2UgICAvLyBH
VEVTVF9PU19RTlgKKyMgICBpZiBHVEVTVF9PU19MSU5VWAorICAvLyBXaGVuIGEgU0lHUFJPRiBz
aWduYWwgaXMgcmVjZWl2ZWQgd2hpbGUgZm9yaygpIG9yIGNsb25lKCkgYXJlIGV4ZWN1dGluZywK
KyAgLy8gdGhlIHByb2Nlc3MgbWF5IGhhbmcuIFRvIGF2b2lkIHRoaXMsIHdlIGlnbm9yZSBTSUdQ
Uk9GIGhlcmUgYW5kIHJlLWVuYWJsZQorICAvLyBpdCBhZnRlciB0aGUgY2FsbCB0byBmb3JrKCkv
Y2xvbmUoKSBpcyBjb21wbGV0ZS4KKyAgc3RydWN0IHNpZ2FjdGlvbiBzYXZlZF9zaWdwcm9mX2Fj
dGlvbjsKKyAgc3RydWN0IHNpZ2FjdGlvbiBpZ25vcmVfc2lncHJvZl9hY3Rpb247CisgIG1lbXNl
dCgmaWdub3JlX3NpZ3Byb2ZfYWN0aW9uLCAwLCBzaXplb2YoaWdub3JlX3NpZ3Byb2ZfYWN0aW9u
KSk7CisgIHNpZ2VtcHR5c2V0KCZpZ25vcmVfc2lncHJvZl9hY3Rpb24uc2FfbWFzayk7CisgIGln
bm9yZV9zaWdwcm9mX2FjdGlvbi5zYV9oYW5kbGVyID0gU0lHX0lHTjsKKyAgR1RFU1RfREVBVEhf
VEVTVF9DSEVDS19TWVNDQUxMXyhzaWdhY3Rpb24oCisgICAgICBTSUdQUk9GLCAmaWdub3JlX3Np
Z3Byb2ZfYWN0aW9uLCAmc2F2ZWRfc2lncHJvZl9hY3Rpb24pKTsKKyMgICBlbmRpZiAgLy8gR1RF
U1RfT1NfTElOVVgKKworIyAgIGlmIEdURVNUX0hBU19DTE9ORQogICBjb25zdCBib29sIHVzZV9m
b3JrID0gR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKTsKIAogICBpZiAoIXVzZV9mb3Jr
KSB7CkBAIC05MDAsMjEgKzEyOTEsMzcgQEAgc3RhdGljIHBpZF90IEV4ZWNEZWF0aFRlc3RGb3Jr
KGNoYXIqIGNvbnN0KiBhcmd2LCBpbnQgY2xvc2VfZmQpIHsKICAgICB2b2lkKiBjb25zdCBzdGFj
ayA9IG1tYXAoTlVMTCwgc3RhY2tfc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTUFQX0FOT04gfCBNQVBfUFJJVkFURSwgLTEsIDApOwog
ICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YWNrICE9IE1BUF9GQUlMRUQpOworCisgICAg
Ly8gTWF4aW11bSBzdGFjayBhbGlnbm1lbnQgaW4gYnl0ZXM6ICBGb3IgYSBkb3dud2FyZC1ncm93
aW5nIHN0YWNrLCB0aGlzCisgICAgLy8gYW1vdW50IGlzIHN1YnRyYWN0ZWQgZnJvbSBzaXplIG9m
IHRoZSBzdGFjayBzcGFjZSB0byBnZXQgYW4gYWRkcmVzcworICAgIC8vIHRoYXQgaXMgd2l0aGlu
IHRoZSBzdGFjayBzcGFjZSBhbmQgaXMgYWxpZ25lZCBvbiBhbGwgc3lzdGVtcyB3ZSBjYXJlCisg
ICAgLy8gYWJvdXQuICBBcyBmYXIgYXMgSSBrbm93IHRoZXJlIGlzIG5vIEFCSSB3aXRoIHN0YWNr
IGFsaWdubWVudCBncmVhdGVyCisgICAgLy8gdGhhbiA2NC4gIFdlIGFzc3VtZSBzdGFjayBhbmQg
c3RhY2tfc2l6ZSBhbHJlYWR5IGhhdmUgYWxpZ25tZW50IG9mCisgICAgLy8ga01heFN0YWNrQWxp
Z25tZW50LgorICAgIGNvbnN0IHNpemVfdCBrTWF4U3RhY2tBbGlnbm1lbnQgPSA2NDsKICAgICB2
b2lkKiBjb25zdCBzdGFja190b3AgPQotICAgICAgICBzdGF0aWNfY2FzdDxjaGFyKj4oc3RhY2sp
ICsgKHN0YWNrX2dyb3dzX2Rvd24gPyBzdGFja19zaXplIDogMCk7CisgICAgICAgIHN0YXRpY19j
YXN0PGNoYXIqPihzdGFjaykgKworICAgICAgICAgICAgKHN0YWNrX2dyb3dzX2Rvd24gPyBzdGFj
a19zaXplIC0ga01heFN0YWNrQWxpZ25tZW50IDogMCk7CisgICAgR1RFU1RfREVBVEhfVEVTVF9D
SEVDS18oc3RhY2tfc2l6ZSA+IGtNYXhTdGFja0FsaWdubWVudCAmJgorICAgICAgICByZWludGVy
cHJldF9jYXN0PGludHB0cl90PihzdGFja190b3ApICUga01heFN0YWNrQWxpZ25tZW50ID09IDAp
OwogCiAgICAgY2hpbGRfcGlkID0gY2xvbmUoJkV4ZWNEZWF0aFRlc3RDaGlsZE1haW4sIHN0YWNr
X3RvcCwgU0lHQ0hMRCwgJmFyZ3MpOwogCiAgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18obXVu
bWFwKHN0YWNrLCBzdGFja19zaXplKSAhPSAtMSk7CiAgIH0KLSNlbHNlCisjICAgZWxzZQogICBj
b25zdCBib29sIHVzZV9mb3JrID0gdHJ1ZTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NMT05FCisj
ICAgZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORQogCiAgIGlmICh1c2VfZm9yayAmJiAoY2hpbGRf
cGlkID0gZm9yaygpKSA9PSAwKSB7CiAgICAgICBFeGVjRGVhdGhUZXN0Q2hpbGRNYWluKCZhcmdz
KTsKICAgICAgIF9leGl0KDApOwogICB9CisjICBlbmRpZiAgLy8gR1RFU1RfT1NfUU5YCisjICBp
ZiBHVEVTVF9PU19MSU5VWAorICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKAorICAg
ICAgc2lnYWN0aW9uKFNJR1BST0YsICZzYXZlZF9zaWdwcm9mX2FjdGlvbiwgTlVMTCkpOworIyAg
ZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCiAKICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oY2hp
bGRfcGlkICE9IC0xKTsKICAgcmV0dXJuIGNoaWxkX3BpZDsKQEAgLTk0MiwxNiArMTM0OSwxNiBA
QCBEZWF0aFRlc3Q6OlRlc3RSb2xlIEV4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAgIC8v
IGl0IGJlIGNsb3NlZCB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGRvZXMgYW4gZXhlYzoKICAgR1RF
U1RfREVBVEhfVEVTVF9DSEVDS18oZmNudGwocGlwZV9mZFsxXSwgRl9TRVRGRCwgMCkgIT0gLTEp
OwogCi0gIGNvbnN0IFN0cmluZyBmaWx0ZXJfZmxhZyA9Ci0gICAgICBTdHJpbmc6OkZvcm1hdCgi
LS0lcyVzPSVzLiVzIiwKLSAgICAgICAgICAgICAgICAgICAgIEdURVNUX0ZMQUdfUFJFRklYXywg
a0ZpbHRlckZsYWcsCi0gICAgICAgICAgICAgICAgICAgICBpbmZvLT50ZXN0X2Nhc2VfbmFtZSgp
LCBpbmZvLT5uYW1lKCkpOwotICBjb25zdCBTdHJpbmcgaW50ZXJuYWxfZmxhZyA9Ci0gICAgICBT
dHJpbmc6OkZvcm1hdCgiLS0lcyVzPSVzfCVkfCVkfCVkIiwKLSAgICAgICAgICAgICAgICAgICAg
IEdURVNUX0ZMQUdfUFJFRklYXywga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZywKLSAgICAgICAg
ICAgICAgICAgICAgIGZpbGVfLCBsaW5lXywgZGVhdGhfdGVzdF9pbmRleCwgcGlwZV9mZFsxXSk7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbHRlcl9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCIt
LSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsga0ZpbHRlckZsYWcgKyAiPSIKKyAgICAgICsgaW5m
by0+dGVzdF9jYXNlX25hbWUoKSArICIuIiArIGluZm8tPm5hbWUoKTsKKyAgY29uc3Qgc3RkOjpz
dHJpbmcgaW50ZXJuYWxfZmxhZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0iKSArIEdURVNUX0ZM
QUdfUFJFRklYXyArIGtJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcgKyAiPSIKKyAgICAgICsgZmls
ZV8gKyAifCIgKyBTdHJlYW1hYmxlVG9TdHJpbmcobGluZV8pICsgInwiCisgICAgICArIFN0cmVh
bWFibGVUb1N0cmluZyhkZWF0aF90ZXN0X2luZGV4KSArICJ8IgorICAgICAgKyBTdHJlYW1hYmxl
VG9TdHJpbmcocGlwZV9mZFsxXSk7CiAgIEFyZ3VtZW50cyBhcmdzOwotICBhcmdzLkFkZEFyZ3Vt
ZW50cyhHZXRBcmd2cygpKTsKKyAgYXJncy5BZGRBcmd1bWVudHMoR2V0QXJndnNGb3JEZWF0aFRl
c3RDaGlsZFByb2Nlc3MoKSk7CiAgIGFyZ3MuQWRkQXJndW1lbnQoZmlsdGVyX2ZsYWcuY19zdHIo
KSk7CiAgIGFyZ3MuQWRkQXJndW1lbnQoaW50ZXJuYWxfZmxhZy5jX3N0cigpKTsKIApAQCAtOTYy
LDcgKzEzNjksNyBAQCBEZWF0aFRlc3Q6OlRlc3RSb2xlIEV4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJv
bGUoKSB7CiAgIC8vIGlzIG5lY2Vzc2FyeS4KICAgRmx1c2hJbmZvTG9nKCk7CiAKLSAgY29uc3Qg
cGlkX3QgY2hpbGRfcGlkID0gRXhlY0RlYXRoVGVzdEZvcmsoYXJncy5Bcmd2KCksIHBpcGVfZmRb
MF0pOworICBjb25zdCBwaWRfdCBjaGlsZF9waWQgPSBFeGVjRGVhdGhUZXN0U3Bhd25DaGlsZChh
cmdzLkFyZ3YoKSwgcGlwZV9mZFswXSk7CiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FM
TF8oY2xvc2UocGlwZV9mZFsxXSkpOwogICBzZXRfY2hpbGRfcGlkKGNoaWxkX3BpZCk7CiAgIHNl
dF9yZWFkX2ZkKHBpcGVfZmRbMF0pOwpAQCAtOTcwLDcgKzEzNzcsNyBAQCBEZWF0aFRlc3Q6OlRl
c3RSb2xlIEV4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAgIHJldHVybiBPVkVSU0VFX1RF
U1Q7CiB9CiAKLSNlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vICFHVEVT
VF9PU19XSU5ET1dTCiAKIC8vIENyZWF0ZXMgYSBjb25jcmV0ZSBEZWF0aFRlc3QtZGVyaXZlZCBj
bGFzcyB0aGF0IGRlcGVuZHMgb24gdGhlCiAvLyAtLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgZmxh
ZywgYW5kIHNldHMgdGhlIHBvaW50ZXIgcG9pbnRlZCB0bwpAQCAtOTg4LDkgKzEzOTUsMTAgQEAg
Ym9vbCBEZWZhdWx0RGVhdGhUZXN0RmFjdG9yeTo6Q3JlYXRlKGNvbnN0IGNoYXIqIHN0YXRlbWVu
dCwgY29uc3QgUkUqIHJlZ2V4LAogCiAgIGlmIChmbGFnICE9IE5VTEwpIHsKICAgICBpZiAoZGVh
dGhfdGVzdF9pbmRleCA+IGZsYWctPmluZGV4KCkpIHsKLSAgICAgIERlYXRoVGVzdDo6c2V0X2xh
c3RfZGVhdGhfdGVzdF9tZXNzYWdlKFN0cmluZzo6Rm9ybWF0KAotICAgICAgICAgICJEZWF0aCB0
ZXN0IGNvdW50ICglZCkgc29tZWhvdyBleGNlZWRlZCBleHBlY3RlZCBtYXhpbXVtICglZCkiLAot
ICAgICAgICAgIGRlYXRoX3Rlc3RfaW5kZXgsIGZsYWctPmluZGV4KCkpKTsKKyAgICAgIERlYXRo
VGVzdDo6c2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKAorICAgICAgICAgICJEZWF0aCB0ZXN0
IGNvdW50ICgiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGRlYXRoX3Rlc3RfaW5kZXgpCisgICAgICAg
ICAgKyAiKSBzb21laG93IGV4Y2VlZGVkIGV4cGVjdGVkIG1heGltdW0gKCIKKyAgICAgICAgICAr
IFN0cmVhbWFibGVUb1N0cmluZyhmbGFnLT5pbmRleCgpKSArICIpIik7CiAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCkBAIC0xMDAxLDY0ICsxNDA5LDU2IEBAIGJvb2wgRGVmYXVsdERlYXRo
VGVzdEZhY3Rvcnk6OkNyZWF0ZShjb25zdCBjaGFyKiBzdGF0ZW1lbnQsIGNvbnN0IFJFKiByZWdl
eCwKICAgICB9CiAgIH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lO
RE9XUworCiAgIGlmIChHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZl
IiB8fAogICAgICAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAiZmFzdCIpIHsKICAg
ICAqdGVzdCA9IG5ldyBXaW5kb3dzRGVhdGhUZXN0KHN0YXRlbWVudCwgcmVnZXgsIGZpbGUsIGxp
bmUpOwogICB9Ci0jZWxzZQorCisjIGVsaWYgR1RFU1RfT1NfRlVDSFNJQQorCisgIGlmIChHVEVT
VF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZlIiB8fAorICAgICAgR1RFU1Rf
RkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAiZmFzdCIpIHsKKyAgICAqdGVzdCA9IG5ldyBGdWNo
c2lhRGVhdGhUZXN0KHN0YXRlbWVudCwgcmVnZXgsIGZpbGUsIGxpbmUpOworICB9CisKKyMgZWxz
ZQorCiAgIGlmIChHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZlIikg
ewogICAgICp0ZXN0ID0gbmV3IEV4ZWNEZWF0aFRlc3Qoc3RhdGVtZW50LCByZWdleCwgZmlsZSwg
bGluZSk7CiAgIH0gZWxzZSBpZiAoR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAiZmFz
dCIpIHsKICAgICAqdGVzdCA9IG5ldyBOb0V4ZWNEZWF0aFRlc3Qoc3RhdGVtZW50LCByZWdleCk7
CiAgIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjIGVuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCisKICAgZWxzZSB7ICAvLyBOT0xJTlQgLSB0aGlzIGlzIG1vcmUgcmVhZGFibGUg
dGhhbiB1bmJhbGFuY2VkIGJyYWNrZXRzIGluc2lkZSAjaWYuCi0gICAgRGVhdGhUZXN0OjpzZXRf
bGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICJVbmtub3du
IGRlYXRoIHRlc3Qgc3R5bGUgXCIlc1wiIGVuY291bnRlcmVkIiwKLSAgICAgICAgR1RFU1RfRkxB
RyhkZWF0aF90ZXN0X3N0eWxlKS5jX3N0cigpKSk7CisgICAgRGVhdGhUZXN0OjpzZXRfbGFzdF9k
ZWF0aF90ZXN0X21lc3NhZ2UoCisgICAgICAgICJVbmtub3duIGRlYXRoIHRlc3Qgc3R5bGUgXCIi
ICsgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKQorICAgICAgICArICJcIiBlbmNvdW50ZXJl
ZCIpOwogICAgIHJldHVybiBmYWxzZTsKICAgfQogCiAgIHJldHVybiB0cnVlOwogfQogCi0vLyBT
cGxpdHMgYSBnaXZlbiBzdHJpbmcgb24gYSBnaXZlbiBkZWxpbWl0ZXIsIHBvcHVsYXRpbmcgYSBn
aXZlbgotLy8gdmVjdG9yIHdpdGggdGhlIGZpZWxkcy4gIEdURVNUX0hBU19ERUFUSF9URVNUIGlt
cGxpZXMgdGhhdCB3ZSBoYXZlCi0vLyA6OnN0ZDo6c3RyaW5nLCBzbyB3ZSBjYW4gdXNlIGl0IGhl
cmUuCi1zdGF0aWMgdm9pZCBTcGxpdFN0cmluZyhjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIsIGNo
YXIgZGVsaW1pdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6OnZlY3RvcjwgOjpz
dGQ6OnN0cmluZz4qIGRlc3QpIHsKLSAgOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4gcGFy
c2VkOwotICA6OnN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgcG9zID0gMDsKLSAgd2hpbGUgKDo6dGVz
dGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgewotICAgIGNvbnN0IDo6c3RkOjpzdHJpbmc6
OnNpemVfdHlwZSBjb2xvbiA9IHN0ci5maW5kKGRlbGltaXRlciwgcG9zKTsKLSAgICBpZiAoY29s
b24gPT0gOjpzdGQ6OnN0cmluZzo6bnBvcykgewotICAgICAgcGFyc2VkLnB1c2hfYmFjayhzdHIu
c3Vic3RyKHBvcykpOwotICAgICAgYnJlYWs7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHBhcnNlZC5w
dXNoX2JhY2soc3RyLnN1YnN0cihwb3MsIGNvbG9uIC0gcG9zKSk7Ci0gICAgICBwb3MgPSBjb2xv
biArIDE7Ci0gICAgfQotICB9Ci0gIGRlc3QtPnN3YXAocGFyc2VkKTsKLX0KLQotI2lmIEdURVNU
X09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lORE9XUwogLy8gUmVjcmVhdGVzIHRoZSBwaXBl
IGFuZCBldmVudCBoYW5kbGVzIGZyb20gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMsCiAvLyBzaWdu
YWxzIHRoZSBldmVudCwgYW5kIHJldHVybnMgYSBmaWxlIGRlc2NyaXB0b3Igd3JhcHBlZCBhcm91
bmQgdGhlIHBpcGUKIC8vIGhhbmRsZS4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gdGhlIGNo
aWxkIHByb2Nlc3Mgb25seS4KLWludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBp
bnQgcGFyZW50X3Byb2Nlc3NfaWQsCitzdGF0aWMgaW50IEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9y
KHVuc2lnbmVkIGludCBwYXJlbnRfcHJvY2Vzc19pZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgZXZlbnRfaGFuZGxlX2FzX3NpemVfdCkgewogICBBdXRvSGFuZGxlIHBh
cmVudF9wcm9jZXNzX2hhbmRsZSg6Ok9wZW5Qcm9jZXNzKFBST0NFU1NfRFVQX0hBTkRMRSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCAg
Ly8gTm9uLWluaGVyaXRhYmxlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyZW50X3Byb2Nlc3NfaWQpKTsKICAgaWYgKHBhcmVudF9wcm9jZXNz
X2hhbmRsZS5HZXQoKSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgIERlYXRoVGVzdEFi
b3J0KFN0cmluZzo6Rm9ybWF0KCJVbmFibGUgdG8gb3BlbiBwYXJlbnQgcHJvY2VzcyAldSIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50X3Byb2Nlc3NfaWQpKTsKKyAg
ICBEZWF0aFRlc3RBYm9ydCgiVW5hYmxlIHRvIG9wZW4gcGFyZW50IHByb2Nlc3MgIiArCisgICAg
ICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHBhcmVudF9wcm9jZXNzX2lkKSk7CiAg
IH0KIAotICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBSZXBsYWNlIHRoZSBmb2xsb3dpbmcg
Y2hlY2sgd2l0aCBhCisgIC8vIEZJWE1FOiBSZXBsYWNlIHRoZSBmb2xsb3dpbmcgY2hlY2sgd2l0
aCBhCiAgIC8vIGNvbXBpbGUtdGltZSBhc3NlcnRpb24gd2hlbiBhdmFpbGFibGUuCiAgIEdURVNU
X0NIRUNLXyhzaXplb2YoSEFORExFKSA8PSBzaXplb2Yoc2l6ZV90KSk7CiAKQEAgLTEwNjYsNyAr
MTQ2Niw3IEBAIGludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBpbnQgcGFyZW50
X3Byb2Nlc3NfaWQsCiAgICAgICByZWludGVycHJldF9jYXN0PEhBTkRMRT4od3JpdGVfaGFuZGxl
X2FzX3NpemVfdCk7CiAgIEhBTkRMRSBkdXBfd3JpdGVfaGFuZGxlOwogCi0gIC8vIFRoZSBuZXds
eSBpbml0aWFsaXplZCBoYW5kbGUgaXMgYWNjZXNzaWJsZSBvbmx5IGluIGluIHRoZSBwYXJlbnQK
KyAgLy8gVGhlIG5ld2x5IGluaXRpYWxpemVkIGhhbmRsZSBpcyBhY2Nlc3NpYmxlIG9ubHkgaW4g
dGhlIHBhcmVudAogICAvLyBwcm9jZXNzLiBUbyBvYnRhaW4gb25lIGFjY2Vzc2libGUgd2l0aGlu
IHRoZSBjaGlsZCwgd2UgbmVlZCB0byB1c2UKICAgLy8gRHVwbGljYXRlSGFuZGxlLgogICBpZiAo
ITo6RHVwbGljYXRlSGFuZGxlKHBhcmVudF9wcm9jZXNzX2hhbmRsZS5HZXQoKSwgd3JpdGVfaGFu
ZGxlLApAQCAtMTA3NSw5ICsxNDc1LDEwIEBAIGludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1
bnNpZ25lZCBpbnQgcGFyZW50X3Byb2Nlc3NfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MgaXMgdXNlZC4KICAgICAgICAgICAgICAg
ICAgICAgICAgICBGQUxTRSwgIC8vIFJlcXVlc3Qgbm9uLWluaGVyaXRhYmxlIGhhbmRsZXIuCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFVQTElDQVRFX1NBTUVfQUNDRVNTKSkgewotICAgIERl
YXRoVGVzdEFib3J0KFN0cmluZzo6Rm9ybWF0KAotICAgICAgICAiVW5hYmxlIHRvIGR1cGxpY2F0
ZSB0aGUgcGlwZSBoYW5kbGUgJUl1IGZyb20gdGhlIHBhcmVudCBwcm9jZXNzICV1IiwKLSAgICAg
ICAgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCwgcGFyZW50X3Byb2Nlc3NfaWQpKTsKKyAgICBEZWF0
aFRlc3RBYm9ydCgiVW5hYmxlIHRvIGR1cGxpY2F0ZSB0aGUgcGlwZSBoYW5kbGUgIiArCisgICAg
ICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHdyaXRlX2hhbmRsZV9hc19zaXplX3Qp
ICsKKyAgICAgICAgICAgICAgICAgICAiIGZyb20gdGhlIHBhcmVudCBwcm9jZXNzICIgKworICAg
ICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhwYXJlbnRfcHJvY2Vzc19pZCkpOwog
ICB9CiAKICAgY29uc3QgSEFORExFIGV2ZW50X2hhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFO
RExFPihldmVudF9oYW5kbGVfYXNfc2l6ZV90KTsKQEAgLTEwODgsMTcgKzE0ODksMTggQEAgaW50
IEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9yKHVuc2lnbmVkIGludCBwYXJlbnRfcHJvY2Vzc19pZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
RkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgRFVQTElDQVRFX1NBTUVfQUNDRVNTKSkg
ewotICAgIERlYXRoVGVzdEFib3J0KFN0cmluZzo6Rm9ybWF0KAotICAgICAgICAiVW5hYmxlIHRv
IGR1cGxpY2F0ZSB0aGUgZXZlbnQgaGFuZGxlICVJdSBmcm9tIHRoZSBwYXJlbnQgcHJvY2VzcyAl
dSIsCi0gICAgICAgIGV2ZW50X2hhbmRsZV9hc19zaXplX3QsIHBhcmVudF9wcm9jZXNzX2lkKSk7
CisgICAgRGVhdGhUZXN0QWJvcnQoIlVuYWJsZSB0byBkdXBsaWNhdGUgdGhlIGV2ZW50IGhhbmRs
ZSAiICsKKyAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcoZXZlbnRfaGFuZGxl
X2FzX3NpemVfdCkgKworICAgICAgICAgICAgICAgICAgICIgZnJvbSB0aGUgcGFyZW50IHByb2Nl
c3MgIiArCisgICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHBhcmVudF9wcm9j
ZXNzX2lkKSk7CiAgIH0KIAogICBjb25zdCBpbnQgd3JpdGVfZmQgPQogICAgICAgOjpfb3Blbl9v
c2ZoYW5kbGUocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oZHVwX3dyaXRlX2hhbmRsZSksIE9f
QVBQRU5EKTsKICAgaWYgKHdyaXRlX2ZkID09IC0xKSB7Ci0gICAgRGVhdGhUZXN0QWJvcnQoU3Ry
aW5nOjpGb3JtYXQoCi0gICAgICAgICJVbmFibGUgdG8gY29udmVydCBwaXBlIGhhbmRsZSAlSXUg
dG8gYSBmaWxlIGRlc2NyaXB0b3IiLAotICAgICAgICB3cml0ZV9oYW5kbGVfYXNfc2l6ZV90KSk7
CisgICAgRGVhdGhUZXN0QWJvcnQoIlVuYWJsZSB0byBjb252ZXJ0IHBpcGUgaGFuZGxlICIgKwor
ICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh3cml0ZV9oYW5kbGVfYXNfc2l6
ZV90KSArCisgICAgICAgICAgICAgICAgICAgIiB0byBhIGZpbGUgZGVzY3JpcHRvciIpOwogICB9
CiAKICAgLy8gU2lnbmFscyB0aGUgcGFyZW50IHRoYXQgdGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlw
ZSBoYXMgYmVlbiBhY3F1aXJlZApAQCAtMTEwNyw3ICsxNTA5LDcgQEAgaW50IEdldFN0YXR1c0Zp
bGVEZXNjcmlwdG9yKHVuc2lnbmVkIGludCBwYXJlbnRfcHJvY2Vzc19pZCwKIAogICByZXR1cm4g
d3JpdGVfZmQ7CiB9Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MKIAogLy8gUmV0dXJucyBhIG5ld2x5IGNyZWF0ZWQgSW50ZXJuYWxSdW5E
ZWF0aFRlc3RGbGFnIG9iamVjdCB3aXRoIGZpZWxkcwogLy8gaW5pdGlhbGl6ZWQgZnJvbSB0aGUg
R1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkgZmxhZyBpZgpAQCAtMTEyMyw3ICsx
NTI1LDggQEAgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBQYXJzZUludGVybmFsUnVuRGVhdGhU
ZXN0RmxhZygpIHsKICAgU3BsaXRTdHJpbmcoR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhf
dGVzdCkuY19zdHIoKSwgJ3wnLCAmZmllbGRzKTsKICAgaW50IHdyaXRlX2ZkID0gLTE7CiAKLSNp
ZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKwogICB1bnNpZ25lZCBp
bnQgcGFyZW50X3Byb2Nlc3NfaWQgPSAwOwogICBzaXplX3Qgd3JpdGVfaGFuZGxlX2FzX3NpemVf
dCA9IDA7CiAgIHNpemVfdCBldmVudF9oYW5kbGVfYXNfc2l6ZV90ID0gMDsKQEAgLTExMzQsMjMg
KzE1MzcsMzQgQEAgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBQYXJzZUludGVybmFsUnVuRGVh
dGhUZXN0RmxhZygpIHsKICAgICAgIHx8ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmllbGRzWzNdLCAm
cGFyZW50X3Byb2Nlc3NfaWQpCiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1s0
XSwgJndyaXRlX2hhbmRsZV9hc19zaXplX3QpCiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVy
KGZpZWxkc1s1XSwgJmV2ZW50X2hhbmRsZV9hc19zaXplX3QpKSB7Ci0gICAgRGVhdGhUZXN0QWJv
cnQoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICJCYWQgLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVh
dGhfdGVzdCBmbGFnOiAlcyIsCi0gICAgICAgIEdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRo
X3Rlc3QpLmNfc3RyKCkpKTsKKyAgICBEZWF0aFRlc3RBYm9ydCgiQmFkIC0tZ3Rlc3RfaW50ZXJu
YWxfcnVuX2RlYXRoX3Rlc3QgZmxhZzogIiArCisgICAgICAgICAgICAgICAgICAgR1RFU1RfRkxB
RyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkpOwogICB9CiAgIHdyaXRlX2ZkID0gR2V0U3RhdHVz
RmlsZURlc2NyaXB0b3IocGFyZW50X3Byb2Nlc3NfaWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBldmVudF9oYW5kbGVfYXNfc2l6ZV90KTsKLSNlbHNlCisKKyMg
ZWxpZiBHVEVTVF9PU19GVUNIU0lBCisKKyAgaWYgKGZpZWxkcy5zaXplKCkgIT0gMworICAgICAg
fHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVsZHNbMV0sICZsaW5lKQorICAgICAgfHwgIVBhcnNl
TmF0dXJhbE51bWJlcihmaWVsZHNbMl0sICZpbmRleCkpIHsKKyAgICBEZWF0aFRlc3RBYm9ydCgi
QmFkIC0tZ3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QgZmxhZzogIgorICAgICAgICArIEdU
RVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpKTsKKyAgfQorCisjIGVsc2UKKwogICBp
ZiAoZmllbGRzLnNpemUoKSAhPSA0CiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxk
c1sxXSwgJmxpbmUpCiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1syXSwgJmlu
ZGV4KQogICAgICAgfHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVsZHNbM10sICZ3cml0ZV9mZCkp
IHsKLSAgICBEZWF0aFRlc3RBYm9ydChTdHJpbmc6OkZvcm1hdCgKLSAgICAgICAgIkJhZCAtLWd0
ZXN0X2ludGVybmFsX3J1bl9kZWF0aF90ZXN0IGZsYWc6ICVzIiwKLSAgICAgICAgR1RFU1RfRkxB
RyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkuY19zdHIoKSkpOworICAgIERlYXRoVGVzdEFib3J0
KCJCYWQgLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFnOiAiCisgICAgICAgICsg
R1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkpOwogICB9Ci0jZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCiAgIHJldHVy
biBuZXcgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKGZpZWxkc1swXSwgbGluZSwgaW5kZXgsIHdy
aXRlX2ZkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0
ZXN0LWZpbGVwYXRoLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWZpbGVw
YXRoLmNjCmluZGV4IGMxZWY5MTg4YWQ4NWFiOGEwNDdhMzNiZjk5NDVlMWNkMGNjNzNlZmYuLmE3
ZTY1YzA4MmE3NWZjNmZiMDM4YTAyM2Q1YjFkM2UwOWU0NzlmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1maWxlcGF0aC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtZmlsZXBhdGguY2MKQEAgLTI2LDM5ICsyNiwzOCBAQAog
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcnM6IGtlaXRoLnJheUBnbWFpbC5jb20gKEtlaXRoIFJheSkKIAotI2luY2x1ZGUgPGd0ZXN0
L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgiCiAK
ICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0
LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgogCiAjaWYgR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUKLSNpbmNsdWRlIDx3aW5kb3dzLmg+CisjIGluY2x1ZGUgPHdpbmRvd3MuaD4K
ICNlbGlmIEdURVNUX09TX1dJTkRPV1MKLSNpbmNsdWRlIDxkaXJlY3QuaD4KLSNpbmNsdWRlIDxp
by5oPgorIyBpbmNsdWRlIDxkaXJlY3QuaD4KKyMgaW5jbHVkZSA8aW8uaD4KICNlbGlmIEdURVNU
X09TX1NZTUJJQU4KIC8vIFN5bWJpYW4gT3BlbkMgaGFzIFBBVEhfTUFYIGluIHN5cy9zeXNsaW1p
dHMuaAotI2luY2x1ZGUgPHN5cy9zeXNsaW1pdHMuaD4KKyMgaW5jbHVkZSA8c3lzL3N5c2xpbWl0
cy5oPgogI2Vsc2UKLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxjbGltaXRzPiAgLy8g
U29tZSBMaW51eCBkaXN0cmlidXRpb25zIGRlZmluZSBQQVRIX01BWCBoZXJlLgorIyBpbmNsdWRl
IDxsaW1pdHMuaD4KKyMgaW5jbHVkZSA8Y2xpbWl0cz4gIC8vIFNvbWUgTGludXggZGlzdHJpYnV0
aW9ucyBkZWZpbmUgUEFUSF9NQVggaGVyZS4KICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKIAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgorCiAjaWYg
R1RFU1RfT1NfV0lORE9XUwotI2RlZmluZSBHVEVTVF9QQVRIX01BWF8gX01BWF9QQVRICisjIGRl
ZmluZSBHVEVTVF9QQVRIX01BWF8gX01BWF9QQVRICiAjZWxpZiBkZWZpbmVkKFBBVEhfTUFYKQot
I2RlZmluZSBHVEVTVF9QQVRIX01BWF8gUEFUSF9NQVgKKyMgZGVmaW5lIEdURVNUX1BBVEhfTUFY
XyBQQVRIX01BWAogI2VsaWYgZGVmaW5lZChfWE9QRU5fUEFUSF9NQVgpCi0jZGVmaW5lIEdURVNU
X1BBVEhfTUFYXyBfWE9QRU5fUEFUSF9NQVgKKyMgZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBfWE9Q
RU5fUEFUSF9NQVgKICNlbHNlCi0jZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBfUE9TSVhfUEFUSF9N
QVgKKyMgZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBfUE9TSVhfUEFUSF9NQVgKICNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUwogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5n
Lmg+Ci0KIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKQEAgLTY5
LDIxICs2OCwxOSBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogLy8gb2YgdGhlbS4KIGNvbnN0IGNo
YXIga1BhdGhTZXBhcmF0b3IgPSAnXFwnOwogY29uc3QgY2hhciBrQWx0ZXJuYXRlUGF0aFNlcGFy
YXRvciA9ICcvJzsKLWNvbnN0IGNoYXIga1BhdGhTZXBhcmF0b3JTdHJpbmdbXSA9ICJcXCI7CiBj
b25zdCBjaGFyIGtBbHRlcm5hdGVQYXRoU2VwYXJhdG9yU3RyaW5nW10gPSAiLyI7Ci0jaWYgR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIC8vIFdp
bmRvd3MgQ0UgZG9lc24ndCBoYXZlIGEgY3VycmVudCBkaXJlY3RvcnkuIFlvdSBzaG91bGQgbm90
IHVzZQogLy8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGluIHRlc3RzIG9uIFdpbmRvd3MgQ0UsIGJ1
dCB0aGlzIGF0IGxlYXN0CiAvLyBwcm92aWRlcyBhIHJlYXNvbmFibGUgZmFsbGJhY2suCiBjb25z
dCBjaGFyIGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nW10gPSAiXFwiOwogLy8gV2luZG93cyBDRSBk
b2Vzbid0IGRlZmluZSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUwogY29uc3QgRFdPUkQga0ludmFs
aWRGaWxlQXR0cmlidXRlcyA9IDB4ZmZmZmZmZmY7Ci0jZWxzZQorIyBlbHNlCiBjb25zdCBjaGFy
IGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nW10gPSAiLlxcIjsKLSNlbmRpZiAgLy8gR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAjZWxz
ZQogY29uc3QgY2hhciBrUGF0aFNlcGFyYXRvciA9ICcvJzsKLWNvbnN0IGNoYXIga1BhdGhTZXBh
cmF0b3JTdHJpbmdbXSA9ICIvIjsKIGNvbnN0IGNoYXIga0N1cnJlbnREaXJlY3RvcnlTdHJpbmdb
XSA9ICIuLyI7CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIApAQCAtOTgsNyArOTUsNyBA
QCBzdGF0aWMgYm9vbCBJc1BhdGhTZXBhcmF0b3IoY2hhciBjKSB7CiAKIC8vIFJldHVybnMgdGhl
IGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksIG9yICIiIGlmIHVuc3VjY2Vzc2Z1bC4KIEZpbGVQ
YXRoIEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkgewotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9C
SUxFCisjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgfHwgR1RFU1RfT1NfV0lORE9XU19QSE9O
RSB8fCBHVEVTVF9PU19XSU5ET1dTX1JUCiAgIC8vIFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlIGEg
Y3VycmVudCBkaXJlY3RvcnksIHNvIHdlIGp1c3QgcmV0dXJuCiAgIC8vIHNvbWV0aGluZyByZWFz
b25hYmxlLgogICByZXR1cm4gRmlsZVBhdGgoa0N1cnJlbnREaXJlY3RvcnlTdHJpbmcpOwpAQCAt
MTA3LDcgKzEwNCwxNCBAQCBGaWxlUGF0aCBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpIHsKICAg
cmV0dXJuIEZpbGVQYXRoKF9nZXRjd2QoY3dkLCBzaXplb2YoY3dkKSkgPT0gTlVMTCA/ICIiIDog
Y3dkKTsKICNlbHNlCiAgIGNoYXIgY3dkW0dURVNUX1BBVEhfTUFYXyArIDFdID0geyAnXDAnIH07
Ci0gIHJldHVybiBGaWxlUGF0aChnZXRjd2QoY3dkLCBzaXplb2YoY3dkKSkgPT0gTlVMTCA/ICIi
IDogY3dkKTsKKyAgY2hhciogcmVzdWx0ID0gZ2V0Y3dkKGN3ZCwgc2l6ZW9mKGN3ZCkpOworIyBp
ZiBHVEVTVF9PU19OQUNMCisgIC8vIGdldGN3ZCB3aWxsIGxpa2VseSBmYWlsIGluIE5hQ2wgZHVl
IHRvIHRoZSBzYW5kYm94LCBzbyByZXR1cm4gc29tZXRoaW5nCisgIC8vIHJlYXNvbmFibGUuIFRo
ZSB1c2VyIG1heSBoYXZlIHByb3ZpZGVkIGEgc2hpbSBpbXBsZW1lbnRhdGlvbiBmb3IgZ2V0Y3dk
LAorICAvLyBob3dldmVyLCBzbyBmYWxsYmFjayBvbmx5IHdoZW4gZmFpbHVyZSBpcyBkZXRlY3Rl
ZC4KKyAgcmV0dXJuIEZpbGVQYXRoKHJlc3VsdCA9PSBOVUxMID8ga0N1cnJlbnREaXJlY3RvcnlT
dHJpbmcgOiBjd2QpOworIyBlbmRpZiAgLy8gR1RFU1RfT1NfTkFDTAorICByZXR1cm4gRmlsZVBh
dGgocmVzdWx0ID09IE5VTEwgPyAiIiA6IGN3ZCk7CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCiB9CiAKQEAgLTExNiwxNCArMTIwLDE1IEBAIEZpbGVQYXRoIEZpbGVQYXRoOjpH
ZXRDdXJyZW50RGlyKCkgewogLy8gRmlsZVBhdGgoImRpci9maWxlIikuIElmIGEgY2FzZS1pbnNl
bnNpdGl2ZSBleHRlbnNpb24gaXMgbm90CiAvLyBmb3VuZCwgcmV0dXJucyBhIGNvcHkgb2YgdGhl
IG9yaWdpbmFsIEZpbGVQYXRoLgogRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZUV4dGVuc2lvbihj
b25zdCBjaGFyKiBleHRlbnNpb24pIGNvbnN0IHsKLSAgU3RyaW5nIGRvdF9leHRlbnNpb24oU3Ry
aW5nOjpGb3JtYXQoIi4lcyIsIGV4dGVuc2lvbikpOwotICBpZiAocGF0aG5hbWVfLkVuZHNXaXRo
Q2FzZUluc2Vuc2l0aXZlKGRvdF9leHRlbnNpb24uY19zdHIoKSkpIHsKLSAgICByZXR1cm4gRmls
ZVBhdGgoU3RyaW5nKHBhdGhuYW1lXy5jX3N0cigpLCBwYXRobmFtZV8ubGVuZ3RoKCkgLSA0KSk7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGRvdF9leHRlbnNpb24gPSBzdGQ6OnN0cmluZygiLiIpICsg
ZXh0ZW5zaW9uOworICBpZiAoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZShwYXRobmFt
ZV8sIGRvdF9leHRlbnNpb24pKSB7CisgICAgcmV0dXJuIEZpbGVQYXRoKHBhdGhuYW1lXy5zdWJz
dHIoCisgICAgICAgIDAsIHBhdGhuYW1lXy5sZW5ndGgoKSAtIGRvdF9leHRlbnNpb24ubGVuZ3Ro
KCkpKTsKICAgfQogICByZXR1cm4gKnRoaXM7CiB9CiAKLS8vIFJldHVybnMgYSBwb2ludGVyIHRv
IHRoZSBsYXN0IG9jY3VyZW5jZSBvZiBhIHZhbGlkIHBhdGggc2VwYXJhdG9yIGluCisvLyBSZXR1
cm5zIGEgcG9pbnRlciB0byB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIGEgdmFsaWQgcGF0aCBzZXBh
cmF0b3IgaW4KIC8vIHRoZSBGaWxlUGF0aC4gT24gV2luZG93cywgZm9yIGV4YW1wbGUsIGJvdGgg
Jy8nIGFuZCAnXCcgYXJlIHZhbGlkIHBhdGgKIC8vIHNlcGFyYXRvcnMuIFJldHVybnMgTlVMTCBp
ZiBubyBwYXRoIHNlcGFyYXRvciB3YXMgZm91bmQuCiBjb25zdCBjaGFyKiBGaWxlUGF0aDo6Rmlu
ZExhc3RQYXRoU2VwYXJhdG9yKCkgY29uc3QgewpAQCAtMTQ3LDcgKzE1Miw3IEBAIGNvbnN0IGNo
YXIqIEZpbGVQYXRoOjpGaW5kTGFzdFBhdGhTZXBhcmF0b3IoKSBjb25zdCB7CiAvLyBPbiBXaW5k
b3dzIHBsYXRmb3JtLCAnXCcgaXMgdGhlIHBhdGggc2VwYXJhdG9yLCBvdGhlcndpc2UgaXQgaXMg
Jy8nLgogRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZURpcmVjdG9yeU5hbWUoKSBjb25zdCB7CiAg
IGNvbnN0IGNoYXIqIGNvbnN0IGxhc3Rfc2VwID0gRmluZExhc3RQYXRoU2VwYXJhdG9yKCk7Ci0g
IHJldHVybiBsYXN0X3NlcCA/IEZpbGVQYXRoKFN0cmluZyhsYXN0X3NlcCArIDEpKSA6ICp0aGlz
OworICByZXR1cm4gbGFzdF9zZXAgPyBGaWxlUGF0aChsYXN0X3NlcCArIDEpIDogKnRoaXM7CiB9
CiAKIC8vIFJlbW92ZUZpbGVOYW1lIHJldHVybnMgdGhlIGRpcmVjdG9yeSBwYXRoIHdpdGggdGhl
IGZpbGVuYW1lIHJlbW92ZWQuCkBAIC0xNTgsOSArMTYzLDkgQEAgRmlsZVBhdGggRmlsZVBhdGg6
OlJlbW92ZURpcmVjdG9yeU5hbWUoKSBjb25zdCB7CiAvLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCAn
XCcgaXMgdGhlIHBhdGggc2VwYXJhdG9yLCBvdGhlcndpc2UgaXQgaXMgJy8nLgogRmlsZVBhdGgg
RmlsZVBhdGg6OlJlbW92ZUZpbGVOYW1lKCkgY29uc3QgewogICBjb25zdCBjaGFyKiBjb25zdCBs
YXN0X3NlcCA9IEZpbmRMYXN0UGF0aFNlcGFyYXRvcigpOwotICBTdHJpbmcgZGlyOworICBzdGQ6
OnN0cmluZyBkaXI7CiAgIGlmIChsYXN0X3NlcCkgewotICAgIGRpciA9IFN0cmluZyhjX3N0cigp
LCBsYXN0X3NlcCArIDEgLSBjX3N0cigpKTsKKyAgICBkaXIgPSBzdGQ6OnN0cmluZyhjX3N0cigp
LCBsYXN0X3NlcCArIDEgLSBjX3N0cigpKTsKICAgfSBlbHNlIHsKICAgICBkaXIgPSBrQ3VycmVu
dERpcmVjdG9yeVN0cmluZzsKICAgfQpAQCAtMTc3LDExICsxODIsMTIgQEAgRmlsZVBhdGggRmls
ZVBhdGg6Ok1ha2VGaWxlTmFtZShjb25zdCBGaWxlUGF0aCYgZGlyZWN0b3J5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGaWxlUGF0aCYgYmFzZV9uYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtYmVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHRlbnNpb24pIHsKLSAgU3RyaW5nIGZpbGU7Cisg
IHN0ZDo6c3RyaW5nIGZpbGU7CiAgIGlmIChudW1iZXIgPT0gMCkgewotICAgIGZpbGUgPSBTdHJp
bmc6OkZvcm1hdCgiJXMuJXMiLCBiYXNlX25hbWUuY19zdHIoKSwgZXh0ZW5zaW9uKTsKKyAgICBm
aWxlID0gYmFzZV9uYW1lLnN0cmluZygpICsgIi4iICsgZXh0ZW5zaW9uOwogICB9IGVsc2Ugewot
ICAgIGZpbGUgPSBTdHJpbmc6OkZvcm1hdCgiJXNfJWQuJXMiLCBiYXNlX25hbWUuY19zdHIoKSwg
bnVtYmVyLCBleHRlbnNpb24pOworICAgIGZpbGUgPSBiYXNlX25hbWUuc3RyaW5nKCkgKyAiXyIg
KyBTdHJlYW1hYmxlVG9TdHJpbmcobnVtYmVyKQorICAgICAgICArICIuIiArIGV4dGVuc2lvbjsK
ICAgfQogICByZXR1cm4gQ29uY2F0UGF0aHMoZGlyZWN0b3J5LCBGaWxlUGF0aChmaWxlKSk7CiB9
CkBAIC0xOTMsOCArMTk5LDcgQEAgRmlsZVBhdGggRmlsZVBhdGg6OkNvbmNhdFBhdGhzKGNvbnN0
IEZpbGVQYXRoJiBkaXJlY3RvcnksCiAgIGlmIChkaXJlY3RvcnkuSXNFbXB0eSgpKQogICAgIHJl
dHVybiByZWxhdGl2ZV9wYXRoOwogICBjb25zdCBGaWxlUGF0aCBkaXIoZGlyZWN0b3J5LlJlbW92
ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpKTsKLSAgcmV0dXJuIEZpbGVQYXRoKFN0cmluZzo6Rm9y
bWF0KCIlcyVjJXMiLCBkaXIuY19zdHIoKSwga1BhdGhTZXBhcmF0b3IsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZV9wYXRoLmNfc3RyKCkpKTsKKyAgcmV0dXJuIEZp
bGVQYXRoKGRpci5zdHJpbmcoKSArIGtQYXRoU2VwYXJhdG9yICsgcmVsYXRpdmVfcGF0aC5zdHJp
bmcoKSk7CiB9CiAKIC8vIFJldHVybnMgdHJ1ZSBpZiBwYXRobmFtZSBkZXNjcmliZXMgc29tZXRo
aW5nIGZpbmRhYmxlIGluIHRoZSBmaWxlLXN5c3RlbSwKQEAgLTI0NSw3ICsyNTAsNyBAQCBib29s
IEZpbGVQYXRoOjpEaXJlY3RvcnlFeGlzdHMoKSBjb25zdCB7CiAvLyByb290IGRpcmVjdG9yeSBw
ZXIgZGlzayBkcml2ZS4pCiBib29sIEZpbGVQYXRoOjpJc1Jvb3REaXJlY3RvcnkoKSBjb25zdCB7
CiAjaWYgR1RFU1RfT1NfV0lORE9XUwotICAvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogb24gV2lu
ZG93cyBhIG5ldHdvcmsgc2hhcmUgbGlrZQorICAvLyBGSVhNRTogb24gV2luZG93cyBhIG5ldHdv
cmsgc2hhcmUgbGlrZQogICAvLyBcXHNlcnZlclxzaGFyZSBjYW4gYmUgYSByb290IGRpcmVjdG9y
eSwgYWx0aG91Z2ggaXQgY2Fubm90IGJlIHRoZQogICAvLyBjdXJyZW50IGRpcmVjdG9yeS4gIEhh
bmRsZSB0aGlzIHByb3Blcmx5LgogICByZXR1cm4gcGF0aG5hbWVfLmxlbmd0aCgpID09IDMgJiYg
SXNBYnNvbHV0ZVBhdGgoKTsKQEAgLTMzOCwxNCArMzQzLDE0IEBAIGJvb2wgRmlsZVBhdGg6OkNy
ZWF0ZUZvbGRlcigpIGNvbnN0IHsKIC8vIE9uIFdpbmRvd3MgcGxhdGZvcm0sIHVzZXMgXCBhcyB0
aGUgc2VwYXJhdG9yLCBvdGhlciBwbGF0Zm9ybXMgdXNlIC8uCiBGaWxlUGF0aCBGaWxlUGF0aDo6
UmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkgY29uc3QgewogICByZXR1cm4gSXNEaXJlY3Rv
cnkoKQotICAgICAgPyBGaWxlUGF0aChTdHJpbmcocGF0aG5hbWVfLmNfc3RyKCksIHBhdGhuYW1l
Xy5sZW5ndGgoKSAtIDEpKQorICAgICAgPyBGaWxlUGF0aChwYXRobmFtZV8uc3Vic3RyKDAsIHBh
dGhuYW1lXy5sZW5ndGgoKSAtIDEpKQogICAgICAgOiAqdGhpczsKIH0KIAogLy8gUmVtb3ZlcyBh
bnkgcmVkdW5kYW50IHNlcGFyYXRvcnMgdGhhdCBtaWdodCBiZSBpbiB0aGUgcGF0aG5hbWUuCiAv
LyBGb3IgZXhhbXBsZSwgImJhci8vL2ZvbyIgYmVjb21lcyAiYmFyL2ZvbyIuIERvZXMgbm90IGVs
aW1pbmF0ZSBvdGhlcgogLy8gcmVkdW5kYW5jaWVzIHRoYXQgbWlnaHQgYmUgaW4gYSBwYXRobmFt
ZSBpbnZvbHZpbmcgIi4iIG9yICIuLiIuCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogaGFuZGxl
IFdpbmRvd3MgbmV0d29yayBzaGFyZXMgKGUuZy4gXFxzZXJ2ZXJcc2hhcmUpLgorLy8gRklYTUU6
IGhhbmRsZSBXaW5kb3dzIG5ldHdvcmsgc2hhcmVzIChlLmcuIFxcc2VydmVyXHNoYXJlKS4KIHZv
aWQgRmlsZVBhdGg6Ok5vcm1hbGl6ZSgpIHsKICAgaWYgKHBhdGhuYW1lXy5jX3N0cigpID09IE5V
TEwpIHsKICAgICBwYXRobmFtZV8gPSAiIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaAppbmRleCAwMTQxNWY3ZDk1OWRjYTA3MDlmYWMxNzY2
MTBkYjczODhmNjA0NTU5Li40NzkwMDQxNDliNDhjMjg1NjRlMjA1ZTAyMTBjNmM0MzEwNDE4YjVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtaW50ZXJuYWwt
aW5sLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWludGVybmFsLWlu
bC5oCkBAIC0yNywyNiArMjcsMTUgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
IAotLy8gVXRpbGl0eSBmdW5jdGlvbnMgYW5kIGNsYXNzZXMgdXNlZCBieSB0aGUgR29vZ2xlIEMr
KyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFu
eW9uZyBXYW4pCi0vLworLy8gVXRpbGl0eSBmdW5jdGlvbnMgYW5kIGNsYXNzZXMgdXNlZCBieSB0
aGUgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4vLwogLy8gVGhpcyBmaWxlIGNvbnRhaW5z
IHB1cmVseSBHb29nbGUgVGVzdCdzIGludGVybmFsIGltcGxlbWVudGF0aW9uLiAgUGxlYXNlCiAv
LyBETyBOT1QgI0lOQ0xVREUgSVQgSU4gQSBVU0VSIFBST0dSQU0uCiAKICNpZm5kZWYgR1RFU1Rf
U1JDX0dURVNUX0lOVEVSTkFMX0lOTF9IXwogI2RlZmluZSBHVEVTVF9TUkNfR1RFU1RfSU5URVJO
QUxfSU5MX0hfCiAKLS8vIEdURVNUX0lNUExFTUVOVEFUSU9OXyBpcyBkZWZpbmVkIHRvIDEgaWZm
IHRoZSBjdXJyZW50IHRyYW5zbGF0aW9uIHVuaXQgaXMKLS8vIHBhcnQgb2YgR29vZ2xlIFRlc3Qn
cyBpbXBsZW1lbnRhdGlvbjsgb3RoZXJ3aXNlIGl0J3MgdW5kZWZpbmVkLgotI2lmICFHVEVTVF9J
TVBMRU1FTlRBVElPTl8KLS8vIEEgdXNlciBpcyB0cnlpbmcgdG8gaW5jbHVkZSB0aGlzIGZyb20g
aGlzIGNvZGUgLSBqdXN0IHNheSBuby4KLSNlcnJvciAiZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMg
cGFydCBvZiBHb29nbGUgVGVzdCdzIGludGVybmFsIGltcGxlbWVudGF0aW9uLiIKLSNlcnJvciAi
SXQgbXVzdCBub3QgYmUgaW5jbHVkZWQgZXhjZXB0IGJ5IEdvb2dsZSBUZXN0IGl0c2VsZi4iCi0j
ZW5kaWYgIC8vIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCiAjaWZuZGVmIF9XSU4zMl9XQ0UKLSNp
bmNsdWRlIDxlcnJuby5oPgorIyBpbmNsdWRlIDxlcnJuby5oPgogI2VuZGlmICAvLyAhX1dJTjMy
X1dDRQogI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPiAgLy8gRm9yIHN0
cnRvbGwvX3N0cnRvdWw2NC9tYWxsb2MvZnJlZS4KQEAgLTU2LDE0ICs0NSwyMiBAQAogI2luY2x1
ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5h
bC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgor
CisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworIyBpbmNsdWRlIDxhcnBhL2luZXQuaD4g
IC8vIE5PTElOVAorIyBpbmNsdWRlIDxuZXRkYi5oPiAgLy8gTk9MSU5UCisjZW5kaWYKIAogI2lm
IEdURVNUX09TX1dJTkRPV1MKLSNpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBGb3IgRFdPUkQuCisj
IGluY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5E
T1dTCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3Qtc3BpLmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC1zcGkuaCIKKworR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDI1MSBc
CisvKiBjbGFzcyBBIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2VkIGJ5IGNs
aWVudHMgb2YgY2xhc3MgQiAqLykKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC04OSwxMSAr
ODYsMTQgQEAgY29uc3QgY2hhciBrRmlsdGVyRmxhZ1tdID0gImZpbHRlciI7CiBjb25zdCBjaGFy
IGtMaXN0VGVzdHNGbGFnW10gPSAibGlzdF90ZXN0cyI7CiBjb25zdCBjaGFyIGtPdXRwdXRGbGFn
W10gPSAib3V0cHV0IjsKIGNvbnN0IGNoYXIga1ByaW50VGltZUZsYWdbXSA9ICJwcmludF90aW1l
IjsKK2NvbnN0IGNoYXIga1ByaW50VVRGOEZsYWdbXSA9ICJwcmludF91dGY4IjsKIGNvbnN0IGNo
YXIga1JhbmRvbVNlZWRGbGFnW10gPSAicmFuZG9tX3NlZWQiOwogY29uc3QgY2hhciBrUmVwZWF0
RmxhZ1tdID0gInJlcGVhdCI7CiBjb25zdCBjaGFyIGtTaHVmZmxlRmxhZ1tdID0gInNodWZmbGUi
OwogY29uc3QgY2hhciBrU3RhY2tUcmFjZURlcHRoRmxhZ1tdID0gInN0YWNrX3RyYWNlX2RlcHRo
IjsKK2NvbnN0IGNoYXIga1N0cmVhbVJlc3VsdFRvRmxhZ1tdID0gInN0cmVhbV9yZXN1bHRfdG8i
OwogY29uc3QgY2hhciBrVGhyb3dPbkZhaWx1cmVGbGFnW10gPSAidGhyb3dfb25fZmFpbHVyZSI7
Citjb25zdCBjaGFyIGtGbGFnZmlsZUZsYWdbXSA9ICJmbGFnZmlsZSI7CiAKIC8vIEEgdmFsaWQg
cmFuZG9tIHNlZWQgbXVzdCBiZSBpbiBbMSwga01heFJhbmRvbVNlZWRdLgogY29uc3QgaW50IGtN
YXhSYW5kb21TZWVkID0gOTk5OTk7CkBAIC0xMTEsNiArMTExLDEyIEBAIEdURVNUX0FQSV8gYm9v
bCBTaG91bGRVc2VDb2xvcihib29sIHN0ZG91dF9pc190dHkpOwogLy8gRm9ybWF0cyB0aGUgZ2l2
ZW4gdGltZSBpbiBtaWxsaXNlY29uZHMgYXMgc2Vjb25kcy4KIEdURVNUX0FQSV8gc3RkOjpzdHJp
bmcgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKFRpbWVJbk1pbGxpcyBtcyk7CiAKKy8vIENv
bnZlcnRzIHRoZSBnaXZlbiB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byBhIGRhdGUgc3RyaW5nIGlu
IHRoZSBJU08gODYwMQorLy8gZm9ybWF0LCB3aXRob3V0IHRoZSB0aW1lem9uZSBpbmZvcm1hdGlv
bi4gIE4uQi46IGR1ZSB0byB0aGUgdXNlIHRoZQorLy8gbm9uLXJlZW50cmFudCBsb2NhbHRpbWUo
KSBmdW5jdGlvbiwgdGhpcyBmdW5jdGlvbiBpcyBub3QgdGhyZWFkIHNhZmUuICBEbworLy8gbm90
IHVzZSBpdCBpbiBhbnkgY29kZSB0aGF0IGNhbiBiZSBjYWxsZWQgZnJvbSBtdWx0aXBsZSB0aHJl
YWRzLgorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNv
ODYwMShUaW1lSW5NaWxsaXMgbXMpOworCiAvLyBQYXJzZXMgYSBzdHJpbmcgZm9yIGFuIEludDMy
IGZsYWcsIGluIHRoZSBmb3JtIG9mICItLWZsYWc9dmFsdWUiLgogLy8KIC8vIE9uIHN1Y2Nlc3Ms
IHN0b3JlcyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcgaW4gKnZhbHVlLCBhbmQgcmV0dXJucwpAQCAt
MTYxLDEwICsxNjcsMTIgQEAgY2xhc3MgR1Rlc3RGbGFnU2F2ZXIgewogICAgIGxpc3RfdGVzdHNf
ID0gR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKTsKICAgICBvdXRwdXRfID0gR1RFU1RfRkxBRyhvdXRw
dXQpOwogICAgIHByaW50X3RpbWVfID0gR1RFU1RfRkxBRyhwcmludF90aW1lKTsKKyAgICBwcmlu
dF91dGY4XyA9IEdURVNUX0ZMQUcocHJpbnRfdXRmOCk7CiAgICAgcmFuZG9tX3NlZWRfID0gR1RF
U1RfRkxBRyhyYW5kb21fc2VlZCk7CiAgICAgcmVwZWF0XyA9IEdURVNUX0ZMQUcocmVwZWF0KTsK
ICAgICBzaHVmZmxlXyA9IEdURVNUX0ZMQUcoc2h1ZmZsZSk7CiAgICAgc3RhY2tfdHJhY2VfZGVw
dGhfID0gR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCk7CisgICAgc3RyZWFtX3Jlc3VsdF90
b18gPSBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pOwogICAgIHRocm93X29uX2ZhaWx1cmVf
ID0gR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKICAgfQogCkBAIC0xODEsNDEgKzE4OSw0
NCBAQCBjbGFzcyBHVGVzdEZsYWdTYXZlciB7CiAgICAgR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSA9
IGxpc3RfdGVzdHNfOwogICAgIEdURVNUX0ZMQUcob3V0cHV0KSA9IG91dHB1dF87CiAgICAgR1RF
U1RfRkxBRyhwcmludF90aW1lKSA9IHByaW50X3RpbWVfOworICAgIEdURVNUX0ZMQUcocHJpbnRf
dXRmOCkgPSBwcmludF91dGY4XzsKICAgICBHVEVTVF9GTEFHKHJhbmRvbV9zZWVkKSA9IHJhbmRv
bV9zZWVkXzsKICAgICBHVEVTVF9GTEFHKHJlcGVhdCkgPSByZXBlYXRfOwogICAgIEdURVNUX0ZM
QUcoc2h1ZmZsZSkgPSBzaHVmZmxlXzsKICAgICBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRo
KSA9IHN0YWNrX3RyYWNlX2RlcHRoXzsKKyAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8p
ID0gc3RyZWFtX3Jlc3VsdF90b187CiAgICAgR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9
IHRocm93X29uX2ZhaWx1cmVfOwogICB9CisKICBwcml2YXRlOgogICAvLyBGaWVsZHMgZm9yIHNh
dmluZyB0aGUgb3JpZ2luYWwgdmFsdWVzIG9mIGZsYWdzLgogICBib29sIGFsc29fcnVuX2Rpc2Fi
bGVkX3Rlc3RzXzsKICAgYm9vbCBicmVha19vbl9mYWlsdXJlXzsKICAgYm9vbCBjYXRjaF9leGNl
cHRpb25zXzsKLSAgU3RyaW5nIGNvbG9yXzsKLSAgU3RyaW5nIGRlYXRoX3Rlc3Rfc3R5bGVfOwor
ICBzdGQ6OnN0cmluZyBjb2xvcl87CisgIHN0ZDo6c3RyaW5nIGRlYXRoX3Rlc3Rfc3R5bGVfOwog
ICBib29sIGRlYXRoX3Rlc3RfdXNlX2ZvcmtfOwotICBTdHJpbmcgZmlsdGVyXzsKLSAgU3RyaW5n
IGludGVybmFsX3J1bl9kZWF0aF90ZXN0XzsKKyAgc3RkOjpzdHJpbmcgZmlsdGVyXzsKKyAgc3Rk
OjpzdHJpbmcgaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfOwogICBib29sIGxpc3RfdGVzdHNfOwot
ICBTdHJpbmcgb3V0cHV0XzsKKyAgc3RkOjpzdHJpbmcgb3V0cHV0XzsKICAgYm9vbCBwcmludF90
aW1lXzsKKyAgYm9vbCBwcmludF91dGY4XzsKICAgaW50ZXJuYWw6OkludDMyIHJhbmRvbV9zZWVk
XzsKICAgaW50ZXJuYWw6OkludDMyIHJlcGVhdF87CiAgIGJvb2wgc2h1ZmZsZV87CiAgIGludGVy
bmFsOjpJbnQzMiBzdGFja190cmFjZV9kZXB0aF87CisgIHN0ZDo6c3RyaW5nIHN0cmVhbV9yZXN1
bHRfdG9fOwogICBib29sIHRocm93X29uX2ZhaWx1cmVfOwogfSBHVEVTVF9BVFRSSUJVVEVfVU5V
U0VEXzsKIAogLy8gQ29udmVydHMgYSBVbmljb2RlIGNvZGUgcG9pbnQgdG8gYSBuYXJyb3cgc3Ry
aW5nIGluIFVURi04IGVuY29kaW5nLgogLy8gY29kZV9wb2ludCBwYXJhbWV0ZXIgaXMgb2YgdHlw
ZSBVSW50MzIgYmVjYXVzZSB3Y2hhcl90IG1heSBub3QgYmUKIC8vIHdpZGUgZW5vdWdoIHRvIGNv
bnRhaW4gYSBjb2RlIHBvaW50LgotLy8gVGhlIG91dHB1dCBidWZmZXIgc3RyIG11c3QgY29udGFp
bnQgYXQgbGVhc3QgMzIgY2hhcmFjdGVycy4KLS8vIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBh
ZGRyZXNzIG9mIHRoZSBvdXRwdXQgYnVmZmVyLgogLy8gSWYgdGhlIGNvZGVfcG9pbnQgaXMgbm90
IGEgdmFsaWQgVW5pY29kZSBjb2RlIHBvaW50Ci0vLyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNvZGUg
cmFuZ2UgVSswIHRvIFUrMTBGRkZGKSBpdCB3aWxsIGJlIG91dHB1dAotLy8gYXMgJyhJbnZhbGlk
IFVuaWNvZGUgMHhYWFhYWFhYWCknLgotR1RFU1RfQVBJXyBjaGFyKiBDb2RlUG9pbnRUb1V0Zjgo
VUludDMyIGNvZGVfcG9pbnQsIGNoYXIqIHN0cik7CisvLyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNv
ZGUgcmFuZ2UgVSswIHRvIFUrMTBGRkZGKSBpdCB3aWxsIGJlIGNvbnZlcnRlZAorLy8gdG8gIihJ
bnZhbGlkIFVuaWNvZGUgMHhYWFhYWFhYWCkiLgorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBDb2Rl
UG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQpOwogCiAvLyBDb252ZXJ0cyBhIHdpZGUgc3Ry
aW5nIHRvIGEgbmFycm93IHN0cmluZyBpbiBVVEYtOCBlbmNvZGluZy4KIC8vIFRoZSB3aWRlIHN0
cmluZyBpcyBhc3N1bWVkIHRvIGhhdmUgdGhlIGZvbGxvd2luZyBlbmNvZGluZzoKQEAgLTIzMCw3
ICsyNDEsNyBAQCBHVEVTVF9BUElfIGNoYXIqIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9w
b2ludCwgY2hhciogc3RyKTsKIC8vIGFzICcoSW52YWxpZCBVbmljb2RlIDB4WFhYWFhYWFgpJy4g
SWYgdGhlIHN0cmluZyBpcyBpbiBVVEYxNiBlbmNvZGluZwogLy8gYW5kIGNvbnRhaW5zIGludmFs
aWQgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycywgdmFsdWVzIGluIHRob3NlIHBhaXJzCiAvLyB3aWxs
IGJlIGVuY29kZWQgYXMgaW5kaXZpZHVhbCBVbmljb2RlIGNoYXJhY3RlcnMgZnJvbSBCYXNpYyBO
b3JtYWwgUGxhbmUuCi1HVEVTVF9BUElfIFN0cmluZyBXaWRlU3RyaW5nVG9VdGY4KGNvbnN0IHdj
aGFyX3QqIHN0ciwgaW50IG51bV9jaGFycyk7CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFdpZGVT
dHJpbmdUb1V0ZjgoY29uc3Qgd2NoYXJfdCogc3RyLCBpbnQgbnVtX2NoYXJzKTsKIAogLy8gUmVh
ZHMgdGhlIEdURVNUX1NIQVJEX1NUQVRVU19GSUxFIGVudmlyb25tZW50IHZhcmlhYmxlLCBhbmQg
Y3JlYXRlcyB0aGUgZmlsZQogLy8gaWYgdGhlIHZhcmlhYmxlIGlzIHByZXNlbnQuIElmIGEgZmls
ZSBhbHJlYWR5IGV4aXN0cyBhdCB0aGlzIGxvY2F0aW9uLCB0aGlzCkBAIC0yNjYsNyArMjc3LDE0
IEBAIEdURVNUX0FQSV8gYm9vbCBTaG91bGRSdW5UZXN0T25TaGFyZCgKIC8vIHRoZSBnaXZlbiBw
cmVkaWNhdGUuCiB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyLCB0eXBlbmFtZSBQcmVkaWNhdGU+
CiBpbmxpbmUgaW50IENvdW50SWYoY29uc3QgQ29udGFpbmVyJiBjLCBQcmVkaWNhdGUgcHJlZGlj
YXRlKSB7Ci0gIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6Y291bnRfaWYoYy5iZWdpbigp
LCBjLmVuZCgpLCBwcmVkaWNhdGUpKTsKKyAgLy8gSW1wbGVtZW50ZWQgYXMgYW4gZXhwbGljaXQg
bG9vcCBzaW5jZSBzdGQ6OmNvdW50X2lmKCkgaW4gbGliQ3N0ZCBvbgorICAvLyBTb2xhcmlzIGhh
cyBhIG5vbi1zdGFuZGFyZCBzaWduYXR1cmUuCisgIGludCBjb3VudCA9IDA7CisgIGZvciAodHlw
ZW5hbWUgQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBpdCA9IGMuYmVnaW4oKTsgaXQgIT0gYy5l
bmQoKTsgKytpdCkgeworICAgIGlmIChwcmVkaWNhdGUoKml0KSkKKyAgICAgICsrY291bnQ7Cisg
IH0KKyAgcmV0dXJuIGNvdW50OwogfQogCiAvLyBBcHBsaWVzIGEgZnVuY3Rpb24vZnVuY3RvciB0
byBlYWNoIGVsZW1lbnQgaW4gdGhlIGNvbnRhaW5lci4KQEAgLTMyNyw5NSArMzQ1LDE1IEBAIGNs
YXNzIFRlc3RQcm9wZXJ0eUtleUlzIHsKICAgLy8gQ29uc3RydWN0b3IuCiAgIC8vCiAgIC8vIFRl
c3RQcm9wZXJ0eUtleUlzIGhhcyBOTyBkZWZhdWx0IGNvbnN0cnVjdG9yLgotICBleHBsaWNpdCBU
ZXN0UHJvcGVydHlLZXlJcyhjb25zdCBjaGFyKiBrZXkpCi0gICAgICA6IGtleV8oa2V5KSB7fQor
ICBleHBsaWNpdCBUZXN0UHJvcGVydHlLZXlJcyhjb25zdCBzdGQ6OnN0cmluZyYga2V5KSA6IGtl
eV8oa2V5KSB7fQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgbmFtZSBvZiB0ZXN0
IHByb3BlcnR5IG1hdGNoZXMgb24ga2V5Xy4KICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFRlc3RQ
cm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgY29uc3QgewotICAgIHJldHVybiBTdHJpbmcodGVzdF9w
cm9wZXJ0eS5rZXkoKSkuQ29tcGFyZShrZXlfKSA9PSAwOwotICB9Ci0KLSBwcml2YXRlOgotICBT
dHJpbmcga2V5XzsKLX07Ci0KLWNsYXNzIFRlc3RJbmZvSW1wbCB7Ci0gcHVibGljOgotICBUZXN0
SW5mb0ltcGwoVGVzdEluZm8qIHBhcmVudCwgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0g
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfY29t
bWVudCwKLSAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbW1lbnQsIFR5cGVJZCBmaXh0dXJl
X2NsYXNzX2lkLAotICAgICAgICAgICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFj
dG9yeSk7Ci0gIH5UZXN0SW5mb0ltcGwoKTsKLQotICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0
ZXN0IHNob3VsZCBydW4uCi0gIGJvb2wgc2hvdWxkX3J1bigpIGNvbnN0IHsgcmV0dXJuIHNob3Vs
ZF9ydW5fOyB9Ci0KLSAgLy8gU2V0cyB0aGUgc2hvdWxkX3J1biBtZW1iZXIuCi0gIHZvaWQgc2V0
X3Nob3VsZF9ydW4oYm9vbCBzaG91bGQpIHsgc2hvdWxkX3J1bl8gPSBzaG91bGQ7IH0KLQotICAv
LyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IGlzIGRpc2FibGVkLiBEaXNhYmxlZCB0ZXN0cyBh
cmUgbm90IHJ1bi4KLSAgYm9vbCBpc19kaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGlzX2Rpc2Fi
bGVkXzsgfQotCi0gIC8vIFNldHMgdGhlIGlzX2Rpc2FibGVkIG1lbWJlci4KLSAgdm9pZCBzZXRf
aXNfZGlzYWJsZWQoYm9vbCBpcykgeyBpc19kaXNhYmxlZF8gPSBpczsgfQotCi0gIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGlzIHRlc3QgbWF0Y2hlcyB0aGUgZmlsdGVyIHNwZWNpZmllZCBieSB0aGUg
dXNlci4KLSAgYm9vbCBtYXRjaGVzX2ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1hdGNoZXNfZmls
dGVyXzsgfQotCi0gIC8vIFNldHMgdGhlIG1hdGNoZXNfZmlsdGVyIG1lbWJlci4KLSAgdm9pZCBz
ZXRfbWF0Y2hlc19maWx0ZXIoYm9vbCBtYXRjaGVzKSB7IG1hdGNoZXNfZmlsdGVyXyA9IG1hdGNo
ZXM7IH0KLQotICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNhc2UgbmFtZS4KLSAgY29uc3QgY2hhciog
dGVzdF9jYXNlX25hbWUoKSBjb25zdCB7IHJldHVybiB0ZXN0X2Nhc2VfbmFtZV8uY19zdHIoKTsg
fQotCi0gIC8vIFJldHVybnMgdGhlIHRlc3QgbmFtZS4KLSAgY29uc3QgY2hhciogbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG5hbWVfLmNfc3RyKCk7IH0KLQotICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNh
c2UgY29tbWVudC4KLSAgY29uc3QgY2hhciogdGVzdF9jYXNlX2NvbW1lbnQoKSBjb25zdCB7IHJl
dHVybiB0ZXN0X2Nhc2VfY29tbWVudF8uY19zdHIoKTsgfQotCi0gIC8vIFJldHVybnMgdGhlIHRl
c3QgY29tbWVudC4KLSAgY29uc3QgY2hhciogY29tbWVudCgpIGNvbnN0IHsgcmV0dXJuIGNvbW1l
bnRfLmNfc3RyKCk7IH0KLQotICAvLyBSZXR1cm5zIHRoZSBJRCBvZiB0aGUgdGVzdCBmaXh0dXJl
IGNsYXNzLgotICBUeXBlSWQgZml4dHVyZV9jbGFzc19pZCgpIGNvbnN0IHsgcmV0dXJuIGZpeHR1
cmVfY2xhc3NfaWRfOyB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgdGVzdCByZXN1bHQuCi0gIFRlc3RS
ZXN1bHQqIHJlc3VsdCgpIHsgcmV0dXJuICZyZXN1bHRfOyB9Ci0gIGNvbnN0IFRlc3RSZXN1bHQq
IHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuICZyZXN1bHRfOyB9Ci0KLSAgLy8gQ3JlYXRlcyB0aGUg
dGVzdCBvYmplY3QsIHJ1bnMgaXQsIHJlY29yZHMgaXRzIHJlc3VsdCwgYW5kIHRoZW4KLSAgLy8g
ZGVsZXRlcyBpdC4KLSAgdm9pZCBSdW4oKTsKLQotICAvLyBDbGVhcnMgdGhlIHRlc3QgcmVzdWx0
LgotICB2b2lkIENsZWFyUmVzdWx0KCkgeyByZXN1bHRfLkNsZWFyKCk7IH0KLQotICAvLyBDbGVh
cnMgdGhlIHRlc3QgcmVzdWx0IGluIHRoZSBnaXZlbiBUZXN0SW5mbyBvYmplY3QuCi0gIHN0YXRp
YyB2b2lkIENsZWFyVGVzdFJlc3VsdChUZXN0SW5mbyAqIHRlc3RfaW5mbykgewotICAgIHRlc3Rf
aW5mby0+aW1wbCgpLT5DbGVhclJlc3VsdCgpOworICAgIHJldHVybiB0ZXN0X3Byb3BlcnR5Lmtl
eSgpID09IGtleV87CiAgIH0KIAogIHByaXZhdGU6Ci0gIC8vIFRoZXNlIGZpZWxkcyBhcmUgaW1t
dXRhYmxlIHByb3BlcnRpZXMgb2YgdGhlIHRlc3QuCi0gIFRlc3RJbmZvKiBjb25zdCBwYXJlbnRf
OyAgICAgICAgICAvLyBUaGUgb3duZXIgb2YgdGhpcyBvYmplY3QKLSAgY29uc3QgU3RyaW5nIHRl
c3RfY2FzZV9uYW1lXzsgICAgIC8vIFRlc3QgY2FzZSBuYW1lCi0gIGNvbnN0IFN0cmluZyBuYW1l
XzsgICAgICAgICAgICAgICAvLyBUZXN0IG5hbWUKLSAgY29uc3QgU3RyaW5nIHRlc3RfY2FzZV9j
b21tZW50XzsgIC8vIFRlc3QgY2FzZSBjb21tZW50Ci0gIGNvbnN0IFN0cmluZyBjb21tZW50Xzsg
ICAgICAgICAgICAvLyBUZXN0IGNvbW1lbnQKLSAgY29uc3QgVHlwZUlkIGZpeHR1cmVfY2xhc3Nf
aWRfOyAgIC8vIElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKLSAgYm9vbCBzaG91bGRfcnVu
XzsgICAgICAgICAgICAgICAgIC8vIFRydWUgaWZmIHRoaXMgdGVzdCBzaG91bGQgcnVuCi0gIGJv
b2wgaXNfZGlzYWJsZWRfOyAgICAgICAgICAgICAgICAvLyBUcnVlIGlmZiB0aGlzIHRlc3QgaXMg
ZGlzYWJsZWQKLSAgYm9vbCBtYXRjaGVzX2ZpbHRlcl87ICAgICAgICAgICAgIC8vIFRydWUgaWYg
dGhpcyB0ZXN0IG1hdGNoZXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyB1c2VyLXNwZWNpZmllZCBmaWx0ZXIuCi0gIGludGVybmFsOjpUZXN0RmFjdG9yeUJhc2Uq
IGNvbnN0IGZhY3RvcnlfOyAgLy8gVGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHRlc3Qgb2JqZWN0Ci0K
LSAgLy8gVGhpcyBmaWVsZCBpcyBtdXRhYmxlIGFuZCBuZWVkcyB0byBiZSByZXNldCBiZWZvcmUg
cnVubmluZyB0aGUKLSAgLy8gdGVzdCBmb3IgdGhlIHNlY29uZCB0aW1lLgotICBUZXN0UmVzdWx0
IHJlc3VsdF87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0SW5mb0lt
cGwpOworICBzdGQ6OnN0cmluZyBrZXlfOwogfTsKIAogLy8gQ2xhc3MgVW5pdFRlc3RPcHRpb25z
LgpAQCAtNDMzLDEyICszNzEsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdE9wdGlvbnMg
ewogICAvLyBGdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgdGhlIGd0ZXN0X291dHB1dCBmbGFnLgog
CiAgIC8vIFJldHVybnMgdGhlIG91dHB1dCBmb3JtYXQsIG9yICIiIGZvciBub3JtYWwgcHJpbnRl
ZCBvdXRwdXQuCi0gIHN0YXRpYyBTdHJpbmcgR2V0T3V0cHV0Rm9ybWF0KCk7CisgIHN0YXRpYyBz
dGQ6OnN0cmluZyBHZXRPdXRwdXRGb3JtYXQoKTsKIAogICAvLyBSZXR1cm5zIHRoZSBhYnNvbHV0
ZSBwYXRoIG9mIHRoZSByZXF1ZXN0ZWQgb3V0cHV0IGZpbGUsIG9yIHRoZQogICAvLyBkZWZhdWx0
ICh0ZXN0X2RldGFpbC54bWwgaW4gdGhlIG9yaWdpbmFsIHdvcmtpbmcgZGlyZWN0b3J5KSBpZgog
ICAvLyBub25lIHdhcyBleHBsaWNpdGx5IHNwZWNpZmllZC4KLSAgc3RhdGljIFN0cmluZyBHZXRB
YnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKTsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldEFic29s
dXRlUGF0aFRvT3V0cHV0RmlsZSgpOwogCiAgIC8vIEZ1bmN0aW9ucyBmb3IgcHJvY2Vzc2luZyB0
aGUgZ3Rlc3RfZmlsdGVyIGZsYWcuCiAKQEAgLTQ1MSw4ICszODksOCBAQCBjbGFzcyBHVEVTVF9B
UElfIFVuaXRUZXN0T3B0aW9ucyB7CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdXNlci1z
cGVjaWZpZWQgZmlsdGVyIG1hdGNoZXMgdGhlIHRlc3QgY2FzZQogICAvLyBuYW1lIGFuZCB0aGUg
dGVzdCBuYW1lLgotICBzdGF0aWMgYm9vbCBGaWx0ZXJNYXRjaGVzVGVzdChjb25zdCBTdHJpbmcg
JnRlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBT
dHJpbmcgJnRlc3RfbmFtZSk7CisgIHN0YXRpYyBib29sIEZpbHRlck1hdGNoZXNUZXN0KGNvbnN0
IHN0ZDo6c3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnRlc3RfbmFtZSk7CiAKICNpZiBHVEVTVF9PU19XSU5E
T1dTCiAgIC8vIEZ1bmN0aW9uIGZvciBzdXBwb3J0aW5nIHRoZSBndGVzdF9jYXRjaF9leGNlcHRp
b24gZmxhZy4KQEAgLTQ2NSw3ICs0MDMsNyBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0T3B0
aW9ucyB7CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmICJuYW1lIiBtYXRjaGVzIHRoZSAnOicgc2Vw
YXJhdGVkIGxpc3Qgb2YgZ2xvYi1zdHlsZQogICAvLyBmaWx0ZXJzIGluICJmaWx0ZXIiLgotICBz
dGF0aWMgYm9vbCBNYXRjaGVzRmlsdGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgY2hhciog
ZmlsdGVyKTsKKyAgc3RhdGljIGJvb2wgTWF0Y2hlc0ZpbHRlcihjb25zdCBzdGQ6OnN0cmluZyYg
bmFtZSwgY29uc3QgY2hhciogZmlsdGVyKTsKIH07CiAKIC8vIFJldHVybnMgdGhlIGN1cnJlbnQg
YXBwbGljYXRpb24ncyBuYW1lLCByZW1vdmluZyBkaXJlY3RvcnkgcGF0aCBpZiB0aGF0CkBAIC00
NzgsMTkgKzQxNiwyMyBAQCBjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UgewogICBP
c1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UoKSB7fQogICB2aXJ0dWFsIH5Pc1N0YWNrVHJhY2VH
ZXR0ZXJJbnRlcmZhY2UoKSB7fQogCi0gIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sg
dHJhY2UgYXMgYSBTdHJpbmcuICBQYXJhbWV0ZXJzOgorICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50
IE9TIHN0YWNrIHRyYWNlIGFzIGFuIHN0ZDo6c3RyaW5nLiAgUGFyYW1ldGVyczoKICAgLy8KICAg
Ly8gICBtYXhfZGVwdGggIC0gdGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBi
ZSBpbmNsdWRlZAogICAvLyAgICAgICAgICAgICAgICBpbiB0aGUgdHJhY2UuCiAgIC8vICAgc2tp
cF9jb3VudCAtIHRoZSBudW1iZXIgb2YgdG9wIGZyYW1lcyB0byBiZSBza2lwcGVkOyBkb2Vzbid0
IGNvdW50CiAgIC8vICAgICAgICAgICAgICAgIGFnYWluc3QgbWF4X2RlcHRoLgotICB2aXJ0dWFs
IFN0cmluZyBDdXJyZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCkg
PSAwOworICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIEN1cnJlbnRTdGFja1RyYWNlKGludCBtYXhfZGVw
dGgsIGludCBza2lwX2NvdW50KSA9IDA7CiAKICAgLy8gVXBvbkxlYXZpbmdHVGVzdCgpIHNob3Vs
ZCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIEdvb2dsZSBUZXN0IGNhbGxzCiAgIC8vIHVz
ZXIgY29kZS4gSXQgc2F2ZXMgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBzdGFj
ayB0aGF0CiAgIC8vIEN1cnJlbnRTdGFja1RyYWNlKCkgd2lsbCB1c2UgdG8gZmluZCBhbmQgaGlk
ZSBHb29nbGUgVGVzdCBzdGFjayBmcmFtZXMuCiAgIHZpcnR1YWwgdm9pZCBVcG9uTGVhdmluZ0dU
ZXN0KCkgPSAwOwogCisgIC8vIFRoaXMgc3RyaW5nIGlzIGluc2VydGVkIGluIHBsYWNlIG9mIHN0
YWNrIGZyYW1lcyB0aGF0IGFyZSBwYXJ0IG9mCisgIC8vIEdvb2dsZSBUZXN0J3MgaW1wbGVtZW50
YXRpb24uCisgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBrRWxpZGVkRnJhbWVzTWFya2VyOwor
CiAgcHJpdmF0ZToKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhPc1N0YWNrVHJh
Y2VHZXR0ZXJJbnRlcmZhY2UpOwogfTsKQEAgLTQ5OCwyMiArNDQwLDIxIEBAIGNsYXNzIE9zU3Rh
Y2tUcmFjZUdldHRlckludGVyZmFjZSB7CiAvLyBBIHdvcmtpbmcgaW1wbGVtZW50YXRpb24gb2Yg
dGhlIE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSBpbnRlcmZhY2UuCiBjbGFzcyBPc1N0YWNr
VHJhY2VHZXR0ZXIgOiBwdWJsaWMgT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlIHsKICBwdWJs
aWM6Ci0gIE9zU3RhY2tUcmFjZUdldHRlcigpIDogY2FsbGVyX2ZyYW1lXyhOVUxMKSB7fQotICB2
aXJ0dWFsIFN0cmluZyBDdXJyZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9j
b3VudCk7Ci0gIHZpcnR1YWwgdm9pZCBVcG9uTGVhdmluZ0dUZXN0KCk7CisgIE9zU3RhY2tUcmFj
ZUdldHRlcigpIHt9CiAKLSAgLy8gVGhpcyBzdHJpbmcgaXMgaW5zZXJ0ZWQgaW4gcGxhY2Ugb2Yg
c3RhY2sgZnJhbWVzIHRoYXQgYXJlIHBhcnQgb2YKLSAgLy8gR29vZ2xlIFRlc3QncyBpbXBsZW1l
bnRhdGlvbi4KLSAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGtFbGlkZWRGcmFtZXNNYXJrZXI7
CisgIHZpcnR1YWwgc3RkOjpzdHJpbmcgQ3VycmVudFN0YWNrVHJhY2UoaW50IG1heF9kZXB0aCwg
aW50IHNraXBfY291bnQpOworICB2aXJ0dWFsIHZvaWQgVXBvbkxlYXZpbmdHVGVzdCgpOwogCiAg
cHJpdmF0ZToKLSAgTXV0ZXggbXV0ZXhfOyAgLy8gcHJvdGVjdHMgYWxsIGludGVybmFsIHN0YXRl
CisjaWYgR1RFU1RfSEFTX0FCU0wKKyAgTXV0ZXggbXV0ZXhfOyAgLy8gUHJvdGVjdHMgYWxsIGlu
dGVybmFsIHN0YXRlLgogCiAgIC8vIFdlIHNhdmUgdGhlIHN0YWNrIGZyYW1lIGJlbG93IHRoZSBm
cmFtZSB0aGF0IGNhbGxzIHVzZXIgY29kZS4KICAgLy8gV2UgZG8gdGhpcyBiZWNhdXNlIHRoZSBh
ZGRyZXNzIG9mIHRoZSBmcmFtZSBpbW1lZGlhdGVseSBiZWxvdwogICAvLyB0aGUgdXNlciBjb2Rl
IGNoYW5nZXMgYmV0d2VlbiB0aGUgY2FsbCB0byBVcG9uTGVhdmluZ0dUZXN0KCkKLSAgLy8gYW5k
IGFueSBjYWxscyB0byBDdXJyZW50U3RhY2tUcmFjZSgpIGZyb20gd2l0aGluIHRoZSB1c2VyIGNv
ZGUuCi0gIHZvaWQqIGNhbGxlcl9mcmFtZV87CisgIC8vIGFuZCBhbnkgY2FsbHMgdG8gdGhlIHN0
YWNrIHRyYWNlIGNvZGUgZnJvbSB3aXRoaW4gdGhlIHVzZXIgY29kZS4KKyAgdm9pZCogY2FsbGVy
X2ZyYW1lXyA9IG51bGxwdHI7CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCiAKICAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhPc1N0YWNrVHJhY2VHZXR0ZXIpOwogfTsKQEAgLTUy
Miw3ICs0NjMsNyBAQCBjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXIgOiBwdWJsaWMgT3NTdGFja1Ry
YWNlR2V0dGVySW50ZXJmYWNlIHsKIHN0cnVjdCBUcmFjZUluZm8gewogICBjb25zdCBjaGFyKiBm
aWxlOwogICBpbnQgbGluZTsKLSAgU3RyaW5nIG1lc3NhZ2U7CisgIHN0ZDo6c3RyaW5nIG1lc3Nh
Z2U7CiB9OwogCiAvLyBUaGlzIGlzIHRoZSBkZWZhdWx0IGdsb2JhbCB0ZXN0IHBhcnQgcmVzdWx0
IHJlcG9ydGVyIHVzZWQgaW4gVW5pdFRlc3RJbXBsLgpAQCAtNjA2LDE1ICs1NDcsMjUgQEAgY2xh
c3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZmFp
bGVkIHRlc3RzLgogICBpbnQgZmFpbGVkX3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAvLyBHZXRz
IHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRo
ZSBYTUwgcmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkgY29u
c3Q7CisKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzLgogICBpbnQgZGlz
YWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0OwogCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0
cyB0byBiZSBwcmludGVkIGluIHRoZSBYTUwgcmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV90ZXN0
X2NvdW50KCkgY29uc3Q7CisKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0cy4KICAg
aW50IHRvdGFsX3Rlc3RfY291bnQoKSBjb25zdDsKIAogICAvLyBHZXRzIHRoZSBudW1iZXIgb2Yg
dGVzdHMgdGhhdCBzaG91bGQgcnVuLgogICBpbnQgdGVzdF90b19ydW5fY291bnQoKSBjb25zdDsK
IAorICAvLyBHZXRzIHRoZSB0aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0gc3RhcnQsIGluIG1zIGZy
b20gdGhlIHN0YXJ0IG9mIHRoZQorICAvLyBVTklYIGVwb2NoLgorICBUaW1lSW5NaWxsaXMgc3Rh
cnRfdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gc3RhcnRfdGltZXN0YW1wXzsgfQorCiAgIC8v
IEdldHMgdGhlIGVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5NaWxsaXMg
ZWxhcHNlZF90aW1lKCkgY29uc3QgeyByZXR1cm4gZWxhcHNlZF90aW1lXzsgfQogCkBAIC02NjMs
NyArNjE0LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBnZXR0ZXIs
IGFuZCByZXR1cm5zIGl0LgogICBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UqIG9zX3N0YWNr
X3RyYWNlX2dldHRlcigpOwogCi0gIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJh
Y2UgYXMgYSBTdHJpbmcuCisgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2Ug
YXMgYW4gc3RkOjpzdHJpbmcuCiAgIC8vCiAgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFj
ayBmcmFtZXMgdG8gYmUgaW5jbHVkZWQgaXMgc3BlY2lmaWVkIGJ5CiAgIC8vIHRoZSBndGVzdF9z
dGFja190cmFjZV9kZXB0aCBmbGFnLiAgVGhlIHNraXBfY291bnQgcGFyYW1ldGVyCkBAIC02NzMs
NyArNjI0LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBGb3IgZXhh
bXBsZSwgaWYgRm9vKCkgY2FsbHMgQmFyKCksIHdoaWNoIGluIHR1cm4gY2FsbHMKICAgLy8gQ3Vy
cmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgxKSwgRm9vKCkgd2lsbCBiZSBpbmNsdWRlZCBpbiB0
aGUKICAgLy8gdHJhY2UgYnV0IEJhcigpIGFuZCBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9w
KCkgd29uJ3QuCi0gIFN0cmluZyBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKGludCBza2lw
X2NvdW50KTsKKyAgc3RkOjpzdHJpbmcgQ3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcChpbnQg
c2tpcF9jb3VudCkgR1RFU1RfTk9fSU5MSU5FXzsKIAogICAvLyBGaW5kcyBhbmQgcmV0dXJucyBh
IFRlc3RDYXNlIHdpdGggdGhlIGdpdmVuIG5hbWUuICBJZiBvbmUgZG9lc24ndAogICAvLyBleGlz
dCwgY3JlYXRlcyBvbmUgYW5kIHJldHVybnMgaXQuCkBAIC02ODEsMTAgKzYzMiwxMiBAQCBjbGFz
cyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vIEFyZ3VtZW50czoKICAgLy8KICAgLy8g
ICB0ZXN0X2Nhc2VfbmFtZTogbmFtZSBvZiB0aGUgdGVzdCBjYXNlCisgIC8vICAgdHlwZV9wYXJh
bTogICAgIHRoZSBuYW1lIG9mIHRoZSB0ZXN0J3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYK
KyAgLy8gICAgICAgICAgICAgICAgICAgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhIHR5cGUtcGFy
YW1ldGVyaXplZCB0ZXN0LgogICAvLyAgIHNldF91cF90YzogICAgICBwb2ludGVyIHRvIHRoZSBm
dW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIHRlc3QgY2FzZQogICAvLyAgIHRlYXJfZG93bl90Yzog
ICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQog
ICBUZXN0Q2FzZSogR2V0VGVzdENhc2UoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb21tZW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogdHlwZV9wYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAg
IFRlc3Q6OlNldFVwVGVzdENhc2VGdW5jIHNldF91cF90YywKICAgICAgICAgICAgICAgICAgICAg
ICAgIFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90Yyk7CiAKQEAgLTY5Nyw3
ICs2NTAsNyBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vICAgdGVzdF9p
bmZvOiAgICB0aGUgVGVzdEluZm8gb2JqZWN0CiAgIHZvaWQgQWRkVGVzdEluZm8oVGVzdDo6U2V0
VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAgICAgICAgICAgICAgICAgIFRlc3Q6OlRlYXJE
b3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YywKLSAgICAgICAgICAgICAgICAgICBUZXN0SW5m
byAqIHRlc3RfaW5mbykgeworICAgICAgICAgICAgICAgICAgIFRlc3RJbmZvKiB0ZXN0X2luZm8p
IHsKICAgICAvLyBJbiBvcmRlciB0byBzdXBwb3J0IHRocmVhZC1zYWZlIGRlYXRoIHRlc3RzLCB3
ZSBuZWVkIHRvCiAgICAgLy8gcmVtZW1iZXIgdGhlIG9yaWdpbmFsIHdvcmtpbmcgZGlyZWN0b3J5
IHdoZW4gdGhlIHRlc3QgcHJvZ3JhbQogICAgIC8vIHdhcyBmaXJzdCBpbnZva2VkLiAgV2UgY2Fu
bm90IGRvIHRoaXMgaW4gUlVOX0FMTF9URVNUUygpLCBhcwpAQCAtNzEyLDE4ICs2NjUsMTYgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAgIH0KIAogICAgIEdldFRlc3RDYXNl
KHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSwKLSAgICAgICAgICAgICAgICB0ZXN0X2luZm8t
PnRlc3RfY2FzZV9jb21tZW50KCksCisgICAgICAgICAgICAgICAgdGVzdF9pbmZvLT50eXBlX3Bh
cmFtKCksCiAgICAgICAgICAgICAgICAgc2V0X3VwX3RjLAogICAgICAgICAgICAgICAgIHRlYXJf
ZG93bl90YyktPkFkZFRlc3RJbmZvKHRlc3RfaW5mbyk7CiAgIH0KIAotI2lmIEdURVNUX0hBU19Q
QVJBTV9URVNUCiAgIC8vIFJldHVybnMgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgb2Jq
ZWN0IHVzZWQgdG8ga2VlcCB0cmFjayBvZgogICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3Rz
IGFuZCBpbnN0YW50aWF0ZSBhbmQgcmVnaXN0ZXIgdGhlbS4KICAgaW50ZXJuYWw6OlBhcmFtZXRl
cml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5JiBwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKSB7CiAg
ICAgcmV0dXJuIHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeV87CiAgIH0KLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1BBUkFNX1RFU1QKIAogICAvLyBTZXRzIHRoZSBUZXN0Q2FzZSBvYmplY3QgZm9y
IHRoZSB0ZXN0IHRoYXQncyBjdXJyZW50bHkgcnVubmluZy4KICAgdm9pZCBzZXRfY3VycmVudF90
ZXN0X2Nhc2UoVGVzdENhc2UqIGFfY3VycmVudF90ZXN0X2Nhc2UpIHsKQEAgLTczOCwyNyArNjg5
LDM1IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgfQogCiAgIC8vIFJlZ2lz
dGVycyBhbGwgcGFyYW1ldGVyaXplZCB0ZXN0cyBkZWZpbmVkIHVzaW5nIFRFU1RfUCBhbmQKLSAg
Ly8gSU5TVEFOVElBVEVfVEVTVF9QLCBjcmVhdGluZyByZWd1bGFyIHRlc3RzIGZvciBlYWNoIHRl
c3QvcGFyYW1ldGVyCi0gIC8vIGNvbWJpbmF0aW9uLiBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVk
IG1vcmUgdGhlbiBvbmNlOyBpdCBoYXMKLSAgLy8gZ3VhcmRzIHByb3RlY3RpbmcgZnJvbSByZWdp
c3RlcmluZyB0aGUgdGVzdHMgbW9yZSB0aGVuIG9uY2UuCi0gIC8vIElmIHZhbHVlLXBhcmFtZXRl
cml6ZWQgdGVzdHMgYXJlIGRpc2FibGVkLCBSZWdpc3RlclBhcmFtZXRlcml6ZWRUZXN0cwotICAv
LyBpcyBwcmVzZW50IGJ1dCBkb2VzIG5vdGhpbmcuCisgIC8vIElOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QLCBjcmVhdGluZyByZWd1bGFyIHRlc3RzIGZvciBlYWNoIHRlc3QvcGFyYW1ldGVyCisgIC8v
IGNvbWJpbmF0aW9uLiBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIG1vcmUgdGhlbiBvbmNlOyBp
dCBoYXMgZ3VhcmRzCisgIC8vIHByb3RlY3RpbmcgZnJvbSByZWdpc3RlcmluZyB0aGUgdGVzdHMg
bW9yZSB0aGVuIG9uY2UuICBJZgorICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBk
aXNhYmxlZCwgUmVnaXN0ZXJQYXJhbWV0ZXJpemVkVGVzdHMgaXMKKyAgLy8gcHJlc2VudCBidXQg
ZG9lcyBub3RoaW5nLgogICB2b2lkIFJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzKCk7CiAKICAg
Ly8gUnVucyBhbGwgdGVzdHMgaW4gdGhpcyBVbml0VGVzdCBvYmplY3QsIHByaW50cyB0aGUgcmVz
dWx0LCBhbmQKLSAgLy8gcmV0dXJucyAwIGlmIGFsbCB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3Ig
MSBvdGhlcndpc2UuICBJZiBhbnkKLSAgLy8gZXhjZXB0aW9uIGlzIHRocm93biBkdXJpbmcgYSB0
ZXN0IG9uIFdpbmRvd3MsIHRoaXMgdGVzdCBpcwotICAvLyBjb25zaWRlcmVkIHRvIGJlIGZhaWxl
ZCwgYnV0IHRoZSByZXN0IG9mIHRoZSB0ZXN0cyB3aWxsIHN0aWxsIGJlCi0gIC8vIHJ1bi4gIChX
ZSBkaXNhYmxlIGV4Y2VwdGlvbnMgb24gTGludXggYW5kIE1hYyBPUyBYLCBzbyB0aGUgaXNzdWUK
LSAgLy8gZG9lc24ndCBhcHBseSB0aGVyZS4pCi0gIGludCBSdW5BbGxUZXN0cygpOwotCi0gIC8v
IENsZWFycyB0aGUgcmVzdWx0cyBvZiBhbGwgdGVzdHMsIGluY2x1ZGluZyB0aGUgYWQgaG9jIHRl
c3QuCi0gIHZvaWQgQ2xlYXJSZXN1bHQoKSB7CisgIC8vIHJldHVybnMgdHJ1ZSBpZiBhbGwgdGVz
dHMgYXJlIHN1Y2Nlc3NmdWwuICBJZiBhbnkgZXhjZXB0aW9uIGlzCisgIC8vIHRocm93biBkdXJp
bmcgYSB0ZXN0LCB0aGlzIHRlc3QgaXMgY29uc2lkZXJlZCB0byBiZSBmYWlsZWQsIGJ1dAorICAv
LyB0aGUgcmVzdCBvZiB0aGUgdGVzdHMgd2lsbCBzdGlsbCBiZSBydW4uCisgIGJvb2wgUnVuQWxs
VGVzdHMoKTsKKworICAvLyBDbGVhcnMgdGhlIHJlc3VsdHMgb2YgYWxsIHRlc3RzLCBleGNlcHQg
dGhlIGFkIGhvYyB0ZXN0cy4KKyAgdm9pZCBDbGVhck5vbkFkSG9jVGVzdFJlc3VsdCgpIHsKICAg
ICBGb3JFYWNoKHRlc3RfY2FzZXNfLCBUZXN0Q2FzZTo6Q2xlYXJUZXN0Q2FzZVJlc3VsdCk7Cisg
IH0KKworICAvLyBDbGVhcnMgdGhlIHJlc3VsdHMgb2YgYWQtaG9jIHRlc3QgYXNzZXJ0aW9ucy4K
KyAgdm9pZCBDbGVhckFkSG9jVGVzdFJlc3VsdCgpIHsKICAgICBhZF9ob2NfdGVzdF9yZXN1bHRf
LkNsZWFyKCk7CiAgIH0KIAorICAvLyBBZGRzIGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJyZW50
IFRlc3RSZXN1bHQgb2JqZWN0IHdoZW4gaW52b2tlZCBpbiBhCisgIC8vIGNvbnRleHQgb2YgYSB0
ZXN0IG9yIGEgdGVzdCBjYXNlLCBvciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNldC4gSWYgdGhl
CisgIC8vIHJlc3VsdCBhbHJlYWR5IGNvbnRhaW5zIGEgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBr
ZXksIHRoZSB2YWx1ZSB3aWxsIGJlCisgIC8vIHVwZGF0ZWQuCisgIHZvaWQgUmVjb3JkUHJvcGVy
dHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5KTsKKwogICBlbnVtIFJlYWN0aW9u
VG9TaGFyZGluZyB7CiAgICAgSE9OT1JfU0hBUkRJTkdfUFJPVE9DT0wsCiAgICAgSUdOT1JFX1NI
QVJESU5HX1BST1RPQ09MCkBAIC04MTcsNiArNzc2LDEyIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5p
dFRlc3RJbXBsIHsKICAgLy8gVW5pdFRlc3RPcHRpb25zLiBNdXN0IG5vdCBiZSBjYWxsZWQgYmVm
b3JlIEluaXRHb29nbGVUZXN0LgogICB2b2lkIENvbmZpZ3VyZVhtbE91dHB1dCgpOwogCisjaWYg
R1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworICAvLyBJbml0aWFsaXplcyB0aGUgZXZlbnQgbGlz
dGVuZXIgZm9yIHN0cmVhbWluZyB0ZXN0IHJlc3VsdHMgdG8gYSBzb2NrZXQuCisgIC8vIE11c3Qg
bm90IGJlIGNhbGxlZCBiZWZvcmUgSW5pdEdvb2dsZVRlc3QuCisgIHZvaWQgQ29uZmlndXJlU3Ry
ZWFtaW5nT3V0cHV0KCk7CisjZW5kaWYKKwogICAvLyBQZXJmb3JtcyBpbml0aWFsaXphdGlvbiBk
ZXBlbmRlbnQgdXBvbiBmbGFnIHZhbHVlcyBvYnRhaW5lZCBpbgogICAvLyBQYXJzZUdvb2dsZVRl
c3RGbGFnc09ubHkuICBJcyBjYWxsZWQgZnJvbSBJbml0R29vZ2xlVGVzdCBhZnRlciB0aGUgY2Fs
bCB0bwogICAvLyBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkuICBJbiBjYXNlIGEgdXNlciBuZWds
ZWN0cyB0byBjYWxsIEluaXRHb29nbGVUZXN0CkBAIC04MzcsOSArODAyLDE3IEBAIGNsYXNzIEdU
RVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gUmVzdG9yZXMgdGhlIHRlc3QgY2FzZXMgYW5k
IHRlc3RzIHRvIHRoZWlyIG9yZGVyIGJlZm9yZSB0aGUgZmlyc3Qgc2h1ZmZsZS4KICAgdm9pZCBV
bnNodWZmbGVUZXN0cygpOwogCisgIC8vIFJldHVybnMgdGhlIHZhbHVlIG9mIEdURVNUX0ZMQUco
Y2F0Y2hfZXhjZXB0aW9ucykgYXQgdGhlIG1vbWVudAorICAvLyBVbml0VGVzdDo6UnVuKCkgc3Rh
cnRzLgorICBib29sIGNhdGNoX2V4Y2VwdGlvbnMoKSBjb25zdCB7IHJldHVybiBjYXRjaF9leGNl
cHRpb25zXzsgfQorCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNsYXNzIDo6dGVzdGluZzo6VW5pdFRl
c3Q7CiAKKyAgLy8gVXNlZCBieSBVbml0VGVzdDo6UnVuKCkgdG8gY2FwdHVyZSB0aGUgc3RhdGUg
b2YKKyAgLy8gR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSBhdCB0aGUgbW9tZW50IGl0IHN0
YXJ0cy4KKyAgdm9pZCBzZXRfY2F0Y2hfZXhjZXB0aW9ucyhib29sIHZhbHVlKSB7IGNhdGNoX2V4
Y2VwdGlvbnNfID0gdmFsdWU7IH0KKwogICAvLyBUaGUgVW5pdFRlc3Qgb2JqZWN0IHRoYXQgb3du
cyB0aGlzIGltcGxlbWVudGF0aW9uIG9iamVjdC4KICAgVW5pdFRlc3QqIGNvbnN0IHBhcmVudF87
CiAKQEAgLTg3NiwxNCArODQ5LDEyIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsK
ICAgLy8gc2h1ZmZsZWQgb3JkZXIuCiAgIHN0ZDo6dmVjdG9yPGludD4gdGVzdF9jYXNlX2luZGlj
ZXNfOwogCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgLy8gUGFyYW1ldGVyaXplZFRlc3RS
ZWdpc3RyeSBvYmplY3QgdXNlZCB0byByZWdpc3RlciB2YWx1ZS1wYXJhbWV0ZXJpemVkCiAgIC8v
IHRlc3RzLgogICBpbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgcGFyYW1l
dGVyaXplZF90ZXN0X3JlZ2lzdHJ5XzsKIAogICAvLyBJbmRpY2F0ZXMgd2hldGhlciBSZWdpc3Rl
clBhcmFtZXRlcml6ZWRUZXN0cygpIGhhcyBiZWVuIGNhbGxlZCBhbHJlYWR5LgogICBib29sIHBh
cmFtZXRlcml6ZWRfdGVzdHNfcmVnaXN0ZXJlZF87Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJB
TV9URVNUCiAKICAgLy8gSW5kZXggb2YgdGhlIGxhc3QgZGVhdGggdGVzdCBjYXNlIHJlZ2lzdGVy
ZWQuICBJbml0aWFsbHkgLTEuCiAgIGludCBsYXN0X2RlYXRoX3Rlc3RfY2FzZV87CkBAIC05Mjks
NiArOTAwLDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gT3VyIHJh
bmRvbSBudW1iZXIgZ2VuZXJhdG9yLgogICBpbnRlcm5hbDo6UmFuZG9tIHJhbmRvbV87CiAKKyAg
Ly8gVGhlIHRpbWUgb2YgdGhlIHRlc3QgcHJvZ3JhbSBzdGFydCwgaW4gbXMgZnJvbSB0aGUgc3Rh
cnQgb2YgdGhlCisgIC8vIFVOSVggZXBvY2guCisgIFRpbWVJbk1pbGxpcyBzdGFydF90aW1lc3Rh
bXBfOworCiAgIC8vIEhvdyBsb25nIHRoZSB0ZXN0IHRvb2sgdG8gcnVuLCBpbiBtaWxsaXNlY29u
ZHMuCiAgIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3RpbWVfOwogCkBAIC05NDIsNiArOTE3LDEwIEBA
IGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gQSBwZXItdGhyZWFkIHN0YWNr
IG9mIHRyYWNlcyBjcmVhdGVkIGJ5IHRoZSBTQ09QRURfVFJBQ0UoKSBtYWNyby4KICAgaW50ZXJu
YWw6OlRocmVhZExvY2FsPHN0ZDo6dmVjdG9yPFRyYWNlSW5mbz4gPiBndGVzdF90cmFjZV9zdGFj
a187CiAKKyAgLy8gVGhlIHZhbHVlIG9mIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgYXQg
dGhlIG1vbWVudCBSdW5BbGxUZXN0cygpCisgIC8vIHN0YXJ0cy4KKyAgYm9vbCBjYXRjaF9leGNl
cHRpb25zXzsKKwogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFVuaXRUZXN0SW1w
bCk7CiB9OyAgLy8gY2xhc3MgVW5pdFRlc3RJbXBsCiAKQEAgLTk1MSwxNCArOTMwLDE2IEBAIGlu
bGluZSBVbml0VGVzdEltcGwqIEdldFVuaXRUZXN0SW1wbCgpIHsKICAgcmV0dXJuIFVuaXRUZXN0
OjpHZXRJbnN0YW5jZSgpLT5pbXBsKCk7CiB9CiAKKyNpZiBHVEVTVF9VU0VTX1NJTVBMRV9SRQor
CiAvLyBJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zIGZvciBpbXBsZW1lbnRpbmcgdGhlIHNpbXBs
ZSByZWd1bGFyCiAvLyBleHByZXNzaW9uIG1hdGNoZXIuCiBHVEVTVF9BUElfIGJvb2wgSXNJblNl
dChjaGFyIGNoLCBjb25zdCBjaGFyKiBzdHIpOwotR1RFU1RfQVBJXyBib29sIElzRGlnaXQoY2hh
ciBjaCk7Ci1HVEVTVF9BUElfIGJvb2wgSXNQdW5jdChjaGFyIGNoKTsKK0dURVNUX0FQSV8gYm9v
bCBJc0FzY2lpRGlnaXQoY2hhciBjaCk7CitHVEVTVF9BUElfIGJvb2wgSXNBc2NpaVB1bmN0KGNo
YXIgY2gpOwogR1RFU1RfQVBJXyBib29sIElzUmVwZWF0KGNoYXIgY2gpOwotR1RFU1RfQVBJXyBi
b29sIElzV2hpdGVTcGFjZShjaGFyIGNoKTsKLUdURVNUX0FQSV8gYm9vbCBJc1dvcmRDaGFyKGNo
YXIgY2gpOworR1RFU1RfQVBJXyBib29sIElzQXNjaWlXaGl0ZVNwYWNlKGNoYXIgY2gpOworR1RF
U1RfQVBJXyBib29sIElzQXNjaWlXb3JkQ2hhcihjaGFyIGNoKTsKIEdURVNUX0FQSV8gYm9vbCBJ
c1ZhbGlkRXNjYXBlKGNoYXIgY2gpOwogR1RFU1RfQVBJXyBib29sIEF0b21NYXRjaGVzQ2hhcihi
b29sIGVzY2FwZWQsIGNoYXIgcGF0dGVybiwgY2hhciBjaCk7CiBHVEVTVF9BUElfIGJvb2wgVmFs
aWRhdGVSZWdleChjb25zdCBjaGFyKiByZWdleCk7CkBAIC05NjcsNiArOTQ4LDggQEAgR1RFU1Rf
QVBJXyBib29sIE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKAogICAgIGJvb2wgZXNjYXBl
ZCwgY2hhciBjaCwgY2hhciByZXBlYXQsIGNvbnN0IGNoYXIqIHJlZ2V4LCBjb25zdCBjaGFyKiBz
dHIpOwogR1RFU1RfQVBJXyBib29sIE1hdGNoUmVnZXhBbnl3aGVyZShjb25zdCBjaGFyKiByZWdl
eCwgY29uc3QgY2hhciogc3RyKTsKIAorI2VuZGlmICAvLyBHVEVTVF9VU0VTX1NJTVBMRV9SRQor
CiAvLyBQYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IgR29vZ2xlIFRlc3QgZmxhZ3MsIHdpdGhv
dXQgaW5pdGlhbGl6aW5nCiAvLyBvdGhlciBwYXJ0cyBvZiBHb29nbGUgVGVzdC4KIEdURVNUX0FQ
SV8gdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoaW50KiBhcmdjLCBjaGFyKiogYXJndik7
CkBAIC05NzYsMzMgKzk1OSw3IEBAIEdURVNUX0FQSV8gdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFn
c09ubHkoaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndik7CiAKIC8vIFJldHVybnMgdGhlIG1lc3Nh
Z2UgZGVzY3JpYmluZyB0aGUgbGFzdCBzeXN0ZW0gZXJyb3IsIHJlZ2FyZGxlc3Mgb2YgdGhlCiAv
LyBwbGF0Zm9ybS4KLVN0cmluZyBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpOwotCi0jaWYgR1RF
U1RfT1NfV0lORE9XUwotLy8gUHJvdmlkZXMgbGVhay1zYWZlIFdpbmRvd3Mga2VybmVsIGhhbmRs
ZSBvd25lcnNoaXAuCi1jbGFzcyBBdXRvSGFuZGxlIHsKLSBwdWJsaWM6Ci0gIEF1dG9IYW5kbGUo
KSA6IGhhbmRsZV8oSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHt9Ci0gIGV4cGxpY2l0IEF1dG9IYW5k
bGUoSEFORExFIGhhbmRsZSkgOiBoYW5kbGVfKGhhbmRsZSkge30KLQotICB+QXV0b0hhbmRsZSgp
IHsgUmVzZXQoKTsgfQotCi0gIEhBTkRMRSBHZXQoKSBjb25zdCB7IHJldHVybiBoYW5kbGVfOyB9
Ci0gIHZvaWQgUmVzZXQoKSB7IFJlc2V0KElOVkFMSURfSEFORExFX1ZBTFVFKTsgfQotICB2b2lk
IFJlc2V0KEhBTkRMRSBoYW5kbGUpIHsKLSAgICBpZiAoaGFuZGxlICE9IGhhbmRsZV8pIHsKLSAg
ICAgIGlmIChoYW5kbGVfICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICA6OkNsb3Nl
SGFuZGxlKGhhbmRsZV8pOwotICAgICAgaGFuZGxlXyA9IGhhbmRsZTsKLSAgICB9Ci0gIH0KLQot
IHByaXZhdGU6Ci0gIEhBTkRMRSBoYW5kbGVfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8oQXV0b0hhbmRsZSk7Ci19OwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCitH
VEVTVF9BUElfIHN0ZDo6c3RyaW5nIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCk7CiAKIC8vIEF0
dGVtcHRzIHRvIHBhcnNlIGEgc3RyaW5nIGludG8gYSBwb3NpdGl2ZSBpbnRlZ2VyIHBvaW50ZWQg
dG8gYnkgdGhlCiAvLyBudW1iZXIgcGFyYW1ldGVyLiAgUmV0dXJucyB0cnVlIGlmIHRoYXQgaXMg
cG9zc2libGUuCkBAIC0xMDEzLDcgKzk3MCw3IEBAIGJvb2wgUGFyc2VOYXR1cmFsTnVtYmVyKGNv
bnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgSW50ZWdlciogbnVtYmVyKSB7CiAgIC8vIEZhaWwgZmFz
dCBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGRvZXMgbm90IGJlZ2luIHdpdGggYSBkaWdpdDsKICAgLy8g
dGhpcyBieXBhc3NlcyBzdHJ0b1hYWCdzICJvcHRpb25hbCBsZWFkaW5nIHdoaXRlc3BhY2UgYW5k
IHBsdXMKICAgLy8gb3IgbWludXMgc2lnbiIgc2VtYW50aWNzLCB3aGljaCBhcmUgdW5kZXNpcmFi
bGUgaGVyZS4KLSAgaWYgKHN0ci5lbXB0eSgpIHx8ICFpc2RpZ2l0KHN0clswXSkpIHsKKyAgaWYg
KHN0ci5lbXB0eSgpIHx8ICFJc0RpZ2l0KHN0clswXSkpIHsKICAgICByZXR1cm4gZmFsc2U7CiAg
IH0KICAgZXJybm8gPSAwOwpAQCAtMTAyMSwxNyArOTc4LDIzIEBAIGJvb2wgUGFyc2VOYXR1cmFs
TnVtYmVyKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgSW50ZWdlciogbnVtYmVyKSB7CiAgIGNo
YXIqIGVuZDsKICAgLy8gQmlnZ2VzdENvbnZlcnRpYmxlIGlzIHRoZSBsYXJnZXN0IGludGVnZXIg
dHlwZSB0aGF0IHN5c3RlbS1wcm92aWRlZAogICAvLyBzdHJpbmctdG8tbnVtYmVyIGNvbnZlcnNp
b24gcm91dGluZXMgY2FuIHJldHVybi4KLSNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVk
KF9fR05VQ19fKQorCisjIGlmIEdURVNUX09TX1dJTkRPV1MgJiYgIWRlZmluZWQoX19HTlVDX18p
CisKICAgLy8gTVNWQyBhbmQgQysrIEJ1aWxkZXIgZGVmaW5lIF9faW50NjQgaW5zdGVhZCBvZiB0
aGUgc3RhbmRhcmQgbG9uZyBsb25nLgogICB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgQmlnZ2Vz
dENvbnZlcnRpYmxlOwogICBjb25zdCBCaWdnZXN0Q29udmVydGlibGUgcGFyc2VkID0gX3N0cnRv
dWk2NChzdHIuY19zdHIoKSwgJmVuZCwgMTApOwotI2Vsc2UKKworIyBlbHNlCisKICAgdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIGxvbmcgQmlnZ2VzdENvbnZlcnRpYmxlOyAgLy8gTk9MSU5UCiAgIGNv
bnN0IEJpZ2dlc3RDb252ZXJ0aWJsZSBwYXJzZWQgPSBzdHJ0b3VsbChzdHIuY19zdHIoKSwgJmVu
ZCwgMTApOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVkKF9fR05VQ19f
KQorCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVkKF9fR05VQ19fKQor
CiAgIGNvbnN0IGJvb2wgcGFyc2Vfc3VjY2VzcyA9ICplbmQgPT0gJ1wwJyAmJiBlcnJubyA9PSAw
OwogCi0gIC8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IENvbnZlcnQgdGhpcyB0byBjb21waWxl
IHRpbWUgYXNzZXJ0aW9uIHdoZW4gaXQgaXMKKyAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBj
b21waWxlIHRpbWUgYXNzZXJ0aW9uIHdoZW4gaXQgaXMKICAgLy8gYXZhaWxhYmxlLgogICBHVEVT
VF9DSEVDS18oc2l6ZW9mKEludGVnZXIpIDw9IHNpemVvZihwYXJzZWQpKTsKIApAQCAtMTA1Myw4
ICsxMDE2LDkgQEAgYm9vbCBQYXJzZU5hdHVyYWxOdW1iZXIoY29uc3QgOjpzdGQ6OnN0cmluZyYg
c3RyLCBJbnRlZ2VyKiBudW1iZXIpIHsKIGNsYXNzIFRlc3RSZXN1bHRBY2Nlc3NvciB7CiAgcHVi
bGljOgogICBzdGF0aWMgdm9pZCBSZWNvcmRQcm9wZXJ0eShUZXN0UmVzdWx0KiB0ZXN0X3Jlc3Vs
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9l
bGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UHJvcGVydHkm
IHByb3BlcnR5KSB7Ci0gICAgdGVzdF9yZXN1bHQtPlJlY29yZFByb3BlcnR5KHByb3BlcnR5KTsK
KyAgICB0ZXN0X3Jlc3VsdC0+UmVjb3JkUHJvcGVydHkoeG1sX2VsZW1lbnQsIHByb3BlcnR5KTsK
ICAgfQogCiAgIHN0YXRpYyB2b2lkIENsZWFyVGVzdFBhcnRSZXN1bHRzKFRlc3RSZXN1bHQqIHRl
c3RfcmVzdWx0KSB7CkBAIC0xMDY3LDcgKzEwMzEsMTU3IEBAIGNsYXNzIFRlc3RSZXN1bHRBY2Nl
c3NvciB7CiAgIH0KIH07CiAKKyNpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKKy8vIFN0
cmVhbXMgdGVzdCByZXN1bHRzIHRvIHRoZSBnaXZlbiBwb3J0IG9uIHRoZSBnaXZlbiBob3N0IG1h
Y2hpbmUuCitjbGFzcyBTdHJlYW1pbmdMaXN0ZW5lciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExp
c3RlbmVyIHsKKyBwdWJsaWM6CisgIC8vIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHdyaXRpbmcg
c3RyaW5ncyB0byBhIHNvY2tldC4KKyAgY2xhc3MgQWJzdHJhY3RTb2NrZXRXcml0ZXIgeworICAg
cHVibGljOgorICAgIHZpcnR1YWwgfkFic3RyYWN0U29ja2V0V3JpdGVyKCkge30KKworICAgIC8v
IFNlbmRzIGEgc3RyaW5nIHRvIHRoZSBzb2NrZXQuCisgICAgdmlydHVhbCB2b2lkIFNlbmQoY29u
c3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpID0gMDsKKworICAgIC8vIENsb3NlcyB0aGUgc29ja2V0
LgorICAgIHZpcnR1YWwgdm9pZCBDbG9zZUNvbm5lY3Rpb24oKSB7fQorCisgICAgLy8gU2VuZHMg
YSBzdHJpbmcgYW5kIGEgbmV3bGluZSB0byB0aGUgc29ja2V0LgorICAgIHZvaWQgU2VuZExuKGNv
bnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7IFNlbmQobWVzc2FnZSArICJcbiIpOyB9CisgIH07
CisKKyAgLy8gQ29uY3JldGUgY2xhc3MgZm9yIGFjdHVhbGx5IHdyaXRpbmcgc3RyaW5ncyB0byBh
IHNvY2tldC4KKyAgY2xhc3MgU29ja2V0V3JpdGVyIDogcHVibGljIEFic3RyYWN0U29ja2V0V3Jp
dGVyIHsKKyAgIHB1YmxpYzoKKyAgICBTb2NrZXRXcml0ZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGhv
c3QsIGNvbnN0IHN0ZDo6c3RyaW5nJiBwb3J0KQorICAgICAgICA6IHNvY2tmZF8oLTEpLCBob3N0
X25hbWVfKGhvc3QpLCBwb3J0X251bV8ocG9ydCkgeworICAgICAgTWFrZUNvbm5lY3Rpb24oKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIH5Tb2NrZXRXcml0ZXIoKSB7CisgICAgICBpZiAoc29ja2Zk
XyAhPSAtMSkKKyAgICAgICAgQ2xvc2VDb25uZWN0aW9uKCk7CisgICAgfQorCisgICAgLy8gU2Vu
ZHMgYSBzdHJpbmcgdG8gdGhlIHNvY2tldC4KKyAgICB2aXJ0dWFsIHZvaWQgU2VuZChjb25zdCBz
dGQ6OnN0cmluZyYgbWVzc2FnZSkgeworICAgICAgR1RFU1RfQ0hFQ0tfKHNvY2tmZF8gIT0gLTEp
CisgICAgICAgICAgPDwgIlNlbmQoKSBjYW4gYmUgY2FsbGVkIG9ubHkgd2hlbiB0aGVyZSBpcyBh
IGNvbm5lY3Rpb24uIjsKKworICAgICAgY29uc3QgaW50IGxlbiA9IHN0YXRpY19jYXN0PGludD4o
bWVzc2FnZS5sZW5ndGgoKSk7CisgICAgICBpZiAod3JpdGUoc29ja2ZkXywgbWVzc2FnZS5jX3N0
cigpLCBsZW4pICE9IGxlbikgeworICAgICAgICBHVEVTVF9MT0dfKFdBUk5JTkcpCisgICAgICAg
ICAgICA8PCAic3RyZWFtX3Jlc3VsdF90bzogZmFpbGVkIHRvIHN0cmVhbSB0byAiCisgICAgICAg
ICAgICA8PCBob3N0X25hbWVfIDw8ICI6IiA8PCBwb3J0X251bV87CisgICAgICB9CisgICAgfQor
CisgICBwcml2YXRlOgorICAgIC8vIENyZWF0ZXMgYSBjbGllbnQgc29ja2V0IGFuZCBjb25uZWN0
cyB0byB0aGUgc2VydmVyLgorICAgIHZvaWQgTWFrZUNvbm5lY3Rpb24oKTsKKworICAgIC8vIENs
b3NlcyB0aGUgc29ja2V0LgorICAgIHZvaWQgQ2xvc2VDb25uZWN0aW9uKCkgeworICAgICAgR1RF
U1RfQ0hFQ0tfKHNvY2tmZF8gIT0gLTEpCisgICAgICAgICAgPDwgIkNsb3NlQ29ubmVjdGlvbigp
IGNhbiBiZSBjYWxsZWQgb25seSB3aGVuIHRoZXJlIGlzIGEgY29ubmVjdGlvbi4iOworCisgICAg
ICBjbG9zZShzb2NrZmRfKTsKKyAgICAgIHNvY2tmZF8gPSAtMTsKKyAgICB9CisKKyAgICBpbnQg
c29ja2ZkXzsgIC8vIHNvY2tldCBmaWxlIGRlc2NyaXB0b3IKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyBob3N0X25hbWVfOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHBvcnRfbnVtXzsKKworICAgIEdU
RVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oU29ja2V0V3JpdGVyKTsKKyAgfTsgIC8vIGNs
YXNzIFNvY2tldFdyaXRlcgorCisgIC8vIEVzY2FwZXMgJz0nLCAnJicsICclJywgYW5kICdcbicg
Y2hhcmFjdGVycyBpbiBzdHIgYXMgIiV4eCIuCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBVcmxFbmNv
ZGUoY29uc3QgY2hhciogc3RyKTsKKworICBTdHJlYW1pbmdMaXN0ZW5lcihjb25zdCBzdGQ6OnN0
cmluZyYgaG9zdCwgY29uc3Qgc3RkOjpzdHJpbmcmIHBvcnQpCisgICAgICA6IHNvY2tldF93cml0
ZXJfKG5ldyBTb2NrZXRXcml0ZXIoaG9zdCwgcG9ydCkpIHsKKyAgICBTdGFydCgpOworICB9CisK
KyAgZXhwbGljaXQgU3RyZWFtaW5nTGlzdGVuZXIoQWJzdHJhY3RTb2NrZXRXcml0ZXIqIHNvY2tl
dF93cml0ZXIpCisgICAgICA6IHNvY2tldF93cml0ZXJfKHNvY2tldF93cml0ZXIpIHsgU3RhcnQo
KTsgfQorCisgIHZvaWQgT25UZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKiB1bml0
X3Rlc3QgKi8pIHsKKyAgICBTZW5kTG4oImV2ZW50PVRlc3RQcm9ncmFtU3RhcnQiKTsKKyAgfQor
CisgIHZvaWQgT25UZXN0UHJvZ3JhbUVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KSB7Cisg
ICAgLy8gTm90ZSB0aGF0IEdvb2dsZSBUZXN0IGN1cnJlbnQgb25seSByZXBvcnQgZWxhcHNlZCB0
aW1lIGZvciBlYWNoCisgICAgLy8gdGVzdCBpdGVyYXRpb24sIG5vdCBmb3IgdGhlIGVudGlyZSB0
ZXN0IHByb2dyYW0uCisgICAgU2VuZExuKCJldmVudD1UZXN0UHJvZ3JhbUVuZCZwYXNzZWQ9IiAr
IEZvcm1hdEJvb2wodW5pdF90ZXN0LlBhc3NlZCgpKSk7CisKKyAgICAvLyBOb3RpZnkgdGhlIHN0
cmVhbWluZyBzZXJ2ZXIgdG8gc3RvcC4KKyAgICBzb2NrZXRfd3JpdGVyXy0+Q2xvc2VDb25uZWN0
aW9uKCk7CisgIH0KKworICB2b2lkIE9uVGVzdEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVuaXRUZXN0
JiAvKiB1bml0X3Rlc3QgKi8sIGludCBpdGVyYXRpb24pIHsKKyAgICBTZW5kTG4oImV2ZW50PVRl
c3RJdGVyYXRpb25TdGFydCZpdGVyYXRpb249IiArCisgICAgICAgICAgIFN0cmVhbWFibGVUb1N0
cmluZyhpdGVyYXRpb24pKTsKKyAgfQorCisgIHZvaWQgT25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0
IFVuaXRUZXN0JiB1bml0X3Rlc3QsIGludCAvKiBpdGVyYXRpb24gKi8pIHsKKyAgICBTZW5kTG4o
ImV2ZW50PVRlc3RJdGVyYXRpb25FbmQmcGFzc2VkPSIgKworICAgICAgICAgICBGb3JtYXRCb29s
KHVuaXRfdGVzdC5QYXNzZWQoKSkgKyAiJmVsYXBzZWRfdGltZT0iICsKKyAgICAgICAgICAgU3Ry
ZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5lbGFwc2VkX3RpbWUoKSkgKyAibXMiKTsKKyAgfQor
CisgIHZvaWQgT25UZXN0Q2FzZVN0YXJ0KGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKKyAg
ICBTZW5kTG4oc3RkOjpzdHJpbmcoImV2ZW50PVRlc3RDYXNlU3RhcnQmbmFtZT0iKSArIHRlc3Rf
Y2FzZS5uYW1lKCkpOworICB9CisKKyAgdm9pZCBPblRlc3RDYXNlRW5kKGNvbnN0IFRlc3RDYXNl
JiB0ZXN0X2Nhc2UpIHsKKyAgICBTZW5kTG4oImV2ZW50PVRlc3RDYXNlRW5kJnBhc3NlZD0iICsg
Rm9ybWF0Qm9vbCh0ZXN0X2Nhc2UuUGFzc2VkKCkpCisgICAgICAgICAgICsgIiZlbGFwc2VkX3Rp
bWU9IiArIFN0cmVhbWFibGVUb1N0cmluZyh0ZXN0X2Nhc2UuZWxhcHNlZF90aW1lKCkpCisgICAg
ICAgICAgICsgIm1zIik7CisgIH0KKworICB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZv
JiB0ZXN0X2luZm8pIHsKKyAgICBTZW5kTG4oc3RkOjpzdHJpbmcoImV2ZW50PVRlc3RTdGFydCZu
YW1lPSIpICsgdGVzdF9pbmZvLm5hbWUoKSk7CisgIH0KKworICB2b2lkIE9uVGVzdEVuZChjb25z
dCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CisgICAgU2VuZExuKCJldmVudD1UZXN0RW5kJnBhc3Nl
ZD0iICsKKyAgICAgICAgICAgRm9ybWF0Qm9vbCgodGVzdF9pbmZvLnJlc3VsdCgpKS0+UGFzc2Vk
KCkpICsKKyAgICAgICAgICAgIiZlbGFwc2VkX3RpbWU9IiArCisgICAgICAgICAgIFN0cmVhbWFi
bGVUb1N0cmluZygodGVzdF9pbmZvLnJlc3VsdCgpKS0+ZWxhcHNlZF90aW1lKCkpICsgIm1zIik7
CisgIH0KKworICB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRl
c3RfcGFydF9yZXN1bHQpIHsKKyAgICBjb25zdCBjaGFyKiBmaWxlX25hbWUgPSB0ZXN0X3BhcnRf
cmVzdWx0LmZpbGVfbmFtZSgpOworICAgIGlmIChmaWxlX25hbWUgPT0gTlVMTCkKKyAgICAgIGZp
bGVfbmFtZSA9ICIiOworICAgIFNlbmRMbigiZXZlbnQ9VGVzdFBhcnRSZXN1bHQmZmlsZT0iICsg
VXJsRW5jb2RlKGZpbGVfbmFtZSkgKworICAgICAgICAgICAiJmxpbmU9IiArIFN0cmVhbWFibGVU
b1N0cmluZyh0ZXN0X3BhcnRfcmVzdWx0LmxpbmVfbnVtYmVyKCkpICsKKyAgICAgICAgICAgIiZt
ZXNzYWdlPSIgKyBVcmxFbmNvZGUodGVzdF9wYXJ0X3Jlc3VsdC5tZXNzYWdlKCkpKTsKKyAgfQor
CisgcHJpdmF0ZToKKyAgLy8gU2VuZHMgdGhlIGdpdmVuIG1lc3NhZ2UgYW5kIGEgbmV3bGluZSB0
byB0aGUgc29ja2V0LgorICB2b2lkIFNlbmRMbihjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkg
eyBzb2NrZXRfd3JpdGVyXy0+U2VuZExuKG1lc3NhZ2UpOyB9CisKKyAgLy8gQ2FsbGVkIGF0IHRo
ZSBzdGFydCBvZiBzdHJlYW1pbmcgdG8gbm90aWZ5IHRoZSByZWNlaXZlciB3aGF0CisgIC8vIHBy
b3RvY29sIHdlIGFyZSB1c2luZy4KKyAgdm9pZCBTdGFydCgpIHsgU2VuZExuKCJndGVzdF9zdHJl
YW1pbmdfcHJvdG9jb2xfdmVyc2lvbj0xLjAiKTsgfQorCisgIHN0ZDo6c3RyaW5nIEZvcm1hdEJv
b2woYm9vbCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPyAiMSIgOiAiMCI7IH0KKworICBjb25zdCBz
Y29wZWRfcHRyPEFic3RyYWN0U29ja2V0V3JpdGVyPiBzb2NrZXRfd3JpdGVyXzsKKworICBHVEVT
VF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFN0cmVhbWluZ0xpc3RlbmVyKTsKK307ICAvLyBj
bGFzcyBTdHJlYW1pbmdMaXN0ZW5lcgorCisjZW5kaWYgIC8vIEdURVNUX0NBTl9TVFJFQU1fUkVT
VUxUU18KKwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGlu
ZwogCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkgIC8vICA0MjUxCisKICNlbmRp
ZiAgLy8gR1RFU1RfU1JDX0dURVNUX0lOVEVSTkFMX0lOTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXBvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYwppbmRleCBiOTUwNGY1NmFlNmY5M2UxMjZkMmI1NjhhN2Q5
N2RiNTE3ZmI4M2U0Li5mZWNiNWQxMWMyMTI5NmE5MTgxYTExMjgwMjI2MDY3YjY0M2VkZDA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYwpAQCAtMjYsNDIgKzI2
LDUyIEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0v
LwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCi0jaW5jbHVkZSA8
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtcG9ydC5oIgogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+
CiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxmc3Ry
ZWFtPgogCi0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSNpbmNsdWRlIDx3aW5kb3dzLmg+
ICAvLyBGb3IgVGVybWluYXRlUHJvY2VzcygpCi0jZWxpZiBHVEVTVF9PU19XSU5ET1dTCi0jaW5j
bHVkZSA8aW8uaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2lmIEdURVNUX09TX1dJTkRPV1MK
KyMgaW5jbHVkZSA8d2luZG93cy5oPgorIyBpbmNsdWRlIDxpby5oPgorIyBpbmNsdWRlIDxzeXMv
c3RhdC5oPgorIyBpbmNsdWRlIDxtYXA+ICAvLyBVc2VkIGluIFRocmVhZExvY2FsLgogI2Vsc2UK
LSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
KyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAogI2lm
IEdURVNUX09TX01BQwotI2luY2x1ZGUgPG1hY2gvbWFjaF9pbml0Lmg+Ci0jaW5jbHVkZSA8bWFj
aC90YXNrLmg+Ci0jaW5jbHVkZSA8bWFjaC92bV9tYXAuaD4KKyMgaW5jbHVkZSA8bWFjaC9tYWNo
X2luaXQuaD4KKyMgaW5jbHVkZSA8bWFjaC90YXNrLmg+CisjIGluY2x1ZGUgPG1hY2gvdm1fbWFw
Lmg+CiAjZW5kaWYgIC8vIEdURVNUX09TX01BQwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3Bp
Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oPgotI2luY2x1ZGUgPGd0ZXN0L2lu
dGVybmFsL2d0ZXN0LXN0cmluZy5oPgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0
aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0
IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBv
ciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBw
cmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwt
aW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQor
I2lmIEdURVNUX09TX1FOWAorIyBpbmNsdWRlIDxkZXZjdGwuaD4KKyMgaW5jbHVkZSA8ZmNudGwu
aD4KKyMgaW5jbHVkZSA8c3lzL3Byb2Nmcy5oPgorI2VuZGlmICAvLyBHVEVTVF9PU19RTlgKKwor
I2lmIEdURVNUX09TX0FJWAorIyBpbmNsdWRlIDxwcm9jaW5mby5oPgorIyBpbmNsdWRlIDxzeXMv
dHlwZXMuaD4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfQUlYCisKKyNpZiBHVEVTVF9PU19GVUNIU0lB
CisjIGluY2x1ZGUgPHppcmNvbi9wcm9jZXNzLmg+CisjIGluY2x1ZGUgPHppcmNvbi9zeXNjYWxs
cy5oPgorI2VuZGlmICAvLyBHVEVTVF9PU19GVUNIU0lBCisKKyNpbmNsdWRlICJndGVzdC9ndGVz
dC1zcGkuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1tZXNzYWdlLmgiCisjaW5jbHVkZSAiZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9n
dGVzdC1zdHJpbmcuaCIKICNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5k
ZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFj
ZSBpbnRlcm5hbCB7CkBAIC03NSwxMCArODUsMzEgQEAgY29uc3QgaW50IGtTdGRPdXRGaWxlbm8g
PSBTVERPVVRfRklMRU5POwogY29uc3QgaW50IGtTdGRFcnJGaWxlbm8gPSBTVERFUlJfRklMRU5P
OwogI2VuZGlmICAvLyBfTVNDX1ZFUgogCi0jaWYgR1RFU1RfT1NfTUFDCisjaWYgR1RFU1RfT1Nf
TElOVVgKKworbmFtZXNwYWNlIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorVCBSZWFkUHJvY0Zp
bGVGaWVsZChjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUsIGludCBmaWVsZCkgeworICBzdGQ6
OnN0cmluZyBkdW1teTsKKyAgc3RkOjppZnN0cmVhbSBmaWxlKGZpbGVuYW1lLmNfc3RyKCkpOwor
ICB3aGlsZSAoZmllbGQtLSA+IDApIHsKKyAgICBmaWxlID4+IGR1bW15OworICB9CisgIFQgb3V0
cHV0ID0gMDsKKyAgZmlsZSA+PiBvdXRwdXQ7CisgIHJldHVybiBvdXRwdXQ7Cit9Cit9ICAvLyBu
YW1lc3BhY2UKKworLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSB0aHJlYWRzLCBvciAw
IHdoZW4gdGhlcmUgaXMgYW4gZXJyb3IuCitzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CisgIGNv
bnN0IHN0ZDo6c3RyaW5nIGZpbGVuYW1lID0KKyAgICAgIChNZXNzYWdlKCkgPDwgIi9wcm9jLyIg
PDwgZ2V0cGlkKCkgPDwgIi9zdGF0IikuR2V0U3RyaW5nKCk7CisgIHJldHVybiBSZWFkUHJvY0Zp
bGVGaWVsZDxpbnQ+KGZpbGVuYW1lLCAxOSk7Cit9CisKKyNlbGlmIEdURVNUX09TX01BQwogCi0v
LyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBydW5uaW5nIGluIHRoZSBwcm9jZXNzLCBv
ciAwIHRvIGluZGljYXRlIHRoYXQKLS8vIHdlIGNhbm5vdCBkZXRlY3QgaXQuCiBzaXplX3QgR2V0
VGhyZWFkQ291bnQoKSB7CiAgIGNvbnN0IHRhc2tfdCB0YXNrID0gbWFjaF90YXNrX3NlbGYoKTsK
ICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCB0aHJlYWRfY291bnQ7CkBAIC05Niw2ICsxMjcsNTgg
QEAgc2l6ZV90IEdldFRocmVhZENvdW50KCkgewogICB9CiB9CiAKKyNlbGlmIEdURVNUX09TX1FO
WAorCisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBydW5uaW5nIGluIHRoZSBwcm9j
ZXNzLCBvciAwIHRvIGluZGljYXRlIHRoYXQKKy8vIHdlIGNhbm5vdCBkZXRlY3QgaXQuCitzaXpl
X3QgR2V0VGhyZWFkQ291bnQoKSB7CisgIGNvbnN0IGludCBmZCA9IG9wZW4oIi9wcm9jL3NlbGYv
YXMiLCBPX1JET05MWSk7CisgIGlmIChmZCA8IDApIHsKKyAgICByZXR1cm4gMDsKKyAgfQorICBw
cm9jZnNfaW5mbyBwcm9jZXNzX2luZm87CisgIGNvbnN0IGludCBzdGF0dXMgPQorICAgICAgZGV2
Y3RsKGZkLCBEQ01EX1BST0NfSU5GTywgJnByb2Nlc3NfaW5mbywgc2l6ZW9mKHByb2Nlc3NfaW5m
byksIE5VTEwpOworICBjbG9zZShmZCk7CisgIGlmIChzdGF0dXMgPT0gRU9LKSB7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHNpemVfdD4ocHJvY2Vzc19pbmZvLm51bV90aHJlYWRzKTsKKyAgfSBl
bHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCisjZWxpZiBHVEVTVF9PU19BSVgKKworc2l6
ZV90IEdldFRocmVhZENvdW50KCkgeworICBzdHJ1Y3QgcHJvY2VudHJ5NjQgZW50cnk7CisgIHBp
ZF90IHBpZCA9IGdldHBpZCgpOworICBpbnQgc3RhdHVzID0gZ2V0cHJvY3M2NCgmZW50cnksIHNp
emVvZihlbnRyeSksIE5VTEwsIDAsICZwaWQsIDEpOworICBpZiAoc3RhdHVzID09IDEpIHsKKyAg
ICByZXR1cm4gZW50cnkucGlfdGhjb3VudDsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAg
fQorfQorCisjZWxpZiBHVEVTVF9PU19GVUNIU0lBCisKK3NpemVfdCBHZXRUaHJlYWRDb3VudCgp
IHsKKyAgaW50IGR1bW15X2J1ZmZlcjsKKyAgc2l6ZV90IGF2YWlsOworICB6eF9zdGF0dXNfdCBz
dGF0dXMgPSB6eF9vYmplY3RfZ2V0X2luZm8oCisgICAgICB6eF9wcm9jZXNzX3NlbGYoKSwKKyAg
ICAgIFpYX0lORk9fUFJPQ0VTU19USFJFQURTLAorICAgICAgJmR1bW15X2J1ZmZlciwKKyAgICAg
IDAsCisgICAgICBudWxscHRyLAorICAgICAgJmF2YWlsKTsKKyAgaWYgKHN0YXR1cyA9PSBaWF9P
SykgeworICAgIHJldHVybiBhdmFpbDsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQor
fQorCiAjZWxzZQogCiBzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CkBAIC0xMDQsNyArMTg3LDQz
MiBAQCBzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CiAgIHJldHVybiAwOwogfQogCi0jZW5kaWYg
IC8vIEdURVNUX09TX01BQworI2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCisjaWYgR1RFU1Rf
SVNfVEhSRUFEU0FGRSAmJiBHVEVTVF9PU19XSU5ET1dTCisKK3ZvaWQgU2xlZXBNaWxsaXNlY29u
ZHMoaW50IG4pIHsKKyAgOjpTbGVlcChuKTsKK30KKworQXV0b0hhbmRsZTo6QXV0b0hhbmRsZSgp
CisgICAgOiBoYW5kbGVfKElOVkFMSURfSEFORExFX1ZBTFVFKSB7fQorCitBdXRvSGFuZGxlOjpB
dXRvSGFuZGxlKEhhbmRsZSBoYW5kbGUpCisgICAgOiBoYW5kbGVfKGhhbmRsZSkge30KKworQXV0
b0hhbmRsZTo6fkF1dG9IYW5kbGUoKSB7CisgIFJlc2V0KCk7Cit9CisKK0F1dG9IYW5kbGU6Okhh
bmRsZSBBdXRvSGFuZGxlOjpHZXQoKSBjb25zdCB7CisgIHJldHVybiBoYW5kbGVfOworfQorCit2
b2lkIEF1dG9IYW5kbGU6OlJlc2V0KCkgeworICBSZXNldChJTlZBTElEX0hBTkRMRV9WQUxVRSk7
Cit9CisKK3ZvaWQgQXV0b0hhbmRsZTo6UmVzZXQoSEFORExFIGhhbmRsZSkgeworICAvLyBSZXNl
dHRpbmcgd2l0aCB0aGUgc2FtZSBoYW5kbGUgd2UgYWxyZWFkeSBvd24gaXMgaW52YWxpZC4KKyAg
aWYgKGhhbmRsZV8gIT0gaGFuZGxlKSB7CisgICAgaWYgKElzQ2xvc2VhYmxlKCkpIHsKKyAgICAg
IDo6Q2xvc2VIYW5kbGUoaGFuZGxlXyk7CisgICAgfQorICAgIGhhbmRsZV8gPSBoYW5kbGU7Cisg
IH0gZWxzZSB7CisgICAgR1RFU1RfQ0hFQ0tfKCFJc0Nsb3NlYWJsZSgpKQorICAgICAgICA8PCAi
UmVzZXR0aW5nIGEgdmFsaWQgaGFuZGxlIHRvIGl0c2VsZiBpcyBsaWtlbHkgYSBwcm9ncmFtbWVy
IGVycm9yICIKKyAgICAgICAgICAgICJhbmQgdGh1cyBub3QgYWxsb3dlZC4iOworICB9Cit9CisK
K2Jvb2wgQXV0b0hhbmRsZTo6SXNDbG9zZWFibGUoKSBjb25zdCB7CisgIC8vIERpZmZlcmVudCBX
aW5kb3dzIEFQSXMgbWF5IHVzZSBlaXRoZXIgb2YgdGhlc2UgdmFsdWVzIHRvIHJlcHJlc2VudCBh
bgorICAvLyBpbnZhbGlkIGhhbmRsZS4KKyAgcmV0dXJuIGhhbmRsZV8gIT0gTlVMTCAmJiBoYW5k
bGVfICE9IElOVkFMSURfSEFORExFX1ZBTFVFOworfQorCitOb3RpZmljYXRpb246Ok5vdGlmaWNh
dGlvbigpCisgICAgOiBldmVudF8oOjpDcmVhdGVFdmVudChOVUxMLCAgIC8vIERlZmF1bHQgc2Vj
dXJpdHkgYXR0cmlidXRlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsICAgLy8g
RG8gbm90IHJlc2V0IGF1dG9tYXRpY2FsbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBG
QUxTRSwgIC8vIEluaXRpYWxseSB1bnNldC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V
TEwpKSB7ICAvLyBBbm9ueW1vdXMgZXZlbnQuCisgIEdURVNUX0NIRUNLXyhldmVudF8uR2V0KCkg
IT0gTlVMTCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpOb3RpZnkoKSB7CisgIEdURVNUX0NI
RUNLXyg6OlNldEV2ZW50KGV2ZW50Xy5HZXQoKSkgIT0gRkFMU0UpOworfQorCit2b2lkIE5vdGlm
aWNhdGlvbjo6V2FpdEZvck5vdGlmaWNhdGlvbigpIHsKKyAgR1RFU1RfQ0hFQ0tfKAorICAgICAg
OjpXYWl0Rm9yU2luZ2xlT2JqZWN0KGV2ZW50Xy5HZXQoKSwgSU5GSU5JVEUpID09IFdBSVRfT0JK
RUNUXzApOworfQorCitNdXRleDo6TXV0ZXgoKQorICAgIDogb3duZXJfdGhyZWFkX2lkXygwKSwK
KyAgICAgIHR5cGVfKGtEeW5hbWljKSwKKyAgICAgIGNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFz
ZV8oMCksCisgICAgICBjcml0aWNhbF9zZWN0aW9uXyhuZXcgQ1JJVElDQUxfU0VDVElPTikgewor
ICA6OkluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oY3JpdGljYWxfc2VjdGlvbl8pOworfQorCitN
dXRleDo6fk11dGV4KCkgeworICAvLyBTdGF0aWMgbXV0ZXhlcyBhcmUgbGVha2VkIGludGVudGlv
bmFsbHkuIEl0IGlzIG5vdCB0aHJlYWQtc2FmZSB0byB0cnkKKyAgLy8gdG8gY2xlYW4gdGhlbSB1
cC4KKyAgLy8gRklYTUU6IFN3aXRjaCB0byBTbGltIFJlYWRlci9Xcml0ZXIgKFNSVykgTG9ja3Ms
IHdoaWNoIHJlcXVpcmVzCisgIC8vIG5vdGhpbmcgdG8gY2xlYW4gaXQgdXAgYnV0IGlzIGF2YWls
YWJsZSBvbmx5IG9uIFZpc3RhIGFuZCBsYXRlci4KKyAgLy8gaHR0cHM6Ly9kb2NzLm1pY3Jvc29m
dC5jb20vZW4tdXMvd2luZG93cy9kZXNrdG9wL1N5bmMvc2xpbS1yZWFkZXItd3JpdGVyLS1zcnct
LWxvY2tzCisgIGlmICh0eXBlXyA9PSBrRHluYW1pYykgeworICAgIDo6RGVsZXRlQ3JpdGljYWxT
ZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb25fKTsKKyAgICBkZWxldGUgY3JpdGljYWxfc2VjdGlvbl87
CisgICAgY3JpdGljYWxfc2VjdGlvbl8gPSBOVUxMOworICB9Cit9CisKK3ZvaWQgTXV0ZXg6Okxv
Y2soKSB7CisgIFRocmVhZFNhZmVMYXp5SW5pdCgpOworICA6OkVudGVyQ3JpdGljYWxTZWN0aW9u
KGNyaXRpY2FsX3NlY3Rpb25fKTsKKyAgb3duZXJfdGhyZWFkX2lkXyA9IDo6R2V0Q3VycmVudFRo
cmVhZElkKCk7Cit9CisKK3ZvaWQgTXV0ZXg6OlVubG9jaygpIHsKKyAgVGhyZWFkU2FmZUxhenlJ
bml0KCk7CisgIC8vIFdlIGRvbid0IHByb3RlY3Qgd3JpdGluZyB0byBvd25lcl90aHJlYWRfaWRf
IGhlcmUsIGFzIGl0J3MgdGhlCisgIC8vIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3Vy
ZSB0aGF0IHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUKKyAgLy8gbXV0ZXggd2hlbiB0aGlz
IGlzIGNhbGxlZC4KKyAgb3duZXJfdGhyZWFkX2lkXyA9IDA7CisgIDo6TGVhdmVDcml0aWNhbFNl
Y3Rpb24oY3JpdGljYWxfc2VjdGlvbl8pOworfQorCisvLyBEb2VzIG5vdGhpbmcgaWYgdGhlIGN1
cnJlbnQgdGhyZWFkIGhvbGRzIHRoZSBtdXRleC4gT3RoZXJ3aXNlLCBjcmFzaGVzCisvLyB3aXRo
IGhpZ2ggcHJvYmFiaWxpdHkuCit2b2lkIE11dGV4OjpBc3NlcnRIZWxkKCkgeworICBUaHJlYWRT
YWZlTGF6eUluaXQoKTsKKyAgR1RFU1RfQ0hFQ0tfKG93bmVyX3RocmVhZF9pZF8gPT0gOjpHZXRD
dXJyZW50VGhyZWFkSWQoKSkKKyAgICAgIDw8ICJUaGUgY3VycmVudCB0aHJlYWQgaXMgbm90IGhv
bGRpbmcgdGhlIG11dGV4IEAiIDw8IHRoaXM7Cit9CisKK25hbWVzcGFjZSB7CisKKy8vIFVzZSB0
aGUgUkFJSSBpZGlvbSB0byBmbGFnIG1lbSBhbGxvY3MgdGhhdCBhcmUgaW50ZW50aW9uYWxseSBu
ZXZlcgorLy8gZGVhbGxvY2F0ZWQuIFRoZSBtb3RpdmF0aW9uIGlzIHRvIHNpbGVuY2UgdGhlIGZh
bHNlIHBvc2l0aXZlIG1lbSBsZWFrcworLy8gdGhhdCBhcmUgcmVwb3J0ZWQgYnkgdGhlIGRlYnVn
IHZlcnNpb24gb2YgTVMncyBDUlQgd2hpY2ggY2FuIG9ubHkgZGV0ZWN0CisvLyBpZiBhbiBhbGxv
YyBpcyBtaXNzaW5nIGEgbWF0Y2hpbmcgZGVhbGxvY2F0aW9uLgorLy8gRXhhbXBsZToKKy8vICAg
IE1lbW9yeUlzTm90RGVhbGxvY2F0ZWQgbWVtb3J5X2lzX25vdF9kZWFsbG9jYXRlZDsKKy8vICAg
IGNyaXRpY2FsX3NlY3Rpb25fID0gbmV3IENSSVRJQ0FMX1NFQ1RJT047CisvLworY2xhc3MgTWVt
b3J5SXNOb3REZWFsbG9jYXRlZAoreworIHB1YmxpYzoKKyAgTWVtb3J5SXNOb3REZWFsbG9jYXRl
ZCgpIDogb2xkX2NydGRiZ19mbGFnXygwKSB7CisjaWZkZWYgX01TQ19WRVIKKyAgICBvbGRfY3J0
ZGJnX2ZsYWdfID0gX0NydFNldERiZ0ZsYWcoX0NSVERCR19SRVBPUlRfRkxBRyk7CisgICAgLy8g
U2V0IGhlYXAgYWxsb2NhdGlvbiBibG9jayB0eXBlIHRvIF9JR05PUkVfQkxPQ0sgc28gdGhhdCBN
UyBkZWJ1ZyBDUlQKKyAgICAvLyBkb2Vzbid0IHJlcG9ydCBtZW0gbGVhayBpZiB0aGVyZSdzIG5v
IG1hdGNoaW5nIGRlYWxsb2NhdGlvbi4KKyAgICBfQ3J0U2V0RGJnRmxhZyhvbGRfY3J0ZGJnX2Zs
YWdfICYgfl9DUlREQkdfQUxMT0NfTUVNX0RGKTsKKyNlbmRpZiAgLy8gIF9NU0NfVkVSCisgIH0K
KworICB+TWVtb3J5SXNOb3REZWFsbG9jYXRlZCgpIHsKKyNpZmRlZiBfTVNDX1ZFUgorICAgIC8v
IFJlc3RvcmUgdGhlIG9yaWdpbmFsIF9DUlREQkdfQUxMT0NfTUVNX0RGIGZsYWcKKyAgICBfQ3J0
U2V0RGJnRmxhZyhvbGRfY3J0ZGJnX2ZsYWdfKTsKKyNlbmRpZiAgLy8gIF9NU0NfVkVSCisgIH0K
KworIHByaXZhdGU6CisgIGludCBvbGRfY3J0ZGJnX2ZsYWdfOworCisgIEdURVNUX0RJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTl8oTWVtb3J5SXNOb3REZWFsbG9jYXRlZCk7Cit9OworCit9ICAvLyBu
YW1lc3BhY2UKKworLy8gSW5pdGlhbGl6ZXMgb3duZXJfdGhyZWFkX2lkXyBhbmQgY3JpdGljYWxf
c2VjdGlvbl8gaW4gc3RhdGljIG11dGV4ZXMuCit2b2lkIE11dGV4OjpUaHJlYWRTYWZlTGF6eUlu
aXQoKSB7CisgIC8vIER5bmFtaWMgbXV0ZXhlcyBhcmUgaW5pdGlhbGl6ZWQgaW4gdGhlIGNvbnN0
cnVjdG9yLgorICBpZiAodHlwZV8gPT0ga1N0YXRpYykgeworICAgIHN3aXRjaCAoCisgICAgICAg
IDo6SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoJmNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFz
ZV8sIDFMLCAwTCkpIHsKKyAgICAgIGNhc2UgMDoKKyAgICAgICAgLy8gSWYgY3JpdGljYWxfc2Vj
dGlvbl9pbml0X3BoYXNlXyB3YXMgMCBiZWZvcmUgdGhlIGV4Y2hhbmdlLCB3ZQorICAgICAgICAv
LyBhcmUgdGhlIGZpcnN0IHRvIHRlc3QgaXQgYW5kIG5lZWQgdG8gcGVyZm9ybSB0aGUgaW5pdGlh
bGl6YXRpb24uCisgICAgICAgIG93bmVyX3RocmVhZF9pZF8gPSAwOworICAgICAgICB7CisgICAg
ICAgICAgLy8gVXNlIFJBSUkgdG8gZmxhZyB0aGF0IGZvbGxvd2luZyBtZW0gYWxsb2MgaXMgbmV2
ZXIgZGVhbGxvY2F0ZWQuCisgICAgICAgICAgTWVtb3J5SXNOb3REZWFsbG9jYXRlZCBtZW1vcnlf
aXNfbm90X2RlYWxsb2NhdGVkOworICAgICAgICAgIGNyaXRpY2FsX3NlY3Rpb25fID0gbmV3IENS
SVRJQ0FMX1NFQ1RJT047CisgICAgICAgIH0KKyAgICAgICAgOjpJbml0aWFsaXplQ3JpdGljYWxT
ZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb25fKTsKKyAgICAgICAgLy8gVXBkYXRlcyB0aGUgY3JpdGlj
YWxfc2VjdGlvbl9pbml0X3BoYXNlXyB0byAyIHRvIHNpZ25hbAorICAgICAgICAvLyBpbml0aWFs
aXphdGlvbiBjb21wbGV0ZS4KKyAgICAgICAgR1RFU1RfQ0hFQ0tfKDo6SW50ZXJsb2NrZWRDb21w
YXJlRXhjaGFuZ2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICZjcml0aWNhbF9zZWN0aW9u
X2luaXRfcGhhc2VfLCAyTCwgMUwpID09CisgICAgICAgICAgICAgICAgICAgICAgMUwpOworICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgMToKKyAgICAgICAgLy8gU29tZWJvZHkgZWxzZSBpcyBh
bHJlYWR5IGluaXRpYWxpemluZyB0aGUgbXV0ZXg7IHNwaW4gdW50aWwgdGhleQorICAgICAgICAv
LyBhcmUgZG9uZS4KKyAgICAgICAgd2hpbGUgKDo6SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2Uo
JmNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFzZV8sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDJMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyTCkgIT0gMkwpIHsKKyAgICAgICAgICAvLyBQb3NzaWJseSB5aWVsZHMgdGhl
IHJlc3Qgb2YgdGhlIHRocmVhZCdzIHRpbWUgc2xpY2UgdG8gb3RoZXIKKyAgICAgICAgICAvLyB0
aHJlYWRzLgorICAgICAgICAgIDo6U2xlZXAoMCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7
CisKKyAgICAgIGNhc2UgMjoKKyAgICAgICAgYnJlYWs7ICAvLyBUaGUgbXV0ZXggaXMgYWxyZWFk
eSBpbml0aWFsaXplZCBhbmQgcmVhZHkgZm9yIHVzZS4KKworICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgR1RFU1RfQ0hFQ0tfKGZhbHNlKQorICAgICAgICAgICAgPDwgIlVuZXhwZWN0ZWQgdmFsdWUg
b2YgY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXyAiCisgICAgICAgICAgICA8PCAid2hpbGUg
aW5pdGlhbGl6aW5nIGEgc3RhdGljIG11dGV4LiI7CisgICAgfQorICB9Cit9CisKK25hbWVzcGFj
ZSB7CisKK2NsYXNzIFRocmVhZFdpdGhQYXJhbVN1cHBvcnQgOiBwdWJsaWMgVGhyZWFkV2l0aFBh
cmFtQmFzZSB7CisgcHVibGljOgorICBzdGF0aWMgSEFORExFIENyZWF0ZVRocmVhZChSdW5uYWJs
ZSogcnVubmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiog
dGhyZWFkX2Nhbl9zdGFydCkgeworICAgIFRocmVhZE1haW5QYXJhbSogcGFyYW0gPSBuZXcgVGhy
ZWFkTWFpblBhcmFtKHJ1bm5hYmxlLCB0aHJlYWRfY2FuX3N0YXJ0KTsKKyAgICBEV09SRCB0aHJl
YWRfaWQ7CisgICAgLy8gRklYTUU6IENvbnNpZGVyIHRvIHVzZSBfYmVnaW50aHJlYWRleCBpbnN0
ZWFkLgorICAgIEhBTkRMRSB0aHJlYWRfaGFuZGxlID0gOjpDcmVhdGVUaHJlYWQoCisgICAgICAg
IE5VTEwsICAgIC8vIERlZmF1bHQgc2VjdXJpdHkuCisgICAgICAgIDAsICAgICAgIC8vIERlZmF1
bHQgc3RhY2sgc2l6ZS4KKyAgICAgICAgJlRocmVhZFdpdGhQYXJhbVN1cHBvcnQ6OlRocmVhZE1h
aW4sCisgICAgICAgIHBhcmFtLCAgIC8vIFBhcmFtZXRlciB0byBUaHJlYWRNYWluU3RhdGljCisg
ICAgICAgIDB4MCwgICAgIC8vIERlZmF1bHQgY3JlYXRpb24gZmxhZ3MuCisgICAgICAgICZ0aHJl
YWRfaWQpOyAgLy8gTmVlZCBhIHZhbGlkIHBvaW50ZXIgZm9yIHRoZSBjYWxsIHRvIHdvcmsgdW5k
ZXIgV2luOTguCisgICAgR1RFU1RfQ0hFQ0tfKHRocmVhZF9oYW5kbGUgIT0gTlVMTCkgPDwgIkNy
ZWF0ZVRocmVhZCBmYWlsZWQgd2l0aCBlcnJvciAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgOjpHZXRMYXN0RXJyb3IoKSA8PCAiLiI7CisgICAgaWYgKHRocmVh
ZF9oYW5kbGUgPT0gTlVMTCkgeworICAgICAgZGVsZXRlIHBhcmFtOworICAgIH0KKyAgICByZXR1
cm4gdGhyZWFkX2hhbmRsZTsKKyAgfQorCisgcHJpdmF0ZToKKyAgc3RydWN0IFRocmVhZE1haW5Q
YXJhbSB7CisgICAgVGhyZWFkTWFpblBhcmFtKFJ1bm5hYmxlKiBydW5uYWJsZSwgTm90aWZpY2F0
aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KQorICAgICAgICA6IHJ1bm5hYmxlXyhydW5uYWJsZSksCisg
ICAgICAgICAgdGhyZWFkX2Nhbl9zdGFydF8odGhyZWFkX2Nhbl9zdGFydCkgeworICAgIH0KKyAg
ICBzY29wZWRfcHRyPFJ1bm5hYmxlPiBydW5uYWJsZV87CisgICAgLy8gRG9lcyBub3Qgb3duLgor
ICAgIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydF87CisgIH07CisKKyAgc3RhdGljIERX
T1JEIFdJTkFQSSBUaHJlYWRNYWluKHZvaWQqIHB0cikgeworICAgIC8vIFRyYW5zZmVycyBvd25l
cnNoaXAuCisgICAgc2NvcGVkX3B0cjxUaHJlYWRNYWluUGFyYW0+IHBhcmFtKHN0YXRpY19jYXN0
PFRocmVhZE1haW5QYXJhbSo+KHB0cikpOworICAgIGlmIChwYXJhbS0+dGhyZWFkX2Nhbl9zdGFy
dF8gIT0gTlVMTCkKKyAgICAgIHBhcmFtLT50aHJlYWRfY2FuX3N0YXJ0Xy0+V2FpdEZvck5vdGlm
aWNhdGlvbigpOworICAgIHBhcmFtLT5ydW5uYWJsZV8tPlJ1bigpOworICAgIHJldHVybiAwOwor
ICB9CisKKyAgLy8gUHJvaGliaXQgaW5zdGFudGlhdGlvbi4KKyAgVGhyZWFkV2l0aFBhcmFtU3Vw
cG9ydCgpOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkV2l0aFBh
cmFtU3VwcG9ydCk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UKKworVGhyZWFkV2l0aFBhcmFtQmFz
ZTo6VGhyZWFkV2l0aFBhcmFtQmFzZShSdW5uYWJsZSAqcnVubmFibGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFy
dCkKKyAgICAgIDogdGhyZWFkXyhUaHJlYWRXaXRoUGFyYW1TdXBwb3J0OjpDcmVhdGVUaHJlYWQo
cnVubmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRocmVhZF9jYW5fc3RhcnQpKSB7Cit9CisKK1RocmVhZFdpdGhQYXJhbUJhc2U6On5U
aHJlYWRXaXRoUGFyYW1CYXNlKCkgeworICBKb2luKCk7Cit9CisKK3ZvaWQgVGhyZWFkV2l0aFBh
cmFtQmFzZTo6Sm9pbigpIHsKKyAgR1RFU1RfQ0hFQ0tfKDo6V2FpdEZvclNpbmdsZU9iamVjdCh0
aHJlYWRfLkdldCgpLCBJTkZJTklURSkgPT0gV0FJVF9PQkpFQ1RfMCkKKyAgICAgIDw8ICJGYWls
ZWQgdG8gam9pbiB0aGUgdGhyZWFkIHdpdGggZXJyb3IgIiA8PCA6OkdldExhc3RFcnJvcigpIDw8
ICIuIjsKK30KKworLy8gTWFwcyBhIHRocmVhZCB0byBhIHNldCBvZiBUaHJlYWRJZFRvVGhyZWFk
TG9jYWxzIHRoYXQgaGF2ZSB2YWx1ZXMKKy8vIGluc3RhbnRpYXRlZCBvbiB0aGF0IHRocmVhZCBh
bmQgbm90aWZpZXMgdGhlbSB3aGVuIHRoZSB0aHJlYWQgZXhpdHMuICBBCisvLyBUaHJlYWRMb2Nh
bCBpbnN0YW5jZSBpcyBleHBlY3RlZCB0byBwZXJzaXN0IHVudGlsIGFsbCB0aHJlYWRzIGl0IGhh
cworLy8gdmFsdWVzIG9uIGhhdmUgdGVybWluYXRlZC4KK2NsYXNzIFRocmVhZExvY2FsUmVnaXN0
cnlJbXBsIHsKKyBwdWJsaWM6CisgIC8vIFJlZ2lzdGVycyB0aHJlYWRfbG9jYWxfaW5zdGFuY2Ug
YXMgaGF2aW5nIHZhbHVlIG9uIHRoZSBjdXJyZW50IHRocmVhZC4KKyAgLy8gUmV0dXJucyBhIHZh
bHVlIHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHRocmVhZCBmcm9tIG90aGVyIHRo
cmVhZHMuCisgIHN0YXRpYyBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogR2V0VmFsdWVPbkN1
cnJlbnRUaHJlYWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9p
bnN0YW5jZSkgeworICAgIERXT1JEIGN1cnJlbnRfdGhyZWFkID0gOjpHZXRDdXJyZW50VGhyZWFk
SWQoKTsKKyAgICBNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKKyAgICBUaHJlYWRJZFRvVGhyZWFk
TG9jYWxzKiBjb25zdCB0aHJlYWRfdG9fdGhyZWFkX2xvY2FscyA9CisgICAgICAgIEdldFRocmVh
ZExvY2Fsc01hcExvY2tlZCgpOworICAgIFRocmVhZElkVG9UaHJlYWRMb2NhbHM6Oml0ZXJhdG9y
IHRocmVhZF9sb2NhbF9wb3MgPQorICAgICAgICB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+Zmlu
ZChjdXJyZW50X3RocmVhZCk7CisgICAgaWYgKHRocmVhZF9sb2NhbF9wb3MgPT0gdGhyZWFkX3Rv
X3RocmVhZF9sb2NhbHMtPmVuZCgpKSB7CisgICAgICB0aHJlYWRfbG9jYWxfcG9zID0gdGhyZWFk
X3RvX3RocmVhZF9sb2NhbHMtPmluc2VydCgKKyAgICAgICAgICBzdGQ6Om1ha2VfcGFpcihjdXJy
ZW50X3RocmVhZCwgVGhyZWFkTG9jYWxWYWx1ZXMoKSkpLmZpcnN0OworICAgICAgU3RhcnRXYXRj
aGVyVGhyZWFkRm9yKGN1cnJlbnRfdGhyZWFkKTsKKyAgICB9CisgICAgVGhyZWFkTG9jYWxWYWx1
ZXMmIHRocmVhZF9sb2NhbF92YWx1ZXMgPSB0aHJlYWRfbG9jYWxfcG9zLT5zZWNvbmQ7CisgICAg
VGhyZWFkTG9jYWxWYWx1ZXM6Oml0ZXJhdG9yIHZhbHVlX3BvcyA9CisgICAgICAgIHRocmVhZF9s
b2NhbF92YWx1ZXMuZmluZCh0aHJlYWRfbG9jYWxfaW5zdGFuY2UpOworICAgIGlmICh2YWx1ZV9w
b3MgPT0gdGhyZWFkX2xvY2FsX3ZhbHVlcy5lbmQoKSkgeworICAgICAgdmFsdWVfcG9zID0KKyAg
ICAgICAgICB0aHJlYWRfbG9jYWxfdmFsdWVzCisgICAgICAgICAgICAgIC5pbnNlcnQoc3RkOjpt
YWtlX3BhaXIoCisgICAgICAgICAgICAgICAgICB0aHJlYWRfbG9jYWxfaW5zdGFuY2UsCisgICAg
ICAgICAgICAgICAgICBsaW5rZWRfcHRyPFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlPigKKyAg
ICAgICAgICAgICAgICAgICAgICB0aHJlYWRfbG9jYWxfaW5zdGFuY2UtPk5ld1ZhbHVlRm9yQ3Vy
cmVudFRocmVhZCgpKSkpCisgICAgICAgICAgICAgIC5maXJzdDsKKyAgICB9CisgICAgcmV0dXJu
IHZhbHVlX3Bvcy0+c2Vjb25kLmdldCgpOworICB9CisKKyAgc3RhdGljIHZvaWQgT25UaHJlYWRM
b2NhbERlc3Ryb3llZCgKKyAgICAgIGNvbnN0IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2Fs
X2luc3RhbmNlKSB7CisgICAgc3RkOjp2ZWN0b3I8bGlua2VkX3B0cjxUaHJlYWRMb2NhbFZhbHVl
SG9sZGVyQmFzZT4gPiB2YWx1ZV9ob2xkZXJzOworICAgIC8vIENsZWFuIHVwIHRoZSBUaHJlYWRM
b2NhbFZhbHVlcyBkYXRhIHN0cnVjdHVyZSB3aGlsZSBob2xkaW5nIHRoZSBsb2NrLCBidXQKKyAg
ICAvLyBkZWZlciB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhlIFRocmVhZExvY2FsVmFsdWVIb2xkZXJC
YXNlcy4KKyAgICB7CisgICAgICBNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKKyAgICAgIFRocmVh
ZElkVG9UaHJlYWRMb2NhbHMqIGNvbnN0IHRocmVhZF90b190aHJlYWRfbG9jYWxzID0KKyAgICAg
ICAgICBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKTsKKyAgICAgIGZvciAoVGhyZWFkSWRUb1Ro
cmVhZExvY2Fsczo6aXRlcmF0b3IgaXQgPQorICAgICAgICAgIHRocmVhZF90b190aHJlYWRfbG9j
YWxzLT5iZWdpbigpOworICAgICAgICAgIGl0ICE9IHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5l
bmQoKTsKKyAgICAgICAgICArK2l0KSB7CisgICAgICAgIFRocmVhZExvY2FsVmFsdWVzJiB0aHJl
YWRfbG9jYWxfdmFsdWVzID0gaXQtPnNlY29uZDsKKyAgICAgICAgVGhyZWFkTG9jYWxWYWx1ZXM6
Oml0ZXJhdG9yIHZhbHVlX3BvcyA9CisgICAgICAgICAgICB0aHJlYWRfbG9jYWxfdmFsdWVzLmZp
bmQodGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKKyAgICAgICAgaWYgKHZhbHVlX3BvcyAhPSB0aHJl
YWRfbG9jYWxfdmFsdWVzLmVuZCgpKSB7CisgICAgICAgICAgdmFsdWVfaG9sZGVycy5wdXNoX2Jh
Y2sodmFsdWVfcG9zLT5zZWNvbmQpOworICAgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMuZXJh
c2UodmFsdWVfcG9zKTsKKyAgICAgICAgICAvLyBUaGlzICdpZicgY2FuIG9ubHkgYmUgc3VjY2Vz
c2Z1bCBhdCBtb3N0IG9uY2UsIHNvIHRoZW9yZXRpY2FsbHkgd2UKKyAgICAgICAgICAvLyBjb3Vs
ZCBicmVhayBvdXQgb2YgdGhlIGxvb3AgaGVyZSwgYnV0IHdlIGRvbid0IGJvdGhlciBkb2luZyBz
by4KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICAvLyBPdXRzaWRlIHRoZSBsb2NrLCBs
ZXQgdGhlIGRlc3RydWN0b3IgZm9yICd2YWx1ZV9ob2xkZXJzJyBkZWFsbG9jYXRlIHRoZQorICAg
IC8vIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlcy4KKyAgfQorCisgIHN0YXRpYyB2b2lkIE9u
VGhyZWFkRXhpdChEV09SRCB0aHJlYWRfaWQpIHsKKyAgICBHVEVTVF9DSEVDS18odGhyZWFkX2lk
ICE9IDApIDw8IDo6R2V0TGFzdEVycm9yKCk7CisgICAgc3RkOjp2ZWN0b3I8bGlua2VkX3B0cjxU
aHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZT4gPiB2YWx1ZV9ob2xkZXJzOworICAgIC8vIENsZWFu
IHVwIHRoZSBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzIGRhdGEgc3RydWN0dXJlIHdoaWxlIGhvbGRp
bmcgdGhlCisgICAgLy8gbG9jaywgYnV0IGRlZmVyIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgVGhy
ZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2VzLgorICAgIHsKKyAgICAgIE11dGV4TG9jayBsb2NrKCZt
dXRleF8pOworICAgICAgVGhyZWFkSWRUb1RocmVhZExvY2FscyogY29uc3QgdGhyZWFkX3RvX3Ro
cmVhZF9sb2NhbHMgPQorICAgICAgICAgIEdldFRocmVhZExvY2Fsc01hcExvY2tlZCgpOworICAg
ICAgVGhyZWFkSWRUb1RocmVhZExvY2Fsczo6aXRlcmF0b3IgdGhyZWFkX2xvY2FsX3BvcyA9Cisg
ICAgICAgICAgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmZpbmQodGhyZWFkX2lkKTsKKyAgICAg
IGlmICh0aHJlYWRfbG9jYWxfcG9zICE9IHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5lbmQoKSkg
eworICAgICAgICBUaHJlYWRMb2NhbFZhbHVlcyYgdGhyZWFkX2xvY2FsX3ZhbHVlcyA9IHRocmVh
ZF9sb2NhbF9wb3MtPnNlY29uZDsKKyAgICAgICAgZm9yIChUaHJlYWRMb2NhbFZhbHVlczo6aXRl
cmF0b3IgdmFsdWVfcG9zID0KKyAgICAgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMuYmVnaW4o
KTsKKyAgICAgICAgICAgIHZhbHVlX3BvcyAhPSB0aHJlYWRfbG9jYWxfdmFsdWVzLmVuZCgpOwor
ICAgICAgICAgICAgKyt2YWx1ZV9wb3MpIHsKKyAgICAgICAgICB2YWx1ZV9ob2xkZXJzLnB1c2hf
YmFjayh2YWx1ZV9wb3MtPnNlY29uZCk7CisgICAgICAgIH0KKyAgICAgICAgdGhyZWFkX3RvX3Ro
cmVhZF9sb2NhbHMtPmVyYXNlKHRocmVhZF9sb2NhbF9wb3MpOworICAgICAgfQorICAgIH0KKyAg
ICAvLyBPdXRzaWRlIHRoZSBsb2NrLCBsZXQgdGhlIGRlc3RydWN0b3IgZm9yICd2YWx1ZV9ob2xk
ZXJzJyBkZWFsbG9jYXRlIHRoZQorICAgIC8vIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlcy4K
KyAgfQorCisgcHJpdmF0ZToKKyAgLy8gSW4gYSBwYXJ0aWN1bGFyIHRocmVhZCwgbWFwcyBhIFRo
cmVhZExvY2FsIG9iamVjdCB0byBpdHMgdmFsdWUuCisgIHR5cGVkZWYgc3RkOjptYXA8Y29uc3Qg
VGhyZWFkTG9jYWxCYXNlKiwKKyAgICAgICAgICAgICAgICAgICBsaW5rZWRfcHRyPFRocmVhZExv
Y2FsVmFsdWVIb2xkZXJCYXNlPiA+IFRocmVhZExvY2FsVmFsdWVzOworICAvLyBTdG9yZXMgYWxs
IFRocmVhZElkVG9UaHJlYWRMb2NhbHMgaGF2aW5nIHZhbHVlcyBpbiBhIHRocmVhZCwgaW5kZXhl
ZCBieQorICAvLyB0aHJlYWQncyBJRC4KKyAgdHlwZWRlZiBzdGQ6Om1hcDxEV09SRCwgVGhyZWFk
TG9jYWxWYWx1ZXM+IFRocmVhZElkVG9UaHJlYWRMb2NhbHM7CisKKyAgLy8gSG9sZHMgdGhlIHRo
cmVhZCBpZCBhbmQgdGhyZWFkIGhhbmRsZSB0aGF0IHdlIHBhc3MgZnJvbQorICAvLyBTdGFydFdh
dGNoZXJUaHJlYWRGb3IgdG8gV2F0Y2hlclRocmVhZEZ1bmMuCisgIHR5cGVkZWYgc3RkOjpwYWly
PERXT1JELCBIQU5ETEU+IFRocmVhZElkQW5kSGFuZGxlOworCisgIHN0YXRpYyB2b2lkIFN0YXJ0
V2F0Y2hlclRocmVhZEZvcihEV09SRCB0aHJlYWRfaWQpIHsKKyAgICAvLyBUaGUgcmV0dXJuZWQg
aGFuZGxlIHdpbGwgYmUga2VwdCBpbiB0aHJlYWRfbWFwIGFuZCBjbG9zZWQgYnkKKyAgICAvLyB3
YXRjaGVyX3RocmVhZCBpbiBXYXRjaGVyVGhyZWFkRnVuYy4KKyAgICBIQU5ETEUgdGhyZWFkID0g
OjpPcGVuVGhyZWFkKFNZTkNIUk9OSVpFIHwgVEhSRUFEX1FVRVJZX0lORk9STUFUSU9OLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aHJlYWRfaWQpOworICAgIEdURVNUX0NIRUNLXyh0aHJlYWQgIT0gTlVM
TCk7CisgICAgLy8gV2UgbmVlZCB0byBwYXNzIGEgdmFsaWQgdGhyZWFkIElEIHBvaW50ZXIgaW50
byBDcmVhdGVUaHJlYWQgZm9yIGl0CisgICAgLy8gdG8gd29yayBjb3JyZWN0bHkgdW5kZXIgV2lu
OTguCisgICAgRFdPUkQgd2F0Y2hlcl90aHJlYWRfaWQ7CisgICAgSEFORExFIHdhdGNoZXJfdGhy
ZWFkID0gOjpDcmVhdGVUaHJlYWQoCisgICAgICAgIE5VTEwsICAgLy8gRGVmYXVsdCBzZWN1cml0
eS4KKyAgICAgICAgMCwgICAgICAvLyBEZWZhdWx0IHN0YWNrIHNpemUKKyAgICAgICAgJlRocmVh
ZExvY2FsUmVnaXN0cnlJbXBsOjpXYXRjaGVyVGhyZWFkRnVuYywKKyAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxMUFZPSUQ+KG5ldyBUaHJlYWRJZEFuZEhhbmRsZSh0aHJlYWRfaWQsIHRocmVhZCkp
LAorICAgICAgICBDUkVBVEVfU1VTUEVOREVELAorICAgICAgICAmd2F0Y2hlcl90aHJlYWRfaWQp
OworICAgIEdURVNUX0NIRUNLXyh3YXRjaGVyX3RocmVhZCAhPSBOVUxMKTsKKyAgICAvLyBHaXZl
IHRoZSB3YXRjaGVyIHRocmVhZCB0aGUgc2FtZSBwcmlvcml0eSBhcyBvdXJzIHRvIGF2b2lkIGJl
aW5nCisgICAgLy8gYmxvY2tlZCBieSBpdC4KKyAgICA6OlNldFRocmVhZFByaW9yaXR5KHdhdGNo
ZXJfdGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgOjpHZXRUaHJlYWRQcmlvcml0eSg6
OkdldEN1cnJlbnRUaHJlYWQoKSkpOworICAgIDo6UmVzdW1lVGhyZWFkKHdhdGNoZXJfdGhyZWFk
KTsKKyAgICA6OkNsb3NlSGFuZGxlKHdhdGNoZXJfdGhyZWFkKTsKKyAgfQorCisgIC8vIE1vbml0
b3JzIGV4aXQgZnJvbSBhIGdpdmVuIHRocmVhZCBhbmQgbm90aWZpZXMgdGhvc2UKKyAgLy8gVGhy
ZWFkSWRUb1RocmVhZExvY2FscyBhYm91dCB0aHJlYWQgdGVybWluYXRpb24uCisgIHN0YXRpYyBE
V09SRCBXSU5BUEkgV2F0Y2hlclRocmVhZEZ1bmMoTFBWT0lEIHBhcmFtKSB7CisgICAgY29uc3Qg
VGhyZWFkSWRBbmRIYW5kbGUqIHRhaCA9CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VGhyZWFkSWRBbmRIYW5kbGUqPihwYXJhbSk7CisgICAgR1RFU1RfQ0hFQ0tfKAorICAgICAgICA6
OldhaXRGb3JTaW5nbGVPYmplY3QodGFoLT5zZWNvbmQsIElORklOSVRFKSA9PSBXQUlUX09CSkVD
VF8wKTsKKyAgICBPblRocmVhZEV4aXQodGFoLT5maXJzdCk7CisgICAgOjpDbG9zZUhhbmRsZSh0
YWgtPnNlY29uZCk7CisgICAgZGVsZXRlIHRhaDsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIC8v
IFJldHVybnMgbWFwIG9mIHRocmVhZCBsb2NhbCBpbnN0YW5jZXMuCisgIHN0YXRpYyBUaHJlYWRJ
ZFRvVGhyZWFkTG9jYWxzKiBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKSB7CisgICAgbXV0ZXhf
LkFzc2VydEhlbGQoKTsKKyAgICBNZW1vcnlJc05vdERlYWxsb2NhdGVkIG1lbW9yeV9pc19ub3Rf
ZGVhbGxvY2F0ZWQ7CisgICAgc3RhdGljIFRocmVhZElkVG9UaHJlYWRMb2NhbHMqIG1hcCA9IG5l
dyBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzKCk7CisgICAgcmV0dXJuIG1hcDsKKyAgfQorCisgIC8v
IFByb3RlY3RzIGFjY2VzcyB0byBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKSBhbmQgaXRzIHJl
dHVybiB2YWx1ZS4KKyAgc3RhdGljIE11dGV4IG11dGV4XzsKKyAgLy8gUHJvdGVjdHMgYWNjZXNz
IHRvIEdldFRocmVhZE1hcExvY2tlZCgpIGFuZCBpdHMgcmV0dXJuIHZhbHVlLgorICBzdGF0aWMg
TXV0ZXggdGhyZWFkX21hcF9tdXRleF87Cit9OworCitNdXRleCBUaHJlYWRMb2NhbFJlZ2lzdHJ5
SW1wbDo6bXV0ZXhfKE11dGV4OjprU3RhdGljTXV0ZXgpOworTXV0ZXggVGhyZWFkTG9jYWxSZWdp
c3RyeUltcGw6OnRocmVhZF9tYXBfbXV0ZXhfKE11dGV4OjprU3RhdGljTXV0ZXgpOworCitUaHJl
YWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogVGhyZWFkTG9jYWxSZWdpc3RyeTo6R2V0VmFsdWVPbkN1
cnJlbnRUaHJlYWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9p
bnN0YW5jZSkgeworICByZXR1cm4gVGhyZWFkTG9jYWxSZWdpc3RyeUltcGw6OkdldFZhbHVlT25D
dXJyZW50VGhyZWFkKAorICAgICAgdGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKK30KKwordm9pZCBU
aHJlYWRMb2NhbFJlZ2lzdHJ5OjpPblRocmVhZExvY2FsRGVzdHJveWVkKAorICAgICAgY29uc3Qg
VGhyZWFkTG9jYWxCYXNlKiB0aHJlYWRfbG9jYWxfaW5zdGFuY2UpIHsKKyAgVGhyZWFkTG9jYWxS
ZWdpc3RyeUltcGw6Ok9uVGhyZWFkTG9jYWxEZXN0cm95ZWQodGhyZWFkX2xvY2FsX2luc3RhbmNl
KTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFICYmIEdURVNUX09TX1dJTkRP
V1MKIAogI2lmIEdURVNUX1VTRVNfUE9TSVhfUkUKIApAQCAtMTgwLDIwICs2ODgsMjAgQEAgYm9v
bCBJc0luU2V0KGNoYXIgY2gsIGNvbnN0IGNoYXIqIHN0cikgewogLy8gUmV0dXJucyB0cnVlIGlm
ZiBjaCBiZWxvbmdzIHRvIHRoZSBnaXZlbiBjbGFzc2lmaWNhdGlvbi4gIFVubGlrZQogLy8gc2lt
aWxhciBmdW5jdGlvbnMgaW4gPGN0eXBlLmg+LCB0aGVzZSBhcmVuJ3QgYWZmZWN0ZWQgYnkgdGhl
CiAvLyBjdXJyZW50IGxvY2FsZS4KLWJvb2wgSXNEaWdpdChjaGFyIGNoKSB7IHJldHVybiAnMCcg
PD0gY2ggJiYgY2ggPD0gJzknOyB9Ci1ib29sIElzUHVuY3QoY2hhciBjaCkgeworYm9vbCBJc0Fz
Y2lpRGlnaXQoY2hhciBjaCkgeyByZXR1cm4gJzAnIDw9IGNoICYmIGNoIDw9ICc5JzsgfQorYm9v
bCBJc0FzY2lpUHVuY3QoY2hhciBjaCkgewogICByZXR1cm4gSXNJblNldChjaCwgIl4tIVwiIyQl
JicoKSorLC4vOjs8PT4/QFtcXF1fYHt8fX4iKTsKIH0KIGJvb2wgSXNSZXBlYXQoY2hhciBjaCkg
eyByZXR1cm4gSXNJblNldChjaCwgIj8qKyIpOyB9Ci1ib29sIElzV2hpdGVTcGFjZShjaGFyIGNo
KSB7IHJldHVybiBJc0luU2V0KGNoLCAiIFxmXG5cclx0XHYiKTsgfQotYm9vbCBJc1dvcmRDaGFy
KGNoYXIgY2gpIHsKK2Jvb2wgSXNBc2NpaVdoaXRlU3BhY2UoY2hhciBjaCkgeyByZXR1cm4gSXNJ
blNldChjaCwgIiBcZlxuXHJcdFx2Iik7IH0KK2Jvb2wgSXNBc2NpaVdvcmRDaGFyKGNoYXIgY2gp
IHsKICAgcmV0dXJuICgnYScgPD0gY2ggJiYgY2ggPD0gJ3onKSB8fCAoJ0EnIDw9IGNoICYmIGNo
IDw9ICdaJykgfHwKICAgICAgICgnMCcgPD0gY2ggJiYgY2ggPD0gJzknKSB8fCBjaCA9PSAnXyc7
CiB9CiAKIC8vIFJldHVybnMgdHJ1ZSBpZmYgIlxcYyIgaXMgYSBzdXBwb3J0ZWQgZXNjYXBlIHNl
cXVlbmNlLgogYm9vbCBJc1ZhbGlkRXNjYXBlKGNoYXIgYykgewotICByZXR1cm4gKElzUHVuY3Qo
YykgfHwgSXNJblNldChjLCAiZERmbnJzU3R2d1ciKSk7CisgIHJldHVybiAoSXNBc2NpaVB1bmN0
KGMpIHx8IElzSW5TZXQoYywgImREZm5yc1N0dndXIikpOwogfQogCiAvLyBSZXR1cm5zIHRydWUg
aWZmIHRoZSBnaXZlbiBhdG9tIChzcGVjaWZpZWQgYnkgZXNjYXBlZCBhbmQgcGF0dGVybikKQEAg
LTIwMSwyNiArNzA5LDI2IEBAIGJvb2wgSXNWYWxpZEVzY2FwZShjaGFyIGMpIHsKIGJvb2wgQXRv
bU1hdGNoZXNDaGFyKGJvb2wgZXNjYXBlZCwgY2hhciBwYXR0ZXJuX2NoYXIsIGNoYXIgY2gpIHsK
ICAgaWYgKGVzY2FwZWQpIHsgIC8vICJcXHAiIHdoZXJlIHAgaXMgcGF0dGVybl9jaGFyLgogICAg
IHN3aXRjaCAocGF0dGVybl9jaGFyKSB7Ci0gICAgICBjYXNlICdkJzogcmV0dXJuIElzRGlnaXQo
Y2gpOwotICAgICAgY2FzZSAnRCc6IHJldHVybiAhSXNEaWdpdChjaCk7CisgICAgICBjYXNlICdk
JzogcmV0dXJuIElzQXNjaWlEaWdpdChjaCk7CisgICAgICBjYXNlICdEJzogcmV0dXJuICFJc0Fz
Y2lpRGlnaXQoY2gpOwogICAgICAgY2FzZSAnZic6IHJldHVybiBjaCA9PSAnXGYnOwogICAgICAg
Y2FzZSAnbic6IHJldHVybiBjaCA9PSAnXG4nOwogICAgICAgY2FzZSAncic6IHJldHVybiBjaCA9
PSAnXHInOwotICAgICAgY2FzZSAncyc6IHJldHVybiBJc1doaXRlU3BhY2UoY2gpOwotICAgICAg
Y2FzZSAnUyc6IHJldHVybiAhSXNXaGl0ZVNwYWNlKGNoKTsKKyAgICAgIGNhc2UgJ3MnOiByZXR1
cm4gSXNBc2NpaVdoaXRlU3BhY2UoY2gpOworICAgICAgY2FzZSAnUyc6IHJldHVybiAhSXNBc2Np
aVdoaXRlU3BhY2UoY2gpOwogICAgICAgY2FzZSAndCc6IHJldHVybiBjaCA9PSAnXHQnOwogICAg
ICAgY2FzZSAndic6IHJldHVybiBjaCA9PSAnXHYnOwotICAgICAgY2FzZSAndyc6IHJldHVybiBJ
c1dvcmRDaGFyKGNoKTsKLSAgICAgIGNhc2UgJ1cnOiByZXR1cm4gIUlzV29yZENoYXIoY2gpOwor
ICAgICAgY2FzZSAndyc6IHJldHVybiBJc0FzY2lpV29yZENoYXIoY2gpOworICAgICAgY2FzZSAn
Vyc6IHJldHVybiAhSXNBc2NpaVdvcmRDaGFyKGNoKTsKICAgICB9Ci0gICAgcmV0dXJuIElzUHVu
Y3QocGF0dGVybl9jaGFyKSAmJiBwYXR0ZXJuX2NoYXIgPT0gY2g7CisgICAgcmV0dXJuIElzQXNj
aWlQdW5jdChwYXR0ZXJuX2NoYXIpICYmIHBhdHRlcm5fY2hhciA9PSBjaDsKICAgfQogCiAgIHJl
dHVybiAocGF0dGVybl9jaGFyID09ICcuJyAmJiBjaCAhPSAnXG4nKSB8fCBwYXR0ZXJuX2NoYXIg
PT0gY2g7CiB9CiAKIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IFZhbGlkYXRlUmVnZXgoKSB0
byBmb3JtYXQgZXJyb3IgbWVzc2FnZXMuCi1TdHJpbmcgRm9ybWF0UmVnZXhTeW50YXhFcnJvcihj
b25zdCBjaGFyKiByZWdleCwgaW50IGluZGV4KSB7CitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0
UmVnZXhTeW50YXhFcnJvcihjb25zdCBjaGFyKiByZWdleCwgaW50IGluZGV4KSB7CiAgIHJldHVy
biAoTWVzc2FnZSgpIDw8ICJTeW50YXggZXJyb3IgYXQgaW5kZXggIiA8PCBpbmRleAogICAgICAg
ICAgIDw8ICIgaW4gc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiBcIiIgPDwgcmVnZXggPDwgIlwi
OiAiKS5HZXRTdHJpbmcoKTsKIH0KQEAgLTIyOSw3ICs3MzcsNyBAQCBTdHJpbmcgRm9ybWF0UmVn
ZXhTeW50YXhFcnJvcihjb25zdCBjaGFyKiByZWdleCwgaW50IGluZGV4KSB7CiAvLyBvdGhlcndp
c2UgcmV0dXJucyB0cnVlLgogYm9vbCBWYWxpZGF0ZVJlZ2V4KGNvbnN0IGNoYXIqIHJlZ2V4KSB7
CiAgIGlmIChyZWdleCA9PSBOVUxMKSB7Ci0gICAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IGZp
eCB0aGUgc291cmNlIGZpbGUgbG9jYXRpb24gaW4gdGhlCisgICAgLy8gRklYTUU6IGZpeCB0aGUg
c291cmNlIGZpbGUgbG9jYXRpb24gaW4gdGhlCiAgICAgLy8gYXNzZXJ0aW9uIGZhaWx1cmVzIHRv
IG1hdGNoIHdoZXJlIHRoZSByZWdleCBpcyB1c2VkIGluIHVzZXIKICAgICAvLyBjb2RlLgogICAg
IEFERF9GQUlMVVJFKCkgPDwgIk5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxlIHJlZ3VsYXIgZXhw
cmVzc2lvbi4iOwpAQCAtNDIyLDYgKzkzMCwzNyBAQCB2b2lkIFJFOjpJbml0KGNvbnN0IGNoYXIq
IHJlZ2V4KSB7CiAKICNlbmRpZiAgLy8gR1RFU1RfVVNFU19QT1NJWF9SRQogCitjb25zdCBjaGFy
IGtVbmtub3duRmlsZVtdID0gInVua25vd24gZmlsZSI7CisKKy8vIEZvcm1hdHMgYSBzb3VyY2Ug
ZmlsZSBwYXRoIGFuZCBhIGxpbmUgbnVtYmVyIGFzIHRoZXkgd291bGQgYXBwZWFyCisvLyBpbiBh
biBlcnJvciBtZXNzYWdlIGZyb20gdGhlIGNvbXBpbGVyIHVzZWQgdG8gY29tcGlsZSB0aGlzIGNv
ZGUuCitHVEVTVF9BUElfIDo6c3RkOjpzdHJpbmcgRm9ybWF0RmlsZUxvY2F0aW9uKGNvbnN0IGNo
YXIqIGZpbGUsIGludCBsaW5lKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbGVfbmFtZShmaWxl
ID09IE5VTEwgPyBrVW5rbm93bkZpbGUgOiBmaWxlKTsKKworICBpZiAobGluZSA8IDApIHsKKyAg
ICByZXR1cm4gZmlsZV9uYW1lICsgIjoiOworICB9CisjaWZkZWYgX01TQ19WRVIKKyAgcmV0dXJu
IGZpbGVfbmFtZSArICIoIiArIFN0cmVhbWFibGVUb1N0cmluZyhsaW5lKSArICIpOiI7CisjZWxz
ZQorICByZXR1cm4gZmlsZV9uYW1lICsgIjoiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGxpbmUpICsg
IjoiOworI2VuZGlmICAvLyBfTVNDX1ZFUgorfQorCisvLyBGb3JtYXRzIGEgZmlsZSBsb2NhdGlv
biBmb3IgY29tcGlsZXItaW5kZXBlbmRlbnQgWE1MIG91dHB1dC4KKy8vIEFsdGhvdWdoIHRoaXMg
ZnVuY3Rpb24gaXMgbm90IHBsYXRmb3JtIGRlcGVuZGVudCwgd2UgcHV0IGl0IG5leHQgdG8KKy8v
IEZvcm1hdEZpbGVMb2NhdGlvbiBpbiBvcmRlciB0byBjb250cmFzdCB0aGUgdHdvIGZ1bmN0aW9u
cy4KKy8vIE5vdGUgdGhhdCBGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uKCkg
ZG9lcyBOT1QgYXBwZW5kIGNvbG9uCisvLyB0byB0aGUgZmlsZSBsb2NhdGlvbiBpdCBwcm9kdWNl
cywgdW5saWtlIEZvcm1hdEZpbGVMb2NhdGlvbigpLgorR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5n
IEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oCisgICAgY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsZV9uYW1lKGZpbGUgPT0g
TlVMTCA/IGtVbmtub3duRmlsZSA6IGZpbGUpOworCisgIGlmIChsaW5lIDwgMCkKKyAgICByZXR1
cm4gZmlsZV9uYW1lOworICBlbHNlCisgICAgcmV0dXJuIGZpbGVfbmFtZSArICI6IiArIFN0cmVh
bWFibGVUb1N0cmluZyhsaW5lKTsKK30KIAogR1Rlc3RMb2c6OkdUZXN0TG9nKEdUZXN0TG9nU2V2
ZXJpdHkgc2V2ZXJpdHksIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKQogICAgIDogc2V2ZXJp
dHlfKHNldmVyaXR5KSB7CkBAIC00NDEsMjEgKzk4MCwxOSBAQCBHVGVzdExvZzo6fkdUZXN0TG9n
KCkgewogICAgIHBvc2l4OjpBYm9ydCgpOwogICB9CiB9CisKIC8vIERpc2FibGUgTWljcm9zb2Z0
IGRlcHJlY2F0aW9uIHdhcm5pbmdzIGZvciBQT1NJWCBmdW5jdGlvbnMgY2FsbGVkIGZyb20KIC8v
IHRoaXMgY2xhc3MgKGNyZWF0LCBkdXAsIGR1cDIsIGFuZCBjbG9zZSkKLSNpZmRlZiBfTVNDX1ZF
UgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDk5NikK
LSNlbmRpZiAgLy8gX01TQ19WRVIKK0dURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVTSF8o
KQogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNpZiBHVEVTVF9IQVNfU1RS
RUFNX1JFRElSRUNUSU9OCiAKIC8vIE9iamVjdCB0aGF0IGNhcHR1cmVzIGFuIG91dHB1dCBzdHJl
YW0gKHN0ZG91dC9zdGRlcnIpLgogY2xhc3MgQ2FwdHVyZWRTdHJlYW0gewogIHB1YmxpYzoKICAg
Ly8gVGhlIGN0b3IgcmVkaXJlY3RzIHRoZSBzdHJlYW0gdG8gYSB0ZW1wb3JhcnkgZmlsZS4KLSAg
Q2FwdHVyZWRTdHJlYW0oaW50IGZkKSA6IGZkXyhmZCksIHVuY2FwdHVyZWRfZmRfKGR1cChmZCkp
IHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisgIGV4cGxpY2l0IENhcHR1cmVkU3RyZWFtKGludCBm
ZCkgOiBmZF8oZmQpLCB1bmNhcHR1cmVkX2ZkXyhkdXAoZmQpKSB7CisjIGlmIEdURVNUX09TX1dJ
TkRPV1MKICAgICBjaGFyIHRlbXBfZGlyX3BhdGhbTUFYX1BBVEggKyAxXSA9IHsgJ1wwJyB9OyAg
Ly8gTk9MSU5UCiAgICAgY2hhciB0ZW1wX2ZpbGVfcGF0aFtNQVhfUEFUSCArIDFdID0geyAnXDAn
IH07ICAvLyBOT0xJTlQKIApAQCAtNDcwLDE0ICsxMDA3LDMzIEBAIGNsYXNzIENhcHR1cmVkU3Ry
ZWFtIHsKICAgICBHVEVTVF9DSEVDS18oY2FwdHVyZWRfZmQgIT0gLTEpIDw8ICJVbmFibGUgdG8g
b3BlbiB0ZW1wb3JhcnkgZmlsZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCB0ZW1wX2ZpbGVfcGF0aDsKICAgICBmaWxlbmFtZV8gPSB0ZW1wX2ZpbGVfcGF0aDsKLSNl
bHNlCi0gICAgLy8gVGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCBhIHRlc3QgaGFzIHdyaXRlIGFj
Y2VzcyB0byB0aGUKLSAgICAvLyBjdXJyZW50IGRpcmVjdG9yeSwgc28gd2UgY3JlYXRlIHRoZSB0
ZW1wb3JhcnkgZmlsZSBpbiB0aGUgL3RtcAotICAgIC8vIGRpcmVjdG9yeSBpbnN0ZWFkLgorIyBl
bHNlCisgICAgLy8gVGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCBhIHRlc3QgaGFzIHdyaXRlIGFj
Y2VzcyB0byB0aGUgY3VycmVudAorICAgIC8vIGRpcmVjdG9yeSwgc28gd2UgY3JlYXRlIHRoZSB0
ZW1wb3JhcnkgZmlsZSBpbiB0aGUgL3RtcCBkaXJlY3RvcnkKKyAgICAvLyBpbnN0ZWFkLiBXZSB1
c2UgL3RtcCBvbiBtb3N0IHN5c3RlbXMsIGFuZCAvc2RjYXJkIG9uIEFuZHJvaWQuCisgICAgLy8g
VGhhdCdzIGJlY2F1c2UgQW5kcm9pZCBkb2Vzbid0IGhhdmUgL3RtcC4KKyMgIGlmIEdURVNUX09T
X0xJTlVYX0FORFJPSUQKKyAgICAvLyBOb3RlOiBBbmRyb2lkIGFwcGxpY2F0aW9ucyBhcmUgZXhw
ZWN0ZWQgdG8gY2FsbCB0aGUgZnJhbWV3b3JrJ3MKKyAgICAvLyBDb250ZXh0LmdldEV4dGVybmFs
U3RvcmFnZURpcmVjdG9yeSgpIG1ldGhvZCB0aHJvdWdoIEpOSSB0byBnZXQKKyAgICAvLyB0aGUg
bG9jYXRpb24gb2YgdGhlIHdvcmxkLXdyaXRhYmxlIFNEIENhcmQgZGlyZWN0b3J5LiBIb3dldmVy
LAorICAgIC8vIHRoaXMgcmVxdWlyZXMgYSBDb250ZXh0IGhhbmRsZSwgd2hpY2ggY2Fubm90IGJl
IHJldHJpZXZlZAorICAgIC8vIGdsb2JhbGx5IGZyb20gbmF0aXZlIGNvZGUuIERvaW5nIHNvIGFs
c28gcHJlY2x1ZGVzIHJ1bm5pbmcgdGhlCisgICAgLy8gY29kZSBhcyBwYXJ0IG9mIGEgcmVndWxh
ciBzdGFuZGFsb25lIGV4ZWN1dGFibGUsIHdoaWNoIGRvZXNuJ3QKKyAgICAvLyBydW4gaW4gYSBE
YWx2aWsgcHJvY2VzcyAoZS5nLiB3aGVuIHJ1bm5pbmcgaXQgdGhyb3VnaCAnYWRiIHNoZWxsJyku
CisgICAgLy8KKyAgICAvLyBUaGUgbG9jYXRpb24gL3NkY2FyZCBpcyBkaXJlY3RseSBhY2Nlc3Np
YmxlIGZyb20gbmF0aXZlIGNvZGUKKyAgICAvLyBhbmQgaXMgdGhlIG9ubHkgbG9jYXRpb24gKHVu
b2ZmaWNpYWxseSkgc3VwcG9ydGVkIGJ5IHRoZSBBbmRyb2lkCisgICAgLy8gdGVhbS4gSXQncyBn
ZW5lcmFsbHkgYSBzeW1saW5rIHRvIHRoZSByZWFsIFNEIENhcmQgbW91bnQgcG9pbnQKKyAgICAv
LyB3aGljaCBjYW4gYmUgL21udC9zZGNhcmQsIC9tbnQvc2RjYXJkMCwgL3N5c3RlbS9tZWRpYS9z
ZGNhcmQsIG9yCisgICAgLy8gb3RoZXIgT0VNLWN1c3RvbWl6ZWQgbG9jYXRpb25zLiBOZXZlciBy
ZWx5IG9uIHRoZXNlLCBhbmQgYWx3YXlzCisgICAgLy8gdXNlIC9zZGNhcmQuCisgICAgY2hhciBu
YW1lX3RlbXBsYXRlW10gPSAiL3NkY2FyZC9ndGVzdF9jYXB0dXJlZF9zdHJlYW0uWFhYWFhYIjsK
KyMgIGVsc2UKICAgICBjaGFyIG5hbWVfdGVtcGxhdGVbXSA9ICIvdG1wL2NhcHR1cmVkX3N0cmVh
bS5YWFhYWFgiOworIyAgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYX0FORFJPSUQKICAgICBjb25z
dCBpbnQgY2FwdHVyZWRfZmQgPSBta3N0ZW1wKG5hbWVfdGVtcGxhdGUpOwogICAgIGZpbGVuYW1l
XyA9IG5hbWVfdGVtcGxhdGU7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYg
IC8vIEdURVNUX09TX1dJTkRPV1MKICAgICBmZmx1c2goTlVMTCk7CiAgICAgZHVwMihjYXB0dXJl
ZF9mZCwgZmRfKTsKICAgICBjbG9zZShjYXB0dXJlZF9mZCk7CkBAIC00ODcsNyArMTA0Myw3IEBA
IGNsYXNzIENhcHR1cmVkU3RyZWFtIHsKICAgICByZW1vdmUoZmlsZW5hbWVfLmNfc3RyKCkpOwog
ICB9CiAKLSAgU3RyaW5nIEdldENhcHR1cmVkU3RyaW5nKCkgeworICBzdGQ6OnN0cmluZyBHZXRD
YXB0dXJlZFN0cmluZygpIHsKICAgICBpZiAodW5jYXB0dXJlZF9mZF8gIT0gLTEpIHsKICAgICAg
IC8vIFJlc3RvcmVzIHRoZSBvcmlnaW5hbCBzdHJlYW0uCiAgICAgICBmZmx1c2goTlVMTCk7CkBA
IC00OTcsMTggKzEwNTMsMTIgQEAgY2xhc3MgQ2FwdHVyZWRTdHJlYW0gewogICAgIH0KIAogICAg
IEZJTEUqIGNvbnN0IGZpbGUgPSBwb3NpeDo6Rk9wZW4oZmlsZW5hbWVfLmNfc3RyKCksICJyIik7
Ci0gICAgY29uc3QgU3RyaW5nIGNvbnRlbnQgPSBSZWFkRW50aXJlRmlsZShmaWxlKTsKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyBjb250ZW50ID0gUmVhZEVudGlyZUZpbGUoZmlsZSk7CiAgICAgcG9z
aXg6OkZDbG9zZShmaWxlKTsKICAgICByZXR1cm4gY29udGVudDsKICAgfQogCiAgcHJpdmF0ZToK
LSAgLy8gUmVhZHMgdGhlIGVudGlyZSBjb250ZW50IG9mIGEgZmlsZSBhcyBhIFN0cmluZy4KLSAg
c3RhdGljIFN0cmluZyBSZWFkRW50aXJlRmlsZShGSUxFKiBmaWxlKTsKLQotICAvLyBSZXR1cm5z
IHRoZSBzaXplIChpbiBieXRlcykgb2YgYSBmaWxlLgotICBzdGF0aWMgc2l6ZV90IEdldEZpbGVT
aXplKEZJTEUqIGZpbGUpOwotCiAgIGNvbnN0IGludCBmZF87ICAvLyBBIHN0cmVhbSB0byBjYXB0
dXJlLgogICBpbnQgdW5jYXB0dXJlZF9mZF87CiAgIC8vIE5hbWUgb2YgdGhlIHRlbXBvcmFyeSBm
aWxlIGhvbGRpbmcgdGhlIHN0ZGVyciBvdXRwdXQuCkBAIC01MTcsNDQgKzEwNjcsMTQgQEAgY2xh
c3MgQ2FwdHVyZWRTdHJlYW0gewogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKENh
cHR1cmVkU3RyZWFtKTsKIH07CiAKLS8vIFJldHVybnMgdGhlIHNpemUgKGluIGJ5dGVzKSBvZiBh
IGZpbGUuCi1zaXplX3QgQ2FwdHVyZWRTdHJlYW06OkdldEZpbGVTaXplKEZJTEUqIGZpbGUpIHsK
LSAgZnNlZWsoZmlsZSwgMCwgU0VFS19FTkQpOwotICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90
PihmdGVsbChmaWxlKSk7Ci19Ci0KLS8vIFJlYWRzIHRoZSBlbnRpcmUgY29udGVudCBvZiBhIGZp
bGUgYXMgYSBzdHJpbmcuCi1TdHJpbmcgQ2FwdHVyZWRTdHJlYW06OlJlYWRFbnRpcmVGaWxlKEZJ
TEUqIGZpbGUpIHsKLSAgY29uc3Qgc2l6ZV90IGZpbGVfc2l6ZSA9IEdldEZpbGVTaXplKGZpbGUp
OwotICBjaGFyKiBjb25zdCBidWZmZXIgPSBuZXcgY2hhcltmaWxlX3NpemVdOwotCi0gIHNpemVf
dCBieXRlc19sYXN0X3JlYWQgPSAwOyAgLy8gIyBvZiBieXRlcyByZWFkIGluIHRoZSBsYXN0IGZy
ZWFkKCkKLSAgc2l6ZV90IGJ5dGVzX3JlYWQgPSAwOyAgICAgICAvLyAjIG9mIGJ5dGVzIHJlYWQg
c28gZmFyCi0KLSAgZnNlZWsoZmlsZSwgMCwgU0VFS19TRVQpOwotCi0gIC8vIEtlZXBzIHJlYWRp
bmcgdGhlIGZpbGUgdW50aWwgd2UgY2Fubm90IHJlYWQgZnVydGhlciBvciB0aGUKLSAgLy8gcHJl
LWRldGVybWluZWQgZmlsZSBzaXplIGlzIHJlYWNoZWQuCi0gIGRvIHsKLSAgICBieXRlc19sYXN0
X3JlYWQgPSBmcmVhZChidWZmZXIrYnl0ZXNfcmVhZCwgMSwgZmlsZV9zaXplLWJ5dGVzX3JlYWQs
IGZpbGUpOwotICAgIGJ5dGVzX3JlYWQgKz0gYnl0ZXNfbGFzdF9yZWFkOwotICB9IHdoaWxlIChi
eXRlc19sYXN0X3JlYWQgPiAwICYmIGJ5dGVzX3JlYWQgPCBmaWxlX3NpemUpOwotCi0gIGNvbnN0
IFN0cmluZyBjb250ZW50KGJ1ZmZlciwgYnl0ZXNfcmVhZCk7Ci0gIGRlbGV0ZVtdIGJ1ZmZlcjsK
LQotICByZXR1cm4gY29udGVudDsKLX0KLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5p
bmcocG9wKQotI2VuZGlmICAvLyBfTVNDX1ZFUgorR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRF
RF9QT1BfKCkKIAogc3RhdGljIENhcHR1cmVkU3RyZWFtKiBnX2NhcHR1cmVkX3N0ZGVyciA9IE5V
TEw7CiBzdGF0aWMgQ2FwdHVyZWRTdHJlYW0qIGdfY2FwdHVyZWRfc3Rkb3V0ID0gTlVMTDsKIAog
Ly8gU3RhcnRzIGNhcHR1cmluZyBhbiBvdXRwdXQgc3RyZWFtIChzdGRvdXQvc3RkZXJyKS4KLXZv
aWQgQ2FwdHVyZVN0cmVhbShpbnQgZmQsIGNvbnN0IGNoYXIqIHN0cmVhbV9uYW1lLCBDYXB0dXJl
ZFN0cmVhbSoqIHN0cmVhbSkgeworc3RhdGljIHZvaWQgQ2FwdHVyZVN0cmVhbShpbnQgZmQsIGNv
bnN0IGNoYXIqIHN0cmVhbV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICBDYXB0dXJl
ZFN0cmVhbSoqIHN0cmVhbSkgewogICBpZiAoKnN0cmVhbSAhPSBOVUxMKSB7CiAgICAgR1RFU1Rf
TE9HXyhGQVRBTCkgPDwgIk9ubHkgb25lICIgPDwgc3RyZWFtX25hbWUKICAgICAgICAgICAgICAg
ICAgICAgICA8PCAiIGNhcHR1cmVyIGNhbiBleGlzdCBhdCBhIHRpbWUuIjsKQEAgLTU2Myw4ICsx
MDgzLDggQEAgdm9pZCBDYXB0dXJlU3RyZWFtKGludCBmZCwgY29uc3QgY2hhciogc3RyZWFtX25h
bWUsIENhcHR1cmVkU3RyZWFtKiogc3RyZWFtKSB7CiB9CiAKIC8vIFN0b3BzIGNhcHR1cmluZyB0
aGUgb3V0cHV0IHN0cmVhbSBhbmQgcmV0dXJucyB0aGUgY2FwdHVyZWQgc3RyaW5nLgotU3RyaW5n
IEdldENhcHR1cmVkU3RyZWFtKENhcHR1cmVkU3RyZWFtKiogY2FwdHVyZWRfc3RyZWFtKSB7Ci0g
IGNvbnN0IFN0cmluZyBjb250ZW50ID0gKCpjYXB0dXJlZF9zdHJlYW0pLT5HZXRDYXB0dXJlZFN0
cmluZygpOworc3RhdGljIHN0ZDo6c3RyaW5nIEdldENhcHR1cmVkU3RyZWFtKENhcHR1cmVkU3Ry
ZWFtKiogY2FwdHVyZWRfc3RyZWFtKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvbnRlbnQgPSAo
KmNhcHR1cmVkX3N0cmVhbSktPkdldENhcHR1cmVkU3RyaW5nKCk7CiAKICAgZGVsZXRlICpjYXB0
dXJlZF9zdHJlYW07CiAgICpjYXB0dXJlZF9zdHJlYW0gPSBOVUxMOwpAQCAtNTgzLDIxICsxMTAz
LDc5IEBAIHZvaWQgQ2FwdHVyZVN0ZGVycigpIHsKIH0KIAogLy8gU3RvcHMgY2FwdHVyaW5nIHN0
ZG91dCBhbmQgcmV0dXJucyB0aGUgY2FwdHVyZWQgc3RyaW5nLgotU3RyaW5nIEdldENhcHR1cmVk
U3Rkb3V0KCkgeyByZXR1cm4gR2V0Q2FwdHVyZWRTdHJlYW0oJmdfY2FwdHVyZWRfc3Rkb3V0KTsg
fQorc3RkOjpzdHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKSB7CisgIHJldHVybiBHZXRDYXB0dXJl
ZFN0cmVhbSgmZ19jYXB0dXJlZF9zdGRvdXQpOworfQogCiAvLyBTdG9wcyBjYXB0dXJpbmcgc3Rk
ZXJyIGFuZCByZXR1cm5zIHRoZSBjYXB0dXJlZCBzdHJpbmcuCi1TdHJpbmcgR2V0Q2FwdHVyZWRT
dGRlcnIoKSB7IHJldHVybiBHZXRDYXB0dXJlZFN0cmVhbSgmZ19jYXB0dXJlZF9zdGRlcnIpOyB9
CitzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0ZGVycigpIHsKKyAgcmV0dXJuIEdldENhcHR1cmVk
U3RyZWFtKCZnX2NhcHR1cmVkX3N0ZGVycik7Cit9CiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NU
UkVBTV9SRURJUkVDVElPTl8KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElP
TgorCisKKworCisKK3NpemVfdCBHZXRGaWxlU2l6ZShGSUxFKiBmaWxlKSB7CisgIGZzZWVrKGZp
bGUsIDAsIFNFRUtfRU5EKTsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oZnRlbGwoZmls
ZSkpOworfQorCitzdGQ6OnN0cmluZyBSZWFkRW50aXJlRmlsZShGSUxFKiBmaWxlKSB7CisgIGNv
bnN0IHNpemVfdCBmaWxlX3NpemUgPSBHZXRGaWxlU2l6ZShmaWxlKTsKKyAgY2hhciogY29uc3Qg
YnVmZmVyID0gbmV3IGNoYXJbZmlsZV9zaXplXTsKKworICBzaXplX3QgYnl0ZXNfbGFzdF9yZWFk
ID0gMDsgIC8vICMgb2YgYnl0ZXMgcmVhZCBpbiB0aGUgbGFzdCBmcmVhZCgpCisgIHNpemVfdCBi
eXRlc19yZWFkID0gMDsgICAgICAgLy8gIyBvZiBieXRlcyByZWFkIHNvIGZhcgorCisgIGZzZWVr
KGZpbGUsIDAsIFNFRUtfU0VUKTsKKworICAvLyBLZWVwcyByZWFkaW5nIHRoZSBmaWxlIHVudGls
IHdlIGNhbm5vdCByZWFkIGZ1cnRoZXIgb3IgdGhlCisgIC8vIHByZS1kZXRlcm1pbmVkIGZpbGUg
c2l6ZSBpcyByZWFjaGVkLgorICBkbyB7CisgICAgYnl0ZXNfbGFzdF9yZWFkID0gZnJlYWQoYnVm
ZmVyK2J5dGVzX3JlYWQsIDEsIGZpbGVfc2l6ZS1ieXRlc19yZWFkLCBmaWxlKTsKKyAgICBieXRl
c19yZWFkICs9IGJ5dGVzX2xhc3RfcmVhZDsKKyAgfSB3aGlsZSAoYnl0ZXNfbGFzdF9yZWFkID4g
MCAmJiBieXRlc19yZWFkIDwgZmlsZV9zaXplKTsKKworICBjb25zdCBzdGQ6OnN0cmluZyBjb250
ZW50KGJ1ZmZlciwgYnl0ZXNfcmVhZCk7CisgIGRlbGV0ZVtdIGJ1ZmZlcjsKKworICByZXR1cm4g
Y29udGVudDsKK30KIAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCitzdGF0aWMgY29uc3Qgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+KiBnX2luamVjdGVkX3Rlc3RfYXJndnMgPSBOVUxMOyAgLy8g
T3duZWQuCiAKLS8vIEEgY29weSBvZiBhbGwgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4gIFNldCBi
eSBJbml0R29vZ2xlVGVzdCgpLgotOjpzdGQ6OnZlY3RvcjxTdHJpbmc+IGdfYXJndnM7CitzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0SW5qZWN0YWJsZUFyZ3ZzKCkgeworICBpZiAoZ19pbmpl
Y3RlZF90ZXN0X2FyZ3ZzICE9IE5VTEwpIHsKKyAgICByZXR1cm4gKmdfaW5qZWN0ZWRfdGVzdF9h
cmd2czsKKyAgfQorICByZXR1cm4gR2V0QXJndnMoKTsKK30KKwordm9pZCBTZXRJbmplY3RhYmxl
QXJndnMoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiBuZXdfYXJndnMpIHsKKyAgaWYg
KGdfaW5qZWN0ZWRfdGVzdF9hcmd2cyAhPSBuZXdfYXJndnMpIGRlbGV0ZSBnX2luamVjdGVkX3Rl
c3RfYXJndnM7CisgIGdfaW5qZWN0ZWRfdGVzdF9hcmd2cyA9IG5ld19hcmd2czsKK30KIAotLy8g
UmV0dXJucyB0aGUgY29tbWFuZCBsaW5lIGFzIGEgdmVjdG9yIG9mIHN0cmluZ3MuCi1jb25zdCA6
OnN0ZDo6dmVjdG9yPFN0cmluZz4mIEdldEFyZ3ZzKCkgeyByZXR1cm4gZ19hcmd2czsgfQordm9p
ZCBTZXRJbmplY3RhYmxlQXJndnMoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBuZXdf
YXJndnMpIHsKKyAgU2V0SW5qZWN0YWJsZUFyZ3ZzKAorICAgICAgbmV3IHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPihuZXdfYXJndnMuYmVnaW4oKSwgbmV3X2FyZ3ZzLmVuZCgpKSk7Cit9CisKKyNp
ZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwordm9pZCBTZXRJbmplY3RhYmxlQXJndnMoY29uc3Qg
c3RkOjp2ZWN0b3I8IDo6c3RyaW5nPiYgbmV3X2FyZ3ZzKSB7CisgIFNldEluamVjdGFibGVBcmd2
cygKKyAgICAgIG5ldyBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4obmV3X2FyZ3ZzLmJlZ2luKCks
IG5ld19hcmd2cy5lbmQoKSkpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklO
RwogCit2b2lkIENsZWFySW5qZWN0YWJsZUFyZ3ZzKCkgeworICBkZWxldGUgZ19pbmplY3RlZF90
ZXN0X2FyZ3ZzOworICBnX2luamVjdGVkX3Rlc3RfYXJndnMgPSBOVUxMOworfQogI2VuZGlmICAv
LyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCiAjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKQEAg
LTYxMiwxMyArMTE5MCwxMyBAQCB2b2lkIEFib3J0KCkgewogLy8gUmV0dXJucyB0aGUgbmFtZSBv
ZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgY29ycmVzcG9uZGluZyB0byB0aGUKIC8vIGdpdmVu
IGZsYWcuICBGb3IgZXhhbXBsZSwgRmxhZ1RvRW52VmFyKCJmb28iKSB3aWxsIHJldHVybgogLy8g
IkdURVNUX0ZPTyIgaW4gdGhlIG9wZW4tc291cmNlIHZlcnNpb24uCi1zdGF0aWMgU3RyaW5nIEZs
YWdUb0VudlZhcihjb25zdCBjaGFyKiBmbGFnKSB7Ci0gIGNvbnN0IFN0cmluZyBmdWxsX2ZsYWcg
PQorc3RhdGljIHN0ZDo6c3RyaW5nIEZsYWdUb0VudlZhcihjb25zdCBjaGFyKiBmbGFnKSB7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGZ1bGxfZmxhZyA9CiAgICAgICAoTWVzc2FnZSgpIDw8IEdURVNU
X0ZMQUdfUFJFRklYXyA8PCBmbGFnKS5HZXRTdHJpbmcoKTsKIAogICBNZXNzYWdlIGVudl92YXI7
CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGZ1bGxfZmxhZy5sZW5ndGgoKTsgaSsrKSB7Ci0g
ICAgZW52X3ZhciA8PCBzdGF0aWNfY2FzdDxjaGFyPih0b3VwcGVyKGZ1bGxfZmxhZy5jX3N0cigp
W2ldKSk7CisgICAgZW52X3ZhciA8PCBUb1VwcGVyKGZ1bGxfZmxhZy5jX3N0cigpW2ldKTsKICAg
fQogCiAgIHJldHVybiBlbnZfdmFyLkdldFN0cmluZygpOwpAQCAtNjcwLDE3ICsxMjQ4LDI0IEBA
IGJvb2wgUGFyc2VJbnQzMihjb25zdCBNZXNzYWdlJiBzcmNfdGV4dCwgY29uc3QgY2hhciogc3Ry
LCBJbnQzMiogdmFsdWUpIHsKIC8vCiAvLyBUaGUgdmFsdWUgaXMgY29uc2lkZXJlZCB0cnVlIGlm
ZiBpdCdzIG5vdCAiMCIuCiBib29sIEJvb2xGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywg
Ym9vbCBkZWZhdWx0X3ZhbHVlKSB7Ci0gIGNvbnN0IFN0cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52
VmFyKGZsYWcpOworI2lmIGRlZmluZWQoR1RFU1RfR0VUX0JPT0xfRlJPTV9FTlZfKQorICByZXR1
cm4gR1RFU1RfR0VUX0JPT0xfRlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOworI2Vsc2UK
KyAgY29uc3Qgc3RkOjpzdHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFnKTsKICAgY29u
c3QgY2hhciogY29uc3Qgc3RyaW5nX3ZhbHVlID0gcG9zaXg6OkdldEVudihlbnZfdmFyLmNfc3Ry
KCkpOwogICByZXR1cm4gc3RyaW5nX3ZhbHVlID09IE5VTEwgPwogICAgICAgZGVmYXVsdF92YWx1
ZSA6IHN0cmNtcChzdHJpbmdfdmFsdWUsICIwIikgIT0gMDsKKyNlbmRpZiAgLy8gZGVmaW5lZChH
VEVTVF9HRVRfQk9PTF9GUk9NX0VOVl8pCiB9CiAKIC8vIFJlYWRzIGFuZCByZXR1cm5zIGEgMzIt
Yml0IGludGVnZXIgc3RvcmVkIGluIHRoZSBlbnZpcm9ubWVudAogLy8gdmFyaWFibGUgY29ycmVz
cG9uZGluZyB0byB0aGUgZ2l2ZW4gZmxhZzsgaWYgaXQgaXNuJ3Qgc2V0IG9yCiAvLyBkb2Vzbid0
IHJlcHJlc2VudCBhIHZhbGlkIDMyLWJpdCBpbnRlZ2VyLCByZXR1cm5zIGRlZmF1bHRfdmFsdWUu
CiBJbnQzMiBJbnQzMkZyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBJbnQzMiBkZWZhdWx0
X3ZhbHVlKSB7Ci0gIGNvbnN0IFN0cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52VmFyKGZsYWcpOwor
I2lmIGRlZmluZWQoR1RFU1RfR0VUX0lOVDMyX0ZST01fRU5WXykKKyAgcmV0dXJuIEdURVNUX0dF
VF9JTlQzMl9GUk9NX0VOVl8oZmxhZywgZGVmYXVsdF92YWx1ZSk7CisjZWxzZQorICBjb25zdCBz
dGQ6OnN0cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52VmFyKGZsYWcpOwogICBjb25zdCBjaGFyKiBj
b25zdCBzdHJpbmdfdmFsdWUgPSBwb3NpeDo6R2V0RW52KGVudl92YXIuY19zdHIoKSk7CiAgIGlm
IChzdHJpbmdfdmFsdWUgPT0gTlVMTCkgewogICAgIC8vIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJs
ZSBpcyBub3Qgc2V0LgpAQCAtNjk3LDE0ICsxMjgyLDM2IEBAIEludDMyIEludDMyRnJvbUdUZXN0
RW52KGNvbnN0IGNoYXIqIGZsYWcsIEludDMyIGRlZmF1bHRfdmFsdWUpIHsKICAgfQogCiAgIHJl
dHVybiByZXN1bHQ7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfR0VUX0lOVDMyX0ZST01fRU5W
XykKK30KKworLy8gQXMgYSBzcGVjaWFsIGNhc2UgZm9yIHRoZSAnb3V0cHV0JyBmbGFnLCBpZiBH
VEVTVF9PVVRQVVQgaXMgbm90CisvLyBzZXQsIHdlIGxvb2sgZm9yIFhNTF9PVVRQVVRfRklMRSwg
d2hpY2ggaXMgc2V0IGJ5IHRoZSBCYXplbCBidWlsZAorLy8gc3lzdGVtLiAgVGhlIHZhbHVlIG9m
IFhNTF9PVVRQVVRfRklMRSBpcyBhIGZpbGVuYW1lIHdpdGhvdXQgdGhlCisvLyAieG1sOiIgcHJl
Zml4IG9mIEdURVNUX09VVFBVVC4KKy8vIE5vdGUgdGhhdCB0aGlzIGlzIG1lYW50IHRvIGJlIGNh
bGxlZCBhdCB0aGUgY2FsbCBzaXRlIHNvIGl0IGRvZXMKKy8vIG5vdCBjaGVjayB0aGF0IHRoZSBm
bGFnIGlzICdvdXRwdXQnCisvLyBJbiBlc3NlbmNlIHRoaXMgY2hlY2tzIGFuIGVudiB2YXJpYWJs
ZSBjYWxsZWQgWE1MX09VVFBVVF9GSUxFCisvLyBhbmQgaWYgaXQgaXMgc2V0IHdlIHByZXBlbmQg
InhtbDoiIHRvIGl0cyB2YWx1ZSwgaWYgaXQgbm90IHNldCB3ZSByZXR1cm4gIiIKK3N0ZDo6c3Ry
aW5nIE91dHB1dEZsYWdBbHNvQ2hlY2tFbnZWYXIoKXsKKyAgc3RkOjpzdHJpbmcgZGVmYXVsdF92
YWx1ZV9mb3Jfb3V0cHV0X2ZsYWcgPSAiIjsKKyAgY29uc3QgY2hhciogeG1sX291dHB1dF9maWxl
X2VudiA9IHBvc2l4OjpHZXRFbnYoIlhNTF9PVVRQVVRfRklMRSIpOworICBpZiAoTlVMTCAhPSB4
bWxfb3V0cHV0X2ZpbGVfZW52KSB7CisgICAgZGVmYXVsdF92YWx1ZV9mb3Jfb3V0cHV0X2ZsYWcg
PSBzdGQ6OnN0cmluZygieG1sOiIpICsgeG1sX291dHB1dF9maWxlX2VudjsKKyAgfQorICByZXR1
cm4gZGVmYXVsdF92YWx1ZV9mb3Jfb3V0cHV0X2ZsYWc7CiB9CiAKIC8vIFJlYWRzIGFuZCByZXR1
cm5zIHRoZSBzdHJpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgY29ycmVzcG9uZGluZyB0bwogLy8g
dGhlIGdpdmVuIGZsYWc7IGlmIGl0J3Mgbm90IHNldCwgcmV0dXJucyBkZWZhdWx0X3ZhbHVlLgog
Y29uc3QgY2hhciogU3RyaW5nRnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIGNvbnN0IGNo
YXIqIGRlZmF1bHRfdmFsdWUpIHsKLSAgY29uc3QgU3RyaW5nIGVudl92YXIgPSBGbGFnVG9FbnZW
YXIoZmxhZyk7CisjaWYgZGVmaW5lZChHVEVTVF9HRVRfU1RSSU5HX0ZST01fRU5WXykKKyAgcmV0
dXJuIEdURVNUX0dFVF9TVFJJTkdfRlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOworI2Vs
c2UKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFnKTsKICAg
Y29uc3QgY2hhciogY29uc3QgdmFsdWUgPSBwb3NpeDo6R2V0RW52KGVudl92YXIuY19zdHIoKSk7
CiAgIHJldHVybiB2YWx1ZSA9PSBOVUxMID8gZGVmYXVsdF92YWx1ZSA6IHZhbHVlOworI2VuZGlm
ICAvLyBkZWZpbmVkKEdURVNUX0dFVF9TVFJJTkdfRlJPTV9FTlZfKQogfQogCiB9ICAvLyBuYW1l
c3BhY2UgaW50ZXJuYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9n
dGVzdC1wcmludGVycy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1wcmlu
dGVycy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kZTRkMjQ1ZTlmYzg4OTdhZjIxMzc2NzlkOTEzZDY2NWZkODQz
NmUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0
LXByaW50ZXJzLmNjCkBAIC0wLDAgKzEsNDU3IEBACisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xl
IEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
Ky8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gR29vZ2xlIFRlc3QgLSBUaGUgR29vZ2xlIEMrKyBU
ZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yaworLy8KKy8vIFRoaXMgZmlsZSBpbXBsZW1lbnRz
IGEgdW5pdmVyc2FsIHZhbHVlIHByaW50ZXIgdGhhdCBjYW4gcHJpbnQgYQorLy8gdmFsdWUgb2Yg
YW55IHR5cGUgVDoKKy8vCisvLyAgIHZvaWQgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2Fs
UHJpbnRlcjxUPjo6UHJpbnQodmFsdWUsIG9zdHJlYW1fcHRyKTsKKy8vCisvLyBJdCB1c2VzIHRo
ZSA8PCBvcGVyYXRvciB3aGVuIHBvc3NpYmxlLCBhbmQgcHJpbnRzIHRoZSBieXRlcyBpbiB0aGUK
Ky8vIG9iamVjdCBvdGhlcndpc2UuICBBIHVzZXIgY2FuIG92ZXJyaWRlIGl0cyBiZWhhdmlvciBm
b3IgYSBjbGFzcworLy8gdHlwZSBGb28gYnkgZGVmaW5pbmcgZWl0aGVyIG9wZXJhdG9yPDwoOjpz
dGQ6Om9zdHJlYW0mLCBjb25zdCBGb28mKQorLy8gb3Igdm9pZCBQcmludFRvKGNvbnN0IEZvbyYs
IDo6c3RkOjpvc3RyZWFtKikgaW4gdGhlIG5hbWVzcGFjZSB0aGF0CisvLyBkZWZpbmVzIEZvby4K
KworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXByaW50ZXJzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4K
KyNpbmNsdWRlIDxjY3R5cGU+CisjaW5jbHVkZSA8Y3djaGFyPgorI2luY2x1ZGUgPG9zdHJlYW0+
ICAvLyBOT0xJTlQKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtcG9ydC5oIgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKworbmFt
ZXNwYWNlIHRlc3RpbmcgeworCituYW1lc3BhY2UgeworCit1c2luZyA6OnN0ZDo6b3N0cmVhbTsK
KworLy8gUHJpbnRzIGEgc2VnbWVudCBvZiBieXRlcyBpbiB0aGUgZ2l2ZW4gb2JqZWN0LgorR1RF
U1RfQVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8KK0dURVNUX0FUVFJJQlVURV9OT19TQU5J
VElaRV9BRERSRVNTXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KK3ZvaWQg
UHJpbnRCeXRlU2VnbWVudEluT2JqZWN0VG8oY29uc3QgdW5zaWduZWQgY2hhciogb2JqX2J5dGVz
LCBzaXplX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBj
b3VudCwgb3N0cmVhbSogb3MpIHsKKyAgY2hhciB0ZXh0WzVdID0gIiI7CisgIGZvciAoc2l6ZV90
IGkgPSAwOyBpICE9IGNvdW50OyBpKyspIHsKKyAgICBjb25zdCBzaXplX3QgaiA9IHN0YXJ0ICsg
aTsKKyAgICBpZiAoaSAhPSAwKSB7CisgICAgICAvLyBPcmdhbml6ZXMgdGhlIGJ5dGVzIGludG8g
Z3JvdXBzIG9mIDIgZm9yIGVhc3kgcGFyc2luZyBieQorICAgICAgLy8gaHVtYW4uCisgICAgICBp
ZiAoKGogJSAyKSA9PSAwKQorICAgICAgICAqb3MgPDwgJyAnOworICAgICAgZWxzZQorICAgICAg
ICAqb3MgPDwgJy0nOworICAgIH0KKyAgICBHVEVTVF9TTlBSSU5URl8odGV4dCwgc2l6ZW9mKHRl
eHQpLCAiJTAyWCIsIG9ial9ieXRlc1tqXSk7CisgICAgKm9zIDw8IHRleHQ7CisgIH0KK30KKwor
Ly8gUHJpbnRzIHRoZSBieXRlcyBpbiB0aGUgZ2l2ZW4gdmFsdWUgdG8gdGhlIGdpdmVuIG9zdHJl
YW0uCit2b2lkIFByaW50Qnl0ZXNJbk9iamVjdFRvSW1wbChjb25zdCB1bnNpZ25lZCBjaGFyKiBv
YmpfYnl0ZXMsIHNpemVfdCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9z
dHJlYW0qIG9zKSB7CisgIC8vIFRlbGxzIHRoZSB1c2VyIGhvdyBiaWcgdGhlIG9iamVjdCBpcy4K
KyAgKm9zIDw8IGNvdW50IDw8ICItYnl0ZSBvYmplY3QgPCI7CisKKyAgY29uc3Qgc2l6ZV90IGtU
aHJlc2hvbGQgPSAxMzI7CisgIGNvbnN0IHNpemVfdCBrQ2h1bmtTaXplID0gNjQ7CisgIC8vIElm
IHRoZSBvYmplY3Qgc2l6ZSBpcyBiaWdnZXIgdGhhbiBrVGhyZXNob2xkLCB3ZSdsbCBoYXZlIHRv
IG9taXQKKyAgLy8gc29tZSBkZXRhaWxzIGJ5IHByaW50aW5nIG9ubHkgdGhlIGZpcnN0IGFuZCB0
aGUgbGFzdCBrQ2h1bmtTaXplCisgIC8vIGJ5dGVzLgorICAvLyBGSVhNRTogbGV0IHRoZSB1c2Vy
IGNvbnRyb2wgdGhlIHRocmVzaG9sZCB1c2luZyBhIGZsYWcuCisgIGlmIChjb3VudCA8IGtUaHJl
c2hvbGQpIHsKKyAgICBQcmludEJ5dGVTZWdtZW50SW5PYmplY3RUbyhvYmpfYnl0ZXMsIDAsIGNv
dW50LCBvcyk7CisgIH0gZWxzZSB7CisgICAgUHJpbnRCeXRlU2VnbWVudEluT2JqZWN0VG8ob2Jq
X2J5dGVzLCAwLCBrQ2h1bmtTaXplLCBvcyk7CisgICAgKm9zIDw8ICIgLi4uICI7CisgICAgLy8g
Um91bmRzIHVwIHRvIDItYnl0ZSBib3VuZGFyeS4KKyAgICBjb25zdCBzaXplX3QgcmVzdW1lX3Bv
cyA9IChjb3VudCAtIGtDaHVua1NpemUgKyAxKS8yKjI7CisgICAgUHJpbnRCeXRlU2VnbWVudElu
T2JqZWN0VG8ob2JqX2J5dGVzLCByZXN1bWVfcG9zLCBjb3VudCAtIHJlc3VtZV9wb3MsIG9zKTsK
KyAgfQorICAqb3MgPDwgIj4iOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworbmFtZXNwYWNlIGlu
dGVybmFsMiB7CisKKy8vIERlbGVnYXRlcyB0byBQcmludEJ5dGVzSW5PYmplY3RUb0ltcGwoKSB0
byBwcmludCB0aGUgYnl0ZXMgaW4gdGhlCisvLyBnaXZlbiBvYmplY3QuICBUaGUgZGVsZWdhdGlv
biBzaW1wbGlmaWVzIHRoZSBpbXBsZW1lbnRhdGlvbiwgd2hpY2gKKy8vIHVzZXMgdGhlIDw8IG9w
ZXJhdG9yIGFuZCB0aHVzIGlzIGVhc2llciBkb25lIG91dHNpZGUgb2YgdGhlCisvLyA6OnRlc3Rp
bmc6OmludGVybmFsIG5hbWVzcGFjZSwgd2hpY2ggY29udGFpbnMgYSA8PCBvcGVyYXRvciB0aGF0
CisvLyBzb21ldGltZXMgY29uZmxpY3RzIHdpdGggdGhlIG9uZSBpbiBTVEwuCit2b2lkIFByaW50
Qnl0ZXNJbk9iamVjdFRvKGNvbnN0IHVuc2lnbmVkIGNoYXIqIG9ial9ieXRlcywgc2l6ZV90IGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICBvc3RyZWFtKiBvcykgeworICBQcmludEJ5
dGVzSW5PYmplY3RUb0ltcGwob2JqX2J5dGVzLCBjb3VudCwgb3MpOworfQorCit9ICAvLyBuYW1l
c3BhY2UgaW50ZXJuYWwyCisKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIERlcGVuZGluZyBv
biB0aGUgdmFsdWUgb2YgYSBjaGFyIChvciB3Y2hhcl90KSwgd2UgcHJpbnQgaXQgaW4gb25lCisv
LyBvZiB0aHJlZSBmb3JtYXRzOgorLy8gICAtIGFzIGlzIGlmIGl0J3MgYSBwcmludGFibGUgQVND
SUkgKGUuZy4gJ2EnLCAnMicsICcgJyksCisvLyAgIC0gYXMgYSBoZXhhZGVjaW1hbCBlc2NhcGUg
c2VxdWVuY2UgKGUuZy4gJ1x4N0YnKSwgb3IKKy8vICAgLSBhcyBhIHNwZWNpYWwgZXNjYXBlIHNl
cXVlbmNlIChlLmcuICdccicsICdcbicpLgorZW51bSBDaGFyRm9ybWF0IHsKKyAga0FzSXMsCisg
IGtIZXhFc2NhcGUsCisgIGtTcGVjaWFsRXNjYXBlCit9OworCisvLyBSZXR1cm5zIHRydWUgaWYg
YyBpcyBhIHByaW50YWJsZSBBU0NJSSBjaGFyYWN0ZXIuICBXZSB0ZXN0IHRoZQorLy8gdmFsdWUg
b2YgYyBkaXJlY3RseSBpbnN0ZWFkIG9mIGNhbGxpbmcgaXNwcmludCgpLCB3aGljaCBpcyBidWdn
eSBvbgorLy8gV2luZG93cyBNb2JpbGUuCitpbmxpbmUgYm9vbCBJc1ByaW50YWJsZUFzY2lpKHdj
aGFyX3QgYykgeworICByZXR1cm4gMHgyMCA8PSBjICYmIGMgPD0gMHg3RTsKK30KKworLy8gUHJp
bnRzIGEgd2lkZSBvciBuYXJyb3cgY2hhciBjIGFzIGEgY2hhcmFjdGVyIGxpdGVyYWwgd2l0aG91
dCB0aGUKKy8vIHF1b3RlcywgZXNjYXBpbmcgaXQgd2hlbiBuZWNlc3Nhcnk7IHJldHVybnMgaG93
IGMgd2FzIGZvcm1hdHRlZC4KKy8vIFRoZSB0ZW1wbGF0ZSBhcmd1bWVudCBVbnNpZ25lZENoYXIg
aXMgdGhlIHVuc2lnbmVkIHZlcnNpb24gb2YgQ2hhciwKKy8vIHdoaWNoIGlzIHRoZSB0eXBlIG9m
IGMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVW5zaWduZWRDaGFyLCB0eXBlbmFtZSBDaGFyPgorc3Rh
dGljIENoYXJGb3JtYXQgUHJpbnRBc0NoYXJMaXRlcmFsVG8oQ2hhciBjLCBvc3RyZWFtKiBvcykg
eworICBzd2l0Y2ggKHN0YXRpY19jYXN0PHdjaGFyX3Q+KGMpKSB7CisgICAgY2FzZSBMJ1wwJzoK
KyAgICAgICpvcyA8PCAiXFwwIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTCdcJyc6CisgICAg
ICAqb3MgPDwgIlxcJyI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwnXFwnOgorICAgICAgKm9z
IDw8ICJcXFxcIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTCdcYSc6CisgICAgICAqb3MgPDwg
IlxcYSI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwnXGInOgorICAgICAgKm9zIDw8ICJcXGIi
OworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1xmJzoKKyAgICAgICpvcyA8PCAiXFxmIjsKKyAg
ICAgIGJyZWFrOworICAgIGNhc2UgTCdcbic6CisgICAgICAqb3MgPDwgIlxcbiI7CisgICAgICBi
cmVhazsKKyAgICBjYXNlIEwnXHInOgorICAgICAgKm9zIDw8ICJcXHIiOworICAgICAgYnJlYWs7
CisgICAgY2FzZSBMJ1x0JzoKKyAgICAgICpvcyA8PCAiXFx0IjsKKyAgICAgIGJyZWFrOworICAg
IGNhc2UgTCdcdic6CisgICAgICAqb3MgPDwgIlxcdiI7CisgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgaWYgKElzUHJpbnRhYmxlQXNjaWkoYykpIHsKKyAgICAgICAgKm9zIDw8IHN0
YXRpY19jYXN0PGNoYXI+KGMpOworICAgICAgICByZXR1cm4ga0FzSXM7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBvc3RyZWFtOjpmbXRmbGFncyBmbGFncyA9IG9zLT5mbGFncygpOworICAgICAg
ICAqb3MgPDwgIlxceCIgPDwgc3RkOjpoZXggPDwgc3RkOjp1cHBlcmNhc2UKKyAgICAgICAgICAg
IDw8IHN0YXRpY19jYXN0PGludD4oc3RhdGljX2Nhc3Q8VW5zaWduZWRDaGFyPihjKSk7CisgICAg
ICAgIG9zLT5mbGFncyhmbGFncyk7CisgICAgICAgIHJldHVybiBrSGV4RXNjYXBlOworICAgICAg
fQorICB9CisgIHJldHVybiBrU3BlY2lhbEVzY2FwZTsKK30KKworLy8gUHJpbnRzIGEgd2NoYXJf
dCBjIGFzIGlmIGl0J3MgcGFydCBvZiBhIHN0cmluZyBsaXRlcmFsLCBlc2NhcGluZyBpdCB3aGVu
CisvLyBuZWNlc3Nhcnk7IHJldHVybnMgaG93IGMgd2FzIGZvcm1hdHRlZC4KK3N0YXRpYyBDaGFy
Rm9ybWF0IFByaW50QXNTdHJpbmdMaXRlcmFsVG8od2NoYXJfdCBjLCBvc3RyZWFtKiBvcykgewor
ICBzd2l0Y2ggKGMpIHsKKyAgICBjYXNlIEwnXCcnOgorICAgICAgKm9zIDw8ICInIjsKKyAgICAg
IHJldHVybiBrQXNJczsKKyAgICBjYXNlIEwnIic6CisgICAgICAqb3MgPDwgIlxcXCIiOworICAg
ICAgcmV0dXJuIGtTcGVjaWFsRXNjYXBlOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gUHJp
bnRBc0NoYXJMaXRlcmFsVG88d2NoYXJfdD4oYywgb3MpOworICB9Cit9CisKKy8vIFByaW50cyBh
IGNoYXIgYyBhcyBpZiBpdCdzIHBhcnQgb2YgYSBzdHJpbmcgbGl0ZXJhbCwgZXNjYXBpbmcgaXQg
d2hlbgorLy8gbmVjZXNzYXJ5OyByZXR1cm5zIGhvdyBjIHdhcyBmb3JtYXR0ZWQuCitzdGF0aWMg
Q2hhckZvcm1hdCBQcmludEFzU3RyaW5nTGl0ZXJhbFRvKGNoYXIgYywgb3N0cmVhbSogb3MpIHsK
KyAgcmV0dXJuIFByaW50QXNTdHJpbmdMaXRlcmFsVG8oCisgICAgICBzdGF0aWNfY2FzdDx3Y2hh
cl90PihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKSksIG9zKTsKK30KKworLy8gUHJpbnRz
IGEgd2lkZSBvciBuYXJyb3cgY2hhcmFjdGVyIGMgYW5kIGl0cyBjb2RlLiAgJ1wwJyBpcyBwcmlu
dGVkCisvLyBhcyAiJ1xcMCciLCBvdGhlciB1bnByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZSBhbHNv
IHByb3Blcmx5IGVzY2FwZWQKKy8vIHVzaW5nIHRoZSBzdGFuZGFyZCBDKysgZXNjYXBlIHNlcXVl
bmNlLiAgVGhlIHRlbXBsYXRlIGFyZ3VtZW50CisvLyBVbnNpZ25lZENoYXIgaXMgdGhlIHVuc2ln
bmVkIHZlcnNpb24gb2YgQ2hhciwgd2hpY2ggaXMgdGhlIHR5cGUgb2YgYy4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBVbnNpZ25lZENoYXIsIHR5cGVuYW1lIENoYXI+Cit2b2lkIFByaW50Q2hhckFuZENv
ZGVUbyhDaGFyIGMsIG9zdHJlYW0qIG9zKSB7CisgIC8vIEZpcnN0LCBwcmludCBjIGFzIGEgbGl0
ZXJhbCBpbiB0aGUgbW9zdCByZWFkYWJsZSBmb3JtIHdlIGNhbiBmaW5kLgorICAqb3MgPDwgKChz
aXplb2YoYykgPiAxKSA/ICJMJyIgOiAiJyIpOworICBjb25zdCBDaGFyRm9ybWF0IGZvcm1hdCA9
IFByaW50QXNDaGFyTGl0ZXJhbFRvPFVuc2lnbmVkQ2hhcj4oYywgb3MpOworICAqb3MgPDwgIici
OworCisgIC8vIFRvIGFpZCB1c2VyIGRlYnVnZ2luZywgd2UgYWxzbyBwcmludCBjJ3MgY29kZSBp
biBkZWNpbWFsLCB1bmxlc3MKKyAgLy8gaXQncyAwIChpbiB3aGljaCBjYXNlIGMgd2FzIHByaW50
ZWQgYXMgJ1xcMCcsIG1ha2luZyB0aGUgY29kZQorICAvLyBvYnZpb3VzKS4KKyAgaWYgKGMgPT0g
MCkKKyAgICByZXR1cm47CisgICpvcyA8PCAiICgiIDw8IHN0YXRpY19jYXN0PGludD4oYyk7CisK
KyAgLy8gRm9yIG1vcmUgY29udmVuaWVuY2UsIHdlIHByaW50IGMncyBjb2RlIGFnYWluIGluIGhl
eGFkZWNpbWFsLAorICAvLyB1bmxlc3MgYyB3YXMgYWxyZWFkeSBwcmludGVkIGluIHRoZSBmb3Jt
ICdceCMjJyBvciB0aGUgY29kZSBpcyBpbgorICAvLyBbMSwgOV0uCisgIGlmIChmb3JtYXQgPT0g
a0hleEVzY2FwZSB8fCAoMSA8PSBjICYmIGMgPD0gOSkpIHsKKyAgICAvLyBEbyBub3RoaW5nLgor
ICB9IGVsc2UgeworICAgICpvcyA8PCAiLCAweCIgPDwgU3RyaW5nOjpGb3JtYXRIZXhJbnQoc3Rh
dGljX2Nhc3Q8VW5zaWduZWRDaGFyPihjKSk7CisgIH0KKyAgKm9zIDw8ICIpIjsKK30KKwordm9p
ZCBQcmludFRvKHVuc2lnbmVkIGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50
Q2hhckFuZENvZGVUbzx1bnNpZ25lZCBjaGFyPihjLCBvcyk7Cit9Cit2b2lkIFByaW50VG8oc2ln
bmVkIGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hhckFuZENvZGVUbzx1
bnNpZ25lZCBjaGFyPihjLCBvcyk7Cit9CisKKy8vIFByaW50cyBhIHdjaGFyX3QgYXMgYSBzeW1i
b2wgaWYgaXQgaXMgcHJpbnRhYmxlIG9yIGFzIGl0cyBpbnRlcm5hbAorLy8gY29kZSBvdGhlcndp
c2UgYW5kIGFsc28gYXMgaXRzIGNvZGUuICBMJ1wwJyBpcyBwcmludGVkIGFzICJMJ1xcMCciLgor
dm9pZCBQcmludFRvKHdjaGFyX3Qgd2MsIG9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hhckFuZENv
ZGVUbzx3Y2hhcl90Pih3Yywgb3MpOworfQorCisvLyBQcmludHMgdGhlIGdpdmVuIGFycmF5IG9m
IGNoYXJhY3RlcnMgdG8gdGhlIG9zdHJlYW0uICBDaGFyVHlwZSBtdXN0IGJlIGVpdGhlcgorLy8g
Y2hhciBvciB3Y2hhcl90LgorLy8gVGhlIGFycmF5IHN0YXJ0cyBhdCBiZWdpbiwgdGhlIGxlbmd0
aCBpcyBsZW4sIGl0IG1heSBpbmNsdWRlICdcMCcgY2hhcmFjdGVycworLy8gYW5kIG1heSBub3Qg
YmUgTlVMLXRlcm1pbmF0ZWQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CitHVEVTVF9B
VFRSSUJVVEVfTk9fU0FOSVRJWkVfTUVNT1JZXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpF
X0FERFJFU1NfCitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXworc3RhdGljIENo
YXJGb3JtYXQgUHJpbnRDaGFyc0FzU3RyaW5nVG8oCisgICAgY29uc3QgQ2hhclR5cGUqIGJlZ2lu
LCBzaXplX3QgbGVuLCBvc3RyZWFtKiBvcykgeworICBjb25zdCBjaGFyKiBjb25zdCBrUXVvdGVC
ZWdpbiA9IHNpemVvZihDaGFyVHlwZSkgPT0gMSA/ICJcIiIgOiAiTFwiIjsKKyAgKm9zIDw8IGtR
dW90ZUJlZ2luOworICBib29sIGlzX3ByZXZpb3VzX2hleCA9IGZhbHNlOworICBDaGFyRm9ybWF0
IHByaW50X2Zvcm1hdCA9IGtBc0lzOworICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
bGVuOyArK2luZGV4KSB7CisgICAgY29uc3QgQ2hhclR5cGUgY3VyID0gYmVnaW5baW5kZXhdOwor
ICAgIGlmIChpc19wcmV2aW91c19oZXggJiYgSXNYRGlnaXQoY3VyKSkgeworICAgICAgLy8gUHJl
dmlvdXMgY2hhcmFjdGVyIGlzIG9mICdceC4uJyBmb3JtIGFuZCB0aGlzIGNoYXJhY3RlciBjYW4g
YmUKKyAgICAgIC8vIGludGVycHJldGVkIGFzIGFub3RoZXIgaGV4YWRlY2ltYWwgZGlnaXQgaW4g
aXRzIG51bWJlci4gQnJlYWsgc3RyaW5nIHRvCisgICAgICAvLyBkaXNhbWJpZ3VhdGUuCisgICAg
ICAqb3MgPDwgIlwiICIgPDwga1F1b3RlQmVnaW47CisgICAgfQorICAgIGlzX3ByZXZpb3VzX2hl
eCA9IFByaW50QXNTdHJpbmdMaXRlcmFsVG8oY3VyLCBvcykgPT0ga0hleEVzY2FwZTsKKyAgICAv
LyBSZW1lbWJlciBpZiBhbnkgY2hhcmFjdGVycyByZXF1aXJlZCBoZXggZXNjYXBpbmcuCisgICAg
aWYgKGlzX3ByZXZpb3VzX2hleCkgeworICAgICAgcHJpbnRfZm9ybWF0ID0ga0hleEVzY2FwZTsK
KyAgICB9CisgIH0KKyAgKm9zIDw8ICJcIiI7CisgIHJldHVybiBwcmludF9mb3JtYXQ7Cit9CisK
Ky8vIFByaW50cyBhIChjb25zdCkgY2hhci93Y2hhcl90IGFycmF5IG9mICdsZW4nIGVsZW1lbnRz
LCBzdGFydGluZyBhdCBhZGRyZXNzCisvLyAnYmVnaW4nLiAgQ2hhclR5cGUgbXVzdCBiZSBlaXRo
ZXIgY2hhciBvciB3Y2hhcl90LgordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorR1RFU1Rf
QVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8KK0dURVNUX0FUVFJJQlVURV9OT19TQU5JVEla
RV9BRERSRVNTXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KK3N0YXRpYyB2
b2lkIFVuaXZlcnNhbFByaW50Q2hhckFycmF5KAorICAgIGNvbnN0IENoYXJUeXBlKiBiZWdpbiwg
c2l6ZV90IGxlbiwgb3N0cmVhbSogb3MpIHsKKyAgLy8gVGhlIGNvZGUKKyAgLy8gICBjb25zdCBj
aGFyIGtGb29bXSA9ICJmb28iOworICAvLyBnZW5lcmF0ZXMgYW4gYXJyYXkgb2YgNCwgbm90IDMs
IGVsZW1lbnRzLCB3aXRoIHRoZSBsYXN0IG9uZSBiZWluZyAnXDAnLgorICAvLworICAvLyBUaGVy
ZWZvcmUgd2hlbiBwcmludGluZyBhIGNoYXIgYXJyYXksIHdlIGRvbid0IHByaW50IHRoZSBsYXN0
IGVsZW1lbnQgaWYKKyAgLy8gaXQncyAnXDAnLCBzdWNoIHRoYXQgdGhlIG91dHB1dCBtYXRjaGVz
IHRoZSBzdHJpbmcgbGl0ZXJhbCBhcyBpdCdzCisgIC8vIHdyaXR0ZW4gaW4gdGhlIHNvdXJjZSBj
b2RlLgorICBpZiAobGVuID4gMCAmJiBiZWdpbltsZW4gLSAxXSA9PSAnXDAnKSB7CisgICAgUHJp
bnRDaGFyc0FzU3RyaW5nVG8oYmVnaW4sIGxlbiAtIDEsIG9zKTsKKyAgICByZXR1cm47CisgIH0K
KworICAvLyBJZiwgaG93ZXZlciwgdGhlIGxhc3QgZWxlbWVudCBpbiB0aGUgYXJyYXkgaXMgbm90
ICdcMCcsIGUuZy4KKyAgLy8gICAgY29uc3QgY2hhciBrRm9vW10gPSB7ICdmJywgJ28nLCAnbycg
fTsKKyAgLy8gd2UgbXVzdCBwcmludCB0aGUgZW50aXJlIGFycmF5LiAgV2UgYWxzbyBwcmludCBh
IG1lc3NhZ2UgdG8gaW5kaWNhdGUKKyAgLy8gdGhhdCB0aGUgYXJyYXkgaXMgbm90IE5VTC10ZXJt
aW5hdGVkLgorICBQcmludENoYXJzQXNTdHJpbmdUbyhiZWdpbiwgbGVuLCBvcyk7CisgICpvcyA8
PCAiIChubyB0ZXJtaW5hdGluZyBOVUwpIjsKK30KKworLy8gUHJpbnRzIGEgKGNvbnN0KSBjaGFy
IGFycmF5IG9mICdsZW4nIGVsZW1lbnRzLCBzdGFydGluZyBhdCBhZGRyZXNzICdiZWdpbicuCit2
b2lkIFVuaXZlcnNhbFByaW50QXJyYXkoY29uc3QgY2hhciogYmVnaW4sIHNpemVfdCBsZW4sIG9z
dHJlYW0qIG9zKSB7CisgIFVuaXZlcnNhbFByaW50Q2hhckFycmF5KGJlZ2luLCBsZW4sIG9zKTsK
K30KKworLy8gUHJpbnRzIGEgKGNvbnN0KSB3Y2hhcl90IGFycmF5IG9mICdsZW4nIGVsZW1lbnRz
LCBzdGFydGluZyBhdCBhZGRyZXNzCisvLyAnYmVnaW4nLgordm9pZCBVbml2ZXJzYWxQcmludEFy
cmF5KGNvbnN0IHdjaGFyX3QqIGJlZ2luLCBzaXplX3QgbGVuLCBvc3RyZWFtKiBvcykgeworICBV
bml2ZXJzYWxQcmludENoYXJBcnJheShiZWdpbiwgbGVuLCBvcyk7Cit9CisKKy8vIFByaW50cyB0
aGUgZ2l2ZW4gQyBzdHJpbmcgdG8gdGhlIG9zdHJlYW0uCit2b2lkIFByaW50VG8oY29uc3QgY2hh
ciogcywgb3N0cmVhbSogb3MpIHsKKyAgaWYgKHMgPT0gTlVMTCkgeworICAgICpvcyA8PCAiTlVM
TCI7CisgIH0gZWxzZSB7CisgICAgKm9zIDw8IEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMp
IDw8ICIgcG9pbnRpbmcgdG8gIjsKKyAgICBQcmludENoYXJzQXNTdHJpbmdUbyhzLCBzdHJsZW4o
cyksIG9zKTsKKyAgfQorfQorCisvLyBNU1ZDIGNvbXBpbGVyIGNhbiBiZSBjb25maWd1cmVkIHRv
IGRlZmluZSB3aGFyX3QgYXMgYSB0eXBlZGVmCisvLyBvZiB1bnNpZ25lZCBzaG9ydC4gRGVmaW5p
bmcgYW4gb3ZlcmxvYWQgZm9yIGNvbnN0IHdjaGFyX3QqIGluIHRoYXQgY2FzZQorLy8gd291bGQg
Y2F1c2UgcG9pbnRlcnMgdG8gdW5zaWduZWQgc2hvcnRzIGJlIHByaW50ZWQgYXMgd2lkZSBzdHJp
bmdzLAorLy8gcG9zc2libHkgYWNjZXNzaW5nIG1vcmUgbWVtb3J5IHRoYW4gaW50ZW5kZWQgYW5k
IGNhdXNpbmcgaW52YWxpZAorLy8gbWVtb3J5IGFjY2Vzc2VzLiBNU1ZDIGRlZmluZXMgX05BVElW
RV9XQ0hBUl9UX0RFRklORUQgc3ltYm9sIHdoZW4KKy8vIHdjaGFyX3QgaXMgaW1wbGVtZW50ZWQg
YXMgYSBuYXRpdmUgdHlwZS4KKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfTkFU
SVZFX1dDSEFSX1RfREVGSU5FRCkKKy8vIFByaW50cyB0aGUgZ2l2ZW4gd2lkZSBDIHN0cmluZyB0
byB0aGUgb3N0cmVhbS4KK3ZvaWQgUHJpbnRUbyhjb25zdCB3Y2hhcl90KiBzLCBvc3RyZWFtKiBv
cykgeworICBpZiAocyA9PSBOVUxMKSB7CisgICAgKm9zIDw8ICJOVUxMIjsKKyAgfSBlbHNlIHsK
KyAgICAqb3MgPDwgSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocykgPDwgIiBwb2ludGluZyB0
byAiOworICAgIFByaW50Q2hhcnNBc1N0cmluZ1RvKHMsIHN0ZDo6d2NzbGVuKHMpLCBvcyk7Cisg
IH0KK30KKyNlbmRpZiAgLy8gd2NoYXJfdCBpcyBuYXRpdmUKKworbmFtZXNwYWNlIHsKKworYm9v
bCBDb250YWluc1VucHJpbnRhYmxlQ29udHJvbENvZGVzKGNvbnN0IGNoYXIqIHN0ciwgc2l6ZV90
IGxlbmd0aCkgeworICBjb25zdCB1bnNpZ25lZCBjaGFyICpzID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyICo+KHN0cik7CisKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBs
ZW5ndGg7IGkrKykgeworICAgIHVuc2lnbmVkIGNoYXIgY2ggPSAqcysrOworICAgIGlmIChzdGQ6
OmlzY250cmwoY2gpKSB7CisgICAgICAgIHN3aXRjaCAoY2gpIHsKKyAgICAgICAgY2FzZSAnXHQn
OgorICAgICAgICBjYXNlICdcbic6CisgICAgICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgfQorICB9CisgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBJc1VURjhUcmFpbEJ5dGUo
dW5zaWduZWQgY2hhciB0KSB7IHJldHVybiAweDgwIDw9IHQgJiYgdDw9IDB4YmY7IH0KKworYm9v
bCBJc1ZhbGlkVVRGOChjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW5ndGgpIHsKKyAgY29uc3Qg
dW5zaWduZWQgY2hhciAqcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAq
PihzdHIpOworCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOykgeworICAgIHVuc2ln
bmVkIGNoYXIgbGVhZCA9IHNbaSsrXTsKKworICAgIGlmIChsZWFkIDw9IDB4N2YpIHsKKyAgICAg
IGNvbnRpbnVlOyAgLy8gc2luZ2xlLWJ5dGUgY2hhcmFjdGVyIChBU0NJSSkgMC4uN0YKKyAgICB9
CisgICAgaWYgKGxlYWQgPCAweGMyKSB7CisgICAgICByZXR1cm4gZmFsc2U7ICAvLyB0cmFpbCBi
eXRlIG9yIG5vbi1zaG9ydGVzdCBmb3JtCisgICAgfSBlbHNlIGlmIChsZWFkIDw9IDB4ZGYgJiYg
KGkgKyAxKSA8PSBsZW5ndGggJiYgSXNVVEY4VHJhaWxCeXRlKHNbaV0pKSB7CisgICAgICArK2k7
ICAvLyAyLWJ5dGUgY2hhcmFjdGVyCisgICAgfSBlbHNlIGlmICgweGUwIDw9IGxlYWQgJiYgbGVh
ZCA8PSAweGVmICYmIChpICsgMikgPD0gbGVuZ3RoICYmCisgICAgICAgICAgICAgICBJc1VURjhU
cmFpbEJ5dGUoc1tpXSkgJiYKKyAgICAgICAgICAgICAgIElzVVRGOFRyYWlsQnl0ZShzW2kgKyAx
XSkgJiYKKyAgICAgICAgICAgICAgIC8vIGNoZWNrIGZvciBub24tc2hvcnRlc3QgZm9ybSBhbmQg
c3Vycm9nYXRlCisgICAgICAgICAgICAgICAobGVhZCAhPSAweGUwIHx8IHNbaV0gPj0gMHhhMCkg
JiYKKyAgICAgICAgICAgICAgIChsZWFkICE9IDB4ZWQgfHwgc1tpXSA8IDB4YTApKSB7CisgICAg
ICBpICs9IDI7ICAvLyAzLWJ5dGUgY2hhcmFjdGVyCisgICAgfSBlbHNlIGlmICgweGYwIDw9IGxl
YWQgJiYgbGVhZCA8PSAweGY0ICYmIChpICsgMykgPD0gbGVuZ3RoICYmCisgICAgICAgICAgICAg
ICBJc1VURjhUcmFpbEJ5dGUoc1tpXSkgJiYKKyAgICAgICAgICAgICAgIElzVVRGOFRyYWlsQnl0
ZShzW2kgKyAxXSkgJiYKKyAgICAgICAgICAgICAgIElzVVRGOFRyYWlsQnl0ZShzW2kgKyAyXSkg
JiYKKyAgICAgICAgICAgICAgIC8vIGNoZWNrIGZvciBub24tc2hvcnRlc3QgZm9ybQorICAgICAg
ICAgICAgICAgKGxlYWQgIT0gMHhmMCB8fCBzW2ldID49IDB4OTApICYmCisgICAgICAgICAgICAg
ICAobGVhZCAhPSAweGY0IHx8IHNbaV0gPCAweDkwKSkgeworICAgICAgaSArPSAzOyAgLy8gNC1i
eXRlIGNoYXJhY3RlcgorICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICB9CisgIHJldHVybiB0cnVlOworfQorCit2b2lkIENvbmRpdGlvbmFsUHJpbnRBc1RleHQoY29u
c3QgY2hhciogc3RyLCBzaXplX3QgbGVuZ3RoLCBvc3RyZWFtKiBvcykgeworICBpZiAoIUNvbnRh
aW5zVW5wcmludGFibGVDb250cm9sQ29kZXMoc3RyLCBsZW5ndGgpICYmCisgICAgICBJc1ZhbGlk
VVRGOChzdHIsIGxlbmd0aCkpIHsKKyAgICAqb3MgPDwgIlxuICAgIEFzIFRleHQ6IFwiIiA8PCBz
dHIgPDwgIlwiIjsKKyAgfQorfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKKy8vIFBy
aW50cyBhIDo6c3RyaW5nIG9iamVjdC4KKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwordm9p
ZCBQcmludFN0cmluZ1RvKGNvbnN0IDo6c3RyaW5nJiBzLCBvc3RyZWFtKiBvcykgeworICBpZiAo
UHJpbnRDaGFyc0FzU3RyaW5nVG8ocy5kYXRhKCksIHMuc2l6ZSgpLCBvcykgPT0ga0hleEVzY2Fw
ZSkgeworICAgIGlmIChHVEVTVF9GTEFHKHByaW50X3V0ZjgpKSB7CisgICAgICBDb25kaXRpb25h
bFByaW50QXNUZXh0KHMuZGF0YSgpLCBzLnNpemUoKSwgb3MpOworICAgIH0KKyAgfQorfQorI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCit2b2lkIFByaW50U3RyaW5nVG8oY29u
c3QgOjpzdGQ6OnN0cmluZyYgcywgb3N0cmVhbSogb3MpIHsKKyAgaWYgKFByaW50Q2hhcnNBc1N0
cmluZ1RvKHMuZGF0YSgpLCBzLnNpemUoKSwgb3MpID09IGtIZXhFc2NhcGUpIHsKKyAgICBpZiAo
R1RFU1RfRkxBRyhwcmludF91dGY4KSkgeworICAgICAgQ29uZGl0aW9uYWxQcmludEFzVGV4dChz
LmRhdGEoKSwgcy5zaXplKCksIG9zKTsKKyAgICB9CisgIH0KK30KKworLy8gUHJpbnRzIGEgOjp3
c3RyaW5nIG9iamVjdC4KKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKK3ZvaWQgUHJpbnRX
aWRlU3RyaW5nVG8oY29uc3QgOjp3c3RyaW5nJiBzLCBvc3RyZWFtKiBvcykgeworICBQcmludENo
YXJzQXNTdHJpbmdUbyhzLmRhdGEoKSwgcy5zaXplKCksIG9zKTsKK30KKyNlbmRpZiAgLy8gR1RF
U1RfSEFTX0dMT0JBTF9XU1RSSU5HCisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKK3ZvaWQg
UHJpbnRXaWRlU3RyaW5nVG8oY29uc3QgOjpzdGQ6OndzdHJpbmcmIHMsIG9zdHJlYW0qIG9zKSB7
CisgIFByaW50Q2hhcnNBc1N0cmluZ1RvKHMuZGF0YSgpLCBzLnNpemUoKSwgb3MpOworfQorI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c3JjL2d0ZXN0LXRlc3QtcGFydC5jYwppbmRleCA1ZDE4M2E0NDZmMjk0Y2U5ZTFhODU4N2M4Yjkx
MjBhOWJlYzg4N2RkLi5jODg4NjBkOTIzODU2MTllYTY3NjQ4ODQ1ODM5ZDE0NTgzZjExMTQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10ZXN0LXBhcnQuY2MKQEAg
LTI2LDIxICsyNiwxMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotLy8KLS8vIEF1dGhvcjogbWhldWxlQGdvb2dsZS5jb20gKE1hcmt1cyBIZXVsZSkK
LS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAK
LSNpbmNsdWRlIDxndGVzdC9ndGVzdC10ZXN0LXBhcnQuaD4KKy8vCisvLyBUaGUgR29vZ2xlIEMr
KyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAKLS8vIEluZGlj
YXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MK
LS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1p
bmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4g
IFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGlu
Y2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8gaGlzIGNvZGUuCi0jZGVmaW5lIEdU
RVNUX0lNUExFTUVOVEFUSU9OXyAxCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0Lmgi
CiAjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExF
TUVOVEFUSU9OXwogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKQEAgLTQ4LDEwICszOSwxMCBAQCB1
c2luZyBpbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsOwogCiAvLyBHZXRzIHRoZSBzdW1tYXJ5IG9m
IHRoZSBmYWlsdXJlIG1lc3NhZ2UgYnkgb21pdHRpbmcgdGhlIHN0YWNrIHRyYWNlCiAvLyBpbiBp
dC4KLWludGVybmFsOjpTdHJpbmcgVGVzdFBhcnRSZXN1bHQ6OkV4dHJhY3RTdW1tYXJ5KGNvbnN0
IGNoYXIqIG1lc3NhZ2UpIHsKK3N0ZDo6c3RyaW5nIFRlc3RQYXJ0UmVzdWx0OjpFeHRyYWN0U3Vt
bWFyeShjb25zdCBjaGFyKiBtZXNzYWdlKSB7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IHN0YWNrX3Ry
YWNlID0gc3Ryc3RyKG1lc3NhZ2UsIGludGVybmFsOjprU3RhY2tUcmFjZU1hcmtlcik7Ci0gIHJl
dHVybiBzdGFja190cmFjZSA9PSBOVUxMID8gaW50ZXJuYWw6OlN0cmluZyhtZXNzYWdlKSA6Ci0g
ICAgICBpbnRlcm5hbDo6U3RyaW5nKG1lc3NhZ2UsIHN0YWNrX3RyYWNlIC0gbWVzc2FnZSk7Cisg
IHJldHVybiBzdGFja190cmFjZSA9PSBOVUxMID8gbWVzc2FnZSA6CisgICAgICBzdGQ6OnN0cmlu
ZyhtZXNzYWdlLCBzdGFja190cmFjZSk7CiB9CiAKIC8vIFByaW50cyBhIFRlc3RQYXJ0UmVzdWx0
IG9iamVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10
eXBlZC10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXR5cGVkLXRl
c3QuY2MKaW5kZXggM2NjNGI1ZGUyYWFjYjc1OTg5MTE5YzVmOTZjN2Y0ZjgwZWFkNWNhZS4uMWRj
MmFkMzhiYWI5OGJjMTQ2YzE2MTU4YTQ3ZGExZTM5NGJmMzg1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKQEAgLTI2LDExICsyNiwxMSBA
QAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8v
IEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0LXR5cGVkLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
IAogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsKQEAgLTQwLDM4ICs0
MCw0NiBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogLy8gU2tpcHMgdG8gdGhlIGZpcnN0IG5vbi1z
cGFjZSBjaGFyIGluIHN0ci4gUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgc3RyCiAvLyBjb250
YWlucyBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycy4KIHN0YXRpYyBjb25zdCBjaGFyKiBTa2lw
U3BhY2VzKGNvbnN0IGNoYXIqIHN0cikgewotICB3aGlsZSAoaXNzcGFjZSgqc3RyKSkKKyAgd2hp
bGUgKElzU3BhY2UoKnN0cikpCiAgICAgc3RyKys7CiAgIHJldHVybiBzdHI7CiB9CiAKK3N0YXRp
YyBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gU3BsaXRJbnRvVGVzdE5hbWVzKGNvbnN0IGNoYXIq
IHNyYykgeworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbmFtZV92ZWM7CisgIHNyYyA9IFNr
aXBTcGFjZXMoc3JjKTsKKyAgZm9yICg7IHNyYyAhPSBOVUxMOyBzcmMgPSBTa2lwQ29tbWEoc3Jj
KSkgeworICAgIG5hbWVfdmVjLnB1c2hfYmFjayhTdHJpcFRyYWlsaW5nU3BhY2VzKEdldFByZWZp
eFVudGlsQ29tbWEoc3JjKSkpOworICB9CisgIHJldHVybiBuYW1lX3ZlYzsKK30KKwogLy8gVmVy
aWZpZXMgdGhhdCByZWdpc3RlcmVkX3Rlc3RzIG1hdGNoIHRoZSB0ZXN0IG5hbWVzIGluCi0vLyBk
ZWZpbmVkX3Rlc3RfbmFtZXNfOyByZXR1cm5zIHJlZ2lzdGVyZWRfdGVzdHMgaWYgc3VjY2Vzc2Z1
bCwgb3IKKy8vIHJlZ2lzdGVyZWRfdGVzdHNfOyByZXR1cm5zIHJlZ2lzdGVyZWRfdGVzdHMgaWYg
c3VjY2Vzc2Z1bCwgb3IKIC8vIGFib3J0cyB0aGUgcHJvZ3JhbSBvdGhlcndpc2UuCiBjb25zdCBj
aGFyKiBUeXBlZFRlc3RDYXNlUFN0YXRlOjpWZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVzKAogICAg
IGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiByZWdpc3RlcmVkX3Rlc3Rz
KSB7Ci0gIHR5cGVkZWYgOjpzdGQ6OnNldDxjb25zdCBjaGFyKj46OmNvbnN0X2l0ZXJhdG9yIERl
ZmluZWRUZXN0SXRlcjsKKyAgdHlwZWRlZiBSZWdpc3RlcmVkVGVzdHNNYXA6OmNvbnN0X2l0ZXJh
dG9yIFJlZ2lzdGVyZWRUZXN0SXRlcjsKICAgcmVnaXN0ZXJlZF8gPSB0cnVlOwogCi0gIC8vIFNr
aXAgaW5pdGlhbCB3aGl0ZXNwYWNlIGluIHJlZ2lzdGVyZWRfdGVzdHMgc2luY2Ugc29tZQotICAv
LyBwcmVwcm9jZXNzb3JzIHByZWZpeCBzdHJpbmdpemllZCBsaXRlcmFscyB3aXRoIHdoaXRlc3Bh
Y2UuCi0gIHJlZ2lzdGVyZWRfdGVzdHMgPSBTa2lwU3BhY2VzKHJlZ2lzdGVyZWRfdGVzdHMpOwor
ICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbmFtZV92ZWMgPSBTcGxpdEludG9UZXN0TmFtZXMo
cmVnaXN0ZXJlZF90ZXN0cyk7CiAKICAgTWVzc2FnZSBlcnJvcnM7Ci0gIDo6c3RkOjpzZXQ8U3Ry
aW5nPiB0ZXN0czsKLSAgZm9yIChjb25zdCBjaGFyKiBuYW1lcyA9IHJlZ2lzdGVyZWRfdGVzdHM7
IG5hbWVzICE9IE5VTEw7Ci0gICAgICAgbmFtZXMgPSBTa2lwQ29tbWEobmFtZXMpKSB7Ci0gICAg
Y29uc3QgU3RyaW5nIG5hbWUgPSBHZXRQcmVmaXhVbnRpbENvbW1hKG5hbWVzKTsKKworICBzdGQ6
OnNldDxzdGQ6OnN0cmluZz4gdGVzdHM7CisgIGZvciAoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
Ojpjb25zdF9pdGVyYXRvciBuYW1lX2l0ID0gbmFtZV92ZWMuYmVnaW4oKTsKKyAgICAgICBuYW1l
X2l0ICE9IG5hbWVfdmVjLmVuZCgpOyArK25hbWVfaXQpIHsKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbmFtZSA9ICpuYW1lX2l0OwogICAgIGlmICh0ZXN0cy5jb3VudChuYW1lKSAhPSAwKSB7CiAg
ICAgICBlcnJvcnMgPDwgIlRlc3QgIiA8PCBuYW1lIDw8ICIgaXMgbGlzdGVkIG1vcmUgdGhhbiBv
bmNlLlxuIjsKICAgICAgIGNvbnRpbnVlOwogICAgIH0KIAogICAgIGJvb2wgZm91bmQgPSBmYWxz
ZTsKLSAgICBmb3IgKERlZmluZWRUZXN0SXRlciBpdCA9IGRlZmluZWRfdGVzdF9uYW1lc18uYmVn
aW4oKTsKLSAgICAgICAgIGl0ICE9IGRlZmluZWRfdGVzdF9uYW1lc18uZW5kKCk7CisgICAgZm9y
IChSZWdpc3RlcmVkVGVzdEl0ZXIgaXQgPSByZWdpc3RlcmVkX3Rlc3RzXy5iZWdpbigpOworICAg
ICAgICAgaXQgIT0gcmVnaXN0ZXJlZF90ZXN0c18uZW5kKCk7CiAgICAgICAgICArK2l0KSB7Ci0g
ICAgICBpZiAobmFtZSA9PSAqaXQpIHsKKyAgICAgIGlmIChuYW1lID09IGl0LT5maXJzdCkgewog
ICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQpAQCAtODUsMTUg
KzkzLDE1IEBAIGNvbnN0IGNoYXIqIFR5cGVkVGVzdENhc2VQU3RhdGU6OlZlcmlmeVJlZ2lzdGVy
ZWRUZXN0TmFtZXMoCiAgICAgfQogICB9CiAKLSAgZm9yIChEZWZpbmVkVGVzdEl0ZXIgaXQgPSBk
ZWZpbmVkX3Rlc3RfbmFtZXNfLmJlZ2luKCk7Ci0gICAgICAgaXQgIT0gZGVmaW5lZF90ZXN0X25h
bWVzXy5lbmQoKTsKKyAgZm9yIChSZWdpc3RlcmVkVGVzdEl0ZXIgaXQgPSByZWdpc3RlcmVkX3Rl
c3RzXy5iZWdpbigpOworICAgICAgIGl0ICE9IHJlZ2lzdGVyZWRfdGVzdHNfLmVuZCgpOwogICAg
ICAgICsraXQpIHsKLSAgICBpZiAodGVzdHMuY291bnQoKml0KSA9PSAwKSB7Ci0gICAgICBlcnJv
cnMgPDwgIllvdSBmb3Jnb3QgdG8gbGlzdCB0ZXN0ICIgPDwgKml0IDw8ICIuXG4iOworICAgIGlm
ICh0ZXN0cy5jb3VudChpdC0+Zmlyc3QpID09IDApIHsKKyAgICAgIGVycm9ycyA8PCAiWW91IGZv
cmdvdCB0byBsaXN0IHRlc3QgIiA8PCBpdC0+Zmlyc3QgPDwgIi5cbiI7CiAgICAgfQogICB9CiAK
LSAgY29uc3QgU3RyaW5nJiBlcnJvcnNfc3RyID0gZXJyb3JzLkdldFN0cmluZygpOworICBjb25z
dCBzdGQ6OnN0cmluZyYgZXJyb3JzX3N0ciA9IGVycm9ycy5HZXRTdHJpbmcoKTsKICAgaWYgKGVy
cm9yc19zdHIgIT0gIiIpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzICVzIiwgRm9ybWF0Rmls
ZUxvY2F0aW9uKGZpbGUsIGxpbmUpLmNfc3RyKCksCiAgICAgICAgICAgICBlcnJvcnNfc3RyLmNf
c3RyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LmNjCmluZGV4IDViODcxYzBhZGIw
YTFjNGNmYTIzNzU1NDA1N2Q1MTYwODQ2MTk1MGUuLjk2YjA3YzY4YWJiMDVhMmRiZTFiZTA5ZjFj
MzUzNWJjZjc5ZDAwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9n
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QuY2MKQEAgLTI2
LDExMiArMjYsMTMxIEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKIC8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0v
LwotLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8g
VGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0
KQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGku
aD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2N1
c3RvbS9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgogCiAjaW5jbHVkZSA8
Y3R5cGUuaD4KICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5jbHVk
ZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CiAjaW5j
bHVkZSA8d2NoYXIuaD4KICNpbmNsdWRlIDx3Y3R5cGUuaD4KIAogI2luY2x1ZGUgPGFsZ29yaXRo
bT4KLSNpbmNsdWRlIDxvc3RyZWFtPgorI2luY2x1ZGUgPGlvbWFuaXA+CisjaW5jbHVkZSA8bGlt
aXRzPgorI2luY2x1ZGUgPGxpc3Q+CisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPG9zdHJlYW0+
ICAvLyBOT0xJTlQKICNpbmNsdWRlIDxzc3RyZWFtPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2lm
IEdURVNUX09TX0xJTlVYCiAKLS8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBVc2UgYXV0b2Nv
bmYgdG8gZGV0ZWN0IGF2YWlsYWJpbGl0eSBvZgorLy8gRklYTUU6IFVzZSBhdXRvY29uZiB0byBk
ZXRlY3QgYXZhaWxhYmlsaXR5IG9mCiAvLyBnZXR0aW1lb2ZkYXkoKS4KLSNkZWZpbmUgR1RFU1Rf
SEFTX0dFVFRJTUVPRkRBWV8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQog
Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxzY2hl
ZC5oPgorIyBpbmNsdWRlIDxmY250bC5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPGxpbWl0cy5o
PiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHNjaGVkLmg+ICAvLyBOT0xJTlQKIC8vIERlY2xhcmVz
IHZzbnByaW50ZigpLiAgVGhpcyBoZWFkZXIgaXMgbm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgot
I2luY2x1ZGUgPHN0cmluZ3MuaD4KLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgotI2luY2x1ZGUgPHN5
cy90aW1lLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1
ZGUgPHZlY3Rvcj4KKyMgaW5jbHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUg
PHN5cy9tbWFuLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElO
VAorIyBpbmNsdWRlIDx1bmlzdGQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxzdHJpbmc+CiAK
ICNlbGlmIEdURVNUX09TX1NZTUJJQU4KLSNkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8g
MQotI2luY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMgZGVmaW5lIEdURVNUX0hBU19H
RVRUSU1FT0ZEQVlfIDEKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAogCiAjZWxp
ZiBHVEVTVF9PU19aT1MKLSNkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQotI2luY2x1
ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZE
QVlfIDEKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAogCiAvLyBPbiB6L09TIHdl
IGFkZGl0aW9uYWxseSBuZWVkIHN0cmluZ3MuaCBmb3Igc3RyY2FzZWNtcC4KLSNpbmNsdWRlIDxz
dHJpbmdzLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5UCiAK
ICNlbGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFICAvLyBXZSBhcmUgb24gV2luZG93cyBDRS4K
IAotI2luY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDx3aW5kb3dzLmg+
ICAvLyBOT0xJTlQKKyMgdW5kZWYgbWluCiAKICNlbGlmIEdURVNUX09TX1dJTkRPV1MgIC8vIFdl
IGFyZSBvbiBXaW5kb3dzIHByb3Blci4KIAotI2luY2x1ZGUgPGlvLmg+ICAvLyBOT0xJTlQKLSNp
bmNsdWRlIDxzeXMvdGltZWIuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPiAg
Ly8gTk9MSU5UCi0jaW5jbHVkZSA8c3lzL3N0YXQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxp
by5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy90aW1lYi5oPiAgLy8gTk9MSU5UCisjIGlu
Y2x1ZGUgPHN5cy90eXBlcy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+ICAv
LyBOT0xJTlQKIAotI2lmIEdURVNUX09TX1dJTkRPV1NfTUlOR1cKKyMgaWYgR1RFU1RfT1NfV0lO
RE9XU19NSU5HVwogLy8gTWluR1cgaGFzIGdldHRpbWVvZmRheSgpIGJ1dCBub3QgX2Z0aW1lNjQo
KS4KLS8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBVc2UgYXV0b2NvbmYgdG8gZGV0ZWN0IGF2
YWlsYWJpbGl0eSBvZgorLy8gRklYTUU6IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZhaWxhYmls
aXR5IG9mCiAvLyAgIGdldHRpbWVvZmRheSgpLgotLy8gVE9ETyhrZW50b25AZ29vZ2xlLmNvbSk6
IFRoZXJlIGFyZSBvdGhlciB3YXlzIHRvIGdldCB0aGUgdGltZSBvbgorLy8gRklYTUU6IFRoZXJl
IGFyZSBvdGhlciB3YXlzIHRvIGdldCB0aGUgdGltZSBvbgogLy8gICBXaW5kb3dzLCBsaWtlIEdl
dFRpY2tDb3VudCgpIG9yIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCkuICBNaW5HVwogLy8gICBz
dXBwb3J0cyB0aGVzZS4gIGNvbnNpZGVyIHVzaW5nIHRoZW0gaW5zdGVhZC4KLSNkZWZpbmUgR1RF
U1RfSEFTX0dFVFRJTUVPRkRBWV8gMQotI2luY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQK
LSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NSU5HVworIyAgZGVmaW5lIEdURVNUX0hBU19H
RVRUSU1FT0ZEQVlfIDEKKyMgIGluY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMgZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTUlOR1cKIAogLy8gY3BwbGludCB0aGlua3MgdGhhdCB0
aGUgaGVhZGVyIGlzIGFscmVhZHkgaW5jbHVkZWQsIHNvIHdlIHdhbnQgdG8KIC8vIHNpbGVuY2Ug
aXQuCi0jaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHdpbmRvd3Mu
aD4gIC8vIE5PTElOVAorIyB1bmRlZiBtaW4KIAogI2Vsc2UKIAogLy8gQXNzdW1lIG90aGVyIHBs
YXRmb3JtcyBoYXZlIGdldHRpbWVvZmRheSgpLgotLy8gVE9ETyhrZW50b25AZ29vZ2xlLmNvbSk6
IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZhaWxhYmlsaXR5IG9mCisvLyBGSVhNRTogVXNlIGF1
dG9jb25mIHRvIGRldGVjdCBhdmFpbGFiaWxpdHkgb2YKIC8vICAgZ2V0dGltZW9mZGF5KCkuCi0j
ZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKKyMgZGVmaW5lIEdURVNUX0hBU19HRVRU
SU1FT0ZEQVlfIDEKIAogLy8gY3BwbGludCB0aGlua3MgdGhhdCB0aGUgaGVhZGVyIGlzIGFscmVh
ZHkgaW5jbHVkZWQsIHNvIHdlIHdhbnQgdG8KIC8vIHNpbGVuY2UgaXQuCi0jaW5jbHVkZSA8c3lz
L3RpbWUuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHVuaXN0ZC5oPiAgLy8gTk9MSU5UCisjIGlu
Y2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8dW5pc3RkLmg+ICAvLyBO
T0xJTlQKIAogI2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAogCiAjaWYgR1RFU1RfSEFTX0VYQ0VQ
VElPTlMKLSNpbmNsdWRlIDxzdGRleGNlcHQ+CisjIGluY2x1ZGUgPHN0ZGV4Y2VwdD4KKyNlbmRp
ZgorCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworIyBpbmNsdWRlIDxhcnBhL2luZXQu
aD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxuZXRkYi5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUg
PHN5cy9zb2NrZXQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4gIC8vIE5P
TElOVAogI2VuZGlmCiAKLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBp
cyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21l
IGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdp
bGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1
c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgot
Ly8gaGlzIGNvZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCiAjaW5jbHVkZSAi
c3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwog
CiAjaWYgR1RFU1RfT1NfV0lORE9XUwotI2RlZmluZSB2c25wcmludGYgX3ZzbnByaW50ZgorIyBk
ZWZpbmUgdnNucHJpbnRmIF92c25wcmludGYKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwog
CisjaWYgR1RFU1RfT1NfTUFDCisjaWZuZGVmIEdURVNUX09TX0lPUworI2luY2x1ZGUgPGNydF9l
eHRlcm5zLmg+CisjZW5kaWYKKyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX0FCU0wKKyNpbmNsdWRl
ICJhYnNsL2RlYnVnZ2luZy9mYWlsdXJlX3NpZ25hbF9oYW5kbGVyLmgiCisjaW5jbHVkZSAiYWJz
bC9kZWJ1Z2dpbmcvc3RhY2t0cmFjZS5oIgorI2luY2x1ZGUgImFic2wvZGVidWdnaW5nL3N5bWJv
bGl6ZS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCisjZW5kaWYgIC8vIEdU
RVNUX0hBU19BQlNMCisKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIAogdXNpbmcgaW50ZXJuYWw6OkNv
dW50SWY7CkBAIC0xNTMsOCArMTcyLDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RD
YXNlRmlsdGVyW10gPSAiKkRlYXRoVGVzdDoqRGVhdGhUZXN0LyoiOwogLy8gQSB0ZXN0IGZpbHRl
ciB0aGF0IG1hdGNoZXMgZXZlcnl0aGluZy4KIHN0YXRpYyBjb25zdCBjaGFyIGtVbml2ZXJzYWxG
aWx0ZXJbXSA9ICIqIjsKIAotLy8gVGhlIGRlZmF1bHQgb3V0cHV0IGZpbGUgZm9yIFhNTCBvdXRw
dXQuCi1zdGF0aWMgY29uc3QgY2hhciBrRGVmYXVsdE91dHB1dEZpbGVbXSA9ICJ0ZXN0X2RldGFp
bC54bWwiOworLy8gVGhlIGRlZmF1bHQgb3V0cHV0IGZvcm1hdC4KK3N0YXRpYyBjb25zdCBjaGFy
IGtEZWZhdWx0T3V0cHV0Rm9ybWF0W10gPSAieG1sIjsKKy8vIFRoZSBkZWZhdWx0IG91dHB1dCBm
aWxlLgorc3RhdGljIGNvbnN0IGNoYXIga0RlZmF1bHRPdXRwdXRGaWxlW10gPSAidGVzdF9kZXRh
aWwiOwogCiAvLyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZSBmb3IgdGhlIHRlc3Qgc2hh
cmQgaW5kZXguCiBzdGF0aWMgY29uc3QgY2hhciBrVGVzdFNoYXJkSW5kZXhbXSA9ICJHVEVTVF9T
SEFSRF9JTkRFWCI7CkBAIC0xNzMsOCArMTk0LDM0IEBAIGNvbnN0IGNoYXIga1N0YWNrVHJhY2VN
YXJrZXJbXSA9ICJcblN0YWNrIHRyYWNlOlxuIjsKIC8vIHNwZWNpZmllZCBvbiB0aGUgY29tbWFu
ZCBsaW5lLgogYm9vbCBnX2hlbHBfZmxhZyA9IGZhbHNlOwogCisvLyBVdGlsdHkgZnVuY3Rpb24g
dG8gT3BlbiBGaWxlIGZvciBXcml0aW5nCitzdGF0aWMgRklMRSogT3BlbkZpbGVGb3JXcml0aW5n
KGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZmlsZSkgeworICBGSUxFKiBmaWxlb3V0ID0gTlVM
TDsKKyAgRmlsZVBhdGggb3V0cHV0X2ZpbGVfcGF0aChvdXRwdXRfZmlsZSk7CisgIEZpbGVQYXRo
IG91dHB1dF9kaXIob3V0cHV0X2ZpbGVfcGF0aC5SZW1vdmVGaWxlTmFtZSgpKTsKKworICBpZiAo
b3V0cHV0X2Rpci5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpIHsKKyAgICBmaWxlb3V0
ID0gcG9zaXg6OkZPcGVuKG91dHB1dF9maWxlLmNfc3RyKCksICJ3Iik7CisgIH0KKyAgaWYgKGZp
bGVvdXQgPT0gTlVMTCkgeworICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICJVbmFibGUgdG8gb3Bl
biBmaWxlIFwiIiA8PCBvdXRwdXRfZmlsZSA8PCAiXCIiOworICB9CisgIHJldHVybiBmaWxlb3V0
OworfQorCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAorLy8gQmF6ZWwgcGFzc2VzIGluIHRo
ZSBhcmd1bWVudCB0byAnLS10ZXN0X2ZpbHRlcicgdmlhIHRoZSBURVNUQlJJREdFX1RFU1RfT05M
WQorLy8gZW52aXJvbm1lbnQgdmFyaWFibGUuCitzdGF0aWMgY29uc3QgY2hhciogR2V0RGVmYXVs
dEZpbHRlcigpIHsKKyAgY29uc3QgY2hhciogY29uc3QgdGVzdGJyaWRnZV90ZXN0X29ubHkgPQor
ICAgICAgaW50ZXJuYWw6OnBvc2l4OjpHZXRFbnYoIlRFU1RCUklER0VfVEVTVF9PTkxZIik7Cisg
IGlmICh0ZXN0YnJpZGdlX3Rlc3Rfb25seSAhPSBOVUxMKSB7CisgICAgcmV0dXJuIHRlc3Ricmlk
Z2VfdGVzdF9vbmx5OworICB9CisgIHJldHVybiBrVW5pdmVyc2FsRmlsdGVyOworfQorCiBHVEVT
VF9ERUZJTkVfYm9vbF8oCiAgICAgYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMsCiAgICAgaW50ZXJu
YWw6OkJvb2xGcm9tR1Rlc3RFbnYoImFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIiwgZmFsc2UpLApA
QCAtMTg3LDcgKzIzNCw3IEBAIEdURVNUX0RFRklORV9ib29sXygKIAogR1RFU1RfREVGSU5FX2Jv
b2xfKAogICAgIGNhdGNoX2V4Y2VwdGlvbnMsCi0gICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RF
bnYoImNhdGNoX2V4Y2VwdGlvbnMiLCBmYWxzZSksCisgICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rl
c3RFbnYoImNhdGNoX2V4Y2VwdGlvbnMiLCB0cnVlKSwKICAgICAiVHJ1ZSBpZmYgIiBHVEVTVF9O
QU1FXwogICAgICIgc2hvdWxkIGNhdGNoIGV4Y2VwdGlvbnMgYW5kIHRyZWF0IHRoZW0gYXMgdGVz
dCBmYWlsdXJlcy4iKTsKIApAQCAtMTk3LDI2ICsyNDQsMzkgQEAgR1RFU1RfREVGSU5FX3N0cmlu
Z18oCiAgICAgIldoZXRoZXIgdG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0LiAgVmFsaWQgdmFs
dWVzOiB5ZXMsIG5vLCAiCiAgICAgImFuZCBhdXRvLiAgJ2F1dG8nIG1lYW5zIHRvIHVzZSBjb2xv
cnMgaWYgdGhlIG91dHB1dCBpcyAiCiAgICAgImJlaW5nIHNlbnQgdG8gYSB0ZXJtaW5hbCBhbmQg
dGhlIFRFUk0gZW52aXJvbm1lbnQgdmFyaWFibGUgIgotICAgICJpcyBzZXQgdG8geHRlcm0sIHh0
ZXJtLWNvbG9yLCB4dGVybS0yNTZjb2xvciwgbGludXggb3IgY3lnd2luLiIpOworICAgICJpcyBz
ZXQgdG8gYSB0ZXJtaW5hbCB0eXBlIHRoYXQgc3VwcG9ydHMgY29sb3JzLiIpOwogCiBHVEVTVF9E
RUZJTkVfc3RyaW5nXygKICAgICBmaWx0ZXIsCi0gICAgaW50ZXJuYWw6OlN0cmluZ0Zyb21HVGVz
dEVudigiZmlsdGVyIiwga1VuaXZlcnNhbEZpbHRlciksCisgICAgaW50ZXJuYWw6OlN0cmluZ0Zy
b21HVGVzdEVudigiZmlsdGVyIiwgR2V0RGVmYXVsdEZpbHRlcigpKSwKICAgICAiQSBjb2xvbi1z
ZXBhcmF0ZWQgbGlzdCBvZiBnbG9iIChub3QgcmVnZXgpIHBhdHRlcm5zICIKICAgICAiZm9yIGZp
bHRlcmluZyB0aGUgdGVzdHMgdG8gcnVuLCBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgIgogICAg
ICInLScgYW5kIGEgOiBzZXBhcmF0ZWQgbGlzdCBvZiBuZWdhdGl2ZSBwYXR0ZXJucyAodGVzdHMg
dG8gIgogICAgICJleGNsdWRlKS4gIEEgdGVzdCBpcyBydW4gaWYgaXQgbWF0Y2hlcyBvbmUgb2Yg
dGhlIHBvc2l0aXZlICIKICAgICAicGF0dGVybnMgYW5kIGRvZXMgbm90IG1hdGNoIGFueSBvZiB0
aGUgbmVnYXRpdmUgcGF0dGVybnMuIik7CiAKK0dURVNUX0RFRklORV9ib29sXygKKyAgICBpbnN0
YWxsX2ZhaWx1cmVfc2lnbmFsX2hhbmRsZXIsCisgICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RF
bnYoImluc3RhbGxfZmFpbHVyZV9zaWduYWxfaGFuZGxlciIsIGZhbHNlKSwKKyAgICAiSWYgdHJ1
ZSBhbmQgc3VwcG9ydGVkIG9uIHRoZSBjdXJyZW50IHBsYXRmb3JtLCAiIEdURVNUX05BTUVfICIg
c2hvdWxkICIKKyAgICAiaW5zdGFsbCBhIHNpZ25hbCBoYW5kbGVyIHRoYXQgZHVtcHMgZGVidWdn
aW5nIGluZm9ybWF0aW9uIHdoZW4gZmF0YWwgIgorICAgICJzaWduYWxzIGFyZSByYWlzZWQuIik7
CisKIEdURVNUX0RFRklORV9ib29sXyhsaXN0X3Rlc3RzLCBmYWxzZSwKICAgICAgICAgICAgICAg
ICAgICAiTGlzdCBhbGwgdGVzdHMgd2l0aG91dCBydW5uaW5nIHRoZW0uIik7CiAKKy8vIFRoZSBu
ZXQgcHJpb3JpdHkgb3JkZXIgYWZ0ZXIgZmxhZyBwcm9jZXNzaW5nIGlzIHRodXM6CisvLyAgIC0t
Z3Rlc3Rfb3V0cHV0IGNvbW1hbmQgbGluZSBmbGFnCisvLyAgIEdURVNUX09VVFBVVCBlbnZpcm9u
bWVudCB2YXJpYWJsZQorLy8gICBYTUxfT1VUUFVUX0ZJTEUgZW52aXJvbm1lbnQgdmFyaWFibGUK
Ky8vICAgJycKIEdURVNUX0RFRklORV9zdHJpbmdfKAogICAgIG91dHB1dCwKLSAgICBpbnRlcm5h
bDo6U3RyaW5nRnJvbUdUZXN0RW52KCJvdXRwdXQiLCAiIiksCi0gICAgIkEgZm9ybWF0IChjdXJy
ZW50bHkgbXVzdCBiZSBcInhtbFwiKSwgb3B0aW9uYWxseSBmb2xsb3dlZCAiCi0gICAgImJ5IGEg
Y29sb24gYW5kIGFuIG91dHB1dCBmaWxlIG5hbWUgb3IgZGlyZWN0b3J5LiBBIGRpcmVjdG9yeSAi
Ci0gICAgImlzIGluZGljYXRlZCBieSBhIHRyYWlsaW5nIHBhdGhuYW1lIHNlcGFyYXRvci4gIgor
ICAgIGludGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYoIm91dHB1dCIsCisgICAgICBpbnRlcm5h
bDo6T3V0cHV0RmxhZ0Fsc29DaGVja0VudlZhcigpLmNfc3RyKCkpLAorICAgICJBIGZvcm1hdCAo
ZGVmYXVsdHMgdG8gXCJ4bWxcIiBidXQgY2FuIGJlIHNwZWNpZmllZCB0byBiZSBcImpzb25cIiks
ICIKKyAgICAib3B0aW9uYWxseSBmb2xsb3dlZCBieSBhIGNvbG9uIGFuZCBhbiBvdXRwdXQgZmls
ZSBuYW1lIG9yIGRpcmVjdG9yeS4gIgorICAgICJBIGRpcmVjdG9yeSBpcyBpbmRpY2F0ZWQgYnkg
YSB0cmFpbGluZyBwYXRobmFtZSBzZXBhcmF0b3IuICIKICAgICAiRXhhbXBsZXM6IFwieG1sOmZp
bGVuYW1lLnhtbFwiLCBcInhtbDo6ZGlyZWN0b3J5bmFtZS9cIi4gIgogICAgICJJZiBhIGRpcmVj
dG9yeSBpcyBzcGVjaWZpZWQsIG91dHB1dCBmaWxlcyB3aWxsIGJlIGNyZWF0ZWQgIgogICAgICJ3
aXRoaW4gdGhhdCBkaXJlY3RvcnksIHdpdGggZmlsZS1uYW1lcyBiYXNlZCBvbiB0aGUgdGVzdCAi
CkBAIC0yMjksNiArMjg5LDEyIEBAIEdURVNUX0RFRklORV9ib29sXygKICAgICAiVHJ1ZSBpZmYg
IiBHVEVTVF9OQU1FXwogICAgICIgc2hvdWxkIGRpc3BsYXkgZWxhcHNlZCB0aW1lIGluIHRleHQg
b3V0cHV0LiIpOwogCitHVEVTVF9ERUZJTkVfYm9vbF8oCisgICAgcHJpbnRfdXRmOCwKKyAgICBp
bnRlcm5hbDo6Qm9vbEZyb21HVGVzdEVudigicHJpbnRfdXRmOCIsIHRydWUpLAorICAgICJUcnVl
IGlmZiAiIEdURVNUX05BTUVfCisgICAgIiBwcmludHMgVVRGOCBjaGFyYWN0ZXJzIGFzIHRleHQu
Iik7CisKIEdURVNUX0RFRklORV9pbnQzMl8oCiAgICAgcmFuZG9tX3NlZWQsCiAgICAgaW50ZXJu
YWw6OkludDMyRnJvbUdUZXN0RW52KCJyYW5kb21fc2VlZCIsIDApLApAQCAtMjU4LDEyICszMjQs
MjYgQEAgR1RFU1RfREVGSU5FX2ludDMyXygKICAgICAiVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0
YWNrIGZyYW1lcyB0byBwcmludCB3aGVuIGFuICIKICAgICAiYXNzZXJ0aW9uIGZhaWxzLiAgVGhl
IHZhbGlkIHJhbmdlIGlzIDAgdGhyb3VnaCAxMDAsIGluY2x1c2l2ZS4iKTsKIAorR1RFU1RfREVG
SU5FX3N0cmluZ18oCisgICAgc3RyZWFtX3Jlc3VsdF90bywKKyAgICBpbnRlcm5hbDo6U3RyaW5n
RnJvbUdUZXN0RW52KCJzdHJlYW1fcmVzdWx0X3RvIiwgIiIpLAorICAgICJUaGlzIGZsYWcgc3Bl
Y2lmaWVzIHRoZSBob3N0IG5hbWUgYW5kIHRoZSBwb3J0IG51bWJlciBvbiB3aGljaCB0byBzdHJl
YW0gIgorICAgICJ0ZXN0IHJlc3VsdHMuIEV4YW1wbGU6IFwibG9jYWxob3N0OjU1NVwiLiBUaGUg
ZmxhZyBpcyBlZmZlY3RpdmUgb25seSBvbiAiCisgICAgIkxpbnV4LiIpOworCiBHVEVTVF9ERUZJ
TkVfYm9vbF8oCiAgICAgdGhyb3dfb25fZmFpbHVyZSwKICAgICBpbnRlcm5hbDo6Qm9vbEZyb21H
VGVzdEVudigidGhyb3dfb25fZmFpbHVyZSIsIGZhbHNlKSwKICAgICAiV2hlbiB0aGlzIGZsYWcg
aXMgc3BlY2lmaWVkLCBhIGZhaWxlZCBhc3NlcnRpb24gd2lsbCB0aHJvdyBhbiBleGNlcHRpb24g
IgogICAgICJpZiBleGNlcHRpb25zIGFyZSBlbmFibGVkIG9yIGV4aXQgdGhlIHByb2dyYW0gd2l0
aCBhIG5vbi16ZXJvIGNvZGUgIgotICAgICJvdGhlcndpc2UuIik7CisgICAgIm90aGVyd2lzZS4g
Rm9yIHVzZSB3aXRoIGFuIGV4dGVybmFsIHRlc3QgZnJhbWV3b3JrLiIpOworCisjaWYgR1RFU1Rf
VVNFX09XTl9GTEFHRklMRV9GTEFHXworR1RFU1RfREVGSU5FX3N0cmluZ18oCisgICAgZmxhZ2Zp
bGUsCisgICAgaW50ZXJuYWw6OlN0cmluZ0Zyb21HVGVzdEVudigiZmxhZ2ZpbGUiLCAiIiksCisg
ICAgIlRoaXMgZmxhZyBzcGVjaWZpZXMgdGhlIGZsYWdmaWxlIHRvIHJlYWQgY29tbWFuZC1saW5l
IGZsYWdzIGZyb20uIik7CisjZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18K
IAogbmFtZXNwYWNlIGludGVybmFsIHsKIApAQCAtMjcyLDcgKzM1Miw4IEBAIG5hbWVzcGFjZSBp
bnRlcm5hbCB7CiAvLyB0aGFuIGtNYXhSYW5nZS4KIFVJbnQzMiBSYW5kb206OkdlbmVyYXRlKFVJ
bnQzMiByYW5nZSkgewogICAvLyBUaGVzZSBjb25zdGFudHMgYXJlIHRoZSBzYW1lIGFzIGFyZSB1
c2VkIGluIGdsaWJjJ3MgcmFuZCgzKS4KLSAgc3RhdGVfID0gKDExMDM1MTUyNDVVKnN0YXRlXyAr
IDEyMzQ1VSkgJSBrTWF4UmFuZ2U7CisgIC8vIFVzZSB3aWRlciB0eXBlcyB0aGFuIG5lY2Vzc2Fy
eSB0byBwcmV2ZW50IHVuc2lnbmVkIG92ZXJmbG93IGRpYWdub3N0aWNzLgorICBzdGF0ZV8gPSBz
dGF0aWNfY2FzdDxVSW50MzI+KDExMDM1MTUyNDVVTEwqc3RhdGVfICsgMTIzNDVVKSAlIGtNYXhS
YW5nZTsKIAogICBHVEVTVF9DSEVDS18ocmFuZ2UgPiAwKQogICAgICAgPDwgIkNhbm5vdCBnZW5l
cmF0ZSBhIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDApLiI7CkBAIC0yODksMTMgKzM3MCw3IEBA
IFVJbnQzMiBSYW5kb206OkdlbmVyYXRlKFVJbnQzMiByYW5nZSkgewogLy8gR1Rlc3RJc0luaXRp
YWxpemVkKCkgcmV0dXJucyB0cnVlIGlmZiB0aGUgdXNlciBoYXMgaW5pdGlhbGl6ZWQKIC8vIEdv
b2dsZSBUZXN0LiAgVXNlZnVsIGZvciBjYXRjaGluZyB0aGUgdXNlciBtaXN0YWtlIG9mIG5vdCBp
bml0aWFsaXppbmcKIC8vIEdvb2dsZSBUZXN0IGJlZm9yZSBjYWxsaW5nIFJVTl9BTExfVEVTVFMo
KS4KLS8vCi0vLyBBIHVzZXIgbXVzdCBjYWxsIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCkgdG8g
aW5pdGlhbGl6ZSBHb29nbGUKLS8vIFRlc3QuICBnX2luaXRfZ3Rlc3RfY291bnQgaXMgc2V0IHRv
IHRoZSBudW1iZXIgb2YgdGltZXMKLS8vIEluaXRHb29nbGVUZXN0KCkgaGFzIGJlZW4gY2FsbGVk
LiAgV2UgZG9uJ3QgcHJvdGVjdCB0aGlzIHZhcmlhYmxlCi0vLyB1bmRlciBhIG11dGV4IGFzIGl0
IGlzIG9ubHkgYWNjZXNzZWQgaW4gdGhlIG1haW4gdGhyZWFkLgotaW50IGdfaW5pdF9ndGVzdF9j
b3VudCA9IDA7Ci1zdGF0aWMgYm9vbCBHVGVzdElzSW5pdGlhbGl6ZWQoKSB7IHJldHVybiBnX2lu
aXRfZ3Rlc3RfY291bnQgIT0gMDsgfQorc3RhdGljIGJvb2wgR1Rlc3RJc0luaXRpYWxpemVkKCkg
eyByZXR1cm4gR2V0QXJndnMoKS5zaXplKCkgPiAwOyB9CiAKIC8vIEl0ZXJhdGVzIG92ZXIgYSB2
ZWN0b3Igb2YgVGVzdENhc2VzLCBrZWVwaW5nIGEgcnVubmluZyBzdW0gb2YgdGhlCiAvLyByZXN1
bHRzIG9mIGNhbGxpbmcgYSBnaXZlbiBpbnQtcmV0dXJuaW5nIG1ldGhvZCBvbiBlYWNoLgpAQCAt
MzQ5LDEwICs0MjQsMjEgQEAgdm9pZCBBc3NlcnRIZWxwZXI6Om9wZXJhdG9yPShjb25zdCBNZXNz
YWdlJiBtZXNzYWdlKSBjb25zdCB7CiB9CiAKIC8vIE11dGV4IGZvciBsaW5rZWQgcG9pbnRlcnMu
Ci1HVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhnX2xpbmtlZF9wdHJfbXV0ZXgpOworR1RFU1Rf
QVBJXyBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhnX2xpbmtlZF9wdHJfbXV0ZXgpOwogCi0v
LyBBcHBsaWNhdGlvbiBwYXRobmFtZSBnb3R0ZW4gaW4gSW5pdEdvb2dsZVRlc3QuCi1TdHJpbmcg
Z19leGVjdXRhYmxlX3BhdGg7CisvLyBBIGNvcHkgb2YgYWxsIGNvbW1hbmQgbGluZSBhcmd1bWVu
dHMuICBTZXQgYnkgSW5pdEdvb2dsZVRlc3QoKS4KK3N0YXRpYyA6OnN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiBnX2FyZ3ZzOworCis6OnN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRBcmd2cygp
IHsKKyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9HRVRfQVJHVlNfKQorICAvLyBHVEVTVF9DVVNU
T01fR0VUX0FSR1ZTXygpIG1heSByZXR1cm4gYSBjb250YWluZXIgb2Ygc3RkOjpzdHJpbmcgb3IK
KyAgLy8gOjpzdHJpbmcuIFRoaXMgY29kZSBjb252ZXJ0cyBpdCB0byB0aGUgYXBwcm9wcmlhdGUg
dHlwZS4KKyAgY29uc3QgYXV0byYgY3VzdG9tID0gR1RFU1RfQ1VTVE9NX0dFVF9BUkdWU18oKTsK
KyAgcmV0dXJuIDo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KGN1c3RvbS5iZWdpbigpLCBjdXN0
b20uZW5kKCkpOworI2Vsc2UgICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9HRVRfQVJHVlNfKQor
ICByZXR1cm4gZ19hcmd2czsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01fR0VUX0FS
R1ZTXykKK30KIAogLy8gUmV0dXJucyB0aGUgY3VycmVudCBhcHBsaWNhdGlvbidzIG5hbWUsIHJl
bW92aW5nIGRpcmVjdG9yeSBwYXRoIGlmIHRoYXQKIC8vIGlzIHByZXNlbnQuCkBAIC0zNjAsOSAr
NDQ2LDkgQEAgRmlsZVBhdGggR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkgewogICBGaWxlUGF0
aCByZXN1bHQ7CiAKICNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIHJlc3VsdC5TZXQoRmlsZVBhdGgo
Z19leGVjdXRhYmxlX3BhdGgpLlJlbW92ZUV4dGVuc2lvbigiZXhlIikpOworICByZXN1bHQuU2V0
KEZpbGVQYXRoKEdldEFyZ3ZzKClbMF0pLlJlbW92ZUV4dGVuc2lvbigiZXhlIikpOwogI2Vsc2UK
LSAgcmVzdWx0LlNldChGaWxlUGF0aChnX2V4ZWN1dGFibGVfcGF0aCkpOworICByZXN1bHQuU2V0
KEZpbGVQYXRoKEdldEFyZ3ZzKClbMF0pKTsKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwog
CiAgIHJldHVybiByZXN1bHQuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpOwpAQCAtMzcxLDMzICs0NTcs
MzQgQEAgRmlsZVBhdGggR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkgewogLy8gRnVuY3Rpb25z
IGZvciBwcm9jZXNzaW5nIHRoZSBndGVzdF9vdXRwdXQgZmxhZy4KIAogLy8gUmV0dXJucyB0aGUg
b3V0cHV0IGZvcm1hdCwgb3IgIiIgZm9yIG5vcm1hbCBwcmludGVkIG91dHB1dC4KLVN0cmluZyBV
bml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdCgpIHsKK3N0ZDo6c3RyaW5nIFVuaXRUZXN0
T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCkgewogICBjb25zdCBjaGFyKiBjb25zdCBndGVzdF9v
dXRwdXRfZmxhZyA9IEdURVNUX0ZMQUcob3V0cHV0KS5jX3N0cigpOwotICBpZiAoZ3Rlc3Rfb3V0
cHV0X2ZsYWcgPT0gTlVMTCkgcmV0dXJuIFN0cmluZygiIik7Ci0KICAgY29uc3QgY2hhciogY29u
c3QgY29sb24gPSBzdHJjaHIoZ3Rlc3Rfb3V0cHV0X2ZsYWcsICc6Jyk7CiAgIHJldHVybiAoY29s
b24gPT0gTlVMTCkgPwotICAgICAgU3RyaW5nKGd0ZXN0X291dHB1dF9mbGFnKSA6Ci0gICAgICBT
dHJpbmcoZ3Rlc3Rfb3V0cHV0X2ZsYWcsIGNvbG9uIC0gZ3Rlc3Rfb3V0cHV0X2ZsYWcpOworICAg
ICAgc3RkOjpzdHJpbmcoZ3Rlc3Rfb3V0cHV0X2ZsYWcpIDoKKyAgICAgIHN0ZDo6c3RyaW5nKGd0
ZXN0X291dHB1dF9mbGFnLCBjb2xvbiAtIGd0ZXN0X291dHB1dF9mbGFnKTsKIH0KIAogLy8gUmV0
dXJucyB0aGUgbmFtZSBvZiB0aGUgcmVxdWVzdGVkIG91dHB1dCBmaWxlLCBvciB0aGUgZGVmYXVs
dCBpZiBub25lCiAvLyB3YXMgZXhwbGljaXRseSBzcGVjaWZpZWQuCi1TdHJpbmcgVW5pdFRlc3RP
cHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSB7CitzdGQ6OnN0cmluZyBVbml0
VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpIHsKICAgY29uc3QgY2hh
ciogY29uc3QgZ3Rlc3Rfb3V0cHV0X2ZsYWcgPSBHVEVTVF9GTEFHKG91dHB1dCkuY19zdHIoKTsK
LSAgaWYgKGd0ZXN0X291dHB1dF9mbGFnID09IE5VTEwpCi0gICAgcmV0dXJuIFN0cmluZygiIik7
CisKKyAgc3RkOjpzdHJpbmcgZm9ybWF0ID0gR2V0T3V0cHV0Rm9ybWF0KCk7CisgIGlmIChmb3Jt
YXQuZW1wdHkoKSkKKyAgICBmb3JtYXQgPSBzdGQ6OnN0cmluZyhrRGVmYXVsdE91dHB1dEZvcm1h
dCk7CiAKICAgY29uc3QgY2hhciogY29uc3QgY29sb24gPSBzdHJjaHIoZ3Rlc3Rfb3V0cHV0X2Zs
YWcsICc6Jyk7CiAgIGlmIChjb2xvbiA9PSBOVUxMKQotICAgIHJldHVybiBTdHJpbmcoaW50ZXJu
YWw6OkZpbGVQYXRoOjpDb25jYXRQYXRocygKLSAgICAgICAgICAgICAgIGludGVybmFsOjpGaWxl
UGF0aCgKLSAgICAgICAgICAgICAgICAgICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+b3JpZ2lu
YWxfd29ya2luZ19kaXIoKSksCi0gICAgICAgICAgICAgICBpbnRlcm5hbDo6RmlsZVBhdGgoa0Rl
ZmF1bHRPdXRwdXRGaWxlKSkuVG9TdHJpbmcoKSApOworICAgIHJldHVybiBpbnRlcm5hbDo6Rmls
ZVBhdGg6Ok1ha2VGaWxlTmFtZSgKKyAgICAgICAgaW50ZXJuYWw6OkZpbGVQYXRoKAorICAgICAg
ICAgICAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPm9yaWdpbmFsX3dvcmtpbmdfZGlyKCkpLAor
ICAgICAgICBpbnRlcm5hbDo6RmlsZVBhdGgoa0RlZmF1bHRPdXRwdXRGaWxlKSwgMCwKKyAgICAg
ICAgZm9ybWF0LmNfc3RyKCkpLnN0cmluZygpOwogCiAgIGludGVybmFsOjpGaWxlUGF0aCBvdXRw
dXRfbmFtZShjb2xvbiArIDEpOwogICBpZiAoIW91dHB1dF9uYW1lLklzQWJzb2x1dGVQYXRoKCkp
Ci0gICAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IG9uIFdpbmRvd3MgXHNvbWVccGF0aCBpcyBu
b3QgYW4gYWJzb2x1dGUKKyAgICAvLyBGSVhNRTogb24gV2luZG93cyBcc29tZVxwYXRoIGlzIG5v
dCBhbiBhYnNvbHV0ZQogICAgIC8vIHBhdGggKGFzIGl0cyBtZWFuaW5nIGRlcGVuZHMgb24gdGhl
IGN1cnJlbnQgZHJpdmUpLCB5ZXQgdGhlCiAgICAgLy8gZm9sbG93aW5nIGxvZ2ljIGZvciB0dXJu
aW5nIGl0IGludG8gYW4gYWJzb2x1dGUgcGF0aCBpcyB3cm9uZy4KICAgICAvLyBGaXggaXQuCkBA
IC00MDYsMTIgKzQ5MywxMiBAQCBTdHJpbmcgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBh
dGhUb091dHB1dEZpbGUoKSB7CiAgICAgICAgIGludGVybmFsOjpGaWxlUGF0aChjb2xvbiArIDEp
KTsKIAogICBpZiAoIW91dHB1dF9uYW1lLklzRGlyZWN0b3J5KCkpCi0gICAgcmV0dXJuIG91dHB1
dF9uYW1lLlRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG91dHB1dF9uYW1lLnN0cmluZygpOwogCiAg
IGludGVybmFsOjpGaWxlUGF0aCByZXN1bHQoaW50ZXJuYWw6OkZpbGVQYXRoOjpHZW5lcmF0ZVVu
aXF1ZUZpbGVOYW1lKAogICAgICAgb3V0cHV0X25hbWUsIGludGVybmFsOjpHZXRDdXJyZW50RXhl
Y3V0YWJsZU5hbWUoKSwKICAgICAgIEdldE91dHB1dEZvcm1hdCgpLmNfc3RyKCkpKTsKLSAgcmV0
dXJuIHJlc3VsdC5Ub1N0cmluZygpOworICByZXR1cm4gcmVzdWx0LnN0cmluZygpOwogfQogCiAv
LyBSZXR1cm5zIHRydWUgaWZmIHRoZSB3aWxkY2FyZCBwYXR0ZXJuIG1hdGNoZXMgdGhlIHN0cmlu
Zy4gIFRoZQpAQCAtNDM2LDcgKzUyMyw4IEBAIGJvb2wgVW5pdFRlc3RPcHRpb25zOjpQYXR0ZXJu
TWF0Y2hlc1N0cmluZyhjb25zdCBjaGFyICpwYXR0ZXJuLAogICB9CiB9CiAKLWJvb2wgVW5pdFRl
c3RPcHRpb25zOjpNYXRjaGVzRmlsdGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgY2hhciog
ZmlsdGVyKSB7Citib29sIFVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcigKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyYgbmFtZSwgY29uc3QgY2hhciogZmlsdGVyKSB7CiAgIGNvbnN0IGNoYXIg
KmN1cl9wYXR0ZXJuID0gZmlsdGVyOwogICBmb3IgKDs7KSB7CiAgICAgaWYgKFBhdHRlcm5NYXRj
aGVzU3RyaW5nKGN1cl9wYXR0ZXJuLCBuYW1lLmNfc3RyKCkpKSB7CkBAIC00NTYsMjggKzU0NCwy
NCBAQCBib29sIFVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcihjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IGNoYXIqIGZpbHRlcikgewogICB9CiB9CiAKLS8vIFRPRE8oa2VpdGhyYXkpOiBt
b3ZlIFN0cmluZyBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMgdG8gZ3Rlc3Qtc3RyaW5nLmNjLgot
CiAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB1c2VyLXNwZWNpZmllZCBmaWx0ZXIgbWF0Y2hlcyB0
aGUgdGVzdCBjYXNlCiAvLyBuYW1lIGFuZCB0aGUgdGVzdCBuYW1lLgotYm9vbCBVbml0VGVzdE9w
dGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KGNvbnN0IFN0cmluZyAmdGVzdF9jYXNlX25hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nICZ0ZXN0
X25hbWUpIHsKLSAgY29uc3QgU3RyaW5nJiBmdWxsX25hbWUgPSBTdHJpbmc6OkZvcm1hdCgiJXMu
JXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY2Fz
ZV9uYW1lLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdF9uYW1lLmNfc3RyKCkpOworYm9vbCBVbml0VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNo
ZXNUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdGVzdF9uYW1lKSB7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmdWxsX25hbWUgPSB0ZXN0X2Nhc2VfbmFtZSArICIuIiAr
IHRlc3RfbmFtZS5jX3N0cigpOwogCiAgIC8vIFNwbGl0IC0tZ3Rlc3RfZmlsdGVyIGF0ICctJywg
aWYgdGhlcmUgaXMgb25lLCB0byBzZXBhcmF0ZSBpbnRvCiAgIC8vIHBvc2l0aXZlIGZpbHRlciBh
bmQgbmVnYXRpdmUgZmlsdGVyIHBvcnRpb25zCiAgIGNvbnN0IGNoYXIqIGNvbnN0IHAgPSBHVEVT
VF9GTEFHKGZpbHRlcikuY19zdHIoKTsKICAgY29uc3QgY2hhciogY29uc3QgZGFzaCA9IHN0cmNo
cihwLCAnLScpOwotICBTdHJpbmcgcG9zaXRpdmU7Ci0gIFN0cmluZyBuZWdhdGl2ZTsKKyAgc3Rk
OjpzdHJpbmcgcG9zaXRpdmU7CisgIHN0ZDo6c3RyaW5nIG5lZ2F0aXZlOwogICBpZiAoZGFzaCA9
PSBOVUxMKSB7CiAgICAgcG9zaXRpdmUgPSBHVEVTVF9GTEFHKGZpbHRlcikuY19zdHIoKTsgIC8v
IFdob2xlIHN0cmluZyBpcyBhIHBvc2l0aXZlIGZpbHRlcgotICAgIG5lZ2F0aXZlID0gU3RyaW5n
KCIiKTsKKyAgICBuZWdhdGl2ZSA9ICIiOwogICB9IGVsc2UgewotICAgIHBvc2l0aXZlID0gU3Ry
aW5nKHAsIGRhc2ggLSBwKTsgIC8vIEV2ZXJ5dGhpbmcgdXAgdG8gdGhlIGRhc2gKLSAgICBuZWdh
dGl2ZSA9IFN0cmluZyhkYXNoKzEpOyAgICAgICAvLyBFdmVyeXRoaW5nIGFmdGVyIHRoZSBkYXNo
CisgICAgcG9zaXRpdmUgPSBzdGQ6OnN0cmluZyhwLCBkYXNoKTsgICAvLyBFdmVyeXRoaW5nIHVw
IHRvIHRoZSBkYXNoCisgICAgbmVnYXRpdmUgPSBzdGQ6OnN0cmluZyhkYXNoICsgMSk7ICAvLyBF
dmVyeXRoaW5nIGFmdGVyIHRoZSBkYXNoCiAgICAgaWYgKHBvc2l0aXZlLmVtcHR5KCkpIHsKICAg
ICAgIC8vIFRyZWF0ICctdGVzdDEnIGFzIHRoZSBzYW1lIGFzICcqLXRlc3QxJwogICAgICAgcG9z
aXRpdmUgPSBrVW5pdmVyc2FsRmlsdGVyOwpAQCAtNDkwLDIwICs1NzQsMzMgQEAgYm9vbCBVbml0
VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KGNvbnN0IFN0cmluZyAmdGVzdF9jYXNlX25h
bWUsCiAgICAgICAgICAgIU1hdGNoZXNGaWx0ZXIoZnVsbF9uYW1lLCBuZWdhdGl2ZS5jX3N0cigp
KSk7CiB9CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjaWYgR1RFU1RfSEFTX1NFSAogLy8gUmV0
dXJucyBFWENFUFRJT05fRVhFQ1VURV9IQU5ETEVSIGlmIEdvb2dsZSBUZXN0IHNob3VsZCBoYW5k
bGUgdGhlCiAvLyBnaXZlbiBTRUggZXhjZXB0aW9uLCBvciBFWENFUFRJT05fQ09OVElOVUVfU0VB
UkNIIG90aGVyd2lzZS4KIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIGFzIGFuIF9fZXhjZXB0
IGNvbmRpdGlvbi4KIGludCBVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSChE
V09SRCBleGNlcHRpb25fY29kZSkgewotICAvLyBHb29nbGUgVGVzdCBzaG91bGQgaGFuZGxlIGFu
IGV4Y2VwdGlvbiBpZjoKKyAgLy8gR29vZ2xlIFRlc3Qgc2hvdWxkIGhhbmRsZSBhIFNFSCBleGNl
cHRpb24gaWY6CiAgIC8vICAgMS4gdGhlIHVzZXIgd2FudHMgaXQgdG8sIEFORAotICAvLyAgIDIu
IHRoaXMgaXMgbm90IGEgYnJlYWtwb2ludCBleGNlcHRpb24uCi0gIHJldHVybiAoR1RFU1RfRkxB
RyhjYXRjaF9leGNlcHRpb25zKSAmJgotICAgICAgICAgIGV4Y2VwdGlvbl9jb2RlICE9IEVYQ0VQ
VElPTl9CUkVBS1BPSU5UKSA/Ci0gICAgICBFWENFUFRJT05fRVhFQ1VURV9IQU5ETEVSIDoKLSAg
ICAgIEVYQ0VQVElPTl9DT05USU5VRV9TRUFSQ0g7CisgIC8vICAgMi4gdGhpcyBpcyBub3QgYSBi
cmVha3BvaW50IGV4Y2VwdGlvbiwgQU5ECisgIC8vICAgMy4gdGhpcyBpcyBub3QgYSBDKysgZXhj
ZXB0aW9uIChWQysrIGltcGxlbWVudHMgdGhlbSB2aWEgU0VILAorICAvLyAgICAgIGFwcGFyZW50
bHkpLgorICAvLworICAvLyBTRUggZXhjZXB0aW9uIGNvZGUgZm9yIEMrKyBleGNlcHRpb25zLgor
ICAvLyAoc2VlIGh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20va2IvMTg1Mjk0IGZvciBtb3Jl
IGluZm9ybWF0aW9uKS4KKyAgY29uc3QgRFdPUkQga0N4eEV4Y2VwdGlvbkNvZGUgPSAweGUwNmQ3
MzYzOworCisgIGJvb2wgc2hvdWxkX2hhbmRsZSA9IHRydWU7CisKKyAgaWYgKCFHVEVTVF9GTEFH
KGNhdGNoX2V4Y2VwdGlvbnMpKQorICAgIHNob3VsZF9oYW5kbGUgPSBmYWxzZTsKKyAgZWxzZSBp
ZiAoZXhjZXB0aW9uX2NvZGUgPT0gRVhDRVBUSU9OX0JSRUFLUE9JTlQpCisgICAgc2hvdWxkX2hh
bmRsZSA9IGZhbHNlOworICBlbHNlIGlmIChleGNlcHRpb25fY29kZSA9PSBrQ3h4RXhjZXB0aW9u
Q29kZSkKKyAgICBzaG91bGRfaGFuZGxlID0gZmFsc2U7CisKKyAgcmV0dXJuIHNob3VsZF9oYW5k
bGUgPyBFWENFUFRJT05fRVhFQ1VURV9IQU5ETEVSIDogRVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJD
SDsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworI2VuZGlmICAvLyBHVEVTVF9IQVNf
U0VICiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogCkBAIC01NzgsMTMgKzY3NSwxMyBAQCBl
eHRlcm4gY29uc3QgVHlwZUlkIGtUZXN0VHlwZUlkSW5Hb29nbGVUZXN0ID0gR2V0VGVzdFR5cGVJ
ZCgpOwogLy8gVGhpcyBwcmVkaWNhdGUtZm9ybWF0dGVyIGNoZWNrcyB0aGF0ICdyZXN1bHRzJyBj
b250YWlucyBhIHRlc3QgcGFydAogLy8gZmFpbHVyZSBvZiB0aGUgZ2l2ZW4gdHlwZSBhbmQgdGhh
dCB0aGUgZmFpbHVyZSBtZXNzYWdlIGNvbnRhaW5zIHRoZQogLy8gZ2l2ZW4gc3Vic3RyaW5nLgot
QXNzZXJ0aW9uUmVzdWx0IEhhc09uZUZhaWx1cmUoY29uc3QgY2hhciogLyogcmVzdWx0c19leHBy
ICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLyogdHlwZV9l
eHByICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLyogc3Vi
c3RyX2V4cHIgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UGFy
dFJlc3VsdEFycmF5JiByZXN1bHRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVz
dFBhcnRSZXN1bHQ6OlR5cGUgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHN1YnN0cikgewotICBjb25zdCBTdHJpbmcgZXhwZWN0ZWQodHlwZSA9PSBUZXN0
UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSA/CitzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IEhhc09u
ZUZhaWx1cmUoY29uc3QgY2hhciogLyogcmVzdWx0c19leHByICovLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qIHR5cGVfZXhwciAqLywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKiBzdWJzdHJfZXhw
ciAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UGFy
dFJlc3VsdEFycmF5JiByZXN1bHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN1YnN0cikgeworICBjb25zdCBzdGQ6OnN0
cmluZyBleHBlY3RlZCh0eXBlID09IFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlID8KICAg
ICAgICAgICAgICAgICAgICAgICAgICIxIGZhdGFsIGZhaWx1cmUiIDoKICAgICAgICAgICAgICAg
ICAgICAgICAgICIxIG5vbi1mYXRhbCBmYWlsdXJlIik7CiAgIE1lc3NhZ2UgbXNnOwpAQCAtNTk0
LDIzICs2OTEsMjEgQEAgQXNzZXJ0aW9uUmVzdWx0IEhhc09uZUZhaWx1cmUoY29uc3QgY2hhciog
LyogcmVzdWx0c19leHByICovLAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXpl
KCk7IGkrKykgewogICAgICAgbXNnIDw8ICJcbiIgPDwgcmVzdWx0cy5HZXRUZXN0UGFydFJlc3Vs
dChpKTsKICAgICB9Ci0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgICByZXR1
cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG1zZzsKICAgfQogCiAgIGNvbnN0IFRlc3RQYXJ0UmVz
dWx0JiByID0gcmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgwKTsKICAgaWYgKHIudHlwZSgpICE9
IHR5cGUpIHsKLSAgICBtc2cgPDwgIkV4cGVjdGVkOiAiIDw8IGV4cGVjdGVkIDw8ICJcbiIKLSAg
ICAgICAgPDwgIiAgQWN0dWFsOlxuIgotICAgICAgICA8PCByOwotICAgIHJldHVybiBBc3NlcnRp
b25GYWlsdXJlKG1zZyk7CisgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiRXhwZWN0
ZWQ6ICIgPDwgZXhwZWN0ZWQgPDwgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PDwgIiAgQWN0dWFsOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcjsKICAg
fQogCi0gIGlmIChzdHJzdHIoci5tZXNzYWdlKCksIHN1YnN0cikgPT0gTlVMTCkgewotICAgIG1z
ZyA8PCAiRXhwZWN0ZWQ6ICIgPDwgZXhwZWN0ZWQgPDwgIiBjb250YWluaW5nIFwiIgotICAgICAg
ICA8PCBzdWJzdHIgPDwgIlwiXG4iCi0gICAgICAgIDw8ICIgIEFjdHVhbDpcbiIKLSAgICAgICAg
PDwgcjsKLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICBpZiAoc3Ryc3RyKHIu
bWVzc2FnZSgpLCBzdWJzdHIuY19zdHIoKSkgPT0gTlVMTCkgeworICAgIHJldHVybiBBc3NlcnRp
b25GYWlsdXJlKCkgPDwgIkV4cGVjdGVkOiAiIDw8IGV4cGVjdGVkIDw8ICIgY29udGFpbmluZyBc
IiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHN1YnN0ciA8PCAiXCJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgIEFjdHVhbDpcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IHI7CiAgIH0KIAogICByZXR1cm4gQXNzZXJ0aW9uU3VjY2Vz
cygpOwpAQCAtNjE5LDIwICs3MTQsMTcgQEAgQXNzZXJ0aW9uUmVzdWx0IEhhc09uZUZhaWx1cmUo
Y29uc3QgY2hhciogLyogcmVzdWx0c19leHByICovLAogLy8gVGhlIGNvbnN0cnVjdG9yIG9mIFNp
bmdsZUZhaWx1cmVDaGVja2VyIHJlbWVtYmVycyB3aGVyZSB0byBsb29rIHVwCiAvLyB0ZXN0IHBh
cnQgcmVzdWx0cywgd2hhdCB0eXBlIG9mIGZhaWx1cmUgd2UgZXhwZWN0LCBhbmQgd2hhdAogLy8g
c3Vic3RyaW5nIHRoZSBmYWlsdXJlIG1lc3NhZ2Ugc2hvdWxkIGNvbnRhaW4uCi1TaW5nbGVGYWls
dXJlQ2hlY2tlcjo6IFNpbmdsZUZhaWx1cmVDaGVja2VyKAotICAgIGNvbnN0IFRlc3RQYXJ0UmVz
dWx0QXJyYXkqIHJlc3VsdHMsCi0gICAgVGVzdFBhcnRSZXN1bHQ6OlR5cGUgdHlwZSwKLSAgICBj
b25zdCBjaGFyKiBzdWJzdHIpCi0gICAgOiByZXN1bHRzXyhyZXN1bHRzKSwKLSAgICAgIHR5cGVf
KHR5cGUpLAotICAgICAgc3Vic3RyXyhzdWJzdHIpIHt9CitTaW5nbGVGYWlsdXJlQ2hlY2tlcjo6
U2luZ2xlRmFpbHVyZUNoZWNrZXIoY29uc3QgVGVzdFBhcnRSZXN1bHRBcnJheSogcmVzdWx0cywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0UGFydFJlc3Vs
dDo6VHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBzdWJzdHIpCisgICAgOiByZXN1bHRzXyhyZXN1bHRzKSwgdHlw
ZV8odHlwZSksIHN1YnN0cl8oc3Vic3RyKSB7fQogCiAvLyBUaGUgZGVzdHJ1Y3RvciBvZiBTaW5n
bGVGYWlsdXJlQ2hlY2tlciB2ZXJpZmllcyB0aGF0IHRoZSBnaXZlbgogLy8gVGVzdFBhcnRSZXN1
bHRBcnJheSBjb250YWlucyBleGFjdGx5IG9uZSBmYWlsdXJlIHRoYXQgaGFzIHRoZSBnaXZlbgog
Ly8gdHlwZSBhbmQgY29udGFpbnMgdGhlIGdpdmVuIHN1YnN0cmluZy4gIElmIHRoYXQncyBub3Qg
dGhlIGNhc2UsIGEKIC8vIG5vbi1mYXRhbCBmYWlsdXJlIHdpbGwgYmUgZ2VuZXJhdGVkLgogU2lu
Z2xlRmFpbHVyZUNoZWNrZXI6On5TaW5nbGVGYWlsdXJlQ2hlY2tlcigpIHsKLSAgRVhQRUNUX1BS
RURfRk9STUFUMyhIYXNPbmVGYWlsdXJlLCAqcmVzdWx0c18sIHR5cGVfLCBzdWJzdHJfLmNfc3Ry
KCkpOworICBFWFBFQ1RfUFJFRF9GT1JNQVQzKEhhc09uZUZhaWx1cmUsICpyZXN1bHRzXywgdHlw
ZV8sIHN1YnN0cl8pOwogfQogCiBEZWZhdWx0R2xvYmFsVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjo6
RGVmYXVsdEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIoCkBAIC03MDksMTEgKzgwMSwyMiBA
QCBpbnQgVW5pdFRlc3RJbXBsOjpmYWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJu
IFN1bU92ZXJUZXN0Q2FzZUxpc3QodGVzdF9jYXNlc18sICZUZXN0Q2FzZTo6ZmFpbGVkX3Rlc3Rf
Y291bnQpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3
aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0LgoraW50IFVuaXRUZXN0SW1wbDo6cmVw
b3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3QgeworICByZXR1cm4gU3VtT3ZlclRl
c3RDYXNlTGlzdCh0ZXN0X2Nhc2VzXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlRl
c3RDYXNlOjpyZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQpOworfQorCiAvLyBHZXRzIHRo
ZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMuCiBpbnQgVW5pdFRlc3RJbXBsOjpkaXNhYmxlZF90
ZXN0X2NvdW50KCkgY29uc3QgewogICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0ZXN0X2Nh
c2VzXywgJlRlc3RDYXNlOjpkaXNhYmxlZF90ZXN0X2NvdW50KTsKIH0KIAorLy8gR2V0cyB0aGUg
bnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50ZWQgaW4gdGhlIFhNTCByZXBvcnQuCitpbnQgVW5p
dFRlc3RJbXBsOjpyZXBvcnRhYmxlX3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBTdW1P
dmVyVGVzdENhc2VMaXN0KHRlc3RfY2FzZXNfLCAmVGVzdENhc2U6OnJlcG9ydGFibGVfdGVzdF9j
b3VudCk7Cit9CisKIC8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdHMuCiBpbnQgVW5pdFRl
c3RJbXBsOjp0b3RhbF90ZXN0X2NvdW50KCkgY29uc3QgewogICByZXR1cm4gU3VtT3ZlclRlc3RD
YXNlTGlzdCh0ZXN0X2Nhc2VzXywgJlRlc3RDYXNlOjp0b3RhbF90ZXN0X2NvdW50KTsKQEAgLTcy
NCw3ICs4MjcsNyBAQCBpbnQgVW5pdFRlc3RJbXBsOjp0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0
IHsKICAgcmV0dXJuIFN1bU92ZXJUZXN0Q2FzZUxpc3QodGVzdF9jYXNlc18sICZUZXN0Q2FzZTo6
dGVzdF90b19ydW5fY291bnQpOwogfQogCi0vLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNr
IHRyYWNlIGFzIGEgU3RyaW5nLgorLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFj
ZSBhcyBhbiBzdGQ6OnN0cmluZy4KIC8vCiAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhY2sg
ZnJhbWVzIHRvIGJlIGluY2x1ZGVkIGlzIHNwZWNpZmllZCBieQogLy8gdGhlIGd0ZXN0X3N0YWNr
X3RyYWNlX2RlcHRoIGZsYWcuICBUaGUgc2tpcF9jb3VudCBwYXJhbWV0ZXIKQEAgLTczNCw5ICs4
MzcsMTMgQEAgaW50IFVuaXRUZXN0SW1wbDo6dGVzdF90b19ydW5fY291bnQoKSBjb25zdCB7CiAv
LyBGb3IgZXhhbXBsZSwgaWYgRm9vKCkgY2FsbHMgQmFyKCksIHdoaWNoIGluIHR1cm4gY2FsbHMK
IC8vIEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoMSksIEZvbygpIHdpbGwgYmUgaW5jbHVk
ZWQgaW4gdGhlCiAvLyB0cmFjZSBidXQgQmFyKCkgYW5kIEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNl
cHRUb3AoKSB3b24ndC4KLVN0cmluZyBVbml0VGVzdEltcGw6OkN1cnJlbnRPc1N0YWNrVHJhY2VF
eGNlcHRUb3AoaW50IHNraXBfY291bnQpIHsKLSAgKHZvaWQpc2tpcF9jb3VudDsKLSAgcmV0dXJu
IFN0cmluZygiIik7CitzdGQ6OnN0cmluZyBVbml0VGVzdEltcGw6OkN1cnJlbnRPc1N0YWNrVHJh
Y2VFeGNlcHRUb3AoaW50IHNraXBfY291bnQpIHsKKyAgcmV0dXJuIG9zX3N0YWNrX3RyYWNlX2dl
dHRlcigpLT5DdXJyZW50U3RhY2tUcmFjZSgKKyAgICAgIHN0YXRpY19jYXN0PGludD4oR1RFU1Rf
RkxBRyhzdGFja190cmFjZV9kZXB0aCkpLAorICAgICAgc2tpcF9jb3VudCArIDEKKyAgICAgIC8v
IFNraXBzIHRoZSB1c2VyLXNwZWNpZmllZCBudW1iZXIgb2YgZnJhbWVzIHBsdXMgdGhpcyBmdW5j
dGlvbgorICAgICAgLy8gaXRzZWxmLgorICAgICAgKTsgIC8vIE5PTElOVAogfQogCiAvLyBSZXR1
cm5zIHRoZSBjdXJyZW50IHRpbWUgaW4gbWlsbGlzZWNvbmRzLgpAQCAtNzUxLDcgKzg1OCw3IEBA
IFRpbWVJbk1pbGxpcyBHZXRUaW1lSW5NaWxsaXMoKSB7CiAgIFNZU1RFTVRJTUUgbm93X3N5c3Rp
bWU7CiAgIEZJTEVUSU1FIG5vd19maWxldGltZTsKICAgVUxBUkdFX0lOVEVHRVIgbm93X2ludDY0
OwotICAvLyBUT0RPKGtlbnRvbkBnb29nbGUuY29tKTogU2hvdWxkbid0IHRoaXMganVzdCB1c2UK
KyAgLy8gRklYTUU6IFNob3VsZG4ndCB0aGlzIGp1c3QgdXNlCiAgIC8vICAgR2V0U3lzdGVtVGlt
ZUFzRmlsZVRpbWUoKT8KICAgR2V0U3lzdGVtVGltZSgmbm93X3N5c3RpbWUpOwogICBpZiAoU3lz
dGVtVGltZVRvRmlsZVRpbWUoJm5vd19zeXN0aW1lLCAmbm93X2ZpbGV0aW1lKSkgewpAQCAtNzY0
LDY1ICs4NzEsMjggQEAgVGltZUluTWlsbGlzIEdldFRpbWVJbk1pbGxpcygpIHsKICAgcmV0dXJu
IDA7CiAjZWxpZiBHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9IQVNfR0VUVElNRU9GREFZXwog
ICBfX3RpbWViNjQgbm93OwotI2lmZGVmIF9NU0NfVkVSCisKICAgLy8gTVNWQyA4IGRlcHJlY2F0
ZXMgX2Z0aW1lNjQoKSwgc28gd2Ugd2FudCB0byBzdXBwcmVzcyB3YXJuaW5nIDQ5OTYKICAgLy8g
KGRlcHJlY2F0ZWQgZnVuY3Rpb24pIHRoZXJlLgotICAvLyBUT0RPKGtlbnRvbkBnb29nbGUuY29t
KTogVXNlIEdldFRpY2tDb3VudCgpPyAgT3IgdXNlCisgIC8vIEZJWE1FOiBVc2UgR2V0VGlja0Nv
dW50KCk/ICBPciB1c2UKICAgLy8gICBTeXN0ZW1UaW1lVG9GaWxlVGltZSgpCi0jcHJhZ21hIHdh
cm5pbmcocHVzaCkgICAgICAgICAgLy8gU2F2ZXMgdGhlIGN1cnJlbnQgd2FybmluZyBzdGF0ZS4K
LSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5OTYpICAvLyBUZW1wb3JhcmlseSBkaXNhYmxlcyB3
YXJuaW5nIDQ5OTYuCisgIEdURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVTSF8oKQogICBf
ZnRpbWU2NCgmbm93KTsKLSNwcmFnbWEgd2FybmluZyhwb3ApICAgICAgICAgICAvLyBSZXN0b3Jl
cyB0aGUgd2FybmluZyBzdGF0ZS4KLSNlbHNlCi0gIF9mdGltZTY0KCZub3cpOwotI2VuZGlmICAv
LyBfTVNDX1ZFUgorICBHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BPUF8oKQorCiAgIHJl
dHVybiBzdGF0aWNfY2FzdDxUaW1lSW5NaWxsaXM+KG5vdy50aW1lKSAqIDEwMDAgKyBub3cubWls
bGl0bTsKICNlbGlmIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfCiAgIHN0cnVjdCB0aW1ldmFsIG5v
dzsKICAgZ2V0dGltZW9mZGF5KCZub3csIE5VTEwpOwogICByZXR1cm4gc3RhdGljX2Nhc3Q8VGlt
ZUluTWlsbGlzPihub3cudHZfc2VjKSAqIDEwMDAgKyBub3cudHZfdXNlYyAvIDEwMDA7CiAjZWxz
ZQotI2Vycm9yICJEb24ndCBrbm93IGhvdyB0byBnZXQgdGhlIGN1cnJlbnQgdGltZSBvbiB5b3Vy
IHN5c3RlbS4iCisjIGVycm9yICJEb24ndCBrbm93IGhvdyB0byBnZXQgdGhlIGN1cnJlbnQgdGlt
ZSBvbiB5b3VyIHN5c3RlbS4iCiAjZW5kaWYKIH0KIAogLy8gVXRpbGl0aWVzCiAKLS8vIGNsYXNz
IFN0cmluZwotCi0vLyBSZXR1cm5zIHRoZSBpbnB1dCBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVz
IGlmIGl0J3Mgbm90IE5VTEw7Ci0vLyBvdGhlcndpc2UgcmV0dXJucyAiKG51bGwpIi4gIEZvciBl
eGFtcGxlLCAiXCJIZWxsb1wiIiBpcyByZXR1cm5lZAotLy8gZm9yIGlucHV0ICJIZWxsbyIuCi0v
LwotLy8gVGhpcyBpcyB1c2VmdWwgZm9yIHByaW50aW5nIGEgQyBzdHJpbmcgaW4gdGhlIHN5bnRh
eCBvZiBhIGxpdGVyYWwuCi0vLwotLy8gS25vd24gaXNzdWU6IGVzY2FwZSBzZXF1ZW5jZXMgYXJl
IG5vdCBoYW5kbGVkIHlldC4KLVN0cmluZyBTdHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKGNvbnN0
IGNoYXIqIGNfc3RyKSB7Ci0gIHJldHVybiBjX3N0ciA/IFN0cmluZzo6Rm9ybWF0KCJcIiVzXCIi
LCBjX3N0cikgOiBTdHJpbmcoIihudWxsKSIpOwotfQotCi0vLyBDb3BpZXMgYXQgbW9zdCBsZW5n
dGggY2hhcmFjdGVycyBmcm9tIHN0ciBpbnRvIGEgbmV3bHktYWxsb2NhdGVkCi0vLyBwaWVjZSBv
ZiBtZW1vcnkgb2Ygc2l6ZSBsZW5ndGgrMS4gIFRoZSBtZW1vcnkgaXMgYWxsb2NhdGVkIHdpdGgg
bmV3W10uCi0vLyBBIHRlcm1pbmF0aW5nIG51bGwgYnl0ZSBpcyB3cml0dGVuIHRvIHRoZSBtZW1v
cnksIGFuZCBhIHBvaW50ZXIgdG8gaXQKLS8vIGlzIHJldHVybmVkLiAgSWYgc3RyIGlzIE5VTEws
IE5VTEwgaXMgcmV0dXJuZWQuCi1zdGF0aWMgY2hhciogQ2xvbmVTdHJpbmcoY29uc3QgY2hhciog
c3RyLCBzaXplX3QgbGVuZ3RoKSB7Ci0gIGlmIChzdHIgPT0gTlVMTCkgewotICAgIHJldHVybiBO
VUxMOwotICB9IGVsc2UgewotICAgIGNoYXIqIGNvbnN0IGNsb25lID0gbmV3IGNoYXJbbGVuZ3Ro
ICsgMV07Ci0gICAgcG9zaXg6OlN0ck5DcHkoY2xvbmUsIHN0ciwgbGVuZ3RoKTsKLSAgICBjbG9u
ZVtsZW5ndGhdID0gJ1wwJzsKLSAgICByZXR1cm4gY2xvbmU7Ci0gIH0KLX0KLQotLy8gQ2xvbmVz
IGEgMC10ZXJtaW5hdGVkIEMgc3RyaW5nLCBhbGxvY2F0aW5nIG1lbW9yeSB1c2luZyBuZXcuICBU
aGUKLS8vIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmdbXSB0aGUgcmV0dXJuIHZh
bHVlLiAgUmV0dXJucyB0aGUKLS8vIGNsb25lZCBzdHJpbmcsIG9yIE5VTEwgaWYgdGhlIGlucHV0
IGlzIE5VTEwuCi1jb25zdCBjaGFyICogU3RyaW5nOjpDbG9uZUNTdHJpbmcoY29uc3QgY2hhciog
Y19zdHIpIHsKLSAgcmV0dXJuIChjX3N0ciA9PSBOVUxMKSA/Ci0gICAgICAgICAgICAgICAgICAg
IE5VTEwgOiBDbG9uZVN0cmluZyhjX3N0ciwgc3RybGVuKGNfc3RyKSk7Ci19CisvLyBjbGFzcyBT
dHJpbmcuCiAKICNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogLy8gQ3JlYXRlcyBhIFVURi0x
NiB3aWRlIHN0cmluZyBmcm9tIHRoZSBnaXZlbiBBTlNJIHN0cmluZywgYWxsb2NhdGluZwpAQCAt
ODc5LDExICs5NDksNiBAQCBib29sIFN0cmluZzo6Q1N0cmluZ0VxdWFscyhjb25zdCBjaGFyICog
bGhzLCBjb25zdCBjaGFyICogcmhzKSB7CiAvLyBlbmNvZGluZywgYW5kIHN0cmVhbXMgdGhlIHJl
c3VsdCB0byB0aGUgZ2l2ZW4gTWVzc2FnZSBvYmplY3QuCiBzdGF0aWMgdm9pZCBTdHJlYW1XaWRl
Q2hhcnNUb01lc3NhZ2UoY29uc3Qgd2NoYXJfdCogd3N0ciwgc2l6ZV90IGxlbmd0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlKiBtc2cpIHsKLSAgLy8gVE9E
Tyh3YW4pOiBjb25zaWRlciBhbGxvd2luZyBhIHRlc3Rpbmc6OlN0cmluZyBvYmplY3QgdG8KLSAg
Ly8gY29udGFpbiAnXDAnLiAgVGhpcyB3aWxsIG1ha2UgaXQgYmVoYXZlIG1vcmUgbGlrZSBzdGQ6
OnN0cmluZywKLSAgLy8gYW5kIHdpbGwgYWxsb3cgVG9VdGY4U3RyaW5nKCkgdG8gcmV0dXJuIHRo
ZSBjb3JyZWN0IGVuY29kaW5nCi0gIC8vIGZvciAnXDAnIHMudC4gd2UgY2FuIGdldCByaWQgb2Yg
dGhlIGNvbmRpdGlvbmFsIGhlcmUgKGFuZCBpbgotICAvLyBzZXZlcmFsIG90aGVyIHBsYWNlcyku
CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGxlbmd0aDsgKSB7ICAvLyBOT0xJTlQKICAgICBp
ZiAod3N0cltpXSAhPSBMJ1wwJykgewogICAgICAgKm1zZyA8PCBXaWRlU3RyaW5nVG9VdGY4KHdz
dHIgKyBpLCBzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aCAtIGkpKTsKQEAgLTg5OCw4ICs5NjMsNDUg
QEAgc3RhdGljIHZvaWQgU3RyZWFtV2lkZUNoYXJzVG9NZXNzYWdlKGNvbnN0IHdjaGFyX3QqIHdz
dHIsIHNpemVfdCBsZW5ndGgsCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RSSU5HIHx8
IEdURVNUX0hBU19HTE9CQUxfV1NUUklORwogCit2b2lkIFNwbGl0U3RyaW5nKGNvbnN0IDo6c3Rk
OjpzdHJpbmcmIHN0ciwgY2hhciBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAgIDo6c3RkOjp2
ZWN0b3I8IDo6c3RkOjpzdHJpbmc+KiBkZXN0KSB7CisgIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpz
dHJpbmc+IHBhcnNlZDsKKyAgOjpzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHBvcyA9IDA7CisgIHdo
aWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsKKyAgICBjb25zdCA6OnN0
ZDo6c3RyaW5nOjpzaXplX3R5cGUgY29sb24gPSBzdHIuZmluZChkZWxpbWl0ZXIsIHBvcyk7Cisg
ICAgaWYgKGNvbG9uID09IDo6c3RkOjpzdHJpbmc6Om5wb3MpIHsKKyAgICAgIHBhcnNlZC5wdXNo
X2JhY2soc3RyLnN1YnN0cihwb3MpKTsKKyAgICAgIGJyZWFrOworICAgIH0gZWxzZSB7CisgICAg
ICBwYXJzZWQucHVzaF9iYWNrKHN0ci5zdWJzdHIocG9zLCBjb2xvbiAtIHBvcykpOworICAgICAg
cG9zID0gY29sb24gKyAxOworICAgIH0KKyAgfQorICBkZXN0LT5zd2FwKHBhcnNlZCk7Cit9CisK
IH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogCisvLyBDb25zdHJ1Y3RzIGFuIGVtcHR5IE1lc3Nh
Z2UuCisvLyBXZSBhbGxvY2F0ZSB0aGUgc3RyaW5nc3RyZWFtIHNlcGFyYXRlbHkgYmVjYXVzZSBv
dGhlcndpc2UgZWFjaCB1c2Ugb2YKKy8vIEFTU0VSVC9FWFBFQ1QgaW4gYSBwcm9jZWR1cmUgYWRk
cyBvdmVyIDIwMCBieXRlcyB0byB0aGUgcHJvY2VkdXJlJ3MKKy8vIHN0YWNrIGZyYW1lIGxlYWRp
bmcgdG8gaHVnZSBzdGFjayBmcmFtZXMgaW4gc29tZSBjYXNlczsgZ2NjIGRvZXMgbm90IHJldXNl
CisvLyB0aGUgc3RhY2sgc3BhY2UuCitNZXNzYWdlOjpNZXNzYWdlKCkgOiBzc18obmV3IDo6c3Rk
OjpzdHJpbmdzdHJlYW0pIHsKKyAgLy8gQnkgZGVmYXVsdCwgd2Ugd2FudCB0aGVyZSB0byBiZSBl
bm91Z2ggcHJlY2lzaW9uIHdoZW4gcHJpbnRpbmcKKyAgLy8gYSBkb3VibGUgdG8gYSBNZXNzYWdl
LgorICAqc3NfIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6ZGlnaXRzMTAgKyAyKTsKK30KKworLy8gVGhlc2UgdHdvIG92ZXJsb2FkcyBhbGxvdyBzdHJl
YW1pbmcgYSB3aWRlIEMgc3RyaW5nIHRvIGEgTWVzc2FnZQorLy8gdXNpbmcgdGhlIFVURi04IGVu
Y29kaW5nLgorTWVzc2FnZSYgTWVzc2FnZTo6b3BlcmF0b3IgPDwoY29uc3Qgd2NoYXJfdCogd2lk
ZV9jX3N0cikgeworICByZXR1cm4gKnRoaXMgPDwgaW50ZXJuYWw6OlN0cmluZzo6U2hvd1dpZGVD
U3RyaW5nKHdpZGVfY19zdHIpOworfQorTWVzc2FnZSYgTWVzc2FnZTo6b3BlcmF0b3IgPDwod2No
YXJfdCogd2lkZV9jX3N0cikgeworICByZXR1cm4gKnRoaXMgPDwgaW50ZXJuYWw6OlN0cmluZzo6
U2hvd1dpZGVDU3RyaW5nKHdpZGVfY19zdHIpOworfQorCiAjaWYgR1RFU1RfSEFTX1NURF9XU1RS
SU5HCiAvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gd2lkZSBzdHJpbmcgdG8gYSBuYXJyb3cgc3RyaW5n
IHVzaW5nIHRoZSBVVEYtOAogLy8gZW5jb2RpbmcsIGFuZCBzdHJlYW1zIHRoZSByZXN1bHQgdG8g
dGhpcyBNZXNzYWdlIG9iamVjdC4KQEAgLTkxOCw1NSArMTAyMCwyNiBAQCBNZXNzYWdlJiBNZXNz
YWdlOjpvcGVyYXRvciA8PChjb25zdCA6OndzdHJpbmcmIHdzdHIpIHsKIH0KICNlbmRpZiAgLy8g
R1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCiAKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIEZv
cm1hdHMgYSB2YWx1ZSB0byBiZSB1c2VkIGluIGEgZmFpbHVyZSBtZXNzYWdlLgotCi0vLyBGb3Ig
YSBjaGFyIHZhbHVlLCB3ZSBwcmludCBpdCBhcyBhIEMrKyBjaGFyIGxpdGVyYWwgYW5kIGFzIGFu
Ci0vLyB1bnNpZ25lZCBpbnRlZ2VyIChib3RoIGluIGRlY2ltYWwgYW5kIGluIGhleGFkZWNpbWFs
KS4KLVN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjaGFyIGNoKSB7Ci0gIGNvbnN0IHVu
c2lnbmVkIGludCBjaF9hc191aW50ID0gY2g7Ci0gIC8vIEEgU3RyaW5nIG9iamVjdCBjYW5ub3Qg
Y29udGFpbiAnXDAnLCBzbyB3ZSBwcmludCAiXFwwIiB3aGVuIGNoIGlzCi0gIC8vICdcMCcuCi0g
IHJldHVybiBTdHJpbmc6OkZvcm1hdCgiJyVzJyAoJXUsIDB4JVgpIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNoID8gU3RyaW5nOjpGb3JtYXQoIiVjIiwgY2gpLmNfc3RyKCkgOiAiXFwwIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNoX2FzX3VpbnQsIGNoX2FzX3VpbnQpOwotfQotCi0v
LyBGb3IgYSB3Y2hhcl90IHZhbHVlLCB3ZSBwcmludCBpdCBhcyBhIEMrKyB3Y2hhcl90IGxpdGVy
YWwgYW5kIGFzIGFuCi0vLyB1bnNpZ25lZCBpbnRlZ2VyIChib3RoIGluIGRlY2ltYWwgYW5kIGlu
IGhleGlkZWNpbWFsKS4KLVN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZSh3Y2hhcl90IHdj
aGFyKSB7Ci0gIC8vIFRoZSBDKysgc3RhbmRhcmQgZG9lc24ndCBzcGVjaWZ5IHRoZSBleGFjdCBz
aXplIG9mIHRoZSB3Y2hhcl90Ci0gIC8vIHR5cGUuICBJdCBqdXN0IHNheXMgdGhhdCBpdCBzaGFs
bCBoYXZlIHRoZSBzYW1lIHNpemUgYXMgYW5vdGhlcgotICAvLyBpbnRlZ3JhbCB0eXBlLCBjYWxs
ZWQgaXRzIHVuZGVybHlpbmcgdHlwZS4KLSAgLy8KLSAgLy8gVGhlcmVmb3JlLCBpbiBvcmRlciB0
byBwcmludCBhIHdjaGFyX3QgdmFsdWUgaW4gdGhlIG51bWVyaWMgZm9ybSwKLSAgLy8gd2UgZmly
c3QgY29udmVydCBpdCB0byB0aGUgbGFyZ2VzdCBpbnRlZ3JhbCB0eXBlIChVSW50NjQpIGFuZAot
ICAvLyB0aGVuIHByaW50IHRoZSBjb252ZXJ0ZWQgdmFsdWUuCi0gIC8vCi0gIC8vIFdlIHVzZSBz
dHJlYW1pbmcgdG8gcHJpbnQgdGhlIHZhbHVlIGFzICIlbGx1IiBkb2Vzbid0IHdvcmsKLSAgLy8g
Y29ycmVjdGx5IHdpdGggTVNWQyA3LjEuCi0gIGNvbnN0IFVJbnQ2NCB3Y2hhcl9hc191aW50NjQg
PSB3Y2hhcjsKLSAgTWVzc2FnZSBtc2c7Ci0gIC8vIEEgU3RyaW5nIG9iamVjdCBjYW5ub3QgY29u
dGFpbiAnXDAnLCBzbyB3ZSBwcmludCAiXFwwIiB3aGVuIHdjaGFyIGlzCi0gIC8vIEwnXDAnLgot
ICBjaGFyIGJ1ZmZlclszMl07ICAvLyBDb2RlUG9pbnRUb1V0ZjggcmVxdWlyZXMgYSBidWZmZXIg
dGhhdCBiaWcuCi0gIG1zZyA8PCAiTCciCi0gICAgICA8PCAod2NoYXIgPyBDb2RlUG9pbnRUb1V0
Zjgoc3RhdGljX2Nhc3Q8VUludDMyPih3Y2hhciksIGJ1ZmZlcikgOiAiXFwwIikKLSAgICAgIDw8
ICInICgiIDw8IHdjaGFyX2FzX3VpbnQ2NCA8PCAiLCAweCIgPDwgOjpzdGQ6OnNldGJhc2UoMTYp
Ci0gICAgICA8PCB3Y2hhcl9hc191aW50NjQgPDwgIikiOwotICByZXR1cm4gbXNnLkdldFN0cmlu
ZygpOworLy8gR2V0cyB0aGUgdGV4dCBzdHJlYW1lZCB0byB0aGlzIG9iamVjdCBzbyBmYXIgYXMg
YW4gc3RkOjpzdHJpbmcuCisvLyBFYWNoICdcMCcgY2hhcmFjdGVyIGluIHRoZSBidWZmZXIgaXMg
cmVwbGFjZWQgd2l0aCAiXFwwIi4KK3N0ZDo6c3RyaW5nIE1lc3NhZ2U6OkdldFN0cmluZygpIGNv
bnN0IHsKKyAgcmV0dXJuIGludGVybmFsOjpTdHJpbmdTdHJlYW1Ub1N0cmluZyhzc18uZ2V0KCkp
OwogfQogCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQogLy8gQXNzZXJ0aW9uUmVzdWx0IGNv
bnN0cnVjdG9ycy4KIC8vIFVzZWQgaW4gRVhQRUNUX1RSVUUvRkFMU0UoYXNzZXJ0aW9uX3Jlc3Vs
dCkuCiBBc3NlcnRpb25SZXN1bHQ6OkFzc2VydGlvblJlc3VsdChjb25zdCBBc3NlcnRpb25SZXN1
bHQmIG90aGVyKQogICAgIDogc3VjY2Vzc18ob3RoZXIuc3VjY2Vzc18pLAogICAgICAgbWVzc2Fn
ZV8ob3RoZXIubWVzc2FnZV8uZ2V0KCkgIT0gTlVMTCA/Ci0gICAgICAgICAgICAgICBuZXcgaW50
ZXJuYWw6OlN0cmluZygqb3RoZXIubWVzc2FnZV8pIDoKLSAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PGludGVybmFsOjpTdHJpbmcqPihOVUxMKSkgeworICAgICAgICAgICAgICAgbmV3IDo6c3Rk
OjpzdHJpbmcoKm90aGVyLm1lc3NhZ2VfKSA6CisgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDwg
OjpzdGQ6OnN0cmluZyo+KE5VTEwpKSB7Cit9CisKKy8vIFN3YXBzIHR3byBBc3NlcnRpb25SZXN1
bHRzLgordm9pZCBBc3NlcnRpb25SZXN1bHQ6OnN3YXAoQXNzZXJ0aW9uUmVzdWx0JiBvdGhlcikg
eworICB1c2luZyBzdGQ6OnN3YXA7CisgIHN3YXAoc3VjY2Vzc18sIG90aGVyLnN1Y2Nlc3NfKTsK
KyAgc3dhcChtZXNzYWdlXywgb3RoZXIubWVzc2FnZV8pOwogfQogCiAvLyBSZXR1cm5zIHRoZSBh
c3NlcnRpb24ncyBuZWdhdGlvbi4gVXNlZCB3aXRoIEVYUEVDVC9BU1NFUlRfRkFMU0UuCkBAIC05
OTUsNiArMTA2OCwyNzYgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvbkZhaWx1cmUoY29uc3Qg
TWVzc2FnZSYgbWVzc2FnZSkgewogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCituYW1lc3BhY2Ug
ZWRpdF9kaXN0YW5jZSB7CitzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gQ2FsY3VsYXRlT3B0aW1hbEVk
aXRzKGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIGxlZnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIHJpZ2h0
KSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGRvdWJsZT4gPiBjb3N0cygKKyAgICAgIGxl
ZnQuc2l6ZSgpICsgMSwgc3RkOjp2ZWN0b3I8ZG91YmxlPihyaWdodC5zaXplKCkgKyAxKSk7Cisg
IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPEVkaXRUeXBlPiA+IGJlc3RfbW92ZSgKKyAgICAgIGxl
ZnQuc2l6ZSgpICsgMSwgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+KHJpZ2h0LnNpemUoKSArIDEpKTsK
KworICAvLyBQb3B1bGF0ZSBmb3IgZW1wdHkgcmlnaHQuCisgIGZvciAoc2l6ZV90IGxfaSA9IDA7
IGxfaSA8IGNvc3RzLnNpemUoKTsgKytsX2kpIHsKKyAgICBjb3N0c1tsX2ldWzBdID0gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihsX2kpOworICAgIGJlc3RfbW92ZVtsX2ldWzBdID0ga1JlbW92ZTsKKyAg
fQorICAvLyBQb3B1bGF0ZSBmb3IgZW1wdHkgbGVmdC4KKyAgZm9yIChzaXplX3Qgcl9pID0gMTsg
cl9pIDwgY29zdHNbMF0uc2l6ZSgpOyArK3JfaSkgeworICAgIGNvc3RzWzBdW3JfaV0gPSBzdGF0
aWNfY2FzdDxkb3VibGU+KHJfaSk7CisgICAgYmVzdF9tb3ZlWzBdW3JfaV0gPSBrQWRkOworICB9
CisKKyAgZm9yIChzaXplX3QgbF9pID0gMDsgbF9pIDwgbGVmdC5zaXplKCk7ICsrbF9pKSB7Cisg
ICAgZm9yIChzaXplX3Qgcl9pID0gMDsgcl9pIDwgcmlnaHQuc2l6ZSgpOyArK3JfaSkgeworICAg
ICAgaWYgKGxlZnRbbF9pXSA9PSByaWdodFtyX2ldKSB7CisgICAgICAgIC8vIEZvdW5kIGEgbWF0
Y2guIENvbnN1bWUgaXQuCisgICAgICAgIGNvc3RzW2xfaSArIDFdW3JfaSArIDFdID0gY29zdHNb
bF9pXVtyX2ldOworICAgICAgICBiZXN0X21vdmVbbF9pICsgMV1bcl9pICsgMV0gPSBrTWF0Y2g7
CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorCisgICAgICBjb25zdCBkb3VibGUgYWRkID0g
Y29zdHNbbF9pICsgMV1bcl9pXTsKKyAgICAgIGNvbnN0IGRvdWJsZSByZW1vdmUgPSBjb3N0c1ts
X2ldW3JfaSArIDFdOworICAgICAgY29uc3QgZG91YmxlIHJlcGxhY2UgPSBjb3N0c1tsX2ldW3Jf
aV07CisgICAgICBpZiAoYWRkIDwgcmVtb3ZlICYmIGFkZCA8IHJlcGxhY2UpIHsKKyAgICAgICAg
Y29zdHNbbF9pICsgMV1bcl9pICsgMV0gPSBhZGQgKyAxOworICAgICAgICBiZXN0X21vdmVbbF9p
ICsgMV1bcl9pICsgMV0gPSBrQWRkOworICAgICAgfSBlbHNlIGlmIChyZW1vdmUgPCBhZGQgJiYg
cmVtb3ZlIDwgcmVwbGFjZSkgeworICAgICAgICBjb3N0c1tsX2kgKyAxXVtyX2kgKyAxXSA9IHJl
bW92ZSArIDE7CisgICAgICAgIGJlc3RfbW92ZVtsX2kgKyAxXVtyX2kgKyAxXSA9IGtSZW1vdmU7
CisgICAgICB9IGVsc2UgeworICAgICAgICAvLyBXZSBtYWtlIHJlcGxhY2UgYSBsaXR0bGUgbW9y
ZSBleHBlbnNpdmUgdGhhbiBhZGQvcmVtb3ZlIHRvIGxvd2VyCisgICAgICAgIC8vIHRoZWlyIHBy
aW9yaXR5LgorICAgICAgICBjb3N0c1tsX2kgKyAxXVtyX2kgKyAxXSA9IHJlcGxhY2UgKyAxLjAw
MDAxOworICAgICAgICBiZXN0X21vdmVbbF9pICsgMV1bcl9pICsgMV0gPSBrUmVwbGFjZTsKKyAg
ICAgIH0KKyAgICB9CisgIH0KKworICAvLyBSZWNvbnN0cnVjdCB0aGUgYmVzdCBwYXRoLiBXZSBk
byBpdCBpbiByZXZlcnNlIG9yZGVyLgorICBzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gYmVzdF9wYXRo
OworICBmb3IgKHNpemVfdCBsX2kgPSBsZWZ0LnNpemUoKSwgcl9pID0gcmlnaHQuc2l6ZSgpOyBs
X2kgPiAwIHx8IHJfaSA+IDA7KSB7CisgICAgRWRpdFR5cGUgbW92ZSA9IGJlc3RfbW92ZVtsX2ld
W3JfaV07CisgICAgYmVzdF9wYXRoLnB1c2hfYmFjayhtb3ZlKTsKKyAgICBsX2kgLT0gbW92ZSAh
PSBrQWRkOworICAgIHJfaSAtPSBtb3ZlICE9IGtSZW1vdmU7CisgIH0KKyAgc3RkOjpyZXZlcnNl
KGJlc3RfcGF0aC5iZWdpbigpLCBiZXN0X3BhdGguZW5kKCkpOworICByZXR1cm4gYmVzdF9wYXRo
OworfQorCituYW1lc3BhY2UgeworCisvLyBIZWxwZXIgY2xhc3MgdG8gY29udmVydCBzdHJpbmcg
aW50byBpZHMgd2l0aCBkZWR1cGxpY2F0aW9uLgorY2xhc3MgSW50ZXJuYWxTdHJpbmdzIHsKKyBw
dWJsaWM6CisgIHNpemVfdCBHZXRJZChjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7CisgICAgSWRN
YXA6Oml0ZXJhdG9yIGl0ID0gaWRzXy5maW5kKHN0cik7CisgICAgaWYgKGl0ICE9IGlkc18uZW5k
KCkpIHJldHVybiBpdC0+c2Vjb25kOworICAgIHNpemVfdCBpZCA9IGlkc18uc2l6ZSgpOworICAg
IHJldHVybiBpZHNfW3N0cl0gPSBpZDsKKyAgfQorCisgcHJpdmF0ZToKKyAgdHlwZWRlZiBzdGQ6
Om1hcDxzdGQ6OnN0cmluZywgc2l6ZV90PiBJZE1hcDsKKyAgSWRNYXAgaWRzXzsKK307CisKK30g
IC8vIG5hbWVzcGFjZQorCitzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gQ2FsY3VsYXRlT3B0aW1hbEVk
aXRzKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgbGVmdCwKKyAgICBjb25z
dCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHJpZ2h0KSB7CisgIHN0ZDo6dmVjdG9yPHNpemVf
dD4gbGVmdF9pZHMsIHJpZ2h0X2lkczsKKyAgeworICAgIEludGVybmFsU3RyaW5ncyBpbnRlcm5f
dGFibGU7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZWZ0LnNpemUoKTsgKytpKSB7Cisg
ICAgICBsZWZ0X2lkcy5wdXNoX2JhY2soaW50ZXJuX3RhYmxlLkdldElkKGxlZnRbaV0pKTsKKyAg
ICB9CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByaWdodC5zaXplKCk7ICsraSkgeworICAg
ICAgcmlnaHRfaWRzLnB1c2hfYmFjayhpbnRlcm5fdGFibGUuR2V0SWQocmlnaHRbaV0pKTsKKyAg
ICB9CisgIH0KKyAgcmV0dXJuIENhbGN1bGF0ZU9wdGltYWxFZGl0cyhsZWZ0X2lkcywgcmlnaHRf
aWRzKTsKK30KKworbmFtZXNwYWNlIHsKKworLy8gSGVscGVyIGNsYXNzIHRoYXQgaG9sZHMgdGhl
IHN0YXRlIGZvciBvbmUgaHVuayBhbmQgcHJpbnRzIGl0IG91dCB0byB0aGUKKy8vIHN0cmVhbS4K
Ky8vIEl0IHJlb3JkZXJzIGFkZHMvcmVtb3ZlcyB3aGVuIHBvc3NpYmxlIHRvIGdyb3VwIGFsbCBy
ZW1vdmVzIGJlZm9yZSBhbGwKKy8vIGFkZHMuIEl0IGFsc28gYWRkcyB0aGUgaHVuayBoZWFkZXIg
YmVmb3JlIHByaW50aW50IGludG8gdGhlIHN0cmVhbS4KK2NsYXNzIEh1bmsgeworIHB1YmxpYzoK
KyAgSHVuayhzaXplX3QgbGVmdF9zdGFydCwgc2l6ZV90IHJpZ2h0X3N0YXJ0KQorICAgICAgOiBs
ZWZ0X3N0YXJ0XyhsZWZ0X3N0YXJ0KSwKKyAgICAgICAgcmlnaHRfc3RhcnRfKHJpZ2h0X3N0YXJ0
KSwKKyAgICAgICAgYWRkc18oKSwKKyAgICAgICAgcmVtb3Zlc18oKSwKKyAgICAgICAgY29tbW9u
XygpIHt9CisKKyAgdm9pZCBQdXNoTGluZShjaGFyIGVkaXQsIGNvbnN0IGNoYXIqIGxpbmUpIHsK
KyAgICBzd2l0Y2ggKGVkaXQpIHsKKyAgICAgIGNhc2UgJyAnOgorICAgICAgICArK2NvbW1vbl87
CisgICAgICAgIEZsdXNoRWRpdHMoKTsKKyAgICAgICAgaHVua18ucHVzaF9iYWNrKHN0ZDo6bWFr
ZV9wYWlyKCcgJywgbGluZSkpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJy0nOgorICAg
ICAgICArK3JlbW92ZXNfOworICAgICAgICBodW5rX3JlbW92ZXNfLnB1c2hfYmFjayhzdGQ6Om1h
a2VfcGFpcignLScsIGxpbmUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICcrJzoKKyAg
ICAgICAgKythZGRzXzsKKyAgICAgICAgaHVua19hZGRzXy5wdXNoX2JhY2soc3RkOjptYWtlX3Bh
aXIoJysnLCBsaW5lKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgfQorCisgIHZvaWQgUHJp
bnRUbyhzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgUHJpbnRIZWFkZXIob3MpOworICAgIEZsdXNo
RWRpdHMoKTsKKyAgICBmb3IgKHN0ZDo6bGlzdDxzdGQ6OnBhaXI8Y2hhciwgY29uc3QgY2hhcio+
ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0KKyAgICAgICAgICAgICBodW5rXy5iZWdpbigpOworICAg
ICAgICAgaXQgIT0gaHVua18uZW5kKCk7ICsraXQpIHsKKyAgICAgICpvcyA8PCBpdC0+Zmlyc3Qg
PDwgaXQtPnNlY29uZCA8PCAiXG4iOworICAgIH0KKyAgfQorCisgIGJvb2wgaGFzX2VkaXRzKCkg
Y29uc3QgeyByZXR1cm4gYWRkc18gfHwgcmVtb3Zlc187IH0KKworIHByaXZhdGU6CisgIHZvaWQg
Rmx1c2hFZGl0cygpIHsKKyAgICBodW5rXy5zcGxpY2UoaHVua18uZW5kKCksIGh1bmtfcmVtb3Zl
c18pOworICAgIGh1bmtfLnNwbGljZShodW5rXy5lbmQoKSwgaHVua19hZGRzXyk7CisgIH0KKwor
ICAvLyBQcmludCBhIHVuaWZpZWQgZGlmZiBoZWFkZXIgZm9yIG9uZSBodW5rLgorICAvLyBUaGUg
Zm9ybWF0IGlzCisgIC8vICAgIkBAIC08bGVmdF9zdGFydD4sPGxlZnRfbGVuZ3RoPiArPHJpZ2h0
X3N0YXJ0Piw8cmlnaHRfbGVuZ3RoPiBAQCIKKyAgLy8gd2hlcmUgdGhlIGxlZnQvcmlnaHQgcGFy
dHMgYXJlIG9taXR0ZWQgaWYgdW5uZWNlc3NhcnkuCisgIHZvaWQgUHJpbnRIZWFkZXIoc3RkOjpv
c3RyZWFtKiBzcykgY29uc3QgeworICAgICpzcyA8PCAiQEAgIjsKKyAgICBpZiAocmVtb3Zlc18p
IHsKKyAgICAgICpzcyA8PCAiLSIgPDwgbGVmdF9zdGFydF8gPDwgIiwiIDw8IChyZW1vdmVzXyAr
IGNvbW1vbl8pOworICAgIH0KKyAgICBpZiAocmVtb3Zlc18gJiYgYWRkc18pIHsKKyAgICAgICpz
cyA8PCAiICI7CisgICAgfQorICAgIGlmIChhZGRzXykgeworICAgICAgKnNzIDw8ICIrIiA8PCBy
aWdodF9zdGFydF8gPDwgIiwiIDw8IChhZGRzXyArIGNvbW1vbl8pOworICAgIH0KKyAgICAqc3Mg
PDwgIiBAQFxuIjsKKyAgfQorCisgIHNpemVfdCBsZWZ0X3N0YXJ0XywgcmlnaHRfc3RhcnRfOwor
ICBzaXplX3QgYWRkc18sIHJlbW92ZXNfLCBjb21tb25fOworICBzdGQ6Omxpc3Q8c3RkOjpwYWly
PGNoYXIsIGNvbnN0IGNoYXIqPiA+IGh1bmtfLCBodW5rX2FkZHNfLCBodW5rX3JlbW92ZXNfOwor
fTsKKworfSAgLy8gbmFtZXNwYWNlCisKKy8vIENyZWF0ZSBhIGxpc3Qgb2YgZGlmZiBodW5rcyBp
biBVbmlmaWVkIGRpZmYgZm9ybWF0LgorLy8gRWFjaCBodW5rIGhhcyBhIGhlYWRlciBnZW5lcmF0
ZWQgYnkgUHJpbnRIZWFkZXIgYWJvdmUgcGx1cyBhIGJvZHkgd2l0aAorLy8gbGluZXMgcHJlZml4
ZWQgd2l0aCAnICcgZm9yIG5vIGNoYW5nZSwgJy0nIGZvciBkZWxldGlvbiBhbmQgJysnIGZvcgor
Ly8gYWRkaXRpb24uCisvLyAnY29udGV4dCcgcmVwcmVzZW50cyB0aGUgZGVzaXJlZCB1bmNoYW5n
ZWQgcHJlZml4L3N1ZmZpeCBhcm91bmQgdGhlIGRpZmYuCisvLyBJZiB0d28gaHVua3MgYXJlIGNs
b3NlIGVub3VnaCB0aGF0IHRoZWlyIGNvbnRleHRzIG92ZXJsYXAsIHRoZW4gdGhleSBhcmUKKy8v
IGpvaW5lZCBpbnRvIG9uZSBodW5rLgorc3RkOjpzdHJpbmcgQ3JlYXRlVW5pZmllZERpZmYoY29u
c3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBsZWZ0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiByaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb250ZXh0KSB7CisgIGNvbnN0IHN0ZDo6dmVj
dG9yPEVkaXRUeXBlPiBlZGl0cyA9IENhbGN1bGF0ZU9wdGltYWxFZGl0cyhsZWZ0LCByaWdodCk7
CisKKyAgc2l6ZV90IGxfaSA9IDAsIHJfaSA9IDAsIGVkaXRfaSA9IDA7CisgIHN0ZDo6c3RyaW5n
c3RyZWFtIHNzOworICB3aGlsZSAoZWRpdF9pIDwgZWRpdHMuc2l6ZSgpKSB7CisgICAgLy8gRmlu
ZCBmaXJzdCBlZGl0LgorICAgIHdoaWxlIChlZGl0X2kgPCBlZGl0cy5zaXplKCkgJiYgZWRpdHNb
ZWRpdF9pXSA9PSBrTWF0Y2gpIHsKKyAgICAgICsrbF9pOworICAgICAgKytyX2k7CisgICAgICAr
K2VkaXRfaTsKKyAgICB9CisKKyAgICAvLyBGaW5kIHRoZSBmaXJzdCBsaW5lIHRvIGluY2x1ZGUg
aW4gdGhlIGh1bmsuCisgICAgY29uc3Qgc2l6ZV90IHByZWZpeF9jb250ZXh0ID0gc3RkOjptaW4o
bF9pLCBjb250ZXh0KTsKKyAgICBIdW5rIGh1bmsobF9pIC0gcHJlZml4X2NvbnRleHQgKyAxLCBy
X2kgLSBwcmVmaXhfY29udGV4dCArIDEpOworICAgIGZvciAoc2l6ZV90IGkgPSBwcmVmaXhfY29u
dGV4dDsgaSA+IDA7IC0taSkgeworICAgICAgaHVuay5QdXNoTGluZSgnICcsIGxlZnRbbF9pIC0g
aV0uY19zdHIoKSk7CisgICAgfQorCisgICAgLy8gSXRlcmF0ZSB0aGUgZWRpdHMgdW50aWwgd2Ug
Zm91bmQgZW5vdWdoIHN1ZmZpeCBmb3IgdGhlIGh1bmsgb3IgdGhlIGlucHV0CisgICAgLy8gaXMg
b3Zlci4KKyAgICBzaXplX3Qgbl9zdWZmaXggPSAwOworICAgIGZvciAoOyBlZGl0X2kgPCBlZGl0
cy5zaXplKCk7ICsrZWRpdF9pKSB7CisgICAgICBpZiAobl9zdWZmaXggPj0gY29udGV4dCkgewor
ICAgICAgICAvLyBDb250aW51ZSBvbmx5IGlmIHRoZSBuZXh0IGh1bmsgaXMgdmVyeSBjbG9zZS4K
KyAgICAgICAgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGVkaXRz
LmJlZ2luKCkgKyBlZGl0X2k7CisgICAgICAgIHdoaWxlIChpdCAhPSBlZGl0cy5lbmQoKSAmJiAq
aXQgPT0ga01hdGNoKSArK2l0OworICAgICAgICBpZiAoaXQgPT0gZWRpdHMuZW5kKCkgfHwgKGl0
IC0gZWRpdHMuYmVnaW4oKSkgLSBlZGl0X2kgPj0gY29udGV4dCkgeworICAgICAgICAgIC8vIFRo
ZXJlIGlzIG5vIG5leHQgZWRpdCBvciBpdCBpcyB0b28gZmFyIGF3YXkuCisgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgRWRpdFR5cGUgZWRpdCA9IGVkaXRzW2Vk
aXRfaV07CisgICAgICAvLyBSZXNldCBjb3VudCB3aGVuIGEgbm9uIG1hdGNoIGlzIGZvdW5kLgor
ICAgICAgbl9zdWZmaXggPSBlZGl0ID09IGtNYXRjaCA/IG5fc3VmZml4ICsgMSA6IDA7CisKKyAg
ICAgIGlmIChlZGl0ID09IGtNYXRjaCB8fCBlZGl0ID09IGtSZW1vdmUgfHwgZWRpdCA9PSBrUmVw
bGFjZSkgeworICAgICAgICBodW5rLlB1c2hMaW5lKGVkaXQgPT0ga01hdGNoID8gJyAnIDogJy0n
LCBsZWZ0W2xfaV0uY19zdHIoKSk7CisgICAgICB9CisgICAgICBpZiAoZWRpdCA9PSBrQWRkIHx8
IGVkaXQgPT0ga1JlcGxhY2UpIHsKKyAgICAgICAgaHVuay5QdXNoTGluZSgnKycsIHJpZ2h0W3Jf
aV0uY19zdHIoKSk7CisgICAgICB9CisKKyAgICAgIC8vIEFkdmFuY2UgaW5kaWNlcywgZGVwZW5k
aW5nIG9uIGVkaXQgdHlwZS4KKyAgICAgIGxfaSArPSBlZGl0ICE9IGtBZGQ7CisgICAgICByX2kg
Kz0gZWRpdCAhPSBrUmVtb3ZlOworICAgIH0KKworICAgIGlmICghaHVuay5oYXNfZWRpdHMoKSkg
eworICAgICAgLy8gV2UgYXJlIGRvbmUuIFdlIGRvbid0IHdhbnQgdGhpcyBodW5rLgorICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgaHVuay5QcmludFRvKCZzcyk7CisgIH0KKyAgcmV0dXJuIHNz
LnN0cigpOworfQorCit9ICAvLyBuYW1lc3BhY2UgZWRpdF9kaXN0YW5jZQorCituYW1lc3BhY2Ug
eworCisvLyBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2YWx1ZXMgcmVjZWl2ZWQg
aW4gRXFGYWlsdXJlKCkgYXJlIGFscmVhZHkKKy8vIGVzY2FwZWQuIFNwbGl0IHRoZW0gb24gZXNj
YXBlZCAnXG4nIGJvdW5kYXJpZXMuIExlYXZlIGFsbCBvdGhlciBlc2NhcGVkCisvLyBjaGFyYWN0
ZXJzIHRoZSBzYW1lLgorc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IFNwbGl0RXNjYXBlZFN0cmlu
Zyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBs
aW5lczsKKyAgc2l6ZV90IHN0YXJ0ID0gMCwgZW5kID0gc3RyLnNpemUoKTsKKyAgaWYgKGVuZCA+
IDIgJiYgc3RyWzBdID09ICciJyAmJiBzdHJbZW5kIC0gMV0gPT0gJyInKSB7CisgICAgKytzdGFy
dDsKKyAgICAtLWVuZDsKKyAgfQorICBib29sIGVzY2FwZWQgPSBmYWxzZTsKKyAgZm9yIChzaXpl
X3QgaSA9IHN0YXJ0OyBpICsgMSA8IGVuZDsgKytpKSB7CisgICAgaWYgKGVzY2FwZWQpIHsKKyAg
ICAgIGVzY2FwZWQgPSBmYWxzZTsKKyAgICAgIGlmIChzdHJbaV0gPT0gJ24nKSB7CisgICAgICAg
IGxpbmVzLnB1c2hfYmFjayhzdHIuc3Vic3RyKHN0YXJ0LCBpIC0gc3RhcnQgLSAxKSk7CisgICAg
ICAgIHN0YXJ0ID0gaSArIDE7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIGVzY2FwZWQg
PSBzdHJbaV0gPT0gJ1xcJzsKKyAgICB9CisgIH0KKyAgbGluZXMucHVzaF9iYWNrKHN0ci5zdWJz
dHIoc3RhcnQsIGVuZCAtIHN0YXJ0KSk7CisgIHJldHVybiBsaW5lczsKK30KKworfSAgLy8gbmFt
ZXNwYWNlCisKIC8vIENvbnN0cnVjdHMgYW5kIHJldHVybnMgdGhlIG1lc3NhZ2UgZm9yIGFuIGVx
dWFsaXR5IGFzc2VydGlvbgogLy8gKGUuZy4gQVNTRVJUX0VRLCBFWFBFQ1RfU1RSRVEsIGV0Yykg
ZmFpbHVyZS4KIC8vCkBAIC0xMDAyLDQxICsxMzQ1LDU0IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7
CiAvLyBhbmQgdGhlaXIgdmFsdWVzLCBhcyBzdHJpbmdzLiAgRm9yIGV4YW1wbGUsIGZvciBBU1NF
UlRfRVEoZm9vLCBiYXIpCiAvLyB3aGVyZSBmb28gaXMgNSBhbmQgYmFyIGlzIDYsIHdlIGhhdmU6
CiAvLwotLy8gICBleHBlY3RlZF9leHByZXNzaW9uOiAiZm9vIgotLy8gICBhY3R1YWxfZXhwcmVz
c2lvbjogICAiYmFyIgotLy8gICBleHBlY3RlZF92YWx1ZTogICAgICAiNSIKLS8vICAgYWN0dWFs
X3ZhbHVlOiAgICAgICAgIjYiCisvLyAgIGxoc19leHByZXNzaW9uOiAiZm9vIgorLy8gICByaHNf
ZXhwcmVzc2lvbjogImJhciIKKy8vICAgbGhzX3ZhbHVlOiAgICAgICI1IgorLy8gICByaHNfdmFs
dWU6ICAgICAgIjYiCiAvLwogLy8gVGhlIGlnbm9yaW5nX2Nhc2UgcGFyYW1ldGVyIGlzIHRydWUg
aWZmIHRoZSBhc3NlcnRpb24gaXMgYQotLy8gKl9TVFJDQVNFRVEqLiAgV2hlbiBpdCdzIHRydWUs
IHRoZSBzdHJpbmcgIiAoaWdub3JpbmcgY2FzZSkiIHdpbGwKKy8vICpfU1RSQ0FTRUVRKi4gIFdo
ZW4gaXQncyB0cnVlLCB0aGUgc3RyaW5nICJJZ25vcmluZyBjYXNlIiB3aWxsCiAvLyBiZSBpbnNl
cnRlZCBpbnRvIHRoZSBtZXNzYWdlLgotQXNzZXJ0aW9uUmVzdWx0IEVxRmFpbHVyZShjb25zdCBj
aGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBleHBlY3RlZF92YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBhY3R1YWxfdmFsdWUsCitBc3NlcnRpb25SZXN1bHQgRXFGYWlsdXJlKGNvbnN0
IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIGxoc192YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHJoc192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25v
cmluZ19jYXNlKSB7CiAgIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgIlZhbHVlIG9mOiAiIDw8IGFj
dHVhbF9leHByZXNzaW9uOwotICBpZiAoYWN0dWFsX3ZhbHVlICE9IGFjdHVhbF9leHByZXNzaW9u
KSB7Ci0gICAgbXNnIDw8ICJcbiAgQWN0dWFsOiAiIDw8IGFjdHVhbF92YWx1ZTsKKyAgbXNnIDw8
ICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6IjsKKyAgbXNnIDw8ICJcbiAgIiA8
PCBsaHNfZXhwcmVzc2lvbjsKKyAgaWYgKGxoc192YWx1ZSAhPSBsaHNfZXhwcmVzc2lvbikgewor
ICAgIG1zZyA8PCAiXG4gICAgV2hpY2ggaXM6ICIgPDwgbGhzX3ZhbHVlOworICB9CisgIG1zZyA8
PCAiXG4gICIgPDwgcmhzX2V4cHJlc3Npb247CisgIGlmIChyaHNfdmFsdWUgIT0gcmhzX2V4cHJl
c3Npb24pIHsKKyAgICBtc2cgPDwgIlxuICAgIFdoaWNoIGlzOiAiIDw8IHJoc192YWx1ZTsKICAg
fQogCi0gIG1zZyA8PCAiXG5FeHBlY3RlZDogIiA8PCBleHBlY3RlZF9leHByZXNzaW9uOwogICBp
ZiAoaWdub3JpbmdfY2FzZSkgewotICAgIG1zZyA8PCAiIChpZ25vcmluZyBjYXNlKSI7CisgICAg
bXNnIDw8ICJcbklnbm9yaW5nIGNhc2UiOwogICB9Ci0gIGlmIChleHBlY3RlZF92YWx1ZSAhPSBl
eHBlY3RlZF9leHByZXNzaW9uKSB7Ci0gICAgbXNnIDw8ICJcbldoaWNoIGlzOiAiIDw8IGV4cGVj
dGVkX3ZhbHVlOworCisgIGlmICghbGhzX3ZhbHVlLmVtcHR5KCkgJiYgIXJoc192YWx1ZS5lbXB0
eSgpKSB7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGxoc19saW5lcyA9Cisg
ICAgICAgIFNwbGl0RXNjYXBlZFN0cmluZyhsaHNfdmFsdWUpOworICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiByaHNfbGluZXMgPQorICAgICAgICBTcGxpdEVzY2FwZWRTdHJpbmco
cmhzX3ZhbHVlKTsKKyAgICBpZiAobGhzX2xpbmVzLnNpemUoKSA+IDEgfHwgcmhzX2xpbmVzLnNp
emUoKSA+IDEpIHsKKyAgICAgIG1zZyA8PCAiXG5XaXRoIGRpZmY6XG4iCisgICAgICAgICAgPDwg
ZWRpdF9kaXN0YW5jZTo6Q3JlYXRlVW5pZmllZERpZmYobGhzX2xpbmVzLCByaHNfbGluZXMpOwor
ICAgIH0KICAgfQogCi0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIHJldHVybiBB
c3NlcnRpb25GYWlsdXJlKCkgPDwgbXNnOwogfQogCiAvLyBDb25zdHJ1Y3RzIGEgZmFpbHVyZSBt
ZXNzYWdlIGZvciBCb29sZWFuIGFzc2VydGlvbnMgc3VjaCBhcyBFWFBFQ1RfVFJVRS4KLVN0cmlu
ZyBHZXRCb29sQXNzZXJ0aW9uRmFpbHVyZU1lc3NhZ2UoY29uc3QgQXNzZXJ0aW9uUmVzdWx0JiBh
c3NlcnRpb25fcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBleHByZXNzaW9uX3RleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9wcmVkaWNhdGVfdmFsdWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkX3ByZWRpY2F0
ZV92YWx1ZSkgeworc3RkOjpzdHJpbmcgR2V0Qm9vbEFzc2VydGlvbkZhaWx1cmVNZXNzYWdlKAor
ICAgIGNvbnN0IEFzc2VydGlvblJlc3VsdCYgYXNzZXJ0aW9uX3Jlc3VsdCwKKyAgICBjb25zdCBj
aGFyKiBleHByZXNzaW9uX3RleHQsCisgICAgY29uc3QgY2hhciogYWN0dWFsX3ByZWRpY2F0ZV92
YWx1ZSwKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZF9wcmVkaWNhdGVfdmFsdWUpIHsKICAgY29u
c3QgY2hhciogYWN0dWFsX21lc3NhZ2UgPSBhc3NlcnRpb25fcmVzdWx0Lm1lc3NhZ2UoKTsKICAg
TWVzc2FnZSBtc2c7CiAgIG1zZyA8PCAiVmFsdWUgb2Y6ICIgPDwgZXhwcmVzc2lvbl90ZXh0CkBA
IC0xMDU3LDE1ICsxNDEzLDE0IEBAIEFzc2VydGlvblJlc3VsdCBEb3VibGVOZWFyUHJlZEZvcm1h
dChjb25zdCBjaGFyKiBleHByMSwKICAgY29uc3QgZG91YmxlIGRpZmYgPSBmYWJzKHZhbDEgLSB2
YWwyKTsKICAgaWYgKGRpZmYgPD0gYWJzX2Vycm9yKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2Vzcygp
OwogCi0gIC8vIFRPRE8od2FuKTogZG8gbm90IHByaW50IHRoZSB2YWx1ZSBvZiBhbiBleHByZXNz
aW9uIGlmIGl0J3MKKyAgLy8gRklYTUU6IGRvIG5vdCBwcmludCB0aGUgdmFsdWUgb2YgYW4gZXhw
cmVzc2lvbiBpZiBpdCdzCiAgIC8vIGFscmVhZHkgYSBsaXRlcmFsLgotICBNZXNzYWdlIG1zZzsK
LSAgbXNnIDw8ICJUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuICIgPDwgZXhwcjEgPDwgIiBhbmQgIiA8
PCBleHByMgorICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCAiVGhlIGRpZmZl
cmVuY2UgYmV0d2VlbiAiIDw8IGV4cHIxIDw8ICIgYW5kICIgPDwgZXhwcjIKICAgICAgIDw8ICIg
aXMgIiA8PCBkaWZmIDw8ICIsIHdoaWNoIGV4Y2VlZHMgIiA8PCBhYnNfZXJyb3JfZXhwciA8PCAi
LCB3aGVyZVxuIgogICAgICAgPDwgZXhwcjEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2YWwxIDw8
ICIsXG4iCiAgICAgICA8PCBleHByMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHZhbDIgPDwgIiwg
YW5kXG4iCiAgICAgICA8PCBhYnNfZXJyb3JfZXhwciA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IGFi
c19lcnJvciA8PCAiLiI7Ci0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIApA
QCAtMTA5MCwyMCArMTQ0NSwxOCBAQCBBc3NlcnRpb25SZXN1bHQgRmxvYXRpbmdQb2ludExFKGNv
bnN0IGNoYXIqIGV4cHIxLAogICAvLyB2YWwyIGlzIE5hTiwgYXMgdGhlIElFRUUgZmxvYXRpbmct
cG9pbnQgc3RhbmRhcmQgcmVxdWlyZXMgdGhhdAogICAvLyBhbnkgcHJlZGljYXRlIGludm9sdmlu
ZyBhIE5hTiBtdXN0IHJldHVybiBmYWxzZS4KIAotICBTdHJTdHJlYW0gdmFsMV9zczsKKyAgOjpz
dGQ6OnN0cmluZ3N0cmVhbSB2YWwxX3NzOwogICB2YWwxX3NzIDw8IHN0ZDo6c2V0cHJlY2lzaW9u
KHN0ZDo6bnVtZXJpY19saW1pdHM8UmF3VHlwZT46OmRpZ2l0czEwICsgMikKICAgICAgICAgICA8
PCB2YWwxOwogCi0gIFN0clN0cmVhbSB2YWwyX3NzOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHZh
bDJfc3M7CiAgIHZhbDJfc3MgPDwgc3RkOjpzZXRwcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0
czxSYXdUeXBlPjo6ZGlnaXRzMTAgKyAyKQogICAgICAgICAgIDw8IHZhbDI7CiAKLSAgTWVzc2Fn
ZSBtc2c7Ci0gIG1zZyA8PCAiRXhwZWN0ZWQ6ICgiIDw8IGV4cHIxIDw8ICIpIDw9ICgiIDw8IGV4
cHIyIDw8ICIpXG4iCi0gICAgICA8PCAiICBBY3R1YWw6ICIgPDwgU3RyU3RyZWFtVG9TdHJpbmco
JnZhbDFfc3MpIDw8ICIgdnMgIgotICAgICAgPDwgU3RyU3RyZWFtVG9TdHJpbmcoJnZhbDJfc3Mp
OwotCi0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIHJldHVybiBBc3NlcnRpb25G
YWlsdXJlKCkKKyAgICAgIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgPD0gKCIgPDwg
ZXhwcjIgPDwgIilcbiIKKyAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBTdHJpbmdTdHJlYW1Ub1N0
cmluZygmdmFsMV9zcykgPDwgIiB2cyAiCisgICAgICA8PCBTdHJpbmdTdHJlYW1Ub1N0cmluZygm
dmFsMl9zcyk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbApAQCAtMTEyNiwxOCArMTQ3
OSwxOCBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZv
ciB7QVNTRVJUfEVYUEVDVH1fRVEgd2l0aCBpbnQgb3IgZW51bQogLy8gYXJndW1lbnRzLgotQXNz
ZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBleHBlY3RlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGFjdHVhbCkgewotICBpZiAoZXhw
ZWN0ZWQgPT0gYWN0dWFsKSB7CitBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRVEoY29uc3QgY2hh
ciogbGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdElu
dCBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCByaHMpIHsKKyAg
aWYgKGxocyA9PSByaHMpIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9CiAK
LSAgcmV0dXJuIEVxRmFpbHVyZShleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAg
ICAgIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBh
cmlzb25GYWlsdXJlTWVzc2FnZShleHBlY3RlZCwgYWN0dWFsKSwKLSAgICAgICAgICAgICAgICAg
ICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoYWN0dWFsLCBleHBlY3RlZCksCisg
IHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgcmhz
X2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1
cmVNZXNzYWdlKGxocywgcmhzKSwKKyAgICAgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2UocmhzLCBsaHMpLAogICAgICAgICAgICAgICAgICAgIGZhbHNlKTsK
IH0KIApAQCAtMTE1MCwxMSArMTUwMywxMCBAQCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyIyNv
cF9uYW1lKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwgXAogICBpZiAodmFs
MSBvcCB2YWwyKSB7XAogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7XAogICB9IGVsc2Ug
e1wKLSAgICBNZXNzYWdlIG1zZztcCi0gICAgbXNnIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEg
PDwgIikgIiAjb3AgIiAoIiA8PCBleHByMlwKKyAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgp
IFwKKyAgICAgICAgPDwgIkV4cGVjdGVkOiAoIiA8PCBleHByMSA8PCAiKSAiICNvcCAiICgiIDw8
IGV4cHIyXAogICAgICAgICA8PCAiKSwgYWN0dWFsOiAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZSh2YWwxLCB2YWwyKVwKICAgICAgICAgPDwgIiB2cyAiIDw8IEZvcm1hdEZv
ckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSh2YWwyLCB2YWwxKTtcCi0gICAgcmV0dXJuIEFzc2Vy
dGlvbkZhaWx1cmUobXNnKTtcCiAgIH1cCiB9CiAKQEAgLTExNzcsMzQgKzE1MjksMzQgQEAgR1RF
U1RfSU1QTF9DTVBfSEVMUEVSXyhHVCwgPiApCiAjdW5kZWYgR1RFU1RfSU1QTF9DTVBfSEVMUEVS
XwogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fU1RSRVEuCi1B
c3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVz
c2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxf
ZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBl
eHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1
YWwpIHsKLSAgaWYgKFN0cmluZzo6Q1N0cmluZ0VxdWFscyhleHBlY3RlZCwgYWN0dWFsKSkgewor
QXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNz
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxocywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHMpIHsKKyAgaWYgKFN0
cmluZzo6Q1N0cmluZ0VxdWFscyhsaHMsIHJocykpIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3Vj
Y2VzcygpOwogICB9CiAKLSAgcmV0dXJuIEVxRmFpbHVyZShleHBlY3RlZF9leHByZXNzaW9uLAot
ICAgICAgICAgICAgICAgICAgIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAg
IFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQoZXhwZWN0ZWQpLAotICAgICAgICAgICAgICAgICAg
IFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQoYWN0dWFsKSwKKyAgcmV0dXJuIEVxRmFpbHVyZShs
aHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICByaHNfZXhwcmVzc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKGxocyksCisgICAgICAgICAgICAgICAgICAgUHJp
bnRUb1N0cmluZyhyaHMpLAogICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKIH0KIAogLy8gVGhl
IGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NUUkNBU0VFUS4KLUFzc2VydGlv
blJlc3VsdCBDbXBIZWxwZXJTVFJDQVNFRVEoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFs
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBhY3R1YWwpIHsKLSAgaWYgKFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFs
cyhleHBlY3RlZCwgYWN0dWFsKSkgeworQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VF
UShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxocywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogcmhzKSB7CisgIGlmIChTdHJpbmc6OkNhc2VJbnNlbnNp
dGl2ZUNTdHJpbmdFcXVhbHMobGhzLCByaHMpKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nl
c3MoKTsKICAgfQogCi0gIHJldHVybiBFcUZhaWx1cmUoZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBT
dHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAgICAgICBT
dHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKGFjdHVhbCksCisgIHJldHVybiBFcUZhaWx1cmUobGhz
X2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAg
ICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhsaHMpLAorICAgICAgICAgICAgICAgICAgIFByaW50
VG9TdHJpbmcocmhzKSwKICAgICAgICAgICAgICAgICAgICB0cnVlKTsKIH0KIApAQCAtMTIxNiwx
MSArMTU2OCw5IEBAIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJORShjb25zdCBjaGFyKiBz
MV9leHByZXNzaW9uLAogICBpZiAoIVN0cmluZzo6Q1N0cmluZ0VxdWFscyhzMSwgczIpKSB7CiAg
ICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfSBlbHNlIHsKLSAgICBNZXNzYWdlIG1z
ZzsKLSAgICBtc2cgPDwgIkV4cGVjdGVkOiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgi
Ci0gICAgICAgIDw8IHMyX2V4cHJlc3Npb24gPDwgIiksIGFjdHVhbDogXCIiCi0gICAgICAgIDw8
IHMxIDw8ICJcIiB2cyBcIiIgPDwgczIgPDwgIlwiIjsKLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFp
bHVyZShtc2cpOworICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgIkV4cGVjdGVkOiAo
IiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8PCBzMl9leHByZXNzaW9uIDw8ICIpLCBhY3R1YWw6IFwiIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgczEgPDwgIlwiIHZzIFwiIiA8PCBzMiA8PCAiXCIiOwogICB9CiB9
CiAKQEAgLTEyMzIsMTEgKzE1ODIsMTAgQEAgQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNB
U0VORShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAogICBpZiAoIVN0cmluZzo6Q2FzZUluc2Vu
c2l0aXZlQ1N0cmluZ0VxdWFscyhzMSwgczIpKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nl
c3MoKTsKICAgfSBlbHNlIHsKLSAgICBNZXNzYWdlIG1zZzsKLSAgICBtc2cgPDwgIkV4cGVjdGVk
OiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgiCisgICAgcmV0dXJuIEFzc2VydGlvbkZh
aWx1cmUoKQorICAgICAgICA8PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4cHJlc3Npb24gPDwgIikg
IT0gKCIKICAgICAgICAgPDwgczJfZXhwcmVzc2lvbiA8PCAiKSAoaWdub3JpbmcgY2FzZSksIGFj
dHVhbDogXCIiCiAgICAgICAgIDw8IHMxIDw8ICJcIiB2cyBcIiIgPDwgczIgPDwgIlwiIjsKLSAg
ICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogICB9CiB9CiAKQEAgLTEyODUsMTMgKzE2
MzQsMTIgQEAgQXNzZXJ0aW9uUmVzdWx0IElzU3Vic3RyaW5nSW1wbCgKIAogICBjb25zdCBib29s
IGlzX3dpZGVfc3RyaW5nID0gc2l6ZW9mKG5lZWRsZVswXSkgPiAxOwogICBjb25zdCBjaGFyKiBj
b25zdCBiZWdpbl9zdHJpbmdfcXVvdGUgPSBpc193aWRlX3N0cmluZyA/ICJMXCIiIDogIlwiIjsK
LSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoCi0gICAgICBNZXNzYWdlKCkKKyAgcmV0dXJuIEFz
c2VydGlvbkZhaWx1cmUoKQogICAgICAgPDwgIlZhbHVlIG9mOiAiIDw8IG5lZWRsZV9leHByIDw8
ICJcbiIKICAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBiZWdpbl9zdHJpbmdfcXVvdGUgPDwgbmVl
ZGxlIDw8ICJcIlxuIgogICAgICAgPDwgIkV4cGVjdGVkOiAiIDw8IChleHBlY3RlZF90b19iZV9z
dWJzdHJpbmcgPyAiIiA6ICJub3QgIikKICAgICAgIDw8ICJhIHN1YnN0cmluZyBvZiAiIDw8IGhh
eXN0YWNrX2V4cHIgPDwgIlxuIgotICAgICAgPDwgIldoaWNoIGlzOiAiIDw8IGJlZ2luX3N0cmlu
Z19xdW90ZSA8PCBoYXlzdGFjayA8PCAiXCIiKTsKKyAgICAgIDw8ICJXaGljaCBpczogIiA8PCBi
ZWdpbl9zdHJpbmdfcXVvdGUgPDwgaGF5c3RhY2sgPDwgIlwiIjsKIH0KIAogfSAgLy8gbmFtZXNw
YWNlCkBAIC0xMzYwLDE2ICsxNzA4LDE5IEBAIG5hbWVzcGFjZSB7CiBBc3NlcnRpb25SZXN1bHQg
SFJFU1VMVEZhaWx1cmVIZWxwZXIoY29uc3QgY2hhciogZXhwciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHBlY3RlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb25nIGhyKSB7ICAvLyBOT0xJTlQKLSNpZiBHVEVTVF9P
U19XSU5ET1dTX01PQklMRQorIyBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRSB8fCBHVEVTVF9P
U19XSU5ET1dTX1RWX1RJVExFCisKICAgLy8gV2luZG93cyBDRSBkb2Vzbid0IHN1cHBvcnQgRm9y
bWF0TWVzc2FnZS4KICAgY29uc3QgY2hhciBlcnJvcl90ZXh0W10gPSAiIjsKLSNlbHNlCisKKyMg
ZWxzZQorCiAgIC8vIExvb2tzIHVwIHRoZSBodW1hbi1yZWFkYWJsZSBzeXN0ZW0gbWVzc2FnZSBm
b3IgdGhlIEhSRVNVTFQgY29kZQogICAvLyBhbmQgc2luY2Ugd2UncmUgbm90IHBhc3NpbmcgYW55
IHBhcmFtcyB0byBGb3JtYXRNZXNzYWdlLCB3ZSBkb24ndAogICAvLyB3YW50IGluc2VydHMgZXhw
YW5kZWQuCiAgIGNvbnN0IERXT1JEIGtGbGFncyA9IEZPUk1BVF9NRVNTQUdFX0ZST01fU1lTVEVN
IHwKICAgICAgICAgICAgICAgICAgICAgICAgRk9STUFUX01FU1NBR0VfSUdOT1JFX0lOU0VSVFM7
Ci0gIGNvbnN0IERXT1JEIGtCdWZTaXplID0gNDA5NjsgIC8vIFN0cmluZzo6Rm9ybWF0IGNhbid0
IGV4Y2VlZCB0aGlzIGxlbmd0aC4KKyAgY29uc3QgRFdPUkQga0J1ZlNpemUgPSA0MDk2OwogICAv
LyBHZXRzIHRoZSBzeXN0ZW0ncyBodW1hbiByZWFkYWJsZSBtZXNzYWdlIHN0cmluZyBmb3IgdGhp
cyBIUkVTVUxULgogICBjaGFyIGVycm9yX3RleHRba0J1ZlNpemVdID0geyAnXDAnIH07CiAgIERX
T1JEIG1lc3NhZ2VfbGVuZ3RoID0gOjpGb3JtYXRNZXNzYWdlQShrRmxhZ3MsCkBAIC0xMzc5LDE5
ICsxNzMwLDE4IEBAIEFzc2VydGlvblJlc3VsdCBIUkVTVUxURmFpbHVyZUhlbHBlcihjb25zdCBj
aGFyKiBleHByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJy
b3JfdGV4dCwgIC8vIG91dHB1dCBidWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtCdWZTaXplLCAgLy8gYnVmIHNpemUKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOyAgLy8gbm8gYXJndW1lbnRzIGZvciBpbnNlcnRz
Ci0gIC8vIFRyaW1zIHRhaWxpbmcgd2hpdGUgc3BhY2UgKEZvcm1hdE1lc3NhZ2UgbGVhdmVzIGEg
dHJhaWxpbmcgY3ItbGYpCi0gIGZvciAoOyBtZXNzYWdlX2xlbmd0aCAmJiBpc3NwYWNlKGVycm9y
X3RleHRbbWVzc2FnZV9sZW5ndGggLSAxXSk7CisgIC8vIFRyaW1zIHRhaWxpbmcgd2hpdGUgc3Bh
Y2UgKEZvcm1hdE1lc3NhZ2UgbGVhdmVzIGEgdHJhaWxpbmcgQ1ItTEYpCisgIGZvciAoOyBtZXNz
YWdlX2xlbmd0aCAmJiBJc1NwYWNlKGVycm9yX3RleHRbbWVzc2FnZV9sZW5ndGggLSAxXSk7CiAg
ICAgICAgICAgLS1tZXNzYWdlX2xlbmd0aCkgewogICAgIGVycm9yX3RleHRbbWVzc2FnZV9sZW5n
dGggLSAxXSA9ICdcMCc7CiAgIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
IAotICBjb25zdCBTdHJpbmcgZXJyb3JfaGV4KFN0cmluZzo6Rm9ybWF0KCIweCUwOFggIiwgaHIp
KTsKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCAiRXhwZWN0ZWQ6ICIgPDwgZXhwciA8PCAiICIg
PDwgZXhwZWN0ZWQgPDwgIi5cbiIKLSAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBlcnJvcl9oZXgg
PDwgZXJyb3JfdGV4dCA8PCAiXG4iOworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKIAotICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIGNvbnN0
IHN0ZDo6c3RyaW5nIGVycm9yX2hleCgiMHgiICsgU3RyaW5nOjpGb3JtYXRIZXhJbnQoaHIpKTsK
KyAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCAiRXhwZWN0
ZWQ6ICIgPDwgZXhwciA8PCAiICIgPDwgZXhwZWN0ZWQgPDwgIi5cbiIKKyAgICAgIDw8ICIgIEFj
dHVhbDogIiA8PCBlcnJvcl9oZXggPDwgIiAiIDw8IGVycm9yX3RleHQgPDwgIlxuIjsKIH0KIAog
fSAgLy8gbmFtZXNwYWNlCkBAIC0xNDE1LDcgKzE3NjUsNyBAQCBBc3NlcnRpb25SZXN1bHQgSXNI
UkVTVUxURmFpbHVyZShjb25zdCBjaGFyKiBleHByLCBsb25nIGhyKSB7ICAvLyBOT0xJTlQKIC8v
IFV0aWxpdHkgZnVuY3Rpb25zIGZvciBlbmNvZGluZyBVbmljb2RlIHRleHQgKHdpZGUgc3RyaW5n
cykgaW4KIC8vIFVURi04LgogCi0vLyBBIFVuaWNvZGUgY29kZS1wb2ludCBjYW4gaGF2ZSB1cHRv
IDIxIGJpdHMsIGFuZCBpcyBlbmNvZGVkIGluIFVURi04CisvLyBBIFVuaWNvZGUgY29kZS1wb2lu
dCBjYW4gaGF2ZSB1cCB0byAyMSBiaXRzLCBhbmQgaXMgZW5jb2RlZCBpbiBVVEYtOAogLy8gbGlr
ZSB0aGlzOgogLy8KIC8vIENvZGUtcG9pbnQgbGVuZ3RoICAgRW5jb2RpbmcKQEAgLTE0NDgsMTIg
KzE3OTgsMTUgQEAgaW5saW5lIFVJbnQzMiBDaG9wTG93Qml0cyhVSW50MzIqIGJpdHMsIGludCBu
KSB7CiAvLyBDb252ZXJ0cyBhIFVuaWNvZGUgY29kZSBwb2ludCB0byBhIG5hcnJvdyBzdHJpbmcg
aW4gVVRGLTggZW5jb2RpbmcuCiAvLyBjb2RlX3BvaW50IHBhcmFtZXRlciBpcyBvZiB0eXBlIFVJ
bnQzMiBiZWNhdXNlIHdjaGFyX3QgbWF5IG5vdCBiZQogLy8gd2lkZSBlbm91Z2ggdG8gY29udGFp
biBhIGNvZGUgcG9pbnQuCi0vLyBUaGUgb3V0cHV0IGJ1ZmZlciBzdHIgbXVzdCBjb250YWludCBh
dCBsZWFzdCAzMiBjaGFyYWN0ZXJzLgotLy8gVGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIGFkZHJl
c3Mgb2YgdGhlIG91dHB1dCBidWZmZXIuCiAvLyBJZiB0aGUgY29kZV9wb2ludCBpcyBub3QgYSB2
YWxpZCBVbmljb2RlIGNvZGUgcG9pbnQKLS8vIChpLmUuIG91dHNpZGUgb2YgVW5pY29kZSByYW5n
ZSBVKzAgdG8gVSsxMEZGRkYpIGl0IHdpbGwgYmUgb3V0cHV0Ci0vLyBhcyAnKEludmFsaWQgVW5p
Y29kZSAweFhYWFhYWFhYKScuCi1jaGFyKiBDb2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9p
bnQsIGNoYXIqIHN0cikgeworLy8gKGkuZS4gb3V0c2lkZSBvZiBVbmljb2RlIHJhbmdlIFUrMCB0
byBVKzEwRkZGRikgaXQgd2lsbCBiZSBjb252ZXJ0ZWQKKy8vIHRvICIoSW52YWxpZCBVbmljb2Rl
IDB4WFhYWFhYWFgpIi4KK3N0ZDo6c3RyaW5nIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9w
b2ludCkgeworICBpZiAoY29kZV9wb2ludCA+IGtNYXhDb2RlUG9pbnQ0KSB7CisgICAgcmV0dXJu
ICIoSW52YWxpZCBVbmljb2RlIDB4IiArIFN0cmluZzo6Rm9ybWF0SGV4SW50KGNvZGVfcG9pbnQp
ICsgIikiOworICB9CisKKyAgY2hhciBzdHJbNV07ICAvLyBCaWcgZW5vdWdoIGZvciB0aGUgbGFy
Z2VzdCB2YWxpZCBjb2RlIHBvaW50LgogICBpZiAoY29kZV9wb2ludCA8PSBrTWF4Q29kZVBvaW50
MSkgewogICAgIHN0clsxXSA9ICdcMCc7CiAgICAgc3RyWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4o
Y29kZV9wb2ludCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAweHh4eHh4eApAQCAtMTQ2
NiwyNyArMTgxOSwxNyBAQCBjaGFyKiBDb2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQs
IGNoYXIqIHN0cikgewogICAgIHN0clsyXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgfCBDaG9w
TG93Qml0cygmY29kZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKICAgICBzdHJbMV0gPSBzdGF0
aWNfY2FzdDxjaGFyPigweDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVfcG9pbnQsIDYpKTsgIC8vIDEw
eHh4eHh4CiAgICAgc3RyWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHhFMCB8IGNvZGVfcG9pbnQp
OyAgICAgICAgICAgICAgICAgICAvLyAxMTEweHh4eAotICB9IGVsc2UgaWYgKGNvZGVfcG9pbnQg
PD0ga01heENvZGVQb2ludDQpIHsKKyAgfSBlbHNlIHsgIC8vIGNvZGVfcG9pbnQgPD0ga01heENv
ZGVQb2ludDQKICAgICBzdHJbNF0gPSAnXDAnOwogICAgIHN0clszXSA9IHN0YXRpY19jYXN0PGNo
YXI+KDB4ODAgfCBDaG9wTG93Qml0cygmY29kZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKICAg
ICBzdHJbMl0gPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVfcG9p
bnQsIDYpKTsgIC8vIDEweHh4eHh4CiAgICAgc3RyWzFdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHg4
MCB8IENob3BMb3dCaXRzKCZjb2RlX3BvaW50LCA2KSk7ICAvLyAxMHh4eHh4eAogICAgIHN0clsw
XSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4RjAgfCBjb2RlX3BvaW50KTsgICAgICAgICAgICAgICAg
ICAgLy8gMTExMTB4eHgKLSAgfSBlbHNlIHsKLSAgICAvLyBUaGUgbG9uZ2VzdCBzdHJpbmcgU3Ry
aW5nOjpGb3JtYXQgY2FuIHByb2R1Y2Ugd2hlbiBpbnZva2VkCi0gICAgLy8gd2l0aCB0aGVzZSBw
YXJhbWV0ZXJzIGlzIDI4IGNoYXJhY3RlciBsb25nIChub3QgaW5jbHVkaW5nCi0gICAgLy8gdGhl
IHRlcm1pbmF0aW5nIG51bCBjaGFyYWN0ZXIpLiBXZSBhcmUgYXNraW5nIGZvciAzMiBjaGFyYWN0
ZXIKLSAgICAvLyBidWZmZXIganVzdCBpbiBjYXNlLiBUaGlzIGlzIGFsc28gZW5vdWdoIGZvciBz
dHJuY3B5IHRvCi0gICAgLy8gbnVsbC10ZXJtaW5hdGUgdGhlIGRlc3RpbmF0aW9uIHN0cmluZy4K
LSAgICBwb3NpeDo6U3RyTkNweSgKLSAgICAgICAgc3RyLCBTdHJpbmc6OkZvcm1hdCgiKEludmFs
aWQgVW5pY29kZSAweCVYKSIsIGNvZGVfcG9pbnQpLmNfc3RyKCksIDMyKTsKLSAgICBzdHJbMzFd
ID0gJ1wwJzsgIC8vIE1ha2VzIHN1cmUgbm8gY2hhbmdlIGluIHRoZSBmb3JtYXQgdG8gc3RybmNw
eSBsZWF2ZXMKLSAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSByZXN1bHQgdW50ZXJtaW5hdGVk
LgogICB9CiAgIHJldHVybiBzdHI7CiB9CiAKLS8vIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9u
cyBvbmx5IG1ha2Ugc2Vuc2UgaWYgdGhlIHRoZSBzeXN0ZW0KKy8vIFRoZSBmb2xsb3dpbmcgdHdv
IGZ1bmN0aW9ucyBvbmx5IG1ha2Ugc2Vuc2UgaWYgdGhlIHN5c3RlbQogLy8gdXNlcyBVVEYtMTYg
Zm9yIHdpZGUgc3RyaW5nIGVuY29kaW5nLiBBbGwgc3VwcG9ydGVkIHN5c3RlbXMKIC8vIHdpdGgg
MTYgYml0IHdjaGFyX3QgKFdpbmRvd3MsIEN5Z3dpbiwgU3ltYmlhbiBPUykgZG8gdXNlIFVURi0x
Ni4KIApAQCAtMTUyMiwxMSArMTg2NSwxMSBAQCBpbmxpbmUgVUludDMyIENyZWF0ZUNvZGVQb2lu
dEZyb21VdGYxNlN1cnJvZ2F0ZVBhaXIod2NoYXJfdCBmaXJzdCwKIC8vIGFzICcoSW52YWxpZCBV
bmljb2RlIDB4WFhYWFhYWFgpJy4gSWYgdGhlIHN0cmluZyBpcyBpbiBVVEYxNiBlbmNvZGluZwog
Ly8gYW5kIGNvbnRhaW5zIGludmFsaWQgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycywgdmFsdWVzIGlu
IHRob3NlIHBhaXJzCiAvLyB3aWxsIGJlIGVuY29kZWQgYXMgaW5kaXZpZHVhbCBVbmljb2RlIGNo
YXJhY3RlcnMgZnJvbSBCYXNpYyBOb3JtYWwgUGxhbmUuCi1TdHJpbmcgV2lkZVN0cmluZ1RvVXRm
OChjb25zdCB3Y2hhcl90KiBzdHIsIGludCBudW1fY2hhcnMpIHsKK3N0ZDo6c3RyaW5nIFdpZGVT
dHJpbmdUb1V0ZjgoY29uc3Qgd2NoYXJfdCogc3RyLCBpbnQgbnVtX2NoYXJzKSB7CiAgIGlmIChu
dW1fY2hhcnMgPT0gLTEpCiAgICAgbnVtX2NoYXJzID0gc3RhdGljX2Nhc3Q8aW50Pih3Y3NsZW4o
c3RyKSk7CiAKLSAgU3RyU3RyZWFtIHN0cmVhbTsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJl
YW07CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtX2NoYXJzOyArK2kpIHsKICAgICBVSW50MzIg
dW5pY29kZV9jb2RlX3BvaW50OwogCkBAIC0xNTQwLDI3ICsxODgzLDE3IEBAIFN0cmluZyBXaWRl
U3RyaW5nVG9VdGY4KGNvbnN0IHdjaGFyX3QqIHN0ciwgaW50IG51bV9jaGFycykgewogICAgICAg
dW5pY29kZV9jb2RlX3BvaW50ID0gc3RhdGljX2Nhc3Q8VUludDMyPihzdHJbaV0pOwogICAgIH0K
IAotICAgIGNoYXIgYnVmZmVyWzMyXTsgIC8vIENvZGVQb2ludFRvVXRmOCByZXF1aXJlcyBhIGJ1
ZmZlciB0aGlzIGJpZy4KLSAgICBzdHJlYW0gPDwgQ29kZVBvaW50VG9VdGY4KHVuaWNvZGVfY29k
ZV9wb2ludCwgYnVmZmVyKTsKKyAgICBzdHJlYW0gPDwgQ29kZVBvaW50VG9VdGY4KHVuaWNvZGVf
Y29kZV9wb2ludCk7CiAgIH0KLSAgcmV0dXJuIFN0clN0cmVhbVRvU3RyaW5nKCZzdHJlYW0pOwor
ICByZXR1cm4gU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnN0cmVhbSk7CiB9CiAKLS8vIENvbnZlcnRz
IGEgd2lkZSBDIHN0cmluZyB0byBhIFN0cmluZyB1c2luZyB0aGUgVVRGLTggZW5jb2RpbmcuCisv
LyBDb252ZXJ0cyBhIHdpZGUgQyBzdHJpbmcgdG8gYW4gc3RkOjpzdHJpbmcgdXNpbmcgdGhlIFVU
Ri04IGVuY29kaW5nLgogLy8gTlVMTCB3aWxsIGJlIGNvbnZlcnRlZCB0byAiKG51bGwpIi4KLVN0
cmluZyBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZyhjb25zdCB3Y2hhcl90ICogd2lkZV9jX3N0cikg
ewotICBpZiAod2lkZV9jX3N0ciA9PSBOVUxMKSByZXR1cm4gU3RyaW5nKCIobnVsbCkiKTsKLQot
ICByZXR1cm4gU3RyaW5nKGludGVybmFsOjpXaWRlU3RyaW5nVG9VdGY4KHdpZGVfY19zdHIsIC0x
KS5jX3N0cigpKTsKLX0KLQotLy8gU2ltaWxhciB0byBTaG93V2lkZUNTdHJpbmcoKSwgZXhjZXB0
IHRoYXQgdGhpcyBmdW5jdGlvbiBlbmNsb3NlcwotLy8gdGhlIGNvbnZlcnRlZCBzdHJpbmcgaW4g
ZG91YmxlIHF1b3Rlcy4KLVN0cmluZyBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChjb25z
dCB3Y2hhcl90KiB3aWRlX2Nfc3RyKSB7Ci0gIGlmICh3aWRlX2Nfc3RyID09IE5VTEwpIHJldHVy
biBTdHJpbmcoIihudWxsKSIpOworc3RkOjpzdHJpbmcgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmco
Y29uc3Qgd2NoYXJfdCAqIHdpZGVfY19zdHIpIHsKKyAgaWYgKHdpZGVfY19zdHIgPT0gTlVMTCkg
IHJldHVybiAiKG51bGwpIjsKIAotICByZXR1cm4gU3RyaW5nOjpGb3JtYXQoIkxcIiVzXCIiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmcod2lkZV9jX3N0
cikuY19zdHIoKSk7CisgIHJldHVybiBpbnRlcm5hbDo6V2lkZVN0cmluZ1RvVXRmOCh3aWRlX2Nf
c3RyLCAtMSk7CiB9CiAKIC8vIENvbXBhcmVzIHR3byB3aWRlIEMgc3RyaW5ncy4gIFJldHVybnMg
dHJ1ZSBpZmYgdGhleSBoYXZlIHRoZSBzYW1lCkBAIC0xNTc4LDE4ICsxOTExLDE4IEBAIGJvb2wg
U3RyaW5nOjpXaWRlQ1N0cmluZ0VxdWFscyhjb25zdCB3Y2hhcl90ICogbGhzLCBjb25zdCB3Y2hh
cl90ICogcmhzKSB7CiB9CiAKIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgKl9TVFJFUSBvbiB3aWRl
IHN0cmluZ3MuCi1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogZXhw
ZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB3Y2hhcl90KiBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB3Y2hhcl90KiBhY3R1YWwpIHsKLSAgaWYgKFN0cmluZzo6V2lkZUNTdHJpbmdFcXVhbHMo
ZXhwZWN0ZWQsIGFjdHVhbCkpIHsKK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJFUShjb25z
dCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB3Y2hhcl90KiBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgd2NoYXJfdCogcmhzKSB7CisgIGlmIChTdHJpbmc6OldpZGVDU3RyaW5nRXF1YWxzKGxocywg
cmhzKSkgewogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAgIH0KIAotICByZXR1cm4g
RXFGYWlsdXJlKGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgYWN0dWFs
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdR
dW90ZWQoZXhwZWN0ZWQpLAotICAgICAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd1dpZGVDU3Ry
aW5nUXVvdGVkKGFjdHVhbCksCisgIHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgUHJp
bnRUb1N0cmluZyhsaHMpLAorICAgICAgICAgICAgICAgICAgIFByaW50VG9TdHJpbmcocmhzKSwK
ICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CiB9CiAKQEAgLTE2MDIsMTIgKzE5MzUsMTAgQEAg
QXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUk5FKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24s
CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQogCi0gIE1lc3NhZ2UgbXNnOwot
ICBtc2cgPDwgIkV4cGVjdGVkOiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgiCi0gICAg
ICA8PCBzMl9leHByZXNzaW9uIDw8ICIpLCBhY3R1YWw6ICIKLSAgICAgIDw8IFN0cmluZzo6U2hv
d1dpZGVDU3RyaW5nUXVvdGVkKHMxKQotICAgICAgPDwgIiB2cyAiIDw8IFN0cmluZzo6U2hvd1dp
ZGVDU3RyaW5nUXVvdGVkKHMyKTsKLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAg
cmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4cHJlc3Np
b24gPDwgIikgIT0gKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzMl9leHByZXNz
aW9uIDw8ICIpLCBhY3R1YWw6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBQcmlu
dFRvU3RyaW5nKHMxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgdnMgIiA8PCBQ
cmludFRvU3RyaW5nKHMyKTsKIH0KIAogLy8gQ29tcGFyZXMgdHdvIEMgc3RyaW5ncywgaWdub3Jp
bmcgY2FzZS4gIFJldHVybnMgdHJ1ZSBpZmYgdGhleSBoYXZlCkBAIC0xNjM4LDE3ICsxOTY5LDE3
IEBAIGJvb2wgU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGNvbnN0IGNoYXIg
KiBsaHMsIGNvbnN0IGNoYXIgKiByaHMpIHsKICAgLy8gY3VycmVudCBsb2NhbGUuCiBib29sIFN0
cmluZzo6Q2FzZUluc2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMoY29uc3Qgd2NoYXJfdCogbGhz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdj
aGFyX3QqIHJocykgewotICBpZiAoIGxocyA9PSBOVUxMICkgcmV0dXJuIHJocyA9PSBOVUxMOwor
ICBpZiAobGhzID09IE5VTEwpIHJldHVybiByaHMgPT0gTlVMTDsKIAotICBpZiAoIHJocyA9PSBO
VUxMICkgcmV0dXJuIGZhbHNlOworICBpZiAocmhzID09IE5VTEwpIHJldHVybiBmYWxzZTsKIAog
I2lmIEdURVNUX09TX1dJTkRPV1MKICAgcmV0dXJuIF93Y3NpY21wKGxocywgcmhzKSA9PSAwOwot
I2VsaWYgR1RFU1RfT1NfTElOVVgKKyNlbGlmIEdURVNUX09TX0xJTlVYICYmICFHVEVTVF9PU19M
SU5VWF9BTkRST0lECiAgIHJldHVybiB3Y3NjYXNlY21wKGxocywgcmhzKSA9PSAwOwogI2Vsc2UK
LSAgLy8gTWFjIE9TIFggYW5kIEN5Z3dpbiBkb24ndCBkZWZpbmUgd2NzY2FzZWNtcC4gIE90aGVy
IHVua25vd24gT1NlcwotICAvLyBtYXkgbm90IGRlZmluZSBpdCBlaXRoZXIuCisgIC8vIEFuZHJv
aWQsIE1hYyBPUyBYIGFuZCBDeWd3aW4gZG9uJ3QgZGVmaW5lIHdjc2Nhc2VjbXAuCisgIC8vIE90
aGVyIHVua25vd24gT1NlcyBtYXkgbm90IGRlZmluZSBpdCBlaXRoZXIuCiAgIHdpbnRfdCBsZWZ0
LCByaWdodDsKICAgZG8gewogICAgIGxlZnQgPSB0b3dsb3dlcigqbGhzKyspOwpAQCAtMTY1OCwx
MzMgKzE5ODksNjkgQEAgYm9vbCBTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZVdpZGVDU3RyaW5nRXF1
YWxzKGNvbnN0IHdjaGFyX3QqIGxocywKICNlbmRpZiAgLy8gT1Mgc2VsZWN0b3IKIH0KIAotLy8g
Q29tcGFyZXMgdGhpcyB3aXRoIGFub3RoZXIgU3RyaW5nLgotLy8gUmV0dXJucyA8IDAgaWYgdGhp
cyBpcyBsZXNzIHRoYW4gcmhzLCAwIGlmIHRoaXMgaXMgZXF1YWwgdG8gcmhzLCBvciA+IDAKLS8v
IGlmIHRoaXMgaXMgZ3JlYXRlciB0aGFuIHJocy4KLWludCBTdHJpbmc6OkNvbXBhcmUoY29uc3Qg
U3RyaW5nICYgcmhzKSBjb25zdCB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IGxoc19jX3N0ciA9IGNf
c3RyKCk7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IHJoc19jX3N0ciA9IHJocy5jX3N0cigpOwotCi0g
IGlmIChsaHNfY19zdHIgPT0gTlVMTCkgewotICAgIHJldHVybiByaHNfY19zdHIgPT0gTlVMTCA/
IDAgOiAtMTsgIC8vIE5VTEwgPCBhbnl0aGluZyBleGNlcHQgTlVMTAotICB9IGVsc2UgaWYgKHJo
c19jX3N0ciA9PSBOVUxMKSB7Ci0gICAgcmV0dXJuIDE7Ci0gIH0KLQotICBjb25zdCBzaXplX3Qg
c2hvcnRlcl9zdHJfbGVuID0KLSAgICAgIGxlbmd0aCgpIDw9IHJocy5sZW5ndGgoKSA/IGxlbmd0
aCgpIDogcmhzLmxlbmd0aCgpOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBzaG9ydGVyX3N0
cl9sZW47IGkrKykgewotICAgIGlmIChsaHNfY19zdHJbaV0gPCByaHNfY19zdHJbaV0pIHsKLSAg
ICAgIHJldHVybiAtMTsKLSAgICB9IGVsc2UgaWYgKGxoc19jX3N0cltpXSA+IHJoc19jX3N0cltp
XSkgewotICAgICAgcmV0dXJuIDE7Ci0gICAgfQotICB9Ci0gIHJldHVybiAobGVuZ3RoKCkgPCBy
aHMubGVuZ3RoKCkpID8gLTEgOgotICAgICAgKGxlbmd0aCgpID4gcmhzLmxlbmd0aCgpKSA/IDEg
OiAwOworLy8gUmV0dXJucyB0cnVlIGlmZiBzdHIgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXgs
IGlnbm9yaW5nIGNhc2UuCisvLyBBbnkgc3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGgg
YW4gZW1wdHkgc3VmZml4LgorYm9vbCBTdHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKAor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIsIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdWZmaXgpIHsK
KyAgY29uc3Qgc2l6ZV90IHN0cl9sZW4gPSBzdHIubGVuZ3RoKCk7CisgIGNvbnN0IHNpemVfdCBz
dWZmaXhfbGVuID0gc3VmZml4Lmxlbmd0aCgpOworICByZXR1cm4gKHN0cl9sZW4gPj0gc3VmZml4
X2xlbikgJiYKKyAgICAgICAgIENhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMoc3RyLmNfc3Ry
KCkgKyBzdHJfbGVuIC0gc3VmZml4X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3VmZml4LmNfc3RyKCkpOwogfQogCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMg
U3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LiAgKkFueSoKLS8vIFN0cmluZyBpcyBj
b25zaWRlcmVkIHRvIGVuZCB3aXRoIGEgTlVMTCBvciBlbXB0eSBzdWZmaXguCi1ib29sIFN0cmlu
Zzo6RW5kc1dpdGgoY29uc3QgY2hhciogc3VmZml4KSBjb25zdCB7Ci0gIGlmIChzdWZmaXggPT0g
TlVMTCB8fCBDU3RyaW5nRXF1YWxzKHN1ZmZpeCwgIiIpKSByZXR1cm4gdHJ1ZTsKLQotICBpZiAo
Y19zdHIoKSA9PSBOVUxMKSByZXR1cm4gZmFsc2U7Ci0KLSAgY29uc3Qgc2l6ZV90IHRoaXNfbGVu
ID0gc3RybGVuKGNfc3RyKCkpOwotICBjb25zdCBzaXplX3Qgc3VmZml4X2xlbiA9IHN0cmxlbihz
dWZmaXgpOwotICByZXR1cm4gKHRoaXNfbGVuID49IHN1ZmZpeF9sZW4pICYmCi0gICAgICAgICBD
U3RyaW5nRXF1YWxzKGNfc3RyKCkgKyB0aGlzX2xlbiAtIHN1ZmZpeF9sZW4sIHN1ZmZpeCk7Cisv
LyBGb3JtYXRzIGFuIGludCB2YWx1ZSBhcyAiJTAyZCIuCitzdGQ6OnN0cmluZyBTdHJpbmc6OkZv
cm1hdEludFdpZHRoMihpbnQgdmFsdWUpIHsKKyAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIHNz
IDw8IHN0ZDo6c2V0ZmlsbCgnMCcpIDw8IHN0ZDo6c2V0dygyKSA8PCB2YWx1ZTsKKyAgcmV0dXJu
IHNzLnN0cigpOwogfQogCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgU3RyaW5nIGVuZHMgd2l0
aCB0aGUgZ2l2ZW4gc3VmZml4LCBpZ25vcmluZyBjYXNlLgotLy8gQW55IFN0cmluZyBpcyBjb25z
aWRlcmVkIHRvIGVuZCB3aXRoIGEgTlVMTCBvciBlbXB0eSBzdWZmaXguCi1ib29sIFN0cmluZzo6
RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoY29uc3QgY2hhciogc3VmZml4KSBjb25zdCB7Ci0gIGlm
IChzdWZmaXggPT0gTlVMTCB8fCBDU3RyaW5nRXF1YWxzKHN1ZmZpeCwgIiIpKSByZXR1cm4gdHJ1
ZTsKLQotICBpZiAoY19zdHIoKSA9PSBOVUxMKSByZXR1cm4gZmFsc2U7Ci0KLSAgY29uc3Qgc2l6
ZV90IHRoaXNfbGVuID0gc3RybGVuKGNfc3RyKCkpOwotICBjb25zdCBzaXplX3Qgc3VmZml4X2xl
biA9IHN0cmxlbihzdWZmaXgpOwotICByZXR1cm4gKHRoaXNfbGVuID49IHN1ZmZpeF9sZW4pICYm
Ci0gICAgICAgICBDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGNfc3RyKCkgKyB0aGlzX2xl
biAtIHN1ZmZpeF9sZW4sIHN1ZmZpeCk7CisvLyBGb3JtYXRzIGFuIGludCB2YWx1ZSBhcyAiJVgi
Lgorc3RkOjpzdHJpbmcgU3RyaW5nOjpGb3JtYXRIZXhJbnQoaW50IHZhbHVlKSB7CisgIHN0ZDo6
c3RyaW5nc3RyZWFtIHNzOworICBzcyA8PCBzdGQ6OmhleCA8PCBzdGQ6OnVwcGVyY2FzZSA8PCB2
YWx1ZTsKKyAgcmV0dXJuIHNzLnN0cigpOwogfQogCi0vLyBGb3JtYXRzIGEgbGlzdCBvZiBhcmd1
bWVudHMgdG8gYSBTdHJpbmcsIHVzaW5nIHRoZSBzYW1lIGZvcm1hdAotLy8gc3BlYyBzdHJpbmcg
YXMgZm9yIHByaW50Zi4KLS8vCi0vLyBXZSBkbyBub3QgdXNlIHRoZSBTdHJpbmdQcmludGYgY2xh
c3MgYXMgaXQgaXMgbm90IHVuaXZlcnNhbGx5Ci0vLyBhdmFpbGFibGUuCi0vLwotLy8gVGhlIHJl
c3VsdCBpcyBsaW1pdGVkIHRvIDQwOTYgY2hhcmFjdGVycyAoaW5jbHVkaW5nIHRoZSB0YWlsaW5n
IDApLgotLy8gSWYgNDA5NiBjaGFyYWN0ZXJzIGFyZSBub3QgZW5vdWdoIHRvIGZvcm1hdCB0aGUg
aW5wdXQsIG9yIGlmCi0vLyB0aGVyZSdzIGFuIGVycm9yLCAiPGZvcm1hdHRpbmcgZXJyb3Igb3Ig
YnVmZmVyIGV4Y2VlZGVkPiIgaXMKLS8vIHJldHVybmVkLgotU3RyaW5nIFN0cmluZzo6Rm9ybWF0
KGNvbnN0IGNoYXIgKiBmb3JtYXQsIC4uLikgewotICB2YV9saXN0IGFyZ3M7Ci0gIHZhX3N0YXJ0
KGFyZ3MsIGZvcm1hdCk7Ci0KLSAgY2hhciBidWZmZXJbNDA5Nl07Ci0gIGNvbnN0IGludCBrQnVm
ZmVyU2l6ZSA9IHNpemVvZihidWZmZXIpL3NpemVvZihidWZmZXJbMF0pOwotCi0gIC8vIE1TVkMg
OCBkZXByZWNhdGVzIHZzbnByaW50ZigpLCBzbyB3ZSB3YW50IHRvIHN1cHByZXNzIHdhcm5pbmcK
LSAgLy8gNDk5NiAoZGVwcmVjYXRlZCBmdW5jdGlvbikgdGhlcmUuCi0jaWZkZWYgX01TQ19WRVIg
IC8vIFdlIGFyZSB1c2luZyBNU1ZDLgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpICAgICAgICAgIC8v
IFNhdmVzIHRoZSBjdXJyZW50IHdhcm5pbmcgc3RhdGUuCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTo0OTk2KSAgLy8gVGVtcG9yYXJpbHkgZGlzYWJsZXMgd2FybmluZyA0OTk2LgotICBjb25zdCBp
bnQgc2l6ZSA9IHZzbnByaW50ZihidWZmZXIsIGtCdWZmZXJTaXplLCBmb3JtYXQsIGFyZ3MpOwot
I3ByYWdtYSB3YXJuaW5nKHBvcCkgICAgICAgICAgIC8vIFJlc3RvcmVzIHRoZSB3YXJuaW5nIHN0
YXRlLgotI2Vsc2UgIC8vIFdlIGFyZSBub3QgdXNpbmcgTVNWQy4KLSAgY29uc3QgaW50IHNpemUg
PSB2c25wcmludGYoYnVmZmVyLCBrQnVmZmVyU2l6ZSwgZm9ybWF0LCBhcmdzKTsKLSNlbmRpZiAg
Ly8gX01TQ19WRVIKLSAgdmFfZW5kKGFyZ3MpOwotCi0gIC8vIHZzbnByaW50ZigpJ3MgYmVoYXZp
b3IgaXMgbm90IHBvcnRhYmxlLiAgV2hlbiB0aGUgYnVmZmVyIGlzIG5vdAotICAvLyBiaWcgZW5v
dWdoLCBpdCByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUgaW4gTVNWQywgYW5kIHJldHVybnMgdGhl
Ci0gIC8vIG5lZWRlZCBidWZmZXIgc2l6ZSBvbiBMaW51eC4gIFdoZW4gdGhlcmUgaXMgYW4gb3V0
cHV0IGVycm9yLCBpdAotICAvLyBhbHdheXMgcmV0dXJucyBhIG5lZ2F0aXZlIHZhbHVlLiAgRm9y
IHNpbXBsaWNpdHksIHdlIGx1bXAgdGhlIHR3bwotICAvLyBlcnJvciBjYXNlcyB0b2dldGhlci4K
LSAgaWYgKHNpemUgPCAwIHx8IHNpemUgPj0ga0J1ZmZlclNpemUpIHsKLSAgICByZXR1cm4gU3Ry
aW5nKCI8Zm9ybWF0dGluZyBlcnJvciBvciBidWZmZXIgZXhjZWVkZWQ+Iik7Ci0gIH0gZWxzZSB7
Ci0gICAgcmV0dXJuIFN0cmluZyhidWZmZXIsIHNpemUpOwotICB9CisvLyBGb3JtYXRzIGEgYnl0
ZSBhcyAiJTAyWCIuCitzdGQ6OnN0cmluZyBTdHJpbmc6OkZvcm1hdEJ5dGUodW5zaWduZWQgY2hh
ciB2YWx1ZSkgeworICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgc3MgPDwgc3RkOjpzZXRmaWxs
KCcwJykgPDwgc3RkOjpzZXR3KDIpIDw8IHN0ZDo6aGV4IDw8IHN0ZDo6dXBwZXJjYXNlCisgICAg
IDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odmFsdWUpOworICByZXR1cm4gc3Muc3RyKCk7
CiB9CiAKLS8vIENvbnZlcnRzIHRoZSBidWZmZXIgaW4gYSBTdHJTdHJlYW0gdG8gYSBTdHJpbmcs
IGNvbnZlcnRpbmcgTlVMCisvLyBDb252ZXJ0cyB0aGUgYnVmZmVyIGluIGEgc3RyaW5nc3RyZWFt
IHRvIGFuIHN0ZDo6c3RyaW5nLCBjb252ZXJ0aW5nIE5VTAogLy8gYnl0ZXMgdG8gIlxcMCIgYWxv
bmcgdGhlIHdheS4KLVN0cmluZyBTdHJTdHJlYW1Ub1N0cmluZyhTdHJTdHJlYW0qIHNzKSB7Citz
dGQ6OnN0cmluZyBTdHJpbmdTdHJlYW1Ub1N0cmluZyg6OnN0ZDo6c3RyaW5nc3RyZWFtKiBzcykg
ewogICBjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIgPSBzcy0+c3RyKCk7CiAgIGNvbnN0IGNoYXIq
IGNvbnN0IHN0YXJ0ID0gc3RyLmNfc3RyKCk7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGVuZCA9IHN0
YXJ0ICsgc3RyLmxlbmd0aCgpOwogCi0gIC8vIFdlIG5lZWQgdG8gdXNlIGEgaGVscGVyIFN0clN0
cmVhbSB0byBkbyB0aGlzIHRyYW5zZm9ybWF0aW9uCi0gIC8vIGJlY2F1c2UgU3RyaW5nIGRvZXNu
J3Qgc3VwcG9ydCBwdXNoX2JhY2soKS4KLSAgU3RyU3RyZWFtIGhlbHBlcjsKKyAgc3RkOjpzdHJp
bmcgcmVzdWx0OworICByZXN1bHQucmVzZXJ2ZSgyICogKGVuZCAtIHN0YXJ0KSk7CiAgIGZvciAo
Y29uc3QgY2hhciogY2ggPSBzdGFydDsgY2ggIT0gZW5kOyArK2NoKSB7CiAgICAgaWYgKCpjaCA9
PSAnXDAnKSB7Ci0gICAgICBoZWxwZXIgPDwgIlxcMCI7ICAvLyBSZXBsYWNlcyBOVUwgd2l0aCAi
XFwwIjsKKyAgICAgIHJlc3VsdCArPSAiXFwwIjsgIC8vIFJlcGxhY2VzIE5VTCB3aXRoICJcXDAi
OwogICAgIH0gZWxzZSB7Ci0gICAgICBoZWxwZXIucHV0KCpjaCk7CisgICAgICByZXN1bHQgKz0g
KmNoOwogICAgIH0KICAgfQogCi0gIHJldHVybiBTdHJpbmcoaGVscGVyLnN0cigpLmNfc3RyKCkp
OworICByZXR1cm4gcmVzdWx0OwogfQogCiAvLyBBcHBlbmRzIHRoZSB1c2VyLXN1cHBsaWVkIG1l
c3NhZ2UgdG8gdGhlIEdvb2dsZS1UZXN0LWdlbmVyYXRlZCBtZXNzYWdlLgotU3RyaW5nIEFwcGVu
ZFVzZXJNZXNzYWdlKGNvbnN0IFN0cmluZyYgZ3Rlc3RfbXNnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IE1lc3NhZ2UmIHVzZXJfbXNnKSB7CitzdGQ6OnN0cmluZyBBcHBlbmRVc2Vy
TWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgZ3Rlc3RfbXNnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgTWVzc2FnZSYgdXNlcl9tc2cpIHsKICAgLy8gQXBwZW5kcyB0aGUg
dXNlciBtZXNzYWdlIGlmIGl0J3Mgbm9uLWVtcHR5LgotICBjb25zdCBTdHJpbmcgdXNlcl9tc2df
c3RyaW5nID0gdXNlcl9tc2cuR2V0U3RyaW5nKCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHVzZXJf
bXNnX3N0cmluZyA9IHVzZXJfbXNnLkdldFN0cmluZygpOwogICBpZiAodXNlcl9tc2dfc3RyaW5n
LmVtcHR5KCkpIHsKICAgICByZXR1cm4gZ3Rlc3RfbXNnOwogICB9CiAKLSAgTWVzc2FnZSBtc2c7
Ci0gIG1zZyA8PCBndGVzdF9tc2cgPDwgIlxuIiA8PCB1c2VyX21zZ19zdHJpbmc7Ci0KLSAgcmV0
dXJuIG1zZy5HZXRTdHJpbmcoKTsKKyAgcmV0dXJuIGd0ZXN0X21zZyArICJcbiIgKyB1c2VyX21z
Z19zdHJpbmc7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbApAQCAtMTgzMiw4ICsyMDk5
LDkgQEAgdm9pZCBUZXN0UmVzdWx0OjpBZGRUZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJl
c3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgewogLy8gQWRkcyBhIHRlc3QgcHJvcGVydHkgdG8gdGhl
IGxpc3QuIElmIGEgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBrZXkgYXMgdGhlCiAvLyBzdXBwbGll
ZCBwcm9wZXJ0eSBpcyBhbHJlYWR5IHJlcHJlc2VudGVkLCB0aGUgdmFsdWUgb2YgdGhpcyB0ZXN0
X3Byb3BlcnR5CiAvLyByZXBsYWNlcyB0aGUgb2xkIHZhbHVlIGZvciB0aGF0IGtleS4KLXZvaWQg
VGVzdFJlc3VsdDo6UmVjb3JkUHJvcGVydHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3Bl
cnR5KSB7Ci0gIGlmICghVmFsaWRhdGVUZXN0UHJvcGVydHkodGVzdF9wcm9wZXJ0eSkpIHsKK3Zv
aWQgVGVzdFJlc3VsdDo6UmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9lbGVt
ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UHJvcGVydHkm
IHRlc3RfcHJvcGVydHkpIHsKKyAgaWYgKCFWYWxpZGF0ZVRlc3RQcm9wZXJ0eSh4bWxfZWxlbWVu
dCwgdGVzdF9wcm9wZXJ0eSkpIHsKICAgICByZXR1cm47CiAgIH0KICAgaW50ZXJuYWw6Ok11dGV4
TG9jayBsb2NrKCZ0ZXN0X3Byb3Blcml0ZXNfbXV0ZXhfKTsKQEAgLTE4NDcsMjEgKzIxMTUsOTAg
QEAgdm9pZCBUZXN0UmVzdWx0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRl
c3RfcHJvcGVydHkpIHsKICAgcHJvcGVydHlfd2l0aF9tYXRjaGluZ19rZXktPlNldFZhbHVlKHRl
c3RfcHJvcGVydHkudmFsdWUoKSk7CiB9CiAKLS8vIEFkZHMgYSBmYWlsdXJlIGlmIHRoZSBrZXkg
aXMgYSByZXNlcnZlZCBhdHRyaWJ1dGUgb2YgR29vZ2xlIFRlc3QKLS8vIHRlc3RjYXNlIHRhZ3Mu
ICBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3BlcnR5IGlzIHZhbGlkLgotYm9vbCBUZXN0UmVzdWx0
OjpWYWxpZGF0ZVRlc3RQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkp
IHsKLSAgaW50ZXJuYWw6OlN0cmluZyBrZXkodGVzdF9wcm9wZXJ0eS5rZXkoKSk7Ci0gIGlmIChr
ZXkgPT0gIm5hbWUiIHx8IGtleSA9PSAic3RhdHVzIiB8fCBrZXkgPT0gInRpbWUiIHx8IGtleSA9
PSAiY2xhc3NuYW1lIikgewotICAgIEFERF9GQUlMVVJFKCkKLSAgICAgICAgPDwgIlJlc2VydmVk
IGtleSB1c2VkIGluIFJlY29yZFByb3BlcnR5KCk6ICIKLSAgICAgICAgPDwga2V5Ci0gICAgICAg
IDw8ICIgKCduYW1lJywgJ3N0YXR1cycsICd0aW1lJywgYW5kICdjbGFzc25hbWUnIGFyZSByZXNl
cnZlZCBieSAiCi0gICAgICAgIDw8IEdURVNUX05BTUVfIDw8ICIpIjsKKy8vIFRoZSBsaXN0IG9m
IHJlc2VydmVkIGF0dHJpYnV0ZXMgdXNlZCBpbiB0aGUgPHRlc3RzdWl0ZXM+IGVsZW1lbnQgb2Yg
WE1MCisvLyBvdXRwdXQuCitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qga1Jlc2VydmVkVGVzdFN1
aXRlc0F0dHJpYnV0ZXNbXSA9IHsKKyAgImRpc2FibGVkIiwKKyAgImVycm9ycyIsCisgICJmYWls
dXJlcyIsCisgICJuYW1lIiwKKyAgInJhbmRvbV9zZWVkIiwKKyAgInRlc3RzIiwKKyAgInRpbWUi
LAorICAidGltZXN0YW1wIgorfTsKKworLy8gVGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgYXR0cmlidXRl
cyB1c2VkIGluIHRoZSA8dGVzdHN1aXRlPiBlbGVtZW50IG9mIFhNTAorLy8gb3V0cHV0Lgorc3Rh
dGljIGNvbnN0IGNoYXIqIGNvbnN0IGtSZXNlcnZlZFRlc3RTdWl0ZUF0dHJpYnV0ZXNbXSA9IHsK
KyAgImRpc2FibGVkIiwKKyAgImVycm9ycyIsCisgICJmYWlsdXJlcyIsCisgICJuYW1lIiwKKyAg
InRlc3RzIiwKKyAgInRpbWUiCit9OworCisvLyBUaGUgbGlzdCBvZiByZXNlcnZlZCBhdHRyaWJ1
dGVzIHVzZWQgaW4gdGhlIDx0ZXN0Y2FzZT4gZWxlbWVudCBvZiBYTUwgb3V0cHV0Lgorc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IGtSZXNlcnZlZFRlc3RDYXNlQXR0cmlidXRlc1tdID0geworICAg
ICJjbGFzc25hbWUiLCAgIm5hbWUiLCAgICAgICAgInN0YXR1cyIsICJ0aW1lIiwKKyAgICAidHlw
ZV9wYXJhbSIsICJ2YWx1ZV9wYXJhbSIsICJmaWxlIiwgICAibGluZSJ9OworCit0ZW1wbGF0ZSA8
aW50IGtTaXplPgorc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEFycmF5QXNWZWN0b3IoY29uc3Qg
Y2hhciogY29uc3QgKCZhcnJheSlba1NpemVdKSB7CisgIHJldHVybiBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4oYXJyYXksIGFycmF5ICsga1NpemUpOworfQorCitzdGF0aWMgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IEdldFJlc2VydmVkQXR0cmlidXRlc0ZvckVsZW1lbnQoCisgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50KSB7CisgIGlmICh4bWxfZWxlbWVudCA9PSAidGVzdHN1
aXRlcyIpIHsKKyAgICByZXR1cm4gQXJyYXlBc1ZlY3RvcihrUmVzZXJ2ZWRUZXN0U3VpdGVzQXR0
cmlidXRlcyk7CisgIH0gZWxzZSBpZiAoeG1sX2VsZW1lbnQgPT0gInRlc3RzdWl0ZSIpIHsKKyAg
ICByZXR1cm4gQXJyYXlBc1ZlY3RvcihrUmVzZXJ2ZWRUZXN0U3VpdGVBdHRyaWJ1dGVzKTsKKyAg
fSBlbHNlIGlmICh4bWxfZWxlbWVudCA9PSAidGVzdGNhc2UiKSB7CisgICAgcmV0dXJuIEFycmF5
QXNWZWN0b3Ioa1Jlc2VydmVkVGVzdENhc2VBdHRyaWJ1dGVzKTsKKyAgfSBlbHNlIHsKKyAgICBH
VEVTVF9DSEVDS18oZmFsc2UpIDw8ICJVbnJlY29nbml6ZWQgeG1sX2VsZW1lbnQgcHJvdmlkZWQ6
ICIgPDwgeG1sX2VsZW1lbnQ7CisgIH0KKyAgLy8gVGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGJ1
dCBzb21lIGNvbXBpbGVycyBtYXkgbm90IHJlYWxpemVzIHRoYXQuCisgIHJldHVybiBzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4oKTsKK30KKworc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFdvcmRM
aXN0KGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgd29yZHMpIHsKKyAgTWVzc2FnZSB3
b3JkX2xpc3Q7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHMuc2l6ZSgpOyArK2kpIHsK
KyAgICBpZiAoaSA+IDAgJiYgd29yZHMuc2l6ZSgpID4gMikgeworICAgICAgd29yZF9saXN0IDw8
ICIsICI7CisgICAgfQorICAgIGlmIChpID09IHdvcmRzLnNpemUoKSAtIDEpIHsKKyAgICAgIHdv
cmRfbGlzdCA8PCAiYW5kICI7CisgICAgfQorICAgIHdvcmRfbGlzdCA8PCAiJyIgPDwgd29yZHNb
aV0gPDwgIiciOworICB9CisgIHJldHVybiB3b3JkX2xpc3QuR2V0U3RyaW5nKCk7Cit9CisKK3N0
YXRpYyBib29sIFZhbGlkYXRlVGVzdFByb3BlcnR5TmFtZSgKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgcHJvcGVydHlfbmFtZSwKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHJl
c2VydmVkX25hbWVzKSB7CisgIGlmIChzdGQ6OmZpbmQocmVzZXJ2ZWRfbmFtZXMuYmVnaW4oKSwg
cmVzZXJ2ZWRfbmFtZXMuZW5kKCksIHByb3BlcnR5X25hbWUpICE9CisgICAgICAgICAgcmVzZXJ2
ZWRfbmFtZXMuZW5kKCkpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJSZXNlcnZlZCBrZXkgdXNl
ZCBpbiBSZWNvcmRQcm9wZXJ0eSgpOiAiIDw8IHByb3BlcnR5X25hbWUKKyAgICAgICAgICAgICAg
ICAgIDw8ICIgKCIgPDwgRm9ybWF0V29yZExpc3QocmVzZXJ2ZWRfbmFtZXMpCisgICAgICAgICAg
ICAgICAgICA8PCAiIGFyZSByZXNlcnZlZCBieSAiIDw8IEdURVNUX05BTUVfIDw8ICIpIjsKICAg
ICByZXR1cm4gZmFsc2U7CiAgIH0KICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIEFkZHMgYSBmYWls
dXJlIGlmIHRoZSBrZXkgaXMgYSByZXNlcnZlZCBhdHRyaWJ1dGUgb2YgdGhlIGVsZW1lbnQgbmFt
ZWQKKy8vIHhtbF9lbGVtZW50LiAgUmV0dXJucyB0cnVlIGlmIHRoZSBwcm9wZXJ0eSBpcyB2YWxp
ZC4KK2Jvb2wgVGVzdFJlc3VsdDo6VmFsaWRhdGVUZXN0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJp
bmcmIHhtbF9lbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpIHsKKyAgcmV0dXJuIFZhbGlkYXRlVGVz
dFByb3BlcnR5TmFtZSh0ZXN0X3Byb3BlcnR5LmtleSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdldFJlc2VydmVkQXR0cmlidXRlc0ZvckVsZW1lbnQoeG1sX2VsZW1lbnQp
KTsKK30KKwogLy8gQ2xlYXJzIHRoZSBvYmplY3QuCiB2b2lkIFRlc3RSZXN1bHQ6OkNsZWFyKCkg
ewogICB0ZXN0X3BhcnRfcmVzdWx0c18uY2xlYXIoKTsKQEAgLTE5MTQsMTQgKzIyNTEsMTUgQEAg
aW50IFRlc3RSZXN1bHQ6OnRlc3RfcHJvcGVydHlfY291bnQoKSBjb25zdCB7CiAKIC8vIENyZWF0
ZXMgYSBUZXN0IG9iamVjdC4KIAotLy8gVGhlIGMndG9yIHNhdmVzIHRoZSB2YWx1ZXMgb2YgYWxs
IEdvb2dsZSBUZXN0IGZsYWdzLgorLy8gVGhlIGMndG9yIHNhdmVzIHRoZSBzdGF0ZXMgb2YgYWxs
IGZsYWdzLgogVGVzdDo6VGVzdCgpCi0gICAgOiBndGVzdF9mbGFnX3NhdmVyXyhuZXcgaW50ZXJu
YWw6OkdUZXN0RmxhZ1NhdmVyKSB7CisgICAgOiBndGVzdF9mbGFnX3NhdmVyXyhuZXcgR1RFU1Rf
RkxBR19TQVZFUl8pIHsKIH0KIAotLy8gVGhlIGQndG9yIHJlc3RvcmVzIHRoZSB2YWx1ZXMgb2Yg
YWxsIEdvb2dsZSBUZXN0IGZsYWdzLgorLy8gVGhlIGQndG9yIHJlc3RvcmVzIHRoZSBzdGF0ZXMg
b2YgYWxsIGZsYWdzLiAgVGhlIGFjdHVhbCB3b3JrIGlzCisvLyBkb25lIGJ5IHRoZSBkJ3RvciBv
ZiB0aGUgZ3Rlc3RfZmxhZ19zYXZlcl8gZmllbGQsIGFuZCB0aHVzIG5vdAorLy8gdmlzaWJsZSBo
ZXJlLgogVGVzdDo6flRlc3QoKSB7Ci0gIGRlbGV0ZSBndGVzdF9mbGFnX3NhdmVyXzsKIH0KIAog
Ly8gU2V0cyB1cCB0aGUgdGVzdCBmaXh0dXJlLgpAQCAtMTkzNywxMiArMjI3NSwxMiBAQCB2b2lk
IFRlc3Q6OlRlYXJEb3duKCkgewogfQogCiAvLyBBbGxvd3MgdXNlciBzdXBwbGllZCBrZXkgdmFs
dWUgcGFpcnMgdG8gYmUgcmVjb3JkZWQgZm9yIGxhdGVyIG91dHB1dC4KLXZvaWQgVGVzdDo6UmVj
b3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBjb25zdCBjaGFyKiB2YWx1ZSkgewotICBVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+UmVjb3JkUHJvcGVydHlGb3JDdXJyZW50VGVzdChrZXksIHZh
bHVlKTsKK3ZvaWQgVGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwg
Y29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSB7CisgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5S
ZWNvcmRQcm9wZXJ0eShrZXksIHZhbHVlKTsKIH0KIAogLy8gQWxsb3dzIHVzZXIgc3VwcGxpZWQg
a2V5IHZhbHVlIHBhaXJzIHRvIGJlIHJlY29yZGVkIGZvciBsYXRlciBvdXRwdXQuCi12b2lkIFRl
c3Q6OlJlY29yZFByb3BlcnR5KGNvbnN0IGNoYXIqIGtleSwgaW50IHZhbHVlKSB7Cit2b2lkIFRl
c3Q6OlJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGludCB2YWx1ZSkgewog
ICBNZXNzYWdlIHZhbHVlX21lc3NhZ2U7CiAgIHZhbHVlX21lc3NhZ2UgPDwgdmFsdWU7CiAgIFJl
Y29yZFByb3BlcnR5KGtleSwgdmFsdWVfbWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0cigpKTsKQEAg
LTE5NTEsNyArMjI4OSw3IEBAIHZvaWQgVGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3QgY2hhciog
a2V5LCBpbnQgdmFsdWUpIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIHZvaWQgUmVwb3J0RmFp
bHVyZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbWVzc2FnZSkgewogICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGEgZnJpZW5kIG9mIFVuaXRUZXN0
IGFuZCBhcyBzdWNoIGhhcyBhY2Nlc3MgdG8KICAgLy8gQWRkVGVzdFBhcnRSZXN1bHQuCiAgIFVu
aXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5BZGRUZXN0UGFydFJlc3VsdCgKQEAgLTE5NTksMjcgKzIy
OTcsMTEgQEAgdm9pZCBSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oVGVzdFBhcnRSZXN1
bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCiAgICAgICBOVUxMLCAgLy8gTm8gaW5mbyBhYm91dCB0aGUg
c291cmNlIGZpbGUgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4KICAgICAgIC0xLCAgICAv
LyBXZSBoYXZlIG5vIGluZm8gb24gd2hpY2ggbGluZSBjYXVzZWQgdGhlIGV4Y2VwdGlvbi4KICAg
ICAgIG1lc3NhZ2UsCi0gICAgICBTdHJpbmcoKSk7ICAvLyBObyBzdGFjayB0cmFjZSwgZWl0aGVy
LgorICAgICAgIiIpOyAgIC8vIE5vIHN0YWNrIHRyYWNlLCBlaXRoZXIuCiB9CiAKIH0gIC8vIG5h
bWVzcGFjZSBpbnRlcm5hbAogCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotLy8gV2UgYXJlIG9uIFdp
bmRvd3MuCi0KLS8vIEFkZHMgYW4gImV4Y2VwdGlvbiB0aHJvd24iIGZhdGFsIGZhaWx1cmUgdG8g
dGhlIGN1cnJlbnQgdGVzdC4KLXN0YXRpYyB2b2lkIEFkZEV4Y2VwdGlvblRocm93bkZhaWx1cmUo
RFdPUkQgZXhjZXB0aW9uX2NvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7Ci0gIE1lc3NhZ2UgbWVzc2FnZTsKLSAgbWVzc2Fn
ZSA8PCAiRXhjZXB0aW9uIHRocm93biB3aXRoIGNvZGUgMHgiIDw8IHN0ZDo6c2V0YmFzZSgxNikg
PDwKLSAgICBleGNlcHRpb25fY29kZSA8PCBzdGQ6OnNldGJhc2UoMTApIDw8ICIgaW4gIiA8PCBs
b2NhdGlvbiA8PCAiLiI7Ci0KLSAgaW50ZXJuYWw6OlJlcG9ydEZhaWx1cmVJblVua25vd25Mb2Nh
dGlvbihUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLkdldFN0cmluZygpKTsKLX0KLQotI2VuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KIC8vIEdvb2dsZSBUZXN0IHJlcXVpcmVzIGFsbCB0ZXN0
cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgdG8gdXNlIHRoZSBzYW1lIHRlc3QKIC8vIGZpeHR1cmUg
Y2xhc3MuICBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgY3VycmVudCB0ZXN0IGhhcyB0aGUK
IC8vIHNhbWUgZml4dHVyZSBjbGFzcyBhcyB0aGUgZmlyc3QgdGVzdCBpbiB0aGUgY3VycmVudCB0
ZXN0IGNhc2UuICBJZgpAQCAtMTk5MCwxNSArMjMxMiwxMyBAQCBib29sIFRlc3Q6Okhhc1NhbWVG
aXh0dXJlQ2xhc3MoKSB7CiAgIGNvbnN0IFRlc3RDYXNlKiBjb25zdCB0ZXN0X2Nhc2UgPSBpbXBs
LT5jdXJyZW50X3Rlc3RfY2FzZSgpOwogCiAgIC8vIEluZm8gYWJvdXQgdGhlIGZpcnN0IHRlc3Qg
aW4gdGhlIGN1cnJlbnQgdGVzdCBjYXNlLgotICBjb25zdCBpbnRlcm5hbDo6VGVzdEluZm9JbXBs
KiBjb25zdCBmaXJzdF90ZXN0X2luZm8gPQotICAgICAgdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlz
dCgpWzBdLT5pbXBsKCk7Ci0gIGNvbnN0IGludGVybmFsOjpUeXBlSWQgZmlyc3RfZml4dHVyZV9p
ZCA9IGZpcnN0X3Rlc3RfaW5mby0+Zml4dHVyZV9jbGFzc19pZCgpOworICBjb25zdCBUZXN0SW5m
byogY29uc3QgZmlyc3RfdGVzdF9pbmZvID0gdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpWzBd
OworICBjb25zdCBpbnRlcm5hbDo6VHlwZUlkIGZpcnN0X2ZpeHR1cmVfaWQgPSBmaXJzdF90ZXN0
X2luZm8tPmZpeHR1cmVfY2xhc3NfaWRfOwogICBjb25zdCBjaGFyKiBjb25zdCBmaXJzdF90ZXN0
X25hbWUgPSBmaXJzdF90ZXN0X2luZm8tPm5hbWUoKTsKIAogICAvLyBJbmZvIGFib3V0IHRoZSBj
dXJyZW50IHRlc3QuCi0gIGNvbnN0IGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGNvbnN0IHRoaXNf
dGVzdF9pbmZvID0KLSAgICAgIGltcGwtPmN1cnJlbnRfdGVzdF9pbmZvKCktPmltcGwoKTsKLSAg
Y29uc3QgaW50ZXJuYWw6OlR5cGVJZCB0aGlzX2ZpeHR1cmVfaWQgPSB0aGlzX3Rlc3RfaW5mby0+
Zml4dHVyZV9jbGFzc19pZCgpOworICBjb25zdCBUZXN0SW5mbyogY29uc3QgdGhpc190ZXN0X2lu
Zm8gPSBpbXBsLT5jdXJyZW50X3Rlc3RfaW5mbygpOworICBjb25zdCBpbnRlcm5hbDo6VHlwZUlk
IHRoaXNfZml4dHVyZV9pZCA9IHRoaXNfdGVzdF9pbmZvLT5maXh0dXJlX2NsYXNzX2lkXzsKICAg
Y29uc3QgY2hhciogY29uc3QgdGhpc190ZXN0X25hbWUgPSB0aGlzX3Rlc3RfaW5mby0+bmFtZSgp
OwogCiAgIGlmICh0aGlzX2ZpeHR1cmVfaWQgIT0gZmlyc3RfZml4dHVyZV9pZCkgewpAQCAtMjAw
OCw4ICsyMzI4LDggQEAgYm9vbCBUZXN0OjpIYXNTYW1lRml4dHVyZUNsYXNzKCkgewogICAgIGNv
bnN0IGJvb2wgdGhpc19pc19URVNUID0gdGhpc19maXh0dXJlX2lkID09IGludGVybmFsOjpHZXRU
ZXN0VHlwZUlkKCk7CiAKICAgICBpZiAoZmlyc3RfaXNfVEVTVCB8fCB0aGlzX2lzX1RFU1QpIHsK
LSAgICAgIC8vIFRoZSB1c2VyIG1peGVkIFRFU1QgYW5kIFRFU1RfRiBpbiB0aGlzIHRlc3QgY2Fz
ZSAtIHdlJ2xsIHRlbGwKLSAgICAgIC8vIGhpbS9oZXIgaG93IHRvIGZpeCBpdC4KKyAgICAgIC8v
IEJvdGggVEVTVCBhbmQgVEVTVF9GIGFwcGVhciBpbiBzYW1lIHRlc3QgY2FzZSwgd2hpY2ggaXMg
aW5jb3JyZWN0LgorICAgICAgLy8gVGVsbCB0aGUgdXNlciBob3cgdG8gZml4IHRoaXMuCiAKICAg
ICAgIC8vIEdldHMgdGhlIG5hbWUgb2YgdGhlIFRFU1QgYW5kIHRoZSBuYW1lIG9mIHRoZSBURVNU
X0YuICBOb3RlCiAgICAgICAvLyB0aGF0IGZpcnN0X2lzX1RFU1QgYW5kIHRoaXNfaXNfVEVTVCBj
YW5ub3QgYm90aCBiZSB0cnVlLCBhcwpAQCAtMjAyOSw4ICsyMzQ5LDggQEAgYm9vbCBUZXN0OjpI
YXNTYW1lRml4dHVyZUNsYXNzKCkgewogICAgICAgICAgIDw8ICJ3YW50IHRvIGNoYW5nZSB0aGUg
VEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0byBhbm90aGVyIHRlc3RcbiIKICAgICAgICAgICA8
PCAiY2FzZS4iOwogICAgIH0gZWxzZSB7Ci0gICAgICAvLyBUaGUgdXNlciBkZWZpbmVkIHR3byBm
aXh0dXJlIGNsYXNzZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGluCi0gICAgICAvLyB0d28gbmFtZXNw
YWNlcyAtIHdlJ2xsIHRlbGwgaGltL2hlciBob3cgdG8gZml4IGl0LgorICAgICAgLy8gVHdvIGZp
eHR1cmUgY2xhc3NlcyB3aXRoIHRoZSBzYW1lIG5hbWUgYXBwZWFyIGluIHR3byBkaWZmZXJlbnQK
KyAgICAgIC8vIG5hbWVzcGFjZXMsIHdoaWNoIGlzIG5vdCBhbGxvd2VkLiBUZWxsIHRoZSB1c2Vy
IGhvdyB0byBmaXggdGhpcy4KICAgICAgIEFERF9GQUlMVVJFKCkKICAgICAgICAgICA8PCAiQWxs
IHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1
cmVcbiIKICAgICAgICAgICA8PCAiY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgIgpAQCAt
MjA0OCw2MiArMjM2OCwxNjQgQEAgYm9vbCBUZXN0OjpIYXNTYW1lRml4dHVyZUNsYXNzKCkgewog
ICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gUnVucyB0aGUgdGVzdCBhbmQgdXBkYXRlcyB0aGUgdGVz
dCByZXN1bHQuCi12b2lkIFRlc3Q6OlJ1bigpIHsKLSAgaWYgKCFIYXNTYW1lRml4dHVyZUNsYXNz
KCkpIHJldHVybjsKLQotICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0gaW50
ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpOwogI2lmIEdURVNUX0hBU19TRUgKLSAgLy8gQ2F0Y2gg
U0VILXN0eWxlIGV4Y2VwdGlvbnMuCi0gIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5V
cG9uTGVhdmluZ0dUZXN0KCk7Ci0gIF9fdHJ5IHsKLSAgICBTZXRVcCgpOwotICB9IF9fZXhjZXB0
KGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCgKLSAgICAg
IEdldEV4Y2VwdGlvbkNvZGUoKSkpIHsKLSAgICBBZGRFeGNlcHRpb25UaHJvd25GYWlsdXJlKEdl
dEV4Y2VwdGlvbkNvZGUoKSwgIlNldFVwKCkiKTsKLSAgfQogCi0gIC8vIFdlIHdpbGwgcnVuIHRo
ZSB0ZXN0IG9ubHkgaWYgU2V0VXAoKSBoYWQgbm8gZmF0YWwgZmFpbHVyZS4KLSAgaWYgKCFIYXNG
YXRhbEZhaWx1cmUoKSkgewotICAgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9u
TGVhdmluZ0dUZXN0KCk7Ci0gICAgX190cnkgewotICAgICAgVGVzdEJvZHkoKTsKLSAgICB9IF9f
ZXhjZXB0KGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCgK
LSAgICAgICAgR2V0RXhjZXB0aW9uQ29kZSgpKSkgewotICAgICAgQWRkRXhjZXB0aW9uVGhyb3du
RmFpbHVyZShHZXRFeGNlcHRpb25Db2RlKCksICJ0aGUgdGVzdCBib2R5Iik7Ci0gICAgfQotICB9
CisvLyBBZGRzIGFuICJleGNlcHRpb24gdGhyb3duIiBmYXRhbCBmYWlsdXJlIHRvIHRoZSBjdXJy
ZW50IHRlc3QuICBUaGlzCisvLyBmdW5jdGlvbiByZXR1cm5zIGl0cyByZXN1bHQgdmlhIGFuIG91
dHB1dCBwYXJhbWV0ZXIgcG9pbnRlciBiZWNhdXNlIFZDKysKKy8vIHByb2hpYml0cyBjcmVhdGlv
biBvZiBvYmplY3RzIHdpdGggZGVzdHJ1Y3RvcnMgb24gc3RhY2sgaW4gZnVuY3Rpb25zCisvLyB1
c2luZyBfX3RyeSAoc2VlIGVycm9yIEMyNzEyKS4KK3N0YXRpYyBzdGQ6OnN0cmluZyogRm9ybWF0
U2VoRXhjZXB0aW9uTWVzc2FnZShEV09SRCBleGNlcHRpb25fY29kZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBsb2NhdGlvbikgewor
ICBNZXNzYWdlIG1lc3NhZ2U7CisgIG1lc3NhZ2UgPDwgIlNFSCBleGNlcHRpb24gd2l0aCBjb2Rl
IDB4IiA8PCBzdGQ6OnNldGJhc2UoMTYpIDw8CisgICAgZXhjZXB0aW9uX2NvZGUgPDwgc3RkOjpz
ZXRiYXNlKDEwKSA8PCAiIHRocm93biBpbiAiIDw8IGxvY2F0aW9uIDw8ICIuIjsKIAotICAvLyBI
b3dldmVyLCB3ZSB3YW50IHRvIGNsZWFuIHVwIGFzIG11Y2ggYXMgcG9zc2libGUuICBIZW5jZSB3
ZSB3aWxsCi0gIC8vIGFsd2F5cyBjYWxsIFRlYXJEb3duKCksIGV2ZW4gaWYgU2V0VXAoKSBvciB0
aGUgdGVzdCBib2R5IGhhcwotICAvLyBmYWlsZWQuCi0gIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dl
dHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7CisgIHJldHVybiBuZXcgc3RkOjpzdHJpbmcobWVz
c2FnZS5HZXRTdHJpbmcoKSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAorCituYW1l
c3BhY2UgaW50ZXJuYWwgeworCisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworLy8gQWRkcyBh
biAiZXhjZXB0aW9uIHRocm93biIgZmF0YWwgZmFpbHVyZSB0byB0aGUgY3VycmVudCB0ZXN0Lgor
c3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdEN4eEV4Y2VwdGlvbk1lc3NhZ2UoY29uc3QgY2hhciog
ZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBsb2NhdGlvbikgeworICBNZXNzYWdlIG1lc3NhZ2U7CisgIGlmIChkZXNj
cmlwdGlvbiAhPSBOVUxMKSB7CisgICAgbWVzc2FnZSA8PCAiQysrIGV4Y2VwdGlvbiB3aXRoIGRl
c2NyaXB0aW9uIFwiIiA8PCBkZXNjcmlwdGlvbiA8PCAiXCIiOworICB9IGVsc2UgeworICAgIG1l
c3NhZ2UgPDwgIlVua25vd24gQysrIGV4Y2VwdGlvbiI7CisgIH0KKyAgbWVzc2FnZSA8PCAiIHRo
cm93biBpbiAiIDw8IGxvY2F0aW9uIDw8ICIuIjsKKworICByZXR1cm4gbWVzc2FnZS5HZXRTdHJp
bmcoKTsKK30KKworc3RhdGljIHN0ZDo6c3RyaW5nIFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmlu
ZygKKyAgICBjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCk7CisKK0dvb2ds
ZVRlc3RGYWlsdXJlRXhjZXB0aW9uOjpHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbigKKyAgICBj
b25zdCBUZXN0UGFydFJlc3VsdCYgZmFpbHVyZSkKKyAgICA6IDo6c3RkOjpydW50aW1lX2Vycm9y
KFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmluZyhmYWlsdXJlKS5jX3N0cigpKSB7fQorCisjZW5k
aWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCisKKy8vIFdlIHB1dCB0aGVzZSBoZWxwZXIgZnVu
Y3Rpb25zIGluIHRoZSBpbnRlcm5hbCBuYW1lc3BhY2UgYXMgSUJNJ3MgeGxDCisvLyBjb21waWxl
ciByZWplY3RzIHRoZSBjb2RlIGlmIHRoZXkgd2VyZSBkZWNsYXJlZCBzdGF0aWMuCisKKy8vIFJ1
bnMgdGhlIGdpdmVuIG1ldGhvZCBhbmQgaGFuZGxlcyBTRUggZXhjZXB0aW9ucyBpdCB0aHJvd3Ms
IHdoZW4KKy8vIFNFSCBpcyBzdXBwb3J0ZWQ7IHJldHVybnMgdGhlIDAtdmFsdWUgZm9yIHR5cGUg
UmVzdWx0IGluIGNhc2Ugb2YgYW4KKy8vIFNFSCBleGNlcHRpb24uICAoTWljcm9zb2Z0IGNvbXBp
bGVycyBjYW5ub3QgaGFuZGxlIFNFSCBhbmQgQysrCisvLyBleGNlcHRpb25zIGluIHRoZSBzYW1l
IGZ1bmN0aW9uLiAgVGhlcmVmb3JlLCB3ZSBwcm92aWRlIGEgc2VwYXJhdGUKKy8vIHdyYXBwZXIg
ZnVuY3Rpb24gZm9yIGhhbmRsaW5nIFNFSCBleGNlcHRpb25zLikKK3RlbXBsYXRlIDxjbGFzcyBU
LCB0eXBlbmFtZSBSZXN1bHQ+CitSZXN1bHQgSGFuZGxlU2VoRXhjZXB0aW9uc0luTWV0aG9kSWZT
dXBwb3J0ZWQoCisgICAgVCogb2JqZWN0LCBSZXN1bHQgKFQ6OiptZXRob2QpKCksIGNvbnN0IGNo
YXIqIGxvY2F0aW9uKSB7CisjaWYgR1RFU1RfSEFTX1NFSAogICBfX3RyeSB7Ci0gICAgVGVhckRv
d24oKTsKLSAgfSBfX2V4Y2VwdChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpHVGVzdFNob3Vs
ZFByb2Nlc3NTRUgoCisgICAgcmV0dXJuIChvYmplY3QtPiptZXRob2QpKCk7CisgIH0gX19leGNl
cHQgKGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCggIC8v
IE5PTElOVAogICAgICAgR2V0RXhjZXB0aW9uQ29kZSgpKSkgewotICAgIEFkZEV4Y2VwdGlvblRo
cm93bkZhaWx1cmUoR2V0RXhjZXB0aW9uQ29kZSgpLCAiVGVhckRvd24oKSIpOworICAgIC8vIFdl
IGNyZWF0ZSB0aGUgZXhjZXB0aW9uIG1lc3NhZ2Ugb24gdGhlIGhlYXAgYmVjYXVzZSBWQysrIHBy
b2hpYml0cworICAgIC8vIGNyZWF0aW9uIG9mIG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycyBvbiBz
dGFjayBpbiBmdW5jdGlvbnMgdXNpbmcgX190cnkKKyAgICAvLyAoc2VlIGVycm9yIEMyNzEyKS4K
KyAgICBzdGQ6OnN0cmluZyogZXhjZXB0aW9uX21lc3NhZ2UgPSBGb3JtYXRTZWhFeGNlcHRpb25N
ZXNzYWdlKAorICAgICAgICBHZXRFeGNlcHRpb25Db2RlKCksIGxvY2F0aW9uKTsKKyAgICBpbnRl
cm5hbDo6UmVwb3J0RmFpbHVyZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjprRmF0
YWxGYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KmV4Y2VwdGlvbl9tZXNzYWdlKTsKKyAgICBkZWxldGUgZXhjZXB0aW9uX21lc3NhZ2U7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFJlc3VsdD4oMCk7CiAgIH0KKyNlbHNlCisgICh2b2lkKWxvY2F0
aW9uOworICByZXR1cm4gKG9iamVjdC0+Km1ldGhvZCkoKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFT
X1NFSAorfQogCi0jZWxzZSAgLy8gV2UgYXJlIG9uIGEgY29tcGlsZXIgb3IgcGxhdGZvcm0gdGhh
dCBkb2Vzbid0IHN1cHBvcnQgU0VILgotICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+
VXBvbkxlYXZpbmdHVGVzdCgpOwotICBTZXRVcCgpOworLy8gUnVucyB0aGUgZ2l2ZW4gbWV0aG9k
IGFuZCBjYXRjaGVzIGFuZCByZXBvcnRzIEMrKyBhbmQvb3IgU0VILXN0eWxlCisvLyBleGNlcHRp
b25zLCBpZiB0aGV5IGFyZSBzdXBwb3J0ZWQ7IHJldHVybnMgdGhlIDAtdmFsdWUgZm9yIHR5cGUK
Ky8vIFJlc3VsdCBpbiBjYXNlIG9mIGFuIFNFSCBleGNlcHRpb24uCit0ZW1wbGF0ZSA8Y2xhc3Mg
VCwgdHlwZW5hbWUgUmVzdWx0PgorUmVzdWx0IEhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3Vw
cG9ydGVkKAorICAgIFQqIG9iamVjdCwgUmVzdWx0IChUOjoqbWV0aG9kKSgpLCBjb25zdCBjaGFy
KiBsb2NhdGlvbikgeworICAvLyBOT1RFOiBUaGUgdXNlciBjb2RlIGNhbiBhZmZlY3QgdGhlIHdh
eSBpbiB3aGljaCBHb29nbGUgVGVzdCBoYW5kbGVzCisgIC8vIGV4Y2VwdGlvbnMgYnkgc2V0dGlu
ZyBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpLCBidXQgb25seSBiZWZvcmUKKyAgLy8gUlVO
X0FMTF9URVNUUygpIHN0YXJ0cy4gSXQgaXMgdGVjaG5pY2FsbHkgcG9zc2libGUgdG8gY2hlY2sg
dGhlIGZsYWcKKyAgLy8gYWZ0ZXIgdGhlIGV4Y2VwdGlvbiBpcyBjYXVnaHQgYW5kIGVpdGhlciBy
ZXBvcnQgb3IgcmUtdGhyb3cgdGhlCisgIC8vIGV4Y2VwdGlvbiBiYXNlZCBvbiB0aGUgZmxhZydz
IHZhbHVlOgorICAvLworICAvLyB0cnkgeworICAvLyAgIC8vIFBlcmZvcm0gdGhlIHRlc3QgbWV0
aG9kLgorICAvLyB9IGNhdGNoICguLi4pIHsKKyAgLy8gICBpZiAoR1RFU1RfRkxBRyhjYXRjaF9l
eGNlcHRpb25zKSkKKyAgLy8gICAgIC8vIFJlcG9ydCB0aGUgZXhjZXB0aW9uIGFzIGZhaWx1cmUu
CisgIC8vICAgZWxzZQorICAvLyAgICAgdGhyb3c7ICAvLyBSZS10aHJvd3MgdGhlIG9yaWdpbmFs
IGV4Y2VwdGlvbi4KKyAgLy8gfQorICAvLworICAvLyBIb3dldmVyLCB0aGUgcHVycG9zZSBvZiB0
aGlzIGZsYWcgaXMgdG8gYWxsb3cgdGhlIHByb2dyYW0gdG8gZHJvcCBpbnRvCisgIC8vIHRoZSBk
ZWJ1Z2dlciB3aGVuIHRoZSBleGNlcHRpb24gaXMgdGhyb3duLiBPbiBtb3N0IHBsYXRmb3Jtcywg
b25jZSB0aGUKKyAgLy8gY29udHJvbCBlbnRlcnMgdGhlIGNhdGNoIGJsb2NrLCB0aGUgZXhjZXB0
aW9uIG9yaWdpbiBpbmZvcm1hdGlvbiBpcworICAvLyBsb3N0IGFuZCB0aGUgZGVidWdnZXIgd2ls
bCBzdG9wIHRoZSBwcm9ncmFtIGF0IHRoZSBwb2ludCBvZiB0aGUKKyAgLy8gcmUtdGhyb3cgaW4g
dGhpcyBmdW5jdGlvbiAtLSBpbnN0ZWFkIG9mIGF0IHRoZSBwb2ludCBvZiB0aGUgb3JpZ2luYWwK
KyAgLy8gdGhyb3cgc3RhdGVtZW50IGluIHRoZSBjb2RlIHVuZGVyIHRlc3QuICBGb3IgdGhpcyBy
ZWFzb24sIHdlIHBlcmZvcm0KKyAgLy8gdGhlIGNoZWNrIGVhcmx5LCBzYWNyaWZpY2luZyB0aGUg
YWJpbGl0eSB0byBhZmZlY3QgR29vZ2xlIFRlc3QncworICAvLyBleGNlcHRpb24gaGFuZGxpbmcg
aW4gdGhlIG1ldGhvZCB3aGVyZSB0aGUgZXhjZXB0aW9uIGlzIHRocm93bi4KKyAgaWYgKGludGVy
bmFsOjpHZXRVbml0VGVzdEltcGwoKS0+Y2F0Y2hfZXhjZXB0aW9ucygpKSB7CisjaWYgR1RFU1Rf
SEFTX0VYQ0VQVElPTlMKKyAgICB0cnkgeworICAgICAgcmV0dXJuIEhhbmRsZVNlaEV4Y2VwdGlv
bnNJbk1ldGhvZElmU3VwcG9ydGVkKG9iamVjdCwgbWV0aG9kLCBsb2NhdGlvbik7CisgICAgfSBj
YXRjaCAoY29uc3QgQXNzZXJ0aW9uRXhjZXB0aW9uJikgeyAgLy8gTk9MSU5UCisgICAgICAvLyBU
aGlzIGZhaWx1cmUgd2FzIHJlcG9ydGVkIGFscmVhZHkuCisgICAgfSBjYXRjaCAoY29uc3QgaW50
ZXJuYWw6Okdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uJikgeyAgLy8gTk9MSU5UCisgICAgICAv
LyBUaGlzIGV4Y2VwdGlvbiB0eXBlIGNhbiBvbmx5IGJlIHRocm93biBieSBhIGZhaWxlZCBHb29n
bGUKKyAgICAgIC8vIFRlc3QgYXNzZXJ0aW9uIHdpdGggdGhlIGludGVudGlvbiBvZiBsZXR0aW5n
IGFub3RoZXIgdGVzdGluZworICAgICAgLy8gZnJhbWV3b3JrIGNhdGNoIGl0LiAgVGhlcmVmb3Jl
IHdlIGp1c3QgcmUtdGhyb3cgaXQuCisgICAgICB0aHJvdzsKKyAgICB9IGNhdGNoIChjb25zdCBz
dGQ6OmV4Y2VwdGlvbiYgZSkgeyAgLy8gTk9MSU5UCisgICAgICBpbnRlcm5hbDo6UmVwb3J0RmFp
bHVyZUluVW5rbm93bkxvY2F0aW9uKAorICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxG
YWlsdXJlLAorICAgICAgICAgIEZvcm1hdEN4eEV4Y2VwdGlvbk1lc3NhZ2UoZS53aGF0KCksIGxv
Y2F0aW9uKSk7CisgICAgfSBjYXRjaCAoLi4uKSB7ICAvLyBOT0xJTlQKKyAgICAgIGludGVybmFs
OjpSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oCisgICAgICAgICAgVGVzdFBhcnRSZXN1
bHQ6OmtGYXRhbEZhaWx1cmUsCisgICAgICAgICAgRm9ybWF0Q3h4RXhjZXB0aW9uTWVzc2FnZShO
VUxMLCBsb2NhdGlvbikpOworICAgIH0KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzdWx0Pigw
KTsKKyNlbHNlCisgICAgcmV0dXJuIEhhbmRsZVNlaEV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9y
dGVkKG9iamVjdCwgbWV0aG9kLCBsb2NhdGlvbik7CisjZW5kaWYgIC8vIEdURVNUX0hBU19FWENF
UFRJT05TCisgIH0gZWxzZSB7CisgICAgcmV0dXJuIChvYmplY3QtPiptZXRob2QpKCk7CisgIH0K
K30KKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiAKKy8vIFJ1bnMgdGhlIHRlc3QgYW5kIHVw
ZGF0ZXMgdGhlIHRlc3QgcmVzdWx0Lgordm9pZCBUZXN0OjpSdW4oKSB7CisgIGlmICghSGFzU2Ft
ZUZpeHR1cmVDbGFzcygpKSByZXR1cm47CisKKyAgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCogY29u
c3QgaW1wbCA9IGludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKTsKKyAgaW1wbC0+b3Nfc3RhY2tf
dHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKKyAgaW50ZXJuYWw6OkhhbmRsZUV4
Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKHRoaXMsICZUZXN0OjpTZXRVcCwgIlNldFVwKCki
KTsKICAgLy8gV2Ugd2lsbCBydW4gdGhlIHRlc3Qgb25seSBpZiBTZXRVcCgpIHdhcyBzdWNjZXNz
ZnVsLgogICBpZiAoIUhhc0ZhdGFsRmFpbHVyZSgpKSB7CiAgICAgaW1wbC0+b3Nfc3RhY2tfdHJh
Y2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgICBUZXN0Qm9keSgpOworICAgIGlu
dGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAgICAgICAgdGhp
cywgJlRlc3Q6OlRlc3RCb2R5LCAidGhlIHRlc3QgYm9keSIpOwogICB9CiAKICAgLy8gSG93ZXZl
ciwgd2Ugd2FudCB0byBjbGVhbiB1cCBhcyBtdWNoIGFzIHBvc3NpYmxlLiAgSGVuY2Ugd2Ugd2ls
bAogICAvLyBhbHdheXMgY2FsbCBUZWFyRG93bigpLCBldmVuIGlmIFNldFVwKCkgb3IgdGhlIHRl
c3QgYm9keSBoYXMKICAgLy8gZmFpbGVkLgogICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIo
KS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotICBUZWFyRG93bigpOwotI2VuZGlmICAvLyBHVEVTVF9I
QVNfU0VICisgIGludGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgK
KyAgICAgIHRoaXMsICZUZXN0OjpUZWFyRG93biwgIlRlYXJEb3duKCkiKTsKIH0KIAotCiAvLyBS
ZXR1cm5zIHRydWUgaWZmIHRoZSBjdXJyZW50IHRlc3QgaGFzIGEgZmF0YWwgZmFpbHVyZS4KIGJv
b2wgVGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkgewogICByZXR1cm4gaW50ZXJuYWw6OkdldFVuaXRU
ZXN0SW1wbCgpLT5jdXJyZW50X3Rlc3RfcmVzdWx0KCktPkhhc0ZhdGFsRmFpbHVyZSgpOwpAQCAt
MjExOCwyMiArMjU0MCwyOCBAQCBib29sIFRlc3Q6Okhhc05vbmZhdGFsRmFpbHVyZSgpIHsKIC8v
IGNsYXNzIFRlc3RJbmZvCiAKIC8vIENvbnN0cnVjdHMgYSBUZXN0SW5mbyBvYmplY3QuIEl0IGFz
c3VtZXMgb3duZXJzaGlwIG9mIHRoZSB0ZXN0IGZhY3RvcnkKLS8vIG9iamVjdCB2aWEgaW1wbF8u
Ci1UZXN0SW5mbzo6VGVzdEluZm8oY29uc3QgY2hhciogYV90ZXN0X2Nhc2VfbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX25hbWUsCi0gICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogYV90ZXN0X2Nhc2VfY29tbWVudCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBhX2NvbW1lbnQsCisvLyBvYmplY3QuCitUZXN0SW5mbzo6VGVzdEluZm8oY29uc3Qgc3Rk
OjpzdHJpbmcmIGFfdGVzdF9jYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIGFfbmFtZSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX3R5cGVf
cGFyYW0sCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV92YWx1ZV9wYXJhbSwKKyAg
ICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6Q29kZUxvY2F0aW9uIGFfY29kZV9sb2NhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6VHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCi0g
ICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSkgewot
ICBpbXBsXyA9IG5ldyBpbnRlcm5hbDo6VGVzdEluZm9JbXBsKHRoaXMsIGFfdGVzdF9jYXNlX25h
bWUsIGFfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhX3Rlc3Rf
Y2FzZV9jb21tZW50LCBhX2NvbW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZml4dHVyZV9jbGFzc19pZCwgZmFjdG9yeSk7Ci19CisgICAgICAgICAgICAgICAgICAg
aW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSkKKyAgICA6IHRlc3RfY2FzZV9uYW1l
XyhhX3Rlc3RfY2FzZV9uYW1lKSwKKyAgICAgIG5hbWVfKGFfbmFtZSksCisgICAgICB0eXBlX3Bh
cmFtXyhhX3R5cGVfcGFyYW0gPyBuZXcgc3RkOjpzdHJpbmcoYV90eXBlX3BhcmFtKSA6IE5VTEwp
LAorICAgICAgdmFsdWVfcGFyYW1fKGFfdmFsdWVfcGFyYW0gPyBuZXcgc3RkOjpzdHJpbmcoYV92
YWx1ZV9wYXJhbSkgOiBOVUxMKSwKKyAgICAgIGxvY2F0aW9uXyhhX2NvZGVfbG9jYXRpb24pLAor
ICAgICAgZml4dHVyZV9jbGFzc19pZF8oZml4dHVyZV9jbGFzc19pZCksCisgICAgICBzaG91bGRf
cnVuXyhmYWxzZSksCisgICAgICBpc19kaXNhYmxlZF8oZmFsc2UpLAorICAgICAgbWF0Y2hlc19m
aWx0ZXJfKGZhbHNlKSwKKyAgICAgIGZhY3RvcnlfKGZhY3RvcnkpLAorICAgICAgcmVzdWx0Xygp
IHt9CiAKIC8vIERlc3RydWN0cyBhIFRlc3RJbmZvIG9iamVjdC4KLVRlc3RJbmZvOjp+VGVzdElu
Zm8oKSB7Ci0gIGRlbGV0ZSBpbXBsXzsKLX0KK1Rlc3RJbmZvOjp+VGVzdEluZm8oKSB7IGRlbGV0
ZSBmYWN0b3J5XzsgfQogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCkBAIC0yMTQ0LDEwICsyNTcy
LDExIEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLwogLy8gICB0ZXN0X2Nhc2VfbmFtZTogICBu
YW1lIG9mIHRoZSB0ZXN0IGNhc2UKIC8vICAgbmFtZTogICAgICAgICAgICAgbmFtZSBvZiB0aGUg
dGVzdAotLy8gICB0ZXN0X2Nhc2VfY29tbWVudDogYSBjb21tZW50IG9uIHRoZSB0ZXN0IGNhc2Ug
dGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluCi0vLyAgICAgICAgICAgICAgICAgICAgICB0aGUgdGVz
dCBvdXRwdXQKLS8vICAgY29tbWVudDogICAgICAgICAgYSBjb21tZW50IG9uIHRoZSB0ZXN0IHRo
YXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKLS8vICAgICAgICAgICAgICAgICAgICAgdGVzdCBv
dXRwdXQKKy8vICAgdHlwZV9wYXJhbTogICAgICAgdGhlIG5hbWUgb2YgdGhlIHRlc3QncyB0eXBl
IHBhcmFtZXRlciwgb3IgTlVMTCBpZgorLy8gICAgICAgICAgICAgICAgICAgICB0aGlzIGlzIG5v
dCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisvLyAgIHZhbHVlX3BhcmFt
OiAgICAgIHRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRlc3QncyB2YWx1ZSBwYXJhbWV0ZXIs
CisvLyAgICAgICAgICAgICAgICAgICAgIG9yIE5VTEwgaWYgdGhpcyBpcyBub3QgYSB2YWx1ZS1w
YXJhbWV0ZXJpemVkIHRlc3QuCisvLyAgIGNvZGVfbG9jYXRpb246ICAgIGNvZGUgbG9jYXRpb24g
d2hlcmUgdGhlIHRlc3QgaXMgZGVmaW5lZAogLy8gICBmaXh0dXJlX2NsYXNzX2lkOiBJRCBvZiB0
aGUgdGVzdCBmaXh0dXJlIGNsYXNzCiAvLyAgIHNldF91cF90YzogICAgICAgIHBvaW50ZXIgdG8g
dGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBjYXNlCiAvLyAgIHRlYXJfZG93bl90
YzogICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgdGVhcnMgZG93biB0aGUgdGVzdCBj
YXNlCkBAIC0yMTU1LDIyICsyNTg0LDI0IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLyAgICAg
ICAgICAgICAgICAgICAgIFRoZSBuZXdseSBjcmVhdGVkIFRlc3RJbmZvIGluc3RhbmNlIHdpbGwg
YXNzdW1lCiAvLyAgICAgICAgICAgICAgICAgICAgIG93bmVyc2hpcCBvZiB0aGUgZmFjdG9yeSBv
YmplY3QuCiBUZXN0SW5mbyogTWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8oCi0gICAgY29uc3QgY2hh
ciogdGVzdF9jYXNlX25hbWUsIGNvbnN0IGNoYXIqIG5hbWUsCi0gICAgY29uc3QgY2hhciogdGVz
dF9jYXNlX2NvbW1lbnQsIGNvbnN0IGNoYXIqIGNvbW1lbnQsCisgICAgY29uc3QgY2hhciogdGVz
dF9jYXNlX25hbWUsCisgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICBjb25zdCBjaGFyKiB0eXBl
X3BhcmFtLAorICAgIGNvbnN0IGNoYXIqIHZhbHVlX3BhcmFtLAorICAgIENvZGVMb2NhdGlvbiBj
b2RlX2xvY2F0aW9uLAogICAgIFR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkLAogICAgIFNldFVwVGVz
dENhc2VGdW5jIHNldF91cF90YywKICAgICBUZWFyRG93blRlc3RDYXNlRnVuYyB0ZWFyX2Rvd25f
dGMsCiAgICAgVGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5KSB7CiAgIFRlc3RJbmZvKiBjb25zdCB0
ZXN0X2luZm8gPQotICAgICAgbmV3IFRlc3RJbmZvKHRlc3RfY2FzZV9uYW1lLCBuYW1lLCB0ZXN0
X2Nhc2VfY29tbWVudCwgY29tbWVudCwKLSAgICAgICAgICAgICAgICAgICBmaXh0dXJlX2NsYXNz
X2lkLCBmYWN0b3J5KTsKKyAgICAgIG5ldyBUZXN0SW5mbyh0ZXN0X2Nhc2VfbmFtZSwgbmFtZSwg
dHlwZV9wYXJhbSwgdmFsdWVfcGFyYW0sCisgICAgICAgICAgICAgICAgICAgY29kZV9sb2NhdGlv
biwgZml4dHVyZV9jbGFzc19pZCwgZmFjdG9yeSk7CiAgIEdldFVuaXRUZXN0SW1wbCgpLT5BZGRU
ZXN0SW5mbyhzZXRfdXBfdGMsIHRlYXJfZG93bl90YywgdGVzdF9pbmZvKTsKICAgcmV0dXJuIHRl
c3RfaW5mbzsKIH0KIAotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiB2b2lkIFJlcG9ydEludmFs
aWRUZXN0Q2FzZVR5cGUoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbikgewogICBN
ZXNzYWdlIGVycm9yczsKICAgZXJyb3JzCiAgICAgICA8PCAiQXR0ZW1wdGVkIHJlZGVmaW5pdGlv
biBvZiB0ZXN0IGNhc2UgIiA8PCB0ZXN0X2Nhc2VfbmFtZSA8PCAiLlxuIgpAQCAtMjE4Miw0OCAr
MjYxMywxMiBAQCB2b2lkIFJlcG9ydEludmFsaWRUZXN0Q2FzZVR5cGUoY29uc3QgY2hhciogdGVz
dF9jYXNlX25hbWUsCiAgICAgICA8PCAicHJvYmFibHkgcmVuYW1lIG9uZSBvZiB0aGUgY2xhc3Nl
cyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50XG4iCiAgICAgICA8PCAidGVzdCBjYXNl
cy4iOwogCi0gIGZwcmludGYoc3RkZXJyLCAiJXMgJXMiLCBGb3JtYXRGaWxlTG9jYXRpb24oZmls
ZSwgbGluZSkuY19zdHIoKSwKLSAgICAgICAgICBlcnJvcnMuR2V0U3RyaW5nKCkuY19zdHIoKSk7
CisgIEdURVNUX0xPR18oRVJST1IpIDw8IEZvcm1hdEZpbGVMb2NhdGlvbihjb2RlX2xvY2F0aW9u
LmZpbGUuY19zdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvZGVfbG9jYXRpb24ubGluZSkKKyAgICAgICAgICAgICAgICAgICAgPDwgIiAiIDw8IGVycm9y
cy5HZXRTdHJpbmcoKTsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQogfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCiAKLS8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBuYW1lLgot
Y29uc3QgY2hhciogVGVzdEluZm86OnRlc3RfY2FzZV9uYW1lKCkgY29uc3QgewotICByZXR1cm4g
aW1wbF8tPnRlc3RfY2FzZV9uYW1lKCk7Ci19Ci0KLS8vIFJldHVybnMgdGhlIHRlc3QgbmFtZS4K
LWNvbnN0IGNoYXIqIFRlc3RJbmZvOjpuYW1lKCkgY29uc3QgewotICByZXR1cm4gaW1wbF8tPm5h
bWUoKTsKLX0KLQotLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIGNvbW1lbnQuCi1jb25zdCBjaGFy
KiBUZXN0SW5mbzo6dGVzdF9jYXNlX2NvbW1lbnQoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBsXy0+
dGVzdF9jYXNlX2NvbW1lbnQoKTsKLX0KLQotLy8gUmV0dXJucyB0aGUgdGVzdCBjb21tZW50Lgot
Y29uc3QgY2hhciogVGVzdEluZm86OmNvbW1lbnQoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBsXy0+
Y29tbWVudCgpOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IHNob3VsZCBydW4u
Ci1ib29sIFRlc3RJbmZvOjpzaG91bGRfcnVuKCkgY29uc3QgeyByZXR1cm4gaW1wbF8tPnNob3Vs
ZF9ydW4oKTsgfQotCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IG1hdGNoZXMgdGhlIHVz
ZXItc3BlY2lmaWVkIGZpbHRlci4KLWJvb2wgVGVzdEluZm86Om1hdGNoZXNfZmlsdGVyKCkgY29u
c3QgeyByZXR1cm4gaW1wbF8tPm1hdGNoZXNfZmlsdGVyKCk7IH0KLQotLy8gUmV0dXJucyB0aGUg
cmVzdWx0IG9mIHRoZSB0ZXN0LgotY29uc3QgVGVzdFJlc3VsdCogVGVzdEluZm86OnJlc3VsdCgp
IGNvbnN0IHsgcmV0dXJuIGltcGxfLT5yZXN1bHQoKTsgfQotCi0vLyBJbmNyZW1lbnRzIHRoZSBu
dW1iZXIgb2YgZGVhdGggdGVzdHMgZW5jb3VudGVyZWQgaW4gdGhpcyB0ZXN0IHNvCi0vLyBmYXIu
Ci1pbnQgVGVzdEluZm86OmluY3JlbWVudF9kZWF0aF90ZXN0X2NvdW50KCkgewotICByZXR1cm4g
aW1wbF8tPnJlc3VsdCgpLT5pbmNyZW1lbnRfZGVhdGhfdGVzdF9jb3VudCgpOwotfQotCiBuYW1l
c3BhY2UgewogCiAvLyBBIHByZWRpY2F0ZSB0aGF0IGNoZWNrcyB0aGUgdGVzdCBuYW1lIG9mIGEg
VGVzdEluZm8gYWdhaW5zdCBhIGtub3duCkBAIC0yMjQ0LDExICsyNjM5LDExIEBAIGNsYXNzIFRl
c3ROYW1lSXMgewogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgbmFtZSBvZiB0ZXN0
X2luZm8gbWF0Y2hlcyBuYW1lXy4KICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFRlc3RJbmZvICog
dGVzdF9pbmZvKSBjb25zdCB7Ci0gICAgcmV0dXJuIHRlc3RfaW5mbyAmJiBpbnRlcm5hbDo6U3Ry
aW5nKHRlc3RfaW5mby0+bmFtZSgpKS5Db21wYXJlKG5hbWVfKSA9PSAwOworICAgIHJldHVybiB0
ZXN0X2luZm8gJiYgdGVzdF9pbmZvLT5uYW1lKCkgPT0gbmFtZV87CiAgIH0KIAogIHByaXZhdGU6
Ci0gIGludGVybmFsOjpTdHJpbmcgbmFtZV87CisgIHN0ZDo6c3RyaW5nIG5hbWVfOwogfTsKIAog
fSAgLy8gbmFtZXNwYWNlCkBAIC0yMjU5LDc4ICsyNjU0LDYwIEBAIG5hbWVzcGFjZSBpbnRlcm5h
bCB7CiAvLyBhbmQgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgaW50byByZWd1bGFyIHRlc3RzIGFu
ZCByZWdpc3RlcnMgdGhvc2UuCiAvLyBUaGlzIHdpbGwgYmUgZG9uZSBqdXN0IG9uY2UgZHVyaW5n
IHRoZSBwcm9ncmFtIHJ1bnRpbWUuCiB2b2lkIFVuaXRUZXN0SW1wbDo6UmVnaXN0ZXJQYXJhbWV0
ZXJpemVkVGVzdHMoKSB7Ci0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgaWYgKCFwYXJhbWV0
ZXJpemVkX3Rlc3RzX3JlZ2lzdGVyZWRfKSB7CiAgICAgcGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lz
dHJ5Xy5SZWdpc3RlclRlc3RzKCk7CiAgICAgcGFyYW1ldGVyaXplZF90ZXN0c19yZWdpc3RlcmVk
XyA9IHRydWU7CiAgIH0KLSNlbmRpZgogfQogCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKwog
Ly8gQ3JlYXRlcyB0aGUgdGVzdCBvYmplY3QsIHJ1bnMgaXQsIHJlY29yZHMgaXRzIHJlc3VsdCwg
YW5kIHRoZW4KIC8vIGRlbGV0ZXMgaXQuCi12b2lkIFRlc3RJbmZvSW1wbDo6UnVuKCkgewordm9p
ZCBUZXN0SW5mbzo6UnVuKCkgewogICBpZiAoIXNob3VsZF9ydW5fKSByZXR1cm47CiAKICAgLy8g
VGVsbHMgVW5pdFRlc3Qgd2hlcmUgdG8gc3RvcmUgdGVzdCByZXN1bHQuCi0gIFVuaXRUZXN0SW1w
bCogY29uc3QgaW1wbCA9IGludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKTsKLSAgaW1wbC0+c2V0
X2N1cnJlbnRfdGVzdF9pbmZvKHBhcmVudF8pOworICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBj
b25zdCBpbXBsID0gaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpOworICBpbXBsLT5zZXRfY3Vy
cmVudF90ZXN0X2luZm8odGhpcyk7CiAKICAgVGVzdEV2ZW50TGlzdGVuZXIqIHJlcGVhdGVyID0g
VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpLnJlcGVhdGVyKCk7CiAKICAgLy8g
Tm90aWZpZXMgdGhlIHVuaXQgdGVzdCBldmVudCBsaXN0ZW5lcnMgdGhhdCBhIHRlc3QgaXMgYWJv
dXQgdG8gc3RhcnQuCi0gIHJlcGVhdGVyLT5PblRlc3RTdGFydCgqcGFyZW50Xyk7CisgIHJlcGVh
dGVyLT5PblRlc3RTdGFydCgqdGhpcyk7CiAKLSAgY29uc3QgVGltZUluTWlsbGlzIHN0YXJ0ID0g
R2V0VGltZUluTWlsbGlzKCk7CisgIGNvbnN0IFRpbWVJbk1pbGxpcyBzdGFydCA9IGludGVybmFs
OjpHZXRUaW1lSW5NaWxsaXMoKTsKIAogICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+
VXBvbkxlYXZpbmdHVGVzdCgpOwotI2lmIEdURVNUX0hBU19TRUgKLSAgLy8gQ2F0Y2ggU0VILXN0
eWxlIGV4Y2VwdGlvbnMuCi0gIFRlc3QqIHRlc3QgPSBOVUxMOwotCi0gIF9fdHJ5IHsKLSAgICAv
LyBDcmVhdGVzIHRoZSB0ZXN0IG9iamVjdC4KLSAgICB0ZXN0ID0gZmFjdG9yeV8tPkNyZWF0ZVRl
c3QoKTsKLSAgfSBfX2V4Y2VwdChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpHVGVzdFNob3Vs
ZFByb2Nlc3NTRUgoCi0gICAgICBHZXRFeGNlcHRpb25Db2RlKCkpKSB7Ci0gICAgQWRkRXhjZXB0
aW9uVGhyb3duRmFpbHVyZShHZXRFeGNlcHRpb25Db2RlKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAidGhlIHRlc3QgZml4dHVyZSdzIGNvbnN0cnVjdG9yIik7Ci0gICAgcmV0dXJu
OwotICB9Ci0jZWxzZSAgLy8gV2UgYXJlIG9uIGEgY29tcGlsZXIgb3IgcGxhdGZvcm0gdGhhdCBk
b2Vzbid0IHN1cHBvcnQgU0VILgotCi0gIC8vIFRPRE8od2FuKTogSWYgdGVzdC0+UnVuKCkgdGhy
b3dzLCB0ZXN0IHdvbid0IGJlIGRlbGV0ZWQuICBUaGlzIGlzCi0gIC8vIG5vdCBhIHByb2JsZW0g
bm93IGFzIHdlIGRvbid0IHVzZSBleGNlcHRpb25zLiAgSWYgd2Ugd2VyZSB0bwotICAvLyBlbmFi
bGUgZXhjZXB0aW9ucywgd2Ugc2hvdWxkIHJldmlzZSB0aGUgZm9sbG93aW5nIHRvIGJlCi0gIC8v
IGV4Y2VwdGlvbi1zYWZlLgogCiAgIC8vIENyZWF0ZXMgdGhlIHRlc3Qgb2JqZWN0LgotICBUZXN0
KiB0ZXN0ID0gZmFjdG9yeV8tPkNyZWF0ZVRlc3QoKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NF
SAorICBUZXN0KiBjb25zdCB0ZXN0ID0gaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhv
ZElmU3VwcG9ydGVkKAorICAgICAgZmFjdG9yeV8sICZpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNl
OjpDcmVhdGVUZXN0LAorICAgICAgInRoZSB0ZXN0IGZpeHR1cmUncyBjb25zdHJ1Y3RvciIpOwog
Ci0gIC8vIFJ1bnMgdGhlIHRlc3Qgb25seSBpZiB0aGUgY29uc3RydWN0b3Igb2YgdGhlIHRlc3Qg
Zml4dHVyZSBkaWRuJ3QKLSAgLy8gZ2VuZXJhdGUgYSBmYXRhbCBmYWlsdXJlLgorICAvLyBSdW5z
IHRoZSB0ZXN0IGlmIHRoZSBjb25zdHJ1Y3RvciBkaWRuJ3QgZ2VuZXJhdGUgYSBmYXRhbCBmYWls
dXJlLgorICAvLyBOb3RlIHRoYXQgdGhlIG9iamVjdCB3aWxsIG5vdCBiZSBudWxsCiAgIGlmICgh
VGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkpIHsKKyAgICAvLyBUaGlzIGRvZXNuJ3QgdGhyb3cgYXMg
YWxsIHVzZXIgY29kZSB0aGF0IGNhbiB0aHJvdyBhcmUgd3JhcHBlZCBpbnRvCisgICAgLy8gZXhj
ZXB0aW9uIGhhbmRsaW5nIGNvZGUuCiAgICAgdGVzdC0+UnVuKCk7CiAgIH0KIAotICAvLyBEZWxl
dGVzIHRoZSB0ZXN0IG9iamVjdC4KLSAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVw
b25MZWF2aW5nR1Rlc3QoKTsKLSAgZGVsZXRlIHRlc3Q7Ci0gIHRlc3QgPSBOVUxMOworICAgIC8v
IERlbGV0ZXMgdGhlIHRlc3Qgb2JqZWN0LgorICAgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRl
cigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7CisgICAgaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJ
bk1ldGhvZElmU3VwcG9ydGVkKAorICAgICAgICB0ZXN0LCAmVGVzdDo6RGVsZXRlU2VsZl8sICJ0
aGUgdGVzdCBmaXh0dXJlJ3MgZGVzdHJ1Y3RvciIpOwogCi0gIHJlc3VsdF8uc2V0X2VsYXBzZWRf
dGltZShHZXRUaW1lSW5NaWxsaXMoKSAtIHN0YXJ0KTsKKyAgcmVzdWx0Xy5zZXRfZWxhcHNlZF90
aW1lKGludGVybmFsOjpHZXRUaW1lSW5NaWxsaXMoKSAtIHN0YXJ0KTsKIAogICAvLyBOb3RpZmll
cyB0aGUgdW5pdCB0ZXN0IGV2ZW50IGxpc3RlbmVyIHRoYXQgYSB0ZXN0IGhhcyBqdXN0IGZpbmlz
aGVkLgotICByZXBlYXRlci0+T25UZXN0RW5kKCpwYXJlbnRfKTsKKyAgcmVwZWF0ZXItPk9uVGVz
dEVuZCgqdGhpcyk7CiAKICAgLy8gVGVsbHMgVW5pdFRlc3QgdG8gc3RvcCBhc3NvY2lhdGluZyBh
c3NlcnRpb24gcmVzdWx0cyB0byB0aGlzCiAgIC8vIHRlc3QuCiAgIGltcGwtPnNldF9jdXJyZW50
X3Rlc3RfaW5mbyhOVUxMKTsKIH0KIAotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KIC8vIGNs
YXNzIFRlc3RDYXNlCiAKIC8vIEdldHMgdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIHRlc3RzIGlu
IHRoaXMgdGVzdCBjYXNlLgpAQCAtMjM0MywxMCArMjcyMCwyMSBAQCBpbnQgVGVzdENhc2U6OmZh
aWxlZF90ZXN0X2NvdW50KCkgY29uc3QgewogICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlz
dF8sIFRlc3RGYWlsZWQpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVz
dHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0LgoraW50IFRlc3RDYXNl
OjpyZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBDb3Vu
dElmKHRlc3RfaW5mb19saXN0XywgVGVzdFJlcG9ydGFibGVEaXNhYmxlZCk7Cit9CisKKy8vIEdl
dHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KIGludCBU
ZXN0Q2FzZTo6ZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJuIENvdW50SWYo
dGVzdF9pbmZvX2xpc3RfLCBUZXN0RGlzYWJsZWQpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIg
b2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KK2ludCBUZXN0Q2FzZTo6
cmVwb3J0YWJsZV90ZXN0X2NvdW50KCkgY29uc3QgeworICByZXR1cm4gQ291bnRJZih0ZXN0X2lu
Zm9fbGlzdF8sIFRlc3RSZXBvcnRhYmxlKTsKK30KKwogLy8gR2V0IHRoZSBudW1iZXIgb2YgdGVz
dHMgaW4gdGhpcyB0ZXN0IGNhc2UgdGhhdCBzaG91bGQgcnVuLgogaW50IFRlc3RDYXNlOjp0ZXN0
X3RvX3J1bl9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJuIENvdW50SWYodGVzdF9pbmZvX2xpc3Rf
LCBTaG91bGRSdW5UZXN0KTsKQEAgLTIzNjIsMTMgKzI3NTAsMTUgQEAgaW50IFRlc3RDYXNlOjp0
b3RhbF90ZXN0X2NvdW50KCkgY29uc3QgewogLy8gQXJndW1lbnRzOgogLy8KIC8vICAgbmFtZTog
ICAgICAgICBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UKKy8vICAgYV90eXBlX3BhcmFtOiB0aGUgbmFt
ZSBvZiB0aGUgdGVzdCBjYXNlJ3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYKKy8vICAgICAg
ICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRl
c3QgY2FzZS4KIC8vICAgc2V0X3VwX3RjOiAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0
IHNldHMgdXAgdGhlIHRlc3QgY2FzZQogLy8gICB0ZWFyX2Rvd25fdGM6IHBvaW50ZXIgdG8gdGhl
IGZ1bmN0aW9uIHRoYXQgdGVhcnMgZG93biB0aGUgdGVzdCBjYXNlCi1UZXN0Q2FzZTo6VGVzdENh
c2UoY29uc3QgY2hhciogYV9uYW1lLCBjb25zdCBjaGFyKiBhX2NvbW1lbnQsCitUZXN0Q2FzZTo6
VGVzdENhc2UoY29uc3QgY2hhciogYV9uYW1lLCBjb25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sCiAg
ICAgICAgICAgICAgICAgICAgVGVzdDo6U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAg
ICAgICAgICAgICAgICAgIFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YykK
ICAgICA6IG5hbWVfKGFfbmFtZSksCi0gICAgICBjb21tZW50XyhhX2NvbW1lbnQpLAorICAgICAg
dHlwZV9wYXJhbV8oYV90eXBlX3BhcmFtID8gbmV3IHN0ZDo6c3RyaW5nKGFfdHlwZV9wYXJhbSkg
OiBOVUxMKSwKICAgICAgIHNldF91cF90Y18oc2V0X3VwX3RjKSwKICAgICAgIHRlYXJfZG93bl90
Y18odGVhcl9kb3duX3RjKSwKICAgICAgIHNob3VsZF9ydW5fKGZhbHNlKSwKQEAgLTI0MTMsNDUg
KzI4MDMsMjcgQEAgdm9pZCBUZXN0Q2FzZTo6UnVuKCkgewogCiAgIHJlcGVhdGVyLT5PblRlc3RD
YXNlU3RhcnQoKnRoaXMpOwogICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxl
YXZpbmdHVGVzdCgpOwotICBzZXRfdXBfdGNfKCk7CisgIGludGVybmFsOjpIYW5kbGVFeGNlcHRp
b25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAgICAgIHRoaXMsICZUZXN0Q2FzZTo6UnVuU2V0VXBU
ZXN0Q2FzZSwgIlNldFVwVGVzdENhc2UoKSIpOwogCiAgIGNvbnN0IGludGVybmFsOjpUaW1lSW5N
aWxsaXMgc3RhcnQgPSBpbnRlcm5hbDo6R2V0VGltZUluTWlsbGlzKCk7CiAgIGZvciAoaW50IGkg
PSAwOyBpIDwgdG90YWxfdGVzdF9jb3VudCgpOyBpKyspIHsKLSAgICBHZXRNdXRhYmxlVGVzdElu
Zm8oaSktPmltcGwoKS0+UnVuKCk7CisgICAgR2V0TXV0YWJsZVRlc3RJbmZvKGkpLT5SdW4oKTsK
ICAgfQogICBlbGFwc2VkX3RpbWVfID0gaW50ZXJuYWw6OkdldFRpbWVJbk1pbGxpcygpIC0gc3Rh
cnQ7CiAKICAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3Qo
KTsKLSAgdGVhcl9kb3duX3RjXygpOworICBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0
aG9kSWZTdXBwb3J0ZWQoCisgICAgICB0aGlzLCAmVGVzdENhc2U6OlJ1blRlYXJEb3duVGVzdENh
c2UsICJUZWFyRG93blRlc3RDYXNlKCkiKTsKKwogICByZXBlYXRlci0+T25UZXN0Q2FzZUVuZCgq
dGhpcyk7CiAgIGltcGwtPnNldF9jdXJyZW50X3Rlc3RfY2FzZShOVUxMKTsKIH0KIAogLy8gQ2xl
YXJzIHRoZSByZXN1bHRzIG9mIGFsbCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KIHZvaWQgVGVz
dENhc2U6OkNsZWFyUmVzdWx0KCkgewotICBGb3JFYWNoKHRlc3RfaW5mb19saXN0XywgaW50ZXJu
YWw6OlRlc3RJbmZvSW1wbDo6Q2xlYXJUZXN0UmVzdWx0KTsKLX0KLQotLy8gUmV0dXJucyB0cnVl
IGlmZiB0ZXN0IHBhc3NlZC4KLWJvb2wgVGVzdENhc2U6OlRlc3RQYXNzZWQoY29uc3QgVGVzdElu
Zm8gKiB0ZXN0X2luZm8pIHsKLSAgY29uc3QgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbCogY29uc3Qg
aW1wbCA9IHRlc3RfaW5mby0+aW1wbCgpOwotICByZXR1cm4gaW1wbC0+c2hvdWxkX3J1bigpICYm
IGltcGwtPnJlc3VsdCgpLT5QYXNzZWQoKTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0
IGZhaWxlZC4KLWJvb2wgVGVzdENhc2U6OlRlc3RGYWlsZWQoY29uc3QgVGVzdEluZm8gKiB0ZXN0
X2luZm8pIHsKLSAgY29uc3QgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbCogY29uc3QgaW1wbCA9IHRl
c3RfaW5mby0+aW1wbCgpOwotICByZXR1cm4gaW1wbC0+c2hvdWxkX3J1bigpICYmIGltcGwtPnJl
c3VsdCgpLT5GYWlsZWQoKTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0IGlzIGRpc2Fi
bGVkLgotYm9vbCBUZXN0Q2FzZTo6VGVzdERpc2FibGVkKGNvbnN0IFRlc3RJbmZvICogdGVzdF9p
bmZvKSB7Ci0gIHJldHVybiB0ZXN0X2luZm8tPmltcGwoKS0+aXNfZGlzYWJsZWQoKTsKLX0KLQot
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiB0ZXN0IHNob3VsZCBydW4uCi1ib29sIFRlc3RD
YXNlOjpTaG91bGRSdW5UZXN0KGNvbnN0IFRlc3RJbmZvICp0ZXN0X2luZm8pIHsKLSAgcmV0dXJu
IHRlc3RfaW5mby0+aW1wbCgpLT5zaG91bGRfcnVuKCk7CisgIGFkX2hvY190ZXN0X3Jlc3VsdF8u
Q2xlYXIoKTsKKyAgRm9yRWFjaCh0ZXN0X2luZm9fbGlzdF8sIFRlc3RJbmZvOjpDbGVhclRlc3RS
ZXN1bHQpOwogfQogCiAvLyBTaHVmZmxlcyB0aGUgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCkBA
IC0yNDcxLDIwICsyODQzLDIwIEBAIHZvaWQgVGVzdENhc2U6OlVuc2h1ZmZsZVRlc3RzKCkgewog
Ly8KIC8vIEZvcm1hdENvdW50YWJsZU5vdW4oMSwgImZvcm11bGEiLCAiZm9ybXVsaSIpIHJldHVy
bnMgIjEgZm9ybXVsYSIuCiAvLyBGb3JtYXRDb3VudGFibGVOb3VuKDUsICJib29rIiwgImJvb2tz
IikgcmV0dXJucyAiNSBib29rcyIuCi1zdGF0aWMgaW50ZXJuYWw6OlN0cmluZyBGb3JtYXRDb3Vu
dGFibGVOb3VuKGludCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqIHNpbmd1bGFyX2Zvcm0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBwbHVyYWxfZm9ybSkgewotICBy
ZXR1cm4gaW50ZXJuYWw6OlN0cmluZzo6Rm9ybWF0KCIlZCAlcyIsIGNvdW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ID09IDEgPyBzaW5ndWxhcl9mb3JtIDogcGx1
cmFsX2Zvcm0pOworc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdENvdW50YWJsZU5vdW4oaW50IGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
IHNpbmd1bGFyX2Zvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICogcGx1cmFsX2Zvcm0pIHsKKyAgcmV0dXJuIGludGVybmFsOjpTdHJlYW1hYmxl
VG9TdHJpbmcoY291bnQpICsgIiAiICsKKyAgICAgIChjb3VudCA9PSAxID8gc2luZ3VsYXJfZm9y
bSA6IHBsdXJhbF9mb3JtKTsKIH0KIAogLy8gRm9ybWF0cyB0aGUgY291bnQgb2YgdGVzdHMuCi1z
dGF0aWMgaW50ZXJuYWw6OlN0cmluZyBGb3JtYXRUZXN0Q291bnQoaW50IHRlc3RfY291bnQpIHsK
K3N0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRUZXN0Q291bnQoaW50IHRlc3RfY291bnQpIHsKICAg
cmV0dXJuIEZvcm1hdENvdW50YWJsZU5vdW4odGVzdF9jb3VudCwgInRlc3QiLCAidGVzdHMiKTsK
IH0KIAogLy8gRm9ybWF0cyB0aGUgY291bnQgb2YgdGVzdCBjYXNlcy4KLXN0YXRpYyBpbnRlcm5h
bDo6U3RyaW5nIEZvcm1hdFRlc3RDYXNlQ291bnQoaW50IHRlc3RfY2FzZV9jb3VudCkgeworc3Rh
dGljIHN0ZDo6c3RyaW5nIEZvcm1hdFRlc3RDYXNlQ291bnQoaW50IHRlc3RfY2FzZV9jb3VudCkg
ewogICByZXR1cm4gRm9ybWF0Q291bnRhYmxlTm91bih0ZXN0X2Nhc2VfY291bnQsICJ0ZXN0IGNh
c2UiLCAidGVzdCBjYXNlcyIpOwogfQogCkBAIC0yNTA0LDEzICsyODc2LDE1IEBAIHN0YXRpYyBj
b25zdCBjaGFyICogVGVzdFBhcnRSZXN1bHRUeXBlVG9TdHJpbmcoVGVzdFBhcnRSZXN1bHQ6OlR5
cGUgdHlwZSkgewogI2Vsc2UKICAgICAgIHJldHVybiAiRmFpbHVyZVxuIjsKICNlbmRpZgorICAg
IGRlZmF1bHQ6CisgICAgICByZXR1cm4gIlVua25vd24gcmVzdWx0IHR5cGUiOwogICB9Ci0KLSAg
cmV0dXJuICJVbmtub3duIHJlc3VsdCB0eXBlIjsKIH0KIAotLy8gUHJpbnRzIGEgVGVzdFBhcnRS
ZXN1bHQgdG8gYSBTdHJpbmcuCi1zdGF0aWMgaW50ZXJuYWw6OlN0cmluZyBQcmludFRlc3RQYXJ0
UmVzdWx0VG9TdHJpbmcoCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBQcmludHMgYSBUZXN0
UGFydFJlc3VsdCB0byBhbiBzdGQ6OnN0cmluZy4KK3N0YXRpYyBzdGQ6OnN0cmluZyBQcmludFRl
c3RQYXJ0UmVzdWx0VG9TdHJpbmcoCiAgICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFy
dF9yZXN1bHQpIHsKICAgcmV0dXJuIChNZXNzYWdlKCkKICAgICAgICAgICA8PCBpbnRlcm5hbDo6
Rm9ybWF0RmlsZUxvY2F0aW9uKHRlc3RfcGFydF9yZXN1bHQuZmlsZV9uYW1lKCksCkBAIC0yNTIx
LDcgKzI4OTUsNyBAQCBzdGF0aWMgaW50ZXJuYWw6OlN0cmluZyBQcmludFRlc3RQYXJ0UmVzdWx0
VG9TdHJpbmcoCiAKIC8vIFByaW50cyBhIFRlc3RQYXJ0UmVzdWx0Lgogc3RhdGljIHZvaWQgUHJp
bnRUZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkg
ewotICBjb25zdCBpbnRlcm5hbDo6U3RyaW5nJiByZXN1bHQgPQorICBjb25zdCBzdGQ6OnN0cmlu
ZyYgcmVzdWx0ID0KICAgICAgIFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmluZyh0ZXN0X3BhcnRf
cmVzdWx0KTsKICAgcHJpbnRmKCIlc1xuIiwgcmVzdWx0LmNfc3RyKCkpOwogICBmZmx1c2goc3Rk
b3V0KTsKQEAgLTI1NDAsOCArMjkxNCw2IEBAIHN0YXRpYyB2b2lkIFByaW50VGVzdFBhcnRSZXN1
bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKIAogLy8gY2xhc3Mg
UHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyCiAKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KIGVu
dW0gR1Rlc3RDb2xvciB7CiAgIENPTE9SX0RFRkFVTFQsCiAgIENPTE9SX1JFRCwKQEAgLTI1NDks
MTAgKzI5MjEsMTEgQEAgZW51bSBHVGVzdENvbG9yIHsKICAgQ09MT1JfWUVMTE9XCiB9OwogCi0j
aWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyNpZiBHVEVT
VF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRSAmJiBcCisgICAgIUdURVNU
X09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQgJiYgIUdURVNUX09TX1dJ
TkRPV1NfTUlOR1cKIAogLy8gUmV0dXJucyB0aGUgY2hhcmFjdGVyIGF0dHJpYnV0ZSBmb3IgdGhl
IGdpdmVuIGNvbG9yLgotV09SRCBHZXRDb2xvckF0dHJpYnV0ZShHVGVzdENvbG9yIGNvbG9yKSB7
CitzdGF0aWMgV09SRCBHZXRDb2xvckF0dHJpYnV0ZShHVGVzdENvbG9yIGNvbG9yKSB7CiAgIHN3
aXRjaCAoY29sb3IpIHsKICAgICBjYXNlIENPTE9SX1JFRDogICAgcmV0dXJuIEZPUkVHUk9VTkRf
UkVEOwogICAgIGNhc2UgQ09MT1JfR1JFRU46ICByZXR1cm4gRk9SRUdST1VORF9HUkVFTjsKQEAg
LTI1NjEsMTEgKzI5MzQsNDIgQEAgV09SRCBHZXRDb2xvckF0dHJpYnV0ZShHVGVzdENvbG9yIGNv
bG9yKSB7CiAgIH0KIH0KIAorc3RhdGljIGludCBHZXRCaXRPZmZzZXQoV09SRCBjb2xvcl9tYXNr
KSB7CisgIGlmIChjb2xvcl9tYXNrID09IDApIHJldHVybiAwOworCisgIGludCBiaXRPZmZzZXQg
PSAwOworICB3aGlsZSAoKGNvbG9yX21hc2sgJiAxKSA9PSAwKSB7CisgICAgY29sb3JfbWFzayA+
Pj0gMTsKKyAgICArK2JpdE9mZnNldDsKKyAgfQorICByZXR1cm4gYml0T2Zmc2V0OworfQorCitz
dGF0aWMgV09SRCBHZXROZXdDb2xvcihHVGVzdENvbG9yIGNvbG9yLCBXT1JEIG9sZF9jb2xvcl9h
dHRycykgeworICAvLyBMZXQncyByZXVzZSB0aGUgQkcKKyAgc3RhdGljIGNvbnN0IFdPUkQgYmFj
a2dyb3VuZF9tYXNrID0gQkFDS0dST1VORF9CTFVFIHwgQkFDS0dST1VORF9HUkVFTiB8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJBQ0tHUk9VTkRfUkVEIHwgQkFDS0dS
T1VORF9JTlRFTlNJVFk7CisgIHN0YXRpYyBjb25zdCBXT1JEIGZvcmVncm91bmRfbWFzayA9IEZP
UkVHUk9VTkRfQkxVRSB8IEZPUkVHUk9VTkRfR1JFRU4gfAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGT1JFR1JPVU5EX1JFRCB8IEZPUkVHUk9VTkRfSU5URU5TSVRZOwor
ICBjb25zdCBXT1JEIGV4aXN0aW5nX2JnID0gb2xkX2NvbG9yX2F0dHJzICYgYmFja2dyb3VuZF9t
YXNrOworCisgIFdPUkQgbmV3X2NvbG9yID0KKyAgICAgIEdldENvbG9yQXR0cmlidXRlKGNvbG9y
KSB8IGV4aXN0aW5nX2JnIHwgRk9SRUdST1VORF9JTlRFTlNJVFk7CisgIHN0YXRpYyBjb25zdCBp
bnQgYmdfYml0T2Zmc2V0ID0gR2V0Qml0T2Zmc2V0KGJhY2tncm91bmRfbWFzayk7CisgIHN0YXRp
YyBjb25zdCBpbnQgZmdfYml0T2Zmc2V0ID0gR2V0Qml0T2Zmc2V0KGZvcmVncm91bmRfbWFzayk7
CisKKyAgaWYgKCgobmV3X2NvbG9yICYgYmFja2dyb3VuZF9tYXNrKSA+PiBiZ19iaXRPZmZzZXQp
ID09CisgICAgICAoKG5ld19jb2xvciAmIGZvcmVncm91bmRfbWFzaykgPj4gZmdfYml0T2Zmc2V0
KSkgeworICAgIG5ld19jb2xvciBePSBGT1JFR1JPVU5EX0lOVEVOU0lUWTsgIC8vIGludmVydCBp
bnRlbnNpdHkKKyAgfQorICByZXR1cm4gbmV3X2NvbG9yOworfQorCiAjZWxzZQogCiAvLyBSZXR1
cm5zIHRoZSBBTlNJIGNvbG9yIGNvZGUgZm9yIHRoZSBnaXZlbiBjb2xvci4gIENPTE9SX0RFRkFV
TFQgaXMKIC8vIGFuIGludmFsaWQgaW5wdXQuCi1jb25zdCBjaGFyKiBHZXRBbnNpQ29sb3JDb2Rl
KEdUZXN0Q29sb3IgY29sb3IpIHsKK3N0YXRpYyBjb25zdCBjaGFyKiBHZXRBbnNpQ29sb3JDb2Rl
KEdUZXN0Q29sb3IgY29sb3IpIHsKICAgc3dpdGNoIChjb2xvcikgewogICAgIGNhc2UgQ09MT1Jf
UkVEOiAgICAgcmV0dXJuICIxIjsKICAgICBjYXNlIENPTE9SX0dSRUVOOiAgIHJldHVybiAiMiI7
CkBAIC0yNTgxLDcgKzI5ODUsNyBAQCBib29sIFNob3VsZFVzZUNvbG9yKGJvb2wgc3Rkb3V0X2lz
X3R0eSkgewogICBjb25zdCBjaGFyKiBjb25zdCBndGVzdF9jb2xvciA9IEdURVNUX0ZMQUcoY29s
b3IpLmNfc3RyKCk7CiAKICAgaWYgKFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFs
cyhndGVzdF9jb2xvciwgImF1dG8iKSkgewotI2lmIEdURVNUX09TX1dJTkRPV1MKKyNpZiBHVEVT
VF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX01JTkdXCiAgICAgLy8gT24gV2luZG93
cyB0aGUgVEVSTSB2YXJpYWJsZSBpcyB1c3VhbGx5IG5vdCBzZXQsIGJ1dCB0aGUKICAgICAvLyBj
b25zb2xlIHRoZXJlIGRvZXMgc3VwcG9ydCBjb2xvcnMuCiAgICAgcmV0dXJuIHN0ZG91dF9pc190
dHk7CkBAIC0yNTkyLDYgKzI5OTYsMTIgQEAgYm9vbCBTaG91bGRVc2VDb2xvcihib29sIHN0ZG91
dF9pc190dHkpIHsKICAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJ4dGVybSIp
IHx8CiAgICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAieHRlcm0tY29sb3IiKSB8
fAogICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgInh0ZXJtLTI1NmNvbG9yIikg
fHwKKyAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJzY3JlZW4iKSB8fAorICAg
ICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgInNjcmVlbi0yNTZjb2xvciIpIHx8Cisg
ICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAidG11eCIpIHx8CisgICAgICAgIFN0
cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAidG11eC0yNTZjb2xvciIpIHx8CisgICAgICAgIFN0
cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAicnh2dC11bmljb2RlIikgfHwKKyAgICAgICAgU3Ry
aW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJyeHZ0LXVuaWNvZGUtMjU2Y29sb3IiKSB8fAogICAg
ICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgImxpbnV4IikgfHwKICAgICAgICAgU3Ry
aW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJjeWd3aW4iKTsKICAgICByZXR1cm4gc3Rkb3V0X2lz
X3R0eSAmJiB0ZXJtX3N1cHBvcnRzX2NvbG9yOwpAQCAtMjYxMSwxMiArMzAyMSwxMyBAQCBib29s
IFNob3VsZFVzZUNvbG9yKGJvb2wgc3Rkb3V0X2lzX3R0eSkgewogLy8gY2Fubm90IHNpbXBseSBl
bWl0IHNwZWNpYWwgY2hhcmFjdGVycyBhbmQgaGF2ZSB0aGUgdGVybWluYWwgY2hhbmdlIGNvbG9y
cy4KIC8vIFRoaXMgcm91dGluZSBtdXN0IGFjdHVhbGx5IGVtaXQgdGhlIGNoYXJhY3RlcnMgcmF0
aGVyIHRoYW4gcmV0dXJuIGEgc3RyaW5nCiAvLyB0aGF0IHdvdWxkIGJlIGNvbG9yZWQgd2hlbiBw
cmludGVkLCBhcyBjYW4gYmUgZG9uZSBvbiBMaW51eC4KLXZvaWQgQ29sb3JlZFByaW50ZihHVGVz
dENvbG9yIGNvbG9yLCBjb25zdCBjaGFyKiBmbXQsIC4uLikgeworc3RhdGljIHZvaWQgQ29sb3Jl
ZFByaW50ZihHVGVzdENvbG9yIGNvbG9yLCBjb25zdCBjaGFyKiBmbXQsIC4uLikgewogICB2YV9s
aXN0IGFyZ3M7CiAgIHZhX3N0YXJ0KGFyZ3MsIGZtdCk7CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dT
X01PQklMRSB8fCBHVEVTVF9PU19TWU1CSUFOIHx8IEdURVNUX09TX1pPUwotICBjb25zdCBib29s
IHVzZV9jb2xvciA9IGZhbHNlOworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNU
X09TX1NZTUJJQU4gfHwgR1RFU1RfT1NfWk9TIHx8IFwKKyAgICBHVEVTVF9PU19JT1MgfHwgR1RF
U1RfT1NfV0lORE9XU19QSE9ORSB8fCBHVEVTVF9PU19XSU5ET1dTX1JUCisgIGNvbnN0IGJvb2wg
dXNlX2NvbG9yID0gQWx3YXlzRmFsc2UoKTsKICNlbHNlCiAgIHN0YXRpYyBjb25zdCBib29sIGlu
X2NvbG9yX21vZGUgPQogICAgICAgU2hvdWxkVXNlQ29sb3IocG9zaXg6OklzQVRUWShwb3NpeDo6
RmlsZU5vKHN0ZG91dCkpICE9IDApOwpAQCAtMjYzMCwyMCArMzA0MSwyMiBAQCB2b2lkIENvbG9y
ZWRQcmludGYoR1Rlc3RDb2xvciBjb2xvciwgY29uc3QgY2hhciogZm10LCAuLi4pIHsKICAgICBy
ZXR1cm47CiAgIH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFCisjaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUg
JiYgXAorICAgICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JU
ICYmICFHVEVTVF9PU19XSU5ET1dTX01JTkdXCiAgIGNvbnN0IEhBTkRMRSBzdGRvdXRfaGFuZGxl
ID0gR2V0U3RkSGFuZGxlKFNURF9PVVRQVVRfSEFORExFKTsKIAogICAvLyBHZXRzIHRoZSBjdXJy
ZW50IHRleHQgY29sb3IuCiAgIENPTlNPTEVfU0NSRUVOX0JVRkZFUl9JTkZPIGJ1ZmZlcl9pbmZv
OwogICBHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbyhzdGRvdXRfaGFuZGxlLCAmYnVmZmVyX2lu
Zm8pOwogICBjb25zdCBXT1JEIG9sZF9jb2xvcl9hdHRycyA9IGJ1ZmZlcl9pbmZvLndBdHRyaWJ1
dGVzOworICBjb25zdCBXT1JEIG5ld19jb2xvciA9IEdldE5ld0NvbG9yKGNvbG9yLCBvbGRfY29s
b3JfYXR0cnMpOwogCiAgIC8vIFdlIG5lZWQgdG8gZmx1c2ggdGhlIHN0cmVhbSBidWZmZXJzIGlu
dG8gdGhlIGNvbnNvbGUgYmVmb3JlIGVhY2gKICAgLy8gU2V0Q29uc29sZVRleHRBdHRyaWJ1dGUg
Y2FsbCBsZXN0IGl0IGFmZmVjdCB0aGUgdGV4dCB0aGF0IGlzIGFscmVhZHkKICAgLy8gcHJpbnRl
ZCBidXQgaGFzIG5vdCB5ZXQgcmVhY2hlZCB0aGUgY29uc29sZS4KICAgZmZsdXNoKHN0ZG91dCk7
Ci0gIFNldENvbnNvbGVUZXh0QXR0cmlidXRlKHN0ZG91dF9oYW5kbGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIEdldENvbG9yQXR0cmlidXRlKGNvbG9yKSB8IEZPUkVHUk9VTkRfSU5URU5T
SVRZKTsKKyAgU2V0Q29uc29sZVRleHRBdHRyaWJ1dGUoc3Rkb3V0X2hhbmRsZSwgbmV3X2NvbG9y
KTsKKwogICB2cHJpbnRmKGZtdCwgYXJncyk7CiAKICAgZmZsdXNoKHN0ZG91dCk7CkBAIC0yNjU3
LDYgKzMwNzAsMjggQEAgdm9pZCBDb2xvcmVkUHJpbnRmKEdUZXN0Q29sb3IgY29sb3IsIGNvbnN0
IGNoYXIqIGZtdCwgLi4uKSB7CiAgIHZhX2VuZChhcmdzKTsKIH0KIAorLy8gVGV4dCBwcmludGVk
IGluIEdvb2dsZSBUZXN0J3MgdGV4dCBvdXRwdXQgYW5kIC0tZ3Rlc3RfbGlzdF90ZXN0cworLy8g
b3V0cHV0IHRvIGxhYmVsIHRoZSB0eXBlIHBhcmFtZXRlciBhbmQgdmFsdWUgcGFyYW1ldGVyIGZv
ciBhIHRlc3QuCitzdGF0aWMgY29uc3QgY2hhciBrVHlwZVBhcmFtTGFiZWxbXSA9ICJUeXBlUGFy
YW0iOworc3RhdGljIGNvbnN0IGNoYXIga1ZhbHVlUGFyYW1MYWJlbFtdID0gIkdldFBhcmFtKCki
OworCitzdGF0aWMgdm9pZCBQcmludEZ1bGxUZXN0Q29tbWVudElmUHJlc2VudChjb25zdCBUZXN0
SW5mbyYgdGVzdF9pbmZvKSB7CisgIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVfcGFyYW0gPSB0ZXN0
X2luZm8udHlwZV9wYXJhbSgpOworICBjb25zdCBjaGFyKiBjb25zdCB2YWx1ZV9wYXJhbSA9IHRl
c3RfaW5mby52YWx1ZV9wYXJhbSgpOworCisgIGlmICh0eXBlX3BhcmFtICE9IE5VTEwgfHwgdmFs
dWVfcGFyYW0gIT0gTlVMTCkgeworICAgIHByaW50ZigiLCB3aGVyZSAiKTsKKyAgICBpZiAodHlw
ZV9wYXJhbSAhPSBOVUxMKSB7CisgICAgICBwcmludGYoIiVzID0gJXMiLCBrVHlwZVBhcmFtTGFi
ZWwsIHR5cGVfcGFyYW0pOworICAgICAgaWYgKHZhbHVlX3BhcmFtICE9IE5VTEwpCisgICAgICAg
IHByaW50ZigiIGFuZCAiKTsKKyAgICB9CisgICAgaWYgKHZhbHVlX3BhcmFtICE9IE5VTEwpIHsK
KyAgICAgIHByaW50ZigiJXMgPSAlcyIsIGtWYWx1ZVBhcmFtTGFiZWwsIHZhbHVlX3BhcmFtKTsK
KyAgICB9CisgIH0KK30KKwogLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBUZXN0RXZlbnRM
aXN0ZW5lciBpbnRlcmZhY2UuCiAvLwogLy8gQ2xhc3MgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmlu
dGVyIGlzIGNvcHlhYmxlLgpAQCAtMjY4NCw4ICszMTE5LDYgQEAgY2xhc3MgUHJldHR5VW5pdFRl
c3RSZXN1bHRQcmludGVyIDogcHVibGljIFRlc3RFdmVudExpc3RlbmVyIHsKIAogIHByaXZhdGU6
CiAgIHN0YXRpYyB2b2lkIFByaW50RmFpbGVkVGVzdHMoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVz
dCk7Ci0KLSAgaW50ZXJuYWw6OlN0cmluZyB0ZXN0X2Nhc2VfbmFtZV87CiB9OwogCiAgIC8vIEZp
cmVkIGJlZm9yZSBlYWNoIGl0ZXJhdGlvbiBvZiB0ZXN0cyBzdGFydHMuCkBAIC0yNjk4LDE1ICsz
MTMxLDE2IEBAIHZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RJdGVyYXRp
b25TdGFydCgKIAogICAvLyBQcmludHMgdGhlIGZpbHRlciBpZiBpdCdzIG5vdCAqLiAgVGhpcyBy
ZW1pbmRzIHRoZSB1c2VyIHRoYXQgc29tZQogICAvLyB0ZXN0cyBtYXkgYmUgc2tpcHBlZC4KLSAg
aWYgKCFpbnRlcm5hbDo6U3RyaW5nOjpDU3RyaW5nRXF1YWxzKGZpbHRlciwga1VuaXZlcnNhbEZp
bHRlcikpIHsKKyAgaWYgKCFTdHJpbmc6OkNTdHJpbmdFcXVhbHMoZmlsdGVyLCBrVW5pdmVyc2Fs
RmlsdGVyKSkgewogICAgIENvbG9yZWRQcmludGYoQ09MT1JfWUVMTE9XLAogICAgICAgICAgICAg
ICAgICAgIk5vdGU6ICVzIGZpbHRlciA9ICVzXG4iLCBHVEVTVF9OQU1FXywgZmlsdGVyKTsKICAg
fQogCiAgIGlmIChpbnRlcm5hbDo6U2hvdWxkU2hhcmQoa1Rlc3RUb3RhbFNoYXJkcywga1Rlc3RT
aGFyZEluZGV4LCBmYWxzZSkpIHsKKyAgICBjb25zdCBJbnQzMiBzaGFyZF9pbmRleCA9IEludDMy
RnJvbUVudk9yRGllKGtUZXN0U2hhcmRJbmRleCwgLTEpOwogICAgIENvbG9yZWRQcmludGYoQ09M
T1JfWUVMTE9XLAotICAgICAgICAgICAgICAgICAgIk5vdGU6IFRoaXMgaXMgdGVzdCBzaGFyZCAl
cyBvZiAlcy5cbiIsCi0gICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cG9zaXg6OkdldEVudihr
VGVzdFNoYXJkSW5kZXgpLAorICAgICAgICAgICAgICAgICAgIk5vdGU6IFRoaXMgaXMgdGVzdCBz
aGFyZCAlZCBvZiAlcy5cbiIsCisgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHNo
YXJkX2luZGV4KSArIDEsCiAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cG9zaXg6OkdldEVu
dihrVGVzdFRvdGFsU2hhcmRzKSk7CiAgIH0KIApAQCAtMjczMSwyNyArMzE2NSwyMiBAQCB2b2lk
IFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0KAog
fQogCiB2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0Q2FzZVN0YXJ0KGNv
bnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKLSAgdGVzdF9jYXNlX25hbWVfID0gdGVzdF9jYXNl
Lm5hbWUoKTsKLSAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyBjb3VudHMgPQorICBjb25zdCBzdGQ6
OnN0cmluZyBjb3VudHMgPQogICAgICAgRm9ybWF0Q291bnRhYmxlTm91bih0ZXN0X2Nhc2UudGVz
dF90b19ydW5fY291bnQoKSwgInRlc3QiLCAidGVzdHMiKTsKICAgQ29sb3JlZFByaW50ZihDT0xP
Ul9HUkVFTiwgIlstLS0tLS0tLS0tXSAiKTsKLSAgcHJpbnRmKCIlcyBmcm9tICVzIiwgY291bnRz
LmNfc3RyKCksIHRlc3RfY2FzZV9uYW1lXy5jX3N0cigpKTsKLSAgaWYgKHRlc3RfY2FzZS5jb21t
ZW50KClbMF0gPT0gJ1wwJykgeworICBwcmludGYoIiVzIGZyb20gJXMiLCBjb3VudHMuY19zdHIo
KSwgdGVzdF9jYXNlLm5hbWUoKSk7CisgIGlmICh0ZXN0X2Nhc2UudHlwZV9wYXJhbSgpID09IE5V
TEwpIHsKICAgICBwcmludGYoIlxuIik7CiAgIH0gZWxzZSB7Ci0gICAgcHJpbnRmKCIsIHdoZXJl
ICVzXG4iLCB0ZXN0X2Nhc2UuY29tbWVudCgpKTsKKyAgICBwcmludGYoIiwgd2hlcmUgJXMgPSAl
c1xuIiwga1R5cGVQYXJhbUxhYmVsLCB0ZXN0X2Nhc2UudHlwZV9wYXJhbSgpKTsKICAgfQogICBm
Zmx1c2goc3Rkb3V0KTsKIH0KIAogdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9u
VGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKICAgQ29sb3JlZFByaW50ZihD
T0xPUl9HUkVFTiwgICJbIFJVTiAgICAgIF0gIik7Ci0gIFByaW50VGVzdE5hbWUodGVzdF9jYXNl
X25hbWVfLmNfc3RyKCksIHRlc3RfaW5mby5uYW1lKCkpOwotICBpZiAodGVzdF9pbmZvLmNvbW1l
bnQoKVswXSA9PSAnXDAnKSB7Ci0gICAgcHJpbnRmKCJcbiIpOwotICB9IGVsc2UgewotICAgIHBy
aW50ZigiLCB3aGVyZSAlc1xuIiwgdGVzdF9pbmZvLmNvbW1lbnQoKSk7Ci0gIH0KKyAgUHJpbnRU
ZXN0TmFtZSh0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7Cisg
IHByaW50ZigiXG4iKTsKICAgZmZsdXNoKHN0ZG91dCk7CiB9CiAKQEAgLTI3NzMsNyArMzIwMiwx
MCBAQCB2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0RW5kKGNvbnN0IFRl
c3RJbmZvJiB0ZXN0X2luZm8pIHsKICAgfSBlbHNlIHsKICAgICBDb2xvcmVkUHJpbnRmKENPTE9S
X1JFRCwgIlsgIEZBSUxFRCAgXSAiKTsKICAgfQotICBQcmludFRlc3ROYW1lKHRlc3RfY2FzZV9u
YW1lXy5jX3N0cigpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgUHJpbnRUZXN0TmFtZSh0ZXN0X2lu
Zm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7CisgIGlmICh0ZXN0X2luZm8u
cmVzdWx0KCktPkZhaWxlZCgpKQorICAgIFByaW50RnVsbFRlc3RDb21tZW50SWZQcmVzZW50KHRl
c3RfaW5mbyk7CisKICAgaWYgKEdURVNUX0ZMQUcocHJpbnRfdGltZSkpIHsKICAgICBwcmludGYo
IiAoJXMgbXMpXG4iLCBpbnRlcm5hbDo6U3RyZWFtYWJsZVRvU3RyaW5nKAogICAgICAgICAgICB0
ZXN0X2luZm8ucmVzdWx0KCktPmVsYXBzZWRfdGltZSgpKS5jX3N0cigpKTsKQEAgLTI3ODYsMTIg
KzMyMTgsMTEgQEAgdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdEVuZChj
b25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CiB2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJp
bnRlcjo6T25UZXN0Q2FzZUVuZChjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKSB7CiAgIGlmICgh
R1RFU1RfRkxBRyhwcmludF90aW1lKSkgcmV0dXJuOwogCi0gIHRlc3RfY2FzZV9uYW1lXyA9IHRl
c3RfY2FzZS5uYW1lKCk7Ci0gIGNvbnN0IGludGVybmFsOjpTdHJpbmcgY291bnRzID0KKyAgY29u
c3Qgc3RkOjpzdHJpbmcgY291bnRzID0KICAgICAgIEZvcm1hdENvdW50YWJsZU5vdW4odGVzdF9j
YXNlLnRlc3RfdG9fcnVuX2NvdW50KCksICJ0ZXN0IiwgInRlc3RzIik7CiAgIENvbG9yZWRQcmlu
dGYoQ09MT1JfR1JFRU4sICJbLS0tLS0tLS0tLV0gIik7CiAgIHByaW50ZigiJXMgZnJvbSAlcyAo
JXMgbXMgdG90YWwpXG5cbiIsCi0gICAgICAgICBjb3VudHMuY19zdHIoKSwgdGVzdF9jYXNlX25h
bWVfLmNfc3RyKCksCisgICAgICAgICBjb3VudHMuY19zdHIoKSwgdGVzdF9jYXNlLm5hbWUoKSwK
ICAgICAgICAgIGludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcodGVzdF9jYXNlLmVsYXBzZWRf
dGltZSgpKS5jX3N0cigpKTsKICAgZmZsdXNoKHN0ZG91dCk7CiB9CkBAIC0yODIyLDIxICszMjUz
LDE0IEBAIHZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludEZhaWxlZFRlc3Rz
KGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpIHsKICAgICAgIH0KICAgICAgIENvbG9yZWRQcmlu
dGYoQ09MT1JfUkVELCAiWyAgRkFJTEVEICBdICIpOwogICAgICAgcHJpbnRmKCIlcy4lcyIsIHRl
c3RfY2FzZS5uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOwotICAgICAgaWYgKHRlc3RfY2FzZS5j
b21tZW50KClbMF0gIT0gJ1wwJyB8fAotICAgICAgICAgIHRlc3RfaW5mby5jb21tZW50KClbMF0g
IT0gJ1wwJykgewotICAgICAgICBwcmludGYoIiwgd2hlcmUgJXMiLCB0ZXN0X2Nhc2UuY29tbWVu
dCgpKTsKLSAgICAgICAgaWYgKHRlc3RfY2FzZS5jb21tZW50KClbMF0gIT0gJ1wwJyAmJgotICAg
ICAgICAgICAgdGVzdF9pbmZvLmNvbW1lbnQoKVswXSAhPSAnXDAnKSB7Ci0gICAgICAgICAgcHJp
bnRmKCIgYW5kICIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBwcmludGYoIiVzXG4iLCB0
ZXN0X2luZm8uY29tbWVudCgpKTsKKyAgICAgIFByaW50RnVsbFRlc3RDb21tZW50SWZQcmVzZW50
KHRlc3RfaW5mbyk7CisgICAgICBwcmludGYoIlxuIik7CiAgICAgfQogICB9CiB9CiAKLSB2b2lk
IFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVu
aXRUZXN0JiB1bml0X3Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgLyppdGVyYXRpb24qLykgewordm9pZCBQcmV0dHlVbml0VGVz
dFJlc3VsdFByaW50ZXI6Ok9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgLyppdGVyYXRpb24qLykgewogICBDb2xvcmVkUHJpbnRmKENPTE9SX0dSRUVOLCAgIls9
PT09PT09PT09XSAiKTsKICAgcHJpbnRmKCIlcyBmcm9tICVzIHJhbi4iLAogICAgICAgICAgRm9y
bWF0VGVzdENvdW50KHVuaXRfdGVzdC50ZXN0X3RvX3J1bl9jb3VudCgpKS5jX3N0cigpLApAQCAt
Mjg1OSw3ICszMjgzLDcgQEAgdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6OlByaW50
RmFpbGVkVGVzdHMoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgbnVtX2ZhaWx1cmVzID09IDEgPyAiVEVTVCIgOiAiVEVTVFMiKTsKICAgfQogCi0g
IGludCBudW1fZGlzYWJsZWQgPSB1bml0X3Rlc3QuZGlzYWJsZWRfdGVzdF9jb3VudCgpOworICBp
bnQgbnVtX2Rpc2FibGVkID0gdW5pdF90ZXN0LnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3Vu
dCgpOwogICBpZiAobnVtX2Rpc2FibGVkICYmICFHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVk
X3Rlc3RzKSkgewogICAgIGlmICghbnVtX2ZhaWx1cmVzKSB7CiAgICAgICBwcmludGYoIlxuIik7
ICAvLyBBZGQgYSBzcGFjZXIgaWYgbm8gRkFJTFVSRSBiYW5uZXIgaXMgZGlzcGxheWVkLgpAQCAt
MjkyMiw3ICszMzQ2LDcgQEAgdm9pZCBUZXN0RXZlbnRSZXBlYXRlcjo6QXBwZW5kKFRlc3RFdmVu
dExpc3RlbmVyICpsaXN0ZW5lcikgewogICBsaXN0ZW5lcnNfLnB1c2hfYmFjayhsaXN0ZW5lcik7
CiB9CiAKLS8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEZhY3RvciB0aGUgc2VhcmNoIGZ1bmN0
aW9uYWxpdHkgaW50byBWZWN0b3I6OkZpbmQuCisvLyBGSVhNRTogRmFjdG9yIHRoZSBzZWFyY2gg
ZnVuY3Rpb25hbGl0eSBpbnRvIFZlY3Rvcjo6RmluZC4KIFRlc3RFdmVudExpc3RlbmVyKiBUZXN0
RXZlbnRSZXBlYXRlcjo6UmVsZWFzZShUZXN0RXZlbnRMaXN0ZW5lciAqbGlzdGVuZXIpIHsKICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0ZW5lcnNfLnNpemUoKTsgKytpKSB7CiAgICAgaWYg
KGxpc3RlbmVyc19baV0gPT0gbGlzdGVuZXIpIHsKQEAgLTI5OTYsNiArMzQyMCwxMSBAQCBjbGFz
cyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5l
ciB7CiAgIGV4cGxpY2l0IFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcihjb25zdCBjaGFyKiBvdXRw
dXRfZmlsZSk7CiAKICAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0
VGVzdCYgdW5pdF90ZXN0LCBpbnQgaXRlcmF0aW9uKTsKKyAgdm9pZCBMaXN0VGVzdHNNYXRjaGlu
Z0ZpbHRlcihjb25zdCBzdGQ6OnZlY3RvcjxUZXN0Q2FzZSo+JiB0ZXN0X2Nhc2VzKTsKKworICAv
LyBQcmludHMgYW4gWE1MIHN1bW1hcnkgb2YgYWxsIHVuaXQgdGVzdHMuCisgIHN0YXRpYyB2b2lk
IFByaW50WG1sVGVzdHNMaXN0KHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxUZXN0Q2FzZSo+JiB0ZXN0X2Nhc2Vz
KTsKIAogIHByaXZhdGU6CiAgIC8vIElzIGMgYSB3aGl0ZXNwYWNlIGNoYXJhY3RlciB0aGF0IGlz
IG5vcm1hbGl6ZWQgdG8gYSBzcGFjZSBjaGFyYWN0ZXIKQEAgLTMwMTMsMTggKzM0NDIsMjcgQEAg
Y2xhc3MgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlz
dGVuZXIgewogICAvLyBpc19hdHRyaWJ1dGUgaXMgdHJ1ZSwgdGhlIHRleHQgaXMgbWVhbnQgdG8g
YXBwZWFyIGFzIGFuIGF0dHJpYnV0ZQogICAvLyB2YWx1ZSwgYW5kIG5vcm1hbGl6YWJsZSB3aGl0
ZXNwYWNlIGlzIHByZXNlcnZlZCBieSByZXBsYWNpbmcgaXQKICAgLy8gd2l0aCBjaGFyYWN0ZXIg
cmVmZXJlbmNlcy4KLSAgc3RhdGljIFN0cmluZyBFc2NhcGVYbWwoY29uc3QgY2hhciogc3RyLCBi
b29sIGlzX2F0dHJpYnV0ZSk7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFc2NhcGVYbWwoY29uc3Qg
c3RkOjpzdHJpbmcmIHN0ciwgYm9vbCBpc19hdHRyaWJ1dGUpOwogCiAgIC8vIFJldHVybnMgdGhl
IGdpdmVuIHN0cmluZyB3aXRoIGFsbCBjaGFyYWN0ZXJzIGludmFsaWQgaW4gWE1MIHJlbW92ZWQu
Ci0gIHN0YXRpYyBTdHJpbmcgUmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoY29uc3QgY2hhciog
c3RyKTsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIFJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGNv
bnN0IHN0ZDo6c3RyaW5nJiBzdHIpOwogCiAgIC8vIENvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5k
IEVzY2FwZVhtbCB3aGVuIHN0ciBpcyBhbiBhdHRyaWJ1dGUgdmFsdWUuCi0gIHN0YXRpYyBTdHJp
bmcgRXNjYXBlWG1sQXR0cmlidXRlKGNvbnN0IGNoYXIqIHN0cikgeworICBzdGF0aWMgc3RkOjpz
dHJpbmcgRXNjYXBlWG1sQXR0cmlidXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKICAgICBy
ZXR1cm4gRXNjYXBlWG1sKHN0ciwgdHJ1ZSk7CiAgIH0KIAogICAvLyBDb252ZW5pZW5jZSB3cmFw
cGVyIGFyb3VuZCBFc2NhcGVYbWwgd2hlbiBzdHIgaXMgbm90IGFuIGF0dHJpYnV0ZSB2YWx1ZS4K
LSAgc3RhdGljIFN0cmluZyBFc2NhcGVYbWxUZXh0KGNvbnN0IGNoYXIqIHN0cikgeyByZXR1cm4g
RXNjYXBlWG1sKHN0ciwgZmFsc2UpOyB9CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFc2NhcGVYbWxU
ZXh0KGNvbnN0IGNoYXIqIHN0cikgeworICAgIHJldHVybiBFc2NhcGVYbWwoc3RyLCBmYWxzZSk7
CisgIH0KKworICAvLyBWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBhdHRyaWJ1dGUgYmVsb25ncyB0
byB0aGUgZ2l2ZW4gZWxlbWVudCBhbmQKKyAgLy8gc3RyZWFtcyB0aGUgYXR0cmlidXRlIGFzIFhN
TC4KKyAgc3RhdGljIHZvaWQgT3V0cHV0WG1sQXR0cmlidXRlKHN0ZDo6b3N0cmVhbSogc3RyZWFt
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGVs
ZW1lbnRfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHZhbHVlKTsKIAogICAvLyBTdHJlYW1zIGFuIFhNTCBDREFUQSBzZWN0aW9uLCBl
c2NhcGluZyBpbnZhbGlkIENEQVRBIHNlcXVlbmNlcyBhcyBuZWVkZWQuCiAgIHN0YXRpYyB2b2lk
IE91dHB1dFhtbENEYXRhU2VjdGlvbig6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLCBjb25zdCBjaGFy
KiBkYXRhKTsKQEAgLTMwMzUsMTkgKzM0NzMsMjYgQEAgY2xhc3MgWG1sVW5pdFRlc3RSZXN1bHRQ
cmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKTsKIAogICAvLyBQcmlu
dHMgYW4gWE1MIHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdENhc2Ugb2JqZWN0Ci0gIHN0YXRpYyB2
b2lkIFByaW50WG1sVGVzdENhc2UoRklMRSogb3V0LCBjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNl
KTsKKyAgc3RhdGljIHZvaWQgUHJpbnRYbWxUZXN0Q2FzZSg6OnN0ZDo6b3N0cmVhbSogc3RyZWFt
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nh
c2UpOwogCiAgIC8vIFByaW50cyBhbiBYTUwgc3VtbWFyeSBvZiB1bml0X3Rlc3QgdG8gb3V0cHV0
IHN0cmVhbSBvdXQuCi0gIHN0YXRpYyB2b2lkIFByaW50WG1sVW5pdFRlc3QoRklMRSogb3V0LCBj
b25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KTsKKyAgc3RhdGljIHZvaWQgUHJpbnRYbWxVbml0VGVz
dCg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpOwogCiAgIC8vIFByb2R1Y2VzIGEgc3RyaW5nIHJl
cHJlc2VudGluZyB0aGUgdGVzdCBwcm9wZXJ0aWVzIGluIGEgcmVzdWx0IGFzIHNwYWNlCiAgIC8v
IGRlbGltaXRlZCBYTUwgYXR0cmlidXRlcyBiYXNlZCBvbiB0aGUgcHJvcGVydHkga2V5PSJ2YWx1
ZSIgcGFpcnMuCi0gIC8vIFdoZW4gdGhlIFN0cmluZyBpcyBub3QgZW1wdHksIGl0IGluY2x1ZGVz
IGEgc3BhY2UgYXQgdGhlIGJlZ2lubmluZywKKyAgLy8gV2hlbiB0aGUgc3RkOjpzdHJpbmcgaXMg
bm90IGVtcHR5LCBpdCBpbmNsdWRlcyBhIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcsCiAgIC8vIHRv
IGRlbGltaXQgdGhpcyBhdHRyaWJ1dGUgZnJvbSBwcmlvciBhdHRyaWJ1dGVzLgotICBzdGF0aWMg
U3RyaW5nIFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKGNvbnN0IFRlc3RSZXN1bHQmIHJl
c3VsdCk7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBUZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRl
cyhjb25zdCBUZXN0UmVzdWx0JiByZXN1bHQpOworCisgIC8vIFN0cmVhbXMgYW4gWE1MIHJlcHJl
c2VudGF0aW9uIG9mIHRoZSB0ZXN0IHByb3BlcnRpZXMgb2YgYSBUZXN0UmVzdWx0CisgIC8vIG9i
amVjdC4KKyAgc3RhdGljIHZvaWQgT3V0cHV0WG1sVGVzdFByb3BlcnRpZXMoc3RkOjpvc3RyZWFt
KiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRl
c3RSZXN1bHQmIHJlc3VsdCk7CiAKICAgLy8gVGhlIG91dHB1dCBmaWxlLgotICBjb25zdCBTdHJp
bmcgb3V0cHV0X2ZpbGVfOworICBjb25zdCBzdGQ6OnN0cmluZyBvdXRwdXRfZmlsZV87CiAKICAg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIp
OwogfTsKQEAgLTMwNTUsNDEgKzM1MDAsMjcgQEAgY2xhc3MgWG1sVW5pdFRlc3RSZXN1bHRQcmlu
dGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewogLy8gQ3JlYXRlcyBhIG5ldyBY
bWxVbml0VGVzdFJlc3VsdFByaW50ZXIuCiBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlhtbFVu
aXRUZXN0UmVzdWx0UHJpbnRlcihjb25zdCBjaGFyKiBvdXRwdXRfZmlsZSkKICAgICA6IG91dHB1
dF9maWxlXyhvdXRwdXRfZmlsZSkgewotICBpZiAob3V0cHV0X2ZpbGVfLmNfc3RyKCkgPT0gTlVM
TCB8fCBvdXRwdXRfZmlsZV8uZW1wdHkoKSkgewotICAgIGZwcmludGYoc3RkZXJyLCAiWE1MIG91
dHB1dCBmaWxlIG1heSBub3QgYmUgbnVsbFxuIik7Ci0gICAgZmZsdXNoKHN0ZGVycik7Ci0gICAg
ZXhpdChFWElUX0ZBSUxVUkUpOworICBpZiAob3V0cHV0X2ZpbGVfLmVtcHR5KCkpIHsKKyAgICBH
VEVTVF9MT0dfKEZBVEFMKSA8PCAiWE1MIG91dHB1dCBmaWxlIG1heSBub3QgYmUgbnVsbCI7CiAg
IH0KIH0KIAogLy8gQ2FsbGVkIGFmdGVyIHRoZSB1bml0IHRlc3QgZW5kcy4KIHZvaWQgWG1sVW5p
dFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVu
aXRfdGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IC8qaXRlcmF0aW9uKi8pIHsKLSAgRklMRSogeG1sb3V0ID0gTlVMTDsKLSAgRmlsZVBh
dGggb3V0cHV0X2ZpbGUob3V0cHV0X2ZpbGVfKTsKLSAgRmlsZVBhdGggb3V0cHV0X2RpcihvdXRw
dXRfZmlsZS5SZW1vdmVGaWxlTmFtZSgpKTsKKyAgRklMRSogeG1sb3V0ID0gT3BlbkZpbGVGb3JX
cml0aW5nKG91dHB1dF9maWxlXyk7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgUHJp
bnRYbWxVbml0VGVzdCgmc3RyZWFtLCB1bml0X3Rlc3QpOworICBmcHJpbnRmKHhtbG91dCwgIiVz
IiwgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnN0cmVhbSkuY19zdHIoKSk7CisgIGZjbG9zZSh4bWxv
dXQpOworfQogCi0gIGlmIChvdXRwdXRfZGlyLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHko
KSkgewotICAgIHhtbG91dCA9IHBvc2l4OjpGT3BlbihvdXRwdXRfZmlsZV8uY19zdHIoKSwgInci
KTsKLSAgfQotICBpZiAoeG1sb3V0ID09IE5VTEwpIHsKLSAgICAvLyBUT0RPKHdhbik6IHJlcG9y
dCB0aGUgcmVhc29uIG9mIHRoZSBmYWlsdXJlLgotICAgIC8vCi0gICAgLy8gV2UgZG9uJ3QgZG8g
aXQgZm9yIG5vdyBhczoKLSAgICAvLwotICAgIC8vICAgMS4gVGhlcmUgaXMgbm8gdXJnZW50IG5l
ZWQgZm9yIGl0LgotICAgIC8vICAgMi4gSXQncyBhIGJpdCBpbnZvbHZlZCB0byBtYWtlIHRoZSBl
cnJubyB2YXJpYWJsZSB0aHJlYWQtc2FmZSBvbgotICAgIC8vICAgICAgYWxsIHRocmVlIG9wZXJh
dGluZyBzeXN0ZW1zIChMaW51eCwgV2luZG93cywgYW5kIE1hYyBPUykuCi0gICAgLy8gICAzLiBU
byBpbnRlcnByZXQgdGhlIG1lYW5pbmcgb2YgZXJybm8gaW4gYSB0aHJlYWQtc2FmZSB3YXksCi0g
ICAgLy8gICAgICB3ZSBuZWVkIHRoZSBzdHJlcnJvcl9yKCkgZnVuY3Rpb24sIHdoaWNoIGlzIG5v
dCBhdmFpbGFibGUgb24KLSAgICAvLyAgICAgIFdpbmRvd3MuCi0gICAgZnByaW50ZihzdGRlcnIs
Ci0gICAgICAgICAgICAiVW5hYmxlIHRvIG9wZW4gZmlsZSBcIiVzXCJcbiIsCi0gICAgICAgICAg
ICBvdXRwdXRfZmlsZV8uY19zdHIoKSk7Ci0gICAgZmZsdXNoKHN0ZGVycik7Ci0gICAgZXhpdChF
WElUX0ZBSUxVUkUpOwotICB9Ci0gIFByaW50WG1sVW5pdFRlc3QoeG1sb3V0LCB1bml0X3Rlc3Qp
Owordm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Okxpc3RUZXN0c01hdGNoaW5nRmlsdGVy
KAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMpIHsKKyAgRklM
RSogeG1sb3V0ID0gT3BlbkZpbGVGb3JXcml0aW5nKG91dHB1dF9maWxlXyk7CisgIHN0ZDo6c3Ry
aW5nc3RyZWFtIHN0cmVhbTsKKyAgUHJpbnRYbWxUZXN0c0xpc3QoJnN0cmVhbSwgdGVzdF9jYXNl
cyk7CisgIGZwcmludGYoeG1sb3V0LCAiJXMiLCBTdHJpbmdTdHJlYW1Ub1N0cmluZygmc3RyZWFt
KS5jX3N0cigpKTsKICAgZmNsb3NlKHhtbG91dCk7CiB9CiAKQEAgLTMxMDMsNDQgKzM1MzQsNDUg
QEAgdm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdEl0ZXJhdGlvbkVuZChjb25z
dCBVbml0VGVzdCYgdW5pdF90ZXN0LAogLy8gbW9kdWxlIHdpbGwgY29uc2lzdCBvZiBvcmRpbmFy
eSBFbmdsaXNoIHRleHQuCiAvLyBJZiB0aGlzIG1vZHVsZSBpcyBldmVyIG1vZGlmaWVkIHRvIHBy
b2R1Y2UgdmVyc2lvbiAxLjEgWE1MIG91dHB1dCwKIC8vIG1vc3QgaW52YWxpZCBjaGFyYWN0ZXJz
IGNhbiBiZSByZXRhaW5lZCB1c2luZyBjaGFyYWN0ZXIgcmVmZXJlbmNlcy4KLS8vIFRPRE8od2Fu
KTogSXQgbWlnaHQgYmUgbmljZSB0byBoYXZlIGEgbWluaW1hbGx5IGludmFzaXZlLCBodW1hbi1y
ZWFkYWJsZQorLy8gRklYTUU6IEl0IG1pZ2h0IGJlIG5pY2UgdG8gaGF2ZSBhIG1pbmltYWxseSBp
bnZhc2l2ZSwgaHVtYW4tcmVhZGFibGUKIC8vIGVzY2FwaW5nIHNjaGVtZSBmb3IgaW52YWxpZCBj
aGFyYWN0ZXJzLCByYXRoZXIgdGhhbiBkcm9wcGluZyB0aGVtLgotU3RyaW5nIFhtbFVuaXRUZXN0
UmVzdWx0UHJpbnRlcjo6RXNjYXBlWG1sKGNvbnN0IGNoYXIqIHN0ciwgYm9vbCBpc19hdHRyaWJ1
dGUpIHsKK3N0ZDo6c3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6RXNjYXBlWG1sKAor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIsIGJvb2wgaXNfYXR0cmlidXRlKSB7CiAgIE1lc3Nh
Z2UgbTsKIAotICBpZiAoc3RyICE9IE5VTEwpIHsKLSAgICBmb3IgKGNvbnN0IGNoYXIqIHNyYyA9
IHN0cjsgKnNyYzsgKytzcmMpIHsKLSAgICAgIHN3aXRjaCAoKnNyYykgewotICAgICAgICBjYXNl
ICc8JzoKLSAgICAgICAgICBtIDw8ICImbHQ7IjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSAnPic6Ci0gICAgICAgICAgbSA8PCAiJmd0OyI7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgJyYnOgotICAgICAgICAgIG0gPDwgIiZhbXA7IjsKLSAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSAnXCcnOgotICAgICAgICAgIGlmIChpc19hdHRyaWJ1dGUpCi0gICAgICAg
ICAgICBtIDw8ICImYXBvczsiOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG0gPDwgJ1wn
JzsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnIic6Ci0gICAgICAgICAgaWYgKGlz
X2F0dHJpYnV0ZSkKLSAgICAgICAgICAgIG0gPDwgIiZxdW90OyI7CisgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RyLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgY2hhciBjaCA9IHN0cltpXTsK
KyAgICBzd2l0Y2ggKGNoKSB7CisgICAgICBjYXNlICc8JzoKKyAgICAgICAgbSA8PCAiJmx0OyI7
CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnPic6CisgICAgICAgIG0gPDwgIiZndDsiOwor
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJyYnOgorICAgICAgICBtIDw8ICImYW1wOyI7Cisg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnXCcnOgorICAgICAgICBpZiAoaXNfYXR0cmlidXRl
KQorICAgICAgICAgIG0gPDwgIiZhcG9zOyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBtIDw8
ICdcJyc7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnIic6CisgICAgICAgIGlmIChpc19h
dHRyaWJ1dGUpCisgICAgICAgICAgbSA8PCAiJnF1b3Q7IjsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgIG0gPDwgJyInOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGlm
IChJc1ZhbGlkWG1sQ2hhcmFjdGVyKGNoKSkgeworICAgICAgICAgIGlmIChpc19hdHRyaWJ1dGUg
JiYgSXNOb3JtYWxpemFibGVXaGl0ZXNwYWNlKGNoKSkKKyAgICAgICAgICAgIG0gPDwgIiYjeCIg
PDwgU3RyaW5nOjpGb3JtYXRCeXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkKKyAg
ICAgICAgICAgICAgPDwgIjsiOwogICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG0gPDwgJyIn
OwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgIGlmIChJc1Zh
bGlkWG1sQ2hhcmFjdGVyKCpzcmMpKSB7Ci0gICAgICAgICAgICBpZiAoaXNfYXR0cmlidXRlICYm
IElzTm9ybWFsaXphYmxlV2hpdGVzcGFjZSgqc3JjKSkKLSAgICAgICAgICAgICAgbSA8PCBTdHJp
bmc6OkZvcm1hdCgiJiN4JTAyWDsiLCB1bnNpZ25lZCgqc3JjKSk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgIG0gPDwgKnNyYzsKLSAgICAgICAgICB9Ci0gICAgICAgICAgYnJlYWs7
Ci0gICAgICB9CisgICAgICAgICAgICBtIDw8IGNoOworICAgICAgICB9CisgICAgICAgIGJyZWFr
OwogICAgIH0KICAgfQogCkBAIC0zMTUwLDIxICszNTgyLDIwIEBAIFN0cmluZyBYbWxVbml0VGVz
dFJlc3VsdFByaW50ZXI6OkVzY2FwZVhtbChjb25zdCBjaGFyKiBzdHIsIGJvb2wgaXNfYXR0cmli
dXRlKSB7CiAvLyBSZXR1cm5zIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBhbGwgY2hhcmFjdGVycyBp
bnZhbGlkIGluIFhNTCByZW1vdmVkLgogLy8gQ3VycmVudGx5IGludmFsaWQgY2hhcmFjdGVycyBh
cmUgZHJvcHBlZCBmcm9tIHRoZSBzdHJpbmcuIEFuCiAvLyBhbHRlcm5hdGl2ZSBpcyB0byByZXBs
YWNlIHRoZW0gd2l0aCBjZXJ0YWluIGNoYXJhY3RlcnMgc3VjaCBhcyAuIG9yID8uCi1TdHJpbmcg
WG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpSZW1vdmVJbnZhbGlkWG1sQ2hhcmFjdGVycyhjb25z
dCBjaGFyKiBzdHIpIHsKLSAgY2hhciogY29uc3Qgb3V0cHV0ID0gbmV3IGNoYXJbc3RybGVuKHN0
cikgKyAxXTsKLSAgY2hhciogYXBwZW5kZXIgPSBvdXRwdXQ7Ci0gIGZvciAoY2hhciBjaCA9ICpz
dHI7IGNoICE9ICdcMCc7IGNoID0gKisrc3RyKQotICAgIGlmIChJc1ZhbGlkWG1sQ2hhcmFjdGVy
KGNoKSkKLSAgICAgICphcHBlbmRlcisrID0gY2g7Ci0gICphcHBlbmRlciA9ICdcMCc7CitzdGQ6
OnN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlJlbW92ZUludmFsaWRYbWxDaGFyYWN0
ZXJzKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKKyAgc3RkOjpzdHJpbmcgb3V0cHV0
OworICBvdXRwdXQucmVzZXJ2ZShzdHIuc2l6ZSgpKTsKKyAgZm9yIChzdGQ6OnN0cmluZzo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBzdHIuYmVnaW4oKTsgaXQgIT0gc3RyLmVuZCgpOyArK2l0KQorICAg
IGlmIChJc1ZhbGlkWG1sQ2hhcmFjdGVyKCppdCkpCisgICAgICBvdXRwdXQucHVzaF9iYWNrKCpp
dCk7CiAKLSAgU3RyaW5nIHJldF92YWx1ZShvdXRwdXQpOwotICBkZWxldGVbXSBvdXRwdXQ7Ci0g
IHJldHVybiByZXRfdmFsdWU7CisgIHJldHVybiBvdXRwdXQ7CiB9CiAKIC8vIFRoZSBmb2xsb3dp
bmcgcm91dGluZXMgZ2VuZXJhdGUgYW4gWE1MIHJlcHJlc2VudGF0aW9uIG9mIGEgVW5pdFRlc3QK
IC8vIG9iamVjdC4KKy8vIEdPT0dMRVRFU1RfQ00wMDA5IERPIE5PVCBERUxFVEUKIC8vCiAvLyBU
aGlzIGlzIGhvdyBHb29nbGUgVGVzdCBjb25jZXB0cyBtYXAgdG8gdGhlIERURDoKIC8vCkBAIC0z
MTgyLDEwICszNjEzLDQxIEBAIFN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlJlbW92
ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIHN0cikgewogLy8gRm9ybWF0cyB0aGUg
Z2l2ZW4gdGltZSBpbiBtaWxsaXNlY29uZHMgYXMgc2Vjb25kcy4KIHN0ZDo6c3RyaW5nIEZvcm1h
dFRpbWVJbk1pbGxpc0FzU2Vjb25kcyhUaW1lSW5NaWxsaXMgbXMpIHsKICAgOjpzdGQ6OnN0cmlu
Z3N0cmVhbSBzczsKLSAgc3MgPDwgbXMvMTAwMC4wOworICBzcyA8PCAoc3RhdGljX2Nhc3Q8ZG91
YmxlPihtcykgKiAxZS0zKTsKICAgcmV0dXJuIHNzLnN0cigpOwogfQogCitzdGF0aWMgYm9vbCBQ
b3J0YWJsZUxvY2FsdGltZSh0aW1lX3Qgc2Vjb25kcywgc3RydWN0IHRtKiBvdXQpIHsKKyNpZiBk
ZWZpbmVkKF9NU0NfVkVSKQorICByZXR1cm4gbG9jYWx0aW1lX3Mob3V0LCAmc2Vjb25kcykgPT0g
MDsKKyNlbGlmIGRlZmluZWQoX19NSU5HVzMyX18pIHx8IGRlZmluZWQoX19NSU5HVzY0X18pCisg
IC8vIE1JTkdXIDx0aW1lLmg+IHByb3ZpZGVzIG5laXRoZXIgbG9jYWx0aW1lX3Igbm9yIGxvY2Fs
dGltZV9zLCBidXQgdXNlcworICAvLyBXaW5kb3dzJyBsb2NhbHRpbWUoKSwgd2hpY2ggaGFzIGEg
dGhyZWFkLWxvY2FsIHRtIGJ1ZmZlci4KKyAgc3RydWN0IHRtKiB0bV9wdHIgPSBsb2NhbHRpbWUo
JnNlY29uZHMpOyAgLy8gTk9MSU5UCisgIGlmICh0bV9wdHIgPT0gTlVMTCkKKyAgICByZXR1cm4g
ZmFsc2U7CisgICpvdXQgPSAqdG1fcHRyOworICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgIHJldHVy
biBsb2NhbHRpbWVfcigmc2Vjb25kcywgb3V0KSAhPSBOVUxMOworI2VuZGlmCit9CisKKy8vIENv
bnZlcnRzIHRoZSBnaXZlbiBlcG9jaCB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byBhIGRhdGUgc3Ry
aW5nIGluIHRoZSBJU08KKy8vIDg2MDEgZm9ybWF0LCB3aXRob3V0IHRoZSB0aW1lem9uZSBpbmZv
cm1hdGlvbi4KK3N0ZDo6c3RyaW5nIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKFRp
bWVJbk1pbGxpcyBtcykgeworICBzdHJ1Y3QgdG0gdGltZV9zdHJ1Y3Q7CisgIGlmICghUG9ydGFi
bGVMb2NhbHRpbWUoc3RhdGljX2Nhc3Q8dGltZV90PihtcyAvIDEwMDApLCAmdGltZV9zdHJ1Y3Qp
KQorICAgIHJldHVybiAiIjsKKyAgLy8gWVlZWS1NTS1ERFRoaDptbTpzcworICByZXR1cm4gU3Ry
ZWFtYWJsZVRvU3RyaW5nKHRpbWVfc3RydWN0LnRtX3llYXIgKyAxOTAwKSArICItIiArCisgICAg
ICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9tb24gKyAxKSArICItIiAr
CisgICAgICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9tZGF5KSArICJU
IiArCisgICAgICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9ob3VyKSAr
ICI6IiArCisgICAgICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9taW4p
ICsgIjoiICsKKyAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX3Nl
Yyk7Cit9CisKIC8vIFN0cmVhbXMgYW4gWE1MIENEQVRBIHNlY3Rpb24sIGVzY2FwaW5nIGludmFs
aWQgQ0RBVEEgc2VxdWVuY2VzIGFzIG5lZWRlZC4KIHZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmlu
dGVyOjpPdXRwdXRYbWxDRGF0YVNlY3Rpb24oOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogZGF0YSkgewpAQCAtMzIwNiw4OSArMzY2OCwxNzkgQEAgdm9pZCBYbWxVbml0VGVzdFJlc3Vs
dFByaW50ZXI6Ok91dHB1dFhtbENEYXRhU2VjdGlvbig6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAog
ICAqc3RyZWFtIDw8ICJdXT4iOwogfQogCit2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6
T3V0cHV0WG1sQXR0cmlidXRlKAorICAgIHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBlbGVtZW50X25hbWUsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUs
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSB7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiYgYWxsb3dlZF9uYW1lcyA9CisgICAgICBHZXRSZXNlcnZlZEF0dHJpYnV0ZXNG
b3JFbGVtZW50KGVsZW1lbnRfbmFtZSk7CisKKyAgR1RFU1RfQ0hFQ0tfKHN0ZDo6ZmluZChhbGxv
d2VkX25hbWVzLmJlZ2luKCksIGFsbG93ZWRfbmFtZXMuZW5kKCksIG5hbWUpICE9CisgICAgICAg
ICAgICAgICAgICAgYWxsb3dlZF9uYW1lcy5lbmQoKSkKKyAgICAgIDw8ICJBdHRyaWJ1dGUgIiA8
PCBuYW1lIDw8ICIgaXMgbm90IGFsbG93ZWQgZm9yIGVsZW1lbnQgPCIgPDwgZWxlbWVudF9uYW1l
CisgICAgICA8PCAiPi4iOworCisgICpzdHJlYW0gPDwgIiAiIDw8IG5hbWUgPDwgIj1cIiIgPDwg
RXNjYXBlWG1sQXR0cmlidXRlKHZhbHVlKSA8PCAiXCIiOworfQorCiAvLyBQcmludHMgYW4gWE1M
IHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdEluZm8gb2JqZWN0LgotLy8gVE9ETyh3YW4pOiBUaGVy
ZSBpcyBhbHNvIHZhbHVlIGluIHByaW50aW5nIHByb3BlcnRpZXMgd2l0aCB0aGUgcGxhaW4gcHJp
bnRlci4KKy8vIEZJWE1FOiBUaGVyZSBpcyBhbHNvIHZhbHVlIGluIHByaW50aW5nIHByb3BlcnRp
ZXMgd2l0aCB0aGUgcGxhaW4gcHJpbnRlci4KIHZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVy
OjpPdXRwdXRYbWxUZXN0SW5mbyg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRlc3RfY2Fz
ZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKICAgY29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0
ID0gKnRlc3RfaW5mby5yZXN1bHQoKTsKLSAgKnN0cmVhbSA8PCAiICAgIDx0ZXN0Y2FzZSBuYW1l
PVwiIgotICAgICAgICAgIDw8IEVzY2FwZVhtbEF0dHJpYnV0ZSh0ZXN0X2luZm8ubmFtZSgpKS5j
X3N0cigpCi0gICAgICAgICAgPDwgIlwiIHN0YXR1cz1cIiIKLSAgICAgICAgICA8PCAodGVzdF9p
bmZvLnNob3VsZF9ydW4oKSA/ICJydW4iIDogIm5vdHJ1biIpCi0gICAgICAgICAgPDwgIlwiIHRp
bWU9XCIiCi0gICAgICAgICAgPDwgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKHJlc3VsdC5l
bGFwc2VkX3RpbWUoKSkKLSAgICAgICAgICA8PCAiXCIgY2xhc3NuYW1lPVwiIiA8PCBFc2NhcGVY
bWxBdHRyaWJ1dGUodGVzdF9jYXNlX25hbWUpLmNfc3RyKCkKLSAgICAgICAgICA8PCAiXCIiIDw8
IFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKHJlc3VsdCkuY19zdHIoKTsKKyAgY29uc3Qg
c3RkOjpzdHJpbmcga1Rlc3RjYXNlID0gInRlc3RjYXNlIjsKKworICBpZiAodGVzdF9pbmZvLmlz
X2luX2Fub3RoZXJfc2hhcmQoKSkgeworICAgIHJldHVybjsKKyAgfQorCisgICpzdHJlYW0gPDwg
IiAgICA8dGVzdGNhc2UiOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2Us
ICJuYW1lIiwgdGVzdF9pbmZvLm5hbWUoKSk7CisKKyAgaWYgKHRlc3RfaW5mby52YWx1ZV9wYXJh
bSgpICE9IE5VTEwpIHsKKyAgICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2Us
ICJ2YWx1ZV9wYXJhbSIsCisgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfaW5mby52YWx1ZV9w
YXJhbSgpKTsKKyAgfQorICBpZiAodGVzdF9pbmZvLnR5cGVfcGFyYW0oKSAhPSBOVUxMKSB7Cisg
ICAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNlLCAidHlwZV9wYXJhbSIsIHRl
c3RfaW5mby50eXBlX3BhcmFtKCkpOworICB9CisgIGlmIChHVEVTVF9GTEFHKGxpc3RfdGVzdHMp
KSB7CisgICAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNlLCAiZmlsZSIsIHRl
c3RfaW5mby5maWxlKCkpOworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2Fz
ZSwgImxpbmUiLAorICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodGVz
dF9pbmZvLmxpbmUoKSkpOworICAgICpzdHJlYW0gPDwgIiAvPlxuIjsKKyAgICByZXR1cm47Cisg
IH0KKworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJzdGF0dXMiLAor
ICAgICAgICAgICAgICAgICAgICAgdGVzdF9pbmZvLnNob3VsZF9ydW4oKSA/ICJydW4iIDogIm5v
dHJ1biIpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJ0aW1lIiwK
KyAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyhyZXN1bHQu
ZWxhcHNlZF90aW1lKCkpKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNl
LCAiY2xhc3NuYW1lIiwgdGVzdF9jYXNlX25hbWUpOwogCiAgIGludCBmYWlsdXJlcyA9IDA7CiAg
IGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0LnRvdGFsX3BhcnRfY291bnQoKTsgKytpKSB7CiAg
ICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIHBhcnQgPSByZXN1bHQuR2V0VGVzdFBhcnRSZXN1bHQo
aSk7CiAgICAgaWYgKHBhcnQuZmFpbGVkKCkpIHsKLSAgICAgIGlmICgrK2ZhaWx1cmVzID09IDEp
CisgICAgICBpZiAoKytmYWlsdXJlcyA9PSAxKSB7CiAgICAgICAgICpzdHJlYW0gPDwgIj5cbiI7
CisgICAgICB9CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyBsb2NhdGlvbiA9CisgICAgICAgICAg
aW50ZXJuYWw6OkZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24ocGFydC5maWxl
X25hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJ0LmxpbmVfbnVtYmVyKCkpOworICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg
c3VtbWFyeSA9IGxvY2F0aW9uICsgIlxuIiArIHBhcnQuc3VtbWFyeSgpOwogICAgICAgKnN0cmVh
bSA8PCAiICAgICAgPGZhaWx1cmUgbWVzc2FnZT1cIiIKLSAgICAgICAgICAgICAgPDwgRXNjYXBl
WG1sQXR0cmlidXRlKHBhcnQuc3VtbWFyeSgpKS5jX3N0cigpCisgICAgICAgICAgICAgIDw8IEVz
Y2FwZVhtbEF0dHJpYnV0ZShzdW1tYXJ5LmNfc3RyKCkpCiAgICAgICAgICAgICAgIDw8ICJcIiB0
eXBlPVwiXCI+IjsKLSAgICAgIGNvbnN0IFN0cmluZyBtZXNzYWdlID0gUmVtb3ZlSW52YWxpZFht
bENoYXJhY3RlcnMoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICAgIiVzOiVkXG4lcyIsCi0gICAg
ICAgICAgcGFydC5maWxlX25hbWUoKSwgcGFydC5saW5lX251bWJlcigpLAotICAgICAgICAgIHBh
cnQubWVzc2FnZSgpKS5jX3N0cigpKTsKLSAgICAgIE91dHB1dFhtbENEYXRhU2VjdGlvbihzdHJl
YW0sIG1lc3NhZ2UuY19zdHIoKSk7CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyBkZXRhaWwgPSBs
b2NhdGlvbiArICJcbiIgKyBwYXJ0Lm1lc3NhZ2UoKTsKKyAgICAgIE91dHB1dFhtbENEYXRhU2Vj
dGlvbihzdHJlYW0sIFJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGRldGFpbCkuY19zdHIoKSk7
CiAgICAgICAqc3RyZWFtIDw8ICI8L2ZhaWx1cmU+XG4iOwogICAgIH0KICAgfQogCi0gIGlmIChm
YWlsdXJlcyA9PSAwKQorICBpZiAoZmFpbHVyZXMgPT0gMCAmJiByZXN1bHQudGVzdF9wcm9wZXJ0
eV9jb3VudCgpID09IDApIHsKICAgICAqc3RyZWFtIDw8ICIgLz5cbiI7Ci0gIGVsc2UKKyAgfSBl
bHNlIHsKKyAgICBpZiAoZmFpbHVyZXMgPT0gMCkgeworICAgICAgKnN0cmVhbSA8PCAiPlxuIjsK
KyAgICB9CisgICAgT3V0cHV0WG1sVGVzdFByb3BlcnRpZXMoc3RyZWFtLCByZXN1bHQpOwogICAg
ICpzdHJlYW0gPDwgIiAgICA8L3Rlc3RjYXNlPlxuIjsKKyAgfQogfQogCiAvLyBQcmludHMgYW4g
WE1MIHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdENhc2Ugb2JqZWN0Ci12b2lkIFhtbFVuaXRUZXN0
UmVzdWx0UHJpbnRlcjo6UHJpbnRYbWxUZXN0Q2FzZShGSUxFKiBvdXQsCit2b2lkIFhtbFVuaXRU
ZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRYbWxUZXN0Q2FzZShzdGQ6Om9zdHJlYW0qIHN0cmVhbSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRl
c3RDYXNlJiB0ZXN0X2Nhc2UpIHsKLSAgZnByaW50ZihvdXQsCi0gICAgICAgICAgIiAgPHRlc3Rz
dWl0ZSBuYW1lPVwiJXNcIiB0ZXN0cz1cIiVkXCIgZmFpbHVyZXM9XCIlZFwiICIKLSAgICAgICAg
ICAiZGlzYWJsZWQ9XCIlZFwiICIsCi0gICAgICAgICAgRXNjYXBlWG1sQXR0cmlidXRlKHRlc3Rf
Y2FzZS5uYW1lKCkpLmNfc3RyKCksCi0gICAgICAgICAgdGVzdF9jYXNlLnRvdGFsX3Rlc3RfY291
bnQoKSwKLSAgICAgICAgICB0ZXN0X2Nhc2UuZmFpbGVkX3Rlc3RfY291bnQoKSwKLSAgICAgICAg
ICB0ZXN0X2Nhc2UuZGlzYWJsZWRfdGVzdF9jb3VudCgpKTsKLSAgZnByaW50ZihvdXQsCi0gICAg
ICAgICAgImVycm9ycz1cIjBcIiB0aW1lPVwiJXNcIj5cbiIsCi0gICAgICAgICAgRm9ybWF0VGlt
ZUluTWlsbGlzQXNTZWNvbmRzKHRlc3RfY2FzZS5lbGFwc2VkX3RpbWUoKSkuY19zdHIoKSk7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0c3VpdGUgPSAidGVzdHN1aXRlIjsKKyAgKnN0cmVhbSA8
PCAiICA8IiA8PCBrVGVzdHN1aXRlOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVz
dHN1aXRlLCAibmFtZSIsIHRlc3RfY2FzZS5uYW1lKCkpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUo
c3RyZWFtLCBrVGVzdHN1aXRlLCAidGVzdHMiLAorICAgICAgICAgICAgICAgICAgICAgU3RyZWFt
YWJsZVRvU3RyaW5nKHRlc3RfY2FzZS5yZXBvcnRhYmxlX3Rlc3RfY291bnQoKSkpOworICBpZiAo
IUdURVNUX0ZMQUcobGlzdF90ZXN0cykpIHsKKyAgICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFt
LCBrVGVzdHN1aXRlLCAiZmFpbHVyZXMiLAorICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW1h
YmxlVG9TdHJpbmcodGVzdF9jYXNlLmZhaWxlZF90ZXN0X2NvdW50KCkpKTsKKyAgICBPdXRwdXRY
bWxBdHRyaWJ1dGUoCisgICAgICAgIHN0cmVhbSwga1Rlc3RzdWl0ZSwgImRpc2FibGVkIiwKKyAg
ICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHRlc3RfY2FzZS5yZXBvcnRhYmxlX2Rpc2FibGVkX3Rl
c3RfY291bnQoKSkpOworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUs
ICJlcnJvcnMiLCAiMCIpOworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3Vp
dGUsICJ0aW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNT
ZWNvbmRzKHRlc3RfY2FzZS5lbGFwc2VkX3RpbWUoKSkpOworICAgICpzdHJlYW0gPDwgVGVzdFBy
b3BlcnRpZXNBc1htbEF0dHJpYnV0ZXModGVzdF9jYXNlLmFkX2hvY190ZXN0X3Jlc3VsdCgpKTsK
KyAgfQorICAqc3RyZWFtIDw8ICI+XG4iOwogICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RfY2Fz
ZS50b3RhbF90ZXN0X2NvdW50KCk7ICsraSkgewotICAgIFN0clN0cmVhbSBzdHJlYW07Ci0gICAg
T3V0cHV0WG1sVGVzdEluZm8oJnN0cmVhbSwgdGVzdF9jYXNlLm5hbWUoKSwgKnRlc3RfY2FzZS5H
ZXRUZXN0SW5mbyhpKSk7Ci0gICAgZnByaW50ZihvdXQsICIlcyIsIFN0clN0cmVhbVRvU3RyaW5n
KCZzdHJlYW0pLmNfc3RyKCkpOworICAgIGlmICh0ZXN0X2Nhc2UuR2V0VGVzdEluZm8oaSktPmlz
X3JlcG9ydGFibGUoKSkKKyAgICAgIE91dHB1dFhtbFRlc3RJbmZvKHN0cmVhbSwgdGVzdF9jYXNl
Lm5hbWUoKSwgKnRlc3RfY2FzZS5HZXRUZXN0SW5mbyhpKSk7CiAgIH0KLSAgZnByaW50ZihvdXQs
ICIgIDwvdGVzdHN1aXRlPlxuIik7CisgICpzdHJlYW0gPDwgIiAgPC8iIDw8IGtUZXN0c3VpdGUg
PDwgIj5cbiI7CiB9CiAKIC8vIFByaW50cyBhbiBYTUwgc3VtbWFyeSBvZiB1bml0X3Rlc3QgdG8g
b3V0cHV0IHN0cmVhbSBvdXQuCi12b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRY
bWxVbml0VGVzdChGSUxFKiBvdXQsCit2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJp
bnRYbWxVbml0VGVzdChzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpIHsK
LSAgZnByaW50ZihvdXQsICI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwi
Pz5cbiIpOwotICBmcHJpbnRmKG91dCwKLSAgICAgICAgICAiPHRlc3RzdWl0ZXMgdGVzdHM9XCIl
ZFwiIGZhaWx1cmVzPVwiJWRcIiBkaXNhYmxlZD1cIiVkXCIgIgotICAgICAgICAgICJlcnJvcnM9
XCIwXCIgdGltZT1cIiVzXCIgIiwKLSAgICAgICAgICB1bml0X3Rlc3QudG90YWxfdGVzdF9jb3Vu
dCgpLAotICAgICAgICAgIHVuaXRfdGVzdC5mYWlsZWRfdGVzdF9jb3VudCgpLAotICAgICAgICAg
IHVuaXRfdGVzdC5kaXNhYmxlZF90ZXN0X2NvdW50KCksCi0gICAgICAgICAgRm9ybWF0VGltZUlu
TWlsbGlzQXNTZWNvbmRzKHVuaXRfdGVzdC5lbGFwc2VkX3RpbWUoKSkuY19zdHIoKSk7CisgIGNv
bnN0IHN0ZDo6c3RyaW5nIGtUZXN0c3VpdGVzID0gInRlc3RzdWl0ZXMiOworCisgICpzdHJlYW0g
PDwgIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCI/PlxuIjsKKyAgKnN0
cmVhbSA8PCAiPCIgPDwga1Rlc3RzdWl0ZXM7CisKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVh
bSwga1Rlc3RzdWl0ZXMsICJ0ZXN0cyIsCisgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxl
VG9TdHJpbmcodW5pdF90ZXN0LnJlcG9ydGFibGVfdGVzdF9jb3VudCgpKSk7CisgIE91dHB1dFht
bEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGVzLCAiZmFpbHVyZXMiLAorICAgICAgICAgICAg
ICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5mYWlsZWRfdGVzdF9jb3VudCgp
KSk7CisgIE91dHB1dFhtbEF0dHJpYnV0ZSgKKyAgICAgIHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJk
aXNhYmxlZCIsCisgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodW5pdF90ZXN0LnJlcG9ydGFibGVf
ZGlzYWJsZWRfdGVzdF9jb3VudCgpKSk7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtU
ZXN0c3VpdGVzLCAiZXJyb3JzIiwgIjAiKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKAorICAgICAg
c3RyZWFtLCBrVGVzdHN1aXRlcywgInRpbWVzdGFtcCIsCisgICAgICBGb3JtYXRFcG9jaFRpbWVJ
bk1pbGxpc0FzSXNvODYwMSh1bml0X3Rlc3Quc3RhcnRfdGltZXN0YW1wKCkpKTsKKyAgT3V0cHV0
WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0aW1lIiwKKyAgICAgICAgICAgICAg
ICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyh1bml0X3Rlc3QuZWxhcHNlZF90aW1l
KCkpKTsKKwogICBpZiAoR1RFU1RfRkxBRyhzaHVmZmxlKSkgewotICAgIGZwcmludGYob3V0LCAi
cmFuZG9tX3NlZWQ9XCIlZFwiICIsIHVuaXRfdGVzdC5yYW5kb21fc2VlZCgpKTsKKyAgICBPdXRw
dXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlcywgInJhbmRvbV9zZWVkIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5yYW5kb21fc2Vl
ZCgpKSk7CisgIH0KKyAgKnN0cmVhbSA8PCBUZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRlcyh1
bml0X3Rlc3QuYWRfaG9jX3Rlc3RfcmVzdWx0KCkpOworCisgIE91dHB1dFhtbEF0dHJpYnV0ZShz
dHJlYW0sIGtUZXN0c3VpdGVzLCAibmFtZSIsICJBbGxUZXN0cyIpOworICAqc3RyZWFtIDw8ICI+
XG4iOworCisgIGZvciAoaW50IGkgPSAwOyBpIDwgdW5pdF90ZXN0LnRvdGFsX3Rlc3RfY2FzZV9j
b3VudCgpOyArK2kpIHsKKyAgICBpZiAodW5pdF90ZXN0LkdldFRlc3RDYXNlKGkpLT5yZXBvcnRh
YmxlX3Rlc3RfY291bnQoKSA+IDApCisgICAgICBQcmludFhtbFRlc3RDYXNlKHN0cmVhbSwgKnVu
aXRfdGVzdC5HZXRUZXN0Q2FzZShpKSk7CiAgIH0KLSAgZnByaW50ZihvdXQsICJuYW1lPVwiQWxs
VGVzdHNcIj5cbiIpOwotICBmb3IgKGludCBpID0gMDsgaSA8IHVuaXRfdGVzdC50b3RhbF90ZXN0
X2Nhc2VfY291bnQoKTsgKytpKQotICAgIFByaW50WG1sVGVzdENhc2Uob3V0LCAqdW5pdF90ZXN0
LkdldFRlc3RDYXNlKGkpKTsKLSAgZnByaW50ZihvdXQsICI8L3Rlc3RzdWl0ZXM+XG4iKTsKKyAg
KnN0cmVhbSA8PCAiPC8iIDw8IGtUZXN0c3VpdGVzIDw8ICI+XG4iOworfQorCit2b2lkIFhtbFVu
aXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRYbWxUZXN0c0xpc3QoCisgICAgc3RkOjpvc3RyZWFt
KiBzdHJlYW0sIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMpIHsKKyAg
Y29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RzdWl0ZXMgPSAidGVzdHN1aXRlcyI7CisKKyAgKnN0cmVh
bSA8PCAiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIj8+XG4iOworICAq
c3RyZWFtIDw8ICI8IiA8PCBrVGVzdHN1aXRlczsKKworICBpbnQgdG90YWxfdGVzdHMgPSAwOwor
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXMuc2l6ZSgpOyArK2kpIHsKKyAgICB0
b3RhbF90ZXN0cyArPSB0ZXN0X2Nhc2VzW2ldLT50b3RhbF90ZXN0X2NvdW50KCk7CisgIH0KKyAg
T3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0ZXN0cyIsCisgICAgICAg
ICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodG90YWxfdGVzdHMpKTsKKyAgT3V0cHV0
WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJuYW1lIiwgIkFsbFRlc3RzIik7Cisg
ICpzdHJlYW0gPDwgIj5cbiI7CisKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0X2Nhc2Vz
LnNpemUoKTsgKytpKSB7CisgICAgUHJpbnRYbWxUZXN0Q2FzZShzdHJlYW0sICp0ZXN0X2Nhc2Vz
W2ldKTsKKyAgfQorICAqc3RyZWFtIDw8ICI8LyIgPDwga1Rlc3RzdWl0ZXMgPDwgIj5cbiI7CiB9
CiAKIC8vIFByb2R1Y2VzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdGVzdCBwcm9wZXJ0aWVz
IGluIGEgcmVzdWx0IGFzIHNwYWNlCiAvLyBkZWxpbWl0ZWQgWE1MIGF0dHJpYnV0ZXMgYmFzZWQg
b24gdGhlIHByb3BlcnR5IGtleT0idmFsdWUiIHBhaXJzLgotU3RyaW5nIFhtbFVuaXRUZXN0UmVz
dWx0UHJpbnRlcjo6VGVzdFByb3BlcnRpZXNBc1htbEF0dHJpYnV0ZXMoCitzdGQ6OnN0cmluZyBY
bWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKAog
ICAgIGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCkgewogICBNZXNzYWdlIGF0dHJpYnV0ZXM7CiAg
IGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKTsgKytpKSB7
CkBAIC0zMjk5LDUyICszODUxLDU2MiBAQCBTdHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVy
OjpUZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRlcygKICAgcmV0dXJuIGF0dHJpYnV0ZXMuR2V0
U3RyaW5nKCk7CiB9CiAKK3ZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPdXRwdXRYbWxU
ZXN0UHJvcGVydGllcygKKyAgICBzdGQ6Om9zdHJlYW0qIHN0cmVhbSwgY29uc3QgVGVzdFJlc3Vs
dCYgcmVzdWx0KSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtQcm9wZXJ0aWVzID0gInByb3BlcnRp
ZXMiOworICBjb25zdCBzdGQ6OnN0cmluZyBrUHJvcGVydHkgPSAicHJvcGVydHkiOworCisgIGlm
IChyZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpIDw9IDApIHsKKyAgICByZXR1cm47CisgIH0K
KworICAqc3RyZWFtIDw8ICI8IiA8PCBrUHJvcGVydGllcyA8PCAiPlxuIjsKKyAgZm9yIChpbnQg
aSA9IDA7IGkgPCByZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpOyArK2kpIHsKKyAgICBjb25z
dCBUZXN0UHJvcGVydHkmIHByb3BlcnR5ID0gcmVzdWx0LkdldFRlc3RQcm9wZXJ0eShpKTsKKyAg
ICAqc3RyZWFtIDw8ICI8IiA8PCBrUHJvcGVydHk7CisgICAgKnN0cmVhbSA8PCAiIG5hbWU9XCIi
IDw8IEVzY2FwZVhtbEF0dHJpYnV0ZShwcm9wZXJ0eS5rZXkoKSkgPDwgIlwiIjsKKyAgICAqc3Ry
ZWFtIDw8ICIgdmFsdWU9XCIiIDw8IEVzY2FwZVhtbEF0dHJpYnV0ZShwcm9wZXJ0eS52YWx1ZSgp
KSA8PCAiXCIiOworICAgICpzdHJlYW0gPDwgIi8+XG4iOworICB9CisgICpzdHJlYW0gPDwgIjwv
IiA8PCBrUHJvcGVydGllcyA8PCAiPlxuIjsKK30KKwogLy8gRW5kIFhtbFVuaXRUZXN0UmVzdWx0
UHJpbnRlcgogCi0vLyBDbGFzcyBTY29wZWRUcmFjZQorLy8gVGhpcyBjbGFzcyBnZW5lcmF0ZXMg
YW4gSlNPTiBvdXRwdXQgZmlsZS4KK2NsYXNzIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIgOiBw
dWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CisgcHVibGljOgorICBleHBsaWNpdCBKc29u
VW5pdFRlc3RSZXN1bHRQcmludGVyKGNvbnN0IGNoYXIqIG91dHB1dF9maWxlKTsKIAotLy8gUHVz
aGVzIHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlvbiBhbmQgbWVzc2FnZSBvbnRvIGEgcGVy
LXRocmVhZAotLy8gdHJhY2Ugc3RhY2sgbWFpbnRhaW5lZCBieSBHb29nbGUgVGVzdC4KLS8vIEwg
PCBVbml0VGVzdDo6bXV0ZXhfCi1TY29wZWRUcmFjZTo6U2NvcGVkVHJhY2UoY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUsIGNvbnN0IE1lc3NhZ2UmIG1lc3NhZ2UpIHsKLSAgVHJhY2VJbmZvIHRy
YWNlOwotICB0cmFjZS5maWxlID0gZmlsZTsKLSAgdHJhY2UubGluZSA9IGxpbmU7Ci0gIHRyYWNl
Lm1lc3NhZ2UgPSBtZXNzYWdlLkdldFN0cmluZygpOworICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRl
cmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsIGludCBpdGVyYXRpb24pOwogCi0g
IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5QdXNoR1Rlc3RUcmFjZSh0cmFjZSk7CisgIC8vIFBy
aW50cyBhbiBKU09OIHN1bW1hcnkgb2YgYWxsIHVuaXQgdGVzdHMuCisgIHN0YXRpYyB2b2lkIFBy
aW50SnNvblRlc3RMaXN0KDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMp
OworCisgcHJpdmF0ZToKKyAgLy8gUmV0dXJucyBhbiBKU09OLWVzY2FwZWQgY29weSBvZiB0aGUg
aW5wdXQgc3RyaW5nIHN0ci4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEVzY2FwZUpzb24oY29uc3Qg
c3RkOjpzdHJpbmcmIHN0cik7CisKKyAgLy8vLyBWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBhdHRy
aWJ1dGUgYmVsb25ncyB0byB0aGUgZ2l2ZW4gZWxlbWVudCBhbmQKKyAgLy8vLyBzdHJlYW1zIHRo
ZSBhdHRyaWJ1dGUgYXMgSlNPTi4KKyAgc3RhdGljIHZvaWQgT3V0cHV0SnNvbktleShzdGQ6Om9z
dHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgZWxlbWVudF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgaW5kZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29tbWEgPSB0
cnVlKTsKKyAgc3RhdGljIHZvaWQgT3V0cHV0SnNvbktleShzdGQ6Om9zdHJlYW0qIHN0cmVhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZWxlbWVudF9u
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5kZW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgY29tbWEgPSB0cnVlKTsKKworICAvLyBTdHJlYW1zIGEgSlNPTiBy
ZXByZXNlbnRhdGlvbiBvZiBhIFRlc3RJbmZvIG9iamVjdC4KKyAgc3RhdGljIHZvaWQgT3V0cHV0
SnNvblRlc3RJbmZvKDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pOworCisgIC8vIFBy
aW50cyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgYSBUZXN0Q2FzZSBvYmplY3QKKyAgc3RhdGlj
IHZvaWQgUHJpbnRKc29uVGVzdENhc2UoOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSk7CisKKyAg
Ly8gUHJpbnRzIGEgSlNPTiBzdW1tYXJ5IG9mIHVuaXRfdGVzdCB0byBvdXRwdXQgc3RyZWFtIG91
dC4KKyAgc3RhdGljIHZvaWQgUHJpbnRKc29uVW5pdFRlc3QoOjpzdGQ6Om9zdHJlYW0qIHN0cmVh
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pdFRlc3QmIHVuaXRf
dGVzdCk7CisKKyAgLy8gUHJvZHVjZXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0ZXN0IHBy
b3BlcnRpZXMgaW4gYSByZXN1bHQgYXMKKyAgLy8gYSBKU09OIGRpY3Rpb25hcnkuCisgIHN0YXRp
YyBzdGQ6OnN0cmluZyBUZXN0UHJvcGVydGllc0FzSnNvbihjb25zdCBUZXN0UmVzdWx0JiByZXN1
bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgaW5kZW50KTsKKworICAvLyBUaGUgb3V0cHV0IGZpbGUuCisgIGNvbnN0IHN0ZDo6
c3RyaW5nIG91dHB1dF9maWxlXzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05f
KEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIpOworfTsKKworLy8gQ3JlYXRlcyBhIG5ldyBKc29u
VW5pdFRlc3RSZXN1bHRQcmludGVyLgorSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6SnNvblVu
aXRUZXN0UmVzdWx0UHJpbnRlcihjb25zdCBjaGFyKiBvdXRwdXRfZmlsZSkKKyAgICA6IG91dHB1
dF9maWxlXyhvdXRwdXRfZmlsZSkgeworICBpZiAob3V0cHV0X2ZpbGVfLmVtcHR5KCkpIHsKKyAg
ICBHVEVTVF9MT0dfKEZBVEFMKSA8PCAiSlNPTiBvdXRwdXQgZmlsZSBtYXkgbm90IGJlIG51bGwi
OworICB9CiB9CiAKLS8vIFBvcHMgdGhlIGluZm8gcHVzaGVkIGJ5IHRoZSBjJ3Rvci4KLS8vIEwg
PCBVbml0VGVzdDo6bXV0ZXhfCi1TY29wZWRUcmFjZTo6flNjb3BlZFRyYWNlKCkgewotICBVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+UG9wR1Rlc3RUcmFjZSgpOwordm9pZCBKc29uVW5pdFRlc3RS
ZXN1bHRQcmludGVyOjpPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IC8qaXRlcmF0aW9uKi8pIHsKKyAgRklMRSoganNvbm91dCA9IE9wZW5GaWxlRm9yV3JpdGluZyhv
dXRwdXRfZmlsZV8pOworICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07CisgIFByaW50SnNvblVu
aXRUZXN0KCZzdHJlYW0sIHVuaXRfdGVzdCk7CisgIGZwcmludGYoanNvbm91dCwgIiVzIiwgU3Ry
aW5nU3RyZWFtVG9TdHJpbmcoJnN0cmVhbSkuY19zdHIoKSk7CisgIGZjbG9zZShqc29ub3V0KTsK
IH0KIAorLy8gUmV0dXJucyBhbiBKU09OLWVzY2FwZWQgY29weSBvZiB0aGUgaW5wdXQgc3RyaW5n
IHN0ci4KK3N0ZDo6c3RyaW5nIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6OkVzY2FwZUpzb24o
Y29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgeworICBNZXNzYWdlIG07CiAKLS8vIGNsYXNzIE9zU3Rh
Y2tUcmFjZUdldHRlcgorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ci5zaXplKCk7ICsraSkg
eworICAgIGNvbnN0IGNoYXIgY2ggPSBzdHJbaV07CisgICAgc3dpdGNoIChjaCkgeworICAgICAg
Y2FzZSAnXFwnOgorICAgICAgY2FzZSAnIic6CisgICAgICBjYXNlICcvJzoKKyAgICAgICAgbSA8
PCAnXFwnIDw8IGNoOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ1xiJzoKKyAgICAgICAg
bSA8PCAiXFxiIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdcdCc6CisgICAgICAgIG0g
PDwgIlxcdCI7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnXG4nOgorICAgICAgICBtIDw8
ICJcXG4iOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ1xmJzoKKyAgICAgICAgbSA8PCAi
XFxmIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdccic6CisgICAgICAgIG0gPDwgIlxc
ciI7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKGNoIDwgJyAn
KSB7CisgICAgICAgICAgbSA8PCAiXFx1MDAiIDw8IFN0cmluZzo6Rm9ybWF0Qnl0ZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIG0g
PDwgY2g7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICB9CiAKLS8vIFJldHVy
bnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYSBTdHJpbmcuICBQYXJhbWV0ZXJzOgot
Ly8KLS8vICAgbWF4X2RlcHRoICAtIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMg
dG8gYmUgaW5jbHVkZWQKLS8vICAgICAgICAgICAgICAgIGluIHRoZSB0cmFjZS4KLS8vICAgc2tp
cF9jb3VudCAtIHRoZSBudW1iZXIgb2YgdG9wIGZyYW1lcyB0byBiZSBza2lwcGVkOyBkb2Vzbid0
IGNvdW50Ci0vLyAgICAgICAgICAgICAgICBhZ2FpbnN0IG1heF9kZXB0aC4KLS8vCi0vLyBMIDwg
bXV0ZXhfCi0vLyBXZSB1c2UgIkwgPCBtdXRleF8iIHRvIGRlbm90ZSB0aGF0IHRoZSBmdW5jdGlv
biBtYXkgYWNxdWlyZSBtdXRleF8uCi1TdHJpbmcgT3NTdGFja1RyYWNlR2V0dGVyOjpDdXJyZW50
U3RhY2tUcmFjZShpbnQsIGludCkgewotICByZXR1cm4gU3RyaW5nKCIiKTsKKyAgcmV0dXJuIG0u
R2V0U3RyaW5nKCk7CiB9CiAKLS8vIEwgPCBtdXRleF8KLXZvaWQgT3NTdGFja1RyYWNlR2V0dGVy
OjpVcG9uTGVhdmluZ0dUZXN0KCkgeworLy8gVGhlIGZvbGxvd2luZyByb3V0aW5lcyBnZW5lcmF0
ZSBhbiBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgVW5pdFRlc3QKKy8vIG9iamVjdC4KKworLy8g
Rm9ybWF0cyB0aGUgZ2l2ZW4gdGltZSBpbiBtaWxsaXNlY29uZHMgYXMgc2Vjb25kcy4KK3N0YXRp
YyBzdGQ6OnN0cmluZyBGb3JtYXRUaW1lSW5NaWxsaXNBc0R1cmF0aW9uKFRpbWVJbk1pbGxpcyBt
cykgeworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICBzcyA8PCAoc3RhdGljX2Nhc3Q8ZG91
YmxlPihtcykgKiAxZS0zKSA8PCAicyI7CisgIHJldHVybiBzcy5zdHIoKTsKIH0KIAotY29uc3Qg
Y2hhciogY29uc3QKLU9zU3RhY2tUcmFjZUdldHRlcjo6a0VsaWRlZEZyYW1lc01hcmtlciA9Cisv
LyBDb252ZXJ0cyB0aGUgZ2l2ZW4gZXBvY2ggdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gYSBkYXRl
IHN0cmluZyBpbiB0aGUKKy8vIFJGQzMzMzkgZm9ybWF0LCB3aXRob3V0IHRoZSB0aW1lem9uZSBp
bmZvcm1hdGlvbi4KK3N0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0Fz
UkZDMzMzOShUaW1lSW5NaWxsaXMgbXMpIHsKKyAgc3RydWN0IHRtIHRpbWVfc3RydWN0OworICBp
ZiAoIVBvcnRhYmxlTG9jYWx0aW1lKHN0YXRpY19jYXN0PHRpbWVfdD4obXMgLyAxMDAwKSwgJnRp
bWVfc3RydWN0KSkKKyAgICByZXR1cm4gIiI7CisgIC8vIFlZWVktTU0tRERUaGg6bW06c3MKKyAg
cmV0dXJuIFN0cmVhbWFibGVUb1N0cmluZyh0aW1lX3N0cnVjdC50bV95ZWFyICsgMTkwMCkgKyAi
LSIgKworICAgICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1fbW9uICsg
MSkgKyAiLSIgKworICAgICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1f
bWRheSkgKyAiVCIgKworICAgICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3Qu
dG1faG91cikgKyAiOiIgKworICAgICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1
Y3QudG1fbWluKSArICI6IiArCisgICAgICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0
cnVjdC50bV9zZWMpICsgIloiOworfQorCitzdGF0aWMgaW5saW5lIHN0ZDo6c3RyaW5nIEluZGVu
dChpbnQgd2lkdGgpIHsKKyAgcmV0dXJuIHN0ZDo6c3RyaW5nKHdpZHRoLCAnICcpOworfQorCit2
b2lkIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dEpzb25LZXkoCisgICAgc3RkOjpv
c3RyZWFtKiBzdHJlYW0sCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGVsZW1lbnRfbmFtZSwKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUs
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGluZGVudCwKKyAgICBib29sIGNvbW1hKSB7CisgIGNv
bnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgYWxsb3dlZF9uYW1lcyA9CisgICAgICBHZXRS
ZXNlcnZlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KGVsZW1lbnRfbmFtZSk7CisKKyAgR1RFU1RfQ0hF
Q0tfKHN0ZDo6ZmluZChhbGxvd2VkX25hbWVzLmJlZ2luKCksIGFsbG93ZWRfbmFtZXMuZW5kKCks
IG5hbWUpICE9CisgICAgICAgICAgICAgICAgICAgYWxsb3dlZF9uYW1lcy5lbmQoKSkKKyAgICAg
IDw8ICJLZXkgXCIiIDw8IG5hbWUgPDwgIlwiIGlzIG5vdCBhbGxvd2VkIGZvciB2YWx1ZSBcIiIg
PDwgZWxlbWVudF9uYW1lCisgICAgICA8PCAiXCIuIjsKKworICAqc3RyZWFtIDw8IGluZGVudCA8
PCAiXCIiIDw8IG5hbWUgPDwgIlwiOiBcIiIgPDwgRXNjYXBlSnNvbih2YWx1ZSkgPDwgIlwiIjsK
KyAgaWYgKGNvbW1hKQorICAgICpzdHJlYW0gPDwgIixcbiI7Cit9CisKK3ZvaWQgSnNvblVuaXRU
ZXN0UmVzdWx0UHJpbnRlcjo6T3V0cHV0SnNvbktleSgKKyAgICBzdGQ6Om9zdHJlYW0qIHN0cmVh
bSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZWxlbWVudF9uYW1lLAorICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBuYW1lLAorICAgIGludCB2YWx1ZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5k
ZW50LAorICAgIGJvb2wgY29tbWEpIHsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
JiBhbGxvd2VkX25hbWVzID0KKyAgICAgIEdldFJlc2VydmVkQXR0cmlidXRlc0ZvckVsZW1lbnQo
ZWxlbWVudF9uYW1lKTsKKworICBHVEVTVF9DSEVDS18oc3RkOjpmaW5kKGFsbG93ZWRfbmFtZXMu
YmVnaW4oKSwgYWxsb3dlZF9uYW1lcy5lbmQoKSwgbmFtZSkgIT0KKyAgICAgICAgICAgICAgICAg
ICBhbGxvd2VkX25hbWVzLmVuZCgpKQorICAgICAgPDwgIktleSBcIiIgPDwgbmFtZSA8PCAiXCIg
aXMgbm90IGFsbG93ZWQgZm9yIHZhbHVlIFwiIiA8PCBlbGVtZW50X25hbWUKKyAgICAgIDw8ICJc
Ii4iOworCisgICpzdHJlYW0gPDwgaW5kZW50IDw8ICJcIiIgPDwgbmFtZSA8PCAiXCI6ICIgPDwg
U3RyZWFtYWJsZVRvU3RyaW5nKHZhbHVlKTsKKyAgaWYgKGNvbW1hKQorICAgICpzdHJlYW0gPDwg
IixcbiI7Cit9CisKKy8vIFByaW50cyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgYSBUZXN0SW5m
byBvYmplY3QuCit2b2lkIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dEpzb25UZXN0
SW5mbyg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0
SW5mbyYgdGVzdF9pbmZvKSB7CisgIGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCA9ICp0ZXN0X2lu
Zm8ucmVzdWx0KCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0Y2FzZSA9ICJ0ZXN0Y2FzZSI7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtJbmRlbnQgPSBJbmRlbnQoMTApOworCisgICpzdHJlYW0g
PDwgSW5kZW50KDgpIDw8ICJ7XG4iOworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RjYXNl
LCAibmFtZSIsIHRlc3RfaW5mby5uYW1lKCksIGtJbmRlbnQpOworCisgIGlmICh0ZXN0X2luZm8u
dmFsdWVfcGFyYW0oKSAhPSBOVUxMKSB7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0
Y2FzZSwgInZhbHVlX3BhcmFtIiwKKyAgICAgICAgICAgICAgICAgIHRlc3RfaW5mby52YWx1ZV9w
YXJhbSgpLCBrSW5kZW50KTsKKyAgfQorICBpZiAodGVzdF9pbmZvLnR5cGVfcGFyYW0oKSAhPSBO
VUxMKSB7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0Y2FzZSwgInR5cGVfcGFyYW0i
LCB0ZXN0X2luZm8udHlwZV9wYXJhbSgpLAorICAgICAgICAgICAgICAgICAga0luZGVudCk7Cisg
IH0KKyAgaWYgKEdURVNUX0ZMQUcobGlzdF90ZXN0cykpIHsKKyAgICBPdXRwdXRKc29uS2V5KHN0
cmVhbSwga1Rlc3RjYXNlLCAiZmlsZSIsIHRlc3RfaW5mby5maWxlKCksIGtJbmRlbnQpOworICAg
IE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdGNhc2UsICJsaW5lIiwgdGVzdF9pbmZvLmxpbmUo
KSwga0luZGVudCwgZmFsc2UpOworICAgICpzdHJlYW0gPDwgIlxuIiA8PCBJbmRlbnQoOCkgPDwg
In0iOworICAgIHJldHVybjsKKyAgfQorCisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdGNh
c2UsICJzdGF0dXMiLAorICAgICAgICAgICAgICAgIHRlc3RfaW5mby5zaG91bGRfcnVuKCkgPyAi
UlVOIiA6ICJOT1RSVU4iLCBrSW5kZW50KTsKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0
Y2FzZSwgInRpbWUiLAorICAgICAgICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzRHVyYXRp
b24ocmVzdWx0LmVsYXBzZWRfdGltZSgpKSwga0luZGVudCk7CisgIE91dHB1dEpzb25LZXkoc3Ry
ZWFtLCBrVGVzdGNhc2UsICJjbGFzc25hbWUiLCB0ZXN0X2Nhc2VfbmFtZSwga0luZGVudCwgZmFs
c2UpOworICAqc3RyZWFtIDw8IFRlc3RQcm9wZXJ0aWVzQXNKc29uKHJlc3VsdCwga0luZGVudCk7
CisKKyAgaW50IGZhaWx1cmVzID0gMDsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHQudG90
YWxfcGFydF9jb3VudCgpOyArK2kpIHsKKyAgICBjb25zdCBUZXN0UGFydFJlc3VsdCYgcGFydCA9
IHJlc3VsdC5HZXRUZXN0UGFydFJlc3VsdChpKTsKKyAgICBpZiAocGFydC5mYWlsZWQoKSkgewor
ICAgICAgKnN0cmVhbSA8PCAiLFxuIjsKKyAgICAgIGlmICgrK2ZhaWx1cmVzID09IDEpIHsKKyAg
ICAgICAgKnN0cmVhbSA8PCBrSW5kZW50IDw8ICJcIiIgPDwgImZhaWx1cmVzIiA8PCAiXCI6IFtc
biI7CisgICAgICB9CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyBsb2NhdGlvbiA9CisgICAgICAg
ICAgaW50ZXJuYWw6OkZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24ocGFydC5m
aWxlX25hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJ0LmxpbmVfbnVtYmVyKCkpOworICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgbWVzc2FnZSA9IEVzY2FwZUpzb24obG9jYXRpb24gKyAiXG4iICsgcGFydC5tZXNzYWdlKCkp
OworICAgICAgKnN0cmVhbSA8PCBrSW5kZW50IDw8ICIgIHtcbiIKKyAgICAgICAgICAgICAgPDwg
a0luZGVudCA8PCAiICAgIFwiZmFpbHVyZVwiOiBcIiIgPDwgbWVzc2FnZSA8PCAiXCIsXG4iCisg
ICAgICAgICAgICAgIDw8IGtJbmRlbnQgPDwgIiAgICBcInR5cGVcIjogXCJcIlxuIgorICAgICAg
ICAgICAgICA8PCBrSW5kZW50IDw8ICIgIH0iOworICAgIH0KKyAgfQorCisgIGlmIChmYWlsdXJl
cyA+IDApCisgICAgKnN0cmVhbSA8PCAiXG4iIDw8IGtJbmRlbnQgPDwgIl0iOworICAqc3RyZWFt
IDw8ICJcbiIgPDwgSW5kZW50KDgpIDw8ICJ9IjsKK30KKworLy8gUHJpbnRzIGFuIEpTT04gcmVw
cmVzZW50YXRpb24gb2YgYSBUZXN0Q2FzZSBvYmplY3QKK3ZvaWQgSnNvblVuaXRUZXN0UmVzdWx0
UHJpbnRlcjo6UHJpbnRKc29uVGVzdENhc2Uoc3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RDYXNl
JiB0ZXN0X2Nhc2UpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RzdWl0ZSA9ICJ0ZXN0c3Vp
dGUiOworICBjb25zdCBzdGQ6OnN0cmluZyBrSW5kZW50ID0gSW5kZW50KDYpOworCisgICpzdHJl
YW0gPDwgSW5kZW50KDQpIDw8ICJ7XG4iOworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3Rz
dWl0ZSwgIm5hbWUiLCB0ZXN0X2Nhc2UubmFtZSgpLCBrSW5kZW50KTsKKyAgT3V0cHV0SnNvbktl
eShzdHJlYW0sIGtUZXN0c3VpdGUsICJ0ZXN0cyIsIHRlc3RfY2FzZS5yZXBvcnRhYmxlX3Rlc3Rf
Y291bnQoKSwKKyAgICAgICAgICAgICAgICBrSW5kZW50KTsKKyAgaWYgKCFHVEVTVF9GTEFHKGxp
c3RfdGVzdHMpKSB7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGUsICJmYWls
dXJlcyIsIHRlc3RfY2FzZS5mYWlsZWRfdGVzdF9jb3VudCgpLAorICAgICAgICAgICAgICAgICAg
a0luZGVudCk7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGUsICJkaXNhYmxl
ZCIsCisgICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2UucmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0
X2NvdW50KCksIGtJbmRlbnQpOworICAgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRl
LCAiZXJyb3JzIiwgMCwga0luZGVudCk7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0
c3VpdGUsICJ0aW1lIiwKKyAgICAgICAgICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzRHVy
YXRpb24odGVzdF9jYXNlLmVsYXBzZWRfdGltZSgpKSwKKyAgICAgICAgICAgICAgICAgIGtJbmRl
bnQsIGZhbHNlKTsKKyAgICAqc3RyZWFtIDw8IFRlc3RQcm9wZXJ0aWVzQXNKc29uKHRlc3RfY2Fz
ZS5hZF9ob2NfdGVzdF9yZXN1bHQoKSwga0luZGVudCkKKyAgICAgICAgICAgIDw8ICIsXG4iOwor
ICB9CisKKyAgKnN0cmVhbSA8PCBrSW5kZW50IDw8ICJcIiIgPDwga1Rlc3RzdWl0ZSA8PCAiXCI6
IFtcbiI7CisKKyAgYm9vbCBjb21tYSA9IGZhbHNlOworICBmb3IgKGludCBpID0gMDsgaSA8IHRl
c3RfY2FzZS50b3RhbF90ZXN0X2NvdW50KCk7ICsraSkgeworICAgIGlmICh0ZXN0X2Nhc2UuR2V0
VGVzdEluZm8oaSktPmlzX3JlcG9ydGFibGUoKSkgeworICAgICAgaWYgKGNvbW1hKSB7CisgICAg
ICAgICpzdHJlYW0gPDwgIixcbiI7CisgICAgICB9IGVsc2UgeworICAgICAgICBjb21tYSA9IHRy
dWU7CisgICAgICB9CisgICAgICBPdXRwdXRKc29uVGVzdEluZm8oc3RyZWFtLCB0ZXN0X2Nhc2Uu
bmFtZSgpLCAqdGVzdF9jYXNlLkdldFRlc3RJbmZvKGkpKTsKKyAgICB9CisgIH0KKyAgKnN0cmVh
bSA8PCAiXG4iIDw8IGtJbmRlbnQgPDwgIl1cbiIgPDwgSW5kZW50KDQpIDw8ICJ9IjsKK30KKwor
Ly8gUHJpbnRzIGEgSlNPTiBzdW1tYXJ5IG9mIHVuaXRfdGVzdCB0byBvdXRwdXQgc3RyZWFtIG91
dC4KK3ZvaWQgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRKc29uVW5pdFRlc3Qoc3Rk
Ojpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpIHsKKyAgY29uc3Qgc3RkOjpz
dHJpbmcga1Rlc3RzdWl0ZXMgPSAidGVzdHN1aXRlcyI7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtJ
bmRlbnQgPSBJbmRlbnQoMik7CisgICpzdHJlYW0gPDwgIntcbiI7CisKKyAgT3V0cHV0SnNvbktl
eShzdHJlYW0sIGtUZXN0c3VpdGVzLCAidGVzdHMiLCB1bml0X3Rlc3QucmVwb3J0YWJsZV90ZXN0
X2NvdW50KCksCisgICAgICAgICAgICAgICAga0luZGVudCk7CisgIE91dHB1dEpzb25LZXkoc3Ry
ZWFtLCBrVGVzdHN1aXRlcywgImZhaWx1cmVzIiwgdW5pdF90ZXN0LmZhaWxlZF90ZXN0X2NvdW50
KCksCisgICAgICAgICAgICAgICAga0luZGVudCk7CisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBr
VGVzdHN1aXRlcywgImRpc2FibGVkIiwKKyAgICAgICAgICAgICAgICB1bml0X3Rlc3QucmVwb3J0
YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCksIGtJbmRlbnQpOworICBPdXRwdXRKc29uS2V5KHN0
cmVhbSwga1Rlc3RzdWl0ZXMsICJlcnJvcnMiLCAwLCBrSW5kZW50KTsKKyAgaWYgKEdURVNUX0ZM
QUcoc2h1ZmZsZSkpIHsKKyAgICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJy
YW5kb21fc2VlZCIsIHVuaXRfdGVzdC5yYW5kb21fc2VlZCgpLAorICAgICAgICAgICAgICAgICAg
a0luZGVudCk7CisgIH0KKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAidGlt
ZXN0YW1wIiwKKyAgICAgICAgICAgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzUkZDMzMz
OSh1bml0X3Rlc3Quc3RhcnRfdGltZXN0YW1wKCkpLAorICAgICAgICAgICAgICAgIGtJbmRlbnQp
OworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0aW1lIiwKKyAgICAgICAg
ICAgICAgICBGb3JtYXRUaW1lSW5NaWxsaXNBc0R1cmF0aW9uKHVuaXRfdGVzdC5lbGFwc2VkX3Rp
bWUoKSksIGtJbmRlbnQsCisgICAgICAgICAgICAgICAgZmFsc2UpOworCisgICpzdHJlYW0gPDwg
VGVzdFByb3BlcnRpZXNBc0pzb24odW5pdF90ZXN0LmFkX2hvY190ZXN0X3Jlc3VsdCgpLCBrSW5k
ZW50KQorICAgICAgICAgIDw8ICIsXG4iOworCisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVz
dHN1aXRlcywgIm5hbWUiLCAiQWxsVGVzdHMiLCBrSW5kZW50KTsKKyAgKnN0cmVhbSA8PCBrSW5k
ZW50IDw8ICJcIiIgPDwga1Rlc3RzdWl0ZXMgPDwgIlwiOiBbXG4iOworCisgIGJvb2wgY29tbWEg
PSBmYWxzZTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCB1bml0X3Rlc3QudG90YWxfdGVzdF9jYXNl
X2NvdW50KCk7ICsraSkgeworICAgIGlmICh1bml0X3Rlc3QuR2V0VGVzdENhc2UoaSktPnJlcG9y
dGFibGVfdGVzdF9jb3VudCgpID4gMCkgeworICAgICAgaWYgKGNvbW1hKSB7CisgICAgICAgICpz
dHJlYW0gPDwgIixcbiI7CisgICAgICB9IGVsc2UgeworICAgICAgICBjb21tYSA9IHRydWU7Cisg
ICAgICB9CisgICAgICBQcmludEpzb25UZXN0Q2FzZShzdHJlYW0sICp1bml0X3Rlc3QuR2V0VGVz
dENhc2UoaSkpOworICAgIH0KKyAgfQorCisgICpzdHJlYW0gPDwgIlxuIiA8PCBrSW5kZW50IDw8
ICJdXG4iIDw8ICJ9XG4iOworfQorCit2b2lkIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6OlBy
aW50SnNvblRlc3RMaXN0KAorICAgIHN0ZDo6b3N0cmVhbSogc3RyZWFtLCBjb25zdCBzdGQ6OnZl
Y3RvcjxUZXN0Q2FzZSo+JiB0ZXN0X2Nhc2VzKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0
c3VpdGVzID0gInRlc3RzdWl0ZXMiOworICBjb25zdCBzdGQ6OnN0cmluZyBrSW5kZW50ID0gSW5k
ZW50KDIpOworICAqc3RyZWFtIDw8ICJ7XG4iOworICBpbnQgdG90YWxfdGVzdHMgPSAwOworICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXMuc2l6ZSgpOyArK2kpIHsKKyAgICB0b3Rh
bF90ZXN0cyArPSB0ZXN0X2Nhc2VzW2ldLT50b3RhbF90ZXN0X2NvdW50KCk7CisgIH0KKyAgT3V0
cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAidGVzdHMiLCB0b3RhbF90ZXN0cywga0lu
ZGVudCk7CisKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAibmFtZSIsICJB
bGxUZXN0cyIsIGtJbmRlbnQpOworICAqc3RyZWFtIDw8IGtJbmRlbnQgPDwgIlwiIiA8PCBrVGVz
dHN1aXRlcyA8PCAiXCI6IFtcbiI7CisKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0X2Nh
c2VzLnNpemUoKTsgKytpKSB7CisgICAgaWYgKGkgIT0gMCkgeworICAgICAgKnN0cmVhbSA8PCAi
LFxuIjsKKyAgICB9CisgICAgUHJpbnRKc29uVGVzdENhc2Uoc3RyZWFtLCAqdGVzdF9jYXNlc1tp
XSk7CisgIH0KKworICAqc3RyZWFtIDw8ICJcbiIKKyAgICAgICAgICA8PCBrSW5kZW50IDw8ICJd
XG4iCisgICAgICAgICAgPDwgIn1cbiI7Cit9CisvLyBQcm9kdWNlcyBhIHN0cmluZyByZXByZXNl
bnRpbmcgdGhlIHRlc3QgcHJvcGVydGllcyBpbiBhIHJlc3VsdCBhcworLy8gYSBKU09OIGRpY3Rp
b25hcnkuCitzdGQ6OnN0cmluZyBKc29uVW5pdFRlc3RSZXN1bHRQcmludGVyOjpUZXN0UHJvcGVy
dGllc0FzSnNvbigKKyAgICBjb25zdCBUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBpbmRlbnQpIHsKKyAgTWVzc2FnZSBhdHRyaWJ1dGVzOworICBmb3IgKGludCBpID0gMDsg
aSA8IHJlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCk7ICsraSkgeworICAgIGNvbnN0IFRlc3RQ
cm9wZXJ0eSYgcHJvcGVydHkgPSByZXN1bHQuR2V0VGVzdFByb3BlcnR5KGkpOworICAgIGF0dHJp
YnV0ZXMgPDwgIixcbiIgPDwgaW5kZW50IDw8ICJcIiIgPDwgcHJvcGVydHkua2V5KCkgPDwgIlwi
OiAiCisgICAgICAgICAgICAgICA8PCAiXCIiIDw8IEVzY2FwZUpzb24ocHJvcGVydHkudmFsdWUo
KSkgPDwgIlwiIjsKKyAgfQorICByZXR1cm4gYXR0cmlidXRlcy5HZXRTdHJpbmcoKTsKK30KKwor
Ly8gRW5kIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIKKworI2lmIEdURVNUX0NBTl9TVFJFQU1f
UkVTVUxUU18KKworLy8gQ2hlY2tzIGlmIHN0ciBjb250YWlucyAnPScsICcmJywgJyUnIG9yICdc
bicgY2hhcmFjdGVycy4gSWYgeWVzLAorLy8gcmVwbGFjZXMgdGhlbSBieSAiJXh4IiB3aGVyZSB4
eCBpcyB0aGVpciBoZXhhZGVjaW1hbCB2YWx1ZS4gRm9yCisvLyBleGFtcGxlLCByZXBsYWNlcyAi
PSIgd2l0aCAiJTNEIi4gIFRoaXMgYWxnb3JpdGhtIGlzIE8oc3RybGVuKHN0cikpCisvLyBpbiBi
b3RoIHRpbWUgYW5kIHNwYWNlIC0tIGltcG9ydGFudCBhcyB0aGUgaW5wdXQgc3RyIG1heSBjb250
YWluIGFuCisvLyBhcmJpdHJhcmlseSBsb25nIHRlc3QgZmFpbHVyZSBtZXNzYWdlIGFuZCBzdGFj
ayB0cmFjZS4KK3N0ZDo6c3RyaW5nIFN0cmVhbWluZ0xpc3RlbmVyOjpVcmxFbmNvZGUoY29uc3Qg
Y2hhciogc3RyKSB7CisgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKKyAgcmVzdWx0LnJlc2VydmUoc3Ry
bGVuKHN0cikgKyAxKTsKKyAgZm9yIChjaGFyIGNoID0gKnN0cjsgY2ggIT0gJ1wwJzsgY2ggPSAq
KytzdHIpIHsKKyAgICBzd2l0Y2ggKGNoKSB7CisgICAgICBjYXNlICclJzoKKyAgICAgIGNhc2Ug
Jz0nOgorICAgICAgY2FzZSAnJic6CisgICAgICBjYXNlICdcbic6CisgICAgICAgIHJlc3VsdC5h
cHBlbmQoIiUiICsgU3RyaW5nOjpGb3JtYXRCeXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KGNoKSkpOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJlc3VsdC5w
dXNoX2JhY2soY2gpOworICAgICAgICBicmVhazsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3Vs
dDsKK30KKwordm9pZCBTdHJlYW1pbmdMaXN0ZW5lcjo6U29ja2V0V3JpdGVyOjpNYWtlQ29ubmVj
dGlvbigpIHsKKyAgR1RFU1RfQ0hFQ0tfKHNvY2tmZF8gPT0gLTEpCisgICAgICA8PCAiTWFrZUNv
bm5lY3Rpb24oKSBjYW4ndCBiZSBjYWxsZWQgd2hlbiB0aGVyZSBpcyBhbHJlYWR5IGEgY29ubmVj
dGlvbi4iOworCisgIGFkZHJpbmZvIGhpbnRzOworICBtZW1zZXQoJmhpbnRzLCAwLCBzaXplb2Yo
aGludHMpKTsKKyAgaGludHMuYWlfZmFtaWx5ID0gQUZfVU5TUEVDOyAgICAvLyBUbyBhbGxvdyBi
b3RoIElQdjQgYW5kIElQdjYgYWRkcmVzc2VzLgorICBoaW50cy5haV9zb2NrdHlwZSA9IFNPQ0tf
U1RSRUFNOworICBhZGRyaW5mbyogc2VydmluZm8gPSBOVUxMOworCisgIC8vIFVzZSB0aGUgZ2V0
YWRkcmluZm8oKSB0byBnZXQgYSBsaW5rZWQgbGlzdCBvZiBJUCBhZGRyZXNzZXMgZm9yCisgIC8v
IHRoZSBnaXZlbiBob3N0IG5hbWUuCisgIGNvbnN0IGludCBlcnJvcl9udW0gPSBnZXRhZGRyaW5m
bygKKyAgICAgIGhvc3RfbmFtZV8uY19zdHIoKSwgcG9ydF9udW1fLmNfc3RyKCksICZoaW50cywg
JnNlcnZpbmZvKTsKKyAgaWYgKGVycm9yX251bSAhPSAwKSB7CisgICAgR1RFU1RfTE9HXyhXQVJO
SU5HKSA8PCAic3RyZWFtX3Jlc3VsdF90bzogZ2V0YWRkcmluZm8oKSBmYWlsZWQ6ICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IGdhaV9zdHJlcnJvcihlcnJvcl9udW0pOworICB9CisKKyAg
Ly8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgcmVzdWx0cyBhbmQgY29ubmVjdCB0byB0aGUgZmlyc3Qg
d2UgY2FuLgorICBmb3IgKGFkZHJpbmZvKiBjdXJfYWRkciA9IHNlcnZpbmZvOyBzb2NrZmRfID09
IC0xICYmIGN1cl9hZGRyICE9IE5VTEw7CisgICAgICAgY3VyX2FkZHIgPSBjdXJfYWRkci0+YWlf
bmV4dCkgeworICAgIHNvY2tmZF8gPSBzb2NrZXQoCisgICAgICAgIGN1cl9hZGRyLT5haV9mYW1p
bHksIGN1cl9hZGRyLT5haV9zb2NrdHlwZSwgY3VyX2FkZHItPmFpX3Byb3RvY29sKTsKKyAgICBp
ZiAoc29ja2ZkXyAhPSAtMSkgeworICAgICAgLy8gQ29ubmVjdCB0aGUgY2xpZW50IHNvY2tldCB0
byB0aGUgc2VydmVyIHNvY2tldC4KKyAgICAgIGlmIChjb25uZWN0KHNvY2tmZF8sIGN1cl9hZGRy
LT5haV9hZGRyLCBjdXJfYWRkci0+YWlfYWRkcmxlbikgPT0gLTEpIHsKKyAgICAgICAgY2xvc2Uo
c29ja2ZkXyk7CisgICAgICAgIHNvY2tmZF8gPSAtMTsKKyAgICAgIH0KKyAgICB9CisgIH0KKwor
ICBmcmVlYWRkcmluZm8oc2VydmluZm8pOyAgLy8gYWxsIGRvbmUgd2l0aCB0aGlzIHN0cnVjdHVy
ZQorCisgIGlmIChzb2NrZmRfID09IC0xKSB7CisgICAgR1RFU1RfTE9HXyhXQVJOSU5HKSA8PCAi
c3RyZWFtX3Jlc3VsdF90bzogZmFpbGVkIHRvIGNvbm5lY3QgdG8gIgorICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgaG9zdF9uYW1lXyA8PCAiOiIgPDwgcG9ydF9udW1fOworICB9Cit9CisKKy8v
IEVuZCBvZiBjbGFzcyBTdHJlYW1pbmcgTGlzdGVuZXIKKyNlbmRpZiAgLy8gR1RFU1RfQ0FOX1NU
UkVBTV9SRVNVTFRTX18KKworLy8gY2xhc3MgT3NTdGFja1RyYWNlR2V0dGVyCisKK2NvbnN0IGNo
YXIqIGNvbnN0IE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZTo6a0VsaWRlZEZyYW1lc01hcmtl
ciA9CiAgICAgIi4uLiAiIEdURVNUX05BTUVfICIgaW50ZXJuYWwgZnJhbWVzIC4uLiI7CiAKK3N0
ZDo6c3RyaW5nIE9zU3RhY2tUcmFjZUdldHRlcjo6Q3VycmVudFN0YWNrVHJhY2UoaW50IG1heF9k
ZXB0aCwgaW50IHNraXBfY291bnQpCisgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7
CisjaWYgR1RFU1RfSEFTX0FCU0wKKyAgc3RkOjpzdHJpbmcgcmVzdWx0OworCisgIGlmIChtYXhf
ZGVwdGggPD0gMCkgeworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworICBtYXhfZGVwdGggPSBz
dGQ6Om1pbihtYXhfZGVwdGgsIGtNYXhTdGFja1RyYWNlRGVwdGgpOworCisgIHN0ZDo6dmVjdG9y
PHZvaWQqPiByYXdfc3RhY2sobWF4X2RlcHRoKTsKKyAgLy8gU2tpcHMgdGhlIGZyYW1lcyByZXF1
ZXN0ZWQgYnkgdGhlIGNhbGxlciwgcGx1cyB0aGlzIGZ1bmN0aW9uLgorICBjb25zdCBpbnQgcmF3
X3N0YWNrX3NpemUgPQorICAgICAgYWJzbDo6R2V0U3RhY2tUcmFjZSgmcmF3X3N0YWNrWzBdLCBt
YXhfZGVwdGgsIHNraXBfY291bnQgKyAxKTsKKworICB2b2lkKiBjYWxsZXJfZnJhbWUgPSBudWxs
cHRyOworICB7CisgICAgTXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7CisgICAgY2FsbGVyX2ZyYW1l
ID0gY2FsbGVyX2ZyYW1lXzsKKyAgfQorCisgIGZvciAoaW50IGkgPSAwOyBpIDwgcmF3X3N0YWNr
X3NpemU7ICsraSkgeworICAgIGlmIChyYXdfc3RhY2tbaV0gPT0gY2FsbGVyX2ZyYW1lICYmCisg
ICAgICAgICFHVEVTVF9GTEFHKHNob3dfaW50ZXJuYWxfc3RhY2tfZnJhbWVzKSkgeworICAgICAg
Ly8gQWRkIGEgbWFya2VyIHRvIHRoZSB0cmFjZSBhbmQgc3RvcCBhZGRpbmcgZnJhbWVzLgorICAg
ICAgYWJzbDo6U3RyQXBwZW5kKCZyZXN1bHQsIGtFbGlkZWRGcmFtZXNNYXJrZXIsICJcbiIpOwor
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2hhciB0bXBbMTAyNF07CisgICAgY29uc3QgY2hh
ciogc3ltYm9sID0gIih1bmtub3duKSI7CisgICAgaWYgKGFic2w6OlN5bWJvbGl6ZShyYXdfc3Rh
Y2tbaV0sIHRtcCwgc2l6ZW9mKHRtcCkpKSB7CisgICAgICBzeW1ib2wgPSB0bXA7CisgICAgfQor
CisgICAgY2hhciBsaW5lWzEwMjRdOworICAgIHNucHJpbnRmKGxpbmUsIHNpemVvZihsaW5lKSwg
IiAgJXA6ICVzXG4iLCByYXdfc3RhY2tbaV0sIHN5bWJvbCk7CisgICAgcmVzdWx0ICs9IGxpbmU7
CisgIH0KKworICByZXR1cm4gcmVzdWx0OworCisjZWxzZSAgLy8gIUdURVNUX0hBU19BQlNMCisg
IHN0YXRpY19jYXN0PHZvaWQ+KG1heF9kZXB0aCk7CisgIHN0YXRpY19jYXN0PHZvaWQ+KHNraXBf
Y291bnQpOworICByZXR1cm4gIiI7CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCit9CisKK3Zv
aWQgT3NTdGFja1RyYWNlR2V0dGVyOjpVcG9uTGVhdmluZ0dUZXN0KCkgR1RFU1RfTE9DS19FWENM
VURFRF8obXV0ZXhfKSB7CisjaWYgR1RFU1RfSEFTX0FCU0wKKyAgdm9pZCogY2FsbGVyX2ZyYW1l
ID0gbnVsbHB0cjsKKyAgaWYgKGFic2w6OkdldFN0YWNrVHJhY2UoJmNhbGxlcl9mcmFtZSwgMSwg
MykgPD0gMCkgeworICAgIGNhbGxlcl9mcmFtZSA9IG51bGxwdHI7CisgIH0KKworICBNdXRleExv
Y2sgbG9jaygmbXV0ZXhfKTsKKyAgY2FsbGVyX2ZyYW1lXyA9IGNhbGxlcl9mcmFtZTsKKyNlbmRp
ZiAgLy8gR1RFU1RfSEFTX0FCU0wKK30KKworLy8gQSBoZWxwZXIgY2xhc3MgdGhhdCBjcmVhdGVz
IHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlIGluIGl0cworLy8gY29uc3RydWN0b3IgYW5kIGRlbGV0
ZXMgdGhlIGZpbGUgaW4gaXRzIGRlc3RydWN0b3IuCitjbGFzcyBTY29wZWRQcmVtYXR1cmVFeGl0
RmlsZSB7CisgcHVibGljOgorICBleHBsaWNpdCBTY29wZWRQcmVtYXR1cmVFeGl0RmlsZShjb25z
dCBjaGFyKiBwcmVtYXR1cmVfZXhpdF9maWxlcGF0aCkKKyAgICAgIDogcHJlbWF0dXJlX2V4aXRf
ZmlsZXBhdGhfKHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoID8KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoIDogIiIpIHsKKyAgICAvLyBJZiBh
IHBhdGggdG8gdGhlIHByZW1hdHVyZS1leGl0IGZpbGUgaXMgc3BlY2lmaWVkLi4uCisgICAgaWYg
KCFwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8uZW1wdHkoKSkgeworICAgICAgLy8gY3JlYXRlIHRo
ZSBmaWxlIHdpdGggYSBzaW5nbGUgIjAiIGNoYXJhY3RlciBpbiBpdC4gIEkvTworICAgICAgLy8g
ZXJyb3JzIGFyZSBpZ25vcmVkIGFzIHRoZXJlJ3Mgbm90aGluZyBiZXR0ZXIgd2UgY2FuIGRvIGFu
ZCB3ZQorICAgICAgLy8gZG9uJ3Qgd2FudCB0byBmYWlsIHRoZSB0ZXN0IGJlY2F1c2Ugb2YgdGhp
cy4KKyAgICAgIEZJTEUqIHBmaWxlID0gcG9zaXg6OkZPcGVuKHByZW1hdHVyZV9leGl0X2ZpbGVw
YXRoLCAidyIpOworICAgICAgZndyaXRlKCIwIiwgMSwgMSwgcGZpbGUpOworICAgICAgZmNsb3Nl
KHBmaWxlKTsKKyAgICB9CisgIH0KKworICB+U2NvcGVkUHJlbWF0dXJlRXhpdEZpbGUoKSB7Cisg
ICAgaWYgKCFwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8uZW1wdHkoKSkgeworICAgICAgaW50IHJl
dHZhbCA9IHJlbW92ZShwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8uY19zdHIoKSk7CisgICAgICBp
ZiAocmV0dmFsKSB7CisgICAgICAgIEdURVNUX0xPR18oRVJST1IpIDw8ICJGYWlsZWQgdG8gcmVt
b3ZlIHByZW1hdHVyZSBleGl0IGZpbGVwYXRoIFwiIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCBwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8gPDwgIlwiIHdpdGggZXJyb3IgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCByZXR2YWw7CisgICAgICB9CisgICAgfQorICB9CisKKyBw
cml2YXRlOgorICBjb25zdCBzdGQ6OnN0cmluZyBwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF87CisK
KyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTY29wZWRQcmVtYXR1cmVFeGl0Rmls
ZSk7Cit9OworCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAogLy8gY2xhc3MgVGVzdEV2ZW50
TGlzdGVuZXJzCkBAIC0zNDMxLDcgKzQ0OTMsNyBAQCB2b2lkIFRlc3RFdmVudExpc3RlbmVyczo6
U3VwcHJlc3NFdmVudEZvcndhcmRpbmcoKSB7CiAvLyBXZSBkb24ndCBwcm90ZWN0IHRoaXMgdW5k
ZXIgbXV0ZXhfIGFzIGEgdXNlciBpcyBub3Qgc3VwcG9zZWQgdG8KIC8vIGNhbGwgdGhpcyBiZWZv
cmUgbWFpbigpIHN0YXJ0cywgZnJvbSB3aGljaCBwb2ludCBvbiB0aGUgcmV0dXJuCiAvLyB2YWx1
ZSB3aWxsIG5ldmVyIGNoYW5nZS4KLVVuaXRUZXN0ICogVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkg
eworVW5pdFRlc3QqIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpIHsKICAgLy8gV2hlbiBjb21waWxl
ZCB3aXRoIE1TVkMgNy4xIGluIG9wdGltaXplZCBtb2RlLCBkZXN0cm95aW5nIHRoZQogICAvLyBV
bml0VGVzdCBvYmplY3QgdXBvbiBleGl0aW5nIHRoZSBwcm9ncmFtIG1lc3NlcyB1cCB0aGUgZXhp
dCBjb2RlLAogICAvLyBjYXVzaW5nIHN1Y2Nlc3NmdWwgdGVzdHMgdG8gYXBwZWFyIGZhaWxlZC4g
IFdlIGhhdmUgdG8gdXNlIGEKQEAgLTM0ODEsMTcgKzQ1NDMsMzMgQEAgaW50IFVuaXRUZXN0Ojpz
dWNjZXNzZnVsX3Rlc3RfY291bnQoKSBjb25zdCB7CiAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZmFp
bGVkIHRlc3RzLgogaW50IFVuaXRUZXN0OjpmYWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsgcmV0
dXJuIGltcGwoKS0+ZmFpbGVkX3Rlc3RfY291bnQoKTsgfQogCisvLyBHZXRzIHRoZSBudW1iZXIg
b2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0
LgoraW50IFVuaXRUZXN0OjpyZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7
CisgIHJldHVybiBpbXBsKCktPnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpOworfQor
CiAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMuCiBpbnQgVW5pdFRlc3Q6OmRp
c2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7CiAgIHJldHVybiBpbXBsKCktPmRpc2FibGVkX3Rl
c3RfY291bnQoKTsKIH0KIAorLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50
ZWQgaW4gdGhlIFhNTCByZXBvcnQuCitpbnQgVW5pdFRlc3Q6OnJlcG9ydGFibGVfdGVzdF9jb3Vu
dCgpIGNvbnN0IHsKKyAgcmV0dXJuIGltcGwoKS0+cmVwb3J0YWJsZV90ZXN0X2NvdW50KCk7Cit9
CisKIC8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdHMuCiBpbnQgVW5pdFRlc3Q6OnRvdGFs
X3Rlc3RfY291bnQoKSBjb25zdCB7IHJldHVybiBpbXBsKCktPnRvdGFsX3Rlc3RfY291bnQoKTsg
fQogCiAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdGhhdCBzaG91bGQgcnVuLgogaW50IFVu
aXRUZXN0Ojp0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0IHsgcmV0dXJuIGltcGwoKS0+dGVzdF90
b19ydW5fY291bnQoKTsgfQogCisvLyBHZXRzIHRoZSB0aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0g
c3RhcnQsIGluIG1zIGZyb20gdGhlIHN0YXJ0IG9mIHRoZQorLy8gVU5JWCBlcG9jaC4KK2ludGVy
bmFsOjpUaW1lSW5NaWxsaXMgVW5pdFRlc3Q6OnN0YXJ0X3RpbWVzdGFtcCgpIGNvbnN0IHsKKyAg
ICByZXR1cm4gaW1wbCgpLT5zdGFydF90aW1lc3RhbXAoKTsKK30KKwogLy8gR2V0cyB0aGUgZWxh
cHNlZCB0aW1lLCBpbiBtaWxsaXNlY29uZHMuCiBpbnRlcm5hbDo6VGltZUluTWlsbGlzIFVuaXRU
ZXN0OjplbGFwc2VkX3RpbWUoKSBjb25zdCB7CiAgIHJldHVybiBpbXBsKCktPmVsYXBzZWRfdGlt
ZSgpOwpAQCAtMzUxMCw2ICs0NTg4LDEyIEBAIGNvbnN0IFRlc3RDYXNlKiBVbml0VGVzdDo6R2V0
VGVzdENhc2UoaW50IGkpIGNvbnN0IHsKICAgcmV0dXJuIGltcGwoKS0+R2V0VGVzdENhc2UoaSk7
CiB9CiAKKy8vIFJldHVybnMgdGhlIFRlc3RSZXN1bHQgY29udGFpbmluZyBpbmZvcm1hdGlvbiBv
biB0ZXN0IGZhaWx1cmVzIGFuZAorLy8gcHJvcGVydGllcyBsb2dnZWQgb3V0c2lkZSBvZiBpbmRp
dmlkdWFsIHRlc3QgY2FzZXMuCitjb25zdCBUZXN0UmVzdWx0JiBVbml0VGVzdDo6YWRfaG9jX3Rl
c3RfcmVzdWx0KCkgY29uc3QgeworICByZXR1cm4gKmltcGwoKS0+YWRfaG9jX3Rlc3RfcmVzdWx0
KCk7Cit9CisKIC8vIEdldHMgdGhlIGktdGggdGVzdCBjYXNlIGFtb25nIGFsbCB0aGUgdGVzdCBj
YXNlcy4gaSBjYW4gcmFuZ2UgZnJvbSAwIHRvCiAvLyB0b3RhbF90ZXN0X2Nhc2VfY291bnQoKSAt
IDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVMTC4KIFRlc3RDYXNlKiBV
bml0VGVzdDo6R2V0TXV0YWJsZVRlc3RDYXNlKGludCBpKSB7CkBAIC0zNTQxLDI5ICs0NjI1LDE2
IEBAIEVudmlyb25tZW50KiBVbml0VGVzdDo6QWRkRW52aXJvbm1lbnQoRW52aXJvbm1lbnQqIGVu
dikgewogICByZXR1cm4gZW52OwogfQogCi0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLS8vIEEg
ZmFpbGVkIEdvb2dsZSBUZXN0IGFzc2VydGlvbiB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBvZiB0
aGlzIHR5cGUKLS8vIHdoZW4gZXhjZXB0aW9ucyBhcmUgZW5hYmxlZC4gIFdlIGRlcml2ZSBpdCBm
cm9tIHN0ZDo6cnVudGltZV9lcnJvciwKLS8vIHdoaWNoIGlzIGZvciBlcnJvcnMgcHJlc3VtYWJs
eSBkZXRlY3RhYmxlIG9ubHkgYXQgcnVuIHRpbWUuICBTaW5jZQotLy8gc3RkOjpydW50aW1lX2Vy
cm9yIGluaGVyaXRzIGZyb20gc3RkOjpleGNlcHRpb24sIG1hbnkgdGVzdGluZwotLy8gZnJhbWV3
b3JrcyBrbm93IGhvdyB0byBleHRyYWN0IGFuZCBwcmludCB0aGUgbWVzc2FnZSBpbnNpZGUgaXQu
Ci1jbGFzcyBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbiA6IHB1YmxpYyA6OnN0ZDo6cnVudGlt
ZV9lcnJvciB7Ci0gcHVibGljOgotICBleHBsaWNpdCBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlv
bihjb25zdCBUZXN0UGFydFJlc3VsdCYgZmFpbHVyZSkKLSAgICAgIDogOjpzdGQ6OnJ1bnRpbWVf
ZXJyb3IoUHJpbnRUZXN0UGFydFJlc3VsdFRvU3RyaW5nKGZhaWx1cmUpLmNfc3RyKCkpIHt9Ci19
OwotI2VuZGlmCi0KIC8vIEFkZHMgYSBUZXN0UGFydFJlc3VsdCB0byB0aGUgY3VycmVudCBUZXN0
UmVzdWx0IG9iamVjdC4gIEFsbCBHb29nbGUgVGVzdAogLy8gYXNzZXJ0aW9uIG1hY3JvcyAoZS5n
LiBBU1NFUlRfVFJVRSwgRVhQRUNUX0VRLCBldGMpIGV2ZW50dWFsbHkgY2FsbAogLy8gdGhpcyB0
byByZXBvcnQgdGhlaXIgcmVzdWx0cy4gIFRoZSB1c2VyIGNvZGUgc2hvdWxkIHVzZSB0aGUKIC8v
IGFzc2VydGlvbiBtYWNyb3MgaW5zdGVhZCBvZiBjYWxsaW5nIHRoaXMgZGlyZWN0bHkuCi0vLyBM
IDwgbXV0ZXhfCi12b2lkIFVuaXRUZXN0OjpBZGRUZXN0UGFydFJlc3VsdChUZXN0UGFydFJlc3Vs
dDo6VHlwZSByZXN1bHRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGZpbGVfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBsaW5lX251bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlu
dGVybmFsOjpTdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBpbnRlcm5hbDo6U3RyaW5nJiBvc19zdGFja190cmFjZSkgewordm9pZCBVbml0VGVz
dDo6QWRkVGVzdFBhcnRSZXN1bHQoCisgICAgVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5
cGUsCisgICAgY29uc3QgY2hhciogZmlsZV9uYW1lLAorICAgIGludCBsaW5lX251bWJlciwKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3Nf
c3RhY2tfdHJhY2UpIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4XykgewogICBNZXNzYWdlIG1z
ZzsKICAgbXNnIDw8IG1lc3NhZ2U7CiAKQEAgLTM1OTYsMTcgKzQ2NjcsMjYgQEAgdm9pZCBVbml0
VGVzdDo6QWRkVGVzdFBhcnRSZXN1bHQoVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUs
CiAgICAgLy8gd2l0aCBhbm90aGVyIHRlc3RpbmcgZnJhbWV3b3JrKSBhbmQgc3BlY2lmeSB0aGUg
Zm9ybWVyIG9uIHRoZQogICAgIC8vIGNvbW1hbmQgbGluZSBmb3IgZGVidWdnaW5nLgogICAgIGlm
IChHVEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpKSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwor
I2lmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNU
X09TX1dJTkRPV1NfUlQKICAgICAgIC8vIFVzaW5nIERlYnVnQnJlYWsgb24gV2luZG93cyBhbGxv
d3MgZ3Rlc3QgdG8gc3RpbGwgYnJlYWsgaW50byBhIGRlYnVnZ2VyCiAgICAgICAvLyB3aGVuIGEg
ZmFpbHVyZSBoYXBwZW5zIGFuZCBib3RoIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgYW5k
CiAgICAgICAvLyB0aGUgLS1ndGVzdF9jYXRjaF9leGNlcHRpb25zIGZsYWdzIGFyZSBzcGVjaWZp
ZWQuCiAgICAgICBEZWJ1Z0JyZWFrKCk7CisjZWxpZiAoIWRlZmluZWQoX19uYXRpdmVfY2xpZW50
X18pKSAmJiAgICAgICAgICAgIFwKKyAgICAoKGRlZmluZWQoX19jbGFuZ19fKSB8fCBkZWZpbmVk
KF9fR05VQ19fKSkgJiYgXAorICAgICAoZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9f
aTM4Nl9fKSkpCisgICAgICAvLyB3aXRoIGNsYW5nL2djYyB3ZSBjYW4gYWNoaWV2ZSB0aGUgc2Ft
ZSBlZmZlY3Qgb24geDg2IGJ5IGludm9raW5nIGludDMKKyAgICAgIGFzbSgiaW50MyIpOwogI2Vs
c2UKKyAgICAgIC8vIERlcmVmZXJlbmNlIE5VTEwgdGhyb3VnaCBhIHZvbGF0aWxlIHBvaW50ZXIg
dG8gcHJldmVudCB0aGUgY29tcGlsZXIKKyAgICAgIC8vIGZyb20gcmVtb3ZpbmcuIFdlIHVzZSB0
aGlzIHJhdGhlciB0aGFuIGFib3J0KCkgb3IgX19idWlsdGluX3RyYXAoKSBmb3IKKyAgICAgIC8v
IHBvcnRhYmlsaXR5OiBTeW1iaWFuIGRvZXNuJ3QgaW1wbGVtZW50IGFib3J0KCkgd2VsbCwgYW5k
IHNvbWUgZGVidWdnZXJzCisgICAgICAvLyBkb24ndCBjb3JyZWN0bHkgdHJhcCBhYm9ydCgpLgog
ICAgICAgKnN0YXRpY19jYXN0PHZvbGF0aWxlIGludCo+KE5VTEwpID0gMTsKICNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUwogICAgIH0gZWxzZSBpZiAoR1RFU1RfRkxBRyh0aHJvd19vbl9mYWls
dXJlKSkgewogI2lmIEdURVNUX0hBU19FWENFUFRJT05TCi0gICAgICB0aHJvdyBHb29nbGVUZXN0
RmFpbHVyZUV4Y2VwdGlvbihyZXN1bHQpOworICAgICAgdGhyb3cgaW50ZXJuYWw6Okdvb2dsZVRl
c3RGYWlsdXJlRXhjZXB0aW9uKHJlc3VsdCk7CiAjZWxzZQogICAgICAgLy8gV2UgY2Fubm90IGNh
bGwgYWJvcnQoKSBhcyBpdCBnZW5lcmF0ZXMgYSBwb3AtdXAgaW4gZGVidWcgbW9kZQogICAgICAg
Ly8gdGhhdCBjYW5ub3QgYmUgc3VwcHJlc3NlZCBpbiBWQyA3LjEgb3IgYmVsb3cuCkBAIC0zNjE2
LDEyICs0Njk2LDE0IEBAIHZvaWQgVW5pdFRlc3Q6OkFkZFRlc3RQYXJ0UmVzdWx0KFRlc3RQYXJ0
UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAogICB9CiB9CiAKLS8vIENyZWF0ZXMgYW5kIGFkZHMg
YSBwcm9wZXJ0eSB0byB0aGUgY3VycmVudCBUZXN0UmVzdWx0LiBJZiBhIHByb3BlcnR5IG1hdGNo
aW5nCi0vLyB0aGUgc3VwcGxpZWQgdmFsdWUgYWxyZWFkeSBleGlzdHMsIHVwZGF0ZXMgaXRzIHZh
bHVlIGluc3RlYWQuCi12b2lkIFVuaXRUZXN0OjpSZWNvcmRQcm9wZXJ0eUZvckN1cnJlbnRUZXN0
KGNvbnN0IGNoYXIqIGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogdmFsdWUpIHsKLSAgY29uc3QgVGVzdFByb3BlcnR5IHRlc3RfcHJv
cGVydHkoa2V5LCB2YWx1ZSk7Ci0gIGltcGxfLT5jdXJyZW50X3Rlc3RfcmVzdWx0KCktPlJlY29y
ZFByb3BlcnR5KHRlc3RfcHJvcGVydHkpOworLy8gQWRkcyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUg
Y3VycmVudCBUZXN0UmVzdWx0IG9iamVjdCB3aGVuIGludm9rZWQgZnJvbQorLy8gaW5zaWRlIGEg
dGVzdCwgdG8gY3VycmVudCBUZXN0Q2FzZSdzIGFkX2hvY190ZXN0X3Jlc3VsdF8gd2hlbiBpbnZv
a2VkCisvLyBmcm9tIFNldFVwVGVzdENhc2Ugb3IgVGVhckRvd25UZXN0Q2FzZSwgb3IgdG8gdGhl
IGdsb2JhbCBwcm9wZXJ0eSBzZXQKKy8vIHdoZW4gaW52b2tlZCBlbHNld2hlcmUuICBJZiB0aGUg
cmVzdWx0IGFscmVhZHkgY29udGFpbnMgYSBwcm9wZXJ0eSB3aXRoCisvLyB0aGUgc2FtZSBrZXks
IHRoZSB2YWx1ZSB3aWxsIGJlIHVwZGF0ZWQuCit2b2lkIFVuaXRUZXN0OjpSZWNvcmRQcm9wZXJ0
eShjb25zdCBzdGQ6OnN0cmluZyYga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSB7CisgIGltcGxfLT5SZWNvcmRQcm9wZXJ0eShUZXN0
UHJvcGVydHkoa2V5LCB2YWx1ZSkpOwogfQogCiAvLyBSdW5zIGFsbCB0ZXN0cyBpbiB0aGlzIFVu
aXRUZXN0IG9iamVjdCBhbmQgcHJpbnRzIHRoZSByZXN1bHQuCkBAIC0zNjMwLDMxICs0NzEyLDU4
IEBAIHZvaWQgVW5pdFRlc3Q6OlJlY29yZFByb3BlcnR5Rm9yQ3VycmVudFRlc3QoY29uc3QgY2hh
cioga2V5LAogLy8gV2UgZG9uJ3QgcHJvdGVjdCB0aGlzIHVuZGVyIG11dGV4XywgYXMgd2Ugb25s
eSBzdXBwb3J0IGNhbGxpbmcgaXQKIC8vIGZyb20gdGhlIG1haW4gdGhyZWFkLgogaW50IFVuaXRU
ZXN0OjpSdW4oKSB7Ci0jaWYgR1RFU1RfSEFTX1NFSAotICAvLyBDYXRjaCBTRUgtc3R5bGUgZXhj
ZXB0aW9ucy4KLQogICBjb25zdCBib29sIGluX2RlYXRoX3Rlc3RfY2hpbGRfcHJvY2VzcyA9CiAg
ICAgICBpbnRlcm5hbDo6R1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkubGVuZ3Ro
KCkgPiAwOwogCisgIC8vIEdvb2dsZSBUZXN0IGltcGxlbWVudHMgdGhpcyBwcm90b2NvbCBmb3Ig
Y2F0Y2hpbmcgdGhhdCBhIHRlc3QKKyAgLy8gcHJvZ3JhbSBleGl0cyBiZWZvcmUgcmV0dXJuaW5n
IGNvbnRyb2wgdG8gR29vZ2xlIFRlc3Q6CisgIC8vCisgIC8vICAgMS4gVXBvbiBzdGFydCwgR29v
Z2xlIFRlc3QgY3JlYXRlcyBhIGZpbGUgd2hvc2UgYWJzb2x1dGUgcGF0aAorICAvLyAgICAgIGlz
IHNwZWNpZmllZCBieSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgLy8gICAgICBURVNUX1BS
RU1BVFVSRV9FWElUX0ZJTEUuCisgIC8vICAgMi4gV2hlbiBHb29nbGUgVGVzdCBoYXMgZmluaXNo
ZWQgaXRzIHdvcmssIGl0IGRlbGV0ZXMgdGhlIGZpbGUuCisgIC8vCisgIC8vIFRoaXMgYWxsb3dz
IGEgdGVzdCBydW5uZXIgdG8gc2V0IFRFU1RfUFJFTUFUVVJFX0VYSVRfRklMRSBiZWZvcmUKKyAg
Ly8gcnVubmluZyBhIEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QgcHJvZ3JhbSBhbmQgY2hlY2sgdGhl
IGV4aXN0ZW5jZQorICAvLyBvZiB0aGUgZmlsZSBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0IGV4ZWN1
dGlvbiB0byBzZWUgaWYgaXQgaGFzCisgIC8vIGV4aXRlZCBwcmVtYXR1cmVseS4KKworICAvLyBJ
ZiB3ZSBhcmUgaW4gdGhlIGNoaWxkIHByb2Nlc3Mgb2YgYSBkZWF0aCB0ZXN0LCBkb24ndAorICAv
LyBjcmVhdGUvZGVsZXRlIHRoZSBwcmVtYXR1cmUgZXhpdCBmaWxlLCBhcyBkb2luZyBzbyBpcyB1
bm5lY2Vzc2FyeQorICAvLyBhbmQgd2lsbCBjb25mdXNlIHRoZSBwYXJlbnQgcHJvY2Vzcy4gIE90
aGVyd2lzZSwgY3JlYXRlL2RlbGV0ZQorICAvLyB0aGUgZmlsZSB1cG9uIGVudGVyaW5nL2xlYXZp
bmcgdGhpcyBmdW5jdGlvbi4gIElmIHRoZSBwcm9ncmFtCisgIC8vIHNvbWVob3cgZXhpdHMgYmVm
b3JlIHRoaXMgZnVuY3Rpb24gaGFzIGEgY2hhbmNlIHRvIHJldHVybiwgdGhlCisgIC8vIHByZW1h
dHVyZS1leGl0IGZpbGUgd2lsbCBiZSBsZWZ0IHVuZGVsZXRlZCwgY2F1c2luZyBhIHRlc3QgcnVu
bmVyCisgIC8vIHRoYXQgdW5kZXJzdGFuZHMgdGhlIHByZW1hdHVyZS1leGl0LWZpbGUgcHJvdG9j
b2wgdG8gcmVwb3J0IHRoZQorICAvLyB0ZXN0IGFzIGhhdmluZyBmYWlsZWQuCisgIGNvbnN0IGlu
dGVybmFsOjpTY29wZWRQcmVtYXR1cmVFeGl0RmlsZSBwcmVtYXR1cmVfZXhpdF9maWxlKAorICAg
ICAgaW5fZGVhdGhfdGVzdF9jaGlsZF9wcm9jZXNzID8KKyAgICAgIE5VTEwgOiBpbnRlcm5hbDo6
cG9zaXg6OkdldEVudigiVEVTVF9QUkVNQVRVUkVfRVhJVF9GSUxFIikpOworCisgIC8vIENhcHR1
cmVzIHRoZSB2YWx1ZSBvZiBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpLiAgVGhpcyB2YWx1
ZSB3aWxsIGJlCisgIC8vIHVzZWQgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgcHJvZ3JhbS4KKyAg
aW1wbCgpLT5zZXRfY2F0Y2hfZXhjZXB0aW9ucyhHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMp
KTsKKworI2lmIEdURVNUX09TX1dJTkRPV1MKICAgLy8gRWl0aGVyIHRoZSB1c2VyIHdhbnRzIEdv
b2dsZSBUZXN0IHRvIGNhdGNoIGV4Y2VwdGlvbnMgdGhyb3duIGJ5IHRoZQogICAvLyB0ZXN0cyBv
ciB0aGlzIGlzIGV4ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiBkZWF0aCB0ZXN0IGNoaWxkCiAg
IC8vIHByb2Nlc3MuIEluIGVpdGhlciBjYXNlIHRoZSB1c2VyIGRvZXMgbm90IHdhbnQgdG8gc2Vl
IHBvcC11cCBkaWFsb2dzCi0gIC8vIGFib3V0IGNyYXNoZXMgLSB0aGV5IGFyZSBleHBlY3RlZC4u
Ci0gIGlmIChHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpIHx8IGluX2RlYXRoX3Rlc3RfY2hp
bGRfcHJvY2VzcykgewotI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorICAvLyBhYm91dCBj
cmFzaGVzIC0gdGhleSBhcmUgZXhwZWN0ZWQuCisgIGlmIChpbXBsKCktPmNhdGNoX2V4Y2VwdGlv
bnMoKSB8fCBpbl9kZWF0aF90ZXN0X2NoaWxkX3Byb2Nlc3MpIHsKKyMgaWYgIUdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFICYmICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5E
T1dTX1JUCiAgICAgLy8gU2V0RXJyb3JNb2RlIGRvZXNuJ3QgZXhpc3Qgb24gQ0UuCiAgICAgU2V0
RXJyb3JNb2RlKFNFTV9GQUlMQ1JJVElDQUxFUlJPUlMgfCBTRU1fTk9BTElHTk1FTlRGQVVMVEVY
Q0VQVCB8CiAgICAgICAgICAgICAgICAgIFNFTV9OT0dQRkFVTFRFUlJPUkJPWCB8IFNFTV9OT09Q
RU5GSUxFRVJST1JCT1gpOwotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMg
ZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQogCi0jaWYgKGRlZmluZWQoX01TQ19W
RVIpIHx8IEdURVNUX09TX1dJTkRPV1NfTUlOR1cpICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklM
RQorIyBpZiAoZGVmaW5lZChfTVNDX1ZFUikgfHwgR1RFU1RfT1NfV0lORE9XU19NSU5HVykgJiYg
IUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAgICAgLy8gRGVhdGggdGVzdCBjaGlsZHJlbiBjYW4g
YmUgdGVybWluYXRlZCB3aXRoIF9hYm9ydCgpLiAgT24gV2luZG93cywKICAgICAvLyBfYWJvcnQo
KSBjYW4gc2hvdyBhIGRpYWxvZyB3aXRoIGEgd2FybmluZyBtZXNzYWdlLiAgVGhpcyBmb3JjZXMg
dGhlCiAgICAgLy8gYWJvcnQgbWVzc2FnZSB0byBnbyB0byBzdGRlcnIgaW5zdGVhZC4KICAgICBf
c2V0X2Vycm9yX21vZGUoX09VVF9UT19TVERFUlIpOwotI2VuZGlmCisjIGVuZGlmCiAKLSNpZiBf
TVNDX1ZFUiA+PSAxNDAwICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBpZiBfTVNDX1ZF
UiA+PSAxNDAwICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQogICAgIC8vIEluIHRoZSBkZWJ1
ZyB2ZXJzaW9uLCBWaXN1YWwgU3R1ZGlvIHBvcHMgdXAgYSBzZXBhcmF0ZSBkaWFsb2cKICAgICAv
LyBvZmZlcmluZyBhIGNob2ljZSB0byBkZWJ1ZyB0aGUgYWJvcnRlZCBwcm9ncmFtLiBXZSBuZWVk
IHRvIHN1cHByZXNzCiAgICAgLy8gdGhpcyBkaWFsb2cgb3IgaXQgd2lsbCBwb3AgdXAgZm9yIGV2
ZXJ5IEVYUEVDVC9BU1NFUlRfREVBVEggc3RhdGVtZW50CkBAIC0zNjY0LDI4ICs0NzczLDIwIEBA
IGludCBVbml0VGVzdDo6UnVuKCkgewogICAgIC8vIFZDKysgZG9lc24ndCBkZWZpbmUgX3NldF9h
Ym9ydF9iZWhhdmlvcigpIHByaW9yIHRvIHRoZSB2ZXJzaW9uIDguMC4KICAgICAvLyBVc2VycyBv
ZiBwcmlvciBWQyB2ZXJzaW9ucyBzaGFsbCBzdWZmZXIgdGhlIGFnb255IGFuZCBwYWluIG9mCiAg
ICAgLy8gY2xpY2tpbmcgdGhyb3VnaCB0aGUgY291bnRsZXNzIGRlYnVnIGRpYWxvZ3MuCi0gICAg
Ly8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogZmluZCBhIHdheSB0byBzdXBwcmVzcyB0aGUgYWJv
cnQgZGlhbG9nKCkgaW4gdGhlCisgICAgLy8gRklYTUU6IGZpbmQgYSB3YXkgdG8gc3VwcHJlc3Mg
dGhlIGFib3J0IGRpYWxvZygpIGluIHRoZQogICAgIC8vIGRlYnVnIG1vZGUgd2hlbiBjb21waWxl
ZCB3aXRoIFZDIDcuMSBvciBsb3dlci4KICAgICBpZiAoIUdURVNUX0ZMQUcoYnJlYWtfb25fZmFp
bHVyZSkpCiAgICAgICBfc2V0X2Fib3J0X2JlaGF2aW9yKAogICAgICAgICAgIDB4MCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDbGVhciB0aGUgZm9sbG93aW5nIGZsYWdz
OgogICAgICAgICAgIF9XUklURV9BQk9SVF9NU0cgfCBfQ0FMTF9SRVBPUlRGQVVMVCk7ICAvLyBw
b3AtdXAgd2luZG93LCBjb3JlIGR1bXAuCi0jZW5kaWYKKyMgZW5kaWYKICAgfQorI2VuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTCiAKLSAgX190cnkgewotICAgIHJldHVybiBpbXBsXy0+UnVuQWxs
VGVzdHMoKTsKLSAgfSBfX2V4Y2VwdChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpHVGVzdFNo
b3VsZFByb2Nlc3NTRUgoCi0gICAgICBHZXRFeGNlcHRpb25Db2RlKCkpKSB7Ci0gICAgcHJpbnRm
KCJFeGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAweCV4LlxuRkFJTFxuIiwgR2V0RXhjZXB0aW9u
Q29kZSgpKTsKLSAgICBmZmx1c2goc3Rkb3V0KTsKLSAgICByZXR1cm4gMTsKLSAgfQotCi0jZWxz
ZSAgLy8gV2UgYXJlIG9uIGEgY29tcGlsZXIgb3IgcGxhdGZvcm0gdGhhdCBkb2Vzbid0IHN1cHBv
cnQgU0VILgotCi0gIHJldHVybiBpbXBsXy0+UnVuQWxsVGVzdHMoKTsKLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX1NFSAorICByZXR1cm4gaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElm
U3VwcG9ydGVkKAorICAgICAgaW1wbCgpLAorICAgICAgJmludGVybmFsOjpVbml0VGVzdEltcGw6
OlJ1bkFsbFRlc3RzLAorICAgICAgImF1eGlsaWFyeSB0ZXN0IGNvZGUgKGVudmlyb25tZW50cyBv
ciBldmVudCBsaXN0ZW5lcnMpIikgPyAwIDogMTsKIH0KIAogLy8gUmV0dXJucyB0aGUgd29ya2lu
ZyBkaXJlY3Rvcnkgd2hlbiB0aGUgZmlyc3QgVEVTVCgpIG9yIFRFU1RfRigpIHdhcwpAQCAtMzY5
NiwxNiArNDc5NywxNiBAQCBjb25zdCBjaGFyKiBVbml0VGVzdDo6b3JpZ2luYWxfd29ya2luZ19k
aXIoKSBjb25zdCB7CiAKIC8vIFJldHVybnMgdGhlIFRlc3RDYXNlIG9iamVjdCBmb3IgdGhlIHRl
c3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLAogLy8gb3IgTlVMTCBpZiBubyB0ZXN0IGlzIHJ1
bm5pbmcuCi0vLyBMIDwgbXV0ZXhfCi1jb25zdCBUZXN0Q2FzZSogVW5pdFRlc3Q6OmN1cnJlbnRf
dGVzdF9jYXNlKCkgY29uc3QgeworY29uc3QgVGVzdENhc2UqIFVuaXRUZXN0OjpjdXJyZW50X3Rl
c3RfY2FzZSgpIGNvbnN0CisgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7CiAgIGlu
dGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKICAgcmV0dXJuIGltcGxfLT5jdXJyZW50
X3Rlc3RfY2FzZSgpOwogfQogCiAvLyBSZXR1cm5zIHRoZSBUZXN0SW5mbyBvYmplY3QgZm9yIHRo
ZSB0ZXN0IHRoYXQncyBjdXJyZW50bHkgcnVubmluZywKIC8vIG9yIE5VTEwgaWYgbm8gdGVzdCBp
cyBydW5uaW5nLgotLy8gTCA8IG11dGV4XwotY29uc3QgVGVzdEluZm8qIFVuaXRUZXN0OjpjdXJy
ZW50X3Rlc3RfaW5mbygpIGNvbnN0IHsKK2NvbnN0IFRlc3RJbmZvKiBVbml0VGVzdDo6Y3VycmVu
dF90ZXN0X2luZm8oKSBjb25zdAorICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4Xykgewog
ICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7CiAgIHJldHVybiBpbXBsXy0+Y3Vy
cmVudF90ZXN0X2luZm8oKTsKIH0KQEAgLTM3MTMsMTUgKzQ4MTQsMTMgQEAgY29uc3QgVGVzdElu
Zm8qIFVuaXRUZXN0OjpjdXJyZW50X3Rlc3RfaW5mbygpIGNvbnN0IHsKIC8vIFJldHVybnMgdGhl
IHJhbmRvbSBzZWVkIHVzZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50IHRlc3QgcnVuLgog
aW50IFVuaXRUZXN0OjpyYW5kb21fc2VlZCgpIGNvbnN0IHsgcmV0dXJuIGltcGxfLT5yYW5kb21f
c2VlZCgpOyB9CiAKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAogLy8gUmV0dXJucyBQYXJhbWV0
ZXJpemVkVGVzdENhc2VSZWdpc3RyeSBvYmplY3QgdXNlZCB0byBrZWVwIHRyYWNrIG9mCiAvLyB2
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFuZCBpbnN0YW50aWF0ZSBhbmQgcmVnaXN0ZXIgdGhl
bS4KLS8vIEwgPCBtdXRleF8KIGludGVybmFsOjpQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3Ry
eSYKLSAgICBVbml0VGVzdDo6cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkgeworICAgIFVu
aXRUZXN0OjpwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKQorICAgICAgICBHVEVTVF9MT0NL
X0VYQ0xVREVEXyhtdXRleF8pIHsKICAgcmV0dXJuIGltcGxfLT5wYXJhbWV0ZXJpemVkX3Rlc3Rf
cmVnaXN0cnkoKTsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIAogLy8gQ3Jl
YXRlcyBhbiBlbXB0eSBVbml0VGVzdC4KIFVuaXRUZXN0OjpVbml0VGVzdCgpIHsKQEAgLTM3MzUs
MTUgKzQ4MzQsMTUgQEAgVW5pdFRlc3Q6On5Vbml0VGVzdCgpIHsKIAogLy8gUHVzaGVzIGEgdHJh
Y2UgZGVmaW5lZCBieSBTQ09QRURfVFJBQ0UoKSBvbiB0byB0aGUgcGVyLXRocmVhZAogLy8gR29v
Z2xlIFRlc3QgdHJhY2Ugc3RhY2suCi0vLyBMIDwgbXV0ZXhfCi12b2lkIFVuaXRUZXN0OjpQdXNo
R1Rlc3RUcmFjZShjb25zdCBpbnRlcm5hbDo6VHJhY2VJbmZvJiB0cmFjZSkgewordm9pZCBVbml0
VGVzdDo6UHVzaEdUZXN0VHJhY2UoY29uc3QgaW50ZXJuYWw6OlRyYWNlSW5mbyYgdHJhY2UpCisg
ICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7CiAgIGludGVybmFsOjpNdXRleExvY2sg
bG9jaygmbXV0ZXhfKTsKICAgaW1wbF8tPmd0ZXN0X3RyYWNlX3N0YWNrKCkucHVzaF9iYWNrKHRy
YWNlKTsKIH0KIAogLy8gUG9wcyBhIHRyYWNlIGZyb20gdGhlIHBlci10aHJlYWQgR29vZ2xlIFRl
c3QgdHJhY2Ugc3RhY2suCi0vLyBMIDwgbXV0ZXhfCi12b2lkIFVuaXRUZXN0OjpQb3BHVGVzdFRy
YWNlKCkgewordm9pZCBVbml0VGVzdDo6UG9wR1Rlc3RUcmFjZSgpCisgICAgR1RFU1RfTE9DS19F
WENMVURFRF8obXV0ZXhfKSB7CiAgIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsK
ICAgaW1wbF8tPmd0ZXN0X3RyYWNlX3N0YWNrKCkucG9wX2JhY2soKTsKIH0KQEAgLTM3NTIsMjUg
KzQ4NTEsMTYgQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIAogVW5pdFRlc3RJbXBsOjpVbml0VGVz
dEltcGwoVW5pdFRlc3QqIHBhcmVudCkKICAgICA6IHBhcmVudF8ocGFyZW50KSwKLSNpZmRlZiBf
TVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpICAgICAgICAgICAgICAgICAgICAvLyBTYXZl
cyB0aGUgY3VycmVudCB3YXJuaW5nIHN0YXRlLgotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDM1
NSkgICAgICAgICAgICAvLyBUZW1wb3JhcmlseSBkaXNhYmxlcyB3YXJuaW5nIDQzNTUKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHVzaW5nIHRoaXMgaW4gaW5p
dGlhbGl6ZXIpLgotICAgICAgZGVmYXVsdF9nbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRl
cl8odGhpcyksCi0gICAgICBkZWZhdWx0X3Blcl90aHJlYWRfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBv
cnRlcl8odGhpcyksCi0jcHJhZ21hIHdhcm5pbmcocG9wKSAgICAgICAgICAgICAgICAgICAgIC8v
IFJlc3RvcmVzIHRoZSB3YXJuaW5nIHN0YXRlIGFnYWluLgotI2Vsc2UKKyAgICAgIEdURVNUX0RJ
U0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQzNTUgLyogdXNpbmcgdGhpcyBpbiBpbml0aWFsaXpl
ciAqLykKICAgICAgIGRlZmF1bHRfZ2xvYmFsX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfKHRo
aXMpLAogICAgICAgZGVmYXVsdF9wZXJfdGhyZWFkX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJf
KHRoaXMpLAotI2VuZGlmICAvLyBfTVNDX1ZFUgorICAgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FS
TklOR1NfUE9QXygpCiAgICAgICBnbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvdGVyXygKICAg
ICAgICAgICAmZGVmYXVsdF9nbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8pLAogICAg
ICAgcGVyX3RocmVhZF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXygKICAgICAgICAgICAmZGVm
YXVsdF9wZXJfdGhyZWFkX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfKSwKLSNpZiBHVEVTVF9I
QVNfUEFSQU1fVEVTVAogICAgICAgcGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5XygpLAogICAg
ICAgcGFyYW1ldGVyaXplZF90ZXN0c19yZWdpc3RlcmVkXyhmYWxzZSksCi0jZW5kaWYgIC8vIEdU
RVNUX0hBU19QQVJBTV9URVNUCiAgICAgICBsYXN0X2RlYXRoX3Rlc3RfY2FzZV8oLTEpLAogICAg
ICAgY3VycmVudF90ZXN0X2Nhc2VfKE5VTEwpLAogICAgICAgY3VycmVudF90ZXN0X2luZm9fKE5V
TEwpLApAQCAtMzc3OSwxMyArNDg2OSwxMyBAQCBVbml0VGVzdEltcGw6OlVuaXRUZXN0SW1wbChV
bml0VGVzdCogcGFyZW50KQogICAgICAgcG9zdF9mbGFnX3BhcnNlX2luaXRfcGVyZm9ybWVkXyhm
YWxzZSksCiAgICAgICByYW5kb21fc2VlZF8oMCksICAvLyBXaWxsIGJlIG92ZXJyaWRkZW4gYnkg
dGhlIGZsYWcgYmVmb3JlIGZpcnN0IHVzZS4KICAgICAgIHJhbmRvbV8oMCksICAvLyBXaWxsIGJl
IHJlc2VlZGVkIGJlZm9yZSBmaXJzdCB1c2UuCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKyAg
ICAgIHN0YXJ0X3RpbWVzdGFtcF8oMCksCiAgICAgICBlbGFwc2VkX3RpbWVfKDApLAotICAgICAg
aW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfZmxhZ18oTlVMTCksCi0gICAgICBkZWF0aF90ZXN0X2Zh
Y3RvcnlfKG5ldyBEZWZhdWx0RGVhdGhUZXN0RmFjdG9yeSkgewotI2Vsc2UKLSAgICAgIGVsYXBz
ZWRfdGltZV8oMCkgewotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorI2lmIEdURVNU
X0hBU19ERUFUSF9URVNUCisgICAgICBkZWF0aF90ZXN0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0RGVh
dGhUZXN0RmFjdG9yeSksCisjZW5kaWYKKyAgICAgIC8vIFdpbGwgYmUgb3ZlcnJpZGRlbiBieSB0
aGUgZmxhZyBiZWZvcmUgZmlyc3QgdXNlLgorICAgICAgY2F0Y2hfZXhjZXB0aW9uc18oZmFsc2Up
IHsKICAgbGlzdGVuZXJzKCktPlNldERlZmF1bHRSZXN1bHRQcmludGVyKG5ldyBQcmV0dHlVbml0
VGVzdFJlc3VsdFByaW50ZXIpOwogfQogCkBAIC0zNzk5LDYgKzQ4ODksMjggQEAgVW5pdFRlc3RJ
bXBsOjp+VW5pdFRlc3RJbXBsKCkgewogICBkZWxldGUgb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXzsK
IH0KIAorLy8gQWRkcyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUgY3VycmVudCBUZXN0UmVzdWx0IG9i
amVjdCB3aGVuIGludm9rZWQgaW4gYQorLy8gY29udGV4dCBvZiBhIHRlc3QsIHRvIGN1cnJlbnQg
dGVzdCBjYXNlJ3MgYWRfaG9jX3Rlc3RfcmVzdWx0IHdoZW4gaW52b2tlCisvLyBmcm9tIFNldFVw
VGVzdENhc2UvVGVhckRvd25UZXN0Q2FzZSwgb3IgdG8gdGhlIGdsb2JhbCBwcm9wZXJ0eSBzZXQK
Ky8vIG90aGVyd2lzZS4gIElmIHRoZSByZXN1bHQgYWxyZWFkeSBjb250YWlucyBhIHByb3BlcnR5
IHdpdGggdGhlIHNhbWUga2V5LAorLy8gdGhlIHZhbHVlIHdpbGwgYmUgdXBkYXRlZC4KK3ZvaWQg
VW5pdFRlc3RJbXBsOjpSZWNvcmRQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJv
cGVydHkpIHsKKyAgc3RkOjpzdHJpbmcgeG1sX2VsZW1lbnQ7CisgIFRlc3RSZXN1bHQqIHRlc3Rf
cmVzdWx0OyAgLy8gVGVzdFJlc3VsdCBhcHByb3ByaWF0ZSBmb3IgcHJvcGVydHkgcmVjb3JkaW5n
LgorCisgIGlmIChjdXJyZW50X3Rlc3RfaW5mb18gIT0gTlVMTCkgeworICAgIHhtbF9lbGVtZW50
ID0gInRlc3RjYXNlIjsKKyAgICB0ZXN0X3Jlc3VsdCA9ICYoY3VycmVudF90ZXN0X2luZm9fLT5y
ZXN1bHRfKTsKKyAgfSBlbHNlIGlmIChjdXJyZW50X3Rlc3RfY2FzZV8gIT0gTlVMTCkgeworICAg
IHhtbF9lbGVtZW50ID0gInRlc3RzdWl0ZSI7CisgICAgdGVzdF9yZXN1bHQgPSAmKGN1cnJlbnRf
dGVzdF9jYXNlXy0+YWRfaG9jX3Rlc3RfcmVzdWx0Xyk7CisgIH0gZWxzZSB7CisgICAgeG1sX2Vs
ZW1lbnQgPSAidGVzdHN1aXRlcyI7CisgICAgdGVzdF9yZXN1bHQgPSAmYWRfaG9jX3Rlc3RfcmVz
dWx0XzsKKyAgfQorICB0ZXN0X3Jlc3VsdC0+UmVjb3JkUHJvcGVydHkoeG1sX2VsZW1lbnQsIHRl
c3RfcHJvcGVydHkpOworfQorCiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKIC8vIERpc2FibGVz
IGV2ZW50IGZvcndhcmRpbmcgaWYgdGhlIGNvbnRyb2wgaXMgY3VycmVudGx5IGluIGEgZGVhdGgg
dGVzdAogLy8gc3VicHJvY2Vzcy4gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBJbml0R29vZ2xl
VGVzdC4KQEAgLTM4MTEsMTcgKzQ5MjMsMzcgQEAgdm9pZCBVbml0VGVzdEltcGw6OlN1cHByZXNz
VGVzdEV2ZW50c0lmSW5TdWJwcm9jZXNzKCkgewogLy8gSW5pdGlhbGl6ZXMgZXZlbnQgbGlzdGVu
ZXJzIHBlcmZvcm1pbmcgWE1MIG91dHB1dCBhcyBzcGVjaWZpZWQgYnkKIC8vIFVuaXRUZXN0T3B0
aW9ucy4gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBJbml0R29vZ2xlVGVzdC4KIHZvaWQgVW5p
dFRlc3RJbXBsOjpDb25maWd1cmVYbWxPdXRwdXQoKSB7Ci0gIGNvbnN0IFN0cmluZyYgb3V0cHV0
X2Zvcm1hdCA9IFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCk7CisgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBvdXRwdXRfZm9ybWF0ID0gVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3Jt
YXQoKTsKICAgaWYgKG91dHB1dF9mb3JtYXQgPT0gInhtbCIpIHsKICAgICBsaXN0ZW5lcnMoKS0+
U2V0RGVmYXVsdFhtbEdlbmVyYXRvcihuZXcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyKAogICAg
ICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3Ry
KCkpKTsKKyAgfSBlbHNlIGlmIChvdXRwdXRfZm9ybWF0ID09ICJqc29uIikgeworICAgIGxpc3Rl
bmVycygpLT5TZXREZWZhdWx0WG1sR2VuZXJhdG9yKG5ldyBKc29uVW5pdFRlc3RSZXN1bHRQcmlu
dGVyKAorICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0Rmls
ZSgpLmNfc3RyKCkpKTsKICAgfSBlbHNlIGlmIChvdXRwdXRfZm9ybWF0ICE9ICIiKSB7Ci0gICAg
cHJpbnRmKCJXQVJOSU5HOiB1bnJlY29nbml6ZWQgb3V0cHV0IGZvcm1hdCBcIiVzXCIgaWdub3Jl
ZC5cbiIsCi0gICAgICAgICAgIG91dHB1dF9mb3JtYXQuY19zdHIoKSk7Ci0gICAgZmZsdXNoKHN0
ZG91dCk7CisgICAgR1RFU1RfTE9HXyhXQVJOSU5HKSA8PCAiV0FSTklORzogdW5yZWNvZ25pemVk
IG91dHB1dCBmb3JtYXQgXCIiCisgICAgICAgICAgICAgICAgICAgICAgICA8PCBvdXRwdXRfZm9y
bWF0IDw8ICJcIiBpZ25vcmVkLiI7CiAgIH0KIH0KIAorI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVT
VUxUU18KKy8vIEluaXRpYWxpemVzIGV2ZW50IGxpc3RlbmVycyBmb3Igc3RyZWFtaW5nIHRlc3Qg
cmVzdWx0cyBpbiBzdHJpbmcgZm9ybS4KKy8vIE11c3Qgbm90IGJlIGNhbGxlZCBiZWZvcmUgSW5p
dEdvb2dsZVRlc3QuCit2b2lkIFVuaXRUZXN0SW1wbDo6Q29uZmlndXJlU3RyZWFtaW5nT3V0cHV0
KCkgeworICBjb25zdCBzdGQ6OnN0cmluZyYgdGFyZ2V0ID0gR1RFU1RfRkxBRyhzdHJlYW1fcmVz
dWx0X3RvKTsKKyAgaWYgKCF0YXJnZXQuZW1wdHkoKSkgeworICAgIGNvbnN0IHNpemVfdCBwb3Mg
PSB0YXJnZXQuZmluZCgnOicpOworICAgIGlmIChwb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsK
KyAgICAgIGxpc3RlbmVycygpLT5BcHBlbmQobmV3IFN0cmVhbWluZ0xpc3RlbmVyKHRhcmdldC5z
dWJzdHIoMCwgcG9zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRhcmdldC5zdWJzdHIocG9zKzEpKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIEdURVNU
X0xPR18oV0FSTklORykgPDwgInVucmVjb2duaXplZCBzdHJlYW1pbmcgdGFyZ2V0IFwiIiA8PCB0
YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlwiIGlnbm9yZWQuIjsKKyAgICB9
CisgIH0KK30KKyNlbmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworCiAvLyBQZXJm
b3JtcyBpbml0aWFsaXphdGlvbiBkZXBlbmRlbnQgdXBvbiBmbGFnIHZhbHVlcyBvYnRhaW5lZCBp
bgogLy8gUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5LiAgSXMgY2FsbGVkIGZyb20gSW5pdEdvb2ds
ZVRlc3QgYWZ0ZXIgdGhlIGNhbGwgdG8KIC8vIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seS4gIElu
IGNhc2UgYSB1c2VyIG5lZ2xlY3RzIHRvIGNhbGwgSW5pdEdvb2dsZVRlc3QKQEAgLTM4MzIsNiAr
NDk2NCwxMSBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6UG9zdEZsYWdQYXJzaW5nSW5pdCgpIHsKICAg
aWYgKCFwb3N0X2ZsYWdfcGFyc2VfaW5pdF9wZXJmb3JtZWRfKSB7CiAgICAgcG9zdF9mbGFnX3Bh
cnNlX2luaXRfcGVyZm9ybWVkXyA9IHRydWU7CiAKKyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9U
RVNUX0VWRU5UX0xJU1RFTkVSXykKKyAgICAvLyBSZWdpc3RlciB0byBzZW5kIG5vdGlmaWNhdGlv
bnMgYWJvdXQga2V5IHByb2Nlc3Mgc3RhdGUgY2hhbmdlcy4KKyAgICBsaXN0ZW5lcnMoKS0+QXBw
ZW5kKG5ldyBHVEVTVF9DVVNUT01fVEVTVF9FVkVOVF9MSVNURU5FUl8oKSk7CisjZW5kaWYgIC8v
IGRlZmluZWQoR1RFU1RfQ1VTVE9NX1RFU1RfRVZFTlRfTElTVEVORVJfKQorCiAjaWYgR1RFU1Rf
SEFTX0RFQVRIX1RFU1QKICAgICBJbml0RGVhdGhUZXN0U3VicHJvY2Vzc0NvbnRyb2xJbmZvKCk7
CiAgICAgU3VwcHJlc3NUZXN0RXZlbnRzSWZJblN1YnByb2Nlc3MoKTsKQEAgLTM4NDUsNiArNDk4
MiwxOCBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6UG9zdEZsYWdQYXJzaW5nSW5pdCgpIHsKICAgICAv
LyBDb25maWd1cmVzIGxpc3RlbmVycyBmb3IgWE1MIG91dHB1dC4gVGhpcyBtYWtlcyBpdCBwb3Nz
aWJsZSBmb3IgdXNlcnMKICAgICAvLyB0byBzaHV0IGRvd24gdGhlIGRlZmF1bHQgWE1MIG91dHB1
dCBiZWZvcmUgaW52b2tpbmcgUlVOX0FMTF9URVNUUy4KICAgICBDb25maWd1cmVYbWxPdXRwdXQo
KTsKKworI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKyAgICAvLyBDb25maWd1cmVzIGxp
c3RlbmVycyBmb3Igc3RyZWFtaW5nIHRlc3QgcmVzdWx0cyB0byB0aGUgc3BlY2lmaWVkIHNlcnZl
ci4KKyAgICBDb25maWd1cmVTdHJlYW1pbmdPdXRwdXQoKTsKKyNlbmRpZiAgLy8gR1RFU1RfQ0FO
X1NUUkVBTV9SRVNVTFRTXworCisjaWYgR1RFU1RfSEFTX0FCU0wKKyAgICBpZiAoR1RFU1RfRkxB
RyhpbnN0YWxsX2ZhaWx1cmVfc2lnbmFsX2hhbmRsZXIpKSB7CisgICAgICBhYnNsOjpGYWlsdXJl
U2lnbmFsSGFuZGxlck9wdGlvbnMgb3B0aW9uczsKKyAgICAgIGFic2w6Okluc3RhbGxGYWlsdXJl
U2lnbmFsSGFuZGxlcihvcHRpb25zKTsKKyAgICB9CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNM
CiAgIH0KIH0KIApAQCAtMzg1OSw3ICs1MDA4LDcgQEAgdm9pZCBVbml0VGVzdEltcGw6OlBvc3RG
bGFnUGFyc2luZ0luaXQoKSB7CiBjbGFzcyBUZXN0Q2FzZU5hbWVJcyB7CiAgcHVibGljOgogICAv
LyBDb25zdHJ1Y3Rvci4KLSAgZXhwbGljaXQgVGVzdENhc2VOYW1lSXMoY29uc3QgU3RyaW5nJiBu
YW1lKQorICBleHBsaWNpdCBUZXN0Q2FzZU5hbWVJcyhjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkK
ICAgICAgIDogbmFtZV8obmFtZSkge30KIAogICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBuYW1l
IG9mIHRlc3RfY2FzZSBtYXRjaGVzIG5hbWVfLgpAQCAtMzg2OCw3ICs1MDE3LDcgQEAgY2xhc3Mg
VGVzdENhc2VOYW1lSXMgewogICB9CiAKICBwcml2YXRlOgotICBTdHJpbmcgbmFtZV87CisgIHN0
ZDo6c3RyaW5nIG5hbWVfOwogfTsKIAogLy8gRmluZHMgYW5kIHJldHVybnMgYSBUZXN0Q2FzZSB3
aXRoIHRoZSBnaXZlbiBuYW1lLiAgSWYgb25lIGRvZXNuJ3QKQEAgLTM4NzksMjYgKzUwMjgsMjgg
QEAgY2xhc3MgVGVzdENhc2VOYW1lSXMgewogLy8gQXJndW1lbnRzOgogLy8KIC8vICAgdGVzdF9j
YXNlX25hbWU6IG5hbWUgb2YgdGhlIHRlc3QgY2FzZQorLy8gICB0eXBlX3BhcmFtOiAgICAgdGhl
IG5hbWUgb2YgdGhlIHRlc3QgY2FzZSdzIHR5cGUgcGFyYW1ldGVyLCBvciBOVUxMIGlmCisvLyAg
ICAgICAgICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3QgY2FzZS4KIC8vICAgc2V0X3VwX3RjOiAgICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0
aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBjYXNlCiAvLyAgIHRlYXJfZG93bl90YzogICBwb2lu
dGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQogVGVzdENh
c2UqIFVuaXRUZXN0SW1wbDo6R2V0VGVzdENhc2UoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb21tZW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdHlwZV9w
YXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3Q6OlNldFVwVGVz
dENhc2VGdW5jIHNldF91cF90YywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YykgewogICAvLyBDYW4gd2Ug
ZmluZCBhIFRlc3RDYXNlIHdpdGggdGhlIGdpdmVuIG5hbWU/Ci0gIGNvbnN0IHN0ZDo6dmVjdG9y
PFRlc3RDYXNlKj46OmNvbnN0X2l0ZXJhdG9yIHRlc3RfY2FzZSA9Ci0gICAgICBzdGQ6OmZpbmRf
aWYodGVzdF9jYXNlc18uYmVnaW4oKSwgdGVzdF9jYXNlc18uZW5kKCksCisgIGNvbnN0IHN0ZDo6
dmVjdG9yPFRlc3RDYXNlKj46OmNvbnN0X3JldmVyc2VfaXRlcmF0b3IgdGVzdF9jYXNlID0KKyAg
ICAgIHN0ZDo6ZmluZF9pZih0ZXN0X2Nhc2VzXy5yYmVnaW4oKSwgdGVzdF9jYXNlc18ucmVuZCgp
LAogICAgICAgICAgICAgICAgICAgIFRlc3RDYXNlTmFtZUlzKHRlc3RfY2FzZV9uYW1lKSk7CiAK
LSAgaWYgKHRlc3RfY2FzZSAhPSB0ZXN0X2Nhc2VzXy5lbmQoKSkKKyAgaWYgKHRlc3RfY2FzZSAh
PSB0ZXN0X2Nhc2VzXy5yZW5kKCkpCiAgICAgcmV0dXJuICp0ZXN0X2Nhc2U7CiAKICAgLy8gTm8u
ICBMZXQncyBjcmVhdGUgb25lLgogICBUZXN0Q2FzZSogY29uc3QgbmV3X3Rlc3RfY2FzZSA9Ci0g
ICAgICBuZXcgVGVzdENhc2UodGVzdF9jYXNlX25hbWUsIGNvbW1lbnQsIHNldF91cF90YywgdGVh
cl9kb3duX3RjKTsKKyAgICAgIG5ldyBUZXN0Q2FzZSh0ZXN0X2Nhc2VfbmFtZSwgdHlwZV9wYXJh
bSwgc2V0X3VwX3RjLCB0ZWFyX2Rvd25fdGMpOwogCiAgIC8vIElzIHRoaXMgYSBkZWF0aCB0ZXN0
IGNhc2U/Ci0gIGlmIChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpNYXRjaGVzRmlsdGVyKFN0
cmluZyh0ZXN0X2Nhc2VfbmFtZSksCisgIGlmIChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpN
YXRjaGVzRmlsdGVyKHRlc3RfY2FzZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrRGVhdGhUZXN0Q2FzZUZpbHRlcikpIHsKICAgICAvLyBZZXMu
ICBJbnNlcnRzIHRoZSB0ZXN0IGNhc2UgYWZ0ZXIgdGhlIGxhc3QgZGVhdGggdGVzdCBjYXNlCiAg
ICAgLy8gZGVmaW5lZCBzbyBmYXIuICBUaGlzIG9ubHkgd29ya3Mgd2hlbiB0aGUgdGVzdCBjYXNl
cyBoYXZlbid0CkBAIC0zOTIyLDI3ICs1MDczLDIxIEBAIHN0YXRpYyB2b2lkIFNldFVwRW52aXJv
bm1lbnQoRW52aXJvbm1lbnQqIGVudikgeyBlbnYtPlNldFVwKCk7IH0KIHN0YXRpYyB2b2lkIFRl
YXJEb3duRW52aXJvbm1lbnQoRW52aXJvbm1lbnQqIGVudikgeyBlbnYtPlRlYXJEb3duKCk7IH0K
IAogLy8gUnVucyBhbGwgdGVzdHMgaW4gdGhpcyBVbml0VGVzdCBvYmplY3QsIHByaW50cyB0aGUg
cmVzdWx0LCBhbmQKLS8vIHJldHVybnMgMCBpZiBhbGwgdGVzdHMgYXJlIHN1Y2Nlc3NmdWwsIG9y
IDEgb3RoZXJ3aXNlLiAgSWYgYW55Ci0vLyBleGNlcHRpb24gaXMgdGhyb3duIGR1cmluZyBhIHRl
c3Qgb24gV2luZG93cywgdGhpcyB0ZXN0IGlzCi0vLyBjb25zaWRlcmVkIHRvIGJlIGZhaWxlZCwg
YnV0IHRoZSByZXN0IG9mIHRoZSB0ZXN0cyB3aWxsIHN0aWxsIGJlCi0vLyBydW4uICAoV2UgZGlz
YWJsZSBleGNlcHRpb25zIG9uIExpbnV4IGFuZCBNYWMgT1MgWCwgc28gdGhlIGlzc3VlCi0vLyBk
b2Vzbid0IGFwcGx5IHRoZXJlLikKKy8vIHJldHVybnMgdHJ1ZSBpZiBhbGwgdGVzdHMgYXJlIHN1
Y2Nlc3NmdWwuICBJZiBhbnkgZXhjZXB0aW9uIGlzCisvLyB0aHJvd24gZHVyaW5nIGEgdGVzdCwg
dGhlIHRlc3QgaXMgY29uc2lkZXJlZCB0byBiZSBmYWlsZWQsIGJ1dCB0aGUKKy8vIHJlc3Qgb2Yg
dGhlIHRlc3RzIHdpbGwgc3RpbGwgYmUgcnVuLgorLy8KIC8vIFdoZW4gcGFyYW1ldGVyaXplZCB0
ZXN0cyBhcmUgZW5hYmxlZCwgaXQgZXhwYW5kcyBhbmQgcmVnaXN0ZXJzCiAvLyBwYXJhbWV0ZXJp
emVkIHRlc3RzIGZpcnN0IGluIFJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzKCkuCiAvLyBBbGwg
b3RoZXIgZnVuY3Rpb25zIGNhbGxlZCBmcm9tIFJ1bkFsbFRlc3RzKCkgbWF5IHNhZmVseSBhc3N1
bWUgdGhhdAogLy8gcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgcmVhZHkgdG8gYmUgY291bnRlZCBh
bmQgcnVuLgotaW50IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7Ci0gIC8vIE1ha2VzIHN1
cmUgSW5pdEdvb2dsZVRlc3QoKSB3YXMgY2FsbGVkLgotICBpZiAoIUdUZXN0SXNJbml0aWFsaXpl
ZCgpKSB7Ci0gICAgcHJpbnRmKCIlcyIsCi0gICAgICAgICAgICJcblRoaXMgdGVzdCBwcm9ncmFt
IGRpZCBOT1QgY2FsbCA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0ICIKLSAgICAgICAgICAgImJl
Zm9yZSBjYWxsaW5nIFJVTl9BTExfVEVTVFMoKS4gIFBsZWFzZSBmaXggaXQuXG4iKTsKLSAgICBy
ZXR1cm4gMTsKLSAgfQorYm9vbCBVbml0VGVzdEltcGw6OlJ1bkFsbFRlc3RzKCkgeworICAvLyBU
cnVlIGlmZiBHb29nbGUgVGVzdCBpcyBpbml0aWFsaXplZCBiZWZvcmUgUlVOX0FMTF9URVNUUygp
IGlzIGNhbGxlZC4KKyAgY29uc3QgYm9vbCBndGVzdF9pc19pbml0aWFsaXplZF9iZWZvcmVfcnVu
X2FsbF90ZXN0cyA9IEdUZXN0SXNJbml0aWFsaXplZCgpOwogCiAgIC8vIERvIG5vdCBydW4gYW55
IHRlc3QgaWYgdGhlIC0taGVscCBmbGFnIHdhcyBzcGVjaWZpZWQuCiAgIGlmIChnX2hlbHBfZmxh
ZykKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdHJ1ZTsKIAogICAvLyBSZXBlYXRzIHRoZSBj
YWxsIHRvIHRoZSBwb3N0LWZsYWcgcGFyc2luZyBpbml0aWFsaXphdGlvbiBpbiBjYXNlIHRoZQog
ICAvLyB1c2VyIGRpZG4ndCBjYWxsIEluaXRHb29nbGVUZXN0LgpAQCAtMzk1OSw2ICs1MTA0LDEx
IEBAIGludCBVbml0VGVzdEltcGw6OlJ1bkFsbFRlc3RzKCkgewogCiAjaWYgR1RFU1RfSEFTX0RF
QVRIX1RFU1QKICAgaW5fc3VicHJvY2Vzc19mb3JfZGVhdGhfdGVzdCA9IChpbnRlcm5hbF9ydW5f
ZGVhdGhfdGVzdF9mbGFnXy5nZXQoKSAhPSBOVUxMKTsKKyMgaWYgZGVmaW5lZChHVEVTVF9FWFRS
QV9ERUFUSF9URVNUX0NISUxEX1NFVFVQXykKKyAgaWYgKGluX3N1YnByb2Nlc3NfZm9yX2RlYXRo
X3Rlc3QpIHsKKyAgICBHVEVTVF9FWFRSQV9ERUFUSF9URVNUX0NISUxEX1NFVFVQXygpOworICB9
CisjIGVuZGlmICAvLyBkZWZpbmVkKEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ0hJTERfU0VUVVBf
KQogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCiAgIGNvbnN0IGJvb2wgc2hvdWxk
X3NoYXJkID0gU2hvdWxkU2hhcmQoa1Rlc3RUb3RhbFNoYXJkcywga1Rlc3RTaGFyZEluZGV4LApA
QCAtMzk3NCw3ICs1MTI0LDcgQEAgaW50IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7CiAg
IGlmIChHVEVTVF9GTEFHKGxpc3RfdGVzdHMpKSB7CiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxl
ZCAqYWZ0ZXIqIEZpbHRlclRlc3RzKCkgaGFzIGJlZW4gY2FsbGVkLgogICAgIExpc3RUZXN0c01h
dGNoaW5nRmlsdGVyKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHRydWU7CiAgIH0KIAog
ICByYW5kb21fc2VlZF8gPSBHVEVTVF9GTEFHKHNodWZmbGUpID8KQEAgLTM5ODUsNiArNTEzNSw3
IEBAIGludCBVbml0VGVzdEltcGw6OlJ1bkFsbFRlc3RzKCkgewogCiAgIFRlc3RFdmVudExpc3Rl
bmVyKiByZXBlYXRlciA9IGxpc3RlbmVycygpLT5yZXBlYXRlcigpOwogCisgIHN0YXJ0X3RpbWVz
dGFtcF8gPSBHZXRUaW1lSW5NaWxsaXMoKTsKICAgcmVwZWF0ZXItPk9uVGVzdFByb2dyYW1TdGFy
dCgqcGFyZW50Xyk7CiAKICAgLy8gSG93IG1hbnkgdGltZXMgdG8gcmVwZWF0IHRoZSB0ZXN0cz8g
IFdlIGRvbid0IHdhbnQgdG8gcmVwZWF0IHRoZW0KQEAgLTM5OTMsNyArNTE0NCw5IEBAIGludCBV
bml0VGVzdEltcGw6OlJ1bkFsbFRlc3RzKCkgewogICAvLyBSZXBlYXRzIGZvcmV2ZXIgaWYgdGhl
IHJlcGVhdCBjb3VudCBpcyBuZWdhdGl2ZS4KICAgY29uc3QgYm9vbCBmb3JldmVyID0gcmVwZWF0
IDwgMDsKICAgZm9yIChpbnQgaSA9IDA7IGZvcmV2ZXIgfHwgaSAhPSByZXBlYXQ7IGkrKykgewot
ICAgIENsZWFyUmVzdWx0KCk7CisgICAgLy8gV2Ugd2FudCB0byBwcmVzZXJ2ZSBmYWlsdXJlcyBn
ZW5lcmF0ZWQgYnkgYWQtaG9jIHRlc3QKKyAgICAvLyBhc3NlcnRpb25zIGV4ZWN1dGVkIGJlZm9y
ZSBSVU5fQUxMX1RFU1RTKCkuCisgICAgQ2xlYXJOb25BZEhvY1Rlc3RSZXN1bHQoKTsKIAogICAg
IGNvbnN0IFRpbWVJbk1pbGxpcyBzdGFydCA9IEdldFRpbWVJbk1pbGxpcygpOwogCkBAIC00MDU4
LDggKzUyMTEsMjEgQEAgaW50IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7CiAKICAgcmVw
ZWF0ZXItPk9uVGVzdFByb2dyYW1FbmQoKnBhcmVudF8pOwogCi0gIC8vIFJldHVybnMgMCBpZiBh
bGwgdGVzdHMgcGFzc2VkLCBvciAxIG90aGVyIHdpc2UuCi0gIHJldHVybiBmYWlsZWQgPyAxIDog
MDsKKyAgaWYgKCFndGVzdF9pc19pbml0aWFsaXplZF9iZWZvcmVfcnVuX2FsbF90ZXN0cykgewor
ICAgIENvbG9yZWRQcmludGYoCisgICAgICAgIENPTE9SX1JFRCwKKyAgICAgICAgIlxuSU1QT1JU
QU5UIE5PVElDRSAtIERPIE5PVCBJR05PUkU6XG4iCisgICAgICAgICJUaGlzIHRlc3QgcHJvZ3Jh
bSBkaWQgTk9UIGNhbGwgIiBHVEVTVF9JTklUX0dPT0dMRV9URVNUX05BTUVfCisgICAgICAgICIo
KSBiZWZvcmUgY2FsbGluZyBSVU5fQUxMX1RFU1RTKCkuIFRoaXMgaXMgSU5WQUxJRC4gU29vbiAi
IEdURVNUX05BTUVfCisgICAgICAgICIgd2lsbCBzdGFydCB0byBlbmZvcmNlIHRoZSB2YWxpZCB1
c2FnZS4gIgorICAgICAgICAiUGxlYXNlIGZpeCBpdCBBU0FQLCBvciBJVCBXSUxMIFNUQVJUIFRP
IEZBSUwuXG4iKTsgIC8vIE5PTElOVAorI2lmIEdURVNUX0ZPUl9HT09HTEVfCisgICAgQ29sb3Jl
ZFByaW50ZihDT0xPUl9SRUQsCisgICAgICAgICAgICAgICAgICAiRm9yIG1vcmUgZGV0YWlscywg
c2VlIGh0dHA6Ly93aWtpL01haW4vVmFsaWRHVW5pdE1haW4uXG4iKTsKKyNlbmRpZiAgLy8gR1RF
U1RfRk9SX0dPT0dMRV8KKyAgfQorCisgIHJldHVybiAhZmFpbGVkOwogfQogCiAvLyBSZWFkcyB0
aGUgR1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEUgZW52aXJvbm1lbnQgdmFyaWFibGUsIGFuZCBjcmVh
dGVzIHRoZSBmaWxlCkBAIC00MTMzLDcgKzUyOTksNyBAQCBib29sIFNob3VsZFNoYXJkKGNvbnN0
IGNoYXIqIHRvdGFsX3NoYXJkc19lbnYsCiAvLyBQYXJzZXMgdGhlIGVudmlyb25tZW50IHZhcmlh
YmxlIHZhciBhcyBhbiBJbnQzMi4gSWYgaXQgaXMgdW5zZXQsCiAvLyByZXR1cm5zIGRlZmF1bHRf
dmFsLiBJZiBpdCBpcyBub3QgYW4gSW50MzIsIHByaW50cyBhbiBlcnJvcgogLy8gYW5kIGFib3J0
cy4KLUludDMyIEludDMyRnJvbUVudk9yRGllKGNvbnN0IGNoYXIqIGNvbnN0IHZhciwgSW50MzIg
ZGVmYXVsdF92YWwpIHsKK0ludDMyIEludDMyRnJvbUVudk9yRGllKGNvbnN0IGNoYXIqIHZhciwg
SW50MzIgZGVmYXVsdF92YWwpIHsKICAgY29uc3QgY2hhciogc3RyX3ZhbCA9IHBvc2l4OjpHZXRF
bnYodmFyKTsKICAgaWYgKHN0cl92YWwgPT0gTlVMTCkgewogICAgIHJldHVybiBkZWZhdWx0X3Zh
bDsKQEAgLTQxNjAsOCArNTMyNiw4IEBAIGJvb2wgU2hvdWxkUnVuVGVzdE9uU2hhcmQoaW50IHRv
dGFsX3NoYXJkcywgaW50IHNoYXJkX2luZGV4LCBpbnQgdGVzdF9pZCkgewogLy8gZWFjaCBUZXN0
Q2FzZSBhbmQgVGVzdEluZm8gb2JqZWN0LgogLy8gSWYgc2hhcmRfdGVzdHMgPT0gdHJ1ZSwgZnVy
dGhlciBmaWx0ZXJzIHRlc3RzIGJhc2VkIG9uIHNoYXJkaW5nCiAvLyB2YXJpYWJsZXMgaW4gdGhl
IGVudmlyb25tZW50IC0gc2VlCi0vLyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVz
dC93aWtpL0dvb2dsZVRlc3RBZHZhbmNlZEd1aWRlLgotLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9m
IHRlc3RzIHRoYXQgc2hvdWxkIHJ1bi4KKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29v
Z2xldGVzdC9ibG9iL21hc3Rlci9nb29nbGV0ZXN0L2RvY3MvYWR2YW5jZWQubWQKKy8vIC4gUmV0
dXJucyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRoYXQgc2hvdWxkIHJ1bi4KIGludCBVbml0VGVzdElt
cGw6OkZpbHRlclRlc3RzKFJlYWN0aW9uVG9TaGFyZGluZyBzaGFyZF90ZXN0cykgewogICBjb25z
dCBJbnQzMiB0b3RhbF9zaGFyZHMgPSBzaGFyZF90ZXN0cyA9PSBIT05PUl9TSEFSRElOR19QUk9U
T0NPTCA/CiAgICAgICBJbnQzMkZyb21FbnZPckRpZShrVGVzdFRvdGFsU2hhcmRzLCAtMSkgOiAt
MTsKQEAgLTQxNzYsMTIgKzUzNDIsMTIgQEAgaW50IFVuaXRUZXN0SW1wbDo6RmlsdGVyVGVzdHMo
UmVhY3Rpb25Ub1NoYXJkaW5nIHNoYXJkX3Rlc3RzKSB7CiAgIGludCBudW1fc2VsZWN0ZWRfdGVz
dHMgPSAwOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXNfLnNpemUoKTsgaSsr
KSB7CiAgICAgVGVzdENhc2UqIGNvbnN0IHRlc3RfY2FzZSA9IHRlc3RfY2FzZXNfW2ldOwotICAg
IGNvbnN0IFN0cmluZyAmdGVzdF9jYXNlX25hbWUgPSB0ZXN0X2Nhc2UtPm5hbWUoKTsKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyAmdGVzdF9jYXNlX25hbWUgPSB0ZXN0X2Nhc2UtPm5hbWUoKTsKICAg
ICB0ZXN0X2Nhc2UtPnNldF9zaG91bGRfcnVuKGZhbHNlKTsKIAogICAgIGZvciAoc2l6ZV90IGog
PSAwOyBqIDwgdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpLnNpemUoKTsgaisrKSB7CiAgICAg
ICBUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0gdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgp
W2pdOwotICAgICAgY29uc3QgU3RyaW5nIHRlc3RfbmFtZSh0ZXN0X2luZm8tPm5hbWUoKSk7Cisg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0X25hbWUodGVzdF9pbmZvLT5uYW1lKCkpOwogICAg
ICAgLy8gQSB0ZXN0IGlzIGRpc2FibGVkIGlmIHRlc3QgY2FzZSBuYW1lIG9yIHRlc3QgbmFtZSBt
YXRjaGVzCiAgICAgICAvLyBrRGlzYWJsZVRlc3RGaWx0ZXIuCiAgICAgICBjb25zdCBib29sIGlz
X2Rpc2FibGVkID0KQEAgLTQxODksMzQgKzUzNTUsNjAgQEAgaW50IFVuaXRUZXN0SW1wbDo6Rmls
dGVyVGVzdHMoUmVhY3Rpb25Ub1NoYXJkaW5nIHNoYXJkX3Rlc3RzKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrRGlzYWJsZVRlc3RGaWx0ZXIp
IHx8CiAgICAgICAgICAgaW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcih0
ZXN0X25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBrRGlzYWJsZVRlc3RGaWx0ZXIpOwotICAgICAgdGVzdF9pbmZvLT5pbXBsKCktPnNldF9p
c19kaXNhYmxlZChpc19kaXNhYmxlZCk7CisgICAgICB0ZXN0X2luZm8tPmlzX2Rpc2FibGVkXyA9
IGlzX2Rpc2FibGVkOwogCiAgICAgICBjb25zdCBib29sIG1hdGNoZXNfZmlsdGVyID0KICAgICAg
ICAgICBpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpGaWx0ZXJNYXRjaGVzVGVzdCh0ZXN0X2Nh
c2VfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0X25hbWUpOwotICAgICAgdGVzdF9pbmZvLT5pbXBsKCktPnNldF9tYXRjaGVz
X2ZpbHRlcihtYXRjaGVzX2ZpbHRlcik7CisgICAgICB0ZXN0X2luZm8tPm1hdGNoZXNfZmlsdGVy
XyA9IG1hdGNoZXNfZmlsdGVyOwogCiAgICAgICBjb25zdCBib29sIGlzX3J1bm5hYmxlID0KICAg
ICAgICAgICAoR1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cykgfHwgIWlzX2Rpc2Fi
bGVkKSAmJgogICAgICAgICAgIG1hdGNoZXNfZmlsdGVyOwogCi0gICAgICBjb25zdCBib29sIGlz
X3NlbGVjdGVkID0gaXNfcnVubmFibGUgJiYKLSAgICAgICAgICAoc2hhcmRfdGVzdHMgPT0gSUdO
T1JFX1NIQVJESU5HX1BST1RPQ09MIHx8Ci0gICAgICAgICAgIFNob3VsZFJ1blRlc3RPblNoYXJk
KHRvdGFsX3NoYXJkcywgc2hhcmRfaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bV9ydW5uYWJsZV90ZXN0cykpOworICAgICAgY29uc3QgYm9vbCBpc19pbl9hbm90aGVy
X3NoYXJkID0KKyAgICAgICAgICBzaGFyZF90ZXN0cyAhPSBJR05PUkVfU0hBUkRJTkdfUFJPVE9D
T0wgJiYKKyAgICAgICAgICAhU2hvdWxkUnVuVGVzdE9uU2hhcmQodG90YWxfc2hhcmRzLCBzaGFy
ZF9pbmRleCwgbnVtX3J1bm5hYmxlX3Rlc3RzKTsKKyAgICAgIHRlc3RfaW5mby0+aXNfaW5fYW5v
dGhlcl9zaGFyZF8gPSBpc19pbl9hbm90aGVyX3NoYXJkOworICAgICAgY29uc3QgYm9vbCBpc19z
ZWxlY3RlZCA9IGlzX3J1bm5hYmxlICYmICFpc19pbl9hbm90aGVyX3NoYXJkOwogCiAgICAgICBu
dW1fcnVubmFibGVfdGVzdHMgKz0gaXNfcnVubmFibGU7CiAgICAgICBudW1fc2VsZWN0ZWRfdGVz
dHMgKz0gaXNfc2VsZWN0ZWQ7CiAKLSAgICAgIHRlc3RfaW5mby0+aW1wbCgpLT5zZXRfc2hvdWxk
X3J1bihpc19zZWxlY3RlZCk7CisgICAgICB0ZXN0X2luZm8tPnNob3VsZF9ydW5fID0gaXNfc2Vs
ZWN0ZWQ7CiAgICAgICB0ZXN0X2Nhc2UtPnNldF9zaG91bGRfcnVuKHRlc3RfY2FzZS0+c2hvdWxk
X3J1bigpIHx8IGlzX3NlbGVjdGVkKTsKICAgICB9CiAgIH0KICAgcmV0dXJuIG51bV9zZWxlY3Rl
ZF90ZXN0czsKIH0KIAorLy8gUHJpbnRzIHRoZSBnaXZlbiBDLXN0cmluZyBvbiBhIHNpbmdsZSBs
aW5lIGJ5IHJlcGxhY2luZyBhbGwgJ1xuJworLy8gY2hhcmFjdGVycyB3aXRoIHN0cmluZyAiXFxu
Ii4gIElmIHRoZSBvdXRwdXQgdGFrZXMgbW9yZSB0aGFuCisvLyBtYXhfbGVuZ3RoIGNoYXJhY3Rl
cnMsIG9ubHkgcHJpbnRzIHRoZSBmaXJzdCBtYXhfbGVuZ3RoIGNoYXJhY3RlcnMKKy8vIGFuZCAi
Li4uIi4KK3N0YXRpYyB2b2lkIFByaW50T25PbmVMaW5lKGNvbnN0IGNoYXIqIHN0ciwgaW50IG1h
eF9sZW5ndGgpIHsKKyAgaWYgKHN0ciAhPSBOVUxMKSB7CisgICAgZm9yIChpbnQgaSA9IDA7ICpz
dHIgIT0gJ1wwJzsgKytzdHIpIHsKKyAgICAgIGlmIChpID49IG1heF9sZW5ndGgpIHsKKyAgICAg
ICAgcHJpbnRmKCIuLi4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBpZiAoKnN0
ciA9PSAnXG4nKSB7CisgICAgICAgIHByaW50ZigiXFxuIik7CisgICAgICAgIGkgKz0gMjsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHByaW50ZigiJWMiLCAqc3RyKTsKKyAgICAgICAgKytpOwor
ICAgICAgfQorICAgIH0KKyAgfQorfQorCiAvLyBQcmludHMgdGhlIG5hbWVzIG9mIHRoZSB0ZXN0
cyBtYXRjaGluZyB0aGUgdXNlci1zcGVjaWZpZWQgZmlsdGVyIGZsYWcuCiB2b2lkIFVuaXRUZXN0
SW1wbDo6TGlzdFRlc3RzTWF0Y2hpbmdGaWx0ZXIoKSB7CisgIC8vIFByaW50IGF0IG1vc3QgdGhp
cyBtYW55IGNoYXJhY3RlcnMgZm9yIGVhY2ggdHlwZS92YWx1ZSBwYXJhbWV0ZXIuCisgIGNvbnN0
IGludCBrTWF4UGFyYW1MZW5ndGggPSAyNTA7CisKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0
ZXN0X2Nhc2VzXy5zaXplKCk7IGkrKykgewogICAgIGNvbnN0IFRlc3RDYXNlKiBjb25zdCB0ZXN0
X2Nhc2UgPSB0ZXN0X2Nhc2VzX1tpXTsKICAgICBib29sIHByaW50ZWRfdGVzdF9jYXNlX25hbWUg
PSBmYWxzZTsKQEAgLTQyMjQsMTYgKzU0MTYsNDcgQEAgdm9pZCBVbml0VGVzdEltcGw6Okxpc3RU
ZXN0c01hdGNoaW5nRmlsdGVyKCkgewogICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgdGVzdF9j
YXNlLT50ZXN0X2luZm9fbGlzdCgpLnNpemUoKTsgaisrKSB7CiAgICAgICBjb25zdCBUZXN0SW5m
byogY29uc3QgdGVzdF9pbmZvID0KICAgICAgICAgICB0ZXN0X2Nhc2UtPnRlc3RfaW5mb19saXN0
KClbal07Ci0gICAgICBpZiAodGVzdF9pbmZvLT5tYXRjaGVzX2ZpbHRlcigpKSB7CisgICAgICBp
ZiAodGVzdF9pbmZvLT5tYXRjaGVzX2ZpbHRlcl8pIHsKICAgICAgICAgaWYgKCFwcmludGVkX3Rl
c3RfY2FzZV9uYW1lKSB7CiAgICAgICAgICAgcHJpbnRlZF90ZXN0X2Nhc2VfbmFtZSA9IHRydWU7
Ci0gICAgICAgICAgcHJpbnRmKCIlcy5cbiIsIHRlc3RfY2FzZS0+bmFtZSgpKTsKKyAgICAgICAg
ICBwcmludGYoIiVzLiIsIHRlc3RfY2FzZS0+bmFtZSgpKTsKKyAgICAgICAgICBpZiAodGVzdF9j
YXNlLT50eXBlX3BhcmFtKCkgIT0gTlVMTCkgeworICAgICAgICAgICAgcHJpbnRmKCIgICMgJXMg
PSAiLCBrVHlwZVBhcmFtTGFiZWwpOworICAgICAgICAgICAgLy8gV2UgcHJpbnQgdGhlIHR5cGUg
cGFyYW1ldGVyIG9uIGEgc2luZ2xlIGxpbmUgdG8gbWFrZQorICAgICAgICAgICAgLy8gdGhlIG91
dHB1dCBlYXN5IHRvIHBhcnNlIGJ5IGEgcHJvZ3JhbS4KKyAgICAgICAgICAgIFByaW50T25PbmVM
aW5lKHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgpLCBrTWF4UGFyYW1MZW5ndGgpOworICAgICAgICAg
IH0KKyAgICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAgIH0KKyAgICAgICAgcHJpbnRmKCIg
ICVzIiwgdGVzdF9pbmZvLT5uYW1lKCkpOworICAgICAgICBpZiAodGVzdF9pbmZvLT52YWx1ZV9w
YXJhbSgpICE9IE5VTEwpIHsKKyAgICAgICAgICBwcmludGYoIiAgIyAlcyA9ICIsIGtWYWx1ZVBh
cmFtTGFiZWwpOworICAgICAgICAgIC8vIFdlIHByaW50IHRoZSB2YWx1ZSBwYXJhbWV0ZXIgb24g
YSBzaW5nbGUgbGluZSB0byBtYWtlIHRoZQorICAgICAgICAgIC8vIG91dHB1dCBlYXN5IHRvIHBh
cnNlIGJ5IGEgcHJvZ3JhbS4KKyAgICAgICAgICBQcmludE9uT25lTGluZSh0ZXN0X2luZm8tPnZh
bHVlX3BhcmFtKCksIGtNYXhQYXJhbUxlbmd0aCk7CiAgICAgICAgIH0KLSAgICAgICAgcHJpbnRm
KCIgICVzXG4iLCB0ZXN0X2luZm8tPm5hbWUoKSk7CisgICAgICAgIHByaW50ZigiXG4iKTsKICAg
ICAgIH0KICAgICB9CiAgIH0KICAgZmZsdXNoKHN0ZG91dCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBvdXRwdXRfZm9ybWF0ID0gVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQoKTsKKyAg
aWYgKG91dHB1dF9mb3JtYXQgPT0gInhtbCIgfHwgb3V0cHV0X2Zvcm1hdCA9PSAianNvbiIpIHsK
KyAgICBGSUxFKiBmaWxlb3V0ID0gT3BlbkZpbGVGb3JXcml0aW5nKAorICAgICAgICBVbml0VGVz
dE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOworICAgIHN0
ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgICBpZiAob3V0cHV0X2Zvcm1hdCA9PSAieG1sIikg
eworICAgICAgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyKAorICAgICAgICAgIFVuaXRUZXN0T3B0
aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSkKKyAgICAgICAgICAu
UHJpbnRYbWxUZXN0c0xpc3QoJnN0cmVhbSwgdGVzdF9jYXNlc18pOworICAgIH0gZWxzZSBpZiAo
b3V0cHV0X2Zvcm1hdCA9PSAianNvbiIpIHsKKyAgICAgIEpzb25Vbml0VGVzdFJlc3VsdFByaW50
ZXIoCisgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZp
bGUoKS5jX3N0cigpKQorICAgICAgICAgIC5QcmludEpzb25UZXN0TGlzdCgmc3RyZWFtLCB0ZXN0
X2Nhc2VzXyk7CisgICAgfQorICAgIGZwcmludGYoZmlsZW91dCwgIiVzIiwgU3RyaW5nU3RyZWFt
VG9TdHJpbmcoJnN0cmVhbSkuY19zdHIoKSk7CisgICAgZmNsb3NlKGZpbGVvdXQpOworICB9CiB9
CiAKIC8vIFNldHMgdGhlIE9TIHN0YWNrIHRyYWNlIGdldHRlci4KQEAgLTQyNTQsMTcgKzU0Nzcs
MjUgQEAgdm9pZCBVbml0VGVzdEltcGw6OnNldF9vc19zdGFja190cmFjZV9nZXR0ZXIoCiAvLyBn
ZXR0ZXIsIGFuZCByZXR1cm5zIGl0LgogT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlKiBVbml0
VGVzdEltcGw6Om9zX3N0YWNrX3RyYWNlX2dldHRlcigpIHsKICAgaWYgKG9zX3N0YWNrX3RyYWNl
X2dldHRlcl8gPT0gTlVMTCkgeworI2lmZGVmIEdURVNUX09TX1NUQUNLX1RSQUNFX0dFVFRFUl8K
KyAgICBvc19zdGFja190cmFjZV9nZXR0ZXJfID0gbmV3IEdURVNUX09TX1NUQUNLX1RSQUNFX0dF
VFRFUl87CisjZWxzZQogICAgIG9zX3N0YWNrX3RyYWNlX2dldHRlcl8gPSBuZXcgT3NTdGFja1Ry
YWNlR2V0dGVyOworI2VuZGlmICAvLyBHVEVTVF9PU19TVEFDS19UUkFDRV9HRVRURVJfCiAgIH0K
IAogICByZXR1cm4gb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXzsKIH0KIAotLy8gUmV0dXJucyB0aGUg
VGVzdFJlc3VsdCBmb3IgdGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLCBvcgotLy8g
dGhlIFRlc3RSZXN1bHQgZm9yIHRoZSBhZCBob2MgdGVzdCBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcu
CisvLyBSZXR1cm5zIHRoZSBtb3N0IHNwZWNpZmljIFRlc3RSZXN1bHQgY3VycmVudGx5IHJ1bm5p
bmcuCiBUZXN0UmVzdWx0KiBVbml0VGVzdEltcGw6OmN1cnJlbnRfdGVzdF9yZXN1bHQoKSB7Ci0g
IHJldHVybiBjdXJyZW50X3Rlc3RfaW5mb18gPwotICAgIGN1cnJlbnRfdGVzdF9pbmZvXy0+aW1w
bCgpLT5yZXN1bHQoKSA6ICZhZF9ob2NfdGVzdF9yZXN1bHRfOworICBpZiAoY3VycmVudF90ZXN0
X2luZm9fICE9IE5VTEwpIHsKKyAgICByZXR1cm4gJmN1cnJlbnRfdGVzdF9pbmZvXy0+cmVzdWx0
XzsKKyAgfQorICBpZiAoY3VycmVudF90ZXN0X2Nhc2VfICE9IE5VTEwpIHsKKyAgICByZXR1cm4g
JmN1cnJlbnRfdGVzdF9jYXNlXy0+YWRfaG9jX3Rlc3RfcmVzdWx0XzsKKyAgfQorICByZXR1cm4g
JmFkX2hvY190ZXN0X3Jlc3VsdF87CiB9CiAKIC8vIFNodWZmbGVzIGFsbCB0ZXN0IGNhc2VzLCBh
bmQgdGhlIHRlc3RzIHdpdGhpbiBlYWNoIHRlc3QgY2FzZSwKQEAgLTQyOTMsMzMgKzU1MjQsNyBA
QCB2b2lkIFVuaXRUZXN0SW1wbDo6VW5zaHVmZmxlVGVzdHMoKSB7CiAgIH0KIH0KIAotLy8gVGVz
dEluZm9JbXBsIGNvbnN0cnVjdG9yLiBUaGUgbmV3IGluc3RhbmNlIGFzc3VtZXMgb3duZXJzaGlw
IG9mIHRoZSB0ZXN0Ci0vLyBmYWN0b3J5IG9iamVjdC4KLVRlc3RJbmZvSW1wbDo6VGVzdEluZm9J
bXBsKFRlc3RJbmZvKiBwYXJlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBhX3Rlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogYV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV90
ZXN0X2Nhc2VfY29tbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGFfY29tbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVJZCBhX2ZpeHR1cmVf
Y2xhc3NfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3Rv
cnlCYXNlKiBmYWN0b3J5KSA6Ci0gICAgcGFyZW50XyhwYXJlbnQpLAotICAgIHRlc3RfY2FzZV9u
YW1lXyhTdHJpbmcoYV90ZXN0X2Nhc2VfbmFtZSkpLAotICAgIG5hbWVfKFN0cmluZyhhX25hbWUp
KSwKLSAgICB0ZXN0X2Nhc2VfY29tbWVudF8oU3RyaW5nKGFfdGVzdF9jYXNlX2NvbW1lbnQpKSwK
LSAgICBjb21tZW50XyhTdHJpbmcoYV9jb21tZW50KSksCi0gICAgZml4dHVyZV9jbGFzc19pZF8o
YV9maXh0dXJlX2NsYXNzX2lkKSwKLSAgICBzaG91bGRfcnVuXyhmYWxzZSksCi0gICAgaXNfZGlz
YWJsZWRfKGZhbHNlKSwKLSAgICBtYXRjaGVzX2ZpbHRlcl8oZmFsc2UpLAotICAgIGZhY3Rvcnlf
KGZhY3RvcnkpIHsKLX0KLQotLy8gVGVzdEluZm9JbXBsIGRlc3RydWN0b3IuCi1UZXN0SW5mb0lt
cGw6On5UZXN0SW5mb0ltcGwoKSB7Ci0gIGRlbGV0ZSBmYWN0b3J5XzsKLX0KLQotLy8gUmV0dXJu
cyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBhcyBhIFN0cmluZy4KKy8vIFJldHVybnMgdGhl
IGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYW4gc3RkOjpzdHJpbmcuCiAvLwogLy8gVGhlIG1h
eGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZCBpcyBzcGVjaWZpZWQg
YnkKIC8vIHRoZSBndGVzdF9zdGFja190cmFjZV9kZXB0aCBmbGFnLiAgVGhlIHNraXBfY291bnQg
cGFyYW1ldGVyCkBAIC00MzI5LDE1ICs1NTM0LDE1IEBAIFRlc3RJbmZvSW1wbDo6flRlc3RJbmZv
SW1wbCgpIHsKIC8vIEZvciBleGFtcGxlLCBpZiBGb28oKSBjYWxscyBCYXIoKSwgd2hpY2ggaW4g
dHVybiBjYWxscwogLy8gR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCguLi4sIDEpLCBG
b28oKSB3aWxsIGJlIGluY2x1ZGVkIGluCiAvLyB0aGUgdHJhY2UgYnV0IEJhcigpIGFuZCBHZXRD
dXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKCkgd29uJ3QuCi1TdHJpbmcgR2V0Q3VycmVudE9z
U3RhY2tUcmFjZUV4Y2VwdFRvcChVbml0VGVzdCogLyp1bml0X3Rlc3QqLywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBza2lwX2NvdW50KSB7CitzdGQ6OnN0cmlu
ZyBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKFVuaXRUZXN0KiAvKnVuaXRfdGVzdCov
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2tpcF9j
b3VudCkgewogICAvLyBXZSBwYXNzIHNraXBfY291bnQgKyAxIHRvIHNraXAgdGhpcyB3cmFwcGVy
IGZ1bmN0aW9uIGluIGFkZGl0aW9uCiAgIC8vIHRvIHdoYXQgdGhlIHVzZXIgcmVhbGx5IHdhbnRz
IHRvIHNraXAuCiAgIHJldHVybiBHZXRVbml0VGVzdEltcGwoKS0+Q3VycmVudE9zU3RhY2tUcmFj
ZUV4Y2VwdFRvcChza2lwX2NvdW50ICsgMSk7CiB9CiAKLS8vIFVzZWQgYnkgdGhlIEdURVNUX0hJ
REVfVU5SRUFDSEFCTEVfQ09ERV8gbWFjcm8gdG8gc3VwcHJlc3MgdW5yZWFjaGFibGUKLS8vIGNv
ZGUgd2FybmluZ3MuCisvLyBVc2VkIGJ5IHRoZSBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9D
T0RFX1dBUk5JTkdfQkVMT1dfIG1hY3JvIHRvCisvLyBzdXBwcmVzcyB1bnJlYWNoYWJsZSBjb2Rl
IHdhcm5pbmdzLgogbmFtZXNwYWNlIHsKIGNsYXNzIENsYXNzVW5pcXVlVG9BbHdheXNUcnVlIHt9
OwogfQpAQCAtNDM3MSwxNCArNTU3NiwxMyBAQCBib29sIFNraXBQcmVmaXgoY29uc3QgY2hhciog
cHJlZml4LCBjb25zdCBjaGFyKiogcHN0cikgewogLy8gcGFydCBjYW4gYmUgb21pdHRlZC4KIC8v
CiAvLyBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZywgb3IgTlVMTCBpZiB0aGUgcGFyc2lu
ZyBmYWlsZWQuCi1jb25zdCBjaGFyKiBQYXJzZUZsYWdWYWx1ZShjb25zdCBjaGFyKiBzdHIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmbGFnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBkZWZfb3B0aW9uYWwpIHsKK3N0YXRpYyBjb25zdCBjaGFyKiBQ
YXJzZUZsYWdWYWx1ZShjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWZfb3B0aW9uYWwpIHsKICAgLy8gc3Ry
IGFuZCBmbGFnIG11c3Qgbm90IGJlIE5VTEwuCiAgIGlmIChzdHIgPT0gTlVMTCB8fCBmbGFnID09
IE5VTEwpIHJldHVybiBOVUxMOwogCiAgIC8vIFRoZSBmbGFnIG11c3Qgc3RhcnQgd2l0aCAiLS0i
IGZvbGxvd2VkIGJ5IEdURVNUX0ZMQUdfUFJFRklYXy4KLSAgY29uc3QgU3RyaW5nIGZsYWdfc3Ry
ID0gU3RyaW5nOjpGb3JtYXQoIi0tJXMlcyIsIEdURVNUX0ZMQUdfUFJFRklYXywgZmxhZyk7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGZsYWdfc3RyID0gc3RkOjpzdHJpbmcoIi0tIikgKyBHVEVTVF9G
TEFHX1BSRUZJWF8gKyBmbGFnOwogICBjb25zdCBzaXplX3QgZmxhZ19sZW4gPSBmbGFnX3N0ci5s
ZW5ndGgoKTsKICAgaWYgKHN0cm5jbXAoc3RyLCBmbGFnX3N0ci5jX3N0cigpLCBmbGFnX2xlbikg
IT0gMCkgcmV0dXJuIE5VTEw7CiAKQEAgLTQ0MDksNyArNTYxMyw3IEBAIGNvbnN0IGNoYXIqIFBh
cnNlRmxhZ1ZhbHVlKGNvbnN0IGNoYXIqIHN0ciwKIC8vCiAvLyBPbiBzdWNjZXNzLCBzdG9yZXMg
dGhlIHZhbHVlIG9mIHRoZSBmbGFnIGluICp2YWx1ZSwgYW5kIHJldHVybnMKIC8vIHRydWUuICBP
biBmYWlsdXJlLCByZXR1cm5zIGZhbHNlIHdpdGhvdXQgY2hhbmdpbmcgKnZhbHVlLgotYm9vbCBQ
YXJzZUJvb2xGbGFnKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgY2hhciogZmxhZywgYm9vbCogdmFs
dWUpIHsKK3N0YXRpYyBib29sIFBhcnNlQm9vbEZsYWcoY29uc3QgY2hhciogc3RyLCBjb25zdCBj
aGFyKiBmbGFnLCBib29sKiB2YWx1ZSkgewogICAvLyBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgZmxh
ZyBhcyBhIHN0cmluZy4KICAgY29uc3QgY2hhciogY29uc3QgdmFsdWVfc3RyID0gUGFyc2VGbGFn
VmFsdWUoc3RyLCBmbGFnLCB0cnVlKTsKIApAQCAtNDQ0Myw3ICs1NjQ3LDggQEAgYm9vbCBQYXJz
ZUludDMyRmxhZyhjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsIEludDMyKiB2YWx1
ZSkgewogLy8KIC8vIE9uIHN1Y2Nlc3MsIHN0b3JlcyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcgaW4g
KnZhbHVlLCBhbmQgcmV0dXJucwogLy8gdHJ1ZS4gIE9uIGZhaWx1cmUsIHJldHVybnMgZmFsc2Ug
d2l0aG91dCBjaGFuZ2luZyAqdmFsdWUuCi1ib29sIFBhcnNlU3RyaW5nRmxhZyhjb25zdCBjaGFy
KiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsIFN0cmluZyogdmFsdWUpIHsKK3RlbXBsYXRlIDx0eXBl
bmFtZSBTdHJpbmc+CitzdGF0aWMgYm9vbCBQYXJzZVN0cmluZ0ZsYWcoY29uc3QgY2hhciogc3Ry
LCBjb25zdCBjaGFyKiBmbGFnLCBTdHJpbmcqIHZhbHVlKSB7CiAgIC8vIEdldHMgdGhlIHZhbHVl
IG9mIHRoZSBmbGFnIGFzIGEgc3RyaW5nLgogICBjb25zdCBjaGFyKiBjb25zdCB2YWx1ZV9zdHIg
PSBQYXJzZUZsYWdWYWx1ZShzdHIsIGZsYWcsIGZhbHNlKTsKIApAQCAtNDQ3OSw3ICs1Njg0LDcg
QEAgc3RhdGljIGJvb2wgSGFzR29vZ2xlVGVzdEZsYWdQcmVmaXgoY29uc3QgY2hhciogc3RyKSB7
CiAvLyAgIEBZICAgIGNoYW5nZXMgdGhlIGNvbG9yIHRvIHllbGxvdy4KIC8vICAgQEQgICAgY2hh
bmdlcyB0byB0aGUgZGVmYXVsdCB0ZXJtaW5hbCB0ZXh0IGNvbG9yLgogLy8KLS8vIFRPRE8od2Fu
QGdvb2dsZS5jb20pOiBXcml0ZSB0ZXN0cyBmb3IgdGhpcyBvbmNlIHdlIGFkZCBzdGRvdXQKKy8v
IEZJWE1FOiBXcml0ZSB0ZXN0cyBmb3IgdGhpcyBvbmNlIHdlIGFkZCBzdGRvdXQKIC8vIGNhcHR1
cmluZyB0byBHb29nbGUgVGVzdC4KIHN0YXRpYyB2b2lkIFByaW50Q29sb3JFbmNvZGVkKGNvbnN0
IGNoYXIqIHN0cikgewogICBHVGVzdENvbG9yIGNvbG9yID0gQ09MT1JfREVGQVVMVDsgIC8vIFRo
ZSBjdXJyZW50IGNvbG9yLgpAQCAtNDQ5NSw3ICs1NzAwLDcgQEAgc3RhdGljIHZvaWQgUHJpbnRD
b2xvckVuY29kZWQoY29uc3QgY2hhciogc3RyKSB7CiAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgQ29sb3JlZFByaW50Zihjb2xvciwgIiVzIiwgU3RyaW5nKHN0ciwgcCAtIHN0cikuY19zdHIo
KSk7CisgICAgQ29sb3JlZFByaW50Zihjb2xvciwgIiVzIiwgc3RkOjpzdHJpbmcoc3RyLCBwKS5j
X3N0cigpKTsKIAogICAgIGNvbnN0IGNoYXIgY2ggPSBwWzFdOwogICAgIHN0ciA9IHAgKyAyOwpA
QCAtNDU0NSwyNCArNTc1MCwyOCBAQCBzdGF0aWMgY29uc3QgY2hhciBrQ29sb3JFbmNvZGVkSGVs
cE1lc3NhZ2VbXSA9CiAiICAgICAgRW5hYmxlL2Rpc2FibGUgY29sb3JlZCBvdXRwdXQuIFRoZSBk
ZWZhdWx0IGlzIEBHYXV0b0BELlxuIgogIiAgLUBHLSIgR1RFU1RfRkxBR19QUkVGSVhfICJwcmlu
dF90aW1lPTBARFxuIgogIiAgICAgIERvbid0IHByaW50IHRoZSBlbGFwc2VkIHRpbWUgb2YgZWFj
aCB0ZXN0LlxuIgotIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJvdXRwdXQ9eG1sQFlbQEc6
QFlESVJFQ1RPUllfUEFUSEBHIgorIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJvdXRwdXQ9
QFkoQEdqc29uQFl8QEd4bWxAWSlbQEc6QFlESVJFQ1RPUllfUEFUSEBHIgogICAgIEdURVNUX1BB
VEhfU0VQXyAiQFl8QEc6QFlGSUxFX1BBVEhdQERcbiIKLSIgICAgICBHZW5lcmF0ZSBhbiBYTUwg
cmVwb3J0IGluIHRoZSBnaXZlbiBkaXJlY3Rvcnkgb3Igd2l0aCB0aGUgZ2l2ZW4gZmlsZVxuIgot
IiAgICAgIG5hbWUuIEBZRklMRV9QQVRIQEQgZGVmYXVsdHMgdG8gQEd0ZXN0X2RldGFpbHMueG1s
QEQuXG4iCisiICAgICAgR2VuZXJhdGUgYSBKU09OIG9yIFhNTCByZXBvcnQgaW4gdGhlIGdpdmVu
IGRpcmVjdG9yeSBvciB3aXRoIHRoZSBnaXZlblxuIgorIiAgICAgIGZpbGUgbmFtZS4gQFlGSUxF
X1BBVEhARCBkZWZhdWx0cyB0byBAR3Rlc3RfZGV0YWlscy54bWxARC5cbiIKKyMgaWYgR1RFU1Rf
Q0FOX1NUUkVBTV9SRVNVTFRTXworIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJzdHJlYW1f
cmVzdWx0X3RvPUBZSE9TVEBHOkBZUE9SVEBEXG4iCisiICAgICAgU3RyZWFtIHRlc3QgcmVzdWx0
cyB0byB0aGUgZ2l2ZW4gc2VydmVyLlxuIgorIyBlbmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9S
RVNVTFRTXwogIlxuIgogIkFzc2VydGlvbiBCZWhhdmlvcjpcbiIKLSNpZiBHVEVTVF9IQVNfREVB
VEhfVEVTVCAmJiAhR1RFU1RfT1NfV0lORE9XUworIyBpZiBHVEVTVF9IQVNfREVBVEhfVEVTVCAm
JiAhR1RFU1RfT1NfV0lORE9XUwogIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJkZWF0aF90
ZXN0X3N0eWxlPUBZKEBHZmFzdEBZfEBHdGhyZWFkc2FmZUBZKUBEXG4iCiAiICAgICAgU2V0IHRo
ZSBkZWZhdWx0IGRlYXRoIHRlc3Qgc3R5bGUuXG4iCi0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFU
SF9URVNUICYmICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhf
VEVTVCAmJiAhR1RFU1RfT1NfV0lORE9XUwogIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJi
cmVha19vbl9mYWlsdXJlQERcbiIKICIgICAgICBUdXJuIGFzc2VydGlvbiBmYWlsdXJlcyBpbnRv
IGRlYnVnZ2VyIGJyZWFrLXBvaW50cy5cbiIKICIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAi
dGhyb3dfb25fZmFpbHVyZUBEXG4iCi0iICAgICAgVHVybiBhc3NlcnRpb24gZmFpbHVyZXMgaW50
byBDKysgZXhjZXB0aW9ucy5cbiIKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0iICBARy0tIiBHVEVT
VF9GTEFHX1BSRUZJWF8gImNhdGNoX2V4Y2VwdGlvbnNARFxuIgotIiAgICAgIFN1cHByZXNzIHBv
cC11cHMgY2F1c2VkIGJ5IGV4Y2VwdGlvbnMuXG4iCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRP
V1MKKyIgICAgICBUdXJuIGFzc2VydGlvbiBmYWlsdXJlcyBpbnRvIEMrKyBleGNlcHRpb25zIGZv
ciB1c2UgYnkgYW4gZXh0ZXJuYWxcbiIKKyIgICAgICB0ZXN0IGZyYW1ld29yay5cbiIKKyIgIEBH
LS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiY2F0Y2hfZXhjZXB0aW9ucz0wQERcbiIKKyIgICAgICBE
byBub3QgcmVwb3J0IGV4Y2VwdGlvbnMgYXMgdGVzdCBmYWlsdXJlcy4gSW5zdGVhZCwgYWxsb3cg
dGhlbVxuIgorIiAgICAgIHRvIGNyYXNoIHRoZSBwcm9ncmFtIG9yIHRocm93IGEgcG9wLXVwIChv
biBXaW5kb3dzKS5cbiIKICJcbiIKICJFeGNlcHQgZm9yIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklY
XyAibGlzdF90ZXN0c0BELCB5b3UgY2FuIGFsdGVybmF0aXZlbHkgc2V0ICIKICAgICAidGhlIGNv
cnJlc3BvbmRpbmdcbiIKQEAgLTQ1NzYsNDUgKzU3ODUsODcgQEAgc3RhdGljIGNvbnN0IGNoYXIg
a0NvbG9yRW5jb2RlZEhlbHBNZXNzYWdlW10gPQogIihub3Qgb25lIGluIHlvdXIgb3duIGNvZGUg
b3IgdGVzdHMpLCBwbGVhc2UgcmVwb3J0IGl0IHRvXG4iCiAiQEc8IiBHVEVTVF9ERVZfRU1BSUxf
ICI+QEQuXG4iOwogCitzdGF0aWMgYm9vbCBQYXJzZUdvb2dsZVRlc3RGbGFnKGNvbnN0IGNoYXIq
IGNvbnN0IGFyZykgeworICByZXR1cm4gUGFyc2VCb29sRmxhZyhhcmcsIGtBbHNvUnVuRGlzYWJs
ZWRUZXN0c0ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGFsc29fcnVu
X2Rpc2FibGVkX3Rlc3RzKSkgfHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrQnJlYWtPbkZh
aWx1cmVGbGFnLAorICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhicmVha19vbl9mYWls
dXJlKSkgfHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrQ2F0Y2hFeGNlcHRpb25zRmxhZywK
KyAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykpIHx8Cisg
ICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrQ29sb3JGbGFnLCAmR1RFU1RfRkxBRyhjb2xvcikp
IHx8CisgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrRGVhdGhUZXN0U3R5bGVGbGFnLAorICAg
ICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpKSB8fAorICAg
ICAgUGFyc2VCb29sRmxhZyhhcmcsIGtEZWF0aFRlc3RVc2VGb3JrLAorICAgICAgICAgICAgICAg
ICAgICAmR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKSkgfHwKKyAgICAgIFBhcnNlU3Ry
aW5nRmxhZyhhcmcsIGtGaWx0ZXJGbGFnLCAmR1RFU1RfRkxBRyhmaWx0ZXIpKSB8fAorICAgICAg
UGFyc2VTdHJpbmdGbGFnKGFyZywga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZywKKyAgICAgICAg
ICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkpIHx8Cisg
ICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0xpc3RUZXN0c0ZsYWcsICZHVEVTVF9GTEFHKGxpc3Rf
dGVzdHMpKSB8fAorICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga091dHB1dEZsYWcsICZHVEVT
VF9GTEFHKG91dHB1dCkpIHx8CisgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga1ByaW50VGltZUZs
YWcsICZHVEVTVF9GTEFHKHByaW50X3RpbWUpKSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhhcmcs
IGtQcmludFVURjhGbGFnLCAmR1RFU1RfRkxBRyhwcmludF91dGY4KSkgfHwKKyAgICAgIFBhcnNl
SW50MzJGbGFnKGFyZywga1JhbmRvbVNlZWRGbGFnLCAmR1RFU1RfRkxBRyhyYW5kb21fc2VlZCkp
IHx8CisgICAgICBQYXJzZUludDMyRmxhZyhhcmcsIGtSZXBlYXRGbGFnLCAmR1RFU1RfRkxBRyhy
ZXBlYXQpKSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtTaHVmZmxlRmxhZywgJkdURVNU
X0ZMQUcoc2h1ZmZsZSkpIHx8CisgICAgICBQYXJzZUludDMyRmxhZyhhcmcsIGtTdGFja1RyYWNl
RGVwdGhGbGFnLAorICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoc3RhY2tfdHJhY2Vf
ZGVwdGgpKSB8fAorICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga1N0cmVhbVJlc3VsdFRvRmxh
ZywKKyAgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSkg
fHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrVGhyb3dPbkZhaWx1cmVGbGFnLAorICAgICAg
ICAgICAgICAgICAgICAmR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSk7Cit9CisKKyNpZiBH
VEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCitzdGF0aWMgdm9pZCBMb2FkRmxhZ3NGcm9tRmls
ZShjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCkgeworICBGSUxFKiBmbGFnZmlsZSA9IHBvc2l4OjpG
T3BlbihwYXRoLmNfc3RyKCksICJyIik7CisgIGlmICghZmxhZ2ZpbGUpIHsKKyAgICBHVEVTVF9M
T0dfKEZBVEFMKSA8PCAiVW5hYmxlIHRvIG9wZW4gZmlsZSBcIiIgPDwgR1RFU1RfRkxBRyhmbGFn
ZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICA8PCAiXCIiOworICB9CisgIHN0ZDo6c3RyaW5n
IGNvbnRlbnRzKFJlYWRFbnRpcmVGaWxlKGZsYWdmaWxlKSk7CisgIHBvc2l4OjpGQ2xvc2UoZmxh
Z2ZpbGUpOworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbGluZXM7CisgIFNwbGl0U3RyaW5n
KGNvbnRlbnRzLCAnXG4nLCAmbGluZXMpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpbmVz
LnNpemUoKTsgKytpKSB7CisgICAgaWYgKGxpbmVzW2ldLmVtcHR5KCkpCisgICAgICBjb250aW51
ZTsKKyAgICBpZiAoIVBhcnNlR29vZ2xlVGVzdEZsYWcobGluZXNbaV0uY19zdHIoKSkpCisgICAg
ICBnX2hlbHBfZmxhZyA9IHRydWU7CisgIH0KK30KKyNlbmRpZiAgLy8gR1RFU1RfVVNFX09XTl9G
TEFHRklMRV9GTEFHXworCiAvLyBQYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IgR29vZ2xlIFRl
c3QgZmxhZ3MsIHdpdGhvdXQgaW5pdGlhbGl6aW5nCiAvLyBvdGhlciBwYXJ0cyBvZiBHb29nbGUg
VGVzdC4gIFRoZSB0eXBlIHBhcmFtZXRlciBDaGFyVHlwZSBjYW4gYmUKIC8vIGluc3RhbnRpYXRl
ZCB0byBlaXRoZXIgY2hhciBvciB3Y2hhcl90LgogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBl
Pgogdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHlJbXBsKGludCogYXJnYywgQ2hhclR5cGUq
KiBhcmd2KSB7CiAgIGZvciAoaW50IGkgPSAxOyBpIDwgKmFyZ2M7IGkrKykgewotICAgIGNvbnN0
IFN0cmluZyBhcmdfc3RyaW5nID0gU3RyZWFtYWJsZVRvU3RyaW5nKGFyZ3ZbaV0pOworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIGFyZ19zdHJpbmcgPSBTdHJlYW1hYmxlVG9TdHJpbmcoYXJndltpXSk7
CiAgICAgY29uc3QgY2hhciogY29uc3QgYXJnID0gYXJnX3N0cmluZy5jX3N0cigpOwogCiAgICAg
dXNpbmcgaW50ZXJuYWw6OlBhcnNlQm9vbEZsYWc7CiAgICAgdXNpbmcgaW50ZXJuYWw6OlBhcnNl
SW50MzJGbGFnOwogICAgIHVzaW5nIGludGVybmFsOjpQYXJzZVN0cmluZ0ZsYWc7CiAKLSAgICAv
LyBEbyB3ZSBzZWUgYSBHb29nbGUgVGVzdCBmbGFnPwotICAgIGlmIChQYXJzZUJvb2xGbGFnKGFy
Zywga0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAmR1RF
U1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cykpIHx8Ci0gICAgICAgIFBhcnNlQm9vbEZs
YWcoYXJnLCBrQnJlYWtPbkZhaWx1cmVGbGFnLAotICAgICAgICAgICAgICAgICAgICAgICZHVEVT
VF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpKSB8fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywg
a0NhdGNoRXhjZXB0aW9uc0ZsYWcsCi0gICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUco
Y2F0Y2hfZXhjZXB0aW9ucykpIHx8Ci0gICAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtDb2xv
ckZsYWcsICZHVEVTVF9GTEFHKGNvbG9yKSkgfHwKLSAgICAgICAgUGFyc2VTdHJpbmdGbGFnKGFy
Zywga0RlYXRoVGVzdFN0eWxlRmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpKSB8fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0Rl
YXRoVGVzdFVzZUZvcmssCi0gICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoZGVhdGhf
dGVzdF91c2VfZm9yaykpIHx8Ci0gICAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtGaWx0ZXJG
bGFnLCAmR1RFU1RfRkxBRyhmaWx0ZXIpKSB8fAotICAgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJn
LCBrSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgJkdU
RVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpKSB8fAotICAgICAgICBQYXJzZUJvb2xG
bGFnKGFyZywga0xpc3RUZXN0c0ZsYWcsICZHVEVTVF9GTEFHKGxpc3RfdGVzdHMpKSB8fAotICAg
ICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrT3V0cHV0RmxhZywgJkdURVNUX0ZMQUcob3V0cHV0
KSkgfHwKLSAgICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtQcmludFRpbWVGbGFnLCAmR1RFU1Rf
RkxBRyhwcmludF90aW1lKSkgfHwKLSAgICAgICAgUGFyc2VJbnQzMkZsYWcoYXJnLCBrUmFuZG9t
U2VlZEZsYWcsICZHVEVTVF9GTEFHKHJhbmRvbV9zZWVkKSkgfHwKLSAgICAgICAgUGFyc2VJbnQz
MkZsYWcoYXJnLCBrUmVwZWF0RmxhZywgJkdURVNUX0ZMQUcocmVwZWF0KSkgfHwKLSAgICAgICAg
UGFyc2VCb29sRmxhZyhhcmcsIGtTaHVmZmxlRmxhZywgJkdURVNUX0ZMQUcoc2h1ZmZsZSkpIHx8
Ci0gICAgICAgIFBhcnNlSW50MzJGbGFnKGFyZywga1N0YWNrVHJhY2VEZXB0aEZsYWcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSkgfHwKLSAg
ICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtUaHJvd09uRmFpbHVyZUZsYWcsICZHVEVTVF9GTEFH
KHRocm93X29uX2ZhaWx1cmUpKQotICAgICAgICApIHsKLSAgICAgIC8vIFllcy4gIFNoaWZ0IHRo
ZSByZW1haW5kZXIgb2YgdGhlIGFyZ3YgbGlzdCBsZWZ0IGJ5IG9uZS4gIE5vdGUKKyAgICBib29s
IHJlbW92ZV9mbGFnID0gZmFsc2U7CisgICAgaWYgKFBhcnNlR29vZ2xlVGVzdEZsYWcoYXJnKSkg
eworICAgICAgcmVtb3ZlX2ZsYWcgPSB0cnVlOworI2lmIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVf
RkxBR18KKyAgICB9IGVsc2UgaWYgKFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtGbGFnZmlsZUZsYWcs
ICZHVEVTVF9GTEFHKGZsYWdmaWxlKSkpIHsKKyAgICAgIExvYWRGbGFnc0Zyb21GaWxlKEdURVNU
X0ZMQUcoZmxhZ2ZpbGUpKTsKKyAgICAgIHJlbW92ZV9mbGFnID0gdHJ1ZTsKKyNlbmRpZiAgLy8g
R1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXworICAgIH0gZWxzZSBpZiAoYXJnX3N0cmluZyA9
PSAiLS1oZWxwIiB8fCBhcmdfc3RyaW5nID09ICItaCIgfHwKKyAgICAgICAgICAgICAgIGFyZ19z
dHJpbmcgPT0gIi0/IiB8fCBhcmdfc3RyaW5nID09ICIvPyIgfHwKKyAgICAgICAgICAgICAgIEhh
c0dvb2dsZVRlc3RGbGFnUHJlZml4KGFyZykpIHsKKyAgICAgIC8vIEJvdGggaGVscCBmbGFnIGFu
ZCB1bnJlY29nbml6ZWQgR29vZ2xlIFRlc3QgZmxhZ3MgKGV4Y2x1ZGluZworICAgICAgLy8gaW50
ZXJuYWwgb25lcykgdHJpZ2dlciBoZWxwIGRpc3BsYXkuCisgICAgICBnX2hlbHBfZmxhZyA9IHRy
dWU7CisgICAgfQorCisgICAgaWYgKHJlbW92ZV9mbGFnKSB7CisgICAgICAvLyBTaGlmdCB0aGUg
cmVtYWluZGVyIG9mIHRoZSBhcmd2IGxpc3QgbGVmdCBieSBvbmUuICBOb3RlCiAgICAgICAvLyB0
aGF0IGFyZ3YgaGFzICgqYXJnYyArIDEpIGVsZW1lbnRzLCB0aGUgbGFzdCBvbmUgYWx3YXlzIGJl
aW5nCiAgICAgICAvLyBOVUxMLiAgVGhlIGZvbGxvd2luZyBsb29wIG1vdmVzIHRoZSB0cmFpbGlu
ZyBOVUxMIGVsZW1lbnQgYXMKICAgICAgIC8vIHdlbGwuCkBAIC00NjI4LDEyICs1ODc5LDYgQEAg
dm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHlJbXBsKGludCogYXJnYywgQ2hhclR5cGUqKiBh
cmd2KSB7CiAgICAgICAvLyBXZSBhbHNvIG5lZWQgdG8gZGVjcmVtZW50IHRoZSBpdGVyYXRvciBh
cyB3ZSBqdXN0IHJlbW92ZWQKICAgICAgIC8vIGFuIGVsZW1lbnQuCiAgICAgICBpLS07Ci0gICAg
fSBlbHNlIGlmIChhcmdfc3RyaW5nID09ICItLWhlbHAiIHx8IGFyZ19zdHJpbmcgPT0gIi1oIiB8
fAotICAgICAgICAgICAgICAgYXJnX3N0cmluZyA9PSAiLT8iIHx8IGFyZ19zdHJpbmcgPT0gIi8/
IiB8fAotICAgICAgICAgICAgICAgSGFzR29vZ2xlVGVzdEZsYWdQcmVmaXgoYXJnKSkgewotICAg
ICAgLy8gQm90aCBoZWxwIGZsYWcgYW5kIHVucmVjb2duaXplZCBHb29nbGUgVGVzdCBmbGFncyAo
ZXhjbHVkaW5nCi0gICAgICAvLyBpbnRlcm5hbCBvbmVzKSB0cmlnZ2VyIGhlbHAgZGlzcGxheS4K
LSAgICAgIGdfaGVscF9mbGFnID0gdHJ1ZTsKICAgICB9CiAgIH0KIApAQCAtNDY0OSw2ICs1ODk0
LDE3IEBAIHZvaWQgUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5SW1wbChpbnQqIGFyZ2MsIENoYXJU
eXBlKiogYXJndikgewogLy8gb3RoZXIgcGFydHMgb2YgR29vZ2xlIFRlc3QuCiB2b2lkIFBhcnNl
R29vZ2xlVGVzdEZsYWdzT25seShpbnQqIGFyZ2MsIGNoYXIqKiBhcmd2KSB7CiAgIFBhcnNlR29v
Z2xlVGVzdEZsYWdzT25seUltcGwoYXJnYywgYXJndik7CisKKyAgLy8gRml4IHRoZSB2YWx1ZSBv
ZiAqX05TR2V0QXJnYygpIG9uIG1hY09TLCBidXQgaWZmCisgIC8vICpfTlNHZXRBcmd2KCkgPT0g
YXJndgorICAvLyBPbmx5IGFwcGxpY2FibGUgdG8gY2hhcioqIHZlcnNpb24gb2YgYXJndgorI2lm
IEdURVNUX09TX01BQworI2lmbmRlZiBHVEVTVF9PU19JT1MKKyAgaWYgKCpfTlNHZXRBcmd2KCkg
PT0gYXJndikgeworICAgICpfTlNHZXRBcmdjKCkgPSAqYXJnYzsKKyAgfQorI2VuZGlmCisjZW5k
aWYKIH0KIHZvaWQgUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5KGludCogYXJnYywgd2NoYXJfdCoq
IGFyZ3YpIHsKICAgUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5SW1wbChhcmdjLCBhcmd2KTsKQEAg
LTQ2NjAsMjEgKzU5MTYsMTkgQEAgdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoaW50KiBh
cmdjLCB3Y2hhcl90KiogYXJndikgewogLy8gd2NoYXJfdC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyVHlwZT4KIHZvaWQgSW5pdEdvb2dsZVRlc3RJbXBsKGludCogYXJnYywgQ2hhclR5cGUqKiBh
cmd2KSB7Ci0gIGdfaW5pdF9ndGVzdF9jb3VudCsrOwotCiAgIC8vIFdlIGRvbid0IHdhbnQgdG8g
cnVuIHRoZSBpbml0aWFsaXphdGlvbiBjb2RlIHR3aWNlLgotICBpZiAoZ19pbml0X2d0ZXN0X2Nv
dW50ICE9IDEpIHJldHVybjsKKyAgaWYgKEdUZXN0SXNJbml0aWFsaXplZCgpKSByZXR1cm47CiAK
ICAgaWYgKCphcmdjIDw9IDApIHJldHVybjsKIAotICBpbnRlcm5hbDo6Z19leGVjdXRhYmxlX3Bh
dGggPSBpbnRlcm5hbDo6U3RyZWFtYWJsZVRvU3RyaW5nKGFyZ3ZbMF0pOwotCi0jaWYgR1RFU1Rf
SEFTX0RFQVRIX1RFU1QKICAgZ19hcmd2cy5jbGVhcigpOwogICBmb3IgKGludCBpID0gMDsgaSAh
PSAqYXJnYzsgaSsrKSB7CiAgICAgZ19hcmd2cy5wdXNoX2JhY2soU3RyZWFtYWJsZVRvU3RyaW5n
KGFyZ3ZbaV0pKTsKICAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisjaWYg
R1RFU1RfSEFTX0FCU0wKKyAgYWJzbDo6SW5pdGlhbGl6ZVN5bWJvbGl6ZXIoZ19hcmd2c1swXS5j
X3N0cigpKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0FCU0wKIAogICBQYXJzZUdvb2dsZVRlc3RG
bGFnc09ubHkoYXJnYywgYXJndik7CiAgIEdldFVuaXRUZXN0SW1wbCgpLT5Qb3N0RmxhZ1BhcnNp
bmdJbml0KCk7CkBAIC00NjkyLDEzICs1OTQ2LDYyIEBAIHZvaWQgSW5pdEdvb2dsZVRlc3RJbXBs
KGludCogYXJnYywgQ2hhclR5cGUqKiBhcmd2KSB7CiAvLwogLy8gQ2FsbGluZyB0aGUgZnVuY3Rp
b24gZm9yIHRoZSBzZWNvbmQgdGltZSBoYXMgbm8gdXNlci12aXNpYmxlIGVmZmVjdC4KIHZvaWQg
SW5pdEdvb2dsZVRlc3QoaW50KiBhcmdjLCBjaGFyKiogYXJndikgeworI2lmIGRlZmluZWQoR1RF
U1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQorICBHVEVTVF9DVVNUT01fSU5J
VF9HT09HTEVfVEVTVF9GVU5DVElPTl8oYXJnYywgYXJndik7CisjZWxzZSAgLy8gZGVmaW5lZChH
VEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8pCiAgIGludGVybmFsOjpJbml0
R29vZ2xlVGVzdEltcGwoYXJnYywgYXJndik7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfQ1VT
VE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQogfQogCiAvLyBUaGlzIG92ZXJsb2FkZWQg
dmVyc2lvbiBjYW4gYmUgdXNlZCBpbiBXaW5kb3dzIHByb2dyYW1zIGNvbXBpbGVkIGluCiAvLyBV
TklDT0RFIG1vZGUuCiB2b2lkIEluaXRHb29nbGVUZXN0KGludCogYXJnYywgd2NoYXJfdCoqIGFy
Z3YpIHsKKyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9O
XykKKyAgR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKGFyZ2MsIGFyZ3Yp
OworI2Vsc2UgIC8vIGRlZmluZWQoR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJ
T05fKQogICBpbnRlcm5hbDo6SW5pdEdvb2dsZVRlc3RJbXBsKGFyZ2MsIGFyZ3YpOworI2VuZGlm
ICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9OXykKK30K
Kworc3RkOjpzdHJpbmcgVGVtcERpcigpIHsKKyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9URU1Q
RElSX0ZVTkNUSU9OXykKKyAgcmV0dXJuIEdURVNUX0NVU1RPTV9URU1QRElSX0ZVTkNUSU9OXygp
OworI2VuZGlmCisKKyNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorICByZXR1cm4gIlxcdGVt
cFxcIjsKKyNlbGlmIEdURVNUX09TX1dJTkRPV1MKKyAgY29uc3QgY2hhciogdGVtcF9kaXIgPSBp
bnRlcm5hbDo6cG9zaXg6OkdldEVudigiVEVNUCIpOworICBpZiAodGVtcF9kaXIgPT0gTlVMTCB8
fCB0ZW1wX2RpclswXSA9PSAnXDAnKQorICAgIHJldHVybiAiXFx0ZW1wXFwiOworICBlbHNlIGlm
ICh0ZW1wX2RpcltzdHJsZW4odGVtcF9kaXIpIC0gMV0gPT0gJ1xcJykKKyAgICByZXR1cm4gdGVt
cF9kaXI7CisgIGVsc2UKKyAgICByZXR1cm4gc3RkOjpzdHJpbmcodGVtcF9kaXIpICsgIlxcIjsK
KyNlbGlmIEdURVNUX09TX0xJTlVYX0FORFJPSUQKKyAgcmV0dXJuICIvc2RjYXJkLyI7CisjZWxz
ZQorICByZXR1cm4gIi90bXAvIjsKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
K30KKworLy8gQ2xhc3MgU2NvcGVkVHJhY2UKKworLy8gUHVzaGVzIHRoZSBnaXZlbiBzb3VyY2Ug
ZmlsZSBsb2NhdGlvbiBhbmQgbWVzc2FnZSBvbnRvIGEgcGVyLXRocmVhZAorLy8gdHJhY2Ugc3Rh
Y2sgbWFpbnRhaW5lZCBieSBHb29nbGUgVGVzdC4KK3ZvaWQgU2NvcGVkVHJhY2U6OlB1c2hUcmFj
ZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgc3RkOjpzdHJpbmcgbWVzc2FnZSkgeworICBp
bnRlcm5hbDo6VHJhY2VJbmZvIHRyYWNlOworICB0cmFjZS5maWxlID0gZmlsZTsKKyAgdHJhY2Uu
bGluZSA9IGxpbmU7CisgIHRyYWNlLm1lc3NhZ2Uuc3dhcChtZXNzYWdlKTsKKworICBVbml0VGVz
dDo6R2V0SW5zdGFuY2UoKS0+UHVzaEdUZXN0VHJhY2UodHJhY2UpOworfQorCisvLyBQb3BzIHRo
ZSBpbmZvIHB1c2hlZCBieSB0aGUgYyd0b3IuCitTY29wZWRUcmFjZTo6flNjb3BlZFRyYWNlKCkK
KyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXygmVW5pdFRlc3Q6Om11dGV4XykgeworICBVbml0VGVz
dDo6R2V0SW5zdGFuY2UoKS0+UG9wR1Rlc3RUcmFjZSgpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ug
dGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0X21h
aW4uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3RfbWFpbi5jYwppbmRleCBk
MjBjMDJmZGZiMGE5NDYxZGNjMmEyNzg5YzQ5MjJiNWIzMDU2MzUyLi4yMTEzZjYyMWU2NTQzMGU1
NTcwZGZiMjAxNTg4NGEyZDRmNGNmMGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zcmMvZ3Rlc3RfbWFpbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMv
Z3Rlc3RfbWFpbi5jYwpAQCAtMjcsMTMgKzI3LDExIEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKLSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotICBzdGQ6OmNvdXQgPDwg
IlJ1bm5pbmcgbWFpbigpIGZyb20gZ3Rlc3RfbWFpbi5jY1xuIjsKKyNpbmNsdWRlIDxzdGRpby5o
PgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKK0dURVNUX0FQSV8gaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIgKiphcmd2KSB7CisgIHByaW50ZigiUnVubmluZyBtYWluKCkgZnJvbSAlc1xuIiwg
X19GSUxFX18pOwogICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CiAgIHJl
dHVybiBSVU5fQUxMX1RFU1RTKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L0JVSUxELmJhemVsIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9CVUlM
RC5iYXplbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hOTMwZDY1ZTA0NDAxNDQ0MTZhZTg4YWIyNzU4ZmQ5MzQwYTA5
MzdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9CVUlM
RC5iYXplbApAQCAtMCwwICsxLDUyNyBAQAorIyBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLgor
IyBBbGwgUmlnaHRzIFJlc2VydmVkLgorIworIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgQXV0aG9y
OiBtaXN0ZXJnQGdvb2dsZS5jb20gKEdlbm5hZGl5IENpdmlsKQorIworIyBCYXplbCBCVUlMRCBm
b3IgVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorCitsaWNl
bnNlcyhbIm5vdGljZSJdKQorCitjb25maWdfc2V0dGluZygKKyAgICBuYW1lID0gIndpbmRvd3Mi
LAorICAgIHZhbHVlcyA9IHsiY3B1IjogIng2NF93aW5kb3dzIn0sCispCisKK2NvbmZpZ19zZXR0
aW5nKAorICAgIG5hbWUgPSAid2luZG93c19tc3ZjIiwKKyAgICB2YWx1ZXMgPSB7ImNwdSI6ICJ4
NjRfd2luZG93c19tc3ZjIn0sCispCisKK2NvbmZpZ19zZXR0aW5nKAorICAgIG5hbWUgPSAiaGFz
X2Fic2wiLAorICAgIHZhbHVlcyA9IHsiZGVmaW5lIjogImFic2w9MSJ9LAorKQorCisjb24gd2lu
ZG93cyBleGNsdWRlIGd0ZXN0LXR1cGxlLmggYW5kIGdvb2dsZXRlc3QtdHVwbGUtdGVzdC5jYwor
Y2NfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0X2FsbF90ZXN0IiwKKyAgICBzaXplID0gInNtYWxs
IiwKKyAgICBzcmNzID0gZ2xvYigKKyAgICAgICAgaW5jbHVkZSA9IFsKKyAgICAgICAgICAgICJn
dGVzdC0qLmNjIiwKKyAgICAgICAgICAgICJnb29nbGV0ZXN0LSouY2MiLAorICAgICAgICAgICAg
IiouaCIsCisgICAgICAgICAgICAiZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0LyoqLyouaCIsCisg
ICAgICAgIF0sCisgICAgICAgIGV4Y2x1ZGUgPSBbCisgICAgICAgICAgICAiZ3Rlc3QtdW5pdHRl
c3QtYXBpX3Rlc3QuY2MiLAorICAgICAgICAgICAgImdvb2dsZXRlc3QtdHVwbGUtdGVzdC5jYyIs
CisgICAgICAgICAgICAiZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtYWxsLmNjIiwKKyAgICAgICAgICAg
ICJndGVzdF9hbGxfdGVzdC5jYyIsCisgICAgICAgICAgICAiZ3Rlc3QtZGVhdGgtdGVzdF9leF90
ZXN0LmNjIiwKKyAgICAgICAgICAgICJndGVzdC1saXN0ZW5lcl90ZXN0LmNjIiwKKyAgICAgICAg
ICAgICJndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYyIsCisgICAgICAgICAgICAiZ29vZ2xldGVz
dC1wYXJhbS10ZXN0LXRlc3QuY2MiLAorICAgICAgICAgICAgImdvb2dsZXRlc3QtY2F0Y2gtZXhj
ZXB0aW9ucy10ZXN0Xy5jYyIsCisgICAgICAgICAgICAiZ29vZ2xldGVzdC1jb2xvci10ZXN0Xy5j
YyIsCisgICAgICAgICAgICAiZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3RfLmNjIiwKKyAgICAgICAg
ICAgICJnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8uY2MiLAorICAgICAgICAgICAgImdvb2ds
ZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8uY2MiLAorICAgICAgICAgICAgICJnb29n
bGV0ZXN0LWxpc3RlbmVyLXRlc3QuY2MiLAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LW91dHB1
dC10ZXN0Xy5jYyIsCisgICAgICAgICAgICAgImdvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVz
dF8uY2MiLAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8uY2MiLAorICAg
ICAgICAgICAgICJnb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdF8uY2MiLAorICAgICAgICAg
ICAgICJnb29nbGV0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYyIsCisgICAgICAgICAgICAgImdv
b2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0IiwKKyAgICAgICAgICAgICAiZ29vZ2xldGVzdC10aHJv
dy1vbi1mYWlsdXJlLXRlc3RfLmNjIiwKKyAgICAgICAgICAgICAiZ29vZ2xldGVzdC1wYXJhbS10
ZXN0LWludmFsaWQtbmFtZTEtdGVzdF8uY2MiLAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LXBh
cmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0Xy5jYyIsCisKKyAgICAgICAgXSwKKyAgICApICsg
c2VsZWN0KHsKKyAgICAgICAgIi8vOndpbmRvd3MiOiBbXSwKKyAgICAgICAgIi8vOndpbmRvd3Nf
bXN2YyI6IFtdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbCisgICAgICAgICAg
ICAiZ29vZ2xldGVzdC10dXBsZS10ZXN0LmNjIiwKKyAgICAgICAgXSwKKyAgICB9KSwKKyAgICBj
b3B0cyA9IHNlbGVjdCh7CisgICAgICAgICIvLzp3aW5kb3dzIjogWyItREdURVNUX1VTRV9PV05f
VFIxX1RVUExFPTAiXSwKKyAgICAgICAgIi8vOndpbmRvd3NfbXN2YyI6IFsiLURHVEVTVF9VU0Vf
T1dOX1RSMV9UVVBMRT0wIl0sCisgICAgICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsiLURH
VEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0xIl0sCisgICAgfSksCisgICAgaW5jbHVkZXMgPSBbCisg
ICAgICAgICJnb29nbGV0ZXN0IiwKKyAgICAgICAgImdvb2dsZXRlc3QvaW5jbHVkZSIsCisgICAg
ICAgICJnb29nbGV0ZXN0L2luY2x1ZGUvaW50ZXJuYWwiLAorICAgICAgICAiZ29vZ2xldGVzdC90
ZXN0IiwKKyAgICBdLAorICAgIGxpbmtvcHRzID0gc2VsZWN0KHsKKyAgICAgICAgIi8vOndpbmRv
d3MiOiBbXSwKKyAgICAgICAgIi8vOndpbmRvd3NfbXN2YyI6IFtdLAorICAgICAgICAiLy9jb25k
aXRpb25zOmRlZmF1bHQiOiBbCisgICAgICAgICAgICAiLXB0aHJlYWQiLAorICAgICAgICBdLAor
ICAgIH0pLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0X21haW4iXSwKKykKKworCisjIFRlc3RzIGRl
YXRoIHRlc3RzLgorY2NfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtZGVhdGgtdGVzdC10
ZXN0IiwKKyAgICBzaXplID0gIm1lZGl1bSIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1kZWF0
aC10ZXN0LXRlc3QuY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdF9tYWluIl0sCispCisKK2Nj
X3Rlc3QoCisgICAgbmFtZSA9ICJndGVzdF90ZXN0X21hY3JvX3N0YWNrX2Zvb3RwcmludF90ZXN0
IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJndGVzdF90ZXN0X21hY3JvX3N0
YWNrX2Zvb3RwcmludF90ZXN0LmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKwor
I1RoZXNlIGdvb2dsZXRlc3QgdGVzdHMgaGF2ZSB0aGVpciBvd24gbWFpbigpCitjY190ZXN0KAor
ICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1saXN0ZW5lci10ZXN0IiwKKyAgICBzaXplID0gInNtYWxs
IiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWxpc3RlbmVyLXRlc3QuY2MiXSwKKyAgICBkZXBz
ID0gWyIvLzpndGVzdF9tYWluIl0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJndGVzdC11
bml0dGVzdC1hcGlfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAg
ICAgICAgImd0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjIiwKKyAgICBdLAorICAgIGRlcHMgPSBb
CisgICAgICAgICIvLzpndGVzdCIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0g
Imdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBz
cmNzID0gWworICAgICAgICAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MiLAorICAgICAg
ICAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuaCIsCisgICAgICAgICJnb29nbGV0ZXN0LXBh
cmFtLXRlc3QyLXRlc3QuY2MiLAorICAgIF0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykK
KworY2NfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0X3VuaXR0ZXN0IiwKKyAgICBzaXplID0gInNt
YWxsIiwKKyAgICBzcmNzID0gWyJndGVzdF91bml0dGVzdC5jYyJdLAorICAgIGFyZ3MgPSBbIi0t
aGVhcF9jaGVjaz1zdHJpY3QiXSwKKyAgICBzaGFyZF9jb3VudCA9IDIsCisgICAgZGVwcyA9IFsi
Ly86Z3Rlc3RfbWFpbiJdLAorKQorCisjICBQeSB0ZXN0cworCitweV9saWJyYXJ5KAorICAgIG5h
bWUgPSAiZ3Rlc3RfdGVzdF91dGlscyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBb
Imd0ZXN0X3Rlc3RfdXRpbHMucHkiXSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ3Rl
c3RfaGVscF90ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImd0ZXN0X2hl
bHBfdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdF9tYWluIl0sCispCisKK3B5X3Rl
c3QoCisgICAgbmFtZSA9ICJndGVzdF9oZWxwX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAor
ICAgIHNyY3MgPSBbImd0ZXN0X2hlbHBfdGVzdC5weSJdLAorICAgIGRhdGEgPSBbIjpndGVzdF9o
ZWxwX3Rlc3RfIl0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworY2Nf
YmluYXJ5KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8iLAorICAgIHRlc3Rv
bmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYyJdLAorICAg
IGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImdv
b2dsZXRlc3Qtb3V0cHV0LXRlc3QucHkiXSwKKyAgICBhcmdzID0gc2VsZWN0KHsKKyAgICAgICAg
IjpoYXNfYWJzbCI6IFtdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi0tbm9f
c3RhY2t0cmFjZV9zdXBwb3J0Il0sCisgICAgfSksCisgICAgZGF0YSA9IFsKKyAgICAgICAgImdv
b2dsZXRlc3Qtb3V0cHV0LXRlc3QtZ29sZGVuLWxpbi50eHQiLAorICAgICAgICAiOmdvb2dsZXRl
c3Qtb3V0cHV0LXRlc3RfIiwKKyAgICBdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxz
Il0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtY29sb3ItdGVzdF8i
LAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWNvbG9yLXRlc3Rf
LmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1l
ID0gImdvb2dsZXRlc3QtY29sb3ItdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3Jj
cyA9IFsiZ29vZ2xldGVzdC1jb2xvci10ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmdvb2dsZXRl
c3QtY29sb3ItdGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQor
CitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWVudi12YXItdGVzdF8iLAorICAg
IHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWVudi12YXItdGVzdF8uY2Mi
XSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAi
Z29vZ2xldGVzdC1lbnYtdmFyLXRlc3QiLAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNz
ID0gWyJnb29nbGV0ZXN0LWVudi12YXItdGVzdC5weSJdLAorICAgIGRhdGEgPSBbIjpnb29nbGV0
ZXN0LWVudi12YXItdGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAor
KQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8i
LAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWZpbHRlci11bml0
dGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAorICAg
IG5hbWUgPSAiZ29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3QiLAorICAgIHNpemUgPSAibWVkaXVt
IiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdC5weSJdLAorICAgIGRh
dGEgPSBbIjpnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rl
c3RfdGVzdF91dGlscyJdLAorKQorCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRl
c3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBz
cmNzID0gWyJnb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3RfLmNjIl0sCisgICAg
ZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29n
bGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAor
ICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdC5weSJdLAor
ICAgIGRhdGEgPSBbIjpnb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3RfIl0sCisg
ICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworCitjY190ZXN0KAorICAgIG5h
bWUgPSAiZ3Rlc3RfYXNzZXJ0X2J5X2V4Y2VwdGlvbl90ZXN0IiwKKyAgICBzaXplID0gInNtYWxs
IiwKKyAgICBzcmNzID0gWyJndGVzdF9hc3NlcnRfYnlfZXhjZXB0aW9uX3Rlc3QuY2MiXSwKKyAg
ICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCisKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAi
Z29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisg
ICAgc3JjcyA9IFsiZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfLmNjIl0sCisgICAg
ZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRl
c3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNz
ID0gWyJnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdC5weSJdLAorICAgIGRhdGEgPSBb
Ijpnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rl
c3RfdGVzdF91dGlscyJdLAorKQorCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRl
c3QtbGlzdC10ZXN0cy11bml0dGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0g
WyJnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86
Z3Rlc3QiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtbGlzdC10ZXN0
cy11bml0dGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVz
dC1saXN0LXRlc3RzLXVuaXR0ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmdvb2dsZXRlc3QtbGlz
dC10ZXN0cy11bml0dGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAor
KQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8iLAor
ICAgIHNyY3MgPSBbImdvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBb
Ii8vOmd0ZXN0Il0sCispCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXNodWZm
bGUtdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1z
aHVmZmxlLXRlc3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z29vZ2xldGVzdC1zaHVmZmxlLXRlc3Rf
Il0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworY2NfYmluYXJ5KAor
ICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLW5vLWV4LXRlc3RfIiwKKyAg
ICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25z
LXRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQorCitjY19iaW5h
cnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtZXgtdGVzdF8iLAor
ICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlv
bnMtdGVzdF8uY2MiXSwKKyAgICBjb3B0cyA9IFsiLWZleGNlcHRpb25zIl0sCisgICAgZGVwcyA9
IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVz
dC1jYXRjaC1leGNlcHRpb25zLXRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3Mg
PSBbImdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsK
KyAgICAgICAgIjpnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtZXgtdGVzdF8iLAorICAgICAg
ICAiOmdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy1uby1leC10ZXN0XyIsCisgICAgXSwKKyAg
ICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFt
ZSA9ICJndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAg
IHNyY3MgPSBbImd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsi
Ly86Z3Rlc3QiXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0X25vX3Rlc3RfdW5p
dHRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImd0ZXN0X25vX3Rlc3Rf
dW5pdHRlc3QuY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAor
ICAgIG5hbWUgPSAiZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdCIsCisgICAgc2l6ZSA9ICJzbWFs
bCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3QucHki
LAorICAgICAgICAiZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkiLAorICAgIF0sCisgICAgYXJncyA9
IHNlbGVjdCh7CisgICAgICAgICI6aGFzX2Fic2wiOiBbXSwKKyAgICAgICAgIi8vY29uZGl0aW9u
czpkZWZhdWx0IjogWyItLW5vX3N0YWNrdHJhY2Vfc3VwcG9ydCJdLAorICAgIH0pLAorICAgIGRh
dGEgPSBbCisgICAgICAgICMgV2UgaW52b2tlIGd0ZXN0X25vX3Rlc3RfdW5pdHRlc3QgdG8gdmVy
aWZ5IHRoZSBYTUwgb3V0cHV0CisgICAgICAgICMgd2hlbiB0aGUgdGVzdCBwcm9ncmFtIGNvbnRh
aW5zIG5vIHRlc3QgZGVmaW5pdGlvbi4KKyAgICAgICAgIjpndGVzdF9ub190ZXN0X3VuaXR0ZXN0
IiwKKyAgICAgICAgIjpndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0XyIsCisgICAgXSwKKyAgICBk
ZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9
ICJndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNz
ID0gWyJndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVz
dF9tYWluIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImd0ZXN0X3htbF9vdXRmaWxl
Ml90ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImd0ZXN0X3htbF9vdXRm
aWxlMl90ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0X21haW4iXSwKKykKKworcHlf
dGVzdCgKKyAgICBuYW1lID0gImd0ZXN0X3htbF9vdXRmaWxlc190ZXN0IiwKKyAgICBzaXplID0g
InNtYWxsIiwKKyAgICBzcmNzID0gWworICAgICAgICAiZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3Qu
cHkiLAorICAgICAgICAiZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkiLAorICAgIF0sCisgICAgZGF0
YSA9IFsKKyAgICAgICAgIjpndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8iLAorICAgICAgICAiOmd0
ZXN0X3htbF9vdXRmaWxlMl90ZXN0XyIsCisgICAgXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVz
dF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXVuaW5p
dGlhbGl6ZWQtdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0
ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAor
KQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3Qi
LAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LXVuaW5pdGlh
bGl6ZWQtdGVzdC5weSJdLAorICAgIGRhdGEgPSBbImdvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10
ZXN0XyJdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK2NjX2JpbmFy
eSgKKyAgICBuYW1lID0gImd0ZXN0X3Rlc3RicmlkZ2VfdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0g
MSwKKyAgICBzcmNzID0gWyJndGVzdF90ZXN0YnJpZGdlX3Rlc3RfLmNjIl0sCisgICAgZGVwcyA9
IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQorCisjIFRlc3RzIHRoYXQgZmlsdGVyaW5nIHZpYSB0ZXN0
YnJpZGdlIHdvcmtzCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ3Rlc3RfdGVzdGJyaWRnZV90ZXN0
IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJndGVzdF90ZXN0YnJpZGdlX3Rl
c3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z3Rlc3RfdGVzdGJyaWRnZV90ZXN0XyJdLAorICAgIGRl
cHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKKworcHlfdGVzdCgKKyAgICBuYW1lID0g
Imdvb2dsZXRlc3QtanNvbi1vdXRmaWxlcy10ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAg
ICBzcmNzID0gWworICAgICAgICAiZ29vZ2xldGVzdC1qc29uLW91dGZpbGVzLXRlc3QucHkiLAor
ICAgICAgICAiZ3Rlc3RfanNvbl90ZXN0X3V0aWxzLnB5IiwKKyAgICBdLAorICAgIGRhdGEgPSBb
CisgICAgICAgICI6Z3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfIiwKKyAgICAgICAgIjpndGVzdF94
bWxfb3V0ZmlsZTJfdGVzdF8iLAorICAgIF0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRp
bHMiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtanNvbi1vdXRwdXQt
dW5pdHRlc3QiLAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNzID0gWworICAgICAgICAi
Z29vZ2xldGVzdC1qc29uLW91dHB1dC11bml0dGVzdC5weSIsCisgICAgICAgICJndGVzdF9qc29u
X3Rlc3RfdXRpbHMucHkiLAorICAgIF0sCisgICAgZGF0YSA9IFsKKyAgICAgICAgIyBXZSBpbnZv
a2UgZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCB0byB2ZXJpZnkgdGhlIEpTT04gb3V0cHV0CisgICAg
ICAgICMgd2hlbiB0aGUgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIG5vIHRlc3QgZGVmaW5pdGlvbi4K
KyAgICAgICAgIjpndGVzdF9ub190ZXN0X3VuaXR0ZXN0IiwKKyAgICAgICAgIjpndGVzdF94bWxf
b3V0cHV0X3VuaXR0ZXN0XyIsCisgICAgXSwKKyAgICBhcmdzID0gc2VsZWN0KHsKKyAgICAgICAg
IjpoYXNfYWJzbCI6IFtdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi0tbm9f
c3RhY2t0cmFjZV9zdXBwb3J0Il0sCisgICAgfSksCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3Rf
dXRpbHMiXSwKKykKKyMgVmVyaWZpZXMgaW50ZXJhY3Rpb24gb2YgZGVhdGggdGVzdHMgYW5kIGV4
Y2VwdGlvbnMuCitjY190ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1kZWF0aC10ZXN0X2V4
X2NhdGNoX3Rlc3QiLAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNzID0gWyJnb29nbGV0
ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gWyItZmV4Y2VwdGlvbnMi
XSwKKyAgICBkZWZpbmVzID0gWyJHVEVTVF9FTkFCTEVfQ0FUQ0hfRVhDRVBUSU9OU189MSJdLAor
ICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdv
b2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3RfIiwKKyAgICB0ZXN0b25seSA9
IDEsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVz
dF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitjY19iaW5hcnkoCisgICAg
bmFtZSA9ICJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0XyIsCisgICAg
dGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlk
LW5hbWUyLXRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworcHlfdGVz
dCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3Qi
LAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtcGFyYW0tdGVz
dC1pbnZhbGlkLW5hbWUxLXRlc3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z29vZ2xldGVzdC1wYXJh
bS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91
dGlscyJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0
LWludmFsaWQtbmFtZTItdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsi
Z29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTItdGVzdC5weSJdLAorICAgIGRhdGEg
PSBbIjpnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0XyJdLAorICAgIGRl
cHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdC5weSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJl
LXVuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1ZGZiYzY5M2I0M2ExYjE5ZTM4NDdkY2JjYWI4ODZk
MmY0ZDI4ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdC5weQpAQCAtMCwwICsxLDIwOCBA
QAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5j
LgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVW5pdCB0
ZXN0IGZvciBHb29nbGUgVGVzdCdzIGJyZWFrLW9uLWZhaWx1cmUgbW9kZS4KKworQSB1c2VyIGNh
biBhc2sgR29vZ2xlIFRlc3QgdG8gc2VnLWZhdWx0IHdoZW4gYW4gYXNzZXJ0aW9uIGZhaWxzLCB1
c2luZworZWl0aGVyIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlh
YmxlIG9yIHRoZQorLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWcuICBUaGlzIHNjcmlwdCB0
ZXN0cyBzdWNoIGZ1bmN0aW9uYWxpdHkKK2J5IGludm9raW5nIGdvb2dsZXRlc3QtYnJlYWstb24t
ZmFpbHVyZS11bml0dGVzdF8gKGEgcHJvZ3JhbSB3cml0dGVuIHdpdGgKK0dvb2dsZSBUZXN0KSB3
aXRoIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgYW5kIGNvbW1hbmQgbGluZSBmbGFncy4KKyIiIgor
CitpbXBvcnQgb3MKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKKyMgQ29uc3RhbnRzLgorCitJ
U19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCisKKyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxl
IGZvciBlbmFibGluZy9kaXNhYmxpbmcgdGhlIGJyZWFrLW9uLWZhaWx1cmUgbW9kZS4KK0JSRUFL
X09OX0ZBSUxVUkVfRU5WX1ZBUiA9ICdHVEVTVF9CUkVBS19PTl9GQUlMVVJFJworCisjIFRoZSBj
b21tYW5kIGxpbmUgZmxhZyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBicmVhay1vbi1mYWls
dXJlIG1vZGUuCitCUkVBS19PTl9GQUlMVVJFX0ZMQUcgPSAnZ3Rlc3RfYnJlYWtfb25fZmFpbHVy
ZScKKworIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0
aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLgorVEhST1dfT05fRkFJTFVSRV9FTlZfVkFSID0gJ0dU
RVNUX1RIUk9XX09OX0ZBSUxVUkUnCisKKyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciBl
bmFibGluZy9kaXNhYmxpbmcgdGhlIGNhdGNoLWV4Y2VwdGlvbnMgbW9kZS4KK0NBVENIX0VYQ0VQ
VElPTlNfRU5WX1ZBUiA9ICdHVEVTVF9DQVRDSF9FWENFUFRJT05TJworCisjIFBhdGggdG8gdGhl
IGdvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8gcHJvZ3JhbS4KK0VYRV9QQVRI
ID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisgICAgJ2dvb2dsZXRl
c3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8nKQorCisKK2Vudmlyb24gPSBndGVzdF90ZXN0
X3V0aWxzLmVudmlyb24KK1NldEVudlZhciA9IGd0ZXN0X3Rlc3RfdXRpbHMuU2V0RW52VmFyCisK
KyMgVGVzdHMgaW4gdGhpcyBmaWxlIHJ1biBhIEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QgcHJvZ3Jh
bSBhbmQgZXhwZWN0IGl0CisjIHRvIHRlcm1pbmF0ZSBwcmVtYXR1cmVseS4gIFRoZXJlZm9yZSB0
aGV5IGFyZSBpbmNvbXBhdGlibGUgd2l0aAorIyB0aGUgcHJlbWF0dXJlLWV4aXQtZmlsZSBwcm90
b2NvbCBieSBkZXNpZ24uICBVbnNldCB0aGUKKyMgcHJlbWF0dXJlLWV4aXQgZmlsZXBhdGggdG8g
cHJldmVudCBHb29nbGUgVGVzdCBmcm9tIGNyZWF0aW5nCisjIHRoZSBmaWxlLgorU2V0RW52VmFy
KGd0ZXN0X3Rlc3RfdXRpbHMuUFJFTUFUVVJFX0VYSVRfRklMRV9FTlZfVkFSLCBOb25lKQorCisK
K2RlZiBSdW4oY29tbWFuZCk6CisgICIiIlJ1bnMgYSBjb21tYW5kOyByZXR1cm5zIDEgaWYgaXQg
d2FzIGtpbGxlZCBieSBhIHNpZ25hbCwgb3IgMCBvdGhlcndpc2UuIiIiCisKKyAgcCA9IGd0ZXN0
X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kLCBlbnY9ZW52aXJvbikKKyAgaWYgcC50ZXJt
aW5hdGVkX2J5X3NpZ25hbDoKKyAgICByZXR1cm4gMQorICBlbHNlOgorICAgIHJldHVybiAwCisK
KworIyBUaGUgdGVzdHMuCisKKworY2xhc3MgR1Rlc3RCcmVha09uRmFpbHVyZVVuaXRUZXN0KGd0
ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJUZXN0cyB1c2luZyB0aGUgR1RFU1RfQlJF
QUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBvcgorICB0aGUgLS1ndGVzdF9icmVh
a19vbl9mYWlsdXJlIGZsYWcgdG8gdHVybiBhc3NlcnRpb24gZmFpbHVyZXMgaW50bworICBzZWdt
ZW50YXRpb24gZmF1bHRzLgorICAiIiIKKworICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGVudl92
YXJfdmFsdWUsIGZsYWdfdmFsdWUsIGV4cGVjdF9zZWdfZmF1bHQpOgorICAgICIiIlJ1bnMgZ29v
Z2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0XyBhbmQgdmVyaWZpZXMgdGhhdCBpdCBk
b2VzCisgICAgKG9yIGRvZXMgbm90KSBoYXZlIGEgc2VnLWZhdWx0LgorCisgICAgQXJnczoKKyAg
ICAgIGVudl92YXJfdmFsdWU6ICAgIHZhbHVlIG9mIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJF
IGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZTsgTm9uZSBpZiB0
aGUgdmFyaWFibGUgc2hvdWxkIGJlIHVuc2V0LgorICAgICAgZmxhZ192YWx1ZTogICAgICAgdmFs
dWUgb2YgdGhlIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnOworICAgICAgICAgICAgICAg
ICAgICAgICAgTm9uZSBpZiB0aGUgZmxhZyBzaG91bGQgbm90IGJlIHByZXNlbnQuCisgICAgICBl
eHBlY3Rfc2VnX2ZhdWx0OiAxIGlmIHRoZSBwcm9ncmFtIGlzIGV4cGVjdGVkIHRvIGdlbmVyYXRl
IGEgc2VnLWZhdWx0OworICAgICAgICAgICAgICAgICAgICAgICAgMCBvdGhlcndpc2UuCisgICAg
IiIiCisKKyAgICBTZXRFbnZWYXIoQlJFQUtfT05fRkFJTFVSRV9FTlZfVkFSLCBlbnZfdmFyX3Zh
bHVlKQorCisgICAgaWYgZW52X3Zhcl92YWx1ZSBpcyBOb25lOgorICAgICAgZW52X3Zhcl92YWx1
ZV9tc2cgPSAnIGlzIG5vdCBzZXQnCisgICAgZWxzZToKKyAgICAgIGVudl92YXJfdmFsdWVfbXNn
ID0gJz0nICsgZW52X3Zhcl92YWx1ZQorCisgICAgaWYgZmxhZ192YWx1ZSBpcyBOb25lOgorICAg
ICAgZmxhZyA9ICcnCisgICAgZWxpZiBmbGFnX3ZhbHVlID09ICcwJzoKKyAgICAgIGZsYWcgPSAn
LS0lcz0wJyAlIEJSRUFLX09OX0ZBSUxVUkVfRkxBRworICAgIGVsc2U6CisgICAgICBmbGFnID0g
Jy0tJXMnICUgQlJFQUtfT05fRkFJTFVSRV9GTEFHCisKKyAgICBjb21tYW5kID0gW0VYRV9QQVRI
XQorICAgIGlmIGZsYWc6CisgICAgICBjb21tYW5kLmFwcGVuZChmbGFnKQorCisgICAgaWYgZXhw
ZWN0X3NlZ19mYXVsdDoKKyAgICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxkJworICAgIGVsc2U6
CisgICAgICBzaG91bGRfb3Jfbm90ID0gJ3Nob3VsZCBub3QnCisKKyAgICBoYXNfc2VnX2ZhdWx0
ID0gUnVuKGNvbW1hbmQpCisKKyAgICBTZXRFbnZWYXIoQlJFQUtfT05fRkFJTFVSRV9FTlZfVkFS
LCBOb25lKQorCisgICAgbXNnID0gKCd3aGVuICVzJXMsIGFuIGFzc2VydGlvbiBmYWlsdXJlIGlu
ICIlcyIgJXMgY2F1c2UgYSBzZWctZmF1bHQuJyAlCisgICAgICAgICAgIChCUkVBS19PTl9GQUlM
VVJFX0VOVl9WQVIsIGVudl92YXJfdmFsdWVfbXNnLCAnICcuam9pbihjb21tYW5kKSwKKyAgICAg
ICAgICAgIHNob3VsZF9vcl9ub3QpKQorICAgIHNlbGYuYXNzZXJ0XyhoYXNfc2VnX2ZhdWx0ID09
IGV4cGVjdF9zZWdfZmF1bHQsIG1zZykKKworICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcihzZWxm
KToKKyAgICAiIiJUZXN0cyB0aGUgYmVoYXZpb3Igb2YgdGhlIGRlZmF1bHQgbW9kZS4iIiIKKwor
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3Nl
Z19mYXVsdD0wKQorCisgIGRlZiB0ZXN0RW52VmFyKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5n
IHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlhYmxlLiIiIgorCisg
ICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ192YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdf
ZmF1bHQ9MCkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKKyAgICAg
ICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0X3NlZ19mYXVsdD0xKQorCisgIGRlZiB0ZXN0RmxhZyhzZWxmKToKKyAgICAiIiJUZXN0
cyB1c2luZyB0aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWcuIiIiCisKKyAgICBzZWxm
LlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ192YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0w
KQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAg
ICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rf
c2VnX2ZhdWx0PTEpCisKKyAgZGVmIHRlc3RGbGFnT3ZlcnJpZGVzRW52VmFyKHNlbGYpOgorICAg
ICIiIlRlc3RzIHRoYXQgdGhlIGZsYWcgb3ZlcnJpZGVzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJs
ZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAorICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIGV4
cGVjdF9zZWdfZmF1bHQ9MCkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScw
JywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAg
ICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zh
cl92YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCisgICAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0wKQorICAgIHNlbGYuUnVuQW5kVmVy
aWZ5KGVudl92YXJfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9
JzEnLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKKworICBkZWYg
dGVzdEJyZWFrT25GYWlsdXJlT3ZlcnJpZGVzVGhyb3dPbkZhaWx1cmUoc2VsZik6CisgICAgIiIi
VGVzdHMgdGhhdCBndGVzdF9icmVha19vbl9mYWlsdXJlIG92ZXJyaWRlcyBndGVzdF90aHJvd19v
bl9mYWlsdXJlLiIiIgorCisgICAgU2V0RW52VmFyKFRIUk9XX09OX0ZBSUxVUkVfRU5WX1ZBUiwg
JzEnKQorICAgIHRyeToKKyAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0xKQorICAgIGZpbmFsbHk6CisgICAgICBTZXRF
bnZWYXIoVEhST1dfT05fRkFJTFVSRV9FTlZfVkFSLCBOb25lKQorCisgIGlmIElTX1dJTkRPV1M6
CisgICAgZGVmIHRlc3RDYXRjaEV4Y2VwdGlvbnNEb2VzTm90SW50ZXJmZXJlKHNlbGYpOgorICAg
ICAgIiIiVGVzdHMgdGhhdCBndGVzdF9jYXRjaF9leGNlcHRpb25zIGRvZXNuJ3QgaW50ZXJmZXJl
LiIiIgorCisgICAgICBTZXRFbnZWYXIoQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSLCAnMScpCisg
ICAgICB0cnk6CisgICAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0xKQorICAgICAgZmluYWxseToKKyAgICAgICAg
U2V0RW52VmFyKENBVENIX0VYQ0VQVElPTlNfRU5WX1ZBUiwgTm9uZSkKKworCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUt
dW5pdHRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWJy
ZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4NDk1N2EyZDAzYjU2MjYw
YzhlMmMwYWU4ZjVhMjdiZWI2ZjYzNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8uY2MK
QEAgLTAsMCArMSw4NiBAQAorLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCisvLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8g
bWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisKKy8vIFVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyBicmVhay1vbi1mYWlsdXJl
IG1vZGUuCisvLworLy8gQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gc2VnLWZhdWx0IHdo
ZW4gYW4gYXNzZXJ0aW9uIGZhaWxzLCB1c2luZworLy8gZWl0aGVyIHRoZSBHVEVTVF9CUkVBS19P
Tl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQorLy8gLS1ndGVzdF9icmVha19v
bl9mYWlsdXJlIGZsYWcuICBUaGlzIGZpbGUgaXMgdXNlZCBmb3IgdGVzdGluZyBzdWNoCisvLyBm
dW5jdGlvbmFsaXR5LgorLy8KKy8vIFRoaXMgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBh
IFB5dGhvbiB1bml0IHRlc3QuICBJdCBpcworLy8gZXhwZWN0ZWQgdG8gZmFpbC4gIERvbid0IHJ1
biBpdCBkaXJlY3RseS4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpZiBHVEVTVF9P
U19XSU5ET1dTCisjIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyMgaW5jbHVkZSA8c3RkbGliLmg+Cisj
ZW5kaWYKKworbmFtZXNwYWNlIHsKKworLy8gQSB0ZXN0IHRoYXQncyBleHBlY3RlZCB0byBmYWls
LgorVEVTVChGb28sIEJhcikgeworICBFWFBFQ1RfRVEoMiwgMyk7Cit9CisKKyNpZiBHVEVTVF9I
QVNfU0VIICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorLy8gT24gV2luZG93cyBNb2JpbGUg
Z2xvYmFsIGV4Y2VwdGlvbiBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZC4KK0xPTkcgV0lOQVBJ
IEV4aXRXaXRoRXhjZXB0aW9uQ29kZSgKKyAgICBzdHJ1Y3QgX0VYQ0VQVElPTl9QT0lOVEVSUyog
ZXhjZXB0aW9uX3BvaW50ZXJzKSB7CisgIGV4aXQoZXhjZXB0aW9uX3BvaW50ZXJzLT5FeGNlcHRp
b25SZWNvcmQtPkV4Y2VwdGlvbkNvZGUpOworfQorI2VuZGlmCisKK30gIC8vIG5hbWVzcGFjZQor
CitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyNpZiBHVEVTVF9PU19XSU5ET1dT
CisgIC8vIFN1cHByZXNzZXMgZGlzcGxheSBvZiB0aGUgV2luZG93cyBlcnJvciBkaWFsb2cgdXBv
biBlbmNvdW50ZXJpbmcKKyAgLy8gYSBnZW5lcmFsIHByb3RlY3Rpb24gZmF1bHQgKHNlZ21lbnQg
dmlvbGF0aW9uKS4KKyAgU2V0RXJyb3JNb2RlKFNFTV9OT0dQRkFVTFRFUlJPUkJPWCB8IFNFTV9G
QUlMQ1JJVElDQUxFUlJPUlMpOworCisjIGlmIEdURVNUX0hBU19TRUggJiYgIUdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCisKKyAgLy8gVGhlIGRlZmF1bHQgdW5oYW5kbGVkIGV4Y2VwdGlvbiBmaWx0
ZXIgZG9lcyBub3QgYWx3YXlzIGV4aXQKKyAgLy8gd2l0aCB0aGUgZXhjZXB0aW9uIGNvZGUgYXMg
ZXhpdCBjb2RlIC0gZm9yIGV4YW1wbGUgaXQgZXhpdHMgd2l0aAorICAvLyAwIGZvciBFWENFUFRJ
T05fQUNDRVNTX1ZJT0xBVElPTiBhbmQgMSBmb3IgRVhDRVBUSU9OX0JSRUFLUE9JTlQKKyAgLy8g
aWYgdGhlIGFwcGxpY2F0aW9uIGlzIGNvbXBpbGVkIGluIGRlYnVnIG1vZGUuIFRodXMgd2UgdXNl
IG91ciBvd24KKyAgLy8gZmlsdGVyIHdoaWNoIGFsd2F5cyBleGl0cyB3aXRoIHRoZSBleGNlcHRp
b24gY29kZSBmb3IgdW5oYW5kbGVkCisgIC8vIGV4Y2VwdGlvbnMuCisgIFNldFVuaGFuZGxlZEV4
Y2VwdGlvbkZpbHRlcihFeGl0V2l0aEV4Y2VwdGlvbkNvZGUpOworCisjIGVuZGlmCisjZW5kaWYg
IC8vIEdURVNUX09TX1dJTkRPV1MKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFy
Z3YpOworCisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0LnB5
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlv
bnMtdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZDQ5YzEwMjNjNTBlZjE2ODMzZTZiOGUyYThlNjIwMjQ4
NDMyYWMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
b29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdC5weQpAQCAtMCwwICsxLDIzMyBAQAorIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDEwIEdvb2dsZSBJbmMuICBBbGwg
UmlnaHRzIFJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6
CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVGVzdHMgR29vZ2xlIFRl
c3QncyBleGNlcHRpb24gY2F0Y2hpbmcgYmVoYXZpb3IuCisKK1RoaXMgc2NyaXB0IGludm9rZXMg
Z29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3RfIGFuZAorZ29vZ2xldGVzdC1jYXRjaC1l
eGNlcHRpb25zLWV4LXRlc3RfIChwcm9ncmFtcyB3cml0dGVuIHdpdGgKK0dvb2dsZSBUZXN0KSBh
bmQgdmVyaWZpZXMgdGhlaXIgb3V0cHV0LgorIiIiCisKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxz
CisKKyMgQ29uc3RhbnRzLgorRkxBR19QUkVGSVggPSAnLS1ndGVzdF8nCitMSVNUX1RFU1RTX0ZM
QUcgPSBGTEFHX1BSRUZJWCArICdsaXN0X3Rlc3RzJworTk9fQ0FUQ0hfRVhDRVBUSU9OU19GTEFH
ID0gRkxBR19QUkVGSVggKyAnY2F0Y2hfZXhjZXB0aW9ucz0wJworRklMVEVSX0ZMQUcgPSBGTEFH
X1BSRUZJWCArICdmaWx0ZXInCisKKyMgUGF0aCB0byB0aGUgZ29vZ2xldGVzdC1jYXRjaC1leGNl
cHRpb25zLWV4LXRlc3RfIGJpbmFyeSwgY29tcGlsZWQgd2l0aAorIyBleGNlcHRpb25zIGVuYWJs
ZWQuCitFWF9FWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRo
KAorICAgICdnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtZXgtdGVzdF8nKQorCisjIFBhdGgg
dG8gdGhlIGdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0XyBiaW5hcnksIGNvbXBpbGVk
IHdpdGgKKyMgZXhjZXB0aW9ucyBkaXNhYmxlZC4KK0VYRV9QQVRIID0gZ3Rlc3RfdGVzdF91dGls
cy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisgICAgJ2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9u
cy1uby1leC10ZXN0XycpCisKK2Vudmlyb24gPSBndGVzdF90ZXN0X3V0aWxzLmVudmlyb24KK1Nl
dEVudlZhciA9IGd0ZXN0X3Rlc3RfdXRpbHMuU2V0RW52VmFyCisKKyMgVGVzdHMgaW4gdGhpcyBm
aWxlIHJ1biBhIEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QgcHJvZ3JhbSBhbmQgZXhwZWN0IGl0Cisj
IHRvIHRlcm1pbmF0ZSBwcmVtYXR1cmVseS4gIFRoZXJlZm9yZSB0aGV5IGFyZSBpbmNvbXBhdGli
bGUgd2l0aAorIyB0aGUgcHJlbWF0dXJlLWV4aXQtZmlsZSBwcm90b2NvbCBieSBkZXNpZ24uICBV
bnNldCB0aGUKKyMgcHJlbWF0dXJlLWV4aXQgZmlsZXBhdGggdG8gcHJldmVudCBHb29nbGUgVGVz
dCBmcm9tIGNyZWF0aW5nCisjIHRoZSBmaWxlLgorU2V0RW52VmFyKGd0ZXN0X3Rlc3RfdXRpbHMu
UFJFTUFUVVJFX0VYSVRfRklMRV9FTlZfVkFSLCBOb25lKQorCitURVNUX0xJU1QgPSBndGVzdF90
ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgW0VYRV9QQVRILCBMSVNUX1RFU1RTX0ZMQUddLCBl
bnY9ZW52aXJvbikub3V0cHV0CisKK1NVUFBPUlRTX1NFSF9FWENFUFRJT05TID0gJ1Rocm93c1Nl
aEV4Y2VwdGlvbicgaW4gVEVTVF9MSVNUCisKK2lmIFNVUFBPUlRTX1NFSF9FWENFUFRJT05TOgor
ICBCSU5BUllfT1VUUFVUID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtFWEVfUEFUSF0s
IGVudj1lbnZpcm9uKS5vdXRwdXQKKworRVhfQklOQVJZX09VVFBVVCA9IGd0ZXN0X3Rlc3RfdXRp
bHMuU3VicHJvY2VzcygKKyAgICBbRVhfRVhFX1BBVEhdLCBlbnY9ZW52aXJvbikub3V0cHV0CisK
KworIyBUaGUgdGVzdHMuCitpZiBTVVBQT1JUU19TRUhfRVhDRVBUSU9OUzoKKyAgIyBweWxpbnQ6
ZGlzYWJsZS1tc2c9QzYzMDIKKyAgY2xhc3MgQ2F0Y2hTZWhFeGNlcHRpb25zVGVzdChndGVzdF90
ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBleGNlcHRpb24tY2F0Y2hpbmcgYmVo
YXZpb3IuIiIiCisKKworICAgIGRlZiBUZXN0U2VoRXhjZXB0aW9ucyhzZWxmLCB0ZXN0X291dHB1
dCk6CisgICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhy
b3duICcKKyAgICAgICAgICAgICAgICAgICAnaW4gdGhlIHRlc3QgZml4dHVyZVwncyBjb25zdHJ1
Y3RvcicKKyAgICAgICAgICAgICAgICAgICBpbiB0ZXN0X291dHB1dCkKKyAgICAgIHNlbGYuYXNz
ZXJ0XygnU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24gJworICAgICAgICAgICAg
ICAgICAgICdpbiB0aGUgdGVzdCBmaXh0dXJlXCdzIGRlc3RydWN0b3InCisgICAgICAgICAgICAg
ICAgICAgaW4gdGVzdF9vdXRwdXQpCisgICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24g
d2l0aCBjb2RlIDB4MmEgdGhyb3duIGluIFNldFVwVGVzdENhc2UoKScKKyAgICAgICAgICAgICAg
ICAgICBpbiB0ZXN0X291dHB1dCkKKyAgICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3
aXRoIGNvZGUgMHgyYSB0aHJvd24gaW4gVGVhckRvd25UZXN0Q2FzZSgpJworICAgICAgICAgICAg
ICAgICAgIGluIHRlc3Rfb3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9u
IHdpdGggY29kZSAweDJhIHRocm93biBpbiBTZXRVcCgpJworICAgICAgICAgICAgICAgICAgIGlu
IHRlc3Rfb3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGggY29k
ZSAweDJhIHRocm93biBpbiBUZWFyRG93bigpJworICAgICAgICAgICAgICAgICAgIGluIHRlc3Rf
b3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGggY29kZSAweDJh
IHRocm93biBpbiB0aGUgdGVzdCBib2R5JworICAgICAgICAgICAgICAgICAgIGluIHRlc3Rfb3V0
cHV0KQorCisgICAgZGVmIHRlc3RDYXRjaGVzU2VoRXhjZXB0aW9uc1dpdGhDeHhFeGNlcHRpb25z
RW5hYmxlZChzZWxmKToKKyAgICAgIHNlbGYuVGVzdFNlaEV4Y2VwdGlvbnMoRVhfQklOQVJZX09V
VFBVVCkKKworICAgIGRlZiB0ZXN0Q2F0Y2hlc1NlaEV4Y2VwdGlvbnNXaXRoQ3h4RXhjZXB0aW9u
c0Rpc2FibGVkKHNlbGYpOgorICAgICAgc2VsZi5UZXN0U2VoRXhjZXB0aW9ucyhCSU5BUllfT1VU
UFVUKQorCisKK2NsYXNzIENhdGNoQ3h4RXhjZXB0aW9uc1Rlc3QoZ3Rlc3RfdGVzdF91dGlscy5U
ZXN0Q2FzZSk6CisgICIiIlRlc3RzIEMrKyBleGNlcHRpb24tY2F0Y2hpbmcgYmVoYXZpb3IuCisK
KyAgICAgVGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UgdmVyaWZ5IHRoYXQ6CisgICAgICogQysrIGV4
Y2VwdGlvbnMgYXJlIGNhdWdodCBhbmQgbG9nZ2VkIGFzIEMrKyAobm90IFNFSCkgZXhjZXB0aW9u
cworICAgICAqIEV4Y2VwdGlvbiB0aHJvd24gYWZmZWN0IHRoZSByZW1haW5kZXIgb2YgdGhlIHRl
c3Qgd29yayBmbG93IGluIHRoZQorICAgICAgIGV4cGVjdGVkIG1hbm5lci4KKyAgIiIiCisKKyAg
ZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luRml4dHVyZUNvbnN0cnVjdG9yKHNlbGYpOgor
ICAgIHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICcKKyAgICAg
ICAgICAgICAgICAgJyJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIiB0aHJvd24gJworICAgICAgICAg
ICAgICAgICAnaW4gdGhlIHRlc3QgZml4dHVyZVwncyBjb25zdHJ1Y3RvcicKKyAgICAgICAgICAg
ICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ3VuZXhwZWN0ZWQn
IG5vdCBpbiBFWF9CSU5BUllfT1VUUFVULAorICAgICAgICAgICAgICAgICAnVGhpcyBmYWlsdXJl
IGJlbG9uZ3MgaW4gdGhpcyB0ZXN0IG9ubHkgaWYgJworICAgICAgICAgICAgICAgICAnIkN4eEV4
Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0IiAobm8gcXVvdGVzKSAnCisgICAgICAgICAgICAgICAg
ICdhcHBlYXJzIG9uIHRoZSBzYW1lIGxpbmUgYXMgd29yZHMgImNhbGxlZCB1bmV4cGVjdGVkbHki
JykKKworICBpZiAoJ0N4eEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3QuVGhyb3dzRXhjZXB0aW9u
SW5EZXN0cnVjdG9yJyBpbgorICAgICAgRVhfQklOQVJZX09VVFBVVCk6CisKKyAgICBkZWYgdGVz
dENhdGNoZXNDeHhFeGNlcHRpb25zSW5GaXh0dXJlRGVzdHJ1Y3RvcihzZWxmKToKKyAgICAgIHNl
bGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICcKKyAgICAgICAgICAg
ICAgICAgICAnIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iIHRocm93biAnCisgICAgICAgICAgICAg
ICAgICAgJ2luIHRoZSB0ZXN0IGZpeHR1cmVcJ3MgZGVzdHJ1Y3RvcicKKyAgICAgICAgICAgICAg
ICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRp
b25JbkRlc3RydWN0b3JUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgJworICAgICAgICAgICAgICAg
ICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFS
WV9PVVRQVVQpCisKKyAgZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luU2V0VXBUZXN0Q2Fz
ZShzZWxmKToKKyAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlv
biAiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiInCisgICAgICAgICAgICAgICAgICcgdGhyb3duIGlu
IFNldFVwVGVzdENhc2UoKScKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkK
KyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0OjpUZWFyRG93
blRlc3RDYXNlKCkgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAg
ICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4
eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgY29uc3RydWN0b3IgJworICAgICAgICAgICAg
ICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZ
X09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRl
c3QgZGVzdHJ1Y3RvciAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJwor
ICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0Xygn
Q3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6U2V0VXAoKSAnCisgICAgICAgICAgICAg
ICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllf
T1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVz
dDo6VGVhckRvd24oKSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJwor
ICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0Xygn
Q3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCB0ZXN0IGJvZHkgJworICAgICAgICAgICAg
ICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZ
X09VVFBVVCkKKworICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5UZWFyRG93blRlc3RD
YXNlKHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0
aW9uICJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIicKKyAgICAgICAgICAgICAgICAgJyB0aHJvd24g
aW4gVGVhckRvd25UZXN0Q2FzZSgpJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VU
UFVUKQorCisgIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJblNldFVwKHNlbGYpOgorICAg
IHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICJTdGFuZGFyZCBD
KysgZXhjZXB0aW9uIicKKyAgICAgICAgICAgICAgICAgJyB0aHJvd24gaW4gU2V0VXAoKScKKyAg
ICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4
eEV4Y2VwdGlvbkluU2V0VXBUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgJworICAgICAgICAgICAg
ICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZ
X09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0IGRlc3Ry
dWN0b3IgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAg
ICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2Vw
dGlvbkluU2V0VXBUZXN0OjpUZWFyRG93bigpICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBh
cyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAg
c2VsZi5hc3NlcnRfKCd1bmV4cGVjdGVkJyBub3QgaW4gRVhfQklOQVJZX09VVFBVVCwKKyAgICAg
ICAgICAgICAgICAgJ1RoaXMgZmFpbHVyZSBiZWxvbmdzIGluIHRoaXMgdGVzdCBvbmx5IGlmICcK
KyAgICAgICAgICAgICAgICAgJyJDeHhFeGNlcHRpb25JblNldFVwVGVzdCIgKG5vIHF1b3Rlcykg
JworICAgICAgICAgICAgICAgICAnYXBwZWFycyBvbiB0aGUgc2FtZSBsaW5lIGFzIHdvcmRzICJj
YWxsZWQgdW5leHBlY3RlZGx5IicpCisKKyAgZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0lu
VGVhckRvd24oc2VsZik6CisgICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVz
Y3JpcHRpb24gIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iJworICAgICAgICAgICAgICAgICAnIHRo
cm93biBpbiBUZWFyRG93bigpJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVU
KQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3Q6OlRlYXJEb3du
VGVzdENhc2UoKSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAg
ICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4
RXhjZXB0aW9uSW5UZWFyRG93blRlc3QgZGVzdHJ1Y3RvciAnCisgICAgICAgICAgICAgICAgICdj
YWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVU
KQorCisgIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJblRlc3RCb2R5KHNlbGYpOgorICAg
IHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICJTdGFuZGFyZCBD
KysgZXhjZXB0aW9uIicKKyAgICAgICAgICAgICAgICAgJyB0aHJvd24gaW4gdGhlIHRlc3QgYm9k
eScKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2Vy
dF8oJ0N4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgJworICAg
ICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4g
RVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluVGVzdEJv
ZHlUZXN0IGRlc3RydWN0b3IgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVk
LicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2Vy
dF8oJ0N4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0OjpUZWFyRG93bigpICcKKyAgICAgICAgICAg
ICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFS
WV9PVVRQVVQpCisKKyAgZGVmIHRlc3RDYXRjaGVzTm9uU3RkQ3h4RXhjZXB0aW9ucyhzZWxmKToK
KyAgICBzZWxmLmFzc2VydF8oJ1Vua25vd24gQysrIGV4Y2VwdGlvbiB0aHJvd24gaW4gdGhlIHRl
c3QgYm9keScKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKworICBkZWYg
dGVzdFVuaGFuZGxlZEN4eEV4Y2VwdGlvbnNBYm9ydFRoZVByb2dyYW0oc2VsZik6CisgICAgIyBG
aWx0ZXJzIG91dCBTRUggZXhjZXB0aW9uIHRlc3RzIG9uIFdpbmRvd3MuIFVuaGFuZGxlZCBTRUgg
ZXhjZXB0aW9ucworICAgICMgY2F1c2UgdGVzdHMgdG8gc2hvdyBwb3AtdXAgd2luZG93cyB0aGVy
ZS4KKyAgICBGSVRMRVJfT1VUX1NFSF9URVNUU19GTEFHID0gRklMVEVSX0ZMQUcgKyAnPS0qU2Vo
KicKKyAgICAjIEJ5IGRlZmF1bHQsIEdvb2dsZSBUZXN0IGRvZXNuJ3QgY2F0Y2ggdGhlIGV4Y2Vw
dGlvbnMuCisgICAgdW5jYXVnaHRfZXhjZXB0aW9uc19leF9iaW5hcnlfb3V0cHV0ID0gZ3Rlc3Rf
dGVzdF91dGlscy5TdWJwcm9jZXNzKAorICAgICAgICBbRVhfRVhFX1BBVEgsCisgICAgICAgICBO
T19DQVRDSF9FWENFUFRJT05TX0ZMQUcsCisgICAgICAgICBGSVRMRVJfT1VUX1NFSF9URVNUU19G
TEFHXSwKKyAgICAgICAgZW52PWVudmlyb24pLm91dHB1dAorCisgICAgc2VsZi5hc3NlcnRfKCdV
bmhhbmRsZWQgQysrIGV4Y2VwdGlvbiB0ZXJtaW5hdGluZyB0aGUgcHJvZ3JhbScKKyAgICAgICAg
ICAgICAgICAgaW4gdW5jYXVnaHRfZXhjZXB0aW9uc19leF9iaW5hcnlfb3V0cHV0KQorICAgIHNl
bGYuYXNzZXJ0XygndW5leHBlY3RlZCcgbm90IGluIHVuY2F1Z2h0X2V4Y2VwdGlvbnNfZXhfYmlu
YXJ5X291dHB1dCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0
X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
b29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0Xy5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wOWRhZTcwMDMwYTMzYWVhYmEwNjBhYWVmOTdhOTc5YThmNTgwNGFlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNhdGNoLWV4Y2Vw
dGlvbnMtdGVzdF8uY2MKQEAgLTAsMCArMSwzMTEgQEAKKy8vIENvcHlyaWdodCAyMDEwLCBHb29n
bGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8KKy8vIFRlc3RzIGZvciBHb29nbGUgVGVzdCBpdHNl
bGYuIFRlc3RzIGluIHRoaXMgZmlsZSB0aHJvdyBDKysgb3IgU0VICisvLyBleGNlcHRpb25zLCBh
bmQgdGhlIG91dHB1dCBpcyB2ZXJpZmllZCBieQorLy8gZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRp
b25zLXRlc3QucHkuCisKKyNpbmNsdWRlIDxzdGRpby5oPiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8
c3RkbGliLmg+ICAvLyBGb3IgZXhpdCgpLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKwor
I2lmIEdURVNUX0hBU19TRUgKKyMgaW5jbHVkZSA8d2luZG93cy5oPgorI2VuZGlmCisKKyNpZiBH
VEVTVF9IQVNfRVhDRVBUSU9OUworIyBpbmNsdWRlIDxleGNlcHRpb24+ICAvLyBGb3Igc2V0X3Rl
cm1pbmF0ZSgpLgorIyBpbmNsdWRlIDxzdGRleGNlcHQ+CisjZW5kaWYKKwordXNpbmcgdGVzdGlu
Zzo6VGVzdDsKKworI2lmIEdURVNUX0hBU19TRUgKKworY2xhc3MgU2VoRXhjZXB0aW9uSW5Db25z
dHJ1Y3RvclRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBTZWhFeGNlcHRpb25JbkNv
bnN0cnVjdG9yVGVzdCgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9Owor
CitURVNUX0YoU2VoRXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QsIFRocm93c0V4Y2VwdGlvbklu
Q29uc3RydWN0b3IpIHt9CisKK2NsYXNzIFNlaEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3QgOiBw
dWJsaWMgVGVzdCB7CisgcHVibGljOgorICB+U2VoRXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCgp
IHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhj
ZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5EZXN0cnVjdG9yKSB7fQor
CitjbGFzcyBTZWhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0IDogcHVibGljIFRlc3Qgewor
IHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsgUmFpc2VFeGNlcHRpb24o
NDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhjZXB0aW9uSW5TZXRVcFRlc3RD
YXNlVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlKSB7fQorCitjbGFzcyBTZWhF
eGNlcHRpb25JblRlYXJEb3duVGVzdENhc2VUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoK
KyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAs
IDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNl
VGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNlKSB7fQorCitjbGFzcyBTZWhF
eGNlcHRpb25JblNldFVwVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9Owor
CitURVNUX0YoU2VoRXhjZXB0aW9uSW5TZXRVcFRlc3QsIFRocm93c0V4Y2VwdGlvbkluU2V0VXAp
IHt9CisKK2NsYXNzIFNlaEV4Y2VwdGlvbkluVGVhckRvd25UZXN0IDogcHVibGljIFRlc3Qgewor
IHByb3RlY3RlZDoKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeyBSYWlzZUV4Y2VwdGlvbig0
MiwgMCwgMCwgTlVMTCk7IH0KK307CisKK1RFU1RfRihTZWhFeGNlcHRpb25JblRlYXJEb3duVGVz
dCwgVGhyb3dzRXhjZXB0aW9uSW5UZWFyRG93bikge30KKworVEVTVChTZWhFeGNlcHRpb25UZXN0
LCBUaHJvd3NTZWhFeGNlcHRpb24pIHsKKyAgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwp
OworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKKworI2lmIEdURVNUX0hBU19FWENFUFRJ
T05TCisKK2NsYXNzIEN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0IDogcHVibGljIFRlc3Qg
eworIHB1YmxpYzoKKyAgQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QoKSB7CisgICAgLy8g
V2l0aG91dCB0aGlzIG1hY3JvIFZDKysgY29tcGxhaW5zIGFib3V0IHVucmVhY2hhYmxlIGNvZGUg
YXQgdGhlIGVuZCBvZgorICAgIC8vIHRoZSBjb25zdHJ1Y3Rvci4KKyAgICBHVEVTVF9TVVBQUkVT
U19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKAorICAgICAgICB0aHJvdyBzdGQ6OnJ1
bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iKSk7CisgIH0KKworICBzdGF0aWMg
dm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAi
Q3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCisgICAg
ICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICB+
Q3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QoKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAi
Q3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QgZGVzdHJ1Y3RvciAiCisgICAgICAgICAgICAg
ICAgICA8PCAiY2FsbGVkIHVuZXhwZWN0ZWRseS4iOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNl
dFVwKCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JU
ZXN0OjpTZXRVcCgpICIKKyAgICAgICAgICAgICAgICAgIDw8ICJjYWxsZWQgdW5leHBlY3RlZGx5
LiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgQUREX0ZBSUxVUkUo
KSA8PCAiQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Q6OlRlYXJEb3duKCkgIgorICAgICAg
ICAgICAgICAgICAgPDwgImNhbGxlZCB1bmV4cGVjdGVkbHkuIjsKKyAgfQorfTsKKworVEVTVF9G
KEN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0LCBUaHJvd3NFeGNlcHRpb25JbkNvbnN0cnVj
dG9yKSB7CisgIEFERF9GQUlMVVJFKCkgPDwgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0
IHRlc3QgYm9keSAiCisgICAgICAgICAgICAgICAgPDwgImNhbGxlZCB1bmV4cGVjdGVkbHkuIjsK
K30KKworLy8gRXhjZXB0aW9ucyBpbiBkZXN0cnVjdG9ycyBhcmUgbm90IHN1cHBvcnRlZCBpbiBD
KysxMS4KKyNpZiAhR1RFU1RfTEFOR19DWFgxMQorY2xhc3MgQ3h4RXhjZXB0aW9uSW5EZXN0cnVj
dG9yVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFRlYXJEb3du
VGVzdENhc2UoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25J
bkRlc3RydWN0b3JUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgIgorICAgICAgICAgICAiY2FsbGVk
IGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworIHByb3RlY3RlZDoKKyAgfkN4eEV4Y2VwdGlvbklu
RGVzdHJ1Y3RvclRlc3QoKSB7CisgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9X
QVJOSU5HX0JFTE9XXygKKyAgICAgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFy
ZCBDKysgZXhjZXB0aW9uIikpOworICB9Cit9OworCitURVNUX0YoQ3h4RXhjZXB0aW9uSW5EZXN0
cnVjdG9yVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5EZXN0cnVjdG9yKSB7fQorI2VuZGlmICAvLyBD
KysxMSBtb2RlCisKK2NsYXNzIEN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgOiBwdWJs
aWMgVGVzdCB7CisgcHVibGljOgorICBDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0KCkg
eworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RD
YXNlVGVzdCBjb25zdHJ1Y3RvciAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4i
KTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7CisgICAgdGhyb3cgc3Rk
OjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIik7CisgIH0KKworICBzdGF0
aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAg
ICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIK
KyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyBwcm90ZWN0ZWQ6
CisgIH5DeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0KCkgeworICAgIHByaW50ZigiJXMi
LAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCBkZXN0cnVjdG9y
ICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyAgdmlydHVh
bCB2b2lkIFNldFVwKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0
aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6U2V0VXAoKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMg
ZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBw
cmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3Q6
OlRlYXJEb3duKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0K
K307CisKK1RFU1RfRihDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0LCBUaHJvd3NFeGNl
cHRpb25JblNldFVwVGVzdENhc2UpIHsKKyAgcHJpbnRmKCIlcyIsCisgICAgICAgICAiQ3h4RXhj
ZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCB0ZXN0IGJvZHkgIgorICAgICAgICAgImNhbGxlZCBh
cyBleHBlY3RlZC5cbiIpOworfQorCitjbGFzcyBDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdENh
c2VUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgVGVhckRvd25U
ZXN0Q2FzZSgpIHsKKyAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBl
eGNlcHRpb24iKTsKKyAgfQorfTsKKworVEVTVF9GKEN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0
Q2FzZVRlc3QsIFRocm93c0V4Y2VwdGlvbkluVGVhckRvd25UZXN0Q2FzZSkge30KKworY2xhc3Mg
Q3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBzdGF0
aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAg
ICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCisgICAgICAg
ICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICB+Q3h4
RXhjZXB0aW9uSW5TZXRVcFRlc3QoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJD
eHhFeGNlcHRpb25JblNldFVwVGVzdCBkZXN0cnVjdG9yICIKKyAgICAgICAgICAgImNhbGxlZCBh
cyBleHBlY3RlZC5cbiIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeyB0aHJvdyBz
dGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iKTsgfQorCisgIHZpcnR1
YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4
Y2VwdGlvbkluU2V0VXBUZXN0OjpUZWFyRG93bigpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBl
eHBlY3RlZC5cbiIpOworICB9Cit9OworCitURVNUX0YoQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Qs
IFRocm93c0V4Y2VwdGlvbkluU2V0VXApIHsKKyAgQUREX0ZBSUxVUkUoKSA8PCAiQ3h4RXhjZXB0
aW9uSW5TZXRVcFRlc3QgdGVzdCBib2R5ICIKKyAgICAgICAgICAgICAgICA8PCAiY2FsbGVkIHVu
ZXhwZWN0ZWRseS4iOworfQorCitjbGFzcyBDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCA6IHB1
YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7
CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblRlYXJEb3duVGVz
dDo6VGVhckRvd25UZXN0Q2FzZSgpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5c
biIpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIH5DeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCgp
IHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluVGVhckRvd25U
ZXN0IGRlc3RydWN0b3IgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7Cisg
IH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgdGhyb3cgc3RkOjpydW50aW1l
X2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIik7CisgIH0KK307CisKK1RFU1RfRihDeHhF
eGNlcHRpb25JblRlYXJEb3duVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5UZWFyRG93bikge30KKwor
Y2xhc3MgQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGlj
OgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHByaW50ZigiJXMiLAor
ICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duVGVzdENhc2Uo
KSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVj
dGVkOgorICB+Q3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QoKSB7CisgICAgcHJpbnRmKCIlcyIs
CisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdCBkZXN0cnVjdG9yICIKKyAg
ICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyAgdmlydHVhbCB2b2lk
IFRlYXJEb3duKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9u
SW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVj
dGVkLlxuIik7CisgIH0KK307CisKK1RFU1RfRihDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdCwg
VGhyb3dzU3RkQ3h4RXhjZXB0aW9uKSB7CisgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcigiU3Rh
bmRhcmQgQysrIGV4Y2VwdGlvbiIpOworfQorCitURVNUKEN4eEV4Y2VwdGlvblRlc3QsIFRocm93
c05vblN0ZEN4eEV4Y2VwdGlvbikgeworICB0aHJvdyAiQy1zdHJpbmciOworfQorCisvLyBUaGlz
IHRlcm1pbmF0ZSBoYW5kbGVyIGFib3J0cyB0aGUgcHJvZ3JhbSB1c2luZyBleGl0KCkgcmF0aGVy
IHRoYW4gYWJvcnQoKS4KKy8vIFRoaXMgYXZvaWRzIHNob3dpbmcgcG9wLXVwcyBvbiBXaW5kb3dz
IHN5c3RlbXMgYW5kIGNvcmUgZHVtcHMgb24gVW5peC1saWtlCisvLyBvbmVzLgordm9pZCBUZXJt
aW5hdGVIYW5kbGVyKCkgeworICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCAiVW5oYW5kbGVkIEMr
KyBleGNlcHRpb24gdGVybWluYXRpbmcgdGhlIHByb2dyYW0uIik7CisgIGZmbHVzaChOVUxMKTsK
KyAgZXhpdCgzKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUworCitpbnQg
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwor
ICBzdGQ6OnNldF90ZXJtaW5hdGUoJlRlcm1pbmF0ZUhhbmRsZXIpOworI2VuZGlmCisgIHRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMo
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVz
dC1jb2xvci10ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0
LWNvbG9yLXRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjNiN2M5OTkwYmNmNDRhNjUwMzZjMjUzZTdhMDE4
NDVhZjljMzcxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ29vZ2xldGVzdC1jb2xvci10ZXN0LnB5CkBAIC0wLDAgKzEsMTI3IEBACisjIS91c3IvYmlu
L2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMK
KyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
IyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJWZXJpZmllcyB0aGF0IEdvb2ds
ZSBUZXN0IGNvcnJlY3RseSBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlIGNvbG9ycy4iIiIKKwor
aW1wb3J0IG9zCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitJU19XSU5ET1dTID0gb3MubmFt
ZSA9PSAnbnQnCisKK0NPTE9SX0VOVl9WQVIgPSAnR1RFU1RfQ09MT1InCitDT0xPUl9GTEFHID0g
J2d0ZXN0X2NvbG9yJworQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFi
bGVQYXRoKCdnb29nbGV0ZXN0LWNvbG9yLXRlc3RfJykKKworCitkZWYgU2V0RW52VmFyKGVudl92
YXIsIHZhbHVlKToKKyAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxlIHRvICd2YWx1ZSc7IHVuc2V0
cyBpdCB3aGVuICd2YWx1ZScgaXMgTm9uZS4iIiIKKworICBpZiB2YWx1ZSBpcyBub3QgTm9uZToK
KyAgICBvcy5lbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKKyAgZWxpZiBlbnZfdmFyIGluIG9zLmVu
dmlyb246CisgICAgZGVsIG9zLmVudmlyb25bZW52X3Zhcl0KKworCitkZWYgVXNlc0NvbG9yKHRl
cm0sIGNvbG9yX2Vudl92YXIsIGNvbG9yX2ZsYWcpOgorICAiIiJSdW5zIGdvb2dsZXRlc3QtY29s
b3ItdGVzdF8gYW5kIHJldHVybnMgaXRzIGV4aXQgY29kZS4iIiIKKworICBTZXRFbnZWYXIoJ1RF
Uk0nLCB0ZXJtKQorICBTZXRFbnZWYXIoQ09MT1JfRU5WX1ZBUiwgY29sb3JfZW52X3ZhcikKKwor
ICBpZiBjb2xvcl9mbGFnIGlzIE5vbmU6CisgICAgYXJncyA9IFtdCisgIGVsc2U6CisgICAgYXJn
cyA9IFsnLS0lcz0lcycgJSAoQ09MT1JfRkxBRywgY29sb3JfZmxhZyldCisgIHAgPSBndGVzdF90
ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0NPTU1BTkRdICsgYXJncykKKyAgcmV0dXJuIG5vdCBwLmV4
aXRlZCBvciBwLmV4aXRfY29kZQorCisKK2NsYXNzIEdUZXN0Q29sb3JUZXN0KGd0ZXN0X3Rlc3Rf
dXRpbHMuVGVzdENhc2UpOgorICBkZWYgdGVzdE5vRW52VmFyTm9GbGFnKHNlbGYpOgorICAgICIi
IlRlc3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUncyBuZWl0aGVyIEdURVNUX0NPTE9SIG5vciAtLWd0
ZXN0X2NvbG9yLiIiIgorCisgICAgaWYgbm90IElTX1dJTkRPV1M6CisgICAgICBzZWxmLmFzc2Vy
dF8obm90IFVzZXNDb2xvcignZHVtYicsIE5vbmUsIE5vbmUpKQorICAgICAgc2VsZi5hc3NlcnRf
KG5vdCBVc2VzQ29sb3IoJ2VtYWNzJywgTm9uZSwgTm9uZSkpCisgICAgICBzZWxmLmFzc2VydF8o
bm90IFVzZXNDb2xvcigneHRlcm0tbW9ubycsIE5vbmUsIE5vbmUpKQorICAgICAgc2VsZi5hc3Nl
cnRfKG5vdCBVc2VzQ29sb3IoJ3Vua25vd24nLCBOb25lLCBOb25lKSkKKyAgICAgIHNlbGYuYXNz
ZXJ0Xyhub3QgVXNlc0NvbG9yKE5vbmUsIE5vbmUsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhV
c2VzQ29sb3IoJ2xpbnV4JywgTm9uZSwgTm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xv
cignY3lnd2luJywgTm9uZSwgTm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRl
cm0nLCBOb25lLCBOb25lKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS1jb2xv
cicsIE5vbmUsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLTI1NmNv
bG9yJywgTm9uZSwgTm9uZSkpCisKKyAgZGVmIHRlc3RGbGFnT25seShzZWxmKToKKyAgICAiIiJU
ZXN0cyB0aGUgY2FzZSB3aGVuIHRoZXJlJ3MgLS1ndGVzdF9jb2xvciBidXQgbm90IEdURVNUX0NP
TE9SLiIiIgorCisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAn
bm8nKSkKKyAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0tY29sb3InLCBOb25l
LCAnbm8nKSkKKyAgICBpZiBub3QgSVNfV0lORE9XUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qg
VXNlc0NvbG9yKCdlbWFjcycsIE5vbmUsICdhdXRvJykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXND
b2xvcigneHRlcm0nLCBOb25lLCAnYXV0bycpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3Io
J2R1bWInLCBOb25lLCAneWVzJykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0n
LCBOb25lLCAneWVzJykpCisKKyAgZGVmIHRlc3RFbnZWYXJPbmx5KHNlbGYpOgorICAgICIiIlRl
c3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUncyBHVEVTVF9DT0xPUiBidXQgbm90IC0tZ3Rlc3RfY29s
b3IuIiIiCisKKyAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcignZHVtYicsICdubycsIE5v
bmUpKQorICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsICdubycs
IE5vbmUpKQorICAgIGlmIG5vdCBJU19XSU5ET1dTOgorICAgICAgc2VsZi5hc3NlcnRfKG5vdCBV
c2VzQ29sb3IoJ2R1bWInLCAnYXV0bycsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29s
b3IoJ3h0ZXJtLWNvbG9yJywgJ2F1dG8nLCBOb25lKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0Nv
bG9yKCdkdW1iJywgJ3llcycsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0
ZXJtLWNvbG9yJywgJ3llcycsIE5vbmUpKQorCisgIGRlZiB0ZXN0RW52VmFyQW5kRmxhZyhzZWxm
KToKKyAgICAiIiJUZXN0cyB0aGUgY2FzZSB3aGVuIHRoZXJlIGFyZSBib3RoIEdURVNUX0NPTE9S
IGFuZCAtLWd0ZXN0X2NvbG9yLiIiIgorCisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3Io
J3h0ZXJtLWNvbG9yJywgJ25vJywgJ25vJykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcign
ZHVtYicsICdubycsICd5ZXMnKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS1j
b2xvcicsICdubycsICdhdXRvJykpCisKKyAgZGVmIHRlc3RBbGlhc2VzT2ZZZXNBbmRObyhzZWxm
KToKKyAgICAiIiJUZXN0cyB1c2luZyBhbGlhc2VzIGluIHNwZWNpZnlpbmcgLS1ndGVzdF9jb2xv
ci4iIiIKKworICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAndHJ1ZScp
KQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAnWUVTJykpCisgICAg
c2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUsICdUJykpCisgICAgc2VsZi5hc3Nl
cnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUsICcxJykpCisKKyAgICBzZWxmLmFzc2VydF8obm90
IFVzZXNDb2xvcigneHRlcm0nLCBOb25lLCAnZicpKQorICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNl
c0NvbG9yKCd4dGVybScsIE5vbmUsICdmYWxzZScpKQorICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNl
c0NvbG9yKCd4dGVybScsIE5vbmUsICcwJykpCisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29s
b3IoJ3h0ZXJtJywgTm9uZSwgJ3Vua25vd24nKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNvbG9yLXRlc3RfLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNvbG9yLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIy
MGEzYTAwNTQ4ZmRiMWU5MzVhM2RhMTZkZjU2M2E1MGUxNzlhOGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY29sb3ItdGVzdF8uY2MK
QEAgLTAsMCArMSw2MiBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8g
bWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisKKy8vIEEgaGVscGVyIHByb2dyYW0gZm9yIHRlc3RpbmcgaG93IEdvb2dsZSBUZXN0
IGRldGVybWluZXMgd2hldGhlciB0byB1c2UKKy8vIGNvbG9ycyBpbiB0aGUgb3V0cHV0LiAgSXQg
cHJpbnRzICJZRVMiIGFuZCByZXR1cm5zIDEgaWYgR29vZ2xlIFRlc3QKKy8vIGRlY2lkZXMgdG8g
dXNlIGNvbG9ycywgYW5kIHByaW50cyAiTk8iIGFuZCByZXR1cm5zIDAgb3RoZXJ3aXNlLgorCisj
aW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAi
c3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgorCit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hv
dWxkVXNlQ29sb3I7CisKKy8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gZW5zdXJlIHRoYXQg
dGhlIFVuaXRUZXN0IHNpbmdsZXRvbiBpcworLy8gY3JlYXRlZCBiZWZvcmUgbWFpbigpIGlzIGVu
dGVyZWQsIGFuZCB0aHVzIHRoYXQgU2hvdWxkVXNlQ29sb3IoKQorLy8gd29ya3MgdGhlIHNhbWUg
d2F5IGFzIGluIGEgcmVhbCBHb29nbGUtVGVzdC1iYXNlZCB0ZXN0LiAgV2UgZG9uJ3QgYWN0dWFs
CisvLyBydW4gdGhlIFRFU1QgaXRzZWxmLgorVEVTVChHVGVzdENvbG9yVGVzdCwgRHVtbXkpIHsK
K30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIHRlc3Rpbmc6OkluaXRH
b29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICBpZiAoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpIHsK
KyAgICAvLyBHb29nbGUgVGVzdCBkZWNpZGVzIHRvIHVzZSBjb2xvcnMgaW4gdGhlIG91dHB1dCAo
YXNzdW1pbmcgaXQKKyAgICAvLyBnb2VzIHRvIGEgVFRZKS4KKyAgICBwcmludGYoIllFU1xuIik7
CisgICAgcmV0dXJuIDE7CisgIH0gZWxzZSB7CisgICAgLy8gR29vZ2xlIFRlc3QgZGVjaWRlcyBu
b3QgdG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0LgorICAgIHByaW50ZigiTk9cbiIpOworICAg
IHJldHVybiAwOworICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3QtZGVhdGgtdGVzdC10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LWRlYXRoLXRlc3QtdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGMzMDI2
ZmI1ODk1NjYwYWQyYzlkNjVmYmQ5OWI1ZmFmOWFkNDhjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWRlYXRoLXRlc3QtdGVzdC5jYwpA
QCAtMCwwICsxLDE0MjMgQEAKKy8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgorLy8gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8v
IG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisv
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworLy8KKy8vIFRlc3RzIGZvciBkZWF0aCB0ZXN0cy4KKworI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LWRlYXRoLXRlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUg
Imd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgiCisKK3VzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpBbHdheXNGYWxzZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlOwor
CisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisjICBp
bmNsdWRlIDxkaXJlY3QuaD4gICAgICAgICAgLy8gRm9yIGNoZGlyKCkuCisjIGVsc2UKKyMgIGlu
Y2x1ZGUgPHVuaXN0ZC5oPgorIyAgaW5jbHVkZSA8c3lzL3dhaXQuaD4gICAgICAgIC8vIEZvciB3
YWl0cGlkLgorIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjIGluY2x1ZGUgPGxpbWl0
cy5oPgorIyBpbmNsdWRlIDxzaWduYWwuaD4KKyMgaW5jbHVkZSA8c3RkaW8uaD4KKworIyBpZiBH
VEVTVF9PU19MSU5VWAorIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMgZW5kaWYgIC8vIEdURVNU
X09TX0xJTlVYCisKKyMgaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCisjIGluY2x1ZGUgInNy
Yy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKworbmFtZXNwYWNlIHBvc2l4ID0gOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6cG9zaXg7CisKK3VzaW5nIHRlc3Rpbmc6Ok1lc3NhZ2U7Cit1c2luZyB0ZXN0aW5n
OjppbnRlcm5hbDo6RGVhdGhUZXN0OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVz
dEZhY3Rvcnk7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RmlsZVBhdGg7Cit1c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6R2V0TGFzdEVycm5vRGVzY3JpcHRpb247Cit1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkluRGVh
dGhUZXN0Q2hpbGQ7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UGFyc2VOYXR1cmFsTnVtYmVy
OworCituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBBIGhl
bHBlciBjbGFzcyB3aG9zZSBvYmplY3RzIHJlcGxhY2UgdGhlIGRlYXRoIHRlc3QgZmFjdG9yeSBm
b3IgYQorLy8gc2luZ2xlIFVuaXRUZXN0IG9iamVjdCBkdXJpbmcgdGhlaXIgbGlmZXRpbWVzLgor
Y2xhc3MgUmVwbGFjZURlYXRoVGVzdEZhY3RvcnkgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgUmVw
bGFjZURlYXRoVGVzdEZhY3RvcnkoRGVhdGhUZXN0RmFjdG9yeSogbmV3X2ZhY3RvcnkpCisgICAg
ICA6IHVuaXRfdGVzdF9pbXBsXyhHZXRVbml0VGVzdEltcGwoKSkgeworICAgIG9sZF9mYWN0b3J5
XyA9IHVuaXRfdGVzdF9pbXBsXy0+ZGVhdGhfdGVzdF9mYWN0b3J5Xy5yZWxlYXNlKCk7CisgICAg
dW5pdF90ZXN0X2ltcGxfLT5kZWF0aF90ZXN0X2ZhY3RvcnlfLnJlc2V0KG5ld19mYWN0b3J5KTsK
KyAgfQorCisgIH5SZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSgpIHsKKyAgICB1bml0X3Rlc3RfaW1w
bF8tPmRlYXRoX3Rlc3RfZmFjdG9yeV8ucmVsZWFzZSgpOworICAgIHVuaXRfdGVzdF9pbXBsXy0+
ZGVhdGhfdGVzdF9mYWN0b3J5Xy5yZXNldChvbGRfZmFjdG9yeV8pOworICB9CisgcHJpdmF0ZToK
KyAgLy8gUHJldmVudHMgY29weWluZyBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSBvYmplY3RzLgor
ICBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeShjb25zdCBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSYp
OworICB2b2lkIG9wZXJhdG9yPShjb25zdCBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSYpOworCisg
IFVuaXRUZXN0SW1wbCogdW5pdF90ZXN0X2ltcGxfOworICBEZWF0aFRlc3RGYWN0b3J5KiBvbGRf
ZmFjdG9yeV87Cit9OworCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCisKK3ZvaWQgRGllV2l0aE1lc3NhZ2UoY29uc3QgOjpzdGQ6OnN0cmluZyYgbWVz
c2FnZSkgeworICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgbWVzc2FnZS5jX3N0cigpKTsKKyAgZmZs
dXNoKHN0ZGVycik7ICAvLyBNYWtlIHN1cmUgdGhlIHRleHQgaXMgcHJpbnRlZCBiZWZvcmUgdGhl
IHByb2Nlc3MgZXhpdHMuCisKKyAgLy8gV2UgY2FsbCBfZXhpdCgpIGluc3RlYWQgb2YgZXhpdCgp
LCBhcyB0aGUgZm9ybWVyIGlzIGEgZGlyZWN0CisgIC8vIHN5c3RlbSBjYWxsIGFuZCB0aHVzIHNh
ZmVyIGluIHRoZSBwcmVzZW5jZSBvZiB0aHJlYWRzLiAgZXhpdCgpCisgIC8vIHdpbGwgaW52b2tl
IHVzZXItZGVmaW5lZCBleGl0LWhvb2tzLCB3aGljaCBtYXkgZG8gZGFuZ2Vyb3VzCisgIC8vIHRo
aW5ncyB0aGF0IGNvbmZsaWN0IHdpdGggZGVhdGggdGVzdHMuCisgIC8vCisgIC8vIFNvbWUgY29t
cGlsZXJzIGNhbiByZWNvZ25pemUgdGhhdCBfZXhpdCgpIG5ldmVyIHJldHVybnMgYW5kIGlzc3Vl
IHRoZQorICAvLyAndW5yZWFjaGFibGUgY29kZScgd2FybmluZyBmb3IgY29kZSBmb2xsb3dpbmcg
dGhpcyBmdW5jdGlvbiwgdW5sZXNzCisgIC8vIGZvb2xlZCBieSBhIGZha2UgY29uZGl0aW9uLgor
ICBpZiAoQWx3YXlzVHJ1ZSgpKQorICAgIF9leGl0KDEpOworfQorCit2b2lkIERpZUluc2lkZShj
b25zdCA6OnN0ZDo6c3RyaW5nJiBmdW5jdGlvbikgeworICBEaWVXaXRoTWVzc2FnZSgiZGVhdGgg
aW5zaWRlICIgKyBmdW5jdGlvbiArICIoKS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBkZWF0aCB0
ZXN0cyB3b3JrLgorCitjbGFzcyBUZXN0Rm9yRGVhdGhUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgeworIHByb3RlY3RlZDoKKyAgVGVzdEZvckRlYXRoVGVzdCgpIDogb3JpZ2luYWxfZGlyXyhG
aWxlUGF0aDo6R2V0Q3VycmVudERpcigpKSB7fQorCisgIHZpcnR1YWwgflRlc3RGb3JEZWF0aFRl
c3QoKSB7CisgICAgcG9zaXg6OkNoRGlyKG9yaWdpbmFsX2Rpcl8uY19zdHIoKSk7CisgIH0KKwor
ICAvLyBBIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24gdGhhdCdzIGV4cGVjdGVkIHRvIGRpZS4KKyAg
c3RhdGljIHZvaWQgU3RhdGljTWVtYmVyRnVuY3Rpb24oKSB7IERpZUluc2lkZSgiU3RhdGljTWVt
YmVyRnVuY3Rpb24iKTsgfQorCisgIC8vIEEgbWV0aG9kIG9mIHRoZSB0ZXN0IGZpeHR1cmUgdGhh
dCBtYXkgZGllLgorICB2b2lkIE1lbWJlckZ1bmN0aW9uKCkgeworICAgIGlmIChzaG91bGRfZGll
XykKKyAgICAgIERpZUluc2lkZSgiTWVtYmVyRnVuY3Rpb24iKTsKKyAgfQorCisgIC8vIFRydWUg
aWZmIE1lbWJlckZ1bmN0aW9uKCkgc2hvdWxkIGRpZS4KKyAgYm9vbCBzaG91bGRfZGllXzsKKyAg
Y29uc3QgRmlsZVBhdGggb3JpZ2luYWxfZGlyXzsKK307CisKKy8vIEEgY2xhc3Mgd2l0aCBhIG1l
bWJlciBmdW5jdGlvbiB0aGF0IG1heSBkaWUuCitjbGFzcyBNYXlEaWUgeworIHB1YmxpYzoKKyAg
ZXhwbGljaXQgTWF5RGllKGJvb2wgc2hvdWxkX2RpZSkgOiBzaG91bGRfZGllXyhzaG91bGRfZGll
KSB7fQorCisgIC8vIEEgbWVtYmVyIGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KKyAgdm9pZCBNZW1i
ZXJGdW5jdGlvbigpIGNvbnN0IHsKKyAgICBpZiAoc2hvdWxkX2RpZV8pCisgICAgICBEaWVJbnNp
ZGUoIk1heURpZTo6TWVtYmVyRnVuY3Rpb24iKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gVHJ1
ZSBpZmYgTWVtYmVyRnVuY3Rpb24oKSBzaG91bGQgZGllLgorICBib29sIHNob3VsZF9kaWVfOwor
fTsKKworLy8gQSBnbG9iYWwgZnVuY3Rpb24gdGhhdCdzIGV4cGVjdGVkIHRvIGRpZS4KK3ZvaWQg
R2xvYmFsRnVuY3Rpb24oKSB7IERpZUluc2lkZSgiR2xvYmFsRnVuY3Rpb24iKTsgfQorCisvLyBB
IG5vbi12b2lkIGZ1bmN0aW9uIHRoYXQncyBleHBlY3RlZCB0byBkaWUuCitpbnQgTm9uVm9pZEZ1
bmN0aW9uKCkgeworICBEaWVJbnNpZGUoIk5vblZvaWRGdW5jdGlvbiIpOworICByZXR1cm4gMTsK
K30KKworLy8gQSB1bmFyeSBmdW5jdGlvbiB0aGF0IG1heSBkaWUuCit2b2lkIERpZUlmKGJvb2wg
c2hvdWxkX2RpZSkgeworICBpZiAoc2hvdWxkX2RpZSkKKyAgICBEaWVJbnNpZGUoIkRpZUlmIik7
Cit9CisKKy8vIEEgYmluYXJ5IGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KK2Jvb2wgRGllSWZMZXNz
VGhhbihpbnQgeCwgaW50IHkpIHsKKyAgaWYgKHggPCB5KSB7CisgICAgRGllSW5zaWRlKCJEaWVJ
Zkxlc3NUaGFuIik7CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisKKy8vIFRlc3RzIHRoYXQgQVNT
RVJUX0RFQVRIIGNhbiBiZSB1c2VkIG91dHNpZGUgYSBURVNULCBURVNUX0YsIG9yIHRlc3QgZml4
dHVyZS4KK3ZvaWQgRGVhdGhUZXN0U3Vicm91dGluZSgpIHsKKyAgRVhQRUNUX0RFQVRIKEdsb2Jh
bEZ1bmN0aW9uKCksICJkZWF0aC4qR2xvYmFsRnVuY3Rpb24iKTsKKyAgQVNTRVJUX0RFQVRIKEds
b2JhbEZ1bmN0aW9uKCksICJkZWF0aC4qR2xvYmFsRnVuY3Rpb24iKTsKK30KKworLy8gRGVhdGgg
aW4gZGJnLCBub3Qgb3B0LgoraW50IERpZUluRGVidWdFbHNlMTIoaW50KiBzaWRlZWZmZWN0KSB7
CisgIGlmIChzaWRlZWZmZWN0KSAqc2lkZWVmZmVjdCA9IDEyOworCisjIGlmbmRlZiBOREVCVUcK
KworICBEaWVJbnNpZGUoIkRpZUluRGVidWdFbHNlMTIiKTsKKworIyBlbmRpZiAgLy8gTkRFQlVH
CisKKyAgcmV0dXJuIDEyOworfQorCisjIGlmIEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1Nf
RlVDSFNJQQorCisvLyBUZXN0cyB0aGUgRXhpdGVkV2l0aENvZGUgcHJlZGljYXRlLgorVEVTVChF
eGl0U3RhdHVzUHJlZGljYXRlVGVzdCwgRXhpdGVkV2l0aENvZGUpIHsKKyAgLy8gT24gV2luZG93
cywgdGhlIHByb2Nlc3MncyBleGl0IGNvZGUgaXMgdGhlIHNhbWUgYXMgaXRzIGV4aXQgc3RhdHVz
LAorICAvLyBzbyB0aGUgcHJlZGljYXRlIGp1c3QgY29tcGFyZXMgdGhlIGl0cyBpbnB1dCB3aXRo
IGl0cyBwYXJhbWV0ZXIuCisgIEVYUEVDVF9UUlVFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDAp
KDApKTsKKyAgRVhQRUNUX1RSVUUodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSkoMSkpOworICBF
WFBFQ1RfVFJVRSh0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSg0MikoNDIpKTsKKyAgRVhQRUNUX0ZB
TFNFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApKDEpKTsKKyAgRVhQRUNUX0ZBTFNFKHRlc3Rp
bmc6OkV4aXRlZFdpdGhDb2RlKDEpKDApKTsKK30KKworIyBlbHNlCisKKy8vIFJldHVybnMgdGhl
IGV4aXQgc3RhdHVzIG9mIGEgcHJvY2VzcyB0aGF0IGNhbGxzIF9leGl0KDIpIHdpdGggYQorLy8g
Z2l2ZW4gZXhpdCBjb2RlLiAgVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgdGhlCisvLyBF
eGl0U3RhdHVzUHJlZGljYXRlVGVzdCB0ZXN0IHN1aXRlLgorc3RhdGljIGludCBOb3JtYWxFeGl0
U3RhdHVzKGludCBleGl0X2NvZGUpIHsKKyAgcGlkX3QgY2hpbGRfcGlkID0gZm9yaygpOworICBp
ZiAoY2hpbGRfcGlkID09IDApIHsKKyAgICBfZXhpdChleGl0X2NvZGUpOworICB9CisgIGludCBz
dGF0dXM7CisgIHdhaXRwaWQoY2hpbGRfcGlkLCAmc3RhdHVzLCAwKTsKKyAgcmV0dXJuIHN0YXR1
czsKK30KKworLy8gUmV0dXJucyB0aGUgZXhpdCBzdGF0dXMgb2YgYSBwcm9jZXNzIHRoYXQgcmFp
c2VzIGEgZ2l2ZW4gc2lnbmFsLgorLy8gSWYgdGhlIHNpZ25hbCBkb2VzIG5vdCBjYXVzZSB0aGUg
cHJvY2VzcyB0byBkaWUsIHRoZW4gaXQgcmV0dXJucworLy8gaW5zdGVhZCB0aGUgZXhpdCBzdGF0
dXMgb2YgYSBwcm9jZXNzIHRoYXQgZXhpdHMgbm9ybWFsbHkgd2l0aCBleGl0CisvLyBjb2RlIDEu
ICBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGUgRXhpdFN0YXR1c1ByZWRpY2F0ZVRl
c3QKKy8vIHRlc3Qgc3VpdGUuCitzdGF0aWMgaW50IEtpbGxlZEV4aXRTdGF0dXMoaW50IHNpZ251
bSkgeworICBwaWRfdCBjaGlsZF9waWQgPSBmb3JrKCk7CisgIGlmIChjaGlsZF9waWQgPT0gMCkg
eworICAgIHJhaXNlKHNpZ251bSk7CisgICAgX2V4aXQoMSk7CisgIH0KKyAgaW50IHN0YXR1czsK
KyAgd2FpdHBpZChjaGlsZF9waWQsICZzdGF0dXMsIDApOworICByZXR1cm4gc3RhdHVzOworfQor
CisvLyBUZXN0cyB0aGUgRXhpdGVkV2l0aENvZGUgcHJlZGljYXRlLgorVEVTVChFeGl0U3RhdHVz
UHJlZGljYXRlVGVzdCwgRXhpdGVkV2l0aENvZGUpIHsKKyAgY29uc3QgaW50IHN0YXR1czAgID0g
Tm9ybWFsRXhpdFN0YXR1cygwKTsKKyAgY29uc3QgaW50IHN0YXR1czEgID0gTm9ybWFsRXhpdFN0
YXR1cygxKTsKKyAgY29uc3QgaW50IHN0YXR1czQyID0gTm9ybWFsRXhpdFN0YXR1cyg0Mik7Cisg
IGNvbnN0IHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlIHByZWQwKDApOworICBjb25zdCB0ZXN0aW5n
OjpFeGl0ZWRXaXRoQ29kZSBwcmVkMSgxKTsKKyAgY29uc3QgdGVzdGluZzo6RXhpdGVkV2l0aENv
ZGUgcHJlZDQyKDQyKTsKKyAgRVhQRUNUX1BSRUQxKHByZWQwLCAgc3RhdHVzMCk7CisgIEVYUEVD
VF9QUkVEMShwcmVkMSwgIHN0YXR1czEpOworICBFWFBFQ1RfUFJFRDEocHJlZDQyLCBzdGF0dXM0
Mik7CisgIEVYUEVDVF9GQUxTRShwcmVkMChzdGF0dXMxKSk7CisgIEVYUEVDVF9GQUxTRShwcmVk
NDIoc3RhdHVzMCkpOworICBFWFBFQ1RfRkFMU0UocHJlZDEoc3RhdHVzNDIpKTsKK30KKworLy8g
VGVzdHMgdGhlIEtpbGxlZEJ5U2lnbmFsIHByZWRpY2F0ZS4KK1RFU1QoRXhpdFN0YXR1c1ByZWRp
Y2F0ZVRlc3QsIEtpbGxlZEJ5U2lnbmFsKSB7CisgIGNvbnN0IGludCBzdGF0dXNfc2VndiA9IEtp
bGxlZEV4aXRTdGF0dXMoU0lHU0VHVik7CisgIGNvbnN0IGludCBzdGF0dXNfa2lsbCA9IEtpbGxl
ZEV4aXRTdGF0dXMoU0lHS0lMTCk7CisgIGNvbnN0IHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsIHBy
ZWRfc2VndihTSUdTRUdWKTsKKyAgY29uc3QgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwgcHJlZF9r
aWxsKFNJR0tJTEwpOworICBFWFBFQ1RfUFJFRDEocHJlZF9zZWd2LCBzdGF0dXNfc2Vndik7Cisg
IEVYUEVDVF9QUkVEMShwcmVkX2tpbGwsIHN0YXR1c19raWxsKTsKKyAgRVhQRUNUX0ZBTFNFKHBy
ZWRfc2VndihzdGF0dXNfa2lsbCkpOworICBFWFBFQ1RfRkFMU0UocHJlZF9raWxsKHN0YXR1c19z
ZWd2KSk7Cit9CisKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfRlVD
SFNJQQorCisvLyBUZXN0cyB0aGF0IHRoZSBkZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29k
ZSB3aGljaCBtYXkgb3IgbWF5IG5vdAorLy8gYmUgZm9sbG93ZWQgYnkgb3BlcmF0b3I8PCwgYW5k
IHRoYXQgaW4gZWl0aGVyIGNhc2UgdGhlIGNvbXBsZXRlIHRleHQKKy8vIGNvbXByaXNlcyBvbmx5
IGEgc2luZ2xlIEMrKyBzdGF0ZW1lbnQuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU2luZ2xl
U3RhdGVtZW50KSB7CisgIGlmIChBbHdheXNGYWxzZSgpKQorICAgIC8vIFRoaXMgd291bGQgZmFp
bCBpZiBleGVjdXRlZDsgdGhpcyBpcyBhIGNvbXBpbGF0aW9uIHRlc3Qgb25seQorICAgIEFTU0VS
VF9ERUFUSChyZXR1cm4sICIiKTsKKworICBpZiAoQWx3YXlzVHJ1ZSgpKQorICAgIEVYUEVDVF9E
RUFUSChfZXhpdCgxKSwgIiIpOworICBlbHNlCisgICAgLy8gVGhpcyBlbXB0eSAiZWxzZSIgYnJh
bmNoIGlzIG1lYW50IHRvIGVuc3VyZSB0aGF0IEVYUEVDVF9ERUFUSAorICAgIC8vIGRvZXNuJ3Qg
ZXhwYW5kIGludG8gYW4gImlmIiBzdGF0ZW1lbnQgd2l0aG91dCBhbiAiZWxzZSIKKyAgICA7CisK
KyAgaWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgQVNTRVJUX0RFQVRIKHJldHVybiwgIiIpIDw8ICJk
aWQgbm90IGRpZSI7CisKKyAgaWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgOworICBlbHNlCisgICAg
RVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgMSA8PCAyIDw8IDM7Cit9CisKK3ZvaWQgRGll
V2l0aEVtYmVkZGVkTnVsKCkgeworICBmcHJpbnRmKHN0ZGVyciwgIkhlbGxvJWNteSBudWxsIHdv
cmxkLlxuIiwgJ1wwJyk7CisgIGZmbHVzaChzdGRlcnIpOworICBfZXhpdCgxKTsKK30KKworIyBp
ZiBHVEVTVF9VU0VTX1BDUkUKKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEggYW5kIEFTU0VS
VF9ERUFUSCB3b3JrIHdoZW4gdGhlIGVycm9yCisvLyBtZXNzYWdlIGhhcyBhIE5VTCBjaGFyYWN0
ZXIgaW4gaXQuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRW1iZWRkZWROdWxJbk1lc3NhZ2Up
IHsKKyAgRVhQRUNUX0RFQVRIKERpZVdpdGhFbWJlZGRlZE51bCgpLCAibXkgbnVsbCB3b3JsZCIp
OworICBBU1NFUlRfREVBVEgoRGllV2l0aEVtYmVkZGVkTnVsKCksICJteSBudWxsIHdvcmxkIik7
Cit9CisKKyMgZW5kaWYgIC8vIEdURVNUX1VTRVNfUENSRQorCisvLyBUZXN0cyB0aGF0IGRlYXRo
IHRlc3QgbWFjcm9zIGV4cGFuZCB0byBjb2RlIHdoaWNoIGludGVyYWN0cyB3ZWxsIHdpdGggc3dp
dGNoCisvLyBzdGF0ZW1lbnRzLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFN3aXRjaFN0YXRl
bWVudCkgeworICAvLyBNaWNyb3NvZnQgY29tcGlsZXIgdXN1YWxseSBjb21wbGFpbnMgYWJvdXQg
c3dpdGNoIHN0YXRlbWVudHMgd2l0aG91dAorICAvLyBjYXNlIGxhYmVscy4gV2Ugc3VwcHJlc3Mg
dGhhdCB3YXJuaW5nIGZvciB0aGlzIHRlc3QuCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdT
X1BVU0hfKDQwNjUpCisKKyAgc3dpdGNoICgwKQorICAgIGRlZmF1bHQ6CisgICAgICBBU1NFUlRf
REVBVEgoX2V4aXQoMSksICIiKSA8PCAiZXhpdCBpbiBkZWZhdWx0IHN3aXRjaCBoYW5kbGVyIjsK
KworICBzd2l0Y2ggKDApCisgICAgY2FzZSAwOgorICAgICAgRVhQRUNUX0RFQVRIKF9leGl0KDEp
LCAiIikgPDwgImV4aXQgaW4gc3dpdGNoIGNhc2UiOworCisgIEdURVNUX0RJU0FCTEVfTVNDX1dB
Uk5JTkdTX1BPUF8oKQorfQorCisvLyBUZXN0cyB0aGF0IGEgc3RhdGljIG1lbWJlciBmdW5jdGlv
biBjYW4gYmUgdXNlZCBpbiBhICJmYXN0IiBzdHlsZQorLy8gZGVhdGggdGVzdC4KK1RFU1RfRihU
ZXN0Rm9yRGVhdGhUZXN0LCBTdGF0aWNNZW1iZXJGdW5jdGlvbkZhc3RTdHlsZSkgeworICB0ZXN0
aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOworICBBU1NFUlRfREVB
VEgoU3RhdGljTWVtYmVyRnVuY3Rpb24oKSwgImRlYXRoLipTdGF0aWNNZW1iZXIiKTsKK30KKwor
Ly8gVGVzdHMgdGhhdCBhIG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNhbiBiZSB1c2VkIGlu
IGEgImZhc3QiCisvLyBzdHlsZSBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3Qs
IE1lbWJlckZ1bmN0aW9uRmFzdFN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhf
dGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIHNob3VsZF9kaWVfID0gdHJ1ZTsKKyAgRVhQRUNUX0RF
QVRIKE1lbWJlckZ1bmN0aW9uKCksICJpbnNpZGUuKk1lbWJlckZ1bmN0aW9uIik7Cit9CisKK3Zv
aWQgQ2hhbmdlVG9Sb290RGlyKCkgeyBwb3NpeDo6Q2hEaXIoR1RFU1RfUEFUSF9TRVBfKTsgfQor
CisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHdvcmsgZXZlbiBpZiB0aGUgY3VycmVudCBkaXJl
Y3RvcnkgaGFzIGJlZW4KKy8vIGNoYW5nZWQuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRmFz
dERlYXRoVGVzdEluQ2hhbmdlZERpcikgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rl
c3Rfc3R5bGUpID0gImZhc3QiOworCisgIENoYW5nZVRvUm9vdERpcigpOworICBFWFBFQ1RfRVhJ
VChfZXhpdCgxKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSksICIiKTsKKworICBDaGFuZ2VU
b1Jvb3REaXIoKTsKKyAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAiIik7Cit9CisKKyMgaWYgR1RF
U1RfT1NfTElOVVgKK3ZvaWQgU2lncHJvZkFjdGlvbihpbnQsIHNpZ2luZm9fdCosIHZvaWQqKSB7
IC8qIG5vIG9wICovIH0KKworLy8gU2V0cyBTSUdQUk9GIGFjdGlvbiBhbmQgSVRJTUVSX1BST0Yg
dGltZXIgKGludGVydmFsOiAxbXMpLgordm9pZCBTZXRTaWdwcm9mQWN0aW9uQW5kVGltZXIoKSB7
CisgIHN0cnVjdCBpdGltZXJ2YWwgdGltZXI7CisgIHRpbWVyLml0X2ludGVydmFsLnR2X3NlYyA9
IDA7CisgIHRpbWVyLml0X2ludGVydmFsLnR2X3VzZWMgPSAxOworICB0aW1lci5pdF92YWx1ZSA9
IHRpbWVyLml0X2ludGVydmFsOworICBBU1NFUlRfRVEoMCwgc2V0aXRpbWVyKElUSU1FUl9QUk9G
LCAmdGltZXIsIE5VTEwpKTsKKyAgc3RydWN0IHNpZ2FjdGlvbiBzaWduYWxfYWN0aW9uOworICBt
ZW1zZXQoJnNpZ25hbF9hY3Rpb24sIDAsIHNpemVvZihzaWduYWxfYWN0aW9uKSk7CisgIHNpZ2Vt
cHR5c2V0KCZzaWduYWxfYWN0aW9uLnNhX21hc2spOworICBzaWduYWxfYWN0aW9uLnNhX3NpZ2Fj
dGlvbiA9IFNpZ3Byb2ZBY3Rpb247CisgIHNpZ25hbF9hY3Rpb24uc2FfZmxhZ3MgPSBTQV9SRVNU
QVJUIHwgU0FfU0lHSU5GTzsKKyAgQVNTRVJUX0VRKDAsIHNpZ2FjdGlvbihTSUdQUk9GLCAmc2ln
bmFsX2FjdGlvbiwgTlVMTCkpOworfQorCisvLyBEaXNhYmxlcyBJVElNRVJfUFJPRiB0aW1lciBh
bmQgaWdub3JlcyBTSUdQUk9GIHNpZ25hbC4KK3ZvaWQgRGlzYWJsZVNpZ3Byb2ZBY3Rpb25BbmRU
aW1lcihzdHJ1Y3Qgc2lnYWN0aW9uKiBvbGRfc2lnbmFsX2FjdGlvbikgeworICBzdHJ1Y3QgaXRp
bWVydmFsIHRpbWVyOworICB0aW1lci5pdF9pbnRlcnZhbC50dl9zZWMgPSAwOworICB0aW1lci5p
dF9pbnRlcnZhbC50dl91c2VjID0gMDsKKyAgdGltZXIuaXRfdmFsdWUgPSB0aW1lci5pdF9pbnRl
cnZhbDsKKyAgQVNTRVJUX0VRKDAsIHNldGl0aW1lcihJVElNRVJfUFJPRiwgJnRpbWVyLCBOVUxM
KSk7CisgIHN0cnVjdCBzaWdhY3Rpb24gc2lnbmFsX2FjdGlvbjsKKyAgbWVtc2V0KCZzaWduYWxf
YWN0aW9uLCAwLCBzaXplb2Yoc2lnbmFsX2FjdGlvbikpOworICBzaWdlbXB0eXNldCgmc2lnbmFs
X2FjdGlvbi5zYV9tYXNrKTsKKyAgc2lnbmFsX2FjdGlvbi5zYV9oYW5kbGVyID0gU0lHX0lHTjsK
KyAgQVNTRVJUX0VRKDAsIHNpZ2FjdGlvbihTSUdQUk9GLCAmc2lnbmFsX2FjdGlvbiwgb2xkX3Np
Z25hbF9hY3Rpb24pKTsKK30KKworLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyB3b3JrIHdoZW4g
U0lHUFJPRiBoYW5kbGVyIGFuZCB0aW1lciBhcmUgc2V0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIEZhc3RTaWdwcm9mQWN0aW9uU2V0KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhf
dGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIFNldFNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigpOworICBF
WFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKTsKKyAgc3RydWN0IHNpZ2FjdGlvbiBvbGRfc2lnbmFs
X2FjdGlvbjsKKyAgRGlzYWJsZVNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigmb2xkX3NpZ25hbF9hY3Rp
b24pOworICBFWFBFQ1RfVFJVRShvbGRfc2lnbmFsX2FjdGlvbi5zYV9zaWdhY3Rpb24gPT0gU2ln
cHJvZkFjdGlvbik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUaHJlYWRTYWZlU2ln
cHJvZkFjdGlvblNldCkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUp
ID0gInRocmVhZHNhZmUiOworICBTZXRTaWdwcm9mQWN0aW9uQW5kVGltZXIoKTsKKyAgRVhQRUNU
X0RFQVRIKF9leGl0KDEpLCAiIik7CisgIHN0cnVjdCBzaWdhY3Rpb24gb2xkX3NpZ25hbF9hY3Rp
b247CisgIERpc2FibGVTaWdwcm9mQWN0aW9uQW5kVGltZXIoJm9sZF9zaWduYWxfYWN0aW9uKTsK
KyAgRVhQRUNUX1RSVUUob2xkX3NpZ25hbF9hY3Rpb24uc2Ffc2lnYWN0aW9uID09IFNpZ3Byb2ZB
Y3Rpb24pOworfQorIyBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKKworLy8gUmVwZWF0cyBhIHJl
cHJlc2VudGF0aXZlIHNhbXBsZSBvZiBkZWF0aCB0ZXN0cyBpbiB0aGUgInRocmVhZHNhZmUiIHN0
eWxlOgorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU3RhdGljTWVtYmVyRnVuY3Rpb25UaHJl
YWRzYWZlU3R5bGUpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9
ICJ0aHJlYWRzYWZlIjsKKyAgQVNTRVJUX0RFQVRIKFN0YXRpY01lbWJlckZ1bmN0aW9uKCksICJk
ZWF0aC4qU3RhdGljTWVtYmVyIik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNZW1i
ZXJGdW5jdGlvblRocmVhZHNhZmVTdHlsZSkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRo
X3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOworICBzaG91bGRfZGllXyA9IHRydWU7CisgIEVY
UEVDVF9ERUFUSChNZW1iZXJGdW5jdGlvbigpLCAiaW5zaWRlLipNZW1iZXJGdW5jdGlvbiIpOwor
fQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgVGhyZWFkc2FmZURlYXRoVGVzdEluTG9vcCkg
eworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUi
OworCisgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKQorICAgIEVYUEVDVF9FWElUKF9leGl0
KGkpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZShpKSwgIiIpIDw8ICI6IGkgPSAiIDw8IGk7Cit9
CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUaHJlYWRzYWZlRGVhdGhUZXN0SW5DaGFuZ2Vk
RGlyKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFk
c2FmZSI7CisKKyAgQ2hhbmdlVG9Sb290RGlyKCk7CisgIEVYUEVDVF9FWElUKF9leGl0KDEpLCB0
ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSwgIiIpOworCisgIENoYW5nZVRvUm9vdERpcigpOwor
ICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIiKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIE1peGVkU3R5bGVzKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHls
ZSkgPSAidGhyZWFkc2FmZSI7CisgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOworICB0ZXN0
aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOworICBFWFBFQ1RfREVB
VEgoX2V4aXQoMSksICIiKTsKK30KKworIyBpZiBHVEVTVF9IQVNfQ0xPTkUgJiYgR1RFU1RfSEFT
X1BUSFJFQUQKKworbmFtZXNwYWNlIHsKKworYm9vbCBwdGhyZWFkX2ZsYWc7CisKK3ZvaWQgU2V0
UHRocmVhZEZsYWcoKSB7CisgIHB0aHJlYWRfZmxhZyA9IHRydWU7Cit9CisKK30gIC8vIG5hbWVz
cGFjZQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRG9lc05vdEV4ZWN1dGVBdGZvcmtIb29r
cykgeworICBpZiAoIXRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yaykpIHsK
KyAgICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUi
OworICAgIHB0aHJlYWRfZmxhZyA9IGZhbHNlOworICAgIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0
Zm9yaygmU2V0UHRocmVhZEZsYWcsIE5VTEwsIE5VTEwpKTsKKyAgICBBU1NFUlRfREVBVEgoX2V4
aXQoMSksICIiKTsKKyAgICBBU1NFUlRfRkFMU0UocHRocmVhZF9mbGFnKTsKKyAgfQorfQorCisj
IGVuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUgJiYgR1RFU1RfSEFTX1BUSFJFQUQKKworLy8gVGVz
dHMgdGhhdCBhIG1ldGhvZCBvZiBhbm90aGVyIGNsYXNzIGNhbiBiZSB1c2VkIGluIGEgZGVhdGgg
dGVzdC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNZXRob2RPZkFub3RoZXJDbGFzcykgewor
ICBjb25zdCBNYXlEaWUgeCh0cnVlKTsKKyAgQVNTRVJUX0RFQVRIKHguTWVtYmVyRnVuY3Rpb24o
KSwgIk1heURpZVxcOlxcOk1lbWJlckZ1bmN0aW9uIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBn
bG9iYWwgZnVuY3Rpb24gY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RG
b3JEZWF0aFRlc3QsIEdsb2JhbEZ1bmN0aW9uKSB7CisgIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5j
dGlvbigpLCAiR2xvYmFsRnVuY3Rpb24iKTsKK30KKworLy8gVGVzdHMgdGhhdCBhbnkgdmFsdWUg
Y29udmVydGlibGUgdG8gYW4gUkUgd29ya3MgYXMgYSBzZWNvbmQKKy8vIGFyZ3VtZW50IHRvIEVY
UEVDVF9ERUFUSC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBY2NlcHRzQW55dGhpbmdDb252
ZXJ0aWJsZVRvUkUpIHsKKyAgc3RhdGljIGNvbnN0IGNoYXIgcmVnZXhfY19zdHJbXSA9ICJHbG9i
YWxGdW5jdGlvbiI7CisgIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleF9jX3N0
cik7CisKKyAgY29uc3QgdGVzdGluZzo6aW50ZXJuYWw6OlJFIHJlZ2V4KHJlZ2V4X2Nfc3RyKTsK
KyAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksIHJlZ2V4KTsKKworIyBpZiBHVEVTVF9I
QVNfR0xPQkFMX1NUUklORworCisgIGNvbnN0IDo6c3RyaW5nIHJlZ2V4X3N0cihyZWdleF9jX3N0
cik7CisgIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleF9zdHIpOworCisjIGVu
ZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCisjIGlmICFHVEVTVF9VU0VTX1BDUkUK
KworICBjb25zdCA6OnN0ZDo6c3RyaW5nIHJlZ2V4X3N0ZF9zdHIocmVnZXhfY19zdHIpOworICBF
WFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXhfc3RkX3N0cik7CisKKyMgZW5kaWYg
IC8vICFHVEVTVF9VU0VTX1BDUkUKK30KKworLy8gVGVzdHMgdGhhdCBhIG5vbi12b2lkIGZ1bmN0
aW9uIGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0
LCBOb25Wb2lkRnVuY3Rpb24pIHsKKyAgQVNTRVJUX0RFQVRIKE5vblZvaWRGdW5jdGlvbigpLCAi
Tm9uVm9pZEZ1bmN0aW9uIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgZnVuY3Rpb25zIHRoYXQgdGFr
ZSBwYXJhbWV0ZXIocykgY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RG
b3JEZWF0aFRlc3QsIEZ1bmN0aW9uV2l0aFBhcmFtZXRlcikgeworICBFWFBFQ1RfREVBVEgoRGll
SWYodHJ1ZSksICJEaWVJZlxcKFxcKSIpOworICBFWFBFQ1RfREVBVEgoRGllSWZMZXNzVGhhbigy
LCAzKSwgIkRpZUlmTGVzc1RoYW4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVBVEgg
Y2FuIGJlIHVzZWQgb3V0c2lkZSBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdCBmaXh0dXJlLgorVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIE91dHNpZGVGaXh0dXJlKSB7CisgIERlYXRoVGVzdFN1YnJv
dXRpbmUoKTsKK30KKworLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyBjYW4gYmUgZG9uZSBpbnNp
ZGUgYSBsb29wLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEluc2lkZUxvb3ApIHsKKyAgZm9y
IChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICBFWFBFQ1RfREVBVEgoRGllSWZMZXNzVGhh
bigtMSwgaSksICJEaWVJZkxlc3NUaGFuIikgPDwgIndoZXJlIGkgPT0gIiA8PCBpOworICB9Cit9
CisKKy8vIFRlc3RzIHRoYXQgYSBjb21wb3VuZCBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgaW4gYSBk
ZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIENvbXBvdW5kU3RhdGVtZW50KSB7
CisgIEVYUEVDVF9ERUFUSCh7ICAvLyBOT0xJTlQKKyAgICBjb25zdCBpbnQgeCA9IDI7CisgICAg
Y29uc3QgaW50IHkgPSB4ICsgMTsKKyAgICBEaWVJZkxlc3NUaGFuKHgsIHkpOworICB9LAorICAi
RGllSWZMZXNzVGhhbiIpOworfQorCisvLyBUZXN0cyB0aGF0IGNvZGUgdGhhdCBkb2Vzbid0IGRp
ZSBjYXVzZXMgYSBkZWF0aCB0ZXN0IHRvIGZhaWwuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
RG9lc05vdERpZSkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgoRGll
SWYoZmFsc2UpLCAiRGllSWYiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0
byBkaWUiKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIGRlYXRoIHRlc3QgZmFpbHMgd2hlbiB0aGUg
ZXJyb3IgbWVzc2FnZSBpc24ndCBleHBlY3RlZC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBF
cnJvck1lc3NhZ2VNaXNtYXRjaCkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBO
T0xJTlQKKyAgICBFWFBFQ1RfREVBVEgoRGllSWYodHJ1ZSksICJEaWVJZkxlc3NUaGFuIikgPDwg
IkVuZCBvZiBkZWF0aCB0ZXN0IG1lc3NhZ2UuIjsKKyAgfSwgImRpZWQgYnV0IG5vdCB3aXRoIGV4
cGVjdGVkIGVycm9yIik7Cit9CisKKy8vIE9uIGV4aXQsICphYm9ydGVkIHdpbGwgYmUgdHJ1ZSBp
ZmYgdGhlIEVYUEVDVF9ERUFUSCgpIHN0YXRlbWVudAorLy8gYWJvcnRlZCB0aGUgZnVuY3Rpb24u
Cit2b2lkIEV4cGVjdERlYXRoVGVzdEhlbHBlcihib29sKiBhYm9ydGVkKSB7CisgICphYm9ydGVk
ID0gdHJ1ZTsKKyAgRVhQRUNUX0RFQVRIKERpZUlmKGZhbHNlKSwgIkRpZUlmIik7ICAvLyBUaGlz
IGFzc2VydGlvbiBzaG91bGQgZmFpbC4KKyAgKmFib3J0ZWQgPSBmYWxzZTsKK30KKworLy8gVGVz
dHMgdGhhdCBFWFBFQ1RfREVBVEggZG9lc24ndCBhYm9ydCB0aGUgdGVzdCBvbiBmYWlsdXJlLgor
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEVYUEVDVF9ERUFUSCkgeworICBib29sIGFib3J0ZWQg
PSB0cnVlOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFeHBlY3REZWF0aFRlc3RIZWxwZXIo
JmFib3J0ZWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGRpZSIpOwor
ICBFWFBFQ1RfRkFMU0UoYWJvcnRlZCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQVRI
IGRvZXMgYWJvcnQgdGhlIHRlc3Qgb24gZmFpbHVyZS4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0
LCBBU1NFUlRfREVBVEgpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgYWJvcnRlZCA9IHRydWU7CisgICAgQVNTRVJUX0RF
QVRIKERpZUlmKGZhbHNlKSwgIkRpZUlmIik7ICAvLyBUaGlzIGFzc2VydGlvbiBzaG91bGQgZmFp
bC4KKyAgICBhYm9ydGVkID0gZmFsc2U7CisgIH0sICJmYWlsZWQgdG8gZGllIik7CisgIEVYUEVD
VF9UUlVFKGFib3J0ZWQpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSCBldmFsdWF0
ZXMgdGhlIGFyZ3VtZW50cyBleGFjdGx5IG9uY2UuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
U2luZ2xlRXZhbHVhdGlvbikgeworICBpbnQgeCA9IDM7CisgIEVYUEVDVF9ERUFUSChEaWVJZigo
Kyt4KSA9PSA0KSwgIkRpZUlmIik7CisKKyAgY29uc3QgY2hhciogcmVnZXggPSAiRGllSWYiOwor
ICBjb25zdCBjaGFyKiByZWdleF9zYXZlID0gcmVnZXg7CisgIEVYUEVDVF9ERUFUSChEaWVJZkxl
c3NUaGFuKDMsIDQpLCByZWdleCsrKTsKKyAgRVhQRUNUX0VRKHJlZ2V4X3NhdmUgKyAxLCByZWdl
eCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgcnVuLWF3YXkgZGVhdGggdGVzdHMgYXJlIHJlcG9ydGVk
IGFzIGZhaWx1cmVzLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFJ1bmF3YXlJc0ZhaWx1cmUp
IHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKHN0YXRpY19jYXN0PHZv
aWQ+KDApLCAiRm9vIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZGll
LiIpOworfQorCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHJlcG9ydCBleGVjdXRpbmcgJ3Jl
dHVybicgaW4gdGhlIHN0YXRlbWVudCBhcworLy8gZmFpbHVyZS4KK1RFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBSZXR1cm5Jc0ZhaWx1cmUpIHsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJU
X0RFQVRIKHJldHVybiwgIkJhciIpLAorICAgICAgICAgICAgICAgICAgICAgICAiaWxsZWdhbCBy
ZXR1cm4gaW4gdGVzdCBzdGF0ZW1lbnQuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0RF
QlVHX0RFQVRIIHdvcmtzIGFzIGV4cGVjdGVkLCB0aGF0IGlzLCB5b3UgY2FuIHN0cmVhbSBhCisv
LyBtZXNzYWdlIHRvIGl0LCBhbmQgaW4gZGVidWcgbW9kZSBpdDoKKy8vIDEuIEFzc2VydHMgb24g
ZGVhdGguCisvLyAyLiBIYXMgbm8gc2lkZSBlZmZlY3QuCisvLworLy8gQW5kIGluIG9wdCBtb2Rl
LCBpdDoKKy8vIDEuICBIYXMgc2lkZSBlZmZlY3RzIGJ1dCBkb2VzIG5vdCBhc3NlcnQuCitURVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgVGVzdEV4cGVjdERlYnVnRGVhdGgpIHsKKyAgaW50IHNpZGVl
ZmZlY3QgPSAwOworCisgIC8vIFB1dCB0aGUgcmVnZXggaW4gYSBsb2NhbCB2YXJpYWJsZSB0byBt
YWtlIHN1cmUgd2UgZG9uJ3QgZ2V0IGFuICJ1bnVzZWQiCisgIC8vIHdhcm5pbmcgaW4gb3B0IG1v
ZGUuCisgIGNvbnN0IGNoYXIqIHJlZ2V4ID0gImRlYXRoLipEaWVJbkRlYnVnRWxzZTEyIjsKKwor
ICBFWFBFQ1RfREVCVUdfREVBVEgoRGllSW5EZWJ1Z0Vsc2UxMigmc2lkZWVmZmVjdCksIHJlZ2V4
KQorICAgICAgPDwgIk11c3QgYWNjZXB0IGEgc3RyZWFtZWQgbWVzc2FnZSI7CisKKyMgaWZkZWYg
TkRFQlVHCisKKyAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgb2NjdXJzIGluIG9wdCBt
b2RlIChzaWRlZWZmZWN0KS4KKyAgRVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0KTsKKworIyBlbHNl
CisKKyAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgZG9lcyBub3Qgb2NjdXIgaW4gZGJn
IG1vZGUgKG5vIHNpZGVlZmZlY3QpLgorICBFWFBFQ1RfRVEoMCwgc2lkZWVmZmVjdCk7CisKKyMg
ZW5kaWYKK30KKworLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVCVUdfREVBVEggd29ya3MgYXMgZXhw
ZWN0ZWQsIHRoYXQgaXMsIHlvdSBjYW4gc3RyZWFtIGEKKy8vIG1lc3NhZ2UgdG8gaXQsIGFuZCBp
biBkZWJ1ZyBtb2RlIGl0OgorLy8gMS4gQXNzZXJ0cyBvbiBkZWF0aC4KKy8vIDIuIEhhcyBubyBz
aWRlIGVmZmVjdC4KKy8vCisvLyBBbmQgaW4gb3B0IG1vZGUsIGl0OgorLy8gMS4gIEhhcyBzaWRl
IGVmZmVjdHMgYnV0IGRvZXMgbm90IGFzc2VydC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBU
ZXN0QXNzZXJ0RGVidWdEZWF0aCkgeworICBpbnQgc2lkZWVmZmVjdCA9IDA7CisKKyAgQVNTRVJU
X0RFQlVHX0RFQVRIKERpZUluRGVidWdFbHNlMTIoJnNpZGVlZmZlY3QpLCAiZGVhdGguKkRpZUlu
RGVidWdFbHNlMTIiKQorICAgICAgPDwgIk11c3QgYWNjZXB0IGEgc3RyZWFtZWQgbWVzc2FnZSI7
CisKKyMgaWZkZWYgTkRFQlVHCisKKyAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgb2Nj
dXJzIGluIG9wdCBtb2RlIChzaWRlZWZmZWN0KS4KKyAgRVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0
KTsKKworIyBlbHNlCisKKyAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgZG9lcyBub3Qg
b2NjdXIgaW4gZGJnIG1vZGUgKG5vIHNpZGVlZmZlY3QpLgorICBFWFBFQ1RfRVEoMCwgc2lkZWVm
ZmVjdCk7CisKKyMgZW5kaWYKK30KKworIyBpZm5kZWYgTkRFQlVHCisKK3ZvaWQgRXhwZWN0RGVi
dWdEZWF0aEhlbHBlcihib29sKiBhYm9ydGVkKSB7CisgICphYm9ydGVkID0gdHJ1ZTsKKyAgRVhQ
RUNUX0RFQlVHX0RFQVRIKHJldHVybiwgIiIpIDw8ICJUaGlzIGlzIGV4cGVjdGVkIHRvIGZhaWwu
IjsKKyAgKmFib3J0ZWQgPSBmYWxzZTsKK30KKworIyAgaWYgR1RFU1RfT1NfV0lORE9XUworVEVT
VChQb3BVcERlYXRoVGVzdCwgRG9lc05vdFNob3dQb3BVcE9uQWJvcnQpIHsKKyAgcHJpbnRmKCJU
aGlzIHRlc3Qgc2hvdWxkIGJlIGNvbnNpZGVyZWQgZmFpbGluZyBpZiBpdCBzaG93cyAiCisgICAg
ICAgICAiYW55IHBvcC11cCBkaWFsb2dzLlxuIik7CisgIGZmbHVzaChzdGRvdXQpOworCisgIEVY
UEVDVF9ERUFUSCh7CisgICAgdGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA9
IGZhbHNlOworICAgIGFib3J0KCk7CisgIH0sICIiKTsKK30KKyMgIGVuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQlVHX0RFQVRIIGluIGRlYnVnIG1v
ZGUgZG9lcyBub3QgYWJvcnQKKy8vIHRoZSBmdW5jdGlvbi4KK1RFU1RfRihUZXN0Rm9yRGVhdGhU
ZXN0LCBFeHBlY3REZWJ1Z0RlYXRoRG9lc05vdEFib3J0KSB7CisgIGJvb2wgYWJvcnRlZCA9IHRy
dWU7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEV4cGVjdERlYnVnRGVhdGhIZWxwZXIoJmFi
b3J0ZWQpLCAiIik7CisgIEVYUEVDVF9GQUxTRShhYm9ydGVkKTsKK30KKwordm9pZCBBc3NlcnRE
ZWJ1Z0RlYXRoSGVscGVyKGJvb2wqIGFib3J0ZWQpIHsKKyAgKmFib3J0ZWQgPSB0cnVlOworICBH
VEVTVF9MT0dfKElORk8pIDw8ICJCZWZvcmUgQVNTRVJUX0RFQlVHX0RFQVRIIjsKKyAgQVNTRVJU
X0RFQlVHX0RFQVRIKEdURVNUX0xPR18oSU5GTykgPDwgIkluIEFTU0VSVF9ERUJVR19ERUFUSCI7
IHJldHVybiwgIiIpCisgICAgICA8PCAiVGhpcyBpcyBleHBlY3RlZCB0byBmYWlsLiI7CisgIEdU
RVNUX0xPR18oSU5GTykgPDwgIkFmdGVyIEFTU0VSVF9ERUJVR19ERUFUSCI7CisgICphYm9ydGVk
ID0gZmFsc2U7Cit9CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQlVHX0RFQVRIIGluIGRlYnVn
IG1vZGUgYWJvcnRzIHRoZSBmdW5jdGlvbiBvbgorLy8gZmFpbHVyZS4KK1RFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzKSB7CisgIHN0YXRpYyBib29sIGFib3J0
ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVi
dWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9
CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzMikgewor
ICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVD
VF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVi
dWdEZWF0aEFib3J0czMpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZh
bHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9y
dGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JE
ZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM0KSB7CisgIHN0YXRpYyBib29sIGFib3J0
ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVi
dWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9
CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzNSkgewor
ICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVD
VF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVi
dWdEZWF0aEFib3J0czYpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZh
bHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9y
dGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JE
ZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM3KSB7CisgIHN0YXRpYyBib29sIGFib3J0
ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVi
dWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9
CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzOCkgewor
ICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVD
VF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVi
dWdEZWF0aEFib3J0czkpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZh
bHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9y
dGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JE
ZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHMxMCkgeworICBzdGF0aWMgYm9vbCBhYm9y
dGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERl
YnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOwor
fQorCisjIGVuZGlmICAvLyBfTkRFQlVHCisKKy8vIFRlc3RzIHRoZSAqX0VYSVQgZmFtaWx5IG9m
IG1hY3JvcywgdXNpbmcgYSB2YXJpZXR5IG9mIHByZWRpY2F0ZXMuCitzdGF0aWMgdm9pZCBUZXN0
RXhpdE1hY3JvcygpIHsKKyAgRVhQRUNUX0VYSVQoX2V4aXQoMSksICB0ZXN0aW5nOjpFeGl0ZWRX
aXRoQ29kZSgxKSwgICIiKTsKKyAgQVNTRVJUX0VYSVQoX2V4aXQoNDIpLCB0ZXN0aW5nOjpFeGl0
ZWRXaXRoQ29kZSg0MiksICIiKTsKKworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisKKyAgLy8gT2Yg
YWxsIHNpZ25hbHMgZWZmZWN0cyBvbiB0aGUgcHJvY2VzcyBleGl0IGNvZGUsIG9ubHkgdGhvc2Ug
b2YgU0lHQUJSVAorICAvLyBhcmUgZG9jdW1lbnRlZCBvbiBXaW5kb3dzLgorICAvLyBTZWUgaHR0
cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvcXVlcnktYmkvbS9kd3d6a3Q0Yy4KKyAgRVhQ
RUNUX0VYSVQocmFpc2UoU0lHQUJSVCksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDMpLCAiIikg
PDwgImJfYXIiOworCisjIGVsaWYgIUdURVNUX09TX0ZVQ0hTSUEKKworICAvLyBGdWNoc2lhIGhh
cyBubyB1bml4IHNpZ25hbHMuCisgIEVYUEVDVF9FWElUKHJhaXNlKFNJR0tJTEwpLCB0ZXN0aW5n
OjpLaWxsZWRCeVNpZ25hbChTSUdLSUxMKSwgIiIpIDw8ICJmb28iOworICBBU1NFUlRfRVhJVChy
YWlzZShTSUdVU1IyKSwgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHVVNSMiksICIiKSA8PCAi
YmFyIjsKKworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRf
RVhJVChfZXhpdCgwKSwgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHU0VHViksICIiKQorICAg
ICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgdG9vLiI7CisgIH0sICJUaGlzIGZhaWx1
cmUgaXMgZXhwZWN0ZWQsIHRvby4iKTsKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwor
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9FWElU
KHJhaXNlKFNJR1NFR1YpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgwKSwgIiIpCisgICAgICA8
PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiI7CisgIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhw
ZWN0ZWQuIik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFeGl0TWFjcm9zKSB7Cisg
IFRlc3RFeGl0TWFjcm9zKCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFeGl0TWFj
cm9zVXNpbmdGb3JrKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9y
aykgPSB0cnVlOworICBUZXN0RXhpdE1hY3JvcygpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgSW52YWxpZFN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9z
dHlsZSkgPSAicm9jb2NvIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
CisgICAgRVhQRUNUX0RFQVRIKF9leGl0KDApLCAiIikgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBl
Y3RlZC4iOworICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOworfQorCitURVNUX0Yo
VGVzdEZvckRlYXRoVGVzdCwgRGVhdGhUZXN0RmFpbGVkT3V0cHV0KSB7CisgIHRlc3Rpbmc6OkdU
RVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKAorICAgICAgRVhQRUNUX0RFQVRIKERpZVdpdGhNZXNzYWdlKCJkZWF0aFxuIiksCisg
ICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIG1lc3NhZ2UiKSwKKyAgICAgICJBY3R1YWwgbXNn
OlxuIgorICAgICAgIlsgIERFQVRIICAgXSBkZWF0aFxuIik7Cit9CisKK1RFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBEZWF0aFRlc3RVbmV4cGVjdGVkUmV0dXJuT3V0cHV0KSB7CisgIHRlc3Rpbmc6
OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKAorICAgICAgRVhQRUNUX0RFQVRIKHsKKyAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgInJldHVybmluZ1xuIik7CisgICAgICAgICAgZmZsdXNoKHN0ZGVycik7CisgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9LCAiIiksCisgICAgICAiICAgIFJlc3VsdDogaWxsZWdhbCByZXR1
cm4gaW4gdGVzdCBzdGF0ZW1lbnQuXG4iCisgICAgICAiIEVycm9yIG1zZzpcbiIKKyAgICAgICJb
ICBERUFUSCAgIF0gcmV0dXJuaW5nXG4iKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3Qs
IERlYXRoVGVzdEJhZEV4aXRDb2RlT3V0cHV0KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVh
dGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAorICAg
ICAgRVhQRUNUX0VYSVQoRGllV2l0aE1lc3NhZ2UoImV4aXRpbmcgd2l0aCByYyAxXG4iKSwKKyAg
ICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDMpLAorICAgICAgICAgICAg
ICAgICAgImV4cGVjdGVkIG1lc3NhZ2UiKSwKKyAgICAgICIgICAgUmVzdWx0OiBkaWVkIGJ1dCBu
b3Qgd2l0aCBleHBlY3RlZCBleGl0IGNvZGU6XG4iCisgICAgICAiICAgICAgICAgICAgRXhpdGVk
IHdpdGggZXhpdCBzdGF0dXMgMVxuIgorICAgICAgIkFjdHVhbCBtc2c6XG4iCisgICAgICAiWyAg
REVBVEggICBdIGV4aXRpbmcgd2l0aCByYyAxXG4iKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0
aFRlc3QsIERlYXRoVGVzdE11bHRpTGluZU1hdGNoRmFpbCkgeworICB0ZXN0aW5nOjpHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RSgKKyAgICAgIEVYUEVDVF9ERUFUSChEaWVXaXRoTWVzc2FnZSgibGluZSAxXG5saW5lIDJcbmxp
bmUgM1xuIiksCisgICAgICAgICAgICAgICAgICAgImxpbmUgMVxueHl6XG5saW5lIDNcbiIpLAor
ICAgICAgIkFjdHVhbCBtc2c6XG4iCisgICAgICAiWyAgREVBVEggICBdIGxpbmUgMVxuIgorICAg
ICAgIlsgIERFQVRIICAgXSBsaW5lIDJcbiIKKyAgICAgICJbICBERUFUSCAgIF0gbGluZSAzXG4i
KTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERlYXRoVGVzdE11bHRpTGluZU1hdGNo
UGFzcykgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3Qi
OworICBFWFBFQ1RfREVBVEgoRGllV2l0aE1lc3NhZ2UoImxpbmUgMVxubGluZSAyXG5saW5lIDNc
biIpLAorICAgICAgICAgICAgICAgImxpbmUgMVxubGluZSAyXG5saW5lIDNcbiIpOworfQorCisv
LyBBIERlYXRoVGVzdEZhY3RvcnkgdGhhdCByZXR1cm5zIE1vY2tEZWF0aFRlc3RzLgorY2xhc3Mg
TW9ja0RlYXRoVGVzdEZhY3RvcnkgOiBwdWJsaWMgRGVhdGhUZXN0RmFjdG9yeSB7CisgcHVibGlj
OgorICBNb2NrRGVhdGhUZXN0RmFjdG9yeSgpOworICB2aXJ0dWFsIGJvb2wgQ3JlYXRlKGNvbnN0
IGNoYXIqIHN0YXRlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6
OmludGVybmFsOjpSRSogcmVnZXgsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUsIERlYXRoVGVzdCoqIHRlc3QpOworCisgIC8vIFNldHMgdGhlIHBhcmFt
ZXRlcnMgZm9yIHN1YnNlcXVlbnQgY2FsbHMgdG8gQ3JlYXRlLgorICB2b2lkIFNldFBhcmFtZXRl
cnMoYm9vbCBjcmVhdGUsIERlYXRoVGVzdDo6VGVzdFJvbGUgcm9sZSwKKyAgICAgICAgICAgICAg
ICAgICAgIGludCBzdGF0dXMsIGJvb2wgcGFzc2VkKTsKKworICAvLyBBY2Nlc3NvcnMuCisgIGlu
dCBBc3N1bWVSb2xlQ2FsbHMoKSBjb25zdCB7IHJldHVybiBhc3N1bWVfcm9sZV9jYWxsc187IH0K
KyAgaW50IFdhaXRDYWxscygpIGNvbnN0IHsgcmV0dXJuIHdhaXRfY2FsbHNfOyB9CisgIHNpemVf
dCBQYXNzZWRDYWxscygpIGNvbnN0IHsgcmV0dXJuIHBhc3NlZF9hcmdzXy5zaXplKCk7IH0KKyAg
Ym9vbCBQYXNzZWRBcmd1bWVudChpbnQgbikgY29uc3QgeyByZXR1cm4gcGFzc2VkX2FyZ3NfW25d
OyB9CisgIHNpemVfdCBBYm9ydENhbGxzKCkgY29uc3QgeyByZXR1cm4gYWJvcnRfYXJnc18uc2l6
ZSgpOyB9CisgIERlYXRoVGVzdDo6QWJvcnRSZWFzb24gQWJvcnRBcmd1bWVudChpbnQgbikgY29u
c3QgeworICAgIHJldHVybiBhYm9ydF9hcmdzX1tuXTsKKyAgfQorICBib29sIFRlc3REZWxldGVk
KCkgY29uc3QgeyByZXR1cm4gdGVzdF9kZWxldGVkXzsgfQorCisgcHJpdmF0ZToKKyAgZnJpZW5k
IGNsYXNzIE1vY2tEZWF0aFRlc3Q7CisgIC8vIElmIHRydWUsIENyZWF0ZSB3aWxsIHJldHVybiBh
IE1vY2tEZWF0aFRlc3Q7IG90aGVyd2lzZSBpdCByZXR1cm5zCisgIC8vIE5VTEwuCisgIGJvb2wg
Y3JlYXRlXzsKKyAgLy8gVGhlIHZhbHVlIGEgTW9ja0RlYXRoVGVzdCB3aWxsIHJldHVybiBmcm9t
IGl0cyBBc3N1bWVSb2xlIG1ldGhvZC4KKyAgRGVhdGhUZXN0OjpUZXN0Um9sZSByb2xlXzsKKyAg
Ly8gVGhlIHZhbHVlIGEgTW9ja0RlYXRoVGVzdCB3aWxsIHJldHVybiBmcm9tIGl0cyBXYWl0IG1l
dGhvZC4KKyAgaW50IHN0YXR1c187CisgIC8vIFRoZSB2YWx1ZSBhIE1vY2tEZWF0aFRlc3Qgd2ls
bCByZXR1cm4gZnJvbSBpdHMgUGFzc2VkIG1ldGhvZC4KKyAgYm9vbCBwYXNzZWRfOworCisgIC8v
IE51bWJlciBvZiB0aW1lcyBBc3N1bWVSb2xlIHdhcyBjYWxsZWQuCisgIGludCBhc3N1bWVfcm9s
ZV9jYWxsc187CisgIC8vIE51bWJlciBvZiB0aW1lcyBXYWl0IHdhcyBjYWxsZWQuCisgIGludCB3
YWl0X2NhbGxzXzsKKyAgLy8gVGhlIGFyZ3VtZW50cyB0byB0aGUgY2FsbHMgdG8gUGFzc2VkIHNp
bmNlIHRoZSBsYXN0IGNhbGwgdG8KKyAgLy8gU2V0UGFyYW1ldGVycy4KKyAgc3RkOjp2ZWN0b3I8
Ym9vbD4gcGFzc2VkX2FyZ3NfOworICAvLyBUaGUgYXJndW1lbnRzIHRvIHRoZSBjYWxscyB0byBB
Ym9ydCBzaW5jZSB0aGUgbGFzdCBjYWxsIHRvCisgIC8vIFNldFBhcmFtZXRlcnMuCisgIHN0ZDo6
dmVjdG9yPERlYXRoVGVzdDo6QWJvcnRSZWFzb24+IGFib3J0X2FyZ3NfOworICAvLyBUcnVlIGlm
IHRoZSBsYXN0IE1vY2tEZWF0aFRlc3QgcmV0dXJuZWQgYnkgQ3JlYXRlIGhhcyBiZWVuCisgIC8v
IGRlbGV0ZWQuCisgIGJvb2wgdGVzdF9kZWxldGVkXzsKK307CisKKworLy8gQSBEZWF0aFRlc3Qg
aW1wbGVtZW50YXRpb24gdXNlZnVsIGluIHRlc3RpbmcuICBJdCByZXR1cm5zIHZhbHVlcyBzZXQK
Ky8vIGF0IGl0cyBjcmVhdGlvbiBmcm9tIGl0cyB2YXJpb3VzIGluaGVyaXRlZCBEZWF0aFRlc3Qg
bWV0aG9kcywgYW5kCisvLyByZXBvcnRzIGNhbGxzIHRvIHRob3NlIG1ldGhvZHMgdG8gaXRzIHBh
cmVudCBNb2NrRGVhdGhUZXN0RmFjdG9yeQorLy8gb2JqZWN0LgorY2xhc3MgTW9ja0RlYXRoVGVz
dCA6IHB1YmxpYyBEZWF0aFRlc3QgeworIHB1YmxpYzoKKyAgTW9ja0RlYXRoVGVzdChNb2NrRGVh
dGhUZXN0RmFjdG9yeSAqcGFyZW50LAorICAgICAgICAgICAgICAgIFRlc3RSb2xlIHJvbGUsIGlu
dCBzdGF0dXMsIGJvb2wgcGFzc2VkKSA6CisgICAgICBwYXJlbnRfKHBhcmVudCksIHJvbGVfKHJv
bGUpLCBzdGF0dXNfKHN0YXR1cyksIHBhc3NlZF8ocGFzc2VkKSB7CisgIH0KKyAgdmlydHVhbCB+
TW9ja0RlYXRoVGVzdCgpIHsKKyAgICBwYXJlbnRfLT50ZXN0X2RlbGV0ZWRfID0gdHJ1ZTsKKyAg
fQorICB2aXJ0dWFsIFRlc3RSb2xlIEFzc3VtZVJvbGUoKSB7CisgICAgKytwYXJlbnRfLT5hc3N1
bWVfcm9sZV9jYWxsc187CisgICAgcmV0dXJuIHJvbGVfOworICB9CisgIHZpcnR1YWwgaW50IFdh
aXQoKSB7CisgICAgKytwYXJlbnRfLT53YWl0X2NhbGxzXzsKKyAgICByZXR1cm4gc3RhdHVzXzsK
KyAgfQorICB2aXJ0dWFsIGJvb2wgUGFzc2VkKGJvb2wgZXhpdF9zdGF0dXNfb2spIHsKKyAgICBw
YXJlbnRfLT5wYXNzZWRfYXJnc18ucHVzaF9iYWNrKGV4aXRfc3RhdHVzX29rKTsKKyAgICByZXR1
cm4gcGFzc2VkXzsKKyAgfQorICB2aXJ0dWFsIHZvaWQgQWJvcnQoQWJvcnRSZWFzb24gcmVhc29u
KSB7CisgICAgcGFyZW50Xy0+YWJvcnRfYXJnc18ucHVzaF9iYWNrKHJlYXNvbik7CisgIH0KKwor
IHByaXZhdGU6CisgIE1vY2tEZWF0aFRlc3RGYWN0b3J5KiBjb25zdCBwYXJlbnRfOworICBjb25z
dCBUZXN0Um9sZSByb2xlXzsKKyAgY29uc3QgaW50IHN0YXR1c187CisgIGNvbnN0IGJvb2wgcGFz
c2VkXzsKK307CisKKworLy8gTW9ja0RlYXRoVGVzdEZhY3RvcnkgY29uc3RydWN0b3IuCitNb2Nr
RGVhdGhUZXN0RmFjdG9yeTo6TW9ja0RlYXRoVGVzdEZhY3RvcnkoKQorICAgIDogY3JlYXRlXyh0
cnVlKSwKKyAgICAgIHJvbGVfKERlYXRoVGVzdDo6T1ZFUlNFRV9URVNUKSwKKyAgICAgIHN0YXR1
c18oMCksCisgICAgICBwYXNzZWRfKHRydWUpLAorICAgICAgYXNzdW1lX3JvbGVfY2FsbHNfKDAp
LAorICAgICAgd2FpdF9jYWxsc18oMCksCisgICAgICBwYXNzZWRfYXJnc18oKSwKKyAgICAgIGFi
b3J0X2FyZ3NfKCkgeworfQorCisKKy8vIFNldHMgdGhlIHBhcmFtZXRlcnMgZm9yIHN1YnNlcXVl
bnQgY2FsbHMgdG8gQ3JlYXRlLgordm9pZCBNb2NrRGVhdGhUZXN0RmFjdG9yeTo6U2V0UGFyYW1l
dGVycyhib29sIGNyZWF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRGVhdGhUZXN0OjpUZXN0Um9sZSByb2xlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgc3RhdHVzLCBib29sIHBhc3NlZCkgeworICBjcmVhdGVfID0gY3Jl
YXRlOworICByb2xlXyA9IHJvbGU7CisgIHN0YXR1c18gPSBzdGF0dXM7CisgIHBhc3NlZF8gPSBw
YXNzZWQ7CisKKyAgYXNzdW1lX3JvbGVfY2FsbHNfID0gMDsKKyAgd2FpdF9jYWxsc18gPSAwOwor
ICBwYXNzZWRfYXJnc18uY2xlYXIoKTsKKyAgYWJvcnRfYXJnc18uY2xlYXIoKTsKK30KKworCisv
LyBTZXRzIHRlc3QgdG8gTlVMTCAoaWYgY3JlYXRlXyBpcyBmYWxzZSkgb3IgdG8gdGhlIGFkZHJl
c3Mgb2YgYSBuZXcKKy8vIE1vY2tEZWF0aFRlc3Qgb2JqZWN0IHdpdGggcGFyYW1ldGVycyB0YWtl
biBmcm9tIHRoZSBsYXN0IGNhbGwKKy8vIHRvIFNldFBhcmFtZXRlcnMgKGlmIGNyZWF0ZV8gaXMg
dHJ1ZSkuICBBbHdheXMgcmV0dXJucyB0cnVlLgorYm9vbCBNb2NrRGVhdGhUZXN0RmFjdG9yeTo6
Q3JlYXRlKGNvbnN0IGNoYXIqIC8qc3RhdGVtZW50Ki8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UkUqIC8qcmVnZXgqLywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKmZpbGUqLywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgLypsaW5lKi8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRGVhdGhUZXN0KiogdGVzdCkgeworICB0ZXN0X2RlbGV0
ZWRfID0gZmFsc2U7CisgIGlmIChjcmVhdGVfKSB7CisgICAgKnRlc3QgPSBuZXcgTW9ja0RlYXRo
VGVzdCh0aGlzLCByb2xlXywgc3RhdHVzXywgcGFzc2VkXyk7CisgIH0gZWxzZSB7CisgICAgKnRl
c3QgPSBOVUxMOworICB9CisgIHJldHVybiB0cnVlOworfQorCisvLyBBIHRlc3QgZml4dHVyZSBm
b3IgdGVzdGluZyB0aGUgbG9naWMgb2YgdGhlIEdURVNUX0RFQVRIX1RFU1RfIG1hY3JvLgorLy8g
SXQgaW5zdGFsbHMgYSBNb2NrRGVhdGhUZXN0RmFjdG9yeSB0aGF0IGlzIHVzZWQgZm9yIHRoZSBk
dXJhdGlvbgorLy8gb2YgdGhlIHRlc3QgY2FzZS4KK2NsYXNzIE1hY3JvTG9naWNEZWF0aFRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICBzdGF0aWMgdGVzdGluZzo6
aW50ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KiByZXBsYWNlcl87CisgIHN0YXRpYyBN
b2NrRGVhdGhUZXN0RmFjdG9yeSogZmFjdG9yeV87CisKKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0
Q2FzZSgpIHsKKyAgICBmYWN0b3J5XyA9IG5ldyBNb2NrRGVhdGhUZXN0RmFjdG9yeTsKKyAgICBy
ZXBsYWNlcl8gPSBuZXcgdGVzdGluZzo6aW50ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5
KGZhY3RvcnlfKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7Cisg
ICAgZGVsZXRlIHJlcGxhY2VyXzsKKyAgICByZXBsYWNlcl8gPSBOVUxMOworICAgIGRlbGV0ZSBm
YWN0b3J5XzsKKyAgICBmYWN0b3J5XyA9IE5VTEw7CisgIH0KKworICAvLyBSdW5zIGEgZGVhdGgg
dGVzdCB0aGF0IGJyZWFrcyB0aGUgcnVsZXMgYnkgcmV0dXJuaW5nLiAgU3VjaCBhIGRlYXRoCisg
IC8vIHRlc3QgY2Fubm90IGJlIHJ1biBkaXJlY3RseSBmcm9tIGEgdGVzdCByb3V0aW5lIHRoYXQg
dXNlcyBhCisgIC8vIE1vY2tEZWF0aFRlc3QsIG9yIHRoZSByZW1haW5kZXIgb2YgdGhlIHJvdXRp
bmUgd2lsbCBub3QgYmUgZXhlY3V0ZWQuCisgIHN0YXRpYyB2b2lkIFJ1blJldHVybmluZ0RlYXRo
VGVzdChib29sKiBmbGFnKSB7CisgICAgQVNTRVJUX0RFQVRIKHsgIC8vIE5PTElOVAorICAgICAg
KmZsYWcgPSB0cnVlOworICAgICAgcmV0dXJuOworICAgIH0sICIiKTsKKyAgfQorfTsKKwordGVz
dGluZzo6aW50ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KiBNYWNyb0xvZ2ljRGVhdGhU
ZXN0OjpyZXBsYWNlcl8KKyAgICA9IE5VTEw7CitNb2NrRGVhdGhUZXN0RmFjdG9yeSogTWFjcm9M
b2dpY0RlYXRoVGVzdDo6ZmFjdG9yeV8gPSBOVUxMOworCisKKy8vIFRlc3QgdGhhdCBub3RoaW5n
IGhhcHBlbnMgd2hlbiB0aGUgZmFjdG9yeSBkb2Vzbid0IHJldHVybiBhIERlYXRoVGVzdDoKK1RF
U1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBOb3RoaW5nSGFwcGVucykgeworICBib29sIGZsYWcg
PSBmYWxzZTsKKyAgZmFjdG9yeV8tPlNldFBhcmFtZXRlcnMoZmFsc2UsIERlYXRoVGVzdDo6T1ZF
UlNFRV9URVNULCAwLCB0cnVlKTsKKyAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7Cisg
IEVYUEVDVF9GQUxTRShmbGFnKTsKKyAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5Bc3N1bWVSb2xl
Q2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+V2FpdENhbGxzKCkpOworICBFWFBF
Q1RfRVEoMFUsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKKyAgRVhQRUNUX0VRKDBVLCBmYWN0
b3J5Xy0+QWJvcnRDYWxscygpKTsKKyAgRVhQRUNUX0ZBTFNFKGZhY3RvcnlfLT5UZXN0RGVsZXRl
ZCgpKTsKK30KKworLy8gVGVzdCB0aGF0IHRoZSBwYXJlbnQgcHJvY2VzcyBkb2Vzbid0IHJ1biB0
aGUgZGVhdGggdGVzdCBjb2RlLAorLy8gYW5kIHRoYXQgdGhlIFBhc3NlZCBtZXRob2QgcmV0dXJu
cyBmYWxzZSB3aGVuIHRoZSAoc2ltdWxhdGVkKQorLy8gY2hpbGQgcHJvY2VzcyBleGl0cyB3aXRo
IHN0YXR1cyAwOgorVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxkRXhpdHNTdWNjZXNz
ZnVsbHkpIHsKKyAgYm9vbCBmbGFnID0gZmFsc2U7CisgIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJz
KHRydWUsIERlYXRoVGVzdDo6T1ZFUlNFRV9URVNULCAwLCB0cnVlKTsKKyAgRVhQRUNUX0RFQVRI
KGZsYWcgPSB0cnVlLCAiIik7CisgIEVYUEVDVF9GQUxTRShmbGFnKTsKKyAgRVhQRUNUX0VRKDEs
IGZhY3RvcnlfLT5Bc3N1bWVSb2xlQ2FsbHMoKSk7CisgIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+
V2FpdENhbGxzKCkpOworICBBU1NFUlRfRVEoMVUsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsK
KyAgRVhQRUNUX0ZBTFNFKGZhY3RvcnlfLT5QYXNzZWRBcmd1bWVudCgwKSk7CisgIEVYUEVDVF9F
USgwVSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7CisgIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5U
ZXN0RGVsZXRlZCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgUGFzc2VkIG1ldGhvZCB3YXMg
Z2l2ZW4gdGhlIGFyZ3VtZW50ICJ0cnVlIiB3aGVuCisvLyB0aGUgKHNpbXVsYXRlZCkgY2hpbGQg
cHJvY2VzcyBleGl0cyB3aXRoIHN0YXR1cyAxOgorVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3Qs
IENoaWxkRXhpdHNVbnN1Y2Nlc3NmdWxseSkgeworICBib29sIGZsYWcgPSBmYWxzZTsKKyAgZmFj
dG9yeV8tPlNldFBhcmFtZXRlcnModHJ1ZSwgRGVhdGhUZXN0OjpPVkVSU0VFX1RFU1QsIDEsIHRy
dWUpOworICBFWFBFQ1RfREVBVEgoZmxhZyA9IHRydWUsICIiKTsKKyAgRVhQRUNUX0ZBTFNFKGZs
YWcpOworICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKKyAgRVhQ
RUNUX0VRKDEsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7CisgIEFTU0VSVF9FUSgxVSwgZmFjdG9y
eV8tPlBhc3NlZENhbGxzKCkpOworICBFWFBFQ1RfVFJVRShmYWN0b3J5Xy0+UGFzc2VkQXJndW1l
bnQoMCkpOworICBFWFBFQ1RfRVEoMFUsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOworICBFWFBF
Q1RfVFJVRShmYWN0b3J5Xy0+VGVzdERlbGV0ZWQoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhl
IChzaW11bGF0ZWQpIGNoaWxkIHByb2Nlc3MgZXhlY3V0ZXMgdGhlIGRlYXRoIHRlc3QKKy8vIGNv
ZGUsIGFuZCBpcyBhYm9ydGVkIHdpdGggdGhlIGNvcnJlY3QgQWJvcnRSZWFzb24gaWYgaXQKKy8v
IGV4ZWN1dGVzIGEgcmV0dXJuIHN0YXRlbWVudC4KK1RFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0
LCBDaGlsZFBlcmZvcm1zUmV0dXJuKSB7CisgIGJvb2wgZmxhZyA9IGZhbHNlOworICBmYWN0b3J5
Xy0+U2V0UGFyYW1ldGVycyh0cnVlLCBEZWF0aFRlc3Q6OkVYRUNVVEVfVEVTVCwgMCwgdHJ1ZSk7
CisgIFJ1blJldHVybmluZ0RlYXRoVGVzdCgmZmxhZyk7CisgIEVYUEVDVF9UUlVFKGZsYWcpOwor
ICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKKyAgRVhQRUNUX0VR
KDAsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPlBh
c3NlZENhbGxzKCkpOworICBFWFBFQ1RfRVEoMVUsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOwor
ICBFWFBFQ1RfRVEoRGVhdGhUZXN0OjpURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQs
CisgICAgICAgICAgICBmYWN0b3J5Xy0+QWJvcnRBcmd1bWVudCgwKSk7CisgIEVYUEVDVF9UUlVF
KGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgKHNpbXVs
YXRlZCkgY2hpbGQgcHJvY2VzcyBpcyBhYm9ydGVkIHdpdGggdGhlCisvLyBjb3JyZWN0IEFib3J0
UmVhc29uIGlmIGl0IGRvZXMgbm90IGRpZS4KK1RFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBD
aGlsZERvZXNOb3REaWUpIHsKKyAgYm9vbCBmbGFnID0gZmFsc2U7CisgIGZhY3RvcnlfLT5TZXRQ
YXJhbWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6RVhFQ1VURV9URVNULCAwLCB0cnVlKTsKKyAgRVhQ
RUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7CisgIEVYUEVDVF9UUlVFKGZsYWcpOworICBFWFBF
Q1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKKyAgRVhQRUNUX0VRKDAsIGZh
Y3RvcnlfLT5XYWl0Q2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPlBhc3NlZENh
bGxzKCkpOworICAvLyBUaGlzIHRpbWUgdGhlcmUgYXJlIHR3byBjYWxscyB0byBBYm9ydDogb25l
IHNpbmNlIHRoZSB0ZXN0IGRpZG4ndAorICAvLyBkaWUsIGFuZCBhbm90aGVyIGZyb20gdGhlIFJl
dHVyblNlbnRpbmVsIHdoZW4gaXQncyBkZXN0cm95ZWQuICBUaGUKKyAgLy8gc2VudGluZWwgbm9y
bWFsbHkgaXNuJ3QgZGVzdHJveWVkIGlmIGEgdGVzdCBkb2Vzbid0IGRpZSwgc2luY2UKKyAgLy8g
X2V4aXQoMikgaXMgY2FsbGVkIGluIHRoYXQgY2FzZSBieSBGb3JraW5nRGVhdGhUZXN0LCBidXQg
bm90IGJ5CisgIC8vIG91ciBNb2NrRGVhdGhUZXN0LgorICBBU1NFUlRfRVEoMlUsIGZhY3Rvcnlf
LT5BYm9ydENhbGxzKCkpOworICBFWFBFQ1RfRVEoRGVhdGhUZXN0OjpURVNUX0RJRF9OT1RfRElF
LAorICAgICAgICAgICAgZmFjdG9yeV8tPkFib3J0QXJndW1lbnQoMCkpOworICBFWFBFQ1RfRVEo
RGVhdGhUZXN0OjpURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQsCisgICAgICAgICAg
ICBmYWN0b3J5Xy0+QWJvcnRBcmd1bWVudCgxKSk7CisgIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5U
ZXN0RGVsZXRlZCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIHN1Y2Nlc3NmdWwgZGVhdGggdGVz
dCBkb2VzIG5vdCByZWdpc3RlciBhIHN1Y2Nlc3NmdWwKKy8vIHRlc3QgcGFydC4KK1RFU1QoU3Vj
Y2Vzc1JlZ2lzdHJhdGlvbkRlYXRoVGVzdCwgTm9TdWNjZXNzUGFydCkgeworICBFWFBFQ1RfREVB
VEgoX2V4aXQoMSksICIiKTsKKyAgRVhQRUNUX0VRKDAsIEdldFVuaXRUZXN0SW1wbCgpLT5jdXJy
ZW50X3Rlc3RfcmVzdWx0KCktPnRvdGFsX3BhcnRfY291bnQoKSk7Cit9CisKK1RFU1QoU3RyZWFt
aW5nQXNzZXJ0aW9uc0RlYXRoVGVzdCwgRGVhdGhUZXN0KSB7CisgIEVYUEVDVF9ERUFUSChfZXhp
dCgxKSwgIiIpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOworICBBU1NFUlRfREVBVEgoX2V4aXQo
MSksICIiKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX0RFQVRIKF9leGl0KDApLCAiIikgPDwgImV4cGVj
dGVkIGZhaWx1cmUiOworICB9LCAiZXhwZWN0ZWQgZmFpbHVyZSIpOworICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfREVBVEgoX2V4aXQoMCksICIiKSA8PCAi
ZXhwZWN0ZWQgZmFpbHVyZSI7CisgIH0sICJleHBlY3RlZCBmYWlsdXJlIik7Cit9CisKKy8vIFRl
c3RzIHRoYXQgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24gcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcg
d2hlbiB0aGUKKy8vIGxhc3QgZXJyb3IgaXMgMCBhbmQgbm9uLWVtcHR5IHN0cmluZyB3aGVuIGl0
IGlzIG5vbi16ZXJvLgorVEVTVChHZXRMYXN0RXJybm9EZXNjcmlwdGlvbiwgR2V0TGFzdEVycm5v
RGVzY3JpcHRpb25Xb3JrcykgeworICBlcnJubyA9IEVOT0VOVDsKKyAgRVhQRUNUX1NUUk5FKCIi
LCBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpLmNfc3RyKCkpOworICBlcnJubyA9IDA7CisgIEVY
UEVDVF9TVFJFUSgiIiwgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKS5jX3N0cigpKTsKK30KKwor
IyBpZiBHVEVTVF9PU19XSU5ET1dTCitURVNUKEF1dG9IYW5kbGVUZXN0LCBBdXRvSGFuZGxlV29y
a3MpIHsKKyAgSEFORExFIGhhbmRsZSA9IDo6Q3JlYXRlRXZlbnQoTlVMTCwgRkFMU0UsIEZBTFNF
LCBOVUxMKTsKKyAgQVNTRVJUX05FKElOVkFMSURfSEFORExFX1ZBTFVFLCBoYW5kbGUpOworCisg
IC8vIFRlc3RzIHRoYXQgdGhlIEF1dG9IYW5kbGUgaXMgY29ycmVjdGx5IGluaXRpYWxpemVkIHdp
dGggYSBoYW5kbGUuCisgIHRlc3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxlIGF1dG9faGFuZGxl
KGhhbmRsZSk7CisgIEVYUEVDVF9FUShoYW5kbGUsIGF1dG9faGFuZGxlLkdldCgpKTsKKworICAv
LyBUZXN0cyB0aGF0IFJlc2V0IGFzc2lnbnMgSU5WQUxJRF9IQU5ETEVfVkFMVUUuCisgIC8vIE5v
dGUgdGhhdCB0aGlzIGNhbm5vdCB2ZXJpZnkgd2hldGhlciB0aGUgb3JpZ2luYWwgaGFuZGxlIGlz
IGNsb3NlZC4KKyAgYXV0b19oYW5kbGUuUmVzZXQoKTsKKyAgRVhQRUNUX0VRKElOVkFMSURfSEFO
RExFX1ZBTFVFLCBhdXRvX2hhbmRsZS5HZXQoKSk7CisKKyAgLy8gVGVzdHMgdGhhdCBSZXNldCBh
c3NpZ25zIHRoZSBuZXcgaGFuZGxlLgorICAvLyBOb3RlIHRoYXQgdGhpcyBjYW5ub3QgdmVyaWZ5
IHdoZXRoZXIgdGhlIG9yaWdpbmFsIGhhbmRsZSBpcyBjbG9zZWQuCisgIGhhbmRsZSA9IDo6Q3Jl
YXRlRXZlbnQoTlVMTCwgRkFMU0UsIEZBTFNFLCBOVUxMKTsKKyAgQVNTRVJUX05FKElOVkFMSURf
SEFORExFX1ZBTFVFLCBoYW5kbGUpOworICBhdXRvX2hhbmRsZS5SZXNldChoYW5kbGUpOworICBF
WFBFQ1RfRVEoaGFuZGxlLCBhdXRvX2hhbmRsZS5HZXQoKSk7CisKKyAgLy8gVGVzdHMgdGhhdCBB
dXRvSGFuZGxlIGNvbnRhaW5zIElOVkFMSURfSEFORExFX1ZBTFVFIGJ5IGRlZmF1bHQuCisgIHRl
c3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxlIGF1dG9faGFuZGxlMjsKKyAgRVhQRUNUX0VRKElO
VkFMSURfSEFORExFX1ZBTFVFLCBhdXRvX2hhbmRsZTIuR2V0KCkpOworfQorIyBlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUworCisjIGlmIEdURVNUX09TX1dJTkRPV1MKK3R5cGVkZWYgdW5zaWdu
ZWQgX19pbnQ2NCBCaWdnZXN0UGFyc2FibGU7Cit0eXBlZGVmIHNpZ25lZCBfX2ludDY0IEJpZ2dl
c3RTaWduZWRQYXJzYWJsZTsKKyMgZWxzZQordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgQmln
Z2VzdFBhcnNhYmxlOwordHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIEJpZ2dlc3RTaWduZWRQYXJz
YWJsZTsKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworLy8gV2UgY2Fubm90IHVzZSBz
dGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSBhcyBpdCBjbGFzaGVzIHdpdGggdGhlCisvLyBt
YXgoKSBtYWNybyBkZWZpbmVkIGJ5IDx3aW5kb3dzLmg+LgorY29uc3QgQmlnZ2VzdFBhcnNhYmxl
IGtCaWdnZXN0UGFyc2FibGVNYXggPSBVTExPTkdfTUFYOworY29uc3QgQmlnZ2VzdFNpZ25lZFBh
cnNhYmxlIGtCaWdnZXN0U2lnbmVkUGFyc2FibGVNYXggPSBMTE9OR19NQVg7CisKK1RFU1QoUGFy
c2VOYXR1cmFsTnVtYmVyVGVzdCwgUmVqZWN0c0ludmFsaWRGb3JtYXQpIHsKKyAgQmlnZ2VzdFBh
cnNhYmxlIHJlc3VsdCA9IDA7CisKKyAgLy8gUmVqZWN0cyBub24tbnVtYmVycy4KKyAgRVhQRUNU
X0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcigibm9uLW51bWJlciBzdHJpbmciLCAmcmVzdWx0KSk7
CisKKyAgLy8gUmVqZWN0cyBudW1iZXJzIHdpdGggd2hpdGVzcGFjZSBwcmVmaXguCisgIEVYUEVD
VF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoIiAxMjMiLCAmcmVzdWx0KSk7CisKKyAgLy8gUmVq
ZWN0cyBuZWdhdGl2ZSBudW1iZXJzLgorICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVy
KCItMTIzIiwgJnJlc3VsdCkpOworCisgIC8vIFJlamVjdHMgbnVtYmVycyBzdGFydGluZyB3aXRo
IGEgcGx1cyBzaWduLgorICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCIrMTIzIiwg
JnJlc3VsdCkpOworICBlcnJubyA9IDA7Cit9CisKK1RFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVz
dCwgUmVqZWN0c092ZXJmbG93bk51bWJlcnMpIHsKKyAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9
IDA7CisKKyAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcigiOTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTkiLCAmcmVzdWx0KSk7CisKKyAgc2lnbmVkIGNoYXIgY2hhcl9yZXN1bHQgPSAwOwor
ICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCIyMDAiLCAmY2hhcl9yZXN1bHQpKTsK
KyAgZXJybm8gPSAwOworfQorCitURVNUKFBhcnNlTmF0dXJhbE51bWJlclRlc3QsIEFjY2VwdHNW
YWxpZE51bWJlcnMpIHsKKyAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7CisKKyAgcmVzdWx0
ID0gMDsKKyAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKCIxMjMiLCAmcmVzdWx0KSk7
CisgIEVYUEVDVF9FUSgxMjNVLCByZXN1bHQpOworCisgIC8vIENoZWNrIDAgYXMgYW4gZWRnZSBj
YXNlLgorICByZXN1bHQgPSAxOworICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjAi
LCAmcmVzdWx0KSk7CisgIEVYUEVDVF9FUSgwVSwgcmVzdWx0KTsKKworICByZXN1bHQgPSAxOwor
ICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjAwMDAwIiwgJnJlc3VsdCkpOworICBF
WFBFQ1RfRVEoMFUsIHJlc3VsdCk7Cit9CisKK1RFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwg
QWNjZXB0c1R5cGVMaW1pdHMpIHsKKyAgTWVzc2FnZSBtc2c7CisgIG1zZyA8PCBrQmlnZ2VzdFBh
cnNhYmxlTWF4OworCisgIEJpZ2dlc3RQYXJzYWJsZSByZXN1bHQgPSAwOworICBFWFBFQ1RfVFJV
RShQYXJzZU5hdHVyYWxOdW1iZXIobXNnLkdldFN0cmluZygpLCAmcmVzdWx0KSk7CisgIEVYUEVD
VF9FUShrQmlnZ2VzdFBhcnNhYmxlTWF4LCByZXN1bHQpOworCisgIE1lc3NhZ2UgbXNnMjsKKyAg
bXNnMiA8PCBrQmlnZ2VzdFNpZ25lZFBhcnNhYmxlTWF4OworCisgIEJpZ2dlc3RTaWduZWRQYXJz
YWJsZSBzaWduZWRfcmVzdWx0ID0gMDsKKyAgRVhQRUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVy
KG1zZzIuR2V0U3RyaW5nKCksICZzaWduZWRfcmVzdWx0KSk7CisgIEVYUEVDVF9FUShrQmlnZ2Vz
dFNpZ25lZFBhcnNhYmxlTWF4LCBzaWduZWRfcmVzdWx0KTsKKworICBNZXNzYWdlIG1zZzM7Cisg
IG1zZzMgPDwgSU5UX01BWDsKKworICBpbnQgaW50X3Jlc3VsdCA9IDA7CisgIEVYUEVDVF9UUlVF
KFBhcnNlTmF0dXJhbE51bWJlcihtc2czLkdldFN0cmluZygpLCAmaW50X3Jlc3VsdCkpOworICBF
WFBFQ1RfRVEoSU5UX01BWCwgaW50X3Jlc3VsdCk7CisKKyAgTWVzc2FnZSBtc2c0OworICBtc2c0
IDw8IFVJTlRfTUFYOworCisgIHVuc2lnbmVkIGludCB1aW50X3Jlc3VsdCA9IDA7CisgIEVYUEVD
VF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihtc2c0LkdldFN0cmluZygpLCAmdWludF9yZXN1bHQp
KTsKKyAgRVhQRUNUX0VRKFVJTlRfTUFYLCB1aW50X3Jlc3VsdCk7Cit9CisKK1RFU1QoUGFyc2VO
YXR1cmFsTnVtYmVyVGVzdCwgV29ya3NGb3JTaG9ydGVySW50ZWdlcnMpIHsKKyAgc2hvcnQgc2hv
cnRfcmVzdWx0ID0gMDsKKyAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKCIxMjMiLCAm
c2hvcnRfcmVzdWx0KSk7CisgIEVYUEVDVF9FUSgxMjMsIHNob3J0X3Jlc3VsdCk7CisKKyAgc2ln
bmVkIGNoYXIgY2hhcl9yZXN1bHQgPSAwOworICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1i
ZXIoIjEyMyIsICZjaGFyX3Jlc3VsdCkpOworICBFWFBFQ1RfRVEoMTIzLCBjaGFyX3Jlc3VsdCk7
Cit9CisKKyMgaWYgR1RFU1RfT1NfV0lORE9XUworVEVTVChFbnZpcm9ubWVudFRlc3QsIEhhbmRs
ZUZpdHNJbnRvU2l6ZVQpIHsKKyAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHRlc3QgYWZ0ZXIgdGhp
cyBjb25kaXRpb24gaXMgdmVyaWZpZWQKKyAgLy8gaW4gYSBzdGF0aWMgYXNzZXJ0aW9uIGluIGd0
ZXN0LWRlYXRoLXRlc3QuY2MgaW4gdGhlIGZ1bmN0aW9uCisgIC8vIEdldFN0YXR1c0ZpbGVEZXNj
cmlwdG9yLgorICBBU1NFUlRfVFJVRShzaXplb2YoSEFORExFKSA8PSBzaXplb2Yoc2l6ZV90KSk7
Cit9CisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKy8vIFRlc3RzIHRoYXQgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRC9BU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEIHRyaWdnZXIKKy8v
IGZhaWx1cmVzIHdoZW4gZGVhdGggdGVzdHMgYXJlIGF2YWlsYWJsZSBvbiB0aGUgc3lzdGVtLgor
VEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zRGVhdGhUZXN0LCBFeHBlY3RzRGVhdGhXaGVuRGVh
dGhUZXN0c0F2YWlsYWJsZSkgeworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKERpZUluc2lk
ZSgiQ29uZERlYXRoVGVzdEV4cGVjdE1hY3JvIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImRlYXRoIGluc2lkZSBDb25kRGVhdGhUZXN0RXhwZWN0TWFjcm8iKTsKKyAgQVNTRVJUX0RF
QVRIX0lGX1NVUFBPUlRFRChEaWVJbnNpZGUoIkNvbmREZWF0aFRlc3RBc3NlcnRNYWNybyIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWF0aCBpbnNpZGUgQ29uZERlYXRoVGVzdEFz
c2VydE1hY3JvIik7CisKKyAgLy8gRW1wdHkgc3RhdGVtZW50IHdpbGwgbm90IGNyYXNoLCB3aGlj
aCBtdXN0IHRyaWdnZXIgYSBmYWlsdXJlLgorICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBF
Q1RfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKSwgIiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RShBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKSwgIiIpOworfQorCitURVNUKEluRGVh
dGhUZXN0Q2hpbGREZWF0aFRlc3QsIFJlcG9ydHNEZWF0aFRlc3RDb3JyZWN0bHlJbkZhc3RTdHls
ZSkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOwor
ICBFWFBFQ1RfRkFMU0UoSW5EZWF0aFRlc3RDaGlsZCgpKTsKKyAgRVhQRUNUX0RFQVRIKHsKKyAg
ICBmcHJpbnRmKHN0ZGVyciwgSW5EZWF0aFRlc3RDaGlsZCgpID8gIkluc2lkZSIgOiAiT3V0c2lk
ZSIpOworICAgIGZmbHVzaChzdGRlcnIpOworICAgIF9leGl0KDEpOworICB9LCAiSW5zaWRlIik7
Cit9CisKK1RFU1QoSW5EZWF0aFRlc3RDaGlsZERlYXRoVGVzdCwgUmVwb3J0c0RlYXRoVGVzdENv
cnJlY3RseUluVGhyZWFkU2FmZVN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhf
dGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7CisgIEVYUEVDVF9GQUxTRShJbkRlYXRoVGVzdENo
aWxkKCkpOworICBFWFBFQ1RfREVBVEgoeworICAgIGZwcmludGYoc3RkZXJyLCBJbkRlYXRoVGVz
dENoaWxkKCkgPyAiSW5zaWRlIiA6ICJPdXRzaWRlIik7CisgICAgZmZsdXNoKHN0ZGVycik7Cisg
ICAgX2V4aXQoMSk7CisgIH0sICJJbnNpZGUiKTsKK30KKworI2Vsc2UgIC8vICFHVEVTVF9IQVNf
REVBVEhfVEVTVCBmb2xsb3dzCisKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpDYXB0dXJlU3Rk
ZXJyOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldENhcHR1cmVkU3RkZXJyOworCisvLyBU
ZXN0cyB0aGF0IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQvQVNTRVJUX0RFQVRIX0lGX1NVUFBP
UlRFRCBhcmUgc3RpbGwKKy8vIGRlZmluZWQgYnV0IGRvIG5vdCB0cmlnZ2VyIGZhaWx1cmVzIHdo
ZW4gZGVhdGggdGVzdHMgYXJlIG5vdCBhdmFpbGFibGUgb24KKy8vIHRoZSBzeXN0ZW0uCitURVNU
KENvbmRpdGlvbmFsRGVhdGhNYWNyb3NUZXN0LCBXYXJuc1doZW5EZWF0aFRlc3RzTm90QXZhaWxh
YmxlKSB7CisgIC8vIEVtcHR5IHN0YXRlbWVudCB3aWxsIG5vdCBjcmFzaCwgYnV0IHRoYXQgc2hv
dWxkIG5vdCB0cmlnZ2VyIGEgZmFpbHVyZQorICAvLyB3aGVuIGRlYXRoIHRlc3RzIGFyZSBub3Qg
c3VwcG9ydGVkLgorICBDYXB0dXJlU3RkZXJyKCk7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JU
RUQoOywgIiIpOworICBzdGQ6OnN0cmluZyBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVycigpOwor
ICBBU1NFUlRfVFJVRShOVUxMICE9IHN0cnN0cihvdXRwdXQuY19zdHIoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMg
cGxhdGZvcm0iKSk7CisgIEFTU0VSVF9UUlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5jX3N0cigp
LCAiOyIpKTsKKworICAvLyBUaGUgc3RyZWFtZWQgbWVzc2FnZSBzaG91bGQgbm90IGJlIHByaW50
ZWQgYXMgdGhlcmUgaXMgbm8gdGVzdCBmYWlsdXJlLgorICBDYXB0dXJlU3RkZXJyKCk7CisgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIpIDw8ICJzdHJlYW1lZCBtZXNzYWdlIjsKKyAg
b3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKKyAgQVNTRVJUX1RSVUUoTlVMTCA9PSBzdHJz
dHIob3V0cHV0LmNfc3RyKCksICJzdHJlYW1lZCBtZXNzYWdlIikpOworCisgIENhcHR1cmVTdGRl
cnIoKTsKKyAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIik7ICAvLyBOT0xJTlQKKyAg
b3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKKyAgQVNTRVJUX1RSVUUoTlVMTCAhPSBzdHJz
dHIob3V0cHV0LmNfc3RyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWF0aCB0
ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikpOworICBBU1NFUlRfVFJV
RShOVUxMICE9IHN0cnN0cihvdXRwdXQuY19zdHIoKSwgIjsiKSk7CisKKyAgQ2FwdHVyZVN0ZGVy
cigpOworICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKSA8PCAic3RyZWFtZWQgbWVz
c2FnZSI7ICAvLyBOT0xJTlQKKyAgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKKyAgQVNT
RVJUX1RSVUUoTlVMTCA9PSBzdHJzdHIob3V0cHV0LmNfc3RyKCksICJzdHJlYW1lZCBtZXNzYWdl
IikpOworfQorCit2b2lkIEZ1bmNXaXRoQXNzZXJ0KGludCogbikgeworICBBU1NFUlRfREVBVEhf
SUZfU1VQUE9SVEVEKHJldHVybjssICIiKTsKKyAgKCpuKSsrOworfQorCisvLyBUZXN0cyB0aGF0
IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgZG9lcyBub3QgcmV0dXJuIGZyb20gdGhlIGN1cnJl
bnQKKy8vIGZ1bmN0aW9uIChhcyBBU1NFUlRfREVBVEggZG9lcykgaWYgZGVhdGggdGVzdHMgYXJl
IG5vdCBzdXBwb3J0ZWQuCitURVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NUZXN0LCBBc3NlcnRE
ZWF0RG9lc05vdFJldHVybmhJZlVuc3VwcG9ydGVkKSB7CisgIGludCBuID0gMDsKKyAgRnVuY1dp
dGhBc3NlcnQoJm4pOworICBFWFBFQ1RfRVEoMSwgbik7Cit9CisKKyNlbmRpZiAgLy8gIUdURVNU
X0hBU19ERUFUSF9URVNUCisKKy8vIFRlc3RzIHRoYXQgdGhlIGRlYXRoIHRlc3QgbWFjcm9zIGV4
cGFuZCB0byBjb2RlIHdoaWNoIG1heSBvciBtYXkgbm90CisvLyBiZSBmb2xsb3dlZCBieSBvcGVy
YXRvcjw8LCBhbmQgdGhhdCBpbiBlaXRoZXIgY2FzZSB0aGUgY29tcGxldGUgdGV4dAorLy8gY29t
cHJpc2VzIG9ubHkgYSBzaW5nbGUgQysrIHN0YXRlbWVudC4KKy8vCisvLyBUaGUgc3ludGF4IHNo
b3VsZCB3b3JrIHdoZXRoZXIgZGVhdGggdGVzdHMgYXJlIGF2YWlsYWJsZSBvciBub3QuCitURVNU
KENvbmRpdGlvbmFsRGVhdGhNYWNyb3NTeW50YXhEZWF0aFRlc3QsIFNpbmdsZVN0YXRlbWVudCkg
eworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICAvLyBUaGlzIHdvdWxkIGZhaWwgaWYgZXhlY3V0
ZWQ7IHRoaXMgaXMgYSBjb21waWxhdGlvbiB0ZXN0IG9ubHkKKyAgICBBU1NFUlRfREVBVEhfSUZf
U1VQUE9SVEVEKHJldHVybiwgIiIpOworCisgIGlmIChBbHdheXNUcnVlKCkpCisgICAgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRChfZXhpdCgxKSwgIiIpOworICBlbHNlCisgICAgLy8gVGhpcyBl
bXB0eSAiZWxzZSIgYnJhbmNoIGlzIG1lYW50IHRvIGVuc3VyZSB0aGF0IEVYUEVDVF9ERUFUSAor
ICAgIC8vIGRvZXNuJ3QgZXhwYW5kIGludG8gYW4gImlmIiBzdGF0ZW1lbnQgd2l0aG91dCBhbiAi
ZWxzZSIKKyAgICA7ICAvLyBOT0xJTlQKKworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICBBU1NF
UlRfREVBVEhfSUZfU1VQUE9SVEVEKHJldHVybiwgIiIpIDw8ICJkaWQgbm90IGRpZSI7CisKKyAg
aWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgOyAgLy8gTk9MSU5UCisgIGVsc2UKKyAgICBFWFBFQ1Rf
REVBVEhfSUZfU1VQUE9SVEVEKF9leGl0KDEpLCAiIikgPDwgMSA8PCAyIDw8IDM7Cit9CisKKy8v
IFRlc3RzIHRoYXQgY29uZGl0aW9uYWwgZGVhdGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUg
d2hpY2ggaW50ZXJhY3RzCisvLyB3ZWxsIHdpdGggc3dpdGNoIHN0YXRlbWVudHMuCitURVNUKENv
bmRpdGlvbmFsRGVhdGhNYWNyb3NTeW50YXhEZWF0aFRlc3QsIFN3aXRjaFN0YXRlbWVudCkgewor
ICAvLyBNaWNyb3NvZnQgY29tcGlsZXIgdXN1YWxseSBjb21wbGFpbnMgYWJvdXQgc3dpdGNoIHN0
YXRlbWVudHMgd2l0aG91dAorICAvLyBjYXNlIGxhYmVscy4gV2Ugc3VwcHJlc3MgdGhhdCB3YXJu
aW5nIGZvciB0aGlzIHRlc3QuCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQw
NjUpCisKKyAgc3dpdGNoICgwKQorICAgIGRlZmF1bHQ6CisgICAgICBBU1NFUlRfREVBVEhfSUZf
U1VQUE9SVEVEKF9leGl0KDEpLCAiIikKKyAgICAgICAgICA8PCAiZXhpdCBpbiBkZWZhdWx0IHN3
aXRjaCBoYW5kbGVyIjsKKworICBzd2l0Y2ggKDApCisgICAgY2FzZSAwOgorICAgICAgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRChfZXhpdCgxKSwgIiIpIDw8ICJleGl0IGluIHN3aXRjaCBjYXNl
IjsKKworICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKK30KKworLy8gVGVzdHMg
dGhhdCBhIHRlc3QgY2FzZSB3aG9zZSBuYW1lIGVuZHMgd2l0aCAiRGVhdGhUZXN0IiB3b3JrcyBm
aW5lCisvLyBvbiBXaW5kb3dzLgorVEVTVChOb3RBRGVhdGhUZXN0LCBUZXN0KSB7CisgIFNVQ0NF
RUQoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xl
dGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4Yjk0NzBmYzg4
YWQxN2FhZWI2NjRkNDdjMjcwY2ZjYWE3MzFiZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNjCkBA
IC0wLDAgKzEsOTIgQEAKKy8vIENvcHlyaWdodCAyMDEwLCBHb29nbGUgSW5jLgorLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworLy8KKy8vIFRlc3RzIHRoYXQgdmVyaWZ5IGludGVyYWN0aW9uIG9mIGV4Y2VwdGlvbnMg
YW5kIGRlYXRoIHRlc3RzLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisj
IGlmIEdURVNUX0hBU19TRUgKKyMgIGluY2x1ZGUgPHdpbmRvd3MuaD4gICAgICAgICAgLy8gRm9y
IFJhaXNlRXhjZXB0aW9uKCkuCisjIGVuZGlmCisKKyMgaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3Bp
LmgiCisKKyMgaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworIyAgaW5jbHVkZSA8ZXhjZXB0aW9u
PiAgLy8gRm9yIHN0ZDo6ZXhjZXB0aW9uLgorCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHJl
cG9ydCB0aHJvd24gZXhjZXB0aW9ucyBhcyBmYWlsdXJlcyBhbmQgdGhhdCB0aGUKKy8vIGV4Y2Vw
dGlvbnMgZG8gbm90IGVzY2FwZSBkZWF0aCB0ZXN0IG1hY3Jvcy4KK1RFU1QoQ3h4RXhjZXB0aW9u
RGVhdGhUZXN0LCBFeGNlcHRpb25Jc0ZhaWx1cmUpIHsKKyAgdHJ5IHsKKyAgICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgodGhyb3cgMSwgIiIpLCAidGhyZXcgYW4gZXhjZXB0
aW9uIik7CisgIH0gY2F0Y2ggKC4uLikgeyAgLy8gTk9MSU5UCisgICAgRkFJTCgpIDw8ICJBbiBl
eGNlcHRpb24gZXNjYXBlZCBhIGRlYXRoIHRlc3QgbWFjcm8gaW52b2NhdGlvbiAiCisgICAgICAg
ICAgIDw8ICJ3aXRoIGNhdGNoX2V4Y2VwdGlvbnMgIgorICAgICAgICAgICA8PCAodGVzdGluZzo6
R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpOwor
ICB9Cit9CisKK2NsYXNzIFRlc3RFeGNlcHRpb24gOiBwdWJsaWMgc3RkOjpleGNlcHRpb24gewor
IHB1YmxpYzoKKyAgdmlydHVhbCBjb25zdCBjaGFyKiB3aGF0KCkgY29uc3QgdGhyb3coKSB7IHJl
dHVybiAiZXhjZXB0aW9uYWwgbWVzc2FnZSI7IH0KK307CisKK1RFU1QoQ3h4RXhjZXB0aW9uRGVh
dGhUZXN0LCBQcmludHNNZXNzYWdlRm9yU3RkRXhjZXB0aW9ucykgeworICAvLyBWZXJpZmllcyB0
aGF0IHRoZSBleGNlcHRpb24gbWVzc2FnZSBpcyBxdW90ZWQgaW4gdGhlIGZhaWx1cmUgdGV4dC4K
KyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKHRocm93IFRlc3RFeGNlcHRp
b24oKSwgIiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0aW9uYWwgbWVzc2Fn
ZSIpOworICAvLyBWZXJpZmllcyB0aGF0IHRoZSBsb2NhdGlvbiBpcyBtZW50aW9uZWQgaW4gdGhl
IGZhaWx1cmUgdGV4dC4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKHRo
cm93IFRlc3RFeGNlcHRpb24oKSwgIiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZ29v
Z2xldGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MiKTsKK30KKyMgZW5kaWYgIC8vIEdURVNUX0hB
U19FWENFUFRJT05TCisKKyMgaWYgR1RFU1RfSEFTX1NFSAorLy8gVGVzdHMgdGhhdCBlbmFibGlu
ZyBpbnRlcmNlcHRpb24gb2YgU0VIIGV4Y2VwdGlvbnMgd2l0aCB0aGUKKy8vIGNhdGNoX2V4Y2Vw
dGlvbnMgZmxhZyBkb2VzIG5vdCBpbnRlcmZlcmUgd2l0aCBTRUggZXhjZXB0aW9ucyBiZWluZwor
Ly8gdHJlYXRlZCBhcyBkZWF0aCBieSBkZWF0aCB0ZXN0cy4KK1RFU1QoU2VoRXhjZXB0aW9uRGVh
c1Rlc3QsIENhdGNoRXhjZXB0aW9uc0RvZXNOb3RJbnRlcmZlcmUpIHsKKyAgRVhQRUNUX0RFQVRI
KFJhaXNlRXhjZXB0aW9uKDQyLCAweDAsIDAsIE5VTEwpLCAiIikKKyAgICAgIDw8ICJ3aXRoIGNh
dGNoX2V4Y2VwdGlvbnMgIgorICAgICAgPDwgKHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hfZXhj
ZXB0aW9ucykgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKK30KKyMgZW5kaWYKKworI2VuZGlm
ICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFy
Z3YpIHsKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICB0ZXN0aW5n
OjpHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpID0gR1RFU1RfRU5BQkxFX0NBVENIX0VYQ0VQ
VElPTlNfICE9IDA7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0LnB5IGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWVudi12YXItdGVzdC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMWVmZWVlMWVhYjhjNmRhY2I1ZDI5MjZmNGI1YzkwODA5MzhkYjEzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWVu
di12YXItdGVzdC5weQpAQCAtMCwwICsxLDExNyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
CisjIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworIiIiVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCBjb3JyZWN0
bHkgcGFyc2VzIGVudmlyb25tZW50IHZhcmlhYmxlcy4iIiIKKworaW1wb3J0IG9zCitpbXBvcnQg
Z3Rlc3RfdGVzdF91dGlscworCisKK0lTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdudCcKK0lTX0xJ
TlVYID0gb3MubmFtZSA9PSAncG9zaXgnIGFuZCBvcy51bmFtZSgpWzBdID09ICdMaW51eCcKKwor
Q09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdnb29nbGV0
ZXN0LWVudi12YXItdGVzdF8nKQorCitlbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkKKworCitk
ZWYgQXNzZXJ0RXEoZXhwZWN0ZWQsIGFjdHVhbCk6CisgIGlmIGV4cGVjdGVkICE9IGFjdHVhbDoK
KyAgICBwcmludCAnRXhwZWN0ZWQ6ICVzJyAlIChleHBlY3RlZCwpCisgICAgcHJpbnQgJyAgQWN0
dWFsOiAlcycgJSAoYWN0dWFsLCkKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCisKK2RlZiBT
ZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgorICAiIiJTZXRzIHRoZSBlbnYgdmFyaWFibGUgdG8g
J3ZhbHVlJzsgdW5zZXRzIGl0IHdoZW4gJ3ZhbHVlJyBpcyBOb25lLiIiIgorCisgIGlmIHZhbHVl
IGlzIG5vdCBOb25lOgorICAgIGVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQorICBlbGlmIGVudl92
YXIgaW4gZW52aXJvbjoKKyAgICBkZWwgZW52aXJvbltlbnZfdmFyXQorCisKK2RlZiBHZXRGbGFn
KGZsYWcpOgorICAiIiJSdW5zIGdvb2dsZXRlc3QtZW52LXZhci10ZXN0XyBhbmQgcmV0dXJucyBp
dHMgb3V0cHV0LiIiIgorCisgIGFyZ3MgPSBbQ09NTUFORF0KKyAgaWYgZmxhZyBpcyBub3QgTm9u
ZToKKyAgICBhcmdzICs9IFtmbGFnXQorICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9j
ZXNzKGFyZ3MsIGVudj1lbnZpcm9uKS5vdXRwdXQKKworCitkZWYgVGVzdEZsYWcoZmxhZywgdGVz
dF92YWwsIGRlZmF1bHRfdmFsKToKKyAgIiIiVmVyaWZpZXMgdGhhdCB0aGUgZ2l2ZW4gZmxhZyBp
cyBhZmZlY3RlZCBieSB0aGUgY29ycmVzcG9uZGluZyBlbnYgdmFyLiIiIgorCisgIGVudl92YXIg
PSAnR1RFU1RfJyArIGZsYWcudXBwZXIoKQorICBTZXRFbnZWYXIoZW52X3ZhciwgdGVzdF92YWwp
CisgIEFzc2VydEVxKHRlc3RfdmFsLCBHZXRGbGFnKGZsYWcpKQorICBTZXRFbnZWYXIoZW52X3Zh
ciwgTm9uZSkKKyAgQXNzZXJ0RXEoZGVmYXVsdF92YWwsIEdldEZsYWcoZmxhZykpCisKKworY2xh
c3MgR1Rlc3RFbnZWYXJUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorCisgIGRlZiB0
ZXN0RW52VmFyQWZmZWN0c0ZsYWcoc2VsZik6CisgICAgIiIiVGVzdHMgdGhhdCBlbnZpcm9ubWVu
dCB2YXJpYWJsZSBzaG91bGQgYWZmZWN0IHRoZSBjb3JyZXNwb25kaW5nIGZsYWcuIiIiCisKKyAg
ICBUZXN0RmxhZygnYnJlYWtfb25fZmFpbHVyZScsICcxJywgJzAnKQorICAgIFRlc3RGbGFnKCdj
b2xvcicsICd5ZXMnLCAnYXV0bycpCisgICAgVGVzdEZsYWcoJ2ZpbHRlcicsICdGb29UZXN0LkJh
cicsICcqJykKKyAgICBTZXRFbnZWYXIoJ1hNTF9PVVRQVVRfRklMRScsIE5vbmUpICAjIEZvciAn
b3V0cHV0JyB0ZXN0CisgICAgVGVzdEZsYWcoJ291dHB1dCcsICd4bWw6dG1wL2Zvby54bWwnLCAn
JykKKyAgICBUZXN0RmxhZygncHJpbnRfdGltZScsICcwJywgJzEnKQorICAgIFRlc3RGbGFnKCdy
ZXBlYXQnLCAnOTk5JywgJzEnKQorICAgIFRlc3RGbGFnKCd0aHJvd19vbl9mYWlsdXJlJywgJzEn
LCAnMCcpCisgICAgVGVzdEZsYWcoJ2RlYXRoX3Rlc3Rfc3R5bGUnLCAndGhyZWFkc2FmZScsICdm
YXN0JykKKyAgICBUZXN0RmxhZygnY2F0Y2hfZXhjZXB0aW9ucycsICcwJywgJzEnKQorCisgICAg
aWYgSVNfTElOVVg6CisgICAgICBUZXN0RmxhZygnZGVhdGhfdGVzdF91c2VfZm9yaycsICcxJywg
JzAnKQorICAgICAgVGVzdEZsYWcoJ3N0YWNrX3RyYWNlX2RlcHRoJywgJzAnLCAnMTAwJykKKwor
CisgIGRlZiB0ZXN0WG1sT3V0cHV0RmlsZShzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0ICRYTUxf
T1VUUFVUX0ZJTEUgYWZmZWN0cyB0aGUgb3V0cHV0IGZsYWcuIiIiCisKKyAgICBTZXRFbnZWYXIo
J0dURVNUX09VVFBVVCcsIE5vbmUpCisgICAgU2V0RW52VmFyKCdYTUxfT1VUUFVUX0ZJTEUnLCAn
dG1wL2Jhci54bWwnKQorICAgIEFzc2VydEVxKCd4bWw6dG1wL2Jhci54bWwnLCBHZXRGbGFnKCdv
dXRwdXQnKSkKKworICBkZWYgdGVzdFhtbE91dHB1dEZpbGVPdmVycmlkZShzZWxmKToKKyAgICAi
IiJUZXN0cyB0aGF0ICRYTUxfT1VUUFVUX0ZJTEUgaXMgb3ZlcnJpZGRlbiBieSAkR1RFU1RfT1VU
UFVULiIiIgorCisgICAgU2V0RW52VmFyKCdHVEVTVF9PVVRQVVQnLCAneG1sOnRtcC9mb28ueG1s
JykKKyAgICBTZXRFbnZWYXIoJ1hNTF9PVVRQVVRfRklMRScsICd0bXAvYmFyLnhtbCcpCisgICAg
QXNzZXJ0RXEoJ3htbDp0bXAvZm9vLnhtbCcsIEdldEZsYWcoJ291dHB1dCcpKQorCitpZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWVudi12YXItdGVzdF8u
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0
Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mZDJhYTgyZjc0ZmFhMjEyMDFlNzlhZTBlNWMzYjU2ODU1M2RmMzM3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LWVudi12YXItdGVzdF8uY2MKQEAgLTAsMCArMSwxMjIgQEAKKy8vIENvcHlyaWdodCAyMDA4
LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBBIGhlbHBlciBwcm9ncmFtIGZvciB0
ZXN0aW5nIHRoYXQgR29vZ2xlIFRlc3QgcGFyc2VzIHRoZSBlbnZpcm9ubWVudAorLy8gdmFyaWFi
bGVzIGNvcnJlY3RseS4KKworI2luY2x1ZGUgPGlvc3RyZWFtPgorCisjaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3QuaCIKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCisKK3VzaW5nIDo6
c3RkOjpjb3V0OworCituYW1lc3BhY2UgdGVzdGluZyB7CisKKy8vIFRoZSBwdXJwb3NlIG9mIHRo
aXMgaXMgdG8gbWFrZSB0aGUgdGVzdCBtb3JlIHJlYWxpc3RpYyBieSBlbnN1cmluZworLy8gdGhh
dCB0aGUgVW5pdFRlc3Qgc2luZ2xldG9uIGlzIGNyZWF0ZWQgYmVmb3JlIG1haW4oKSBpcyBlbnRl
cmVkLgorLy8gV2UgZG9uJ3QgYWN0dWFsIHJ1biB0aGUgVEVTVCBpdHNlbGYuCitURVNUKEdUZXN0
RW52VmFyVGVzdCwgRHVtbXkpIHsKK30KKwordm9pZCBQcmludEZsYWcoY29uc3QgY2hhciogZmxh
ZykgeworICBpZiAoc3RyY21wKGZsYWcsICJicmVha19vbl9mYWlsdXJlIikgPT0gMCkgeworICAg
IGNvdXQgPDwgR1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJlKTsKKyAgICByZXR1cm47CisgIH0K
KworICBpZiAoc3RyY21wKGZsYWcsICJjYXRjaF9leGNlcHRpb25zIikgPT0gMCkgeworICAgIGNv
dXQgPDwgR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKTsKKyAgICByZXR1cm47CisgIH0KKwor
ICBpZiAoc3RyY21wKGZsYWcsICJjb2xvciIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZM
QUcoY29sb3IpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgImRlYXRo
X3Rlc3Rfc3R5bGUiKSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rf
c3R5bGUpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgImRlYXRoX3Rl
c3RfdXNlX2ZvcmsiKSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rf
dXNlX2ZvcmspOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgImZpbHRl
ciIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZMQUcoZmlsdGVyKTsKKyAgICByZXR1cm47
CisgIH0KKworICBpZiAoc3RyY21wKGZsYWcsICJvdXRwdXQiKSA9PSAwKSB7CisgICAgY291dCA8
PCBHVEVTVF9GTEFHKG91dHB1dCk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChm
bGFnLCAicHJpbnRfdGltZSIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZMQUcocHJpbnRf
dGltZSk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChmbGFnLCAicmVwZWF0Iikg
PT0gMCkgeworICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhyZXBlYXQpOworICAgIHJldHVybjsKKyAg
fQorCisgIGlmIChzdHJjbXAoZmxhZywgInN0YWNrX3RyYWNlX2RlcHRoIikgPT0gMCkgeworICAg
IGNvdXQgPDwgR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCk7CisgICAgcmV0dXJuOworICB9
CisKKyAgaWYgKHN0cmNtcChmbGFnLCAidGhyb3dfb25fZmFpbHVyZSIpID09IDApIHsKKyAgICBj
b3V0IDw8IEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSk7CisgICAgcmV0dXJuOworICB9CisK
KyAgY291dCA8PCAiSW52YWxpZCBmbGFnIG5hbWUgIiA8PCBmbGFnCisgICAgICAgPDwgIi4gIFZh
bGlkIG5hbWVzIGFyZSBicmVha19vbl9mYWlsdXJlLCBjb2xvciwgZmlsdGVyLCBldGMuXG4iOwor
ICBleGl0KDEpOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFy
Z3YpOworCisgIGlmIChhcmdjICE9IDIpIHsKKyAgICBjb3V0IDw8ICJVc2FnZTogZ29vZ2xldGVz
dC1lbnYtdmFyLXRlc3RfIE5BTUVfT0ZfRkxBR1xuIjsKKyAgICByZXR1cm4gMTsKKyAgfQorCisg
IHRlc3Rpbmc6OlByaW50RmxhZyhhcmd2WzFdKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZmlsZXBhdGgtdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1maWxlcGF0aC10ZXN0
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM3ZjAyZmI0YmQ3Nzk3ZDE0ZDM4M2EwNWZhMTk3YzM2YjMxODI1ZjIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtZmlsZXBhdGgtdGVzdC5jYwpAQCAtMCwwICsxLDY1MSBAQAorLy8gQ29weXJpZ2h0IDIwMDgs
IEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEdvb2dsZSBUZXN0IGZpbGVwYXRoIHV0
aWxpdGllcworLy8KKy8vIFRoaXMgZmlsZSB0ZXN0cyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdXNl
ZCBpbnRlcm5hbGx5IGJ5CisvLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hh
bmdlIHdpdGhvdXQgbm90aWNlLgorLy8KKy8vIFRoaXMgZmlsZSBpcyAjaW5jbHVkZWQgZnJvbSBn
dGVzdC1pbnRlcm5hbC5oLgorLy8gRG8gbm90ICNpbmNsdWRlIHRoaXMgZmlsZSBhbnl3aGVyZSBl
bHNlIQorCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCIKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIK
KworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGluY2x1ZGUgPHdpbmRvd3MuaD4gIC8v
IE5PTElOVAorI2VsaWYgR1RFU1RfT1NfV0lORE9XUworIyBpbmNsdWRlIDxkaXJlY3QuaD4gIC8v
IE5PTElOVAorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCituYW1lc3BhY2Ug
dGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKworI2lmIEdURVNU
X09TX1dJTkRPV1NfTU9CSUxFCisvLyBGSVhNRTogTW92ZSB0aGVzZSB0byB0aGUgUE9TSVggYWRh
cHRlciBzZWN0aW9uIGluCisvLyBndGVzdC1wb3J0LmguCisKKy8vIFdpbmRvd3MgQ0UgZG9lc24n
dCBoYXZlIHRoZSByZW1vdmUgQyBmdW5jdGlvbi4KK2ludCByZW1vdmUoY29uc3QgY2hhciogcGF0
aCkgeworICBMUENXU1RSIHdwYXRoID0gU3RyaW5nOjpBbnNpVG9VdGYxNihwYXRoKTsKKyAgaW50
IHJldCA9IERlbGV0ZUZpbGUod3BhdGgpID8gMCA6IC0xOworICBkZWxldGUgW10gd3BhdGg7Cisg
IHJldHVybiByZXQ7Cit9CisvLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSB0aGUgX3JtZGlyIEMg
ZnVuY3Rpb24uCitpbnQgX3JtZGlyKGNvbnN0IGNoYXIqIHBhdGgpIHsKKyAgRmlsZVBhdGggZmls
ZXBhdGgocGF0aCk7CisgIExQQ1dTVFIgd3BhdGggPSBTdHJpbmc6OkFuc2lUb1V0ZjE2KAorICAg
ICAgZmlsZXBhdGguUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7CisgIGlu
dCByZXQgPSBSZW1vdmVEaXJlY3Rvcnkod3BhdGgpID8gMCA6IC0xOworICBkZWxldGUgW10gd3Bh
dGg7CisgIHJldHVybiByZXQ7Cit9CisKKyNlbHNlCisKK1RFU1QoR2V0Q3VycmVudERpclRlc3Qs
IFJldHVybnNDdXJyZW50RGlyKSB7CisgIGNvbnN0IEZpbGVQYXRoIG9yaWdpbmFsX2RpciA9IEZp
bGVQYXRoOjpHZXRDdXJyZW50RGlyKCk7CisgIEVYUEVDVF9GQUxTRShvcmlnaW5hbF9kaXIuSXNF
bXB0eSgpKTsKKworICBwb3NpeDo6Q2hEaXIoR1RFU1RfUEFUSF9TRVBfKTsKKyAgY29uc3QgRmls
ZVBhdGggY3dkID0gRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKTsKKyAgcG9zaXg6OkNoRGlyKG9y
aWdpbmFsX2Rpci5jX3N0cigpKTsKKworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisKKyAgLy8gU2tp
cHMgdGhlICI6Ii4KKyAgY29uc3QgY2hhciogY29uc3QgY3dkX3dpdGhvdXRfZHJpdmUgPSBzdHJj
aHIoY3dkLmNfc3RyKCksICc6Jyk7CisgIEFTU0VSVF9UUlVFKGN3ZF93aXRob3V0X2RyaXZlICE9
IE5VTEwpOworICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLCBjd2Rfd2l0aG91dF9kcml2
ZSArIDEpOworCisjIGVsc2UKKworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfLCBjd2Quc3Ry
aW5nKCkpOworCisjIGVuZGlmCit9CisKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKKworVEVTVChJc0VtcHR5VGVzdCwgUmV0dXJuc1RydWVGb3JFbXB0eVBhdGgpIHsKKyAgRVhQ
RUNUX1RSVUUoRmlsZVBhdGgoIiIpLklzRW1wdHkoKSk7Cit9CisKK1RFU1QoSXNFbXB0eVRlc3Qs
IFJldHVybnNGYWxzZUZvck5vbkVtcHR5UGF0aCkgeworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgo
ImEiKS5Jc0VtcHR5KCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIi4iKS5Jc0VtcHR5KCkp
OworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImEvYiIpLklzRW1wdHkoKSk7CisgIEVYUEVDVF9G
QUxTRShGaWxlUGF0aCgiYVxcYlxcIikuSXNFbXB0eSgpKTsKK30KKworLy8gUmVtb3ZlRGlyZWN0
b3J5TmFtZSAiIiAtPiAiIgorVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgV2hlbkVtcHR5
TmFtZSkgeworICBFWFBFQ1RfRVEoIiIsIEZpbGVQYXRoKCIiKS5SZW1vdmVEaXJlY3RvcnlOYW1l
KCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZmlsZSIgLT4gImFm
aWxlIgorVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgQnV0Tm9EaXJlY3RvcnkpIHsKKyAg
RVhQRUNUX0VRKCJhZmlsZSIsCisgICAgICBGaWxlUGF0aCgiYWZpbGUiKS5SZW1vdmVEaXJlY3Rv
cnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lICIvYWZpbGUi
IC0+ICJhZmlsZSIKK1RFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFJvb3RGaWxlU2hvdWxk
R2l2ZUZpbGVOYW1lKSB7CisgIEVYUEVDVF9FUSgiYWZpbGUiLAorICAgICAgRmlsZVBhdGgoR1RF
U1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9
CisKKy8vIFJlbW92ZURpcmVjdG9yeU5hbWUgImFkaXIvIiAtPiAiIgorVEVTVChSZW1vdmVEaXJl
Y3RvcnlOYW1lVGVzdCwgV2hlcmVUaGVyZUlzTm9GaWxlTmFtZSkgeworICBFWFBFQ1RfRVEoIiIs
CisgICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfKS5SZW1vdmVEaXJlY3RvcnlO
YW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZGlyL2FmaWxl
IiAtPiAiYWZpbGUiCitURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRHaXZlRmls
ZU5hbWUpIHsKKyAgRVhQRUNUX0VRKCJhZmlsZSIsCisgICAgICBGaWxlUGF0aCgiYWRpciIgR1RF
U1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9
CisKKy8vIFJlbW92ZURpcmVjdG9yeU5hbWUgImFkaXIvc3ViZGlyL2FmaWxlIiAtPiAiYWZpbGUi
CitURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRBbHNvR2l2ZUZpbGVOYW1lKSB7
CisgIEVYUEVDVF9FUSgiYWZpbGUiLAorICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhf
U0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikKKyAgICAgIC5SZW1vdmVEaXJl
Y3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisjaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8K
KworLy8gVGVzdHMgdGhhdCBSZW1vdmVEaXJlY3RvcnlOYW1lKCkgd29ya3Mgd2l0aCB0aGUgYWx0
ZXJuYXRlIHNlcGFyYXRvcgorLy8gb24gV2luZG93cy4KKworLy8gUmVtb3ZlRGlyZWN0b3J5TmFt
ZSgiL2FmaWxlIikgLT4gImFmaWxlIgorVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgUm9v
dEZpbGVTaG91bGRHaXZlRmlsZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNU
X0VRKCJhZmlsZSIsIEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3Ry
aW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCJhZGlyLyIpIC0+ICIiCitURVNU
KFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBXaGVyZVRoZXJlSXNOb0ZpbGVOYW1lRm9yQWx0ZXJu
YXRlU2VwYXJhdG9yKSB7CisgIEVYUEVDVF9FUSgiIiwgRmlsZVBhdGgoImFkaXIvIikuUmVtb3Zl
RGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgi
YWRpci9hZmlsZSIpIC0+ICJhZmlsZSIKK1RFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNo
b3VsZEdpdmVGaWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEoImFm
aWxlIiwgRmlsZVBhdGgoImFkaXIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5n
KCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCJhZGlyL3N1YmRpci9hZmlsZSIpIC0+
ICJhZmlsZSIKK1RFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEFsc29HaXZlRmls
ZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNUX0VRKCJhZmlsZSIsCisgICAg
ICAgICAgICBGaWxlUGF0aCgiYWRpci9zdWJkaXIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1l
KCkuc3RyaW5nKCkpOworfQorCisjZW5kaWYKKworLy8gUmVtb3ZlRmlsZU5hbWUgIiIgLT4gIi4v
IgorVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEVtcHR5TmFtZSkgeworI2lmIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCisgIC8vIE9uIFdpbmRvd3MgQ0UsIHdlIHVzZSB0aGUgcm9vdCBhcyB0aGUg
Y3VycmVudCBkaXJlY3RvcnkuCisgIEVYUEVDVF9FUShHVEVTVF9QQVRIX1NFUF8sIEZpbGVQYXRo
KCIiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKKyNlbHNlCisgIEVYUEVDVF9FUSgiLiIg
R1RFU1RfUEFUSF9TRVBfLCBGaWxlUGF0aCgiIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7
CisjZW5kaWYKK30KKworLy8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvIiAtPiAiYWRpci8iCitURVNU
KFJlbW92ZUZpbGVOYW1lVGVzdCwgQnV0Tm9GaWxlKSB7CisgIEVYUEVDVF9FUSgiYWRpciIgR1RF
U1RfUEFUSF9TRVBfLAorICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXykuUmVt
b3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZUZpbGVOYW1lICJhZGlyL2Fm
aWxlIiAtPiAiYWRpci8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNEaXJOYW1lKSB7
CisgIEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBh
dGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmlu
ZygpKTsKK30KKworLy8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvc3ViZGlyL2FmaWxlIiAtPiAiYWRp
ci9zdWJkaXIvIgorVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzRGlyQW5kU3ViRGlyTmFt
ZSkgeworICBFWFBFQ1RfRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9Q
QVRIX1NFUF8sCisgICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIi
IEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKQorICAgICAgLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5n
KCkpOworfQorCisvLyBSZW1vdmVGaWxlTmFtZSAiL2FmaWxlIiAtPiAiLyIKK1RFU1QoUmVtb3Zl
RmlsZU5hbWVUZXN0LCBHaXZlc1Jvb3REaXIpIHsKKyAgRVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQ
XywKKyAgICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1vdmVGaWxlTmFt
ZSgpLnN0cmluZygpKTsKK30KKworI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCisKKy8vIFRl
c3RzIHRoYXQgUmVtb3ZlRmlsZU5hbWUoKSB3b3JrcyB3aXRoIHRoZSBhbHRlcm5hdGUgc2VwYXJh
dG9yIG9uCisvLyBXaW5kb3dzLgorCisvLyBSZW1vdmVGaWxlTmFtZSgiYWRpci8iKSAtPiAiYWRp
ci8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgQnV0Tm9GaWxlRm9yQWx0ZXJuYXRlU2VwYXJh
dG9yKSB7CisgIEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAg
RmlsZVBhdGgoImFkaXIvIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJl
bW92ZUZpbGVOYW1lKCJhZGlyL2FmaWxlIikgLT4gImFkaXIvIgorVEVTVChSZW1vdmVGaWxlTmFt
ZVRlc3QsIEdpdmVzRGlyTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEo
ImFkaXIiIEdURVNUX1BBVEhfU0VQXywKKyAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL2FmaWxl
IikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZUZpbGVOYW1lKCJh
ZGlyL3N1YmRpci9hZmlsZSIpIC0+ICJhZGlyL3N1YmRpci8iCitURVNUKFJlbW92ZUZpbGVOYW1l
VGVzdCwgR2l2ZXNEaXJBbmRTdWJEaXJOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7CisgIEVY
UEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXywK
KyAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL3N1YmRpci9hZmlsZSIpLlJlbW92ZUZpbGVOYW1l
KCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVGaWxlTmFtZSgiL2FmaWxlIikgLT4gIlwiCitU
RVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNSb290RGlyRm9yQWx0ZXJuYXRlU2VwYXJhdG9y
KSB7CisgIEVYUEVDVF9FUShHVEVTVF9QQVRIX1NFUF8sIEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1v
dmVGaWxlTmFtZSgpLnN0cmluZygpKTsKK30KKworI2VuZGlmCisKK1RFU1QoTWFrZUZpbGVOYW1l
VGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVySXNaZXJvKSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZp
bGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoImZvbyIpLCBGaWxlUGF0aCgiYmFyIiksCisg
ICAgICAwLCAieG1sIik7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54
bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVy
YXRlRmlsZU5hbWVOdW1iZXJHdFplcm8pIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6
Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiksIEZpbGVQYXRoKCJiYXIiKSwKKyAgICAgIDEy
LCAieG1sIik7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhcl8xMi54bWwi
LCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRl
RmlsZU5hbWVXaXRoU2xhc2hOdW1iZXJJc1plcm8pIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmls
ZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAorICAg
ICAgRmlsZVBhdGgoImJhciIpLCAwLCAieG1sIik7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKE1ha2VGaWxl
TmFtZVRlc3QsIEdlbmVyYXRlRmlsZU5hbWVXaXRoU2xhc2hOdW1iZXJHdFplcm8pIHsKKyAgRmls
ZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiBHVEVT
VF9QQVRIX1NFUF8pLAorICAgICAgRmlsZVBhdGgoImJhciIpLCAxMiwgInhtbCIpOworICBFWFBF
Q1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXJfMTIueG1sIiwgYWN0dWFsLnN0cmluZygp
KTsKK30KKworVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZVdoZW5OdW1iZXJJc1plcm9B
bmREaXJJc0VtcHR5KSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5h
bWUoRmlsZVBhdGgoIiIpLCBGaWxlUGF0aCgiYmFyIiksCisgICAgICAwLCAieG1sIik7CisgIEVY
UEVDVF9FUSgiYmFyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoTWFrZUZpbGVO
YW1lVGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVySXNOb3RaZXJvQW5kRGlySXNFbXB0eSkgeworICBG
aWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCIiKSwgRmls
ZVBhdGgoImJhciIpLAorICAgICAgMTQsICJ4bWwiKTsKKyAgRVhQRUNUX0VRKCJiYXJfMTQueG1s
IiwgYWN0dWFsLnN0cmluZygpKTsKK30KKworVEVTVChDb25jYXRQYXRoc1Rlc3QsIFdvcmtzV2hl
bkRpckRvZXNOb3RFbmRXaXRoUGF0aFNlcCkgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0
aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJhci54bWwiKSk7CisgIEVYUEVDVF9FUSgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNU
KENvbmNhdFBhdGhzVGVzdCwgV29ya3NXaGVuUGF0aDFFbmRzV2l0aFBhdGhTZXApIHsKKyAgRmls
ZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iIEdURVNU
X1BBVEhfU0VQXyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
aWxlUGF0aCgiYmFyLnhtbCIpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAi
YmFyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoQ29uY2F0UGF0aHNUZXN0LCBQ
YXRoMUJlaW5nRW1wdHkpIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBh
dGhzKEZpbGVQYXRoKCIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZpbGVQYXRoKCJiYXIueG1sIikpOworICBFWFBFQ1RfRVEoImJhci54bWwiLCBhY3R1YWwu
c3RyaW5nKCkpOworfQorCitURVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDJCZWluZ0VtcHR5KSB7
CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9v
IiksIEZpbGVQYXRoKCIiKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sIGFj
dHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoQ29uY2F0UGF0aHNUZXN0LCBCb3RoUGF0aEJlaW5n
RW1wdHkpIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQ
YXRoKCIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQ
YXRoKCIiKSk7CisgIEVYUEVDVF9FUSgiIiwgYWN0dWFsLnN0cmluZygpKTsKK30KKworVEVTVChD
b25jYXRQYXRoc1Rlc3QsIFBhdGgxQ29udGFpbnNQYXRoU2VwKSB7CisgIEZpbGVQYXRoIGFjdHVh
bCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8g
ImJhciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBh
dGgoImZvb2Jhci54bWwiKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJh
ciIgR1RFU1RfUEFUSF9TRVBfICJmb29iYXIueG1sIiwKKyAgICAgICAgICAgIGFjdHVhbC5zdHJp
bmcoKSk7Cit9CisKK1RFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMkNvbnRhaW5zUGF0aFNlcCkg
eworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoCisgICAgICBGaWxl
UGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAorICAgICAgRmlsZVBhdGgoImJhciIgR1RFU1Rf
UEFUSF9TRVBfICJiYXIueG1sIikpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBf
ICJiYXIiIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsCisgICAgICAgICAgICBhY3R1YWwuc3Ry
aW5nKCkpOworfQorCitURVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDJFbmRzV2l0aFBhdGhTZXAp
IHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJm
b28iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRo
KCJiYXIiIEdURVNUX1BBVEhfU0VQXykpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9T
RVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXywgYWN0dWFsLnN0cmluZygpKTsKK30KKworLy8gUmVt
b3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICIiIC0+ICIiCitURVNUKFJlbW92ZVRyYWlsaW5nUGF0
aFNlcGFyYXRvclRlc3QsIEVtcHR5U3RyaW5nKSB7CisgIEVYUEVDVF9FUSgiIiwgRmlsZVBhdGgo
IiIpLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKK30KKworLy8gUmVt
b3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28iIC0+ICJmb28iCitURVNUKFJlbW92ZVRyYWls
aW5nUGF0aFNlcGFyYXRvclRlc3QsIEZpbGVOb1NsYXNoU3RyaW5nKSB7CisgIEVYUEVDVF9FUSgi
Zm9vIiwgRmlsZVBhdGgoImZvbyIpLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmlu
ZygpKTsKK30KKworLy8gUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28vIiAtPiAiZm9v
IgorVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBTaG91bGRSZW1vdmVUcmFp
bGluZ1NlcGFyYXRvcikgeworICBFWFBFQ1RfRVEoImZvbyIsCisgICAgICBGaWxlUGF0aCgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8pLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygp
KTsKKyNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXworICBFWFBFQ1RfRVEoImZvbyIsIEZpbGVQ
YXRoKCJmb28vIikuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuc3RyaW5nKCkpOworI2Vu
ZGlmCit9CisKKy8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiZm9vL2Jhci8iIC0+ICJm
b28vYmFyLyIKK1RFU1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgU2hvdWxkUmVt
b3ZlTGFzdFNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJi
YXIiLAorICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdU
RVNUX1BBVEhfU0VQXykKKyAgICAgICAgICAgICAgICAuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJh
dG9yKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IgImZv
by9iYXIiIC0+ICJmb28vYmFyIgorVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0
LCBTaG91bGRSZXR1cm5Vbm1vZGlmaWVkKSB7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRI
X1NFUF8gImJhciIsCisgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8g
ImJhciIpCisgICAgICAgICAgICAgICAgLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0
cmluZygpKTsKK30KKworVEVTVChEaXJlY3RvcnlUZXN0LCBSb290RGlyZWN0b3J5RXhpc3RzKSB7
CisjaWYgR1RFU1RfT1NfV0lORE9XUyAgLy8gV2UgYXJlIG9uIFdpbmRvd3MuCisgIGNoYXIgY3Vy
cmVudF9kcml2ZVtfTUFYX1BBVEhdOyAgLy8gTk9MSU5UCisgIGN1cnJlbnRfZHJpdmVbMF0gPSBz
dGF0aWNfY2FzdDxjaGFyPihfZ2V0ZHJpdmUoKSArICdBJyAtIDEpOworICBjdXJyZW50X2RyaXZl
WzFdID0gJzonOworICBjdXJyZW50X2RyaXZlWzJdID0gJ1xcJzsKKyAgY3VycmVudF9kcml2ZVsz
XSA9ICdcMCc7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKGN1cnJlbnRfZHJpdmUpLkRpcmVjdG9y
eUV4aXN0cygpKTsKKyNlbHNlCisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIvIikuRGlyZWN0b3J5
RXhpc3RzKCkpOworI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCit9CisKKyNpZiBHVEVTVF9P
U19XSU5ET1dTCitURVNUKERpcmVjdG9yeVRlc3QsIFJvb3RPZldyb25nRHJpdmVEb2VzTm90RXhp
c3RzKSB7CisgIGNvbnN0IGludCBzYXZlZF9kcml2ZV8gPSBfZ2V0ZHJpdmUoKTsKKyAgLy8gRmlu
ZCBhIGRyaXZlIHRoYXQgZG9lc24ndCBleGlzdC4gU3RhcnQgd2l0aCAnWicgdG8gYXZvaWQgY29t
bW9uIG9uZXMuCisgIGZvciAoY2hhciBkcml2ZSA9ICdaJzsgZHJpdmUgPj0gJ0EnOyBkcml2ZS0t
KQorICAgIGlmIChfY2hkcml2ZShkcml2ZSAtICdBJyArIDEpID09IC0xKSB7CisgICAgICBjaGFy
IG5vbl9kcml2ZVtfTUFYX1BBVEhdOyAgLy8gTk9MSU5UCisgICAgICBub25fZHJpdmVbMF0gPSBk
cml2ZTsKKyAgICAgIG5vbl9kcml2ZVsxXSA9ICc6JzsKKyAgICAgIG5vbl9kcml2ZVsyXSA9ICdc
XCc7CisgICAgICBub25fZHJpdmVbM10gPSAnXDAnOworICAgICAgRVhQRUNUX0ZBTFNFKEZpbGVQ
YXRoKG5vbl9kcml2ZSkuRGlyZWN0b3J5RXhpc3RzKCkpOworICAgICAgYnJlYWs7CisgICAgfQor
ICBfY2hkcml2ZShzYXZlZF9kcml2ZV8pOworfQorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dT
CisKKyNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKy8vIFdpbmRvd3MgQ0UgX2RvZXNfIGNv
bnNpZGVyIGFuIGVtcHR5IGRpcmVjdG9yeSB0byBleGlzdC4KK1RFU1QoRGlyZWN0b3J5VGVzdCwg
RW1wdHlQYXRoRGlyZWN0b3J5RG9lc05vdEV4aXN0KSB7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0
aCgiIikuRGlyZWN0b3J5RXhpc3RzKCkpOworfQorI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKKworVEVTVChEaXJlY3RvcnlUZXN0LCBDdXJyZW50RGlyZWN0b3J5RXhpc3RzKSB7
CisjaWYgR1RFU1RfT1NfV0lORE9XUyAgLy8gV2UgYXJlIG9uIFdpbmRvd3MuCisjIGlmbmRlZiBf
V0lOMzJfQ0UgIC8vIFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlIGEgY3VycmVudCBkaXJlY3Rvcnku
CisKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi4iKS5EaXJlY3RvcnlFeGlzdHMoKSk7CisgIEVY
UEVDVF9UUlVFKEZpbGVQYXRoKCIuXFwiKS5EaXJlY3RvcnlFeGlzdHMoKSk7CisKKyMgZW5kaWYg
IC8vIF9XSU4zMl9DRQorI2Vsc2UKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi4iKS5EaXJlY3Rv
cnlFeGlzdHMoKSk7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIuLyIpLkRpcmVjdG9yeUV4aXN0
cygpKTsKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworfQorCisvLyAiZm9vL2JhciIgPT0g
Zm9vLy9iYXIiID09ICJmb28vLy9iYXIiCitURVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRpcGxlQ29u
c2VjdXRpdmVTZXBhcGFyYXRvcnNJbk1pZHN0cmluZykgeworICBFWFBFQ1RfRVEoImZvbyIgR1RF
U1RfUEFUSF9TRVBfICJiYXIiLAorICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFU
SF9TRVBfICJiYXIiKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8gImJhciIsCisgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RF
U1RfUEFUSF9TRVBfICJiYXIiKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8gImJhciIsCisgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8gR1RFU1RfUEFUSF9TRVBfCisgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8g
ImJhciIpLnN0cmluZygpKTsKK30KKworLy8gIi9iYXIiID09IC8vYmFyIiA9PSAiLy8vYmFyIgor
VEVTVChOb3JtYWxpemVUZXN0LCBNdWx0aXBsZUNvbnNlY3V0aXZlU2VwYXBhcmF0b3JzQXRTdHJp
bmdTdGFydCkgeworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgIEZpbGVQ
YXRoKEdURVNUX1BBVEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoR1RFU1Rf
UEFUSF9TRVBfICJiYXIiLAorICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRI
X1NFUF8gImJhciIpLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQXyAiYmFy
IiwKKyAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BB
VEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOworfQorCisvLyAiZm9vLyIgPT0gZm9vLy8iID09ICJm
b28vLy8iCitURVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRpcGxlQ29uc2VjdXRpdmVTZXBhcGFyYXRv
cnNBdFN0cmluZ0VuZCkgeworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAg
IEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXykuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEo
ImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQ
XyBHVEVTVF9QQVRIX1NFUF8pLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BB
VEhfU0VQXywKKyAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9T
RVBfIEdURVNUX1BBVEhfU0VQXykuc3RyaW5nKCkpOworfQorCisjaWYgR1RFU1RfSEFTX0FMVF9Q
QVRIX1NFUF8KKworLy8gVGVzdHMgdGhhdCBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0
cmluZyBhcmUgbm9ybWFsaXplZAorLy8gcmVnYXJkbGVzcyBvZiB0aGVpciBjb21iaW5hdGlvbiAo
ZS5nLiAiZm9vXCIgPT0iZm9vL1wiID09CisvLyAiZm9vXFwvIikuCitURVNUKE5vcm1hbGl6ZVRl
c3QsIE1peEFsdGVybmF0ZVNlcGFyYXRvckF0U3RyaW5nRW5kKSB7CisgIEVYUEVDVF9FUSgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8sCisgICAgICAgICAgICBGaWxlUGF0aCgiZm9vLyIpLnN0cmluZygp
KTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKKyAgICAgICAgICAgIEZpbGVQ
YXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiLyIpLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJm
b28iIEdURVNUX1BBVEhfU0VQXywKKyAgICAgICAgICAgIEZpbGVQYXRoKCJmb28vLyIgR1RFU1Rf
UEFUSF9TRVBfKS5zdHJpbmcoKSk7Cit9CisKKyNlbmRpZgorCitURVNUKEFzc2lnbm1lbnRPcGVy
YXRvclRlc3QsIERlZmF1bHRBc3NpZ25lZFRvTm9uRGVmYXVsdCkgeworICBGaWxlUGF0aCBkZWZh
dWx0X3BhdGg7CisgIEZpbGVQYXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgiKTsKKyAgbm9uX2Rl
ZmF1bHRfcGF0aCA9IGRlZmF1bHRfcGF0aDsKKyAgRVhQRUNUX0VRKCIiLCBub25fZGVmYXVsdF9w
YXRoLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCIiLCBkZWZhdWx0X3BhdGguc3RyaW5nKCkpOyAg
Ly8gUkhTIHZhciBpcyB1bmNoYW5nZWQuCit9CisKK1RFU1QoQXNzaWdubWVudE9wZXJhdG9yVGVz
dCwgTm9uRGVmYXVsdEFzc2lnbmVkVG9EZWZhdWx0KSB7CisgIEZpbGVQYXRoIG5vbl9kZWZhdWx0
X3BhdGgoInBhdGgiKTsKKyAgRmlsZVBhdGggZGVmYXVsdF9wYXRoOworICBkZWZhdWx0X3BhdGgg
PSBub25fZGVmYXVsdF9wYXRoOworICBFWFBFQ1RfRVEoInBhdGgiLCBkZWZhdWx0X3BhdGguc3Ry
aW5nKCkpOworICBFWFBFQ1RfRVEoInBhdGgiLCBub25fZGVmYXVsdF9wYXRoLnN0cmluZygpKTsg
IC8vIFJIUyB2YXIgaXMgdW5jaGFuZ2VkLgorfQorCitURVNUKEFzc2lnbm1lbnRPcGVyYXRvclRl
c3QsIENvbnN0QXNzaWduZWRUb05vbkNvbnN0KSB7CisgIGNvbnN0IEZpbGVQYXRoIGNvbnN0X2Rl
ZmF1bHRfcGF0aCgiY29uc3RfcGF0aCIpOworICBGaWxlUGF0aCBub25fZGVmYXVsdF9wYXRoKCJw
YXRoIik7CisgIG5vbl9kZWZhdWx0X3BhdGggPSBjb25zdF9kZWZhdWx0X3BhdGg7CisgIEVYUEVD
VF9FUSgiY29uc3RfcGF0aCIsIG5vbl9kZWZhdWx0X3BhdGguc3RyaW5nKCkpOworfQorCitjbGFz
cyBEaXJlY3RvcnlDcmVhdGlvblRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgorICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgdGVzdGRhdGFfcGF0aF8uU2V0KEZpbGVQYXRoKAor
ICAgICAgICBUZW1wRGlyKCkgKyBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmcoKSAr
CisgICAgICAgICJfZGlyZWN0b3J5X2NyZWF0aW9uIiBHVEVTVF9QQVRIX1NFUF8gInRlc3QiIEdU
RVNUX1BBVEhfU0VQXykpOworICAgIHRlc3RkYXRhX2ZpbGVfLlNldCh0ZXN0ZGF0YV9wYXRoXy5S
ZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKSk7CisKKyAgICB1bmlxdWVfZmlsZTBfLlNldChG
aWxlUGF0aDo6TWFrZUZpbGVOYW1lKHRlc3RkYXRhX3BhdGhfLCBGaWxlUGF0aCgidW5pcXVlIiks
CisgICAgICAgIDAsICJ0eHQiKSk7CisgICAgdW5pcXVlX2ZpbGUxXy5TZXQoRmlsZVBhdGg6Ok1h
a2VGaWxlTmFtZSh0ZXN0ZGF0YV9wYXRoXywgRmlsZVBhdGgoInVuaXF1ZSIpLAorICAgICAgICAx
LCAidHh0IikpOworCisgICAgcmVtb3ZlKHRlc3RkYXRhX2ZpbGVfLmNfc3RyKCkpOworICAgIHJl
bW92ZSh1bmlxdWVfZmlsZTBfLmNfc3RyKCkpOworICAgIHJlbW92ZSh1bmlxdWVfZmlsZTFfLmNf
c3RyKCkpOworICAgIHBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKKyAgfQor
CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICByZW1vdmUodGVzdGRhdGFfZmlsZV8u
Y19zdHIoKSk7CisgICAgcmVtb3ZlKHVuaXF1ZV9maWxlMF8uY19zdHIoKSk7CisgICAgcmVtb3Zl
KHVuaXF1ZV9maWxlMV8uY19zdHIoKSk7CisgICAgcG9zaXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhf
LmNfc3RyKCkpOworICB9CisKKyAgdm9pZCBDcmVhdGVUZXh0RmlsZShjb25zdCBjaGFyKiBmaWxl
bmFtZSkgeworICAgIEZJTEUqIGYgPSBwb3NpeDo6Rk9wZW4oZmlsZW5hbWUsICJ3Iik7CisgICAg
ZnByaW50ZihmLCAidGV4dFxuIik7CisgICAgZmNsb3NlKGYpOworICB9CisKKyAgLy8gU3RyaW5n
cyByZXByZXNlbnRpbmcgYSBkaXJlY3RvcnkgYW5kIGEgZmlsZSwgd2l0aCBpZGVudGljYWwgcGF0
aHMKKyAgLy8gZXhjZXB0IGZvciB0aGUgdHJhaWxpbmcgc2VwYXJhdG9yIGNoYXJhY3RlciB0aGF0
IGRpc3RpbnF1aXNoZXMKKyAgLy8gYSBkaXJlY3RvcnkgbmFtZWQgJ3Rlc3QnIGZyb20gYSBmaWxl
IG5hbWVkICd0ZXN0Jy4gRXhhbXBsZSBuYW1lczoKKyAgRmlsZVBhdGggdGVzdGRhdGFfcGF0aF87
ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRpb24vdGVzdC8iCisgIEZpbGVQYXRoIHRlc3RkYXRh
X2ZpbGVfOyAgLy8gIi90bXAvZGlyZWN0b3J5X2NyZWF0aW9uL3Rlc3QiCisgIEZpbGVQYXRoIHVu
aXF1ZV9maWxlMF87ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRpb24vdGVzdC91bmlxdWUudHh0
IgorICBGaWxlUGF0aCB1bmlxdWVfZmlsZTFfOyAgLy8gIi90bXAvZGlyZWN0b3J5X2NyZWF0aW9u
L3Rlc3QvdW5pcXVlXzEudHh0IgorfTsKKworVEVTVF9GKERpcmVjdG9yeUNyZWF0aW9uVGVzdCwg
Q3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSkgeworICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFf
cGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkpIDw8IHRlc3RkYXRhX3BhdGhfLnN0cmluZygpOworICBF
WFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkp
OworICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlzdHMoKSk7Cit9CisK
K1RFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURpcmVjdG9yaWVzRm9yQWxyZWFk
eUV4aXN0aW5nUGF0aCkgeworICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfcGF0aF8uRGlyZWN0b3J5
RXhpc3RzKCkpIDw8IHRlc3RkYXRhX3BhdGhfLnN0cmluZygpOworICBFWFBFQ1RfVFJVRSh0ZXN0
ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOworICAvLyBDYWxsICdj
cmVhdGUnIGFnYWluLi4uIHNob3VsZCBzdGlsbCBzdWNjZWVkLgorICBFWFBFQ1RfVFJVRSh0ZXN0
ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOworfQorCitURVNUX0Yo
RGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0FuZFVuaXF1ZUZpbGVuYW1l
KSB7CisgIEZpbGVQYXRoIGZpbGVfcGF0aChGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFt
ZSh0ZXN0ZGF0YV9wYXRoXywKKyAgICAgIEZpbGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIpKTsKKyAg
RVhQRUNUX0VRKHVuaXF1ZV9maWxlMF8uc3RyaW5nKCksIGZpbGVfcGF0aC5zdHJpbmcoKSk7Cisg
IEVYUEVDVF9GQUxTRShmaWxlX3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8gZmls
ZSBub3QgdGhlcmUKKworICB0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2
ZWx5KCk7CisgIEVYUEVDVF9GQUxTRShmaWxlX3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkp
OyAgLy8gZmlsZSBzdGlsbCBub3QgdGhlcmUKKyAgQ3JlYXRlVGV4dEZpbGUoZmlsZV9wYXRoLmNf
c3RyKCkpOworICBFWFBFQ1RfVFJVRShmaWxlX3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkp
OworCisgIEZpbGVQYXRoIGZpbGVfcGF0aDIoRmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5h
bWUodGVzdGRhdGFfcGF0aF8sCisgICAgICBGaWxlUGF0aCgidW5pcXVlIiksICJ0eHQiKSk7Cisg
IEVYUEVDVF9FUSh1bmlxdWVfZmlsZTFfLnN0cmluZygpLCBmaWxlX3BhdGgyLnN0cmluZygpKTsK
KyAgRVhQRUNUX0ZBTFNFKGZpbGVfcGF0aDIuRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8g
ZmlsZSBub3QgdGhlcmUKKyAgQ3JlYXRlVGV4dEZpbGUoZmlsZV9wYXRoMi5jX3N0cigpKTsKKyAg
RVhQRUNUX1RSVUUoZmlsZV9wYXRoMi5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7Cit9CisKK1RF
U1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURpcmVjdG9yaWVzRmFpbCkgeworICAv
LyBmb3JjZSBhIGZhaWx1cmUgYnkgcHV0dGluZyBhIGZpbGUgd2hlcmUgd2Ugd2lsbCB0cnkgdG8g
Y3JlYXRlIGEgZGlyZWN0b3J5LgorICBDcmVhdGVUZXh0RmlsZSh0ZXN0ZGF0YV9maWxlXy5jX3N0
cigpKTsKKyAgRVhQRUNUX1RSVUUodGVzdGRhdGFfZmlsZV8uRmlsZU9yRGlyZWN0b3J5RXhpc3Rz
KCkpOworICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfZmlsZV8uRGlyZWN0b3J5RXhpc3RzKCkpOwor
ICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfZmlsZV8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVs
eSgpKTsKK30KKworVEVTVChOb0RpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlTm9EaXJlY3Rv
cmllc0ZvckRlZmF1bHRYbWxGaWxlKSB7CisgIGNvbnN0IEZpbGVQYXRoIHRlc3RfZGV0YWlsX3ht
bCgidGVzdF9kZXRhaWwueG1sIik7CisgIEVYUEVDVF9GQUxTRSh0ZXN0X2RldGFpbF94bWwuQ3Jl
YXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKTsKK30KKworVEVTVChGaWxlUGF0aFRlc3QsIERl
ZmF1bHRDb25zdHJ1Y3RvcikgeworICBGaWxlUGF0aCBmcDsKKyAgRVhQRUNUX0VRKCIiLCBmcC5z
dHJpbmcoKSk7Cit9CisKK1RFU1QoRmlsZVBhdGhUZXN0LCBDaGFyQW5kQ29weUNvbnN0cnVjdG9y
cykgeworICBjb25zdCBGaWxlUGF0aCBmcCgic3BpY3kiKTsKKyAgRVhQRUNUX0VRKCJzcGljeSIs
IGZwLnN0cmluZygpKTsKKworICBjb25zdCBGaWxlUGF0aCBmcF9jb3B5KGZwKTsKKyAgRVhQRUNU
X0VRKCJzcGljeSIsIGZwX2NvcHkuc3RyaW5nKCkpOworfQorCitURVNUKEZpbGVQYXRoVGVzdCwg
U3RyaW5nQ29uc3RydWN0b3IpIHsKKyAgY29uc3QgRmlsZVBhdGggZnAoc3RkOjpzdHJpbmcoImNp
ZGVyIikpOworICBFWFBFQ1RfRVEoImNpZGVyIiwgZnAuc3RyaW5nKCkpOworfQorCitURVNUKEZp
bGVQYXRoVGVzdCwgU2V0KSB7CisgIGNvbnN0IEZpbGVQYXRoIGFwcGxlKCJhcHBsZSIpOworICBG
aWxlUGF0aCBtYWMoIm1hYyIpOworICBtYWMuU2V0KGFwcGxlKTsgIC8vIEltcGxlbWVudCBTZXQo
KSBzaW5jZSBvdmVybG9hZGluZyBvcGVyYXRvcj0gaXMgZm9yYmlkZGVuLgorICBFWFBFQ1RfRVEo
ImFwcGxlIiwgbWFjLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJhcHBsZSIsIGFwcGxlLnN0cmlu
ZygpKTsKK30KKworVEVTVChGaWxlUGF0aFRlc3QsIFRvU3RyaW5nKSB7CisgIGNvbnN0IEZpbGVQ
YXRoIGZpbGUoImRyaW5rIik7CisgIEVYUEVDVF9FUSgiZHJpbmsiLCBmaWxlLnN0cmluZygpKTsK
K30KKworVEVTVChGaWxlUGF0aFRlc3QsIFJlbW92ZUV4dGVuc2lvbikgeworICBFWFBFQ1RfRVEo
ImFwcCIsIEZpbGVQYXRoKCJhcHAuY2MiKS5SZW1vdmVFeHRlbnNpb24oImNjIikuc3RyaW5nKCkp
OworICBFWFBFQ1RfRVEoImFwcCIsIEZpbGVQYXRoKCJhcHAuZXhlIikuUmVtb3ZlRXh0ZW5zaW9u
KCJleGUiKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiQVBQIiwgRmlsZVBhdGgoIkFQUC5FWEUi
KS5SZW1vdmVFeHRlbnNpb24oImV4ZSIpLnN0cmluZygpKTsKK30KKworVEVTVChGaWxlUGF0aFRl
c3QsIFJlbW92ZUV4dGVuc2lvbldoZW5UaGVyZUlzTm9FeHRlbnNpb24pIHsKKyAgRVhQRUNUX0VR
KCJhcHAiLCBGaWxlUGF0aCgiYXBwIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5zdHJpbmcoKSk7
Cit9CisKK1RFU1QoRmlsZVBhdGhUZXN0LCBJc0RpcmVjdG9yeSkgeworICBFWFBFQ1RfRkFMU0Uo
RmlsZVBhdGgoImNvbGEiKS5Jc0RpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgo
ImtvYWxhIiBHVEVTVF9QQVRIX1NFUF8pLklzRGlyZWN0b3J5KCkpOworI2lmIEdURVNUX0hBU19B
TFRfUEFUSF9TRVBfCisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJrb2FsYS8iKS5Jc0RpcmVjdG9y
eSgpKTsKKyNlbmRpZgorfQorCitURVNUKEZpbGVQYXRoVGVzdCwgSXNBYnNvbHV0ZVBhdGgpIHsK
KyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJpcyIgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIp
LklzQWJzb2x1dGVQYXRoKCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIiIpLklzQWJzb2x1
dGVQYXRoKCkpOworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgo
ImM6XFwiIEdURVNUX1BBVEhfU0VQXyAiaXNfbm90IgorICAgICAgICAgICAgICAgICAgICAgICBH
VEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIikuSXNBYnNvbHV0ZVBhdGgoKSk7CisgIEVYUEVDVF9G
QUxTRShGaWxlUGF0aCgiYzpmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuSXNBYnNvbHV0ZVBh
dGgoKSk7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJjOi8iIEdURVNUX1BBVEhfU0VQXyAiaXNf
bm90IgorICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIiku
SXNBYnNvbHV0ZVBhdGgoKSk7CisjZWxzZQorICBFWFBFQ1RfVFJVRShGaWxlUGF0aChHVEVTVF9Q
QVRIX1NFUF8gImlzX25vdCIgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIpCisgICAgICAgICAg
ICAgIC5Jc0Fic29sdXRlUGF0aCgpKTsKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworfQor
CitURVNUKEZpbGVQYXRoVGVzdCwgSXNSb290RGlyZWN0b3J5KSB7CisjaWYgR1RFU1RfT1NfV0lO
RE9XUworICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiYTpcXCIpLklzUm9vdERpcmVjdG9yeSgpKTsK
KyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIlo6LyIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQ
RUNUX1RSVUUoRmlsZVBhdGgoImU6Ly8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9G
QUxTRShGaWxlUGF0aCgiIikuSXNSb290RGlyZWN0b3J5KCkpOworICBFWFBFQ1RfRkFMU0UoRmls
ZVBhdGgoImI6IikuSXNSb290RGlyZWN0b3J5KCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgo
ImI6YSIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCI4Oi8i
KS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiY3wvIikuSXNS
b290RGlyZWN0b3J5KCkpOworI2Vsc2UKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi8iKS5Jc1Jv
b3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIvLyIpLklzUm9vdERpcmVj
dG9yeSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7
CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiXFwiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVY
UEVDVF9GQUxTRShGaWxlUGF0aCgiL3giKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisjZW5kaWYKK30K
KworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK30gIC8vIG5hbWVz
cGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9nb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzBiNWJkOWE1Y2Zj
NWJmZThjNjhhZjFiNjQ3ODk5ZTFmZWJkYTY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdC5weQpAQCAtMCww
ICsxLDYzNiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA1IEdv
b2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJV
bml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0IHRlc3QgZmlsdGVycy4KKworQSB1c2VyIGNhbiBzcGVj
aWZ5IHdoaWNoIHRlc3QocykgaW4gYSBHb29nbGUgVGVzdCBwcm9ncmFtIHRvIHJ1biB2aWEgZWl0
aGVyCit0aGUgR1RFU1RfRklMVEVSIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZSAtLWd0ZXN0
X2ZpbHRlciBmbGFnLgorVGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5IGJ5IGlu
dm9raW5nCitnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8gKGEgcHJvZ3JhbSB3cml0dGVuIHdp
dGggR29vZ2xlIFRlc3QpIHdpdGggZGlmZmVyZW50CitlbnZpcm9ubWVudHMgYW5kIGNvbW1hbmQg
bGluZSBmbGFncy4KKworTm90ZSB0aGF0IHRlc3Qgc2hhcmRpbmcgbWF5IGFsc28gaW5mbHVlbmNl
IHdoaWNoIHRlc3RzIGFyZSBmaWx0ZXJlZC4gVGhlcmVmb3JlLAord2UgdGVzdCB0aGF0IGhlcmUg
YWxzby4KKyIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHNldHMKK2ltcG9ydCBz
eXMKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKKyMgQ29uc3RhbnRzLgorCisjIENoZWNrcyBp
ZiB0aGlzIHBsYXRmb3JtIGNhbiBwYXNzIGVtcHR5IGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBj
aGlsZAorIyBwcm9jZXNzZXMuICBXZSBzZXQgYW4gZW52IHZhcmlhYmxlIHRvIGFuIGVtcHR5IHN0
cmluZyBhbmQgaW52b2tlIGEgcHl0aG9uCisjIHNjcmlwdCBpbiBhIHN1YnByb2Nlc3MgdG8gcHJp
bnQgd2hldGhlciB0aGUgdmFyaWFibGUgaXMgU1RJTEwgaW4KKyMgb3MuZW52aXJvbi4gIFdlIHRo
ZW4gdXNlICdldmFsJyB0byBwYXJzZSB0aGUgY2hpbGQncyBvdXRwdXQgc28gdGhhdCBhbgorIyBl
eGNlcHRpb24gaXMgdGhyb3duIGlmIHRoZSBpbnB1dCBpcyBhbnl0aGluZyBvdGhlciB0aGFuICdU
cnVlJyBub3IgJ0ZhbHNlJy4KK0NBTl9QQVNTX0VNUFRZX0VOViA9IEZhbHNlCitpZiBzeXMuZXhl
Y3V0YWJsZToKKyAgb3MuZW52aXJvblsnRU1QVFlfVkFSJ10gPSAnJworICBjaGlsZCA9IGd0ZXN0
X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKKyAgICAgIFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgJ2lt
cG9ydCBvczsgcHJpbnQgXCdFTVBUWV9WQVJcJyBpbiBvcy5lbnZpcm9uJ10pCisgIENBTl9QQVNT
X0VNUFRZX0VOViA9IGV2YWwoY2hpbGQub3V0cHV0KQorCisKKyMgQ2hlY2sgaWYgdGhpcyBwbGF0
Zm9ybSBjYW4gdW5zZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluIGNoaWxkIHByb2Nlc3Nlcy4K
KyMgV2Ugc2V0IGFuIGVudiB2YXJpYWJsZSB0byBhIG5vbi1lbXB0eSBzdHJpbmcsIHVuc2V0IGl0
LCBhbmQgaW52b2tlCisjIGEgcHl0aG9uIHNjcmlwdCBpbiBhIHN1YnByb2Nlc3MgdG8gcHJpbnQg
d2hldGhlciB0aGUgdmFyaWFibGUKKyMgaXMgTk8gTE9OR0VSIGluIG9zLmVudmlyb24uCisjIFdl
IHVzZSAnZXZhbCcgdG8gcGFyc2UgdGhlIGNoaWxkJ3Mgb3V0cHV0IHNvIHRoYXQgYW4gZXhjZXB0
aW9uCisjIGlzIHRocm93biBpZiB0aGUgaW5wdXQgaXMgbmVpdGhlciAnVHJ1ZScgbm9yICdGYWxz
ZScuCitDQU5fVU5TRVRfRU5WID0gRmFsc2UKK2lmIHN5cy5leGVjdXRhYmxlOgorICBvcy5lbnZp
cm9uWydVTlNFVF9WQVInXSA9ICdYJworICBkZWwgb3MuZW52aXJvblsnVU5TRVRfVkFSJ10KKyAg
Y2hpbGQgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgICBbc3lzLmV4ZWN1dGFi
bGUsICctYycsICdpbXBvcnQgb3M7IHByaW50IFwnVU5TRVRfVkFSXCcgbm90IGluIG9zLmVudmly
b24nCisgICAgICBdKQorICBDQU5fVU5TRVRfRU5WID0gZXZhbChjaGlsZC5vdXRwdXQpCisKKwor
IyBDaGVja3MgaWYgd2Ugc2hvdWxkIHRlc3Qgd2l0aCBhbiBlbXB0eSBmaWx0ZXIuIFRoaXMgZG9l
c24ndAorIyBtYWtlIHNlbnNlIG9uIHBsYXRmb3JtcyB0aGF0IGNhbm5vdCBwYXNzIGVtcHR5IGVu
diB2YXJpYWJsZXMgKFdpbjMyKQorIyBhbmQgb24gcGxhdGZvcm1zIHRoYXQgY2Fubm90IHVuc2V0
IHZhcmlhYmxlcyAoc2luY2Ugd2UgY2Fubm90IHRlbGwKKyMgdGhlIGRpZmZlcmVuY2UgYmV0d2Vl
biAiIiBhbmQgTlVMTCAtLSBCb3JsYW5kIGFuZCBTb2xhcmlzIDwgNS4xMCkKK0NBTl9URVNUX0VN
UFRZX0ZJTFRFUiA9IChDQU5fUEFTU19FTVBUWV9FTlYgYW5kIENBTl9VTlNFVF9FTlYpCisKKwor
IyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIHNwZWNpZnlpbmcgdGhlIHRlc3QgZmlsdGVy
cy4KK0ZJTFRFUl9FTlZfVkFSID0gJ0dURVNUX0ZJTFRFUicKKworIyBUaGUgZW52aXJvbm1lbnQg
dmFyaWFibGVzIGZvciB0ZXN0IHNoYXJkaW5nLgorVE9UQUxfU0hBUkRTX0VOVl9WQVIgPSAnR1RF
U1RfVE9UQUxfU0hBUkRTJworU0hBUkRfSU5ERVhfRU5WX1ZBUiA9ICdHVEVTVF9TSEFSRF9JTkRF
WCcKK1NIQVJEX1NUQVRVU19GSUxFX0VOVl9WQVIgPSAnR1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEUn
CisKKyMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciBzcGVjaWZ5aW5nIHRoZSB0ZXN0IGZpbHRl
cnMuCitGSUxURVJfRkxBRyA9ICdndGVzdF9maWx0ZXInCisKKyMgVGhlIGNvbW1hbmQgbGluZSBm
bGFnIGZvciBpbmNsdWRpbmcgZGlzYWJsZWQgdGVzdHMuCitBTFNPX1JVTl9ESVNBQkxFRF9URVNU
U19GTEFHID0gJ2d0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzJworCisjIENvbW1hbmQgdG8g
cnVuIHRoZSBnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8gcHJvZ3JhbS4KK0NPTU1BTkQgPSBn
dGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ29vZ2xldGVzdC1maWx0ZXIt
dW5pdHRlc3RfJykKKworIyBSZWdleCBmb3IgZGV0ZXJtaW5pbmcgd2hldGhlciBwYXJhbWV0ZXJp
emVkIHRlc3RzIGFyZSBlbmFibGVkIGluIHRoZSBiaW5hcnkuCitQQVJBTV9URVNUX1JFR0VYID0g
cmUuY29tcGlsZShyJy9QYXJhbVRlc3QnKQorCisjIFJlZ2V4IGZvciBwYXJzaW5nIHRlc3QgY2Fz
ZSBuYW1lcyBmcm9tIEdvb2dsZSBUZXN0J3Mgb3V0cHV0LgorVEVTVF9DQVNFX1JFR0VYID0gcmUu
Y29tcGlsZShyJ15cW1wtK1xdIFxkKyB0ZXN0cz8gZnJvbSAoXHcrKC9cdyspPyknKQorCisjIFJl
Z2V4IGZvciBwYXJzaW5nIHRlc3QgbmFtZXMgZnJvbSBHb29nbGUgVGVzdCdzIG91dHB1dC4KK1RF
U1RfUkVHRVggPSByZS5jb21waWxlKHInXlxbXHMqUlVOXHMqXF0uKlwuKFx3KygvXHcrKT8pJykK
KworIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgdG8gdGVsbCBHb29nbGUgVGVzdCB0byBvdXRwdXQg
dGhlIGxpc3Qgb2YgdGVzdHMgaXQKKyMgd2lsbCBydW4uCitMSVNUX1RFU1RTX0ZMQUcgPSAnLS1n
dGVzdF9saXN0X3Rlc3RzJworCisjIEluZGljYXRlcyB3aGV0aGVyIEdvb2dsZSBUZXN0IHN1cHBv
cnRzIGRlYXRoIHRlc3RzLgorU1VQUE9SVFNfREVBVEhfVEVTVFMgPSAnSGFzRGVhdGhUZXN0JyBp
biBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgW0NPTU1BTkQsIExJU1RfVEVTVFNf
RkxBR10pLm91dHB1dAorCisjIEZ1bGwgbmFtZXMgb2YgYWxsIHRlc3RzIGluIGdvb2dsZXRlc3Qt
ZmlsdGVyLXVuaXR0ZXN0c18uCitQQVJBTV9URVNUUyA9IFsKKyAgICAnU2VxUC9QYXJhbVRlc3Qu
VGVzdFgvMCcsCisgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzEnLAorICAgICdTZXFQL1BhcmFt
VGVzdC5UZXN0WS8wJywKKyAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMScsCisgICAgJ1NlcVEv
UGFyYW1UZXN0LlRlc3RYLzAnLAorICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WC8xJywKKyAgICAn
U2VxUS9QYXJhbVRlc3QuVGVzdFkvMCcsCisgICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RZLzEnLAor
ICAgIF0KKworRElTQUJMRURfVEVTVFMgPSBbCisgICAgJ0JhclRlc3QuRElTQUJMRURfVGVzdEZv
dXInLAorICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rlc3RGaXZlJywKKyAgICAnQmF6VGVzdC5ESVNB
QkxFRF9UZXN0QycsCisgICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnLAorICAgICdESVNB
QkxFRF9Gb29iYXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywKKyAgICAnRElTQUJMRURfRm9vYmFyYmF6
VGVzdC5UZXN0QScsCisgICAgXQorCitpZiBTVVBQT1JUU19ERUFUSF9URVNUUzoKKyAgREVBVEhf
VEVTVFMgPSBbCisgICAgJ0hhc0RlYXRoVGVzdC5UZXN0MScsCisgICAgJ0hhc0RlYXRoVGVzdC5U
ZXN0MicsCisgICAgXQorZWxzZToKKyAgREVBVEhfVEVTVFMgPSBbXQorCisjIEFsbCB0aGUgbm9u
LWRpc2FibGVkIHRlc3RzLgorQUNUSVZFX1RFU1RTID0gWworICAgICdGb29UZXN0LkFiYycsCisg
ICAgJ0Zvb1Rlc3QuWHl6JywKKworICAgICdCYXJUZXN0LlRlc3RPbmUnLAorICAgICdCYXJUZXN0
LlRlc3RUd28nLAorICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCisKKyAgICAnQmF6VGVzdC5UZXN0
T25lJywKKyAgICAnQmF6VGVzdC5UZXN0QScsCisgICAgJ0JhelRlc3QuVGVzdEInLAorICAgIF0g
KyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTCisKK3BhcmFtX3Rlc3RzX3ByZXNlbnQgPSBOb25l
CisKKyMgVXRpbGl0aWVzLgorCitlbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkKKworCitkZWYg
U2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToKKyAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxlIHRv
ICd2YWx1ZSc7IHVuc2V0cyBpdCB3aGVuICd2YWx1ZScgaXMgTm9uZS4iIiIKKworICBpZiB2YWx1
ZSBpcyBub3QgTm9uZToKKyAgICBlbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKKyAgZWxpZiBlbnZf
dmFyIGluIGVudmlyb246CisgICAgZGVsIGVudmlyb25bZW52X3Zhcl0KKworCitkZWYgUnVuQW5k
UmV0dXJuT3V0cHV0KGFyZ3MgPSBOb25lKToKKyAgIiIiUnVucyB0aGUgdGVzdCBwcm9ncmFtIGFu
ZCByZXR1cm5zIGl0cyBvdXRwdXQuIiIiCisKKyAgcmV0dXJuIGd0ZXN0X3Rlc3RfdXRpbHMuU3Vi
cHJvY2VzcyhbQ09NTUFORF0gKyAoYXJncyBvciBbXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW52PWVudmlyb24pLm91dHB1dAorCisKK2RlZiBSdW5BbmRFeHRyYWN0
VGVzdExpc3QoYXJncyA9IE5vbmUpOgorICAiIiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0gYW5kIHJl
dHVybnMgaXRzIGV4aXQgY29kZSBhbmQgYSBsaXN0IG9mIHRlc3RzIHJ1bi4iIiIKKworICBwID0g
Z3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtDT01NQU5EXSArIChhcmdzIG9yIFtdKSwgZW52
PWVudmlyb24pCisgIHRlc3RzX3J1biA9IFtdCisgIHRlc3RfY2FzZSA9ICcnCisgIHRlc3QgPSAn
JworICBmb3IgbGluZSBpbiBwLm91dHB1dC5zcGxpdCgnXG4nKToKKyAgICBtYXRjaCA9IFRFU1Rf
Q0FTRV9SRUdFWC5tYXRjaChsaW5lKQorICAgIGlmIG1hdGNoIGlzIG5vdCBOb25lOgorICAgICAg
dGVzdF9jYXNlID0gbWF0Y2guZ3JvdXAoMSkKKyAgICBlbHNlOgorICAgICAgbWF0Y2ggPSBURVNU
X1JFR0VYLm1hdGNoKGxpbmUpCisgICAgICBpZiBtYXRjaCBpcyBub3QgTm9uZToKKyAgICAgICAg
dGVzdCA9IG1hdGNoLmdyb3VwKDEpCisgICAgICAgIHRlc3RzX3J1bi5hcHBlbmQodGVzdF9jYXNl
ICsgJy4nICsgdGVzdCkKKyAgcmV0dXJuICh0ZXN0c19ydW4sIHAuZXhpdF9jb2RlKQorCisKK2Rl
ZiBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LCBmdW5jdGlvbiwgKmFyZ3MsICoqa3dh
cmdzKToKKyAgIiIiUnVucyB0aGUgZ2l2ZW4gZnVuY3Rpb24gYW5kIGFyZ3VtZW50cyBpbiBhIG1v
ZGlmaWVkIGVudmlyb25tZW50LiIiIgorICB0cnk6CisgICAgb3JpZ2luYWxfZW52ID0gZW52aXJv
bi5jb3B5KCkKKyAgICBlbnZpcm9uLnVwZGF0ZShleHRyYV9lbnYpCisgICAgcmV0dXJuIGZ1bmN0
aW9uKCphcmdzLCAqKmt3YXJncykKKyAgZmluYWxseToKKyAgICBlbnZpcm9uLmNsZWFyKCkKKyAg
ICBlbnZpcm9uLnVwZGF0ZShvcmlnaW5hbF9lbnYpCisKKworZGVmIFJ1bldpdGhTaGFyZGluZyh0
b3RhbF9zaGFyZHMsIHNoYXJkX2luZGV4LCBjb21tYW5kKToKKyAgIiIiUnVucyBhIHRlc3QgcHJv
Z3JhbSBzaGFyZCBhbmQgcmV0dXJucyBleGl0IGNvZGUgYW5kIGEgbGlzdCBvZiB0ZXN0cyBydW4u
IiIiCisKKyAgZXh0cmFfZW52ID0ge1NIQVJEX0lOREVYX0VOVl9WQVI6IHN0cihzaGFyZF9pbmRl
eCksCisgICAgICAgICAgICAgICBUT1RBTF9TSEFSRFNfRU5WX1ZBUjogc3RyKHRvdGFsX3NoYXJk
cyl9CisgIHJldHVybiBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LCBSdW5BbmRFeHRy
YWN0VGVzdExpc3QsIGNvbW1hbmQpCisKKyMgVGhlIHVuaXQgdGVzdC4KKworCitjbGFzcyBHVGVz
dEZpbHRlclVuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJUZXN0cyB0
aGUgZW52IHZhcmlhYmxlIG9yIHRoZSBjb21tYW5kIGxpbmUgZmxhZyB0byBmaWx0ZXIgdGVzdHMu
IiIiCisKKyAgIyBVdGlsaXRpZXMuCisKKyAgZGVmIEFzc2VydFNldEVxdWFsKHNlbGYsIGxocywg
cmhzKToKKyAgICAiIiJBc3NlcnRzIHRoYXQgdHdvIHNldHMgYXJlIGVxdWFsLiIiIgorCisgICAg
Zm9yIGVsZW0gaW4gbGhzOgorICAgICAgc2VsZi5hc3NlcnRfKGVsZW0gaW4gcmhzLCAnJXMgaW4g
JXMnICUgKGVsZW0sIHJocykpCisKKyAgICBmb3IgZWxlbSBpbiByaHM6CisgICAgICBzZWxmLmFz
c2VydF8oZWxlbSBpbiBsaHMsICclcyBpbiAlcycgJSAoZWxlbSwgbGhzKSkKKworICBkZWYgQXNz
ZXJ0UGFydGl0aW9uSXNWYWxpZChzZWxmLCBzZXRfdmFyLCBsaXN0X29mX3NldHMpOgorICAgICIi
IkFzc2VydHMgdGhhdCBsaXN0X29mX3NldHMgaXMgYSB2YWxpZCBwYXJ0aXRpb24gb2Ygc2V0X3Zh
ci4iIiIKKworICAgIGZ1bGxfcGFydGl0aW9uID0gW10KKyAgICBmb3Igc2xpY2VfdmFyIGluIGxp
c3Rfb2Zfc2V0czoKKyAgICAgIGZ1bGxfcGFydGl0aW9uLmV4dGVuZChzbGljZV92YXIpCisgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oc2V0X3ZhciksIGxlbihmdWxsX3BhcnRpdGlvbikpCisgICAg
c2VsZi5hc3NlcnRFcXVhbChzZXRzLlNldChzZXRfdmFyKSwgc2V0cy5TZXQoZnVsbF9wYXJ0aXRp
b24pKQorCisgIGRlZiBBZGp1c3RGb3JQYXJhbWV0ZXJpemVkVGVzdHMoc2VsZiwgdGVzdHNfdG9f
cnVuKToKKyAgICAiIiJBZGp1c3QgdGVzdHNfdG9fcnVuIGluIGNhc2UgdmFsdWUgcGFyYW1ldGVy
aXplZCB0ZXN0cyBhcmUgZGlzYWJsZWQuIiIiCisKKyAgICBnbG9iYWwgcGFyYW1fdGVzdHNfcHJl
c2VudAorICAgIGlmIG5vdCBwYXJhbV90ZXN0c19wcmVzZW50OgorICAgICAgcmV0dXJuIGxpc3Qo
c2V0cy5TZXQodGVzdHNfdG9fcnVuKSAtIHNldHMuU2V0KFBBUkFNX1RFU1RTKSkKKyAgICBlbHNl
OgorICAgICAgcmV0dXJuIHRlc3RzX3RvX3J1bgorCisgIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwg
Z3Rlc3RfZmlsdGVyLCB0ZXN0c190b19ydW4pOgorICAgICIiIkNoZWNrcyB0aGF0IHRoZSBiaW5h
cnkgcnVucyBjb3JyZWN0IHNldCBvZiB0ZXN0cyBmb3IgYSBnaXZlbiBmaWx0ZXIuIiIiCisKKyAg
ICB0ZXN0c190b19ydW4gPSBzZWxmLkFkanVzdEZvclBhcmFtZXRlcml6ZWRUZXN0cyh0ZXN0c190
b19ydW4pCisKKyAgICAjIEZpcnN0LCB0ZXN0cyB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFi
bGUuCisKKyAgICAjIFdpbmRvd3MgcmVtb3ZlcyBlbXB0eSB2YXJpYWJsZXMgZnJvbSB0aGUgZW52
aXJvbm1lbnQgd2hlbiBwYXNzaW5nIGl0CisgICAgIyB0byBhIG5ldyBwcm9jZXNzLiAgVGhpcyBt
ZWFucyBpdCBpcyBpbXBvc3NpYmxlIHRvIHBhc3MgYW4gZW1wdHkgZmlsdGVyCisgICAgIyBpbnRv
IGEgcHJvY2VzcyB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuICBIb3dldmVyLCB3ZSBj
YW4gc3RpbGwKKyAgICAjIHRlc3QgdGhlIGNhc2Ugd2hlbiB0aGUgdmFyaWFibGUgaXMgbm90IHN1
cHBsaWVkIChpLmUuLCBndGVzdF9maWx0ZXIgaXMKKyAgICAjIE5vbmUpLgorICAgICMgcHlsaW50
OiBkaXNhYmxlLW1zZz1DNjQwMworICAgIGlmIENBTl9URVNUX0VNUFRZX0ZJTFRFUiBvciBndGVz
dF9maWx0ZXIgIT0gJyc6CisgICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIGd0ZXN0X2Zp
bHRlcikKKyAgICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0TGlzdCgpWzBdCisgICAg
ICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIE5vbmUpCisgICAgICBzZWxmLkFzc2VydFNldEVx
dWFsKHRlc3RzX3J1biwgdGVzdHNfdG9fcnVuKQorICAgICMgcHlsaW50OiBlbmFibGUtbXNnPUM2
NDAzCisKKyAgICAjIE5leHQsIHRlc3RzIHVzaW5nIHRoZSBjb21tYW5kIGxpbmUgZmxhZy4KKwor
ICAgIGlmIGd0ZXN0X2ZpbHRlciBpcyBOb25lOgorICAgICAgYXJncyA9IFtdCisgICAgZWxzZToK
KyAgICAgIGFyZ3MgPSBbJy0tJXM9JXMnICUgKEZJTFRFUl9GTEFHLCBndGVzdF9maWx0ZXIpXQor
CisgICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KGFyZ3MpWzBdCisgICAgc2Vs
Zi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIHRlc3RzX3RvX3J1bikKKworICBkZWYgUnVuQW5k
VmVyaWZ5V2l0aFNoYXJkaW5nKHNlbGYsIGd0ZXN0X2ZpbHRlciwgdG90YWxfc2hhcmRzLCB0ZXN0
c190b19ydW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz1Ob25lLCBjaGVj
a19leGl0XzA9RmFsc2UpOgorICAgICIiIkNoZWNrcyB0aGF0IGJpbmFyeSBydW5zIGNvcnJlY3Qg
dGVzdHMgZm9yIHRoZSBnaXZlbiBmaWx0ZXIgYW5kIHNoYXJkLgorCisgICAgUnVucyBhbGwgc2hh
cmRzIG9mIGdvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0XyB3aXRoIHRoZSBnaXZlbiBmaWx0ZXIs
IGFuZAorICAgIHZlcmlmaWVzIHRoYXQgdGhlIHJpZ2h0IHNldCBvZiB0ZXN0cyB3ZXJlIHJ1bi4g
VGhlIHVuaW9uIG9mIHRlc3RzIHJ1bgorICAgIG9uIGVhY2ggc2hhcmQgc2hvdWxkIGJlIGlkZW50
aWNhbCB0byB0ZXN0c190b19ydW4sIHdpdGhvdXQgZHVwbGljYXRlcy4KKyAgICBJZiBjaGVja19l
eGl0XzAsIC4KKworICAgIEFyZ3M6CisgICAgICBndGVzdF9maWx0ZXI6IEEgZmlsdGVyIHRvIGFw
cGx5IHRvIHRoZSB0ZXN0cy4KKyAgICAgIHRvdGFsX3NoYXJkczogQSB0b3RhbCBudW1iZXIgb2Yg
c2hhcmRzIHRvIHNwbGl0IHRlc3QgcnVuIGludG8uCisgICAgICB0ZXN0c190b19ydW46IEEgc2V0
IG9mIHRlc3RzIGV4cGVjdGVkIHRvIHJ1bi4KKyAgICAgIGFyZ3MgICA6ICAgICAgQXJndW1lbnRz
IHRvIHBhc3MgdG8gdGhlIHRvIHRoZSB0ZXN0IGJpbmFyeS4KKyAgICAgIGNoZWNrX2V4aXRfMDog
V2hlbiBzZXQgdG8gYSB0cnVlIHZhbHVlLCBtYWtlIHN1cmUgdGhhdCBhbGwgc2hhcmRzCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAwLgorICAgICIiIgorCisgICAgdGVzdHNfdG9fcnVuID0g
c2VsZi5BZGp1c3RGb3JQYXJhbWV0ZXJpemVkVGVzdHModGVzdHNfdG9fcnVuKQorCisgICAgIyBX
aW5kb3dzIHJlbW92ZXMgZW1wdHkgdmFyaWFibGVzIGZyb20gdGhlIGVudmlyb25tZW50IHdoZW4g
cGFzc2luZyBpdAorICAgICMgdG8gYSBuZXcgcHJvY2Vzcy4gIFRoaXMgbWVhbnMgaXQgaXMgaW1w
b3NzaWJsZSB0byBwYXNzIGFuIGVtcHR5IGZpbHRlcgorICAgICMgaW50byBhIHByb2Nlc3MgdXNp
bmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLiAgSG93ZXZlciwgd2UgY2FuIHN0aWxsCisgICAg
IyB0ZXN0IHRoZSBjYXNlIHdoZW4gdGhlIHZhcmlhYmxlIGlzIG5vdCBzdXBwbGllZCAoaS5lLiwg
Z3Rlc3RfZmlsdGVyIGlzCisgICAgIyBOb25lKS4KKyAgICAjIHB5bGludDogZGlzYWJsZS1tc2c9
QzY0MDMKKyAgICBpZiBDQU5fVEVTVF9FTVBUWV9GSUxURVIgb3IgZ3Rlc3RfZmlsdGVyICE9ICcn
OgorICAgICAgU2V0RW52VmFyKEZJTFRFUl9FTlZfVkFSLCBndGVzdF9maWx0ZXIpCisgICAgICBw
YXJ0aXRpb24gPSBbXQorICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgdG90YWxfc2hhcmRzKToKKyAg
ICAgICAgKHRlc3RzX3J1biwgZXhpdF9jb2RlKSA9IFJ1bldpdGhTaGFyZGluZyh0b3RhbF9zaGFy
ZHMsIGksIGFyZ3MpCisgICAgICAgIGlmIGNoZWNrX2V4aXRfMDoKKyAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDAsIGV4aXRfY29kZSkKKyAgICAgICAgcGFydGl0aW9uLmFwcGVuZCh0ZXN0c19y
dW4pCisKKyAgICAgIHNlbGYuQXNzZXJ0UGFydGl0aW9uSXNWYWxpZCh0ZXN0c190b19ydW4sIHBh
cnRpdGlvbikKKyAgICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgTm9uZSkKKyAgICAjIHB5
bGludDogZW5hYmxlLW1zZz1DNjQwMworCisgIGRlZiBSdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2Fi
bGVkKHNlbGYsIGd0ZXN0X2ZpbHRlciwgdGVzdHNfdG9fcnVuKToKKyAgICAiIiJDaGVja3MgdGhh
dCB0aGUgYmluYXJ5IHJ1bnMgY29ycmVjdCBzZXQgb2YgdGVzdHMgZm9yIHRoZSBnaXZlbiBmaWx0
ZXIuCisKKyAgICBSdW5zIGdvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0XyB3aXRoIHRoZSBnaXZl
biBmaWx0ZXIsIGFuZCBlbmFibGVzCisgICAgZGlzYWJsZWQgdGVzdHMuIFZlcmlmaWVzIHRoYXQg
dGhlIHJpZ2h0IHNldCBvZiB0ZXN0cyB3ZXJlIHJ1bi4KKworICAgIEFyZ3M6CisgICAgICBndGVz
dF9maWx0ZXI6IEEgZmlsdGVyIHRvIGFwcGx5IHRvIHRoZSB0ZXN0cy4KKyAgICAgIHRlc3RzX3Rv
X3J1bjogQSBzZXQgb2YgdGVzdHMgZXhwZWN0ZWQgdG8gcnVuLgorICAgICIiIgorCisgICAgdGVz
dHNfdG9fcnVuID0gc2VsZi5BZGp1c3RGb3JQYXJhbWV0ZXJpemVkVGVzdHModGVzdHNfdG9fcnVu
KQorCisgICAgIyBDb25zdHJ1Y3QgdGhlIGNvbW1hbmQgbGluZS4KKyAgICBhcmdzID0gWyctLSVz
JyAlIEFMU09fUlVOX0RJU0FCTEVEX1RFU1RTX0ZMQUddCisgICAgaWYgZ3Rlc3RfZmlsdGVyIGlz
IG5vdCBOb25lOgorICAgICAgYXJncy5hcHBlbmQoJy0tJXM9JXMnICUgKEZJTFRFUl9GTEFHLCBn
dGVzdF9maWx0ZXIpKQorCisgICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KGFy
Z3MpWzBdCisgICAgc2VsZi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIHRlc3RzX3RvX3J1bikK
KworICBkZWYgc2V0VXAoc2VsZik6CisgICAgIiIiU2V0cyB1cCB0ZXN0IGNhc2UuCisKKyAgICBE
ZXRlcm1pbmVzIHdoZXRoZXIgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZW5hYmxlZCBp
biB0aGUgYmluYXJ5IGFuZAorICAgIHNldHMgdGhlIGZsYWdzIGFjY29yZGluZ2x5LgorICAgICIi
IgorCisgICAgZ2xvYmFsIHBhcmFtX3Rlc3RzX3ByZXNlbnQKKyAgICBpZiBwYXJhbV90ZXN0c19w
cmVzZW50IGlzIE5vbmU6CisgICAgICBwYXJhbV90ZXN0c19wcmVzZW50ID0gUEFSQU1fVEVTVF9S
RUdFWC5zZWFyY2goCisgICAgICAgICAgUnVuQW5kUmV0dXJuT3V0cHV0KCkpIGlzIG5vdCBOb25l
CisKKyAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3Ioc2VsZik6CisgICAgIiIiVGVzdHMgdGhlIGJl
aGF2aW9yIG9mIG5vdCBzcGVjaWZ5aW5nIHRoZSBmaWx0ZXIuIiIiCisKKyAgICBzZWxmLlJ1bkFu
ZFZlcmlmeShOb25lLCBBQ1RJVkVfVEVTVFMpCisKKyAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3JX
aXRoU2hhcmRzKHNlbGYpOgorICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciB3aXRob3V0IHRoZSBm
aWx0ZXIsIHdpdGggc2hhcmRpbmcgZW5hYmxlZC4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5
V2l0aFNoYXJkaW5nKE5vbmUsIDEsIEFDVElWRV9URVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlm
eVdpdGhTaGFyZGluZyhOb25lLCAyLCBBQ1RJVkVfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRWZXJp
ZnlXaXRoU2hhcmRpbmcoTm9uZSwgbGVuKEFDVElWRV9URVNUUykgLSAxLCBBQ1RJVkVfVEVTVFMp
CisgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgbGVuKEFDVElWRV9URVNU
UyksIEFDVElWRV9URVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhOb25l
LCBsZW4oQUNUSVZFX1RFU1RTKSArIDEsIEFDVElWRV9URVNUUykKKworICBkZWYgdGVzdEVtcHR5
RmlsdGVyKHNlbGYpOgorICAgICIiIlRlc3RzIGFuIGVtcHR5IGZpbHRlci4iIiIKKworICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KCcnLCBbXSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGlu
ZygnJywgMSwgW10pCisgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJycsIDIsIFtd
KQorCisgIGRlZiB0ZXN0QmFkRmlsdGVyKHNlbGYpOgorICAgICIiIlRlc3RzIGEgZmlsdGVyIHRo
YXQgbWF0Y2hlcyBub3RoaW5nLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0JhZEZpbHRl
cicsIFtdKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnQmFkRmlsdGVy
JywgW10pCisKKyAgZGVmIHRlc3RGdWxsTmFtZShzZWxmKToKKyAgICAiIiJUZXN0cyBmaWx0ZXJp
bmcgYnkgZnVsbCBuYW1lLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0Zvb1Rlc3QuWHl6
JywgWydGb29UZXN0Llh5eiddKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxl
ZCgnRm9vVGVzdC5YeXonLCBbJ0Zvb1Rlc3QuWHl6J10pCisgICAgc2VsZi5SdW5BbmRWZXJpZnlX
aXRoU2hhcmRpbmcoJ0Zvb1Rlc3QuWHl6JywgNSwgWydGb29UZXN0Llh5eiddKQorCisgIGRlZiB0
ZXN0VW5pdmVyc2FsRmlsdGVycyhzZWxmKToKKyAgICAiIiJUZXN0cyBmaWx0ZXJzIHRoYXQgbWF0
Y2ggZXZlcnl0aGluZy4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqJywgQUNUSVZFX1RF
U1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLionLCBBQ1RJVkVfVEVTVFMpCisgICAgc2Vs
Zi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJyouKicsIGxlbihBQ1RJVkVfVEVTVFMpIC0gMywg
QUNUSVZFX1RFU1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnKics
IEFDVElWRV9URVNUUyArIERJU0FCTEVEX1RFU1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxs
b3dpbmdEaXNhYmxlZCgnKi4qJywgQUNUSVZFX1RFU1RTICsgRElTQUJMRURfVEVTVFMpCisKKyAg
ZGVmIHRlc3RGaWx0ZXJCeVRlc3RDYXNlKHNlbGYpOgorICAgICIiIlRlc3RzIGZpbHRlcmluZyBi
eSB0ZXN0IGNhc2UgbmFtZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdGb29UZXN0Lion
LCBbJ0Zvb1Rlc3QuQWJjJywgJ0Zvb1Rlc3QuWHl6J10pCisKKyAgICBCQVpfVEVTVFMgPSBbJ0Jh
elRlc3QuVGVzdE9uZScsICdCYXpUZXN0LlRlc3RBJywgJ0JhelRlc3QuVGVzdEInXQorICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KCdCYXpUZXN0LionLCBCQVpfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRW
ZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdCYXpUZXN0LionLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCQVpfVEVTVFMgKyBbJ0JhelRlc3QuRElTQUJMRURfVGVzdEMnXSkK
KworICBkZWYgdGVzdEZpbHRlckJ5VGVzdChzZWxmKToKKyAgICAiIiJUZXN0cyBmaWx0ZXJpbmcg
YnkgdGVzdCBuYW1lLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyouVGVzdE9uZScsIFsn
QmFyVGVzdC5UZXN0T25lJywgJ0JhelRlc3QuVGVzdE9uZSddKQorCisgIGRlZiB0ZXN0RmlsdGVy
RGlzYWJsZWRUZXN0cyhzZWxmKToKKyAgICAiIiJTZWxlY3Qgb25seSB0aGUgZGlzYWJsZWQgdGVz
dHMgdG8gcnVuLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0RJU0FCTEVEX0Zvb2JhclRl
c3QuVGVzdDEnLCBbXSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0RJ
U0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnXSkKKworICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KCcqRElTQUJMRURfKicsIFtdKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdE
aXNhYmxlZCgnKkRJU0FCTEVEXyonLCBESVNBQkxFRF9URVNUUykKKworICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KCcqLkRJU0FCTEVEXyonLCBbXSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5n
RGlzYWJsZWQoJyouRElTQUJMRURfKicsIFsKKyAgICAgICAgJ0JhclRlc3QuRElTQUJMRURfVGVz
dEZvdXInLAorICAgICAgICAnQmFyVGVzdC5ESVNBQkxFRF9UZXN0Rml2ZScsCisgICAgICAgICdC
YXpUZXN0LkRJU0FCTEVEX1Rlc3RDJywKKyAgICAgICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuRElT
QUJMRURfVGVzdDInLAorICAgICAgICBdKQorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0RJU0FC
TEVEXyonLCBbXSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0RJU0FC
TEVEXyonLCBbCisgICAgICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LlRlc3QxJywKKyAgICAgICAg
J0RJU0FCTEVEX0Zvb2JhclRlc3QuRElTQUJMRURfVGVzdDInLAorICAgICAgICAnRElTQUJMRURf
Rm9vYmFyYmF6VGVzdC5UZXN0QScsCisgICAgICAgIF0pCisKKyAgZGVmIHRlc3RXaWxkY2FyZElu
VGVzdENhc2VOYW1lKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5nIHdpbGRjYXJkIGluIHRoZSB0
ZXN0IGNhc2UgbmFtZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqYSouKicsIFsKKyAg
ICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCisgICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAorICAg
ICAgICAnQmFyVGVzdC5UZXN0VGhyZWUnLAorCisgICAgICAgICdCYXpUZXN0LlRlc3RPbmUnLAor
ICAgICAgICAnQmF6VGVzdC5UZXN0QScsCisgICAgICAgICdCYXpUZXN0LlRlc3RCJywgXSArIERF
QVRIX1RFU1RTICsgUEFSQU1fVEVTVFMpCisKKyAgZGVmIHRlc3RXaWxkY2FyZEluVGVzdE5hbWUo
c2VsZik6CisgICAgIiIiVGVzdHMgdXNpbmcgd2lsZGNhcmQgaW4gdGhlIHRlc3QgbmFtZS4iIiIK
KworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLipBKicsIFsnRm9vVGVzdC5BYmMnLCAnQmF6VGVz
dC5UZXN0QSddKQorCisgIGRlZiB0ZXN0RmlsdGVyV2l0aG91dERvdChzZWxmKToKKyAgICAiIiJU
ZXN0cyBhIGZpbHRlciB0aGF0IGhhcyBubyAnLicgaW4gaXQuIiIiCisKKyAgICBzZWxmLlJ1bkFu
ZFZlcmlmeSgnKnoqJywgWworICAgICAgICAnRm9vVGVzdC5YeXonLAorCisgICAgICAgICdCYXpU
ZXN0LlRlc3RPbmUnLAorICAgICAgICAnQmF6VGVzdC5UZXN0QScsCisgICAgICAgICdCYXpUZXN0
LlRlc3RCJywKKyAgICAgICAgXSkKKworICBkZWYgdGVzdFR3b1BhdHRlcm5zKHNlbGYpOgorICAg
ICIiIlRlc3RzIGZpbHRlcnMgdGhhdCBjb25zaXN0IG9mIHR3byBwYXR0ZXJucy4iIiIKKworICAg
IHNlbGYuUnVuQW5kVmVyaWZ5KCdGb28qLio6KkEqJywgWworICAgICAgICAnRm9vVGVzdC5BYmMn
LAorICAgICAgICAnRm9vVGVzdC5YeXonLAorCisgICAgICAgICdCYXpUZXN0LlRlc3RBJywKKyAg
ICAgICAgXSkKKworICAgICMgQW4gZW1wdHkgcGF0dGVybiArIGEgbm9uLWVtcHR5IG9uZQorICAg
IHNlbGYuUnVuQW5kVmVyaWZ5KCc6KkEqJywgWydGb29UZXN0LkFiYycsICdCYXpUZXN0LlRlc3RB
J10pCisKKyAgZGVmIHRlc3RUaHJlZVBhdHRlcm5zKHNlbGYpOgorICAgICIiIlRlc3RzIGZpbHRl
cnMgdGhhdCBjb25zaXN0IG9mIHRocmVlIHBhdHRlcm5zLiIiIgorCisgICAgc2VsZi5SdW5BbmRW
ZXJpZnkoJypvbyo6KkEqOipPbmUnLCBbCisgICAgICAgICdGb29UZXN0LkFiYycsCisgICAgICAg
ICdGb29UZXN0Llh5eicsCisKKyAgICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCisKKyAgICAgICAg
J0JhelRlc3QuVGVzdE9uZScsCisgICAgICAgICdCYXpUZXN0LlRlc3RBJywKKyAgICAgICAgXSkK
KworICAgICMgVGhlIDJuZCBwYXR0ZXJuIGlzIGVtcHR5LgorICAgIHNlbGYuUnVuQW5kVmVyaWZ5
KCcqb28qOjoqT25lJywgWworICAgICAgICAnRm9vVGVzdC5BYmMnLAorICAgICAgICAnRm9vVGVz
dC5YeXonLAorCisgICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAorCisgICAgICAgICdCYXpUZXN0
LlRlc3RPbmUnLAorICAgICAgICBdKQorCisgICAgIyBUaGUgbGFzdCAyIHBhdHRlcm5zIGFyZSBl
bXB0eS4KKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKm9vKjo6JywgWworICAgICAgICAnRm9vVGVz
dC5BYmMnLAorICAgICAgICAnRm9vVGVzdC5YeXonLAorICAgICAgICBdKQorCisgIGRlZiB0ZXN0
TmVnYXRpdmVGaWx0ZXJzKHNlbGYpOgorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLUJhelRlc3Qu
VGVzdE9uZScsIFsKKyAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKKyAgICAgICAgJ0Zvb1Rlc3QuWHl6
JywKKworICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKKyAgICAgICAgJ0JhclRlc3QuVGVzdFR3
bycsCisgICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCisKKyAgICAgICAgJ0JhelRlc3QuVGVz
dEEnLAorICAgICAgICAnQmF6VGVzdC5UZXN0QicsCisgICAgICAgIF0gKyBERUFUSF9URVNUUyAr
IFBBUkFNX1RFU1RTKQorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyotRm9vVGVzdC5BYmM6QmF6
VGVzdC4qJywgWworICAgICAgICAnRm9vVGVzdC5YeXonLAorCisgICAgICAgICdCYXJUZXN0LlRl
c3RPbmUnLAorICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKKyAgICAgICAgJ0JhclRlc3QuVGVz
dFRocmVlJywKKyAgICAgICAgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMpCisKKyAgICBz
ZWxmLlJ1bkFuZFZlcmlmeSgnQmFyVGVzdC4qLUJhclRlc3QuVGVzdE9uZScsIFsKKyAgICAgICAg
J0JhclRlc3QuVGVzdFR3bycsCisgICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCisgICAgICAg
IF0pCisKKyAgICAjIFRlc3RzIHdpdGhvdXQgbGVhZGluZyAnKicuCisgICAgc2VsZi5SdW5BbmRW
ZXJpZnkoJy1Gb29UZXN0LkFiYzpGb29UZXN0Llh5ejpCYXpUZXN0LionLCBbCisgICAgICAgICdC
YXJUZXN0LlRlc3RPbmUnLAorICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKKyAgICAgICAgJ0Jh
clRlc3QuVGVzdFRocmVlJywKKyAgICAgICAgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMp
CisKKyAgICAjIFZhbHVlIHBhcmFtZXRlcml6ZWQgdGVzdHMuCisgICAgc2VsZi5SdW5BbmRWZXJp
ZnkoJyovKicsIFBBUkFNX1RFU1RTKQorCisgICAgIyBWYWx1ZSBwYXJhbWV0ZXJpemVkIHRlc3Rz
IGZpbHRlcmluZyBieSB0aGUgc2VxdWVuY2UgbmFtZS4KKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgn
U2VxUC8qJywgWworICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMCcsCisgICAgICAgICdT
ZXFQL1BhcmFtVGVzdC5UZXN0WC8xJywKKyAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzAn
LAorICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMScsCisgICAgICAgIF0pCisKKyAgICAj
IFZhbHVlIHBhcmFtZXRlcml6ZWQgdGVzdHMgZmlsdGVyaW5nIGJ5IHRoZSB0ZXN0IG5hbWUuCisg
ICAgc2VsZi5SdW5BbmRWZXJpZnkoJyovMCcsIFsKKyAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRl
c3RYLzAnLAorICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMCcsCisgICAgICAgICdTZXFR
L1BhcmFtVGVzdC5UZXN0WC8wJywKKyAgICAgICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RZLzAnLAor
ICAgICAgICBdKQorCisgIGRlZiB0ZXN0RmxhZ092ZXJyaWRlc0VudlZhcihzZWxmKToKKyAgICAi
IiJUZXN0cyB0aGF0IHRoZSBmaWx0ZXIgZmxhZyBvdmVycmlkZXMgdGhlIGZpbHRlcmluZyBlbnYu
IHZhcmlhYmxlLiIiIgorCisgICAgU2V0RW52VmFyKEZJTFRFUl9FTlZfVkFSLCAnRm9vKicpCisg
ICAgYXJncyA9IFsnLS0lcz0lcycgJSAoRklMVEVSX0ZMQUcsICcqT25lJyldCisgICAgdGVzdHNf
cnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KGFyZ3MpWzBdCisgICAgU2V0RW52VmFyKEZJTFRF
Ul9FTlZfVkFSLCBOb25lKQorCisgICAgc2VsZi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIFsn
QmFyVGVzdC5UZXN0T25lJywgJ0JhelRlc3QuVGVzdE9uZSddKQorCisgIGRlZiB0ZXN0U2hhcmRT
dGF0dXNGaWxlSXNDcmVhdGVkKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgdGhlIHNoYXJkIGZp
bGUgaXMgY3JlYXRlZCBpZiBzcGVjaWZpZWQgaW4gdGhlIGVudmlyb25tZW50LiIiIgorCisgICAg
c2hhcmRfc3RhdHVzX2ZpbGUgPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1w
RGlyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYXJkX3N0YXR1
c19maWxlJykKKyAgICBzZWxmLmFzc2VydF8obm90IG9zLnBhdGguZXhpc3RzKHNoYXJkX3N0YXR1
c19maWxlKSkKKworICAgIGV4dHJhX2VudiA9IHtTSEFSRF9TVEFUVVNfRklMRV9FTlZfVkFSOiBz
aGFyZF9zdGF0dXNfZmlsZX0KKyAgICB0cnk6CisgICAgICBJbnZva2VXaXRoTW9kaWZpZWRFbnYo
ZXh0cmFfZW52LCBSdW5BbmRSZXR1cm5PdXRwdXQpCisgICAgZmluYWxseToKKyAgICAgIHNlbGYu
YXNzZXJ0Xyhvcy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkpCisgICAgICBvcy5yZW1v
dmUoc2hhcmRfc3RhdHVzX2ZpbGUpCisKKyAgZGVmIHRlc3RTaGFyZFN0YXR1c0ZpbGVJc0NyZWF0
ZWRXaXRoTGlzdFRlc3RzKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgdGhlIHNoYXJkIGZpbGUg
aXMgY3JlYXRlZCB3aXRoIHRoZSAibGlzdF90ZXN0cyIgZmxhZy4iIiIKKworICAgIHNoYXJkX3N0
YXR1c19maWxlID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGFyZF9zdGF0dXNfZmlsZTIn
KQorICAgIHNlbGYuYXNzZXJ0Xyhub3Qgb3MucGF0aC5leGlzdHMoc2hhcmRfc3RhdHVzX2ZpbGUp
KQorCisgICAgZXh0cmFfZW52ID0ge1NIQVJEX1NUQVRVU19GSUxFX0VOVl9WQVI6IHNoYXJkX3N0
YXR1c19maWxlfQorICAgIHRyeToKKyAgICAgIG91dHB1dCA9IEludm9rZVdpdGhNb2RpZmllZEVu
dihleHRyYV9lbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVuQW5k
UmV0dXJuT3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtMSVNU
X1RFU1RTX0ZMQUddKQorICAgIGZpbmFsbHk6CisgICAgICAjIFRoaXMgYXNzZXJ0aW9uIGVuc3Vy
ZXMgdGhhdCBHb29nbGUgVGVzdCBlbnVtZXJhdGVkIHRoZSB0ZXN0cyBhcworICAgICAgIyBvcHBv
c2VkIHRvIHJ1bm5pbmcgdGhlbS4KKyAgICAgIHNlbGYuYXNzZXJ0XygnWz09PT09PT09PT1dJyBu
b3QgaW4gb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIG91dHB1dCBkdXJp
bmcgdGVzdCBlbnVtZXJhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAnUGxlYXNlIGVuc3Vy
ZSB0aGF0IExJU1RfVEVTVFNfRkxBRyBpcyBhc3NpZ25lZCB0aGVcbicKKyAgICAgICAgICAgICAg
ICAgICAnY29ycmVjdCBmbGFnIHZhbHVlIGZvciBsaXN0aW5nIEdvb2dsZSBUZXN0IHRlc3RzLicp
CisKKyAgICAgIHNlbGYuYXNzZXJ0Xyhvcy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkp
CisgICAgICBvcy5yZW1vdmUoc2hhcmRfc3RhdHVzX2ZpbGUpCisKKyAgaWYgU1VQUE9SVFNfREVB
VEhfVEVTVFM6CisgICAgZGVmIHRlc3RTaGFyZGluZ1dvcmtzV2l0aERlYXRoVGVzdHMoc2VsZik6
CisgICAgICAiIiJUZXN0cyBpbnRlZ3JhdGlvbiB3aXRoIGRlYXRoIHRlc3RzIGFuZCBzaGFyZGlu
Zy4iIiIKKworICAgICAgZ3Rlc3RfZmlsdGVyID0gJ0hhc0RlYXRoVGVzdC4qOlNlcVAvKicKKyAg
ICAgIGV4cGVjdGVkX3Rlc3RzID0gWworICAgICAgICAgICdIYXNEZWF0aFRlc3QuVGVzdDEnLAor
ICAgICAgICAgICdIYXNEZWF0aFRlc3QuVGVzdDInLAorCisgICAgICAgICAgJ1NlcVAvUGFyYW1U
ZXN0LlRlc3RYLzAnLAorICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8xJywKKyAgICAg
ICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMCcsCisgICAgICAgICAgJ1NlcVAvUGFyYW1UZXN0
LlRlc3RZLzEnLAorICAgICAgICAgIF0KKworICAgICAgZm9yIGZsYWcgaW4gWyctLWd0ZXN0X2Rl
YXRoX3Rlc3Rfc3R5bGU9dGhyZWFkc2FmZScsCisgICAgICAgICAgICAgICAgICAgJy0tZ3Rlc3Rf
ZGVhdGhfdGVzdF9zdHlsZT1mYXN0J106CisgICAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNo
YXJkaW5nKGd0ZXN0X2ZpbHRlciwgMywgZXhwZWN0ZWRfdGVzdHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2V4aXRfMD1UcnVlLCBhcmdzPVtmbGFnXSkKKyAg
ICAgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoZ3Rlc3RfZmlsdGVyLCA1LCBleHBl
Y3RlZF90ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tf
ZXhpdF8wPVRydWUsIGFyZ3M9W2ZsYWddKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgor
ICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0Xy5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kMzM1YjYwMzkxZDFkNDY4YTQxMTYxYjM4YzE0ZWNjYmYxZDEzODA1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWZpbHRlci11bml0
dGVzdF8uY2MKQEAgLTAsMCArMSwxMzcgQEAKKy8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5j
LgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworCisvLyBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0IHRlc3QgZmls
dGVycy4KKy8vCisvLyBBIHVzZXIgY2FuIHNwZWNpZnkgd2hpY2ggdGVzdChzKSBpbiBhIEdvb2ds
ZSBUZXN0IHByb2dyYW0gdG8gcnVuIHZpYQorLy8gZWl0aGVyIHRoZSBHVEVTVF9GSUxURVIgZW52
aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlIC0tZ3Rlc3RfZmlsdGVyCisvLyBmbGFnLiAgVGhpcyBp
cyB1c2VkIGZvciB0ZXN0aW5nIHN1Y2ggZnVuY3Rpb25hbGl0eS4KKy8vCisvLyBUaGUgcHJvZ3Jh
bSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRlc3QuICBEb24ndCBydW4gaXQK
Ky8vIGRpcmVjdGx5LgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsK
KworLy8gVGVzdCBjYXNlIEZvb1Rlc3QuCisKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7Cit9OworCitURVNUX0YoRm9vVGVzdCwgQWJjKSB7Cit9CisKK1RFU1RfRihGb29U
ZXN0LCBYeXopIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKKy8vIFRl
c3QgY2FzZSBCYXJUZXN0LgorCitURVNUKEJhclRlc3QsIFRlc3RPbmUpIHsKK30KKworVEVTVChC
YXJUZXN0LCBUZXN0VHdvKSB7Cit9CisKK1RFU1QoQmFyVGVzdCwgVGVzdFRocmVlKSB7Cit9CisK
K1RFU1QoQmFyVGVzdCwgRElTQUJMRURfVGVzdEZvdXIpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3Rl
ZCBmYWlsdXJlLiI7Cit9CisKK1RFU1QoQmFyVGVzdCwgRElTQUJMRURfVGVzdEZpdmUpIHsKKyAg
RkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKKy8vIFRlc3QgY2FzZSBCYXpUZXN0
LgorCitURVNUKEJhelRlc3QsIFRlc3RPbmUpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWls
dXJlLiI7Cit9CisKK1RFU1QoQmF6VGVzdCwgVGVzdEEpIHsKK30KKworVEVTVChCYXpUZXN0LCBU
ZXN0QikgeworfQorCitURVNUKEJhelRlc3QsIERJU0FCTEVEX1Rlc3RDKSB7CisgIEZBSUwoKSA8
PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOworfQorCisvLyBUZXN0IGNhc2UgSGFzRGVhdGhUZXN0CisK
K1RFU1QoSGFzRGVhdGhUZXN0LCBUZXN0MSkgeworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVE
KGV4aXQoMSksICIuKiIpOworfQorCisvLyBXZSBuZWVkIGF0IGxlYXN0IHR3byBkZWF0aCB0ZXN0
cyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgYWxsIGRlYXRoIHRlc3RzCisvLyBhcmVuJ3Qgb24gdGhl
IGZpcnN0IHNoYXJkLgorVEVTVChIYXNEZWF0aFRlc3QsIFRlc3QyKSB7CisgIEVYUEVDVF9ERUFU
SF9JRl9TVVBQT1JURUQoZXhpdCgxKSwgIi4qIik7Cit9CisKKy8vIFRlc3QgY2FzZSBGb29iYXJU
ZXN0CisKK1RFU1QoRElTQUJMRURfRm9vYmFyVGVzdCwgVGVzdDEpIHsKKyAgRkFJTCgpIDw8ICJF
eHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKK1RFU1QoRElTQUJMRURfRm9vYmFyVGVzdCwgRElTQUJM
RURfVGVzdDIpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKKy8vIFRl
c3QgY2FzZSBGb29iYXJiYXpUZXN0CisKK1RFU1QoRElTQUJMRURfRm9vYmFyYmF6VGVzdCwgVGVz
dEEpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKK2NsYXNzIFBhcmFt
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4geworfTsKKworVEVTVF9Q
KFBhcmFtVGVzdCwgVGVzdFgpIHsKK30KKworVEVTVF9QKFBhcmFtVGVzdCwgVGVzdFkpIHsKK30K
KworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxUCwgUGFyYW1UZXN0LCB0ZXN0aW5nOjpWYWx1
ZXMoMSwgMikpOworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxUSwgUGFyYW1UZXN0LCB0ZXN0
aW5nOjpWYWx1ZXMoNSwgNikpOworCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIgKiphcmd2KSB7CisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFy
Z3YpOworCisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtanNvbi1vdXRmaWxlcy10ZXN0LnB5IGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWpzb24tb3V0ZmlsZXMtdGVz
dC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jOTliZTQ4ZThhYzM2NTA5ZWQzMmVhMmZiOGU0ZmExZWE3ZmM4MzY0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LWpzb24tb3V0ZmlsZXMtdGVzdC5weQpAQCAtMCwwICsxLDE2MiBAQAorIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCisjIENvcHlyaWdodCAyMDE4LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVW5pdCB0ZXN0IGZvciB0aGUgZ3Rlc3Rf
anNvbl9vdXRwdXQgbW9kdWxlLiIiIgorCitpbXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQg
Z3Rlc3RfanNvbl90ZXN0X3V0aWxzCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitHVEVTVF9P
VVRQVVRfU1VCRElSID0gJ2pzb25fb3V0ZmlsZXMnCitHVEVTVF9PVVRQVVRfMV9URVNUID0gJ2d0
ZXN0X3htbF9vdXRmaWxlMV90ZXN0XycKK0dURVNUX09VVFBVVF8yX1RFU1QgPSAnZ3Rlc3RfeG1s
X291dGZpbGUyX3Rlc3RfJworCitFWFBFQ1RFRF8xID0geworICAgIHUndGVzdHMnOiAxLAorICAg
IHUnZmFpbHVyZXMnOiAwLAorICAgIHUnZGlzYWJsZWQnOiAwLAorICAgIHUnZXJyb3JzJzogMCwK
KyAgICB1J3RpbWUnOiB1JyonLAorICAgIHUndGltZXN0YW1wJzogdScqJywKKyAgICB1J25hbWUn
OiB1J0FsbFRlc3RzJywKKyAgICB1J3Rlc3RzdWl0ZXMnOiBbeworICAgICAgICB1J25hbWUnOiB1
J1Byb3BlcnR5T25lJywKKyAgICAgICAgdSd0ZXN0cyc6IDEsCisgICAgICAgIHUnZmFpbHVyZXMn
OiAwLAorICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgdSdlcnJvcnMnOiAwLAorICAg
ICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICB1J3Rlc3RzdWl0ZSc6IFt7CisgICAgICAgICAg
ICB1J25hbWUnOiB1J1Rlc3RTb21lUHJvcGVydGllcycsCisgICAgICAgICAgICB1J3N0YXR1cyc6
IHUnUlVOJywKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J2NsYXNz
bmFtZSc6IHUnUHJvcGVydHlPbmUnLAorICAgICAgICAgICAgdSdTZXRVcFByb3AnOiB1JzEnLAor
ICAgICAgICAgICAgdSdUZXN0U29tZVByb3BlcnR5JzogdScxJywKKyAgICAgICAgICAgIHUnVGVh
ckRvd25Qcm9wJzogdScxJywKKyAgICAgICAgfV0sCisgICAgfV0sCit9CisKK0VYUEVDVEVEXzIg
PSB7CisgICAgdSd0ZXN0cyc6IDEsCisgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgdSdkaXNhYmxl
ZCc6IDAsCisgICAgdSdlcnJvcnMnOiAwLAorICAgIHUndGltZSc6IHUnKicsCisgICAgdSd0aW1l
c3RhbXAnOiB1JyonLAorICAgIHUnbmFtZSc6IHUnQWxsVGVzdHMnLAorICAgIHUndGVzdHN1aXRl
cyc6IFt7CisgICAgICAgIHUnbmFtZSc6IHUnUHJvcGVydHlUd28nLAorICAgICAgICB1J3Rlc3Rz
JzogMSwKKyAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgIHUnZGlzYWJsZWQnOiAwLAor
ICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgIHUn
dGVzdHN1aXRlJzogW3sKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnVGVzdFNvbWVQcm9wZXJ0aWVz
JywKKyAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgdSd0aW1lJzog
dScqJywKKyAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdQcm9wZXJ0eVR3bycsCisgICAgICAg
ICAgICB1J1NldFVwUHJvcCc6IHUnMicsCisgICAgICAgICAgICB1J1Rlc3RTb21lUHJvcGVydHkn
OiB1JzInLAorICAgICAgICAgICAgdSdUZWFyRG93blByb3AnOiB1JzInLAorICAgICAgICB9XSwK
KyAgICB9XSwKK30KKworCitjbGFzcyBHVGVzdEpzb25PdXRGaWxlc1Rlc3QoZ3Rlc3RfdGVzdF91
dGlscy5UZXN0Q2FzZSk6CisgICIiIlVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyBKU09OIG91
dHB1dCBmdW5jdGlvbmFsaXR5LiIiIgorCisgIGRlZiBzZXRVcChzZWxmKToKKyAgICAjIFdlIHdh
bnQgdGhlIHRyYWlsaW5nICcvJyB0aGF0IHRoZSBsYXN0ICIiIHByb3ZpZGVzIGluIG9zLnBhdGgu
am9pbiwgZm9yCisgICAgIyB0ZWxsaW5nIEdvb2dsZSBUZXN0IHRvIGNyZWF0ZSBhbiBvdXRwdXQg
ZGlyZWN0b3J5IGluc3RlYWQgb2YgYSBzaW5nbGUgZmlsZQorICAgICMgZm9yIHhtbCBvdXRwdXQu
CisgICAgc2VsZi5vdXRwdXRfZGlyXyA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdl
dFRlbXBEaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX09V
VFBVVF9TVUJESVIsICcnKQorICAgIHNlbGYuRGVsZXRlRmlsZXNBbmREaXIoKQorCisgIGRlZiB0
ZWFyRG93bihzZWxmKToKKyAgICBzZWxmLkRlbGV0ZUZpbGVzQW5kRGlyKCkKKworICBkZWYgRGVs
ZXRlRmlsZXNBbmREaXIoc2VsZik6CisgICAgdHJ5OgorICAgICAgb3MucmVtb3ZlKG9zLnBhdGgu
am9pbihzZWxmLm91dHB1dF9kaXJfLCBHVEVTVF9PVVRQVVRfMV9URVNUICsgJy5qc29uJykpCisg
ICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgcGFzcworICAgIHRyeToKKyAgICAgIG9zLnJlbW92
ZShvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGlyXywgR1RFU1RfT1VUUFVUXzJfVEVTVCArICcu
anNvbicpKQorICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgIHBhc3MKKyAgICB0cnk6CisgICAg
ICBvcy5ybWRpcihzZWxmLm91dHB1dF9kaXJfKQorICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAg
IHBhc3MKKworICBkZWYgdGVzdE91dGZpbGUxKHNlbGYpOgorICAgIHNlbGYuX1Rlc3RPdXRGaWxl
KEdURVNUX09VVFBVVF8xX1RFU1QsIEVYUEVDVEVEXzEpCisKKyAgZGVmIHRlc3RPdXRmaWxlMihz
ZWxmKToKKyAgICBzZWxmLl9UZXN0T3V0RmlsZShHVEVTVF9PVVRQVVRfMl9URVNULCBFWFBFQ1RF
RF8yKQorCisgIGRlZiBfVGVzdE91dEZpbGUoc2VsZiwgdGVzdF9uYW1lLCBleHBlY3RlZCk6Cisg
ICAgZ3Rlc3RfcHJvZ19wYXRoID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBh
dGgodGVzdF9uYW1lKQorICAgIGNvbW1hbmQgPSBbZ3Rlc3RfcHJvZ19wYXRoLCAnLS1ndGVzdF9v
dXRwdXQ9anNvbjolcycgJSBzZWxmLm91dHB1dF9kaXJfXQorICAgIHAgPSBndGVzdF90ZXN0X3V0
aWxzLlN1YnByb2Nlc3MoY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdvcmtpbmdfZGlyPWd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpKQorICAgIHNlbGYu
YXNzZXJ0XyhwLmV4aXRlZCkKKyAgICBzZWxmLmFzc2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkK
KworICAgICMgRklYTUU6IGxpYnRvb2wgY2F1c2VzIHRoZSBidWlsdCB0ZXN0IGJpbmFyeSB0byBi
ZQorICAgICMgICBuYW1lZCBsdC1ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8gaW5zdGVhZCBvZgor
ICAgICMgICBndGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8uICBUbyBhY2NvdW50IGZvciB0aGlzIHBv
c3NpYmlsaXR5LCB3ZQorICAgICMgICBhbGxvdyBib3RoIG5hbWVzIGluIHRoZSBmb2xsb3dpbmcg
Y29kZS4gIFdlIHNob3VsZCByZW1vdmUgdGhpcworICAgICMgICB3aGVuIGxpYnRvb2wgcmVwbGFj
ZW1lbnQgdG9vbCBpcyByZWFkeS4KKyAgICBvdXRwdXRfZmlsZV9uYW1lMSA9IHRlc3RfbmFtZSAr
ICcuanNvbicKKyAgICBvdXRwdXRfZmlsZTEgPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGly
Xywgb3V0cHV0X2ZpbGVfbmFtZTEpCisgICAgb3V0cHV0X2ZpbGVfbmFtZTIgPSAnbHQtJyArIG91
dHB1dF9maWxlX25hbWUxCisgICAgb3V0cHV0X2ZpbGUyID0gb3MucGF0aC5qb2luKHNlbGYub3V0
cHV0X2Rpcl8sIG91dHB1dF9maWxlX25hbWUyKQorICAgIHNlbGYuYXNzZXJ0Xyhvcy5wYXRoLmlz
ZmlsZShvdXRwdXRfZmlsZTEpIG9yIG9zLnBhdGguaXNmaWxlKG91dHB1dF9maWxlMiksCisgICAg
ICAgICAgICAgICAgIG91dHB1dF9maWxlMSkKKworICAgIGlmIG9zLnBhdGguaXNmaWxlKG91dHB1
dF9maWxlMSk6CisgICAgICB3aXRoIG9wZW4ob3V0cHV0X2ZpbGUxKSBhcyBmOgorICAgICAgICBh
Y3R1YWwgPSBqc29uLmxvYWQoZikKKyAgICBlbHNlOgorICAgICAgd2l0aCBvcGVuKG91dHB1dF9m
aWxlMikgYXMgZjoKKyAgICAgICAgYWN0dWFsID0ganNvbi5sb2FkKGYpCisgICAgc2VsZi5hc3Nl
cnRFcXVhbChleHBlY3RlZCwgZ3Rlc3RfanNvbl90ZXN0X3V0aWxzLm5vcm1hbGl6ZShhY3R1YWwp
KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIG9zLmVudmlyb25bJ0dURVNUX1NU
QUNLX1RSQUNFX0RFUFRIJ10gPSAnMCcKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1qc29uLW91dHB1
dC11bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1q
c29uLW91dHB1dC11bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2RjZDVmYTFjNDYzOWYxNTJmYjU0
ZTUwZmI5YzA1OThhMGU0NmEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWpzb24tb3V0cHV0LXVuaXR0ZXN0LnB5CkBAIC0wLDAgKzEs
NjE4IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IDIwMTgsIEdvb2dsZSBJ
bmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJVbml0
IHRlc3QgZm9yIHRoZSBndGVzdF9qc29uX291dHB1dCBtb2R1bGUuIiIiCisKK2ltcG9ydCBkYXRl
dGltZQoraW1wb3J0IGVycm5vCitpbXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2lt
cG9ydCBzeXMKKworaW1wb3J0IGd0ZXN0X2pzb25fdGVzdF91dGlscworaW1wb3J0IGd0ZXN0X3Rl
c3RfdXRpbHMKKworR1RFU1RfRklMVEVSX0ZMQUcgPSAnLS1ndGVzdF9maWx0ZXInCitHVEVTVF9M
SVNUX1RFU1RTX0ZMQUcgPSAnLS1ndGVzdF9saXN0X3Rlc3RzJworR1RFU1RfT1VUUFVUX0ZMQUcg
PSAnLS1ndGVzdF9vdXRwdXQnCitHVEVTVF9ERUZBVUxUX09VVFBVVF9GSUxFID0gJ3Rlc3RfZGV0
YWlsLmpzb24nCitHVEVTVF9QUk9HUkFNX05BTUUgPSAnZ3Rlc3RfeG1sX291dHB1dF91bml0dGVz
dF8nCisKKyMgVGhlIGZsYWcgaW5kaWNhdGluZyBzdGFja3RyYWNlcyBhcmUgbm90IHN1cHBvcnRl
ZAorTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZMQUcgPSAnLS1ub19zdGFja3RyYWNlX3N1cHBvcnQn
CisKK1NVUFBPUlRTX1NUQUNLX1RSQUNFUyA9IE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFHIG5v
dCBpbiBzeXMuYXJndgorCitpZiBTVVBQT1JUU19TVEFDS19UUkFDRVM6CisgIFNUQUNLX1RSQUNF
X1RFTVBMQVRFID0gJ1xuU3RhY2sgdHJhY2U6XG4qJworZWxzZToKKyAgU1RBQ0tfVFJBQ0VfVEVN
UExBVEUgPSAnJworCitFWFBFQ1RFRF9OT05fRU1QVFkgPSB7CisgICAgdSd0ZXN0cyc6IDIzLAor
ICAgIHUnZmFpbHVyZXMnOiA0LAorICAgIHUnZGlzYWJsZWQnOiAyLAorICAgIHUnZXJyb3JzJzog
MCwKKyAgICB1J3RpbWVzdGFtcCc6IHUnKicsCisgICAgdSd0aW1lJzogdScqJywKKyAgICB1J2Fk
X2hvY19wcm9wZXJ0eSc6IHUnNDInLAorICAgIHUnbmFtZSc6IHUnQWxsVGVzdHMnLAorICAgIHUn
dGVzdHN1aXRlcyc6IFsKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdTdWNjZXNz
ZnVsVGVzdCcsCisgICAgICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVy
ZXMnOiAwLAorICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9y
cyc6IDAsCisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3Vp
dGUnOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1
J1N1Y2NlZWRzJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAg
ICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xh
c3NuYW1lJzogdSdTdWNjZXNzZnVsVGVzdCcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnRmFpbGVk
VGVzdCcsCisgICAgICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMn
OiAxLAorICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6
IDAsCisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUn
OiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0Zh
aWxzJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAg
ICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1l
JzogdSdGYWlsZWRUZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdmYWlsdXJlcyc6IFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2Zh
aWx1cmUnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2d0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3RfLmNjOipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdF
eHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4nCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHUnICAxXG4gIDInICsgU1RBQ0tfVFJBQ0VfVEVNUExBVEUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdSd0eXBlJzogdScnCisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnRGlzYWJs
ZWRUZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJl
cyc6IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMSwKKyAgICAgICAgICAgIHUnZXJyb3Jz
JzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0
ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUn
RElTQUJMRURfdGVzdF9ub3RfcnVuJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1
J05PVFJVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAg
ICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdEaXNhYmxlZFRlc3QnCisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1J25h
bWUnOiB1J01peGVkUmVzdWx0VGVzdCcsCisgICAgICAgICAgICB1J3Rlc3RzJzogMywKKyAgICAg
ICAgICAgIHUnZmFpbHVyZXMnOiAxLAorICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDEsCisgICAg
ICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAg
ICAgICAgdSd0ZXN0c3VpdGUnOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICB1J25hbWUnOiB1J1N1Y2NlZWRzJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMn
OiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAg
ICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdNaXhlZFJlc3VsdFRlc3QnCisgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUn
RmFpbHMnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAg
ICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25h
bWUnOiB1J01peGVkUmVzdWx0VGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUnZmFpbHVyZXMn
OiBbCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdSdmYWlsdXJlJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdndGVzdF94
bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHUnRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuJworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1JyAgMVxuICAyJyArIFNUQUNLX1RSQUNFX1RFTVBMQVRFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUndHlwZSc6IHUnJworICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1J2ZhaWx1cmUnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
J2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOipcbicKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdSdFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4nCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnICAyXG4gIDMnICsgU1RBQ0tfVFJBQ0VfVEVN
UExBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSd0eXBlJzogdScnCisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdE
SVNBQkxFRF90ZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J05PVFJVTics
CisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAg
IHUnY2xhc3NuYW1lJzogdSdNaXhlZFJlc3VsdFRlc3QnCisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1
J1htbFF1b3RpbmdUZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAg
dSdmYWlsdXJlcyc6IDEsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAg
IHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1
J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUn
bmFtZSc6IHUnT3V0cHV0c0NEYXRhJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1
J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAg
ICAgICAgIHUnY2xhc3NuYW1lJzogdSdYbWxRdW90aW5nVGVzdCcsCisgICAgICAgICAgICAgICAg
ICAgIHUnZmFpbHVyZXMnOiBbCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdSdmYWlsdXJlJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdSdndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqXG4nCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHUnRmFpbGVkXG5YTUwgb3V0cHV0OiA8P3htbCBlbmNvZGluZz0i
dXRmLTgiPicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSc8dG9wPjwhW0NEQVRB
W2NkYXRhIHRleHRdXT48L3RvcD4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U1RBQ0tfVFJBQ0VfVEVNUExBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSd0eXBl
JzogdScnCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIHUnbmFtZSc6IHUnSW52YWxpZENoYXJhY3RlcnNUZXN0JywKKyAgICAgICAg
ICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDEsCisgICAgICAgICAg
ICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAg
IHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnSW52YWxpZENoYXJhY3RlcnNJ
bk1lc3NhZ2UnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAg
ICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFz
c25hbWUnOiB1J0ludmFsaWRDaGFyYWN0ZXJzVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUn
ZmFpbHVyZXMnOiBbCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdSdmYWlsdXJlJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dSdndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqXG4nCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHUnRmFpbGVkXG5JbnZhbGlkIGNoYXJhY3RlcnMgaW4gYnJhY2tldHMnCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnIFtceDAxXHgwMl0nICsgU1RBQ0tfVFJB
Q0VfVEVNUExBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSd0eXBlJzogdScnCisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHUnbmFtZSc6IHUnUHJvcGVydHlSZWNvcmRpbmdUZXN0JywKKyAgICAgICAgICAgIHUndGVz
dHMnOiA0LAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgICAgICB1J2Rpc2Fi
bGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6
IHUnKicsCisgICAgICAgICAgICB1J1NldFVwVGVzdENhc2UnOiB1J3llcycsCisgICAgICAgICAg
ICB1J1RlYXJEb3duVGVzdENhc2UnOiB1J2F5ZScsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6
IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnT25l
UHJvcGVydHknLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAg
ICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFz
c25hbWUnOiB1J1Byb3BlcnR5UmVjb3JkaW5nVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUn
a2V5XzEnOiB1JzEnCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnSW50VmFsdWVkUHJvcGVydHknLAorICAgICAgICAg
ICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1l
JzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1Byb3BlcnR5UmVj
b3JkaW5nVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUna2V5X2ludCc6IHUnMScKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSdu
YW1lJzogdSdUaHJlZVByb3BlcnRpZXMnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6
IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAg
ICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1Byb3BlcnR5UmVjb3JkaW5nVGVzdCcsCisgICAgICAg
ICAgICAgICAgICAgIHUna2V5XzEnOiB1JzEnLAorICAgICAgICAgICAgICAgICAgICB1J2tleV8y
JzogdScyJywKKyAgICAgICAgICAgICAgICAgICAgdSdrZXlfMyc6IHUnMycKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzog
dSdUd29WYWx1ZXNGb3JPbmVLZXlVc2VzTGFzdFZhbHVlJywKKyAgICAgICAgICAgICAgICAgICAg
dSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisg
ICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdQcm9wZXJ0eVJlY29yZGluZ1Rlc3Qn
LAorICAgICAgICAgICAgICAgICAgICB1J2tleV8xJzogdScyJworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1l
JzogdSdOb0ZpeHR1cmVUZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiAzLAorICAgICAgICAg
ICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAg
ICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAg
ICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHUnbmFtZSc6IHUnUmVjb3JkUHJvcGVydHknLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1
cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAg
ICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J05vRml4dHVyZVRlc3QnLAorICAgICAgICAgICAg
ICAgICAgICB1J2tleSc6IHUnMScKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdFeHRlcm5hbFV0aWxpdHlUaGF0Q2Fs
bHNSZWNvcmRJbnRWYWx1ZWRQcm9wZXJ0eScsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVz
JzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAg
ICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnTm9GaXh0dXJlVGVzdCcsCisgICAgICAgICAgICAg
ICAgICAgIHUna2V5X2Zvcl91dGlsaXR5X2ludCc6IHUnMScKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHUnRXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkU3RyaW5nVmFs
dWVkUHJvcGVydHknLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAg
ICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdj
bGFzc25hbWUnOiB1J05vRml4dHVyZVRlc3QnLAorICAgICAgICAgICAgICAgICAgICB1J2tleV9m
b3JfdXRpbGl0eV9zdHJpbmcnOiB1JzEnCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
XQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1J1R5cGVkVGVz
dC8wJywKKyAgICAgICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6
IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzog
MCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6
IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnSGFz
VHlwZVBhcmFtQXR0cmlidXRlJywKKyAgICAgICAgICAgICAgICAgICAgdSd0eXBlX3BhcmFtJzog
dSdpbnQnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAg
ICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25h
bWUnOiB1J1R5cGVkVGVzdC8wJworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdUeXBlZFRlc3QvMScs
CisgICAgICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAwLAor
ICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6IDAsCisg
ICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBbCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0hhc1R5cGVQ
YXJhbUF0dHJpYnV0ZScsCisgICAgICAgICAgICAgICAgICAgIHUndHlwZV9wYXJhbSc6IHUnbG9u
ZycsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAg
ICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6
IHUnVHlwZWRUZXN0LzEnCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAg
ICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1J1NpbmdsZS9UeXBlUGFyYW1l
dGVyaXplZFRlc3RDYXNlLzAnLAorICAgICAgICAgICAgdSd0ZXN0cyc6IDEsCisgICAgICAgICAg
ICB1J2ZhaWx1cmVzJzogMCwKKyAgICAgICAgICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAgICAg
ICAgdSdlcnJvcnMnOiAwLAorICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAg
IHUndGVzdHN1aXRlJzogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
dSduYW1lJzogdSdIYXNUeXBlUGFyYW1BdHRyaWJ1dGUnLAorICAgICAgICAgICAgICAgICAgICB1
J3R5cGVfcGFyYW0nOiB1J2ludCcsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdS
VU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAg
ICAgICB1J2NsYXNzbmFtZSc6IHUnU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMCcK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIHUnbmFtZSc6IHUnU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2Uv
MScsCisgICAgICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAw
LAorICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6IDAs
CisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBb
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0hhc1R5
cGVQYXJhbUF0dHJpYnV0ZScsCisgICAgICAgICAgICAgICAgICAgIHUndHlwZV9wYXJhbSc6IHUn
bG9uZycsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAg
ICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFt
ZSc6IHUnU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMScKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUn
bmFtZSc6IHUnU2luZ2xlL1ZhbHVlUGFyYW1UZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiA0
LAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzog
MCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKics
CisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHUnbmFtZSc6IHUnSGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8wJywKKyAgICAg
ICAgICAgICAgICAgICAgdSd2YWx1ZV9wYXJhbSc6IHUnMzMnLAorICAgICAgICAgICAgICAgICAg
ICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywK
KyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1NpbmdsZS9WYWx1ZVBhcmFtVGVz
dCcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgdSduYW1lJzogdSdIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzEnLAorICAgICAgICAgICAg
ICAgICAgICB1J3ZhbHVlX3BhcmFtJzogdSc0MicsCisgICAgICAgICAgICAgICAgICAgIHUnc3Rh
dHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAg
ICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnU2luZ2xlL1ZhbHVlUGFyYW1UZXN0JworICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1
J25hbWUnOiB1J0Fub3RoZXJUZXN0VGhhdEhhc1ZhbHVlUGFyYW1BdHRyaWJ1dGUvMCcsCisgICAg
ICAgICAgICAgICAgICAgIHUndmFsdWVfcGFyYW0nOiB1JzMzJywKKyAgICAgICAgICAgICAgICAg
ICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKics
CisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdTaW5nbGUvVmFsdWVQYXJhbVRl
c3QnCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHUnbmFtZSc6IHUnQW5vdGhlclRlc3RUaGF0SGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8x
JywKKyAgICAgICAgICAgICAgICAgICAgdSd2YWx1ZV9wYXJhbSc6IHUnNDInLAorICAgICAgICAg
ICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1l
JzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1NpbmdsZS9WYWx1
ZVBhcmFtVGVzdCcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0K
KyAgICBdCit9CisKK0VYUEVDVEVEX0ZJTFRFUkVEID0geworICAgIHUndGVzdHMnOiAxLAorICAg
IHUnZmFpbHVyZXMnOiAwLAorICAgIHUnZGlzYWJsZWQnOiAwLAorICAgIHUnZXJyb3JzJzogMCwK
KyAgICB1J3RpbWUnOiB1JyonLAorICAgIHUndGltZXN0YW1wJzogdScqJywKKyAgICB1J25hbWUn
OiB1J0FsbFRlc3RzJywKKyAgICB1J2FkX2hvY19wcm9wZXJ0eSc6IHUnNDInLAorICAgIHUndGVz
dHN1aXRlcyc6IFt7CisgICAgICAgIHUnbmFtZSc6IHUnU3VjY2Vzc2Z1bFRlc3QnLAorICAgICAg
ICB1J3Rlc3RzJzogMSwKKyAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgIHUnZGlzYWJs
ZWQnOiAwLAorICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgIHUndGltZSc6IHUnKicsCisg
ICAgICAgIHUndGVzdHN1aXRlJzogW3sKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnU3VjY2VlZHMn
LAorICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICB1J3RpbWUnOiB1
JyonLAorICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1N1Y2Nlc3NmdWxUZXN0JywKKyAgICAg
ICAgfV0KKyAgICB9XSwKK30KKworRVhQRUNURURfRU1QVFkgPSB7CisgICAgdSd0ZXN0cyc6IDAs
CisgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgdSdlcnJvcnMn
OiAwLAorICAgIHUndGltZSc6IHUnKicsCisgICAgdSd0aW1lc3RhbXAnOiB1JyonLAorICAgIHUn
bmFtZSc6IHUnQWxsVGVzdHMnLAorICAgIHUndGVzdHN1aXRlcyc6IFtdLAorfQorCitHVEVTVF9Q
Uk9HUkFNX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aChHVEVT
VF9QUk9HUkFNX05BTUUpCisKK1NVUFBPUlRTX1RZUEVEX1RFU1RTID0gJ1R5cGVkVGVzdCcgaW4g
Z3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAorICAgIFtHVEVTVF9QUk9HUkFNX1BBVEgsIEdU
RVNUX0xJU1RfVEVTVFNfRkxBR10sIGNhcHR1cmVfc3RkZXJyPUZhbHNlKS5vdXRwdXQKKworCitj
bGFzcyBHVGVzdEpzb25PdXRwdXRVbml0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToK
KyAgIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIEpTT04gb3V0cHV0IGZ1bmN0aW9uYWxp
dHkuCisgICIiIgorCisgICMgVGhpcyB0ZXN0IGN1cnJlbnRseSBicmVha3Mgb24gcGxhdGZvcm1z
IHRoYXQgZG8gbm90IHN1cHBvcnQgdHlwZWQgYW5kCisgICMgdHlwZS1wYXJhbWV0ZXJpemVkIHRl
c3RzLCBzbyB3ZSBkb24ndCBydW4gaXQgdW5kZXIgdGhlbS4KKyAgaWYgU1VQUE9SVFNfVFlQRURf
VEVTVFM6CisKKyAgICBkZWYgdGVzdE5vbkVtcHR5SnNvbk91dHB1dChzZWxmKToKKyAgICAgICIi
IlZlcmlmaWVzIEpTT04gb3V0cHV0IGZvciBhIEdvb2dsZSBUZXN0IGJpbmFyeSB3aXRoIG5vbi1l
bXB0eSBvdXRwdXQuCisKKyAgICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMg
YSBub24tZW1wdHkgSlNPTiBvdXRwdXQsIGFuZAorICAgICAgdGVzdHMgdGhhdCB0aGUgSlNPTiBv
dXRwdXQgaXMgZXhwZWN0ZWQuCisgICAgICAiIiIKKyAgICAgIHNlbGYuX1Rlc3RKc29uT3V0cHV0
KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQRUNURURfTk9OX0VNUFRZLCAxKQorCisgIGRlZiB0ZXN0
RW1wdHlKc29uT3V0cHV0KHNlbGYpOgorICAgICIiIlZlcmlmaWVzIEpTT04gb3V0cHV0IGZvciBh
IEdvb2dsZSBUZXN0IGJpbmFyeSB3aXRob3V0IGFjdHVhbCB0ZXN0cy4KKworICAgIFJ1bnMgYSB0
ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkgSlNPTiBvdXRwdXQsIGFuZAorICAg
IHRlc3RzIHRoYXQgdGhlIEpTT04gb3V0cHV0IGlzIGV4cGVjdGVkLgorICAgICIiIgorCisgICAg
c2VsZi5fVGVzdEpzb25PdXRwdXQoJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnLCBFWFBFQ1RFRF9F
TVBUWSwgMCkKKworICBkZWYgdGVzdFRpbWVzdGFtcFZhbHVlKHNlbGYpOgorICAgICIiIkNoZWNr
cyB3aGV0aGVyIHRoZSB0aW1lc3RhbXAgYXR0cmlidXRlIGluIHRoZSBKU09OIG91dHB1dCBpcyB2
YWxpZC4KKworICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkg
SlNPTiBvdXRwdXQsIGFuZCBjaGVja3MgaWYKKyAgICB0aGUgdGltZXN0YW1wIGF0dHJpYnV0ZSBp
biB0aGUgdGVzdHN1aXRlcyB0YWcgaXMgdmFsaWQuCisgICAgIiIiCisgICAgYWN0dWFsID0gc2Vs
Zi5fR2V0SnNvbk91dHB1dCgnZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCcsIFtdLCAwKQorICAgIGRh
dGVfdGltZV9zdHIgPSBhY3R1YWxbJ3RpbWVzdGFtcCddCisgICAgIyBkYXRldGltZS5zdHJwdGlt
ZSgpIGlzIG9ubHkgYXZhaWxhYmxlIGluIFB5dGhvbiAyLjUrIHNvIHdlIGhhdmUgdG8KKyAgICAj
IHBhcnNlIHRoZSBleHBlY3RlZCBkYXRldGltZSBtYW51YWxseS4KKyAgICBtYXRjaCA9IHJlLm1h
dGNoKHInKFxkKyktKFxkXGQpLShcZFxkKVQoXGRcZCk6KFxkXGQpOihcZFxkKScsIGRhdGVfdGlt
ZV9zdHIpCisgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICByZS5tYXRjaCwKKyAgICAgICAg
J0pTT04gZGF0ZXR0aW1lIHN0cmluZyAlcyBoYXMgaW5jb3JyZWN0IGZvcm1hdCcgJSBkYXRlX3Rp
bWVfc3RyKQorICAgIGRhdGVfdGltZV9mcm9tX2pzb24gPSBkYXRldGltZS5kYXRldGltZSgKKyAg
ICAgICAgeWVhcj1pbnQobWF0Y2guZ3JvdXAoMSkpLCBtb250aD1pbnQobWF0Y2guZ3JvdXAoMikp
LAorICAgICAgICBkYXk9aW50KG1hdGNoLmdyb3VwKDMpKSwgaG91cj1pbnQobWF0Y2guZ3JvdXAo
NCkpLAorICAgICAgICBtaW51dGU9aW50KG1hdGNoLmdyb3VwKDUpKSwgc2Vjb25kPWludChtYXRj
aC5ncm91cCg2KSkpCisKKyAgICB0aW1lX2RlbHRhID0gYWJzKGRhdGV0aW1lLmRhdGV0aW1lLm5v
dygpIC0gZGF0ZV90aW1lX2Zyb21fanNvbikKKyAgICAjIHRpbWVzdGFtcCB2YWx1ZSBzaG91bGQg
YmUgbmVhciB0aGUgY3VycmVudCBsb2NhbCB0aW1lCisgICAgc2VsZi5hc3NlcnRUcnVlKHRpbWVf
ZGVsdGEgPCBkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz02MDApLAorICAgICAgICAgICAgICAg
ICAgICAndGltZV9kZWx0YSBpcyAlcycgJSB0aW1lX2RlbHRhKQorCisgIGRlZiB0ZXN0RGVmYXVs
dE91dHB1dEZpbGUoc2VsZik6CisgICAgIiIiVmVyaWZpZXMgdGhlIGRlZmF1bHQgb3V0cHV0IGZp
bGUgbmFtZS4KKworICAgIENvbmZpcm1zIHRoYXQgR29vZ2xlIFRlc3QgcHJvZHVjZXMgYW4gSlNP
TiBvdXRwdXQgZmlsZSB3aXRoIHRoZSBleHBlY3RlZAorICAgIGRlZmF1bHQgbmFtZSBpZiBubyBu
YW1lIGlzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLgorICAgICIiIgorICAgIG91dHB1dF9maWxlID0g
b3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdURVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUpCisgICAgZ3Rlc3Rf
cHJvZ19wYXRoID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisgICAg
ICAgICdndGVzdF9ub190ZXN0X3VuaXR0ZXN0JykKKyAgICB0cnk6CisgICAgICBvcy5yZW1vdmUo
b3V0cHV0X2ZpbGUpCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICBlID0gc3lzLmV4Y19pbmZv
KClbMV0KKyAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgorICAgICAgICByYWlzZQor
CisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKKyAgICAgICAgW2d0ZXN0X3By
b2dfcGF0aCwgJyVzPWpzb24nICUgR1RFU1RfT1VUUFVUX0ZMQUddLAorICAgICAgICB3b3JraW5n
X2Rpcj1ndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSkKKyAgICBzZWxmLmFzc2VydF8ocC5l
eGl0ZWQpCisgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwgcC5leGl0X2NvZGUpCisgICAgc2VsZi5h
c3NlcnRfKG9zLnBhdGguaXNmaWxlKG91dHB1dF9maWxlKSkKKworICBkZWYgdGVzdFN1cHByZXNz
ZWRKc29uT3V0cHV0KHNlbGYpOgorICAgICIiIlZlcmlmaWVzIHRoYXQgbm8gSlNPTiBvdXRwdXQg
aXMgZ2VuZXJhdGVkLgorCisgICAgVGVzdHMgdGhhdCBubyBKU09OIGZpbGUgaXMgZ2VuZXJhdGVk
IGlmIHRoZSBkZWZhdWx0IEpTT04gbGlzdGVuZXIgaXMKKyAgICBzaHV0IGRvd24gYmVmb3JlIFJV
Tl9BTExfVEVTVFMgaXMgaW52b2tlZC4KKyAgICAiIiIKKworICAgIGpzb25fcGF0aCA9IG9zLnBh
dGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR1RFU1RfUFJPR1JBTV9OQU1FICsgJ291dC5qc29uJykKKyAgICBpZiBvcy5w
YXRoLmlzZmlsZShqc29uX3BhdGgpOgorICAgICAgb3MucmVtb3ZlKGpzb25fcGF0aCkKKworICAg
IGNvbW1hbmQgPSBbR1RFU1RfUFJPR1JBTV9QQVRILAorICAgICAgICAgICAgICAgJyVzPWpzb246
JXMnICUgKEdURVNUX09VVFBVVF9GTEFHLCBqc29uX3BhdGgpLAorICAgICAgICAgICAgICAgJy0t
c2h1dF9kb3duX3htbCddCisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21t
YW5kKQorICAgIGlmIHAudGVybWluYXRlZF9ieV9zaWduYWw6CisgICAgICAjIHAuc2lnbmFsIGlz
IGF2YWlsYWJsZSBvbmx5IGlmIHAudGVybWluYXRlZF9ieV9zaWduYWwgaXMgVHJ1ZS4KKyAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoCisgICAgICAgICAgcC50ZXJtaW5hdGVkX2J5X3NpZ25hbCwKKyAg
ICAgICAgICAnJXMgd2FzIGtpbGxlZCBieSBzaWduYWwgJWQnICUgKEdURVNUX1BST0dSQU1fTkFN
RSwgcC5zaWduYWwpKQorICAgIGVsc2U6CisgICAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCisg
ICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBwLmV4aXRfY29kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICInJXMnIGV4aXRlZCB3aXRoIGNvZGUgJXMsIHdoaWNoIGRvZXNuJ3QgbWF0Y2ggIgor
ICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBleHBlY3RlZCBleGl0IGNvZGUgJXMuJworICAg
ICAgICAgICAgICAgICAgICAgICAgJSAoY29tbWFuZCwgcC5leGl0X2NvZGUsIDEpKQorCisgICAg
c2VsZi5hc3NlcnRfKG5vdCBvcy5wYXRoLmlzZmlsZShqc29uX3BhdGgpKQorCisgIGRlZiB0ZXN0
RmlsdGVyZWRUZXN0SnNvbk91dHB1dChzZWxmKToKKyAgICAiIiJWZXJpZmllcyBKU09OIG91dHB1
dCB3aGVuIGEgZmlsdGVyIGlzIGFwcGxpZWQuCisKKyAgICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRo
YXQgZXhlY3V0ZXMgb25seSBzb21lIHRlc3RzIGFuZCB2ZXJpZmllcyB0aGF0CisgICAgbm9uLXNl
bGVjdGVkIHRlc3RzIGRvIG5vdCBzaG93IHVwIGluIHRoZSBKU09OIG91dHB1dC4KKyAgICAiIiIK
KworICAgIHNlbGYuX1Rlc3RKc29uT3V0cHV0KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQRUNURURf
RklMVEVSRUQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfYXJncz1bJyVzPVN1
Y2Nlc3NmdWxUZXN0LionICUgR1RFU1RfRklMVEVSX0ZMQUddKQorCisgIGRlZiBfR2V0SnNvbk91
dHB1dChzZWxmLCBndGVzdF9wcm9nX25hbWUsIGV4dHJhX2FyZ3MsIGV4cGVjdGVkX2V4aXRfY29k
ZSk6CisgICAgIiIiUmV0dXJucyB0aGUgSlNPTiBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcg
dGhlIHByb2dyYW0gZ3Rlc3RfcHJvZ19uYW1lLgorCisgICAgRnVydGhlcm1vcmUsIHRoZSBwcm9n
cmFtJ3MgZXhpdCBjb2RlIG11c3QgYmUgZXhwZWN0ZWRfZXhpdF9jb2RlLgorCisgICAgQXJnczoK
KyAgICAgIGd0ZXN0X3Byb2dfbmFtZTogR29vZ2xlIFRlc3QgYmluYXJ5IG5hbWUuCisgICAgICBl
eHRyYV9hcmdzOiBleHRyYSBhcmd1bWVudHMgdG8gYmluYXJ5IGludm9jYXRpb24uCisgICAgICBl
eHBlY3RlZF9leGl0X2NvZGU6IHByb2dyYW0ncyBleGl0IGNvZGUuCisgICAgIiIiCisgICAganNv
bl9wYXRoID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBndGVzdF9wcm9nX25hbWUgKyAnb3V0Lmpzb24nKQor
ICAgIGd0ZXN0X3Byb2dfcGF0aCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQ
YXRoKGd0ZXN0X3Byb2dfbmFtZSkKKworICAgIGNvbW1hbmQgPSAoCisgICAgICAgIFtndGVzdF9w
cm9nX3BhdGgsICclcz1qc29uOiVzJyAlIChHVEVTVF9PVVRQVVRfRkxBRywganNvbl9wYXRoKV0g
KworICAgICAgICBleHRyYV9hcmdzCisgICAgKQorICAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1
YnByb2Nlc3MoY29tbWFuZCkKKyAgICBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsOgorICAgICAg
c2VsZi5hc3NlcnRfKEZhbHNlLAorICAgICAgICAgICAgICAgICAgICclcyB3YXMga2lsbGVkIGJ5
IHNpZ25hbCAlZCcgJSAoZ3Rlc3RfcHJvZ19uYW1lLCBwLnNpZ25hbCkpCisgICAgZWxzZToKKyAg
ICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVj
dGVkX2V4aXRfY29kZSwgcC5leGl0X2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAiJyVz
JyBleGl0ZWQgd2l0aCBjb2RlICVzLCB3aGljaCBkb2Vzbid0IG1hdGNoICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICd0aGUgZXhwZWN0ZWQgZXhpdCBjb2RlICVzLicKKyAgICAgICAgICAgICAg
ICAgICAgICAgICUgKGNvbW1hbmQsIHAuZXhpdF9jb2RlLCBleHBlY3RlZF9leGl0X2NvZGUpKQor
ICAgIHdpdGggb3Blbihqc29uX3BhdGgpIGFzIGY6CisgICAgICBhY3R1YWwgPSBqc29uLmxvYWQo
ZikKKyAgICByZXR1cm4gYWN0dWFsCisKKyAgZGVmIF9UZXN0SnNvbk91dHB1dChzZWxmLCBndGVz
dF9wcm9nX25hbWUsIGV4cGVjdGVkLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V4
aXRfY29kZSwgZXh0cmFfYXJncz1Ob25lKToKKyAgICAiIiJDaGVja3MgdGhlIEpTT04gb3V0cHV0
IGdlbmVyYXRlZCBieSB0aGUgR29vZ2xlIFRlc3QgYmluYXJ5LgorCisgICAgQXNzZXJ0cyB0aGF0
IHRoZSBKU09OIGRvY3VtZW50IGdlbmVyYXRlZCBieSBydW5uaW5nIHRoZSBwcm9ncmFtCisgICAg
Z3Rlc3RfcHJvZ19uYW1lIG1hdGNoZXMgZXhwZWN0ZWRfanNvbiwgYSBzdHJpbmcgY29udGFpbmlu
ZyBhbm90aGVyCisgICAgSlNPTiBkb2N1bWVudC4gIEZ1cnRoZXJtb3JlLCB0aGUgcHJvZ3JhbSdz
IGV4aXQgY29kZSBtdXN0IGJlCisgICAgZXhwZWN0ZWRfZXhpdF9jb2RlLgorCisgICAgQXJnczoK
KyAgICAgIGd0ZXN0X3Byb2dfbmFtZTogR29vZ2xlIFRlc3QgYmluYXJ5IG5hbWUuCisgICAgICBl
eHBlY3RlZDogZXhwZWN0ZWQgb3V0cHV0LgorICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlOiBwcm9n
cmFtJ3MgZXhpdCBjb2RlLgorICAgICAgZXh0cmFfYXJnczogZXh0cmEgYXJndW1lbnRzIHRvIGJp
bmFyeSBpbnZvY2F0aW9uLgorICAgICIiIgorCisgICAgYWN0dWFsID0gc2VsZi5fR2V0SnNvbk91
dHB1dChndGVzdF9wcm9nX25hbWUsIGV4dHJhX2FyZ3Mgb3IgW10sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGUpCisgICAgc2VsZi5hc3NlcnRFcXVh
bChleHBlY3RlZCwgZ3Rlc3RfanNvbl90ZXN0X3V0aWxzLm5vcm1hbGl6ZShhY3R1YWwpKQorCisK
K2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGlmIE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9G
TEFHIGluIHN5cy5hcmd2OgorICAgICMgdW5pdHRlc3QubWFpbigpIGNhbid0IGhhbmRsZSB1bmtu
b3duIGZsYWdzCisgICAgc3lzLmFyZ3YucmVtb3ZlKE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFH
KQorCisgIG9zLmVudmlyb25bJ0dURVNUX1NUQUNLX1RSQUNFX0RFUFRIJ10gPSAnMScKKyAgZ3Rl
c3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1saW5rZWQtcHRyLXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlua2VkLXB0ci10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMDBm
MzQyOTZiZDU3OTRjMTY0NDc5ZjIyYTg4ZGQ0ZjczNjAwMWQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlua2VkLXB0ci10ZXN0LmNj
CkBAIC0wLDAgKzEsMTUxIEBACisvLyBDb3B5cmlnaHQgMjAwMywgR29vZ2xlIEluYy4KKy8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisv
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2luY2x1ZGUgImd0ZXN0L2ludGVybmFs
L2d0ZXN0LWxpbmtlZF9wdHIuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3Bh
Y2UgeworCit1c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OmxpbmtlZF9wdHI7CisKK2ludCBudW07CitNZXNzYWdlKiBoaXN0b3J5ID0gTlVMTDsKKworLy8g
Q2xhc3Mgd2hpY2ggdHJhY2tzIGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uCitjbGFzcyBBIHsKKyBw
dWJsaWM6CisgIEEoKTogbXludW0obnVtKyspIHsgKmhpc3RvcnkgPDwgIkEiIDw8IG15bnVtIDw8
ICIgY3RvclxuIjsgfQorICB2aXJ0dWFsIH5BKCkgeyAqaGlzdG9yeSA8PCAiQSIgPDwgbXludW0g
PDwgIiBkdG9yXG4iOyB9CisgIHZpcnR1YWwgdm9pZCBVc2UoKSB7ICpoaXN0b3J5IDw8ICJBIiA8
PCBteW51bSA8PCAiIHVzZVxuIjsgfQorIHByb3RlY3RlZDoKKyAgaW50IG15bnVtOworfTsKKwor
Ly8gU3ViY2xhc3MKK2NsYXNzIEIgOiBwdWJsaWMgQSB7CisgcHVibGljOgorICBCKCkgeyAqaGlz
dG9yeSA8PCAiQiIgPDwgbXludW0gPDwgIiBjdG9yXG4iOyB9CisgIH5CKCkgeyAqaGlzdG9yeSA8
PCAiQiIgPDwgbXludW0gPDwgIiBkdG9yXG4iOyB9CisgIHZpcnR1YWwgdm9pZCBVc2UoKSB7ICpo
aXN0b3J5IDw8ICJCIiA8PCBteW51bSA8PCAiIHVzZVxuIjsgfQorfTsKKworY2xhc3MgTGlua2Vk
UHRyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwdWJsaWM6CisgIExpbmtlZFB0clRl
c3QoKSB7CisgICAgbnVtID0gMDsKKyAgICBoaXN0b3J5ID0gbmV3IE1lc3NhZ2U7CisgIH0KKwor
ICB2aXJ0dWFsIH5MaW5rZWRQdHJUZXN0KCkgeworICAgIGRlbGV0ZSBoaXN0b3J5OworICAgIGhp
c3RvcnkgPSBOVUxMOworICB9Cit9OworCitURVNUX0YoTGlua2VkUHRyVGVzdCwgR2VuZXJhbFRl
c3QpIHsKKyAgeworICAgIGxpbmtlZF9wdHI8QT4gYTAsIGExLCBhMjsKKyAgICAvLyBVc2UgZXhw
bGljaXQgZnVuY3Rpb24gY2FsbCBub3RhdGlvbiBoZXJlIHRvIHN1cHByZXNzIHNlbGYtYXNzaWdu
IHdhcm5pbmcuCisgICAgYTAub3BlcmF0b3I9KGEwKTsKKyAgICBhMSA9IGEyOworICAgIEFTU0VS
VF9FUShhMC5nZXQoKSwgc3RhdGljX2Nhc3Q8QSo+KE5VTEwpKTsKKyAgICBBU1NFUlRfRVEoYTEu
Z2V0KCksIHN0YXRpY19jYXN0PEEqPihOVUxMKSk7CisgICAgQVNTRVJUX0VRKGEyLmdldCgpLCBz
dGF0aWNfY2FzdDxBKj4oTlVMTCkpOworICAgIEFTU0VSVF9UUlVFKGEwID09IE5VTEwpOworICAg
IEFTU0VSVF9UUlVFKGExID09IE5VTEwpOworICAgIEFTU0VSVF9UUlVFKGEyID09IE5VTEwpOwor
CisgICAgeworICAgICAgbGlua2VkX3B0cjxBPiBhMyhuZXcgQSk7CisgICAgICBhMCA9IGEzOwor
ICAgICAgQVNTRVJUX1RSVUUoYTAgPT0gYTMpOworICAgICAgQVNTRVJUX1RSVUUoYTAgIT0gTlVM
TCk7CisgICAgICBBU1NFUlRfVFJVRShhMC5nZXQoKSA9PSBhMyk7CisgICAgICBBU1NFUlRfVFJV
RShhMCA9PSBhMy5nZXQoKSk7CisgICAgICBsaW5rZWRfcHRyPEE+IGE0KGEwKTsKKyAgICAgIGEx
ID0gYTQ7CisgICAgICBsaW5rZWRfcHRyPEE+IGE1KG5ldyBBKTsKKyAgICAgIEFTU0VSVF9UUlVF
KGE1LmdldCgpICE9IGEzKTsKKyAgICAgIEFTU0VSVF9UUlVFKGE1ICE9IGEzLmdldCgpKTsKKyAg
ICAgIGEyID0gYTU7CisgICAgICBsaW5rZWRfcHRyPEI+IGIwKG5ldyBCKTsKKyAgICAgIGxpbmtl
ZF9wdHI8QT4gYTYoYjApOworICAgICAgQVNTRVJUX1RSVUUoYjAgPT0gYTYpOworICAgICAgQVNT
RVJUX1RSVUUoYTYgPT0gYjApOworICAgICAgQVNTRVJUX1RSVUUoYjAgIT0gTlVMTCk7CisgICAg
ICBhNSA9IGIwOworICAgICAgYTUgPSBiMDsKKyAgICAgIGEzLT5Vc2UoKTsKKyAgICAgIGE0LT5V
c2UoKTsKKyAgICAgIGE1LT5Vc2UoKTsKKyAgICAgIGE2LT5Vc2UoKTsKKyAgICAgIGIwLT5Vc2Uo
KTsKKyAgICAgICgqYjApLlVzZSgpOworICAgICAgYjAuZ2V0KCktPlVzZSgpOworICAgIH0KKwor
ICAgIGEwLT5Vc2UoKTsKKyAgICBhMS0+VXNlKCk7CisgICAgYTItPlVzZSgpOworCisgICAgYTEg
PSBhMjsKKyAgICBhMi5yZXNldChuZXcgQSk7CisgICAgYTAucmVzZXQoKTsKKworICAgIGxpbmtl
ZF9wdHI8QT4gYTc7CisgIH0KKworICBBU1NFUlRfU1RSRVEoCisgICAgIkEwIGN0b3JcbiIKKyAg
ICAiQTEgY3RvclxuIgorICAgICJBMiBjdG9yXG4iCisgICAgIkIyIGN0b3JcbiIKKyAgICAiQTAg
dXNlXG4iCisgICAgIkEwIHVzZVxuIgorICAgICJCMiB1c2VcbiIKKyAgICAiQjIgdXNlXG4iCisg
ICAgIkIyIHVzZVxuIgorICAgICJCMiB1c2VcbiIKKyAgICAiQjIgdXNlXG4iCisgICAgIkIyIGR0
b3JcbiIKKyAgICAiQTIgZHRvclxuIgorICAgICJBMCB1c2VcbiIKKyAgICAiQTAgdXNlXG4iCisg
ICAgIkExIHVzZVxuIgorICAgICJBMyBjdG9yXG4iCisgICAgIkEwIGR0b3JcbiIKKyAgICAiQTMg
ZHRvclxuIgorICAgICJBMSBkdG9yXG4iLAorICAgIGhpc3RvcnktPkdldFN0cmluZygpLmNfc3Ry
KCkpOworfQorCit9ICAvLyBVbm5hbWVkIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3QucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVz
dC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44MTQyM2EzMzllOGZkMjhhYTJiNDI1MzAxM2IzYzIzY2UzNTMzNzQ5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3QucHkKQEAgLTAsMCArMSwyMDUgQEAKKyMhL3Vzci9iaW4v
ZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIwor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisj
IGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisj
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVzdCBmb3IgR29vZ2xl
IFRlc3QncyAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4KKworQSB1c2VyIGNhbiBhc2sgR29vZ2xl
IFRlc3QgdG8gbGlzdCBhbGwgdGVzdHMgYnkgc3BlY2lmeWluZyB0aGUKKy0tZ3Rlc3RfbGlzdF90
ZXN0cyBmbGFnLiAgVGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5CitieSBpbnZv
a2luZyBnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfIChhIHByb2dyYW0gd3JpdHRlbiB3
aXRoCitHb29nbGUgVGVzdCkgdGhlIGNvbW1hbmQgbGluZSBmbGFncy4KKyIiIgorCitpbXBvcnQg
cmUKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKKyMgQ29uc3RhbnRzLgorCisjIFRoZSBjb21t
YW5kIGxpbmUgZmxhZyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIGxpc3RpbmcgYWxsIHRlc3RzLgor
TElTVF9URVNUU19GTEFHID0gJ2d0ZXN0X2xpc3RfdGVzdHMnCisKKyMgUGF0aCB0byB0aGUgZ29v
Z2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0XyBwcm9ncmFtLgorRVhFX1BBVEggPSBndGVzdF90
ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVu
aXR0ZXN0XycpCisKKyMgVGhlIGV4cGVjdGVkIG91dHB1dCB3aGVuIHJ1bm5pbmcgZ29vZ2xldGVz
dC1saXN0LXRlc3RzLXVuaXR0ZXN0XyB3aXRoCisjIC0tZ3Rlc3RfbGlzdF90ZXN0cworRVhQRUNU
RURfT1VUUFVUX05PX0ZJTFRFUl9SRSA9IHJlLmNvbXBpbGUociIiIkZvb0RlYXRoVGVzdFwuCisg
IFRlc3QxCitGb29cLgorICBCYXIxCisgIEJhcjIKKyAgRElTQUJMRURfQmFyMworQWJjXC4KKyAg
WHl6CisgIERlZgorRm9vQmFyXC4KKyAgQmF6CitGb29UZXN0XC4KKyAgVGVzdDEKKyAgRElTQUJM
RURfVGVzdDIKKyAgVGVzdDMKK1R5cGVkVGVzdC8wXC4gICMgVHlwZVBhcmFtID0gKFZlcnlMb3sy
NDV9fGNsYXNzIFZlcnlMb3syMzl9KVwuXC5cLgorICBUZXN0QQorICBUZXN0QgorVHlwZWRUZXN0
LzFcLiAgIyBUeXBlUGFyYW0gPSBpbnRccypcKiggX19wdHI2NCk/CisgIFRlc3RBCisgIFRlc3RC
CitUeXBlZFRlc3QvMlwuICAjIFR5cGVQYXJhbSA9IC4qTXlBcnJheTxib29sLFxzKjQyPgorICBU
ZXN0QQorICBUZXN0QgorTXkvVHlwZVBhcmFtVGVzdC8wXC4gICMgVHlwZVBhcmFtID0gKFZlcnlM
b3syNDV9fGNsYXNzIFZlcnlMb3syMzl9KVwuXC5cLgorICBUZXN0QQorICBUZXN0QgorTXkvVHlw
ZVBhcmFtVGVzdC8xXC4gICMgVHlwZVBhcmFtID0gaW50XHMqXCooIF9fcHRyNjQpPworICBUZXN0
QQorICBUZXN0QgorTXkvVHlwZVBhcmFtVGVzdC8yXC4gICMgVHlwZVBhcmFtID0gLipNeUFycmF5
PGJvb2wsXHMqNDI+CisgIFRlc3RBCisgIFRlc3RCCitNeUluc3RhbnRpYXRpb24vVmFsdWVQYXJh
bVRlc3RcLgorICBUZXN0QS8wICAjIEdldFBhcmFtXChcKSA9IG9uZSBsaW5lCisgIFRlc3RBLzEg
ICMgR2V0UGFyYW1cKFwpID0gdHdvXFxubGluZXMKKyAgVGVzdEEvMiAgIyBHZXRQYXJhbVwoXCkg
PSBhIHZlcnlcXG5sb3syNDF9XC5cLlwuCisgIFRlc3RCLzAgICMgR2V0UGFyYW1cKFwpID0gb25l
IGxpbmUKKyAgVGVzdEIvMSAgIyBHZXRQYXJhbVwoXCkgPSB0d29cXG5saW5lcworICBUZXN0Qi8y
ICAjIEdldFBhcmFtXChcKSA9IGEgdmVyeVxcbmxvezI0MX1cLlwuXC4KKyIiIikKKworIyBUaGUg
ZXhwZWN0ZWQgb3V0cHV0IHdoZW4gcnVubmluZyBnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRl
c3RfIHdpdGgKKyMgLS1ndGVzdF9saXN0X3Rlc3RzIGFuZCAtLWd0ZXN0X2ZpbHRlcj1Gb28qLgor
RVhQRUNURURfT1VUUFVUX0ZJTFRFUl9GT09fUkUgPSByZS5jb21waWxlKHIiIiJGb29EZWF0aFRl
c3RcLgorICBUZXN0MQorRm9vXC4KKyAgQmFyMQorICBCYXIyCisgIERJU0FCTEVEX0JhcjMKK0Zv
b0JhclwuCisgIEJhegorRm9vVGVzdFwuCisgIFRlc3QxCisgIERJU0FCTEVEX1Rlc3QyCisgIFRl
c3QzCisiIiIpCisKKyMgVXRpbGl0aWVzLgorCisKK2RlZiBSdW4oYXJncyk6CisgICIiIlJ1bnMg
Z29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0XyBhbmQgcmV0dXJucyB0aGUgbGlzdCBvZiB0
ZXN0cyBwcmludGVkLiIiIgorCisgIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3Mo
W0VYRV9QQVRIXSArIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2FwdHVyZV9zdGRlcnI9RmFsc2UpLm91dHB1dAorCisKKyMgVGhlIHVuaXQgdGVzdC4KKworCitj
bGFzcyBHVGVzdExpc3RUZXN0c1VuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgor
ICAiIiJUZXN0cyB1c2luZyB0aGUgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcgdG8gbGlzdCBhbGwg
dGVzdHMuIiIiCisKKyAgZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBmbGFnX3ZhbHVlLCBleHBlY3Rl
ZF9vdXRwdXRfcmUsIG90aGVyX2ZsYWcpOgorICAgICIiIlJ1bnMgZ29vZ2xldGVzdC1saXN0LXRl
c3RzLXVuaXR0ZXN0XyBhbmQgdmVyaWZpZXMgdGhhdCBpdCBwcmludHMKKyAgICB0aGUgY29ycmVj
dCB0ZXN0cy4KKworICAgIEFyZ3M6CisgICAgICBmbGFnX3ZhbHVlOiAgICAgICAgIHZhbHVlIG9m
IHRoZSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
Tm9uZSBpZiB0aGUgZmxhZyBzaG91bGQgbm90IGJlIHByZXNlbnQuCisgICAgICBleHBlY3RlZF9v
dXRwdXRfcmU6IHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG1hdGNoZXMgdGhlIGV4cGVjdGVkCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCBhZnRlciBydW5uaW5nIGNvbW1hbmQ7Cisg
ICAgICBvdGhlcl9mbGFnOiAgICAgICAgIGEgZGlmZmVyZW50IGZsYWcgdG8gYmUgcGFzc2VkIHRv
IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWxvbmcgd2l0aCBndGVzdF9saXN0
X3Rlc3RzOworICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3Vs
ZCBub3QgYmUgcHJlc2VudC4KKyAgICAiIiIKKworICAgIGlmIGZsYWdfdmFsdWUgaXMgTm9uZToK
KyAgICAgIGZsYWcgPSAnJworICAgICAgZmxhZ19leHByZXNzaW9uID0gJ25vdCBzZXQnCisgICAg
ZWxpZiBmbGFnX3ZhbHVlID09ICcwJzoKKyAgICAgIGZsYWcgPSAnLS0lcz0wJyAlIExJU1RfVEVT
VFNfRkxBRworICAgICAgZmxhZ19leHByZXNzaW9uID0gJzAnCisgICAgZWxzZToKKyAgICAgIGZs
YWcgPSAnLS0lcycgJSBMSVNUX1RFU1RTX0ZMQUcKKyAgICAgIGZsYWdfZXhwcmVzc2lvbiA9ICcx
JworCisgICAgYXJncyA9IFtmbGFnXQorCisgICAgaWYgb3RoZXJfZmxhZyBpcyBub3QgTm9uZToK
KyAgICAgIGFyZ3MgKz0gW290aGVyX2ZsYWddCisKKyAgICBvdXRwdXQgPSBSdW4oYXJncykKKwor
ICAgIGlmIGV4cGVjdGVkX291dHB1dF9yZToKKyAgICAgIHNlbGYuYXNzZXJ0XygKKyAgICAgICAg
ICBleHBlY3RlZF9vdXRwdXRfcmUubWF0Y2gob3V0cHV0KSwKKyAgICAgICAgICAoJ3doZW4gJXMg
aXMgJXMsIHRoZSBvdXRwdXQgb2YgIiVzIiBpcyAiJXMiLFxuJworICAgICAgICAgICAnd2hpY2gg
ZG9lcyBub3QgbWF0Y2ggcmVnZXggIiVzIicgJQorICAgICAgICAgICAoTElTVF9URVNUU19GTEFH
LCBmbGFnX2V4cHJlc3Npb24sICcgJy5qb2luKGFyZ3MpLCBvdXRwdXQsCisgICAgICAgICAgICBl
eHBlY3RlZF9vdXRwdXRfcmUucGF0dGVybikpKQorICAgIGVsc2U6CisgICAgICBzZWxmLmFzc2Vy
dF8oCisgICAgICAgICAgbm90IEVYUEVDVEVEX09VVFBVVF9OT19GSUxURVJfUkUubWF0Y2gob3V0
cHV0KSwKKyAgICAgICAgICAoJ3doZW4gJXMgaXMgJXMsIHRoZSBvdXRwdXQgb2YgIiVzIiBpcyAi
JXMiJyUKKyAgICAgICAgICAgKExJU1RfVEVTVFNfRkxBRywgZmxhZ19leHByZXNzaW9uLCAnICcu
am9pbihhcmdzKSwgb3V0cHV0KSkpCisKKyAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3Ioc2VsZik6
CisgICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0IG1vZGUuIiIiCisKKyAg
ICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfb3V0cHV0X3JlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgb3RoZXJf
ZmxhZz1Ob25lKQorCisgIGRlZiB0ZXN0RmxhZyhzZWxmKToKKyAgICAiIiJUZXN0cyB1c2luZyB0
aGUgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShm
bGFnX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9
Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPU5vbmUpCisgICAgc2VsZi5S
dW5BbmRWZXJpZnkoZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRfb3V0cHV0X3JlPUVYUEVDVEVEX09VVFBVVF9OT19GSUxURVJfUkUsCisgICAgICAgICAgICAg
ICAgICAgICAgb3RoZXJfZmxhZz1Ob25lKQorCisgIGRlZiB0ZXN0T3ZlcnJpZGVOb25GaWx0ZXJG
bGFncyhzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0IC0tZ3Rlc3RfbGlzdF90ZXN0cyBvdmVycmlk
ZXMgdGhlIG5vbi1maWx0ZXIgZmxhZ3MuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFn
X3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9RVhQ
RUNURURfT1VUUFVUX05PX0ZJTFRFUl9SRSwKKyAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9m
bGFnPSctLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUnKQorCisgIGRlZiB0ZXN0V2l0aEZpbHRlckZs
YWdzKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgLS1ndGVzdF9saXN0X3Rlc3RzIHRha2VzIGlu
dG8gYWNjb3VudCB0aGUKKyAgICAtLWd0ZXN0X2ZpbHRlciBmbGFnLiIiIgorCisgICAgc2VsZi5S
dW5BbmRWZXJpZnkoZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRfb3V0cHV0X3JlPUVYUEVDVEVEX09VVFBVVF9GSUxURVJfRk9PX1JFLAorICAgICAgICAgICAg
ICAgICAgICAgIG90aGVyX2ZsYWc9Jy0tZ3Rlc3RfZmlsdGVyPUZvbyonKQorCisKK2lmIF9fbmFt
ZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0
dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlzdC10
ZXN0cy11bml0dGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ3M2M3ZDFhNDVmMWYxOTZiMTM3NDgzYjA1
M2NhNTk4MDA3ZDI4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0Xy5jYwpAQCAtMCwwICsxLDE1NiBA
QAorLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisv
LyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIFVu
aXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4KKy8vCisv
LyBBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBsaXN0IGFsbCB0ZXN0cyB0aGF0IHdpbGwg
cnVuCisvLyBzbyB0aGF0IHdoZW4gdXNpbmcgYSBmaWx0ZXIsIGEgdXNlciB3aWxsIGtub3cgd2hh
dAorLy8gdGVzdHMgdG8gbG9vayBmb3IuIFRoZSB0ZXN0cyB3aWxsIG5vdCBiZSBydW4gYWZ0ZXIg
bGlzdGluZy4KKy8vCisvLyBUaGlzIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRo
b24gdW5pdCB0ZXN0LgorLy8gRG9uJ3QgcnVuIGl0IGRpcmVjdGx5LgorCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKKworLy8gU2V2ZXJhbCBkaWZmZXJlbnQgdGVzdCBjYXNlcyBhbmQgdGVzdHMg
dGhhdCB3aWxsIGJlIGxpc3RlZC4KK1RFU1QoRm9vLCBCYXIxKSB7Cit9CisKK1RFU1QoRm9vLCBC
YXIyKSB7Cit9CisKK1RFU1QoRm9vLCBESVNBQkxFRF9CYXIzKSB7Cit9CisKK1RFU1QoQWJjLCBY
eXopIHsKK30KKworVEVTVChBYmMsIERlZikgeworfQorCitURVNUKEZvb0JhciwgQmF6KSB7Cit9
CisKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitURVNUX0Yo
Rm9vVGVzdCwgVGVzdDEpIHsKK30KKworVEVTVF9GKEZvb1Rlc3QsIERJU0FCTEVEX1Rlc3QyKSB7
Cit9CisKK1RFU1RfRihGb29UZXN0LCBUZXN0MykgeworfQorCitURVNUKEZvb0RlYXRoVGVzdCwg
VGVzdDEpIHsKK30KKworLy8gQSBncm91cCBvZiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgor
CitjbGFzcyBNeVR5cGUgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgTXlUeXBlKGNvbnN0IHN0ZDo6
c3RyaW5nJiBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7fQorCisgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQorCisgcHJpdmF0ZToKKyAgc3Rk
OjpzdHJpbmcgdmFsdWVfOworfTsKKworLy8gVGVhY2hlcyBHb29nbGUgVGVzdCBob3cgdG8gcHJp
bnQgYSBNeVR5cGUuCit2b2lkIFByaW50VG8oY29uc3QgTXlUeXBlJiB4LCBzdGQ6Om9zdHJlYW0q
IG9zKSB7CisgICpvcyA8PCB4LnZhbHVlKCk7Cit9CisKK2NsYXNzIFZhbHVlUGFyYW1UZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08TXlUeXBlPiB7Cit9OworCitURVNUX1AoVmFs
dWVQYXJhbVRlc3QsIFRlc3RBKSB7Cit9CisKK1RFU1RfUChWYWx1ZVBhcmFtVGVzdCwgVGVzdEIp
IHsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoCisgICAgTXlJbnN0YW50aWF0aW9uLCBW
YWx1ZVBhcmFtVGVzdCwKKyAgICB0ZXN0aW5nOjpWYWx1ZXMoTXlUeXBlKCJvbmUgbGluZSIpLAor
ICAgICAgICAgICAgICAgICAgICBNeVR5cGUoInR3b1xubGluZXMiKSwKKyAgICAgICAgICAgICAg
ICAgICAgTXlUeXBlKCJhIHZlcnlcbmxvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vbmcgbGluZSIpKSk7
ICAvLyBOT0xJTlQKKworLy8gQSBncm91cCBvZiB0eXBlZCB0ZXN0cy4KKworLy8gQSBkZWxpYmVy
YXRlbHkgbG9uZyB0eXBlIG5hbWUgZm9yIHRlc3RpbmcgdGhlIGxpbmUtdHJ1bmNhdGluZworLy8g
YmVoYXZpb3Igd2hlbiBwcmludGluZyBhIHR5cGUgcGFyYW1ldGVyLgorY2xhc3MgVmVyeUxvb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vZ05hbWUgeyAgLy8gTk9MSU5UCit9OworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2NsYXNzIFR5cGVkVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBULCBpbnQga1NpemU+CitjbGFzcyBNeUFycmF5IHsKK307CisK
K3R5cGVkZWYgdGVzdGluZzo6VHlwZXM8VmVyeUxvb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vZ05hbWUs
ICAvLyBOT0xJTlQKKyAgICAgICAgICAgICAgICAgICAgICAgaW50KiwgTXlBcnJheTxib29sLCA0
Mj4gPiBNeVR5cGVzOworCitUWVBFRF9URVNUX0NBU0UoVHlwZWRUZXN0LCBNeVR5cGVzKTsKKwor
VFlQRURfVEVTVChUeXBlZFRlc3QsIFRlc3RBKSB7Cit9CisKK1RZUEVEX1RFU1QoVHlwZWRUZXN0
LCBUZXN0QikgeworfQorCisvLyBBIGdyb3VwIG9mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlUGFyYW1UZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgeworfTsKKworVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtVGVzdCk7CisK
K1RZUEVEX1RFU1RfUChUeXBlUGFyYW1UZXN0LCBUZXN0QSkgeworfQorCitUWVBFRF9URVNUX1Ao
VHlwZVBhcmFtVGVzdCwgVGVzdEIpIHsKK30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1Ao
VHlwZVBhcmFtVGVzdCwgVGVzdEEsIFRlc3RCKTsKKworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9D
QVNFX1AoTXksIFR5cGVQYXJhbVRlc3QsIE15VHlwZXMpOworCitpbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqKmFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7
CisKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1saXN0ZW5lci10ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWxpc3RlbmVyLXRlc3QuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODM1NTU5NzE1MWQwOWQ2YzMxNTY3MWY0MmRiNjZjYzRiZDQ4NTBmZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1saXN0ZW5lci10
ZXN0LmNjCkBAIC0wLDAgKzEsMzExIEBACisvLyBDb3B5cmlnaHQgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
Ly8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
Ky8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisvLworLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFt
ZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8KKy8vIFRoaXMgZmlsZSB2ZXJpZmllcyBHb29nbGUgVGVz
dCBldmVudCBsaXN0ZW5lcnMgcmVjZWl2ZSBldmVudHMgYXQgdGhlCisvLyByaWdodCB0aW1lcy4K
KworI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK3VzaW5n
IDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50OwordXNpbmcgOjp0ZXN0aW5nOjpF
bnZpcm9ubWVudDsKK3VzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7Cit1c2luZyA6OnRl
c3Rpbmc6OlRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3RDYXNlOwordXNpbmcgOjp0ZXN0aW5n
OjpUZXN0RXZlbnRMaXN0ZW5lcjsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdEluZm87Cit1c2luZyA6
OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OwordXNpbmcgOjp0ZXN0aW5nOjpVbml0VGVzdDsKKwor
Ly8gVXNlZCBieSB0ZXN0cyB0byByZWdpc3RlciB0aGVpciBldmVudHMuCitzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4qIGdfZXZlbnRzID0gTlVMTDsKKworbmFtZXNwYWNlIHRlc3RpbmcgeworbmFt
ZXNwYWNlIGludGVybmFsIHsKKworY2xhc3MgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lciA6IHB1Ymxp
YyBUZXN0RXZlbnRMaXN0ZW5lciB7CisgcHVibGljOgorICBleHBsaWNpdCBFdmVudFJlY29yZGlu
Z0xpc3RlbmVyKGNvbnN0IGNoYXIqIG5hbWUpIDogbmFtZV8obmFtZSkge30KKworIHByb3RlY3Rl
ZDoKKyAgdmlydHVhbCB2b2lkIE9uVGVzdFByb2dyYW1TdGFydChjb25zdCBVbml0VGVzdCYgLyp1
bml0X3Rlc3QqLykgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUo
Ik9uVGVzdFByb2dyYW1TdGFydCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVy
YXRpb25TdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBpdGVyYXRpb24pIHsKKyAgICBNZXNzYWdlIG1lc3Nh
Z2U7CisgICAgbWVzc2FnZSA8PCBHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0SXRlcmF0aW9uU3Rh
cnQiKQorICAgICAgICAgICAgPDwgIigiIDw8IGl0ZXJhdGlvbiA8PCAiKSI7CisgICAgZ19ldmVu
dHMtPnB1c2hfYmFjayhtZXNzYWdlLkdldFN0cmluZygpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9p
ZCBPbkVudmlyb25tZW50c1NldFVwU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8p
IHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPbkVudmlyb25t
ZW50c1NldFVwU3RhcnQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNT
ZXRVcEVuZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgeworICAgIGdfZXZlbnRzLT5w
dXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiKSk7Cisg
IH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0Q2FzZVN0YXJ0KGNvbnN0IFRlc3RDYXNlJiAvKnRl
c3RfY2FzZSovKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgi
T25UZXN0Q2FzZVN0YXJ0IikpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdFN0YXJ0KGNv
bnN0IFRlc3RJbmZvJiAvKnRlc3RfaW5mbyovKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhH
ZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0U3RhcnQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQg
T25UZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgLyp0ZXN0X3BhcnRfcmVzdWx0
Ki8pIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RQ
YXJ0UmVzdWx0IikpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdEVuZChjb25zdCBUZXN0
SW5mbyYgLyp0ZXN0X2luZm8qLykgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1l
dGhvZE5hbWUoIk9uVGVzdEVuZCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPblRlc3RDYXNl
RW5kKGNvbnN0IFRlc3RDYXNlJiAvKnRlc3RfY2FzZSovKSB7CisgICAgZ19ldmVudHMtPnB1c2hf
YmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0Q2FzZUVuZCIpKTsKKyAgfQorCisgIHZpcnR1
YWwgdm9pZCBPbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5p
dF90ZXN0Ki8pIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJP
bkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25F
bnZpcm9ubWVudHNUZWFyRG93bkVuZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewor
ICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRz
VGVhckRvd25FbmQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uRW5k
KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpdGVyYXRpb24pIHsKKyAgICBNZXNzYWdlIG1lc3NhZ2U7CisgICAgbWVz
c2FnZSA8PCBHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0SXRlcmF0aW9uRW5kIikKKyAgICAgICAg
ICAgIDw8ICIoIiAgPDwgaXRlcmF0aW9uIDw8ICIpIjsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNr
KG1lc3NhZ2UuR2V0U3RyaW5nKCkpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdFByb2dy
YW1FbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKKyAgICBnX2V2ZW50cy0+cHVz
aF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RQcm9ncmFtRW5kIikpOworICB9CisKKyBw
cml2YXRlOgorICBzdGQ6OnN0cmluZyBHZXRGdWxsTWV0aG9kTmFtZShjb25zdCBjaGFyKiBuYW1l
KSB7CisgICAgcmV0dXJuIG5hbWVfICsgIi4iICsgbmFtZTsKKyAgfQorCisgIHN0ZDo6c3RyaW5n
IG5hbWVfOworfTsKKworY2xhc3MgRW52aXJvbm1lbnRJbnZvY2F0aW9uQ2F0Y2hlciA6IHB1Ymxp
YyBFbnZpcm9ubWVudCB7CisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Cisg
ICAgZ19ldmVudHMtPnB1c2hfYmFjaygiRW52aXJvbm1lbnQ6OlNldFVwIik7CisgIH0KKworICB2
aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjaygiRW52aXJv
bm1lbnQ6OlRlYXJEb3duIik7CisgIH0KK307CisKK2NsYXNzIExpc3RlbmVyVGVzdCA6IHB1Ymxp
YyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7Cisg
ICAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0OjpTZXRVcFRlc3RDYXNlIik7Cisg
IH0KKworICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIGdfZXZlbnRzLT5w
dXNoX2JhY2soIkxpc3RlbmVyVGVzdDo6VGVhckRvd25UZXN0Q2FzZSIpOworICB9CisKKyAgdmly
dHVhbCB2b2lkIFNldFVwKCkgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVyVGVz
dDo6U2V0VXAiKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBnX2V2
ZW50cy0+cHVzaF9iYWNrKCJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duIik7CisgIH0KK307CisKK1RF
U1RfRihMaXN0ZW5lclRlc3QsIERvZXNGb28pIHsKKyAgLy8gVGVzdCBleGVjdXRpb24gb3JkZXIg
d2l0aGluIGEgdGVzdCBjYXNlIGlzIG5vdCBndWFyYW50ZWVkIHNvIHdlIGFyZSBub3QKKyAgLy8g
cmVjb3JkaW5nIHRoZSB0ZXN0IG5hbWUuCisgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVy
VGVzdDo6KiBUZXN0IEJvZHkiKTsKKyAgU1VDQ0VFRCgpOyAgLy8gVHJpZ2dlcnMgT25UZXN0UGFy
dFJlc3VsdC4KK30KKworVEVTVF9GKExpc3RlbmVyVGVzdCwgRG9lc0JhcikgeworICBnX2V2ZW50
cy0+cHVzaF9iYWNrKCJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5Iik7CisgIFNVQ0NFRUQoKTsg
IC8vIFRyaWdnZXJzIE9uVGVzdFBhcnRSZXN1bHQuCit9CisKK30gIC8vIG5hbWVzcGFjZSBpbnRl
cm5hbAorCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCit1c2luZyA6OnRlc3Rpbmc6OmludGVy
bmFsOjpFbnZpcm9ubWVudEludm9jYXRpb25DYXRjaGVyOwordXNpbmcgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6RXZlbnRSZWNvcmRpbmdMaXN0ZW5lcjsKKwordm9pZCBWZXJpZnlSZXN1bHRzKGNvbnN0
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgZGF0YSwKKyAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBjb25zdCogZXhwZWN0ZWRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZXhwZWN0ZWRfZGF0YV9zaXplKSB7CisgIGNvbnN0IHNpemVfdCBhY3R1YWxfc2l6ZSA9IGRhdGEu
c2l6ZSgpOworICAvLyBJZiB0aGUgZm9sbG93aW5nIGFzc2VydGlvbiBmYWlscywgYSBuZXcgZW50
cnkgd2lsbCBiZSBhcHBlbmRlZCB0bworICAvLyBkYXRhLiAgSGVuY2Ugd2Ugc2F2ZSBkYXRhLnNp
emUoKSBmaXJzdC4KKyAgRVhQRUNUX0VRKGV4cGVjdGVkX2RhdGFfc2l6ZSwgYWN0dWFsX3NpemUp
OworCisgIC8vIENvbXBhcmVzIHRoZSBjb21tb24gcHJlZml4LgorICBjb25zdCBzaXplX3Qgc2hv
cnRlcl9zaXplID0gZXhwZWN0ZWRfZGF0YV9zaXplIDw9IGFjdHVhbF9zaXplID8KKyAgICAgIGV4
cGVjdGVkX2RhdGFfc2l6ZSA6IGFjdHVhbF9zaXplOworICBzaXplX3QgaSA9IDA7CisgIGZvciAo
OyBpIDwgc2hvcnRlcl9zaXplOyArK2kpIHsKKyAgICBBU1NFUlRfU1RSRVEoZXhwZWN0ZWRfZGF0
YVtpXSwgZGF0YVtpXS5jX3N0cigpKQorICAgICAgICA8PCAiYXQgcG9zaXRpb24gIiA8PCBpOwor
ICB9CisKKyAgLy8gUHJpbnRzIGV4dHJhIGVsZW1lbnRzIGluIHRoZSBhY3R1YWwgZGF0YS4KKyAg
Zm9yICg7IGkgPCBhY3R1YWxfc2l6ZTsgKytpKSB7CisgICAgcHJpbnRmKCIgIEFjdHVhbCBldmVu
dCAjJWx1OiAlc1xuIiwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaSksIGRh
dGFbaV0uY19zdHIoKSk7CisgIH0KK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2
KSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBldmVudHM7CisgIGdfZXZlbnRzID0gJmV2
ZW50czsKKyAgSW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIFVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5saXN0ZW5lcnMoKS5BcHBlbmQoCisgICAgICBuZXcgRXZlbnRSZWNvcmRpbmdM
aXN0ZW5lcigiMXN0IikpOworICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCku
QXBwZW5kKAorICAgICAgbmV3IEV2ZW50UmVjb3JkaW5nTGlzdGVuZXIoIjJuZCIpKTsKKworICBB
ZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEVudmlyb25tZW50SW52b2NhdGlvbkNhdGNoZXIp
OworCisgIEdURVNUX0NIRUNLXyhldmVudHMuc2l6ZSgpID09IDApCisgICAgICA8PCAiQWRkR2xv
YmFsVGVzdEVudmlyb25tZW50IHNob3VsZCBub3QgZ2VuZXJhdGUgYW55IGV2ZW50cyBpdHNlbGYu
IjsKKworICA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcocmVwZWF0KSA9IDI7CisgIGludCByZXRfdmFs
ID0gUlVOX0FMTF9URVNUUygpOworCisgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkX2V2ZW50
c1tdID0geworICAgICIxc3QuT25UZXN0UHJvZ3JhbVN0YXJ0IiwKKyAgICAiMm5kLk9uVGVzdFBy
b2dyYW1TdGFydCIsCisgICAgIjFzdC5PblRlc3RJdGVyYXRpb25TdGFydCgwKSIsCisgICAgIjJu
ZC5PblRlc3RJdGVyYXRpb25TdGFydCgwKSIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVw
U3RhcnQiLAorICAgICIybmQuT25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0IiwKKyAgICAiRW52aXJv
bm1lbnQ6OlNldFVwIiwKKyAgICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiLAorICAgICIx
c3QuT25FbnZpcm9ubWVudHNTZXRVcEVuZCIsCisgICAgIjFzdC5PblRlc3RDYXNlU3RhcnQiLAor
ICAgICIybmQuT25UZXN0Q2FzZVN0YXJ0IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcFRlc3RD
YXNlIiwKKyAgICAiMXN0Lk9uVGVzdFN0YXJ0IiwKKyAgICAiMm5kLk9uVGVzdFN0YXJ0IiwKKyAg
ICAiTGlzdGVuZXJUZXN0OjpTZXRVcCIsCisgICAgIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHki
LAorICAgICIxc3QuT25UZXN0UGFydFJlc3VsdCIsCisgICAgIjJuZC5PblRlc3RQYXJ0UmVzdWx0
IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93biIsCisgICAgIjJuZC5PblRlc3RFbmQiLAor
ICAgICIxc3QuT25UZXN0RW5kIiwKKyAgICAiMXN0Lk9uVGVzdFN0YXJ0IiwKKyAgICAiMm5kLk9u
VGVzdFN0YXJ0IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcCIsCisgICAgIkxpc3RlbmVyVGVz
dDo6KiBUZXN0IEJvZHkiLAorICAgICIxc3QuT25UZXN0UGFydFJlc3VsdCIsCisgICAgIjJuZC5P
blRlc3RQYXJ0UmVzdWx0IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93biIsCisgICAgIjJu
ZC5PblRlc3RFbmQiLAorICAgICIxc3QuT25UZXN0RW5kIiwKKyAgICAiTGlzdGVuZXJUZXN0OjpU
ZWFyRG93blRlc3RDYXNlIiwKKyAgICAiMm5kLk9uVGVzdENhc2VFbmQiLAorICAgICIxc3QuT25U
ZXN0Q2FzZUVuZCIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiLAorICAg
ICIybmQuT25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0IiwKKyAgICAiRW52aXJvbm1lbnQ6OlRl
YXJEb3duIiwKKyAgICAiMm5kLk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiLAorICAgICIxc3Qu
T25FbnZpcm9ubWVudHNUZWFyRG93bkVuZCIsCisgICAgIjJuZC5PblRlc3RJdGVyYXRpb25FbmQo
MCkiLAorICAgICIxc3QuT25UZXN0SXRlcmF0aW9uRW5kKDApIiwKKyAgICAiMXN0Lk9uVGVzdEl0
ZXJhdGlvblN0YXJ0KDEpIiwKKyAgICAiMm5kLk9uVGVzdEl0ZXJhdGlvblN0YXJ0KDEpIiwKKyAg
ICAiMXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIsCisgICAgIjJuZC5PbkVudmlyb25tZW50
c1NldFVwU3RhcnQiLAorICAgICJFbnZpcm9ubWVudDo6U2V0VXAiLAorICAgICIybmQuT25FbnZp
cm9ubWVudHNTZXRVcEVuZCIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVwRW5kIiwKKyAg
ICAiMXN0Lk9uVGVzdENhc2VTdGFydCIsCisgICAgIjJuZC5PblRlc3RDYXNlU3RhcnQiLAorICAg
ICJMaXN0ZW5lclRlc3Q6OlNldFVwVGVzdENhc2UiLAorICAgICIxc3QuT25UZXN0U3RhcnQiLAor
ICAgICIybmQuT25UZXN0U3RhcnQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwKKyAgICAi
TGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCisgICAgIjFzdC5PblRlc3RQYXJ0UmVzdWx0IiwK
KyAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3du
IiwKKyAgICAiMm5kLk9uVGVzdEVuZCIsCisgICAgIjFzdC5PblRlc3RFbmQiLAorICAgICIxc3Qu
T25UZXN0U3RhcnQiLAorICAgICIybmQuT25UZXN0U3RhcnQiLAorICAgICJMaXN0ZW5lclRlc3Q6
OlNldFVwIiwKKyAgICAiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCisgICAgIjFzdC5PblRl
c3RQYXJ0UmVzdWx0IiwKKyAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAorICAgICJMaXN0ZW5l
clRlc3Q6OlRlYXJEb3duIiwKKyAgICAiMm5kLk9uVGVzdEVuZCIsCisgICAgIjFzdC5PblRlc3RF
bmQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duVGVzdENhc2UiLAorICAgICIybmQuT25U
ZXN0Q2FzZUVuZCIsCisgICAgIjFzdC5PblRlc3RDYXNlRW5kIiwKKyAgICAiMXN0Lk9uRW52aXJv
bm1lbnRzVGVhckRvd25TdGFydCIsCisgICAgIjJuZC5PbkVudmlyb25tZW50c1RlYXJEb3duU3Rh
cnQiLAorICAgICJFbnZpcm9ubWVudDo6VGVhckRvd24iLAorICAgICIybmQuT25FbnZpcm9ubWVu
dHNUZWFyRG93bkVuZCIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5kIiwKKyAg
ICAiMm5kLk9uVGVzdEl0ZXJhdGlvbkVuZCgxKSIsCisgICAgIjFzdC5PblRlc3RJdGVyYXRpb25F
bmQoMSkiLAorICAgICIybmQuT25UZXN0UHJvZ3JhbUVuZCIsCisgICAgIjFzdC5PblRlc3RQcm9n
cmFtRW5kIgorICB9OworICBWZXJpZnlSZXN1bHRzKGV2ZW50cywKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZF9ldmVudHMsCisgICAgICAgICAgICAgICAgc2l6ZW9mKGV4cGVjdGVkX2V2ZW50cykv
c2l6ZW9mKGV4cGVjdGVkX2V2ZW50c1swXSkpOworCisgIC8vIFdlIG5lZWQgdG8gY2hlY2sgbWFu
dWFsbHkgZm9yIGFkIGhvYyB0ZXN0IGZhaWx1cmVzIHRoYXQgaGFwcGVuIGFmdGVyCisgIC8vIFJV
Tl9BTExfVEVTVFMgZmluaXNoZXMuCisgIGlmIChVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+RmFp
bGVkKCkpCisgICAgcmV0X3ZhbCA9IDE7CisKKyAgcmV0dXJuIHJldF92YWw7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbWVzc2FnZS10ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW1lc3NhZ2UtdGVz
dC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNjQ0NTg1M2U0MzNkM2MxNDM0NTI1NzM5MWE2Yjk4OGE5ZDM4MGVm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LW1lc3NhZ2UtdGVzdC5jYwpAQCAtMCwwICsxLDE1OCBAQAorLy8gQ29weXJpZ2h0IDIwMDUs
IEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gVGVzdHMgZm9yIHRoZSBNZXNzYWdl
IGNsYXNzLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgorCisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsKKwordXNpbmcgOjp0ZXN0aW5nOjpNZXNzYWdl
OworCisvLyBUZXN0cyB0aGUgdGVzdGluZzo6TWVzc2FnZSBjbGFzcworCisvLyBUZXN0cyB0aGUg
ZGVmYXVsdCBjb25zdHJ1Y3Rvci4KK1RFU1QoTWVzc2FnZVRlc3QsIERlZmF1bHRDb25zdHJ1Y3Rv
cikgeworICBjb25zdCBNZXNzYWdlIG1zZzsKKyAgRVhQRUNUX0VRKCIiLCBtc2cuR2V0U3RyaW5n
KCkpOworfQorCisvLyBUZXN0cyB0aGUgY29weSBjb25zdHJ1Y3Rvci4KK1RFU1QoTWVzc2FnZVRl
c3QsIENvcHlDb25zdHJ1Y3RvcikgeworICBjb25zdCBNZXNzYWdlIG1zZzEoIkhlbGxvIik7Cisg
IGNvbnN0IE1lc3NhZ2UgbXNnMihtc2cxKTsKKyAgRVhQRUNUX0VRKCJIZWxsbyIsIG1zZzIuR2V0
U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSBNZXNzYWdlIGZyb20gYSBD
LXN0cmluZy4KK1RFU1QoTWVzc2FnZVRlc3QsIENvbnN0cnVjdHNGcm9tQ1N0cmluZykgeworICBN
ZXNzYWdlIG1zZygiSGVsbG8iKTsKKyAgRVhQRUNUX0VRKCJIZWxsbyIsIG1zZy5HZXRTdHJpbmco
KSk7Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIGZsb2F0LgorVEVTVChNZXNzYWdlVGVzdCwg
U3RyZWFtc0Zsb2F0KSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHMgPSAoTWVzc2FnZSgpIDw8IDEu
MjM0NTZGIDw8ICIgIiA8PCAyLjM0NTY3RikuR2V0U3RyaW5nKCk7CisgIC8vIEJvdGggbnVtYmVy
cyBzaG91bGQgYmUgcHJpbnRlZCB3aXRoIGVub3VnaCBwcmVjaXNpb24uCisgIEVYUEVDVF9QUkVE
X0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIxLjIzNDU2MCIsIHMuY19zdHIoKSk7Cisg
IEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIgMi4zNDU2NjkiLCBz
LmNfc3RyKCkpOworfQorCisvLyBUZXN0cyBzdHJlYW1pbmcgYSBkb3VibGUuCitURVNUKE1lc3Nh
Z2VUZXN0LCBTdHJlYW1zRG91YmxlKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHMgPSAoTWVzc2Fn
ZSgpIDw8IDEyNjA1NzA4ODAuNDU1NTQ5NyA8PCAiICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAxMjYwNTcyMjY1LjE5NTQ1MzQpLkdldFN0cmluZygpOworICAvLyBCb3Ro
IG51bWJlcnMgc2hvdWxkIGJlIHByaW50ZWQgd2l0aCBlbm91Z2ggcHJlY2lzaW9uLgorICBFWFBF
Q1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6OklzU3Vic3RyaW5nLCAiMTI2MDU3MDg4MC40NSIsIHMu
Y19zdHIoKSk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIg
MTI2MDU3MjI2NS4xOSIsIHMuY19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIG5v
bi1jaGFyIHBvaW50ZXIuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zUG9pbnRlcikgeworICBp
bnQgbiA9IDA7CisgIGludCogcCA9ICZuOworICBFWFBFQ1RfTkUoIihudWxsKSIsIChNZXNzYWdl
KCkgPDwgcCkuR2V0U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyBzdHJlYW1pbmcgYSBOVUxMIG5v
bi1jaGFyIHBvaW50ZXIuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zTnVsbFBvaW50ZXIpIHsK
KyAgaW50KiBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCIobnVsbCkiLCAoTWVzc2FnZSgpIDw8IHAp
LkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGEgQyBzdHJpbmcuCitURVNU
KE1lc3NhZ2VUZXN0LCBTdHJlYW1zQ1N0cmluZykgeworICBFWFBFQ1RfRVEoIkZvbyIsIChNZXNz
YWdlKCkgPDwgIkZvbyIpLkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGEg
TlVMTCBDIHN0cmluZy4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNOdWxsQ1N0cmluZykgewor
ICBjaGFyKiBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCIobnVsbCkiLCAoTWVzc2FnZSgpIDw8IHAp
LkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIHN0ZDo6c3RyaW5nLgorVEVT
VChNZXNzYWdlVGVzdCwgU3RyZWFtc1N0cmluZykgeworICBjb25zdCA6OnN0ZDo6c3RyaW5nIHN0
cigiSGVsbG8iKTsKKyAgRVhQRUNUX0VRKCJIZWxsbyIsIChNZXNzYWdlKCkgPDwgc3RyKS5HZXRT
dHJpbmcoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgd2UgY2FuIG91dHB1dCBzdHJpbmdzIGNvbnRh
aW5pbmcgZW1iZWRkZWQgTlVMcy4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNTdHJpbmdXaXRo
RW1iZWRkZWROVUwpIHsKKyAgY29uc3QgY2hhciBjaGFyX2FycmF5X3dpdGhfbnVsW10gPQorICAg
ICAgIkhlcmUncyBhIE5VTFwwIGFuZCBzb21lIG1vcmUgc3RyaW5nIjsKKyAgY29uc3QgOjpzdGQ6
OnN0cmluZyBzdHJpbmdfd2l0aF9udWwoY2hhcl9hcnJheV93aXRoX251bCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGNoYXJfYXJyYXlfd2l0aF9udWwpIC0g
MSk7CisgIEVYUEVDVF9FUSgiSGVyZSdzIGEgTlVMXFwwIGFuZCBzb21lIG1vcmUgc3RyaW5nIiwK
KyAgICAgICAgICAgIChNZXNzYWdlKCkgPDwgc3RyaW5nX3dpdGhfbnVsKS5HZXRTdHJpbmcoKSk7
Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIE5VTCBjaGFyLgorVEVTVChNZXNzYWdlVGVzdCwg
U3RyZWFtc05VTENoYXIpIHsKKyAgRVhQRUNUX0VRKCJcXDAiLCAoTWVzc2FnZSgpIDw8ICdcMCcp
LkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGludC4KK1RFU1QoTWVzc2Fn
ZVRlc3QsIFN0cmVhbXNJbnQpIHsKKyAgRVhQRUNUX0VRKCIxMjMiLCAoTWVzc2FnZSgpIDw8IDEy
MykuR2V0U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyB0aGF0IGJhc2ljIElPIG1hbmlwdWxhdG9y
cyAoZW5kbCwgZW5kcywgYW5kIGZsdXNoKSBjYW4gYmUKKy8vIHN0cmVhbWVkIHRvIE1lc3NhZ2Uu
CitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zQmFzaWNJb01hbmlwKSB7CisgIEVYUEVDVF9FUSgi
TGluZSAxLlxuQSBOVUwgY2hhciBcXDAgaW4gbGluZSAyLiIsCisgICAgICAgICAgICAgICAoTWVz
c2FnZSgpIDw8ICJMaW5lIDEuIiA8PCBzdGQ6OmVuZGwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCAiQSBOVUwgY2hhciAiIDw8IHN0ZDo6ZW5kcyA8PCBzdGQ6OmZsdXNoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgIiBpbiBsaW5lIDIuIikuR2V0U3RyaW5nKCkpOworfQorCisvLyBU
ZXN0cyBNZXNzYWdlOjpHZXRTdHJpbmcoKQorVEVTVChNZXNzYWdlVGVzdCwgR2V0U3RyaW5nKSB7
CisgIE1lc3NhZ2UgbXNnOworICBtc2cgPDwgMSA8PCAiIGxhbWIiOworICBFWFBFQ1RfRVEoIjEg
bGFtYiIsIG1zZy5HZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIE1lc3Nh
Z2Ugb2JqZWN0IHRvIGFuIG9zdHJlYW0uCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zVG9PU3Ry
ZWFtKSB7CisgIE1lc3NhZ2UgbXNnKCJIZWxsbyIpOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNz
OworICBzcyA8PCBtc2c7CisgIEVYUEVDVF9FUSgiSGVsbG8iLCB0ZXN0aW5nOjppbnRlcm5hbDo6
U3RyaW5nU3RyZWFtVG9TdHJpbmcoJnNzKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBNZXNzYWdl
IG9iamVjdCBkb2Vzbid0IHRha2UgdXAgdG9vIG11Y2ggc3RhY2sgc3BhY2UuCitURVNUKE1lc3Nh
Z2VUZXN0LCBEb2VzTm90VGFrZVVwTXVjaFN0YWNrU3BhY2UpIHsKKyAgRVhQRUNUX0xFKHNpemVv
ZihNZXNzYWdlKSwgMTZVKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3B0aW9ucy10ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW9wdGlvbnMtdGVzdC5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lZGQ0ZWJhM2JkMzEwOTU5NTBhOGQ5OGNmM2RhZjZmMzRkNjQ5NjlmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW9wdGlv
bnMtdGVzdC5jYwpAQCAtMCwwICsxLDIxMSBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJ
bmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEdvb2dsZSBUZXN0IFVuaXRUZXN0T3B0aW9ucyB0ZXN0
cworLy8KKy8vIFRoaXMgZmlsZSB0ZXN0cyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRl
cm5hbGx5IGJ5CisvLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdp
dGhvdXQgbm90aWNlLgorLy8KKy8vIFRoaXMgZmlsZSBpcyAjaW5jbHVkZWQgZnJvbSBndGVzdC5j
YywgdG8gYXZvaWQgY2hhbmdpbmcgYnVpbGQgb3IKKy8vIG1ha2UtZmlsZXMgb24gV2luZG93cyBh
bmQgb3RoZXIgcGxhdGZvcm1zLiBEbyBub3QgI2luY2x1ZGUgdGhpcyBmaWxlCisvLyBhbnl3aGVy
ZSBlbHNlIQorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lmIEdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCisjIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbGlmIEdURVNUX09TX1dJTkRPV1MK
KyMgaW5jbHVkZSA8ZGlyZWN0Lmg+CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxF
CisKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCisKK25hbWVzcGFjZSB0ZXN0
aW5nIHsKK25hbWVzcGFjZSBpbnRlcm5hbCB7CituYW1lc3BhY2UgeworCisvLyBUdXJucyB0aGUg
Z2l2ZW4gcmVsYXRpdmUgcGF0aCBpbnRvIGFuIGFic29sdXRlIHBhdGguCitGaWxlUGF0aCBHZXRB
YnNvbHV0ZVBhdGhPZihjb25zdCBGaWxlUGF0aCYgcmVsYXRpdmVfcGF0aCkgeworICByZXR1cm4g
RmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCksIHJlbGF0aXZl
X3BhdGgpOworfQorCisvLyBUZXN0aW5nIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0
L0dldE91dHB1dEZpbGUuCisKK1RFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0Rm9ybWF0RGVm
YXVsdCkgeworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAiIjsKKyAgRVhQRUNUX1NUUkVRKCIiLCBV
bml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdCgpLmNfc3RyKCkpOworfQorCitURVNUKFht
bE91dHB1dFRlc3QsIEdldE91dHB1dEZvcm1hdCkgeworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAi
eG1sOmZpbGVuYW1lIjsKKyAgRVhQRUNUX1NUUkVRKCJ4bWwiLCBVbml0VGVzdE9wdGlvbnM6Okdl
dE91dHB1dEZvcm1hdCgpLmNfc3RyKCkpOworfQorCitURVNUKFhtbE91dHB1dFRlc3QsIEdldE91
dHB1dEZpbGVEZWZhdWx0KSB7CisgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICIiOworICBFWFBFQ1Rf
RVEoR2V0QWJzb2x1dGVQYXRoT2YoRmlsZVBhdGgoInRlc3RfZGV0YWlsLnhtbCIpKS5zdHJpbmco
KSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRG
aWxlKCkpOworfQorCitURVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZpbGVTaW5nbGVGaWxl
KSB7CisgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6ZmlsZW5hbWUuYWJjIjsKKyAgRVhQRUNU
X0VRKEdldEFic29sdXRlUGF0aE9mKEZpbGVQYXRoKCJmaWxlbmFtZS5hYmMiKSkuc3RyaW5nKCks
CisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0Rmls
ZSgpKTsKK30KKworVEVTVChYbWxPdXRwdXRUZXN0LCBHZXRPdXRwdXRGaWxlRnJvbURpcmVjdG9y
eVBhdGgpIHsKKyAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbDpwYXRoIiBHVEVTVF9QQVRIX1NF
UF87CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdGVkX291dHB1dF9maWxlID0KKyAgICAgIEdl
dEFic29sdXRlUGF0aE9mKAorICAgICAgICAgIEZpbGVQYXRoKHN0ZDo6c3RyaW5nKCJwYXRoIikg
KyBHVEVTVF9QQVRIX1NFUF8gKworICAgICAgICAgICAgICAgICAgIEdldEN1cnJlbnRFeGVjdXRh
YmxlTmFtZSgpLnN0cmluZygpICsgIi54bWwiKSkuc3RyaW5nKCk7CisgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBvdXRwdXRfZmlsZSA9CisgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0
aFRvT3V0cHV0RmlsZSgpOworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgRVhQRUNUX1NUUkNBU0VF
UShleHBlY3RlZF9vdXRwdXRfZmlsZS5jX3N0cigpLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKKyNl
bHNlCisgIEVYUEVDVF9FUShleHBlY3RlZF9vdXRwdXRfZmlsZSwgb3V0cHV0X2ZpbGUuY19zdHIo
KSk7CisjZW5kaWYKK30KKworVEVTVChPdXRwdXRGaWxlSGVscGVyc1Rlc3QsIEdldEN1cnJlbnRF
eGVjdXRhYmxlTmFtZSkgeworICBjb25zdCBzdGQ6OnN0cmluZyBleGVfc3RyID0gR2V0Q3VycmVu
dEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCk7CisjaWYgR1RFU1RfT1NfV0lORE9XUworICBjb25z
dCBib29sIHN1Y2Nlc3MgPQorICAgICAgX3N0cmNtcGkoImdvb2dsZXRlc3Qtb3B0aW9ucy10ZXN0
IiwgZXhlX3N0ci5jX3N0cigpKSA9PSAwIHx8CisgICAgICBfc3RyY21waSgiZ3Rlc3Qtb3B0aW9u
cy1leF90ZXN0IiwgZXhlX3N0ci5jX3N0cigpKSA9PSAwIHx8CisgICAgICBfc3RyY21waSgiZ3Rl
c3RfYWxsX3Rlc3QiLCBleGVfc3RyLmNfc3RyKCkpID09IDAgfHwKKyAgICAgIF9zdHJjbXBpKCJn
dGVzdF9kbGxfdGVzdCIsIGV4ZV9zdHIuY19zdHIoKSkgPT0gMDsKKyNlbGlmIEdURVNUX09TX0ZV
Q0hTSUEKKyAgY29uc3QgYm9vbCBzdWNjZXNzID0gZXhlX3N0ciA9PSAiYXBwIjsKKyNlbHNlCisg
IC8vIEZJWE1FOiByZW1vdmUgdGhlIGhhcmQtY29kZWQgImx0LSIgcHJlZml4IHdoZW4gbGlidG9v
bCByZXBsYWNlbWVudCBpcyByZWFkeQorICBjb25zdCBib29sIHN1Y2Nlc3MgPQorICAgICAgZXhl
X3N0ciA9PSAiZ29vZ2xldGVzdC1vcHRpb25zLXRlc3QiIHx8CisgICAgICBleGVfc3RyID09ICJn
dGVzdF9hbGxfdGVzdCIgfHwKKyAgICAgIGV4ZV9zdHIgPT0gImx0LWd0ZXN0X2FsbF90ZXN0IiB8
fAorICAgICAgZXhlX3N0ciA9PSAiZ3Rlc3RfZGxsX3Rlc3QiOworI2VuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCisgIGlmICghc3VjY2VzcykKKyAgICBGQUlMKCkgPDwgIkdldEN1cnJlbnRFeGVj
dXRhYmxlTmFtZSgpIHJldHVybnMgIiA8PCBleGVfc3RyOworfQorCisjaWYgIUdURVNUX09TX0ZV
Q0hTSUEKKworY2xhc3MgWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBw
cm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBvcmlnaW5hbF93b3JraW5n
X2Rpcl8gPSBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpOworICAgIHBvc2l4OjpDaERpcigiLi4i
KTsKKyAgICAvLyBUaGlzIHdpbGwgbWFrZSB0aGUgdGVzdCBmYWlsIGlmIHJ1biBmcm9tIHRoZSBy
b290IGRpcmVjdG9yeS4KKyAgICBFWFBFQ1RfTkUob3JpZ2luYWxfd29ya2luZ19kaXJfLnN0cmlu
ZygpLAorICAgICAgICAgICAgICBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpLnN0cmluZygpKTsK
KyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBwb3NpeDo6Q2hEaXIob3Jp
Z2luYWxfd29ya2luZ19kaXJfLnN0cmluZygpLmNfc3RyKCkpOworICB9CisKKyAgRmlsZVBhdGgg
b3JpZ2luYWxfd29ya2luZ19kaXJfOworfTsKKworVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRl
c3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aERlZmF1bHQpIHsKKyAgR1RFU1RfRkxB
RyhvdXRwdXQpID0gIiI7CisgIEVYUEVDVF9FUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2lu
YWxfd29ya2luZ19kaXJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQ
YXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuc3RyaW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9w
dGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKK30KKworVEVTVF9GKFhtbE91
dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aERlZmF1bHRY
TUwpIHsKKyAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbCI7CisgIEVYUEVDVF9FUShGaWxlUGF0
aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuc3RyaW5nKCksCisg
ICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgp
KTsKK30KKworVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxX
b3JraW5nRGlyV2l0aFJlbGF0aXZlRmlsZSkgeworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1s
OmZpbGVuYW1lLmFiYyI7CisgIEVYUEVDVF9FUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2lu
YWxfd29ya2luZ19kaXJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQ
YXRoKCJmaWxlbmFtZS5hYmMiKSkuc3RyaW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9wdGlv
bnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKK30KKworVEVTVF9GKFhtbE91dHB1
dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aFJlbGF0aXZlUGF0
aCkgeworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOnBhdGgiIEdURVNUX1BBVEhfU0VQXzsK
KyAgY29uc3Qgc3RkOjpzdHJpbmcgZXhwZWN0ZWRfb3V0cHV0X2ZpbGUgPQorICAgICAgRmlsZVBh
dGg6OkNvbmNhdFBhdGhzKAorICAgICAgICAgIG9yaWdpbmFsX3dvcmtpbmdfZGlyXywKKyAgICAg
ICAgICBGaWxlUGF0aChzdGQ6OnN0cmluZygicGF0aCIpICsgR1RFU1RfUEFUSF9TRVBfICsKKyAg
ICAgICAgICAgICAgICAgICBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmcoKSArICIu
eG1sIikpLnN0cmluZygpOworICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2ZpbGUgPQorICAg
ICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKTsKKyNpZiBH
VEVTVF9PU19XSU5ET1dTCisgIEVYUEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUu
Y19zdHIoKSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7CisjZWxzZQorICBFWFBFQ1RfRVEoZXhwZWN0
ZWRfb3V0cHV0X2ZpbGUsIG91dHB1dF9maWxlLmNfc3RyKCkpOworI2VuZGlmCit9CisKK1RFU1Rf
RihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhB
YnNvbHV0ZUZpbGUpIHsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIEdURVNUX0ZMQUcob3V0cHV0
KSA9ICJ4bWw6YzpcXHRtcFxcZmlsZW5hbWUuYWJjIjsKKyAgRVhQRUNUX0VRKEZpbGVQYXRoKCJj
OlxcdG1wXFxmaWxlbmFtZS5hYmMiKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0
aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOworI2Vsc2UKKyAgR1RFU1RfRkxB
RyhvdXRwdXQpID0ieG1sOi90bXAvZmlsZW5hbWUuYWJjIjsKKyAgRVhQRUNUX0VRKEZpbGVQYXRo
KCIvdG1wL2ZpbGVuYW1lLmFiYyIpLnN0cmluZygpLAorICAgICAgICAgICAgVW5pdFRlc3RPcHRp
b25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSk7CisjZW5kaWYKK30KKworVEVTVF9G
KFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aEFi
c29sdXRlUGF0aCkgeworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgY29uc3Qgc3RkOjpzdHJpbmcg
cGF0aCA9ICJjOlxcdG1wXFwiOworI2Vsc2UKKyAgY29uc3Qgc3RkOjpzdHJpbmcgcGF0aCA9ICIv
dG1wLyI7CisjZW5kaWYKKworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOiIgKyBwYXRoOwor
ICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3RlZF9vdXRwdXRfZmlsZSA9CisgICAgICBwYXRoICsg
R2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKyAiLnhtbCI7CisgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBvdXRwdXRfZmlsZSA9CisgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29s
dXRlUGF0aFRvT3V0cHV0RmlsZSgpOworCisjaWYgR1RFU1RfT1NfV0lORE9XUworICBFWFBFQ1Rf
U1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxlLmNfc3RyKCksIG91dHB1dF9maWxlLmNfc3Ry
KCkpOworI2Vsc2UKKyAgRVhQRUNUX0VRKGV4cGVjdGVkX291dHB1dF9maWxlLCBvdXRwdXRfZmls
ZS5jX3N0cigpKTsKKyNlbmRpZgorfQorCisjZW5kaWYgIC8vICFHVEVTVF9PU19GVUNIU0lBCisK
K30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCit9ICAvLyBuYW1lc3Bh
Y2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LW91dHB1dC10ZXN0LWdvbGRlbi1saW4udHh0IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0LWdvbGRlbi1saW4udHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg2ZGE4NDViN2QwNGVhMWYyYjU1MzQ2MDRlZTljMGQyYjVmODU5MTYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Qt
Z29sZGVuLWxpbi50eHQKQEAgLTAsMCArMSwxMDQ3IEBACitUaGUgbm9uLXRlc3QgcGFydCBvZiB0
aGUgY29kZSBpcyBleHBlY3RlZCB0byBoYXZlIDIgZmFpbHVyZXMuCisKK2dvb2dsZXRlc3Qtb3V0
cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK1ZhbHVlIG9mOiBmYWxzZQorICBBY3R1YWw6IGZhbHNl
CitFeHBlY3RlZDogdHJ1ZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91
dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1
ZXM6CisgIDIKKyAgMworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzJtWz09PT09PT09
PT1dIBtbbVJ1bm5pbmcgNzYgdGVzdHMgZnJvbSAzNCB0ZXN0IGNhc2VzLgorG1swOzMybVstLS0t
LS0tLS0tXSAbW21HbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCitGb29FbnZpcm9ubWVu
dDo6U2V0VXAoKSBjYWxsZWQuCitCYXJFbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuCisbWzA7
MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEFEZWF0aFRlc3QKKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttQURlYXRoVGVzdC5TaG91bGRSdW5GaXJzdAorG1swOzMybVsgICAgICAgT0sgXSAb
W21BRGVhdGhUZXN0LlNob3VsZFJ1bkZpcnN0CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVz
dCBmcm9tIEFUeXBlZERlYXRoVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDszMm1b
IFJVTiAgICAgIF0gG1ttQVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1b
ICAgICAgIE9LIF0gG1ttQVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1b
LS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gQVR5cGVkRGVhdGhUZXN0LzEsIHdoZXJlIFR5cGVQ
YXJhbSA9IGRvdWJsZQorG1swOzMybVsgUlVOICAgICAgXSAbW21BVHlwZWREZWF0aFRlc3QvMS5T
aG91bGRSdW5GaXJzdAorG1swOzMybVsgICAgICAgT0sgXSAbW21BVHlwZWREZWF0aFRlc3QvMS5T
aG91bGRSdW5GaXJzdAorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBNeS9BVHlw
ZVBhcmFtRGVhdGhUZXN0LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGludAorG1swOzMybVsgUlVOICAg
ICAgXSAbW21NeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1b
ICAgICAgIE9LIF0gG1ttTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Cisb
WzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIE15L0FUeXBlUGFyYW1EZWF0aFRlc3Qv
MSwgd2hlcmUgVHlwZVBhcmFtID0gZG91YmxlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbU15L0FU
eXBlUGFyYW1EZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAorG1swOzMybVsgICAgICAgT0sgXSAb
W21NeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1bLS0tLS0t
LS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFBhc3NpbmdUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtb
bVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MQorG1swOzMybVsgICAgICAgT0sgXSAbW21QYXNzaW5n
VGVzdC5QYXNzaW5nVGVzdDEKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttUGFzc2luZ1Rlc3QuUGFz
c2luZ1Rlc3QyCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0
MgorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gTm9uZmF0YWxGYWlsdXJlVGVz
dAorG1swOzMybVsgUlVOICAgICAgXSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkVzY2FwZXNTdHJp
bmdPcGVyYW5kcworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0
ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICBrR29sZGVuU3RyaW5nCisgICAgV2hpY2gg
aXM6ICJcIkxpbmUiCisgIGFjdHVhbAorICAgIFdoaWNoIGlzOiAiYWN0dWFsIFwic3RyaW5nXCIi
CitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6
IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgZ29sZGVuCisg
ICAgV2hpY2ggaXM6ICJcIkxpbmUiCisgIGFjdHVhbAorICAgIFdoaWNoIGlzOiAiYWN0dWFsIFwi
c3RyaW5nXCIiCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0g
G1ttTm9uZmF0YWxGYWlsdXJlVGVzdC5Fc2NhcGVzU3RyaW5nT3BlcmFuZHMKKxtbMDszMm1bIFJV
TiAgICAgIF0gG1ttTm9uZmF0YWxGYWlsdXJlVGVzdC5EaWZmRm9yTG9uZ1N0cmluZ3MKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRo
ZXNlIHZhbHVlczoKKyAgZ29sZGVuX3N0cgorICAgIFdoaWNoIGlzOiAiXCJMaW5lXDAgMVwiXG5M
aW5lIDIiCisgICJMaW5lIDIiCitXaXRoIGRpZmY6CitAQCAtMSwyIEBACistXCJMaW5lXDAgMVwi
CisgTGluZSAyCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkRpZmZGb3JMb25nU3RyaW5ncworG1swOzMybVstLS0t
LS0tLS0tXSAbW20zIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdAorG1swOzMybVsgUlVOICAg
ICAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQorKGV4cGVj
dGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVz
dF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAx
CisgIHgKKyAgICBXaGljaCBpczogMgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFt
WyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5l
CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5O
ZXN0ZWRTdWJyb3V0aW5lCisoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEp
Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0
eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAgeAorICAgIFdoaWNoIGlzOiAyCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5G
YXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRmF0
YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKKyhleHBlY3RpbmcgYSBm
YWlsdXJlIG9uIGZhbHNlKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQor
VmFsdWUgb2Y6IGZhbHNlCisgIEFjdHVhbDogZmFsc2UKK0V4cGVjdGVkOiB0cnVlCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVz
dC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0
ZXN0IGZyb20gTG9nZ2luZ1Rlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttTG9nZ2luZ1Rlc3Qu
SW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKKyhleHBlY3RpbmcgMiBmYWlsdXJlcyBv
biAoMykgPj0gKGFbaV0pKQoraSA9PSAwCitpID09IDEKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgOQor
U3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitpID09IDIKK2kgPT0gMworZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDog
MyB2cyA2CitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
TG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKKxtbMDszMm1bLS0t
LS0tLS0tLV0gG1ttNyB0ZXN0cyBmcm9tIFNDT1BFRF9UUkFDRVRlc3QKKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5BY2NlcHRlZFZhbHVlcworZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitKdXN0IGNoZWNraW5nIHRoYXQgYWxsIHRo
ZXNlIHZhbHVlcyB3b3JrIGZpbmUuCitHb29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0
cHV0LXRlc3RfLmNjOiM6IChudWxsKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogMTMz
NworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izogc3RkOjpzdHJpbmcKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IGxpdGVyYWwgc3RyaW5nCitTdGFjayB0cmFjZTogKG9taXR0ZWQp
CisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5BY2NlcHRlZFZhbHVl
cworG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lk9iZXlzU2NvcGVzCiso
ZXhwZWN0ZWQgdG8gZmFpbCkKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUK
K0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkbid0IGhhdmUgYSB0
cmFjZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8u
Y2M6IzogRmFpbHVyZQorRmFpbGVkCitUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91
bGQgaGF2ZSBhIHRyYWNlLgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBFeHBlY3RlZCB0cmFjZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29n
bGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK1RoaXMgZmFpbHVyZSBp
cyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5PYmV5c1Nj
b3BlcworG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29w
CisoZXhwZWN0ZWQgdG8gZmFpbCkKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1
cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMgorICBuCisgICAgV2hp
Y2ggaXM6IDEKK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6
IzogaSA9IDEKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVz
dF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAx
CisgIG4KKyAgICBXaGljaCBpczogMgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91
dHB1dC10ZXN0Xy5jYzojOiBpID0gMgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFt
WyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJbkxvb3AKKxtbMDszMm1bIFJV
TiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGluZQorKGV4cGVjdGVk
IHRvIGZhaWwpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3Rl
ZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDIKKyAgbgorICAgIFdoaWNoIGlzOiAxCitH
b29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IG4gPSAxCitT
dGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZh
aWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICBuCisgICAg
V2hpY2ggaXM6IDIKK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8u
Y2M6IzogbiA9IDIKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJyb3V0aW5lCisbWzA7MzJtWyBSVU4gICAg
ICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKKyhleHBlY3RlZCB0byBmYWlsKQor
Z29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkg
b2YgdGhlc2UgdmFsdWVzOgorICAxCisgIG4KKyAgICBXaGljaCBpczogMgorR29vZ2xlIFRlc3Qg
dHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBuID0gMgorZ29vZ2xldGVzdC1v
dXRwdXQtdGVzdF8uY2M6IzogCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZU5lc3RlZAorG1swOzMybVsgUlVOICAg
ICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKKyhleHBlY3RlZCB0byBmYWls
KQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitUaGlzIGZh
aWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLgorR29v
Z2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBBCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUK
K0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJh
Y2UgcG9pbnQgQSBhbmQgQi4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQt
dGVzdF8uY2M6IzogQgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogQQorU3RhY2sgdHJh
Y2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitG
YWlsZWQKK1RoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNl
IHBvaW50IEEsIEIsIGFuZCBDLgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1
dC10ZXN0Xy5jYzojOiBDCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBCCitnb29nbGV0
ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBBCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEQuCitH
b29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEQKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEIKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6
IEEKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09Q
RURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttU0NPUEVE
X1RSQUNFVGVzdC5Xb3Jrc0NvbmN1cnJlbnRseQorKGV4cGVjdGluZyA2IGZhaWx1cmVzKQorZ29v
Z2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWls
dXJlICMxIChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBCIGFsaXZlKS4KK0dvb2dsZSBUZXN0IHRy
YWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogVHJhY2UgQgorU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWls
ZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzIgKGluIHRocmVhZCBBLCB0cmFjZSBBICYgQiBib3RoIGFs
aXZlKS4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izog
VHJhY2UgQQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0
Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzMgKGluIHRocmVhZCBC
LCB0cmFjZSBBICYgQiBib3RoIGFsaXZlKS4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogVHJhY2UgQgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitn
b29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZh
aWx1cmUgIzQgKGluIHRocmVhZCBCLCBvbmx5IHRyYWNlIEEgYWxpdmUpLgorU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWls
ZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzUgKGluIHRocmVhZCBBLCBvbmx5IHRyYWNlIEEgYWxpdmUp
LgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBUcmFj
ZSBBCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNj
OiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjNiAoaW4gdGhyZWFkIEEsIG5v
IHRyYWNlIGFsaXZlKS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzQ29uY3VycmVudGx5CisbWzA7MzJtWy0tLS0t
LS0tLS1dIBtbbTEgdGVzdCBmcm9tIFNjb3BlZFRyYWNlVGVzdAorG1swOzMybVsgUlVOICAgICAg
XSAbW21TY29wZWRUcmFjZVRlc3QuV2l0aEV4cGxpY2l0RmlsZUFuZExpbmUKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorQ2hlY2sgdGhhdCB0aGUgdHJhY2Ug
aXMgYXR0YWNoZWQgdG8gYSBwYXJ0aWN1bGFyIGxvY2F0aW9uLgorR29vZ2xlIFRlc3QgdHJhY2U6
CitleHBsaWNpdF9maWxlLmNjOjEyMzogZXhwZWN0ZWQgdHJhY2UgbWVzc2FnZQorU3RhY2sgdHJh
Y2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNjb3BlZFRyYWNlVGVzdC5X
aXRoRXhwbGljaXRGaWxlQW5kTGluZQorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJv
bSBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QKKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJ
bkNvbnN0cnVjdG9yCisoZXhwZWN0aW5nIDUgZmFpbHVyZXMpCitnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0
ZXN0IGZpeHR1cmUgYyd0b3IuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMiwg
aW4gU2V0VXAoKS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQt
dGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUg
dGVzdCBib2R5LgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzQsIGluIFRlYXJE
b3duLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5j
YzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzUsIGluIHRoZSB0ZXN0IGZp
eHR1cmUgZCd0b3IuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQg
IF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNv
bnN0cnVjdG9yCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEZhdGFsRmFpbHVy
ZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZh
aWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKKyhleHBl
Y3RpbmcgMiBmYWlsdXJlcykKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUK
K0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4K
K1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izog
RmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJl
IGQndG9yLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3Rv
cgorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBOb25GYXRhbEZhaWx1cmVJblNl
dFVwVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21Ob25GYXRhbEZhaWx1cmVJblNldFVwVGVz
dC5GYWlsdXJlSW5TZXRVcAorKGV4cGVjdGluZyA0IGZhaWx1cmVzKQorZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBT
ZXRVcCgpLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0
Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0
IGZ1bmN0aW9uLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzMsIGluIFRlYXJE
b3duKCkuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gdGhlIHRlc3Qg
Zml4dHVyZSBkJ3Rvci4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAorG1swOzMy
bVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBGYXRhbEZhaWx1cmVJblNldFVwVGVzdAorG1sw
OzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRV
cAorKGV4cGVjdGluZyAzIGZhaWx1cmVzKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izog
RmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLgorU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJl
CitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRlYXJEb3duKCkuCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0Zh
aWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KK1N0
YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1
cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRl
c3QgZnJvbSBBZGRGYWlsdXJlQXRUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUFkZEZhaWx1
cmVBdFRlc3QuTWVzc2FnZUNvbnRhaW5zU3BlY2lmaWVkRmlsZUFuZExpbmVOdW1iZXIKK2Zvby5j
Yzo0MjogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlIGluIGZvby5jYworU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUFkZEZhaWx1cmVBdFRl
c3QuTWVzc2FnZUNvbnRhaW5zU3BlY2lmaWVkRmlsZUFuZExpbmVOdW1iZXIKKxtbMDszMm1bLS0t
LS0tLS0tLV0gG1ttNCB0ZXN0cyBmcm9tIE1peGVkVXBUZXN0Q2FzZVRlc3QKKxtbMDszMm1bIFJV
TiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5GaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9v
CisbWzA7MzJtWyAgICAgICBPSyBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuRmlyc3RUZXN0RnJv
bU5hbWVzcGFjZUZvbworG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0
LlNlY29uZFRlc3RGcm9tTmFtZXNwYWNlRm9vCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbU1peGVk
VXBUZXN0Q2FzZVRlc3QuU2Vjb25kVGVzdEZyb21OYW1lc3BhY2VGb28KKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbAorZ3Rlc3QuY2M6Izog
RmFpbHVyZQorRmFpbGVkCitBbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNl
IHRoZSBzYW1lIHRlc3QgZml4dHVyZQorY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4
ZWRVcFRlc3RDYXNlVGVzdCwKK3lvdSBkZWZpbmVkIHRlc3QgRmlyc3RUZXN0RnJvbU5hbWVzcGFj
ZUZvbyBhbmQgdGVzdCBUaGlzU2hvdWxkRmFpbAordXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZp
eHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBlbiBpZgordGhlIHR3byBjbGFzc2VzIGFyZSBm
cm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCit1bml0cyBhbmQgaGF2ZSB0
aGUgc2FtZSBuYW1lLiAgWW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25lCitvZiB0aGUgY2xh
c3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMuCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNl
VGVzdC5UaGlzU2hvdWxkRmFpbAorG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENh
c2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCitndGVzdC5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0Fs
bCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0
dXJlCitjbGFzcy4gIEhvd2V2ZXIsIGluIHRlc3QgY2FzZSBNaXhlZFVwVGVzdENhc2VUZXN0LAor
eW91IGRlZmluZWQgdGVzdCBGaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vIGFuZCB0ZXN0IFRoaXNT
aG91bGRGYWlsVG9vCit1c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAg
VGhpcyBjYW4gaGFwcGVuIGlmCit0aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5h
bWVzcGFjZXMgb3IgdHJhbnNsYXRpb24KK3VuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZ
b3Ugc2hvdWxkIHByb2JhYmx5IHJlbmFtZSBvbmUKK29mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUg
dGVzdHMgaW50byBkaWZmZXJlbnQgdGVzdCBjYXNlcy4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkK
KworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRG
YWlsVG9vCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBNaXhlZFVwVGVzdENh
c2VXaXRoU2FtZVRlc3ROYW1lVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVz
dENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxk
RmFpbAorG1swOzMybVsgICAgICAgT0sgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3RO
YW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAorG1swOzMybVsgUlVO
ICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRU
ZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRmFpbGVkCitB
bGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4
dHVyZQorY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlV2l0aFNh
bWVUZXN0TmFtZVRlc3QsCit5b3UgZGVmaW5lZCB0ZXN0IFRoZVNlY29uZFRlc3RXaXRoVGhpc05h
bWVTaG91bGRGYWlsIGFuZCB0ZXN0IFRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWls
Cit1c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAgVGhpcyBjYW4gaGFw
cGVuIGlmCit0aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMgb3Ig
dHJhbnNsYXRpb24KK3VuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZb3Ugc2hvdWxkIHBy
b2JhYmx5IHJlbmFtZSBvbmUKK29mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50byBk
aWZmZXJlbnQgdGVzdCBjYXNlcy4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNv
bmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRl
c3RzIGZyb20gVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlCisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVk
VXNpbmdURVNUX0YKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2lu
X3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRgorG1swOzMybVsgUlVOICAgICAgXSAb
W21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFu
ZFNob3VsZEZhaWwKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorQWxsIHRlc3RzIGluIHRo
ZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKK2NsYXNzLCBz
byBtaXhpbmcgVEVTVF9GIGFuZCBURVNUIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBpcworaWxsZWdh
bC4gIEluIHRlc3QgY2FzZSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UsCit0
ZXN0IERlZmluZWRVc2luZ1RFU1RfRiBpcyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKK3Rlc3Qg
RGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwgaXMgZGVmaW5lZCB1c2luZyBURVNULiAgWW91
IHByb2JhYmx5Cit3YW50IHRvIGNoYW5nZSB0aGUgVEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0
byBhbm90aGVyIHRlc3QKK2Nhc2UuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmlu
ZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMg
ZnJvbSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UKKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2lu
Z1RFU1QKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVf
dGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVEVTVF9i
ZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3Vs
ZEZhaWwKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorQWxsIHRlc3RzIGluIHRoZSBzYW1l
IHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKK2NsYXNzLCBzbyBtaXhp
bmcgVEVTVF9GIGFuZCBURVNUIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBpcworaWxsZWdhbC4gIElu
IHRlc3QgY2FzZSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UsCit0ZXN0IERl
ZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwgaXMgZGVmaW5lZCB1c2luZyBURVNUX0YgYnV0
Cit0ZXN0IERlZmluZWRVc2luZ1RFU1QgaXMgZGVmaW5lZCB1c2luZyBURVNULiAgWW91IHByb2Jh
Ymx5Cit3YW50IHRvIGNoYW5nZSB0aGUgVEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0byBhbm90
aGVyIHRlc3QKK2Nhc2UuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlM
RUQgIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2lu
Z1RFU1RfRkFuZFNob3VsZEZhaWwKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttOCB0ZXN0cyBmcm9t
IEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKKxtbMDszMm1b
ICAgICAgIE9LIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9i
YWxWYXJpYWJsZXMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJl
VGVzdC5DYW5SZWZlcmVuY2VMb2NhbFZhcmlhYmxlcworG1swOzMybVsgICAgICAgT0sgXSAbW21F
eHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVzCisbWzA7
MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVu
VGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQorG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUK
KxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1do
ZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3Qu
Y2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAw
IGZhaWx1cmVzCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZh
aWx1cmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5G
YWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKKyhleHBlY3RpbmcgYSBmYWlsdXJl
KQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAg
QWN0dWFsOiAyIGZhaWx1cmVzCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0
YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMS4KK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24t
ZmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMi4KK1N0
YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVy
ZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCisoZXhwZWN0
aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRh
bCBmYWlsdXJlCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhdGFs
IGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFs
RmFpbHVyZQorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3Qu
Y2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAw
IGZhaWx1cmVzCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCisb
WzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVu
U3RhdGVtZW50VGhyb3dzCisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1
cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCisgIEFjdHVhbDogMCBmYWlsdXJlcwor
U3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCisbWzA7MzJtWy0tLS0t
LS0tLS1dIBtbbTggdGVzdHMgZnJvbSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0CisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFy
aWFibGVzCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2Fu
UmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZh
dGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxTdGF0aWNWYXJpYWJsZXMKKxtbMDszMm1b
ICAgICAgIE9LIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFN0
YXRpY1ZhcmlhYmxlcworG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKKxtbMDszMm1bICAgICAgIE9L
IF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1doZW5UaGVyZUlzT25lRmF0YWxG
YWlsdXJlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFp
bHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlCisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0
LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZh
aWx1cmVzCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
RXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKKxtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVy
ZUFyZVR3b0ZhdGFsRmFpbHVyZXMKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6Izog
RmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDIgZmFpbHVyZXMK
K2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4
cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQg
ZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVz
dC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMKKxtbMDszMm1bIFJVTiAgICAgIF0g
G1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWls
dXJlCisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVk
OiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6
IzogTm9uLWZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
LgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKwor
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRo
ZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCisoZXhwZWN0aW5nIGEgZmFp
bHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKKyAg
QWN0dWFsOiAwIGZhaWx1cmVzCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1
cm5zCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNX
aGVuU3RhdGVtZW50VGhyb3dzCisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZh
aWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZhaWx1cmVzCitT
dGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKKxtbMDszMm1bLS0tLS0tLS0t
LV0gG1ttMiB0ZXN0cyBmcm9tIFR5cGVkVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtb
MDszMm1bIFJVTiAgICAgIF0gG1ttVHlwZWRUZXN0LzAuU3VjY2VzcworG1swOzMybVsgICAgICAg
T0sgXSAbW21UeXBlZFRlc3QvMC5TdWNjZXNzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVR5cGVk
VGVzdC8wLkZhaWx1cmUKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4
cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICBUeXBlUGFyYW0oKQorICAg
IFdoaWNoIGlzOiAwCitFeHBlY3RlZCBmYWlsdXJlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVHlwZWRUZXN0LzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBh
cmFtID0gaW50CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBUeXBlZFRlc3RX
aXRoTmFtZXMvY2hhcjAsIHdoZXJlIFR5cGVQYXJhbSA9IGNoYXIKKxtbMDszMm1bIFJVTiAgICAg
IF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVzL2NoYXIwLlN1Y2Nlc3MKKxtbMDszMm1bICAgICAgIE9L
IF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVzL2NoYXIwLlN1Y2Nlc3MKKxtbMDszMm1bIFJVTiAgICAg
IF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVzL2NoYXIwLkZhaWx1cmUKK2dvb2dsZXRlc3Qtb3V0cHV0
LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisb
WzA7MzFtWyAgRkFJTEVEICBdIBtbbVR5cGVkVGVzdFdpdGhOYW1lcy9jaGFyMC5GYWlsdXJlLCB3
aGVyZSBUeXBlUGFyYW0gPSBjaGFyCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJv
bSBUeXBlZFRlc3RXaXRoTmFtZXMvaW50MSwgd2hlcmUgVHlwZVBhcmFtID0gaW50CisbWzA7MzJt
WyBSVU4gICAgICBdIBtbbVR5cGVkVGVzdFdpdGhOYW1lcy9pbnQxLlN1Y2Nlc3MKKxtbMDszMm1b
ICAgICAgIE9LIF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVzL2ludDEuU3VjY2VzcworG1swOzMybVsg
UlVOICAgICAgXSAbW21UeXBlZFRlc3RXaXRoTmFtZXMvaW50MS5GYWlsdXJlCitnb29nbGV0ZXN0
LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK1N0YWNrIHRyYWNlOiAob21pdHRl
ZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3RXaXRoTmFtZXMvaW50MS5GYWls
dXJlLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0
cyBmcm9tIFVuc2lnbmVkL1R5cGVkVGVzdFAvMCwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQg
Y2hhcgorG1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuU3VjY2Vz
cworG1swOzMybVsgICAgICAgT0sgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuU3VjY2Vzcwor
G1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZQorZ29v
Z2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2Yg
dGhlc2UgdmFsdWVzOgorICAxVQorICAgIFdoaWNoIGlzOiAxCisgIFR5cGVQYXJhbSgpCisgICAg
V2hpY2ggaXM6ICdcMCcKK0V4cGVjdGVkIGZhaWx1cmUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkK
KworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZSwg
d2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgorG1swOzMybVstLS0tLS0tLS0tXSAbW20y
IHRlc3RzIGZyb20gVW5zaWduZWQvVHlwZWRUZXN0UC8xLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNp
Z25lZCBpbnQKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1
Y2Nlc3MKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1Y2Nl
c3MKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUK
K2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5
IG9mIHRoZXNlIHZhbHVlczoKKyAgMVUKKyAgICBXaGljaCBpczogMQorICBUeXBlUGFyYW0oKQor
ICAgIFdoaWNoIGlzOiAwCitFeHBlY3RlZCBmYWlsdXJlCitTdGFjayB0cmFjZTogKG9taXR0ZWQp
CisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUs
IHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAorG1swOzMybVstLS0tLS0tLS0tXSAbW20y
IHRlc3RzIGZyb20gVW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRDaGFyMCwg
d2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgorG1swOzMybVsgUlVOICAgICAgXSAbW21V
bnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZENoYXIwLlN1Y2Nlc3MKKxtbMDsz
Mm1bICAgICAgIE9LIF0gG1ttVW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRD
aGFyMC5TdWNjZXNzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9U
eXBlZFRlc3RQL3Vuc2lnbmVkQ2hhcjAuRmFpbHVyZQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8u
Y2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxVQor
ICAgIFdoaWNoIGlzOiAxCisgIFR5cGVQYXJhbSgpCisgICAgV2hpY2ggaXM6ICdcMCcKK0V4cGVj
dGVkIGZhaWx1cmUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21VbnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZENoYXIwLkZhaWx1cmUs
IHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1tt
MiB0ZXN0cyBmcm9tIFVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkSW50MSwg
d2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVu
c2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkSW50MS5TdWNjZXNzCisbWzA7MzJt
WyAgICAgICBPSyBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkSW50
MS5TdWNjZXNzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBl
ZFRlc3RQL3Vuc2lnbmVkSW50MS5GYWlsdXJlCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzoj
OiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDFVCisgICAg
V2hpY2ggaXM6IDEKKyAgVHlwZVBhcmFtKCkKKyAgICBXaGljaCBpczogMAorRXhwZWN0ZWQgZmFp
bHVyZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVVu
c2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkSW50MS5GYWlsdXJlLCB3aGVyZSBU
eXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttNCB0ZXN0cyBm
cm9tIEV4cGVjdEZhaWx1cmVUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1
cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5j
YzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCisgIEFjdHVhbDoKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IFN1Y2Nlc3M6CitTdWNjZWVkZWQKK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKyhleHBlY3RpbmcgMSBm
YWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQor
ICBBY3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVy
ZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisoZXhwZWN0aW5nIDEgZmFpbHVy
ZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUgY29udGFp
bmluZyAiU29tZSBvdGhlciBmYXRhbCBmYWlsdXJlIGV4cGVjdGVkLiIKKyAgQWN0dWFsOgorZ29v
Z2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0
ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3Qu
RXhwZWN0RmF0YWxGYWlsdXJlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVU
ZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5j
YzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6Citn
b29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBTdWNjZXNzOgorU3VjY2VlZGVkCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisoZXhwZWN0aW5n
IDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBm
YWlsdXJlCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhdGFsIGZh
aWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisoZXhwZWN0aW5nIDEgZmFpbHVy
ZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlIGNv
bnRhaW5pbmcgIlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1cmUuIgorICBBY3R1YWw6Citnb29n
bGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhw
ZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworU3Rh
Y2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1
cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBl
Y3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKKyhleHBlY3Rpbmcg
MSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVy
ZQorICBBY3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBTdWNjZXNzOgorU3Vj
Y2VlZGVkCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVk
KQorCisoZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVk
OiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6
IzogTm9uLWZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
LgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKwor
KGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBm
YXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBlY3Rl
ZC4iCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhdGFsIGZhaWx1
cmU6CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0
ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcworG1swOzMy
bVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVP
bkFsbFRocmVhZHMKKyhleHBlY3RpbmcgMSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQor
RXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogU3VjY2VzczoKK1N1Y2NlZWRlZAorU3RhY2sgdHJhY2U6IChvbWl0dGVk
KQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworKGV4cGVjdGluZyAxIGZhaWx1cmUpCitn
dGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1
YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgorRmFpbGVk
CitFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0
YWNrIHRyYWNlOiAob21pdHRlZCkKKworKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzoj
OiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21l
IG90aGVyIG5vbi1mYXRhbCBmYWlsdXJlLiIKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQt
dGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRh
bCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21p
dHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RO
b25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0
cyBmcm9tIEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0g
G1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKKyhleHBl
Y3RpbmcgMiBmYWlsdXJlcykKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUK
K0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkK
KworZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1
YWw6IDAgZmFpbHVyZXMKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQor
G1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVj
dE5vbkZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyAyIGZhaWx1cmVzKQorZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVy
ZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0
ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZhaWx1cmVzCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhU
aHJlYWRzVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1tt
MSB0ZXN0IGZyb20gU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0CisbWzA7MzJt
WyBSVU4gICAgICBdIBtbbVNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdC5JbnRl
cmNlcHRPbmx5Q3VycmVudFRocmVhZAorKGV4cGVjdGluZyAyIGZhaWx1cmVzKQorZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYXRhbCBmYWls
dXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5j
YzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgorU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNjb3BlZEZha2VUZXN0
UGFydFJlc3VsdFJlcG9ydGVyVGVzdC5JbnRlcmNlcHRPbmx5Q3VycmVudFRocmVhZAorG1swOzMy
bVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBQcmludGluZ0ZhaWxpbmdQYXJhbXMvRmFpbGlu
Z1BhcmFtVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21QcmludGluZ0ZhaWxpbmdQYXJhbXMv
RmFpbGluZ1BhcmFtVGVzdC5GYWlscy8wCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBG
YWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAgR2V0UGFy
YW0oKQorICAgIFdoaWNoIGlzOiAyCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttUHJpbnRpbmdGYWlsaW5nUGFyYW1zL0ZhaWxpbmdQYXJhbVRlc3QuRmFp
bHMvMCwgd2hlcmUgR2V0UGFyYW0oKSA9IDIKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0
cyBmcm9tIFByaW50aW5nU3RyaW5ncy9QYXJhbVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1tt
UHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5TdWNjZXNzL2EKKxtbMDszMm1bICAgICAgIE9LIF0g
G1ttUHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5TdWNjZXNzL2EKKxtbMDszMm1bIFJVTiAgICAg
IF0gG1ttUHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5GYWlsdXJlL2EKK2dvb2dsZXRlc3Qtb3V0
cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVl
czoKKyAgImIiCisgIEdldFBhcmFtKCkKKyAgICBXaGljaCBpczogImEiCitFeHBlY3RlZCBmYWls
dXJlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttUHJp
bnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5GYWlsdXJlL2EsIHdoZXJlIEdldFBhcmFtKCkgPSAiYSIK
KxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3du
CitCYXJFbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuCitnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgor
U3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitGb29FbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxs
ZWQuCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVj
dGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMm1bPT09
PT09PT09PV0gG1ttNzYgdGVzdHMgZnJvbSAzNCB0ZXN0IGNhc2VzIHJhbi4KKxtbMDszMm1bICBQ
QVNTRUQgIF0gG1ttMjYgdGVzdHMuCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbTUwIHRlc3RzLCBs
aXN0ZWQgYmVsb3c6CisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbmZhdGFsRmFpbHVyZVRlc3Qu
RXNjYXBlc1N0cmluZ09wZXJhbmRzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbmZhdGFsRmFp
bHVyZVRlc3QuRGlmZkZvckxvbmdTdHJpbmdzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFs
RmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCisbWzA7MzFtWyAgRkFJTEVEICBd
IBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJy
b3V0aW5lCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUxvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xv
Z2dpbmdBbmRBc3NlcnRpb25zCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRl
c3QuQWNjZXB0ZWRWYWx1ZXMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVz
dC5PYmV5c1Njb3BlcworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lldv
cmtzSW5Mb29wCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJ
blN1YnJvdXRpbmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5C
ZU5lc3RlZAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlUmVw
ZWF0ZWQKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0NvbmN1
cnJlbnRseQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TY29wZWRUcmFjZVRlc3QuV2l0aEV4cGxp
Y2l0RmlsZUFuZExpbmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5G
aXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCisbWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5D
b25zdHJ1Y3RvcgorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJblNldFVw
VGVzdC5GYWlsdXJlSW5TZXRVcAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVJ
blNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21BZGRGYWls
dXJlQXRUZXN0Lk1lc3NhZ2VDb250YWluc1NwZWNpZmllZEZpbGVBbmRMaW5lTnVtYmVyCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwKKxtb
MDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbFRv
bworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1l
VGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAorG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5n
VEVTVEFuZFNob3VsZEZhaWwKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVEVTVF9iZWZvcmVfVEVT
VF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwKKxtb
MDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5U
aGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKKxtb
MDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5U
aGVyZUlzT25lRmF0YWxGYWlsdXJlCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZh
dGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucworG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93
cworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hl
blRoZXJlSXNOb0ZhdGFsRmFpbHVyZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRh
bEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcworG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVO
b25mYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4
cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbVR5cGVkVGVzdC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IGludAor
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3RXaXRoTmFtZXMvY2hhcjAuRmFpbHVyZSwg
d2hlcmUgVHlwZVBhcmFtID0gY2hhcgorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3RX
aXRoTmFtZXMvaW50MS5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJh
bSA9IHVuc2lnbmVkIGNoYXIKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRU
ZXN0UC8xLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAorG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21VbnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZENoYXIw
LkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKKxtbMDszMW1bICBGQUlM
RUQgIF0gG1ttVW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRJbnQxLkZhaWx1
cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAorG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQg
IF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhy
ZWFkcworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25G
YXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFp
bHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQg
IF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJU
ZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVBy
aW50aW5nRmFpbGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1UZXN0LkZhaWxzLzAsIHdoZXJlIEdldFBh
cmFtKCkgPSAyCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVByaW50aW5nU3RyaW5ncy9QYXJhbVRl
c3QuRmFpbHVyZS9hLCB3aGVyZSBHZXRQYXJhbSgpID0gImEiCisKKzUwIEZBSUxFRCBURVNUUwor
G1swOzMzbSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNUCisKKxtbbU5vdGU6IEdvb2dsZSBUZXN0
IGZpbHRlciA9IEZhdGFsRmFpbHVyZVRlc3QuKjpMb2dnaW5nVGVzdC4qCitbPT09PT09PT09PV0g
UnVubmluZyA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2VzLgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0
ZXN0IGVudmlyb25tZW50IHNldC11cC4KK1stLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0YWxG
YWlsdXJlVGVzdAorWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5T
dWJyb3V0aW5lCisoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCitnb29n
bGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0
aGVzZSB2YWx1ZXM6CisgIDEKKyAgeAorICAgIFdoaWNoIGlzOiAyCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vi
cm91dGluZSAoPyBtcykKK1sgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVy
ZUluTmVzdGVkU3Vicm91dGluZQorKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBi
ZSAxKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1
YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxCisgIHgKKyAgICBXaGljaCBpczogMgorU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCitbICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZh
aWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUgKD8gbXMpCitbIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJl
VGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKKyhleHBlY3RpbmcgYSBmYWlsdXJlIG9u
IGZhbHNlKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorVmFsdWUgb2Y6
IGZhbHNlCisgIEFjdHVhbDogZmFsc2UKK0V4cGVjdGVkOiB0cnVlCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUlu
U3Vicm91dGluZSAoPyBtcykKK1stLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJl
VGVzdCAoPyBtcyB0b3RhbCkKKworWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExvZ2dpbmdUZXN0
CitbIFJVTiAgICAgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlv
bnMKKyhleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKQoraSA9PSAwCitpID09
IDEKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAoMykg
Pj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgOQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitpID09
IDIKK2kgPT0gMworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0
ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA2CitTdGFjayB0cmFjZTogKG9taXR0ZWQp
CisKK1sgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0
aW9ucyAoPyBtcykKK1stLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBMb2dnaW5nVGVzdCAoPyBtcyB0
b3RhbCkKKworWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgor
Wz09PT09PT09PT1dIDQgdGVzdHMgZnJvbSAyIHRlc3QgY2FzZXMgcmFuLiAoPyBtcyB0b3RhbCkK
K1sgIFBBU1NFRCAgXSAwIHRlc3RzLgorWyAgRkFJTEVEICBdIDQgdGVzdHMsIGxpc3RlZCBiZWxv
dzoKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGlu
ZQorWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJy
b3V0aW5lCitbICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1
YnJvdXRpbmUKK1sgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5k
QXNzZXJ0aW9ucworCisgNCBGQUlMRUQgVEVTVFMKK05vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9
ICpESVNBQkxFRF8qCitbPT09PT09PT09PV0gUnVubmluZyAxIHRlc3QgZnJvbSAxIHRlc3QgY2Fz
ZS4KK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCitbLS0tLS0t
LS0tLV0gMSB0ZXN0IGZyb20gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0CitbIFJVTiAgICAgIF0g
RGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0LkRJU0FCTEVEX0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxh
Z1N1cHByZXNzZXNXYXJuaW5nCitbICAgICAgIE9LIF0gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0
LkRJU0FCTEVEX0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZ1N1cHByZXNzZXNXYXJuaW5nCitbLS0t
LS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCitbPT09PT09PT09PV0g
MSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UgcmFuLgorWyAgUEFTU0VEICBdIDEgdGVzdC4KK05vdGU6
IEdvb2dsZSBUZXN0IGZpbHRlciA9IFBhc3NpbmdUZXN0LioKK05vdGU6IFRoaXMgaXMgdGVzdCBz
aGFyZCAyIG9mIDIuCitbPT09PT09PT09PV0gUnVubmluZyAxIHRlc3QgZnJvbSAxIHRlc3QgY2Fz
ZS4KK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCitbLS0tLS0t
LS0tLV0gMSB0ZXN0IGZyb20gUGFzc2luZ1Rlc3QKK1sgUlVOICAgICAgXSBQYXNzaW5nVGVzdC5Q
YXNzaW5nVGVzdDIKK1sgICAgICAgT0sgXSBQYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDIKK1stLS0t
LS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KK1s9PT09PT09PT09XSAx
IHRlc3QgZnJvbSAxIHRlc3QgY2FzZSByYW4uCitbICBQQVNTRUQgIF0gMSB0ZXN0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0
LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJkNjllMzUzYTE5ZTM2OTQ2NTMzYmY1ZjdlMGEyYzkyNDZmN2RjZTcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3Qtb3V0cHV0LXRlc3QucHkKQEAgLTAsMCArMSwzNDcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorIworIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlRlc3RzIHRoZSB0ZXh0IG91dHB1dCBvZiBHb29n
bGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrLgorCitUbyB1cGRhdGUgdGhlIGdv
bGRlbiBmaWxlOgorZ29vZ2xldGVzdF9vdXRwdXRfdGVzdC5weSAtLWJ1aWxkX2Rpcj1CVUlMRC9E
SVIgLS1nZW5nb2xkZW4KK3doZXJlIEJVSUxEL0RJUiBjb250YWlucyB0aGUgYnVpbHQgZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8gZmlsZS4KK2dvb2dsZXRlc3Rfb3V0cHV0X3Rlc3QucHkgLS1nZW5n
b2xkZW4KK2dvb2dsZXRlc3Rfb3V0cHV0X3Rlc3QucHkKKyIiIgorCitpbXBvcnQgZGlmZmxpYgor
aW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxz
CisKKworIyBUaGUgZmxhZyBmb3IgZ2VuZXJhdGluZyB0aGUgZ29sZGVuIGZpbGUKK0dFTkdPTERF
Tl9GTEFHID0gJy0tZ2VuZ29sZGVuJworQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSX05BTUUgPSAn
R1RFU1RfQ0FUQ0hfRVhDRVBUSU9OUycKKworIyBUaGUgZmxhZyBpbmRpY2F0aW5nIHN0YWNrdHJh
Y2VzIGFyZSBub3Qgc3VwcG9ydGVkCitOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRyA9ICctLW5v
X3N0YWNrdHJhY2Vfc3VwcG9ydCcKKworSVNfTElOVVggPSBvcy5uYW1lID09ICdwb3NpeCcgYW5k
IG9zLnVuYW1lKClbMF0gPT0gJ0xpbnV4JworSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250Jwor
CisjIEZJWE1FOiByZW1vdmUgdGhlIF9saW4gc3VmZml4LgorR09MREVOX05BTUUgPSAnZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdC1nb2xkZW4tbGluLnR4dCcKKworUFJPR1JBTV9QQVRIID0gZ3Rlc3Rf
dGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
JykKKworIyBBdCBsZWFzdCBvbmUgY29tbWFuZCB3ZSBleGVyY2lzZSBtdXN0IG5vdCBoYXZlIHRo
ZQorIyAnaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzJyBhcmd1bWVu
dC4KK0NPTU1BTkRfTElTVF9URVNUUyA9ICh7fSwgW1BST0dSQU1fUEFUSCwgJy0tZ3Rlc3RfbGlz
dF90ZXN0cyddKQorQ09NTUFORF9XSVRIX0NPTE9SID0gKHt9LCBbUFJPR1JBTV9QQVRILCAnLS1n
dGVzdF9jb2xvcj15ZXMnXSkKK0NPTU1BTkRfV0lUSF9USU1FID0gKHt9LCBbUFJPR1JBTV9QQVRI
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ndGVzdF9wcmludF90aW1lJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hv
Y190ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICctLWd0ZXN0X2ZpbHRlcj1GYXRh
bEZhaWx1cmVUZXN0Lio6TG9nZ2luZ1Rlc3QuKiddKQorQ09NTUFORF9XSVRIX0RJU0FCTEVEID0g
KAorICAgIHt9LCBbUFJPR1JBTV9QQVRILAorICAgICAgICAgJy0tZ3Rlc3RfYWxzb19ydW5fZGlz
YWJsZWRfdGVzdHMnLAorICAgICAgICAgJ2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2Fk
X2hvY190ZXN0cycsCisgICAgICAgICAnLS1ndGVzdF9maWx0ZXI9KkRJU0FCTEVEXyonXSkKK0NP
TU1BTkRfV0lUSF9TSEFSRElORyA9ICgKKyAgICB7J0dURVNUX1NIQVJEX0lOREVYJzogJzEnLCAn
R1RFU1RfVE9UQUxfU0hBUkRTJzogJzInfSwKKyAgICBbUFJPR1JBTV9QQVRILAorICAgICAnaW50
ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzJywKKyAgICAgJy0tZ3Rlc3Rf
ZmlsdGVyPVBhc3NpbmdUZXN0LionXSkKKworR09MREVOX1BBVEggPSBvcy5wYXRoLmpvaW4oZ3Rl
c3RfdGVzdF91dGlscy5HZXRTb3VyY2VEaXIoKSwgR09MREVOX05BTUUpCisKKworZGVmIFRvVW5p
eExpbmVFbmRpbmcocyk6CisgICIiIkNoYW5nZXMgYWxsIFdpbmRvd3MvTWFjIGxpbmUgZW5kaW5n
cyBpbiBzIHRvIFVOSVggbGluZSBlbmRpbmdzLiIiIgorCisgIHJldHVybiBzLnJlcGxhY2UoJ1xy
XG4nLCAnXG4nKS5yZXBsYWNlKCdccicsICdcbicpCisKKworZGVmIFJlbW92ZUxvY2F0aW9ucyh0
ZXN0X291dHB1dCk6CisgICIiIlJlbW92ZXMgYWxsIGZpbGUgbG9jYXRpb24gaW5mbyBmcm9tIGEg
R29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4KKworICBBcmdzOgorICAgICAgIHRlc3Rfb3V0
cHV0OiAgdGhlIG91dHB1dCBvZiBhIEdvb2dsZSBUZXN0IHByb2dyYW0uCisKKyAgUmV0dXJuczoK
KyAgICAgICBvdXRwdXQgd2l0aCBhbGwgZmlsZSBsb2NhdGlvbiBpbmZvIChpbiB0aGUgZm9ybSBv
ZgorICAgICAgICdESVJFQ1RPUlkvRklMRV9OQU1FOkxJTkVfTlVNQkVSOiAnb3IKKyAgICAgICAn
RElSRUNUT1JZXFxGSUxFX05BTUUoTElORV9OVU1CRVIpOiAnKSByZXBsYWNlZCBieQorICAgICAg
ICdGSUxFX05BTUU6IzogJy4KKyAgIiIiCisKKyAgcmV0dXJuIHJlLnN1YihyJy4qWy9cXF0oKGdv
b2dsZXRlc3Qtb3V0cHV0LXRlc3RffGd0ZXN0KS5jYykoXDpcZCt8XChcZCtcKSlcOiAnLAorICAg
ICAgICAgICAgICAgIHInXDE6IzogJywgdGVzdF9vdXRwdXQpCisKKworZGVmIFJlbW92ZVN0YWNr
VHJhY2VEZXRhaWxzKG91dHB1dCk6CisgICIiIlJlbW92ZXMgYWxsIHN0YWNrIHRyYWNlcyBmcm9t
IGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4iIiIKKworICAjICo/IG1lYW5zICJmaW5k
IHRoZSBzaG9ydGVzdCBzdHJpbmcgdGhhdCBtYXRjaGVzIi4KKyAgcmV0dXJuIHJlLnN1YihyJ1N0
YWNrIHRyYWNlOigufFxuKSo/XG5cbicsCisgICAgICAgICAgICAgICAgJ1N0YWNrIHRyYWNlOiAo
b21pdHRlZClcblxuJywgb3V0cHV0KQorCisKK2RlZiBSZW1vdmVTdGFja1RyYWNlcyhvdXRwdXQp
OgorICAiIiJSZW1vdmVzIGFsbCB0cmFjZXMgb2Ygc3RhY2sgdHJhY2VzIGZyb20gYSBHb29nbGUg
VGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgorCisgICMgKj8gbWVhbnMgImZpbmQgdGhlIHNob3J0
ZXN0IHN0cmluZyB0aGF0IG1hdGNoZXMiLgorICByZXR1cm4gcmUuc3ViKHInU3RhY2sgdHJhY2U6
KC58XG4pKj9cblxuJywgJycsIG91dHB1dCkKKworCitkZWYgUmVtb3ZlVGltZShvdXRwdXQpOgor
ICAiIiJSZW1vdmVzIGFsbCB0aW1lIGluZm9ybWF0aW9uIGZyb20gYSBHb29nbGUgVGVzdCBwcm9n
cmFtJ3Mgb3V0cHV0LiIiIgorCisgIHJldHVybiByZS5zdWIocidcKFxkKyBtcycsICcoPyBtcycs
IG91dHB1dCkKKworCitkZWYgUmVtb3ZlVHlwZUluZm9EZXRhaWxzKHRlc3Rfb3V0cHV0KToKKyAg
IiIiUmVtb3ZlcyBjb21waWxlci1zcGVjaWZpYyB0eXBlIGluZm8gZnJvbSBHb29nbGUgVGVzdCBw
cm9ncmFtJ3Mgb3V0cHV0LgorCisgIEFyZ3M6CisgICAgICAgdGVzdF9vdXRwdXQ6ICB0aGUgb3V0
cHV0IG9mIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbS4KKworICBSZXR1cm5zOgorICAgICAgIG91dHB1
dCB3aXRoIHR5cGUgaW5mb3JtYXRpb24gbm9ybWFsaXplZCB0byBjYW5vbmljYWwgZm9ybS4KKyAg
IiIiCisKKyAgIyBzb21lIGNvbXBpbGVycyBvdXRwdXQgdGhlIG5hbWUgb2YgdHlwZSAndW5zaWdu
ZWQgaW50JyBhcyAndW5zaWduZWQnCisgIHJldHVybiByZS5zdWIocid1bnNpZ25lZCBpbnQnLCAn
dW5zaWduZWQnLCB0ZXN0X291dHB1dCkKKworCitkZWYgTm9ybWFsaXplVG9DdXJyZW50UGxhdGZv
cm0odGVzdF9vdXRwdXQpOgorICAiIiJOb3JtYWxpemVzIHBsYXRmb3JtIHNwZWNpZmljIG91dHB1
dCBkZXRhaWxzIGZvciBlYXNpZXIgY29tcGFyaXNvbi4iIiIKKworICBpZiBJU19XSU5ET1dTOgor
ICAgICMgUmVtb3ZlcyB0aGUgY29sb3IgaW5mb3JtYXRpb24gdGhhdCBpcyBub3QgcHJlc2VudCBv
biBXaW5kb3dzLgorICAgIHRlc3Rfb3V0cHV0ID0gcmUuc3ViKCdceDFiXFxbKDA7M1xkKT9tJywg
JycsIHRlc3Rfb3V0cHV0KQorICAgICMgQ2hhbmdlcyBmYWlsdXJlIG1lc3NhZ2UgaGVhZGVycyBp
bnRvIHRoZSBXaW5kb3dzIGZvcm1hdC4KKyAgICB0ZXN0X291dHB1dCA9IHJlLnN1YihyJzogRmFp
bHVyZVxuJywgcic6IGVycm9yOiAnLCB0ZXN0X291dHB1dCkKKyAgICAjIENoYW5nZXMgZmlsZShs
aW5lX251bWJlcikgdG8gZmlsZTpsaW5lX251bWJlci4KKyAgICB0ZXN0X291dHB1dCA9IHJlLnN1
YihyJygoXHd8XC4pKylcKChcZCspXCk6JywgcidcMTpcMzonLCB0ZXN0X291dHB1dCkKKworICBy
ZXR1cm4gdGVzdF9vdXRwdXQKKworCitkZWYgUmVtb3ZlVGVzdENvdW50cyhvdXRwdXQpOgorICAi
IiJSZW1vdmVzIHRlc3QgY291bnRzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0
LiIiIgorCisgIG91dHB1dCA9IHJlLnN1YihyJ1xkKyB0ZXN0cz8sIGxpc3RlZCBiZWxvdycsCisg
ICAgICAgICAgICAgICAgICAnPyB0ZXN0cywgbGlzdGVkIGJlbG93Jywgb3V0cHV0KQorICBvdXRw
dXQgPSByZS5zdWIocidcZCsgRkFJTEVEIFRFU1RTJywKKyAgICAgICAgICAgICAgICAgICc/IEZB
SUxFRCBURVNUUycsIG91dHB1dCkKKyAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIHRlc3RzPyBmcm9t
IFxkKyB0ZXN0IGNhc2VzPycsCisgICAgICAgICAgICAgICAgICAnPyB0ZXN0cyBmcm9tID8gdGVz
dCBjYXNlcycsIG91dHB1dCkKKyAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIHRlc3RzPyBmcm9tIChb
YS16QS1aX10pJywKKyAgICAgICAgICAgICAgICAgIHInPyB0ZXN0cyBmcm9tIFwxJywgb3V0cHV0
KQorICByZXR1cm4gcmUuc3ViKHInXGQrIHRlc3RzP1wuJywgJz8gdGVzdHMuJywgb3V0cHV0KQor
CisKK2RlZiBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCBwYXR0ZXJuKToKKyAgIiIi
UmVtb3ZlcyBvdXRwdXQgb2Ygc3BlY2lmaWVkIHRlc3RzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9n
cmFtJ3Mgb3V0cHV0LgorCisgIFRoaXMgZnVuY3Rpb24gc3RyaXBzIG5vdCBvbmx5IHRoZSBiZWdp
bm5pbmcgYW5kIHRoZSBlbmQgb2YgYSB0ZXN0IGJ1dCBhbHNvCisgIGFsbCBvdXRwdXQgaW4gYmV0
d2Vlbi4KKworICBBcmdzOgorICAgIHRlc3Rfb3V0cHV0OiAgICAgICBBIHN0cmluZyBjb250YWlu
aW5nIHRoZSB0ZXN0IG91dHB1dC4KKyAgICBwYXR0ZXJuOiAgICAgICAgICAgQSByZWdleCBzdHJp
bmcgdGhhdCBtYXRjaGVzIG5hbWVzIG9mIHRlc3QgY2FzZXMgb3IKKyAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdHMgdG8gcmVtb3ZlLgorCisgIFJldHVybnM6CisgICAgQ29udGVudHMgb2YgdGVz
dF9vdXRwdXQgd2l0aCB0ZXN0cyB3aG9zZSBuYW1lcyBtYXRjaCBwYXR0ZXJuIHJlbW92ZWQuCisg
ICIiIgorCisgIHRlc3Rfb3V0cHV0ID0gcmUuc3ViKAorICAgICAgcicuKlxbIFJVTiAgICAgIFxd
IC4qJXMoLnxcbikqP1xbKCAgRkFJTEVEICB8ICAgICAgIE9LIClcXSAuKiVzLipcbicgJSAoCisg
ICAgICAgICAgcGF0dGVybiwgcGF0dGVybiksCisgICAgICAnJywKKyAgICAgIHRlc3Rfb3V0cHV0
KQorICByZXR1cm4gcmUuc3ViKHInLiolcy4qXG4nICUgcGF0dGVybiwgJycsIHRlc3Rfb3V0cHV0
KQorCisKK2RlZiBOb3JtYWxpemVPdXRwdXQob3V0cHV0KToKKyAgIiIiTm9ybWFsaXplcyBvdXRw
dXQgKHRoZSBvdXRwdXQgb2YgZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uZXhlKS4iIiIKKworICBv
dXRwdXQgPSBUb1VuaXhMaW5lRW5kaW5nKG91dHB1dCkKKyAgb3V0cHV0ID0gUmVtb3ZlTG9jYXRp
b25zKG91dHB1dCkKKyAgb3V0cHV0ID0gUmVtb3ZlU3RhY2tUcmFjZURldGFpbHMob3V0cHV0KQor
ICBvdXRwdXQgPSBSZW1vdmVUaW1lKG91dHB1dCkKKyAgcmV0dXJuIG91dHB1dAorCisKK2RlZiBH
ZXRTaGVsbENvbW1hbmRPdXRwdXQoZW52X2NtZCk6CisgICIiIlJ1bnMgYSBjb21tYW5kIGluIGEg
c3ViLXByb2Nlc3MsIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQgaW4gYSBzdHJpbmcuCisKKyAgQXJn
czoKKyAgICBlbnZfY21kOiBUaGUgc2hlbGwgY29tbWFuZC4gQSAyLXR1cGxlIHdoZXJlIGVsZW1l
bnQgMCBpcyBhIGRpY3Qgb2YgZXh0cmEKKyAgICAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJs
ZXMgdG8gc2V0LCBhbmQgZWxlbWVudCAxIGlzIGEgc3RyaW5nIHdpdGgKKyAgICAgICAgICAgICB0
aGUgY29tbWFuZCBhbmQgYW55IGZsYWdzLgorCisgIFJldHVybnM6CisgICAgQSBzdHJpbmcgd2l0
aCB0aGUgY29tbWFuZCdzIGNvbWJpbmVkIHN0YW5kYXJkIGFuZCBkaWFnbm9zdGljIG91dHB1dC4K
KyAgIiIiCisKKyAgIyBTcGF3bnMgY21kIGluIGEgc3ViLXByb2Nlc3MsIGFuZCBnZXRzIGl0cyBz
dGFuZGFyZCBJL08gZmlsZSBvYmplY3RzLgorICAjIFNldCBhbmQgc2F2ZSB0aGUgZW52aXJvbm1l
bnQgcHJvcGVybHkuCisgIGVudmlyb24gPSBvcy5lbnZpcm9uLmNvcHkoKQorICBlbnZpcm9uLnVw
ZGF0ZShlbnZfY21kWzBdKQorICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGVudl9j
bWRbMV0sIGVudj1lbnZpcm9uKQorCisgIHJldHVybiBwLm91dHB1dAorCisKK2RlZiBHZXRDb21t
YW5kT3V0cHV0KGVudl9jbWQpOgorICAiIiJSdW5zIGEgY29tbWFuZCBhbmQgcmV0dXJucyBpdHMg
b3V0cHV0IHdpdGggYWxsIGZpbGUgbG9jYXRpb24KKyAgaW5mbyBzdHJpcHBlZCBvZmYuCisKKyAg
QXJnczoKKyAgICBlbnZfY21kOiAgVGhlIHNoZWxsIGNvbW1hbmQuIEEgMi10dXBsZSB3aGVyZSBl
bGVtZW50IDAgaXMgYSBkaWN0IG9mIGV4dHJhCisgICAgICAgICAgICAgIGVudmlyb25tZW50IHZh
cmlhYmxlcyB0byBzZXQsIGFuZCBlbGVtZW50IDEgaXMgYSBzdHJpbmcgd2l0aAorICAgICAgICAg
ICAgICB0aGUgY29tbWFuZCBhbmQgYW55IGZsYWdzLgorICAiIiIKKworICAjIERpc2FibGVzIGV4
Y2VwdGlvbiBwb3AtdXBzIG9uIFdpbmRvd3MuCisgIGVudmlyb24sIGNtZGxpbmUgPSBlbnZfY21k
CisgIGVudmlyb24gPSBkaWN0KGVudmlyb24pICAjIEVuc3VyZXMgd2UgYXJlIG1vZGlmeWluZyBh
IGNvcHkuCisgIGVudmlyb25bQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSX05BTUVdID0gJzEnCisg
IHJldHVybiBOb3JtYWxpemVPdXRwdXQoR2V0U2hlbGxDb21tYW5kT3V0cHV0KChlbnZpcm9uLCBj
bWRsaW5lKSkpCisKKworZGVmIEdldE91dHB1dE9mQWxsQ29tbWFuZHMoKToKKyAgIiIiUmV0dXJu
cyBjb25jYXRlbmF0ZWQgb3V0cHV0IGZyb20gc2V2ZXJhbCByZXByZXNlbnRhdGl2ZSBjb21tYW5k
cy4iIiIKKworICByZXR1cm4gKEdldENvbW1hbmRPdXRwdXQoQ09NTUFORF9XSVRIX0NPTE9SKSAr
CisgICAgICAgICAgR2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJVEhfVElNRSkgKworICAgICAg
ICAgIEdldENvbW1hbmRPdXRwdXQoQ09NTUFORF9XSVRIX0RJU0FCTEVEKSArCisgICAgICAgICAg
R2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJVEhfU0hBUkRJTkcpKQorCisKK3Rlc3RfbGlzdCA9
IEdldFNoZWxsQ29tbWFuZE91dHB1dChDT01NQU5EX0xJU1RfVEVTVFMpCitTVVBQT1JUU19ERUFU
SF9URVNUUyA9ICdEZWF0aFRlc3QnIGluIHRlc3RfbGlzdAorU1VQUE9SVFNfVFlQRURfVEVTVFMg
PSAnVHlwZWRUZXN0JyBpbiB0ZXN0X2xpc3QKK1NVUFBPUlRTX1RIUkVBRFMgPSAnRXhwZWN0RmFp
bHVyZVdpdGhUaHJlYWRzVGVzdCcgaW4gdGVzdF9saXN0CitTVVBQT1JUU19TVEFDS19UUkFDRVMg
PSBOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRyBub3QgaW4gc3lzLmFyZ3YKKworQ0FOX0dFTkVS
QVRFX0dPTERFTl9GSUxFID0gKFNVUFBPUlRTX0RFQVRIX1RFU1RTIGFuZAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNVUFBPUlRTX1RZUEVEX1RFU1RTIGFuZAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNVUFBPUlRTX1RIUkVBRFMgYW5kCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU1VQUE9SVFNfU1RBQ0tfVFJBQ0VTKQorCitjbGFzcyBHVGVzdE91dHB1dFRlc3QoZ3Rl
c3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgIGRlZiBSZW1vdmVVbnN1cHBvcnRlZFRlc3RzKHNl
bGYsIHRlc3Rfb3V0cHV0KToKKyAgICBpZiBub3QgU1VQUE9SVFNfREVBVEhfVEVTVFM6CisgICAg
ICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdEZWF0aFRl
c3QnKQorICAgIGlmIG5vdCBTVVBQT1JUU19UWVBFRF9URVNUUzoKKyAgICAgIHRlc3Rfb3V0cHV0
ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwgJ1R5cGVkVGVzdCcpCisgICAgICB0
ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdUeXBlZERlYXRo
VGVzdCcpCisgICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRw
dXQsICdUeXBlUGFyYW1EZWF0aFRlc3QnKQorICAgIGlmIG5vdCBTVVBQT1JUU19USFJFQURTOgor
ICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFeHBlY3RGYWlsdXJlV2l0aFRo
cmVhZHNUZXN0JykKKyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0
X291dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU2NvcGVk
RmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0JykKKyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVt
b3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnV29ya3NDb25jdXJyZW50bHknKQorICAgIGlmIG5vdCBTVVBQT1JUU19T
VEFDS19UUkFDRVM6CisgICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZVN0YWNrVHJhY2VzKHRlc3Rf
b3V0cHV0KQorCisgICAgcmV0dXJuIHRlc3Rfb3V0cHV0CisKKyAgZGVmIHRlc3RPdXRwdXQoc2Vs
Zik6CisgICAgb3V0cHV0ID0gR2V0T3V0cHV0T2ZBbGxDb21tYW5kcygpCisKKyAgICBnb2xkZW5f
ZmlsZSA9IG9wZW4oR09MREVOX1BBVEgsICdyYicpCisgICAgIyBBIG1pcy1jb25maWd1cmVkIHNv
dXJjZSBjb250cm9sIHN5c3RlbSBjYW4gY2F1c2UgXHIgYXBwZWFyIGluIEVPTAorICAgICMgc2Vx
dWVuY2VzIHdoZW4gd2UgcmVhZCB0aGUgZ29sZGVuIGZpbGUgaXJyZXNwZWN0aXZlIG9mIGFuIG9w
ZXJhdGluZworICAgICMgc3lzdGVtIHVzZWQuIFRoZXJlZm9yZSwgd2UgbmVlZCB0byBzdHJpcCB0
aG9zZSBccidzIGZyb20gbmV3bGluZXMKKyAgICAjIHVuY29uZGl0aW9uYWxseS4KKyAgICBnb2xk
ZW4gPSBUb1VuaXhMaW5lRW5kaW5nKGdvbGRlbl9maWxlLnJlYWQoKSkKKyAgICBnb2xkZW5fZmls
ZS5jbG9zZSgpCisKKyAgICAjIFdlIHdhbnQgdGhlIHRlc3QgdG8gcGFzcyByZWdhcmRsZXNzIG9m
IGNlcnRhaW4gZmVhdHVyZXMgYmVpbmcKKyAgICAjIHN1cHBvcnRlZCBvciBub3QuCisKKyAgICAj
IFdlIHN0aWxsIGhhdmUgdG8gcmVtb3ZlIHR5cGUgbmFtZSBzcGVjaWZpY3MgaW4gYWxsIGNhc2Vz
LgorICAgIG5vcm1hbGl6ZWRfYWN0dWFsID0gUmVtb3ZlVHlwZUluZm9EZXRhaWxzKG91dHB1dCkK
KyAgICBub3JtYWxpemVkX2dvbGRlbiA9IFJlbW92ZVR5cGVJbmZvRGV0YWlscyhnb2xkZW4pCisK
KyAgICBpZiBDQU5fR0VORVJBVEVfR09MREVOX0ZJTEU6CisgICAgICBzZWxmLmFzc2VydEVxdWFs
KG5vcm1hbGl6ZWRfZ29sZGVuLCBub3JtYWxpemVkX2FjdHVhbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgJ1xuJy5qb2luKGRpZmZsaWIudW5pZmllZF9kaWZmKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbm9ybWFsaXplZF9nb2xkZW4uc3BsaXQoJ1xuJyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub3JtYWxpemVkX2FjdHVhbC5zcGxpdCgnXG4nKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdnb2xkZW4nLCAnYWN0dWFsJykpKQorICAgIGVsc2U6CisgICAgICBub3Jt
YWxpemVkX2FjdHVhbCA9IE5vcm1hbGl6ZVRvQ3VycmVudFBsYXRmb3JtKAorICAgICAgICAgIFJl
bW92ZVRlc3RDb3VudHMobm9ybWFsaXplZF9hY3R1YWwpKQorICAgICAgbm9ybWFsaXplZF9nb2xk
ZW4gPSBOb3JtYWxpemVUb0N1cnJlbnRQbGF0Zm9ybSgKKyAgICAgICAgICBSZW1vdmVUZXN0Q291
bnRzKHNlbGYuUmVtb3ZlVW5zdXBwb3J0ZWRUZXN0cyhub3JtYWxpemVkX2dvbGRlbikpKQorCisg
ICAgICAjIFRoaXMgY29kZSBpcyB2ZXJ5IGhhbmR5IHdoZW4gZGVidWdnaW5nIGdvbGRlbiBmaWxl
IGRpZmZlcmVuY2VzOgorICAgICAgaWYgb3MuZ2V0ZW52KCdERUJVR19HVEVTVF9PVVRQVVRfVEVT
VCcpOgorICAgICAgICBvcGVuKG9zLnBhdGguam9pbigKKyAgICAgICAgICAgIGd0ZXN0X3Rlc3Rf
dXRpbHMuR2V0U291cmNlRGlyKCksCisgICAgICAgICAgICAnX2dvb2dsZXRlc3Qtb3V0cHV0LXRl
c3Rfbm9ybWFsaXplZF9hY3R1YWwudHh0JyksICd3YicpLndyaXRlKAorICAgICAgICAgICAgICAg
IG5vcm1hbGl6ZWRfYWN0dWFsKQorICAgICAgICBvcGVuKG9zLnBhdGguam9pbigKKyAgICAgICAg
ICAgIGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNlRGlyKCksCisgICAgICAgICAgICAnX2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3Rfbm9ybWFsaXplZF9nb2xkZW4udHh0JyksICd3YicpLndyaXRlKAor
ICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRfZ29sZGVuKQorCisgICAgICBzZWxmLmFzc2VydEVx
dWFsKG5vcm1hbGl6ZWRfZ29sZGVuLCBub3JtYWxpemVkX2FjdHVhbCkKKworCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICBpZiBOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRyBpbiBzeXMu
YXJndjoKKyAgICAjIHVuaXR0ZXN0Lm1haW4oKSBjYW4ndCBoYW5kbGUgdW5rbm93biBmbGFncwor
ICAgIHN5cy5hcmd2LnJlbW92ZShOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRykKKworICBpZiBH
RU5HT0xERU5fRkxBRyBpbiBzeXMuYXJndjoKKyAgICBpZiBDQU5fR0VORVJBVEVfR09MREVOX0ZJ
TEU6CisgICAgICBvdXRwdXQgPSBHZXRPdXRwdXRPZkFsbENvbW1hbmRzKCkKKyAgICAgIGdvbGRl
bl9maWxlID0gb3BlbihHT0xERU5fUEFUSCwgJ3diJykKKyAgICAgIGdvbGRlbl9maWxlLndyaXRl
KG91dHB1dCkKKyAgICAgIGdvbGRlbl9maWxlLmNsb3NlKCkKKyAgICBlbHNlOgorICAgICAgbWVz
c2FnZSA9ICgKKyAgICAgICAgICAiIiJVbmFibGUgdG8gd3JpdGUgYSBnb2xkZW4gZmlsZSB3aGVu
IGNvbXBpbGVkIGluIGFuIGVudmlyb25tZW50Cit0aGF0IGRvZXMgbm90IHN1cHBvcnQgYWxsIHRo
ZSByZXF1aXJlZCBmZWF0dXJlcyAoZGVhdGggdGVzdHMsCit0eXBlZCB0ZXN0cywgc3RhY2sgdHJh
Y2VzLCBhbmQgbXVsdGlwbGUgdGhyZWFkcykuCitQbGVhc2UgYnVpbGQgdGhpcyB0ZXN0IGFuZCBn
ZW5lcmF0ZSB0aGUgZ29sZGVuIGZpbGUgdXNpbmcgQmxhemUgb24gTGludXguIiIiKQorCisgICAg
ICBzeXMuc3RkZXJyLndyaXRlKG1lc3NhZ2UpCisgICAgICBzeXMuZXhpdCgxKQorICBlbHNlOgor
ICAgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjUy
NWVjOTcwZGU1NDIxZTBlMzNiNmZmNmQyY2M2YzhkMDUxNjQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYwpA
QCAtMCwwICsxLDExMDkgQEAKKy8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgorLy8gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8v
IG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisv
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKy8vCisvLyBUaGUgcHVycG9zZSBvZiB0aGlzIGZpbGUgaXMgdG8gZ2VuZXJhdGUgR29v
Z2xlIFRlc3Qgb3V0cHV0IHVuZGVyCisvLyB2YXJpb3VzIGNvbmRpdGlvbnMuICBUaGUgb3V0cHV0
IHdpbGwgdGhlbiBiZSB2ZXJpZmllZCBieQorLy8gZ29vZ2xldGVzdC1vdXRwdXQtdGVzdC5weSB0
byBlbnN1cmUgdGhhdCBHb29nbGUgVGVzdCBnZW5lcmF0ZXMgdGhlCisvLyBkZXNpcmVkIG1lc3Nh
Z2VzLiAgVGhlcmVmb3JlLCBtb3N0IHRlc3RzIGluIHRoaXMgZmlsZSBhcmUgTUVBTlQgVE8KKy8v
IEZBSUwuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKyNpbmNsdWRlICJndGVzdC9n
dGVzdC5oIgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKworI2luY2x1ZGUg
PHN0ZGxpYi5oPgorCisjaWYgX01TQ19WRVIKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BV
U0hfKDQxMjcgLyogY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudCAqLykKKyNlbmRp
ZiAgLy8gIF9NU0NfVkVSCisKKyNpZiBHVEVTVF9JU19USFJFQURTQUZFCit1c2luZyB0ZXN0aW5n
OjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjsKK3VzaW5nIHRlc3Rpbmc6OlRlc3RQ
YXJ0UmVzdWx0QXJyYXk7CisKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpOb3RpZmljYXRpb247
Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkV2l0aFBhcmFtOworI2VuZGlmCisKK25h
bWVzcGFjZSBwb3NpeCA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OworCisvLyBUZXN0cyBj
YXRjaGluZyBmYXRhbCBmYWlsdXJlcy4KKworLy8gQSBzdWJyb3V0aW5lIHVzZWQgYnkgdGhlIGZv
bGxvd2luZyB0ZXN0Lgordm9pZCBUZXN0RXExKGludCB4KSB7CisgIEFTU0VSVF9FUSgxLCB4KTsK
K30KKworLy8gVGhpcyBmdW5jdGlvbiBjYWxscyBhIHRlc3Qgc3Vicm91dGluZSwgY2F0Y2hlcyB0
aGUgZmF0YWwgZmFpbHVyZSBpdAorLy8gZ2VuZXJhdGVzLCBhbmQgdGhlbiByZXR1cm5zIGVhcmx5
Lgordm9pZCBUcnlUZXN0U3Vicm91dGluZSgpIHsKKyAgLy8gQ2FsbHMgYSBzdWJyb3VudGluZSB0
aGF0IHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUuCisgIFRlc3RFcTEoMik7CisKKyAgLy8gQ2F0Y2hl
cyB0aGUgZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSB0ZXN0LgorICAvLworICAvLyBUaGUg
dGVzdGluZzo6VGVzdDo6IHByZWZpeCBpcyBuZWNlc3Nhcnkgd2hlbiBjYWxsaW5nCisgIC8vIEhh
c0ZhdGFsRmFpbHVyZSgpIG91dHNpZGUgb2YgYSBURVNULCBURVNUX0YsIG9yIHRlc3QgZml4dHVy
ZS4KKyAgaWYgKHRlc3Rpbmc6OlRlc3Q6Okhhc0ZhdGFsRmFpbHVyZSgpKSByZXR1cm47CisKKyAg
Ly8gSWYgd2UgZ2V0IGhlcmUsIHNvbWV0aGluZyBpcyB3cm9uZy4KKyAgRkFJTCgpIDw8ICJUaGlz
IHNob3VsZCBuZXZlciBiZSByZWFjaGVkLiI7Cit9CisKK1RFU1QoUGFzc2luZ1Rlc3QsIFBhc3Np
bmdUZXN0MSkgeworfQorCitURVNUKFBhc3NpbmdUZXN0LCBQYXNzaW5nVGVzdDIpIHsKK30KKwor
Ly8gVGVzdHMgdGhhdCBwYXJhbWV0ZXJzIG9mIGZhaWxpbmcgcGFyYW1ldGVyaXplZCB0ZXN0cyBh
cmUgcHJpbnRlZCBpbiB0aGUKKy8vIGZhaWxpbmcgdGVzdCBzdW1tYXJ5LgorY2xhc3MgRmFpbGlu
Z1BhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4ge307CisKK1RF
U1RfUChGYWlsaW5nUGFyYW1UZXN0LCBGYWlscykgeworICBFWFBFQ1RfRVEoMSwgR2V0UGFyYW0o
KSk7Cit9CisKKy8vIFRoaXMgZ2VuZXJhdGVzIGEgdGVzdCB3aGljaCB3aWxsIGZhaWwuIEdvb2ds
ZSBUZXN0IGlzIGV4cGVjdGVkIHRvIHByaW50CisvLyBpdHMgcGFyYW1ldGVyIHdoZW4gaXQgb3V0
cHV0cyB0aGUgbGlzdCBvZiBhbGwgZmFpbGVkIHRlc3RzLgorSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoUHJpbnRpbmdGYWlsaW5nUGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgRmFpbGlu
Z1BhcmFtVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlcygyKSk7
CisKK3N0YXRpYyBjb25zdCBjaGFyIGtHb2xkZW5TdHJpbmdbXSA9ICJcIkxpbmVcMCAxXCJcbkxp
bmUgMiI7CisKK1RFU1QoTm9uZmF0YWxGYWlsdXJlVGVzdCwgRXNjYXBlc1N0cmluZ09wZXJhbmRz
KSB7CisgIHN0ZDo6c3RyaW5nIGFjdHVhbCA9ICJhY3R1YWwgXCJzdHJpbmdcIiI7CisgIEVYUEVD
VF9FUShrR29sZGVuU3RyaW5nLCBhY3R1YWwpOworCisgIGNvbnN0IGNoYXIqIGdvbGRlbiA9IGtH
b2xkZW5TdHJpbmc7CisgIEVYUEVDVF9FUShnb2xkZW4sIGFjdHVhbCk7Cit9CisKK1RFU1QoTm9u
ZmF0YWxGYWlsdXJlVGVzdCwgRGlmZkZvckxvbmdTdHJpbmdzKSB7CisgIHN0ZDo6c3RyaW5nIGdv
bGRlbl9zdHIoa0dvbGRlblN0cmluZywgc2l6ZW9mKGtHb2xkZW5TdHJpbmcpIC0gMSk7CisgIEVY
UEVDVF9FUShnb2xkZW5fc3RyLCAiTGluZSAyIik7Cit9CisKKy8vIFRlc3RzIGNhdGNoaW5nIGEg
ZmF0YWwgZmFpbHVyZSBpbiBhIHN1YnJvdXRpbmUuCitURVNUKEZhdGFsRmFpbHVyZVRlc3QsIEZh
dGFsRmFpbHVyZUluU3Vicm91dGluZSkgeworICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJl
IHRoYXQgeCBzaG91bGQgYmUgMSlcbiIpOworCisgIFRyeVRlc3RTdWJyb3V0aW5lKCk7Cit9CisK
Ky8vIFRlc3RzIGNhdGNoaW5nIGEgZmF0YWwgZmFpbHVyZSBpbiBhIG5lc3RlZCBzdWJyb3V0aW5l
LgorVEVTVChGYXRhbEZhaWx1cmVUZXN0LCBGYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUp
IHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpXG4i
KTsKKworICAvLyBDYWxscyBhIHN1YnJvdW50aW5lIHRoYXQgeWllbGRzIGEgZmF0YWwgZmFpbHVy
ZS4KKyAgVHJ5VGVzdFN1YnJvdXRpbmUoKTsKKworICAvLyBDYXRjaGVzIHRoZSBmYXRhbCBmYWls
dXJlIGFuZCBhYm9ydHMgdGhlIHRlc3QuCisgIC8vCisgIC8vIFdoZW4gY2FsbGluZyBIYXNGYXRh
bEZhaWx1cmUoKSBpbnNpZGUgYSBURVNULCBURVNUX0YsIG9yIHRlc3QKKyAgLy8gZml4dHVyZSwg
dGhlIHRlc3Rpbmc6OlRlc3Q6OiBwcmVmaXggaXMgbm90IG5lZWRlZC4KKyAgaWYgKEhhc0ZhdGFs
RmFpbHVyZSgpKSByZXR1cm47CisKKyAgLy8gSWYgd2UgZ2V0IGhlcmUsIHNvbWV0aGluZyBpcyB3
cm9uZy4KKyAgRkFJTCgpIDw8ICJUaGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkLiI7Cit9CisK
Ky8vIFRlc3RzIEhhc0ZhdGFsRmFpbHVyZSgpIGFmdGVyIGEgZmFpbGVkIEVYUEVDVCBjaGVjay4K
K1RFU1QoRmF0YWxGYWlsdXJlVGVzdCwgTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lKSB7Cisg
IHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUgb24gZmFsc2UpXG4iKTsKKyAgRVhQRUNUX1RS
VUUoZmFsc2UpOyAgLy8gR2VuZXJhdGVzIGEgbm9uZmF0YWwgZmFpbHVyZQorICBBU1NFUlRfRkFM
U0UoSGFzRmF0YWxGYWlsdXJlKCkpOyAgLy8gVGhpcyBzaG91bGQgc3VjY2VlZC4KK30KKworLy8g
VGVzdHMgaW50ZXJsZWF2aW5nIHVzZXIgbG9nZ2luZyBhbmQgR29vZ2xlIFRlc3QgYXNzZXJ0aW9u
cy4KK1RFU1QoTG9nZ2luZ1Rlc3QsIEludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zKSB7
CisgIHN0YXRpYyBjb25zdCBpbnQgYVs0XSA9IHsKKyAgICAzLCA5LCAyLCA2CisgIH07CisKKyAg
cHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24gKDMpID49IChhW2ldKSlcbiIpOworICBm
b3IgKGludCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKGEpL3NpemVvZigqYSkp
OyBpKyspIHsKKyAgICBwcmludGYoImkgPT0gJWRcbiIsIGkpOworICAgIEVYUEVDVF9HRSgzLCBh
W2ldKTsKKyAgfQorfQorCisvLyBUZXN0cyB0aGUgU0NPUEVEX1RSQUNFIG1hY3JvLgorCisvLyBB
IGhlbHBlciBmdW5jdGlvbiBmb3IgdGVzdGluZyBTQ09QRURfVFJBQ0UuCit2b2lkIFN1YldpdGhv
dXRUcmFjZShpbnQgbikgeworICBFWFBFQ1RfRVEoMSwgbik7CisgIEFTU0VSVF9FUSgyLCBuKTsK
K30KKworLy8gQW5vdGhlciBoZWxwZXIgZnVuY3Rpb24gZm9yIHRlc3RpbmcgU0NPUEVEX1RSQUNF
Lgordm9pZCBTdWJXaXRoVHJhY2UoaW50IG4pIHsKKyAgU0NPUEVEX1RSQUNFKHRlc3Rpbmc6Ok1l
c3NhZ2UoKSA8PCAibiA9ICIgPDwgbik7CisKKyAgU3ViV2l0aG91dFRyYWNlKG4pOworfQorCitU
RVNUKFNDT1BFRF9UUkFDRVRlc3QsIEFjY2VwdGVkVmFsdWVzKSB7CisgIFNDT1BFRF9UUkFDRSgi
bGl0ZXJhbCBzdHJpbmciKTsKKyAgU0NPUEVEX1RSQUNFKHN0ZDo6c3RyaW5nKCJzdGQ6OnN0cmlu
ZyIpKTsKKyAgU0NPUEVEX1RSQUNFKDEzMzcpOyAgLy8gc3RyZWFtYWJsZSB0eXBlCisgIGNvbnN0
IGNoYXIqIG51bGxfdmFsdWUgPSBOVUxMOworICBTQ09QRURfVFJBQ0UobnVsbF92YWx1ZSk7CisK
KyAgQUREX0ZBSUxVUkUoKSA8PCAiSnVzdCBjaGVja2luZyB0aGF0IGFsbCB0aGVzZSB2YWx1ZXMg
d29yayBmaW5lLiI7Cit9CisKKy8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFKCkgb2JleXMgbGV4
aWNhbCBzY29wZXMuCitURVNUKFNDT1BFRF9UUkFDRVRlc3QsIE9iZXlzU2NvcGVzKSB7CisgIHBy
aW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKKworICAvLyBUaGVyZSBzaG91bGQgYmUgbm8g
dHJhY2UgYmVmb3JlIFNDT1BFRF9UUkFDRSgpIGlzIGludm9rZWQuCisgIEFERF9GQUlMVVJFKCkg
PDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2Uu
IjsKKworICB7CisgICAgU0NPUEVEX1RSQUNFKCJFeHBlY3RlZCB0cmFjZSIpOworICAgIC8vIEFm
dGVyIFNDT1BFRF9UUkFDRSgpLCBhIGZhaWx1cmUgaW4gdGhlIGN1cnJlbnQgc2NvcGUgc2hvdWxk
IGNvbnRhaW4KKyAgICAvLyB0aGUgdHJhY2UuCisgICAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBm
YWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGhhdmUgYSB0cmFjZS4iOworICB9CisKKyAg
Ly8gT25jZSB0aGUgY29udHJvbCBsZWF2ZXMgdGhlIHNjb3BlIG9mIHRoZSBTQ09QRURfVFJBQ0Uo
KSwgdGhlcmUKKyAgLy8gc2hvdWxkIGJlIG5vIHRyYWNlIGFnYWluLgorICBBRERfRkFJTFVSRSgp
IDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNl
LiI7Cit9CisKKy8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFIHdvcmtzIGluc2lkZSBhIGxvb3Au
CitURVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtzSW5Mb29wKSB7CisgIHByaW50ZigiKGV4cGVj
dGVkIHRvIGZhaWwpXG4iKTsKKworICBmb3IgKGludCBpID0gMTsgaSA8PSAyOyBpKyspIHsKKyAg
ICBTQ09QRURfVFJBQ0UodGVzdGluZzo6TWVzc2FnZSgpIDw8ICJpID0gIiA8PCBpKTsKKworICAg
IFN1YldpdGhvdXRUcmFjZShpKTsKKyAgfQorfQorCisvLyBUZXN0cyB0aGF0IFNDT1BFRF9UUkFD
RSB3b3JrcyBpbiBhIHN1YnJvdXRpbmUuCitURVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtzSW5T
dWJyb3V0aW5lKSB7CisgIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKKworICBTdWJX
aXRoVHJhY2UoMSk7CisgIFN1YldpdGhUcmFjZSgyKTsKK30KKworLy8gVGVzdHMgdGhhdCBTQ09Q
RURfVFJBQ0UgY2FuIGJlIG5lc3RlZC4KK1RFU1QoU0NPUEVEX1RSQUNFVGVzdCwgQ2FuQmVOZXN0
ZWQpIHsKKyAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIpOworCisgIFNDT1BFRF9UUkFD
RSgiIik7ICAvLyBBIHRyYWNlIHdpdGhvdXQgYSBtZXNzYWdlLgorCisgIFN1YldpdGhUcmFjZSgy
KTsKK30KKworLy8gVGVzdHMgdGhhdCBtdWx0aXBsZSBTQ09QRURfVFJBQ0VzIGNhbiBiZSB1c2Vk
IGluIHRoZSBzYW1lIHNjb3BlLgorVEVTVChTQ09QRURfVFJBQ0VUZXN0LCBDYW5CZVJlcGVhdGVk
KSB7CisgIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKKworICBTQ09QRURfVFJBQ0Uo
IkEiKTsKKyAgQUREX0ZBSUxVUkUoKQorICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEuIjsKKworICBTQ09QRURfVFJBQ0Uo
IkIiKTsKKyAgQUREX0ZBSUxVUkUoKQorICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEgYW5kIEIuIjsKKworICB7CisgICAg
U0NPUEVEX1RSQUNFKCJDIik7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkLCBhbmQgc2hvdWxkICIKKyAgICAgICAgICAgICAgICAgIDw8ICJjb250YWluIHRy
YWNlIHBvaW50IEEsIEIsIGFuZCBDLiI7CisgIH0KKworICBTQ09QRURfVFJBQ0UoIkQiKTsKKyAg
QUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkICIK
KyAgICAgICAgICAgICAgICA8PCAiY29udGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQgRC4iOwor
fQorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorLy8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0Uo
KXMgY2FuIGJlIHVzZWQgY29uY3VycmVudGx5IGZyb20gbXVsdGlwbGUKKy8vIHRocmVhZHMuICBO
YW1lbHksIGFuIGFzc2VydGlvbiBzaG91bGQgYmUgYWZmZWN0ZWQgYnkKKy8vIFNDT1BFRF9UUkFD
RSgpcyBpbiBpdHMgb3duIHRocmVhZCBvbmx5LgorCisvLyBIZXJlJ3MgdGhlIHNlcXVlbmNlIG9m
IGFjdGlvbnMgdGhhdCBoYXBwZW4gaW4gdGhlIHRlc3Q6CisvLworLy8gICBUaHJlYWQgQSAobWFp
bikgICAgICAgICAgICAgICAgfCBUaHJlYWQgQiAoc3Bhd25lZCkKKy8vICAgPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PXw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8g
ICBzcGF3bnMgdGhyZWFkIEIgICAgICAgICAgICAgICAgfAorLy8gICAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIHdh
aXRzIGZvciBuMSAgICAgICAgICAgICAgICAgICB8IFNDT1BFRF9UUkFDRSgiVHJhY2UgQiIpOwor
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnZW5lcmF0ZXMgZmFpbHVyZSAj
MQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBub3RpZmllcyBuMQorLy8g
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLyAgIFNDT1BFRF9UUkFDRSgiVHJhY2UgQSIpOyAgICAgICB8IHdhaXRzIGZv
ciBuMgorLy8gICBnZW5lcmF0ZXMgZmFpbHVyZSAjMiAgICAgICAgICAgfAorLy8gICBub3RpZmll
cyBuMiAgICAgICAgICAgICAgICAgICAgfAorLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIHdhaXRzIGZvciBu
MyAgICAgICAgICAgICAgICAgICB8IGdlbmVyYXRlcyBmYWlsdXJlICMzCisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8IHRyYWNlIEIgZGllcworLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCBnZW5lcmF0ZXMgZmFpbHVyZSAjNAorLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCBub3RpZmllcyBuMworLy8gICAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIGdl
bmVyYXRlcyBmYWlsdXJlICM1ICAgICAgICAgICB8IGZpbmlzaGVzCisvLyAgIHRyYWNlIEEgZGll
cyAgICAgICAgICAgICAgICAgICB8CisvLyAgIGdlbmVyYXRlcyBmYWlsdXJlICM2ICAgICAgICAg
ICB8CisvLyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgd2FpdHMgZm9yIHRocmVhZCBCIHRvIGZpbmlzaCAgIHwK
Kworc3RydWN0IENoZWNrUG9pbnRzIHsKKyAgTm90aWZpY2F0aW9uIG4xOworICBOb3RpZmljYXRp
b24gbjI7CisgIE5vdGlmaWNhdGlvbiBuMzsKK307CisKK3N0YXRpYyB2b2lkIFRocmVhZFdpdGhT
Y29wZWRUcmFjZShDaGVja1BvaW50cyogY2hlY2tfcG9pbnRzKSB7CisgIHsKKyAgICBTQ09QRURf
VFJBQ0UoIlRyYWNlIEIiKTsKKyAgICBBRERfRkFJTFVSRSgpCisgICAgICAgIDw8ICJFeHBlY3Rl
ZCBmYWlsdXJlICMxIChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBCIGFsaXZlKS4iOworICAgIGNo
ZWNrX3BvaW50cy0+bjEuTm90aWZ5KCk7CisgICAgY2hlY2tfcG9pbnRzLT5uMi5XYWl0Rm9yTm90
aWZpY2F0aW9uKCk7CisKKyAgICBBRERfRkFJTFVSRSgpCisgICAgICAgIDw8ICJFeHBlY3RlZCBm
YWlsdXJlICMzIChpbiB0aHJlYWQgQiwgdHJhY2UgQSAmIEIgYm90aCBhbGl2ZSkuIjsKKyAgfSAg
Ly8gVHJhY2UgQiBkaWVzIGhlcmUuCisgIEFERF9GQUlMVVJFKCkKKyAgICAgIDw8ICJFeHBlY3Rl
ZCBmYWlsdXJlICM0IChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBBIGFsaXZlKS4iOworICBjaGVj
a19wb2ludHMtPm4zLk5vdGlmeSgpOworfQorCitURVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtz
Q29uY3VycmVudGx5KSB7CisgIHByaW50ZigiKGV4cGVjdGluZyA2IGZhaWx1cmVzKVxuIik7CisK
KyAgQ2hlY2tQb2ludHMgY2hlY2tfcG9pbnRzOworICBUaHJlYWRXaXRoUGFyYW08Q2hlY2tQb2lu
dHMqPiB0aHJlYWQoJlRocmVhZFdpdGhTY29wZWRUcmFjZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZjaGVja19wb2ludHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgY2hlY2tfcG9pbnRzLm4xLldhaXRGb3JOb3RpZmlj
YXRpb24oKTsKKworICB7CisgICAgU0NPUEVEX1RSQUNFKCJUcmFjZSBBIik7CisgICAgQUREX0ZB
SUxVUkUoKQorICAgICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiAoaW4gdGhyZWFkIEEsIHRy
YWNlIEEgJiBCIGJvdGggYWxpdmUpLiI7CisgICAgY2hlY2tfcG9pbnRzLm4yLk5vdGlmeSgpOwor
ICAgIGNoZWNrX3BvaW50cy5uMy5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7CisKKyAgICBBRERfRkFJ
TFVSRSgpCisgICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM1IChpbiB0aHJlYWQgQSwgb25s
eSB0cmFjZSBBIGFsaXZlKS4iOworICB9ICAvLyBUcmFjZSBBIGRpZXMgaGVyZS4KKyAgQUREX0ZB
SUxVUkUoKQorICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzYgKGluIHRocmVhZCBBLCBubyB0
cmFjZSBhbGl2ZSkuIjsKKyAgdGhyZWFkLkpvaW4oKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSVNf
VEhSRUFEU0FGRQorCisvLyBUZXN0cyBiYXNpYyBmdW5jdGlvbmFsaXR5IG9mIHRoZSBTY29wZWRU
cmFjZSB1dGlsaXR5IChtb3N0IG9mIGl0cyBmZWF0dXJlcworLy8gYXJlIGFscmVhZHkgdGVzdGVk
IGluIFNDT1BFRF9UUkFDRVRlc3QpLgorVEVTVChTY29wZWRUcmFjZVRlc3QsIFdpdGhFeHBsaWNp
dEZpbGVBbmRMaW5lKSB7CisgIHRlc3Rpbmc6OlNjb3BlZFRyYWNlIHRyYWNlKCJleHBsaWNpdF9m
aWxlLmNjIiwgMTIzLCAiZXhwZWN0ZWQgdHJhY2UgbWVzc2FnZSIpOworICBBRERfRkFJTFVSRSgp
IDw8ICJDaGVjayB0aGF0IHRoZSB0cmFjZSBpcyBhdHRhY2hlZCB0byBhIHBhcnRpY3VsYXIgbG9j
YXRpb24uIjsKK30KKworVEVTVChEaXNhYmxlZFRlc3RzV2FybmluZ1Rlc3QsCisgICAgIERJU0FC
TEVEX0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZ1N1cHByZXNzZXNXYXJuaW5nKSB7CisgIC8vIFRo
aXMgdGVzdCBib2R5IGlzIGludGVudGlvbmFsbHkgZW1wdHkuICBJdHMgc29sZSBwdXJwb3NlIGlz
IGZvcgorICAvLyB2ZXJpZnlpbmcgdGhhdCB0aGUgLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90
ZXN0cyBmbGFnCisgIC8vIHN1cHByZXNzZXMgdGhlICJZT1UgSEFWRSAxMiBESVNBQkxFRCBURVNU
UyIgd2FybmluZyBhdCB0aGUgZW5kIG9mCisgIC8vIHRoZSB0ZXN0IG91dHB1dC4KK30KKworLy8g
VGVzdHMgdXNpbmcgYXNzZXJ0aW9ucyBvdXRzaWRlIG9mIFRFU1QgYW5kIFRFU1RfRi4KKy8vCisv
LyBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgdHdvIGZhaWx1cmVzIGludGVudGlvbmFsbHkuCit2b2lk
IEFkSG9jVGVzdCgpIHsKKyAgcHJpbnRmKCJUaGUgbm9uLXRlc3QgcGFydCBvZiB0aGUgY29kZSBp
cyBleHBlY3RlZCB0byBoYXZlIDIgZmFpbHVyZXMuXG5cbiIpOworICBFWFBFQ1RfVFJVRShmYWxz
ZSk7CisgIEVYUEVDVF9FUSgyLCAzKTsKK30KKworLy8gUnVucyBhbGwgVEVTVHMsIGFsbCBURVNU
X0ZzLCBhbmQgdGhlIGFkIGhvYyB0ZXN0LgoraW50IFJ1bkFsbFRlc3RzKCkgeworICBBZEhvY1Rl
c3QoKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KKworLy8gVGVzdHMgbm9uLWZhdGFs
IGZhaWx1cmVzIGluIHRoZSBmaXh0dXJlIGNvbnN0cnVjdG9yLgorY2xhc3MgTm9uRmF0YWxGYWls
dXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHBy
b3RlY3RlZDoKKyAgTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0KCkgewor
ICAgIHByaW50ZigiKGV4cGVjdGluZyA1IGZhaWx1cmVzKVxuIik7CisgICAgQUREX0ZBSUxVUkUo
KSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4iOwor
ICB9CisKKyAgfk5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCgpIHsKKyAg
ICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM1LCBpbiB0aGUgdGVzdCBmaXh0
dXJlIGQndG9yLiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgQUREX0ZB
SUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gU2V0VXAoKS4iOworICB9CisKKyAg
dmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVk
IGZhaWx1cmUgIzQsIGluIFRlYXJEb3duLiI7CisgIH0KK307CisKK1RFU1RfRihOb25GYXRhbEZh
aWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QsIEZhaWx1cmVJbkNvbnN0cnVjdG9yKSB7Cisg
IEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGJvZHku
IjsKK30KKworLy8gVGVzdHMgZmF0YWwgZmFpbHVyZXMgaW4gdGhlIGZpeHR1cmUgY29uc3RydWN0
b3IuCitjbGFzcyBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25z
dHJ1Y3RvclRlc3QoKSB7CisgICAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMpXG4iKTsK
KyAgICBJbml0KCk7CisgIH0KKworICB+RmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JU
ZXN0KCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRo
ZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsK
KyAgICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gU2V0VXAoKS4gICIK
KyAgICAgICAgICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0
ZXN0IGZpeHR1cmUgYyd0b3IgIgorICAgICAgICAgICAgICAgICAgPDwgImhhZCBhIGZhdGFsIGZh
aWx1cmUuIjsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBBRERfRkFJ
TFVSRSgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gVGVhckRvd24oKS4gICIKKyAgICAgICAg
ICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1
cmUgYyd0b3IgIgorICAgICAgICAgICAgICAgICAgPDwgImhhZCBhIGZhdGFsIGZhaWx1cmUuIjsK
KyAgfQorCisgcHJpdmF0ZToKKyAgdm9pZCBJbml0KCkgeworICAgIEZBSUwoKSA8PCAiRXhwZWN0
ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4iOworICB9Cit9OworCitU
RVNUX0YoRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LCBGYWlsdXJlSW5Db25z
dHJ1Y3RvcikgeworICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gdGhl
IHRlc3QgYm9keS4gICIKKyAgICAgICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBo
ZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yICIKKyAgICAgICAgICAgICAgICA8PCAiaGFk
IGEgZmF0YWwgZmFpbHVyZS4iOworfQorCisvLyBUZXN0cyBub24tZmF0YWwgZmFpbHVyZXMgaW4g
U2V0VXAoKS4KK2NsYXNzIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB+Tm9uRmF0YWxGYWlsdXJlSW5TZXRV
cFRlc3QoKSB7CisgICAgRGVpbml0KCk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7
CisgICAgcHJpbnRmKCIoZXhwZWN0aW5nIDQgZmFpbHVyZXMpXG4iKTsKKyAgICBBRERfRkFJTFVS
RSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLiI7CisgIH0KKworICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMz
LCBpbiBUZWFyRG93bigpLiI7CisgIH0KKyBwcml2YXRlOgorICB2b2lkIERlaW5pdCgpIHsKKyAg
ICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0
b3IuIjsKKyAgfQorfTsKKworVEVTVF9GKE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LCBGYWls
dXJlSW5TZXRVcCkgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0
ZXN0IGZ1bmN0aW9uLiI7Cit9CisKKy8vIFRlc3RzIGZhdGFsIGZhaWx1cmVzIGluIFNldFVwKCku
CitjbGFzcyBGYXRhbEZhaWx1cmVJblNldFVwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
KyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgfkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0KCkgeworICAg
IERlaW5pdCgpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIHByaW50Zigi
KGV4cGVjdGluZyAzIGZhaWx1cmVzKVxuIik7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWls
dXJlICMxLCBpbiBTZXRVcCgpLiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7
CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLiI7Cisg
IH0KKyBwcml2YXRlOgorICB2b2lkIERlaW5pdCgpIHsKKyAgICBGQUlMKCkgPDwgIkV4cGVjdGVk
IGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKKyAgfQorfTsKKworVEVT
VF9GKEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LCBGYWlsdXJlSW5TZXRVcCkgeworICBGQUlMKCkg
PDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBmdW5jdGlvbi4gICIKKyAgICAgICAg
IDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIFNldFVwKCkgZmFpbGVkLiI7Cit9CisK
K1RFU1QoQWRkRmFpbHVyZUF0VGVzdCwgTWVzc2FnZUNvbnRhaW5zU3BlY2lmaWVkRmlsZUFuZExp
bmVOdW1iZXIpIHsKKyAgQUREX0ZBSUxVUkVfQVQoImZvby5jYyIsIDQyKSA8PCAiRXhwZWN0ZWQg
ZmFpbHVyZSBpbiBmb28uY2MiOworfQorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorCisvLyBB
IHVuYXJ5IGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KK3ZvaWQgRGllSWYoYm9vbCBzaG91bGRfZGll
KSB7CisgIEdURVNUX0NIRUNLXyghc2hvdWxkX2RpZSkgPDwgIiAtIGRlYXRoIGluc2lkZSBEaWVJ
ZigpLiI7Cit9CisKKy8vIFRlc3RzIHJ1bm5pbmcgZGVhdGggdGVzdHMgaW4gYSBtdWx0aS10aHJl
YWRlZCBjb250ZXh0LgorCisvLyBVc2VkIGZvciBjb29yZGluYXRpb24gYmV0d2VlbiB0aGUgbWFp
biBhbmQgdGhlIHNwYXduIHRocmVhZC4KK3N0cnVjdCBTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMg
eworICBTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMoKSB7fQorCisgIE5vdGlmaWNhdGlvbiBzcGF3
bl90aHJlYWRfc3RhcnRlZDsKKyAgTm90aWZpY2F0aW9uIHNwYXduX3RocmVhZF9va190b190ZXJt
aW5hdGU7CisKKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNw
YXduVGhyZWFkTm90aWZpY2F0aW9ucyk7Cit9OworCisvLyBUaGUgZnVuY3Rpb24gdG8gYmUgZXhl
Y3V0ZWQgaW4gdGhlIHRocmVhZCBzcGF3biBieSB0aGUKKy8vIE11bHRpcGxlVGhyZWFkcyB0ZXN0
IChiZWxvdykuCitzdGF0aWMgdm9pZCBUaHJlYWRSb3V0aW5lKFNwYXduVGhyZWFkTm90aWZpY2F0
aW9ucyogbm90aWZpY2F0aW9ucykgeworICAvLyBTaWduYWxzIHRoZSBtYWluIHRocmVhZCB0aGF0
IHRoaXMgdGhyZWFkIGhhcyBzdGFydGVkLgorICBub3RpZmljYXRpb25zLT5zcGF3bl90aHJlYWRf
c3RhcnRlZC5Ob3RpZnkoKTsKKworICAvLyBXYWl0cyBmb3IgcGVybWlzc2lvbiB0byBmaW5pc2gg
ZnJvbSB0aGUgbWFpbiB0aHJlYWQuCisgIG5vdGlmaWNhdGlvbnMtPnNwYXduX3RocmVhZF9va190
b190ZXJtaW5hdGUuV2FpdEZvck5vdGlmaWNhdGlvbigpOworfQorCisvLyBUaGlzIGlzIGEgZGVh
dGgtdGVzdCB0ZXN0LCBidXQgaXQncyBub3QgbmFtZWQgd2l0aCBhIERlYXRoVGVzdAorLy8gc3Vm
Zml4LiAgSXQgc3RhcnRzIHRocmVhZHMgd2hpY2ggbWlnaHQgaW50ZXJmZXJlIHdpdGggbGF0ZXIK
Ky8vIGRlYXRoIHRlc3RzLCBzbyBpdCBtdXN0IHJ1biBhZnRlciBhbGwgb3RoZXIgZGVhdGggdGVz
dHMuCitjbGFzcyBEZWF0aFRlc3RBbmRNdWx0aVRocmVhZHNUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLy8gU3RhcnRzIGEgdGhyZWFkIGFuZCB3YWl0cyBmb3Ig
aXQgdG8gYmVnaW4uCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICB0aHJlYWRfLnJlc2V0
KG5ldyBUaHJlYWRXaXRoUGFyYW08U3Bhd25UaHJlYWROb3RpZmljYXRpb25zKj4oCisgICAgICAg
ICZUaHJlYWRSb3V0aW5lLCAmbm90aWZpY2F0aW9uc18sIE5VTEwpKTsKKyAgICBub3RpZmljYXRp
b25zXy5zcGF3bl90aHJlYWRfc3RhcnRlZC5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7CisgIH0KKyAg
Ly8gVGVsbHMgdGhlIHRocmVhZCB0byBmaW5pc2gsIGFuZCByZWFwcyBpdC4KKyAgLy8gRGVwZW5k
aW5nIG9uIHRoZSB2ZXJzaW9uIG9mIHRoZSB0aHJlYWQgbGlicmFyeSBpbiB1c2UsCisgIC8vIGEg
bWFuYWdlciB0aHJlYWQgbWlnaHQgc3RpbGwgYmUgbGVmdCBydW5uaW5nIHRoYXQgd2lsbCBpbnRl
cmZlcmUKKyAgLy8gd2l0aCBsYXRlciBkZWF0aCB0ZXN0cy4gIFRoaXMgaXMgdW5mb3J0dW5hdGUs
IGJ1dCB0aGlzIGNsYXNzCisgIC8vIGNsZWFucyB1cCBhZnRlciBpdHNlbGYgYXMgYmVzdCBpdCBj
YW4uCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBub3RpZmljYXRpb25zXy5zcGF3
bl90aHJlYWRfb2tfdG9fdGVybWluYXRlLk5vdGlmeSgpOworICB9CisKKyBwcml2YXRlOgorICBT
cGF3blRocmVhZE5vdGlmaWNhdGlvbnMgbm90aWZpY2F0aW9uc187CisgIHRlc3Rpbmc6OmludGVy
bmFsOjpzY29wZWRfcHRyPFRocmVhZFdpdGhQYXJhbTxTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMq
PiA+CisgICAgICB0aHJlYWRfOworfTsKKworI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZF
CisKKy8vIFRoZSBNaXhlZFVwVGVzdENhc2VUZXN0IHRlc3QgY2FzZSB2ZXJpZmllcyB0aGF0IEdv
b2dsZSBUZXN0IHdpbGwgZmFpbCBhCisvLyB0ZXN0IGlmIGl0IHVzZXMgYSBkaWZmZXJlbnQgZml4
dHVyZSBjbGFzcyB0aGFuIHdoYXQgb3RoZXIgdGVzdHMgaW4KKy8vIHRoZSBzYW1lIHRlc3QgY2Fz
ZSB1c2UuICBJdCBkZWxpYmVyYXRlbHkgY29udGFpbnMgdHdvIGZpeHR1cmUKKy8vIGNsYXNzZXMg
d2l0aCB0aGUgc2FtZSBuYW1lIGJ1dCBkZWZpbmVkIGluIGRpZmZlcmVudCBuYW1lc3BhY2VzLgor
CisvLyBUaGUgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QgdGVzdCBjYXNlIHZl
cmlmaWVzIHRoYXQKKy8vIHdoZW4gdGhlIHVzZXIgZGVmaW5lcyB0d28gdGVzdHMgd2l0aCB0aGUg
c2FtZSB0ZXN0IGNhc2UgbmFtZSBBTkQKKy8vIHNhbWUgdGVzdCBuYW1lIChidXQgaW4gZGlmZmVy
ZW50IG5hbWVzcGFjZXMpLCB0aGUgc2Vjb25kIHRlc3Qgd2lsbAorLy8gZmFpbC4KKworbmFtZXNw
YWNlIGZvbyB7CisKK2NsYXNzIE1peGVkVXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Cit9OworCitURVNUX0YoTWl4ZWRVcFRlc3RDYXNlVGVzdCwgRmlyc3RUZXN0RnJvbU5h
bWVzcGFjZUZvbykge30KK1RFU1RfRihNaXhlZFVwVGVzdENhc2VUZXN0LCBTZWNvbmRUZXN0RnJv
bU5hbWVzcGFjZUZvbykge30KKworY2xhc3MgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFt
ZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitURVNUX0YoTWl4ZWRVcFRlc3RD
YXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCisgICAgICAgVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFt
ZVNob3VsZEZhaWwpIHt9CisKK30gIC8vIG5hbWVzcGFjZSBmb28KKworbmFtZXNwYWNlIGJhciB7
CisKK2NsYXNzIE1peGVkVXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9
OworCisvLyBUaGUgZm9sbG93aW5nIHR3byB0ZXN0cyBhcmUgZXhwZWN0ZWQgdG8gZmFpbC4gIFdl
IHJlbHkgb24gdGhlCisvLyBnb2xkZW4gZmlsZSB0byBjaGVjayB0aGF0IEdvb2dsZSBUZXN0IGdl
bmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KK1RFU1RfRihNaXhlZFVwVGVzdENhc2VU
ZXN0LCBUaGlzU2hvdWxkRmFpbCkge30KK1RFU1RfRihNaXhlZFVwVGVzdENhc2VUZXN0LCBUaGlz
U2hvdWxkRmFpbFRvbykge30KKworY2xhc3MgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFt
ZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCisvLyBFeHBlY3RlZCB0byBmYWls
LiAgV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gY2hlY2sgdGhhdCBHb29nbGUgVGVzdAor
Ly8gZ2VuZXJhdGVzIHRoZSByaWdodCBlcnJvciBtZXNzYWdlLgorVEVTVF9GKE1peGVkVXBUZXN0
Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAorICAgICAgIFRoZVNlY29uZFRlc3RXaXRoVGhpc05h
bWVTaG91bGRGYWlsKSB7fQorCit9ICAvLyBuYW1lc3BhY2UgYmFyCisKKy8vIFRoZSBmb2xsb3dp
bmcgdHdvIHRlc3QgY2FzZXMgdmVyaWZ5IHRoYXQgR29vZ2xlIFRlc3QgY2F0Y2hlcyB0aGUgdXNl
cgorLy8gZXJyb3Igb2YgbWl4aW5nIFRFU1QgYW5kIFRFU1RfRiBpbiB0aGUgc2FtZSB0ZXN0IGNh
c2UuICBUaGUgZmlyc3QKKy8vIHRlc3QgY2FzZSBjaGVja3MgdGhlIHNjZW5hcmlvIHdoZXJlIFRF
U1RfRiBhcHBlYXJzIGJlZm9yZSBURVNULCBhbmQKKy8vIHRoZSBzZWNvbmQgb25lIGNoZWNrcyB3
aGVyZSBURVNUIGFwcGVhcnMgYmVmb3JlIFRFU1RfRi4KKworY2xhc3MgVEVTVF9GX2JlZm9yZV9U
RVNUX2luX3NhbWVfdGVzdF9jYXNlIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKworVEVT
VF9GKFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSwgRGVmaW5lZFVzaW5nVEVT
VF9GKSB7fQorCisvLyBFeHBlY3RlZCB0byBmYWlsLiAgV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZp
bGUgdG8gY2hlY2sgdGhhdCBHb29nbGUgVGVzdAorLy8gZ2VuZXJhdGVzIHRoZSByaWdodCBlcnJv
ciBtZXNzYWdlLgorVEVTVChURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UsIERl
ZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsKSB7fQorCitjbGFzcyBURVNUX2JlZm9yZV9URVNU
X0ZfaW5fc2FtZV90ZXN0X2Nhc2UgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitURVNU
KFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZSwgRGVmaW5lZFVzaW5nVEVTVCkg
e30KKworLy8gRXhwZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRv
IGNoZWNrIHRoYXQgR29vZ2xlIFRlc3QKKy8vIGdlbmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVz
c2FnZS4KK1RFU1RfRihURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UsIERlZmlu
ZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwpIHsKK30KKworLy8gVXNlZCBmb3IgdGVzdGluZyBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGFuZCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpLgoraW50
IGdsb2JhbF9pbnRlZ2VyID0gMDsKKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSgpIGNhbiByZWZlcmVuY2UgZ2xvYmFsIHZhcmlhYmxlcy4KK1RFU1QoRXhwZWN0Tm9uZmF0
YWxGYWlsdXJlVGVzdCwgQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzKSB7CisgIGdsb2JhbF9p
bnRlZ2VyID0gMDsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIEVYUEVDVF9FUSgx
LCBnbG9iYWxfaW50ZWdlcikgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7CisgIH0s
ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVuY2UgbG9jYWwgdmFyaWFibGVzCisvLyAo
c3RhdGljIG9yIG5vdCkuCitURVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIENhblJlZmVy
ZW5jZUxvY2FsVmFyaWFibGVzKSB7CisgIGludCBtID0gMDsKKyAgc3RhdGljIGludCBuOworICBu
ID0gMTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIEVYUEVDVF9FUShtLCBuKSA8
PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKKyAgfSwgIkV4cGVjdGVkIG5vbi1mYXRh
bCBmYWlsdXJlLiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KCkgc3VjY2VlZHMgd2hlbiB0aGVyZSBpcyBleGFjdGx5CisvLyBvbmUgbm9uLWZhdGFsIGZhaWx1
cmUgYW5kIG5vIGZhdGFsIGZhaWx1cmUuCitURVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qs
IFN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUpIHsKKyAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBm
YWlsdXJlLiI7CisgIH0sICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKK30KKworLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgaXMg
bm8KKy8vIG5vbi1mYXRhbCBmYWlsdXJlLgorVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LCBGYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUpIHsKKyAgcHJpbnRmKCIoZXhwZWN0
aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgIH0sICIi
KTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdo
ZW4gdGhlcmUgYXJlIHR3bworLy8gbm9uLWZhdGFsIGZhaWx1cmVzLgorVEVTVChFeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMpIHsK
KyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRSh7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUgMS4iOworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
IDIuIjsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBvbmUgZmF0YWwKKy8vIGZhaWx1cmUuCitURVNUKEV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUp
IHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSh7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7Cisg
IH0sICIiKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZh
aWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWluZworLy8gdGVzdGVkIHJldHVybnMuCitURVNUKEV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblN0YXRlbWVudFJldHVybnMpIHsKKyAg
cHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSh7CisgICAgcmV0dXJuOworICB9LCAiIik7Cit9CisKKyNpZiBHVEVTVF9IQVNfRVhDRVBU
SU9OUworCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hl
biB0aGUgc3RhdGVtZW50IGJlaW5nCisvLyB0ZXN0ZWQgdGhyb3dzLgorVEVTVChFeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MpIHsKKyAgcHJpbnRmKCIo
ZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICB0cnkgeworICAgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKHsKKyAgICAgIHRocm93IDA7CisgICAgfSwgIiIpOworICB9IGNhdGNoKGludCkgeyAg
Ly8gTk9MSU5UCisgIH0KK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisv
LyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgY2FuIHJlZmVyZW5jZSBnbG9iYWwg
dmFyaWFibGVzLgorVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBDYW5SZWZlcmVuY2VHbG9i
YWxWYXJpYWJsZXMpIHsKKyAgZ2xvYmFsX2ludGVnZXIgPSAwOworICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRSh7CisgICAgQVNTRVJUX0VRKDEsIGdsb2JhbF9pbnRlZ2VyKSA8PCAiRXhwZWN0ZWQgZmF0
YWwgZmFpbHVyZS4iOworICB9LCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKK30KKworLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVuY2UgbG9jYWwgc3Rh
dGljCisvLyB2YXJpYWJsZXMuCitURVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIENhblJlZmVy
ZW5jZUxvY2FsU3RhdGljVmFyaWFibGVzKSB7CisgIHN0YXRpYyBpbnQgbjsKKyAgbiA9IDE7Cisg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKKyAgICBBU1NFUlRfRVEoMCwgbikgPDwgIkV4cGVjdGVk
IGZhdGFsIGZhaWx1cmUuIjsKKyAgfSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Cit9CisK
Ky8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBzdWNjZWVkcyB3aGVuIHRoZXJl
IGlzIGV4YWN0bHkKKy8vIG9uZSBmYXRhbCBmYWlsdXJlIGFuZCBubyBub24tZmF0YWwgZmFpbHVy
ZS4KK1RFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgU3VjY2VlZHNXaGVuVGhlcmVJc09uZUZh
dGFsRmFpbHVyZSkgeworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CisgICAgRkFJTCgpIDw8ICJF
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7CisgIH0sICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIp
OworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0
aGVyZSBpcyBubyBmYXRhbAorLy8gZmFpbHVyZS4KK1RFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVz
dCwgRmFpbHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlKSB7CisgIHByaW50ZigiKGV4cGVjdGlu
ZyBhIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeworICB9LCAiIik7Cit9
CisKKy8vIEEgaGVscGVyIGZvciBnZW5lcmF0aW5nIGEgZmF0YWwgZmFpbHVyZS4KK3ZvaWQgRmF0
YWxGYWlsdXJlKCkgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKK30K
KworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUg
YXJlIHR3bworLy8gZmF0YWwgZmFpbHVyZXMuCitURVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qs
IEZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcykgeworICBwcmludGYoIihleHBlY3Rp
bmcgYSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKKyAgICBGYXRhbEZh
aWx1cmUoKTsKKyAgICBGYXRhbEZhaWx1cmUoKTsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyB0
aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBvbmUgbm9uLWZh
dGFsCisvLyBmYWlsdXJlLgorVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5U
aGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlKSB7CisgIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1
cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeworICAgIEFERF9GQUlMVVJFKCkgPDwg
IkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMg
dGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWlu
ZworLy8gdGVzdGVkIHJldHVybnMuCitURVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEZhaWxz
V2hlblN0YXRlbWVudFJldHVybnMpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlc
biIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CisgICAgcmV0dXJuOworICB9LCAiIik7Cit9
CisKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRB
TF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGUgc3RhdGVtZW50IGJlaW5nCisvLyB0ZXN0ZWQgdGhy
b3dzLgorVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRUaHJv
d3MpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICB0cnkgeworICAg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKKyAgICAgIHRocm93IDA7CisgICAgfSwgIiIpOworICB9
IGNhdGNoKGludCkgeyAgLy8gTk9MSU5UCisgIH0KK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNf
RVhDRVBUSU9OUworCisvLyBUaGlzICNpZmRlZiBibG9jayB0ZXN0cyB0aGUgb3V0cHV0IG9mIHZh
bHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCisKK3N0ZDo6c3RyaW5nIFBhcmFtTmFtZUZ1bmMoY29u
c3QgdGVzdGluZzo6VGVzdFBhcmFtSW5mbzxzdGQ6OnN0cmluZz4mIGluZm8pIHsKKyAgcmV0dXJu
IGluZm8ucGFyYW07Cit9CisKK2NsYXNzIFBhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
V2l0aFBhcmFtPHN0ZDo6c3RyaW5nPiB7Cit9OworCitURVNUX1AoUGFyYW1UZXN0LCBTdWNjZXNz
KSB7CisgIEVYUEVDVF9FUSgiYSIsIEdldFBhcmFtKCkpOworfQorCitURVNUX1AoUGFyYW1UZXN0
LCBGYWlsdXJlKSB7CisgIEVYUEVDVF9FUSgiYiIsIEdldFBhcmFtKCkpIDw8ICJFeHBlY3RlZCBm
YWlsdXJlIjsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoUHJpbnRpbmdTdHJpbmdzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1UZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdGluZzo6VmFsdWVzKHN0ZDo6c3RyaW5nKCJhIikpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgUGFyYW1OYW1lRnVuYyk7CisKKy8vIFRoaXMgI2lmZGVmIGJsb2NrIHRlc3RzIHRoZSBv
dXRwdXQgb2YgdHlwZWQgdGVzdHMuCisjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlZFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
Cit9OworCitUWVBFRF9URVNUX0NBU0UoVHlwZWRUZXN0LCB0ZXN0aW5nOjpUeXBlczxpbnQ+KTsK
KworVFlQRURfVEVTVChUeXBlZFRlc3QsIFN1Y2Nlc3MpIHsKKyAgRVhQRUNUX0VRKDAsIFR5cGVQ
YXJhbSgpKTsKK30KKworVFlQRURfVEVTVChUeXBlZFRlc3QsIEZhaWx1cmUpIHsKKyAgRVhQRUNU
X0VRKDEsIFR5cGVQYXJhbSgpKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7Cit9CisKK3R5cGVkZWYg
dGVzdGluZzo6VHlwZXM8Y2hhciwgaW50PiBUeXBlc0ZvclRlc3RXaXRoTmFtZXM7CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZWRUZXN0V2l0aE5hbWVzIDogcHVibGljIHRlc3Rp
bmc6OlRlc3Qge307CisKK2NsYXNzIFR5cGVkVGVzdE5hbWVzIHsKKyBwdWJsaWM6CisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICBzdGF0aWMgc3RkOjpzdHJpbmcgR2V0TmFtZShpbnQgaSkgewor
ICAgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFQsIGNoYXI+Ojp2YWx1ZSkKKyAgICAg
IHJldHVybiBzdGQ6OnN0cmluZygiY2hhciIpICsgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGkp
OworICAgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFQsIGludD46OnZhbHVlKQorICAg
ICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCJpbnQiKSArIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhp
KTsKKyAgfQorfTsKKworVFlQRURfVEVTVF9DQVNFKFR5cGVkVGVzdFdpdGhOYW1lcywgVHlwZXNG
b3JUZXN0V2l0aE5hbWVzLCBUeXBlZFRlc3ROYW1lcyk7CisKK1RZUEVEX1RFU1QoVHlwZWRUZXN0
V2l0aE5hbWVzLCBTdWNjZXNzKSB7fQorCitUWVBFRF9URVNUKFR5cGVkVGVzdFdpdGhOYW1lcywg
RmFpbHVyZSkgeyBGQUlMKCk7IH0KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAor
CisvLyBUaGlzICNpZmRlZiBibG9jayB0ZXN0cyB0aGUgb3V0cHV0IG9mIHR5cGUtcGFyYW1ldGVy
aXplZCB0ZXN0cy4KKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgorY2xhc3MgVHlwZWRUZXN0UCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisK
K1RZUEVEX1RFU1RfQ0FTRV9QKFR5cGVkVGVzdFApOworCitUWVBFRF9URVNUX1AoVHlwZWRUZXN0
UCwgU3VjY2VzcykgeworICBFWFBFQ1RfRVEoMFUsIFR5cGVQYXJhbSgpKTsKK30KKworVFlQRURf
VEVTVF9QKFR5cGVkVGVzdFAsIEZhaWx1cmUpIHsKKyAgRVhQRUNUX0VRKDFVLCBUeXBlUGFyYW0o
KSkgPDwgIkV4cGVjdGVkIGZhaWx1cmUiOworfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0Vf
UChUeXBlZFRlc3RQLCBTdWNjZXNzLCBGYWlsdXJlKTsKKwordHlwZWRlZiB0ZXN0aW5nOjpUeXBl
czx1bnNpZ25lZCBjaGFyLCB1bnNpZ25lZCBpbnQ+IFVuc2lnbmVkVHlwZXM7CitJTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUChVbnNpZ25lZCwgVHlwZWRUZXN0UCwgVW5zaWduZWRUeXBlcyk7
CisKK2NsYXNzIFR5cGVkVGVzdFBOYW1lcyB7CisgcHVibGljOgorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldE5hbWUoaW50IGkpIHsKKyAgICBpZiAodGVz
dGluZzo6aW50ZXJuYWw6OklzU2FtZTxULCB1bnNpZ25lZCBjaGFyPjo6dmFsdWUpIHsKKyAgICAg
IHJldHVybiBzdGQ6OnN0cmluZygidW5zaWduZWRDaGFyIikgKyA6OnRlc3Rpbmc6OlByaW50VG9T
dHJpbmcoaSk7CisgICAgfQorICAgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFQsIHVu
c2lnbmVkIGludD46OnZhbHVlKSB7CisgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoInVuc2lnbmVk
SW50IikgKyA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoaSk7CisgICAgfQorICB9Cit9OworCitJ
TlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChVbnNpZ25lZEN1c3RvbU5hbWUsIFR5cGVkVGVz
dFAsIFVuc2lnbmVkVHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlZFRl
c3RQTmFtZXMpOworCisjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUX1AKKworI2lmIEdU
RVNUX0hBU19ERUFUSF9URVNUCisKKy8vIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIHZl
cmlmeSB0aGF0IHRlc3RzIHdob3NlIHRlc3QgY2FzZQorLy8gbmFtZSBlbmRzIHdpdGggRGVhdGhU
ZXN0IGFyZSBydW4gZmlyc3QuCisKK1RFU1QoQURlYXRoVGVzdCwgU2hvdWxkUnVuRmlyc3QpIHsK
K30KKworIyBpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAorCisvLyBXZSByZWx5IG9uIHRoZSBnb2xk
ZW4gZmlsZSB0byB2ZXJpZnkgdGhhdCB0eXBlZCB0ZXN0cyB3aG9zZSB0ZXN0CisvLyBjYXNlIG5h
bWUgZW5kcyB3aXRoIERlYXRoVGVzdCBhcmUgcnVuIGZpcnN0LgorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK2NsYXNzIEFUeXBlZERlYXRoVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307
CisKK3R5cGVkZWYgdGVzdGluZzo6VHlwZXM8aW50LCBkb3VibGU+IE51bWVyaWNUeXBlczsKK1RZ
UEVEX1RFU1RfQ0FTRShBVHlwZWREZWF0aFRlc3QsIE51bWVyaWNUeXBlcyk7CisKK1RZUEVEX1RF
U1QoQVR5cGVkRGVhdGhUZXN0LCBTaG91bGRSdW5GaXJzdCkgeworfQorCisjIGVuZGlmICAvLyBH
VEVTVF9IQVNfVFlQRURfVEVTVAorCisjIGlmIEdURVNUX0hBU19UWVBFRF9URVNUX1AKKworCisv
LyBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmlsZSB0byB2ZXJpZnkgdGhhdCB0eXBlLXBhcmFtZXRl
cml6ZWQgdGVzdHMKKy8vIHdob3NlIHRlc3QgY2FzZSBuYW1lIGVuZHMgd2l0aCBEZWF0aFRlc3Qg
YXJlIHJ1biBmaXJzdC4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBBVHlwZVBhcmFt
RGVhdGhUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKworVFlQRURfVEVTVF9DQVNF
X1AoQVR5cGVQYXJhbURlYXRoVGVzdCk7CisKK1RZUEVEX1RFU1RfUChBVHlwZVBhcmFtRGVhdGhU
ZXN0LCBTaG91bGRSdW5GaXJzdCkgeworfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChB
VHlwZVBhcmFtRGVhdGhUZXN0LCBTaG91bGRSdW5GaXJzdCk7CisKK0lOU1RBTlRJQVRFX1RZUEVE
X1RFU1RfQ0FTRV9QKE15LCBBVHlwZVBhcmFtRGVhdGhUZXN0LCBOdW1lcmljVHlwZXMpOworCisj
IGVuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisKKyNlbmRpZiAgLy8gR1RFU1RfSEFT
X0RFQVRIX1RFU1QKKworLy8gVGVzdHMgdmFyaW91cyBmYWlsdXJlIGNvbmRpdGlvbnMgb2YKKy8v
IEVYUEVDVF97LE5PTn1GQVRBTF9GQUlMVVJFeyxfT05fQUxMX1RIUkVBRFN9LgorY2xhc3MgRXhw
ZWN0RmFpbHVyZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHVibGljOiAgLy8gTXVz
dCBiZSBwdWJsaWMgYW5kIG5vdCBwcm90ZWN0ZWQgZHVlIHRvIGEgYnVnIGluIGcrKyAzLjQuMi4K
KyAgZW51bSBGYWlsdXJlTW9kZSB7CisgICAgRkFUQUxfRkFJTFVSRSwKKyAgICBOT05GQVRBTF9G
QUlMVVJFCisgIH07CisgIHN0YXRpYyB2b2lkIEFkZEZhaWx1cmUoRmFpbHVyZU1vZGUgZmFpbHVy
ZSkgeworICAgIGlmIChmYWlsdXJlID09IEZBVEFMX0ZBSUxVUkUpIHsKKyAgICAgIEZBSUwoKSA8
PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOworICAgIH0gZWxzZSB7CisgICAgICBBRERfRkFJ
TFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOworICAgIH0KKyAgfQorfTsK
KworVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3RGYXRhbEZhaWx1cmUpIHsKKyAgLy8g
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0IHN1Y2NlZWRzLgorICBwcmludGYoIihleHBlY3Rp
bmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKFNVQ0NFRUQoKSwgIkV4
cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7CisgIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1
dCBnb3QgYSBub24tZmF0YWwgZmFpbHVyZS4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVy
ZSlcbiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxV
UkUpLCAiRXhwZWN0ZWQgbm9uLWZhdGFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgImZhaWx1
cmUuIik7CisgIC8vIFdyb25nIG1lc3NhZ2UuCisgIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1
cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJF
KSwgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSAiCisgICAgICAgICAgICAgICAgICAgICAgICJl
eHBlY3RlZC4iKTsKK30KKworVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3ROb25GYXRh
bEZhaWx1cmUpIHsKKyAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVk
cy4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShTVUNDRUVEKCksICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKKyAg
Ly8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBmYXRhbCBmYWlsdXJlLgor
ICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJl
LiIpOworICAvLyBXcm9uZyBtZXNzYWdlLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJl
KVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJ
TFVSRSksICJTb21lIG90aGVyIG5vbi1mYXRhbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJmYWlsdXJlLiIpOworfQorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorCitjbGFzcyBFeHBl
Y3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0IDogcHVibGljIEV4cGVjdEZhaWx1cmVUZXN0IHsKKyBw
cm90ZWN0ZWQ6CisgIHN0YXRpYyB2b2lkIEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZhaWx1cmVN
b2RlIGZhaWx1cmUpIHsKKyAgICBUaHJlYWRXaXRoUGFyYW08RmFpbHVyZU1vZGU+IHRocmVhZCgm
QWRkRmFpbHVyZSwgZmFpbHVyZSwgTlVMTCk7CisgICAgdGhyZWFkLkpvaW4oKTsKKyAgfQorfTsK
KworVEVTVF9GKEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QsIEV4cGVjdEZhdGFsRmFpbHVy
ZSkgeworICAvLyBXZSBvbmx5IGludGVyY2VwdCB0aGUgY3VycmVudCB0aHJlYWQuCisgIHByaW50
ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFk
ZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZBVEFMX0ZBSUxVUkUpLAorICAgICAgICAgICAgICAgICAg
ICAgICAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKK30KKworVEVTVF9GKEV4cGVjdEZhaWx1
cmVXaXRoVGhyZWFkc1Rlc3QsIEV4cGVjdE5vbkZhdGFsRmFpbHVyZSkgeworICAvLyBXZSBvbmx5
IGludGVyY2VwdCB0aGUgY3VycmVudCB0aHJlYWQuCisgIHByaW50ZigiKGV4cGVjdGluZyAyIGZh
aWx1cmVzKVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmVJbk90aGVy
VGhyZWFkKE5PTkZBVEFMX0ZBSUxVUkUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhw
ZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7Cit9CisKK3R5cGVkZWYgRXhwZWN0RmFpbHVyZVdp
dGhUaHJlYWRzVGVzdCBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3Q7CisKKy8v
IFRlc3RzIHRoYXQgdGhlIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyIG9ubHkgY2F0
Y2hlcyBmYWlsdXJlcyBmcm9tCisvLyB0aGUgY3VycmVudCB0aHJlYWQgaWYgaXQgaXMgaW5zdGFu
dGlhdGVkIHdpdGggSU5URVJDRVBUX09OTFlfQ1VSUkVOVF9USFJFQUQuCitURVNUX0YoU2NvcGVk
RmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LCBJbnRlcmNlcHRPbmx5Q3VycmVudFRocmVh
ZCkgeworICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOworICBUZXN0UGFydFJl
c3VsdEFycmF5IHJlc3VsdHM7CisgIHsKKyAgICBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBv
cnRlciByZXBvcnRlcigKKyAgICAgICAgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6
OklOVEVSQ0VQVF9PTkxZX0NVUlJFTlRfVEhSRUFELAorICAgICAgICAmcmVzdWx0cyk7CisgICAg
QWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoRkFUQUxfRkFJTFVSRSk7CisgICAgQWRkRmFpbHVyZUlu
T3RoZXJUaHJlYWQoTk9ORkFUQUxfRkFJTFVSRSk7CisgIH0KKyAgLy8gVGhlIHR3byBmYWlsdXJl
cyBzaG91bGQgbm90IGhhdmUgYmVlbiBpbnRlcmNlcHRlZC4KKyAgRVhQRUNUX0VRKDAsIHJlc3Vs
dHMuc2l6ZSgpKSA8PCAiVGhpcyBzaG91bGRuJ3QgZmFpbC4iOworfQorCisjZW5kaWYgIC8vIEdU
RVNUX0lTX1RIUkVBRFNBRkUKKworVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3RGYXRh
bEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKKyAgLy8gRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0
IHN1Y2NlZWRzLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVD
VF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKFNVQ0NFRUQoKSwgIkV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuIik7CisgIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBub24t
ZmF0YWwgZmFpbHVyZS4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlKE5PTkZBVEFMX0ZB
SUxVUkUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQg
bm9uLWZhdGFsIGZhaWx1cmUuIik7CisgIC8vIFdyb25nIG1lc3NhZ2UuCisgIHByaW50ZigiKGV4
cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RI
UkVBRFMoQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJFKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBlY3RlZC4iKTsKK30K
KworVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRo
cmVhZHMpIHsKKyAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4K
KyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRV9PTl9BTExfVEhSRUFEUyhTVUNDRUVEKCksICJFeHBlY3RlZCBub24tZmF0YWwgIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbHVyZS4iKTsKKyAg
Ly8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBmYXRhbCBmYWlsdXJlLgor
ICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJl
LiIpOworICAvLyBXcm9uZyBtZXNzYWdlLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJl
KVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1
cmUoTk9ORkFUQUxfRkFJTFVSRSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJTb21lIG90aGVyIG5vbi1mYXRhbCBmYWlsdXJlLiIpOworfQorCisKKy8vIFR3byB0
ZXN0IGVudmlyb25tZW50cyBmb3IgdGVzdGluZyB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJv
bm1lbnQoKS4KKworY2xhc3MgRm9vRW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6RW52aXJv
bm1lbnQgeworIHB1YmxpYzoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIHByaW50Zigi
JXMiLCAiRm9vRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLlxuIik7CisgIH0KKworICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgcHJpbnRmKCIlcyIsICJGb29FbnZpcm9ubWVudDo6
VGVhckRvd24oKSBjYWxsZWQuXG4iKTsKKyAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZh
aWx1cmUuIjsKKyAgfQorfTsKKworY2xhc3MgQmFyRW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGlu
Zzo6RW52aXJvbm1lbnQgeworIHB1YmxpYzoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAg
IHByaW50ZigiJXMiLCAiQmFyRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLlxuIik7CisgIH0K
KworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgcHJpbnRmKCIlcyIsICJCYXJFbnZp
cm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuXG4iKTsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJF
eHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOworICB9Cit9OworCisvLyBUaGUgbWFpbiBmdW5j
dGlvbi4KKy8vCisvLyBUaGUgaWRlYSBpcyB0byB1c2UgR29vZ2xlIFRlc3QgdG8gcnVuIGFsbCB0
aGUgdGVzdHMgd2UgaGF2ZSBkZWZpbmVkIChzb21lCisvLyBvZiB0aGVtIGFyZSBpbnRlbmRlZCB0
byBmYWlsKSwgYW5kIHRoZW4gY29tcGFyZSB0aGUgdGVzdCByZXN1bHRzCisvLyB3aXRoIHRoZSAi
Z29sZGVuIiBmaWxlLgoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIHRlc3Rp
bmc6OkdURVNUX0ZMQUcocHJpbnRfdGltZSkgPSBmYWxzZTsKKworICAvLyBXZSBqdXN0IHJ1biB0
aGUgdGVzdHMsIGtub3dpbmcgc29tZSBvZiB0aGVtIGFyZSBpbnRlbmRlZCB0byBmYWlsLgorICAv
LyBXZSB3aWxsIHVzZSBhIHNlcGFyYXRlIFB5dGhvbiBzY3JpcHQgdG8gY29tcGFyZSB0aGUgb3V0
cHV0IG9mCisgIC8vIHRoaXMgcHJvZ3JhbSB3aXRoIHRoZSBnb2xkZW4gZmlsZS4KKworICAvLyBJ
dCdzIGhhcmQgdG8gdGVzdCBJbml0R29vZ2xlVGVzdCgpIGRpcmVjdGx5LCBhcyBpdCBoYXMgbWFu
eQorICAvLyBnbG9iYWwgc2lkZSBlZmZlY3RzLiAgVGhlIGZvbGxvd2luZyBsaW5lIHNlcnZlcyBh
cyBhIHNhbml0eSB0ZXN0CisgIC8vIGZvciBpdC4KKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3Qo
JmFyZ2MsIGFyZ3YpOworICBib29sIGludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hv
Y190ZXN0cyA9CisgICAgICBzdGQ6OmNvdW50KGFyZ3YsIGFyZ3YgKyBhcmdjLAorICAgICAgICAg
ICAgICAgICBzdGQ6OnN0cmluZygiaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9j
X3Rlc3RzIikpID4gMDsKKworI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCisgIGlmICh0ZXN0aW5n
OjppbnRlcm5hbDo6R1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkgIT0gIiIpIHsK
KyAgICAvLyBTa2lwIHRoZSB1c3VhbCBvdXRwdXQgY2FwdHVyaW5nIGlmIHdlJ3JlIHJ1bm5pbmcg
YXMgdGhlIGNoaWxkCisgICAgLy8gcHJvY2VzcyBvZiBhbiB0aHJlYWRzYWZlLXN0eWxlIGRlYXRo
IHRlc3QuCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKyAgICBwb3NpeDo6RlJlb3BlbigibnVsOiIs
ICJ3Iiwgc3Rkb3V0KTsKKyMgZWxzZQorICAgIHBvc2l4OjpGUmVvcGVuKCIvZGV2L251bGwiLCAi
dyIsIHN0ZG91dCk7CisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisgICAgcmV0dXJuIFJV
Tl9BTExfVEVTVFMoKTsKKyAgfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisg
IGlmIChpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMpCisgICAgcmV0
dXJuIFJVTl9BTExfVEVTVFMoKTsKKworICAvLyBSZWdpc3RlcnMgdHdvIGdsb2JhbCB0ZXN0IGVu
dmlyb25tZW50cy4KKyAgLy8gVGhlIGdvbGRlbiBmaWxlIHZlcmlmaWVzIHRoYXQgdGhleSBhcmUg
c2V0IHVwIGluIHRoZSBvcmRlciB0aGV5CisgIC8vIGFyZSByZWdpc3RlcmVkLCBhbmQgdG9ybiBk
b3duIGluIHRoZSByZXZlcnNlIG9yZGVyLgorICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJv
bm1lbnQobmV3IEZvb0Vudmlyb25tZW50KTsKKyAgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmly
b25tZW50KG5ldyBCYXJFbnZpcm9ubWVudCk7CisjaWYgX01TQ19WRVIKK0dURVNUX0RJU0FCTEVf
TVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQxMjcKKyNlbmRpZiAgLy8gIF9NU0NfVkVSCisgIHJl
dHVybiBSdW5BbGxUZXN0cygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMS10ZXN0LnB5IGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1u
YW1lMS10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhMDg0NzdhNzdlYmRmMGFhNTVmMjM0NDRhYmQ2Yjgz
OWQ5MGJhNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3QucHkKQEAgLTAsMCArMSw2
MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJWZXJpZmll
cyB0aGF0IEdvb2dsZSBUZXN0IHdhcm5zIHRoZSB1c2VyIHdoZW4gbm90IGluaXRpYWxpemVkIHBy
b3Blcmx5LiIiIgorCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitiaW5hcnlfbmFtZSA9ICdn
b29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMS10ZXN0XycKK0NPTU1BTkQgPSBndGVz
dF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aChiaW5hcnlfbmFtZSkKKworCitkZWYg
QXNzZXJ0KGNvbmRpdGlvbik6CisgIGlmIG5vdCBjb25kaXRpb246CisgICAgcmFpc2UgQXNzZXJ0
aW9uRXJyb3IKKworCitkZWYgVGVzdEV4aXRDb2RlQW5kT3V0cHV0KGNvbW1hbmQpOgorICAiIiJS
dW5zIHRoZSBnaXZlbiBjb21tYW5kIGFuZCB2ZXJpZmllcyBpdHMgZXhpdCBjb2RlIGFuZCBvdXRw
dXQuIiIiCisKKyAgZXJyID0gKCdQYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSBcJyJJbnZhbGlkV2l0
aFF1b3RlcyJcJyBpcyBpbnZhbGlkJykKKworICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9j
ZXNzKGNvbW1hbmQpCisgIEFzc2VydChwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsKQorCisgICMgVmVy
aWZ5IHRoZSBvdXRwdXQgbWVzc2FnZSBjb250YWlucyBhcHByb3ByaWF0ZSBvdXRwdXQKKyAgQXNz
ZXJ0KGVyciBpbiBwLm91dHB1dCkKKworCitjbGFzcyBHVGVzdFBhcmFtVGVzdEludmFsaWROYW1l
MVRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisKKyAgZGVmIHRlc3RFeGl0Q29kZUFu
ZE91dHB1dChzZWxmKToKKyAgICBUZXN0RXhpdENvZGVBbmRPdXRwdXQoQ09NTUFORCkKKworCitp
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRl
c3QtaW52YWxpZC1uYW1lMS10ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdF8uY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWE5NTE1NWIyM2E3ODcxZGI1ZDI1NDlhMGU5ZjkwNTA3NWE5Mzk5NAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWlu
dmFsaWQtbmFtZTEtdGVzdF8uY2MKQEAgLTAsMCArMSw1MCBAQAorLy8gQ29weXJpZ2h0IDIwMTUs
IEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgor
CituYW1lc3BhY2UgeworY2xhc3MgRHVtbXlUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdp
dGhQYXJhbTxjb25zdCBjaGFyICo+IHt9OworCitURVNUX1AoRHVtbXlUZXN0LCBEdW1teSkgewor
fQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChJbnZhbGlkVGVzdE5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICBEdW1teVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rp
bmc6OlZhbHVlcygiSW52YWxpZFdpdGhRdW90ZXMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgpKTsKKworfSAgLy8gbmFtZXNwYWNl
CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAgdGVzdGluZzo6SW5pdEdv
b2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0t
dGVzdC1pbnZhbGlkLW5hbWUyLXRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRlc3QucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YWI4MzhmNDYzMjI5MWQxY2I3OGU0YTExZWMzYWIwYzc3M2I5NGQ1YwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWlu
dmFsaWQtbmFtZTItdGVzdC5weQpAQCAtMCwwICsxLDYyIEBACisjIS91c3IvYmluL2VudiBweXRo
b24KKyMKKyMgQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3Qgd2FybnMg
dGhlIHVzZXIgd2hlbiBub3QgaW5pdGlhbGl6ZWQgcHJvcGVybHkuIiIiCisKK2ltcG9ydCBndGVz
dF90ZXN0X3V0aWxzCisKK2JpbmFyeV9uYW1lID0gJ2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZh
bGlkLW5hbWUyLXRlc3RfJworQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1
dGFibGVQYXRoKGJpbmFyeV9uYW1lKQorCisKK2RlZiBBc3NlcnQoY29uZGl0aW9uKToKKyAgaWYg
bm90IGNvbmRpdGlvbjoKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCisKK2RlZiBUZXN0RXhp
dENvZGVBbmRPdXRwdXQoY29tbWFuZCk6CisgICIiIlJ1bnMgdGhlIGdpdmVuIGNvbW1hbmQgYW5k
IHZlcmlmaWVzIGl0cyBleGl0IGNvZGUgYW5kIG91dHB1dC4iIiIKKworICBlcnIgPSAoJ0R1cGxp
Y2F0ZSBwYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSBcJ2FcJycpCisKKyAgcCA9IGd0ZXN0X3Rlc3Rf
dXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kKQorICBBc3NlcnQocC50ZXJtaW5hdGVkX2J5X3NpZ25h
bCkKKworICAjIENoZWNrIGZvciBhcHByb3ByaWF0ZSBvdXRwdXQKKyAgQXNzZXJ0KGVyciBpbiBw
Lm91dHB1dCkKKworCitjbGFzcyBHVGVzdFBhcmFtVGVzdEludmFsaWROYW1lMlRlc3QoZ3Rlc3Rf
dGVzdF91dGlscy5UZXN0Q2FzZSk6CisKKyAgZGVmIHRlc3RFeGl0Q29kZUFuZE91dHB1dChzZWxm
KToKKyAgICBUZXN0RXhpdENvZGVBbmRPdXRwdXQoQ09NTUFORCkKKworaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFt
ZTItdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFy
YW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmMDkzNDkwZTlkYTJm
MDJlZDI4YTJkMDcxMjQ0NWUyNDE3Y2JkYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRl
c3RfLmNjCkBAIC0wLDAgKzEsNTUgQEAKKy8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgor
Ly8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsK
K2NsYXNzIER1bW15VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08Y29uc3Qg
Y2hhciAqPiB7fTsKKworc3RkOjpzdHJpbmcgU3RyaW5nUGFyYW1UZXN0U3VmZml4KAorICAgIGNv
bnN0IHRlc3Rpbmc6OlRlc3RQYXJhbUluZm88Y29uc3QgY2hhcio+JiBpbmZvKSB7CisgIHJldHVy
biBzdGQ6OnN0cmluZyhpbmZvLnBhcmFtKTsKK30KKworVEVTVF9QKER1bW15VGVzdCwgRHVtbXkp
IHsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoRHVwbGljYXRlVGVzdE5hbWVzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgRHVtbXlUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
Ojp0ZXN0aW5nOjpWYWx1ZXMoImEiLCAiYiIsICJhIiwgImMiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFN0cmluZ1BhcmFtVGVzdFN1ZmZpeCk7Cit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgm
YXJnYywgYXJndik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CisKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0
LXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc4OWNhYjI3MDc0MTRjNDY0ODQ5NmQ3YjlmYmFiNGZlNTMx
ZjBiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MKQEAgLTAsMCArMSwxMTA5IEBACisvLyBDb3B5cmln
aHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8v
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlv
bi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vCisvLyBUZXN0cyBmb3IgR29v
Z2xlIFRlc3QgaXRzZWxmLiBUaGlzIGZpbGUgdmVyaWZpZXMgdGhhdCB0aGUgcGFyYW1ldGVyCisv
LyBnZW5lcmF0b3JzIG9iamVjdHMgcHJvZHVjZSBjb3JyZWN0IHBhcmFtZXRlciBzZXF1ZW5jZXMg
YW5kIHRoYXQKKy8vIEdvb2dsZSBUZXN0IHJ1bnRpbWUgaW5zdGFudGlhdGVzIGNvcnJlY3QgdGVz
dHMgZnJvbSB0aG9zZSBzZXF1ZW5jZXMuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisj
IGluY2x1ZGUgPGFsZ29yaXRobT4KKyMgaW5jbHVkZSA8aW9zdHJlYW0+CisjIGluY2x1ZGUgPGxp
c3Q+CisjIGluY2x1ZGUgPHNzdHJlYW0+CisjIGluY2x1ZGUgPHN0cmluZz4KKyMgaW5jbHVkZSA8
dmVjdG9yPgorCisjIGluY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIgIC8vIGZvciBV
bml0VGVzdE9wdGlvbnMKKyMgaW5jbHVkZSAidGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVz
dC5oIgorCit1c2luZyA6OnN0ZDo6dmVjdG9yOwordXNpbmcgOjpzdGQ6OnNvcnQ7CisKK3VzaW5n
IDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50OwordXNpbmcgOjp0ZXN0aW5nOjpC
b29sOwordXNpbmcgOjp0ZXN0aW5nOjpNZXNzYWdlOwordXNpbmcgOjp0ZXN0aW5nOjpSYW5nZTsK
K3VzaW5nIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTsKK3VzaW5nIDo6dGVzdGluZzo6VmFsdWVz
OwordXNpbmcgOjp0ZXN0aW5nOjpWYWx1ZXNJbjsKKworIyBpZiBHVEVTVF9IQVNfQ09NQklORQor
dXNpbmcgOjp0ZXN0aW5nOjpDb21iaW5lOwordXNpbmcgOjp0ZXN0aW5nOjpnZXQ7Cit1c2luZyA6
OnRlc3Rpbmc6Om1ha2VfdHVwbGU7Cit1c2luZyA6OnRlc3Rpbmc6OnR1cGxlOworIyBlbmRpZiAg
Ly8gR1RFU1RfSEFTX0NPTUJJTkUKKwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1H
ZW5lcmF0b3I7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml0VGVzdE9wdGlvbnM7CisK
Ky8vIFByaW50cyBhIHZhbHVlIHRvIGEgc3RyaW5nLgorLy8KKy8vIEZJWE1FOiByZW1vdmUgUHJp
bnRWYWx1ZSgpIHdoZW4gd2UgbW92ZSBtYXRjaGVycyBhbmQKKy8vIEVYUEVDVF9USEFUKCkgZnJv
bSBHb29nbGUgTW9jayB0byBHb29nbGUgVGVzdC4gIEF0IHRoYXQgdGltZSwgd2UKKy8vIGNhbiB3
cml0ZSBFWFBFQ1RfVEhBVCh4LCBFcSh5KSkgdG8gY29tcGFyZSB0d28gdHVwbGVzIHggYW5kIHks
IGFzCisvLyBFWFBFQ1RfVEhBVCgpIGFuZCB0aGUgbWF0Y2hlcnMga25vdyBob3cgdG8gcHJpbnQg
dHVwbGVzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cis6OnN0ZDo6c3RyaW5nIFByaW50VmFsdWUo
Y29uc3QgVCYgdmFsdWUpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07CisgIHN0cmVh
bSA8PCB2YWx1ZTsKKyAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKK30KKworIyBpZiBHVEVTVF9IQVNf
Q09NQklORQorCisvLyBUaGVzZSBvdmVybG9hZHMgYWxsb3cgcHJpbnRpbmcgdHVwbGVzIGluIG91
ciB0ZXN0cy4gIFdlIGNhbm5vdAorLy8gZGVmaW5lIGFuIG9wZXJhdG9yPDwgZm9yIHR1cGxlcywg
YXMgdGhhdCBkZWZpbml0aW9uIG5lZWRzIHRvIGJlIGluCisvLyB0aGUgc3RkIG5hbWVzcGFjZSBp
biBvcmRlciB0byBiZSBwaWNrZWQgdXAgYnkgR29vZ2xlIFRlc3QgdmlhCisvLyBBcmd1bWVudC1E
ZXBlbmRlbnQgTG9va3VwLCB5ZXQgZGVmaW5pbmcgYW55dGhpbmcgaW4gdGhlIHN0ZAorLy8gbmFt
ZXNwYWNlIGluIG5vbi1TVEwgY29kZSBpcyB1bmRlZmluZWQgYmVoYXZpb3IuCisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cis6OnN0ZDo6c3RyaW5nIFByaW50VmFsdWUoY29u
c3QgdHVwbGU8VDEsIFQyPiYgdmFsdWUpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07
CisgIHN0cmVhbSA8PCAiKCIgPDwgZ2V0PDA+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDwxPih2YWx1
ZSkgPDwgIikiOworICByZXR1cm4gc3RyZWFtLnN0cigpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KKzo6c3RkOjpzdHJpbmcgUHJpbnRWYWx1
ZShjb25zdCB0dXBsZTxUMSwgVDIsIFQzPiYgdmFsdWUpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVh
bSBzdHJlYW07CisgIHN0cmVhbSA8PCAiKCIgPDwgZ2V0PDA+KHZhbHVlKSA8PCAiLCAiIDw8IGdl
dDwxPih2YWx1ZSkKKyAgICAgICAgIDw8ICIsICI8PCBnZXQ8Mj4odmFsdWUpIDw8ICIpIjsKKyAg
cmV0dXJuIHN0cmVhbS5zdHIoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0
eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5h
bWUgVDEwPgorOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKAorICAgIGNvbnN0IHR1cGxlPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD4mIHZhbHVlKSB7CisgIDo6c3RkOjpz
dHJpbmdzdHJlYW0gc3RyZWFtOworICBzdHJlYW0gPDwgIigiIDw8IGdldDwwPih2YWx1ZSkgPDwg
IiwgIiA8PCBnZXQ8MT4odmFsdWUpCisgICAgICAgICA8PCAiLCAiPDwgZ2V0PDI+KHZhbHVlKSA8
PCAiLCAiIDw8IGdldDwzPih2YWx1ZSkKKyAgICAgICAgIDw8ICIsICI8PCBnZXQ8ND4odmFsdWUp
IDw8ICIsICIgPDwgZ2V0PDU+KHZhbHVlKQorICAgICAgICAgPDwgIiwgIjw8IGdldDw2Pih2YWx1
ZSkgPDwgIiwgIiA8PCBnZXQ8Nz4odmFsdWUpCisgICAgICAgICA8PCAiLCAiPDwgZ2V0PDg+KHZh
bHVlKSA8PCAiLCAiIDw8IGdldDw5Pih2YWx1ZSkgPDwgIikiOworICByZXR1cm4gc3RyZWFtLnN0
cigpOworfQorCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQorCisvLyBWZXJpZmllcyB0
aGF0IGEgc2VxdWVuY2UgZ2VuZXJhdGVkIGJ5IHRoZSBnZW5lcmF0b3IgYW5kIGFjY2Vzc2VkCisv
LyB2aWEgdGhlIGl0ZXJhdG9yIG9iamVjdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBvbmUgdXNpbmcg
R29vZ2xlIFRlc3QKKy8vIGFzc2VydGlvbnMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90
IE4+Cit2b2lkIFZlcmlmeUdlbmVyYXRvcihjb25zdCBQYXJhbUdlbmVyYXRvcjxUPiYgZ2VuZXJh
dG9yLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCAoJmV4cGVjdGVkX3ZhbHVlcylbTl0p
IHsKKyAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VD46Oml0ZXJhdG9yIGl0ID0gZ2VuZXJhdG9y
LmJlZ2luKCk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgTjsgKytpKSB7CisgICAgQVNTRVJU
X0ZBTFNFKGl0ID09IGdlbmVyYXRvci5lbmQoKSkKKyAgICAgICAgPDwgIkF0IGVsZW1lbnQgIiA8
PCBpIDw8ICIgd2hlbiBhY2Nlc3NpbmcgdmlhIGFuIGl0ZXJhdG9yICIKKyAgICAgICAgPDwgImNy
ZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rvci5cbiI7CisgICAgLy8gV2UgY2Fubm90IHVz
ZSBFWFBFQ1RfRVEoKSBoZXJlIGFzIHRoZSB2YWx1ZXMgbWF5IGJlIHR1cGxlcywKKyAgICAvLyB3
aGljaCBkb24ndCBzdXBwb3J0IDw8LgorICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkX3ZhbHVlc1tp
XSA9PSAqaXQpCisgICAgICAgIDw8ICJ3aGVyZSBpIGlzICIgPDwgaQorICAgICAgICA8PCAiLCBl
eHBlY3RlZF92YWx1ZXNbaV0gaXMgIiA8PCBQcmludFZhbHVlKGV4cGVjdGVkX3ZhbHVlc1tpXSkK
KyAgICAgICAgPDwgIiwgKml0IGlzICIgPDwgUHJpbnRWYWx1ZSgqaXQpCisgICAgICAgIDw8ICIs
IGFuZCAnaXQnIGlzIGFuIGl0ZXJhdG9yIGNyZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rv
ci5cbiI7CisgICAgKytpdDsKKyAgfQorICBFWFBFQ1RfVFJVRShpdCA9PSBnZW5lcmF0b3IuZW5k
KCkpCisgICAgICAgIDw8ICJBdCB0aGUgcHJlc3VtZWQgZW5kIG9mIHNlcXVlbmNlIHdoZW4gYWNj
ZXNzaW5nIHZpYSBhbiBpdGVyYXRvciAiCisgICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhlIGNv
cHkgY29uc3RydWN0b3IuXG4iOworCisgIC8vIFRlc3QgdGhlIGl0ZXJhdG9yIGFzc2lnbm1lbnQu
IFRoZSBmb2xsb3dpbmcgbGluZXMgdmVyaWZ5IHRoYXQKKyAgLy8gdGhlIHNlcXVlbmNlIGFjY2Vz
c2VkIHZpYSBhbiBpdGVyYXRvciBpbml0aWFsaXplZCB2aWEgdGhlCisgIC8vIGFzc2lnbm1lbnQg
b3BlcmF0b3IgKGFzIG9wcG9zZWQgdG8gYSBjb3B5IGNvbnN0cnVjdG9yKSBtYXRjaGVzCisgIC8v
IGp1c3QgdGhlIHNhbWUuCisgIGl0ID0gZ2VuZXJhdG9yLmJlZ2luKCk7CisgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgTjsgKytpKSB7CisgICAgQVNTRVJUX0ZBTFNFKGl0ID09IGdlbmVyYXRvci5l
bmQoKSkKKyAgICAgICAgPDwgIkF0IGVsZW1lbnQgIiA8PCBpIDw8ICIgd2hlbiBhY2Nlc3Npbmcg
dmlhIGFuIGl0ZXJhdG9yICIKKyAgICAgICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUgYXNzaWdubWVu
dCBvcGVyYXRvci5cbiI7CisgICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWRfdmFsdWVzW2ldID09ICpp
dCkKKyAgICAgICAgPDwgIndoZXJlIGkgaXMgIiA8PCBpCisgICAgICAgIDw8ICIsIGV4cGVjdGVk
X3ZhbHVlc1tpXSBpcyAiIDw8IFByaW50VmFsdWUoZXhwZWN0ZWRfdmFsdWVzW2ldKQorICAgICAg
ICA8PCAiLCAqaXQgaXMgIiA8PCBQcmludFZhbHVlKCppdCkKKyAgICAgICAgPDwgIiwgYW5kICdp
dCcgaXMgYW4gaXRlcmF0b3IgY3JlYXRlZCB3aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9yLlxuIjsK
KyAgICArK2l0OworICB9CisgIEVYUEVDVF9UUlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSkKKyAg
ICAgICAgPDwgIkF0IHRoZSBwcmVzdW1lZCBlbmQgb2Ygc2VxdWVuY2Ugd2hlbiBhY2Nlc3Npbmcg
dmlhIGFuIGl0ZXJhdG9yICIKKyAgICAgICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUgYXNzaWdubWVu
dCBvcGVyYXRvci5cbiI7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBWZXJpZnlH
ZW5lcmF0b3JJc0VtcHR5KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ+JiBnZW5lcmF0b3IpIHsKKyAg
dHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VD46Oml0ZXJhdG9yIGl0ID0gZ2VuZXJhdG9yLmJlZ2lu
KCk7CisgIEVYUEVDVF9UUlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSk7CisKKyAgaXQgPSBnZW5l
cmF0b3IuYmVnaW4oKTsKKyAgRVhQRUNUX1RSVUUoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKTsKK30K
KworLy8gR2VuZXJhdG9yIHRlc3RzLiBUaGV5IHRlc3QgdGhhdCBlYWNoIG9mIHRoZSBwcm92aWRl
ZCBnZW5lcmF0b3IgZnVuY3Rpb25zCisvLyBnZW5lcmF0ZXMgYW4gZXhwZWN0ZWQgc2VxdWVuY2Ug
b2YgdmFsdWVzLiBUaGUgZ2VuZXJhbCB0ZXN0IHBhdHRlcm4KKy8vIGluc3RhbnRpYXRlcyBhIGdl
bmVyYXRvciB1c2luZyBvbmUgb2YgdGhlIGdlbmVyYXRvciBmdW5jdGlvbnMsCisvLyBjaGVja3Mg
dGhlIHNlcXVlbmNlIHByb2R1Y2VkIGJ5IHRoZSBnZW5lcmF0b3IgdXNpbmcgaXRzIGl0ZXJhdG9y
IEFQSSwKKy8vIGFuZCB0aGVuIHJlc2V0cyB0aGUgaXRlcmF0b3IgYmFjayB0byB0aGUgYmVnaW5u
aW5nIG9mIHRoZSBzZXF1ZW5jZQorLy8gYW5kIGNoZWNrcyB0aGUgc2VxdWVuY2UgYWdhaW4uCisK
Ky8vIFRlc3RzIHRoYXQgaXRlcmF0b3JzIHByb2R1Y2VkIGJ5IGdlbmVyYXRvciBmdW5jdGlvbnMg
Y29uZm9ybSB0byB0aGUKKy8vIEZvcndhcmRJdGVyYXRvciBjb25jZXB0LgorVEVTVChJdGVyYXRv
clRlc3QsIFBhcmFtSXRlcmF0b3JDb25mb3Jtc1RvRm9yd2FyZEl0ZXJhdG9yQ29uY2VwdCkgewor
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDEwKTsKKyAgUGFyYW1H
ZW5lcmF0b3I8aW50Pjo6aXRlcmF0b3IgaXQgPSBnZW4uYmVnaW4oKTsKKworICAvLyBWZXJpZmll
cyB0aGF0IGl0ZXJhdG9yIGluaXRpYWxpemF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkLgorICBQYXJh
bUdlbmVyYXRvcjxpbnQ+OjppdGVyYXRvciBpdDIgPSBpdDsKKyAgRVhQRUNUX1RSVUUoKml0ID09
ICppdDIpIDw8ICJJbml0aWFsaXplZCBpdGVyYXRvcnMgbXVzdCBwb2ludCB0byB0aGUgIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgImVsZW1lbnQgc2FtZSBhcyBpdHMgc291cmNlIHBv
aW50cyB0byI7CisKKyAgLy8gVmVyaWZpZXMgdGhhdCBpdGVyYXRvciBhc3NpZ25tZW50IHdvcmtz
IGFzIGV4cGVjdGVkLgorICArK2l0OworICBFWFBFQ1RfRkFMU0UoKml0ID09ICppdDIpOworICBp
dDIgPSBpdDsKKyAgRVhQRUNUX1RSVUUoKml0ID09ICppdDIpIDw8ICJBc3NpZ25lZCBpdGVyYXRv
cnMgbXVzdCBwb2ludCB0byB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgImVs
ZW1lbnQgc2FtZSBhcyBpdHMgc291cmNlIHBvaW50cyB0byI7CisKKyAgLy8gVmVyaWZpZXMgdGhh
dCBwcmVmaXggb3BlcmF0b3IrKygpIHJldHVybnMgKnRoaXMuCisgIEVYUEVDVF9FUSgmaXQsICYo
KytpdCkpIDw8ICJSZXN1bHQgb2YgdGhlIHByZWZpeCBvcGVyYXRvcisrIG11c3QgYmUgIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAicmVmZXIgdG8gdGhlIG9yaWdpbmFsIG9iamVjdCI7
CisKKyAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgcmVzdWx0IG9mIHRoZSBwb3N0Zml4IG9wZXJhdG9y
KysgcG9pbnRzIHRvIHRoZSB2YWx1ZQorICAvLyBwb2ludGVkIHRvIGJ5IHRoZSBvcmlnaW5hbCBp
dGVyYXRvci4KKyAgaW50IG9yaWdpbmFsX3ZhbHVlID0gKml0OyAgLy8gSGF2ZSB0byBjb21wdXRl
IGl0IG91dHNpZGUgb2YgbWFjcm8gY2FsbCB0byBiZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyB1bmFmZmVjdGVkIGJ5IHRoZSBwYXJhbWV0ZXIgZXZhbHVhdGlvbiBvcmRlci4KKyAg
RVhQRUNUX0VRKG9yaWdpbmFsX3ZhbHVlLCAqKGl0KyspKTsKKworICAvLyBWZXJpZmllcyB0aGF0
IHByZWZpeCBhbmQgcG9zdGZpeCBvcGVyYXRvcisrKCkgYWR2YW5jZSBhbiBpdGVyYXRvcgorICAv
LyBhbGwgdGhlIHNhbWUuCisgIGl0MiA9IGl0OworICArK2l0OworICArK2l0MjsKKyAgRVhQRUNU
X1RSVUUoKml0ID09ICppdDIpOworfQorCisvLyBUZXN0cyB0aGF0IFJhbmdlKCkgZ2VuZXJhdGVz
IHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZVdpdGhEZWZh
dWx0U3RlcCkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDMp
OworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MCwgMSwgMn07CisgIFZlcmlmeUdl
bmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIEVkZ2UgY2FzZS4gVGVzdHMg
dGhhdCBSYW5nZSgpIGdlbmVyYXRlcyB0aGUgc2luZ2xlIGVsZW1lbnQgc2VxdWVuY2UKKy8vIGFz
IGV4cGVjdGVkIHdoZW4gcHJvdmlkZWQgd2l0aCByYW5nZSBsaW1pdHMgdGhhdCBhcmUgZXF1YWwu
CitURVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VTaW5nbGVWYWx1ZSkgeworICBjb25zdCBQYXJhbUdl
bmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDEpOworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFs
dWVzW10gPSB7MH07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9
CisKKy8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBSYW5nZSgpIHdpdGggZ2VuZXJhdGVzIGVtcHR5
IHNlcXVlbmNlIHdoZW4KKy8vIHN1cHBsaWVkIHdpdGggYW4gZW1wdHkgcmFuZ2UuCitURVNUKFJh
bmdlVGVzdCwgSW50UmFuZ2VFbXB0eSkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdl
biA9IFJhbmdlKDAsIDApOworICBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7Cit9CisKKy8v
IFRlc3RzIHRoYXQgUmFuZ2UoKSB3aXRoIGN1c3RvbSBzdGVwIChncmVhdGVyIHRoZW4gb25lKSBn
ZW5lcmF0ZXMKKy8vIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoUmFuZ2VUZXN0LCBJbnRS
YW5nZVdpdGhDdXN0b21TdGVwKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0g
UmFuZ2UoMCwgOSwgMyk7CisgIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHswLCAzLCA2
fTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gVGVz
dHMgdGhhdCBSYW5nZSgpIHdpdGggY3VzdG9tIHN0ZXAgKGdyZWF0ZXIgdGhlbiBvbmUpIGdlbmVy
YXRlcworLy8gdGhlIGV4cGVjdGVkIHNlcXVlbmNlIHdoZW4gdGhlIGxhc3QgZWxlbWVudCBkb2Vz
IG5vdCBmYWxsIG9uIHRoZQorLy8gdXBwZXIgcmFuZ2UgbGltaXQuIFNlcXVlbmNlcyBnZW5lcmF0
ZWQgYnkgUmFuZ2UoKSBtdXN0IG5vdCBoYXZlCisvLyBlbGVtZW50cyBiZXlvbmQgdGhlIHJhbmdl
IGxpbWl0cy4KK1RFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZVdpdGhDdXN0b21TdGVwT3ZlclVwcGVy
Qm91bmQpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCA0LCAz
KTsKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezAsIDN9OworICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBWZXJpZmllcyB0aGF0IFJhbmdl
IHdvcmtzIHdpdGggdXNlci1kZWZpbmVkIHR5cGVzIHRoYXQgZGVmaW5lCisvLyBjb3B5IGNvbnN0
cnVjdG9yLCBvcGVyYXRvcj0oKSwgb3BlcmF0b3IrKCksIGFuZCBvcGVyYXRvcjwoKS4KK2NsYXNz
IERvZ0FkZGVyIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IERvZ0FkZGVyKGNvbnN0IGNoYXIqIGFf
dmFsdWUpIDogdmFsdWVfKGFfdmFsdWUpIHt9CisgIERvZ0FkZGVyKGNvbnN0IERvZ0FkZGVyJiBv
dGhlcikgOiB2YWx1ZV8ob3RoZXIudmFsdWVfLmNfc3RyKCkpIHt9CisKKyAgRG9nQWRkZXIgb3Bl
cmF0b3I9KGNvbnN0IERvZ0FkZGVyJiBvdGhlcikgeworICAgIGlmICh0aGlzICE9ICZvdGhlcikK
KyAgICAgIHZhbHVlXyA9IG90aGVyLnZhbHVlXzsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKyAg
RG9nQWRkZXIgb3BlcmF0b3IrKGNvbnN0IERvZ0FkZGVyJiBvdGhlcikgY29uc3QgeworICAgIE1l
c3NhZ2UgbXNnOworICAgIG1zZyA8PCB2YWx1ZV8uY19zdHIoKSA8PCBvdGhlci52YWx1ZV8uY19z
dHIoKTsKKyAgICByZXR1cm4gRG9nQWRkZXIobXNnLkdldFN0cmluZygpLmNfc3RyKCkpOworICB9
CisgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IERvZ0FkZGVyJiBvdGhlcikgY29uc3QgeworICAgIHJl
dHVybiB2YWx1ZV8gPCBvdGhlci52YWx1ZV87CisgIH0KKyAgY29uc3Qgc3RkOjpzdHJpbmcmIHZh
bHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CisKKyBwcml2YXRlOgorICBzdGQ6OnN0cmlu
ZyB2YWx1ZV87Cit9OworCitURVNUKFJhbmdlVGVzdCwgV29ya3NXaXRoQUN1c3RvbVR5cGUpIHsK
KyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8RG9nQWRkZXI+IGdlbiA9CisgICAgICBSYW5nZShEb2dB
ZGRlcigiY2F0IiksIERvZ0FkZGVyKCJjYXRkb2dkb2ciKSwgRG9nQWRkZXIoImRvZyIpKTsKKyAg
UGFyYW1HZW5lcmF0b3I8RG9nQWRkZXI+OjppdGVyYXRvciBpdCA9IGdlbi5iZWdpbigpOworCisg
IEFTU0VSVF9GQUxTRShpdCA9PSBnZW4uZW5kKCkpOworICBFWFBFQ1RfU1RSRVEoImNhdCIsIGl0
LT52YWx1ZSgpLmNfc3RyKCkpOworCisgIEFTU0VSVF9GQUxTRSgrK2l0ID09IGdlbi5lbmQoKSk7
CisgIEVYUEVDVF9TVFJFUSgiY2F0ZG9nIiwgaXQtPnZhbHVlKCkuY19zdHIoKSk7CisKKyAgRVhQ
RUNUX1RSVUUoKytpdCA9PSBnZW4uZW5kKCkpOworfQorCitjbGFzcyBJbnRXcmFwcGVyIHsKKyBw
dWJsaWM6CisgIGV4cGxpY2l0IEludFdyYXBwZXIoaW50IGFfdmFsdWUpIDogdmFsdWVfKGFfdmFs
dWUpIHt9CisgIEludFdyYXBwZXIoY29uc3QgSW50V3JhcHBlciYgb3RoZXIpIDogdmFsdWVfKG90
aGVyLnZhbHVlXykge30KKworICBJbnRXcmFwcGVyIG9wZXJhdG9yPShjb25zdCBJbnRXcmFwcGVy
JiBvdGhlcikgeworICAgIHZhbHVlXyA9IG90aGVyLnZhbHVlXzsKKyAgICByZXR1cm4gKnRoaXM7
CisgIH0KKyAgLy8gb3BlcmF0b3IrKCkgYWRkcyBhIGRpZmZlcmVudCB0eXBlLgorICBJbnRXcmFw
cGVyIG9wZXJhdG9yKyhpbnQgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIEludFdyYXBwZXIodmFsdWVf
ICsgb3RoZXIpOyB9CisgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEludFdyYXBwZXImIG90aGVyKSBj
b25zdCB7CisgICAgcmV0dXJuIHZhbHVlXyA8IG90aGVyLnZhbHVlXzsKKyAgfQorICBpbnQgdmFs
dWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KKworIHByaXZhdGU6CisgIGludCB2YWx1ZV87
Cit9OworCitURVNUKFJhbmdlVGVzdCwgV29ya3NXaXRoQUN1c3RvbVR5cGVXaXRoRGlmZmVyZW50
SW5jcmVtZW50VHlwZSkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxJbnRXcmFwcGVyPiBnZW4g
PSBSYW5nZShJbnRXcmFwcGVyKDApLCBJbnRXcmFwcGVyKDIpKTsKKyAgUGFyYW1HZW5lcmF0b3I8
SW50V3JhcHBlcj46Oml0ZXJhdG9yIGl0ID0gZ2VuLmJlZ2luKCk7CisKKyAgQVNTRVJUX0ZBTFNF
KGl0ID09IGdlbi5lbmQoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+dmFsdWUoKSk7CisKKyAgQVNT
RVJUX0ZBTFNFKCsraXQgPT0gZ2VuLmVuZCgpKTsKKyAgRVhQRUNUX0VRKDEsIGl0LT52YWx1ZSgp
KTsKKworICBFWFBFQ1RfVFJVRSgrK2l0ID09IGdlbi5lbmQoKSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgVmFsdWVzSW4oKSB3aXRoIGFuIGFycmF5IHBhcmFtZXRlciBnZW5lcmF0ZXMKKy8vIHRoZSBl
eHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJbkFycmF5KSB7Cisg
IGludCBhcnJheVtdID0gezMsIDUsIDh9OworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdl
biA9IFZhbHVlc0luKGFycmF5KTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgYXJyYXkpOworfQor
CisvLyBUZXN0cyB0aGF0IFZhbHVlc0luKCkgd2l0aCBhIGNvbnN0IGFycmF5IHBhcmFtZXRlciBn
ZW5lcmF0ZXMKKy8vIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoVmFsdWVzSW5UZXN0LCBW
YWx1ZXNJbkNvbnN0QXJyYXkpIHsKKyAgY29uc3QgaW50IGFycmF5W10gPSB7MywgNSwgOH07Cisg
IGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4oYXJyYXkpOworICBWZXJp
ZnlHZW5lcmF0b3IoZ2VuLCBhcnJheSk7Cit9CisKKy8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBW
YWx1ZXNJbigpIHdpdGggYW4gYXJyYXkgcGFyYW1ldGVyIGNvbnRhaW5pbmcgYQorLy8gc2luZ2xl
IGVsZW1lbnQgZ2VuZXJhdGVzIHRoZSBzaW5nbGUgZWxlbWVudCBzZXF1ZW5jZS4KK1RFU1QoVmFs
dWVzSW5UZXN0LCBWYWx1ZXNJblNpbmdsZUVsZW1lbnRBcnJheSkgeworICBpbnQgYXJyYXlbXSA9
IHs0Mn07CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4oYXJyYXkp
OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBhcnJheSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgVmFs
dWVzSW4oKSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlIGZvciBhbiBTVEwKKy8vIGNv
bnRhaW5lciAodmVjdG9yKS4KK1RFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJblZlY3Rvcikgewor
ICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8aW50PiBDb250YWluZXJUeXBlOworICBDb250YWluZXJU
eXBlIHZhbHVlczsKKyAgdmFsdWVzLnB1c2hfYmFjaygzKTsKKyAgdmFsdWVzLnB1c2hfYmFjayg1
KTsKKyAgdmFsdWVzLnB1c2hfYmFjayg4KTsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBn
ZW4gPSBWYWx1ZXNJbih2YWx1ZXMpOworCisgIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9
IHszLCA1LCA4fTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30K
KworLy8gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVu
Y2UuCitURVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5JdGVyYXRvclJhbmdlKSB7CisgIHR5cGVk
ZWYgOjpzdGQ6OnZlY3RvcjxpbnQ+IENvbnRhaW5lclR5cGU7CisgIENvbnRhaW5lclR5cGUgdmFs
dWVzOworICB2YWx1ZXMucHVzaF9iYWNrKDMpOworICB2YWx1ZXMucHVzaF9iYWNrKDUpOworICB2
YWx1ZXMucHVzaF9iYWNrKDgpOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZh
bHVlc0luKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworCisgIGNvbnN0IGludCBleHBl
Y3RlZF92YWx1ZXNbXSA9IHszLCA1LCA4fTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0
ZWRfdmFsdWVzKTsKK30KKworLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFZhbHVlc0luKCkgcHJv
dmlkZWQgd2l0aCBhbiBpdGVyYXRvciByYW5nZSBzcGVjaWZ5aW5nIGEKKy8vIHNpbmdsZSB2YWx1
ZSBnZW5lcmF0ZXMgYSBzaW5nbGUtZWxlbWVudCBzZXF1ZW5jZS4KK1RFU1QoVmFsdWVzSW5UZXN0
LCBWYWx1ZXNJblNpbmdsZUVsZW1lbnRJdGVyYXRvclJhbmdlKSB7CisgIHR5cGVkZWYgOjpzdGQ6
OnZlY3RvcjxpbnQ+IENvbnRhaW5lclR5cGU7CisgIENvbnRhaW5lclR5cGUgdmFsdWVzOworICB2
YWx1ZXMucHVzaF9iYWNrKDQyKTsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBW
YWx1ZXNJbih2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKworICBjb25zdCBpbnQgZXhw
ZWN0ZWRfdmFsdWVzW10gPSB7NDJ9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92
YWx1ZXMpOworfQorCisvLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSBwcm92aWRl
ZCB3aXRoIGFuIGVtcHR5IGl0ZXJhdG9yIHJhbmdlCisvLyBnZW5lcmF0ZXMgYW4gZW1wdHkgc2Vx
dWVuY2UuCitURVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5FbXB0eUl0ZXJhdG9yUmFuZ2UpIHsK
KyAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGludD4gQ29udGFpbmVyVHlwZTsKKyAgQ29udGFpbmVy
VHlwZSB2YWx1ZXM7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4o
dmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7CisKKyAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0
eShnZW4pOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBWYWx1ZXMoKSBnZW5lcmF0ZXMgdGhlIGV4
cGVjdGVkIHNlcXVlbmNlLgorVEVTVChWYWx1ZXNUZXN0LCBWYWx1ZXNXb3JrcykgeworICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlcygzLCA1LCA4KTsKKworICBjb25zdCBp
bnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MywgNSwgOH07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4s
IGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgVmFsdWVzKCkgZ2VuZXJhdGVz
IHRoZSBleHBlY3RlZCBzZXF1ZW5jZXMgZnJvbSBlbGVtZW50cyBvZgorLy8gZGlmZmVyZW50IHR5
cGVzIGNvbnZlcnRpYmxlIHRvIFBhcmFtR2VuZXJhdG9yJ3MgcGFyYW1ldGVyIHR5cGUuCitURVNU
KFZhbHVlc1Rlc3QsIFZhbHVlc1dvcmtzRm9yVmFsdWVzT2ZDb21wYXRpYmxlVHlwZXMpIHsKKyAg
Y29uc3QgUGFyYW1HZW5lcmF0b3I8ZG91YmxlPiBnZW4gPSBWYWx1ZXMoMywgNS4wZiwgOC4wKTsK
KworICBjb25zdCBkb3VibGUgZXhwZWN0ZWRfdmFsdWVzW10gPSB7My4wLCA1LjAsIDguMH07Cisg
IFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKK1RFU1QoVmFsdWVz
VGVzdCwgVmFsdWVzV29ya3NGb3JNYXhMZW5ndGhMaXN0KSB7CisgIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPGludD4gZ2VuID0gVmFsdWVzKAorICAgICAgMTAsIDIwLCAzMCwgNDAsIDUwLCA2MCwgNzAs
IDgwLCA5MCwgMTAwLAorICAgICAgMTEwLCAxMjAsIDEzMCwgMTQwLCAxNTAsIDE2MCwgMTcwLCAx
ODAsIDE5MCwgMjAwLAorICAgICAgMjEwLCAyMjAsIDIzMCwgMjQwLCAyNTAsIDI2MCwgMjcwLCAy
ODAsIDI5MCwgMzAwLAorICAgICAgMzEwLCAzMjAsIDMzMCwgMzQwLCAzNTAsIDM2MCwgMzcwLCAz
ODAsIDM5MCwgNDAwLAorICAgICAgNDEwLCA0MjAsIDQzMCwgNDQwLCA0NTAsIDQ2MCwgNDcwLCA0
ODAsIDQ5MCwgNTAwKTsKKworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7CisgICAg
ICAxMCwgMjAsIDMwLCA0MCwgNTAsIDYwLCA3MCwgODAsIDkwLCAxMDAsCisgICAgICAxMTAsIDEy
MCwgMTMwLCAxNDAsIDE1MCwgMTYwLCAxNzAsIDE4MCwgMTkwLCAyMDAsCisgICAgICAyMTAsIDIy
MCwgMjMwLCAyNDAsIDI1MCwgMjYwLCAyNzAsIDI4MCwgMjkwLCAzMDAsCisgICAgICAzMTAsIDMy
MCwgMzMwLCAzNDAsIDM1MCwgMzYwLCAzNzAsIDM4MCwgMzkwLCA0MDAsCisgICAgICA0MTAsIDQy
MCwgNDMwLCA0NDAsIDQ1MCwgNDYwLCA0NzAsIDQ4MCwgNDkwLCA1MDB9OworICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBFZGdlIGNhc2UgdGVzdC4gVGVz
dHMgdGhhdCBzaW5nbGUtcGFyYW1ldGVyIFZhbHVlcygpIGdlbmVyYXRlcyB0aGUgc2VxdWVuY2UK
Ky8vIHdpdGggdGhlIHNpbmdsZSB2YWx1ZS4KK1RFU1QoVmFsdWVzVGVzdCwgVmFsdWVzV2l0aFNp
bmdsZVBhcmFtZXRlcikgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVl
cyg0Mik7CisKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezQyfTsKKyAgVmVyaWZ5
R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gVGVzdHMgdGhhdCBCb29s
KCkgZ2VuZXJhdGVzIHNlcXVlbmNlIChmYWxzZSwgdHJ1ZSkuCitURVNUKEJvb2xUZXN0LCBCb29s
V29ya3MpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8Ym9vbD4gZ2VuID0gQm9vbCgpOworCisg
IGNvbnN0IGJvb2wgZXhwZWN0ZWRfdmFsdWVzW10gPSB7ZmFsc2UsIHRydWV9OworICBWZXJpZnlH
ZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisjIGlmIEdURVNUX0hBU19DT01C
SU5FCisKKy8vIFRlc3RzIHRoYXQgQ29tYmluZSgpIHdpdGggdHdvIHBhcmFtZXRlcnMgZ2VuZXJh
dGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRo
VHdvUGFyYW1ldGVycykgeworICBjb25zdCBjaGFyKiBmb28gPSAiZm9vIjsKKyAgY29uc3QgY2hh
ciogYmFyID0gImJhciI7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGNvbnN0IGNoYXIq
LCBpbnQ+ID4gZ2VuID0KKyAgICAgIENvbWJpbmUoVmFsdWVzKGZvbywgYmFyKSwgVmFsdWVzKDMs
IDQpKTsKKworICB0dXBsZTxjb25zdCBjaGFyKiwgaW50PiBleHBlY3RlZF92YWx1ZXNbXSA9IHsK
KyAgICBtYWtlX3R1cGxlKGZvbywgMyksIG1ha2VfdHVwbGUoZm9vLCA0KSwKKyAgICBtYWtlX3R1
cGxlKGJhciwgMyksIG1ha2VfdHVwbGUoYmFyLCA0KX07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4s
IGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQ29tYmluZSgpIHdpdGggdGhy
ZWUgcGFyYW1ldGVycyBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgorVEVTVChDb21i
aW5lVGVzdCwgQ29tYmluZVdpdGhUaHJlZVBhcmFtZXRlcnMpIHsKKyAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8dHVwbGU8aW50LCBpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcygwLCAxKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcygzLCA0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg1LCA2KSk7CisgIHR1cGxlPGludCwgaW50LCBp
bnQ+IGV4cGVjdGVkX3ZhbHVlc1tdID0geworICAgIG1ha2VfdHVwbGUoMCwgMywgNSksIG1ha2Vf
dHVwbGUoMCwgMywgNiksCisgICAgbWFrZV90dXBsZSgwLCA0LCA1KSwgbWFrZV90dXBsZSgwLCA0
LCA2KSwKKyAgICBtYWtlX3R1cGxlKDEsIDMsIDUpLCBtYWtlX3R1cGxlKDEsIDMsIDYpLAorICAg
IG1ha2VfdHVwbGUoMSwgNCwgNSksIG1ha2VfdHVwbGUoMSwgNCwgNil9OworICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBDb21i
aW5lKCkgd2l0aCB0aGUgZmlyc3QgcGFyYW1ldGVyIGdlbmVyYXRpbmcgYSBzaW5nbGUgdmFsdWUK
Ky8vIHNlcXVlbmNlIGdlbmVyYXRlcyBhIHNlcXVlbmNlIHdpdGggdGhlIG51bWJlciBvZiBlbGVt
ZW50cyBlcXVhbCB0byB0aGUKKy8vIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgc2VxdWVuY2Ug
Z2VuZXJhdGVkIGJ5IHRoZSBzZWNvbmQgcGFyYW1ldGVyLgorVEVTVChDb21iaW5lVGVzdCwgQ29t
YmluZVdpdGhGaXJzdFBhcmFtZXRlclNpbmdsZVZhbHVlKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPHR1cGxlPGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUoVmFsdWVzKDQyKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMCwg
MSkpOworCisgIHR1cGxlPGludCwgaW50PiBleHBlY3RlZF92YWx1ZXNbXSA9IHttYWtlX3R1cGxl
KDQyLCAwKSwgbWFrZV90dXBsZSg0MiwgMSl9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBl
Y3RlZF92YWx1ZXMpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBDb21iaW5lKCkgd2l0aCB0aGUg
c2Vjb25kIHBhcmFtZXRlciBnZW5lcmF0aW5nIGEgc2luZ2xlIHZhbHVlCisvLyBzZXF1ZW5jZSBn
ZW5lcmF0ZXMgYSBzZXF1ZW5jZSB3aXRoIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZXF1YWwgdG8g
dGhlCisvLyBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHNlcXVlbmNlIGdlbmVyYXRlZCBieSB0
aGUgZmlyc3QgcGFyYW1ldGVyLgorVEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdpdGhTZWNvbmRQ
YXJhbWV0ZXJTaW5nbGVWYWx1ZSkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQs
IGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcygwLCAxKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNDIpKTsKKworICB0dXBs
ZTxpbnQsIGludD4gZXhwZWN0ZWRfdmFsdWVzW10gPSB7bWFrZV90dXBsZSgwLCA0MiksIG1ha2Vf
dHVwbGUoMSwgNDIpfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsK
K30KKworLy8gVGVzdHMgdGhhdCB3aGVuIHRoZSBmaXJzdCBwYXJhbWV0ZXIgcHJvZHVjZXMgYW4g
ZW1wdHkgc2VxdWVuY2UsCisvLyBDb21iaW5lKCkgcHJvZHVjZXMgYW4gZW1wdHkgc2VxdWVuY2Us
IHRvby4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoRmlyc3RQYXJhbWV0ZXJFbXB0eVJh
bmdlKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50PiA+IGdlbiA9IENv
bWJpbmUoUmFuZ2UoMCwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsdWVzKDAsIDEpKTsKKyAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0
eShnZW4pOworfQorCisvLyBUZXN0cyB0aGF0IHdoZW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIgcHJv
ZHVjZXMgYW4gZW1wdHkgc2VxdWVuY2UsCisvLyBDb21iaW5lKCkgcHJvZHVjZXMgYW4gZW1wdHkg
c2VxdWVuY2UsIHRvby4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoU2Vjb25kUGFyYW1l
dGVyRW1wdHlSYW5nZSkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludD4g
PiBnZW4gPSBDb21iaW5lKFZhbHVlcygwLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5nZSgxLCAxKSk7CisgIFZlcmlmeUdlbmVy
YXRvcklzRW1wdHkoZ2VuKTsKK30KKworLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IGNvbWJpbmUg
d29ya3Mgd2l0aCB0aGUgbWF4aW11bSBudW1iZXIKKy8vIG9mIHBhcmFtZXRlcnMgc3VwcG9ydGVk
IGJ5IEdvb2dsZSBUZXN0IChjdXJyZW50bHkgMTApLgorVEVTVChDb21iaW5lVGVzdCwgQ29tYmlu
ZVdpdGhNYXhOdW1iZXJPZlBhcmFtZXRlcnMpIHsKKyAgY29uc3QgY2hhciogZm9vID0gImZvbyI7
CisgIGNvbnN0IGNoYXIqIGJhciA9ICJiYXIiOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBs
ZTxjb25zdCBjaGFyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcyhm
b28sIGJhciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsdWVzKDEpLCBWYWx1ZXMoMiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDMpLCBWYWx1ZXMoNCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVz
KDUpLCBWYWx1ZXMoNiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsdWVzKDcpLCBWYWx1ZXMoOCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDkpKTsKKworICB0dXBs
ZTxjb25zdCBjaGFyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dD4KKyAgICAgIGV4cGVjdGVkX3ZhbHVlc1tdID0ge21ha2VfdHVwbGUoZm9vLCAxLCAyLCAzLCA0
LCA1LCA2LCA3LCA4LCA5KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VfdHVwbGUo
YmFyLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5KX07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4s
IGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisKK2NsYXNzIE5v
bkRlZmF1bHRDb25zdHJ1Y3RBc3NpZ25TdHJpbmcgeworIHB1YmxpYzoKKyAgTm9uRGVmYXVsdENv
bnN0cnVjdEFzc2lnblN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgcykgOiBzdHJfKHMpIHt9CisK
KyAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cigpIGNvbnN0IHsgcmV0dXJuIHN0cl87IH0KKworIHBy
aXZhdGU6CisgIHN0ZDo6c3RyaW5nIHN0cl87CisKKyAgLy8gTm90IGRlZmF1bHQgY29uc3RydWN0
aWJsZQorICBOb25EZWZhdWx0Q29uc3RydWN0QXNzaWduU3RyaW5nKCk7CisgIC8vIE5vdCBhc3Np
Z25hYmxlCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IE5vbkRlZmF1bHRDb25zdHJ1Y3RBc3NpZ25T
dHJpbmcmKTsKK307CisKK1RFU1QoQ29tYmluZVRlc3QsIE5vbkRlZmF1bHRDb25zdHJ1Y3RBc3Np
Z24pIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBOb25EZWZhdWx0Q29uc3Ry
dWN0QXNzaWduU3RyaW5nPiA+IGdlbiA9CisgICAgICBDb21iaW5lKFZhbHVlcygwLCAxKSwgVmFs
dWVzKE5vbkRlZmF1bHRDb25zdHJ1Y3RBc3NpZ25TdHJpbmcoIkEiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTm9uRGVmYXVsdENvbnN0cnVjdEFzc2lnblN0cmluZygiQiIp
KSk7CisKKyAgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBOb25EZWZhdWx0Q29uc3RydWN0QXNz
aWduU3RyaW5nPiA+OjppdGVyYXRvciBpdCA9CisgICAgICBnZW4uYmVnaW4oKTsKKworICBFWFBF
Q1RfRVEoMCwgc3RkOjpnZXQ8MD4oKml0KSk7CisgIEVYUEVDVF9FUSgiQSIsIHN0ZDo6Z2V0PDE+
KCppdCkuc3RyKCkpOworICArK2l0OworCisgIEVYUEVDVF9FUSgwLCBzdGQ6OmdldDwwPigqaXQp
KTsKKyAgRVhQRUNUX0VRKCJCIiwgc3RkOjpnZXQ8MT4oKml0KS5zdHIoKSk7CisgICsraXQ7CisK
KyAgRVhQRUNUX0VRKDEsIHN0ZDo6Z2V0PDA+KCppdCkpOworICBFWFBFQ1RfRVEoIkEiLCBzdGQ6
OmdldDwxPigqaXQpLnN0cigpKTsKKyAgKytpdDsKKworICBFWFBFQ1RfRVEoMSwgc3RkOjpnZXQ8
MD4oKml0KSk7CisgIEVYUEVDVF9FUSgiQiIsIHN0ZDo6Z2V0PDE+KCppdCkuc3RyKCkpOworICAr
K2l0OworCisgIEVYUEVDVF9UUlVFKGl0ID09IGdlbi5lbmQoKSk7Cit9CisKKyNlbmRpZiAgIC8v
IEdURVNUX0xBTkdfQ1hYMTEKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCisKKy8vIFRl
c3RzIHRoYXQgYW4gZ2VuZXJhdG9yIHByb2R1Y2VzIGNvcnJlY3Qgc2VxdWVuY2UgYWZ0ZXIgYmVp
bmcKKy8vIGFzc2lnbmVkIGZyb20gYW5vdGhlciBnZW5lcmF0b3IuCitURVNUKFBhcmFtR2VuZXJh
dG9yVGVzdCwgQXNzaWdubWVudFdvcmtzKSB7CisgIFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0g
VmFsdWVzKDEsIDIpOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbjIgPSBWYWx1ZXMo
MywgNCk7CisgIGdlbiA9IGdlbjI7CisKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0g
ezMsIDR9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisv
LyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgdGVzdHMgYXJlIGV4cGFuZGVkIGFuZCBydW4g
YXMgc3BlY2lmaWVkOgorLy8gb25lIHRlc3QgcGVyIGVsZW1lbnQgZnJvbSB0aGUgc2VxdWVuY2Ug
cHJvZHVjZWQgYnkgdGhlIGdlbmVyYXRvcgorLy8gc3BlY2lmaWVkIGluIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QLiBJdCBhbHNvIHZlcmlmaWVzIHRoYXQgdGhlIHRlc3QncworLy8gZml4dHVyZSBj
b25zdHJ1Y3RvciwgU2V0VXAoKSwgYW5kIFRlYXJEb3duKCkgaGF2ZSBydW4gYW5kIGhhdmUgYmVl
bgorLy8gc3VwcGxpZWQgd2l0aCB0aGUgY29ycmVjdCBwYXJhbWV0ZXJzLgorCisvLyBUaGUgdXNl
IG9mIGVudmlyb25tZW50IG9iamVjdCBhbGxvd3MgZGV0ZWN0aW9uIG9mIHRoZSBjYXNlIHdoZXJl
IG5vIHRlc3QKKy8vIGNhc2UgZnVuY3Rpb25hbGl0eSBpcyBydW4gYXQgYWxsLiBJbiB0aGlzIGNh
c2UgVGVzdENhc2VUZWFyRG93biB3aWxsIG5vdAorLy8gYmUgYWJsZSB0byBkZXRlY3QgbWlzc2lu
ZyB0ZXN0cywgbmF0dXJhbGx5LgordGVtcGxhdGUgPGludCBrRXhwZWN0ZWRDYWxscz4KK2NsYXNz
IFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQgOiBwdWJsaWMgOjp0ZXN0aW5nOjpFbnZpcm9ubWVu
dCB7CisgcHVibGljOgorICBzdGF0aWMgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudCogSW5zdGFu
Y2UoKSB7CisgICAgc3RhdGljIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQqIGluc3RhbmNlID0g
bmV3IFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQ7CisgICAgcmV0dXJuIGluc3RhbmNlOworICB9
CisKKyAgdm9pZCBGaXh0dXJlQ29uc3RydWN0b3JFeGVjdXRlZCgpIHsgZml4dHVyZV9jb25zdHJ1
Y3Rvcl9jb3VudF8rKzsgfQorICB2b2lkIFNldFVwRXhlY3V0ZWQoKSB7IHNldF91cF9jb3VudF8r
KzsgfQorICB2b2lkIFRlYXJEb3duRXhlY3V0ZWQoKSB7IHRlYXJfZG93bl9jb3VudF8rKzsgfQor
ICB2b2lkIFRlc3RCb2R5RXhlY3V0ZWQoKSB7IHRlc3RfYm9keV9jb3VudF8rKzsgfQorCisgIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICAvLyBJZiBhbGwgTXVsdGlwbGVUZXN0R2VuZXJh
dGlvblRlc3QgdGVzdHMgaGF2ZSBiZWVuIGRlLXNlbGVjdGVkCisgICAgLy8gYnkgdGhlIGZpbHRl
ciBmbGFnLCB0aGUgZm9sbG93aW5nIGNoZWNrcyBtYWtlIG5vIHNlbnNlLgorICAgIGJvb2wgcGVy
Zm9ybV9jaGVjayA9IGZhbHNlOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrRXhwZWN0ZWRD
YWxsczsgKytpKSB7CisgICAgICBNZXNzYWdlIG1zZzsKKyAgICAgIG1zZyA8PCAiVGVzdHNFeHBh
bmRlZEFuZFJ1bi8iIDw8IGk7CisgICAgICBpZiAoVW5pdFRlc3RPcHRpb25zOjpGaWx0ZXJNYXRj
aGVzVGVzdCgKKyAgICAgICAgICAgICAiVGVzdEV4cGFuc2lvbk1vZHVsZS9NdWx0aXBsZVRlc3RH
ZW5lcmF0aW9uVGVzdCIsCisgICAgICAgICAgICAgIG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKSkg
eworICAgICAgICBwZXJmb3JtX2NoZWNrID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9CisgICAgaWYg
KHBlcmZvcm1fY2hlY2spIHsKKyAgICAgIEVYUEVDVF9FUShrRXhwZWN0ZWRDYWxscywgZml4dHVy
ZV9jb25zdHJ1Y3Rvcl9jb3VudF8pCisgICAgICAgICAgPDwgIkZpeHR1cmUgY29uc3RydWN0b3Ig
b2YgUGFyYW1UZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlICIKKyAgICAgICAgICA8PCAiaGFz
IG5vdCBiZWVuIHJ1biBhcyBleHBlY3RlZC4iOworICAgICAgRVhQRUNUX0VRKGtFeHBlY3RlZENh
bGxzLCBzZXRfdXBfY291bnRfKQorICAgICAgICAgIDw8ICJGaXh0dXJlIFNldFVwIG1ldGhvZCBv
ZiBQYXJhbVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgorICAgICAgICAgIDw8ICJoYXMg
bm90IGJlZW4gcnVuIGFzIGV4cGVjdGVkLiI7CisgICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2Fs
bHMsIHRlYXJfZG93bl9jb3VudF8pCisgICAgICAgICAgPDwgIkZpeHR1cmUgVGVhckRvd24gbWV0
aG9kIG9mIFBhcmFtVGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZSAiCisgICAgICAgICAgPDwg
ImhhcyBub3QgYmVlbiBydW4gYXMgZXhwZWN0ZWQuIjsKKyAgICAgIEVYUEVDVF9FUShrRXhwZWN0
ZWRDYWxscywgdGVzdF9ib2R5X2NvdW50XykKKyAgICAgICAgICA8PCAiVGVzdCBpbiBQYXJhbVRl
c3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgorICAgICAgICAgIDw8ICJoYXMgbm90IGJlZW4g
cnVuIGFzIGV4cGVjdGVkLiI7CisgICAgfQorICB9CisKKyBwcml2YXRlOgorICBUZXN0R2VuZXJh
dGlvbkVudmlyb25tZW50KCkgOiBmaXh0dXJlX2NvbnN0cnVjdG9yX2NvdW50XygwKSwgc2V0X3Vw
X2NvdW50XygwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVhcl9kb3duX2Nv
dW50XygwKSwgdGVzdF9ib2R5X2NvdW50XygwKSB7fQorCisgIGludCBmaXh0dXJlX2NvbnN0cnVj
dG9yX2NvdW50XzsKKyAgaW50IHNldF91cF9jb3VudF87CisgIGludCB0ZWFyX2Rvd25fY291bnRf
OworICBpbnQgdGVzdF9ib2R5X2NvdW50XzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQpOworfTsKKworY29uc3QgaW50IHRlc3Rf
Z2VuZXJhdGlvbl9wYXJhbXNbXSA9IHszNiwgNDIsIDcyfTsKKworY2xhc3MgVGVzdEdlbmVyYXRp
b25UZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7CisgcHVibGljOgorICBlbnVtIHsK
KyAgICBQQVJBTUVURVJfQ09VTlQgPQorICAgICAgICBzaXplb2YodGVzdF9nZW5lcmF0aW9uX3Bh
cmFtcykvc2l6ZW9mKHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXNbMF0pCisgIH07CisKKyAgdHlwZWRl
ZiBUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50PFBBUkFNRVRFUl9DT1VOVD4gRW52aXJvbm1lbnQ7
CisKKyAgVGVzdEdlbmVyYXRpb25UZXN0KCkgeworICAgIEVudmlyb25tZW50OjpJbnN0YW5jZSgp
LT5GaXh0dXJlQ29uc3RydWN0b3JFeGVjdXRlZCgpOworICAgIGN1cnJlbnRfcGFyYW1ldGVyXyA9
IEdldFBhcmFtKCk7CisgIH0KKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIEVudmlyb25t
ZW50OjpJbnN0YW5jZSgpLT5TZXRVcEV4ZWN1dGVkKCk7CisgICAgRVhQRUNUX0VRKGN1cnJlbnRf
cGFyYW1ldGVyXywgR2V0UGFyYW0oKSk7CisgIH0KKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkg
eworICAgIEVudmlyb25tZW50OjpJbnN0YW5jZSgpLT5UZWFyRG93bkV4ZWN1dGVkKCk7CisgICAg
RVhQRUNUX0VRKGN1cnJlbnRfcGFyYW1ldGVyXywgR2V0UGFyYW0oKSk7CisgIH0KKworICBzdGF0
aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgeworICAgIGJvb2wgYWxsX3Rlc3RzX2luX3Rlc3RfY2Fz
ZV9zZWxlY3RlZCA9IHRydWU7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IFBBUkFNRVRFUl9D
T1VOVDsgKytpKSB7CisgICAgICBNZXNzYWdlIHRlc3RfbmFtZTsKKyAgICAgIHRlc3RfbmFtZSA8
PCAiVGVzdHNFeHBhbmRlZEFuZFJ1bi8iIDw8IGk7CisgICAgICBpZiAoICFVbml0VGVzdE9wdGlv
bnM6OkZpbHRlck1hdGNoZXNUZXN0KAorICAgICAgICAgICAgICAgICJUZXN0RXhwYW5zaW9uTW9k
dWxlL011bHRpcGxlVGVzdEdlbmVyYXRpb25UZXN0IiwKKyAgICAgICAgICAgICAgICB0ZXN0X25h
bWUuR2V0U3RyaW5nKCkpKSB7CisgICAgICAgIGFsbF90ZXN0c19pbl90ZXN0X2Nhc2Vfc2VsZWN0
ZWQgPSBmYWxzZTsKKyAgICAgIH0KKyAgICB9CisgICAgRVhQRUNUX1RSVUUoYWxsX3Rlc3RzX2lu
X3Rlc3RfY2FzZV9zZWxlY3RlZCkKKyAgICAgICAgPDwgIldoZW4gcnVubmluZyB0aGUgVGVzdEdl
bmVyYXRpb25UZXN0IHRlc3QgY2FzZSBhbGwgb2YgaXRzIHRlc3RzXG4iCisgICAgICAgIDw8ICJt
dXN0IGJlIHNlbGVjdGVkIGJ5IHRoZSBmaWx0ZXIgZmxhZyBmb3IgdGhlIHRlc3QgY2FzZSB0byBw
YXNzLlxuIgorICAgICAgICA8PCAiSWYgbm90IGFsbCBvZiB0aGVtIGFyZSBlbmFibGVkLCB3ZSBj
YW4ndCByZWxpYWJseSBjb25jbHVkZVxuIgorICAgICAgICA8PCAidGhhdCB0aGUgY29ycmVjdCBu
dW1iZXIgb2YgdGVzdHMgaGF2ZSBiZWVuIGdlbmVyYXRlZC4iOworCisgICAgY29sbGVjdGVkX3Bh
cmFtZXRlcnNfLmNsZWFyKCk7CisgIH0KKworICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNl
KCkgeworICAgIHZlY3RvcjxpbnQ+IGV4cGVjdGVkX3ZhbHVlcyh0ZXN0X2dlbmVyYXRpb25fcGFy
YW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2dlbmVyYXRpb25fcGFy
YW1zICsgUEFSQU1FVEVSX0NPVU5UKTsKKyAgICAvLyBUZXN0IGV4ZWN1dGlvbiBvcmRlciBpcyBu
b3QgZ3VhcmFudGVlZCBieSBHb29nbGUgVGVzdCwKKyAgICAvLyBzbyB0aGUgb3JkZXIgb2YgdmFs
dWVzIGluIGNvbGxlY3RlZF9wYXJhbWV0ZXJzXyBjYW4gYmUKKyAgICAvLyBkaWZmZXJlbnQgYW5k
IHdlIGhhdmUgdG8gc29ydCB0byBjb21wYXJlLgorICAgIHNvcnQoZXhwZWN0ZWRfdmFsdWVzLmJl
Z2luKCksIGV4cGVjdGVkX3ZhbHVlcy5lbmQoKSk7CisgICAgc29ydChjb2xsZWN0ZWRfcGFyYW1l
dGVyc18uYmVnaW4oKSwgY29sbGVjdGVkX3BhcmFtZXRlcnNfLmVuZCgpKTsKKworICAgIEVYUEVD
VF9UUlVFKGNvbGxlY3RlZF9wYXJhbWV0ZXJzXyA9PSBleHBlY3RlZF92YWx1ZXMpOworICB9CisK
KyBwcm90ZWN0ZWQ6CisgIGludCBjdXJyZW50X3BhcmFtZXRlcl87CisgIHN0YXRpYyB2ZWN0b3I8
aW50PiBjb2xsZWN0ZWRfcGFyYW1ldGVyc187CisKKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExP
V19DT1BZX0FORF9BU1NJR05fKFRlc3RHZW5lcmF0aW9uVGVzdCk7Cit9OwordmVjdG9yPGludD4g
VGVzdEdlbmVyYXRpb25UZXN0Ojpjb2xsZWN0ZWRfcGFyYW1ldGVyc187CisKK1RFU1RfUChUZXN0
R2VuZXJhdGlvblRlc3QsIFRlc3RzRXhwYW5kZWRBbmRSdW4pIHsKKyAgRW52aXJvbm1lbnQ6Oklu
c3RhbmNlKCktPlRlc3RCb2R5RXhlY3V0ZWQoKTsKKyAgRVhQRUNUX0VRKGN1cnJlbnRfcGFyYW1l
dGVyXywgR2V0UGFyYW0oKSk7CisgIGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5wdXNoX2JhY2soR2V0
UGFyYW0oKSk7Cit9CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChUZXN0RXhwYW5zaW9uTW9kdWxl
LCBUZXN0R2VuZXJhdGlvblRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXNJbih0
ZXN0X2dlbmVyYXRpb25fcGFyYW1zKSk7CisKKy8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRo
ZSBlbGVtZW50IHNlcXVlbmNlICh0aGlyZCBwYXJhbWV0ZXIgb2YKKy8vIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKSBpcyBldmFsdWF0ZWQgaW4gSW5pdEdvb2dsZVRlc3QoKSBhbmQgbmVpdGhlciBh
dAorLy8gdGhlIGNhbGwgc2l0ZSBvZiBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBub3IgaW4gUlVO
X0FMTF9URVNUUygpLiAgRm9yCisvLyB0aGF0LCB3ZSBkZWNsYXJlIHBhcmFtX3ZhbHVlXyB0byBi
ZSBhIHN0YXRpYyBtZW1iZXIgb2YKKy8vIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0IGFuZCBpbml0
aWFsaXplIGl0IHRvIDAuICBXZSBzZXQgaXQgdG8gMSBpbgorLy8gbWFpbigpLCBqdXN0IGJlZm9y
ZSBpbnZvY2F0aW9uIG9mIEluaXRHb29nbGVUZXN0KCkuICBBZnRlciBjYWxsaW5nCisvLyBJbml0
R29vZ2xlVGVzdCgpLCB3ZSBzZXQgdGhlIHZhbHVlIHRvIDIuICBJZiB0aGUgc2VxdWVuY2UgaXMg
ZXZhbHVhdGVkCisvLyBiZWZvcmUgb3IgYWZ0ZXIgSW5pdEdvb2dsZVRlc3QsIElOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QIHdpbGwgY3JlYXRlIGEKKy8vIHRlc3Qgd2l0aCBwYXJhbWV0ZXIgb3RoZXIg
dGhhbiAxLCBhbmQgdGhlIHRlc3QgYm9keSB3aWxsIGZhaWwgdGhlCisvLyBhc3NlcnRpb24uCitj
bGFzcyBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4g
eworIHB1YmxpYzoKKyAgc3RhdGljIGludCBwYXJhbV92YWx1ZSgpIHsgcmV0dXJuIHBhcmFtX3Zh
bHVlXzsgfQorICBzdGF0aWMgdm9pZCBzZXRfcGFyYW1fdmFsdWUoaW50IHBhcmFtX3ZhbHVlKSB7
IHBhcmFtX3ZhbHVlXyA9IHBhcmFtX3ZhbHVlOyB9CisKKyBwcml2YXRlOgorICBzdGF0aWMgaW50
IHBhcmFtX3ZhbHVlXzsKK307CitpbnQgR2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnBhcmFtX3Zh
bHVlXyA9IDA7CisKK1RFU1RfUChHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCwgR2VuZXJhdG9yc0V2
YWx1YXRlZEluTWFpbikgeworICBFWFBFQ1RfRVEoMSwgR2V0UGFyYW0oKSk7Cit9CitJTlNUQU5U
SUFURV9URVNUX0NBU0VfUChHZW5FdmFsTW9kdWxlLAorICAgICAgICAgICAgICAgICAgICAgICAg
R2VuZXJhdG9yRXZhbHVhdGlvblRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMo
R2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnBhcmFtX3ZhbHVlKCkpKTsKKworLy8gVGVzdHMgdGhh
dCBnZW5lcmF0b3JzIGRlZmluZWQgaW4gYSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdCBhcmUK
Ky8vIGZ1bmN0aW9uYWwuIEdlbmVyYXRvciBleHRlcm5fZ2VuIGlzIGRlZmluZWQgaW4gZ3Rlc3Qt
cGFyYW0tdGVzdF90ZXN0Mi5jYy4KK2V4dGVybiBQYXJhbUdlbmVyYXRvcjxpbnQ+IGV4dGVybl9n
ZW47CitjbGFzcyBFeHRlcm5hbEdlbmVyYXRvclRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxp
bnQ+IHt9OworVEVTVF9QKEV4dGVybmFsR2VuZXJhdG9yVGVzdCwgRXh0ZXJuYWxHZW5lcmF0b3Ip
IHsKKyAgLy8gU2VxdWVuY2UgcHJvZHVjZWQgYnkgZXh0ZXJuX2dlbiBjb250YWlucyBvbmx5IGEg
c2luZ2xlIHZhbHVlCisgIC8vIHdoaWNoIHdlIHZlcmlmeSBoZXJlLgorICBFWFBFQ1RfRVEoR2V0
UGFyYW0oKSwgMzMpOworfQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoRXh0ZXJuYWxHZW5lcmF0
b3JNb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICBFeHRlcm5hbEdlbmVyYXRvclRlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5fZ2VuKTsKKworLy8gVGVzdHMgdGhhdCBh
IHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBkZWZpbmVkIGluIG9uZSB0cmFuc2xhdGlv
bgorLy8gdW5pdCBhbmQgaW5zdGFudGlhdGVkIGluIGFub3RoZXIuIFRoaXMgdGVzdCB3aWxsIGJl
IGluc3RhbnRpYXRlZCBpbgorLy8gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0Mi5jYy4gRXh0ZXJuYWxJ
bnN0YW50aWF0aW9uVGVzdCBmaXh0dXJlIGNsYXNzIGlzCisvLyBkZWZpbmVkIGluIGd0ZXN0LXBh
cmFtLXRlc3RfdGVzdC5oLgorVEVTVF9QKEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3QsIElzTXVs
dGlwbGVPZjMzKSB7CisgIEVYUEVDVF9FUSgwLCBHZXRQYXJhbSgpICUgMzMpOworfQorCisvLyBU
ZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGluc3RhbnRpYXRlZCB3
aXRoIG11bHRpcGxlCisvLyBnZW5lcmF0b3JzLgorY2xhc3MgTXVsdGlwbGVJbnN0YW50aWF0aW9u
VGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4ge307CitURVNUX1AoTXVsdGlwbGVJbnN0
YW50aWF0aW9uVGVzdCwgQWxsb3dzTXVsdGlwbGVJbnN0YW5jZXMpIHsKK30KK0lOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKFNlcXVlbmNlMSwgTXVsdGlwbGVJbnN0YW50aWF0aW9uVGVzdCwgVmFsdWVz
KDEsIDIpKTsKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMiwgTXVsdGlwbGVJbnN0
YW50aWF0aW9uVGVzdCwgUmFuZ2UoMywgNSkpOworCisvLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVy
aXplZCB0ZXN0IGNhc2UgY2FuIGJlIGluc3RhbnRpYXRlZAorLy8gaW4gbXVsdGlwbGUgdHJhbnNs
YXRpb24gdW5pdHMuIFRoaXMgdGVzdCB3aWxsIGJlIGluc3RhbnRpYXRlZAorLy8gaGVyZSBhbmQg
aW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0Mi5jYy4KKy8vIEluc3RhbnRpYXRpb25Jbk11bHRpcGxl
VHJhbnNsYXRpb25Vbml0c1Rlc3QgZml4dHVyZSBjbGFzcworLy8gaXMgZGVmaW5lZCBpbiBndGVz
dC1wYXJhbS10ZXN0X3Rlc3QuaC4KK1RFU1RfUChJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5z
bGFpb25Vbml0c1Rlc3QsIElzTXVsdGlwbGVPZjQyKSB7CisgIEVYUEVDVF9FUSgwLCBHZXRQYXJh
bSgpICUgNDIpOworfQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2UxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNU
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDQyLCA0MioyKSk7CisKKy8vIFRl
c3RzIHRoYXQgZWFjaCBpdGVyYXRpb24gb2YgcGFyYW1ldGVyaXplZCB0ZXN0IHJ1bnMgaW4gYSBz
ZXBhcmF0ZSB0ZXN0CisvLyBvYmplY3QuCitjbGFzcyBTZXBhcmF0ZUluc3RhbmNlVGVzdCA6IHB1
YmxpYyBUZXN0V2l0aFBhcmFtPGludD4geworIHB1YmxpYzoKKyAgU2VwYXJhdGVJbnN0YW5jZVRl
c3QoKSA6IGNvdW50XygwKSB7fQorCisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7
CisgICAgRVhQRUNUX0dFKGdsb2JhbF9jb3VudF8sIDIpCisgICAgICAgIDw8ICJJZiBzb21lIChi
dXQgbm90IGFsbCkgU2VwYXJhdGVJbnN0YW5jZVRlc3QgdGVzdHMgaGF2ZSBiZWVuICIKKyAgICAg
ICAgPDwgImZpbHRlcmVkIG91dCB0aGlzIHRlc3Qgd2lsbCBmYWlsLiBNYWtlIHN1cmUgdGhhdCBh
bGwgIgorICAgICAgICA8PCAiR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QgYXJlIHNlbGVjdGVkIG9y
IGRlLXNlbGVjdGVkIHRvZ2V0aGVyICIKKyAgICAgICAgPDwgImJ5IHRoZSB0ZXN0IGZpbHRlci4i
OworICB9CisKKyBwcm90ZWN0ZWQ6CisgIGludCBjb3VudF87CisgIHN0YXRpYyBpbnQgZ2xvYmFs
X2NvdW50XzsKK307CitpbnQgU2VwYXJhdGVJbnN0YW5jZVRlc3Q6Omdsb2JhbF9jb3VudF8gPSAw
OworCitURVNUX1AoU2VwYXJhdGVJbnN0YW5jZVRlc3QsIFRlc3RzUnVuSW5TZXBhcmF0ZUluc3Rh
bmNlcykgeworICBFWFBFQ1RfRVEoMCwgY291bnRfKyspOworICBnbG9iYWxfY291bnRfKys7Cit9
CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChGb3VyRWxlbVNlcXVlbmNlLCBTZXBhcmF0ZUluc3Rh
bmNlVGVzdCwgUmFuZ2UoMSwgNCkpOworCisvLyBUZXN0cyB0aGF0IGFsbCBpbnN0YW50aWF0aW9u
cyBvZiBhIHRlc3QgaGF2ZSBuYW1lZCBhcHByb3ByaWF0ZWx5LiBUZXN0CisvLyBkZWZpbmVkIHdp
dGggVEVTVF9QKFRlc3RDYXNlTmFtZSwgVGVzdE5hbWUpIGFuZCBpbnN0YW50aWF0ZWQgd2l0aAor
Ly8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2VOYW1lLCBUZXN0Q2FzZU5hbWUsIGdl
bmVyYXRvcikgbXVzdCBiZSBuYW1lZAorLy8gU2VxdWVuY2VOYW1lL1Rlc3RDYXNlTmFtZS5UZXN0
TmFtZS9pLCB3aGVyZSBpIGlzIHRoZSAwLWJhc2VkIGluZGV4IG9mIHRoZQorLy8gc2VxdWVuY2Ug
ZWxlbWVudCB1c2VkIHRvIGluc3RhbnRpYXRlIHRoZSB0ZXN0LgorY2xhc3MgTmFtaW5nVGVzdCA6
IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4ge307CisKK1RFU1RfUChOYW1pbmdUZXN0LCBUZXN0
c1JlcG9ydENvcnJlY3ROYW1lc0FuZFBhcmFtZXRlcnMpIHsKKyAgY29uc3QgOjp0ZXN0aW5nOjpU
ZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0
SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKworICBFWFBFQ1RfU1RSRVEoIlplcm9U
b0ZpdmVTZXF1ZW5jZS9OYW1pbmdUZXN0IiwgdGVzdF9pbmZvLT50ZXN0X2Nhc2VfbmFtZSgpKTsK
KworICBNZXNzYWdlIGluZGV4X3N0cmVhbTsKKyAgaW5kZXhfc3RyZWFtIDw8ICJUZXN0c1JlcG9y
dENvcnJlY3ROYW1lc0FuZFBhcmFtZXRlcnMvIiA8PCBHZXRQYXJhbSgpOworICBFWFBFQ1RfU1RS
RVEoaW5kZXhfc3RyZWFtLkdldFN0cmluZygpLmNfc3RyKCksIHRlc3RfaW5mby0+bmFtZSgpKTsK
KworICBFWFBFQ1RfRVEoOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKEdldFBhcmFtKCkpLCB0ZXN0
X2luZm8tPnZhbHVlX3BhcmFtKCkpOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChaZXJv
VG9GaXZlU2VxdWVuY2UsIE5hbWluZ1Rlc3QsIFJhbmdlKDAsIDUpKTsKKworLy8gVGVzdHMgdGhh
dCBtYWNyb3MgaW4gdGVzdCBuYW1lcyBhcmUgZXhwYW5kZWQgY29ycmVjdGx5LgorY2xhc3MgTWFj
cm9OYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7fTsKKworI2RlZmluZSBQ
UkVGSVhfV0lUSF9GT08odGVzdF9uYW1lKSBGb28jI3Rlc3RfbmFtZQorI2RlZmluZSBQUkVGSVhf
V0lUSF9NQUNSTyh0ZXN0X25hbWUpIE1hY3JvIyN0ZXN0X25hbWUKKworVEVTVF9QKFBSRUZJWF9X
SVRIX01BQ1JPKE5hbWluZ1Rlc3QpLCBQUkVGSVhfV0lUSF9GT08oU29tZVRlc3ROYW1lKSkgewor
ICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQorICAgICA6OnRl
c3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOworCisg
IEVYUEVDVF9TVFJFUSgiRm9ydHlUd28vTWFjcm9OYW1pbmdUZXN0IiwgdGVzdF9pbmZvLT50ZXN0
X2Nhc2VfbmFtZSgpKTsKKyAgRVhQRUNUX1NUUkVRKCJGb29Tb21lVGVzdE5hbWUiLCB0ZXN0X2lu
Zm8tPm5hbWUoKSk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEZvcnR5VHdvLCBNYWNy
b05hbWluZ1Rlc3QsIFZhbHVlcyg0MikpOworCisvLyBUZXN0cyB0aGUgc2FtZSB0aGluZyBmb3Ig
bm9uLXBhcmFtZXRyaXplZCB0ZXN0cy4KK2NsYXNzIE1hY3JvTmFtaW5nVGVzdE5vblBhcmFtZXRy
aXplZCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK1RFU1RfRihQUkVGSVhfV0lUSF9N
QUNSTyhOYW1pbmdUZXN0Tm9uUGFyYW1ldHJpemVkKSwKKyAgICAgICBQUkVGSVhfV0lUSF9GT08o
U29tZVRlc3ROYW1lKSkgeworICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0
X2luZm8gPQorICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50
X3Rlc3RfaW5mbygpOworCisgIEVYUEVDVF9TVFJFUSgiTWFjcm9OYW1pbmdUZXN0Tm9uUGFyYW1l
dHJpemVkIiwgdGVzdF9pbmZvLT50ZXN0X2Nhc2VfbmFtZSgpKTsKKyAgRVhQRUNUX1NUUkVRKCJG
b29Tb21lVGVzdE5hbWUiLCB0ZXN0X2luZm8tPm5hbWUoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQg
dXNlciBzdXBwbGllZCBjdXN0b20gcGFyYW1ldGVyIG5hbWVzIGFyZSB3b3JraW5nIGNvcnJlY3Rs
eS4KKy8vIFJ1bnMgdGhlIHRlc3Qgd2l0aCBhIGJ1aWx0aW4gaGVscGVyIG1ldGhvZCB3aGljaCB1
c2VzIFByaW50VG9TdHJpbmcsCisvLyBhcyB3ZWxsIGFzIGEgY3VzdG9tIGZ1bmN0aW9uIGFuZCBj
dXN0b20gZnVuY3RvciB0byBlbnN1cmUgYWxsIHBvc3NpYmxlCisvLyB1c2VzIHdvcmsgY29ycmVj
dGx5LgorY2xhc3MgQ3VzdG9tRnVuY3Rvck5hbWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJh
bTxzdGQ6OnN0cmluZz4ge307CitURVNUX1AoQ3VzdG9tRnVuY3Rvck5hbWluZ1Rlc3QsIEN1c3Rv
bVRlc3ROYW1lcykge30KKworc3RydWN0IEN1c3RvbVBhcmFtTmFtZUZ1bmN0b3IgeworICBzdGQ6
OnN0cmluZyBvcGVyYXRvcigpKGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzxzdGQ6OnN0
cmluZz4mIGluZikgeworICAgIHJldHVybiBpbmYucGFyYW07CisgIH0KK307CisKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKEN1c3RvbVBhcmFtTmFtZUZ1bmN0b3IsCisgICAgICAgICAgICAgICAg
ICAgICAgICBDdXN0b21GdW5jdG9yTmFtaW5nVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IFZhbHVlcyhzdGQ6OnN0cmluZygiRnVuY3Rvck5hbWUiKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICBDdXN0b21QYXJhbU5hbWVGdW5jdG9yKCkpOworCitJTlNUQU5USUFURV9URVNUX0NBU0Vf
UChBbGxBbGxvd2VkQ2hhcmFjdGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZ1
bmN0b3JOYW1pbmdUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKCJhYmNkZWZn
aGlqa2xtbm9wcXJzdHV2d3h5eiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFC
Q0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiMDEyMzQ1Njc4OTBfIiksCisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21QYXJhbU5h
bWVGdW5jdG9yKCkpOworCitpbmxpbmUgc3RkOjpzdHJpbmcgQ3VzdG9tUGFyYW1OYW1lRnVuY3Rp
b24oCisgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHN0ZDo6c3RyaW5nPiYgaW5m
KSB7CisgIHJldHVybiBpbmYucGFyYW07Cit9CisKK2NsYXNzIEN1c3RvbUZ1bmN0aW9uTmFtaW5n
VGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPHN0ZDo6c3RyaW5nPiB7fTsKK1RFU1RfUChDdXN0
b21GdW5jdGlvbk5hbWluZ1Rlc3QsIEN1c3RvbVRlc3ROYW1lcykge30KKworSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoQ3VzdG9tUGFyYW1OYW1lRnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICBDdXN0b21GdW5jdGlvbk5hbWluZ1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBW
YWx1ZXMoc3RkOjpzdHJpbmcoIkZ1bmN0aW9uTmFtZSIpKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEN1c3RvbVBhcmFtTmFtZUZ1bmN0aW9uKTsKKworI2lmIEdURVNUX0xBTkdfQ1hYMTEKKwor
Ly8gVGVzdCBjdXN0b20gbmFtaW5nIHdpdGggYSBsYW1iZGEKKworY2xhc3MgQ3VzdG9tTGFtYmRh
TmFtaW5nVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPHN0ZDo6c3RyaW5nPiB7fTsKK1RFU1Rf
UChDdXN0b21MYW1iZGFOYW1pbmdUZXN0LCBDdXN0b21UZXN0TmFtZXMpIHt9CisKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKEN1c3RvbVBhcmFtTmFtZUxhbWJkYSwgQ3VzdG9tTGFtYmRhTmFtaW5n
VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhzdGQ6OnN0cmluZygiTGFtYmRh
TmFtZSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtdKGNvbnN0IDo6dGVzdGluZzo6VGVz
dFBhcmFtSW5mbzxzdGQ6OnN0cmluZz4mIGluZikgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gaW5mLnBhcmFtOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisKKyNlbmRp
ZiAgLy8gR1RFU1RfTEFOR19DWFgxMQorCitURVNUKEN1c3RvbU5hbWluZ1Rlc3QsIENoZWNrTmFt
ZVJlZ2lzdHJ5KSB7CisgIDo6dGVzdGluZzo6VW5pdFRlc3QqIHVuaXRfdGVzdCA9IDo6dGVzdGlu
Zzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCk7CisgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiB0ZXN0
X25hbWVzOworICBmb3IgKGludCBjYXNlX251bSA9IDA7CisgICAgICAgY2FzZV9udW0gPCB1bml0
X3Rlc3QtPnRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpOworICAgICAgICsrY2FzZV9udW0pIHsKKyAg
ICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RDYXNlKiB0ZXN0X2Nhc2UgPSB1bml0X3Rlc3QtPkdldFRl
c3RDYXNlKGNhc2VfbnVtKTsKKyAgICBmb3IgKGludCB0ZXN0X251bSA9IDA7CisgICAgICAgICB0
ZXN0X251bSA8IHRlc3RfY2FzZS0+dG90YWxfdGVzdF9jb3VudCgpOworICAgICAgICAgKyt0ZXN0
X251bSkgeworICAgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogdGVzdF9pbmZvID0gdGVz
dF9jYXNlLT5HZXRUZXN0SW5mbyh0ZXN0X251bSk7CisgICAgICB0ZXN0X25hbWVzLmluc2VydChz
dGQ6OnN0cmluZyh0ZXN0X2luZm8tPm5hbWUoKSkpOworICAgIH0KKyAgfQorICBFWFBFQ1RfRVEo
MXUsIHRlc3RfbmFtZXMuY291bnQoIkN1c3RvbVRlc3ROYW1lcy9GdW5jdG9yTmFtZSIpKTsKKyAg
RVhQRUNUX0VRKDF1LCB0ZXN0X25hbWVzLmNvdW50KCJDdXN0b21UZXN0TmFtZXMvRnVuY3Rpb25O
YW1lIikpOworI2lmIEdURVNUX0xBTkdfQ1hYMTEKKyAgRVhQRUNUX0VRKDF1LCB0ZXN0X25hbWVz
LmNvdW50KCJDdXN0b21UZXN0TmFtZXMvTGFtYmRhTmFtZSIpKTsKKyNlbmRpZiAgLy8gR1RFU1Rf
TEFOR19DWFgxMQorfQorCisvLyBUZXN0IGEgbnVtZXJpYyBuYW1lIHRvIGVuc3VyZSBQcmludFRv
U3RyaW5nUGFyYW1OYW1lIHdvcmtzIGNvcnJlY3RseS4KKworY2xhc3MgQ3VzdG9tSW50ZWdlck5h
bWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHt9OworCitURVNUX1AoQ3VzdG9t
SW50ZWdlck5hbWluZ1Rlc3QsIFRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzKSB7CisgIGNvbnN0IDo6
dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGluZzo6VW5p
dFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisgIE1lc3NhZ2UgdGVz
dF9uYW1lX3N0cmVhbTsKKyAgdGVzdF9uYW1lX3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3JyZWN0
TmFtZXMvIiA8PCBHZXRQYXJhbSgpOworICBFWFBFQ1RfU1RSRVEodGVzdF9uYW1lX3N0cmVhbS5H
ZXRTdHJpbmcoKS5jX3N0cigpLCB0ZXN0X2luZm8tPm5hbWUoKSk7Cit9CisKK0lOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKFByaW50VG9TdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0
b21JbnRlZ2VyTmFtaW5nVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlKDAsIDUp
LAorICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1O
YW1lKCkpOworCisvLyBUZXN0IGEgY3VzdG9tIHN0cnVjdCB3aXRoIFByaW50VG9TdHJpbmcuCisK
K3N0cnVjdCBDdXN0b21TdHJ1Y3QgeworICBleHBsaWNpdCBDdXN0b21TdHJ1Y3QoaW50IHZhbHVl
KSA6IHgodmFsdWUpIHt9CisgIGludCB4OworfTsKKworc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8
KHN0ZDo6b3N0cmVhbSYgc3RyZWFtLCBjb25zdCBDdXN0b21TdHJ1Y3QmIHZhbCkgeworICBzdHJl
YW0gPDwgdmFsLng7CisgIHJldHVybiBzdHJlYW07Cit9CisKK2NsYXNzIEN1c3RvbVN0cnVjdE5h
bWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxDdXN0b21TdHJ1Y3Q+IHt9OworCitURVNU
X1AoQ3VzdG9tU3RydWN0TmFtaW5nVGVzdCwgVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMpIHsKKyAg
Y29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0
aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKyAgTWVz
c2FnZSB0ZXN0X25hbWVfc3RyZWFtOworICB0ZXN0X25hbWVfc3RyZWFtIDw8ICJUZXN0c1JlcG9y
dENvcnJlY3ROYW1lcy8iIDw8IEdldFBhcmFtKCk7CisgIEVYUEVDVF9TVFJFUSh0ZXN0X25hbWVf
c3RyZWFtLkdldFN0cmluZygpLmNfc3RyKCksIHRlc3RfaW5mby0+bmFtZSgpKTsKK30KKworSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoUHJpbnRUb1N0cmluZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEN1c3RvbVN0cnVjdE5hbWluZ1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1
ZXMoQ3VzdG9tU3RydWN0KDApLCBDdXN0b21TdHJ1Y3QoMSkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1OYW1lKCkpOworCisvLyBUZXN0IHRo
YXQgdXNpbmcgYSBzdGF0ZWZ1bCBwYXJhbWV0ZXIgbmFtaW5nIGZ1bmN0aW9uIHdvcmtzIGFzIGV4
cGVjdGVkLgorCitzdHJ1Y3QgU3RhdGVmdWxOYW1pbmdGdW5jdG9yIHsKKyAgU3RhdGVmdWxOYW1p
bmdGdW5jdG9yKCkgOiBzdW0oMCkge30KKyAgc3RkOjpzdHJpbmcgb3BlcmF0b3IoKShjb25zdCA6
OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88aW50PiYgaW5mbykgeworICAgIGludCB2YWx1ZSA9IGlu
Zm8ucGFyYW0gKyBzdW07CisgICAgc3VtICs9IGluZm8ucGFyYW07CisgICAgcmV0dXJuIDo6dGVz
dGluZzo6UHJpbnRUb1N0cmluZyh2YWx1ZSk7CisgIH0KKyAgaW50IHN1bTsKK307CisKK2NsYXNz
IFN0YXRlZnVsTmFtaW5nVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50
PiB7CisgcHJvdGVjdGVkOgorICBTdGF0ZWZ1bE5hbWluZ1Rlc3QoKSA6IHN1bV8oMCkge30KKyAg
aW50IHN1bV87Cit9OworCitURVNUX1AoU3RhdGVmdWxOYW1pbmdUZXN0LCBUZXN0c1JlcG9ydENv
cnJlY3ROYW1lcykgeworICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2lu
Zm8gPQorICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rl
c3RfaW5mbygpOworICBzdW1fICs9IEdldFBhcmFtKCk7CisgIE1lc3NhZ2UgdGVzdF9uYW1lX3N0
cmVhbTsKKyAgdGVzdF9uYW1lX3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMvIiA8
PCBzdW1fOworICBFWFBFQ1RfU1RSRVEodGVzdF9uYW1lX3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0
cigpLCB0ZXN0X2luZm8tPm5hbWUoKSk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFN0
YXRlZnVsTmFtaW5nRnVuY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlZnVsTmFt
aW5nVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlKDAsIDUpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgU3RhdGVmdWxOYW1pbmdGdW5jdG9yKCkpOworCisvLyBDbGFzcyB0aGF0
IGNhbm5vdCBiZSBzdHJlYW1lZCBpbnRvIGFuIG9zdHJlYW0uICBJdCBuZWVkcyB0byBiZSBjb3B5
YWJsZQorLy8gKGFuZCwgaW4gY2FzZSBvZiBNU1ZDLCBhbHNvIGFzc2lnbmFibGUpIGluIG9yZGVy
IHRvIGJlIGEgdGVzdCBwYXJhbWV0ZXIKKy8vIHR5cGUuICBJdHMgZGVmYXVsdCBjb3B5IGNvbnN0
cnVjdG9yIGFuZCBhc3NpZ25tZW50IG9wZXJhdG9yIGRvIGV4YWN0bHkKKy8vIHdoYXQgd2UgbmVl
ZC4KK2NsYXNzIFVuc3RyZWFtYWJsZSB7CisgcHVibGljOgorICBleHBsaWNpdCBVbnN0cmVhbWFi
bGUoaW50IHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KKworIHByaXZhdGU6CisgIGludCB2YWx1
ZV87Cit9OworCitjbGFzcyBDb21tZW50VGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPFVuc3Ry
ZWFtYWJsZT4ge307CisKK1RFU1RfUChDb21tZW50VGVzdCwgVGVzdHNDb3JyZWN0bHlSZXBvcnRV
bnN0cmVhbWFibGVQYXJhbXMpIHsKKyAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3Qg
dGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3Vy
cmVudF90ZXN0X2luZm8oKTsKKworICBFWFBFQ1RfRVEoOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5n
KEdldFBhcmFtKCkpLCB0ZXN0X2luZm8tPnZhbHVlX3BhcmFtKCkpOworfQorCitJTlNUQU5USUFU
RV9URVNUX0NBU0VfUChJbnN0YW50aWF0aW9uV2l0aENvbW1lbnRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgQ29tbWVudFRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoVW5z
dHJlYW1hYmxlKDEpKSk7CisKKy8vIFZlcmlmeSB0aGF0IHdlIGNhbiBjcmVhdGUgYSBoaWVyYXJj
aHkgb2YgdGVzdCBmaXh0dXJlcywgd2hlcmUgdGhlIGJhc2UKKy8vIGNsYXNzIGZpeHR1cmUgaXMg
bm90IHBhcmFtZXRlcml6ZWQgYW5kIHRoZSBkZXJpdmVkIGNsYXNzIGlzLiBJbiB0aGlzIGNhc2UK
Ky8vIFBhcmFtZXRlcml6ZWREZXJpdmVkVGVzdCBpbmhlcml0cyBmcm9tIE5vblBhcmFtZXRlcml6
ZWRCYXNlVGVzdC4gIFdlCisvLyBwZXJmb3JtIHNpbXBsZSB0ZXN0cyBvbiBib3RoLgorY2xhc3Mg
Tm9uUGFyYW1ldGVyaXplZEJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHVi
bGljOgorICBOb25QYXJhbWV0ZXJpemVkQmFzZVRlc3QoKSA6IG5fKDE3KSB7IH0KKyBwcm90ZWN0
ZWQ6CisgIGludCBuXzsKK307CisKK2NsYXNzIFBhcmFtZXRlcml6ZWREZXJpdmVkVGVzdCA6IHB1
YmxpYyBOb25QYXJhbWV0ZXJpemVkQmFzZVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8aW50PiB7CisgcHJv
dGVjdGVkOgorICBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3QoKSA6IGNvdW50XygwKSB7IH0KKyAg
aW50IGNvdW50XzsKKyAgc3RhdGljIGludCBnbG9iYWxfY291bnRfOworfTsKKworaW50IFBhcmFt
ZXRlcml6ZWREZXJpdmVkVGVzdDo6Z2xvYmFsX2NvdW50XyA9IDA7CisKK1RFU1RfRihOb25QYXJh
bWV0ZXJpemVkQmFzZVRlc3QsIEZpeHR1cmVJc0luaXRpYWxpemVkKSB7CisgIEVYUEVDVF9FUSgx
Nywgbl8pOworfQorCitURVNUX1AoUGFyYW1ldGVyaXplZERlcml2ZWRUZXN0LCBTZWVzU2VxdWVu
Y2UpIHsKKyAgRVhQRUNUX0VRKDE3LCBuXyk7CisgIEVYUEVDVF9FUSgwLCBjb3VudF8rKyk7Cisg
IEVYUEVDVF9FUShHZXRQYXJhbSgpLCBnbG9iYWxfY291bnRfKyspOworfQorCitjbGFzcyBQYXJh
bWV0ZXJpemVkRGVhdGhUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+
IHsgfTsKKworVEVTVF9GKFBhcmFtZXRlcml6ZWREZWF0aFRlc3QsIEdldFBhcmFtRGllc0Zyb21U
ZXN0RikgeworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKEdldFBhcmFtKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIi4qIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdCAuKiIpOwor
fQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChSYW5nZVplcm9Ub0ZpdmUsIFBhcmFtZXRlcml6
ZWREZXJpdmVkVGVzdCwgUmFuZ2UoMCwgNSkpOworCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFy
ICoqYXJndikgeworICAvLyBVc2VkIGluIFRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UuCisg
IEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChUZXN0R2VuZXJhdGlvblRlc3Q6OkVudmlyb25tZW50
OjpJbnN0YW5jZSgpKTsKKyAgLy8gVXNlZCBpbiBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCB0ZXN0
IGNhc2UuIFRlc3RzIHRoYXQgdGhlIHVwZGF0ZWQgdmFsdWUKKyAgLy8gd2lsbCBiZSBwaWNrZWQg
dXAgZm9yIGluc3RhbnRpYXRpbmcgdGVzdHMgaW4gR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QuCisg
IEdlbmVyYXRvckV2YWx1YXRpb25UZXN0OjpzZXRfcGFyYW1fdmFsdWUoMSk7CisKKyAgOjp0ZXN0
aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgLy8gVXNlZCBpbiBHZW5lcmF0
b3JFdmFsdWF0aW9uVGVzdCB0ZXN0IGNhc2UuIFRlc3RzIHRoYXQgdmFsdWUgdXBkYXRlZAorICAv
LyBoZXJlIHdpbGwgTk9UIGJlIHVzZWQgZm9yIGluc3RhbnRpYXRpbmcgdGVzdHMgaW4KKyAgLy8g
R2VuZXJhdG9yRXZhbHVhdGlvblRlc3QuCisgIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0OjpzZXRf
cGFyYW1fdmFsdWUoMik7CisKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRl
c3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0
LXRlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42MzJhNjFmNDkyNmJhOTIyNTE1OWRiNDY5ODEwZTQxY2FjMGQy
MGM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8vIENvcHlyaWdodCAy
MDA4LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgor
Ly8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0
aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLworLy8gVGhpcyBoZWFk
ZXIgZmlsZSBwcm92aWRlcyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5Cisv
LyBmb3IgdGVzdGluZyBHb29nbGUgVGVzdCBpdHNlbGYuCisKKyNpZm5kZWYgR1RFU1RfVEVTVF9H
VEVTVF9QQVJBTV9URVNUX1RFU1RfSF8KKyNkZWZpbmUgR1RFU1RfVEVTVF9HVEVTVF9QQVJBTV9U
RVNUX1RFU1RfSF8KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKy8vIFRlc3QgZml4dHVy
ZSBmb3IgdGVzdGluZyBkZWZpbml0aW9uIGFuZCBpbnN0YW50aWF0aW9uIG9mIGEgdGVzdAorLy8g
aW4gc2VwYXJhdGUgdHJhbnNsYXRpb24gdW5pdHMuCitjbGFzcyBFeHRlcm5hbEluc3RhbnRpYXRp
b25UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHsKK307CisKKy8v
IFRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyBpbnN0YW50aWF0aW9uIG9mIGEgdGVzdCBpbiBtdWx0
aXBsZQorLy8gdHJhbnNsYXRpb24gdW5pdHMuCitjbGFzcyBJbnN0YW50aWF0aW9uSW5NdWx0aXBs
ZVRyYW5zbGFpb25Vbml0c1Rlc3QKKyAgICA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08aW50PiB7Cit9OworCisjZW5kaWYgIC8vIEdURVNUX1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9U
RVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtcGFyYW0tdGVzdDItdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC1wYXJhbS10ZXN0Mi10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1YmI5NDVjMmY4ZWQyOWZk
OTA4NTZiMjNlMDNjMDFlMmE4NDMwNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdDItdGVzdC5jYwpAQCAtMCwwICsx
LDYxIEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLwor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8v
CisvLyBUZXN0cyBmb3IgR29vZ2xlIFRlc3QgaXRzZWxmLiAgVGhpcyB2ZXJpZmllcyB0aGF0IHRo
ZSBiYXNpYyBjb25zdHJ1Y3RzIG9mCisvLyBHb29nbGUgVGVzdCB3b3JrLgorCisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJ0ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0
LmgiCisKK3VzaW5nIDo6dGVzdGluZzo6VmFsdWVzOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6UGFyYW1HZW5lcmF0b3I7CisKKy8vIFRlc3RzIHRoYXQgZ2VuZXJhdG9ycyBkZWZpbmVkIGlu
IGEgZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXQKKy8vIGFyZSBmdW5jdGlvbmFsLiBUaGUgdGVz
dCB1c2luZyBleHRlcm5fZ2VuIGlzIGRlZmluZWQKKy8vIGluIGdvb2dsZXRlc3QtcGFyYW0tdGVz
dC10ZXN0LmNjLgorUGFyYW1HZW5lcmF0b3I8aW50PiBleHRlcm5fZ2VuID0gVmFsdWVzKDMzKTsK
KworLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBkZWZpbmVk
IGluIG9uZSB0cmFuc2xhdGlvbiB1bml0CisvLyBhbmQgaW5zdGFudGlhdGVkIGluIGFub3RoZXIu
IFRoZSB0ZXN0IGlzIGRlZmluZWQgaW4KKy8vIGdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmNj
IGFuZCBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0IGZpeHR1cmUgY2xhc3MgaXMKKy8vIGRlZmlu
ZWQgaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmguCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChN
dWx0aXBsZXNPZjMzLAorICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxJbnN0YW50aWF0
aW9uVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygzMywgNjYpKTsKKworLy8g
VGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBpbnN0YW50aWF0ZWQK
Ky8vIGluIG11bHRpcGxlIHRyYW5zbGF0aW9uIHVuaXRzLiBBbm90aGVyIGluc3RhbnRpYXRpb24g
aXMgZGVmaW5lZAorLy8gaW4gZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MgYW5kCisvLyBJ
bnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QgZml4dHVyZSBpcyBkZWZp
bmVkIGluCisvLyBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaAorSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoU2VxdWVuY2UyLAorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbkluTXVs
dGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVz
KDQyKjMsIDQyKjQsIDQyKjUpKTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LXBvcnQtdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1wb3J0LXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk5MzE2Zjk1YjYzN2Fj
YTkyZmI1YTE1NDRlYzdmYzI3YzJlZmIyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wb3J0LXRlc3QuY2MKQEAgLTAsMCArMSwxMzAw
IEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
Ky8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8g
VGhpcyBmaWxlIHRlc3RzIHRoZSBpbnRlcm5hbCBjcm9zcy1wbGF0Zm9ybSBzdXBwb3J0IHV0aWxp
dGllcy4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oIgorCisjaWYgR1RFU1RfT1NfTUFDCisjIGluY2x1ZGUgPHRpbWUuaD4KKyNlbmRp
ZiAgLy8gR1RFU1RfT1NfTUFDCisKKyNpbmNsdWRlIDxsaXN0PgorI2luY2x1ZGUgPHV0aWxpdHk+
ICAvLyBGb3Igc3RkOjpwYWlyIGFuZCBzdGQ6Om1ha2VfcGFpci4KKyNpbmNsdWRlIDx2ZWN0b3I+
CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5o
IgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKwordXNpbmcgc3RkOjptYWtl
X3BhaXI7Cit1c2luZyBzdGQ6OnBhaXI7CisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFj
ZSBpbnRlcm5hbCB7CisKK1RFU1QoSXNYRGlnaXRUZXN0LCBXb3Jrc0Zvck5hcnJvd0FzY2lpKSB7
CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KCcwJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgn
OScpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoJ0EnKSk7CisgIEVYUEVDVF9UUlVFKElzWERp
Z2l0KCdGJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgnYScpKTsKKyAgRVhQRUNUX1RSVUUo
SXNYRGlnaXQoJ2YnKSk7CisKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KCctJykpOworICBFWFBF
Q1RfRkFMU0UoSXNYRGlnaXQoJ2cnKSk7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdCgnRycpKTsK
K30KKworVEVTVChJc1hEaWdpdFRlc3QsIFJldHVybnNGYWxzZUZvck5hcnJvd05vbkFzY2lpKSB7
CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdChzdGF0aWNfY2FzdDxjaGFyPignXHg4MCcpKSk7Cisg
IEVYUEVDVF9GQUxTRShJc1hEaWdpdChzdGF0aWNfY2FzdDxjaGFyPignMCcgfCAnXHg4MCcpKSk7
Cit9CisKK1RFU1QoSXNYRGlnaXRUZXN0LCBXb3Jrc0ZvcldpZGVBc2NpaSkgeworICBFWFBFQ1Rf
VFJVRShJc1hEaWdpdChMJzAnKSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnOScpKTsKKyAg
RVhQRUNUX1RSVUUoSXNYRGlnaXQoTCdBJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdChMJ0Yn
KSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnYScpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGln
aXQoTCdmJykpOworCisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdChMJy0nKSk7CisgIEVYUEVDVF9G
QUxTRShJc1hEaWdpdChMJ2cnKSk7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdChMJ0cnKSk7Cit9
CisKK1RFU1QoSXNYRGlnaXRUZXN0LCBSZXR1cm5zRmFsc2VGb3JXaWRlTm9uQXNjaWkpIHsKKyAg
RVhQRUNUX0ZBTFNFKElzWERpZ2l0KHN0YXRpY19jYXN0PHdjaGFyX3Q+KDB4ODApKSk7CisgIEVY
UEVDVF9GQUxTRShJc1hEaWdpdChzdGF0aWNfY2FzdDx3Y2hhcl90PihMJzAnIHwgMHg4MCkpKTsK
KyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KHN0YXRpY19jYXN0PHdjaGFyX3Q+KEwnMCcgfCAweDEw
MCkpKTsKK30KKworY2xhc3MgQmFzZSB7CisgcHVibGljOgorICAvLyBDb3B5IGNvbnN0cnVjdG9y
IGFuZCBhc3NpZ25tZW50IG9wZXJhdG9yIGRvIGV4YWN0bHkgd2hhdCB3ZSBuZWVkLCBzbyB3ZQor
ICAvLyB1c2UgdGhlbS4KKyAgQmFzZSgpIDogbWVtYmVyXygwKSB7fQorICBleHBsaWNpdCBCYXNl
KGludCBuKSA6IG1lbWJlcl8obikge30KKyAgdmlydHVhbCB+QmFzZSgpIHt9CisgIGludCBtZW1i
ZXIoKSB7IHJldHVybiBtZW1iZXJfOyB9CisKKyBwcml2YXRlOgorICBpbnQgbWVtYmVyXzsKK307
CisKK2NsYXNzIERlcml2ZWQgOiBwdWJsaWMgQmFzZSB7CisgcHVibGljOgorICBleHBsaWNpdCBE
ZXJpdmVkKGludCBuKSA6IEJhc2Uobikge30KK307CisKK1RFU1QoSW1wbGljaXRDYXN0VGVzdCwg
Q29udmVydHNQb2ludGVycykgeworICBEZXJpdmVkIGRlcml2ZWQoMCk7CisgIEVYUEVDVF9UUlVF
KCZkZXJpdmVkID09IDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88QmFzZSo+KCZk
ZXJpdmVkKSk7Cit9CisKK1RFU1QoSW1wbGljaXRDYXN0VGVzdCwgQ2FuVXNlSW5oZXJpdGFuY2Up
IHsKKyAgRGVyaXZlZCBkZXJpdmVkKDEpOworICBCYXNlIGJhc2UgPSA6OnRlc3Rpbmc6OmludGVy
bmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+KGRlcml2ZWQpOworICBFWFBFQ1RfRVEoZGVyaXZlZC5t
ZW1iZXIoKSwgYmFzZS5tZW1iZXIoKSk7Cit9CisKK2NsYXNzIENhc3RhYmxlIHsKKyBwdWJsaWM6
CisgIGV4cGxpY2l0IENhc3RhYmxlKGJvb2wqIGNvbnZlcnRlZCkgOiBjb252ZXJ0ZWRfKGNvbnZl
cnRlZCkge30KKyAgb3BlcmF0b3IgQmFzZSgpIHsKKyAgICAqY29udmVydGVkXyA9IHRydWU7Cisg
ICAgcmV0dXJuIEJhc2UoKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgYm9vbCogY29udmVydGVkXzsK
K307CisKK1RFU1QoSW1wbGljaXRDYXN0VGVzdCwgQ2FuVXNlTm9uQ29uc3RDYXN0T3BlcmF0b3Ip
IHsKKyAgYm9vbCBjb252ZXJ0ZWQgPSBmYWxzZTsKKyAgQ2FzdGFibGUgY2FzdGFibGUoJmNvbnZl
cnRlZCk7CisgIEJhc2UgYmFzZSA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88
QmFzZT4oY2FzdGFibGUpOworICBFWFBFQ1RfVFJVRShjb252ZXJ0ZWQpOworfQorCitjbGFzcyBD
b25zdENhc3RhYmxlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IENvbnN0Q2FzdGFibGUoYm9vbCog
Y29udmVydGVkKSA6IGNvbnZlcnRlZF8oY29udmVydGVkKSB7fQorICBvcGVyYXRvciBCYXNlKCkg
Y29uc3QgeworICAgICpjb252ZXJ0ZWRfID0gdHJ1ZTsKKyAgICByZXR1cm4gQmFzZSgpOworICB9
CisKKyBwcml2YXRlOgorICBib29sKiBjb252ZXJ0ZWRfOworfTsKKworVEVTVChJbXBsaWNpdENh
c3RUZXN0LCBDYW5Vc2VDb25zdENhc3RPcGVyYXRvck9uQ29uc3RWYWx1ZXMpIHsKKyAgYm9vbCBj
b252ZXJ0ZWQgPSBmYWxzZTsKKyAgY29uc3QgQ29uc3RDYXN0YWJsZSBjb25zdF9jYXN0YWJsZSgm
Y29udmVydGVkKTsKKyAgQmFzZSBiYXNlID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRD
YXN0XzxCYXNlPihjb25zdF9jYXN0YWJsZSk7CisgIEVYUEVDVF9UUlVFKGNvbnZlcnRlZCk7Cit9
CisKK2NsYXNzIENvbnN0QW5kTm9uQ29uc3RDYXN0YWJsZSB7CisgcHVibGljOgorICBDb25zdEFu
ZE5vbkNvbnN0Q2FzdGFibGUoYm9vbCogY29udmVydGVkLCBib29sKiBjb25zdF9jb252ZXJ0ZWQp
CisgICAgICA6IGNvbnZlcnRlZF8oY29udmVydGVkKSwgY29uc3RfY29udmVydGVkXyhjb25zdF9j
b252ZXJ0ZWQpIHt9CisgIG9wZXJhdG9yIEJhc2UoKSB7CisgICAgKmNvbnZlcnRlZF8gPSB0cnVl
OworICAgIHJldHVybiBCYXNlKCk7CisgIH0KKyAgb3BlcmF0b3IgQmFzZSgpIGNvbnN0IHsKKyAg
ICAqY29uc3RfY29udmVydGVkXyA9IHRydWU7CisgICAgcmV0dXJuIEJhc2UoKTsKKyAgfQorCisg
cHJpdmF0ZToKKyAgYm9vbCogY29udmVydGVkXzsKKyAgYm9vbCogY29uc3RfY29udmVydGVkXzsK
K307CisKK1RFU1QoSW1wbGljaXRDYXN0VGVzdCwgQ2FuU2VsZWN0QmV0d2VlbkNvbnN0QW5kTm9u
Q29uc3RDYXNyQXBwcm9wcmlhdGVseSkgeworICBib29sIGNvbnZlcnRlZCA9IGZhbHNlOworICBi
b29sIGNvbnN0X2NvbnZlcnRlZCA9IGZhbHNlOworICBDb25zdEFuZE5vbkNvbnN0Q2FzdGFibGUg
Y2FzdGFibGUoJmNvbnZlcnRlZCwgJmNvbnN0X2NvbnZlcnRlZCk7CisgIEJhc2UgYmFzZSA9IDo6
dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88QmFzZT4oY2FzdGFibGUpOworICBFWFBF
Q1RfVFJVRShjb252ZXJ0ZWQpOworICBFWFBFQ1RfRkFMU0UoY29uc3RfY29udmVydGVkKTsKKwor
ICBjb252ZXJ0ZWQgPSBmYWxzZTsKKyAgY29uc3RfY29udmVydGVkID0gZmFsc2U7CisgIGNvbnN0
IENvbnN0QW5kTm9uQ29uc3RDYXN0YWJsZSBjb25zdF9jYXN0YWJsZSgmY29udmVydGVkLCAmY29u
c3RfY29udmVydGVkKTsKKyAgYmFzZSA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2Fz
dF88QmFzZT4oY29uc3RfY2FzdGFibGUpOworICBFWFBFQ1RfRkFMU0UoY29udmVydGVkKTsKKyAg
RVhQRUNUX1RSVUUoY29uc3RfY29udmVydGVkKTsKK30KKworY2xhc3MgVG8geworIHB1YmxpYzoK
KyAgVG8oYm9vbCogY29udmVydGVkKSB7ICpjb252ZXJ0ZWQgPSB0cnVlOyB9ICAvLyBOT0xJTlQK
K307CisKK1RFU1QoSW1wbGljaXRDYXN0VGVzdCwgQ2FuVXNlSW1wbGljaXRDb25zdHJ1Y3Rvcikg
eworICBib29sIGNvbnZlcnRlZCA9IGZhbHNlOworICBUbyB0byA9IDo6dGVzdGluZzo6aW50ZXJu
YWw6OkltcGxpY2l0Q2FzdF88VG8+KCZjb252ZXJ0ZWQpOworICAodm9pZCl0bzsKKyAgRVhQRUNU
X1RSVUUoY29udmVydGVkKTsKK30KKworVEVTVChJdGVyYXRvclRyYWl0c1Rlc3QsIFdvcmtzRm9y
U1RMQ29udGFpbmVySXRlcmF0b3JzKSB7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsCisgICAg
ICBJdGVyYXRvclRyYWl0czwgOjpzdGQ6OnZlY3RvcjxpbnQ+Ojpjb25zdF9pdGVyYXRvcj46OnZh
bHVlX3R5cGU+KCk7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxib29sLAorICAgICAgSXRlcmF0b3JU
cmFpdHM8IDo6c3RkOjpsaXN0PGJvb2w+OjppdGVyYXRvcj46OnZhbHVlX3R5cGU+KCk7Cit9CisK
K1RFU1QoSXRlcmF0b3JUcmFpdHNUZXN0LCBXb3Jrc0ZvclBvaW50ZXJUb05vbkNvbnN0KSB7Cisg
IFN0YXRpY0Fzc2VydFR5cGVFcTxjaGFyLCBJdGVyYXRvclRyYWl0czxjaGFyKj46OnZhbHVlX3R5
cGU+KCk7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCB2b2lkKiwgSXRlcmF0b3JUcmFpdHM8
Y29uc3Qgdm9pZCoqPjo6dmFsdWVfdHlwZT4oKTsKK30KKworVEVTVChJdGVyYXRvclRyYWl0c1Rl
c3QsIFdvcmtzRm9yUG9pbnRlclRvQ29uc3QpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGNoYXIs
IEl0ZXJhdG9yVHJhaXRzPGNvbnN0IGNoYXIqPjo6dmFsdWVfdHlwZT4oKTsKKyAgU3RhdGljQXNz
ZXJ0VHlwZUVxPGNvbnN0IHZvaWQqLAorICAgICAgSXRlcmF0b3JUcmFpdHM8Y29uc3Qgdm9pZCog
Y29uc3QqPjo6dmFsdWVfdHlwZT4oKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgZWxlbWVudF90
eXBlIHR5cGVkZWYgaXMgYXZhaWxhYmxlIGluIHNjb3BlZF9wdHIgYW5kIHJlZmVycworLy8gdG8g
dGhlIHBhcmFtZXRlciB0eXBlLgorVEVTVChTY29wZWRQdHJUZXN0LCBEZWZpbmVzRWxlbWVudFR5
cGUpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c2Nv
cGVkX3B0cjxpbnQ+OjplbGVtZW50X3R5cGU+KCk7Cit9CisKKy8vIEZJWE1FOiBJbXBsZW1lbnQg
VEhFIFJFU1Qgb2Ygc2NvcGVkX3B0ciB0ZXN0cy4KKworVEVTVChHdGVzdENoZWNrU3ludGF4VGVz
dCwgQmVoYXZlc0xpa2VBU2luZ2xlU3RhdGVtZW50KSB7CisgIGlmIChBbHdheXNGYWxzZSgpKQor
ICAgIEdURVNUX0NIRUNLXyhmYWxzZSkgPDwgIlRoaXMgc2hvdWxkIG5ldmVyIGJlIGV4ZWN1dGVk
OyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiSXQncyBhIGNvbXBpbGF0aW9uIHRlc3Qg
b25seS4iOworCisgIGlmIChBbHdheXNUcnVlKCkpCisgICAgR1RFU1RfQ0hFQ0tfKHRydWUpOwor
ICBlbHNlCisgICAgOyAgLy8gTk9MSU5UCisKKyAgaWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgOyAg
Ly8gTk9MSU5UCisgIGVsc2UKKyAgICBHVEVTVF9DSEVDS18odHJ1ZSkgPDwgIiI7Cit9CisKK1RF
U1QoR3Rlc3RDaGVja1N5bnRheFRlc3QsIFdvcmtzV2l0aFN3aXRjaCkgeworICBzd2l0Y2ggKDAp
IHsKKyAgICBjYXNlIDE6CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgR1RFU1Rf
Q0hFQ0tfKHRydWUpOworICB9CisKKyAgc3dpdGNoICgwKQorICAgIGNhc2UgMDoKKyAgICAgIEdU
RVNUX0NIRUNLXyh0cnVlKSA8PCAiQ2hlY2sgZmFpbGVkIGluIHN3aXRjaCBjYXNlIjsKK30KKwor
Ly8gVmVyaWZpZXMgYmVoYXZpb3Igb2YgRm9ybWF0RmlsZUxvY2F0aW9uLgorVEVTVChGb3JtYXRG
aWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzRmlsZUxvY2F0aW9uKSB7CisgIEVYUEVDVF9QUkVEX0ZP
Uk1BVDIoSXNTdWJzdHJpbmcsICJmb28uY2MiLCBGb3JtYXRGaWxlTG9jYXRpb24oImZvby5jYyIs
IDQyKSk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICI0MiIsIEZvcm1hdEZp
bGVMb2NhdGlvbigiZm9vLmNjIiwgNDIpKTsKK30KKworVEVTVChGb3JtYXRGaWxlTG9jYXRpb25U
ZXN0LCBGb3JtYXRzVW5rbm93bkZpbGUpIHsKKyAgRVhQRUNUX1BSRURfRk9STUFUMigKKyAgICAg
IElzU3Vic3RyaW5nLCAidW5rbm93biBmaWxlIiwgRm9ybWF0RmlsZUxvY2F0aW9uKE5VTEwsIDQy
KSk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICI0MiIsIEZvcm1hdEZpbGVM
b2NhdGlvbihOVUxMLCA0MikpOworfQorCitURVNUKEZvcm1hdEZpbGVMb2NhdGlvblRlc3QsIEZv
cm1hdHNVa25vd25MaW5lKSB7CisgIEVYUEVDVF9FUSgiZm9vLmNjOiIsIEZvcm1hdEZpbGVMb2Nh
dGlvbigiZm9vLmNjIiwgLTEpKTsKK30KKworVEVTVChGb3JtYXRGaWxlTG9jYXRpb25UZXN0LCBG
b3JtYXRzVWtub3duRmlsZUFuZExpbmUpIHsKKyAgRVhQRUNUX0VRKCJ1bmtub3duIGZpbGU6Iiwg
Rm9ybWF0RmlsZUxvY2F0aW9uKE5VTEwsIC0xKSk7Cit9CisKKy8vIFZlcmlmaWVzIGJlaGF2aW9y
IG9mIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24uCitURVNUKEZvcm1hdENv
bXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzRmlsZUxvY2F0aW9uKSB7
CisgIEVYUEVDVF9FUSgiZm9vLmNjOjQyIiwgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVM
b2NhdGlvbigiZm9vLmNjIiwgNDIpKTsKK30KKworVEVTVChGb3JtYXRDb21waWxlckluZGVwZW5k
ZW50RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c1Vrbm93bkZpbGUpIHsKKyAgRVhQRUNUX0VRKCJ1
bmtub3duIGZpbGU6NDIiLAorICAgICAgICAgICAgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZp
bGVMb2NhdGlvbihOVUxMLCA0MikpOworfQorCitURVNUKEZvcm1hdENvbXBpbGVySW5kZXBlbmRl
bnRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzVWtub3duTGluZSkgeworICBFWFBFQ1RfRVEoImZv
by5jYyIsIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oImZvby5jYyIsIC0x
KSk7Cit9CisKK1RFU1QoRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvblRlc3Qs
IEZvcm1hdHNVa25vd25GaWxlQW5kTGluZSkgeworICBFWFBFQ1RfRVEoInVua25vd24gZmlsZSIs
IEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oTlVMTCwgLTEpKTsKK30KKwor
I2lmIEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19RTlggfHwgR1RF
U1RfT1NfRlVDSFNJQQordm9pZCogVGhyZWFkRnVuYyh2b2lkKiBkYXRhKSB7CisgIGludGVybmFs
OjpNdXRleCogbXV0ZXggPSBzdGF0aWNfY2FzdDxpbnRlcm5hbDo6TXV0ZXgqPihkYXRhKTsKKyAg
bXV0ZXgtPkxvY2soKTsKKyAgbXV0ZXgtPlVubG9jaygpOworICByZXR1cm4gTlVMTDsKK30KKwor
VEVTVChHZXRUaHJlYWRDb3VudFRlc3QsIFJldHVybnNDb3JyZWN0VmFsdWUpIHsKKyAgY29uc3Qg
c2l6ZV90IHN0YXJ0aW5nX2NvdW50ID0gR2V0VGhyZWFkQ291bnQoKTsKKyAgcHRocmVhZF90ICAg
ICAgIHRocmVhZF9pZDsKKworICBpbnRlcm5hbDo6TXV0ZXggbXV0ZXg7CisgIHsKKyAgICBpbnRl
cm5hbDo6TXV0ZXhMb2NrIGxvY2soJm11dGV4KTsKKyAgICBwdGhyZWFkX2F0dHJfdCAgYXR0cjsK
KyAgICBBU1NFUlRfRVEoMCwgcHRocmVhZF9hdHRyX2luaXQoJmF0dHIpKTsKKyAgICBBU1NFUlRf
RVEoMCwgcHRocmVhZF9hdHRyX3NldGRldGFjaHN0YXRlKCZhdHRyLCBQVEhSRUFEX0NSRUFURV9K
T0lOQUJMRSkpOworCisgICAgY29uc3QgaW50IHN0YXR1cyA9IHB0aHJlYWRfY3JlYXRlKCZ0aHJl
YWRfaWQsICZhdHRyLCAmVGhyZWFkRnVuYywgJm11dGV4KTsKKyAgICBBU1NFUlRfRVEoMCwgcHRo
cmVhZF9hdHRyX2Rlc3Ryb3koJmF0dHIpKTsKKyAgICBBU1NFUlRfRVEoMCwgc3RhdHVzKTsKKyAg
ICBFWFBFQ1RfRVEoc3RhcnRpbmdfY291bnQgKyAxLCBHZXRUaHJlYWRDb3VudCgpKTsKKyAgfQor
CisgIHZvaWQqIGR1bW15OworICBBU1NFUlRfRVEoMCwgcHRocmVhZF9qb2luKHRocmVhZF9pZCwg
JmR1bW15KSk7CisKKyAgLy8gVGhlIE9TIG1heSBub3QgaW1tZWRpYXRlbHkgcmVwb3J0IHRoZSB1
cGRhdGVkIHRocmVhZCBjb3VudCBhZnRlcgorICAvLyBqb2luaW5nIGEgdGhyZWFkLCBjYXVzaW5n
IGZsYWtpbmVzcyBpbiB0aGlzIHRlc3QuIFRvIGNvdW50ZXIgdGhhdCwgd2UKKyAgLy8gd2FpdCBm
b3IgdXAgdG8gLjUgc2Vjb25kcyBmb3IgdGhlIE9TIHRvIHJlcG9ydCB0aGUgY29ycmVjdCB2YWx1
ZS4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyArK2kpIHsKKyAgICBpZiAoR2V0VGhyZWFkQ291
bnQoKSA9PSBzdGFydGluZ19jb3VudCkKKyAgICAgIGJyZWFrOworCisgICAgU2xlZXBNaWxsaXNl
Y29uZHMoMTAwKTsKKyAgfQorCisgIEVYUEVDVF9FUShzdGFydGluZ19jb3VudCwgR2V0VGhyZWFk
Q291bnQoKSk7Cit9CisjZWxzZQorVEVTVChHZXRUaHJlYWRDb3VudFRlc3QsIFJldHVybnNaZXJv
V2hlblVuYWJsZVRvQ291bnRUaHJlYWRzKSB7CisgIEVYUEVDVF9FUSgwVSwgR2V0VGhyZWFkQ291
bnQoKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fCBH
VEVTVF9PU19RTlggfHwgR1RFU1RfT1NfRlVDSFNJQQorCitURVNUKEd0ZXN0Q2hlY2tEZWF0aFRl
c3QsIERpZXNXaXRoQ29ycmVjdE91dHB1dE9uRmFpbHVyZSkgeworICBjb25zdCBib29sIGFfZmFs
c2VfY29uZGl0aW9uID0gZmFsc2U7CisgIGNvbnN0IGNoYXIgcmVnZXhbXSA9CisjaWZkZWYgX01T
Q19WRVIKKyAgICAgImdvb2dsZXRlc3QtcG9ydC10ZXN0XFwuY2NcXChcXGQrXFwpOiIKKyNlbGlm
IEdURVNUX1VTRVNfUE9TSVhfUkUKKyAgICAgImdvb2dsZXRlc3QtcG9ydC10ZXN0XFwuY2M6WzAt
OV0rIgorI2Vsc2UKKyAgICAgImdvb2dsZXRlc3QtcG9ydC10ZXN0XFwuY2M6XFxkKyIKKyNlbmRp
ZiAgLy8gX01TQ19WRVIKKyAgICAgIi4qYV9mYWxzZV9jb25kaXRpb24uKkV4dHJhIGluZm8uKiI7
CisKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChHVEVTVF9DSEVDS18oYV9mYWxzZV9jb25k
aXRpb24pIDw8ICJFeHRyYSBpbmZvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdl
eCk7Cit9CisKKyNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorCitURVNUKEd0ZXN0Q2hlY2tEZWF0
aFRlc3QsIExpdmVzU2lsZW50bHlPblN1Y2Nlc3MpIHsKKyAgRVhQRUNUX0VYSVQoeworICAgICAg
R1RFU1RfQ0hFQ0tfKHRydWUpIDw8ICJFeHRyYSBpbmZvIjsKKyAgICAgIDo6c3RkOjpjZXJyIDw8
ICJTdWNjZXNzXG4iOworICAgICAgZXhpdCgwKTsgfSwKKyAgICAgIDo6dGVzdGluZzo6RXhpdGVk
V2l0aENvZGUoMCksICJTdWNjZXNzIik7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRI
X1RFU1QKKworLy8gVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCBjaG9vc2UgcmVndWxhciBleHBy
ZXNzaW9uIGVuZ2luZSBhcHByb3ByaWF0ZSB0bworLy8gdGhlIHBsYXRmb3JtLiBUaGUgdGVzdCB3
aWxsIHByb2R1Y2UgY29tcGlsZXIgZXJyb3JzIGluIGNhc2Ugb2YgZmFpbHVyZS4KKy8vIEZvciBz
aW1wbGljaXR5LCB3ZSBvbmx5IGNvdmVyIHRoZSBtb3N0IGltcG9ydGFudCBwbGF0Zm9ybXMgaGVy
ZS4KK1RFU1QoUmVnZXhFbmdpbmVTZWxlY3Rpb25UZXN0LCBTZWxlY3RzQ29ycmVjdFJlZ2V4RW5n
aW5lKSB7CisjaWYgIUdURVNUX1VTRVNfUENSRQorIyBpZiBHVEVTVF9IQVNfUE9TSVhfUkUKKwor
ICBFWFBFQ1RfVFJVRShHVEVTVF9VU0VTX1BPU0lYX1JFKTsKKworIyBlbHNlCisKKyAgRVhQRUNU
X1RSVUUoR1RFU1RfVVNFU19TSU1QTEVfUkUpOworCisjIGVuZGlmCisjZW5kaWYgIC8vICFHVEVT
VF9VU0VTX1BDUkUKK30KKworI2lmIEdURVNUX1VTRVNfUE9TSVhfUkUKKworIyBpZiBHVEVTVF9I
QVNfVFlQRURfVEVTVAorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyPgorY2xhc3MgUkVUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKworLy8gRGVmaW5lcyBTdHJpbmdUeXBlcyBhcyB0
aGUgbGlzdCBvZiBhbGwgc3RyaW5nIHR5cGVzIHRoYXQgY2xhc3MgUkUKKy8vIHN1cHBvcnRzLgor
dHlwZWRlZiB0ZXN0aW5nOjpUeXBlczwKKyAgICA6OnN0ZDo6c3RyaW5nLAorIyAgaWYgR1RFU1Rf
SEFTX0dMT0JBTF9TVFJJTkcKKyAgICA6OnN0cmluZywKKyMgIGVuZGlmICAvLyBHVEVTVF9IQVNf
R0xPQkFMX1NUUklORworICAgIGNvbnN0IGNoYXIqPiBTdHJpbmdUeXBlczsKKworVFlQRURfVEVT
VF9DQVNFKFJFVGVzdCwgU3RyaW5nVHlwZXMpOworCisvLyBUZXN0cyBSRSdzIGltcGxpY2l0IGNv
bnN0cnVjdG9ycy4KK1RZUEVEX1RFU1QoUkVUZXN0LCBJbXBsaWNpdENvbnN0cnVjdG9yV29ya3Mp
IHsKKyAgY29uc3QgUkUgZW1wdHkoVHlwZVBhcmFtKCIiKSk7CisgIEVYUEVDVF9TVFJFUSgiIiwg
ZW1wdHkucGF0dGVybigpKTsKKworICBjb25zdCBSRSBzaW1wbGUoVHlwZVBhcmFtKCJoZWxsbyIp
KTsKKyAgRVhQRUNUX1NUUkVRKCJoZWxsbyIsIHNpbXBsZS5wYXR0ZXJuKCkpOworCisgIGNvbnN0
IFJFIG5vcm1hbChUeXBlUGFyYW0oIi4qKFxcdyspIikpOworICBFWFBFQ1RfU1RSRVEoIi4qKFxc
dyspIiwgbm9ybWFsLnBhdHRlcm4oKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUkUncyBjb25zdHJ1
Y3RvcnMgcmVqZWN0IGludmFsaWQgcmVndWxhciBleHByZXNzaW9ucy4KK1RZUEVEX1RFU1QoUkVU
ZXN0LCBSZWplY3RzSW52YWxpZFJlZ2V4KSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsK
KyAgICBjb25zdCBSRSBpbnZhbGlkKFR5cGVQYXJhbSgiPyIpKTsKKyAgfSwgIlwiP1wiIGlzIG5v
dCBhIHZhbGlkIFBPU0lYIEV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbi4iKTsKK30KKworLy8g
VGVzdHMgUkU6OkZ1bGxNYXRjaCgpLgorVFlQRURfVEVTVChSRVRlc3QsIEZ1bGxNYXRjaFdvcmtz
KSB7CisgIGNvbnN0IFJFIGVtcHR5KFR5cGVQYXJhbSgiIikpOworICBFWFBFQ1RfVFJVRShSRTo6
RnVsbE1hdGNoKFR5cGVQYXJhbSgiIiksIGVtcHR5KSk7CisgIEVYUEVDVF9GQUxTRShSRTo6RnVs
bE1hdGNoKFR5cGVQYXJhbSgiYSIpLCBlbXB0eSkpOworCisgIGNvbnN0IFJFIHJlKFR5cGVQYXJh
bSgiYS4qeiIpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oImF6Iiks
IHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJheHl6IiksIHJl
KSk7CisgIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYmF6IiksIHJlKSk7
CisgIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYXp5IiksIHJlKSk7Cit9
CisKKy8vIFRlc3RzIFJFOjpQYXJ0aWFsTWF0Y2goKS4KK1RZUEVEX1RFU1QoUkVUZXN0LCBQYXJ0
aWFsTWF0Y2hXb3JrcykgeworICBjb25zdCBSRSBlbXB0eShUeXBlUGFyYW0oIiIpKTsKKyAgRVhQ
RUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oIiIpLCBlbXB0eSkpOworICBFWFBF
Q1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiYSIpLCBlbXB0eSkpOworCisgIGNv
bnN0IFJFIHJlKFR5cGVQYXJhbSgiYS4qeiIpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxN
YXRjaChUeXBlUGFyYW0oImF6IiksIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0
Y2goVHlwZVBhcmFtKCJheHl6IiksIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0
Y2goVHlwZVBhcmFtKCJiYXoiKSwgcmUpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRj
aChUeXBlUGFyYW0oImF6eSIpLCByZSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OlBhcnRpYWxNYXRj
aChUeXBlUGFyYW0oInp6YSIpLCByZSkpOworfQorCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfVFlQ
RURfVEVTVAorCisjZWxpZiBHVEVTVF9VU0VTX1NJTVBMRV9SRQorCitURVNUKElzSW5TZXRUZXN0
LCBOdWxDaGFySXNOb3RJbkFueVNldCkgeworICBFWFBFQ1RfRkFMU0UoSXNJblNldCgnXDAnLCAi
IikpOworICBFWFBFQ1RfRkFMU0UoSXNJblNldCgnXDAnLCAiXDAiKSk7CisgIEVYUEVDVF9GQUxT
RShJc0luU2V0KCdcMCcsICJhIikpOworfQorCitURVNUKElzSW5TZXRUZXN0LCBXb3Jrc0Zvck5v
bk51bENoYXJzKSB7CisgIEVYUEVDVF9GQUxTRShJc0luU2V0KCdhJywgIkFiIikpOworICBFWFBF
Q1RfRkFMU0UoSXNJblNldCgnYycsICIiKSk7CisKKyAgRVhQRUNUX1RSVUUoSXNJblNldCgnYics
ICJiY2QiKSk7CisgIEVYUEVDVF9UUlVFKElzSW5TZXQoJ2InLCAiYWIiKSk7Cit9CisKK1RFU1Qo
SXNBc2NpaURpZ2l0VGVzdCwgSXNGYWxzZUZvck5vbkRpZ2l0KSB7CisgIEVYUEVDVF9GQUxTRShJ
c0FzY2lpRGlnaXQoJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaURpZ2l0KCcgJykpOwor
ICBFWFBFQ1RfRkFMU0UoSXNBc2NpaURpZ2l0KCcrJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2Np
aURpZ2l0KCctJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaURpZ2l0KCcuJykpOworICBFWFBF
Q1RfRkFMU0UoSXNBc2NpaURpZ2l0KCdhJykpOworfQorCitURVNUKElzQXNjaWlEaWdpdFRlc3Qs
IElzVHJ1ZUZvckRpZ2l0KSB7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlEaWdpdCgnMCcpKTsKKyAg
RVhQRUNUX1RSVUUoSXNBc2NpaURpZ2l0KCcxJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpRGln
aXQoJzUnKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlEaWdpdCgnOScpKTsKK30KKworVEVTVChJ
c0FzY2lpUHVuY3RUZXN0LCBJc0ZhbHNlRm9yTm9uUHVuY3QpIHsKKyAgRVhQRUNUX0ZBTFNFKElz
QXNjaWlQdW5jdCgnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3QoJyAnKSk7Cisg
IEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3QoJ1xuJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2Np
aVB1bmN0KCdhJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVB1bmN0KCcwJykpOworfQorCitU
RVNUKElzQXNjaWlQdW5jdFRlc3QsIElzVHJ1ZUZvclB1bmN0KSB7CisgIGZvciAoY29uc3QgY2hh
ciogcCA9ICJeLSFcIiMkJSYnKCkqKywuLzo7PD0+P0BbXFxdX2B7fH1+IjsgKnA7IHArKykgewor
ICAgIEVYUEVDVF9QUkVEMShJc0FzY2lpUHVuY3QsICpwKTsKKyAgfQorfQorCitURVNUKElzUmVw
ZWF0VGVzdCwgSXNGYWxzZUZvck5vblJlcGVhdENoYXIpIHsKKyAgRVhQRUNUX0ZBTFNFKElzUmVw
ZWF0KCdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCcgJykpOworICBFWFBFQ1RfRkFM
U0UoSXNSZXBlYXQoJ2EnKSk7CisgIEVYUEVDVF9GQUxTRShJc1JlcGVhdCgnMScpKTsKKyAgRVhQ
RUNUX0ZBTFNFKElzUmVwZWF0KCctJykpOworfQorCitURVNUKElzUmVwZWF0VGVzdCwgSXNUcnVl
Rm9yUmVwZWF0Q2hhcikgeworICBFWFBFQ1RfVFJVRShJc1JlcGVhdCgnPycpKTsKKyAgRVhQRUNU
X1RSVUUoSXNSZXBlYXQoJyonKSk7CisgIEVYUEVDVF9UUlVFKElzUmVwZWF0KCcrJykpOworfQor
CitURVNUKElzQXNjaWlXaGl0ZVNwYWNlVGVzdCwgSXNGYWxzZUZvck5vbldoaXRlU3BhY2UpIHsK
KyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXaGl0ZVNwYWNlKCdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNF
KElzQXNjaWlXaGl0ZVNwYWNlKCdhJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdoaXRlU3Bh
Y2UoJzEnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV2hpdGVTcGFjZSgnKycpKTsKKyAgRVhQ
RUNUX0ZBTFNFKElzQXNjaWlXaGl0ZVNwYWNlKCdfJykpOworfQorCitURVNUKElzQXNjaWlXaGl0
ZVNwYWNlVGVzdCwgSXNUcnVlRm9yV2hpdGVTcGFjZSkgeworICBFWFBFQ1RfVFJVRShJc0FzY2lp
V2hpdGVTcGFjZSgnICcpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdoaXRlU3BhY2UoJ1xuJykp
OworICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnXHInKSk7CisgIEVYUEVDVF9UUlVF
KElzQXNjaWlXaGl0ZVNwYWNlKCdcdCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdoaXRlU3Bh
Y2UoJ1x2JykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnXGYnKSk7Cit9CisK
K1RFU1QoSXNBc2NpaVdvcmRDaGFyVGVzdCwgSXNGYWxzZUZvck5vbldvcmRDaGFyKSB7CisgIEVY
UEVDVF9GQUxTRShJc0FzY2lpV29yZENoYXIoJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2Np
aVdvcmRDaGFyKCcrJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdvcmRDaGFyKCcuJykpOwor
ICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdvcmRDaGFyKCcgJykpOworICBFWFBFQ1RfRkFMU0UoSXNB
c2NpaVdvcmRDaGFyKCdcbicpKTsKK30KKworVEVTVChJc0FzY2lpV29yZENoYXJUZXN0LCBJc1Ry
dWVGb3JMZXR0ZXIpIHsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCdhJykpOworICBF
WFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJ2InKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlX
b3JkQ2hhcignQScpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCdaJykpOworfQor
CitURVNUKElzQXNjaWlXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvckRpZ2l0KSB7CisgIEVYUEVDVF9U
UlVFKElzQXNjaWlXb3JkQ2hhcignMCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFy
KCcxJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJzcnKSk7CisgIEVYUEVDVF9U
UlVFKElzQXNjaWlXb3JkQ2hhcignOScpKTsKK30KKworVEVTVChJc0FzY2lpV29yZENoYXJUZXN0
LCBJc1RydWVGb3JVbmRlcnNjb3JlKSB7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcign
XycpKTsKK30KKworVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZvck5vblByaW50YWJs
ZSkgeworICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnXDAnKSk7CisgIEVYUEVDVF9GQUxT
RShJc1ZhbGlkRXNjYXBlKCdcMDA3JykpOworfQorCitURVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJ
c0ZhbHNlRm9yRGlnaXQpIHsKKyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJzAnKSk7Cisg
IEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCc5JykpOworfQorCitURVNUKElzVmFsaWRFc2Nh
cGVUZXN0LCBJc0ZhbHNlRm9yV2hpdGVTcGFjZSkgeworICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVz
Y2FwZSgnICcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJ1xuJykpOworfQorCitU
RVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc0ZhbHNlRm9yU29tZUxldHRlcikgeworICBFWFBFQ1Rf
RkFMU0UoSXNWYWxpZEVzY2FwZSgnYScpKTsKKyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUo
J1onKSk7Cit9CisKK1RFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzVHJ1ZUZvclB1bmN0KSB7Cisg
IEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJy4nKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRF
c2NhcGUoJy0nKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ14nKSk7CisgIEVYUEVD
VF9UUlVFKElzVmFsaWRFc2NhcGUoJyQnKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUo
JygnKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ10nKSk7CisgIEVYUEVDVF9UUlVF
KElzVmFsaWRFc2NhcGUoJ3snKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ3wnKSk7
Cit9CisKK1RFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzVHJ1ZUZvclNvbWVMZXR0ZXIpIHsKKyAg
RVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnZCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVz
Y2FwZSgnRCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgncycpKTsKKyAgRVhQRUNU
X1RSVUUoSXNWYWxpZEVzY2FwZSgnUycpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgn
dycpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnVycpKTsKK30KKworVEVTVChBdG9t
TWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkUHVuY3QpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAnXFwnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ1xcJywgJyAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ18nLCAnLicpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnLics
ICdhJykpOworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXFwnLCAnXFwn
KSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXycsICdfJykpOworICBF
WFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJysnLCAnKycpKTsKKyAgRVhQRUNUX1RS
VUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICcuJywgJy4nKSk7Cit9CisKK1RFU1QoQXRvbU1hdGNo
ZXNDaGFyVGVzdCwgRXNjYXBlZF9kKSB7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ2QnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwg
J2QnLCAnYScpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICcu
JykpOworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICcwJykpOwor
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnOScpKTsKK30KKworVEVT
VChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX0QpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAnRCcsICcwJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICdEJywgJzknKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICdEJywgJ1wwJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0Qn
LCAnYScpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJy0nKSk7
Cit9CisKK1RFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF9zKSB7CisgIEVYUEVDVF9G
QUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShB
dG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnYScpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAncycsICcuJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFy
KHRydWUsICdzJywgJzknKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICdzJywgJyAnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICdc
bicpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJ1x0JykpOwor
fQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfUykgeworICBFWFBFQ1RfRkFM
U0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdTJywgJyAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnXHInKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNo
ZXNDaGFyKHRydWUsICdTJywgJ1wwJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ1MnLCAnYScpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdT
JywgJzknKSk7Cit9CisKK1RFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF93KSB7Cisg
IEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnXDAnKSk7CisgIEVYUEVD
VF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnKycpKTsKKyAgRVhQRUNUX0ZBTFNF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICcgJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICd3JywgJ1xuJykpOworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAndycsICcwJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ3cnLCAnYicpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3Jywg
J0MnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdfJykpOwor
fQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfVykgeworICBFWFBFQ1RfRkFM
U0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJ0EnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnYicpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAnVycsICc5JykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICdXJywgJ18nKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdX
JywgJ1wwJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnKicp
KTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJ1xuJykpOworfQor
CitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRXaGl0ZVNwYWNlKSB7CisgIEVYUEVD
VF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2YnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxT
RShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2YnLCAnXG4nKSk7CisgIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ24nLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ24nLCAnXHInKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ3InLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwg
J3InLCAnYScpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndCcsICdc
MCcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndCcsICd0JykpOwor
ICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd2JywgJ1wwJykpOworICBFWFBF
Q1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd2JywgJ1xmJykpOworCisgIEVYUEVDVF9U
UlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZicsICdcZicpKTsKKyAgRVhQRUNUX1RSVUUoQXRv
bU1hdGNoZXNDaGFyKHRydWUsICduJywgJ1xuJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ3InLCAnXHInKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAndCcsICdcdCcpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd2
JywgJ1x2JykpOworfQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIFVuZXNjYXBlZERvdCkg
eworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnLicsICdcbicpKTsKKwor
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICcuJywgJ1wwJykpOworICBFWFBF
Q1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICcuJywgJy4nKSk7CisgIEVYUEVDVF9UUlVF
KEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4nLCAnYScpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1h
dGNoZXNDaGFyKGZhbHNlLCAnLicsICcgJykpOworfQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRl
c3QsIFVuZXNjYXBlZENoYXIpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcihmYWxz
ZSwgJ2EnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICdh
JywgJ2InKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICckJywgJ2En
KSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnJCcsICckJykpOwor
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICc1JywgJzUnKSk7CisgIEVYUEVD
VF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJ1onLCAnWicpKTsKK30KKworVEVTVChWYWxp
ZGF0ZVJlZ2V4VGVzdCwgR2VuZXJhdGVzRmFpbHVyZUFuZFJldHVybnNGYWxzZUZvckludmFsaWQp
IHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgo
TlVMTCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiTlVMTCBpcyBub3QgYSB2YWxpZCBz
aW1wbGUgcmVndWxhciBleHByZXNzaW9uIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAor
ICAgICAgQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImFcXCIpKSwKKyAgICAgICJTeW50YXgg
ZXJyb3IgYXQgaW5kZXggMSBpbiBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uIFwiYVxcXCI6ICIp
OworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgi
YVxcIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJ1xcJyBjYW5ub3QgYXBwZWFyIGF0
IHRoZSBlbmQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlk
YXRlUmVnZXgoIlxcblxcIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJ1xcJyBjYW5u
b3QgYXBwZWFyIGF0IHRoZSBlbmQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJU
X0ZBTFNFKFZhbGlkYXRlUmVnZXgoIlxcc1xcaGIiKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICJpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBcIlxcaFwiIik7CisgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJeXiIpKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIideJyBjYW4gb25seSBhcHBlYXIgYXQgdGhlIGJlZ2lubmluZyIpOwor
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiLipe
YiIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIideJyBjYW4gb25seSBhcHBlYXIgYXQg
dGhlIGJlZ2lubmluZyIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0Uo
VmFsaWRhdGVSZWdleCgiJCQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICInJCcgY2Fu
IG9ubHkgYXBwZWFyIGF0IHRoZSBlbmQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNT
RVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIl4kYSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIickJyBjYW4gb25seSBhcHBlYXIgYXQgdGhlIGVuZCIpOworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiYShiIikpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiJygnIGlzIHVuc3VwcG9ydGVkIik7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJhYikiKSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICInKScgaXMgdW5zdXBwb3J0ZWQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIlthYiIpKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIidbJyBpcyB1bnN1cHBvcnRlZCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiYXsyIikpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAiJ3snIGlzIHVuc3VwcG9ydGVkIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCI/IikpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAiJz8nIGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVhdGFibGUgdG9rZW4iKTsKKyAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIl4qIikpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAiJyonIGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVhdGFi
bGUgdG9rZW4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlk
YXRlUmVnZXgoIjUqKyIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIicrJyBjYW4gb25s
eSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2VuIik7Cit9CisKK1RFU1QoVmFsaWRhdGVSZWdleFRl
c3QsIFJldHVybnNUcnVlRm9yVmFsaWQpIHsKKyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgi
IikpOworICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCJhIikpOworICBFWFBFQ1RfVFJVRShW
YWxpZGF0ZVJlZ2V4KCIuKiIpKTsKKyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiXmFfKyIp
KTsKKyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiXmFcXHRcXCY/IikpOworICBFWFBFQ1Rf
VFJVRShWYWxpZGF0ZVJlZ2V4KCIwOSokIikpOworICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4
KCJeWiQiKSk7CisgIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoImFcXF5aXFwkXFwoXFwpXFx8
XFxbXFxdXFx7XFx9IikpOworfQorCitURVNUKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFk
VGVzdCwgV29ya3NGb3JaZXJvT3JPbmUpIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlv
bkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImEiLCAiYmEiKSk7CisgIC8vIFJlcGVh
dGluZyBtb3JlIHRoYW4gb25jZS4KKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlvbkFuZFJl
Z2V4QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImIiLCAiYWFiIikpOworCisgIC8vIFJlcGVhdGlu
ZyB6ZXJvIHRpbWVzLgorICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVh
ZChmYWxzZSwgJ2EnLCAnPycsICJiIiwgImJhIikpOworICAvLyBSZXBlYXRpbmcgb25jZS4KKyAg
RVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICdhJywgJz8n
LCAiYiIsICJhYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhl
YWQoZmFsc2UsICcjJywgJz8nLCAiLiIsICIjIyIpKTsKK30KKworVEVTVChNYXRjaFJlcGV0aXRp
b25BbmRSZWdleEF0SGVhZFRlc3QsIFdvcmtzRm9yWmVyb09yTWFueSkgeworICBFWFBFQ1RfRkFM
U0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJyonLCAiYSQiLCAi
YmFhYiIpKTsKKworICAvLyBSZXBlYXRpbmcgemVybyB0aW1lcy4KKyAgRVhQRUNUX1RSVUUoTWF0
Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJyonLCAiYiIsICJiYyIpKTsK
KyAgLy8gUmVwZWF0aW5nIG9uY2UuCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJl
Z2V4QXRIZWFkKGZhbHNlLCAnLicsICcqJywgImIiLCAiYWJjIikpOworICAvLyBSZXBlYXRpbmcg
bW9yZSB0aGFuIG9uY2UuCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRI
ZWFkKHRydWUsICd3JywgJyonLCAiLSIsICJhYl8xLWciKSk7Cit9CisKK1RFU1QoTWF0Y2hSZXBl
dGl0aW9uQW5kUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc0Zvck9uZU9yTWFueSkgeworICBFWFBFQ1Rf
RkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJysnLCAiYSQi
LCAiYmFhYiIpKTsKKyAgLy8gUmVwZWF0aW5nIHplcm8gdGltZXMuCisgIEVYUEVDVF9GQUxTRShN
YXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKycsICJiIiwgImJjIikp
OworCisgIC8vIFJlcGVhdGluZyBvbmNlLgorICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25B
bmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKycsICJiIiwgImFiYyIpKTsKKyAgLy8gUmVwZWF0
aW5nIG1vcmUgdGhhbiBvbmNlLgorICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdl
eEF0SGVhZCh0cnVlLCAndycsICcrJywgIi0iLCAiYWJfMS1nIikpOworfQorCitURVNUKE1hdGNo
UmVnZXhBdEhlYWRUZXN0LCBSZXR1cm5zVHJ1ZUZvckVtcHR5UmVnZXgpIHsKKyAgRVhQRUNUX1RS
VUUoTWF0Y2hSZWdleEF0SGVhZCgiIiwgIiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0
SGVhZCgiIiwgImFiIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc1do
ZW5Eb2xsYXJJc0luUmVnZXgpIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIiQi
LCAiYSIpKTsKKworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCIkIiwgIiIpKTsKKyAg
RVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiYSQiLCAiYSIpKTsKK30KKworVEVTVChNYXRj
aFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NXaGVuUmVnZXhTdGFydHNXaXRoRXNjYXBlU2VxdWVuY2Up
IHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIlxcdyIsICIrIikpOworICBFWFBF
Q1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiXFxXIiwgImFiIikpOworCisgIEVYUEVDVF9UUlVF
KE1hdGNoUmVnZXhBdEhlYWQoIlxcc2EiLCAiXG5hYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hS
ZWdleEF0SGVhZCgiXFxkIiwgIjFhIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0
LCBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhSZXBldGl0aW9uKSB7CisgIEVYUEVDVF9GQUxTRShN
YXRjaFJlZ2V4QXRIZWFkKCIuK2EiLCAiYWJjIikpOworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdl
eEF0SGVhZCgiYT9iIiwgImFhYiIpKTsKKworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFk
KCIuKmEiLCAiYmMxMi1hYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiYT9i
IiwgImIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoImE/YiIsICJhYiIpKTsK
K30KKworVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwKKyAgICAgV29ya3NXaGVuUmVnZXhTdGFy
dHNXaXRoUmVwZXRpb25PZkVzY2FwZVNlcXVlbmNlKSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJl
Z2V4QXRIZWFkKCJcXC4rYSIsICJhYmMiKSk7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRI
ZWFkKCJcXHM/YiIsICIgIGIiKSk7CisKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgi
XFwoKmEiLCAiKCgoKGFiIikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXF4/
YiIsICJeYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxcXD9iIiwgImIi
KSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcXFw/YiIsICJcXGIiKSk7Cit9
CisKK1RFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIE1hdGNoZXNTZXF1ZW50aWFsbHkpIHsKKyAg
RVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoImFiLipjIiwgImFjYWJjIikpOworCisgIEVY
UEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoImFiLipjIiwgImFiLWZzYyIpKTsKK30KKworVEVT
VChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5zRmFsc2VXaGVuU3RyaW5nSXNOdWxsKSB7
CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoIiIsIE5VTEwpKTsKK30KKworVEVT
VChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhDYXJldCkg
eworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJlKCJeYSIsICJiYSIpKTsKKyAgRVhQ
RUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXiQiLCAiYSIpKTsKKworICBFWFBFQ1RfVFJV
RShNYXRjaFJlZ2V4QW55d2hlcmUoIl5hIiwgImFiIikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJl
Z2V4QW55d2hlcmUoIl4iLCAiYWIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVy
ZSgiXiQiLCAiIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFJldHVybnNG
YWxzZVdoZW5Ob01hdGNoKSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoImEi
LCAiYmNkZTEyMyIpKTsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiYS4rYSIs
ICItLWFhODg4ODg4ODgiKSk7Cit9CisKK1RFU1QoTWF0Y2hSZWdleEFueXdoZXJlVGVzdCwgUmV0
dXJuc1RydWVXaGVuTWF0Y2hpbmdQcmVmaXgpIHsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFu
eXdoZXJlKCJcXHcrIiwgImFiMV8gLSA1IikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55
d2hlcmUoIi4qPSIsICI9IikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIngu
KmFiPy4qYmMiLCAieGFhYWJjIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3Qs
IFJldHVybnNUcnVlV2hlbk1hdGNoaW5nTm9uUHJlZml4KSB7CisgIEVYUEVDVF9UUlVFKE1hdGNo
UmVnZXhBbnl3aGVyZSgiXFx3KyIsICIkJCQgYWIxXyAtIDUiKSk7CisgIEVYUEVDVF9UUlVFKE1h
dGNoUmVnZXhBbnl3aGVyZSgiXFwuKz0iLCAiPSAgLi4uPSIpKTsKK30KKworLy8gVGVzdHMgUkUn
cyBpbXBsaWNpdCBjb25zdHJ1Y3RvcnMuCitURVNUKFJFVGVzdCwgSW1wbGljaXRDb25zdHJ1Y3Rv
cldvcmtzKSB7CisgIGNvbnN0IFJFIGVtcHR5KCIiKTsKKyAgRVhQRUNUX1NUUkVRKCIiLCBlbXB0
eS5wYXR0ZXJuKCkpOworCisgIGNvbnN0IFJFIHNpbXBsZSgiaGVsbG8iKTsKKyAgRVhQRUNUX1NU
UkVRKCJoZWxsbyIsIHNpbXBsZS5wYXR0ZXJuKCkpOworfQorCisvLyBUZXN0cyB0aGF0IFJFJ3Mg
Y29uc3RydWN0b3JzIHJlamVjdCBpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCitURVNUKFJF
VGVzdCwgUmVqZWN0c0ludmFsaWRSZWdleCkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7
CisgICAgY29uc3QgUkUgbm9ybWFsKE5VTEwpOworICB9LCAiTlVMTCBpcyBub3QgYSB2YWxpZCBz
aW1wbGUgcmVndWxhciBleHByZXNzaW9uIik7CisKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
eworICAgIGNvbnN0IFJFIG5vcm1hbCgiLiooXFx3KyIpOworICB9LCAiJygnIGlzIHVuc3VwcG9y
dGVkIik7CisKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIGNvbnN0IFJFIGludmFs
aWQoIl4/Iik7CisgIH0sICInPycgY2FuIG9ubHkgZm9sbG93IGEgcmVwZWF0YWJsZSB0b2tlbiIp
OworfQorCisvLyBUZXN0cyBSRTo6RnVsbE1hdGNoKCkuCitURVNUKFJFVGVzdCwgRnVsbE1hdGNo
V29ya3MpIHsKKyAgY29uc3QgUkUgZW1wdHkoIiIpOworICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1h
dGNoKCIiLCBlbXB0eSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaCgiYSIsIGVtcHR5
KSk7CisKKyAgY29uc3QgUkUgcmUxKCJhIik7CisgIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2go
ImEiLCByZTEpKTsKKworICBjb25zdCBSRSByZSgiYS4qeiIpOworICBFWFBFQ1RfVFJVRShSRTo6
RnVsbE1hdGNoKCJheiIsIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goImF4eXoi
LCByZSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaCgiYmF6IiwgcmUpKTsKKyAgRVhQ
RUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goImF6eSIsIHJlKSk7Cit9CisKKy8vIFRlc3RzIFJFOjpQ
YXJ0aWFsTWF0Y2goKS4KK1RFU1QoUkVUZXN0LCBQYXJ0aWFsTWF0Y2hXb3JrcykgeworICBjb25z
dCBSRSBlbXB0eSgiIik7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goIiIsIGVtcHR5
KSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImEiLCBlbXB0eSkpOworCisgIGNv
bnN0IFJFIHJlKCJhLip6Iik7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImF6Iiwg
cmUpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiYXh5eiIsIHJlKSk7CisgIEVY
UEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImJheiIsIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJF
OjpQYXJ0aWFsTWF0Y2goImF6eSIsIHJlKSk7CisgIEVYUEVDVF9GQUxTRShSRTo6UGFydGlhbE1h
dGNoKCJ6emEiLCByZSkpOworfQorCisjZW5kaWYgIC8vIEdURVNUX1VTRVNfUE9TSVhfUkUKKwor
I2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCitURVNUKENhcHR1cmVUZXN0LCBDYXB0dXJl
c1N0ZG91dCkgeworICBDYXB0dXJlU3Rkb3V0KCk7CisgIGZwcmludGYoc3Rkb3V0LCAiYWJjIik7
CisgIEVYUEVDVF9TVFJFUSgiYWJjIiwgR2V0Q2FwdHVyZWRTdGRvdXQoKS5jX3N0cigpKTsKKwor
ICBDYXB0dXJlU3Rkb3V0KCk7CisgIGZwcmludGYoc3Rkb3V0LCAiZGVmJWNnaGkiLCAnXDAnKTsK
KyAgRVhQRUNUX0VRKDo6c3RkOjpzdHJpbmcoImRlZlwwZ2hpIiwgNyksIDo6c3RkOjpzdHJpbmco
R2V0Q2FwdHVyZWRTdGRvdXQoKSkpOworfQorCitURVNUKENhcHR1cmVUZXN0LCBDYXB0dXJlc1N0
ZGVycikgeworICBDYXB0dXJlU3RkZXJyKCk7CisgIGZwcmludGYoc3RkZXJyLCAiamtsIik7Cisg
IEVYUEVDVF9TVFJFUSgiamtsIiwgR2V0Q2FwdHVyZWRTdGRlcnIoKS5jX3N0cigpKTsKKworICBD
YXB0dXJlU3RkZXJyKCk7CisgIGZwcmludGYoc3RkZXJyLCAiamtsJWNtbm8iLCAnXDAnKTsKKyAg
RVhQRUNUX0VRKDo6c3RkOjpzdHJpbmcoImprbFwwbW5vIiwgNyksIDo6c3RkOjpzdHJpbmcoR2V0
Q2FwdHVyZWRTdGRlcnIoKSkpOworfQorCisvLyBUZXN0cyB0aGF0IHN0ZG91dCBhbmQgc3RkZXJy
IGNhcHR1cmUgZG9uJ3QgaW50ZXJmZXJlIHdpdGggZWFjaCBvdGhlci4KK1RFU1QoQ2FwdHVyZVRl
c3QsIENhcHR1cmVzU3Rkb3V0QW5kU3RkZXJyKSB7CisgIENhcHR1cmVTdGRvdXQoKTsKKyAgQ2Fw
dHVyZVN0ZGVycigpOworICBmcHJpbnRmKHN0ZG91dCwgInBxciIpOworICBmcHJpbnRmKHN0ZGVy
ciwgInN0dSIpOworICBFWFBFQ1RfU1RSRVEoInBxciIsIEdldENhcHR1cmVkU3Rkb3V0KCkuY19z
dHIoKSk7CisgIEVYUEVDVF9TVFJFUSgic3R1IiwgR2V0Q2FwdHVyZWRTdGRlcnIoKS5jX3N0cigp
KTsKK30KKworVEVTVChDYXB0dXJlRGVhdGhUZXN0LCBDYW5ub3RSZWVudGVyU3Rkb3V0Q2FwdHVy
ZSkgeworICBDYXB0dXJlU3Rkb3V0KCk7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoQ2Fw
dHVyZVN0ZG91dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPbmx5IG9uZSBzdGRv
dXQgY2FwdHVyZXIgY2FuIGV4aXN0IGF0IGEgdGltZSIpOworICBHZXRDYXB0dXJlZFN0ZG91dCgp
OworCisgIC8vIFdlIGNhbm5vdCB0ZXN0IHN0ZGVyciBjYXB0dXJpbmcgdXNpbmcgZGVhdGggdGVz
dHMgYXMgdGhleSB1c2UgaXQKKyAgLy8gdGhlbXNlbHZlcy4KK30KKworI2VuZGlmICAvLyAhR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKKworVEVTVChUaHJlYWRMb2NhbFRlc3QsIERlZmF1bHRDb25z
dHJ1Y3RvckluaXRpYWxpemVzVG9EZWZhdWx0VmFsdWVzKSB7CisgIFRocmVhZExvY2FsPGludD4g
dDE7CisgIEVYUEVDVF9FUSgwLCB0MS5nZXQoKSk7CisKKyAgVGhyZWFkTG9jYWw8dm9pZCo+IHQy
OworICBFWFBFQ1RfVFJVRSh0Mi5nZXQoKSA9PSBOVUxMKTsKK30KKworVEVTVChUaHJlYWRMb2Nh
bFRlc3QsIFNpbmdsZVBhcmFtQ29uc3RydWN0b3JJbml0aWFsaXplc1RvUGFyYW0pIHsKKyAgVGhy
ZWFkTG9jYWw8aW50PiB0MSgxMjMpOworICBFWFBFQ1RfRVEoMTIzLCB0MS5nZXQoKSk7CisKKyAg
aW50IGkgPSAwOworICBUaHJlYWRMb2NhbDxpbnQqPiB0MigmaSk7CisgIEVYUEVDVF9FUSgmaSwg
dDIuZ2V0KCkpOworfQorCitjbGFzcyBOb0RlZmF1bHRDb250cnVjdG9yIHsKKyBwdWJsaWM6Cisg
IGV4cGxpY2l0IE5vRGVmYXVsdENvbnRydWN0b3IoY29uc3QgY2hhciopIHt9CisgIE5vRGVmYXVs
dENvbnRydWN0b3IoY29uc3QgTm9EZWZhdWx0Q29udHJ1Y3RvciYpIHt9Cit9OworCitURVNUKFRo
cmVhZExvY2FsVGVzdCwgVmFsdWVEZWZhdWx0Q29udHJ1Y3RvcklzTm90UmVxdWlyZWRGb3JQYXJh
bVZlcnNpb24pIHsKKyAgVGhyZWFkTG9jYWw8Tm9EZWZhdWx0Q29udHJ1Y3Rvcj4gYmFyKE5vRGVm
YXVsdENvbnRydWN0b3IoImZvbyIpKTsKKyAgYmFyLnBvaW50ZXIoKTsKK30KKworVEVTVChUaHJl
YWRMb2NhbFRlc3QsIEdldEFuZFBvaW50ZXJSZXR1cm5TYW1lVmFsdWUpIHsKKyAgVGhyZWFkTG9j
YWw8c3RkOjpzdHJpbmc+IHRocmVhZF9sb2NhbF9zdHJpbmc7CisKKyAgRVhQRUNUX0VRKHRocmVh
ZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpLCAmKHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkpKTsK
KworICAvLyBWZXJpZmllcyB0aGUgY29uZGl0aW9uIHN0aWxsIGhvbGRzIGFmdGVyIGNhbGxpbmcg
c2V0LgorICB0aHJlYWRfbG9jYWxfc3RyaW5nLnNldCgiZm9vIik7CisgIEVYUEVDVF9FUSh0aHJl
YWRfbG9jYWxfc3RyaW5nLnBvaW50ZXIoKSwgJih0aHJlYWRfbG9jYWxfc3RyaW5nLmdldCgpKSk7
Cit9CisKK1RFU1QoVGhyZWFkTG9jYWxUZXN0LCBQb2ludGVyQW5kQ29uc3RQb2ludGVyUmV0dXJu
U2FtZVZhbHVlKSB7CisgIFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiB0aHJlYWRfbG9jYWxfc3Ry
aW5nOworICBjb25zdCBUaHJlYWRMb2NhbDxzdGQ6OnN0cmluZz4mIGNvbnN0X3RocmVhZF9sb2Nh
bF9zdHJpbmcgPQorICAgICAgdGhyZWFkX2xvY2FsX3N0cmluZzsKKworICBFWFBFQ1RfRVEodGhy
ZWFkX2xvY2FsX3N0cmluZy5wb2ludGVyKCksIGNvbnN0X3RocmVhZF9sb2NhbF9zdHJpbmcucG9p
bnRlcigpKTsKKworICB0aHJlYWRfbG9jYWxfc3RyaW5nLnNldCgiZm9vIik7CisgIEVYUEVDVF9F
USh0aHJlYWRfbG9jYWxfc3RyaW5nLnBvaW50ZXIoKSwgY29uc3RfdGhyZWFkX2xvY2FsX3N0cmlu
Zy5wb2ludGVyKCkpOworfQorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorCit2b2lkIEFkZFR3
byhpbnQqIHBhcmFtKSB7ICpwYXJhbSArPSAyOyB9CisKK1RFU1QoVGhyZWFkV2l0aFBhcmFtVGVz
dCwgQ29uc3RydWN0b3JFeGVjdXRlc1RocmVhZEZ1bmMpIHsKKyAgaW50IGkgPSA0MDsKKyAgVGhy
ZWFkV2l0aFBhcmFtPGludCo+IHRocmVhZCgmQWRkVHdvLCAmaSwgTlVMTCk7CisgIHRocmVhZC5K
b2luKCk7CisgIEVYUEVDVF9FUSg0MiwgaSk7Cit9CisKK1RFU1QoTXV0ZXhEZWF0aFRlc3QsIEFz
c2VydEhlbGRTaG91bGRBc3NlcnRXaGVuTm90TG9ja2VkKSB7CisgIC8vIEFzc2VydEhlbGQoKSBp
cyBmbGFreSBvbmx5IGluIHRoZSBwcmVzZW5jZSBvZiBtdWx0aXBsZSB0aHJlYWRzIGFjY2Vzc2lu
ZworICAvLyB0aGUgbG9jay4gSW4gdGhpcyBjYXNlLCB0aGUgdGVzdCBpcyByb2J1c3QuCisgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoeworICAgIE11dGV4IG07CisgICAgeyBNdXRleExvY2sg
bG9jaygmbSk7IH0KKyAgICBtLkFzc2VydEhlbGQoKTsKKyAgfSwKKyAgInRocmVhZCAuKmhvbGQi
KTsKK30KKworVEVTVChNdXRleFRlc3QsIEFzc2VydEhlbGRTaG91bGROb3RBc3NlcnRXaGVuTG9j
a2VkKSB7CisgIE11dGV4IG07CisgIE11dGV4TG9jayBsb2NrKCZtKTsKKyAgbS5Bc3NlcnRIZWxk
KCk7Cit9CisKK2NsYXNzIEF0b21pY0NvdW50ZXJXaXRoTXV0ZXggeworIHB1YmxpYzoKKyAgZXhw
bGljaXQgQXRvbWljQ291bnRlcldpdGhNdXRleChNdXRleCogbXV0ZXgpIDoKKyAgICB2YWx1ZV8o
MCksIG11dGV4XyhtdXRleCksIHJhbmRvbV8oNDIpIHt9CisKKyAgdm9pZCBJbmNyZW1lbnQoKSB7
CisgICAgTXV0ZXhMb2NrIGxvY2sobXV0ZXhfKTsKKyAgICBpbnQgdGVtcCA9IHZhbHVlXzsKKyAg
ICB7CisgICAgICAvLyBXZSBuZWVkIHRvIHB1dCB1cCBhIG1lbW9yeSBiYXJyaWVyIHRvIHByZXZl
bnQgcmVhZHMgYW5kIHdyaXRlcyB0bworICAgICAgLy8gdmFsdWVfIHJlYXJyYW5nZWQgd2l0aCB0
aGUgY2FsbCB0byBTbGVlcE1pbGxpc2Vjb25kcyB3aGVuIG9ic2VydmVkCisgICAgICAvLyBmcm9t
IG90aGVyIHRocmVhZHMuCisjaWYgR1RFU1RfSEFTX1BUSFJFQUQKKyAgICAgIC8vIE9uIFBPU0lY
LCBsb2NraW5nIGEgbXV0ZXggcHV0cyB1cCBhIG1lbW9yeSBiYXJyaWVyLiAgV2UgY2Fubm90IHVz
ZQorICAgICAgLy8gTXV0ZXggYW5kIE11dGV4TG9jayBoZXJlIG9yIHJlbHkgb24gdGhlaXIgbWVt
b3J5IGJhcnJpZXIKKyAgICAgIC8vIGZ1bmN0aW9uYWxpdHkgYXMgd2UgYXJlIHRlc3RpbmcgdGhl
bSBoZXJlLgorICAgICAgcHRocmVhZF9tdXRleF90IG1lbW9yeV9iYXJyaWVyX211dGV4OworICAg
ICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18oCisgICAgICAgICAgcHRocmVhZF9tdXRleF9p
bml0KCZtZW1vcnlfYmFycmllcl9tdXRleCwgTlVMTCkpOworICAgICAgR1RFU1RfQ0hFQ0tfUE9T
SVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9sb2NrKCZtZW1vcnlfYmFycmllcl9tdXRleCkpOwor
CisgICAgICBTbGVlcE1pbGxpc2Vjb25kcyhyYW5kb21fLkdlbmVyYXRlKDMwKSk7CisKKyAgICAg
IEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtZW1vcnlf
YmFycmllcl9tdXRleCkpOworICAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVh
ZF9tdXRleF9kZXN0cm95KCZtZW1vcnlfYmFycmllcl9tdXRleCkpOworI2VsaWYgR1RFU1RfT1Nf
V0lORE9XUworICAgICAgLy8gT24gV2luZG93cywgcGVyZm9ybWluZyBhbiBpbnRlcmxvY2tlZCBh
Y2Nlc3MgcHV0cyB1cCBhIG1lbW9yeSBiYXJyaWVyLgorICAgICAgdm9sYXRpbGUgTE9ORyBkdW1t
eSA9IDA7CisgICAgICA6OkludGVybG9ja2VkSW5jcmVtZW50KCZkdW1teSk7CisgICAgICBTbGVl
cE1pbGxpc2Vjb25kcyhyYW5kb21fLkdlbmVyYXRlKDMwKSk7CisgICAgICA6OkludGVybG9ja2Vk
SW5jcmVtZW50KCZkdW1teSk7CisjZWxzZQorIyBlcnJvciAiTWVtb3J5IGJhcnJpZXIgbm90IGlt
cGxlbWVudGVkIG9uIHRoaXMgcGxhdGZvcm0uIgorI2VuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVB
RAorICAgIH0KKyAgICB2YWx1ZV8gPSB0ZW1wICsgMTsKKyAgfQorICBpbnQgdmFsdWUoKSBjb25z
dCB7IHJldHVybiB2YWx1ZV87IH0KKworIHByaXZhdGU6CisgIHZvbGF0aWxlIGludCB2YWx1ZV87
CisgIE11dGV4KiBjb25zdCBtdXRleF87ICAvLyBQcm90ZWN0cyB2YWx1ZV8uCisgIFJhbmRvbSAg
ICAgICByYW5kb21fOworfTsKKwordm9pZCBDb3VudGluZ1RocmVhZEZ1bmMocGFpcjxBdG9taWND
b3VudGVyV2l0aE11dGV4KiwgaW50PiBwYXJhbSkgeworICBmb3IgKGludCBpID0gMDsgaSA8IHBh
cmFtLnNlY29uZDsgKytpKQorICAgICAgcGFyYW0uZmlyc3QtPkluY3JlbWVudCgpOworfQorCisv
LyBUZXN0cyB0aGF0IHRoZSBtdXRleCBvbmx5IGxldHMgb25lIHRocmVhZCBhdCBhIHRpbWUgdG8g
bG9jayBpdC4KK1RFU1QoTXV0ZXhUZXN0LCBPbmx5T25lVGhyZWFkQ2FuTG9ja0F0QVRpbWUpIHsK
KyAgTXV0ZXggbXV0ZXg7CisgIEF0b21pY0NvdW50ZXJXaXRoTXV0ZXggbG9ja2VkX2NvdW50ZXIo
Jm11dGV4KTsKKworICB0eXBlZGVmIFRocmVhZFdpdGhQYXJhbTxwYWlyPEF0b21pY0NvdW50ZXJX
aXRoTXV0ZXgqLCBpbnQ+ID4gVGhyZWFkVHlwZTsKKyAgY29uc3QgaW50IGtDeWNsZUNvdW50ID0g
MjA7CisgIGNvbnN0IGludCBrVGhyZWFkQ291bnQgPSA3OworICBzY29wZWRfcHRyPFRocmVhZFR5
cGU+IGNvdW50aW5nX3RocmVhZHNba1RocmVhZENvdW50XTsKKyAgTm90aWZpY2F0aW9uIHRocmVh
ZHNfY2FuX3N0YXJ0OworICAvLyBDcmVhdGVzIGFuZCBydW5zIGtUaHJlYWRDb3VudCB0aHJlYWRz
IHRoYXQgaW5jcmVtZW50IGxvY2tlZF9jb3VudGVyCisgIC8vIGtDeWNsZUNvdW50IHRpbWVzIGVh
Y2guCisgIGZvciAoaW50IGkgPSAwOyBpIDwga1RocmVhZENvdW50OyArK2kpIHsKKyAgICBjb3Vu
dGluZ190aHJlYWRzW2ldLnJlc2V0KG5ldyBUaHJlYWRUeXBlKCZDb3VudGluZ1RocmVhZEZ1bmMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3BhaXIo
JmxvY2tlZF9jb3VudGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtDeWNsZUNvdW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZ0aHJlYWRzX2Nhbl9zdGFydCkpOworICB9CisgIHRocmVhZHNf
Y2FuX3N0YXJ0Lk5vdGlmeSgpOworICBmb3IgKGludCBpID0gMDsgaSA8IGtUaHJlYWRDb3VudDsg
KytpKQorICAgIGNvdW50aW5nX3RocmVhZHNbaV0tPkpvaW4oKTsKKworICAvLyBJZiB0aGUgbXV0
ZXggbGV0cyBtb3JlIHRoYW4gb25lIHRocmVhZCB0byBpbmNyZW1lbnQgdGhlIGNvdW50ZXIgYXQg
YQorICAvLyB0aW1lLCB0aGV5IGFyZSBsaWtlbHkgdG8gZW5jb3VudGVyIGEgcmFjZSBjb25kaXRp
b24gYW5kIGhhdmUgc29tZQorICAvLyBpbmNyZW1lbnRzIG92ZXJ3cml0dGVuLCByZXN1bHRpbmcg
aW4gdGhlIGxvd2VyIHRoZW4gZXhwZWN0ZWQgY291bnRlcgorICAvLyB2YWx1ZS4KKyAgRVhQRUNU
X0VRKGtDeWNsZUNvdW50ICoga1RocmVhZENvdW50LCBsb2NrZWRfY291bnRlci52YWx1ZSgpKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFJ1bkZyb21UaHJlYWQodm9pZCAoZnVu
YykoVCksIFQgcGFyYW0pIHsKKyAgVGhyZWFkV2l0aFBhcmFtPFQ+IHRocmVhZChmdW5jLCBwYXJh
bSwgTlVMTCk7CisgIHRocmVhZC5Kb2luKCk7Cit9CisKK3ZvaWQgUmV0cmlldmVUaHJlYWRMb2Nh
bFZhbHVlKAorICAgIHBhaXI8VGhyZWFkTG9jYWw8c3RkOjpzdHJpbmc+Kiwgc3RkOjpzdHJpbmcq
PiBwYXJhbSkgeworICAqcGFyYW0uc2Vjb25kID0gcGFyYW0uZmlyc3QtPmdldCgpOworfQorCitU
RVNUKFRocmVhZExvY2FsVGVzdCwgUGFyYW1ldGVyaXplZENvbnN0cnVjdG9yU2V0c0RlZmF1bHQp
IHsKKyAgVGhyZWFkTG9jYWw8c3RkOjpzdHJpbmc+IHRocmVhZF9sb2NhbF9zdHJpbmcoImZvbyIp
OworICBFWFBFQ1RfU1RSRVEoImZvbyIsIHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkuY19zdHIo
KSk7CisKKyAgdGhyZWFkX2xvY2FsX3N0cmluZy5zZXQoImJhciIpOworICBFWFBFQ1RfU1RSRVEo
ImJhciIsIHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkuY19zdHIoKSk7CisKKyAgc3RkOjpzdHJp
bmcgcmVzdWx0OworICBSdW5Gcm9tVGhyZWFkKCZSZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUsCisg
ICAgICAgICAgICAgICAgbWFrZV9wYWlyKCZ0aHJlYWRfbG9jYWxfc3RyaW5nLCAmcmVzdWx0KSk7
CisgIEVYUEVDVF9TVFJFUSgiZm9vIiwgcmVzdWx0LmNfc3RyKCkpOworfQorCisvLyBLZWVwcyB0
cmFjayBvZiB3aGV0aGVyIG9mIGRlc3RydWN0b3JzIGJlaW5nIGNhbGxlZCBvbiBpbnN0YW5jZXMg
b2YKKy8vIERlc3RydWN0b3JUcmFja2VyLiAgT24gV2luZG93cywgd2FpdHMgZm9yIHRoZSBkZXN0
cnVjdG9yIGNhbGwgcmVwb3J0cy4KK2NsYXNzIERlc3RydWN0b3JDYWxsIHsKKyBwdWJsaWM6Cisg
IERlc3RydWN0b3JDYWxsKCkgeworICAgIGludm9rZWRfID0gZmFsc2U7CisjaWYgR1RFU1RfT1Nf
V0lORE9XUworICAgIHdhaXRfZXZlbnRfLlJlc2V0KDo6Q3JlYXRlRXZlbnQoTlVMTCwgVFJVRSwg
RkFMU0UsIE5VTEwpKTsKKyAgICBHVEVTVF9DSEVDS18od2FpdF9ldmVudF8uR2V0KCkgIT0gTlVM
TCk7CisjZW5kaWYKKyAgfQorCisgIGJvb2wgQ2hlY2tEZXN0cm95ZWQoKSBjb25zdCB7CisjaWYg
R1RFU1RfT1NfV0lORE9XUworICAgIGlmICg6OldhaXRGb3JTaW5nbGVPYmplY3Qod2FpdF9ldmVu
dF8uR2V0KCksIDEwMDApICE9IFdBSVRfT0JKRUNUXzApCisgICAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKKyAgICByZXR1cm4gaW52b2tlZF87CisgIH0KKworICB2b2lkIFJlcG9ydERlc3Ryb3ll
ZCgpIHsKKyAgICBpbnZva2VkXyA9IHRydWU7CisjaWYgR1RFU1RfT1NfV0lORE9XUworICAgIDo6
U2V0RXZlbnQod2FpdF9ldmVudF8uR2V0KCkpOworI2VuZGlmCisgIH0KKworICBzdGF0aWMgc3Rk
Ojp2ZWN0b3I8RGVzdHJ1Y3RvckNhbGwqPiYgTGlzdCgpIHsgcmV0dXJuICpsaXN0XzsgfQorCisg
IHN0YXRpYyB2b2lkIFJlc2V0TGlzdCgpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxp
c3RfLT5zaXplKCk7ICsraSkgeworICAgICAgZGVsZXRlIGxpc3RfLT5hdChpKTsKKyAgICB9Cisg
ICAgbGlzdF8tPmNsZWFyKCk7CisgIH0KKworIHByaXZhdGU6CisgIGJvb2wgaW52b2tlZF87Cisj
aWYgR1RFU1RfT1NfV0lORE9XUworICBBdXRvSGFuZGxlIHdhaXRfZXZlbnRfOworI2VuZGlmCisg
IHN0YXRpYyBzdGQ6OnZlY3RvcjxEZXN0cnVjdG9yQ2FsbCo+KiBjb25zdCBsaXN0XzsKKworICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKERlc3RydWN0b3JDYWxsKTsKK307CisKK3N0
ZDo6dmVjdG9yPERlc3RydWN0b3JDYWxsKj4qIGNvbnN0IERlc3RydWN0b3JDYWxsOjpsaXN0XyA9
CisgICAgbmV3IHN0ZDo6dmVjdG9yPERlc3RydWN0b3JDYWxsKj47CisKKy8vIERlc3RydWN0b3JU
cmFja2VyIGtlZXBzIHRyYWNrIG9mIHdoZXRoZXIgaXRzIGluc3RhbmNlcyBoYXZlIGJlZW4KKy8v
IGRlc3Ryb3llZC4KK2NsYXNzIERlc3RydWN0b3JUcmFja2VyIHsKKyBwdWJsaWM6CisgIERlc3Ry
dWN0b3JUcmFja2VyKCkgOiBpbmRleF8oR2V0TmV3SW5kZXgoKSkge30KKyAgRGVzdHJ1Y3RvclRy
YWNrZXIoY29uc3QgRGVzdHJ1Y3RvclRyYWNrZXImIC8qIHJocyAqLykKKyAgICAgIDogaW5kZXhf
KEdldE5ld0luZGV4KCkpIHt9CisgIH5EZXN0cnVjdG9yVHJhY2tlcigpIHsKKyAgICAvLyBXZSBu
ZXZlciBhY2Nlc3MgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKSBjb25jdXJyZW50bHksIHNvIHdlIGRv
bid0IG5lZWQKKyAgICAvLyB0byBwcm90ZWN0IHRoaXMgYWNjZXNzIHdpdGggYSBtdXRleC4KKyAg
ICBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpW2luZGV4X10tPlJlcG9ydERlc3Ryb3llZCgpOworICB9
CisKKyBwcml2YXRlOgorICBzdGF0aWMgc2l6ZV90IEdldE5ld0luZGV4KCkgeworICAgIERlc3Ry
dWN0b3JDYWxsOjpMaXN0KCkucHVzaF9iYWNrKG5ldyBEZXN0cnVjdG9yQ2FsbCk7CisgICAgcmV0
dXJuIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpIC0gMTsKKyAgfQorICBjb25zdCBzaXpl
X3QgaW5kZXhfOworCisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oRGVzdHJ1Y3RvclRyYWNrZXIp
OworfTsKKwordHlwZWRlZiBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4qIFRocmVhZFBh
cmFtOworCit2b2lkIENhbGxUaHJlYWRMb2NhbEdldChUaHJlYWRQYXJhbSB0aHJlYWRfbG9jYWxf
cGFyYW0pIHsKKyAgdGhyZWFkX2xvY2FsX3BhcmFtLT5nZXQoKTsKK30KKworLy8gVGVzdHMgdGhh
dCB3aGVuIGEgVGhyZWFkTG9jYWwgb2JqZWN0IGRpZXMgaW4gYSB0aHJlYWQsIGl0IGRlc3Ryb3lz
CisvLyB0aGUgbWFuYWdlZCBvYmplY3QgZm9yIHRoYXQgdGhyZWFkLgorVEVTVChUaHJlYWRMb2Nh
bFRlc3QsIERlc3Ryb3lzTWFuYWdlZE9iamVjdEZvck93blRocmVhZFdoZW5EeWluZykgeworICBE
ZXN0cnVjdG9yQ2FsbDo6UmVzZXRMaXN0KCk7CisKKyAgeworICAgIFRocmVhZExvY2FsPERlc3Ry
dWN0b3JUcmFja2VyPiB0aHJlYWRfbG9jYWxfdHJhY2tlcjsKKyAgICBBU1NFUlRfRVEoMFUsIERl
c3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpKTsKKworICAgIC8vIFRoaXMgY3JlYXRlcyBhbm90
aGVyIERlc3RydWN0b3JUcmFja2VyIG9iamVjdCBmb3IgdGhlIG1haW4gdGhyZWFkLgorICAgIHRo
cmVhZF9sb2NhbF90cmFja2VyLmdldCgpOworICAgIEFTU0VSVF9FUSgxVSwgRGVzdHJ1Y3RvckNh
bGw6Okxpc3QoKS5zaXplKCkpOworICAgIEFTU0VSVF9GQUxTRShEZXN0cnVjdG9yQ2FsbDo6TGlz
dCgpWzBdLT5DaGVja0Rlc3Ryb3llZCgpKTsKKyAgfQorCisgIC8vIE5vdyB0aHJlYWRfbG9jYWxf
dHJhY2tlciBoYXMgZGllZC4KKyAgQVNTRVJUX0VRKDFVLCBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgp
LnNpemUoKSk7CisgIEVYUEVDVF9UUlVFKERlc3RydWN0b3JDYWxsOjpMaXN0KClbMF0tPkNoZWNr
RGVzdHJveWVkKCkpOworCisgIERlc3RydWN0b3JDYWxsOjpSZXNldExpc3QoKTsKK30KKworLy8g
VGVzdHMgdGhhdCB3aGVuIGEgdGhyZWFkIGV4aXRzLCB0aGUgdGhyZWFkLWxvY2FsIG9iamVjdCBm
b3IgdGhhdAorLy8gdGhyZWFkIGlzIGRlc3Ryb3llZC4KK1RFU1QoVGhyZWFkTG9jYWxUZXN0LCBE
ZXN0cm95c01hbmFnZWRPYmplY3RBdFRocmVhZEV4aXQpIHsKKyAgRGVzdHJ1Y3RvckNhbGw6OlJl
c2V0TGlzdCgpOworCisgIHsKKyAgICBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4gdGhy
ZWFkX2xvY2FsX3RyYWNrZXI7CisgICAgQVNTRVJUX0VRKDBVLCBEZXN0cnVjdG9yQ2FsbDo6TGlz
dCgpLnNpemUoKSk7CisKKyAgICAvLyBUaGlzIGNyZWF0ZXMgYW5vdGhlciBEZXN0cnVjdG9yVHJh
Y2tlciBvYmplY3QgaW4gdGhlIG5ldyB0aHJlYWQuCisgICAgVGhyZWFkV2l0aFBhcmFtPFRocmVh
ZFBhcmFtPiB0aHJlYWQoCisgICAgICAgICZDYWxsVGhyZWFkTG9jYWxHZXQsICZ0aHJlYWRfbG9j
YWxfdHJhY2tlciwgTlVMTCk7CisgICAgdGhyZWFkLkpvaW4oKTsKKworICAgIC8vIFRoZSB0aHJl
YWQgaGFzIGV4aXRlZCwgYW5kIHdlIHNob3VsZCBoYXZlIGEgRGVzdHJveWVkVHJhY2tlcgorICAg
IC8vIGluc3RhbmNlIGNyZWF0ZWQgZm9yIGl0LiBCdXQgaXQgbWF5IG5vdCBoYXZlIGJlZW4gZGVz
dHJveWVkIHlldC4KKyAgICBBU1NFUlRfRVEoMVUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6
ZSgpKTsKKyAgfQorCisgIC8vIFRoZSB0aHJlYWQgaGFzIGV4aXRlZCBhbmQgdGhyZWFkX2xvY2Fs
X3RyYWNrZXIgaGFzIGRpZWQuCisgIEFTU0VSVF9FUSgxVSwgRGVzdHJ1Y3RvckNhbGw6Okxpc3Qo
KS5zaXplKCkpOworICBFWFBFQ1RfVFJVRShEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpWzBdLT5DaGVj
a0Rlc3Ryb3llZCgpKTsKKworICBEZXN0cnVjdG9yQ2FsbDo6UmVzZXRMaXN0KCk7Cit9CisKK1RF
U1QoVGhyZWFkTG9jYWxUZXN0LCBUaHJlYWRMb2NhbE11dGF0aW9uc0FmZmVjdE9ubHlDdXJyZW50
VGhyZWFkKSB7CisgIFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiB0aHJlYWRfbG9jYWxfc3RyaW5n
OworICB0aHJlYWRfbG9jYWxfc3RyaW5nLnNldCgiRm9vIik7CisgIEVYUEVDVF9TVFJFUSgiRm9v
IiwgdGhyZWFkX2xvY2FsX3N0cmluZy5nZXQoKS5jX3N0cigpKTsKKworICBzdGQ6OnN0cmluZyBy
ZXN1bHQ7CisgIFJ1bkZyb21UaHJlYWQoJlJldHJpZXZlVGhyZWFkTG9jYWxWYWx1ZSwKKyAgICAg
ICAgICAgICAgICBtYWtlX3BhaXIoJnRocmVhZF9sb2NhbF9zdHJpbmcsICZyZXN1bHQpKTsKKyAg
RVhQRUNUX1RSVUUocmVzdWx0LmVtcHR5KCkpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0lTX1RI
UkVBRFNBRkUKKworI2lmIEdURVNUX09TX1dJTkRPV1MKK1RFU1QoV2luZG93c1R5cGVzVGVzdCwg
SEFORExFSXNWb2lkU3RhcikgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8SEFORExFLCB2b2lkKj4o
KTsKK30KKworI2lmIEdURVNUX09TX1dJTkRPV1NfTUlOR1cgJiYgIWRlZmluZWQoX19NSU5HVzY0
X1ZFUlNJT05fTUFKT1IpCitURVNUKFdpbmRvd3NUeXBlc1Rlc3QsIF9DUklUSUNBTF9TRUNUSU9O
SXNfQ1JJVElDQUxfU0VDVElPTikgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8Q1JJVElDQUxfU0VD
VElPTiwgX0NSSVRJQ0FMX1NFQ1RJT04+KCk7Cit9CisjZWxzZQorVEVTVChXaW5kb3dzVHlwZXNU
ZXN0LCBDUklUSUNBTF9TRUNUSU9OSXNfUlRMX0NSSVRJQ0FMX1NFQ1RJT04pIHsKKyAgU3RhdGlj
QXNzZXJ0VHlwZUVxPENSSVRJQ0FMX1NFQ1RJT04sIF9SVExfQ1JJVElDQUxfU0VDVElPTj4oKTsK
K30KKyNlbmRpZgorCisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworfSAgLy8gbmFtZXNw
YWNlIGludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXByaW50ZXJzLXRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcHJpbnRlcnMtdGVzdC5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lYTgzNjlkMjdlNTA0NzBmMWVhYmUzYWYyODA0ZDM0NTQ5M2FkZWQ5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXByaW50
ZXJzLXRlc3QuY2MKQEAgLTAsMCArMSwxNzQ4IEBACisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xl
IEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
Ky8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gR29vZ2xlIFRlc3QgLSBUaGUgR29vZ2xlIEMrKyBU
ZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yaworLy8KKy8vIFRoaXMgZmlsZSB0ZXN0cyB0aGUg
dW5pdmVyc2FsIHZhbHVlIHByaW50ZXIuCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUg
PGxpbWl0cy5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNp
bmNsdWRlIDxkZXF1ZT4KKyNpbmNsdWRlIDxsaXN0PgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRl
IDxzZXQ+CisjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8
dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1wcmlu
dGVycy5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpZiBHVEVTVF9IQVNfVU5PUkRF
UkVEX01BUF8KKyMgaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4gIC8vIE5PTElOVAorI2VuZGlmICAv
LyBHVEVTVF9IQVNfVU5PUkRFUkVEX01BUF8KKworI2lmIEdURVNUX0hBU19VTk9SREVSRURfU0VU
XworIyBpbmNsdWRlIDx1bm9yZGVyZWRfc2V0PiAgLy8gTk9MSU5UCisjZW5kaWYgIC8vIEdURVNU
X0hBU19VTk9SREVSRURfU0VUXworCisjaWYgR1RFU1RfSEFTX1NURF9GT1JXQVJEX0xJU1RfCisj
IGluY2x1ZGUgPGZvcndhcmRfbGlzdD4gLy8gTk9MSU5UCisjZW5kaWYgIC8vIEdURVNUX0hBU19T
VERfRk9SV0FSRF9MSVNUXworCisvLyBTb21lIHVzZXItZGVmaW5lZCB0eXBlcyBmb3IgdGVzdGlu
ZyB0aGUgdW5pdmVyc2FsIHZhbHVlIHByaW50ZXIuCisKKy8vIEFuIGFub255bW91cyBlbnVtIHR5
cGUuCitlbnVtIEFub255bW91c0VudW0geworICBrQUUxID0gLTEsCisgIGtBRTIgPSAxCit9Owor
CisvLyBBbiBlbnVtIHdpdGhvdXQgYSB1c2VyLWRlZmluZWQgcHJpbnRlci4KK2VudW0gRW51bVdp
dGhvdXRQcmludGVyIHsKKyAga0VXUDEgPSAtMiwKKyAga0VXUDIgPSA0MgorfTsKKworLy8gQW4g
ZW51bSB3aXRoIGEgPDwgb3BlcmF0b3IuCitlbnVtIEVudW1XaXRoU3RyZWFtaW5nIHsKKyAga0VX
UzEgPSAxMAorfTsKKworc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3Ms
IEVudW1XaXRoU3RyZWFtaW5nIGUpIHsKKyAgcmV0dXJuIG9zIDw8IChlID09IGtFV1MxID8gImtF
V1MxIiA6ICJpbnZhbGlkIik7Cit9CisKKy8vIEFuIGVudW0gd2l0aCBhIFByaW50VG8oKSBmdW5j
dGlvbi4KK2VudW0gRW51bVdpdGhQcmludFRvIHsKKyAga0VXUFQxID0gMQorfTsKKwordm9pZCBQ
cmludFRvKEVudW1XaXRoUHJpbnRUbyBlLCBzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCAo
ZSA9PSBrRVdQVDEgPyAia0VXUFQxIiA6ICJpbnZhbGlkIik7Cit9CisKKy8vIEEgY2xhc3MgaW1w
bGljaXRseSBjb252ZXJ0aWJsZSB0byBCaWdnZXN0SW50LgorY2xhc3MgQmlnZ2VzdEludENvbnZl
cnRpYmxlIHsKKyBwdWJsaWM6CisgIG9wZXJhdG9yIDo6dGVzdGluZzo6aW50ZXJuYWw6OkJpZ2dl
c3RJbnQoKSBjb25zdCB7IHJldHVybiA0MjsgfQorfTsKKworLy8gQSB1c2VyLWRlZmluZWQgdW5w
cmludGFibGUgY2xhc3MgdGVtcGxhdGUgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFVucHJpbnRhYmxlVGVtcGxhdGVJbkdsb2JhbCB7CisgcHVi
bGljOgorICBVbnByaW50YWJsZVRlbXBsYXRlSW5HbG9iYWwoKSA6IHZhbHVlXygpIHt9CisgcHJp
dmF0ZToKKyAgVCB2YWx1ZV87Cit9OworCisvLyBBIHVzZXItZGVmaW5lZCBzdHJlYW1hYmxlIHR5
cGUgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCitjbGFzcyBTdHJlYW1hYmxlSW5HbG9iYWwgewor
IHB1YmxpYzoKKyAgdmlydHVhbCB+U3RyZWFtYWJsZUluR2xvYmFsKCkge30KK307CisKK2lubGlu
ZSB2b2lkIG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBTdHJlYW1hYmxlSW5H
bG9iYWwmIC8qIHggKi8pIHsKKyAgb3MgPDwgIlN0cmVhbWFibGVJbkdsb2JhbCI7Cit9CisKK3Zv
aWQgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFN0cmVhbWFibGVJbkdsb2Jh
bCogLyogeCAqLykgeworICBvcyA8PCAiU3RyZWFtYWJsZUluR2xvYmFsKiI7Cit9CisKK25hbWVz
cGFjZSBmb28geworCisvLyBBIHVzZXItZGVmaW5lZCB1bnByaW50YWJsZSB0eXBlIGluIGEgdXNl
ciBuYW1lc3BhY2UuCitjbGFzcyBVbnByaW50YWJsZUluRm9vIHsKKyBwdWJsaWM6CisgIFVucHJp
bnRhYmxlSW5Gb28oKSA6IHpfKDApIHsgbWVtY3B5KHh5XywgIlx4RUZceDEyXHgwXHgwXHgzNFx4
QUJceDBceDAiLCA4KTsgfQorICBkb3VibGUgeigpIGNvbnN0IHsgcmV0dXJuIHpfOyB9CisgcHJp
dmF0ZToKKyAgY2hhciB4eV9bOF07CisgIGRvdWJsZSB6XzsKK307CisKKy8vIEEgdXNlci1kZWZp
bmVkIHByaW50YWJsZSB0eXBlIGluIGEgdXNlci1jaG9zZW4gbmFtZXNwYWNlLgorc3RydWN0IFBy
aW50YWJsZVZpYVByaW50VG8geworICBQcmludGFibGVWaWFQcmludFRvKCkgOiB2YWx1ZSgpIHt9
CisgIGludCB2YWx1ZTsKK307CisKK3ZvaWQgUHJpbnRUbyhjb25zdCBQcmludGFibGVWaWFQcmlu
dFRvJiB4LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8ICJQcmludGFibGVWaWFQcmlu
dFRvOiAiIDw8IHgudmFsdWU7Cit9CisKKy8vIEEgdHlwZSB3aXRoIGEgdXNlci1kZWZpbmVkIDw8
IGZvciBwcmludGluZyBpdHMgcG9pbnRlci4KK3N0cnVjdCBQb2ludGVyUHJpbnRhYmxlIHsKK307
CisKKzo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBvcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBvaW50ZXJQcmludGFibGUqIC8qIHggKi8pIHsK
KyAgcmV0dXJuIG9zIDw8ICJQb2ludGVyUHJpbnRhYmxlKiI7Cit9CisKKy8vIEEgdXNlci1kZWZp
bmVkIHByaW50YWJsZSBjbGFzcyB0ZW1wbGF0ZSBpbiBhIHVzZXItY2hvc2VuIG5hbWVzcGFjZS4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgUHJpbnRhYmxlVmlhUHJpbnRUb1RlbXBsYXRl
IHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFByaW50YWJsZVZpYVByaW50VG9UZW1wbGF0ZShjb25z
dCBUJiBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7fQorCisgIGNvbnN0IFQmIHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CisgcHJpdmF0ZToKKyAgVCB2YWx1ZV87Cit9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgUHJpbnRUbyhjb25zdCBQcmludGFibGVWaWFQcmlu
dFRvVGVtcGxhdGU8VD4mIHgsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAqb3MgPDwgIlByaW50
YWJsZVZpYVByaW50VG9UZW1wbGF0ZTogIiA8PCB4LnZhbHVlKCk7Cit9CisKKy8vIEEgdXNlci1k
ZWZpbmVkIHN0cmVhbWFibGUgY2xhc3MgdGVtcGxhdGUgaW4gYSB1c2VyIG5hbWVzcGFjZS4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgU3RyZWFtYWJsZVRlbXBsYXRlSW5Gb28geworIHB1
YmxpYzoKKyAgU3RyZWFtYWJsZVRlbXBsYXRlSW5Gb28oKSA6IHZhbHVlXygpIHt9CisKKyAgY29u
c3QgVCYgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KKyBwcml2YXRlOgorICBUIHZh
bHVlXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIDo6c3RkOjpvc3RyZWFt
JiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBvcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTdHJlYW1hYmxlVGVtcGxhdGVJbkZvbzxUPiYgeCkgeworICByZXR1
cm4gb3MgPDwgIlN0cmVhbWFibGVUZW1wbGF0ZUluRm9vOiAiIDw8IHgudmFsdWUoKTsKK30KKwor
Ly8gQSB1c2VyLWRlZmluZWQgc3RyZWFtYWJsZSBidXQgcmVjdXJzaXZseS1kZWZpbmVkIGNvbnRh
aW5lciB0eXBlIGluCisvLyBhIHVzZXIgbmFtZXNwYWNlLCBpdCBtaW1pY3MgdGhlcmVmb3JlIHN0
ZDo6ZmlsZXN5c3RlbTo6cGF0aCBvcgorLy8gYm9vc3Q6OmZpbGVzeXN0ZW06OnBhdGguCitjbGFz
cyBQYXRoTGlrZSB7CisgcHVibGljOgorICBzdHJ1Y3QgaXRlcmF0b3IgeworICAgIHR5cGVkZWYg
UGF0aExpa2UgdmFsdWVfdHlwZTsKKyAgfTsKKworICBQYXRoTGlrZSgpIHt9CisKKyAgaXRlcmF0
b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBpdGVyYXRvcigpOyB9CisgIGl0ZXJhdG9yIGVuZCgp
IGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCk7IH0KKworICBmcmllbmQgOjpzdGQ6Om9zdHJlYW0m
IG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBQYXRoTGlrZSYpIHsKKyAgICBy
ZXR1cm4gb3MgPDwgIlN0cmVhbWFibGUtUGF0aExpa2UiOworICB9Cit9OworCit9ICAvLyBuYW1l
c3BhY2UgZm9vCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFjZSBndGVzdF9wcmludGVy
c190ZXN0IHsKKwordXNpbmcgOjpzdGQ6OmRlcXVlOwordXNpbmcgOjpzdGQ6Omxpc3Q7Cit1c2lu
ZyA6OnN0ZDo6bWFrZV9wYWlyOwordXNpbmcgOjpzdGQ6Om1hcDsKK3VzaW5nIDo6c3RkOjptdWx0
aW1hcDsKK3VzaW5nIDo6c3RkOjptdWx0aXNldDsKK3VzaW5nIDo6c3RkOjpwYWlyOwordXNpbmcg
OjpzdGQ6OnNldDsKK3VzaW5nIDo6c3RkOjp2ZWN0b3I7Cit1c2luZyA6OnRlc3Rpbmc6OlByaW50
VG9TdHJpbmc7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRGb3JDb21wYXJpc29u
RmFpbHVyZU1lc3NhZ2U7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3Rf
OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TmF0aXZlQXJyYXk7Cit1c2luZyA6OnRlc3Rp
bmc6OmludGVybmFsOjpSRTsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlJlbGF0aW9uVG9T
b3VyY2VSZWZlcmVuY2U7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmdzOwordXNp
bmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnQ7Cit1c2luZyA6OnRlc3Rpbmc6
OmludGVybmFsOjpVbml2ZXJzYWxQcmludGVyOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
VW5pdmVyc2FsVGVyc2VQcmludDsKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFIHx8IEdURVNUX0hB
U19TVERfVFVQTEVfCit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJzZVBy
aW50VHVwbGVGaWVsZHNUb1N0cmluZ3M7CisjZW5kaWYKKworLy8gUHJpbnRzIGEgdmFsdWUgdG8g
YSBzdHJpbmcgdXNpbmcgdGhlIHVuaXZlcnNhbCB2YWx1ZSBwcmludGVyLiAgVGhpcworLy8gaXMg
YSBoZWxwZXIgZm9yIHRlc3RpbmcgVW5pdmVyc2FsUHJpbnRlcjxUPjo6UHJpbnQoKSBmb3IgdmFy
aW91cyB0eXBlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RkOjpzdHJpbmcgUHJpbnQoY29u
c3QgVCYgdmFsdWUpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2FsUHJp
bnRlcjxUPjo6UHJpbnQodmFsdWUsICZzcyk7CisgIHJldHVybiBzcy5zdHIoKTsKK30KKworLy8g
UHJpbnRzIGEgdmFsdWUgcGFzc2VkIGJ5IHJlZmVyZW5jZSB0byBhIHN0cmluZywgdXNpbmcgdGhl
IHVuaXZlcnNhbAorLy8gdmFsdWUgcHJpbnRlci4gIFRoaXMgaXMgYSBoZWxwZXIgZm9yIHRlc3Rp
bmcKKy8vIFVuaXZlcnNhbFByaW50ZXI8VCY+OjpQcmludCgpIGZvciB2YXJpb3VzIHR5cGVzLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGQ6OnN0cmluZyBQcmludEJ5UmVmKGNvbnN0IFQmIHZh
bHVlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIFVuaXZlcnNhbFByaW50ZXI8VCY+
OjpQcmludCh2YWx1ZSwgJnNzKTsKKyAgcmV0dXJuIHNzLnN0cigpOworfQorCisvLyBUZXN0cyBw
cmludGluZyB2YXJpb3VzIGVudW0gdHlwZXMuCisKK1RFU1QoUHJpbnRFbnVtVGVzdCwgQW5vbnlt
b3VzRW51bSkgeworICBFWFBFQ1RfRVEoIi0xIiwgUHJpbnQoa0FFMSkpOworICBFWFBFQ1RfRVEo
IjEiLCBQcmludChrQUUyKSk7Cit9CisKK1RFU1QoUHJpbnRFbnVtVGVzdCwgRW51bVdpdGhvdXRQ
cmludGVyKSB7CisgIEVYUEVDVF9FUSgiLTIiLCBQcmludChrRVdQMSkpOworICBFWFBFQ1RfRVEo
IjQyIiwgUHJpbnQoa0VXUDIpKTsKK30KKworVEVTVChQcmludEVudW1UZXN0LCBFbnVtV2l0aFN0
cmVhbWluZykgeworICBFWFBFQ1RfRVEoImtFV1MxIiwgUHJpbnQoa0VXUzEpKTsKKyAgRVhQRUNU
X0VRKCJpbnZhbGlkIiwgUHJpbnQoc3RhdGljX2Nhc3Q8RW51bVdpdGhTdHJlYW1pbmc+KDApKSk7
Cit9CisKK1RFU1QoUHJpbnRFbnVtVGVzdCwgRW51bVdpdGhQcmludFRvKSB7CisgIEVYUEVDVF9F
USgia0VXUFQxIiwgUHJpbnQoa0VXUFQxKSk7CisgIEVYUEVDVF9FUSgiaW52YWxpZCIsIFByaW50
KHN0YXRpY19jYXN0PEVudW1XaXRoUHJpbnRUbz4oMCkpKTsKK30KKworLy8gVGVzdHMgcHJpbnRp
bmcgYSBjbGFzcyBpbXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRvIEJpZ2dlc3RJbnQuCisKK1RFU1Qo
UHJpbnRDbGFzc1Rlc3QsIEJpZ2dlc3RJbnRDb252ZXJ0aWJsZSkgeworICBFWFBFQ1RfRVEoIjQy
IiwgUHJpbnQoQmlnZ2VzdEludENvbnZlcnRpYmxlKCkpKTsKK30KKworLy8gVGVzdHMgcHJpbnRp
bmcgdmFyaW91cyBjaGFyIHR5cGVzLgorCisvLyBjaGFyLgorVEVTVChQcmludENoYXJUZXN0LCBQ
bGFpbkNoYXIpIHsKKyAgRVhQRUNUX0VRKCInXFwwJyIsIFByaW50KCdcMCcpKTsKKyAgRVhQRUNU
X0VRKCInXFwnJyAoMzksIDB4MjcpIiwgUHJpbnQoJ1wnJykpOworICBFWFBFQ1RfRVEoIidcIicg
KDM0LCAweDIyKSIsIFByaW50KCciJykpOworICBFWFBFQ1RfRVEoIic/JyAoNjMsIDB4M0YpIiwg
UHJpbnQoJz8nKSk7CisgIEVYUEVDVF9FUSgiJ1xcXFwnICg5MiwgMHg1QykiLCBQcmludCgnXFwn
KSk7CisgIEVYUEVDVF9FUSgiJ1xcYScgKDcpIiwgUHJpbnQoJ1xhJykpOworICBFWFBFQ1RfRVEo
IidcXGInICg4KSIsIFByaW50KCdcYicpKTsKKyAgRVhQRUNUX0VRKCInXFxmJyAoMTIsIDB4Qyki
LCBQcmludCgnXGYnKSk7CisgIEVYUEVDVF9FUSgiJ1xcbicgKDEwLCAweEEpIiwgUHJpbnQoJ1xu
JykpOworICBFWFBFQ1RfRVEoIidcXHInICgxMywgMHhEKSIsIFByaW50KCdccicpKTsKKyAgRVhQ
RUNUX0VRKCInXFx0JyAoOSkiLCBQcmludCgnXHQnKSk7CisgIEVYUEVDVF9FUSgiJ1xcdicgKDEx
LCAweEIpIiwgUHJpbnQoJ1x2JykpOworICBFWFBFQ1RfRVEoIidcXHg3RicgKDEyNykiLCBQcmlu
dCgnXHg3RicpKTsKKyAgRVhQRUNUX0VRKCInXFx4RkYnICgyNTUpIiwgUHJpbnQoJ1x4RkYnKSk7
CisgIEVYUEVDVF9FUSgiJyAnICgzMiwgMHgyMCkiLCBQcmludCgnICcpKTsKKyAgRVhQRUNUX0VR
KCInYScgKDk3LCAweDYxKSIsIFByaW50KCdhJykpOworfQorCisvLyBzaWduZWQgY2hhci4KK1RF
U1QoUHJpbnRDaGFyVGVzdCwgU2lnbmVkQ2hhcikgeworICBFWFBFQ1RfRVEoIidcXDAnIiwgUHJp
bnQoc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+KCdcMCcpKSk7CisgIEVYUEVDVF9FUSgiJ1xceENF
JyAoLTUwKSIsCisgICAgICAgICAgICBQcmludChzdGF0aWNfY2FzdDxzaWduZWQgY2hhcj4oLTUw
KSkpOworfQorCisvLyB1bnNpZ25lZCBjaGFyLgorVEVTVChQcmludENoYXJUZXN0LCBVbnNpZ25l
ZENoYXIpIHsKKyAgRVhQRUNUX0VRKCInXFwwJyIsIFByaW50KHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KCdcMCcpKSk7CisgIEVYUEVDVF9FUSgiJ2InICg5OCwgMHg2MikiLAorICAgICAgICAg
ICAgUHJpbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oJ2InKSkpOworfQorCisvLyBUZXN0
cyBwcmludGluZyBvdGhlciBzaW1wbGUsIGJ1aWx0LWluIHR5cGVzLgorCisvLyBib29sLgorVEVT
VChQcmludEJ1aWx0SW5UeXBlVGVzdCwgQm9vbCkgeworICBFWFBFQ1RfRVEoImZhbHNlIiwgUHJp
bnQoZmFsc2UpKTsKKyAgRVhQRUNUX0VRKCJ0cnVlIiwgUHJpbnQodHJ1ZSkpOworfQorCisvLyB3
Y2hhcl90LgorVEVTVChQcmludEJ1aWx0SW5UeXBlVGVzdCwgV2NoYXJfdCkgeworICBFWFBFQ1Rf
RVEoIkwnXFwwJyIsIFByaW50KEwnXDAnKSk7CisgIEVYUEVDVF9FUSgiTCdcXCcnICgzOSwgMHgy
NykiLCBQcmludChMJ1wnJykpOworICBFWFBFQ1RfRVEoIkwnXCInICgzNCwgMHgyMikiLCBQcmlu
dChMJyInKSk7CisgIEVYUEVDVF9FUSgiTCc/JyAoNjMsIDB4M0YpIiwgUHJpbnQoTCc/JykpOwor
ICBFWFBFQ1RfRVEoIkwnXFxcXCcgKDkyLCAweDVDKSIsIFByaW50KEwnXFwnKSk7CisgIEVYUEVD
VF9FUSgiTCdcXGEnICg3KSIsIFByaW50KEwnXGEnKSk7CisgIEVYUEVDVF9FUSgiTCdcXGInICg4
KSIsIFByaW50KEwnXGInKSk7CisgIEVYUEVDVF9FUSgiTCdcXGYnICgxMiwgMHhDKSIsIFByaW50
KEwnXGYnKSk7CisgIEVYUEVDVF9FUSgiTCdcXG4nICgxMCwgMHhBKSIsIFByaW50KEwnXG4nKSk7
CisgIEVYUEVDVF9FUSgiTCdcXHInICgxMywgMHhEKSIsIFByaW50KEwnXHInKSk7CisgIEVYUEVD
VF9FUSgiTCdcXHQnICg5KSIsIFByaW50KEwnXHQnKSk7CisgIEVYUEVDVF9FUSgiTCdcXHYnICgx
MSwgMHhCKSIsIFByaW50KEwnXHYnKSk7CisgIEVYUEVDVF9FUSgiTCdcXHg3RicgKDEyNykiLCBQ
cmludChMJ1x4N0YnKSk7CisgIEVYUEVDVF9FUSgiTCdcXHhGRicgKDI1NSkiLCBQcmludChMJ1x4
RkYnKSk7CisgIEVYUEVDVF9FUSgiTCcgJyAoMzIsIDB4MjApIiwgUHJpbnQoTCcgJykpOworICBF
WFBFQ1RfRVEoIkwnYScgKDk3LCAweDYxKSIsIFByaW50KEwnYScpKTsKKyAgRVhQRUNUX0VRKCJM
J1xceDU3NicgKDEzOTgpIiwgUHJpbnQoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHg1NzYpKSk7Cisg
IEVYUEVDVF9FUSgiTCdcXHhDNzREJyAoNTEwMjEpIiwgUHJpbnQoc3RhdGljX2Nhc3Q8d2NoYXJf
dD4oMHhDNzREKSkpOworfQorCisvLyBUZXN0IHRoYXQgSW50NjQgcHJvdmlkZXMgbW9yZSBzdG9y
YWdlIHRoYW4gd2NoYXJfdC4KK1RFU1QoUHJpbnRUeXBlU2l6ZVRlc3QsIFdjaGFyX3QpIHsKKyAg
RVhQRUNUX0xUKHNpemVvZih3Y2hhcl90KSwgc2l6ZW9mKHRlc3Rpbmc6OmludGVybmFsOjpJbnQ2
NCkpOworfQorCisvLyBWYXJpb3VzIGludGVnZXIgdHlwZXMuCitURVNUKFByaW50QnVpbHRJblR5
cGVUZXN0LCBJbnRlZ2VyKSB7CisgIEVYUEVDVF9FUSgiJ1xceEZGJyAoMjU1KSIsIFByaW50KHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSkpKTsgIC8vIHVpbnQ4CisgIEVYUEVDVF9FUSgi
J1xceDgwJyAoLTEyOCkiLCBQcmludChzdGF0aWNfY2FzdDxzaWduZWQgY2hhcj4oLTEyOCkpKTsg
IC8vIGludDgKKyAgRVhQRUNUX0VRKCI2NTUzNSIsIFByaW50KFVTSFJUX01BWCkpOyAgLy8gdWlu
dDE2CisgIEVYUEVDVF9FUSgiLTMyNzY4IiwgUHJpbnQoU0hSVF9NSU4pKTsgIC8vIGludDE2Cisg
IEVYUEVDVF9FUSgiNDI5NDk2NzI5NSIsIFByaW50KFVJTlRfTUFYKSk7ICAvLyB1aW50MzIKKyAg
RVhQRUNUX0VRKCItMjE0NzQ4MzY0OCIsIFByaW50KElOVF9NSU4pKTsgIC8vIGludDMyCisgIEVY
UEVDVF9FUSgiMTg0NDY3NDQwNzM3MDk1NTE2MTUiLAorICAgICAgICAgICAgUHJpbnQoc3RhdGlj
X2Nhc3Q8dGVzdGluZzo6aW50ZXJuYWw6OlVJbnQ2ND4oLTEpKSk7ICAvLyB1aW50NjQKKyAgRVhQ
RUNUX0VRKCItOTIyMzM3MjAzNjg1NDc3NTgwOCIsCisgICAgICAgICAgICBQcmludChzdGF0aWNf
Y2FzdDx0ZXN0aW5nOjppbnRlcm5hbDo6SW50NjQ+KDEpIDw8IDYzKSk7ICAvLyBpbnQ2NAorfQor
CisvLyBTaXplIHR5cGVzLgorVEVTVChQcmludEJ1aWx0SW5UeXBlVGVzdCwgU2l6ZV90KSB7Cisg
IEVYUEVDVF9FUSgiMSIsIFByaW50KHNpemVvZignYScpKSk7ICAvLyBzaXplX3QuCisjaWYgIUdU
RVNUX09TX1dJTkRPV1MKKyAgLy8gV2luZG93cyBoYXMgbm8gc3NpemVfdCB0eXBlLgorICBFWFBF
Q1RfRVEoIi0yIiwgUHJpbnQoc3RhdGljX2Nhc3Q8c3NpemVfdD4oLTIpKSk7ICAvLyBzc2l6ZV90
LgorI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUworfQorCisvLyBGbG9hdGluZy1wb2ludHMu
CitURVNUKFByaW50QnVpbHRJblR5cGVUZXN0LCBGbG9hdGluZ1BvaW50cykgeworICBFWFBFQ1Rf
RVEoIjEuNSIsIFByaW50KDEuNWYpKTsgICAvLyBmbG9hdAorICBFWFBFQ1RfRVEoIi0yLjUiLCBQ
cmludCgtMi41KSk7ICAvLyBkb3VibGUKK30KKworLy8gU2luY2UgOjpzdGQ6OnN0cmluZ3N0cmVh
bTo6b3BlcmF0b3I8PChjb25zdCB2b2lkICopIGZvcm1hdHMgdGhlIHBvaW50ZXIKKy8vIG91dHB1
dCBkaWZmZXJlbnRseSB3aXRoIGRpZmZlcmVudCBjb21waWxlcnMsIHdlIGhhdmUgdG8gY3JlYXRl
IHRoZSBleHBlY3RlZAorLy8gb3V0cHV0IGZpcnN0IGFuZCB1c2UgaXQgYXMgb3VyIGV4cGVjdGF0
aW9uLgorc3RhdGljIHN0ZDo6c3RyaW5nIFByaW50UG9pbnRlcihjb25zdCB2b2lkKiBwKSB7Cisg
IDo6c3RkOjpzdHJpbmdzdHJlYW0gZXhwZWN0ZWRfcmVzdWx0X3N0cmVhbTsKKyAgZXhwZWN0ZWRf
cmVzdWx0X3N0cmVhbSA8PCBwOworICByZXR1cm4gZXhwZWN0ZWRfcmVzdWx0X3N0cmVhbS5zdHIo
KTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgQyBzdHJpbmdzLgorCisvLyBjb25zdCBjaGFyKi4K
K1RFU1QoUHJpbnRDU3RyaW5nVGVzdCwgQ29uc3QpIHsKKyAgY29uc3QgY2hhciogcCA9ICJXb3Js
ZCI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCkgKyAiIHBvaW50aW5nIHRvIFwiV29ybGRc
IiIsIFByaW50KHApKTsKK30KKworLy8gY2hhciouCitURVNUKFByaW50Q1N0cmluZ1Rlc3QsIE5v
bkNvbnN0KSB7CisgIGNoYXIgcFtdID0gIkhpIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihw
KSArICIgcG9pbnRpbmcgdG8gXCJIaVwiIiwKKyAgICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0
PGNoYXIqPihwKSkpOworfQorCisvLyBOVUxMIEMgc3RyaW5nLgorVEVTVChQcmludENTdHJpbmdU
ZXN0LCBOdWxsKSB7CisgIGNvbnN0IGNoYXIqIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwi
LCBQcmludChwKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQyBzdHJpbmdzIGFyZSBlc2NhcGVkIHBy
b3Blcmx5LgorVEVTVChQcmludENTdHJpbmdUZXN0LCBFc2NhcGVzUHJvcGVybHkpIHsKKyAgY29u
c3QgY2hhciogcCA9ICInXCI/XFxcYVxiXGZcblxyXHRcdlx4N0ZceEZGIGEiOworICBFWFBFQ1Rf
RVEoUHJpbnRQb2ludGVyKHApICsgIiBwb2ludGluZyB0byBcIidcXFwiP1xcXFxcXGFcXGJcXGYi
CisgICAgICAgICAgICAiXFxuXFxyXFx0XFx2XFx4N0ZcXHhGRiBhXCIiLAorICAgICAgICAgICAg
UHJpbnQocCkpOworfQorCisvLyBNU1ZDIGNvbXBpbGVyIGNhbiBiZSBjb25maWd1cmVkIHRvIGRl
ZmluZSB3aGFyX3QgYXMgYSB0eXBlZGVmCisvLyBvZiB1bnNpZ25lZCBzaG9ydC4gRGVmaW5pbmcg
YW4gb3ZlcmxvYWQgZm9yIGNvbnN0IHdjaGFyX3QqIGluIHRoYXQgY2FzZQorLy8gd291bGQgY2F1
c2UgcG9pbnRlcnMgdG8gdW5zaWduZWQgc2hvcnRzIGJlIHByaW50ZWQgYXMgd2lkZSBzdHJpbmdz
LAorLy8gcG9zc2libHkgYWNjZXNzaW5nIG1vcmUgbWVtb3J5IHRoYW4gaW50ZW5kZWQgYW5kIGNh
dXNpbmcgaW52YWxpZAorLy8gbWVtb3J5IGFjY2Vzc2VzLiBNU1ZDIGRlZmluZXMgX05BVElWRV9X
Q0hBUl9UX0RFRklORUQgc3ltYm9sIHdoZW4KKy8vIHdjaGFyX3QgaXMgaW1wbGVtZW50ZWQgYXMg
YSBuYXRpdmUgdHlwZS4KKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfTkFUSVZF
X1dDSEFSX1RfREVGSU5FRCkKKworLy8gY29uc3Qgd2NoYXJfdCouCitURVNUKFByaW50V2lkZUNT
dHJpbmdUZXN0LCBDb25zdCkgeworICBjb25zdCB3Y2hhcl90KiBwID0gTCJXb3JsZCI7CisgIEVY
UEVDVF9FUShQcmludFBvaW50ZXIocCkgKyAiIHBvaW50aW5nIHRvIExcIldvcmxkXCIiLCBQcmlu
dChwKSk7Cit9CisKKy8vIHdjaGFyX3QqLgorVEVTVChQcmludFdpZGVDU3RyaW5nVGVzdCwgTm9u
Q29uc3QpIHsKKyAgd2NoYXJfdCBwW10gPSBMIkhpIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRl
cihwKSArICIgcG9pbnRpbmcgdG8gTFwiSGlcIiIsCisgICAgICAgICAgICBQcmludChzdGF0aWNf
Y2FzdDx3Y2hhcl90Kj4ocCkpKTsKK30KKworLy8gTlVMTCB3aWRlIEMgc3RyaW5nLgorVEVTVChQ
cmludFdpZGVDU3RyaW5nVGVzdCwgTnVsbCkgeworICBjb25zdCB3Y2hhcl90KiBwID0gTlVMTDsK
KyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBUZXN0cyB0aGF0IHdpZGUg
QyBzdHJpbmdzIGFyZSBlc2NhcGVkIHByb3Blcmx5LgorVEVTVChQcmludFdpZGVDU3RyaW5nVGVz
dCwgRXNjYXBlc1Byb3Blcmx5KSB7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0geydcJycsICciJywg
Jz8nLCAnXFwnLCAnXGEnLCAnXGInLCAnXGYnLCAnXG4nLCAnXHInLAorICAgICAgICAgICAgICAg
ICAgICAgICAnXHQnLCAnXHYnLCAweEQzLCAweDU3NiwgMHg4RDMsIDB4Qzc0RCwgJyAnLCAnYScs
ICdcMCd9OworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHMpICsgIiBwb2ludGluZyB0byBMXCIn
XFxcIj9cXFxcXFxhXFxiXFxmIgorICAgICAgICAgICAgIlxcblxcclxcdFxcdlxceEQzXFx4NTc2
XFx4OEQzXFx4Qzc0RCBhXCIiLAorICAgICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8Y29uc3Qg
d2NoYXJfdCo+KHMpKSk7Cit9CisjZW5kaWYgIC8vIG5hdGl2ZSB3Y2hhcl90CisKKy8vIFRlc3Rz
IHByaW50aW5nIHBvaW50ZXJzIHRvIG90aGVyIGNoYXIgdHlwZXMuCisKKy8vIHNpZ25lZCBjaGFy
Ki4KK1RFU1QoUHJpbnRDaGFyUG9pbnRlclRlc3QsIFNpZ25lZENoYXIpIHsKKyAgc2lnbmVkIGNo
YXIqIHAgPSByZWludGVycHJldF9jYXN0PHNpZ25lZCBjaGFyKj4oMHgxMjM0KTsKKyAgRVhQRUNU
X0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VR
KCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBjb25zdCBzaWduZWQgY2hhciouCitURVNUKFBy
aW50Q2hhclBvaW50ZXJUZXN0LCBDb25zdFNpZ25lZENoYXIpIHsKKyAgc2lnbmVkIGNoYXIqIHAg
PSByZWludGVycHJldF9jYXN0PHNpZ25lZCBjaGFyKj4oMHgxMjM0KTsKKyAgRVhQRUNUX0VRKFBy
aW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxM
IiwgUHJpbnQocCkpOworfQorCisvLyB1bnNpZ25lZCBjaGFyKi4KK1RFU1QoUHJpbnRDaGFyUG9p
bnRlclRlc3QsIFVuc2lnbmVkQ2hhcikgeworICB1bnNpZ25lZCBjaGFyKiBwID0gcmVpbnRlcnBy
ZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oMHgxMjM0KTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRl
cihwKSwgUHJpbnQocCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQo
cCkpOworfQorCisvLyBjb25zdCB1bnNpZ25lZCBjaGFyKi4KK1RFU1QoUHJpbnRDaGFyUG9pbnRl
clRlc3QsIENvbnN0VW5zaWduZWRDaGFyKSB7CisgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHAgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPigweDEyMzQpOworICBFWFBFQ1Rf
RVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7CisgIHAgPSBOVUxMOworICBFWFBFQ1RfRVEo
Ik5VTEwiLCBQcmludChwKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIHBvaW50ZXJzIHRvIHNp
bXBsZSwgYnVpbHQtaW4gdHlwZXMuCisKKy8vIGJvb2wqLgorVEVTVChQcmludFBvaW50ZXJUb0J1
aWx0SW5UeXBlVGVzdCwgQm9vbCkgeworICBib29sKiBwID0gcmVpbnRlcnByZXRfY2FzdDxib29s
Kj4oMHhBQkNEKTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBw
ID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyB2b2lkKi4K
K1RFU1QoUHJpbnRQb2ludGVyVG9CdWlsdEluVHlwZVRlc3QsIFZvaWQpIHsKKyAgdm9pZCogcCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4QUJDRCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50
ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50
KHApKTsKK30KKworLy8gY29uc3Qgdm9pZCouCitURVNUKFByaW50UG9pbnRlclRvQnVpbHRJblR5
cGVUZXN0LCBDb25zdFZvaWQpIHsKKyAgY29uc3Qgdm9pZCogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgdm9pZCo+KDB4QUJDRCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50
KHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKwor
Ly8gVGVzdHMgcHJpbnRpbmcgcG9pbnRlcnMgdG8gcG9pbnRlcnMuCitURVNUKFByaW50UG9pbnRl
clRvUG9pbnRlclRlc3QsIEludFBvaW50ZXJQb2ludGVyKSB7CisgIGludCoqIHAgPSByZWludGVy
cHJldF9jYXN0PGludCoqPigweEFCQ0QpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQ
cmludChwKSk7CisgIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9
CisKKy8vIFRlc3RzIHByaW50aW5nIChub24tbWVtYmVyKSBmdW5jdGlvbiBwb2ludGVycy4KKwor
dm9pZCBNeUZ1bmN0aW9uKGludCAvKiBuICovKSB7fQorCitURVNUKFByaW50UG9pbnRlclRlc3Qs
IE5vbk1lbWJlckZ1bmN0aW9uUG9pbnRlcikgeworICAvLyBXZSBjYW5ub3QgZGlyZWN0bHkgY2Fz
dCAmTXlGdW5jdGlvbiB0byBjb25zdCB2b2lkKiBiZWNhdXNlIHRoZQorICAvLyBzdGFuZGFyZCBk
aXNhbGxvd3MgY2FzdGluZyBiZXR3ZWVuIHBvaW50ZXJzIHRvIGZ1bmN0aW9ucyBhbmQKKyAgLy8g
cG9pbnRlcnMgdG8gb2JqZWN0cywgYW5kIHNvbWUgY29tcGlsZXJzIChlLmcuIEdDQyAzLjQpIGVu
Zm9yY2UKKyAgLy8gdGhpcyBsaW1pdGF0aW9uLgorICBFWFBFQ1RfRVEoCisgICAgICBQcmludFBv
aW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oCisgICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxpbnRlcm5hbDo6QmlnZ2VzdEludD4oJk15RnVuY3Rpb24pKSksCisgICAgICBQcmlu
dCgmTXlGdW5jdGlvbikpOworICBpbnQgKCpwKShib29sKSA9IE5VTEw7ICAvLyBOT0xJTlQKKyAg
RVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBBbiBhc3NlcnRpb24gcHJlZGlj
YXRlIGRldGVybWluaW5nIHdoZXRoZXIgYSBvbmUgc3RyaW5nIGlzIGEgcHJlZml4IGZvcgorLy8g
YW5vdGhlci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBTdHJpbmdUeXBlPgorQXNzZXJ0aW9uUmVzdWx0
IEhhc1ByZWZpeChjb25zdCBTdHJpbmdUeXBlJiBzdHIsIGNvbnN0IFN0cmluZ1R5cGUmIHByZWZp
eCkgeworICBpZiAoc3RyLmZpbmQocHJlZml4LCAwKSA9PSAwKQorICAgIHJldHVybiBBc3NlcnRp
b25TdWNjZXNzKCk7CisKKyAgY29uc3QgYm9vbCBpc193aWRlX3N0cmluZyA9IHNpemVvZihwcmVm
aXhbMF0pID4gMTsKKyAgY29uc3QgY2hhciogY29uc3QgYmVnaW5fc3RyaW5nX3F1b3RlID0gaXNf
d2lkZV9zdHJpbmcgPyAiTFwiIiA6ICJcIiI7CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkK
KyAgICAgIDw8IGJlZ2luX3N0cmluZ19xdW90ZSA8PCBwcmVmaXggPDwgIlwiIGlzIG5vdCBhIHBy
ZWZpeCBvZiAiCisgICAgICA8PCBiZWdpbl9zdHJpbmdfcXVvdGUgPDwgc3RyIDw8ICJcIlxuIjsK
K30KKworLy8gVGVzdHMgcHJpbnRpbmcgbWVtYmVyIHZhcmlhYmxlIHBvaW50ZXJzLiAgQWx0aG91
Z2ggdGhleSBhcmUgY2FsbGVkCisvLyBwb2ludGVycywgdGhleSBkb24ndCBwb2ludCB0byBhIGxv
Y2F0aW9uIGluIHRoZSBhZGRyZXNzIHNwYWNlLgorLy8gVGhlaXIgcmVwcmVzZW50YXRpb24gaXMg
aW1wbGVtZW50YXRpb24tZGVmaW5lZC4gIFRodXMgdGhleSB3aWxsIGJlCisvLyBwcmludGVkIGFz
IHJhdyBieXRlcy4KKworc3RydWN0IEZvbyB7CisgcHVibGljOgorICB2aXJ0dWFsIH5Gb28oKSB7
fQorICBpbnQgTXlNZXRob2QoY2hhciB4KSB7IHJldHVybiB4ICsgMTsgfQorICB2aXJ0dWFsIGNo
YXIgTXlWaXJ0dWFsTWV0aG9kKGludCAvKiBuICovKSB7IHJldHVybiAnYSc7IH0KKworICBpbnQg
dmFsdWU7Cit9OworCitURVNUKFByaW50UG9pbnRlclRlc3QsIE1lbWJlclZhcmlhYmxlUG9pbnRl
cikgeworICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoUHJpbnQoJkZvbzo6dmFsdWUpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgUHJpbnQoc2l6ZW9mKCZGb286OnZhbHVlKSkgKyAiLWJ5dGUgb2Jq
ZWN0ICIpKTsKKyAgaW50IEZvbzo6KnAgPSBOVUxMOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9UUlVF
KEhhc1ByZWZpeChQcmludChwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFByaW50KHNpemVv
ZihwKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgbWVtYmVy
IGZ1bmN0aW9uIHBvaW50ZXJzLiAgQWx0aG91Z2ggdGhleSBhcmUgY2FsbGVkCisvLyBwb2ludGVy
cywgdGhleSBkb24ndCBwb2ludCB0byBhIGxvY2F0aW9uIGluIHRoZSBhZGRyZXNzIHNwYWNlLgor
Ly8gVGhlaXIgcmVwcmVzZW50YXRpb24gaXMgaW1wbGVtZW50YXRpb24tZGVmaW5lZC4gIFRodXMg
dGhleSB3aWxsIGJlCisvLyBwcmludGVkIGFzIHJhdyBieXRlcy4KK1RFU1QoUHJpbnRQb2ludGVy
VGVzdCwgTWVtYmVyRnVuY3Rpb25Qb2ludGVyKSB7CisgIEVYUEVDVF9UUlVFKEhhc1ByZWZpeChQ
cmludCgmRm9vOjpNeU1ldGhvZCksCisgICAgICAgICAgICAgICAgICAgICAgICBQcmludChzaXpl
b2YoJkZvbzo6TXlNZXRob2QpKSArICItYnl0ZSBvYmplY3QgIikpOworICBFWFBFQ1RfVFJVRSgK
KyAgICAgIEhhc1ByZWZpeChQcmludCgmRm9vOjpNeVZpcnR1YWxNZXRob2QpLAorICAgICAgICAg
ICAgICAgIFByaW50KHNpemVvZigoJkZvbzo6TXlWaXJ0dWFsTWV0aG9kKSkpICsgIi1ieXRlIG9i
amVjdCAiKSk7CisgIGludCAoRm9vOjoqcCkoY2hhcikgPSBOVUxMOyAgLy8gTk9MSU5UCisgIEVY
UEVDVF9UUlVFKEhhc1ByZWZpeChQcmludChwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBy
aW50KHNpemVvZihwKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKK30KKworLy8gVGVzdHMgcHJpbnRp
bmcgQyBhcnJheXMuCisKKy8vIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBhbmQgUHJpbnQo
KSBpcyB0aGF0IGl0IGVuc3VyZXMgdGhhdCB0aGUKKy8vIGFyZ3VtZW50IGlzIGEgcmVmZXJlbmNl
IHRvIGFuIGFycmF5LgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgorc3RkOjpzdHJp
bmcgUHJpbnRBcnJheUhlbHBlcihUICgmYSlbTl0pIHsKKyAgcmV0dXJuIFByaW50KGEpOworfQor
CisvLyBPbmUtZGltZW5zaW9uYWwgYXJyYXkuCitURVNUKFByaW50QXJyYXlUZXN0LCBPbmVEaW1l
bnNpb25hbEFycmF5KSB7CisgIGludCBhWzVdID0geyAxLCAyLCAzLCA0LCA1IH07CisgIEVYUEVD
VF9FUSgieyAxLCAyLCAzLCA0LCA1IH0iLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8g
VHdvLWRpbWVuc2lvbmFsIGFycmF5LgorVEVTVChQcmludEFycmF5VGVzdCwgVHdvRGltZW5zaW9u
YWxBcnJheSkgeworICBpbnQgYVsyXVs1XSA9IHsKKyAgICB7IDEsIDIsIDMsIDQsIDUgfSwKKyAg
ICB7IDYsIDcsIDgsIDksIDAgfQorICB9OworICBFWFBFQ1RfRVEoInsgeyAxLCAyLCAzLCA0LCA1
IH0sIHsgNiwgNywgOCwgOSwgMCB9IH0iLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8g
QXJyYXkgb2YgY29uc3QgZWxlbWVudHMuCitURVNUKFByaW50QXJyYXlUZXN0LCBDb25zdEFycmF5
KSB7CisgIGNvbnN0IGJvb2wgYVsxXSA9IHsgZmFsc2UgfTsKKyAgRVhQRUNUX0VRKCJ7IGZhbHNl
IH0iLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8gY2hhciBhcnJheSB3aXRob3V0IHRl
cm1pbmF0aW5nIE5VTC4KK1RFU1QoUHJpbnRBcnJheVRlc3QsIENoYXJBcnJheVdpdGhOb1Rlcm1p
bmF0aW5nTnVsKSB7CisgIC8vIEFycmF5IGEgY29udGFpbnMgJ1wwJyBpbiB0aGUgbWlkZGxlIGFu
ZCBkb2Vzbid0IGVuZCB3aXRoICdcMCcuCisgIGNoYXIgYVtdID0geyAnSCcsICdcMCcsICdpJyB9
OworICBFWFBFQ1RfRVEoIlwiSFxcMGlcIiAobm8gdGVybWluYXRpbmcgTlVMKSIsIFByaW50QXJy
YXlIZWxwZXIoYSkpOworfQorCisvLyBjb25zdCBjaGFyIGFycmF5IHdpdGggdGVybWluYXRpbmcg
TlVMLgorVEVTVChQcmludEFycmF5VGVzdCwgQ29uc3RDaGFyQXJyYXlXaXRoVGVybWluYXRpbmdO
dWwpIHsKKyAgY29uc3QgY2hhciBhW10gPSAiXDBIaSI7CisgIEVYUEVDVF9FUSgiXCJcXDBIaVwi
IiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIGNvbnN0IHdjaGFyX3QgYXJyYXkgd2l0
aG91dCB0ZXJtaW5hdGluZyBOVUwuCitURVNUKFByaW50QXJyYXlUZXN0LCBXQ2hhckFycmF5V2l0
aE5vVGVybWluYXRpbmdOdWwpIHsKKyAgLy8gQXJyYXkgYSBjb250YWlucyAnXDAnIGluIHRoZSBt
aWRkbGUgYW5kIGRvZXNuJ3QgZW5kIHdpdGggJ1wwJy4KKyAgY29uc3Qgd2NoYXJfdCBhW10gPSB7
IEwnSCcsIEwnXDAnLCBMJ2knIH07CisgIEVYUEVDVF9FUSgiTFwiSFxcMGlcIiAobm8gdGVybWlu
YXRpbmcgTlVMKSIsIFByaW50QXJyYXlIZWxwZXIoYSkpOworfQorCisvLyB3Y2hhcl90IGFycmF5
IHdpdGggdGVybWluYXRpbmcgTlVMLgorVEVTVChQcmludEFycmF5VGVzdCwgV0NvbnN0Q2hhckFy
cmF5V2l0aFRlcm1pbmF0aW5nTnVsKSB7CisgIGNvbnN0IHdjaGFyX3QgYVtdID0gTCJcMEhpIjsK
KyAgRVhQRUNUX0VRKCJMXCJcXDBIaVwiIiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8v
IEFycmF5IG9mIG9iamVjdHMuCitURVNUKFByaW50QXJyYXlUZXN0LCBPYmplY3RBcnJheSkgewor
ICBzdGQ6OnN0cmluZyBhWzNdID0geyJIaSIsICJIZWxsbyIsICJOaSBoYW8ifTsKKyAgRVhQRUNU
X0VRKCJ7IFwiSGlcIiwgXCJIZWxsb1wiLCBcIk5pIGhhb1wiIH0iLCBQcmludEFycmF5SGVscGVy
KGEpKTsKK30KKworLy8gQXJyYXkgd2l0aCBtYW55IGVsZW1lbnRzLgorVEVTVChQcmludEFycmF5
VGVzdCwgQmlnQXJyYXkpIHsKKyAgaW50IGFbMTAwXSA9IHsgMSwgMiwgMyB9OworICBFWFBFQ1Rf
RVEoInsgMSwgMiwgMywgMCwgMCwgMCwgMCwgMCwgLi4uLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
IH0iLAorICAgICAgICAgICAgUHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIFRlc3RzIHBy
aW50aW5nIDo6c3RyaW5nIGFuZCA6OnN0ZDo6c3RyaW5nLgorCisjaWYgR1RFU1RfSEFTX0dMT0JB
TF9TVFJJTkcKKy8vIDo6c3RyaW5nLgorVEVTVChQcmludFN0cmluZ1Rlc3QsIFN0cmluZ0luR2xv
YmFsTmFtZXNwYWNlKSB7CisgIGNvbnN0IGNoYXIgc1tdID0gIidcIj9cXFxhXGJcZlxuXDBcclx0
XHZceDdGXHhGRiBhIjsKKyAgY29uc3QgOjpzdHJpbmcgc3RyKHMsIHNpemVvZihzKSk7CisgIEVY
UEVDVF9FUSgiXCInXFxcIj9cXFxcXFxhXFxiXFxmXFxuXFwwXFxyXFx0XFx2XFx4N0ZcXHhGRiBh
XFwwXCIiLAorICAgICAgICAgICAgUHJpbnQoc3RyKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hB
U19HTE9CQUxfU1RSSU5HCisKKy8vIDo6c3RkOjpzdHJpbmcuCitURVNUKFByaW50U3RyaW5nVGVz
dCwgU3RyaW5nSW5TdGROYW1lc3BhY2UpIHsKKyAgY29uc3QgY2hhciBzW10gPSAiJ1wiP1xcXGFc
YlxmXG5cMFxyXHRcdlx4N0ZceEZGIGEiOworICBjb25zdCA6OnN0ZDo6c3RyaW5nIHN0cihzLCBz
aXplb2YocykpOworICBFWFBFQ1RfRVEoIlwiJ1xcXCI/XFxcXFxcYVxcYlxcZlxcblxcMFxcclxc
dFxcdlxceDdGXFx4RkYgYVxcMFwiIiwKKyAgICAgICAgICAgIFByaW50KHN0cikpOworfQorCitU
RVNUKFByaW50U3RyaW5nVGVzdCwgU3RyaW5nQW1iaWd1b3VzSGV4KSB7CisgIC8vICJceDZCQU5B
TkEiIGlzIGFtYmlndW91cywgaXQgY2FuIGJlIGludGVycHJldGVkIGFzIHN0YXJ0aW5nIHdpdGgg
ZWl0aGVyIG9mOgorICAvLyAnXHg2JywgJ1x4NkInLCBvciAnXHg2QkEnLgorCisgIC8vIGEgaGV4
IGVzY2FwaW5nIHNlcXVlbmNlIGZvbGxvd2luZyBieSBhIGRlY2ltYWwgZGlnaXQKKyAgRVhQRUNU
X0VRKCJcIjBcXHgxMlwiIFwiM1wiIiwgUHJpbnQoOjpzdGQ6OnN0cmluZygiMFx4MTIiICIzIikp
KTsKKyAgLy8gYSBoZXggZXNjYXBpbmcgc2VxdWVuY2UgZm9sbG93aW5nIGJ5IGEgaGV4IGRpZ2l0
IChsb3dlci1jYXNlKQorICBFWFBFQ1RfRVEoIlwibW1cXHg2XCIgXCJiYW5hbmFzXCIiLCBQcmlu
dCg6OnN0ZDo6c3RyaW5nKCJtbVx4NiIgImJhbmFuYXMiKSkpOworICAvLyBhIGhleCBlc2NhcGlu
ZyBzZXF1ZW5jZSBmb2xsb3dpbmcgYnkgYSBoZXggZGlnaXQgKHVwcGVyLWNhc2UpCisgIEVYUEVD
VF9FUSgiXCJOT01cXHg2XCIgXCJCQU5BTkFcIiIsIFByaW50KDo6c3RkOjpzdHJpbmcoIk5PTVx4
NiIgIkJBTkFOQSIpKSk7CisgIC8vIGEgaGV4IGVzY2FwaW5nIHNlcXVlbmNlIGZvbGxvd2luZyBi
eSBhIG5vbi14ZGlnaXQKKyAgRVhQRUNUX0VRKCJcIiFcXHg1LSFcIiIsIFByaW50KDo6c3RkOjpz
dHJpbmcoIiFceDUtISIpKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIDo6d3N0cmluZyBhbmQg
OjpzdGQ6OndzdHJpbmcuCisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKKy8vIDo6d3N0
cmluZy4KK1RFU1QoUHJpbnRXaWRlU3RyaW5nVGVzdCwgU3RyaW5nSW5HbG9iYWxOYW1lc3BhY2Up
IHsKKyAgY29uc3Qgd2NoYXJfdCBzW10gPSBMIidcIj9cXFxhXGJcZlxuXDBcclx0XHZceEQzXHg1
NzZceDhEM1x4Qzc0RCBhIjsKKyAgY29uc3QgOjp3c3RyaW5nIHN0cihzLCBzaXplb2Yocykvc2l6
ZW9mKHdjaGFyX3QpKTsKKyAgRVhQRUNUX0VRKCJMXCInXFxcIj9cXFxcXFxhXFxiXFxmXFxuXFww
XFxyXFx0XFx2IgorICAgICAgICAgICAgIlxceEQzXFx4NTc2XFx4OEQzXFx4Qzc0RCBhXFwwXCIi
LAorICAgICAgICAgICAgUHJpbnQoc3RyKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9C
QUxfV1NUUklORworCisjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCisvLyA6OnN0ZDo6d3N0cmlu
Zy4KK1RFU1QoUHJpbnRXaWRlU3RyaW5nVGVzdCwgU3RyaW5nSW5TdGROYW1lc3BhY2UpIHsKKyAg
Y29uc3Qgd2NoYXJfdCBzW10gPSBMIidcIj9cXFxhXGJcZlxuXDBcclx0XHZceEQzXHg1NzZceDhE
M1x4Qzc0RCBhIjsKKyAgY29uc3QgOjpzdGQ6OndzdHJpbmcgc3RyKHMsIHNpemVvZihzKS9zaXpl
b2Yod2NoYXJfdCkpOworICBFWFBFQ1RfRVEoIkxcIidcXFwiP1xcXFxcXGFcXGJcXGZcXG5cXDBc
XHJcXHRcXHYiCisgICAgICAgICAgICAiXFx4RDNcXHg1NzZcXHg4RDNcXHhDNzREIGFcXDBcIiIs
CisgICAgICAgICAgICBQcmludChzdHIpKTsKK30KKworVEVTVChQcmludFdpZGVTdHJpbmdUZXN0
LCBTdHJpbmdBbWJpZ3VvdXNIZXgpIHsKKyAgLy8gc2FtZSBmb3Igd2lkZSBzdHJpbmdzLgorICBF
WFBFQ1RfRVEoIkxcIjBcXHgxMlwiIExcIjNcIiIsIFByaW50KDo6c3RkOjp3c3RyaW5nKEwiMFx4
MTIiIEwiMyIpKSk7CisgIEVYUEVDVF9FUSgiTFwibW1cXHg2XCIgTFwiYmFuYW5hc1wiIiwKKyAg
ICAgICAgICAgIFByaW50KDo6c3RkOjp3c3RyaW5nKEwibW1ceDYiIEwiYmFuYW5hcyIpKSk7Cisg
IEVYUEVDVF9FUSgiTFwiTk9NXFx4NlwiIExcIkJBTkFOQVwiIiwKKyAgICAgICAgICAgIFByaW50
KDo6c3RkOjp3c3RyaW5nKEwiTk9NXHg2IiBMIkJBTkFOQSIpKSk7CisgIEVYUEVDVF9FUSgiTFwi
IVxceDUtIVwiIiwgUHJpbnQoOjpzdGQ6OndzdHJpbmcoTCIhXHg1LSEiKSkpOworfQorI2VuZGlm
ICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKKworLy8gVGVzdHMgcHJpbnRpbmcgdHlwZXMgdGhh
dCBzdXBwb3J0IGdlbmVyaWMgc3RyZWFtaW5nIChpLmUuIHN0cmVhbWluZworLy8gdG8gc3RkOjpi
YXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+IGZvciBhbnkgdmFsaWQgQ2hhciBhbmQKKy8v
IENoYXJUcmFpdHMgdHlwZXMpLgorCisvLyBUZXN0cyBwcmludGluZyBhIG5vbi10ZW1wbGF0ZSB0
eXBlIHRoYXQgc3VwcG9ydHMgZ2VuZXJpYyBzdHJlYW1pbmcuCisKK2NsYXNzIEFsbG93c0dlbmVy
aWNTdHJlYW1pbmcge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyLCB0eXBlbmFtZSBDaGFy
VHJhaXRzPgorc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcGVyYXRvcjw8
KAorICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYgb3MsCisgICAgY29u
c3QgQWxsb3dzR2VuZXJpY1N0cmVhbWluZyYgLyogYSAqLykgeworICByZXR1cm4gb3MgPDwgIkFs
bG93c0dlbmVyaWNTdHJlYW1pbmciOworfQorCitURVNUKFByaW50VHlwZVdpdGhHZW5lcmljU3Ry
ZWFtaW5nVGVzdCwgTm9uVGVtcGxhdGVUeXBlKSB7CisgIEFsbG93c0dlbmVyaWNTdHJlYW1pbmcg
YTsKKyAgRVhQRUNUX0VRKCJBbGxvd3NHZW5lcmljU3RyZWFtaW5nIiwgUHJpbnQoYSkpOworfQor
CisvLyBUZXN0cyBwcmludGluZyBhIHRlbXBsYXRlIHR5cGUgdGhhdCBzdXBwb3J0cyBnZW5lcmlj
IHN0cmVhbWluZy4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBBbGxvd3NHZW5lcmlj
U3RyZWFtaW5nVGVtcGxhdGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyLCB0eXBlbmFt
ZSBDaGFyVHJhaXRzLCB0eXBlbmFtZSBUPgorc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJU
cmFpdHM+JiBvcGVyYXRvcjw8KAorICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJh
aXRzPiYgb3MsCisgICAgY29uc3QgQWxsb3dzR2VuZXJpY1N0cmVhbWluZ1RlbXBsYXRlPFQ+JiAv
KiBhICovKSB7CisgIHJldHVybiBvcyA8PCAiQWxsb3dzR2VuZXJpY1N0cmVhbWluZ1RlbXBsYXRl
IjsKK30KKworVEVTVChQcmludFR5cGVXaXRoR2VuZXJpY1N0cmVhbWluZ1Rlc3QsIFRlbXBsYXRl
VHlwZSkgeworICBBbGxvd3NHZW5lcmljU3RyZWFtaW5nVGVtcGxhdGU8aW50PiBhOworICBFWFBF
Q1RfRVEoIkFsbG93c0dlbmVyaWNTdHJlYW1pbmdUZW1wbGF0ZSIsIFByaW50KGEpKTsKK30KKwor
Ly8gVGVzdHMgcHJpbnRpbmcgYSB0eXBlIHRoYXQgc3VwcG9ydHMgZ2VuZXJpYyBzdHJlYW1pbmcg
YW5kIGNhbiBiZQorLy8gaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYW5vdGhlciBwcmludGFibGUg
dHlwZS4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBBbGxvd3NHZW5lcmljU3RyZWFt
aW5nQW5kSW1wbGljaXRDb252ZXJzaW9uVGVtcGxhdGUgeworIHB1YmxpYzoKKyAgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhciwgdHlwZW5hbWUgQ2hhclRyYWl0cywgdHlwZW5hbWUgVD4KK3N0ZDo6YmFzaWNfb3N0cmVh
bTxDaGFyLCBDaGFyVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICBzdGQ6OmJhc2ljX29zdHJlYW08
Q2hhciwgQ2hhclRyYWl0cz4mIG9zLAorICAgIGNvbnN0IEFsbG93c0dlbmVyaWNTdHJlYW1pbmdB
bmRJbXBsaWNpdENvbnZlcnNpb25UZW1wbGF0ZTxUPiYgLyogYSAqLykgeworICByZXR1cm4gb3Mg
PDwgIkFsbG93c0dlbmVyaWNTdHJlYW1pbmdBbmRJbXBsaWNpdENvbnZlcnNpb25UZW1wbGF0ZSI7
Cit9CisKK1RFU1QoUHJpbnRUeXBlV2l0aEdlbmVyaWNTdHJlYW1pbmdUZXN0LCBUeXBlSW1wbGlj
aXRseUNvbnZlcnRpYmxlKSB7CisgIEFsbG93c0dlbmVyaWNTdHJlYW1pbmdBbmRJbXBsaWNpdENv
bnZlcnNpb25UZW1wbGF0ZTxpbnQ+IGE7CisgIEVYUEVDVF9FUSgiQWxsb3dzR2VuZXJpY1N0cmVh
bWluZ0FuZEltcGxpY2l0Q29udmVyc2lvblRlbXBsYXRlIiwgUHJpbnQoYSkpOworfQorCisjaWYg
R1RFU1RfSEFTX0FCU0wKKworLy8gVGVzdHMgcHJpbnRpbmcgOjphYnNsOjpzdHJpbmdfdmlldy4K
KworVEVTVChQcmludFN0cmluZ1ZpZXdUZXN0LCBTaW1wbGVTdHJpbmdWaWV3KSB7CisgIGNvbnN0
IDo6YWJzbDo6c3RyaW5nX3ZpZXcgc3AgPSAiSGVsbG8iOworICBFWFBFQ1RfRVEoIlwiSGVsbG9c
IiIsIFByaW50KHNwKSk7Cit9CisKK1RFU1QoUHJpbnRTdHJpbmdWaWV3VGVzdCwgVW5wcmludGFi
bGVDaGFyYWN0ZXJzKSB7CisgIGNvbnN0IGNoYXIgc3RyW10gPSAiTlVMIChcMCkgYW5kIFxyXHQi
OworICBjb25zdCA6OmFic2w6OnN0cmluZ192aWV3IHNwKHN0ciwgc2l6ZW9mKHN0cikgLSAxKTsK
KyAgRVhQRUNUX0VRKCJcIk5VTCAoXFwwKSBhbmQgXFxyXFx0XCIiLCBQcmludChzcCkpOworfQor
CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCisKKy8vIFRlc3RzIHByaW50aW5nIFNUTCBjb250
YWluZXJzLgorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgRW1wdHlEZXF1ZSkgeworICBk
ZXF1ZTxjaGFyPiBlbXB0eTsKKyAgRVhQRUNUX0VRKCJ7fSIsIFByaW50KGVtcHR5KSk7Cit9CisK
K1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBOb25FbXB0eURlcXVlKSB7CisgIGRlcXVlPGlu
dD4gbm9uX2VtcHR5OworICBub25fZW1wdHkucHVzaF9iYWNrKDEpOworICBub25fZW1wdHkucHVz
aF9iYWNrKDMpOworICBFWFBFQ1RfRVEoInsgMSwgMyB9IiwgUHJpbnQobm9uX2VtcHR5KSk7Cit9
CisKKyNpZiBHVEVTVF9IQVNfVU5PUkRFUkVEX01BUF8KKworVEVTVChQcmludFN0bENvbnRhaW5l
clRlc3QsIE9uZUVsZW1lbnRIYXNoTWFwKSB7CisgIDo6c3RkOjp1bm9yZGVyZWRfbWFwPGludCwg
Y2hhcj4gbWFwMTsKKyAgbWFwMVsxXSA9ICdhJzsKKyAgRVhQRUNUX0VRKCJ7ICgxLCAnYScgKDk3
LCAweDYxKSkgfSIsIFByaW50KG1hcDEpKTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRl
c3QsIEhhc2hNdWx0aU1hcCkgeworICA6OnN0ZDo6dW5vcmRlcmVkX211bHRpbWFwPGludCwgYm9v
bD4gbWFwMTsKKyAgbWFwMS5pbnNlcnQobWFrZV9wYWlyKDUsIHRydWUpKTsKKyAgbWFwMS5pbnNl
cnQobWFrZV9wYWlyKDUsIGZhbHNlKSk7CisKKyAgLy8gRWxlbWVudHMgb2YgaGFzaF9tdWx0aW1h
cCBjYW4gYmUgcHJpbnRlZCBpbiBhbnkgb3JkZXIuCisgIGNvbnN0IHN0ZDo6c3RyaW5nIHJlc3Vs
dCA9IFByaW50KG1hcDEpOworICBFWFBFQ1RfVFJVRShyZXN1bHQgPT0gInsgKDUsIHRydWUpLCAo
NSwgZmFsc2UpIH0iIHx8CisgICAgICAgICAgICAgIHJlc3VsdCA9PSAieyAoNSwgZmFsc2UpLCAo
NSwgdHJ1ZSkgfSIpCisgICAgICAgICAgICAgICAgICA8PCAiIHdoZXJlIFByaW50KG1hcDEpIHJl
dHVybnMgXCIiIDw8IHJlc3VsdCA8PCAiXCIuIjsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNf
VU5PUkRFUkVEX01BUF8KKworI2lmIEdURVNUX0hBU19VTk9SREVSRURfU0VUXworCitURVNUKFBy
aW50U3RsQ29udGFpbmVyVGVzdCwgSGFzaFNldCkgeworICA6OnN0ZDo6dW5vcmRlcmVkX3NldDxp
bnQ+IHNldDE7CisgIHNldDEuaW5zZXJ0KDEpOworICBFWFBFQ1RfRVEoInsgMSB9IiwgUHJpbnQo
c2V0MSkpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgSGFzaE11bHRpU2V0KSB7
CisgIGNvbnN0IGludCBrU2l6ZSA9IDU7CisgIGludCBhW2tTaXplXSA9IHsgMSwgMSwgMiwgNSwg
MSB9OworICA6OnN0ZDo6dW5vcmRlcmVkX211bHRpc2V0PGludD4gc2V0MShhLCBhICsga1NpemUp
OworCisgIC8vIEVsZW1lbnRzIG9mIGhhc2hfbXVsdGlzZXQgY2FuIGJlIHByaW50ZWQgaW4gYW55
IG9yZGVyLgorICBjb25zdCBzdGQ6OnN0cmluZyByZXN1bHQgPSBQcmludChzZXQxKTsKKyAgY29u
c3Qgc3RkOjpzdHJpbmcgZXhwZWN0ZWRfcGF0dGVybiA9ICJ7IGQsIGQsIGQsIGQsIGQgfSI7ICAv
LyBkIG1lYW5zIGEgZGlnaXQuCisKKyAgLy8gVmVyaWZpZXMgdGhlIHJlc3VsdCBtYXRjaGVzIHRo
ZSBleHBlY3RlZCBwYXR0ZXJuOyBhbHNvIGV4dHJhY3RzCisgIC8vIHRoZSBudW1iZXJzIGluIHRo
ZSByZXN1bHQuCisgIEFTU0VSVF9FUShleHBlY3RlZF9wYXR0ZXJuLmxlbmd0aCgpLCByZXN1bHQu
bGVuZ3RoKCkpOworICBzdGQ6OnZlY3RvcjxpbnQ+IG51bWJlcnM7CisgIGZvciAoc2l6ZV90IGkg
PSAwOyBpICE9IHJlc3VsdC5sZW5ndGgoKTsgaSsrKSB7CisgICAgaWYgKGV4cGVjdGVkX3BhdHRl
cm5baV0gPT0gJ2QnKSB7CisgICAgICBBU1NFUlRfTkUoaXNkaWdpdChzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyPihyZXN1bHRbaV0pKSwgMCk7CisgICAgICBudW1iZXJzLnB1c2hfYmFjayhyZXN1
bHRbaV0gLSAnMCcpOworICAgIH0gZWxzZSB7CisgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfcGF0
dGVybltpXSwgcmVzdWx0W2ldKSA8PCAiIHdoZXJlIHJlc3VsdCBpcyAiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCByZXN1bHQ7CisgICAgfQorICB9
CisKKyAgLy8gTWFrZXMgc3VyZSB0aGUgcmVzdWx0IGNvbnRhaW5zIHRoZSByaWdodCBudW1iZXJz
LgorICBzdGQ6OnNvcnQobnVtYmVycy5iZWdpbigpLCBudW1iZXJzLmVuZCgpKTsKKyAgc3RkOjpz
b3J0KGEsIGEgKyBrU2l6ZSk7CisgIEVYUEVDVF9UUlVFKHN0ZDo6ZXF1YWwoYSwgYSArIGtTaXpl
LCBudW1iZXJzLmJlZ2luKCkpKTsKK30KKworI2VuZGlmICAvLyAgR1RFU1RfSEFTX1VOT1JERVJF
RF9TRVRfCisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBMaXN0KSB7CisgIGNvbnN0IHN0
ZDo6c3RyaW5nIGFbXSA9IHsiaGVsbG8iLCAid29ybGQifTsKKyAgY29uc3QgbGlzdDxzdGQ6OnN0
cmluZz4gc3RyaW5ncyhhLCBhICsgMik7CisgIEVYUEVDVF9FUSgieyBcImhlbGxvXCIsIFwid29y
bGRcIiB9IiwgUHJpbnQoc3RyaW5ncykpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVz
dCwgTWFwKSB7CisgIG1hcDxpbnQsIGJvb2w+IG1hcDE7CisgIG1hcDFbMV0gPSB0cnVlOworICBt
YXAxWzVdID0gZmFsc2U7CisgIG1hcDFbM10gPSB0cnVlOworICBFWFBFQ1RfRVEoInsgKDEsIHRy
dWUpLCAoMywgdHJ1ZSksICg1LCBmYWxzZSkgfSIsIFByaW50KG1hcDEpKTsKK30KKworVEVTVChQ
cmludFN0bENvbnRhaW5lclRlc3QsIE11bHRpTWFwKSB7CisgIG11bHRpbWFwPGJvb2wsIGludD4g
bWFwMTsKKyAgLy8gVGhlIG1ha2VfcGFpciB0ZW1wbGF0ZSBmdW5jdGlvbiB3b3VsZCBkZWR1Y2Ug
dGhlIHR5cGUgYXMKKyAgLy8gcGFpcjxib29sLCBpbnQ+IGhlcmUsIGFuZCBzaW5jZSB0aGUga2V5
IHBhcnQgaW4gYSBtdWx0aW1hcCBoYXMgdG8KKyAgLy8gYmUgY29uc3RhbnQsIHdpdGhvdXQgYSB0
ZW1wbGF0ZWQgY3RvciBpbiB0aGUgcGFpciBjbGFzcyAoYXMgaW4KKyAgLy8gbGliQ3N0ZCBvbiBT
b2xhcmlzKSwgbWFrZV9wYWlyIGNhbGwgd291bGQgZmFpbCB0byBjb21waWxlIGFzIG5vCisgIC8v
IGltcGxpY2l0IGNvbnZlcnNpb24gaXMgZm91bmQuICBUaHVzIGV4cGxpY2l0IHR5cGVuYW1lIGlz
IHVzZWQKKyAgLy8gaGVyZSBpbnN0ZWFkLgorICBtYXAxLmluc2VydChwYWlyPGNvbnN0IGJvb2ws
IGludD4odHJ1ZSwgMCkpOworICBtYXAxLmluc2VydChwYWlyPGNvbnN0IGJvb2wsIGludD4odHJ1
ZSwgMSkpOworICBtYXAxLmluc2VydChwYWlyPGNvbnN0IGJvb2wsIGludD4oZmFsc2UsIDIpKTsK
KyAgRVhQRUNUX0VRKCJ7IChmYWxzZSwgMiksICh0cnVlLCAwKSwgKHRydWUsIDEpIH0iLCBQcmlu
dChtYXAxKSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBTZXQpIHsKKyAgY29u
c3QgdW5zaWduZWQgaW50IGFbXSA9IHsgMywgMCwgNSB9OworICBzZXQ8dW5zaWduZWQgaW50PiBz
ZXQxKGEsIGEgKyAzKTsKKyAgRVhQRUNUX0VRKCJ7IDAsIDMsIDUgfSIsIFByaW50KHNldDEpKTsK
K30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIE11bHRpU2V0KSB7CisgIGNvbnN0IGlu
dCBhW10gPSB7IDEsIDEsIDIsIDUsIDEgfTsKKyAgbXVsdGlzZXQ8aW50PiBzZXQxKGEsIGEgKyA1
KTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDEsIDEsIDIsIDUgfSIsIFByaW50KHNldDEpKTsKK30KKwor
I2lmIEdURVNUX0hBU19TVERfRk9SV0FSRF9MSVNUXworCitURVNUKFByaW50U3RsQ29udGFpbmVy
VGVzdCwgU2luZ2x5TGlua2VkTGlzdCkgeworICBpbnQgYVtdID0geyA5LCAyLCA4IH07CisgIGNv
bnN0IHN0ZDo6Zm9yd2FyZF9saXN0PGludD4gaW50cyhhLCBhICsgMyk7CisgIEVYUEVDVF9FUSgi
eyA5LCAyLCA4IH0iLCBQcmludChpbnRzKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERf
Rk9SV0FSRF9MSVNUXworCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgUGFpcikgeworICBw
YWlyPGNvbnN0IGJvb2wsIGludD4gcCh0cnVlLCA1KTsKKyAgRVhQRUNUX0VRKCIodHJ1ZSwgNSki
LCBQcmludChwKSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBWZWN0b3IpIHsK
KyAgdmVjdG9yPGludD4gdjsKKyAgdi5wdXNoX2JhY2soMSk7CisgIHYucHVzaF9iYWNrKDIpOwor
ICBFWFBFQ1RfRVEoInsgMSwgMiB9IiwgUHJpbnQodikpOworfQorCitURVNUKFByaW50U3RsQ29u
dGFpbmVyVGVzdCwgTG9uZ1NlcXVlbmNlKSB7CisgIGNvbnN0IGludCBhWzEwMF0gPSB7IDEsIDIs
IDMgfTsKKyAgY29uc3QgdmVjdG9yPGludD4gdihhLCBhICsgMTAwKTsKKyAgRVhQRUNUX0VRKCJ7
IDEsIDIsIDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsICIKKyAg
ICAgICAgICAgICIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAu
Li4gfSIsIFByaW50KHYpKTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIE5lc3Rl
ZENvbnRhaW5lcikgeworICBjb25zdCBpbnQgYTFbXSA9IHsgMSwgMiB9OworICBjb25zdCBpbnQg
YTJbXSA9IHsgMywgNCwgNSB9OworICBjb25zdCBsaXN0PGludD4gbDEoYTEsIGExICsgMik7Cisg
IGNvbnN0IGxpc3Q8aW50PiBsMihhMiwgYTIgKyAzKTsKKworICB2ZWN0b3I8bGlzdDxpbnQ+ID4g
djsKKyAgdi5wdXNoX2JhY2sobDEpOworICB2LnB1c2hfYmFjayhsMik7CisgIEVYUEVDVF9FUSgi
eyB7IDEsIDIgfSwgeyAzLCA0LCA1IH0gfSIsIFByaW50KHYpKTsKK30KKworVEVTVChQcmludFN0
bENvbnRhaW5lclRlc3QsIE9uZURpbWVuc2lvbmFsTmF0aXZlQXJyYXkpIHsKKyAgY29uc3QgaW50
IGFbM10gPSB7IDEsIDIsIDMgfTsKKyAgTmF0aXZlQXJyYXk8aW50PiBiKGEsIDMsIFJlbGF0aW9u
VG9Tb3VyY2VSZWZlcmVuY2UoKSk7CisgIEVYUEVDVF9FUSgieyAxLCAyLCAzIH0iLCBQcmludChi
KSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBUd29EaW1lbnNpb25hbE5hdGl2
ZUFycmF5KSB7CisgIGNvbnN0IGludCBhWzJdWzNdID0geyB7IDEsIDIsIDMgfSwgeyA0LCA1LCA2
IH0gfTsKKyAgTmF0aXZlQXJyYXk8aW50WzNdPiBiKGEsIDIsIFJlbGF0aW9uVG9Tb3VyY2VSZWZl
cmVuY2UoKSk7CisgIEVYUEVDVF9FUSgieyB7IDEsIDIsIDMgfSwgeyA0LCA1LCA2IH0gfSIsIFBy
aW50KGIpKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIGNsYXNzIG5hbWVkIGl0ZXJhdG9yIGlzbid0
IHRyZWF0ZWQgYXMgYSBjb250YWluZXIuCisKK3N0cnVjdCBpdGVyYXRvciB7CisgIGNoYXIgeDsK
K307CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBJdGVyYXRvcikgeworICBpdGVyYXRv
ciBpdCA9IHt9OworICBFWFBFQ1RfRVEoIjEtYnl0ZSBvYmplY3QgPDAwPiIsIFByaW50KGl0KSk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBjbGFzcyBuYW1lZCBjb25zdF9pdGVyYXRvciBpc24ndCB0
cmVhdGVkIGFzIGEgY29udGFpbmVyLgorCitzdHJ1Y3QgY29uc3RfaXRlcmF0b3IgeworICBjaGFy
IHg7Cit9OworCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgQ29uc3RJdGVyYXRvcikgewor
ICBjb25zdF9pdGVyYXRvciBpdCA9IHt9OworICBFWFBFQ1RfRVEoIjEtYnl0ZSBvYmplY3QgPDAw
PiIsIFByaW50KGl0KSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCisvLyBUZXN0cyBw
cmludGluZyA6OnN0ZDo6dHIxOjp0dXBsZXMuCisKKy8vIFR1cGxlcyBvZiB2YXJpb3VzIGFyaXRp
ZXMuCitURVNUKFByaW50VHIxVHVwbGVUZXN0LCBWYXJpb3VzU2l6ZXMpIHsKKyAgOjpzdGQ6OnRy
MTo6dHVwbGU8PiB0MDsKKyAgRVhQRUNUX0VRKCIoKSIsIFByaW50KHQwKSk7CisKKyAgOjpzdGQ6
OnRyMTo6dHVwbGU8aW50PiB0MSg1KTsKKyAgRVhQRUNUX0VRKCIoNSkiLCBQcmludCh0MSkpOwor
CisgIDo6c3RkOjp0cjE6OnR1cGxlPGNoYXIsIGJvb2w+IHQyKCdhJywgdHJ1ZSk7CisgIEVYUEVD
VF9FUSgiKCdhJyAoOTcsIDB4NjEpLCB0cnVlKSIsIFByaW50KHQyKSk7CisKKyAgOjpzdGQ6OnRy
MTo6dHVwbGU8Ym9vbCwgaW50LCBpbnQ+IHQzKGZhbHNlLCAyLCAzKTsKKyAgRVhQRUNUX0VRKCIo
ZmFsc2UsIDIsIDMpIiwgUHJpbnQodDMpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBp
bnQsIGludCwgaW50PiB0NChmYWxzZSwgMiwgMywgNCk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAy
LCAzLCA0KSIsIFByaW50KHQ0KSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBp
bnQsIGludCwgYm9vbD4gdDUoZmFsc2UsIDIsIDMsIDQsIHRydWUpOworICBFWFBFQ1RfRVEoIihm
YWxzZSwgMiwgMywgNCwgdHJ1ZSkiLCBQcmludCh0NSkpOworCisgIDo6c3RkOjp0cjE6OnR1cGxl
PGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludD4gdDYoZmFsc2UsIDIsIDMsIDQsIHRydWUs
IDYpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNikiLCBQcmludCh0Nikp
OworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludCwg
aW50PiB0NygKKyAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3KTsKKyAgRVhQRUNUX0VR
KCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcpIiwgUHJpbnQodDcpKTsKKworICA6OnN0ZDo6
dHIxOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgYm9vbD4gdDgo
CisgICAgICBmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSk7CisgIEVYUEVDVF9FUSgi
KGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlKSIsIFByaW50KHQ4KSk7CisKKyAgOjpz
dGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGJvb2ws
IGludD4gdDkoCisgICAgICBmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSwgOSk7Cisg
IEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlLCA5KSIsIFByaW50
KHQ5KSk7CisKKyAgY29uc3QgY2hhciogY29uc3Qgc3RyID0gIjgiOworICAvLyBWQysrIDIwMTAn
cyBpbXBsZW1lbnRhdGlvbiBvZiB0dXBsZSBvZiBDKysweCBpcyBkZWZpY2llbnQsIHJlcXVpcmlu
ZworICAvLyBhbiBleHBsaWNpdCB0eXBlIGNhc3Qgb2YgTlVMTCB0byBiZSB1c2VkLgorICA6OnN0
ZDo6dHIxOjp0dXBsZTxib29sLCBjaGFyLCBzaG9ydCwgdGVzdGluZzo6aW50ZXJuYWw6OkludDMy
LCAgLy8gTk9MSU5UCisgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OmludGVybmFsOjpJbnQ2
NCwgZmxvYXQsIGRvdWJsZSwgY29uc3QgY2hhciosIHZvaWQqLAorICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnN0cmluZz4KKyAgICAgIHQxMChmYWxzZSwgJ2EnLCBzdGF0aWNfY2FzdDxzaG9ydD4o
MyksIDQsIDUsIDEuNUYsIC0yLjUsIHN0ciwgIC8vIE5PTElOVAorICAgICAgICAgIEltcGxpY2l0
Q2FzdF88dm9pZCo+KE5VTEwpLCAiMTAiKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsICdhJyAoOTcs
IDB4NjEpLCAzLCA0LCA1LCAxLjUsIC0yLjUsICIgKyBQcmludFBvaW50ZXIoc3RyKSArCisgICAg
ICAgICAgICAiIHBvaW50aW5nIHRvIFwiOFwiLCBOVUxMLCBcIjEwXCIpIiwKKyAgICAgICAgICAg
IFByaW50KHQxMCkpOworfQorCisvLyBOZXN0ZWQgdHVwbGVzLgorVEVTVChQcmludFRyMVR1cGxl
VGVzdCwgTmVzdGVkVHVwbGUpIHsKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8IDo6c3RkOjp0cjE6OnR1
cGxlPGludCwgYm9vbD4sIGNoYXI+IG5lc3RlZCgKKyAgICAgIDo6c3RkOjp0cjE6Om1ha2VfdHVw
bGUoNSwgdHJ1ZSksICdhJyk7CisgIEVYUEVDVF9FUSgiKCg1LCB0cnVlKSwgJ2EnICg5NywgMHg2
MSkpIiwgUHJpbnQobmVzdGVkKSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBM
RQorCisjaWYgR1RFU1RfSEFTX1NURF9UVVBMRV8KKy8vIFRlc3RzIHByaW50aW5nIDo6c3RkOjp0
dXBsZXMuCisKKy8vIFR1cGxlcyBvZiB2YXJpb3VzIGFyaXRpZXMuCitURVNUKFByaW50U3RkVHVw
bGVUZXN0LCBWYXJpb3VzU2l6ZXMpIHsKKyAgOjpzdGQ6OnR1cGxlPD4gdDA7CisgIEVYUEVDVF9F
USgiKCkiLCBQcmludCh0MCkpOworCisgIDo6c3RkOjp0dXBsZTxpbnQ+IHQxKDUpOworICBFWFBF
Q1RfRVEoIig1KSIsIFByaW50KHQxKSk7CisKKyAgOjpzdGQ6OnR1cGxlPGNoYXIsIGJvb2w+IHQy
KCdhJywgdHJ1ZSk7CisgIEVYUEVDVF9FUSgiKCdhJyAoOTcsIDB4NjEpLCB0cnVlKSIsIFByaW50
KHQyKSk7CisKKyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwgaW50PiB0MyhmYWxzZSwgMiwgMyk7
CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzKSIsIFByaW50KHQzKSk7CisKKyAgOjpzdGQ6OnR1
cGxlPGJvb2wsIGludCwgaW50LCBpbnQ+IHQ0KGZhbHNlLCAyLCAzLCA0KTsKKyAgRVhQRUNUX0VR
KCIoZmFsc2UsIDIsIDMsIDQpIiwgUHJpbnQodDQpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwg
aW50LCBpbnQsIGludCwgYm9vbD4gdDUoZmFsc2UsIDIsIDMsIDQsIHRydWUpOworICBFWFBFQ1Rf
RVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSkiLCBQcmludCh0NSkpOworCisgIDo6c3RkOjp0dXBs
ZTxib29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQ+IHQ2KGZhbHNlLCAyLCAzLCA0LCB0cnVl
LCA2KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYpIiwgUHJpbnQodDYp
KTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQ+
IHQ3KAorICAgICAgZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcpOworICBFWFBFQ1RfRVEoIihm
YWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNykiLCBQcmludCh0NykpOworCisgIDo6c3RkOjp0dXBs
ZTxib29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgYm9vbD4gdDgoCisgICAgICBm
YWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAy
LCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlKSIsIFByaW50KHQ4KSk7CisKKyAgOjpzdGQ6OnR1cGxl
PGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBib29sLCBpbnQ+IHQ5KAorICAg
ICAgZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUsIDkpOworICBFWFBFQ1RfRVEoIihm
YWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSwgOSkiLCBQcmludCh0OSkpOworCisgIGNv
bnN0IGNoYXIqIGNvbnN0IHN0ciA9ICI4IjsKKyAgLy8gVkMrKyAyMDEwJ3MgaW1wbGVtZW50YXRp
b24gb2YgdHVwbGUgb2YgQysrMHggaXMgZGVmaWNpZW50LCByZXF1aXJpbmcKKyAgLy8gYW4gZXhw
bGljaXQgdHlwZSBjYXN0IG9mIE5VTEwgdG8gYmUgdXNlZC4KKyAgOjpzdGQ6OnR1cGxlPGJvb2ws
IGNoYXIsIHNob3J0LCB0ZXN0aW5nOjppbnRlcm5hbDo6SW50MzIsICAvLyBOT0xJTlQKKyAgICAg
ICAgICAgICAgIHRlc3Rpbmc6OmludGVybmFsOjpJbnQ2NCwgZmxvYXQsIGRvdWJsZSwgY29uc3Qg
Y2hhciosIHZvaWQqLAorICAgICAgICAgICAgICAgc3RkOjpzdHJpbmc+CisgICAgICB0MTAoZmFs
c2UsICdhJywgc3RhdGljX2Nhc3Q8c2hvcnQ+KDMpLCA0LCA1LCAxLjVGLCAtMi41LCBzdHIsICAv
LyBOT0xJTlQKKyAgICAgICAgICBJbXBsaWNpdENhc3RfPHZvaWQqPihOVUxMKSwgIjEwIik7Cisg
IEVYUEVDVF9FUSgiKGZhbHNlLCAnYScgKDk3LCAweDYxKSwgMywgNCwgNSwgMS41LCAtMi41LCAi
ICsgUHJpbnRQb2ludGVyKHN0cikgKworICAgICAgICAgICAgIiBwb2ludGluZyB0byBcIjhcIiwg
TlVMTCwgXCIxMFwiKSIsCisgICAgICAgICAgICBQcmludCh0MTApKTsKK30KKworLy8gTmVzdGVk
IHR1cGxlcy4KK1RFU1QoUHJpbnRTdGRUdXBsZVRlc3QsIE5lc3RlZFR1cGxlKSB7CisgIDo6c3Rk
Ojp0dXBsZTwgOjpzdGQ6OnR1cGxlPGludCwgYm9vbD4sIGNoYXI+IG5lc3RlZCgKKyAgICAgIDo6
c3RkOjptYWtlX3R1cGxlKDUsIHRydWUpLCAnYScpOworICBFWFBFQ1RfRVEoIigoNSwgdHJ1ZSks
ICdhJyAoOTcsIDB4NjEpKSIsIFByaW50KG5lc3RlZCkpOworfQorCisjZW5kaWYgIC8vIEdURVNU
X0xBTkdfQ1hYMTEKKworI2lmIEdURVNUX0xBTkdfQ1hYMTEKK1RFU1QoUHJpbnROdWxscHRyVCwg
QmFzaWMpIHsKKyAgRVhQRUNUX0VRKCIobnVsbHB0cikiLCBQcmludChudWxscHRyKSk7Cit9Cisj
ZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKworLy8gVGVzdHMgcHJpbnRpbmcgdXNlci1kZWZp
bmVkIHVucHJpbnRhYmxlIHR5cGVzLgorCisvLyBVbnByaW50YWJsZSB0eXBlcyBpbiB0aGUgZ2xv
YmFsIG5hbWVzcGFjZS4KK1RFU1QoUHJpbnRVbnByaW50YWJsZVR5cGVUZXN0LCBJbkdsb2JhbE5h
bWVzcGFjZSkgeworICBFWFBFQ1RfRVEoIjEtYnl0ZSBvYmplY3QgPDAwPiIsCisgICAgICAgICAg
ICBQcmludChVbnByaW50YWJsZVRlbXBsYXRlSW5HbG9iYWw8Y2hhcj4oKSkpOworfQorCisvLyBV
bnByaW50YWJsZSB0eXBlcyBpbiBhIHVzZXIgbmFtZXNwYWNlLgorVEVTVChQcmludFVucHJpbnRh
YmxlVHlwZVRlc3QsIEluVXNlck5hbWVzcGFjZSkgeworICBFWFBFQ1RfRVEoIjE2LWJ5dGUgb2Jq
ZWN0IDxFRi0xMiAwMC0wMCAzNC1BQiAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMD4iLAor
ICAgICAgICAgICAgUHJpbnQoOjpmb286OlVucHJpbnRhYmxlSW5Gb28oKSkpOworfQorCisvLyBV
bnByaW50YWJsZSB0eXBlcyBhcmUgdGhhdCB0b28gYmlnIHRvIGJlIHByaW50ZWQgY29tcGxldGVs
eS4KKworc3RydWN0IEJpZyB7CisgIEJpZygpIHsgbWVtc2V0KGFycmF5LCAwLCBzaXplb2YoYXJy
YXkpKTsgfQorICBjaGFyIGFycmF5WzI1N107Cit9OworCitURVNUKFByaW50VW5wcml0YWJsZVR5
cGVUZXN0LCBCaWdPYmplY3QpIHsKKyAgRVhQRUNUX0VRKCIyNTctYnl0ZSBvYmplY3QgPDAwLTAw
IDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwICIKKyAgICAgICAgICAgICIwMC0wMCAwMC0w
MCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAiCisgICAg
ICAgICAgICAiMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAg
MDAtMDAgMDAtMDAgIgorICAgICAgICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAw
IDAwLTAwIC4uLiAwMC0wMCAwMC0wMCAwMC0wMCAiCisgICAgICAgICAgICAiMDAtMDAgMDAtMDAg
MDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgIgorICAgICAg
ICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAw
LTAwIDAwLTAwICIKKyAgICAgICAgICAgICIwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAw
MC0wMCAwMC0wMCAwMC0wMCAwMD4iLAorICAgICAgICAgICAgUHJpbnQoQmlnKCkpKTsKK30KKwor
Ly8gVGVzdHMgcHJpbnRpbmcgdXNlci1kZWZpbmVkIHN0cmVhbWFibGUgdHlwZXMuCisKKy8vIFN0
cmVhbWFibGUgdHlwZXMgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCitURVNUKFByaW50U3RyZWFt
YWJsZVR5cGVUZXN0LCBJbkdsb2JhbE5hbWVzcGFjZSkgeworICBTdHJlYW1hYmxlSW5HbG9iYWwg
eDsKKyAgRVhQRUNUX0VRKCJTdHJlYW1hYmxlSW5HbG9iYWwiLCBQcmludCh4KSk7CisgIEVYUEVD
VF9FUSgiU3RyZWFtYWJsZUluR2xvYmFsKiIsIFByaW50KCZ4KSk7Cit9CisKKy8vIFByaW50YWJs
ZSB0ZW1wbGF0ZSB0eXBlcyBpbiBhIHVzZXIgbmFtZXNwYWNlLgorVEVTVChQcmludFN0cmVhbWFi
bGVUeXBlVGVzdCwgVGVtcGxhdGVUeXBlSW5Vc2VyTmFtZXNwYWNlKSB7CisgIEVYUEVDVF9FUSgi
U3RyZWFtYWJsZVRlbXBsYXRlSW5Gb286IDAiLAorICAgICAgICAgICAgUHJpbnQoOjpmb286OlN0
cmVhbWFibGVUZW1wbGF0ZUluRm9vPGludD4oKSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyBh
IHVzZXItZGVmaW5lZCByZWN1cnNpdmUgY29udGFpbmVyIHR5cGUgdGhhdCBoYXMgYSA8PAorLy8g
b3BlcmF0b3IuCitURVNUKFByaW50U3RyZWFtYWJsZVR5cGVUZXN0LCBQYXRoTGlrZUluVXNlck5h
bWVzcGFjZSkgeworICA6OmZvbzo6UGF0aExpa2UgeDsKKyAgRVhQRUNUX0VRKCJTdHJlYW1hYmxl
LVBhdGhMaWtlIiwgUHJpbnQoeCkpOworICBjb25zdCA6OmZvbzo6UGF0aExpa2UgY3g7CisgIEVY
UEVDVF9FUSgiU3RyZWFtYWJsZS1QYXRoTGlrZSIsIFByaW50KGN4KSk7Cit9CisKKy8vIFRlc3Rz
IHByaW50aW5nIHVzZXItZGVmaW5lZCB0eXBlcyB0aGF0IGhhdmUgYSBQcmludFRvKCkgZnVuY3Rp
b24uCitURVNUKFByaW50UHJpbnRhYmxlVHlwZVRlc3QsIEluVXNlck5hbWVzcGFjZSkgeworICBF
WFBFQ1RfRVEoIlByaW50YWJsZVZpYVByaW50VG86IDAiLAorICAgICAgICAgICAgUHJpbnQoOjpm
b286OlByaW50YWJsZVZpYVByaW50VG8oKSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyBhIHBv
aW50ZXIgdG8gYSB1c2VyLWRlZmluZWQgdHlwZSB0aGF0IGhhcyBhIDw8CisvLyBvcGVyYXRvciBm
b3IgaXRzIHBvaW50ZXIuCitURVNUKFByaW50UHJpbnRhYmxlVHlwZVRlc3QsIFBvaW50ZXJJblVz
ZXJOYW1lc3BhY2UpIHsKKyAgOjpmb286OlBvaW50ZXJQcmludGFibGUgeDsKKyAgRVhQRUNUX0VR
KCJQb2ludGVyUHJpbnRhYmxlKiIsIFByaW50KCZ4KSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5n
IHVzZXItZGVmaW5lZCBjbGFzcyB0ZW1wbGF0ZSB0aGF0IGhhdmUgYSBQcmludFRvKCkgZnVuY3Rp
b24uCitURVNUKFByaW50UHJpbnRhYmxlVHlwZVRlc3QsIFRlbXBsYXRlSW5Vc2VyTmFtZXNwYWNl
KSB7CisgIEVYUEVDVF9FUSgiUHJpbnRhYmxlVmlhUHJpbnRUb1RlbXBsYXRlOiA1IiwKKyAgICAg
ICAgICAgIFByaW50KDo6Zm9vOjpQcmludGFibGVWaWFQcmludFRvVGVtcGxhdGU8aW50Pig1KSkp
OworfQorCisvLyBUZXN0cyB0aGF0IHRoZSB1bml2ZXJzYWwgcHJpbnRlciBwcmludHMgYm90aCB0
aGUgYWRkcmVzcyBhbmQgdGhlCisvLyB2YWx1ZSBvZiBhIHJlZmVyZW5jZS4KK1RFU1QoUHJpbnRS
ZWZlcmVuY2VUZXN0LCBQcmludHNBZGRyZXNzQW5kVmFsdWUpIHsKKyAgaW50IG4gPSA1OworICBF
WFBFQ1RfRVEoIkAiICsgUHJpbnRQb2ludGVyKCZuKSArICIgNSIsIFByaW50QnlSZWYobikpOwor
CisgIGludCBhWzJdWzNdID0geworICAgIHsgMCwgMSwgMiB9LAorICAgIHsgMywgNCwgNSB9Cisg
IH07CisgIEVYUEVDVF9FUSgiQCIgKyBQcmludFBvaW50ZXIoYSkgKyAiIHsgeyAwLCAxLCAyIH0s
IHsgMywgNCwgNSB9IH0iLAorICAgICAgICAgICAgUHJpbnRCeVJlZihhKSk7CisKKyAgY29uc3Qg
Ojpmb286OlVucHJpbnRhYmxlSW5Gb28geDsKKyAgRVhQRUNUX0VRKCJAIiArIFByaW50UG9pbnRl
cigmeCkgKyAiIDE2LWJ5dGUgb2JqZWN0ICIKKyAgICAgICAgICAgICI8RUYtMTIgMDAtMDAgMzQt
QUIgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDA+IiwKKyAgICAgICAgICAgIFByaW50QnlS
ZWYoeCkpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSB1bml2ZXJzYWwgcHJpbnRlciBwcmludHMg
YSBmdW5jdGlvbiBwb2ludGVyIHBhc3NlZCBieQorLy8gcmVmZXJlbmNlLgorVEVTVChQcmludFJl
ZmVyZW5jZVRlc3QsIEhhbmRsZXNGdW5jdGlvblBvaW50ZXIpIHsKKyAgdm9pZCAoKmZwKShpbnQg
bikgPSAmTXlGdW5jdGlvbjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZnBfcG9pbnRlcl9zdHJpbmcg
PQorICAgICAgUHJpbnRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KCZmcCkp
OworICAvLyBXZSBjYW5ub3QgZGlyZWN0bHkgY2FzdCAmTXlGdW5jdGlvbiB0byBjb25zdCB2b2lk
KiBiZWNhdXNlIHRoZQorICAvLyBzdGFuZGFyZCBkaXNhbGxvd3MgY2FzdGluZyBiZXR3ZWVuIHBv
aW50ZXJzIHRvIGZ1bmN0aW9ucyBhbmQKKyAgLy8gcG9pbnRlcnMgdG8gb2JqZWN0cywgYW5kIHNv
bWUgY29tcGlsZXJzIChlLmcuIEdDQyAzLjQpIGVuZm9yY2UKKyAgLy8gdGhpcyBsaW1pdGF0aW9u
LgorICBjb25zdCBzdGQ6OnN0cmluZyBmcF9zdHJpbmcgPSBQcmludFBvaW50ZXIocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB2b2lkKj4oCisgICAgICByZWludGVycHJldF9jYXN0PGludGVybmFsOjpC
aWdnZXN0SW50PihmcCkpKTsKKyAgRVhQRUNUX0VRKCJAIiArIGZwX3BvaW50ZXJfc3RyaW5nICsg
IiAiICsgZnBfc3RyaW5nLAorICAgICAgICAgICAgUHJpbnRCeVJlZihmcCkpOworfQorCisvLyBU
ZXN0cyB0aGF0IHRoZSB1bml2ZXJzYWwgcHJpbnRlciBwcmludHMgYSBtZW1iZXIgZnVuY3Rpb24g
cG9pbnRlcgorLy8gcGFzc2VkIGJ5IHJlZmVyZW5jZS4KK1RFU1QoUHJpbnRSZWZlcmVuY2VUZXN0
LCBIYW5kbGVzTWVtYmVyRnVuY3Rpb25Qb2ludGVyKSB7CisgIGludCAoRm9vOjoqcCkoY2hhciBj
aCkgPSAmRm9vOjpNeU1ldGhvZDsKKyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KAorICAgICAgUHJp
bnRCeVJlZihwKSwKKyAgICAgICJAIiArIFByaW50UG9pbnRlcihyZWludGVycHJldF9jYXN0PGNv
bnN0IHZvaWQqPigmcCkpICsgIiAiICsKKyAgICAgICAgICBQcmludChzaXplb2YocCkpICsgIi1i
eXRlIG9iamVjdCAiKSk7CisKKyAgY2hhciAoRm9vOjoqcDIpKGludCBuKSA9ICZGb286Ok15Vmly
dHVhbE1ldGhvZDsKKyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KAorICAgICAgUHJpbnRCeVJlZihw
MiksCisgICAgICAiQCIgKyBQcmludFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4oJnAyKSkgKyAiICIgKworICAgICAgICAgIFByaW50KHNpemVvZihwMikpICsgIi1ieXRlIG9i
amVjdCAiKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIHVuaXZlcnNhbCBwcmludGVyIHByaW50
cyBhIG1lbWJlciB2YXJpYWJsZSBwb2ludGVyCisvLyBwYXNzZWQgYnkgcmVmZXJlbmNlLgorVEVT
VChQcmludFJlZmVyZW5jZVRlc3QsIEhhbmRsZXNNZW1iZXJWYXJpYWJsZVBvaW50ZXIpIHsKKyAg
aW50IEZvbzo6KnAgPSAmRm9vOjp2YWx1ZTsgIC8vIE5PTElOVAorICBFWFBFQ1RfVFJVRShIYXNQ
cmVmaXgoCisgICAgICBQcmludEJ5UmVmKHApLAorICAgICAgIkAiICsgUHJpbnRQb2ludGVyKCZw
KSArICIgIiArIFByaW50KHNpemVvZihwKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKK30KKworLy8g
VGVzdHMgdGhhdCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoKSwgd2hpY2ggaXMg
dXNlZCB0byBwcmludAorLy8gYW4gb3BlcmFuZCBpbiBhIGNvbXBhcmlzb24gYXNzZXJ0aW9uIChl
LmcuIEFTU0VSVF9FUSkgd2hlbiB0aGUgYXNzZXJ0aW9uCisvLyBmYWlscywgZm9ybWF0cyB0aGUg
b3BlcmFuZCBpbiB0aGUgZGVzaXJlZCB3YXkuCisKKy8vIHNjYWxhcgorVEVTVChGb3JtYXRGb3JD
b21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvclNjYWxhcikgeworICBFWFBFQ1Rf
U1RSRVEoIjEyMyIsCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2UoMTIzLCAxMjQpLmNfc3RyKCkpOworfQorCisvLyBub24tY2hhciBwb2ludGVyCitURVNU
KEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yTm9uQ2hhclBv
aW50ZXIpIHsKKyAgaW50IG4gPSAwOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKCZuKSwKKyAg
ICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSgmbiwgJm4pLmNfc3Ry
KCkpOworfQorCisvLyBub24tY2hhciBhcnJheQorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFp
bHVyZU1lc3NhZ2VUZXN0LCBGb3JtYXRzTm9uQ2hhckFycmF5QXNQb2ludGVyKSB7CisgIC8vIElu
IGV4cHJlc3Npb24gJ2FycmF5ID09IHgnLCAnYXJyYXknIGlzIGNvbXBhcmVkIGJ5IHBvaW50ZXIu
CisgIC8vIFRoZXJlZm9yZSB3ZSB3YW50IHRvIHByaW50IGFuIGFycmF5IG9wZXJhbmQgYXMgYSBw
b2ludGVyLgorICBpbnQgbltdID0geyAxLCAyLCAzIH07CisgIEVYUEVDVF9FUShQcmludFBvaW50
ZXIobiksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uobiwg
bikuY19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIGZvcm1hdHRpbmcgYSBjaGFyIHBvaW50ZXIgd2hl
biBpdCdzIGNvbXBhcmVkIHdpdGggYW5vdGhlciBwb2ludGVyLgorLy8gSW4gdGhpcyBjYXNlIHdl
IHdhbnQgdG8gcHJpbnQgaXQgYXMgYSByYXcgcG9pbnRlciwgYXMgdGhlIGNvbXBhcmlzb24gaXMg
YnkKKy8vIHBvaW50ZXIuCisKKy8vIGNoYXIgcG9pbnRlciB2cyBwb2ludGVyCitURVNUKEZvcm1h
dEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhclBvaW50ZXJWc1Bv
aW50ZXIpIHsKKyAgLy8gSW4gZXhwcmVzc2lvbiAncCA9PSB4Jywgd2hlcmUgJ3AnIGFuZCAneCcg
YXJlIChjb25zdCBvciBub3QpIGNoYXIKKyAgLy8gcG9pbnRlcnMsIHRoZSBvcGVyYW5kcyBhcmUg
Y29tcGFyZWQgYnkgcG9pbnRlci4gIFRoZXJlZm9yZSB3ZQorICAvLyB3YW50IHRvIHByaW50ICdw
JyBhcyBhIHBvaW50ZXIgaW5zdGVhZCBvZiBhIEMgc3RyaW5nICh3ZSBkb24ndAorICAvLyBldmVu
IGtub3cgaWYgaXQncyBzdXBwb3NlZCB0byBwb2ludCB0byBhIHZhbGlkIEMgc3RyaW5nKS4KKwor
ICAvLyBjb25zdCBjaGFyKgorICBjb25zdCBjaGFyKiBzID0gImhlbGxvIjsKKyAgRVhQRUNUX0VR
KFByaW50UG9pbnRlcihzKSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJl
TWVzc2FnZShzLCBzKS5jX3N0cigpKTsKKworICAvLyBjaGFyKgorICBjaGFyIGNoID0gJ2EnOwor
ICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKCZjaCksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21w
YXJpc29uRmFpbHVyZU1lc3NhZ2UoJmNoLCAmY2gpLmNfc3RyKCkpOworfQorCisvLyB3Y2hhcl90
IHBvaW50ZXIgdnMgcG9pbnRlcgorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2VUZXN0LCBXb3Jrc0ZvcldDaGFyUG9pbnRlclZzUG9pbnRlcikgeworICAvLyBJbiBleHByZXNz
aW9uICdwID09IHgnLCB3aGVyZSAncCcgYW5kICd4JyBhcmUgKGNvbnN0IG9yIG5vdCkgY2hhcgor
ICAvLyBwb2ludGVycywgdGhlIG9wZXJhbmRzIGFyZSBjb21wYXJlZCBieSBwb2ludGVyLiAgVGhl
cmVmb3JlIHdlCisgIC8vIHdhbnQgdG8gcHJpbnQgJ3AnIGFzIGEgcG9pbnRlciBpbnN0ZWFkIG9m
IGEgd2lkZSBDIHN0cmluZyAod2UgZG9uJ3QKKyAgLy8gZXZlbiBrbm93IGlmIGl0J3Mgc3VwcG9z
ZWQgdG8gcG9pbnQgdG8gYSB2YWxpZCB3aWRlIEMgc3RyaW5nKS4KKworICAvLyBjb25zdCB3Y2hh
cl90KgorICBjb25zdCB3Y2hhcl90KiBzID0gTCJoZWxsbyI7CisgIEVYUEVDVF9FUShQcmludFBv
aW50ZXIocyksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uo
cywgcykuY19zdHIoKSk7CisKKyAgLy8gd2NoYXJfdCoKKyAgd2NoYXJfdCBjaCA9IEwnYSc7Cisg
IEVYUEVDVF9FUShQcmludFBvaW50ZXIoJmNoKSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBh
cmlzb25GYWlsdXJlTWVzc2FnZSgmY2gsICZjaCkuY19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIGZv
cm1hdHRpbmcgYSBjaGFyIHBvaW50ZXIgd2hlbiBpdCdzIGNvbXBhcmVkIHRvIGEgc3RyaW5nIG9i
amVjdC4KKy8vIEluIHRoaXMgY2FzZSB3ZSB3YW50IHRvIHByaW50IHRoZSBjaGFyIHBvaW50ZXIg
YXMgYSBDIHN0cmluZy4KKworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisvLyBjaGFyIHBv
aW50ZXIgdnMgOjpzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdl
VGVzdCwgV29ya3NGb3JDaGFyUG9pbnRlclZzU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIqIHMgPSAi
aGVsbG8gXCJ3b3JsZCI7CisgIEVYUEVDVF9TVFJFUSgiXCJoZWxsbyBcXFwid29ybGRcIiIsICAv
LyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgOjpzdHJpbmcoKSkuY19zdHIoKSk7
CisKKyAgLy8gY2hhcioKKyAgY2hhciBzdHJbXSA9ICJoaVwxIjsKKyAgY2hhciogcCA9IHN0cjsK
KyAgRVhQRUNUX1NUUkVRKCJcImhpXFx4MVwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91
bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJl
TWVzc2FnZShwLCA6OnN0cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisvLyBjaGFyIHBv
aW50ZXIgdnMgc3RkOjpzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNz
YWdlVGVzdCwgV29ya3NGb3JDaGFyUG9pbnRlclZzU3RkU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIq
IHMgPSAiaGVsbG8gXCJ3b3JsZCI7CisgIEVYUEVDVF9TVFJFUSgiXCJoZWxsbyBcXFwid29ybGRc
IiIsICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAg
ICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgOjpzdGQ6OnN0cmluZygp
KS5jX3N0cigpKTsKKworICAvLyBjaGFyKgorICBjaGFyIHN0cltdID0gImhpXDEiOworICBjaGFy
KiBwID0gc3RyOworICBFWFBFQ1RfU1RSRVEoIlwiaGlcXHgxXCIiLCAgLy8gVGhlIHN0cmluZyBj
b250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlKHAsIDo6c3RkOjpzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisKKyNp
ZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKKy8vIHdjaGFyX3QgcG9pbnRlciB2cyA6OndzdHJp
bmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JX
Q2hhclBvaW50ZXJWc1dTdHJpbmcpIHsKKyAgY29uc3Qgd2NoYXJfdCogcyA9IEwiaGkgXCJ3b3Js
ZCI7CisgIEVYUEVDVF9TVFJFUSgiTFwiaGkgXFxcIndvcmxkXCIiLCAgLy8gVGhlIHN0cmluZyBj
b250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlKHMsIDo6d3N0cmluZygpKS5jX3N0cigpKTsKKworICAvLyB3Y2hh
cl90KgorICB3Y2hhcl90IHN0cltdID0gTCJoaVwxIjsKKyAgd2NoYXJfdCogcCA9IHN0cjsKKyAg
RVhQRUNUX1NUUkVRKCJMXCJoaVxceDFcIiIsICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxk
IGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2UocCwgOjp3c3RyaW5nKCkpLmNfc3RyKCkpOworfQorI2VuZGlmCisKKyNpZiBHVEVTVF9I
QVNfU1REX1dTVFJJTkcKKy8vIHdjaGFyX3QgcG9pbnRlciB2cyBzdGQ6OndzdHJpbmcKK1RFU1Qo
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhclBvaW50
ZXJWc1N0ZFdTdHJpbmcpIHsKKyAgY29uc3Qgd2NoYXJfdCogcyA9IEwiaGkgXCJ3b3JsZCI7Cisg
IEVYUEVDVF9TVFJFUSgiTFwiaGkgXFxcIndvcmxkXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50
IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZh
aWx1cmVNZXNzYWdlKHMsIDo6c3RkOjp3c3RyaW5nKCkpLmNfc3RyKCkpOworCisgIC8vIHdjaGFy
X3QqCisgIHdjaGFyX3Qgc3RyW10gPSBMImhpXDEiOworICB3Y2hhcl90KiBwID0gc3RyOworICBF
WFBFQ1RfU1RSRVEoIkxcImhpXFx4MVwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQg
YmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVz
c2FnZShwLCA6OnN0ZDo6d3N0cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisvLyBUZXN0
cyBmb3JtYXR0aW5nIGEgY2hhciBhcnJheSB3aGVuIGl0J3MgY29tcGFyZWQgd2l0aCBhIHBvaW50
ZXIgb3IgYXJyYXkuCisvLyBJbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBwcmludCB0aGUgYXJyYXkg
YXMgYSByb3cgcG9pbnRlciwgYXMgdGhlIGNvbXBhcmlzb24KKy8vIGlzIGJ5IHBvaW50ZXIuCisK
Ky8vIGNoYXIgYXJyYXkgdnMgcG9pbnRlcgorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVy
ZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVZzUG9pbnRlcikgeworICBjaGFyIHN0cltd
ID0gImhpIFwid29ybGRcIiI7CisgIGNoYXIqIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoUHJpbnRQ
b2ludGVyKHN0ciksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2Uoc3RyLCBwKS5jX3N0cigpKTsKK30KKworLy8gY2hhciBhcnJheSB2cyBjaGFyIGFycmF5CitU
RVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhckFy
cmF5VnNDaGFyQXJyYXkpIHsKKyAgY29uc3QgY2hhciBzdHJbXSA9ICJoaSBcIndvcmxkXCIiOwor
ICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHN0ciksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21w
YXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCBzdHIpLmNfc3RyKCkpOworfQorCisvLyB3Y2hhcl90
IGFycmF5IHZzIHBvaW50ZXIKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdl
VGVzdCwgV29ya3NGb3JXQ2hhckFycmF5VnNQb2ludGVyKSB7CisgIHdjaGFyX3Qgc3RyW10gPSBM
ImhpIFwid29ybGRcIiI7CisgIHdjaGFyX3QqIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoUHJpbnRQ
b2ludGVyKHN0ciksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2Uoc3RyLCBwKS5jX3N0cigpKTsKK30KKworLy8gd2NoYXJfdCBhcnJheSB2cyB3Y2hhcl90IGFy
cmF5CitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9y
V0NoYXJBcnJheVZzV0NoYXJBcnJheSkgeworICBjb25zdCB3Y2hhcl90IHN0cltdID0gTCJoaSBc
IndvcmxkXCIiOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHN0ciksCisgICAgICAgICAgICBG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCBzdHIpLmNfc3RyKCkpOworfQor
CisvLyBUZXN0cyBmb3JtYXR0aW5nIGEgY2hhciBhcnJheSB3aGVuIGl0J3MgY29tcGFyZWQgd2l0
aCBhIHN0cmluZyBvYmplY3QuCisvLyBJbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBwcmludCB0aGUg
YXJyYXkgYXMgYSBDIHN0cmluZy4KKworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisvLyBj
aGFyIGFycmF5IHZzIHN0cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2VUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVZzU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIgc3RyW10g
PSAiaGkgXCJ3XDBybGRcIiI7CisgIEVYUEVDVF9TVFJFUSgiXCJoaSBcXFwid1wiIiwgIC8vIFRo
ZSBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBFbWJlZGRlZCBOVUwgdGVybWluYXRlcyB0aGUgc3RyaW5nLgorICAgICAgICAgICAg
ICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgOjpzdHJpbmcoKSkuY19z
dHIoKSk7Cit9CisjZW5kaWYKKworLy8gY2hhciBhcnJheSB2cyBzdGQ6OnN0cmluZworVEVTVChG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVZz
U3RkU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIgc3RyW10gPSAiaGkgXCJ3b3JsZFwiIjsKKyAgRVhQ
RUNUX1NUUkVRKCJcImhpIFxcXCJ3b3JsZFxcXCJcIiIsICAvLyBUaGUgY29udGVudCBzaG91bGQg
YmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVz
c2FnZShzdHIsIDo6c3RkOjpzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNf
R0xPQkFMX1dTVFJJTkcKKy8vIHdjaGFyX3QgYXJyYXkgdnMgd3N0cmluZworVEVTVChGb3JtYXRG
b3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvcldDaGFyQXJyYXlWc1dTdHJp
bmcpIHsKKyAgY29uc3Qgd2NoYXJfdCBzdHJbXSA9IEwiaGkgXCJ3b3JsZFwiIjsKKyAgRVhQRUNU
X1NUUkVRKCJMXCJoaSBcXFwid29ybGRcXFwiXCIiLCAgLy8gVGhlIGNvbnRlbnQgc2hvdWxkIGJl
IGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2Uoc3RyLCA6OndzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisjZW5kaWYKKworI2lmIEdURVNUX0hB
U19TVERfV1NUUklORworLy8gd2NoYXJfdCBhcnJheSB2cyBzdGQ6OndzdHJpbmcKK1RFU1QoRm9y
bWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhckFycmF5VnNT
dGRXU3RyaW5nKSB7CisgIGNvbnN0IHdjaGFyX3Qgc3RyW10gPSBMImhpIFwid1wwcmxkXCIiOwor
ICBFWFBFQ1RfU1RSRVEoCisgICAgICAiTFwiaGkgXFxcIndcIiIsICAvLyBUaGUgY29udGVudCBz
aG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVtYmVkZGVkIE5V
TCB0ZXJtaW5hdGVzIHRoZSBzdHJpbmcuCisgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVy
ZU1lc3NhZ2Uoc3RyLCA6OnN0ZDo6d3N0cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisv
LyBVc2VmdWwgZm9yIHRlc3RpbmcgUHJpbnRUb1N0cmluZygpLiAgV2UgY2Fubm90IHVzZSBFWFBF
Q1RfRVEoKQorLy8gdGhlcmUgYXMgaXRzIGltcGxlbWVudGF0aW9uIHVzZXMgUHJpbnRUb1N0cmlu
ZygpLiAgVGhlIGNhbGxlciBtdXN0CisvLyBlbnN1cmUgdGhhdCAndmFsdWUnIGhhcyBubyBzaWRl
IGVmZmVjdC4KKyNkZWZpbmUgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18odmFsdWUsIGV4cGVjdGVk
X3N0cmluZykgICAgICAgICBcCisgIEVYUEVDVF9UUlVFKFByaW50VG9TdHJpbmcodmFsdWUpID09
IChleHBlY3RlZF9zdHJpbmcpKSAgICAgICAgXAorICAgICAgPDwgIiB3aGVyZSAiICN2YWx1ZSAi
IHByaW50cyBhcyAiIDw8IChQcmludFRvU3RyaW5nKHZhbHVlKSkKKworVEVTVChQcmludFRvU3Ry
aW5nVGVzdCwgV29ya3NGb3JTY2FsYXIpIHsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18oMTIz
LCAiMTIzIik7Cit9CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIFdvcmtzRm9yUG9pbnRlclRv
Q29uc3RDaGFyKSB7CisgIGNvbnN0IGNoYXIqIHAgPSAiaGVsbG8iOworICBFWFBFQ1RfUFJJTlRf
VE9fU1RSSU5HXyhwLCAiXCJoZWxsb1wiIik7Cit9CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3Qs
IFdvcmtzRm9yUG9pbnRlclRvTm9uQ29uc3RDaGFyKSB7CisgIGNoYXIgc1tdID0gImhlbGxvIjsK
KyAgY2hhciogcCA9IHM7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKHAsICJcImhlbGxvXCIi
KTsKK30KKworVEVTVChQcmludFRvU3RyaW5nVGVzdCwgRXNjYXBlc0ZvclBvaW50ZXJUb0NvbnN0
Q2hhcikgeworICBjb25zdCBjaGFyKiBwID0gImhlbGxvXG4iOworICBFWFBFQ1RfUFJJTlRfVE9f
U1RSSU5HXyhwLCAiXCJoZWxsb1xcblwiIik7Cit9CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3Qs
IEVzY2FwZXNGb3JQb2ludGVyVG9Ob25Db25zdENoYXIpIHsKKyAgY2hhciBzW10gPSAiaGVsbG9c
MSI7CisgIGNoYXIqIHAgPSBzOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhwLCAiXCJoZWxs
b1xceDFcIiIpOworfQorCitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvckFycmF5KSB7
CisgIGludCBuWzNdID0geyAxLCAyLCAzIH07CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKG4s
ICJ7IDEsIDIsIDMgfSIpOworfQorCitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvckNo
YXJBcnJheSkgeworICBjaGFyIHNbXSA9ICJoZWxsbyI7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJ
TkdfKHMsICJcImhlbGxvXCIiKTsKK30KKworVEVTVChQcmludFRvU3RyaW5nVGVzdCwgV29ya3NG
b3JDaGFyQXJyYXlXaXRoRW1iZWRkZWROdWwpIHsKKyAgY29uc3QgY2hhciBzdHJfd2l0aF9udWxb
XSA9ICJoZWxsb1wwIHdvcmxkIjsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18oc3RyX3dpdGhf
bnVsLCAiXCJoZWxsb1xcMCB3b3JsZFwiIik7CisKKyAgY2hhciBtdXRhYmxlX3N0cl93aXRoX251
bFtdID0gImhlbGxvXDAgd29ybGQiOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhtdXRhYmxl
X3N0cl93aXRoX251bCwgIlwiaGVsbG9cXDAgd29ybGRcIiIpOworfQorCisgIFRFU1QoUHJpbnRU
b1N0cmluZ1Rlc3QsIENvbnRhaW5zTm9uTGF0aW4pIHsKKyAgLy8gU2FuaXR5IHRlc3Qgd2l0aCB2
YWxpZCBVVEYtOC4gUHJpbnRzIGJvdGggaW4gaGV4IGFuZCBhcyB0ZXh0LgorICBzdGQ6OnN0cmlu
ZyBub25fYXNjaWlfc3RyID0gOjpzdGQ6OnN0cmluZygi7Jik7KCEIDQ6MzAiKTsKKyAgRVhQRUNU
X1BSSU5UX1RPX1NUUklOR18obm9uX2FzY2lpX3N0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlwiXFx4RUNcXHg5OFxceEE0XFx4RUNcXHhBMFxceDg0IDQ6MzBcIlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIEFzIFRleHQ6IFwi7Jik7KCEIDQ6MzBcIiIpOworICBub25f
YXNjaWlfc3RyID0gOjpzdGQ6OnN0cmluZygiRnJvbSDDpCDigJQg4bqRIik7CisgIEVYUEVDVF9Q
UklOVF9UT19TVFJJTkdfKG5vbl9hc2NpaV9zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJcIkZyb20gXFx4QzNcXHhBNCBcXHhFMlxceDgwXFx4OTQgXFx4RTFcXHhCQVxceDkxXCIiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICJcbiAgICBBcyBUZXh0OiBcIkZyb20gw6Qg4oCUIOG6
kVwiIik7Cit9CisKK1RFU1QoSXNWYWxpZFVURjhUZXN0LCBJbGxGb3JtZWRVVEY4KSB7CisgIC8v
IFRoZSBmb2xsb3dpbmcgdGVzdCBzdHJpbmdzIGFyZSBpbGwtZm9ybWVkIFVURi04IGFuZCBhcmUg
cHJpbnRlZAorICAvLyBhcyBoZXggb25seSAob3IgQVNDSUksIGluIGNhc2Ugb2YgQVNDSUkgYnl0
ZXMpIGJlY2F1c2UgSXNWYWxpZFVURjgoKSBpcworICAvLyBleHBlY3RlZCB0byBmYWlsLCB0aHVz
IG91dHB1dCBkb2VzIG5vdCBjb250YWluICJBcyBUZXh0OiIuCisKKyAgc3RhdGljIGNvbnN0IGNo
YXIgKmNvbnN0IGtUZXN0ZGF0YVtdWzJdID0geworICAgIC8vIDItYnl0ZSBsZWFkIGJ5dGUgZm9s
bG93ZWQgYnkgYSBzaW5nbGUtYnl0ZSBjaGFyYWN0ZXIuCisgICAgeyJceEMzXHg3NCIsICJcIlxc
eEMzdFwiIn0sCisgICAgLy8gVmFsaWQgMi1ieXRlIGNoYXJhY3RlciBmb2xsb3dlZCBieSBhbiBv
cnBoYW4gdHJhaWwgYnl0ZS4KKyAgICB7Ilx4QzNceDg0XHhBNCIsICJcIlxceEMzXFx4ODRcXHhB
NFwiIn0sCisgICAgLy8gTGVhZCBieXRlIHdpdGhvdXQgdHJhaWwgYnl0ZS4KKyAgICB7ImFiY1x4
QzMiLCAiXCJhYmNcXHhDM1wiIn0sCisgICAgLy8gMy1ieXRlIGxlYWQgYnl0ZSwgc2luZ2xlLWJ5
dGUgY2hhcmFjdGVyLCBvcnBoYW4gdHJhaWwgYnl0ZS4KKyAgICB7InhceEUyXHg3MFx4OTQiLCAi
XCJ4XFx4RTJwXFx4OTRcIiJ9LAorICAgIC8vIFRydW5jYXRlZCAzLWJ5dGUgY2hhcmFjdGVyLgor
ICAgIHsiXHhFMlx4ODAiLCAiXCJcXHhFMlxceDgwXCIifSwKKyAgICAvLyBUcnVuY2F0ZWQgMy1i
eXRlIGNoYXJhY3RlciBmb2xsb3dlZCBieSB2YWxpZCAyLWJ5dGUgY2hhci4KKyAgICB7Ilx4RTJc
eDgwXHhDM1x4ODQiLCAiXCJcXHhFMlxceDgwXFx4QzNcXHg4NFwiIn0sCisgICAgLy8gVHJ1bmNh
dGVkIDMtYnl0ZSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkgYSBzaW5nbGUtYnl0ZSBjaGFyYWN0ZXIu
CisgICAgeyJceEUyXHg4MFx4N0EiLCAiXCJcXHhFMlxceDgwelwiIn0sCisgICAgLy8gMy1ieXRl
IGxlYWQgYnl0ZSBmb2xsb3dlZCBieSB2YWxpZCAzLWJ5dGUgY2hhcmFjdGVyLgorICAgIHsiXHhF
Mlx4RTJceDgwXHg5NCIsICJcIlxceEUyXFx4RTJcXHg4MFxceDk0XCIifSwKKyAgICAvLyA0LWJ5
dGUgbGVhZCBieXRlIGZvbGxvd2VkIGJ5IHZhbGlkIDMtYnl0ZSBjaGFyYWN0ZXIuCisgICAgeyJc
eEYwXHhFMlx4ODBceDk0IiwgIlwiXFx4RjBcXHhFMlxceDgwXFx4OTRcIiJ9LAorICAgIC8vIFRy
dW5jYXRlZCA0LWJ5dGUgY2hhcmFjdGVyLgorICAgIHsiXHhGMFx4RTJceDgwIiwgIlwiXFx4RjBc
XHhFMlxceDgwXCIifSwKKyAgICAgLy8gSW52YWxpZCBVVEYtOCBieXRlIHNlcXVlbmNlcyBlbWJl
ZGRlZCBpbiBvdGhlciBjaGFycy4KKyAgICB7ImFiY1x4RTJceDgwXHg5NFx4QzNceDc0eHljIiwg
IlwiYWJjXFx4RTJcXHg4MFxceDk0XFx4QzN0eHljXCIifSwKKyAgICB7ImFiY1x4QzNceDg0XHhF
Mlx4ODBceEMzXHg4NHh5eiIsCisgICAgICJcImFiY1xceEMzXFx4ODRcXHhFMlxceDgwXFx4QzNc
XHg4NHh5elwiIn0sCisgICAgLy8gTm9uLXNob3J0ZXN0IFVURi04IGJ5dGUgc2VxdWVuY2VzIGFy
ZSBhbHNvIGlsbC1mb3JtZWQuCisgICAgLy8gVGhlIGNsYXNzaWNzOiB4QzAsIHhDMSBsZWFkIGJ5
dGUuCisgICAgeyJceEMwXHg4MCIsICJcIlxceEMwXFx4ODBcIiJ9LAorICAgIHsiXHhDMVx4ODEi
LCAiXCJcXHhDMVxceDgxXCIifSwKKyAgICAvLyBOb24tc2hvcnRlc3Qgc2VxdWVuY2VzLgorICAg
IHsiXHhFMFx4ODBceDgwIiwgIlwiXFx4RTBcXHg4MFxceDgwXCIifSwKKyAgICB7Ilx4ZjBceDgw
XHg4MFx4ODAiLCAiXCJcXHhGMFxceDgwXFx4ODBcXHg4MFwiIn0sCisgICAgLy8gTGFzdCB2YWxp
ZCBjb2RlIHBvaW50IGJlZm9yZSBzdXJyb2dhdGUgcmFuZ2UsIHNob3VsZCBiZSBwcmludGVkIGFz
IHRleHQsCisgICAgLy8gdG9vLgorICAgIHsiXHhFRFx4OUZceEJGIiwgIlwiXFx4RURcXHg5Rlxc
eEJGXCJcbiAgICBBcyBUZXh0OiBcIu2fv1wiIn0sCisgICAgLy8gU3RhcnQgb2Ygc3Vycm9nYXRl
IGxlYWQuIFN1cnJvZ2F0ZXMgYXJlIG5vdCBwcmludGVkIGFzIHRleHQuCisgICAgeyJceEVEXHhB
MFx4ODAiLCAiXCJcXHhFRFxceEEwXFx4ODBcIiJ9LAorICAgIC8vIExhc3Qgbm9uLXByaXZhdGUg
c3Vycm9nYXRlIGxlYWQuCisgICAgeyJceEVEXHhBRFx4QkYiLCAiXCJcXHhFRFxceEFEXFx4QkZc
IiJ9LAorICAgIC8vIEZpcnN0IHByaXZhdGUtdXNlIHN1cnJvZ2F0ZSBsZWFkLgorICAgIHsiXHhF
RFx4QUVceDgwIiwgIlwiXFx4RURcXHhBRVxceDgwXCIifSwKKyAgICAvLyBMYXN0IHByaXZhdGUt
dXNlIHN1cnJvZ2F0ZSBsZWFkLgorICAgIHsiXHhFRFx4QUZceEJGIiwgIlwiXFx4RURcXHhBRlxc
eEJGXCIifSwKKyAgICAvLyBNaWQtcG9pbnQgb2Ygc3Vycm9nYXRlIHRyYWlsLgorICAgIHsiXHhF
RFx4QjNceEJGIiwgIlwiXFx4RURcXHhCM1xceEJGXCIifSwKKyAgICAvLyBGaXJzdCB2YWxpZCBj
b2RlIHBvaW50IGFmdGVyIHN1cnJvZ2F0ZSByYW5nZSwgc2hvdWxkIGJlIHByaW50ZWQgYXMgdGV4
dCwKKyAgICAvLyB0b28uCisgICAgeyJceEVFXHg4MFx4ODAiLCAiXCJcXHhFRVxceDgwXFx4ODBc
IlxuICAgIEFzIFRleHQ6IFwi7oCAXCIifQorICB9OworCisgIGZvciAoaW50IGkgPSAwOyBpIDwg
aW50KHNpemVvZihrVGVzdGRhdGEpL3NpemVvZihrVGVzdGRhdGFbMF0pKTsgKytpKSB7CisgICAg
RVhQRUNUX1BSSU5UX1RPX1NUUklOR18oa1Rlc3RkYXRhW2ldWzBdLCBrVGVzdGRhdGFbaV1bMV0p
OworICB9Cit9CisKKyN1bmRlZiBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXworCitURVNUKFVuaXZl
cnNhbFRlcnNlUHJpbnRUZXN0LCBXb3Jrc0Zvck5vblJlZmVyZW5jZSkgeworICA6OnN0ZDo6c3Ry
aW5nc3RyZWFtIHNzOworICBVbml2ZXJzYWxUZXJzZVByaW50KDEyMywgJnNzKTsKKyAgRVhQRUNU
X0VRKCIxMjMiLCBzcy5zdHIoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFRlc3Qs
IFdvcmtzRm9yUmVmZXJlbmNlKSB7CisgIGNvbnN0IGludCYgbiA9IDEyMzsKKyAgOjpzdGQ6OnN0
cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2FsVGVyc2VQcmludChuLCAmc3MpOworICBFWFBFQ1Rf
RVEoIjEyMyIsIHNzLnN0cigpKTsKK30KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VGVzdCwg
V29ya3NGb3JDU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIqIHMxID0gImFiYyI7CisgIDo6c3RkOjpz
dHJpbmdzdHJlYW0gc3MxOworICBVbml2ZXJzYWxUZXJzZVByaW50KHMxLCAmc3MxKTsKKyAgRVhQ
RUNUX0VRKCJcImFiY1wiIiwgc3MxLnN0cigpKTsKKworICBjaGFyKiBzMiA9IGNvbnN0X2Nhc3Q8
Y2hhcio+KHMxKTsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczI7CisgIFVuaXZlcnNhbFRlcnNl
UHJpbnQoczIsICZzczIpOworICBFWFBFQ1RfRVEoIlwiYWJjXCIiLCBzczIuc3RyKCkpOworCisg
IGNvbnN0IGNoYXIqIHMzID0gTlVMTDsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczM7CisgIFVu
aXZlcnNhbFRlcnNlUHJpbnQoczMsICZzczMpOworICBFWFBFQ1RfRVEoIk5VTEwiLCBzczMuc3Ry
KCkpOworfQorCitURVNUKFVuaXZlcnNhbFByaW50VGVzdCwgV29ya3NGb3JOb25SZWZlcmVuY2Up
IHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2FsUHJpbnQoMTIzLCAmc3Mp
OworICBFWFBFQ1RfRVEoIjEyMyIsIHNzLnN0cigpKTsKK30KKworVEVTVChVbml2ZXJzYWxQcmlu
dFRlc3QsIFdvcmtzRm9yUmVmZXJlbmNlKSB7CisgIGNvbnN0IGludCYgbiA9IDEyMzsKKyAgOjpz
dGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2FsUHJpbnQobiwgJnNzKTsKKyAgRVhQRUNU
X0VRKCIxMjMiLCBzcy5zdHIoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsUHJpbnRUZXN0LCBXb3Jr
c0ZvckNTdHJpbmcpIHsKKyAgY29uc3QgY2hhciogczEgPSAiYWJjIjsKKyAgOjpzdGQ6OnN0cmlu
Z3N0cmVhbSBzczE7CisgIFVuaXZlcnNhbFByaW50KHMxLCAmc3MxKTsKKyAgRVhQRUNUX0VRKFBy
aW50UG9pbnRlcihzMSkgKyAiIHBvaW50aW5nIHRvIFwiYWJjXCIiLCBzdGQ6OnN0cmluZyhzczEu
c3RyKCkpKTsKKworICBjaGFyKiBzMiA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHMxKTsKKyAgOjpzdGQ6
OnN0cmluZ3N0cmVhbSBzczI7CisgIFVuaXZlcnNhbFByaW50KHMyLCAmc3MyKTsKKyAgRVhQRUNU
X0VRKFByaW50UG9pbnRlcihzMikgKyAiIHBvaW50aW5nIHRvIFwiYWJjXCIiLCBzdGQ6OnN0cmlu
ZyhzczIuc3RyKCkpKTsKKworICBjb25zdCBjaGFyKiBzMyA9IE5VTEw7CisgIDo6c3RkOjpzdHJp
bmdzdHJlYW0gc3MzOworICBVbml2ZXJzYWxQcmludChzMywgJnNzMyk7CisgIEVYUEVDVF9FUSgi
TlVMTCIsIHNzMy5zdHIoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsUHJpbnRUZXN0LCBXb3Jrc0Zv
ckNoYXJBcnJheSkgeworICBjb25zdCBjaGFyIHN0cltdID0gIlwiTGluZVwwIDFcIlxuTGluZSAy
IjsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczE7CisgIFVuaXZlcnNhbFByaW50KHN0ciwgJnNz
MSk7CisgIEVYUEVDVF9FUSgiXCJcXFwiTGluZVxcMCAxXFxcIlxcbkxpbmUgMlwiIiwgc3MxLnN0
cigpKTsKKworICBjb25zdCBjaGFyIG11dGFibGVfc3RyW10gPSAiXCJMaW5lXDAgMVwiXG5MaW5l
IDIiOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMjsKKyAgVW5pdmVyc2FsUHJpbnQobXV0YWJs
ZV9zdHIsICZzczIpOworICBFWFBFQ1RfRVEoIlwiXFxcIkxpbmVcXDAgMVxcXCJcXG5MaW5lIDJc
IiIsIHNzMi5zdHIoKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCisKK1RFU1QoVW5p
dmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhUcjEsIFByaW50c0Vt
cHR5VHVwbGUpIHsKKyAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVG
aWVsZHNUb1N0cmluZ3MoCisgICAgICA6OnN0ZDo6dHIxOjptYWtlX3R1cGxlKCkpOworICBFWFBF
Q1RfRVEoMHUsIHJlc3VsdC5zaXplKCkpOworfQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRU
dXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmludHNPbmVUdXBsZSkgeworICBTdHJp
bmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKKyAg
ICAgIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGUoMSkpOworICBBU1NFUlRfRVEoMXUsIHJlc3VsdC5z
aXplKCkpOworICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRbMF0pOworfQorCitURVNUKFVuaXZlcnNh
bFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmludHNUd29UdXBs
ZSkgeworICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1Rv
U3RyaW5ncygKKyAgICAgIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGUoMSwgJ2EnKSk7CisgIEFTU0VS
VF9FUSgydSwgcmVzdWx0LnNpemUoKSk7CisgIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7Cisg
IEVYUEVDVF9FUSgiJ2EnICg5NywgMHg2MSkiLCByZXN1bHRbMV0pOworfQorCitURVNUKFVuaXZl
cnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmludHNUZXJz
ZWx5KSB7CisgIGNvbnN0IGludCBuID0gMTsKKyAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxU
ZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoCisgICAgICA6OnN0ZDo6dHIxOjp0dXBsZTxj
b25zdCBpbnQmLCBjb25zdCBjaGFyKj4obiwgImEiKSk7CisgIEFTU0VSVF9FUSgydSwgcmVzdWx0
LnNpemUoKSk7CisgIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7CisgIEVYUEVDVF9FUSgiXCJh
XCIiLCByZXN1bHRbMV0pOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUKKwor
I2lmIEdURVNUX0hBU19TVERfVFVQTEVfCisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxl
RmllbGRzVG9TdHJpbmdzVGVzdFdpdGhTdGQsIFByaW50c0VtcHR5VHVwbGUpIHsKKyAgU3RyaW5n
cyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoOjpzdGQ6
Om1ha2VfdHVwbGUoKSk7CisgIEVYUEVDVF9FUSgwdSwgcmVzdWx0LnNpemUoKSk7Cit9CisKK1RF
U1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhTdGQsIFBy
aW50c09uZVR1cGxlKSB7CisgIFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1
cGxlRmllbGRzVG9TdHJpbmdzKAorICAgICAgOjpzdGQ6Om1ha2VfdHVwbGUoMSkpOworICBBU1NF
UlRfRVEoMXUsIHJlc3VsdC5zaXplKCkpOworICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRbMF0pOwor
fQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRo
U3RkLCBQcmludHNUd29UdXBsZSkgeworICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNl
UHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKKyAgICAgIDo6c3RkOjptYWtlX3R1cGxlKDEsICdh
JykpOworICBBU1NFUlRfRVEoMnUsIHJlc3VsdC5zaXplKCkpOworICBFWFBFQ1RfRVEoIjEiLCBy
ZXN1bHRbMF0pOworICBFWFBFQ1RfRVEoIidhJyAoOTcsIDB4NjEpIiwgcmVzdWx0WzFdKTsKK30K
KworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0aFN0
ZCwgUHJpbnRzVGVyc2VseSkgeworICBjb25zdCBpbnQgbiA9IDE7CisgIFN0cmluZ3MgcmVzdWx0
ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAorICAgICAgOjpzdGQ6
OnR1cGxlPGNvbnN0IGludCYsIGNvbnN0IGNoYXIqPihuLCAiYSIpKTsKKyAgQVNTRVJUX0VRKDJ1
LCByZXN1bHQuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKCIxIiwgcmVzdWx0WzBdKTsKKyAgRVhQRUNU
X0VRKCJcImFcIiIsIHJlc3VsdFsxXSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9U
VVBMRV8KKworI2lmIEdURVNUX0hBU19BQlNMCisKK1RFU1QoUHJpbnRPcHRpb25hbFRlc3QsIEJh
c2ljKSB7CisgIGFic2w6Om9wdGlvbmFsPGludD4gdmFsdWU7CisgIEVYUEVDVF9FUSgiKG51bGxv
cHQpIiwgUHJpbnRUb1N0cmluZyh2YWx1ZSkpOworICB2YWx1ZSA9IHs3fTsKKyAgRVhQRUNUX0VR
KCIoNykiLCBQcmludFRvU3RyaW5nKHZhbHVlKSk7CisgIEVYUEVDVF9FUSgiKDEuMSkiLCBQcmlu
dFRvU3RyaW5nKGFic2w6Om9wdGlvbmFsPGRvdWJsZT57MS4xfSkpOworICBFWFBFQ1RfRVEoIihc
IkFcIikiLCBQcmludFRvU3RyaW5nKGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPnsiQSJ9KSk7
Cit9CisKK3N0cnVjdCBOb25QcmludGFibGUgeworICB1bnNpZ25lZCBjaGFyIGNvbnRlbnRzID0g
MTc7Cit9OworCitURVNUKFByaW50T25lb2ZUZXN0LCBCYXNpYykgeworICB1c2luZyBUeXBlID0g
YWJzbDo6dmFyaWFudDxpbnQsIFN0cmVhbWFibGVJbkdsb2JhbCwgTm9uUHJpbnRhYmxlPjsKKyAg
RVhQRUNUX0VRKCIoJ2ludCcgd2l0aCB2YWx1ZSA3KSIsIFByaW50VG9TdHJpbmcoVHlwZSg3KSkp
OworICBFWFBFQ1RfRVEoIignU3RyZWFtYWJsZUluR2xvYmFsJyB3aXRoIHZhbHVlIFN0cmVhbWFi
bGVJbkdsb2JhbCkiLAorICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhUeXBlKFN0cmVhbWFibGVJ
bkdsb2JhbHt9KSkpOworICBFWFBFQ1RfRVEoCisgICAgICAiKCd0ZXN0aW5nOjpndGVzdF9wcmlu
dGVyc190ZXN0OjpOb25QcmludGFibGUnIHdpdGggdmFsdWUgMS1ieXRlIG9iamVjdCAiCisgICAg
ICAiPDExPikiLAorICAgICAgUHJpbnRUb1N0cmluZyhUeXBlKE5vblByaW50YWJsZXt9KSkpOwor
fQorI2VuZGlmICAvLyBHVEVTVF9IQVNfQUJTTAorCit9ICAvLyBuYW1lc3BhY2UgZ3Rlc3RfcHJp
bnRlcnNfdGVzdAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3QucHkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0LnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU3M2NjNWVjYTNmY2U0NThhYTNhYzNlMzk4NTBmNDdiYjM4MmU1NWIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtc2h1ZmZsZS10
ZXN0LnB5CkBAIC0wLDAgKzEsMzIzIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29w
eXJpZ2h0IDIwMDkgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyIiIlZlcmlmaWVzIHRoYXQgdGVzdCBzaHVmZmxpbmcgd29ya3MuIiIiCisKK2lt
cG9ydCBvcworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworIyBDb21tYW5kIHRvIHJ1biB0aGUg
Z29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfIHByb2dyYW0uCitDT01NQU5EID0gZ3Rlc3RfdGVzdF91
dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2dvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0XycpCisK
KyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBzaGFyZGluZy4KK1RPVEFMX1NI
QVJEU19FTlZfVkFSID0gJ0dURVNUX1RPVEFMX1NIQVJEUycKK1NIQVJEX0lOREVYX0VOVl9WQVIg
PSAnR1RFU1RfU0hBUkRfSU5ERVgnCisKK1RFU1RfRklMVEVSID0gJ0EqLkE6QSouQjpDKicKKwor
QUxMX1RFU1RTID0gW10KK0FDVElWRV9URVNUUyA9IFtdCitGSUxURVJFRF9URVNUUyA9IFtdCitT
SEFSREVEX1RFU1RTID0gW10KKworU0hVRkZMRURfQUxMX1RFU1RTID0gW10KK1NIVUZGTEVEX0FD
VElWRV9URVNUUyA9IFtdCitTSFVGRkxFRF9GSUxURVJFRF9URVNUUyA9IFtdCitTSFVGRkxFRF9T
SEFSREVEX1RFU1RTID0gW10KKworCitkZWYgQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKCk6Cisg
IHJldHVybiAnLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cycKKworCitkZWYgRmlsdGVy
RmxhZyh0ZXN0X2ZpbHRlcik6CisgIHJldHVybiAnLS1ndGVzdF9maWx0ZXI9JXMnICUgKHRlc3Rf
ZmlsdGVyLCkKKworCitkZWYgUmVwZWF0RmxhZyhuKToKKyAgcmV0dXJuICctLWd0ZXN0X3JlcGVh
dD0lcycgJSAobiwpCisKKworZGVmIFNodWZmbGVGbGFnKCk6CisgIHJldHVybiAnLS1ndGVzdF9z
aHVmZmxlJworCisKK2RlZiBSYW5kb21TZWVkRmxhZyhuKToKKyAgcmV0dXJuICctLWd0ZXN0X3Jh
bmRvbV9zZWVkPSVzJyAlIChuLCkKKworCitkZWYgUnVuQW5kUmV0dXJuT3V0cHV0KGV4dHJhX2Vu
diwgYXJncyk6CisgICIiIlJ1bnMgdGhlIHRlc3QgcHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgb3V0
cHV0LiIiIgorCisgIGVudmlyb25fY29weSA9IG9zLmVudmlyb24uY29weSgpCisgIGVudmlyb25f
Y29weS51cGRhdGUoZXh0cmFfZW52KQorCisgIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnBy
b2Nlc3MoW0NPTU1BTkRdICsgYXJncywgZW52PWVudmlyb25fY29weSkub3V0cHV0CisKKworZGVm
IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyhleHRyYV9lbnYsIGFyZ3MpOgorICAiIiJSdW5zIHRo
ZSB0ZXN0IHByb2dyYW0gYW5kIHJldHVybnMgYSBsaXN0IG9mIHRlc3QgbGlzdHMuCisKKyAgQXJn
czoKKyAgICBleHRyYV9lbnY6IGEgbWFwIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHRo
ZWlyIHZhbHVlcworICAgIGFyZ3M6IGNvbW1hbmQgbGluZSBmbGFncyB0byBwYXNzIHRvIGdvb2ds
ZXRlc3Qtc2h1ZmZsZS10ZXN0XworCisgIFJldHVybnM6CisgICAgQSBsaXN0IHdoZXJlIHRoZSBp
LXRoIGVsZW1lbnQgaXMgdGhlIGxpc3Qgb2YgdGVzdHMgcnVuIGluIHRoZSBpLXRoCisgICAgdGVz
dCBpdGVyYXRpb24uCisgICIiIgorCisgIHRlc3RfaXRlcmF0aW9ucyA9IFtdCisgIGZvciBsaW5l
IGluIFJ1bkFuZFJldHVybk91dHB1dChleHRyYV9lbnYsIGFyZ3MpLnNwbGl0KCdcbicpOgorICAg
IGlmIGxpbmUuc3RhcnRzd2l0aCgnLS0tLScpOgorICAgICAgdGVzdHMgPSBbXQorICAgICAgdGVz
dF9pdGVyYXRpb25zLmFwcGVuZCh0ZXN0cykKKyAgICBlbGlmIGxpbmUuc3RyaXAoKToKKyAgICAg
IHRlc3RzLmFwcGVuZChsaW5lLnN0cmlwKCkpICAjICdUZXN0Q2FzZU5hbWUuVGVzdE5hbWUnCisK
KyAgcmV0dXJuIHRlc3RfaXRlcmF0aW9ucworCisKK2RlZiBHZXRUZXN0Q2FzZXModGVzdHMpOgor
ICAiIiJSZXR1cm5zIGEgbGlzdCBvZiB0ZXN0IGNhc2VzIGluIHRoZSBnaXZlbiBmdWxsIHRlc3Qg
bmFtZXMuCisKKyAgQXJnczoKKyAgICB0ZXN0czogYSBsaXN0IG9mIGZ1bGwgdGVzdCBuYW1lcwor
CisgIFJldHVybnM6CisgICAgQSBsaXN0IG9mIHRlc3QgY2FzZXMgZnJvbSAndGVzdHMnLCBpbiB0
aGVpciBvcmlnaW5hbCBvcmRlci4KKyAgICBDb25zZWN1dGl2ZSBkdXBsaWNhdGVzIGFyZSByZW1v
dmVkLgorICAiIiIKKworICB0ZXN0X2Nhc2VzID0gW10KKyAgZm9yIHRlc3QgaW4gdGVzdHM6Cisg
ICAgdGVzdF9jYXNlID0gdGVzdC5zcGxpdCgnLicpWzBdCisgICAgaWYgbm90IHRlc3RfY2FzZSBp
biB0ZXN0X2Nhc2VzOgorICAgICAgdGVzdF9jYXNlcy5hcHBlbmQodGVzdF9jYXNlKQorCisgIHJl
dHVybiB0ZXN0X2Nhc2VzCisKKworZGVmIENhbGN1bGF0ZVRlc3RMaXN0cygpOgorICAiIiJDYWxj
dWxhdGVzIHRoZSBsaXN0IG9mIHRlc3RzIHJ1biB1bmRlciBkaWZmZXJlbnQgZmxhZ3MuIiIiCisK
KyAgaWYgbm90IEFMTF9URVNUUzoKKyAgICBBTExfVEVTVFMuZXh0ZW5kKAorICAgICAgICBHZXRU
ZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe30sIFtBbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcoKV0pWzBd
KQorCisgIGlmIG5vdCBBQ1RJVkVfVEVTVFM6CisgICAgQUNUSVZFX1RFU1RTLmV4dGVuZChHZXRU
ZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe30sIFtdKVswXSkKKworICBpZiBub3QgRklMVEVSRURfVEVT
VFM6CisgICAgRklMVEVSRURfVEVTVFMuZXh0ZW5kKAorICAgICAgICBHZXRUZXN0c0ZvckFsbEl0
ZXJhdGlvbnMoe30sIFtGaWx0ZXJGbGFnKFRFU1RfRklMVEVSKV0pWzBdKQorCisgIGlmIG5vdCBT
SEFSREVEX1RFU1RTOgorICAgIFNIQVJERURfVEVTVFMuZXh0ZW5kKAorICAgICAgICBHZXRUZXN0
c0ZvckFsbEl0ZXJhdGlvbnMoe1RPVEFMX1NIQVJEU19FTlZfVkFSOiAnMycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU0hBUkRfSU5ERVhfRU5WX1ZBUjogJzEnfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKVswXSkKKworICBpZiBub3QgU0hVRkZMRURf
QUxMX1RFU1RTOgorICAgIFNIVUZGTEVEX0FMTF9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJ
dGVyYXRpb25zKAorICAgICAgICB7fSwgW0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZygpLCBTaHVm
ZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0pWzBdKQorCisgIGlmIG5vdCBTSFVGRkxFRF9B
Q1RJVkVfVEVTVFM6CisgICAgU0hVRkZMRURfQUNUSVZFX1RFU1RTLmV4dGVuZChHZXRUZXN0c0Zv
ckFsbEl0ZXJhdGlvbnMoCisgICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZs
YWcoMSldKVswXSkKKworICBpZiBub3QgU0hVRkZMRURfRklMVEVSRURfVEVTVFM6CisgICAgU0hV
RkZMRURfRklMVEVSRURfVEVTVFMuZXh0ZW5kKEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKKyAg
ICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKSwgRmlsdGVyRmxhZyhU
RVNUX0ZJTFRFUildKVswXSkKKworICBpZiBub3QgU0hVRkZMRURfU0hBUkRFRF9URVNUUzoKKyAg
ICBTSFVGRkxFRF9TSEFSREVEX1RFU1RTLmV4dGVuZCgKKyAgICAgICAgR2V0VGVzdHNGb3JBbGxJ
dGVyYXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcxJ30sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSldKVsw
XSkKKworCitjbGFzcyBHVGVzdFNodWZmbGVVbml0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RD
YXNlKToKKyAgIiIiVGVzdHMgdGVzdCBzaHVmZmxpbmcuIiIiCisKKyAgZGVmIHNldFVwKHNlbGYp
OgorICAgIENhbGN1bGF0ZVRlc3RMaXN0cygpCisKKyAgZGVmIHRlc3RTaHVmZmxlUHJlc2VydmVz
TnVtYmVyT2ZUZXN0cyhzZWxmKToKKyAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihBTExfVEVTVFMp
LCBsZW4oU0hVRkZMRURfQUxMX1RFU1RTKSkKKyAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihBQ1RJ
VkVfVEVTVFMpLCBsZW4oU0hVRkZMRURfQUNUSVZFX1RFU1RTKSkKKyAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbihGSUxURVJFRF9URVNUUyksIGxlbihTSFVGRkxFRF9GSUxURVJFRF9URVNUUykpCisg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oU0hBUkRFRF9URVNUUyksIGxlbihTSFVGRkxFRF9TSEFS
REVEX1RFU1RTKSkKKworICBkZWYgdGVzdFNodWZmbGVDaGFuZ2VzVGVzdE9yZGVyKHNlbGYpOgor
ICAgIHNlbGYuYXNzZXJ0XyhTSFVGRkxFRF9BTExfVEVTVFMgIT0gQUxMX1RFU1RTLCBTSFVGRkxF
RF9BTExfVEVTVFMpCisgICAgc2VsZi5hc3NlcnRfKFNIVUZGTEVEX0FDVElWRV9URVNUUyAhPSBB
Q1RJVkVfVEVTVFMsIFNIVUZGTEVEX0FDVElWRV9URVNUUykKKyAgICBzZWxmLmFzc2VydF8oU0hV
RkZMRURfRklMVEVSRURfVEVTVFMgIT0gRklMVEVSRURfVEVTVFMsCisgICAgICAgICAgICAgICAg
IFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTKQorICAgIHNlbGYuYXNzZXJ0XyhTSFVGRkxFRF9TSEFS
REVEX1RFU1RTICE9IFNIQVJERURfVEVTVFMsCisgICAgICAgICAgICAgICAgIFNIVUZGTEVEX1NI
QVJERURfVEVTVFMpCisKKyAgZGVmIHRlc3RTaHVmZmxlQ2hhbmdlc1Rlc3RDYXNlT3JkZXIoc2Vs
Zik6CisgICAgc2VsZi5hc3NlcnRfKEdldFRlc3RDYXNlcyhTSFVGRkxFRF9BTExfVEVTVFMpICE9
IEdldFRlc3RDYXNlcyhBTExfVEVTVFMpLAorICAgICAgICAgICAgICAgICBHZXRUZXN0Q2FzZXMo
U0hVRkZMRURfQUxMX1RFU1RTKSkKKyAgICBzZWxmLmFzc2VydF8oCisgICAgICAgIEdldFRlc3RD
YXNlcyhTSFVGRkxFRF9BQ1RJVkVfVEVTVFMpICE9IEdldFRlc3RDYXNlcyhBQ1RJVkVfVEVTVFMp
LAorICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfQUNUSVZFX1RFU1RTKSkKKyAgICBzZWxm
LmFzc2VydF8oCisgICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9GSUxURVJFRF9URVNUUykg
IT0gR2V0VGVzdENhc2VzKEZJTFRFUkVEX1RFU1RTKSwKKyAgICAgICAgR2V0VGVzdENhc2VzKFNI
VUZGTEVEX0ZJTFRFUkVEX1RFU1RTKSkKKyAgICBzZWxmLmFzc2VydF8oCisgICAgICAgIEdldFRl
c3RDYXNlcyhTSFVGRkxFRF9TSEFSREVEX1RFU1RTKSAhPSBHZXRUZXN0Q2FzZXMoU0hBUkRFRF9U
RVNUUyksCisgICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9TSEFSREVEX1RFU1RTKSkKKwor
ICBkZWYgdGVzdFNodWZmbGVEb2VzTm90UmVwZWF0VGVzdChzZWxmKToKKyAgICBmb3IgdGVzdCBp
biBTSFVGRkxFRF9BTExfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIFNIVUZGTEVE
X0FMTF9URVNUUy5jb3VudCh0ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVh
cnMgbW9yZSB0aGFuIG9uY2UnICUgKHRlc3QsKSkKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9B
Q1RJVkVfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIFNIVUZGTEVEX0FDVElWRV9U
RVNUUy5jb3VudCh0ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgbW9y
ZSB0aGFuIG9uY2UnICUgKHRlc3QsKSkKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9GSUxURVJF
RF9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgU0hVRkZMRURfRklMVEVSRURfVEVT
VFMuY291bnQodGVzdCksCisgICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUg
dGhhbiBvbmNlJyAlICh0ZXN0LCkpCisgICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfU0hBUkRFRF9U
RVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgU0hVRkZMRURfU0hBUkRFRF9URVNUUy5j
b3VudCh0ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgbW9yZSB0aGFu
IG9uY2UnICUgKHRlc3QsKSkKKworICBkZWYgdGVzdFNodWZmbGVEb2VzTm90Q3JlYXRlTmV3VGVz
dChzZWxmKToKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9BTExfVEVTVFM6CisgICAgICBzZWxm
LmFzc2VydF8odGVzdCBpbiBBTExfVEVTVFMsICclcyBpcyBhbiBpbnZhbGlkIHRlc3QnICUgKHRl
c3QsKSkKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9BQ1RJVkVfVEVTVFM6CisgICAgICBzZWxm
LmFzc2VydF8odGVzdCBpbiBBQ1RJVkVfVEVTVFMsICclcyBpcyBhbiBpbnZhbGlkIHRlc3QnICUg
KHRlc3QsKSkKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9GSUxURVJFRF9URVNUUzoKKyAgICAg
IHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIEZJTFRFUkVEX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0
ZXN0JyAlICh0ZXN0LCkpCisgICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfU0hBUkRFRF9URVNUUzoK
KyAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIQVJERURfVEVTVFMsICclcyBpcyBhbiBpbnZh
bGlkIHRlc3QnICUgKHRlc3QsKSkKKworICBkZWYgdGVzdFNodWZmbGVJbmNsdWRlc0FsbFRlc3Rz
KHNlbGYpOgorICAgIGZvciB0ZXN0IGluIEFMTF9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyh0
ZXN0IGluIFNIVUZGTEVEX0FMTF9URVNUUywgJyVzIGlzIG1pc3NpbmcnICUgKHRlc3QsKSkKKyAg
ICBmb3IgdGVzdCBpbiBBQ1RJVkVfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBT
SFVGRkxFRF9BQ1RJVkVfVEVTVFMsICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCisgICAgZm9y
IHRlc3QgaW4gRklMVEVSRURfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVG
RkxFRF9GSUxURVJFRF9URVNUUywgJyVzIGlzIG1pc3NpbmcnICUgKHRlc3QsKSkKKyAgICBmb3Ig
dGVzdCBpbiBTSEFSREVEX1RFU1RTOgorICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZM
RURfU0hBUkRFRF9URVNUUywgJyVzIGlzIG1pc3NpbmcnICUgKHRlc3QsKSkKKworICBkZWYgdGVz
dFNodWZmbGVMZWF2ZXNEZWF0aFRlc3RzQXRGcm9udChzZWxmKToKKyAgICBub25fZGVhdGhfdGVz
dF9mb3VuZCA9IEZhbHNlCisgICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTOgor
ICAgICAgaWYgJ0RlYXRoVGVzdC4nIGluIHRlc3Q6CisgICAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qg
bm9uX2RlYXRoX3Rlc3RfZm91bmQsCisgICAgICAgICAgICAgICAgICAgICAnJXMgYXBwZWFycyBh
ZnRlciBhIG5vbi1kZWF0aCB0ZXN0JyAlICh0ZXN0LCkpCisgICAgICBlbHNlOgorICAgICAgICBu
b25fZGVhdGhfdGVzdF9mb3VuZCA9IFRydWUKKworICBkZWYgX1ZlcmlmeVRlc3RDYXNlc0RvTm90
SW50ZXJsZWF2ZShzZWxmLCB0ZXN0cyk6CisgICAgdGVzdF9jYXNlcyA9IFtdCisgICAgZm9yIHRl
c3QgaW4gdGVzdHM6CisgICAgICBbdGVzdF9jYXNlLCBfXSA9IHRlc3Quc3BsaXQoJy4nKQorICAg
ICAgaWYgdGVzdF9jYXNlcyBhbmQgdGVzdF9jYXNlc1stMV0gIT0gdGVzdF9jYXNlOgorICAgICAg
ICB0ZXN0X2Nhc2VzLmFwcGVuZCh0ZXN0X2Nhc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MSwgdGVzdF9jYXNlcy5jb3VudCh0ZXN0X2Nhc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICdUZXN0IGNhc2UgJXMgaXMgbm90IGdyb3VwZWQgdG9nZXRoZXIgaW4gJXMnICUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAodGVzdF9jYXNlLCB0ZXN0cykpCisKKyAgZGVmIHRlc3RTaHVmZmxl
RG9lc05vdEludGVybGVhdmVUZXN0Q2FzZXMoc2VsZik6CisgICAgc2VsZi5fVmVyaWZ5VGVzdENh
c2VzRG9Ob3RJbnRlcmxlYXZlKFNIVUZGTEVEX0FMTF9URVNUUykKKyAgICBzZWxmLl9WZXJpZnlU
ZXN0Q2FzZXNEb05vdEludGVybGVhdmUoU0hVRkZMRURfQUNUSVZFX1RFU1RTKQorICAgIHNlbGYu
X1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50ZXJsZWF2ZShTSFVGRkxFRF9GSUxURVJFRF9URVNUUykK
KyAgICBzZWxmLl9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUoU0hVRkZMRURfU0hBUkRF
RF9URVNUUykKKworICBkZWYgdGVzdFNodWZmbGVSZXN0b3Jlc09yZGVyQWZ0ZXJFYWNoSXRlcmF0
aW9uKHNlbGYpOgorICAgICMgR2V0IHRoZSB0ZXN0IGxpc3RzIGluIGFsbCAzIGl0ZXJhdGlvbnMs
IHVzaW5nIHJhbmRvbSBzZWVkIDEsIDIsCisgICAgIyBhbmQgMyByZXNwZWN0aXZlbHkuICBHb29n
bGUgVGVzdCBwaWNrcyBhIGRpZmZlcmVudCBzZWVkIGluIGVhY2gKKyAgICAjIGl0ZXJhdGlvbiwg
YW5kIHRoaXMgdGVzdCBkZXBlbmRzIG9uIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uCisgICAg
IyBwaWNraW5nIHN1Y2Nlc3NpdmUgbnVtYmVycy4gIFRoaXMgZGVwZW5kZW5jeSBpcyBub3QgaWRl
YWwsIGJ1dAorICAgICMgbWFrZXMgdGhlIHRlc3QgbXVjaCBlYXNpZXIgdG8gd3JpdGUuCisgICAg
W3Rlc3RzX2luX2l0ZXJhdGlvbjEsIHRlc3RzX2luX2l0ZXJhdGlvbjIsIHRlc3RzX2luX2l0ZXJh
dGlvbjNdID0gKAorICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisgICAgICAgICAg
ICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpLCBSZXBlYXRGbGFnKDMpXSkp
CisKKyAgICAjIE1ha2Ugc3VyZSBydW5uaW5nIHRoZSB0ZXN0cyB3aXRoIHJhbmRvbSBzZWVkIDEg
Z2V0cyB0aGUgc2FtZQorICAgICMgb3JkZXIgYXMgaW4gaXRlcmF0aW9uIDEgYWJvdmUuCisgICAg
W3Rlc3RzX3dpdGhfc2VlZDFdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICB7
fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSkKKyAgICBzZWxmLmFzc2VydEVx
dWFsKHRlc3RzX2luX2l0ZXJhdGlvbjEsIHRlc3RzX3dpdGhfc2VlZDEpCisKKyAgICAjIE1ha2Ug
c3VyZSBydW5uaW5nIHRoZSB0ZXN0cyB3aXRoIHJhbmRvbSBzZWVkIDIgZ2V0cyB0aGUgc2FtZQor
ICAgICMgb3JkZXIgYXMgaW4gaXRlcmF0aW9uIDIgYWJvdmUuICBTdWNjZXNzIG1lYW5zIHRoYXQg
R29vZ2xlIFRlc3QKKyAgICAjIGNvcnJlY3RseSByZXN0b3JlcyB0aGUgdGVzdCBvcmRlciBiZWZv
cmUgcmUtc2h1ZmZsaW5nIGF0IHRoZQorICAgICMgYmVnaW5uaW5nIG9mIGl0ZXJhdGlvbiAyLgor
ICAgIFt0ZXN0c193aXRoX3NlZWQyXSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKKyAgICAg
ICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygyKV0pCisgICAgc2VsZi5hc3Nl
cnRFcXVhbCh0ZXN0c19pbl9pdGVyYXRpb24yLCB0ZXN0c193aXRoX3NlZWQyKQorCisgICAgIyBN
YWtlIHN1cmUgcnVubmluZyB0aGUgdGVzdHMgd2l0aCByYW5kb20gc2VlZCAzIGdldHMgdGhlIHNh
bWUKKyAgICAjIG9yZGVyIGFzIGluIGl0ZXJhdGlvbiAzIGFib3ZlLiAgU3VjY2VzcyBtZWFucyB0
aGF0IEdvb2dsZSBUZXN0CisgICAgIyBjb3JyZWN0bHkgcmVzdG9yZXMgdGhlIHRlc3Qgb3JkZXIg
YmVmb3JlIHJlLXNodWZmbGluZyBhdCB0aGUKKyAgICAjIGJlZ2lubmluZyBvZiBpdGVyYXRpb24g
My4KKyAgICBbdGVzdHNfd2l0aF9zZWVkM10gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisg
ICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMyldKQorICAgIHNlbGYu
YXNzZXJ0RXF1YWwodGVzdHNfaW5faXRlcmF0aW9uMywgdGVzdHNfd2l0aF9zZWVkMykKKworICBk
ZWYgdGVzdFNodWZmbGVHZW5lcmF0ZXNOZXdPcmRlckluRWFjaEl0ZXJhdGlvbihzZWxmKToKKyAg
ICBbdGVzdHNfaW5faXRlcmF0aW9uMSwgdGVzdHNfaW5faXRlcmF0aW9uMiwgdGVzdHNfaW5faXRl
cmF0aW9uM10gPSAoCisgICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKKyAgICAgICAg
ICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSksIFJlcGVhdEZsYWcoMyld
KSkKKworICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0c19pbl9pdGVyYXRpb24xICE9IHRlc3RzX2luX2l0
ZXJhdGlvbjIsCisgICAgICAgICAgICAgICAgIHRlc3RzX2luX2l0ZXJhdGlvbjEpCisgICAgc2Vs
Zi5hc3NlcnRfKHRlc3RzX2luX2l0ZXJhdGlvbjEgIT0gdGVzdHNfaW5faXRlcmF0aW9uMywKKyAg
ICAgICAgICAgICAgICAgdGVzdHNfaW5faXRlcmF0aW9uMSkKKyAgICBzZWxmLmFzc2VydF8odGVz
dHNfaW5faXRlcmF0aW9uMiAhPSB0ZXN0c19pbl9pdGVyYXRpb24zLAorICAgICAgICAgICAgICAg
ICB0ZXN0c19pbl9pdGVyYXRpb24yKQorCisgIGRlZiB0ZXN0U2h1ZmZsZVNoYXJkZWRUZXN0c1By
ZXNlcnZlc1BhcnRpdGlvbihzZWxmKToKKyAgICAjIElmIHdlIHJ1biBNIHRlc3RzIG9uIE4gc2hh
cmRzLCB0aGUgc2FtZSBNIHRlc3RzIHNob3VsZCBiZSBydW4gaW4KKyAgICAjIHRvdGFsLCByZWdh
cmRsZXNzIG9mIHRoZSByYW5kb20gc2VlZHMgdXNlZCBieSB0aGUgc2hhcmRzLgorICAgIFt0ZXN0
czFdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRF9JTkRFWF9F
TlZfVkFSOiAnMCd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtT
aHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0pCisgICAgW3Rlc3RzMl0gPSBHZXRUZXN0
c0ZvckFsbEl0ZXJhdGlvbnMoe1RPVEFMX1NIQVJEU19FTlZfVkFSOiAnMycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcxJ30s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NodWZmbGVGbGFnKCks
IFJhbmRvbVNlZWRGbGFnKDIwKV0pCisgICAgW3Rlc3RzM10gPSBHZXRUZXN0c0ZvckFsbEl0ZXJh
dGlvbnMoe1RPVEFMX1NIQVJEU19FTlZfVkFSOiAnMycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcyJ30sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRG
bGFnKDI1KV0pCisgICAgc29ydGVkX3NoYXJkZWRfdGVzdHMgPSB0ZXN0czEgKyB0ZXN0czIgKyB0
ZXN0czMKKyAgICBzb3J0ZWRfc2hhcmRlZF90ZXN0cy5zb3J0KCkKKyAgICBzb3J0ZWRfYWN0aXZl
X3Rlc3RzID0gW10KKyAgICBzb3J0ZWRfYWN0aXZlX3Rlc3RzLmV4dGVuZChBQ1RJVkVfVEVTVFMp
CisgICAgc29ydGVkX2FjdGl2ZV90ZXN0cy5zb3J0KCkKKyAgICBzZWxmLmFzc2VydEVxdWFsKHNv
cnRlZF9hY3RpdmVfdGVzdHMsIHNvcnRlZF9zaGFyZGVkX3Rlc3RzKQorCitpZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8uY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0Xy5jYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xZmU1ZjZhYmEyYTVlMGZmY2FiOTE1ZTQ2MzhkMjNmNThjZjQ4ZmYwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXNo
dWZmbGUtdGVzdF8uY2MKQEAgLTAsMCArMSwxMDIgQEAKKy8vIENvcHlyaWdodCAyMDA5LCBHb29n
bGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBWZXJpZmllcyB0aGF0IHRlc3Qgc2h1ZmZsaW5n
IHdvcmtzLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsKKwordXNp
bmcgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyOwordXNpbmcgOjp0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6TWVzc2FnZTsKK3VzaW5nIDo6dGVzdGlu
Zzo6VGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzOwordXNpbmcgOjp0
ZXN0aW5nOjpUZXN0SW5mbzsKK3VzaW5nIDo6dGVzdGluZzo6VW5pdFRlc3Q7Cit1c2luZyA6OnRl
c3Rpbmc6OmludGVybmFsOjpzY29wZWRfcHRyOworCisvLyBUaGUgdGVzdCBtZXRob2RzIGFyZSBl
bXB0eSwgYXMgdGhlIHNvbGUgcHVycG9zZSBvZiB0aGlzIHByb2dyYW0gaXMKKy8vIHRvIHByaW50
IHRoZSB0ZXN0IG5hbWVzIGJlZm9yZS9hZnRlciBzaHVmZmxpbmcuCisKK2NsYXNzIEEgOiBwdWJs
aWMgVGVzdCB7fTsKK1RFU1RfRihBLCBBKSB7fQorVEVTVF9GKEEsIEIpIHt9CisKK1RFU1QoQURl
YXRoVGVzdCwgQSkge30KK1RFU1QoQURlYXRoVGVzdCwgQikge30KK1RFU1QoQURlYXRoVGVzdCwg
Qykge30KKworVEVTVChCLCBBKSB7fQorVEVTVChCLCBCKSB7fQorVEVTVChCLCBDKSB7fQorVEVT
VChCLCBESVNBQkxFRF9EKSB7fQorVEVTVChCLCBESVNBQkxFRF9FKSB7fQorCitURVNUKEJEZWF0
aFRlc3QsIEEpIHt9CitURVNUKEJEZWF0aFRlc3QsIEIpIHt9CisKK1RFU1QoQywgQSkge30KK1RF
U1QoQywgQikge30KK1RFU1QoQywgQykge30KK1RFU1QoQywgRElTQUJMRURfRCkge30KKworVEVT
VChDRGVhdGhUZXN0LCBBKSB7fQorCitURVNUKERJU0FCTEVEX0QsIEEpIHt9CitURVNUKERJU0FC
TEVEX0QsIERJU0FCTEVEX0IpIHt9CisKKy8vIFRoaXMgcHJpbnRlciBwcmludHMgdGhlIGZ1bGwg
dGVzdCBuYW1lcyBvbmx5LCBzdGFydGluZyBlYWNoIHRlc3QKKy8vIGl0ZXJhdGlvbiB3aXRoIGEg
Ii0tLS0iIG1hcmtlci4KK2NsYXNzIFRlc3ROYW1lUHJpbnRlciA6IHB1YmxpYyBFbXB0eVRlc3RF
dmVudExpc3RlbmVyIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25T
dGFydChjb25zdCBVbml0VGVzdCYgLyogdW5pdF90ZXN0ICovLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IC8qIGl0ZXJhdGlvbiAqLykgeworICAgIHByaW50ZigiLS0t
LVxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8m
IHRlc3RfaW5mbykgeworICAgIHByaW50ZigiJXMuJXNcbiIsIHRlc3RfaW5mby50ZXN0X2Nhc2Vf
bmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgfQorfTsKKworfSAgLy8gbmFtZXNwYWNlCisK
K2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICBJbml0R29vZ2xlVGVzdCgmYXJn
YywgYXJndik7CisKKyAgLy8gUmVwbGFjZXMgdGhlIGRlZmF1bHQgcHJpbnRlciB3aXRoIFRlc3RO
YW1lUHJpbnRlciwgd2hpY2ggcHJpbnRzCisgIC8vIHRoZSB0ZXN0IG5hbWUgb25seS4KKyAgVGVz
dEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMgPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlz
dGVuZXJzKCk7CisgIGRlbGV0ZSBsaXN0ZW5lcnMuUmVsZWFzZShsaXN0ZW5lcnMuZGVmYXVsdF9y
ZXN1bHRfcHJpbnRlcigpKTsKKyAgbGlzdGVuZXJzLkFwcGVuZChuZXcgVGVzdE5hbWVQcmludGVy
KTsKKworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRlc3QtcGFydC10ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRlc3QtcGFydC10ZXN0LmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNkMmQ2ZjllODU4ZjUyNzliYTVhMTZhNWQxYTZlMzdhZmZlOTEwYWQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdGVzdC1w
YXJ0LXRlc3QuY2MKQEAgLTAsMCArMSwyMDUgQEAKKy8vIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJ
bmMuCisvLyBBbGwgUmlnaHRzIFJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgiCisK
KyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCit1c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwordXNp
bmcgdGVzdGluZzo6VGVzdDsKK3VzaW5nIHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OwordXNpbmcg
dGVzdGluZzo6VGVzdFBhcnRSZXN1bHRBcnJheTsKKworbmFtZXNwYWNlIHsKKworLy8gVGVzdHMg
dGhlIFRlc3RQYXJ0UmVzdWx0IGNsYXNzLgorCisvLyBUaGUgdGVzdCBmaXh0dXJlIGZvciB0ZXN0
aW5nIFRlc3RQYXJ0UmVzdWx0LgorY2xhc3MgVGVzdFBhcnRSZXN1bHRUZXN0IDogcHVibGljIFRl
c3QgeworIHByb3RlY3RlZDoKKyAgVGVzdFBhcnRSZXN1bHRUZXN0KCkKKyAgICAgIDogcjFfKFRl
c3RQYXJ0UmVzdWx0OjprU3VjY2VzcywgImZvby9iYXIuY2MiLCAxMCwgIlN1Y2Nlc3MhIiksCisg
ICAgICAgIHIyXyhUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwgImZvby9iYXIuY2Mi
LCAtMSwgIkZhaWx1cmUhIiksCisgICAgICAgIHIzXyhUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFp
bHVyZSwgTlVMTCwgLTEsICJGYWlsdXJlISIpIHt9CisKKyAgVGVzdFBhcnRSZXN1bHQgcjFfLCBy
Ml8sIHIzXzsKK307CisKKworVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgQ29uc3RydWN0b3JX
b3JrcykgeworICBNZXNzYWdlIG1lc3NhZ2U7CisgIG1lc3NhZ2UgPDwgInNvbWV0aGluZyBpcyB0
ZXJyaWJseSB3cm9uZyI7CisgIG1lc3NhZ2UgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHRl
c3Rpbmc6OmludGVybmFsOjprU3RhY2tUcmFjZU1hcmtlcik7CisgIG1lc3NhZ2UgPDwgInNvbWUg
dW5pbXBvcnRhbnQgc3RhY2sgdHJhY2UiOworCisgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IHJlc3Vs
dChUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJzb21lX2ZpbGUuY2MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLkdldFN0cmluZygpLmNf
c3RyKCkpOworCisgIEVYUEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwg
cmVzdWx0LnR5cGUoKSk7CisgIEVYUEVDVF9TVFJFUSgic29tZV9maWxlLmNjIiwgcmVzdWx0LmZp
bGVfbmFtZSgpKTsKKyAgRVhQRUNUX0VRKDQyLCByZXN1bHQubGluZV9udW1iZXIoKSk7CisgIEVY
UEVDVF9TVFJFUShtZXNzYWdlLkdldFN0cmluZygpLmNfc3RyKCksIHJlc3VsdC5tZXNzYWdlKCkp
OworICBFWFBFQ1RfU1RSRVEoInNvbWV0aGluZyBpcyB0ZXJyaWJseSB3cm9uZyIsIHJlc3VsdC5z
dW1tYXJ5KCkpOworfQorCitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBSZXN1bHRBY2Nlc3Nv
cnNXb3JrKSB7CisgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IHN1Y2Nlc3MoVGVzdFBhcnRSZXN1bHQ6
OmtTdWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlLmNjIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAibWVzc2FnZSIpOworICBFWFBFQ1RfVFJVRShzdWNjZXNzLnBhc3NlZCgpKTsKKyAg
RVhQRUNUX0ZBTFNFKHN1Y2Nlc3MuZmFpbGVkKCkpOworICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcy5u
b25mYXRhbGx5X2ZhaWxlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MuZmF0YWxseV9mYWls
ZWQoKSk7CisKKyAgY29uc3QgVGVzdFBhcnRSZXN1bHQgbm9uZmF0YWxfZmFpbHVyZShUZXN0UGFy
dFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZmlsZS5jYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3Nh
Z2UiKTsKKyAgRVhQRUNUX0ZBTFNFKG5vbmZhdGFsX2ZhaWx1cmUucGFzc2VkKCkpOworICBFWFBF
Q1RfVFJVRShub25mYXRhbF9mYWlsdXJlLmZhaWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUobm9uZmF0
YWxfZmFpbHVyZS5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKG5vbmZhdGFs
X2ZhaWx1cmUuZmF0YWxseV9mYWlsZWQoKSk7CisKKyAgY29uc3QgVGVzdFBhcnRSZXN1bHQgZmF0
YWxfZmFpbHVyZShUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5jYyIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Im1lc3NhZ2UiKTsKKyAgRVhQRUNUX0ZBTFNFKGZhdGFsX2ZhaWx1cmUucGFzc2VkKCkpOworICBF
WFBFQ1RfVFJVRShmYXRhbF9mYWlsdXJlLmZhaWxlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKGZhdGFs
X2ZhaWx1cmUubm9uZmF0YWxseV9mYWlsZWQoKSk7CisgIEVYUEVDVF9UUlVFKGZhdGFsX2ZhaWx1
cmUuZmF0YWxseV9mYWlsZWQoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0Ojp0eXBl
KCkuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCB0eXBlKSB7CisgIEVYUEVDVF9FUShUZXN0
UGFydFJlc3VsdDo6a1N1Y2Nlc3MsIHIxXy50eXBlKCkpOworICBFWFBFQ1RfRVEoVGVzdFBhcnRS
ZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsIHIyXy50eXBlKCkpOworICBFWFBFQ1RfRVEoVGVzdFBh
cnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsIHIzXy50eXBlKCkpOworfQorCisvLyBUZXN0cyBUZXN0
UGFydFJlc3VsdDo6ZmlsZV9uYW1lKCkuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBmaWxl
X25hbWUpIHsKKyAgRVhQRUNUX1NUUkVRKCJmb28vYmFyLmNjIiwgcjFfLmZpbGVfbmFtZSgpKTsK
KyAgRVhQRUNUX1NUUkVRKE5VTEwsIHIzXy5maWxlX25hbWUoKSk7Cit9CisKKy8vIFRlc3RzIFRl
c3RQYXJ0UmVzdWx0OjpsaW5lX251bWJlcigpLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwg
bGluZV9udW1iZXIpIHsKKyAgRVhQRUNUX0VRKDEwLCByMV8ubGluZV9udW1iZXIoKSk7CisgIEVY
UEVDVF9FUSgtMSwgcjJfLmxpbmVfbnVtYmVyKCkpOworfQorCisvLyBUZXN0cyBUZXN0UGFydFJl
c3VsdDo6bWVzc2FnZSgpLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgbWVzc2FnZSkgewor
ICBFWFBFQ1RfU1RSRVEoIlN1Y2Nlc3MhIiwgcjFfLm1lc3NhZ2UoKSk7Cit9CisKKy8vIFRlc3Rz
IFRlc3RQYXJ0UmVzdWx0OjpwYXNzZWQoKS4KK1RFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIFBh
c3NlZCkgeworICBFWFBFQ1RfVFJVRShyMV8ucGFzc2VkKCkpOworICBFWFBFQ1RfRkFMU0UocjJf
LnBhc3NlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHIzXy5wYXNzZWQoKSk7Cit9CisKKy8vIFRlc3Rz
IFRlc3RQYXJ0UmVzdWx0OjpmYWlsZWQoKS4KK1RFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIEZh
aWxlZCkgeworICBFWFBFQ1RfRkFMU0UocjFfLmZhaWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUocjJf
LmZhaWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUocjNfLmZhaWxlZCgpKTsKK30KKworLy8gVGVzdHMg
VGVzdFBhcnRSZXN1bHQ6OmZhdGFsbHlfZmFpbGVkKCkuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRU
ZXN0LCBGYXRhbGx5RmFpbGVkKSB7CisgIEVYUEVDVF9GQUxTRShyMV8uZmF0YWxseV9mYWlsZWQo
KSk7CisgIEVYUEVDVF9GQUxTRShyMl8uZmF0YWxseV9mYWlsZWQoKSk7CisgIEVYUEVDVF9UUlVF
KHIzXy5mYXRhbGx5X2ZhaWxlZCgpKTsKK30KKworLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6Om5v
bmZhdGFsbHlfZmFpbGVkKCkuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBOb25mYXRhbGx5
RmFpbGVkKSB7CisgIEVYUEVDVF9GQUxTRShyMV8ubm9uZmF0YWxseV9mYWlsZWQoKSk7CisgIEVY
UEVDVF9UUlVFKHIyXy5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHIzXy5u
b25mYXRhbGx5X2ZhaWxlZCgpKTsKK30KKworLy8gVGVzdHMgdGhlIFRlc3RQYXJ0UmVzdWx0QXJy
YXkgY2xhc3MuCisKK2NsYXNzIFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0IDogcHVibGljIFRlc3Qg
eworIHByb3RlY3RlZDoKKyAgVGVzdFBhcnRSZXN1bHRBcnJheVRlc3QoKQorICAgICAgOiByMV8o
VGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsICJmb28vYmFyLmNjIiwgLTEsICJGYWls
dXJlIDEiKSwKKyAgICAgICAgcjJfKFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLCAiZm9v
L2Jhci5jYyIsIC0xLCAiRmFpbHVyZSAyIikge30KKworICBjb25zdCBUZXN0UGFydFJlc3VsdCBy
MV8sIHIyXzsKK307CisKKy8vIFRlc3RzIHRoYXQgVGVzdFBhcnRSZXN1bHRBcnJheSBpbml0aWFs
bHkgaGFzIHNpemUgMC4KK1RFU1RfRihUZXN0UGFydFJlc3VsdEFycmF5VGVzdCwgSW5pdGlhbFNp
emVJc1plcm8pIHsKKyAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOworICBFWFBFQ1RfRVEo
MCwgcmVzdWx0cy5zaXplKCkpOworfQorCisvLyBUZXN0cyB0aGF0IFRlc3RQYXJ0UmVzdWx0QXJy
YXkgY29udGFpbnMgdGhlIGdpdmVuIFRlc3RQYXJ0UmVzdWx0CisvLyBhZnRlciBvbmUgQXBwZW5k
KCkgb3BlcmF0aW9uLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0LCBDb250YWluc0dp
dmVuUmVzdWx0QWZ0ZXJBcHBlbmQpIHsKKyAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOwor
ICByZXN1bHRzLkFwcGVuZChyMV8pOworICBFWFBFQ1RfRVEoMSwgcmVzdWx0cy5zaXplKCkpOwor
ICBFWFBFQ1RfU1RSRVEoIkZhaWx1cmUgMSIsIHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMCku
bWVzc2FnZSgpKTsKK30KKworLy8gVGVzdHMgdGhhdCBUZXN0UGFydFJlc3VsdEFycmF5IGNvbnRh
aW5zIHRoZSBnaXZlbiBUZXN0UGFydFJlc3VsdHMKKy8vIGFmdGVyIHR3byBBcHBlbmQoKSBvcGVy
YXRpb25zLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0LCBDb250YWluc0dpdmVuUmVz
dWx0c0FmdGVyVHdvQXBwZW5kcykgeworICBUZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7Cisg
IHJlc3VsdHMuQXBwZW5kKHIxXyk7CisgIHJlc3VsdHMuQXBwZW5kKHIyXyk7CisgIEVYUEVDVF9F
USgyLCByZXN1bHRzLnNpemUoKSk7CisgIEVYUEVDVF9TVFJFUSgiRmFpbHVyZSAxIiwgcmVzdWx0
cy5HZXRUZXN0UGFydFJlc3VsdCgwKS5tZXNzYWdlKCkpOworICBFWFBFQ1RfU1RSRVEoIkZhaWx1
cmUgMiIsIHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMSkubWVzc2FnZSgpKTsKK30KKwordHlw
ZWRlZiBUZXN0UGFydFJlc3VsdEFycmF5VGVzdCBUZXN0UGFydFJlc3VsdEFycmF5RGVhdGhUZXN0
OworCisvLyBUZXN0cyB0aGF0IHRoZSBwcm9ncmFtIGRpZXMgd2hlbiBHZXRUZXN0UGFydFJlc3Vs
dCgpIGlzIGNhbGxlZCB3aXRoCisvLyBhbiBpbnZhbGlkIGluZGV4LgorVEVTVF9GKFRlc3RQYXJ0
UmVzdWx0QXJyYXlEZWF0aFRlc3QsIERpZXNXaGVuSW5kZXhJc091dE9mQm91bmQpIHsKKyAgVGVz
dFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOworICByZXN1bHRzLkFwcGVuZChyMV8pOworCisgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQocmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgtMSksICIi
KTsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChyZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0
KDEpLCAiIik7Cit9CisKKy8vIEZJWE1FOiBBZGQgYSB0ZXN0IGZvciB0aGUgY2xhc3MgSGFzTmV3
RmF0YWxGYWlsdXJlSGVscGVyLgorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10ZXN0Ml90ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRlc3QyX3Rlc3QuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzJmOThkYzdkMWMzZTkwOTc1OGJhNjA3NzJlOTc3NDk4Y2U4MWZmMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10ZXN0Ml90ZXN0
LmNjCkBAIC0wLDAgKzEsNjEgQEAKKy8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
Ky8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
Ky8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworLy8KKy8vIFRlc3RzIGZvciBHb29nbGUgVGVzdCBpdHNlbGYuICBUaGlzIHZl
cmlmaWVzIHRoYXQgdGhlIGJhc2ljIGNvbnN0cnVjdHMgb2YKKy8vIEdvb2dsZSBUZXN0IHdvcmsu
CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImdvb2dsZXRlc3QtcGFyYW0t
dGVzdC10ZXN0LmgiCisKK3VzaW5nIDo6dGVzdGluZzo6VmFsdWVzOwordXNpbmcgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I7CisKKy8vIFRlc3RzIHRoYXQgZ2VuZXJhdG9ycyBk
ZWZpbmVkIGluIGEgZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXQKKy8vIGFyZSBmdW5jdGlvbmFs
LiBUaGUgdGVzdCB1c2luZyBleHRlcm5fZ2VuXzIgaXMgZGVmaW5lZAorLy8gaW4gZ29vZ2xldGVz
dC1wYXJhbS10ZXN0LXRlc3QuY2MuCitQYXJhbUdlbmVyYXRvcjxpbnQ+IGV4dGVybl9nZW5fMiA9
IFZhbHVlcygzMyk7CisKKy8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBj
YW4gYmUgZGVmaW5lZCBpbiBvbmUgdHJhbnNsYXRpb24gdW5pdAorLy8gYW5kIGluc3RhbnRpYXRl
ZCBpbiBhbm90aGVyLiBUaGUgdGVzdCBpcyBkZWZpbmVkIGluCisvLyBnb29nbGV0ZXN0LXBhcmFt
LXRlc3QtdGVzdC5jYyBhbmQgRXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCBmaXh0dXJlIGNsYXNz
IGlzCisvLyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oLgorSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoTXVsdGlwbGVzT2YzMywKKyAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVy
bmFsSW5zdGFudGlhdGlvblRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMzMs
IDY2KSk7CisKKy8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUg
aW5zdGFudGlhdGVkCisvLyBpbiBtdWx0aXBsZSB0cmFuc2xhdGlvbiB1bml0cy4gQW5vdGhlciBp
bnN0YW50aWF0aW9uIGlzIGRlZmluZWQKKy8vIGluIGdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0
LmNjIGFuZAorLy8gSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0IGZp
eHR1cmUgaXMgZGVmaW5lZCBpbgorLy8gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmgKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3Rh
bnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbHVlcyg0MiozLCA0Mio0LCA0Mio1KSk7CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3QucHkg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVy
ZS10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2Y2I5ZjZkYTMxZGVhZGZkN2VlZmQyMzVlOWIzN2RmMjlm
YjNiYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0LnB5CkBAIC0wLDAgKzEsMTY5IEBACisjIS91
c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJUZXN0cyBHb29nbGUg
VGVzdCdzIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQuCisK
K1RoaXMgc2NyaXB0IGludm9rZXMgZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfIChh
IHByb2dyYW0gd3JpdHRlbiB3aXRoCitHb29nbGUgVGVzdCkgd2l0aCBkaWZmZXJlbnQgZW52aXJv
bm1lbnRzIGFuZCBjb21tYW5kIGxpbmUgZmxhZ3MuCisiIiIKKworaW1wb3J0IG9zCitpbXBvcnQg
Z3Rlc3RfdGVzdF91dGlscworCisKKyMgQ29uc3RhbnRzLgorCisjIFRoZSBjb21tYW5kIGxpbmUg
ZmxhZyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUuCitU
SFJPV19PTl9GQUlMVVJFID0gJ2d0ZXN0X3Rocm93X29uX2ZhaWx1cmUnCisKKyMgUGF0aCB0byB0
aGUgZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfIHByb2dyYW0sIGNvbXBpbGVkIHdp
dGgKKyMgZXhjZXB0aW9ucyBkaXNhYmxlZC4KK0VYRV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5H
ZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisgICAgJ2dvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10
ZXN0XycpCisKKworIyBVdGlsaXRpZXMuCisKKworZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1
ZSk6CisgICIiIlNldHMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSBnaXZlbiB2YWx1ZTsg
dW5zZXRzIGl0IHdoZW4gdGhlCisgIGdpdmVuIHZhbHVlIGlzIE5vbmUuCisgICIiIgorCisgIGVu
dl92YXIgPSBlbnZfdmFyLnVwcGVyKCkKKyAgaWYgdmFsdWUgaXMgbm90IE5vbmU6CisgICAgb3Mu
ZW52aXJvbltlbnZfdmFyXSA9IHZhbHVlCisgIGVsaWYgZW52X3ZhciBpbiBvcy5lbnZpcm9uOgor
ICAgIGRlbCBvcy5lbnZpcm9uW2Vudl92YXJdCisKKworZGVmIFJ1bihjb21tYW5kKToKKyAgIiIi
UnVucyBhIGNvbW1hbmQ7IHJldHVybnMgVHJ1ZS9GYWxzZSBpZiBpdHMgZXhpdCBjb2RlIGlzL2lz
bid0IDAuIiIiCisKKyAgcHJpbnQgJ1J1bm5pbmcgIiVzIi4gLiAuJyAlICcgJy5qb2luKGNvbW1h
bmQpCisgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKKyAgcmV0dXJu
IHAuZXhpdGVkIGFuZCBwLmV4aXRfY29kZSA9PSAwCisKKworIyBUaGUgdGVzdHMuICBGSVhNRTog
cmVmYWN0b3IgdGhlIGNsYXNzIHRvIHNoYXJlIGNvbW1vbgorIyBsb2dpYyB3aXRoIGNvZGUgaW4g
Z29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0LnB5LgorY2xhc3MgVGhyb3dPbkZh
aWx1cmVUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJUZXN0cyB0aGUgdGhy
b3ctb24tZmFpbHVyZSBtb2RlLiIiIgorCisgIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwgZW52X3Zh
cl92YWx1ZSwgZmxhZ192YWx1ZSwgc2hvdWxkX2ZhaWwpOgorICAgICIiIlJ1bnMgZ29vZ2xldGVz
dC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfIGFuZCB2ZXJpZmllcyB0aGF0IGl0IGRvZXMKKyAgICAo
b3IgZG9lcyBub3QpIGV4aXQgd2l0aCBhIG5vbi16ZXJvIGNvZGUuCisKKyAgICBBcmdzOgorICAg
ICAgZW52X3Zhcl92YWx1ZTogICAgdmFsdWUgb2YgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUg
ZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlOyBOb25lIGlmIHRo
ZSB2YXJpYWJsZSBzaG91bGQgYmUgdW5zZXQuCisgICAgICBmbGFnX3ZhbHVlOiAgICAgICB2YWx1
ZSBvZiB0aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWc7CisgICAgICAgICAgICAgICAg
ICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBub3QgYmUgcHJlc2VudC4KKyAgICAgIHNo
b3VsZF9mYWlsOiAgICAgIFRydWUgaWZmIHRoZSBwcm9ncmFtIGlzIGV4cGVjdGVkIHRvIGZhaWwu
CisgICAgIiIiCisKKyAgICBTZXRFbnZWYXIoVEhST1dfT05fRkFJTFVSRSwgZW52X3Zhcl92YWx1
ZSkKKworICAgIGlmIGVudl92YXJfdmFsdWUgaXMgTm9uZToKKyAgICAgIGVudl92YXJfdmFsdWVf
bXNnID0gJyBpcyBub3Qgc2V0JworICAgIGVsc2U6CisgICAgICBlbnZfdmFyX3ZhbHVlX21zZyA9
ICc9JyArIGVudl92YXJfdmFsdWUKKworICAgIGlmIGZsYWdfdmFsdWUgaXMgTm9uZToKKyAgICAg
IGZsYWcgPSAnJworICAgIGVsaWYgZmxhZ192YWx1ZSA9PSAnMCc6CisgICAgICBmbGFnID0gJy0t
JXM9MCcgJSBUSFJPV19PTl9GQUlMVVJFCisgICAgZWxzZToKKyAgICAgIGZsYWcgPSAnLS0lcycg
JSBUSFJPV19PTl9GQUlMVVJFCisKKyAgICBjb21tYW5kID0gW0VYRV9QQVRIXQorICAgIGlmIGZs
YWc6CisgICAgICBjb21tYW5kLmFwcGVuZChmbGFnKQorCisgICAgaWYgc2hvdWxkX2ZhaWw6Cisg
ICAgICBzaG91bGRfb3Jfbm90ID0gJ3Nob3VsZCcKKyAgICBlbHNlOgorICAgICAgc2hvdWxkX29y
X25vdCA9ICdzaG91bGQgbm90JworCisgICAgZmFpbGVkID0gbm90IFJ1bihjb21tYW5kKQorCisg
ICAgU2V0RW52VmFyKFRIUk9XX09OX0ZBSUxVUkUsIE5vbmUpCisKKyAgICBtc2cgPSAoJ3doZW4g
JXMlcywgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4gIiVzIiAlcyBjYXVzZSBhIG5vbi16ZXJvICcK
KyAgICAgICAgICAgJ2V4aXQgY29kZS4nICUKKyAgICAgICAgICAgKFRIUk9XX09OX0ZBSUxVUkUs
IGVudl92YXJfdmFsdWVfbXNnLCAnICcuam9pbihjb21tYW5kKSwKKyAgICAgICAgICAgIHNob3Vs
ZF9vcl9ub3QpKQorICAgIHNlbGYuYXNzZXJ0XyhmYWlsZWQgPT0gc2hvdWxkX2ZhaWwsIG1zZykK
KworICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcihzZWxmKToKKyAgICAiIiJUZXN0cyB0aGUgYmVo
YXZpb3Igb2YgdGhlIGRlZmF1bHQgbW9kZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVu
dl92YXJfdmFsdWU9Tm9uZSwgZmxhZ192YWx1ZT1Ob25lLCBzaG91bGRfZmFpbD1GYWxzZSkKKwor
ICBkZWYgdGVzdFRocm93T25GYWlsdXJlRW52VmFyKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5n
IHRoZSBHVEVTVF9USFJPV19PTl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlhYmxlLiIiIgorCisg
ICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ192YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWls
PUZhbHNlKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAorICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBz
aG91bGRfZmFpbD1UcnVlKQorCisgIGRlZiB0ZXN0VGhyb3dPbkZhaWx1cmVGbGFnKHNlbGYpOgor
ICAgICIiIlRlc3RzIHVzaW5nIHRoZSAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmUgZmxhZy4iIiIK
KworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAg
ICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBzaG91bGRf
ZmFpbD1GYWxzZSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCisg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkX2ZhaWw9VHJ1ZSkKKworICBkZWYgdGVzdFRocm93T25GYWlsdXJlRmxhZ092ZXJy
aWRlc0VudlZhcihzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0IC0tZ3Rlc3RfdGhyb3dfb25fZmFp
bHVyZSBvdmVycmlkZXMgR1RFU1RfVEhST1dfT05fRkFJTFVSRS4iIiIKKworICAgIHNlbGYuUnVu
QW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdf
dmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPUZhbHNlKQorICAg
IHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAg
ICAgIGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPVRy
dWUpCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCisgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAgc2hvdWxk
X2ZhaWw9RmFsc2UpCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCisg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkX2ZhaWw9VHJ1ZSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBn
dGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8uY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0Xy5jYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mOWEyYzY0NDhhMjljYTI5NjQ5YTEyNDgwNTlhOTg1YTUxYWY4NjM2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRo
cm93LW9uLWZhaWx1cmUtdGVzdF8uY2MKQEAgLTAsMCArMSw3MSBAQAorLy8gQ29weXJpZ2h0IDIw
MDksIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisv
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIFRlc3RzIEdvb2dsZSBUZXN0J3Mg
dGhyb3ctb24tZmFpbHVyZSBtb2RlIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4KKy8vCisvLyBU
aGlzIHByb2dyYW0gbXVzdCBiZSBjb21waWxlZCB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQuICBJ
dCB3aWxsIGJlCisvLyBpbnZva2VkIGJ5IGdvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0
LnB5LCBhbmQgaXMgZXhwZWN0ZWQgdG8gZXhpdAorLy8gd2l0aCBub24temVybyBpbiB0aGUgdGhy
b3ctb24tZmFpbHVyZSBtb2RlIG9yIDAgb3RoZXJ3aXNlLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+ICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBm
Zmx1c2gsIGZwcmludGYsIE5VTEwsIGV0Yy4KKyNpbmNsdWRlIDxzdGRsaWIuaD4gICAgICAgICAg
ICAgICAgICAgICAvLyBmb3IgZXhpdAorI2luY2x1ZGUgPGV4Y2VwdGlvbj4gICAgICAgICAgICAg
ICAgICAgIC8vIGZvciBzZXRfdGVybWluYXRlCisKKy8vIFRoaXMgdGVybWluYXRlIGhhbmRsZXIg
YWJvcnRzIHRoZSBwcm9ncmFtIHVzaW5nIGV4aXQoKSByYXRoZXIgdGhhbiBhYm9ydCgpLgorLy8g
VGhpcyBhdm9pZHMgc2hvd2luZyBwb3AtdXBzIG9uIFdpbmRvd3Mgc3lzdGVtcyBhbmQgY29yZSBk
dW1wcyBvbiBVbml4LWxpa2UKKy8vIG9uZXMuCit2b2lkIFRlcm1pbmF0ZUhhbmRsZXIoKSB7Cisg
IGZwcmludGYoc3RkZXJyLCAiJXNcbiIsICJVbmhhbmRsZWQgQysrIGV4Y2VwdGlvbiB0ZXJtaW5h
dGluZyB0aGUgcHJvZ3JhbS4iKTsKKyAgZmZsdXNoKE5VTEwpOworICBleGl0KDEpOworfQorCitp
bnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9O
UworICBzdGQ6OnNldF90ZXJtaW5hdGUoJlRlcm1pbmF0ZUhhbmRsZXIpOworI2VuZGlmCisgIHRl
c3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICAvLyBXZSB3YW50IHRvIGVu
c3VyZSB0aGF0IHBlb3BsZSBjYW4gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW4KKyAgLy8g
b3RoZXIgdGVzdGluZyBmcmFtZXdvcmtzLCBhcyBsb25nIGFzIHRoZXkgaW5pdGlhbGl6ZSBHb29n
bGUgVGVzdAorICAvLyBwcm9wZXJseSBhbmQgc2V0IHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUu
ICBUaGVyZWZvcmUsIHdlIGRvbid0CisgIC8vIHVzZSBHb29nbGUgVGVzdCdzIGNvbnN0cnVjdHMg
Zm9yIGRlZmluaW5nIGFuZCBydW5uaW5nIHRlc3RzCisgIC8vIChlLmcuIFRFU1QgYW5kIFJVTl9B
TExfVEVTVFMpIGhlcmUuCisKKyAgLy8gSW4gdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRo
IGV4Y2VwdGlvbnMgZGlzYWJsZWQsIHRoaXMKKyAgLy8gYXNzZXJ0aW9uIHdpbGwgY2F1c2UgdGhl
IHByb2dyYW0gdG8gZXhpdCB3aXRoIGEgbm9uLXplcm8gY29kZS4KKyAgRVhQRUNUX0VRKDIsIDMp
OworCisgIC8vIFdoZW4gbm90IGluIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUsIHRoZSBjb250
cm9sIHdpbGwgcmVhY2gKKyAgLy8gaGVyZS4KKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdHVwbGUtdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10dXBsZS10ZXN0LmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRkODJjMTYwZjE3N2Q2ZjNiYWRkNzcwNjRhYjhjN2U5OGJkMjk3NjcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdHVwbGUt
dGVzdC5jYwpAQCAtMCwwICsxLDMxOSBAQAorLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMu
CisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5o
IgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNw
YWNlIHsKKwordXNpbmcgOjpzdGQ6OnRyMTo6Z2V0OwordXNpbmcgOjpzdGQ6OnRyMTo6bWFrZV90
dXBsZTsKK3VzaW5nIDo6c3RkOjp0cjE6OnR1cGxlOwordXNpbmcgOjpzdGQ6OnRyMTo6dHVwbGVf
ZWxlbWVudDsKK3VzaW5nIDo6c3RkOjp0cjE6OnR1cGxlX3NpemU7Cit1c2luZyA6OnRlc3Rpbmc6
OlN0YXRpY0Fzc2VydFR5cGVFcTsKKworLy8gVGVzdHMgdGhhdCB0dXBsZV9lbGVtZW50PEssIHR1
cGxlPFQwLCBUMSwgLi4uLCBUTj4gPjo6dHlwZSByZXR1cm5zIFRLLgorVEVTVCh0dXBsZV9lbGVt
ZW50X1Rlc3QsIFJldHVybnNFbGVtZW50VHlwZSkgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50
LCB0dXBsZV9lbGVtZW50PDAsIHR1cGxlPGludCwgY2hhcj4gPjo6dHlwZT4oKTsKKyAgU3RhdGlj
QXNzZXJ0VHlwZUVxPGludCYsIHR1cGxlX2VsZW1lbnQ8MSwgdHVwbGU8ZG91YmxlLCBpbnQmPiA+
Ojp0eXBlPigpOworICBTdGF0aWNBc3NlcnRUeXBlRXE8Ym9vbCwgdHVwbGVfZWxlbWVudDwyLCB0
dXBsZTxkb3VibGUsIGludCwgYm9vbD4gPjo6dHlwZT4oKTsKK30KKworLy8gVGVzdHMgdGhhdCB0
dXBsZV9zaXplPFQ+Ojp2YWx1ZSBnaXZlcyB0aGUgbnVtYmVyIG9mIGZpZWxkcyBpbiB0dXBsZQor
Ly8gdHlwZSBULgorVEVTVCh0dXBsZV9zaXplX1Rlc3QsIFJldHVybnNOdW1iZXJPZkZpZWxkcykg
eworICBFWFBFQ1RfRVEoMCwgK3R1cGxlX3NpemU8dHVwbGU8PiA+Ojp2YWx1ZSk7CisgIEVYUEVD
VF9FUSgxLCArdHVwbGVfc2l6ZTx0dXBsZTx2b2lkKj4gPjo6dmFsdWUpOworICBFWFBFQ1RfRVEo
MSwgK3R1cGxlX3NpemU8dHVwbGU8Y2hhcj4gPjo6dmFsdWUpOworICBFWFBFQ1RfRVEoMSwgKyh0
dXBsZV9zaXplPHR1cGxlPHR1cGxlPGludCwgZG91YmxlPiA+ID46OnZhbHVlKSk7CisgIEVYUEVD
VF9FUSgyLCArKHR1cGxlX3NpemU8dHVwbGU8aW50JiwgY29uc3QgY2hhcj4gPjo6dmFsdWUpKTsK
KyAgRVhQRUNUX0VRKDMsICsodHVwbGVfc2l6ZTx0dXBsZTxjaGFyKiwgdm9pZCwgY29uc3QgYm9v
bCY+ID46OnZhbHVlKSk7Cit9CisKKy8vIFRlc3RzIGNvbXBhcmluZyBhIHR1cGxlIHdpdGggaXRz
ZWxmLgorVEVTVChDb21wYXJpc29uVGVzdCwgQ29tcGFyZXNXaXRoU2VsZikgeworICBjb25zdCB0
dXBsZTxpbnQsIGNoYXIsIGJvb2w+IGEoNSwgJ2EnLCBmYWxzZSk7CisKKyAgRVhQRUNUX1RSVUUo
YSA9PSBhKTsKKyAgRVhQRUNUX0ZBTFNFKGEgIT0gYSk7Cit9CisKKy8vIFRlc3RzIGNvbXBhcmlu
ZyB0d28gdHVwbGVzIHdpdGggdGhlIHNhbWUgdmFsdWUuCitURVNUKENvbXBhcmlzb25UZXN0LCBD
b21wYXJlc0VxdWFsVHVwbGVzKSB7CisgIGNvbnN0IHR1cGxlPGludCwgYm9vbD4gYSg1LCB0cnVl
KSwgYig1LCB0cnVlKTsKKworICBFWFBFQ1RfVFJVRShhID09IGIpOworICBFWFBFQ1RfRkFMU0Uo
YSAhPSBiKTsKK30KKworLy8gVGVzdHMgY29tcGFyaW5nIHR3byBkaWZmZXJlbnQgdHVwbGVzIHRo
YXQgaGF2ZSBubyByZWZlcmVuY2UgZmllbGRzLgorVEVTVChDb21wYXJpc29uVGVzdCwgQ29tcGFy
ZXNVbmVxdWFsVHVwbGVzV2l0aG91dFJlZmVyZW5jZUZpZWxkcykgeworICB0eXBlZGVmIHR1cGxl
PGNvbnN0IGludCwgY2hhcj4gRm9vVHVwbGU7CisKKyAgY29uc3QgRm9vVHVwbGUgYSgwLCAneCcp
OworICBjb25zdCBGb29UdXBsZSBiKDEsICdhJyk7CisKKyAgRVhQRUNUX1RSVUUoYSAhPSBiKTsK
KyAgRVhQRUNUX0ZBTFNFKGEgPT0gYik7CisKKyAgY29uc3QgRm9vVHVwbGUgYygxLCAnYicpOwor
CisgIEVYUEVDVF9UUlVFKGIgIT0gYyk7CisgIEVYUEVDVF9GQUxTRShiID09IGMpOworfQorCisv
LyBUZXN0cyBjb21wYXJpbmcgdHdvIGRpZmZlcmVudCB0dXBsZXMgdGhhdCBoYXZlIHJlZmVyZW5j
ZSBmaWVsZHMuCitURVNUKENvbXBhcmlzb25UZXN0LCBDb21wYXJlc1VuZXF1YWxUdXBsZXNXaXRo
UmVmZXJlbmNlRmllbGRzKSB7CisgIHR5cGVkZWYgdHVwbGU8aW50JiwgY29uc3QgY2hhciY+IEZv
b1R1cGxlOworCisgIGludCBpID0gNTsKKyAgY29uc3QgY2hhciBjaCA9ICdhJzsKKyAgY29uc3Qg
Rm9vVHVwbGUgYShpLCBjaCk7CisKKyAgaW50IGogPSA2OworICBjb25zdCBGb29UdXBsZSBiKGos
IGNoKTsKKworICBFWFBFQ1RfVFJVRShhICE9IGIpOworICBFWFBFQ1RfRkFMU0UoYSA9PSBiKTsK
KworICBqID0gNTsKKyAgY29uc3QgY2hhciBjaDIgPSAnYic7CisgIGNvbnN0IEZvb1R1cGxlIGMo
aiwgY2gyKTsKKworICBFWFBFQ1RfVFJVRShiICE9IGMpOworICBFWFBFQ1RfRkFMU0UoYiA9PSBj
KTsKK30KKworLy8gVGVzdHMgdGhhdCBhIHR1cGxlIGZpZWxkIHdpdGggYSByZWZlcmVuY2UgdHlw
ZSBpcyBhbiBhbGlhcyBvZiB0aGUKKy8vIHZhcmlhYmxlIGl0J3Mgc3VwcG9zZWQgdG8gcmVmZXJl
bmNlLgorVEVTVChSZWZlcmVuY2VGaWVsZFRlc3QsIElzQWxpYXNPZlJlZmVyZW5jZWRWYXJpYWJs
ZSkgeworICBpbnQgbiA9IDA7CisgIHR1cGxlPGJvb2wsIGludCY+IHQodHJ1ZSwgbik7CisKKyAg
biA9IDE7CisgIEVYUEVDVF9FUShuLCBnZXQ8MT4odCkpCisgICAgICA8PCAiQ2hhbmdpbmcgYSB1
bmRlcmx5aW5nIHZhcmlhYmxlIHNob3VsZCB1cGRhdGUgdGhlIHJlZmVyZW5jZSBmaWVsZC4iOwor
CisgIC8vIE1ha2VzIHN1cmUgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gZG9lc24ndCBkbyBhbnl0
aGluZyBmdW5ueSB3aXRoCisgIC8vIHRoZSAmIG9wZXJhdG9yIGZvciB0aGUgcmV0dXJuIHR5cGUg
b2YgZ2V0PD4oKS4KKyAgRVhQRUNUX0VRKCZuLCAmKGdldDwxPih0KSkpCisgICAgICA8PCAiVGhl
IGFkZHJlc3Mgb2YgYSByZWZlcmVuY2UgZmllbGQgc2hvdWxkIGVxdWFsIHRoZSBhZGRyZXNzIG9m
ICIKKyAgICAgIDw8ICJ0aGUgdW5kZXJseWluZyB2YXJpYWJsZS4iOworCisgIGdldDwxPih0KSA9
IDI7CisgIEVYUEVDVF9FUSgyLCBuKQorICAgICAgPDwgIkNoYW5naW5nIGEgcmVmZXJlbmNlIGZp
ZWxkIHNob3VsZCB1cGRhdGUgdGhlIHVuZGVybHlpbmcgdmFyaWFibGUuIjsKK30KKworLy8gVGVz
dHMgdGhhdCB0dXBsZSdzIGRlZmF1bHQgY29uc3RydWN0b3IgZGVmYXVsdCBpbml0aWFsaXplcyBl
YWNoIGZpZWxkLgorLy8gVGhpcyB0ZXN0IG5lZWRzIHRvIGNvbXBpbGUgd2l0aG91dCBnZW5lcmF0
aW5nIHdhcm5pbmdzLgorVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgRGVmYXVsdENvbnN0cnVj
dG9yRGVmYXVsdEluaXRpYWxpemVzRWFjaEZpZWxkKSB7CisgIC8vIFRoZSBUUjEgcmVwb3J0IHJl
cXVpcmVzIHRoYXQgdHVwbGUncyBkZWZhdWx0IGNvbnN0cnVjdG9yIGRlZmF1bHQKKyAgLy8gaW5p
dGlhbGl6ZXMgZWFjaCBmaWVsZCwgZXZlbiBpZiBpdCdzIGEgcHJpbWl0aXZlIHR5cGUuICBJZiB0
aGUKKyAgLy8gaW1wbGVtZW50YXRpb24gZm9yZ2V0cyB0byBkbyB0aGlzLCB0aGlzIHRlc3Qgd2ls
bCBjYXRjaCBpdCBieQorICAvLyBnZW5lcmF0aW5nIHdhcm5pbmdzIGFib3V0IHVzaW5nIHVuaW5p
dGlhbGl6ZWQgdmFyaWFibGVzIChhc3N1bWluZworICAvLyBhIGRlY2VudCBjb21waWxlcikuCisK
KyAgdHVwbGU8PiBlbXB0eTsKKworICB0dXBsZTxpbnQ+IGExLCBiMTsKKyAgYjEgPSBhMTsKKyAg
RVhQRUNUX0VRKDAsIGdldDwwPihiMSkpOworCisgIHR1cGxlPGludCwgZG91YmxlPiBhMiwgYjI7
CisgIGIyID0gYTI7CisgIEVYUEVDVF9FUSgwLCBnZXQ8MD4oYjIpKTsKKyAgRVhQRUNUX0VRKDAu
MCwgZ2V0PDE+KGIyKSk7CisKKyAgdHVwbGU8ZG91YmxlLCBjaGFyLCBib29sKj4gYTMsIGIzOwor
ICBiMyA9IGEzOworICBFWFBFQ1RfRVEoMC4wLCBnZXQ8MD4oYjMpKTsKKyAgRVhQRUNUX0VRKCdc
MCcsIGdldDwxPihiMykpOworICBFWFBFQ1RfVFJVRShnZXQ8Mj4oYjMpID09IE5VTEwpOworCisg
IHR1cGxlPGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludD4g
YTEwLCBiMTA7CisgIGIxMCA9IGExMDsKKyAgRVhQRUNUX0VRKDAsIGdldDwwPihiMTApKTsKKyAg
RVhQRUNUX0VRKDAsIGdldDwxPihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDwyPihiMTApKTsK
KyAgRVhQRUNUX0VRKDAsIGdldDwzPihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDw0PihiMTAp
KTsKKyAgRVhQRUNUX0VRKDAsIGdldDw1PihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDw2Pihi
MTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDw3PihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDw4
PihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDw5PihiMTApKTsKK30KKworLy8gVGVzdHMgY29u
c3RydWN0aW5nIGEgdHVwbGUgZnJvbSBpdHMgZmllbGRzLgorVEVTVChUdXBsZUNvbnN0cnVjdG9y
VGVzdCwgQ29uc3RydWN0c0Zyb21GaWVsZHMpIHsKKyAgaW50IG4gPSAxOworICAvLyBSZWZlcmVu
Y2UgZmllbGQuCisgIHR1cGxlPGludCY+IGEobik7CisgIEVYUEVDVF9FUSgmbiwgJihnZXQ8MD4o
YSkpKTsKKworICAvLyBOb24tcmVmZXJlbmNlIGZpZWxkcy4KKyAgdHVwbGU8aW50LCBjaGFyPiBi
KDUsICdhJyk7CisgIEVYUEVDVF9FUSg1LCBnZXQ8MD4oYikpOworICBFWFBFQ1RfRVEoJ2EnLCBn
ZXQ8MT4oYikpOworCisgIC8vIENvbnN0IHJlZmVyZW5jZSBmaWVsZC4KKyAgY29uc3QgaW50IG0g
PSAyOworICB0dXBsZTxib29sLCBjb25zdCBpbnQmPiBjKHRydWUsIG0pOworICBFWFBFQ1RfVFJV
RShnZXQ8MD4oYykpOworICBFWFBFQ1RfRVEoJm0sICYoZ2V0PDE+KGMpKSk7Cit9CisKKy8vIFRl
c3RzIHR1cGxlJ3MgY29weSBjb25zdHJ1Y3Rvci4KK1RFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3Qs
IENvcHlDb25zdHJ1Y3RvcikgeworICB0dXBsZTxkb3VibGUsIGJvb2w+IGEoMC4wLCB0cnVlKTsK
KyAgdHVwbGU8ZG91YmxlLCBib29sPiBiKGEpOworCisgIEVYUEVDVF9ET1VCTEVfRVEoMC4wLCBn
ZXQ8MD4oYikpOworICBFWFBFQ1RfVFJVRShnZXQ8MT4oYikpOworfQorCisvLyBUZXN0cyBjb25z
dHJ1Y3RpbmcgYSB0dXBsZSBmcm9tIGFub3RoZXIgdHVwbGUgdGhhdCBoYXMgYSBjb21wYXRpYmxl
CisvLyBidXQgZGlmZmVyZW50IHR5cGUuCitURVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBDb25z
dHJ1Y3RzRnJvbURpZmZlcmVudFR1cGxlVHlwZSkgeworICB0dXBsZTxpbnQsIGludCwgY2hhcj4g
YSgwLCAxLCAnYScpOworICB0dXBsZTxkb3VibGUsIGxvbmcsIGludD4gYihhKTsKKworICBFWFBF
Q1RfRE9VQkxFX0VRKDAuMCwgZ2V0PDA+KGIpKTsKKyAgRVhQRUNUX0VRKDEsIGdldDwxPihiKSk7
CisgIEVYUEVDVF9FUSgnYScsIGdldDwyPihiKSk7Cit9CisKKy8vIFRlc3RzIGNvbnN0cnVjdGlu
ZyBhIDItdHVwbGUgZnJvbSBhbiBzdGQ6OnBhaXIuCitURVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0
LCBDb25zdHJ1Y3RzRnJvbVBhaXIpIHsKKyAgOjpzdGQ6OnBhaXI8aW50LCBjaGFyPiBhKDEsICdh
Jyk7CisgIHR1cGxlPGludCwgY2hhcj4gYihhKTsKKyAgdHVwbGU8aW50LCBjb25zdCBjaGFyJj4g
YyhhKTsKK30KKworLy8gVGVzdHMgYXNzaWduaW5nIGEgdHVwbGUgdG8gYW5vdGhlciB0dXBsZSB3
aXRoIHRoZSBzYW1lIHR5cGUuCitURVNUKFR1cGxlQXNzaWdubWVudFRlc3QsIEFzc2lnbnNUb1Nh
bWVUdXBsZVR5cGUpIHsKKyAgY29uc3QgdHVwbGU8aW50LCBsb25nPiBhKDUsIDdMKTsKKyAgdHVw
bGU8aW50LCBsb25nPiBiOworICBiID0gYTsKKyAgRVhQRUNUX0VRKDUsIGdldDwwPihiKSk7Cisg
IEVYUEVDVF9FUSg3TCwgZ2V0PDE+KGIpKTsKK30KKworLy8gVGVzdHMgYXNzaWduaW5nIGEgdHVw
bGUgdG8gYW5vdGhlciB0dXBsZSB3aXRoIGEgZGlmZmVyZW50IGJ1dAorLy8gY29tcGF0aWJsZSB0
eXBlLgorVEVTVChUdXBsZUFzc2lnbm1lbnRUZXN0LCBBc3NpZ25zVG9EaWZmZXJlbnRUdXBsZVR5
cGUpIHsKKyAgY29uc3QgdHVwbGU8aW50LCBsb25nLCBib29sPiBhKDEsIDdMLCB0cnVlKTsKKyAg
dHVwbGU8bG9uZywgaW50LCBib29sPiBiOworICBiID0gYTsKKyAgRVhQRUNUX0VRKDFMLCBnZXQ8
MD4oYikpOworICBFWFBFQ1RfRVEoNywgZ2V0PDE+KGIpKTsKKyAgRVhQRUNUX1RSVUUoZ2V0PDI+
KGIpKTsKK30KKworLy8gVGVzdHMgYXNzaWduaW5nIGFuIHN0ZDo6cGFpciB0byBhIDItdHVwbGUu
CitURVNUKFR1cGxlQXNzaWdubWVudFRlc3QsIEFzc2lnbnNGcm9tUGFpcikgeworICBjb25zdCA6
OnN0ZDo6cGFpcjxpbnQsIGJvb2w+IGEoNSwgdHJ1ZSk7CisgIHR1cGxlPGludCwgYm9vbD4gYjsK
KyAgYiA9IGE7CisgIEVYUEVDVF9FUSg1LCBnZXQ8MD4oYikpOworICBFWFBFQ1RfVFJVRShnZXQ8
MT4oYikpOworCisgIHR1cGxlPGxvbmcsIGJvb2w+IGM7CisgIGMgPSBhOworICBFWFBFQ1RfRVEo
NUwsIGdldDwwPihjKSk7CisgIEVYUEVDVF9UUlVFKGdldDwxPihjKSk7Cit9CisKKy8vIEEgZml4
dHVyZSBmb3IgdGVzdGluZyBiaWcgdHVwbGVzLgorY2xhc3MgQmlnVHVwbGVUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdHlwZWRlZiB0dXBsZTxpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQ+IEJpZ1R1cGxlOworCisgIEJp
Z1R1cGxlVGVzdCgpIDoKKyAgICAgIGFfKDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIpLAor
ICAgICAgYl8oMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMykge30KKworICBCaWdUdXBsZSBh
XywgYl87Cit9OworCisvLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYmlnIHR1cGxlcy4KK1RFU1RfRihC
aWdUdXBsZVRlc3QsIENvbnN0cnVjdGlvbikgeworICBCaWdUdXBsZSBhOworICBCaWdUdXBsZSBi
KGJfKTsKK30KKworLy8gVGVzdHMgdGhhdCBnZXQ8Tj4odCkgcmV0dXJucyB0aGUgTi10aCAoMC1i
YXNlZCkgZmllbGQgb2YgdHVwbGUgdC4KK1RFU1RfRihCaWdUdXBsZVRlc3QsIGdldCkgeworICBF
WFBFQ1RfRVEoMSwgZ2V0PDA+KGFfKSk7CisgIEVYUEVDVF9FUSgyLCBnZXQ8OT4oYV8pKTsKKwor
ICAvLyBUZXN0cyB0aGF0IGdldCgpIHdvcmtzIG9uIGEgY29uc3QgdHVwbGUgdG9vLgorICBjb25z
dCBCaWdUdXBsZSBhKGFfKTsKKyAgRVhQRUNUX0VRKDEsIGdldDwwPihhKSk7CisgIEVYUEVDVF9F
USgyLCBnZXQ8OT4oYSkpOworfQorCisvLyBUZXN0cyBjb21wYXJpbmcgYmlnIHR1cGxlcy4KK1RF
U1RfRihCaWdUdXBsZVRlc3QsIENvbXBhcmlzb25zKSB7CisgIEVYUEVDVF9UUlVFKGFfID09IGFf
KTsKKyAgRVhQRUNUX0ZBTFNFKGFfICE9IGFfKTsKKworICBFWFBFQ1RfVFJVRShhXyAhPSBiXyk7
CisgIEVYUEVDVF9GQUxTRShhXyA9PSBiXyk7Cit9CisKK1RFU1QoTWFrZVR1cGxlVGVzdCwgV29y
a3NGb3JTY2FsYXJUeXBlcykgeworICB0dXBsZTxib29sLCBpbnQ+IGE7CisgIGEgPSBtYWtlX3R1
cGxlKHRydWUsIDUpOworICBFWFBFQ1RfVFJVRShnZXQ8MD4oYSkpOworICBFWFBFQ1RfRVEoNSwg
Z2V0PDE+KGEpKTsKKworICB0dXBsZTxjaGFyLCBpbnQsIGxvbmc+IGI7CisgIGIgPSBtYWtlX3R1
cGxlKCdhJywgJ2InLCA1KTsKKyAgRVhQRUNUX0VRKCdhJywgZ2V0PDA+KGIpKTsKKyAgRVhQRUNU
X0VRKCdiJywgZ2V0PDE+KGIpKTsKKyAgRVhQRUNUX0VRKDUsIGdldDwyPihiKSk7Cit9CisKK1RF
U1QoTWFrZVR1cGxlVGVzdCwgV29ya3NGb3JQb2ludGVycykgeworICBpbnQgYVtdID0geyAxLCAy
LCAzLCA0IH07CisgIGNvbnN0IGNoYXIqIGNvbnN0IHN0ciA9ICJoaSI7CisgIGludCogY29uc3Qg
cCA9IGE7CisKKyAgdHVwbGU8Y29uc3QgY2hhciosIGludCo+IHQ7CisgIHQgPSBtYWtlX3R1cGxl
KHN0ciwgcCk7CisgIEVYUEVDVF9FUShzdHIsIGdldDwwPih0KSk7CisgIEVYUEVDVF9FUShwLCBn
ZXQ8MT4odCkpOworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3QucHkgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0LnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjViN2QxZTc0ZjY3ZmNiMDBjYjg0ODU1Nzk2N2RlZjRmNmE1NmNjOGYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qt
dW5pbml0aWFsaXplZC10ZXN0LnB5CkBAIC0wLDAgKzEsNjcgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorIworIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3Qg
d2FybnMgdGhlIHVzZXIgd2hlbiBub3QgaW5pdGlhbGl6ZWQgcHJvcGVybHkuIiIiCisKK2ltcG9y
dCBndGVzdF90ZXN0X3V0aWxzCisKK0NPTU1BTkQgPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RF
eGVjdXRhYmxlUGF0aCgnZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3RfJykKKworCitkZWYg
QXNzZXJ0KGNvbmRpdGlvbik6CisgIGlmIG5vdCBjb25kaXRpb246CisgICAgcmFpc2UgQXNzZXJ0
aW9uRXJyb3IKKworCitkZWYgQXNzZXJ0RXEoZXhwZWN0ZWQsIGFjdHVhbCk6CisgIGlmIGV4cGVj
dGVkICE9IGFjdHVhbDoKKyAgICBwcmludCAnRXhwZWN0ZWQ6ICVzJyAlIChleHBlY3RlZCwpCisg
ICAgcHJpbnQgJyAgQWN0dWFsOiAlcycgJSAoYWN0dWFsLCkKKyAgICByYWlzZSBBc3NlcnRpb25F
cnJvcgorCisKK2RlZiBUZXN0RXhpdENvZGVBbmRPdXRwdXQoY29tbWFuZCk6CisgICIiIlJ1bnMg
dGhlIGdpdmVuIGNvbW1hbmQgYW5kIHZlcmlmaWVzIGl0cyBleGl0IGNvZGUgYW5kIG91dHB1dC4i
IiIKKworICAjIFZlcmlmaWVzIHRoYXQgJ2NvbW1hbmQnIGV4aXRzIHdpdGggY29kZSAxLgorICBw
ID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCisgIGlmIHAuZXhpdGVkIGFu
ZCBwLmV4aXRfY29kZSA9PSAwOgorICAgIEFzc2VydCgnSU1QT1JUQU5UIE5PVElDRScgaW4gcC5v
dXRwdXQpOworICBBc3NlcnQoJ0luaXRHb29nbGVUZXN0JyBpbiBwLm91dHB1dCkKKworCitjbGFz
cyBHVGVzdFVuaW5pdGlhbGl6ZWRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICBk
ZWYgdGVzdEV4aXRDb2RlQW5kT3V0cHV0KHNlbGYpOgorICAgIFRlc3RFeGl0Q29kZUFuZE91dHB1
dChDT01NQU5EKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3Rf
dXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0NDM0
ZDUxZWViZmQ4NzI2YmQzZjA0YzJkMDQyNmJiYTk2MDI5OGMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0
Xy5jYwpAQCAtMCwwICsxLDQyIEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8v
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK1RFU1QoRHVtbXlUZXN0
LCBEdW1teSkgeworICAvLyBUaGlzIHRlc3QgZG9lc24ndCB2ZXJpZnkgYW55dGhpbmcuICBXZSBq
dXN0IG5lZWQgaXQgdG8gY3JlYXRlIGEKKyAgLy8gcmVhbGlzdGljIHN0YWdlIGZvciB0ZXN0aW5n
IHRoZSBiZWhhdmlvciBvZiBHb29nbGUgVGVzdCB3aGVuCisgIC8vIFJVTl9BTExfVEVTVFMoKSBp
cyBjYWxsZWQgd2l0aG91dAorICAvLyB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpIGJlaW5nIGNh
bGxlZCBmaXJzdC4KK30KKworaW50IG1haW4oKSB7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWRlYXRo
LXRlc3RfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtZGVhdGgt
dGVzdF90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDViNTNiNzFhZjJm
Nzk1NjBkNzE3MmFhNjdjYzc0MGJhNzA0MDExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtZGVh
dGgtdGVzdF90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTIzMCArMCwwIEBACi0vLyBDb3B5
cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1
dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRlc3RzIGZvciBkZWF0aCB0ZXN0cy4K
LQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9n
dGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmg+Ci0KLXVz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZTsKLXVzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpBbHdheXNUcnVlOwotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotI2lmIEdURVNU
X09TX1dJTkRPV1MKLSNpbmNsdWRlIDxkaXJlY3QuaD4gICAgICAgICAgLy8gRm9yIGNoZGlyKCku
Ci0jZWxzZQotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPHN5cy93YWl0Lmg+ICAgICAg
ICAvLyBGb3Igd2FpdHBpZC4KLSNpbmNsdWRlIDxsaW1pdHM+ICAgICAgICAgICAgLy8gRm9yIHN0
ZDo6bnVtZXJpY19saW1pdHMuCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotI2luY2x1
ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHNpZ25hbC5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0K
LSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGkuaD4KLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0
cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRp
b24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNs
dWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0
bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWlu
dGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJ
T05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1Rf
SU1QTEVNRU5UQVRJT05fCi0KLW5hbWVzcGFjZSBwb3NpeCA9IDo6dGVzdGluZzo6aW50ZXJuYWw6
OnBvc2l4OwotCi11c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwotdXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OkRlYXRoVGVzdDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3RGYWN0b3J5
OwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZpbGVQYXRoOwotdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OkdldExhc3RFcnJub0Rlc2NyaXB0aW9uOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OkdldFVuaXRUZXN0SW1wbDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpQYXJzZU5hdHVyYWxO
dW1iZXI7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOwotCi1uYW1lc3BhY2UgdGVz
dGluZyB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBBIGhlbHBlciBjbGFzcyB3aG9zZSBv
YmplY3RzIHJlcGxhY2UgdGhlIGRlYXRoIHRlc3QgZmFjdG9yeSBmb3IgYQotLy8gc2luZ2xlIFVu
aXRUZXN0IG9iamVjdCBkdXJpbmcgdGhlaXIgbGlmZXRpbWVzLgotY2xhc3MgUmVwbGFjZURlYXRo
VGVzdEZhY3RvcnkgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgUmVwbGFjZURlYXRoVGVzdEZhY3Rv
cnkoRGVhdGhUZXN0RmFjdG9yeSogbmV3X2ZhY3RvcnkpCi0gICAgICA6IHVuaXRfdGVzdF9pbXBs
XyhHZXRVbml0VGVzdEltcGwoKSkgewotICAgIG9sZF9mYWN0b3J5XyA9IHVuaXRfdGVzdF9pbXBs
Xy0+ZGVhdGhfdGVzdF9mYWN0b3J5Xy5yZWxlYXNlKCk7Ci0gICAgdW5pdF90ZXN0X2ltcGxfLT5k
ZWF0aF90ZXN0X2ZhY3RvcnlfLnJlc2V0KG5ld19mYWN0b3J5KTsKLSAgfQotCi0gIH5SZXBsYWNl
RGVhdGhUZXN0RmFjdG9yeSgpIHsKLSAgICB1bml0X3Rlc3RfaW1wbF8tPmRlYXRoX3Rlc3RfZmFj
dG9yeV8ucmVsZWFzZSgpOwotICAgIHVuaXRfdGVzdF9pbXBsXy0+ZGVhdGhfdGVzdF9mYWN0b3J5
Xy5yZXNldChvbGRfZmFjdG9yeV8pOwotICB9Ci0gcHJpdmF0ZToKLSAgLy8gUHJldmVudHMgY29w
eWluZyBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSBvYmplY3RzLgotICBSZXBsYWNlRGVhdGhUZXN0
RmFjdG9yeShjb25zdCBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSYpOwotICB2b2lkIG9wZXJhdG9y
PShjb25zdCBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSYpOwotCi0gIFVuaXRUZXN0SW1wbCogdW5p
dF90ZXN0X2ltcGxfOwotICBEZWF0aFRlc3RGYWN0b3J5KiBvbGRfZmFjdG9yeV87Ci19OwotCi19
ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLXZvaWQg
RGllSW5zaWRlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uKSB7Ci0gIGZwcmludGYoc3RkZXJyLCAiZGVh
dGggaW5zaWRlICVzKCkuIiwgZnVuY3Rpb24pOwotICBmZmx1c2goc3RkZXJyKTsKLSAgLy8gV2Ug
Y2FsbCBfZXhpdCgpIGluc3RlYWQgb2YgZXhpdCgpLCBhcyB0aGUgZm9ybWVyIGlzIGEgZGlyZWN0
Ci0gIC8vIHN5c3RlbSBjYWxsIGFuZCB0aHVzIHNhZmVyIGluIHRoZSBwcmVzZW5jZSBvZiB0aHJl
YWRzLiAgZXhpdCgpCi0gIC8vIHdpbGwgaW52b2tlIHVzZXItZGVmaW5lZCBleGl0LWhvb2tzLCB3
aGljaCBtYXkgZG8gZGFuZ2Vyb3VzCi0gIC8vIHRoaW5ncyB0aGF0IGNvbmZsaWN0IHdpdGggZGVh
dGggdGVzdHMuCi0gIC8vCi0gIC8vIFNvbWUgY29tcGlsZXJzIGNhbiByZWNvZ25pemUgdGhhdCBf
ZXhpdCgpIG5ldmVyIHJldHVybnMgYW5kIGlzc3VlIHRoZQotICAvLyAndW5yZWFjaGFibGUgY29k
ZScgd2FybmluZyBmb3IgY29kZSBmb2xsb3dpbmcgdGhpcyBmdW5jdGlvbiwgdW5sZXNzCi0gIC8v
IGZvb2xlZCBieSBhIGZha2UgY29uZGl0aW9uLgotICBpZiAoQWx3YXlzVHJ1ZSgpKQotICAgIF9l
eGl0KDEpOwotfQotCi0vLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHdvcmsuCi0KLWNsYXNzIFRl
c3RGb3JEZWF0aFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICBU
ZXN0Rm9yRGVhdGhUZXN0KCkgOiBvcmlnaW5hbF9kaXJfKEZpbGVQYXRoOjpHZXRDdXJyZW50RGly
KCkpIHt9Ci0KLSAgdmlydHVhbCB+VGVzdEZvckRlYXRoVGVzdCgpIHsKLSAgICBwb3NpeDo6Q2hE
aXIob3JpZ2luYWxfZGlyXy5jX3N0cigpKTsKLSAgfQotCi0gIC8vIEEgc3RhdGljIG1lbWJlciBm
dW5jdGlvbiB0aGF0J3MgZXhwZWN0ZWQgdG8gZGllLgotICBzdGF0aWMgdm9pZCBTdGF0aWNNZW1i
ZXJGdW5jdGlvbigpIHsgRGllSW5zaWRlKCJTdGF0aWNNZW1iZXJGdW5jdGlvbiIpOyB9Ci0KLSAg
Ly8gQSBtZXRob2Qgb2YgdGhlIHRlc3QgZml4dHVyZSB0aGF0IG1heSBkaWUuCi0gIHZvaWQgTWVt
YmVyRnVuY3Rpb24oKSB7Ci0gICAgaWYgKHNob3VsZF9kaWVfKQotICAgICAgRGllSW5zaWRlKCJN
ZW1iZXJGdW5jdGlvbiIpOwotICB9Ci0KLSAgLy8gVHJ1ZSBpZmYgTWVtYmVyRnVuY3Rpb24oKSBz
aG91bGQgZGllLgotICBib29sIHNob3VsZF9kaWVfOwotICBjb25zdCBGaWxlUGF0aCBvcmlnaW5h
bF9kaXJfOwotfTsKLQotLy8gQSBjbGFzcyB3aXRoIGEgbWVtYmVyIGZ1bmN0aW9uIHRoYXQgbWF5
IGRpZS4KLWNsYXNzIE1heURpZSB7Ci0gcHVibGljOgotICBleHBsaWNpdCBNYXlEaWUoYm9vbCBz
aG91bGRfZGllKSA6IHNob3VsZF9kaWVfKHNob3VsZF9kaWUpIHt9Ci0KLSAgLy8gQSBtZW1iZXIg
ZnVuY3Rpb24gdGhhdCBtYXkgZGllLgotICB2b2lkIE1lbWJlckZ1bmN0aW9uKCkgY29uc3Qgewot
ICAgIGlmIChzaG91bGRfZGllXykKLSAgICAgIERpZUluc2lkZSgiTWF5RGllOjpNZW1iZXJGdW5j
dGlvbiIpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBUcnVlIGlmZiBNZW1iZXJGdW5jdGlvbigp
IHNob3VsZCBkaWUuCi0gIGJvb2wgc2hvdWxkX2RpZV87Ci19OwotCi0vLyBBIGdsb2JhbCBmdW5j
dGlvbiB0aGF0J3MgZXhwZWN0ZWQgdG8gZGllLgotdm9pZCBHbG9iYWxGdW5jdGlvbigpIHsgRGll
SW5zaWRlKCJHbG9iYWxGdW5jdGlvbiIpOyB9Ci0KLS8vIEEgbm9uLXZvaWQgZnVuY3Rpb24gdGhh
dCdzIGV4cGVjdGVkIHRvIGRpZS4KLWludCBOb25Wb2lkRnVuY3Rpb24oKSB7Ci0gIERpZUluc2lk
ZSgiTm9uVm9pZEZ1bmN0aW9uIik7Ci0gIHJldHVybiAxOwotfQotCi0vLyBBIHVuYXJ5IGZ1bmN0
aW9uIHRoYXQgbWF5IGRpZS4KLXZvaWQgRGllSWYoYm9vbCBzaG91bGRfZGllKSB7Ci0gIGlmIChz
aG91bGRfZGllKQotICAgIERpZUluc2lkZSgiRGllSWYiKTsKLX0KLQotLy8gQSBiaW5hcnkgZnVu
Y3Rpb24gdGhhdCBtYXkgZGllLgotYm9vbCBEaWVJZkxlc3NUaGFuKGludCB4LCBpbnQgeSkgewot
ICBpZiAoeCA8IHkpIHsKLSAgICBEaWVJbnNpZGUoIkRpZUlmTGVzc1RoYW4iKTsKLSAgfQotICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVBVEggY2FuIGJlIHVzZWQg
b3V0c2lkZSBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdCBmaXh0dXJlLgotdm9pZCBEZWF0aFRlc3RT
dWJyb3V0aW5lKCkgewotICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgImRlYXRoLipH
bG9iYWxGdW5jdGlvbiIpOwotICBBU1NFUlRfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgImRlYXRo
LipHbG9iYWxGdW5jdGlvbiIpOwotfQotCi0vLyBEZWF0aCBpbiBkYmcsIG5vdCBvcHQuCi1pbnQg
RGllSW5EZWJ1Z0Vsc2UxMihpbnQqIHNpZGVlZmZlY3QpIHsKLSAgaWYgKHNpZGVlZmZlY3QpICpz
aWRlZWZmZWN0ID0gMTI7Ci0jaWZuZGVmIE5ERUJVRwotICBEaWVJbnNpZGUoIkRpZUluRGVidWdF
bHNlMTIiKTsKLSNlbmRpZiAgLy8gTkRFQlVHCi0gIHJldHVybiAxMjsKLX0KLQotI2lmIEdURVNU
X09TX1dJTkRPV1MKLQotLy8gVGVzdHMgdGhlIEV4aXRlZFdpdGhDb2RlIHByZWRpY2F0ZS4KLVRF
U1QoRXhpdFN0YXR1c1ByZWRpY2F0ZVRlc3QsIEV4aXRlZFdpdGhDb2RlKSB7Ci0gIC8vIE9uIFdp
bmRvd3MsIHRoZSBwcm9jZXNzJ3MgZXhpdCBjb2RlIGlzIHRoZSBzYW1lIGFzIGl0cyBleGl0IHN0
YXR1cywKLSAgLy8gc28gdGhlIHByZWRpY2F0ZSBqdXN0IGNvbXBhcmVzIHRoZSBpdHMgaW5wdXQg
d2l0aCBpdHMgcGFyYW1ldGVyLgotICBFWFBFQ1RfVFJVRSh0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29k
ZSgwKSgwKSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEpKDEpKTsK
LSAgRVhQRUNUX1RSVUUodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoNDIpKDQyKSk7Ci0gIEVYUEVD
VF9GQUxTRSh0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgwKSgxKSk7Ci0gIEVYUEVDVF9GQUxTRSh0
ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSgwKSk7Ci19Ci0KLSNlbHNlCi0KLS8vIFJldHVybnMg
dGhlIGV4aXQgc3RhdHVzIG9mIGEgcHJvY2VzcyB0aGF0IGNhbGxzIF9leGl0KDIpIHdpdGggYQot
Ly8gZ2l2ZW4gZXhpdCBjb2RlLiAgVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgdGhlCi0v
LyBFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCB0ZXN0IHN1aXRlLgotc3RhdGljIGludCBOb3JtYWxF
eGl0U3RhdHVzKGludCBleGl0X2NvZGUpIHsKLSAgcGlkX3QgY2hpbGRfcGlkID0gZm9yaygpOwot
ICBpZiAoY2hpbGRfcGlkID09IDApIHsKLSAgICBfZXhpdChleGl0X2NvZGUpOwotICB9Ci0gIGlu
dCBzdGF0dXM7Ci0gIHdhaXRwaWQoY2hpbGRfcGlkLCAmc3RhdHVzLCAwKTsKLSAgcmV0dXJuIHN0
YXR1czsKLX0KLQotLy8gUmV0dXJucyB0aGUgZXhpdCBzdGF0dXMgb2YgYSBwcm9jZXNzIHRoYXQg
cmFpc2VzIGEgZ2l2ZW4gc2lnbmFsLgotLy8gSWYgdGhlIHNpZ25hbCBkb2VzIG5vdCBjYXVzZSB0
aGUgcHJvY2VzcyB0byBkaWUsIHRoZW4gaXQgcmV0dXJucwotLy8gaW5zdGVhZCB0aGUgZXhpdCBz
dGF0dXMgb2YgYSBwcm9jZXNzIHRoYXQgZXhpdHMgbm9ybWFsbHkgd2l0aCBleGl0Ci0vLyBjb2Rl
IDEuICBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGUgRXhpdFN0YXR1c1ByZWRpY2F0
ZVRlc3QKLS8vIHRlc3Qgc3VpdGUuCi1zdGF0aWMgaW50IEtpbGxlZEV4aXRTdGF0dXMoaW50IHNp
Z251bSkgewotICBwaWRfdCBjaGlsZF9waWQgPSBmb3JrKCk7Ci0gIGlmIChjaGlsZF9waWQgPT0g
MCkgewotICAgIHJhaXNlKHNpZ251bSk7Ci0gICAgX2V4aXQoMSk7Ci0gIH0KLSAgaW50IHN0YXR1
czsKLSAgd2FpdHBpZChjaGlsZF9waWQsICZzdGF0dXMsIDApOwotICByZXR1cm4gc3RhdHVzOwot
fQotCi0vLyBUZXN0cyB0aGUgRXhpdGVkV2l0aENvZGUgcHJlZGljYXRlLgotVEVTVChFeGl0U3Rh
dHVzUHJlZGljYXRlVGVzdCwgRXhpdGVkV2l0aENvZGUpIHsKLSAgY29uc3QgaW50IHN0YXR1czAg
ID0gTm9ybWFsRXhpdFN0YXR1cygwKTsKLSAgY29uc3QgaW50IHN0YXR1czEgID0gTm9ybWFsRXhp
dFN0YXR1cygxKTsKLSAgY29uc3QgaW50IHN0YXR1czQyID0gTm9ybWFsRXhpdFN0YXR1cyg0Mik7
Ci0gIGNvbnN0IHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlIHByZWQwKDApOwotICBjb25zdCB0ZXN0
aW5nOjpFeGl0ZWRXaXRoQ29kZSBwcmVkMSgxKTsKLSAgY29uc3QgdGVzdGluZzo6RXhpdGVkV2l0
aENvZGUgcHJlZDQyKDQyKTsKLSAgRVhQRUNUX1BSRUQxKHByZWQwLCAgc3RhdHVzMCk7Ci0gIEVY
UEVDVF9QUkVEMShwcmVkMSwgIHN0YXR1czEpOwotICBFWFBFQ1RfUFJFRDEocHJlZDQyLCBzdGF0
dXM0Mik7Ci0gIEVYUEVDVF9GQUxTRShwcmVkMChzdGF0dXMxKSk7Ci0gIEVYUEVDVF9GQUxTRShw
cmVkNDIoc3RhdHVzMCkpOwotICBFWFBFQ1RfRkFMU0UocHJlZDEoc3RhdHVzNDIpKTsKLX0KLQot
Ly8gVGVzdHMgdGhlIEtpbGxlZEJ5U2lnbmFsIHByZWRpY2F0ZS4KLVRFU1QoRXhpdFN0YXR1c1By
ZWRpY2F0ZVRlc3QsIEtpbGxlZEJ5U2lnbmFsKSB7Ci0gIGNvbnN0IGludCBzdGF0dXNfc2VndiA9
IEtpbGxlZEV4aXRTdGF0dXMoU0lHU0VHVik7Ci0gIGNvbnN0IGludCBzdGF0dXNfa2lsbCA9IEtp
bGxlZEV4aXRTdGF0dXMoU0lHS0lMTCk7Ci0gIGNvbnN0IHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFs
IHByZWRfc2VndihTSUdTRUdWKTsKLSAgY29uc3QgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwgcHJl
ZF9raWxsKFNJR0tJTEwpOwotICBFWFBFQ1RfUFJFRDEocHJlZF9zZWd2LCBzdGF0dXNfc2Vndik7
Ci0gIEVYUEVDVF9QUkVEMShwcmVkX2tpbGwsIHN0YXR1c19raWxsKTsKLSAgRVhQRUNUX0ZBTFNF
KHByZWRfc2VndihzdGF0dXNfa2lsbCkpOwotICBFWFBFQ1RfRkFMU0UocHJlZF9raWxsKHN0YXR1
c19zZWd2KSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0vLyBUZXN0cyB0
aGF0IHRoZSBkZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29kZSB3aGljaCBtYXkgb3IgbWF5
IG5vdAotLy8gYmUgZm9sbG93ZWQgYnkgb3BlcmF0b3I8PCwgYW5kIHRoYXQgaW4gZWl0aGVyIGNh
c2UgdGhlIGNvbXBsZXRlIHRleHQKLS8vIGNvbXByaXNlcyBvbmx5IGEgc2luZ2xlIEMrKyBzdGF0
ZW1lbnQuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU2luZ2xlU3RhdGVtZW50KSB7Ci0gIGlm
IChBbHdheXNGYWxzZSgpKQotICAgIC8vIFRoaXMgd291bGQgZmFpbCBpZiBleGVjdXRlZDsgdGhp
cyBpcyBhIGNvbXBpbGF0aW9uIHRlc3Qgb25seQotICAgIEFTU0VSVF9ERUFUSChyZXR1cm4sICIi
KTsKLQotICBpZiAoQWx3YXlzVHJ1ZSgpKQotICAgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIp
OwotICBlbHNlCi0gICAgLy8gVGhpcyBlbXB0eSAiZWxzZSIgYnJhbmNoIGlzIG1lYW50IHRvIGVu
c3VyZSB0aGF0IEVYUEVDVF9ERUFUSAotICAgIC8vIGRvZXNuJ3QgZXhwYW5kIGludG8gYW4gImlm
IiBzdGF0ZW1lbnQgd2l0aG91dCBhbiAiZWxzZSIKLSAgICA7Ci0KLSAgaWYgKEFsd2F5c0ZhbHNl
KCkpCi0gICAgQVNTRVJUX0RFQVRIKHJldHVybiwgIiIpIDw8ICJkaWQgbm90IGRpZSI7Ci0KLSAg
aWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgOwotICBlbHNlCi0gICAgRVhQRUNUX0RFQVRIKF9leGl0
KDEpLCAiIikgPDwgMSA8PCAyIDw8IDM7Ci19Ci0KLXZvaWQgRGllV2l0aEVtYmVkZGVkTnVsKCkg
ewotICBmcHJpbnRmKHN0ZGVyciwgIkhlbGxvJWNteSBudWxsIHdvcmxkLlxuIiwgJ1wwJyk7Ci0g
IGZmbHVzaChzdGRlcnIpOwotICBfZXhpdCgxKTsKLX0KLQotI2lmIEdURVNUX1VTRVNfUENSRQot
Ly8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEggYW5kIEFTU0VSVF9ERUFUSCB3b3JrIHdoZW4gdGhl
IGVycm9yCi0vLyBtZXNzYWdlIGhhcyBhIE5VTCBjaGFyYWN0ZXIgaW4gaXQuCi1URVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgRW1iZWRkZWROdWxJbk1lc3NhZ2UpIHsKLSAgLy8gVE9ETyh3YW5AZ29v
Z2xlLmNvbSk6IDxyZWdleC5oPiBkb2Vzbid0IHN1cHBvcnQgbWF0Y2hpbmcgc3RyaW5ncwotICAv
LyB3aXRoIGVtYmVkZGVkIE5VTCBjaGFyYWN0ZXJzIC0gZmluZCBhIHdheSB0byB3b3JrYXJvdW5k
IGl0LgotICBFWFBFQ1RfREVBVEgoRGllV2l0aEVtYmVkZGVkTnVsKCksICJteSBudWxsIHdvcmxk
Iik7Ci0gIEFTU0VSVF9ERUFUSChEaWVXaXRoRW1iZWRkZWROdWwoKSwgIm15IG51bGwgd29ybGQi
KTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfVVNFU19QQ1JFCi0KLS8vIFRlc3RzIHRoYXQgZGVhdGgg
dGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUgd2hpY2ggaW50ZXJhY3RzIHdlbGwgd2l0aCBzd2l0
Y2gKLS8vIHN0YXRlbWVudHMuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU3dpdGNoU3RhdGVt
ZW50KSB7Ci0vLyBNaWNyb3NvZnQgY29tcGlsZXIgdXN1YWxseSBjb21wbGFpbnMgYWJvdXQgc3dp
dGNoIHN0YXRlbWVudHMgd2l0aG91dAotLy8gY2FzZSBsYWJlbHMuIFdlIHN1cHByZXNzIHRoYXQg
d2FybmluZyBmb3IgdGhpcyB0ZXN0LgotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmco
cHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MDY1KQotI2VuZGlmICAvLyBfTVNDX1ZF
UgotCi0gIHN3aXRjaCAoMCkKLSAgICBkZWZhdWx0OgotICAgICAgQVNTRVJUX0RFQVRIKF9leGl0
KDEpLCAiIikgPDwgImV4aXQgaW4gZGVmYXVsdCBzd2l0Y2ggaGFuZGxlciI7Ci0KLSAgc3dpdGNo
ICgwKQotICAgIGNhc2UgMDoKLSAgICAgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8ICJl
eGl0IGluIHN3aXRjaCBjYXNlIjsKLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmco
cG9wKQotI2VuZGlmICAvLyBfTVNDX1ZFUgotfQotCi0vLyBUZXN0cyB0aGF0IGEgc3RhdGljIG1l
bWJlciBmdW5jdGlvbiBjYW4gYmUgdXNlZCBpbiBhICJmYXN0IiBzdHlsZQotLy8gZGVhdGggdGVz
dC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTdGF0aWNNZW1iZXJGdW5jdGlvbkZhc3RTdHls
ZSkgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOwot
ICBBU1NFUlRfREVBVEgoU3RhdGljTWVtYmVyRnVuY3Rpb24oKSwgImRlYXRoLipTdGF0aWNNZW1i
ZXIiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNh
biBiZSB1c2VkIGluIGEgImZhc3QiCi0vLyBzdHlsZSBkZWF0aCB0ZXN0LgotVEVTVF9GKFRlc3RG
b3JEZWF0aFRlc3QsIE1lbWJlckZ1bmN0aW9uRmFzdFN0eWxlKSB7Ci0gIHRlc3Rpbmc6OkdURVNU
X0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7Ci0gIHNob3VsZF9kaWVfID0gdHJ1ZTsK
LSAgRVhQRUNUX0RFQVRIKE1lbWJlckZ1bmN0aW9uKCksICJpbnNpZGUuKk1lbWJlckZ1bmN0aW9u
Iik7Ci19Ci0KLXZvaWQgQ2hhbmdlVG9Sb290RGlyKCkgeyBwb3NpeDo6Q2hEaXIoR1RFU1RfUEFU
SF9TRVBfKTsgfQotCi0vLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHdvcmsgZXZlbiBpZiB0aGUg
Y3VycmVudCBkaXJlY3RvcnkgaGFzIGJlZW4KLS8vIGNoYW5nZWQuCi1URVNUX0YoVGVzdEZvckRl
YXRoVGVzdCwgRmFzdERlYXRoVGVzdEluQ2hhbmdlZERpcikgewotICB0ZXN0aW5nOjpHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOwotCi0gIENoYW5nZVRvUm9vdERpcigpOwot
ICBFWFBFQ1RfRVhJVChfZXhpdCgxKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSksICIiKTsK
LQotICBDaGFuZ2VUb1Jvb3REaXIoKTsKLSAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci19
Ci0KLS8vIFJlcGVhdHMgYSByZXByZXNlbnRhdGl2ZSBzYW1wbGUgb2YgZGVhdGggdGVzdHMgaW4g
dGhlICJ0aHJlYWRzYWZlIiBzdHlsZToKLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFN0YXRp
Y01lbWJlckZ1bmN0aW9uVGhyZWFkc2FmZVN0eWxlKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUco
ZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7Ci0gIEFTU0VSVF9ERUFUSChTdGF0aWNN
ZW1iZXJGdW5jdGlvbigpLCAiZGVhdGguKlN0YXRpY01lbWJlciIpOwotfQotCi1URVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgTWVtYmVyRnVuY3Rpb25UaHJlYWRzYWZlU3R5bGUpIHsKLSAgdGVzdGlu
Zzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKLSAgc2hvdWxk
X2RpZV8gPSB0cnVlOwotICBFWFBFQ1RfREVBVEgoTWVtYmVyRnVuY3Rpb24oKSwgImluc2lkZS4q
TWVtYmVyRnVuY3Rpb24iKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRocmVhZHNh
ZmVEZWF0aFRlc3RJbkxvb3ApIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0
eWxlKSA9ICJ0aHJlYWRzYWZlIjsKLQotICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkKLSAg
ICBFWFBFQ1RfRVhJVChfZXhpdChpKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoaSksICIiKSA8
PCAiOiBpID0gIiA8PCBpOwotfQotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgVGhyZWFkc2Fm
ZURlYXRoVGVzdEluQ2hhbmdlZERpcikgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rl
c3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOwotCi0gIENoYW5nZVRvUm9vdERpcigpOwotICBFWFBF
Q1RfRVhJVChfZXhpdCgxKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSksICIiKTsKLQotICBD
aGFuZ2VUb1Jvb3REaXIoKTsKLSAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci19Ci0KLVRF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNaXhlZFN0eWxlcykgewotICB0ZXN0aW5nOjpHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOwotICBFWFBFQ1RfREVBVEgoX2V4
aXQoMSksICIiKTsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJm
YXN0IjsKLSAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci19Ci0KLW5hbWVzcGFjZSB7Ci0K
LWJvb2wgcHRocmVhZF9mbGFnOwotCi12b2lkIFNldFB0aHJlYWRGbGFnKCkgewotICBwdGhyZWFk
X2ZsYWcgPSB0cnVlOwotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotI2lmIEdURVNUX0hBU19DTE9O
RSAmJiBHVEVTVF9IQVNfUFRIUkVBRAotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRG9lc05v
dEV4ZWN1dGVBdGZvcmtIb29rcykgewotICBpZiAoIXRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhf
dGVzdF91c2VfZm9yaykpIHsKLSAgICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5
bGUpID0gInRocmVhZHNhZmUiOwotICAgIHB0aHJlYWRfZmxhZyA9IGZhbHNlOwotICAgIEFTU0VS
VF9FUSgwLCBwdGhyZWFkX2F0Zm9yaygmU2V0UHRocmVhZEZsYWcsIE5VTEwsIE5VTEwpKTsKLSAg
ICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIiKTsKLSAgICBBU1NFUlRfRkFMU0UocHRocmVhZF9m
bGFnKTsKLSAgfQotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORSAmJiBHVEVTVF9IQVNf
UFRIUkVBRAotCi0vLyBUZXN0cyB0aGF0IGEgbWV0aG9kIG9mIGFub3RoZXIgY2xhc3MgY2FuIGJl
IHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE1ldGhvZE9m
QW5vdGhlckNsYXNzKSB7Ci0gIGNvbnN0IE1heURpZSB4KHRydWUpOwotICBBU1NFUlRfREVBVEgo
eC5NZW1iZXJGdW5jdGlvbigpLCAiTWF5RGllXFw6XFw6TWVtYmVyRnVuY3Rpb24iKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBhIGdsb2JhbCBmdW5jdGlvbiBjYW4gYmUgdXNlZCBpbiBhIGRlYXRoIHRl
c3QuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgR2xvYmFsRnVuY3Rpb24pIHsKLSAgRVhQRUNU
X0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksICJHbG9iYWxGdW5jdGlvbiIpOwotfQotCi0vLyBUZXN0
cyB0aGF0IGFueSB2YWx1ZSBjb252ZXJ0aWJsZSB0byBhbiBSRSB3b3JrcyBhcyBhIHNlY29uZAot
Ly8gYXJndW1lbnQgdG8gRVhQRUNUX0RFQVRILgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFj
Y2VwdHNBbnl0aGluZ0NvbnZlcnRpYmxlVG9SRSkgewotICBzdGF0aWMgY29uc3QgY2hhciByZWdl
eF9jX3N0cltdID0gIkdsb2JhbEZ1bmN0aW9uIjsKLSAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0
aW9uKCksIHJlZ2V4X2Nfc3RyKTsKLQotICBjb25zdCB0ZXN0aW5nOjppbnRlcm5hbDo6UkUgcmVn
ZXgocmVnZXhfY19zdHIpOwotICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXgp
OwotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLSAgY29uc3Qgc3RyaW5nIHJlZ2V4X3N0
cihyZWdleF9jX3N0cik7Ci0gIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleF9z
dHIpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotCi0gIGNvbnN0IDo6c3Rk
OjpzdHJpbmcgcmVnZXhfc3RkX3N0cihyZWdleF9jX3N0cik7Ci0gIEVYUEVDVF9ERUFUSChHbG9i
YWxGdW5jdGlvbigpLCByZWdleF9zdGRfc3RyKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIG5vbi12
b2lkIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KLVRFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBOb25Wb2lkRnVuY3Rpb24pIHsKLSAgQVNTRVJUX0RFQVRIKE5vblZvaWRGdW5j
dGlvbigpLCAiTm9uVm9pZEZ1bmN0aW9uIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgZnVuY3Rpb25z
IHRoYXQgdGFrZSBwYXJhbWV0ZXIocykgY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgotVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIEZ1bmN0aW9uV2l0aFBhcmFtZXRlcikgewotICBFWFBFQ1Rf
REVBVEgoRGllSWYodHJ1ZSksICJEaWVJZlxcKFxcKSIpOwotICBFWFBFQ1RfREVBVEgoRGllSWZM
ZXNzVGhhbigyLCAzKSwgIkRpZUlmTGVzc1RoYW4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBU1NF
UlRfREVBVEggY2FuIGJlIHVzZWQgb3V0c2lkZSBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdCBmaXh0
dXJlLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE91dHNpZGVGaXh0dXJlKSB7Ci0gIERlYXRo
VGVzdFN1YnJvdXRpbmUoKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyBjYW4gYmUg
ZG9uZSBpbnNpZGUgYSBsb29wLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEluc2lkZUxvb3Ap
IHsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKLSAgICBFWFBFQ1RfREVBVEgoRGll
SWZMZXNzVGhhbigtMSwgaSksICJEaWVJZkxlc3NUaGFuIikgPDwgIndoZXJlIGkgPT0gIiA8PCBp
OwotICB9Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBjb21wb3VuZCBzdGF0ZW1lbnQgY2FuIGJlIHVz
ZWQgaW4gYSBkZWF0aCB0ZXN0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIENvbXBvdW5kU3Rh
dGVtZW50KSB7Ci0gIEVYUEVDVF9ERUFUSCh7ICAvLyBOT0xJTlQKLSAgICBjb25zdCBpbnQgeCA9
IDI7Ci0gICAgY29uc3QgaW50IHkgPSB4ICsgMTsKLSAgICBEaWVJZkxlc3NUaGFuKHgsIHkpOwot
ICB9LAotICAiRGllSWZMZXNzVGhhbiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IGNvZGUgdGhhdCBk
b2Vzbid0IGRpZSBjYXVzZXMgYSBkZWF0aCB0ZXN0IHRvIGZhaWwuCi1URVNUX0YoVGVzdEZvckRl
YXRoVGVzdCwgRG9lc05vdERpZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1Rf
REVBVEgoRGllSWYoZmFsc2UpLCAiRGllSWYiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ImZhaWxlZCB0byBkaWUiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIGRlYXRoIHRlc3QgZmFpbHMg
d2hlbiB0aGUgZXJyb3IgbWVzc2FnZSBpc24ndCBleHBlY3RlZC4KLVRFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBFcnJvck1lc3NhZ2VNaXNtYXRjaCkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfREVBVEgoRGllSWYodHJ1ZSksICJEaWVJZkxlc3NU
aGFuIikgPDwgIkVuZCBvZiBkZWF0aCB0ZXN0IG1lc3NhZ2UuIjsKLSAgfSwgImRpZWQgYnV0IG5v
dCB3aXRoIGV4cGVjdGVkIGVycm9yIik7Ci19Ci0KLS8vIE9uIGV4aXQsICphYm9ydGVkIHdpbGwg
YmUgdHJ1ZSBpZmYgdGhlIEVYUEVDVF9ERUFUSCgpIHN0YXRlbWVudAotLy8gYWJvcnRlZCB0aGUg
ZnVuY3Rpb24uCi12b2lkIEV4cGVjdERlYXRoVGVzdEhlbHBlcihib29sKiBhYm9ydGVkKSB7Ci0g
ICphYm9ydGVkID0gdHJ1ZTsKLSAgRVhQRUNUX0RFQVRIKERpZUlmKGZhbHNlKSwgIkRpZUlmIik7
ICAvLyBUaGlzIGFzc2VydGlvbiBzaG91bGQgZmFpbC4KLSAgKmFib3J0ZWQgPSBmYWxzZTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEggZG9lc24ndCBhYm9ydCB0aGUgdGVzdCBvbiBm
YWlsdXJlLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEVYUEVDVF9ERUFUSCkgewotICBib29s
IGFib3J0ZWQgPSB0cnVlOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFeHBlY3REZWF0aFRl
c3RIZWxwZXIoJmFib3J0ZWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRv
IGRpZSIpOwotICBFWFBFQ1RfRkFMU0UoYWJvcnRlZCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQVNT
RVJUX0RFQVRIIGRvZXMgYWJvcnQgdGhlIHRlc3Qgb24gZmFpbHVyZS4KLVRFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBBU1NFUlRfREVBVEgpIHsKLSAgc3RhdGljIGJvb2wgYWJvcnRlZDsKLSAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgYWJvcnRlZCA9IHRydWU7Ci0gICAg
QVNTRVJUX0RFQVRIKERpZUlmKGZhbHNlKSwgIkRpZUlmIik7ICAvLyBUaGlzIGFzc2VydGlvbiBz
aG91bGQgZmFpbC4KLSAgICBhYm9ydGVkID0gZmFsc2U7Ci0gIH0sICJmYWlsZWQgdG8gZGllIik7
Ci0gIEVYUEVDVF9UUlVFKGFib3J0ZWQpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFU
SCBldmFsdWF0ZXMgdGhlIGFyZ3VtZW50cyBleGFjdGx5IG9uY2UuCi1URVNUX0YoVGVzdEZvckRl
YXRoVGVzdCwgU2luZ2xlRXZhbHVhdGlvbikgewotICBpbnQgeCA9IDM7Ci0gIEVYUEVDVF9ERUFU
SChEaWVJZigoKyt4KSA9PSA0KSwgIkRpZUlmIik7Ci0KLSAgY29uc3QgY2hhciogcmVnZXggPSAi
RGllSWYiOwotICBjb25zdCBjaGFyKiByZWdleF9zYXZlID0gcmVnZXg7Ci0gIEVYUEVDVF9ERUFU
SChEaWVJZkxlc3NUaGFuKDMsIDQpLCByZWdleCsrKTsKLSAgRVhQRUNUX0VRKHJlZ2V4X3NhdmUg
KyAxLCByZWdleCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgcnVuLWF3YXkgZGVhdGggdGVzdHMgYXJl
IHJlcG9ydGVkIGFzIGZhaWx1cmVzLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFJ1bmF3YXkp
IHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKHN0YXRpY19jYXN0PHZv
aWQ+KDApLCAiRm9vIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZGll
LiIpOwotCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9ERUFUSChyZXR1cm4sICJCYXIi
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgImlsbGVnYWwgcmV0dXJuIGluIHRlc3Qgc3RhdGVt
ZW50LiIpOwotfQotCi0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQlVHX0RFQVRIIHdvcmtzIGFz
IGV4cGVjdGVkLAotLy8gdGhhdCBpcywgaW4gZGVidWcgbW9kZSwgaXQ6Ci0vLyAxLiBBc3NlcnRz
IG9uIGRlYXRoLgotLy8gMi4gSGFzIG5vIHNpZGUgZWZmZWN0LgotLy8KLS8vIEFuZCBpbiBvcHQg
bW9kZSwgaXQ6Ci0vLyAxLiAgSGFzIHNpZGUgZWZmZWN0cyBidXQgZG9lcyBub3QgYXNzZXJ0Lgot
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRlc3RFeHBlY3REZWJ1Z0RlYXRoKSB7Ci0gIGludCBz
aWRlZWZmZWN0ID0gMDsKLQotICBFWFBFQ1RfREVCVUdfREVBVEgoRGllSW5EZWJ1Z0Vsc2UxMigm
c2lkZWVmZmVjdCksCi0gICAgICAgICAgICAgICAgICAgICAiZGVhdGguKkRpZUluRGVidWdFbHNl
MTIiKTsKLQotI2lmZGVmIE5ERUJVRwotICAvLyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBv
Y2N1cnMgaW4gb3B0IG1vZGUgKHNpZGVlZmZlY3QpLgotICBFWFBFQ1RfRVEoMTIsIHNpZGVlZmZl
Y3QpOwotI2Vsc2UKLSAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgZG9lcyBub3Qgb2Nj
dXIgaW4gZGJnIG1vZGUgKG5vIHNpZGVlZmZlY3QpLgotICBFWFBFQ1RfRVEoMCwgc2lkZWVmZmVj
dCk7Ci0jZW5kaWYKLX0KLQotLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVCVUdfREVBVEggd29ya3Mg
YXMgZXhwZWN0ZWQKLS8vIEluIGRlYnVnIG1vZGU6Ci0vLyAxLiBBc3NlcnRzIG9uIGRlYnVnIGRl
YXRoLgotLy8gMi4gSGFzIG5vIHNpZGUgZWZmZWN0LgotLy8KLS8vIEluIG9wdCBtb2RlOgotLy8g
MS4gSGFzIHNpZGUgZWZmZWN0cyBhbmQgcmV0dXJucyB0aGUgZXhwZWN0ZWQgdmFsdWUgKDEyKS4K
LVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUZXN0QXNzZXJ0RGVidWdEZWF0aCkgewotICBpbnQg
c2lkZWVmZmVjdCA9IDA7Ci0KLSAgQVNTRVJUX0RFQlVHX0RFQVRIKHsgIC8vIE5PTElOVAotICAg
IC8vIFRlc3RzIHRoYXQgdGhlIHJldHVybiB2YWx1ZSBpcyAxMiBpbiBvcHQgbW9kZS4KLSAgICBF
WFBFQ1RfRVEoMTIsIERpZUluRGVidWdFbHNlMTIoJnNpZGVlZmZlY3QpKTsKLSAgICAvLyBUZXN0
cyB0aGF0IHRoZSBzaWRlIGVmZmVjdCBvY2N1cnJlZCBpbiBvcHQgbW9kZS4KLSAgICBFWFBFQ1Rf
RVEoMTIsIHNpZGVlZmZlY3QpOwotICB9LCAiZGVhdGguKkRpZUluRGVidWdFbHNlMTIiKTsKLQot
I2lmZGVmIE5ERUJVRwotICAvLyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBvY2N1cnMgaW4g
b3B0IG1vZGUgKHNpZGVlZmZlY3QpLgotICBFWFBFQ1RfRVEoMTIsIHNpZGVlZmZlY3QpOwotI2Vs
c2UKLSAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgZG9lcyBub3Qgb2NjdXIgaW4gZGJn
IG1vZGUgKG5vIHNpZGVlZmZlY3QpLgotICBFWFBFQ1RfRVEoMCwgc2lkZWVmZmVjdCk7Ci0jZW5k
aWYKLX0KLQotI2lmbmRlZiBOREVCVUcKLQotdm9pZCBFeHBlY3REZWJ1Z0RlYXRoSGVscGVyKGJv
b2wqIGFib3J0ZWQpIHsKLSAgKmFib3J0ZWQgPSB0cnVlOwotICBFWFBFQ1RfREVCVUdfREVBVEgo
cmV0dXJuLCAiIikgPDwgIlRoaXMgaXMgZXhwZWN0ZWQgdG8gZmFpbC4iOwotICAqYWJvcnRlZCA9
IGZhbHNlOwotfQotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotVEVTVChQb3BVcERlYXRoVGVzdCwg
RG9lc05vdFNob3dQb3BVcE9uQWJvcnQpIHsKLSAgcHJpbnRmKCJUaGlzIHRlc3Qgc2hvdWxkIGJl
IGNvbnNpZGVyZWQgZmFpbGluZyBpZiBpdCBzaG93cyAiCi0gICAgICAgICAiYW55IHBvcC11cCBk
aWFsb2dzLlxuIik7Ci0gIGZmbHVzaChzdGRvdXQpOwotCi0gIEVYUEVDVF9ERUFUSCh7Ci0gICAg
dGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA9IGZhbHNlOwotICAgIGFib3J0
KCk7Ci0gIH0sICIiKTsKLX0KLQotVEVTVChQb3BVcERlYXRoVGVzdCwgRG9lc05vdFNob3dQb3BV
cE9uVGhyb3cpIHsKLSAgcHJpbnRmKCJUaGlzIHRlc3Qgc2hvdWxkIGJlIGNvbnNpZGVyZWQgZmFp
bGluZyBpZiBpdCBzaG93cyAiCi0gICAgICAgICAiYW55IHBvcC11cCBkaWFsb2dzLlxuIik7Ci0g
IGZmbHVzaChzdGRvdXQpOwotCi0gIEVYUEVDVF9ERUFUSCh7Ci0gICAgdGVzdGluZzo6R1RFU1Rf
RkxBRyhjYXRjaF9leGNlcHRpb25zKSA9IGZhbHNlOwotICAgIHRocm93IDE7Ci0gIH0sICIiKTsK
LX0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9E
RUJVR19ERUFUSCBpbiBkZWJ1ZyBtb2RlIGRvZXMgbm90IGFib3J0Ci0vLyB0aGUgZnVuY3Rpb24u
Ci1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRXhwZWN0RGVidWdEZWF0aERvZXNOb3RBYm9ydCkg
ewotICBib29sIGFib3J0ZWQgPSB0cnVlOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFeHBl
Y3REZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwgIiIpOwotICBFWFBFQ1RfRkFMU0UoYWJvcnRl
ZCk7Ci19Ci0KLXZvaWQgQXNzZXJ0RGVidWdEZWF0aEhlbHBlcihib29sKiBhYm9ydGVkKSB7Ci0g
ICphYm9ydGVkID0gdHJ1ZTsKLSAgQVNTRVJUX0RFQlVHX0RFQVRIKHJldHVybiwgIiIpIDw8ICJU
aGlzIGlzIGV4cGVjdGVkIHRvIGZhaWwuIjsKLSAgKmFib3J0ZWQgPSBmYWxzZTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBBU1NFUlRfREVCVUdfREVBVEggaW4gZGVidWcgbW9kZSBhYm9ydHMgdGhlIGZ1
bmN0aW9uIG9uCi0vLyBmYWlsdXJlLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERl
YnVnRGVhdGhBYm9ydHMpIHsKLSAgc3RhdGljIGJvb2wgYWJvcnRlZDsKLSAgYWJvcnRlZCA9IGZh
bHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9y
dGVkKSwgIiIpOwotICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKLX0KLQotI2VuZGlmICAvLyBfTkRF
QlVHCi0KLS8vIFRlc3RzIHRoZSAqX0VYSVQgZmFtaWx5IG9mIG1hY3JvcywgdXNpbmcgYSB2YXJp
ZXR5IG9mIHByZWRpY2F0ZXMuCi1zdGF0aWMgdm9pZCBUZXN0RXhpdE1hY3JvcygpIHsKLSAgRVhQ
RUNUX0VYSVQoX2V4aXQoMSksICB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSwgICIiKTsKLSAg
QVNTRVJUX0VYSVQoX2V4aXQoNDIpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSg0MiksICIiKTsK
LQotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgLy8gT2YgYWxsIHNpZ25hbHMgZWZmZWN0cyBvbiB0
aGUgcHJvY2VzcyBleGl0IGNvZGUsIG9ubHkgdGhvc2Ugb2YgU0lHQUJSVAotICAvLyBhcmUgZG9j
dW1lbnRlZCBvbiBXaW5kb3dzLgotICAvLyBTZWUgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9l
bi11cy9saWJyYXJ5L2R3d3prdDRjKFZTLjcxKS5hc3B4LgotICBFWFBFQ1RfRVhJVChyYWlzZShT
SUdBQlJUKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMyksICIiKTsKLSNlbHNlCi0gIEVYUEVD
VF9FWElUKHJhaXNlKFNJR0tJTEwpLCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChTSUdLSUxMKSwg
IiIpIDw8ICJmb28iOwotICBBU1NFUlRfRVhJVChyYWlzZShTSUdVU1IyKSwgdGVzdGluZzo6S2ls
bGVkQnlTaWduYWwoU0lHVVNSMiksICIiKSA8PCAiYmFyIjsKLQotICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfRVhJVChfZXhpdCgwKSwgdGVzdGluZzo6S2ls
bGVkQnlTaWduYWwoU0lHU0VHViksICIiKQotICAgICAgICA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4
cGVjdGVkLCB0b28uIjsKLSAgfSwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgdG9vLiIpOwot
I2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX0VYSVQocmFpc2UoU0lHU0VHViksIHRlc3Rpbmc6OkV4
aXRlZFdpdGhDb2RlKDApLCAiIikKLSAgICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZC4iOwotICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOwotfQotCi1URVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgRXhpdE1hY3JvcykgewotICBUZXN0RXhpdE1hY3JvcygpOwotfQotCi1U
RVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRXhpdE1hY3Jvc1VzaW5nRm9yaykgewotICB0ZXN0aW5n
OjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspID0gdHJ1ZTsKLSAgVGVzdEV4aXRNYWNy
b3MoKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEludmFsaWRTdHlsZSkgewotICB0
ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInJvY29jbyI7Ci0gIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9ERUFUSChfZXhpdCgw
KSwgIiIpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIjsKLSAgfSwgIlRoaXMgZmFpbHVy
ZSBpcyBleHBlY3RlZC4iKTsKLX0KLQotLy8gQSBEZWF0aFRlc3RGYWN0b3J5IHRoYXQgcmV0dXJu
cyBNb2NrRGVhdGhUZXN0cy4KLWNsYXNzIE1vY2tEZWF0aFRlc3RGYWN0b3J5IDogcHVibGljIERl
YXRoVGVzdEZhY3RvcnkgewotIHB1YmxpYzoKLSAgTW9ja0RlYXRoVGVzdEZhY3RvcnkoKTsKLSAg
dmlydHVhbCBib29sIENyZWF0ZShjb25zdCBjaGFyKiBzdGF0ZW1lbnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UkUqIHJlZ2V4LAotICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBEZWF0aFRlc3QqKiB0ZXN0
KTsKLQotICAvLyBTZXRzIHRoZSBwYXJhbWV0ZXJzIGZvciBzdWJzZXF1ZW50IGNhbGxzIHRvIENy
ZWF0ZS4KLSAgdm9pZCBTZXRQYXJhbWV0ZXJzKGJvb2wgY3JlYXRlLCBEZWF0aFRlc3Q6OlRlc3RS
b2xlIHJvbGUsCi0gICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdHVzLCBib29sIHBhc3NlZCk7
Ci0KLSAgLy8gQWNjZXNzb3JzLgotICBpbnQgQXNzdW1lUm9sZUNhbGxzKCkgY29uc3QgeyByZXR1
cm4gYXNzdW1lX3JvbGVfY2FsbHNfOyB9Ci0gIGludCBXYWl0Q2FsbHMoKSBjb25zdCB7IHJldHVy
biB3YWl0X2NhbGxzXzsgfQotICBpbnQgUGFzc2VkQ2FsbHMoKSBjb25zdCB7IHJldHVybiBwYXNz
ZWRfYXJnc18uc2l6ZSgpOyB9Ci0gIGJvb2wgUGFzc2VkQXJndW1lbnQoaW50IG4pIGNvbnN0IHsg
cmV0dXJuIHBhc3NlZF9hcmdzX1tuXTsgfQotICBpbnQgQWJvcnRDYWxscygpIGNvbnN0IHsgcmV0
dXJuIGFib3J0X2FyZ3NfLnNpemUoKTsgfQotICBEZWF0aFRlc3Q6OkFib3J0UmVhc29uIEFib3J0
QXJndW1lbnQoaW50IG4pIGNvbnN0IHsKLSAgICByZXR1cm4gYWJvcnRfYXJnc19bbl07Ci0gIH0K
LSAgYm9vbCBUZXN0RGVsZXRlZCgpIGNvbnN0IHsgcmV0dXJuIHRlc3RfZGVsZXRlZF87IH0KLQot
IHByaXZhdGU6Ci0gIGZyaWVuZCBjbGFzcyBNb2NrRGVhdGhUZXN0OwotICAvLyBJZiB0cnVlLCBD
cmVhdGUgd2lsbCByZXR1cm4gYSBNb2NrRGVhdGhUZXN0OyBvdGhlcndpc2UgaXQgcmV0dXJucwot
ICAvLyBOVUxMLgotICBib29sIGNyZWF0ZV87Ci0gIC8vIFRoZSB2YWx1ZSBhIE1vY2tEZWF0aFRl
c3Qgd2lsbCByZXR1cm4gZnJvbSBpdHMgQXNzdW1lUm9sZSBtZXRob2QuCi0gIERlYXRoVGVzdDo6
VGVzdFJvbGUgcm9sZV87Ci0gIC8vIFRoZSB2YWx1ZSBhIE1vY2tEZWF0aFRlc3Qgd2lsbCByZXR1
cm4gZnJvbSBpdHMgV2FpdCBtZXRob2QuCi0gIGludCBzdGF0dXNfOwotICAvLyBUaGUgdmFsdWUg
YSBNb2NrRGVhdGhUZXN0IHdpbGwgcmV0dXJuIGZyb20gaXRzIFBhc3NlZCBtZXRob2QuCi0gIGJv
b2wgcGFzc2VkXzsKLQotICAvLyBOdW1iZXIgb2YgdGltZXMgQXNzdW1lUm9sZSB3YXMgY2FsbGVk
LgotICBpbnQgYXNzdW1lX3JvbGVfY2FsbHNfOwotICAvLyBOdW1iZXIgb2YgdGltZXMgV2FpdCB3
YXMgY2FsbGVkLgotICBpbnQgd2FpdF9jYWxsc187Ci0gIC8vIFRoZSBhcmd1bWVudHMgdG8gdGhl
IGNhbGxzIHRvIFBhc3NlZCBzaW5jZSB0aGUgbGFzdCBjYWxsIHRvCi0gIC8vIFNldFBhcmFtZXRl
cnMuCi0gIHN0ZDo6dmVjdG9yPGJvb2w+IHBhc3NlZF9hcmdzXzsKLSAgLy8gVGhlIGFyZ3VtZW50
cyB0byB0aGUgY2FsbHMgdG8gQWJvcnQgc2luY2UgdGhlIGxhc3QgY2FsbCB0bwotICAvLyBTZXRQ
YXJhbWV0ZXJzLgotICBzdGQ6OnZlY3RvcjxEZWF0aFRlc3Q6OkFib3J0UmVhc29uPiBhYm9ydF9h
cmdzXzsKLSAgLy8gVHJ1ZSBpZiB0aGUgbGFzdCBNb2NrRGVhdGhUZXN0IHJldHVybmVkIGJ5IENy
ZWF0ZSBoYXMgYmVlbgotICAvLyBkZWxldGVkLgotICBib29sIHRlc3RfZGVsZXRlZF87Ci19Owot
Ci0KLS8vIEEgRGVhdGhUZXN0IGltcGxlbWVudGF0aW9uIHVzZWZ1bCBpbiB0ZXN0aW5nLiAgSXQg
cmV0dXJucyB2YWx1ZXMgc2V0Ci0vLyBhdCBpdHMgY3JlYXRpb24gZnJvbSBpdHMgdmFyaW91cyBp
bmhlcml0ZWQgRGVhdGhUZXN0IG1ldGhvZHMsIGFuZAotLy8gcmVwb3J0cyBjYWxscyB0byB0aG9z
ZSBtZXRob2RzIHRvIGl0cyBwYXJlbnQgTW9ja0RlYXRoVGVzdEZhY3RvcnkKLS8vIG9iamVjdC4K
LWNsYXNzIE1vY2tEZWF0aFRlc3QgOiBwdWJsaWMgRGVhdGhUZXN0IHsKLSBwdWJsaWM6Ci0gIE1v
Y2tEZWF0aFRlc3QoTW9ja0RlYXRoVGVzdEZhY3RvcnkgKnBhcmVudCwKLSAgICAgICAgICAgICAg
ICBUZXN0Um9sZSByb2xlLCBpbnQgc3RhdHVzLCBib29sIHBhc3NlZCkgOgotICAgICAgcGFyZW50
XyhwYXJlbnQpLCByb2xlXyhyb2xlKSwgc3RhdHVzXyhzdGF0dXMpLCBwYXNzZWRfKHBhc3NlZCkg
ewotICB9Ci0gIHZpcnR1YWwgfk1vY2tEZWF0aFRlc3QoKSB7Ci0gICAgcGFyZW50Xy0+dGVzdF9k
ZWxldGVkXyA9IHRydWU7Ci0gIH0KLSAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCkgewot
ICAgICsrcGFyZW50Xy0+YXNzdW1lX3JvbGVfY2FsbHNfOwotICAgIHJldHVybiByb2xlXzsKLSAg
fQotICB2aXJ0dWFsIGludCBXYWl0KCkgewotICAgICsrcGFyZW50Xy0+d2FpdF9jYWxsc187Ci0g
ICAgcmV0dXJuIHN0YXR1c187Ci0gIH0KLSAgdmlydHVhbCBib29sIFBhc3NlZChib29sIGV4aXRf
c3RhdHVzX29rKSB7Ci0gICAgcGFyZW50Xy0+cGFzc2VkX2FyZ3NfLnB1c2hfYmFjayhleGl0X3N0
YXR1c19vayk7Ci0gICAgcmV0dXJuIHBhc3NlZF87Ci0gIH0KLSAgdmlydHVhbCB2b2lkIEFib3J0
KEFib3J0UmVhc29uIHJlYXNvbikgewotICAgIHBhcmVudF8tPmFib3J0X2FyZ3NfLnB1c2hfYmFj
ayhyZWFzb24pOwotICB9Ci0gcHJpdmF0ZToKLSAgTW9ja0RlYXRoVGVzdEZhY3RvcnkqIGNvbnN0
IHBhcmVudF87Ci0gIGNvbnN0IFRlc3RSb2xlIHJvbGVfOwotICBjb25zdCBpbnQgc3RhdHVzXzsK
LSAgY29uc3QgYm9vbCBwYXNzZWRfOwotfTsKLQotCi0vLyBNb2NrRGVhdGhUZXN0RmFjdG9yeSBj
b25zdHJ1Y3Rvci4KLU1vY2tEZWF0aFRlc3RGYWN0b3J5OjpNb2NrRGVhdGhUZXN0RmFjdG9yeSgp
Ci0gICAgOiBjcmVhdGVfKHRydWUpLAotICAgICAgcm9sZV8oRGVhdGhUZXN0OjpPVkVSU0VFX1RF
U1QpLAotICAgICAgc3RhdHVzXygwKSwKLSAgICAgIHBhc3NlZF8odHJ1ZSksCi0gICAgICBhc3N1
bWVfcm9sZV9jYWxsc18oMCksCi0gICAgICB3YWl0X2NhbGxzXygwKSwKLSAgICAgIHBhc3NlZF9h
cmdzXygpLAotICAgICAgYWJvcnRfYXJnc18oKSB7Ci19Ci0KLQotLy8gU2V0cyB0aGUgcGFyYW1l
dGVycyBmb3Igc3Vic2VxdWVudCBjYWxscyB0byBDcmVhdGUuCi12b2lkIE1vY2tEZWF0aFRlc3RG
YWN0b3J5OjpTZXRQYXJhbWV0ZXJzKGJvb2wgY3JlYXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEZWF0aFRlc3Q6OlRlc3RSb2xlIHJvbGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0dXMsIGJvb2wgcGFzc2VkKSB7
Ci0gIGNyZWF0ZV8gPSBjcmVhdGU7Ci0gIHJvbGVfID0gcm9sZTsKLSAgc3RhdHVzXyA9IHN0YXR1
czsKLSAgcGFzc2VkXyA9IHBhc3NlZDsKLQotICBhc3N1bWVfcm9sZV9jYWxsc18gPSAwOwotICB3
YWl0X2NhbGxzXyA9IDA7Ci0gIHBhc3NlZF9hcmdzXy5jbGVhcigpOwotICBhYm9ydF9hcmdzXy5j
bGVhcigpOwotfQotCi0KLS8vIFNldHMgdGVzdCB0byBOVUxMIChpZiBjcmVhdGVfIGlzIGZhbHNl
KSBvciB0byB0aGUgYWRkcmVzcyBvZiBhIG5ldwotLy8gTW9ja0RlYXRoVGVzdCBvYmplY3Qgd2l0
aCBwYXJhbWV0ZXJzIHRha2VuIGZyb20gdGhlIGxhc3QgY2FsbAotLy8gdG8gU2V0UGFyYW1ldGVy
cyAoaWYgY3JlYXRlXyBpcyB0cnVlKS4gIEFsd2F5cyByZXR1cm5zIHRydWUuCi1ib29sIE1vY2tE
ZWF0aFRlc3RGYWN0b3J5OjpDcmVhdGUoY29uc3QgY2hhciogLypzdGF0ZW1lbnQqLywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpS
RSogLypyZWdleCovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIC8qZmlsZSovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKmxp
bmUqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWF0aFRlc3QqKiB0ZXN0
KSB7Ci0gIHRlc3RfZGVsZXRlZF8gPSBmYWxzZTsKLSAgaWYgKGNyZWF0ZV8pIHsKLSAgICAqdGVz
dCA9IG5ldyBNb2NrRGVhdGhUZXN0KHRoaXMsIHJvbGVfLCBzdGF0dXNfLCBwYXNzZWRfKTsKLSAg
fSBlbHNlIHsKLSAgICAqdGVzdCA9IE5VTEw7Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLS8v
IEEgdGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIHRoZSBsb2dpYyBvZiB0aGUgR1RFU1RfREVBVEhf
VEVTVF8gbWFjcm8uCi0vLyBJdCBpbnN0YWxscyBhIE1vY2tEZWF0aFRlc3RGYWN0b3J5IHRoYXQg
aXMgdXNlZCBmb3IgdGhlIGR1cmF0aW9uCi0vLyBvZiB0aGUgdGVzdCBjYXNlLgotY2xhc3MgTWFj
cm9Mb2dpY0RlYXRoVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0g
IHN0YXRpYyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVwbGFjZURlYXRoVGVzdEZhY3RvcnkqIHJlcGxh
Y2VyXzsKLSAgc3RhdGljIE1vY2tEZWF0aFRlc3RGYWN0b3J5KiBmYWN0b3J5XzsKLQotICBzdGF0
aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgewotICAgIGZhY3RvcnlfID0gbmV3IE1vY2tEZWF0aFRl
c3RGYWN0b3J5OwotICAgIHJlcGxhY2VyXyA9IG5ldyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVwbGFj
ZURlYXRoVGVzdEZhY3RvcnkoZmFjdG9yeV8pOwotICB9Ci0KLSAgc3RhdGljIHZvaWQgVGVhckRv
d25UZXN0Q2FzZSgpIHsKLSAgICBkZWxldGUgcmVwbGFjZXJfOwotICAgIHJlcGxhY2VyXyA9IE5V
TEw7Ci0gICAgZGVsZXRlIGZhY3RvcnlfOwotICAgIGZhY3RvcnlfID0gTlVMTDsKLSAgfQotCi0g
IC8vIFJ1bnMgYSBkZWF0aCB0ZXN0IHRoYXQgYnJlYWtzIHRoZSBydWxlcyBieSByZXR1cm5pbmcu
ICBTdWNoIGEgZGVhdGgKLSAgLy8gdGVzdCBjYW5ub3QgYmUgcnVuIGRpcmVjdGx5IGZyb20gYSB0
ZXN0IHJvdXRpbmUgdGhhdCB1c2VzIGEKLSAgLy8gTW9ja0RlYXRoVGVzdCwgb3IgdGhlIHJlbWFp
bmRlciBvZiB0aGUgcm91dGluZSB3aWxsIG5vdCBiZSBleGVjdXRlZC4KLSAgc3RhdGljIHZvaWQg
UnVuUmV0dXJuaW5nRGVhdGhUZXN0KGJvb2wqIGZsYWcpIHsKLSAgICBBU1NFUlRfREVBVEgoeyAg
Ly8gTk9MSU5UCi0gICAgICAqZmxhZyA9IHRydWU7Ci0gICAgICByZXR1cm47Ci0gICAgfSwgIiIp
OwotICB9Ci19OwotCi10ZXN0aW5nOjppbnRlcm5hbDo6UmVwbGFjZURlYXRoVGVzdEZhY3Rvcnkq
IE1hY3JvTG9naWNEZWF0aFRlc3Q6OnJlcGxhY2VyXwotICAgID0gTlVMTDsKLU1vY2tEZWF0aFRl
c3RGYWN0b3J5KiBNYWNyb0xvZ2ljRGVhdGhUZXN0OjpmYWN0b3J5XyA9IE5VTEw7Ci0KLQotLy8g
VGVzdCB0aGF0IG5vdGhpbmcgaGFwcGVucyB3aGVuIHRoZSBmYWN0b3J5IGRvZXNuJ3QgcmV0dXJu
IGEgRGVhdGhUZXN0OgotVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIE5vdGhpbmdIYXBwZW5z
KSB7Ci0gIGJvb2wgZmxhZyA9IGZhbHNlOwotICBmYWN0b3J5Xy0+U2V0UGFyYW1ldGVycyhmYWxz
ZSwgRGVhdGhUZXN0OjpPVkVSU0VFX1RFU1QsIDAsIHRydWUpOwotICBFWFBFQ1RfREVBVEgoZmxh
ZyA9IHRydWUsICIiKTsKLSAgRVhQRUNUX0ZBTFNFKGZsYWcpOwotICBFWFBFQ1RfRVEoMCwgZmFj
dG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5XYWl0
Q2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7Ci0gIEVY
UEVDVF9FUSgwLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKLSAgRVhQRUNUX0ZBTFNFKGZhY3Rv
cnlfLT5UZXN0RGVsZXRlZCgpKTsKLX0KLQotLy8gVGVzdCB0aGF0IHRoZSBwYXJlbnQgcHJvY2Vz
cyBkb2Vzbid0IHJ1biB0aGUgZGVhdGggdGVzdCBjb2RlLAotLy8gYW5kIHRoYXQgdGhlIFBhc3Nl
ZCBtZXRob2QgcmV0dXJucyBmYWxzZSB3aGVuIHRoZSAoc2ltdWxhdGVkKQotLy8gY2hpbGQgcHJv
Y2VzcyBleGl0cyB3aXRoIHN0YXR1cyAwOgotVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENo
aWxkRXhpdHNTdWNjZXNzZnVsbHkpIHsKLSAgYm9vbCBmbGFnID0gZmFsc2U7Ci0gIGZhY3Rvcnlf
LT5TZXRQYXJhbWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6T1ZFUlNFRV9URVNULCAwLCB0cnVlKTsK
LSAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7Ci0gIEVYUEVDVF9GQUxTRShmbGFnKTsK
LSAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5Bc3N1bWVSb2xlQ2FsbHMoKSk7Ci0gIEVYUEVDVF9F
USgxLCBmYWN0b3J5Xy0+V2FpdENhbGxzKCkpOwotICBBU1NFUlRfRVEoMSwgZmFjdG9yeV8tPlBh
c3NlZENhbGxzKCkpOwotICBFWFBFQ1RfRkFMU0UoZmFjdG9yeV8tPlBhc3NlZEFyZ3VtZW50KDAp
KTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOwotICBFWFBFQ1RfVFJV
RShmYWN0b3J5Xy0+VGVzdERlbGV0ZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIFBhc3Nl
ZCBtZXRob2Qgd2FzIGdpdmVuIHRoZSBhcmd1bWVudCAidHJ1ZSIgd2hlbgotLy8gdGhlIChzaW11
bGF0ZWQpIGNoaWxkIHByb2Nlc3MgZXhpdHMgd2l0aCBzdGF0dXMgMToKLVRFU1RfRihNYWNyb0xv
Z2ljRGVhdGhUZXN0LCBDaGlsZEV4aXRzVW5zdWNjZXNzZnVsbHkpIHsKLSAgYm9vbCBmbGFnID0g
ZmFsc2U7Ci0gIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6T1ZFUlNF
RV9URVNULCAxLCB0cnVlKTsKLSAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7Ci0gIEVY
UEVDVF9GQUxTRShmbGFnKTsKLSAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5Bc3N1bWVSb2xlQ2Fs
bHMoKSk7Ci0gIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+V2FpdENhbGxzKCkpOwotICBBU1NFUlRf
RVEoMSwgZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOwotICBFWFBFQ1RfVFJVRShmYWN0b3J5Xy0+
UGFzc2VkQXJndW1lbnQoMCkpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPkFib3J0Q2FsbHMo
KSk7Ci0gIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCB0aGUgKHNpbXVsYXRlZCkgY2hpbGQgcHJvY2VzcyBleGVjdXRlcyB0aGUgZGVhdGgg
dGVzdAotLy8gY29kZSwgYW5kIGlzIGFib3J0ZWQgd2l0aCB0aGUgY29ycmVjdCBBYm9ydFJlYXNv
biBpZiBpdAotLy8gZXhlY3V0ZXMgYSByZXR1cm4gc3RhdGVtZW50LgotVEVTVF9GKE1hY3JvTG9n
aWNEZWF0aFRlc3QsIENoaWxkUGVyZm9ybXNSZXR1cm4pIHsKLSAgYm9vbCBmbGFnID0gZmFsc2U7
Ci0gIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6RVhFQ1VURV9URVNU
LCAwLCB0cnVlKTsKLSAgUnVuUmV0dXJuaW5nRGVhdGhUZXN0KCZmbGFnKTsKLSAgRVhQRUNUX1RS
VUUoZmxhZyk7Ci0gIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOwot
ICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPldhaXRDYWxscygpKTsKLSAgRVhQRUNUX0VRKDAsIGZh
Y3RvcnlfLT5QYXNzZWRDYWxscygpKTsKLSAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5BYm9ydENh
bGxzKCkpOwotICBFWFBFQ1RfRVEoRGVhdGhUZXN0OjpURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9T
VEFURU1FTlQsCi0gICAgICAgICAgICBmYWN0b3J5Xy0+QWJvcnRBcmd1bWVudCgwKSk7Ci0gIEVY
UEVDVF9UUlVFKGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0
aGUgKHNpbXVsYXRlZCkgY2hpbGQgcHJvY2VzcyBpcyBhYm9ydGVkIHdpdGggdGhlCi0vLyBjb3Jy
ZWN0IEFib3J0UmVhc29uIGlmIGl0IGRvZXMgbm90IGRpZS4KLVRFU1RfRihNYWNyb0xvZ2ljRGVh
dGhUZXN0LCBDaGlsZERvZXNOb3REaWUpIHsKLSAgYm9vbCBmbGFnID0gZmFsc2U7Ci0gIGZhY3Rv
cnlfLT5TZXRQYXJhbWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6RVhFQ1VURV9URVNULCAwLCB0cnVl
KTsKLSAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7Ci0gIEVYUEVDVF9UUlVFKGZsYWcp
OwotICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKLSAgRVhQRUNU
X0VRKDAsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+
UGFzc2VkQ2FsbHMoKSk7Ci0gIC8vIFRoaXMgdGltZSB0aGVyZSBhcmUgdHdvIGNhbGxzIHRvIEFi
b3J0OiBvbmUgc2luY2UgdGhlIHRlc3QgZGlkbid0Ci0gIC8vIGRpZSwgYW5kIGFub3RoZXIgZnJv
bSB0aGUgUmV0dXJuU2VudGluZWwgd2hlbiBpdCdzIGRlc3Ryb3llZC4gIFRoZQotICAvLyBzZW50
aW5lbCBub3JtYWxseSBpc24ndCBkZXN0cm95ZWQgaWYgYSB0ZXN0IGRvZXNuJ3QgZGllLCBzaW5j
ZQotICAvLyBfZXhpdCgyKSBpcyBjYWxsZWQgaW4gdGhhdCBjYXNlIGJ5IEZvcmtpbmdEZWF0aFRl
c3QsIGJ1dCBub3QgYnkKLSAgLy8gb3VyIE1vY2tEZWF0aFRlc3QuCi0gIEFTU0VSVF9FUSgyLCBm
YWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKLSAgRVhQRUNUX0VRKERlYXRoVGVzdDo6VEVTVF9ESURf
Tk9UX0RJRSwKLSAgICAgICAgICAgIGZhY3RvcnlfLT5BYm9ydEFyZ3VtZW50KDApKTsKLSAgRVhQ
RUNUX0VRKERlYXRoVGVzdDo6VEVTVF9FTkNPVU5URVJFRF9SRVRVUk5fU1RBVEVNRU5ULAotICAg
ICAgICAgICAgZmFjdG9yeV8tPkFib3J0QXJndW1lbnQoMSkpOwotICBFWFBFQ1RfVFJVRShmYWN0
b3J5Xy0+VGVzdERlbGV0ZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBzdWNjZXNzZnVsIGRl
YXRoIHRlc3QgZG9lcyBub3QgcmVnaXN0ZXIgYSBzdWNjZXNzZnVsCi0vLyB0ZXN0IHBhcnQuCi1U
RVNUKFN1Y2Nlc3NSZWdpc3RyYXRpb25EZWF0aFRlc3QsIE5vU3VjY2Vzc1BhcnQpIHsKLSAgRVhQ
RUNUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci0gIEVYUEVDVF9FUSgwLCBHZXRVbml0VGVzdEltcGwo
KS0+Y3VycmVudF90ZXN0X3Jlc3VsdCgpLT50b3RhbF9wYXJ0X2NvdW50KCkpOwotfQotCi1URVNU
KFN0cmVhbWluZ0Fzc2VydGlvbnNEZWF0aFRlc3QsIERlYXRoVGVzdCkgewotICBFWFBFQ1RfREVB
VEgoX2V4aXQoMSksICIiKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKLSAgQVNTRVJUX0RFQVRI
KF9leGl0KDEpLCAiIikgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9ERUFUSChfZXhpdCgwKSwgIiIpIDw8
ICJleHBlY3RlZCBmYWlsdXJlIjsKLSAgfSwgImV4cGVjdGVkIGZhaWx1cmUiKTsKLSAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNTRVJUX0RFQVRIKF9leGl0KDApLCAi
IikgPDwgImV4cGVjdGVkIGZhaWx1cmUiOwotICB9LCAiZXhwZWN0ZWQgZmFpbHVyZSIpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IEdldExhc3RFcnJub0Rlc2NyaXB0aW9uIHJldHVybnMgYW4gZW1wdHkg
c3RyaW5nIHdoZW4gdGhlCi0vLyBsYXN0IGVycm9yIGlzIDAgYW5kIG5vbi1lbXB0eSBzdHJpbmcg
d2hlbiBpdCBpcyBub24temVyby4KLVRFU1QoR2V0TGFzdEVycm5vRGVzY3JpcHRpb24sIEdldExh
c3RFcnJub0Rlc2NyaXB0aW9uV29ya3MpIHsKLSAgZXJybm8gPSBFTk9FTlQ7Ci0gIEVYUEVDVF9T
VFJORSgiIiwgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKS5jX3N0cigpKTsKLSAgZXJybm8gPSAw
OwotICBFWFBFQ1RfU1RSRVEoIiIsIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkuY19zdHIoKSk7
Ci19Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi1URVNUKEF1dG9IYW5kbGVUZXN0LCBBdXRvSGFu
ZGxlV29ya3MpIHsKLSAgSEFORExFIGhhbmRsZSA9IDo6Q3JlYXRlRXZlbnQoTlVMTCwgRkFMU0Us
IEZBTFNFLCBOVUxMKTsKLSAgQVNTRVJUX05FKElOVkFMSURfSEFORExFX1ZBTFVFLCBoYW5kbGUp
OwotCi0gIC8vIFRlc3RzIHRoYXQgdGhlIEF1dG9IYW5kbGUgaXMgY29ycmVjdGx5IGluaXRpYWxp
emVkIHdpdGggYSBoYW5kbGUuCi0gIHRlc3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxlIGF1dG9f
aGFuZGxlKGhhbmRsZSk7Ci0gIEVYUEVDVF9FUShoYW5kbGUsIGF1dG9faGFuZGxlLkdldCgpKTsK
LQotICAvLyBUZXN0cyB0aGF0IFJlc2V0IGFzc2lnbnMgSU5WQUxJRF9IQU5ETEVfVkFMVUUuCi0g
IC8vIE5vdGUgdGhhdCB0aGlzIGNhbm5vdCB2ZXJpZnkgd2hldGhlciB0aGUgb3JpZ2luYWwgaGFu
ZGxlIGlzIGNsb3NlZC4KLSAgYXV0b19oYW5kbGUuUmVzZXQoKTsKLSAgRVhQRUNUX0VRKElOVkFM
SURfSEFORExFX1ZBTFVFLCBhdXRvX2hhbmRsZS5HZXQoKSk7Ci0KLSAgLy8gVGVzdHMgdGhhdCBS
ZXNldCBhc3NpZ25zIHRoZSBuZXcgaGFuZGxlLgotICAvLyBOb3RlIHRoYXQgdGhpcyBjYW5ub3Qg
dmVyaWZ5IHdoZXRoZXIgdGhlIG9yaWdpbmFsIGhhbmRsZSBpcyBjbG9zZWQuCi0gIGhhbmRsZSA9
IDo6Q3JlYXRlRXZlbnQoTlVMTCwgRkFMU0UsIEZBTFNFLCBOVUxMKTsKLSAgQVNTRVJUX05FKElO
VkFMSURfSEFORExFX1ZBTFVFLCBoYW5kbGUpOwotICBhdXRvX2hhbmRsZS5SZXNldChoYW5kbGUp
OwotICBFWFBFQ1RfRVEoaGFuZGxlLCBhdXRvX2hhbmRsZS5HZXQoKSk7Ci0KLSAgLy8gVGVzdHMg
dGhhdCBBdXRvSGFuZGxlIGNvbnRhaW5zIElOVkFMSURfSEFORExFX1ZBTFVFIGJ5IGRlZmF1bHQu
Ci0gIHRlc3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxlIGF1dG9faGFuZGxlMjsKLSAgRVhQRUNU
X0VRKElOVkFMSURfSEFORExFX1ZBTFVFLCBhdXRvX2hhbmRsZTIuR2V0KCkpOwotfQotI2VuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi10eXBlZGVmIHVu
c2lnbmVkIF9faW50NjQgQmlnZ2VzdFBhcnNhYmxlOwotdHlwZWRlZiBzaWduZWQgX19pbnQ2NCBC
aWdnZXN0U2lnbmVkUGFyc2FibGU7Ci1jb25zdCBCaWdnZXN0UGFyc2FibGUga0JpZ2dlc3RQYXJz
YWJsZU1heCA9IFVMTE9OR19NQVg7Ci1jb25zdCBCaWdnZXN0UGFyc2FibGUga0JpZ2dlc3RTaWdu
ZWRQYXJzYWJsZU1heCA9IExMT05HX01BWDsKLSNlbHNlCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcg
bG9uZyBCaWdnZXN0UGFyc2FibGU7Ci10eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgQmlnZ2VzdFNp
Z25lZFBhcnNhYmxlOwotY29uc3QgQmlnZ2VzdFBhcnNhYmxlIGtCaWdnZXN0UGFyc2FibGVNYXgg
PQotICAgIDo6c3RkOjpudW1lcmljX2xpbWl0czxCaWdnZXN0UGFyc2FibGU+OjptYXgoKTsKLWNv
bnN0IEJpZ2dlc3RTaWduZWRQYXJzYWJsZSBrQmlnZ2VzdFNpZ25lZFBhcnNhYmxlTWF4ID0KLSAg
ICA6OnN0ZDo6bnVtZXJpY19saW1pdHM8QmlnZ2VzdFNpZ25lZFBhcnNhYmxlPjo6bWF4KCk7Ci0j
ZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0
LCBSZWplY3RzSW52YWxpZEZvcm1hdCkgewotICBCaWdnZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsK
LQotICAvLyBSZWplY3RzIG5vbi1udW1iZXJzLgotICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFs
TnVtYmVyKFN0cmluZygibm9uLW51bWJlciBzdHJpbmciKSwgJnJlc3VsdCkpOwotCi0gIC8vIFJl
amVjdHMgbnVtYmVycyB3aXRoIHdoaXRlc3BhY2UgcHJlZml4LgotICBFWFBFQ1RfRkFMU0UoUGFy
c2VOYXR1cmFsTnVtYmVyKFN0cmluZygiIDEyMyIpLCAmcmVzdWx0KSk7Ci0KLSAgLy8gUmVqZWN0
cyBuZWdhdGl2ZSBudW1iZXJzLgotICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKFN0
cmluZygiLTEyMyIpLCAmcmVzdWx0KSk7Ci0KLSAgLy8gUmVqZWN0cyBudW1iZXJzIHN0YXJ0aW5n
IHdpdGggYSBwbHVzIHNpZ24uCi0gIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoU3Ry
aW5nKCIrMTIzIiksICZyZXN1bHQpKTsKLSAgZXJybm8gPSAwOwotfQotCi1URVNUKFBhcnNlTmF0
dXJhbE51bWJlclRlc3QsIFJlamVjdHNPdmVyZmxvd25OdW1iZXJzKSB7Ci0gIEJpZ2dlc3RQYXJz
YWJsZSByZXN1bHQgPSAwOwotCi0gIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoU3Ry
aW5nKCI5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSIpLCAmcmVzdWx0KSk7Ci0KLSAgc2lnbmVkIGNo
YXIgY2hhcl9yZXN1bHQgPSAwOwotICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKFN0
cmluZygiMjAwIiksICZjaGFyX3Jlc3VsdCkpOwotICBlcnJubyA9IDA7Ci19Ci0KLVRFU1QoUGFy
c2VOYXR1cmFsTnVtYmVyVGVzdCwgQWNjZXB0c1ZhbGlkTnVtYmVycykgewotICBCaWdnZXN0UGFy
c2FibGUgcmVzdWx0ID0gMDsKLQotICByZXN1bHQgPSAwOwotICBBU1NFUlRfVFJVRShQYXJzZU5h
dHVyYWxOdW1iZXIoU3RyaW5nKCIxMjMiKSwgJnJlc3VsdCkpOwotICBFWFBFQ1RfRVEoMTIzVSwg
cmVzdWx0KTsKLQotICAvLyBDaGVjayAwIGFzIGFuIGVkZ2UgY2FzZS4KLSAgcmVzdWx0ID0gMTsK
LSAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygiMCIpLCAmcmVzdWx0KSk7
Ci0gIEVYUEVDVF9FUSgwVSwgcmVzdWx0KTsKLQotICByZXN1bHQgPSAxOwotICBBU1NFUlRfVFJV
RShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCIwMDAwMCIpLCAmcmVzdWx0KSk7Ci0gIEVYUEVD
VF9FUSgwVSwgcmVzdWx0KTsKLX0KLQotVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBBY2Nl
cHRzVHlwZUxpbWl0cykgewotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGtCaWdnZXN0UGFyc2Fi
bGVNYXg7Ci0KLSAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7Ci0gIEVYUEVDVF9UUlVFKFBh
cnNlTmF0dXJhbE51bWJlcihtc2cuR2V0U3RyaW5nKCksICZyZXN1bHQpKTsKLSAgRVhQRUNUX0VR
KGtCaWdnZXN0UGFyc2FibGVNYXgsIHJlc3VsdCk7Ci0KLSAgTWVzc2FnZSBtc2cyOwotICBtc2cy
IDw8IGtCaWdnZXN0U2lnbmVkUGFyc2FibGVNYXg7Ci0KLSAgQmlnZ2VzdFNpZ25lZFBhcnNhYmxl
IHNpZ25lZF9yZXN1bHQgPSAwOwotICBFWFBFQ1RfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIobXNn
Mi5HZXRTdHJpbmcoKSwgJnNpZ25lZF9yZXN1bHQpKTsKLSAgRVhQRUNUX0VRKGtCaWdnZXN0U2ln
bmVkUGFyc2FibGVNYXgsIHNpZ25lZF9yZXN1bHQpOwotCi0gIE1lc3NhZ2UgbXNnMzsKLSAgbXNn
MyA8PCBJTlRfTUFYOwotCi0gIGludCBpbnRfcmVzdWx0ID0gMDsKLSAgRVhQRUNUX1RSVUUoUGFy
c2VOYXR1cmFsTnVtYmVyKG1zZzMuR2V0U3RyaW5nKCksICZpbnRfcmVzdWx0KSk7Ci0gIEVYUEVD
VF9FUShJTlRfTUFYLCBpbnRfcmVzdWx0KTsKLQotICBNZXNzYWdlIG1zZzQ7Ci0gIG1zZzQgPDwg
VUlOVF9NQVg7Ci0KLSAgdW5zaWduZWQgaW50IHVpbnRfcmVzdWx0ID0gMDsKLSAgRVhQRUNUX1RS
VUUoUGFyc2VOYXR1cmFsTnVtYmVyKG1zZzQuR2V0U3RyaW5nKCksICZ1aW50X3Jlc3VsdCkpOwot
ICBFWFBFQ1RfRVEoVUlOVF9NQVgsIHVpbnRfcmVzdWx0KTsKLX0KLQotVEVTVChQYXJzZU5hdHVy
YWxOdW1iZXJUZXN0LCBXb3Jrc0ZvclNob3J0ZXJJbnRlZ2VycykgewotICBzaG9ydCBzaG9ydF9y
ZXN1bHQgPSAwOwotICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCIxMjMi
KSwgJnNob3J0X3Jlc3VsdCkpOwotICBFWFBFQ1RfRVEoMTIzLCBzaG9ydF9yZXN1bHQpOwotCi0g
IHNpZ25lZCBjaGFyIGNoYXJfcmVzdWx0ID0gMDsKLSAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFs
TnVtYmVyKFN0cmluZygiMTIzIiksICZjaGFyX3Jlc3VsdCkpOwotICBFWFBFQ1RfRVEoMTIzLCBj
aGFyX3Jlc3VsdCk7Ci19Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi1URVNUKEVudmlyb25tZW50
VGVzdCwgSGFuZGxlRml0c0ludG9TaXplVCkgewotICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20p
OiBSZW1vdmUgdGhpcyB0ZXN0IGFmdGVyIHRoaXMgY29uZGl0aW9uIGlzIHZlcmlmaWVkCi0gIC8v
IGluIGEgc3RhdGljIGFzc2VydGlvbiBpbiBndGVzdC1kZWF0aC10ZXN0LmNjIGluIHRoZSBmdW5j
dGlvbgotICAvLyBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvci4KLSAgQVNTRVJUX1RSVUUoc2l6ZW9m
KEhBTkRMRSkgPD0gc2l6ZW9mKHNpemVfdCkpOwotfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5E
T1dTCi0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRC9BU1NFUlRfREVB
VEhfSUZfU1VQUE9SVEVEIHRyaWdnZXIKLS8vIGZhaWx1cmVzIHdoZW4gZGVhdGggdGVzdHMgYXJl
IGF2YWlsYWJsZSBvbiB0aGUgc3lzdGVtLgotVEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zRGVh
dGhUZXN0LCBFeHBlY3RzRGVhdGhXaGVuRGVhdGhUZXN0c0F2YWlsYWJsZSkgewotICBFWFBFQ1Rf
REVBVEhfSUZfU1VQUE9SVEVEKERpZUluc2lkZSgiQ29uZERlYXRoVGVzdEV4cGVjdE1hY3JvIiks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlYXRoIGluc2lkZSBDb25kRGVhdGhUZXN0
RXhwZWN0TWFjcm8iKTsKLSAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChEaWVJbnNpZGUoIkNv
bmREZWF0aFRlc3RBc3NlcnRNYWNybyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk
ZWF0aCBpbnNpZGUgQ29uZERlYXRoVGVzdEFzc2VydE1hY3JvIik7Ci0KLSAgLy8gRW1wdHkgc3Rh
dGVtZW50IHdpbGwgbm90IGNyYXNoLCB3aGljaCBtdXN0IHRyaWdnZXIgYSBmYWlsdXJlLgotICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKSwg
IiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKDss
ICIiKSwgIiIpOwotfQotCi0jZWxzZQotCi11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q2FwdHVy
ZVN0ZGVycjsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRDYXB0dXJlZFN0ZGVycjsKLXVz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmc7Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RF
QVRIX0lGX1NVUFBPUlRFRC9BU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEIGFyZSBzdGlsbAotLy8g
ZGVmaW5lZCBidXQgZG8gbm90IHRyaWdnZXIgZmFpbHVyZXMgd2hlbiBkZWF0aCB0ZXN0cyBhcmUg
bm90IGF2YWlsYWJsZSBvbgotLy8gdGhlIHN5c3RlbS4KLVRFU1QoQ29uZGl0aW9uYWxEZWF0aE1h
Y3Jvc1Rlc3QsIFdhcm5zV2hlbkRlYXRoVGVzdHNOb3RBdmFpbGFibGUpIHsKLSAgLy8gRW1wdHkg
c3RhdGVtZW50IHdpbGwgbm90IGNyYXNoLCBidXQgdGhhdCBzaG91bGQgbm90IHRyaWdnZXIgYSBm
YWlsdXJlCi0gIC8vIHdoZW4gZGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQuCi0gIENhcHR1
cmVTdGRlcnIoKTsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIik7Ci0gIFN0cmlu
ZyBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVycigpOwotICBBU1NFUlRfVFJVRShOVUxMICE9IHN0
cnN0cihvdXRwdXQuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlYXRo
IHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKSk7Ci0gIEFTU0VSVF9U
UlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLCAiOyIpKTsKLQotICAvLyBUaGUgc3Ry
ZWFtZWQgbWVzc2FnZSBzaG91bGQgbm90IGJlIHByaW50ZWQgYXMgdGhlcmUgaXMgbm8gdGVzdCBm
YWlsdXJlLgotICBDYXB0dXJlU3RkZXJyKCk7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQo
OywgIiIpIDw8ICJzdHJlYW1lZCBtZXNzYWdlIjsKLSAgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRl
cnIoKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCA9PSBzdHJzdHIob3V0cHV0LmNfc3RyKCksICJzdHJl
YW1lZCBtZXNzYWdlIikpOwotCi0gIENhcHR1cmVTdGRlcnIoKTsKLSAgQVNTRVJUX0RFQVRIX0lG
X1NVUFBPUlRFRCg7LCAiIik7ICAvLyBOT0xJTlQKLSAgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRl
cnIoKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCAhPSBzdHJzdHIob3V0cHV0LmNfc3RyKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJEZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCBv
biB0aGlzIHBsYXRmb3JtIikpOwotICBBU1NFUlRfVFJVRShOVUxMICE9IHN0cnN0cihvdXRwdXQu
Y19zdHIoKSwgIjsiKSk7Ci0KLSAgQ2FwdHVyZVN0ZGVycigpOwotICBBU1NFUlRfREVBVEhfSUZf
U1VQUE9SVEVEKDssICIiKSA8PCAic3RyZWFtZWQgbWVzc2FnZSI7ICAvLyBOT0xJTlQKLSAgb3V0
cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCA9PSBzdHJzdHIo
b3V0cHV0LmNfc3RyKCksICJzdHJlYW1lZCBtZXNzYWdlIikpOwotfQotCi12b2lkIEZ1bmNXaXRo
QXNzZXJ0KGludCogbikgewotICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHJldHVybjssICIi
KTsKLSAgKCpuKSsrOwotfQotCi0vLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JU
RUQgZG9lcyBub3QgcmV0dXJuIGZyb20gdGhlIGN1cnJlbnQKLS8vIGZ1bmN0aW9uIChhcyBBU1NF
UlRfREVBVEggZG9lcykgaWYgZGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQuCi1URVNUKENv
bmRpdGlvbmFsRGVhdGhNYWNyb3NUZXN0LCBBc3NlcnREZWF0RG9lc05vdFJldHVybmhJZlVuc3Vw
cG9ydGVkKSB7Ci0gIGludCBuID0gMDsKLSAgRnVuY1dpdGhBc3NlcnQoJm4pOwotICBFWFBFQ1Rf
RVEoMSwgbik7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLS8vIFRlc3Rz
IHRoYXQgdGhlIGRlYXRoIHRlc3QgbWFjcm9zIGV4cGFuZCB0byBjb2RlIHdoaWNoIG1heSBvciBt
YXkgbm90Ci0vLyBiZSBmb2xsb3dlZCBieSBvcGVyYXRvcjw8LCBhbmQgdGhhdCBpbiBlaXRoZXIg
Y2FzZSB0aGUgY29tcGxldGUgdGV4dAotLy8gY29tcHJpc2VzIG9ubHkgYSBzaW5nbGUgQysrIHN0
YXRlbWVudC4KLS8vCi0vLyBUaGUgc3ludGF4IHNob3VsZCB3b3JrIHdoZXRoZXIgZGVhdGggdGVz
dHMgYXJlIGF2YWlsYWJsZSBvciBub3QuCi1URVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NTeW50
YXhEZWF0aFRlc3QsIFNpbmdsZVN0YXRlbWVudCkgewotICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAg
ICAvLyBUaGlzIHdvdWxkIGZhaWwgaWYgZXhlY3V0ZWQ7IHRoaXMgaXMgYSBjb21waWxhdGlvbiB0
ZXN0IG9ubHkKLSAgICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHJldHVybiwgIiIpOwotCi0g
IGlmIChBbHdheXNUcnVlKCkpCi0gICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChfZXhpdCgx
KSwgIiIpOwotICBlbHNlCi0gICAgLy8gVGhpcyBlbXB0eSAiZWxzZSIgYnJhbmNoIGlzIG1lYW50
IHRvIGVuc3VyZSB0aGF0IEVYUEVDVF9ERUFUSAotICAgIC8vIGRvZXNuJ3QgZXhwYW5kIGludG8g
YW4gImlmIiBzdGF0ZW1lbnQgd2l0aG91dCBhbiAiZWxzZSIKLSAgICA7ICAvLyBOT0xJTlQKLQot
ICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAgICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHJldHVy
biwgIiIpIDw8ICJkaWQgbm90IGRpZSI7Ci0KLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgOyAg
Ly8gTk9MSU5UCi0gIGVsc2UKLSAgICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKF9leGl0KDEp
LCAiIikgPDwgMSA8PCAyIDw8IDM7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgY29uZGl0aW9uYWwgZGVh
dGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUgd2hpY2ggaW50ZXJhY3RzCi0vLyB3ZWxsIHdp
dGggc3dpdGNoIHN0YXRlbWVudHMuCi1URVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NTeW50YXhE
ZWF0aFRlc3QsIFN3aXRjaFN0YXRlbWVudCkgewotLy8gTWljcm9zb2Z0IGNvbXBpbGVyIHVzdWFs
bHkgY29tcGxhaW5zIGFib3V0IHN3aXRjaCBzdGF0ZW1lbnRzIHdpdGhvdXQKLS8vIGNhc2UgbGFi
ZWxzLiBXZSBzdXBwcmVzcyB0aGF0IHdhcm5pbmcgZm9yIHRoaXMgdGVzdC4KLSNpZmRlZiBfTVND
X1ZFUgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDA2
NSkKLSNlbmRpZiAgLy8gX01TQ19WRVIKLQotICBzd2l0Y2ggKDApCi0gICAgZGVmYXVsdDoKLSAg
ICAgIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQoMSksICIiKQotICAgICAgICAgIDw8
ICJleGl0IGluIGRlZmF1bHQgc3dpdGNoIGhhbmRsZXIiOwotCi0gIHN3aXRjaCAoMCkKLSAgICBj
YXNlIDA6Ci0gICAgICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKF9leGl0KDEpLCAiIikgPDwg
ImV4aXQgaW4gc3dpdGNoIGNhc2UiOwotCi0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgd2Fybmlu
Zyhwb3ApCi0jZW5kaWYgIC8vIF9NU0NfVkVSCi19Ci0KLS8vIFRlc3RzIHRoYXQgYSB0ZXN0IGNh
c2Ugd2hvc2UgbmFtZSBlbmRzIHdpdGggIkRlYXRoVGVzdCIgd29ya3MgZmluZQotLy8gb24gV2lu
ZG93cy4KLVRFU1QoTm90QURlYXRoVGVzdCwgVGVzdCkgewotICBTVUNDRUVEKCk7Ci19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3QuY2MK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyNTAyODI3NThkZmIzYzkzZjQ3ZjA5MWM1
MmEyZGJmOTJjYWNlZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1maWxlcGF0aF90ZXN0LmNj
CisrKyAvZGV2L251bGwKQEAgLTEsNjkwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29n
bGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3JzOiBrZWl0aC5yYXlAZ21haWwuY29t
IChLZWl0aCBSYXkpCi0vLwotLy8gR29vZ2xlIFRlc3QgZmlsZXBhdGggdXRpbGl0aWVzCi0vLwot
Ly8gVGhpcyBmaWxlIHRlc3RzIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkg
YnkKLS8vIEdvb2dsZSBUZXN0LiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBu
b3RpY2UuCi0vLwotLy8gVGhpcyBmaWxlIGlzICNpbmNsdWRlZCBmcm9tIGd0ZXN0X3VuaXR0ZXN0
LmNjLCB0byBhdm9pZCBjaGFuZ2luZwotLy8gYnVpbGQgb3IgbWFrZS1maWxlcyBmb3Igc29tZSBl
eGlzdGluZyBHb29nbGUgVGVzdCBjbGllbnRzLiBEbyBub3QKLS8vICNpbmNsdWRlIHRoaXMgZmls
ZSBhbnl3aGVyZSBlbHNlIQotCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBh
dGguaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlz
IHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRh
dGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGlu
Y2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlz
IHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3Qt
aW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRB
VElPTl8gMQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVT
VF9JTVBMRU1FTlRBVElPTl8KLQotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0jaW5jbHVk
ZSA8d2luZG93cy5oPiAgLy8gTk9MSU5UCi0jZWxpZiBHVEVTVF9PU19XSU5ET1dTCi0jaW5jbHVk
ZSA8ZGlyZWN0Lmg+ICAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVybmFsIHsKLW5hbWVzcGFj
ZSB7Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotLy8gVE9ETyh3YW5AZ29vZ2xlLmNv
bSk6IE1vdmUgdGhlc2UgdG8gdGhlIFBPU0lYIGFkYXB0ZXIgc2VjdGlvbiBpbgotLy8gZ3Rlc3Qt
cG9ydC5oLgotCi0vLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSB0aGUgcmVtb3ZlIEMgZnVuY3Rp
b24uCi1pbnQgcmVtb3ZlKGNvbnN0IGNoYXIqIHBhdGgpIHsKLSAgTFBDV1NUUiB3cGF0aCA9IFN0
cmluZzo6QW5zaVRvVXRmMTYocGF0aCk7Ci0gIGludCByZXQgPSBEZWxldGVGaWxlKHdwYXRoKSA/
IDAgOiAtMTsKLSAgZGVsZXRlIFtdIHdwYXRoOwotICByZXR1cm4gcmV0OwotfQotLy8gV2luZG93
cyBDRSBkb2Vzbid0IGhhdmUgdGhlIF9ybWRpciBDIGZ1bmN0aW9uLgotaW50IF9ybWRpcihjb25z
dCBjaGFyKiBwYXRoKSB7Ci0gIEZpbGVQYXRoIGZpbGVwYXRoKHBhdGgpOwotICBMUENXU1RSIHdw
YXRoID0gU3RyaW5nOjpBbnNpVG9VdGYxNigKLSAgICAgIGZpbGVwYXRoLlJlbW92ZVRyYWlsaW5n
UGF0aFNlcGFyYXRvcigpLmNfc3RyKCkpOwotICBpbnQgcmV0ID0gUmVtb3ZlRGlyZWN0b3J5KHdw
YXRoKSA/IDAgOiAtMTsKLSAgZGVsZXRlIFtdIHdwYXRoOwotICByZXR1cm4gcmV0OwotfQotCi0j
ZWxzZQotCi1URVNUKEdldEN1cnJlbnREaXJUZXN0LCBSZXR1cm5zQ3VycmVudERpcikgewotICBj
b25zdCBGaWxlUGF0aCBvcmlnaW5hbF9kaXIgPSBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpOwot
ICBFWFBFQ1RfRkFMU0Uob3JpZ2luYWxfZGlyLklzRW1wdHkoKSk7Ci0KLSAgcG9zaXg6OkNoRGly
KEdURVNUX1BBVEhfU0VQXyk7Ci0gIGNvbnN0IEZpbGVQYXRoIGN3ZCA9IEZpbGVQYXRoOjpHZXRD
dXJyZW50RGlyKCk7Ci0gIHBvc2l4OjpDaERpcihvcmlnaW5hbF9kaXIuY19zdHIoKSk7Ci0KLSNp
ZiBHVEVTVF9PU19XSU5ET1dTCi0gIC8vIFNraXBzIHRoZSAiOiIuCi0gIGNvbnN0IGNoYXIqIGNv
bnN0IGN3ZF93aXRob3V0X2RyaXZlID0gc3RyY2hyKGN3ZC5jX3N0cigpLCAnOicpOwotICBBU1NF
UlRfVFJVRShjd2Rfd2l0aG91dF9kcml2ZSAhPSBOVUxMKTsKLSAgRVhQRUNUX1NUUkVRKEdURVNU
X1BBVEhfU0VQXywgY3dkX3dpdGhvdXRfZHJpdmUgKyAxKTsKLSNlbHNlCi0gIEVYUEVDVF9TVFJF
UShHVEVTVF9QQVRIX1NFUF8sIGN3ZC5jX3N0cigpKTsKLSNlbmRpZgotfQotCi0jZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLVRFU1QoSXNFbXB0eVRlc3QsIFJldHVybnNUcnVl
Rm9yRW1wdHlQYXRoKSB7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIiKS5Jc0VtcHR5KCkpOwot
ICBFWFBFQ1RfVFJVRShGaWxlUGF0aChOVUxMKS5Jc0VtcHR5KCkpOwotfQotCi1URVNUKElzRW1w
dHlUZXN0LCBSZXR1cm5zRmFsc2VGb3JOb25FbXB0eVBhdGgpIHsKLSAgRVhQRUNUX0ZBTFNFKEZp
bGVQYXRoKCJhIikuSXNFbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIuIikuSXNF
bXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJhL2IiKS5Jc0VtcHR5KCkpOwotICBF
WFBFQ1RfRkFMU0UoRmlsZVBhdGgoImFcXGJcXCIpLklzRW1wdHkoKSk7Ci19Ci0KLS8vIFJlbW92
ZURpcmVjdG9yeU5hbWUgIiIgLT4gIiIKLVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFdo
ZW5FbXB0eU5hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCIiLCBGaWxlUGF0aCgiIikuUmVtb3ZlRGly
ZWN0b3J5TmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZmls
ZSIgLT4gImFmaWxlIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgQnV0Tm9EaXJlY3Rv
cnkpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAgICBGaWxlUGF0aCgiYWZpbGUiKS5S
ZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5h
bWUgIi9hZmlsZSIgLT4gImFmaWxlIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgUm9v
dEZpbGVTaG91bGRHaXZlRmlsZU5hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAg
ICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgp
LmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZGlyLyIgLT4gIiIKLVRF
U1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFdoZXJlVGhlcmVJc05vRmlsZU5hbWUpIHsKLSAg
RVhQRUNUX1NUUkVRKCIiLAotICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyku
UmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlO
YW1lICJhZGlyL2FmaWxlIiAtPiAiYWZpbGUiCi1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0
LCBTaG91bGRHaXZlRmlsZU5hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAgICBG
aWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5h
bWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiYWRpci9zdWJkaXIv
YWZpbGUiIC0+ICJhZmlsZSIKLVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEFs
c29HaXZlRmlsZU5hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAgICBGaWxlUGF0
aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUi
KQotICAgICAgLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0cigpKTsKLX0KLQotI2lmIEdURVNU
X0hBU19BTFRfUEFUSF9TRVBfCi0KLS8vIFRlc3RzIHRoYXQgUmVtb3ZlRGlyZWN0b3J5TmFtZSgp
IHdvcmtzIHdpdGggdGhlIGFsdGVybmF0ZSBzZXBhcmF0b3IKLS8vIG9uIFdpbmRvd3MuCi0KLS8v
IFJlbW92ZURpcmVjdG9yeU5hbWUoIi9hZmlsZSIpIC0+ICJhZmlsZSIKLVRFU1QoUmVtb3ZlRGly
ZWN0b3J5TmFtZVRlc3QsIFJvb3RGaWxlU2hvdWxkR2l2ZUZpbGVOYW1lRm9yQWx0ZXJuYXRlU2Vw
YXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWZpbGUiLAotICAgICAgICAgICAgICAgRmlsZVBh
dGgoIi9hZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVt
b3ZlRGlyZWN0b3J5TmFtZSgiYWRpci8iKSAtPiAiIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1l
VGVzdCwgV2hlcmVUaGVyZUlzTm9GaWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBF
WFBFQ1RfU1RSRVEoIiIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci8iKS5SZW1vdmVE
aXJlY3RvcnlOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5hbWUoImFk
aXIvYWZpbGUiKSAtPiAiYWZpbGUiCi1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91
bGRHaXZlRmlsZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCJh
ZmlsZSIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci9hZmlsZSIpLlJlbW92ZURpcmVj
dG9yeU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgiYWRpci9z
dWJkaXIvYWZpbGUiKSAtPiAiYWZpbGUiCi1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBT
aG91bGRBbHNvR2l2ZUZpbGVOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9T
VFJFUSgiYWZpbGUiLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvc3ViZGlyL2FmaWxl
IikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOwotfQotCi0jZW5kaWYKLQotLy8gUmVt
b3ZlRmlsZU5hbWUgIiIgLT4gIi4vIgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEVtcHR5TmFt
ZSkgewotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0gIC8vIE9uIFdpbmRvd3MgQ0UsIHdl
IHVzZSB0aGUgcm9vdCBhcyB0aGUgY3VycmVudCBkaXJlY3RvcnkuCi0gIEVYUEVDVF9TVFJFUShH
VEVTVF9QQVRIX1NFUF8sCi0gICAgICBGaWxlUGF0aCgiIikuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0
cigpKTsKLSNlbHNlCi0gIEVYUEVDVF9TVFJFUSgiLiIgR1RFU1RfUEFUSF9TRVBfLAotICAgICAg
RmlsZVBhdGgoIiIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci0jZW5kaWYKLX0KLQotLy8g
UmVtb3ZlRmlsZU5hbWUgImFkaXIvIiAtPiAiYWRpci8iCi1URVNUKFJlbW92ZUZpbGVOYW1lVGVz
dCwgQnV0Tm9GaWxlKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAot
ICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXykuUmVtb3ZlRmlsZU5hbWUoKS5j
X3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvYWZpbGUiIC0+ICJhZGlyLyIK
LVRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc0Rpck5hbWUpIHsKLSAgRVhQRUNUX1NUUkVR
KCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFU
SF9TRVBfICJhZmlsZSIpCi0gICAgICAuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKLX0KLQot
Ly8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvc3ViZGlyL2FmaWxlIiAtPiAiYWRpci9zdWJkaXIvIgot
VEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzRGlyQW5kU3ViRGlyTmFtZSkgewotICBFWFBF
Q1RfU1RSRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8s
Ci0gICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BB
VEhfU0VQXyAiYWZpbGUiKQotICAgICAgLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci19Ci0K
LS8vIFJlbW92ZUZpbGVOYW1lICIvYWZpbGUiIC0+ICIvIgotVEVTVChSZW1vdmVGaWxlTmFtZVRl
c3QsIEdpdmVzUm9vdERpcikgewotICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLAotICAg
ICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuY19z
dHIoKSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXwotCi0vLyBUZXN0cyB0aGF0
IFJlbW92ZUZpbGVOYW1lKCkgd29ya3Mgd2l0aCB0aGUgYWx0ZXJuYXRlIHNlcGFyYXRvciBvbgot
Ly8gV2luZG93cy4KLQotLy8gUmVtb3ZlRmlsZU5hbWUoImFkaXIvIikgLT4gImFkaXIvIgotVEVT
VChSZW1vdmVGaWxlTmFtZVRlc3QsIEJ1dE5vRmlsZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewot
ICBFWFBFQ1RfU1RSRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZp
bGVQYXRoKCJhZGlyLyIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92
ZUZpbGVOYW1lKCJhZGlyL2FmaWxlIikgLT4gImFkaXIvIgotVEVTVChSZW1vdmVGaWxlTmFtZVRl
c3QsIEdpdmVzRGlyTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEo
ImFkaXIiIEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL2Fm
aWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRmlsZU5hbWUo
ImFkaXIvc3ViZGlyL2FmaWxlIikgLT4gImFkaXIvc3ViZGlyLyIKLVRFU1QoUmVtb3ZlRmlsZU5h
bWVUZXN0LCBHaXZlc0RpckFuZFN1YkRpck5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAg
RVhQRUNUX1NUUkVRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9T
RVBfLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvc3ViZGlyL2FmaWxlIikuUmVtb3Zl
RmlsZU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRmlsZU5hbWUoIi9hZmlsZSIpIC0+
ICJcIgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzUm9vdERpckZvckFsdGVybmF0ZVNl
cGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLAotICAgICAgICAgICAg
ICAgRmlsZVBhdGgoIi9hZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLSNl
bmRpZgotCi1URVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlV2hlbk51bWJlcklzWmVybykg
ewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCJm
b28iKSwgRmlsZVBhdGgoImJhciIpLAotICAgICAgMCwgInhtbCIpOwotICBFWFBFQ1RfU1RSRVEo
ImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1U
RVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlRmlsZU5hbWVOdW1iZXJHdFplcm8pIHsKLSAg
RmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiks
IEZpbGVQYXRoKCJiYXIiKSwKLSAgICAgIDEyLCAieG1sIik7Ci0gIEVYUEVDVF9TVFJFUSgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8gImJhcl8xMi54bWwiLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRF
U1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVGaWxlTmFtZVdpdGhTbGFzaE51bWJlcklzWmVy
bykgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRo
KCJmb28iIEdURVNUX1BBVEhfU0VQXyksCi0gICAgICBGaWxlUGF0aCgiYmFyIiksIDAsICJ4bWwi
KTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVh
bC5jX3N0cigpKTsKLX0KLQotVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZUZpbGVOYW1l
V2l0aFNsYXNoTnVtYmVyR3RaZXJvKSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpN
YWtlRmlsZU5hbWUoRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKSwKLSAgICAgIEZpbGVQ
YXRoKCJiYXIiKSwgMTIsICJ4bWwiKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhf
U0VQXyAiYmFyXzEyLnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChNYWtlRmlsZU5h
bWVUZXN0LCBHZW5lcmF0ZVdoZW5OdW1iZXJJc1plcm9BbmREaXJJc0VtcHR5KSB7Ci0gIEZpbGVQ
YXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoIiIpLCBGaWxlUGF0
aCgiYmFyIiksCi0gICAgICAwLCAieG1sIik7Ci0gIEVYUEVDVF9TVFJFUSgiYmFyLnhtbCIsIGFj
dHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZVdoZW5O
dW1iZXJJc05vdFplcm9BbmREaXJJc0VtcHR5KSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQ
YXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoIiIpLCBGaWxlUGF0aCgiYmFyIiksCi0gICAgICAx
NCwgInhtbCIpOwotICBFWFBFQ1RfU1RSRVEoImJhcl8xNC54bWwiLCBhY3R1YWwuY19zdHIoKSk7
Ci19Ci0KLVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBXb3Jrc1doZW5EaXJEb2VzTm90RW5kV2l0aFBh
dGhTZXApIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQ
YXRoKCJmb28iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZp
bGVQYXRoKCJiYXIueG1sIikpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBf
ICJiYXIueG1sIiwgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNUKENvbmNhdFBhdGhzVGVzdCwg
V29ya3NXaGVuUGF0aDFFbmRzV2l0aFBhdGhTZXApIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmls
ZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiYmFyLnhtbCIp
KTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVh
bC5jX3N0cigpKTsKLX0KLQotVEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgxQmVpbmdFbXB0eSkg
ewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoIiIp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJh
ci54bWwiKSk7Ci0gIEVYUEVDVF9TVFJFUSgiYmFyLnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKLX0K
LQotVEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgyQmVpbmdFbXB0eSkgewotICBGaWxlUGF0aCBh
Y3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoIiIpKTsKLSAgRVhQRUNU
X1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXywgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNU
KENvbmNhdFBhdGhzVGVzdCwgQm90aFBhdGhCZWluZ0VtcHR5KSB7Ci0gIEZpbGVQYXRoIGFjdHVh
bCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiIiksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiIikpOwotICBFWFBFQ1RfU1RSRVEo
IiIsIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgxQ29u
dGFpbnNQYXRoU2VwKSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRo
cyhGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvb2Jhci54bWwiKSk7Ci0gIEVY
UEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBfICJm
b29iYXIueG1sIiwKLSAgICAgICAgICAgICAgIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChD
b25jYXRQYXRoc1Rlc3QsIFBhdGgyQ29udGFpbnNQYXRoU2VwKSB7Ci0gIEZpbGVQYXRoIGFjdHVh
bCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocygKLSAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BB
VEhfU0VQXyksCi0gICAgICBGaWxlUGF0aCgiYmFyIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwi
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1RfUEFU
SF9TRVBfICJiYXIueG1sIiwKLSAgICAgICAgICAgICAgIGFjdHVhbC5jX3N0cigpKTsKLX0KLQot
VEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgyRW5kc1dpdGhQYXRoU2VwKSB7Ci0gIEZpbGVQYXRo
IGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiYmFyIiBHVEVTVF9Q
QVRIX1NFUF8pKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBH
VEVTVF9QQVRIX1NFUF8sIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlVHJhaWxpbmdQ
YXRoU2VwYXJhdG9yICIiIC0+ICIiCi1URVNUKFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvclRl
c3QsIEVtcHR5U3RyaW5nKSB7Ci0gIEVYUEVDVF9TVFJFUSgiIiwKLSAgICAgIEZpbGVQYXRoKCIi
KS5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3Zl
VHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28iIC0+ICJmb28iCi1URVNUKFJlbW92ZVRyYWlsaW5n
UGF0aFNlcGFyYXRvclRlc3QsIEZpbGVOb1NsYXNoU3RyaW5nKSB7Ci0gIEVYUEVDVF9TVFJFUSgi
Zm9vIiwKLSAgICAgIEZpbGVQYXRoKCJmb28iKS5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3Io
KS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28vIiAt
PiAiZm9vIgotVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBTaG91bGRSZW1v
dmVUcmFpbGluZ1NlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoCi0gICAgICAiZm9vIiwKLSAg
ICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXykuUmVtb3ZlVHJhaWxpbmdQYXRoU2Vw
YXJhdG9yKCkuY19zdHIoKSk7Ci0jaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KLSAgRVhQRUNU
X1NUUkVRKCJmb28iLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvby8iKS5SZW1vdmVUcmFp
bGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKLSNlbmRpZgotfQotCi0vLyBSZW1vdmVUcmFp
bGluZ1BhdGhTZXBhcmF0b3IgImZvby9iYXIvIiAtPiAiZm9vL2Jhci8iCi1URVNUKFJlbW92ZVRy
YWlsaW5nUGF0aFNlcGFyYXRvclRlc3QsIFNob3VsZFJlbW92ZUxhc3RTZXBhcmF0b3IpIHsKLSAg
RVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICAgICAgICAgICAg
IEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBHVEVTVF9QQVRIX1NFUF8pCi0g
ICAgICAgICAgICAgICAuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7Ci19
Ci0KLS8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiZm9vL2JhciIgLT4gImZvby9iYXIi
Ci1URVNUKFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvclRlc3QsIFNob3VsZFJldHVyblVubW9k
aWZpZWQpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAg
ICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIikKLSAgICAg
ICAgICAgICAgIC5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKLX0KLQot
VEVTVChEaXJlY3RvcnlUZXN0LCBSb290RGlyZWN0b3J5RXhpc3RzKSB7Ci0jaWYgR1RFU1RfT1Nf
V0lORE9XUyAgLy8gV2UgYXJlIG9uIFdpbmRvd3MuCi0gIGNoYXIgY3VycmVudF9kcml2ZVtfTUFY
X1BBVEhdOyAgLy8gTk9MSU5UCi0gIGN1cnJlbnRfZHJpdmVbMF0gPSBzdGF0aWNfY2FzdDxjaGFy
PihfZ2V0ZHJpdmUoKSArICdBJyAtIDEpOwotICBjdXJyZW50X2RyaXZlWzFdID0gJzonOwotICBj
dXJyZW50X2RyaXZlWzJdID0gJ1xcJzsKLSAgY3VycmVudF9kcml2ZVszXSA9ICdcMCc7Ci0gIEVY
UEVDVF9UUlVFKEZpbGVQYXRoKGN1cnJlbnRfZHJpdmUpLkRpcmVjdG9yeUV4aXN0cygpKTsKLSNl
bHNlCi0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIvIikuRGlyZWN0b3J5RXhpc3RzKCkpOwotI2Vu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi19Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi1URVNU
KERpcmVjdG9yeVRlc3QsIFJvb3RPZldyb25nRHJpdmVEb2VzTm90RXhpc3RzKSB7Ci0gIGNvbnN0
IGludCBzYXZlZF9kcml2ZV8gPSBfZ2V0ZHJpdmUoKTsKLSAgLy8gRmluZCBhIGRyaXZlIHRoYXQg
ZG9lc24ndCBleGlzdC4gU3RhcnQgd2l0aCAnWicgdG8gYXZvaWQgY29tbW9uIG9uZXMuCi0gIGZv
ciAoY2hhciBkcml2ZSA9ICdaJzsgZHJpdmUgPj0gJ0EnOyBkcml2ZS0tKQotICAgIGlmIChfY2hk
cml2ZShkcml2ZSAtICdBJyArIDEpID09IC0xKSB7Ci0gICAgICBjaGFyIG5vbl9kcml2ZVtfTUFY
X1BBVEhdOyAgLy8gTk9MSU5UCi0gICAgICBub25fZHJpdmVbMF0gPSBkcml2ZTsKLSAgICAgIG5v
bl9kcml2ZVsxXSA9ICc6JzsKLSAgICAgIG5vbl9kcml2ZVsyXSA9ICdcXCc7Ci0gICAgICBub25f
ZHJpdmVbM10gPSAnXDAnOwotICAgICAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKG5vbl9kcml2ZSku
RGlyZWN0b3J5RXhpc3RzKCkpOwotICAgICAgYnJlYWs7Ci0gICAgfQotICBfY2hkcml2ZShzYXZl
ZF9kcml2ZV8pOwotfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSNpZiAhR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKLS8vIFdpbmRvd3MgQ0UgX2RvZXNfIGNvbnNpZGVyIGFuIGVtcHR5
IGRpcmVjdG9yeSB0byBleGlzdC4KLVRFU1QoRGlyZWN0b3J5VGVzdCwgRW1wdHlQYXRoRGlyZWN0
b3J5RG9lc05vdEV4aXN0KSB7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiIikuRGlyZWN0b3J5
RXhpc3RzKCkpOwotfQotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLQotVEVT
VChEaXJlY3RvcnlUZXN0LCBDdXJyZW50RGlyZWN0b3J5RXhpc3RzKSB7Ci0jaWYgR1RFU1RfT1Nf
V0lORE9XUyAgLy8gV2UgYXJlIG9uIFdpbmRvd3MuCi0jaWZuZGVmIF9XSU4zMl9DRSAgLy8gV2lu
ZG93cyBDRSBkb2Vzbid0IGhhdmUgYSBjdXJyZW50IGRpcmVjdG9yeS4KLSAgRVhQRUNUX1RSVUUo
RmlsZVBhdGgoIi4iKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRo
KCIuXFwiKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0jZW5kaWYgIC8vIF9XSU4zMl9DRQotI2Vsc2UK
LSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi4iKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0gIEVYUEVD
VF9UUlVFKEZpbGVQYXRoKCIuLyIpLkRpcmVjdG9yeUV4aXN0cygpKTsKLSNlbmRpZiAgLy8gR1RF
U1RfT1NfV0lORE9XUwotfQotCi1URVNUKE5vcm1hbGl6ZVRlc3QsIE51bGxTdHJpbmdzRXF1YWxF
bXB0eURpcmVjdG9yeSkgewotICBFWFBFQ1RfU1RSRVEoIiIsIEZpbGVQYXRoKE5VTEwpLmNfc3Ry
KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIEZpbGVQYXRoKFN0cmluZyhOVUxMKSkuY19zdHIoKSk7
Ci19Ci0KLS8vICJmb28vYmFyIiA9PSBmb28vL2JhciIgPT0gImZvby8vL2JhciIKLVRFU1QoTm9y
bWFsaXplVGVzdCwgTXVsdGlwbGVDb25zZWN1dGl2ZVNlcGFwYXJhdG9yc0luTWlkc3RyaW5nKSB7
Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAgICAgICAg
ICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIpLmNfc3RyKCkpOwotICBF
WFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgICAgICAgICAgICAg
RmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuY19z
dHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAg
ICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBf
Ci0gICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8gImJhciIpLmNfc3RyKCkp
OwotfQotCi0vLyAiL2JhciIgPT0gLy9iYXIiID09ICIvLy9iYXIiCi1URVNUKE5vcm1hbGl6ZVRl
c3QsIE11bHRpcGxlQ29uc2VjdXRpdmVTZXBhcGFyYXRvcnNBdFN0cmluZ1N0YXJ0KSB7Ci0gIEVY
UEVDVF9TVFJFUShHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAgRmlsZVBhdGgoR1RFU1RfUEFU
SF9TRVBfICJiYXIiKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKEdURVNUX1BBVEhfU0VQXyAi
YmFyIiwKLSAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfICJiYXIi
KS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICBG
aWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAi
YmFyIikuY19zdHIoKSk7Ci19Ci0KLS8vICJmb28vIiA9PSBmb28vLyIgPT0gImZvby8vLyIKLVRF
U1QoTm9ybWFsaXplVGVzdCwgTXVsdGlwbGVDb25zZWN1dGl2ZVNlcGFwYXJhdG9yc0F0U3RyaW5n
RW5kKSB7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgRmlsZVBh
dGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28i
IEdURVNUX1BBVEhfU0VQXywKLSAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RF
U1RfUEFUSF9TRVBfKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhf
U0VQXywKLSAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBf
IEdURVNUX1BBVEhfU0VQXykuY19zdHIoKSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfQUxUX1BBVEhf
U0VQXwotCi0vLyBUZXN0cyB0aGF0IHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5n
IGFyZSBub3JtYWxpemVkCi0vLyByZWdhcmRsZXNzIG9mIHRoZWlyIGNvbWJpbmF0aW9uIChlLmcu
ICJmb29cIiA9PSJmb28vXCIgPT0KLS8vICJmb29cXC8iKS4KLVRFU1QoTm9ybWFsaXplVGVzdCwg
TWl4QWx0ZXJuYXRlU2VwYXJhdG9yQXRTdHJpbmdFbmQpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28i
IEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28vIikuY19zdHIo
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICAgICAgICAg
ICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gIi8iKS5jX3N0cigpKTsKLSAgRVhQRUNU
X1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJm
b28vLyIgR1RFU1RfUEFUSF9TRVBfKS5jX3N0cigpKTsKLX0KLQotI2VuZGlmCi0KLVRFU1QoQXNz
aWdubWVudE9wZXJhdG9yVGVzdCwgRGVmYXVsdEFzc2lnbmVkVG9Ob25EZWZhdWx0KSB7Ci0gIEZp
bGVQYXRoIGRlZmF1bHRfcGF0aDsKLSAgRmlsZVBhdGggbm9uX2RlZmF1bHRfcGF0aCgicGF0aCIp
OwotICBub25fZGVmYXVsdF9wYXRoID0gZGVmYXVsdF9wYXRoOwotICBFWFBFQ1RfU1RSRVEoIiIs
IG5vbl9kZWZhdWx0X3BhdGguY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgZGVmYXVsdF9w
YXRoLmNfc3RyKCkpOyAgLy8gUkhTIHZhciBpcyB1bmNoYW5nZWQuCi19Ci0KLVRFU1QoQXNzaWdu
bWVudE9wZXJhdG9yVGVzdCwgTm9uRGVmYXVsdEFzc2lnbmVkVG9EZWZhdWx0KSB7Ci0gIEZpbGVQ
YXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgiKTsKLSAgRmlsZVBhdGggZGVmYXVsdF9wYXRoOwot
ICBkZWZhdWx0X3BhdGggPSBub25fZGVmYXVsdF9wYXRoOwotICBFWFBFQ1RfU1RSRVEoInBhdGgi
LCBkZWZhdWx0X3BhdGguY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgicGF0aCIsIG5vbl9kZWZh
dWx0X3BhdGguY19zdHIoKSk7ICAvLyBSSFMgdmFyIGlzIHVuY2hhbmdlZC4KLX0KLQotVEVTVChB
c3NpZ25tZW50T3BlcmF0b3JUZXN0LCBDb25zdEFzc2lnbmVkVG9Ob25Db25zdCkgewotICBjb25z
dCBGaWxlUGF0aCBjb25zdF9kZWZhdWx0X3BhdGgoImNvbnN0X3BhdGgiKTsKLSAgRmlsZVBhdGgg
bm9uX2RlZmF1bHRfcGF0aCgicGF0aCIpOwotICBub25fZGVmYXVsdF9wYXRoID0gY29uc3RfZGVm
YXVsdF9wYXRoOwotICBFWFBFQ1RfU1RSRVEoImNvbnN0X3BhdGgiLCBub25fZGVmYXVsdF9wYXRo
LmNfc3RyKCkpOwotfQotCi1jbGFzcyBEaXJlY3RvcnlDcmVhdGlvblRlc3QgOiBwdWJsaWMgVGVz
dCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgdGVzdGRhdGFf
cGF0aF8uU2V0KEZpbGVQYXRoKFN0cmluZzo6Rm9ybWF0KCIlcyVzJXMiLAotICAgICAgICBUZW1w
RGlyKCkuY19zdHIoKSwgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuY19zdHIoKSwKLSAgICAg
ICAgIl9kaXJlY3RvcnlfY3JlYXRpb24iIEdURVNUX1BBVEhfU0VQXyAidGVzdCIgR1RFU1RfUEFU
SF9TRVBfKSkpOwotICAgIHRlc3RkYXRhX2ZpbGVfLlNldCh0ZXN0ZGF0YV9wYXRoXy5SZW1vdmVU
cmFpbGluZ1BhdGhTZXBhcmF0b3IoKSk7Ci0KLSAgICB1bmlxdWVfZmlsZTBfLlNldChGaWxlUGF0
aDo6TWFrZUZpbGVOYW1lKHRlc3RkYXRhX3BhdGhfLCBGaWxlUGF0aCgidW5pcXVlIiksCi0gICAg
ICAgIDAsICJ0eHQiKSk7Ci0gICAgdW5pcXVlX2ZpbGUxXy5TZXQoRmlsZVBhdGg6Ok1ha2VGaWxl
TmFtZSh0ZXN0ZGF0YV9wYXRoXywgRmlsZVBhdGgoInVuaXF1ZSIpLAotICAgICAgICAxLCAidHh0
IikpOwotCi0gICAgcmVtb3ZlKHRlc3RkYXRhX2ZpbGVfLmNfc3RyKCkpOwotICAgIHJlbW92ZSh1
bmlxdWVfZmlsZTBfLmNfc3RyKCkpOwotICAgIHJlbW92ZSh1bmlxdWVfZmlsZTFfLmNfc3RyKCkp
OwotICAgIHBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKLSAgfQotCi0gIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICByZW1vdmUodGVzdGRhdGFfZmlsZV8uY19zdHIo
KSk7Ci0gICAgcmVtb3ZlKHVuaXF1ZV9maWxlMF8uY19zdHIoKSk7Ci0gICAgcmVtb3ZlKHVuaXF1
ZV9maWxlMV8uY19zdHIoKSk7Ci0gICAgcG9zaXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhfLmNfc3Ry
KCkpOwotICB9Ci0KLSAgU3RyaW5nIFRlbXBEaXIoKSBjb25zdCB7Ci0jaWYgR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUKLSAgICByZXR1cm4gU3RyaW5nKCJcXHRlbXBcXCIpOwotI2VsaWYgR1RFU1Rf
T1NfV0lORE9XUwotICAgIGNvbnN0IGNoYXIqIHRlbXBfZGlyID0gcG9zaXg6OkdldEVudigiVEVN
UCIpOwotICAgIGlmICh0ZW1wX2RpciA9PSBOVUxMIHx8IHRlbXBfZGlyWzBdID09ICdcMCcpCi0g
ICAgICByZXR1cm4gU3RyaW5nKCJcXHRlbXBcXCIpOwotICAgIGVsc2UgaWYgKFN0cmluZyh0ZW1w
X2RpcikuRW5kc1dpdGgoIlxcIikpCi0gICAgICByZXR1cm4gU3RyaW5nKHRlbXBfZGlyKTsKLSAg
ICBlbHNlCi0gICAgICByZXR1cm4gU3RyaW5nOjpGb3JtYXQoIiVzXFwiLCB0ZW1wX2Rpcik7Ci0j
ZWxzZQotICAgIHJldHVybiBTdHJpbmcoIi90bXAvIik7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCi0gIH0KLQotICB2b2lkIENyZWF0ZVRleHRGaWxlKGNvbnN0IGNoYXIqIGZp
bGVuYW1lKSB7Ci0gICAgRklMRSogZiA9IHBvc2l4OjpGT3BlbihmaWxlbmFtZSwgInciKTsKLSAg
ICBmcHJpbnRmKGYsICJ0ZXh0XG4iKTsKLSAgICBmY2xvc2UoZik7Ci0gIH0KLQotICAvLyBTdHJp
bmdzIHJlcHJlc2VudGluZyBhIGRpcmVjdG9yeSBhbmQgYSBmaWxlLCB3aXRoIGlkZW50aWNhbCBw
YXRocwotICAvLyBleGNlcHQgZm9yIHRoZSB0cmFpbGluZyBzZXBhcmF0b3IgY2hhcmFjdGVyIHRo
YXQgZGlzdGlucXVpc2hlcwotICAvLyBhIGRpcmVjdG9yeSBuYW1lZCAndGVzdCcgZnJvbSBhIGZp
bGUgbmFtZWQgJ3Rlc3QnLiBFeGFtcGxlIG5hbWVzOgotICBGaWxlUGF0aCB0ZXN0ZGF0YV9wYXRo
XzsgIC8vICIvdG1wL2RpcmVjdG9yeV9jcmVhdGlvbi90ZXN0LyIKLSAgRmlsZVBhdGggdGVzdGRh
dGFfZmlsZV87ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRpb24vdGVzdCIKLSAgRmlsZVBhdGgg
dW5pcXVlX2ZpbGUwXzsgIC8vICIvdG1wL2RpcmVjdG9yeV9jcmVhdGlvbi90ZXN0L3VuaXF1ZS50
eHQiCi0gIEZpbGVQYXRoIHVuaXF1ZV9maWxlMV87ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRp
b24vdGVzdC91bmlxdWVfMS50eHQiCi19OwotCi1URVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25UZXN0
LCBDcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KSB7Ci0gIEVYUEVDVF9GQUxTRSh0ZXN0ZGF0
YV9wYXRoXy5EaXJlY3RvcnlFeGlzdHMoKSkgPDwgdGVzdGRhdGFfcGF0aF8uY19zdHIoKTsKLSAg
RVhQRUNUX1RSVUUodGVzdGRhdGFfcGF0aF8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgp
KTsKLSAgRVhQRUNUX1RSVUUodGVzdGRhdGFfcGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkpOwotfQot
Ci1URVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0ZvckFscmVh
ZHlFeGlzdGluZ1BhdGgpIHsKLSAgRVhQRUNUX0ZBTFNFKHRlc3RkYXRhX3BhdGhfLkRpcmVjdG9y
eUV4aXN0cygpKSA8PCB0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpOwotICBFWFBFQ1RfVFJVRSh0ZXN0
ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOwotICAvLyBDYWxsICdj
cmVhdGUnIGFnYWluLi4uIHNob3VsZCBzdGlsbCBzdWNjZWVkLgotICBFWFBFQ1RfVFJVRSh0ZXN0
ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOwotfQotCi1URVNUX0Yo
RGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0FuZFVuaXF1ZUZpbGVuYW1l
KSB7Ci0gIEZpbGVQYXRoIGZpbGVfcGF0aChGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFt
ZSh0ZXN0ZGF0YV9wYXRoXywKLSAgICAgIEZpbGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIpKTsKLSAg
RVhQRUNUX1NUUkVRKHVuaXF1ZV9maWxlMF8uY19zdHIoKSwgZmlsZV9wYXRoLmNfc3RyKCkpOwot
ICBFWFBFQ1RfRkFMU0UoZmlsZV9wYXRoLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsgIC8vIGZp
bGUgbm90IHRoZXJlCi0KLSAgdGVzdGRhdGFfcGF0aF8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNp
dmVseSgpOwotICBFWFBFQ1RfRkFMU0UoZmlsZV9wYXRoLkZpbGVPckRpcmVjdG9yeUV4aXN0cygp
KTsgIC8vIGZpbGUgc3RpbGwgbm90IHRoZXJlCi0gIENyZWF0ZVRleHRGaWxlKGZpbGVfcGF0aC5j
X3N0cigpKTsKLSAgRVhQRUNUX1RSVUUoZmlsZV9wYXRoLkZpbGVPckRpcmVjdG9yeUV4aXN0cygp
KTsKLQotICBGaWxlUGF0aCBmaWxlX3BhdGgyKEZpbGVQYXRoOjpHZW5lcmF0ZVVuaXF1ZUZpbGVO
YW1lKHRlc3RkYXRhX3BhdGhfLAotICAgICAgRmlsZVBhdGgoInVuaXF1ZSIpLCAidHh0IikpOwot
ICBFWFBFQ1RfU1RSRVEodW5pcXVlX2ZpbGUxXy5jX3N0cigpLCBmaWxlX3BhdGgyLmNfc3RyKCkp
OwotICBFWFBFQ1RfRkFMU0UoZmlsZV9wYXRoMi5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAv
LyBmaWxlIG5vdCB0aGVyZQotICBDcmVhdGVUZXh0RmlsZShmaWxlX3BhdGgyLmNfc3RyKCkpOwot
ICBFWFBFQ1RfVFJVRShmaWxlX3BhdGgyLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsKLX0KLQot
VEVTVF9GKERpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlRGlyZWN0b3JpZXNGYWlsKSB7Ci0g
IC8vIGZvcmNlIGEgZmFpbHVyZSBieSBwdXR0aW5nIGEgZmlsZSB3aGVyZSB3ZSB3aWxsIHRyeSB0
byBjcmVhdGUgYSBkaXJlY3RvcnkuCi0gIENyZWF0ZVRleHRGaWxlKHRlc3RkYXRhX2ZpbGVfLmNf
c3RyKCkpOwotICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9maWxlXy5GaWxlT3JEaXJlY3RvcnlFeGlz
dHMoKSk7Ci0gIEVYUEVDVF9GQUxTRSh0ZXN0ZGF0YV9maWxlXy5EaXJlY3RvcnlFeGlzdHMoKSk7
Ci0gIEVYUEVDVF9GQUxTRSh0ZXN0ZGF0YV9maWxlXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2
ZWx5KCkpOwotfQotCi1URVNUKE5vRGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVOb0RpcmVj
dG9yaWVzRm9yRGVmYXVsdFhtbEZpbGUpIHsKLSAgY29uc3QgRmlsZVBhdGggdGVzdF9kZXRhaWxf
eG1sKCJ0ZXN0X2RldGFpbC54bWwiKTsKLSAgRVhQRUNUX0ZBTFNFKHRlc3RfZGV0YWlsX3htbC5D
cmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwg
RGVmYXVsdENvbnN0cnVjdG9yKSB7Ci0gIEZpbGVQYXRoIGZwOwotICBFWFBFQ1RfU1RSRVEoIiIs
IGZwLmNfc3RyKCkpOwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgQ2hhckFuZENvcHlDb25zdHJ1
Y3RvcnMpIHsKLSAgY29uc3QgRmlsZVBhdGggZnAoInNwaWN5Iik7Ci0gIEVYUEVDVF9TVFJFUSgi
c3BpY3kiLCBmcC5jX3N0cigpKTsKLQotICBjb25zdCBGaWxlUGF0aCBmcF9jb3B5KGZwKTsKLSAg
RVhQRUNUX1NUUkVRKCJzcGljeSIsIGZwX2NvcHkuY19zdHIoKSk7Ci19Ci0KLVRFU1QoRmlsZVBh
dGhUZXN0LCBTdHJpbmdDb25zdHJ1Y3RvcikgewotICBjb25zdCBGaWxlUGF0aCBmcChTdHJpbmco
ImNpZGVyIikpOwotICBFWFBFQ1RfU1RSRVEoImNpZGVyIiwgZnAuY19zdHIoKSk7Ci19Ci0KLVRF
U1QoRmlsZVBhdGhUZXN0LCBTZXQpIHsKLSAgY29uc3QgRmlsZVBhdGggYXBwbGUoImFwcGxlIik7
Ci0gIEZpbGVQYXRoIG1hYygibWFjIik7Ci0gIG1hYy5TZXQoYXBwbGUpOyAgLy8gSW1wbGVtZW50
IFNldCgpIHNpbmNlIG92ZXJsb2FkaW5nIG9wZXJhdG9yPSBpcyBmb3JiaWRkZW4uCi0gIEVYUEVD
VF9TVFJFUSgiYXBwbGUiLCBtYWMuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiYXBwbGUiLCBh
cHBsZS5jX3N0cigpKTsKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIFRvU3RyaW5nKSB7Ci0gIGNv
bnN0IEZpbGVQYXRoIGZpbGUoImRyaW5rIik7Ci0gIFN0cmluZyBzdHIoZmlsZS5Ub1N0cmluZygp
KTsKLSAgRVhQRUNUX1NUUkVRKCJkcmluayIsIHN0ci5jX3N0cigpKTsKLX0KLQotVEVTVChGaWxl
UGF0aFRlc3QsIFJlbW92ZUV4dGVuc2lvbikgewotICBFWFBFQ1RfU1RSRVEoImFwcCIsIEZpbGVQ
YXRoKCJhcHAuZXhlIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5jX3N0cigpKTsKLSAgRVhQRUNU
X1NUUkVRKCJBUFAiLCBGaWxlUGF0aCgiQVBQLkVYRSIpLlJlbW92ZUV4dGVuc2lvbigiZXhlIiku
Y19zdHIoKSk7Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0LCBSZW1vdmVFeHRlbnNpb25XaGVuVGhl
cmVJc05vRXh0ZW5zaW9uKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYXBwIiwgRmlsZVBhdGgoImFwcCIp
LlJlbW92ZUV4dGVuc2lvbigiZXhlIikuY19zdHIoKSk7Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0
LCBJc0RpcmVjdG9yeSkgewotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImNvbGEiKS5Jc0RpcmVj
dG9yeSgpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImtvYWxhIiBHVEVTVF9QQVRIX1NFUF8p
LklzRGlyZWN0b3J5KCkpOwotI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCi0gIEVYUEVDVF9U
UlVFKEZpbGVQYXRoKCJrb2FsYS8iKS5Jc0RpcmVjdG9yeSgpKTsKLSNlbmRpZgotfQotCi1URVNU
KEZpbGVQYXRoVGVzdCwgSXNBYnNvbHV0ZVBhdGgpIHsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRo
KCJpcyIgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIpLklzQWJzb2x1dGVQYXRoKCkpOwotICBF
WFBFQ1RfRkFMU0UoRmlsZVBhdGgoIiIpLklzQWJzb2x1dGVQYXRoKCkpOwotI2lmIEdURVNUX09T
X1dJTkRPV1MKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImM6XFwiIEdURVNUX1BBVEhfU0VQXyAi
aXNfbm90IgotICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8gInJlbGF0aXZl
IikuSXNBYnNvbHV0ZVBhdGgoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYzpmb28iIEdU
RVNUX1BBVEhfU0VQXyAiYmFyIikuSXNBYnNvbHV0ZVBhdGgoKSk7Ci0gIEVYUEVDVF9UUlVFKEZp
bGVQYXRoKCJjOi8iIEdURVNUX1BBVEhfU0VQXyAiaXNfbm90IgotICAgICAgICAgICAgICAgICAg
ICAgICBHVEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIikuSXNBYnNvbHV0ZVBhdGgoKSk7Ci0jZWxz
ZQotICBFWFBFQ1RfVFJVRShGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gImlzX25vdCIgR1RFU1Rf
UEFUSF9TRVBfICJyZWxhdGl2ZSIpCi0gICAgICAgICAgICAgIC5Jc0Fic29sdXRlUGF0aCgpKTsK
LSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgSXNS
b290RGlyZWN0b3J5KSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICBFWFBFQ1RfVFJVRShGaWxl
UGF0aCgiYTpcXCIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgo
Ilo6LyIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImU6Ly8i
KS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiIikuSXNSb290
RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImI6IikuSXNSb290RGlyZWN0
b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImI6YSIpLklzUm9vdERpcmVjdG9yeSgp
KTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCI4Oi8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0g
IEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiY3wvIikuSXNSb290RGlyZWN0b3J5KCkpOwotI2Vsc2UK
LSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVD
VF9UUlVFKEZpbGVQYXRoKCIvLyIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX0ZBTFNF
KEZpbGVQYXRoKCIiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0
aCgiXFwiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiL3gi
KS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0jZW5kaWYKLX0KLQotfSAgLy8gbmFtZXNwYWNlCi19ICAv
LyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNjCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWU4MjI5NmM5MjFmMGFmZTQyZmMyMzM1NzQ5
NzBlZTc3MDllNWJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNj
CisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDAzLCBHb29n
bGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3JzOiBEYW4gRWdub3IgKGVnbm9yQGdv
b2dsZS5jb20pCi0vLyBQb3J0ZWQgdG8gV2luZG93czogVmFkaW0gQmVybWFuICh2YWRpbWJAZ29v
Z2xlLmNvbSkKLQotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaD4K
LQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLW5hbWVz
cGFjZSB7Ci0KLXVzaW5nIHRlc3Rpbmc6Ok1lc3NhZ2U7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6bGlua2VkX3B0cjsKLQotaW50IG51bTsKLU1lc3NhZ2UqIGhpc3RvcnkgPSBOVUxMOwotCi0v
LyBDbGFzcyB3aGljaCB0cmFja3MgYWxsb2NhdGlvbi9kZWFsbG9jYXRpb24KLWNsYXNzIEEgewot
IHB1YmxpYzoKLSAgQSgpOiBteW51bShudW0rKykgeyAqaGlzdG9yeSA8PCAiQSIgPDwgbXludW0g
PDwgIiBjdG9yXG4iOyB9Ci0gIHZpcnR1YWwgfkEoKSB7ICpoaXN0b3J5IDw8ICJBIiA8PCBteW51
bSA8PCAiIGR0b3JcbiI7IH0KLSAgdmlydHVhbCB2b2lkIFVzZSgpIHsgKmhpc3RvcnkgPDwgIkEi
IDw8IG15bnVtIDw8ICIgdXNlXG4iOyB9Ci0gcHJvdGVjdGVkOgotICBpbnQgbXludW07Ci19Owot
Ci0vLyBTdWJjbGFzcwotY2xhc3MgQiA6IHB1YmxpYyBBIHsKLSBwdWJsaWM6Ci0gIEIoKSB7ICpo
aXN0b3J5IDw8ICJCIiA8PCBteW51bSA8PCAiIGN0b3JcbiI7IH0KLSAgfkIoKSB7ICpoaXN0b3J5
IDw8ICJCIiA8PCBteW51bSA8PCAiIGR0b3JcbiI7IH0KLSAgdmlydHVhbCB2b2lkIFVzZSgpIHsg
Kmhpc3RvcnkgPDwgIkIiIDw8IG15bnVtIDw8ICIgdXNlXG4iOyB9Ci19OwotCi1jbGFzcyBMaW5r
ZWRQdHJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHB1YmxpYzoKLSAgTGlua2VkUHRy
VGVzdCgpIHsKLSAgICBudW0gPSAwOwotICAgIGhpc3RvcnkgPSBuZXcgTWVzc2FnZTsKLSAgfQot
Ci0gIHZpcnR1YWwgfkxpbmtlZFB0clRlc3QoKSB7Ci0gICAgZGVsZXRlIGhpc3Rvcnk7Ci0gICAg
aGlzdG9yeSA9IE5VTEw7Ci0gIH0KLX07Ci0KLVRFU1RfRihMaW5rZWRQdHJUZXN0LCBHZW5lcmFs
VGVzdCkgewotICB7Ci0gICAgbGlua2VkX3B0cjxBPiBhMCwgYTEsIGEyOwotICAgIGEwID0gYTA7
Ci0gICAgYTEgPSBhMjsKLSAgICBBU1NFUlRfRVEoYTAuZ2V0KCksIHN0YXRpY19jYXN0PEEqPihO
VUxMKSk7Ci0gICAgQVNTRVJUX0VRKGExLmdldCgpLCBzdGF0aWNfY2FzdDxBKj4oTlVMTCkpOwot
ICAgIEFTU0VSVF9FUShhMi5nZXQoKSwgc3RhdGljX2Nhc3Q8QSo+KE5VTEwpKTsKLSAgICBBU1NF
UlRfVFJVRShhMCA9PSBOVUxMKTsKLSAgICBBU1NFUlRfVFJVRShhMSA9PSBOVUxMKTsKLSAgICBB
U1NFUlRfVFJVRShhMiA9PSBOVUxMKTsKLQotICAgIHsKLSAgICAgIGxpbmtlZF9wdHI8QT4gYTMo
bmV3IEEpOwotICAgICAgYTAgPSBhMzsKLSAgICAgIEFTU0VSVF9UUlVFKGEwID09IGEzKTsKLSAg
ICAgIEFTU0VSVF9UUlVFKGEwICE9IE5VTEwpOwotICAgICAgQVNTRVJUX1RSVUUoYTAuZ2V0KCkg
PT0gYTMpOwotICAgICAgQVNTRVJUX1RSVUUoYTAgPT0gYTMuZ2V0KCkpOwotICAgICAgbGlua2Vk
X3B0cjxBPiBhNChhMCk7Ci0gICAgICBhMSA9IGE0OwotICAgICAgbGlua2VkX3B0cjxBPiBhNShu
ZXcgQSk7Ci0gICAgICBBU1NFUlRfVFJVRShhNS5nZXQoKSAhPSBhMyk7Ci0gICAgICBBU1NFUlRf
VFJVRShhNSAhPSBhMy5nZXQoKSk7Ci0gICAgICBhMiA9IGE1OwotICAgICAgbGlua2VkX3B0cjxC
PiBiMChuZXcgQik7Ci0gICAgICBsaW5rZWRfcHRyPEE+IGE2KGIwKTsKLSAgICAgIEFTU0VSVF9U
UlVFKGIwID09IGE2KTsKLSAgICAgIEFTU0VSVF9UUlVFKGE2ID09IGIwKTsKLSAgICAgIEFTU0VS
VF9UUlVFKGIwICE9IE5VTEwpOwotICAgICAgYTUgPSBiMDsKLSAgICAgIGE1ID0gYjA7Ci0gICAg
ICBhMy0+VXNlKCk7Ci0gICAgICBhNC0+VXNlKCk7Ci0gICAgICBhNS0+VXNlKCk7Ci0gICAgICBh
Ni0+VXNlKCk7Ci0gICAgICBiMC0+VXNlKCk7Ci0gICAgICAoKmIwKS5Vc2UoKTsKLSAgICAgIGIw
LmdldCgpLT5Vc2UoKTsKLSAgICB9Ci0KLSAgICBhMC0+VXNlKCk7Ci0gICAgYTEtPlVzZSgpOwot
ICAgIGEyLT5Vc2UoKTsKLQotICAgIGExID0gYTI7Ci0gICAgYTIucmVzZXQobmV3IEEpOwotICAg
IGEwLnJlc2V0KCk7Ci0KLSAgICBsaW5rZWRfcHRyPEE+IGE3OwotICB9Ci0KLSAgQVNTRVJUX1NU
UkVRKAotICAgICJBMCBjdG9yXG4iCi0gICAgIkExIGN0b3JcbiIKLSAgICAiQTIgY3RvclxuIgot
ICAgICJCMiBjdG9yXG4iCi0gICAgIkEwIHVzZVxuIgotICAgICJBMCB1c2VcbiIKLSAgICAiQjIg
dXNlXG4iCi0gICAgIkIyIHVzZVxuIgotICAgICJCMiB1c2VcbiIKLSAgICAiQjIgdXNlXG4iCi0g
ICAgIkIyIHVzZVxuIgotICAgICJCMiBkdG9yXG4iCi0gICAgIkEyIGR0b3JcbiIKLSAgICAiQTAg
dXNlXG4iCi0gICAgIkEwIHVzZVxuIgotICAgICJBMSB1c2VcbiIKLSAgICAiQTMgY3RvclxuIgot
ICAgICJBMCBkdG9yXG4iCi0gICAgIkEzIGR0b3JcbiIKLSAgICAiQTEgZHRvclxuIiwKLSAgICBo
aXN0b3J5LT5HZXRTdHJpbmcoKS5jX3N0cigpCi0gICk7Ci19Ci0KLX0gIC8vIFVubmFtZWQgbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWxp
c3RlbmVyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWxpc3Rl
bmVyX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YmUzOWE4N2U4OGQ4
OTYwMWI5YmM5MzcyYTE0ZWRhYWY2MTI5NDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saXN0
ZW5lcl90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMzEzICswLDAgQEAKLS8vIENvcHlyaWdo
dCAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUu
Y29tIChWbGFkIExvc2V2KQotLy8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3Jr
IChHb29nbGUgVGVzdCkKLS8vCi0vLyBUaGlzIGZpbGUgdmVyaWZpZXMgR29vZ2xlIFRlc3QgZXZl
bnQgbGlzdGVuZXJzIHJlY2VpdmUgZXZlbnRzIGF0IHRoZQotLy8gcmlnaHQgdGltZXMuCi0KLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotdXNpbmcgOjp0ZXN0
aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQ7Ci11c2luZyA6OnRlc3Rpbmc6OkVudmlyb25t
ZW50OwotdXNpbmcgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6
VGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdENhc2U7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RF
dmVudExpc3RlbmVyOwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0SW5mbzsKLXVzaW5nIDo6dGVzdGlu
Zzo6VGVzdFBhcnRSZXN1bHQ7Ci11c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OwotdXNpbmcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOwotCi0vLyBVc2VkIGJ5IHRlc3RzIHRvIHJlZ2lzdGVy
IHRoZWlyIGV2ZW50cy4KLXN0ZDo6dmVjdG9yPFN0cmluZz4qIGdfZXZlbnRzID0gTlVMTDsKLQot
bmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVybmFsIHsKLQotY2xhc3MgRXZlbnRS
ZWNvcmRpbmdMaXN0ZW5lciA6IHB1YmxpYyBUZXN0RXZlbnRMaXN0ZW5lciB7Ci0gcHVibGljOgot
ICBFdmVudFJlY29yZGluZ0xpc3RlbmVyKGNvbnN0IGNoYXIqIG5hbWUpIDogbmFtZV8obmFtZSkg
e30KLQotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIE9uVGVzdFByb2dyYW1TdGFydChjb25z
dCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0
RnVsbE1ldGhvZE5hbWUoIk9uVGVzdFByb2dyYW1TdGFydCIpKTsKLSAgfQotCi0gIHZpcnR1YWwg
dm9pZCBPblRlc3RJdGVyYXRpb25TdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpdGVyYXRpb24pIHsKLSAg
ICBNZXNzYWdlIG1lc3NhZ2U7Ci0gICAgbWVzc2FnZSA8PCBHZXRGdWxsTWV0aG9kTmFtZSgiT25U
ZXN0SXRlcmF0aW9uU3RhcnQiKQotICAgICAgICAgICAgPDwgIigiIDw8IGl0ZXJhdGlvbiA8PCAi
KSI7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhtZXNzYWdlLkdldFN0cmluZygpKTsKLSAgfQot
Ci0gIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1NldFVwU3RhcnQoY29uc3QgVW5pdFRlc3Qm
IC8qdW5pdF90ZXN0Ki8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2RO
YW1lKCJPbkVudmlyb25tZW50c1NldFVwU3RhcnQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQg
T25FbnZpcm9ubWVudHNTZXRVcEVuZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewot
ICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRz
U2V0VXBFbmQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0Q2FzZVN0YXJ0KGNvbnN0
IFRlc3RDYXNlJiAvKnRlc3RfY2FzZSovKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRG
dWxsTWV0aG9kTmFtZSgiT25UZXN0Q2FzZVN0YXJ0IikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lk
IE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZvJiAvKnRlc3RfaW5mbyovKSB7Ci0gICAgZ19ldmVu
dHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0U3RhcnQiKSk7Ci0gIH0KLQot
ICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgLyp0
ZXN0X3BhcnRfcmVzdWx0Ki8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRo
b2ROYW1lKCJPblRlc3RQYXJ0UmVzdWx0IikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVz
dEVuZChjb25zdCBUZXN0SW5mbyYgLyp0ZXN0X2luZm8qLykgewotICAgIGdfZXZlbnRzLT5wdXNo
X2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdEVuZCIpKTsKLSAgfQotCi0gIHZpcnR1YWwg
dm9pZCBPblRlc3RDYXNlRW5kKGNvbnN0IFRlc3RDYXNlJiAvKnRlc3RfY2FzZSovKSB7Ci0gICAg
Z19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0Q2FzZUVuZCIpKTsK
LSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQoY29uc3Qg
VW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1
bGxNZXRob2ROYW1lKCJPbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiKSk7Ci0gIH0KLQotICB2
aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNUZWFyRG93bkVuZChjb25zdCBVbml0VGVzdCYgLyp1
bml0X3Rlc3QqLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUo
Ik9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25U
ZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpdGVyYXRpb24pIHsKLSAgICBNZXNzYWdlIG1l
c3NhZ2U7Ci0gICAgbWVzc2FnZSA8PCBHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0SXRlcmF0aW9u
RW5kIikKLSAgICAgICAgICAgIDw8ICIoIiAgPDwgaXRlcmF0aW9uIDw8ICIpIjsKLSAgICBnX2V2
ZW50cy0+cHVzaF9iYWNrKG1lc3NhZ2UuR2V0U3RyaW5nKCkpOwotICB9Ci0KLSAgdmlydHVhbCB2
b2lkIE9uVGVzdFByb2dyYW1FbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKLSAg
ICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RQcm9ncmFtRW5k
IikpOwotICB9Ci0KLSBwcml2YXRlOgotICBTdHJpbmcgR2V0RnVsbE1ldGhvZE5hbWUoY29uc3Qg
Y2hhciogbmFtZSkgewotICAgIE1lc3NhZ2UgbWVzc2FnZTsKLSAgICBtZXNzYWdlIDw8IG5hbWVf
IDw8ICIuIiA8PCBuYW1lOwotICAgIHJldHVybiBtZXNzYWdlLkdldFN0cmluZygpOwotICB9Ci0K
LSAgU3RyaW5nIG5hbWVfOwotfTsKLQotY2xhc3MgRW52aXJvbm1lbnRJbnZvY2F0aW9uQ2F0Y2hl
ciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0
VXAoKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkVudmlyb25tZW50OjpTZXRV
cCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBnX2V2ZW50cy0+
cHVzaF9iYWNrKFN0cmluZygiRW52aXJvbm1lbnQ6OlRlYXJEb3duIikpOwotICB9Ci19OwotCi1j
bGFzcyBMaXN0ZW5lclRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHJvdGVjdGVkOgotICBzdGF0aWMg
dm9pZCBTZXRVcFRlc3RDYXNlKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJM
aXN0ZW5lclRlc3Q6OlNldFVwVGVzdENhc2UiKSk7Ci0gIH0KLQotICBzdGF0aWMgdm9pZCBUZWFy
RG93blRlc3RDYXNlKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJMaXN0ZW5l
clRlc3Q6OlRlYXJEb3duVGVzdENhc2UiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAo
KSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6U2V0VXAi
KSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgZ19ldmVudHMtPnB1
c2hfYmFjayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6VGVhckRvd24iKSk7Ci0gIH0KLX07Ci0KLVRF
U1RfRihMaXN0ZW5lclRlc3QsIERvZXNGb28pIHsKLSAgLy8gVGVzdCBleGVjdXRpb24gb3JkZXIg
d2l0aGluIGEgdGVzdCBjYXNlIGlzIG5vdCBndWFyYW50ZWVkIHNvIHdlIGFyZSBub3QKLSAgLy8g
cmVjb3JkaW5nIHRoZSB0ZXN0IG5hbWUuCi0gIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJM
aXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5IikpOwotICBTVUNDRUVEKCk7ICAvLyBUcmlnZ2VycyBP
blRlc3RQYXJ0UmVzdWx0LgotfQotCi1URVNUX0YoTGlzdGVuZXJUZXN0LCBEb2VzQmFyKSB7Ci0g
IGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5Iikp
OwotICBTVUNDRUVEKCk7ICAvLyBUcmlnZ2VycyBPblRlc3RQYXJ0UmVzdWx0LgotfQotCi19ICAv
LyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotdXNpbmcg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6RW52aXJvbm1lbnRJbnZvY2F0aW9uQ2F0Y2hlcjsKLXVzaW5n
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkV2ZW50UmVjb3JkaW5nTGlzdGVuZXI7Ci0KLXZvaWQgVmVy
aWZ5UmVzdWx0cyhjb25zdCBzdGQ6OnZlY3RvcjxTdHJpbmc+JiBkYXRhLAotICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0KiBleHBlY3RlZF9kYXRhLAotICAgICAgICAgICAgICAg
ICAgIGludCBleHBlY3RlZF9kYXRhX3NpemUpIHsKLSAgY29uc3QgaW50IGFjdHVhbF9zaXplID0g
ZGF0YS5zaXplKCk7Ci0gIC8vIElmIHRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9uIGZhaWxzLCBhIG5l
dyBlbnRyeSB3aWxsIGJlIGFwcGVuZGVkIHRvCi0gIC8vIGRhdGEuICBIZW5jZSB3ZSBzYXZlIGRh
dGEuc2l6ZSgpIGZpcnN0LgotICBFWFBFQ1RfRVEoZXhwZWN0ZWRfZGF0YV9zaXplLCBhY3R1YWxf
c2l6ZSk7Ci0KLSAgLy8gQ29tcGFyZXMgdGhlIGNvbW1vbiBwcmVmaXguCi0gIGNvbnN0IGludCBz
aG9ydGVyX3NpemUgPSBleHBlY3RlZF9kYXRhX3NpemUgPD0gYWN0dWFsX3NpemUgPwotICAgICAg
ZXhwZWN0ZWRfZGF0YV9zaXplIDogYWN0dWFsX3NpemU7Ci0gIGludCBpID0gMDsKLSAgZm9yICg7
IGkgPCBzaG9ydGVyX3NpemU7ICsraSkgewotICAgIEFTU0VSVF9TVFJFUShleHBlY3RlZF9kYXRh
W2ldLCBkYXRhW2ldLmNfc3RyKCkpCi0gICAgICAgIDw8ICJhdCBwb3NpdGlvbiAiIDw8IGk7Ci0g
IH0KLQotICAvLyBQcmludHMgZXh0cmEgZWxlbWVudHMgaW4gdGhlIGFjdHVhbCBkYXRhLgotICBm
b3IgKDsgaSA8IGFjdHVhbF9zaXplOyArK2kpIHsKLSAgICBwcmludGYoIiAgQWN0dWFsIGV2ZW50
ICMlZDogJXNcbiIsIGksIGRhdGFbaV0uY19zdHIoKSk7Ci0gIH0KLX0KLQotaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIgKiphcmd2KSB7Ci0gIHN0ZDo6dmVjdG9yPFN0cmluZz4gZXZlbnRzOwotICBn
X2V2ZW50cyA9ICZldmVudHM7Ci0gIEluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICBV
bml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCkuQXBwZW5kKAotICAgICAgbmV3IEV2
ZW50UmVjb3JkaW5nTGlzdGVuZXIoIjFzdCIpKTsKLSAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkt
Pmxpc3RlbmVycygpLkFwcGVuZCgKLSAgICAgIG5ldyBFdmVudFJlY29yZGluZ0xpc3RlbmVyKCIy
bmQiKSk7Ci0KLSAgQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBFbnZpcm9ubWVudEludm9j
YXRpb25DYXRjaGVyKTsKLQotICBHVEVTVF9DSEVDS18oZXZlbnRzLnNpemUoKSA9PSAwKQotICAg
ICAgPDwgIkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCBzaG91bGQgbm90IGdlbmVyYXRlIGFueSBl
dmVudHMgaXRzZWxmLiI7Ci0KLSAgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHJlcGVhdCkgPSAyOwot
ICBpbnQgcmV0X3ZhbCA9IFJVTl9BTExfVEVTVFMoKTsKLQotICBjb25zdCBjaGFyKiBjb25zdCBl
eHBlY3RlZF9ldmVudHNbXSA9IHsKLSAgICAiMXN0Lk9uVGVzdFByb2dyYW1TdGFydCIsCi0gICAg
IjJuZC5PblRlc3RQcm9ncmFtU3RhcnQiLAotICAgICIxc3QuT25UZXN0SXRlcmF0aW9uU3RhcnQo
MCkiLAotICAgICIybmQuT25UZXN0SXRlcmF0aW9uU3RhcnQoMCkiLAotICAgICIxc3QuT25FbnZp
cm9ubWVudHNTZXRVcFN0YXJ0IiwKLSAgICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIs
Ci0gICAgIkVudmlyb25tZW50OjpTZXRVcCIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50c1NldFVw
RW5kIiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiLAotICAgICIxc3QuT25UZXN0
Q2FzZVN0YXJ0IiwKLSAgICAiMm5kLk9uVGVzdENhc2VTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVz
dDo6U2V0VXBUZXN0Q2FzZSIsCi0gICAgIjFzdC5PblRlc3RTdGFydCIsCi0gICAgIjJuZC5PblRl
c3RTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6U2V0VXAiLAotICAgICJMaXN0ZW5lclRlc3Q6
OiogVGVzdCBCb2R5IiwKLSAgICAiMXN0Lk9uVGVzdFBhcnRSZXN1bHQiLAotICAgICIybmQuT25U
ZXN0UGFydFJlc3VsdCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6VGVhckRvd24iLAotICAgICIybmQu
T25UZXN0RW5kIiwKLSAgICAiMXN0Lk9uVGVzdEVuZCIsCi0gICAgIjFzdC5PblRlc3RTdGFydCIs
Ci0gICAgIjJuZC5PblRlc3RTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6U2V0VXAiLAotICAg
ICJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5IiwKLSAgICAiMXN0Lk9uVGVzdFBhcnRSZXN1bHQi
LAotICAgICIybmQuT25UZXN0UGFydFJlc3VsdCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6VGVhckRv
d24iLAotICAgICIybmQuT25UZXN0RW5kIiwKLSAgICAiMXN0Lk9uVGVzdEVuZCIsCi0gICAgIkxp
c3RlbmVyVGVzdDo6VGVhckRvd25UZXN0Q2FzZSIsCi0gICAgIjJuZC5PblRlc3RDYXNlRW5kIiwK
LSAgICAiMXN0Lk9uVGVzdENhc2VFbmQiLAotICAgICIxc3QuT25FbnZpcm9ubWVudHNUZWFyRG93
blN0YXJ0IiwKLSAgICAiMm5kLk9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydCIsCi0gICAgIkVu
dmlyb25tZW50OjpUZWFyRG93biIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5k
IiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiLAotICAgICIybmQuT25UZXN0
SXRlcmF0aW9uRW5kKDApIiwKLSAgICAiMXN0Lk9uVGVzdEl0ZXJhdGlvbkVuZCgwKSIsCi0gICAg
IjFzdC5PblRlc3RJdGVyYXRpb25TdGFydCgxKSIsCi0gICAgIjJuZC5PblRlc3RJdGVyYXRpb25T
dGFydCgxKSIsCi0gICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVwU3RhcnQiLAotICAgICIybmQu
T25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0IiwKLSAgICAiRW52aXJvbm1lbnQ6OlNldFVwIiwKLSAg
ICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiLAotICAgICIxc3QuT25FbnZpcm9ubWVudHNT
ZXRVcEVuZCIsCi0gICAgIjFzdC5PblRlc3RDYXNlU3RhcnQiLAotICAgICIybmQuT25UZXN0Q2Fz
ZVN0YXJ0IiwKLSAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcFRlc3RDYXNlIiwKLSAgICAiMXN0Lk9u
VGVzdFN0YXJ0IiwKLSAgICAiMm5kLk9uVGVzdFN0YXJ0IiwKLSAgICAiTGlzdGVuZXJUZXN0OjpT
ZXRVcCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHkiLAotICAgICIxc3QuT25UZXN0
UGFydFJlc3VsdCIsCi0gICAgIjJuZC5PblRlc3RQYXJ0UmVzdWx0IiwKLSAgICAiTGlzdGVuZXJU
ZXN0OjpUZWFyRG93biIsCi0gICAgIjJuZC5PblRlc3RFbmQiLAotICAgICIxc3QuT25UZXN0RW5k
IiwKLSAgICAiMXN0Lk9uVGVzdFN0YXJ0IiwKLSAgICAiMm5kLk9uVGVzdFN0YXJ0IiwKLSAgICAi
TGlzdGVuZXJUZXN0OjpTZXRVcCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHkiLAot
ICAgICIxc3QuT25UZXN0UGFydFJlc3VsdCIsCi0gICAgIjJuZC5PblRlc3RQYXJ0UmVzdWx0IiwK
LSAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93biIsCi0gICAgIjJuZC5PblRlc3RFbmQiLAotICAg
ICIxc3QuT25UZXN0RW5kIiwKLSAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93blRlc3RDYXNlIiwK
LSAgICAiMm5kLk9uVGVzdENhc2VFbmQiLAotICAgICIxc3QuT25UZXN0Q2FzZUVuZCIsCi0gICAg
IjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiLAotICAgICIybmQuT25FbnZpcm9ubWVu
dHNUZWFyRG93blN0YXJ0IiwKLSAgICAiRW52aXJvbm1lbnQ6OlRlYXJEb3duIiwKLSAgICAiMm5k
Lk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiLAotICAgICIxc3QuT25FbnZpcm9ubWVudHNUZWFy
RG93bkVuZCIsCi0gICAgIjJuZC5PblRlc3RJdGVyYXRpb25FbmQoMSkiLAotICAgICIxc3QuT25U
ZXN0SXRlcmF0aW9uRW5kKDEpIiwKLSAgICAiMm5kLk9uVGVzdFByb2dyYW1FbmQiLAotICAgICIx
c3QuT25UZXN0UHJvZ3JhbUVuZCIKLSAgfTsKLSAgVmVyaWZ5UmVzdWx0cyhldmVudHMsCi0gICAg
ICAgICAgICAgICAgZXhwZWN0ZWRfZXZlbnRzLAotICAgICAgICAgICAgICAgIHNpemVvZihleHBl
Y3RlZF9ldmVudHMpL3NpemVvZihleHBlY3RlZF9ldmVudHNbMF0pKTsKLQotICAvLyBXZSBuZWVk
IHRvIGNoZWNrIG1hbnVhbGx5IGZvciBhZCBob2MgdGVzdCBmYWlsdXJlcyB0aGF0IGhhcHBlbiBh
ZnRlcgotICAvLyBSVU5fQUxMX1RFU1RTIGZpbmlzaGVzLgotICBpZiAoVW5pdFRlc3Q6OkdldElu
c3RhbmNlKCktPkZhaWxlZCgpKQotICAgIHJldF92YWwgPSAxOwotCi0gIHJldHVybiByZXRfdmFs
OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1tZXNz
YWdlX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LW1lc3NhZ2Vf
dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQyYjAzNDQ3ODcyZTNlOGYw
N2E5YTRhZGQyYmU1ZGQ0Njk4MGI1NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LW1lc3NhZ2Vf
dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDE2NyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAw
NSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNv
bSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRlc3RzIGZvciB0aGUgTWVzc2FnZSBjbGFzcy4KLQot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaD4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+Ci0KLW5hbWVzcGFjZSB7Ci0KLXVzaW5nIDo6dGVzdGluZzo6TWVzc2FnZTsKLXVzaW5nIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlN0clN0cmVhbTsKLQotLy8gQSBoZWxwZXIgZnVuY3Rpb24gdGhh
dCB0dXJucyBhIE1lc3NhZ2UgaW50byBhIEMgc3RyaW5nLgotY29uc3QgY2hhciogVG9DU3RyaW5n
KGNvbnN0IE1lc3NhZ2UmIG1zZykgewotICBzdGF0aWMgdGVzdGluZzo6aW50ZXJuYWw6OlN0cmlu
ZyByZXN1bHQ7Ci0gIHJlc3VsdCA9IG1zZy5HZXRTdHJpbmcoKTsKLSAgcmV0dXJuIHJlc3VsdC5j
X3N0cigpOwotfQotCi0vLyBUZXN0cyB0aGUgdGVzdGluZzo6TWVzc2FnZSBjbGFzcwotCi0vLyBU
ZXN0cyB0aGUgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KLVRFU1QoTWVzc2FnZVRlc3QsIERlZmF1bHRD
b25zdHJ1Y3RvcikgewotICBjb25zdCBNZXNzYWdlIG1zZzsKLSAgRVhQRUNUX1NUUkVRKCIiLCBU
b0NTdHJpbmcobXNnKSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBjb3B5IGNvbnN0cnVjdG9yLgotVEVT
VChNZXNzYWdlVGVzdCwgQ29weUNvbnN0cnVjdG9yKSB7Ci0gIGNvbnN0IE1lc3NhZ2UgbXNnMSgi
SGVsbG8iKTsKLSAgY29uc3QgTWVzc2FnZSBtc2cyKG1zZzEpOwotICBFWFBFQ1RfU1RSRVEoIkhl
bGxvIiwgVG9DU3RyaW5nKG1zZzIpKTsKLX0KLQotLy8gVGVzdHMgY29uc3RydWN0aW5nIGEgTWVz
c2FnZSBmcm9tIGEgQy1zdHJpbmcuCi1URVNUKE1lc3NhZ2VUZXN0LCBDb25zdHJ1Y3RzRnJvbUNT
dHJpbmcpIHsKLSAgTWVzc2FnZSBtc2coIkhlbGxvIik7Ci0gIEVYUEVDVF9TVFJFUSgiSGVsbG8i
LCBUb0NTdHJpbmcobXNnKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBhIGZsb2F0LgotVEVT
VChNZXNzYWdlVGVzdCwgU3RyZWFtc0Zsb2F0KSB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IHMgPSBU
b0NTdHJpbmcoTWVzc2FnZSgpIDw8IDEuMjM0NTZGIDw8ICIgIiA8PCAyLjM0NTY3Rik7Ci0gIC8v
IEJvdGggbnVtYmVycyBzaG91bGQgYmUgcHJpbnRlZCB3aXRoIGVub3VnaCBwcmVjaXNpb24uCi0g
IEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIxLjIzNDU2MCIsIHMp
OwotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6OklzU3Vic3RyaW5nLCAiIDIuMzQ1NjY5
Iiwgcyk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBhIGRvdWJsZS4KLVRFU1QoTWVzc2FnZVRl
c3QsIFN0cmVhbXNEb3VibGUpIHsKLSAgY29uc3QgY2hhciogY29uc3QgcyA9IFRvQ1N0cmluZyhN
ZXNzYWdlKCkgPDwgMTI2MDU3MDg4MC40NTU1NDk3IDw8ICIgIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8IDEyNjA1NzIyNjUuMTk1NDUzNCk7Ci0gIC8vIEJvdGggbnVtYmVy
cyBzaG91bGQgYmUgcHJpbnRlZCB3aXRoIGVub3VnaCBwcmVjaXNpb24uCi0gIEVYUEVDVF9QUkVE
X0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIxMjYwNTcwODgwLjQ1Iiwgcyk7Ci0gIEVY
UEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIgMTI2MDU3MjI2NS4xOSIs
IHMpOwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcgYSBub24tY2hhciBwb2ludGVyLgotVEVTVChN
ZXNzYWdlVGVzdCwgU3RyZWFtc1BvaW50ZXIpIHsKLSAgaW50IG4gPSAwOwotICBpbnQqIHAgPSAm
bjsKLSAgRVhQRUNUX1NUUk5FKCIobnVsbCkiLCBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8IHApKTsK
LX0KLQotLy8gVGVzdHMgc3RyZWFtaW5nIGEgTlVMTCBub24tY2hhciBwb2ludGVyLgotVEVTVChN
ZXNzYWdlVGVzdCwgU3RyZWFtc051bGxQb2ludGVyKSB7Ci0gIGludCogcCA9IE5VTEw7Ci0gIEVY
UEVDVF9TVFJFUSgiKG51bGwpIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCBwKSk7Ci19Ci0KLS8v
IFRlc3RzIHN0cmVhbWluZyBhIEMgc3RyaW5nLgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc0NT
dHJpbmcpIHsKLSAgRVhQRUNUX1NUUkVRKCJGb28iLCBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8ICJG
b28iKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBhIE5VTEwgQyBzdHJpbmcuCi1URVNUKE1l
c3NhZ2VUZXN0LCBTdHJlYW1zTnVsbENTdHJpbmcpIHsKLSAgY2hhciogcCA9IE5VTEw7Ci0gIEVY
UEVDVF9TVFJFUSgiKG51bGwpIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCBwKSk7Ci19Ci0KLS8v
IFRlc3RzIHN0cmVhbWluZyBzdGQ6OnN0cmluZy4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNT
dHJpbmcpIHsKLSAgY29uc3QgOjpzdGQ6OnN0cmluZyBzdHIoIkhlbGxvIik7Ci0gIEVYUEVDVF9T
VFJFUSgiSGVsbG8iLCBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8IHN0cikpOwotfQotCi0vLyBUZXN0
cyB0aGF0IHdlIGNhbiBvdXRwdXQgc3RyaW5ncyBjb250YWluaW5nIGVtYmVkZGVkIE5VTHMuCi1U
RVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zU3RyaW5nV2l0aEVtYmVkZGVkTlVMKSB7Ci0gIGNvbnN0
IGNoYXIgY2hhcl9hcnJheV93aXRoX251bFtdID0KLSAgICAgICJIZXJlJ3MgYSBOVUxcMCBhbmQg
c29tZSBtb3JlIHN0cmluZyI7Ci0gIGNvbnN0IDo6c3RkOjpzdHJpbmcgc3RyaW5nX3dpdGhfbnVs
KGNoYXJfYXJyYXlfd2l0aF9udWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVvZihjaGFyX2FycmF5X3dpdGhfbnVsKSAtIDEpOwotICBFWFBFQ1RfU1RSRVEoIkhl
cmUncyBhIE5VTFxcMCBhbmQgc29tZSBtb3JlIHN0cmluZyIsCi0gICAgICAgICAgICAgICBUb0NT
dHJpbmcoTWVzc2FnZSgpIDw8IHN0cmluZ193aXRoX251bCkpOwotfQotCi0vLyBUZXN0cyBzdHJl
YW1pbmcgYSBOVUwgY2hhci4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNOVUxDaGFyKSB7Ci0g
IEVYUEVDVF9TVFJFUSgiXFwwIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCAnXDAnKSk7Ci19Ci0K
LS8vIFRlc3RzIHN0cmVhbWluZyBpbnQuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zSW50KSB7
Ci0gIEVYUEVDVF9TVFJFUSgiMTIzIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCAxMjMpKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBiYXNpYyBJTyBtYW5pcHVsYXRvcnMgKGVuZGwsIGVuZHMsIGFuZCBm
bHVzaCkgY2FuIGJlCi0vLyBzdHJlYW1lZCB0byBNZXNzYWdlLgotVEVTVChNZXNzYWdlVGVzdCwg
U3RyZWFtc0Jhc2ljSW9NYW5pcCkgewotICBFWFBFQ1RfU1RSRVEoIkxpbmUgMS5cbkEgTlVMIGNo
YXIgXFwwIGluIGxpbmUgMi4iLAotICAgICAgICAgICAgICAgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8
PCAiTGluZSAxLiIgPDwgc3RkOjplbmRsCi0gICAgICAgICAgICAgICAgICAgICAgICAgPDwgIkEg
TlVMIGNoYXIgIiA8PCBzdGQ6OmVuZHMgPDwgc3RkOjpmbHVzaAotICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICIgaW4gbGluZSAyLiIpKTsKLX0KLQotLy8gVGVzdHMgTWVzc2FnZTo6R2V0U3Ry
aW5nKCkKLVRFU1QoTWVzc2FnZVRlc3QsIEdldFN0cmluZykgewotICBNZXNzYWdlIG1zZzsKLSAg
bXNnIDw8IDEgPDwgIiBsYW1iIjsKLSAgRVhQRUNUX1NUUkVRKCIxIGxhbWIiLCBtc2cuR2V0U3Ry
aW5nKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBhIE1lc3NhZ2Ugb2JqZWN0
IHRvIGFuIG9zdHJlYW0uCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zVG9PU3RyZWFtKSB7Ci0g
IE1lc3NhZ2UgbXNnKCJIZWxsbyIpOwotICBTdHJTdHJlYW0gc3M7Ci0gIHNzIDw8IG1zZzsKLSAg
RVhQRUNUX1NUUkVRKCJIZWxsbyIsIHRlc3Rpbmc6OmludGVybmFsOjpTdHJTdHJlYW1Ub1N0cmlu
Zygmc3MpLmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgTWVzc2FnZSBvYmplY3QgZG9l
c24ndCB0YWtlIHVwIHRvbyBtdWNoIHN0YWNrIHNwYWNlLgotVEVTVChNZXNzYWdlVGVzdCwgRG9l
c05vdFRha2VVcE11Y2hTdGFja1NwYWNlKSB7Ci0gIEVYUEVDVF9MRShzaXplb2YoTWVzc2FnZSks
IDE2VSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdC1vcHRpb25zX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0LW9wdGlvbnNfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMmUyY2JjOTJlNWUwMjhjNzRjODJmMDc1MGZkZDhiZGZiNGU4ODMxZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0LW9wdGlvbnNfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDIxMiAr
MCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwot
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0v
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwot
Ly8gQXV0aG9yczoga2VpdGgucmF5QGdtYWlsLmNvbSAoS2VpdGggUmF5KQotLy8KLS8vIEdvb2ds
ZSBUZXN0IFVuaXRUZXN0T3B0aW9ucyB0ZXN0cwotLy8KLS8vIFRoaXMgZmlsZSB0ZXN0cyBjbGFz
c2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5IGJ5Ci0vLyBHb29nbGUgVGVzdC4gIFRo
ZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotLy8KLS8vIFRoaXMgZmls
ZSBpcyAjaW5jbHVkZWQgZnJvbSBndGVzdC5jYywgdG8gYXZvaWQgY2hhbmdpbmcgYnVpbGQgb3IK
LS8vIG1ha2UtZmlsZXMgb24gV2luZG93cyBhbmQgb3RoZXIgcGxhdGZvcm1zLiBEbyBub3QgI2lu
Y2x1ZGUgdGhpcyBmaWxlCi0vLyBhbnl3aGVyZSBlbHNlIQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KLQotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0jaW5jbHVkZSA8d2luZG93cy5o
PgotI2VsaWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1ZGUgPGRpcmVjdC5oPgotI2VuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5z
bGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4g
IEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVk
LCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0v
LyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJu
YWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8g
MQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBM
RU1FTlRBVElPTl8KLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVybmFsIHsK
LW5hbWVzcGFjZSB7Ci0KLS8vIFR1cm5zIHRoZSBnaXZlbiByZWxhdGl2ZSBwYXRoIGludG8gYW4g
YWJzb2x1dGUgcGF0aC4KLUZpbGVQYXRoIEdldEFic29sdXRlUGF0aE9mKGNvbnN0IEZpbGVQYXRo
JiByZWxhdGl2ZV9wYXRoKSB7Ci0gIHJldHVybiBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBh
dGg6OkdldEN1cnJlbnREaXIoKSwgcmVsYXRpdmVfcGF0aCk7Ci19Ci0KLS8vIFRlc3RpbmcgVW5p
dFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQvR2V0T3V0cHV0RmlsZS4KLQotVEVTVChYbWxP
dXRwdXRUZXN0LCBHZXRPdXRwdXRGb3JtYXREZWZhdWx0KSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0
KSA9ICIiOwotICBFWFBFQ1RfU1RSRVEoIiIsIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9y
bWF0KCkuY19zdHIoKSk7Ci19Ci0KLVRFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0Rm9ybWF0
KSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6ZmlsZW5hbWUiOwotICBFWFBFQ1RfU1RS
RVEoInhtbCIsIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCkuY19zdHIoKSk7Ci19
Ci0KLVRFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0RmlsZURlZmF1bHQpIHsKLSAgR1RFU1Rf
RkxBRyhvdXRwdXQpID0gIiI7Ci0gIEVYUEVDVF9TVFJFUShHZXRBYnNvbHV0ZVBhdGhPZihGaWxl
UGF0aCgidGVzdF9kZXRhaWwueG1sIikpLmNfc3RyKCksCi0gICAgICAgICAgICAgICBVbml0VGVz
dE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOwotfQotCi1U
RVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZpbGVTaW5nbGVGaWxlKSB7Ci0gIEdURVNUX0ZM
QUcob3V0cHV0KSA9ICJ4bWw6ZmlsZW5hbWUuYWJjIjsKLSAgRVhQRUNUX1NUUkVRKEdldEFic29s
dXRlUGF0aE9mKEZpbGVQYXRoKCJmaWxlbmFtZS5hYmMiKSkuY19zdHIoKSwKLSAgICAgICAgICAg
ICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIo
KSk7Ci19Ci0KLVRFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0RmlsZUZyb21EaXJlY3RvcnlQ
YXRoKSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6cGF0aCIgR1RFU1RfUEFUSF9TRVBf
OwotICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3RlZF9vdXRwdXRfZmlsZSA9Ci0gICAgICBHZXRB
YnNvbHV0ZVBhdGhPZigKLSAgICAgICAgICBGaWxlUGF0aChzdGQ6OnN0cmluZygicGF0aCIpICsg
R1RFU1RfUEFUSF9TRVBfICsKLSAgICAgICAgICAgICAgICAgICBHZXRDdXJyZW50RXhlY3V0YWJs
ZU5hbWUoKS5jX3N0cigpICsgIi54bWwiKSkuY19zdHIoKTsKLSAgY29uc3QgU3RyaW5nJiBvdXRw
dXRfZmlsZSA9IFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7
Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICBFWFBFQ1RfU1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1
dF9maWxlLmNfc3RyKCksIG91dHB1dF9maWxlLmNfc3RyKCkpOwotI2Vsc2UKLSAgRVhQRUNUX0VR
KGV4cGVjdGVkX291dHB1dF9maWxlLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKLSNlbmRpZgotfQot
Ci1URVNUKE91dHB1dEZpbGVIZWxwZXJzVGVzdCwgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKSB7
Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGV4ZV9zdHIgPSBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUo
KS5jX3N0cigpOwotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgY29uc3QgYm9vbCBzdWNjZXNzID0K
LSAgICAgIF9zdHJjbXBpKCJndGVzdC1vcHRpb25zX3Rlc3QiLCBleGVfc3RyLmNfc3RyKCkpID09
IDAgfHwKLSAgICAgIF9zdHJjbXBpKCJndGVzdC1vcHRpb25zLWV4X3Rlc3QiLCBleGVfc3RyLmNf
c3RyKCkpID09IDAgfHwKLSAgICAgIF9zdHJjbXBpKCJndGVzdF9hbGxfdGVzdCIsIGV4ZV9zdHIu
Y19zdHIoKSkgPT0gMCB8fAotICAgICAgX3N0cmNtcGkoImd0ZXN0X2RsbF90ZXN0IiwgZXhlX3N0
ci5jX3N0cigpKSA9PSAwOwotI2Vsc2UKLSAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHJlbW92
ZSB0aGUgaGFyZC1jb2RlZCAibHQtIiBwcmVmaXggd2hlbgotICAvLyAgIENoYW5kbGVyIENhcnJ1
dGgncyBsaWJ0b29sIHJlcGxhY2VtZW50IGlzIHJlYWR5LgotICBjb25zdCBib29sIHN1Y2Nlc3Mg
PQotICAgICAgZXhlX3N0ciA9PSAiZ3Rlc3Qtb3B0aW9uc190ZXN0IiB8fAotICAgICAgZXhlX3N0
ciA9PSAiZ3Rlc3RfYWxsX3Rlc3QiIHx8Ci0gICAgICBleGVfc3RyID09ICJsdC1ndGVzdF9hbGxf
dGVzdCIgfHwKLSAgICAgIGV4ZV9zdHIgPT0gImd0ZXN0X2RsbF90ZXN0IjsKLSNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUwotICBpZiAoIXN1Y2Nlc3MpCi0gICAgRkFJTCgpIDw8ICJHZXRDdXJy
ZW50RXhlY3V0YWJsZU5hbWUoKSByZXR1cm5zICIgPDwgZXhlX3N0cjsKLX0KLQotY2xhc3MgWG1s
T3V0cHV0Q2hhbmdlRGlyVGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBvcmlnaW5hbF93b3JraW5nX2Rpcl8gPSBGaWxlUGF0aDo6
R2V0Q3VycmVudERpcigpOwotICAgIHBvc2l4OjpDaERpcigiLi4iKTsKLSAgICAvLyBUaGlzIHdp
bGwgbWFrZSB0aGUgdGVzdCBmYWlsIGlmIHJ1biBmcm9tIHRoZSByb290IGRpcmVjdG9yeS4KLSAg
ICBFWFBFQ1RfU1RSTkUob3JpZ2luYWxfd29ya2luZ19kaXJfLmNfc3RyKCksCi0gICAgICAgICAg
ICAgICAgIEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkuY19zdHIoKSk7Ci0gIH0KLQotICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgcG9zaXg6OkNoRGlyKG9yaWdpbmFsX3dvcmtpbmdf
ZGlyXy5jX3N0cigpKTsKLSAgfQotCi0gIEZpbGVQYXRoIG9yaWdpbmFsX3dvcmtpbmdfZGlyXzsK
LX07Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29y
a2luZ0RpcldpdGhEZWZhdWx0KSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICIiOwotICBFWFBF
Q1RfU1RSRVEoRmlsZVBhdGg6OkNvbmNhdFBhdGhzKG9yaWdpbmFsX3dvcmtpbmdfZGlyXywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgidGVzdF9kZXRhaWwu
eG1sIikpLmNfc3RyKCksCi0gICAgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29s
dXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOwotfQotCi1URVNUX0YoWG1sT3V0cHV0Q2hh
bmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoRGVmYXVsdFhNTCkgewot
ICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sIjsKLSAgRVhQRUNUX1NUUkVRKEZpbGVQYXRoOjpD
b25jYXRQYXRocyhvcmlnaW5hbF93b3JraW5nX2Rpcl8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRmlsZVBhdGgoInRlc3RfZGV0YWlsLnhtbCIpKS5jX3N0cigpLAotICAg
ICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUo
KS5jX3N0cigpKTsKLX0KLQotVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZl
T3JpZ2luYWxXb3JraW5nRGlyV2l0aFJlbGF0aXZlRmlsZSkgewotICBHVEVTVF9GTEFHKG91dHB1
dCkgPSAieG1sOmZpbGVuYW1lLmFiYyI7Ci0gIEVYUEVDVF9TVFJFUShGaWxlUGF0aDo6Q29uY2F0
UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZpbGVQYXRoKCJmaWxlbmFtZS5hYmMiKSkuY19zdHIoKSwKLSAgICAgICAgICAg
ICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIo
KSk7Ci19Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFs
V29ya2luZ0RpcldpdGhSZWxhdGl2ZVBhdGgpIHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInht
bDpwYXRoIiBHVEVTVF9QQVRIX1NFUF87Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdGVkX291
dHB1dF9maWxlID0KLSAgICAgIEZpbGVQYXRoOjpDb25jYXRQYXRocygKLSAgICAgICAgICBvcmln
aW5hbF93b3JraW5nX2Rpcl8sCi0gICAgICAgICAgRmlsZVBhdGgoc3RkOjpzdHJpbmcoInBhdGgi
KSArIEdURVNUX1BBVEhfU0VQXyArCi0gICAgICAgICAgICAgICAgICAgR2V0Q3VycmVudEV4ZWN1
dGFibGVOYW1lKCkuY19zdHIoKSArICIueG1sIikpLmNfc3RyKCk7Ci0gIGNvbnN0IFN0cmluZyYg
b3V0cHV0X2ZpbGUgPSBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0Rmls
ZSgpOwotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgRVhQRUNUX1NUUkNBU0VFUShleHBlY3RlZF9v
dXRwdXRfZmlsZS5jX3N0cigpLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKLSNlbHNlCi0gIEVYUEVD
VF9FUShleHBlY3RlZF9vdXRwdXRfZmlsZSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7Ci0jZW5kaWYK
LX0KLQotVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3Jr
aW5nRGlyV2l0aEFic29sdXRlRmlsZSkgewotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgR1RFU1Rf
RkxBRyhvdXRwdXQpID0gInhtbDpjOlxcdG1wXFxmaWxlbmFtZS5hYmMiOwotICBFWFBFQ1RfU1RS
RVEoRmlsZVBhdGgoImM6XFx0bXBcXGZpbGVuYW1lLmFiYyIpLmNfc3RyKCksCi0gICAgICAgICAg
ICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3Ry
KCkpOwotI2Vsc2UKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0ieG1sOi90bXAvZmlsZW5hbWUuYWJj
IjsKLSAgRVhQRUNUX1NUUkVRKEZpbGVQYXRoKCIvdG1wL2ZpbGVuYW1lLmFiYyIpLmNfc3RyKCks
Ci0gICAgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0
RmlsZSgpLmNfc3RyKCkpOwotI2VuZGlmCi19Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJU
ZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhBYnNvbHV0ZVBhdGgpIHsKLSNpZiBH
VEVTVF9PU19XSU5ET1dTCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIHBhdGggPSAiYzpcXHRtcFxcIjsK
LSNlbHNlCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIHBhdGggPSAiL3RtcC8iOwotI2VuZGlmCi0KLSAg
R1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbDoiICsgcGF0aDsKLSAgY29uc3Qgc3RkOjpzdHJpbmcg
ZXhwZWN0ZWRfb3V0cHV0X2ZpbGUgPQotICAgICAgcGF0aCArIEdldEN1cnJlbnRFeGVjdXRhYmxl
TmFtZSgpLmNfc3RyKCkgKyAiLnhtbCI7Ci0gIGNvbnN0IFN0cmluZyYgb3V0cHV0X2ZpbGUgPSBV
bml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpOwotCi0jaWYgR1RF
U1RfT1NfV0lORE9XUwotICBFWFBFQ1RfU1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxlLmNf
c3RyKCksIG91dHB1dF9maWxlLmNfc3RyKCkpOwotI2Vsc2UKLSAgRVhQRUNUX0VRKGV4cGVjdGVk
X291dHB1dF9maWxlLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKLSNlbmRpZgotfQotCi19ICAvLyBu
YW1lc3BhY2UKLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIHRlc3Rp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0t
dGVzdDJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0t
dGVzdDJfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NiNmNmYWM5ZTc2
YjgyN2YxN2FlMTE4MjllMjM2ZDZmOTdlZTY0Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBh
cmFtLXRlc3QyX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vLyBDb3B5
cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1
dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2bGFk
bEBnb29nbGUuY29tIChWbGFkIExvc2V2KQotLy8KLS8vIFRlc3RzIGZvciBHb29nbGUgVGVzdCBp
dHNlbGYuICBUaGlzIHZlcmlmaWVzIHRoYXQgdGhlIGJhc2ljIGNvbnN0cnVjdHMgb2YKLS8vIEdv
b2dsZSBUZXN0IHdvcmsuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0jaW5jbHVkZSAi
dGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaCIKLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNU
Ci0KLXVzaW5nIDo6dGVzdGluZzo6VmFsdWVzOwotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
UGFyYW1HZW5lcmF0b3I7Ci0KLS8vIFRlc3RzIHRoYXQgZ2VuZXJhdG9ycyBkZWZpbmVkIGluIGEg
ZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXQKLS8vIGFyZSBmdW5jdGlvbmFsLiBUaGUgdGVzdCB1
c2luZyBleHRlcm5fZ2VuIGlzIGRlZmluZWQKLS8vIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5j
Yy4KLVBhcmFtR2VuZXJhdG9yPGludD4gZXh0ZXJuX2dlbiA9IFZhbHVlcygzMyk7Ci0KLS8vIFRl
c3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUg
dHJhbnNsYXRpb24gdW5pdAotLy8gYW5kIGluc3RhbnRpYXRlZCBpbiBhbm90aGVyLiBUaGUgdGVz
dCBpcyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYwotLy8gYW5kIEV4dGVybmFs
SW5zdGFudGlhdGlvblRlc3QgZml4dHVyZSBjbGFzcyBpcyBkZWZpbmVkIGluCi0vLyBndGVzdC1w
YXJhbS10ZXN0X3Rlc3QuaC4KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKE11bHRpcGxlc09mMzMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDMzLCA2NikpOwotCi0vLyBUZXN0cyB0aGF0IGEg
cGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGluc3RhbnRpYXRlZAotLy8gaW4gbXVsdGlw
bGUgdHJhbnNsYXRpb24gdW5pdHMuIEFub3RoZXIgaW5zdGFudGlhdGlvbiBpcyBkZWZpbmVkCi0v
LyBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MgYW5kIEluc3RhbnRpYXRpb25Jbk11bHRpcGxl
VHJhbnNsYWlvblVuaXRzVGVzdAotLy8gZml4dHVyZSBpcyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFt
LXRlc3RfdGVzdC5oCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5jZTIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rl
c3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNDIqMywgNDIqNCwgNDIqNSkpOwot
Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkMGEwZTczNWMwYjk4OGVmMWEyMmI3ZDdhZTY5MDI3MDE4YmRiOGNi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmNjCisrKyAvZGV2L251
bGwKQEAgLTEsODM1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0v
LwotLy8gVGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZi4gVGhpcyBmaWxlIHZlcmlmaWVzIHRo
YXQgdGhlIHBhcmFtZXRlcgotLy8gZ2VuZXJhdG9ycyBvYmplY3RzIHByb2R1Y2UgY29ycmVjdCBw
YXJhbWV0ZXIgc2VxdWVuY2VzIGFuZCB0aGF0Ci0vLyBHb29nbGUgVGVzdCBydW50aW1lIGluc3Rh
bnRpYXRlcyBjb3JyZWN0IHRlc3RzIGZyb20gdGhvc2Ugc2VxdWVuY2VzLgotCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLSNpbmNsdWRlIDxh
bGdvcml0aG0+Ci0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8bGlzdD4KLSNpbmNsdWRl
IDxzc3RyZWFtPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLS8vIFRv
IGluY2x1ZGUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmguCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFU
SU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIiAgLy8gZm9yIFVuaXRU
ZXN0T3B0aW9ucwotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi0jaW5jbHVkZSAidGVz
dC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaCIKLQotdXNpbmcgOjpzdGQ6OnZlY3RvcjsKLXVzaW5n
IDo6c3RkOjpzb3J0OwotCi11c2luZyA6OnRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVu
dDsKLXVzaW5nIDo6dGVzdGluZzo6Qm9vbDsKLXVzaW5nIDo6dGVzdGluZzo6TWVzc2FnZTsKLXVz
aW5nIDo6dGVzdGluZzo6UmFuZ2U7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW07Ci11
c2luZyA6OnRlc3Rpbmc6OlZhbHVlczsKLXVzaW5nIDo6dGVzdGluZzo6VmFsdWVzSW47Ci0KLSNp
ZiBHVEVTVF9IQVNfQ09NQklORQotdXNpbmcgOjp0ZXN0aW5nOjpDb21iaW5lOwotdXNpbmcgOjpz
dGQ6OnRyMTo6Z2V0OwotdXNpbmcgOjpzdGQ6OnRyMTo6bWFrZV90dXBsZTsKLXVzaW5nIDo6c3Rk
Ojp0cjE6OnR1cGxlOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQotCi11c2luZyA6OnRl
c3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVyYXRvcjsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJu
YWw6OlVuaXRUZXN0T3B0aW9uczsKLQotLy8gUHJpbnRzIGEgdmFsdWUgdG8gYSBzdHJpbmcuCi0v
LwotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHJlbW92ZSBQcmludFZhbHVlKCkgd2hlbiB3ZSBt
b3ZlIG1hdGNoZXJzIGFuZAotLy8gRVhQRUNUX1RIQVQoKSBmcm9tIEdvb2dsZSBNb2NrIHRvIEdv
b2dsZSBUZXN0LiAgQXQgdGhhdCB0aW1lLCB3ZQotLy8gY2FuIHdyaXRlIEVYUEVDVF9USEFUKHgs
IEVxKHkpKSB0byBjb21wYXJlIHR3byB0dXBsZXMgeCBhbmQgeSwgYXMKLS8vIEVYUEVDVF9USEFU
KCkgYW5kIHRoZSBtYXRjaGVycyBrbm93IGhvdyB0byBwcmludCB0dXBsZXMuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLTo6c3RkOjpzdHJpbmcgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSkgewot
ICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKLSAgc3RyZWFtIDw8IHZhbHVlOwotICByZXR1
cm4gc3RyZWFtLnN0cigpOwotfQotCi0jaWYgR1RFU1RfSEFTX0NPTUJJTkUKLQotLy8gVGhlc2Ug
b3ZlcmxvYWRzIGFsbG93IHByaW50aW5nIHR1cGxlcyBpbiBvdXIgdGVzdHMuICBXZSBjYW5ub3QK
LS8vIGRlZmluZSBhbiBvcGVyYXRvcjw8IGZvciB0dXBsZXMsIGFzIHRoYXQgZGVmaW5pdGlvbiBu
ZWVkcyB0byBiZSBpbgotLy8gdGhlIHN0ZCBuYW1lc3BhY2UgaW4gb3JkZXIgdG8gYmUgcGlja2Vk
IHVwIGJ5IEdvb2dsZSBUZXN0IHZpYQotLy8gQXJndW1lbnQtRGVwZW5kZW50IExvb2t1cCwgeWV0
IGRlZmluaW5nIGFueXRoaW5nIGluIHRoZSBzdGQKLS8vIG5hbWVzcGFjZSBpbiBub24tU1RMIGNv
ZGUgaXMgdW5kZWZpbmVkIGJlaGF2aW9yLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyPgotOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKGNvbnN0IHR1cGxlPFQxLCBUMj4mIHZh
bHVlKSB7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOwotICBzdHJlYW0gPDwgIigiIDw8
IGdldDwwPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8MT4odmFsdWUpIDw8ICIpIjsKLSAgcmV0dXJu
IHN0cmVhbS5zdHIoKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDM+Ci06OnN0ZDo6c3RyaW5nIFByaW50VmFsdWUoY29uc3QgdHVwbGU8VDEsIFQy
LCBUMz4mIHZhbHVlKSB7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOwotICBzdHJlYW0g
PDwgIigiIDw8IGdldDwwPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8MT4odmFsdWUpCi0gICAgICAg
ICA8PCAiLCAiPDwgZ2V0PDI+KHZhbHVlKSA8PCAiKSI7Ci0gIHJldHVybiBzdHJlYW0uc3RyKCk7
Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0
eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1l
IFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMD4KLTo6c3RkOjpzdHJp
bmcgUHJpbnRWYWx1ZSgKLSAgICBjb25zdCB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTA+JiB2YWx1ZSkgewotICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsK
LSAgc3RyZWFtIDw8ICIoIiA8PCBnZXQ8MD4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDE+KHZhbHVl
KQotICAgICAgICAgPDwgIiwgIjw8IGdldDwyPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8Mz4odmFs
dWUpCi0gICAgICAgICA8PCAiLCAiPDwgZ2V0PDQ+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDw1Pih2
YWx1ZSkKLSAgICAgICAgIDw8ICIsICI8PCBnZXQ8Nj4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDc+
KHZhbHVlKQotICAgICAgICAgPDwgIiwgIjw8IGdldDw4Pih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8
OT4odmFsdWUpIDw8ICIpIjsKLSAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKLX0KLQotI2VuZGlmICAv
LyBHVEVTVF9IQVNfQ09NQklORQotCi0vLyBWZXJpZmllcyB0aGF0IGEgc2VxdWVuY2UgZ2VuZXJh
dGVkIGJ5IHRoZSBnZW5lcmF0b3IgYW5kIGFjY2Vzc2VkCi0vLyB2aWEgdGhlIGl0ZXJhdG9yIG9i
amVjdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBvbmUgdXNpbmcgR29vZ2xlIFRlc3QKLS8vIGFzc2Vy
dGlvbnMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+Ci12b2lkIFZlcmlmeUdlbmVy
YXRvcihjb25zdCBQYXJhbUdlbmVyYXRvcjxUPiYgZ2VuZXJhdG9yLAotICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVCAoJmV4cGVjdGVkX3ZhbHVlcylbTl0pIHsKLSAgdHlwZW5hbWUgUGFyYW1H
ZW5lcmF0b3I8VD46Oml0ZXJhdG9yIGl0ID0gZ2VuZXJhdG9yLmJlZ2luKCk7Ci0gIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgTjsgKytpKSB7Ci0gICAgQVNTRVJUX0ZBTFNFKGl0ID09IGdlbmVyYXRv
ci5lbmQoKSkKLSAgICAgICAgPDwgIkF0IGVsZW1lbnQgIiA8PCBpIDw8ICIgd2hlbiBhY2Nlc3Np
bmcgdmlhIGFuIGl0ZXJhdG9yICIKLSAgICAgICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUgY29weSBj
b25zdHJ1Y3Rvci5cbiI7Ci0gICAgLy8gV2UgY2Fubm90IHVzZSBFWFBFQ1RfRVEoKSBoZXJlIGFz
IHRoZSB2YWx1ZXMgbWF5IGJlIHR1cGxlcywKLSAgICAvLyB3aGljaCBkb24ndCBzdXBwb3J0IDw8
LgotICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkX3ZhbHVlc1tpXSA9PSAqaXQpCi0gICAgICAgIDw8
ICJ3aGVyZSBpIGlzICIgPDwgaQotICAgICAgICA8PCAiLCBleHBlY3RlZF92YWx1ZXNbaV0gaXMg
IiA8PCBQcmludFZhbHVlKGV4cGVjdGVkX3ZhbHVlc1tpXSkKLSAgICAgICAgPDwgIiwgKml0IGlz
ICIgPDwgUHJpbnRWYWx1ZSgqaXQpCi0gICAgICAgIDw8ICIsIGFuZCAnaXQnIGlzIGFuIGl0ZXJh
dG9yIGNyZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rvci5cbiI7Ci0gICAgaXQrKzsKLSAg
fQotICBFWFBFQ1RfVFJVRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpCi0gICAgICAgIDw8ICJBdCB0
aGUgcHJlc3VtZWQgZW5kIG9mIHNlcXVlbmNlIHdoZW4gYWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRv
ciAiCi0gICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhlIGNvcHkgY29uc3RydWN0b3IuXG4iOwot
Ci0gIC8vIFRlc3QgdGhlIGl0ZXJhdG9yIGFzc2lnbm1lbnQuIFRoZSBmb2xsb3dpbmcgbGluZXMg
dmVyaWZ5IHRoYXQKLSAgLy8gdGhlIHNlcXVlbmNlIGFjY2Vzc2VkIHZpYSBhbiBpdGVyYXRvciBp
bml0aWFsaXplZCB2aWEgdGhlCi0gIC8vIGFzc2lnbm1lbnQgb3BlcmF0b3IgKGFzIG9wcG9zZWQg
dG8gYSBjb3B5IGNvbnN0cnVjdG9yKSBtYXRjaGVzCi0gIC8vIGp1c3QgdGhlIHNhbWUuCi0gIGl0
ID0gZ2VuZXJhdG9yLmJlZ2luKCk7Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgTjsgKytpKSB7
Ci0gICAgQVNTRVJUX0ZBTFNFKGl0ID09IGdlbmVyYXRvci5lbmQoKSkKLSAgICAgICAgPDwgIkF0
IGVsZW1lbnQgIiA8PCBpIDw8ICIgd2hlbiBhY2Nlc3NpbmcgdmlhIGFuIGl0ZXJhdG9yICIKLSAg
ICAgICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUgYXNzaWdubWVudCBvcGVyYXRvci5cbiI7Ci0gICAg
RVhQRUNUX1RSVUUoZXhwZWN0ZWRfdmFsdWVzW2ldID09ICppdCkKLSAgICAgICAgPDwgIndoZXJl
IGkgaXMgIiA8PCBpCi0gICAgICAgIDw8ICIsIGV4cGVjdGVkX3ZhbHVlc1tpXSBpcyAiIDw8IFBy
aW50VmFsdWUoZXhwZWN0ZWRfdmFsdWVzW2ldKQotICAgICAgICA8PCAiLCAqaXQgaXMgIiA8PCBQ
cmludFZhbHVlKCppdCkKLSAgICAgICAgPDwgIiwgYW5kICdpdCcgaXMgYW4gaXRlcmF0b3IgY3Jl
YXRlZCB3aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9yLlxuIjsKLSAgICBpdCsrOwotICB9Ci0gIEVY
UEVDVF9UUlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSkKLSAgICAgICAgPDwgIkF0IHRoZSBwcmVz
dW1lZCBlbmQgb2Ygc2VxdWVuY2Ugd2hlbiBhY2Nlc3NpbmcgdmlhIGFuIGl0ZXJhdG9yICIKLSAg
ICAgICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUgYXNzaWdubWVudCBvcGVyYXRvci5cbiI7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQ+JiBnZW5lcmF0b3IpIHsKLSAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0
b3I8VD46Oml0ZXJhdG9yIGl0ID0gZ2VuZXJhdG9yLmJlZ2luKCk7Ci0gIEVYUEVDVF9UUlVFKGl0
ID09IGdlbmVyYXRvci5lbmQoKSk7Ci0KLSAgaXQgPSBnZW5lcmF0b3IuYmVnaW4oKTsKLSAgRVhQ
RUNUX1RSVUUoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKTsKLX0KLQotLy8gR2VuZXJhdG9yIHRlc3Rz
LiBUaGV5IHRlc3QgdGhhdCBlYWNoIG9mIHRoZSBwcm92aWRlZCBnZW5lcmF0b3IgZnVuY3Rpb25z
Ci0vLyBnZW5lcmF0ZXMgYW4gZXhwZWN0ZWQgc2VxdWVuY2Ugb2YgdmFsdWVzLiBUaGUgZ2VuZXJh
bCB0ZXN0IHBhdHRlcm4KLS8vIGluc3RhbnRpYXRlcyBhIGdlbmVyYXRvciB1c2luZyBvbmUgb2Yg
dGhlIGdlbmVyYXRvciBmdW5jdGlvbnMsCi0vLyBjaGVja3MgdGhlIHNlcXVlbmNlIHByb2R1Y2Vk
IGJ5IHRoZSBnZW5lcmF0b3IgdXNpbmcgaXRzIGl0ZXJhdG9yIEFQSSwKLS8vIGFuZCB0aGVuIHJl
c2V0cyB0aGUgaXRlcmF0b3IgYmFjayB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZXF1ZW5jZQot
Ly8gYW5kIGNoZWNrcyB0aGUgc2VxdWVuY2UgYWdhaW4uCi0KLS8vIFRlc3RzIHRoYXQgaXRlcmF0
b3JzIHByb2R1Y2VkIGJ5IGdlbmVyYXRvciBmdW5jdGlvbnMgY29uZm9ybSB0byB0aGUKLS8vIEZv
cndhcmRJdGVyYXRvciBjb25jZXB0LgotVEVTVChJdGVyYXRvclRlc3QsIFBhcmFtSXRlcmF0b3JD
b25mb3Jtc1RvRm9yd2FyZEl0ZXJhdG9yQ29uY2VwdCkgewotICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDEwKTsKLSAgUGFyYW1HZW5lcmF0b3I8aW50Pjo6aXRlcmF0
b3IgaXQgPSBnZW4uYmVnaW4oKTsKLQotICAvLyBWZXJpZmllcyB0aGF0IGl0ZXJhdG9yIGluaXRp
YWxpemF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkLgotICBQYXJhbUdlbmVyYXRvcjxpbnQ+OjppdGVy
YXRvciBpdDIgPSBpdDsKLSAgRVhQRUNUX1RSVUUoKml0ID09ICppdDIpIDw8ICJJbml0aWFsaXpl
ZCBpdGVyYXRvcnMgbXVzdCBwb2ludCB0byB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgImVsZW1lbnQgc2FtZSBhcyBpdHMgc291cmNlIHBvaW50cyB0byI7Ci0KLSAgLy8gVmVy
aWZpZXMgdGhhdCBpdGVyYXRvciBhc3NpZ25tZW50IHdvcmtzIGFzIGV4cGVjdGVkLgotICBpdCsr
OwotICBFWFBFQ1RfRkFMU0UoKml0ID09ICppdDIpOwotICBpdDIgPSBpdDsKLSAgRVhQRUNUX1RS
VUUoKml0ID09ICppdDIpIDw8ICJBc3NpZ25lZCBpdGVyYXRvcnMgbXVzdCBwb2ludCB0byB0aGUg
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgImVsZW1lbnQgc2FtZSBhcyBpdHMgc291
cmNlIHBvaW50cyB0byI7Ci0KLSAgLy8gVmVyaWZpZXMgdGhhdCBwcmVmaXggb3BlcmF0b3IrKygp
IHJldHVybnMgKnRoaXMuCi0gIEVYUEVDVF9FUSgmaXQsICYoKytpdCkpIDw8ICJSZXN1bHQgb2Yg
dGhlIHByZWZpeCBvcGVyYXRvcisrIG11c3QgYmUgIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCAicmVmZXIgdG8gdGhlIG9yaWdpbmFsIG9iamVjdCI7Ci0KLSAgLy8gVmVyaWZpZXMgdGhh
dCB0aGUgcmVzdWx0IG9mIHRoZSBwb3N0Zml4IG9wZXJhdG9yKysgcG9pbnRzIHRvIHRoZSB2YWx1
ZQotICAvLyBwb2ludGVkIHRvIGJ5IHRoZSBvcmlnaW5hbCBpdGVyYXRvci4KLSAgaW50IG9yaWdp
bmFsX3ZhbHVlID0gKml0OyAgLy8gSGF2ZSB0byBjb21wdXRlIGl0IG91dHNpZGUgb2YgbWFjcm8g
Y2FsbCB0byBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1bmFmZmVjdGVkIGJ5
IHRoZSBwYXJhbWV0ZXIgZXZhbHVhdGlvbiBvcmRlci4KLSAgRVhQRUNUX0VRKG9yaWdpbmFsX3Zh
bHVlLCAqKGl0KyspKTsKLQotICAvLyBWZXJpZmllcyB0aGF0IHByZWZpeCBhbmQgcG9zdGZpeCBv
cGVyYXRvcisrKCkgYWR2YW5jZSBhbiBpdGVyYXRvcgotICAvLyBhbGwgdGhlIHNhbWUuCi0gIGl0
MiA9IGl0OwotICBpdCsrOwotICArK2l0MjsKLSAgRVhQRUNUX1RSVUUoKml0ID09ICppdDIpOwot
fQotCi0vLyBUZXN0cyB0aGF0IFJhbmdlKCkgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5j
ZS4KLVRFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZVdpdGhEZWZhdWx0U3RlcCkgewotICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDMpOwotICBjb25zdCBpbnQgZXhwZWN0
ZWRfdmFsdWVzW10gPSB7MCwgMSwgMn07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVk
X3ZhbHVlcyk7Ci19Ci0KLS8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBSYW5nZSgpIGdlbmVyYXRl
cyB0aGUgc2luZ2xlIGVsZW1lbnQgc2VxdWVuY2UKLS8vIGFzIGV4cGVjdGVkIHdoZW4gcHJvdmlk
ZWQgd2l0aCByYW5nZSBsaW1pdHMgdGhhdCBhcmUgZXF1YWwuCi1URVNUKFJhbmdlVGVzdCwgSW50
UmFuZ2VTaW5nbGVWYWx1ZSkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJh
bmdlKDAsIDEpOwotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MH07Ci0gIFZlcmlm
eUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIEVkZ2UgY2FzZS4gVGVz
dHMgdGhhdCBSYW5nZSgpIHdpdGggZ2VuZXJhdGVzIGVtcHR5IHNlcXVlbmNlIHdoZW4KLS8vIHN1
cHBsaWVkIHdpdGggYW4gZW1wdHkgcmFuZ2UuCi1URVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VFbXB0
eSkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDApOwotICBW
ZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUmFuZ2UoKSB3
aXRoIGN1c3RvbSBzdGVwIChncmVhdGVyIHRoZW4gb25lKSBnZW5lcmF0ZXMKLS8vIHRoZSBleHBl
Y3RlZCBzZXF1ZW5jZS4KLVRFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZVdpdGhDdXN0b21TdGVwKSB7
Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgOSwgMyk7Ci0gIGNv
bnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHswLCAzLCA2fTsKLSAgVmVyaWZ5R2VuZXJhdG9y
KGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBSYW5nZSgpIHdpdGgg
Y3VzdG9tIHN0ZXAgKGdyZWF0ZXIgdGhlbiBvbmUpIGdlbmVyYXRlcwotLy8gdGhlIGV4cGVjdGVk
IHNlcXVlbmNlIHdoZW4gdGhlIGxhc3QgZWxlbWVudCBkb2VzIG5vdCBmYWxsIG9uIHRoZQotLy8g
dXBwZXIgcmFuZ2UgbGltaXQuIFNlcXVlbmNlcyBnZW5lcmF0ZWQgYnkgUmFuZ2UoKSBtdXN0IG5v
dCBoYXZlCi0vLyBlbGVtZW50cyBiZXlvbmQgdGhlIHJhbmdlIGxpbWl0cy4KLVRFU1QoUmFuZ2VU
ZXN0LCBJbnRSYW5nZVdpdGhDdXN0b21TdGVwT3ZlclVwcGVyQm91bmQpIHsKLSAgY29uc3QgUGFy
YW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCA0LCAzKTsKLSAgY29uc3QgaW50IGV4cGVj
dGVkX3ZhbHVlc1tdID0gezAsIDN9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92
YWx1ZXMpOwotfQotCi0vLyBWZXJpZmllcyB0aGF0IFJhbmdlIHdvcmtzIHdpdGggdXNlci1kZWZp
bmVkIHR5cGVzIHRoYXQgZGVmaW5lCi0vLyBjb3B5IGNvbnN0cnVjdG9yLCBvcGVyYXRvcj0oKSwg
b3BlcmF0b3IrKCksIGFuZCBvcGVyYXRvcjwoKS4KLWNsYXNzIERvZ0FkZGVyIHsKLSBwdWJsaWM6
Ci0gIGV4cGxpY2l0IERvZ0FkZGVyKGNvbnN0IGNoYXIqIGFfdmFsdWUpIDogdmFsdWVfKGFfdmFs
dWUpIHt9Ci0gIERvZ0FkZGVyKGNvbnN0IERvZ0FkZGVyJiBvdGhlcikgOiB2YWx1ZV8ob3RoZXIu
dmFsdWVfLmNfc3RyKCkpIHt9Ci0KLSAgRG9nQWRkZXIgb3BlcmF0b3I9KGNvbnN0IERvZ0FkZGVy
JiBvdGhlcikgewotICAgIGlmICh0aGlzICE9ICZvdGhlcikKLSAgICAgIHZhbHVlXyA9IG90aGVy
LnZhbHVlXzsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLSAgRG9nQWRkZXIgb3BlcmF0b3IrKGNv
bnN0IERvZ0FkZGVyJiBvdGhlcikgY29uc3QgewotICAgIE1lc3NhZ2UgbXNnOwotICAgIG1zZyA8
PCB2YWx1ZV8uY19zdHIoKSA8PCBvdGhlci52YWx1ZV8uY19zdHIoKTsKLSAgICByZXR1cm4gRG9n
QWRkZXIobXNnLkdldFN0cmluZygpLmNfc3RyKCkpOwotICB9Ci0gIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IERvZ0FkZGVyJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiB2YWx1ZV8gPCBvdGhlci52
YWx1ZV87Ci0gIH0KLSAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nJiB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQotCi0gcHJpdmF0ZToKLSAgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6U3RyaW5nIHZhbHVlXzsKLX07Ci0KLVRFU1QoUmFuZ2VUZXN0LCBXb3Jrc1dpdGhBQ3Vz
dG9tVHlwZSkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxEb2dBZGRlcj4gZ2VuID0KLSAgICAg
IFJhbmdlKERvZ0FkZGVyKCJjYXQiKSwgRG9nQWRkZXIoImNhdGRvZ2RvZyIpLCBEb2dBZGRlcigi
ZG9nIikpOwotICBQYXJhbUdlbmVyYXRvcjxEb2dBZGRlcj46Oml0ZXJhdG9yIGl0ID0gZ2VuLmJl
Z2luKCk7Ci0KLSAgQVNTRVJUX0ZBTFNFKGl0ID09IGdlbi5lbmQoKSk7Ci0gIEVYUEVDVF9TVFJF
USgiY2F0IiwgaXQtPnZhbHVlKCkuY19zdHIoKSk7Ci0KLSAgQVNTRVJUX0ZBTFNFKCsraXQgPT0g
Z2VuLmVuZCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJjYXRkb2ciLCBpdC0+dmFsdWUoKS5jX3N0cigp
KTsKLQotICBFWFBFQ1RfVFJVRSgrK2l0ID09IGdlbi5lbmQoKSk7Ci19Ci0KLWNsYXNzIEludFdy
YXBwZXIgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgSW50V3JhcHBlcihpbnQgYV92YWx1ZSkgOiB2
YWx1ZV8oYV92YWx1ZSkge30KLSAgSW50V3JhcHBlcihjb25zdCBJbnRXcmFwcGVyJiBvdGhlcikg
OiB2YWx1ZV8ob3RoZXIudmFsdWVfKSB7fQotCi0gIEludFdyYXBwZXIgb3BlcmF0b3I9KGNvbnN0
IEludFdyYXBwZXImIG90aGVyKSB7Ci0gICAgdmFsdWVfID0gb3RoZXIudmFsdWVfOwotICAgIHJl
dHVybiAqdGhpczsKLSAgfQotICAvLyBvcGVyYXRvcisoKSBhZGRzIGEgZGlmZmVyZW50IHR5cGUu
Ci0gIEludFdyYXBwZXIgb3BlcmF0b3IrKGludCBvdGhlcikgY29uc3QgeyByZXR1cm4gSW50V3Jh
cHBlcih2YWx1ZV8gKyBvdGhlcik7IH0KLSAgYm9vbCBvcGVyYXRvcjwoY29uc3QgSW50V3JhcHBl
ciYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gdmFsdWVfIDwgb3RoZXIudmFsdWVfOwotICB9
Ci0gIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQotCi0gcHJpdmF0ZToKLSAg
aW50IHZhbHVlXzsKLX07Ci0KLVRFU1QoUmFuZ2VUZXN0LCBXb3Jrc1dpdGhBQ3VzdG9tVHlwZVdp
dGhEaWZmZXJlbnRJbmNyZW1lbnRUeXBlKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPEludFdy
YXBwZXI+IGdlbiA9IFJhbmdlKEludFdyYXBwZXIoMCksIEludFdyYXBwZXIoMikpOwotICBQYXJh
bUdlbmVyYXRvcjxJbnRXcmFwcGVyPjo6aXRlcmF0b3IgaXQgPSBnZW4uYmVnaW4oKTsKLQotICBB
U1NFUlRfRkFMU0UoaXQgPT0gZ2VuLmVuZCgpKTsKLSAgRVhQRUNUX0VRKDAsIGl0LT52YWx1ZSgp
KTsKLQotICBBU1NFUlRfRkFMU0UoKytpdCA9PSBnZW4uZW5kKCkpOwotICBFWFBFQ1RfRVEoMSwg
aXQtPnZhbHVlKCkpOwotCi0gIEVYUEVDVF9UUlVFKCsraXQgPT0gZ2VuLmVuZCgpKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIHdpdGggYW4gYXJyYXkgcGFyYW1ldGVyIGdlbmVyYXRl
cwotLy8gdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgotVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0lu
QXJyYXkpIHsKLSAgaW50IGFycmF5W10gPSB7MywgNSwgOH07Ci0gIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPGludD4gZ2VuID0gVmFsdWVzSW4oYXJyYXkpOwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBh
cnJheSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSB3aXRoIGEgY29uc3QgYXJyYXkg
cGFyYW1ldGVyIGdlbmVyYXRlcwotLy8gdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgotVEVTVChWYWx1
ZXNJblRlc3QsIFZhbHVlc0luQ29uc3RBcnJheSkgewotICBjb25zdCBpbnQgYXJyYXlbXSA9IHsz
LCA1LCA4fTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbihhcnJh
eSk7Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGFycmF5KTsKLX0KLQotLy8gRWRnZSBjYXNlLiBU
ZXN0cyB0aGF0IFZhbHVlc0luKCkgd2l0aCBhbiBhcnJheSBwYXJhbWV0ZXIgY29udGFpbmluZyBh
Ci0vLyBzaW5nbGUgZWxlbWVudCBnZW5lcmF0ZXMgdGhlIHNpbmdsZSBlbGVtZW50IHNlcXVlbmNl
LgotVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luU2luZ2xlRWxlbWVudEFycmF5KSB7Ci0gIGlu
dCBhcnJheVtdID0gezQyfTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1
ZXNJbihhcnJheSk7Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGFycmF5KTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBWYWx1ZXNJbigpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UgZm9yIGFu
IFNUTAotLy8gY29udGFpbmVyICh2ZWN0b3IpLgotVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0lu
VmVjdG9yKSB7Ci0gIHR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxpbnQ+IENvbnRhaW5lclR5cGU7Ci0g
IENvbnRhaW5lclR5cGUgdmFsdWVzOwotICB2YWx1ZXMucHVzaF9iYWNrKDMpOwotICB2YWx1ZXMu
cHVzaF9iYWNrKDUpOwotICB2YWx1ZXMucHVzaF9iYWNrKDgpOwotICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVlcyk7Ci0KLSAgY29uc3QgaW50IGV4cGVjdGVk
X3ZhbHVlc1tdID0gezMsIDUsIDh9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92
YWx1ZXMpOwotfQotCi0vLyBUZXN0cyB0aGF0IFZhbHVlc0luKCkgZ2VuZXJhdGVzIHRoZSBleHBl
Y3RlZCBzZXF1ZW5jZS4KLVRFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJbkl0ZXJhdG9yUmFuZ2Up
IHsKLSAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGludD4gQ29udGFpbmVyVHlwZTsKLSAgQ29udGFp
bmVyVHlwZSB2YWx1ZXM7Ci0gIHZhbHVlcy5wdXNoX2JhY2soMyk7Ci0gIHZhbHVlcy5wdXNoX2Jh
Y2soNSk7Ci0gIHZhbHVlcy5wdXNoX2JhY2soOCk7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGlu
dD4gZ2VuID0gVmFsdWVzSW4odmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7Ci0KLSAgY29u
c3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezMsIDUsIDh9OwotICBWZXJpZnlHZW5lcmF0b3Io
Z2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgVmFs
dWVzSW4oKSBwcm92aWRlZCB3aXRoIGFuIGl0ZXJhdG9yIHJhbmdlIHNwZWNpZnlpbmcgYQotLy8g
c2luZ2xlIHZhbHVlIGdlbmVyYXRlcyBhIHNpbmdsZS1lbGVtZW50IHNlcXVlbmNlLgotVEVTVChW
YWx1ZXNJblRlc3QsIFZhbHVlc0luU2luZ2xlRWxlbWVudEl0ZXJhdG9yUmFuZ2UpIHsKLSAgdHlw
ZWRlZiA6OnN0ZDo6dmVjdG9yPGludD4gQ29udGFpbmVyVHlwZTsKLSAgQ29udGFpbmVyVHlwZSB2
YWx1ZXM7Ci0gIHZhbHVlcy5wdXNoX2JhY2soNDIpOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxp
bnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOwotCi0gIGNv
bnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHs0Mn07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4s
IGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBWYWx1ZXNJ
bigpIHByb3ZpZGVkIHdpdGggYW4gZW1wdHkgaXRlcmF0b3IgcmFuZ2UKLS8vIGdlbmVyYXRlcyBh
biBlbXB0eSBzZXF1ZW5jZS4KLVRFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJbkVtcHR5SXRlcmF0
b3JSYW5nZSkgewotICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8aW50PiBDb250YWluZXJUeXBlOwot
ICBDb250YWluZXJUeXBlIHZhbHVlczsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4g
PSBWYWx1ZXNJbih2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKLQotICBWZXJpZnlHZW5l
cmF0b3JJc0VtcHR5KGdlbik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIFZhbHVlcygpIGdlbmVy
YXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCi1URVNUKFZhbHVlc1Rlc3QsIFZhbHVlc1dvcmtz
KSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzKDMsIDUsIDgpOwot
Ci0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHszLCA1LCA4fTsKLSAgVmVyaWZ5R2Vu
ZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBWYWx1ZXMo
KSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlcyBmcm9tIGVsZW1lbnRzIG9mCi0vLyBk
aWZmZXJlbnQgdHlwZXMgY29udmVydGlibGUgdG8gUGFyYW1HZW5lcmF0b3IncyBwYXJhbWV0ZXIg
dHlwZS4KLVRFU1QoVmFsdWVzVGVzdCwgVmFsdWVzV29ya3NGb3JWYWx1ZXNPZkNvbXBhdGlibGVU
eXBlcykgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxkb3VibGU+IGdlbiA9IFZhbHVlcygzLCA1
LjBmLCA4LjApOwotCi0gIGNvbnN0IGRvdWJsZSBleHBlY3RlZF92YWx1ZXNbXSA9IHszLjAsIDUu
MCwgOC4wfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQot
VEVTVChWYWx1ZXNUZXN0LCBWYWx1ZXNXb3Jrc0Zvck1heExlbmd0aExpc3QpIHsKLSAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXMoCi0gICAgICAxMCwgMjAsIDMwLCA0MCwg
NTAsIDYwLCA3MCwgODAsIDkwLCAxMDAsCi0gICAgICAxMTAsIDEyMCwgMTMwLCAxNDAsIDE1MCwg
MTYwLCAxNzAsIDE4MCwgMTkwLCAyMDAsCi0gICAgICAyMTAsIDIyMCwgMjMwLCAyNDAsIDI1MCwg
MjYwLCAyNzAsIDI4MCwgMjkwLCAzMDAsCi0gICAgICAzMTAsIDMyMCwgMzMwLCAzNDAsIDM1MCwg
MzYwLCAzNzAsIDM4MCwgMzkwLCA0MDAsCi0gICAgICA0MTAsIDQyMCwgNDMwLCA0NDAsIDQ1MCwg
NDYwLCA0NzAsIDQ4MCwgNDkwLCA1MDApOwotCi0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNb
XSA9IHsKLSAgICAgIDEwLCAyMCwgMzAsIDQwLCA1MCwgNjAsIDcwLCA4MCwgOTAsIDEwMCwKLSAg
ICAgIDExMCwgMTIwLCAxMzAsIDE0MCwgMTUwLCAxNjAsIDE3MCwgMTgwLCAxOTAsIDIwMCwKLSAg
ICAgIDIxMCwgMjIwLCAyMzAsIDI0MCwgMjUwLCAyNjAsIDI3MCwgMjgwLCAyOTAsIDMwMCwKLSAg
ICAgIDMxMCwgMzIwLCAzMzAsIDM0MCwgMzUwLCAzNjAsIDM3MCwgMzgwLCAzOTAsIDQwMCwKLSAg
ICAgIDQxMCwgNDIwLCA0MzAsIDQ0MCwgNDUwLCA0NjAsIDQ3MCwgNDgwLCA0OTAsIDUwMH07Ci0g
IFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIEVkZ2UgY2Fz
ZSB0ZXN0LiBUZXN0cyB0aGF0IHNpbmdsZS1wYXJhbWV0ZXIgVmFsdWVzKCkgZ2VuZXJhdGVzIHRo
ZSBzZXF1ZW5jZQotLy8gd2l0aCB0aGUgc2luZ2xlIHZhbHVlLgotVEVTVChWYWx1ZXNUZXN0LCBW
YWx1ZXNXaXRoU2luZ2xlUGFyYW1ldGVyKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4g
Z2VuID0gVmFsdWVzKDQyKTsKLQotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7NDJ9
OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBUZXN0
cyB0aGF0IEJvb2woKSBnZW5lcmF0ZXMgc2VxdWVuY2UgKGZhbHNlLCB0cnVlKS4KLVRFU1QoQm9v
bFRlc3QsIEJvb2xXb3JrcykgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxib29sPiBnZW4gPSBC
b29sKCk7Ci0KLSAgY29uc3QgYm9vbCBleHBlY3RlZF92YWx1ZXNbXSA9IHtmYWxzZSwgdHJ1ZX07
Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLSNpZiBHVEVT
VF9IQVNfQ09NQklORQotCi0vLyBUZXN0cyB0aGF0IENvbWJpbmUoKSB3aXRoIHR3byBwYXJhbWV0
ZXJzIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCi1URVNUKENvbWJpbmVUZXN0LCBD
b21iaW5lV2l0aFR3b1BhcmFtZXRlcnMpIHsKLSAgY29uc3QgY2hhciogZm9vID0gImZvbyI7Ci0g
IGNvbnN0IGNoYXIqIGJhciA9ICJiYXIiOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxj
b25zdCBjaGFyKiwgaW50PiA+IGdlbiA9Ci0gICAgICBDb21iaW5lKFZhbHVlcyhmb28sIGJhciks
IFZhbHVlcygzLCA0KSk7Ci0KLSAgdHVwbGU8Y29uc3QgY2hhciosIGludD4gZXhwZWN0ZWRfdmFs
dWVzW10gPSB7Ci0gICAgbWFrZV90dXBsZShmb28sIDMpLCBtYWtlX3R1cGxlKGZvbywgNCksCi0g
ICAgbWFrZV90dXBsZShiYXIsIDMpLCBtYWtlX3R1cGxlKGJhciwgNCl9OwotICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBUZXN0cyB0aGF0IENvbWJpbmUo
KSB3aXRoIHRocmVlIHBhcmFtZXRlcnMgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4K
LVRFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoVGhyZWVQYXJhbWV0ZXJzKSB7Ci0gIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1
ZXMoMCwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWx1ZXMoMywgNCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNSwgNikpOwotICB0dXBsZTxp
bnQsIGludCwgaW50PiBleHBlY3RlZF92YWx1ZXNbXSA9IHsKLSAgICBtYWtlX3R1cGxlKDAsIDMs
IDUpLCBtYWtlX3R1cGxlKDAsIDMsIDYpLAotICAgIG1ha2VfdHVwbGUoMCwgNCwgNSksIG1ha2Vf
dHVwbGUoMCwgNCwgNiksCi0gICAgbWFrZV90dXBsZSgxLCAzLCA1KSwgbWFrZV90dXBsZSgxLCAz
LCA2KSwKLSAgICBtYWtlX3R1cGxlKDEsIDQsIDUpLCBtYWtlX3R1cGxlKDEsIDQsIDYpfTsKLSAg
VmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCB0aGUgQ29tYmluZSgpIHdpdGggdGhlIGZpcnN0IHBhcmFtZXRlciBnZW5lcmF0aW5nIGEgc2lu
Z2xlIHZhbHVlCi0vLyBzZXF1ZW5jZSBnZW5lcmF0ZXMgYSBzZXF1ZW5jZSB3aXRoIHRoZSBudW1i
ZXIgb2YgZWxlbWVudHMgZXF1YWwgdG8gdGhlCi0vLyBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhl
IHNlcXVlbmNlIGdlbmVyYXRlZCBieSB0aGUgc2Vjb25kIHBhcmFtZXRlci4KLVRFU1QoQ29tYmlu
ZVRlc3QsIENvbWJpbmVXaXRoRmlyc3RQYXJhbWV0ZXJTaW5nbGVWYWx1ZSkgewotICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcyg0Miks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsdWVzKDAsIDEpKTsKLQotICB0dXBsZTxpbnQsIGludD4gZXhwZWN0ZWRfdmFsdWVzW10gPSB7
bWFrZV90dXBsZSg0MiwgMCksIG1ha2VfdHVwbGUoNDIsIDEpfTsKLSAgVmVyaWZ5R2VuZXJhdG9y
KGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgQ29tYmluZSgp
IHdpdGggdGhlIHNlY29uZCBwYXJhbWV0ZXIgZ2VuZXJhdGluZyBhIHNpbmdsZSB2YWx1ZQotLy8g
c2VxdWVuY2UgZ2VuZXJhdGVzIGEgc2VxdWVuY2Ugd2l0aCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRz
IGVxdWFsIHRvIHRoZQotLy8gbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBzZXF1ZW5jZSBnZW5l
cmF0ZWQgYnkgdGhlIGZpcnN0IHBhcmFtZXRlci4KLVRFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVX
aXRoU2Vjb25kUGFyYW1ldGVyU2luZ2xlVmFsdWUpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8
dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoMCwgMSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDQyKSk7
Ci0KLSAgdHVwbGU8aW50LCBpbnQ+IGV4cGVjdGVkX3ZhbHVlc1tdID0ge21ha2VfdHVwbGUoMCwg
NDIpLCBtYWtlX3R1cGxlKDEsIDQyKX07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVk
X3ZhbHVlcyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgd2hlbiB0aGUgZmlyc3QgcGFyYW1ldGVyIHBy
b2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLAotLy8gQ29tYmluZSgpIHByb2R1Y2VzIGFuIGVtcHR5
IHNlcXVlbmNlLCB0b28uCi1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aEZpcnN0UGFyYW1l
dGVyRW1wdHlSYW5nZSkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludD4g
PiBnZW4gPSBDb21iaW5lKFJhbmdlKDAsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygwLCAxKSk7Ci0gIFZlcmlmeUdlbmVy
YXRvcklzRW1wdHkoZ2VuKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB3aGVuIHRoZSBzZWNvbmQgcGFy
YW1ldGVyIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLAotLy8gQ29tYmluZSgpIHByb2R1Y2Vz
IGFuIGVtcHR5IHNlcXVlbmNlLCB0b28uCi1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFNl
Y29uZFBhcmFtZXRlckVtcHR5UmFuZ2UpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8
aW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoMCwgMSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2UoMSwgMSkpOwotICBW
ZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7Ci19Ci0KLS8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhh
dCBjb21iaW5lIHdvcmtzIHdpdGggdGhlIG1heGltdW0gbnVtYmVyCi0vLyBvZiBwYXJhbWV0ZXJz
IHN1cHBvcnRlZCBieSBHb29nbGUgVGVzdCAoY3VycmVudGx5IDEwKS4KLVRFU1QoQ29tYmluZVRl
c3QsIENvbWJpbmVXaXRoTWF4TnVtYmVyT2ZQYXJhbWV0ZXJzKSB7Ci0gIGNvbnN0IGNoYXIqIGZv
byA9ICJmb28iOwotICBjb25zdCBjaGFyKiBiYXIgPSAiYmFyIjsKLSAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8dHVwbGU8Y29uc3QgY2hhciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBpbnQ+ID4gZ2VuID0gQ29tYmlu
ZShWYWx1ZXMoZm9vLCBiYXIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbHVlcygxKSwgVmFsdWVzKDIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygzKSwgVmFsdWVz
KDQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcyg1KSwgVmFsdWVzKDYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg3KSwgVmFsdWVzKDgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg5KSk7
Ci0KLSAgdHVwbGU8Y29uc3QgY2hhciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQ+Ci0gICAgICBleHBlY3RlZF92YWx1ZXNbXSA9IHttYWtlX3R1cGxlKGZvbywg
MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBt
YWtlX3R1cGxlKGJhciwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSl9OwotICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19D
T01CSU5FCi0KLS8vIFRlc3RzIHRoYXQgYW4gZ2VuZXJhdG9yIHByb2R1Y2VzIGNvcnJlY3Qgc2Vx
dWVuY2UgYWZ0ZXIgYmVpbmcKLS8vIGFzc2lnbmVkIGZyb20gYW5vdGhlciBnZW5lcmF0b3IuCi1U
RVNUKFBhcmFtR2VuZXJhdG9yVGVzdCwgQXNzaWdubWVudFdvcmtzKSB7Ci0gIFBhcmFtR2VuZXJh
dG9yPGludD4gZ2VuID0gVmFsdWVzKDEsIDIpOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+
IGdlbjIgPSBWYWx1ZXMoMywgNCk7Ci0gIGdlbiA9IGdlbjI7Ci0KLSAgY29uc3QgaW50IGV4cGVj
dGVkX3ZhbHVlc1tdID0gezMsIDR9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92
YWx1ZXMpOwotfQotCi0vLyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgdGVzdHMgYXJlIGV4
cGFuZGVkIGFuZCBydW4gYXMgc3BlY2lmaWVkOgotLy8gb25lIHRlc3QgcGVyIGVsZW1lbnQgZnJv
bSB0aGUgc2VxdWVuY2UgcHJvZHVjZWQgYnkgdGhlIGdlbmVyYXRvcgotLy8gc3BlY2lmaWVkIGlu
IElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QLiBJdCBhbHNvIHZlcmlmaWVzIHRoYXQgdGhlIHRlc3Qn
cwotLy8gZml4dHVyZSBjb25zdHJ1Y3RvciwgU2V0VXAoKSwgYW5kIFRlYXJEb3duKCkgaGF2ZSBy
dW4gYW5kIGhhdmUgYmVlbgotLy8gc3VwcGxpZWQgd2l0aCB0aGUgY29ycmVjdCBwYXJhbWV0ZXJz
LgotCi0vLyBUaGUgdXNlIG9mIGVudmlyb25tZW50IG9iamVjdCBhbGxvd3MgZGV0ZWN0aW9uIG9m
IHRoZSBjYXNlIHdoZXJlIG5vIHRlc3QKLS8vIGNhc2UgZnVuY3Rpb25hbGl0eSBpcyBydW4gYXQg
YWxsLiBJbiB0aGlzIGNhc2UgVGVzdENhc2VUZWFyRG93biB3aWxsIG5vdAotLy8gYmUgYWJsZSB0
byBkZXRlY3QgbWlzc2luZyB0ZXN0cywgbmF0dXJhbGx5LgotdGVtcGxhdGUgPGludCBrRXhwZWN0
ZWRDYWxscz4KLWNsYXNzIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpFbnZpcm9ubWVudCB7Ci0gcHVibGljOgotICBzdGF0aWMgVGVzdEdlbmVyYXRpb25FbnZp
cm9ubWVudCogSW5zdGFuY2UoKSB7Ci0gICAgc3RhdGljIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1l
bnQqIGluc3RhbmNlID0gbmV3IFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQ7Ci0gICAgcmV0dXJu
IGluc3RhbmNlOwotICB9Ci0KLSAgdm9pZCBGaXh0dXJlQ29uc3RydWN0b3JFeGVjdXRlZCgpIHsg
Zml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3VudF8rKzsgfQotICB2b2lkIFNldFVwRXhlY3V0ZWQoKSB7
IHNldF91cF9jb3VudF8rKzsgfQotICB2b2lkIFRlYXJEb3duRXhlY3V0ZWQoKSB7IHRlYXJfZG93
bl9jb3VudF8rKzsgfQotICB2b2lkIFRlc3RCb2R5RXhlY3V0ZWQoKSB7IHRlc3RfYm9keV9jb3Vu
dF8rKzsgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICAvLyBJZiBhbGwgTXVs
dGlwbGVUZXN0R2VuZXJhdGlvblRlc3QgdGVzdHMgaGF2ZSBiZWVuIGRlLXNlbGVjdGVkCi0gICAg
Ly8gYnkgdGhlIGZpbHRlciBmbGFnLCB0aGUgZm9sbG93aW5nIGNoZWNrcyBtYWtlIG5vIHNlbnNl
LgotICAgIGJvb2wgcGVyZm9ybV9jaGVjayA9IGZhbHNlOwotCi0gICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBrRXhwZWN0ZWRDYWxsczsgKytpKSB7Ci0gICAgICBNZXNzYWdlIG1zZzsKLSAgICAgIG1z
ZyA8PCAiVGVzdHNFeHBhbmRlZEFuZFJ1bi8iIDw8IGk7Ci0gICAgICBpZiAoVW5pdFRlc3RPcHRp
b25zOjpGaWx0ZXJNYXRjaGVzVGVzdCgKLSAgICAgICAgICAgICAiVGVzdEV4cGFuc2lvbk1vZHVs
ZS9NdWx0aXBsZVRlc3RHZW5lcmF0aW9uVGVzdCIsCi0gICAgICAgICAgICAgIG1zZy5HZXRTdHJp
bmcoKS5jX3N0cigpKSkgewotICAgICAgICBwZXJmb3JtX2NoZWNrID0gdHJ1ZTsKLSAgICAgIH0K
LSAgICB9Ci0gICAgaWYgKHBlcmZvcm1fY2hlY2spIHsKLSAgICAgIEVYUEVDVF9FUShrRXhwZWN0
ZWRDYWxscywgZml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3VudF8pCi0gICAgICAgICAgPDwgIkZpeHR1
cmUgY29uc3RydWN0b3Igb2YgUGFyYW1UZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlICIKLSAg
ICAgICAgICA8PCAiaGFzIG5vdCBiZWVuIHJ1biBhcyBleHBlY3RlZC4iOwotICAgICAgRVhQRUNU
X0VRKGtFeHBlY3RlZENhbGxzLCBzZXRfdXBfY291bnRfKQotICAgICAgICAgIDw8ICJGaXh0dXJl
IFNldFVwIG1ldGhvZCBvZiBQYXJhbVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgotICAg
ICAgICAgIDw8ICJoYXMgbm90IGJlZW4gcnVuIGFzIGV4cGVjdGVkLiI7Ci0gICAgICBFWFBFQ1Rf
RVEoa0V4cGVjdGVkQ2FsbHMsIHRlYXJfZG93bl9jb3VudF8pCi0gICAgICAgICAgPDwgIkZpeHR1
cmUgVGVhckRvd24gbWV0aG9kIG9mIFBhcmFtVGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZSAi
Ci0gICAgICAgICAgPDwgImhhcyBub3QgYmVlbiBydW4gYXMgZXhwZWN0ZWQuIjsKLSAgICAgIEVY
UEVDVF9FUShrRXhwZWN0ZWRDYWxscywgdGVzdF9ib2R5X2NvdW50XykKLSAgICAgICAgICA8PCAi
VGVzdCBpbiBQYXJhbVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgotICAgICAgICAgIDw8
ICJoYXMgbm90IGJlZW4gcnVuIGFzIGV4cGVjdGVkLiI7Ci0gICAgfQotICB9Ci0gcHJpdmF0ZToK
LSAgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudCgpIDogZml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3Vu
dF8oMCksIHNldF91cF9jb3VudF8oMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlYXJfZG93bl9jb3VudF8oMCksIHRlc3RfYm9keV9jb3VudF8oMCkge30KLQotICBpbnQgZml4
dHVyZV9jb25zdHJ1Y3Rvcl9jb3VudF87Ci0gIGludCBzZXRfdXBfY291bnRfOwotICBpbnQgdGVh
cl9kb3duX2NvdW50XzsKLSAgaW50IHRlc3RfYm9keV9jb3VudF87Ci0KLSAgR1RFU1RfRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50KTsKLX07Ci0KLWNv
bnN0IGludCB0ZXN0X2dlbmVyYXRpb25fcGFyYW1zW10gPSB7MzYsIDQyLCA3Mn07Ci0KLWNsYXNz
IFRlc3RHZW5lcmF0aW9uVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4gewotIHB1Ymxp
YzoKLSAgZW51bSB7Ci0gICAgUEFSQU1FVEVSX0NPVU5UID0KLSAgICAgICAgc2l6ZW9mKHRlc3Rf
Z2VuZXJhdGlvbl9wYXJhbXMpL3NpemVvZih0ZXN0X2dlbmVyYXRpb25fcGFyYW1zWzBdKQotICB9
OwotCi0gIHR5cGVkZWYgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudDxQQVJBTUVURVJfQ09VTlQ+
IEVudmlyb25tZW50OwotCi0gIFRlc3RHZW5lcmF0aW9uVGVzdCgpIHsKLSAgICBFbnZpcm9ubWVu
dDo6SW5zdGFuY2UoKS0+Rml4dHVyZUNvbnN0cnVjdG9yRXhlY3V0ZWQoKTsKLSAgICBjdXJyZW50
X3BhcmFtZXRlcl8gPSBHZXRQYXJhbSgpOwotICB9Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsK
LSAgICBFbnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+U2V0VXBFeGVjdXRlZCgpOwotICAgIEVYUEVD
VF9FUShjdXJyZW50X3BhcmFtZXRlcl8sIEdldFBhcmFtKCkpOwotICB9Ci0gIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsKLSAgICBFbnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+VGVhckRvd25FeGVj
dXRlZCgpOwotICAgIEVYUEVDVF9FUShjdXJyZW50X3BhcmFtZXRlcl8sIEdldFBhcmFtKCkpOwot
ICB9Ci0KLSAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKLSAgICBib29sIGFsbF90ZXN0
c19pbl90ZXN0X2Nhc2Vfc2VsZWN0ZWQgPSB0cnVlOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBQQVJBTUVURVJfQ09VTlQ7ICsraSkgewotICAgICAgTWVzc2FnZSB0ZXN0X25hbWU7Ci0gICAg
ICB0ZXN0X25hbWUgPDwgIlRlc3RzRXhwYW5kZWRBbmRSdW4vIiA8PCBpOwotICAgICAgaWYgKCAh
VW5pdFRlc3RPcHRpb25zOjpGaWx0ZXJNYXRjaGVzVGVzdCgKLSAgICAgICAgICAgICAgICAiVGVz
dEV4cGFuc2lvbk1vZHVsZS9NdWx0aXBsZVRlc3RHZW5lcmF0aW9uVGVzdCIsCi0gICAgICAgICAg
ICAgICAgdGVzdF9uYW1lLkdldFN0cmluZygpKSkgewotICAgICAgICBhbGxfdGVzdHNfaW5fdGVz
dF9jYXNlX3NlbGVjdGVkID0gZmFsc2U7Ci0gICAgICB9Ci0gICAgfQotICAgIEVYUEVDVF9UUlVF
KGFsbF90ZXN0c19pbl90ZXN0X2Nhc2Vfc2VsZWN0ZWQpCi0gICAgICAgIDw8ICJXaGVuIHJ1bm5p
bmcgdGhlIFRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgYWxsIG9mIGl0cyB0ZXN0c1xuIgot
ICAgICAgICA8PCAibXVzdCBiZSBzZWxlY3RlZCBieSB0aGUgZmlsdGVyIGZsYWcgZm9yIHRoZSB0
ZXN0IGNhc2UgdG8gcGFzcy5cbiIKLSAgICAgICAgPDwgIklmIG5vdCBhbGwgb2YgdGhlbSBhcmUg
ZW5hYmxlZCwgd2UgY2FuJ3QgcmVsaWFibHkgY29uY2x1ZGVcbiIKLSAgICAgICAgPDwgInRoYXQg
dGhlIGNvcnJlY3QgbnVtYmVyIG9mIHRlc3RzIGhhdmUgYmVlbiBnZW5lcmF0ZWQuIjsKLQotICAg
IGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5jbGVhcigpOwotICB9Ci0KLSAgc3RhdGljIHZvaWQgVGVh
ckRvd25UZXN0Q2FzZSgpIHsKLSAgICB2ZWN0b3I8aW50PiBleHBlY3RlZF92YWx1ZXModGVzdF9n
ZW5lcmF0aW9uX3BhcmFtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9n
ZW5lcmF0aW9uX3BhcmFtcyArIFBBUkFNRVRFUl9DT1VOVCk7Ci0gICAgLy8gVGVzdCBleGVjdXRp
b24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQgYnkgR29vZ2xlIFRlc3QsCi0gICAgLy8gc28gdGhl
IG9yZGVyIG9mIHZhbHVlcyBpbiBjb2xsZWN0ZWRfcGFyYW1ldGVyc18gY2FuIGJlCi0gICAgLy8g
ZGlmZmVyZW50IGFuZCB3ZSBoYXZlIHRvIHNvcnQgdG8gY29tcGFyZS4KLSAgICBzb3J0KGV4cGVj
dGVkX3ZhbHVlcy5iZWdpbigpLCBleHBlY3RlZF92YWx1ZXMuZW5kKCkpOwotICAgIHNvcnQoY29s
bGVjdGVkX3BhcmFtZXRlcnNfLmJlZ2luKCksIGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5lbmQoKSk7
Ci0KLSAgICBFWFBFQ1RfVFJVRShjb2xsZWN0ZWRfcGFyYW1ldGVyc18gPT0gZXhwZWN0ZWRfdmFs
dWVzKTsKLSAgfQotIHByb3RlY3RlZDoKLSAgaW50IGN1cnJlbnRfcGFyYW1ldGVyXzsKLSAgc3Rh
dGljIHZlY3RvcjxpbnQ+IGNvbGxlY3RlZF9wYXJhbWV0ZXJzXzsKLQotIHByaXZhdGU6Ci0gIEdU
RVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdEdlbmVyYXRpb25UZXN0KTsKLX07Ci12
ZWN0b3I8aW50PiBUZXN0R2VuZXJhdGlvblRlc3Q6OmNvbGxlY3RlZF9wYXJhbWV0ZXJzXzsKLQot
VEVTVF9QKFRlc3RHZW5lcmF0aW9uVGVzdCwgVGVzdHNFeHBhbmRlZEFuZFJ1bikgewotICBFbnZp
cm9ubWVudDo6SW5zdGFuY2UoKS0+VGVzdEJvZHlFeGVjdXRlZCgpOwotICBFWFBFQ1RfRVEoY3Vy
cmVudF9wYXJhbWV0ZXJfLCBHZXRQYXJhbSgpKTsKLSAgY29sbGVjdGVkX3BhcmFtZXRlcnNfLnB1
c2hfYmFjayhHZXRQYXJhbSgpKTsKLX0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFRlc3RFeHBh
bnNpb25Nb2R1bGUsIFRlc3RHZW5lcmF0aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IFZhbHVlc0luKHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMpKTsKLQotLy8gVGhpcyB0ZXN0IHZlcmlm
aWVzIHRoYXQgdGhlIGVsZW1lbnQgc2VxdWVuY2UgKHRoaXJkIHBhcmFtZXRlciBvZgotLy8gSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1ApIGlzIGV2YWx1YXRlZCBpbiBJbml0R29vZ2xlVGVzdCgpIGFu
ZCBuZWl0aGVyIGF0Ci0vLyB0aGUgY2FsbCBzaXRlIG9mIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
IG5vciBpbiBSVU5fQUxMX1RFU1RTKCkuICBGb3IKLS8vIHRoYXQsIHdlIGRlY2xhcmUgcGFyYW1f
dmFsdWVfIHRvIGJlIGEgc3RhdGljIG1lbWJlciBvZgotLy8gR2VuZXJhdG9yRXZhbHVhdGlvblRl
c3QgYW5kIGluaXRpYWxpemUgaXQgdG8gMC4gIFdlIHNldCBpdCB0byAxIGluCi0vLyBtYWluKCks
IGp1c3QgYmVmb3JlIGludm9jYXRpb24gb2YgSW5pdEdvb2dsZVRlc3QoKS4gIEFmdGVyIGNhbGxp
bmcKLS8vIEluaXRHb29nbGVUZXN0KCksIHdlIHNldCB0aGUgdmFsdWUgdG8gMi4gIElmIHRoZSBz
ZXF1ZW5jZSBpcyBldmFsdWF0ZWQKLS8vIGJlZm9yZSBvciBhZnRlciBJbml0R29vZ2xlVGVzdCwg
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1Agd2lsbCBjcmVhdGUgYQotLy8gdGVzdCB3aXRoIHBhcmFt
ZXRlciBvdGhlciB0aGFuIDEsIGFuZCB0aGUgdGVzdCBib2R5IHdpbGwgZmFpbCB0aGUKLS8vIGFz
c2VydGlvbi4KLWNsYXNzIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0IDogcHVibGljIFRlc3RXaXRo
UGFyYW08aW50PiB7Ci0gcHVibGljOgotICBzdGF0aWMgaW50IHBhcmFtX3ZhbHVlKCkgeyByZXR1
cm4gcGFyYW1fdmFsdWVfOyB9Ci0gIHN0YXRpYyB2b2lkIHNldF9wYXJhbV92YWx1ZShpbnQgcGFy
YW1fdmFsdWUpIHsgcGFyYW1fdmFsdWVfID0gcGFyYW1fdmFsdWU7IH0KLQotIHByaXZhdGU6Ci0g
IHN0YXRpYyBpbnQgcGFyYW1fdmFsdWVfOwotfTsKLWludCBHZW5lcmF0b3JFdmFsdWF0aW9uVGVz
dDo6cGFyYW1fdmFsdWVfID0gMDsKLQotVEVTVF9QKEdlbmVyYXRvckV2YWx1YXRpb25UZXN0LCBH
ZW5lcmF0b3JzRXZhbHVhdGVkSW5NYWluKSB7Ci0gIEVYUEVDVF9FUSgxLCBHZXRQYXJhbSgpKTsK
LX0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEdlbkV2YWxNb2R1bGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcyhHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6cGFyYW1fdmFsdWUoKSkpOwotCi0v
LyBUZXN0cyB0aGF0IGdlbmVyYXRvcnMgZGVmaW5lZCBpbiBhIGRpZmZlcmVudCB0cmFuc2xhdGlv
biB1bml0IGFyZQotLy8gZnVuY3Rpb25hbC4gR2VuZXJhdG9yIGV4dGVybl9nZW4gaXMgZGVmaW5l
ZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QyLmNjLgotZXh0ZXJuIFBhcmFtR2VuZXJhdG9yPGlu
dD4gZXh0ZXJuX2dlbjsKLWNsYXNzIEV4dGVybmFsR2VuZXJhdG9yVGVzdCA6IHB1YmxpYyBUZXN0
V2l0aFBhcmFtPGludD4ge307Ci1URVNUX1AoRXh0ZXJuYWxHZW5lcmF0b3JUZXN0LCBFeHRlcm5h
bEdlbmVyYXRvcikgewotICAvLyBTZXF1ZW5jZSBwcm9kdWNlZCBieSBleHRlcm5fZ2VuIGNvbnRh
aW5zIG9ubHkgYSBzaW5nbGUgdmFsdWUKLSAgLy8gd2hpY2ggd2UgdmVyaWZ5IGhlcmUuCi0gIEVY
UEVDVF9FUShHZXRQYXJhbSgpLCAzMyk7Ci19Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUChFeHRl
cm5hbEdlbmVyYXRvck1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVybmFsR2Vu
ZXJhdG9yVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybl9nZW4pOwotCi0vLyBU
ZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGRlZmluZWQgaW4gb25l
IHRyYW5zbGF0aW9uCi0vLyB1bml0IGFuZCBpbnN0YW50aWF0ZWQgaW4gYW5vdGhlci4gVGhpcyB0
ZXN0IHdpbGwgYmUgaW5zdGFudGlhdGVkIGluCi0vLyBndGVzdC1wYXJhbS10ZXN0X3Rlc3QyLmNj
LiBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0IGZpeHR1cmUgY2xhc3MgaXMKLS8vIGRlZmluZWQg
aW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmguCi1URVNUX1AoRXh0ZXJuYWxJbnN0YW50aWF0aW9u
VGVzdCwgSXNNdWx0aXBsZU9mMzMpIHsKLSAgRVhQRUNUX0VRKDAsIEdldFBhcmFtKCkgJSAzMyk7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgaW5z
dGFudGlhdGVkIHdpdGggbXVsdGlwbGUKLS8vIGdlbmVyYXRvcnMuCi1jbGFzcyBNdWx0aXBsZUlu
c3RhbnRpYXRpb25UZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7fTsKLVRFU1RfUChN
dWx0aXBsZUluc3RhbnRpYXRpb25UZXN0LCBBbGxvd3NNdWx0aXBsZUluc3RhbmNlcykgewotfQot
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2UxLCBNdWx0aXBsZUluc3RhbnRpYXRpb25U
ZXN0LCBWYWx1ZXMoMSwgMikpOwotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2UyLCBN
dWx0aXBsZUluc3RhbnRpYXRpb25UZXN0LCBSYW5nZSgzLCA1KSk7Ci0KLS8vIFRlc3RzIHRoYXQg
YSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgaW5zdGFudGlhdGVkCi0vLyBpbiBtdWx0
aXBsZSB0cmFuc2xhdGlvbiB1bml0cy4gVGhpcyB0ZXN0IHdpbGwgYmUgaW5zdGFudGlhdGVkCi0v
LyBoZXJlIGFuZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QyLmNjLgotLy8gSW5zdGFudGlhdGlv
bkluTXVsdGlwbGVUcmFuc2xhdGlvblVuaXRzVGVzdCBmaXh0dXJlIGNsYXNzCi0vLyBpcyBkZWZp
bmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oLgotVEVTVF9QKEluc3RhbnRpYXRpb25Jbk11
bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCwgSXNNdWx0aXBsZU9mNDIpIHsKLSAgRVhQRUNUX0VR
KDAsIEdldFBhcmFtKCkgJSA0Mik7Ci19Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5j
ZTEsCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5z
bGFpb25Vbml0c1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNDIsIDQyKjIp
KTsKLQotLy8gVGVzdHMgdGhhdCBlYWNoIGl0ZXJhdGlvbiBvZiBwYXJhbWV0ZXJpemVkIHRlc3Qg
cnVucyBpbiBhIHNlcGFyYXRlIHRlc3QKLS8vIG9iamVjdC4KLWNsYXNzIFNlcGFyYXRlSW5zdGFu
Y2VUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7Ci0gcHVibGljOgotICBTZXBhcmF0
ZUluc3RhbmNlVGVzdCgpIDogY291bnRfKDApIHt9Ci0KLSAgc3RhdGljIHZvaWQgVGVhckRvd25U
ZXN0Q2FzZSgpIHsKLSAgICBFWFBFQ1RfR0UoZ2xvYmFsX2NvdW50XywgMikKLSAgICAgICAgPDwg
IklmIHNvbWUgKGJ1dCBub3QgYWxsKSBTZXBhcmF0ZUluc3RhbmNlVGVzdCB0ZXN0cyBoYXZlIGJl
ZW4gIgotICAgICAgICA8PCAiZmlsdGVyZWQgb3V0IHRoaXMgdGVzdCB3aWxsIGZhaWwuIE1ha2Ug
c3VyZSB0aGF0IGFsbCAiCi0gICAgICAgIDw8ICJHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCBhcmUg
c2VsZWN0ZWQgb3IgZGUtc2VsZWN0ZWQgdG9nZXRoZXIgIgotICAgICAgICA8PCAiYnkgdGhlIHRl
c3QgZmlsdGVyLiI7Ci0gIH0KLQotIHByb3RlY3RlZDoKLSAgaW50IGNvdW50XzsKLSAgc3RhdGlj
IGludCBnbG9iYWxfY291bnRfOwotfTsKLWludCBTZXBhcmF0ZUluc3RhbmNlVGVzdDo6Z2xvYmFs
X2NvdW50XyA9IDA7Ci0KLVRFU1RfUChTZXBhcmF0ZUluc3RhbmNlVGVzdCwgVGVzdHNSdW5JblNl
cGFyYXRlSW5zdGFuY2VzKSB7Ci0gIEVYUEVDVF9FUSgwLCBjb3VudF8rKyk7Ci0gIGdsb2JhbF9j
b3VudF8rKzsKLX0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEZvdXJFbGVtU2VxdWVuY2UsIFNl
cGFyYXRlSW5zdGFuY2VUZXN0LCBSYW5nZSgxLCA0KSk7Ci0KLS8vIFRlc3RzIHRoYXQgYWxsIGlu
c3RhbnRpYXRpb25zIG9mIGEgdGVzdCBoYXZlIG5hbWVkIGFwcHJvcHJpYXRlbHkuIFRlc3QKLS8v
IGRlZmluZWQgd2l0aCBURVNUX1AoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSkgYW5kIGluc3RhbnRp
YXRlZCB3aXRoCi0vLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5jZU5hbWUsIFRlc3RD
YXNlTmFtZSwgZ2VuZXJhdG9yKSBtdXN0IGJlIG5hbWVkCi0vLyBTZXF1ZW5jZU5hbWUvVGVzdENh
c2VOYW1lLlRlc3ROYW1lL2ksIHdoZXJlIGkgaXMgdGhlIDAtYmFzZWQgaW5kZXggb2YgdGhlCi0v
LyBzZXF1ZW5jZSBlbGVtZW50IHVzZWQgdG8gaW5zdGFudGlhdGUgdGhlIHRlc3QuCi1jbGFzcyBO
YW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7fTsKLQotVEVTVF9QKE5hbWlu
Z1Rlc3QsIFRlc3RzQXJlTmFtZWRBcHByb3ByaWF0ZWx5KSB7Ci0gIGNvbnN0IDo6dGVzdGluZzo6
VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9Ci0gICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6Okdl
dEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7Ci0KLSAgRVhQRUNUX1NUUkVRKCJaZXJv
VG9GaXZlU2VxdWVuY2UvTmFtaW5nVGVzdCIsIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7
Ci0KLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCAiVGVzdHNBcmVOYW1lZEFwcHJvcHJpYXRlbHkv
IiA8PCBHZXRQYXJhbSgpOwotICBFWFBFQ1RfU1RSRVEobXNnLkdldFN0cmluZygpLmNfc3RyKCks
IHRlc3RfaW5mby0+bmFtZSgpKTsKLX0KLQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoWmVyb1Rv
Rml2ZVNlcXVlbmNlLCBOYW1pbmdUZXN0LCBSYW5nZSgwLCA1KSk7Ci0KLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX1BBUkFNX1RFU1QKLQotVEVTVChDb21waWxlVGVzdCwgQ29tYmluZUlzRGVmaW5lZE9u
bHlXaGVuR3Rlc3RIYXNQYXJhbVRlc3RJc0RlZmluZWQpIHsKLSNpZiBHVEVTVF9IQVNfQ09NQklO
RSAmJiAhR1RFU1RfSEFTX1BBUkFNX1RFU1QKLSAgRkFJTCgpIDw8ICJHVEVTVF9IQVNfQ09NQklO
RSBpcyBkZWZpbmVkIHdoaWxlIEdURVNUX0hBU19QQVJBTV9URVNUIGlzIG5vdFxuIgotI2VuZGlm
Ci19Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotI2lmIEdURVNUX0hBU19Q
QVJBTV9URVNUCi0gIC8vIFVzZWQgaW4gVGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZS4KLSAg
QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KFRlc3RHZW5lcmF0aW9uVGVzdDo6RW52aXJvbm1lbnQ6
Okluc3RhbmNlKCkpOwotICAvLyBVc2VkIGluIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0IHRlc3Qg
Y2FzZS4gVGVzdHMgdGhhdCB0aGUgdXBkYXRlZCB2YWx1ZQotICAvLyB3aWxsIGJlIHBpY2tlZCB1
cCBmb3IgaW5zdGFudGlhdGluZyB0ZXN0cyBpbiBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdC4KLSAg
R2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnNldF9wYXJhbV92YWx1ZSgxKTsKLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdj
LCBhcmd2KTsKLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0gIC8vIFVzZWQgaW4gR2VuZXJh
dG9yRXZhbHVhdGlvblRlc3QgdGVzdCBjYXNlLiBUZXN0cyB0aGF0IHZhbHVlIHVwZGF0ZWQKLSAg
Ly8gaGVyZSB3aWxsIE5PVCBiZSB1c2VkIGZvciBpbnN0YW50aWF0aW5nIHRlc3RzIGluCi0gIC8v
IEdlbmVyYXRvckV2YWx1YXRpb25UZXN0LgotICBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6c2V0
X3BhcmFtX3ZhbHVlKDIpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi0gIHJl
dHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYjdmOTQ5MzYxMzdkZmM1ZjNmMmQ1N2ZhNDBkY2FmN2ExNWNiNmI1ZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTUg
KzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
Ly8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8K
LS8vIEF1dGhvcnM6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0vLwotLy8gVGhlIEdv
b2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQotLy8KLS8vIFRoaXMgaGVh
ZGVyIGZpbGUgcHJvdmlkZXMgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIHVzZWQgaW50ZXJuYWxseQot
Ly8gZm9yIHRlc3RpbmcgR29vZ2xlIFRlc3QgaXRzZWxmLgotCi0jaWZuZGVmIEdURVNUX1RFU1Rf
R1RFU1RfUEFSQU1fVEVTVF9URVNUX0hfCi0jZGVmaW5lIEdURVNUX1RFU1RfR1RFU1RfUEFSQU1f
VEVTVF9URVNUX0hfCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0jaWYgR1RFU1RfSEFT
X1BBUkFNX1RFU1QKLQotLy8gVGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIGRlZmluaXRpb24gYW5k
IGluc3RhbnRpYXRpb24gb2YgYSB0ZXN0Ci0vLyBpbiBzZXBhcmF0ZSB0cmFuc2xhdGlvbiB1bml0
cy4KLWNsYXNzIEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0V2l0aFBhcmFtPGludD4ge307Ci0KLS8vIFRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyBpbnN0
YW50aWF0aW9uIG9mIGEgdGVzdCBpbiBtdWx0aXBsZQotLy8gdHJhbnNsYXRpb24gdW5pdHMuCi1j
bGFzcyBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QKLSAgICA6IHB1
YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7fTsKLQotI2VuZGlmICAvLyBHVEVT
VF9IQVNfUEFSQU1fVEVTVAotCi0jZW5kaWYgIC8vIEdURVNUX1RFU1RfR1RFU1RfUEFSQU1fVEVT
VF9URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
LXBvcnRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcG9ydF90
ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzI1ODYwMmZhNWNmNWE3Nzk5
NDdjZDQyN2UyMGU5MDlmYzkyNThkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcG9ydF90ZXN0
LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTAxOCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwg
R29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0v
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczogdmxhZGxAZ29vZ2xlLmNv
bSAoVmxhZCBMb3NldiksIHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGhp
cyBmaWxlIHRlc3RzIHRoZSBpbnRlcm5hbCBjcm9zcy1wbGF0Zm9ybSBzdXBwb3J0IHV0aWxpdGll
cy4KLQotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLQotI2luY2x1ZGUg
PHN0ZGlvLmg+Ci0KLSNpZiBHVEVTVF9PU19NQUMKLSNpbmNsdWRlIDx0aW1lLmg+Ci0jZW5kaWYg
IC8vIEdURVNUX09TX01BQwotCi0jaW5jbHVkZSA8dXRpbGl0eT4gIC8vIEZvciBzdGQ6OnBhaXIg
YW5kIHN0ZDo6bWFrZV9wYWlyLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC1zcGkuaD4KLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlv
biB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBt
dXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3Ig
dGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJl
dmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlu
bC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNp
bmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5U
QVRJT05fCi0KLXVzaW5nIHN0ZDo6bWFrZV9wYWlyOwotdXNpbmcgc3RkOjpwYWlyOwotCi1uYW1l
c3BhY2UgdGVzdGluZyB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBUZXN0cyB0aGF0IHRo
ZSBlbGVtZW50X3R5cGUgdHlwZWRlZiBpcyBhdmFpbGFibGUgaW4gc2NvcGVkX3B0ciBhbmQgcmVm
ZXJzCi0vLyB0byB0aGUgcGFyYW1ldGVyIHR5cGUuCi1URVNUKFNjb3BlZFB0clRlc3QsIERlZmlu
ZXNFbGVtZW50VHlwZSkgewotICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50LCA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpzY29wZWRfcHRyPGludD46OmVsZW1lbnRfdHlwZT4oKTsKLX0KLQotLy8gVE9ETyh2
bGFkbEBnb29nbGUuY29tKTogSW1wbGVtZW50IFRIRSBSRVNUIG9mIHNjb3BlZF9wdHIgdGVzdHMu
Ci0KLVRFU1QoR3Rlc3RDaGVja1N5bnRheFRlc3QsIEJlaGF2ZXNMaWtlQVNpbmdsZVN0YXRlbWVu
dCkgewotICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAgICBHVEVTVF9DSEVDS18oZmFsc2UpIDw8ICJU
aGlzIHNob3VsZCBuZXZlciBiZSBleGVjdXRlZDsgIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkl0J3MgYSBjb21waWxhdGlvbiB0ZXN0IG9ubHkuIjsKLQotICBpZiAoQWx3YXlzVHJ1ZSgp
KQotICAgIEdURVNUX0NIRUNLXyh0cnVlKTsKLSAgZWxzZQotICAgIDsgIC8vIE5PTElOVAotCi0g
IGlmIChBbHdheXNGYWxzZSgpKQotICAgIDsgIC8vIE5PTElOVAotICBlbHNlCi0gICAgR1RFU1Rf
Q0hFQ0tfKHRydWUpIDw8ICIiOwotfQotCi1URVNUKEd0ZXN0Q2hlY2tTeW50YXhUZXN0LCBXb3Jr
c1dpdGhTd2l0Y2gpIHsKLSAgc3dpdGNoICgwKSB7Ci0gICAgY2FzZSAxOgotICAgICAgYnJlYWs7
Ci0gICAgZGVmYXVsdDoKLSAgICAgIEdURVNUX0NIRUNLXyh0cnVlKTsKLSAgfQotCi0gIHN3aXRj
aCgwKQotICAgIGNhc2UgMDoKLSAgICAgIEdURVNUX0NIRUNLXyh0cnVlKSA8PCAiQ2hlY2sgZmFp
bGVkIGluIHN3aXRjaCBjYXNlIjsKLX0KLQotI2lmIEdURVNUX09TX01BQwotdm9pZCogVGhyZWFk
RnVuYyh2b2lkKiBkYXRhKSB7Ci0gIHB0aHJlYWRfbXV0ZXhfdCogbXV0ZXggPSBzdGF0aWNfY2Fz
dDxwdGhyZWFkX211dGV4X3QqPihkYXRhKTsKLSAgcHRocmVhZF9tdXRleF9sb2NrKG11dGV4KTsK
LSAgcHRocmVhZF9tdXRleF91bmxvY2sobXV0ZXgpOwotICByZXR1cm4gTlVMTDsKLX0KLQotVEVT
VChHZXRUaHJlYWRDb3VudFRlc3QsIFJldHVybnNDb3JyZWN0VmFsdWUpIHsKLSAgRVhQRUNUX0VR
KDFVLCBHZXRUaHJlYWRDb3VudCgpKTsKLSAgcHRocmVhZF9tdXRleF90IG11dGV4OwotICBwdGhy
ZWFkX2F0dHJfdCAgYXR0cjsKLSAgcHRocmVhZF90ICAgICAgIHRocmVhZF9pZDsKLQotICAvLyBU
T0RPKHZsYWRsQGdvb2dsZS5jb20pOiB0dXJuIG11dGV4IGludG8gaW50ZXJuYWw6Ok11dGV4IGZv
ciBhdXRvbWF0aWMKLSAgLy8gZGVzdHJ1Y3Rpb24uCi0gIHB0aHJlYWRfbXV0ZXhfaW5pdCgmbXV0
ZXgsIE5VTEwpOwotICBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4KTsKLSAgQVNTRVJUX0VRKDAs
IHB0aHJlYWRfYXR0cl9pbml0KCZhdHRyKSk7Ci0gIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0dHJf
c2V0ZGV0YWNoc3RhdGUoJmF0dHIsIFBUSFJFQURfQ1JFQVRFX0pPSU5BQkxFKSk7Ci0KLSAgY29u
c3QgaW50IHN0YXR1cyA9IHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRfaWQsICZhdHRyLCAmVGhyZWFk
RnVuYywgJm11dGV4KTsKLSAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXR0cl9kZXN0cm95KCZhdHRy
KSk7Ci0gIEFTU0VSVF9FUSgwLCBzdGF0dXMpOwotICBFWFBFQ1RfRVEoMlUsIEdldFRocmVhZENv
dW50KCkpOwotICBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXgpOwotCi0gIHZvaWQqIGR1bW15
OwotICBBU1NFUlRfRVEoMCwgcHRocmVhZF9qb2luKHRocmVhZF9pZCwgJmR1bW15KSk7Ci0KLSAg
Ly8gTWFjT1MgWCBtYXkgbm90IGltbWVkaWF0ZWx5IHJlcG9ydCB0aGUgdXBkYXRlZCB0aHJlYWQg
Y291bnQgYWZ0ZXIKLSAgLy8gam9pbmluZyBhIHRocmVhZCwgY2F1c2luZyBmbGFraW5lc3MgaW4g
dGhpcyB0ZXN0LiBUbyBjb3VudGVyIHRoYXQsIHdlCi0gIC8vIHdhaXQgZm9yIHVwIHRvIC41IHNl
Y29uZHMgZm9yIHRoZSBPUyB0byByZXBvcnQgdGhlIGNvcnJlY3QgdmFsdWUuCi0gIGZvciAoaW50
IGkgPSAwOyBpIDwgNTsgKytpKSB7Ci0gICAgaWYgKEdldFRocmVhZENvdW50KCkgPT0gMSkKLSAg
ICAgIGJyZWFrOwotCi0gICAgU2xlZXBNaWxsaXNlY29uZHMoMTAwKTsKLSAgfQotICBFWFBFQ1Rf
RVEoMVUsIEdldFRocmVhZENvdW50KCkpOwotICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm11dGV4
KTsKLX0KLSNlbHNlCi1URVNUKEdldFRocmVhZENvdW50VGVzdCwgUmV0dXJuc1plcm9XaGVuVW5h
YmxlVG9Db3VudFRocmVhZHMpIHsKLSAgRVhQRUNUX0VRKDBVLCBHZXRUaHJlYWRDb3VudCgpKTsK
LX0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfTUFDCi0KLVRFU1QoR3Rlc3RDaGVja0RlYXRoVGVzdCwg
RGllc1dpdGhDb3JyZWN0T3V0cHV0T25GYWlsdXJlKSB7Ci0gIGNvbnN0IGJvb2wgYV9mYWxzZV9j
b25kaXRpb24gPSBmYWxzZTsKLSAgY29uc3QgY2hhciByZWdleFtdID0KLSNpZmRlZiBfTVNDX1ZF
UgotICAgICAiZ3Rlc3QtcG9ydF90ZXN0XFwuY2NcXChcXGQrXFwpOiIKLSNlbHNlCi0gICAgICJn
dGVzdC1wb3J0X3Rlc3RcXC5jYzpbMC05XSsiCi0jZW5kaWYgIC8vIF9NU0NfVkVSCi0gICAgICIu
KmFfZmFsc2VfY29uZGl0aW9uLipFeHRyYSBpbmZvLioiOwotCi0gIEVYUEVDVF9ERUFUSF9JRl9T
VVBQT1JURUQoR1RFU1RfQ0hFQ0tfKGFfZmFsc2VfY29uZGl0aW9uKSA8PCAiRXh0cmEgaW5mbyIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXgpOwotfQotCi0jaWYgR1RFU1RfSEFT
X0RFQVRIX1RFU1QKLQotVEVTVChHdGVzdENoZWNrRGVhdGhUZXN0LCBMaXZlc1NpbGVudGx5T25T
dWNjZXNzKSB7Ci0gIEVYUEVDVF9FWElUKHsKLSAgICAgIEdURVNUX0NIRUNLXyh0cnVlKSA8PCAi
RXh0cmEgaW5mbyI7Ci0gICAgICA6OnN0ZDo6Y2VyciA8PCAiU3VjY2Vzc1xuIjsKLSAgICAgIGV4
aXQoMCk7IH0sCi0gICAgICA6OnRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApLCAiU3VjY2VzcyIp
OwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLSNpZiBHVEVTVF9VU0VT
X1BPU0lYX1JFCi0KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgU3RyPgotY2xhc3MgUkVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKLQotLy8g
RGVmaW5lcyBTdHJpbmdUeXBlcyBhcyB0aGUgbGlzdCBvZiBhbGwgc3RyaW5nIHR5cGVzIHRoYXQg
Y2xhc3MgUkUKLS8vIHN1cHBvcnRzLgotdHlwZWRlZiB0ZXN0aW5nOjpUeXBlczwKLSAgICA6OnN0
ZDo6c3RyaW5nLAotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0gICAgOjpzdHJpbmcsCi0j
ZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0gICAgY29uc3QgY2hhcio+IFN0cmlu
Z1R5cGVzOwotCi1UWVBFRF9URVNUX0NBU0UoUkVUZXN0LCBTdHJpbmdUeXBlcyk7Ci0KLS8vIFRl
c3RzIFJFJ3MgaW1wbGljaXQgY29uc3RydWN0b3JzLgotVFlQRURfVEVTVChSRVRlc3QsIEltcGxp
Y2l0Q29uc3RydWN0b3JXb3JrcykgewotICBjb25zdCBSRSBlbXB0eShUeXBlUGFyYW0oIiIpKTsK
LSAgRVhQRUNUX1NUUkVRKCIiLCBlbXB0eS5wYXR0ZXJuKCkpOwotCi0gIGNvbnN0IFJFIHNpbXBs
ZShUeXBlUGFyYW0oImhlbGxvIikpOwotICBFWFBFQ1RfU1RSRVEoImhlbGxvIiwgc2ltcGxlLnBh
dHRlcm4oKSk7Ci0KLSAgY29uc3QgUkUgbm9ybWFsKFR5cGVQYXJhbSgiLiooXFx3KykiKSk7Ci0g
IEVYUEVDVF9TVFJFUSgiLiooXFx3KykiLCBub3JtYWwucGF0dGVybigpKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBSRSdzIGNvbnN0cnVjdG9ycyByZWplY3QgaW52YWxpZCByZWd1bGFyIGV4cHJlc3Np
b25zLgotVFlQRURfVEVTVChSRVRlc3QsIFJlamVjdHNJbnZhbGlkUmVnZXgpIHsKLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoewotICAgIGNvbnN0IFJFIGludmFsaWQoVHlwZVBhcmFtKCI/Iikp
OwotICB9LCAiXCI/XCIgaXMgbm90IGEgdmFsaWQgUE9TSVggRXh0ZW5kZWQgcmVndWxhciBleHBy
ZXNzaW9uLiIpOwotfQotCi0vLyBUZXN0cyBSRTo6RnVsbE1hdGNoKCkuCi1UWVBFRF9URVNUKFJF
VGVzdCwgRnVsbE1hdGNoV29ya3MpIHsKLSAgY29uc3QgUkUgZW1wdHkoVHlwZVBhcmFtKCIiKSk7
Ci0gIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCIiKSwgZW1wdHkpKTsKLSAg
RVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJhIiksIGVtcHR5KSk7Ci0KLSAg
Y29uc3QgUkUgcmUoVHlwZVBhcmFtKCJhLip6IikpOwotICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1h
dGNoKFR5cGVQYXJhbSgiYXoiKSwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaChU
eXBlUGFyYW0oImF4eXoiKSwgcmUpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goVHlw
ZVBhcmFtKCJiYXoiKSwgcmUpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goVHlwZVBh
cmFtKCJhenkiKSwgcmUpKTsKLX0KLQotLy8gVGVzdHMgUkU6OlBhcnRpYWxNYXRjaCgpLgotVFlQ
RURfVEVTVChSRVRlc3QsIFBhcnRpYWxNYXRjaFdvcmtzKSB7Ci0gIGNvbnN0IFJFIGVtcHR5KFR5
cGVQYXJhbSgiIikpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgi
IiksIGVtcHR5KSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCJh
IiksIGVtcHR5KSk7Ci0KLSAgY29uc3QgUkUgcmUoVHlwZVBhcmFtKCJhLip6IikpOwotICBFWFBF
Q1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiYXoiKSwgcmUpKTsKLSAgRVhQRUNU
X1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oImF4eXoiKSwgcmUpKTsKLSAgRVhQRUNU
X1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oImJheiIpLCByZSkpOwotICBFWFBFQ1Rf
VFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiYXp5IiksIHJlKSk7Ci0gIEVYUEVDVF9G
QUxTRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgienphIiksIHJlKSk7Ci19Ci0KLSNlbmRp
ZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QKLQotI2VsaWYgR1RFU1RfVVNFU19TSU1QTEVfUkUK
LQotVEVTVChJc0luU2V0VGVzdCwgTnVsQ2hhcklzTm90SW5BbnlTZXQpIHsKLSAgRVhQRUNUX0ZB
TFNFKElzSW5TZXQoJ1wwJywgIiIpKTsKLSAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ1wwJywgIlww
IikpOwotICBFWFBFQ1RfRkFMU0UoSXNJblNldCgnXDAnLCAiYSIpKTsKLX0KLQotVEVTVChJc0lu
U2V0VGVzdCwgV29ya3NGb3JOb25OdWxDaGFycykgewotICBFWFBFQ1RfRkFMU0UoSXNJblNldCgn
YScsICJBYiIpKTsKLSAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ2MnLCAiIikpOwotCi0gIEVYUEVD
VF9UUlVFKElzSW5TZXQoJ2InLCAiYmNkIikpOwotICBFWFBFQ1RfVFJVRShJc0luU2V0KCdiJywg
ImFiIikpOwotfQotCi1URVNUKElzRGlnaXRUZXN0LCBJc0ZhbHNlRm9yTm9uRGlnaXQpIHsKLSAg
RVhQRUNUX0ZBTFNFKElzRGlnaXQoJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNEaWdpdCgnICcp
KTsKLSAgRVhQRUNUX0ZBTFNFKElzRGlnaXQoJysnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0RpZ2l0
KCctJykpOwotICBFWFBFQ1RfRkFMU0UoSXNEaWdpdCgnLicpKTsKLSAgRVhQRUNUX0ZBTFNFKElz
RGlnaXQoJ2EnKSk7Ci19Ci0KLVRFU1QoSXNEaWdpdFRlc3QsIElzVHJ1ZUZvckRpZ2l0KSB7Ci0g
IEVYUEVDVF9UUlVFKElzRGlnaXQoJzAnKSk7Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQoJzEnKSk7
Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQoJzUnKSk7Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQoJzkn
KSk7Ci19Ci0KLVRFU1QoSXNQdW5jdFRlc3QsIElzRmFsc2VGb3JOb25QdW5jdCkgewotICBFWFBF
Q1RfRkFMU0UoSXNQdW5jdCgnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1B1bmN0KCcgJykpOwot
ICBFWFBFQ1RfRkFMU0UoSXNQdW5jdCgnXG4nKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1B1bmN0KCdh
JykpOwotICBFWFBFQ1RfRkFMU0UoSXNQdW5jdCgnMCcpKTsKLX0KLQotVEVTVChJc1B1bmN0VGVz
dCwgSXNUcnVlRm9yUHVuY3QpIHsKLSAgZm9yIChjb25zdCBjaGFyKiBwID0gIl4tIVwiIyQlJico
KSorLC4vOjs8PT4/QFtcXF1fYHt8fX4iOyAqcDsgcCsrKSB7Ci0gICAgRVhQRUNUX1BSRUQxKElz
UHVuY3QsICpwKTsKLSAgfQotfQotCi1URVNUKElzUmVwZWF0VGVzdCwgSXNGYWxzZUZvck5vblJl
cGVhdENoYXIpIHsKLSAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCdcMCcpKTsKLSAgRVhQRUNUX0ZB
TFNFKElzUmVwZWF0KCcgJykpOwotICBFWFBFQ1RfRkFMU0UoSXNSZXBlYXQoJ2EnKSk7Ci0gIEVY
UEVDVF9GQUxTRShJc1JlcGVhdCgnMScpKTsKLSAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCctJykp
OwotfQotCi1URVNUKElzUmVwZWF0VGVzdCwgSXNUcnVlRm9yUmVwZWF0Q2hhcikgewotICBFWFBF
Q1RfVFJVRShJc1JlcGVhdCgnPycpKTsKLSAgRVhQRUNUX1RSVUUoSXNSZXBlYXQoJyonKSk7Ci0g
IEVYUEVDVF9UUlVFKElzUmVwZWF0KCcrJykpOwotfQotCi1URVNUKElzV2hpdGVTcGFjZVRlc3Qs
IElzRmFsc2VGb3JOb25XaGl0ZVNwYWNlKSB7Ci0gIEVYUEVDVF9GQUxTRShJc1doaXRlU3BhY2Uo
J1wwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNXaGl0ZVNwYWNlKCdhJykpOwotICBFWFBFQ1RfRkFM
U0UoSXNXaGl0ZVNwYWNlKCcxJykpOwotICBFWFBFQ1RfRkFMU0UoSXNXaGl0ZVNwYWNlKCcrJykp
OwotICBFWFBFQ1RfRkFMU0UoSXNXaGl0ZVNwYWNlKCdfJykpOwotfQotCi1URVNUKElzV2hpdGVT
cGFjZVRlc3QsIElzVHJ1ZUZvcldoaXRlU3BhY2UpIHsKLSAgRVhQRUNUX1RSVUUoSXNXaGl0ZVNw
YWNlKCcgJykpOwotICBFWFBFQ1RfVFJVRShJc1doaXRlU3BhY2UoJ1xuJykpOwotICBFWFBFQ1Rf
VFJVRShJc1doaXRlU3BhY2UoJ1xyJykpOwotICBFWFBFQ1RfVFJVRShJc1doaXRlU3BhY2UoJ1x0
JykpOwotICBFWFBFQ1RfVFJVRShJc1doaXRlU3BhY2UoJ1x2JykpOwotICBFWFBFQ1RfVFJVRShJ
c1doaXRlU3BhY2UoJ1xmJykpOwotfQotCi1URVNUKElzV29yZENoYXJUZXN0LCBJc0ZhbHNlRm9y
Tm9uV29yZENoYXIpIHsKLSAgRVhQRUNUX0ZBTFNFKElzV29yZENoYXIoJ1wwJykpOwotICBFWFBF
Q1RfRkFMU0UoSXNXb3JkQ2hhcignKycpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV29yZENoYXIoJy4n
KSk7Ci0gIEVYUEVDVF9GQUxTRShJc1dvcmRDaGFyKCcgJykpOwotICBFWFBFQ1RfRkFMU0UoSXNX
b3JkQ2hhcignXG4nKSk7Ci19Ci0KLVRFU1QoSXNXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvckxldHRl
cikgewotICBFWFBFQ1RfVFJVRShJc1dvcmRDaGFyKCdhJykpOwotICBFWFBFQ1RfVFJVRShJc1dv
cmRDaGFyKCdiJykpOwotICBFWFBFQ1RfVFJVRShJc1dvcmRDaGFyKCdBJykpOwotICBFWFBFQ1Rf
VFJVRShJc1dvcmRDaGFyKCdaJykpOwotfQotCi1URVNUKElzV29yZENoYXJUZXN0LCBJc1RydWVG
b3JEaWdpdCkgewotICBFWFBFQ1RfVFJVRShJc1dvcmRDaGFyKCcwJykpOwotICBFWFBFQ1RfVFJV
RShJc1dvcmRDaGFyKCcxJykpOwotICBFWFBFQ1RfVFJVRShJc1dvcmRDaGFyKCc3JykpOwotICBF
WFBFQ1RfVFJVRShJc1dvcmRDaGFyKCc5JykpOwotfQotCi1URVNUKElzV29yZENoYXJUZXN0LCBJ
c1RydWVGb3JVbmRlcnNjb3JlKSB7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJ18nKSk7Ci19
Ci0KLVRFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzRmFsc2VGb3JOb25QcmludGFibGUpIHsKLSAg
RVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNWYWxp
ZEVzY2FwZSgnXDAwNycpKTsKLX0KLQotVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZv
ckRpZ2l0KSB7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCcwJykpOwotICBFWFBFQ1Rf
RkFMU0UoSXNWYWxpZEVzY2FwZSgnOScpKTsKLX0KLQotVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwg
SXNGYWxzZUZvcldoaXRlU3BhY2UpIHsKLSAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJyAn
KSk7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdcbicpKTsKLX0KLQotVEVTVChJc1Zh
bGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZvclNvbWVMZXR0ZXIpIHsKLSAgRVhQRUNUX0ZBTFNFKElz
VmFsaWRFc2NhcGUoJ2EnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdaJykpOwot
fQotCi1URVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc1RydWVGb3JQdW5jdCkgewotICBFWFBFQ1Rf
VFJVRShJc1ZhbGlkRXNjYXBlKCcuJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCct
JykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdeJykpOwotICBFWFBFQ1RfVFJVRShJ
c1ZhbGlkRXNjYXBlKCckJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCcoJykpOwot
ICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCddJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlk
RXNjYXBlKCd7JykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCd8JykpOwotfQotCi1U
RVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc1RydWVGb3JTb21lTGV0dGVyKSB7Ci0gIEVYUEVDVF9U
UlVFKElzVmFsaWRFc2NhcGUoJ2QnKSk7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ0Qn
KSk7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ3MnKSk7Ci0gIEVYUEVDVF9UUlVFKElz
VmFsaWRFc2NhcGUoJ1MnKSk7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ3cnKSk7Ci0g
IEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ1cnKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXND
aGFyVGVzdCwgRXNjYXBlZFB1bmN0KSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ1xcJywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICdcXCcsICcgJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdfJywg
Jy4nKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJy4nLCAnYScpKTsK
LQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1xcJywgJ1xcJykpOwotICBF
WFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ18nLCAnXycpKTsKLSAgRVhQRUNUX1RS
VUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICcrJywgJysnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAnLicsICcuJykpOwotfQotCi1URVNUKEF0b21NYXRjaGVzQ2hhclRl
c3QsIEVzY2FwZWRfZCkgewotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdk
JywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywgJ2En
KSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnLicpKTsKLQot
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnMCcpKTsKLSAgRVhQRUNU
X1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywgJzknKSk7Ci19Ci0KLVRFU1QoQXRvbU1h
dGNoZXNDaGFyVGVzdCwgRXNjYXBlZF9EKSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ0QnLCAnMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVl
LCAnRCcsICc5JykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcs
ICdcMCcpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJ2EnKSk7
Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcsICctJykpOwotfQotCi1U
RVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfcykgewotICBFWFBFQ1RfRkFMU0UoQXRv
bU1hdGNoZXNDaGFyKHRydWUsICdzJywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNo
ZXNDaGFyKHRydWUsICdzJywgJ2EnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ3MnLCAnLicpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
cycsICc5JykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICcg
JykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnXG4nKSk7Ci0g
IEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICdcdCcpKTsKLX0KLQotVEVT
VChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX1MpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAnUycsICcgJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICdTJywgJ1xyJykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAnUycsICdcMCcpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdT
JywgJ2EnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICc5Jykp
OwotfQotCi1URVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfdykgewotICBFWFBFQ1Rf
RkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0Uo
QXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJysnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0
Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnICcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hh
cih0cnVlLCAndycsICdcbicpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ3cnLCAnMCcpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3Jywg
J2InKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdDJykpOwot
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnXycpKTsKLX0KLQotVEVT
VChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX1cpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAnVycsICdBJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICdXJywgJ2InKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ1cnLCAnOScpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycs
ICdfJykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICdcMCcp
KTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJyonKSk7Ci0gIEVY
UEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICdcbicpKTsKLX0KLQotVEVTVChB
dG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkV2hpdGVTcGFjZSkgewotICBFWFBFQ1RfRkFMU0Uo
QXRvbU1hdGNoZXNDaGFyKHRydWUsICdmJywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICdmJywgJ1xuJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICduJywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICduJywgJ1xyJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdy
JywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdyJywgJ2En
KSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3QnLCAnXDAnKSk7Ci0g
IEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3QnLCAndCcpKTsKLSAgRVhQRUNU
X0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndicsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndicsICdcZicpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ2YnLCAnXGYnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAnbicsICdcbicpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICdyJywgJ1xyJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3Qn
LCAnXHQnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndicsICdcdicp
KTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBVbmVzY2FwZWREb3QpIHsKLSAgRVhQ
RUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4nLCAnXG4nKSk7Ci0KLSAgRVhQRUNU
X1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnLicsICdcMCcpKTsKLSAgRVhQRUNUX1RSVUUo
QXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnLicsICcuJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0
Y2hlc0NoYXIoZmFsc2UsICcuJywgJ2EnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hh
cihmYWxzZSwgJy4nLCAnICcpKTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBVbmVz
Y2FwZWRDaGFyKSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICdhJywg
J1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnYScsICdiJykp
OwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnJCcsICdhJykpOwotCi0g
IEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJyQnLCAnJCcpKTsKLSAgRVhQRUNU
X1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnNScsICc1JykpOwotICBFWFBFQ1RfVFJVRShB
dG9tTWF0Y2hlc0NoYXIoZmFsc2UsICdaJywgJ1onKSk7Ci19Ci0KLVRFU1QoVmFsaWRhdGVSZWdl
eFRlc3QsIEdlbmVyYXRlc0ZhaWx1cmVBbmRSZXR1cm5zRmFsc2VGb3JJbnZhbGlkKSB7Ci0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KE5VTEwpKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIk5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxlIHJl
Z3VsYXIgZXhwcmVzc2lvbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKLSAgICAgIEFT
U0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJhXFwiKSksCi0gICAgICAiU3ludGF4IGVycm9yIGF0
IGluZGV4IDEgaW4gc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiBcImFcXFwiOiAiKTsKLSAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImFcXCIpKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIidcXCcgY2Fubm90IGFwcGVhciBhdCB0aGUgZW5k
Iik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4
KCJcXG5cXCIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIidcXCcgY2Fubm90IGFwcGVh
ciBhdCB0aGUgZW5kIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShW
YWxpZGF0ZVJlZ2V4KCJcXHNcXGhiIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52
YWxpZCBlc2NhcGUgc2VxdWVuY2UgXCJcXGhcIiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiXl4iKSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICInXicgY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBiZWdpbm5pbmciKTsKLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIi4qXmIiKSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICInXicgY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBiZWdp
bm5pbmciKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRl
UmVnZXgoIiQkIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJyQnIGNhbiBvbmx5IGFw
cGVhciBhdCB0aGUgZW5kIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxT
RShWYWxpZGF0ZVJlZ2V4KCJeJGEiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInJCcg
Y2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBlbmQiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
QVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImEoYiIpKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIicoJyBpcyB1bnN1cHBvcnRlZCIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShB
U1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiYWIpIikpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAiJyknIGlzIHVuc3VwcG9ydGVkIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFT
U0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJbYWIiKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICInWycgaXMgdW5zdXBwb3J0ZWQiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNT
RVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImF7MiIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIid7JyBpcyB1bnN1cHBvcnRlZCIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NF
UlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiPyIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
Iic/JyBjYW4gb25seSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2VuIik7Ci0gIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJeKiIpKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIicqJyBjYW4gb25seSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2Vu
Iik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4
KCI1KisiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInKycgY2FuIG9ubHkgZm9sbG93
IGEgcmVwZWF0YWJsZSB0b2tlbiIpOwotfQotCi1URVNUKFZhbGlkYXRlUmVnZXhUZXN0LCBSZXR1
cm5zVHJ1ZUZvclZhbGlkKSB7Ci0gIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIiIpKTsKLSAg
RVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiYSIpKTsKLSAgRVhQRUNUX1RSVUUoVmFsaWRhdGVS
ZWdleCgiLioiKSk7Ci0gIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIl5hXysiKSk7Ci0gIEVY
UEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIl5hXFx0XFwmPyIpKTsKLSAgRVhQRUNUX1RSVUUoVmFs
aWRhdGVSZWdleCgiMDkqJCIpKTsKLSAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiXlokIikp
OwotICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCJhXFxeWlxcJFxcKFxcKVxcfFxcW1xcXVxc
e1xcfSIpKTsKLX0KLQotVEVTVChNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZFRlc3QsIFdv
cmtzRm9yWmVyb09yT25lKSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdl
eEF0SGVhZChmYWxzZSwgJ2EnLCAnPycsICJhIiwgImJhIikpOwotICAvLyBSZXBlYXRpbmcgbW9y
ZSB0aGFuIG9uY2UuCi0gIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVh
ZChmYWxzZSwgJ2EnLCAnPycsICJiIiwgImFhYiIpKTsKLQotICAvLyBSZXBlYXRpbmcgemVybyB0
aW1lcy4KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2Us
ICdhJywgJz8nLCAiYiIsICJiYSIpKTsKLSAgLy8gUmVwZWF0aW5nIG9uY2UuCi0gIEVYUEVDVF9U
UlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImIiLCAi
YWIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNl
LCAnIycsICc/JywgIi4iLCAiIyMiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZXBldGl0aW9uQW5kUmVn
ZXhBdEhlYWRUZXN0LCBXb3Jrc0Zvclplcm9Pck1hbnkpIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNo
UmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcqJywgImEkIiwgImJhYWIiKSk7
Ci0KLSAgLy8gUmVwZWF0aW5nIHplcm8gdGltZXMuCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRp
dGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcqJywgImIiLCAiYmMiKSk7Ci0gIC8vIFJl
cGVhdGluZyBvbmNlLgotICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVh
ZChmYWxzZSwgJy4nLCAnKicsICJiIiwgImFiYyIpKTsKLSAgLy8gUmVwZWF0aW5nIG1vcmUgdGhh
biBvbmNlLgotICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZCh0cnVl
LCAndycsICcqJywgIi0iLCAiYWJfMS1nIikpOwotfQotCi1URVNUKE1hdGNoUmVwZXRpdGlvbkFu
ZFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NGb3JPbmVPck1hbnkpIHsKLSAgRVhQRUNUX0ZBTFNFKE1h
dGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcrJywgImEkIiwgImJhYWIi
KSk7Ci0gIC8vIFJlcGVhdGluZyB6ZXJvIHRpbWVzLgotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZXBl
dGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJysnLCAiYiIsICJiYyIpKTsKLQotICAv
LyBSZXBlYXRpbmcgb25jZS4KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhB
dEhlYWQoZmFsc2UsICcuJywgJysnLCAiYiIsICJhYmMiKSk7Ci0gIC8vIFJlcGVhdGluZyBtb3Jl
IHRoYW4gb25jZS4KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQo
dHJ1ZSwgJ3cnLCAnKycsICItIiwgImFiXzEtZyIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QXRI
ZWFkVGVzdCwgUmV0dXJuc1RydWVGb3JFbXB0eVJlZ2V4KSB7Ci0gIEVYUEVDVF9UUlVFKE1hdGNo
UmVnZXhBdEhlYWQoIiIsICIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIiIs
ICJhYiIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NXaGVuRG9sbGFy
SXNJblJlZ2V4KSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCIkIiwgImEiKSk7
Ci0KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiJCIsICIiKSk7Ci0gIEVYUEVDVF9U
UlVFKE1hdGNoUmVnZXhBdEhlYWQoImEkIiwgImEiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEF0
SGVhZFRlc3QsIFdvcmtzV2hlblJlZ2V4U3RhcnRzV2l0aEVzY2FwZVNlcXVlbmNlKSB7Ci0gIEVY
UEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJcXHciLCAiKyIpKTsKLSAgRVhQRUNUX0ZBTFNF
KE1hdGNoUmVnZXhBdEhlYWQoIlxcVyIsICJhYiIpKTsKLQotICBFWFBFQ1RfVFJVRShNYXRjaFJl
Z2V4QXRIZWFkKCJcXHNhIiwgIlxuYWIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhl
YWQoIlxcZCIsICIxYSIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NX
aGVuUmVnZXhTdGFydHNXaXRoUmVwZXRpdGlvbikgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdl
eEF0SGVhZCgiLithIiwgImFiYyIpKTsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQo
ImE/YiIsICJhYWIiKSk7Ci0KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiLiphIiwg
ImJjMTItYWIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoImE/YiIsICJiIikp
OwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJhP2IiLCAiYWIiKSk7Ci19Ci0KLVRF
U1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsCi0gICAgIFdvcmtzV2hlblJlZ2V4U3RhcnRzV2l0aFJl
cGV0aW9uT2ZFc2NhcGVTZXF1ZW5jZSkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVh
ZCgiXFwuK2EiLCAiYWJjIikpOwotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiXFxz
P2IiLCAiICBiIikpOwotCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcKCphIiwg
IigoKChhYiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxeP2IiLCAiXmIi
KSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcXFw/YiIsICJiIikpOwotICBF
WFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXFxcP2IiLCAiXFxiIikpOwotfQotCi1URVNU
KE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBNYXRjaGVzU2VxdWVudGlhbGx5KSB7Ci0gIEVYUEVDVF9G
QUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJhYi4qYyIsICJhY2FiYyIpKTsKLQotICBFWFBFQ1RfVFJV
RShNYXRjaFJlZ2V4QXRIZWFkKCJhYi4qYyIsICJhYi1mc2MiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hS
ZWdleEFueXdoZXJlVGVzdCwgUmV0dXJuc0ZhbHNlV2hlblN0cmluZ0lzTnVsbCkgewotICBFWFBF
Q1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJlKCIiLCBOVUxMKSk7Ci19Ci0KLVRFU1QoTWF0Y2hS
ZWdleEFueXdoZXJlVGVzdCwgV29ya3NXaGVuUmVnZXhTdGFydHNXaXRoQ2FyZXQpIHsKLSAgRVhQ
RUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXmEiLCAiYmEiKSk7Ci0gIEVYUEVDVF9GQUxT
RShNYXRjaFJlZ2V4QW55d2hlcmUoIl4kIiwgImEiKSk7Ci0KLSAgRVhQRUNUX1RSVUUoTWF0Y2hS
ZWdleEFueXdoZXJlKCJeYSIsICJhYiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdo
ZXJlKCJeIiwgImFiIikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIl4kIiwg
IiIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5zRmFsc2VXaGVu
Tm9NYXRjaCkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJlKCJhIiwgImJjZGUx
MjMiKSk7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoImEuK2EiLCAiLS1hYTg4
ODg4ODg4IikpOwotfQotCi1URVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFJldHVybnNUcnVl
V2hlbk1hdGNoaW5nUHJlZml4KSB7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgi
XFx3KyIsICJhYjFfIC0gNSIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCIu
Kj0iLCAiPSIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJ4LiphYj8uKmJj
IiwgInhhYWFiYyIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5z
VHJ1ZVdoZW5NYXRjaGluZ05vblByZWZpeCkgewotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55
d2hlcmUoIlxcdysiLCAiJCQkIGFiMV8gLSA1IikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4
QW55d2hlcmUoIlxcLis9IiwgIj0gIC4uLj0iKSk7Ci19Ci0KLS8vIFRlc3RzIFJFJ3MgaW1wbGlj
aXQgY29uc3RydWN0b3JzLgotVEVTVChSRVRlc3QsIEltcGxpY2l0Q29uc3RydWN0b3JXb3Jrcykg
ewotICBjb25zdCBSRSBlbXB0eSgiIik7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgZW1wdHkucGF0dGVy
bigpKTsKLQotICBjb25zdCBSRSBzaW1wbGUoImhlbGxvIik7Ci0gIEVYUEVDVF9TVFJFUSgiaGVs
bG8iLCBzaW1wbGUucGF0dGVybigpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBSRSdzIGNvbnN0cnVj
dG9ycyByZWplY3QgaW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb25zLgotVEVTVChSRVRlc3QsIFJl
amVjdHNJbnZhbGlkUmVnZXgpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIGNv
bnN0IFJFIG5vcm1hbChOVUxMKTsKLSAgfSwgIk5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxlIHJl
Z3VsYXIgZXhwcmVzc2lvbiIpOwotCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBj
b25zdCBSRSBub3JtYWwoIi4qKFxcdysiKTsKLSAgfSwgIicoJyBpcyB1bnN1cHBvcnRlZCIpOwot
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBjb25zdCBSRSBpbnZhbGlkKCJePyIp
OwotICB9LCAiJz8nIGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVhdGFibGUgdG9rZW4iKTsKLX0KLQot
Ly8gVGVzdHMgUkU6OkZ1bGxNYXRjaCgpLgotVEVTVChSRVRlc3QsIEZ1bGxNYXRjaFdvcmtzKSB7
Ci0gIGNvbnN0IFJFIGVtcHR5KCIiKTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaCgiIiwg
ZW1wdHkpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goImEiLCBlbXB0eSkpOwotCi0g
IGNvbnN0IFJFIHJlMSgiYSIpOwotICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKCJhIiwgcmUx
KSk7Ci0KLSAgY29uc3QgUkUgcmUoImEuKnoiKTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRj
aCgiYXoiLCByZSkpOwotICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKCJheHl6IiwgcmUpKTsK
LSAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goImJheiIsIHJlKSk7Ci0gIEVYUEVDVF9GQUxT
RShSRTo6RnVsbE1hdGNoKCJhenkiLCByZSkpOwotfQotCi0vLyBUZXN0cyBSRTo6UGFydGlhbE1h
dGNoKCkuCi1URVNUKFJFVGVzdCwgUGFydGlhbE1hdGNoV29ya3MpIHsKLSAgY29uc3QgUkUgZW1w
dHkoIiIpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCIiLCBlbXB0eSkpOwotICBF
WFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCJhIiwgZW1wdHkpKTsKLQotICBjb25zdCBSRSBy
ZSgiYS4qeiIpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCJheiIsIHJlKSk7Ci0g
IEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImF4eXoiLCByZSkpOwotICBFWFBFQ1RfVFJV
RShSRTo6UGFydGlhbE1hdGNoKCJiYXoiLCByZSkpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlh
bE1hdGNoKCJhenkiLCByZSkpOwotICBFWFBFQ1RfRkFMU0UoUkU6OlBhcnRpYWxNYXRjaCgienph
IiwgcmUpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9VU0VTX1BPU0lYX1JFCi0KLSNpZiAhR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKLQotVEVTVChDYXB0dXJlVGVzdCwgQ2FwdHVyZXNTdGRvdXQp
IHsKLSAgQ2FwdHVyZVN0ZG91dCgpOwotICBmcHJpbnRmKHN0ZG91dCwgImFiYyIpOwotICBFWFBF
Q1RfU1RSRVEoImFiYyIsIEdldENhcHR1cmVkU3Rkb3V0KCkuY19zdHIoKSk7Ci0KLSAgQ2FwdHVy
ZVN0ZG91dCgpOwotICBmcHJpbnRmKHN0ZG91dCwgImRlZiVjZ2hpIiwgJ1wwJyk7Ci0gIEVYUEVD
VF9FUSg6OnN0ZDo6c3RyaW5nKCJkZWZcMGdoaSIsIDcpLCA6OnN0ZDo6c3RyaW5nKEdldENhcHR1
cmVkU3Rkb3V0KCkpKTsKLX0KLQotVEVTVChDYXB0dXJlVGVzdCwgQ2FwdHVyZXNTdGRlcnIpIHsK
LSAgQ2FwdHVyZVN0ZGVycigpOwotICBmcHJpbnRmKHN0ZGVyciwgImprbCIpOwotICBFWFBFQ1Rf
U1RSRVEoImprbCIsIEdldENhcHR1cmVkU3RkZXJyKCkuY19zdHIoKSk7Ci0KLSAgQ2FwdHVyZVN0
ZGVycigpOwotICBmcHJpbnRmKHN0ZGVyciwgImprbCVjbW5vIiwgJ1wwJyk7Ci0gIEVYUEVDVF9F
USg6OnN0ZDo6c3RyaW5nKCJqa2xcMG1ubyIsIDcpLCA6OnN0ZDo6c3RyaW5nKEdldENhcHR1cmVk
U3RkZXJyKCkpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBzdGRvdXQgYW5kIHN0ZGVyciBjYXB0dXJl
IGRvbid0IGludGVyZmVyZSB3aXRoIGVhY2ggb3RoZXIuCi1URVNUKENhcHR1cmVUZXN0LCBDYXB0
dXJlc1N0ZG91dEFuZFN0ZGVycikgewotICBDYXB0dXJlU3Rkb3V0KCk7Ci0gIENhcHR1cmVTdGRl
cnIoKTsKLSAgZnByaW50ZihzdGRvdXQsICJwcXIiKTsKLSAgZnByaW50ZihzdGRlcnIsICJzdHUi
KTsKLSAgRVhQRUNUX1NUUkVRKCJwcXIiLCBHZXRDYXB0dXJlZFN0ZG91dCgpLmNfc3RyKCkpOwot
ICBFWFBFQ1RfU1RSRVEoInN0dSIsIEdldENhcHR1cmVkU3RkZXJyKCkuY19zdHIoKSk7Ci19Ci0K
LVRFU1QoQ2FwdHVyZURlYXRoVGVzdCwgQ2Fubm90UmVlbnRlclN0ZG91dENhcHR1cmUpIHsKLSAg
Q2FwdHVyZVN0ZG91dCgpOwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKENhcHR1cmVTdGRv
dXQoKTssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9ubHkgb25lIHN0ZG91dCBjYXB0
dXJlciBjYW4gZXhpc3QgYXQgYSB0aW1lIik7Ci0gIEdldENhcHR1cmVkU3Rkb3V0KCk7Ci0KLSAg
Ly8gV2UgY2Fubm90IHRlc3Qgc3RkZXJyIGNhcHR1cmluZyB1c2luZyBkZWF0aCB0ZXN0cyBhcyB0
aGV5IHVzZSBpdAotICAvLyB0aGVtc2VsdmVzLgotfQotCi0jZW5kaWYgIC8vICFHVEVTVF9PU19X
SU5ET1dTX01PQklMRQotCi1URVNUKFRocmVhZExvY2FsVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9y
SW5pdGlhbGl6ZXNUb0RlZmF1bHRWYWx1ZXMpIHsKLSAgVGhyZWFkTG9jYWw8aW50PiB0MTsKLSAg
RVhQRUNUX0VRKDAsIHQxLmdldCgpKTsKLQotICBUaHJlYWRMb2NhbDx2b2lkKj4gdDI7Ci0gIEVY
UEVDVF9UUlVFKHQyLmdldCgpID09IE5VTEwpOwotfQotCi1URVNUKFRocmVhZExvY2FsVGVzdCwg
U2luZ2xlUGFyYW1Db25zdHJ1Y3RvckluaXRpYWxpemVzVG9QYXJhbSkgewotICBUaHJlYWRMb2Nh
bDxpbnQ+IHQxKDEyMyk7Ci0gIEVYUEVDVF9FUSgxMjMsIHQxLmdldCgpKTsKLQotICBpbnQgaSA9
IDA7Ci0gIFRocmVhZExvY2FsPGludCo+IHQyKCZpKTsKLSAgRVhQRUNUX0VRKCZpLCB0Mi5nZXQo
KSk7Ci19Ci0KLWNsYXNzIE5vRGVmYXVsdENvbnRydWN0b3IgewotIHB1YmxpYzoKLSAgZXhwbGlj
aXQgTm9EZWZhdWx0Q29udHJ1Y3Rvcihjb25zdCBjaGFyKikge30KLSAgTm9EZWZhdWx0Q29udHJ1
Y3Rvcihjb25zdCBOb0RlZmF1bHRDb250cnVjdG9yJikge30KLX07Ci0KLVRFU1QoVGhyZWFkTG9j
YWxUZXN0LCBWYWx1ZURlZmF1bHRDb250cnVjdG9ySXNOb3RSZXF1aXJlZEZvclBhcmFtVmVyc2lv
bikgewotICBUaHJlYWRMb2NhbDxOb0RlZmF1bHRDb250cnVjdG9yPiBiYXIoTm9EZWZhdWx0Q29u
dHJ1Y3RvcigiZm9vIikpOwotICBiYXIucG9pbnRlcigpOwotfQotCi1URVNUKFRocmVhZExvY2Fs
VGVzdCwgR2V0QW5kUG9pbnRlclJldHVyblNhbWVWYWx1ZSkgewotICBUaHJlYWRMb2NhbDxTdHJp
bmc+IHRocmVhZF9sb2NhbDsKLQotICBFWFBFQ1RfRVEodGhyZWFkX2xvY2FsLnBvaW50ZXIoKSwg
Jih0aHJlYWRfbG9jYWwuZ2V0KCkpKTsKLQotICAvLyBWZXJpZmllcyB0aGUgY29uZGl0aW9uIHN0
aWxsIGhvbGRzIGFmdGVyIGNhbGxpbmcgc2V0LgotICB0aHJlYWRfbG9jYWwuc2V0KCJmb28iKTsK
LSAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbC5wb2ludGVyKCksICYodGhyZWFkX2xvY2FsLmdldCgp
KSk7Ci19Ci0KLVRFU1QoVGhyZWFkTG9jYWxUZXN0LCBQb2ludGVyQW5kQ29uc3RQb2ludGVyUmV0
dXJuU2FtZVZhbHVlKSB7Ci0gIFRocmVhZExvY2FsPFN0cmluZz4gdGhyZWFkX2xvY2FsOwotICBj
b25zdCBUaHJlYWRMb2NhbDxTdHJpbmc+JiBjb25zdF90aHJlYWRfbG9jYWwgPSB0aHJlYWRfbG9j
YWw7Ci0KLSAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbC5wb2ludGVyKCksIGNvbnN0X3RocmVhZF9s
b2NhbC5wb2ludGVyKCkpOwotCi0gIHRocmVhZF9sb2NhbC5zZXQoImZvbyIpOwotICBFWFBFQ1Rf
RVEodGhyZWFkX2xvY2FsLnBvaW50ZXIoKSwgY29uc3RfdGhyZWFkX2xvY2FsLnBvaW50ZXIoKSk7
Ci19Ci0KLSNpZiBHVEVTVF9JU19USFJFQURTQUZFCi0KLXZvaWQgQWRkVHdvKGludCogcGFyYW0p
IHsgKnBhcmFtICs9IDI7IH0KLQotVEVTVChUaHJlYWRXaXRoUGFyYW1UZXN0LCBDb25zdHJ1Y3Rv
ckV4ZWN1dGVzVGhyZWFkRnVuYykgewotICBpbnQgaSA9IDQwOwotICBUaHJlYWRXaXRoUGFyYW08
aW50Kj4gdGhyZWFkKCZBZGRUd28sICZpLCBOVUxMKTsKLSAgdGhyZWFkLkpvaW4oKTsKLSAgRVhQ
RUNUX0VRKDQyLCBpKTsKLX0KLQotVEVTVChNdXRleERlYXRoVGVzdCwgQXNzZXJ0SGVsZFNob3Vs
ZEFzc2VydFdoZW5Ob3RMb2NrZWQpIHsKLSAgLy8gQXNzZXJ0SGVsZCgpIGlzIGZsYWt5IG9ubHkg
aW4gdGhlIHByZXNlbmNlIG9mIG11bHRpcGxlIHRocmVhZHMgYWNjZXNzaW5nCi0gIC8vIHRoZSBs
b2NrLiBJbiB0aGlzIGNhc2UsIHRoZSB0ZXN0IGlzIHJvYnVzdC4KLSAgRVhQRUNUX0RFQVRIX0lG
X1NVUFBPUlRFRCh7Ci0gICAgTXV0ZXggbTsKLSAgICB7IE11dGV4TG9jayBsb2NrKCZtKTsgfQot
ICAgIG0uQXNzZXJ0SGVsZCgpOwotICB9LAotICAidGhyZWFkIC4qaG9sZCIpOwotfQotCi1URVNU
KE11dGV4VGVzdCwgQXNzZXJ0SGVsZFNob3VsZE5vdEFzc2VydFdoZW5Mb2NrZWQpIHsKLSAgTXV0
ZXggbTsKLSAgTXV0ZXhMb2NrIGxvY2soJm0pOwotICBtLkFzc2VydEhlbGQoKTsKLX0KLQotY2xh
c3MgQXRvbWljQ291bnRlcldpdGhNdXRleCB7Ci0gcHVibGljOgotICBleHBsaWNpdCBBdG9taWND
b3VudGVyV2l0aE11dGV4KE11dGV4KiBtdXRleCkgOgotICAgIHZhbHVlXygwKSwgbXV0ZXhfKG11
dGV4KSwgcmFuZG9tXyg0Mikge30KLQotICB2b2lkIEluY3JlbWVudCgpIHsKLSAgICBNdXRleExv
Y2sgbG9jayhtdXRleF8pOwotICAgIGludCB0ZW1wID0gdmFsdWVfOwotICAgIHsKLSAgICAgIC8v
IExvY2tpbmcgYSBtdXRleCBwdXRzIHVwIGEgbWVtb3J5IGJhcnJpZXIsIHByZXZlbnRpbmcgcmVh
ZHMgYW5kCi0gICAgICAvLyB3cml0ZXMgdG8gdmFsdWVfIHJlYXJyYW5nZWQgd2hlbiBvYnNlcnZl
ZCBmcm9tIG90aGVyIHRocmVhZHMuCi0gICAgICAvLwotICAgICAgLy8gV2UgY2Fubm90IHVzZSBN
dXRleCBhbmQgTXV0ZXhMb2NrIGhlcmUgb3IgcmVseSBvbiB0aGVpciBtZW1vcnkKLSAgICAgIC8v
IGJhcnJpZXIgZnVuY3Rpb25hbGl0eSBhcyB3ZSBhcmUgdGVzdGluZyB0aGVtIGhlcmUuCi0gICAg
ICBwdGhyZWFkX211dGV4X3QgbWVtb3J5X2JhcnJpZXJfbXV0ZXg7Ci0gICAgICBHVEVTVF9DSEVD
S19QT1NJWF9TVUNDRVNTXygKLSAgICAgICAgICBwdGhyZWFkX211dGV4X2luaXQoJm1lbW9yeV9i
YXJyaWVyX211dGV4LCBOVUxMKSk7Ci0gICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhw
dGhyZWFkX211dGV4X2xvY2soJm1lbW9yeV9iYXJyaWVyX211dGV4KSk7Ci0KLSAgICAgIFNsZWVw
TWlsbGlzZWNvbmRzKHJhbmRvbV8uR2VuZXJhdGUoMzApKTsKLQotICAgICAgR1RFU1RfQ0hFQ0tf
UE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF91bmxvY2soJm1lbW9yeV9iYXJyaWVyX211dGV4
KSk7Ci0gICAgfQotICAgIHZhbHVlXyA9IHRlbXAgKyAxOwotICB9Ci0gIGludCB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIHZhbHVlXzsgfQotCi0gcHJpdmF0ZToKLSAgdm9sYXRpbGUgaW50IHZhbHVl
XzsKLSAgTXV0ZXgqIGNvbnN0IG11dGV4XzsgIC8vIFByb3RlY3RzIHZhbHVlXy4KLSAgUmFuZG9t
ICAgICAgIHJhbmRvbV87Ci19OwotCi12b2lkIENvdW50aW5nVGhyZWFkRnVuYyhwYWlyPEF0b21p
Y0NvdW50ZXJXaXRoTXV0ZXgqLCBpbnQ+IHBhcmFtKSB7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwg
cGFyYW0uc2Vjb25kOyArK2kpCi0gICAgICBwYXJhbS5maXJzdC0+SW5jcmVtZW50KCk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgdGhlIG11dGV4IG9ubHkgbGV0cyBvbmUgdGhyZWFkIGF0IGEgdGltZSB0
byBsb2NrIGl0LgotVEVTVChNdXRleFRlc3QsIE9ubHlPbmVUaHJlYWRDYW5Mb2NrQXRBVGltZSkg
ewotICBNdXRleCBtdXRleDsKLSAgQXRvbWljQ291bnRlcldpdGhNdXRleCBsb2NrZWRfY291bnRl
cigmbXV0ZXgpOwotCi0gIHR5cGVkZWYgVGhyZWFkV2l0aFBhcmFtPHBhaXI8QXRvbWljQ291bnRl
cldpdGhNdXRleCosIGludD4gPiBUaHJlYWRUeXBlOwotICBjb25zdCBpbnQga0N5Y2xlQ291bnQg
PSAyMDsKLSAgY29uc3QgaW50IGtUaHJlYWRDb3VudCA9IDc7Ci0gIHNjb3BlZF9wdHI8VGhyZWFk
VHlwZT4gY291bnRpbmdfdGhyZWFkc1trVGhyZWFkQ291bnRdOwotICBOb3RpZmljYXRpb24gdGhy
ZWFkc19jYW5fc3RhcnQ7Ci0gIC8vIENyZWF0ZXMgYW5kIHJ1bnMga1RocmVhZENvdW50IHRocmVh
ZHMgdGhhdCBpbmNyZW1lbnQgbG9ja2VkX2NvdW50ZXIKLSAgLy8ga0N5Y2xlQ291bnQgdGltZXMg
ZWFjaC4KLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVGhyZWFkQ291bnQ7ICsraSkgewotICAgIGNv
dW50aW5nX3RocmVhZHNbaV0ucmVzZXQobmV3IFRocmVhZFR5cGUoJkNvdW50aW5nVGhyZWFkRnVu
YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VfcGFp
cigmbG9ja2VkX2NvdW50ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga0N5Y2xlQ291bnQpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnRocmVhZHNfY2FuX3N0YXJ0KSk7Ci0gIH0KLSAgdGhyZWFk
c19jYW5fc3RhcnQuTm90aWZ5KCk7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwga1RocmVhZENvdW50
OyArK2kpCi0gICAgY291bnRpbmdfdGhyZWFkc1tpXS0+Sm9pbigpOwotCi0gIC8vIElmIHRoZSBt
dXRleCBsZXRzIG1vcmUgdGhhbiBvbmUgdGhyZWFkIHRvIGluY3JlbWVudCB0aGUgY291bnRlciBh
dCBhCi0gIC8vIHRpbWUsIHRoZXkgYXJlIGxpa2VseSB0byBlbmNvdW50ZXIgYSByYWNlIGNvbmRp
dGlvbiBhbmQgaGF2ZSBzb21lCi0gIC8vIGluY3JlbWVudHMgb3ZlcndyaXR0ZW4sIHJlc3VsdGlu
ZyBpbiB0aGUgbG93ZXIgdGhlbiBleHBlY3RlZCBjb3VudGVyCi0gIC8vIHZhbHVlLgotICBFWFBF
Q1RfRVEoa0N5Y2xlQ291bnQgKiBrVGhyZWFkQ291bnQsIGxvY2tlZF9jb3VudGVyLnZhbHVlKCkp
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgUnVuRnJvbVRocmVhZCh2b2lkIChm
dW5jKShUKSwgVCBwYXJhbSkgewotICBUaHJlYWRXaXRoUGFyYW08VD4gdGhyZWFkKGZ1bmMsIHBh
cmFtLCBOVUxMKTsKLSAgdGhyZWFkLkpvaW4oKTsKLX0KLQotdm9pZCBSZXRyaWV2ZVRocmVhZExv
Y2FsVmFsdWUocGFpcjxUaHJlYWRMb2NhbDxTdHJpbmc+KiwgU3RyaW5nKj4gcGFyYW0pIHsKLSAg
KnBhcmFtLnNlY29uZCA9IHBhcmFtLmZpcnN0LT5nZXQoKTsKLX0KLQotVEVTVChUaHJlYWRMb2Nh
bFRlc3QsIFBhcmFtZXRlcml6ZWRDb25zdHJ1Y3RvclNldHNEZWZhdWx0KSB7Ci0gIFRocmVhZExv
Y2FsPFN0cmluZz4gdGhyZWFkX2xvY2FsKCJmb28iKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iLCB0
aHJlYWRfbG9jYWwuZ2V0KCkuY19zdHIoKSk7Ci0KLSAgdGhyZWFkX2xvY2FsLnNldCgiYmFyIik7
Ci0gIEVYUEVDVF9TVFJFUSgiYmFyIiwgdGhyZWFkX2xvY2FsLmdldCgpLmNfc3RyKCkpOwotCi0g
IFN0cmluZyByZXN1bHQ7Ci0gIFJ1bkZyb21UaHJlYWQoJlJldHJpZXZlVGhyZWFkTG9jYWxWYWx1
ZSwgbWFrZV9wYWlyKCZ0aHJlYWRfbG9jYWwsICZyZXN1bHQpKTsKLSAgRVhQRUNUX1NUUkVRKCJm
b28iLCByZXN1bHQuY19zdHIoKSk7Ci19Ci0KLS8vIERlc3RydWN0b3JUcmFja2VyIGtlZXBzIHRy
YWNrIG9mIHdoZXRoZXIgaXRzIGluc3RhbmNlcyBoYXZlIGJlZW4KLS8vIGRlc3Ryb3llZC4KLXN0
YXRpYyBzdGQ6OnZlY3Rvcjxib29sPiBnX2Rlc3Ryb3llZDsKLQotY2xhc3MgRGVzdHJ1Y3RvclRy
YWNrZXIgewotIHB1YmxpYzoKLSAgRGVzdHJ1Y3RvclRyYWNrZXIoKSA6IGluZGV4XyhHZXROZXdJ
bmRleCgpKSB7fQotICBEZXN0cnVjdG9yVHJhY2tlcihjb25zdCBEZXN0cnVjdG9yVHJhY2tlciYg
LyogcmhzICovKQotICAgICAgOiBpbmRleF8oR2V0TmV3SW5kZXgoKSkge30KLSAgfkRlc3RydWN0
b3JUcmFja2VyKCkgewotICAgIC8vIFdlIG5ldmVyIGFjY2VzcyBnX2Rlc3Ryb3llZCBjb25jdXJy
ZW50bHksIHNvIHdlIGRvbid0IG5lZWQgdG8KLSAgICAvLyBwcm90ZWN0IHRoZSB3cml0ZSBvcGVy
YXRpb24gdW5kZXIgYSBtdXRleC4KLSAgICBnX2Rlc3Ryb3llZFtpbmRleF9dID0gdHJ1ZTsKLSAg
fQotCi0gcHJpdmF0ZToKLSAgc3RhdGljIGludCBHZXROZXdJbmRleCgpIHsKLSAgICBnX2Rlc3Ry
b3llZC5wdXNoX2JhY2soZmFsc2UpOwotICAgIHJldHVybiBnX2Rlc3Ryb3llZC5zaXplKCkgLSAx
OwotICB9Ci0gIGNvbnN0IGludCBpbmRleF87Ci19OwotCi10eXBlZGVmIFRocmVhZExvY2FsPERl
c3RydWN0b3JUcmFja2VyPiogVGhyZWFkUGFyYW07Ci0KLXZvaWQgQ2FsbFRocmVhZExvY2FsR2V0
KFRocmVhZFBhcmFtIHRocmVhZF9sb2NhbCkgewotICB0aHJlYWRfbG9jYWwtPmdldCgpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IHdoZW4gYSBUaHJlYWRMb2NhbCBvYmplY3QgZGllcyBpbiBhIHRocmVh
ZCwgaXQgZGVzdHJveXMKLS8vIHRoZSBtYW5hZ2VkIG9iamVjdCBmb3IgdGhhdCB0aHJlYWQuCi1U
RVNUKFRocmVhZExvY2FsVGVzdCwgRGVzdHJveXNNYW5hZ2VkT2JqZWN0Rm9yT3duVGhyZWFkV2hl
bkR5aW5nKSB7Ci0gIGdfZGVzdHJveWVkLmNsZWFyKCk7Ci0KLSAgewotICAgIC8vIFRoZSBuZXh0
IGxpbmUgZGVmYXVsdCBjb25zdHJ1Y3RzIGEgRGVzdHJ1Y3RvclRyYWNrZXIgb2JqZWN0IGFzCi0g
ICAgLy8gdGhlIGRlZmF1bHQgdmFsdWUgb2Ygb2JqZWN0cyBtYW5hZ2VkIGJ5IHRocmVhZF9sb2Nh
bC4KLSAgICBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4gdGhyZWFkX2xvY2FsOwotICAg
IEFTU0VSVF9FUSgxVSwgZ19kZXN0cm95ZWQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRkFMU0UoZ19k
ZXN0cm95ZWRbMF0pOwotCi0gICAgLy8gVGhpcyBjcmVhdGVzIGFub3RoZXIgRGVzdHJ1Y3RvclRy
YWNrZXIgb2JqZWN0IGZvciB0aGUgbWFpbiB0aHJlYWQuCi0gICAgdGhyZWFkX2xvY2FsLmdldCgp
OwotICAgIEFTU0VSVF9FUSgyVSwgZ19kZXN0cm95ZWQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRkFM
U0UoZ19kZXN0cm95ZWRbMF0pOwotICAgIEFTU0VSVF9GQUxTRShnX2Rlc3Ryb3llZFsxXSk7Ci0g
IH0KLQotICAvLyBOb3cgdGhyZWFkX2xvY2FsIGhhcyBkaWVkLiAgSXQgc2hvdWxkIGhhdmUgZGVz
dHJveWVkIGJvdGggdGhlCi0gIC8vIGRlZmF1bHQgdmFsdWUgc2hhcmVkIGJ5IGFsbCB0aHJlYWRz
IGFuZCB0aGUgdmFsdWUgZm9yIHRoZSBtYWluCi0gIC8vIHRocmVhZC4KLSAgQVNTRVJUX0VRKDJV
LCBnX2Rlc3Ryb3llZC5zaXplKCkpOwotICBFWFBFQ1RfVFJVRShnX2Rlc3Ryb3llZFswXSk7Ci0g
IEVYUEVDVF9UUlVFKGdfZGVzdHJveWVkWzFdKTsKLQotICBnX2Rlc3Ryb3llZC5jbGVhcigpOwot
fQotCi0vLyBUZXN0cyB0aGF0IHdoZW4gYSB0aHJlYWQgZXhpdHMsIHRoZSB0aHJlYWQtbG9jYWwg
b2JqZWN0IGZvciB0aGF0Ci0vLyB0aHJlYWQgaXMgZGVzdHJveWVkLgotVEVTVChUaHJlYWRMb2Nh
bFRlc3QsIERlc3Ryb3lzTWFuYWdlZE9iamVjdEF0VGhyZWFkRXhpdCkgewotICBnX2Rlc3Ryb3ll
ZC5jbGVhcigpOwotCi0gIHsKLSAgICAvLyBUaGUgbmV4dCBsaW5lIGRlZmF1bHQgY29uc3RydWN0
cyBhIERlc3RydWN0b3JUcmFja2VyIG9iamVjdCBhcwotICAgIC8vIHRoZSBkZWZhdWx0IHZhbHVl
IG9mIG9iamVjdHMgbWFuYWdlZCBieSB0aHJlYWRfbG9jYWwuCi0gICAgVGhyZWFkTG9jYWw8RGVz
dHJ1Y3RvclRyYWNrZXI+IHRocmVhZF9sb2NhbDsKLSAgICBBU1NFUlRfRVEoMVUsIGdfZGVzdHJv
eWVkLnNpemUoKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdfZGVzdHJveWVkWzBdKTsKLQotICAgIC8v
IFRoaXMgY3JlYXRlcyBhbm90aGVyIERlc3RydWN0b3JUcmFja2VyIG9iamVjdCBpbiB0aGUgbmV3
IHRocmVhZC4KLSAgICBUaHJlYWRXaXRoUGFyYW08VGhyZWFkUGFyYW0+IHRocmVhZCgKLSAgICAg
ICAgJkNhbGxUaHJlYWRMb2NhbEdldCwgJnRocmVhZF9sb2NhbCwgTlVMTCk7Ci0gICAgdGhyZWFk
LkpvaW4oKTsKLQotICAgIC8vIE5vdyB0aGUgbmV3IHRocmVhZCBoYXMgZXhpdGVkLiAgVGhlIHBl
ci10aHJlYWQgb2JqZWN0IGZvciBpdAotICAgIC8vIHNob3VsZCBoYXZlIGJlZW4gZGVzdHJveWVk
LgotICAgIEFTU0VSVF9FUSgyVSwgZ19kZXN0cm95ZWQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRkFM
U0UoZ19kZXN0cm95ZWRbMF0pOwotICAgIEFTU0VSVF9UUlVFKGdfZGVzdHJveWVkWzFdKTsKLSAg
fQotCi0gIC8vIE5vdyB0aHJlYWRfbG9jYWwgaGFzIGRpZWQuICBUaGUgZGVmYXVsdCB2YWx1ZSBz
aG91bGQgaGF2ZSBiZWVuCi0gIC8vIGRlc3Ryb3llZCB0b28uCi0gIEFTU0VSVF9FUSgyVSwgZ19k
ZXN0cm95ZWQuc2l6ZSgpKTsKLSAgRVhQRUNUX1RSVUUoZ19kZXN0cm95ZWRbMF0pOwotICBFWFBF
Q1RfVFJVRShnX2Rlc3Ryb3llZFsxXSk7Ci0KLSAgZ19kZXN0cm95ZWQuY2xlYXIoKTsKLX0KLQot
VEVTVChUaHJlYWRMb2NhbFRlc3QsIFRocmVhZExvY2FsTXV0YXRpb25zQWZmZWN0T25seUN1cnJl
bnRUaHJlYWQpIHsKLSAgVGhyZWFkTG9jYWw8U3RyaW5nPiB0aHJlYWRfbG9jYWw7Ci0gIHRocmVh
ZF9sb2NhbC5zZXQoIkZvbyIpOwotICBFWFBFQ1RfU1RSRVEoIkZvbyIsIHRocmVhZF9sb2NhbC5n
ZXQoKS5jX3N0cigpKTsKLQotICBTdHJpbmcgcmVzdWx0OwotICBSdW5Gcm9tVGhyZWFkKCZSZXRy
aWV2ZVRocmVhZExvY2FsVmFsdWUsIG1ha2VfcGFpcigmdGhyZWFkX2xvY2FsLCAmcmVzdWx0KSk7
Ci0gIEVYUEVDVF9UUlVFKHJlc3VsdC5jX3N0cigpID09IE5VTEwpOwotfQotCi0jZW5kaWYgIC8v
IEdURVNUX0lTX1RIUkVBRFNBRkUKLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi19ICAvLyBu
YW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVh
M2U5MTk2YWI5NmU0MTNmZWYzMzA3NTI0YjE4YzkyZjVlZGFkYjAuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDIwOCArMCwwIEBA
Ci0vLyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLgotLy8gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8g
ZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRo
b3I6IG1oZXVsZUBnb29nbGUuY29tIChNYXJrdXMgSGV1bGUpCi0vLwotCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QtdGVzdC1wYXJ0Lmg+Ci0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi11c2lu
ZyB0ZXN0aW5nOjpNZXNzYWdlOwotdXNpbmcgdGVzdGluZzo6VGVzdDsKLXVzaW5nIHRlc3Rpbmc6
OlRlc3RQYXJ0UmVzdWx0OwotdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHRBcnJheTsKLQot
bmFtZXNwYWNlIHsKLQotLy8gVGVzdHMgdGhlIFRlc3RQYXJ0UmVzdWx0IGNsYXNzLgotCi0vLyBU
aGUgdGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIFRlc3RQYXJ0UmVzdWx0LgotY2xhc3MgVGVzdFBh
cnRSZXN1bHRUZXN0IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgVGVzdFBhcnRSZXN1
bHRUZXN0KCkKLSAgICAgIDogcjFfKFRlc3RQYXJ0UmVzdWx0OjprU3VjY2VzcywgImZvby9iYXIu
Y2MiLCAxMCwgIlN1Y2Nlc3MhIiksCi0gICAgICAgIHIyXyhUZXN0UGFydFJlc3VsdDo6a05vbkZh
dGFsRmFpbHVyZSwgImZvby9iYXIuY2MiLCAtMSwgIkZhaWx1cmUhIiksCi0gICAgICAgIHIzXyhU
ZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwgTlVMTCwgLTEsICJGYWlsdXJlISIpIHt9Ci0K
LSAgVGVzdFBhcnRSZXN1bHQgcjFfLCByMl8sIHIzXzsKLX07Ci0KLQotVEVTVF9GKFRlc3RQYXJ0
UmVzdWx0VGVzdCwgQ29uc3RydWN0b3JXb3JrcykgewotICBNZXNzYWdlIG1lc3NhZ2U7Ci0gIG1l
c3NhZ2UgPDwgInNvbWV0aGluZyBpcyB0ZXJyaWJseSB3cm9uZyI7Ci0gIG1lc3NhZ2UgPDwgc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KHRlc3Rpbmc6OmludGVybmFsOjprU3RhY2tUcmFjZU1hcmtl
cik7Ci0gIG1lc3NhZ2UgPDwgInNvbWUgdW5pbXBvcnRhbnQgc3RhY2sgdHJhY2UiOwotCi0gIGNv
bnN0IFRlc3RQYXJ0UmVzdWx0IHJlc3VsdChUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVy
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb21lX2ZpbGUuY2MiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZXNzYWdlLkdldFN0cmluZygpLmNfc3RyKCkpOwotCi0gIEVYUEVDVF9FUShUZXN0UGFydFJl
c3VsdDo6a05vbkZhdGFsRmFpbHVyZSwgcmVzdWx0LnR5cGUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgi
c29tZV9maWxlLmNjIiwgcmVzdWx0LmZpbGVfbmFtZSgpKTsKLSAgRVhQRUNUX0VRKDQyLCByZXN1
bHQubGluZV9udW1iZXIoKSk7Ci0gIEVYUEVDVF9TVFJFUShtZXNzYWdlLkdldFN0cmluZygpLmNf
c3RyKCksIHJlc3VsdC5tZXNzYWdlKCkpOwotICBFWFBFQ1RfU1RSRVEoInNvbWV0aGluZyBpcyB0
ZXJyaWJseSB3cm9uZyIsIHJlc3VsdC5zdW1tYXJ5KCkpOwotfQotCi1URVNUX0YoVGVzdFBhcnRS
ZXN1bHRUZXN0LCBSZXN1bHRBY2Nlc3NvcnNXb3JrKSB7Ci0gIGNvbnN0IFRlc3RQYXJ0UmVzdWx0
IHN1Y2Nlc3MoVGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJmaWxlLmNjIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSIpOwotICBFWFBFQ1RfVFJV
RShzdWNjZXNzLnBhc3NlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MuZmFpbGVkKCkpOwot
ICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcy5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKLSAgRVhQRUNUX0ZB
TFNFKHN1Y2Nlc3MuZmF0YWxseV9mYWlsZWQoKSk7Ci0KLSAgY29uc3QgVGVzdFBhcnRSZXN1bHQg
bm9uZmF0YWxfZmFpbHVyZShUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5jYyIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UiKTsKLSAgRVhQRUNUX0ZBTFNFKG5vbmZhdGFsX2Zh
aWx1cmUucGFzc2VkKCkpOwotICBFWFBFQ1RfVFJVRShub25mYXRhbF9mYWlsdXJlLmZhaWxlZCgp
KTsKLSAgRVhQRUNUX1RSVUUobm9uZmF0YWxfZmFpbHVyZS5ub25mYXRhbGx5X2ZhaWxlZCgpKTsK
LSAgRVhQRUNUX0ZBTFNFKG5vbmZhdGFsX2ZhaWx1cmUuZmF0YWxseV9mYWlsZWQoKSk7Ci0KLSAg
Y29uc3QgVGVzdFBhcnRSZXN1bHQgZmF0YWxfZmFpbHVyZShUZXN0UGFydFJlc3VsdDo6a0ZhdGFs
RmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5jYyIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UiKTsKLSAgRVhQRUNUX0ZBTFNFKGZhdGFs
X2ZhaWx1cmUucGFzc2VkKCkpOwotICBFWFBFQ1RfVFJVRShmYXRhbF9mYWlsdXJlLmZhaWxlZCgp
KTsKLSAgRVhQRUNUX0ZBTFNFKGZhdGFsX2ZhaWx1cmUubm9uZmF0YWxseV9mYWlsZWQoKSk7Ci0g
IEVYUEVDVF9UUlVFKGZhdGFsX2ZhaWx1cmUuZmF0YWxseV9mYWlsZWQoKSk7Ci19Ci0KLS8vIFRl
c3RzIFRlc3RQYXJ0UmVzdWx0Ojp0eXBlKCkuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCB0
eXBlKSB7Ci0gIEVYUEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a1N1Y2Nlc3MsIHIxXy50eXBlKCkp
OwotICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsIHIyXy50eXBl
KCkpOwotICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsIHIzXy50eXBl
KCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6ZmlsZV9uYW1lKCkuCi1URVNUX0Yo
VGVzdFBhcnRSZXN1bHRUZXN0LCBmaWxlX25hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28vYmFy
LmNjIiwgcjFfLmZpbGVfbmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKE5VTEwsIHIzXy5maWxlX25h
bWUoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpsaW5lX251bWJlcigpLgotVEVT
VF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgbGluZV9udW1iZXIpIHsKLSAgRVhQRUNUX0VRKDEwLCBy
MV8ubGluZV9udW1iZXIoKSk7Ci0gIEVYUEVDVF9FUSgtMSwgcjJfLmxpbmVfbnVtYmVyKCkpOwot
fQotCi0vLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6bWVzc2FnZSgpLgotVEVTVF9GKFRlc3RQYXJ0
UmVzdWx0VGVzdCwgbWVzc2FnZSkgewotICBFWFBFQ1RfU1RSRVEoIlN1Y2Nlc3MhIiwgcjFfLm1l
c3NhZ2UoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpwYXNzZWQoKS4KLVRFU1Rf
RihUZXN0UGFydFJlc3VsdFRlc3QsIFBhc3NlZCkgewotICBFWFBFQ1RfVFJVRShyMV8ucGFzc2Vk
KCkpOwotICBFWFBFQ1RfRkFMU0UocjJfLnBhc3NlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKHIzXy5w
YXNzZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpmYWlsZWQoKS4KLVRFU1Rf
RihUZXN0UGFydFJlc3VsdFRlc3QsIEZhaWxlZCkgewotICBFWFBFQ1RfRkFMU0UocjFfLmZhaWxl
ZCgpKTsKLSAgRVhQRUNUX1RSVUUocjJfLmZhaWxlZCgpKTsKLSAgRVhQRUNUX1RSVUUocjNfLmZh
aWxlZCgpKTsKLX0KLQotLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6OmZhdGFsbHlfZmFpbGVkKCku
Ci1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBGYXRhbGx5RmFpbGVkKSB7Ci0gIEVYUEVDVF9G
QUxTRShyMV8uZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShyMl8uZmF0YWxseV9m
YWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHIzXy5mYXRhbGx5X2ZhaWxlZCgpKTsKLX0KLQotLy8g
VGVzdHMgVGVzdFBhcnRSZXN1bHQ6Om5vbmZhdGFsbHlfZmFpbGVkKCkuCi1URVNUX0YoVGVzdFBh
cnRSZXN1bHRUZXN0LCBOb25mYXRhbGx5RmFpbGVkKSB7Ci0gIEVYUEVDVF9GQUxTRShyMV8ubm9u
ZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHIyXy5ub25mYXRhbGx5X2ZhaWxlZCgp
KTsKLSAgRVhQRUNUX0ZBTFNFKHIzXy5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKLX0KLQotLy8gVGVz
dHMgdGhlIFRlc3RQYXJ0UmVzdWx0QXJyYXkgY2xhc3MuCi0KLWNsYXNzIFRlc3RQYXJ0UmVzdWx0
QXJyYXlUZXN0IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgVGVzdFBhcnRSZXN1bHRB
cnJheVRlc3QoKQotICAgICAgOiByMV8oVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUs
ICJmb28vYmFyLmNjIiwgLTEsICJGYWlsdXJlIDEiKSwKLSAgICAgICAgcjJfKFRlc3RQYXJ0UmVz
dWx0OjprRmF0YWxGYWlsdXJlLCAiZm9vL2Jhci5jYyIsIC0xLCAiRmFpbHVyZSAyIikge30KLQot
ICBjb25zdCBUZXN0UGFydFJlc3VsdCByMV8sIHIyXzsKLX07Ci0KLS8vIFRlc3RzIHRoYXQgVGVz
dFBhcnRSZXN1bHRBcnJheSBpbml0aWFsbHkgaGFzIHNpemUgMC4KLVRFU1RfRihUZXN0UGFydFJl
c3VsdEFycmF5VGVzdCwgSW5pdGlhbFNpemVJc1plcm8pIHsKLSAgVGVzdFBhcnRSZXN1bHRBcnJh
eSByZXN1bHRzOwotICBFWFBFQ1RfRVEoMCwgcmVzdWx0cy5zaXplKCkpOwotfQotCi0vLyBUZXN0
cyB0aGF0IFRlc3RQYXJ0UmVzdWx0QXJyYXkgY29udGFpbnMgdGhlIGdpdmVuIFRlc3RQYXJ0UmVz
dWx0Ci0vLyBhZnRlciBvbmUgQXBwZW5kKCkgb3BlcmF0aW9uLgotVEVTVF9GKFRlc3RQYXJ0UmVz
dWx0QXJyYXlUZXN0LCBDb250YWluc0dpdmVuUmVzdWx0QWZ0ZXJBcHBlbmQpIHsKLSAgVGVzdFBh
cnRSZXN1bHRBcnJheSByZXN1bHRzOwotICByZXN1bHRzLkFwcGVuZChyMV8pOwotICBFWFBFQ1Rf
RVEoMSwgcmVzdWx0cy5zaXplKCkpOwotICBFWFBFQ1RfU1RSRVEoIkZhaWx1cmUgMSIsIHJlc3Vs
dHMuR2V0VGVzdFBhcnRSZXN1bHQoMCkubWVzc2FnZSgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBU
ZXN0UGFydFJlc3VsdEFycmF5IGNvbnRhaW5zIHRoZSBnaXZlbiBUZXN0UGFydFJlc3VsdHMKLS8v
IGFmdGVyIHR3byBBcHBlbmQoKSBvcGVyYXRpb25zLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0QXJy
YXlUZXN0LCBDb250YWluc0dpdmVuUmVzdWx0c0FmdGVyVHdvQXBwZW5kcykgewotICBUZXN0UGFy
dFJlc3VsdEFycmF5IHJlc3VsdHM7Ci0gIHJlc3VsdHMuQXBwZW5kKHIxXyk7Ci0gIHJlc3VsdHMu
QXBwZW5kKHIyXyk7Ci0gIEVYUEVDVF9FUSgyLCByZXN1bHRzLnNpemUoKSk7Ci0gIEVYUEVDVF9T
VFJFUSgiRmFpbHVyZSAxIiwgcmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgwKS5tZXNzYWdlKCkp
OwotICBFWFBFQ1RfU1RSRVEoIkZhaWx1cmUgMiIsIHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQo
MSkubWVzc2FnZSgpKTsKLX0KLQotdHlwZWRlZiBUZXN0UGFydFJlc3VsdEFycmF5VGVzdCBUZXN0
UGFydFJlc3VsdEFycmF5RGVhdGhUZXN0OwotCi0vLyBUZXN0cyB0aGF0IHRoZSBwcm9ncmFtIGRp
ZXMgd2hlbiBHZXRUZXN0UGFydFJlc3VsdCgpIGlzIGNhbGxlZCB3aXRoCi0vLyBhbiBpbnZhbGlk
IGluZGV4LgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0QXJyYXlEZWF0aFRlc3QsIERpZXNXaGVuSW5k
ZXhJc091dE9mQm91bmQpIHsKLSAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOwotICByZXN1
bHRzLkFwcGVuZChyMV8pOwotCi0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQocmVzdWx0cy5H
ZXRUZXN0UGFydFJlc3VsdCgtMSksICIiKTsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChy
ZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDEpLCAiIik7Ci19Ci0KLS8vIFRPRE8obWhldWxlQGdv
b2dsZS5jb20pOiBBZGQgYSB0ZXN0IGZvciB0aGUgY2xhc3MgSGFzTmV3RmF0YWxGYWlsdXJlSGVs
cGVyLgotCi19ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3QtdHVwbGVfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3QtdHVwbGVfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTMy
ZjcwYjNkNGU5MDcwZjQ1OTY4NjI1YjNmZjk3YzM5ODQ3NTdkNy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0LXR1cGxlX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwzMjAgKzAsMCBAQAotLy8g
Q29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8K
LS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0
cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0v
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFs
L2d0ZXN0LXR1cGxlLmg+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgotCi1uYW1lc3BhY2UgewotCi11c2luZyA6OnN0ZDo6dHIxOjpnZXQ7Ci11c2luZyA6OnN0
ZDo6dHIxOjptYWtlX3R1cGxlOwotdXNpbmcgOjpzdGQ6OnRyMTo6dHVwbGU7Ci11c2luZyA6OnN0
ZDo6dHIxOjp0dXBsZV9lbGVtZW50OwotdXNpbmcgOjpzdGQ6OnRyMTo6dHVwbGVfc2l6ZTsKLXVz
aW5nIDo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxOwotCi0vLyBUZXN0cyB0aGF0IHR1cGxl
X2VsZW1lbnQ8SywgdHVwbGU8VDAsIFQxLCAuLi4sIFROPiA+Ojp0eXBlIHJldHVybnMgVEsuCi1U
RVNUKHR1cGxlX2VsZW1lbnRfVGVzdCwgUmV0dXJuc0VsZW1lbnRUeXBlKSB7Ci0gIFN0YXRpY0Fz
c2VydFR5cGVFcTxpbnQsIHR1cGxlX2VsZW1lbnQ8MCwgdHVwbGU8aW50LCBjaGFyPiA+Ojp0eXBl
PigpOwotICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50JiwgdHVwbGVfZWxlbWVudDwxLCB0dXBsZTxk
b3VibGUsIGludCY+ID46OnR5cGU+KCk7Ci0gIFN0YXRpY0Fzc2VydFR5cGVFcTxib29sLCB0dXBs
ZV9lbGVtZW50PDIsIHR1cGxlPGRvdWJsZSwgaW50LCBib29sPiA+Ojp0eXBlPigpOwotfQotCi0v
LyBUZXN0cyB0aGF0IHR1cGxlX3NpemU8VD46OnZhbHVlIGdpdmVzIHRoZSBudW1iZXIgb2YgZmll
bGRzIGluIHR1cGxlCi0vLyB0eXBlIFQuCi1URVNUKHR1cGxlX3NpemVfVGVzdCwgUmV0dXJuc051
bWJlck9mRmllbGRzKSB7Ci0gIEVYUEVDVF9FUSgwLCArdHVwbGVfc2l6ZTx0dXBsZTw+ID46OnZh
bHVlKTsKLSAgRVhQRUNUX0VRKDEsICt0dXBsZV9zaXplPHR1cGxlPHZvaWQqPiA+Ojp2YWx1ZSk7
Ci0gIEVYUEVDVF9FUSgxLCArdHVwbGVfc2l6ZTx0dXBsZTxjaGFyPiA+Ojp2YWx1ZSk7Ci0gIEVY
UEVDVF9FUSgxLCArKHR1cGxlX3NpemU8dHVwbGU8dHVwbGU8aW50LCBkb3VibGU+ID4gPjo6dmFs
dWUpKTsKLSAgRVhQRUNUX0VRKDIsICsodHVwbGVfc2l6ZTx0dXBsZTxpbnQmLCBjb25zdCBjaGFy
PiA+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfRVEoMywgKyh0dXBsZV9zaXplPHR1cGxlPGNoYXIqLCB2
b2lkLCBjb25zdCBib29sJj4gPjo6dmFsdWUpKTsKLX0KLQotLy8gVGVzdHMgY29tcGFyaW5nIGEg
dHVwbGUgd2l0aCBpdHNlbGYuCi1URVNUKENvbXBhcmlzb25UZXN0LCBDb21wYXJlc1dpdGhTZWxm
KSB7Ci0gIGNvbnN0IHR1cGxlPGludCwgY2hhciwgYm9vbD4gYSg1LCAnYScsIGZhbHNlKTsKLQot
ICBFWFBFQ1RfVFJVRShhID09IGEpOwotICBFWFBFQ1RfRkFMU0UoYSAhPSBhKTsKLX0KLQotLy8g
VGVzdHMgY29tcGFyaW5nIHR3byB0dXBsZXMgd2l0aCB0aGUgc2FtZSB2YWx1ZS4KLVRFU1QoQ29t
cGFyaXNvblRlc3QsIENvbXBhcmVzRXF1YWxUdXBsZXMpIHsKLSAgY29uc3QgdHVwbGU8aW50LCBi
b29sPiBhKDUsIHRydWUpLCBiKDUsIHRydWUpOwotCi0gIEVYUEVDVF9UUlVFKGEgPT0gYik7Ci0g
IEVYUEVDVF9GQUxTRShhICE9IGIpOwotfQotCi0vLyBUZXN0cyBjb21wYXJpbmcgdHdvIGRpZmZl
cmVudCB0dXBsZXMgdGhhdCBoYXZlIG5vIHJlZmVyZW5jZSBmaWVsZHMuCi1URVNUKENvbXBhcmlz
b25UZXN0LCBDb21wYXJlc1VuZXF1YWxUdXBsZXNXaXRob3V0UmVmZXJlbmNlRmllbGRzKSB7Ci0g
IHR5cGVkZWYgdHVwbGU8Y29uc3QgaW50LCBjaGFyPiBGb29UdXBsZTsKLQotICBjb25zdCBGb29U
dXBsZSBhKDAsICd4Jyk7Ci0gIGNvbnN0IEZvb1R1cGxlIGIoMSwgJ2EnKTsKLQotICBFWFBFQ1Rf
VFJVRShhICE9IGIpOwotICBFWFBFQ1RfRkFMU0UoYSA9PSBiKTsKLQotICBjb25zdCBGb29UdXBs
ZSBjKDEsICdiJyk7Ci0KLSAgRVhQRUNUX1RSVUUoYiAhPSBjKTsKLSAgRVhQRUNUX0ZBTFNFKGIg
PT0gYyk7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyB0d28gZGlmZmVyZW50IHR1cGxlcyB0aGF0
IGhhdmUgcmVmZXJlbmNlIGZpZWxkcy4KLVRFU1QoQ29tcGFyaXNvblRlc3QsIENvbXBhcmVzVW5l
cXVhbFR1cGxlc1dpdGhSZWZlcmVuY2VGaWVsZHMpIHsKLSAgdHlwZWRlZiB0dXBsZTxpbnQmLCBj
b25zdCBjaGFyJj4gRm9vVHVwbGU7Ci0KLSAgaW50IGkgPSA1OwotICBjb25zdCBjaGFyIGNoID0g
J2EnOwotICBjb25zdCBGb29UdXBsZSBhKGksIGNoKTsKLQotICBpbnQgaiA9IDY7Ci0gIGNvbnN0
IEZvb1R1cGxlIGIoaiwgY2gpOwotCi0gIEVYUEVDVF9UUlVFKGEgIT0gYik7Ci0gIEVYUEVDVF9G
QUxTRShhID09IGIpOwotCi0gIGogPSA1OwotICBjb25zdCBjaGFyIGNoMiA9ICdiJzsKLSAgY29u
c3QgRm9vVHVwbGUgYyhqLCBjaDIpOwotCi0gIEVYUEVDVF9UUlVFKGIgIT0gYyk7Ci0gIEVYUEVD
VF9GQUxTRShiID09IGMpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgdHVwbGUgZmllbGQgd2l0aCBh
IHJlZmVyZW5jZSB0eXBlIGlzIGFuIGFsaWFzIG9mIHRoZQotLy8gdmFyaWFibGUgaXQncyBzdXBw
b3NlZCB0byByZWZlcmVuY2UuCi1URVNUKFJlZmVyZW5jZUZpZWxkVGVzdCwgSXNBbGlhc09mUmVm
ZXJlbmNlZFZhcmlhYmxlKSB7Ci0gIGludCBuID0gMDsKLSAgdHVwbGU8Ym9vbCwgaW50Jj4gdCh0
cnVlLCBuKTsKLQotICBuID0gMTsKLSAgRVhQRUNUX0VRKG4sIGdldDwxPih0KSkKLSAgICAgIDw8
ICJDaGFuZ2luZyBhIHVuZGVybHlpbmcgdmFyaWFibGUgc2hvdWxkIHVwZGF0ZSB0aGUgcmVmZXJl
bmNlIGZpZWxkLiI7Ci0KLSAgLy8gTWFrZXMgc3VyZSB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBk
b2Vzbid0IGRvIGFueXRoaW5nIGZ1bm55IHdpdGgKLSAgLy8gdGhlICYgb3BlcmF0b3IgZm9yIHRo
ZSByZXR1cm4gdHlwZSBvZiBnZXQ8PigpLgotICBFWFBFQ1RfRVEoJm4sICYoZ2V0PDE+KHQpKSkK
LSAgICAgIDw8ICJUaGUgYWRkcmVzcyBvZiBhIHJlZmVyZW5jZSBmaWVsZCBzaG91bGQgZXF1YWwg
dGhlIGFkZHJlc3Mgb2YgIgotICAgICAgPDwgInRoZSB1bmRlcmx5aW5nIHZhcmlhYmxlLiI7Ci0K
LSAgZ2V0PDE+KHQpID0gMjsKLSAgRVhQRUNUX0VRKDIsIG4pCi0gICAgICA8PCAiQ2hhbmdpbmcg
YSByZWZlcmVuY2UgZmllbGQgc2hvdWxkIHVwZGF0ZSB0aGUgdW5kZXJseWluZyB2YXJpYWJsZS4i
OwotfQotCi0vLyBUZXN0cyB0aGF0IHR1cGxlJ3MgZGVmYXVsdCBjb25zdHJ1Y3RvciBkZWZhdWx0
IGluaXRpYWxpemVzIGVhY2ggZmllbGQuCi0vLyBUaGlzIHRlc3QgbmVlZHMgdG8gY29tcGlsZSB3
aXRob3V0IGdlbmVyYXRpbmcgd2FybmluZ3MuCi1URVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBE
ZWZhdWx0Q29uc3RydWN0b3JEZWZhdWx0SW5pdGlhbGl6ZXNFYWNoRmllbGQpIHsKLSAgLy8gVGhl
IFRSMSByZXBvcnQgcmVxdWlyZXMgdGhhdCB0dXBsZSdzIGRlZmF1bHQgY29uc3RydWN0b3IgZGVm
YXVsdAotICAvLyBpbml0aWFsaXplcyBlYWNoIGZpZWxkLCBldmVuIGlmIGl0J3MgYSBwcmltaXRp
dmUgdHlwZS4gIElmIHRoZQotICAvLyBpbXBsZW1lbnRhdGlvbiBmb3JnZXRzIHRvIGRvIHRoaXMs
IHRoaXMgdGVzdCB3aWxsIGNhdGNoIGl0IGJ5Ci0gIC8vIGdlbmVyYXRpbmcgd2FybmluZ3MgYWJv
dXQgdXNpbmcgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgKGFzc3VtaW5nCi0gIC8vIGEgZGVjZW50
IGNvbXBpbGVyKS4KLQotICB0dXBsZTw+IGVtcHR5OwotCi0gIHR1cGxlPGludD4gYTEsIGIxOwot
ICBiMSA9IGExOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDA+KGIxKSk7Ci0KLSAgdHVwbGU8aW50LCBk
b3VibGU+IGEyLCBiMjsKLSAgYjIgPSBhMjsKLSAgRVhQRUNUX0VRKDAsIGdldDwwPihiMikpOwot
ICBFWFBFQ1RfRVEoMC4wLCBnZXQ8MT4oYjIpKTsKLQotICB0dXBsZTxkb3VibGUsIGNoYXIsIGJv
b2wqPiBhMywgYjM7Ci0gIGIzID0gYTM7Ci0gIEVYUEVDVF9FUSgwLjAsIGdldDwwPihiMykpOwot
ICBFWFBFQ1RfRVEoJ1wwJywgZ2V0PDE+KGIzKSk7Ci0gIEVYUEVDVF9UUlVFKGdldDwyPihiMykg
PT0gTlVMTCk7Ci0KLSAgdHVwbGU8aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50PiBhMTAsIGIxMDsKLSAgYjEwID0gYTEwOwotICBFWFBFQ1RfRVEoMCwgZ2V0
PDA+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDE+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwg
Z2V0PDI+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDM+KGIxMCkpOwotICBFWFBFQ1RfRVEo
MCwgZ2V0PDQ+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDU+KGIxMCkpOwotICBFWFBFQ1Rf
RVEoMCwgZ2V0PDY+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDc+KGIxMCkpOwotICBFWFBF
Q1RfRVEoMCwgZ2V0PDg+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDk+KGIxMCkpOwotfQot
Ci0vLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSB0dXBsZSBmcm9tIGl0cyBmaWVsZHMuCi1URVNUKFR1
cGxlQ29uc3RydWN0b3JUZXN0LCBDb25zdHJ1Y3RzRnJvbUZpZWxkcykgewotICBpbnQgbiA9IDE7
Ci0gIC8vIFJlZmVyZW5jZSBmaWVsZC4KLSAgdHVwbGU8aW50Jj4gYShuKTsKLSAgRVhQRUNUX0VR
KCZuLCAmKGdldDwwPihhKSkpOwotCi0gIC8vIE5vbi1yZWZlcmVuY2UgZmllbGRzLgotICB0dXBs
ZTxpbnQsIGNoYXI+IGIoNSwgJ2EnKTsKLSAgRVhQRUNUX0VRKDUsIGdldDwwPihiKSk7Ci0gIEVY
UEVDVF9FUSgnYScsIGdldDwxPihiKSk7Ci0KLSAgLy8gQ29uc3QgcmVmZXJlbmNlIGZpZWxkLgot
ICBjb25zdCBpbnQgbSA9IDI7Ci0gIHR1cGxlPGJvb2wsIGNvbnN0IGludCY+IGModHJ1ZSwgbSk7
Ci0gIEVYUEVDVF9UUlVFKGdldDwwPihjKSk7Ci0gIEVYUEVDVF9FUSgmbSwgJihnZXQ8MT4oYykp
KTsKLX0KLQotLy8gVGVzdHMgdHVwbGUncyBjb3B5IGNvbnN0cnVjdG9yLgotVEVTVChUdXBsZUNv
bnN0cnVjdG9yVGVzdCwgQ29weUNvbnN0cnVjdG9yKSB7Ci0gIHR1cGxlPGRvdWJsZSwgYm9vbD4g
YSgwLjAsIHRydWUpOwotICB0dXBsZTxkb3VibGUsIGJvb2w+IGIoYSk7Ci0KLSAgRVhQRUNUX0RP
VUJMRV9FUSgwLjAsIGdldDwwPihiKSk7Ci0gIEVYUEVDVF9UUlVFKGdldDwxPihiKSk7Ci19Ci0K
LS8vIFRlc3RzIGNvbnN0cnVjdGluZyBhIHR1cGxlIGZyb20gYW5vdGhlciB0dXBsZSB0aGF0IGhh
cyBhIGNvbXBhdGlibGUKLS8vIGJ1dCBkaWZmZXJlbnQgdHlwZS4KLVRFU1QoVHVwbGVDb25zdHJ1
Y3RvclRlc3QsIENvbnN0cnVjdHNGcm9tRGlmZmVyZW50VHVwbGVUeXBlKSB7Ci0gIHR1cGxlPGlu
dCwgaW50LCBjaGFyPiBhKDAsIDEsICdhJyk7Ci0gIHR1cGxlPGRvdWJsZSwgbG9uZywgaW50PiBi
KGEpOwotCi0gIEVYUEVDVF9ET1VCTEVfRVEoMC4wLCBnZXQ8MD4oYikpOwotICBFWFBFQ1RfRVEo
MSwgZ2V0PDE+KGIpKTsKLSAgRVhQRUNUX0VRKCdhJywgZ2V0PDI+KGIpKTsKLX0KLQotLy8gVGVz
dHMgY29uc3RydWN0aW5nIGEgMi10dXBsZSBmcm9tIGFuIHN0ZDo6cGFpci4KLVRFU1QoVHVwbGVD
b25zdHJ1Y3RvclRlc3QsIENvbnN0cnVjdHNGcm9tUGFpcikgewotICA6OnN0ZDo6cGFpcjxpbnQs
IGNoYXI+IGEoMSwgJ2EnKTsKLSAgdHVwbGU8aW50LCBjaGFyPiBiKGEpOwotICB0dXBsZTxpbnQs
IGNvbnN0IGNoYXImPiBjKGEpOwotfQotCi0vLyBUZXN0cyBhc3NpZ25pbmcgYSB0dXBsZSB0byBh
bm90aGVyIHR1cGxlIHdpdGggdGhlIHNhbWUgdHlwZS4KLVRFU1QoVHVwbGVBc3NpZ25tZW50VGVz
dCwgQXNzaWduc1RvU2FtZVR1cGxlVHlwZSkgewotICBjb25zdCB0dXBsZTxpbnQsIGxvbmc+IGEo
NSwgN0wpOwotICB0dXBsZTxpbnQsIGxvbmc+IGI7Ci0gIGIgPSBhOwotICBFWFBFQ1RfRVEoNSwg
Z2V0PDA+KGIpKTsKLSAgRVhQRUNUX0VRKDdMLCBnZXQ8MT4oYikpOwotfQotCi0vLyBUZXN0cyBh
c3NpZ25pbmcgYSB0dXBsZSB0byBhbm90aGVyIHR1cGxlIHdpdGggYSBkaWZmZXJlbnQgYnV0Ci0v
LyBjb21wYXRpYmxlIHR5cGUuCi1URVNUKFR1cGxlQXNzaWdubWVudFRlc3QsIEFzc2lnbnNUb0Rp
ZmZlcmVudFR1cGxlVHlwZSkgewotICBjb25zdCB0dXBsZTxpbnQsIGxvbmcsIGJvb2w+IGEoMSwg
N0wsIHRydWUpOwotICB0dXBsZTxsb25nLCBpbnQsIGJvb2w+IGI7Ci0gIGIgPSBhOwotICBFWFBF
Q1RfRVEoMUwsIGdldDwwPihiKSk7Ci0gIEVYUEVDVF9FUSg3LCBnZXQ8MT4oYikpOwotICBFWFBF
Q1RfVFJVRShnZXQ8Mj4oYikpOwotfQotCi0vLyBUZXN0cyBhc3NpZ25pbmcgYW4gc3RkOjpwYWly
IHRvIGEgMi10dXBsZS4KLVRFU1QoVHVwbGVBc3NpZ25tZW50VGVzdCwgQXNzaWduc0Zyb21QYWly
KSB7Ci0gIGNvbnN0IDo6c3RkOjpwYWlyPGludCwgYm9vbD4gYSg1LCB0cnVlKTsKLSAgdHVwbGU8
aW50LCBib29sPiBiOwotICBiID0gYTsKLSAgRVhQRUNUX0VRKDUsIGdldDwwPihiKSk7Ci0gIEVY
UEVDVF9UUlVFKGdldDwxPihiKSk7Ci0KLSAgdHVwbGU8bG9uZywgYm9vbD4gYzsKLSAgYyA9IGE7
Ci0gIEVYUEVDVF9FUSg1TCwgZ2V0PDA+KGMpKTsKLSAgRVhQRUNUX1RSVUUoZ2V0PDE+KGMpKTsK
LX0KLQotLy8gQSBmaXh0dXJlIGZvciB0ZXN0aW5nIGJpZyB0dXBsZXMuCi1jbGFzcyBCaWdUdXBs
ZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB0eXBlZGVmIHR1
cGxlPGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludD4gQmln
VHVwbGU7Ci0KLSAgQmlnVHVwbGVUZXN0KCkgOgotICAgICAgYV8oMSwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMiksCi0gICAgICBiXygxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzKSB7fQot
Ci0gIEJpZ1R1cGxlIGFfLCBiXzsKLX07Ci0KLS8vIFRlc3RzIGNvbnN0cnVjdGluZyBiaWcgdHVw
bGVzLgotVEVTVF9GKEJpZ1R1cGxlVGVzdCwgQ29uc3RydWN0aW9uKSB7Ci0gIEJpZ1R1cGxlIGE7
Ci0gIEJpZ1R1cGxlIGIoYl8pOwotfQotCi0vLyBUZXN0cyB0aGF0IGdldDxOPih0KSByZXR1cm5z
IHRoZSBOLXRoICgwLWJhc2VkKSBmaWVsZCBvZiB0dXBsZSB0LgotVEVTVF9GKEJpZ1R1cGxlVGVz
dCwgZ2V0KSB7Ci0gIEVYUEVDVF9FUSgxLCBnZXQ8MD4oYV8pKTsKLSAgRVhQRUNUX0VRKDIsIGdl
dDw5PihhXykpOwotCi0gIC8vIFRlc3RzIHRoYXQgZ2V0KCkgd29ya3Mgb24gYSBjb25zdCB0dXBs
ZSB0b28uCi0gIGNvbnN0IEJpZ1R1cGxlIGEoYV8pOwotICBFWFBFQ1RfRVEoMSwgZ2V0PDA+KGEp
KTsKLSAgRVhQRUNUX0VRKDIsIGdldDw5PihhKSk7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyBi
aWcgdHVwbGVzLgotVEVTVF9GKEJpZ1R1cGxlVGVzdCwgQ29tcGFyaXNvbnMpIHsKLSAgRVhQRUNU
X1RSVUUoYV8gPT0gYV8pOwotICBFWFBFQ1RfRkFMU0UoYV8gIT0gYV8pOwotCi0gIEVYUEVDVF9U
UlVFKGFfICE9IGJfKTsKLSAgRVhQRUNUX0ZBTFNFKGFfID09IGJfKTsKLX0KLQotVEVTVChNYWtl
VHVwbGVUZXN0LCBXb3Jrc0ZvclNjYWxhclR5cGVzKSB7Ci0gIHR1cGxlPGJvb2wsIGludD4gYTsK
LSAgYSA9IG1ha2VfdHVwbGUodHJ1ZSwgNSk7Ci0gIEVYUEVDVF9UUlVFKGdldDwwPihhKSk7Ci0g
IEVYUEVDVF9FUSg1LCBnZXQ8MT4oYSkpOwotCi0gIHR1cGxlPGNoYXIsIGludCwgbG9uZz4gYjsK
LSAgYiA9IG1ha2VfdHVwbGUoJ2EnLCAnYicsIDUpOwotICBFWFBFQ1RfRVEoJ2EnLCBnZXQ8MD4o
YikpOwotICBFWFBFQ1RfRVEoJ2InLCBnZXQ8MT4oYikpOwotICBFWFBFQ1RfRVEoNSwgZ2V0PDI+
KGIpKTsKLX0KLQotVEVTVChNYWtlVHVwbGVUZXN0LCBXb3Jrc0ZvclBvaW50ZXJzKSB7Ci0gIGlu
dCBhW10gPSB7IDEsIDIsIDMsIDQgfTsKLSAgY29uc3QgY2hhciogY29uc3Qgc3RyID0gImhpIjsK
LSAgaW50KiBjb25zdCBwID0gYTsKLQotICB0dXBsZTxjb25zdCBjaGFyKiwgaW50Kj4gdDsKLSAg
dCA9IG1ha2VfdHVwbGUoc3RyLCBwKTsKLSAgRVhQRUNUX0VRKHN0ciwgZ2V0PDA+KHQpKTsKLSAg
RVhQRUNUX0VRKHAsIGdldDwxPih0KSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0Ml90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0Ml90ZXN0LmNj
CmluZGV4IDc5YThhODdkY2ZkYmRlNTNjMWUwZDhjNmQxMWE5ODY5MjJiMDJmZjguLmVkOTY0MjFj
NjdjYThhMmZiMzhmM2Q4ODk2MDIzMWVmMjJiZWE2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MKQEAgLTI2LDEz
ICsyNiwxMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAjaW5j
bHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAidGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuaCIK
LSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKICNp
ZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MKaW5kZXggZjJjMzk3MjMxMDE3Nzll
NzcxODQ3ZDU5MmQ5ZmFiYjU2ZjNiNDVjNi4uNGUzOTg2OTdkNmQ4MDliMTJlOGM5NWU2NzQyMGMy
YzU2OGRkYTZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dC10eXBlZC10ZXN0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MKQEAgLTI2LDE0ICsyNiwxOCBAQAogLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdv
b2dsZS5jb20gKFpoYW55b25nIFdhbikKKworCisjaW5jbHVkZSAidGVzdC9ndGVzdC10eXBlZC10
ZXN0X3Rlc3QuaCIKIAogI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNs
dWRlICJ0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oIgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lmIF9NU0NfVkVSCitHVEVTVF9ESVNB
QkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MTI3IC8qIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMg
Y29uc3RhbnQgKi8pCisjZW5kaWYgIC8vICBfTVNDX1ZFUgogCiB1c2luZyB0ZXN0aW5nOjpUZXN0
OwogCkBAIC0xNjUsNiArMTY5LDQwIEBAIFRZUEVEX1RFU1QoTnVtZXJpY1Rlc3QsIERlZmF1bHRJ
c1plcm8pIHsKIAogfSAgLy8gbmFtZXNwYWNlIGxpYnJhcnkxCiAKKy8vIFRlc3RzIHRoYXQgY3Vz
dG9tIG5hbWVzIHdvcmsuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVkVGVzdFdp
dGhOYW1lcyA6IHB1YmxpYyBUZXN0IHt9OworCitjbGFzcyBUeXBlZFRlc3ROYW1lcyB7CisgcHVi
bGljOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldE5h
bWUoaW50IGkpIHsKKyAgICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxULCBjaGFyPjo6
dmFsdWUpIHsKKyAgICAgIHJldHVybiBzdGQ6OnN0cmluZygiY2hhciIpICsgOjp0ZXN0aW5nOjpQ
cmludFRvU3RyaW5nKGkpOworICAgIH0KKyAgICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2Ft
ZTxULCBpbnQ+Ojp2YWx1ZSkgeworICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCJpbnQiKSArIDo6
dGVzdGluZzo6UHJpbnRUb1N0cmluZyhpKTsKKyAgICB9CisgIH0KK307CisKK1RZUEVEX1RFU1Rf
Q0FTRShUeXBlZFRlc3RXaXRoTmFtZXMsIFR3b1R5cGVzLCBUeXBlZFRlc3ROYW1lcyk7CisKK1RZ
UEVEX1RFU1QoVHlwZWRUZXN0V2l0aE5hbWVzLCBUZXN0Q2FzZU5hbWUpIHsKKyAgaWYgKHRlc3Rp
bmc6OmludGVybmFsOjpJc1NhbWU8VHlwZVBhcmFtLCBjaGFyPjo6dmFsdWUpIHsKKyAgICBFWFBF
Q1RfU1RSRVEoOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKQorICAgICAgICAgICAg
ICAgICAgICAgLT5jdXJyZW50X3Rlc3RfaW5mbygpCisgICAgICAgICAgICAgICAgICAgICAtPnRl
c3RfY2FzZV9uYW1lKCksCisgICAgICAgICAgICAgICAgICJUeXBlZFRlc3RXaXRoTmFtZXMvY2hh
cjAiKTsKKyAgfQorICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxUeXBlUGFyYW0sIGlu
dD46OnZhbHVlKSB7CisgICAgRVhQRUNUX1NUUkVRKDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldElu
c3RhbmNlKCkKKyAgICAgICAgICAgICAgICAgICAgIC0+Y3VycmVudF90ZXN0X2luZm8oKQorICAg
ICAgICAgICAgICAgICAgICAgLT50ZXN0X2Nhc2VfbmFtZSgpLAorICAgICAgICAgICAgICAgICAi
VHlwZWRUZXN0V2l0aE5hbWVzL2ludDEiKTsKKyAgfQorfQorCiAjZW5kaWYgIC8vIEdURVNUX0hB
U19UWVBFRF9URVNUCiAKIC8vIFRoaXMgI2lmZGVmIGJsb2NrIHRlc3RzIHR5cGUtcGFyYW1ldGVy
aXplZCB0ZXN0cy4KQEAgLTI2NSw2ICszMDMsNDYgQEAgUkVHSVNURVJfVFlQRURfVEVTVF9DQVNF
X1AoRGVyaXZlZFRlc3QsCiB0eXBlZGVmIFR5cGVzPHNob3J0LCBsb25nPiBNeVR3b1R5cGVzOwog
SU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIERlcml2ZWRUZXN0LCBNeVR3b1R5cGVz
KTsKIAorLy8gVGVzdHMgdGhhdCBjdXN0b20gbmFtZXMgd29yayB3aXRoIHR5cGUgcGFyYW1ldHJp
emVkIHRlc3RzLiBXZSByZXVzZSB0aGUKKy8vIFR3b1R5cGVzIGZyb20gYWJvdmUgaGVyZS4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRoTmFtZXMg
OiBwdWJsaWMgVGVzdCB7fTsKKworVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtZXRyaXplZFRl
c3RXaXRoTmFtZXMpOworCitUWVBFRF9URVNUX1AoVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRoTmFt
ZXMsIFRlc3RDYXNlTmFtZSkgeworICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxUeXBl
UGFyYW0sIGNoYXI+Ojp2YWx1ZSkgeworICAgIEVYUEVDVF9TVFJFUSg6OnRlc3Rpbmc6OlVuaXRU
ZXN0OjpHZXRJbnN0YW5jZSgpCisgICAgICAgICAgICAgICAgICAgICAtPmN1cnJlbnRfdGVzdF9p
bmZvKCkKKyAgICAgICAgICAgICAgICAgICAgIC0+dGVzdF9jYXNlX25hbWUoKSwKKyAgICAgICAg
ICAgICAgICAgIkN1c3RvbU5hbWUvVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRoTmFtZXMvcGFyQ2hh
cjAiKTsKKyAgfQorICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxUeXBlUGFyYW0sIGlu
dD46OnZhbHVlKSB7CisgICAgRVhQRUNUX1NUUkVRKDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldElu
c3RhbmNlKCkKKyAgICAgICAgICAgICAgICAgICAgIC0+Y3VycmVudF90ZXN0X2luZm8oKQorICAg
ICAgICAgICAgICAgICAgICAgLT50ZXN0X2Nhc2VfbmFtZSgpLAorICAgICAgICAgICAgICAgICAi
Q3VzdG9tTmFtZS9UeXBlUGFyYW1ldHJpemVkVGVzdFdpdGhOYW1lcy9wYXJJbnQxIik7CisgIH0K
K30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRo
TmFtZXMsIFRlc3RDYXNlTmFtZSk7CisKK2NsYXNzIFR5cGVQYXJhbWV0cml6ZWRUZXN0TmFtZXMg
eworIHB1YmxpYzoKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRpYyBzdGQ6OnN0cmlu
ZyBHZXROYW1lKGludCBpKSB7CisgICAgaWYgKHRlc3Rpbmc6OmludGVybmFsOjpJc1NhbWU8VCwg
Y2hhcj46OnZhbHVlKSB7CisgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoInBhckNoYXIiKSArIDo6
dGVzdGluZzo6UHJpbnRUb1N0cmluZyhpKTsKKyAgICB9CisgICAgaWYgKHRlc3Rpbmc6OmludGVy
bmFsOjpJc1NhbWU8VCwgaW50Pjo6dmFsdWUpIHsKKyAgICAgIHJldHVybiBzdGQ6OnN0cmluZygi
cGFySW50IikgKyA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoaSk7CisgICAgfQorICB9Cit9Owor
CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChDdXN0b21OYW1lLCBUeXBlUGFyYW1ldHJp
emVkVGVzdFdpdGhOYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR3b1R5cGVz
LCBUeXBlUGFyYW1ldHJpemVkVGVzdE5hbWVzKTsKKwogLy8gVGVzdHMgdGhhdCBtdWx0aXBsZSBU
WVBFRF9URVNUX0NBU0VfUCdzIGNhbiBiZSBkZWZpbmVkIGluIHRoZSBzYW1lCiAvLyB0cmFuc2xh
dGlvbiB1bml0LgogCkBAIC0zNDMsNiArNDIxLDI1IEBAIFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FT
RV9QKE51bWVyaWNUZXN0LAogdHlwZWRlZiBUeXBlczxpbnQsIGRvdWJsZT4gTnVtZXJpY1R5cGVz
OwogSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIE51bWVyaWNUZXN0LCBOdW1lcmlj
VHlwZXMpOwogCitzdGF0aWMgY29uc3QgY2hhciogR2V0VGVzdE5hbWUoKSB7CisgIHJldHVybiB0
ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKS0+bmFt
ZSgpOworfQorLy8gVGVzdCB0aGUgc3RyaXBwaW5nIG9mIHNwYWNlIGZyb20gdGVzdCBuYW1lcwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFRyaW1tZWRUZXN0IDogcHVibGljIFRlc3QgeyB9
OworVFlQRURfVEVTVF9DQVNFX1AoVHJpbW1lZFRlc3QpOworVFlQRURfVEVTVF9QKFRyaW1tZWRU
ZXN0LCBUZXN0MSkgeyBFWFBFQ1RfU1RSRVEoIlRlc3QxIiwgR2V0VGVzdE5hbWUoKSk7IH0KK1RZ
UEVEX1RFU1RfUChUcmltbWVkVGVzdCwgVGVzdDIpIHsgRVhQRUNUX1NUUkVRKCJUZXN0MiIsIEdl
dFRlc3ROYW1lKCkpOyB9CitUWVBFRF9URVNUX1AoVHJpbW1lZFRlc3QsIFRlc3QzKSB7IEVYUEVD
VF9TVFJFUSgiVGVzdDMiLCBHZXRUZXN0TmFtZSgpKTsgfQorVFlQRURfVEVTVF9QKFRyaW1tZWRU
ZXN0LCBUZXN0NCkgeyBFWFBFQ1RfU1RSRVEoIlRlc3Q0IiwgR2V0VGVzdE5hbWUoKSk7IH0KK1RZ
UEVEX1RFU1RfUChUcmltbWVkVGVzdCwgVGVzdDUpIHsgRVhQRUNUX1NUUkVRKCJUZXN0NSIsIEdl
dFRlc3ROYW1lKCkpOyB9CitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUCgKKyAgICBUcmltbWVk
VGVzdCwKKyAgICBUZXN0MSwgVGVzdDIsVGVzdDMgLCBUZXN0NCAsVGVzdDUgKTsgIC8vIE5PTElO
VAordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4gc3RydWN0IE15UGFpciB7fTsK
Ky8vIEJlIHN1cmUgdG8gdHJ5IGEgdHlwZSB3aXRoIGEgY29tbWEgaW4gaXRzIG5hbWUganVzdCBp
biBjYXNlIGl0IG1hdHRlcnMuCit0eXBlZGVmIFR5cGVzPGludCwgZG91YmxlLCBNeVBhaXI8aW50
LCBpbnQ+ID4gVHJpbVR5cGVzOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIFRy
aW1tZWRUZXN0LCBUcmltVHlwZXMpOworCiB9ICAvLyBuYW1lc3BhY2UgbGlicmFyeTIKIAogI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCkBAIC0zNTcsNCArNDU0LDggQEAgSU5TVEFO
VElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIE51bWVyaWNUZXN0LCBOdW1lcmljVHlwZXMpOwog
Ly8gbXVzdCBiZSBkZWZpbmVkKS4gVGhpcyBkdW1teSB0ZXN0IGtlZXBzIGd0ZXN0X21haW4gbGlu
a2VkIGluLgogVEVTVChEdW1teVRlc3QsIFR5cGVkVGVzdHNBcmVOb3RTdXBwb3J0ZWRPblRoaXNQ
bGF0Zm9ybSkge30KIAorI2lmIF9NU0NfVkVSCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19Q
T1BfKCkgIC8vICA0MTI3CisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICBf
TVNDX1ZFUgorCiAjZW5kaWYgIC8vICNpZiAhZGVmaW5lZChHVEVTVF9IQVNfVFlQRURfVEVTVCkg
JiYgIWRlZmluZWQoR1RFU1RfSEFTX1RZUEVEX1RFU1RfUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oCmluZGV4IDQwZGZlYWM2
ZTAxZDk3ZWNmN2ZlYmI4NjVmY2U2Njg0OGJhOGU4ZGIuLjJjY2U2N2M4MjVhNmNhYmRiOWE1NGI5
MTkyOWMwMGM5OTJhMGQ0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuaApAQCAtMjYsMTMgKzI2LDEyIEBACiAvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCiAKICNpZm5kZWYgR1RFU1RfVEVTVF9HVEVT
VF9UWVBFRF9URVNUX1RFU1RfSF8KICNkZWZpbmUgR1RFU1RfVEVTVF9HVEVTVF9UWVBFRF9URVNU
X1RFU1RfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKIAogI2lmIEdURVNUX0hBU19UWVBFRF9URVNUX1AKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2MKaW5kZXgg
N2UwZjhmODA0NWQ3MWMwMTVkMTI5NGZmZWY0Y2E1NDVkZGM1NTFmOS4uZjNlYTAzYTU5NmQwZjk5
YTM5MTI1MjYzMGRjYTEwNjIyOTMxMTJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjCkBAIC0yNSwxNSArMjUs
MTQgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwog
Ly8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCi0vLyBUaGUg
R29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBUaGUgR29vZ2xl
IEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8g
VGhpcyBmaWxlIGNvbnRhaW5zIHRlc3RzIHZlcmlmeWluZyBjb3JyZWN0bmVzcyBvZiBkYXRhIHBy
b3ZpZGVkIHZpYQogLy8gVW5pdFRlc3QncyBwdWJsaWMgbWV0aG9kcy4KIAotI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2luY2x1ZGUgPHN0cmlu
Zy5oPiAgLy8gRm9yIHN0cmNtcC4KICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC01NCw3ICs1Myw3
IEBAIGNsYXNzIFVuaXRUZXN0SGVscGVyIHsKICBwdWJsaWM6CiAgIC8vIFJldHVybnMgdGhlIGFy
cmF5IG9mIHBvaW50ZXJzIHRvIGFsbCB0ZXN0IGNhc2VzIHNvcnRlZCBieSB0aGUgdGVzdCBjYXNl
CiAgIC8vIG5hbWUuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUg
YXJyYXkuCi0gIHN0YXRpYyBUZXN0Q2FzZSBjb25zdCoqIGNvbnN0IEdldFNvcnRlZFRlc3RDYXNl
cygpIHsKKyAgc3RhdGljIFRlc3RDYXNlIGNvbnN0KiogR2V0U29ydGVkVGVzdENhc2VzKCkgewog
ICAgIFVuaXRUZXN0JiB1bml0X3Rlc3QgPSAqVW5pdFRlc3Q6OkdldEluc3RhbmNlKCk7CiAgICAg
VGVzdENhc2UgY29uc3QqKiBjb25zdCB0ZXN0X2Nhc2VzID0KICAgICAgICAgbmV3IGNvbnN0IFRl
c3RDYXNlKlt1bml0X3Rlc3QudG90YWxfdGVzdF9jYXNlX2NvdW50KCldOwpAQCAtODMsNyArODIs
NyBAQCBjbGFzcyBVbml0VGVzdEhlbHBlciB7CiAgIC8vIFJldHVybnMgdGhlIGFycmF5IG9mIHBv
aW50ZXJzIHRvIGFsbCB0ZXN0cyBpbiBhIHBhcnRpY3VsYXIgdGVzdCBjYXNlCiAgIC8vIHNvcnRl
ZCBieSB0aGUgdGVzdCBuYW1lLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRp
bmcgdGhlCiAgIC8vIGFycmF5LgotICBzdGF0aWMgVGVzdEluZm8gY29uc3QqKiBjb25zdCBHZXRT
b3J0ZWRUZXN0cyhjb25zdCBUZXN0Q2FzZSogdGVzdF9jYXNlKSB7CisgIHN0YXRpYyBUZXN0SW5m
byBjb25zdCoqIEdldFNvcnRlZFRlc3RzKGNvbnN0IFRlc3RDYXNlKiB0ZXN0X2Nhc2UpIHsKICAg
ICBUZXN0SW5mbyBjb25zdCoqIGNvbnN0IHRlc3RzID0KICAgICAgICAgbmV3IGNvbnN0IFRlc3RJ
bmZvKlt0ZXN0X2Nhc2UtPnRvdGFsX3Rlc3RfY291bnQoKV07CiAKQEAgLTEwMywxMiArMTAyLDYg
QEAgVFlQRURfVEVTVChUZXN0Q2FzZVdpdGhDb21tZW50VGVzdCwgRHVtbXkpIHt9CiAKIGNvbnN0
IGludCBrVHlwZWRUZXN0Q2FzZXMgPSAxOwogY29uc3QgaW50IGtUeXBlZFRlc3RzID0gMTsKLQot
U3RyaW5nIEdldEV4cGVjdGVkVGVzdENhc2VDb21tZW50KCkgewotICBNZXNzYWdlIGNvbW1lbnQ7
Ci0gIGNvbW1lbnQgPDwgIlR5cGVQYXJhbSA9ICIgPDwgR2V0VHlwZU5hbWU8aW50PigpLmNfc3Ry
KCk7Ci0gIHJldHVybiBjb21tZW50LkdldFN0cmluZygpOwotfQogI2Vsc2UKIGNvbnN0IGludCBr
VHlwZWRUZXN0Q2FzZXMgPSAwOwogY29uc3QgaW50IGtUeXBlZFRlc3RzID0gMDsKQEAgLTE0Mywx
MiArMTM2LDE5IEBAIFRFU1QoQXBpVGVzdCwgVW5pdFRlc3RJbW11dGFibGVBY2Nlc3NvcnNXb3Jr
KSB7CiAgIFJlY29yZFByb3BlcnR5KCJrZXkiLCAidmFsdWUiKTsKIH0KIAorQXNzZXJ0aW9uUmVz
dWx0IElzTnVsbChjb25zdCBjaGFyKiBzdHIpIHsKKyAgaWYgKHN0ciAhPSBOVUxMKSB7CisgICAg
cmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCAiYXJndW1lbnQgaXMgIiA8PCBz
dHI7CisgIH0KKyAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKK30KKwogVEVTVChBcGlUZXN0
LCBUZXN0Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dvcmspIHsKICAgY29uc3QgVGVzdENhc2UqIHRl
c3RfY2FzZSA9IFVuaXRUZXN0SGVscGVyOjpGaW5kVGVzdENhc2UoIkFwaVRlc3QiKTsKICAgQVNT
RVJUX1RSVUUodGVzdF9jYXNlICE9IE5VTEwpOwogCiAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIs
IHRlc3RfY2FzZS0+bmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0X2Nhc2UtPmNvbW1l
bnQoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0X2Nhc2UtPnR5cGVfcGFyYW0oKSkpOwog
ICBFWFBFQ1RfVFJVRSh0ZXN0X2Nhc2UtPnNob3VsZF9ydW4oKSk7CiAgIEVYUEVDVF9FUSgxLCB0
ZXN0X2Nhc2UtPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgIEVYUEVDVF9FUSgzLCB0ZXN0X2Nh
c2UtPnRlc3RfdG9fcnVuX2NvdW50KCkpOwpAQCAtMTU4LDI2ICsxNTgsMjYgQEAgVEVTVChBcGlU
ZXN0LCBUZXN0Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dvcmspIHsKIAogICBFWFBFQ1RfU1RSRVEo
IkRJU0FCTEVEX0R1bW15MSIsIHRlc3RzWzBdLT5uYW1lKCkpOwogICBFWFBFQ1RfU1RSRVEoIkFw
aVRlc3QiLCB0ZXN0c1swXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwg
dGVzdHNbMF0tPmNvbW1lbnQoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMF0tPnRlc3Rf
Y2FzZV9jb21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMF0tPnZhbHVlX3Bh
cmFtKCkpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzBdLT50eXBlX3BhcmFtKCkpKTsK
ICAgRVhQRUNUX0ZBTFNFKHRlc3RzWzBdLT5zaG91bGRfcnVuKCkpOwogCiAgIEVYUEVDVF9TVFJF
USgiVGVzdENhc2VEaXNhYmxlZEFjY2Vzc29yc1dvcmsiLCB0ZXN0c1sxXS0+bmFtZSgpKTsKICAg
RVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbMV0tPnRlc3RfY2FzZV9uYW1lKCkpOwotICBF
WFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzFdLT5jb21tZW50KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIs
IHRlc3RzWzFdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRl
c3RzWzFdLT52YWx1ZV9wYXJhbSgpKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1sxXS0+
dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVDVF9UUlVFKHRlc3RzWzFdLT5zaG91bGRfcnVuKCkpOwog
CiAgIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VJbW11dGFibGVBY2Nlc3NvcnNXb3JrIiwgdGVzdHNb
Ml0tPm5hbWUoKSk7CiAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzJdLT50ZXN0X2Nh
c2VfbmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1syXS0+Y29tbWVudCgpKTsKLSAg
RVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1syXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgIEVYUEVD
VF9UUlVFKElzTnVsbCh0ZXN0c1syXS0+dmFsdWVfcGFyYW0oKSkpOworICBFWFBFQ1RfVFJVRShJ
c051bGwodGVzdHNbMl0tPnR5cGVfcGFyYW0oKSkpOwogICBFWFBFQ1RfVFJVRSh0ZXN0c1syXS0+
c2hvdWxkX3J1bigpKTsKIAogICBFWFBFQ1RfU1RSRVEoIlVuaXRUZXN0SW1tdXRhYmxlQWNjZXNz
b3JzV29yayIsIHRlc3RzWzNdLT5uYW1lKCkpOwogICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0
ZXN0c1szXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbM10t
PmNvbW1lbnQoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbM10tPnRlc3RfY2FzZV9jb21t
ZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbM10tPnZhbHVlX3BhcmFtKCkpKTsK
KyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzNdLT50eXBlX3BhcmFtKCkpKTsKICAgRVhQRUNU
X1RSVUUodGVzdHNbM10tPnNob3VsZF9ydW4oKSk7CiAKICAgZGVsZXRlW10gdGVzdHM7CkBAIC0x
ODgsNyArMTg4LDcgQEAgVEVTVChBcGlUZXN0LCBUZXN0Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dv
cmspIHsKICAgQVNTRVJUX1RSVUUodGVzdF9jYXNlICE9IE5VTEwpOwogCiAgIEVYUEVDVF9TVFJF
USgiVGVzdENhc2VXaXRoQ29tbWVudFRlc3QvMCIsIHRlc3RfY2FzZS0+bmFtZSgpKTsKLSAgRVhQ
RUNUX1NUUkVRKEdldEV4cGVjdGVkVGVzdENhc2VDb21tZW50KCkuY19zdHIoKSwgdGVzdF9jYXNl
LT5jb21tZW50KCkpOworICBFWFBFQ1RfU1RSRVEoR2V0VHlwZU5hbWU8aW50PigpLmNfc3RyKCks
IHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgpKTsKICAgRVhQRUNUX1RSVUUodGVzdF9jYXNlLT5zaG91
bGRfcnVuKCkpOwogICBFWFBFQ1RfRVEoMCwgdGVzdF9jYXNlLT5kaXNhYmxlZF90ZXN0X2NvdW50
KCkpOwogICBFWFBFQ1RfRVEoMSwgdGVzdF9jYXNlLT50ZXN0X3RvX3J1bl9jb3VudCgpKTsKQEAg
LTE5OCw5ICsxOTgsOCBAQCBURVNUKEFwaVRlc3QsIFRlc3RDYXNlSW1tdXRhYmxlQWNjZXNzb3Jz
V29yaykgewogCiAgIEVYUEVDVF9TVFJFUSgiRHVtbXkiLCB0ZXN0c1swXS0+bmFtZSgpKTsKICAg
RVhQRUNUX1NUUkVRKCJUZXN0Q2FzZVdpdGhDb21tZW50VGVzdC8wIiwgdGVzdHNbMF0tPnRlc3Rf
Y2FzZV9uYW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzBdLT5jb21tZW50KCkpOwot
ICBFWFBFQ1RfU1RSRVEoR2V0RXhwZWN0ZWRUZXN0Q2FzZUNvbW1lbnQoKS5jX3N0cigpLAotICAg
ICAgICAgICAgICAgdGVzdHNbMF0tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICBFWFBFQ1RfVFJV
RShJc051bGwodGVzdHNbMF0tPnZhbHVlX3BhcmFtKCkpKTsKKyAgRVhQRUNUX1NUUkVRKEdldFR5
cGVOYW1lPGludD4oKS5jX3N0cigpLCB0ZXN0c1swXS0+dHlwZV9wYXJhbSgpKTsKICAgRVhQRUNU
X1RSVUUodGVzdHNbMF0tPnNob3VsZF9ydW4oKSk7CiAKICAgZGVsZXRlW10gdGVzdHM7CkBAIC0y
MTIsNyArMjExLDcgQEAgVEVTVChBcGlUZXN0LCBUZXN0Q2FzZURpc2FibGVkQWNjZXNzb3JzV29y
aykgewogICBBU1NFUlRfVFJVRSh0ZXN0X2Nhc2UgIT0gTlVMTCk7CiAKICAgRVhQRUNUX1NUUkVR
KCJESVNBQkxFRF9UZXN0IiwgdGVzdF9jYXNlLT5uYW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIs
IHRlc3RfY2FzZS0+Y29tbWVudCgpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfY2FzZS0+
dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVDVF9GQUxTRSh0ZXN0X2Nhc2UtPnNob3VsZF9ydW4oKSk7
CiAgIEVYUEVDVF9FUSgxLCB0ZXN0X2Nhc2UtPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgIEVY
UEVDVF9FUSgwLCB0ZXN0X2Nhc2UtPnRlc3RfdG9fcnVuX2NvdW50KCkpOwpAQCAtMjIxLDggKzIy
MCw4IEBAIFRFU1QoQXBpVGVzdCwgVGVzdENhc2VEaXNhYmxlZEFjY2Vzc29yc1dvcmspIHsKICAg
Y29uc3QgVGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9IHRlc3RfY2FzZS0+R2V0VGVzdEluZm8o
MCk7CiAgIEVYUEVDVF9TVFJFUSgiRHVtbXkyIiwgdGVzdF9pbmZvLT5uYW1lKCkpOwogICBFWFBF
Q1RfU1RSRVEoIkRJU0FCTEVEX1Rlc3QiLCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOwot
ICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RfaW5mby0+Y29tbWVudCgpKTsKLSAgRVhQRUNUX1NUUkVR
KCIiLCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051
bGwodGVzdF9pbmZvLT52YWx1ZV9wYXJhbSgpKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0
X2luZm8tPnR5cGVfcGFyYW0oKSkpOwogICBFWFBFQ1RfRkFMU0UodGVzdF9pbmZvLT5zaG91bGRf
cnVuKCkpOwogfQogCkBAIC0yNDcsNyArMjQ2LDcgQEAgY2xhc3MgRmluYWxTdWNjZXNzQ2hlY2tl
ciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7CiAgICAgY29uc3QgVGVzdENhc2UqKiBjb25zdCB0ZXN0
X2Nhc2VzID0gVW5pdFRlc3RIZWxwZXI6OkdldFNvcnRlZFRlc3RDYXNlcygpOwogCiAgICAgRVhQ
RUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdF9jYXNlc1swXS0+bmFtZSgpKTsKLSAgICBFWFBFQ1Rf
U1RSRVEoIiIsIHRlc3RfY2FzZXNbMF0tPmNvbW1lbnQoKSk7CisgICAgRVhQRUNUX1RSVUUoSXNO
dWxsKHRlc3RfY2FzZXNbMF0tPnR5cGVfcGFyYW0oKSkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3Rf
Y2FzZXNbMF0tPnNob3VsZF9ydW4oKSk7CiAgICAgRVhQRUNUX0VRKDEsIHRlc3RfY2FzZXNbMF0t
PmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgICAgQVNTRVJUX0VRKDQsIHRlc3RfY2FzZXNbMF0t
PnRvdGFsX3Rlc3RfY291bnQoKSk7CkBAIC0yNTcsNyArMjU2LDcgQEAgY2xhc3MgRmluYWxTdWNj
ZXNzQ2hlY2tlciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7CiAgICAgRVhQRUNUX0ZBTFNFKHRlc3Rf
Y2FzZXNbMF0tPkZhaWxlZCgpKTsKIAogICAgIEVYUEVDVF9TVFJFUSgiRElTQUJMRURfVGVzdCIs
IHRlc3RfY2FzZXNbMV0tPm5hbWUoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0X2Nhc2Vz
WzFdLT5jb21tZW50KCkpOworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0X2Nhc2VzWzFdLT50
eXBlX3BhcmFtKCkpKTsKICAgICBFWFBFQ1RfRkFMU0UodGVzdF9jYXNlc1sxXS0+c2hvdWxkX3J1
bigpKTsKICAgICBFWFBFQ1RfRVEoMSwgdGVzdF9jYXNlc1sxXS0+ZGlzYWJsZWRfdGVzdF9jb3Vu
dCgpKTsKICAgICBBU1NFUlRfRVEoMSwgdGVzdF9jYXNlc1sxXS0+dG90YWxfdGVzdF9jb3VudCgp
KTsKQEAgLTI2Niw4ICsyNjUsNyBAQCBjbGFzcyBGaW5hbFN1Y2Nlc3NDaGVja2VyIDogcHVibGlj
IEVudmlyb25tZW50IHsKIAogI2lmIEdURVNUX0hBU19UWVBFRF9URVNUCiAgICAgRVhQRUNUX1NU
UkVRKCJUZXN0Q2FzZVdpdGhDb21tZW50VGVzdC8wIiwgdGVzdF9jYXNlc1syXS0+bmFtZSgpKTsK
LSAgICBFWFBFQ1RfU1RSRVEoR2V0RXhwZWN0ZWRUZXN0Q2FzZUNvbW1lbnQoKS5jX3N0cigpLAot
ICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2VzWzJdLT5jb21tZW50KCkpOworICAgIEVYUEVDVF9T
VFJFUShHZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIoKSwgdGVzdF9jYXNlc1syXS0+dHlwZV9wYXJh
bSgpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0X2Nhc2VzWzJdLT5zaG91bGRfcnVuKCkpOwogICAg
IEVYUEVDVF9FUSgwLCB0ZXN0X2Nhc2VzWzJdLT5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOwogICAg
IEFTU0VSVF9FUSgxLCB0ZXN0X2Nhc2VzWzJdLT50b3RhbF90ZXN0X2NvdW50KCkpOwpAQCAtMjg1
LDI0ICsyODMsMjQgQEAgY2xhc3MgRmluYWxTdWNjZXNzQ2hlY2tlciA6IHB1YmxpYyBFbnZpcm9u
bWVudCB7CiAKICAgICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlRGlzYWJsZWRBY2Nlc3NvcnNXb3Jr
IiwgdGVzdHNbMV0tPm5hbWUoKSk7CiAgICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNb
MV0tPnRlc3RfY2FzZV9uYW1lKCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMV0tPmNv
bW1lbnQoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1sxXS0+dGVzdF9jYXNlX2NvbW1l
bnQoKSk7CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzFdLT52YWx1ZV9wYXJhbSgpKSk7
CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzFdLT50eXBlX3BhcmFtKCkpKTsKICAgICBF
WFBFQ1RfVFJVRSh0ZXN0c1sxXS0+c2hvdWxkX3J1bigpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0
c1sxXS0+cmVzdWx0KCktPlBhc3NlZCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgdGVzdHNbMV0tPnJl
c3VsdCgpLT50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwogCiAgICAgRVhQRUNUX1NUUkVRKCJUZXN0
Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dvcmsiLCB0ZXN0c1syXS0+bmFtZSgpKTsKICAgICBFWFBF
Q1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1syXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gICAgRVhQ
RUNUX1NUUkVRKCIiLCB0ZXN0c1syXS0+Y29tbWVudCgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIs
IHRlc3RzWzJdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwo
dGVzdHNbMl0tPnZhbHVlX3BhcmFtKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNb
Ml0tPnR5cGVfcGFyYW0oKSkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzJdLT5zaG91bGRfcnVu
KCkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzJdLT5yZXN1bHQoKS0+UGFzc2VkKCkpOwogICAg
IEVYUEVDVF9FUSgwLCB0ZXN0c1syXS0+cmVzdWx0KCktPnRlc3RfcHJvcGVydHlfY291bnQoKSk7
CiAKICAgICBFWFBFQ1RfU1RSRVEoIlVuaXRUZXN0SW1tdXRhYmxlQWNjZXNzb3JzV29yayIsIHRl
c3RzWzNdLT5uYW1lKCkpOwogICAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzNdLT50
ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzNdLT5jb21tZW50
KCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbM10tPnRlc3RfY2FzZV9jb21tZW50KCkp
OworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1szXS0+dmFsdWVfcGFyYW0oKSkpOworICAg
IEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1szXS0+dHlwZV9wYXJhbSgpKSk7CiAgICAgRVhQRUNU
X1RSVUUodGVzdHNbM10tPnNob3VsZF9ydW4oKSk7CiAgICAgRVhQRUNUX1RSVUUodGVzdHNbM10t
PnJlc3VsdCgpLT5QYXNzZWQoKSk7CiAgICAgRVhQRUNUX0VRKDEsIHRlc3RzWzNdLT5yZXN1bHQo
KS0+dGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKQEAgLTMxOCw5ICszMTYsOCBAQCBjbGFzcyBGaW5h
bFN1Y2Nlc3NDaGVja2VyIDogcHVibGljIEVudmlyb25tZW50IHsKIAogICAgIEVYUEVDVF9TVFJF
USgiRHVtbXkiLCB0ZXN0c1swXS0+bmFtZSgpKTsKICAgICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNl
V2l0aENvbW1lbnRUZXN0LzAiLCB0ZXN0c1swXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gICAgRVhQ
RUNUX1NUUkVRKCIiLCB0ZXN0c1swXS0+Y29tbWVudCgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoR2V0
RXhwZWN0ZWRUZXN0Q2FzZUNvbW1lbnQoKS5jX3N0cigpLAotICAgICAgICAgICAgICAgICB0ZXN0
c1swXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3Rz
WzBdLT52YWx1ZV9wYXJhbSgpKSk7CisgICAgRVhQRUNUX1NUUkVRKEdldFR5cGVOYW1lPGludD4o
KS5jX3N0cigpLCB0ZXN0c1swXS0+dHlwZV9wYXJhbSgpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0
c1swXS0+c2hvdWxkX3J1bigpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0c1swXS0+cmVzdWx0KCkt
PlBhc3NlZCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgdGVzdHNbMF0tPnJlc3VsdCgpLT50ZXN0X3By
b3BlcnR5X2NvdW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF9hbGxfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
YWxsX3Rlc3QuY2MKaW5kZXggZTFlZGIwOGUzM2ExOGMyMzkxMTVkYWQ1ZTRhMGQ2ZmI2MzJkYmIx
Ny4uZTYxZTM2YjFkZmU4ZGEwMzAxNmFmNTc4NTViMmM3ODFlZTdkOTFlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9hbGxfdGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2FsbF90ZXN0LmNjCkBAIC0yNiwyMyArMjYs
MjEgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwog
Ly8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBUZXN0
cyBmb3IgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBUZXN0
cyBmb3IgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRl
c3QpCiAvLwogLy8gU29tZXRpbWVzIGl0J3MgZGVzaXJhYmxlIHRvIGJ1aWxkIG1vc3Qgb2YgR29v
Z2xlIFRlc3QncyBvd24gdGVzdHMKIC8vIGJ5IGNvbXBpbGluZyBhIHNpbmdsZSBmaWxlLiAgVGhp
cyBmaWxlIHNlcnZlcyB0aGlzIHB1cnBvc2UuCi0jaW5jbHVkZSAidGVzdC9ndGVzdC1maWxlcGF0
aF90ZXN0LmNjIgotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNjIgotI2lu
Y2x1ZGUgInRlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjIgotI2luY2x1ZGUgInRlc3QvZ3Rlc3Qt
b3B0aW9uc190ZXN0LmNjIgotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtcG9ydF90ZXN0LmNjIgorI2lu
Y2x1ZGUgInRlc3QvZ29vZ2xldGVzdC1maWxlcGF0aC10ZXN0LmNjIgorI2luY2x1ZGUgInRlc3Qv
Z29vZ2xldGVzdC1saW5rZWQtcHRyLXRlc3QuY2MiCisjaW5jbHVkZSAidGVzdC9nb29nbGV0ZXN0
LW1lc3NhZ2UtdGVzdC5jYyIKKyNpbmNsdWRlICJ0ZXN0L2dvb2dsZXRlc3Qtb3B0aW9ucy10ZXN0
LmNjIgorI2luY2x1ZGUgInRlc3QvZ29vZ2xldGVzdC1wb3J0LXRlc3QuY2MiCiAjaW5jbHVkZSAi
dGVzdC9ndGVzdF9wcmVkX2ltcGxfdW5pdHRlc3QuY2MiCiAjaW5jbHVkZSAidGVzdC9ndGVzdF9w
cm9kX3Rlc3QuY2MiCi0jaW5jbHVkZSAidGVzdC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYyIKKyNp
bmNsdWRlICJ0ZXN0L2dvb2dsZXRlc3QtdGVzdC1wYXJ0LXRlc3QuY2MiCiAjaW5jbHVkZSAidGVz
dC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC10eXBlZC10
ZXN0Ml90ZXN0LmNjIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MiCiAjaW5jbHVk
ZSAidGVzdC9wcm9kdWN0aW9uLmNjIgotI2luY2x1ZGUgInNyYy9ndGVzdF9tYWluLmNjIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9hc3NlcnRfYnlfZXhj
ZXB0aW9uX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Fzc2Vy
dF9ieV9leGNlcHRpb25fdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZWFlODU3NWYzZmVlMzBiYWM2NDJi
YTE1ODlmZjIzNGQwN2Y5NDU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9hc3NlcnRfYnlfZXhjZXB0aW9uX3Rlc3QuY2MKQEAgLTAsMCArMSwx
MTggQEAKKy8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisv
LyBUZXN0cyBHb29nbGUgVGVzdCdzIGFzc2VydC1ieS1leGNlcHRpb24gbW9kZSB3aXRoIGV4Y2Vw
dGlvbnMgZW5hYmxlZC4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpbmNsdWRlIDxz
dGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1
ZGUgPHN0ZGV4Y2VwdD4KKworY2xhc3MgVGhyb3dMaXN0ZW5lciA6IHB1YmxpYyB0ZXN0aW5nOjpF
bXB0eVRlc3RFdmVudExpc3RlbmVyIHsKKyAgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IHRl
c3Rpbmc6OlRlc3RQYXJ0UmVzdWx0JiByZXN1bHQpIG92ZXJyaWRlIHsKKyAgICBpZiAocmVzdWx0
LnR5cGUoKSA9PSB0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSkgeworICAg
ICAgdGhyb3cgdGVzdGluZzo6QXNzZXJ0aW9uRXhjZXB0aW9uKHJlc3VsdCk7CisgICAgfQorICB9
Cit9OworCisvLyBQcmludHMgdGhlIGdpdmVuIGZhaWx1cmUgbWVzc2FnZSBhbmQgZXhpdHMgdGhl
IHByb2dyYW0gd2l0aAorLy8gbm9uLXplcm8uICBXZSB1c2UgdGhpcyBpbnN0ZWFkIG9mIGEgR29v
Z2xlIFRlc3QgYXNzZXJ0aW9uIHRvCisvLyBpbmRpY2F0ZSBhIGZhaWx1cmUsIGFzIHRoZSBsYXR0
ZXIgaXMgYmVlbiB0ZXN0ZWQgYW5kIGNhbm5vdCBiZQorLy8gcmVsaWVkIG9uLgordm9pZCBGYWls
KGNvbnN0IGNoYXIqIG1zZykgeworICBwcmludGYoIkZBSUxVUkU6ICVzXG4iLCBtc2cpOworICBm
Zmx1c2goc3Rkb3V0KTsKKyAgZXhpdCgxKTsKK30KKworc3RhdGljIHZvaWQgQXNzZXJ0RmFsc2Uo
KSB7CisgIEFTU0VSVF9FUSgyLCAzKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7Cit9CisKKy8vIFRl
c3RzIHRoYXQgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgdGhyb3dzIGEgc3ViY2xhc3Mgb2YKKy8vIHN0
ZDo6cnVudGltZV9lcnJvci4KK1RFU1QoVGVzdCwgVGVzdCkgeworICAvLyBBIHN1Y2Nlc3NmdWwg
YXNzZXJ0aW9uIHNob3VsZG4ndCB0aHJvdy4KKyAgdHJ5IHsKKyAgICBFWFBFQ1RfRVEoMywgMyk7
CisgIH0gY2F0Y2goLi4uKSB7CisgICAgRmFpbCgiQSBzdWNjZXNzZnVsIGFzc2VydGlvbiB3cm9u
Z2Z1bGx5IHRocmV3LiIpOworICB9CisKKyAgLy8gQSBzdWNjZXNzZnVsIGFzc2VydGlvbiBzaG91
bGRuJ3QgdGhyb3cuCisgIHRyeSB7CisgICAgRVhQRUNUX0VRKDMsIDQpOworICB9IGNhdGNoKC4u
LikgeworICAgIEZhaWwoIkEgZmFpbGVkIG5vbi1mYXRhbCBhc3NlcnRpb24gd3JvbmdmdWxseSB0
aHJldy4iKTsKKyAgfQorCisgIC8vIEEgZmFpbGVkIGFzc2VydGlvbiBzaG91bGQgdGhyb3cuCisg
IHRyeSB7CisgICAgQXNzZXJ0RmFsc2UoKTsKKyAgfSBjYXRjaChjb25zdCB0ZXN0aW5nOjpBc3Nl
cnRpb25FeGNlcHRpb24mIGUpIHsKKyAgICBpZiAoc3Ryc3RyKGUud2hhdCgpLCAiRXhwZWN0ZWQg
ZmFpbHVyZSIpICE9IE5VTEwpCisgICAgICB0aHJvdzsKKworICAgIHByaW50ZigiJXMiLAorICAg
ICAgICAgICAiQSBmYWlsZWQgYXNzZXJ0aW9uIGRpZCB0aHJvdyBhbiBleGNlcHRpb24gb2YgdGhl
IHJpZ2h0IHR5cGUsICIKKyAgICAgICAgICAgImJ1dCB0aGUgbWVzc2FnZSBpcyBpbmNvcnJlY3Qu
ICBJbnN0ZWFkIG9mIGNvbnRhaW5pbmcgXCJFeHBlY3RlZCAiCisgICAgICAgICAgICJmYWlsdXJl
XCIsIGl0IGlzOlxuIik7CisgICAgRmFpbChlLndoYXQoKSk7CisgIH0gY2F0Y2goLi4uKSB7Cisg
ICAgRmFpbCgiQSBmYWlsZWQgYXNzZXJ0aW9uIHRocmV3IHRoZSB3cm9uZyB0eXBlIG9mIGV4Y2Vw
dGlvbi4iKTsKKyAgfQorICBGYWlsKCJBIGZhaWxlZCBhc3NlcnRpb24gc2hvdWxkJ3ZlIHRocm93
biBidXQgZGlkbid0LiIpOworfQorCitpbnQga1Rlc3RGb3JDb250aW51aW5nVGVzdCA9IDA7CisK
K1RFU1QoVGVzdCwgVGVzdDIpIHsKKyAgLy8gRklYTUU6IGhvdyB0byBmb3JjZSBUZXN0MiB0byBi
ZSBhZnRlciBUZXN0PworICBrVGVzdEZvckNvbnRpbnVpbmdUZXN0ID0gMTsKK30KKworaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZh
cmdjLCBhcmd2KTsKKyAgdGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVy
cygpLkFwcGVuZChuZXcgVGhyb3dMaXN0ZW5lcik7CisKKyAgaW50IHJlc3VsdCA9IFJVTl9BTExf
VEVTVFMoKTsKKyAgaWYgKHJlc3VsdCA9PSAwKSB7CisgICAgcHJpbnRmKCJSVU5fQUxMX1RFU1RT
IHJldHVybmVkICVkXG4iLCByZXN1bHQpOworICAgIEZhaWwoIkV4cGVjdGVkIGZhaWx1cmUgaW5z
dGVhZC4iKTsKKyAgfQorCisgIGlmIChrVGVzdEZvckNvbnRpbnVpbmdUZXN0ID09IDApIHsKKyAg
ICBGYWlsKCJTaG91bGQgaGF2ZSBjb250aW51ZWQgd2l0aCBvdGhlciB0ZXN0cywgYnV0IGRpZCBu
b3QuIik7CisgIH0KKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGM4MTkxODMzMTIyNzVkZWNhMDVjNzYzMTg2
MDQwNDcxYmZmNDlmMzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9icmVha19vbl9mYWlsdXJl
X3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjE4ICswLDAgQEAKLSMhL3Vzci9iaW4v
ZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0j
IGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0j
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlVuaXQgdGVzdCBmb3IgR29vZ2xl
IFRlc3QncyBicmVhay1vbi1mYWlsdXJlIG1vZGUuCi0KLUEgdXNlciBjYW4gYXNrIEdvb2dsZSBU
ZXN0IHRvIHNlZy1mYXVsdCB3aGVuIGFuIGFzc2VydGlvbiBmYWlscywgdXNpbmcKLWVpdGhlciB0
aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUKLS0t
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnLiAgVGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5j
dGlvbmFsaXR5Ci1ieSBpbnZva2luZyBndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0XyAo
YSBwcm9ncmFtIHdyaXR0ZW4gd2l0aAotR29vZ2xlIFRlc3QpIHdpdGggZGlmZmVyZW50IGVudmly
b25tZW50cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdzLgotIiIiCi0KLV9fYXV0aG9yX18gPSAnd2Fu
QGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi1p
bXBvcnQgb3MKLWltcG9ydCBzeXMKLQotCi0jIENvbnN0YW50cy4KLQotSVNfV0lORE9XUyA9IG9z
Lm5hbWUgPT0gJ250JwotCi0jIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgZW5hYmxpbmcv
ZGlzYWJsaW5nIHRoZSBicmVhay1vbi1mYWlsdXJlIG1vZGUuCi1CUkVBS19PTl9GQUlMVVJFX0VO
Vl9WQVIgPSAnR1RFU1RfQlJFQUtfT05fRkFJTFVSRScKLQotIyBUaGUgY29tbWFuZCBsaW5lIGZs
YWcgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgYnJlYWstb24tZmFpbHVyZSBtb2RlLgotQlJF
QUtfT05fRkFJTFVSRV9GTEFHID0gJ2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmUnCi0KLSMgVGhlIGVu
dmlyb25tZW50IHZhcmlhYmxlIGZvciBlbmFibGluZy9kaXNhYmxpbmcgdGhlIHRocm93LW9uLWZh
aWx1cmUgbW9kZS4KLVRIUk9XX09OX0ZBSUxVUkVfRU5WX1ZBUiA9ICdHVEVTVF9USFJPV19PTl9G
QUlMVVJFJwotCi0jIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgZW5hYmxpbmcvZGlzYWJs
aW5nIHRoZSBjYXRjaC1leGNlcHRpb25zIG1vZGUuCi1DQVRDSF9FWENFUFRJT05TX0VOVl9WQVIg
PSAnR1RFU1RfQ0FUQ0hfRVhDRVBUSU9OUycKLQotIyBQYXRoIHRvIHRoZSBndGVzdF9icmVha19v
bl9mYWlsdXJlX3VuaXR0ZXN0XyBwcm9ncmFtLgotRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxz
LkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKLSAgICAnZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0
dGVzdF8nKQotCi0KLSMgVXRpbGl0aWVzLgotCi0KLWVudmlyb24gPSBvcy5lbnZpcm9uLmNvcHko
KQotCi0KLWRlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgotICAiIiJTZXRzIGFuIGVudmly
b25tZW50IHZhcmlhYmxlIHRvIGEgZ2l2ZW4gdmFsdWU7IHVuc2V0cyBpdCB3aGVuIHRoZQotICBn
aXZlbiB2YWx1ZSBpcyBOb25lLgotICAiIiIKLQotICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAg
ICBlbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKLSAgZWxpZiBlbnZfdmFyIGluIGVudmlyb246Ci0g
ICAgZGVsIGVudmlyb25bZW52X3Zhcl0KLQotCi1kZWYgUnVuKGNvbW1hbmQpOgotICAiIiJSdW5z
IGEgY29tbWFuZDsgcmV0dXJucyAxIGlmIGl0IHdhcyBraWxsZWQgYnkgYSBzaWduYWwsIG9yIDAg
b3RoZXJ3aXNlLiIiIgotCi0gIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFu
ZCwgZW52PWVudmlyb24pCi0gIGlmIHAudGVybWluYXRlZF9ieV9zaWduYWw6Ci0gICAgcmV0dXJu
IDEKLSAgZWxzZToKLSAgICByZXR1cm4gMAotCi0KLSMgVGhlIHRlc3RzLgotCi0KLWNsYXNzIEdU
ZXN0QnJlYWtPbkZhaWx1cmVVbml0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAg
IiIiVGVzdHMgdXNpbmcgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFy
aWFibGUgb3IKLSAgdGhlIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnIHRvIHR1cm4gYXNz
ZXJ0aW9uIGZhaWx1cmVzIGludG8KLSAgc2VnbWVudGF0aW9uIGZhdWx0cy4KLSAgIiIiCi0KLSAg
ZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBlbnZfdmFyX3ZhbHVlLCBmbGFnX3ZhbHVlLCBleHBlY3Rf
c2VnX2ZhdWx0KToKLSAgICAiIiJSdW5zIGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3Rf
IGFuZCB2ZXJpZmllcyB0aGF0IGl0IGRvZXMKLSAgICAob3IgZG9lcyBub3QpIGhhdmUgYSBzZWct
ZmF1bHQuCi0KLSAgICBBcmdzOgotICAgICAgZW52X3Zhcl92YWx1ZTogICAgdmFsdWUgb2YgdGhl
IEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHZhcmlhYmxlOyBOb25lIGlmIHRoZSB2YXJpYWJsZSBzaG91bGQgYmUgdW5zZXQuCi0gICAg
ICBmbGFnX3ZhbHVlOiAgICAgICB2YWx1ZSBvZiB0aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJl
IGZsYWc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBu
b3QgYmUgcHJlc2VudC4KLSAgICAgIGV4cGVjdF9zZWdfZmF1bHQ6IDEgaWYgdGhlIHByb2dyYW0g
aXMgZXhwZWN0ZWQgdG8gZ2VuZXJhdGUgYSBzZWctZmF1bHQ7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAwIG90aGVyd2lzZS4KLSAgICAiIiIKLQotICAgIFNldEVudlZhcihCUkVBS19PTl9GQUlM
VVJFX0VOVl9WQVIsIGVudl92YXJfdmFsdWUpCi0KLSAgICBpZiBlbnZfdmFyX3ZhbHVlIGlzIE5v
bmU6Ci0gICAgICBlbnZfdmFyX3ZhbHVlX21zZyA9ICcgaXMgbm90IHNldCcKLSAgICBlbHNlOgot
ICAgICAgZW52X3Zhcl92YWx1ZV9tc2cgPSAnPScgKyBlbnZfdmFyX3ZhbHVlCi0KLSAgICBpZiBm
bGFnX3ZhbHVlIGlzIE5vbmU6Ci0gICAgICBmbGFnID0gJycKLSAgICBlbGlmIGZsYWdfdmFsdWUg
PT0gJzAnOgotICAgICAgZmxhZyA9ICctLSVzPTAnICUgQlJFQUtfT05fRkFJTFVSRV9GTEFHCi0g
ICAgZWxzZToKLSAgICAgIGZsYWcgPSAnLS0lcycgJSBCUkVBS19PTl9GQUlMVVJFX0ZMQUcKLQot
ICAgIGNvbW1hbmQgPSBbRVhFX1BBVEhdCi0gICAgaWYgZmxhZzoKLSAgICAgIGNvbW1hbmQuYXBw
ZW5kKGZsYWcpCi0KLSAgICBpZiBleHBlY3Rfc2VnX2ZhdWx0OgotICAgICAgc2hvdWxkX29yX25v
dCA9ICdzaG91bGQnCi0gICAgZWxzZToKLSAgICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxkIG5v
dCcKLQotICAgIGhhc19zZWdfZmF1bHQgPSBSdW4oY29tbWFuZCkKLQotICAgIFNldEVudlZhcihC
UkVBS19PTl9GQUlMVVJFX0VOVl9WQVIsIE5vbmUpCi0KLSAgICBtc2cgPSAoJ3doZW4gJXMlcywg
YW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4gIiVzIiAlcyBjYXVzZSBhIHNlZy1mYXVsdC4nICUKLSAg
ICAgICAgICAgKEJSRUFLX09OX0ZBSUxVUkVfRU5WX1ZBUiwgZW52X3Zhcl92YWx1ZV9tc2csICcg
Jy5qb2luKGNvbW1hbmQpLAotICAgICAgICAgICAgc2hvdWxkX29yX25vdCkpCi0gICAgc2VsZi5h
c3NlcnRfKGhhc19zZWdfZmF1bHQgPT0gZXhwZWN0X3NlZ19mYXVsdCwgbXNnKQotCi0gIGRlZiB0
ZXN0RGVmYXVsdEJlaGF2aW9yKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiB0
aGUgZGVmYXVsdCBtb2RlLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1
ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKLSAgICAgICAg
ICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCi0KLSAgZGVmIHRlc3RFbnZWYXIoc2Vs
Zik6Ci0gICAgIiIiVGVzdHMgdXNpbmcgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJv
bm1lbnQgdmFyaWFibGUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVl
PScwJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCi0gICAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0wKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVu
dl92YXJfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwK
LSAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCi0KLSAgZGVmIHRlc3RG
bGFnKHNlbGYpOgotICAgICIiIlRlc3RzIHVzaW5nIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1
cmUgZmxhZy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwK
LSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAg
ICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92
YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAotICAgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKLQotICBkZWYgdGVzdEZsYWdPdmVy
cmlkZXNFbnZWYXIoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCB0aGUgZmxhZyBvdmVycmlkZXMg
dGhlIGVudmlyb25tZW50IHZhcmlhYmxlLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52
X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0wKQotICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFs
dWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKLSAgICBz
ZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAg
ICBmbGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0
PTApCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0gICAgICAgICAg
ICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
X3NlZ19mYXVsdD0xKQotCi0gIGRlZiB0ZXN0QnJlYWtPbkZhaWx1cmVPdmVycmlkZXNUaHJvd09u
RmFpbHVyZShzZWxmKToKLSAgICAiIiJUZXN0cyB0aGF0IGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUg
b3ZlcnJpZGVzIGd0ZXN0X3Rocm93X29uX2ZhaWx1cmUuIiIiCi0KLSAgICBTZXRFbnZWYXIoVEhS
T1dfT05fRkFJTFVSRV9FTlZfVkFSLCAnMScpCi0gICAgdHJ5OgotICAgICAgc2VsZi5SdW5BbmRW
ZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ192
YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCi0g
ICAgZmluYWxseToKLSAgICAgIFNldEVudlZhcihUSFJPV19PTl9GQUlMVVJFX0VOVl9WQVIsIE5v
bmUpCi0KLSAgaWYgSVNfV0lORE9XUzoKLSAgICBkZWYgdGVzdENhdGNoRXhjZXB0aW9uc0RvZXNO
b3RJbnRlcmZlcmUoc2VsZik6Ci0gICAgICAiIiJUZXN0cyB0aGF0IGd0ZXN0X2NhdGNoX2V4Y2Vw
dGlvbnMgZG9lc24ndCBpbnRlcmZlcmUuIiIiCi0KLSAgICAgIFNldEVudlZhcihDQVRDSF9FWENF
UFRJT05TX0VOVl9WQVIsICcxJykKLSAgICAgIHRyeToKLSAgICAgICAgc2VsZi5SdW5BbmRWZXJp
ZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFs
dWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCi0g
ICAgICBmaW5hbGx5OgotICAgICAgICBTZXRFbnZWYXIoQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFS
LCBOb25lKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rlc3RfdXRp
bHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZDI4ZDFkM2RhZDQ2YjhmZGYzYzM0MDk2N2RiZmNhODUyZjU5ZTRhMS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfLmNjCisr
KyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJ
bmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0v
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25n
IFdhbikKLQotLy8gVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIGJyZWFrLW9uLWZhaWx1cmUg
bW9kZS4KLS8vCi0vLyBBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBzZWctZmF1bHQgd2hl
biBhbiBhc3NlcnRpb24gZmFpbHMsIHVzaW5nCi0vLyBlaXRoZXIgdGhlIEdURVNUX0JSRUFLX09O
X0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCi0vLyAtLWd0ZXN0X2JyZWFrX29u
X2ZhaWx1cmUgZmxhZy4gIFRoaXMgZmlsZSBpcyB1c2VkIGZvciB0ZXN0aW5nIHN1Y2gKLS8vIGZ1
bmN0aW9uYWxpdHkuCi0vLwotLy8gVGhpcyBwcm9ncmFtIHdpbGwgYmUgaW52b2tlZCBmcm9tIGEg
UHl0aG9uIHVuaXQgdGVzdC4gIEl0IGlzCi0vLyBleHBlY3RlZCB0byBmYWlsLiAgRG9uJ3QgcnVu
IGl0IGRpcmVjdGx5LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2lmIEdURVNUX09T
X1dJTkRPV1MKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jZW5k
aWYKLQotbmFtZXNwYWNlIHsKLQotLy8gQSB0ZXN0IHRoYXQncyBleHBlY3RlZCB0byBmYWlsLgot
VEVTVChGb28sIEJhcikgewotICBFWFBFQ1RfRVEoMiwgMyk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNf
U0VIICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotLy8gT24gV2luZG93cyBNb2JpbGUgZ2xv
YmFsIGV4Y2VwdGlvbiBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZC4KLUxPTkcgV0lOQVBJIEV4
aXRXaXRoRXhjZXB0aW9uQ29kZSgKLSAgICBzdHJ1Y3QgX0VYQ0VQVElPTl9QT0lOVEVSUyogZXhj
ZXB0aW9uX3BvaW50ZXJzKSB7Ci0gIGV4aXQoZXhjZXB0aW9uX3BvaW50ZXJzLT5FeGNlcHRpb25S
ZWNvcmQtPkV4Y2VwdGlvbkNvZGUpOwotfQotI2VuZGlmCi0KLX0gIC8vIG5hbWVzcGFjZQotCi1p
bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0g
IC8vIFN1cHByZXNzZXMgZGlzcGxheSBvZiB0aGUgV2luZG93cyBlcnJvciBkaWFsb2cgdXBvbiBl
bmNvdW50ZXJpbmcKLSAgLy8gYSBnZW5lcmFsIHByb3RlY3Rpb24gZmF1bHQgKHNlZ21lbnQgdmlv
bGF0aW9uKS4KLSAgU2V0RXJyb3JNb2RlKFNFTV9OT0dQRkFVTFRFUlJPUkJPWCB8IFNFTV9GQUlM
Q1JJVElDQUxFUlJPUlMpOwotCi0jaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0gIC8vIFRo
ZSBkZWZhdWx0IHVuaGFuZGxlZCBleGNlcHRpb24gZmlsdGVyIGRvZXMgbm90IGFsd2F5cyBleGl0
Ci0gIC8vIHdpdGggdGhlIGV4Y2VwdGlvbiBjb2RlIGFzIGV4aXQgY29kZSAtIGZvciBleGFtcGxl
IGl0IGV4aXRzIHdpdGgKLSAgLy8gMCBmb3IgRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT04gYW5k
IDEgZm9yIEVYQ0VQVElPTl9CUkVBS1BPSU5UCi0gIC8vIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBj
b21waWxlZCBpbiBkZWJ1ZyBtb2RlLiBUaHVzIHdlIHVzZSBvdXIgb3duCi0gIC8vIGZpbHRlciB3
aGljaCBhbHdheXMgZXhpdHMgd2l0aCB0aGUgZXhjZXB0aW9uIGNvZGUgZm9yIHVuaGFuZGxlZAot
ICAvLyBleGNlcHRpb25zLgotICBTZXRVbmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIoRXhpdFdpdGhF
eGNlcHRpb25Db2RlKTsKLSNlbmRpZgotI2VuZGlmCi0KLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRl
c3QoJmFyZ2MsIGFyZ3YpOwotCi0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IGQwMmE1M2VkODU3Yzc0YzgwMGJjY2Q2N2JjNDE4YTUxYTA5
ZDY5MzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5CisrKyAvZGV2L251
bGwKQEAgLTEsMTMwICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmln
aHQgMjAwOCwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLSIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3QgY29ycmVjdGx5IGRldGVybWlu
ZXMgd2hldGhlciB0byB1c2UgY29sb3JzLiIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUu
Y29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWltcG9ydCBndGVzdF90ZXN0X3V0aWxz
Ci0KLQotSVNfV0lORE9XUyA9IG9zLm5hbWUgPSAnbnQnCi0KLUNPTE9SX0VOVl9WQVIgPSAnR1RF
U1RfQ09MT1InCi1DT0xPUl9GTEFHID0gJ2d0ZXN0X2NvbG9yJwotQ09NTUFORCA9IGd0ZXN0X3Rl
c3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9jb2xvcl90ZXN0XycpCi0KLQot
ZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6Ci0gICIiIlNldHMgdGhlIGVudiB2YXJpYWJs
ZSB0byAndmFsdWUnOyB1bnNldHMgaXQgd2hlbiAndmFsdWUnIGlzIE5vbmUuIiIiCi0KLSAgaWYg
dmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgb3MuZW52aXJvbltlbnZfdmFyXSA9IHZhbHVlCi0gIGVs
aWYgZW52X3ZhciBpbiBvcy5lbnZpcm9uOgotICAgIGRlbCBvcy5lbnZpcm9uW2Vudl92YXJdCi0K
LQotZGVmIFVzZXNDb2xvcih0ZXJtLCBjb2xvcl9lbnZfdmFyLCBjb2xvcl9mbGFnKToKLSAgIiIi
UnVucyBndGVzdF9jb2xvcl90ZXN0XyBhbmQgcmV0dXJucyBpdHMgZXhpdCBjb2RlLiIiIgotCi0g
IFNldEVudlZhcignVEVSTScsIHRlcm0pCi0gIFNldEVudlZhcihDT0xPUl9FTlZfVkFSLCBjb2xv
cl9lbnZfdmFyKQotCi0gIGlmIGNvbG9yX2ZsYWcgaXMgTm9uZToKLSAgICBhcmdzID0gW10KLSAg
ZWxzZToKLSAgICBhcmdzID0gWyctLSVzPSVzJyAlIChDT0xPUl9GTEFHLCBjb2xvcl9mbGFnKV0K
LSAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhbQ09NTUFORF0gKyBhcmdzKQotICBy
ZXR1cm4gbm90IHAuZXhpdGVkIG9yIHAuZXhpdF9jb2RlCi0KLQotY2xhc3MgR1Rlc3RDb2xvclRl
c3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gIGRlZiB0ZXN0Tm9FbnZWYXJOb0ZsYWco
c2VsZik6Ci0gICAgIiIiVGVzdHMgdGhlIGNhc2Ugd2hlbiB0aGVyZSdzIG5laXRoZXIgR1RFU1Rf
Q09MT1Igbm9yIC0tZ3Rlc3RfY29sb3IuIiIiCi0KLSAgICBpZiBub3QgSVNfV0lORE9XUzoKLSAg
ICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgTm9uZSkpCi0gICAg
ICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcignZW1hY3MnLCBOb25lLCBOb25lKSkKLSAgICAg
IHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybS1tb25vJywgTm9uZSwgTm9uZSkpCi0g
ICAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigndW5rbm93bicsIE5vbmUsIE5vbmUpKQot
ICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoTm9uZSwgTm9uZSwgTm9uZSkpCi0gICAg
c2VsZi5hc3NlcnRfKFVzZXNDb2xvcignbGludXgnLCBOb25lLCBOb25lKSkKLSAgICBzZWxmLmFz
c2VydF8oVXNlc0NvbG9yKCdjeWd3aW4nLCBOb25lLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8o
VXNlc0NvbG9yKCd4dGVybScsIE5vbmUsIE5vbmUpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29s
b3IoJ3h0ZXJtLWNvbG9yJywgTm9uZSwgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xv
cigneHRlcm0tMjU2Y29sb3InLCBOb25lLCBOb25lKSkKLQotICBkZWYgdGVzdEZsYWdPbmx5KHNl
bGYpOgotICAgICIiIlRlc3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUncyAtLWd0ZXN0X2NvbG9yIGJ1
dCBub3QgR1RFU1RfQ09MT1IuIiIiCi0KLSAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcign
ZHVtYicsIE5vbmUsICdubycpKQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVy
bS1jb2xvcicsIE5vbmUsICdubycpKQotICAgIGlmIG5vdCBJU19XSU5ET1dTOgotICAgICAgc2Vs
Zi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ2VtYWNzJywgTm9uZSwgJ2F1dG8nKSkKLSAgICBzZWxm
LmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybScsIE5vbmUsICdhdXRvJykpCi0gICAgc2VsZi5hc3Nl
cnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUsICd5ZXMnKSkKLSAgICBzZWxmLmFzc2VydF8oVXNl
c0NvbG9yKCd4dGVybScsIE5vbmUsICd5ZXMnKSkKLQotICBkZWYgdGVzdEVudlZhck9ubHkoc2Vs
Zik6Ci0gICAgIiIiVGVzdHMgdGhlIGNhc2Ugd2hlbiB0aGVyZSdzIEdURVNUX0NPTE9SIGJ1dCBu
b3QgLS1ndGVzdF9jb2xvci4iIiIKLQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdk
dW1iJywgJ25vJywgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJt
LWNvbG9yJywgJ25vJywgTm9uZSkpCi0gICAgaWYgbm90IElTX1dJTkRPV1M6Ci0gICAgICBzZWxm
LmFzc2VydF8obm90IFVzZXNDb2xvcignZHVtYicsICdhdXRvJywgTm9uZSkpCi0gICAgc2VsZi5h
c3NlcnRfKFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAnYXV0bycsIE5vbmUpKQotICAgIHNlbGYu
YXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCAneWVzJywgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRf
KFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAneWVzJywgTm9uZSkpCi0KLSAgZGVmIHRlc3RFbnZW
YXJBbmRGbGFnKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUgYXJlIGJv
dGggR1RFU1RfQ09MT1IgYW5kIC0tZ3Rlc3RfY29sb3IuIiIiCi0KLSAgICBzZWxmLmFzc2VydF8o
bm90IFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAnbm8nLCAnbm8nKSkKLSAgICBzZWxmLmFzc2Vy
dF8oVXNlc0NvbG9yKCdkdW1iJywgJ25vJywgJ3llcycpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2Vz
Q29sb3IoJ3h0ZXJtLWNvbG9yJywgJ25vJywgJ2F1dG8nKSkKLQotICBkZWYgdGVzdEFsaWFzZXNP
Zlllc0FuZE5vKHNlbGYpOgotICAgICIiIlRlc3RzIHVzaW5nIGFsaWFzZXMgaW4gc3BlY2lmeWlu
ZyAtLWd0ZXN0X2NvbG9yLiIiIgotCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYics
IE5vbmUsICd0cnVlJykpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUs
ICdZRVMnKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ1QnKSkK
LSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJzEnKSkKLQotICAgIHNl
bGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybScsIE5vbmUsICdmJykpCi0gICAgc2VsZi5h
c3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwgJ2ZhbHNlJykpCi0gICAgc2VsZi5h
c3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwgJzAnKSkKLSAgICBzZWxmLmFzc2Vy
dF8obm90IFVzZXNDb2xvcigneHRlcm0nLCBOb25lLCAndW5rbm93bicpKQotCi0KLWlmIF9fbmFt
ZV9fID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0Xy5jYwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNThkMzc3YzliMmFmMGJmZTgxOTVjYTJjMGE5MDIxMzlkOTEx
MDY0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjCisrKyAvZGV2L251
bGwKQEAgLTEsNzEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
Ly8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQot
Ly8gQSBoZWxwZXIgcHJvZ3JhbSBmb3IgdGVzdGluZyBob3cgR29vZ2xlIFRlc3QgZGV0ZXJtaW5l
cyB3aGV0aGVyIHRvIHVzZQotLy8gY29sb3JzIGluIHRoZSBvdXRwdXQuICBJdCBwcmludHMgIllF
UyIgYW5kIHJldHVybnMgMSBpZiBHb29nbGUgVGVzdAotLy8gZGVjaWRlcyB0byB1c2UgY29sb3Jz
LCBhbmQgcHJpbnRzICJOTyIgYW5kIHJldHVybnMgMCBvdGhlcndpc2UuCi0KLSNpbmNsdWRlIDxz
dGRpby5oPgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotLy8gSW5kaWNhdGVzIHRoYXQg
dGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVt
ZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0v
LyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmlj
ayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0
ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVN
RU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYg
R1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaG91bGRV
c2VDb2xvcjsKLQotLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUg
VW5pdFRlc3Qgc2luZ2xldG9uIGlzCi0vLyBjcmVhdGVkIGJlZm9yZSBtYWluKCkgaXMgZW50ZXJl
ZCwgYW5kIHRodXMgdGhhdCBTaG91bGRVc2VDb2xvcigpCi0vLyB3b3JrcyB0aGUgc2FtZSB3YXkg
YXMgaW4gYSByZWFsIEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QuICBXZSBkb24ndCBhY3R1YWwKLS8v
IHJ1biB0aGUgVEVTVCBpdHNlbGYuCi1URVNUKEdUZXN0Q29sb3JUZXN0LCBEdW1teSkgewotfQot
Ci1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgdGVzdGluZzo6SW5pdEdvb2ds
ZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIGlmIChTaG91bGRVc2VDb2xvcih0cnVlKSkgewotICAg
IC8vIEdvb2dsZSBUZXN0IGRlY2lkZXMgdG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0IChhc3N1
bWluZyBpdAotICAgIC8vIGdvZXMgdG8gYSBUVFkpLgotICAgIHByaW50ZigiWUVTXG4iKTsKLSAg
ICByZXR1cm4gMTsKLSAgfSBlbHNlIHsKLSAgICAvLyBHb29nbGUgVGVzdCBkZWNpZGVzIG5vdCB0
byB1c2UgY29sb3JzIGluIHRoZSBvdXRwdXQuCi0gICAgcHJpbnRmKCJOT1xuIik7Ci0gICAgcmV0
dXJuIDA7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfZW52X3Zhcl90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9lbnZfdmFyX3Rlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGJjYzBiZmQ1
NTMyOTcyNjgwNzYxNTc3MzZjODNlNGE4NGNhZTA1NmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9lbnZfdmFyX3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotIyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6
Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVmVyaWZpZXMgdGhhdCBH
b29nbGUgVGVzdCBjb3JyZWN0bHkgcGFyc2VzIGVudmlyb25tZW50IHZhcmlhYmxlcy4iIiIKLQot
X19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IG9z
Ci1pbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwotCi0KLUlTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdu
dCcKLUlTX0xJTlVYID0gb3MubmFtZSA9PSAncG9zaXgnIGFuZCBvcy51bmFtZSgpWzBdID09ICdM
aW51eCcKLQotQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRo
KCdndGVzdF9lbnZfdmFyX3Rlc3RfJykKLQotZW52aXJvbiA9IG9zLmVudmlyb24uY29weSgpCi0K
LQotZGVmIEFzc2VydEVxKGV4cGVjdGVkLCBhY3R1YWwpOgotICBpZiBleHBlY3RlZCAhPSBhY3R1
YWw6Ci0gICAgcHJpbnQgJ0V4cGVjdGVkOiAlcycgJSAoZXhwZWN0ZWQsKQotICAgIHByaW50ICcg
IEFjdHVhbDogJXMnICUgKGFjdHVhbCwpCi0gICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKLQotCi1k
ZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToKLSAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxl
IHRvICd2YWx1ZSc7IHVuc2V0cyBpdCB3aGVuICd2YWx1ZScgaXMgTm9uZS4iIiIKLQotICBpZiB2
YWx1ZSBpcyBub3QgTm9uZToKLSAgICBlbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKLSAgZWxpZiBl
bnZfdmFyIGluIGVudmlyb246Ci0gICAgZGVsIGVudmlyb25bZW52X3Zhcl0KLQotCi1kZWYgR2V0
RmxhZyhmbGFnKToKLSAgIiIiUnVucyBndGVzdF9lbnZfdmFyX3Rlc3RfIGFuZCByZXR1cm5zIGl0
cyBvdXRwdXQuIiIiCi0KLSAgYXJncyA9IFtDT01NQU5EXQotICBpZiBmbGFnIGlzIG5vdCBOb25l
OgotICAgIGFyZ3MgKz0gW2ZsYWddCi0gIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nl
c3MoYXJncywgZW52PWVudmlyb24pLm91dHB1dAotCi0KLWRlZiBUZXN0RmxhZyhmbGFnLCB0ZXN0
X3ZhbCwgZGVmYXVsdF92YWwpOgotICAiIiJWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBmbGFnIGlz
IGFmZmVjdGVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGVudiB2YXIuIiIiCi0KLSAgZW52X3ZhciA9
ICdHVEVTVF8nICsgZmxhZy51cHBlcigpCi0gIFNldEVudlZhcihlbnZfdmFyLCB0ZXN0X3ZhbCkK
LSAgQXNzZXJ0RXEodGVzdF92YWwsIEdldEZsYWcoZmxhZykpCi0gIFNldEVudlZhcihlbnZfdmFy
LCBOb25lKQotICBBc3NlcnRFcShkZWZhdWx0X3ZhbCwgR2V0RmxhZyhmbGFnKSkKLQotCi1jbGFz
cyBHVGVzdEVudlZhclRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gIGRlZiB0ZXN0
RW52VmFyQWZmZWN0c0ZsYWcoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCBlbnZpcm9ubWVudCB2
YXJpYWJsZSBzaG91bGQgYWZmZWN0IHRoZSBjb3JyZXNwb25kaW5nIGZsYWcuIiIiCi0KLSAgICBU
ZXN0RmxhZygnYnJlYWtfb25fZmFpbHVyZScsICcxJywgJzAnKQotICAgIFRlc3RGbGFnKCdjb2xv
cicsICd5ZXMnLCAnYXV0bycpCi0gICAgVGVzdEZsYWcoJ2ZpbHRlcicsICdGb29UZXN0LkJhcics
ICcqJykKLSAgICBUZXN0RmxhZygnb3V0cHV0JywgJ3htbDp0bXAvZm9vLnhtbCcsICcnKQotICAg
IFRlc3RGbGFnKCdwcmludF90aW1lJywgJzAnLCAnMScpCi0gICAgVGVzdEZsYWcoJ3JlcGVhdCcs
ICc5OTknLCAnMScpCi0gICAgVGVzdEZsYWcoJ3Rocm93X29uX2ZhaWx1cmUnLCAnMScsICcwJykK
LSAgICBUZXN0RmxhZygnZGVhdGhfdGVzdF9zdHlsZScsICd0aHJlYWRzYWZlJywgJ2Zhc3QnKQot
Ci0gICAgaWYgSVNfV0lORE9XUzoKLSAgICAgIFRlc3RGbGFnKCdjYXRjaF9leGNlcHRpb25zJywg
JzEnLCAnMCcpCi0KLSAgICBpZiBJU19MSU5VWDoKLSAgICAgIFRlc3RGbGFnKCdkZWF0aF90ZXN0
X3VzZV9mb3JrJywgJzEnLCAnMCcpCi0gICAgICBUZXN0RmxhZygnc3RhY2tfdHJhY2VfZGVwdGgn
LCAnMCcsICcxMDAnKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rl
c3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X2Vudl92YXJfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X2Vudl92YXJfdGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3Yzc4
ZmNmMzA1MzEyYTY2YzI2NWIxODEwYTY5MTA3N2RiNzcxZjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9lbnZfdmFyX3Rlc3RfLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTI2ICswLDAgQEAKLS8v
IENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8v
Ci0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlz
dHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
Ly8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6
IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEEgaGVscGVyIHByb2dyYW0gZm9y
IHRlc3RpbmcgdGhhdCBHb29nbGUgVGVzdCBwYXJzZXMgdGhlIGVudmlyb25tZW50Ci0vLyB2YXJp
YWJsZXMgY29ycmVjdGx5LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2luY2x1ZGUg
PGlvc3RyZWFtPgotCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAi
c3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwot
Ci11c2luZyA6OnN0ZDo6Y291dDsKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotCi0vLyBUaGUgcHVy
cG9zZSBvZiB0aGlzIGlzIHRvIG1ha2UgdGhlIHRlc3QgbW9yZSByZWFsaXN0aWMgYnkgZW5zdXJp
bmcKLS8vIHRoYXQgdGhlIFVuaXRUZXN0IHNpbmdsZXRvbiBpcyBjcmVhdGVkIGJlZm9yZSBtYWlu
KCkgaXMgZW50ZXJlZC4KLS8vIFdlIGRvbid0IGFjdHVhbCBydW4gdGhlIFRFU1QgaXRzZWxmLgot
VEVTVChHVGVzdEVudlZhclRlc3QsIER1bW15KSB7Ci19Ci0KLXZvaWQgUHJpbnRGbGFnKGNvbnN0
IGNoYXIqIGZsYWcpIHsKLSAgaWYgKHN0cmNtcChmbGFnLCAiYnJlYWtfb25fZmFpbHVyZSIpID09
IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSk7Ci0gICAgcmV0
dXJuOwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAiY2F0Y2hfZXhjZXB0aW9ucyIpID09IDAp
IHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucyk7Ci0gICAgcmV0dXJu
OwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAiY29sb3IiKSA9PSAwKSB7Ci0gICAgY291dCA8
PCBHVEVTVF9GTEFHKGNvbG9yKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZs
YWcsICJkZWF0aF90ZXN0X3N0eWxlIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhk
ZWF0aF90ZXN0X3N0eWxlKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcs
ICJkZWF0aF90ZXN0X3VzZV9mb3JrIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhk
ZWF0aF90ZXN0X3VzZV9mb3JrKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZs
YWcsICJmaWx0ZXIiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKGZpbHRlcik7Ci0g
ICAgcmV0dXJuOwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAib3V0cHV0IikgPT0gMCkgewot
ICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhvdXRwdXQpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlm
IChzdHJjbXAoZmxhZywgInByaW50X3RpbWUiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9G
TEFHKHByaW50X3RpbWUpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywg
InJlcGVhdCIpID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcocmVwZWF0KTsKLSAgICBy
ZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcsICJzdGFja190cmFjZV9kZXB0aCIpID09
IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpOwotICAgIHJl
dHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywgInRocm93X29uX2ZhaWx1cmUiKSA9PSAw
KSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpOwotICAgIHJldHVy
bjsKLSAgfQotCi0gIGNvdXQgPDwgIkludmFsaWQgZmxhZyBuYW1lICIgPDwgZmxhZwotICAgICAg
IDw8ICIuICBWYWxpZCBuYW1lcyBhcmUgYnJlYWtfb25fZmFpbHVyZSwgY29sb3IsIGZpbHRlciwg
ZXRjLlxuIjsKLSAgZXhpdCgxKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0
KCZhcmdjLCBhcmd2KTsKLQotICBpZiAoYXJnYyAhPSAyKSB7Ci0gICAgY291dCA8PCAiVXNhZ2U6
IGd0ZXN0X2Vudl92YXJfdGVzdF8gTkFNRV9PRl9GTEFHXG4iOwotICAgIHJldHVybiAxOwotICB9
Ci0KLSAgdGVzdGluZzo6UHJpbnRGbGFnKGFyZ3ZbMV0pOwotICByZXR1cm4gMDsKLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVz
dC5jYwppbmRleCBjOTM5MjYxNGQ3NGQ3ZmMyMzJlODZiMmMzZDZjZGIxYjFlMmI2MTMxLi5iYzk1
MjRkNjYzNzNlNzE5NTFjYWNjZDkwNmMwNjZlZjRhZjk0YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudmlyb25tZW50X3Rlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjCkBAIC0y
NiwxNCArMjYsMTQgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIC8v
CiAvLyBUZXN0cyB1c2luZyBnbG9iYWwgdGVzdCBlbnZpcm9ubWVudHMuCiAKICNpbmNsdWRlIDxz
dGRsaWIuaD4KICNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Cisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5s
LmgiCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhmaWx0ZXIp
OwpAQCAtOTIsNiArOTIsNyBAQCBjbGFzcyBNeUVudmlyb25tZW50IDogcHVibGljIHRlc3Rpbmc6
OkVudmlyb25tZW50IHsKIAogICAvLyBXYXMgVGVhckRvd24oKSBydW4/CiAgIGJvb2wgdGVhcl9k
b3duX3dhc19ydW4oKSBjb25zdCB7IHJldHVybiB0ZWFyX2Rvd25fd2FzX3J1bl87IH0KKwogIHBy
aXZhdGU6CiAgIEZhaWx1cmVUeXBlIGZhaWx1cmVfaW5fc2V0X3VwXzsKICAgYm9vbCBzZXRfdXBf
d2FzX3J1bl87CkBAIC0xMTEsNyArMTEyLDcgQEAgVEVTVChGb29UZXN0LCBCYXIpIHsKIHZvaWQg
Q2hlY2soYm9vbCBjb25kaXRpb24sIGNvbnN0IGNoYXIqIG1zZykgewogICBpZiAoIWNvbmRpdGlv
bikgewogICAgIHByaW50ZigiRkFJTEVEOiAlc1xuIiwgbXNnKTsKLSAgICBhYm9ydCgpOworICAg
IHRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6QWJvcnQoKTsKICAgfQogfQogCkBAIC0xMjMsNiAr
MTI0LDcgQEAgaW50IFJ1bkFsbFRlc3RzKE15RW52aXJvbm1lbnQqIGVudiwgRmFpbHVyZVR5cGUg
ZmFpbHVyZSkgewogICBlbnYtPlJlc2V0KCk7CiAgIGVudi0+c2V0X2ZhaWx1cmVfaW5fc2V0X3Vw
KGZhaWx1cmUpOwogICB0ZXN0X3dhc19ydW4gPSBmYWxzZTsKKyAgdGVzdGluZzo6aW50ZXJuYWw6
OkdldFVuaXRUZXN0SW1wbCgpLT5DbGVhckFkSG9jVGVzdFJlc3VsdCgpOwogICByZXR1cm4gUlVO
X0FMTF9URVNUUygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X2ZpbHRlcl91bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCAwZDFhNzcwMDU4Y2NiOTAxMTU0NjgwOTI0Y2JkM2M2NGQ4YzhkMTc5Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjMzICsw
LDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNSBHb29nbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0j
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVW5pdCB0
ZXN0IGZvciBHb29nbGUgVGVzdCB0ZXN0IGZpbHRlcnMuCi0KLUEgdXNlciBjYW4gc3BlY2lmeSB3
aGljaCB0ZXN0KHMpIGluIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSB0byBydW4gdmlhIGVpdGhlcgot
dGhlIEdURVNUX0ZJTFRFUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUgLS1ndGVzdF9maWx0
ZXIgZmxhZy4KLVRoaXMgc2NyaXB0IHRlc3RzIHN1Y2ggZnVuY3Rpb25hbGl0eSBieSBpbnZva2lu
ZwotZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aCBHb29nbGUg
VGVzdCkgd2l0aCBkaWZmZXJlbnQKLWVudmlyb25tZW50cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdz
LgotCi1Ob3RlIHRoYXQgdGVzdCBzaGFyZGluZyBtYXkgYWxzbyBpbmZsdWVuY2Ugd2hpY2ggdGVz
dHMgYXJlIGZpbHRlcmVkLiBUaGVyZWZvcmUsCi13ZSB0ZXN0IHRoYXQgaGVyZSBhbHNvLgotIiIi
Ci0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9y
dCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2V0cwotaW1wb3J0IHN5cwotCi1pbXBvcnQgZ3Rlc3Rf
dGVzdF91dGlscwotCi0jIENvbnN0YW50cy4KLQotIyBDaGVja3MgaWYgdGhpcyBwbGF0Zm9ybSBj
YW4gcGFzcyBlbXB0eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gY2hpbGQKLSMgcHJvY2Vzc2Vz
LiAgV2Ugc2V0IGFuIGVudiB2YXJpYWJsZSB0byBhbiBlbXB0eSBzdHJpbmcgYW5kIGludm9rZSBh
IHB5dGhvbgotIyBzY3JpcHQgaW4gYSBzdWJwcm9jZXNzIHRvIHByaW50IHdoZXRoZXIgdGhlIHZh
cmlhYmxlIGlzIFNUSUxMIGluCi0jIG9zLmVudmlyb24uICBXZSB0aGVuIHVzZSAnZXZhbCcgdG8g
cGFyc2UgdGhlIGNoaWxkJ3Mgb3V0cHV0IHNvIHRoYXQgYW4KLSMgZXhjZXB0aW9uIGlzIHRocm93
biBpZiB0aGUgaW5wdXQgaXMgYW55dGhpbmcgb3RoZXIgdGhhbiAnVHJ1ZScgbm9yICdGYWxzZScu
Ci1vcy5lbnZpcm9uWydFTVBUWV9WQVInXSA9ICcnCi1jaGlsZCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
U3VicHJvY2VzcygKLSAgICBbc3lzLmV4ZWN1dGFibGUsICctYycsICdpbXBvcnQgb3M7IHByaW50
IFwnRU1QVFlfVkFSXCcgaW4gb3MuZW52aXJvbiddKQotQ0FOX1BBU1NfRU1QVFlfRU5WID0gZXZh
bChjaGlsZC5vdXRwdXQpCi0KLQotIyBDaGVjayBpZiB0aGlzIHBsYXRmb3JtIGNhbiB1bnNldCBl
bnZpcm9ubWVudCB2YXJpYWJsZXMgaW4gY2hpbGQgcHJvY2Vzc2VzLgotIyBXZSBzZXQgYW4gZW52
IHZhcmlhYmxlIHRvIGEgbm9uLWVtcHR5IHN0cmluZywgdW5zZXQgaXQsIGFuZCBpbnZva2UKLSMg
YSBweXRob24gc2NyaXB0IGluIGEgc3VicHJvY2VzcyB0byBwcmludCB3aGV0aGVyIHRoZSB2YXJp
YWJsZQotIyBpcyBOTyBMT05HRVIgaW4gb3MuZW52aXJvbi4KLSMgV2UgdXNlICdldmFsJyB0byBw
YXJzZSB0aGUgY2hpbGQncyBvdXRwdXQgc28gdGhhdCBhbiBleGNlcHRpb24KLSMgaXMgdGhyb3du
IGlmIHRoZSBpbnB1dCBpcyBuZWl0aGVyICdUcnVlJyBub3IgJ0ZhbHNlJy4KLW9zLmVudmlyb25b
J1VOU0VUX1ZBUiddID0gJ1gnCi1kZWwgb3MuZW52aXJvblsnVU5TRVRfVkFSJ10KLWNoaWxkID0g
Z3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAotICAgIFtzeXMuZXhlY3V0YWJsZSwgJy1jJywg
J2ltcG9ydCBvczsgcHJpbnQgXCdVTlNFVF9WQVJcJyBub3QgaW4gb3MuZW52aXJvbiddKQotQ0FO
X1VOU0VUX0VOViA9IGV2YWwoY2hpbGQub3V0cHV0KQotCi0KLSMgQ2hlY2tzIGlmIHdlIHNob3Vs
ZCB0ZXN0IHdpdGggYW4gZW1wdHkgZmlsdGVyLiBUaGlzIGRvZXNuJ3QKLSMgbWFrZSBzZW5zZSBv
biBwbGF0Zm9ybXMgdGhhdCBjYW5ub3QgcGFzcyBlbXB0eSBlbnYgdmFyaWFibGVzIChXaW4zMikK
LSMgYW5kIG9uIHBsYXRmb3JtcyB0aGF0IGNhbm5vdCB1bnNldCB2YXJpYWJsZXMgKHNpbmNlIHdl
IGNhbm5vdCB0ZWxsCi0jIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gIiIgYW5kIE5VTEwgLS0gQm9y
bGFuZCBhbmQgU29sYXJpcyA8IDUuMTApCi1DQU5fVEVTVF9FTVBUWV9GSUxURVIgPSAoQ0FOX1BB
U1NfRU1QVFlfRU5WIGFuZCBDQU5fVU5TRVRfRU5WKQotCi0KLSMgVGhlIGVudmlyb25tZW50IHZh
cmlhYmxlIGZvciBzcGVjaWZ5aW5nIHRoZSB0ZXN0IGZpbHRlcnMuCi1GSUxURVJfRU5WX1ZBUiA9
ICdHVEVTVF9GSUxURVInCi0KLSMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBz
aGFyZGluZy4KLVRPVEFMX1NIQVJEU19FTlZfVkFSID0gJ0dURVNUX1RPVEFMX1NIQVJEUycKLVNI
QVJEX0lOREVYX0VOVl9WQVIgPSAnR1RFU1RfU0hBUkRfSU5ERVgnCi1TSEFSRF9TVEFUVVNfRklM
RV9FTlZfVkFSID0gJ0dURVNUX1NIQVJEX1NUQVRVU19GSUxFJwotCi0jIFRoZSBjb21tYW5kIGxp
bmUgZmxhZyBmb3Igc3BlY2lmeWluZyB0aGUgdGVzdCBmaWx0ZXJzLgotRklMVEVSX0ZMQUcgPSAn
Z3Rlc3RfZmlsdGVyJwotCi0jIFRoZSBjb21tYW5kIGxpbmUgZmxhZyBmb3IgaW5jbHVkaW5nIGRp
c2FibGVkIHRlc3RzLgotQUxTT19SVU5fRElTQUJFRF9URVNUU19GTEFHID0gJ2d0ZXN0X2Fsc29f
cnVuX2Rpc2FibGVkX3Rlc3RzJwotCi0jIENvbW1hbmQgdG8gcnVuIHRoZSBndGVzdF9maWx0ZXJf
dW5pdHRlc3RfIHByb2dyYW0uCi1DT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhl
Y3V0YWJsZVBhdGgoJ2d0ZXN0X2ZpbHRlcl91bml0dGVzdF8nKQotCi0jIFJlZ2V4IGZvciBkZXRl
cm1pbmluZyB3aGV0aGVyIHBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQgaW4gdGhlIGJp
bmFyeS4KLVBBUkFNX1RFU1RfUkVHRVggPSByZS5jb21waWxlKHInL1BhcmFtVGVzdCcpCi0KLSMg
UmVnZXggZm9yIHBhcnNpbmcgdGVzdCBjYXNlIG5hbWVzIGZyb20gR29vZ2xlIFRlc3QncyBvdXRw
dXQuCi1URVNUX0NBU0VfUkVHRVggPSByZS5jb21waWxlKHInXlxbXC0rXF0gXGQrIHRlc3RzPyBm
cm9tIChcdysoL1x3Kyk/KScpCi0KLSMgUmVnZXggZm9yIHBhcnNpbmcgdGVzdCBuYW1lcyBmcm9t
IEdvb2dsZSBUZXN0J3Mgb3V0cHV0LgotVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocideXFtccypS
VU5ccypcXS4qXC4oXHcrKC9cdyspPyknKQotCi0jIFRoZSBjb21tYW5kIGxpbmUgZmxhZyB0byB0
ZWxsIEdvb2dsZSBUZXN0IHRvIG91dHB1dCB0aGUgbGlzdCBvZiB0ZXN0cyBpdAotIyB3aWxsIHJ1
bi4KLUxJU1RfVEVTVFNfRkxBRyA9ICctLWd0ZXN0X2xpc3RfdGVzdHMnCi0KLSMgSW5kaWNhdGVz
IHdoZXRoZXIgR29vZ2xlIFRlc3Qgc3VwcG9ydHMgZGVhdGggdGVzdHMuCi1TVVBQT1JUU19ERUFU
SF9URVNUUyA9ICdIYXNEZWF0aFRlc3QnIGluIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygK
LSAgICBbQ09NTUFORCwgTElTVF9URVNUU19GTEFHXSkub3V0cHV0Ci0KLSMgRnVsbCBuYW1lcyBv
ZiBhbGwgdGVzdHMgaW4gZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0c18uCi1QQVJBTV9URVNUUyA9IFsK
LSAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMCcsCi0gICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RY
LzEnLAotICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAnU2VxUC9QYXJhbVRlc3Qu
VGVzdFkvMScsCi0gICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RYLzAnLAotICAgICdTZXFRL1BhcmFt
VGVzdC5UZXN0WC8xJywKLSAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFkvMCcsCi0gICAgJ1NlcVEv
UGFyYW1UZXN0LlRlc3RZLzEnLAotICAgIF0KLQotRElTQUJMRURfVEVTVFMgPSBbCi0gICAgJ0Jh
clRlc3QuRElTQUJMRURfVGVzdEZvdXInLAotICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rlc3RGaXZl
JywKLSAgICAnQmF6VGVzdC5ESVNBQkxFRF9UZXN0QycsCi0gICAgJ0RJU0FCTEVEX0Zvb2JhclRl
c3QuVGVzdDEnLAotICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywKLSAg
ICAnRElTQUJMRURfRm9vYmFyYmF6VGVzdC5UZXN0QScsCi0gICAgXQotCi1pZiBTVVBQT1JUU19E
RUFUSF9URVNUUzoKLSAgREVBVEhfVEVTVFMgPSBbCi0gICAgJ0hhc0RlYXRoVGVzdC5UZXN0MScs
Ci0gICAgJ0hhc0RlYXRoVGVzdC5UZXN0MicsCi0gICAgXQotZWxzZToKLSAgREVBVEhfVEVTVFMg
PSBbXQotCi0jIEFsbCB0aGUgbm9uLWRpc2FibGVkIHRlc3RzLgotQUNUSVZFX1RFU1RTID0gWwot
ICAgICdGb29UZXN0LkFiYycsCi0gICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICdCYXJUZXN0LlRl
c3RPbmUnLAotICAgICdCYXJUZXN0LlRlc3RUd28nLAotICAgICdCYXJUZXN0LlRlc3RUaHJlZScs
Ci0KLSAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAgICAnQmF6VGVzdC5UZXN0QScsCi0gICAgJ0Jh
elRlc3QuVGVzdEInLAotICAgIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTCi0KLXBhcmFt
X3Rlc3RzX3ByZXNlbnQgPSBOb25lCi0KLSMgVXRpbGl0aWVzLgotCi1lbnZpcm9uID0gb3MuZW52
aXJvbi5jb3B5KCkKLQotCi1kZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToKLSAgIiIiU2V0
cyB0aGUgZW52IHZhcmlhYmxlIHRvICd2YWx1ZSc7IHVuc2V0cyBpdCB3aGVuICd2YWx1ZScgaXMg
Tm9uZS4iIiIKLQotICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICBlbnZpcm9uW2Vudl92YXJd
ID0gdmFsdWUKLSAgZWxpZiBlbnZfdmFyIGluIGVudmlyb246Ci0gICAgZGVsIGVudmlyb25bZW52
X3Zhcl0KLQotCi1kZWYgUnVuQW5kUmV0dXJuT3V0cHV0KGFyZ3MgPSBOb25lKToKLSAgIiIiUnVu
cyB0aGUgdGVzdCBwcm9ncmFtIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQuIiIiCi0KLSAgcmV0dXJu
IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhbQ09NTUFORF0gKyAoYXJncyBvciBbXSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudmlyb24pLm91dHB1dAot
Ci0KLWRlZiBSdW5BbmRFeHRyYWN0VGVzdExpc3QoYXJncyA9IE5vbmUpOgotICAiIiJSdW5zIHRo
ZSB0ZXN0IHByb2dyYW0gYW5kIHJldHVybnMgaXRzIGV4aXQgY29kZSBhbmQgYSBsaXN0IG9mIHRl
c3RzIHJ1bi4iIiIKLQotICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtDT01NQU5E
XSArIChhcmdzIG9yIFtdKSwgZW52PWVudmlyb24pCi0gIHRlc3RzX3J1biA9IFtdCi0gIHRlc3Rf
Y2FzZSA9ICcnCi0gIHRlc3QgPSAnJwotICBmb3IgbGluZSBpbiBwLm91dHB1dC5zcGxpdCgnXG4n
KToKLSAgICBtYXRjaCA9IFRFU1RfQ0FTRV9SRUdFWC5tYXRjaChsaW5lKQotICAgIGlmIG1hdGNo
IGlzIG5vdCBOb25lOgotICAgICAgdGVzdF9jYXNlID0gbWF0Y2guZ3JvdXAoMSkKLSAgICBlbHNl
OgotICAgICAgbWF0Y2ggPSBURVNUX1JFR0VYLm1hdGNoKGxpbmUpCi0gICAgICBpZiBtYXRjaCBp
cyBub3QgTm9uZToKLSAgICAgICAgdGVzdCA9IG1hdGNoLmdyb3VwKDEpCi0gICAgICAgIHRlc3Rz
X3J1bi5hcHBlbmQodGVzdF9jYXNlICsgJy4nICsgdGVzdCkKLSAgcmV0dXJuICh0ZXN0c19ydW4s
IHAuZXhpdF9jb2RlKQotCi0KLWRlZiBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LCBm
dW5jdGlvbiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgIiIiUnVucyB0aGUgZ2l2ZW4gZnVuY3Rpb24g
YW5kIGFyZ3VtZW50cyBpbiBhIG1vZGlmaWVkIGVudmlyb25tZW50LiIiIgotICB0cnk6Ci0gICAg
b3JpZ2luYWxfZW52ID0gZW52aXJvbi5jb3B5KCkKLSAgICBlbnZpcm9uLnVwZGF0ZShleHRyYV9l
bnYpCi0gICAgcmV0dXJuIGZ1bmN0aW9uKCphcmdzLCAqKmt3YXJncykKLSAgZmluYWxseToKLSAg
ICBlbnZpcm9uLmNsZWFyKCkKLSAgICBlbnZpcm9uLnVwZGF0ZShvcmlnaW5hbF9lbnYpCi0KLQot
ZGVmIFJ1bldpdGhTaGFyZGluZyh0b3RhbF9zaGFyZHMsIHNoYXJkX2luZGV4LCBjb21tYW5kKToK
LSAgIiIiUnVucyBhIHRlc3QgcHJvZ3JhbSBzaGFyZCBhbmQgcmV0dXJucyBleGl0IGNvZGUgYW5k
IGEgbGlzdCBvZiB0ZXN0cyBydW4uIiIiCi0KLSAgZXh0cmFfZW52ID0ge1NIQVJEX0lOREVYX0VO
Vl9WQVI6IHN0cihzaGFyZF9pbmRleCksCi0gICAgICAgICAgICAgICBUT1RBTF9TSEFSRFNfRU5W
X1ZBUjogc3RyKHRvdGFsX3NoYXJkcyl9Ci0gIHJldHVybiBJbnZva2VXaXRoTW9kaWZpZWRFbnYo
ZXh0cmFfZW52LCBSdW5BbmRFeHRyYWN0VGVzdExpc3QsIGNvbW1hbmQpCi0KLSMgVGhlIHVuaXQg
dGVzdC4KLQotCi1jbGFzcyBHVGVzdEZpbHRlclVuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVz
dENhc2UpOgotICAiIiJUZXN0cyB0aGUgZW52IHZhcmlhYmxlIG9yIHRoZSBjb21tYW5kIGxpbmUg
ZmxhZyB0byBmaWx0ZXIgdGVzdHMuIiIiCi0KLSAgIyBVdGlsaXRpZXMuCi0KLSAgZGVmIEFzc2Vy
dFNldEVxdWFsKHNlbGYsIGxocywgcmhzKToKLSAgICAiIiJBc3NlcnRzIHRoYXQgdHdvIHNldHMg
YXJlIGVxdWFsLiIiIgotCi0gICAgZm9yIGVsZW0gaW4gbGhzOgotICAgICAgc2VsZi5hc3NlcnRf
KGVsZW0gaW4gcmhzLCAnJXMgaW4gJXMnICUgKGVsZW0sIHJocykpCi0KLSAgICBmb3IgZWxlbSBp
biByaHM6Ci0gICAgICBzZWxmLmFzc2VydF8oZWxlbSBpbiBsaHMsICclcyBpbiAlcycgJSAoZWxl
bSwgbGhzKSkKLQotICBkZWYgQXNzZXJ0UGFydGl0aW9uSXNWYWxpZChzZWxmLCBzZXRfdmFyLCBs
aXN0X29mX3NldHMpOgotICAgICIiIkFzc2VydHMgdGhhdCBsaXN0X29mX3NldHMgaXMgYSB2YWxp
ZCBwYXJ0aXRpb24gb2Ygc2V0X3Zhci4iIiIKLQotICAgIGZ1bGxfcGFydGl0aW9uID0gW10KLSAg
ICBmb3Igc2xpY2VfdmFyIGluIGxpc3Rfb2Zfc2V0czoKLSAgICAgIGZ1bGxfcGFydGl0aW9uLmV4
dGVuZChzbGljZV92YXIpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2V0X3ZhciksIGxlbihm
dWxsX3BhcnRpdGlvbikpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzZXRzLlNldChzZXRfdmFyKSwg
c2V0cy5TZXQoZnVsbF9wYXJ0aXRpb24pKQotCi0gIGRlZiBBZGp1c3RGb3JQYXJhbWV0ZXJpemVk
VGVzdHMoc2VsZiwgdGVzdHNfdG9fcnVuKToKLSAgICAiIiJBZGp1c3QgdGVzdHNfdG9fcnVuIGlu
IGNhc2UgdmFsdWUgcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZGlzYWJsZWQuIiIiCi0KLSAgICBn
bG9iYWwgcGFyYW1fdGVzdHNfcHJlc2VudAotICAgIGlmIG5vdCBwYXJhbV90ZXN0c19wcmVzZW50
OgotICAgICAgcmV0dXJuIGxpc3Qoc2V0cy5TZXQodGVzdHNfdG9fcnVuKSAtIHNldHMuU2V0KFBB
UkFNX1RFU1RTKSkKLSAgICBlbHNlOgotICAgICAgcmV0dXJuIHRlc3RzX3RvX3J1bgotCi0gIGRl
ZiBSdW5BbmRWZXJpZnkoc2VsZiwgZ3Rlc3RfZmlsdGVyLCB0ZXN0c190b19ydW4pOgotICAgICIi
IkNoZWNrcyB0aGF0IHRoZSBiaW5hcnkgcnVucyBjb3JyZWN0IHNldCBvZiB0ZXN0cyBmb3IgYSBn
aXZlbiBmaWx0ZXIuIiIiCi0KLSAgICB0ZXN0c190b19ydW4gPSBzZWxmLkFkanVzdEZvclBhcmFt
ZXRlcml6ZWRUZXN0cyh0ZXN0c190b19ydW4pCi0KLSAgICAjIEZpcnN0LCB0ZXN0cyB1c2luZyB0
aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0KLSAgICAjIFdpbmRvd3MgcmVtb3ZlcyBlbXB0eSB2
YXJpYWJsZXMgZnJvbSB0aGUgZW52aXJvbm1lbnQgd2hlbiBwYXNzaW5nIGl0Ci0gICAgIyB0byBh
IG5ldyBwcm9jZXNzLiAgVGhpcyBtZWFucyBpdCBpcyBpbXBvc3NpYmxlIHRvIHBhc3MgYW4gZW1w
dHkgZmlsdGVyCi0gICAgIyBpbnRvIGEgcHJvY2VzcyB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFy
aWFibGUuICBIb3dldmVyLCB3ZSBjYW4gc3RpbGwKLSAgICAjIHRlc3QgdGhlIGNhc2Ugd2hlbiB0
aGUgdmFyaWFibGUgaXMgbm90IHN1cHBsaWVkIChpLmUuLCBndGVzdF9maWx0ZXIgaXMKLSAgICAj
IE5vbmUpLgotICAgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwMwotICAgIGlmIENBTl9URVNU
X0VNUFRZX0ZJTFRFUiBvciBndGVzdF9maWx0ZXIgIT0gJyc6Ci0gICAgICBTZXRFbnZWYXIoRklM
VEVSX0VOVl9WQVIsIGd0ZXN0X2ZpbHRlcikKLSAgICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4dHJh
Y3RUZXN0TGlzdCgpWzBdCi0gICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIE5vbmUpCi0g
ICAgICBzZWxmLkFzc2VydFNldEVxdWFsKHRlc3RzX3J1biwgdGVzdHNfdG9fcnVuKQotICAgICMg
cHlsaW50OiBlbmFibGUtbXNnPUM2NDAzCi0KLSAgICAjIE5leHQsIHRlc3RzIHVzaW5nIHRoZSBj
b21tYW5kIGxpbmUgZmxhZy4KLQotICAgIGlmIGd0ZXN0X2ZpbHRlciBpcyBOb25lOgotICAgICAg
YXJncyA9IFtdCi0gICAgZWxzZToKLSAgICAgIGFyZ3MgPSBbJy0tJXM9JXMnICUgKEZJTFRFUl9G
TEFHLCBndGVzdF9maWx0ZXIpXQotCi0gICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RM
aXN0KGFyZ3MpWzBdCi0gICAgc2VsZi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIHRlc3RzX3Rv
X3J1bikKLQotICBkZWYgUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKHNlbGYsIGd0ZXN0X2ZpbHRl
ciwgdG90YWxfc2hhcmRzLCB0ZXN0c190b19ydW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJncz1Ob25lLCBjaGVja19leGl0XzA9RmFsc2UpOgotICAgICIiIkNoZWNrcyB0aGF0
IGJpbmFyeSBydW5zIGNvcnJlY3QgdGVzdHMgZm9yIHRoZSBnaXZlbiBmaWx0ZXIgYW5kIHNoYXJk
LgotCi0gICAgUnVucyBhbGwgc2hhcmRzIG9mIGd0ZXN0X2ZpbHRlcl91bml0dGVzdF8gd2l0aCB0
aGUgZ2l2ZW4gZmlsdGVyLCBhbmQKLSAgICB2ZXJpZmllcyB0aGF0IHRoZSByaWdodCBzZXQgb2Yg
dGVzdHMgd2VyZSBydW4uIFRoZSB1bmlvbiBvZiB0ZXN0cyBydW4KLSAgICBvbiBlYWNoIHNoYXJk
IHNob3VsZCBiZSBpZGVudGljYWwgdG8gdGVzdHNfdG9fcnVuLCB3aXRob3V0IGR1cGxpY2F0ZXMu
Ci0KLSAgICBBcmdzOgotICAgICAgZ3Rlc3RfZmlsdGVyOiBBIGZpbHRlciB0byBhcHBseSB0byB0
aGUgdGVzdHMuCi0gICAgICB0b3RhbF9zaGFyZHM6IEEgdG90YWwgbnVtYmVyIG9mIHNoYXJkcyB0
byBzcGxpdCB0ZXN0IHJ1biBpbnRvLgotICAgICAgdGVzdHNfdG9fcnVuOiBBIHNldCBvZiB0ZXN0
cyBleHBlY3RlZCB0byBydW4uCi0gICAgICBhcmdzICAgOiAgICAgIEFyZ3VtZW50cyB0byBwYXNz
IHRvIHRoZSB0byB0aGUgdGVzdCBiaW5hcnkuCi0gICAgICBjaGVja19leGl0XzA6IFdoZW4gc2V0
IHRvIGEgdHJ1ZSB2YWx1ZSwgbWFrZSBzdXJlIHRoYXQgYWxsIHNoYXJkcwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMC4KLSAgICAiIiIKLQotICAgIHRlc3RzX3RvX3J1biA9IHNlbGYuQWRq
dXN0Rm9yUGFyYW1ldGVyaXplZFRlc3RzKHRlc3RzX3RvX3J1bikKLQotICAgICMgV2luZG93cyBy
ZW1vdmVzIGVtcHR5IHZhcmlhYmxlcyBmcm9tIHRoZSBlbnZpcm9ubWVudCB3aGVuIHBhc3Npbmcg
aXQKLSAgICAjIHRvIGEgbmV3IHByb2Nlc3MuICBUaGlzIG1lYW5zIGl0IGlzIGltcG9zc2libGUg
dG8gcGFzcyBhbiBlbXB0eSBmaWx0ZXIKLSAgICAjIGludG8gYSBwcm9jZXNzIHVzaW5nIHRoZSBl
bnZpcm9ubWVudCB2YXJpYWJsZS4gIEhvd2V2ZXIsIHdlIGNhbiBzdGlsbAotICAgICMgdGVzdCB0
aGUgY2FzZSB3aGVuIHRoZSB2YXJpYWJsZSBpcyBub3Qgc3VwcGxpZWQgKGkuZS4sIGd0ZXN0X2Zp
bHRlciBpcwotICAgICMgTm9uZSkuCi0gICAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2NDAzCi0g
ICAgaWYgQ0FOX1RFU1RfRU1QVFlfRklMVEVSIG9yIGd0ZXN0X2ZpbHRlciAhPSAnJzoKLSAgICAg
IFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgZ3Rlc3RfZmlsdGVyKQotICAgICAgcGFydGl0aW9u
ID0gW10KLSAgICAgIGZvciBpIGluIHJhbmdlKDAsIHRvdGFsX3NoYXJkcyk6Ci0gICAgICAgICh0
ZXN0c19ydW4sIGV4aXRfY29kZSkgPSBSdW5XaXRoU2hhcmRpbmcodG90YWxfc2hhcmRzLCBpLCBh
cmdzKQotICAgICAgICBpZiBjaGVja19leGl0XzA6Ci0gICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgwLCBleGl0X2NvZGUpCi0gICAgICAgIHBhcnRpdGlvbi5hcHBlbmQodGVzdHNfcnVuKQotCi0g
ICAgICBzZWxmLkFzc2VydFBhcnRpdGlvbklzVmFsaWQodGVzdHNfdG9fcnVuLCBwYXJ0aXRpb24p
Ci0gICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIE5vbmUpCi0gICAgIyBweWxpbnQ6IGVu
YWJsZS1tc2c9QzY0MDMKLQotICBkZWYgUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZChzZWxm
LCBndGVzdF9maWx0ZXIsIHRlc3RzX3RvX3J1bik6Ci0gICAgIiIiQ2hlY2tzIHRoYXQgdGhlIGJp
bmFyeSBydW5zIGNvcnJlY3Qgc2V0IG9mIHRlc3RzIGZvciB0aGUgZ2l2ZW4gZmlsdGVyLgotCi0g
ICAgUnVucyBndGVzdF9maWx0ZXJfdW5pdHRlc3RfIHdpdGggdGhlIGdpdmVuIGZpbHRlciwgYW5k
IGVuYWJsZXMKLSAgICBkaXNhYmxlZCB0ZXN0cy4gVmVyaWZpZXMgdGhhdCB0aGUgcmlnaHQgc2V0
IG9mIHRlc3RzIHdlcmUgcnVuLgotCi0gICAgQXJnczoKLSAgICAgIGd0ZXN0X2ZpbHRlcjogQSBm
aWx0ZXIgdG8gYXBwbHkgdG8gdGhlIHRlc3RzLgotICAgICAgdGVzdHNfdG9fcnVuOiBBIHNldCBv
ZiB0ZXN0cyBleHBlY3RlZCB0byBydW4uCi0gICAgIiIiCi0KLSAgICB0ZXN0c190b19ydW4gPSBz
ZWxmLkFkanVzdEZvclBhcmFtZXRlcml6ZWRUZXN0cyh0ZXN0c190b19ydW4pCi0KLSAgICAjIENv
bnN0cnVjdCB0aGUgY29tbWFuZCBsaW5lLgotICAgIGFyZ3MgPSBbJy0tJXMnICUgQUxTT19SVU5f
RElTQUJFRF9URVNUU19GTEFHXQotICAgIGlmIGd0ZXN0X2ZpbHRlciBpcyBub3QgTm9uZToKLSAg
ICAgIGFyZ3MuYXBwZW5kKCctLSVzPSVzJyAlIChGSUxURVJfRkxBRywgZ3Rlc3RfZmlsdGVyKSkK
LQotICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0TGlzdChhcmdzKVswXQotICAgIHNl
bGYuQXNzZXJ0U2V0RXF1YWwodGVzdHNfcnVuLCB0ZXN0c190b19ydW4pCi0KLSAgZGVmIHNldFVw
KHNlbGYpOgotICAgICIiIlNldHMgdXAgdGVzdCBjYXNlLgotCi0gICAgRGV0ZXJtaW5lcyB3aGV0
aGVyIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQgaW4gdGhlIGJpbmFyeSBh
bmQKLSAgICBzZXRzIHRoZSBmbGFncyBhY2NvcmRpbmdseS4KLSAgICAiIiIKLQotICAgIGdsb2Jh
bCBwYXJhbV90ZXN0c19wcmVzZW50Ci0gICAgaWYgcGFyYW1fdGVzdHNfcHJlc2VudCBpcyBOb25l
OgotICAgICAgcGFyYW1fdGVzdHNfcHJlc2VudCA9IFBBUkFNX1RFU1RfUkVHRVguc2VhcmNoKAot
ICAgICAgICAgIFJ1bkFuZFJldHVybk91dHB1dCgpKSBpcyBub3QgTm9uZQotCi0gIGRlZiB0ZXN0
RGVmYXVsdEJlaGF2aW9yKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiBub3Qg
c3BlY2lmeWluZyB0aGUgZmlsdGVyLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoTm9uZSwg
QUNUSVZFX1RFU1RTKQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9yV2l0aFNoYXJkcyhzZWxm
KToKLSAgICAiIiJUZXN0cyB0aGUgYmVoYXZpb3Igd2l0aG91dCB0aGUgZmlsdGVyLCB3aXRoIHNo
YXJkaW5nIGVuYWJsZWQuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhO
b25lLCAxLCBBQ1RJVkVfVEVTVFMpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmco
Tm9uZSwgMiwgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5n
KE5vbmUsIGxlbihBQ1RJVkVfVEVTVFMpIC0gMSwgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVu
QW5kVmVyaWZ5V2l0aFNoYXJkaW5nKE5vbmUsIGxlbihBQ1RJVkVfVEVTVFMpLCBBQ1RJVkVfVEVT
VFMpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgbGVuKEFDVElWRV9U
RVNUUykgKyAxLCBBQ1RJVkVfVEVTVFMpCi0KLSAgZGVmIHRlc3RFbXB0eUZpbHRlcihzZWxmKToK
LSAgICAiIiJUZXN0cyBhbiBlbXB0eSBmaWx0ZXIuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlm
eSgnJywgW10pCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJycsIDEsIFtdKQot
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKCcnLCAyLCBbXSkKLQotICBkZWYgdGVz
dEJhZEZpbHRlcihzZWxmKToKLSAgICAiIiJUZXN0cyBhIGZpbHRlciB0aGF0IG1hdGNoZXMgbm90
aGluZy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdCYWRGaWx0ZXInLCBbXSkKLSAgICBz
ZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0JhZEZpbHRlcicsIFtdKQotCi0gIGRl
ZiB0ZXN0RnVsbE5hbWUoc2VsZik6Ci0gICAgIiIiVGVzdHMgZmlsdGVyaW5nIGJ5IGZ1bGwgbmFt
ZS4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdGb29UZXN0Llh5eicsIFsnRm9vVGVzdC5Y
eXonXSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0Zvb1Rlc3QuWHl6
JywgWydGb29UZXN0Llh5eiddKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKCdG
b29UZXN0Llh5eicsIDUsIFsnRm9vVGVzdC5YeXonXSkKLQotICBkZWYgdGVzdFVuaXZlcnNhbEZp
bHRlcnMoc2VsZik6Ci0gICAgIiIiVGVzdHMgZmlsdGVycyB0aGF0IG1hdGNoIGV2ZXJ5dGhpbmcu
IiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKicsIEFDVElWRV9URVNUUykKLSAgICBzZWxm
LlJ1bkFuZFZlcmlmeSgnKi4qJywgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5
V2l0aFNoYXJkaW5nKCcqLionLCBsZW4oQUNUSVZFX1RFU1RTKSAtIDMsIEFDVElWRV9URVNUUykK
LSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJyonLCBBQ1RJVkVfVEVTVFMg
KyBESVNBQkxFRF9URVNUUykKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQo
JyouKicsIEFDVElWRV9URVNUUyArIERJU0FCTEVEX1RFU1RTKQotCi0gIGRlZiB0ZXN0RmlsdGVy
QnlUZXN0Q2FzZShzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0ZXJpbmcgYnkgdGVzdCBjYXNlIG5h
bWUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnRm9vVGVzdC4qJywgWydGb29UZXN0LkFi
YycsICdGb29UZXN0Llh5eiddKQotCi0gICAgQkFaX1RFU1RTID0gWydCYXpUZXN0LlRlc3RPbmUn
LCAnQmF6VGVzdC5UZXN0QScsICdCYXpUZXN0LlRlc3RCJ10KLSAgICBzZWxmLlJ1bkFuZFZlcmlm
eSgnQmF6VGVzdC4qJywgQkFaX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdE
aXNhYmxlZCgnQmF6VGVzdC4qJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQkFaX1RFU1RTICsgWydCYXpUZXN0LkRJU0FCTEVEX1Rlc3RDJ10pCi0KLSAgZGVmIHRlc3RG
aWx0ZXJCeVRlc3Qoc2VsZik6Ci0gICAgIiIiVGVzdHMgZmlsdGVyaW5nIGJ5IHRlc3QgbmFtZS4i
IiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLlRlc3RPbmUnLCBbJ0JhclRlc3QuVGVzdE9u
ZScsICdCYXpUZXN0LlRlc3RPbmUnXSkKLQotICBkZWYgdGVzdEZpbHRlckRpc2FibGVkVGVzdHMo
c2VsZik6Ci0gICAgIiIiU2VsZWN0IG9ubHkgdGhlIGRpc2FibGVkIHRlc3RzIHRvIHJ1bi4iIiIK
LQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdESVNBQkxFRF9Gb29iYXJUZXN0LlRlc3QxJywgW10p
Ci0gICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdESVNBQkxFRF9Gb29iYXJU
ZXN0LlRlc3QxJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydESVNB
QkxFRF9Gb29iYXJUZXN0LlRlc3QxJ10pCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKkRJU0FC
TEVEXyonLCBbXSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJypESVNB
QkxFRF8qJywgRElTQUJMRURfVEVTVFMpCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi5ESVNB
QkxFRF8qJywgW10pCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCcqLkRJ
U0FCTEVEXyonLCBbCi0gICAgICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rlc3RGb3VyJywKLSAgICAg
ICAgJ0JhclRlc3QuRElTQUJMRURfVGVzdEZpdmUnLAotICAgICAgICAnQmF6VGVzdC5ESVNBQkxF
RF9UZXN0QycsCi0gICAgICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywK
LSAgICAgICAgXSkKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdESVNBQkxFRF8qJywgW10pCi0g
ICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdESVNBQkxFRF8qJywgWwotICAg
ICAgICAnRElTQUJMRURfRm9vYmFyVGVzdC5UZXN0MScsCi0gICAgICAgICdESVNBQkxFRF9Gb29i
YXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywKLSAgICAgICAgJ0RJU0FCTEVEX0Zvb2JhcmJhelRlc3Qu
VGVzdEEnLAotICAgICAgICBdKQotCi0gIGRlZiB0ZXN0V2lsZGNhcmRJblRlc3RDYXNlTmFtZShz
ZWxmKToKLSAgICAiIiJUZXN0cyB1c2luZyB3aWxkY2FyZCBpbiB0aGUgdGVzdCBjYXNlIG5hbWUu
IiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKmEqLionLCBbCi0gICAgICAgICdCYXJUZXN0
LlRlc3RPbmUnLAotICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKLSAgICAgICAgJ0JhclRlc3Qu
VGVzdFRocmVlJywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAgICAgICAgJ0JhelRl
c3QuVGVzdEEnLAotICAgICAgICAnQmF6VGVzdC5UZXN0QicsIF0gKyBERUFUSF9URVNUUyArIFBB
UkFNX1RFU1RTKQotCi0gIGRlZiB0ZXN0V2lsZGNhcmRJblRlc3ROYW1lKHNlbGYpOgotICAgICIi
IlRlc3RzIHVzaW5nIHdpbGRjYXJkIGluIHRoZSB0ZXN0IG5hbWUuIiIiCi0KLSAgICBzZWxmLlJ1
bkFuZFZlcmlmeSgnKi4qQSonLCBbJ0Zvb1Rlc3QuQWJjJywgJ0JhelRlc3QuVGVzdEEnXSkKLQot
ICBkZWYgdGVzdEZpbHRlcldpdGhvdXREb3Qoc2VsZik6Ci0gICAgIiIiVGVzdHMgYSBmaWx0ZXIg
dGhhdCBoYXMgbm8gJy4nIGluIGl0LiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJyp6Kics
IFsKLSAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywK
LSAgICAgICAgJ0JhelRlc3QuVGVzdEEnLAotICAgICAgICAnQmF6VGVzdC5UZXN0QicsCi0gICAg
ICAgIF0pCi0KLSAgZGVmIHRlc3RUd29QYXR0ZXJucyhzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0
ZXJzIHRoYXQgY29uc2lzdCBvZiB0d28gcGF0dGVybnMuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeSgnRm9vKi4qOipBKicsIFsKLSAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAgICAgJ0Zv
b1Rlc3QuWHl6JywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0QScsCi0gICAgICAgIF0pCi0KLSAg
ICAjIEFuIGVtcHR5IHBhdHRlcm4gKyBhIG5vbi1lbXB0eSBvbmUKLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeSgnOipBKicsIFsnRm9vVGVzdC5BYmMnLCAnQmF6VGVzdC5UZXN0QSddKQotCi0gIGRlZiB0
ZXN0VGhyZWVQYXR0ZXJucyhzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0ZXJzIHRoYXQgY29uc2lz
dCBvZiB0aHJlZSBwYXR0ZXJucy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqb28qOipB
KjoqT25lJywgWwotICAgICAgICAnRm9vVGVzdC5BYmMnLAotICAgICAgICAnRm9vVGVzdC5YeXon
LAotCi0gICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RP
bmUnLAotICAgICAgICAnQmF6VGVzdC5UZXN0QScsCi0gICAgICAgIF0pCi0KLSAgICAjIFRoZSAy
bmQgcGF0dGVybiBpcyBlbXB0eS4KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKm9vKjo6Kk9uZScs
IFsKLSAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAg
ICAgICAnQmFyVGVzdC5UZXN0T25lJywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAg
ICAgICAgXSkKLQotICAgICMgVGhlIGxhc3QgMiBwYXR0ZXJucyBhcmUgZW1wdHkuCi0gICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoJypvbyo6OicsIFsKLSAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAg
ICAgJ0Zvb1Rlc3QuWHl6JywKLSAgICAgICAgXSkKLQotICBkZWYgdGVzdE5lZ2F0aXZlRmlsdGVy
cyhzZWxmKToKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi1CYXpUZXN0LlRlc3RPbmUnLCBbCi0g
ICAgICAgICdGb29UZXN0LkFiYycsCi0gICAgICAgICdGb29UZXN0Llh5eicsCi0KLSAgICAgICAg
J0JhclRlc3QuVGVzdE9uZScsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAotICAgICAgICAn
QmFyVGVzdC5UZXN0VGhyZWUnLAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RBJywKLSAgICAgICAg
J0JhelRlc3QuVGVzdEInLAotICAgICAgICBdICsgREVBVEhfVEVTVFMgKyBQQVJBTV9URVNUUykK
LQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLUZvb1Rlc3QuQWJjOkJhelRlc3QuKicsIFsKLSAg
ICAgICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKLSAgICAg
ICAgJ0JhclRlc3QuVGVzdFR3bycsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCi0gICAg
ICAgIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTKQotCi0gICAgc2VsZi5SdW5BbmRWZXJp
ZnkoJ0JhclRlc3QuKi1CYXJUZXN0LlRlc3RPbmUnLCBbCi0gICAgICAgICdCYXJUZXN0LlRlc3RU
d28nLAotICAgICAgICAnQmFyVGVzdC5UZXN0VGhyZWUnLAotICAgICAgICBdKQotCi0gICAgIyBU
ZXN0cyB3aXRob3V0IGxlYWRpbmcgJyonLgotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCctRm9vVGVz
dC5BYmM6Rm9vVGVzdC5YeXo6QmF6VGVzdC4qJywgWwotICAgICAgICAnQmFyVGVzdC5UZXN0T25l
JywKLSAgICAgICAgJ0JhclRlc3QuVGVzdFR3bycsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUaHJl
ZScsCi0gICAgICAgIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTKQotCi0gICAgIyBWYWx1
ZSBwYXJhbWV0ZXJpemVkIHRlc3RzLgotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLyonLCBQQVJB
TV9URVNUUykKLQotICAgICMgVmFsdWUgcGFyYW1ldGVyaXplZCB0ZXN0cyBmaWx0ZXJpbmcgYnkg
dGhlIHNlcXVlbmNlIG5hbWUuCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJ1NlcVAvKicsIFsKLSAg
ICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzAnLAotICAgICAgICAnU2VxUC9QYXJhbVRlc3Qu
VGVzdFgvMScsCi0gICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAgICAgJ1Nl
cVAvUGFyYW1UZXN0LlRlc3RZLzEnLAotICAgICAgICBdKQotCi0gICAgIyBWYWx1ZSBwYXJhbWV0
ZXJpemVkIHRlc3RzIGZpbHRlcmluZyBieSB0aGUgdGVzdCBuYW1lLgotICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KCcqLzAnLCBbCi0gICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywKLSAgICAg
ICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzAnLAotICAgICAgICAnU2VxUS9QYXJhbVRlc3QuVGVz
dFgvMCcsCi0gICAgICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAgICAgXSkKLQot
ICBkZWYgdGVzdEZsYWdPdmVycmlkZXNFbnZWYXIoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCB0
aGUgZmlsdGVyIGZsYWcgb3ZlcnJpZGVzIHRoZSBmaWx0ZXJpbmcgZW52LiB2YXJpYWJsZS4iIiIK
LQotICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgJ0ZvbyonKQotICAgIGFyZ3MgPSBbJy0t
JXM9JXMnICUgKEZJTFRFUl9GTEFHLCAnKk9uZScpXQotICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4
dHJhY3RUZXN0TGlzdChhcmdzKVswXQotICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgTm9u
ZSkKLQotICAgIHNlbGYuQXNzZXJ0U2V0RXF1YWwodGVzdHNfcnVuLCBbJ0JhclRlc3QuVGVzdE9u
ZScsICdCYXpUZXN0LlRlc3RPbmUnXSkKLQotICBkZWYgdGVzdFNoYXJkU3RhdHVzRmlsZUlzQ3Jl
YXRlZChzZWxmKToKLSAgICAiIiJUZXN0cyB0aGF0IHRoZSBzaGFyZCBmaWxlIGlzIGNyZWF0ZWQg
aWYgc3BlY2lmaWVkIGluIHRoZSBlbnZpcm9ubWVudC4iIiIKLQotICAgIHNoYXJkX3N0YXR1c19m
aWxlID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGFyZF9zdGF0dXNfZmlsZScpCi0gICAg
c2VsZi5hc3NlcnRfKG5vdCBvcy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkpCi0KLSAg
ICBleHRyYV9lbnYgPSB7U0hBUkRfU1RBVFVTX0ZJTEVfRU5WX1ZBUjogc2hhcmRfc3RhdHVzX2Zp
bGV9Ci0gICAgdHJ5OgotICAgICAgSW52b2tlV2l0aE1vZGlmaWVkRW52KGV4dHJhX2VudiwgUnVu
QW5kUmV0dXJuT3V0cHV0KQotICAgIGZpbmFsbHk6Ci0gICAgICBzZWxmLmFzc2VydF8ob3MucGF0
aC5leGlzdHMoc2hhcmRfc3RhdHVzX2ZpbGUpKQotICAgICAgb3MucmVtb3ZlKHNoYXJkX3N0YXR1
c19maWxlKQotCi0gIGRlZiB0ZXN0U2hhcmRTdGF0dXNGaWxlSXNDcmVhdGVkV2l0aExpc3RUZXN0
cyhzZWxmKToKLSAgICAiIiJUZXN0cyB0aGF0IHRoZSBzaGFyZCBmaWxlIGlzIGNyZWF0ZWQgd2l0
aCB0aGUgImxpc3RfdGVzdHMiIGZsYWcuIiIiCi0KLSAgICBzaGFyZF9zdGF0dXNfZmlsZSA9IG9z
LnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnc2hhcmRfc3RhdHVzX2ZpbGUyJykKLSAgICBzZWxmLmFz
c2VydF8obm90IG9zLnBhdGguZXhpc3RzKHNoYXJkX3N0YXR1c19maWxlKSkKLQotICAgIGV4dHJh
X2VudiA9IHtTSEFSRF9TVEFUVVNfRklMRV9FTlZfVkFSOiBzaGFyZF9zdGF0dXNfZmlsZX0KLSAg
ICB0cnk6Ci0gICAgICBvdXRwdXQgPSBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bkFuZFJldHVybk91dHB1dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbTElTVF9URVNUU19GTEFHXSkK
LSAgICBmaW5hbGx5OgotICAgICAgIyBUaGlzIGFzc2VydGlvbiBlbnN1cmVzIHRoYXQgR29vZ2xl
IFRlc3QgZW51bWVyYXRlZCB0aGUgdGVzdHMgYXMKLSAgICAgICMgb3Bwb3NlZCB0byBydW5uaW5n
IHRoZW0uCi0gICAgICBzZWxmLmFzc2VydF8oJ1s9PT09PT09PT09XScgbm90IGluIG91dHB1dCwK
LSAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBvdXRwdXQgZHVyaW5nIHRlc3QgZW51bWVy
YXRpb24uXG4nCi0gICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBlbnN1cmUgdGhhdCBMSVNUX1RF
U1RTX0ZMQUcgaXMgYXNzaWduZWQgdGhlXG4nCi0gICAgICAgICAgICAgICAgICAgJ2NvcnJlY3Qg
ZmxhZyB2YWx1ZSBmb3IgbGlzdGluZyBHb29nbGUgVGVzdCB0ZXN0cy4nKQotCi0gICAgICBzZWxm
LmFzc2VydF8ob3MucGF0aC5leGlzdHMoc2hhcmRfc3RhdHVzX2ZpbGUpKQotICAgICAgb3MucmVt
b3ZlKHNoYXJkX3N0YXR1c19maWxlKQotCi0gIGlmIFNVUFBPUlRTX0RFQVRIX1RFU1RTOgotICAg
IGRlZiB0ZXN0U2hhcmRpbmdXb3Jrc1dpdGhEZWF0aFRlc3RzKHNlbGYpOgotICAgICAgIiIiVGVz
dHMgaW50ZWdyYXRpb24gd2l0aCBkZWF0aCB0ZXN0cyBhbmQgc2hhcmRpbmcuIiIiCi0KLSAgICAg
IGd0ZXN0X2ZpbHRlciA9ICdIYXNEZWF0aFRlc3QuKjpTZXFQLyonCi0gICAgICBleHBlY3RlZF90
ZXN0cyA9IFsKLSAgICAgICAgICAnSGFzRGVhdGhUZXN0LlRlc3QxJywKLSAgICAgICAgICAnSGFz
RGVhdGhUZXN0LlRlc3QyJywKLQotICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywK
LSAgICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMScsCi0gICAgICAgICAgJ1NlcVAvUGFy
YW1UZXN0LlRlc3RZLzAnLAotICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8xJywKLSAg
ICAgICAgICBdCi0KLSAgICAgIGZvciBmbGFnIGluIFsnLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxl
PXRocmVhZHNhZmUnLAotICAgICAgICAgICAgICAgICAgICctLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5
bGU9ZmFzdCddOgotICAgICAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhndGVzdF9m
aWx0ZXIsIDMsIGV4cGVjdGVkX3Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGVja19leGl0XzA9VHJ1ZSwgYXJncz1bZmxhZ10pCi0gICAgICAgIHNlbGYuUnVu
QW5kVmVyaWZ5V2l0aFNoYXJkaW5nKGd0ZXN0X2ZpbHRlciwgNSwgZXhwZWN0ZWRfdGVzdHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2V4aXRfMD1UcnVlLCBh
cmdzPVtmbGFnXSkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91
dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfZmlsdGVyX3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfZmlsdGVyX3VuaXR0ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI1
NTA0ZmU5NGFmYzE3N2M0NmNiYzEzNWZlYzY3NWM1NTRkMmUwZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X2ZpbHRlcl91bml0dGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBA
QAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0v
LyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gVW5pdCB0ZXN0IGZvciBH
b29nbGUgVGVzdCB0ZXN0IGZpbHRlcnMuCi0vLwotLy8gQSB1c2VyIGNhbiBzcGVjaWZ5IHdoaWNo
IHRlc3QocykgaW4gYSBHb29nbGUgVGVzdCBwcm9ncmFtIHRvIHJ1biB2aWEKLS8vIGVpdGhlciB0
aGUgR1RFU1RfRklMVEVSIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZSAtLWd0ZXN0X2ZpbHRl
cgotLy8gZmxhZy4gIFRoaXMgaXMgdXNlZCBmb3IgdGVzdGluZyBzdWNoIGZ1bmN0aW9uYWxpdHku
Ci0vLwotLy8gVGhlIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRob24gdW5pdCB0
ZXN0LiAgRG9uJ3QgcnVuIGl0Ci0vLyBkaXJlY3RseS4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIFRlc3QgY2FzZSBGb29UZXN0LgotCi1jbGFzcyBGb29U
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVEVTVF9GKEZvb1Rlc3QsIEFiYykg
ewotfQotCi1URVNUX0YoRm9vVGVzdCwgWHl6KSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFp
bHVyZS4iOwotfQotCi0vLyBUZXN0IGNhc2UgQmFyVGVzdC4KLQotVEVTVChCYXJUZXN0LCBUZXN0
T25lKSB7Ci19Ci0KLVRFU1QoQmFyVGVzdCwgVGVzdFR3bykgewotfQotCi1URVNUKEJhclRlc3Qs
IFRlc3RUaHJlZSkgewotfQotCi1URVNUKEJhclRlc3QsIERJU0FCTEVEX1Rlc3RGb3VyKSB7Ci0g
IEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi1URVNUKEJhclRlc3QsIERJU0FC
TEVEX1Rlc3RGaXZlKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi0v
LyBUZXN0IGNhc2UgQmF6VGVzdC4KLQotVEVTVChCYXpUZXN0LCBUZXN0T25lKSB7Ci0gIEZBSUwo
KSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi1URVNUKEJhelRlc3QsIFRlc3RBKSB7Ci19
Ci0KLVRFU1QoQmF6VGVzdCwgVGVzdEIpIHsKLX0KLQotVEVTVChCYXpUZXN0LCBESVNBQkxFRF9U
ZXN0QykgewotICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKLX0KLQotLy8gVGVzdCBj
YXNlIEhhc0RlYXRoVGVzdAotCi1URVNUKEhhc0RlYXRoVGVzdCwgVGVzdDEpIHsKLSAgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRChleGl0KDEpLCAiLioiKTsKLX0KLQotLy8gV2UgbmVlZCBhdCBs
ZWFzdCB0d28gZGVhdGggdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGFsbCBkZWF0aCB0ZXN0
cwotLy8gYXJlbid0IG9uIHRoZSBmaXJzdCBzaGFyZC4KLVRFU1QoSGFzRGVhdGhUZXN0LCBUZXN0
MikgewotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKGV4aXQoMSksICIuKiIpOwotfQotCi0v
LyBUZXN0IGNhc2UgRm9vYmFyVGVzdAotCi1URVNUKERJU0FCTEVEX0Zvb2JhclRlc3QsIFRlc3Qx
KSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi1URVNUKERJU0FCTEVE
X0Zvb2JhclRlc3QsIERJU0FCTEVEX1Rlc3QyKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFp
bHVyZS4iOwotfQotCi0vLyBUZXN0IGNhc2UgRm9vYmFyYmF6VGVzdAotCi1URVNUKERJU0FCTEVE
X0Zvb2JhcmJhelRlc3QsIFRlc3RBKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4i
OwotfQotCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLWNsYXNzIFBhcmFtVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4gewotfTsKLQotVEVTVF9QKFBhcmFtVGVzdCwg
VGVzdFgpIHsKLX0KLQotVEVTVF9QKFBhcmFtVGVzdCwgVGVzdFkpIHsKLX0KLQotSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoU2VxUCwgUGFyYW1UZXN0LCB0ZXN0aW5nOjpWYWx1ZXMoMSwgMikpOwot
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxUSwgUGFyYW1UZXN0LCB0ZXN0aW5nOjpWYWx1ZXMo
NSwgNikpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi19ICAvLyBuYW1lc3Bh
Y2UKLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7Ci0gIDo6dGVzdGluZzo6SW5p
dEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVz
dC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5Cmlu
ZGV4IDNjYjRjNDhlMGI0NjI4ZDlhYTdjNmYzMjA3YWI3ZWUxMGNkMjJiYTMuLjU4MmQyNGMyZGNj
ZTg5NDUzOGFhNjNjY2JkNjEyMGJkZDRiMzUwYTAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5CkBAIC0yOSwyNyArMjksMjYgQEAKICMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSIiIlRlc3RzIHRoZSAtLWhlbHAgZmxhZyBvZiBH
b29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrLgorIiIiVGVzdHMgdGhlIC0taGVscCBmbGFnIG9m
IEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsuCiAKIFNZTk9QU0lTCi0g
ICAgICAgZ3Rlc3RfaGVscF90ZXN0LnB5IC0tZ3Rlc3RfYnVpbGRfZGlyPUJVSUxEL0RJUgorICAg
ICAgIGd0ZXN0X2hlbHBfdGVzdC5weSAtLWJ1aWxkX2Rpcj1CVUlMRC9ESVIKICAgICAgICAgICMg
d2hlcmUgQlVJTEQvRElSIGNvbnRhaW5zIHRoZSBidWlsdCBndGVzdF9oZWxwX3Rlc3RfIGZpbGUu
CiAgICAgICAgZ3Rlc3RfaGVscF90ZXN0LnB5CiAiIiIKIAotX19hdXRob3JfXyA9ICd3YW5AZ29v
Z2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBn
dGVzdF90ZXN0X3V0aWxzCiAKIAorSVNfTElOVVggPSBvcy5uYW1lID09ICdwb3NpeCcgYW5kIG9z
LnVuYW1lKClbMF0gPT0gJ0xpbnV4JwogSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250JwogCiBQ
Uk9HUkFNX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ3Rl
c3RfaGVscF90ZXN0XycpCiBGTEFHX1BSRUZJWCA9ICctLWd0ZXN0XycKLUNBVENIX0VYQ0VQVElP
TlNfRkxBRyA9IEZMQUdfUFJFRklYICsgJ2NhdGNoX2V4Y2VwdGlvbnMnCiBERUFUSF9URVNUX1NU
WUxFX0ZMQUcgPSBGTEFHX1BSRUZJWCArICdkZWF0aF90ZXN0X3N0eWxlJworU1RSRUFNX1JFU1VM
VF9UT19GTEFHID0gRkxBR19QUkVGSVggKyAnc3RyZWFtX3Jlc3VsdF90bycKIFVOS05PV05fRkxB
RyA9IEZMQUdfUFJFRklYICsgJ3Vua25vd25fZmxhZ19mb3JfdGVzdGluZycKIExJU1RfVEVTVFNf
RkxBRyA9IEZMQUdfUFJFRklYICsgJ2xpc3RfdGVzdHMnCiBJTkNPUlJFQ1RfRkxBR19WQVJJQU5U
UyA9IFtyZS5zdWIoJ14tLScsICctJywgTElTVF9URVNUU19GTEFHKSwKQEAgLTcyLDcgKzcxLDgg
QEAgSEVMUF9SRUdFWCA9IHJlLmNvbXBpbGUoCiAgICAgRkxBR19QUkVGSVggKyByJ3ByaW50X3Rp
bWUuKicgKwogICAgIEZMQUdfUFJFRklYICsgcidvdXRwdXQ9LionICsKICAgICBGTEFHX1BSRUZJ
WCArIHInYnJlYWtfb25fZmFpbHVyZS4qJyArCi0gICAgRkxBR19QUkVGSVggKyByJ3Rocm93X29u
X2ZhaWx1cmUuKicsCisgICAgRkxBR19QUkVGSVggKyByJ3Rocm93X29uX2ZhaWx1cmUuKicgKwor
ICAgIEZMQUdfUFJFRklYICsgcidjYXRjaF9leGNlcHRpb25zPTAuKicsCiAgICAgcmUuRE9UQUxM
KQogCiAKQEAgLTEwOSwxMCArMTA5LDExIEBAIGNsYXNzIEdUZXN0SGVscFRlc3QoZ3Rlc3RfdGVz
dF91dGlscy5UZXN0Q2FzZSk6CiAgICAgZXhpdF9jb2RlLCBvdXRwdXQgPSBSdW5XaXRoRmxhZyhm
bGFnKQogICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIGV4aXRfY29kZSkKICAgICBzZWxmLmFzc2Vy
dF8oSEVMUF9SRUdFWC5zZWFyY2gob3V0cHV0KSwgb3V0cHV0KQotICAgIGlmIElTX1dJTkRPV1M6
Ci0gICAgICBzZWxmLmFzc2VydF8oQ0FUQ0hfRVhDRVBUSU9OU19GTEFHIGluIG91dHB1dCwgb3V0
cHV0KQorCisgICAgaWYgSVNfTElOVVg6CisgICAgICBzZWxmLmFzc2VydF8oU1RSRUFNX1JFU1VM
VF9UT19GTEFHIGluIG91dHB1dCwgb3V0cHV0KQogICAgIGVsc2U6Ci0gICAgICBzZWxmLmFzc2Vy
dF8oQ0FUQ0hfRVhDRVBUSU9OU19GTEFHIG5vdCBpbiBvdXRwdXQsIG91dHB1dCkKKyAgICAgIHNl
bGYuYXNzZXJ0XyhTVFJFQU1fUkVTVUxUX1RPX0ZMQUcgbm90IGluIG91dHB1dCwgb3V0cHV0KQog
CiAgICAgaWYgU1VQUE9SVFNfREVBVEhfVEVTVFMgYW5kIG5vdCBJU19XSU5ET1dTOgogICAgICAg
c2VsZi5hc3NlcnRfKERFQVRIX1RFU1RfU1RZTEVfRkxBRyBpbiBvdXRwdXQsIG91dHB1dCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0Xy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0Xy5jYwppbmRl
eCBhYWQwZDcyZDc2NzUzNWUxYjdhNzIyMjQ3NzU0MzAxMDMzZTcxMDZmLi43NTBhZTZjZTk1ZmNi
Y2IzMzhlZDVkYjJiNTg4ZjE1Y2RkNWMyZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVzdF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3RfLmNjCkBAIC0yNiwxMyArMjYsMTIgQEAKIC8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6
IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogLy8gVGhpcyBwcm9ncmFtIGlzIG1l
YW50IHRvIGJlIHJ1biBieSBndGVzdF9oZWxwX3Rlc3QucHkuICBEbyBub3QgcnVuCiAvLyBpdCBk
aXJlY3RseS4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKIAogLy8gV2hlbiBhIGhlbHAgZmxhZyBpcyBzcGVjaWZpZWQsIHRoaXMgcHJvZ3JhbSBz
aG91bGQgc2tpcCB0aGUgdGVzdHMKIC8vIGFuZCBleGl0IHdpdGggMDsgb3RoZXJ3aXNlIHRoZSBm
b2xsb3dpbmcgdGVzdCB3aWxsIGJlIGV4ZWN1dGVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9qc29uX3Rlc3RfdXRpbHMucHkgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2pzb25fdGVzdF91dGlscy5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmJi
ZmMyODhmODJiMzg3Y2Q4MzQ0NmMwYTA1YmExNjdiMWFhNzU0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9qc29uX3Rlc3RfdXRpbHMucHkKQEAg
LTAsMCArMSw2MCBAQAorIyBDb3B5cmlnaHQgMjAxOCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIwor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisj
IGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisj
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVzdCB1dGlsaXRpZXMg
Zm9yIGd0ZXN0X2pzb25fb3V0cHV0LiIiIgorCitpbXBvcnQgcmUKKworCitkZWYgbm9ybWFsaXpl
KG9iaik6CisgICIiIk5vcm1hbGl6ZSBvdXRwdXQgb2JqZWN0LgorCisgIEFyZ3M6CisgICAgIG9i
ajogR29vZ2xlIFRlc3QncyBKU09OIG91dHB1dCBvYmplY3QgdG8gbm9ybWFsaXplLgorCisgIFJl
dHVybnM6CisgICAgIE5vcm1hbGl6ZWQgb3V0cHV0IHdpdGhvdXQgYW55IHJlZmVyZW5jZXMgdG8g
dHJhbnNpZW50IGluZm9ybWF0aW9uIHRoYXQgbWF5CisgICAgIGNoYW5nZSBmcm9tIHJ1biB0byBy
dW4uCisgICIiIgorICBkZWYgX25vcm1hbGl6ZShrZXksIHZhbHVlKToKKyAgICBpZiBrZXkgPT0g
J3RpbWUnOgorICAgICAgcmV0dXJuIHJlLnN1YihyJ15cZCsoXC5cZCspP3MkJywgJyonLCB2YWx1
ZSkKKyAgICBlbGlmIGtleSA9PSAndGltZXN0YW1wJzoKKyAgICAgIHJldHVybiByZS5zdWIocide
XGR7NH0tXGRcZC1cZFxkVFxkXGQ6XGRcZDpcZFxkWiQnLCAnKicsIHZhbHVlKQorICAgIGVsaWYg
a2V5ID09ICdmYWlsdXJlJzoKKyAgICAgIHZhbHVlID0gcmUuc3ViKHInXi4qWy9cXF0oLio6KVxk
K1xuJywgJ1xcMSpcbicsIHZhbHVlKQorICAgICAgcmV0dXJuIHJlLnN1YihyJ1N0YWNrIHRyYWNl
OlxuKC58XG4pKicsICdTdGFjayB0cmFjZTpcbionLCB2YWx1ZSkKKyAgICBlbHNlOgorICAgICAg
cmV0dXJuIG5vcm1hbGl6ZSh2YWx1ZSkKKyAgaWYgaXNpbnN0YW5jZShvYmosIGRpY3QpOgorICAg
IHJldHVybiB7azogX25vcm1hbGl6ZShrLCB2KSBmb3IgaywgdiBpbiBvYmouaXRlbXMoKX0KKyAg
aWYgaXNpbnN0YW5jZShvYmosIGxpc3QpOgorICAgIHJldHVybiBbbm9ybWFsaXplKHgpIGZvciB4
IGluIG9ial0KKyAgZWxzZToKKyAgICByZXR1cm4gb2JqCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0LnB5IGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X291dHB1dF91bml0dGVzdC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zYmJhN2VhMmNmZDM3Y2FkNTUwOWY0MGY4ZThiMDAyMjcwNmJlNzg0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X291dHB1
dF91bml0dGVzdC5weQpAQCAtMCwwICsxLDE0MSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
CisjIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyIiIlVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0ZXN0
X2xpc3RfdGVzdHMgZmxhZy4KKworQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gbGlzdCBh
bGwgdGVzdHMgYnkgc3BlY2lmeWluZyB0aGUKKy0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLiBJZiBv
dXRwdXQgaXMgcmVxdWVzdGVkLCB2aWEgLS1ndGVzdF9vdXRwdXQ9eG1sCitvciAtLWd0ZXN0X291
dHB1dD1qc29uLCB0aGUgdGVzdHMgYXJlIGxpc3RlZCwgd2l0aCBleHRyYSBpbmZvcm1hdGlvbiBp
biB0aGUKK291dHB1dCBmaWxlLgorVGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5
IGJ5IGludm9raW5nIGd0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0XworIChhIHByb2dyYW0gd3Jp
dHRlbiB3aXRoIEdvb2dsZSBUZXN0KSB0aGUgY29tbWFuZCBsaW5lIGZsYWdzLgorIiIiCisKK2lt
cG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitHVEVTVF9MSVNU
X1RFU1RTX0ZMQUcgPSAnLS1ndGVzdF9saXN0X3Rlc3RzJworR1RFU1RfT1VUUFVUX0ZMQUcgPSAn
LS1ndGVzdF9vdXRwdXQnCisKK0VYUEVDVEVEX1hNTCA9ICIiIjxcP3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJVVEYtOCJcPz4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIyIiBuYW1lPSJBbGxUZXN0
cyI+CisgIDx0ZXN0c3VpdGUgbmFtZT0iRm9vVGVzdCIgdGVzdHM9IjIiPgorICAgIDx0ZXN0Y2Fz
ZSBuYW1lPSJUZXN0MSIgZmlsZT0iLipndGVzdF9saXN0X291dHB1dF91bml0dGVzdF8uY2MiIGxp
bmU9IjQzIiAvPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJUZXN0MiIgZmlsZT0iLipndGVzdF9saXN0
X291dHB1dF91bml0dGVzdF8uY2MiIGxpbmU9IjQ1IiAvPgorICA8L3Rlc3RzdWl0ZT4KKzwvdGVz
dHN1aXRlcz4KKyIiIgorCitFWFBFQ1RFRF9KU09OID0gIiIieworICAidGVzdHMiOiAyLAorICAi
bmFtZSI6ICJBbGxUZXN0cyIsCisgICJ0ZXN0c3VpdGVzIjogXFsKKyAgICB7CisgICAgICAibmFt
ZSI6ICJGb29UZXN0IiwKKyAgICAgICJ0ZXN0cyI6IDIsCisgICAgICAidGVzdHN1aXRlIjogXFsK
KyAgICAgICAgeworICAgICAgICAgICJuYW1lIjogIlRlc3QxIiwKKyAgICAgICAgICAiZmlsZSI6
ICIuKmd0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0Xy5jYyIsCisgICAgICAgICAgImxpbmUiOiA0
MworICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgIm5hbWUiOiAiVGVzdDIiLAorICAg
ICAgICAgICJmaWxlIjogIi4qZ3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3RfLmNjIiwKKyAgICAg
ICAgICAibGluZSI6IDQ1CisgICAgICAgIH0KKyAgICAgIFxdCisgICAgfQorICBcXQorfQorIiIi
CisKKworY2xhc3MgR1Rlc3RMaXN0VGVzdHNPdXRwdXRVbml0VGVzdChndGVzdF90ZXN0X3V0aWxz
LlRlc3RDYXNlKToKKyAgIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIGxpc3QgdGVzdHMg
d2l0aCBvdXRwdXQgdG8gZmlsZSBmdW5jdGlvbmFsaXR5LgorICAiIiIKKworICBkZWYgdGVzdFht
bChzZWxmKToKKyAgICAiIiJWZXJpZmllcyBYTUwgb3V0cHV0IGZvciBsaXN0aW5nIHRlc3RzIGlu
IGEgR29vZ2xlIFRlc3QgYmluYXJ5LgorCisgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdl
bmVyYXRlcyBhbiBlbXB0eSBYTUwgb3V0cHV0LCBhbmQKKyAgICB0ZXN0cyB0aGF0IHRoZSBYTUwg
b3V0cHV0IGlzIGV4cGVjdGVkLgorICAgICIiIgorICAgIHNlbGYuX1Rlc3RPdXRwdXQoJ3htbCcs
IEVYUEVDVEVEX1hNTCkKKworICBkZWYgdGVzdEpTT04oc2VsZik6CisgICAgIiIiVmVyaWZpZXMg
WE1MIG91dHB1dCBmb3IgbGlzdGluZyB0ZXN0cyBpbiBhIEdvb2dsZSBUZXN0IGJpbmFyeS4KKwor
ICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkgWE1MIG91dHB1
dCwgYW5kCisgICAgdGVzdHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBleHBlY3RlZC4KKyAgICAi
IiIKKyAgICBzZWxmLl9UZXN0T3V0cHV0KCdqc29uJywgRVhQRUNURURfSlNPTikKKworICBkZWYg
X0dldE91dHB1dChzZWxmLCBvdXRfZm9ybWF0KToKKyAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpv
aW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICd0ZXN0X291dC4nICsgb3V0X2Zvcm1hdCkKKyAgICBndGVzdF9wcm9nX3BhdGggPSBn
dGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKKyAgICAgICAgJ2d0ZXN0X2xp
c3Rfb3V0cHV0X3VuaXR0ZXN0XycpCisKKyAgICBjb21tYW5kID0gKFsKKyAgICAgICAgZ3Rlc3Rf
cHJvZ19wYXRoLAorICAgICAgICAnJXM9JXM6JXMnICUgKEdURVNUX09VVFBVVF9GTEFHLCBvdXRf
Zm9ybWF0LCBmaWxlX3BhdGgpLAorICAgICAgICAnLS1ndGVzdF9saXN0X3Rlc3RzJworICAgIF0p
CisgICAgZW52aXJvbl9jb3B5ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgICBwID0gZ3Rlc3RfdGVz
dF91dGlscy5TdWJwcm9jZXNzKAorICAgICAgICBjb21tYW5kLCBlbnY9ZW52aXJvbl9jb3B5LCB3
b3JraW5nX2Rpcj1ndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSkKKworICAgIHNlbGYuYXNz
ZXJ0XyhwLmV4aXRlZCkKKyAgICBzZWxmLmFzc2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkKKyAg
ICB3aXRoIG9wZW4oZmlsZV9wYXRoKSBhcyBmOgorICAgICAgcmVzdWx0ID0gZi5yZWFkKCkKKyAg
ICByZXR1cm4gcmVzdWx0CisKKyAgZGVmIF9UZXN0T3V0cHV0KHNlbGYsIHRlc3RfZm9ybWF0LCBl
eHBlY3RlZF9vdXRwdXQpOgorICAgIGFjdHVhbCA9IHNlbGYuX0dldE91dHB1dCh0ZXN0X2Zvcm1h
dCkKKyAgICBhY3R1YWxfbGluZXMgPSBhY3R1YWwuc3BsaXRsaW5lcygpCisgICAgZXhwZWN0ZWRf
bGluZXMgPSBleHBlY3RlZF9vdXRwdXQuc3BsaXRsaW5lcygpCisgICAgbGluZV9jb3VudCA9IDAK
KyAgICBmb3IgYWN0dWFsX2xpbmUgaW4gYWN0dWFsX2xpbmVzOgorICAgICAgZXhwZWN0ZWRfbGlu
ZSA9IGV4cGVjdGVkX2xpbmVzW2xpbmVfY291bnRdCisgICAgICBleHBlY3RlZF9saW5lX3JlID0g
cmUuY29tcGlsZShleHBlY3RlZF9saW5lLnN0cmlwKCkpCisgICAgICBzZWxmLmFzc2VydF8oCisg
ICAgICAgICAgZXhwZWN0ZWRfbGluZV9yZS5tYXRjaChhY3R1YWxfbGluZS5zdHJpcCgpKSwKKyAg
ICAgICAgICAoJ2FjdHVhbCBvdXRwdXQgb2YgIiVzIixcbicKKyAgICAgICAgICAgJ3doaWNoIGRv
ZXMgbm90IG1hdGNoIGV4cGVjdGVkIHJlZ2V4IG9mICIlcyJcbicKKyAgICAgICAgICAgJ29uIGxp
bmUgJWQnICUgKGFjdHVhbCwgZXhwZWN0ZWRfb3V0cHV0LCBsaW5lX2NvdW50KSkpCisgICAgICBs
aW5lX2NvdW50ID0gbGluZV9jb3VudCArIDEKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgorICBvcy5lbnZpcm9uWydHVEVTVF9TVEFDS19UUkFDRV9ERVBUSCddID0gJzEnCisgIGd0ZXN0
X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxYzdi
NGRlMzQ2MWZjMTY0NWY0MTFiNzFmOWUzN2Y4MjI0ZmQ4YTYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0Xy5j
YwpAQCAtMCwwICsxLDUxIEBACisvLyBDb3B5cmlnaHQgMjAxOCwgR29vZ2xlIEluYy4KKy8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisv
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisvLworLy8gQXV0aG9yOiBkYXZpZC5zY2h1bGRlbmZyZWlAZ21haWwuY29tIChEYXZp
ZCBTY2h1bGRlbmZyZWkpCisKKy8vIFVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0ZXN0
X2xpc3RfdGVzdHMgYW5kIC0tZ3Rlc3Rfb3V0cHV0IGZsYWcuCisvLworLy8gQSB1c2VyIGNhbiBh
c2sgR29vZ2xlIFRlc3QgdG8gbGlzdCBhbGwgdGVzdHMgdGhhdCB3aWxsIHJ1biwKKy8vIGFuZCBo
YXZlIHRoZSBvdXRwdXQgc2F2ZWQgaW4gYSBKc29uL1htbCBmaWxlLgorLy8gVGhlIHRlc3RzIHdp
bGwgbm90IGJlIHJ1biBhZnRlciBsaXN0aW5nLgorLy8KKy8vIFRoaXMgcHJvZ3JhbSB3aWxsIGJl
IGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRlc3QuCisvLyBEb24ndCBydW4gaXQgZGlyZWN0
bHkuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCitURVNUKEZvb1Rlc3QsIFRlc3QxKSB7
fQorCitURVNUKEZvb1Rlc3QsIFRlc3QyKSB7fQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
KmFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAg
cmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdC5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggY2U4YzNlZjA1ZjY2MDBlODcyMTRhNmQ0MDE2MjhlZDkyM2ExNTJk
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3QucHkKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENv
cHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIC0tZ3Rlc3RfbGlz
dF90ZXN0cyBmbGFnLgotCi1BIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBsaXN0IGFsbCB0
ZXN0cyBieSBzcGVjaWZ5aW5nIHRoZQotLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuICBUaGlzIHNj
cmlwdCB0ZXN0cyBzdWNoIGZ1bmN0aW9uYWxpdHkKLWJ5IGludm9raW5nIGd0ZXN0X2xpc3RfdGVz
dHNfdW5pdHRlc3RfIChhIHByb2dyYW0gd3JpdHRlbiB3aXRoCi1Hb29nbGUgVGVzdCkgdGhlIGNv
bW1hbmQgbGluZSBmbGFncy4KLSIiIgotCi1fX2F1dGhvcl9fID0gJ3BoYW5uYUBnb29nbGUuY29t
IChQYXRyaWNrIEhhbm5hKScKLQotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLQotCi0jIENvbnN0
YW50cy4KLQotIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBs
aXN0aW5nIGFsbCB0ZXN0cy4KLUxJU1RfVEVTVFNfRkxBRyA9ICdndGVzdF9saXN0X3Rlc3RzJwot
Ci0jIFBhdGggdG8gdGhlIGd0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfIHByb2dyYW0uCi1FWEVf
UEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9saXN0
X3Rlc3RzX3VuaXR0ZXN0XycpCi0KLSMgVGhlIGV4cGVjdGVkIG91dHB1dCB3aGVuIHJ1bm5pbmcg
Z3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8gd2l0aAotIyAtLWd0ZXN0X2xpc3RfdGVzdHMKLUVY
UEVDVEVEX09VVFBVVF9OT19GSUxURVIgPSAiIiJGb29EZWF0aFRlc3QuCi0gIFRlc3QxCi1Gb28u
Ci0gIEJhcjEKLSAgQmFyMgotICBESVNBQkxFRF9CYXIzCi1BYmMuCi0gIFh5egotICBEZWYKLUZv
b0Jhci4KLSAgQmF6Ci1Gb29UZXN0LgotICBUZXN0MQotICBESVNBQkxFRF9UZXN0MgotICBUZXN0
MwotIiIiCi0KLSMgVGhlIGV4cGVjdGVkIG91dHB1dCB3aGVuIHJ1bm5pbmcgZ3Rlc3RfbGlzdF90
ZXN0c191bml0dGVzdF8gd2l0aAotIyAtLWd0ZXN0X2xpc3RfdGVzdHMgYW5kIC0tZ3Rlc3RfZmls
dGVyPUZvbyouCi1FWFBFQ1RFRF9PVVRQVVRfRklMVEVSX0ZPTyA9ICIiIkZvb0RlYXRoVGVzdC4K
LSAgVGVzdDEKLUZvby4KLSAgQmFyMQotICBCYXIyCi0gIERJU0FCTEVEX0JhcjMKLUZvb0Jhci4K
LSAgQmF6Ci1Gb29UZXN0LgotICBUZXN0MQotICBESVNBQkxFRF9UZXN0MgotICBUZXN0MwotIiIi
Ci0KLSMgVXRpbGl0aWVzLgotCi0KLWRlZiBSdW4oYXJncyk6Ci0gICIiIlJ1bnMgZ3Rlc3RfbGlz
dF90ZXN0c191bml0dGVzdF8gYW5kIHJldHVybnMgdGhlIGxpc3Qgb2YgdGVzdHMgcHJpbnRlZC4i
IiIKLQotICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtFWEVfUEFUSF0gKyBh
cmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVfc3RkZXJy
PUZhbHNlKS5vdXRwdXQKLQotCi0jIFRoZSB1bml0IHRlc3QuCi0KLWNsYXNzIEdUZXN0TGlzdFRl
c3RzVW5pdFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gICIiIlRlc3RzIHVzaW5n
IHRoZSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZyB0byBsaXN0IGFsbCB0ZXN0cy4iIiIKLQotICBk
ZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGZsYWdfdmFsdWUsIGV4cGVjdGVkX291dHB1dCwgb3RoZXJf
ZmxhZyk6Ci0gICAgIiIiUnVucyBndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0XyBhbmQgdmVyaWZp
ZXMgdGhhdCBpdCBwcmludHMKLSAgICB0aGUgY29ycmVjdCB0ZXN0cy4KLQotICAgIEFyZ3M6Ci0g
ICAgICBmbGFnX3ZhbHVlOiAgICAgICB2YWx1ZSBvZiB0aGUgLS1ndGVzdF9saXN0X3Rlc3RzIGZs
YWc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBub3Qg
YmUgcHJlc2VudC4KLQotICAgICAgZXhwZWN0ZWRfb3V0cHV0OiAgdGhlIGV4cGVjdGVkIG91dHB1
dCBhZnRlciBydW5uaW5nIGNvbW1hbmQ7Ci0KLSAgICAgIG90aGVyX2ZsYWc6ICAgICAgIGEgZGlm
ZmVyZW50IGZsYWcgdG8gYmUgcGFzc2VkIHRvIGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGFsb25nIHdpdGggZ3Rlc3RfbGlzdF90ZXN0czsKLSAgICAgICAgICAgICAgICAgICAgICAg
IE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgotICAgICIiIgotCi0gICAg
aWYgZmxhZ192YWx1ZSBpcyBOb25lOgotICAgICAgZmxhZyA9ICcnCi0gICAgICBmbGFnX2V4cHJl
c3Npb24gPSAnbm90IHNldCcKLSAgICBlbGlmIGZsYWdfdmFsdWUgPT0gJzAnOgotICAgICAgZmxh
ZyA9ICctLSVzPTAnICUgTElTVF9URVNUU19GTEFHCi0gICAgICBmbGFnX2V4cHJlc3Npb24gPSAn
MCcKLSAgICBlbHNlOgotICAgICAgZmxhZyA9ICctLSVzJyAlIExJU1RfVEVTVFNfRkxBRwotICAg
ICAgZmxhZ19leHByZXNzaW9uID0gJzEnCi0KLSAgICBhcmdzID0gW2ZsYWddCi0KLSAgICBpZiBv
dGhlcl9mbGFnIGlzIG5vdCBOb25lOgotICAgICAgYXJncyArPSBbb3RoZXJfZmxhZ10KLQotICAg
IG91dHB1dCA9IFJ1bihhcmdzKQotCi0gICAgbXNnID0gKCd3aGVuICVzIGlzICVzLCB0aGUgb3V0
cHV0IG9mICIlcyIgaXMgIiVzIi4nICUKLSAgICAgICAgICAgKExJU1RfVEVTVFNfRkxBRywgZmxh
Z19leHByZXNzaW9uLCAnICcuam9pbihhcmdzKSwgb3V0cHV0KSkKLQotICAgIGlmIGV4cGVjdGVk
X291dHB1dCBpcyBub3QgTm9uZToKLSAgICAgIHNlbGYuYXNzZXJ0XyhvdXRwdXQgPT0gZXhwZWN0
ZWRfb3V0cHV0LCBtc2cpCi0gICAgZWxzZToKLSAgICAgIHNlbGYuYXNzZXJ0XyhvdXRwdXQgIT0g
RVhQRUNURURfT1VUUFVUX05PX0ZJTFRFUiwgbXNnKQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJlaGF2
aW9yKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBtb2Rl
LiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZmxhZ192YWx1ZT1Ob25lLAotICAgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAg
IG90aGVyX2ZsYWc9Tm9uZSkKLQotICBkZWYgdGVzdEZsYWcoc2VsZik6Ci0gICAgIiIiVGVzdHMg
dXNpbmcgdGhlIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLiIiIgotCi0gICAgc2VsZi5SdW5BbmRW
ZXJpZnkoZmxhZ192YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0
cHV0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz1Ob25lKQotICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGV4
cGVjdGVkX291dHB1dD1FWFBFQ1RFRF9PVVRQVVRfTk9fRklMVEVSLAotICAgICAgICAgICAgICAg
ICAgICAgIG90aGVyX2ZsYWc9Tm9uZSkKLQotICBkZWYgdGVzdE92ZXJyaWRlTm9uRmlsdGVyRmxh
Z3Moc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCAtLWd0ZXN0X2xpc3RfdGVzdHMgb3ZlcnJpZGVz
IHRoZSBub24tZmlsdGVyIGZsYWdzLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZmxhZ192
YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0PUVYUEVDVEVE
X09VVFBVVF9OT19GSUxURVIsCi0gICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz0nLS1n
dGVzdF9icmVha19vbl9mYWlsdXJlJykKLQotICBkZWYgdGVzdFdpdGhGaWx0ZXJGbGFncyhzZWxm
KToKLSAgICAiIiJUZXN0cyB0aGF0IC0tZ3Rlc3RfbGlzdF90ZXN0cyB0YWtlcyBpbnRvIGFjY291
bnQgdGhlCi0gICAgLS1ndGVzdF9maWx0ZXIgZmxhZy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVy
aWZ5KGZsYWdfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1
dD1FWFBFQ1RFRF9PVVRQVVRfRklMVEVSX0ZPTywKLSAgICAgICAgICAgICAgICAgICAgICBvdGhl
cl9mbGFnPSctLWd0ZXN0X2ZpbHRlcj1Gb28qJykKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgotICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8uY2MKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwZWQwODI1YjVkODg5NjkyMzAxYzVhNGQ0ZjBlYjc1
YmFiYzViYzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5j
YworKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA2LCBHb29n
bGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHBoYW5uYUBnb29nbGUuY29tIChQ
YXRyaWNrIEhhbm5hKQotCi0vLyBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgLS1ndGVzdF9s
aXN0X3Rlc3RzIGZsYWcuCi0vLwotLy8gQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gbGlz
dCBhbGwgdGVzdHMgdGhhdCB3aWxsIHJ1bgotLy8gc28gdGhhdCB3aGVuIHVzaW5nIGEgZmlsdGVy
LCBhIHVzZXIgd2lsbCBrbm93IHdoYXQKLS8vIHRlc3RzIHRvIGxvb2sgZm9yLiBUaGUgdGVzdHMg
d2lsbCBub3QgYmUgcnVuIGFmdGVyIGxpc3RpbmcuCi0vLwotLy8gVGhpcyBwcm9ncmFtIHdpbGwg
YmUgaW52b2tlZCBmcm9tIGEgUHl0aG9uIHVuaXQgdGVzdC4KLS8vIERvbid0IHJ1biBpdCBkaXJl
Y3RseS4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIFNl
dmVyYWwgZGlmZmVyZW50IHRlc3QgY2FzZXMgYW5kIHRlc3RzIHRoYXQgd2lsbCBiZSBsaXN0ZWQu
Ci1URVNUKEZvbywgQmFyMSkgewotfQotCi1URVNUKEZvbywgQmFyMikgewotfQotCi1URVNUKEZv
bywgRElTQUJMRURfQmFyMykgewotfQotCi1URVNUKEFiYywgWHl6KSB7Ci19Ci0KLVRFU1QoQWJj
LCBEZWYpIHsKLX0KLQotVEVTVChGb29CYXIsIEJheikgewotfQotCi1jbGFzcyBGb29UZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7Ci19
Ci0KLVRFU1RfRihGb29UZXN0LCBESVNBQkxFRF9UZXN0MikgewotfQotCi1URVNUX0YoRm9vVGVz
dCwgVGVzdDMpIHsKLX0KLQotVEVTVChGb29EZWF0aFRlc3QsIFRlc3QxKSB7Ci19Ci0KLX0gIC8v
IG5hbWVzcGFjZQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgOjp0ZXN0
aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgcmV0dXJuIFJVTl9BTExfVEVT
VFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
bWFpbl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbWFp
bl91bml0dGVzdC5jYwppbmRleCA3YTNmMGFkZmFkZjZkN2U1YzE5NWIzMTk0NDcxNGQ1YWM0MWJi
OGUzLi5lZGRlZGVhYmU4ZjNiYjA4M2RhYmNhNjAwZTcyZjQ1MWI4ZDk0Y2RiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X21haW5fdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9tYWluX3VuaXR0ZXN0LmNjCkBA
IC0yNiwxMCArMjYsOSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAv
LyBUZXN0cyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gZGVmaW5lIG1haW4oKSB3aGVuIHdlIGxpbmsg
dG8KIC8vIGd0ZXN0X21haW4gaW5zdGVhZCBvZiBndGVzdC4KQEAgLTQxLDUgKzQwLDUgQEAgVEVT
VChHVGVzdE1haW5UZXN0LCBTaG91bGRTdWNjZWVkKSB7CiAKIH0gIC8vIG5hbWVzcGFjZQogCi0v
LyBXZSBhcmUgdXNpbmcgdGhlIG1haW4oKSBmdW5jdGlvbiBkZWZpbmVkIGluIHNyYy9ndGVzdF9t
YWluLmNjLCBzbwotLy8gd2UgZG9uJ3QgZGVmaW5lIGl0IGhlcmUuCisvLyBXZSBhcmUgdXNpbmcg
dGhlIG1haW4oKSBmdW5jdGlvbiBkZWZpbmVkIGluIGd0ZXN0X21haW4uY2MsIHNvIHdlCisvLyBk
b24ndCBkZWZpbmUgaXQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfbmMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X25j
LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2I1ZGI2ZDQxODMwOWE0N2EyM2Rm
ZjE4MDA1M2I3NWQzMjAxMjRmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbmMuY2MKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMzQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMu
Ci0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0v
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdh
bikKLQotLy8gVGhpcyBmaWxlIGlzIHRoZSBpbnB1dCB0byBhIG5lZ2F0aXZlLWNvbXBpbGF0aW9u
IHRlc3QgZm9yIEdvb2dsZQotLy8gVGVzdC4gIENvZGUgaGVyZSBpcyBOT1Qgc3VwcG9zZWQgdG8g
Y29tcGlsZS4gIEl0cyBwdXJwb3NlIGlzIHRvCi0vLyB2ZXJpZnkgdGhhdCBjZXJ0YWluIGluY29y
cmVjdCB1c2FnZXMgb2YgdGhlIEdvb2dsZSBUZXN0IEFQSSBhcmUKLS8vIGluZGVlZCByZWplY3Rl
ZCBieSB0aGUgY29tcGlsZXIuCi0vLwotLy8gV2Ugc3RpbGwgbmVlZCB0byB3cml0ZSB0aGUgbmVn
YXRpdmUtY29tcGlsYXRpb24gdGVzdCBpdHNlbGYsIHdoaWNoCi0vLyB3aWxsIGJlIHRpZ2h0bHkg
Y291cGxlZCB3aXRoIHRoZSBidWlsZCBlbnZpcm9ubWVudC4KLS8vCi0vLyBUT0RPKHdhbkBnb29n
bGUuY29tKTogZmluaXNoIHRoZSBuZWdhdGl2ZS1jb21waWxhdGlvbiB0ZXN0LgotCi0jaWZkZWYg
VEVTVF9DQU5OT1RfSUdOT1JFX1JVTl9BTExfVEVTVFNfUkVTVUxUCi0vLyBUZXN0cyB0aGF0IHRo
ZSByZXN1bHQgb2YgUlVOX0FMTF9URVNUUygpIGNhbm5vdCBiZSBpZ25vcmVkLgotCi0jaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0g
IHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLSAgUlVOX0FMTF9URVNUUygp
OyAgLy8gVGhpcyBsaW5lIHNob3VsZG4ndCBjb21waWxlLgotfQotCi0jZWxpZiBkZWZpbmVkKFRF
U1RfVVNFUl9DQU5OT1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9JTkxfSCkKLS8vIFRlc3RzIHRo
YXQgYSB1c2VyIGNhbm5vdCBpbmNsdWRlIGd0ZXN0LWludGVybmFsLWlubC5oIGluIGhpcyBjb2Rl
LgotCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotCi0jZWxpZiBkZWZpbmVk
KFRFU1RfQ0FUQ0hFU19ERUNMQVJJTkdfU0VUVVBfSU5fVEVTVF9GSVhUVVJFX1dJVEhfVFlQTykK
LS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgdGhlIHR5cG8gd2hlbiBhIHVzZXIg
ZGVjbGFyZXMgYQotLy8gU2V0dXAoKSBtZXRob2QgaW4gYSB0ZXN0IGZpeHR1cmUuCi0KLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgotCi1jbGFzcyBNeVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7Ci0gcHJvdGVjdGVkOgotICB2b2lkIFNldHVwKCkge30KLX07Ci0KLSNlbGlmIGRlZmluZWQo
VEVTVF9DQVRDSEVTX0NBTExJTkdfU0VUVVBfSU5fVEVTVF9XSVRIX1RZUE8pCi0vLyBUZXN0cyB0
aGF0IHRoZSBjb21waWxlciBjYXRjaGVzIHRoZSB0eXBvIHdoZW4gYSB1c2VyIGNhbGxzIFNldHVw
KCkKLS8vIGZyb20gYSB0ZXN0IGZpeHR1cmUuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgot
Ci1jbGFzcyBNeVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgdGVzdGluZzo6VGVzdDo6U2V0dXAoKTsgIC8vIFRy
aWVzIHRvIGNhbGwgU2V0VXAoKSBpbiB0aGUgcGFyZW50IGNsYXNzLgotICB9Ci19OwotCi0jZWxp
ZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19ERUNMQVJJTkdfU0VUVVBfSU5fRU5WSVJPTk1FTlRfV0lU
SF9UWVBPKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0Y2hlcyB0aGUgdHlwbyB3aGVu
IGEgdXNlciBkZWNsYXJlcyBhCi0vLyBTZXR1cCgpIG1ldGhvZCBpbiBhIHN1YmNsYXNzIG9mIEVu
dmlyb25tZW50LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotY2xhc3MgTXlFbnZpcm9u
bWVudCA6IHB1YmxpYyB0ZXN0aW5nOjpFbnZpcm9ubWVudCB7Ci0gcHVibGljOgotICB2b2lkIFNl
dHVwKCkge30KLX07Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRDSEVTX0NBTExJTkdfU0VUVVBf
SU5fRU5WSVJPTk1FTlRfV0lUSF9UWVBPKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0
Y2hlcyB0aGUgdHlwbyB3aGVuIGEgdXNlciBjYWxscyBTZXR1cCgpCi0vLyBpbiBhbiBFbnZpcm9u
bWVudC4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLWNsYXNzIE15RW52aXJvbm1lbnQg
OiBwdWJsaWMgdGVzdGluZzo6RW52aXJvbm1lbnQgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2
b2lkIFNldFVwKCkgewotICAgIC8vIFRyaWVzIHRvIGNhbGwgU2V0VXAoKSBpbiB0aGUgcGFyZW50
IGNsYXNzLgotICAgIHRlc3Rpbmc6OkVudmlyb25tZW50OjpTZXR1cCgpOwotICB9Ci19OwotCi0j
ZWxpZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19XUk9OR19DQVNFX0lOX1RZUEVEX1RFU1RfUCkKLS8v
IFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgdXNpbmcgdGhlIHdyb25nIHRlc3QgY2Fz
ZSBuYW1lIGluCi0vLyBUWVBFRF9URVNUX1AuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEJhclRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0KTsKLVRZ
UEVEX1RFU1RfUChCYXJUZXN0LCBBKSB7fSAgLy8gV3JvbmcgdGVzdCBjYXNlIG5hbWUuCi1SRUdJ
U1RFUl9UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0LCBBKTsKLUlOU1RBTlRJQVRFX1RZUEVEX1RF
U1RfQ0FTRV9QKE15LCBGb29UZXN0LCB0ZXN0aW5nOjpUeXBlczxpbnQ+KTsKLQotI2VsaWYgZGVm
aW5lZChURVNUX0NBVENIRVNfV1JPTkdfQ0FTRV9JTl9SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0Vf
UCkKLS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgdXNpbmcgdGhlIHdyb25nIHRl
c3QgY2FzZSBuYW1lIGluCi0vLyBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUC4KLQotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgRm9vVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
Y2xhc3MgQmFyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1Rf
Q0FTRV9QKEZvb1Rlc3QpOwotVFlQRURfVEVTVF9QKEZvb1Rlc3QsIEEpIHt9Ci1SRUdJU1RFUl9U
WVBFRF9URVNUX0NBU0VfUChCYXJUZXN0LCBBKTsgIC8vIFdyb25nIHRlc3QgY2FzZSBuYW1lLgot
SU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIHRlc3Rpbmc6OlR5cGVz
PGludD4pOwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19XUk9OR19DQVNFX0lOX0lOU1RB
TlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0
Y2hlcyB1c2luZyB0aGUgd3JvbmcgdGVzdCBjYXNlIG5hbWUgaW4KLS8vIElOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBCYXJUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgewotfTsKLQotVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7Ci1UWVBFRF9URVNUX1Ao
Rm9vVGVzdCwgQSkge30KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsIEEpOwot
Ci0vLyBXcm9uZyB0ZXN0IGNhc2UgbmFtZS4KLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9Q
KE15LCBCYXJUZXN0LCB0ZXN0aW5nOjpUeXBlczxpbnQ+KTsKLQotI2VsaWYgZGVmaW5lZChURVNU
X0NBVENIRVNfSU5TVEFOVElBVEVfVFlQRURfVEVTRVRfQ0FTRV9QX1dJVEhfU0FNRV9OQU1FX1BS
RUZJWCkKLS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgaW5zdGFudGlhdGluZyBU
WVBFRF9URVNUX0NBU0VfUAotLy8gdHdpY2Ugd2l0aCB0aGUgc2FtZSBuYW1lIHByZWZpeC4KLQot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3Mg
Rm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRV9Q
KEZvb1Rlc3QpOwotVFlQRURfVEVTVF9QKEZvb1Rlc3QsIEEpIHt9Ci1SRUdJU1RFUl9UWVBFRF9U
RVNUX0NBU0VfUChGb29UZXN0LCBBKTsKLQotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1Ao
TXksIEZvb1Rlc3QsIHRlc3Rpbmc6OlR5cGVzPGludD4pOwotCi0vLyBXcm9uZyBuYW1lIHByZWZp
eDogIk15IiBoYXMgYmVlbiB1c2VkLgotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXks
IEZvb1Rlc3QsIHRlc3Rpbmc6OlR5cGVzPGRvdWJsZT4pOwotCi0jZWxpZiBkZWZpbmVkKFRFU1Rf
U1RBVElDX0FTU0VSVF9UWVBFX0VRX0lTX05PVF9BX1RZUEUpCi0KLSNpbmNsdWRlIDxndGVzdC9n
dGVzdC5oPgotCi0vLyBUZXN0cyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+IGNhbm5v
dCBiZSB1c2VkIGFzIGEgdHlwZS4KLXRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIGlu
dD4gZHVtbXk7Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9TVEFUSUNfQVNTRVJUX1RZUEVfRVFfV09S
S1NfSU5fTkFNRVNQQUNFKQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotLy8gVGVzdHMg
dGhhdCBTdGF0aWNBc3NlcnRUeXBlRXE8VDEsIFQyPiB3b3JrcyBpbiBhIG5hbWVzcGFjZSBzY29w
ZS4KLXN0YXRpYyBib29sIGR1bW15ID0gdGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGludCwg
Y29uc3QgaW50PigpOwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfU1RBVElDX0FTU0VSVF9UWVBFX0VR
X1dPUktTX0lOX0NMQVNTKQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBIZWxwZXIgewotIHB1YmxpYzoKLSAgLy8gVGVzdHMgdGhhdCBT
dGF0aWNBc3NlcnRUeXBlRXE8VDEsIFQyPiB3b3JrcyBpbiBhIGNsYXNzLgotICBIZWxwZXIoKSB7
IHRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIFQ+KCk7IH0KLQotICB2b2lkIERvU29t
ZXRoaW5nKCkge30KLX07Ci0KLXZvaWQgVGVzdCgpIHsKLSAgSGVscGVyPGJvb2w+IGg7Ci0gIGgu
RG9Tb21ldGhpbmcoKTsgIC8vIFRvIGF2b2lkIHRoZSAidW51c2VkIHZhcmlhYmxlIiB3YXJuaW5n
LgotfQotCi0jZWxpZiBkZWZpbmVkKFRFU1RfU1RBVElDX0FTU0VSVF9UWVBFX0VRX1dPUktTX0lO
X0ZVTkNUSU9OKQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdm9pZCBUZXN0KCkgewot
ICAvLyBUZXN0cyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+IHdvcmtzIGluc2lkZSBh
IGZ1bmN0aW9uLgotICB0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgaW50LCBpbnQ+
KCk7Ci19Ci0KLSNlbHNlCi0vLyBBIHNhbml0eSB0ZXN0LiAgVGhpcyBzaG91bGQgY29tcGlsZS4K
LQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLWludCBtYWluKCkgewotICByZXR1cm4gUlVO
X0FMTF9URVNUUygpOwotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfbmNfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfbmNfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDZmZmIz
ZjgwMzhmMGE1Nzk2ZTRiNmQ2MjlkMDJlODA1NjVhMjQzOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X25jX3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotIyBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0j
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiTmVnYXRpdmUgY29tcGlsYXRp
b24gdGVzdCBmb3IgR29vZ2xlIFRlc3QuIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0
ZXN0Ci0KLQotSVNfTElOVVggPSBvcy5uYW1lID09ICdwb3NpeCcgYW5kIG9zLnVuYW1lKClbMF0g
PT0gJ0xpbnV4JwotaWYgbm90IElTX0xJTlVYOgotICBzeXMuZXhpdCgwKSAgIyBOZWdhdGl2ZSBj
b21waWxhdGlvbiB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzICYgTWFjLgotCi0K
LWNsYXNzIEdUZXN0TkNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgIiIiTmVnYXRpdmUgY29t
cGlsYXRpb24gdGVzdCBmb3IgR29vZ2xlIFRlc3QuIiIiCi0KLSAgZGVmIHRlc3RDb21waWxlckVy
cm9yKHNlbGYpOgotICAgICIiIlZlcmlmaWVzIHRoYXQgZXJyb25lb3VzIGNvZGUgbGVhZHMgdG8g
ZXhwZWN0ZWQgY29tcGlsZXIKLSAgICBtZXNzYWdlcy4iIiIKLQotICAgICMgRGVmaW5lcyBhIGxp
c3Qgb2YgdGVzdCBzcGVjcywgd2hlcmUgZWFjaCBlbGVtZW50IGlzIGEgdHVwbGUKLSAgICAjICh0
ZXN0IG5hbWUsIGxpc3Qgb2YgcmVnZXhlcyBmb3IgbWF0Y2hpbmcgdGhlIGNvbXBpbGVyIGVycm9y
cykuCi0gICAgdGVzdF9zcGVjcyA9IFsKLSAgICAgICgnQ0FOTk9UX0lHTk9SRV9SVU5fQUxMX1RF
U1RTX1JFU1VMVCcsCi0gICAgICAgW3InaWdub3JpbmcgcmV0dXJuIHZhbHVlJ10pLAotCi0gICAg
ICAoJ1VTRVJfQ0FOTk9UX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfSU5MX0gnLAotICAgICAgIFty
J211c3Qgbm90IGJlIGluY2x1ZGVkIGV4Y2VwdCBieSBHb29nbGUgVGVzdCBpdHNlbGYnXSksCi0K
LSAgICAgICgnQ0FUQ0hFU19ERUNMQVJJTkdfU0VUVVBfSU5fVEVTVF9GSVhUVVJFX1dJVEhfVFlQ
TycsCi0gICAgICAgW3InU2V0dXBfc2hvdWxkX2JlX3NwZWxsZWRfU2V0VXAnXSksCi0KLSAgICAg
ICgnQ0FUQ0hFU19DQUxMSU5HX1NFVFVQX0lOX1RFU1RfV0lUSF9UWVBPJywKLSAgICAgICBbcidT
ZXR1cF9zaG91bGRfYmVfc3BlbGxlZF9TZXRVcCddKSwKLQotICAgICAgKCdDQVRDSEVTX0RFQ0xB
UklOR19TRVRVUF9JTl9FTlZJUk9OTUVOVF9XSVRIX1RZUE8nLAotICAgICAgIFtyJ1NldHVwX3No
b3VsZF9iZV9zcGVsbGVkX1NldFVwJ10pLAotCi0gICAgICAoJ0NBVENIRVNfQ0FMTElOR19TRVRV
UF9JTl9FTlZJUk9OTUVOVF9XSVRIX1RZUE8nLAotICAgICAgIFtyJ1NldHVwX3Nob3VsZF9iZV9z
cGVsbGVkX1NldFVwJ10pLAotCi0gICAgICAoJ0NBVENIRVNfV1JPTkdfQ0FTRV9JTl9UWVBFRF9U
RVNUX1AnLAotICAgICAgIFtyJ0JhclRlc3QuKndhcyBub3QgZGVjbGFyZWQnXSksCi0KLSAgICAg
ICgnQ0FUQ0hFU19XUk9OR19DQVNFX0lOX1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QJywKLSAg
ICAgICBbcidCYXJUZXN0Lip3YXMgbm90IGRlY2xhcmVkJ10pLAotCi0gICAgICAoJ0NBVENIRVNf
V1JPTkdfQ0FTRV9JTl9JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUCcsCi0gICAgICAgW3In
QmFyVGVzdC4qbm90IGRlY2xhcmVkJ10pLAotCi0gICAgICAoJ0NBVENIRVNfSU5TVEFOVElBVEVf
VFlQRURfVEVTRVRfQ0FTRV9QX1dJVEhfU0FNRV9OQU1FX1BSRUZJWCcsCi0gICAgICAgW3IncmVk
ZWZpbml0aW9uIG9mLipNeS4qRm9vVGVzdCddKSwKLQotICAgICAgKCdTVEFUSUNfQVNTRVJUX1RZ
UEVfRVFfSVNfTk9UX0FfVFlQRScsCi0gICAgICAgW3InU3RhdGljQXNzZXJ0VHlwZUVxLiogZG9l
cyBub3QgbmFtZSBhIHR5cGUnXSksCi0KLSAgICAgICgnU1RBVElDX0FTU0VSVF9UWVBFX0VRX1dP
UktTX0lOX05BTUVTUEFDRScsCi0gICAgICAgW3InU3RhdGljQXNzZXJ0VHlwZUVxLippbnQuKmNv
bnN0IGludCddKSwKLQotICAgICAgKCdTVEFUSUNfQVNTRVJUX1RZUEVfRVFfV09SS1NfSU5fQ0xB
U1MnLAotICAgICAgIFtyJ1N0YXRpY0Fzc2VydFR5cGVFcS4qaW50Lipib29sJ10pLAotCi0gICAg
ICAoJ1NUQVRJQ19BU1NFUlRfVFlQRV9FUV9XT1JLU19JTl9GVU5DVElPTicsCi0gICAgICAgW3In
U3RhdGljQXNzZXJ0VHlwZUVxLipjb25zdCBpbnQuKmludCddKSwKLQotICAgICAgKCdTQU5JVFkn
LAotICAgICAgIE5vbmUpCi0gICAgICBdCi0KLSAgICAjIFRPRE8od2FuQGdvb2dsZS5jb20pOiB2
ZXJpZnkgdGhhdCB0aGUgdGVzdCBzcGVjcyBhcmUgc2F0aXNmaWVkLgotCi0KLWlmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6Ci0gIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9ub190ZXN0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9ub190ZXN0X3VuaXR0ZXN0LmNjCmluZGV4IGFmZTJk
YzBjOTJmZTQzYWU5MzViMjJjZWYzMTc3ZTUxODRiN2ZmYTEuLmQ0Zjg4ZGJmZGZhNjhlNmEwYzQw
YmI5OWZhYzZlNGRiY2NmZjhmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QuY2MKQEAgLTI5LDI2ICsyOSwyNiBAQAog
CiAvLyBUZXN0cyB0aGF0IGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSB0aGF0IGhhcyBubyB0ZXN0IGRl
ZmluZWQgY2FuIHJ1bgogLy8gc3VjY2Vzc2Z1bGx5LgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbikKLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsK
ICAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwogCiAgIC8vIEFuIGFkLWhv
YyBhc3NlcnRpb24gb3V0c2lkZSBvZiBhbGwgdGVzdHMuCiAgIC8vCi0gIC8vIFRoaXMgc2VydmVz
IHR3byBwdXJwb3NlczoKKyAgLy8gVGhpcyBzZXJ2ZXMgdGhyZWUgcHVycG9zZXM6CiAgIC8vCiAg
IC8vIDEuIEl0IHZlcmlmaWVzIHRoYXQgYW4gYWQtaG9jIGFzc2VydGlvbiBjYW4gYmUgZXhlY3V0
ZWQgZXZlbiBpZgogICAvLyAgICBubyB0ZXN0IGlzIGRlZmluZWQuCi0gIC8vIDIuIFdlIGhhZCBh
IGJ1ZyB3aGVyZSB0aGUgWE1MIG91dHB1dCB3b24ndCBiZSBnZW5lcmF0ZWQgaWYgYW4KKyAgLy8g
Mi4gSXQgdmVyaWZpZXMgdGhhdCBhIGZhaWxlZCBhZC1ob2MgYXNzZXJ0aW9uIGNhdXNlcyB0aGUg
dGVzdAorICAvLyAgICBwcm9ncmFtIHRvIGZhaWwuCisgIC8vIDMuIFdlIGhhZCBhIGJ1ZyB3aGVy
ZSB0aGUgWE1MIG91dHB1dCB3b24ndCBiZSBnZW5lcmF0ZWQgaWYgYW4KICAgLy8gICAgYXNzZXJ0
aW9uIGlzIGV4ZWN1dGVkIGJlZm9yZSBSVU5fQUxMX1RFU1RTKCkgaXMgY2FsbGVkLCBldmVuCiAg
IC8vICAgIHRob3VnaCAtLWd0ZXN0X291dHB1dD14bWwgaXMgc3BlY2lmaWVkLiAgVGhpcyBtYWtl
cyBzdXJlIHRoZQogICAvLyAgICBidWcgaXMgZml4ZWQgYW5kIGRvZXNuJ3QgcmVncmVzcy4KLSAg
RVhQRUNUX0VRKDEsIDEpOworICBFWFBFQ1RfRVEoMSwgMik7CiAKLSAgcmV0dXJuIFJVTl9BTExf
VEVTVFMoKTsKKyAgLy8gVGhlIGFib3ZlIEVYUEVDVF9FUSgpIHNob3VsZCBjYXVzZSBSVU5fQUxM
X1RFU1RTKCkgdG8gcmV0dXJuIG5vbi16ZXJvLgorICByZXR1cm4gUlVOX0FMTF9URVNUUygpID8g
MCA6IDE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X291dHB1dF90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRw
dXRfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMTkyMDMwYTIwMjBiZmQ0
MWU5NGM0ZTQ5MTRjYWJhMzhkYjc0ZjJmYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1
dF90ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzI3ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52
IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRp
c3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlRlc3RzIHRoZSB0ZXh0IG91dHB1dCBv
ZiBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrLgotCi1TWU5PUFNJUwotICAgICAgIGd0ZXN0
X291dHB1dF90ZXN0LnB5IC0tZ3Rlc3RfYnVpbGRfZGlyPUJVSUxEL0RJUiAtLWdlbmdvbGRlbgot
ICAgICAgICAgIyB3aGVyZSBCVUlMRC9ESVIgY29udGFpbnMgdGhlIGJ1aWx0IGd0ZXN0X291dHB1
dF90ZXN0XyBmaWxlLgotICAgICAgIGd0ZXN0X291dHB1dF90ZXN0LnB5IC0tZ2VuZ29sZGVuCi0g
ICAgICAgZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkKLSIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHN5
cwotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLQotCi0jIFRoZSBmbGFnIGZvciBnZW5lcmF0aW5n
IHRoZSBnb2xkZW4gZmlsZQotR0VOR09MREVOX0ZMQUcgPSAnLS1nZW5nb2xkZW4nCi1DQVRDSF9F
WENFUFRJT05TX0VOVl9WQVJfTkFNRSA9ICdHVEVTVF9DQVRDSF9FWENFUFRJT05TJwotCi1JU19X
SU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCi0KLWlmIElTX1dJTkRPV1M6Ci0gIEdPTERFTl9OQU1F
ID0gJ2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl93aW4udHh0JwotZWxzZToKLSAgR09MREVOX05B
TUUgPSAnZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQnCi0KLVBST0dSQU1fUEFUSCA9
IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9vdXRwdXRfdGVz
dF8nKQotCi0jIEF0IGxlYXN0IG9uZSBjb21tYW5kIHdlIGV4ZXJjaXNlIG11c3Qgbm90IGhhdmUg
dGhlCi0jIC0tZ3Rlc3RfaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3Rz
IGZsYWcuCi1DT01NQU5EX0xJU1RfVEVTVFMgPSAoe30sIFtQUk9HUkFNX1BBVEgsICctLWd0ZXN0
X2xpc3RfdGVzdHMnXSkKLUNPTU1BTkRfV0lUSF9DT0xPUiA9ICh7fSwgW1BST0dSQU1fUEFUSCwg
Jy0tZ3Rlc3RfY29sb3I9eWVzJ10pCi1DT01NQU5EX1dJVEhfVElNRSA9ICh7fSwgW1BST0dSQU1f
UEFUSCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZ3Rlc3RfcHJpbnRfdGltZScsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICctLWd0ZXN0X2ludGVybmFsX3NraXBfZW52aXJvbm1l
bnRfYW5kX2FkX2hvY190ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICctLWd0ZXN0
X2ZpbHRlcj1GYXRhbEZhaWx1cmVUZXN0Lio6TG9nZ2luZ1Rlc3QuKiddKQotQ09NTUFORF9XSVRI
X0RJU0FCTEVEID0gKAotICAgIHt9LCBbUFJPR1JBTV9QQVRILAotICAgICAgICAgJy0tZ3Rlc3Rf
YWxzb19ydW5fZGlzYWJsZWRfdGVzdHMnLAotICAgICAgICAgJy0tZ3Rlc3RfaW50ZXJuYWxfc2tp
cF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzJywKLSAgICAgICAgICctLWd0ZXN0X2ZpbHRl
cj0qRElTQUJMRURfKiddKQotQ09NTUFORF9XSVRIX1NIQVJESU5HID0gKAotICAgIHsnR1RFU1Rf
U0hBUkRfSU5ERVgnOiAnMScsICdHVEVTVF9UT1RBTF9TSEFSRFMnOiAnMid9LAotICAgIFtQUk9H
UkFNX1BBVEgsCi0gICAgICctLWd0ZXN0X2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2Fk
X2hvY190ZXN0cycsCi0gICAgICctLWd0ZXN0X2ZpbHRlcj1QYXNzaW5nVGVzdC4qJ10pCi0KLUdP
TERFTl9QQVRIID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNlRGlyKCks
IEdPTERFTl9OQU1FKQotCi0KLWRlZiBUb1VuaXhMaW5lRW5kaW5nKHMpOgotICAiIiJDaGFuZ2Vz
IGFsbCBXaW5kb3dzL01hYyBsaW5lIGVuZGluZ3MgaW4gcyB0byBVTklYIGxpbmUgZW5kaW5ncy4i
IiIKLQotICByZXR1cm4gcy5yZXBsYWNlKCdcclxuJywgJ1xuJykucmVwbGFjZSgnXHInLCAnXG4n
KQotCi0KLWRlZiBSZW1vdmVMb2NhdGlvbnModGVzdF9vdXRwdXQpOgotICAiIiJSZW1vdmVzIGFs
bCBmaWxlIGxvY2F0aW9uIGluZm8gZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQu
Ci0KLSAgQXJnczoKLSAgICAgICB0ZXN0X291dHB1dDogIHRoZSBvdXRwdXQgb2YgYSBHb29nbGUg
VGVzdCBwcm9ncmFtLgotCi0gIFJldHVybnM6Ci0gICAgICAgb3V0cHV0IHdpdGggYWxsIGZpbGUg
bG9jYXRpb24gaW5mbyAoaW4gdGhlIGZvcm0gb2YKLSAgICAgICAnRElSRUNUT1JZL0ZJTEVfTkFN
RTpMSU5FX05VTUJFUjogJ29yCi0gICAgICAgJ0RJUkVDVE9SWVxcRklMRV9OQU1FKExJTkVfTlVN
QkVSKTogJykgcmVwbGFjZWQgYnkKLSAgICAgICAnRklMRV9OQU1FOiM6ICcuCi0gICIiIgotCi0g
IHJldHVybiByZS5zdWIocicuKlsvXFxdKC4rKShcOlxkK3xcKFxkK1wpKVw6ICcsIHInXDE6Izog
JywgdGVzdF9vdXRwdXQpCi0KLQotZGVmIFJlbW92ZVN0YWNrVHJhY2VEZXRhaWxzKG91dHB1dCk6
Ci0gICIiIlJlbW92ZXMgYWxsIHN0YWNrIHRyYWNlcyBmcm9tIGEgR29vZ2xlIFRlc3QgcHJvZ3Jh
bSdzIG91dHB1dC4iIiIKLQotICAjICo/IG1lYW5zICJmaW5kIHRoZSBzaG9ydGVzdCBzdHJpbmcg
dGhhdCBtYXRjaGVzIi4KLSAgcmV0dXJuIHJlLnN1YihyJ1N0YWNrIHRyYWNlOigufFxuKSo/XG5c
bicsCi0gICAgICAgICAgICAgICAgJ1N0YWNrIHRyYWNlOiAob21pdHRlZClcblxuJywgb3V0cHV0
KQotCi0KLWRlZiBSZW1vdmVTdGFja1RyYWNlcyhvdXRwdXQpOgotICAiIiJSZW1vdmVzIGFsbCB0
cmFjZXMgb2Ygc3RhY2sgdHJhY2VzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0
LiIiIgotCi0gICMgKj8gbWVhbnMgImZpbmQgdGhlIHNob3J0ZXN0IHN0cmluZyB0aGF0IG1hdGNo
ZXMiLgotICByZXR1cm4gcmUuc3ViKHInU3RhY2sgdHJhY2U6KC58XG4pKj9cblxuJywgJycsIG91
dHB1dCkKLQotCi1kZWYgUmVtb3ZlVGltZShvdXRwdXQpOgotICAiIiJSZW1vdmVzIGFsbCB0aW1l
IGluZm9ybWF0aW9uIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgotCi0g
IHJldHVybiByZS5zdWIocidcKFxkKyBtcycsICcoPyBtcycsIG91dHB1dCkKLQotCi1kZWYgUmVt
b3ZlVHlwZUluZm9EZXRhaWxzKHRlc3Rfb3V0cHV0KToKLSAgIiIiUmVtb3ZlcyBjb21waWxlci1z
cGVjaWZpYyB0eXBlIGluZm8gZnJvbSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LgotCi0g
IEFyZ3M6Ci0gICAgICAgdGVzdF9vdXRwdXQ6ICB0aGUgb3V0cHV0IG9mIGEgR29vZ2xlIFRlc3Qg
cHJvZ3JhbS4KLQotICBSZXR1cm5zOgotICAgICAgIG91dHB1dCB3aXRoIHR5cGUgaW5mb3JtYXRp
b24gbm9ybWFsaXplZCB0byBjYW5vbmljYWwgZm9ybS4KLSAgIiIiCi0KLSAgIyBzb21lIGNvbXBp
bGVycyBvdXRwdXQgdGhlIG5hbWUgb2YgdHlwZSAndW5zaWduZWQgaW50JyBhcyAndW5zaWduZWQn
Ci0gIHJldHVybiByZS5zdWIocid1bnNpZ25lZCBpbnQnLCAndW5zaWduZWQnLCB0ZXN0X291dHB1
dCkKLQotCi1kZWYgUmVtb3ZlVGVzdENvdW50cyhvdXRwdXQpOgotICAiIiJSZW1vdmVzIHRlc3Qg
Y291bnRzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgotCi0gIG91dHB1
dCA9IHJlLnN1YihyJ1xkKyB0ZXN0cz8sIGxpc3RlZCBiZWxvdycsCi0gICAgICAgICAgICAgICAg
ICAnPyB0ZXN0cywgbGlzdGVkIGJlbG93Jywgb3V0cHV0KQotICBvdXRwdXQgPSByZS5zdWIocidc
ZCsgRkFJTEVEIFRFU1RTJywKLSAgICAgICAgICAgICAgICAgICc/IEZBSUxFRCBURVNUUycsIG91
dHB1dCkKLSAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIHRlc3RzPyBmcm9tIFxkKyB0ZXN0IGNhc2Vz
PycsCi0gICAgICAgICAgICAgICAgICAnPyB0ZXN0cyBmcm9tID8gdGVzdCBjYXNlcycsIG91dHB1
dCkKLSAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIHRlc3RzPyBmcm9tIChbYS16QS1aX10pJywKLSAg
ICAgICAgICAgICAgICAgIHInPyB0ZXN0cyBmcm9tIFwxJywgb3V0cHV0KQotICByZXR1cm4gcmUu
c3ViKHInXGQrIHRlc3RzP1wuJywgJz8gdGVzdHMuJywgb3V0cHV0KQotCi0KLWRlZiBSZW1vdmVN
YXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCBwYXR0ZXJuKToKLSAgIiIiUmVtb3ZlcyBvdXRwdXQg
b2Ygc3BlY2lmaWVkIHRlc3RzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0Lgot
Ci0gIFRoaXMgZnVuY3Rpb24gc3RyaXBzIG5vdCBvbmx5IHRoZSBiZWdpbm5pbmcgYW5kIHRoZSBl
bmQgb2YgYSB0ZXN0IGJ1dCBhbHNvCi0gIGFsbCBvdXRwdXQgaW4gYmV0d2Vlbi4KLQotICBBcmdz
OgotICAgIHRlc3Rfb3V0cHV0OiAgICAgICBBIHN0cmluZyBjb250YWluaW5nIHRoZSB0ZXN0IG91
dHB1dC4KLSAgICBwYXR0ZXJuOiAgICAgICAgICAgQSByZWdleCBzdHJpbmcgdGhhdCBtYXRjaGVz
IG5hbWVzIG9mIHRlc3QgY2FzZXMgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMgdG8g
cmVtb3ZlLgotCi0gIFJldHVybnM6Ci0gICAgQ29udGVudHMgb2YgdGVzdF9vdXRwdXQgd2l0aCB0
ZXN0cyB3aG9zZSBuYW1lcyBtYXRjaCBwYXR0ZXJuIHJlbW92ZWQuCi0gICIiIgotCi0gIHRlc3Rf
b3V0cHV0ID0gcmUuc3ViKAotICAgICAgcicuKlxbIFJVTiAgICAgIFxdIC4qJXMoLnxcbikqP1xb
KCAgRkFJTEVEICB8ICAgICAgIE9LIClcXSAuKiVzLipcbicgJSAoCi0gICAgICAgICAgcGF0dGVy
biwgcGF0dGVybiksCi0gICAgICAnJywKLSAgICAgIHRlc3Rfb3V0cHV0KQotICByZXR1cm4gcmUu
c3ViKHInLiolcy4qXG4nICUgcGF0dGVybiwgJycsIHRlc3Rfb3V0cHV0KQotCi0KLWRlZiBOb3Jt
YWxpemVPdXRwdXQob3V0cHV0KToKLSAgIiIiTm9ybWFsaXplcyBvdXRwdXQgKHRoZSBvdXRwdXQg
b2YgZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmV4ZSkuIiIiCi0KLSAgb3V0cHV0ID0gVG9Vbml4TGluZUVu
ZGluZyhvdXRwdXQpCi0gIG91dHB1dCA9IFJlbW92ZUxvY2F0aW9ucyhvdXRwdXQpCi0gIG91dHB1
dCA9IFJlbW92ZVN0YWNrVHJhY2VEZXRhaWxzKG91dHB1dCkKLSAgb3V0cHV0ID0gUmVtb3ZlVGlt
ZShvdXRwdXQpCi0gIHJldHVybiBvdXRwdXQKLQotCi1kZWYgR2V0U2hlbGxDb21tYW5kT3V0cHV0
KGVudl9jbWQpOgotICAiIiJSdW5zIGEgY29tbWFuZCBpbiBhIHN1Yi1wcm9jZXNzLCBhbmQgcmV0
dXJucyBpdHMgb3V0cHV0IGluIGEgc3RyaW5nLgotCi0gIEFyZ3M6Ci0gICAgZW52X2NtZDogVGhl
IHNoZWxsIGNvbW1hbmQuIEEgMi10dXBsZSB3aGVyZSBlbGVtZW50IDAgaXMgYSBkaWN0IG9mIGV4
dHJhCi0gICAgICAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCwgYW5kIGVsZW1l
bnQgMSBpcyBhIHN0cmluZyB3aXRoCi0gICAgICAgICAgICAgdGhlIGNvbW1hbmQgYW5kIGFueSBm
bGFncy4KLQotICBSZXR1cm5zOgotICAgIEEgc3RyaW5nIHdpdGggdGhlIGNvbW1hbmQncyBjb21i
aW5lZCBzdGFuZGFyZCBhbmQgZGlhZ25vc3RpYyBvdXRwdXQuCi0gICIiIgotCi0gICMgU3Bhd25z
IGNtZCBpbiBhIHN1Yi1wcm9jZXNzLCBhbmQgZ2V0cyBpdHMgc3RhbmRhcmQgSS9PIGZpbGUgb2Jq
ZWN0cy4KLSAgIyBTZXQgYW5kIHNhdmUgdGhlIGVudmlyb25tZW50IHByb3Blcmx5LgotICBlbnZp
cm9uID0gb3MuZW52aXJvbi5jb3B5KCkKLSAgZW52aXJvbi51cGRhdGUoZW52X2NtZFswXSkKLSAg
cCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhlbnZfY21kWzFdLCBlbnY9ZW52aXJvbikK
LQotICByZXR1cm4gcC5vdXRwdXQKLQotCi1kZWYgR2V0Q29tbWFuZE91dHB1dChlbnZfY21kKToK
LSAgIiIiUnVucyBhIGNvbW1hbmQgYW5kIHJldHVybnMgaXRzIG91dHB1dCB3aXRoIGFsbCBmaWxl
IGxvY2F0aW9uCi0gIGluZm8gc3RyaXBwZWQgb2ZmLgotCi0gIEFyZ3M6Ci0gICAgZW52X2NtZDog
IFRoZSBzaGVsbCBjb21tYW5kLiBBIDItdHVwbGUgd2hlcmUgZWxlbWVudCAwIGlzIGEgZGljdCBv
ZiBleHRyYQotICAgICAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0LCBhbmQg
ZWxlbWVudCAxIGlzIGEgc3RyaW5nIHdpdGgKLSAgICAgICAgICAgICAgdGhlIGNvbW1hbmQgYW5k
IGFueSBmbGFncy4KLSAgIiIiCi0KLSAgIyBEaXNhYmxlcyBleGNlcHRpb24gcG9wLXVwcyBvbiBX
aW5kb3dzLgotICBlbnZpcm9uLCBjbWRsaW5lID0gZW52X2NtZAotICBlbnZpcm9uID0gZGljdChl
bnZpcm9uKSAgIyBFbnN1cmVzIHdlIGFyZSBtb2RpZnlpbmcgYSBjb3B5LgotICBlbnZpcm9uW0NB
VENIX0VYQ0VQVElPTlNfRU5WX1ZBUl9OQU1FXSA9ICcxJwotICByZXR1cm4gTm9ybWFsaXplT3V0
cHV0KEdldFNoZWxsQ29tbWFuZE91dHB1dCgoZW52aXJvbiwgY21kbGluZSkpKQotCi0KLWRlZiBH
ZXRPdXRwdXRPZkFsbENvbW1hbmRzKCk6Ci0gICIiIlJldHVybnMgY29uY2F0ZW5hdGVkIG91dHB1
dCBmcm9tIHNldmVyYWwgcmVwcmVzZW50YXRpdmUgY29tbWFuZHMuIiIiCi0KLSAgcmV0dXJuIChH
ZXRDb21tYW5kT3V0cHV0KENPTU1BTkRfV0lUSF9DT0xPUikgKwotICAgICAgICAgIEdldENvbW1h
bmRPdXRwdXQoQ09NTUFORF9XSVRIX1RJTUUpICsKLSAgICAgICAgICBHZXRDb21tYW5kT3V0cHV0
KENPTU1BTkRfV0lUSF9ESVNBQkxFRCkgKwotICAgICAgICAgIEdldENvbW1hbmRPdXRwdXQoQ09N
TUFORF9XSVRIX1NIQVJESU5HKSkKLQotCi10ZXN0X2xpc3QgPSBHZXRTaGVsbENvbW1hbmRPdXRw
dXQoQ09NTUFORF9MSVNUX1RFU1RTKQotU1VQUE9SVFNfREVBVEhfVEVTVFMgPSAnRGVhdGhUZXN0
JyBpbiB0ZXN0X2xpc3QKLVNVUFBPUlRTX1RZUEVEX1RFU1RTID0gJ1R5cGVkVGVzdCcgaW4gdGVz
dF9saXN0Ci1TVVBQT1JUU19USFJFQURTID0gJ0V4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3Qn
IGluIHRlc3RfbGlzdAotU1VQUE9SVFNfU1RBQ0tfVFJBQ0VTID0gRmFsc2UKLQotQ0FOX0dFTkVS
QVRFX0dPTERFTl9GSUxFID0gKFNVUFBPUlRTX0RFQVRIX1RFU1RTIGFuZAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNVUFBPUlRTX1RZUEVEX1RFU1RTIGFuZAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNVUFBPUlRTX1RIUkVBRFMpCi0KLQotY2xhc3MgR1Rlc3RPdXRwdXRUZXN0
KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgotICBkZWYgUmVtb3ZlVW5zdXBwb3J0ZWRUZXN0
cyhzZWxmLCB0ZXN0X291dHB1dCk6Ci0gICAgaWYgbm90IFNVUFBPUlRTX0RFQVRIX1RFU1RTOgot
ICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCAnRGVh
dGhUZXN0JykKLSAgICBpZiBub3QgU1VQUE9SVFNfVFlQRURfVEVTVFM6Ci0gICAgICB0ZXN0X291
dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdUeXBlZFRlc3QnKQotICAg
ICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCAnVHlwZWRE
ZWF0aFRlc3QnKQotICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rf
b3V0cHV0LCAnVHlwZVBhcmFtRGVhdGhUZXN0JykKLSAgICBpZiBub3QgU1VQUE9SVFNfVEhSRUFE
UzoKLSAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRXhwZWN0RmFpbHVyZVdp
dGhUaHJlYWRzVGVzdCcpCi0gICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHMo
dGVzdF9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Nj
b3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdCcpCi0gICAgICB0ZXN0X291dHB1dCA9
IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ1dvcmtzQ29uY3VycmVudGx5JykKLSAgICBpZiBub3QgU1VQUE9S
VFNfU1RBQ0tfVFJBQ0VTOgotICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVTdGFja1RyYWNlcyh0
ZXN0X291dHB1dCkKLQotICAgIHJldHVybiB0ZXN0X291dHB1dAotCi0gIGRlZiB0ZXN0T3V0cHV0
KHNlbGYpOgotICAgIG91dHB1dCA9IEdldE91dHB1dE9mQWxsQ29tbWFuZHMoKQotCi0gICAgZ29s
ZGVuX2ZpbGUgPSBvcGVuKEdPTERFTl9QQVRILCAncmInKQotICAgICMgQSBtaXMtY29uZmlndXJl
ZCBzb3VyY2UgY29udHJvbCBzeXN0ZW0gY2FuIGNhdXNlIFxyIGFwcGVhciBpbiBFT0wKLSAgICAj
IHNlcXVlbmNlcyB3aGVuIHdlIHJlYWQgdGhlIGdvbGRlbiBmaWxlIGlycmVzcGVjdGl2ZSBvZiBh
biBvcGVyYXRpbmcKLSAgICAjIHN5c3RlbSB1c2VkLiBUaGVyZWZvcmUsIHdlIG5lZWQgdG8gc3Ry
aXAgdGhvc2UgXHIncyBmcm9tIG5ld2xpbmVzCi0gICAgIyB1bmNvbmRpdGlvbmFsbHkuCi0gICAg
Z29sZGVuID0gVG9Vbml4TGluZUVuZGluZyhnb2xkZW5fZmlsZS5yZWFkKCkpCi0gICAgZ29sZGVu
X2ZpbGUuY2xvc2UoKQotCi0gICAgIyBXZSB3YW50IHRoZSB0ZXN0IHRvIHBhc3MgcmVnYXJkbGVz
cyBvZiBjZXJ0YWluIGZlYXR1cmVzIGJlaW5nCi0gICAgIyBzdXBwb3J0ZWQgb3Igbm90LgotCi0g
ICAgIyBXZSBzdGlsbCBoYXZlIHRvIHJlbW92ZSB0eXBlIG5hbWUgc3BlY2lmaWNzIGluIGFsbCBj
YXNlcy4KLSAgICBub3JtYWxpemVkX2FjdHVhbCA9IFJlbW92ZVR5cGVJbmZvRGV0YWlscyhvdXRw
dXQpCi0gICAgbm9ybWFsaXplZF9nb2xkZW4gPSBSZW1vdmVUeXBlSW5mb0RldGFpbHMoZ29sZGVu
KQotCi0gICAgaWYgQ0FOX0dFTkVSQVRFX0dPTERFTl9GSUxFOgotICAgICAgc2VsZi5hc3NlcnRF
cXVhbChub3JtYWxpemVkX2dvbGRlbiwgbm9ybWFsaXplZF9hY3R1YWwpCi0gICAgZWxzZToKLSAg
ICAgIG5vcm1hbGl6ZWRfYWN0dWFsID0gUmVtb3ZlVGVzdENvdW50cyhub3JtYWxpemVkX2FjdHVh
bCkKLSAgICAgIG5vcm1hbGl6ZWRfZ29sZGVuID0gUmVtb3ZlVGVzdENvdW50cyhzZWxmLlJlbW92
ZVVuc3VwcG9ydGVkVGVzdHMoCi0gICAgICAgICAgbm9ybWFsaXplZF9nb2xkZW4pKQotCi0gICAg
ICAjIFRoaXMgY29kZSBpcyB2ZXJ5IGhhbmR5IHdoZW4gZGVidWdnaW5nIGdvbGRlbiBmaWxlIGRp
ZmZlcmVuY2VzOgotICAgICAgaWYgb3MuZ2V0ZW52KCdERUJVR19HVEVTVF9PVVRQVVRfVEVTVCcp
OgotICAgICAgICBvcGVuKG9zLnBhdGguam9pbigKLSAgICAgICAgICAgIGd0ZXN0X3Rlc3RfdXRp
bHMuR2V0U291cmNlRGlyKCksCi0gICAgICAgICAgICAnX2d0ZXN0X291dHB1dF90ZXN0X25vcm1h
bGl6ZWRfYWN0dWFsLnR4dCcpLCAnd2InKS53cml0ZSgKLSAgICAgICAgICAgICAgICBub3JtYWxp
emVkX2FjdHVhbCkKLSAgICAgICAgb3Blbihvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICBndGVz
dF90ZXN0X3V0aWxzLkdldFNvdXJjZURpcigpLAotICAgICAgICAgICAgJ19ndGVzdF9vdXRwdXRf
dGVzdF9ub3JtYWxpemVkX2dvbGRlbi50eHQnKSwgJ3diJykud3JpdGUoCi0gICAgICAgICAgICAg
ICAgbm9ybWFsaXplZF9nb2xkZW4pCi0KLSAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWFsaXpl
ZF9nb2xkZW4sIG5vcm1hbGl6ZWRfYWN0dWFsKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5f
Xyc6Ci0gIGlmIHN5cy5hcmd2WzE6XSA9PSBbR0VOR09MREVOX0ZMQUddOgotICAgIGlmIENBTl9H
RU5FUkFURV9HT0xERU5fRklMRToKLSAgICAgIG91dHB1dCA9IEdldE91dHB1dE9mQWxsQ29tbWFu
ZHMoKQotICAgICAgZ29sZGVuX2ZpbGUgPSBvcGVuKEdPTERFTl9QQVRILCAnd2InKQotICAgICAg
Z29sZGVuX2ZpbGUud3JpdGUob3V0cHV0KQotICAgICAgZ29sZGVuX2ZpbGUuY2xvc2UoKQotICAg
IGVsc2U6Ci0gICAgICBtZXNzYWdlID0gKAotICAgICAgICAgICIiIlVuYWJsZSB0byB3cml0ZSBh
IGdvbGRlbiBmaWxlIHdoZW4gY29tcGlsZWQgaW4gYW4gZW52aXJvbm1lbnQKLXRoYXQgZG9lcyBu
b3Qgc3VwcG9ydCBhbGwgdGhlIHJlcXVpcmVkIGZlYXR1cmVzIChkZWF0aCB0ZXN0cyIiIikKLSAg
ICAgIGlmIElTX1dJTkRPV1M6Ci0gICAgICAgIG1lc3NhZ2UgKz0gKAotICAgICAgICAgICAgIiIi
XG5hbmQgdHlwZWQgdGVzdHMpLiBQbGVhc2UgY2hlY2sgdGhhdCB5b3UgYXJlIHVzaW5nIFZDKysg
OC4wIFNQMQotb3IgaGlnaGVyIGFzIHlvdXIgY29tcGlsZXIuIiIiKQotICAgICAgZWxzZToKLSAg
ICAgICAgbWVzc2FnZSArPSAiIiJcbnR5cGVkIHRlc3RzLCBhbmQgdGhyZWFkcykuICBQbGVhc2Ug
Z2VuZXJhdGUgdGhlCi1nb2xkZW4gZmlsZSB1c2luZyBhIGJpbmFyeSBidWlsdCB3aXRoIHRob3Nl
IGZlYXR1cmVzIGVuYWJsZWQuIiIiCi0KLSAgICAgIHN5cy5zdGRlcnIud3JpdGUobWVzc2FnZSkK
LSAgICAgIHN5cy5leGl0KDEpCi0gIGVsc2U6Ci0gICAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF8u
Y2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3M2U4ZTkzZWIwNTlmNWRiNjkzN2M4
YzdkNzc3NjZmODc4MDUyNzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF8u
Y2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMTM1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1LCBH
b29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
Ly8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBIHVuaXQgdGVzdCBmb3IgR29vZ2xlIFRl
c3QgaXRzZWxmLiAgVGhpcyB2ZXJpZmllcyB0aGF0IHRoZSBiYXNpYwotLy8gY29uc3RydWN0cyBv
ZiBHb29nbGUgVGVzdCB3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+Ci0KLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBw
YXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJl
Zm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwg
YmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2Vy
IGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8g
aGlzIGNvZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAic3Jj
L2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi0j
aW5jbHVkZSA8c3RkbGliLmg+Ci0KLSNpZiBHVEVTVF9JU19USFJFQURTQUZFCi11c2luZyB0ZXN0
aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjsKLXVzaW5nIHRlc3Rpbmc6OlRl
c3RQYXJ0UmVzdWx0QXJyYXk7Ci0KLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpOb3RpZmljYXRp
b247Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkV2l0aFBhcmFtOwotI2VuZGlmCi0K
LW5hbWVzcGFjZSBwb3NpeCA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OwotdXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OlN0cmluZzsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpzY29wZWRf
cHRyOwotCi0vLyBUZXN0cyBjYXRjaGluZyBmYXRhbCBmYWlsdXJlcy4KLQotLy8gQSBzdWJyb3V0
aW5lIHVzZWQgYnkgdGhlIGZvbGxvd2luZyB0ZXN0Lgotdm9pZCBUZXN0RXExKGludCB4KSB7Ci0g
IEFTU0VSVF9FUSgxLCB4KTsKLX0KLQotLy8gVGhpcyBmdW5jdGlvbiBjYWxscyBhIHRlc3Qgc3Vi
cm91dGluZSwgY2F0Y2hlcyB0aGUgZmF0YWwgZmFpbHVyZSBpdAotLy8gZ2VuZXJhdGVzLCBhbmQg
dGhlbiByZXR1cm5zIGVhcmx5Lgotdm9pZCBUcnlUZXN0U3Vicm91dGluZSgpIHsKLSAgLy8gQ2Fs
bHMgYSBzdWJyb3VudGluZSB0aGF0IHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUuCi0gIFRlc3RFcTEo
Mik7Ci0KLSAgLy8gQ2F0Y2hlcyB0aGUgZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSB0ZXN0
LgotICAvLwotICAvLyBUaGUgdGVzdGluZzo6VGVzdDo6IHByZWZpeCBpcyBuZWNlc3Nhcnkgd2hl
biBjYWxsaW5nCi0gIC8vIEhhc0ZhdGFsRmFpbHVyZSgpIG91dHNpZGUgb2YgYSBURVNULCBURVNU
X0YsIG9yIHRlc3QgZml4dHVyZS4KLSAgaWYgKHRlc3Rpbmc6OlRlc3Q6Okhhc0ZhdGFsRmFpbHVy
ZSgpKSByZXR1cm47Ci0KLSAgLy8gSWYgd2UgZ2V0IGhlcmUsIHNvbWV0aGluZyBpcyB3cm9uZy4K
LSAgRkFJTCgpIDw8ICJUaGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkLiI7Ci19Ci0KLVRFU1Qo
UGFzc2luZ1Rlc3QsIFBhc3NpbmdUZXN0MSkgewotfQotCi1URVNUKFBhc3NpbmdUZXN0LCBQYXNz
aW5nVGVzdDIpIHsKLX0KLQotLy8gVGVzdHMgY2F0Y2hpbmcgYSBmYXRhbCBmYWlsdXJlIGluIGEg
c3Vicm91dGluZS4KLVRFU1QoRmF0YWxGYWlsdXJlVGVzdCwgRmF0YWxGYWlsdXJlSW5TdWJyb3V0
aW5lKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAx
KVxuIik7Ci0KLSAgVHJ5VGVzdFN1YnJvdXRpbmUoKTsKLX0KLQotLy8gVGVzdHMgY2F0Y2hpbmcg
YSBmYXRhbCBmYWlsdXJlIGluIGEgbmVzdGVkIHN1YnJvdXRpbmUuCi1URVNUKEZhdGFsRmFpbHVy
ZVRlc3QsIEZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZSkgewotICBwcmludGYoIihleHBl
Y3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSlcbiIpOwotCi0gIC8vIENhbGxzIGEg
c3Vicm91bnRpbmUgdGhhdCB5aWVsZHMgYSBmYXRhbCBmYWlsdXJlLgotICBUcnlUZXN0U3Vicm91
dGluZSgpOwotCi0gIC8vIENhdGNoZXMgdGhlIGZhdGFsIGZhaWx1cmUgYW5kIGFib3J0cyB0aGUg
dGVzdC4KLSAgLy8KLSAgLy8gV2hlbiBjYWxsaW5nIEhhc0ZhdGFsRmFpbHVyZSgpIGluc2lkZSBh
IFRFU1QsIFRFU1RfRiwgb3IgdGVzdAotICAvLyBmaXh0dXJlLCB0aGUgdGVzdGluZzo6VGVzdDo6
IHByZWZpeCBpcyBub3QgbmVlZGVkLgotICBpZiAoSGFzRmF0YWxGYWlsdXJlKCkpIHJldHVybjsK
LQotICAvLyBJZiB3ZSBnZXQgaGVyZSwgc29tZXRoaW5nIGlzIHdyb25nLgotICBGQUlMKCkgPDwg
IlRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQuIjsKLX0KLQotLy8gVGVzdHMgSGFzRmF0YWxG
YWlsdXJlKCkgYWZ0ZXIgYSBmYWlsZWQgRVhQRUNUIGNoZWNrLgotVEVTVChGYXRhbEZhaWx1cmVU
ZXN0LCBOb25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5n
IGEgZmFpbHVyZSBvbiBmYWxzZSlcbiIpOwotICBFWFBFQ1RfVFJVRShmYWxzZSk7ICAvLyBHZW5l
cmF0ZXMgYSBub25mYXRhbCBmYWlsdXJlCi0gIEFTU0VSVF9GQUxTRShIYXNGYXRhbEZhaWx1cmUo
KSk7ICAvLyBUaGlzIHNob3VsZCBzdWNjZWVkLgotfQotCi0vLyBUZXN0cyBpbnRlcmxlYXZpbmcg
dXNlciBsb2dnaW5nIGFuZCBHb29nbGUgVGVzdCBhc3NlcnRpb25zLgotVEVTVChMb2dnaW5nVGVz
dCwgSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMpIHsKLSAgc3RhdGljIGNvbnN0IGlu
dCBhWzRdID0gewotICAgIDMsIDksIDIsIDYKLSAgfTsKLQotICBwcmludGYoIihleHBlY3Rpbmcg
MiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKVxuIik7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwg
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoYSkvc2l6ZW9mKCphKSk7IGkrKykgewotICAgIHByaW50
ZigiaSA9PSAlZFxuIiwgaSk7Ci0gICAgRVhQRUNUX0dFKDMsIGFbaV0pOwotICB9Ci19Ci0KLS8v
IFRlc3RzIHRoZSBTQ09QRURfVFJBQ0UgbWFjcm8uCi0KLS8vIEEgaGVscGVyIGZ1bmN0aW9uIGZv
ciB0ZXN0aW5nIFNDT1BFRF9UUkFDRS4KLXZvaWQgU3ViV2l0aG91dFRyYWNlKGludCBuKSB7Ci0g
IEVYUEVDVF9FUSgxLCBuKTsKLSAgQVNTRVJUX0VRKDIsIG4pOwotfQotCi0vLyBBbm90aGVyIGhl
bHBlciBmdW5jdGlvbiBmb3IgdGVzdGluZyBTQ09QRURfVFJBQ0UuCi12b2lkIFN1YldpdGhUcmFj
ZShpbnQgbikgewotICBTQ09QRURfVFJBQ0UodGVzdGluZzo6TWVzc2FnZSgpIDw8ICJuID0gIiA8
PCBuKTsKLQotICBTdWJXaXRob3V0VHJhY2Uobik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgU0NPUEVE
X1RSQUNFKCkgb2JleXMgbGV4aWNhbCBzY29wZXMuCi1URVNUKFNDT1BFRF9UUkFDRVRlc3QsIE9i
ZXlzU2NvcGVzKSB7Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKLQotICAvLyBU
aGVyZSBzaG91bGQgYmUgbm8gdHJhY2UgYmVmb3JlIFNDT1BFRF9UUkFDRSgpIGlzIGludm9rZWQu
Ci0gIEFERF9GQUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3Vs
ZG4ndCBoYXZlIGEgdHJhY2UuIjsKLQotICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJFeHBlY3RlZCB0
cmFjZSIpOwotICAgIC8vIEFmdGVyIFNDT1BFRF9UUkFDRSgpLCBhIGZhaWx1cmUgaW4gdGhlIGN1
cnJlbnQgc2NvcGUgc2hvdWxkIGNvbnRhaW4KLSAgICAvLyB0aGUgdHJhY2UuCi0gICAgQUREX0ZB
SUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGhhdmUgYSB0
cmFjZS4iOwotICB9Ci0KLSAgLy8gT25jZSB0aGUgY29udHJvbCBsZWF2ZXMgdGhlIHNjb3BlIG9m
IHRoZSBTQ09QRURfVFJBQ0UoKSwgdGhlcmUKLSAgLy8gc2hvdWxkIGJlIG5vIHRyYWNlIGFnYWlu
LgotICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91
bGRuJ3QgaGF2ZSBhIHRyYWNlLiI7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFIHdv
cmtzIGluc2lkZSBhIGxvb3AuCi1URVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtzSW5Mb29wKSB7
Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKLQotICBmb3IgKGludCBpID0gMTsg
aSA8PSAyOyBpKyspIHsKLSAgICBTQ09QRURfVFJBQ0UodGVzdGluZzo6TWVzc2FnZSgpIDw8ICJp
ID0gIiA8PCBpKTsKLQotICAgIFN1YldpdGhvdXRUcmFjZShpKTsKLSAgfQotfQotCi0vLyBUZXN0
cyB0aGF0IFNDT1BFRF9UUkFDRSB3b3JrcyBpbiBhIHN1YnJvdXRpbmUuCi1URVNUKFNDT1BFRF9U
UkFDRVRlc3QsIFdvcmtzSW5TdWJyb3V0aW5lKSB7Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZh
aWwpXG4iKTsKLQotICBTdWJXaXRoVHJhY2UoMSk7Ci0gIFN1YldpdGhUcmFjZSgyKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0UgY2FuIGJlIG5lc3RlZC4KLVRFU1QoU0NPUEVEX1RS
QUNFVGVzdCwgQ2FuQmVOZXN0ZWQpIHsKLSAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIp
OwotCi0gIFNDT1BFRF9UUkFDRSgiIik7ICAvLyBBIHRyYWNlIHdpdGhvdXQgYSBtZXNzYWdlLgot
Ci0gIFN1YldpdGhUcmFjZSgyKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBtdWx0aXBsZSBTQ09QRURf
VFJBQ0VzIGNhbiBiZSB1c2VkIGluIHRoZSBzYW1lIHNjb3BlLgotVEVTVChTQ09QRURfVFJBQ0VU
ZXN0LCBDYW5CZVJlcGVhdGVkKSB7Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsK
LQotICBTQ09QRURfVFJBQ0UoIkEiKTsKLSAgQUREX0ZBSUxVUkUoKQotICAgICAgPDwgIlRoaXMg
ZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEuIjsK
LQotICBTQ09QRURfVFJBQ0UoIkIiKTsKLSAgQUREX0ZBSUxVUkUoKQotICAgICAgPDwgIlRoaXMg
ZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEgYW5k
IEIuIjsKLQotICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJDIik7Ci0gICAgQUREX0ZBSUxVUkUoKSA8
PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gIgotICAgICAg
ICAgICAgICAgICAgPDwgInRyYWNlIHBvaW50IEEsIEIsIGFuZCBDLiI7Ci0gIH0KLQotICBTQ09Q
RURfVFJBQ0UoIkQiKTsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVj
dGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gIgotICAgICAgICAgICAgICAgIDw8ICJ0cmFjZSBwb2lu
dCBBLCBCLCBhbmQgRC4iOwotfQotCi0jaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQotLy8gVGVzdHMg
dGhhdCBTQ09QRURfVFJBQ0UoKXMgY2FuIGJlIHVzZWQgY29uY3VycmVudGx5IGZyb20gbXVsdGlw
bGUKLS8vIHRocmVhZHMuICBOYW1lbHksIGFuIGFzc2VydGlvbiBzaG91bGQgYmUgYWZmZWN0ZWQg
YnkKLS8vIFNDT1BFRF9UUkFDRSgpcyBpbiBpdHMgb3duIHRocmVhZCBvbmx5LgotCi0vLyBIZXJl
J3MgdGhlIHNlcXVlbmNlIG9mIGFjdGlvbnMgdGhhdCBoYXBwZW4gaW4gdGhlIHRlc3Q6Ci0vLwot
Ly8gICBUaHJlYWQgQSAobWFpbikgICAgICAgICAgICAgICAgfCBUaHJlYWQgQiAoc3Bhd25lZCkK
LS8vICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PXw9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLy8gICBzcGF3bnMgdGhyZWFkIEIgICAgICAgICAgICAgICAgfAotLy8g
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyAgIHdhaXRzIGZvciBuMSAgICAgICAgICAgICAgICAgICB8IFNDT1BFRF9U
UkFDRSgiVHJhY2UgQiIpOwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBn
ZW5lcmF0ZXMgZmFpbHVyZSAjMQotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCBub3RpZmllcyBuMQotLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgIFNDT1BFRF9UUkFDRSgiVHJhY2UgQSIp
OyAgICAgICB8IHdhaXRzIGZvciBuMgotLy8gICBnZW5lcmF0ZXMgZmFpbHVyZSAjMiAgICAgICAg
ICAgfAotLy8gICBub3RpZmllcyBuMiAgICAgICAgICAgICAgICAgICAgfAotLy8gICAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyAgIHdhaXRzIGZvciBuMyAgICAgICAgICAgICAgICAgICB8IGdlbmVyYXRlcyBmYWlsdXJl
ICMzCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRyYWNlIEIgZGllcwot
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnZW5lcmF0ZXMgZmFpbHVyZSAj
NAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBub3RpZmllcyBuMwotLy8g
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyAgIGdlbmVyYXRlcyBmYWlsdXJlICM1ICAgICAgICAgICB8IGZpbmlzaGVz
Ci0vLyAgIHRyYWNlIEEgZGllcyAgICAgICAgICAgICAgICAgICB8Ci0vLyAgIGdlbmVyYXRlcyBm
YWlsdXJlICM2ICAgICAgICAgICB8Ci0vLyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vICAgd2FpdHMgZm9yIHRocmVh
ZCBCIHRvIGZpbmlzaCAgIHwKLQotc3RydWN0IENoZWNrUG9pbnRzIHsKLSAgTm90aWZpY2F0aW9u
IG4xOwotICBOb3RpZmljYXRpb24gbjI7Ci0gIE5vdGlmaWNhdGlvbiBuMzsKLX07Ci0KLXN0YXRp
YyB2b2lkIFRocmVhZFdpdGhTY29wZWRUcmFjZShDaGVja1BvaW50cyogY2hlY2tfcG9pbnRzKSB7
Ci0gIHsKLSAgICBTQ09QRURfVFJBQ0UoIlRyYWNlIEIiKTsKLSAgICBBRERfRkFJTFVSRSgpCi0g
ICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxIChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBC
IGFsaXZlKS4iOwotICAgIGNoZWNrX3BvaW50cy0+bjEuTm90aWZ5KCk7Ci0gICAgY2hlY2tfcG9p
bnRzLT5uMi5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7Ci0KLSAgICBBRERfRkFJTFVSRSgpCi0gICAg
ICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzIChpbiB0aHJlYWQgQiwgdHJhY2UgQSAmIEIgYm90
aCBhbGl2ZSkuIjsKLSAgfSAgLy8gVHJhY2UgQiBkaWVzIGhlcmUuCi0gIEFERF9GQUlMVVJFKCkK
LSAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM0IChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBB
IGFsaXZlKS4iOwotICBjaGVja19wb2ludHMtPm4zLk5vdGlmeSgpOwotfQotCi1URVNUKFNDT1BF
RF9UUkFDRVRlc3QsIFdvcmtzQ29uY3VycmVudGx5KSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyA2
IGZhaWx1cmVzKVxuIik7Ci0KLSAgQ2hlY2tQb2ludHMgY2hlY2tfcG9pbnRzOwotICBUaHJlYWRX
aXRoUGFyYW08Q2hlY2tQb2ludHMqPiB0aHJlYWQoJlRocmVhZFdpdGhTY29wZWRUcmFjZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaGVja19wb2ludHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgY2hlY2tfcG9pbnRz
Lm4xLldhaXRGb3JOb3RpZmljYXRpb24oKTsKLQotICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJUcmFj
ZSBBIik7Ci0gICAgQUREX0ZBSUxVUkUoKQotICAgICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAj
MiAoaW4gdGhyZWFkIEEsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLiI7Ci0gICAgY2hlY2tfcG9p
bnRzLm4yLk5vdGlmeSgpOwotICAgIGNoZWNrX3BvaW50cy5uMy5XYWl0Rm9yTm90aWZpY2F0aW9u
KCk7Ci0KLSAgICBBRERfRkFJTFVSRSgpCi0gICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM1
IChpbiB0aHJlYWQgQSwgb25seSB0cmFjZSBBIGFsaXZlKS4iOwotICB9ICAvLyBUcmFjZSBBIGRp
ZXMgaGVyZS4KLSAgQUREX0ZBSUxVUkUoKQotICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzYg
KGluIHRocmVhZCBBLCBubyB0cmFjZSBhbGl2ZSkuIjsKLSAgdGhyZWFkLkpvaW4oKTsKLX0KLSNl
bmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFEU0FGRQotCi1URVNUKERpc2FibGVkVGVzdHNXYXJuaW5n
VGVzdCwKLSAgICAgRElTQUJMRURfQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnU3VwcHJlc3Nlc1dh
cm5pbmcpIHsKLSAgLy8gVGhpcyB0ZXN0IGJvZHkgaXMgaW50ZW50aW9uYWxseSBlbXB0eS4gIEl0
cyBzb2xlIHB1cnBvc2UgaXMgZm9yCi0gIC8vIHZlcmlmeWluZyB0aGF0IHRoZSAtLWd0ZXN0X2Fs
c29fcnVuX2Rpc2FibGVkX3Rlc3RzIGZsYWcKLSAgLy8gc3VwcHJlc3NlcyB0aGUgIllPVSBIQVZF
IDEyIERJU0FCTEVEIFRFU1RTIiB3YXJuaW5nIGF0IHRoZSBlbmQgb2YKLSAgLy8gdGhlIHRlc3Qg
b3V0cHV0LgotfQotCi0vLyBUZXN0cyB1c2luZyBhc3NlcnRpb25zIG91dHNpZGUgb2YgVEVTVCBh
bmQgVEVTVF9GLgotLy8KLS8vIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyB0d28gZmFpbHVyZXMgaW50
ZW50aW9uYWxseS4KLXZvaWQgQWRIb2NUZXN0KCkgewotICBwcmludGYoIlRoZSBub24tdGVzdCBw
YXJ0IG9mIHRoZSBjb2RlIGlzIGV4cGVjdGVkIHRvIGhhdmUgMiBmYWlsdXJlcy5cblxuIik7Ci0g
IEVYUEVDVF9UUlVFKGZhbHNlKTsKLSAgRVhQRUNUX0VRKDIsIDMpOwotfQotCi0vLyBSdW5zIGFs
bCBURVNUcywgYWxsIFRFU1RfRnMsIGFuZCB0aGUgYWQgaG9jIHRlc3QuCi1pbnQgUnVuQWxsVGVz
dHMoKSB7Ci0gIEFkSG9jVGVzdCgpOwotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQotCi0v
LyBUZXN0cyBub24tZmF0YWwgZmFpbHVyZXMgaW4gdGhlIGZpeHR1cmUgY29uc3RydWN0b3IuCi1j
bGFzcyBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25z
dHJ1Y3RvclRlc3QoKSB7Ci0gICAgcHJpbnRmKCIoZXhwZWN0aW5nIDUgZmFpbHVyZXMpXG4iKTsK
LSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBm
aXh0dXJlIGMndG9yLiI7Ci0gIH0KLQotICB+Tm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3Ry
dWN0b3JUZXN0KCkgewotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzUs
IGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBTZXRV
cCgpIHsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBTZXRV
cCgpLiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgQUREX0ZBSUxV
UkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gVGVhckRvd24uIjsKLSAgfQotfTsKLQot
VEVTVF9GKE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCwgRmFpbHVyZUlu
Q29uc3RydWN0b3IpIHsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMywg
aW4gdGhlIHRlc3QgYm9keS4iOwotfQotCi0vLyBUZXN0cyBmYXRhbCBmYWlsdXJlcyBpbiB0aGUg
Zml4dHVyZSBjb25zdHJ1Y3Rvci4KLWNsYXNzIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVj
dG9yVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIEZhdGFsRmFp
bHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCgpIHsKLSAgICBwcmludGYoIihleHBlY3Rpbmcg
MiBmYWlsdXJlcylcbiIpOwotICAgIEluaXQoKTsKLSAgfQotCi0gIH5GYXRhbEZhaWx1cmVJbkZp
eHR1cmVDb25zdHJ1Y3RvclRlc3QoKSB7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQg
ZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4iOwotICB9Ci0KLSAgdmlydHVh
bCB2b2lkIFNldFVwKCkgewotICAgIEFERF9GQUlMVVJFKCkgPDwgIlVORVhQRUNURUQgZmFpbHVy
ZSBpbiBTZXRVcCgpLiAgIgotICAgICAgICAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBn
ZXQgaGVyZSwgYXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciAiCi0gICAgICAgICAgICAgICAgICA8
PCAiaGFkIGEgZmF0YWwgZmFpbHVyZS4iOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3du
KCkgewotICAgIEFERF9GQUlMVVJFKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiBUZWFyRG93
bigpLiAgIgotICAgICAgICAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwg
YXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciAiCi0gICAgICAgICAgICAgICAgICA8PCAiaGFkIGEg
ZmF0YWwgZmFpbHVyZS4iOwotICB9Ci0gcHJpdmF0ZToKLSAgdm9pZCBJbml0KCkgewotICAgIEZB
SUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4i
OwotICB9Ci19OwotCi1URVNUX0YoRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0
LCBGYWlsdXJlSW5Db25zdHJ1Y3RvcikgewotICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVDVEVE
IGZhaWx1cmUgaW4gdGhlIHRlc3QgYm9keS4gICIKLSAgICAgICAgICAgICAgICA8PCAiV2Ugc2hv
dWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yICIKLSAgICAgICAg
ICAgICAgICA8PCAiaGFkIGEgZmF0YWwgZmFpbHVyZS4iOwotfQotCi0vLyBUZXN0cyBub24tZmF0
YWwgZmFpbHVyZXMgaW4gU2V0VXAoKS4KLWNsYXNzIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB+Tm9uRmF0
YWxGYWlsdXJlSW5TZXRVcFRlc3QoKSB7Ci0gICAgRGVpbml0KCk7Ci0gIH0KLQotICB2aXJ0dWFs
IHZvaWQgU2V0VXAoKSB7Ci0gICAgcHJpbnRmKCIoZXhwZWN0aW5nIDQgZmFpbHVyZXMpXG4iKTsK
LSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLiI7
Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBl
Y3RlZCBmYWlsdXJlICMzLCBpbiBUZWFyRG93bigpLiI7Ci0gIH0KLSBwcml2YXRlOgotICB2b2lk
IERlaW5pdCgpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRoZSB0
ZXN0IGZpeHR1cmUgZCd0b3IuIjsKLSAgfQotfTsKLQotVEVTVF9GKE5vbkZhdGFsRmFpbHVyZUlu
U2V0VXBUZXN0LCBGYWlsdXJlSW5TZXRVcCkgewotICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1
cmUgIzIsIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLiI7Ci19Ci0KLS8vIFRlc3RzIGZhdGFsIGZhaWx1
cmVzIGluIFNldFVwKCkuCi1jbGFzcyBGYXRhbEZhaWx1cmVJblNldFVwVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgfkZhdGFsRmFpbHVyZUluU2V0
VXBUZXN0KCkgewotICAgIERlaW5pdCgpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkg
ewotICAgIHByaW50ZigiKGV4cGVjdGluZyAzIGZhaWx1cmVzKVxuIik7Ci0gICAgRkFJTCgpIDw8
ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZv
aWQgVGVhckRvd24oKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBU
ZWFyRG93bigpLiI7Ci0gIH0KLSBwcml2YXRlOgotICB2b2lkIERlaW5pdCgpIHsKLSAgICBGQUlM
KCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsK
LSAgfQotfTsKLQotVEVTVF9GKEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LCBGYWlsdXJlSW5TZXRV
cCkgewotICBGQUlMKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBmdW5jdGlv
bi4gICIKLSAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIFNldFVwKCkg
ZmFpbGVkLiI7Ci19Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0KLS8vIFRoaXMgZ3JvdXAgb2Yg
dGVzdHMgdmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCBoYW5kbGVzIFNFSCBhbmQgQysrCi0vLyBl
eGNlcHRpb25zIGNvcnJlY3RseS4KLQotLy8gQSBmdW5jdGlvbiB0aGF0IHRocm93cyBhbiBTRUgg
ZXhjZXB0aW9uLgotc3RhdGljIHZvaWQgVGhyb3dTRUgoKSB7Ci0gIGludCogcCA9IE5VTEw7Ci0g
ICpwID0gMDsgIC8vIFJhaXNlcyBhbiBhY2Nlc3MgdmlvbGF0aW9uLgotfQotCi0vLyBUZXN0cyBl
eGNlcHRpb25zIHRocm93biBpbiB0aGUgdGVzdCBmaXh0dXJlIGNvbnN0cnVjdG9yLgotY2xhc3Mg
RXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJv
dGVjdGVkOgotICBFeGNlcHRpb25JbkZpeHR1cmVDdG9yVGVzdCgpIHsKLSAgICBwcmludGYoIihl
eHBlY3RpbmcgYSBmYWlsdXJlIG9uIHRocm93biBleGNlcHRpb24gIgotICAgICAgICAgICAiaW4g
dGhlIHRlc3QgZml4dHVyZSdzIGNvbnN0cnVjdG9yKVxuIik7Ci0KLSAgICBUaHJvd1NFSCgpOwot
ICB9Ci0KLSAgdmlydHVhbCB+RXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3QoKSB7Ci0gICAgRGVp
bml0KCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgRkFJTCgpIDw8ICJV
TkVYUEVDVEVEIGZhaWx1cmUgaW4gU2V0VXAoKS4gICIKLSAgICAgICAgICAgPDwgIldlIHNob3Vs
ZCBuZXZlciBnZXQgaGVyZSwgYXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciB0aHJldy4iOwotICB9
Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIEZBSUwoKSA8PCAiVU5FWFBFQ1RF
RCBmYWlsdXJlIGluIFRlYXJEb3duKCkuICAiCi0gICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2
ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgdGhyZXcuIjsKLSAgfQotIHBy
aXZhdGU6Ci0gIHZvaWQgRGVpbml0KCkgewotICAgIEZBSUwoKSA8PCAiVU5FWFBFQ1RFRCBmYWls
dXJlIGluIHRoZSBkJ3Rvci4gICIKLSAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQg
aGVyZSwgYXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciB0aHJldy4iOwotICB9Ci19OwotCi1URVNU
X0YoRXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3QsIEV4Y2VwdGlvbkluRml4dHVyZUN0b3IpIHsK
LSAgRkFJTCgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gdGhlIHRlc3QgZnVuY3Rpb24uICAi
Ci0gICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0
dXJlIGMndG9yIHRocmV3LiI7Ci19Ci0KLS8vIFRlc3RzIGV4Y2VwdGlvbnMgdGhyb3duIGluIFNl
dFVwKCkuCi1jbGFzcyBFeGNlcHRpb25JblNldFVwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgfkV4Y2VwdGlvbkluU2V0VXBUZXN0KCkgewotICAg
IERlaW5pdCgpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIHByaW50Zigi
KGV4cGVjdGluZyAzIGZhaWx1cmVzKVxuIik7Ci0KLSAgICBUaHJvd1NFSCgpOwotICB9Ci0KLSAg
dmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVy
ZSAjMiwgaW4gVGVhckRvd24oKS4iOwotICB9Ci0gcHJpdmF0ZToKLSAgdm9pZCBEZWluaXQoKSB7
Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJl
IGQndG9yLiI7Ci0gIH0KLX07Ci0KLVRFU1RfRihFeGNlcHRpb25JblNldFVwVGVzdCwgRXhjZXB0
aW9uSW5TZXRVcCkgewotICBGQUlMKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgdGVz
dCBmdW5jdGlvbi4gICIKLSAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFz
IFNldFVwKCkgdGhyZXcuIjsKLX0KLQotLy8gVGVzdHMgdGhhdCBUZWFyRG93bigpIGFuZCB0aGUg
dGVzdCBmaXh0dXJlIGQndG9yIGFyZSBhbHdheXMgY2FsbGVkLAotLy8gZXZlbiB3aGVuIHRoZSB0
ZXN0IGZ1bmN0aW9uIHRocm93cyBhbiBleGNlcHRpb24uCi1jbGFzcyBFeGNlcHRpb25JblRlc3RG
dW5jdGlvblRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0
dWFsIH5FeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QoKSB7Ci0gICAgRGVpbml0KCk7Ci0gIH0K
LQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBm
YWlsdXJlICMyLCBpbiBUZWFyRG93bigpLiI7Ci0gIH0KLSBwcml2YXRlOgotICB2b2lkIERlaW5p
dCgpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZp
eHR1cmUgZCd0b3IuIjsKLSAgfQotfTsKLQotLy8gVGVzdHMgdGhhdCB0aGUgdGVzdCBmaXh0dXJl
IGQndG9yIGlzIGFsd2F5cyBjYWxsZWQsIGV2ZW4gd2hlbiB0aGUKLS8vIHRlc3QgZnVuY3Rpb24g
dGhyb3dzIGFuIFNFSCBleGNlcHRpb24uCi1URVNUX0YoRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25U
ZXN0LCBTRUgpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDMgZmFpbHVyZXMpXG4iKTsKLQotICBU
aHJvd1NFSCgpOwotfQotCi0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gVGVzdHMgdGhh
dCB0aGUgdGVzdCBmaXh0dXJlIGQndG9yIGlzIGFsd2F5cyBjYWxsZWQsIGV2ZW4gd2hlbiB0aGUK
LS8vIHRlc3QgZnVuY3Rpb24gdGhyb3dzIGEgQysrIGV4Y2VwdGlvbi4gIFdlIGRvIHRoaXMgb25s
eSB3aGVuCi0vLyBHVEVTVF9IQVNfRVhDRVBUSU9OUyBpcyBub24temVybywgaS5lLiBDKysgZXhj
ZXB0aW9ucyBhcmUgZW5hYmxlZC4KLVRFU1RfRihFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3Qs
IENwcEV4Y2VwdGlvbikgewotICB0aHJvdyAxOwotfQotCi0vLyBUZXN0cyBleGNlcHRpb25zIHRo
cm93biBpbiBUZWFyRG93bigpLgotY2xhc3MgRXhjZXB0aW9uSW5UZWFyRG93blRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIH5FeGNlcHRpb25JblRl
YXJEb3duVGVzdCgpIHsKLSAgICBEZWluaXQoKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpIHsKLSAgICB0aHJvdyAxOwotICB9Ci0gcHJpdmF0ZToKLSAgdm9pZCBEZWluaXQoKSB7
Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJl
IGQndG9yLiI7Ci0gIH0KLX07Ci0KLVRFU1RfRihFeGNlcHRpb25JblRlYXJEb3duVGVzdCwgRXhj
ZXB0aW9uSW5UZWFyRG93bikgewotICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIp
OwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCi0KLSNlbmRpZiAgLy8gR1RF
U1RfT1NfV0lORE9XUwotCi0jaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQotCi0vLyBBIHVuYXJ5IGZ1
bmN0aW9uIHRoYXQgbWF5IGRpZS4KLXZvaWQgRGllSWYoYm9vbCBzaG91bGRfZGllKSB7Ci0gIEdU
RVNUX0NIRUNLXyghc2hvdWxkX2RpZSkgPDwgIiAtIGRlYXRoIGluc2lkZSBEaWVJZigpLiI7Ci19
Ci0KLS8vIFRlc3RzIHJ1bm5pbmcgZGVhdGggdGVzdHMgaW4gYSBtdWx0aS10aHJlYWRlZCBjb250
ZXh0LgotCi0vLyBVc2VkIGZvciBjb29yZGluYXRpb24gYmV0d2VlbiB0aGUgbWFpbiBhbmQgdGhl
IHNwYXduIHRocmVhZC4KLXN0cnVjdCBTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMgewotICBTcGF3
blRocmVhZE5vdGlmaWNhdGlvbnMoKSB7fQotCi0gIE5vdGlmaWNhdGlvbiBzcGF3bl90aHJlYWRf
c3RhcnRlZDsKLSAgTm90aWZpY2F0aW9uIHNwYXduX3RocmVhZF9va190b190ZXJtaW5hdGU7Ci0K
LSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNwYXduVGhyZWFk
Tm90aWZpY2F0aW9ucyk7Ci19OwotCi0vLyBUaGUgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgaW4g
dGhlIHRocmVhZCBzcGF3biBieSB0aGUKLS8vIE11bHRpcGxlVGhyZWFkcyB0ZXN0IChiZWxvdyku
Ci1zdGF0aWMgdm9pZCBUaHJlYWRSb3V0aW5lKFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyogbm90
aWZpY2F0aW9ucykgewotICAvLyBTaWduYWxzIHRoZSBtYWluIHRocmVhZCB0aGF0IHRoaXMgdGhy
ZWFkIGhhcyBzdGFydGVkLgotICBub3RpZmljYXRpb25zLT5zcGF3bl90aHJlYWRfc3RhcnRlZC5O
b3RpZnkoKTsKLQotICAvLyBXYWl0cyBmb3IgcGVybWlzc2lvbiB0byBmaW5pc2ggZnJvbSB0aGUg
bWFpbiB0aHJlYWQuCi0gIG5vdGlmaWNhdGlvbnMtPnNwYXduX3RocmVhZF9va190b190ZXJtaW5h
dGUuV2FpdEZvck5vdGlmaWNhdGlvbigpOwotfQotCi0vLyBUaGlzIGlzIGEgZGVhdGgtdGVzdCB0
ZXN0LCBidXQgaXQncyBub3QgbmFtZWQgd2l0aCBhIERlYXRoVGVzdAotLy8gc3VmZml4LiAgSXQg
c3RhcnRzIHRocmVhZHMgd2hpY2ggbWlnaHQgaW50ZXJmZXJlIHdpdGggbGF0ZXIKLS8vIGRlYXRo
IHRlc3RzLCBzbyBpdCBtdXN0IHJ1biBhZnRlciBhbGwgb3RoZXIgZGVhdGggdGVzdHMuCi1jbGFz
cyBEZWF0aFRlc3RBbmRNdWx0aVRocmVhZHNUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewot
IHByb3RlY3RlZDoKLSAgLy8gU3RhcnRzIGEgdGhyZWFkIGFuZCB3YWl0cyBmb3IgaXQgdG8gYmVn
aW4uCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICB0aHJlYWRfLnJlc2V0KG5ldyBUaHJl
YWRXaXRoUGFyYW08U3Bhd25UaHJlYWROb3RpZmljYXRpb25zKj4oCi0gICAgICAgICZUaHJlYWRS
b3V0aW5lLCAmbm90aWZpY2F0aW9uc18sIE5VTEwpKTsKLSAgICBub3RpZmljYXRpb25zXy5zcGF3
bl90aHJlYWRfc3RhcnRlZC5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7Ci0gIH0KLSAgLy8gVGVsbHMg
dGhlIHRocmVhZCB0byBmaW5pc2gsIGFuZCByZWFwcyBpdC4KLSAgLy8gRGVwZW5kaW5nIG9uIHRo
ZSB2ZXJzaW9uIG9mIHRoZSB0aHJlYWQgbGlicmFyeSBpbiB1c2UsCi0gIC8vIGEgbWFuYWdlciB0
aHJlYWQgbWlnaHQgc3RpbGwgYmUgbGVmdCBydW5uaW5nIHRoYXQgd2lsbCBpbnRlcmZlcmUKLSAg
Ly8gd2l0aCBsYXRlciBkZWF0aCB0ZXN0cy4gIFRoaXMgaXMgdW5mb3J0dW5hdGUsIGJ1dCB0aGlz
IGNsYXNzCi0gIC8vIGNsZWFucyB1cCBhZnRlciBpdHNlbGYgYXMgYmVzdCBpdCBjYW4uCi0gIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBub3RpZmljYXRpb25zXy5zcGF3bl90aHJlYWRf
b2tfdG9fdGVybWluYXRlLk5vdGlmeSgpOwotICB9Ci0KLSBwcml2YXRlOgotICBTcGF3blRocmVh
ZE5vdGlmaWNhdGlvbnMgbm90aWZpY2F0aW9uc187Ci0gIHNjb3BlZF9wdHI8VGhyZWFkV2l0aFBh
cmFtPFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyo+ID4gdGhyZWFkXzsKLX07Ci0KLSNlbmRpZiAg
Ly8gR1RFU1RfSVNfVEhSRUFEU0FGRQotCi0vLyBUaGUgTWl4ZWRVcFRlc3RDYXNlVGVzdCB0ZXN0
IGNhc2UgdmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCB3aWxsIGZhaWwgYQotLy8gdGVzdCBpZiBp
dCB1c2VzIGEgZGlmZmVyZW50IGZpeHR1cmUgY2xhc3MgdGhhbiB3aGF0IG90aGVyIHRlc3RzIGlu
Ci0vLyB0aGUgc2FtZSB0ZXN0IGNhc2UgdXNlLiAgSXQgZGVsaWJlcmF0ZWx5IGNvbnRhaW5zIHR3
byBmaXh0dXJlCi0vLyBjbGFzc2VzIHdpdGggdGhlIHNhbWUgbmFtZSBidXQgZGVmaW5lZCBpbiBk
aWZmZXJlbnQgbmFtZXNwYWNlcy4KLQotLy8gVGhlIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVz
dE5hbWVUZXN0IHRlc3QgY2FzZSB2ZXJpZmllcyB0aGF0Ci0vLyB3aGVuIHRoZSB1c2VyIGRlZmlu
ZXMgdHdvIHRlc3RzIHdpdGggdGhlIHNhbWUgdGVzdCBjYXNlIG5hbWUgQU5ECi0vLyBzYW1lIHRl
c3QgbmFtZSAoYnV0IGluIGRpZmZlcmVudCBuYW1lc3BhY2VzKSwgdGhlIHNlY29uZCB0ZXN0IHdp
bGwKLS8vIGZhaWwuCi0KLW5hbWVzcGFjZSBmb28gewotCi1jbGFzcyBNaXhlZFVwVGVzdENhc2VU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVEVTVF9GKE1peGVkVXBUZXN0Q2Fz
ZVRlc3QsIEZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28pIHt9Ci1URVNUX0YoTWl4ZWRVcFRlc3RD
YXNlVGVzdCwgU2Vjb25kVGVzdEZyb21OYW1lc3BhY2VGb28pIHt9Ci0KLWNsYXNzIE1peGVkVXBU
ZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsK
LQotVEVTVF9GKE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAotICAgICAgIFRo
ZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsKSB7fQotCi19ICAvLyBuYW1lc3BhY2Ug
Zm9vCi0KLW5hbWVzcGFjZSBiYXIgewotCi1jbGFzcyBNaXhlZFVwVGVzdENhc2VUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotLy8gVGhlIGZvbGxvd2luZyB0d28gdGVzdHMgYXJl
IGV4cGVjdGVkIHRvIGZhaWwuICBXZSByZWx5IG9uIHRoZQotLy8gZ29sZGVuIGZpbGUgdG8gY2hl
Y2sgdGhhdCBHb29nbGUgVGVzdCBnZW5lcmF0ZXMgdGhlIHJpZ2h0IGVycm9yIG1lc3NhZ2UuCi1U
RVNUX0YoTWl4ZWRVcFRlc3RDYXNlVGVzdCwgVGhpc1Nob3VsZEZhaWwpIHt9Ci1URVNUX0YoTWl4
ZWRVcFRlc3RDYXNlVGVzdCwgVGhpc1Nob3VsZEZhaWxUb28pIHt9Ci0KLWNsYXNzIE1peGVkVXBU
ZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsK
LQotLy8gRXhwZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIGNo
ZWNrIHRoYXQgR29vZ2xlIFRlc3QKLS8vIGdlbmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVzc2Fn
ZS4KLVRFU1RfRihNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdCwKLSAgICAgICBU
aGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbCkge30KLQotfSAgLy8gbmFtZXNwYWNl
IGJhcgotCi0vLyBUaGUgZm9sbG93aW5nIHR3byB0ZXN0IGNhc2VzIHZlcmlmeSB0aGF0IEdvb2ds
ZSBUZXN0IGNhdGNoZXMgdGhlIHVzZXIKLS8vIGVycm9yIG9mIG1peGluZyBURVNUIGFuZCBURVNU
X0YgaW4gdGhlIHNhbWUgdGVzdCBjYXNlLiAgVGhlIGZpcnN0Ci0vLyB0ZXN0IGNhc2UgY2hlY2tz
IHRoZSBzY2VuYXJpbyB3aGVyZSBURVNUX0YgYXBwZWFycyBiZWZvcmUgVEVTVCwgYW5kCi0vLyB0
aGUgc2Vjb25kIG9uZSBjaGVja3Mgd2hlcmUgVEVTVCBhcHBlYXJzIGJlZm9yZSBURVNUX0YuCi0K
LWNsYXNzIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKLX07Ci0KLVRFU1RfRihURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0
X2Nhc2UsIERlZmluZWRVc2luZ1RFU1RfRikge30KLQotLy8gRXhwZWN0ZWQgdG8gZmFpbC4gIFdl
IHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIGNoZWNrIHRoYXQgR29vZ2xlIFRlc3QKLS8vIGdl
bmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KLVRFU1QoVEVTVF9GX2JlZm9yZV9URVNU
X2luX3NhbWVfdGVzdF9jYXNlLCBEZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxkRmFpbCkge30KLQot
Y2xhc3MgVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlIDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgewotfTsKLQotVEVTVChURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nh
c2UsIERlZmluZWRVc2luZ1RFU1QpIHt9Ci0KLS8vIEV4cGVjdGVkIHRvIGZhaWwuICBXZSByZWx5
IG9uIHRoZSBnb2xkZW4gZmlsZSB0byBjaGVjayB0aGF0IEdvb2dsZSBUZXN0Ci0vLyBnZW5lcmF0
ZXMgdGhlIHJpZ2h0IGVycm9yIG1lc3NhZ2UuCi1URVNUX0YoVEVTVF9iZWZvcmVfVEVTVF9GX2lu
X3NhbWVfdGVzdF9jYXNlLCBEZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsKSB7Ci19Ci0K
LS8vIFVzZWQgZm9yIHRlc3RpbmcgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBhbmQgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoKS4KLWludCBnbG9iYWxfaW50ZWdlciA9IDA7Ci0KLS8vIFRlc3RzIHRo
YXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBjYW4gcmVmZXJlbmNlIGdsb2JhbCB2YXJpYWJs
ZXMuCi1URVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIENhblJlZmVyZW5jZUdsb2JhbFZh
cmlhYmxlcykgewotICBnbG9iYWxfaW50ZWdlciA9IDA7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKHsKLSAgICBFWFBFQ1RfRVEoMSwgZ2xvYmFsX2ludGVnZXIpIDw8ICJFeHBlY3RlZCBub24t
ZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBjYW4gcmVmZXJlbmNl
IGxvY2FsIHZhcmlhYmxlcwotLy8gKHN0YXRpYyBvciBub3QpLgotVEVTVChFeHBlY3ROb25mYXRh
bEZhaWx1cmVUZXN0LCBDYW5SZWZlcmVuY2VMb2NhbFZhcmlhYmxlcykgewotICBpbnQgbSA9IDA7
Ci0gIHN0YXRpYyBpbnQgbjsKLSAgbiA9IDE7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsK
LSAgICBFWFBFQ1RfRVEobSwgbikgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7Ci0g
IH0sICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIHN1Y2NlZWRzIHdoZW4gdGhlcmUgaXMgZXhhY3RseQot
Ly8gb25lIG5vbi1mYXRhbCBmYWlsdXJlIGFuZCBubyBmYXRhbCBmYWlsdXJlLgotVEVTVChFeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LCBTdWNjZWVkc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWls
dXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBBRERfRkFJTFVSRSgpIDw8
ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiRXhwZWN0ZWQgbm9uLWZhdGFs
IGZhaWx1cmUuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
KSBmYWlscyB3aGVuIHRoZXJlIGlzIG5vCi0vLyBub24tZmF0YWwgZmFpbHVyZS4KLVRFU1QoRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJl
KSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoewotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZXJlIGFyZSB0d28KLS8vIG5vbi1mYXRhbCBmYWls
dXJlcy4KLVRFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVBcmVU
d29Ob25mYXRhbEZhaWx1cmVzKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4i
KTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4
cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDEuIjsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBl
Y3RlZCBub24tZmF0YWwgZmFpbHVyZSAyLiI7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgaXMgb25lIGZhdGFs
Ci0vLyBmYWlsdXJlLgotVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5U
aGVyZUlzT25lRmF0YWxGYWlsdXJlKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUp
XG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIEZBSUwoKSA8PCAiRXhwZWN0
ZWQgZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZSBzdGF0ZW1lbnQgYmVpbmcKLS8vIHRl
c3RlZCByZXR1cm5zLgotVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5T
dGF0ZW1lbnRSZXR1cm5zKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsK
LSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIHJldHVybjsKLSAgfSwgIiIpOwotfQot
Ci0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWluZwotLy8gdGVzdGVkIHRo
cm93cy4KLVRFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuU3RhdGVtZW50
VGhyb3dzKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgdHJ5IHsK
LSAgICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAgICB0aHJvdyAwOwotICAgIH0sICIi
KTsKLSAgfSBjYXRjaChpbnQpIHsgIC8vIE5PTElOVAotICB9Ci19Ci0KLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgp
IGNhbiByZWZlcmVuY2UgZ2xvYmFsIHZhcmlhYmxlcy4KLVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdCwgQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzKSB7Ci0gIGdsb2JhbF9pbnRlZ2VyID0g
MDsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICAgIEFTU0VSVF9FUSgxLCBnbG9iYWxfaW50
ZWdlcikgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKLSAgfSwgIkV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBj
YW4gcmVmZXJlbmNlIGxvY2FsIHN0YXRpYwotLy8gdmFyaWFibGVzLgotVEVTVChFeHBlY3RGYXRh
bEZhaWx1cmVUZXN0LCBDYW5SZWZlcmVuY2VMb2NhbFN0YXRpY1ZhcmlhYmxlcykgewotICBzdGF0
aWMgaW50IG47Ci0gIG4gPSAxOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0gICAgQVNTRVJU
X0VRKDAsIG4pIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7Ci0gIH0sICJFeHBlY3RlZCBm
YXRhbCBmYWlsdXJlLiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJF
KCkgc3VjY2VlZHMgd2hlbiB0aGVyZSBpcyBleGFjdGx5Ci0vLyBvbmUgZmF0YWwgZmFpbHVyZSBh
bmQgbm8gbm9uLWZhdGFsIGZhaWx1cmUuCi1URVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIFN1
Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUpIHsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiRXhw
ZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxf
RkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgaXMgbm8gZmF0YWwKLS8vIGZhaWx1cmUuCi1URVNU
KEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZSkg
ewotICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKHsKLSAgfSwgIiIpOwotfQotCi0vLyBBIGhlbHBlciBmb3IgZ2VuZXJhdGluZyBhIGZh
dGFsIGZhaWx1cmUuCi12b2lkIEZhdGFsRmFpbHVyZSgpIHsKLSAgRkFJTCgpIDw8ICJFeHBlY3Rl
ZCBmYXRhbCBmYWlsdXJlLiI7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoKSBmYWlscyB3aGVuIHRoZXJlIGFyZSB0d28KLS8vIGZhdGFsIGZhaWx1cmVzLgotVEVTVChF
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMp
IHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRSh7Ci0gICAgRmF0YWxGYWlsdXJlKCk7Ci0gICAgRmF0YWxGYWlsdXJlKCk7Ci0gIH0s
ICIiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdo
ZW4gdGhlcmUgaXMgb25lIG5vbi1mYXRhbAotLy8gZmFpbHVyZS4KLVRFU1QoRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZSkgewotICBwcmlu
dGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsK
LSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOwotICB9
LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3
aGVuIHRoZSBzdGF0ZW1lbnQgYmVpbmcKLS8vIHRlc3RlZCByZXR1cm5zLgotVEVTVChFeHBlY3RG
YXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zKSB7Ci0gIHByaW50Zigi
KGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICAg
IHJldHVybjsKLSAgfSwgIiIpOwotfQotCi0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVu
dCBiZWluZwotLy8gdGVzdGVkIHRocm93cy4KLVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwg
RmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1
cmUpXG4iKTsKLSAgdHJ5IHsKLSAgICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0gICAgICB0aHJv
dyAwOwotICAgIH0sICIiKTsKLSAgfSBjYXRjaChpbnQpIHsgIC8vIE5PTElOVAotICB9Ci19Ci0K
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gVGhpcyAjaWZkZWYgYmxvY2sg
dGVzdHMgdGhlIG91dHB1dCBvZiB0eXBlZCB0ZXN0cy4KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVT
VAotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFR5cGVkVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRShUeXBlZFRlc3QsIHRlc3Rpbmc6OlR5
cGVzPGludD4pOwotCi1UWVBFRF9URVNUKFR5cGVkVGVzdCwgU3VjY2VzcykgewotICBFWFBFQ1Rf
RVEoMCwgVHlwZVBhcmFtKCkpOwotfQotCi1UWVBFRF9URVNUKFR5cGVkVGVzdCwgRmFpbHVyZSkg
ewotICBFWFBFQ1RfRVEoMSwgVHlwZVBhcmFtKCkpIDw8ICJFeHBlY3RlZCBmYWlsdXJlIjsKLX0K
LQotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAotCi0vLyBUaGlzICNpZmRlZiBibG9j
ayB0ZXN0cyB0aGUgb3V0cHV0IG9mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KLSNpZiBHVEVT
VF9IQVNfVFlQRURfVEVTVF9QCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgVHlwZWRU
ZXN0UCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRV9QKFR5
cGVkVGVzdFApOwotCi1UWVBFRF9URVNUX1AoVHlwZWRUZXN0UCwgU3VjY2VzcykgewotICBFWFBF
Q1RfRVEoMFUsIFR5cGVQYXJhbSgpKTsKLX0KLQotVFlQRURfVEVTVF9QKFR5cGVkVGVzdFAsIEZh
aWx1cmUpIHsKLSAgRVhQRUNUX0VRKDFVLCBUeXBlUGFyYW0oKSkgPDwgIkV4cGVjdGVkIGZhaWx1
cmUiOwotfQotCi1SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChUeXBlZFRlc3RQLCBTdWNjZXNz
LCBGYWlsdXJlKTsKLQotdHlwZWRlZiB0ZXN0aW5nOjpUeXBlczx1bnNpZ25lZCBjaGFyLCB1bnNp
Z25lZCBpbnQ+IFVuc2lnbmVkVHlwZXM7Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChV
bnNpZ25lZCwgVHlwZWRUZXN0UCwgVW5zaWduZWRUeXBlcyk7Ci0KLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1RZUEVEX1RFU1RfUAotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotLy8gV2UgcmVs
eSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gdmVyaWZ5IHRoYXQgdGVzdHMgd2hvc2UgdGVzdCBjYXNl
Ci0vLyBuYW1lIGVuZHMgd2l0aCBEZWF0aFRlc3QgYXJlIHJ1biBmaXJzdC4KLQotVEVTVChBRGVh
dGhUZXN0LCBTaG91bGRSdW5GaXJzdCkgewotfQotCi0jaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QK
LQotLy8gV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gdmVyaWZ5IHRoYXQgdHlwZWQgdGVz
dHMgd2hvc2UgdGVzdAotLy8gY2FzZSBuYW1lIGVuZHMgd2l0aCBEZWF0aFRlc3QgYXJlIHJ1biBm
aXJzdC4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBBVHlwZWREZWF0aFRlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi10eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPGludCwg
ZG91YmxlPiBOdW1lcmljVHlwZXM7Ci1UWVBFRF9URVNUX0NBU0UoQVR5cGVkRGVhdGhUZXN0LCBO
dW1lcmljVHlwZXMpOwotCi1UWVBFRF9URVNUKEFUeXBlZERlYXRoVGVzdCwgU2hvdWxkUnVuRmly
c3QpIHsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAotCi0jaWYgR1RFU1Rf
SEFTX1RZUEVEX1RFU1RfUAotCi0KLS8vIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIHZl
cmlmeSB0aGF0IHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cwotLy8gd2hvc2UgdGVzdCBjYXNlIG5h
bWUgZW5kcyB3aXRoIERlYXRoVGVzdCBhcmUgcnVuIGZpcnN0LgotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLWNsYXNzIEFUeXBlUGFyYW1EZWF0aFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChBVHlwZVBhcmFtRGVhdGhUZXN0KTsKLQotVFlQRURf
VEVTVF9QKEFUeXBlUGFyYW1EZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0KSB7Ci19Ci0KLVJFR0lT
VEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEFUeXBlUGFyYW1EZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0
KTsKLQotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEFUeXBlUGFyYW1EZWF0aFRl
c3QsIE51bWVyaWNUeXBlcyk7Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAot
Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLS8vIFRlc3RzIHZhcmlvdXMgZmFp
bHVyZSBjb25kaXRpb25zIG9mCi0vLyBFWFBFQ1RfeyxOT059RkFUQUxfRkFJTFVSRXssX09OX0FM
TF9USFJFQURTfS4KLWNsYXNzIEV4cGVjdEZhaWx1cmVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewotIHB1YmxpYzogIC8vIE11c3QgYmUgcHVibGljIGFuZCBub3QgcHJvdGVjdGVkIGR1ZSB0
byBhIGJ1ZyBpbiBnKysgMy40LjIuCi0gIGVudW0gRmFpbHVyZU1vZGUgewotICAgIEZBVEFMX0ZB
SUxVUkUsCi0gICAgTk9ORkFUQUxfRkFJTFVSRQotICB9OwotICBzdGF0aWMgdm9pZCBBZGRGYWls
dXJlKEZhaWx1cmVNb2RlIGZhaWx1cmUpIHsKLSAgICBpZiAoZmFpbHVyZSA9PSBGQVRBTF9GQUlM
VVJFKSB7Ci0gICAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKLSAgICB9
IGVsc2UgewotICAgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUuIjsKLSAgICB9Ci0gIH0KLX07Ci0KLVRFU1RfRihFeHBlY3RGYWlsdXJlVGVzdCwgRXhwZWN0
RmF0YWxGYWlsdXJlKSB7Ci0gIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVk
cy4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShTVUNDRUVEKCksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOwotICAvLyBFeHBl
Y3RlZCBmYXRhbCBmYWlsdXJlLCBidXQgZ290IGEgbm9uLWZhdGFsIGZhaWx1cmUuCi0gIHByaW50
ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRk
RmFpbHVyZShOT05GQVRBTF9GQUlMVVJFKSwgIkV4cGVjdGVkIG5vbi1mYXRhbCAiCi0gICAgICAg
ICAgICAgICAgICAgICAgICJmYWlsdXJlLiIpOwotICAvLyBXcm9uZyBtZXNzYWdlLgotICBwcmlu
dGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFk
ZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUgIgotICAg
ICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQuIik7Ci19Ci0KLVRFU1RfRihFeHBlY3RGYWls
dXJlVGVzdCwgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlKSB7Ci0gIC8vIEV4cGVjdGVkIG5vbi1mYXRh
bCBmYWlsdXJlLCBidXQgc3VjY2VlZHMuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUp
XG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoU1VDQ0VFRCgpLCAiRXhwZWN0ZWQgbm9u
LWZhdGFsIGZhaWx1cmUuIik7Ci0gIC8vIEV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLCBidXQg
Z290IGEgZmF0YWwgZmFpbHVyZS4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIp
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlKEZBVEFMX0ZBSUxVUkUpLCAi
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKLSAgLy8gV3JvbmcgbWVzc2FnZS4KLSAgcHJpbnRm
KCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShB
ZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpLCAiU29tZSBvdGhlciBub24tZmF0YWwgIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZmFpbHVyZS4iKTsKLX0KLQotI2lmIEdURVNUX0lTX1RI
UkVBRFNBRkUKLQotY2xhc3MgRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCA6IHB1YmxpYyBF
eHBlY3RGYWlsdXJlVGVzdCB7Ci0gcHJvdGVjdGVkOgotICBzdGF0aWMgdm9pZCBBZGRGYWlsdXJl
SW5PdGhlclRocmVhZChGYWlsdXJlTW9kZSBmYWlsdXJlKSB7Ci0gICAgVGhyZWFkV2l0aFBhcmFt
PEZhaWx1cmVNb2RlPiB0aHJlYWQoJkFkZEZhaWx1cmUsIGZhaWx1cmUsIE5VTEwpOwotICAgIHRo
cmVhZC5Kb2luKCk7Ci0gIH0KLX07Ci0KLVRFU1RfRihFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNU
ZXN0LCBFeHBlY3RGYXRhbEZhaWx1cmUpIHsKLSAgLy8gV2Ugb25seSBpbnRlcmNlcHQgdGhlIGN1
cnJlbnQgdGhyZWFkLgotICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOwotICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlSW5PdGhlclRocmVhZChGQVRBTF9GQUlMVVJF
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Ci19
Ci0KLVRFU1RfRihFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LCBFeHBlY3ROb25GYXRhbEZh
aWx1cmUpIHsKLSAgLy8gV2Ugb25seSBpbnRlcmNlcHQgdGhlIGN1cnJlbnQgdGhyZWFkLgotICBw
cmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShBZGRGYWlsdXJlSW5PdGhlclRocmVhZChOT05GQVRBTF9GQUlMVVJFKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwotfQotCi10
eXBlZGVmIEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QgU2NvcGVkRmFrZVRlc3RQYXJ0UmVz
dWx0UmVwb3J0ZXJUZXN0OwotCi0vLyBUZXN0cyB0aGF0IHRoZSBTY29wZWRGYWtlVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlciBvbmx5IGNhdGNoZXMgZmFpbHVyZXMgZnJvbQotLy8gdGhlIGN1cnJlbnQg
dGhyZWFkIGlmIGl0IGlzIGluc3RhbnRpYXRlZCB3aXRoIElOVEVSQ0VQVF9PTkxZX0NVUlJFTlRf
VEhSRUFELgotVEVTVF9GKFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdCwgSW50
ZXJjZXB0T25seUN1cnJlbnRUaHJlYWQpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVy
ZXMpXG4iKTsKLSAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOwotICB7Ci0gICAgU2NvcGVk
RmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIgcmVwb3J0ZXIoCi0gICAgICAgIFNjb3BlZEZha2VU
ZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpJTlRFUkNFUFRfT05MWV9DVVJSRU5UX1RIUkVBRCwKLSAg
ICAgICAgJnJlc3VsdHMpOwotICAgIEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZBVEFMX0ZBSUxV
UkUpOwotICAgIEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKE5PTkZBVEFMX0ZBSUxVUkUpOwotICB9
Ci0gIC8vIFRoZSB0d28gZmFpbHVyZXMgc2hvdWxkIG5vdCBoYXZlIGJlZW4gaW50ZXJjZXB0ZWQu
Ci0gIEVYUEVDVF9FUSgwLCByZXN1bHRzLnNpemUoKSkgPDwgIlRoaXMgc2hvdWxkbid0IGZhaWwu
IjsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCi0KLVRFU1RfRihFeHBlY3RG
YWlsdXJlVGVzdCwgRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzKSB7Ci0gIC8vIEV4cGVj
dGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEg
ZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhTVUND
RUVEKCksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOwotICAvLyBFeHBlY3RlZCBmYXRhbCBm
YWlsdXJlLCBidXQgZ290IGEgbm9uLWZhdGFsIGZhaWx1cmUuCi0gIHByaW50ZigiKGV4cGVjdGlu
ZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMo
QWRkRmFpbHVyZShOT05GQVRBTF9GQUlMVVJFKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwotICAvLyBXcm9uZyBt
ZXNzYWdlLgotICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9G
QVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb21lIG90aGVyIGZhdGFsIGZh
aWx1cmUgZXhwZWN0ZWQuIik7Ci19Ci0KLVRFU1RfRihFeHBlY3RGYWlsdXJlVGVzdCwgRXhwZWN0
Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzKSB7Ci0gIC8vIEV4cGVjdGVkIG5vbi1mYXRhbCBm
YWlsdXJlLCBidXQgc3VjY2VlZHMuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4i
KTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoU1VDQ0VFRCgpLCAi
RXhwZWN0ZWQgbm9uLWZhdGFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImZhaWx1cmUuIik7Ci0gIC8vIEV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLCBidXQg
Z290IGEgZmF0YWwgZmFpbHVyZS4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIp
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlKEZB
VEFMX0ZBSUxVUkUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKLSAgLy8gV3JvbmcgbWVzc2FnZS4KLSAgcHJpbnRm
KCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9P
Tl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU29tZSBvdGhlciBub24tZmF0YWwgZmFpbHVy
ZS4iKTsKLX0KLQotCi0vLyBUd28gdGVzdCBlbnZpcm9ubWVudHMgZm9yIHRlc3RpbmcgdGVzdGlu
Zzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KCkuCi0KLWNsYXNzIEZvb0Vudmlyb25tZW50IDog
cHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgdm9pZCBT
ZXRVcCgpIHsKLSAgICBwcmludGYoIiVzIiwgIkZvb0Vudmlyb25tZW50OjpTZXRVcCgpIGNhbGxl
ZC5cbiIpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIHByaW50Zigi
JXMiLCAiRm9vRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLlxuIik7Ci0gICAgRkFJTCgp
IDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7Ci0gIH0KLX07Ci0KLWNsYXNzIEJhckVudmly
b25tZW50IDogcHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50IHsKLSBwdWJsaWM6Ci0gIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBwcmludGYoIiVzIiwgIkJhckVudmlyb25tZW50OjpTZXRV
cCgpIGNhbGxlZC5cbiIpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAg
IHByaW50ZigiJXMiLCAiQmFyRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLlxuIik7Ci0g
ICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKLSAgfQot
fTsKLQotR1RFU1RfREVGSU5FX2Jvb2xfKGludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2Fk
X2hvY190ZXN0cywgZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIlRoaXMgZmxhZyBjYXVzZXMg
dGhlIHByb2dyYW0gdG8gc2tpcCB0ZXN0IGVudmlyb25tZW50ICIKLSAgICAgICAgICAgICAgICAg
ICAidGVzdHMgYW5kIGFkIGhvYyB0ZXN0cy4iKTsKLQotLy8gVGhlIG1haW4gZnVuY3Rpb24uCi0v
LwotLy8gVGhlIGlkZWEgaXMgdG8gdXNlIEdvb2dsZSBUZXN0IHRvIHJ1biBhbGwgdGhlIHRlc3Rz
IHdlIGhhdmUgZGVmaW5lZCAoc29tZQotLy8gb2YgdGhlbSBhcmUgaW50ZW5kZWQgdG8gZmFpbCks
IGFuZCB0aGVuIGNvbXBhcmUgdGhlIHRlc3QgcmVzdWx0cwotLy8gd2l0aCB0aGUgImdvbGRlbiIg
ZmlsZS4KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotICB0ZXN0aW5nOjpHVEVT
VF9GTEFHKHByaW50X3RpbWUpID0gZmFsc2U7Ci0KLSAgLy8gV2UganVzdCBydW4gdGhlIHRlc3Rz
LCBrbm93aW5nIHNvbWUgb2YgdGhlbSBhcmUgaW50ZW5kZWQgdG8gZmFpbC4KLSAgLy8gV2Ugd2ls
bCB1c2UgYSBzZXBhcmF0ZSBQeXRob24gc2NyaXB0IHRvIGNvbXBhcmUgdGhlIG91dHB1dCBvZgot
ICAvLyB0aGlzIHByb2dyYW0gd2l0aCB0aGUgZ29sZGVuIGZpbGUuCi0KLSAgLy8gSXQncyBoYXJk
IHRvIHRlc3QgSW5pdEdvb2dsZVRlc3QoKSBkaXJlY3RseSwgYXMgaXQgaGFzIG1hbnkKLSAgLy8g
Z2xvYmFsIHNpZGUgZWZmZWN0cy4gIFRoZSBmb2xsb3dpbmcgbGluZSBzZXJ2ZXMgYXMgYSBzYW5p
dHkgdGVzdAotICAvLyBmb3IgaXQuCi0gIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBh
cmd2KTsKLSAgaWYgKGFyZ2MgPj0gMiAmJgotICAgICAgU3RyaW5nKGFyZ3ZbMV0pID09ICItLWd0
ZXN0X2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cyIpCi0gICAgR1RF
U1RfRkxBRyhpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMpID0gdHJ1
ZTsKLQotI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCi0gIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6
R1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkgIT0gIiIpIHsKLSAgICAvLyBTa2lw
IHRoZSB1c3VhbCBvdXRwdXQgY2FwdHVyaW5nIGlmIHdlJ3JlIHJ1bm5pbmcgYXMgdGhlIGNoaWxk
Ci0gICAgLy8gcHJvY2VzcyBvZiBhbiB0aHJlYWRzYWZlLXN0eWxlIGRlYXRoIHRlc3QuCi0jaWYg
R1RFU1RfT1NfV0lORE9XUwotICAgIHBvc2l4OjpGUmVvcGVuKCJudWw6IiwgInciLCBzdGRvdXQp
OwotI2Vsc2UKLSAgICBwb3NpeDo6RlJlb3BlbigiL2Rldi9udWxsIiwgInciLCBzdGRvdXQpOwot
I2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0gICAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsK
LSAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi0gIGlmIChHVEVTVF9GTEFH
KGludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cykpCi0gICAgcmV0dXJu
IFJVTl9BTExfVEVTVFMoKTsKLQotICAvLyBSZWdpc3RlcnMgdHdvIGdsb2JhbCB0ZXN0IGVudmly
b25tZW50cy4KLSAgLy8gVGhlIGdvbGRlbiBmaWxlIHZlcmlmaWVzIHRoYXQgdGhleSBhcmUgc2V0
IHVwIGluIHRoZSBvcmRlciB0aGV5Ci0gIC8vIGFyZSByZWdpc3RlcmVkLCBhbmQgdG9ybiBkb3du
IGluIHRoZSByZXZlcnNlIG9yZGVyLgotICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1l
bnQobmV3IEZvb0Vudmlyb25tZW50KTsKLSAgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25t
ZW50KG5ldyBCYXJFbnZpcm9ubWVudCk7Ci0KLSAgcmV0dXJuIFJ1bkFsbFRlc3RzKCk7Ci19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0
X2dvbGRlbl9saW4udHh0IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRw
dXRfdGVzdF9nb2xkZW5fbGluLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM2
MDQzN2FjYWE3NjQwZGZiZjNkYjI4M2NmMWQxNTAzNGMwNjIyZS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0CisrKyAvZGV2L251bGwKQEAgLTEsNjk2
ICswLDAgQEAKLVRoZSBub24tdGVzdCBwYXJ0IG9mIHRoZSBjb2RlIGlzIGV4cGVjdGVkIHRvIGhh
dmUgMiBmYWlsdXJlcy4KLQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVl
IG9mOiBmYWxzZQotICBBY3R1YWw6IGZhbHNlCi1FeHBlY3RlZDogdHJ1ZQotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiAzCi1FeHBlY3RlZDogMgotG1swOzMybVs9
PT09PT09PT09XSAbW21SdW5uaW5nIDYwIHRlc3RzIGZyb20gMjUgdGVzdCBjYXNlcy4KLRtbMDsz
Mm1bLS0tLS0tLS0tLV0gG1ttR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotRm9vRW52
aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLgotQmFyRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVk
LgotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBBRGVhdGhUZXN0Ci0bWzA7MzJt
WyBSVU4gICAgICBdIBtbbUFEZWF0aFRlc3QuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAg
IE9LIF0gG1ttQURlYXRoVGVzdC5TaG91bGRSdW5GaXJzdAotG1swOzMybVstLS0tLS0tLS0tXSAb
W20xIHRlc3QgZnJvbSBBVHlwZWREZWF0aFRlc3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbUFUeXBlZERlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0b
WzA7MzJtWyAgICAgICBPSyBdIBtbbUFUeXBlZERlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0b
WzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEFUeXBlZERlYXRoVGVzdC8xLCB3aGVy
ZSBUeXBlUGFyYW0gPSBkb3VibGUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttQVR5cGVkRGVhdGhU
ZXN0LzEuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttQVR5cGVkRGVhdGhU
ZXN0LzEuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20g
TXkvQVR5cGVQYXJhbURlYXRoVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLRtbMDszMm1b
IFJVTiAgICAgIF0gG1ttTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0b
WzA7MzJtWyAgICAgICBPSyBdIBtbbU15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMC5TaG91bGRSdW5G
aXJzdAotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBNeS9BVHlwZVBhcmFtRGVh
dGhUZXN0LzEsIHdoZXJlIFR5cGVQYXJhbSA9IGRvdWJsZQotG1swOzMybVsgUlVOICAgICAgXSAb
W21NeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAg
IE9LIF0gG1ttTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJt
Wy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBQYXNzaW5nVGVzdAotG1swOzMybVsgUlVOICAg
ICAgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDEKLRtbMDszMm1bICAgICAgIE9LIF0gG1tt
UGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QxCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVBhc3NpbmdU
ZXN0LlBhc3NpbmdUZXN0MgotG1swOzMybVsgICAgICAgT0sgXSAbW21QYXNzaW5nVGVzdC5QYXNz
aW5nVGVzdDIKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMyB0ZXN0cyBmcm9tIEZhdGFsRmFpbHVy
ZVRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1
cmVJblN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogeAotICBBY3R1YWw6
IDIKLUV4cGVjdGVkOiAxCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3Qu
RmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFp
bHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFp
bHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVy
ZQotVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQot
G1swOzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUlu
U3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgb24gZmFsc2UpCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IGZhbHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4
cGVjdGVkOiB0cnVlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuTm9u
ZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBm
cm9tIExvZ2dpbmdUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUxvZ2dpbmdUZXN0LkludGVy
bGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24gKDMp
ID49IChhW2ldKSkKLWkgPT0gMAotaSA9PSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFp
bHVyZQotRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA5Ci1pID09IDIKLWkg
PT0gMwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAoMykgPj0g
KGFbaV0pLCBhY3R1YWw6IDMgdnMgNgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Mb2dnaW5nVGVz
dC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotG1swOzMybVstLS0tLS0tLS0tXSAb
W202IHRlc3RzIGZyb20gU0NPUEVEX1RSQUNFVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21T
Q09QRURfVFJBQ0VUZXN0Lk9iZXlzU2NvcGVzCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmFpbHVyZQotRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgaGF2
ZSBhIHRyYWNlLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RXhwZWN0ZWQgdHJhY2UKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQK
LVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuCi0b
WzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMKLRtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAotKGV4cGVjdGVk
IHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IG4K
LSAgQWN0dWFsOiAxCi1FeHBlY3RlZDogMgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogaSA9IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1W
YWx1ZSBvZjogbgotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1Hb29nbGUgVGVzdCB0cmFjZToK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBpID0gMgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21T
Q09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BF
RF9UUkFDRVRlc3QuV29ya3NJblN1YnJvdXRpbmUKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMQotRXhw
ZWN0ZWQ6IDIKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4g
PSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IG4KLSAgQWN0
dWFsOiAyCi1FeHBlY3RlZDogMQotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogbiA9IDIKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5X
b3Jrc0luU3Vicm91dGluZQotG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0
LkNhbkJlTmVzdGVkCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBGYWlsdXJlCi1WYWx1ZSBvZjogbgotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1Hb29nbGUg
VGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBuID0gMgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNh
bkJlTmVzdGVkCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVS
ZXBlYXRlZAotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFp
bHVyZQotRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFp
biB0cmFjZSBwb2ludCBBLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogQQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotVGhpcyBm
YWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSBhbmQg
Qi4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEIKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBBCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQot
RmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFj
ZSBwb2ludCBBLCBCLCBhbmQgQy4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IEMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBCCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogQQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotVGhp
cyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSwg
QiwgYW5kIEQuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBE
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEEK
LRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZVJlcGVhdGVkCi0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NDb25jdXJyZW50bHkK
LShleHBlY3RpbmcgNiBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEgKGluIHRocmVhZCBCLCBvbmx5IHRyYWNlIEIg
YWxpdmUpLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogVHJh
Y2UgQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQg
ZmFpbHVyZSAjMiAoaW4gdGhyZWFkIEEsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLgotR29vZ2xl
IFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogVHJhY2UgQQotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMyAoaW4g
dGhyZWFkIEIsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogVHJhY2UgQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjNCAoaW4gdGhyZWFkIEIsIG9ubHkg
dHJhY2UgQSBhbGl2ZSkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVk
Ci1FeHBlY3RlZCBmYWlsdXJlICM1IChpbiB0aHJlYWQgQSwgb25seSB0cmFjZSBBIGFsaXZlKS4K
LUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFRyYWNlIEEKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUg
IzYgKGluIHRocmVhZCBBLCBubyB0cmFjZSBhbGl2ZSkuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtb
bVNDT1BFRF9UUkFDRVRlc3QuV29ya3NDb25jdXJyZW50bHkKLRtbMDszMm1bLS0tLS0tLS0tLV0g
G1ttMSB0ZXN0IGZyb20gTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0Ci0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9y
VGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotKGV4cGVjdGluZyA1IGZhaWx1cmVzKQotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwg
aW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWls
dXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFNldFVwKCkuCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0
aGUgdGVzdCBib2R5LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAot
RXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gVGVhckRvd24uCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICM1LCBpbiB0aGUgdGVzdCBmaXh0
dXJlIGQndG9yLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJbkZpeHR1
cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKLRtbMDszMm1bLS0tLS0tLS0t
LV0gG1ttMSB0ZXN0IGZyb20gRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0Ci0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVz
dC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotKGV4cGVjdGluZyAyIGZhaWx1cmVzKQotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4g
dGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3Iu
Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9y
VGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3Qg
ZnJvbSBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21O
b25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotKGV4cGVjdGluZyA0IGZh
aWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0
ZWQgZmFpbHVyZSAjMSwgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWls
dXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVy
ZSAjMywgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1G
YWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi0b
WzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJ
blNldFVwCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEZhdGFsRmFpbHVyZUlu
U2V0VXBUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZUluU2V0VXBUZXN0
LkZhaWx1cmVJblNldFVwCi0oZXhwZWN0aW5nIDMgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgp
LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFp
bHVyZSAjMiwgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3Iu
Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJ
blNldFVwCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTQgdGVzdHMgZnJvbSBNaXhlZFVwVGVzdENh
c2VUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuRmlyc3RU
ZXN0RnJvbU5hbWVzcGFjZUZvbwotG1swOzMybVsgICAgICAgT0sgXSAbW21NaXhlZFVwVGVzdENh
c2VUZXN0LkZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28KLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
TWl4ZWRVcFRlc3RDYXNlVGVzdC5TZWNvbmRUZXN0RnJvbU5hbWVzcGFjZUZvbwotG1swOzMybVsg
ICAgICAgT0sgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlNlY29uZFRlc3RGcm9tTmFtZXNwYWNl
Rm9vCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3Vs
ZEZhaWwKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1l
IHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAgSG93ZXZl
ciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0IEZp
cnN0VGVzdEZyb21OYW1lc3BhY2VGb28gYW5kIHRlc3QgVGhpc1Nob3VsZEZhaWwKLXVzaW5nIHR3
byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKLXRo
ZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlv
bgotdW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVu
YW1lIG9uZQotb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0
ZXN0IGNhc2VzLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRo
aXNTaG91bGRGYWlsCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3Qu
VGhpc1Nob3VsZEZhaWxUb28KLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotQWxsIHRlc3Rz
IGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNs
YXNzLiAgSG93ZXZlciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVRlc3QsCi15b3UgZGVm
aW5lZCB0ZXN0IEZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28gYW5kIHRlc3QgVGhpc1Nob3VsZEZh
aWxUb28KLXVzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNh
biBoYXBwZW4gaWYKLXRoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNl
cyBvciB0cmFuc2xhdGlvbgotdW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91
bGQgcHJvYmFibHkgcmVuYW1lIG9uZQotb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBp
bnRvIGRpZmZlcmVudCB0ZXN0IGNhc2VzLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVw
VGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIg
dGVzdHMgZnJvbSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdAotG1swOzMybVsg
UlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNv
bmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotG1swOzMybVsgICAgICAgT0sgXSAbW21NaXhl
ZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1l
U2hvdWxkRmFpbAotG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2Ft
ZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotZ3Rlc3Qu
Y2M6IzogRmFpbHVyZQotRmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11
c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNh
c2UgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0
IFRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsIGFuZCB0ZXN0IFRoZVNlY29uZFRl
c3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCi11c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVy
ZSBjbGFzc2VzLiAgVGhpcyBjYW4gaGFwcGVuIGlmCi10aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20g
ZGlmZmVyZW50IG5hbWVzcGFjZXMgb3IgdHJhbnNsYXRpb24KLXVuaXRzIGFuZCBoYXZlIHRoZSBz
YW1lIG5hbWUuICBZb3Ugc2hvdWxkIHByb2JhYmx5IHJlbmFtZSBvbmUKLW9mIHRoZSBjbGFzc2Vz
IHRvIHB1dCB0aGUgdGVzdHMgaW50byBkaWZmZXJlbnQgdGVzdCBjYXNlcy4KLRtbMDszMW1bICBG
QUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25k
VGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0
cyBmcm9tIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZQotG1swOzMybVsgUlVO
ICAgICAgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVz
aW5nVEVTVF9GCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9z
YW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0YKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
VEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RBbmRT
aG91bGRGYWlsCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUg
c2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcywgc28g
bWl4aW5nIFRFU1RfRiBhbmQgVEVTVCBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgaXMKLWlsbGVnYWwu
ICBJbiB0ZXN0IGNhc2UgVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLAotdGVz
dCBEZWZpbmVkVXNpbmdURVNUX0YgaXMgZGVmaW5lZCB1c2luZyBURVNUX0YgYnV0Ci10ZXN0IERl
ZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsIGlzIGRlZmluZWQgdXNpbmcgVEVTVC4gIFlvdSBw
cm9iYWJseQotd2FudCB0byBjaGFuZ2UgdGhlIFRFU1QgdG8gVEVTVF9GIG9yIG1vdmUgaXQgdG8g
YW5vdGhlciB0ZXN0Ci1jYXNlLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21URVNUX0ZfYmVmb3Jl
X1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwKLRtb
MDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9z
YW1lX3Rlc3RfY2FzZQotG1swOzMybVsgUlVOICAgICAgXSAbW21URVNUX2JlZm9yZV9URVNUX0Zf
aW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVAotG1swOzMybVsgICAgICAgT0sgXSAb
W21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVAot
G1swOzMybVsgUlVOICAgICAgXSAbW21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nh
c2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogRmFpbHVyZQot
RmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1l
IHRlc3QgZml4dHVyZQotY2xhc3MsIHNvIG1peGluZyBURVNUX0YgYW5kIFRFU1QgaW4gdGhlIHNh
bWUgdGVzdCBjYXNlIGlzCi1pbGxlZ2FsLiAgSW4gdGVzdCBjYXNlIFRFU1RfYmVmb3JlX1RFU1Rf
Rl9pbl9zYW1lX3Rlc3RfY2FzZSwKLXRlc3QgRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFp
bCBpcyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKLXRlc3QgRGVmaW5lZFVzaW5nVEVTVCBpcyBk
ZWZpbmVkIHVzaW5nIFRFU1QuICBZb3UgcHJvYmFibHkKLXdhbnQgdG8gY2hhbmdlIHRoZSBURVNU
IHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRvIGFub3RoZXIgdGVzdAotY2FzZS4KLRtbMDszMW1bICBG
QUlMRUQgIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRV
c2luZ1RFU1RfRkFuZFNob3VsZEZhaWwKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttOCB0ZXN0cyBm
cm9tIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLRtbMDsz
Mm1bICAgICAgIE9LIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VH
bG9iYWxWYXJpYWJsZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWls
dXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFZhcmlhYmxlcwotG1swOzMybVsgICAgICAgT0sgXSAb
W21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVzCi0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNX
aGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1
cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWls
c1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rl
c3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFs
OiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVy
ZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJlCi0bWzA7MzJtWyBSVU4gICAg
ICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25m
YXRhbEZhaWx1cmVzCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUK
LUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMiBmYWlsdXJlcwotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3Rl
ZCBub24tZmF0YWwgZmFpbHVyZSAxLgotCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZh
dGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDIuCi0KLRtb
MDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5U
aGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi0oZXhw
ZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1m
YXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBm
YWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZh
dGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVU
ZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rl
c3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFs
OiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVy
ZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotG1swOzMybVsgUlVOICAgICAgXSAbW21F
eHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotKGV4cGVj
dGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0
YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1tt
RXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLRtbMDsz
Mm1bLS0tLS0tLS0tLV0gG1ttOCB0ZXN0cyBmcm9tIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QKLRtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VH
bG9iYWxWYXJpYWJsZXMKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
RXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFN0YXRpY1ZhcmlhYmxlcwot
G1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5j
ZUxvY2FsU3RhdGljVmFyaWFibGVzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFs
RmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotG1swOzMybVsg
ICAgICAgT0sgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNP
bmVGYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJl
KQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1
YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAgIF0g
G1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVy
ZXMKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6
IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDIgZmFpbHVyZXMKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgot
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0
ZWQgZmF0YWwgZmFpbHVyZS4KLQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcwotG1swOzMybVsgUlVO
ICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVOb25m
YXRhbEZhaWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQot
RXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWls
dXJlLgotCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFp
bHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAgICAgXSAbW21F
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLShleHBlY3Rp
bmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFp
bHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi0bWzA7MzJtWyBSVU4g
ICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dz
Ci0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAx
IGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBd
IBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi0bWzA7
MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBUeXBlZFRlc3QvMCwgd2hlcmUgVHlwZVBh
cmFtID0gaW50Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVR5cGVkVGVzdC8wLlN1Y2Nlc3MKLRtb
MDszMm1bICAgICAgIE9LIF0gG1ttVHlwZWRUZXN0LzAuU3VjY2VzcwotG1swOzMybVsgUlVOICAg
ICAgXSAbW21UeXBlZFRlc3QvMC5GYWlsdXJlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFp
bHVyZQotVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogMAotRXhwZWN0ZWQ6IDEKLUV4
cGVjdGVkIGZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVHlwZWRUZXN0LzAuRmFpbHVy
ZQotG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVW5zaWduZWQvVHlwZWRUZXN0
UC8wLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBjaGFyCi0bWzA7MzJtWyBSVU4gICAgICBd
IBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5TdWNjZXNzCi0bWzA7MzJtWyAgICAgICBPSyBdIBtb
bVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5TdWNjZXNzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVVu
c2lnbmVkL1R5cGVkVGVzdFAvMC5GYWlsdXJlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFp
bHVyZQotVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogXDAKLUV4cGVjdGVkOiAxVQot
V2hpY2ggaXM6IDEKLUV4cGVjdGVkIGZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5z
aWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0
cyBmcm9tIFVuc2lnbmVkL1R5cGVkVGVzdFAvMSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQg
aW50Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNz
Ci0bWzA7MzJtWyAgICAgICBPSyBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNzCi0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFj
dHVhbDogMAotRXhwZWN0ZWQ6IDFVCi1XaGljaCBpczogMQotRXhwZWN0ZWQgZmFpbHVyZQotG1sw
OzMxbVsgIEZBSUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZQotG1swOzMy
bVstLS0tLS0tLS0tXSAbW200IHRlc3RzIGZyb20gRXhwZWN0RmFpbHVyZVRlc3QKLRtbMDszMm1b
IFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCi0oZXhw
ZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFs
IGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1T
dWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1F
eHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUuCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0
ZWQ6IDEgZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUg
ZXhwZWN0ZWQuIgotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFp
bHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJV
TiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0oZXhw
ZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1m
YXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBTdWNjZXNz
OgotU3VjY2VlZGVkCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVy
ZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1
cmUuCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0
ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBub24tZmF0YWwg
ZmFpbHVyZS4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwg
ZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVy
ZU9uQWxsVGhyZWFkcwotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJl
Ci1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBTdWNjZXNzOgotU3VjY2VlZGVkCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rl
c3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVj
dGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNj
OiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBv
dGhlciBmYXRhbCBmYWlsdXJlIGV4cGVjdGVkLiIKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUu
Ci0KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxG
YWlsdXJlT25BbGxUaHJlYWRzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVU
ZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotKGV4cGVjdGluZyAxIGZhaWx1
cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQot
ICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2NlZWRlZAot
Ci0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAx
IG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBG
YXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0
aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRh
bCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1cmUuIgotICBB
Y3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWls
ZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtb
bUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotG1sw
OzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRz
VGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0
LkV4cGVjdEZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyAyIGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLWd0
ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAw
IGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFk
c1Rlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZh
aWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIDIg
ZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBl
Y3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAx
IG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVy
ZQotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBTY29wZWRGYWtlVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlclRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttU2NvcGVkRmFrZVRlc3RQ
YXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCi0oZXhwZWN0
aW5nIDIgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVk
Ci1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1
cmUKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0bWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbVNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdC5JbnRlcmNlcHRPbmx5
Q3VycmVudFRocmVhZAotG1swOzMybVstLS0tLS0tLS0tXSAbW21HbG9iYWwgdGVzdCBlbnZpcm9u
bWVudCB0ZWFyLWRvd24KLUJhckVudmlyb25tZW50OjpUZWFyRG93bigpIGNhbGxlZC4KLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBm
YWlsdXJlLgotRm9vRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLRtb
MDszMm1bPT09PT09PT09PV0gG1ttNjAgdGVzdHMgZnJvbSAyNSB0ZXN0IGNhc2VzIHJhbi4KLRtb
MDszMm1bICBQQVNTRUQgIF0gG1ttMjEgdGVzdHMuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbTM5
IHRlc3RzLCBsaXN0ZWQgYmVsb3c6Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVy
ZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZh
dGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi0bWzA7MzFtWyAg
RkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5l
Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUxvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdB
bmRBc3NlcnRpb25zCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuT2Jl
eXNTY29wZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0lu
TG9vcAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJy
b3V0aW5lCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0
ZWQKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZVJlcGVhdGVk
Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NDb25jdXJyZW50
bHkKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3Ry
dWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZh
dGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3Rvcgot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJl
SW5TZXRVcAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5G
YWlsdXJlSW5TZXRVcAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0
LlRoaXNTaG91bGRGYWlsCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRl
c3QuVGhpc1Nob3VsZEZhaWxUb28KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RD
YXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZh
aWwKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVz
dF9jYXNlLkRlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsCi0bWzA7MzFtWyAgRkFJTEVEICBd
IBtbbVRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNU
X0ZBbmRTaG91bGRGYWlsCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFp
bHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29O
b25mYXRhbEZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFp
bHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVy
bnMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWls
c1doZW5TdGF0ZW1lbnRUaHJvd3MKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlM
RUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFs
RmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5G
YWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtb
bUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVu
dFRocm93cwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3QvMC5GYWlsdXJlLCB3aGVy
ZSBUeXBlUGFyYW0gPSBpbnQKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRU
ZXN0UC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUsIHdoZXJlIFR5cGVQ
YXJhbSA9IHVuc2lnbmVkIGludAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJl
VGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFp
bHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4
cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFs
bFRocmVhZHMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRz
VGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFp
bHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlM
RUQgIF0gG1ttU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9u
bHlDdXJyZW50VGhyZWFkCi0KLTM5IEZBSUxFRCBURVNUUwotG1swOzMzbSAgWU9VIEhBVkUgMSBE
SVNBQkxFRCBURVNUCi0KLRtbbU5vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9IEZhdGFsRmFpbHVy
ZVRlc3QuKjpMb2dnaW5nVGVzdC4qCi1bPT09PT09PT09PV0gUnVubmluZyA0IHRlc3RzIGZyb20g
MiB0ZXN0IGNhc2VzLgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11
cC4KLVstLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdAotWyBSVU4gICAg
ICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5n
IGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmFpbHVyZQotVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotWyAgRkFJTEVE
ICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lICg/IG1zKQotWyBS
VU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5l
Ci0oZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDog
MQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJy
b3V0aW5lICg/IG1zKQotWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWls
dXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiBmYWxzZSkKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogZmFsc2UKLSAgQWN0dWFsOiBmYWxz
ZQotRXhwZWN0ZWQ6IHRydWUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFs
RmFpbHVyZUluU3Vicm91dGluZSAoPyBtcykKLVstLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0
YWxGYWlsdXJlVGVzdCAoPyBtcyB0b3RhbCkKLQotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExv
Z2dpbmdUZXN0Ci1bIFJVTiAgICAgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0Fu
ZEFzc2VydGlvbnMKLShleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKQotaSA9
PSAwCi1pID09IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDog
KDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDkKLWkgPT0gMgotaSA9PSAzCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDog
MyB2cyA2Ci1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFz
c2VydGlvbnMgKD8gbXMpCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTG9nZ2luZ1Rlc3QgKD8g
bXMgdG90YWwpCi0KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRv
d24KLVs9PT09PT09PT09XSA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2VzIHJhbi4gKD8gbXMgdG90
YWwpCi1bICBQQVNTRUQgIF0gMCB0ZXN0cy4KLVsgIEZBSUxFRCAgXSA0IHRlc3RzLCBsaXN0ZWQg
YmVsb3c6Ci1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJv
dXRpbmUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVk
U3Vicm91dGluZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJl
SW5TdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2lu
Z0FuZEFzc2VydGlvbnMKLQotIDQgRkFJTEVEIFRFU1RTCi0gIFlPVSBIQVZFIDEgRElTQUJMRUQg
VEVTVAotCi1Ob3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSAqRElTQUJMRURfKgotWz09PT09PT09
PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0tLS0tLS0tLV0gR2xvYmFs
IHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIERpc2Fi
bGVkVGVzdHNXYXJuaW5nVGVzdAotWyBSVU4gICAgICBdIERpc2FibGVkVGVzdHNXYXJuaW5nVGVz
dC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2FybmluZwotWyAg
ICAgICBPSyBdIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJs
ZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2FybmluZwotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVu
dmlyb25tZW50IHRlYXItZG93bgotWz09PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNl
IHJhbi4KLVsgIFBBU1NFRCAgXSAxIHRlc3QuCi1Ob3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSBQ
YXNzaW5nVGVzdC4qCi1Ob3RlOiBUaGlzIGlzIHRlc3Qgc2hhcmQgMSBvZiAyLgotWz09PT09PT09
PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0tLS0tLS0tLV0gR2xvYmFs
IHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIFBhc3Np
bmdUZXN0Ci1bIFJVTiAgICAgIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi1bICAgICAgIE9L
IF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52
aXJvbm1lbnQgdGVhci1kb3duCi1bPT09PT09PT09PV0gMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2Ug
cmFuLgotWyAgUEFTU0VEICBdIDEgdGVzdC4KLQotICBZT1UgSEFWRSAxIERJU0FCTEVEIFRFU1QK
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRf
dGVzdF9nb2xkZW5fd2luLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
b3V0cHV0X3Rlc3RfZ29sZGVuX3dpbi50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDMxM2MzYWFmYzMxZjVmMTAwNWM3NzQyODNlMDBiZGIwOWRlODFmNjkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fd2luLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDYwNSArMCwwIEBACi1UaGUgbm9uLXRlc3QgcGFydCBvZiB0aGUgY29kZSBpcyBleHBlY3RlZCB0
byBoYXZlIDIgZmFpbHVyZXMuCi0KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFs
dWUgb2Y6IGZhbHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4cGVjdGVkOiB0cnVlCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiAzCi1FeHBlY3RlZDogMgotWz09PT09PT09
PT1dIFJ1bm5pbmcgNjEgdGVzdHMgZnJvbSAyNyB0ZXN0IGNhc2VzLgotWy0tLS0tLS0tLS1dIEds
b2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KLUZvb0Vudmlyb25tZW50OjpTZXRVcCgpIGNh
bGxlZC4KLUJhckVudmlyb25tZW50OjpTZXRVcCgpIGNhbGxlZC4KLVstLS0tLS0tLS0tXSAxIHRl
c3QgZnJvbSBBRGVhdGhUZXN0Ci1bIFJVTiAgICAgIF0gQURlYXRoVGVzdC5TaG91bGRSdW5GaXJz
dAotWyAgICAgICBPSyBdIEFEZWF0aFRlc3QuU2hvdWxkUnVuRmlyc3QKLVstLS0tLS0tLS0tXSAx
IHRlc3QgZnJvbSBBVHlwZWREZWF0aFRlc3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci1bIFJV
TiAgICAgIF0gQVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLVsgICAgICAgT0sgXSBB
VHlwZWREZWF0aFRlc3QvMC5TaG91bGRSdW5GaXJzdAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9t
IEFUeXBlZERlYXRoVGVzdC8xLCB3aGVyZSBUeXBlUGFyYW0gPSBkb3VibGUKLVsgUlVOICAgICAg
XSBBVHlwZWREZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAotWyAgICAgICBPSyBdIEFUeXBlZERl
YXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0Ci1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTXkvQVR5
cGVQYXJhbURlYXRoVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLVsgUlVOICAgICAgXSBN
eS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLVsgICAgICAgT0sgXSBNeS9B
VHlwZVBhcmFtRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLVstLS0tLS0tLS0tXSAxIHRlc3Qg
ZnJvbSBNeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEsIHdoZXJlIFR5cGVQYXJhbSA9IGRvdWJsZQot
WyBSVU4gICAgICBdIE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAotWyAg
ICAgICBPSyBdIE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAotWy0tLS0t
LS0tLS1dIDIgdGVzdHMgZnJvbSBQYXNzaW5nVGVzdAotWyBSVU4gICAgICBdIFBhc3NpbmdUZXN0
LlBhc3NpbmdUZXN0MQotWyAgICAgICBPSyBdIFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MQotWyBS
VU4gICAgICBdIFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgotWyAgICAgICBPSyBdIFBhc3NpbmdU
ZXN0LlBhc3NpbmdUZXN0MgotWy0tLS0tLS0tLS1dIDMgdGVzdHMgZnJvbSBGYXRhbEZhaWx1cmVU
ZXN0Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRp
bmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDog
MQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5l
Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJv
dXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3Rl
ZDogMQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRT
dWJyb3V0aW5lCi1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJ
blN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIG9uIGZhbHNlKQotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogZmFsc2UKLSAgQWN0dWFsOiBmYWxzZQotRXhw
ZWN0ZWQ6IHRydWUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVy
ZUluU3Vicm91dGluZQotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExvZ2dpbmdUZXN0Ci1bIFJV
TiAgICAgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLShl
eHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKQotaSA9PSAwCi1pID09IDEKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFj
dHVhbDogMyB2cyA5Ci1pID09IDIKLWkgPT0gMwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVy
cm9yOiBFeHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDYKLVsgIEZBSUxFRCAg
XSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotWy0tLS0tLS0t
LS1dIDUgdGVzdHMgZnJvbSBTQ09QRURfVFJBQ0VUZXN0Ci1bIFJVTiAgICAgIF0gU0NPUEVEX1RS
QUNFVGVzdC5PYmV5c1Njb3BlcwotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogZXJyb3I6IEZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hv
dWxkbid0IGhhdmUgYSB0cmFjZS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFp
bGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgaGF2ZSBhIHRyYWNlLgot
R29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRXhwZWN0ZWQgdHJh
Y2UKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1UaGlzIGZhaWx1cmUg
aXMgZXhwZWN0ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNlLgotWyAgRkFJTEVEICBdIFND
T1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMKLVsgUlVOICAgICAgXSBTQ09QRURfVFJBQ0VUZXN0
LldvcmtzSW5Mb29wCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAxCi1FeHBlY3RlZDogMgotR29vZ2xlIFRl
c3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogaSA9IDEKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQot
R29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogaSA9IDIKLVsgIEZB
SUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCi1bIFJVTiAgICAgIF0gU0NPUEVE
X1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGluZQotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMQotRXhwZWN0
ZWQ6IDIKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4gPSAx
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBuCi0gIEFjdHVhbDog
MgotRXhwZWN0ZWQ6IDEKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IG4gPSAyCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGlu
ZQotWyBSVU4gICAgICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLShleHBlY3RlZCB0
byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogbgotICBB
Y3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBuID0gMgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IAotWyAgRkFJTEVEICBd
IFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLVsgUlVOICAgICAgXSBTQ09QRURfVFJBQ0VU
ZXN0LkNhbkJlUmVwZWF0ZWQKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IGVycm9yOiBGYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3Vs
ZCBjb250YWluIHRyYWNlIHBvaW50IEEuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBBCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAot
VGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQg
QSBhbmQgQi4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEIK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBBCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJy
b3I6IEZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4g
dHJhY2UgcG9pbnQgQSwgQiwgYW5kIEMuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBDCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1U
aGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBB
LCBCLCBhbmQgRC4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IEQKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBCCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
QQotWyAgRkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVSZXBlYXRlZAotWy0tLS0tLS0t
LS1dIDEgdGVzdCBmcm9tIE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdAot
WyBSVU4gICAgICBdIE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWls
dXJlSW5Db25zdHJ1Y3RvcgotKGV4cGVjdGluZyA1IGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0
IGZpeHR1cmUgYyd0b3IuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAot
RXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBib2R5Lgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUg
IzQsIGluIFRlYXJEb3duLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQK
LUV4cGVjdGVkIGZhaWx1cmUgIzUsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi1bICBGQUlM
RUQgIF0gTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNv
bnN0cnVjdG9yCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRmF0YWxGYWlsdXJlSW5GaXh0dXJl
Q29uc3RydWN0b3JUZXN0Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3Ry
dWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMpCi1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAj
MSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBl
cnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQn
dG9yLgotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5G
YWlsdXJlSW5Db25zdHJ1Y3RvcgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIE5vbkZhdGFsRmFp
bHVyZUluU2V0VXBUZXN0Ci1bIFJVTiAgICAgIF0gTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3Qu
RmFpbHVyZUluU2V0VXAKLShleHBlY3RpbmcgNCBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUg
IzIsIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9y
OiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIFRlYXJEb3duKCkuCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gdGhl
IHRlc3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAgXSBOb25GYXRhbEZhaWx1cmVJblNldFVw
VGVzdC5GYWlsdXJlSW5TZXRVcAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIEZhdGFsRmFpbHVy
ZUluU2V0VXBUZXN0Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVy
ZUluU2V0VXAKLShleHBlY3RpbmcgMyBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLgotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGlu
IFRlYXJEb3duKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhw
ZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAg
XSBGYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotWy0tLS0tLS0tLS1dIDEg
dGVzdCBmcm9tIEV4Y2VwdGlvbkluRml4dHVyZUN0b3JUZXN0Ci1bIFJVTiAgICAgIF0gRXhjZXB0
aW9uSW5GaXh0dXJlQ3RvclRlc3QuRXhjZXB0aW9uSW5GaXh0dXJlQ3RvcgotKGV4cGVjdGluZyBh
IGZhaWx1cmUgb24gdGhyb3duIGV4Y2VwdGlvbiBpbiB0aGUgdGVzdCBmaXh0dXJlJ3MgY29uc3Ry
dWN0b3IpCi11bmtub3duIGZpbGU6IGVycm9yOiBFeGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAw
eGMwMDAwMDA1IGluIHRoZSB0ZXN0IGZpeHR1cmUncyBjb25zdHJ1Y3Rvci4KLVstLS0tLS0tLS0t
XSAxIHRlc3QgZnJvbSBFeGNlcHRpb25JblNldFVwVGVzdAotWyBSVU4gICAgICBdIEV4Y2VwdGlv
bkluU2V0VXBUZXN0LkV4Y2VwdGlvbkluU2V0VXAKLShleHBlY3RpbmcgMyBmYWlsdXJlcykKLXVu
a25vd24gZmlsZTogZXJyb3I6IEV4Y2VwdGlvbiB0aHJvd24gd2l0aCBjb2RlIDB4YzAwMDAwMDUg
aW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBl
Y3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUg
ZCd0b3IuCi1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5TZXRVcFRlc3QuRXhjZXB0aW9uSW5TZXRV
cAotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QK
LVsgUlVOICAgICAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QuU0VICi0oZXhwZWN0aW5n
IDMgZmFpbHVyZXMpCi11bmtub3duIGZpbGU6IGVycm9yOiBFeGNlcHRpb24gdGhyb3duIHdpdGgg
Y29kZSAweGMwMDAwMDA1IGluIHRoZSB0ZXN0IGJvZHkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4KLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMz
LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIEV4Y2VwdGlvbkluVGVz
dEZ1bmN0aW9uVGVzdC5TRUgKLVsgUlVOICAgICAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRl
c3QuQ3BwRXhjZXB0aW9uCi11bmtub3duIGZpbGU6IGVycm9yOiBFeGNlcHRpb24gdGhyb3duIHdp
dGggY29kZSAweGUwNmQ3MzYzIGluIHRoZSB0ZXN0IGJvZHkuCi1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4K
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJl
ICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIEV4Y2VwdGlvbklu
VGVzdEZ1bmN0aW9uVGVzdC5DcHBFeGNlcHRpb24KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBF
eGNlcHRpb25JblRlYXJEb3duVGVzdAotWyBSVU4gICAgICBdIEV4Y2VwdGlvbkluVGVhckRvd25U
ZXN0LkV4Y2VwdGlvbkluVGVhckRvd24KLShleHBlY3RpbmcgMiBmYWlsdXJlcykKLXVua25vd24g
ZmlsZTogZXJyb3I6IEV4Y2VwdGlvbiB0aHJvd24gd2l0aCBjb2RlIDB4ZTA2ZDczNjMgaW4gVGVh
ckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3Rl
ZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIEV4
Y2VwdGlvbkluVGVhckRvd25UZXN0LkV4Y2VwdGlvbkluVGVhckRvd24KLVstLS0tLS0tLS0tXSA0
IHRlc3RzIGZyb20gTWl4ZWRVcFRlc3RDYXNlVGVzdAotWyBSVU4gICAgICBdIE1peGVkVXBUZXN0
Q2FzZVRlc3QuRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbwotWyAgICAgICBPSyBdIE1peGVkVXBU
ZXN0Q2FzZVRlc3QuRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbwotWyBSVU4gICAgICBdIE1peGVk
VXBUZXN0Q2FzZVRlc3QuU2Vjb25kVGVzdEZyb21OYW1lc3BhY2VGb28KLVsgICAgICAgT0sgXSBN
aXhlZFVwVGVzdENhc2VUZXN0LlNlY29uZFRlc3RGcm9tTmFtZXNwYWNlRm9vCi1bIFJVTiAgICAg
IF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogZXJyb3I6
IEZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2Ft
ZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAgSG93ZXZlciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0
Q2FzZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0IEZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28gYW5k
IHRlc3QgVGhpc1Nob3VsZEZhaWwKLXVzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNs
YXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKLXRoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZm
ZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlvbgotdW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUg
bmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVuYW1lIG9uZQotb2YgdGhlIGNsYXNzZXMgdG8g
cHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0ZXN0IGNhc2VzLgotWyAgRkFJTEVEICBdIE1p
eGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwKLVsgUlVOICAgICAgXSBNaXhlZFVwVGVz
dENhc2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCi1ndGVzdC5jYzojOiBlcnJvcjogRmFpbGVkCi1B
bGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4
dHVyZQotY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlVGVzdCwK
LXlvdSBkZWZpbmVkIHRlc3QgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbyBhbmQgdGVzdCBUaGlz
U2hvdWxkRmFpbFRvbwotdXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4g
IFRoaXMgY2FuIGhhcHBlbiBpZgotdGhlIHR3byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVudCBu
YW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCi11bml0cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAg
WW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25lCi1vZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhl
IHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMuCi1bICBGQUlMRUQgIF0gTWl4ZWRVcFRl
c3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbFRvbwotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBN
aXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdAotWyBSVU4gICAgICBdIE1peGVkVXBU
ZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91
bGRGYWlsCi1bICAgICAgIE9LIF0gTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3Qu
VGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLVsgUlVOICAgICAgXSBNaXhlZFVw
VGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hv
dWxkRmFpbAotZ3Rlc3QuY2M6IzogZXJyb3I6IEZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1l
IHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAgSG93ZXZl
ciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAoteW91
IGRlZmluZWQgdGVzdCBUaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbCBhbmQgdGVz
dCBUaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotdXNpbmcgdHdvIGRpZmZlcmVu
dCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBlbiBpZgotdGhlIHR3byBjbGFz
c2VzIGFyZSBmcm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCi11bml0cyBh
bmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAgWW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25lCi1v
ZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMu
Ci1bICBGQUlMRUQgIF0gTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vj
b25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLVstLS0tLS0tLS0tXSAyIHRlc3RzIGZyb20g
VEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlCi1bIFJVTiAgICAgIF0gVEVTVF9G
X2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRgotWyAgICAg
ICBPSyBdIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdU
RVNUX0YKLVsgUlVOICAgICAgXSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2Uu
RGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwKLWd0ZXN0LmNjOiM6IGVycm9yOiBGYWlsZWQK
LUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBm
aXh0dXJlCi1jbGFzcywgc28gbWl4aW5nIFRFU1RfRiBhbmQgVEVTVCBpbiB0aGUgc2FtZSB0ZXN0
IGNhc2UgaXMKLWlsbGVnYWwuICBJbiB0ZXN0IGNhc2UgVEVTVF9GX2JlZm9yZV9URVNUX2luX3Nh
bWVfdGVzdF9jYXNlLAotdGVzdCBEZWZpbmVkVXNpbmdURVNUX0YgaXMgZGVmaW5lZCB1c2luZyBU
RVNUX0YgYnV0Ci10ZXN0IERlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsIGlzIGRlZmluZWQg
dXNpbmcgVEVTVC4gIFlvdSBwcm9iYWJseQotd2FudCB0byBjaGFuZ2UgdGhlIFRFU1QgdG8gVEVT
VF9GIG9yIG1vdmUgaXQgdG8gYW5vdGhlciB0ZXN0Ci1jYXNlLgotWyAgRkFJTEVEICBdIFRFU1Rf
Rl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxk
RmFpbAotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2Ft
ZV90ZXN0X2Nhc2UKLVsgUlVOICAgICAgXSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0
X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVAotWyAgICAgICBPSyBdIFRFU1RfYmVmb3JlX1RFU1RfRl9p
bl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUCi1bIFJVTiAgICAgIF0gVEVTVF9iZWZv
cmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZh
aWwKLWd0ZXN0LmNjOiM6IGVycm9yOiBGYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0
IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcywgc28gbWl4aW5nIFRF
U1RfRiBhbmQgVEVTVCBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgaXMKLWlsbGVnYWwuICBJbiB0ZXN0
IGNhc2UgVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLAotdGVzdCBEZWZpbmVk
VXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsIGlzIGRlZmluZWQgdXNpbmcgVEVTVF9GIGJ1dAotdGVz
dCBEZWZpbmVkVXNpbmdURVNUIGlzIGRlZmluZWQgdXNpbmcgVEVTVC4gIFlvdSBwcm9iYWJseQot
d2FudCB0byBjaGFuZ2UgdGhlIFRFU1QgdG8gVEVTVF9GIG9yIG1vdmUgaXQgdG8gYW5vdGhlciB0
ZXN0Ci1jYXNlLgotWyAgRkFJTEVEICBdIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3Rf
Y2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsCi1bLS0tLS0tLS0tLV0gOCB0ZXN0
cyBmcm9tIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QKLVsgUlVOICAgICAgXSBFeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotWyAgICAgICBPSyBd
IEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCi1b
IFJVTiAgICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFZh
cmlhYmxlcwotWyAgICAgICBPSyBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJl
bmNlTG9jYWxWYXJpYWJsZXMKLVsgUlVOICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKLVsgICAgICAgT0sgXSBFeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1
cmUKLVsgUlVOICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJl
SXNOb05vbmZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBl
cnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVz
Ci1bICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlz
Tm9Ob25mYXRhbEZhaWx1cmUKLVsgUlVOICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LkZhaWxzV2hlblRoZXJlQXJlVHdvTm9uZmF0YWxGYWlsdXJlcwotKGV4cGVjdGluZyBhIGZhaWx1
cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAg
QWN0dWFsOiAyIGZhaWx1cmVzCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZh
aWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDEuCi0KLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9u
LWZhdGFsIGZhaWx1cmUgMi4KLQotWyAgRkFJTEVEICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRl
c3QuRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1cmVzCi1bIFJVTiAgICAgIF0gRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi0o
ZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24t
ZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwg
ZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotWyAgRkFJTEVEICBd
IEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVy
ZQotWyBSVU4gICAgICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVt
ZW50UmV0dXJucwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhw
ZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi1bICBGQUlM
RUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5z
Ci1bIFJVTiAgICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1l
bnRUaHJvd3MKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVj
dGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotWyAgRkFJTEVE
ICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi1b
LS0tLS0tLS0tLV0gOCB0ZXN0cyBmcm9tIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QKLVsgUlVOICAg
ICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwot
WyAgICAgICBPSyBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFy
aWFibGVzCi1bIFJVTiAgICAgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VM
b2NhbFN0YXRpY1ZhcmlhYmxlcwotWyAgICAgICBPSyBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qu
Q2FuUmVmZXJlbmNlTG9jYWxTdGF0aWNWYXJpYWJsZXMKLVsgUlVOICAgICAgXSBFeHBlY3RGYXRh
bEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLVsgICAgICAg
T0sgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZh
aWx1cmUKLVsgUlVOICAgICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJl
SXNOb0ZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJv
cjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsgIEZB
SUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFp
bHVyZQotWyBSVU4gICAgICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVB
cmVUd29GYXRhbEZhaWx1cmVzCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVy
cm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMiBmYWlsdXJlcwotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZh
dGFsIGZhaWx1cmUuCi0KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgot
RmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQgIF0gRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMKLVsgUlVOICAg
ICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZh
aWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVk
OiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5v
bi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQot
WyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZU5v
bmZhdGFsRmFpbHVyZQotWyBSVU4gICAgICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNX
aGVuU3RhdGVtZW50UmV0dXJucwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBl
cnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsg
IEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVy
bnMKLVsgUlVOICAgICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVu
dFRocm93cwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0
ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBF
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotWy0tLS0tLS0t
LS1dIDIgdGVzdHMgZnJvbSBUeXBlZFRlc3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci1bIFJV
TiAgICAgIF0gVHlwZWRUZXN0LzAuU3VjY2VzcwotWyAgICAgICBPSyBdIFR5cGVkVGVzdC8wLlN1
Y2Nlc3MKLVsgUlVOICAgICAgXSBUeXBlZFRlc3QvMC5GYWlsdXJlCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBUeXBlUGFyYW0oKQotICBBY3R1YWw6IDAKLUV4cGVj
dGVkOiAxCi1FeHBlY3RlZCBmYWlsdXJlCi1bICBGQUlMRUQgIF0gVHlwZWRUZXN0LzAuRmFpbHVy
ZQotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAsIHdoZXJl
IFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKLVsgUlVOICAgICAgXSBVbnNpZ25lZC9UeXBlZFRl
c3RQLzAuU3VjY2VzcwotWyAgICAgICBPSyBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMC5TdWNjZXNz
Ci1bIFJVTiAgICAgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogXDAK
LUV4cGVjdGVkOiAxVQotV2hpY2ggaXM6IDEKLUV4cGVjdGVkIGZhaWx1cmUKLVsgIEZBSUxFRCAg
XSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZQotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJv
bSBVbnNpZ25lZC9UeXBlZFRlc3RQLzEsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAot
WyBSVU4gICAgICBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNzCi1bICAgICAgIE9LIF0g
VW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1Y2Nlc3MKLVsgUlVOICAgICAgXSBVbnNpZ25lZC9UeXBl
ZFRlc3RQLzEuRmFpbHVyZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBv
ZjogVHlwZVBhcmFtKCkKLSAgQWN0dWFsOiAwCi1FeHBlY3RlZDogMVUKLVdoaWNoIGlzOiAxCi1F
eHBlY3RlZCBmYWlsdXJlCi1bICBGQUlMRUQgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1
cmUKLVstLS0tLS0tLS0tXSA0IHRlc3RzIGZyb20gRXhwZWN0RmFpbHVyZVRlc3QKLVsgUlVOICAg
ICAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgMSBm
YWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAg
QWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1TdWNjZWVkZWQKLQot
KGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0
YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFs
IGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0
aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWls
dXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBlY3RlZC4iCi0gIEFj
dHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1F
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQgIF0gRXhwZWN0RmFpbHVyZVRlc3Qu
RXhwZWN0RmF0YWxGYWlsdXJlCi1bIFJVTiAgICAgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0
Tm9uRmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9y
OiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2NlZWRlZAotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkK
LWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1
YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhw
ZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzoj
OiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBv
dGhlciBub24tZmF0YWwgZmFpbHVyZS4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUuCi0KLVsgIEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1
cmUKLVsgUlVOICAgICAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFs
bFRocmVhZHMKLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVj
dGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IFN1Y2Nlc3M6Ci1TdWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzoj
OiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1m
YXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9y
OiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwg
ZmFpbHVyZSBleHBlY3RlZC4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBG
YXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi1bICBGQUlM
RUQgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi1b
IFJVTiAgICAgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxU
aHJlYWRzCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3Rl
ZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogU3VjY2VzczoKLVN1Y2NlZWRlZAotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNj
OiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0
YWwgZmFpbHVyZS4KLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjog
RXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBub24t
ZmF0YWwgZmFpbHVyZS4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24t
ZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLVsg
IEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRo
cmVhZHMKLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KLUJh
ckVudmlyb25tZW50OjpUZWFyRG93bigpIGNhbGxlZC4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLUZvb0Vudmlyb25t
ZW50OjpUZWFyRG93bigpIGNhbGxlZC4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjog
RmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotWz09PT09PT09PT1dIDYxIHRlc3RzIGZy
b20gMjcgdGVzdCBjYXNlcyByYW4uCi1bICBQQVNTRUQgIF0gMjEgdGVzdHMuCi1bICBGQUlMRUQg
IF0gNDAgdGVzdHMsIGxpc3RlZCBiZWxvdzoKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0
LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3Qu
RmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJl
VGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBMb2dnaW5nVGVz
dC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotWyAgRkFJTEVEICBdIFNDT1BFRF9U
UkFDRVRlc3QuT2JleXNTY29wZXMKLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0Lldvcmtz
SW5Mb29wCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGluZQot
WyAgRkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLVsgIEZBSUxFRCAgXSBT
Q09QRURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKLVsgIEZBSUxFRCAgXSBOb25GYXRhbEZhaWx1
cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKLVsgIEZBSUxF
RCAgXSBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3Ry
dWN0b3IKLVsgIEZBSUxFRCAgXSBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5T
ZXRVcAotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVw
Ci1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3QuRXhjZXB0aW9uSW5GaXh0
dXJlQ3RvcgotWyAgRkFJTEVEICBdIEV4Y2VwdGlvbkluU2V0VXBUZXN0LkV4Y2VwdGlvbkluU2V0
VXAKLVsgIEZBSUxFRCAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QuU0VICi1bICBGQUlM
RUQgIF0gRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0LkNwcEV4Y2VwdGlvbgotWyAgRkFJTEVE
ICBdIEV4Y2VwdGlvbkluVGVhckRvd25UZXN0LkV4Y2VwdGlvbkluVGVhckRvd24KLVsgIEZBSUxF
RCAgXSBNaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsCi1bICBGQUlMRUQgIF0gTWl4
ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbFRvbwotWyAgRkFJTEVEICBdIE1peGVkVXBU
ZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91
bGRGYWlsCi1bICBGQUlMRUQgIF0gVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNl
LkRlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsCi1bICBGQUlMRUQgIF0gVEVTVF9iZWZvcmVf
VEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwK
LVsgIEZBSUxFRCAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNO
b05vbmZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qu
RmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi1bICBG
QUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1
cm5zCi1bICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0
ZW1lbnRUaHJvd3MKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hl
blRoZXJlSXNOb0ZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRl
c3QuRmFpbHNXaGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi1bICBG
QUlMRUQgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5z
Ci1bICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRU
aHJvd3MKLVsgIEZBSUxFRCAgXSBUeXBlZFRlc3QvMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0g
PSBpbnQKLVsgIEZBSUxFRCAgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZSwgd2hlcmUg
VHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgotWyAgRkFJTEVEICBdIFVuc2lnbmVkL1R5cGVkVGVz
dFAvMS5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKLVsgIEZBSUxFRCAg
XSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLVsgIEZBSUxFRCAgXSBFeHBl
Y3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLVsgIEZBSUxFRCAgXSBFeHBlY3RG
YWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLVsgIEZBSUxFRCAgXSBF
eHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLQotNDAg
RkFJTEVEIFRFU1RTCi0gIFlPVSBIQVZFIDEgRElTQUJMRUQgVEVTVAotCi1Ob3RlOiBHb29nbGUg
VGVzdCBmaWx0ZXIgPSBGYXRhbEZhaWx1cmVUZXN0Lio6TG9nZ2luZ1Rlc3QuKgotWz09PT09PT09
PT1dIFJ1bm5pbmcgNCB0ZXN0cyBmcm9tIDIgdGVzdCBjYXNlcy4KLVstLS0tLS0tLS0tXSBHbG9i
YWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCi1bLS0tLS0tLS0tLV0gMyB0ZXN0cyBmcm9tIEZh
dGFsRmFpbHVyZVRlc3QKLVsgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVy
ZUluU3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogeAotICBBY3R1YWw6IDIK
LUV4cGVjdGVkOiAxCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJ
blN1YnJvdXRpbmUgKD8gbXMpCi1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZh
aWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91
bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IHgKLSAg
QWN0dWFsOiAyCi1FeHBlY3RlZDogMQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0
YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lICg/IG1zKQotWyBSVU4gICAgICBdIEZhdGFsRmFp
bHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVy
ZSBvbiBmYWxzZSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IGZh
bHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4cGVjdGVkOiB0cnVlCi1bICBGQUlMRUQgIF0gRmF0YWxG
YWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUgKD8gbXMpCi1bLS0tLS0tLS0t
LV0gMyB0ZXN0cyBmcm9tIEZhdGFsRmFpbHVyZVRlc3QgKD8gbXMgdG90YWwpCi0KLVstLS0tLS0t
LS0tXSAxIHRlc3QgZnJvbSBMb2dnaW5nVGVzdAotWyBSVU4gICAgICBdIExvZ2dpbmdUZXN0Lklu
dGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24g
KDMpID49IChhW2ldKSkKLWkgPT0gMAotaSA9PSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
ZXJyb3I6IEV4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgOQotaSA9PSAyCi1p
ID09IDMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6ICgzKSA+PSAo
YVtpXSksIGFjdHVhbDogMyB2cyA2Ci1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2
aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMgKD8gbXMpCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20g
TG9nZ2luZ1Rlc3QgKD8gbXMgdG90YWwpCi0KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZp
cm9ubWVudCB0ZWFyLWRvd24KLVs9PT09PT09PT09XSA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2Vz
IHJhbi4gKD8gbXMgdG90YWwpCi1bICBQQVNTRUQgIF0gMCB0ZXN0cy4KLVsgIEZBSUxFRCAgXSA0
IHRlc3RzLCBsaXN0ZWQgYmVsb3c6Ci1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRh
bEZhaWx1cmVJblN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFs
RmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3Qu
Tm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50
ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLQotIDQgRkFJTEVEIFRFU1RTCi0gIFlPVSBI
QVZFIDEgRElTQUJMRUQgVEVTVAotCi1Ob3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSAqRElTQUJM
RURfKgotWz09PT09PT09PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0t
LS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDEg
dGVzdCBmcm9tIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdAotWyBSVU4gICAgICBdIERpc2FibGVk
VGVzdHNXYXJuaW5nVGVzdC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVz
c2VzV2FybmluZwotWyAgICAgICBPSyBdIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdC5ESVNBQkxF
RF9BbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2FybmluZwotWy0tLS0tLS0tLS1d
IEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgotWz09PT09PT09PT1dIDEgdGVzdCBm
cm9tIDEgdGVzdCBjYXNlIHJhbi4KLVsgIFBBU1NFRCAgXSAxIHRlc3QuCi1Ob3RlOiBHb29nbGUg
VGVzdCBmaWx0ZXIgPSBQYXNzaW5nVGVzdC4qCi1Ob3RlOiBUaGlzIGlzIHRlc3Qgc2hhcmQgMSBv
ZiAyLgotWz09PT09PT09PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0t
LS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDEg
dGVzdCBmcm9tIFBhc3NpbmdUZXN0Ci1bIFJVTiAgICAgIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rl
c3QyCi1bICAgICAgIE9LIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi1bLS0tLS0tLS0tLV0g
R2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCi1bPT09PT09PT09PV0gMSB0ZXN0IGZy
b20gMSB0ZXN0IGNhc2UgcmFuLgotWyAgUEFTU0VEICBdIDEgdGVzdC4KLQotICBZT1UgSEFWRSAx
IERJU0FCTEVEIFRFU1QKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF9wcmVkX2ltcGxfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X3ByZWRfaW1wbF91bml0dGVzdC5jYwppbmRleCBlN2VlNTRiNTZkODZiOWVhNTRi
NzE2MTI1ODY5YWEyODdkMTI2YmU3Li5iNDY2YzE1MGFlZGM0M2ZkYjEwMzczYjdhODAyY2NiZTc3
NTc5MGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3By
ZWRfaW1wbF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X3ByZWRfaW1wbF91bml0dGVzdC5jYwpAQCAtMjcsNyArMjcsNyBAQAogLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogCi0vLyBUaGlzIGZpbGUgaXMgQVVUT01BVElDQUxMWSBHRU5F
UkFURUQgb24gMTAvMDIvMjAwOCBieSBjb21tYW5kCisvLyBUaGlzIGZpbGUgaXMgQVVUT01BVElD
QUxMWSBHRU5FUkFURUQgb24gMDEvMDIvMjAxOCBieSBjb21tYW5kCiAvLyAnZ2VuX2d0ZXN0X3By
ZWRfaW1wbC5weSA1Jy4gIERPIE5PVCBFRElUIEJZIEhBTkQhCiAKIC8vIFJlZ3Jlc3Npb24gdGVz
dCBmb3IgZ3Rlc3RfcHJlZF9pbXBsLmgKQEAgLTQ5LDggKzQ5LDggQEAKIAogI2luY2x1ZGUgPGlv
c3RyZWFtPgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC1zcGkuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LXNwaS5oIgogCiAvLyBBIHVzZXItZGVmaW5lZCBkYXRhIHR5cGUuCiBzdHJ1Y3QgQm9vbCB7CkBA
IC0xMDMsMTEgKzEwMywxMCBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1
bmN0aW9uMShjb25zdCBjaGFyKiBlMSwKICAgaWYgKFByZWRGdW5jdGlvbjEodjEpKQogICAgIHJl
dHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgdGVzdGluZzo6TWVzc2FnZSBt
c2c7Ci0gIG1zZyA8PCBlMQorICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisg
ICAgICA8PCBlMQogICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBiZSBwb3NpdGl2ZSwgYnV0IGV2
YWx1YXRlcyB0byAiCiAgICAgICA8PCB2MSA8PCAiLiI7Ci0gIHJldHVybiB0ZXN0aW5nOjpBc3Nl
cnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIC8vIEEgdW5hcnkgcHJlZGljYXRlLWZvcm1hdHRlciBm
dW5jdG9yLgpAQCAtNDk0LDExICs0OTMsMTAgQEAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFBy
ZWRGb3JtYXRGdW5jdGlvbjIoY29uc3QgY2hhciogZTEsCiAgIGlmIChQcmVkRnVuY3Rpb24yKHYx
LCB2MikpCiAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0
aW5nOjpNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGUxIDw8ICIgKyAiIDw8IGUyCisgIHJldHVybiB0
ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IGUxIDw8ICIgKyAiIDw8IGUyCiAg
ICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIK
ICAgICAgIDw8IHYxICsgdjIgPDwgIi4iOwotICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFp
bHVyZShtc2cpOwogfQogCiAvLyBBIGJpbmFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3Iu
CkBAIC05MjcsMTEgKzkyNSwxMCBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1h
dEZ1bmN0aW9uMyhjb25zdCBjaGFyKiBlMSwKICAgaWYgKFByZWRGdW5jdGlvbjModjEsIHYyLCB2
MykpCiAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5n
OjpNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUz
CisgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IGUxIDw8ICIg
KyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUzCiAgICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJlIHBv
c2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKICAgICAgIDw8IHYxICsgdjIgKyB2MyA8PCAiLiI7
Ci0gIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIC8vIEEgdGVy
bmFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3IuCkBAIC0xNDAyLDExICsxMzk5LDEwIEBA
IHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rpb240KGNvbnN0IGNoYXIq
IGUxLAogICBpZiAoUHJlZEZ1bmN0aW9uNCh2MSwgdjIsIHYzLCB2NCkpCiAgICAgcmV0dXJuIHRl
c3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5nOjpNZXNzYWdlIG1zZzsKLSAg
bXNnIDw8IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUzIDw8ICIgKyAiIDw8IGU0Cisg
IHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IGUxIDw8ICIgKyAi
IDw8IGUyIDw8ICIgKyAiIDw8IGUzIDw8ICIgKyAiIDw8IGU0CiAgICAgICA8PCAiIGlzIGV4cGVj
dGVkIHRvIGJlIHBvc2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKICAgICAgIDw8IHYxICsgdjIg
KyB2MyArIHY0IDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNn
KTsKIH0KIAogLy8gQSA0LWFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3IuCkBAIC0xOTE5
LDExICsxOTE1LDEwIEBAIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rp
b241KGNvbnN0IGNoYXIqIGUxLAogICBpZiAoUHJlZEZ1bmN0aW9uNSh2MSwgdjIsIHYzLCB2NCwg
djUpKQogICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgdGVzdGlu
Zzo6TWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBl
MyA8PCAiICsgIiA8PCBlNCA8PCAiICsgIiA8PCBlNQorICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0
aW9uRmFpbHVyZSgpCisgICAgICA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBlMyA8
PCAiICsgIiA8PCBlNCA8PCAiICsgIiA8PCBlNQogICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBi
ZSBwb3NpdGl2ZSwgYnV0IGV2YWx1YXRlcyB0byAiCiAgICAgICA8PCB2MSArIHYyICsgdjMgKyB2
NCArIHY1IDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNnKTsK
IH0KIAogLy8gQSA1LWFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3IuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZW1hdHVyZV9leGl0X3Rlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZW1hdHVyZV9leGl0X3Rl
c3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzFlOTMwNTZkOGI1NjJjNTlmZWJhODI3OGUyMGMyOWRmMTNlMTkx
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
cHJlbWF0dXJlX2V4aXRfdGVzdC5jYwpAQCAtMCwwICsxLDEyNiBAQAorLy8gQ29weXJpZ2h0IDIw
MTMsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisv
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gVGVzdHMgdGhhdCBHb29nbGUg
VGVzdCBtYW5pcHVsYXRlcyB0aGUgcHJlbWF0dXJlLWV4aXQtZGV0ZWN0aW9uCisvLyBmaWxlIGNv
cnJlY3RseS4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgorCit1c2luZyA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0OwordXNpbmcgOjp0ZXN0aW5nOjpU
ZXN0OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OkdldEVudjsKK3VzaW5nIDo6
dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpTdGF0OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6cG9zaXg6OlN0YXRTdHJ1Y3Q7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIFByZW1hdHVyZUV4
aXRUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0
aGUgZ2l2ZW4gZmlsZSBleGlzdHMuCisgIHN0YXRpYyBib29sIEZpbGVFeGlzdHMoY29uc3QgY2hh
ciogZmlsZXBhdGgpIHsKKyAgICBTdGF0U3RydWN0IHN0YXQ7CisgICAgcmV0dXJuIFN0YXQoZmls
ZXBhdGgsICZzdGF0KSA9PSAwOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIFByZW1hdHVyZUV4aXRU
ZXN0KCkgeworICAgIHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8gPSBHZXRFbnYoIlRFU1RfUFJF
TUFUVVJFX0VYSVRfRklMRSIpOworCisgICAgLy8gTm9ybWFsaXplIE5VTEwgdG8gIiIgZm9yIGVh
c2Ugb2YgaGFuZGxpbmcuCisgICAgaWYgKHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8gPT0gTlVM
TCkgeworICAgICAgcHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXyA9ICIiOworICAgIH0KKyAgfQor
CisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHByZW1hdHVyZS1leGl0IGZpbGUgZXhpc3RzLgor
ICBib29sIFByZW1hdHVyZUV4aXRGaWxlRXhpc3RzKCkgY29uc3QgeworICAgIHJldHVybiBGaWxl
RXhpc3RzKHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8pOworICB9CisKKyAgY29uc3QgY2hhciog
cHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXzsKK307CisKK3R5cGVkZWYgUHJlbWF0dXJlRXhpdFRl
c3QgUHJlbWF0dXJlRXhpdERlYXRoVGVzdDsKKworLy8gVGVzdHMgdGhhdDoKKy8vICAgLSB0aGUg
cHJlbWF0dXJlLWV4aXQgZmlsZSBleGlzdHMgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgYQorLy8g
ICAgIGRlYXRoIHRlc3QgKEVYUEVDVF9ERUFUSCopLCBhbmQKKy8vICAgLSBhIGRlYXRoIHRlc3Qg
ZG9lc24ndCBpbnRlcmZlcmUgd2l0aCB0aGUgbWFpbiB0ZXN0IHByb2Nlc3MncworLy8gICAgIGhh
bmRsaW5nIG9mIHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlLgorVEVTVF9GKFByZW1hdHVyZUV4aXRE
ZWF0aFRlc3QsIEZpbGVFeGlzdHNEdXJpbmdFeGVjdXRpb25PZkRlYXRoVGVzdCkgeworICBpZiAo
KnByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8gPT0gJ1wwJykgeworICAgIHJldHVybjsKKyAgfQor
CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoeworICAgICAgLy8gSWYgdGhlIGZpbGUgZXhp
c3RzLCBjcmFzaCB0aGUgcHJvY2VzcyBzdWNoIHRoYXQgdGhlIG1haW4gdGVzdAorICAgICAgLy8g
cHJvY2VzcyB3aWxsIGNhdGNoIHRoZSAoZXhwZWN0ZWQpIGNyYXNoIGFuZCByZXBvcnQgYSBzdWNj
ZXNzOworICAgICAgLy8gb3RoZXJ3aXNlIGRvbid0IGNyYXNoLCB3aGljaCB3aWxsIGNhdXNlIHRo
ZSBtYWluIHRlc3QgcHJvY2VzcworICAgICAgLy8gdG8gcmVwb3J0IHRoYXQgdGhlIGRlYXRoIHRl
c3QgaGFzIGZhaWxlZC4KKyAgICAgIGlmIChQcmVtYXR1cmVFeGl0RmlsZUV4aXN0cygpKSB7Cisg
ICAgICAgIGV4aXQoMSk7CisgICAgICB9CisgICAgfSwgIiIpOworfQorCisvLyBUZXN0cyB0aGF0
IHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlIGV4aXN0cyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiBh
CisvLyBub3JtYWwgKG5vbi1kZWF0aCkgdGVzdC4KK1RFU1RfRihQcmVtYXR1cmVFeGl0VGVzdCwg
UHJlbWF0dXJlRXhpdEZpbGVFeGlzdHNEdXJpbmdUZXN0RXhlY3V0aW9uKSB7CisgIGlmICgqcHJl
bWF0dXJlX2V4aXRfZmlsZV9wYXRoXyA9PSAnXDAnKSB7CisgICAgcmV0dXJuOworICB9CisKKyAg
RVhQRUNUX1RSVUUoUHJlbWF0dXJlRXhpdEZpbGVFeGlzdHMoKSkKKyAgICAgIDw8ICIgZmlsZSAi
IDw8IHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8KKyAgICAgIDw8ICIgc2hvdWxkIGV4aXN0IGR1
cmluZyB0ZXN0IGV4ZWN1dGlvbiwgYnV0IGRvZXNuJ3QuIjsKK30KKworfSAgLy8gbmFtZXNwYWNl
CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICBJbml0R29vZ2xlVGVzdCgm
YXJnYywgYXJndik7CisgIGNvbnN0IGludCBleGl0X2NvZGUgPSBSVU5fQUxMX1RFU1RTKCk7CisK
KyAgLy8gVGVzdCB0aGF0IHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlIGlzIGRlbGV0ZWQgdXBvbiBy
ZXR1cm4gZnJvbQorICAvLyBSVU5fQUxMX1RFU1RTKCkuCisgIGNvbnN0IGNoYXIqIGNvbnN0IGZp
bGVwYXRoID0gR2V0RW52KCJURVNUX1BSRU1BVFVSRV9FWElUX0ZJTEUiKTsKKyAgaWYgKGZpbGVw
YXRoICE9IE5VTEwgJiYgKmZpbGVwYXRoICE9ICdcMCcpIHsKKyAgICBpZiAoUHJlbWF0dXJlRXhp
dFRlc3Q6OkZpbGVFeGlzdHMoZmlsZXBhdGgpKSB7CisgICAgICBwcmludGYoCisgICAgICAgICAg
IkZpbGUgJXMgc2hvdWxkbid0IGV4aXN0IGFmdGVyIHRoZSB0ZXN0IHByb2dyYW0gZmluaXNoZXMs
IGJ1dCBkb2VzLiIsCisgICAgICAgICAgZmlsZXBhdGgpOworICAgICAgcmV0dXJuIDE7CisgICAg
fQorICB9CisKKyAgcmV0dXJuIGV4aXRfY29kZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJvZF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2MKaW5kZXggYmMzMjAxZDBmMjRhZTk4ZWQwNjJj
N2I4YzlmNDRkN2RmZTZkN2M5Ni4uZWRlODFhMGQxN2EwMmM4NTNlZDIyMzRlYzg4ZmU4Mjc3MTgw
YTM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcm9k
X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcm9kX3Rl
c3QuY2MKQEAgLTI2LDEzICsyNiwxMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlv
bmcgV2FuKQotLy8KLS8vIFVuaXQgdGVzdCBmb3IgaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmgu
CisvLyBVbml0IHRlc3QgZm9yIGd0ZXN0X3Byb2QuaC4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+Ci0jaW5jbHVkZSAidGVzdC9wcm9kdWN0aW9uLmgiCisjaW5jbHVkZSAicHJvZHVjdGlvbi5o
IgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIC8vIFRlc3RzIHRoYXQgcHJpdmF0ZSBtZW1i
ZXJzIGNhbiBiZSBhY2Nlc3NlZCBmcm9tIGEgVEVTVCBkZWNsYXJlZCBhcwogLy8gYSBmcmllbmQg
b2YgdGhlIGNsYXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9yZXBlYXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
cmVwZWF0X3Rlc3QuY2MKaW5kZXggZGY2ODY4YjgzMDI5NjEyNWEyN2M3ZjM3ZjkzMTZjZWQ0ZWQ4
MmQ1NC4uMWU4ZjQ5OWJiOWRlM2QxNGJjYjNiYjFhNjQxYzA2ZDdhMTI1MGFkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9yZXBlYXRfdGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3JlcGVhdF90ZXN0LmNjCkBAIC0y
NiwyMyArMjYsMTQgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIAog
Ly8gVGVzdHMgdGhlIC0tZ3Rlc3RfcmVwZWF0PW51bWJlciBmbGFnLgogCiAjaW5jbHVkZSA8c3Rk
bGliLmg+CiAjaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQot
Ly8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xl
IFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWlu
dGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVy
IGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVu
dGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNk
ZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgog
I2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1F
TlRBVElPTl8KIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC02OSwxMyArNjAsMTMgQEAgbmFt
ZXNwYWNlIHsKICAgICAgICAgICAgICAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBhY3R1YWxfdmFs
IDw8ICJcbiJcCiAgICAgICAgICAgICAgICAgICA8PCAiRXhwZWN0ZWQ6ICIgI2V4cGVjdGVkICJc
biJcCiAgICAgICAgICAgICAgICAgICA8PCAiV2hpY2ggaXM6ICIgPDwgZXhwZWN0ZWRfdmFsIDw8
ICJcbiI7XAotICAgICAgYWJvcnQoKTtcCisgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3Np
eDo6QWJvcnQoKTtcCiAgICAgfVwKLSAgfSB3aGlsZSg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdh
eXNGYWxzZSgpKQorICB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgp
KQogCiAKIC8vIFVzZWQgZm9yIHZlcmlmeWluZyB0aGF0IGdsb2JhbCBlbnZpcm9ubWVudCBzZXQt
dXAgYW5kIHRlYXItZG93biBhcmUKLS8vIGluc2lkZSB0aGUgZ3Rlc3RfcmVwZWF0IGxvb3AuCisv
LyBpbnNpZGUgdGhlIC0tZ3Rlc3RfcmVwZWF0IGxvb3AuCiAKIGludCBnX2Vudmlyb25tZW50X3Nl
dF91cF9jb3VudCA9IDA7CiBpbnQgZ19lbnZpcm9ubWVudF90ZWFyX2Rvd25fY291bnQgPSAwOwpA
QCAtMTEzLDEzICsxMDQsMTIgQEAgVEVTVChCYXJEZWF0aFRlc3QsIFRocmVhZFNhZmVBbmRGYXN0
KSB7CiAgIGdfZGVhdGhfdGVzdF9jb3VudCsrOwogCiAgIEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9z
dHlsZSkgPSAidGhyZWFkc2FmZSI7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoYWJvcnQo
KSwgIiIpOworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDo6dGVzdGluZzo6aW50ZXJuYWw6
OnBvc2l4OjpBYm9ydCgpLCAiIik7CiAKICAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9
ICJmYXN0IjsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChhYm9ydCgpLCAiIik7CisgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OkFib3J0
KCksICIiKTsKIH0KIAotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiBpbnQgZ19wYXJhbV90ZXN0
X2NvdW50ID0gMDsKIAogY29uc3QgaW50IGtOdW1iZXJPZlBhcmFtVGVzdHMgPSAxMDsKQEAgLTEy
NywxNSArMTE3LDEzIEBAIGNvbnN0IGludCBrTnVtYmVyT2ZQYXJhbVRlc3RzID0gMTA7CiBjbGFz
cyBNeVBhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4ge307CiAK
IFRFU1RfUChNeVBhcmFtVGVzdCwgU2hvdWxkUGFzcykgewotICAvLyBUT0RPKHZsYWRsQGdvb2ds
ZS5jb20pOiBNYWtlIHBhcmFtZXRlciB2YWx1ZSBjaGVja2luZyByb2J1c3QKLSAgLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgV1JUIG9yZGVyIG9mIHRlc3RzLgorICAvLyBGSVhNRTogTWFrZSBw
YXJhbWV0ZXIgdmFsdWUgY2hlY2tpbmcgcm9idXN0IFdSVCBvcmRlciBvZiB0ZXN0cy4KICAgR1RF
U1RfQ0hFQ0tfSU5UX0VRXyhnX3BhcmFtX3Rlc3RfY291bnQgJSBrTnVtYmVyT2ZQYXJhbVRlc3Rz
LCBHZXRQYXJhbSgpKTsKICAgZ19wYXJhbV90ZXN0X2NvdW50Kys7CiB9CiBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUChNeVBhcmFtU2VxdWVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBNeVBh
cmFtVGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlJhbmdlKDAsIGtOdW1i
ZXJPZlBhcmFtVGVzdHMpKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIAogLy8g
UmVzZXRzIHRoZSBjb3VudCBmb3IgZWFjaCB0ZXN0Lgogdm9pZCBSZXNldENvdW50cygpIHsKQEAg
LTE0NCw5ICsxMzIsNyBAQCB2b2lkIFJlc2V0Q291bnRzKCkgewogICBnX3Nob3VsZF9mYWlsX2Nv
dW50ID0gMDsKICAgZ19zaG91bGRfcGFzc19jb3VudCA9IDA7CiAgIGdfZGVhdGhfdGVzdF9jb3Vu
dCA9IDA7Ci0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgZ19wYXJhbV90ZXN0X2NvdW50ID0g
MDsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIH0KIAogLy8gQ2hlY2tzIHRoYXQg
dGhlIGNvdW50IGZvciBlYWNoIHRlc3QgaXMgZXhwZWN0ZWQuCkBAIC0xNTYsOSArMTQyLDcgQEAg
dm9pZCBDaGVja0NvdW50cyhpbnQgZXhwZWN0ZWQpIHsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhl
eHBlY3RlZCwgZ19zaG91bGRfZmFpbF9jb3VudCk7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8oZXhw
ZWN0ZWQsIGdfc2hvdWxkX3Bhc3NfY291bnQpOwogICBHVEVTVF9DSEVDS19JTlRfRVFfKGV4cGVj
dGVkLCBnX2RlYXRoX3Rlc3RfY291bnQpOwotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiAgIEdU
RVNUX0NIRUNLX0lOVF9FUV8oZXhwZWN0ZWQgKiBrTnVtYmVyT2ZQYXJhbVRlc3RzLCBnX3BhcmFt
X3Rlc3RfY291bnQpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogfQogCiAvLyBU
ZXN0cyB0aGUgYmVoYXZpb3Igb2YgR29vZ2xlIFRlc3Qgd2hlbiAtLWd0ZXN0X3JlcGVhdCBpcyBu
b3Qgc3BlY2lmaWVkLgpAQCAtMjAxLDkgKzE4NSw3IEBAIHZvaWQgVGVzdFJlcGVhdFdpdGhGaWx0
ZXJGb3JTdWNjZXNzZnVsVGVzdHMoaW50IHJlcGVhdCkgewogICBHVEVTVF9DSEVDS19JTlRfRVFf
KDAsIGdfc2hvdWxkX2ZhaWxfY291bnQpOwogICBHVEVTVF9DSEVDS19JTlRfRVFfKHJlcGVhdCwg
Z19zaG91bGRfcGFzc19jb3VudCk7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0LCBnX2Rl
YXRoX3Rlc3RfY291bnQpOwotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiAgIEdURVNUX0NIRUNL
X0lOVF9FUV8ocmVwZWF0ICoga051bWJlck9mUGFyYW1UZXN0cywgZ19wYXJhbV90ZXN0X2NvdW50
KTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIH0KIAogLy8gVGVzdHMgdXNpbmcg
LS1ndGVzdF9yZXBlYXQgd2hlbiAtLWd0ZXN0X2ZpbHRlciBzcGVjaWZpZXMgYSBzZXQgb2YKQEAg
LTIxOSwxNSArMjAxLDE0IEBAIHZvaWQgVGVzdFJlcGVhdFdpdGhGaWx0ZXJGb3JGYWlsZWRUZXN0
cyhpbnQgcmVwZWF0KSB7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0LCBnX3Nob3VsZF9m
YWlsX2NvdW50KTsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXygwLCBnX3Nob3VsZF9wYXNzX2NvdW50
KTsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXygwLCBnX2RlYXRoX3Rlc3RfY291bnQpOwotI2lmIEdU
RVNUX0hBU19QQVJBTV9URVNUCiAgIEdURVNUX0NIRUNLX0lOVF9FUV8oMCwgZ19wYXJhbV90ZXN0
X2NvdW50KTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIH0KIAogfSAgLy8gbmFt
ZXNwYWNlCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewogICB0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKICAgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVu
dmlyb25tZW50KG5ldyBNeUVudmlyb25tZW50KTsKIAogICBUZXN0UmVwZWF0VW5zcGVjaWZpZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZs
ZV90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rl
c3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDMwZDAzMDNkMTkzNTU0YTVmZDBi
OWIxZjZhNTFlZjdkMDlmMzA2MTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rl
c3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMjUgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCi0jCi0jIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRp
b24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJWZXJpZmllcyB0aGF0IHRlc3Qgc2h1ZmZsaW5nIHdv
cmtzLiIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwot
Ci1pbXBvcnQgb3MKLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi0KLSMgQ29tbWFuZCB0byBydW4g
dGhlIGd0ZXN0X3NodWZmbGVfdGVzdF8gcHJvZ3JhbS4KLUNPTU1BTkQgPSBndGVzdF90ZXN0X3V0
aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ3Rlc3Rfc2h1ZmZsZV90ZXN0XycpCi0KLSMgVGhl
IGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBzaGFyZGluZy4KLVRPVEFMX1NIQVJEU19F
TlZfVkFSID0gJ0dURVNUX1RPVEFMX1NIQVJEUycKLVNIQVJEX0lOREVYX0VOVl9WQVIgPSAnR1RF
U1RfU0hBUkRfSU5ERVgnCi0KLVRFU1RfRklMVEVSID0gJ0EqLkE6QSouQjpDKicKLQotQUxMX1RF
U1RTID0gW10KLUFDVElWRV9URVNUUyA9IFtdCi1GSUxURVJFRF9URVNUUyA9IFtdCi1TSEFSREVE
X1RFU1RTID0gW10KLQotU0hVRkZMRURfQUxMX1RFU1RTID0gW10KLVNIVUZGTEVEX0FDVElWRV9U
RVNUUyA9IFtdCi1TSFVGRkxFRF9GSUxURVJFRF9URVNUUyA9IFtdCi1TSFVGRkxFRF9TSEFSREVE
X1RFU1RTID0gW10KLQotCi1kZWYgQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKCk6Ci0gIHJldHVy
biAnLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cycKLQotCi1kZWYgRmlsdGVyRmxhZyh0
ZXN0X2ZpbHRlcik6Ci0gIHJldHVybiAnLS1ndGVzdF9maWx0ZXI9JXMnICUgKHRlc3RfZmlsdGVy
LCkKLQotCi1kZWYgUmVwZWF0RmxhZyhuKToKLSAgcmV0dXJuICctLWd0ZXN0X3JlcGVhdD0lcycg
JSAobiwpCi0KLQotZGVmIFNodWZmbGVGbGFnKCk6Ci0gIHJldHVybiAnLS1ndGVzdF9zaHVmZmxl
JwotCi0KLWRlZiBSYW5kb21TZWVkRmxhZyhuKToKLSAgcmV0dXJuICctLWd0ZXN0X3JhbmRvbV9z
ZWVkPSVzJyAlIChuLCkKLQotCi1kZWYgUnVuQW5kUmV0dXJuT3V0cHV0KGV4dHJhX2VudiwgYXJn
cyk6Ci0gICIiIlJ1bnMgdGhlIHRlc3QgcHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgb3V0cHV0LiIi
IgotCi0gIGVudmlyb25fY29weSA9IG9zLmVudmlyb24uY29weSgpCi0gIGVudmlyb25fY29weS51
cGRhdGUoZXh0cmFfZW52KQotCi0gIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3Mo
W0NPTU1BTkRdICsgYXJncywgZW52PWVudmlyb25fY29weSkub3V0cHV0Ci0KLQotZGVmIEdldFRl
c3RzRm9yQWxsSXRlcmF0aW9ucyhleHRyYV9lbnYsIGFyZ3MpOgotICAiIiJSdW5zIHRoZSB0ZXN0
IHByb2dyYW0gYW5kIHJldHVybnMgYSBsaXN0IG9mIHRlc3QgbGlzdHMuCi0KLSAgQXJnczoKLSAg
ICBleHRyYV9lbnY6IGEgbWFwIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHRoZWlyIHZh
bHVlcwotICAgIGFyZ3M6IGNvbW1hbmQgbGluZSBmbGFncyB0byBwYXNzIHRvIGd0ZXN0X3NodWZm
bGVfdGVzdF8KLQotICBSZXR1cm5zOgotICAgIEEgbGlzdCB3aGVyZSB0aGUgaS10aCBlbGVtZW50
IGlzIHRoZSBsaXN0IG9mIHRlc3RzIHJ1biBpbiB0aGUgaS10aAotICAgIHRlc3QgaXRlcmF0aW9u
LgotICAiIiIKLQotICB0ZXN0X2l0ZXJhdGlvbnMgPSBbXQotICBmb3IgbGluZSBpbiBSdW5BbmRS
ZXR1cm5PdXRwdXQoZXh0cmFfZW52LCBhcmdzKS5zcGxpdCgnXG4nKToKLSAgICBpZiBsaW5lLnN0
YXJ0c3dpdGgoJy0tLS0nKToKLSAgICAgIHRlc3RzID0gW10KLSAgICAgIHRlc3RfaXRlcmF0aW9u
cy5hcHBlbmQodGVzdHMpCi0gICAgZWxpZiBsaW5lLnN0cmlwKCk6Ci0gICAgICB0ZXN0cy5hcHBl
bmQobGluZS5zdHJpcCgpKSAgIyAnVGVzdENhc2VOYW1lLlRlc3ROYW1lJwotCi0gIHJldHVybiB0
ZXN0X2l0ZXJhdGlvbnMKLQotCi1kZWYgR2V0VGVzdENhc2VzKHRlc3RzKToKLSAgIiIiUmV0dXJu
cyBhIGxpc3Qgb2YgdGVzdCBjYXNlcyBpbiB0aGUgZ2l2ZW4gZnVsbCB0ZXN0IG5hbWVzLgotCi0g
IEFyZ3M6Ci0gICAgdGVzdHM6IGEgbGlzdCBvZiBmdWxsIHRlc3QgbmFtZXMKLQotICBSZXR1cm5z
OgotICAgIEEgbGlzdCBvZiB0ZXN0IGNhc2VzIGZyb20gJ3Rlc3RzJywgaW4gdGhlaXIgb3JpZ2lu
YWwgb3JkZXIuCi0gICAgQ29uc2VjdXRpdmUgZHVwbGljYXRlcyBhcmUgcmVtb3ZlZC4KLSAgIiIi
Ci0KLSAgdGVzdF9jYXNlcyA9IFtdCi0gIGZvciB0ZXN0IGluIHRlc3RzOgotICAgIHRlc3RfY2Fz
ZSA9IHRlc3Quc3BsaXQoJy4nKVswXQotICAgIGlmIG5vdCB0ZXN0X2Nhc2UgaW4gdGVzdF9jYXNl
czoKLSAgICAgIHRlc3RfY2FzZXMuYXBwZW5kKHRlc3RfY2FzZSkKLQotICByZXR1cm4gdGVzdF9j
YXNlcwotCi0KLWRlZiBDYWxjdWxhdGVUZXN0TGlzdHMoKToKLSAgIiIiQ2FsY3VsYXRlcyB0aGUg
bGlzdCBvZiB0ZXN0cyBydW4gdW5kZXIgZGlmZmVyZW50IGZsYWdzLiIiIgotCi0gIGlmIG5vdCBB
TExfVEVTVFM6Ci0gICAgQUxMX1RFU1RTLmV4dGVuZCgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJ
dGVyYXRpb25zKHt9LCBbQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKCldKVswXSkKLQotICBpZiBu
b3QgQUNUSVZFX1RFU1RTOgotICAgIEFDVElWRV9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJ
dGVyYXRpb25zKHt9LCBbXSlbMF0pCi0KLSAgaWYgbm90IEZJTFRFUkVEX1RFU1RTOgotICAgIEZJ
TFRFUkVEX1RFU1RTLmV4dGVuZCgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHt9
LCBbRmlsdGVyRmxhZyhURVNUX0ZJTFRFUildKVswXSkKLQotICBpZiBub3QgU0hBUkRFRF9URVNU
UzoKLSAgICBTSEFSREVEX1RFU1RTLmV4dGVuZCgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVy
YXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcxJ30sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbXSlbMF0pCi0KLSAgaWYgbm90IFNIVUZGTEVEX0FMTF9URVNUUzoK
LSAgICBTSFVGRkxFRF9BTExfVEVTVFMuZXh0ZW5kKEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygK
LSAgICAgICAge30sIFtBbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcoKSwgU2h1ZmZsZUZsYWcoKSwg
UmFuZG9tU2VlZEZsYWcoMSldKVswXSkKLQotICBpZiBub3QgU0hVRkZMRURfQUNUSVZFX1RFU1RT
OgotICAgIFNIVUZGTEVEX0FDVElWRV9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRp
b25zKAotICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSlbMF0p
Ci0KLSAgaWYgbm90IFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTOgotICAgIFNIVUZGTEVEX0ZJTFRF
UkVEX1RFU1RTLmV4dGVuZChHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBb
U2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSksIEZpbHRlckZsYWcoVEVTVF9GSUxURVIp
XSlbMF0pCi0KLSAgaWYgbm90IFNIVUZGTEVEX1NIQVJERURfVEVTVFM6Ci0gICAgU0hVRkZMRURf
U0hBUkRFRF9URVNUUy5leHRlbmQoCi0gICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7
VE9UQUxfU0hBUkRTX0VOVl9WQVI6ICczJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMSd9LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSlbMF0pCi0KLQotY2xh
c3MgR1Rlc3RTaHVmZmxlVW5pdFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gICIi
IlRlc3RzIHRlc3Qgc2h1ZmZsaW5nLiIiIgotCi0gIGRlZiBzZXRVcChzZWxmKToKLSAgICBDYWxj
dWxhdGVUZXN0TGlzdHMoKQotCi0gIGRlZiB0ZXN0U2h1ZmZsZVByZXNlcnZlc051bWJlck9mVGVz
dHMoc2VsZik6Ci0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oQUxMX1RFU1RTKSwgbGVuKFNIVUZG
TEVEX0FMTF9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oQUNUSVZFX1RFU1RTKSwg
bGVuKFNIVUZGTEVEX0FDVElWRV9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oRklM
VEVSRURfVEVTVFMpLCBsZW4oU0hVRkZMRURfRklMVEVSRURfVEVTVFMpKQotICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKFNIQVJERURfVEVTVFMpLCBsZW4oU0hVRkZMRURfU0hBUkRFRF9URVNUUykp
Ci0KLSAgZGVmIHRlc3RTaHVmZmxlQ2hhbmdlc1Rlc3RPcmRlcihzZWxmKToKLSAgICBzZWxmLmFz
c2VydF8oU0hVRkZMRURfQUxMX1RFU1RTICE9IEFMTF9URVNUUywgU0hVRkZMRURfQUxMX1RFU1RT
KQotICAgIHNlbGYuYXNzZXJ0XyhTSFVGRkxFRF9BQ1RJVkVfVEVTVFMgIT0gQUNUSVZFX1RFU1RT
LCBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMpCi0gICAgc2VsZi5hc3NlcnRfKFNIVUZGTEVEX0ZJTFRF
UkVEX1RFU1RTICE9IEZJTFRFUkVEX1RFU1RTLAotICAgICAgICAgICAgICAgICBTSFVGRkxFRF9G
SUxURVJFRF9URVNUUykKLSAgICBzZWxmLmFzc2VydF8oU0hVRkZMRURfU0hBUkRFRF9URVNUUyAh
PSBTSEFSREVEX1RFU1RTLAotICAgICAgICAgICAgICAgICBTSFVGRkxFRF9TSEFSREVEX1RFU1RT
KQotCi0gIGRlZiB0ZXN0U2h1ZmZsZUNoYW5nZXNUZXN0Q2FzZU9yZGVyKHNlbGYpOgotICAgIHNl
bGYuYXNzZXJ0XyhHZXRUZXN0Q2FzZXMoU0hVRkZMRURfQUxMX1RFU1RTKSAhPSBHZXRUZXN0Q2Fz
ZXMoQUxMX1RFU1RTKSwKLSAgICAgICAgICAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX0FM
TF9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRfKAotICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZM
RURfQUNUSVZFX1RFU1RTKSAhPSBHZXRUZXN0Q2FzZXMoQUNUSVZFX1RFU1RTKSwKLSAgICAgICAg
R2V0VGVzdENhc2VzKFNIVUZGTEVEX0FDVElWRV9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRfKAot
ICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfRklMVEVSRURfVEVTVFMpICE9IEdldFRlc3RD
YXNlcyhGSUxURVJFRF9URVNUUyksCi0gICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9GSUxU
RVJFRF9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRfKAotICAgICAgICBHZXRUZXN0Q2FzZXMoU0hV
RkZMRURfU0hBUkRFRF9URVNUUykgIT0gR2V0VGVzdENhc2VzKFNIQVJERURfVEVTVFMpLAotICAg
ICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfU0hBUkRFRF9URVNUUykpCi0KLSAgZGVmIHRlc3RT
aHVmZmxlRG9lc05vdFJlcGVhdFRlc3Qoc2VsZik6Ci0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURf
QUxMX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9BTExfVEVTVFMu
Y291bnQodGVzdCksCi0gICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhh
biBvbmNlJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RT
OgotICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMuY291bnQo
dGVzdCksCi0gICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNl
JyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFM6Ci0g
ICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTLmNvdW50KHRl
c3QpLAotICAgICAgICAgICAgICAgICAgICAgICAnJXMgYXBwZWFycyBtb3JlIHRoYW4gb25jZScg
JSAodGVzdCwpKQotICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFM6Ci0gICAg
ICBzZWxmLmFzc2VydEVxdWFsKDEsIFNIVUZGTEVEX1NIQVJERURfVEVTVFMuY291bnQodGVzdCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0
ZXN0LCkpCi0KLSAgZGVmIHRlc3RTaHVmZmxlRG9lc05vdENyZWF0ZU5ld1Rlc3Qoc2VsZik6Ci0g
ICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUxMX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRl
c3QgaW4gQUxMX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCi0gICAg
Zm9yIHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRl
c3QgaW4gQUNUSVZFX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCi0g
ICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2Vy
dF8odGVzdCBpbiBGSUxURVJFRF9URVNUUywgJyVzIGlzIGFuIGludmFsaWQgdGVzdCcgJSAodGVz
dCwpKQotICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFM6Ci0gICAgICBzZWxm
LmFzc2VydF8odGVzdCBpbiBTSEFSREVEX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAl
ICh0ZXN0LCkpCi0KLSAgZGVmIHRlc3RTaHVmZmxlSW5jbHVkZXNBbGxUZXN0cyhzZWxmKToKLSAg
ICBmb3IgdGVzdCBpbiBBTExfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVG
RkxFRF9BTExfVEVTVFMsICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3Qg
aW4gQUNUSVZFX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfQUNU
SVZFX1RFU1RTLCAnJXMgaXMgbWlzc2luZycgJSAodGVzdCwpKQotICAgIGZvciB0ZXN0IGluIEZJ
TFRFUkVEX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfRklMVEVS
RURfVEVTVFMsICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hB
UkRFRF9URVNUUzoKLSAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURf
VEVTVFMsICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCi0KLSAgZGVmIHRlc3RTaHVmZmxlTGVh
dmVzRGVhdGhUZXN0c0F0RnJvbnQoc2VsZik6Ci0gICAgbm9uX2RlYXRoX3Rlc3RfZm91bmQgPSBG
YWxzZQotICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX0FDVElWRV9URVNUUzoKLSAgICAgIGlmICdE
ZWF0aFRlc3QuJyBpbiB0ZXN0OgotICAgICAgICBzZWxmLmFzc2VydF8obm90IG5vbl9kZWF0aF90
ZXN0X2ZvdW5kLAotICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgYWZ0ZXIgYSBub24t
ZGVhdGggdGVzdCcgJSAodGVzdCwpKQotICAgICAgZWxzZToKLSAgICAgICAgbm9uX2RlYXRoX3Rl
c3RfZm91bmQgPSBUcnVlCi0KLSAgZGVmIF9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUo
c2VsZiwgdGVzdHMpOgotICAgIHRlc3RfY2FzZXMgPSBbXQotICAgIGZvciB0ZXN0IGluIHRlc3Rz
OgotICAgICAgW3Rlc3RfY2FzZSwgX10gPSB0ZXN0LnNwbGl0KCcuJykKLSAgICAgIGlmIHRlc3Rf
Y2FzZXMgYW5kIHRlc3RfY2FzZXNbLTFdICE9IHRlc3RfY2FzZToKLSAgICAgICAgdGVzdF9jYXNl
cy5hcHBlbmQodGVzdF9jYXNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHRlc3RfY2Fz
ZXMuY291bnQodGVzdF9jYXNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnVGVzdCBjYXNl
ICVzIGlzIG5vdCBncm91cGVkIHRvZ2V0aGVyIGluICVzJyAlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgKHRlc3RfY2FzZSwgdGVzdHMpKQotCi0gIGRlZiB0ZXN0U2h1ZmZsZURvZXNOb3RJbnRl
cmxlYXZlVGVzdENhc2VzKHNlbGYpOgotICAgIHNlbGYuX1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50
ZXJsZWF2ZShTSFVGRkxFRF9BTExfVEVTVFMpCi0gICAgc2VsZi5fVmVyaWZ5VGVzdENhc2VzRG9O
b3RJbnRlcmxlYXZlKFNIVUZGTEVEX0FDVElWRV9URVNUUykKLSAgICBzZWxmLl9WZXJpZnlUZXN0
Q2FzZXNEb05vdEludGVybGVhdmUoU0hVRkZMRURfRklMVEVSRURfVEVTVFMpCi0gICAgc2VsZi5f
VmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRlcmxlYXZlKFNIVUZGTEVEX1NIQVJERURfVEVTVFMpCi0K
LSAgZGVmIHRlc3RTaHVmZmxlUmVzdG9yZXNPcmRlckFmdGVyRWFjaEl0ZXJhdGlvbihzZWxmKToK
LSAgICAjIEdldCB0aGUgdGVzdCBsaXN0cyBpbiBhbGwgMyBpdGVyYXRpb25zLCB1c2luZyByYW5k
b20gc2VlZCAxLCAyLAotICAgICMgYW5kIDMgcmVzcGVjdGl2ZWx5LiAgR29vZ2xlIFRlc3QgcGlj
a3MgYSBkaWZmZXJlbnQgc2VlZCBpbiBlYWNoCi0gICAgIyBpdGVyYXRpb24sIGFuZCB0aGlzIHRl
c3QgZGVwZW5kcyBvbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbgotICAgICMgcGlja2luZyBz
dWNjZXNzaXZlIG51bWJlcnMuICBUaGlzIGRlcGVuZGVuY3kgaXMgbm90IGlkZWFsLCBidXQKLSAg
ICAjIG1ha2VzIHRoZSB0ZXN0IG11Y2ggZWFzaWVyIHRvIHdyaXRlLgotICAgIFt0ZXN0c19pbl9p
dGVyYXRpb24xLCB0ZXN0c19pbl9pdGVyYXRpb24yLCB0ZXN0c19pbl9pdGVyYXRpb24zXSA9ICgK
LSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAotICAgICAgICAgICAge30sIFtTaHVm
ZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKSwgUmVwZWF0RmxhZygzKV0pKQotCi0gICAgIyBN
YWtlIHN1cmUgcnVubmluZyB0aGUgdGVzdHMgd2l0aCByYW5kb20gc2VlZCAxIGdldHMgdGhlIHNh
bWUKLSAgICAjIG9yZGVyIGFzIGluIGl0ZXJhdGlvbiAxIGFib3ZlLgotICAgIFt0ZXN0c193aXRo
X3NlZWQxXSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKLSAgICAgICAge30sIFtTaHVmZmxl
RmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0pCi0gICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0c19p
bl9pdGVyYXRpb24xLCB0ZXN0c193aXRoX3NlZWQxKQotCi0gICAgIyBNYWtlIHN1cmUgcnVubmlu
ZyB0aGUgdGVzdHMgd2l0aCByYW5kb20gc2VlZCAyIGdldHMgdGhlIHNhbWUKLSAgICAjIG9yZGVy
IGFzIGluIGl0ZXJhdGlvbiAyIGFib3ZlLiAgU3VjY2VzcyBtZWFucyB0aGF0IEdvb2dsZSBUZXN0
Ci0gICAgIyBjb3JyZWN0bHkgcmVzdG9yZXMgdGhlIHRlc3Qgb3JkZXIgYmVmb3JlIHJlLXNodWZm
bGluZyBhdCB0aGUKLSAgICAjIGJlZ2lubmluZyBvZiBpdGVyYXRpb24gMi4KLSAgICBbdGVzdHNf
d2l0aF9zZWVkMl0gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBbU2h1
ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMildKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVz
dHNfaW5faXRlcmF0aW9uMiwgdGVzdHNfd2l0aF9zZWVkMikKLQotICAgICMgTWFrZSBzdXJlIHJ1
bm5pbmcgdGhlIHRlc3RzIHdpdGggcmFuZG9tIHNlZWQgMyBnZXRzIHRoZSBzYW1lCi0gICAgIyBv
cmRlciBhcyBpbiBpdGVyYXRpb24gMyBhYm92ZS4gIFN1Y2Nlc3MgbWVhbnMgdGhhdCBHb29nbGUg
VGVzdAotICAgICMgY29ycmVjdGx5IHJlc3RvcmVzIHRoZSB0ZXN0IG9yZGVyIGJlZm9yZSByZS1z
aHVmZmxpbmcgYXQgdGhlCi0gICAgIyBiZWdpbm5pbmcgb2YgaXRlcmF0aW9uIDMuCi0gICAgW3Rl
c3RzX3dpdGhfc2VlZDNdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAotICAgICAgICB7fSwg
W1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDMpXSkKLSAgICBzZWxmLmFzc2VydEVxdWFs
KHRlc3RzX2luX2l0ZXJhdGlvbjMsIHRlc3RzX3dpdGhfc2VlZDMpCi0KLSAgZGVmIHRlc3RTaHVm
ZmxlR2VuZXJhdGVzTmV3T3JkZXJJbkVhY2hJdGVyYXRpb24oc2VsZik6Ci0gICAgW3Rlc3RzX2lu
X2l0ZXJhdGlvbjEsIHRlc3RzX2luX2l0ZXJhdGlvbjIsIHRlc3RzX2luX2l0ZXJhdGlvbjNdID0g
KAotICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgICAgICB7fSwgW1No
dWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpLCBSZXBlYXRGbGFnKDMpXSkpCi0KLSAgICBz
ZWxmLmFzc2VydF8odGVzdHNfaW5faXRlcmF0aW9uMSAhPSB0ZXN0c19pbl9pdGVyYXRpb24yLAot
ICAgICAgICAgICAgICAgICB0ZXN0c19pbl9pdGVyYXRpb24xKQotICAgIHNlbGYuYXNzZXJ0Xyh0
ZXN0c19pbl9pdGVyYXRpb24xICE9IHRlc3RzX2luX2l0ZXJhdGlvbjMsCi0gICAgICAgICAgICAg
ICAgIHRlc3RzX2luX2l0ZXJhdGlvbjEpCi0gICAgc2VsZi5hc3NlcnRfKHRlc3RzX2luX2l0ZXJh
dGlvbjIgIT0gdGVzdHNfaW5faXRlcmF0aW9uMywKLSAgICAgICAgICAgICAgICAgdGVzdHNfaW5f
aXRlcmF0aW9uMikKLQotICBkZWYgdGVzdFNodWZmbGVTaGFyZGVkVGVzdHNQcmVzZXJ2ZXNQYXJ0
aXRpb24oc2VsZik6Ci0gICAgIyBJZiB3ZSBydW4gTSB0ZXN0cyBvbiBOIHNoYXJkcywgdGhlIHNh
bWUgTSB0ZXN0cyBzaG91bGQgYmUgcnVuIGluCi0gICAgIyB0b3RhbCwgcmVnYXJkbGVzcyBvZiB0
aGUgcmFuZG9tIHNlZWRzIHVzZWQgYnkgdGhlIHNoYXJkcy4KLSAgICBbdGVzdHMxXSA9IEdldFRl
c3RzRm9yQWxsSXRlcmF0aW9ucyh7VE9UQUxfU0hBUkRTX0VOVl9WQVI6ICczJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBUkRfSU5ERVhfRU5WX1ZBUjogJzAn
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU2h1ZmZsZUZsYWco
KSwgUmFuZG9tU2VlZEZsYWcoMSldKQotICAgIFt0ZXN0czJdID0gR2V0VGVzdHNGb3JBbGxJdGVy
YXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMSd9LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVk
RmxhZygyMCldKQotICAgIFt0ZXN0czNdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RB
TF9TSEFSRFNfRU5WX1ZBUjogJzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMid9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygyNSldKQot
ICAgIHNvcnRlZF9zaGFyZGVkX3Rlc3RzID0gdGVzdHMxICsgdGVzdHMyICsgdGVzdHMzCi0gICAg
c29ydGVkX3NoYXJkZWRfdGVzdHMuc29ydCgpCi0gICAgc29ydGVkX2FjdGl2ZV90ZXN0cyA9IFtd
Ci0gICAgc29ydGVkX2FjdGl2ZV90ZXN0cy5leHRlbmQoQUNUSVZFX1RFU1RTKQotICAgIHNvcnRl
ZF9hY3RpdmVfdGVzdHMuc29ydCgpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWRfYWN0aXZl
X3Rlc3RzLCBzb3J0ZWRfc2hhcmRlZF90ZXN0cykKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9f
JzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTNlY2Y3NzcwYTE0MTE3NjY4YjRhZGVhNmZiNmY1MDI2NjcxN2RlNy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwx
MDQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0Ogot
Ly8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0v
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0v
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ly8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gVmVyaWZp
ZXMgdGhhdCB0ZXN0IHNodWZmbGluZyB3b3Jrcy4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
Ci0KLW5hbWVzcGFjZSB7Ci0KLXVzaW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5l
cjsKLXVzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6Ok1l
c3NhZ2U7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RFdmVu
dExpc3RlbmVyczsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdEluZm87Ci11c2luZyA6OnRlc3Rpbmc6
OlVuaXRUZXN0OwotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOwotdXNpbmcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVkX3B0cjsKLQotLy8gVGhlIHRlc3QgbWV0aG9kcyBhcmUg
ZW1wdHksIGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgdGhpcyBwcm9ncmFtIGlzCi0vLyB0byBwcmlu
dCB0aGUgdGVzdCBuYW1lcyBiZWZvcmUvYWZ0ZXIgc2h1ZmZsaW5nLgotCi1jbGFzcyBBIDogcHVi
bGljIFRlc3Qge307Ci1URVNUX0YoQSwgQSkge30KLVRFU1RfRihBLCBCKSB7fQotCi1URVNUKEFE
ZWF0aFRlc3QsIEEpIHt9Ci1URVNUKEFEZWF0aFRlc3QsIEIpIHt9Ci1URVNUKEFEZWF0aFRlc3Qs
IEMpIHt9Ci0KLVRFU1QoQiwgQSkge30KLVRFU1QoQiwgQikge30KLVRFU1QoQiwgQykge30KLVRF
U1QoQiwgRElTQUJMRURfRCkge30KLVRFU1QoQiwgRElTQUJMRURfRSkge30KLQotVEVTVChCRGVh
dGhUZXN0LCBBKSB7fQotVEVTVChCRGVhdGhUZXN0LCBCKSB7fQotCi1URVNUKEMsIEEpIHt9Ci1U
RVNUKEMsIEIpIHt9Ci1URVNUKEMsIEMpIHt9Ci1URVNUKEMsIERJU0FCTEVEX0QpIHt9Ci0KLVRF
U1QoQ0RlYXRoVGVzdCwgQSkge30KLQotVEVTVChESVNBQkxFRF9ELCBBKSB7fQotVEVTVChESVNB
QkxFRF9ELCBESVNBQkxFRF9CKSB7fQotCi0vLyBUaGlzIHByaW50ZXIgcHJpbnRzIHRoZSBmdWxs
IHRlc3QgbmFtZXMgb25seSwgc3RhcnRpbmcgZWFjaCB0ZXN0Ci0vLyBpdGVyYXRpb24gd2l0aCBh
ICItLS0tIiBtYXJrZXIuCi1jbGFzcyBUZXN0TmFtZVByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0
RXZlbnRMaXN0ZW5lciB7Ci0gcHVibGljOgotICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9u
U3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qIHVuaXRfdGVzdCAqLywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCAvKiBpdGVyYXRpb24gKi8pIHsKLSAgICBwcmludGYoIi0t
LS1cbiIpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZv
JiB0ZXN0X2luZm8pIHsKLSAgICBwcmludGYoIiVzLiVzXG4iLCB0ZXN0X2luZm8udGVzdF9jYXNl
X25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7Ci0gIH0KLX07Ci0KLX0gIC8vIG5hbWVzcGFjZQot
Ci1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgSW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOwotCi0gIC8vIFJlcGxhY2VzIHRoZSBkZWZhdWx0IHByaW50ZXIgd2l0aCBUZXN0
TmFtZVByaW50ZXIsIHdoaWNoIHByaW50cwotICAvLyB0aGUgdGVzdCBuYW1lIG9ubHkuCi0gIFRl
c3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxp
c3RlbmVycygpOwotICBkZWxldGUgbGlzdGVuZXJzLlJlbGVhc2UobGlzdGVuZXJzLmRlZmF1bHRf
cmVzdWx0X3ByaW50ZXIoKSk7Ci0gIGxpc3RlbmVycy5BcHBlbmQobmV3IFRlc3ROYW1lUHJpbnRl
cik7Ci0KLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYwppbmRleCBkZTkx
ZTgwMGY1YTEzODI5OTlmYzIwMWY1Y2YzY2UwNDY0Y2FhMWNlLi4xZDk0YWM2YjNhZDlmOWY3ZGJh
ZGJmYjJiZjc0OWI4MjcxNTYwZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X3NvbGVfaGVhZGVyX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9zb2xlX2hlYWRlcl90ZXN0LmNjCkBAIC0yNiwxMyArMjYsMTIgQEAK
IC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBB
dXRob3I6IG1oZXVsZUBnb29nbGUuY29tIChNYXJrdXMgSGV1bGUpCisKIC8vCiAvLyBUaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCBpdCdzIHBvc3NpYmxlIHRvIHVzZSBHb29nbGUgVGVzdCBieSBpbmNs
dWRpbmcKIC8vIHRoZSBndGVzdC5oIGhlYWRlciBmaWxlIGFsb25lLgogCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2UgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3N0cmVzc190ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zdHJlc3NfdGVzdC5jYwpp
bmRleCBmNWFmNzhjYzZkM2YzOTVhMDBkNGQxY2U4NTk5ZmE1ZjFkZmE3NjI2Li45NWFkYTM5YzMz
N2QwZDRlY2U2ZmY1YjMyMzJkZTk2YzNkNTk4NmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3N0cmVzc190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc3RyZXNzX3Rlc3QuY2MKQEAgLTI2LDIzICsyNiwxNiBAQAog
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUZXN0cyB0aGF0IFND
T1BFRF9UUkFDRSgpIGFuZCB2YXJpb3VzIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgY2FuIGJlCiAv
LyB1c2VkIGluIGEgbGFyZ2UgbnVtYmVyIG9mIHRocmVhZHMgY29uY3VycmVudGx5LgogCi0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCi0jaW5jbHVk
ZSA8aW9zdHJlYW0+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0vLyBXZSBtdXN0IGRlZmluZSB0aGlz
IG1hY3JvIGluIG9yZGVyIHRvICNpbmNsdWRlCi0vLyBndGVzdC1pbnRlcm5hbC1pbmwuaC4gIFRo
aXMgaXMgaG93IEdvb2dsZSBUZXN0IHByZXZlbnRzIGEgdXNlciBmcm9tCi0vLyBhY2NpZGVudGFs
bHkgZGVwZW5kaW5nIG9uIGl0cyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4KLSNkZWZpbmUgR1RF
U1RfSU1QTEVNRU5UQVRJT05fIDEKICNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgi
Ci0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCiAKICNpZiBHVEVTVF9JU19USFJFQURTQUZF
CiAKQEAgLTUwLDcgKzQzLDYgQEAgbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIHsKIAog
dXNpbmcgaW50ZXJuYWw6Ok5vdGlmaWNhdGlvbjsKLXVzaW5nIGludGVybmFsOjpTdHJpbmc7CiB1
c2luZyBpbnRlcm5hbDo6VGVzdFByb3BlcnR5S2V5SXM7CiB1c2luZyBpbnRlcm5hbDo6VGhyZWFk
V2l0aFBhcmFtOwogdXNpbmcgaW50ZXJuYWw6OnNjb3BlZF9wdHI7CkBAIC02MiwxMyArNTQsMTMg
QEAgdXNpbmcgaW50ZXJuYWw6OnNjb3BlZF9wdHI7CiAvLyBIb3cgbWFueSB0aHJlYWRzIHRvIGNy
ZWF0ZT8KIGNvbnN0IGludCBrVGhyZWFkQ291bnQgPSA1MDsKIAotU3RyaW5nIElkVG9LZXkoaW50
IGlkLCBjb25zdCBjaGFyKiBzdWZmaXgpIHsKK3N0ZDo6c3RyaW5nIElkVG9LZXkoaW50IGlkLCBj
b25zdCBjaGFyKiBzdWZmaXgpIHsKICAgTWVzc2FnZSBrZXk7CiAgIGtleSA8PCAia2V5XyIgPDwg
aWQgPDwgIl8iIDw8IHN1ZmZpeDsKICAgcmV0dXJuIGtleS5HZXRTdHJpbmcoKTsKIH0KIAotU3Ry
aW5nIElkVG9TdHJpbmcoaW50IGlkKSB7CitzdGQ6OnN0cmluZyBJZFRvU3RyaW5nKGludCBpZCkg
ewogICBNZXNzYWdlIGlkX21lc3NhZ2U7CiAgIGlkX21lc3NhZ2UgPDwgaWQ7CiAgIHJldHVybiBp
ZF9tZXNzYWdlLkdldFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF90ZXN0X21hY3JvX3N0YWNrX2Zvb3RwcmludF90ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0X21hY3JvX3N0YWNrX2Zvb3RwcmludF90
ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE0OGRiMDUwMTJjYzMwZTBlZGY0YTEzNTRmZjM5MmM5MmQwMDBi
ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X3Rlc3RfbWFjcm9fc3RhY2tfZm9vdHByaW50X3Rlc3QuY2MKQEAgLTAsMCArMSw4OSBAQAorLy8g
Q29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0
cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisv
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gRWFjaCBU
RVNUKCkgZXhwYW5kcyB0byBzb21lIHN0YXRpYyByZWdpc3RyYXRpb24gbG9naWMuICBHQ0MgcHV0
cyBhbGwKKy8vIHN1Y2ggc3RhdGljIGluaXRpYWxpemF0aW9uIGxvZ2ljIGZvciBhIHRyYW5zbGF0
aW9uIHVuaXQgaW4gYSBjb21tb24sCisvLyBpbnRlcm5hbCBmdW5jdGlvbi4gIFNpbmNlIEdvb2ds
ZSdzIGJ1aWxkIHN5c3RlbSByZXN0cmljdHMgaG93IG11Y2gKKy8vIHN0YWNrIHNwYWNlIGEgZnVu
Y3Rpb24gY2FuIHVzZSwgdGhlcmUncyBhIGxpbWl0IG9uIGhvdyBtYW55IFRFU1QoKXMKKy8vIG9u
ZSBjYW4gcHV0IGluIGEgc2luZ2xlIEMrKyB0ZXN0IGZpbGUuICBUaGlzIHRlc3QgZW5zdXJlcyB0
aGF0IGEgbGFyZ2UKKy8vIG51bWJlciBvZiBURVNUKClzIGNhbiBiZSBkZWZpbmVkIGluIHRoZSBz
YW1lIHRyYW5zbGF0aW9uIHVuaXQuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisvLyBU
aGlzIG1hY3JvIGRlZmluZXMgMTAgZHVtbXkgdGVzdHMuCisjZGVmaW5lIFRFTl9URVNUU18odGVz
dF9jYXNlX25hbWUpIFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDApIHt9IFwKKyAgVEVTVCh0
ZXN0X2Nhc2VfbmFtZSwgVDEpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDIpIHt9IFwK
KyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDMpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwg
VDQpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDUpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nh
c2VfbmFtZSwgVDYpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDcpIHt9IFwKKyAgVEVT
VCh0ZXN0X2Nhc2VfbmFtZSwgVDgpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDkpIHt9
CisKKy8vIFRoaXMgbWFjcm8gZGVmaW5lcyAxMDAgZHVtbXkgdGVzdHMuCisjZGVmaW5lIEhVTkRS
RURfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCkgXAorICBURU5fVEVTVFNfKHRlc3RfY2Fz
ZV9uYW1lX3ByZWZpeCAjIyAwKSBcCisgIFRFTl9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4
ICMjIDEpIFwKKyAgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgMikgXAorICBU
RU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyAzKSBcCisgIFRFTl9URVNUU18odGVz
dF9jYXNlX25hbWVfcHJlZml4ICMjIDQpIFwKKyAgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9w
cmVmaXggIyMgNSkgXAorICBURU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyA2KSBc
CisgIFRFTl9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDcpIFwKKyAgVEVOX1RFU1RT
Xyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgOCkgXAorICBURU5fVEVTVFNfKHRlc3RfY2FzZV9u
YW1lX3ByZWZpeCAjIyA5KQorCisvLyBUaGlzIG1hY3JvIGRlZmluZXMgMTAwMCBkdW1teSB0ZXN0
cy4KKyNkZWZpbmUgVEhPVVNBTkRfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCkgXAorICBI
VU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgMCkgXAorICBIVU5EUkVEX1RF
U1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgMSkgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0
X2Nhc2VfbmFtZV9wcmVmaXggIyMgMikgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFt
ZV9wcmVmaXggIyMgMykgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXgg
IyMgNCkgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgNSkgXAor
ICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgNikgXAorICBIVU5EUkVE
X1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgNykgXAorICBIVU5EUkVEX1RFU1RTXyh0
ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgOCkgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2Vf
bmFtZV9wcmVmaXggIyMgOSkKKworLy8gRW5zdXJlcyB0aGF0IHdlIGNhbiBkZWZpbmUgMTAwMCBU
RVNUKClzIGluIHRoZSBzYW1lIHRyYW5zbGF0aW9uCisvLyB1bml0LgorVEhPVVNBTkRfVEVTVFNf
KFQpCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICB0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgLy8gV2UgZG9uJ3QgYWN0dWFsbHkgbmVlZCB0
byBydW4gdGhlIGR1bW15IHRlc3RzIC0gdGhlIHB1cnBvc2UgaXMgdG8KKyAgLy8gZW5zdXJlIHRo
YXQgdGhleSBjb21waWxlLgorICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGVzdF91dGlscy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGVzdF91dGlscy5weQppbmRleCBlMGY1OTczZTdlYTZmODFlNjY2
YzMxMjFjM2M4ZmE4NDNmNDM0ZjYxLi40M2NiYThmNGNkNjFkZmZmM2ExYTUyMTAxYmVkM2U3MzRh
NWUxYjU0IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rl
c3RfdXRpbHMucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0
X3V0aWxzLnB5CkBAIC0xLDUgKzEsMyBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCiAjIENv
cHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgogIyBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwpAQCAt
MjksMjAgKzI3LDIxIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0iIiJVbml0
IHRlc3QgdXRpbGl0aWVzIGZvciBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrLiIiIgorIiIi
VW5pdCB0ZXN0IHV0aWxpdGllcyBmb3IgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZy
YW1ld29yay4iIiIKKyMgU3VwcHJlc3NlcyB0aGUgJ0ltcG9ydCBub3QgYXQgdGhlIHRvcCBvZiB0
aGUgZmlsZScgbGludCBjb21wbGFpbnQuCisjIHB5bGludDogZGlzYWJsZS1tc2c9QzYyMDQKKwor
aW1wb3J0IG9zCitpbXBvcnQgc3lzCiAKLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbiknCitJU19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCitJU19DWUdXSU4gPSBv
cy5uYW1lID09ICdwb3NpeCcgYW5kICdDWUdXSU4nIGluIG9zLnVuYW1lKClbMF0KIAogaW1wb3J0
IGF0ZXhpdAotaW1wb3J0IG9zCiBpbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3lzCiBpbXBvcnQgdGVt
cGZpbGUKLWltcG9ydCB1bml0dGVzdAotX3Rlc3RfbW9kdWxlID0gdW5pdHRlc3QKK2ltcG9ydCB1
bml0dGVzdCBhcyBfdGVzdF9tb2R1bGUKIAotIyBTdXBwcmVzc2VzIHRoZSAnSW1wb3J0IG5vdCBh
dCB0aGUgdG9wIG9mIHRoZSBmaWxlJyBsaW50IGNvbXBsYWludC4KLSMgcHlsaW50OiBkaXNhYmxl
LW1zZz1DNjIwNAogdHJ5OgogICBpbXBvcnQgc3VicHJvY2VzcwogICBfU1VCUFJPQ0VTU19NT0RV
TEVfQVZBSUxBQkxFID0gVHJ1ZQpAQCAtNTMsMTggKzUyLDMwIEBAIGV4Y2VwdDoKIAogR1RFU1Rf
T1VUUFVUX1ZBUl9OQU1FID0gJ0dURVNUX09VVFBVVCcKIAotSVNfV0lORE9XUyA9IG9zLm5hbWUg
PT0gJ250JwotSVNfQ1lHV0lOID0gb3MubmFtZSA9PSAncG9zaXgnIGFuZCAnQ1lHV0lOJyBpbiBv
cy51bmFtZSgpWzBdCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3Igc3BlY2lmeWluZyB0
aGUgcGF0aCB0byB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZS4KK1BSRU1BVFVSRV9FWElUX0ZJTEVf
RU5WX1ZBUiA9ICdURVNUX1BSRU1BVFVSRV9FWElUX0ZJTEUnCisKK2Vudmlyb24gPSBvcy5lbnZp
cm9uLmNvcHkoKQorCisKK2RlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgorICAiIiJTZXRz
L3Vuc2V0cyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIGdpdmVuIHZhbHVlLiIiIgorCisg
IGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAgIGVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQorICBl
bGlmIGVudl92YXIgaW4gZW52aXJvbjoKKyAgICBkZWwgZW52aXJvbltlbnZfdmFyXQorCiAKICMg
SGVyZSB3ZSBleHBvc2UgYSBjbGFzcyBmcm9tIGEgcGFydGljdWxhciBtb2R1bGUsIGRlcGVuZGlu
ZyBvbiB0aGUKICMgZW52aXJvbm1lbnQuIFRoZSBjb21tZW50IHN1cHByZXNzZXMgdGhlICdJbnZh
bGlkIHZhcmlhYmxlIG5hbWUnIGxpbnQKICMgY29tcGxhaW50LgotVGVzdENhc2UgPSBfdGVzdF9t
b2R1bGUuVGVzdENhc2UgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwOQorVGVzdENhc2UgPSBf
dGVzdF9tb2R1bGUuVGVzdENhc2UgICMgcHlsaW50OiBkaXNhYmxlPUM2NDA5CiAKICMgSW5pdGlh
bGx5IG1hcHMgYSBmbGFnIHRvIGl0cyBkZWZhdWx0IHZhbHVlLiBBZnRlcgogIyBfUGFyc2VBbmRT
dHJpcEdUZXN0RmxhZ3MoKSBpcyBjYWxsZWQsIG1hcHMgYSBmbGFnIHRvIGl0cyBhY3R1YWwgdmFs
dWUuCi1fZmxhZ19tYXAgPSB7J2d0ZXN0X3NvdXJjZV9kaXInOiBvcy5wYXRoLmRpcm5hbWUoc3lz
LmFyZ3ZbMF0pLAotICAgICAgICAgICAgICdndGVzdF9idWlsZF9kaXInOiBvcy5wYXRoLmRpcm5h
bWUoc3lzLmFyZ3ZbMF0pfQorX2ZsYWdfbWFwID0geydzb3VyY2VfZGlyJzogb3MucGF0aC5kaXJu
YW1lKHN5cy5hcmd2WzBdKSwKKyAgICAgICAgICAgICAnYnVpbGRfZGlyJzogb3MucGF0aC5kaXJu
YW1lKHN5cy5hcmd2WzBdKX0KIF9ndGVzdF9mbGFnc19hcmVfcGFyc2VkID0gRmFsc2UKIAogCkBA
IC03Myw3ICs4NCw3IEBAIGRlZiBfUGFyc2VBbmRTdHJpcEdUZXN0RmxhZ3MoYXJndik6CiAKICAg
IyBTdXBwcmVzc2VzIHRoZSBsaW50IGNvbXBsYWludCBhYm91dCBhIGdsb2JhbCB2YXJpYWJsZSBz
aW5jZSB3ZSBuZWVkIGl0CiAgICMgaGVyZSB0byBtYWludGFpbiBtb2R1bGUtd2lkZSBzdGF0ZS4K
LSAgZ2xvYmFsIF9ndGVzdF9mbGFnc19hcmVfcGFyc2VkICAjIHB5bGludDogZGlzYWJsZS1tc2c9
VzA2MDMKKyAgZ2xvYmFsIF9ndGVzdF9mbGFnc19hcmVfcGFyc2VkICAjIHB5bGludDogZGlzYWJs
ZT1XMDYwMwogICBpZiBfZ3Rlc3RfZmxhZ3NfYXJlX3BhcnNlZDoKICAgICByZXR1cm4KIApAQCAt
MTExLDEzICsxMjIsMTMgQEAgZGVmIEdldEZsYWcoZmxhZyk6CiBkZWYgR2V0U291cmNlRGlyKCk6
CiAgICIiIlJldHVybnMgdGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGRpcmVjdG9yeSB3aGVyZSB0
aGUgLnB5IGZpbGVzIGFyZS4iIiIKIAotICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKEdldEZsYWco
J2d0ZXN0X3NvdXJjZV9kaXInKSkKKyAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChHZXRGbGFnKCdz
b3VyY2VfZGlyJykpCiAKIAogZGVmIEdldEJ1aWxkRGlyKCk6CiAgICIiIlJldHVybnMgdGhlIGFi
c29sdXRlIHBhdGggb2YgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgdGVzdCBiaW5hcmllcyBhcmUu
IiIiCiAKLSAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChHZXRGbGFnKCdndGVzdF9idWlsZF9kaXIn
KSkKKyAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChHZXRGbGFnKCdidWlsZF9kaXInKSkKIAogCiBf
dGVtcF9kaXIgPSBOb25lCkBAIC0xMzAsOCArMTQxLDYgQEAgYXRleGl0LnJlZ2lzdGVyKF9SZW1v
dmVUZW1wRGlyKQogCiAKIGRlZiBHZXRUZW1wRGlyKCk6Ci0gICIiIlJldHVybnMgYSBkaXJlY3Rv
cnkgZm9yIHRlbXBvcmFyeSBmaWxlcy4iIiIKLQogICBnbG9iYWwgX3RlbXBfZGlyCiAgIGlmIG5v
dCBfdGVtcF9kaXI6CiAgICAgX3RlbXBfZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCkBAIC0xNjAs
MTMgKzE2OSw5IEBAIGRlZiBHZXRUZXN0RXhlY3V0YWJsZVBhdGgoZXhlY3V0YWJsZV9uYW1lLCBi
dWlsZF9kaXI9Tm9uZSk6CiAKICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgpOgogICAgIG1l
c3NhZ2UgPSAoCi0gICAgICAgICdVbmFibGUgdG8gZmluZCB0aGUgdGVzdCBiaW5hcnkuIFBsZWFz
ZSBtYWtlIHN1cmUgdG8gcHJvdmlkZSBwYXRoXG4nCi0gICAgICAgICd0byB0aGUgYmluYXJ5IHZp
YSB0aGUgLS1ndGVzdF9idWlsZF9kaXIgZmxhZyBvciB0aGUgR1RFU1RfQlVJTERfRElSXG4nCi0g
ICAgICAgICdlbnZpcm9ubWVudCB2YXJpYWJsZS4gRm9yIGNvbnZlbmllbnQgdXNlLCBpbnZva2Ug
dGhpcyBzY3JpcHQgdmlhXG4nCi0gICAgICAgICdta190ZXN0LnB5LlxuJwotICAgICAgICAjIFRP
RE8odmxhZGxAZ29vZ2xlLmNvbSk6IGNoYW5nZSBta190ZXN0LnB5IHRvIHRlc3QucHkgYWZ0ZXIg
cmVuYW1pbmcKLSAgICAgICAgIyB0aGUgZmlsZS4KLSAgICAgICAgJ1BsZWFzZSBydW4gbWtfdGVz
dC5weSAtaCBmb3IgaGVscC4nKQorICAgICAgICAnVW5hYmxlIHRvIGZpbmQgdGhlIHRlc3QgYmlu
YXJ5ICIlcyIuIFBsZWFzZSBtYWtlIHN1cmUgdG8gcHJvdmlkZVxuJworICAgICAgICAnYSBwYXRo
IHRvIHRoZSBiaW5hcnkgdmlhIHRoZSAtLWJ1aWxkX2RpciBmbGFnIG9yIHRoZSBCVUlMRF9ESVJc
bicKKyAgICAgICAgJ2Vudmlyb25tZW50IHZhcmlhYmxlLicgJSBwYXRoKQogICAgIHByaW50ID4+
IHN5cy5zdGRlcnIsIG1lc3NhZ2UKICAgICBzeXMuZXhpdCgxKQogCkBAIC0yMzQsNyArMjM5LDcg
QEAgY2xhc3MgU3VicHJvY2VzczoKICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNvbW1hbmQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRl
cnI9c3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPXdvcmtpbmdfZGlyLCB1
bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwgZW52PWVudikKLSAgICAgICMgY29tbXVuaWNhdGUgcmV0
dXJucyBhIHR1cGxlIHdpdGggdGhlIGZpbGUgb2JlY3QgZm9yIHRoZSBjaGlsZCdzCisgICAgICAj
IGNvbW11bmljYXRlIHJldHVybnMgYSB0dXBsZSB3aXRoIHRoZSBmaWxlIG9iamVjdCBmb3IgdGhl
IGNoaWxkJ3MKICAgICAgICMgb3V0cHV0LgogICAgICAgc2VsZi5vdXRwdXQgPSBwLmNvbW11bmlj
YXRlKClbMF0KICAgICAgIHNlbGYuX3JldHVybl9jb2RlID0gcC5yZXR1cm5jb2RlCkBAIC0yNDUs
NyArMjUwLDcgQEAgY2xhc3MgU3VicHJvY2VzczoKICAgICAgICAgIyBDaGFuZ2VzIG1hZGUgYnkg
b3MuZW52aXJvbi5jbGVhciBhcmUgbm90IGluaGVyaXRhYmxlIGJ5IGNoaWxkCiAgICAgICAgICMg
cHJvY2Vzc2VzIHVudGlsIFB5dGhvbiAyLjYuIFRvIHByb2R1Y2UgaW5oZXJpdGFibGUgY2hhbmdl
cyB3ZSBoYXZlCiAgICAgICAgICMgdG8gZGVsZXRlIGVudmlyb25tZW50IGl0ZW1zIHdpdGggdGhl
IGRlbCBzdGF0ZW1lbnQuCi0gICAgICAgIGZvciBrZXkgaW4gZGVzdDoKKyAgICAgICAgZm9yIGtl
eSBpbiBkZXN0LmtleXMoKToKICAgICAgICAgICBkZWwgZGVzdFtrZXldCiAgICAgICAgIGRlc3Qu
dXBkYXRlKHNyYykKIApAQCAtMzAxLDcgKzMwNiw3IEBAIGRlZiBNYWluKCk6CiAgIF9QYXJzZUFu
ZFN0cmlwR1Rlc3RGbGFncyhzeXMuYXJndikKICAgIyBUaGUgdGVzdGVkIGJpbmFyaWVzIHNob3Vs
ZCBub3QgYmUgd3JpdGluZyBYTUwgb3V0cHV0IGZpbGVzIHVubGVzcyB0aGUKICAgIyBzY3JpcHQg
ZXhwbGljaXRseSBpbnN0cnVjdHMgdGhlbSB0by4KLSAgIyBUT0RPKHZsYWRsQGdvb2dsZS5jb20p
OiBNb3ZlIHRoaXMgaW50byBTdWJwcm9jZXNzIHdoZW4gd2UgaW1wbGVtZW50CisgICMgRklYTUU6
IE1vdmUgdGhpcyBpbnRvIFN1YnByb2Nlc3Mgd2hlbiB3ZSBpbXBsZW1lbnQKICAgIyBwYXNzaW5n
IGVudmlyb25tZW50IGludG8gaXQgYXMgYSBwYXJhbWV0ZXIuCiAgIGlmIEdURVNUX09VVFBVVF9W
QVJfTkFNRSBpbiBvcy5lbnZpcm9uOgogICAgIGRlbCBvcy5lbnZpcm9uW0dURVNUX09VVFBVVF9W
QVJfTkFNRV0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
dGVzdGJyaWRnZV90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90
ZXN0YnJpZGdlX3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdmZmFkNzNkNDAwNjUyOThmMzA1MDBkZTgy
NGQ4MDhiNjU3MWQ4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfdGVzdGJyaWRnZV90ZXN0LnB5CkBAIC0wLDAgKzEsNjMgQEAKKyMhL3Vzci9i
aW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxOCBHb29nbGUgTExDLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMg
ZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRl
c3QgdXNlcyBmaWx0ZXIgcHJvdmlkZWQgdmlhIHRlc3RicmlkZ2UuIiIiCisKK2ltcG9ydCBvcwor
CitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitiaW5hcnlfbmFtZSA9ICdndGVzdF90ZXN0YnJp
ZGdlX3Rlc3RfJworQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQ
YXRoKGJpbmFyeV9uYW1lKQorVEVTVEJSSURHRV9OQU1FID0gJ1RFU1RCUklER0VfVEVTVF9PTkxZ
JworCisKK2RlZiBBc3NlcnQoY29uZGl0aW9uKToKKyAgaWYgbm90IGNvbmRpdGlvbjoKKyAgICBy
YWlzZSBBc3NlcnRpb25FcnJvcgorCisKK2NsYXNzIEdUZXN0VGVzdEZpbHRlclRlc3QoZ3Rlc3Rf
dGVzdF91dGlscy5UZXN0Q2FzZSk6CisKKyAgZGVmIHRlc3RUZXN0RXhlY3V0aW9uSXNGaWx0ZXJl
ZChzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0IHRoZSB0ZXN0IGZpbHRlciBpcyBwaWNrZWQgdXAg
ZnJvbSB0aGUgdGVzdGJyaWRnZSBlbnYgdmFyLiIiIgorICAgIHN1YnByb2Nlc3NfZW52ID0gb3Mu
ZW52aXJvbi5jb3B5KCkKKworICAgIHN1YnByb2Nlc3NfZW52W1RFU1RCUklER0VfTkFNRV0gPSAn
Ki5UZXN0VGhhdFN1Y2NlZWRzJworICAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3Mo
Q09NTUFORCwgZW52PXN1YnByb2Nlc3NfZW52KQorCisgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwg
cC5leGl0X2NvZGUpCisKKyAgICBBc3NlcnQoJ2ZpbHRlciA9ICouVGVzdFRoYXRTdWNjZWVkcycg
aW4gcC5vdXRwdXQpCisgICAgQXNzZXJ0KCdbICAgICAgIE9LIF0gVGVzdEZpbHRlclRlc3QuVGVz
dFRoYXRTdWNjZWVkcycgaW4gcC5vdXRwdXQpCisgICAgQXNzZXJ0KCdbICBQQVNTRUQgIF0gMSB0
ZXN0LicgaW4gcC5vdXRwdXQpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rl
c3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfdGVzdGJyaWRnZV90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfdGVzdGJyaWRnZV90ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDYxN2IyMDllMTBh
OWQxNzk4MzY4ZTI2NDY1YWFhNjI3MTVmMGVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0YnJpZGdlX3Rlc3RfLmNjCkBAIC0wLDAgKzEs
NDMgQEAKKy8vIENvcHlyaWdodCAyMDE4LCBHb29nbGUgTExDLgorLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisv
LyBUaGlzIHByb2dyYW0gaXMgbWVhbnQgdG8gYmUgcnVuIGJ5IGd0ZXN0X3Rlc3RfZmlsdGVyX3Rl
c3QucHkuICBEbyBub3QgcnVuCisvLyBpdCBkaXJlY3RseS4KKworI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCisKKy8vIFRoZXNlIHRlc3RzIGFyZSB1c2VkIHRvIGRldGVjdCBpZiBmaWx0ZXJpbmcg
aXMgd29ya2luZy4gT25seQorLy8gJ1Rlc3RUaGF0U3VjY2VlZHMnIHNob3VsZCBldmVyIHJ1bi4K
KworVEVTVChUZXN0RmlsdGVyVGVzdCwgVGVzdFRoYXRTdWNjZWVkcykge30KKworVEVTVChUZXN0
RmlsdGVyVGVzdCwgVGVzdFRoYXRGYWlscykgeworICBBU1NFUlRfVFJVRShmYWxzZSkgPDwgIlRo
aXMgdGVzdCBzaG91bGQgbmV2ZXIgYmUgcnVuLiI7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfZXhfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9leF90ZXN0
LmNjCmluZGV4IDhiZjlkYzkwNWI1ZmY4M2FjMDIxMDQxMzQzNTgwZjkwOTc1NDgzY2UuLjkzZjU5
ZDQ5Y2ZkYjk0NzRkY2E2MjJjMTdhMmM5NjRhYjBiZDU4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9leF90ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9l
eF90ZXN0LmNjCkBAIC0yNiwxMiArMjYsMTEgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFu
eW9uZyBXYW4pCisKIAogLy8gVGVzdHMgR29vZ2xlIFRlc3QncyB0aHJvdy1vbi1mYWlsdXJlIG1v
ZGUgd2l0aCBleGNlcHRpb25zIGVuYWJsZWQuCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRl
IDxzdGRpby5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF90aHJvd19vbl9mYWlsdXJlX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggNTY3OGZmZWFmNmZhNjFlZjdkY2I0NWI4ZjM0YTAzNDExOTFhYmY2ZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdC5weQorKysgL2Rldi9udWxsCkBA
IC0xLDE3MSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIw
MDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0j
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi0iIiJUZXN0cyBHb29nbGUgVGVzdCdzIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRoIGV4
Y2VwdGlvbnMgZGlzYWJsZWQuCi0KLVRoaXMgc2NyaXB0IGludm9rZXMgZ3Rlc3RfdGhyb3dfb25f
ZmFpbHVyZV90ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aAotR29vZ2xlIFRlc3QpIHdpdGgg
ZGlmZmVyZW50IGVudmlyb25tZW50cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdzLgotIiIiCi0KLV9f
YXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBvcwot
aW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLQotCi0jIENvbnN0YW50cy4KLQotIyBUaGUgY29tbWFu
ZCBsaW5lIGZsYWcgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgdGhyb3ctb24tZmFpbHVyZSBt
b2RlLgotVEhST1dfT05fRkFJTFVSRSA9ICdndGVzdF90aHJvd19vbl9mYWlsdXJlJwotCi0jIFBh
dGggdG8gdGhlIGd0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8gcHJvZ3JhbSwgY29tcGlsZWQg
d2l0aAotIyBleGNlcHRpb25zIGRpc2FibGVkLgotRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxz
LkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKLSAgICAnZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0
XycpCi0KLQotIyBVdGlsaXRpZXMuCi0KLQotZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6
Ci0gICIiIlNldHMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSBnaXZlbiB2YWx1ZTsgdW5z
ZXRzIGl0IHdoZW4gdGhlCi0gIGdpdmVuIHZhbHVlIGlzIE5vbmUuCi0gICIiIgotCi0gIGVudl92
YXIgPSBlbnZfdmFyLnVwcGVyKCkKLSAgaWYgdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgb3MuZW52
aXJvbltlbnZfdmFyXSA9IHZhbHVlCi0gIGVsaWYgZW52X3ZhciBpbiBvcy5lbnZpcm9uOgotICAg
IGRlbCBvcy5lbnZpcm9uW2Vudl92YXJdCi0KLQotZGVmIFJ1bihjb21tYW5kKToKLSAgIiIiUnVu
cyBhIGNvbW1hbmQ7IHJldHVybnMgVHJ1ZS9GYWxzZSBpZiBpdHMgZXhpdCBjb2RlIGlzL2lzbid0
IDAuIiIiCi0KLSAgcHJpbnQgJ1J1bm5pbmcgIiVzIi4gLiAuJyAlICcgJy5qb2luKGNvbW1hbmQp
Ci0gIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKLSAgcmV0dXJuIHAu
ZXhpdGVkIGFuZCBwLmV4aXRfY29kZSA9PSAwCi0KLQotIyBUaGUgdGVzdHMuICBUT0RPKHdhbkBn
b29nbGUuY29tKTogcmVmYWN0b3IgdGhlIGNsYXNzIHRvIHNoYXJlIGNvbW1vbgotIyBsb2dpYyB3
aXRoIGNvZGUgaW4gZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdC5weS4KLWNsYXNzIFRo
cm93T25GYWlsdXJlVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAgIiIiVGVzdHMg
dGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZS4iIiIKLQotICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYs
IGVudl92YXJfdmFsdWUsIGZsYWdfdmFsdWUsIHNob3VsZF9mYWlsKToKLSAgICAiIiJSdW5zIGd0
ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8gYW5kIHZlcmlmaWVzIHRoYXQgaXQgZG9lcwotICAg
IChvciBkb2VzIG5vdCkgZXhpdCB3aXRoIGEgbm9uLXplcm8gY29kZS4KLQotICAgIEFyZ3M6Ci0g
ICAgICBlbnZfdmFyX3ZhbHVlOiAgICB2YWx1ZSBvZiB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVS
RSBlbnZpcm9ubWVudAotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGU7IE5vbmUgaWYg
dGhlIHZhcmlhYmxlIHNob3VsZCBiZSB1bnNldC4KLSAgICAgIGZsYWdfdmFsdWU6ICAgICAgIHZh
bHVlIG9mIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZzsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgotICAgICAg
c2hvdWxkX2ZhaWw6ICAgICAgVHJ1ZSBpZmYgdGhlIHByb2dyYW0gaXMgZXhwZWN0ZWQgdG8gZmFp
bC4KLSAgICAiIiIKLQotICAgIFNldEVudlZhcihUSFJPV19PTl9GQUlMVVJFLCBlbnZfdmFyX3Zh
bHVlKQotCi0gICAgaWYgZW52X3Zhcl92YWx1ZSBpcyBOb25lOgotICAgICAgZW52X3Zhcl92YWx1
ZV9tc2cgPSAnIGlzIG5vdCBzZXQnCi0gICAgZWxzZToKLSAgICAgIGVudl92YXJfdmFsdWVfbXNn
ID0gJz0nICsgZW52X3Zhcl92YWx1ZQotCi0gICAgaWYgZmxhZ192YWx1ZSBpcyBOb25lOgotICAg
ICAgZmxhZyA9ICcnCi0gICAgZWxpZiBmbGFnX3ZhbHVlID09ICcwJzoKLSAgICAgIGZsYWcgPSAn
LS0lcz0wJyAlIFRIUk9XX09OX0ZBSUxVUkUKLSAgICBlbHNlOgotICAgICAgZmxhZyA9ICctLSVz
JyAlIFRIUk9XX09OX0ZBSUxVUkUKLQotICAgIGNvbW1hbmQgPSBbRVhFX1BBVEhdCi0gICAgaWYg
ZmxhZzoKLSAgICAgIGNvbW1hbmQuYXBwZW5kKGZsYWcpCi0KLSAgICBpZiBzaG91bGRfZmFpbDoK
LSAgICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxkJwotICAgIGVsc2U6Ci0gICAgICBzaG91bGRf
b3Jfbm90ID0gJ3Nob3VsZCBub3QnCi0KLSAgICBmYWlsZWQgPSBub3QgUnVuKGNvbW1hbmQpCi0K
LSAgICBTZXRFbnZWYXIoVEhST1dfT05fRkFJTFVSRSwgTm9uZSkKLQotICAgIG1zZyA9ICgnd2hl
biAlcyVzLCBhbiBhc3NlcnRpb24gZmFpbHVyZSBpbiAiJXMiICVzIGNhdXNlIGEgbm9uLXplcm8g
JwotICAgICAgICAgICAnZXhpdCBjb2RlLicgJQotICAgICAgICAgICAoVEhST1dfT05fRkFJTFVS
RSwgZW52X3Zhcl92YWx1ZV9tc2csICcgJy5qb2luKGNvbW1hbmQpLAotICAgICAgICAgICAgc2hv
dWxkX29yX25vdCkpCi0gICAgc2VsZi5hc3NlcnRfKGZhaWxlZCA9PSBzaG91bGRfZmFpbCwgbXNn
KQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9yKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBi
ZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBtb2RlLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnko
ZW52X3Zhcl92YWx1ZT1Ob25lLCBmbGFnX3ZhbHVlPU5vbmUsIHNob3VsZF9mYWlsPUZhbHNlKQot
Ci0gIGRlZiB0ZXN0VGhyb3dPbkZhaWx1cmVFbnZWYXIoc2VsZik6Ci0gICAgIiIiVGVzdHMgdXNp
bmcgdGhlIEdURVNUX1RIUk9XX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFyaWFibGUuIiIiCi0K
LSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAg
ICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2Zh
aWw9RmFsc2UpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0gICAg
ICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAg
IHNob3VsZF9mYWlsPVRydWUpCi0KLSAgZGVmIHRlc3RUaHJvd09uRmFpbHVyZUZsYWcoc2VsZik6
Ci0gICAgIiIiVGVzdHMgdXNpbmcgdGhlIC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZSBmbGFnLiIi
IgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAotICAgICAgICAg
ICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIHNob3Vs
ZF9mYWlsPUZhbHNlKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwK
LSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAg
ICAgICBzaG91bGRfZmFpbD1UcnVlKQotCi0gIGRlZiB0ZXN0VGhyb3dPbkZhaWx1cmVGbGFnT3Zl
cnJpZGVzRW52VmFyKHNlbGYpOgotICAgICIiIlRlc3RzIHRoYXQgLS1ndGVzdF90aHJvd19vbl9m
YWlsdXJlIG92ZXJyaWRlcyBHVEVTVF9USFJPV19PTl9GQUlMVVJFLiIiIgotCi0gICAgc2VsZi5S
dW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZmxh
Z192YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9RmFsc2UpCi0g
ICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9
VHJ1ZSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAg
ICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBzaG91
bGRfZmFpbD1GYWxzZSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywK
LSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAg
ICAgICBzaG91bGRfZmFpbD1UcnVlKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0g
IGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2MKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4ZmJkNWE3NmRjOTIwNmY0YTAyOTUxNGI4NzZkYzAxNDFl
MzZiZmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3RfLmNj
CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDksIEdvb2ds
ZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKLQotLy8gVGVzdHMgR29vZ2xlIFRlc3QncyB0aHJvdy1vbi1mYWlsdXJlIG1vZGUg
d2l0aCBleGNlcHRpb25zIGRpc2FibGVkLgotLy8KLS8vIFRoaXMgcHJvZ3JhbSBtdXN0IGJlIGNv
bXBpbGVkIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4gIEl0IHdpbGwgYmUKLS8vIGludm9rZWQg
YnkgZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0LnB5LCBhbmQgaXMgZXhwZWN0ZWQgdG8gZXhp
dAotLy8gd2l0aCBub24temVybyBpbiB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlIG9yIDAgb3Ro
ZXJ3aXNlLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KSB7Ci0gIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsK
LQotICAvLyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IHBlb3BsZSBjYW4gdXNlIEdvb2dsZSBUZXN0
IGFzc2VydGlvbnMgaW4KLSAgLy8gb3RoZXIgdGVzdGluZyBmcmFtZXdvcmtzLCBhcyBsb25nIGFz
IHRoZXkgaW5pdGlhbGl6ZSBHb29nbGUgVGVzdAotICAvLyBwcm9wZXJseSBhbmQgc2V0IHRoZSB0
aHJvd24tb24tZmFpbHVyZSBtb2RlLiAgVGhlcmVmb3JlLCB3ZSBkb24ndAotICAvLyB1c2UgR29v
Z2xlIFRlc3QncyBjb25zdHJ1Y3RzIGZvciBkZWZpbmluZyBhbmQgcnVubmluZyB0ZXN0cwotICAv
LyAoZS5nLiBURVNUIGFuZCBSVU5fQUxMX1RFU1RTKSBoZXJlLgotCi0gIC8vIEluIHRoZSB0aHJv
dy1vbi1mYWlsdXJlIG1vZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLCB0aGlzCi0gIC8vIGFz
c2VydGlvbiB3aWxsIGNhdXNlIHRoZSBwcm9ncmFtIHRvIGV4aXQgd2l0aCBhIG5vbi16ZXJvIGNv
ZGUuCi0gIEVYUEVDVF9FUSgyLCAzKTsKLQotICAvLyBXaGVuIG5vdCBpbiB0aGUgdGhyb3ctb24t
ZmFpbHVyZSBtb2RlLCB0aGUgY29udHJvbCB3aWxsIHJlYWNoCi0gIC8vIGhlcmUuCi0gIHJldHVy
biAwOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91
bmluaXRpYWxpemVkX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X3VuaW5pdGlhbGl6ZWRfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNmFl
NTdlZWVkYWZjZjA3NTA0ZGQ4ZDVkN2E4YjVhN2Y4MzgxM2YyNy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAg
QEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlZlcmlm
aWVzIHRoYXQgR29vZ2xlIFRlc3Qgd2FybnMgdGhlIHVzZXIgd2hlbiBub3QgaW5pdGlhbGl6ZWQg
cHJvcGVybHkuIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdh
biknCi0KLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi0KLQotQ09NTUFORCA9IGd0ZXN0X3Rlc3Rf
dXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF91bmluaXRpYWxpemVkX3Rlc3RfJykK
LQotCi1kZWYgQXNzZXJ0KGNvbmRpdGlvbik6Ci0gIGlmIG5vdCBjb25kaXRpb246Ci0gICAgcmFp
c2UgQXNzZXJ0aW9uRXJyb3IKLQotCi1kZWYgQXNzZXJ0RXEoZXhwZWN0ZWQsIGFjdHVhbCk6Ci0g
IGlmIGV4cGVjdGVkICE9IGFjdHVhbDoKLSAgICBwcmludCAnRXhwZWN0ZWQ6ICVzJyAlIChleHBl
Y3RlZCwpCi0gICAgcHJpbnQgJyAgQWN0dWFsOiAlcycgJSAoYWN0dWFsLCkKLSAgICByYWlzZSBB
c3NlcnRpb25FcnJvcgotCi0KLWRlZiBUZXN0RXhpdENvZGVBbmRPdXRwdXQoY29tbWFuZCk6Ci0g
ICIiIlJ1bnMgdGhlIGdpdmVuIGNvbW1hbmQgYW5kIHZlcmlmaWVzIGl0cyBleGl0IGNvZGUgYW5k
IG91dHB1dC4iIiIKLQotICAjIFZlcmlmaWVzIHRoYXQgJ2NvbW1hbmQnIGV4aXRzIHdpdGggY29k
ZSAxLgotICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCi0gIEFzc2Vy
dChwLmV4aXRlZCkKLSAgQXNzZXJ0RXEoMSwgcC5leGl0X2NvZGUpCi0gIEFzc2VydCgnSW5pdEdv
b2dsZVRlc3QnIGluIHAub3V0cHV0KQotCi0KLWNsYXNzIEdUZXN0VW5pbml0aWFsaXplZFRlc3Qo
Z3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gIGRlZiB0ZXN0RXhpdENvZGVBbmRPdXRwdXQo
c2VsZik6Ci0gICAgVGVzdEV4aXRDb2RlQW5kT3V0cHV0KENPTU1BTkQpCi0KLQotaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0Xy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0
Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThiMmFhODFkZDU0ZDljNjQzYTU4
ZGU1ZTQ0ZDZjY2I1MjBhNzc2NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6
ZWRfdGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vLyBDb3B5cmlnaHQg
MjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4K
LS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0v
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotVEVTVChE
dW1teVRlc3QsIER1bW15KSB7Ci0gIC8vIFRoaXMgdGVzdCBkb2Vzbid0IHZlcmlmeSBhbnl0aGlu
Zy4gIFdlIGp1c3QgbmVlZCBpdCB0byBjcmVhdGUgYQotICAvLyByZWFsaXN0aWMgc3RhZ2UgZm9y
IHRlc3RpbmcgdGhlIGJlaGF2aW9yIG9mIEdvb2dsZSBUZXN0IHdoZW4KLSAgLy8gUlVOX0FMTF9U
RVNUUygpIGlzIGNhbGxlZCB3aXRob3V0IHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCkgYmVpbmcK
LSAgLy8gY2FsbGVkIGZpcnN0LgotfQotCi1pbnQgbWFpbigpIHsKLSAgcmV0dXJuIFJVTl9BTExf
VEVTVFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaXR0
ZXN0LmNjCmluZGV4IGExNGYwNjVhMmNjZDg2Mzc5YTAxNDlhMzNmYzU2NDVjMGVjOGIxODEuLmY3
MjEzZmJmM2U1ZTg3MjA4OWJmYjk4NTUxYWMzYmEzZTNhNjdiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91bml0dGVzdC5jYwpAQCAtMjYsMTggKzI2LDE2IEBA
CiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCiAvLwogLy8gVGVzdHMgZm9y
IEdvb2dsZSBUZXN0IGl0c2VsZi4gIFRoaXMgdmVyaWZpZXMgdGhhdCB0aGUgYmFzaWMgY29uc3Ry
dWN0cyBvZgogLy8gR29vZ2xlIFRlc3Qgd29yay4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
Ci0jaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKLS8vIFZlcmlm
aWVzIHRoYXQgdGhlIGNvbW1hbmQgbGluZSBmbGFnIHZhcmlhYmxlcyBjYW4gYmUgYWNjZXNzZWQK
LS8vIGluIGNvZGUgb25jZSA8Z3Rlc3QvZ3Rlc3QuaD4gaGFzIGJlZW4gI2luY2x1ZGVkLgotLy8g
RG8gbm90IG1vdmUgaXQgYWZ0ZXIgb3RoZXIgI2luY2x1ZGVzLgorLy8gVmVyaWZpZXMgdGhhdCB0
aGUgY29tbWFuZCBsaW5lIGZsYWcgdmFyaWFibGVzIGNhbiBiZSBhY2Nlc3NlZCBpbgorLy8gY29k
ZSBvbmNlICJndGVzdC5oIiBoYXMgYmVlbiAjaW5jbHVkZWQuCisvLyBEbyBub3QgbW92ZSBpdCBh
ZnRlciBvdGhlciBndGVzdCAjaW5jbHVkZXMuCiBURVNUKENvbW1hbmRMaW5lRmxhZ3NUZXN0LCBD
YW5CZUFjY2Vzc2VkSW5Db2RlT25jZUdUZXN0SElzSW5jbHVkZWQpIHsKICAgYm9vbCBkdW1teSA9
IHRlc3Rpbmc6OkdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpCiAgICAgICB8fCB0
ZXN0aW5nOjpHVEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpCkBAIC01MiwzMCArNTAsMTA1IEBA
IFRFU1QoQ29tbWFuZExpbmVGbGFnc1Rlc3QsIENhbkJlQWNjZXNzZWRJbkNvZGVPbmNlR1Rlc3RI
SXNJbmNsdWRlZCkgewogICAgICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyhzaG93X2ludGVybmFs
X3N0YWNrX2ZyYW1lcykKICAgICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcoc2h1ZmZsZSkKICAg
ICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpID4gMAorICAgICAg
fHwgdGVzdGluZzo6R1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSAhPSAidW5rbm93biIKICAg
ICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSk7CiAgIEVYUEVDVF9U
UlVFKGR1bW15IHx8ICFkdW1teSk7ICAvLyBTdXBwcmVzc2VzIHdhcm5pbmcgdGhhdCBkdW1teSBp
cyB1bnVzZWQuCiB9CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGkuaD4KLQotLy8gSW5kaWNh
dGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3Qncwot
Ly8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlu
bC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAg
VGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5j
bHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RF
U1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgi
Ci0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KICNpbmNsdWRlIDxsaW1pdHMuaD4gIC8v
IEZvciBJTlRfTUFYLgogI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgog
I2luY2x1ZGUgPHRpbWUuaD4KIAogI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDx2ZWN0b3I+Cisj
aW5jbHVkZSA8b3N0cmVhbT4KKyNpZiBHVEVTVF9MQU5HX0NYWDExCisjaW5jbHVkZSA8dW5vcmRl
cmVkX3NldD4KKyNlbmRpZiAgLy8gR1RFU1RfTEFOR19DWFgxMQorCisjaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3Qtc3BpLmgiCisjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgogCiBuYW1l
c3BhY2UgdGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCisjaWYgR1RFU1RfQ0FOX1NU
UkVBTV9SRVNVTFRTXworCitjbGFzcyBTdHJlYW1pbmdMaXN0ZW5lclRlc3QgOiBwdWJsaWMgVGVz
dCB7CisgcHVibGljOgorICBjbGFzcyBGYWtlU29ja2V0V3JpdGVyIDogcHVibGljIFN0cmVhbWlu
Z0xpc3RlbmVyOjpBYnN0cmFjdFNvY2tldFdyaXRlciB7CisgICBwdWJsaWM6CisgICAgLy8gU2Vu
ZHMgYSBzdHJpbmcgdG8gdGhlIHNvY2tldC4KKyAgICB2aXJ0dWFsIHZvaWQgU2VuZChjb25zdCBz
dGQ6OnN0cmluZyYgbWVzc2FnZSkgeyBvdXRwdXRfICs9IG1lc3NhZ2U7IH0KKworICAgIHN0ZDo6
c3RyaW5nIG91dHB1dF87CisgIH07CisKKyAgU3RyZWFtaW5nTGlzdGVuZXJUZXN0KCkKKyAgICAg
IDogZmFrZV9zb2NrX3dyaXRlcl8obmV3IEZha2VTb2NrZXRXcml0ZXIpLAorICAgICAgICBzdHJl
YW1lcl8oZmFrZV9zb2NrX3dyaXRlcl8pLAorICAgICAgICB0ZXN0X2luZm9fb2JqXygiRm9vVGVz
dCIsICJCYXIiLCBOVUxMLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRp
b24oX19GSUxFX18sIF9fTElORV9fKSwgMCwgTlVMTCkge30KKworIHByb3RlY3RlZDoKKyAgc3Rk
OjpzdHJpbmcqIG91dHB1dCgpIHsgcmV0dXJuICYoZmFrZV9zb2NrX3dyaXRlcl8tPm91dHB1dF8p
OyB9CisKKyAgRmFrZVNvY2tldFdyaXRlciogY29uc3QgZmFrZV9zb2NrX3dyaXRlcl87CisgIFN0
cmVhbWluZ0xpc3RlbmVyIHN0cmVhbWVyXzsKKyAgVW5pdFRlc3QgdW5pdF90ZXN0XzsKKyAgVGVz
dEluZm8gdGVzdF9pbmZvX29ial87ICAvLyBUaGUgbmFtZSB0ZXN0X2luZm9fIHdhcyB0YWtlbiBi
eSB0ZXN0aW5nOjpUZXN0LgorfTsKKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25U
ZXN0UHJvZ3JhbUVuZCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdFBy
b2dyYW1FbmQodW5pdF90ZXN0Xyk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdFByb2dyYW1FbmQm
cGFzc2VkPTFcbiIsICpvdXRwdXQoKSk7Cit9CisKK1RFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRl
c3QsIE9uVGVzdEl0ZXJhdGlvbkVuZCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJf
Lk9uVGVzdEl0ZXJhdGlvbkVuZCh1bml0X3Rlc3RfLCA0Mik7CisgIEVYUEVDVF9FUSgiZXZlbnQ9
VGVzdEl0ZXJhdGlvbkVuZCZwYXNzZWQ9MSZlbGFwc2VkX3RpbWU9MG1zXG4iLCAqb3V0cHV0KCkp
OworfQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RDYXNlU3RhcnQpIHsK
KyAgKm91dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RDYXNlU3RhcnQoVGVzdENhc2Uo
IkZvb1Rlc3QiLCAiQmFyIiwgTlVMTCwgTlVMTCkpOworICBFWFBFQ1RfRVEoImV2ZW50PVRlc3RD
YXNlU3RhcnQmbmFtZT1Gb29UZXN0XG4iLCAqb3V0cHV0KCkpOworfQorCitURVNUX0YoU3RyZWFt
aW5nTGlzdGVuZXJUZXN0LCBPblRlc3RDYXNlRW5kKSB7CisgICpvdXRwdXQoKSA9ICIiOworICBz
dHJlYW1lcl8uT25UZXN0Q2FzZUVuZChUZXN0Q2FzZSgiRm9vVGVzdCIsICJCYXIiLCBOVUxMLCBO
VUxMKSk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdENhc2VFbmQmcGFzc2VkPTEmZWxhcHNlZF90
aW1lPTBtc1xuIiwgKm91dHB1dCgpKTsKK30KKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVz
dCwgT25UZXN0U3RhcnQpIHsKKyAgKm91dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RT
dGFydCh0ZXN0X2luZm9fb2JqXyk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdFN0YXJ0Jm5hbWU9
QmFyXG4iLCAqb3V0cHV0KCkpOworfQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBP
blRlc3RFbmQpIHsKKyAgKm91dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RFbmQodGVz
dF9pbmZvX29ial8pOworICBFWFBFQ1RfRVEoImV2ZW50PVRlc3RFbmQmcGFzc2VkPTEmZWxhcHNl
ZF90aW1lPTBtc1xuIiwgKm91dHB1dCgpKTsKK30KKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVy
VGVzdCwgT25UZXN0UGFydFJlc3VsdCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJf
Lk9uVGVzdFBhcnRSZXN1bHQoVGVzdFBhcnRSZXN1bHQoCisgICAgICBUZXN0UGFydFJlc3VsdDo6
a0ZhdGFsRmFpbHVyZSwgImZvby5jYyIsIDQyLCAiZmFpbGVkPVxuJiUiKSk7CisKKyAgLy8gTWV0
YSBjaGFyYWN0ZXJzIGluIHRoZSBmYWlsdXJlIG1lc3NhZ2Ugc2hvdWxkIGJlIHByb3Blcmx5IGVz
Y2FwZWQuCisgIEVYUEVDVF9FUSgKKyAgICAgICJldmVudD1UZXN0UGFydFJlc3VsdCZmaWxlPWZv
by5jYyZsaW5lPTQyJm1lc3NhZ2U9ZmFpbGVkJTNEJTBBJTI2JTI1XG4iLAorICAgICAgKm91dHB1
dCgpKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKIC8vIFBy
b3ZpZGVzIGFjY2VzcyB0byBvdGhlcndpc2UgcHJpdmF0ZSBwYXJ0cyBvZiB0aGUgVGVzdEV2ZW50
TGlzdGVuZXJzIGNsYXNzCiAvLyB0aGF0IGFyZSBuZWVkZWQgdG8gdGVzdCBpdC4KIGNsYXNzIFRl
c3RFdmVudExpc3RlbmVyc0FjY2Vzc29yIHsKQEAgLTEwMiw2ICsxNzUsMTggQEAgY2xhc3MgVGVz
dEV2ZW50TGlzdGVuZXJzQWNjZXNzb3IgewogICB9CiB9OwogCitjbGFzcyBVbml0VGVzdFJlY29y
ZFByb3BlcnR5VGVzdEhlbHBlciA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIFVuaXRU
ZXN0UmVjb3JkUHJvcGVydHlUZXN0SGVscGVyKCkge30KKworICAvLyBGb3J3YXJkcyB0byBVbml0
VGVzdDo6UmVjb3JkUHJvcGVydHkoKSB0byBieXBhc3MgYWNjZXNzIGNvbnRyb2xzLgorICB2b2lk
IFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBjb25zdCBzdGQ6OnN0cmlu
ZyYgdmFsdWUpIHsKKyAgICB1bml0X3Rlc3RfLlJlY29yZFByb3BlcnR5KGtleSwgdmFsdWUpOwor
ICB9CisKKyAgVW5pdFRlc3QgdW5pdF90ZXN0XzsKK307CisKIH0gIC8vIG5hbWVzcGFjZSBpbnRl
cm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIApAQCAtMTEwLDYgKzE5NSw3IEBAIHVzaW5n
IHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdDsKIHVzaW5nIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nl
c3M7CiB1c2luZyB0ZXN0aW5nOjpEb3VibGVMRTsKIHVzaW5nIHRlc3Rpbmc6OkVtcHR5VGVzdEV2
ZW50TGlzdGVuZXI7Cit1c2luZyB0ZXN0aW5nOjpFbnZpcm9ubWVudDsKIHVzaW5nIHRlc3Rpbmc6
OkZsb2F0TEU7CiB1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rl
c3RzKTsKIHVzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSk7CkBAIC0x
MjUsNiArMjExLDcgQEAgdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhyZXBlYXQpOwogdXNpbmcg
dGVzdGluZzo6R1RFU1RfRkxBRyhzaG93X2ludGVybmFsX3N0YWNrX2ZyYW1lcyk7CiB1c2luZyB0
ZXN0aW5nOjpHVEVTVF9GTEFHKHNodWZmbGUpOwogdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhz
dGFja190cmFjZV9kZXB0aCk7Cit1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHN0cmVhbV9yZXN1
bHRfdG8pOwogdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKIHVz
aW5nIHRlc3Rpbmc6OklzTm90U3Vic3RyaW5nOwogdXNpbmcgdGVzdGluZzo6SXNTdWJzdHJpbmc7
CkBAIC0xMzIsNTMgKzIxOSw3OCBAQCB1c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwogdXNpbmcgdGVz
dGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI7CiB1c2luZyB0ZXN0aW5nOjpT
dGF0aWNBc3NlcnRUeXBlRXE7CiB1c2luZyB0ZXN0aW5nOjpUZXN0OwotdXNpbmcgdGVzdGluZzo6
VGVzdEV2ZW50TGlzdGVuZXJzOwogdXNpbmcgdGVzdGluZzo6VGVzdENhc2U7Cit1c2luZyB0ZXN0
aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7Cit1c2luZyB0ZXN0aW5nOjpUZXN0SW5mbzsKIHVzaW5n
IHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OwogdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHRB
cnJheTsKIHVzaW5nIHRlc3Rpbmc6OlRlc3RQcm9wZXJ0eTsKIHVzaW5nIHRlc3Rpbmc6OlRlc3RS
ZXN1bHQ7Cit1c2luZyB0ZXN0aW5nOjpUaW1lSW5NaWxsaXM7CiB1c2luZyB0ZXN0aW5nOjpVbml0
VGVzdDsKLXVzaW5nIHRlc3Rpbmc6OmtNYXhTdGFja1RyYWNlRGVwdGg7Cit1c2luZyB0ZXN0aW5n
OjppbnRlcm5hbDo6QWRkUmVmZXJlbmNlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5
c0ZhbHNlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWU7CiB1c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6QXBwZW5kVXNlck1lc3NhZ2U7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6QXJyYXlBd2FyZUZpbmQ7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QXJyYXlFcTsKIHVz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpDb2RlUG9pbnRUb1V0Zjg7Cit1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6Q29tcGlsZUFzc2VydFR5cGVzRXF1YWw7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6Q29weUFycmF5OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkNvdW50SWY7CiB1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6RXFGYWlsdXJlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZs
b2F0aW5nUG9pbnQ7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0VGltZUluTWlsbGlz
QXNTZWNvbmRzOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZvckVhY2g7Cit1c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6Rm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDE7Cit1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzOwogdXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OkdUZXN0RmxhZ1NhdmVyOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OkdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3A7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6R2V0RWxlbWVudE9yOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldE5leHRSYW5kb21T
ZWVkOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldFJhbmRvbVNlZWRGcm9tRmxhZzsKIHVz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRUZXN0VHlwZUlkOwordXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OkdldFRpbWVJbk1pbGxpczsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRUeXBl
SWQ7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsOwordXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTsKIHVzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpJbnQzMjsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJbnQzMkZyb21FbnZPckRp
ZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJc0FQcm90b2NvbE1lc3NhZ2U7Cit1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6SXNDb250YWluZXI7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6
SXNDb250YWluZXJUZXN0OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OklzTm90Q29udGFpbmVy
OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6Ok5hdGl2ZUFycmF5OwordXNpbmcgdGVzdGluZzo6
aW50ZXJuYWw6Ok9zU3RhY2tUcmFjZUdldHRlcjsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpP
c1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2U7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UGFy
c2VJbnQzMkZsYWc7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVsYXRpb25Ub1NvdXJjZUNv
cHk7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZTsK
K3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpSZW1vdmVDb25zdDsKK3VzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpSZW1vdmVSZWZlcmVuY2U7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxk
UnVuVGVzdE9uU2hhcmQ7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxkU2hhcmQ7CiB1
c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxkVXNlQ29sb3I7CiB1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6U2h1ZmZsZTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaHVmZmxlUmFuZ2U7
Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2tpcFByZWZpeDsKIHVzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmc7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U3Ry
aW5nOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29y
OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlRlc3RSZXN1bHRBY2Nlc3NvcjsKIHVzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpVSW50MzI7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdFRl
c3RJbXBsOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OldpZGVTdHJpbmdUb1V0Zjg7Cit1c2lu
ZyB0ZXN0aW5nOjppbnRlcm5hbDo6ZWRpdF9kaXN0YW5jZTo6Q2FsY3VsYXRlT3B0aW1hbEVkaXRz
OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmVkaXRfZGlzdGFuY2U6OkNyZWF0ZVVuaWZpZWRE
aWZmOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmVkaXRfZGlzdGFuY2U6OkVkaXRUeXBlOwog
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmtNYXhSYW5kb21TZWVkOwogdXNpbmcgdGVzdGluZzo6
aW50ZXJuYWw6OmtUZXN0VHlwZUlkSW5Hb29nbGVUZXN0OwotdXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OnNjb3BlZF9wdHI7Cit1c2luZyB0ZXN0aW5nOjprTWF4U3RhY2tUcmFjZURlcHRoOwogCi0j
aWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNpZiBHVEVTVF9IQVNfU1RSRUFNX1JF
RElSRUNUSU9OCiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q2FwdHVyZVN0ZG91dDsKIHVzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjpHZXRDYXB0dXJlZFN0ZG91dDsKLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNlbmRpZgogCiAjaWYgR1RFU1RfSVNfVEhSRUFEU0FG
RQogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlRocmVhZFdpdGhQYXJhbTsKQEAgLTI2Nyw2ICsz
NzksMzEgQEAgVEVTVChHZXRUZXN0VHlwZUlkVGVzdCwgUmV0dXJuc1RoZVNhbWVWYWx1ZUluc2lk
ZU9yT3V0c2lkZU9mR29vZ2xlVGVzdCkgewogICBFWFBFQ1RfRVEoa1Rlc3RUeXBlSWRJbkdvb2ds
ZVRlc3QsIEdldFRlc3RUeXBlSWQoKSk7CiB9CiAKKy8vIFRlc3RzIENhbm9uaWNhbGl6ZUZvclN0
ZExpYlZlcnNpb25pbmcuCisKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNhbm9uaWNhbGl6
ZUZvclN0ZExpYlZlcnNpb25pbmc7CisKK1RFU1QoQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lv
bmluZywgTGVhdmVzVW52ZXJzaW9uZWROYW1lc1VuY2hhbmdlZCkgeworICBFWFBFQ1RfRVEoInN0
ZDo6YmluZCIsIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoInN0ZDo6YmluZCIpKTsK
KyAgRVhQRUNUX0VRKCJzdGQ6Ol8iLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJz
dGQ6Ol8iKSk7CisgIEVYUEVDVF9FUSgic3RkOjpfX2ZvbyIsIENhbm9uaWNhbGl6ZUZvclN0ZExp
YlZlcnNpb25pbmcoInN0ZDo6X19mb28iKSk7CisgIEVYUEVDVF9FUSgiZ3RsOjpfXzE6OngiLCBD
YW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJndGw6Ol9fMTo6eCIpKTsKKyAgRVhQRUNU
X0VRKCJfXzE6OngiLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJfXzE6OngiKSk7
CisgIEVYUEVDVF9FUSgiOjpfXzE6OngiLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5n
KCI6Ol9fMTo6eCIpKTsKK30KKworVEVTVChDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5n
LCBFbGlkZXNEb3VibGVVbmRlck5hbWVzKSB7CisgIEVYUEVDVF9FUSgic3RkOjpiaW5kIiwgQ2Fu
b25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZygic3RkOjpfXzE6OmJpbmQiKSk7CisgIEVYUEVD
VF9FUSgic3RkOjpfIiwgQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZygic3RkOjpfXzE6
Ol8iKSk7CisKKyAgRVhQRUNUX0VRKCJzdGQ6OmJpbmQiLCBDYW5vbmljYWxpemVGb3JTdGRMaWJW
ZXJzaW9uaW5nKCJzdGQ6Ol9fZzo6YmluZCIpKTsKKyAgRVhQRUNUX0VRKCJzdGQ6Ol8iLCBDYW5v
bmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJzdGQ6Ol9fZzo6XyIpKTsKKworICBFWFBFQ1Rf
RVEoInN0ZDo6YmluZCIsCisgICAgICAgICAgICBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9u
aW5nKCJzdGQ6Ol9fZ29vZ2xlOjpiaW5kIikpOworICBFWFBFQ1RfRVEoInN0ZDo6XyIsIENhbm9u
aWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoInN0ZDo6X19nb29nbGU6Ol8iKSk7Cit9CisKIC8v
IFRlc3RzIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcygpLgogCiBURVNUKEZvcm1hdFRpbWVJ
bk1pbGxpc0FzU2Vjb25kc1Rlc3QsIEZvcm1hdHNaZXJvKSB7CkBAIC0yODksMTIgKzQyNiw5OSBA
QCBURVNUKEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kc1Rlc3QsIEZvcm1hdHNOZWdhdGl2ZU51
bWJlcikgewogICBFWFBFQ1RfRVEoIi0zIiwgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKC0z
MDAwKSk7CiB9CiAKKy8vIFRlc3RzIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKCku
ICBUaGUgY29ycmVjdG5lc3Mgb2YgY29udmVyc2lvbgorLy8gZm9yIHBhcnRpY3VsYXIgZGF0ZXMg
YmVsb3cgd2FzIHZlcmlmaWVkIGluIFB5dGhvbiB1c2luZworLy8gZGF0ZXRpbWUuZGF0ZXRpbWUu
ZnJvbXV0Y3RpbWVzdGFtcCg8dGltZXRhbXA+LzEwMDApLgorCisvLyBGb3JtYXRFcG9jaFRpbWVJ
bk1pbGxpc0FzSXNvODYwMSBkZXBlbmRzIG9uIHRoZSBjdXJyZW50IHRpbWV6b25lLCBzbyB3ZQor
Ly8gaGF2ZSB0byBzZXQgdXAgYSBwYXJ0aWN1bGFyIHRpbWV6b25lIHRvIG9idGFpbiBwcmVkaWN0
YWJsZSByZXN1bHRzLgorY2xhc3MgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0
IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgLy8gT24gQ3lnd2luLCBHQ0MgZG9lc24ndCBh
bGxvdyB1bnF1YWxpZmllZCBpbnRlZ2VyIGxpdGVyYWxzIHRvIGV4Y2VlZAorICAvLyAzMiBiaXRz
LCBldmVuIHdoZW4gNjQtYml0IGludGVnZXIgdHlwZXMgYXJlIGF2YWlsYWJsZS4gIFdlIGhhdmUg
dG8KKyAgLy8gZm9yY2UgdGhlIGNvbnN0YW50cyB0byBoYXZlIGEgNjQtYml0IHR5cGUgaGVyZS4K
KyAgc3RhdGljIGNvbnN0IFRpbWVJbk1pbGxpcyBrTWlsbGlzUGVyU2VjID0gMTAwMDsKKworIHBy
aXZhdGU6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBzYXZlZF90el8gPSBOVUxMOwor
CisgICAgR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRFRF9QVVNIXygvKiBnZXRlbnYsIHN0cmR1
cDogZGVwcmVjYXRlZCAqLykKKyAgICBpZiAoZ2V0ZW52KCJUWiIpKQorICAgICAgc2F2ZWRfdHpf
ID0gc3RyZHVwKGdldGVudigiVFoiKSk7CisgICAgR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRF
RF9QT1BfKCkKKworICAgIC8vIFNldCB1cCB0aGUgdGltZSB6b25lIGZvciBGb3JtYXRFcG9jaFRp
bWVJbk1pbGxpc0FzSXNvODYwMSB0byB1c2UuICBXZQorICAgIC8vIGNhbm5vdCB1c2UgdGhlIGxv
Y2FsIHRpbWUgem9uZSBiZWNhdXNlIHRoZSBmdW5jdGlvbidzIG91dHB1dCBkZXBlbmRzCisgICAg
Ly8gb24gdGhlIHRpbWUgem9uZS4KKyAgICBTZXRUaW1lWm9uZSgiVVRDKzAwIik7CisgIH0KKwor
ICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgU2V0VGltZVpvbmUoc2F2ZWRfdHpfKTsK
KyAgICBmcmVlKGNvbnN0X2Nhc3Q8Y2hhcio+KHNhdmVkX3R6XykpOworICAgIHNhdmVkX3R6XyA9
IE5VTEw7CisgIH0KKworICBzdGF0aWMgdm9pZCBTZXRUaW1lWm9uZShjb25zdCBjaGFyKiB0aW1l
X3pvbmUpIHsKKyAgICAvLyB0enNldCgpIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiB0aGUgVFogdmFy
aWFibGUgYmVpbmcgcHJlc2VudCBhbmQgZW1wdHkKKyAgICAvLyBhbmQgbm90IGJlaW5nIHByZXNl
bnQsIHNvIHdlIGhhdmUgdG8gY29uc2lkZXIgdGhlIGNhc2Ugb2YgdGltZV96b25lCisgICAgLy8g
YmVpbmcgTlVMTC4KKyNpZiBfTVNDX1ZFUiB8fCBHVEVTVF9PU19XSU5ET1dTX01JTkdXCisgICAg
Ly8gLi4uVW5sZXNzIGl0J3MgTVNWQywgd2hvc2Ugc3RhbmRhcmQgbGlicmFyeSdzIF9wdXRlbnYg
ZG9lc24ndAorICAgIC8vIGRpc3Rpbmd1aXNoIGJldHdlZW4gYW4gZW1wdHkgYW5kIGEgbWlzc2lu
ZyB2YXJpYWJsZS4KKyAgICBjb25zdCBzdGQ6OnN0cmluZyBlbnZfdmFyID0KKyAgICAgICAgc3Rk
OjpzdHJpbmcoIlRaPSIpICsgKHRpbWVfem9uZSA/IHRpbWVfem9uZSA6ICIiKTsKKyAgICBfcHV0
ZW52KGVudl92YXIuY19zdHIoKSk7CisgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVT
SF8oNDk5NiAvKiBkZXByZWNhdGVkIGZ1bmN0aW9uICovKQorICAgIHR6c2V0KCk7CisgICAgR1RF
U1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCisjZWxzZQorICAgIGlmICh0aW1lX3pvbmUp
IHsKKyAgICAgIHNldGVudigoIlRaIiksIHRpbWVfem9uZSwgMSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIHVuc2V0ZW52KCJUWiIpOworICAgIH0KKyAgICB0enNldCgpOworI2VuZGlmCisgIH0KKwor
ICBjb25zdCBjaGFyKiBzYXZlZF90el87Cit9OworCitjb25zdCBUaW1lSW5NaWxsaXMgRm9ybWF0
RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0OjprTWlsbGlzUGVyU2VjOworCitURVNUX0Yo
Rm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBQcmludHNUd29EaWdpdFNlZ21l
bnRzKSB7CisgIEVYUEVDVF9FUSgiMjAxMS0xMC0zMVQxODo1Mjo0MiIsCisgICAgICAgICAgICBG
b3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSgxMzIwMDg3MTYyICoga01pbGxpc1BlclNl
YykpOworfQorCitURVNUX0YoRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBN
aWxsaXNlY29uZHNEb05vdEFmZmVjdFJlc3VsdCkgeworICBFWFBFQ1RfRVEoCisgICAgICAiMjAx
MS0xMC0zMVQxODo1Mjo0MiIsCisgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYw
MSgxMzIwMDg3MTYyICoga01pbGxpc1BlclNlYyArIDIzNCkpOworfQorCitURVNUX0YoRm9ybWF0
RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBQcmludHNMZWFkaW5nWmVyb2VzKSB7Cisg
IEVYUEVDVF9FUSgiMjAxMS0wOS0wM1QwNTowNzowMiIsCisgICAgICAgICAgICBGb3JtYXRFcG9j
aFRpbWVJbk1pbGxpc0FzSXNvODYwMSgxMzE1MDI2NDIyICoga01pbGxpc1BlclNlYykpOworfQor
CitURVNUX0YoRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBQcmludHMyNEhv
dXJUaW1lKSB7CisgIEVYUEVDVF9FUSgiMjAxMS0wOS0yOFQxNzowODoyMiIsCisgICAgICAgICAg
ICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSgxMzE3MjI5NzAyICoga01pbGxpc1Bl
clNlYykpOworfQorCitURVNUX0YoRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0
LCBQcmludHNFcG9jaFN0YXJ0KSB7CisgIEVYUEVDVF9FUSgiMTk3MC0wMS0wMVQwMDowMDowMCIs
IEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKDApKTsKK30KKwogI2lmIEdURVNUX0NB
Tl9DT01QQVJFX05VTEwKIAotI2lmZGVmIF9fQk9STEFORENfXworIyBpZmRlZiBfX0JPUkxBTkRD
X18KIC8vIFNpbGVuY2VzIHdhcm5pbmdzOiAiQ29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlIiwgIlVu
cmVhY2hhYmxlIGNvZGUiCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gKLSNlbmRp
ZgorIyAgcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gKKyMgZW5kaWYKIAogLy8gVGVz
dHMgdGhhdCBHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHgpIGlzIHRydWUgd2hlbiB4IGlzIGEgbnVs
bAogLy8gcG9pbnRlciBsaXRlcmFsLgpAQCAtMzAzLDE0ICs1MjcsNiBAQCBURVNUKE51bGxMaXRl
cmFsVGVzdCwgSXNUcnVlRm9yTnVsbExpdGVyYWxzKSB7CiAgIEVYUEVDVF9UUlVFKEdURVNUX0lT
X05VTExfTElURVJBTF8oMCkpOwogICBFWFBFQ1RfVFJVRShHVEVTVF9JU19OVUxMX0xJVEVSQUxf
KDBVKSk7CiAgIEVYUEVDVF9UUlVFKEdURVNUX0lTX05VTExfTElURVJBTF8oMEwpKTsKLSAgRVhQ
RUNUX1RSVUUoR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyhmYWxzZSkpOwotI2lmbmRlZiBfX0JPUkxB
TkRDX18KLSAgLy8gU29tZSBjb21waWxlcnMgbWF5IGZhaWwgdG8gZGV0ZWN0IHNvbWUgbnVsbCBw
b2ludGVyIGxpdGVyYWxzOwotICAvLyBhcyBsb25nIGFzIHVzZXJzIG9mIHRoZSBmcmFtZXdvcmsg
ZG9uJ3QgdXNlIHN1Y2ggbGl0ZXJhbHMsIHRoaXMKLSAgLy8gaXMgaGFybWxlc3MuCi0gIEVYUEVD
VF9UUlVFKEdURVNUX0lTX05VTExfTElURVJBTF8oMSAtIDEpKTsKLSAgRVhQRUNUX1RSVUUoR1RF
U1RfSVNfTlVMTF9MSVRFUkFMXyh0cnVlICYmIGZhbHNlKSk7Ci0jZW5kaWYKIH0KIAogLy8gVGVz
dHMgdGhhdCBHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHgpIGlzIGZhbHNlIHdoZW4geCBpcyBub3Qg
YSBudWxsCkBAIC0zMjIsMTAgKzUzOCwxMCBAQCBURVNUKE51bGxMaXRlcmFsVGVzdCwgSXNGYWxz
ZUZvck5vbk51bGxMaXRlcmFscykgewogICBFWFBFQ1RfRkFMU0UoR1RFU1RfSVNfTlVMTF9MSVRF
UkFMXyhzdGF0aWNfY2FzdDx2b2lkKj4oTlVMTCkpKTsKIH0KIAotI2lmZGVmIF9fQk9STEFORENf
XworIyBpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZp
b3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXBwcmVzc2VkIHRoZW0uCi0jcHJhZ21hIG9wdGlv
biBwb3AKLSNlbmRpZgorIyAgcHJhZ21hIG9wdGlvbiBwb3AKKyMgZW5kaWYKIAogI2VuZGlmICAv
LyBHVEVTVF9DQU5fQ09NUEFSRV9OVUxMCiAvLwpAQCAtMzMzLDM5ICs1NDksNDEgQEAgVEVTVChO
dWxsTGl0ZXJhbFRlc3QsIElzRmFsc2VGb3JOb25OdWxsTGl0ZXJhbHMpIHsKIAogLy8gVGVzdHMg
dGhhdCB0aGUgTlVMIGNoYXJhY3RlciBMJ1wwJyBpcyBlbmNvZGVkIGNvcnJlY3RseS4KIFRFU1Qo
Q29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2RlTnVsKSB7Ci0gIGNoYXIgYnVmZmVyWzMyXTsK
LSAgRVhQRUNUX1NUUkVRKCIiLCBDb2RlUG9pbnRUb1V0ZjgoTCdcMCcsIGJ1ZmZlcikpOworICBF
WFBFQ1RfRVEoIiIsIENvZGVQb2ludFRvVXRmOChMJ1wwJykpOwogfQogCiAvLyBUZXN0cyB0aGF0
IEFTQ0lJIGNoYXJhY3RlcnMgYXJlIGVuY29kZWQgY29ycmVjdGx5LgogVEVTVChDb2RlUG9pbnRU
b1V0ZjhUZXN0LCBDYW5FbmNvZGVBc2NpaSkgewotICBjaGFyIGJ1ZmZlclszMl07Ci0gIEVYUEVD
VF9TVFJFUSgiYSIsIENvZGVQb2ludFRvVXRmOChMJ2EnLCBidWZmZXIpKTsKLSAgRVhQRUNUX1NU
UkVRKCJaIiwgQ29kZVBvaW50VG9VdGY4KEwnWicsIGJ1ZmZlcikpOwotICBFWFBFQ1RfU1RSRVEo
IiYiLCBDb2RlUG9pbnRUb1V0ZjgoTCcmJywgYnVmZmVyKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHg3
RiIsIENvZGVQb2ludFRvVXRmOChMJ1x4N0YnLCBidWZmZXIpKTsKKyAgRVhQRUNUX0VRKCJhIiwg
Q29kZVBvaW50VG9VdGY4KEwnYScpKTsKKyAgRVhQRUNUX0VRKCJaIiwgQ29kZVBvaW50VG9VdGY4
KEwnWicpKTsKKyAgRVhQRUNUX0VRKCImIiwgQ29kZVBvaW50VG9VdGY4KEwnJicpKTsKKyAgRVhQ
RUNUX0VRKCJceDdGIiwgQ29kZVBvaW50VG9VdGY4KEwnXHg3RicpKTsKIH0KIAogLy8gVGVzdHMg
dGhhdCBVbmljb2RlIGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSA4IHRvIDExIGJpdHMgYXJlIGVuY29k
ZWQKIC8vIGFzIDExMHh4eHh4IDEweHh4eHh4LgogVEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBD
YW5FbmNvZGU4VG8xMUJpdHMpIHsKLSAgY2hhciBidWZmZXJbMzJdOwogICAvLyAwMDAgMTEwMSAw
MDExID0+IDExMC0wMDAxMSAxMC0wMTAwMTEKLSAgRVhQRUNUX1NUUkVRKCJceEMzXHg5MyIsIENv
ZGVQb2ludFRvVXRmOChMJ1x4RDMnLCBidWZmZXIpKTsKKyAgRVhQRUNUX0VRKCJceEMzXHg5MyIs
IENvZGVQb2ludFRvVXRmOChMJ1x4RDMnKSk7CiAKICAgLy8gMTAxIDAxMTEgMDExMCA9PiAxMTAt
MTAxMDEgMTAtMTEwMTEwCi0gIEVYUEVDVF9TVFJFUSgiXHhENVx4QjYiLCBDb2RlUG9pbnRUb1V0
ZjgoTCdceDU3NicsIGJ1ZmZlcikpOworICAvLyBTb21lIGNvbXBpbGVycyAoZS5nLiwgR0NDIG9u
IE1pbkdXKSBjYW5ub3QgaGFuZGxlIG5vbi1BU0NJSSBjb2RlcG9pbnRzCisgIC8vIGluIHdpZGUg
c3RyaW5ncyBhbmQgd2lkZSBjaGFycy4gSW4gb3JkZXIgdG8gYWNjb21tb2RhdGUgdGhlbSwgd2Ug
aGF2ZSB0bworICAvLyBpbnRyb2R1Y2Ugc3VjaCBjaGFyYWN0ZXIgY29uc3RhbnRzIGFzIGludGVn
ZXJzLgorICBFWFBFQ1RfRVEoIlx4RDVceEI2IiwKKyAgICAgICAgICAgIENvZGVQb2ludFRvVXRm
OChzdGF0aWNfY2FzdDx3Y2hhcl90PigweDU3NikpKTsKIH0KIAogLy8gVGVzdHMgdGhhdCBVbmlj
b2RlIGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSAxMiB0byAxNiBiaXRzIGFyZSBlbmNvZGVkCiAvLyBh
cyAxMTEweHh4eCAxMHh4eHh4eCAxMHh4eHh4eC4KIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwg
Q2FuRW5jb2RlMTJUbzE2Qml0cykgewotICBjaGFyIGJ1ZmZlclszMl07CiAgIC8vIDAwMDAgMTAw
MCAxMTAxIDAwMTEgPT4gMTExMC0wMDAwIDEwLTEwMDAxMSAxMC0wMTAwMTEKLSAgRVhQRUNUX1NU
UkVRKCJceEUwXHhBM1x4OTMiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDhEMycsIGJ1ZmZlcikpOwor
ICBFWFBFQ1RfRVEoIlx4RTBceEEzXHg5MyIsCisgICAgICAgICAgICBDb2RlUG9pbnRUb1V0Zjgo
c3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHg4RDMpKSk7CiAKICAgLy8gMTEwMCAwMTExIDAxMDAgMTEw
MSA9PiAxMTEwLTExMDAgMTAtMDExMTAxIDEwLTAwMTEwMQotICBFWFBFQ1RfU1RSRVEoIlx4RUNc
eDlEXHg4RCIsIENvZGVQb2ludFRvVXRmOChMJ1x4Qzc0RCcsIGJ1ZmZlcikpOworICBFWFBFQ1Rf
RVEoIlx4RUNceDlEXHg4RCIsCisgICAgICAgICAgICBDb2RlUG9pbnRUb1V0Zjgoc3RhdGljX2Nh
c3Q8d2NoYXJfdD4oMHhDNzREKSkpOwogfQogCiAjaWYgIUdURVNUX1dJREVfU1RSSU5HX1VTRVNf
VVRGMTZfCkBAIC0zNzYsMjIgKzU5NCwxOSBAQCBURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENh
bkVuY29kZTEyVG8xNkJpdHMpIHsKIC8vIFRlc3RzIHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0
aGF0IGhhdmUgMTcgdG8gMjEgYml0cyBhcmUgZW5jb2RlZAogLy8gYXMgMTExMTB4eHggMTB4eHh4
eHggMTB4eHh4eHggMTB4eHh4eHguCiBURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29k
ZTE3VG8yMUJpdHMpIHsKLSAgY2hhciBidWZmZXJbMzJdOwogICAvLyAwIDAwMDEgMDAwMCAxMDAw
IDExMDEgMDAxMSA9PiAxMTExMC0wMDAgMTAtMDEwMDAwIDEwLTEwMDAxMSAxMC0wMTAwMTEKLSAg
RVhQRUNUX1NUUkVRKCJceEYwXHg5MFx4QTNceDkzIiwgQ29kZVBvaW50VG9VdGY4KEwnXHgxMDhE
MycsIGJ1ZmZlcikpOworICBFWFBFQ1RfRVEoIlx4RjBceDkwXHhBM1x4OTMiLCBDb2RlUG9pbnRU
b1V0ZjgoTCdceDEwOEQzJykpOwogCiAgIC8vIDAgMDAwMSAwMDAwIDAxMDAgMDAwMCAwMDAwID0+
IDExMTEwLTAwMCAxMC0wMTAwMDAgMTAtMDEwMDAwIDEwLTAwMDAwMAotICBFWFBFQ1RfU1RSRVEo
Ilx4RjBceDkwXHg5MFx4ODAiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDEwNDAwJywgYnVmZmVyKSk7
CisgIEVYUEVDVF9FUSgiXHhGMFx4OTBceDkwXHg4MCIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA0
MDAnKSk7CiAKICAgLy8gMSAwMDAwIDEwMDAgMDExMCAwMDExIDAxMDAgPT4gMTExMTAtMTAwIDEw
LTAwMTAwMCAxMC0wMTEwMDAgMTAtMTEwMTAwCi0gIEVYUEVDVF9TVFJFUSgiXHhGNFx4ODhceDk4
XHhCNCIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA4NjM0JywgYnVmZmVyKSk7CisgIEVYUEVDVF9F
USgiXHhGNFx4ODhceDk4XHhCNCIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA4NjM0JykpOwogfQog
CiAvLyBUZXN0cyB0aGF0IGVuY29kaW5nIGFuIGludmFsaWQgY29kZS1wb2ludCBnZW5lcmF0ZXMg
dGhlIGV4cGVjdGVkIHJlc3VsdC4KIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2Rl
SW52YWxpZENvZGVQb2ludCkgewotICBjaGFyIGJ1ZmZlclszMl07Ci0gIEVYUEVDVF9TVFJFUSgi
KEludmFsaWQgVW5pY29kZSAweDEyMzRBQkNEKSIsCi0gICAgICAgICAgICAgICBDb2RlUG9pbnRU
b1V0ZjgoTCdceDEyMzRBQkNEJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiKEludmFsaWQgVW5p
Y29kZSAweDEyMzRBQkNEKSIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTIzNEFCQ0QnKSk7CiB9CiAK
ICNlbmRpZiAgLy8gIUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCkBAIC00MjAsMjAgKzYz
NSwyMyBAQCBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGU4VG8xMUJpdHMpIHsK
ICAgRVhQRUNUX1NUUkVRKCJceEMzXHg5MyIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEQzIiwgLTEp
LmNfc3RyKCkpOwogCiAgIC8vIDEwMSAwMTExIDAxMTAgPT4gMTEwLTEwMTAxIDEwLTExMDExMAot
ICBFWFBFQ1RfU1RSRVEoIlx4RDVceEI2IiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4NTc2IiwgMSku
Y19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHhENVx4QjYiLCBXaWRlU3RyaW5nVG9VdGY4KEwi
XHg1NzYiLCAtMSkuY19zdHIoKSk7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0geyAweDU3NiwgJ1ww
JyB9OworICBFWFBFQ1RfU1RSRVEoIlx4RDVceEI2IiwgV2lkZVN0cmluZ1RvVXRmOChzLCAxKS5j
X3N0cigpKTsKKyAgRVhQRUNUX1NUUkVRKCJceEQ1XHhCNiIsIFdpZGVTdHJpbmdUb1V0Zjgocywg
LTEpLmNfc3RyKCkpOwogfQogCiAvLyBUZXN0cyB0aGF0IFVuaWNvZGUgY29kZS1wb2ludHMgdGhh
dCBoYXZlIDEyIHRvIDE2IGJpdHMgYXJlIGVuY29kZWQKIC8vIGFzIDExMTB4eHh4IDEweHh4eHh4
IDEweHh4eHh4LgogVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgQ2FuRW5jb2RlMTJUbzE2Qml0
cykgewogICAvLyAwMDAwIDEwMDAgMTEwMSAwMDExID0+IDExMTAtMDAwMCAxMC0xMDAwMTEgMTAt
MDEwMDExCi0gIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lkZVN0cmluZ1RvVXRmOChM
Ilx4OEQzIiwgMSkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lk
ZVN0cmluZ1RvVXRmOChMIlx4OEQzIiwgLTEpLmNfc3RyKCkpOworICBjb25zdCB3Y2hhcl90IHMx
W10gPSB7IDB4OEQzLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lk
ZVN0cmluZ1RvVXRmOChzMSwgMSkuY19zdHIoKSk7CisgIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNc
eDkzIiwgV2lkZVN0cmluZ1RvVXRmOChzMSwgLTEpLmNfc3RyKCkpOwogCiAgIC8vIDExMDAgMDEx
MSAwMTAwIDExMDEgPT4gMTExMC0xMTAwIDEwLTAxMTEwMSAxMC0wMDExMDEKLSAgRVhQRUNUX1NU
UkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhDNzREIiwgMSkuY19zdHIo
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHhFQ1x4OURceDhEIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4
Qzc0RCIsIC0xKS5jX3N0cigpKTsKKyAgY29uc3Qgd2NoYXJfdCBzMltdID0geyAweEM3NEQsICdc
MCcgfTsKKyAgRVhQRUNUX1NUUkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5nVG9VdGY4KHMy
LCAxKS5jX3N0cigpKTsKKyAgRVhQRUNUX1NUUkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5n
VG9VdGY4KHMyLCAtMSkuY19zdHIoKSk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgdGhlIGNvbnZlcnNp
b24gc3RvcHMgd2hlbiB0aGUgZnVuY3Rpb24gZW5jb3VudGVycyBcMCBjaGFyYWN0ZXIuCkBAIC00
NDcsNyArNjY1LDYgQEAgVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgU3RvcHNXaGVuTGVuZ3Ro
TGltaXRSZWFjaGVkKSB7CiAgIEVYUEVDVF9TVFJFUSgiQUJDIiwgV2lkZVN0cmluZ1RvVXRmOChM
IkFCQ0RFRiIsIDMpLmNfc3RyKCkpOwogfQogCi0KICNpZiAhR1RFU1RfV0lERV9TVFJJTkdfVVNF
U19VVEYxNl8KIC8vIFRlc3RzIHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0aGF0IGhhdmUgMTcg
dG8gMjEgYml0cyBhcmUgZW5jb2RlZAogLy8gYXMgMTExMTB4eHggMTB4eHh4eHggMTB4eHh4eHgg
MTB4eHh4eHguIFRoaXMgY29kZSBtYXkgbm90IGNvbXBpbGUKQEAgLTQ3MSwyNSArNjg4LDI5IEBA
IFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENhbkVuY29kZUludmFsaWRDb2RlUG9pbnQpIHsK
IC8vIFRlc3RzIHRoYXQgc3Vycm9nYXRlIHBhaXJzIGFyZSBlbmNvZGVkIGNvcnJlY3RseSBvbiB0
aGUgc3lzdGVtcyB1c2luZwogLy8gVVRGLTE2IGVuY29kaW5nIGluIHRoZSB3aWRlIHN0cmluZ3Mu
CiBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGVWYWxpZFV0ZjE2U1Vycm9nYXRl
UGFpcnMpIHsKLSAgRVhQRUNUX1NUUkVRKCJceEYwXHg5MFx4OTBceDgwIiwKLSAgICAgICAgICAg
ICAgIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEQ4MDFceERDMDAiLCAtMSkuY19zdHIoKSk7CisgIGNv
bnN0IHdjaGFyX3Qgc1tdID0geyAweEQ4MDEsIDB4REMwMCwgJ1wwJyB9OworICBFWFBFQ1RfU1RS
RVEoIlx4RjBceDkwXHg5MFx4ODAiLCBXaWRlU3RyaW5nVG9VdGY4KHMsIC0xKS5jX3N0cigpKTsK
IH0KIAogLy8gVGVzdHMgdGhhdCBlbmNvZGluZyBhbiBpbnZhbGlkIFVURi0xNiBzdXJyb2dhdGUg
cGFpcgogLy8gZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCByZXN1bHQuCiBURVNUKFdpZGVTdHJpbmdU
b1V0ZjhUZXN0LCBDYW5FbmNvZGVJbnZhbGlkVXRmMTZTdXJyb2dhdGVQYWlyKSB7CiAgIC8vIExl
YWRpbmcgc3Vycm9nYXRlIGlzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZy4KLSAgRVhQRUNUX1NU
UkVRKCJceEVEXHhBMFx4ODAiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhEODAwIiwgLTEpLmNfc3Ry
KCkpOworICBjb25zdCB3Y2hhcl90IHMxW10gPSB7IDB4RDgwMCwgJ1wwJyB9OworICBFWFBFQ1Rf
U1RSRVEoIlx4RURceEEwXHg4MCIsIFdpZGVTdHJpbmdUb1V0ZjgoczEsIC0xKS5jX3N0cigpKTsK
ICAgLy8gTGVhZGluZyBzdXJyb2dhdGUgaXMgbm90IGZvbGxvd2VkIGJ5IHRoZSB0cmFpbGluZyBz
dXJyb2dhdGUuCi0gIEVYUEVDVF9TVFJFUSgiXHhFRFx4QTBceDgwJCIsIFdpZGVTdHJpbmdUb1V0
ZjgoTCJceEQ4MDAkIiwgLTEpLmNfc3RyKCkpOworICBjb25zdCB3Y2hhcl90IHMyW10gPSB7IDB4
RDgwMCwgJ00nLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhFRFx4QTBceDgwTSIsIFdpZGVT
dHJpbmdUb1V0ZjgoczIsIC0xKS5jX3N0cigpKTsKICAgLy8gVHJhaWxpbmcgc3Vycm9nYXRlIGFw
cGVhcmFzIHdpdGhvdXQgYSBsZWFkaW5nIHN1cnJvZ2F0ZS4KLSAgRVhQRUNUX1NUUkVRKCJceEVE
XHhCMFx4ODBQUVIiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhEQzAwUFFSIiwgLTEpLmNfc3RyKCkp
OworICBjb25zdCB3Y2hhcl90IHMzW10gPSB7IDB4REMwMCwgJ1AnLCAnUScsICdSJywgJ1wwJyB9
OworICBFWFBFQ1RfU1RSRVEoIlx4RURceEIwXHg4MFBRUiIsIFdpZGVTdHJpbmdUb1V0ZjgoczMs
IC0xKS5jX3N0cigpKTsKIH0KICNlbmRpZiAgLy8gIUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRG
MTZfCiAKIC8vIFRlc3RzIHRoYXQgY29kZXBvaW50IGNvbmNhdGVuYXRpb24gd29ya3MgY29ycmVj
dGx5LgogI2lmICFHVEVTVF9XSURFX1NUUklOR19VU0VTX1VURjE2XwogVEVTVChXaWRlU3RyaW5n
VG9VdGY4VGVzdCwgQ29uY2F0ZW5hdGVzQ29kZXBvaW50c0NvcnJlY3RseSkgeworICBjb25zdCB3
Y2hhcl90IHNbXSA9IHsgMHgxMDg2MzQsIDB4Qzc0RCwgJ1xuJywgMHg1NzYsIDB4OEQzLCAweDEw
ODYzNCwgJ1wwJ307CiAgIEVYUEVDVF9TVFJFUSgKICAgICAgICJceEY0XHg4OFx4OThceEI0Igog
ICAgICAgICAgICJceEVDXHg5RFx4OEQiCkBAIC00OTcsMTMgKzcxOCwxNCBAQCBURVNUKFdpZGVT
dHJpbmdUb1V0ZjhUZXN0LCBDb25jYXRlbmF0ZXNDb2RlcG9pbnRzQ29ycmVjdGx5KSB7CiAgICAg
ICAgICAgIlx4RDVceEI2IgogICAgICAgICAgICJceEUwXHhBM1x4OTMiCiAgICAgICAgICAgIlx4
RjRceDg4XHg5OFx4QjQiLAotICAgICAgV2lkZVN0cmluZ1RvVXRmOChMIlx4MTA4NjM0XHhDNzRE
XG5ceDU3Nlx4OEQzXHgxMDg2MzQiLCAtMSkuY19zdHIoKSk7CisgICAgICBXaWRlU3RyaW5nVG9V
dGY4KHMsIC0xKS5jX3N0cigpKTsKIH0KICNlbHNlCiBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0
LCBDb25jYXRlbmF0ZXNDb2RlcG9pbnRzQ29ycmVjdGx5KSB7CisgIGNvbnN0IHdjaGFyX3Qgc1td
ID0geyAweEM3NEQsICdcbicsIDB4NTc2LCAweDhEMywgJ1wwJ307CiAgIEVYUEVDVF9TVFJFUSgK
ICAgICAgICJceEVDXHg5RFx4OEQiICJcbiIgIlx4RDVceEI2IiAiXHhFMFx4QTNceDkzIiwKLSAg
ICAgIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEM3NERcblx4NTc2XHg4RDMiLCAtMSkuY19zdHIoKSk7
CisgICAgICBXaWRlU3RyaW5nVG9VdGY4KHMsIC0xKS5jX3N0cigpKTsKIH0KICNlbmRpZiAgLy8g
IUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCiAKQEAgLTc5NywyNjkgKzEwMTksMTYgQEAg
VEVTVChBc3NlcnRIZWxwZXJUZXN0LCBBc3NlcnRIZWxwZXJJc1NtYWxsKSB7CiAgIEVYUEVDVF9M
RShzaXplb2YodGVzdGluZzo6aW50ZXJuYWw6OkFzc2VydEhlbHBlciksIHNpemVvZih2b2lkKikp
OwogfQogCi0vLyBUZXN0cyB0aGUgU3RyaW5nIGNsYXNzLgotCi0vLyBUZXN0cyBTdHJpbmcncyBj
b25zdHJ1Y3RvcnMuCi1URVNUKFN0cmluZ1Rlc3QsIENvbnN0cnVjdG9ycykgewotICAvLyBEZWZh
dWx0IGN0b3IuCi0gIFN0cmluZyBzMTsKLSAgLy8gV2UgYXJlbid0IHVzaW5nIEVYUEVDVF9FUShO
VUxMLCBzMS5jX3N0cigpKSBiZWNhdXNlIGNvbXBhcmluZwotICAvLyBwb2ludGVycyB3aXRoIE5V
TEwgaXNuJ3Qgc3VwcG9ydGVkIG9uIGFsbCBwbGF0Zm9ybXMuCi0gIEVYUEVDVF9FUSgwVSwgczEu
bGVuZ3RoKCkpOwotICBFWFBFQ1RfVFJVRShOVUxMID09IHMxLmNfc3RyKCkpOwotCi0gIC8vIElt
cGxpY2l0bHkgY29uc3RydWN0cyBmcm9tIGEgQy1zdHJpbmcuCi0gIFN0cmluZyBzMiA9ICJIaSI7
Ci0gIEVYUEVDVF9FUSgyVSwgczIubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoIkhpIiwgczIu
Y19zdHIoKSk7Ci0KLSAgLy8gQ29uc3RydWN0cyBmcm9tIGEgQy1zdHJpbmcgYW5kIGEgbGVuZ3Ro
LgotICBTdHJpbmcgczMoImhlbGxvIiwgMyk7Ci0gIEVYUEVDVF9FUSgzVSwgczMubGVuZ3RoKCkp
OwotICBFWFBFQ1RfU1RSRVEoImhlbCIsIHMzLmNfc3RyKCkpOwotCi0gIC8vIFRoZSBlbXB0eSBT
dHJpbmcgc2hvdWxkIGJlIGNyZWF0ZWQgd2hlbiBTdHJpbmcgaXMgY29uc3RydWN0ZWQgd2l0aAot
ICAvLyBhIE5VTEwgcG9pbnRlciBhbmQgbGVuZ3RoIDAuCi0gIEVYUEVDVF9FUSgwVSwgU3RyaW5n
KE5VTEwsIDApLmxlbmd0aCgpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZyhOVUxMLCAwKS5jX3N0
cigpID09IE5VTEwpOwotCi0gIC8vIENvbnN0cnVjdHMgYSBTdHJpbmcgdGhhdCBjb250YWlucyAn
XDAnLgotICBTdHJpbmcgczQoImFcMGJjZCIsIDQpOwotICBFWFBFQ1RfRVEoNFUsIHM0Lmxlbmd0
aCgpKTsKLSAgRVhQRUNUX0VRKCdhJywgczQuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgnXDAn
LCBzNC5jX3N0cigpWzFdKTsKLSAgRVhQRUNUX0VRKCdiJywgczQuY19zdHIoKVsyXSk7Ci0gIEVY
UEVDVF9FUSgnYycsIHM0LmNfc3RyKClbM10pOwotCi0gIC8vIENvcHkgY3RvciB3aGVyZSB0aGUg
c291cmNlIGlzIE5VTEwuCi0gIGNvbnN0IFN0cmluZyBudWxsX3N0cjsKLSAgU3RyaW5nIHM1ID0g
bnVsbF9zdHI7Ci0gIEVYUEVDVF9UUlVFKHM1LmNfc3RyKCkgPT0gTlVMTCk7Ci0KLSAgLy8gQ29w
eSBjdG9yIHdoZXJlIHRoZSBzb3VyY2UgaXNuJ3QgTlVMTC4KLSAgU3RyaW5nIHM2ID0gczM7Ci0g
IEVYUEVDVF9FUSgzVSwgczYubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoImhlbCIsIHM2LmNf
c3RyKCkpOwotCi0gIC8vIENvcHkgY3RvciB3aGVyZSB0aGUgc291cmNlIGNvbnRhaW5zICdcMCcu
Ci0gIFN0cmluZyBzNyA9IHM0OwotICBFWFBFQ1RfRVEoNFUsIHM3Lmxlbmd0aCgpKTsKLSAgRVhQ
RUNUX0VRKCdhJywgczcuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgnXDAnLCBzNy5jX3N0cigp
WzFdKTsKLSAgRVhQRUNUX0VRKCdiJywgczcuY19zdHIoKVsyXSk7Ci0gIEVYUEVDVF9FUSgnYycs
IHM3LmNfc3RyKClbM10pOwotfQotCi1URVNUKFN0cmluZ1Rlc3QsIENvbnZlcnRzRnJvbVN0ZFN0
cmluZykgewotICAvLyBBbiBlbXB0eSBzdGQ6OnN0cmluZy4KLSAgY29uc3Qgc3RkOjpzdHJpbmcg
c3JjMSgiIik7Ci0gIGNvbnN0IFN0cmluZyBkZXN0MSA9IHNyYzE7Ci0gIEVYUEVDVF9FUSgwVSwg
ZGVzdDEubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIGRlc3QxLmNfc3RyKCkpOwotCi0g
IC8vIEEgbm9ybWFsIHN0ZDo6c3RyaW5nLgotICBjb25zdCBzdGQ6OnN0cmluZyBzcmMyKCJIaSIp
OwotICBjb25zdCBTdHJpbmcgZGVzdDIgPSBzcmMyOwotICBFWFBFQ1RfRVEoMlUsIGRlc3QyLmxl
bmd0aCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJIaSIsIGRlc3QyLmNfc3RyKCkpOwotCi0gIC8vIEFu
IHN0ZDo6c3RyaW5nIHdpdGggYW4gZW1iZWRkZWQgTlVMIGNoYXJhY3Rlci4KLSAgY29uc3QgY2hh
ciBzcmMzW10gPSAiYVwwYiI7Ci0gIGNvbnN0IFN0cmluZyBkZXN0MyA9IHN0ZDo6c3RyaW5nKHNy
YzMsIHNpemVvZihzcmMzKSk7Ci0gIEVYUEVDVF9FUShzaXplb2Yoc3JjMyksIGRlc3QzLmxlbmd0
aCgpKTsKLSAgRVhQRUNUX0VRKCdhJywgZGVzdDMuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgn
XDAnLCBkZXN0My5jX3N0cigpWzFdKTsKLSAgRVhQRUNUX0VRKCdiJywgZGVzdDMuY19zdHIoKVsy
XSk7Ci19Ci0KLVRFU1QoU3RyaW5nVGVzdCwgQ29udmVydHNUb1N0ZFN0cmluZykgewotICAvLyBB
biBlbXB0eSBTdHJpbmcuCi0gIGNvbnN0IFN0cmluZyBzcmMxKCIiKTsKLSAgY29uc3Qgc3RkOjpz
dHJpbmcgZGVzdDEgPSBzcmMxOwotICBFWFBFQ1RfRVEoIiIsIGRlc3QxKTsKLQotICAvLyBBIG5v
cm1hbCBTdHJpbmcuCi0gIGNvbnN0IFN0cmluZyBzcmMyKCJIaSIpOwotICBjb25zdCBzdGQ6OnN0
cmluZyBkZXN0MiA9IHNyYzI7Ci0gIEVYUEVDVF9FUSgiSGkiLCBkZXN0Mik7Ci0KLSAgLy8gQSBT
dHJpbmcgY29udGFpbmluZyBhICdcMCcuCi0gIGNvbnN0IFN0cmluZyBzcmMzKCJ4XDB5IiwgMyk7
Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGRlc3QzID0gc3JjMzsKLSAgRVhQRUNUX0VRKHN0ZDo6c3Ry
aW5nKCJ4XDB5IiwgMyksIGRlc3QzKTsKLX0KLQotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5H
Ci0KLVRFU1QoU3RyaW5nVGVzdCwgQ29udmVydHNGcm9tR2xvYmFsU3RyaW5nKSB7Ci0gIC8vIEFu
IGVtcHR5IDo6c3RyaW5nLgotICBjb25zdCA6OnN0cmluZyBzcmMxKCIiKTsKLSAgY29uc3QgU3Ry
aW5nIGRlc3QxID0gc3JjMTsKLSAgRVhQRUNUX0VRKDBVLCBkZXN0MS5sZW5ndGgoKSk7Ci0gIEVY
UEVDVF9TVFJFUSgiIiwgZGVzdDEuY19zdHIoKSk7Ci0KLSAgLy8gQSBub3JtYWwgOjpzdHJpbmcu
Ci0gIGNvbnN0IDo6c3RyaW5nIHNyYzIoIkhpIik7Ci0gIGNvbnN0IFN0cmluZyBkZXN0MiA9IHNy
YzI7Ci0gIEVYUEVDVF9FUSgyVSwgZGVzdDIubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoIkhp
IiwgZGVzdDIuY19zdHIoKSk7Ci0KLSAgLy8gQW4gOjpzdHJpbmcgd2l0aCBhbiBlbWJlZGRlZCBO
VUwgY2hhcmFjdGVyLgotICBjb25zdCBjaGFyIHNyYzNbXSA9ICJ4XDB5IjsKLSAgY29uc3QgU3Ry
aW5nIGRlc3QzID0gOjpzdHJpbmcoc3JjMywgc2l6ZW9mKHNyYzMpKTsKLSAgRVhQRUNUX0VRKHNp
emVvZihzcmMzKSwgZGVzdDMubGVuZ3RoKCkpOwotICBFWFBFQ1RfRVEoJ3gnLCBkZXN0My5jX3N0
cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdcMCcsIGRlc3QzLmNfc3RyKClbMV0pOwotICBFWFBFQ1Rf
RVEoJ3knLCBkZXN0My5jX3N0cigpWzJdKTsKLX0KLQotVEVTVChTdHJpbmdUZXN0LCBDb252ZXJ0
c1RvR2xvYmFsU3RyaW5nKSB7Ci0gIC8vIEFuIGVtcHR5IFN0cmluZy4KLSAgY29uc3QgU3RyaW5n
IHNyYzEoIiIpOwotICBjb25zdCA6OnN0cmluZyBkZXN0MSA9IHNyYzE7Ci0gIEVYUEVDVF9FUSgi
IiwgZGVzdDEpOwotCi0gIC8vIEEgbm9ybWFsIFN0cmluZy4KLSAgY29uc3QgU3RyaW5nIHNyYzIo
IkhpIik7Ci0gIGNvbnN0IDo6c3RyaW5nIGRlc3QyID0gc3JjMjsKLSAgRVhQRUNUX0VRKCJIaSIs
IGRlc3QyKTsKLQotICBjb25zdCBTdHJpbmcgc3JjMygieFwweSIsIDMpOwotICBjb25zdCA6OnN0
cmluZyBkZXN0MyA9IHNyYzM7Ci0gIEVYUEVDVF9FUSg6OnN0cmluZygieFwweSIsIDMpLCBkZXN0
Myk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLQotLy8gVGVzdHMg
U3RyaW5nOjpTaG93Q1N0cmluZ1F1b3RlZCgpLgotVEVTVChTdHJpbmdUZXN0LCBTaG93Q1N0cmlu
Z1F1b3RlZCkgewotICBFWFBFQ1RfU1RSRVEoIihudWxsKSIsCi0gICAgICAgICAgICAgICBTdHJp
bmc6OlNob3dDU3RyaW5nUXVvdGVkKE5VTEwpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIlwi
XCIiLAotICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93Q1N0cmluZ1F1b3RlZCgiIikuY19zdHIo
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiXCJmb29cIiIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OlNo
b3dDU3RyaW5nUXVvdGVkKCJmb28iKS5jX3N0cigpKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpl
bXB0eSgpLgotVEVTVChTdHJpbmdUZXN0LCBFbXB0eSkgewotICBFWFBFQ1RfVFJVRShTdHJpbmco
IiIpLmVtcHR5KCkpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCkuZW1wdHkoKSk7Ci0gIEVYUEVD
VF9GQUxTRShTdHJpbmcoTlVMTCkuZW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShTdHJpbmcoImEi
KS5lbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiXDAiLCAxKS5lbXB0eSgpKTsKLX0K
LQotLy8gVGVzdHMgU3RyaW5nOjpDb21wYXJlKCkuCi1URVNUKFN0cmluZ1Rlc3QsIENvbXBhcmUp
IHsKLSAgLy8gTlVMTCB2cyBOVUxMLgotICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCkuQ29tcGFyZShT
dHJpbmcoKSkpOwotCi0gIC8vIE5VTEwgdnMgbm9uLU5VTEwuCi0gIEVYUEVDVF9FUSgtMSwgU3Ry
aW5nKCkuQ29tcGFyZShTdHJpbmcoIiIpKSk7Ci0KLSAgLy8gTm9uLU5VTEwgdnMgTlVMTC4KLSAg
RVhQRUNUX0VRKDEsIFN0cmluZygiIikuQ29tcGFyZShTdHJpbmcoKSkpOwotCi0gIC8vIFRoZSBm
b2xsb3dpbmcgY292ZXJzIG5vbi1OVUxMIHZzIG5vbi1OVUxMLgotCi0gIC8vICIiIHZzICIiLgot
ICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCIiKS5Db21wYXJlKFN0cmluZygiIikpKTsKLQotICAvLyAi
IiB2cyBub24tIiIuCi0gIEVYUEVDVF9FUSgtMSwgU3RyaW5nKCIiKS5Db21wYXJlKFN0cmluZygi
XDAiLCAxKSkpOwotICBFWFBFQ1RfRVEoLTEsIFN0cmluZygiIikuQ29tcGFyZSgiICIpKTsKLQot
ICAvLyBOb24tIiIgdnMgIiIuCi0gIEVYUEVDVF9FUSgxLCBTdHJpbmcoImEiKS5Db21wYXJlKFN0
cmluZygiIikpKTsKLQotICAvLyBUaGUgZm9sbG93aW5nIGNvdmVycyBub24tIiIgdnMgbm9uLSIi
LgotCi0gIC8vIFNhbWUgbGVuZ3RoIGFuZCBlcXVhbC4KLSAgRVhQRUNUX0VRKDAsIFN0cmluZygi
YSIpLkNvbXBhcmUoU3RyaW5nKCJhIikpKTsKLQotICAvLyBTYW1lIGxlbmd0aCBhbmQgZGlmZmVy
ZW50LgotICBFWFBFQ1RfRVEoLTEsIFN0cmluZygiYVwwYiIsIDMpLkNvbXBhcmUoU3RyaW5nKCJh
XDBjIiwgMykpKTsKLSAgRVhQRUNUX0VRKDEsIFN0cmluZygiYiIpLkNvbXBhcmUoU3RyaW5nKCJh
IikpKTsKLQotICAvLyBEaWZmZXJlbnQgbGVuZ3Rocy4KLSAgRVhQRUNUX0VRKC0xLCBTdHJpbmco
ImEiKS5Db21wYXJlKFN0cmluZygiYWIiKSkpOwotICBFWFBFQ1RfRVEoLTEsIFN0cmluZygiYSIp
LkNvbXBhcmUoU3RyaW5nKCJhXDAiLCAyKSkpOwotICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCJhYmMi
KS5Db21wYXJlKFN0cmluZygiYWFjZCIpKSk7Ci19Ci0KLS8vIFRlc3RzIFN0cmluZzo6b3BlcmF0
b3I9PSgpLgotVEVTVChTdHJpbmdUZXN0LCBFcXVhbHMpIHsKLSAgY29uc3QgU3RyaW5nIG51bGwo
TlVMTCk7Ci0gIEVYUEVDVF9UUlVFKG51bGwgPT0gTlVMTCk7ICAvLyBOT0xJTlQKLSAgRVhQRUNU
X0ZBTFNFKG51bGwgPT0gIiIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShudWxsID09ICJi
YXIiKTsgIC8vIE5PTElOVAotCi0gIGNvbnN0IFN0cmluZyBlbXB0eSgiIik7Ci0gIEVYUEVDVF9G
QUxTRShlbXB0eSA9PSBOVUxMKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShlbXB0eSA9PSAi
Iik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKGVtcHR5ID09ICJiYXIiKTsgIC8vIE5PTElO
VAotCi0gIGNvbnN0IFN0cmluZyBmb28oImZvbyIpOwotICBFWFBFQ1RfRkFMU0UoZm9vID09IE5V
TEwpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShmb28gPT0gIiIpOyAgLy8gTk9MSU5UCi0g
IEVYUEVDVF9GQUxTRShmb28gPT0gImJhciIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKGZv
byA9PSAiZm9vIik7ICAvLyBOT0xJTlQKLQotICBjb25zdCBTdHJpbmcgYmFyKCJ4XDB5IiwgMyk7
Ci0gIEVYUEVDVF9GQUxTRShiYXIgPT0gIngiKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpvcGVy
YXRvciE9KCkuCi1URVNUKFN0cmluZ1Rlc3QsIE5vdEVxdWFscykgewotICBjb25zdCBTdHJpbmcg
bnVsbChOVUxMKTsKLSAgRVhQRUNUX0ZBTFNFKG51bGwgIT0gTlVMTCk7ICAvLyBOT0xJTlQKLSAg
RVhQRUNUX1RSVUUobnVsbCAhPSAiIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUobnVsbCAh
PSAiYmFyIik7ICAvLyBOT0xJTlQKLQotICBjb25zdCBTdHJpbmcgZW1wdHkoIiIpOwotICBFWFBF
Q1RfVFJVRShlbXB0eSAhPSBOVUxMKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRkFMU0UoZW1wdHkg
IT0gIiIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKGVtcHR5ICE9ICJiYXIiKTsgIC8vIE5P
TElOVAotCi0gIGNvbnN0IFN0cmluZyBmb28oImZvbyIpOwotICBFWFBFQ1RfVFJVRShmb28gIT0g
TlVMTCk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUoZm9vICE9ICIiKTsgIC8vIE5PTElOVAot
ICBFWFBFQ1RfVFJVRShmb28gIT0gImJhciIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShm
b28gIT0gImZvbyIpOyAgLy8gTk9MSU5UCi0KLSAgY29uc3QgU3RyaW5nIGJhcigieFwweSIsIDMp
OwotICBFWFBFQ1RfVFJVRShiYXIgIT0gIngiKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpsZW5n
dGgoKS4KLVRFU1QoU3RyaW5nVGVzdCwgTGVuZ3RoKSB7Ci0gIEVYUEVDVF9FUSgwVSwgU3RyaW5n
KCkubGVuZ3RoKCkpOwotICBFWFBFQ1RfRVEoMFUsIFN0cmluZygiIikubGVuZ3RoKCkpOwotICBF
WFBFQ1RfRVEoMlUsIFN0cmluZygiYWIiKS5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgzVSwgU3Ry
aW5nKCJhXDBiIiwgMykubGVuZ3RoKCkpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6OkVuZHNXaXRo
KCkuCi1URVNUKFN0cmluZ1Rlc3QsIEVuZHNXaXRoKSB7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygi
Zm9vYmFyIikuRW5kc1dpdGgoImJhciIpKTsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCJmb29iYXIi
KS5FbmRzV2l0aCgiIikpOwotICBFWFBFQ1RfVFJVRShTdHJpbmcoIiIpLkVuZHNXaXRoKCIiKSk7
Ci0KLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiZm9vYmFyIikuRW5kc1dpdGgoImZvbyIpKTsKLSAg
RVhQRUNUX0ZBTFNFKFN0cmluZygiIikuRW5kc1dpdGgoImZvbyIpKTsKLX0KLQogLy8gVGVzdHMg
U3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgpLgogVEVTVChTdHJpbmdUZXN0LCBFbmRz
V2l0aENhc2VJbnNlbnNpdGl2ZSkgewotICBFWFBFQ1RfVFJVRShTdHJpbmcoImZvb2JhciIpLkVu
ZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCJCQVIiKSk7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiZm9v
YmFSIikuRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImJhciIpKTsKLSAgRVhQRUNUX1RSVUUoU3Ry
aW5nKCJmb29iYXIiKS5FbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiIikpOwotICBFWFBFQ1RfVFJV
RShTdHJpbmcoIiIpLkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCIiKSk7CisgIEVYUEVDVF9UUlVF
KFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImZvb2JhciIsICJCQVIiKSk7CisgIEVY
UEVDVF9UUlVFKFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImZvb2JhUiIsICJiYXIi
KSk7CisgIEVYUEVDVF9UUlVFKFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImZvb2Jh
ciIsICIiKSk7CisgIEVYUEVDVF9UUlVFKFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUo
IiIsICIiKSk7CiAKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiRm9vYmFyIikuRW5kc1dpdGhDYXNl
SW5zZW5zaXRpdmUoImZvbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiZm9vYmFyIikuRW5k
c1dpdGhDYXNlSW5zZW5zaXRpdmUoIkZvbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiIiku
RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImZvbyIpKTsKKyAgRVhQRUNUX0ZBTFNFKFN0cmluZzo6
RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoIkZvb2JhciIsICJmb28iKSk7CisgIEVYUEVDVF9GQUxT
RShTdHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCJmb29iYXIiLCAiRm9vIikpOworICBF
WFBFQ1RfRkFMU0UoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiIiwgImZvbyIpKTsK
IH0KIAogLy8gQysrQnVpbGRlcidzIHByZXByb2Nlc3NvciBpcyBidWdneTsgaXQgZmFpbHMgdG8g
ZXhwYW5kIG1hY3JvcyB0aGF0CkBAIC0xMDc5LDg3ICsxMDQ4LDYgQEAgVEVTVChTdHJpbmdUZXN0
LCBDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscykgewogICBFWFBFQ1RfVFJVRShTdHJp
bmc6OkNhc2VJbnNlbnNpdGl2ZVdpZGVDU3RyaW5nRXF1YWxzKEwiRk9PQkFSIiwgTCJmb29iYXIi
KSk7CiB9CiAKLS8vIFRlc3RzIHRoYXQgTlVMTCBjYW4gYmUgYXNzaWduZWQgdG8gYSBTdHJpbmcu
Ci1URVNUKFN0cmluZ1Rlc3QsIENhbkJlQXNzaWduZWROVUxMKSB7Ci0gIGNvbnN0IFN0cmluZyBz
cmMoTlVMTCk7Ci0gIFN0cmluZyBkZXN0OwotCi0gIGRlc3QgPSBzcmM7Ci0gIEVYUEVDVF9TVFJF
UShOVUxMLCBkZXN0LmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBlbXB0eSBzdHJp
bmcgIiIgY2FuIGJlIGFzc2lnbmVkIHRvIGEgU3RyaW5nLgotVEVTVChTdHJpbmdUZXN0LCBDYW5C
ZUFzc2lnbmVkRW1wdHkpIHsKLSAgY29uc3QgU3RyaW5nIHNyYygiIik7Ci0gIFN0cmluZyBkZXN0
OwotCi0gIGRlc3QgPSBzcmM7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgZGVzdC5jX3N0cigpKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBhIG5vbi1lbXB0eSBzdHJpbmcgY2FuIGJlIGFzc2lnbmVkIHRvIGEg
U3RyaW5nLgotVEVTVChTdHJpbmdUZXN0LCBDYW5CZUFzc2lnbmVkTm9uRW1wdHkpIHsKLSAgY29u
c3QgU3RyaW5nIHNyYygiaGVsbG8iKTsKLSAgU3RyaW5nIGRlc3Q7Ci0gIGRlc3QgPSBzcmM7Ci0g
IEVYUEVDVF9FUSg1VSwgZGVzdC5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiaGVsbG8iLCBk
ZXN0LmNfc3RyKCkpOwotCi0gIGNvbnN0IFN0cmluZyBzcmMyKCJ4XDB5IiwgMyk7Ci0gIFN0cmlu
ZyBkZXN0MjsKLSAgZGVzdDIgPSBzcmMyOwotICBFWFBFQ1RfRVEoM1UsIGRlc3QyLmxlbmd0aCgp
KTsKLSAgRVhQRUNUX0VRKCd4JywgZGVzdDIuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgnXDAn
LCBkZXN0Mi5jX3N0cigpWzFdKTsKLSAgRVhQRUNUX0VRKCd5JywgZGVzdDIuY19zdHIoKVsyXSk7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBTdHJpbmcgY2FuIGJlIGFzc2lnbmVkIHRvIGl0c2VsZi4K
LVRFU1QoU3RyaW5nVGVzdCwgQ2FuQmVBc3NpZ25lZFNlbGYpIHsKLSAgU3RyaW5nIGRlc3QoImhl
bGxvIik7Ci0KLSAgZGVzdCA9IGRlc3Q7Ci0gIEVYUEVDVF9TVFJFUSgiaGVsbG8iLCBkZXN0LmNf
c3RyKCkpOwotfQotCi0vLyBTdW4gU3R1ZGlvIDwgMTIgaW5jb3JyZWN0bHkgcmVqZWN0cyB0aGlz
IGNvZGUgZHVlIHRvIGFuIG92ZXJsb2FkaW5nCi0vLyBhbWJpZ3VpdHkuCi0jaWYgIShkZWZpbmVk
KF9fU1VOUFJPX0NDKSAmJiBfX1NVTlBST19DQyA8IDB4NTkwKQotLy8gVGVzdHMgc3RyZWFtaW5n
IGEgU3RyaW5nLgotVEVTVChTdHJpbmdUZXN0LCBTdHJlYW1zKSB7Ci0gIEVYUEVDVF9FUShTdHJl
YW1hYmxlVG9TdHJpbmcoU3RyaW5nKCkpLCAiKG51bGwpIik7Ci0gIEVYUEVDVF9FUShTdHJlYW1h
YmxlVG9TdHJpbmcoU3RyaW5nKCIiKSksICIiKTsKLSAgRVhQRUNUX0VRKFN0cmVhbWFibGVUb1N0
cmluZyhTdHJpbmcoImFcMGIiLCAzKSksICJhXFwwYiIpOwotfQotI2VuZGlmCi0KLS8vIFRlc3Rz
IHRoYXQgU3RyaW5nOjpGb3JtYXQoKSB3b3Jrcy4KLVRFU1QoU3RyaW5nVGVzdCwgRm9ybWF0V29y
a3MpIHsKLSAgLy8gTm9ybWFsIGNhc2U6IHRoZSBmb3JtYXQgc3BlYyBpcyB2YWxpZCwgdGhlIGFy
Z3VtZW50cyBtYXRjaCB0aGUKLSAgLy8gc3BlYywgYW5kIHRoZSByZXN1bHQgaXMgPCA0MDk1IGNo
YXJhY3RlcnMuCi0gIEVYUEVDVF9TVFJFUSgiSGVsbG8sIDQyIiwgU3RyaW5nOjpGb3JtYXQoIiVz
LCAlZCIsICJIZWxsbyIsIDQyKS5jX3N0cigpKTsKLQotICAvLyBFZGdlIGNhc2U6IHRoZSByZXN1
bHQgaXMgNDA5NSBjaGFyYWN0ZXJzLgotICBjaGFyIGJ1ZmZlcls0MDk2XTsKLSAgY29uc3Qgc2l6
ZV90IGtTaXplID0gc2l6ZW9mKGJ1ZmZlcik7Ci0gIG1lbXNldChidWZmZXIsICdhJywga1NpemUg
LSAxKTsKLSAgYnVmZmVyW2tTaXplIC0gMV0gPSAnXDAnOwotICBFWFBFQ1RfU1RSRVEoYnVmZmVy
LCBTdHJpbmc6OkZvcm1hdCgiJXMiLCBidWZmZXIpLmNfc3RyKCkpOwotCi0gIC8vIFRoZSByZXN1
bHQgbmVlZHMgdG8gYmUgNDA5NiBjaGFyYWN0ZXJzLCBleGNlZWRpbmcgRm9ybWF0KCkncyBsaW1p
dC4KLSAgRVhQRUNUX1NUUkVRKCI8Zm9ybWF0dGluZyBlcnJvciBvciBidWZmZXIgZXhjZWVkZWQ+
IiwKLSAgICAgICAgICAgICAgIFN0cmluZzo6Rm9ybWF0KCJ4JXMiLCBidWZmZXIpLmNfc3RyKCkp
OwotCi0jaWYgR1RFU1RfT1NfTElOVVgKLSAgLy8gT24gTGludXgsIGludmFsaWQgZm9ybWF0IHNw
ZWMgc2hvdWxkIGxlYWQgdG8gYW4gZXJyb3IgbWVzc2FnZS4KLSAgLy8gSW4gb3RoZXIgZW52aXJv
bm1lbnQgKGUuZy4gTVNWQyBvbiBXaW5kb3dzKSwgU3RyaW5nOjpGb3JtYXQoKSBtYXkKLSAgLy8g
c2ltcGx5IGlnbm9yZSBhIGJhZCBmb3JtYXQgc3BlYywgc28gdGhpcyBhc3NlcnRpb24gaXMgcnVu
IG9uCi0gIC8vIExpbnV4IG9ubHkuCi0gIEVYUEVDVF9TVFJFUSgiPGZvcm1hdHRpbmcgZXJyb3Ig
b3IgYnVmZmVyIGV4Y2VlZGVkPiIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OkZvcm1hdCgiJSIp
LmNfc3RyKCkpOwotI2VuZGlmCi19Ci0KICNpZiBHVEVTVF9PU19XSU5ET1dTCiAKIC8vIFRlc3Rz
IFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKCkuCkBAIC0xMTcwLDE3ICsxMDU4LDcgQEAgVEVTVChT
dHJpbmdUZXN0LCBTaG93V2lkZUNTdHJpbmcpIHsKICAgRVhQRUNUX1NUUkVRKCJmb28iLCBTdHJp
bmc6OlNob3dXaWRlQ1N0cmluZyhMImZvbyIpLmNfc3RyKCkpOwogfQogCi0vLyBUZXN0cyBTdHJp
bmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZCgpLgotVEVTVChTdHJpbmdUZXN0LCBTaG93V2lkZUNT
dHJpbmdRdW90ZWQpIHsKLSAgRVhQRUNUX1NUUkVRKCIobnVsbCkiLAotICAgICAgICAgICAgICAg
U3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoTlVMTCkuY19zdHIoKSk7Ci0gIEVYUEVDVF9T
VFJFUSgiTFwiXCIiLAotICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90
ZWQoTCIiKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJMXCJmb29cIiIsCi0gICAgICAgICAg
ICAgICBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChMImZvbyIpLmNfc3RyKCkpOwotfQot
Ci0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKIFRFU1QoU3RyaW5nVGVzdCwgQW5zaUFuZFV0ZjE2TnVsbCkgewogICBFWFBFQ1RfRVEoTlVM
TCwgU3RyaW5nOjpBbnNpVG9VdGYxNihOVUxMKSk7CiAgIEVYUEVDVF9FUShOVUxMLCBTdHJpbmc6
OlV0ZjE2VG9BbnNpKE5VTEwpKTsKQEAgLTEyMDMsNyArMTA4MSw3IEBAIFRFU1QoU3RyaW5nVGVz
dCwgQW5zaUFuZFV0ZjE2Q29udmVydFBhdGhDaGFycykgewogICBFWFBFQ1RfRVEoMCwgd2NzbmNt
cChMIi46XFwgXCIqPyIsIHV0ZjE2LCAzKSk7CiAgIGRlbGV0ZSBbXSB1dGYxNjsKIH0KLSNlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCiAKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCkBAIC0xMzE3LDYgKzEx
OTUsMTcgQEAgVEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIENhdGNoZXNGYXRhbEZhbGl1
cmUpIHsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmF0YWxGYWlsdXJlKCksICJFeHBlY3Rl
ZCBmYXRhbCBmYWlsdXJlLiIpOwogfQogCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK1RF
U1RfRihFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBBY2NlcHRzU3RyaW5nT2JqZWN0KSB7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKEFkZEZhdGFsRmFpbHVyZSgpLCA6OnN0cmluZygiRXhwZWN0ZWQg
ZmF0YWwgZmFpbHVyZS4iKSk7Cit9CisjZW5kaWYKKworVEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVy
ZVRlc3QsIEFjY2VwdHNTdGRTdHJpbmdPYmplY3QpIHsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
QWRkRmF0YWxGYWlsdXJlKCksCisgICAgICAgICAgICAgICAgICAgICAgIDo6c3RkOjpzdHJpbmco
IkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIikpOworfQorCiBURVNUX0YoRXhwZWN0RmF0YWxGYWls
dXJlVGVzdCwgQ2F0Y2hlc0ZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcykgewogICAvLyBXZSBoYXZl
IGFub3RoZXIgdGVzdCBiZWxvdyB0byB2ZXJpZnkgdGhhdCB0aGUgbWFjcm8gY2F0Y2hlcyBmYXRh
bAogICAvLyBmYWlsdXJlcyBnZW5lcmF0ZWQgb24gYW5vdGhlciB0aHJlYWQuCkBAIC0xMzI2LDcg
KzEyMTUsNyBAQCBURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc0ZhdGFsRmFp
bHVyZU9uQWxsVGhyZWFkcykgewogCiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBTaWxlbmNlcyB3
YXJuaW5nczogIkNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZSIKLSNwcmFnbWEgb3B0aW9uIHB1c2gg
LXctY2NjCisjIHByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MKICNlbmRpZgogCiAvLyBUZXN0cyB0
aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgY2FuIGJlIHVzZWQgaW4gYSBub24tdm9pZApAQCAt
MTM1NCw3ICsxMjQzLDcgQEAgdm9pZCBEb2VzTm90QWJvcnRIZWxwZXIoYm9vbCogYWJvcnRlZCkg
ewogCiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2
aW91cyAiI3ByYWdtYSBvcHRpb24gcHVzaCIgc3VwcHJlc3NlZCB0aGVtLgotI3ByYWdtYSBvcHRp
b24gcG9wCisjIHByYWdtYSBvcHRpb24gcG9wCiAjZW5kaWYKIAogVEVTVF9GKEV4cGVjdEZhdGFs
RmFpbHVyZVRlc3QsIERvZXNOb3RBYm9ydCkgewpAQCAtMTM3MSw4ICsxMjYwLDggQEAgc3RhdGlj
IGludCBnbG9iYWxfdmFyID0gMDsKICNkZWZpbmUgR1RFU1RfVVNFX1VOUFJPVEVDVEVEX0NPTU1B
XyBnbG9iYWxfdmFyKyssIGdsb2JhbF92YXIrKwogCiBURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdCwgQWNjZXB0c01hY3JvVGhhdEV4cGFuZHNUb1VucHJvdGVjdGVkQ29tbWEpIHsKLSNpZiAh
ZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IF9fQk9STEFORENfXyA+PSAweDYwMAotICAvLyBJQ0Un
cyBpbiBDKytCdWlsZGVyIDIwMDcuCisjaWZuZGVmIF9fQk9STEFORENfXworICAvLyBJQ0UncyBp
biBDKytCdWlsZGVyLgogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CiAgICAgR1RFU1RfVVNFX1VO
UFJPVEVDVEVEX0NPTU1BXzsKICAgICBBZGRGYXRhbEZhaWx1cmUoKTsKQEAgLTEzOTQsNiArMTI4
MywxOCBAQCBURVNUX0YoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc05vbmZhdGFs
RmFpbHVyZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgbm9uLWZhdGFs
IGZhaWx1cmUuIik7CiB9CiAKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworVEVTVF9GKEV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEFjY2VwdHNTdHJpbmdPYmplY3QpIHsKKyAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoQWRkTm9uZmF0YWxGYWlsdXJlKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIDo6c3RyaW5nKCJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKSk7Cit9Cisj
ZW5kaWYKKworVEVTVF9GKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEFjY2VwdHNTdGRTdHJp
bmdPYmplY3QpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQWRkTm9uZmF0YWxGYWlsdXJl
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIDo6c3RkOjpzdHJpbmcoIkV4cGVjdGVkIG5v
bi1mYXRhbCBmYWlsdXJlLiIpKTsKK30KKwogVEVTVF9GKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRl
c3QsIENhdGNoZXNOb25mYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKICAgLy8gV2UgaGF2ZSBh
bm90aGVyIHRlc3QgYmVsb3cgdG8gdmVyaWZ5IHRoYXQgdGhlIG1hY3JvIGNhdGNoZXMKICAgLy8g
bm9uLWZhdGFsIGZhaWx1cmVzIGdlbmVyYXRlZCBvbiBhbm90aGVyIHRocmVhZC4KQEAgLTE0ODMs
OCArMTM4NCw3IEBAIGNsYXNzIFRlc3RSZXN1bHRUZXN0IDogcHVibGljIFRlc3QgewogICAgIC8v
IEluIG9yZGVyIHRvIHRlc3QgVGVzdFJlc3VsdCwgd2UgbmVlZCB0byBtb2RpZnkgaXRzIGludGVy
bmFsCiAgICAgLy8gc3RhdGUsIGluIHBhcnRpY3VsYXIgdGhlIFRlc3RQYXJ0UmVzdWx0IHZlY3Rv
ciBpdCBob2xkcy4KICAgICAvLyB0ZXN0X3BhcnRfcmVzdWx0cygpIHJldHVybnMgYSBjb25zdCBy
ZWZlcmVuY2UgdG8gdGhpcyB2ZWN0b3IuCi0gICAgLy8gV2UgY2FzdCBpdCB0byBhIG5vbi1jb25z
dCBvYmplY3Qgcy50LiBpdCBjYW4gYmUgbW9kaWZpZWQgKHllcywKLSAgICAvLyB0aGlzIGlzIGEg
aGFjaykuCisgICAgLy8gV2UgY2FzdCBpdCB0byBhIG5vbi1jb25zdCBvYmplY3Qgcy50LiBpdCBj
YW4gYmUgbW9kaWZpZWQKICAgICBUUFJWZWN0b3IqIHJlc3VsdHMxID0gY29uc3RfY2FzdDxUUFJW
ZWN0b3IqPigKICAgICAgICAgJlRlc3RSZXN1bHRBY2Nlc3Nvcjo6dGVzdF9wYXJ0X3Jlc3VsdHMo
KnIxKSk7CiAgICAgVFBSVmVjdG9yKiByZXN1bHRzMiA9IGNvbnN0X2Nhc3Q8VFBSVmVjdG9yKj4o
CkBAIC0xNTA5LDcgKzE0MDksNyBAQCBjbGFzcyBUZXN0UmVzdWx0VGVzdCA6IHB1YmxpYyBUZXN0
IHsKICAgICBkZWxldGUgcjI7CiAgIH0KIAotICAvLyBIZWxwZXIgdGhhdCBjb21wYXJlcyB0d28g
dHdvIFRlc3RQYXJ0UmVzdWx0cy4KKyAgLy8gSGVscGVyIHRoYXQgY29tcGFyZXMgdHdvIFRlc3RQ
YXJ0UmVzdWx0cy4KICAgc3RhdGljIHZvaWQgQ29tcGFyZVRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRl
c3RQYXJ0UmVzdWx0JiBleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBhY3R1YWwpIHsKICAgICBFWFBFQ1RfRVEoZXhwZWN0
ZWQudHlwZSgpLCBhY3R1YWwudHlwZSgpKTsKQEAgLTE1NjYsNyArMTQ2Niw3IEBAIFRFU1QoVGVz
dFJlc3VsdFByb3BlcnR5VGVzdCwgTm9Qcm9wZXJ0aWVzRm91bmRXaGVuTm9uZUFyZUFkZGVkKSB7
CiBURVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIE9uZVByb3BlcnR5Rm91bmRXaGVuQWRkZWQp
IHsKICAgVGVzdFJlc3VsdCB0ZXN0X3Jlc3VsdDsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5KCJr
ZXlfMSIsICIxIik7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3Rf
cmVzdWx0LCBwcm9wZXJ0eSk7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHko
JnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eSk7CiAgIEFTU0VSVF9FUSgxLCB0ZXN0
X3Jlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwogICBjb25zdCBUZXN0UHJvcGVydHkmIGFj
dHVhbF9wcm9wZXJ0eSA9IHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgwKTsKICAgRVhQRUNU
X1NUUkVRKCJrZXlfMSIsIGFjdHVhbF9wcm9wZXJ0eS5rZXkoKSk7CkBAIC0xNTc4LDggKzE0Nzgs
OCBAQCBURVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIE11bHRpcGxlUHJvcGVydGllc0ZvdW5k
V2hlbkFkZGVkKSB7CiAgIFRlc3RSZXN1bHQgdGVzdF9yZXN1bHQ7CiAgIFRlc3RQcm9wZXJ0eSBw
cm9wZXJ0eV8xKCJrZXlfMSIsICIxIik7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8yKCJrZXlf
MiIsICIyIik7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVz
dWx0LCBwcm9wZXJ0eV8xKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgm
dGVzdF9yZXN1bHQsIHByb3BlcnR5XzIpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFBy
b3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMSk7CisgIFRlc3RSZXN1
bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9w
ZXJ0eV8yKTsKICAgQVNTRVJUX0VRKDIsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQo
KSk7CiAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgYWN0dWFsX3Byb3BlcnR5XzEgPSB0ZXN0X3Jlc3Vs
dC5HZXRUZXN0UHJvcGVydHkoMCk7CiAgIEVYUEVDVF9TVFJFUSgia2V5XzEiLCBhY3R1YWxfcHJv
cGVydHlfMS5rZXkoKSk7CkBAIC0xNTk3LDEwICsxNDk3LDEwIEBAIFRFU1QoVGVzdFJlc3VsdFBy
b3BlcnR5VGVzdCwgT3ZlcnJpZGVzVmFsdWVzRm9yRHVwbGljYXRlS2V5cykgewogICBUZXN0UHJv
cGVydHkgcHJvcGVydHlfMl8xKCJrZXlfMiIsICIyIik7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0
eV8xXzIoImtleV8xIiwgIjEyIik7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8yXzIoImtleV8y
IiwgIjIyIik7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVz
dWx0LCBwcm9wZXJ0eV8xXzEpOwotICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5
KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMl8xKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNv
cmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzFfMik7Ci0gIFRlc3RSZXN1bHRBY2Nl
c3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9wZXJ0eV8yXzIpOworICBUZXN0
UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwg
cHJvcGVydHlfMV8xKTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVz
dF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzJfMSk7CisgIFRlc3RSZXN1bHRBY2Nlc3Nv
cjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8xXzIp
OworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRl
c3RjYXNlIiwgcHJvcGVydHlfMl8yKTsKIAogICBBU1NFUlRfRVEoMiwgdGVzdF9yZXN1bHQudGVz
dF9wcm9wZXJ0eV9jb3VudCgpKTsKICAgY29uc3QgVGVzdFByb3BlcnR5JiBhY3R1YWxfcHJvcGVy
dHlfMSA9IHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgwKTsKQEAgLTE2MTMsMTQgKzE1MTMs
MTQgQEAgVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBPdmVycmlkZXNWYWx1ZXNGb3JEdXBs
aWNhdGVLZXlzKSB7CiB9CiAKIC8vIFRlc3RzIFRlc3RSZXN1bHQ6OkdldFRlc3RQcm9wZXJ0eSgp
LgotVEVTVChUZXN0UmVzdWx0UHJvcGVydHlEZWF0aFRlc3QsIEdldFRlc3RQcm9wZXJ0eSkgewor
VEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBHZXRUZXN0UHJvcGVydHkpIHsKICAgVGVzdFJl
c3VsdCB0ZXN0X3Jlc3VsdDsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzEoImtleV8xIiwgIjEi
KTsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzIoImtleV8yIiwgIjIiKTsKICAgVGVzdFByb3Bl
cnR5IHByb3BlcnR5XzMoImtleV8zIiwgIjMiKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNv
cmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzEpOwotICBUZXN0UmVzdWx0QWNjZXNz
b3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMik7Ci0gIFRlc3RSZXN1
bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9wZXJ0eV8zKTsKKyAg
VGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2Fz
ZSIsIHByb3BlcnR5XzEpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0
ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMik7CisgIFRlc3RSZXN1bHRBY2Nlc3Nv
cjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8zKTsK
IAogICBjb25zdCBUZXN0UHJvcGVydHkmIGZldGNoZWRfcHJvcGVydHlfMSA9IHRlc3RfcmVzdWx0
LkdldFRlc3RQcm9wZXJ0eSgwKTsKICAgY29uc3QgVGVzdFByb3BlcnR5JiBmZXRjaGVkX3Byb3Bl
cnR5XzIgPSB0ZXN0X3Jlc3VsdC5HZXRUZXN0UHJvcGVydHkoMSk7CkBAIC0xNjM5LDQxICsxNTM5
LDE1IEBAIFRFU1QoVGVzdFJlc3VsdFByb3BlcnR5RGVhdGhUZXN0LCBHZXRUZXN0UHJvcGVydHkp
IHsKICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh0ZXN0X3Jlc3VsdC5HZXRUZXN0UHJvcGVy
dHkoLTEpLCAiIik7CiB9CiAKLS8vIFdoZW4gYSBwcm9wZXJ0eSB1c2luZyBhIHJlc2VydmVkIGtl
eSBpcyBzdXBwbGllZCB0byB0aGlzIGZ1bmN0aW9uLCBpdCB0ZXN0cwotLy8gdGhhdCBhIG5vbi1m
YXRhbCBmYWlsdXJlIGlzIGFkZGVkLCBhIGZhdGFsIGZhaWx1cmUgaXMgbm90IGFkZGVkLCBhbmQg
dGhhdCB0aGUKLS8vIHByb3BlcnR5IGlzIG5vdCByZWNvcmRlZC4KLXZvaWQgRXhwZWN0Tm9uRmF0
YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoY29uc3QgY2hhcioga2V5
KSB7Ci0gIFRlc3RSZXN1bHQgdGVzdF9yZXN1bHQ7Ci0gIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eShr
ZXksICIxIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAotICAgICAgVGVzdFJlc3VsdEFj
Y2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5KSwKLSAgICAgICJS
ZXNlcnZlZCBrZXkiKTsKLSAgQVNTRVJUX0VRKDAsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlf
Y291bnQoKSkgPDwgIk5vdCByZWNvcmRlZCI7Ci19Ci0KLS8vIEF0dGVtcHRpbmcgdG8gcmVjb3Jk
aW5nIGEgcHJvcGVydHkgd2l0aCB0aGUgUmVzZXJ2ZWQgbGl0ZXJhbCAibmFtZSIKLS8vIHNob3Vs
ZCBhZGQgYSBub24tZmF0YWwgZmFpbHVyZSBhbmQgdGhlIHByb3BlcnR5IHNob3VsZCBub3QgYmUg
cmVjb3JkZWQuCi1URVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIEFkZEZhaWx1cmVXaGVuVXNp
bmdSZXNlcnZlZEtleUNhbGxlZE5hbWUpIHsKLSAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3Jk
aW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoIm5hbWUiKTsKLX0KLQotLy8gQXR0ZW1wdGluZyB0
byByZWNvcmRpbmcgYSBwcm9wZXJ0eSB3aXRoIHRoZSBSZXNlcnZlZCBsaXRlcmFsICJzdGF0dXMi
Ci0vLyBzaG91bGQgYWRkIGEgbm9uLWZhdGFsIGZhaWx1cmUgYW5kIHRoZSBwcm9wZXJ0eSBzaG91
bGQgbm90IGJlIHJlY29yZGVkLgotVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBBZGRGYWls
dXJlV2hlblVzaW5nUmVzZXJ2ZWRLZXlDYWxsZWRTdGF0dXMpIHsKLSAgRXhwZWN0Tm9uRmF0YWxG
YWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoInN0YXR1cyIpOwotfQotCi0v
LyBBdHRlbXB0aW5nIHRvIHJlY29yZGluZyBhIHByb3BlcnR5IHdpdGggdGhlIFJlc2VydmVkIGxp
dGVyYWwgInRpbWUiCi0vLyBzaG91bGQgYWRkIGEgbm9uLWZhdGFsIGZhaWx1cmUgYW5kIHRoZSBw
cm9wZXJ0eSBzaG91bGQgbm90IGJlIHJlY29yZGVkLgotVEVTVChUZXN0UmVzdWx0UHJvcGVydHlU
ZXN0LCBBZGRGYWlsdXJlV2hlblVzaW5nUmVzZXJ2ZWRLZXlDYWxsZWRUaW1lKSB7Ci0gIEV4cGVj
dE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5KCJ0aW1lIik7
Ci19Ci0KLS8vIEF0dGVtcHRpbmcgdG8gcmVjb3JkaW5nIGEgcHJvcGVydHkgd2l0aCB0aGUgUmVz
ZXJ2ZWQgbGl0ZXJhbCAiY2xhc3NuYW1lIgotLy8gc2hvdWxkIGFkZCBhIG5vbi1mYXRhbCBmYWls
dXJlIGFuZCB0aGUgcHJvcGVydHkgc2hvdWxkIG5vdCBiZSByZWNvcmRlZC4KLVRFU1QoVGVzdFJl
c3VsdFByb3BlcnR5VGVzdCwgQWRkRmFpbHVyZVdoZW5Vc2luZ1Jlc2VydmVkS2V5Q2FsbGVkQ2xh
c3NuYW1lKSB7Ci0gIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJl
c2VydmVkS2V5KCJjbGFzc25hbWUiKTsKLX0KKy8vIFRlc3RzIHRoZSBUZXN0IGNsYXNzLgorLy8K
Ky8vIEl0J3MgZGlmZmljdWx0IHRvIHRlc3QgZXZlcnkgcHVibGljIG1ldGhvZCBvZiB0aGlzIGNs
YXNzICh3ZSBhcmUKKy8vIGFscmVhZHkgc3RyZXRjaGluZyB0aGUgbGltaXQgb2YgR29vZ2xlIFRl
c3QgYnkgdXNpbmcgaXQgdG8gdGVzdCBpdHNlbGYhKS4KKy8vIEZvcnR1bmF0ZWx5LCB3ZSBkb24n
dCBoYXZlIHRvIGRvIHRoYXQsIGFzIHdlIGFyZSBhbHJlYWR5IHRlc3RpbmcKKy8vIHRoZSBmdW5j
dGlvbmFsaXRpZXMgb2YgdGhlIFRlc3QgY2xhc3MgZXh0ZW5zaXZlbHkgYnkgdXNpbmcgR29vZ2xl
IFRlc3QKKy8vIGFsb25lLgorLy8KKy8vIFRoZXJlZm9yZSwgdGhpcyBzZWN0aW9uIG9ubHkgY29u
dGFpbnMgb25lIHRlc3QuCiAKIC8vIFRlc3RzIHRoYXQgR1Rlc3RGbGFnU2F2ZXIgd29ya3Mgb24g
V2luZG93cyBhbmQgTWFjLgogCkBAIC0xNjk4LDYgKzE1NzIsNyBAQCBjbGFzcyBHVGVzdEZsYWdT
YXZlclRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgR1RFU1RfRkxBRyhyZXBlYXQpID0gMTsKICAg
ICBHVEVTVF9GTEFHKHNodWZmbGUpID0gZmFsc2U7CiAgICAgR1RFU1RfRkxBRyhzdGFja190cmFj
ZV9kZXB0aCkgPSBrTWF4U3RhY2tUcmFjZURlcHRoOworICAgIEdURVNUX0ZMQUcoc3RyZWFtX3Jl
c3VsdF90bykgPSAiIjsKICAgICBHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gZmFsc2U7
CiAgIH0KIApAQCAtMTcyNCw2ICsxNTk5LDcgQEAgY2xhc3MgR1Rlc3RGbGFnU2F2ZXJUZXN0IDog
cHVibGljIFRlc3QgewogICAgIEVYUEVDVF9FUSgxLCBHVEVTVF9GTEFHKHJlcGVhdCkpOwogICAg
IEVYUEVDVF9GQUxTRShHVEVTVF9GTEFHKHNodWZmbGUpKTsKICAgICBFWFBFQ1RfRVEoa01heFN0
YWNrVHJhY2VEZXB0aCwgR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkpOworICAgIEVYUEVD
VF9TVFJFUSgiIiwgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKS5jX3N0cigpKTsKICAgICBF
WFBFQ1RfRkFMU0UoR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSk7CiAKICAgICBHVEVTVF9G
TEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzKSA9IHRydWU7CkBAIC0xNzM5LDggKzE2MTUsMTAg
QEAgY2xhc3MgR1Rlc3RGbGFnU2F2ZXJUZXN0IDogcHVibGljIFRlc3QgewogICAgIEdURVNUX0ZM
QUcocmVwZWF0KSA9IDEwMDsKICAgICBHVEVTVF9GTEFHKHNodWZmbGUpID0gdHJ1ZTsKICAgICBH
VEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSA9IDE7CisgICAgR1RFU1RfRkxBRyhzdHJlYW1f
cmVzdWx0X3RvKSA9ICJsb2NhbGhvc3Q6MTIzNCI7CiAgICAgR1RFU1RfRkxBRyh0aHJvd19vbl9m
YWlsdXJlKSA9IHRydWU7CiAgIH0KKwogIHByaXZhdGU6CiAgIC8vIEZvciBzYXZpbmcgR29vZ2xl
IFRlc3QgZmxhZ3MgZHVyaW5nIHRoaXMgdGVzdCBjYXNlLgogICBzdGF0aWMgR1Rlc3RGbGFnU2F2
ZXIqIHNhdmVyXzsKQEAgLTE3NzMsMTUgKzE2NTEsMTYgQEAgc3RhdGljIHZvaWQgU2V0RW52KGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHZhbHVlKSB7CiAgIC8vIEMrK0J1aWxkZXIncyBw
dXRlbnYgb25seSBzdG9yZXMgYSBwb2ludGVyIHRvIGl0cyBwYXJhbWV0ZXI7IHdlIGhhdmUgdG8K
ICAgLy8gZW5zdXJlIHRoYXQgdGhlIHN0cmluZyByZW1haW5zIHZhbGlkIGFzIGxvbmcgYXMgaXQg
bWlnaHQgYmUgbmVlZGVkLgogICAvLyBXZSB1c2UgYW4gc3RkOjptYXAgdG8gZG8gc28uCi0gIHN0
YXRpYyBzdGQ6Om1hcDxTdHJpbmcsIFN0cmluZyo+IGFkZGVkX2VudjsKKyAgc3RhdGljIHN0ZDo6
bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZyo+IGFkZGVkX2VudjsKIAogICAvLyBCZWNhdXNl
IHB1dGVudiBzdG9yZXMgYSBwb2ludGVyIHRvIHRoZSBzdHJpbmcgYnVmZmVyLCB3ZSBjYW4ndCBk
ZWxldGUgdGhlCiAgIC8vIHByZXZpb3VzIHN0cmluZyAoaWYgcHJlc2VudCkgdW50aWwgYWZ0ZXIg
aXQncyByZXBsYWNlZC4KLSAgU3RyaW5nICpwcmV2X2VudiA9IE5VTEw7CisgIHN0ZDo6c3RyaW5n
ICpwcmV2X2VudiA9IE5VTEw7CiAgIGlmIChhZGRlZF9lbnYuZmluZChuYW1lKSAhPSBhZGRlZF9l
bnYuZW5kKCkpIHsKICAgICBwcmV2X2VudiA9IGFkZGVkX2VudltuYW1lXTsKICAgfQotICBhZGRl
ZF9lbnZbbmFtZV0gPSBuZXcgU3RyaW5nKChNZXNzYWdlKCkgPDwgbmFtZSA8PCAiPSIgPDwgdmFs
dWUpLkdldFN0cmluZygpKTsKKyAgYWRkZWRfZW52W25hbWVdID0gbmV3IHN0ZDo6c3RyaW5nKAor
ICAgICAgKE1lc3NhZ2UoKSA8PCBuYW1lIDw8ICI9IiA8PCB2YWx1ZSkuR2V0U3RyaW5nKCkpOwog
CiAgIC8vIFRoZSBzdGFuZGFyZCBzaWduYXR1cmUgb2YgcHV0ZW52IGFjY2VwdHMgYSAnY2hhcion
IGFyZ3VtZW50LiBPdGhlcgogICAvLyBpbXBsZW1lbnRhdGlvbnMsIGxpa2UgQysrQnVpbGRlcidz
LCBhY2NlcHQgYSAnY29uc3QgY2hhcionLgpAQCAtMTgxMyw2ICsxNjkyLDggQEAgVEVTVChJbnQz
MkZyb21HVGVzdEVudlRlc3QsIFJldHVybnNEZWZhdWx0V2hlblZhcmlhYmxlSXNOb3RTZXQpIHsK
ICAgRVhQRUNUX0VRKDEwLCBJbnQzMkZyb21HVGVzdEVudigidGVtcCIsIDEwKSk7CiB9CiAKKyMg
aWYgIWRlZmluZWQoR1RFU1RfR0VUX0lOVDMyX0ZST01fRU5WXykKKwogLy8gVGVzdHMgdGhhdCBJ
bnQzMkZyb21HVGVzdEVudigpIHJldHVybnMgdGhlIGRlZmF1bHQgdmFsdWUgd2hlbiB0aGUKIC8v
IGVudmlyb25tZW50IHZhcmlhYmxlIG92ZXJmbG93cyBhcyBhbiBJbnQzMi4KIFRFU1QoSW50MzJG
cm9tR1Rlc3RFbnZUZXN0LCBSZXR1cm5zRGVmYXVsdFdoZW5WYWx1ZU92ZXJmbG93cykgewpAQCAt
MTgzNyw2ICsxNzE4LDggQEAgVEVTVChJbnQzMkZyb21HVGVzdEVudlRlc3QsIFJldHVybnNEZWZh
dWx0V2hlblZhbHVlSXNJbnZhbGlkKSB7CiAgIEVYUEVDVF9FUSg1MCwgSW50MzJGcm9tR1Rlc3RF
bnYoInRlbXAiLCA1MCkpOwogfQogCisjIGVuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9HRVRfSU5U
MzJfRlJPTV9FTlZfKQorCiAvLyBUZXN0cyB0aGF0IEludDMyRnJvbUdUZXN0RW52KCkgcGFyc2Vz
IGFuZCByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUKIC8vIGVudmlyb25tZW50IHZhcmlhYmxlIHdo
ZW4gaXQgcmVwcmVzZW50cyBhIHZhbGlkIGRlY2ltYWwgaW50ZWdlciBpbgogLy8gdGhlIHJhbmdl
IG9mIGFuIEludDMyLgpAQCAtMTkyNSw3ICsxODA4LDcgQEAgVEVTVChJbnQzMkZyb21FbnZPckRp
ZURlYXRoVGVzdCwgQWJvcnRzT25GYWlsdXJlKSB7CiB9CiAKIC8vIFRlc3RzIHRoYXQgSW50MzJG
cm9tRW52T3JEaWUoKSBhYm9ydHMgd2l0aCBhbiBlcnJvciBtZXNzYWdlCi0vLyBpZiB0aGUgdmFy
aWFibGUgY2Fubm90IGJlIHJlcHJlc250ZWQgYnkgYW4gSW50MzIuCisvLyBpZiB0aGUgdmFyaWFi
bGUgY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IGFuIEludDMyLgogVEVTVChJbnQzMkZyb21FbnZP
ckRpZURlYXRoVGVzdCwgQWJvcnRzT25JbnQzMk92ZXJmbG93KSB7CiAgIFNldEVudihHVEVTVF9G
TEFHX1BSRUZJWF9VUFBFUl8gIlZBUiIsICIxMjM0NTY3ODkxMjM0NTY3ODkxMjM0Iik7CiAgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoCkBAIC0yMDcwLDYgKzE5NTMsMTczIEBAIFRFU1QoVW5p
dFRlc3RUZXN0LCBDYW5HZXRPcmlnaW5hbFdvcmtpbmdEaXIpIHsKICAgRVhQRUNUX1NUUk5FKFVu
aXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5nX2RpcigpLCAiIik7CiB9CiAK
K1RFU1QoVW5pdFRlc3RUZXN0LCBSZXR1cm5zUGxhdXNpYmxlVGltZXN0YW1wKSB7CisgIEVYUEVD
VF9MVCgwLCBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+c3RhcnRfdGltZXN0YW1wKCkpOworICBF
WFBFQ1RfTEUoVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnN0YXJ0X3RpbWVzdGFtcCgpLCBHZXRU
aW1lSW5NaWxsaXMoKSk7Cit9CisKKy8vIFdoZW4gYSBwcm9wZXJ0eSB1c2luZyBhIHJlc2VydmVk
IGtleSBpcyBzdXBwbGllZCB0byB0aGlzIGZ1bmN0aW9uLCBpdAorLy8gdGVzdHMgdGhhdCBhIG5v
bi1mYXRhbCBmYWlsdXJlIGlzIGFkZGVkLCBhIGZhdGFsIGZhaWx1cmUgaXMgbm90IGFkZGVkLAor
Ly8gYW5kIHRoYXQgdGhlIHByb3BlcnR5IGlzIG5vdCByZWNvcmRlZC4KK3ZvaWQgRXhwZWN0Tm9u
RmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoCisgICAgY29uc3Qg
VGVzdFJlc3VsdCYgdGVzdF9yZXN1bHQsIGNvbnN0IGNoYXIqIGtleSkgeworICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShUZXN0OjpSZWNvcmRQcm9wZXJ0eShrZXksICIxIiksICJSZXNlcnZlZCBr
ZXkiKTsKKyAgQVNTRVJUX0VRKDAsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKSkg
PDwgIlByb3BlcnR5IGZvciBrZXkgJyIgPDwga2V5CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICInIHJlY29yZGVkIHVuZXhwZWN0ZWRseS4iOwor
fQorCit2b2lkIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2Vy
dmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgY29uc3QgY2hhcioga2V5KSB7CisgIGNvbnN0IFRl
c3RJbmZvKiB0ZXN0X2luZm8gPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0
X2luZm8oKTsKKyAgQVNTRVJUX1RSVUUodGVzdF9pbmZvICE9IE5VTEwpOworICBFeHBlY3ROb25G
YXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgqdGVzdF9pbmZvLT5y
ZXN1bHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga2V5KTsKK30KKwordm9pZCBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQ
cm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICBjb25zdCBjaGFy
KiBrZXkpIHsKKyAgY29uc3QgVGVzdENhc2UqIHRlc3RfY2FzZSA9IFVuaXRUZXN0OjpHZXRJbnN0
YW5jZSgpLT5jdXJyZW50X3Rlc3RfY2FzZSgpOworICBBU1NFUlRfVFJVRSh0ZXN0X2Nhc2UgIT0g
TlVMTCk7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2Vy
dmVkS2V5KAorICAgICAgdGVzdF9jYXNlLT5hZF9ob2NfdGVzdF9yZXN1bHQoKSwga2V5KTsKK30K
Kwordm9pZCBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZl
ZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgIGNvbnN0IGNoYXIqIGtleSkgeworICBFeHBlY3RO
b25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgKKyAgICAgIFVu
aXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5hZF9ob2NfdGVzdF9yZXN1bHQoKSwga2V5KTsKK30KKwor
Ly8gVGVzdHMgdGhhdCBwcm9wZXJ0eSByZWNvcmRpbmcgZnVuY3Rpb25zIGluIFVuaXRUZXN0IG91
dHNpZGUgb2YgdGVzdHMKKy8vIGZ1bmN0aW9ucyBjb3JyZWNseS4gIENyZWF0aW5nIGEgc2VwYXJh
dGUgaW5zdGFuY2Ugb2YgVW5pdFRlc3QgZW5zdXJlcyBpdAorLy8gaXMgaW4gYSBzdGF0ZSBzaW1p
bGFyIHRvIHRoZSBVbml0VGVzdCdzIHNpbmdsZXRvbidzIGJldHdlZW4gdGVzdHMuCitjbGFzcyBV
bml0VGVzdFJlY29yZFByb3BlcnR5VGVzdCA6CisgICAgcHVibGljIHRlc3Rpbmc6OmludGVybmFs
OjpVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdEhlbHBlciB7CisgcHVibGljOgorICBzdGF0aWMg
dm9pZCBTZXRVcFRlc3RDYXNlKCkgeworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGlu
Z1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAorICAgICAgICAiZGlz
YWJsZWQiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhS
ZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICAgICAgImVycm9ycyIpOworICAgIEV4
cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3Vy
cmVudFRlc3RDYXNlKAorICAgICAgICAiZmFpbHVyZXMiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZh
aWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgK
KyAgICAgICAgIm5hbWUiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9w
ZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICAgICAgInRlc3RzIik7
CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRL
ZXlGb3JDdXJyZW50VGVzdENhc2UoCisgICAgICAgICJ0aW1lIik7CisKKyAgICBUZXN0OjpSZWNv
cmRQcm9wZXJ0eSgidGVzdF9jYXNlX2tleV8xIiwgIjEiKTsKKyAgICBjb25zdCBUZXN0Q2FzZSog
dGVzdF9jYXNlID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9jYXNlKCk7
CisgICAgQVNTRVJUX1RSVUUodGVzdF9jYXNlICE9IE5VTEwpOworCisgICAgQVNTRVJUX0VRKDEs
IHRlc3RfY2FzZS0+YWRfaG9jX3Rlc3RfcmVzdWx0KCkudGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsK
KyAgICBFWFBFQ1RfU1RSRVEoInRlc3RfY2FzZV9rZXlfMSIsCisgICAgICAgICAgICAgICAgIHRl
c3RfY2FzZS0+YWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLmtleSgpKTsK
KyAgICBFWFBFQ1RfU1RSRVEoIjEiLAorICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2UtPmFkX2hv
Y190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKKyAgfQorfTsKKwor
Ly8gVGVzdHMgVGVzdFJlc3VsdCBoYXMgdGhlIGV4cGVjdGVkIHByb3BlcnR5IHdoZW4gYWRkZWQu
CitURVNUX0YoVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3QsIE9uZVByb3BlcnR5Rm91bmRXaGVu
QWRkZWQpIHsKKyAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzEiLCAiMSIpOworCisgIEFT
U0VSVF9FUSgxLCB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLnRlc3RfcHJvcGVydHlf
Y291bnQoKSk7CisKKyAgRVhQRUNUX1NUUkVRKCJrZXlfMSIsCisgICAgICAgICAgICAgICB1bml0
X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS5rZXkoKSk7Cisg
IEVYUEVDVF9TVFJFUSgiMSIsCisgICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0
X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKK30KKworLy8gVGVzdHMgVGVz
dFJlc3VsdCBoYXMgbXVsdGlwbGUgcHJvcGVydGllcyB3aGVuIGFkZGVkLgorVEVTVF9GKFVuaXRU
ZXN0UmVjb3JkUHJvcGVydHlUZXN0LCBNdWx0aXBsZVByb3BlcnRpZXNGb3VuZFdoZW5BZGRlZCkg
eworICBVbml0VGVzdFJlY29yZFByb3BlcnR5KCJrZXlfMSIsICIxIik7CisgIFVuaXRUZXN0UmVj
b3JkUHJvcGVydHkoImtleV8yIiwgIjIiKTsKKworICBBU1NFUlRfRVEoMiwgdW5pdF90ZXN0Xy5h
ZF9ob2NfdGVzdF9yZXN1bHQoKS50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOworCisgIEVYUEVDVF9T
VFJFUSgia2V5XzEiLAorICAgICAgICAgICAgICAgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1
bHQoKS5HZXRUZXN0UHJvcGVydHkoMCkua2V5KCkpOworICBFWFBFQ1RfU1RSRVEoIjEiLCB1bml0
X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsK
KworICBFWFBFQ1RfU1RSRVEoImtleV8yIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRf
aG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDEpLmtleSgpKTsKKyAgRVhQRUNUX1NU
UkVRKCIyIiwgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHko
MSkudmFsdWUoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RSZXN1bHQ6OlJlY29yZFByb3BlcnR5KCkg
b3ZlcnJpZGVzIHZhbHVlcyBmb3IgZHVwbGljYXRlIGtleXMuCitURVNUX0YoVW5pdFRlc3RSZWNv
cmRQcm9wZXJ0eVRlc3QsIE92ZXJyaWRlc1ZhbHVlc0ZvckR1cGxpY2F0ZUtleXMpIHsKKyAgVW5p
dFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzEiLCAiMSIpOworICBVbml0VGVzdFJlY29yZFByb3Bl
cnR5KCJrZXlfMiIsICIyIik7CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8xIiwgIjEy
Iik7CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8yIiwgIjIyIik7CisKKyAgQVNTRVJU
X0VRKDIsIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkudGVzdF9wcm9wZXJ0eV9jb3Vu
dCgpKTsKKworICBFWFBFQ1RfU1RSRVEoImtleV8xIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVz
dF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLmtleSgpKTsKKyAgRVhQ
RUNUX1NUUkVRKCIxMiIsCisgICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jl
c3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKKworICBFWFBFQ1RfU1RSRVEoImtl
eV8yIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0
VGVzdFByb3BlcnR5KDEpLmtleSgpKTsKKyAgRVhQRUNUX1NUUkVRKCIyMiIsCisgICAgICAgICAg
ICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgxKS52
YWx1ZSgpKTsKK30KKworVEVTVF9GKFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0LAorICAgICAg
IEFkZEZhaWx1cmVJbnNpZGVUZXN0c1doZW5Vc2luZ1Rlc3RDYXNlUmVzZXJ2ZWRLZXlzKSB7Cisg
IEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9y
Q3VycmVudFRlc3QoCisgICAgICAibmFtZSIpOworICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNv
cmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0KAorICAgICAgInZhbHVl
X3BhcmFtIik7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJl
c2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgICAidHlwZV9wYXJhbSIpOworICBFeHBlY3RO
b25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRU
ZXN0KAorICAgICAgInN0YXR1cyIpOworICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQ
cm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0KAorICAgICAgInRpbWUiKTsKKyAg
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JD
dXJyZW50VGVzdCgKKyAgICAgICJjbGFzc25hbWUiKTsKK30KKworVEVTVF9GKFVuaXRUZXN0UmVj
b3JkUHJvcGVydHlUZXN0LAorICAgICAgIEFkZFJlY29yZFdpdGhSZXNlcnZlZEtleXNHZW5lcmF0
ZXNDb3JyZWN0UHJvcGVydHlMaXN0KSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAorICAg
ICAgVGVzdDo6UmVjb3JkUHJvcGVydHkoIm5hbWUiLCAiMSIpLAorICAgICAgIidjbGFzc25hbWUn
LCAnbmFtZScsICdzdGF0dXMnLCAndGltZScsICd0eXBlX3BhcmFtJywgJ3ZhbHVlX3BhcmFtJywi
CisgICAgICAiICdmaWxlJywgYW5kICdsaW5lJyBhcmUgcmVzZXJ2ZWQiKTsKK30KKworY2xhc3Mg
VW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3RFbnZpcm9ubWVudCA6IHB1YmxpYyBFbnZpcm9ubWVu
dCB7CisgcHVibGljOgorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgRXhwZWN0Tm9u
RmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0
Q2FzZSgKKyAgICAgICAgInRlc3RzIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3Jk
aW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgImZh
aWx1cmVzIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRo
UmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgImRpc2FibGVkIik7CisgICAg
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRz
aWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgImVycm9ycyIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFp
bHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCisg
ICAgICAgICJuYW1lIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVy
dHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgInRpbWVzdGFtcCIp
OworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVk
S2V5T3V0c2lkZU9mVGVzdENhc2UoCisgICAgICAgICJ0aW1lIik7CisgICAgRXhwZWN0Tm9uRmF0
YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2Fz
ZSgKKyAgICAgICAgInJhbmRvbV9zZWVkIik7CisgIH0KK307CisKKy8vIFRoaXMgd2lsbCB0ZXN0
IHByb3BlcnR5IHJlY29yZGluZyBvdXRzaWRlIG9mIGFueSB0ZXN0IG9yIHRlc3QgY2FzZS4KK3N0
YXRpYyBFbnZpcm9ubWVudCogcmVjb3JkX3Byb3BlcnR5X2VudiA9CisgICAgQWRkR2xvYmFsVGVz
dEVudmlyb25tZW50KG5ldyBVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdEVudmlyb25tZW50KTsK
KwogLy8gVGhpcyBncm91cCBvZiB0ZXN0cyBpcyBmb3IgcHJlZGljYXRlIGFzc2VydGlvbnMgKEFT
U0VSVF9QUkVEKiwgZXRjKQogLy8gb2YgdmFyaW91cyBhcml0aWVzLiAgVGhleSBkbyBub3QgYXR0
ZW1wdCB0byBiZSBleGhhdXN0aXZlLiAgUmF0aGVyLAogLy8gdmlldyB0aGVtIGFzIHNtb2tlIHRl
c3RzIHRoYXQgY2FuIGJlIGVhc2lseSByZXZpZXdlZCBhbmQgdmVyaWZpZWQuCkBAIC0yNDAxLDcg
KzI0NTEsNyBAQCBURVNUKFN0cmluZ0Fzc2VydGlvblRlc3QsIEFTU0VSVF9TVFJFUSkgewogICBB
U1NFUlRfU1RSRVEocDEsIHAyKTsKIAogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfU1RS
RVEoImJhZCIsICJnb29kIiksCi0gICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogXCJi
YWRcIiIpOworICAgICAgICAgICAgICAgICAgICAgICAiICBcImJhZFwiXG4gIFwiZ29vZFwiIik7
CiB9CiAKIC8vIFRlc3RzIEFTU0VSVF9TVFJFUSB3aXRoIE5VTEwgYXJndW1lbnRzLgpAQCAtMjQz
Nyw3ICsyNDg3LDcgQEAgVEVTVChTdHJpbmdBc3NlcnRpb25UZXN0LCBBU1NFUlRfU1RSQ0FTRUVR
KSB7CiAKICAgQVNTRVJUX1NUUkNBU0VFUSgiIiwgIiIpOwogICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RShBU1NFUlRfU1RSQ0FTRUVRKCJIaSIsICJoaTIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IihpZ25vcmluZyBjYXNlKSIpOworICAgICAgICAgICAgICAgICAgICAgICAiSWdub3JpbmcgY2Fz
ZSIpOwogfQogCiAvLyBUZXN0cyBBU1NFUlRfU1RSQ0FTRU5FLgpAQCAtMjQ3NSw2ICsyNTI1LDEx
IEBAIFRFU1QoU3RyaW5nQXNzZXJ0aW9uVGVzdCwgU1RSRVFfV2lkZSkgewogICAvLyBTdHJpbmdz
IGNvbnRhaW5pbmcgd2lkZSBjaGFyYWN0ZXJzLgogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShF
WFBFQ1RfU1RSRVEoTCJhYmNceDgxMTkiLCBMImFiY1x4ODEyMCIpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAiYWJjIik7CisKKyAgLy8gVGhlIHN0cmVhbWluZyB2YXJpYXRpb24uCisgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9TVFJFUShMImFi
Y1x4ODExOSIsIEwiYWJjXHg4MTIxIikgPDwgIkV4cGVjdGVkIGZhaWx1cmUiOworICB9LCAiRXhw
ZWN0ZWQgZmFpbHVyZSIpOwogfQogCiAvLyBUZXN0cyAqX1NUUk5FIG9uIHdpZGUgc3RyaW5ncy4K
QEAgLTI1MDEsNiArMjU1Niw5IEBAIFRFU1QoU3RyaW5nQXNzZXJ0aW9uVGVzdCwgU1RSTkVfV2lk
ZSkgewogICAvLyBTdHJpbmdzIGNvbnRhaW5pbmcgd2lkZSBjaGFyYWN0ZXJzLgogICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSTkUoTCJhYmNceDgxMTkiLCBMImFiY1x4ODExOSIp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjIik7CisKKyAgLy8gVGhlIHN0cmVhbWlu
ZyB2YXJpYXRpb24uCisgIEFTU0VSVF9TVFJORShMImFiY1x4ODExOSIsIEwiYWJjXHg4MTIwIikg
PDwgIlRoaXMgc2hvdWxkbid0IGhhcHBlbiI7CiB9CiAKIC8vIFRlc3RzIGZvciA6OnRlc3Rpbmc6
OklzU3Vic3RyaW5nKCkuCkBAIC0yNjMxLDcgKzI2ODksNiBAQCBURVNUKElzTm90U3Vic3RyaW5n
VGVzdCwgUmV0dXJuc0NvcnJlY3RSZXN1bHRGb3JTdGRXc3RyaW5nKSB7CiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgUmF3VHlwZT4KIGNsYXNzIEZsb2F0aW5nUG9pbnRUZXN0IDogcHVibGljIFRlc3Qgewog
IHByb3RlY3RlZDoKLQogICAvLyBQcmUtY2FsY3VsYXRlZCBudW1iZXJzIHRvIGJlIHVzZWQgYnkg
dGhlIHRlc3RzLgogICBzdHJ1Y3QgVGVzdFZhbHVlcyB7CiAgICAgUmF3VHlwZSBjbG9zZV90b19w
b3NpdGl2ZV96ZXJvOwpAQCAtMzA3OSwxMyArMzEzNiwxMyBAQCBURVNUKERJU0FCTEVEX1Rlc3RD
YXNlLCBESVNBQkxFRF9UZXN0U2hvdWxkTm90UnVuKSB7CiAgIEZBSUwoKSA8PCAiVW5leHBlY3Rl
ZCBmYWlsdXJlOiBUZXN0IGluIGRpc2FibGVkIHRlc3QgY2FzZSBzaG91bGQgbm90IGJlIHJ1bi4i
OwogfQogCi0vLyBDaGVjayB0aGF0IHdoZW4gYWxsIHRlc3RzIGluIGEgdGVzdCBjYXNlIGFyZSBk
aXNhYmxlZCwgU2V0dXBUZXN0Q2FzZSgpIGFuZAorLy8gQ2hlY2sgdGhhdCB3aGVuIGFsbCB0ZXN0
cyBpbiBhIHRlc3QgY2FzZSBhcmUgZGlzYWJsZWQsIFNldFVwVGVzdENhc2UoKSBhbmQKIC8vIFRl
YXJEb3duVGVzdENhc2UoKSBhcmUgbm90IGNhbGxlZC4KIGNsYXNzIERpc2FibGVkVGVzdHNUZXN0
IDogcHVibGljIFRlc3QgewogIHByb3RlY3RlZDoKICAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2Fz
ZSgpIHsKICAgICBGQUlMKCkgPDwgIlVuZXhwZWN0ZWQgZmFpbHVyZTogQWxsIHRlc3RzIGRpc2Fi
bGVkIGluIHRlc3QgY2FzZS4gIgotICAgICAgICAgICAgICAiU2V0dXBUZXN0Q2FzZSgpIHNob3Vs
ZCBub3QgYmUgY2FsbGVkLiI7CisgICAgICAgICAgICAgICJTZXRVcFRlc3RDYXNlKCkgc2hvdWxk
IG5vdCBiZSBjYWxsZWQuIjsKICAgfQogCiAgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2Uo
KSB7CkBAIC0zMjI0LDcgKzMyODEsNyBAQCBURVNUX0YoU2luZ2xlRXZhbHVhdGlvblRlc3QsIEFT
U0VSVF9TVFIpIHsKIAogICAvLyBmYWlsZWQgRVhQRUNUX1NUUkNBU0VFUQogICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSQ0FTRUVRKHAxXysrLCBwMl8rKyksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICJpZ25vcmluZyBjYXNlIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICJJZ25vcmluZyBjYXNlIik7CiAgIEVYUEVDVF9FUShzMV8gKyAyLCBwMV8pOwogICBFWFBF
Q1RfRVEoczJfICsgMiwgcDJfKTsKIH0KQEAgLTMzMzIsNyArMzM4OSw3IEBAIGNsYXNzIE5vRmF0
YWxGYWlsdXJlVGVzdCA6IHB1YmxpYyBUZXN0IHsKIAogICB2b2lkIERvQXNzZXJ0Tm9GYXRhbEZh
aWx1cmVPbkZhaWxzKCkgewogICAgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEZhaWxzKCkpOwot
ICAgIEFERF9GQUlMVVJFKCkgPDwgInNob2xkIG5vdCByZWFjaCBoZXJlLiI7CisgICAgQUREX0ZB
SUxVUkUoKSA8PCAic2hvdWxkIG5vdCByZWFjaCBoZXJlLiI7CiAgIH0KIAogICB2b2lkIERvRXhw
ZWN0Tm9GYXRhbEZhaWx1cmVPbkZhaWxzKCkgewpAQCAtMzQxMiw1OSArMzQ2OSwxNTcgQEAgVEVT
VF9GKE5vRmF0YWxGYWlsdXJlVGVzdCwgTWVzc2FnZUlzU3RyZWFtYWJsZSkgewogCiAvLyBUZXN0
cyBub24tc3RyaW5nIGFzc2VydGlvbnMuCiAKK3N0ZDo6c3RyaW5nIEVkaXRzVG9TdHJpbmcoY29u
c3Qgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+JiBlZGl0cykgeworICBzdGQ6OnN0cmluZyBvdXQ7Cisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWRpdHMuc2l6ZSgpOyArK2kpIHsKKyAgICBzdGF0aWMg
Y29uc3QgY2hhciBrRWRpdHNbXSA9ICIgKy0vIjsKKyAgICBvdXQuYXBwZW5kKDEsIGtFZGl0c1tl
ZGl0c1tpXV0pOworICB9CisgIHJldHVybiBvdXQ7Cit9CisKK3N0ZDo6dmVjdG9yPHNpemVfdD4g
Q2hhcnNUb0luZGljZXMoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgeworICBzdGQ6OnZlY3Rvcjxz
aXplX3Q+IG91dDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHIuc2l6ZSgpOyArK2kpIHsK
KyAgICBvdXQucHVzaF9iYWNrKHN0cltpXSk7CisgIH0KKyAgcmV0dXJuIG91dDsKK30KKworc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+IENoYXJzVG9MaW5lcyhjb25zdCBzdGQ6OnN0cmluZyYgc3Ry
KSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBvdXQ7CisgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc3RyLnNpemUoKTsgKytpKSB7CisgICAgb3V0LnB1c2hfYmFjayhzdHIuc3Vic3RyKGks
IDEpKTsKKyAgfQorICByZXR1cm4gb3V0OworfQorCitURVNUKEVkaXREaXN0YW5jZSwgVGVzdENh
c2VzKSB7CisgIHN0cnVjdCBDYXNlIHsKKyAgICBpbnQgbGluZTsKKyAgICBjb25zdCBjaGFyKiBs
ZWZ0OworICAgIGNvbnN0IGNoYXIqIHJpZ2h0OworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkX2Vk
aXRzOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkX2RpZmY7CisgIH07CisgIHN0YXRpYyBjb25z
dCBDYXNlIGtDYXNlc1tdID0geworICAgICAgLy8gTm8gY2hhbmdlLgorICAgICAge19fTElORV9f
LCAiQSIsICJBIiwgIiAiLCAiIn0sCisgICAgICB7X19MSU5FX18sICJBQkNERSIsICJBQkNERSIs
ICIgICAgICIsICIifSwKKyAgICAgIC8vIFNpbXBsZSBhZGRzLgorICAgICAge19fTElORV9fLCAi
WCIsICJYQSIsICIgKyIsICJAQCArMSwyIEBAXG4gWFxuK0FcbiJ9LAorICAgICAge19fTElORV9f
LCAiWCIsICJYQUJDRCIsICIgKysrKyIsICJAQCArMSw1IEBAXG4gWFxuK0FcbitCXG4rQ1xuK0Rc
biJ9LAorICAgICAgLy8gU2ltcGxlIHJlbW92ZXMuCisgICAgICB7X19MSU5FX18sICJYQSIsICJY
IiwgIiAtIiwgIkBAIC0xLDIgQEBcbiBYXG4tQVxuIn0sCisgICAgICB7X19MSU5FX18sICJYQUJD
RCIsICJYIiwgIiAtLS0tIiwgIkBAIC0xLDUgQEBcbiBYXG4tQVxuLUJcbi1DXG4tRFxuIn0sCisg
ICAgICAvLyBTaW1wbGUgcmVwbGFjZXMuCisgICAgICB7X19MSU5FX18sICJBIiwgImEiLCAiLyIs
ICJAQCAtMSwxICsxLDEgQEBcbi1BXG4rYVxuIn0sCisgICAgICB7X19MSU5FX18sICJBQkNEIiwg
ImFiY2QiLCAiLy8vLyIsCisgICAgICAgIkBAIC0xLDQgKzEsNCBAQFxuLUFcbi1CXG4tQ1xuLURc
bithXG4rYlxuK2NcbitkXG4ifSwKKyAgICAgIC8vIFBhdGggZmluZGluZy4KKyAgICAgIHtfX0xJ
TkVfXywgIkFCQ0RFRkdIIiwgIkFCWEVHSDEiLCAiICAtLyAtICArIiwKKyAgICAgICAiQEAgLTEs
OCArMSw3IEBAXG4gQVxuIEJcbi1DXG4tRFxuK1hcbiBFXG4tRlxuIEdcbiBIXG4rMVxuIn0sCisg
ICAgICB7X19MSU5FX18sICJBQUFBQkNDQ0MiLCAiQUJBQkNEQ0RDIiwgIi0gLyAgICsgLyAiLAor
ICAgICAgICJAQCAtMSw5ICsxLDkgQEBcbi1BXG4gQVxuLUFcbitCXG4gQVxuIEJcbiBDXG4rRFxu
IENcbi1DXG4rRFxuIENcbiJ9LAorICAgICAge19fTElORV9fLCAiQUJDREUiLCAiQkNEQ0QiLCAi
LSAgICsvIiwKKyAgICAgICAiQEAgLTEsNSArMSw1IEBAXG4tQVxuIEJcbiBDXG4gRFxuLUVcbitD
XG4rRFxuIn0sCisgICAgICB7X19MSU5FX18sICJBQkNERUZHSElKS0wiLCAiQkNEQ0RFRkdKS0xK
SyIsICItICsrICAgICAtLSAgICsrIiwKKyAgICAgICAiQEAgLTEsNCArMSw1IEBAXG4tQVxuIEJc
bitDXG4rRFxuIENcbiBEXG4iCisgICAgICAgIkBAIC02LDcgKzcsNyBAQFxuIEZcbiBHXG4tSFxu
LUlcbiBKXG4gS1xuIExcbitKXG4rS1xuIn0sCisgICAgICB7fX07CisgIGZvciAoY29uc3QgQ2Fz
ZSogYyA9IGtDYXNlczsgYy0+bGVmdDsgKytjKSB7CisgICAgRVhQRUNUX1RSVUUoYy0+ZXhwZWN0
ZWRfZWRpdHMgPT0KKyAgICAgICAgICAgICAgICBFZGl0c1RvU3RyaW5nKENhbGN1bGF0ZU9wdGlt
YWxFZGl0cyhDaGFyc1RvSW5kaWNlcyhjLT5sZWZ0KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyc1RvSW5kaWNlcyhjLT5yaWdodCkpKSkK
KyAgICAgICAgPDwgIkxlZnQgPCIgPDwgYy0+bGVmdCA8PCAiPiBSaWdodCA8IiA8PCBjLT5yaWdo
dCA8PCAiPiBFZGl0cyA8IgorICAgICAgICA8PCBFZGl0c1RvU3RyaW5nKENhbGN1bGF0ZU9wdGlt
YWxFZGl0cygKKyAgICAgICAgICAgICAgIENoYXJzVG9JbmRpY2VzKGMtPmxlZnQpLCBDaGFyc1Rv
SW5kaWNlcyhjLT5yaWdodCkpKSA8PCAiPiI7CisgICAgRVhQRUNUX1RSVUUoYy0+ZXhwZWN0ZWRf
ZGlmZiA9PSBDcmVhdGVVbmlmaWVkRGlmZihDaGFyc1RvTGluZXMoYy0+bGVmdCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyc1RvTGlu
ZXMoYy0+cmlnaHQpKSkKKyAgICAgICAgPDwgIkxlZnQgPCIgPDwgYy0+bGVmdCA8PCAiPiBSaWdo
dCA8IiA8PCBjLT5yaWdodCA8PCAiPiBEaWZmIDwiCisgICAgICAgIDw8IENyZWF0ZVVuaWZpZWRE
aWZmKENoYXJzVG9MaW5lcyhjLT5sZWZ0KSwgQ2hhcnNUb0xpbmVzKGMtPnJpZ2h0KSkKKyAgICAg
ICAgPDwgIj4iOworICB9Cit9CisKIC8vIFRlc3RzIEVxRmFpbHVyZSgpLCB1c2VkIGZvciBpbXBs
ZW1lbnRpbmcgKkVRKiBhc3NlcnRpb25zLgogVEVTVChBc3NlcnRpb25UZXN0LCBFcUZhaWx1cmUp
IHsKLSAgY29uc3QgU3RyaW5nIGZvb192YWwoIjUiKSwgYmFyX3ZhbCgiNiIpOwotICBjb25zdCBT
dHJpbmcgbXNnMSgKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZm9vX3ZhbCgiNSIpLCBiYXJfdmFsKCI2
Iik7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG1zZzEoCiAgICAgICBFcUZhaWx1cmUoImZvbyIsICJi
YXIiLCBmb29fdmFsLCBiYXJfdmFsLCBmYWxzZSkKICAgICAgIC5mYWlsdXJlX21lc3NhZ2UoKSk7
CiAgIEVYUEVDVF9TVFJFUSgKLSAgICAgICJWYWx1ZSBvZjogYmFyXG4iCi0gICAgICAiICBBY3R1
YWw6IDZcbiIKLSAgICAgICJFeHBlY3RlZDogZm9vXG4iCi0gICAgICAiV2hpY2ggaXM6IDUiLAor
ICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICIgIGZv
b1xuIgorICAgICAgIiAgICBXaGljaCBpczogNVxuIgorICAgICAgIiAgYmFyXG4iCisgICAgICAi
ICAgIFdoaWNoIGlzOiA2IiwKICAgICAgIG1zZzEuY19zdHIoKSk7CiAKLSAgY29uc3QgU3RyaW5n
IG1zZzIoCisgIGNvbnN0IHN0ZDo6c3RyaW5nIG1zZzIoCiAgICAgICBFcUZhaWx1cmUoImZvbyIs
ICI2IiwgZm9vX3ZhbCwgYmFyX3ZhbCwgZmFsc2UpCiAgICAgICAuZmFpbHVyZV9tZXNzYWdlKCkp
OwogICBFWFBFQ1RfU1RSRVEoCi0gICAgICAiVmFsdWUgb2Y6IDZcbiIKLSAgICAgICJFeHBlY3Rl
ZDogZm9vXG4iCi0gICAgICAiV2hpY2ggaXM6IDUiLAorICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5
IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICIgIGZvb1xuIgorICAgICAgIiAgICBXaGljaCBp
czogNVxuIgorICAgICAgIiAgNiIsCiAgICAgICBtc2cyLmNfc3RyKCkpOwogCi0gIGNvbnN0IFN0
cmluZyBtc2czKAorICBjb25zdCBzdGQ6OnN0cmluZyBtc2czKAogICAgICAgRXFGYWlsdXJlKCI1
IiwgImJhciIsIGZvb192YWwsIGJhcl92YWwsIGZhbHNlKQogICAgICAgLmZhaWx1cmVfbWVzc2Fn
ZSgpKTsKICAgRVhQRUNUX1NUUkVRKAotICAgICAgIlZhbHVlIG9mOiBiYXJcbiIKLSAgICAgICIg
IEFjdHVhbDogNlxuIgotICAgICAgIkV4cGVjdGVkOiA1IiwKKyAgICAgICJFeHBlY3RlZCBlcXVh
bGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4iCisgICAgICAiICA1XG4iCisgICAgICAiICBiYXJcbiIK
KyAgICAgICIgICAgV2hpY2ggaXM6IDYiLAogICAgICAgbXNnMy5jX3N0cigpKTsKIAotICBjb25z
dCBTdHJpbmcgbXNnNCgKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbXNnNCgKICAgICAgIEVxRmFpbHVy
ZSgiNSIsICI2IiwgZm9vX3ZhbCwgYmFyX3ZhbCwgZmFsc2UpLmZhaWx1cmVfbWVzc2FnZSgpKTsK
ICAgRVhQRUNUX1NUUkVRKAotICAgICAgIlZhbHVlIG9mOiA2XG4iCi0gICAgICAiRXhwZWN0ZWQ6
IDUiLAorICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAg
ICIgIDVcbiIKKyAgICAgICIgIDYiLAogICAgICAgbXNnNC5jX3N0cigpKTsKIAotICBjb25zdCBT
dHJpbmcgbXNnNSgKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbXNnNSgKICAgICAgIEVxRmFpbHVyZSgi
Zm9vIiwgImJhciIsCi0gICAgICAgICAgICAgICAgU3RyaW5nKCJcInhcIiIpLCBTdHJpbmcoIlwi
eVwiIiksCisgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoIlwieFwiIiksIHN0ZDo6c3RyaW5n
KCJcInlcIiIpLAogICAgICAgICAgICAgICAgIHRydWUpLmZhaWx1cmVfbWVzc2FnZSgpKTsKICAg
RVhQRUNUX1NUUkVRKAotICAgICAgIlZhbHVlIG9mOiBiYXJcbiIKLSAgICAgICIgIEFjdHVhbDog
XCJ5XCJcbiIKLSAgICAgICJFeHBlY3RlZDogZm9vIChpZ25vcmluZyBjYXNlKVxuIgotICAgICAg
IldoaWNoIGlzOiBcInhcIiIsCisgICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFs
dWVzOlxuIgorICAgICAgIiAgZm9vXG4iCisgICAgICAiICAgIFdoaWNoIGlzOiBcInhcIlxuIgor
ICAgICAgIiAgYmFyXG4iCisgICAgICAiICAgIFdoaWNoIGlzOiBcInlcIlxuIgorICAgICAgIkln
bm9yaW5nIGNhc2UiLAogICAgICAgbXNnNS5jX3N0cigpKTsKIH0KIAorVEVTVChBc3NlcnRpb25U
ZXN0LCBFcUZhaWx1cmVXaXRoRGlmZikgeworICBjb25zdCBzdGQ6OnN0cmluZyBsZWZ0KAorICAg
ICAgIjFcXG4yWFhYXFxuM1xcbjVcXG42XFxuN1xcbjhcXG45XFxuMTBcXG4xMVxcbjEyWFhYXFxu
MTNcXG4xNFxcbjE1Iik7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHJpZ2h0KAorICAgICAgIjFcXG4y
XFxuM1xcbjRcXG41XFxuNlxcbjdcXG44XFxuOVxcbjExXFxuMTJcXG4xM1xcbjE0Iik7CisgIGNv
bnN0IHN0ZDo6c3RyaW5nIG1zZzEoCisgICAgICBFcUZhaWx1cmUoImxlZnQiLCAicmlnaHQiLCBs
ZWZ0LCByaWdodCwgZmFsc2UpLmZhaWx1cmVfbWVzc2FnZSgpKTsKKyAgRVhQRUNUX1NUUkVRKAor
ICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICIgIGxl
ZnRcbiIKKyAgICAgICIgICAgV2hpY2ggaXM6ICIKKyAgICAgICIxXFxuMlhYWFxcbjNcXG41XFxu
NlxcbjdcXG44XFxuOVxcbjEwXFxuMTFcXG4xMlhYWFxcbjEzXFxuMTRcXG4xNVxuIgorICAgICAg
IiAgcmlnaHRcbiIKKyAgICAgICIgICAgV2hpY2ggaXM6IDFcXG4yXFxuM1xcbjRcXG41XFxuNlxc
bjdcXG44XFxuOVxcbjExXFxuMTJcXG4xM1xcbjE0XG4iCisgICAgICAiV2l0aCBkaWZmOlxuQEAg
LTEsNSArMSw2IEBAXG4gMVxuLTJYWFhcbisyXG4gM1xuKzRcbiA1XG4gNlxuIgorICAgICAgIkBA
IC03LDggKzgsNiBAQFxuIDhcbiA5XG4tMTBcbiAxMVxuLTEyWFhYXG4rMTJcbiAxM1xuIDE0XG4t
MTVcbiIsCisgICAgICBtc2cxLmNfc3RyKCkpOworfQorCiAvLyBUZXN0cyBBcHBlbmRVc2VyTWVz
c2FnZSgpLCB1c2VkIGZvciBpbXBsZW1lbnRpbmcgdGhlICpFUSogbWFjcm9zLgogVEVTVChBc3Nl
cnRpb25UZXN0LCBBcHBlbmRVc2VyTWVzc2FnZSkgewotICBjb25zdCBTdHJpbmcgZm9vKCJmb28i
KTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZm9vKCJmb28iKTsKIAogICBNZXNzYWdlIG1zZzsKICAg
RVhQRUNUX1NUUkVRKCJmb28iLApAQCAtMzQ3Nyw3ICszNjMyLDcgQEAgVEVTVChBc3NlcnRpb25U
ZXN0LCBBcHBlbmRVc2VyTWVzc2FnZSkgewogCiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBTaWxl
bmNlcyB3YXJuaW5nczogIkNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZSIsICJVbnJlYWNoYWJsZSBj
b2RlIgotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCisjIHByYWdtYSBvcHRpb24g
cHVzaCAtdy1jY2MgLXctcmNoCiAjZW5kaWYKIAogLy8gVGVzdHMgQVNTRVJUX1RSVUUuCkBAIC0z
NDkwLDggKzM2NDUsOCBAQCBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9UUlVFKSB7CiAvLyBU
ZXN0cyBBU1NFUlRfVFJVRShwcmVkaWNhdGUpIGZvciBwcmVkaWNhdGVzIHJldHVybmluZyBBc3Nl
cnRpb25SZXN1bHQuCiBURVNUKEFzc2VydGlvblRlc3QsIEFzc2VydFRydWVXaXRoQXNzZXJ0aW9u
UmVzdWx0KSB7CiAgIEFTU0VSVF9UUlVFKFJlc3VsdElzRXZlbigyKSk7Ci0jaWYgIWRlZmluZWQo
X19CT1JMQU5EQ19fKSB8fCBfX0JPUkxBTkRDX18gPj0gMHg2MDAKLSAgLy8gSUNFJ3MgaW4gQysr
QnVpbGRlciAyMDA3LgorI2lmbmRlZiBfX0JPUkxBTkRDX18KKyAgLy8gSUNFJ3MgaW4gQysrQnVp
bGRlci4KICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1RSVUUoUmVzdWx0SXNFdmVuKDMp
KSwKICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBSZXN1bHRJc0V2ZW4oMylcbiIK
ICAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBmYWxzZSAoMyBpcyBvZGQpXG4iCkBA
IC0zNTE2LDggKzM2NzEsOCBAQCBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9GQUxTRSkgewog
Ly8gVGVzdHMgQVNTRVJUX0ZBTFNFKHByZWRpY2F0ZSkgZm9yIHByZWRpY2F0ZXMgcmV0dXJuaW5n
IEFzc2VydGlvblJlc3VsdC4KIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0RmFsc2VXaXRoQXNz
ZXJ0aW9uUmVzdWx0KSB7CiAgIEFTU0VSVF9GQUxTRShSZXN1bHRJc0V2ZW4oMykpOwotI2lmICFk
ZWZpbmVkKF9fQk9STEFORENfXykgfHwgX19CT1JMQU5EQ19fID49IDB4NjAwCi0gIC8vIElDRSdz
IGluIEMrK0J1aWxkZXIgMjAwNy4KKyNpZm5kZWYgX19CT1JMQU5EQ19fCisgIC8vIElDRSdzIGlu
IEMrK0J1aWxkZXIuCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShSZXN1bHRJ
c0V2ZW4oMikpLAogICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IFJlc3VsdElzRXZl
bigyKVxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IHRydWUgKDIgaXMgZXZl
bilcbiIKQEAgLTM1MzEsOCArMzY4Niw4IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0RmFs
c2VXaXRoQXNzZXJ0aW9uUmVzdWx0KSB7CiB9CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KLS8vIFJl
c3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXBy
ZXNzZWQgdGhlbQotI3ByYWdtYSBvcHRpb24gcG9wCisvLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRl
ciBwcmV2aW91cyAiI3ByYWdtYSBvcHRpb24gcHVzaCIgc3VwcHJlc3NlZCB0aGVtCisjIHByYWdt
YSBvcHRpb24gcG9wCiAjZW5kaWYKIAogLy8gVGVzdHMgdXNpbmcgQVNTRVJUX0VRIG9uIGRvdWJs
ZSB2YWx1ZXMuICBUaGUgcHVycG9zZSBpcyB0byBtYWtlCkBAIC0zNTUxLDkgKzM3MDYsMTAgQEAg
VEVTVChFeHBlY3RUZXN0LCBBU1NFUlRfRVFfRG91YmxlKSB7CiBURVNUKEFzc2VydGlvblRlc3Qs
IEFTU0VSVF9FUSkgewogICBBU1NFUlRfRVEoNSwgMiArIDMpOwogICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShBU1NFUlRfRVEoNSwgMiozKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9m
OiAyKjNcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiA2XG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgICJFeHBlY3RlZDogNSIpOworICAgICAgICAgICAgICAgICAgICAgICAi
RXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAiICA1XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgIDIqM1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICAiICAgIFdoaWNoIGlzOiA2Iik7CiB9CiAKIC8vIFRlc3RzIEFTU0VSVF9F
UShOVUxMLCBwb2ludGVyKS4KQEAgLTM1NjEsNyArMzcxNyw3IEBAIFRFU1QoQXNzZXJ0aW9uVGVz
dCwgQVNTRVJUX0VRKSB7CiBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9FUV9OVUxMKSB7CiAg
IC8vIEEgc3VjY2Vzcy4KICAgY29uc3QgY2hhciogcCA9IE5VTEw7Ci0gIC8vIFNvbWUgb2xkZXIg
R0NDIHZlcnNpb25zIG1heSBpc3N1ZSBhIHNwdXJpb3VzIHdhcmluZyBpbiB0aGlzIG9yIHRoZSBu
ZXh0CisgIC8vIFNvbWUgb2xkZXIgR0NDIHZlcnNpb25zIG1heSBpc3N1ZSBhIHNwdXJpb3VzIHdh
cm5pbmcgaW4gdGhpcyBvciB0aGUgbmV4dAogICAvLyBhc3NlcnRpb24gc3RhdGVtZW50LiBUaGlz
IHdhcm5pbmcgc2hvdWxkIG5vdCBiZSBzdXBwcmVzc2VkIHdpdGgKICAgLy8gc3RhdGljX2Nhc3Qg
c2luY2UgdGhlIHRlc3QgdmVyaWZpZXMgdGhlIGFiaWxpdHkgdG8gdXNlIGJhcmUgTlVMTCBhcyB0
aGUKICAgLy8gZXhwZWN0ZWQgcGFyYW1ldGVyIHRvIHRoZSBtYWNyby4KQEAgLTM1NzAsNyArMzcy
Niw3IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0VRX05VTEwpIHsKICAgLy8gQSBmYWls
dXJlLgogICBzdGF0aWMgaW50IG4gPSAwOwogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRf
RVEoTlVMTCwgJm4pLAotICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6ICZuXG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIiAgJm5cbiAgICBXaGljaCBpczoiKTsKIH0KICNlbmRp
ZiAgLy8gR1RFU1RfQ0FOX0NPTVBBUkVfTlVMTAogCkBAIC0zNTg2LDcgKzM3NDIsNyBAQCBURVNU
KEV4cGVjdFRlc3QsIEFTU0VSVF9FUV8wKSB7CiAKICAgLy8gQSBmYWlsdXJlLgogICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoMCwgNS42KSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IkV4cGVjdGVkOiAwIik7CisgICAgICAgICAgICAgICAgICAgICAgICIgIDBcbiAgNS42Iik7CiB9
CiAKIC8vIFRlc3RzIEFTU0VSVF9ORS4KQEAgLTM2MzUsMTMgKzM3OTEsMTQgQEAgdm9pZCBUaHJv
d05vdGhpbmcoKSB7fQogVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfVEhST1cpIHsKICAgQVNT
RVJUX1RIUk9XKFRocm93QW5JbnRlZ2VyKCksIGludCk7CiAKLSNpZm5kZWYgX19CT1JMQU5EQ19f
CisjIGlmbmRlZiBfX0JPUkxBTkRDX18KKwogICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcg
YW5kIDIwMDkuCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKAogICAgICAgQVNTRVJUX1RIUk9XKFRo
cm93QW5JbnRlZ2VyKCksIGJvb2wpLAogICAgICAgIkV4cGVjdGVkOiBUaHJvd0FuSW50ZWdlcigp
IHRocm93cyBhbiBleGNlcHRpb24gb2YgdHlwZSBib29sLlxuIgogICAgICAgIiAgQWN0dWFsOiBp
dCB0aHJvd3MgYSBkaWZmZXJlbnQgdHlwZS4iKTsKLSNlbmRpZgorIyBlbmRpZgogCiAgIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKAogICAgICAgQVNTRVJUX1RIUk9XKFRocm93Tm90aGluZygpLCBib29s
KSwKQEAgLTM2NzIsNyArMzgyOSw4IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0FOWV9U
SFJPVykgewogLy8gY29tcGlsZS4KIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0UHJlY2VkZW5j
ZSkgewogICBBU1NFUlRfRVEoMSA8IDIsIHRydWUpOwotICBBU1NFUlRfRVEodHJ1ZSAmJiBmYWxz
ZSwgZmFsc2UpOworICBib29sIGZhbHNlX3ZhbHVlID0gZmFsc2U7CisgIEFTU0VSVF9FUSh0cnVl
ICYmIGZhbHNlX3ZhbHVlLCBmYWxzZSk7CiB9CiAKIC8vIEEgc3Vicm91dGluZSB1c2VkIGJ5IHRo
ZSBmb2xsb3dpbmcgdGVzdC4KQEAgLTM2ODMsNyArMzg0MSw3IEBAIHZvaWQgVGVzdEVxMShpbnQg
eCkgewogLy8gVGVzdHMgY2FsbGluZyBhIHRlc3Qgc3Vicm91dGluZSB0aGF0J3Mgbm90IHBhcnQg
b2YgYSBmaXh0dXJlLgogVEVTVChBc3NlcnRpb25UZXN0LCBOb25GaXh0dXJlU3Vicm91dGluZSkg
ewogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShUZXN0RXExKDIpLAotICAgICAgICAgICAgICAgICAg
ICAgICAiVmFsdWUgb2Y6IHgiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgeFxuICAgIFdo
aWNoIGlzOiAyIik7CiB9CiAKIC8vIEFuIHVuY29weWFibGUgY2xhc3MuCkBAIC0zNzMyLDcgKzM4
OTAsOCBAQCBURVNUKEFzc2VydGlvblRlc3QsIEFzc2VydFdvcmtzV2l0aFVuY29weWFibGVPYmpl
Y3QpIHsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoVGVzdEFzc2VydE5vblBvc2l0aXZlKCksCiAg
ICAgIklzUG9zaXRpdmVVbmNvcHlhYmxlKHkpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmVcbnkg
ZXZhbHVhdGVzIHRvIC0xIik7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKFRlc3RBc3NlcnRFcXVh
bHNVbmNvcHlhYmxlKCksCi0gICAgIlZhbHVlIG9mOiB5XG4gIEFjdHVhbDogLTFcbkV4cGVjdGVk
OiB4XG5XaGljaCBpczogNSIpOworICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZXF1
YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAiICB4XG4g
ICAgV2hpY2ggaXM6IDVcbiAgeVxuICAgIFdoaWNoIGlzOiAtMSIpOwogfQogCiAvLyBUZXN0cyB0
aGF0IHVuY29weWFibGUgb2JqZWN0cyBjYW4gYmUgdXNlZCBpbiBleHBlY3RzLgpAQCAtMzc0NCw1
NyArMzkwMyw5MCBAQCBURVNUKEFzc2VydGlvblRlc3QsIEV4cGVjdFdvcmtzV2l0aFVuY29weWFi
bGVPYmplY3QpIHsKICAgICAiSXNQb3NpdGl2ZVVuY29weWFibGUoeSkgZXZhbHVhdGVzIHRvIGZh
bHNlLCB3aGVyZVxueSBldmFsdWF0ZXMgdG8gLTEiKTsKICAgRVhQRUNUX0VRKHgsIHgpOwogICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoeCwgeSksCi0gICAgIlZhbHVlIG9mOiB5
XG4gIEFjdHVhbDogLTFcbkV4cGVjdGVkOiB4XG5XaGljaCBpczogNSIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAiICB4XG4gICAgV2hpY2ggaXM6IDVcbiAgeVxuICAgIFdo
aWNoIGlzOiAtMSIpOwogfQogCitlbnVtIE5hbWVkRW51bSB7CisgIGtFMSA9IDAsCisgIGtFMiA9
IDEKK307CisKK1RFU1QoQXNzZXJ0aW9uVGVzdCwgTmFtZWRFbnVtKSB7CisgIEVYUEVDVF9FUShr
RTEsIGtFMSk7CisgIEVYUEVDVF9MVChrRTEsIGtFMik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEVYUEVDVF9FUShrRTEsIGtFMiksICJXaGljaCBpczogMCIpOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfRVEoa0UxLCBrRTIpLCAiV2hpY2ggaXM6IDEiKTsKK30KIAogLy8g
VGhlIHZlcnNpb24gb2YgZ2NjIHVzZWQgaW4gWENvZGUgMi4yIGhhcyBhIGJ1ZyBhbmQgZG9lc24n
dCBhbGxvdwogLy8gYW5vbnltb3VzIGVudW1zIGluIGFzc2VydGlvbnMuICBUaGVyZWZvcmUgdGhl
IGZvbGxvd2luZyB0ZXN0IGlzIG5vdAogLy8gZG9uZSBvbiBNYWMuCi0vLyBTdW4gU3R1ZGlvIGFs
c28gcmVqZWN0cyB0aGlzIGNvZGUuCi0jaWYgIUdURVNUX09TX01BQyAmJiAhZGVmaW5lZChfX1NV
TlBST19DQykKKy8vIFN1biBTdHVkaW8gYW5kIEhQIGFDQyBhbHNvIHJlamVjdCB0aGlzIGNvZGUu
CisjaWYgIUdURVNUX09TX01BQyAmJiAhZGVmaW5lZChfX1NVTlBST19DQykgJiYgIWRlZmluZWQo
X19IUF9hQ0MpCiAKIC8vIFRlc3RzIHVzaW5nIGFzc2VydGlvbnMgd2l0aCBhbm9ueW1vdXMgZW51
bXMuCiBlbnVtIHsKLSAgQ0FTRV9BID0gLTEsCi0jaWYgR1RFU1RfT1NfTElOVVgKKyAga0Nhc2VB
ID0gLTEsCisKKyMgaWYgR1RFU1RfT1NfTElOVVgKKwogICAvLyBXZSB3YW50IHRvIHRlc3QgdGhl
IGNhc2Ugd2hlcmUgdGhlIHNpemUgb2YgdGhlIGFub255bW91cyBlbnVtIGlzCiAgIC8vIGxhcmdl
ciB0aGFuIHNpemVvZihpbnQpLCB0byBtYWtlIHN1cmUgb3VyIGltcGxlbWVudGF0aW9uIG9mIHRo
ZQogICAvLyBhc3NlcnRpb25zIGRvZXNuJ3QgdHJ1bmNhdGUgdGhlIGVudW1zLiAgSG93ZXZlciwg
TVNWQwogICAvLyAoaW5jb3JyZWN0bHkpIGRvZXNuJ3QgYWxsb3cgYW4gZW51bSB2YWx1ZSB0byBl
eGNlZWQgdGhlIHJhbmdlIG9mCiAgIC8vIGFuIGludCwgc28gdGhpcyBoYXMgdG8gYmUgY29uZGl0
aW9uYWxseSBjb21waWxlZC4KICAgLy8KLSAgLy8gT24gTGludXgsIENBU0VfQiBhbmQgQ0FTRV9B
IGhhdmUgdGhlIHNhbWUgdmFsdWUgd2hlbiB0cnVuY2F0ZWQgdG8KKyAgLy8gT24gTGludXgsIGtD
YXNlQiBhbmQga0Nhc2VBIGhhdmUgdGhlIHNhbWUgdmFsdWUgd2hlbiB0cnVuY2F0ZWQgdG8KICAg
Ly8gaW50IHNpemUuICBXZSB3YW50IHRvIHRlc3Qgd2hldGhlciB0aGlzIHdpbGwgY29uZnVzZSB0
aGUKICAgLy8gYXNzZXJ0aW9ucy4KLSAgQ0FTRV9CID0gdGVzdGluZzo6aW50ZXJuYWw6OmtNYXhC
aWdnZXN0SW50LAotI2Vsc2UKLSAgQ0FTRV9CID0gSU5UX01BWCwKLSNlbmRpZiAgLy8gR1RFU1Rf
T1NfTElOVVgKKyAga0Nhc2VCID0gdGVzdGluZzo6aW50ZXJuYWw6OmtNYXhCaWdnZXN0SW50LAor
CisjIGVsc2UKKworICBrQ2FzZUIgPSBJTlRfTUFYLAorCisjIGVuZGlmICAvLyBHVEVTVF9PU19M
SU5VWAorCisgIGtDYXNlQyA9IDQyCiB9OwogCiBURVNUKEFzc2VydGlvblRlc3QsIEFub255bW91
c0VudW0pIHsKLSNpZiBHVEVTVF9PU19MSU5VWAotICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50
PihDQVNFX0EpLCBzdGF0aWNfY2FzdDxpbnQ+KENBU0VfQikpOwotI2VuZGlmICAvLyBHVEVTVF9P
U19MSU5VWAotCi0gIEVYUEVDVF9FUShDQVNFX0EsIENBU0VfQSk7Ci0gIEVYUEVDVF9ORShDQVNF
X0EsIENBU0VfQik7Ci0gIEVYUEVDVF9MVChDQVNFX0EsIENBU0VfQik7Ci0gIEVYUEVDVF9MRShD
QVNFX0EsIENBU0VfQik7Ci0gIEVYUEVDVF9HVChDQVNFX0IsIENBU0VfQSk7Ci0gIEVYUEVDVF9H
RShDQVNFX0EsIENBU0VfQSk7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HRShD
QVNFX0EsIENBU0VfQiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoQ0FTRV9BKSA+PSAo
Q0FTRV9CKSIpOwotCi0gIEFTU0VSVF9FUShDQVNFX0EsIENBU0VfQSk7Ci0gIEFTU0VSVF9ORShD
QVNFX0EsIENBU0VfQik7Ci0gIEFTU0VSVF9MVChDQVNFX0EsIENBU0VfQik7Ci0gIEFTU0VSVF9M
RShDQVNFX0EsIENBU0VfQik7Ci0gIEFTU0VSVF9HVChDQVNFX0IsIENBU0VfQSk7Ci0gIEFTU0VS
VF9HRShDQVNFX0EsIENBU0VfQSk7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShD
QVNFX0EsIENBU0VfQiksCi0gICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogQ0FTRV9C
Iik7CisjIGlmIEdURVNUX09TX0xJTlVYCisKKyAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGludD4o
a0Nhc2VBKSwgc3RhdGljX2Nhc3Q8aW50PihrQ2FzZUIpKTsKKworIyBlbmRpZiAgLy8gR1RFU1Rf
T1NfTElOVVgKKworICBFWFBFQ1RfRVEoa0Nhc2VBLCBrQ2FzZUEpOworICBFWFBFQ1RfTkUoa0Nh
c2VBLCBrQ2FzZUIpOworICBFWFBFQ1RfTFQoa0Nhc2VBLCBrQ2FzZUIpOworICBFWFBFQ1RfTEUo
a0Nhc2VBLCBrQ2FzZUIpOworICBFWFBFQ1RfR1Qoa0Nhc2VCLCBrQ2FzZUEpOworICBFWFBFQ1Rf
R0Uoa0Nhc2VBLCBrQ2FzZUEpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR0Uo
a0Nhc2VBLCBrQ2FzZUIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiKGtDYXNlQSkgPj0g
KGtDYXNlQikiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dFKGtDYXNlQSwg
a0Nhc2VDKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIi0xIHZzIDQyIik7CisKKyAgQVNT
RVJUX0VRKGtDYXNlQSwga0Nhc2VBKTsKKyAgQVNTRVJUX05FKGtDYXNlQSwga0Nhc2VCKTsKKyAg
QVNTRVJUX0xUKGtDYXNlQSwga0Nhc2VCKTsKKyAgQVNTRVJUX0xFKGtDYXNlQSwga0Nhc2VCKTsK
KyAgQVNTRVJUX0dUKGtDYXNlQiwga0Nhc2VBKTsKKyAgQVNTRVJUX0dFKGtDYXNlQSwga0Nhc2VB
KTsKKworIyBpZm5kZWYgX19CT1JMQU5EQ19fCisKKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4K
KyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKGtDYXNlQSwga0Nhc2VCKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIiAga0Nhc2VCXG4gICAgV2hpY2ggaXM6ICIpOworICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoa0Nhc2VBLCBrQ2FzZUMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAiXG4gICAgV2hpY2ggaXM6IDQyIik7CisjIGVuZGlmCisKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoQVNTRVJUX0VRKGtDYXNlQSwga0Nhc2VDKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIlxuICAgIFdoaWNoIGlzOiAtMSIpOwogfQogCiAjZW5kaWYgIC8vICFHVEVTVF9PU19NQUMg
JiYgIWRlZmluZWQoX19TVU5QUk9fQ0MpCkBAIC0zODQwLDI0ICs0MDMyLDI2IEBAIFRFU1QoSFJF
U1VMVEFzc2VydGlvblRlc3QsIEVYUEVDVF9IUkVTVUxUX0ZBSUxFRCkgewogCiAgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChPa0hSRVNVTFRTdWNjZXNzKCkp
LAogICAgICJFeHBlY3RlZDogKE9rSFJFU1VMVFN1Y2Nlc3MoKSkgZmFpbHMuXG4iCi0gICAgIiAg
QWN0dWFsOiAweDAwMDAwMDAwIik7CisgICAgIiAgQWN0dWFsOiAweDAiKTsKICAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0hSRVNVTFRfRkFJTEVEKEZhbHNlSFJFU1VMVFN1Y2Nlc3Mo
KSksCiAgICAgIkV4cGVjdGVkOiAoRmFsc2VIUkVTVUxUU3VjY2VzcygpKSBmYWlscy5cbiIKLSAg
ICAiICBBY3R1YWw6IDB4MDAwMDAwMDEiKTsKKyAgICAiICBBY3R1YWw6IDB4MSIpOwogfQogCiBU
RVNUKEhSRVNVTFRBc3NlcnRpb25UZXN0LCBBU1NFUlRfSFJFU1VMVF9GQUlMRUQpIHsKICAgQVNT
RVJUX0hSRVNVTFRfRkFJTEVEKEVfVU5FWFBFQ1RFRCk7CiAKLSNpZm5kZWYgX19CT1JMQU5EQ19f
CisjIGlmbmRlZiBfX0JPUkxBTkRDX18KKwogICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcg
YW5kIDIwMDkuCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChP
a0hSRVNVTFRTdWNjZXNzKCkpLAogICAgICJFeHBlY3RlZDogKE9rSFJFU1VMVFN1Y2Nlc3MoKSkg
ZmFpbHMuXG4iCi0gICAgIiAgQWN0dWFsOiAweDAwMDAwMDAwIik7Ci0jZW5kaWYKKyAgICAiICBB
Y3R1YWw6IDB4MCIpOworIyBlbmRpZgorCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9I
UkVTVUxUX0ZBSUxFRChGYWxzZUhSRVNVTFRTdWNjZXNzKCkpLAogICAgICJFeHBlY3RlZDogKEZh
bHNlSFJFU1VMVFN1Y2Nlc3MoKSkgZmFpbHMuXG4iCi0gICAgIiAgQWN0dWFsOiAweDAwMDAwMDAx
Iik7CisgICAgIiAgQWN0dWFsOiAweDEiKTsKIH0KIAogLy8gVGVzdHMgdGhhdCBzdHJlYW1pbmcg
dG8gdGhlIEhSRVNVTFQgbWFjcm9zIHdvcmtzLgpAQCAtMzg3MSwxMiArNDA2NSwxMyBAQCBURVNU
KEhSRVNVTFRBc3NlcnRpb25UZXN0LCBTdHJlYW1pbmcpIHsKICAgICAgIEVYUEVDVF9IUkVTVUxU
X1NVQ0NFRURFRChFX1VORVhQRUNURUQpIDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKICAgICAgICJl
eHBlY3RlZCBmYWlsdXJlIik7CiAKLSNpZm5kZWYgX19CT1JMQU5EQ19fCisjIGlmbmRlZiBfX0JP
UkxBTkRDX18KKwogICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcgYW5kIDIwMDkuCiAgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKAogICAgICAgQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKEVfVU5F
WFBFQ1RFRCkgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAogICAgICAgImV4cGVjdGVkIGZhaWx1cmUi
KTsKLSNlbmRpZgorIyBlbmRpZgogCiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAogICAgICAg
RVhQRUNUX0hSRVNVTFRfRkFJTEVEKFNfT0spIDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKQEAgLTM4
OTEsNyArNDA4Niw3IEBAIFRFU1QoSFJFU1VMVEFzc2VydGlvblRlc3QsIFN0cmVhbWluZykgewog
CiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBTaWxlbmNlcyB3YXJuaW5nczogIkNvbmRpdGlvbiBp
cyBhbHdheXMgdHJ1ZSIsICJVbnJlYWNoYWJsZSBjb2RlIgotI3ByYWdtYSBvcHRpb24gcHVzaCAt
dy1jY2MgLXctcmNoCisjIHByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCiAjZW5kaWYK
IAogLy8gVGVzdHMgdGhhdCB0aGUgYXNzZXJ0aW9uIG1hY3JvcyBiZWhhdmUgbGlrZSBzaW5nbGUg
c3RhdGVtZW50cy4KQEAgLTQwMDgsNyArNDIwMyw3IEBAIFRFU1QoQXNzZXJ0aW9uU3ludGF4VGVz
dCwgV29ya3NXaXRoU3dpdGNoKSB7CiAjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKIAogdm9pZCBU
aHJvd0FTdHJpbmcoKSB7Ci0gICAgdGhyb3cgIlN0cmluZyI7CisgICAgdGhyb3cgInN0ZDo6c3Ry
aW5nIjsKIH0KIAogLy8gVGVzdCB0aGF0IHRoZSBleGNlcHRpb24gYXNzZXJ0aW9uIG1hY3JvcyBj
b21waWxlIGFuZCB3b3JrIHdpdGggY29uc3QKQEAgLTQwNjAsOCArNDI1NSwxMDkgQEAgVEVTVChT
dWNjZXNzZnVsQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1NUUikgewogCiBuYW1lc3BhY2UgewogCisv
LyBUZXN0cyB0aGUgbWVzc2FnZSBzdHJlYW1pbmcgdmFyaWF0aW9uIG9mIGFzc2VydGlvbnMuCisK
K1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBFWFBFQ1QpIHsKKyAgRVhQRUNUX0VRKDEs
IDEpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEVYUEVDVF9ORSgxLCAxKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMS4iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZSAjMSIpOworICBFWFBFQ1RfTEUoMSwgMikg
PDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX0xUKDEsIDApIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJlICMyLiIpOworICBFWFBFQ1RfR0UoMSwgMCkgPDwg
IlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNU
X0dUKDEsIDIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzLiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJFeHBlY3RlZCBmYWlsdXJlICMzLiIpOworCisgIEVYUEVDVF9TVFJFUSgiMSIsICIx
IikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX1NUUk5FKCIxIiwgIjEiKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNC4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZSAjNC4iKTsKKyAgRVhQRUNUX1NU
UkNBU0VFUSgiYSIsICJBIikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1NUUkNBU0VORSgiYSIsICJBIikgPDwgIkV4cGVjdGVkIGZh
aWx1cmUgIzUuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1cmUg
IzUuIik7CisKKyAgRVhQRUNUX0ZMT0FUX0VRKDEsIDEpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVk
LiI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ET1VCTEVfRVEoMSwgMS4yKSA8
PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhw
ZWN0ZWQgZmFpbHVyZSAjNi4iKTsKKyAgRVhQRUNUX05FQVIoMSwgMS4xLCAwLjIpIDw8ICJUaGlz
IHNob3VsZCBzdWNjZWVkLiI7Cit9CisKK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBB
U1NFUlQpIHsKKyAgQVNTRVJUX0VRKDEsIDEpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7Cisg
IEFTU0VSVF9ORSgxLCAyKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfTEUo
MSwgMikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJUX0xUKDEsIDIpIDw8ICJU
aGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9HRSgxLCAwKSA8PCAiVGhpcyBzaG91bGQg
c3VjY2VlZC4iOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfR1QoMSwgMikgPDwgIkV4
cGVjdGVkIGZhaWx1cmUuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1
cmUuIik7Cit9CisKK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBBU1NFUlRfU1RSKSB7
CisgIEFTU0VSVF9TVFJFUSgiMSIsICIxIikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAg
QVNTRVJUX1NUUk5FKCIxIiwgIjIiKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NF
UlRfU1RSQ0FTRUVRKCJhIiwgIkEiKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfU1RSQ0FTRU5FKCJhIiwgIkEiKSA8PCAiRXhwZWN0ZWQg
ZmFpbHVyZS4iLAorICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZS4iKTsK
K30KKworVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVF9GTE9BVElORykgewor
ICBBU1NFUlRfRkxPQVRfRVEoMSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNT
RVJUX0RPVUJMRV9FUSgxLCAxKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShBU1NFUlRfTkVBUigxLDEuMiwgMC4xKSA8PCAiRXhwZWN0IGZhaWx1cmUu
IiwgIC8vIE5PTElOVAorICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0IGZhaWx1cmUuIik7
CisgIC8vIFRvIHdvcmsgYXJvdW5kIGEgYnVnIGluIGdjYyAyLjk1LjAsIHRoZXJlIGlzIGludGVu
dGlvbmFsbHkgbm8KKyAgLy8gc3BhY2UgYWZ0ZXIgdGhlIGZpcnN0IGNvbW1hIGluIHRoZSBwcmV2
aW91cyBzdGF0ZW1lbnQuCit9CisKKy8vIFRlc3RzIHVzaW5nIEFTU0VSVF9GQUxTRSB3aXRoIGEg
c3RyZWFtZWQgbWVzc2FnZS4KK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBBU1NFUlRf
RkFMU0UpIHsKKyAgQVNTRVJUX0ZBTFNFKGZhbHNlKSA8PCAiVGhpcyBzaG91bGRuJ3QgZmFpbC4i
OworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfRkFMU0Uo
dHJ1ZSkgPDwgIkV4cGVjdGVkIGZhaWx1cmU6ICIgPDwgMiA8PCAiID4gIiA8PCAxCisgICAgICAg
ICAgICAgICAgICAgICAgIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdHJ1ZTsKKyAgfSwgIkV4cGVj
dGVkIGZhaWx1cmUiKTsKK30KKworLy8gVGVzdHMgdXNpbmcgRkFJTCB3aXRoIGEgc3RyZWFtZWQg
bWVzc2FnZS4KK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBGQUlMKSB7CisgIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKEZBSUwoKSA8PCAwLAorICAgICAgICAgICAgICAgICAgICAgICAiMCIp
OworfQorCisvLyBUZXN0cyB1c2luZyBTVUNDRUVEIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgor
VEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIFNVQ0NFRUQpIHsKKyAgU1VDQ0VFRCgpIDw8
ICJTdWNjZXNzID09ICIgPDwgMTsKK30KKworLy8gVGVzdHMgdXNpbmcgQVNTRVJUX1RSVUUgd2l0
aCBhIHN0cmVhbWVkIG1lc3NhZ2UuCitURVNUKEFzc2VydGlvbldpdGhNZXNzYWdlVGVzdCwgQVNT
RVJUX1RSVUUpIHsKKyAgQVNTRVJUX1RSVUUodHJ1ZSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQu
IjsKKyAgQVNTRVJUX1RSVUUodHJ1ZSkgPDwgdHJ1ZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX1RSVUUoZmFsc2UpIDw8IHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIgKj4oTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8Y2hh
ciAqPihOVUxMKTsKKyAgfSwgIihudWxsKShudWxsKSIpOworfQorCisjaWYgR1RFU1RfT1NfV0lO
RE9XUworLy8gVGVzdHMgdXNpbmcgd2lkZSBzdHJpbmdzIGluIGFzc2VydGlvbiBtZXNzYWdlcy4K
K1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBXaWRlU3RyaW5nTWVzc2FnZSkgeworICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfVFJVRShmYWxz
ZSkgPDwgTCJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuXHg4MTE5IjsKKyAgfSwgIlRoaXMgZmFp
bHVyZSBpcyBleHBlY3RlZC4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
CisgICAgQVNTRVJUX0VRKDEsIDIpIDw8ICJUaGlzIGZhaWx1cmUgaXMgIgorICAgICAgICAgICAg
ICAgICAgICA8PCBMImV4cGVjdGVkIHRvby5ceDgxMjAiOworICB9LCAiVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkIHRvby4iKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCiAvLyBU
ZXN0cyBFWFBFQ1RfVFJVRS4KIFRFU1QoRXhwZWN0VGVzdCwgRVhQRUNUX1RSVUUpIHsKKyAgRVhQ
RUNUX1RSVUUodHJ1ZSkgPDwgIkludGVudGlvbmFsIHN1Y2Nlc3MiOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfVFJVRShmYWxzZSkgPDwgIkludGVudGlvbmFsIGZhaWx1cmUgIzEu
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkludGVudGlvbmFsIGZhaWx1cmUgIzEuIik7
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9UUlVFKGZhbHNlKSA8PCAiSW50ZW50
aW9uYWwgZmFpbHVyZSAjMi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9u
YWwgZmFpbHVyZSAjMi4iKTsKICAgRVhQRUNUX1RSVUUoMiA+IDEpOyAgLy8gTk9MSU5UCiAgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9UUlVFKDIgPCAxKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlZhbHVlIG9mOiAyIDwgMVxuIgpAQCAtNDA4NSw5ICs0MzgxLDE0IEBAIFRF
U1QoRXhwZWN0VGVzdCwgRXhwZWN0VHJ1ZVdpdGhBc3NlcnRpb25SZXN1bHQpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiB0cnVlIik7CiB9CiAKLS8vIFRlc3RzIEVYUEVD
VF9GQUxTRS4KKy8vIFRlc3RzIEVYUEVDVF9GQUxTRSB3aXRoIGEgc3RyZWFtZWQgbWVzc2FnZS4K
IFRFU1QoRXhwZWN0VGVzdCwgRVhQRUNUX0ZBTFNFKSB7CiAgIEVYUEVDVF9GQUxTRSgyIDwgMSk7
ICAvLyBOT0xJTlQKKyAgRVhQRUNUX0ZBTFNFKGZhbHNlKSA8PCAiSW50ZW50aW9uYWwgc3VjY2Vz
cyI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GQUxTRSh0cnVlKSA8PCAiSW50
ZW50aW9uYWwgZmFpbHVyZSAjMS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50
aW9uYWwgZmFpbHVyZSAjMS4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0ZB
TFNFKHRydWUpIDw8ICJJbnRlbnRpb25hbCBmYWlsdXJlICMyLiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICJJbnRlbnRpb25hbCBmYWlsdXJlICMyLiIpOwogICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShFWFBFQ1RfRkFMU0UoMiA+IDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAi
VmFsdWUgb2Y6IDIgPiAxXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDog
dHJ1ZVxuIgpAQCAtNDExMSwxNyArNDQxMiwxOCBAQCBURVNUKEV4cGVjdFRlc3QsIEV4cGVjdEZh
bHNlV2l0aEFzc2VydGlvblJlc3VsdCkgewogfQogCiAjaWZkZWYgX19CT1JMQU5EQ19fCi0vLyBS
ZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2aW91cyAiI3ByYWdtYSBvcHRpb24gcHVzaCIgc3Vw
cmVzc2VkIHRoZW0KLSNwcmFnbWEgb3B0aW9uIHBvcAorLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0
ZXIgcHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHByZXNzZWQgdGhlbQorIyBwcmFn
bWEgb3B0aW9uIHBvcAogI2VuZGlmCiAKIC8vIFRlc3RzIEVYUEVDVF9FUS4KIFRFU1QoRXhwZWN0
VGVzdCwgRVhQRUNUX0VRKSB7CiAgIEVYUEVDVF9FUSg1LCAyICsgMyk7CiAgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9FUSg1LCAyKjMpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAiVmFsdWUgb2Y6IDIqM1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6
IDZcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiA1Iik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgIDVcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgMiozXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgV2hpY2ggaXM6
IDYiKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDUsIDIgLSAzKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIjIgLSAzIik7CiB9CkBAIC00MTQzLDcgKzQ0NDUsNyBA
QCBURVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9FUV9Eb3VibGUpIHsKIFRFU1QoRXhwZWN0VGVzdCwg
RVhQRUNUX0VRX05VTEwpIHsKICAgLy8gQSBzdWNjZXNzLgogICBjb25zdCBjaGFyKiBwID0gTlVM
TDsKLSAgLy8gU29tZSBvbGRlciBHQ0MgdmVyc2lvbnMgbWF5IGlzc3VlIGEgc3B1cmlvdXMgd2Fy
aW5nIGluIHRoaXMgb3IgdGhlIG5leHQKKyAgLy8gU29tZSBvbGRlciBHQ0MgdmVyc2lvbnMgbWF5
IGlzc3VlIGEgc3B1cmlvdXMgd2FybmluZyBpbiB0aGlzIG9yIHRoZSBuZXh0CiAgIC8vIGFzc2Vy
dGlvbiBzdGF0ZW1lbnQuIFRoaXMgd2FybmluZyBzaG91bGQgbm90IGJlIHN1cHByZXNzZWQgd2l0
aAogICAvLyBzdGF0aWNfY2FzdCBzaW5jZSB0aGUgdGVzdCB2ZXJpZmllcyB0aGUgYWJpbGl0eSB0
byB1c2UgYmFyZSBOVUxMIGFzIHRoZQogICAvLyBleHBlY3RlZCBwYXJhbWV0ZXIgdG8gdGhlIG1h
Y3JvLgpAQCAtNDE1Miw3ICs0NDU0LDcgQEAgVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVFfTlVM
TCkgewogICAvLyBBIGZhaWx1cmUuCiAgIGludCBuID0gMDsKICAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoRVhQRUNUX0VRKE5VTEwsICZuKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlZh
bHVlIG9mOiAmblxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgICZuXG4gICAgV2hp
Y2ggaXM6Iik7CiB9CiAjZW5kaWYgIC8vIEdURVNUX0NBTl9DT01QQVJFX05VTEwKIApAQCAtNDE2
OCw3ICs0NDcwLDcgQEAgVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVFfMCkgewogCiAgIC8vIEEg
ZmFpbHVyZS4KICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDAsIDUuNiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogMCIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICAwXG4gIDUuNiIpOwogfQogCiAvLyBUZXN0cyBFWFBFQ1RfTkUuCkBAIC00
MjY4LDcgKzQ1NzAsNyBAQCBURVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9BTllfVEhST1cpIHsKIFRF
U1QoRXhwZWN0VGVzdCwgRXhwZWN0UHJlY2VkZW5jZSkgewogICBFWFBFQ1RfRVEoMSA8IDIsIHRy
dWUpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEodHJ1ZSwgdHJ1ZSAmJiBm
YWxzZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogdHJ1ZSAmJiBmYWxz
ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiICB0cnVlICYmIGZhbHNlXG4gICAgV2hp
Y2ggaXM6IGZhbHNlIik7CiB9CiAKIApAQCAtNDM2MSw3ICs0NjYzLDcgQEAgVEVTVChTdHJlYW1h
YmxlVGVzdCwgQmFzaWNJb01hbmlwKSB7CiAKIHZvaWQgQWRkRmFpbHVyZUhlbHBlcihib29sKiBh
Ym9ydGVkKSB7CiAgICphYm9ydGVkID0gdHJ1ZTsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiRmFpbHVy
ZSI7CisgIEFERF9GQUlMVVJFKCkgPDwgIkludGVudGlvbmFsIGZhaWx1cmUuIjsKICAgKmFib3J0
ZWQgPSBmYWxzZTsKIH0KIApAQCAtNDM2OSwxMCArNDY3MSwyNSBAQCB2b2lkIEFkZEZhaWx1cmVI
ZWxwZXIoYm9vbCogYWJvcnRlZCkgewogVEVTVChNYWNyb1Rlc3QsIEFERF9GQUlMVVJFKSB7CiAg
IGJvb2wgYWJvcnRlZCA9IHRydWU7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1
cmVIZWxwZXIoJmFib3J0ZWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbHVyZSIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9uYWwgZmFpbHVyZS4iKTsKICAg
RVhQRUNUX0ZBTFNFKGFib3J0ZWQpOwogfQogCisvLyBUZXN0cyBBRERfRkFJTFVSRV9BVC4KK1RF
U1QoTWFjcm9UZXN0LCBBRERfRkFJTFVSRV9BVCkgeworICAvLyBWZXJpZmllcyB0aGF0IEFERF9G
QUlMVVJFX0FUIGRvZXMgZ2VuZXJhdGUgYSBub25mYXRhbCBmYWlsdXJlIGFuZAorICAvLyB0aGUg
ZmFpbHVyZSBtZXNzYWdlIGNvbnRhaW5zIHRoZSB1c2VyLXN0cmVhbWVkIHBhcnQuCisgIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKEFERF9GQUlMVVJFX0FUKCJmb28uY2MiLCA0MikgPDwgIldyb25n
ISIsICJXcm9uZyEiKTsKKworICAvLyBWZXJpZmllcyB0aGF0IHRoZSB1c2VyLXN0cmVhbWVkIHBh
cnQgaXMgb3B0aW9uYWwuCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFERF9GQUlMVVJFX0FU
KCJmb28uY2MiLCA0MiksICJGYWlsZWQiKTsKKworICAvLyBVbmZvcnR1bmF0ZWx5LCB3ZSBjYW5u
b3QgdmVyaWZ5IHRoYXQgdGhlIGZhaWx1cmUgbWVzc2FnZSBjb250YWlucworICAvLyB0aGUgcmln
aHQgZmlsZSBwYXRoIGFuZCBsaW5lIG51bWJlciB0aGUgc2FtZSB3YXksIGFzCisgIC8vIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKCkgZG9lc24ndCBnZXQgdG8gc2VlIHRoZSBmaWxlIHBhdGggYW5k
CisgIC8vIGxpbmUgbnVtYmVyLiAgSW5zdGVhZCwgd2UgZG8gdGhhdCBpbiBnb29nbGV0ZXN0LW91
dHB1dC10ZXN0Xy5jYy4KK30KKwogLy8gVGVzdHMgRkFJTC4KIFRFU1QoTWFjcm9UZXN0LCBGQUlM
KSB7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEZBSUwoKSwKQEAgLTQzODcsNyArNDcwNCw2IEBA
IFRFU1QoTWFjcm9UZXN0LCBTVUNDRUVEKSB7CiAgIFNVQ0NFRUQoKSA8PCAiRXhwbGljaXQgc3Vj
Y2Vzcy4iOwogfQogCi0KIC8vIFRlc3RzIGZvciBFWFBFQ1RfRVEoKSBhbmQgQVNTRVJUX0VRKCku
CiAvLwogLy8gVGhlc2UgdGVzdHMgZmFpbCAqaW50ZW50aW9uYWxseSosIHMudC4gdGhlIGZhaWx1
cmUgbWVzc2FnZXMgY2FuIGJlCkBAIC00Mzk4LDE1ICs0NzE0LDE3IEBAIFRFU1QoTWFjcm9UZXN0
LCBTVUNDRUVEKSB7CiAvLyBUZXN0cyB1c2luZyBib29sIHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VS
VH1fRVEuCiBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgQm9vbCkgewogICBFWFBFQ1RfRVEodHJ1ZSwg
IHRydWUpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoZmFsc2UsIHRydWUpLAot
ICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IHRydWUiKTsKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoeworICAgICAgYm9vbCBmYWxzZV92YWx1ZSA9IGZhbHNlOworICAgICAgQVNTRVJU
X0VRKGZhbHNlX3ZhbHVlLCB0cnVlKTsKKyAgICB9LCAiICBmYWxzZV92YWx1ZVxuICAgIFdoaWNo
IGlzOiBmYWxzZVxuICB0cnVlIik7CiB9CiAKIC8vIFRlc3RzIHVzaW5nIGludCB2YWx1ZXMgaW4g
e0VYUEVDVHxBU1NFUlR9X0VRLgogVEVTVChFcUFzc2VydGlvblRlc3QsIEludCkgewogICBBU1NF
UlRfRVEoMzIsIDMyKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDMyLCAz
MyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIzMyIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICAzMlxuICAzMyIpOwogfQogCiAvLyBUZXN0cyB1c2luZyB0aW1lX3QgdmFsdWVz
IGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4KQEAgLTQ0MjMsOSArNDc0MSw5IEBAIFRFU1QoRXFBc3Nl
cnRpb25UZXN0LCBDaGFyKSB7CiAgIEFTU0VSVF9FUSgneicsICd6Jyk7CiAgIGNvbnN0IGNoYXIg
Y2ggPSAnYic7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSgnXDAnLCBjaCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICJjaCIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICBjaFxuICAgIFdoaWNoIGlzOiAnYiciKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoRVhQRUNUX0VRKCdhJywgY2gpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiY2giKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgY2hcbiAgICBXaGljaCBpczogJ2InIik7CiB9
CiAKIC8vIFRlc3RzIHVzaW5nIHdjaGFyX3QgdmFsdWVzIGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4K
QEAgLTQ0MzMsMTggKzQ3NTEsMTkgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIFdpZGVDaGFyKSB7
CiAgIEVYUEVDVF9FUShMJ2InLCBMJ2InKTsKIAogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShF
WFBFQ1RfRVEoTCdcMCcsIEwneCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUg
b2Y6IEwneCdcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBMJ3gnICgx
MjAsIDB4NzgpXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogTCdcMCdc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIldoaWNoIGlzOiBMJ1wwJyAoMCwgMHgwKSIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2Ug
dmFsdWVzOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiICBMJ1wwJ1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiICAgIFdoaWNoIGlzOiBMJ1wwJyAoMCwgMHgwKVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAiICBMJ3gnXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICIgICAgV2hpY2ggaXM6IEwneCcgKDEyMCwgMHg3OCkiKTsKIAogICBzdGF0aWMgd2NoYXJf
dCB3Y2hhcjsKICAgd2NoYXIgPSBMJ2InOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBF
Q1RfRVEoTCdhJywgd2NoYXIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAid2NoYXIiKTsK
LSAgd2NoYXIgPSBMJ1x4ODExOSc7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShM
J1x4ODEyMCcsIHdjaGFyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiB3Y2hh
ciIpOworICB3Y2hhciA9IDB4ODExOTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VR
KHN0YXRpY19jYXN0PHdjaGFyX3Q+KDB4ODEyMCksIHdjaGFyKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIiAgd2NoYXJcbiAgICBXaGljaCBpczogTCciKTsKIH0KIAogLy8gVGVzdHMgdXNpbmcg
OjpzdGQ6OnN0cmluZyB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgpAQCAtNDQ2MSw3ICs0
NzgwLDcgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIFN0ZFN0cmluZykgewogICAvLyBDb21wYXJl
cyBhIGNvbnN0IGNoYXIqIHRvIGFuIHN0ZDo6c3RyaW5nIHRoYXQgaGFzIGRpZmZlcmVudAogICAv
LyBjb250ZW50CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSgiVGVzdCIsIDo6
c3RkOjpzdHJpbmcoInRlc3QiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICI6OnN0ZDo6
c3RyaW5nKFwidGVzdFwiKSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiXCJ0ZXN0XCIi
KTsKIAogICAvLyBDb21wYXJlcyBhbiBzdGQ6OnN0cmluZyB0byBhIGNoYXIqIHRoYXQgaGFzIGRp
ZmZlcmVudCBjb250ZW50LgogICBjaGFyKiBjb25zdCBwMSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KCJm
b28iKTsKQEAgLTQ0NzMsMjggKzQ3OTIsMjkgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIFN0ZFN0
cmluZykgewogICBzdGF0aWMgOjpzdGQ6OnN0cmluZyBzdHIzKHN0cjEpOwogICBzdHIzLmF0KDIp
ID0gJ1wwJzsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKHN0cjEsIHN0cjMpLAot
ICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IHN0cjNcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgIiAgQWN0dWFsOiBcIkEgXFwwIGluIHRoZSBtaWRkbGVcIiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAiICBzdHIzXG4gICAgV2hpY2ggaXM6IFwiQSBcXDAgaW4gdGhlIG1pZGRs
ZVwiIik7CiB9CiAKICNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKIAogLy8gVGVzdHMgdXNpbmcg
OjpzdGQ6OndzdHJpbmcgdmFsdWVzIGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4KIFRFU1QoRXFBc3Nl
cnRpb25UZXN0LCBTdGRXaWRlU3RyaW5nKSB7Ci0gIC8vIENvbXBhcmVzIGFuIHN0ZDo6d3N0cmlu
ZyB0byBhIGNvbnN0IHdjaGFyX3QqIHRoYXQgaGFzIGlkZW50aWNhbAotICAvLyBjb250ZW50Lgot
ICBFWFBFQ1RfRVEoOjpzdGQ6OndzdHJpbmcoTCJUZXN0XHg4MTE5IiksIEwiVGVzdFx4ODExOSIp
OwotCiAgIC8vIENvbXBhcmVzIHR3byBpZGVudGljYWwgc3RkOjp3c3RyaW5ncy4KICAgY29uc3Qg
OjpzdGQ6OndzdHJpbmcgd3N0cjEoTCJBICogaW4gdGhlIG1pZGRsZSIpOwogICBjb25zdCA6OnN0
ZDo6d3N0cmluZyB3c3RyMih3c3RyMSk7CiAgIEFTU0VSVF9FUSh3c3RyMSwgd3N0cjIpOwogCisg
IC8vIENvbXBhcmVzIGFuIHN0ZDo6d3N0cmluZyB0byBhIGNvbnN0IHdjaGFyX3QqIHRoYXQgaGFz
IGlkZW50aWNhbAorICAvLyBjb250ZW50LgorICBjb25zdCB3Y2hhcl90IGtUZXN0WDgxMTlbXSA9
IHsgJ1QnLCAnZScsICdzJywgJ3QnLCAweDgxMTksICdcMCcgfTsKKyAgRVhQRUNUX0VRKDo6c3Rk
Ojp3c3RyaW5nKGtUZXN0WDgxMTkpLCBrVGVzdFg4MTE5KTsKKwogICAvLyBDb21wYXJlcyBhbiBz
dGQ6OndzdHJpbmcgdG8gYSBjb25zdCB3Y2hhcl90KiB0aGF0IGhhcyBkaWZmZXJlbnQKICAgLy8g
Y29udGVudC4KKyAgY29uc3Qgd2NoYXJfdCBrVGVzdFg4MTIwW10gPSB7ICdUJywgJ2UnLCAncycs
ICd0JywgMHg4MTIwLCAnXDAnIH07CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5P
TElOVAotICAgIEVYUEVDVF9FUSg6OnN0ZDo6d3N0cmluZyhMIlRlc3RceDgxMTkiKSwgTCJUZXN0
XHg4MTIwIik7Ci0gIH0sICJMXCJUZXN0XFx4ODEyMFwiIik7CisgICAgRVhQRUNUX0VRKDo6c3Rk
Ojp3c3RyaW5nKGtUZXN0WDgxMTkpLCBrVGVzdFg4MTIwKTsKKyAgfSwgImtUZXN0WDgxMjAiKTsK
IAogICAvLyBDb21wYXJlcyB0d28gc3RkOjp3c3RyaW5ncyB0aGF0IGhhdmUgZGlmZmVyZW50IGNv
bnRlbnRzLCBvbmUgb2YKICAgLy8gd2hpY2ggaGF2aW5nIGEgTlVMIGNoYXJhY3RlciBpbiB0aGUg
bWlkZGxlLgpAQCAtNDU0NiwxOCArNDg2NiwyMCBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgR2xv
YmFsU3RyaW5nKSB7CiAKIC8vIFRlc3RzIHVzaW5nIDo6d3N0cmluZyB2YWx1ZXMgaW4ge0VYUEVD
VHxBU1NFUlR9X0VRLgogVEVTVChFcUFzc2VydGlvblRlc3QsIEdsb2JhbFdpZGVTdHJpbmcpIHsK
LSAgLy8gQ29tcGFyZXMgYSBjb25zdCB3Y2hhcl90KiB0byBhIDo6d3N0cmluZyB0aGF0IGhhcyBp
ZGVudGljYWwgY29udGVudC4KLSAgQVNTRVJUX0VRKEwiVGVzdFx4ODExOSIsIDo6d3N0cmluZyhM
IlRlc3RceDgxMTkiKSk7Ci0KICAgLy8gQ29tcGFyZXMgdHdvIGlkZW50aWNhbCA6OndzdHJpbmdz
LgogICBzdGF0aWMgY29uc3QgOjp3c3RyaW5nIHdzdHIxKEwiQSAqIGluIHRoZSBtaWRkbGUiKTsK
ICAgc3RhdGljIGNvbnN0IDo6d3N0cmluZyB3c3RyMih3c3RyMSk7CiAgIEVYUEVDVF9FUSh3c3Ry
MSwgd3N0cjIpOwogCisgIC8vIENvbXBhcmVzIGEgY29uc3Qgd2NoYXJfdCogdG8gYSA6OndzdHJp
bmcgdGhhdCBoYXMgaWRlbnRpY2FsIGNvbnRlbnQuCisgIGNvbnN0IHdjaGFyX3Qga1Rlc3RYODEx
OVtdID0geyAnVCcsICdlJywgJ3MnLCAndCcsIDB4ODExOSwgJ1wwJyB9OworICBBU1NFUlRfRVEo
a1Rlc3RYODExOSwgOjp3c3RyaW5nKGtUZXN0WDgxMTkpKTsKKwogICAvLyBDb21wYXJlcyBhIGNv
bnN0IHdjaGFyX3QqIHRvIGEgOjp3c3RyaW5nIHRoYXQgaGFzIGRpZmZlcmVudAogICAvLyBjb250
ZW50LgorICBjb25zdCB3Y2hhcl90IGtUZXN0WDgxMjBbXSA9IHsgJ1QnLCAnZScsICdzJywgJ3Qn
LCAweDgxMjAsICdcMCcgfTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
Ci0gICAgRVhQRUNUX0VRKEwiVGVzdFx4ODEyMCIsIDo6d3N0cmluZyhMIlRlc3RceDgxMTkiKSk7
CisgICAgRVhQRUNUX0VRKGtUZXN0WDgxMjAsIDo6d3N0cmluZyhrVGVzdFg4MTE5KSk7CiAgIH0s
ICJUZXN0XFx4ODExOSIpOwogCiAgIC8vIENvbXBhcmVzIGEgd2NoYXJfdCogdG8gYSA6OndzdHJp
bmcgdGhhdCBoYXMgZGlmZmVyZW50IGNvbnRlbnQuCkBAIC00NTkwLDkgKzQ5MTIsOSBAQCBURVNU
KEVxQXNzZXJ0aW9uVGVzdCwgQ2hhclBvaW50ZXIpIHsKICAgQVNTRVJUX0VRKHAxLCBwMSk7CiAK
ICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHAwLCBwMiksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogcDIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiAgcDJcbiAgICBXaGljaCBpczoiKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX0VRKHAxLCBwMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJwMiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAiICBwMlxuICAgIFdoaWNoIGlzOiIpOwogICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShBU1NFUlRfRVEocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oMHgxMjM0KSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KDB4
QUJDMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAiQUJDMCIpOwpAQCAtNDYxMiw5ICs0OTM0
LDkgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIFdpZGVDaGFyUG9pbnRlcikgewogICBFWFBFQ1Rf
RVEocDAsIHAwKTsKIAogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEocDAsIHAy
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBwMiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICBwMlxuICAgIFdoaWNoIGlzOiIpOwogICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfRVEocDEsIHAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
InAyIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgIHAyXG4gICAgV2hpY2ggaXM6Iik7
CiAgIHZvaWQqIHB2MyA9ICh2b2lkKikweDEyMzQ7ICAvLyBOT0xJTlQKICAgdm9pZCogcHY0ID0g
KHZvaWQqKTB4QUJDMDsgIC8vIE5PTElOVAogICBjb25zdCB3Y2hhcl90KiBwMyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3Qgd2NoYXJfdCo+KHB2Myk7CkBAIC00NjMyLDYgKzQ5NTQsNjggQEAgVEVT
VChFcUFzc2VydGlvblRlc3QsIE90aGVyUG9pbnRlcikgewogICAgICAgICAgICAgICAgICAgICAg
ICAiMHgxMjM0Iik7CiB9CiAKKy8vIEEgY2xhc3MgdGhhdCBzdXBwb3J0cyBiaW5hcnkgY29tcGFy
aXNvbiBvcGVyYXRvcnMgYnV0IG5vdCBzdHJlYW1pbmcuCitjbGFzcyBVbnByaW50YWJsZUNoYXIg
eworIHB1YmxpYzoKKyAgZXhwbGljaXQgVW5wcmludGFibGVDaGFyKGNoYXIgY2gpIDogY2hhcl8o
Y2gpIHt9CisKKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBj
b25zdCB7CisgICAgcmV0dXJuIGNoYXJfID09IHJocy5jaGFyXzsKKyAgfQorICBib29sIG9wZXJh
dG9yIT0oY29uc3QgVW5wcmludGFibGVDaGFyJiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gY2hh
cl8gIT0gcmhzLmNoYXJfOworICB9CisgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFVucHJpbnRhYmxl
Q2hhciYgcmhzKSBjb25zdCB7CisgICAgcmV0dXJuIGNoYXJfIDwgcmhzLmNoYXJfOworICB9Cisg
IGJvb2wgb3BlcmF0b3I8PShjb25zdCBVbnByaW50YWJsZUNoYXImIHJocykgY29uc3QgeworICAg
IHJldHVybiBjaGFyXyA8PSByaHMuY2hhcl87CisgIH0KKyAgYm9vbCBvcGVyYXRvcj4oY29uc3Qg
VW5wcmludGFibGVDaGFyJiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gY2hhcl8gPiByaHMuY2hh
cl87CisgIH0KKyAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBj
b25zdCB7CisgICAgcmV0dXJuIGNoYXJfID49IHJocy5jaGFyXzsKKyAgfQorCisgcHJpdmF0ZToK
KyAgY2hhciBjaGFyXzsKK307CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0VRKCkgYW5kIGZyaWVu
ZHMgZG9uJ3QgcmVxdWlyZSB0aGUgYXJndW1lbnRzIHRvCisvLyBiZSBwcmludGFibGUuCitURVNU
KENvbXBhcmlzb25Bc3NlcnRpb25UZXN0LCBBY2NlcHRzVW5wcmludGFibGVBcmdzKSB7CisgIGNv
bnN0IFVucHJpbnRhYmxlQ2hhciB4KCd4JyksIHkoJ3knKTsKKyAgQVNTRVJUX0VRKHgsIHgpOwor
ICBFWFBFQ1RfTkUoeCwgeSk7CisgIEFTU0VSVF9MVCh4LCB5KTsKKyAgRVhQRUNUX0xFKHgsIHkp
OworICBBU1NFUlRfR1QoeSwgeCk7CisgIEVYUEVDVF9HRSh4LCB4KTsKKworICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoeCwgeSksICIxLWJ5dGUgb2JqZWN0IDw3OD4iKTsKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHgsIHkpLCAiMS1ieXRlIG9iamVjdCA8
Nzk+Iik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9MVCh5LCB5KSwgIjEtYnl0
ZSBvYmplY3QgPDc5PiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR1QoeCwg
eSksICIxLWJ5dGUgb2JqZWN0IDw3OD4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX0dUKHgsIHkpLCAiMS1ieXRlIG9iamVjdCA8Nzk+Iik7CisKKyAgLy8gQ29kZSB0ZXN0ZWQg
YnkgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUgY2Fubm90IHJlZmVyZW5jZSBsb2NhbAorICAvLyB2YXJp
YWJsZXMsIHNvIHdlIGhhdmUgdG8gd3JpdGUgVW5wcmludGFibGVDaGFyKCd4JykgaW5zdGVhZCBv
ZiB4LgorI2lmbmRlZiBfX0JPUkxBTkRDX18KKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4KKyAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX05FKFVucHJpbnRhYmxlQ2hhcigneCcpLCBVbnBy
aW50YWJsZUNoYXIoJ3gnKSksCisgICAgICAgICAgICAgICAgICAgICAgICIxLWJ5dGUgb2JqZWN0
IDw3OD4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0xFKFVucHJpbnRhYmxlQ2hh
cigneScpLCBVbnByaW50YWJsZUNoYXIoJ3gnKSksCisgICAgICAgICAgICAgICAgICAgICAgICIx
LWJ5dGUgb2JqZWN0IDw3OD4iKTsKKyNlbmRpZgorICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NF
UlRfTEUoVW5wcmludGFibGVDaGFyKCd5JyksIFVucHJpbnRhYmxlQ2hhcigneCcpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3QgPDc5PiIpOworICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShBU1NFUlRfR0UoVW5wcmludGFibGVDaGFyKCd4JyksIFVucHJpbnRhYmxlQ2hhcign
eScpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3QgPDc4PiIpOworICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfR0UoVW5wcmludGFibGVDaGFyKCd4JyksIFVucHJp
bnRhYmxlQ2hhcigneScpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3Qg
PDc5PiIpOworfQorCiAvLyBUZXN0cyB0aGUgRlJJRU5EX1RFU1QgbWFjcm8uCiAKIC8vIFRoaXMg
Y2xhc3MgaGFzIGEgcHJpdmF0ZSBtZW1iZXIgd2Ugd2FudCB0byB0ZXN0LiAgV2Ugd2lsbCB0ZXN0
IGl0CkBAIC00NzQ5LDcgKzUxMzMsNyBAQCBURVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIENvbnN0
cnVjdGlvbldvcmtzKSB7CiAgIEVYUEVDVF9TVFJFUSgiZ2hpIiwgcjUubWVzc2FnZSgpKTsKIH0K
IAotLy8gVGVzdHMgdGhhdCB0aGUgbmVnYXRpb24gZmlwcyB0aGUgcHJlZGljYXRlIHJlc3VsdCBi
dXQga2VlcHMgdGhlIG1lc3NhZ2UuCisvLyBUZXN0cyB0aGF0IHRoZSBuZWdhdGlvbiBmbGlwcyB0
aGUgcHJlZGljYXRlIHJlc3VsdCBidXQga2VlcHMgdGhlIG1lc3NhZ2UuCiBURVNUKEFzc2VydGlv
blJlc3VsdFRlc3QsIE5lZ2F0aW9uV29ya3MpIHsKICAgQXNzZXJ0aW9uUmVzdWx0IHIxID0gQXNz
ZXJ0aW9uU3VjY2VzcygpIDw8ICJhYmMiOwogICBFWFBFQ1RfRkFMU0UoIXIxKTsKQEAgLTQ3NjYs
NiArNTE1MCwzNyBAQCBURVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIFN0cmVhbWluZ1dvcmtzKSB7
CiAgIEVYUEVDVF9TVFJFUSgiYWJjZDB0cnVlIiwgci5tZXNzYWdlKCkpOwogfQogCitURVNUKEFz
c2VydGlvblJlc3VsdFRlc3QsIENhblN0cmVhbU9zdHJlYW1NYW5pcHVsYXRvcnMpIHsKKyAgQXNz
ZXJ0aW9uUmVzdWx0IHIgPSBBc3NlcnRpb25TdWNjZXNzKCk7CisgIHIgPDwgIkRhdGEiIDw8IHN0
ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoIDw8IHN0ZDo6ZW5kcyA8PCAiV2lsbCBiZSB2aXNpYmxlIjsK
KyAgRVhQRUNUX1NUUkVRKCJEYXRhXG5cXDBXaWxsIGJlIHZpc2libGUiLCByLm1lc3NhZ2UoKSk7
Cit9CisKKy8vIFRoZSBuZXh0IHRlc3QgdXNlcyBleHBsaWNpdCBjb252ZXJzaW9uIG9wZXJhdG9y
cyAtLSBhIEMrKzExIGZlYXR1cmUuCisjaWYgR1RFU1RfTEFOR19DWFgxMQorCitURVNUKEFzc2Vy
dGlvblJlc3VsdFRlc3QsIENvbnN0cnVjdGlibGVGcm9tQ29udGV4dHVhbGx5Q29udmVydGlibGVU
b0Jvb2wpIHsKKyAgc3RydWN0IEV4cGxpY2l0bHlDb252ZXJ0aWJsZVRvQm9vbCB7CisgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlOyB9CisgICAgYm9vbCB2
YWx1ZTsKKyAgfTsKKyAgRXhwbGljaXRseUNvbnZlcnRpYmxlVG9Cb29sIHYxID0ge2ZhbHNlfTsK
KyAgRXhwbGljaXRseUNvbnZlcnRpYmxlVG9Cb29sIHYyID0ge3RydWV9OworICBFWFBFQ1RfRkFM
U0UodjEpOworICBFWFBFQ1RfVFJVRSh2Mik7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfTEFOR19D
WFgxMQorCitzdHJ1Y3QgQ29udmVydGlibGVUb0Fzc2VydGlvblJlc3VsdCB7CisgIG9wZXJhdG9y
IEFzc2VydGlvblJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIEFzc2VydGlvblJlc3VsdCh0cnVlKTsg
fQorfTsKKworVEVTVChBc3NlcnRpb25SZXN1bHRUZXN0LCBDb25zdHJ1Y3RpYmxlRnJvbUltcGxp
Y2l0bHlDb252ZXJ0aWJsZSkgeworICBDb252ZXJ0aWJsZVRvQXNzZXJ0aW9uUmVzdWx0IG9iajsK
KyAgRVhQRUNUX1RSVUUob2JqKTsKK30KKwogLy8gVGVzdHMgc3RyZWFtaW5nIGEgdXNlciB0eXBl
IHdob3NlIGRlZmluaXRpb24gYW5kIG9wZXJhdG9yIDw8IGFyZQogLy8gYm90aCBpbiB0aGUgZ2xv
YmFsIG5hbWVzcGFjZS4KIGNsYXNzIEJhc2UgewpAQCAtNDk1MCw2ICs1MzY1LDU5IEBAIFRFU1Rf
RihUZXN0SW5mb1Rlc3QsIHJlc3VsdCkgewogICBBU1NFUlRfRVEoMCwgR2V0VGVzdFJlc3VsdCh0
ZXN0X2luZm8pLT50b3RhbF9wYXJ0X2NvdW50KCkpOwogfQogCisjZGVmaW5lIFZFUklGWV9DT0RF
X0xPQ0FUSU9OIFwKKyAgY29uc3QgaW50IGV4cGVjdGVkX2xpbmUgPSBfX0xJTkVfXyAtIDE7IFwK
KyAgY29uc3QgVGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9IEdldFVuaXRUZXN0SW1wbCgpLT5j
dXJyZW50X3Rlc3RfaW5mbygpOyBcCisgIEFTU0VSVF9UUlVFKHRlc3RfaW5mbyk7IFwKKyAgRVhQ
RUNUX1NUUkVRKF9fRklMRV9fLCB0ZXN0X2luZm8tPmZpbGUoKSk7IFwKKyAgRVhQRUNUX0VRKGV4
cGVjdGVkX2xpbmUsIHRlc3RfaW5mby0+bGluZSgpKQorCitURVNUKENvZGVMb2NhdGlvbkZvclRF
U1QsIFZlcmlmeSkgeworICBWRVJJRllfQ09ERV9MT0NBVElPTjsKK30KKworY2xhc3MgQ29kZUxv
Y2F0aW9uRm9yVEVTVEYgOiBwdWJsaWMgVGVzdCB7Cit9OworCitURVNUX0YoQ29kZUxvY2F0aW9u
Rm9yVEVTVEYsIFZlcmlmeSkgeworICBWRVJJRllfQ09ERV9MT0NBVElPTjsKK30KKworY2xhc3Mg
Q29kZUxvY2F0aW9uRm9yVEVTVFAgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsKK307CisK
K1RFU1RfUChDb2RlTG9jYXRpb25Gb3JURVNUUCwgVmVyaWZ5KSB7CisgIFZFUklGWV9DT0RFX0xP
Q0FUSU9OOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUCgsIENvZGVMb2NhdGlvbkZvclRF
U1RQLCBWYWx1ZXMoMCkpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIENvZGVMb2Nh
dGlvbkZvclRZUEVEVEVTVCA6IHB1YmxpYyBUZXN0IHsKK307CisKK1RZUEVEX1RFU1RfQ0FTRShD
b2RlTG9jYXRpb25Gb3JUWVBFRFRFU1QsIGludCk7CisKK1RZUEVEX1RFU1QoQ29kZUxvY2F0aW9u
Rm9yVFlQRURURVNULCBWZXJpZnkpIHsKKyAgVkVSSUZZX0NPREVfTE9DQVRJT047Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCA6IHB1
YmxpYyBUZXN0IHsKK307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKENvZGVMb2NhdGlvbkZvclRZUEVE
VEVTVFApOworCitUWVBFRF9URVNUX1AoQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCwgVmVyaWZ5
KSB7CisgIFZFUklGWV9DT0RFX0xPQ0FUSU9OOworfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NB
U0VfUChDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1RQLCBWZXJpZnkpOworCitJTlNUQU5USUFURV9U
WVBFRF9URVNUX0NBU0VfUChNeSwgQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCwgaW50KTsKKwor
I3VuZGVmIFZFUklGWV9DT0RFX0xPQ0FUSU9OCisKIC8vIFRlc3RzIHNldHRpbmcgdXAgYW5kIHRl
YXJpbmcgZG93biBhIHRlc3QgY2FzZS4KIAogY2xhc3MgU2V0VXBUZXN0Q2FzZVRlc3QgOiBwdWJs
aWMgVGVzdCB7CkBAIC01MDEzLDcgKzU0ODEsOCBAQCBURVNUX0YoU2V0VXBUZXN0Q2FzZVRlc3Qs
IFRlc3QyKSB7CiAgIEVYUEVDVF9TVFJFUSgiMTIzIiwgc2hhcmVkX3Jlc291cmNlXyk7CiB9CiAK
LS8vIFRoZSBJbml0R29vZ2xlVGVzdFRlc3QgdGVzdCBjYXNlIHRlc3RzIHRlc3Rpbmc6OkluaXRH
b29nbGVUZXN0KCkuCisKKy8vIFRoZSBQYXJzZUZsYWdzVGVzdCB0ZXN0IGNhc2UgdGVzdHMgUGFy
c2VHb29nbGVUZXN0RmxhZ3NPbmx5LgogCiAvLyBUaGUgRmxhZ3Mgc3RydWN0IHN0b3JlcyBhIGNv
cHkgb2YgYWxsIEdvb2dsZSBUZXN0IGZsYWdzLgogc3RydWN0IEZsYWdzIHsKQEAgLTUwMzAsNiAr
NTQ5OSw3IEBAIHN0cnVjdCBGbGFncyB7CiAgICAgICAgICAgICByZXBlYXQoMSksCiAgICAgICAg
ICAgICBzaHVmZmxlKGZhbHNlKSwKICAgICAgICAgICAgIHN0YWNrX3RyYWNlX2RlcHRoKGtNYXhT
dGFja1RyYWNlRGVwdGgpLAorICAgICAgICAgICAgc3RyZWFtX3Jlc3VsdF90bygiIiksCiAgICAg
ICAgICAgICB0aHJvd19vbl9mYWlsdXJlKGZhbHNlKSB7fQogCiAgIC8vIEZhY3RvcnkgbWV0aG9k
cy4KQEAgLTUwOTgsOCArNTU2OCw4IEBAIHN0cnVjdCBGbGFncyB7CiAgICAgcmV0dXJuIGZsYWdz
OwogICB9CiAKLSAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3RfcmFu
ZG9tX3NlZWQgZmxhZyBoYXMKLSAgLy8gdGhlIGdpdmVuIHZhbHVlLgorICAvLyBDcmVhdGVzIGEg
RmxhZ3Mgc3RydWN0IHdoZXJlIHRoZSBndGVzdF9yYW5kb21fc2VlZCBmbGFnIGhhcyB0aGUgZ2l2
ZW4KKyAgLy8gdmFsdWUuCiAgIHN0YXRpYyBGbGFncyBSYW5kb21TZWVkKEludDMyIHJhbmRvbV9z
ZWVkKSB7CiAgICAgRmxhZ3MgZmxhZ3M7CiAgICAgZmxhZ3MucmFuZG9tX3NlZWQgPSByYW5kb21f
c2VlZDsKQEAgLTUxMTQsOCArNTU4NCw4IEBAIHN0cnVjdCBGbGFncyB7CiAgICAgcmV0dXJuIGZs
YWdzOwogICB9CiAKLSAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3Rf
c2h1ZmZsZSBmbGFnIGhhcwotICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCisgIC8vIENyZWF0ZXMgYSBG
bGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIGd0ZXN0X3NodWZmbGUgZmxhZyBoYXMgdGhlIGdpdmVuCisg
IC8vIHZhbHVlLgogICBzdGF0aWMgRmxhZ3MgU2h1ZmZsZShib29sIHNodWZmbGUpIHsKICAgICBG
bGFncyBmbGFnczsKICAgICBmbGFncy5zaHVmZmxlID0gc2h1ZmZsZTsKQEAgLTUxMzAsNiArNTYw
MCwxNCBAQCBzdHJ1Y3QgRmxhZ3MgewogICAgIHJldHVybiBmbGFnczsKICAgfQogCisgIC8vIENy
ZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90
bykgZmxhZyBoYXMKKyAgLy8gdGhlIGdpdmVuIHZhbHVlLgorICBzdGF0aWMgRmxhZ3MgU3RyZWFt
UmVzdWx0VG8oY29uc3QgY2hhciogc3RyZWFtX3Jlc3VsdF90bykgeworICAgIEZsYWdzIGZsYWdz
OworICAgIGZsYWdzLnN0cmVhbV9yZXN1bHRfdG8gPSBzdHJlYW1fcmVzdWx0X3RvOworICAgIHJl
dHVybiBmbGFnczsKKyAgfQorCiAgIC8vIENyZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hlcmUgdGhl
IGd0ZXN0X3Rocm93X29uX2ZhaWx1cmUgZmxhZyBoYXMKICAgLy8gdGhlIGdpdmVuIHZhbHVlLgog
ICBzdGF0aWMgRmxhZ3MgVGhyb3dPbkZhaWx1cmUoYm9vbCB0aHJvd19vbl9mYWlsdXJlKSB7CkBA
IC01MTUxLDExICs1NjI5LDEyIEBAIHN0cnVjdCBGbGFncyB7CiAgIEludDMyIHJlcGVhdDsKICAg
Ym9vbCBzaHVmZmxlOwogICBJbnQzMiBzdGFja190cmFjZV9kZXB0aDsKKyAgY29uc3QgY2hhciog
c3RyZWFtX3Jlc3VsdF90bzsKICAgYm9vbCB0aHJvd19vbl9mYWlsdXJlOwogfTsKIAotLy8gRml4
dHVyZSBmb3IgdGVzdGluZyBJbml0R29vZ2xlVGVzdCgpLgotY2xhc3MgSW5pdEdvb2dsZVRlc3RU
ZXN0IDogcHVibGljIFRlc3QgeworLy8gRml4dHVyZSBmb3IgdGVzdGluZyBQYXJzZUdvb2dsZVRl
c3RGbGFnc09ubHkoKS4KK2NsYXNzIFBhcnNlRmxhZ3NUZXN0IDogcHVibGljIFRlc3QgewogIHBy
b3RlY3RlZDoKICAgLy8gQ2xlYXJzIHRoZSBmbGFncyBiZWZvcmUgZWFjaCB0ZXN0LgogICB2aXJ0
dWFsIHZvaWQgU2V0VXAoKSB7CkBAIC01MTcxLDYgKzU2NTAsNyBAQCBjbGFzcyBJbml0R29vZ2xl
VGVzdFRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgR1RFU1RfRkxBRyhyZXBlYXQpID0gMTsKICAg
ICBHVEVTVF9GTEFHKHNodWZmbGUpID0gZmFsc2U7CiAgICAgR1RFU1RfRkxBRyhzdGFja190cmFj
ZV9kZXB0aCkgPSBrTWF4U3RhY2tUcmFjZURlcHRoOworICAgIEdURVNUX0ZMQUcoc3RyZWFtX3Jl
c3VsdF90bykgPSAiIjsKICAgICBHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gZmFsc2U7
CiAgIH0KIApAQCAtNTE5OSw4ICs1Njc5LDEwIEBAIGNsYXNzIEluaXRHb29nbGVUZXN0VGVzdCA6
IHB1YmxpYyBUZXN0IHsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQucmFuZG9tX3NlZWQsIEdURVNU
X0ZMQUcocmFuZG9tX3NlZWQpKTsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQucmVwZWF0LCBHVEVT
VF9GTEFHKHJlcGVhdCkpOwogICAgIEVYUEVDVF9FUShleHBlY3RlZC5zaHVmZmxlLCBHVEVTVF9G
TEFHKHNodWZmbGUpKTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQudGhyb3dfb25fZmFpbHVyZSwg
R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSk7CiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkLnN0
YWNrX3RyYWNlX2RlcHRoLCBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSk7CisgICAgRVhQ
RUNUX1NUUkVRKGV4cGVjdGVkLnN0cmVhbV9yZXN1bHRfdG8sCisgICAgICAgICAgICAgICAgIEdU
RVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykuY19zdHIoKSk7CisgICAgRVhQRUNUX0VRKGV4cGVj
dGVkLnRocm93X29uX2ZhaWx1cmUsIEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkpOwogICB9
CiAKICAgLy8gUGFyc2VzIGEgY29tbWFuZCBsaW5lIChzcGVjaWZpZWQgYnkgYXJnYzEgYW5kIGFy
Z3YxKSwgdGhlbgpAQCAtNTIxMywxNiArNTY5NSwxNiBAQCBjbGFzcyBJbml0R29vZ2xlVGVzdFRl
c3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgY29uc3QgYm9vbCBzYXZlZF9oZWxwX2ZsYWcgPSA6OnRl
c3Rpbmc6OmludGVybmFsOjpnX2hlbHBfZmxhZzsKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpn
X2hlbHBfZmxhZyA9IGZhbHNlOwogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8K
KyMgaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgogICAgIENhcHR1cmVTdGRvdXQoKTsK
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyMgZW5kaWYKIAogICAg
IC8vIFBhcnNlcyB0aGUgY29tbWFuZCBsaW5lLgogICAgIGludGVybmFsOjpQYXJzZUdvb2dsZVRl
c3RGbGFnc09ubHkoJmFyZ2MxLCBjb25zdF9jYXN0PENoYXJUeXBlKio+KGFyZ3YxKSk7CiAKLSNp
ZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXwotICAgIGNvbnN0IFN0cmluZyBjYXB0dXJl
ZF9zdGRvdXQgPSBHZXRDYXB0dXJlZFN0ZG91dCgpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RS
RUFNX1JFRElSRUNUSU9OXworIyBpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgY2FwdHVyZWRfc3Rkb3V0ID0gR2V0Q2FwdHVyZWRTdGRvdXQoKTsK
KyMgZW5kaWYKIAogICAgIC8vIFZlcmlmaWVzIHRoZSBmbGFnIHZhbHVlcy4KICAgICBDaGVja0Zs
YWdzKGV4cGVjdGVkKTsKQEAgLTUyMzUsNyArNTcxNyw3IEBAIGNsYXNzIEluaXRHb29nbGVUZXN0
VGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICAvLyBoZWxwIG1lc3NhZ2UgZm9yIHRoZSBmbGFncyBp
dCByZWNvZ25pemVzLgogICAgIEVYUEVDVF9FUShzaG91bGRfcHJpbnRfaGVscCwgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6Z19oZWxwX2ZsYWcpOwogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVD
VElPTl8KKyMgaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgogICAgIGNvbnN0IGNoYXIq
IGNvbnN0IGV4cGVjdGVkX2hlbHBfZnJhZ21lbnQgPQogICAgICAgICAiVGhpcyBwcm9ncmFtIGNv
bnRhaW5zIHRlc3RzIHdyaXR0ZW4gdXNpbmciOwogICAgIGlmIChzaG91bGRfcHJpbnRfaGVscCkg
ewpAQCAtNTI0NCwyMSArNTcyNiwyMiBAQCBjbGFzcyBJbml0R29vZ2xlVGVzdFRlc3QgOiBwdWJs
aWMgVGVzdCB7CiAgICAgICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzTm90U3Vic3RyaW5nLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9oZWxwX2ZyYWdtZW50LCBjYXB0dXJlZF9z
dGRvdXQpOwogICAgIH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8K
KyMgZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KIAogICAgIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OmdfaGVscF9mbGFnID0gc2F2ZWRfaGVscF9mbGFnOwogICB9CiAKICAgLy8g
VGhpcyBtYWNybyB3cmFwcyBUZXN0UGFyc2luZ0ZsYWdzIHMudC4gdGhlIHVzZXIgZG9lc24ndCBu
ZWVkCiAgIC8vIHRvIHNwZWNpZnkgdGhlIGFycmF5IHNpemVzLgotI2RlZmluZSBHVEVTVF9URVNU
X1BBUlNJTkdfRkxBR1NfKGFyZ3YxLCBhcmd2MiwgZXhwZWN0ZWQsIHNob3VsZF9wcmludF9oZWxw
KSBcCisKKyMgZGVmaW5lIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndjEsIGFyZ3YyLCBl
eHBlY3RlZCwgc2hvdWxkX3ByaW50X2hlbHApIFwKICAgVGVzdFBhcnNpbmdGbGFncyhzaXplb2Yo
YXJndjEpL3NpemVvZigqYXJndjEpIC0gMSwgYXJndjEsIFwKICAgICAgICAgICAgICAgICAgICBz
aXplb2YoYXJndjIpL3NpemVvZigqYXJndjIpIC0gMSwgYXJndjIsIFwKICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZCwgc2hvdWxkX3ByaW50X2hlbHApCiB9OwogCiAvLyBUZXN0cyBwYXJzaW5n
IGFuIGVtcHR5IGNvbW1hbmQgbGluZS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEVtcHR5
KSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEVtcHR5KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3Zb
XSA9IHsKICAgICBOVUxMCiAgIH07CkBAIC01MjcxLDcgKzU3NTQsNyBAQCBURVNUX0YoSW5pdEdv
b2dsZVRlc3RUZXN0LCBFbXB0eSkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIGEgY29tbWFuZCBs
aW5lIHRoYXQgaGFzIG5vIGZsYWcuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBOb0ZsYWcp
IHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgTm9GbGFnKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3Zb
XSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgTlVMTApAQCAtNTI4Niw3ICs1NzY5LDcgQEAgVEVT
VF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTm9GbGFnKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcg
YSBiYWQgLS1ndGVzdF9maWx0ZXIgZmxhZy4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEZp
bHRlckJhZCkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBGaWx0ZXJCYWQpIHsKICAgY29uc3Qg
Y2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9maWx0ZXIiLApA
QCAtNTMwMyw3ICs1Nzg2LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRmlsdGVyQmFk
KSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgYW4gZW1wdHkgLS1ndGVzdF9maWx0ZXIgZmxhZy4K
LVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEZpbHRlckVtcHR5KSB7CitURVNUX0YoUGFyc2VG
bGFnc1Rlc3QsIEZpbHRlckVtcHR5KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAi
Zm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfZmlsdGVyPSIsCkBAIC01MzE5LDcgKzU4MDIsNyBAQCBU
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBGaWx0ZXJFbXB0eSkgewogfQogCiAvLyBUZXN0cyBw
YXJzaW5nIGEgbm9uLWVtcHR5IC0tZ3Rlc3RfZmlsdGVyIGZsYWcuCi1URVNUX0YoSW5pdEdvb2ds
ZVRlc3RUZXN0LCBGaWx0ZXJOb25FbXB0eSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBGaWx0
ZXJOb25FbXB0eSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAog
ICAgICItLWd0ZXN0X2ZpbHRlcj1hYmMiLApAQCAtNTMzNSw3ICs1ODE4LDcgQEAgVEVTVF9GKElu
aXRHb29nbGVUZXN0VGVzdCwgRmlsdGVyTm9uRW1wdHkpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2lu
ZyAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBC
cmVha09uRmFpbHVyZVdpdGhvdXRWYWx1ZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBCcmVh
a09uRmFpbHVyZVdpdGhvdXRWYWx1ZSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAg
ImZvby5leGUiLAogICAgICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUiLApAQCAtNTM1MSw3ICs1
ODM0LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVXaXRob3V0
VmFsdWUpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9
MC4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlRmFsc2VfMCkgewor
VEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBCcmVha09uRmFpbHVyZUZhbHNlXzApIHsKICAgY29uc3Qg
Y2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9icmVha19vbl9m
YWlsdXJlPTAiLApAQCAtNTM2Nyw3ICs1ODUwLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVz
dCwgQnJlYWtPbkZhaWx1cmVGYWxzZV8wKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVz
dF9icmVha19vbl9mYWlsdXJlPWYuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09u
RmFpbHVyZUZhbHNlX2YpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgQnJlYWtPbkZhaWx1cmVG
YWxzZV9mKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAg
Ii0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZT1mIiwKQEAgLTUzODMsNyArNTg2Niw3IEBAIFRFU1Rf
RihJbml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlRmFsc2VfZikgewogfQogCiAvLyBU
ZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZT1GLgotVEVTVF9GKEluaXRHb29n
bGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVGYWxzZV9GKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rl
c3QsIEJyZWFrT25GYWlsdXJlRmFsc2VfRikgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAg
ICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9RiIsCkBAIC01NDAw
LDcgKzU4ODMsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVyZUZh
bHNlX0YpIHsKIAogLy8gVGVzdHMgcGFyc2luZyBhIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBm
bGFnIHRoYXQgaGFzIGEgInRydWUiCiAvLyBkZWZpbml0aW9uLgotVEVTVF9GKEluaXRHb29nbGVU
ZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVUcnVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEJy
ZWFrT25GYWlsdXJlVHJ1ZSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5l
eGUiLAogICAgICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9MSIsCkBAIC01NDE2LDcgKzU4OTks
NyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVyZVRydWUpIHsKIH0K
IAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnMuCi1URVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBDYXRjaEV4Y2VwdGlvbnMpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVz
dCwgQ2F0Y2hFeGNlcHRpb25zKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9v
LmV4ZSIsCiAgICAgIi0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucyIsCkBAIC01NDMyLDcgKzU5MTUs
NyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBDYXRjaEV4Y2VwdGlvbnMpIHsKIH0KIAog
Ly8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2RlYXRoX3Rlc3RfdXNlX2ZvcmsuCi1URVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBEZWF0aFRlc3RVc2VGb3JrKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rl
c3QsIERlYXRoVGVzdFVzZUZvcmspIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJm
b28uZXhlIiwKICAgICAiLS1ndGVzdF9kZWF0aF90ZXN0X3VzZV9mb3JrIiwKQEAgLTU0NDksNyAr
NTkzMiw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIERlYXRoVGVzdFVzZUZvcmspIHsK
IAogLy8gVGVzdHMgaGF2aW5nIHRoZSBzYW1lIGZsYWcgdHdpY2Ugd2l0aCBkaWZmZXJlbnQgdmFs
dWVzLiAgVGhlCiAvLyBleHBlY3RlZCBiZWhhdmlvciBpcyB0aGF0IHRoZSBvbmUgY29taW5nIGxh
c3QgdGFrZXMgcHJlY2VkZW5jZS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIER1cGxpY2F0
ZWRGbGFncykgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBEdXBsaWNhdGVkRmxhZ3MpIHsKICAg
Y29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9maWx0
ZXI9YSIsCkBAIC01NDY2LDcgKzU5NDksNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBE
dXBsaWNhdGVkRmxhZ3MpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5nIGFuIHVucmVjb2duaXplZCBm
bGFnIG9uIHRoZSBjb21tYW5kIGxpbmUuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBVbnJl
Y29nbml6ZWRGbGFnKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFVucmVjb2duaXplZEZsYWcp
IHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVz
dF9icmVha19vbl9mYWlsdXJlIiwKQEAgLTU0ODgsNyArNTk3MSw3IEBAIFRFU1RfRihJbml0R29v
Z2xlVGVzdFRlc3QsIFVucmVjb2duaXplZEZsYWcpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5nIGEg
LS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIExpc3RU
ZXN0c0ZsYWcpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgTGlzdFRlc3RzRmxhZykgewogICAg
IGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICItLWd0ZXN0
X2xpc3RfdGVzdHMiLApAQCAtNTUwNCw3ICs1OTg3LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0
VGVzdCwgTGlzdFRlc3RzRmxhZykgewogfQogCiAvLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X2xp
c3RfdGVzdHMgZmxhZyB3aXRoIGEgInRydWUiIHZhbHVlCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RU
ZXN0LCBMaXN0VGVzdHNUcnVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIExpc3RUZXN0c1Ry
dWUpIHsKICAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAiZm9vLmV4ZSIsCiAgICAg
ICAiLS1ndGVzdF9saXN0X3Rlc3RzPTEiLApAQCAtNTUyMCw3ICs2MDAzLDcgQEAgVEVTVF9GKElu
aXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzVHJ1ZSkgewogfQogCiAvLyBUZXN0cyBoYXZpbmcg
YSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZyB3aXRoIGEgImZhbHNlIiB2YWx1ZQotVEVTVF9GKElu
aXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzRmFsc2UpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVz
dCwgTGlzdFRlc3RzRmFsc2UpIHsKICAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAi
Zm9vLmV4ZSIsCiAgICAgICAiLS1ndGVzdF9saXN0X3Rlc3RzPTAiLApAQCAtNTUzNiw3ICs2MDE5
LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzRmFsc2UpIHsKIH0KIAog
Ly8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2xpc3RfdGVzdHM9Zi4KLVRFU1RfRihJbml0R29vZ2xl
VGVzdFRlc3QsIExpc3RUZXN0c0ZhbHNlX2YpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgTGlz
dFRlc3RzRmFsc2VfZikgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUi
LAogICAgICItLWd0ZXN0X2xpc3RfdGVzdHM9ZiIsCkBAIC01NTUyLDcgKzYwMzUsNyBAQCBURVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0VGVzdHNGYWxzZV9mKSB7CiB9CiAKIC8vIFRlc3Rz
IHBhcnNpbmcgLS1ndGVzdF9saXN0X3Rlc3RzPUYuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0
LCBMaXN0VGVzdHNGYWxzZV9GKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIExpc3RUZXN0c0Zh
bHNlX0YpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAi
LS1ndGVzdF9saXN0X3Rlc3RzPUYiLApAQCAtNTU2OCw3ICs2MDUxLDcgQEAgVEVTVF9GKEluaXRH
b29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzRmFsc2VfRikgewogfQogCiAvLyBUZXN0cyBwYXJzaW5n
IC0tZ3Rlc3Rfb3V0cHV0IChpbnZhbGlkKS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91
dHB1dEVtcHR5KSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIE91dHB1dEVtcHR5KSB7CiAgIGNv
bnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfb3V0cHV0
IiwKQEAgLTU1ODUsNyArNjA2OCw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91dHB1
dEVtcHR5KSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9vdXRwdXQ9eG1sCi1URVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBPdXRwdXRYbWwpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVz
dCwgT3V0cHV0WG1sKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIs
CiAgICAgIi0tZ3Rlc3Rfb3V0cHV0PXhtbCIsCkBAIC01NjAxLDcgKzYwODQsNyBAQCBURVNUX0Yo
SW5pdEdvb2dsZVRlc3RUZXN0LCBPdXRwdXRYbWwpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAt
LWd0ZXN0X291dHB1dD14bWw6ZmlsZQotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgT3V0cHV0
WG1sRmlsZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBPdXRwdXRYbWxGaWxlKSB7CiAgIGNv
bnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfb3V0cHV0
PXhtbDpmaWxlIiwKQEAgLTU2MTcsNyArNjEwMCw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRl
c3QsIE91dHB1dFhtbEZpbGUpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X291dHB1
dD14bWw6ZGlyZWN0b3J5L3BhdGgvCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBPdXRwdXRY
bWxEaXJlY3RvcnkpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgT3V0cHV0WG1sRGlyZWN0b3J5
KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rl
c3Rfb3V0cHV0PXhtbDpkaXJlY3RvcnkvcGF0aC8iLApAQCAtNTYzNCw3ICs2MTE3LDcgQEAgVEVT
VF9GKEluaXRHb29nbGVUZXN0VGVzdCwgT3V0cHV0WG1sRGlyZWN0b3J5KSB7CiB9CiAKIC8vIFRl
c3RzIGhhdmluZyBhIC0tZ3Rlc3RfcHJpbnRfdGltZSBmbGFnCi1URVNUX0YoSW5pdEdvb2dsZVRl
c3RUZXN0LCBQcmludFRpbWVGbGFnKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFByaW50VGlt
ZUZsYWcpIHsKICAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAiZm9vLmV4ZSIsCiAg
ICAgICAiLS1ndGVzdF9wcmludF90aW1lIiwKQEAgLTU2NTAsNyArNjEzMyw3IEBAIFRFU1RfRihJ
bml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZsYWcpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5n
IGEgLS1ndGVzdF9wcmludF90aW1lIGZsYWcgd2l0aCBhICJ0cnVlIiB2YWx1ZQotVEVTVF9GKElu
aXRHb29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lVHJ1ZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0
LCBQcmludFRpbWVUcnVlKSB7CiAgICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICAgImZv
by5leGUiLAogICAgICAgIi0tZ3Rlc3RfcHJpbnRfdGltZT0xIiwKQEAgLTU2NjYsNyArNjE0OSw3
IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZVRydWUpIHsKIH0KIAogLy8g
VGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9wcmludF90aW1lIGZsYWcgd2l0aCBhICJmYWxzZSIgdmFs
dWUKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZhbHNlKSB7CitURVNUX0Yo
UGFyc2VGbGFnc1Rlc3QsIFByaW50VGltZUZhbHNlKSB7CiAgICAgY29uc3QgY2hhciogYXJndltd
ID0gewogICAgICAgImZvby5leGUiLAogICAgICAgIi0tZ3Rlc3RfcHJpbnRfdGltZT0wIiwKQEAg
LTU2ODIsNyArNjE2NSw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZh
bHNlKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9wcmludF90aW1lPWYuCi1URVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBQcmludFRpbWVGYWxzZV9mKSB7CitURVNUX0YoUGFyc2VG
bGFnc1Rlc3QsIFByaW50VGltZUZhbHNlX2YpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewog
ICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9wcmludF90aW1lPWYiLApAQCAtNTY5OCw3ICs2
MTgxLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lRmFsc2VfZikgewog
fQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfcHJpbnRfdGltZT1GLgotVEVTVF9GKEluaXRH
b29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lRmFsc2VfRikgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0
LCBQcmludFRpbWVGYWxzZV9GKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9v
LmV4ZSIsCiAgICAgIi0tZ3Rlc3RfcHJpbnRfdGltZT1GIiwKQEAgLTU3MTQsNyArNjE5Nyw3IEBA
IFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZhbHNlX0YpIHsKIH0KIAogLy8g
VGVzdHMgcGFyc2luZyAtLWd0ZXN0X3JhbmRvbV9zZWVkPW51bWJlcgotVEVTVF9GKEluaXRHb29n
bGVUZXN0VGVzdCwgUmFuZG9tU2VlZCkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBSYW5kb21T
ZWVkKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0t
Z3Rlc3RfcmFuZG9tX3NlZWQ9MTAwMCIsCkBAIC01NzMwLDcgKzYyMTMsNyBAQCBURVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBSYW5kb21TZWVkKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1n
dGVzdF9yZXBlYXQ9bnVtYmVyCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBSZXBlYXQpIHsK
K1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgUmVwZWF0KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9
IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfcmVwZWF0PTEwMDAiLApAQCAtNTc0Niw3
ICs2MjI5LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUmVwZWF0KSB7CiB9CiAKIC8v
IFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxhZwotVEVT
VF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKSB7CitURVNU
X0YoUGFyc2VGbGFnc1Rlc3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzRmxhZykgewogICAgIGNvbnN0
IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICItLWd0ZXN0X2Fsc29f
cnVuX2Rpc2FibGVkX3Rlc3RzIiwKQEAgLTU3NjMsNyArNjI0Niw3IEBAIFRFU1RfRihJbml0R29v
Z2xlVGVzdFRlc3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzRmxhZykgewogfQogCiAvLyBUZXN0cyBo
YXZpbmcgYSAtLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIGZsYWcgd2l0aCBhICJ0cnVl
IiB2YWx1ZQotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNU
cnVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzVHJ1ZSkg
ewogICAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICIt
LWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzPTEiLApAQCAtNTc4MCw3ICs2MjYzLDcgQEAg
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNUcnVlKSB7CiB9
CiAKIC8vIFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxh
ZyB3aXRoIGEgImZhbHNlIiB2YWx1ZQotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQWxzb1J1
bkRpc2FibGVkVGVzdHNGYWxzZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBBbHNvUnVuRGlz
YWJsZWRUZXN0c0ZhbHNlKSB7CiAgICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICAgImZv
by5leGUiLAogICAgICAgIi0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHM9MCIsCkBAIC01
Nzk3LDcgKzYyODAsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBBbHNvUnVuRGlzYWJs
ZWRUZXN0c0ZhbHNlKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9zaHVmZmxlLgot
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU2h1ZmZsZVdpdGhvdXRWYWx1ZSkgeworVEVTVF9G
KFBhcnNlRmxhZ3NUZXN0LCBTaHVmZmxlV2l0aG91dFZhbHVlKSB7CiAgIGNvbnN0IGNoYXIqIGFy
Z3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfc2h1ZmZsZSIsCkBAIC01ODEz
LDcgKzYyOTYsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBTaHVmZmxlV2l0aG91dFZh
bHVlKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9zaHVmZmxlPTAuCi1URVNUX0Yo
SW5pdEdvb2dsZVRlc3RUZXN0LCBTaHVmZmxlRmFsc2VfMCkgeworVEVTVF9GKFBhcnNlRmxhZ3NU
ZXN0LCBTaHVmZmxlRmFsc2VfMCkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZv
by5leGUiLAogICAgICItLWd0ZXN0X3NodWZmbGU9MCIsCkBAIC01ODI4LDkgKzYzMTEsOCBAQCBU
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBTaHVmZmxlRmFsc2VfMCkgewogICBHVEVTVF9URVNU
X1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6U2h1ZmZsZShmYWxzZSksIGZhbHNl
KTsKIH0KIAotLy8gVGVzdHMgcGFyc2luZyBhIC0tZ3Rlc3Rfc2h1ZmZsZSBmbGFnIHRoYXQgaGFz
IGEgInRydWUiCi0vLyBkZWZpbml0aW9uLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU2h1
ZmZsZVRydWUpIHsKKy8vIFRlc3RzIHBhcnNpbmcgYSAtLWd0ZXN0X3NodWZmbGUgZmxhZyB0aGF0
IGhhcyBhICJ0cnVlIiBkZWZpbml0aW9uLgorVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBTaHVmZmxl
VHJ1ZSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICIt
LWd0ZXN0X3NodWZmbGU9MSIsCkBAIC01ODQ2LDcgKzYzMjgsNyBAQCBURVNUX0YoSW5pdEdvb2ds
ZVRlc3RUZXN0LCBTaHVmZmxlVHJ1ZSkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3Rf
c3RhY2tfdHJhY2VfZGVwdGg9bnVtYmVyLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU3Rh
Y2tUcmFjZURlcHRoKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFN0YWNrVHJhY2VEZXB0aCkg
ewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0
X3N0YWNrX3RyYWNlX2RlcHRoPTUiLApAQCAtNTg2MSw4ICs2MzQzLDI0IEBAIFRFU1RfRihJbml0
R29vZ2xlVGVzdFRlc3QsIFN0YWNrVHJhY2VEZXB0aCkgewogICBHVEVTVF9URVNUX1BBUlNJTkdf
RkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6U3RhY2tUcmFjZURlcHRoKDUpLCBmYWxzZSk7CiB9
CiAKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgU3RyZWFtUmVzdWx0VG8pIHsKKyAgY29uc3QgY2hh
ciogYXJndltdID0geworICAgICJmb28uZXhlIiwKKyAgICAiLS1ndGVzdF9zdHJlYW1fcmVzdWx0
X3RvPWxvY2FsaG9zdDoxMjM0IiwKKyAgICBOVUxMCisgIH07CisKKyAgY29uc3QgY2hhciogYXJn
djJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAorICB9OworCisgIEdURVNUX1RFU1Rf
UEFSU0lOR19GTEFHU18oCisgICAgICBhcmd2LCBhcmd2MiwgRmxhZ3M6OlN0cmVhbVJlc3VsdFRv
KCJsb2NhbGhvc3Q6MTIzNCIpLCBmYWxzZSk7Cit9CisKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVz
dF90aHJvd19vbl9mYWlsdXJlLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgVGhyb3dPbkZh
aWx1cmVXaXRob3V0VmFsdWUpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgVGhyb3dPbkZhaWx1
cmVXaXRob3V0VmFsdWUpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhl
IiwKICAgICAiLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlIiwKQEAgLTU4NzgsNyArNjM3Niw3IEBA
IFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFRocm93T25GYWlsdXJlV2l0aG91dFZhbHVlKSB7
CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlPTAuCi1URVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBUaHJvd09uRmFpbHVyZUZhbHNlXzApIHsKK1RFU1RfRihQ
YXJzZUZsYWdzVGVzdCwgVGhyb3dPbkZhaWx1cmVGYWxzZV8wKSB7CiAgIGNvbnN0IGNoYXIqIGFy
Z3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZT0w
IiwKQEAgLTU4OTUsNyArNjM5Myw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFRocm93
T25GYWlsdXJlRmFsc2VfMCkgewogCiAvLyBUZXN0cyBwYXJzaW5nIGEgLS1ndGVzdF90aHJvd19v
bl9mYWlsdXJlIGZsYWcgdGhhdCBoYXMgYSAidHJ1ZSIKIC8vIGRlZmluaXRpb24uCi1URVNUX0Yo
SW5pdEdvb2dsZVRlc3RUZXN0LCBUaHJvd09uRmFpbHVyZVRydWUpIHsKK1RFU1RfRihQYXJzZUZs
YWdzVGVzdCwgVGhyb3dPbkZhaWx1cmVUcnVlKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsK
ICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZT0xIiwKQEAgLTU5
MTAsOSArNjQwOCw5IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFRocm93T25GYWlsdXJl
VHJ1ZSkgewogICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6
VGhyb3dPbkZhaWx1cmUodHJ1ZSksIGZhbHNlKTsKIH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MK
KyMgaWYgR1RFU1RfT1NfV0lORE9XUwogLy8gVGVzdHMgcGFyc2luZyB3aWRlIHN0cmluZ3MuCi1U
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBXaWRlU3RyaW5ncykgeworVEVTVF9GKFBhcnNlRmxh
Z3NUZXN0LCBXaWRlU3RyaW5ncykgewogICBjb25zdCB3Y2hhcl90KiBhcmd2W10gPSB7CiAgICAg
TCJmb28uZXhlIiwKICAgICBMIi0tZ3Rlc3RfZmlsdGVyPUZvbyoiLApAQCAtNTkzNSw3ICs2NDMz
LDEwOCBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBXaWRlU3RyaW5ncykgewogCiAgIEdU
RVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIGV4cGVjdGVkX2ZsYWdzLCBmYWxz
ZSk7CiB9Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKKworI2lmIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KK2NsYXNzIEZsYWdm
aWxlVGVzdCA6IHB1YmxpYyBQYXJzZUZsYWdzVGVzdCB7CisgcHVibGljOgorICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKSB7CisgICAgUGFyc2VGbGFnc1Rlc3Q6OlNldFVwKCk7CisKKyAgICB0ZXN0ZGF0
YV9wYXRoXy5TZXQoaW50ZXJuYWw6OkZpbGVQYXRoKAorICAgICAgICB0ZXN0aW5nOjpUZW1wRGly
KCkgKyBpbnRlcm5hbDo6R2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKworICAg
ICAgICAiX2ZsYWdmaWxlX3Rlc3QiKSk7CisgICAgdGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpS
bURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9w
YXRoXy5DcmVhdGVGb2xkZXIoKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7
CisgICAgdGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0
cigpKTsKKyAgICBQYXJzZUZsYWdzVGVzdDo6VGVhckRvd24oKTsKKyAgfQorCisgIGludGVybmFs
OjpGaWxlUGF0aCBDcmVhdGVGbGFnZmlsZShjb25zdCBjaGFyKiBjb250ZW50cykgeworICAgIGlu
dGVybmFsOjpGaWxlUGF0aCBmaWxlX3BhdGgoaW50ZXJuYWw6OkZpbGVQYXRoOjpHZW5lcmF0ZVVu
aXF1ZUZpbGVOYW1lKAorICAgICAgICB0ZXN0ZGF0YV9wYXRoXywgaW50ZXJuYWw6OkZpbGVQYXRo
KCJ1bmlxdWUiKSwgInR4dCIpKTsKKyAgICBGSUxFKiBmID0gdGVzdGluZzo6aW50ZXJuYWw6OnBv
c2l4OjpGT3BlbihmaWxlX3BhdGguY19zdHIoKSwgInciKTsKKyAgICBmcHJpbnRmKGYsICIlcyIs
IGNvbnRlbnRzKTsKKyAgICBmY2xvc2UoZik7CisgICAgcmV0dXJuIGZpbGVfcGF0aDsKKyAgfQor
CisgcHJpdmF0ZToKKyAgaW50ZXJuYWw6OkZpbGVQYXRoIHRlc3RkYXRhX3BhdGhfOworfTsKKwor
Ly8gVGVzdHMgYW4gZW1wdHkgZmxhZ2ZpbGUuCitURVNUX0YoRmxhZ2ZpbGVUZXN0LCBFbXB0eSkg
eworICBpbnRlcm5hbDo6RmlsZVBhdGggZmxhZ2ZpbGVfcGF0aChDcmVhdGVGbGFnZmlsZSgiIikp
OworICBzdGQ6OnN0cmluZyBmbGFnZmlsZV9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIg
R1RFU1RfRkxBR19QUkVGSVhfICJmbGFnZmlsZT0iKSArIGZsYWdmaWxlX3BhdGguY19zdHIoKTsK
KworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgImZvby5leGUiLAorICAgIGZsYWdmaWxl
X2ZsYWcuY19zdHIoKSwKKyAgICBOVUxMCisgIH07CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9
IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAorICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lO
R19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzKCksIGZhbHNlKTsKK30KKworLy8gVGVzdHMgcGFz
c2luZyBhIG5vbi1lbXB0eSAtLWd0ZXN0X2ZpbHRlciBmbGFnIHZpYSAtLWd0ZXN0X2ZsYWdmaWxl
LgorVEVTVF9GKEZsYWdmaWxlVGVzdCwgRmlsdGVyTm9uRW1wdHkpIHsKKyAgaW50ZXJuYWw6OkZp
bGVQYXRoIGZsYWdmaWxlX3BhdGgoQ3JlYXRlRmxhZ2ZpbGUoCisgICAgICAiLS0iICBHVEVTVF9G
TEFHX1BSRUZJWF8gICJmaWx0ZXI9YWJjIikpOworICBzdGQ6OnN0cmluZyBmbGFnZmlsZV9mbGFn
ID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIgR1RFU1RfRkxBR19QUkVGSVhfICJmbGFnZmlsZT0i
KSArIGZsYWdmaWxlX3BhdGguY19zdHIoKTsKKworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Cisg
ICAgImZvby5leGUiLAorICAgIGZsYWdmaWxlX2ZsYWcuY19zdHIoKSwKKyAgICBOVUxMCisgIH07
CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAor
ICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpG
aWx0ZXIoImFiYyIpLCBmYWxzZSk7Cit9CisKKy8vIFRlc3RzIHBhc3Npbmcgc2V2ZXJhbCBmbGFn
cyB2aWEgLS1ndGVzdF9mbGFnZmlsZS4KK1RFU1RfRihGbGFnZmlsZVRlc3QsIFNldmVyYWxGbGFn
cykgeworICBpbnRlcm5hbDo6RmlsZVBhdGggZmxhZ2ZpbGVfcGF0aChDcmVhdGVGbGFnZmlsZSgK
KyAgICAgICItLSIgIEdURVNUX0ZMQUdfUFJFRklYXyAgImZpbHRlcj1hYmNcbiIKKyAgICAgICIt
LSIgIEdURVNUX0ZMQUdfUFJFRklYXyAgImJyZWFrX29uX2ZhaWx1cmVcbiIKKyAgICAgICItLSIg
IEdURVNUX0ZMQUdfUFJFRklYXyAgImxpc3RfdGVzdHMiKSk7CisgIHN0ZDo6c3RyaW5nIGZsYWdm
aWxlX2ZsYWcgPQorICAgICAgc3RkOjpzdHJpbmcoIi0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImZs
YWdmaWxlPSIpICsgZmxhZ2ZpbGVfcGF0aC5jX3N0cigpOworCisgIGNvbnN0IGNoYXIqIGFyZ3Zb
XSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgZmxhZ2ZpbGVfZmxhZy5jX3N0cigpLAorICAgIE5V
TEwKKyAgfTsKKworICBjb25zdCBjaGFyKiBhcmd2MltdID0geworICAgICJmb28uZXhlIiwKKyAg
ICBOVUxMCisgIH07CisKKyAgRmxhZ3MgZXhwZWN0ZWRfZmxhZ3M7CisgIGV4cGVjdGVkX2ZsYWdz
LmJyZWFrX29uX2ZhaWx1cmUgPSB0cnVlOworICBleHBlY3RlZF9mbGFncy5maWx0ZXIgPSAiYWJj
IjsKKyAgZXhwZWN0ZWRfZmxhZ3MubGlzdF90ZXN0cyA9IHRydWU7CisKKyAgR1RFU1RfVEVTVF9Q
QVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgZXhwZWN0ZWRfZmxhZ3MsIGZhbHNlKTsKK30KKyNl
bmRpZiAgLy8gR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXwogCiAvLyBUZXN0cyBjdXJyZW50
X3Rlc3RfaW5mbygpIGluIFVuaXRUZXN0LgogY2xhc3MgQ3VycmVudFRlc3RJbmZvVGVzdCA6IHB1
YmxpYyBUZXN0IHsKQEAgLTU5OTAsNiArNjU4OSw3IEBAIFRFU1RfRihDdXJyZW50VGVzdEluZm9U
ZXN0LCBXb3Jrc0ZvclNlY29uZFRlc3RJbkFUZXN0Q2FzZSkgewogCiB9ICAvLyBuYW1lc3BhY2Ug
dGVzdGluZwogCisKIC8vIFRoZXNlIHR3byBsaW5lcyB0ZXN0IHRoYXQgd2UgY2FuIGRlZmluZSB0
ZXN0cyBpbiBhIG5hbWVzcGFjZSB0aGF0CiAvLyBoYXMgdGhlIG5hbWUgInRlc3RpbmciIGFuZCBp
cyBuZXN0ZWQgaW4gYW5vdGhlciBuYW1lc3BhY2UuCiBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlIHsK
QEAgLTYwNDgsNyArNjY0OCw3IEBAIFRFU1QoU3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIFVuY29u
ZGl0aW9uYWwpIHsKIAogI2lmZGVmIF9fQk9STEFORENfXwogLy8gU2lsZW5jZXMgd2FybmluZ3M6
ICJDb25kaXRpb24gaXMgYWx3YXlzIHRydWUiLCAiVW5yZWFjaGFibGUgY29kZSIKLSNwcmFnbWEg
b3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAorIyBwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjIC13
LXJjaAogI2VuZGlmCiAKIFRFU1QoU3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIFRydXRoKSB7CkBA
IC02MDcwLDggKzY2NzAsOCBAQCBURVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBUcnV0aDIp
IHsKIH0KIAogI2lmZGVmIF9fQk9STEFORENfXwotLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0ZXIg
cHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHJlc3NlZCB0aGVtCi0jcHJhZ21hIG9w
dGlvbiBwb3AKKy8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9w
dGlvbiBwdXNoIiBzdXBwcmVzc2VkIHRoZW0KKyMgcHJhZ21hIG9wdGlvbiBwb3AKICNlbmRpZgog
CiBURVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBJbnRlZ2VyRXF1YWxzKSB7CkBAIC02MjY0
LDE1ICs2ODY0LDQwIEBAIFRFU1QoQ29sb3JlZE91dHB1dFRlc3QsIFVzZXNDb2xvcnNXaGVuVGVy
bVN1cHBvcnRzQ29sb3JzKSB7CiAgIFNldEVudigiVEVSTSIsICJ4dGVybS1jb2xvciIpOyAgLy8g
VEVSTSBzdXBwb3J0cyBjb2xvcnMuCiAgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUp
KTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KIAorICBTZXRFbnYoIlRFUk0iLCAieHRlcm0tMjU2Y29s
b3IiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VD
b2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInNj
cmVlbiIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVz
ZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAi
c2NyZWVuLTI1NmNvbG9yIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RS
VUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgorCisgIFNldEVu
digiVEVSTSIsICJ0bXV4Iik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RS
VUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgorCisgIFNldEVu
digiVEVSTSIsICJ0bXV4LTI1NmNvbG9yIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAg
RVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgor
CisgIFNldEVudigiVEVSTSIsICJyeHZ0LXVuaWNvZGUiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29s
b3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMg
YSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInJ4dnQtdW5pY29kZS0yNTZjb2xvciIpOyAgLy8g
VEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUp
KTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKwogICBTZXRFbnYoIlRFUk0iLCAibGludXgiKTsgIC8v
IFRFUk0gc3VwcG9ydHMgY29sb3JzLgogICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVl
KSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgImN5Z3dpbiIpOyAg
Ly8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRy
dWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwog
fQogCiAvLyBWZXJpZmllcyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcSB3b3JrcyBpbiBhIG5hbWVz
cGFjZSBzY29wZS4KIAotc3RhdGljIGJvb2wgZHVtbXkxID0gU3RhdGljQXNzZXJ0VHlwZUVxPGJv
b2wsIGJvb2w+KCk7Ci1zdGF0aWMgYm9vbCBkdW1teTIgPSBTdGF0aWNBc3NlcnRUeXBlRXE8Y29u
c3QgaW50LCBjb25zdCBpbnQ+KCk7CitzdGF0aWMgYm9vbCBkdW1teTEgR1RFU1RfQVRUUklCVVRF
X1VOVVNFRF8gPSBTdGF0aWNBc3NlcnRUeXBlRXE8Ym9vbCwgYm9vbD4oKTsKK3N0YXRpYyBib29s
IGR1bW15MiBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9CisgICAgU3RhdGljQXNzZXJ0VHlwZUVx
PGNvbnN0IGludCwgY29uc3QgaW50PigpOwogCiAvLyBWZXJpZmllcyB0aGF0IFN0YXRpY0Fzc2Vy
dFR5cGVFcSB3b3JrcyBpbiBhIGNsYXNzLgogCkBAIC02Mjk1LDE0ICs2OTIwLDYgQEAgVEVTVChT
dGF0aWNBc3NlcnRUeXBlRXFUZXN0LCBDb21waWxlc0ZvckVxdWFsVHlwZXMpIHsKICAgU3RhdGlj
QXNzZXJ0VHlwZUVxPGludCosIEludEFsaWFzKj4oKTsKIH0KIAotVEVTVChHZXRDdXJyZW50T3NT
dGFja1RyYWNlRXhjZXB0VG9wVGVzdCwgUmV0dXJuc1RoZVN0YWNrVHJhY2UpIHsKLSAgdGVzdGlu
Zzo6VW5pdFRlc3QqIGNvbnN0IHVuaXRfdGVzdCA9IHRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0
YW5jZSgpOwotCi0gIC8vIFdlIGRvbid0IGhhdmUgYSBzdGFjayB3YWxrZXIgaW4gR29vZ2xlIFRl
c3QgeWV0LgotICBFWFBFQ1RfU1RSRVEoIiIsIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRU
b3AodW5pdF90ZXN0LCAwKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCBHZXRDdXJyZW50
T3NTdGFja1RyYWNlRXhjZXB0VG9wKHVuaXRfdGVzdCwgMSkuY19zdHIoKSk7Ci19Ci0KIFRFU1Qo
SGFzTm9uZmF0YWxGYWlsdXJlVGVzdCwgUmV0dXJuc0ZhbHNlV2hlblRoZXJlSXNOb0ZhaWx1cmUp
IHsKICAgRVhQRUNUX0ZBTFNFKEhhc05vbmZhdGFsRmFpbHVyZSgpKTsKIH0KQEAgLTY0NjYsNyAr
NzA4Myw3IEBAIFRFU1QoVGVzdEV2ZW50TGlzdGVuZXJzVGVzdCwgQXBwZW5kKSB7CiAvLyBvcmRl
ci4KIGNsYXNzIFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50
TGlzdGVuZXIgewogIHB1YmxpYzoKLSAgU2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIoc3RkOjp2ZWN0
b3I8U3RyaW5nPiogdmVjdG9yLCBjb25zdCBjaGFyKiBpZCkKKyAgU2VxdWVuY2VUZXN0aW5nTGlz
dGVuZXIoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiB2ZWN0b3IsIGNvbnN0IGNoYXIqIGlkKQog
ICAgICAgOiB2ZWN0b3JfKHZlY3RvciksIGlkXyhpZCkge30KIAogIHByb3RlY3RlZDoKQEAgLTY0
ODksMjAgKzcxMDYsMjAgQEAgY2xhc3MgU2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIgOiBwdWJsaWMg
RW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CiAgIH0KIAogIHByaXZhdGU6Ci0gIFN0cmluZyBHZXRF
dmVudERlc2NyaXB0aW9uKGNvbnN0IGNoYXIqIG1ldGhvZCkgeworICBzdGQ6OnN0cmluZyBHZXRF
dmVudERlc2NyaXB0aW9uKGNvbnN0IGNoYXIqIG1ldGhvZCkgewogICAgIE1lc3NhZ2UgbWVzc2Fn
ZTsKICAgICBtZXNzYWdlIDw8IGlkXyA8PCAiLiIgPDwgbWV0aG9kOwogICAgIHJldHVybiBtZXNz
YWdlLkdldFN0cmluZygpOwogICB9CiAKLSAgc3RkOjp2ZWN0b3I8U3RyaW5nPiogdmVjdG9yXzsK
KyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiB2ZWN0b3JfOwogICBjb25zdCBjaGFyKiBjb25z
dCBpZF87CiAKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTZXF1ZW5jZVRlc3Rp
bmdMaXN0ZW5lcik7CiB9OwogCiBURVNUKEV2ZW50TGlzdGVuZXJUZXN0LCBBcHBlbmRLZWVwc09y
ZGVyKSB7Ci0gIHN0ZDo6dmVjdG9yPFN0cmluZz4gdmVjOworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4gdmVjOwogICBUZXN0RXZlbnRMaXN0ZW5lcnMgbGlzdGVuZXJzOwogICBsaXN0ZW5lcnMu
QXBwZW5kKG5ldyBTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lcigmdmVjLCAiMXN0IikpOwogICBsaXN0
ZW5lcnMuQXBwZW5kKG5ldyBTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lcigmdmVjLCAiMm5kIikpOwpA
QCAtNjcxNSw0ICs3MzMyLDQ2NCBAQCBHVEVTVF9URVNUKEFsdGVybmF0aXZlTmFtZVRlc3QsIFdv
cmtzKSB7ICAvLyBHVEVTVF9URVNUIGlzIHRoZSBzYW1lIGFzIFRFU1QuCiAgIC8vIEdURVNUX0ZB
SUwgaXMgdGhlIHNhbWUgYXMgRkFJTC4KICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfRkFJ
TCgpIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIkFu
IGV4cGVjdGVkIGZhaWx1cmUiKTsKKworICAvLyBHVEVTVF9BU1NFUlRfWFkgaXMgdGhlIHNhbWUg
YXMgQVNTRVJUX1hZLgorCisgIEdURVNUX0FTU0VSVF9FUSgwLCAwKTsKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0VRKDAsIDEpIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKyAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0VRKDEsIDApIDw8ICJBbiBleHBlY3RlZCBmYWls
dXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKwor
ICBHVEVTVF9BU1NFUlRfTkUoMCwgMSk7CisgIEdURVNUX0FTU0VSVF9ORSgxLCAwKTsKKyAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX05FKDAsIDApIDw8ICJBbiBleHBlY3RlZCBm
YWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsK
KworICBHVEVTVF9BU1NFUlRfTEUoMCwgMCk7CisgIEdURVNUX0FTU0VSVF9MRSgwLCAxKTsKKyAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0xFKDEsIDApIDw8ICJBbiBleHBlY3Rl
ZCBmYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUi
KTsKKworICBHVEVTVF9BU1NFUlRfTFQoMCwgMSk7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdU
RVNUX0FTU0VSVF9MVCgwLCAwKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEdURVNUX0FTU0VSVF9MVCgxLCAwKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisKKyAgR1RFU1RfQVNT
RVJUX0dFKDAsIDApOworICBHVEVTVF9BU1NFUlRfR0UoMSwgMCk7CisgIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKEdURVNUX0FTU0VSVF9HRSgwLCAxKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisKKyAgR1RFU1Rf
QVNTRVJUX0dUKDEsIDApOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfR1Qo
MCwgMSkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAi
QW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NF
UlRfR1QoMSwgMSkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAg
ICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworfQorCisvLyBUZXN0cyBmb3IgaW50ZXJuYWwg
dXRpbGl0aWVzIG5lY2Vzc2FyeSBmb3IgaW1wbGVtZW50YXRpb24gb2YgdGhlIHVuaXZlcnNhbAor
Ly8gcHJpbnRpbmcuCisvLyBGSVhNRTogRmluZCBhIGJldHRlciBob21lIGZvciB0aGVtLgorCitj
bGFzcyBDb252ZXJzaW9uSGVscGVyQmFzZSB7fTsKK2NsYXNzIENvbnZlcnNpb25IZWxwZXJEZXJp
dmVkIDogcHVibGljIENvbnZlcnNpb25IZWxwZXJCYXNlIHt9OworCisvLyBUZXN0cyB0aGF0IElz
QVByb3RvY29sTWVzc2FnZTxUPjo6dmFsdWUgaXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuCitU
RVNUKElzQVByb3RvY29sTWVzc2FnZVRlc3QsIFZhbHVlSXNDb21waWxlVGltZUNvbnN0YW50KSB7
CisgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhJc0FQcm90b2NvbE1lc3NhZ2U8UHJvdG9jb2xNZXNz
YWdlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF90cnVlKTsKKyAgR1RF
U1RfQ09NUElMRV9BU1NFUlRfKCFJc0FQcm90b2NvbE1lc3NhZ2U8aW50Pjo6dmFsdWUsIGNvbnN0
X2ZhbHNlKTsKK30KKworLy8gVGVzdHMgdGhhdCBJc0FQcm90b2NvbE1lc3NhZ2U8VD46OnZhbHVl
IGlzIHRydWUgd2hlbiBUIGlzCisvLyBwcm90bzI6Ok1lc3NhZ2Ugb3IgYSBzdWItY2xhc3Mgb2Yg
aXQuCitURVNUKElzQVByb3RvY29sTWVzc2FnZVRlc3QsIFZhbHVlSXNUcnVlV2hlblR5cGVJc0FQ
cm90b2NvbE1lc3NhZ2UpIHsKKyAgRVhQRUNUX1RSVUUoSXNBUHJvdG9jb2xNZXNzYWdlPCA6OnBy
b3RvMjo6TWVzc2FnZT46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoSXNBUHJvdG9jb2xNZXNzYWdl
PFByb3RvY29sTWVzc2FnZT46OnZhbHVlKTsKK30KKworLy8gVGVzdHMgdGhhdCBJc0FQcm90b2Nv
bE1lc3NhZ2U8VD46OnZhbHVlIGlzIGZhbHNlIHdoZW4gVCBpcyBuZWl0aGVyCisvLyBQcm90b2Nv
bE1lc3NhZ2Ugbm9yIGEgc3ViLWNsYXNzIG9mIGl0LgorVEVTVChJc0FQcm90b2NvbE1lc3NhZ2VU
ZXN0LCBWYWx1ZUlzRmFsc2VXaGVuVHlwZUlzTm90QVByb3RvY29sTWVzc2FnZSkgeworICBFWFBF
Q1RfRkFMU0UoSXNBUHJvdG9jb2xNZXNzYWdlPGludD46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNF
KElzQVByb3RvY29sTWVzc2FnZTxjb25zdCBDb252ZXJzaW9uSGVscGVyQmFzZT46OnZhbHVlKTsK
K30KKworLy8gVGVzdHMgdGhhdCBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbCBjb21waWxlcyB3aGVu
IHRoZSB0eXBlIGFyZ3VtZW50cyBhcmUKKy8vIGVxdWFsLgorVEVTVChDb21waWxlQXNzZXJ0VHlw
ZXNFcXVhbCwgQ29tcGlsZXNXaGVuVHlwZXNBcmVFcXVhbCkgeworICBDb21waWxlQXNzZXJ0VHlw
ZXNFcXVhbDx2b2lkLCB2b2lkPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQqLCBp
bnQqPigpOworfQorCisvLyBUZXN0cyB0aGF0IFJlbW92ZVJlZmVyZW5jZSBkb2VzIG5vdCBhZmZl
Y3Qgbm9uLXJlZmVyZW5jZSB0eXBlcy4KK1RFU1QoUmVtb3ZlUmVmZXJlbmNlVGVzdCwgRG9lc05v
dEFmZmVjdE5vblJlZmVyZW5jZVR5cGUpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50
LCBSZW1vdmVSZWZlcmVuY2U8aW50Pjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1
YWw8Y29uc3QgY2hhciwgUmVtb3ZlUmVmZXJlbmNlPGNvbnN0IGNoYXI+Ojp0eXBlPigpOworfQor
CisvLyBUZXN0cyB0aGF0IFJlbW92ZVJlZmVyZW5jZSByZW1vdmVzIHJlZmVyZW5jZSBmcm9tIHJl
ZmVyZW5jZSB0eXBlcy4KK1RFU1QoUmVtb3ZlUmVmZXJlbmNlVGVzdCwgUmVtb3Zlc1JlZmVyZW5j
ZSkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQsIFJlbW92ZVJlZmVyZW5jZTxpbnQm
Pjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y29uc3QgY2hhciwgUmVtb3Zl
UmVmZXJlbmNlPGNvbnN0IGNoYXImPjo6dHlwZT4oKTsKK30KKworLy8gVGVzdHMgR1RFU1RfUkVN
T1ZFX1JFRkVSRU5DRV8uCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2
b2lkIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZSgpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1
YWw8VDEsIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfKFQyKT4oKTsKK30KKworVEVTVChSZW1vdmVS
ZWZlcmVuY2VUZXN0LCBNYWNyb1ZlcnNpb24pIHsKKyAgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNl
PGludCwgaW50PigpOworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2U8Y29uc3QgY2hhciwgY29u
c3QgY2hhciY+KCk7Cit9CisKKworLy8gVGVzdHMgdGhhdCBSZW1vdmVDb25zdCBkb2VzIG5vdCBh
ZmZlY3Qgbm9uLWNvbnN0IHR5cGVzLgorVEVTVChSZW1vdmVDb25zdFRlc3QsIERvZXNOb3RBZmZl
Y3ROb25Db25zdFR5cGUpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50LCBSZW1vdmVD
b25zdDxpbnQ+Ojp0eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjaGFyJiwgUmVt
b3ZlQ29uc3Q8Y2hhciY+Ojp0eXBlPigpOworfQorCisvLyBUZXN0cyB0aGF0IFJlbW92ZUNvbnN0
IHJlbW92ZXMgY29uc3QgZnJvbSBjb25zdCB0eXBlcy4KK1RFU1QoUmVtb3ZlQ29uc3RUZXN0LCBS
ZW1vdmVzQ29uc3QpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50LCBSZW1vdmVDb25z
dDxjb25zdCBpbnQ+Ojp0eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjaGFyWzJd
LCBSZW1vdmVDb25zdDxjb25zdCBjaGFyWzJdPjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5
cGVzRXF1YWw8Y2hhclsyXVszXSwgUmVtb3ZlQ29uc3Q8Y29uc3QgY2hhclsyXVszXT46OnR5cGU+
KCk7Cit9CisKKy8vIFRlc3RzIEdURVNUX1JFTU9WRV9DT05TVF8uCisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lkIFRlc3RHVGVzdFJlbW92ZUNvbnN0KCkgeworICBD
b21waWxlQXNzZXJ0VHlwZXNFcXVhbDxUMSwgR1RFU1RfUkVNT1ZFX0NPTlNUXyhUMik+KCk7Cit9
CisKK1RFU1QoUmVtb3ZlQ29uc3RUZXN0LCBNYWNyb1ZlcnNpb24pIHsKKyAgVGVzdEdUZXN0UmVt
b3ZlQ29uc3Q8aW50LCBpbnQ+KCk7CisgIFRlc3RHVGVzdFJlbW92ZUNvbnN0PGRvdWJsZSYsIGRv
dWJsZSY+KCk7CisgIFRlc3RHVGVzdFJlbW92ZUNvbnN0PGNoYXIsIGNvbnN0IGNoYXI+KCk7Cit9
CisKKy8vIFRlc3RzIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXy4KKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgVGVzdEdUZXN0UmVtb3ZlUmVmZXJl
bmNlQW5kQ29uc3QoKSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBHVEVTVF9SRU1P
VkVfUkVGRVJFTkNFX0FORF9DT05TVF8oVDIpPigpOworfQorCitURVNUKFJlbW92ZVJlZmVyZW5j
ZVRvQ29uc3RUZXN0LCBXb3JrcykgeworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25z
dDxpbnQsIGludD4oKTsKKyAgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8ZG91Ymxl
LCBkb3VibGUmPigpOworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxjaGFyLCBj
b25zdCBjaGFyPigpOworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxjaGFyLCBj
b25zdCBjaGFyJj4oKTsKKyAgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8Y29uc3Qg
Y2hhciosIGNvbnN0IGNoYXIqPigpOworfQorCisvLyBUZXN0cyB0aGF0IEFkZFJlZmVyZW5jZSBk
b2VzIG5vdCBhZmZlY3QgcmVmZXJlbmNlIHR5cGVzLgorVEVTVChBZGRSZWZlcmVuY2VUZXN0LCBE
b2VzTm90QWZmZWN0UmVmZXJlbmNlVHlwZSkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxp
bnQmLCBBZGRSZWZlcmVuY2U8aW50Jj46OnR5cGU+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0Vx
dWFsPGNvbnN0IGNoYXImLCBBZGRSZWZlcmVuY2U8Y29uc3QgY2hhciY+Ojp0eXBlPigpOworfQor
CisvLyBUZXN0cyB0aGF0IEFkZFJlZmVyZW5jZSBhZGRzIHJlZmVyZW5jZSB0byBub24tcmVmZXJl
bmNlIHR5cGVzLgorVEVTVChBZGRSZWZlcmVuY2VUZXN0LCBBZGRzUmVmZXJlbmNlKSB7CisgIENv
bXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCYsIEFkZFJlZmVyZW5jZTxpbnQ+Ojp0eXBlPigpOwor
ICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjb25zdCBjaGFyJiwgQWRkUmVmZXJlbmNlPGNvbnN0
IGNoYXI+Ojp0eXBlPigpOworfQorCisvLyBUZXN0cyBHVEVTVF9BRERfUkVGRVJFTkNFXy4KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgVGVzdEdUZXN0QWRkUmVm
ZXJlbmNlKCkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxUMSwgR1RFU1RfQUREX1JFRkVS
RU5DRV8oVDIpPigpOworfQorCitURVNUKEFkZFJlZmVyZW5jZVRlc3QsIE1hY3JvVmVyc2lvbikg
eworICBUZXN0R1Rlc3RBZGRSZWZlcmVuY2U8aW50JiwgaW50PigpOworICBUZXN0R1Rlc3RBZGRS
ZWZlcmVuY2U8Y29uc3QgY2hhciYsIGNvbnN0IGNoYXImPigpOworfQorCisvLyBUZXN0cyBHVEVT
VF9SRUZFUkVOQ0VfVE9fQ09OU1RfLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyPgordm9pZCBUZXN0R1Rlc3RSZWZlcmVuY2VUb0NvbnN0KCkgeworICBDb21waWxlQXNzZXJ0
VHlwZXNFcXVhbDxUMSwgR1RFU1RfUkVGRVJFTkNFX1RPX0NPTlNUXyhUMik+KCk7Cit9CisKK1RF
U1QoR1Rlc3RSZWZlcmVuY2VUb0NvbnN0VGVzdCwgV29ya3MpIHsKKyAgVGVzdEdUZXN0UmVmZXJl
bmNlVG9Db25zdDxjb25zdCBjaGFyJiwgY2hhcj4oKTsKKyAgVGVzdEdUZXN0UmVmZXJlbmNlVG9D
b25zdDxjb25zdCBpbnQmLCBjb25zdCBpbnQ+KCk7CisgIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29u
c3Q8Y29uc3QgZG91YmxlJiwgZG91YmxlPigpOworICBUZXN0R1Rlc3RSZWZlcmVuY2VUb0NvbnN0
PGNvbnN0IHN0ZDo6c3RyaW5nJiwgY29uc3Qgc3RkOjpzdHJpbmcmPigpOworfQorCisvLyBUZXN0
cyB0aGF0IEltcGxpY2l0bHlDb252ZXJ0aWJsZTxUMSwgVDI+Ojp2YWx1ZSBpcyBhIGNvbXBpbGUt
dGltZSBjb25zdGFudC4KK1RFU1QoSW1wbGljaXRseUNvbnZlcnRpYmxlVGVzdCwgVmFsdWVJc0Nv
bXBpbGVUaW1lQ29uc3RhbnQpIHsKKyAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKChJbXBsaWNpdGx5
Q29udmVydGlibGU8aW50LCBpbnQ+Ojp2YWx1ZSksIGNvbnN0X3RydWUpOworICBHVEVTVF9DT01Q
SUxFX0FTU0VSVF8oKCFJbXBsaWNpdGx5Q29udmVydGlibGU8dm9pZCosIGludCo+Ojp2YWx1ZSks
CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9mYWxzZSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgSW1wbGljaXRseUNvbnZlcnRpYmxlPFQxLCBUMj46OnZhbHVlIGlzIHRydWUgd2hlbiBUMSBj
YW4KKy8vIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIFQyLgorVEVTVChJbXBsaWNpdGx5Q29u
dmVydGlibGVUZXN0LCBWYWx1ZUlzVHJ1ZVdoZW5Db252ZXJ0aWJsZSkgeworICBFWFBFQ1RfVFJV
RSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPGludCwgZG91YmxlPjo6dmFsdWUpKTsKKyAgRVhQRUNU
X1RSVUUoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxkb3VibGUsIGludD46OnZhbHVlKSk7CisgIEVY
UEVDVF9UUlVFKChJbXBsaWNpdGx5Q29udmVydGlibGU8aW50Kiwgdm9pZCo+Ojp2YWx1ZSkpOwor
ICBFWFBFQ1RfVFJVRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPGludCosIGNvbnN0IGludCo+Ojp2
YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPENvbnZlcnNpb25I
ZWxwZXJEZXJpdmVkJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBDb252ZXJzaW9uSGVscGVyQmFzZSY+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoSW1wbGlj
aXRseUNvbnZlcnRpYmxlPGNvbnN0IENvbnZlcnNpb25IZWxwZXJCYXNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnNpb25IZWxwZXJCYXNlPjo6dmFsdWUpKTsK
K30KKworLy8gVGVzdHMgdGhhdCBJbXBsaWNpdGx5Q29udmVydGlibGU8VDEsIFQyPjo6dmFsdWUg
aXMgZmFsc2Ugd2hlbiBUMQorLy8gY2Fubm90IGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIFQy
LgorVEVTVChJbXBsaWNpdGx5Q29udmVydGlibGVUZXN0LCBWYWx1ZUlzRmFsc2VXaGVuTm90Q29u
dmVydGlibGUpIHsKKyAgRVhQRUNUX0ZBTFNFKChJbXBsaWNpdGx5Q29udmVydGlibGU8ZG91Ymxl
LCBpbnQqPjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKChJbXBsaWNpdGx5Q29udmVydGlibGU8
dm9pZCosIGludCo+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoKEltcGxpY2l0bHlDb252ZXJ0
aWJsZTxjb25zdCBpbnQqLCBpbnQqPjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKChJbXBsaWNp
dGx5Q29udmVydGlibGU8Q29udmVyc2lvbkhlbHBlckJhc2UmLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uSGVscGVyRGVyaXZlZCY+Ojp2YWx1ZSkpOwor
fQorCisvLyBUZXN0cyBJc0NvbnRhaW5lclRlc3QuCisKK2NsYXNzIE5vbkNvbnRhaW5lciB7fTsK
KworVEVTVChJc0NvbnRhaW5lclRlc3RUZXN0LCBXb3Jrc0Zvck5vbkNvbnRhaW5lcikgeworICBF
WFBFQ1RfRVEoc2l6ZW9mKElzTm90Q29udGFpbmVyKSwgc2l6ZW9mKElzQ29udGFpbmVyVGVzdDxp
bnQ+KDApKSk7CisgIEVYUEVDVF9FUShzaXplb2YoSXNOb3RDb250YWluZXIpLCBzaXplb2YoSXND
b250YWluZXJUZXN0PGNoYXJbNV0+KDApKSk7CisgIEVYUEVDVF9FUShzaXplb2YoSXNOb3RDb250
YWluZXIpLCBzaXplb2YoSXNDb250YWluZXJUZXN0PE5vbkNvbnRhaW5lcj4oMCkpKTsKK30KKwor
VEVTVChJc0NvbnRhaW5lclRlc3RUZXN0LCBXb3Jrc0ZvckNvbnRhaW5lcikgeworICBFWFBFQ1Rf
RVEoc2l6ZW9mKElzQ29udGFpbmVyKSwKKyAgICAgICAgICAgIHNpemVvZihJc0NvbnRhaW5lclRl
c3Q8c3RkOjp2ZWN0b3I8Ym9vbD4gPigwKSkpOworICBFWFBFQ1RfRVEoc2l6ZW9mKElzQ29udGFp
bmVyKSwKKyAgICAgICAgICAgIHNpemVvZihJc0NvbnRhaW5lclRlc3Q8c3RkOjptYXA8aW50LCBk
b3VibGU+ID4oMCkpKTsKK30KKworI2lmIEdURVNUX0xBTkdfQ1hYMTEKK3N0cnVjdCBDb25zdE9u
bHlDb250YWluZXJXaXRoUG9pbnRlckl0ZXJhdG9yIHsKKyAgdXNpbmcgY29uc3RfaXRlcmF0b3Ig
PSBpbnQqOworICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0OworICBjb25zdF9pdGVyYXRv
ciBlbmQoKSBjb25zdDsKK307CisKK3N0cnVjdCBDb25zdE9ubHlDb250YWluZXJXaXRoQ2xhc3NJ
dGVyYXRvciB7CisgIHN0cnVjdCBjb25zdF9pdGVyYXRvciB7CisgICAgY29uc3QgaW50JiBvcGVy
YXRvciooKSBjb25zdDsKKyAgICBjb25zdF9pdGVyYXRvciYgb3BlcmF0b3IrKygvKiBwcmUtaW5j
cmVtZW50ICovKTsKKyAgfTsKKyAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKKyAgY29u
c3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7Cit9OworCitURVNUKElzQ29udGFpbmVyVGVzdFRlc3Qs
IENvbnN0T25seUNvbnRhaW5lcikgeworICBFWFBFQ1RfRVEoc2l6ZW9mKElzQ29udGFpbmVyKSwK
KyAgICAgICAgICAgIHNpemVvZihJc0NvbnRhaW5lclRlc3Q8Q29uc3RPbmx5Q29udGFpbmVyV2l0
aFBvaW50ZXJJdGVyYXRvcj4oMCkpKTsKKyAgRVhQRUNUX0VRKHNpemVvZihJc0NvbnRhaW5lciks
CisgICAgICAgICAgICBzaXplb2YoSXNDb250YWluZXJUZXN0PENvbnN0T25seUNvbnRhaW5lcldp
dGhDbGFzc0l0ZXJhdG9yPigwKSkpOworfQorI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisK
Ky8vIFRlc3RzIElzSGFzaFRhYmxlLgorc3RydWN0IEFIYXNoVGFibGUgeworICB0eXBlZGVmIHZv
aWQgaGFzaGVyOworfTsKK3N0cnVjdCBOb3RSZWFsbHlBSGFzaFRhYmxlIHsKKyAgdHlwZWRlZiB2
b2lkIGhhc2hlcjsKKyAgdHlwZWRlZiB2b2lkIHJldmVyc2VfaXRlcmF0b3I7Cit9OworVEVTVChJ
c0hhc2hUYWJsZSwgQmFzaWMpIHsKKyAgRVhQRUNUX1RSVUUodGVzdGluZzo6aW50ZXJuYWw6Oklz
SGFzaFRhYmxlPEFIYXNoVGFibGU+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRSh0ZXN0aW5nOjpp
bnRlcm5hbDo6SXNIYXNoVGFibGU8Tm90UmVhbGx5QUhhc2hUYWJsZT46OnZhbHVlKTsKKyNpZiBH
VEVTVF9MQU5HX0NYWDExCisgIEVYUEVDVF9GQUxTRSh0ZXN0aW5nOjppbnRlcm5hbDo6SXNIYXNo
VGFibGU8c3RkOjp2ZWN0b3I8aW50Pj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUodGVzdGluZzo6
aW50ZXJuYWw6OklzSGFzaFRhYmxlPHN0ZDo6dW5vcmRlcmVkX3NldDxpbnQ+Pjo6dmFsdWUpOwor
I2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisjaWYgR1RFU1RfSEFTX0hBU0hfU0VUXworICBF
WFBFQ1RfVFJVRSh0ZXN0aW5nOjppbnRlcm5hbDo6SXNIYXNoVGFibGU8X19nbnVfY3h4OjpoYXNo
X3NldDxpbnQ+Pjo6dmFsdWUpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfSEFTSF9TRVRfCit9CisK
Ky8vIFRlc3RzIEFycmF5RXEoKS4KKworVEVTVChBcnJheUVxVGVzdCwgV29ya3NGb3JEZWdlbmVy
YXRlZEFycmF5cykgeworICBFWFBFQ1RfVFJVRShBcnJheUVxKDUsIDVMKSk7CisgIEVYUEVDVF9G
QUxTRShBcnJheUVxKCdhJywgMCkpOworfQorCitURVNUKEFycmF5RXFUZXN0LCBXb3Jrc0Zvck9u
ZURpbWVuc2lvbmFsQXJyYXlzKSB7CisgIC8vIE5vdGUgdGhhdCBhIGFuZCBiIGFyZSBkaXN0aW5j
dCBidXQgY29tcGF0aWJsZSB0eXBlcy4KKyAgY29uc3QgaW50IGFbXSA9IHsgMCwgMSB9OworICBs
b25nIGJbXSA9IHsgMCwgMSB9OworICBFWFBFQ1RfVFJVRShBcnJheUVxKGEsIGIpKTsKKyAgRVhQ
RUNUX1RSVUUoQXJyYXlFcShhLCAyLCBiKSk7CisKKyAgYlswXSA9IDI7CisgIEVYUEVDVF9GQUxT
RShBcnJheUVxKGEsIGIpKTsKKyAgRVhQRUNUX0ZBTFNFKEFycmF5RXEoYSwgMSwgYikpOworfQor
CitURVNUKEFycmF5RXFUZXN0LCBXb3Jrc0ZvclR3b0RpbWVuc2lvbmFsQXJyYXlzKSB7CisgIGNv
bnN0IGNoYXIgYVtdWzNdID0geyAiaGkiLCAibG8iIH07CisgIGNvbnN0IGNoYXIgYltdWzNdID0g
eyAiaGkiLCAibG8iIH07CisgIGNvbnN0IGNoYXIgY1tdWzNdID0geyAiaGkiLCAibGkiIH07CisK
KyAgRVhQRUNUX1RSVUUoQXJyYXlFcShhLCBiKSk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwg
MiwgYikpOworCisgIEVYUEVDVF9GQUxTRShBcnJheUVxKGEsIGMpKTsKKyAgRVhQRUNUX0ZBTFNF
KEFycmF5RXEoYSwgMiwgYykpOworfQorCisvLyBUZXN0cyBBcnJheUF3YXJlRmluZCgpLgorCitU
RVNUKEFycmF5QXdhcmVGaW5kVGVzdCwgV29ya3NGb3JPbmVEaW1lbnNpb25hbEFycmF5KSB7Cisg
IGNvbnN0IGNoYXIgYVtdID0gImhlbGxvIjsKKyAgRVhQRUNUX0VRKGEgKyA0LCBBcnJheUF3YXJl
RmluZChhLCBhICsgNSwgJ28nKSk7CisgIEVYUEVDVF9FUShhICsgNSwgQXJyYXlBd2FyZUZpbmQo
YSwgYSArIDUsICd4JykpOworfQorCitURVNUKEFycmF5QXdhcmVGaW5kVGVzdCwgV29ya3NGb3JU
d29EaW1lbnNpb25hbEFycmF5KSB7CisgIGludCBhW11bMl0gPSB7IHsgMCwgMSB9LCB7IDIsIDMg
fSwgeyA0LCA1IH0gfTsKKyAgY29uc3QgaW50IGJbMl0gPSB7IDIsIDMgfTsKKyAgRVhQRUNUX0VR
KGEgKyAxLCBBcnJheUF3YXJlRmluZChhLCBhICsgMywgYikpOworCisgIGNvbnN0IGludCBjWzJd
ID0geyA2LCA3IH07CisgIEVYUEVDVF9FUShhICsgMywgQXJyYXlBd2FyZUZpbmQoYSwgYSArIDMs
IGMpKTsKK30KKworLy8gVGVzdHMgQ29weUFycmF5KCkuCisKK1RFU1QoQ29weUFycmF5VGVzdCwg
V29ya3NGb3JEZWdlbmVyYXRlZEFycmF5cykgeworICBpbnQgbiA9IDA7CisgIENvcHlBcnJheSgn
YScsICZuKTsKKyAgRVhQRUNUX0VRKCdhJywgbik7Cit9CisKK1RFU1QoQ29weUFycmF5VGVzdCwg
V29ya3NGb3JPbmVEaW1lbnNpb25hbEFycmF5cykgeworICBjb25zdCBjaGFyIGFbM10gPSAiaGki
OworICBpbnQgYlszXTsKKyNpZm5kZWYgX19CT1JMQU5EQ19fICAvLyBDKytCdWlsZGVyIGNhbm5v
dCBjb21waWxlIHNvbWUgYXJyYXkgc2l6ZSBkZWR1Y3Rpb25zLgorICBDb3B5QXJyYXkoYSwgJmIp
OworICBFWFBFQ1RfVFJVRShBcnJheUVxKGEsIGIpKTsKKyNlbmRpZgorCisgIGludCBjWzNdOwor
ICBDb3B5QXJyYXkoYSwgMywgYyk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYykpOworfQor
CitURVNUKENvcHlBcnJheVRlc3QsIFdvcmtzRm9yVHdvRGltZW5zaW9uYWxBcnJheXMpIHsKKyAg
Y29uc3QgaW50IGFbMl1bM10gPSB7IHsgMCwgMSwgMiB9LCB7IDMsIDQsIDUgfSB9OworICBpbnQg
YlsyXVszXTsKKyNpZm5kZWYgX19CT1JMQU5EQ19fICAvLyBDKytCdWlsZGVyIGNhbm5vdCBjb21w
aWxlIHNvbWUgYXJyYXkgc2l6ZSBkZWR1Y3Rpb25zLgorICBDb3B5QXJyYXkoYSwgJmIpOworICBF
WFBFQ1RfVFJVRShBcnJheUVxKGEsIGIpKTsKKyNlbmRpZgorCisgIGludCBjWzJdWzNdOworICBD
b3B5QXJyYXkoYSwgMiwgYyk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYykpOworfQorCisv
LyBUZXN0cyBOYXRpdmVBcnJheS4KKworVEVTVChOYXRpdmVBcnJheVRlc3QsIENvbnN0cnVjdG9y
RnJvbUFycmF5V29ya3MpIHsKKyAgY29uc3QgaW50IGFbM10gPSB7IDAsIDEsIDIgfTsKKyAgTmF0
aXZlQXJyYXk8aW50PiBuYShhLCAzLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOworICBF
WFBFQ1RfRVEoM1UsIG5hLnNpemUoKSk7CisgIEVYUEVDVF9FUShhLCBuYS5iZWdpbigpKTsKK30K
KworVEVTVChOYXRpdmVBcnJheVRlc3QsIENyZWF0ZXNBbmREZWxldGVzQ29weU9mQXJyYXlXaGVu
QXNrZWRUbykgeworICB0eXBlZGVmIGludCBBcnJheVsyXTsKKyAgQXJyYXkqIGEgPSBuZXcgQXJy
YXlbMV07CisgICgqYSlbMF0gPSAwOworICAoKmEpWzFdID0gMTsKKyAgTmF0aXZlQXJyYXk8aW50
PiBuYSgqYSwgMiwgUmVsYXRpb25Ub1NvdXJjZUNvcHkoKSk7CisgIEVYUEVDVF9ORSgqYSwgbmEu
YmVnaW4oKSk7CisgIGRlbGV0ZVtdIGE7CisgIEVYUEVDVF9FUSgwLCBuYS5iZWdpbigpWzBdKTsK
KyAgRVhQRUNUX0VRKDEsIG5hLmJlZ2luKClbMV0pOworCisgIC8vIFdlIHJlbHkgb24gdGhlIGhl
YXAgY2hlY2tlciB0byB2ZXJpZnkgdGhhdCBuYSBkZWxldGVzIHRoZSBjb3B5IG9mCisgIC8vIGFy
cmF5LgorfQorCitURVNUKE5hdGl2ZUFycmF5VGVzdCwgVHlwZU1lbWJlcnNBcmVDb3JyZWN0KSB7
CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxjaGFyLCBOYXRpdmVBcnJheTxjaGFyPjo6dmFsdWVfdHlw
ZT4oKTsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGludFsyXSwgTmF0aXZlQXJyYXk8aW50WzJdPjo6
dmFsdWVfdHlwZT4oKTsKKworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgY2hhciosIE5hdGl2
ZUFycmF5PGNoYXI+Ojpjb25zdF9pdGVyYXRvcj4oKTsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGNv
bnN0IGJvb2woKilbMl0sIE5hdGl2ZUFycmF5PGJvb2xbMl0+Ojpjb25zdF9pdGVyYXRvcj4oKTsK
K30KKworVEVTVChOYXRpdmVBcnJheVRlc3QsIE1ldGhvZHNXb3JrKSB7CisgIGNvbnN0IGludCBh
WzNdID0geyAwLCAxLCAyIH07CisgIE5hdGl2ZUFycmF5PGludD4gbmEoYSwgMywgUmVsYXRpb25U
b1NvdXJjZUNvcHkoKSk7CisgIEFTU0VSVF9FUSgzVSwgbmEuc2l6ZSgpKTsKKyAgRVhQRUNUX0VR
KDMsIG5hLmVuZCgpIC0gbmEuYmVnaW4oKSk7CisKKyAgTmF0aXZlQXJyYXk8aW50Pjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBuYS5iZWdpbigpOworICBFWFBFQ1RfRVEoMCwgKml0KTsKKyAgKytpdDsK
KyAgRVhQRUNUX0VRKDEsICppdCk7CisgIGl0Kys7CisgIEVYUEVDVF9FUSgyLCAqaXQpOworICAr
K2l0OworICBFWFBFQ1RfRVEobmEuZW5kKCksIGl0KTsKKworICBFWFBFQ1RfVFJVRShuYSA9PSBu
YSk7CisKKyAgTmF0aXZlQXJyYXk8aW50PiBuYTIoYSwgMywgUmVsYXRpb25Ub1NvdXJjZVJlZmVy
ZW5jZSgpKTsKKyAgRVhQRUNUX1RSVUUobmEgPT0gbmEyKTsKKworICBjb25zdCBpbnQgYjFbM10g
PSB7IDAsIDEsIDEgfTsKKyAgY29uc3QgaW50IGIyWzRdID0geyAwLCAxLCAyLCAzIH07CisgIEVY
UEVDVF9GQUxTRShuYSA9PSBOYXRpdmVBcnJheTxpbnQ+KGIxLCAzLCBSZWxhdGlvblRvU291cmNl
UmVmZXJlbmNlKCkpKTsKKyAgRVhQRUNUX0ZBTFNFKG5hID09IE5hdGl2ZUFycmF5PGludD4oYjIs
IDQsIFJlbGF0aW9uVG9Tb3VyY2VDb3B5KCkpKTsKK30KKworVEVTVChOYXRpdmVBcnJheVRlc3Qs
IFdvcmtzRm9yVHdvRGltZW5zaW9uYWxBcnJheSkgeworICBjb25zdCBjaGFyIGFbMl1bM10gPSB7
ICJoaSIsICJsbyIgfTsKKyAgTmF0aXZlQXJyYXk8Y2hhclszXT4gbmEoYSwgMiwgUmVsYXRpb25U
b1NvdXJjZVJlZmVyZW5jZSgpKTsKKyAgQVNTRVJUX0VRKDJVLCBuYS5zaXplKCkpOworICBFWFBF
Q1RfRVEoYSwgbmEuYmVnaW4oKSk7Cit9CisKKy8vIFRlc3RzIFNraXBQcmVmaXgoKS4KKworVEVT
VChTa2lwUHJlZml4VGVzdCwgU2tpcHNXaGVuUHJlZml4TWF0Y2hlcykgeworICBjb25zdCBjaGFy
KiBjb25zdCBzdHIgPSAiaGVsbG8iOworCisgIGNvbnN0IGNoYXIqIHAgPSBzdHI7CisgIEVYUEVD
VF9UUlVFKFNraXBQcmVmaXgoIiIsICZwKSk7CisgIEVYUEVDVF9FUShzdHIsIHApOworCisgIHAg
PSBzdHI7CisgIEVYUEVDVF9UUlVFKFNraXBQcmVmaXgoImhlbGwiLCAmcCkpOworICBFWFBFQ1Rf
RVEoc3RyICsgNCwgcCk7Cit9CisKK1RFU1QoU2tpcFByZWZpeFRlc3QsIERvZXNOb3RTa2lwV2hl
blByZWZpeERvZXNOb3RNYXRjaCkgeworICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAid29ybGQi
OworCisgIGNvbnN0IGNoYXIqIHAgPSBzdHI7CisgIEVYUEVDVF9GQUxTRShTa2lwUHJlZml4KCJX
IiwgJnApKTsKKyAgRVhQRUNUX0VRKHN0ciwgcCk7CisKKyAgcCA9IHN0cjsKKyAgRVhQRUNUX0ZB
TFNFKFNraXBQcmVmaXgoIndvcmxkISIsICZwKSk7CisgIEVYUEVDVF9FUShzdHIsIHApOworfQor
CisvLyBUZXN0cyBhZF9ob2NfdGVzdF9yZXN1bHQoKS4KKworY2xhc3MgQWRIb2NUZXN0UmVzdWx0
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHN0YXRpYyB2b2lk
IFNldFVwVGVzdENhc2UoKSB7CisgICAgRkFJTCgpIDw8ICJBIGZhaWx1cmUgaGFwcGVuZWQgaW5z
aWRlIFNldFVwVGVzdENhc2UoKS4iOworICB9Cit9OworCitURVNUX0YoQWRIb2NUZXN0UmVzdWx0
VGVzdCwgQWRIb2NUZXN0UmVzdWx0Rm9yVGVzdENhc2VTaG93c0ZhaWx1cmUpIHsKKyAgY29uc3Qg
dGVzdGluZzo6VGVzdFJlc3VsdCYgdGVzdF9yZXN1bHQgPSB0ZXN0aW5nOjpVbml0VGVzdDo6R2V0
SW5zdGFuY2UoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtPmN1cnJlbnRfdGVzdF9jYXNlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLT5hZF9ob2NfdGVzdF9yZXN1bHQoKTsKKyAgRVhQRUNUX1RSVUUodGVz
dF9yZXN1bHQuRmFpbGVkKCkpOworfQorCitURVNUX0YoQWRIb2NUZXN0UmVzdWx0VGVzdCwgQWRI
b2NUZXN0UmVzdWx0VGVzdEZvclVuaXRUZXN0RG9lc05vdFNob3dGYWlsdXJlKSB7CisgIGNvbnN0
IHRlc3Rpbmc6OlRlc3RSZXN1bHQmIHRlc3RfcmVzdWx0ID0KKyAgICAgIHRlc3Rpbmc6OlVuaXRU
ZXN0OjpHZXRJbnN0YW5jZSgpLT5hZF9ob2NfdGVzdF9yZXN1bHQoKTsKKyAgRVhQRUNUX0ZBTFNF
KHRlc3RfcmVzdWx0LkZhaWxlZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MKaW5kZXggNjY0YmFhZDJh
Yjg3M2JhMzg4MTkzYTY1ZDJiNzlmZDgzZGIyZTc3NS4uYTM4ZWJhYzgzOWY3YjRmY2Y3MTA5MzUx
YzRkM2ZlY2RlMjcxNWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MKQEAgLTI3LDEyICsyNywxMCBAQAog
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogLy8KLS8vIEF1dGhvcjoga2VpdGgucmF5
QGdtYWlsLmNvbSAoS2VpdGggUmF5KQotLy8KIC8vIGd0ZXN0X3htbF9vdXRmaWxlMV90ZXN0XyB3
cml0ZXMgc29tZSB4bWwgdmlhIFRlc3RQcm9wZXJ0eSB1c2VkIGJ5CiAvLyBndGVzdF94bWxfb3V0
ZmlsZXNfdGVzdC5weQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgogCiBjbGFzcyBQcm9wZXJ0eU9uZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
ICBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X3htbF9vdXRmaWxlMl90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfLmNjCmluZGV4IDM0MTFhM2QzOGI4NjEwNGM2YTYwYzYw
ZDExMzFjYjY2YWE1NGMxOTIuLmFmYWYxNWE1ZGMzMjMxNWQ1MWFjN2EwYTU1NWY4M2NhYjQxZWY3
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291
dGZpbGUyX3Rlc3RfLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
eG1sX291dGZpbGUyX3Rlc3RfLmNjCkBAIC0yNywxMiArMjcsMTAgQEAKIC8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRob3I6IGtlaXRoLnJheUBnbWFpbC5jb20gKEtl
aXRoIFJheSkKLS8vCiAvLyBndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8gd3JpdGVzIHNvbWUgeG1s
IHZpYSBUZXN0UHJvcGVydHkgdXNlZCBieQogLy8gZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkK
IAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAog
Y2xhc3MgUHJvcGVydHlUd28gOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgcHJvdGVjdGVkOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0Zmls
ZXNfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZp
bGVzX3Rlc3QucHkKaW5kZXggMGZlOTQ3ZjA4NGM4ZjU2ZjRhZGY1ZDBjOWZhMDI2Y2UyOTk3NWQy
Yy4uMmMwMzFmZjhkYmE1MTJjMmUwNGUyNzA1MzRlMjlmY2ViZTg4NmNmOSAxMDA3NTUKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weQor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlc190ZXN0
LnB5CkBAIC0zMSwzMSArMzEsMzkgQEAKIAogIiIiVW5pdCB0ZXN0IGZvciB0aGUgZ3Rlc3RfeG1s
X291dHB1dCBtb2R1bGUuIiIiCiAKLV9fYXV0aG9yX18gPSAia2VpdGgucmF5QGdtYWlsLmNvbSAo
S2VpdGggUmF5KSIKLQogaW1wb3J0IG9zCiBmcm9tIHhtbC5kb20gaW1wb3J0IG1pbmlkb20sIE5v
ZGUKLQogaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKIGltcG9ydCBndGVzdF94bWxfdGVzdF91dGls
cwogCi0KIEdURVNUX09VVFBVVF9TVUJESVIgPSAieG1sX291dGZpbGVzIgogR1RFU1RfT1VUUFVU
XzFfVEVTVCA9ICJndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8iCiBHVEVTVF9PVVRQVVRfMl9URVNU
ID0gImd0ZXN0X3htbF9vdXRmaWxlMl90ZXN0XyIKIAogRVhQRUNURURfWE1MXzEgPSAiIiI8P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMgdGVzdHM9IjEi
IGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiBuYW1lPSJBbGxU
ZXN0cyI+Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBl
cnJvcnM9IjAiIHRpbWU9IioiIHRpbWVzdGFtcD0iKiIgbmFtZT0iQWxsVGVzdHMiPgogICA8dGVz
dHN1aXRlIG5hbWU9IlByb3BlcnR5T25lIiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVk
PSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJUZXN0U29tZVBy
b3BlcnRpZXMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlByb3BlcnR5T25lIiBT
ZXRVcFByb3A9IjEiIFRlc3RTb21lUHJvcGVydHk9IjEiIFRlYXJEb3duUHJvcD0iMSIgLz4KKyAg
ICA8dGVzdGNhc2UgbmFtZT0iVGVzdFNvbWVQcm9wZXJ0aWVzIiBzdGF0dXM9InJ1biIgdGltZT0i
KiIgY2xhc3NuYW1lPSJQcm9wZXJ0eU9uZSI+CisgICAgICA8cHJvcGVydGllcz4KKyAgICAgICAg
PHByb3BlcnR5IG5hbWU9IlNldFVwUHJvcCIgdmFsdWU9IjEiLz4KKyAgICAgICAgPHByb3BlcnR5
IG5hbWU9IlRlc3RTb21lUHJvcGVydHkiIHZhbHVlPSIxIi8+CisgICAgICAgIDxwcm9wZXJ0eSBu
YW1lPSJUZWFyRG93blByb3AiIHZhbHVlPSIxIi8+CisgICAgICA8L3Byb3BlcnRpZXM+CisgICAg
PC90ZXN0Y2FzZT4KICAgPC90ZXN0c3VpdGU+CiA8L3Rlc3RzdWl0ZXM+CiAiIiIKIAogRVhQRUNU
RURfWE1MXzIgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHRl
c3RzdWl0ZXMgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0
aW1lPSIqIiBuYW1lPSJBbGxUZXN0cyI+Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMSIgZmFpbHVyZXM9
IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiIHRpbWVzdGFtcD0iKiIgbmFtZT0i
QWxsVGVzdHMiPgogICA8dGVzdHN1aXRlIG5hbWU9IlByb3BlcnR5VHdvIiB0ZXN0cz0iMSIgZmFp
bHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgotICAgIDx0ZXN0Y2Fz
ZSBuYW1lPSJUZXN0U29tZVByb3BlcnRpZXMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25h
bWU9IlByb3BlcnR5VHdvIiBTZXRVcFByb3A9IjIiIFRlc3RTb21lUHJvcGVydHk9IjIiIFRlYXJE
b3duUHJvcD0iMiIgLz4KKyAgICA8dGVzdGNhc2UgbmFtZT0iVGVzdFNvbWVQcm9wZXJ0aWVzIiBz
dGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVR3byI+CisgICAgICA8cHJv
cGVydGllcz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9IlNldFVwUHJvcCIgdmFsdWU9IjIiLz4K
KyAgICAgICAgPHByb3BlcnR5IG5hbWU9IlRlc3RTb21lUHJvcGVydHkiIHZhbHVlPSIyIi8+Cisg
ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJUZWFyRG93blByb3AiIHZhbHVlPSIyIi8+CisgICAgICA8
L3Byb3BlcnRpZXM+CisgICAgPC90ZXN0Y2FzZT4KICAgPC90ZXN0c3VpdGU+CiA8L3Rlc3RzdWl0
ZXM+CiAiIiIKQEAgLTEwMywxMSArMTExLDExIEBAIGNsYXNzIEdUZXN0WE1MT3V0RmlsZXNUZXN0
KGd0ZXN0X3htbF90ZXN0X3V0aWxzLkdUZXN0WE1MVGVzdENhc2UpOgogICAgIHNlbGYuYXNzZXJ0
XyhwLmV4aXRlZCkKICAgICBzZWxmLmFzc2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkKIAotICAg
ICMgVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IGxpYnRvb2wgY2F1c2VzIHRoZSBidWlsdCB0ZXN0IGJp
bmFyeSB0byBiZQorICAgICMgRklYTUU6IGxpYnRvb2wgY2F1c2VzIHRoZSBidWlsdCB0ZXN0IGJp
bmFyeSB0byBiZQogICAgICMgICBuYW1lZCBsdC1ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8gaW5z
dGVhZCBvZgotICAgICMgICBndGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8uICBUbyBhY2NvdW50IGZv
ciB0aGlzIHBvc3NpYmlsbGl0eSwgd2UKKyAgICAjICAgZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3Rf
LiAgVG8gYWNjb3VudCBmb3IgdGhpcyBwb3NzaWJpbGl0eSwgd2UKICAgICAjICAgYWxsb3cgYm90
aCBuYW1lcyBpbiB0aGUgZm9sbG93aW5nIGNvZGUuICBXZSBzaG91bGQgcmVtb3ZlIHRoaXMKLSAg
ICAjICAgaGFjayB3aGVuIENoYW5kbGVyIENhcnJ1dGgncyBsaWJ0b29sIHJlcGxhY2VtZW50IHRv
b2wgaXMgcmVhZHkuCisgICAgIyAgIHdoZW4gbGlidG9vbCByZXBsYWNlbWVudCB0b29sIGlzIHJl
YWR5LgogICAgIG91dHB1dF9maWxlX25hbWUxID0gdGVzdF9uYW1lICsgIi54bWwiCiAgICAgb3V0
cHV0X2ZpbGUxID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2Rpcl8sIG91dHB1dF9maWxlX25h
bWUxKQogICAgIG91dHB1dF9maWxlX25hbWUyID0gJ2x0LScgKyBvdXRwdXRfZmlsZV9uYW1lMQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0
X3VuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0
cHV0X3VuaXR0ZXN0LnB5CmluZGV4IDZkNDQ5MjljYWNhMDNlYzZmYWU0NDcxZWQxYmExZDQxNmE1
ZGZjZTAuLmZhZWRkNGU2Y2U3MmRhYmVmNzg2YTMxMmVmNGFlY2E1YzVkMjliZmEgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVz
dC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRf
dW5pdHRlc3QucHkKQEAgLTMxLDYyICszMSw3NiBAQAogCiAiIiJVbml0IHRlc3QgZm9yIHRoZSBn
dGVzdF94bWxfb3V0cHV0IG1vZHVsZSIiIgogCi1fX2F1dGhvcl9fID0gJ2VlZmFjbUBnbWFpbC5j
b20gKFNlYW4gTWNhZmVlKScKLQoraW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgZXJybm8KIGltcG9y
dCBvcworaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBmcm9tIHhtbC5kb20gaW1wb3J0IG1pbmlkb20s
IE5vZGUKIAogaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKIGltcG9ydCBndGVzdF94bWxfdGVzdF91
dGlscwogCitHVEVTVF9GSUxURVJfRkxBRyA9ICctLWd0ZXN0X2ZpbHRlcicKK0dURVNUX0xJU1Rf
VEVTVFNfRkxBRyA9ICctLWd0ZXN0X2xpc3RfdGVzdHMnCitHVEVTVF9PVVRQVVRfRkxBRyA9ICct
LWd0ZXN0X291dHB1dCcKK0dURVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUgPSAndGVzdF9kZXRhaWwu
eG1sJworR1RFU1RfUFJPR1JBTV9OQU1FID0gJ2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfJwor
CisjIFRoZSBmbGFnIGluZGljYXRpbmcgc3RhY2t0cmFjZXMgYXJlIG5vdCBzdXBwb3J0ZWQKK05P
X1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFHID0gJy0tbm9fc3RhY2t0cmFjZV9zdXBwb3J0JwogCi1H
VEVTVF9PVVRQVVRfRkxBRyAgICAgICAgID0gIi0tZ3Rlc3Rfb3V0cHV0IgotR1RFU1RfREVGQVVM
VF9PVVRQVVRfRklMRSA9ICJ0ZXN0X2RldGFpbC54bWwiCi1HVEVTVF9QUk9HUkFNX05BTUUgPSAi
Z3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8iCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMg
Zm9yIHRlc3Qgc2hhcmRpbmcuCitUT1RBTF9TSEFSRFNfRU5WX1ZBUiA9ICdHVEVTVF9UT1RBTF9T
SEFSRFMnCitTSEFSRF9JTkRFWF9FTlZfVkFSID0gJ0dURVNUX1NIQVJEX0lOREVYJworU0hBUkRf
U1RBVFVTX0ZJTEVfRU5WX1ZBUiA9ICdHVEVTVF9TSEFSRF9TVEFUVVNfRklMRScKIAotU1VQUE9S
VFNfU1RBQ0tfVFJBQ0VTID0gRmFsc2UKK1NVUFBPUlRTX1NUQUNLX1RSQUNFUyA9IE5PX1NUQUNL
VFJBQ0VfU1VQUE9SVF9GTEFHIG5vdCBpbiBzeXMuYXJndgogCiBpZiBTVVBQT1JUU19TVEFDS19U
UkFDRVM6Ci0gIFNUQUNLX1RSQUNFX1RFTVBMQVRFID0gIlxuU3RhY2sgdHJhY2U6XG4qIgorICBT
VEFDS19UUkFDRV9URU1QTEFURSA9ICdcblN0YWNrIHRyYWNlOlxuKicKIGVsc2U6Ci0gIFNUQUNL
X1RSQUNFX1RFTVBMQVRFID0gIiIKKyAgU1RBQ0tfVFJBQ0VfVEVNUExBVEUgPSAnJworICAjIHVu
aXR0ZXN0Lm1haW4oKSBjYW4ndCBoYW5kbGUgdW5rbm93biBmbGFncworICBzeXMuYXJndi5yZW1v
dmUoTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZMQUcpCiAKIEVYUEVDVEVEX05PTl9FTVBUWV9YTUwg
PSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMg
dGVzdHM9IjE1IiBmYWlsdXJlcz0iNCIgZGlzYWJsZWQ9IjIiIGVycm9ycz0iMCIgdGltZT0iKiIg
bmFtZT0iQWxsVGVzdHMiPgorPHRlc3RzdWl0ZXMgdGVzdHM9IjIzIiBmYWlsdXJlcz0iNCIgZGlz
YWJsZWQ9IjIiIGVycm9ycz0iMCIgdGltZT0iKiIgdGltZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0
cyIgYWRfaG9jX3Byb3BlcnR5PSI0MiI+CiAgIDx0ZXN0c3VpdGUgbmFtZT0iU3VjY2Vzc2Z1bFRl
c3QiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0i
KiI+CiAgICAgPHRlc3RjYXNlIG5hbWU9IlN1Y2NlZWRzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIg
Y2xhc3NuYW1lPSJTdWNjZXNzZnVsVGVzdCIvPgogICA8L3Rlc3RzdWl0ZT4KICAgPHRlc3RzdWl0
ZSBuYW1lPSJGYWlsZWRUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjEiIGRpc2FibGVkPSIwIiBl
cnJvcnM9IjAiIHRpbWU9IioiPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJGYWlscyIgc3RhdHVzPSJy
dW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iRmFpbGVkVGVzdCI+Ci0gICAgICA8ZmFpbHVyZSBtZXNz
YWdlPSJWYWx1ZSBvZjogMiYjeDBBO0V4cGVjdGVkOiAxIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0
X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioKLVZhbHVlIG9mOiAyCi1FeHBlY3RlZDogMSUoc3Rh
Y2spc11dPjwvZmFpbHVyZT4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Imd0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3RfLmNjOiomI3gwQTtFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6
JiN4MEE7ICAxJiN4MEE7ICAyIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5p
dHRlc3RfLmNjOioKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICAy
JShzdGFjaylzXV0+PC9mYWlsdXJlPgogICAgIDwvdGVzdGNhc2U+CiAgIDwvdGVzdHN1aXRlPgog
ICA8dGVzdHN1aXRlIG5hbWU9Ik1peGVkUmVzdWx0VGVzdCIgdGVzdHM9IjMiIGZhaWx1cmVzPSIx
IiBkaXNhYmxlZD0iMSIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAgICA8dGVzdGNhc2UgbmFtZT0i
U3VjY2VlZHMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ik1peGVkUmVzdWx0VGVz
dCIvPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJGYWlscyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNs
YXNzbmFtZT0iTWl4ZWRSZXN1bHRUZXN0Ij4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IlZhbHVl
IG9mOiAyJiN4MEE7RXhwZWN0ZWQ6IDEiIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1
dF91bml0dGVzdF8uY2M6KgotVmFsdWUgb2Y6IDIKLUV4cGVjdGVkOiAxJShzdGFjaylzXV0+PC9m
YWlsdXJlPgotICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IDMmI3gwQTtFeHBlY3Rl
ZDogMiIgdHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCi1W
YWx1ZSBvZjogMwotRXhwZWN0ZWQ6IDIlKHN0YWNrKXNdXT48L2ZhaWx1cmU+CisgICAgICA8ZmFp
bHVyZSBtZXNzYWdlPSJndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqJiN4MEE7RXhwZWN0
ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOiYjeDBBOyAgMSYjeDBBOyAgMiIgdHlwZT0iIj48
IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCitFeHBlY3RlZCBlcXVhbGl0
eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAgMiUoc3RhY2spc11dPjwvZmFpbHVyZT4KKyAgICAg
IDxmYWlsdXJlIG1lc3NhZ2U9Imd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOiomI3gwQTtF
eHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6JiN4MEE7ICAyJiN4MEE7ICAzIiB0eXBl
PSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioKK0V4cGVjdGVkIGVx
dWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMgorICAzJShzdGFjaylzXV0+PC9mYWlsdXJlPgog
ICAgIDwvdGVzdGNhc2U+CiAgICAgPHRlc3RjYXNlIG5hbWU9IkRJU0FCTEVEX3Rlc3QiIHN0YXR1
cz0ibm90cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ik1peGVkUmVzdWx0VGVzdCIvPgogICA8L3Rl
c3RzdWl0ZT4KICAgPHRlc3RzdWl0ZSBuYW1lPSJYbWxRdW90aW5nVGVzdCIgdGVzdHM9IjEiIGZh
aWx1cmVzPSIxIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAgICA8dGVzdGNh
c2UgbmFtZT0iT3V0cHV0c0NEYXRhIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJY
bWxRdW90aW5nVGVzdCI+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJGYWlsZWQmI3gwQTtYTUwg
b3V0cHV0OiAmbHQ7P3htbCBlbmNvZGluZz0mcXVvdDt1dGYtOCZxdW90OyZndDsmbHQ7dG9wJmd0
OyZsdDshW0NEQVRBW2NkYXRhIHRleHRdXSZndDsmbHQ7L3RvcCZndDsiIHR5cGU9IiI+PCFbQ0RB
VEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgorICAgICAgPGZhaWx1cmUgbWVzc2Fn
ZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBBO0ZhaWxlZCYjeDBBO1hNTCBv
dXRwdXQ6ICZsdDs/eG1sIGVuY29kaW5nPSZxdW90O3V0Zi04JnF1b3Q7Jmd0OyZsdDt0b3AmZ3Q7
Jmx0OyFbQ0RBVEFbY2RhdGEgdGV4dF1dJmd0OyZsdDsvdG9wJmd0OyIgdHlwZT0iIj48IVtDREFU
QVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCiBGYWlsZWQKIFhNTCBvdXRwdXQ6IDw/
eG1sIGVuY29kaW5nPSJ1dGYtOCI+PHRvcD48IVtDREFUQVtjZGF0YSB0ZXh0XV0+XV0mZ3Q7PCFb
Q0RBVEFbPC90b3A+JShzdGFjaylzXV0+PC9mYWlsdXJlPgogICAgIDwvdGVzdGNhc2U+CiAgIDwv
dGVzdHN1aXRlPgogICA8dGVzdHN1aXRlIG5hbWU9IkludmFsaWRDaGFyYWN0ZXJzVGVzdCIgdGVz
dHM9IjEiIGZhaWx1cmVzPSIxIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAg
ICA8dGVzdGNhc2UgbmFtZT0iSW52YWxpZENoYXJhY3RlcnNJbk1lc3NhZ2UiIHN0YXR1cz0icnVu
IiB0aW1lPSIqIiBjbGFzc25hbWU9IkludmFsaWRDaGFyYWN0ZXJzVGVzdCI+Ci0gICAgICA8ZmFp
bHVyZSBtZXNzYWdlPSJGYWlsZWQmI3gwQTtJbnZhbGlkIGNoYXJhY3RlcnMgaW4gYnJhY2tldHMg
W10iIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgorICAg
ICAgPGZhaWx1cmUgbWVzc2FnZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBB
O0ZhaWxlZCYjeDBBO0ludmFsaWQgY2hhcmFjdGVycyBpbiBicmFja2V0cyBbXSIgdHlwZT0iIj48
IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCiBGYWlsZWQKIEludmFsaWQg
Y2hhcmFjdGVycyBpbiBicmFja2V0cyBbXSUoc3RhY2spc11dPjwvZmFpbHVyZT4KICAgICA8L3Rl
c3RjYXNlPgpAQCAtOTQsNDUgKzEwOCwxNTIgQEAgSW52YWxpZCBjaGFyYWN0ZXJzIGluIGJyYWNr
ZXRzIFtdJShzdGFjaylzXV0+PC9mYWlsdXJlPgogICA8dGVzdHN1aXRlIG5hbWU9IkRpc2FibGVk
VGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMSIgZXJyb3JzPSIwIiB0aW1l
PSIqIj4KICAgICA8dGVzdGNhc2UgbmFtZT0iRElTQUJMRURfdGVzdF9ub3RfcnVuIiBzdGF0dXM9
Im5vdHJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJEaXNhYmxlZFRlc3QiLz4KICAgPC90ZXN0c3Vp
dGU+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0IiB0ZXN0cz0iNCIg
ZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgotICAgIDx0ZXN0
Y2FzZSBuYW1lPSJPbmVQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0i
UHJvcGVydHlSZWNvcmRpbmdUZXN0IiBrZXlfMT0iMSIvPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJJ
bnRWYWx1ZWRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVy
dHlSZWNvcmRpbmdUZXN0IiBrZXlfaW50PSIxIi8+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IlRocmVl
UHJvcGVydGllcyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNv
cmRpbmdUZXN0IiBrZXlfMT0iMSIga2V5XzI9IjIiIGtleV8zPSIzIi8+Ci0gICAgPHRlc3RjYXNl
IG5hbWU9IlR3b1ZhbHVlc0Zvck9uZUtleVVzZXNMYXN0VmFsdWUiIHN0YXR1cz0icnVuIiB0aW1l
PSIqIiBjbGFzc25hbWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCIga2V5XzE9IjIiLz4KKyAgPHRl
c3RzdWl0ZSBuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiIHRlc3RzPSI0IiBmYWlsdXJlcz0i
MCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIgU2V0VXBUZXN0Q2FzZT0ieWVzIiBU
ZWFyRG93blRlc3RDYXNlPSJheWUiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJPbmVQcm9wZXJ0eSIg
c3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0Ij4K
KyAgICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ia2V5XzEiIHZhbHVl
PSIxIi8+CisgICAgICA8L3Byb3BlcnRpZXM+CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8dGVzdGNh
c2UgbmFtZT0iSW50VmFsdWVkUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25h
bWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCI+CisgICAgICA8cHJvcGVydGllcz4KKyAgICAgICAg
PHByb3BlcnR5IG5hbWU9ImtleV9pbnQiIHZhbHVlPSIxIi8+CisgICAgICA8L3Byb3BlcnRpZXM+
CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8dGVzdGNhc2UgbmFtZT0iVGhyZWVQcm9wZXJ0aWVzIiBz
dGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiPgor
ICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJrZXlfMSIgdmFsdWU9
IjEiLz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImtleV8yIiB2YWx1ZT0iMiIvPgorICAgICAg
ICA8cHJvcGVydHkgbmFtZT0ia2V5XzMiIHZhbHVlPSIzIi8+CisgICAgICA8L3Byb3BlcnRpZXM+
CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8dGVzdGNhc2UgbmFtZT0iVHdvVmFsdWVzRm9yT25lS2V5
VXNlc0xhc3RWYWx1ZSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlS
ZWNvcmRpbmdUZXN0Ij4KKyAgICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICA8cHJvcGVydHkgbmFt
ZT0ia2V5XzEiIHZhbHVlPSIyIi8+CisgICAgICA8L3Byb3BlcnRpZXM+CisgICAgPC90ZXN0Y2Fz
ZT4KICAgPC90ZXN0c3VpdGU+CiAgIDx0ZXN0c3VpdGUgbmFtZT0iTm9GaXh0dXJlVGVzdCIgdGVz
dHM9IjMiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KLSAg
ICAgPHRlc3RjYXNlIG5hbWU9IlJlY29yZFByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIg
Y2xhc3NuYW1lPSJOb0ZpeHR1cmVUZXN0IiBrZXk9IjEiLz4KLSAgICAgPHRlc3RjYXNlIG5hbWU9
IkV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZEludFZhbHVlZFByb3BlcnR5IiBzdGF0dXM9
InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJOb0ZpeHR1cmVUZXN0IiBrZXlfZm9yX3V0aWxpdHlf
aW50PSIxIi8+Ci0gICAgIDx0ZXN0Y2FzZSBuYW1lPSJFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNS
ZWNvcmRTdHJpbmdWYWx1ZWRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFt
ZT0iTm9GaXh0dXJlVGVzdCIga2V5X2Zvcl91dGlsaXR5X3N0cmluZz0iMSIvPgorICAgICA8dGVz
dGNhc2UgbmFtZT0iUmVjb3JkUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25h
bWU9Ik5vRml4dHVyZVRlc3QiPgorICAgICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICAgPHByb3Bl
cnR5IG5hbWU9ImtleSIgdmFsdWU9IjEiLz4KKyAgICAgICA8L3Byb3BlcnRpZXM+CisgICAgIDwv
dGVzdGNhc2U+CisgICAgIDx0ZXN0Y2FzZSBuYW1lPSJFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNS
ZWNvcmRJbnRWYWx1ZWRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0i
Tm9GaXh0dXJlVGVzdCI+CisgICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgICA8cHJvcGVydHkg
bmFtZT0ia2V5X2Zvcl91dGlsaXR5X2ludCIgdmFsdWU9IjEiLz4KKyAgICAgICA8L3Byb3BlcnRp
ZXM+CisgICAgIDwvdGVzdGNhc2U+CisgICAgIDx0ZXN0Y2FzZSBuYW1lPSJFeHRlcm5hbFV0aWxp
dHlUaGF0Q2FsbHNSZWNvcmRTdHJpbmdWYWx1ZWRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9
IioiIGNsYXNzbmFtZT0iTm9GaXh0dXJlVGVzdCI+CisgICAgICAgPHByb3BlcnRpZXM+CisgICAg
ICAgICA8cHJvcGVydHkgbmFtZT0ia2V5X2Zvcl91dGlsaXR5X3N0cmluZyIgdmFsdWU9IjEiLz4K
KyAgICAgICA8L3Byb3BlcnRpZXM+CisgICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgor
ICA8dGVzdHN1aXRlIG5hbWU9IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIgdGVzdHM9IjQiIGZhaWx1
cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2Ug
bmFtZT0iSGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8wIiB2YWx1ZV9wYXJhbT0iMzMiIHN0YXR1cz0i
cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIgLz4KKyAgICA8
dGVzdGNhc2UgbmFtZT0iSGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8xIiB2YWx1ZV9wYXJhbT0iNDIi
IHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIg
Lz4KKyAgICA8dGVzdGNhc2UgbmFtZT0iQW5vdGhlclRlc3RUaGF0SGFzVmFsdWVQYXJhbUF0dHJp
YnV0ZS8wIiB2YWx1ZV9wYXJhbT0iMzMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9
IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIgLz4KKyAgICA8dGVzdGNhc2UgbmFtZT0iQW5vdGhlclRl
c3RUaGF0SGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8xIiB2YWx1ZV9wYXJhbT0iNDIiIHN0YXR1cz0i
cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIgLz4KKyAgPC90
ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iVHlwZWRUZXN0LzAiIHRlc3RzPSIxIiBmYWls
dXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNl
IG5hbWU9Ikhhc1R5cGVQYXJhbUF0dHJpYnV0ZSIgdHlwZV9wYXJhbT0iKiIgc3RhdHVzPSJydW4i
IHRpbWU9IioiIGNsYXNzbmFtZT0iVHlwZWRUZXN0LzAiIC8+CisgIDwvdGVzdHN1aXRlPgorICA8
dGVzdHN1aXRlIG5hbWU9IlR5cGVkVGVzdC8xIiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2Fi
bGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNUeXBl
UGFyYW1BdHRyaWJ1dGUiIHR5cGVfcGFyYW09IioiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFz
c25hbWU9IlR5cGVkVGVzdC8xIiAvPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1l
PSJTaW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8wIiB0ZXN0cz0iMSIgZmFpbHVyZXM9
IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1l
PSJIYXNUeXBlUGFyYW1BdHRyaWJ1dGUiIHR5cGVfcGFyYW09IioiIHN0YXR1cz0icnVuIiB0aW1l
PSIqIiBjbGFzc25hbWU9IlNpbmdsZS9UeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLzAiIC8+Cisg
IDwvdGVzdHN1aXRlPgorICA8dGVzdHN1aXRlIG5hbWU9IlNpbmdsZS9UeXBlUGFyYW1ldGVyaXpl
ZFRlc3RDYXNlLzEiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0i
MCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNlIG5hbWU9Ikhhc1R5cGVQYXJhbUF0dHJpYnV0ZSIg
dHlwZV9wYXJhbT0iKiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1R5
cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMSIgLz4KICAgPC90ZXN0c3VpdGU+CiA8L3Rlc3RzdWl0
ZXM+IiIiICUgeydzdGFjayc6IFNUQUNLX1RSQUNFX1RFTVBMQVRFfQogCitFWFBFQ1RFRF9GSUxU
RVJFRF9URVNUX1hNTCA9ICIiIjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+
Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9
IjAiIHRpbWU9IioiCisgICAgICAgICAgICB0aW1lc3RhbXA9IioiIG5hbWU9IkFsbFRlc3RzIiBh
ZF9ob2NfcHJvcGVydHk9IjQyIj4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJTdWNjZXNzZnVsVGVzdCIg
dGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIKKyAgICAgICAgICAgICBlcnJvcnM9
IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJTdWNjZWVkcyIgc3RhdHVzPSJydW4i
IHRpbWU9IioiIGNsYXNzbmFtZT0iU3VjY2Vzc2Z1bFRlc3QiLz4KKyAgPC90ZXN0c3VpdGU+Cis8
L3Rlc3RzdWl0ZXM+IiIiCisKK0VYUEVDVEVEX1NIQVJERURfVEVTVF9YTUwgPSAiIiI8P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHRlc3RzdWl0ZXMgdGVzdHM9IjMiIGZh
aWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiB0aW1lc3RhbXA9Iioi
IG5hbWU9IkFsbFRlc3RzIiBhZF9ob2NfcHJvcGVydHk9IjQyIj4KKyAgPHRlc3RzdWl0ZSBuYW1l
PSJTdWNjZXNzZnVsVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJy
b3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iU3VjY2VlZHMiIHN0YXR1cz0i
cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlN1Y2Nlc3NmdWxUZXN0Ii8+CisgIDwvdGVzdHN1aXRl
PgorICA8dGVzdHN1aXRlIG5hbWU9Ik5vRml4dHVyZVRlc3QiIHRlc3RzPSIxIiBmYWlsdXJlcz0i
MCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgIDx0ZXN0Y2FzZSBuYW1l
PSJSZWNvcmRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTm9GaXh0
dXJlVGVzdCI+CisgICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgICA8cHJvcGVydHkgbmFtZT0i
a2V5IiB2YWx1ZT0iMSIvPgorICAgICAgIDwvcHJvcGVydGllcz4KKyAgICAgPC90ZXN0Y2FzZT4K
KyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0
IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9Iioi
PgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJBbm90aGVyVGVzdFRoYXRIYXNWYWx1ZVBhcmFtQXR0cmli
dXRlLzEiIHZhbHVlX3BhcmFtPSI0MiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0i
U2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiAvPgorICA8L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1aXRlcz4i
IiIKIAogRVhQRUNURURfRU1QVFlfWE1MID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0iVVRGLTgiPz4KLTx0ZXN0c3VpdGVzIHRlc3RzPSIwIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9
IjAiIGVycm9ycz0iMCIgdGltZT0iKiIgbmFtZT0iQWxsVGVzdHMiPgorPHRlc3RzdWl0ZXMgdGVz
dHM9IjAiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIgorICAg
ICAgICAgICAgdGltZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0cyI+CiA8L3Rlc3RzdWl0ZXM+IiIi
CiAKK0dURVNUX1BST0dSQU1fUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFi
bGVQYXRoKEdURVNUX1BST0dSQU1fTkFNRSkKKworU1VQUE9SVFNfVFlQRURfVEVTVFMgPSAnVHlw
ZWRUZXN0JyBpbiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgW0dURVNUX1BST0dS
QU1fUEFUSCwgR1RFU1RfTElTVF9URVNUU19GTEFHXSwgY2FwdHVyZV9zdGRlcnI9RmFsc2UpLm91
dHB1dAorCiAKIGNsYXNzIEdUZXN0WE1MT3V0cHV0VW5pdFRlc3QoZ3Rlc3RfeG1sX3Rlc3RfdXRp
bHMuR1Rlc3RYTUxUZXN0Q2FzZSk6CiAgICIiIgogICBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0
J3MgWE1MIG91dHB1dCBmdW5jdGlvbmFsaXR5LgogICAiIiIKIAotICBkZWYgdGVzdE5vbkVtcHR5
WG1sT3V0cHV0KHNlbGYpOgotICAgICIiIgotICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBn
ZW5lcmF0ZXMgYSBub24tZW1wdHkgWE1MIG91dHB1dCwgYW5kCi0gICAgdGVzdHMgdGhhdCB0aGUg
WE1MIG91dHB1dCBpcyBleHBlY3RlZC4KLSAgICAiIiIKLSAgICBzZWxmLl9UZXN0WG1sT3V0cHV0
KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQRUNURURfTk9OX0VNUFRZX1hNTCwgMSkKKyAgIyBUaGlz
IHRlc3QgY3VycmVudGx5IGJyZWFrcyBvbiBwbGF0Zm9ybXMgdGhhdCBkbyBub3Qgc3VwcG9ydCB0
eXBlZCBhbmQKKyAgIyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIHNvIHdlIGRvbid0IHJ1biBp
dCB1bmRlciB0aGVtLgorICBpZiBTVVBQT1JUU19UWVBFRF9URVNUUzoKKyAgICBkZWYgdGVzdE5v
bkVtcHR5WG1sT3V0cHV0KHNlbGYpOgorICAgICAgIiIiCisgICAgICBSdW5zIGEgdGVzdCBwcm9n
cmFtIHRoYXQgZ2VuZXJhdGVzIGEgbm9uLWVtcHR5IFhNTCBvdXRwdXQsIGFuZAorICAgICAgdGVz
dHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBleHBlY3RlZC4KKyAgICAgICIiIgorICAgICAgc2Vs
Zi5fVGVzdFhtbE91dHB1dChHVEVTVF9QUk9HUkFNX05BTUUsIEVYUEVDVEVEX05PTl9FTVBUWV9Y
TUwsIDEpCiAKICAgZGVmIHRlc3RFbXB0eVhtbE91dHB1dChzZWxmKToKLSAgICAiIiIKKyAgICAi
IiJWZXJpZmllcyBYTUwgb3V0cHV0IGZvciBhIEdvb2dsZSBUZXN0IGJpbmFyeSB3aXRob3V0IGFj
dHVhbCB0ZXN0cy4KKwogICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4g
ZW1wdHkgWE1MIG91dHB1dCwgYW5kCiAgICAgdGVzdHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBl
eHBlY3RlZC4KICAgICAiIiIKIAotICAgIHNlbGYuX1Rlc3RYbWxPdXRwdXQoImd0ZXN0X25vX3Rl
c3RfdW5pdHRlc3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNURURfRU1QVFlfWE1M
LCAwKQorICAgIHNlbGYuX1Rlc3RYbWxPdXRwdXQoJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnLCBF
WFBFQ1RFRF9FTVBUWV9YTUwsIDApCisKKyAgZGVmIHRlc3RUaW1lc3RhbXBWYWx1ZShzZWxmKToK
KyAgICAiIiJDaGVja3Mgd2hldGhlciB0aGUgdGltZXN0YW1wIGF0dHJpYnV0ZSBpbiB0aGUgWE1M
IG91dHB1dCBpcyB2YWxpZC4KKworICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0
ZXMgYW4gZW1wdHkgWE1MIG91dHB1dCwgYW5kIGNoZWNrcyBpZgorICAgIHRoZSB0aW1lc3RhbXAg
YXR0cmlidXRlIGluIHRoZSB0ZXN0c3VpdGVzIHRhZyBpcyB2YWxpZC4KKyAgICAiIiIKKyAgICBh
Y3R1YWwgPSBzZWxmLl9HZXRYbWxPdXRwdXQoJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnLCBbXSwg
e30sIDApCisgICAgZGF0ZV90aW1lX3N0ciA9IGFjdHVhbC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0
cmlidXRlTm9kZSgndGltZXN0YW1wJykudmFsdWUKKyAgICAjIGRhdGV0aW1lLnN0cnB0aW1lKCkg
aXMgb25seSBhdmFpbGFibGUgaW4gUHl0aG9uIDIuNSsgc28gd2UgaGF2ZSB0bworICAgICMgcGFy
c2UgdGhlIGV4cGVjdGVkIGRhdGV0aW1lIG1hbnVhbGx5LgorICAgIG1hdGNoID0gcmUubWF0Y2go
cicoXGQrKS0oXGRcZCktKFxkXGQpVChcZFxkKTooXGRcZCk6KFxkXGQpJywgZGF0ZV90aW1lX3N0
cikKKyAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgIHJlLm1hdGNoLAorICAgICAgICAnWE1M
IGRhdGV0dGltZSBzdHJpbmcgJXMgaGFzIGluY29ycmVjdCBmb3JtYXQnICUgZGF0ZV90aW1lX3N0
cikKKyAgICBkYXRlX3RpbWVfZnJvbV94bWwgPSBkYXRldGltZS5kYXRldGltZSgKKyAgICAgICAg
eWVhcj1pbnQobWF0Y2guZ3JvdXAoMSkpLCBtb250aD1pbnQobWF0Y2guZ3JvdXAoMikpLAorICAg
ICAgICBkYXk9aW50KG1hdGNoLmdyb3VwKDMpKSwgaG91cj1pbnQobWF0Y2guZ3JvdXAoNCkpLAor
ICAgICAgICBtaW51dGU9aW50KG1hdGNoLmdyb3VwKDUpKSwgc2Vjb25kPWludChtYXRjaC5ncm91
cCg2KSkpCisKKyAgICB0aW1lX2RlbHRhID0gYWJzKGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpIC0g
ZGF0ZV90aW1lX2Zyb21feG1sKQorICAgICMgdGltZXN0YW1wIHZhbHVlIHNob3VsZCBiZSBuZWFy
IHRoZSBjdXJyZW50IGxvY2FsIHRpbWUKKyAgICBzZWxmLmFzc2VydFRydWUodGltZV9kZWx0YSA8
IGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPTYwMCksCisgICAgICAgICAgICAgICAgICAgICd0
aW1lX2RlbHRhIGlzICVzJyAlIHRpbWVfZGVsdGEpCisgICAgYWN0dWFsLnVubGluaygpCiAKICAg
ZGVmIHRlc3REZWZhdWx0T3V0cHV0RmlsZShzZWxmKToKICAgICAiIiIKQEAgLTE0Miw3ICsyNjMs
NyBAQCBjbGFzcyBHVGVzdFhNTE91dHB1dFVuaXRUZXN0KGd0ZXN0X3htbF90ZXN0X3V0aWxzLkdU
ZXN0WE1MVGVzdENhc2UpOgogICAgIG91dHB1dF9maWxlID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rl
c3RfdXRpbHMuR2V0VGVtcERpcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdU
RVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUpCiAgICAgZ3Rlc3RfcHJvZ19wYXRoID0gZ3Rlc3RfdGVz
dF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCi0gICAgICAgICJndGVzdF9ub190ZXN0X3Vu
aXR0ZXN0IikKKyAgICAgICAgJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnKQogICAgIHRyeToKICAg
ICAgIG9zLnJlbW92ZShvdXRwdXRfZmlsZSkKICAgICBleGNlcHQgT1NFcnJvciwgZToKQEAgLTE1
MCw3ICsyNzEsNyBAQCBjbGFzcyBHVGVzdFhNTE91dHB1dFVuaXRUZXN0KGd0ZXN0X3htbF90ZXN0
X3V0aWxzLkdUZXN0WE1MVGVzdENhc2UpOgogICAgICAgICByYWlzZQogCiAgICAgcCA9IGd0ZXN0
X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKLSAgICAgICAgW2d0ZXN0X3Byb2dfcGF0aCwgIiVzPXht
bCIgJSBHVEVTVF9PVVRQVVRfRkxBR10sCisgICAgICAgIFtndGVzdF9wcm9nX3BhdGgsICclcz14
bWwnICUgR1RFU1RfT1VUUFVUX0ZMQUddLAogICAgICAgICB3b3JraW5nX2Rpcj1ndGVzdF90ZXN0
X3V0aWxzLkdldFRlbXBEaXIoKSkKICAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCiAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoMCwgcC5leGl0X2NvZGUpCkBAIC0xNjMsNjAgKzI4NCw5OCBAQCBjbGFz
cyBHVGVzdFhNTE91dHB1dFVuaXRUZXN0KGd0ZXN0X3htbF90ZXN0X3V0aWxzLkdUZXN0WE1MVGVz
dENhc2UpOgogICAgICIiIgogCiAgICAgeG1sX3BhdGggPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVz
dF91dGlscy5HZXRUZW1wRGlyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1Rf
UFJPR1JBTV9OQU1FICsgIm91dC54bWwiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdU
RVNUX1BST0dSQU1fTkFNRSArICdvdXQueG1sJykKICAgICBpZiBvcy5wYXRoLmlzZmlsZSh4bWxf
cGF0aCk6CiAgICAgICBvcy5yZW1vdmUoeG1sX3BhdGgpCiAKLSAgICBndGVzdF9wcm9nX3BhdGgg
PSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aChHVEVTVF9QUk9HUkFNX05B
TUUpCi0KLSAgICBjb21tYW5kID0gW2d0ZXN0X3Byb2dfcGF0aCwKLSAgICAgICAgICAgICAgICIl
cz14bWw6JXMiICUgKEdURVNUX09VVFBVVF9GTEFHLCB4bWxfcGF0aCksCi0gICAgICAgICAgICAg
ICAiLS1zaHV0X2Rvd25feG1sIl0KKyAgICBjb21tYW5kID0gW0dURVNUX1BST0dSQU1fUEFUSCwK
KyAgICAgICAgICAgICAgICclcz14bWw6JXMnICUgKEdURVNUX09VVFBVVF9GTEFHLCB4bWxfcGF0
aCksCisgICAgICAgICAgICAgICAnLS1zaHV0X2Rvd25feG1sJ10KICAgICBwID0gZ3Rlc3RfdGVz
dF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCiAgICAgaWYgcC50ZXJtaW5hdGVkX2J5X3NpZ25h
bDoKLSAgICAgIHNlbGYuYXNzZXJ0XyhGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAiJXMgd2Fz
IGtpbGxlZCBieSBzaWduYWwgJWQiICUgKGd0ZXN0X3Byb2dfbmFtZSwgcC5zaWduYWwpKQorICAg
ICAgIyBwLnNpZ25hbCBpcyBhdmFpbGFibGUgb25seSBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFs
IGlzIFRydWUuCisgICAgICBzZWxmLmFzc2VydEZhbHNlKAorICAgICAgICAgIHAudGVybWluYXRl
ZF9ieV9zaWduYWwsCisgICAgICAgICAgJyVzIHdhcyBraWxsZWQgYnkgc2lnbmFsICVkJyAlIChH
VEVTVF9QUk9HUkFNX05BTUUsIHAuc2lnbmFsKSkKICAgICBlbHNlOgogICAgICAgc2VsZi5hc3Nl
cnRfKHAuZXhpdGVkKQogICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwgcC5leGl0X2NvZGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyBleGl0ZWQgd2l0aCBjb2RlICVzLCB3aGljaCBk
b2Vzbid0IG1hdGNoICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZXhwZWN0ZWQgZXhp
dCBjb2RlICVzLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgZXhwZWN0ZWQgZXhpdCBj
b2RlICVzLicKICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvbW1hbmQsIHAuZXhpdF9jb2Rl
LCAxKSkKIAogICAgIHNlbGYuYXNzZXJ0Xyhub3Qgb3MucGF0aC5pc2ZpbGUoeG1sX3BhdGgpKQog
CisgIGRlZiB0ZXN0RmlsdGVyZWRUZXN0WG1sT3V0cHV0KHNlbGYpOgorICAgICIiIlZlcmlmaWVz
IFhNTCBvdXRwdXQgd2hlbiBhIGZpbHRlciBpcyBhcHBsaWVkLgogCi0gIGRlZiBfVGVzdFhtbE91
dHB1dChzZWxmLCBndGVzdF9wcm9nX25hbWUsIGV4cGVjdGVkX3htbCwgZXhwZWN0ZWRfZXhpdF9j
b2RlKToKKyAgICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRoYXQgZXhlY3V0ZXMgb25seSBzb21lIHRl
c3RzIGFuZCB2ZXJpZmllcyB0aGF0CisgICAgbm9uLXNlbGVjdGVkIHRlc3RzIGRvIG5vdCBzaG93
IHVwIGluIHRoZSBYTUwgb3V0cHV0LgogICAgICIiIgotICAgIEFzc2VydHMgdGhhdCB0aGUgWE1M
IGRvY3VtZW50IGdlbmVyYXRlZCBieSBydW5uaW5nIHRoZSBwcm9ncmFtCi0gICAgZ3Rlc3RfcHJv
Z19uYW1lIG1hdGNoZXMgZXhwZWN0ZWRfeG1sLCBhIHN0cmluZyBjb250YWluaW5nIGFub3RoZXIK
LSAgICBYTUwgZG9jdW1lbnQuICBGdXJ0aGVybW9yZSwgdGhlIHByb2dyYW0ncyBleGl0IGNvZGUg
bXVzdCBiZQotICAgIGV4cGVjdGVkX2V4aXRfY29kZS4KKworICAgIHNlbGYuX1Rlc3RYbWxPdXRw
dXQoR1RFU1RfUFJPR1JBTV9OQU1FLCBFWFBFQ1RFRF9GSUxURVJFRF9URVNUX1hNTCwgMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2FyZ3M9Wyclcz1TdWNjZXNzZnVsVGVzdC4qJyAl
IEdURVNUX0ZJTFRFUl9GTEFHXSkKKworICBkZWYgdGVzdFNoYXJkZWRUZXN0WG1sT3V0cHV0KHNl
bGYpOgorICAgICIiIlZlcmlmaWVzIFhNTCBvdXRwdXQgd2hlbiBydW4gdXNpbmcgbXVsdGlwbGUg
c2hhcmRzLgorCisgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGV4ZWN1dGVzIG9ubHkgb25l
IHNoYXJkIGFuZCB2ZXJpZmllcyB0aGF0IHRlc3RzCisgICAgZnJvbSBvdGhlciBzaGFyZHMgZG8g
bm90IHNob3cgdXAgaW4gdGhlIFhNTCBvdXRwdXQuCisgICAgIiIiCisKKyAgICBzZWxmLl9UZXN0
WG1sT3V0cHV0KAorICAgICAgICBHVEVTVF9QUk9HUkFNX05BTUUsCisgICAgICAgIEVYUEVDVEVE
X1NIQVJERURfVEVTVF9YTUwsCisgICAgICAgIDAsCisgICAgICAgIGV4dHJhX2Vudj17U0hBUkRf
SU5ERVhfRU5WX1ZBUjogJzAnLAorICAgICAgICAgICAgICAgICAgIFRPVEFMX1NIQVJEU19FTlZf
VkFSOiAnMTAnfSkKKworICBkZWYgX0dldFhtbE91dHB1dChzZWxmLCBndGVzdF9wcm9nX25hbWUs
IGV4dHJhX2FyZ3MsIGV4dHJhX2VudiwKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXhp
dF9jb2RlKToKKyAgICAiIiIKKyAgICBSZXR1cm5zIHRoZSB4bWwgb3V0cHV0IGdlbmVyYXRlZCBi
eSBydW5uaW5nIHRoZSBwcm9ncmFtIGd0ZXN0X3Byb2dfbmFtZS4KKyAgICBGdXJ0aGVybW9yZSwg
dGhlIHByb2dyYW0ncyBleGl0IGNvZGUgbXVzdCBiZSBleHBlY3RlZF9leGl0X2NvZGUuCiAgICAg
IiIiCiAgICAgeG1sX3BhdGggPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1w
RGlyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Rlc3RfcHJvZ19uYW1lICsgIm91
dC54bWwiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0ZXN0X3Byb2dfbmFtZSArICdv
dXQueG1sJykKICAgICBndGVzdF9wcm9nX3BhdGggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RF
eGVjdXRhYmxlUGF0aChndGVzdF9wcm9nX25hbWUpCiAKLSAgICBjb21tYW5kID0gW2d0ZXN0X3By
b2dfcGF0aCwgIiVzPXhtbDolcyIgJSAoR1RFU1RfT1VUUFVUX0ZMQUcsIHhtbF9wYXRoKV0KLSAg
ICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCisgICAgY29tbWFuZCA9
IChbZ3Rlc3RfcHJvZ19wYXRoLCAnJXM9eG1sOiVzJyAlIChHVEVTVF9PVVRQVVRfRkxBRywgeG1s
X3BhdGgpXSArCisgICAgICAgICAgICAgICBleHRyYV9hcmdzKQorICAgIGVudmlyb25fY29weSA9
IG9zLmVudmlyb24uY29weSgpCisgICAgaWYgZXh0cmFfZW52OgorICAgICAgZW52aXJvbl9jb3B5
LnVwZGF0ZShleHRyYV9lbnYpCisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhj
b21tYW5kLCBlbnY9ZW52aXJvbl9jb3B5KQorCiAgICAgaWYgcC50ZXJtaW5hdGVkX2J5X3NpZ25h
bDoKICAgICAgIHNlbGYuYXNzZXJ0XyhGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAiJXMgd2Fz
IGtpbGxlZCBieSBzaWduYWwgJWQiICUgKGd0ZXN0X3Byb2dfbmFtZSwgcC5zaWduYWwpKQorICAg
ICAgICAgICAgICAgICAgICclcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAlZCcgJSAoZ3Rlc3RfcHJv
Z19uYW1lLCBwLnNpZ25hbCkpCiAgICAgZWxzZToKICAgICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRl
ZCkKICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX2V4aXRfY29kZSwgcC5leGl0X2Nv
ZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyBleGl0ZWQgd2l0aCBjb2RlICVzLCB3
aGljaCBkb2Vzbid0IG1hdGNoICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZXhwZWN0
ZWQgZXhpdCBjb2RlICVzLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgZXhwZWN0ZWQg
ZXhpdCBjb2RlICVzLicKICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvbW1hbmQsIHAuZXhp
dF9jb2RlLCBleHBlY3RlZF9leGl0X2NvZGUpKQorICAgIGFjdHVhbCA9IG1pbmlkb20ucGFyc2Uo
eG1sX3BhdGgpCisgICAgcmV0dXJuIGFjdHVhbAogCisgIGRlZiBfVGVzdFhtbE91dHB1dChzZWxm
LCBndGVzdF9wcm9nX25hbWUsIGV4cGVjdGVkX3htbCwKKyAgICAgICAgICAgICAgICAgICAgIGV4
cGVjdGVkX2V4aXRfY29kZSwgZXh0cmFfYXJncz1Ob25lLCBleHRyYV9lbnY9Tm9uZSk6CisgICAg
IiIiCisgICAgQXNzZXJ0cyB0aGF0IHRoZSBYTUwgZG9jdW1lbnQgZ2VuZXJhdGVkIGJ5IHJ1bm5p
bmcgdGhlIHByb2dyYW0KKyAgICBndGVzdF9wcm9nX25hbWUgbWF0Y2hlcyBleHBlY3RlZF94bWws
IGEgc3RyaW5nIGNvbnRhaW5pbmcgYW5vdGhlcgorICAgIFhNTCBkb2N1bWVudC4gIEZ1cnRoZXJt
b3JlLCB0aGUgcHJvZ3JhbSdzIGV4aXQgY29kZSBtdXN0IGJlCisgICAgZXhwZWN0ZWRfZXhpdF9j
b2RlLgorICAgICIiIgorCisgICAgYWN0dWFsID0gc2VsZi5fR2V0WG1sT3V0cHV0KGd0ZXN0X3By
b2dfbmFtZSwgZXh0cmFfYXJncyBvciBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXh0cmFfZW52IG9yIHt9LCBleHBlY3RlZF9leGl0X2NvZGUpCiAgICAgZXhwZWN0ZWQgPSBt
aW5pZG9tLnBhcnNlU3RyaW5nKGV4cGVjdGVkX3htbCkKLSAgICBhY3R1YWwgICA9IG1pbmlkb20u
cGFyc2UoeG1sX3BhdGgpCiAgICAgc2VsZi5Ob3JtYWxpemVYbWwoYWN0dWFsLmRvY3VtZW50RWxl
bWVudCkKICAgICBzZWxmLkFzc2VydEVxdWl2YWxlbnROb2RlcyhleHBlY3RlZC5kb2N1bWVudEVs
ZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsLmRvY3VtZW50RWxl
bWVudCkKICAgICBleHBlY3RlZC51bmxpbmsoKQotICAgIGFjdHVhbCAgLnVubGluaygpCi0KKyAg
ICBhY3R1YWwudW5saW5rKCkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0
ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91
bml0dGVzdF8uY2MKaW5kZXggZmMwN2VmNDZiZDY2N2FhOTJlNWRhZjdmMjAyZWZjZDc2MzY2YmY4
YS4uMmVlODgzODAwNWVlZWMyMzU3MWJhZTM4OWM3OTI2OThjMzBjNGQ1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5p
dHRlc3RfLmNjCkBAIC0yNyw4ICsyNyw2IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKLS8vIEF1dGhvcjogZWVmYWNtQGdtYWlsLmNvbSAoU2VhbiBNY2FmZWUpCi0KIC8vIFVu
aXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QgWE1MIG91dHB1dC4KIC8vCiAvLyBBIHVzZXIgY2FuIHNw
ZWNpZnkgWE1MIG91dHB1dCBpbiBhIEdvb2dsZSBUZXN0IHByb2dyYW0gdG8gcnVuIHZpYQpAQCAt
MzgsMTMgKzM2LDE2IEBACiAvLyBUaGlzIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQ
eXRob24gdW5pdCB0ZXN0LiAgRG9uJ3QgcnVuIGl0CiAvLyBkaXJlY3RseS4KIAotI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogdXNpbmcgOjp0ZXN0
aW5nOjpJbml0R29vZ2xlVGVzdDsKIHVzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJz
OwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtOwogdXNpbmcgOjp0ZXN0aW5nOjpVbml0
VGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6VmFsdWVzOwog
Ci1jbGFzcyBTdWNjZXNzZnVsVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIFN1
Y2Nlc3NmdWxUZXN0IDogcHVibGljIFRlc3QgewogfTsKIAogVEVTVF9GKFN1Y2Nlc3NmdWxUZXN0
LCBTdWNjZWVkcykgewpAQCAtNTIsMTQgKzUzLDE0IEBAIFRFU1RfRihTdWNjZXNzZnVsVGVzdCwg
U3VjY2VlZHMpIHsKICAgQVNTRVJUX0VRKDEsIDEpOwogfQogCi1jbGFzcyBGYWlsZWRUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgRmFpbGVkVGVzdCA6IHB1YmxpYyBUZXN0IHsK
IH07CiAKIFRFU1RfRihGYWlsZWRUZXN0LCBGYWlscykgewogICBBU1NFUlRfRVEoMSwgMik7CiB9
CiAKLWNsYXNzIERpc2FibGVkVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIERp
c2FibGVkVGVzdCA6IHB1YmxpYyBUZXN0IHsKIH07CiAKIFRFU1RfRihEaXNhYmxlZFRlc3QsIERJ
U0FCTEVEX3Rlc3Rfbm90X3J1bikgewpAQCAtOTEsNyArOTIsMTAgQEAgVEVTVChJbnZhbGlkQ2hh
cmFjdGVyc1Rlc3QsIEludmFsaWRDaGFyYWN0ZXJzSW5NZXNzYWdlKSB7CiAgIEZBSUwoKSA8PCAi
SW52YWxpZCBjaGFyYWN0ZXJzIGluIGJyYWNrZXRzIFtceDFceDJdIjsKIH0KIAotY2xhc3MgUHJv
cGVydHlSZWNvcmRpbmdUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgUHJvcGVy
dHlSZWNvcmRpbmdUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQg
U2V0VXBUZXN0Q2FzZSgpIHsgUmVjb3JkUHJvcGVydHkoIlNldFVwVGVzdENhc2UiLCAieWVzIik7
IH0KKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsgUmVjb3JkUHJvcGVydHkoIlRl
YXJEb3duVGVzdENhc2UiLCAiYXllIik7IH0KIH07CiAKIFRFU1RfRihQcm9wZXJ0eVJlY29yZGlu
Z1Rlc3QsIE9uZVByb3BlcnR5KSB7CkBAIC0xMTcsMTIgKzEyMSwxMiBAQCBURVNUKE5vRml4dHVy
ZVRlc3QsIFJlY29yZFByb3BlcnR5KSB7CiAgIFJlY29yZFByb3BlcnR5KCJrZXkiLCAiMSIpOwog
fQogCi12b2lkIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFByb3BlcnR5KGNvbnN0IGNo
YXIqIGtleSwgaW50IHZhbHVlKSB7Cit2b2lkIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29y
ZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGludCB2YWx1ZSkgewogICB0ZXN0aW5n
OjpUZXN0OjpSZWNvcmRQcm9wZXJ0eShrZXksIHZhbHVlKTsKIH0KIAotdm9pZCBFeHRlcm5hbFV0
aWxpdHlUaGF0Q2FsbHNSZWNvcmRQcm9wZXJ0eShjb25zdCBjaGFyKiBrZXksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHZhbHVlKSB7Cit2
b2lkIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3Ry
aW5nJiBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkgewogICB0ZXN0aW5nOjpUZXN0OjpSZWNvcmRQcm9wZXJ0
eShrZXksIHZhbHVlKTsKIH0KIApAQCAtMTM0LDYgKzEzOCwzNSBAQCBURVNUKE5vRml4dHVyZVRl
c3QsIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFN0cmluZ1ZhbHVlZFByb3BlcnR5KSB7
CiAgIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFByb3BlcnR5KCJrZXlfZm9yX3V0aWxp
dHlfc3RyaW5nIiwgIjEiKTsKIH0KIAorLy8gVmVyaWZpZXMgdGhhdCB0aGUgdGVzdCBwYXJhbWV0
ZXIgdmFsdWUgaXMgb3V0cHV0IGluIHRoZSAndmFsdWVfcGFyYW0nCisvLyBYTUwgYXR0cmlidXRl
IGZvciB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorY2xhc3MgVmFsdWVQYXJhbVRlc3QgOiBw
dWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHt9OworVEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBIYXNW
YWx1ZVBhcmFtQXR0cmlidXRlKSB7fQorVEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBBbm90aGVyVGVz
dFRoYXRIYXNWYWx1ZVBhcmFtQXR0cmlidXRlKSB7fQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ao
U2luZ2xlLCBWYWx1ZVBhcmFtVGVzdCwgVmFsdWVzKDMzLCA0MikpOworCisjaWYgR1RFU1RfSEFT
X1RZUEVEX1RFU1QKKy8vIFZlcmlmaWVzIHRoYXQgdGhlIHR5cGUgcGFyYW1ldGVyIG5hbWUgaXMg
b3V0cHV0IGluIHRoZSAndHlwZV9wYXJhbScKKy8vIFhNTCBhdHRyaWJ1dGUgZm9yIHR5cGVkIHRl
c3RzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFR5cGVkVGVzdCA6IHB1YmxpYyBUZXN0
IHt9OwordHlwZWRlZiB0ZXN0aW5nOjpUeXBlczxpbnQsIGxvbmc+IFR5cGVkVGVzdFR5cGVzOwor
VFlQRURfVEVTVF9DQVNFKFR5cGVkVGVzdCwgVHlwZWRUZXN0VHlwZXMpOworVFlQRURfVEVTVChU
eXBlZFRlc3QsIEhhc1R5cGVQYXJhbUF0dHJpYnV0ZSkge30KKyNlbmRpZgorCisjaWYgR1RFU1Rf
SEFTX1RZUEVEX1RFU1RfUAorLy8gVmVyaWZpZXMgdGhhdCB0aGUgdHlwZSBwYXJhbWV0ZXIgbmFt
ZSBpcyBvdXRwdXQgaW4gdGhlICd0eXBlX3BhcmFtJworLy8gWE1MIGF0dHJpYnV0ZSBmb3IgdHlw
ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFR5cGVQ
YXJhbWV0ZXJpemVkVGVzdENhc2UgOiBwdWJsaWMgVGVzdCB7fTsKK1RZUEVEX1RFU1RfQ0FTRV9Q
KFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UpOworVFlQRURfVEVTVF9QKFR5cGVQYXJhbWV0ZXJp
emVkVGVzdENhc2UsIEhhc1R5cGVQYXJhbUF0dHJpYnV0ZSkge30KK1JFR0lTVEVSX1RZUEVEX1RF
U1RfQ0FTRV9QKFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UsIEhhc1R5cGVQYXJhbUF0dHJpYnV0
ZSk7Cit0eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPGludCwgbG9uZz4gVHlwZVBhcmFtZXRlcml6ZWRU
ZXN0Q2FzZVR5cGVzOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoU2luZ2xlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2VUeXBl
cyk7CisjZW5kaWYKKwogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CiAgIEluaXRH
b29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKIApAQCAtMTQxLDUgKzE3NCw2IEBAIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyKiogYXJndikgewogICAgIFRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJz
ID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpOwogICAgIGRlbGV0ZSBsaXN0
ZW5lcnMuUmVsZWFzZShsaXN0ZW5lcnMuZGVmYXVsdF94bWxfZ2VuZXJhdG9yKCkpOwogICB9Cisg
IHRlc3Rpbmc6OlRlc3Q6OlJlY29yZFByb3BlcnR5KCJhZF9ob2NfcHJvcGVydHkiLCAiNDIiKTsK
ICAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF90ZXN0X3V0aWxzLnB5CmluZGV4IGM4M2MzYjdlYTc5YjJk
NzYyZWVkNjY1ZTJkNjFkZjhiOWVhMDg0NDMuLjFlMDM1ODU5MmZiMDA4NGYwYTg5YzM0MzZmZjc1
MTc0ODY4MjdhY2QgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfeG1sX3Rlc3RfdXRpbHMucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF94bWxfdGVzdF91dGlscy5weQpAQCAtMSw1ICsxLDMgQEAKLSMhL3Vzci9iaW4vZW52IHB5
dGhvbgotIwogIyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KICMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICMKQEAgLTMxLDE2ICsyOSwxMSBAQAogCiAiIiJVbml0IHRlc3QgdXRpbGl0aWVzIGZv
ciBndGVzdF94bWxfb3V0cHV0IiIiCiAKLV9fYXV0aG9yX18gPSAnZWVmYWNtQGdtYWlsLmNvbSAo
U2VhbiBNY2FmZWUpJwotCiBpbXBvcnQgcmUKIGZyb20geG1sLmRvbSBpbXBvcnQgbWluaWRvbSwg
Tm9kZQotCiBpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwogCi0KLUdURVNUX09VVFBVVF9GTEFHICAg
ICAgICAgPSAiLS1ndGVzdF9vdXRwdXQiCi1HVEVTVF9ERUZBVUxUX09VVFBVVF9GSUxFID0gInRl
c3RfZGV0YWlsLnhtbCIKK0dURVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUgPSAndGVzdF9kZXRhaWwu
eG1sJwogCiBjbGFzcyBHVGVzdFhNTFRlc3RDYXNlKGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2Up
OgogICAiIiIKQEAgLTU4LDggKzUxLDkgQEAgY2xhc3MgR1Rlc3RYTUxUZXN0Q2FzZShndGVzdF90
ZXN0X3V0aWxzLlRlc3RDYXNlKToKICAgICAqICBJdCBoYXMgdGhlIHNhbWUgdGFnIG5hbWUgYXMg
ZXhwZWN0ZWRfbm9kZS4KICAgICAqICBJdCBoYXMgdGhlIHNhbWUgc2V0IG9mIGF0dHJpYnV0ZXMg
YXMgZXhwZWN0ZWRfbm9kZSwgZWFjaCB3aXRoCiAgICAgICAgdGhlIHNhbWUgdmFsdWUgYXMgdGhl
IGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIG9mIGV4cGVjdGVkX25vZGUuCi0gICAgICAgQW4gZXhj
ZXB0aW9uIGlzIGFueSBhdHRyaWJ1dGUgbmFtZWQgInRpbWUiLCB3aGljaCBuZWVkcyBvbmx5IGJl
Ci0gICAgICAgY29udmVydGlibGUgdG8gYSBmbG9hdGluZy1wb2ludCBudW1iZXIuCisgICAgICAg
RXhjZXB0aW9ucyBhcmUgYW55IGF0dHJpYnV0ZSBuYW1lZCAidGltZSIsIHdoaWNoIG5lZWRzIG9u
bHkgYmUKKyAgICAgICBjb252ZXJ0aWJsZSB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBhbmQg
YW55IGF0dHJpYnV0ZSBuYW1lZAorICAgICAgICJ0eXBlX3BhcmFtIiB3aGljaCBvbmx5IGhhcyB0
byBiZSBub24tZW1wdHkuCiAgICAgKiAgSXQgaGFzIGFuIGVxdWl2YWxlbnQgc2V0IG9mIGNoaWxk
IG5vZGVzIChpbmNsdWRpbmcgZWxlbWVudHMgYW5kCiAgICAgICAgQ0RBVEEgc2VjdGlvbnMpIGFz
IGV4cGVjdGVkX25vZGUuICBOb3RlIHRoYXQgd2UgaWdub3JlIHRoZQogICAgICAgIG9yZGVyIG9m
IHRoZSBjaGlsZHJlbiBhcyB0aGV5IGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSBpbiBhbnkKQEAg
LTc5LDIzICs3MywyNyBAQCBjbGFzcyBHVGVzdFhNTFRlc3RDYXNlKGd0ZXN0X3Rlc3RfdXRpbHMu
VGVzdENhc2UpOgogICAgIGFjdHVhbF9hdHRyaWJ1dGVzICAgPSBhY3R1YWxfbm9kZSAgLmF0dHJp
YnV0ZXMKICAgICBzZWxmLmFzc2VydEVxdWFscygKICAgICAgICAgZXhwZWN0ZWRfYXR0cmlidXRl
cy5sZW5ndGgsIGFjdHVhbF9hdHRyaWJ1dGVzLmxlbmd0aCwKLSAgICAgICAgImF0dHJpYnV0ZSBu
dW1iZXJzIGRpZmZlciBpbiBlbGVtZW50ICIgKyBhY3R1YWxfbm9kZS50YWdOYW1lKQorICAgICAg
ICAnYXR0cmlidXRlIG51bWJlcnMgZGlmZmVyIGluIGVsZW1lbnQgJXM6XG5FeHBlY3RlZDogJXJc
bkFjdHVhbDogJXInICUgKAorICAgICAgICAgICAgYWN0dWFsX25vZGUudGFnTmFtZSwgZXhwZWN0
ZWRfYXR0cmlidXRlcy5rZXlzKCksCisgICAgICAgICAgICBhY3R1YWxfYXR0cmlidXRlcy5rZXlz
KCkpKQogICAgIGZvciBpIGluIHJhbmdlKGV4cGVjdGVkX2F0dHJpYnV0ZXMubGVuZ3RoKToKICAg
ICAgIGV4cGVjdGVkX2F0dHIgPSBleHBlY3RlZF9hdHRyaWJ1dGVzLml0ZW0oaSkKICAgICAgIGFj
dHVhbF9hdHRyICAgPSBhY3R1YWxfYXR0cmlidXRlcy5nZXQoZXhwZWN0ZWRfYXR0ci5uYW1lKQog
ICAgICAgc2VsZi5hc3NlcnRfKAogICAgICAgICAgIGFjdHVhbF9hdHRyIGlzIG5vdCBOb25lLAot
ICAgICAgICAgICJleHBlY3RlZCBhdHRyaWJ1dGUgJXMgbm90IGZvdW5kIGluIGVsZW1lbnQgJXMi
ICUKKyAgICAgICAgICAnZXhwZWN0ZWQgYXR0cmlidXRlICVzIG5vdCBmb3VuZCBpbiBlbGVtZW50
ICVzJyAlCiAgICAgICAgICAgKGV4cGVjdGVkX2F0dHIubmFtZSwgYWN0dWFsX25vZGUudGFnTmFt
ZSkpCi0gICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZF9hdHRyLnZhbHVlLCBhY3R1YWxf
YXR0ci52YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICIgdmFsdWVzIG9mIGF0dHJpYnV0
ZSAlcyBpbiBlbGVtZW50ICVzIGRpZmZlciIgJQotICAgICAgICAgICAgICAgICAgICAgICAgKGV4
cGVjdGVkX2F0dHIubmFtZSwgYWN0dWFsX25vZGUudGFnTmFtZSkpCisgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygKKyAgICAgICAgICBleHBlY3RlZF9hdHRyLnZhbHVlLCBhY3R1YWxfYXR0ci52YWx1
ZSwKKyAgICAgICAgICAnIHZhbHVlcyBvZiBhdHRyaWJ1dGUgJXMgaW4gZWxlbWVudCAlcyBkaWZm
ZXI6ICVzIHZzICVzJyAlCisgICAgICAgICAgKGV4cGVjdGVkX2F0dHIubmFtZSwgYWN0dWFsX25v
ZGUudGFnTmFtZSwKKyAgICAgICAgICAgZXhwZWN0ZWRfYXR0ci52YWx1ZSwgYWN0dWFsX2F0dHIu
dmFsdWUpKQogCiAgICAgZXhwZWN0ZWRfY2hpbGRyZW4gPSBzZWxmLl9HZXRDaGlsZHJlbihleHBl
Y3RlZF9ub2RlKQogICAgIGFjdHVhbF9jaGlsZHJlbiA9IHNlbGYuX0dldENoaWxkcmVuKGFjdHVh
bF9ub2RlKQogICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAogICAgICAgICBsZW4oZXhwZWN0ZWRfY2hp
bGRyZW4pLCBsZW4oYWN0dWFsX2NoaWxkcmVuKSwKLSAgICAgICAgIm51bWJlciBvZiBjaGlsZCBl
bGVtZW50cyBkaWZmZXIgaW4gZWxlbWVudCAiICsgYWN0dWFsX25vZGUudGFnTmFtZSkKKyAgICAg
ICAgJ251bWJlciBvZiBjaGlsZCBlbGVtZW50cyBkaWZmZXIgaW4gZWxlbWVudCAnICsgYWN0dWFs
X25vZGUudGFnTmFtZSkKICAgICBmb3IgY2hpbGRfaWQsIGNoaWxkIGluIGV4cGVjdGVkX2NoaWxk
cmVuLml0ZXJpdGVtcygpOgogICAgICAgc2VsZi5hc3NlcnRfKGNoaWxkX2lkIGluIGFjdHVhbF9j
aGlsZHJlbiwKICAgICAgICAgICAgICAgICAgICAnPCVzPiBpcyBub3QgaW4gPCVzPiAoaW4gZWxl
bWVudCAlcyknICUKQEAgLTEwMywxOSArMTAxLDIyIEBAIGNsYXNzIEdUZXN0WE1MVGVzdENhc2Uo
Z3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CiAgICAgICBzZWxmLkFzc2VydEVxdWl2YWxlbnRO
b2RlcyhjaGlsZCwgYWN0dWFsX2NoaWxkcmVuW2NoaWxkX2lkXSkKIAogICBpZGVudGlmeWluZ19h
dHRyaWJ1dGUgPSB7Ci0gICAgInRlc3RzdWl0ZXMiOiAibmFtZSIsCi0gICAgInRlc3RzdWl0ZSI6
ICJuYW1lIiwKLSAgICAidGVzdGNhc2UiOiAgIm5hbWUiLAotICAgICJmYWlsdXJlIjogICAibWVz
c2FnZSIsCi0gICAgfQorICAgICAgJ3Rlc3RzdWl0ZXMnOiAnbmFtZScsCisgICAgICAndGVzdHN1
aXRlJzogJ25hbWUnLAorICAgICAgJ3Rlc3RjYXNlJzogJ25hbWUnLAorICAgICAgJ2ZhaWx1cmUn
OiAnbWVzc2FnZScsCisgICAgICAncHJvcGVydHknOiAnbmFtZScsCisgIH0KIAogICBkZWYgX0dl
dENoaWxkcmVuKHNlbGYsIGVsZW1lbnQpOgogICAgICIiIgogICAgIEZldGNoZXMgYWxsIG9mIHRo
ZSBjaGlsZCBub2RlcyBvZiBlbGVtZW50LCBhIERPTSBFbGVtZW50IG9iamVjdC4KICAgICBSZXR1
cm5zIHRoZW0gYXMgdGhlIHZhbHVlcyBvZiBhIGRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIElEcyBv
ZiB0aGUKLSAgICBjaGlsZHJlbi4gIEZvciA8dGVzdHN1aXRlcz4sIDx0ZXN0c3VpdGU+IGFuZCA8
dGVzdGNhc2U+IGVsZW1lbnRzLCB0aGUgSUQKLSAgICBpcyB0aGUgdmFsdWUgb2YgdGhlaXIgIm5h
bWUiIGF0dHJpYnV0ZTsgZm9yIDxmYWlsdXJlPiBlbGVtZW50cywgaXQgaXMKLSAgICB0aGUgdmFs
dWUgb2YgdGhlICJtZXNzYWdlIiBhdHRyaWJ1dGU7IENEQVRBIHNlY3Rpb25zIGFuZCBub24td2hp
dGVzcGFjZQorICAgIGNoaWxkcmVuLiAgRm9yIDx0ZXN0c3VpdGVzPiwgPHRlc3RzdWl0ZT4sIDx0
ZXN0Y2FzZT4sIGFuZCA8cHJvcGVydHk+CisgICAgZWxlbWVudHMsIHRoZSBJRCBpcyB0aGUgdmFs
dWUgb2YgdGhlaXIgIm5hbWUiIGF0dHJpYnV0ZTsgZm9yIDxmYWlsdXJlPgorICAgIGVsZW1lbnRz
LCBpdCBpcyB0aGUgdmFsdWUgb2YgdGhlICJtZXNzYWdlIiBhdHRyaWJ1dGU7IGZvciA8cHJvcGVy
dGllcz4KKyAgICBlbGVtZW50cywgaXQgaXMgdGhlIHZhbHVlIG9mIHRoZWlyIHBhcmVudCdzICJu
YW1lIiBhdHRyaWJ1dGUgcGx1cyB0aGUKKyAgICBsaXRlcmFsIHN0cmluZyAicHJvcGVydGllcyI7
IENEQVRBIHNlY3Rpb25zIGFuZCBub24td2hpdGVzcGFjZQogICAgIHRleHQgbm9kZXMgYXJlIGNv
bmNhdGVuYXRlZCBpbnRvIGEgc2luZ2xlIENEQVRBIHNlY3Rpb24gd2l0aCBJRAogICAgICJkZXRh
aWwiLiAgQW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiBhbnkgZWxlbWVudCBvdGhlciB0aGFuIHRo
ZSBhYm92ZQogICAgIGZvdXIgaXMgZW5jb3VudGVyZWQsIGlmIHR3byBjaGlsZCBlbGVtZW50cyB3
aXRoIHRoZSBzYW1lIGlkZW50aWZ5aW5nCkBAIC0xMjUsMjEgKzEyNiwyNyBAQCBjbGFzcyBHVGVz
dFhNTFRlc3RDYXNlKGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgogICAgIGNoaWxkcmVuID0g
e30KICAgICBmb3IgY2hpbGQgaW4gZWxlbWVudC5jaGlsZE5vZGVzOgogICAgICAgaWYgY2hpbGQu
bm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05PREU6Ci0gICAgICAgIHNlbGYuYXNzZXJ0XyhjaGls
ZC50YWdOYW1lIGluIHNlbGYuaWRlbnRpZnlpbmdfYXR0cmlidXRlLAotICAgICAgICAgICAgICAg
ICAgICAgIkVuY291bnRlcmVkIHVua25vd24gZWxlbWVudCA8JXM+IiAlIGNoaWxkLnRhZ05hbWUp
Ci0gICAgICAgIGNoaWxkSUQgPSBjaGlsZC5nZXRBdHRyaWJ1dGUoc2VsZi5pZGVudGlmeWluZ19h
dHRyaWJ1dGVbY2hpbGQudGFnTmFtZV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0XyhjaGlsZElEIG5v
dCBpbiBjaGlsZHJlbikKLSAgICAgICAgY2hpbGRyZW5bY2hpbGRJRF0gPSBjaGlsZAorICAgICAg
ICBpZiBjaGlsZC50YWdOYW1lID09ICdwcm9wZXJ0aWVzJzoKKyAgICAgICAgICBzZWxmLmFzc2Vy
dF8oY2hpbGQucGFyZW50Tm9kZSBpcyBub3QgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
J0VuY291bnRlcmVkIDxwcm9wZXJ0aWVzPiBlbGVtZW50IHdpdGhvdXQgYSBwYXJlbnQnKQorICAg
ICAgICAgIGNoaWxkX2lkID0gY2hpbGQucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoJ25hbWUnKSAr
ICctcHJvcGVydGllcycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICBzZWxmLmFzc2VydF8oY2hp
bGQudGFnTmFtZSBpbiBzZWxmLmlkZW50aWZ5aW5nX2F0dHJpYnV0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgJ0VuY291bnRlcmVkIHVua25vd24gZWxlbWVudCA8JXM+JyAlIGNoaWxkLnRhZ05h
bWUpCisgICAgICAgICAgY2hpbGRfaWQgPSBjaGlsZC5nZXRBdHRyaWJ1dGUoCisgICAgICAgICAg
ICAgIHNlbGYuaWRlbnRpZnlpbmdfYXR0cmlidXRlW2NoaWxkLnRhZ05hbWVdKQorICAgICAgICBz
ZWxmLmFzc2VydF8oY2hpbGRfaWQgbm90IGluIGNoaWxkcmVuKQorICAgICAgICBjaGlsZHJlbltj
aGlsZF9pZF0gPSBjaGlsZAogICAgICAgZWxpZiBjaGlsZC5ub2RlVHlwZSBpbiBbTm9kZS5URVhU
X05PREUsIE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFXToKLSAgICAgICAgaWYgImRldGFpbCIgbm90
IGluIGNoaWxkcmVuOgorICAgICAgICBpZiAnZGV0YWlsJyBub3QgaW4gY2hpbGRyZW46CiAgICAg
ICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlID09IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFIG9yCiAg
ICAgICAgICAgICAgIG5vdCBjaGlsZC5ub2RlVmFsdWUuaXNzcGFjZSgpKToKLSAgICAgICAgICAg
IGNoaWxkcmVuWyJkZXRhaWwiXSA9IGNoaWxkLm93bmVyRG9jdW1lbnQuY3JlYXRlQ0RBVEFTZWN0
aW9uKAorICAgICAgICAgICAgY2hpbGRyZW5bJ2RldGFpbCddID0gY2hpbGQub3duZXJEb2N1bWVu
dC5jcmVhdGVDREFUQVNlY3Rpb24oCiAgICAgICAgICAgICAgICAgY2hpbGQubm9kZVZhbHVlKQog
ICAgICAgICBlbHNlOgotICAgICAgICAgIGNoaWxkcmVuWyJkZXRhaWwiXS5ub2RlVmFsdWUgKz0g
Y2hpbGQubm9kZVZhbHVlCisgICAgICAgICAgY2hpbGRyZW5bJ2RldGFpbCddLm5vZGVWYWx1ZSAr
PSBjaGlsZC5ub2RlVmFsdWUKICAgICAgIGVsc2U6Ci0gICAgICAgIHNlbGYuZmFpbCgiRW5jb3Vu
dGVyZWQgdW5leHBlY3RlZCBub2RlIHR5cGUgJWQiICUgY2hpbGQubm9kZVR5cGUpCisgICAgICAg
IHNlbGYuZmFpbCgnRW5jb3VudGVyZWQgdW5leHBlY3RlZCBub2RlIHR5cGUgJWQnICUgY2hpbGQu
bm9kZVR5cGUpCiAgICAgcmV0dXJuIGNoaWxkcmVuCiAKICAgZGVmIE5vcm1hbGl6ZVhtbChzZWxm
LCBlbGVtZW50KToKQEAgLTE1MCwyMyArMTU3LDQwIEBAIGNsYXNzIEdUZXN0WE1MVGVzdENhc2Uo
Z3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CiAgICAgKiAgVGhlICJ0aW1lIiBhdHRyaWJ1dGUg
b2YgPHRlc3RzdWl0ZXM+LCA8dGVzdHN1aXRlPiBhbmQgPHRlc3RjYXNlPgogICAgICAgIGVsZW1l
bnRzIGlzIHJlcGxhY2VkIHdpdGggYSBzaW5nbGUgYXN0ZXJpc2ssIGlmIGl0IGNvbnRhaW5zCiAg
ICAgICAgb25seSBkaWdpdCBjaGFyYWN0ZXJzLgotICAgICogIFRoZSBsaW5lIG51bWJlciByZXBv
cnRlZCBpbiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgIm1lc3NhZ2UiCi0gICAgICAgYXR0cmlidXRl
IG9mIDxmYWlsdXJlPiBlbGVtZW50cyBpcyByZXBsYWNlZCB3aXRoIGEgc2luZ2xlIGFzdGVyaXNr
LgorICAgICogIFRoZSAidGltZXN0YW1wIiBhdHRyaWJ1dGUgb2YgPHRlc3RzdWl0ZXM+IGVsZW1l
bnRzIGlzIHJlcGxhY2VkIHdpdGggYQorICAgICAgIHNpbmdsZSBhc3RlcmlzaywgaWYgaXQgY29u
dGFpbnMgYSB2YWxpZCBJU084NjAxIGRhdGV0aW1lIHZhbHVlLgorICAgICogIFRoZSAidHlwZV9w
YXJhbSIgYXR0cmlidXRlIG9mIDx0ZXN0Y2FzZT4gZWxlbWVudHMgaXMgcmVwbGFjZWQgd2l0aCBh
CisgICAgICAgc2luZ2xlIGFzdGVyaXNrIChpZiBpdCBzbiBub24tZW1wdHkpIGFzIGl0IGlzIHRo
ZSB0eXBlIG5hbWUgcmV0dXJuZWQKKyAgICAgICBieSB0aGUgY29tcGlsZXIgYW5kIGlzIHBsYXRm
b3JtIGRlcGVuZGVudC4KKyAgICAqICBUaGUgbGluZSBpbmZvIHJlcG9ydGVkIGluIHRoZSBmaXJz
dCBsaW5lIG9mIHRoZSAibWVzc2FnZSIKKyAgICAgICBhdHRyaWJ1dGUgYW5kIENEQVRBIHNlY3Rp
b24gb2YgPGZhaWx1cmU+IGVsZW1lbnRzIGlzIHJlcGxhY2VkIHdpdGggdGhlCisgICAgICAgZmls
ZSdzIGJhc2VuYW1lIGFuZCBhIHNpbmdsZSBhc3RlcmlzayBmb3IgdGhlIGxpbmUgbnVtYmVyLgog
ICAgICogIFRoZSBkaXJlY3RvcnkgbmFtZXMgaW4gZmlsZSBwYXRocyBhcmUgcmVtb3ZlZC4KICAg
ICAqICBUaGUgc3RhY2sgdHJhY2VzIGFyZSByZW1vdmVkLgogICAgICIiIgogCi0gICAgaWYgZWxl
bWVudC50YWdOYW1lIGluICgidGVzdHN1aXRlcyIsICJ0ZXN0c3VpdGUiLCAidGVzdGNhc2UiKToK
LSAgICAgIHRpbWUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoInRpbWUiKQotICAgICAgdGlt
ZS52YWx1ZSA9IHJlLnN1YihyIl5cZCsoXC5cZCspPyQiLCAiKiIsIHRpbWUudmFsdWUpCi0gICAg
ZWxpZiBlbGVtZW50LnRhZ05hbWUgPT0gImZhaWx1cmUiOgorICAgIGlmIGVsZW1lbnQudGFnTmFt
ZSA9PSAndGVzdHN1aXRlcyc6CisgICAgICB0aW1lc3RhbXAgPSBlbGVtZW50LmdldEF0dHJpYnV0
ZU5vZGUoJ3RpbWVzdGFtcCcpCisgICAgICB0aW1lc3RhbXAudmFsdWUgPSByZS5zdWIocideXGR7
NH0tXGRcZC1cZFxkVFxkXGQ6XGRcZDpcZFxkJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyonLCB0aW1lc3RhbXAudmFsdWUpCisgICAgaWYgZWxlbWVudC50YWdOYW1lIGluICgn
dGVzdHN1aXRlcycsICd0ZXN0c3VpdGUnLCAndGVzdGNhc2UnKToKKyAgICAgIHRpbWUgPSBlbGVt
ZW50LmdldEF0dHJpYnV0ZU5vZGUoJ3RpbWUnKQorICAgICAgdGltZS52YWx1ZSA9IHJlLnN1Yihy
J15cZCsoXC5cZCspPyQnLCAnKicsIHRpbWUudmFsdWUpCisgICAgICB0eXBlX3BhcmFtID0gZWxl
bWVudC5nZXRBdHRyaWJ1dGVOb2RlKCd0eXBlX3BhcmFtJykKKyAgICAgIGlmIHR5cGVfcGFyYW0g
YW5kIHR5cGVfcGFyYW0udmFsdWU6CisgICAgICAgIHR5cGVfcGFyYW0udmFsdWUgPSAnKicKKyAg
ICBlbGlmIGVsZW1lbnQudGFnTmFtZSA9PSAnZmFpbHVyZSc6CisgICAgICBzb3VyY2VfbGluZV9w
YXQgPSByJ14uKlsvXFxdKC4qOilcZCtcbicKKyAgICAgICMgUmVwbGFjZXMgdGhlIHNvdXJjZSBs
aW5lIGluZm9ybWF0aW9uIHdpdGggYSBub3JtYWxpemVkIGZvcm0uCisgICAgICBtZXNzYWdlID0g
ZWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKCdtZXNzYWdlJykKKyAgICAgIG1lc3NhZ2UudmFsdWUg
PSByZS5zdWIoc291cmNlX2xpbmVfcGF0LCAnXFwxKlxuJywgbWVzc2FnZS52YWx1ZSkKICAgICAg
IGZvciBjaGlsZCBpbiBlbGVtZW50LmNoaWxkTm9kZXM6CiAgICAgICAgIGlmIGNoaWxkLm5vZGVU
eXBlID09IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFOgotICAgICAgICAgICMgUmVtb3ZlcyB0aGUg
c291cmNlIGxpbmUgbnVtYmVyLgotICAgICAgICAgIGNkYXRhID0gcmUuc3ViKHIiXi4qWy9cXF0o
Lio6KVxkK1xuIiwgIlxcMSpcbiIsIGNoaWxkLm5vZGVWYWx1ZSkKKyAgICAgICAgICAjIFJlcGxh
Y2VzIHRoZSBzb3VyY2UgbGluZSBpbmZvcm1hdGlvbiB3aXRoIGEgbm9ybWFsaXplZCBmb3JtLgor
ICAgICAgICAgIGNkYXRhID0gcmUuc3ViKHNvdXJjZV9saW5lX3BhdCwgJ1xcMSpcbicsIGNoaWxk
Lm5vZGVWYWx1ZSkKICAgICAgICAgICAjIFJlbW92ZXMgdGhlIGFjdHVhbCBzdGFjayB0cmFjZS4K
LSAgICAgICAgICBjaGlsZC5ub2RlVmFsdWUgPSByZS5zdWIociJcblN0YWNrIHRyYWNlOlxuKC58
XG4pKiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiLCBjZGF0YSkKKyAg
ICAgICAgICBjaGlsZC5ub2RlVmFsdWUgPSByZS5zdWIocidTdGFjayB0cmFjZTpcbigufFxuKSon
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU3RhY2sgdHJhY2U6XG4qJywg
Y2RhdGEpCiAgICAgZm9yIGNoaWxkIGluIGVsZW1lbnQuY2hpbGROb2RlczoKICAgICAgIGlmIGNo
aWxkLm5vZGVUeXBlID09IE5vZGUuRUxFTUVOVF9OT0RFOgogICAgICAgICBzZWxmLk5vcm1hbGl6
ZVhtbChjaGlsZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJv
ZHVjdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5jYwpp
bmRleCA4YjhhNDBiNDRlOWI0MWY0YzI5ZDc1NTI2OTA4NTY4YWYyMzc5MTJkLi4wZjY5ZjZkYmQy
ZTI2YTNhOWJkZjc1NmI0ODA3MzdhNGVmNDIxOGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L3Byb2R1Y3Rpb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9wcm9kdWN0aW9uLmNjCkBAIC0yNiwxMCArMjYsOSBAQAogLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAog
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29v
Z2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRoaXMgaXMgcGFydCBvZiB0aGUgdW5pdCB0
ZXN0IGZvciBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaC4KKy8vIFRoaXMgaXMgcGFydCBvZiB0
aGUgdW5pdCB0ZXN0IGZvciBndGVzdF9wcm9kLmguCiAKICNpbmNsdWRlICJwcm9kdWN0aW9uLmgi
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5o
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9kdWN0aW9uLmgKaW5kZXggOGYxNmZm
ZmEyNDE2YzU3MTUzZmFiM2UwOTdkMTM0YWYxZmI0YTliYy4uNTQyNzIzYjcwODczODdkNGZiNTI5
ZmMwN2E2ODhiYzFjOGQ3OGIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9wcm9kdWN0aW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9k
dWN0aW9uLmgKQEAgLTI2LDE1ICsyNiwxNCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhh
bnlvbmcgV2FuKQotLy8KLS8vIFRoaXMgaXMgcGFydCBvZiB0aGUgdW5pdCB0ZXN0IGZvciBpbmNs
dWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaC4KKy8vIFRoaXMgaXMgcGFydCBvZiB0aGUgdW5pdCB0ZXN0
IGZvciBndGVzdF9wcm9kLmguCiAKICNpZm5kZWYgR1RFU1RfVEVTVF9QUk9EVUNUSU9OX0hfCiAj
ZGVmaW5lIEdURVNUX1RFU1RfUFJPRFVDVElPTl9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Rf
cHJvZC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0X3Byb2QuaCIKIAogY2xhc3MgUHJpdmF0ZUNv
ZGUgewogIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
cnVuX3Rlc3RzX3V0aWwucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0
c191dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5ZTU3OTMxZWJhMmM2MTFl
MGExZjYwZmZmNGYwOTUzOWUxMDc2N2FkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3RzX3V0
aWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0NjYgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOCBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0j
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIi
UHJvdmlkZXMgZmFjaWxpdGllcyBmb3IgcnVubmluZyBTQ29ucy1idWlsdCBHb29nbGUgVGVzdC9N
b2NrIHRlc3RzLiIiIgotCi0KLWltcG9ydCBvcHRwYXJzZQotaW1wb3J0IG9zCi1pbXBvcnQgcmUK
LWltcG9ydCBzZXRzCi1pbXBvcnQgc3lzCi0KLXRyeToKLSAgIyBzdWJyb2Nlc3MgbW9kdWxlIGlz
IGEgcHJlZmVyYWJsZSB3YXkgdG8gaW52b2tlIHN1YnByb2Nlc3NlcyBidXQgaXQgbWF5Ci0gICMg
bm90IGJlIGF2YWlsYWJsZSBvbiBNYWNPUyBYIDEwLjQuCi0gICMgU3VwcHJlc3NlcyB0aGUgJ0lt
cG9ydCBub3QgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZScgbGludCBjb21wbGFpbnQuCi0gICMgcHls
aW50OiBkaXNhYmxlLW1zZz1DNjIwNAotICBpbXBvcnQgc3VicHJvY2VzcwotZXhjZXB0IEltcG9y
dEVycm9yOgotICBzdWJwcm9jZXNzID0gTm9uZQotCi1IRUxQX01TRyA9ICIiIlJ1bnMgdGhlIHNw
ZWNpZmllZCB0ZXN0cyBmb3IgJShwcm9qKXMuCi0KLVNZTk9QU0lTCi0gICAgICAgcnVuX3Rlc3Rz
LnB5IFtPUFRJT05dLi4uIFtCVUlMRF9ESVJdLi4uIFtURVNUXS4uLgotCi1ERVNDUklQVElPTgot
ICAgICAgIFJ1bnMgdGhlIHNwZWNpZmllZCB0ZXN0cyAoZWl0aGVyIGJpbmFyeSBvciBQeXRob24p
LCBhbmQgcHJpbnRzIGEKLSAgICAgICBzdW1tYXJ5IG9mIHRoZSByZXN1bHRzLiBCVUlMRF9ESVJT
IHdpbGwgYmUgdXNlZCB0byBzZWFyY2ggZm9yIHRoZQotICAgICAgIGJpbmFyaWVzLiBJZiBubyBU
RVNUcyBhcmUgc3BlY2lmaWVkLCBhbGwgYmluYXJ5IHRlc3RzIGZvdW5kIGluCi0gICAgICAgQlVJ
TERfRElScyBhbmQgYWxsIFB5dGhvbiB0ZXN0cyBmb3VuZCBpbiB0aGUgZGlyZWN0b3J5IHRlc3Qv
IChpbiB0aGUKLSAgICAgICAlKHByb2opcyByb290KSBhcmUgcnVuLgotCi0gICAgICAgVEVTVCBp
cyBhIG5hbWUgb2YgZWl0aGVyIGEgYmluYXJ5IG9yIGEgUHl0aG9uIHRlc3QuIEEgYmluYXJ5IHRl
c3QgaXMKLSAgICAgICBhbiBleGVjdXRhYmxlIGZpbGUgbmFtZWQgKl90ZXN0IG9yICpfdW5pdHRl
c3QgKHdpdGggdGhlIC5leGUKLSAgICAgICBleHRlbnNpb24gb24gV2luZG93cykgQSBQeXRob24g
dGVzdCBpcyBhIHNjcmlwdCBuYW1lZCAqX3Rlc3QucHkgb3IKLSAgICAgICAqX3VuaXR0ZXN0LnB5
LgotCi1PUFRJT05TCi0gICAgICAgLWgsIC0taGVscAotICAgICAgICAgICAgICBQcmludCB0aGlz
IGhlbHAgbWVzc2FnZS4KLSAgICAgICAtYyBDT05GSUdVUkFUSU9OUwotICAgICAgICAgICAgICBT
cGVjaWZ5IGJ1aWxkIGRpcmVjdG9yaWVzIHZpYSBidWlsZCBjb25maWd1cmF0aW9ucy4KLSAgICAg
ICAgICAgICAgQ09ORklHVVJBVElPTlMgaXMgZWl0aGVyIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qg
b2YgYnVpbGQKLSAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgb3IgJ2FsbCcuIEVhY2ggY29u
ZmlndXJhdGlvbiBpcyBlcXVpdmFsZW50IHRvCi0gICAgICAgICAgICAgIGFkZGluZyAnc2NvbnMv
YnVpbGQvPGNvbmZpZ3VyYXRpb24+LyUocHJvailzL3Njb25zJyB0byBCVUlMRF9ESVJzLgotICAg
ICAgICAgICAgICBTcGVjaWZ5aW5nIC1jPWFsbCBpcyBlcXVpdmFsZW50IHRvIHByb3ZpZGluZyBh
bGwgZGlyZWN0b3JpZXMKLSAgICAgICAgICAgICAgbGlzdGVkIGluIEtOT1dOIEJVSUxEIERJUkVD
VE9SSUVTIHNlY3Rpb24gYmVsb3cuCi0gICAgICAgLWEKLSAgICAgICAgICAgICAgRXF1aXZhbGVu
dCB0byAtYz1hbGwKLSAgICAgICAtYgotICAgICAgICAgICAgICBFcXVpdmFsZW50IHRvIC1jPWFs
bCB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCB0aGUgc2NyaXB0IHdpbGwgbm90Ci0gICAgICAgICAg
ICAgIGZhaWwgaWYgc29tZSBvZiB0aGUgS05PV04gQlVJTEQgRElSRUNUT1JJRVMgZG8gbm90IGV4
aXN0czsgdGhlCi0gICAgICAgICAgICAgIHNjcmlwdCB3aWxsIHNpbXBseSBub3QgcnVuIHRoZSB0
ZXN0cyB0aGVyZS4gJ2InIHN0YW5kcyBmb3IKLSAgICAgICAgICAgICAgJ2J1aWx0IGRpcmVjdG9y
aWVzJy4KLQotUkVUVVJOIFZBTFVFCi0gICAgICAgUmV0dXJucyAwIGlmIGFsbCB0ZXN0cyBhcmUg
c3VjY2Vzc2Z1bDsgb3RoZXJ3aXNlIHJldHVybnMgMS4KLQotRVhBTVBMRVMKLSAgICAgICBydW5f
dGVzdHMucHkKLSAgICAgICAgICAgICAgUnVucyBhbGwgdGVzdHMgZm9yIHRoZSBkZWZhdWx0IGJ1
aWxkIGNvbmZpZ3VyYXRpb24uCi0gICAgICAgcnVuX3Rlc3RzLnB5IC1hCi0gICAgICAgICAgICAg
IFJ1bnMgYWxsIHRlc3RzIHdpdGggYmluYXJpZXMgaW4gS05PV04gQlVJTEQgRElSRUNUT1JJRVMu
Ci0gICAgICAgcnVuX3Rlc3RzLnB5IC1iCi0gICAgICAgICAgICAgIFJ1bnMgYWxsIHRlc3RzIGlu
IEtOT1dOIEJVSUxEIERJUkVDVE9SSUVTIHRoYXQgaGF2ZSBiZWVuCi0gICAgICAgICAgICAgIGJ1
aWx0LgotICAgICAgIHJ1bl90ZXN0cy5weSBmb28vCi0gICAgICAgICAgICAgIFJ1bnMgYWxsIHRl
c3RzIGluIHRoZSBmb28vIGRpcmVjdG9yeSBhbmQgYWxsIFB5dGhvbiB0ZXN0cyBpbgotICAgICAg
ICAgICAgICB0aGUgZGlyZWN0b3J5IHRlc3QuIFRoZSBQeXRob24gdGVzdHMgYXJlIGluc3RydWN0
ZWQgdG8gbG9vawotICAgICAgICAgICAgICBmb3IgYmluYXJpZXMgaW4gZm9vLy4KLSAgICAgICBy
dW5fdGVzdHMucHkgYmFyX3Rlc3QuZXhlIHRlc3QvYmF6X3Rlc3QuZXhlIGZvby8gYmFyLwotICAg
ICAgICAgICAgICBSdW5zIGZvby9iYXJfdGVzdC5leGUsIGJhci9iYXJfdGVzdC5leGUsIGZvby9i
YXpfdGVzdC5leGUsIGFuZAotICAgICAgICAgICAgICBiYXIvYmF6X3Rlc3QuZXhlLgotICAgICAg
IHJ1bl90ZXN0cy5weSBmb28gYmFyIHRlc3QvZm9vX3Rlc3QucHkKLSAgICAgICAgICAgICAgUnVu
cyB0ZXN0L2Zvb190ZXN0LnB5IHR3aWNlIGluc3RydWN0aW5nIGl0IHRvIGxvb2sgZm9yIGl0cwot
ICAgICAgICAgICAgICB0ZXN0IGJpbmFyaWVzIGluIHRoZSBkaXJlY3RvcmllcyBmb28gYW5kIGJh
ciwKLSAgICAgICAgICAgICAgY29ycmVzcG9uZGluZ2x5LgotCi1LTk9XTiBCVUlMRCBESVJFQ1RP
UklFUwotICAgICAgcnVuX3Rlc3RzLnB5IGtub3dzIGFib3V0IGRpcmVjdG9yaWVzIHdoZXJlIHRo
ZSBTQ29ucyBidWlsZCBzY3JpcHQKLSAgICAgIGRlcG9zaXRzIGl0cyBwcm9kdWN0cy4gVGhlc2Ug
YXJlIHRoZSBkaXJlY3RvcmllcyB3aGVyZSBydW5fdGVzdHMucHkKLSAgICAgIHdpbGwgYmUgbG9v
a2luZyBmb3IgaXRzIGJpbmFyaWVzLiBDdXJyZW50bHksICUocHJvailzJ3MgU0NvbnN0cnVjdCBm
aWxlCi0gICAgICBkZWZpbmVzIHRoZW0gYXMgZm9sbG93cyAodGhlIGRlZmF1bHQgYnVpbGQgZGly
ZWN0b3J5IGlzIHRoZSBmaXJzdCBvbmUKLSAgICAgIGxpc3RlZCBpbiBlYWNoIGdyb3VwKToKLSAg
ICAgIE9uIFdpbmRvd3M6Ci0gICAgICAgICAgICAgIDwlKHByb2opcyByb290Pi9zY29ucy9idWls
ZC93aW4tZGJnOC8lKHByb2opcy9zY29ucy8KLSAgICAgICAgICAgICAgPCUocHJvailzIHJvb3Q+
L3Njb25zL2J1aWxkL3dpbi1vcHQ4LyUocHJvailzL3Njb25zLwotICAgICAgT24gTWFjOgotICAg
ICAgICAgICAgICA8JShwcm9qKXMgcm9vdD4vc2NvbnMvYnVpbGQvbWFjLWRiZy8lKHByb2opcy9z
Y29ucy8KLSAgICAgICAgICAgICAgPCUocHJvailzIHJvb3Q+L3Njb25zL2J1aWxkL21hYy1vcHQv
JShwcm9qKXMvc2NvbnMvCi0gICAgICBPbiBvdGhlciBwbGF0Zm9ybXM6Ci0gICAgICAgICAgICAg
IDwlKHByb2opcyByb290Pi9zY29ucy9idWlsZC9kYmcvJShwcm9qKXMvc2NvbnMvCi0gICAgICAg
ICAgICAgIDwlKHByb2opcyByb290Pi9zY29ucy9idWlsZC9vcHQvJShwcm9qKXMvc2NvbnMvIiIi
Ci0KLUlTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdudCcKLUlTX01BQyA9IG9zLm5hbWUgPT0gJ3Bv
c2l4JyBhbmQgb3MudW5hbWUoKVswXSA9PSAnRGFyd2luJwotSVNfQ1lHV0lOID0gb3MubmFtZSA9
PSAncG9zaXgnIGFuZCAnQ1lHV0lOJyBpbiBvcy51bmFtZSgpWzBdCi0KLSMgRGVmaW5pdGlvbiBv
ZiBDT05GSUdTIG11c3QgbWF0Y2ggdGhhdCBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5IG5hbWVzIGlu
IHRoZQotIyBTQ29uc3RydWN0IHNjcmlwdC4gVGhlIGZpcnN0IGxpc3QgaXRlbSBpcyB0aGUgZGVm
YXVsdCBidWlsZCBjb25maWd1cmF0aW9uLgotaWYgSVNfV0lORE9XUzoKLSAgQ09ORklHUyA9ICgn
d2luLWRiZzgnLCAnd2luLW9wdDgnKQotZWxpZiBJU19NQUM6Ci0gIENPTkZJR1MgPSAoJ21hYy1k
YmcnLCAnbWFjLW9wdCcpCi1lbHNlOgotICBDT05GSUdTID0gKCdkYmcnLCAnb3B0JykKLQotaWYg
SVNfV0lORE9XUyBvciBJU19DWUdXSU46Ci0gIFBZVEhPTl9URVNUX1JFR0VYID0gcmUuY29tcGls
ZShyJ18odW5pdCk/dGVzdFwucHkkJywgcmUuSUdOT1JFQ0FTRSkKLSAgQklOQVJZX1RFU1RfUkVH
RVggPSByZS5jb21waWxlKHInXyh1bml0KT90ZXN0KFwuZXhlKT8kJywgcmUuSUdOT1JFQ0FTRSkK
LSAgQklOQVJZX1RFU1RfU0VBUkNIX1JFR0VYID0gcmUuY29tcGlsZShyJ18odW5pdCk/dGVzdFwu
ZXhlJCcsIHJlLklHTk9SRUNBU0UpCi1lbHNlOgotICBQWVRIT05fVEVTVF9SRUdFWCA9IHJlLmNv
bXBpbGUocidfKHVuaXQpP3Rlc3RcLnB5JCcpCi0gIEJJTkFSWV9URVNUX1JFR0VYID0gcmUuY29t
cGlsZShyJ18odW5pdCk/dGVzdCQnKQotICBCSU5BUllfVEVTVF9TRUFSQ0hfUkVHRVggPSBCSU5B
UllfVEVTVF9SRUdFWAotCi0KLWRlZiBfR2V0R3Rlc3RCdWlsZERpcihpbmplY3RlZF9vcywgc2Ny
aXB0X2RpciwgY29uZmlnKToKLSAgIiIiQ2FsY3VsYXRlcyBwYXRoIHRvIHRoZSBHb29nbGUgVGVz
dCBTQ29ucyBidWlsZCBkaXJlY3RvcnkuIiIiCi0KLSAgcmV0dXJuIGluamVjdGVkX29zLnBhdGgu
bm9ybXBhdGgoaW5qZWN0ZWRfb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NvbnMvYnVpbGQn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2d0ZXN0L3Njb25zJykpCi0KLQotZGVmIF9HZXRDb25maWdGcm9tQnVpbGRE
aXIoYnVpbGRfZGlyKToKLSAgIiIiRXh0cmFjdHMgdGhlIGNvbmZpZ3VyYXRpb24gbmFtZSBmcm9t
IHRoZSBidWlsZCBkaXJlY3RvcnkuIiIiCi0KLSAgIyBXZSBkb24ndCB3YW50IHRvIGRlcGVuZCBv
biBidWlsZF9kaXIgY29udGFpbmluZyB0aGUgY29ycmVjdCBwYXRoCi0gICMgc2VwYXJhdG9ycy4K
LSAgbSA9IHJlLm1hdGNoKHInLipbXFwvXShbXlxcL10rKVtcXC9dW15cXC9dK1tcXC9dc2NvbnNb
XFwvXT8kJywgYnVpbGRfZGlyKQotICBpZiBtOgotICAgIHJldHVybiBtLmdyb3VwKDEpCi0gIGVs
c2U6Ci0gICAgcHJpbnQgPj5zeXMuc3RkZXJyLCAoJyVzIGlzIGFuIGludmFsaWQgYnVpbGQgZGly
ZWN0b3J5IHRoYXQgZG9lcyBub3QgJwotICAgICAgICAgICAgICAgICAgICAgICAgICdjb3JyZXNw
b25kIHRvIGFueSBjb25maWd1cmF0aW9uLicgJSAoYnVpbGRfZGlyLCkpCi0gICAgcmV0dXJuICcn
Ci0KLQotIyBBbGwgcGF0aHMgaW4gdGhpcyBzY3JpcHQgYXJlIGVpdGhlciBhYnNvbHV0ZSBvciBy
ZWxhdGl2ZSB0byB0aGUgY3VycmVudAotIyB3b3JraW5nIGRpcmVjdG9yeSwgdW5sZXNzIG90aGVy
d2lzZSBzcGVjaWZpZWQuCi1jbGFzcyBUZXN0UnVubmVyKG9iamVjdCk6Ci0gICIiIlByb3ZpZGVz
IGZhY2lsaXRpZXMgZm9yIHJ1bm5pbmcgUHl0aG9uIGFuZCBiaW5hcnkgdGVzdHMgZm9yIEdvb2ds
ZSBUZXN0LiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLAotICAgICAgICAgICAgICAgc2NyaXB0
X2RpciwKLSAgICAgICAgICAgICAgIGJ1aWxkX2Rpcl92YXJfbmFtZT0nR1RFU1RfQlVJTERfRElS
JywKLSAgICAgICAgICAgICAgIGluamVjdGVkX29zPW9zLAotICAgICAgICAgICAgICAgaW5qZWN0
ZWRfc3VicHJvY2Vzcz1zdWJwcm9jZXNzLAotICAgICAgICAgICAgICAgaW5qZWN0ZWRfYnVpbGRf
ZGlyX2ZpbmRlcj1fR2V0R3Rlc3RCdWlsZERpcik6Ci0gICAgIiIiSW5pdGlhbGl6ZXMgYSBUZXN0
UnVubmVyIGluc3RhbmNlLgotCi0gICAgQXJnczoKLSAgICAgIHNjcmlwdF9kaXI6ICAgICAgICAg
ICAgICAgIEZpbGUgcGF0aCB0byB0aGUgY2FsbGluZyBzY3JpcHQuCi0gICAgICBidWlsZF9kaXJf
dmFyX25hbWU6ICAgICAgICBOYW1lIG9mIHRoZSBlbnYgdmFyaWFibGUgdXNlZCB0byBwYXNzIHRo
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIGRpcmVjdG9yeSBw
YXRoIHRvIHRoZSBpbnZva2VkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
cy4KLSAgICAgIGluamVjdGVkX29zOiAgICAgICAgICAgICAgIHN0YW5kYXJkIG9zIG1vZHVsZSBv
ciBhIG1vY2svc3R1YiBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rp
bmcuCi0gICAgICBpbmplY3RlZF9zdWJwcm9jZXNzOiAgICAgICBzdGFuZGFyZCBzdWJwcm9jZXNz
IG1vZHVsZSBvciBhIG1vY2svc3R1YgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yIHRlc3RpbmcKLSAgICAgIGluamVjdGVkX2J1aWxkX2Rpcl9maW5kZXI6IGZ1bmN0aW9uIHRo
YXQgZGV0ZXJtaW5lcyB0aGUgcGF0aCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KLSAgICAiIiIKLQotICAgIHNlbGYub3MgPSBpbmplY3Rl
ZF9vcwotICAgIHNlbGYuc3VicHJvY2VzcyA9IGluamVjdGVkX3N1YnByb2Nlc3MKLSAgICBzZWxm
LmJ1aWxkX2Rpcl9maW5kZXIgPSBpbmplY3RlZF9idWlsZF9kaXJfZmluZGVyCi0gICAgc2VsZi5i
dWlsZF9kaXJfdmFyX25hbWUgPSBidWlsZF9kaXJfdmFyX25hbWUKLSAgICBzZWxmLnNjcmlwdF9k
aXIgPSBzY3JpcHRfZGlyCi0KLSAgZGVmIF9HZXRCdWlsZERpckZvckNvbmZpZyhzZWxmLCBjb25m
aWcpOgotICAgICIiIlJldHVybnMgdGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgYSBnaXZlbiBjb25m
aWd1cmF0aW9uLiIiIgotCi0gICAgcmV0dXJuIHNlbGYuYnVpbGRfZGlyX2ZpbmRlcihzZWxmLm9z
LCBzZWxmLnNjcmlwdF9kaXIsIGNvbmZpZykKLQotICBkZWYgX1J1bihzZWxmLCBhcmdzKToKLSAg
ICAiIiJSdW5zIHRoZSBleGVjdXRhYmxlIHdpdGggZ2l2ZW4gYXJncyAoYXJnc1swXSBpcyB0aGUg
ZXhlY3V0YWJsZSBuYW1lKS4KLQotICAgIEFyZ3M6Ci0gICAgICBhcmdzOiBDb21tYW5kIGxpbmUg
YXJndW1lbnRzIGZvciB0aGUgcHJvY2Vzcy4KLQotICAgIFJldHVybnM6Ci0gICAgICBQcm9jZXNz
J3MgZXhpdCBjb2RlIGlmIGl0IGV4aXRzIG5vcm1hbGx5LCBvciAtc2lnbmFsIGlmIHRoZSBwcm9j
ZXNzIGlzCi0gICAgICBraWxsZWQgYnkgYSBzaWduYWwuCi0gICAgIiIiCi0KLSAgICBpZiBzZWxm
LnN1YnByb2Nlc3M6Ci0gICAgICByZXR1cm4gc2VsZi5zdWJwcm9jZXNzLlBvcGVuKGFyZ3MpLndh
aXQoKQotICAgIGVsc2U6Ci0gICAgICByZXR1cm4gc2VsZi5vcy5zcGF3bnYoc2VsZi5vcy5QX1dB
SVQsIGFyZ3NbMF0sIGFyZ3MpCi0KLSAgZGVmIF9SdW5CaW5hcnlUZXN0KHNlbGYsIHRlc3QpOgot
ICAgICIiIlJ1bnMgdGhlIGJpbmFyeSB0ZXN0IGdpdmVuIGl0cyBwYXRoLgotCi0gICAgQXJnczoK
LSAgICAgIHRlc3Q6IFBhdGggdG8gdGhlIHRlc3QgYmluYXJ5LgotCi0gICAgUmV0dXJuczoKLSAg
ICAgIFByb2Nlc3MncyBleGl0IGNvZGUgaWYgaXQgZXhpdHMgbm9ybWFsbHksIG9yIC1zaWduYWwg
aWYgdGhlIHByb2Nlc3MgaXMKLSAgICAgIGtpbGxlZCBieSBhIHNpZ25hbC4KLSAgICAiIiIKLQot
ICAgIHJldHVybiBzZWxmLl9SdW4oW3Rlc3RdKQotCi0gIGRlZiBfUnVuUHl0aG9uVGVzdChzZWxm
LCB0ZXN0LCBidWlsZF9kaXIpOgotICAgICIiIlJ1bnMgdGhlIFB5dGhvbiB0ZXN0IHNjcmlwdCB3
aXRoIHRoZSBzcGVjaWZpZWQgYnVpbGQgZGlyZWN0b3J5LgotCi0gICAgQXJnczoKLSAgICAgIHRl
c3Q6IFBhdGggdG8gdGhlIHRlc3QncyBQeXRob24gc2NyaXB0LgotICAgICAgYnVpbGRfZGlyOiBQ
YXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHRlc3QgYmluYXJ5IGlzIHRvIGJlIGZvdW5k
LgotCi0gICAgUmV0dXJuczoKLSAgICAgIFByb2Nlc3MncyBleGl0IGNvZGUgaWYgaXQgZXhpdHMg
bm9ybWFsbHksIG9yIC1zaWduYWwgaWYgdGhlIHByb2Nlc3MgaXMKLSAgICAgIGtpbGxlZCBieSBh
IHNpZ25hbC4KLSAgICAiIiIKLQotICAgIG9sZF9idWlsZF9kaXIgPSBzZWxmLm9zLmVudmlyb24u
Z2V0KHNlbGYuYnVpbGRfZGlyX3Zhcl9uYW1lKQotCi0gICAgdHJ5OgotICAgICAgc2VsZi5vcy5l
bnZpcm9uW3NlbGYuYnVpbGRfZGlyX3Zhcl9uYW1lXSA9IGJ1aWxkX2RpcgotCi0gICAgICAjIElm
IHRoaXMgc2NyaXB0IGlzIHJ1biBvbiBhIFdpbmRvd3MgbWFjaGluZSB0aGF0IGhhcyBubyBhc3Nv
Y2lhdGlvbgotICAgICAgIyBiZXR3ZWVuIHRoZSAucHkgZXh0ZW5zaW9uIGFuZCBhIHB5dGhvbiBp
bnRlcnByZXRlciwgc2ltcGx5IHBhc3NpbmcKLSAgICAgICMgdGhlIHNjcmlwdCBuYW1lIGludG8g
c3VicHJvY2Vzcy5Qb3Blbi9vcy5zcGF3biB3aWxsIG5vdCB3b3JrLgotICAgICAgcHJpbnQgJ1J1
bm5pbmcgJXMgLiAuIC4nICUgKHRlc3QsKQotICAgICAgcmV0dXJuIHNlbGYuX1J1bihbc3lzLmV4
ZWN1dGFibGUsIHRlc3RdKQotCi0gICAgZmluYWxseToKLSAgICAgIGlmIG9sZF9idWlsZF9kaXIg
aXMgTm9uZToKLSAgICAgICAgZGVsIHNlbGYub3MuZW52aXJvbltzZWxmLmJ1aWxkX2Rpcl92YXJf
bmFtZV0KLSAgICAgIGVsc2U6Ci0gICAgICAgIHNlbGYub3MuZW52aXJvbltzZWxmLmJ1aWxkX2Rp
cl92YXJfbmFtZV0gPSBvbGRfYnVpbGRfZGlyCi0KLSAgZGVmIF9GaW5kRmlsZXNCeVJlZ2V4KHNl
bGYsIGRpcmVjdG9yeSwgcmVnZXgpOgotICAgICIiIlJldHVybnMgZmlsZXMgaW4gYSBkaXJlY3Rv
cnkgd2hvc2UgbmFtZXMgbWF0Y2ggYSByZWd1bGFyIGV4cHJlc3Npb24uCi0KLSAgICBBcmdzOgot
ICAgICAgZGlyZWN0b3J5OiBQYXRoIHRvIHRoZSBkaXJlY3RvcnkgdG8gc2VhcmNoIGZvciBmaWxl
cy4KLSAgICAgIHJlZ2V4OiBSZWd1bGFyIGV4cHJlc3Npb24gdG8gZmlsdGVyIGZpbGUgbmFtZXMu
Ci0KLSAgICBSZXR1cm5zOgotICAgICAgVGhlIGxpc3Qgb2YgdGhlIHBhdGhzIHRvIHRoZSBmaWxl
cyBpbiB0aGUgZGlyZWN0b3J5LgotICAgICIiIgotCi0gICAgcmV0dXJuIFtzZWxmLm9zLnBhdGgu
am9pbihkaXJlY3RvcnksIGZpbGVfbmFtZSkKLSAgICAgICAgICAgIGZvciBmaWxlX25hbWUgaW4g
c2VsZi5vcy5saXN0ZGlyKGRpcmVjdG9yeSkKLSAgICAgICAgICAgIGlmIHJlLnNlYXJjaChyZWdl
eCwgZmlsZV9uYW1lKV0KLQotICAjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEltcGxlbWVudCBw
YXJzaW5nIG9mIHNjb25zL1NDb25zY3JpcHQgdG8gcnVuIGFsbAotICAjIHRlc3RzIGRlZmluZWQg
dGhlcmUgd2hlbiBubyB0ZXN0cyBhcmUgc3BlY2lmaWVkLgotICAjIFRPRE8odmxhZGxAZ29vZ2xl
LmNvbSk6IFVwZGF0ZSB0aGUgZG9jc3RyaW5nIGFmdGVyIHRoZSBjb2RlIGlzIGNoYW5nZWQgdG8K
LSAgIyB0cnkgdG8gdGVzdCBhbGwgYnVpbGRzIGRlZmluZWQgaW4gc2NvbnMvU0NvbnNjcmlwdC4K
LSAgZGVmIEdldFRlc3RzVG9SdW4oc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgYXJncywKLSAg
ICAgICAgICAgICAgICAgICAgbmFtZWRfY29uZmlndXJhdGlvbnMsCi0gICAgICAgICAgICAgICAg
ICAgIGJ1aWx0X2NvbmZpZ3VyYXRpb25zLAotICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVf
Y29uZmlndXJhdGlvbnM9Q09ORklHUywKLSAgICAgICAgICAgICAgICAgICAgcHl0aG9uX3Rlc3Rz
X3RvX3NraXA9Tm9uZSk6Ci0gICAgIiIiRGV0ZXJtaW5lcyB3aGF0IHRlc3RzIHNob3VsZCBiZSBy
dW4uCi0KLSAgICBBcmdzOgotICAgICAgYXJnczogVGhlIGxpc3Qgb2Ygbm9uLW9wdGlvbiBhcmd1
bWVudHMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgotICAgICAgbmFtZWRfY29uZmlndXJhdGlvbnM6
IFRoZSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIHNwZWNpZmllZCB2aWEgLWMgb3IgLWEuCi0gICAg
ICBidWlsdF9jb25maWd1cmF0aW9uczogVHJ1ZSBpZiAtYiBoYXMgYmVlbiBzcGVjaWZpZWQuCi0g
ICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM6IGEgbGlzdCBvZiBjb25maWd1cmF0aW9ucyBh
dmFpbGFibGUgb24gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCBwbGF0
Zm9ybSwgaW5qZWN0YWJsZSBmb3IgdGVzdGluZy4KLSAgICAgIHB5dGhvbl90ZXN0c190b19za2lw
OiBhIGNvbGxlY3Rpb24gb2YgKGNvbmZpZ3VyYXRpb24sIHB5dGhvbiB0ZXN0IG5hbWUpcwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgbmVlZCB0byBiZSBza2lwcGVkLgotCi0gICAg
UmV0dXJuczoKLSAgICAgIEEgdHVwbGUgd2l0aCAyIGVsZW1lbnRzOiB0aGUgbGlzdCBvZiBQeXRo
b24gdGVzdHMgdG8gcnVuIGFuZCB0aGUgbGlzdCBvZgotICAgICAgYmluYXJ5IHRlc3RzIHRvIHJ1
bi4KLSAgICAiIiIKLQotICAgIGlmIG5hbWVkX2NvbmZpZ3VyYXRpb25zID09ICdhbGwnOgotICAg
ICAgbmFtZWRfY29uZmlndXJhdGlvbnMgPSAnLCcuam9pbihhdmFpbGFibGVfY29uZmlndXJhdGlv
bnMpCi0KLSAgICBub3JtYWxpemVkX2FyZ3MgPSBbc2VsZi5vcy5wYXRoLm5vcm1wYXRoKGFyZykg
Zm9yIGFyZyBpbiBhcmdzXQotCi0gICAgIyBBIGZpbmFsIGxpc3Qgb2YgYnVpbGQgZGlyZWN0b3Jp
ZXMgd2hpY2ggd2lsbCBiZSBzZWFyY2hlZCBmb3IgdGhlIHRlc3QKLSAgICAjIGJpbmFyaWVzLiBG
aXJzdCwgYWRkIGRpcmVjdG9yaWVzIHNwZWNpZmllZCBkaXJlY3RseSBvbiB0aGUgY29tbWFuZAot
ICAgICMgbGluZS4KLSAgICBidWlsZF9kaXJzID0gZmlsdGVyKHNlbGYub3MucGF0aC5pc2Rpciwg
bm9ybWFsaXplZF9hcmdzKQotCi0gICAgIyBBZGRzIGJ1aWxkIGRpcmVjdG9yaWVzIHNwZWNpZmll
ZCB2aWEgdGhlaXIgYnVpbGQgY29uZmlndXJhdGlvbnMgdXNpbmcKLSAgICAjIHRoZSAtYyBvciAt
YSBvcHRpb25zLgotICAgIGlmIG5hbWVkX2NvbmZpZ3VyYXRpb25zOgotICAgICAgYnVpbGRfZGly
cyArPSBbc2VsZi5fR2V0QnVpbGREaXJGb3JDb25maWcoY29uZmlnKQotICAgICAgICAgICAgICAg
ICAgICAgZm9yIGNvbmZpZyBpbiBuYW1lZF9jb25maWd1cmF0aW9ucy5zcGxpdCgnLCcpXQotCi0g
ICAgIyBBZGRzIEtOT1dOIEJVSUxEIERJUkVDVE9SSUVTIGlmIC1iIGlzIHNwZWNpZmllZC4KLSAg
ICBpZiBidWlsdF9jb25maWd1cmF0aW9uczoKLSAgICAgIGJ1aWxkX2RpcnMgKz0gW3NlbGYuX0dl
dEJ1aWxkRGlyRm9yQ29uZmlnKGNvbmZpZykKLSAgICAgICAgICAgICAgICAgICAgIGZvciBjb25m
aWcgaW4gYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zCi0gICAgICAgICAgICAgICAgICAgICBpZiBz
ZWxmLm9zLnBhdGguaXNkaXIoc2VsZi5fR2V0QnVpbGREaXJGb3JDb25maWcoY29uZmlnKSldCi0K
LSAgICAjIElmIG5vIGRpcmVjdG9yaWVzIHdlcmUgc3BlY2lmaWVkIGVpdGhlciB2aWEgLWEsIC1i
LCAtYywgb3IgZGlyZWN0bHksIHVzZQotICAgICMgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbi4K
LSAgICBlbGlmIG5vdCBidWlsZF9kaXJzOgotICAgICAgYnVpbGRfZGlycyA9IFtzZWxmLl9HZXRC
dWlsZERpckZvckNvbmZpZyhhdmFpbGFibGVfY29uZmlndXJhdGlvbnNbMF0pXQotCi0gICAgIyBN
YWtlcyBzdXJlIHRoZXJlIGFyZSBubyBkdXBsaWNhdGlvbnMuCi0gICAgYnVpbGRfZGlycyA9IHNl
dHMuU2V0KGJ1aWxkX2RpcnMpCi0KLSAgICBlcnJvcnNfZm91bmQgPSBGYWxzZQotICAgIGxpc3Rl
ZF9weXRob25fdGVzdHMgPSBbXSAgIyBBbGwgUHl0aG9uIHRlc3RzIGxpc3RlZCBvbiB0aGUgY29t
bWFuZCBsaW5lLgotICAgIGxpc3RlZF9iaW5hcnlfdGVzdHMgPSBbXSAgIyBBbGwgYmluYXJ5IHRl
c3RzIGxpc3RlZCBvbiB0aGUgY29tbWFuZCBsaW5lLgotCi0gICAgdGVzdF9kaXIgPSBzZWxmLm9z
LnBhdGgubm9ybXBhdGgoc2VsZi5vcy5wYXRoLmpvaW4oc2VsZi5zY3JpcHRfZGlyLCAndGVzdCcp
KQotCi0gICAgIyBTaWZ0cyB0aHJvdWdoIG5vbi1kaXJlY3RvcnkgYXJndW1lbnRzIGZpc2hpbmcg
Zm9yIGFueSBQeXRob24gb3IgYmluYXJ5Ci0gICAgIyB0ZXN0cyBhbmQgZGV0ZWN0aW5nIGVycm9y
cy4KLSAgICBmb3IgYXJndW1lbnQgaW4gc2V0cy5TZXQobm9ybWFsaXplZF9hcmdzKSAtIGJ1aWxk
X2RpcnM6Ci0gICAgICBpZiByZS5zZWFyY2goUFlUSE9OX1RFU1RfUkVHRVgsIGFyZ3VtZW50KToK
LSAgICAgICAgcHl0aG9uX3BhdGggPSBzZWxmLm9zLnBhdGguam9pbih0ZXN0X2RpciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9zLnBhdGguYmFzZW5hbWUo
YXJndW1lbnQpKQotICAgICAgICBpZiBzZWxmLm9zLnBhdGguaXNmaWxlKHB5dGhvbl9wYXRoKToK
LSAgICAgICAgICBsaXN0ZWRfcHl0aG9uX3Rlc3RzLmFwcGVuZChweXRob25fcGF0aCkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdVbmFibGUgdG8gZmluZCBQeXRo
b24gdGVzdCAlcycgJSBhcmd1bWVudCkKLSAgICAgICAgICBlcnJvcnNfZm91bmQgPSBUcnVlCi0g
ICAgICBlbGlmIHJlLnNlYXJjaChCSU5BUllfVEVTVF9SRUdFWCwgYXJndW1lbnQpOgotICAgICAg
ICAjIFRoaXMgc2NyaXB0IGFsc28gYWNjZXB0cyBiaW5hcnkgdGVzdCBuYW1lcyBwcmVmaXhlZCB3
aXRoIHRlc3QvIGZvcgotICAgICAgICAjIHRoZSBjb252ZW5pZW5jZSBvZiB0eXBpbmcgdGhlbSAo
Y2FuIHVzZSBwYXRoIGNvbXBsZXRpb25zIGluIHRoZQotICAgICAgICAjIHNoZWxsKS4gIFN0cmlw
cyB0ZXN0LyBwcmVmaXggZnJvbSB0aGUgYmluYXJ5IHRlc3QgbmFtZXMuCi0gICAgICAgIGxpc3Rl
ZF9iaW5hcnlfdGVzdHMuYXBwZW5kKHNlbGYub3MucGF0aC5iYXNlbmFtZShhcmd1bWVudCkpCi0g
ICAgICBlbHNlOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCclcyBpcyBuZWl0aGVyIHRlc3Qg
bm9yIGJ1aWxkIGRpcmVjdG9yeScgJSBhcmd1bWVudCkKLSAgICAgICAgZXJyb3JzX2ZvdW5kID0g
VHJ1ZQotCi0gICAgaWYgZXJyb3JzX2ZvdW5kOgotICAgICAgcmV0dXJuIE5vbmUKLQotICAgIHVz
ZXJfaGFzX2xpc3RlZF90ZXN0cyA9IGxpc3RlZF9weXRob25fdGVzdHMgb3IgbGlzdGVkX2JpbmFy
eV90ZXN0cwotCi0gICAgaWYgdXNlcl9oYXNfbGlzdGVkX3Rlc3RzOgotICAgICAgc2VsZWN0ZWRf
cHl0aG9uX3Rlc3RzID0gbGlzdGVkX3B5dGhvbl90ZXN0cwotICAgIGVsc2U6Ci0gICAgICBzZWxl
Y3RlZF9weXRob25fdGVzdHMgPSBzZWxmLl9GaW5kRmlsZXNCeVJlZ2V4KHRlc3RfZGlyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWVRIT05f
VEVTVF9SRUdFWCkKLQotICAgICMgVE9ETyh2bGFkbEBnb29nbGUuY29tKTogc2tpcCB1bmJ1aWx0
IFB5dGhvbiB0ZXN0cyB3aGVuIC1iIGlzIHNwZWNpZmllZC4KLSAgICBweXRob25fdGVzdF9wYWly
cyA9IFtdCi0gICAgZm9yIGRpcmVjdG9yeSBpbiBidWlsZF9kaXJzOgotICAgICAgZm9yIHRlc3Qg
aW4gc2VsZWN0ZWRfcHl0aG9uX3Rlc3RzOgotICAgICAgICBjb25maWcgPSBfR2V0Q29uZmlnRnJv
bUJ1aWxkRGlyKGRpcmVjdG9yeSkKLSAgICAgICAgZmlsZV9uYW1lID0gb3MucGF0aC5iYXNlbmFt
ZSh0ZXN0KQotICAgICAgICBpZiBweXRob25fdGVzdHNfdG9fc2tpcCBhbmQgKGNvbmZpZywgZmls
ZV9uYW1lKSBpbiBweXRob25fdGVzdHNfdG9fc2tpcDoKLSAgICAgICAgICBwcmludCAoJ05PVEU6
ICVzIGlzIHNraXBwZWQgZm9yIGNvbmZpZ3VyYXRpb24gJXMsIGFzIGl0IGRvZXMgbm90ICcKLSAg
ICAgICAgICAgICAgICAgJ3dvcmsgdGhlcmUuJyAlIChmaWxlX25hbWUsIGNvbmZpZykpCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgcHl0aG9uX3Rlc3RfcGFpcnMuYXBwZW5kKChkaXJlY3Rvcnks
IHRlc3QpKQotCi0gICAgYmluYXJ5X3Rlc3RfcGFpcnMgPSBbXQotICAgIGZvciBkaXJlY3Rvcnkg
aW4gYnVpbGRfZGlyczoKLSAgICAgIGlmIHVzZXJfaGFzX2xpc3RlZF90ZXN0czoKLSAgICAgICAg
YmluYXJ5X3Rlc3RfcGFpcnMuZXh0ZW5kKAotICAgICAgICAgICAgWyhkaXJlY3RvcnksIHNlbGYu
b3MucGF0aC5qb2luKGRpcmVjdG9yeSwgdGVzdCkpCi0gICAgICAgICAgICAgZm9yIHRlc3QgaW4g
bGlzdGVkX2JpbmFyeV90ZXN0c10pCi0gICAgICBlbHNlOgotICAgICAgICB0ZXN0cyA9IHNlbGYu
X0ZpbmRGaWxlc0J5UmVnZXgoZGlyZWN0b3J5LCBCSU5BUllfVEVTVF9TRUFSQ0hfUkVHRVgpCi0g
ICAgICAgIGJpbmFyeV90ZXN0X3BhaXJzLmV4dGVuZChbKGRpcmVjdG9yeSwgdGVzdCkgZm9yIHRl
c3QgaW4gdGVzdHNdKQotCi0gICAgcmV0dXJuIChweXRob25fdGVzdF9wYWlycywgYmluYXJ5X3Rl
c3RfcGFpcnMpCi0KLSAgZGVmIFJ1blRlc3RzKHNlbGYsIHB5dGhvbl90ZXN0cywgYmluYXJ5X3Rl
c3RzKToKLSAgICAiIiJSdW5zIFB5dGhvbiBhbmQgYmluYXJ5IHRlc3RzIGFuZCByZXBvcnRzIHJl
c3VsdHMgdG8gdGhlIHN0YW5kYXJkIG91dHB1dC4KLQotICAgIEFyZ3M6Ci0gICAgICBweXRob25f
dGVzdHM6IExpc3Qgb2YgUHl0aG9uIHRlc3RzIHRvIHJ1biBpbiB0aGUgZm9ybSBvZiB0dXBsZXMK
LSAgICAgICAgICAgICAgICAgICAgKGJ1aWxkIGRpcmVjdG9yeSwgUHl0aG9uIHRlc3Qgc2NyaXB0
KS4KLSAgICAgIGJpbmFyeV90ZXN0czogTGlzdCBvZiBiaW5hcnkgdGVzdHMgdG8gcnVuIGluIHRo
ZSBmb3JtIG9mIHR1cGxlcwotICAgICAgICAgICAgICAgICAgICAoYnVpbGQgZGlyZWN0b3J5LCBi
aW5hcnkgZmlsZSkuCi0KLSAgICBSZXR1cm5zOgotICAgICAgVGhlIGV4aXQgY29kZSB0aGUgcHJv
Z3JhbSBzaG91bGQgcGFzcyBpbnRvIHN5cy5leGl0KCkuCi0gICAgIiIiCi0KLSAgICBpZiBweXRo
b25fdGVzdHMgb3IgYmluYXJ5X3Rlc3RzOgotICAgICAgcmVzdWx0cyA9IFtdCi0gICAgICBmb3Ig
ZGlyZWN0b3J5LCB0ZXN0IGluIHB5dGhvbl90ZXN0czoKLSAgICAgICAgcmVzdWx0cy5hcHBlbmQo
KGRpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9SdW5QeXRob25UZXN0KHRlc3QsIGRpcmVjdG9yeSkgPT0gMCkpCi0g
ICAgICBmb3IgZGlyZWN0b3J5LCB0ZXN0IGluIGJpbmFyeV90ZXN0czoKLSAgICAgICAgcmVzdWx0
cy5hcHBlbmQoKGRpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub3MucGF0
aC5iYXNlbmFtZSh0ZXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX1J1bkJpbmFy
eVRlc3QodGVzdCkgPT0gMCkpCi0KLSAgICAgIGZhaWxlZCA9IFsoZGlyZWN0b3J5LCB0ZXN0KQot
ICAgICAgICAgICAgICAgIGZvciAoZGlyZWN0b3J5LCB0ZXN0LCBzdWNjZXNzKSBpbiByZXN1bHRz
Ci0gICAgICAgICAgICAgICAgaWYgbm90IHN1Y2Nlc3NdCi0gICAgICBwcmludAotICAgICAgcHJp
bnQgJyVkIHRlc3RzIHJ1bi4nICUgbGVuKHJlc3VsdHMpCi0gICAgICBpZiBmYWlsZWQ6Ci0gICAg
ICAgIHByaW50ICdUaGUgZm9sbG93aW5nICVkIHRlc3RzIGZhaWxlZDonICUgbGVuKGZhaWxlZCkK
LSAgICAgICAgZm9yIChkaXJlY3RvcnksIHRlc3QpIGluIGZhaWxlZDoKLSAgICAgICAgICBwcmlu
dCAnJXMgaW4gJXMnICUgKHRlc3QsIGRpcmVjdG9yeSkKLSAgICAgICAgcmV0dXJuIDEKLSAgICAg
IGVsc2U6Ci0gICAgICAgIHByaW50ICdBbGwgdGVzdHMgcGFzc2VkIScKLSAgICBlbHNlOiAgIyBO
byB0ZXN0cyBkZWZpbmVkCi0gICAgICBwcmludCAnTm90aGluZyB0byB0ZXN0IC0gbm8gdGVzdHMg
c3BlY2lmaWVkIScKLQotICAgIHJldHVybiAwCi0KLQotZGVmIFBhcnNlQXJncyhwcm9qZWN0X25h
bWUsIGFyZ3Y9Tm9uZSwgaGVscF9jYWxsYmFjaz1Ob25lKToKLSAgIiIiUGFyc2VzIHRoZSBvcHRp
b25zIHJ1bl90ZXN0cy5weSB1c2VzLiIiIgotCi0gICMgU3VwcHJlc3NlcyBsaW50IHdhcm5pbmcg
b24gdW51c2VkIGFyZ3VtZW50cy4gIFRoZXNlIGFyZ3VtZW50cyBhcmUKLSAgIyByZXF1aXJlZCBi
eSBvcHRwYXJzZSwgZXZlbiB0aG91Z2ggdGhleSBhcmUgdW51c2VkLgotICAjIHB5bGludDogZGlz
YWJsZS1tc2c9VzA2MTMKLSAgZGVmIFByaW50SGVscChvcHRpb24sIG9wdCwgdmFsdWUsIHBhcnNl
cik6Ci0gICAgcHJpbnQgSEVMUF9NU0cgJSB7J3Byb2onOiBwcm9qZWN0X25hbWV9Ci0gICAgc3lz
LmV4aXQoMSkKLQotICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQotICBwYXJzZXIu
YWRkX29wdGlvbignLWMnLAotICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlJywKLSAg
ICAgICAgICAgICAgICAgICAgZGVzdD0nY29uZmlndXJhdGlvbnMnLAotICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PU5vbmUpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctYScsCi0gICAgICAgICAg
ICAgICAgICAgIGFjdGlvbj0nc3RvcmVfY29uc3QnLAotICAgICAgICAgICAgICAgICAgICBkZXN0
PSdjb25maWd1cmF0aW9ucycsCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAg
ICAgICAgICAgICAgICAgICAgY29uc3Q9J2FsbCcpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctYics
Ci0gICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfY29uc3QnLAotICAgICAgICAgICAg
ICAgICAgICBkZXN0PSdidWlsdF9jb25maWd1cmF0aW9ucycsCi0gICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0PVRydWUpCi0gICMgUmVw
bGFjZXMgdGhlIGJ1aWx0LWluIGhlbHAgd2l0aCBvdXJzLgotICBwYXJzZXIucmVtb3ZlX29wdGlv
bignLWgnKQotICBwYXJzZXIuYWRkX29wdGlvbignLWgnLCAnLS1oZWxwJywKLSAgICAgICAgICAg
ICAgICAgICAgYWN0aW9uPSdjYWxsYmFjaycsCi0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr
PWhlbHBfY2FsbGJhY2sgb3IgUHJpbnRIZWxwKQotICByZXR1cm4gcGFyc2VyLnBhcnNlX2FyZ3Mo
YXJndikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3Rz
X3V0aWxfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3RzX3V0
aWxfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOWM1NTcyNmZkNTBiMmEw
YzI1MDY4MTQxZDdlNjY5NDNmMGI2ZGU3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0c191
dGlsX3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2NzYgKzAsMCBAQAotIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0
cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJUZXN0cyBmb3IgcnVuX3Rlc3RzX3V0aWwu
cHkgdGVzdCBydW5uZXIgc2NyaXB0LiIiIgotCi1fX2F1dGhvcl9fID0gJ3ZsYWRsQGdvb2dsZS5j
b20gKFZsYWQgTG9zZXYpJwotCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNldHMKLWlt
cG9ydCB1bml0dGVzdAotCi1pbXBvcnQgcnVuX3Rlc3RzX3V0aWwKLQotCi1HVEVTVF9EQkdfRElS
ID0gJ3Njb25zL2J1aWxkL2RiZy9ndGVzdC9zY29ucycKLUdURVNUX09QVF9ESVIgPSAnc2NvbnMv
YnVpbGQvb3B0L2d0ZXN0L3Njb25zJwotR1RFU1RfT1RIRVJfRElSID0gJ3Njb25zL2J1aWxkL290
aGVyL2d0ZXN0L3Njb25zJwotCi0KLWRlZiBBZGRFeGVFeHRlbnNpb24ocGF0aCk6Ci0gICIiIkFw
cGVuZHMgLmV4ZSB0byB0aGUgcGF0aCBvbiBXaW5kb3dzIG9yIEN5Z3dpbi4iIiIKLQotICBpZiBy
dW5fdGVzdHNfdXRpbC5JU19XSU5ET1dTIG9yIHJ1bl90ZXN0c191dGlsLklTX0NZR1dJTjoKLSAg
ICByZXR1cm4gcGF0aCArICcuZXhlJwotICBlbHNlOgotICAgIHJldHVybiBwYXRoCi0KLQotY2xh
c3MgRmFrZVBhdGgob2JqZWN0KToKLSAgIiIiQSBmYWtlIG9zLnBhdGggbW9kdWxlIGZvciB0ZXN0
aW5nLiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBjdXJyZW50X2Rpcj1vcy5nZXRjd2QoKSwg
a25vd25fcGF0aHM9Tm9uZSk6Ci0gICAgc2VsZi5jdXJyZW50X2RpciA9IGN1cnJlbnRfZGlyCi0g
ICAgc2VsZi50cmVlID0ge30KLSAgICBzZWxmLnBhdGhfc2VwYXJhdG9yID0gb3Muc2VwCi0KLSAg
ICAjIGtub3duX3BhdGhzIGNvbnRhaW5zIGVpdGhlciBhYnNvbHV0ZSBvciByZWxhdGl2ZSBwYXRo
cy4gUmVsYXRpdmUgcGF0aHMKLSAgICAjIGFyZSBhYnNvbHV0aXplZCB3aXRoIHNlbGYuY3VycmVu
dF9kaXIuCi0gICAgaWYga25vd25fcGF0aHM6Ci0gICAgICBzZWxmLl9BZGRQYXRocyhrbm93bl9w
YXRocykKLQotICBkZWYgX0FkZFBhdGgoc2VsZiwgcGF0aCk6Ci0gICAgZW5kc193aXRoX3NsYXNo
ID0gcGF0aC5lbmRzd2l0aCgnLycpCi0gICAgcGF0aCA9IHNlbGYuYWJzcGF0aChwYXRoKQotICAg
IGlmIGVuZHNfd2l0aF9zbGFzaDoKLSAgICAgIHBhdGggKz0gc2VsZi5wYXRoX3NlcGFyYXRvcgot
ICAgIG5hbWVfbGlzdCA9IHBhdGguc3BsaXQoc2VsZi5wYXRoX3NlcGFyYXRvcikKLSAgICB0cmVl
ID0gc2VsZi50cmVlCi0gICAgZm9yIG5hbWUgaW4gbmFtZV9saXN0WzotMV06Ci0gICAgICBpZiBu
b3QgbmFtZToKLSAgICAgICAgY29udGludWUKLSAgICAgIGlmIG5hbWUgaW4gdHJlZToKLSAgICAg
ICAgdHJlZSA9IHRyZWVbbmFtZV0KLSAgICAgIGVsc2U6Ci0gICAgICAgIHRyZWVbbmFtZV0gPSB7
fQotICAgICAgICB0cmVlID0gdHJlZVtuYW1lXQotCi0gICAgbmFtZSA9IG5hbWVfbGlzdFstMV0K
LSAgICBpZiBuYW1lOgotICAgICAgaWYgbmFtZSBpbiB0cmVlOgotICAgICAgICBhc3NlcnQgdHJl
ZVtuYW1lXSA9PSAxCi0gICAgICBlbHNlOgotICAgICAgICB0cmVlW25hbWVdID0gMQotCi0gIGRl
ZiBfQWRkUGF0aHMoc2VsZiwgcGF0aHMpOgotICAgIGZvciBwYXRoIGluIHBhdGhzOgotICAgICAg
c2VsZi5fQWRkUGF0aChwYXRoKQotCi0gIGRlZiBQYXRoRWxlbWVudChzZWxmLCBwYXRoKToKLSAg
ICAiIiJSZXR1cm5zIGFuIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGRpcmVjdG9yeSB0cmVl
IGVudHJ5IGZvciBwYXRoLiIiIgotICAgIHRyZWUgPSBzZWxmLnRyZWUKLSAgICBuYW1lX2xpc3Qg
PSBzZWxmLmFic3BhdGgocGF0aCkuc3BsaXQoc2VsZi5wYXRoX3NlcGFyYXRvcikKLSAgICBmb3Ig
bmFtZSBpbiBuYW1lX2xpc3Q6Ci0gICAgICBpZiBub3QgbmFtZToKLSAgICAgICAgY29udGludWUK
LSAgICAgIHRyZWUgPSB0cmVlLmdldChuYW1lLCBOb25lKQotICAgICAgaWYgdHJlZSBpcyBOb25l
OgotICAgICAgICBicmVhawotCi0gICAgcmV0dXJuIHRyZWUKLQotICAjIFNpbGVuY2VzIHB5bGlu
dCB3YXJuaW5nIGFib3V0IHVzaW5nIHN0YW5kYXJkIG5hbWVzLgotICAjIHB5bGludDogZGlzYWJs
ZS1tc2c9QzY0MDkKLSAgZGVmIG5vcm1wYXRoKHNlbGYsIHBhdGgpOgotICAgIHJldHVybiBvcy5w
YXRoLm5vcm1wYXRoKHBhdGgpCi0KLSAgZGVmIGFic3BhdGgoc2VsZiwgcGF0aCk6Ci0gICAgcmV0
dXJuIHNlbGYubm9ybXBhdGgob3MucGF0aC5qb2luKHNlbGYuY3VycmVudF9kaXIsIHBhdGgpKQot
Ci0gIGRlZiBpc2ZpbGUoc2VsZiwgcGF0aCk6Ci0gICAgcmV0dXJuIHNlbGYuUGF0aEVsZW1lbnQo
c2VsZi5hYnNwYXRoKHBhdGgpKSA9PSAxCi0KLSAgZGVmIGlzZGlyKHNlbGYsIHBhdGgpOgotICAg
IHJldHVybiB0eXBlKHNlbGYuUGF0aEVsZW1lbnQoc2VsZi5hYnNwYXRoKHBhdGgpKSkgPT0gdHlw
ZShkaWN0KCkpCi0KLSAgZGVmIGJhc2VuYW1lKHNlbGYsIHBhdGgpOgotICAgIHJldHVybiBvcy5w
YXRoLmJhc2VuYW1lKHBhdGgpCi0KLSAgZGVmIGRpcm5hbWUoc2VsZiwgcGF0aCk6Ci0gICAgcmV0
dXJuIG9zLnBhdGguZGlybmFtZShwYXRoKQotCi0gIGRlZiBqb2luKHNlbGYsICprYXJncyk6Ci0g
ICAgcmV0dXJuIG9zLnBhdGguam9pbigqa2FyZ3MpCi0KLQotY2xhc3MgRmFrZU9zKG9iamVjdCk6
Ci0gICIiIkEgZmFrZSBvcyBtb2R1bGUgZm9yIHRlc3RpbmcuIiIiCi0gIFBfV0FJVCA9IG9zLlBf
V0FJVAotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBmYWtlX3BhdGhfbW9kdWxlKToKLSAgICBzZWxm
LnBhdGggPSBmYWtlX3BhdGhfbW9kdWxlCi0KLSAgICAjIFNvbWUgbWV0aG9kcy9hdHRyaWJ1dGVz
IGFyZSBkZWxlZ2F0ZWQgdG8gdGhlIHJlYWwgb3MgbW9kdWxlLgotICAgIHNlbGYuZW52aXJvbiA9
IG9zLmVudmlyb24KLQotICAjIHB5bGludDogZGlzYWJsZS1tc2c9QzY0MDkKLSAgZGVmIGxpc3Rk
aXIoc2VsZiwgcGF0aCk6Ci0gICAgYXNzZXJ0IHNlbGYucGF0aC5pc2RpcihwYXRoKQotICAgIHJl
dHVybiBzZWxmLnBhdGguUGF0aEVsZW1lbnQocGF0aCkuaXRlcmtleXMoKQotCi0gIGRlZiBzcGF3
bnYoc2VsZiwgd2FpdCwgZXhlY3V0YWJsZSwgKmthcmdzKToKLSAgICBhc3NlcnQgd2FpdCA9PSBG
YWtlT3MuUF9XQUlUCi0gICAgcmV0dXJuIHNlbGYuc3Bhd25faW1wbChleGVjdXRhYmxlLCBrYXJn
cykKLQotCi1jbGFzcyBHZXRUZXN0c1RvUnVuVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICIi
IkV4ZXJjaXNlcyBUZXN0UnVubmVyLkdldFRlc3RzVG9SdW4uIiIiCi0KLSAgZGVmIE5vcm1hbGl6
ZUdldFRlc3RzVG9SdW5SZXN1bHRzKHNlbGYsIHJlc3VsdHMpOgotICAgICIiIk5vcm1hbGl6ZXMg
cGF0aCBkYXRhIHJldHVybmVkIGZyb20gR2V0VGVzdHNUb1J1biBmb3IgY29tcGFyaXNvbi4iIiIK
LQotICAgIGRlZiBOb3JtYWxpemVQeXRob25UZXN0UGFpcihwYWlyKToKLSAgICAgICIiIk5vcm1h
bGl6ZXMgcGF0aCBkYXRhIGluIHRoZSAoZGlyZWN0b3J5LCBweXRob25fc2NyaXB0KSBwYWlyLiIi
IgotCi0gICAgICByZXR1cm4gKG9zLnBhdGgubm9ybXBhdGgocGFpclswXSksIG9zLnBhdGgubm9y
bXBhdGgocGFpclsxXSkpCi0KLSAgICBkZWYgTm9ybWFsaXplQmluYXJ5VGVzdFBhaXIocGFpcik6
Ci0gICAgICAiIiJOb3JtYWxpemVzIHBhdGggZGF0YSBpbiB0aGUgKGRpcmVjdG9yeSwgYmluYXJ5
X2V4ZWN1dGFibGUpIHBhaXIuIiIiCi0KLSAgICAgIGRpcmVjdG9yeSwgZXhlY3V0YWJsZSA9IG1h
cChvcy5wYXRoLm5vcm1wYXRoLCBwYWlyKQotCi0gICAgICAjIE9uIFdpbmRvd3MgYW5kIEN5Z3dp
biwgdGhlIHRlc3QgZmlsZSBuYW1lcyBoYXZlIHRoZSAuZXhlIGV4dGVuc2lvbiwgYnV0Ci0gICAg
ICAjIHRoZXkgY2FuIGJlIGludm9rZWQgZWl0aGVyIGJ5IG5hbWUgb3IgYnkgbmFtZStleHRlbnNp
b24uIE91ciB0ZXN0IG11c3QKLSAgICAgICMgYWNjb21tb2RhdGUgYm90aCBzaXR1YXRpb25zLgot
ICAgICAgaWYgcnVuX3Rlc3RzX3V0aWwuSVNfV0lORE9XUyBvciBydW5fdGVzdHNfdXRpbC5JU19D
WUdXSU46Ci0gICAgICAgIGV4ZWN1dGFibGUgPSByZS5zdWIocidcLmV4ZSQnLCAnJywgZXhlY3V0
YWJsZSkKLSAgICAgIHJldHVybiAoZGlyZWN0b3J5LCBleGVjdXRhYmxlKQotCi0gICAgcHl0aG9u
X3Rlc3RzID0gc2V0cy5TZXQobWFwKE5vcm1hbGl6ZVB5dGhvblRlc3RQYWlyLCByZXN1bHRzWzBd
KSkKLSAgICBiaW5hcnlfdGVzdHMgPSBzZXRzLlNldChtYXAoTm9ybWFsaXplQmluYXJ5VGVzdFBh
aXIsIHJlc3VsdHNbMV0pKQotICAgIHJldHVybiAocHl0aG9uX3Rlc3RzLCBiaW5hcnlfdGVzdHMp
Ci0KLSAgZGVmIEFzc2VydFJlc3VsdHNFcXVhbChzZWxmLCByZXN1bHRzLCBleHBlY3RlZCk6Ci0g
ICAgIiIiQXNzZXJ0cyByZXN1bHRzIHJldHVybmVkIGJ5IEdldFRlc3RzVG9SdW4gZXF1YWwgdG8g
ZXhwZWN0ZWQgcmVzdWx0cy4iIiIKLQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5Ob3JtYWxp
emVHZXRUZXN0c1RvUnVuUmVzdWx0cyhyZXN1bHRzKSwKLSAgICAgICAgICAgICAgICAgICAgIHNl
bGYuTm9ybWFsaXplR2V0VGVzdHNUb1J1blJlc3VsdHMoZXhwZWN0ZWQpLAotICAgICAgICAgICAg
ICAgICAgICAgJ0luY29ycmVjdCBzZXQgb2YgdGVzdHMgcmV0dXJuZWQ6XG4lc1xuZXhwZWN0ZWQ6
XG4lcycgJQotICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdHMsIGV4cGVjdGVkKSkKLQotICBk
ZWYgc2V0VXAoc2VsZik6Ci0gICAgc2VsZi5mYWtlX29zID0gRmFrZU9zKEZha2VQYXRoKAotICAg
ICAgICBjdXJyZW50X2Rpcj1vcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKHJ1bl90ZXN0
c191dGlsLl9fZmlsZV9fKSksCi0gICAgICAgIGtub3duX3BhdGhzPVtBZGRFeGVFeHRlbnNpb24o
R1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAgICAgICAgICAg
IEFkZEV4ZUV4dGVuc2lvbihHVEVTVF9PUFRfRElSICsgJy9ndGVzdF91bml0dGVzdCcpLAotICAg
ICAgICAgICAgICAgICAgICAgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weSddKSkKLSAgICBzZWxm
LmZha2VfY29uZmlndXJhdGlvbnMgPSBbJ2RiZycsICdvcHQnXQotICAgIHNlbGYudGVzdF9ydW5u
ZXIgPSBydW5fdGVzdHNfdXRpbC5UZXN0UnVubmVyKHNjcmlwdF9kaXI9Jy4nLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluamVjdGVkX29zPXNlbGYu
ZmFrZV9vcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmplY3RlZF9zdWJwcm9jZXNzPU5vbmUpCi0KLSAgZGVmIHRlc3RCaW5hcnlUZXN0c09ubHko
c2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3RzVG9SdW4gd2l0aCBwYXJhbWV0ZXJzIGRl
c2lnbmF0aW5nIGJpbmFyeSB0ZXN0cyBvbmx5LiIiIgotCi0gICAgIyBBIGRlZmF1bHQgYnVpbGQu
Ci0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIu
R2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAg
ICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmln
dXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFtdLAotICAgICAg
ICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkp
Ci0KLSAgICAjIEFuIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGRpcmVjdG9yeS4KLSAgICBzZWxmLkFz
c2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVu
KAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIsICdndGVzdF91bml0dGVzdCddLAotICAgICAg
ICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25m
aWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAg
ICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0Jyld
KSkKLQotICAgICMgQSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24uCi0gICAgc2VsZi5Bc3NlcnRS
ZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAg
ICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICdvdGhlcicsCi0gICAg
ICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxm
LmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX09U
SEVSX0RJUiwgR1RFU1RfT1RIRVJfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAj
IEFsbCBhdmFpbGFibGUgY29uZmlndXJhdGlvbnMKLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVh
bCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAg
WydndGVzdF91bml0dGVzdCddLAotICAgICAgICAgICAgJ2FsbCcsCi0gICAgICAgICAgICBGYWxz
ZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmln
dXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNU
X0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIs
IEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgQWxsIGJ1aWx0
IGNvbmZpZ3VyYXRpb25zICh1bmJ1aWx0IGRvbid0IGNhdXNlIGZhaWx1cmUpLgotICAgIHNlbGYu
QXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9S
dW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAnJywKLSAg
ICAgICAgICAgIFRydWUsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2Vs
Zi5mYWtlX2NvbmZpZ3VyYXRpb25zICsgWyd1bmJ1aWx0J10pLAotICAgICAgICAoW10sCi0gICAg
ICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0Jyks
Ci0gICAgICAgICAgKEdURVNUX09QVF9ESVIsIEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0
ZXN0JyldKSkKLQotICAgICMgQSBjb21iaW5hdGlvbiBvZiBhbiBleHBsaWNpdCBkaXJlY3Rvcnkg
YW5kIGEgY29uZmlndXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAg
ICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgW0dURVNUX0RC
R19ESVIsICdndGVzdF91bml0dGVzdCddLAotICAgICAgICAgICAgJ29wdCcsCi0gICAgICAgICAg
ICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2Vf
Y29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIs
IEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgKEdURVNUX09Q
VF9ESVIsIEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgU2Ft
ZSB0ZXN0IHNwZWNpZmllZCBpbiBhbiBleHBsaWNpdCBkaXJlY3RvcnkgYW5kIHZpYSBhIGNvbmZp
Z3VyYXRpb24uCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVz
dF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rl
c3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICdkYmcnLAotICAgICAgICAgICAgRmFsc2UsCi0g
ICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRp
b25zKSwKLSAgICAgICAgKFtdLAotICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdf
RElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIEFsbCBidWlsdCBjb25maWd1cmF0
aW9ucyArIGV4cGxpY2l0IGRpcmVjdG9yeSArIGV4cGxpY2l0IGNvbmZpZ3VyYXRpb24uCi0gICAg
c2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVz
dHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rlc3RfdW5pdHRlc3QnXSwK
LSAgICAgICAgICAgICdvcHQnLAotICAgICAgICAgICAgVHJ1ZSwKLSAgICAgICAgICAgIGF2YWls
YWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAo
W10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3Vu
aXR0ZXN0JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIsIEdURVNUX09QVF9ESVIgKyAnL2d0
ZXN0X3VuaXR0ZXN0JyldKSkKLQotICBkZWYgdGVzdFB5dGhvblRlc3RzT25seShzZWxmKToKLSAg
ICAiIiJFeGVyY2lzZXMgR2V0VGVzdHNUb1J1biB3aXRoIHBhcmFtZXRlcnMgZGVzaWduYXRpbmcg
UHl0aG9uIHRlc3RzIG9ubHkuIiIiCi0KLSAgICAjIEEgZGVmYXVsdCBidWlsZC4KLSAgICBzZWxm
LkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1Rv
UnVuKAotICAgICAgICAgICAgWydndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAn
JywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRp
b25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIs
ICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEFu
IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGRpcmVjdG9yeS4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNF
cXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAg
ICAgW0dURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAg
ICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmln
dXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJH
X0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAg
ICMgQSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24uCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1
YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAg
IFsnZ3Rlc3RfY29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJ290aGVyJywKLSAgICAgICAg
ICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFr
ZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbKEdURVNUX09USEVSX0RJUiwgJ3Rlc3QvZ3Rl
c3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAgICMgQWxsIGF2YWlsYWJs
ZSBjb25maWd1cmF0aW9ucwotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBz
ZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ3Rlc3QvZ3Rlc3Rf
Y29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJ2FsbCcsCi0gICAgICAgICAgICBGYWxzZSwK
LSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJh
dGlvbnMpLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0
LnB5JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Qu
cHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEFsbCBidWlsdCBjb25maWd1cmF0aW9ucyAo
dW5idWlsdCBkb24ndCBjYXVzZSBmYWlsdXJlKS4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVh
bCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAg
WydndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIFRy
dWUsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZp
Z3VyYXRpb25zICsgWyd1bmJ1aWx0J10pLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVz
dC9ndGVzdF9jb2xvcl90ZXN0LnB5JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIsICd0ZXN0
L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEEgY29tYmlu
YXRpb24gb2YgYW4gZXhwbGljaXQgZGlyZWN0b3J5IGFuZCBhIGNvbmZpZ3VyYXRpb24uCi0gICAg
c2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVz
dHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rlc3RfY29sb3JfdGVzdC5w
eSddLAotICAgICAgICAgICAgJ29wdCcsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAg
IGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAg
ICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyksCi0gICAg
ICAgICAgKEdURVNUX09QVF9ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAg
ICAgICBbXSkpCi0KLSAgICAjIFNhbWUgdGVzdCBzcGVjaWZpZWQgaW4gYW4gZXhwbGljaXQgZGly
ZWN0b3J5IGFuZCB2aWEgYSBjb25maWd1cmF0aW9uLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0Vx
dWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAg
ICBbR1RFU1RfREJHX0RJUiwgJ2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICdk
YmcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJh
dGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJ
UiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAgICMg
QWxsIGJ1aWx0IGNvbmZpZ3VyYXRpb25zICsgZXhwbGljaXQgZGlyZWN0b3J5ICsgZXhwbGljaXQg
Y29uZmlndXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2Vs
Zi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIs
ICdndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnb3B0JywKLSAgICAgICAgICAg
IFRydWUsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2Nv
bmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29s
b3JfdGVzdC5weScpLAotICAgICAgICAgIChHVEVTVF9PUFRfRElSLCAndGVzdC9ndGVzdF9jb2xv
cl90ZXN0LnB5JyldLAotICAgICAgICAgW10pKQotCi0gIGRlZiB0ZXN0Q29tYmluYXRpb25PZkJp
bmFyeUFuZFB5dGhvblRlc3RzKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBHZXRUZXN0c1RvUnVu
IHdpdGggbWl4ZWQgYmluYXJ5L1B5dGhvbiB0ZXN0cy4iIiIKLQotICAgICMgVXNlIG9ubHkgZGVm
YXVsdCBjb25maWd1cmF0aW9uIGZvciB0aGlzIHRlc3QuCi0KLSAgICAjIE5laXRoZXIgYmluYXJ5
IG5vciBQeXRob24gdGVzdHMgYXJlIHNwZWNpZmllZCBzbyBmaW5kIGFsbC4KLSAgICBzZWxmLkFz
c2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVu
KAotICAgICAgICAgICAgW10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAot
ICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0
aW9ucyksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Qu
cHknKV0sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0
X3VuaXR0ZXN0JyldKSkKLQotICAgICMgU3BlY2lmeWluZyBib3RoIGJpbmFyeSBhbmQgUHl0aG9u
IHRlc3RzLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3Rf
cnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X3VuaXR0ZXN0JywgJ2d0
ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFsc2Us
Ci0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3Vy
YXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVz
dC5weScpXSwKLSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rl
c3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBTcGVjaWZ5aW5nIGJpbmFyeSB0ZXN0cyBzdXBwcmVz
c2VzIFB5dGhvbiB0ZXN0cy4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAg
c2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF91bml0
dGVzdCddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAg
IGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAg
ICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0
ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgIyBTcGVjaWZ5aW5nIFB5dGhvbiB0ZXN0cyBzdXBwcmVz
c2VzIGJpbmFyeSB0ZXN0cy4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAg
c2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF9jb2xv
cl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAg
ICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyks
Ci0gICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0s
Ci0gICAgICAgICBbXSkpCi0KLSAgZGVmIHRlc3RJZ25vcmVzTm9uVGVzdEZpbGVzKHNlbGYpOgot
ICAgICIiIlZlcmlmaWVzIHRoYXQgR2V0VGVzdHNUb1J1biBpZ25vcmVzIG5vbi10ZXN0IGZpbGVz
IGluIHRoZSBmaWxlc3lzdGVtLiIiIgotCi0gICAgc2VsZi5mYWtlX29zID0gRmFrZU9zKEZha2VQ
YXRoKAotICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1l
KHJ1bl90ZXN0c191dGlsLl9fZmlsZV9fKSksCi0gICAgICAgIGtub3duX3BhdGhzPVtBZGRFeGVF
eHRlbnNpb24oR1RFU1RfREJHX0RJUiArICcvZ3Rlc3Rfbm9udGVzdCcpLAotICAgICAgICAgICAg
ICAgICAgICAgJ3Rlc3QvJ10pKQotICAgIHNlbGYudGVzdF9ydW5uZXIgPSBydW5fdGVzdHNfdXRp
bC5UZXN0UnVubmVyKHNjcmlwdF9kaXI9Jy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluamVjdGVkX29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3RlZF9zdWJwcm9j
ZXNzPU5vbmUpCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVz
dF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgJycs
Ci0gICAgICAgICAgICBUcnVlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25z
PXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbXSwgW10pKQotCi0gIGRlZiB0
ZXN0V29ya3NGcm9tRGlmZmVyZW50RGlyKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBHZXRUZXN0
c1RvUnVuIGZyb20gYSBkaXJlY3RvcnkgZGlmZmVyZW50IGZyb20gcnVuX3Rlc3QucHkncy4iIiIK
LQotICAgICMgSGVyZSB3ZSBzaW11bGF0ZSBhbiB0ZXN0IHNjcmlwdCBpbiBkaXJlY3RvcnkgL2Qv
IGNhbGxlZCBmcm9tIHRoZQotICAgICMgZGlyZWN0b3J5IC9hL2IvYy8uCi0gICAgc2VsZi5mYWtl
X29zID0gRmFrZU9zKEZha2VQYXRoKAotICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRoLmFic3Bh
dGgoJy9hL2IvYycpLAotICAgICAgICBrbm93bl9wYXRocz1bCi0gICAgICAgICAgICAnL2EvYi9j
LycsCi0gICAgICAgICAgICBBZGRFeGVFeHRlbnNpb24oJy9kLycgKyBHVEVTVF9EQkdfRElSICsg
Jy9ndGVzdF91bml0dGVzdCcpLAotICAgICAgICAgICAgQWRkRXhlRXh0ZW5zaW9uKCcvZC8nICsg
R1RFU1RfT1BUX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAgICcvZC90ZXN0
L2d0ZXN0X2NvbG9yX3Rlc3QucHknXSkpCi0gICAgc2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zID0g
WydkYmcnLCAnb3B0J10KLSAgICBzZWxmLnRlc3RfcnVubmVyID0gcnVuX3Rlc3RzX3V0aWwuVGVz
dFJ1bm5lcihzY3JpcHRfZGlyPScvZC8nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluamVjdGVkX29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3RlZF9zdWJwcm9jZXNz
PU5vbmUpCi0gICAgIyBBIGJpbmFyeSB0ZXN0LgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFs
KAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBb
J2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAot
ICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0
aW9ucyksCi0gICAgICAgIChbXSwKLSAgICAgICAgIFsoJy9kLycgKyBHVEVTVF9EQkdfRElSLCAn
L2QvJyArIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgQSBQ
eXRob24gdGVzdC4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50
ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF9jb2xvcl90ZXN0
LnB5J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAg
YXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAg
ICAgIChbKCcvZC8nICsgR1RFU1RfREJHX0RJUiwgJy9kL3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5w
eScpXSwgW10pKQotCi0gIGRlZiB0ZXN0Tm9uVGVzdEJpbmFyeShzZWxmKToKLSAgICAiIiJFeGVy
Y2lzZXMgR2V0VGVzdHNUb1J1biB3aXRoIGEgbm9uLXRlc3QgcGFyYW1ldGVyLiIiIgotCi0gICAg
c2VsZi5hc3NlcnRfKAotICAgICAgICBub3Qgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVu
KAotICAgICAgICAgICAgWydndGVzdF91bml0dGVzdF9ub3RfcmVhbGx5J10sCi0gICAgICAgICAg
ICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3Vy
YXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucykpCi0KLSAgZGVmIHRlc3ROb25FeGlzdGlu
Z1B5dGhvblRlc3Qoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3RzVG9SdW4gd2l0aCBh
IG5vbi1leGlzdGVudCBQeXRob24gdGVzdCBwYXJhbWV0ZXIuIiIiCi0KLSAgICBzZWxmLmFzc2Vy
dF8oCi0gICAgICAgIG5vdCBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAg
ICAgICBbJ25vbmV4aXN0ZW50X3Rlc3QucHknXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAg
ICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtl
X2NvbmZpZ3VyYXRpb25zKSkKLQotICBpZiBydW5fdGVzdHNfdXRpbC5JU19XSU5ET1dTIG9yIHJ1
bl90ZXN0c191dGlsLklTX0NZR1dJTjoKLQotICAgIGRlZiB0ZXN0RG9lc05vdFBpY2tOb25FeGVG
aWxlc09uV2luZG93cyhzZWxmKToKLSAgICAgICIiIlZlcmlmaWVzIHRoYXQgR2V0VGVzdHNUb1J1
biBkb2VzIG5vdCBmaW5kIF90ZXN0IGZpbGVzIG9uIFdpbmRvd3MuIiIiCi0KLSAgICAgIHNlbGYu
ZmFrZV9vcyA9IEZha2VPcyhGYWtlUGF0aCgKLSAgICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRo
LmFic3BhdGgob3MucGF0aC5kaXJuYW1lKHJ1bl90ZXN0c191dGlsLl9fZmlsZV9fKSksCi0gICAg
ICAgICAga25vd25fcGF0aHM9WycvZC8nICsgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdGVzdCcs
ICd0ZXN0LyddKSkKLSAgICAgIHNlbGYudGVzdF9ydW5uZXIgPSBydW5fdGVzdHNfdXRpbC5UZXN0
UnVubmVyKHNjcmlwdF9kaXI9Jy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5qZWN0ZWRfb3M9c2VsZi5mYWtlX29zLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5qZWN0ZWRfc3VicHJvY2Vz
cz1Ob25lKQotICAgICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgICAgc2VsZi50
ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgICBbXSwKLSAgICAgICAgICAg
ICAgJycsCi0gICAgICAgICAgICAgIFRydWUsCi0gICAgICAgICAgICAgIGF2YWlsYWJsZV9jb25m
aWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAgIChbXSwgW10p
KQotCi0KLWNsYXNzIFJ1blRlc3RzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICIiIkV4ZXJj
aXNlcyBUZXN0UnVubmVyLlJ1blRlc3RzLiIiIgotCi0gIGRlZiBTcGF3blN1Y2Nlc3Moc2VsZiwg
dW51c2VkX2V4ZWN1dGFibGUsIHVudXNlZF9hcmd2KToKLSAgICAiIiJGYWtlcyB0ZXN0IHN1Y2Nl
c3MgYnkgcmV0dXJuaW5nIDAgYXMgYW4gZXhpdCBjb2RlLiIiIgotCi0gICAgc2VsZi5udW1fc3Bh
d25fY2FsbHMgKz0gMQotICAgIHJldHVybiAwCi0KLSAgZGVmIFNwYXduRmFpbHVyZShzZWxmLCB1
bnVzZWRfZXhlY3V0YWJsZSwgdW51c2VkX2FyZ3YpOgotICAgICIiIkZha2VzIHRlc3Qgc3VjY2Vz
cyBieSByZXR1cm5pbmcgMSBhcyBhbiBleGl0IGNvZGUuIiIiCi0KLSAgICBzZWxmLm51bV9zcGF3
bl9jYWxscyArPSAxCi0gICAgcmV0dXJuIDEKLQotICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgc2Vs
Zi5mYWtlX29zID0gRmFrZU9zKEZha2VQYXRoKAotICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRo
LmFic3BhdGgob3MucGF0aC5kaXJuYW1lKHJ1bl90ZXN0c191dGlsLl9fZmlsZV9fKSksCi0gICAg
ICAgIGtub3duX3BhdGhzPVsKLSAgICAgICAgICAgIEFkZEV4ZUV4dGVuc2lvbihHVEVTVF9EQkdf
RElSICsgJy9ndGVzdF91bml0dGVzdCcpLAotICAgICAgICAgICAgQWRkRXhlRXh0ZW5zaW9uKEdU
RVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgICAndGVzdC9ndGVz
dF9jb2xvcl90ZXN0LnB5J10pKQotICAgIHNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyA9IFsnZGJn
JywgJ29wdCddCi0gICAgc2VsZi50ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5u
ZXIoCi0gICAgICAgIHNjcmlwdF9kaXI9b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSBvciAnLics
Ci0gICAgICAgIGluamVjdGVkX29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAgaW5qZWN0ZWRfc3Vi
cHJvY2Vzcz1Ob25lKQotICAgIHNlbGYubnVtX3NwYXduX2NhbGxzID0gMCAgIyBBIG51bWJlciBv
ZiBjYWxscyB0byBzcGF3bi4KLQotICBkZWYgdGVzdFJ1blB5dGhvblRlc3RTdWNjZXNzKHNlbGYp
OgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0cyB0byBoYW5kbGUgYSBQeXRob24gdGVzdCBzdWNj
ZXNzLiIiIgotCi0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxmLlNwYXduU3VjY2Vz
cwotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuUnVuVGVz
dHMoCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Qu
cHknKV0sCi0gICAgICAgICAgICBbXSksCi0gICAgICAgIDApCi0gICAgc2VsZi5hc3NlcnRFcXVh
bChzZWxmLm51bV9zcGF3bl9jYWxscywgMSkKLQotICBkZWYgdGVzdFJ1bkJpbmFyeVRlc3RTdWNj
ZXNzKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0cyB0byBoYW5kbGUgYSBiaW5hcnkg
dGVzdCBzdWNjZXNzLiIiIgotCi0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxmLlNw
YXduU3VjY2VzcwotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5u
ZXIuUnVuVGVzdHMoCi0gICAgICAgICAgICBbXSwKLSAgICAgICAgICAgIFsoR1RFU1RfREJHX0RJ
UiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pLAotICAgICAgICAwKQotICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5udW1fc3Bhd25fY2FsbHMsIDEpCi0KLSAgZGVmIHRlc3RS
dW5QeXRob25UZXN0RmF1aWx1cmUoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIFJ1blRlc3RzIHRv
IGhhbmRsZSBhIFB5dGhvbiB0ZXN0IGZhaWx1cmUuIiIiCi0KLSAgICBzZWxmLmZha2Vfb3Muc3Bh
d25faW1wbCA9IHNlbGYuU3Bhd25GYWlsdXJlCi0gICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAg
ICAgc2VsZi50ZXN0X3J1bm5lci5SdW5UZXN0cygKLSAgICAgICAgICAgIFsoR1RFU1RfREJHX0RJ
UiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgICAgIFtdKSwKLSAgICAg
ICAgMSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnVtX3NwYXduX2NhbGxzLCAxKQotCi0g
IGRlZiB0ZXN0UnVuQmluYXJ5VGVzdEZhaWx1cmUoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIFJ1
blRlc3RzIHRvIGhhbmRsZSBhIGJpbmFyeSB0ZXN0IGZhaWx1cmUuIiIiCi0KLSAgICBzZWxmLmZh
a2Vfb3Muc3Bhd25faW1wbCA9IHNlbGYuU3Bhd25GYWlsdXJlCi0gICAgc2VsZi5hc3NlcnRFcXVh
bCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5SdW5UZXN0cygKLSAgICAgICAgICAgIFtdLAot
ICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0
dGVzdCcpXSksCi0gICAgICAgIDEpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm51bV9zcGF3
bl9jYWxscywgMSkKLQotICBkZWYgdGVzdENvbWJpbmVkVGVzdFN1Y2Nlc3Moc2VsZik6Ci0gICAg
IiIiRXhlcmNpc2VzIFJ1blRlc3RzIHRvIGhhbmRsZSBhIHN1Y2Nlc3Mgb2YgYm90aCBQeXRob24g
YW5kIGJpbmFyeSB0ZXN0LiIiIgotCi0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxm
LlNwYXduU3VjY2VzcwotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9y
dW5uZXIuUnVuVGVzdHMoCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19E
SVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldLAotICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBH
VEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSksCi0gICAgICAgIDApCi0gICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZWxmLm51bV9zcGF3bl9jYWxscywgMikKLQotICBkZWYgdGVzdENvbWJp
bmVkVGVzdFN1Y2Nlc3NBbmRGYWlsdXJlKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0
cyB0byBoYW5kbGUgYSBzdWNjZXNzIG9mIGJvdGggUHl0aG9uIGFuZCBiaW5hcnkgdGVzdC4iIiIK
LQotICAgIGRlZiBTcGF3bkltcGwoZXhlY3V0YWJsZSwgYXJndik6Ci0gICAgICBzZWxmLm51bV9z
cGF3bl9jYWxscyArPSAxCi0gICAgICAjIFNpbXVsYXRlcyBmYWlsdXJlIG9mIGEgUHl0aG9uIHRl
c3QgYW5kIHN1Y2Nlc3Mgb2YgYSBiaW5hcnkgdGVzdC4KLSAgICAgIGlmICcucHknIGluIGV4ZWN1
dGFibGUgb3IgJy5weScgaW4gYXJndlswXToKLSAgICAgICAgcmV0dXJuIDEKLSAgICAgIGVsc2U6
Ci0gICAgICAgIHJldHVybiAwCi0KLSAgICBzZWxmLmZha2Vfb3Muc3Bhd25faW1wbCA9IFNwYXdu
SW1wbAotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuUnVu
VGVzdHMoCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0
ZXN0X3VuaXR0ZXN0JyldLAotICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdf
RElSICsgJy9ndGVzdF91bml0dGVzdCcpXSksCi0gICAgICAgIDApCi0gICAgc2VsZi5hc3NlcnRF
cXVhbChzZWxmLm51bV9zcGF3bl9jYWxscywgMikKLQotCi1jbGFzcyBQYXJzZUFyZ3NUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKLSAgIiIiRXhlcmNpc2VzIFBhcnNlQXJncy4iIiIKLQotICBkZWYg
dGVzdE5vT3B0aW9ucyhzZWxmKToKLSAgICBvcHRpb25zLCBhcmdzID0gcnVuX3Rlc3RzX3V0aWwu
UGFyc2VBcmdzKCdndGVzdCcsIGFyZ3Y9WydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydEVx
dWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRfKG9wdGlvbnMuY29uZmln
dXJhdGlvbnMgaXMgTm9uZSkKLSAgICBzZWxmLmFzc2VydEZhbHNlKG9wdGlvbnMuYnVpbHRfY29u
ZmlndXJhdGlvbnMpCi0KLSAgZGVmIHRlc3RPcHRpb25DKHNlbGYpOgotICAgIG9wdGlvbnMsIGFy
Z3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoCi0gICAgICAgICdndGVzdCcsIGFyZ3Y9Wydz
Y3JpcHQucHknLCAnLWMnLCAnZGJnJ10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBbJ3Nj
cmlwdC5weSddKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5jb25maWd1cmF0aW9ucywg
J2RiZycpCi0gICAgc2VsZi5hc3NlcnRGYWxzZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRpb25z
KQotCi0gIGRlZiB0ZXN0T3B0aW9uQShzZWxmKToKLSAgICBvcHRpb25zLCBhcmdzID0gcnVuX3Rl
c3RzX3V0aWwuUGFyc2VBcmdzKCdndGVzdCcsIGFyZ3Y9WydzY3JpcHQucHknLCAnLWEnXSkKLSAg
ICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRF
cXVhbChvcHRpb25zLmNvbmZpZ3VyYXRpb25zLCAnYWxsJykKLSAgICBzZWxmLmFzc2VydEZhbHNl
KG9wdGlvbnMuYnVpbHRfY29uZmlndXJhdGlvbnMpCi0KLSAgZGVmIHRlc3RPcHRpb25CKHNlbGYp
OgotICAgIG9wdGlvbnMsIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoJ2d0ZXN0Jywg
YXJndj1bJ3NjcmlwdC5weScsICctYiddKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgWydz
Y3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydF8ob3B0aW9ucy5jb25maWd1cmF0aW9ucyBpcyBO
b25lKQotICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRpb25zKQot
Ci0gIGRlZiB0ZXN0T3B0aW9uQ0FuZE9wdGlvbkIoc2VsZik6Ci0gICAgb3B0aW9ucywgYXJncyA9
IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygKLSAgICAgICAgJ2d0ZXN0JywgYXJndj1bJ3Njcmlw
dC5weScsICctYycsICdkYmcnLCAnLWInXSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsn
c2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLmNvbmZpZ3VyYXRpb25z
LCAnZGJnJykKLSAgICBzZWxmLmFzc2VydFRydWUob3B0aW9ucy5idWlsdF9jb25maWd1cmF0aW9u
cykKLQotICBkZWYgdGVzdE9wdGlvbkgoc2VsZik6Ci0gICAgaGVscF9jYWxsZWQgPSBbRmFsc2Vd
Ci0KLSAgICAjIFN1cHByZXNzZXMgbGludCB3YXJuaW5nIG9uIHVudXNlZCBhcmd1bWVudHMuICBU
aGVzZSBhcmd1bWVudHMgYXJlCi0gICAgIyByZXF1aXJlZCBieSBvcHRwYXJzZSwgZXZlbiB0aG91
Z2ggdGhleSBhcmUgdW51c2VkLgotICAgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1XMDYxMwotICAg
IGRlZiBWZXJpZnlIZWxwKG9wdGlvbiwgb3B0LCB2YWx1ZSwgcGFyc2VyKToKLSAgICAgIGhlbHBf
Y2FsbGVkWzBdID0gVHJ1ZQotCi0gICAgIyBWZXJpZmllcyB0aGF0IC1oIGNhdXNlcyB0aGUgaGVs
cCBjYWxsYmFjayB0byBiZSBjYWxsZWQuCi0gICAgaGVscF9jYWxsZWRbMF0gPSBGYWxzZQotICAg
IF8sIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoCi0gICAgICAgICdndGVzdCcsIGFy
Z3Y9WydzY3JpcHQucHknLCAnLWgnXSwgaGVscF9jYWxsYmFjaz1WZXJpZnlIZWxwKQotICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYXJncywgWydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydFRydWUo
aGVscF9jYWxsZWRbMF0pCi0KLSAgICAjIFZlcmlmaWVzIHRoYXQgLS1oZWxwIGNhdXNlcyB0aGUg
aGVscCBjYWxsYmFjayB0byBiZSBjYWxsZWQuCi0gICAgaGVscF9jYWxsZWRbMF0gPSBGYWxzZQot
ICAgIF8sIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoCi0gICAgICAgICdndGVzdCcs
IGFyZ3Y9WydzY3JpcHQucHknLCAnLS1oZWxwJ10sIGhlbHBfY2FsbGJhY2s9VmVyaWZ5SGVscCkK
LSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3Nl
cnRUcnVlKGhlbHBfY2FsbGVkWzBdKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0g
IHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNv
ZGUvQ29uZmlnL0RlYnVnUHJvamVjdC54Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3hjb2RlL0NvbmZpZy9EZWJ1Z1Byb2plY3QueGNjb25maWcKaW5kZXggNTc2ZjNkOWJmMGUyNGY2
ZWU5ODkxODEzZTRlMThlNGYxYzFiZTQ2Mi4uNzZmM2FiMjk1YTkxMDY3OGM1NWM1MGZhN2Y4YWM3
NGU3NzMwMmY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29u
ZmlnL0RlYnVnUHJvamVjdC54Y2NvbmZpZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94
Y29kZS9Db25maWcvRGVidWdQcm9qZWN0LnhjY29uZmlnCkBAIC01LDcgKzUsNyBAQAogLy8gIGV4
YW1wbGVzLiBJdCBpcyBzZXQgaW4gdGhlICJCYXNlZCBPbjoiIGRyb3Bkb3duIGluIHRoZSAiUHJv
amVjdCIgaW5mbwogLy8gIGRpYWxvZy4KIC8vICBUaGlzIGZpbGUgaXMgYmFzZWQgb24gdGhlIFhj
b2RlIENvbmZpZ3VyYXRpb24gZmlsZXMgaW46Ci0vLyAgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L2dvb2dsZS10b29sYm94LWZvci1tYWMvCisvLyAgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9n
b29nbGUtdG9vbGJveC1mb3ItbWFjCiAvLyAKIAogI2luY2x1ZGUgIkdlbmVyYWwueGNjb25maWci
CkBAIC0yOSw5ICsyOSw2IEBAIE9USEVSX0NGTEFHUyA9ICQoT1RIRVJfQ0ZMQUdTKSAtRERFQlVH
PTEKIC8vIC8vIFR1cm5zIG9uIHNwZWNpYWwgQysrIFNUTCBjaGVja3MgdG8gImVuY291cmFnZSIg
Z29vZCBTVEwgdXNlCiAvLyBHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChHQ0NfUFJF
UFJPQ0VTU09SX0RFRklOSVRJT05TKSBfR0xJQkNYWF9ERUJVR19QRURBTlRJQyBfR0xJQkNYWF9E
RUJVRyBfR0xJQkNQUF9DT05DRVBUX0NIRUNLUwogCi0vLyBVc2VkIGJ5IEhFQURFUl9TRUFSQ0hf
UEFUSFMgaW4gR2VuZXJhbC54Y2NvbmZpZwotV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSID0g
JChCVUlMVF9QUk9EVUNUU19ESVIpL1dlYkNvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwot
CiBPTkxZX0FDVElWRV9BUkNIID0gWUVTCiAKIFNES1JPT1QgPSAkKFNES1JPT1RfJChVU0VfSU5U
RVJOQUxfU0RLKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9D
b25maWcvRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
eGNvZGUvQ29uZmlnL0ZyYW1ld29ya1RhcmdldC54Y2NvbmZpZwppbmRleCBmNGRhOWQyMzk5MTYz
NWFiZGNkYTgyYjZhMDZlYWMzZmM4NTg5MGFkLi43ZDAyNGNkMjk0ODY3YzE1NzMyYmUyZTg5Yzc5
Yjg3ZWJhZWRhZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9D
b25maWcvRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3hjb2RlL0NvbmZpZy9GcmFtZXdvcmtUYXJnZXQueGNjb25maWcKQEAgLTQsNyArNCw3IEBA
CiAvLyAgVGhlc2UgYXJlIEZyYW1ld29yayB0YXJnZXQgc2V0dGluZ3MgZm9yIHRoZSBndGVzdCBm
cmFtZXdvcmsgYW5kIGV4YW1wbGVzLiBJdAogLy8gIGlzIHNldCBpbiB0aGUgIkJhc2VkIE9uOiIg
ZHJvcGRvd24gaW4gdGhlICJUYXJnZXQiIGluZm8gZGlhbG9nLgogLy8gIFRoaXMgZmlsZSBpcyBi
YXNlZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBpbjoKLS8vICBodHRwOi8vY29k
ZS5nb29nbGUuY29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8KKy8vICBodHRwczovL2dpdGh1
Yi5jb20vZ29vZ2xlL2dvb2dsZS10b29sYm94LWZvci1tYWMKIC8vIAogCiAvLyBEeW5hbWljIGxp
YnMgbmVlZCB0byBiZSBwb3NpdGlvbiBpbmRlcGVuZGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0dlbmVyYWwueGNjb25maWcgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvR2VuZXJhbC54Y2NvbmZpZwppbmRleCAzYmQyYTU4
NmE1NzA1ZmNmNjZlYzJkOTU5MmFmYWMzZDhkNmQ3ZGUwLi41M2UwM2RlNTFjYzJmOWI3MTU2YmQ1
Njc0YTE3M2EwZjNhM2ZhNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94
Y29kZS9Db25maWcvR2VuZXJhbC54Y2NvbmZpZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC94Y29kZS9Db25maWcvR2VuZXJhbC54Y2NvbmZpZwpAQCAtMTgsNyArMTgsNyBAQCBHQ0NfVkVS
U0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CiAKIEFSQ0hTID0gJChB
UkNIU19TVEFOREFSRF8zMl82NF9CSVQpOwogCi1IRUFERVJfU0VBUkNIX1BBVEhTID0gJChCVUlM
VF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlICIkKFdFQkNPUkVfUFJJVkFURV9IRUFE
RVJTX0RJUikvRm9yd2FyZGluZ0hlYWRlcnMiIC4uLyAuLi9pbmNsdWRlLworSEVBREVSX1NFQVJD
SF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZSAuLi8gLi4v
aW5jbHVkZS8KIAogLy8gWmVyb2xpbmsgcHJldmVudHMgbGluayB3YXJuaW5ncyBzbyB0dXJuIGl0
IG9mZgogWkVST19MSU5LID0gTk8KQEAgLTU5LDggKzU5LDYgQEAgQUxXQVlTX1NFQVJDSF9VU0VS
X1BBVEhTID0gTk8KIC8vIFR1cm4gb24gcG9zaXRpb24gZGVwZW5kZW50IGNvZGUgZm9yIG1vc3Qg
Y2FzZXMgKG92ZXJyaWRkZW4gd2hlcmUgYXBwcm9wcmlhdGUpCiBHQ0NfRFlOQU1JQ19OT19QSUMg
PSBZRVMKIAotR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoR0NDX1BSRVBST0NFU1NP
Ul9ERUZJTklUSU9OUykgR1RFU1RfSEFTX1RSMV9UVVBMRT0wIEdURVNUX0hBU19SVFRJPTA7Ci0K
IENMQU5HX0NYWF9MSUJSQVJZID0gbGliYysrOwogCiBUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9N
QUpPUiA9ICQoTUFDX09TX1hfVkVSU0lPTl9NQUpPUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvUHJvZHVjdGlvblByb2plY3QueGNjb25maWcgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvUHJvZHVjdGlvblByb2plY3QueGNj
b25maWcKaW5kZXggMDE2YzY4NzhlOTc2MTAxODhkYWE4NjI5ZDM1MjFhYjk0Nzc2YmFjNi4uZDky
NzVmMDJmODU3MmEwMTgzNWM4NTA3OTdhZGFiY2I1MDQ1NjE5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1Byb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmln
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9Qcm9kdWN0aW9uUHJv
amVjdC54Y2NvbmZpZwpAQCAtMTAsMjUgKzEwLDYgQEAKIAogI2luY2x1ZGUgIlJlbGVhc2VQcm9q
ZWN0LnhjY29uZmlnIgogCi0vLyBVc2VkIGJ5IEhFQURFUl9TRUFSQ0hfUEFUSFMgaW4gR2VuZXJh
bC54Y2NvbmZpZwotV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSID0gJChXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVJfJChXS19VU0VfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVIpKTsKLVdFQkNP
UkVfUFJJVkFURV9IRUFERVJTX0RJUl9OTyA9ICQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdv
cmtzL1dlYktpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL1dlYkNvcmUuZnJhbWV3
b3JrL1ByaXZhdGVIZWFkZXJzOwotV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSX1lFUyA9ICQo
V0tfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVIpL1dlYkNvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFk
ZXJzOwotCi1GUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gJChXS19RVU9URURfT1ZFUlJJREVfRlJB
TUVXT1JLU19ESVIpICQoaW5oZXJpdGVkKTsKLQogT05MWV9BQ1RJVkVfQVJDSCA9IE5PCiAKIFNE
S1JPT1QgPSBtYWNvc3guaW50ZXJuYWw7Ci0KLVdLX0VNUFRZXyA9IFlFUzsKLVdLX05PVF8gPSBZ
RVM7Ci1XS19OT1RfWUVTID0gTk87Ci0KLVdLX1VTRV9PVkVSUklERV9GUkFNRVdPUktTX0RJUltz
ZGs9bWFjb3N4Kl0gPSAkKFdLX05PVF8kKFdLX0VNUFRZXyQoV0tfT1ZFUlJJREVfRlJBTUVXT1JL
U19ESVIpKSk7Ci0KLVdLX09WRVJSSURFX0ZSQU1FV09SS1NfRElSID0gJChXS19PVkVSUklERV9G
UkFNRVdPUktTX0RJUl9VU0VfU1RBR0lOR19JTlNUQUxMX1BBVEhfJChVU0VfU1RBR0lOR19JTlNU
QUxMX1BBVEgpKTsKLVdLX09WRVJSSURFX0ZSQU1FV09SS1NfRElSX1VTRV9TVEFHSU5HX0lOU1RB
TExfUEFUSF9ZRVMgPSAkKFNZU1RFTV9MSUJSQVJZX0RJUikvU3RhZ2VkRnJhbWV3b3Jrcy9TYWZh
cmk7Ci0KLVdLX1FVT1RFRF9PVkVSUklERV9GUkFNRVdPUktTX0RJUiA9ICQoV0tfUVVPVEVEX09W
RVJSSURFX0ZSQU1FV09SS1NfRElSXyQoV0tfVVNFX09WRVJSSURFX0ZSQU1FV09SS1NfRElSKSk7
Ci1XS19RVU9URURfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVJfWUVTID0gIiQoV0tfT1ZFUlJJREVf
RlJBTUVXT1JLU19ESVIpIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hj
b2RlL0NvbmZpZy9SZWxlYXNlUHJvamVjdC54Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3hjb2RlL0NvbmZpZy9SZWxlYXNlUHJvamVjdC54Y2NvbmZpZwppbmRleCAxM2U5MTdmYmZh
MmRkZjJkM2VlNTMxNTk4ZGMwZmIwZjJiNWJmODc2Li5lMGRkYmU5NjRkOWIwMDY3YWM5MWI2NjNl
YzQwZWVhZjA4OTM0Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29k
ZS9Db25maWcvUmVsZWFzZVByb2plY3QueGNjb25maWcKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QveGNvZGUvQ29uZmlnL1JlbGVhc2VQcm9qZWN0LnhjY29uZmlnCkBAIC01LDcgKzUsNyBA
QAogLy8gIGFuZCBleGFtcGxlcy4gSXQgaXMgc2V0IGluIHRoZSAiQmFzZWQgT246IiBkcm9wZG93
biBpbiB0aGUgIlByb2plY3QiIGluZm8KIC8vICBkaWFsb2cuCiAvLyAgVGhpcyBmaWxlIGlzIGJh
c2VkIG9uIHRoZSBYY29kZSBDb25maWd1cmF0aW9uIGZpbGVzIGluOgotLy8gIGh0dHA6Ly9jb2Rl
Lmdvb2dsZS5jb20vcC9nb29nbGUtdG9vbGJveC1mb3ItbWFjLworLy8gIGh0dHBzOi8vZ2l0aHVi
LmNvbS9nb29nbGUvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYwogLy8gCiAKICNpbmNsdWRlICJHZW5l
cmFsLnhjY29uZmlnIgpAQCAtMzEsOSArMzEsNiBAQCBPVEhFUl9DRkxBR1MgPSAkKE9USEVSX0NG
TEFHUykgLUROREVCVUc9MSAtV25vLXVudXNlZC12YXJpYWJsZQogLy8gV2hlbiB3ZSBzdHJpcCB3
ZSB3YW50IHRvIHN0cmlwIGFsbCBzeW1ib2xzIGluIHJlbGVhc2UsIGJ1dCBzYXZlIGV4dGVybmFs
cy4KIFNUUklQX1NUWUxFID0gYWxsCiAKLS8vIFVzZWQgYnkgSEVBREVSX1NFQVJDSF9QQVRIUyBp
biBHZW5lcmFsLnhjY29uZmlnCi1XRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIgPSAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvV2ViQ29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnM7Ci0KIE9OTFlf
QUNUSVZFX0FSQ0ggPSBZRVMKIAogU0RLUk9PVCA9ICQoU0RLUk9PVF8kKFVTRV9JTlRFUk5BTF9T
REspKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9T
dGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNv
ZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcKaW5kZXggZGQzMzI1NWE5NDQ3
NzAyMGNmMTFmNzA1NWU0NGFlMjUyOGViOWY5Ny4uMDRiNzNiYzkyZDAxMjFkOTU4ZjVmODY5OWRh
ZjM3N2ViNjk4YzM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUv
Q29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcKQEAgLTQs
NyArNCw3IEBACiAvLyAgVGhlc2UgYXJlIHN0YXRpYyBsaWJyYXJ5IHRhcmdldCBzZXR0aW5ncyBm
b3IgbGliZ3Rlc3QuYS4gSXQKIC8vICBpcyBzZXQgaW4gdGhlICJCYXNlZCBPbjoiIGRyb3Bkb3du
IGluIHRoZSAiVGFyZ2V0IiBpbmZvIGRpYWxvZy4KIC8vICBUaGlzIGZpbGUgaXMgYmFzZWQgb24g
dGhlIFhjb2RlIENvbmZpZ3VyYXRpb24gZmlsZXMgaW46Ci0vLyAgaHR0cDovL2NvZGUuZ29vZ2xl
LmNvbS9wL2dvb2dsZS10b29sYm94LWZvci1tYWMvCisvLyAgaHR0cHM6Ly9naXRodWIuY29tL2dv
b2dsZS9nb29nbGUtdG9vbGJveC1mb3ItbWFjCiAvLyAKIAogLy8gU3RhdGljIGxpYnMgY2FuIGJl
IGluY2x1ZGVkIGluIGJ1bmRsZXMgc28gbWFrZSB0aGVtIHBvc2l0aW9uIGluZGVwZW5kZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29y
a1NhbXBsZS9ydW50ZXN0cy5zaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL1NhbXBs
ZXMvRnJhbWV3b3JrU2FtcGxlL3J1bnRlc3RzLnNoCm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAx
MDA2NDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL1NhbXBsZXMv
RnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
eGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0X3Rlc3QuY2MKaW5kZXggNjFjMGQy
ZmZkNzZkMTgwNmFhMzU5NzlkOGFlMzY0MTA2NDhhYWExNS4uODcyNTk5NDIxODUxNDA4ZTc2YWFi
NmM1NjBiODE4OTI0NTliYmQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
eGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0X3Rlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0X3Rl
c3QuY2MKQEAgLTM2LDcgKzM2LDcgQEAKIC8vIFRoaXMgaXMgYSBzaW1wbGUgdGVzdCBmaWxlIGZv
ciB0aGUgV2lkZ2V0IGNsYXNzIGluIHRoZSBXaWRnZXQuZnJhbWV3b3JrCiAKICNpbmNsdWRlIDxz
dHJpbmc+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgogCiAjaW5jbHVkZSA8V2lkZ2V0L3dpZGdldC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC94Y29kZS9TY3JpcHRzL3J1bnRlc3RzLnNoIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QveGNvZGUvU2NyaXB0cy9ydW50ZXN0cy5zaApvbGQgbW9kZSAxMDA3NTUKbmV3IG1v
ZGUgMTAwNjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9TY3Jp
cHRzL3ZlcnNpb25nZW5lcmF0ZS5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL1Nj
cmlwdHMvdmVyc2lvbmdlbmVyYXRlLnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUK
aW5kZXggODFkZThjOTZhYzVkODZjYTYzOTQ1NmM5MGM0MzMwNjdiZGZkNDBlNS4uYmRkNzU0MWFk
Nzk3ZmE2NzNmNjVkYTM4MTY4ZTE1ODBmZDdkZGUzYQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC94Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weQorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC94Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weQpAQCAtMjksNyArMjks
NyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotIiIiQSBzY3JpcHQgdG8gcHJl
cGFyZSB2ZXJzaW9uIGluZm9ybXRpb24gZm9yIHVzZSB0aGUgZ3Rlc3QgSW5mby5wbGlzdCBmaWxl
LgorIiIiQSBzY3JpcHQgdG8gcHJlcGFyZSB2ZXJzaW9uIGluZm9ybWF0aW9uIGZvciB1c2UgdGhl
IGd0ZXN0IEluZm8ucGxpc3QgZmlsZS4KIAogICBUaGlzIHNjcmlwdCBleHRyYWN0cyB0aGUgdmVy
c2lvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjb25maWd1cmUuYWMgZmlsZSBhbmQKICAgdXNlcyBp
dCB0byBnZW5lcmF0ZSBhIGhlYWRlciBmaWxlIGNvbnRhaW5pbmcgdGhlIHNhbWUgaW5mb3JtYXRp
b24uIFRoZQpAQCAtNDIsNyArNDIsNyBAQAogICAgIDEuIFRoZSBBQ19JTklUIG1hY3JvIHdpbGwg
YmUgY29udGFpbmVkIHdpdGhpbiB0aGUgZmlyc3QgMTAyNCBjaGFyYWN0ZXJzCiAgICAgICAgb2Yg
Y29uZmlndXJlLmFjCiAgICAgMi4gVGhlIHZlcnNpb24gc3RyaW5nIHdpbGwgYmUgMyBpbnRlZ2Vy
cyBzZXBhcmF0ZWQgYnkgcGVyaW9kcyBhbmQgd2lsbCBiZQotICAgICAgIHN1cnJvdW5kZWQgYnkg
c3F1cmUgYnJhY2tldHMsICJbIiBhbmQgIl0iIChlLmcuIFsxLjAuMV0pLiBUaGUgZmlyc3QKKyAg
ICAgICBzdXJyb3VuZGVkIGJ5IHNxdWFyZSBicmFja2V0cywgIlsiIGFuZCAiXSIgKGUuZy4gWzEu
MC4xXSkuIFRoZSBmaXJzdAogICAgICAgIHNlZ21lbnQgcmVwcmVzZW50cyB0aGUgbWFqb3IgdmVy
c2lvbiwgdGhlIHNlY29uZCByZXByZXNlbnRzIHRoZSBtaW5vcgogICAgICAgIHZlcnNpb24gYW5k
IHRoZSB0aGlyZCByZXByZXNlbnRzIHRoZSBmaXggdmVyc2lvbi4KICAgICAzLiBObyAiKSIgY2hh
cmFjdGVyIGV4aXN0cyBiZXR3ZWVuIHRoZSBvcGVuaW5nICIoIiBhbmQgY2xvc2luZyAiKSIgb2YK
QEAgLTY4LDcgKzY4LDcgQEAgY29uZmlnX2ZpbGUuY2xvc2UoKQogCiAjIEV4dHJhY3QgdGhlIHZl
cnNpb24gc3RyaW5nIGZyb20gdGhlIEFDX0lOSVQgbWFjcm8KICMgICBUaGUgZm9sbG93aW5nIGlu
aXRfZXhwcmVzc2lvbiBtZWFuczoKLSMgICAgIEV4dHJhY3QgdGhyZWUgaW50ZWdlcnMgc2VwYXJh
dGVkIGJ5IHBlcmlvZHMgYW5kIHN1cnJvdW5kZWQgYnkgc3F1cmUKKyMgICAgIEV4dHJhY3QgdGhy
ZWUgaW50ZWdlcnMgc2VwYXJhdGVkIGJ5IHBlcmlvZHMgYW5kIHN1cnJvdW5kZWQgYnkgc3F1YXJl
CiAjICAgICBicmFja2V0cyhlLmcuICJbMS4wLjFdIikgYmV0d2VlbiAiQUNfSU5JVCgiIGFuZCAi
KSIuIERvIG5vdCBiZSBncmVlZHkKICMgICAgICgqPyBpcyB0aGUgbm9uLWdyZWVkeSBmbGFnKSBz
aW5jZSB0aGF0IHdvdWxkIHB1bGwgaW4gZXZlcnl0aGluZyBiZXR3ZWVuCiAjICAgICB0aGUgZmly
c3QgIigiIGFuZCB0aGUgbGFzdCAiKSIgaW4gdGhlIGZpbGUuCkBAIC04OCw3ICs4OCw3IEBAIGZp
bGVfZGF0YSA9ICIiIi8vCiAvLyBpcyBleGVjdXRlZCBpbiBhICJSdW4gU2NyaXB0IiBidWlsZCBw
aGFzZSB3aGVuIGNyZWF0aW5nIGd0ZXN0LmZyYW1ld29yay4gVGhpcwogLy8gaGVhZGVyIGZpbGUg
aXMgbm90IHVzZWQgZHVyaW5nIGNvbXBpbGF0aW9uIG9mIEMtc291cmNlLiBSYXRoZXIsIGl0IHNp
bXBseQogLy8gZGVmaW5lcyBzb21lIHZlcnNpb24gc3RyaW5ncyBmb3Igc3Vic3RpdHV0aW9uIGlu
IHRoZSBJbmZvLnBsaXN0LiBCZWNhdXNlIG9mCi0vLyB0aGlzLCB3ZSBhcmUgbm90IG5vdCByZXN0
cmljdGVkIHRvIEMtc3ludGF4IG5vciBhcmUgd2UgdXNpbmcgaW5jbHVkZSBndWFyZHMuCisvLyB0
aGlzLCB3ZSBhcmUgbm90IHJlc3RyaWN0ZWQgdG8gQy1zeW50YXggbm9yIGFyZSB3ZSB1c2luZyBp
bmNsdWRlIGd1YXJkcy4KIC8vCiAKICNkZWZpbmUgR1RFU1RfVkVSU0lPTklORk9fU0hPUlQgJXMu
JXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL2d0ZXN0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9ndGVz
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFmZjNmYmFmZWZiYWFjM2I4MzgyNDhi
MTdkNTY4NzZiM2Q1ZjZiZTguLjZjNzBkYjkxNGYyZDY0ZDAzODgzNzQ4NmJlMjk4OTZlNzcyNmM5
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL2d0ZXN0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUv
Z3Rlc3QueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzcsNyArMzcsNiBAQAogLyogRW5k
IFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCi0JCTFBMEE0QzQ1MTRCN0EzQjUwMDg5NTEzNSAvKiBKYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQTBBNEM0NDE0QjdBM0I1MDA4OTUxMzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICov
OyB9OwogCQkyMjRBMTJBMzBFOUVBRENDMDBCRDE3RkQgLyogZ3Rlc3QtdGVzdC1wYXJ0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMjRBMTJBMjBFOUVB
RENDMDBCRDE3RkQgLyogZ3Rlc3QtdGVzdC1wYXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkzQkY2RjJBMDBFNzlCNUFEMDAwRjJFRUUgLyogZ3Rl
c3QtdHlwZS11dGlsLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDNCRjZGMjlGMEU3OUI1QUQwMDBGMkVFRSAvKiBndGVzdC10eXBl
LXV0aWwuaCAqLzsgfTsKIAkJM0JGNkYyQTUwRTc5QjYxNjAwMEYyRUVFIC8qIGd0ZXN0LXR5cGVk
LXRlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNC
RjZGMkE0MEU3OUI2MTYwMDBGMkVFRSAvKiBndGVzdC10eXBlZC10ZXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwpAQCAtNDcsNyArNDYsNyBAQAogCQk0
MDQ4ODQzQjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0RFMEUyRjc5OUIwMENGNzY1OCAvKiBndGVz
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNDA0
ODg0M0MwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X3ByZWRfaW1wbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzREYwRTJGNzk5QjAwQ0Y3NjU4
IC8qIGd0ZXN0X3ByZWRfaW1wbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1Ymxp
YywgKTsgfTsgfTsKIAkJNDA0ODg0M0QwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X3Byb2QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0UwMEUy
Rjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcm9kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHVibGljLCApOyB9OyB9OwotCQk0MDQ4ODQ1MDBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1F
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNG
NjBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FICovOyB9OworCQk0MDQ4ODQ1MDBFMkY3OTlCMDBD
Rjc2NTggLyogUkVBRE1FLm1kIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MDQ4ODNGNjBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FLm1kICovOyB9Owog
CQk0MDQ4ODRBMDBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5o
IGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MDQ4ODNFMjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5h
bC5oICovOyB9OwogCQk0MDQ4ODRBMTBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3QtZmlsZXBhdGgu
aCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDA0ODgzRTMwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWZpbGVwYXRoLmggKi87IH07
CiAJCTQwNDg4NEEyMEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1pbnRlcm5hbC5oIGluIENvcHkg
SGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4
ODNFNDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtaW50ZXJuYWwuaCAqLzsgfTsKQEAgLTU1LDcg
KzU0LDcgQEAKIAkJNDA0ODg0QTQwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0LXN0cmluZy5oIGlu
IENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MDQ4ODNFNjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Qtc3RyaW5nLmggKi87IH07CiAJCTQw
NDg4NEFDMEUyRjdDRDkwMENGNzY1OCAvKiBDSEFOR0VTIGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODRBOTBFMkY3Q0Q5MDBDRjc2NTggLyogQ0hB
TkdFUyAqLzsgfTsKIAkJNDA0ODg0QUQwRTJGN0NEOTAwQ0Y3NjU4IC8qIENPTlRSSUJVVE9SUyBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODg0QUEw
RTJGN0NEOTAwQ0Y3NjU4IC8qIENPTlRSSUJVVE9SUyAqLzsgfTsKLQkJNDA0ODg0QUUwRTJGN0NE
OTAwQ0Y3NjU4IC8qIENPUFlJTkcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQwNDg4NEFCMEUyRjdDRDkwMENGNzY1OCAvKiBDT1BZSU5HICovOyB9Owor
CQk0MDQ4ODRBRTBFMkY3Q0Q5MDBDRjc2NTggLyogTElDRU5TRSBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODg0QUIwRTJGN0NEOTAwQ0Y3NjU4IC8q
IExJQ0VOU0UgKi87IH07CiAJCTQwODk5RjNBMEZGQTcwRDQwMDBCMjlBRSAvKiBndGVzdC1hbGwu
Y2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMjRBMTJB
MTBFOUVBREE3MDBCRDE3RkQgLyogZ3Rlc3QtYWxsLmNjICovOyB9OwogCQk0MDg5OUY1MDBGRkE3
MjgxMDAwQjI5QUUgLyogZ3Rlc3QtdHVwbGUuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA4OTlGNEQwRkZBNzI3MTAwMEIyOUFF
IC8qIGd0ZXN0LXR1cGxlLmggKi87IH07CiAJCTQwODk5RjUzMEZGQTcyQTAwMDBCMjlBRSAvKiBn
dGVzdF91bml0dGVzdC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDNCMjM4QzEyMEU3RkUxM0MwMDg0NkUxMSAvKiBndGVzdF91bml0dGVzdC5jYyAqLzsg
fTsKQEAgLTc5LDYgKzc4LDE0IEBACiAJCTQ1MzlDOTM4MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVz
dC1saW5rZWRfcHRyLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MzlDOTM1MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1saW5r
ZWRfcHRyLmggKi87IH07CiAJCTQ1MzlDOTM5MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJh
bS11dGlsLWdlbmVyYXRlZC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTM5QzkzNjBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3Qt
cGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCAqLzsgfTsKIAkJNDUzOUM5M0EwRUMyODBFMjAwQTcwRjRD
IC8qIGd0ZXN0LXBhcmFtLXV0aWwuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUzOUM5MzcwRUMyODBFMjAwQTcwRjRDIC8qIGd0
ZXN0LXBhcmFtLXV0aWwuaCAqLzsgfTsKKwkJNDU2N0M4MTgxMjY0RkY3MTAwNzc0MEJFIC8qIGd0
ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NTY3QzgxNzEyNjRGRjcxMDA3NzQwQkUgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCUY2N0Q0RjNFMUM3RjVE
OEIwMDE3QzcyOSAvKiBndGVzdC1wb3J0LWFyY2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2N0Q0RjNEMUM3RjVEOEIwMDE3QzcyOSAvKiBndGVzdC1w
b3J0LWFyY2guaCAqLzsgfTsKKwkJRjY3RDRGM0YxQzdGNURBNzAwMTdDNzI5IC8qIGd0ZXN0LXBv
cnQtYXJjaC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNjdENEYzRDFDN0Y1RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNo
LmggKi87IH07CisJCUY2N0Q0RjQ0MUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC1wb3J0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdENEY0MTFDN0Y1
REQwMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oICovOyB9OworCQlGNjdENEY0NTFDN0Y1REQwMDAx
N0M3MjkgLyogZ3Rlc3QtcHJpbnRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY2N0Q0RjQyMUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC1wcmludGVy
cy5oICovOyB9OworCQlGNjdENEY0NjFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2N0Q0RjQzMUM3RjVERDAw
MDE3QzcyOSAvKiBndGVzdC5oICovOyB9OworCQlGNjdENEY0ODFDN0Y1RTE2MDAxN0M3MjkgLyog
Z3Rlc3QtcG9ydC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20gKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGNDExQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0
LXBvcnQuaCAqLzsgfTsKKwkJRjY3RDRGNDkxQzdGNUUyNjAwMTdDNzI5IC8qIGd0ZXN0LXByaW50
ZXJzLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNjdENEY0MjFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcHJpbnRl
cnMuaCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQ
QlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpAQCAtMTg4LDYgKzE5NSw3IEBACiAJCQkJ
NDUzOUM5MzgwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LWxpbmtlZF9wdHIuaCBpbiBDb3B5IEhl
YWRlcnMgSW50ZXJuYWwgKi8sCiAJCQkJNDUzOUM5MzkwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0
LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLAogCQkJ
CTQ1MzlDOTNBMEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLmggaW4gQ29weSBI
ZWFkZXJzIEludGVybmFsICovLAorCQkJCUY2N0Q0RjNGMUM3RjVEQTcwMDE3QzcyOSAvKiBndGVz
dC1wb3J0LWFyY2guaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8sCiAJCQkJNDA0ODg0QTMw
RTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0LXBvcnQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwg
Ki8sCiAJCQkJNDA0ODg0QTQwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0LXN0cmluZy5oIGluIENv
cHkgSGVhZGVycyBJbnRlcm5hbCAqLywKIAkJCQk0MDg5OUY1MDBGRkE3MjgxMDAwQjI5QUUgLyog
Z3Rlc3QtdHVwbGUuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8sCkBAIC0xOTYsMTAgKzIw
NCwyMSBAQAogCQkJbmFtZSA9ICJDb3B5IEhlYWRlcnMgSW50ZXJuYWwiOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CisJCUY2N0Q0RjQ3MUM3RjVERjYw
MDE3QzcyOSAvKiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgQ3VzdG9tICovID0geworCQkJaXNhID0g
UEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CisJCQlkc3RQYXRoID0gSGVhZGVycy9pbnRlcm5hbC9jdXN0b207CisJCQlkc3RTdWJmb2xkZXJT
cGVjID0gNjsKKwkJCWZpbGVzID0gKAorCQkJCUY2N0Q0RjQ4MUM3RjVFMTYwMDE3QzcyOSAvKiBn
dGVzdC1wb3J0LmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLywKKwkJCQlGNjdE
NEY0OTFDN0Y1RTI2MDAxN0M3MjkgLyogZ3Rlc3QtcHJpbnRlcnMuaCBpbiBDb3B5IEhlYWRlcnMg
SW50ZXJuYWwgQ3VzdG9tICovLAorCQkJKTsKKwkJCW5hbWUgPSAiQ29weSBIZWFkZXJzIEludGVy
bmFsIEN1c3RvbSI7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
KwkJfTsKIC8qIEVuZCBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCi0JCTFBMEE0QzQ0MTRCN0EzQjUwMDg5NTEz
NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgcGF0aCA9IEphdmFTY3Jp
cHRDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJ
MjI0QTEyQTEwRTlFQURBNzAwQkQxN0ZEIC8qIGd0ZXN0LWFsbC5jYyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSAiZ3Rlc3QtYWxsLmNjIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMjI0QTEyQTIwRTlFQURDQzAwQkQxN0ZEIC8qIGd0ZXN0LXRlc3QtcGFydC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXRlc3QtcGFydC5oIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0IyMzhDMTIwRTdGRTEzQzAwODQ2RTExIC8q
IGd0ZXN0X3VuaXR0ZXN0LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Z3Rlc3RfdW5pdHRlc3QuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTgsMTEg
KzIzNywxMSBAQAogCQk0MDQ4ODNFNDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtaW50ZXJuYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LWludGVybmFsLmgiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MDQ4ODNFNTBFMkY3OTlCMDBDRjc2NTggLyog
Z3Rlc3QtcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcG9y
dC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDA0ODgzRTYwRTJGNzk5QjAwQ0Y3
NjU4IC8qIGd0ZXN0LXN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAi
Z3Rlc3Qtc3RyaW5nLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MDQ4ODNGNjBF
MkY3OTlCMDBDRjc2NTggLyogUkVBRE1FICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFJFQURNRTsg
cGF0aCA9IC4uL1JFQURNRTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk0MDQ4ODNG
NjBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FLm1kICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFJF
QURNRS5tZDsgcGF0aCA9IC4uL1JFQURNRS5tZDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OwogCQk0MDQ4ODQwRDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3RfbWFpbi5jYyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGd0ZXN0X21haW4uY2M7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQwNDg4NEE5MEUyRjdDRDkwMENGNzY1OCAvKiBDSEFOR0VTICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgbmFtZSA9IENIQU5HRVM7IHBhdGggPSAuLi9DSEFOR0VTOyBzb3VyY2VUcmVl
ID0gU09VUkNFX1JPT1Q7IH07CiAJCTQwNDg4NEFBMEUyRjdDRDkwMENGNzY1OCAvKiBDT05UUklC
VVRPUlMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gQ09OVFJJQlVUT1JTOyBwYXRoID0gLi4vQ09O
VFJJQlVUT1JTOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07Ci0JCTQwNDg4NEFCMEUyRjdD
RDkwMENGNzY1OCAvKiBDT1BZSU5HICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IENPUFlJTkc7IHBh
dGggPSAuLi9DT1BZSU5HOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTQwNDg4NEFC
MEUyRjdDRDkwMENGNzY1OCAvKiBMSUNFTlNFICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IExJQ0VO
U0U7IHBhdGggPSAuLi9MSUNFTlNFOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTQw
ODk5RjQzMEZGQTcxODQwMDBCMjlBRSAvKiBndGVzdF91bml0dGVzdC1mcmFtZXdvcmsgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNo
LW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9ICJndGVzdF91bml0dGVz
dC1mcmFtZXdvcmsiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0MDg5
OUY0RDBGRkE3MjcxMDAwQjI5QUUgLyogZ3Rlc3QtdHVwbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gImd0ZXN0LXR1cGxlLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2Nv
bmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBTdGF0aWNMaWJyYXJ5VGFyZ2V0
LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ1LDYgKzI2NCwxMSBA
QAogCQk0NTM5QzkzNTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtbGlua2VkX3B0ci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtbGlua2VkX3B0ci5oIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDUzOUM5MzYwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0
LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
ICJndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDUzOUM5MzcwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXBhcmFtLXV0aWwuaCI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ1NjdDODE3MTI2NEZGNzEwMDc3NDBCRSAvKiBndGVz
dC1wcmludGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcHJp
bnRlcnMuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2N0Q0RjNEMUM3RjVEOEIw
MDE3QzcyOSAvKiBndGVzdC1wb3J0LWFyY2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gImd0ZXN0LXBvcnQtYXJjaC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RjY3RDRGNDExQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXBvcnQuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUY2N0Q0RjQyMUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC1wcmludGVycy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcHJpbnRlcnMuaCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2N0Q0RjQzMUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBndGVzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC0yODQsMTQgKzMwOCw2
IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07Ci0JCTQ0NEQxMTcyMTRBMjYyOEYwMDlGRUMzRiAvKiBGcmFtZXdvcmtzICovID0gewotCQkJ
aXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJMUEwQTRDNDUxNEI3QTNCNTAwODk1MTM1IC8qIEph
dmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAotCQkJKTsKLQkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwogLyogRW5kIFBCWEZyYW1l
d29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYR3JvdXAgc2VjdGlvbiAq
LwpAQCAtMzE2LDcgKzMzMiw2IEBACiAJCQkJMDhGQjc3QUNGRTg0MTcwN0MwMkFBQzA3IC8qIFNv
dXJjZSAqLywKIAkJCQk0MEQ0Q0Y0RTBFMzBGNUUyMDAyOTQ4MDEgLyogUmVzb3VyY2VzICovLAog
CQkJCTQwM0VFMzdCMEUzNzc4MjIwMDRCRDFFMiAvKiBTY3JpcHRzICovLAotCQkJCTFBMEE0QzQ2
MTRCN0EzQkMwMDg5NTEzNSAvKiBGcmFtZXdvcmtzICovLAogCQkJCTAzNDc2OERERkYzOEE0NUEx
MURCOUM4QiAvKiBQcm9kdWN0cyAqLywKIAkJCSk7CiAJCQluYW1lID0gZ3Rlc3Q7CkBAIC0zMjcs
MjQgKzM0MiwxNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNDA0ODg0QTkwRTJGN0NEOTAwQ0Y3
NjU4IC8qIENIQU5HRVMgKi8sCiAJCQkJNDA0ODg0QUEwRTJGN0NEOTAwQ0Y3NjU4IC8qIENPTlRS
SUJVVE9SUyAqLywKLQkJCQk0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogQ09QWUlORyAqLywK
IAkJCQk0MDQ4ODNEOTBFMkY3OTlCMDBDRjc2NTggLyogaW5jbHVkZSAqLywKLQkJCQk0MDQ4ODNG
NjBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FICovLAorCQkJCTQwNDg4NEFCMEUyRjdDRDkwMENG
NzY1OCAvKiBMSUNFTlNFICovLAogCQkJCTQwODlBMDJGMEZGQUNGODQwMDBCMjlBRSAvKiBzYW1w
bGVzICovLAogCQkJCTQwNDg4NDA3MEUyRjc5OUIwMENGNzY1OCAvKiBzcmMgKi8sCiAJCQkJM0Iy
MzhCRjAwRTdGRTEzQjAwODQ2RTExIC8qIHRlc3QgKi8sCisJCQkJNDA0ODgzRjYwRTJGNzk5QjAw
Q0Y3NjU4IC8qIFJFQURNRS5tZCAqLywKIAkJCSk7CiAJCQluYW1lID0gU291cmNlOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJMUEwQTRDNDYxNEI3QTNCQzAwODk1MTM1IC8q
IEZyYW1ld29ya3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAot
CQkJCTFBMEE0QzQ0MTRCN0EzQjUwMDg5NTEzNSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsg
Ki8sCi0JCQkpOwotCQkJbmFtZSA9IEZyYW1ld29ya3M7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwotCQl9OwogCQkzQjIzOEJGMDBFN0ZFMTNCMDA4NDZFMTEgLyogdGVzdCAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0zNzksNiArMzg2LDcgQEAKIAkJ
CQk0MDQ4ODNEQjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtZGVhdGgtdGVzdC5oICovLAogCQkJ
CTQwNDg4M0RDMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1tZXNzYWdlLmggKi8sCiAJCQkJNDUz
OUM5MzMwRUMyODBBRTAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXRlc3QuaCAqLywKKwkJCQk0NTY3
QzgxNzEyNjRGRjcxMDA3NzQwQkUgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLywKIAkJCQk0MDQ4ODNE
RDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Qtc3BpLmggKi8sCiAJCQkJMjI0QTEyQTIwRTlFQURD
QzAwQkQxN0ZEIC8qIGd0ZXN0LXRlc3QtcGFydC5oICovLAogCQkJCTNCRjZGMkE0MEU3OUI2MTYw
MDBGMkVFRSAvKiBndGVzdC10eXBlZC10ZXN0LmggKi8sCkBAIC0zOTIsMTIgKzQwMCwxNCBAQAog
CQk0MDQ4ODNFMTBFMkY3OTlCMDBDRjc2NTggLyogaW50ZXJuYWwgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUY2N0Q0RjQwMUM3RjVERDAwMDE3QzcyOSAv
KiBjdXN0b20gKi8sCiAJCQkJNDA0ODgzRTIwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRo
LXRlc3QtaW50ZXJuYWwuaCAqLywKIAkJCQk0MDQ4ODNFMzBFMkY3OTlCMDBDRjc2NTggLyogZ3Rl
c3QtZmlsZXBhdGguaCAqLywKIAkJCQk0MDQ4ODNFNDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Qt
aW50ZXJuYWwuaCAqLywKIAkJCQk0NTM5QzkzNTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtbGlu
a2VkX3B0ci5oICovLAogCQkJCTQ1MzlDOTM2MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJh
bS11dGlsLWdlbmVyYXRlZC5oICovLAogCQkJCTQ1MzlDOTM3MEVDMjgwRTIwMEE3MEY0QyAvKiBn
dGVzdC1wYXJhbS11dGlsLmggKi8sCisJCQkJRjY3RDRGM0QxQzdGNUQ4QjAwMTdDNzI5IC8qIGd0
ZXN0LXBvcnQtYXJjaC5oICovLAogCQkJCTQwNDg4M0U1MEUyRjc5OUIwMENGNzY1OCAvKiBndGVz
dC1wb3J0LmggKi8sCiAJCQkJNDA0ODgzRTYwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXN0cmlu
Zy5oICovLAogCQkJCTQwODk5RjREMEZGQTcyNzEwMDBCMjlBRSAvKiBndGVzdC10dXBsZS5oICov
LApAQCAtNDQ4LDYgKzQ1OCwxNiBAQAogCQkJcGF0aCA9IFJlc291cmNlczsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUY2N0Q0RjQwMUM3RjVERDAwMDE3QzcyOSAvKiBjdXN0
b20gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUY2N0Q0
RjQxMUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC1wb3J0LmggKi8sCisJCQkJRjY3RDRGNDIxQzdG
NUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggKi8sCisJCQkJRjY3RDRGNDMxQzdGNURE
MDAwMTdDNzI5IC8qIGd0ZXN0LmggKi8sCisJCQkpOworCQkJcGF0aCA9IGN1c3RvbTsKKwkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwog
CiAvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC00NTgsOSArNDc4
LDE0IEBACiAJCQkJNDA0ODg0MzgwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRoLXRlc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQwNDg4NDM5MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1t
ZXNzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NTM5QzkzNDBFQzI4MEFFMDBBNzBGNEMgLyog
Z3Rlc3QtcGFyYW0tdGVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjY3RDRGM0UxQzdGNUQ4QjAw
MTdDNzI5IC8qIGd0ZXN0LXBvcnQtYXJjaC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjY3RDRGNDQx
QzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUY2N0Q0
RjQ1MUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC1wcmludGVycy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDU2N0M4MTgxMjY0RkY3MTAwNzc0MEJFIC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MDQ4ODQzQTBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Qtc3BpLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyMjRBMTJBMzBFOUVBRENDMDBCRDE3RkQgLyogZ3Rlc3QtdGVzdC1wYXJ0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzQkY2RjJBNTBFNzlCNjE2MDAwRjJFRUUgLyogZ3Rlc3Qt
dHlwZWQtdGVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjY3RDRGNDYxQzdGNUREMDAwMTdDNzI5
IC8qIGd0ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MDQ4ODQzQjBFMkY3OTlCMDBDRjc2NTgg
LyogZ3Rlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQwNDg4NDNDMEUyRjc5OUIwMENGNzY1OCAv
KiBndGVzdF9wcmVkX2ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQwNDg4NDNEMEUyRjc5OUIw
MENGNzY1OCAvKiBndGVzdF9wcm9kLmggaW4gSGVhZGVycyAqLywKQEAgLTU3Nyw4ICs2MDIsOCBA
QAogCQkJCThEMDdGMkMxMDQ4NkNDN0EwMDdDRDFEMCAvKiBTb3VyY2VzICovLAogCQkJCThEMDdG
MkJEMDQ4NkNDN0EwMDdDRDFEMCAvKiBIZWFkZXJzICovLAogCQkJCTQwNDg4NEE1MEUyRjdDMDQw
MENGNzY1OCAvKiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8sCisJCQkJRjY3RDRGNDcxQzdGNURG
NjAwMTdDNzI5IC8qIENvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20gKi8sCiAJCQkJOEQwN0Yy
QkYwNDg2Q0M3QTAwN0NEMUQwIC8qIFJlc291cmNlcyAqLywKLQkJCQk0NDREMTE3MjE0QTI2MjhG
MDA5RkVDM0YgLyogRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJCQlidWlsZFJ1bGVzID0gKAogCQkJ
KTsKQEAgLTYzOCw5ICs2NjMsOSBAQAogCQkJZmlsZXMgPSAoCiAJCQkJNDA0ODg0QUMwRTJGN0NE
OTAwQ0Y3NjU4IC8qIENIQU5HRVMgaW4gUmVzb3VyY2VzICovLAogCQkJCTQwNDg4NEFEMEUyRjdD
RDkwMENGNzY1OCAvKiBDT05UUklCVVRPUlMgaW4gUmVzb3VyY2VzICovLAotCQkJCTQwNDg4NEFF
MEUyRjdDRDkwMENGNzY1OCAvKiBDT1BZSU5HIGluIFJlc291cmNlcyAqLywKIAkJCQk0MEM4NDk3
ODEwMUEzNjU0MDA4MzY0MkEgLyogbGliZ3Rlc3RfbWFpbi5hIGluIFJlc291cmNlcyAqLywKLQkJ
CQk0MDQ4ODQ1MDBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FIGluIFJlc291cmNlcyAqLywKKwkJ
CQk0MDQ4ODRBRTBFMkY3Q0Q5MDBDRjc2NTggLyogTElDRU5TRSBpbiBSZXNvdXJjZXMgKi8sCisJ
CQkJNDA0ODg0NTAwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCBpbiBSZXNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC04MjQsNyArODQ5LDYgQEAKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CiAJCQkJQ09QWV9QSEFT
RV9TVFJJUCA9IFlFUzsKIAkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0
aC1kc3ltIjsKLQkJCQlHQ0NfRU5BQkxFX0ZJWF9BTkRfQ09OVElOVUUgPSBOTzsKIAkJCQlQUk9E
VUNUX05BTUUgPSBDaGVjazsKIAkJCQlaRVJPX0xJTksgPSBOTzsKIAkJCX07CkBAIC0xMDEwLDcg
KzEwMzQsNiBAQAogCQkJYnVpbGRTZXR0aW5ncyA9IHsKIAkJCQlDT1BZX1BIQVNFX1NUUklQID0g
WUVTOwogCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOwot
CQkJCUdDQ19FTkFCTEVfRklYX0FORF9DT05USU5VRSA9IE5POwogCQkJCVBST0RVQ1RfTkFNRSA9
IENoZWNrOwogCQkJCVpFUk9fTElOSyA9IE5POwogCQkJfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1YTQzM2FlZWY1MDZiNmY0NjU1NjAxM2Jm
YmI0MzYxYmYyMTlhYzFhLi4xYWNmMzM4NDdmMjY4MmUwMTM3ODVkYzdiYTlhZjNlODc3NTA0OWEw
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTgtMDgtMzAgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgorCisgICAgICAgIFVwZGF0ZSBnb29nbGV0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3MjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29uZmlnLmg6Cisg
ICAgICAgIEluc3RlYWQgb2YgbW9kaWZ5aW5nIHRoZSBndGVzdCBzb3VyY2UsIGFkZCB0aGUgbmVj
ZXNzYXJ5IFdURiBpbmNsdWRlcyBoZXJlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25m
aWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCisgICAgICAgIFJlbW92ZSBvYnNvbGV0ZWQgZGVmaW5p
dGlvbnMgR1RFU1RfSEFTX1RSMV9UVVBMRT0wIGFuZCBHVEVTVF9IQVNfUlRUST0wLgorCiAyMDE4
LTA5LTAxICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbV1BFXSAyLjIxLjkxIGZhaWxzIHRvIGJ1aWxkIHdpdGggRU5BQkxFX01JTklCUk9XU0VS
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNj
b25maWcgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcK
aW5kZXggM2MyZTU5ZWI2YzVkNDFjM2IyZjM0OWZmY2NlNTI4NDY4YmNhYTI1Yi4uM2Y0YmRmYmM5
YjYxNGQyNzM4MTA3OWNlNDYwMmE2NmU0MjI2YzRiZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwpAQCAtMzUsNyArMzUsNyBAQCBDTEFO
R19XQVJOX0NYWDBYX0VYVEVOU0lPTlMgPSBOTzsKIEhFQURFUl9TRUFSQ0hfUEFUSFMgPSAke0JV
SUxUX1BST0RVQ1RTX0RJUn0vdXNyL2xvY2FsL2luY2x1ZGUgJChXRUJDT1JFX1BSSVZBVEVfSEVB
REVSU19ESVIpL0ZvcndhcmRpbmdIZWFkZXJzICQoQlVJTFRfUFJPRFVDVFNfRElSKS9XZWJDb3Jl
VGVzdFN1cHBvcnQ7CiAKIEdDQ19OT19DT01NT05fQkxPQ0tTID0gWUVTOwotR0NDX1BSRVBST0NF
U1NPUl9ERUZJTklUSU9OUyA9ICQoREVCVUdfREVGSU5FUykgJChGRUFUVVJFX0RFRklORVMpIEdU
RVNUX0hBU19UUjFfVFVQTEU9MCBHVEVTVF9IQVNfUlRUST0wIFVfRElTQUJMRV9SRU5BTUlORz0x
IFVfU0hPV19DUExVU1BMVVNfQVBJPTAgJChHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TXyQo
UExBVEZPUk1fTkFNRSkpOworR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoREVCVUdf
REVGSU5FUykgJChGRUFUVVJFX0RFRklORVMpIFVfRElTQUJMRV9SRU5BTUlORz0xIFVfU0hPV19D
UExVU1BMVVNfQVBJPTAgJChHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TXyQoUExBVEZPUk1f
TkFNRSkpOwogR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OU19tYWNvc3ggPSBFTkFCTEVfREFT
SEJPQVJEX1NVUFBPUlQ7CiBERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSBkd2FyZi13aXRoLWRz
eW07CiBQUkVCSU5ESU5HID0gTk8KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29u
ZmlnLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCmluZGV4IGVkZjhhNmYxZjU2YjBi
ZWRmZmU4NGU2NjBlZThlZjUwNGM0YzUyY2EuLjBjMmM0YWU3YmYwZTljZTVlOTg3OTU4ZTU0ODQz
ZWQ0Mzc0NjIyNDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaApAQCAtNTcsOCArNTcsMTQgQEAKIAogI2lm
ZGVmIF9fY3BsdXNwbHVzCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgorI3VuZGVmIG5ldworI3VuZGVmIGRlbGV0ZQorI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CiAjZW5kaWYKIAorI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+CisK
ICNpZmRlZiBfX2NsYW5nX18KIC8vIEZpbmlzaCB3b3JraW5nIGFyb3VuZCB0aGUgbGVzcyBzdHJp
Y3QgY29kaW5nIHN0YW5kYXJkcyBvZiB0aGUgZ3Rlc3QgZnJhbWV3b3JrLgogI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHBvcAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348741</attachid>
            <date>2018-09-02 11:52:33 -0700</date>
            <delta_ts>2018-09-02 12:09:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175722-20180902115230.patch</filename>
            <type>text/plain</type>
            <size>2569341</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9DaGFuZ2VMb2cKaW5kZXggZmI1MTE0ZTAz
ZmM3ZTUxZjg2N2YzOWFiZjhkYjIwNDA1YWRhOWJiYS4uZTkwNWY4ZjdkMjRmYTBlZWM4YzMwMzJm
YjdhYjlkYTNjZDgzYmU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4
LTA4LTMwICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAg
ICBVcGRhdGUgZ29vZ2xldGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc1NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBndGVzdC86CisgICAgICAgIFVwZGF0ZSB0byAxLjguMS4KKworICAgICAg
ICAqIGd0ZXN0L0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIGd0ZXN0L3hjb2RlLzoKKyAgICAg
ICAgS2VlcCBvdXIgdmVyc2lvbnMgb2YgdGhlc2UgYnVpbGQgZmlsZXMsIG1ha2luZyBhbnkgbmVj
ZXNzYXJ5IGFkZGl0aXZlIHVwZGF0ZXMKKyAgICAgICAgYW5kIHJlbW92aW5nIFdURi9KU0MgZGVw
ZW5kZW5jaWVzIHNvIHRoYXQgd2Ugc3RvcCBmb3JraW5nIHRoaXJkLXBhcnR5IHNvdXJjZS4KKwog
MjAxOC0wNy0xNyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW1dQRV1bR1RLXSBVcGRhdGUgeGRnbWltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvQ0hBTkdFUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NIQU5HRVMK
aW5kZXggZTU3NDQxNWVlNmVkODFjZjQ5MmJlMjk1MzQ2YzQ0NGVlYjEwY2U4OC4uMDU1MjEzMjQy
MTJjOTEyODdkOTI0NGQ0NGJhYjMwNmRiNjY0YmFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvQ0hBTkdFUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DSEFOR0VT
CkBAIC0xLDMgKzEsNjIgQEAKK0NoYW5nZXMgZm9yIDEuNy4wOgorCisqIE5ldyBmZWF0dXJlOiBk
ZWF0aCB0ZXN0cyBhcmUgc3VwcG9ydGVkIG9uIE9wZW5CU0QgYW5kIGluIGlPUworICBzaW11bGF0
b3Igbm93LgorKiBOZXcgZmVhdHVyZTogR29vZ2xlIFRlc3Qgbm93IGltcGxlbWVudHMgYSBwcm90
b2NvbCB0byBhbGxvdworICBhIHRlc3QgcnVubmVyIHRvIGRldGVjdCB0aGF0IGEgdGVzdCBwcm9n
cmFtIGhhcyBleGl0ZWQKKyAgcHJlbWF0dXJlbHkgYW5kIHJlcG9ydCBpdCBhcyBhIGZhaWx1cmUg
KGJlZm9yZSBpdCB3b3VsZCBiZQorICBmYWxzZWx5IHJlcG9ydGVkIGFzIGEgc3VjY2VzcyBpZiB0
aGUgZXhpdCBjb2RlIGlzIDApLgorKiBOZXcgZmVhdHVyZTogVGVzdDo6UmVjb3JkUHJvcGVydHko
KSBjYW4gbm93IGJlIHVzZWQgb3V0c2lkZSBvZiB0aGUKKyAgbGlmZXNwYW4gb2YgYSB0ZXN0IG1l
dGhvZCwgaW4gd2hpY2ggY2FzZSBpdCB3aWxsIGJlIGF0dHJpYnV0ZWQgdG8KKyAgdGhlIGN1cnJl
bnQgdGVzdCBjYXNlIG9yIHRoZSB0ZXN0IHByb2dyYW0gaW4gdGhlIFhNTCByZXBvcnQuCisqIE5l
dyBmZWF0dXJlIChwb3RlbnRpYWxseSBicmVha2luZyk6IC0tZ3Rlc3RfbGlzdF90ZXN0cyBub3cg
cHJpbnRzCisgIHRoZSB0eXBlIHBhcmFtZXRlcnMgYW5kIHZhbHVlIHBhcmFtZXRlcnMgZm9yIGVh
Y2ggdGVzdC4KKyogSW1wcm92ZW1lbnQ6IGNoYXIgcG9pbnRlcnMgYW5kIGNoYXIgYXJyYXlzIGFy
ZSBub3cgZXNjYXBlZCBwcm9wZXJseQorICBpbiBmYWlsdXJlIG1lc3NhZ2VzLgorKiBJbXByb3Zl
bWVudDogZmFpbHVyZSBzdW1tYXJ5IGluIFhNTCByZXBvcnRzIG5vdyBpbmNsdWRlcyBmaWxlIGFu
ZAorICBsaW5lIGluZm9ybWF0aW9uLgorKiBJbXByb3ZlbWVudDogdGhlIDx0ZXN0c3VpdGVzPiBY
TUwgZWxlbWVudCBub3cgaGFzIGEgdGltZXN0YW1wIGF0dHJpYnV0ZS4KKyogSW1wcm92ZW1lbnQ6
IFdoZW4gLS1ndGVzdF9maWx0ZXIgaXMgc3BlY2lmaWVkLCBYTUwgcmVwb3J0IG5vdyBkb2Vzbid0
CisgIGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGVzdHMgdGhhdCBhcmUgZmlsdGVyZWQgb3V0
LgorKiBGaXhlZCB0aGUgYnVnIHdoZXJlIGxvbmcgLS1ndGVzdF9maWx0ZXIgZmxhZyB2YWx1ZXMg
YXJlIHRydW5jYXRlZCBpbgorICBkZWF0aCB0ZXN0cy4KKyogUG90ZW50aWFsbHkgYnJlYWtpbmcg
Y2hhbmdlOiBSVU5fQUxMX1RFU1RTKCkgaXMgbm93IGltcGxlbWVudGVkIGFzIGEKKyAgZnVuY3Rp
b24gaW5zdGVhZCBvZiBhIG1hY3JvIGluIG9yZGVyIHRvIHdvcmsgYmV0dGVyIHdpdGggQ2xhbmcu
CisqIENvbXBhdGliaWxpdHkgZml4ZXMgd2l0aCBDKysgMTEgYW5kIHZhcmlvdXMgcGxhdGZvcm1z
LgorKiBCdWcvd2FybmluZyBmaXhlcy4KKworQ2hhbmdlcyBmb3IgMS42LjA6CisKKyogTmV3IGZl
YXR1cmU6IEFERF9GQUlMVVJFX0FUKCkgZm9yIHJlcG9ydGluZyBhIHRlc3QgZmFpbHVyZSBhdCB0
aGUKKyAgZ2l2ZW4gc291cmNlIGxvY2F0aW9uIC0tIHVzZWZ1bCBmb3Igd3JpdGluZyB0ZXN0aW5n
IHV0aWxpdGllcy4KKyogTmV3IGZlYXR1cmU6IHRoZSB1bml2ZXJzYWwgdmFsdWUgcHJpbnRlciBp
cyBtb3ZlZCBmcm9tIEdvb2dsZSBNb2NrCisgIHRvIEdvb2dsZSBUZXN0LgorKiBOZXcgZmVhdHVy
ZTogdHlwZSBwYXJhbWV0ZXJzIGFuZCB2YWx1ZSBwYXJhbWV0ZXJzIGFyZSByZXBvcnRlZCBpbgor
ICB0aGUgWE1MIHJlcG9ydCBub3cuCisqIEEgZ3Rlc3RfZGlzYWJsZV9wdGhyZWFkcyBDTWFrZSBv
cHRpb24uCisqIENvbG9yZWQgb3V0cHV0IHdvcmtzIGluIEdOVSBTY3JlZW4gc2Vzc2lvbnMgbm93
LgorKiBQYXJhbWV0ZXJzIG9mIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIG5vdyBwcmlu
dGVkIGluIHRoZQorICB0ZXh0dWFsIG91dHB1dC4KKyogRmFpbHVyZXMgZnJvbSBhZCBob2MgdGVz
dCBhc3NlcnRpb25zIHJ1biBiZWZvcmUgUlVOX0FMTF9URVNUUygpIGFyZQorICBub3cgY29ycmVj
dGx5IHJlcG9ydGVkLgorKiBBcmd1bWVudHMgb2YgQVNTRVJUX1hZIGFuZCBFWFBFQ1RfWFkgbm8g
bG9uZ2VyIG5lZWQgdG8gc3VwcG9ydCA8PCB0bworICBvc3RyZWFtLgorKiBNb3JlIGNvbXBsZXRl
IGhhbmRsaW5nIG9mIGV4Y2VwdGlvbnMuCisqIEdURVNUX0FTU0VSVF9YWSBjYW4gYmUgdXNlZCBp
bnN0ZWFkIG9mIEFTU0VSVF9YWSBpbiBjYXNlIHRoZSBsYXR0ZXIKKyAgbmFtZSBpcyBhbHJlYWR5
IHVzZWQgYnkgYW5vdGhlciBsaWJyYXJ5LgorKiAtLWd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnMgaXMg
bm93IHRydWUgYnkgZGVmYXVsdCwgYWxsb3dpbmcgYSB0ZXN0CisgIHByb2dyYW0gdG8gY29udGlu
dWUgYWZ0ZXIgYW4gZXhjZXB0aW9uIGlzIHRocm93bi4KKyogVmFsdWUtcGFyYW1ldGVyaXplZCB0
ZXN0IGZpeHR1cmVzIGNhbiBub3cgZGVyaXZlIGZyb20gVGVzdCBhbmQKKyAgV2l0aFBhcmFtSW50
ZXJmYWNlPFQ+IHNlcGFyYXRlbHksIGVhc2luZyBjb252ZXJzaW9uIG9mIGxlZ2FjeSB0ZXN0cy4K
KyogRGVhdGggdGVzdCBtZXNzYWdlcyBhcmUgY2xlYXJseSBtYXJrZWQgdG8gbWFrZSB0aGVtIG1v
cmUKKyAgZGlzdGluZ3Vpc2hhYmxlIGZyb20gb3RoZXIgbWVzc2FnZXMuCisqIENvbXBhdGliaWxp
dHkgZml4ZXMgZm9yIEFuZHJvaWQsIEdvb2dsZSBOYXRpdmUgQ2xpZW50LCBNaW5HVywgSFAgVVgs
CisgIFBvd2VyUEMsIEx1Y2lkIGF1dG90b29scywgbGliQ1N0ZCwgU3VuIEMrKywgQm9ybGFuZCBD
KysgQnVpbGRlciAoQ29kZSBHZWFyKSwKKyAgSUJNIFhMIEMrKyAoVmlzdWFsIEFnZSBDKyspLCBh
bmQgQysrMHguCisqIEJ1ZyBmaXhlcyBhbmQgaW1wbGVtZW50YXRpb24gY2xlYW4tdXBzLgorKiBQ
b3RlbnRpYWxseSBpbmNvbXBhdGlibGUgY2hhbmdlczogZGlzYWJsZXMgdGhlIGhhcm1mdWwgJ21h
a2UgaW5zdGFsbCcKKyAgY29tbWFuZCBpbiBhdXRvdG9vbHMuCisKIENoYW5nZXMgZm9yIDEuNS4w
OgogCiAgKiBOZXcgZmVhdHVyZTogYXNzZXJ0aW9ucyBjYW4gYmUgc2FmZWx5IGNhbGxlZCBpbiBt
dWx0aXBsZSB0aHJlYWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NNYWtlTGlzdHMudHh0CmluZGV4
IGRkMTAwNWZlNmU1N2M1MjBiZTk3ZjRmODA1MmI0MjZmMGZlMDU2OGYuLjQzMDdiYzhiNzJmZWRl
NmFiODJmMGY5NTM3OTU1ZWJiYjFkZDRkMTMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NNYWtl
TGlzdHMudHh0CkBAIC0xLDE0ICsxLDEyIEBACiAjIFRoaXMgaXMgYW4gYWx0ZXJuYXRpdmUgQ01h
a2VMaXN0cy50eHQgdG8gdGhlIGV4cGVyaW1lbnRhbCBvbmUKICMgc2hpcHBlZCB3aXRoIHRoZSBv
cmlnaW5hbCBwYWNrYWdlLiBJdCBidWlsZHMgb25seSB0aGUgZXNzZW50aWFsCi0jIGZvciBvdXIg
dGVzdHMuIFRoZSBXZWJLaXQgdmVyc2lvbiBvZiBndGVzdCBuZWVkcyBhY2Nlc3MgdG8gc29tZQot
IyBoZWFkZXJzIGZyb20gV1RGIGFuZCBKU0MgZm9yIGNvbmZpZ3VyYXRpb24uCisjIGZvciBvdXIg
dGVzdHMuCiAKIHNldChHVEVTVF9ESVIgIiR7VEhJUkRQQVJUWV9ESVJ9L2d0ZXN0IikKIAogc2V0
KEdURVNUX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtHVEVTVF9ESVJ9IgogICAgICIke0dU
RVNUX0RJUn0vaW5jbHVkZSIKLSAgICAiJHtGT1JXQVJESU5HX0hFQURFUlNfRElSfSIKICkKIAog
c2V0KEdURVNUX1NPVVJDRVMKQEAgLTE3LDYgKzE1LDcgQEAgc2V0KEdURVNUX1NPVVJDRVMKICAg
ICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LWZpbGVwYXRoLmNjCiAgICAgJHtHVEVTVF9ESVJ9L3Ny
Yy9ndGVzdF9tYWluLmNjCiAgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1wb3J0LmNjCisgICAg
JHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1wcmludGVycy5jYwogICAgICR7R1RFU1RfRElSfS9zcmMv
Z3Rlc3QtdGVzdC1wYXJ0LmNjCiAgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC10eXBlZC10ZXN0
LmNjCiApCkBAIC0zMiwyMyArMzEsMTEgQEAgZWxzZSAoKQogZW5kaWYgKCkKIAogaW5jbHVkZV9k
aXJlY3Rvcmllcygke0dURVNUX0lOQ0xVREVfRElSRUNUT1JJRVN9KQotYWRkX2RlZmluaXRpb25z
KC1ER1RFU1RfSEFTX1JUVEk9MCkKIAogV0VCS0lUX0FERF9UQVJHRVRfQ1hYX0ZMQUdTKGd0ZXN0
IC1Xbm8tdW5kZWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtV25vLXN0cmlu
Z29wLXRydW5jYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtV25vLXN1
Z2dlc3QtYXR0cmlidXRlPWZvcm1hdCkKIAotIyBGSVhNRTogVGhpcyB3b3JrcyBhcm91bmQgY29t
cGF0aWJpbGl0eSBwcm9ibGVtcyBpbiB0aGUgb2xkIHZlcnNpb24gb2YgdGhlIHRoaXJkLXBhcnkK
LSMgZ29vZ2xldGVzdCBzb3VyY2UgY29kZSBjaGVja291dC4gSXQgc2hvdWxkIGJlIHJlbW92ZWQg
b25jZSB3ZSB1cGdyYWRlIHRvIGEgbmV3ZXIgdmVyc2lvbi4KLWlmIChDT01QSUxFUl9JU19DTEFO
RykKLSAgICBhZGRfZGVmaW5pdGlvbnMoLURHVEVTVF9IQVNfVFIxX1RVUExFPTApCi1lbmRpZiAo
KQotCi10YXJnZXRfbGlua19saWJyYXJpZXMoZ3Rlc3QKLSAgICBXVEYKLSkKLWFkZF9kZXBlbmRl
bmNpZXMoZ3Rlc3QgSmF2YVNjcmlwdENvcmVQcml2YXRlRm9yd2FyZGluZ0hlYWRlcnMpCi0KIGlm
IChDTUFLRV9VU0VfUFRIUkVBRFNfSU5JVCkKICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoZ3Rl
c3QgJHtDTUFLRV9USFJFQURfTElCU19JTklUfSkKICAgICBhZGRfZGVmaW5pdGlvbnMoLURHVEVT
VF9IQVNfUFRIUkVBRD0xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09O
VFJJQlVUT1JTIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09OVFJJQlVUT1JTCmluZGV4IDA5
MzRhZTEzMDU5YWZjZGMwNWRmODEyNDdlNjFiOWE4NGEyMzEyZTIuLmZlYWUyZmMwNDQxMGRjMzA4
ZTQ2NGFhMjU2ZmUxZjJkMzFlZGM5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L0NPTlRSSUJVVE9SUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DT05UUklCVVRP
UlMKQEAgLTIxLDYgKzIxLDcgQEAgTWFudWVsIEtsaW1layA8a2xpbWVrQGdvb2dsZS5jb20+CiBN
YXJrdXMgSGV1bGUgPG1hcmt1cy5oZXVsZUBnbWFpbC5jb20+CiBNaWthIFJhZW50byA8bWlraWVA
aWtpLmZpPgogTWlrbMOzcyBGYXpla2FzIDxtZmF6ZWthc0BzemVtYWZvci5jb20+CitQYXNpIFZh
bG1pbmVuIDxwYXNpLnZhbG1pbmVuQGdtYWlsLmNvbT4KIFBhdHJpY2sgSGFubmEgPHBoYW5uYUBn
b29nbGUuY29tPgogUGF0cmljayBSaWxleSA8cGZyQGdvb2dsZS5jb20+CiBQZXRlciBLYW1pbnNr
aSA8cGlvdHJrQGdvb2dsZS5jb20+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9DT1BZSU5HIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09QWUlORwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTk0MWExMWY4Y2U5NDM4OTE2MGI0NTg5MjdhMjliYTIxNzU0Mjgx
OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9DT1BZSU5HCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAot
Q29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi1BbGwgcmlnaHRzIHJlc2VydmVkLgotCi1SZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQotICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLW5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLWNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLWluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLWRpc3RyaWJ1dGlvbi4KLSAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLWNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi10aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotCi1USElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
TElDRU5TRSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0xJQ0VOU0UKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTk0
MWExMWY4Y2U5NDM4OTE2MGI0NTg5MjdhMjliYTIxNzU0MjgxOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0xJQ0VOU0UKQEAgLTAsMCArMSwyOCBAQAorQ29weXJp
Z2h0IDIwMDgsIEdvb2dsZSBJbmMuCitBbGwgcmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
K21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKK21ldDoKKworICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKK25vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKK2NvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKK2luIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKK2Rpc3RyaWJ1dGlvbi4KKyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKK2NvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCit0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCitBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCitTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCitMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKK0RBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CitPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvTWFrZWZp
bGUuYW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9NYWtlZmlsZS5hbQppbmRleCA4ZDc1ZTMy
Y2MyMGNkZTgzYzE3NGY0ZTA3OGUyOTkzYTkzMmE5ZDE4Li5iNDRjODQxNmJhMDgwYzJmMDE2ZjE2
NmIxOGI0MmMwZjczZWNlN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9N
YWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9NYWtlZmlsZS5hbQpAQCAt
MSwxMyArMSwxNiBAQAogIyBBdXRvbWFrZSBmaWxlCiAKK0FDTE9DQUxfQU1GTEFHUyA9IC1JIG00
CisKICMgTm9uc3RhbmRhcmQgcGFja2FnZSBmaWxlcyBmb3IgZGlzdHJpYnV0aW9uCiBFWFRSQV9E
SVNUID0gXAogICBDSEFOR0VTIFwKICAgQ09OVFJJQlVUT1JTIFwKKyAgTElDRU5TRSBcCiAgIGlu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1bXAgXAorICBpbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcCBcCiAgIGluY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1wIFwKICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wIFwKLSAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oLnB1bXAgXAogICBtYWtlL01ha2VmaWxlIFwKICAgc2Ny
aXB0cy9mdXNlX2d0ZXN0X2ZpbGVzLnB5IFwKICAgc2NyaXB0cy9nZW5fZ3Rlc3RfcHJlZF9pbXBs
LnB5IFwKQEAgLTE3LDE5ICsyMCwyMSBAQCBFWFRSQV9ESVNUID0gXAogIyBndGVzdCBzb3VyY2Ug
ZmlsZXMgdGhhdCB3ZSBkb24ndCBjb21waWxlIGRpcmVjdGx5LiAgVGhleSBhcmUKICMgI2luY2x1
ZGVkIGJ5IGd0ZXN0LWFsbC5jYy4KIEdURVNUX1NSQyA9IFwKLSAgc3JjL2d0ZXN0LmNjIFwKICAg
c3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MgXAogICBzcmMvZ3Rlc3QtZmlsZXBhdGguY2MgXAogICBz
cmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmggXAogICBzcmMvZ3Rlc3QtcG9ydC5jYyBcCisgIHNyYy9n
dGVzdC1wcmludGVycy5jYyBcCiAgIHNyYy9ndGVzdC10ZXN0LXBhcnQuY2MgXAotICBzcmMvZ3Rl
c3QtdHlwZWQtdGVzdC5jYworICBzcmMvZ3Rlc3QtdHlwZWQtdGVzdC5jYyBcCisgIHNyYy9ndGVz
dC5jYwogCiBFWFRSQV9ESVNUICs9ICQoR1RFU1RfU1JDKQogCiAjIFNhbXBsZSBmaWxlcyB0aGF0
IHdlIGRvbid0IGNvbXBpbGUuCiBFWFRSQV9ESVNUICs9IFwKICAgc2FtcGxlcy9wcmltZV90YWJs
ZXMuaCBcCisgIHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYyBcCiAgIHNhbXBsZXMvc2FtcGxl
Ml91bml0dGVzdC5jYyBcCiAgIHNhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYyBcCiAgIHNhbXBs
ZXMvc2FtcGxlNF91bml0dGVzdC5jYyBcCkBAIC00MSw4OCArNDYsOTEgQEAgRVhUUkFfRElTVCAr
PSBcCiAKICMgQysrIHRlc3QgZmlsZXMgdGhhdCB3ZSBkb24ndCBjb21waWxlIGRpcmVjdGx5Lgog
RVhUUkFfRElTVCArPSBcCisgIHRlc3QvZ3Rlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNjIFwKICAg
dGVzdC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0X2Vudmlyb25tZW50
X3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0
LWxpbmtlZF9wdHJfdGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYyBcCiAg
IHRlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdF9ub190ZXN0X3VuaXR0
ZXN0LmNjIFwKICAgdGVzdC9ndGVzdC1vcHRpb25zX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXBh
cmFtLXRlc3RfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtcGFyYW0tdGVzdDJfdGVzdC5jYyBcCisg
IHRlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0Mi10ZXN0LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0
LXBhcmFtLXRlc3QyLXRlc3QuY2MgXAorICB0ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0
LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYyBcCiAgIHRlc3QvZ3Rl
c3QtcGFyYW0tdGVzdF90ZXN0LmggXAogICB0ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYyBcCisgIHRl
c3QvZ3Rlc3RfcHJlbWF0dXJlX2V4aXRfdGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3QtcHJpbnRlcnNf
dGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2MgXAorICB0ZXN0L2dvb2ds
ZXRlc3QtdHVwbGUtdGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYyBc
CisgIHRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC10eXBlZC10
ZXN0X3Rlc3QuaCBcCisgIHRlc3QvZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2MgXAorICB0ZXN0
L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8uY2MgXAorICB0ZXN0L2dvb2ds
ZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0Xy5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC1jb2xv
ci10ZXN0Xy5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3RfLmNjIFwKKyAgdGVz
dC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LWZpbHRlci11
bml0dGVzdF8uY2MgXAorICB0ZXN0L2d0ZXN0X2hlbHBfdGVzdF8uY2MgXAorICB0ZXN0L2dvb2ds
ZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdF8uY2MgXAorICB0ZXN0L2d0ZXN0X21haW5fdW5pdHRl
c3QuY2MgXAorICB0ZXN0L2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QuY2MgXAorICB0ZXN0L2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjIFwKICAgdGVzdC9ndGVzdF9wcmVkX2ltcGxfdW5pdHRlc3Qu
Y2MgXAogICB0ZXN0L2d0ZXN0X3Byb2RfdGVzdC5jYyBcCi0gIHRlc3QvcHJvZHVjdGlvbi5jYyBc
Ci0gIHRlc3QvcHJvZHVjdGlvbi5oIFwKICAgdGVzdC9ndGVzdF9yZXBlYXRfdGVzdC5jYyBcCisg
IHRlc3QvZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfLmNjIFwKICAgdGVzdC9ndGVzdF9zb2xlX2hl
YWRlcl90ZXN0LmNjIFwKICAgdGVzdC9ndGVzdF9zdHJlc3NfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rl
c3QtdGVzdC1wYXJ0X3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfZXhf
dGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNjIFwKLSAgdGVzdC9ndGVz
dC10eXBlZC10ZXN0Ml90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuaCBc
CisgIHRlc3QvZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfLmNjIFwKKyAgdGVzdC9n
b29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdF8uY2MgXAogICB0ZXN0L2d0ZXN0X3VuaXR0ZXN0
LmNjIFwKLSAgdGVzdC9ndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3Qt
bGlzdGVuZXJfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfbWFpbl91bml0dGVzdC5jYyBcCiAgIHRl
c3QvZ3Rlc3RfdW5pdHRlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXR1cGxlX3Rlc3QuY2MgXAotICB0
ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtcGFyYW0tdGVzdDJf
dGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8uY2MgXAot
ICB0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3Rf
LmNjIFwKLSAgdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9o
ZWxwX3Rlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYyBcCi0g
IHRlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3Rf
LmNjIFwKLSAgdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3RfLmNjIFwKLSAgdGVzdC9n
dGVzdF91bmluaXRpYWxpemVkX3Rlc3RfLmNjIFwKICAgdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTFf
dGVzdF8uY2MgXAogICB0ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMl90ZXN0Xy5jYyBcCi0gIHRlc3Qv
Z3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MKKyAgdGVzdC9ndGVzdF94bWxfb3V0cHV0X3Vu
aXR0ZXN0Xy5jYyBcCisgIHRlc3QvcHJvZHVjdGlvbi5jYyBcCisgIHRlc3QvcHJvZHVjdGlvbi5o
CiAKICMgUHl0aG9uIHRlc3RzIHRoYXQgd2UgZG9uJ3QgcnVuLgogRVhUUkFfRElTVCArPSBcCi0g
IHRlc3QvZ3Rlc3RfdGVzdF91dGlscy5weSBcCi0gIHRlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMu
cHkgXAotICB0ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkgXAotICB0ZXN0
L2d0ZXN0X2NvbG9yX3Rlc3QucHkgXAotICB0ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weSBcCi0g
IHRlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LWJyZWFr
LW9uLWZhaWx1cmUtdW5pdHRlc3QucHkgXAorICB0ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0
aW9ucy10ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LWNvbG9yLXRlc3QucHkgXAorICB0ZXN0
L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LWZpbHRlci11
bml0dGVzdC5weSBcCiAgIHRlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF9s
aXN0X3Rlc3RzX3VuaXR0ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF9vdXRwdXRfdGVzdC5weSBcCi0g
IHRlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQgXAotICB0ZXN0L2d0ZXN0X291
dHB1dF90ZXN0X2dvbGRlbl93aW4udHh0IFwKLSAgdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3QucHkg
XAotICB0ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3Rf
dW5pbml0aWFsaXplZF90ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5p
dHRlc3QucHkgXAorICB0ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3QucHkgXAorICB0ZXN0L2dv
b2dsZXRlc3Qtb3V0cHV0LXRlc3RfZ29sZGVuX2xpbi50eHQgXAorICB0ZXN0L2dvb2dsZXRlc3Qt
c2h1ZmZsZS10ZXN0LnB5IFwKKyAgdGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5IFwKKyAgdGVzdC9n
b29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdC5weSBcCisgIHRlc3QvZ29vZ2xldGVzdC11
bmluaXRpYWxpemVkLXRlc3QucHkgXAogICB0ZXN0L2d0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5
IFwKICAgdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0LnB5IFwKLSAgdGVzdC9ydW5fdGVz
dHNfdXRpbC5weSBcCi0gIHRlc3QvcnVuX3Rlc3RzX3V0aWxfdGVzdC5weQorICB0ZXN0L2d0ZXN0
X3htbF90ZXN0X3V0aWxzLnB5CiAKICMgQ01ha2Ugc2NyaXB0CiBFWFRSQV9ESVNUICs9IFwKLSAg
Q01ha2VMaXN0cy50eHQKKyAgQ01ha2VMaXN0cy50eHQgXAorICBjbWFrZS9pbnRlcm5hbF91dGls
cy5jbWFrZQogCiAjIE1TVkMgcHJvamVjdCBmaWxlcwogRVhUUkFfRElTVCArPSBcCi0gIG1zdmMv
Z3Rlc3QtbWQuc2xuIFwKLSAgbXN2Yy9ndGVzdC5zbG4gXAotICBtc3ZjL2d0ZXN0LW1kLnZjcHJv
aiBcCi0gIG1zdmMvZ3Rlc3QudmNwcm9qIFwKLSAgbXN2Yy9ndGVzdF9tYWluLW1kLnZjcHJvaiBc
Ci0gIG1zdmMvZ3Rlc3RfbWFpbi52Y3Byb2ogXAotICBtc3ZjL2d0ZXN0X3Byb2RfdGVzdC1tZC52
Y3Byb2ogXAotICBtc3ZjL2d0ZXN0X3Byb2RfdGVzdC52Y3Byb2ogXAotICBtc3ZjL2d0ZXN0X3Vu
aXR0ZXN0LW1kLnZjcHJvaiBcCi0gIG1zdmMvZ3Rlc3RfdW5pdHRlc3QudmNwcm9qCisgIG1zdmMv
MjAxMC9ndGVzdC1tZC5zbG4gXAorICBtc3ZjLzIwMTAvZ3Rlc3QtbWQudmN4cHJvaiBcCisgIG1z
dmMvMjAxMC9ndGVzdC5zbG4gXAorICBtc3ZjLzIwMTAvZ3Rlc3QudmN4cHJvaiBcCisgIG1zdmMv
MjAxMC9ndGVzdF9tYWluLW1kLnZjeHByb2ogXAorICBtc3ZjLzIwMTAvZ3Rlc3RfbWFpbi52Y3hw
cm9qIFwKKyAgbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qIFwKKyAgbXN2Yy8y
MDEwL2d0ZXN0X3Byb2RfdGVzdC52Y3hwcm9qIFwKKyAgbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0
LW1kLnZjeHByb2ogXAorICBtc3ZjLzIwMTAvZ3Rlc3RfdW5pdHRlc3QudmN4cHJvagogCiAjIHhj
b2RlIHByb2plY3QgZmlsZXMKIEVYVFJBX0RJU1QgKz0gXApAQCAtMTMzLDMxICsxNDEsMjcgQEAg
RVhUUkFfRElTVCArPSBcCiAgIHhjb2RlL0NvbmZpZy9TdGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29u
ZmlnIFwKICAgeGNvZGUvQ29uZmlnL1Rlc3RUYXJnZXQueGNjb25maWcgXAogICB4Y29kZS9SZXNv
dXJjZXMvSW5mby5wbGlzdCBcCi0gIHhjb2RlL1NjcmlwdHMvdmVyc2lvbmdlbmVyYXRlLnB5IFwK
ICAgeGNvZGUvU2NyaXB0cy9ydW50ZXN0cy5zaCBcCisgIHhjb2RlL1NjcmlwdHMvdmVyc2lvbmdl
bmVyYXRlLnB5IFwKICAgeGNvZGUvZ3Rlc3QueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagogCiAj
IHhjb2RlIHNhbXBsZSBmaWxlcwogRVhUUkFfRElTVCArPSBcCiAgIHhjb2RlL1NhbXBsZXMvRnJh
bWV3b3JrU2FtcGxlL0luZm8ucGxpc3QgXAorICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBs
ZS9XaWRnZXRGcmFtZXdvcmsueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBcCiAgIHhjb2RlL1Nh
bXBsZXMvRnJhbWV3b3JrU2FtcGxlL3J1bnRlc3RzLnNoIFwKLSAgeGNvZGUvU2FtcGxlcy9GcmFt
ZXdvcmtTYW1wbGUvd2lkZ2V0X3Rlc3QuY2MgXAogICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1Nh
bXBsZS93aWRnZXQuY2MgXAogICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS93aWRnZXQu
aCBcCi0gIHhjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL1dpZGdldEZyYW1ld29yay54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisgIHhjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dp
ZGdldF90ZXN0LmNjCiAKICMgQysrQnVpbGRlciBwcm9qZWN0IGZpbGVzCiBFWFRSQV9ESVNUICs9
IFwKKyAgY29kZWdlYXIvZ3Rlc3QuY2Jwcm9qIFwKKyAgY29kZWdlYXIvZ3Rlc3QuZ3JvdXBwcm9q
IFwKICAgY29kZWdlYXIvZ3Rlc3RfYWxsLmNjIFwKICAgY29kZWdlYXIvZ3Rlc3RfbGluay5jYyBc
Ci0gIGNvZGVnZWFyL2d0ZXN0LmNicHJvaiBcCiAgIGNvZGVnZWFyL2d0ZXN0X21haW4uY2Jwcm9q
IFwKLSAgY29kZWdlYXIvZ3Rlc3RfdW5pdHRlc3QuY2Jwcm9qIFwKLSAgY29kZWdlYXIvZ3Rlc3Qu
Z3JvdXBwcm9qCi0KLSMgU2NyaXB0cyBhbmQgdXRpbGl0aWVzCi1iaW5fU0NSSVBUUyA9IHNjcmlw
dHMvZ3Rlc3QtY29uZmlnCi1DTEVBTkZJTEVTID0gJChiaW5fU0NSSVBUUykKKyAgY29kZWdlYXIv
Z3Rlc3RfdW5pdHRlc3QuY2Jwcm9qCiAKICMgRGlzdHJpYnV0ZSBhbmQgaW5zdGFsbCBNNCBtYWNy
bwogbTRkYXRhZGlyID0gJChkYXRhZGlyKS9hY2xvY2FsCkBAIC0xODEsMTUgKzE4NSwxNyBAQCBs
aWJfTFRMSUJSQVJJRVMgPSBsaWIvbGliZ3Rlc3QubGEgbGliL2xpYmd0ZXN0X21haW4ubGEKIAog
bGliX2xpYmd0ZXN0X2xhX1NPVVJDRVMgPSBzcmMvZ3Rlc3QtYWxsLmNjCiAKLXBrZ2luY2x1ZGVf
SEVBREVSUyA9IGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCBcCi0gICAgICAgICAgICAgICAgICAgICBp
bmNsdWRlL2d0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaCBcCi0gICAgICAgICAgICAgICAgICAgICBp
bmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCBcCi0gICAgICAgICAgICAgICAgICAgICBpbmNs
dWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaCBcCi0gICAgICAgICAgICAgICAgICAgICBpbmNs
dWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIFwKLSAgICAgICAgICAgICAgICAgICAgIGluY2x1
ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oIFwKLSAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUvZ3Rl
c3QvZ3Rlc3Qtc3BpLmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVz
dC10ZXN0LXBhcnQuaCBcCi0gICAgICAgICAgICAgICAgICAgICBpbmNsdWRlL2d0ZXN0L2d0ZXN0
LXR5cGVkLXRlc3QuaAorcGtnaW5jbHVkZV9IRUFERVJTID0gXAorICBpbmNsdWRlL2d0ZXN0L2d0
ZXN0LWRlYXRoLXRlc3QuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIFwKKyAg
aW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0
LXByaW50ZXJzLmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXNwaS5oIFwKKyAgaW5jbHVkZS9n
dGVzdC9ndGVzdC10ZXN0LXBhcnQuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVz
dC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdF9w
cmVkX2ltcGwuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oCiAKIHBrZ2luY2x1ZGVf
aW50ZXJuYWxkaXIgPSAkKHBrZ2luY2x1ZGVkaXIpL2ludGVybmFsCiBwa2dpbmNsdWRlX2ludGVy
bmFsX0hFQURFUlMgPSBcCkBAIC0yMDAsNjEgKzIwNiw5NyBAQCBwa2dpbmNsdWRlX2ludGVybmFs
X0hFQURFUlMgPSBcCiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1n
ZW5lcmF0ZWQuaCBcCiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5o
IFwKICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmggXAorICBpbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oIFwKICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC1zdHJpbmcuaCBcCiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUu
aCBcCi0gIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgKKyAgaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvY3VzdG9tL2d0ZXN0LmggXAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9n
dGVzdC1wb3J0LmggXAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wcmlu
dGVycy5oCiAKIGxpYl9saWJndGVzdF9tYWluX2xhX1NPVVJDRVMgPSBzcmMvZ3Rlc3RfbWFpbi5j
YwogbGliX2xpYmd0ZXN0X21haW5fbGFfTElCQUREID0gbGliL2xpYmd0ZXN0LmxhCiAKLSMgQnVs
aWQgcnVsZXMgZm9yIHNhbXBsZXMgYW5kIHRlc3RzLiBBdXRvbWFrZSdzIG5hbWluZyBmb3Igc29t
ZSBvZgorIyBCdWlsZCBydWxlcyBmb3Igc2FtcGxlcyBhbmQgdGVzdHMuIEF1dG9tYWtlJ3MgbmFt
aW5nIGZvciBzb21lIG9mCiAjIHRoZXNlIHZhcmlhYmxlcyBpc24ndCB0ZXJyaWJseSBvYnZpb3Vz
LCBzbyB0aGlzIGlzIGEgYnJpZWYKICMgcmVmZXJlbmNlOgogIwogIyBURVNUUyAtLSBQcm9ncmFt
cyBydW4gYXV0b21hdGljYWxseSBieSAibWFrZSBjaGVjayIKICMgY2hlY2tfUFJPR1JBTVMgLS0g
UHJvZ3JhbXMgYnVpbHQgYnkgIm1ha2UgY2hlY2siIGJ1dCBub3QgbmVjZXNzYXJpbHkgcnVuCiAK
LW5vaW5zdF9MVExJQlJBUklFUyA9IHNhbXBsZXMvbGlic2FtcGxlcy5sYQotCi1zYW1wbGVzX2xp
YnNhbXBsZXNfbGFfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlMS5jYyBcCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvc2FtcGxlMS5oIFwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2FtcGxlcy9zYW1wbGUyLmNjIFwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2FtcGxlcy9zYW1wbGUyLmggXAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzYW1wbGVzL3NhbXBsZTMtaW5sLmggXAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzYW1wbGVzL3NhbXBsZTQuY2MgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzYW1wbGVzL3NhbXBsZTQuaAotCiBURVNUUz0KIFRFU1RTX0VOVklST05NRU5UID0gR1RF
U1RfU09VUkNFX0RJUj0iJChzcmNkaXIpL3Rlc3QiIFwKICAgICAgICAgICAgICAgICAgICAgR1RF
U1RfQlVJTERfRElSPSIkKHRvcF9idWlsZGRpcikvdGVzdCIKIGNoZWNrX1BST0dSQU1TPQogCiAj
IEEgc2ltcGxlIHNhbXBsZSBvbiB1c2luZyBndGVzdC4KLVRFU1RTICs9IHNhbXBsZXMvc2FtcGxl
MV91bml0dGVzdAotY2hlY2tfUFJPR1JBTVMgKz0gc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0Ci1z
YW1wbGVzX3NhbXBsZTFfdW5pdHRlc3RfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlMV91bml0dGVz
dC5jYworVEVTVFMgKz0gc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3Nh
bXBsZTJfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlM191bml0dGVzdCBcCisgICAgc2Ft
cGxlcy9zYW1wbGU0X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QgXAor
ICAgIHNhbXBsZXMvc2FtcGxlNl91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGU3X3VuaXR0
ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxl
OV91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdAorY2hlY2tfUFJPR1JB
TVMgKz0gc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTJfdW5p
dHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlM191bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1w
bGU0X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QgXAorICAgIHNhbXBs
ZXMvc2FtcGxlNl91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGU3X3VuaXR0ZXN0IFwKKyAg
ICBzYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlOV91bml0dGVz
dCBcCisgICAgc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdAorCitzYW1wbGVzX3NhbXBsZTFfdW5p
dHRlc3RfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYyBzYW1wbGVzL3NhbXBs
ZTEuY2MKIHNhbXBsZXNfc2FtcGxlMV91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWlu
LmxhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvbGlic2FtcGxl
cy5sYQotCi0jIEFub3RoZXIgc2FtcGxlLiAgSXQgYWxzbyB2ZXJpZmllcyB0aGF0IGxpYmd0ZXN0
IHdvcmtzLgotVEVTVFMgKz0gc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdAotY2hlY2tfUFJPR1JB
TVMgKz0gc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBsZTJfdW5pdHRlc3RfU09VUkNF
UyA9IHNhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYyBzYW1wbGVzL3NhbXBsZTIuY2MKK3NhbXBs
ZXNfc2FtcGxlMl91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWluLmxhIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQorc2FtcGxlc19zYW1w
bGUzX3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MKK3NhbXBs
ZXNfc2FtcGxlM191bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWluLmxhIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQorc2FtcGxlc19zYW1w
bGU0X3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QuY2Mgc2FtcGxl
cy9zYW1wbGU0LmNjCitzYW1wbGVzX3NhbXBsZTRfdW5pdHRlc3RfTERBREQgPSBsaWIvbGliZ3Rl
c3RfbWFpbi5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWIvbGliZ3Rl
c3QubGEKK3NhbXBsZXNfc2FtcGxlNV91bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGU1
X3VuaXR0ZXN0LmNjIHNhbXBsZXMvc2FtcGxlMS5jYworc2FtcGxlc19zYW1wbGU1X3VuaXR0ZXN0
X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBsZTZfdW5pdHRlc3RfU09VUkNF
UyA9IHNhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYworc2FtcGxlc19zYW1wbGU2X3VuaXR0ZXN0
X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBsZTdfdW5pdHRlc3RfU09VUkNF
UyA9IHNhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYworc2FtcGxlc19zYW1wbGU3X3VuaXR0ZXN0
X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBsZThfdW5pdHRlc3RfU09VUkNF
UyA9IHNhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYworc2FtcGxlc19zYW1wbGU4X3VuaXR0ZXN0
X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCisKKyMgQWxzbyB2ZXJpZnkgdGhhdCBsaWJndGVzdCB3
b3JrcyBieSBpdHNlbGYuCitzYW1wbGVzX3NhbXBsZTlfdW5pdHRlc3RfU09VUkNFUyA9IHNhbXBs
ZXMvc2FtcGxlOV91bml0dGVzdC5jYworc2FtcGxlc19zYW1wbGU5X3VuaXR0ZXN0X0xEQUREID0g
bGliL2xpYmd0ZXN0LmxhCiBzYW1wbGVzX3NhbXBsZTEwX3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1w
bGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjCiBzYW1wbGVzX3NhbXBsZTEwX3VuaXR0ZXN0X0xEQURE
ID0gbGliL2xpYmd0ZXN0LmxhCiAKICMgVGhpcyB0ZXN0cyBtb3N0IGNvbnN0cnVjdHMgb2YgZ3Rl
c3QgYW5kIHZlcmlmaWVzIHRoYXQgbGliZ3Rlc3RfbWFpbgotIyB3b3Jrcy4KKyMgYW5kIGxpYmd0
ZXN0IHdvcmsuCiBURVNUUyArPSB0ZXN0L2d0ZXN0X2FsbF90ZXN0CiBjaGVja19QUk9HUkFNUyAr
PSB0ZXN0L2d0ZXN0X2FsbF90ZXN0CiB0ZXN0X2d0ZXN0X2FsbF90ZXN0X1NPVVJDRVMgPSB0ZXN0
L2d0ZXN0X2FsbF90ZXN0LmNjCi10ZXN0X2d0ZXN0X2FsbF90ZXN0X0xEQUREID0gbGliL2xpYmd0
ZXN0X21haW4ubGEKK3Rlc3RfZ3Rlc3RfYWxsX3Rlc3RfTERBREQgPSBsaWIvbGliZ3Rlc3RfbWFp
bi5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCiAKICMg
VGVzdHMgdGhhdCBmdXNlZCBndGVzdCBmaWxlcyBjb21waWxlIGFuZCB3b3JrLgogRlVTRURfR1RF
U1RfU1JDID0gXAogICBmdXNlZC1zcmMvZ3Rlc3QvZ3Rlc3QtYWxsLmNjIFwKLSAgZnVzZWQtc3Jj
L2d0ZXN0L2d0ZXN0X21haW4uY2MgXAotICBmdXNlZC1zcmMvZ3Rlc3QvZ3Rlc3QuaAorICBmdXNl
ZC1zcmMvZ3Rlc3QvZ3Rlc3QuaCBcCisgIGZ1c2VkLXNyYy9ndGVzdC9ndGVzdF9tYWluLmNjCiAK
K2lmIEhBVkVfUFlUSE9OCiBURVNUUyArPSB0ZXN0L2Z1c2VkX2d0ZXN0X3Rlc3QKIGNoZWNrX1BS
T0dSQU1TICs9IHRlc3QvZnVzZWRfZ3Rlc3RfdGVzdAogdGVzdF9mdXNlZF9ndGVzdF90ZXN0X1NP
VVJDRVMgPSAkKEZVU0VEX0dURVNUX1NSQykgXApAQCAtMjc4LDcgKzMyMCwyMCBAQCBmdXNlZC1n
dGVzdDogJChwa2dpbmNsdWRlX0hFQURFUlMpICQocGtnaW5jbHVkZV9pbnRlcm5hbF9IRUFERVJT
KSBcCiAKIG1haW50YWluZXItY2xlYW4tbG9jYWw6CiAJcm0gLXJmICIkKHNyY2RpcikvZnVzZWQt
c3JjIgorZW5kaWYKIAogIyBEZWF0aCB0ZXN0cyBtYXkgcHJvZHVjZSBjb3JlIGR1bXBzIGluIHRo
ZSBidWlsZCBkaXJlY3RvcnkuIEluIGNhc2UKICMgdGhpcyBoYXBwZW5zLCBjbGVhbiB0aGVtIHRv
IGtlZXAgZGlzdGNsZWFuY2hlY2sgaGFwcHkuCi1DTEVBTkZJTEVTICs9IGNvcmUKK0NMRUFORklM
RVMgPSBjb3JlCisKKyMgRGlzYWJsZXMgJ21ha2UgaW5zdGFsbCcgYXMgaW5zdGFsbGluZyBhIGNv
bXBpbGVkIHZlcnNpb24gb2YgR29vZ2xlCisjIFRlc3QgY2FuIGxlYWQgdG8gdW5kZWZpbmVkIGJl
aGF2aW9yIGR1ZSB0byB2aW9sYXRpb24gb2YgdGhlCisjIE9uZS1EZWZpbml0aW9uIFJ1bGUuCisK
K2luc3RhbGwtZXhlYy1sb2NhbDoKKwllY2hvICInbWFrZSBpbnN0YWxsJyBpcyBkYW5nZXJvdXMg
YW5kIG5vdCBzdXBwb3J0ZWQuIEluc3RlYWQsIHNlZSBSRUFETUUgZm9yIGhvdyB0byBpbnRlZ3Jh
dGUgR29vZ2xlIFRlc3QgaW50byB5b3VyIGJ1aWxkIHN5c3RlbS4iCisJZmFsc2UKKworaW5zdGFs
bC1kYXRhLWxvY2FsOgorCWVjaG8gIidtYWtlIGluc3RhbGwnIGlzIGRhbmdlcm91cyBhbmQgbm90
IHN1cHBvcnRlZC4gSW5zdGVhZCwgc2VlIFJFQURNRSBmb3IgaG93IHRvIGludGVncmF0ZSBHb29n
bGUgVGVzdCBpbnRvIHlvdXIgYnVpbGQgc3lzdGVtLiIKKwlmYWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVBRE1FIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVB
RE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzYxMTkwMDIwOTkxNTBkNzE1NzQ5
YTE2ZTAzYzJmNTczNjg2YmI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRQorKysgL2Rldi9udWxsCkBA
IC0xLDQxNyArMCwwIEBACi1Hb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrCi09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0KLWh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0
LwotCi1PdmVydmlldwotLS0tLS0tLS0KLQotR29vZ2xlJ3MgZnJhbWV3b3JrIGZvciB3cml0aW5n
IEMrKyB0ZXN0cyBvbiBhIHZhcmlldHkgb2YgcGxhdGZvcm1zCi0oTGludXgsIE1hYyBPUyBYLCBX
aW5kb3dzLCBXaW5kb3dzIENFLCBTeW1iaWFuLCBldGMpLiAgQmFzZWQgb24gdGhlCi14VW5pdCBh
cmNoaXRlY3R1cmUuICBTdXBwb3J0cyBhdXRvbWF0aWMgdGVzdCBkaXNjb3ZlcnksIGEgcmljaCBz
ZXQgb2YKLWFzc2VydGlvbnMsIHVzZXItZGVmaW5lZCBhc3NlcnRpb25zLCBkZWF0aCB0ZXN0cywg
ZmF0YWwgYW5kIG5vbi1mYXRhbAotZmFpbHVyZXMsIHZhcmlvdXMgb3B0aW9ucyBmb3IgcnVubmlu
ZyB0aGUgdGVzdHMsIGFuZCBYTUwgdGVzdCByZXBvcnQKLWdlbmVyYXRpb24uCi0KLVBsZWFzZSBz
ZWUgdGhlIHByb2plY3QgcGFnZSBhYm92ZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhcyB3ZWxsIGFz
IHRoZQotbWFpbGluZyBsaXN0IGZvciBxdWVzdGlvbnMsIGRpc2N1c3Npb25zLCBhbmQgZGV2ZWxv
cG1lbnQuICBUaGVyZSBpcwotYWxzbyBhbiBJUkMgY2hhbm5lbCBvbiBPRlRDIChpcmMub2Z0Yy5u
ZXQpICNndGVzdCBhdmFpbGFibGUuICBQbGVhc2UKLWpvaW4gdXMhCi0KLVJlcXVpcmVtZW50cyBm
b3IgRW5kIFVzZXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Hb29nbGUgVGVzdCBp
cyBkZXNpZ25lZCB0byBoYXZlIGZhaXJseSBtaW5pbWFsIHJlcXVpcmVtZW50cyB0byBidWlsZAot
YW5kIHVzZSB3aXRoIHlvdXIgcHJvamVjdHMsIGJ1dCB0aGVyZSBhcmUgc29tZS4gIEN1cnJlbnRs
eSwgd2Ugc3VwcG9ydAotTGludXgsIFdpbmRvd3MsIE1hYyBPUyBYLCBhbmQgQ3lnd2luLiAgV2Ug
d2lsbCBhbHNvIG1ha2Ugb3VyIGJlc3QKLWVmZm9ydCB0byBzdXBwb3J0IG90aGVyIHBsYXRmb3Jt
cyAoZS5nLiBTb2xhcmlzLCBBSVgsIGFuZCB6L09TKS4KLUhvd2V2ZXIsIHNpbmNlIGNvcmUgbWVt
YmVycyBvZiB0aGUgR29vZ2xlIFRlc3QgcHJvamVjdCBoYXZlIG5vIGFjY2VzcwotdG8gdGhlc2Ug
cGxhdGZvcm1zLCBHb29nbGUgVGVzdCBtYXkgaGF2ZSBvdXRzdGFuZGluZyBpc3N1ZXMgdGhlcmUu
ICBJZgoteW91IG5vdGljZSBhbnkgcHJvYmxlbXMgb24geW91ciBwbGF0Zm9ybSwgcGxlYXNlIG5v
dGlmeQotZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tLiAgUGF0Y2hlcyBmb3Ig
Zml4aW5nIHRoZW0gYXJlCi1ldmVuIG1vcmUgd2VsY29tZSEKLQotIyMjIExpbnV4IFJlcXVpcmVt
ZW50cyAjIyMKLQotVGhlc2UgYXJlIHRoZSBiYXNlIHJlcXVpcmVtZW50cyB0byBidWlsZCBhbmQg
dXNlIEdvb2dsZSBUZXN0IGZyb20gYSBzb3VyY2UKLXBhY2thZ2UgKGFzIGRlc2NyaWJlZCBiZWxv
dyk6Ci0gICogR05VLWNvbXBhdGlibGUgTWFrZSBvciBnbWFrZQotICAqIFBPU0lYLXN0YW5kYXJk
IHNoZWxsCi0gICogUE9TSVgoLTIpIFJlZ3VsYXIgRXhwcmVzc2lvbnMgKHJlZ2V4LmgpCi0gICog
QSBDKys5OC1zdGFuZGFyZC1jb21wbGlhbnQgY29tcGlsZXIKLQotIyMjIFdpbmRvd3MgUmVxdWly
ZW1lbnRzICMjIwotCi0gICogTWljcm9zb2Z0IFZpc3VhbCBDKysgNy4xIG9yIG5ld2VyCi0KLSMj
IyBDeWd3aW4gUmVxdWlyZW1lbnRzICMjIwotCi0gICogQ3lnd2luIDEuNS4yNS0xNCBvciBuZXdl
cgotCi0jIyMgTWFjIE9TIFggUmVxdWlyZW1lbnRzICMjIwotCi0gICogTWFjIE9TIFggMTAuNCBU
aWdlciBvciBuZXdlcgotICAqIERldmVsb3BlciBUb29scyBJbnN0YWxsZWQKLQotQWxzbywgeW91
J2xsIG5lZWQgQ01ha2UgMi42LjQgb3IgaGlnaGVyIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHRoZQot
c2FtcGxlcyB1c2luZyB0aGUgcHJvdmlkZWQgQ01ha2Ugc2NyaXB0LCByZWdhcmRsZXNzIG9mIHRo
ZSBwbGF0Zm9ybS4KLQotUmVxdWlyZW1lbnRzIGZvciBDb250cmlidXRvcnMKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0KLVdlIHdlbGNvbWUgcGF0Y2hlcy4gIElmIHlvdSBwbGFuIHRv
IGNvbnRyaWJ1dGUgYSBwYXRjaCwgeW91IG5lZWQgdG8KLWJ1aWxkIEdvb2dsZSBUZXN0IGFuZCBp
dHMgb3duIHRlc3RzIGZyb20gYW4gU1ZOIGNoZWNrb3V0IChkZXNjcmliZWQKLWJlbG93KSwgd2hp
Y2ggaGFzIGZ1cnRoZXIgcmVxdWlyZW1lbnRzOgotCi0gICogUHl0aG9uIHZlcnNpb24gMi4zIG9y
IG5ld2VyIChmb3IgcnVubmluZyBzb21lIG9mIHRoZSB0ZXN0cyBhbmQKLSAgICByZS1nZW5lcmF0
aW5nIGNlcnRhaW4gc291cmNlIGZpbGVzIGZyb20gdGVtcGxhdGVzKQotICAqIENNYWtlIDIuNi40
IG9yIG5ld2VyCi0KLUdldHRpbmcgdGhlIFNvdXJjZQotLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRo
ZXJlIGFyZSB0d28gcHJpbWFyeSB3YXlzIG9mIGdldHRpbmcgR29vZ2xlIFRlc3QncyBzb3VyY2Ug
Y29kZTogeW91Ci1jYW4gZG93bmxvYWQgYSBzdGFibGUgc291cmNlIHJlbGVhc2UgaW4geW91ciBw
cmVmZXJyZWQgYXJjaGl2ZSBmb3JtYXQsCi1vciBkaXJlY3RseSBjaGVjayBvdXQgdGhlIHNvdXJj
ZSBmcm9tIG91ciBTdWJ2ZXJzaW9uIChTVk4pIHJlcG9zaXRhcnkuCi1UaGUgU1ZOIGNoZWNrb3V0
IHJlcXVpcmVzIGEgZmV3IGV4dHJhIHN0ZXBzIGFuZCBzb21lIGV4dHJhIHNvZnR3YXJlCi1wYWNr
YWdlcyBvbiB5b3VyIHN5c3RlbSwgYnV0IGxldHMgeW91IHRyYWNrIHRoZSBsYXRlc3QgZGV2ZWxv
cG1lbnQgYW5kCi1tYWtlIHBhdGNoZXMgbXVjaCBtb3JlIGVhc2lseSwgc28gd2UgaGlnaGx5IGVu
Y291cmFnZSBpdC4KLQotIyMjIFNvdXJjZSBQYWNrYWdlICMjIwotCi1Hb29nbGUgVGVzdCBpcyBy
ZWxlYXNlZCBpbiB2ZXJzaW9uZWQgc291cmNlIHBhY2thZ2VzIHdoaWNoIGNhbiBiZQotZG93bmxv
YWRlZCBmcm9tIHRoZSBkb3dubG9hZCBwYWdlIFsxXS4gIFNldmVyYWwgZGlmZmVyZW50IGFyY2hp
dmUKLWZvcm1hdHMgYXJlIHByb3ZpZGVkLCBidXQgdGhlIG9ubHkgZGlmZmVyZW5jZSBpcyB0aGUg
dG9vbHMgdXNlZCB0bwotbWFuaXB1bGF0ZSB0aGVtLCBhbmQgdGhlIHNpemUgb2YgdGhlIHJlc3Vs
dGluZyBmaWxlLiAgRG93bmxvYWQKLXdoaWNoZXZlciB5b3UgYXJlIG1vc3QgY29tZm9ydGFibGUg
d2l0aC4KLQotICBbMV0gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3QvZG93bmxv
YWRzL2xpc3QKLQotT25jZSB0aGUgcGFja2FnZSBpcyBkb3dubG9hZGVkLCBleHBhbmQgaXQgdXNp
bmcgd2hpY2hldmVyIHRvb2xzIHlvdQotcHJlZmVyIGZvciB0aGF0IHR5cGUuICBUaGlzIHdpbGwg
cmVzdWx0IGluIGEgbmV3IGRpcmVjdG9yeSB3aXRoIHRoZQotbmFtZSAiZ3Rlc3QtWC5ZLloiIHdo
aWNoIGNvbnRhaW5zIGFsbCBvZiB0aGUgc291cmNlIGNvZGUuICBIZXJlIGFyZQotc29tZSBleGFt
cGxlcyBvbiBMaW51eDoKLQotICB0YXIgLXh2emYgZ3Rlc3QtWC5ZLloudGFyLmd6Ci0gIHRhciAt
eHZqZiBndGVzdC1YLlkuWi50YXIuYnoyCi0gIHVuemlwIGd0ZXN0LVguWS5aLnppcAotCi0jIyMg
U1ZOIENoZWNrb3V0ICMjIwotCi1UbyBjaGVjayBvdXQgdGhlIG1haW4gYnJhbmNoIChhbHNvIGtu
b3duIGFzIHRoZSAidHJ1bmsiKSBvZiBHb29nbGUKLVRlc3QsIHJ1biB0aGUgZm9sbG93aW5nIFN1
YnZlcnNpb24gY29tbWFuZDoKLQotICBzdm4gY2hlY2tvdXQgaHR0cDovL2dvb2dsZXRlc3QuZ29v
Z2xlY29kZS5jb20vc3ZuL3RydW5rLyBndGVzdC1zdm4KLQotU2V0dGluZyB1cCB0aGUgQnVpbGQK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRvIGJ1aWxkIEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRl
c3RzIHRoYXQgdXNlIGl0LCB5b3UgbmVlZCB0byB0ZWxsIHlvdXIKLWJ1aWxkIHN5c3RlbSB3aGVy
ZSB0byBmaW5kIGl0cyBoZWFkZXJzIGFuZCBzb3VyY2UgZmlsZXMuICBUaGUgZXhhY3QKLXdheSB0
byBkbyBpdCBkZXBlbmRzIG9uIHdoaWNoIGJ1aWxkIHN5c3RlbSB5b3UgdXNlLCBhbmQgaXMgdXN1
YWxseQotc3RyYWlnaHRmb3J3YXJkLgotCi0jIyMgR2VuZXJpYyBCdWlsZCBJbnN0cnVjdGlvbnMg
IyMjCi0KLVN1cHBvc2UgeW91IHB1dCBHb29nbGUgVGVzdCBpbiBkaXJlY3RvcnkgJHtHVEVTVF9E
SVJ9LiAgVG8gYnVpbGQgaXQsCi1jcmVhdGUgYSBsaWJyYXJ5IGJ1aWxkIHRhcmdldCAob3IgYSBw
cm9qZWN0IGFzIGNhbGxlZCBieSBWaXN1YWwgU3R1ZGlvCi1hbmQgWGNvZGUpIHRvIGNvbXBpbGUK
LQotICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LWFsbC5jYwotCi13aXRoCi0KLSAgJHtHVEVTVF9E
SVJ9L2luY2x1ZGUgYW5kICR7R1RFU1RfRElSfQotCi1pbiB0aGUgaGVhZGVyIHNlYXJjaCBwYXRo
LiAgQXNzdW1pbmcgYSBMaW51eC1saWtlIHN5c3RlbSBhbmQgZ2NjLAotc29tZXRoaW5nIGxpa2Ug
dGhlIGZvbGxvd2luZyB3aWxsIGRvOgotCi0gIGcrKyAtSSR7R1RFU1RfRElSfS9pbmNsdWRlIC1J
JHtHVEVTVF9ESVJ9IC1jICR7R1RFU1RfRElSfS9zcmMvZ3Rlc3QtYWxsLmNjCi0gIGFyIC1ydiBs
aWJndGVzdC5hIGd0ZXN0LWFsbC5vCi0KLU5leHQsIHlvdSBzaG91bGQgY29tcGlsZSB5b3VyIHRl
c3Qgc291cmNlIGZpbGUgd2l0aAotJHtHVEVTVF9ESVJ9L2luY2x1ZGUgaW4gdGhlIGhlYWRlciBz
ZWFyY2ggcGF0aCwgYW5kIGxpbmsgaXQgd2l0aCBndGVzdAotYW5kIGFueSBvdGhlciBuZWNlc3Nh
cnkgbGlicmFyaWVzOgotCi0gIGcrKyAtSSR7R1RFU1RfRElSfS9pbmNsdWRlIHBhdGgvdG8veW91
cl90ZXN0LmNjIGxpYmd0ZXN0LmEgLW8geW91cl90ZXN0Ci0KLUFzIGFuIGV4YW1wbGUsIHRoZSBt
YWtlLyBkaXJlY3RvcnkgY29udGFpbnMgYSBNYWtlZmlsZSB0aGF0IHlvdSBjYW4KLXVzZSB0byBi
dWlsZCBHb29nbGUgVGVzdCBvbiBzeXN0ZW1zIHdoZXJlIEdOVSBtYWtlIGlzIGF2YWlsYWJsZQot
KGUuZy4gTGludXgsIE1hYyBPUyBYLCBhbmQgQ3lnd2luKS4gIEl0IGRvZXNuJ3QgdHJ5IHRvIGJ1
aWxkIEdvb2dsZQotVGVzdCdzIG93biB0ZXN0cy4gIEluc3RlYWQsIGl0IGp1c3QgYnVpbGRzIHRo
ZSBHb29nbGUgVGVzdCBsaWJyYXJ5IGFuZAotYSBzYW1wbGUgdGVzdC4gIFlvdSBjYW4gdXNlIGl0
IGFzIGEgc3RhcnRpbmcgcG9pbnQgZm9yIHlvdXIgb3duIGJ1aWxkCi1zY3JpcHQuCi0KLUlmIHRo
ZSBkZWZhdWx0IHNldHRpbmdzIGFyZSBjb3JyZWN0IGZvciB5b3VyIGVudmlyb25tZW50LCB0aGUK
LWZvbGxvd2luZyBjb21tYW5kcyBzaG91bGQgc3VjY2VlZDoKLQotICBjZCAke0dURVNUX0RJUn0v
bWFrZQotICBtYWtlCi0gIC4vc2FtcGxlMV91bml0dGVzdAotCi1JZiB5b3Ugc2VlIGVycm9ycywg
dHJ5IHRvIHR3ZWFrIHRoZSBjb250ZW50cyBvZiBtYWtlL01ha2VmaWxlIHRvIG1ha2UKLXRoZW0g
Z28gYXdheS4gIFRoZXJlIGFyZSBpbnN0cnVjdGlvbnMgaW4gbWFrZS9NYWtlZmlsZSBvbiBob3cg
dG8gZG8KLWl0LgotCi0jIyMgVXNpbmcgQ01ha2UgIyMjCi0KLUdvb2dsZSBUZXN0IGNvbWVzIHdp
dGggYSBDTWFrZSBidWlsZCBzY3JpcHQgKENNYWtlTGlzdHMudHh0KSB0aGF0IGNhbgotYmUgdXNl
ZCBvbiBhIHdpZGUgcmFuZ2Ugb2YgcGxhdGZvcm1zICgiQyIgc3RhbmRzIGZvciBjcm9zcy1wbGF0
b2ZybS4pLgotSWYgeW91IGRvbid0IGhhdmUgQ01ha2UgaW5zdGFsbGVkIGFscmVhZHksIHlvdSBj
YW4gZG93bmxvYWQgaXQgZm9yCi1mcmVlIGZyb20gaHR0cDovL3d3dy5jbWFrZS5vcmcvLgotCi1D
TWFrZSB3b3JrcyBieSBnZW5lcmF0aW5nIG5hdGl2ZSBtYWtlZmlsZXMgb3IgYnVpbGQgcHJvamVj
dHMgdGhhdCBjYW4KLWJlIHVzZWQgaW4gdGhlIGNvbXBpbGVyIGVudmlyb25tZW50IG9mIHlvdXIg
Y2hvaWNlLiAgVGhlIHR5cGljYWwKLXdvcmtmbG93IHN0YXJ0cyB3aXRoOgotCi0gIG1rZGlyIG15
YnVpbGQgICAgICAgIyBDcmVhdGUgYSBkaXJlY3RvcnkgdG8gaG9sZCB0aGUgYnVpbGQgb3V0cHV0
LgotICBjZCBteWJ1aWxkCi0gIGNtYWtlICR7R1RFU1RfRElSfSAgIyBHZW5lcmF0ZSBuYXRpdmUg
YnVpbGQgc2NyaXB0cy4KLQotSWYgeW91IHdhbnQgdG8gYnVpbGQgR29vZ2xlIFRlc3QncyBzYW1w
bGVzLCB5b3Ugc2hvdWxkIHJlcGxhY2UgdGhlCi1sYXN0IGNvbW1hbmQgd2l0aAotCi0gIGNtYWtl
IC1EYnVpbGRfZ3Rlc3Rfc2FtcGxlcz1PTiAke0dURVNUX0RJUn0KLQotSWYgeW91IGFyZSBvbiBh
ICpuaXggc3lzdGVtLCB5b3Ugc2hvdWxkIG5vdyBzZWUgYSBNYWtlZmlsZSBpbiB0aGUKLWN1cnJl
bnQgZGlyZWN0b3J5LiAgSnVzdCB0eXBlICdtYWtlJyB0byBidWlsZCBndGVzdC4KLQotSWYgeW91
IHVzZSBXaW5kb3dzIGFuZCBoYXZlIFZpc3R1YWwgU3R1ZGlvIGluc3RhbGxlZCwgYSBndGVzdC5z
bG4gZmlsZQotYW5kIHNldmVyYWwgLnZjcHJvaiBmaWxlcyB3aWxsIGJlIGNyZWF0ZWQuICBZb3Ug
Y2FuIHRoZW4gYnVpbGQgdGhlbQotdXNpbmcgVmlzdWFsIFN0dWRpby4KLQotT24gTWFjIE9TIFgg
d2l0aCBYY29kZSBpbnN0YWxsZWQsIGEgLnhjb2RlcHJvaiBmaWxlIHdpbGwgYmUgZ2VuZXJhdGVk
LgotCi0jIyMgTGVnYWN5IEJ1aWxkIFNjcmlwdHMgIyMjCi0KLUJlZm9yZSBzZXR0bGluZyBvbiBD
TWFrZSwgd2UgaGF2ZSBiZWVuIHByb3ZpZGluZyBoYW5kLW1haW50YWluZWQgYnVpbGQKLXByb2pl
Y3RzL3NjcmlwdHMgZm9yIFZpc3VhbCBTdHVkaW8sIFhjb2RlLCBhbmQgQXV0b3Rvb2xzLiAgV2hp
bGUgd2UKLWNvbnRpbnVlIHRvIHByb3ZpZGUgdGhlbSBmb3IgY29udmVuaWVuY2UsIHRoZXkgYXJl
IG5vdCBhY3RpdmVseQotbWFpbnRhaW5lZCBhbnkgbW9yZS4gIFdlIGhpZ2hseSByZWNvbW1lbmQg
dGhhdCB5b3UgZm9sbG93IHRoZQotaW5zdHJ1Y3Rpb25zIGluIHRoZSBwcmV2aW91cyB0d28gc2Vj
dGlvbnMgdG8gaW50ZWdyYXRlIEdvb2dsZSBUZXN0Ci13aXRoIHlvdXIgZXhpc3RpbmcgYnVpbGQg
c3lzdGVtLgotCi1JZiB5b3Ugc3RpbGwgbmVlZCB0byB1c2UgdGhlIGxlZ2FjeSBidWlsZCBzY3Jp
cHRzLCBoZXJlJ3MgaG93OgotCi1UaGUgbXN2Y1wgZm9sZGVyIGNvbnRhaW5zIHR3byBzb2x1dGlv
bnMgd2l0aCBWaXN1YWwgQysrIHByb2plY3RzLgotT3BlbiB0aGUgZ3Rlc3Quc2xuIG9yIGd0ZXN0
LW1kLnNsbiBmaWxlIHVzaW5nIFZpc3VhbCBTdHVkaW8sIGFuZCB5b3UKLWFyZSByZWFkeSB0byBi
dWlsZCBHb29nbGUgVGVzdCB0aGUgc2FtZSB3YXkgeW91IGJ1aWxkIGFueSBWaXN1YWwKLVN0dWRp
byBwcm9qZWN0LiAgRmlsZXMgdGhhdCBoYXZlIG5hbWVzIGVuZGluZyB3aXRoIC1tZCB1c2UgRExM
Ci12ZXJzaW9ucyBvZiBNaWNyb3NvZnQgcnVudGltZSBsaWJyYXJpZXMgKHRoZSAvTUQgb3IgdGhl
IC9NRGQgY29tcGlsZXIKLW9wdGlvbikuICBGaWxlcyB3aXRob3V0IHRoYXQgc3VmZml4IHVzZSBz
dGF0aWMgdmVyc2lvbnMgb2YgdGhlIHJ1bnRpbWUKLWxpYnJhcmllcyAodGhlIC9NVCBvciB0aGUg
L01UZCBvcHRpb24pLiAgUGxlYXNlIG5vdGUgdGhhdCBvbmUgbXVzdCB1c2UKLXRoZSBzYW1lIG9w
dGlvbiB0byBjb21waWxlIGJvdGggZ3Rlc3QgYW5kIHRoZSB0ZXN0IGNvZGUuICBJZiB5b3UgdXNl
Ci1WaXN1YWwgU3R1ZGlvIDIwMDUgb3IgYWJvdmUsIHdlIHJlY29tbWVuZCB0aGUgLW1kIHZlcnNp
b24gYXMgL01EIGlzCi10aGUgZGVmYXVsdCBmb3IgbmV3IHByb2plY3RzIGluIHRoZXNlIHZlcnNp
b25zIG9mIFZpc3VhbCBTdHVkaW8uCi0KLU9uIE1hYyBPUyBYLCBvcGVuIHRoZSBndGVzdC54Y29k
ZXByb2ogaW4gdGhlIHhjb2RlLyBmb2xkZXIgdXNpbmcKLVhjb2RlLiAgQnVpbGQgdGhlICJndGVz
dCIgdGFyZ2V0LiAgVGhlIHVuaXZlcnNhbCBiaW5hcnkgZnJhbWV3b3JrIHdpbGwKLWVuZCB1cCBp
biB5b3VyIHNlbGVjdGVkIGJ1aWxkIGRpcmVjdG9yeSAoc2VsZWN0ZWQgaW4gdGhlIFhjb2RlCi0i
UHJlZmVyZW5jZXMuLi4iIC0+ICJCdWlsZGluZyIgcGFuZSBhbmQgZGVmYXVsdHMgdG8geGNvZGUv
YnVpbGQpLgotQWx0ZXJuYXRpdmVseSwgYXQgdGhlIGNvbW1hbmQgbGluZSwgZW50ZXI6Ci0KLSAg
eGNvZGVidWlsZAotCi1UaGlzIHdpbGwgYnVpbGQgdGhlICJSZWxlYXNlIiBjb25maWd1cmF0aW9u
IG9mIGd0ZXN0LmZyYW1ld29yayBpbiB5b3VyCi1kZWZhdWx0IGJ1aWxkIGxvY2F0aW9uLiAgU2Vl
IHRoZSAieGNvZGVidWlsZCIgbWFuIHBhZ2UgZm9yIG1vcmUKLWluZm9ybWF0aW9uIGFib3V0IGJ1
aWxkaW5nIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBhbmQgYnVpbGRpbmcgaW4KLWRpZmZlcmVu
dCBsb2NhdGlvbnMuCi0KLVR3ZWFraW5nIEdvb2dsZSBUZXN0Ci0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCi1Hb29nbGUgVGVzdCBjYW4gYmUgdXNlZCBpbiBkaXZlcnNlIGVudmlyb25tZW50cy4gIFRo
ZSBkZWZhdWx0Ci1jb25maWd1cmF0aW9uIG1heSBub3Qgd29yayAob3IgbWF5IG5vdCB3b3JrIHdl
bGwpIG91dCBvZiB0aGUgYm94IGluCi1zb21lIGVudmlyb25tZW50cy4gIEhvd2V2ZXIsIHlvdSBj
YW4gZWFzaWx5IHR3ZWFrIEdvb2dsZSBUZXN0IGJ5Ci1kZWZpbmluZyBjb250cm9sIG1hY3JvcyBv
biB0aGUgY29tcGlsZXIgY29tbWFuZCBsaW5lLiAgR2VuZXJhbGx5LAotdGhlc2UgbWFjcm9zIGFy
ZSBuYW1lZCBsaWtlIEdURVNUX1hZWiBhbmQgeW91IGRlZmluZSB0aGVtIHRvIGVpdGhlciAxCi1v
ciAwIHRvIGVuYWJsZSBvciBkaXNhYmxlIGEgY2VydGFpbiBmZWF0dXJlLgotCi1XZSBsaXN0IHRo
ZSBtb3N0IGZyZXF1ZW50bHkgdXNlZCBtYWNyb3MgYmVsb3cuICBGb3IgYSBjb21wbGV0ZSBsaXN0
LAotc2VlIGZpbGUgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmguCi0KLSMjIyBD
aG9vc2luZyBhIFRSMSBUdXBsZSBMaWJyYXJ5ICMjIwotCi1Tb21lIEdvb2dsZSBUZXN0IGZlYXR1
cmVzIHJlcXVpcmUgdGhlIEMrKyBUZWNobmljYWwgUmVwb3J0IDEgKFRSMSkKLXR1cGxlIGxpYnJh
cnksIHdoaWNoIGlzIG5vdCB5ZXQgYXZhaWxhYmxlIHdpdGggYWxsIGNvbXBpbGVycy4gIFRoZQot
Z29vZCBuZXdzIGlzIHRoYXQgR29vZ2xlIFRlc3QgaW1wbGVtZW50cyBhIHN1YnNldCBvZiBUUjEg
dHVwbGUgdGhhdCdzCi1lbm91Z2ggZm9yIGl0cyBvd24gbmVlZCwgYW5kIHdpbGwgYXV0b21hdGlj
YWxseSB1c2UgdGhpcyB3aGVuIHRoZQotY29tcGlsZXIgZG9lc24ndCBwcm92aWRlIFRSMSB0dXBs
ZS4KLQotVXN1YWxseSB5b3UgZG9uJ3QgbmVlZCB0byBjYXJlIGFib3V0IHdoaWNoIHR1cGxlIGxp
YnJhcnkgR29vZ2xlIFRlc3QKLXVzZXMuICBIb3dldmVyLCBpZiB5b3VyIHByb2plY3QgYWxyZWFk
eSB1c2VzIFRSMSB0dXBsZSwgeW91IG5lZWQgdG8KLXRlbGwgR29vZ2xlIFRlc3QgdG8gdXNlIHRo
ZSBzYW1lIFRSMSB0dXBsZSBsaWJyYXJ5IHRoZSByZXN0IG9mIHlvdXIKLXByb2plY3QgdXNlcywg
b3IgdGhlIHR3byB0dXBsZSBpbXBsZW1lbnRhdGlvbnMgd2lsbCBjbGFzaC4gIFRvIGRvCi10aGF0
LCBhZGQKLQotICAtREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTAKLQotdG8gdGhlIGNvbXBpbGVy
IGZsYWdzIHdoaWxlIGNvbXBpbGluZyBHb29nbGUgVGVzdCBhbmQgeW91ciB0ZXN0cy4gIElmCi15
b3Ugd2FudCB0byBmb3JjZSBHb29nbGUgVGVzdCB0byB1c2UgaXRzIG93biB0dXBsZSBsaWJyYXJ5
LCBqdXN0IGFkZAotCi0gIC1ER1RFU1RfVVNFX09XTl9UUjFfVFVQTEU9MQotCi10byB0aGUgY29t
cGlsZXIgZmxhZ3MgaW5zdGVhZC4KLQotSWYgeW91IGRvbid0IHdhbnQgR29vZ2xlIFRlc3QgdG8g
dXNlIHR1cGxlIGF0IGFsbCwgYWRkCi0KLSAgLURHVEVTVF9IQVNfVFIxX1RVUExFPTAKLQotYW5k
IGFsbCBmZWF0dXJlcyB1c2luZyB0dXBsZSB3aWxsIGJlIGRpc2FibGVkLgotCi0jIyMgTXVsdGkt
dGhyZWFkZWQgVGVzdHMgIyMjCi0KLUdvb2dsZSBUZXN0IGlzIHRocmVhZC1zYWZlIHdoZXJlIHRo
ZSBwdGhyZWFkIGxpYnJhcnkgaXMgYXZhaWxhYmxlLgotQWZ0ZXIgI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0Lmg+LCB5b3UgY2FuIGNoZWNrIHRoZSBHVEVTVF9JU19USFJFQURTQUZFCi1tYWNybyB0byBz
ZWUgd2hldGhlciB0aGlzIGlzIHRoZSBjYXNlICh5ZXMgaWYgdGhlIG1hY3JvIGlzICNkZWZpbmVk
IHRvCi0xLCBubyBpZiBpdCdzIHVuZGVmaW5lZC4pLgotCi1JZiBHb29nbGUgVGVzdCBkb2Vzbid0
IGNvcnJlY3RseSBkZXRlY3Qgd2hldGhlciBwdGhyZWFkIGlzIGF2YWlsYWJsZQotaW4geW91ciBl
bnZpcm9ubWVudCwgeW91IGNhbiBmb3JjZSBpdCB3aXRoCi0KLSAgLURHVEVTVF9IQVNfUFRIUkVB
RD0xCi0KLW9yCi0KLSAgLURHVEVTVF9IQVNfUFRIUkVBRD0wCi0KLVdoZW4gR29vZ2xlIFRlc3Qg
dXNlcyBwdGhyZWFkLCB5b3UgbWF5IG5lZWQgdG8gYWRkIGZsYWdzIHRvIHlvdXIKLWNvbXBpbGVy
IGFuZC9vciBsaW5rZXIgdG8gc2VsZWN0IHRoZSBwdGhyZWFkIGxpYnJhcnksIG9yIHlvdSdsbCBn
ZXQKLWxpbmsgZXJyb3JzLiAgSWYgeW91IHVzZSB0aGUgQ01ha2Ugc2NyaXB0IG9yIHRoZSBkZXBy
ZWNhdGVkIEF1dG90b29scwotc2NyaXB0LCB0aGlzIGlzIHRha2VuIGNhcmUgb2YgZm9yIHlvdS4g
IElmIHlvdSB1c2UgeW91ciBvd24gYnVpbGQKLXNjcmlwdCwgeW91J2xsIG5lZWQgdG8gcmVhZCB5
b3VyIGNvbXBpbGVyIGFuZCBsaW5rZXIncyBtYW51YWwgdG8KLWZpZ3VyZSBvdXQgd2hhdCBmbGFn
cyB0byBhZGQuCi0KLSMjIyBBcyBhIFNoYXJlZCBMaWJyYXJ5IChETEwpICMjIwotCi1Hb29nbGUg
VGVzdCBpcyBjb21wYWN0LCBzbyBtb3N0IHVzZXJzIGNhbiBidWlsZCBhbmQgbGluayBpdCBhcyBh
Ci1zdGF0aWMgbGlicmFyeSBmb3IgdGhlIHNpbXBsaWNpdHkuICBZb3UgY2FuIGNob29zZSB0byB1
c2UgR29vZ2xlIFRlc3QKLWFzIGEgc2hhcmVkIGxpYnJhcnkgKGtub3duIGFzIGEgRExMIG9uIFdp
bmRvd3MpIGlmIHlvdSBwcmVmZXIuCi0KLVRvIGNvbXBpbGUgZ3Rlc3QgYXMgYSBzaGFyZWQgbGli
cmFyeSwgYWRkCi0KLSAgLURHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJBUlk9MQotCi10byB0aGUg
Y29tcGlsZXIgZmxhZ3MuICBZb3UnbGwgYWxzbyBuZWVkIHRvIHRlbGwgdGhlIGxpbmtlciB0byBw
cm9kdWNlCi1hIHNoYXJlZCBsaWJyYXJ5IGluc3RlYWQgLSBjb25zdWx0IHlvdXIgbGlua2VyJ3Mg
bWFudWFsIGZvciBob3cgdG8gZG8KLWl0LgotCi1UbyBjb21waWxlIHlvdXIgdGVzdHMgdGhhdCB1
c2UgdGhlIGd0ZXN0IHNoYXJlZCBsaWJyYXJ5LCBhZGQKLQotICAtREdURVNUX0xJTktFRF9BU19T
SEFSRURfTElCUkFSWT0xCi0KLXRvIHRoZSBjb21waWxlciBmbGFncy4KLQotIyMjIEF2b2lkaW5n
IE1hY3JvIE5hbWUgQ2xhc2hlcyAjIyMKLQotSW4gQysrLCBtYWNyb3MgZG9uJ3Qgb2JleSBuYW1l
c3BhY2VzLiAgVGhlcmVmb3JlIHR3byBsaWJyYXJpZXMgdGhhdAotYm90aCBkZWZpbmUgYSBtYWNy
byBvZiB0aGUgc2FtZSBuYW1lIHdpbGwgY2xhc2ggaWYgeW91ICNpbmNsdWRlIGJvdGgKLWRlZmlu
aXRpb25zLiAgSW4gY2FzZSBhIEdvb2dsZSBUZXN0IG1hY3JvIGNsYXNoZXMgd2l0aCBhbm90aGVy
Ci1saWJyYXJ5LCB5b3UgY2FuIGZvcmNlIEdvb2dsZSBUZXN0IHRvIHJlbmFtZSBpdHMgbWFjcm8g
dG8gYXZvaWQgdGhlCi1jb25mbGljdC4KLQotU3BlY2lmaWNhbGx5LCBpZiBib3RoIEdvb2dsZSBU
ZXN0IGFuZCBzb21lIG90aGVyIGNvZGUgZGVmaW5lIG1hY3JvCi1GT08sIHlvdSBjYW4gYWRkCi0K
LSAgLURHVEVTVF9ET05UX0RFRklORV9GT089MQotCi10byB0aGUgY29tcGlsZXIgZmxhZ3MgdG8g
dGVsbCBHb29nbGUgVGVzdCB0byBjaGFuZ2UgdGhlIG1hY3JvJ3MgbmFtZQotZnJvbSBGT08gdG8g
R1RFU1RfRk9PLiAgQ3VycmVudGx5IEZPTyBjYW4gYmUgRkFJTCwgU1VDQ0VFRCwgb3IgVEVTVC4K
LUZvciBleGFtcGxlLCB3aXRoIC1ER1RFU1RfRE9OVF9ERUZJTkVfVEVTVD0xLCB5b3UnbGwgbmVl
ZCB0byB3cml0ZQotCi0gIEdURVNUX1RFU1QoU29tZVRlc3QsIERvZXNUaGlzKSB7IC4uLiB9Ci0K
LWluc3RlYWQgb2YKLQotICBURVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAuLi4gfQotCi1pbiBv
cmRlciB0byBkZWZpbmUgYSB0ZXN0LgotCi1VcGdyYXRpbmcgZnJvbSBhbiBFYXJsaWVyIFZlcnNp
b24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1XZSBzdHJpdmUgdG8ga2Vl
cCBHb29nbGUgVGVzdCByZWxlYXNlcyBiYWNrd2FyZCBjb21wYXRpYmxlLgotU29tZXRpbWVzLCB0
aG91Z2gsIHdlIGhhdmUgdG8gbWFrZSBzb21lIGJyZWFraW5nIGNoYW5nZXMgZm9yIHRoZQotdXNl
cnMnIGxvbmctdGVybSBiZW5lZml0cy4gIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgd2hhdCB5b3Un
bGwgbmVlZCB0bwotZG8gaWYgeW91IGFyZSB1cGdyYWRpbmcgZnJvbSBhbiBlYXJsaWVyIHZlcnNp
b24gb2YgR29vZ2xlIFRlc3QuCi0KLSMjIyBVcGdyYWRpbmcgZnJvbSAxLjMuMCBvciBFYXJsaWVy
ICMjIwotCi1Zb3UgbWF5IG5lZWQgdG8gZXhwbGljaXRseSBlbmFibGUgb3IgZGlzYWJsZSBHb29n
bGUgVGVzdCdzIG93biBUUjEKLXR1cGxlIGxpYnJhcnkuICBTZWUgdGhlIGluc3RydWN0aW9ucyBp
biBzZWN0aW9uICJDaG9vc2luZyBhIFRSMSBUdXBsZQotTGlicmFyeSIuCi0KLSMjIyBVcGdyYWRp
bmcgZnJvbSAxLjQuMCBvciBFYXJsaWVyICMjIwotCi1UaGUgQXV0b3Rvb2xzIGJ1aWxkIHNjcmlw
dCAoY29uZmlndXJlICsgbWFrZSkgaXMgbm8gbG9uZ2VyIG9mZmljaWFsbHkKLXN1cHBvcnR0ZWQu
ICBZb3UgYXJlIGVuY291cmFnZWQgdG8gbWlncmF0ZSB0byB5b3VyIG93biBidWlsZCBzeXN0ZW0g
b3IKLXVzZSBDTWFrZS4gIElmIHlvdSBzdGlsbCBuZWVkIHRvIHVzZSBBdXRvdG9vbHMsIHlvdSBj
YW4gZmluZAotaW5zdHJ1Y3Rpb25zIGluIHRoZSBSRUFETUUgZmlsZSBmcm9tIEdvb2dsZSBUZXN0
IDEuNC4wLgotCi1PbiBwbGF0Zm9ybXMgd2hlcmUgdGhlIHB0aHJlYWQgbGlicmFyeSBpcyBhdmFp
bGFibGUsIEdvb2dsZSBUZXN0IHVzZXMKLWl0IGluIG9yZGVyIHRvIGJlIHRocmVhZC1zYWZlLiAg
U2VlIHRoZSAiTXVsdGktdGhyZWFkZWQgVGVzdHMiIHNlY3Rpb24KLWZvciB3aGF0IHRoaXMgbWVh
bnMgdG8geW91ciBidWlsZCBzY3JpcHQuCi0KLUlmIHlvdSB1c2UgTWljcm9zb2Z0IFZpc3VhbCBD
KysgNy4xIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZCwgR29vZ2xlCi1UZXN0IHdpbGwgbm8gbG9u
Z2VyIGNvbXBpbGUuICBUaGlzIHNob3VsZCBhZmZlY3QgdmVyeSBmZXcgcGVvcGxlLCBhcyBhCi1s
YXJnZSBwb3J0aW9uIG9mIFNUTCAoaW5jbHVkaW5nIDxzdHJpbmc+KSBkb2Vzbid0IGNvbXBpbGUg
aW4gdGhpcyBtb2RlCi1hbnl3YXkuICBXZSBkZWNpZGVkIHRvIHN0b3Agc3VwcG9ydGluZyBpdCBp
biBvcmRlciB0byBncmVhdGx5IHNpbXBsaWZ5Ci1Hb29nbGUgVGVzdCdzIGltcGxlbWVudGF0aW9u
LgotCi1EZXZlbG9waW5nIEdvb2dsZSBUZXN0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRo
aXMgc2VjdGlvbiBkaXNjdXNzZXMgaG93IHRvIG1ha2UgeW91ciBvd24gY2hhbmdlcyB0byBHb29n
bGUgVGVzdC4KLQotIyMjIFRlc3RpbmcgR29vZ2xlIFRlc3QgSXRzZWxmICMjIwotCi1UbyBtYWtl
IHN1cmUgeW91ciBjaGFuZ2VzIHdvcmsgYXMgaW50ZW5kZWQgYW5kIGRvbid0IGJyZWFrIGV4aXN0
aW5nCi1mdW5jdGlvbmFsaXR5LCB5b3UnbGwgd2FudCB0byBjb21waWxlIGFuZCBydW4gR29vZ2xl
IFRlc3QncyBvd24gdGVzdHMuCi1Gb3IgdGhhdCB5b3UgY2FuIHVzZSBDTWFrZToKLQotICBta2Rp
ciBteWJ1aWxkCi0gIGNkIG15YnVpbGQKLSAgY21ha2UgLURidWlsZF9hbGxfZ3Rlc3RfdGVzdHM9
T04gJHtHVEVTVF9ESVJ9Ci0KLU1ha2Ugc3VyZSB5b3UgaGF2ZSBQeXRob24gaW5zdGFsbGVkLCBh
cyBzb21lIG9mIEdvb2dsZSBUZXN0J3MgdGVzdHMKLWFyZSB3cml0dGVuIGluIFB5dGhvbi4gIElm
IHRoZSBjbWFrZSBjb21tYW5kIGNvbXBsYWlucyBhYm91dCBub3QgYmVpbmcKLWFibGUgdG8gZmlu
ZCBQeXRob24gKCJDb3VsZCBOT1QgZmluZCBQeXRob25JbnRlcnAgKG1pc3Npbmc6Ci1QWVRIT05f
RVhFQ1VUQUJMRSkiKSwgdHJ5IHRlbGxpbmcgaXQgZXhwbGljaXRseSB3aGVyZSB5b3VyIFB5dGhv
bgotZXhlY3V0YWJsZSBjYW4gYmUgZm91bmQ6Ci0KLSAgY21ha2UgLURQWVRIT05fRVhFQ1VUQUJM
RT1wYXRoL3RvL3B5dGhvbiAtRGJ1aWxkX2FsbF9ndGVzdF90ZXN0cz1PTiBcCi0gICAgICAke0dU
RVNUX0RJUn0KLQotTmV4dCwgeW91IGNhbiBidWlsZCBHb29nbGUgVGVzdCBhbmQgYWxsIG9mIGl0
cyBvd24gdGVzdHMuICBPbiAqbml4LAotdGhpcyBpcyB1c3VhbGx5IGRvbmUgYnkgJ21ha2UnLiAg
VG8gcnVuIHRoZSB0ZXN0cywgZG8KLQotICBtYWtlIHRlc3QKLQotQWxsIHRlc3RzIHNob3VsZCBw
YXNzLgotCi0jIyMgUmVnZW5lcmF0aW5nIFNvdXJjZSBGaWxlcyAjIyMKLQotU29tZSBvZiBHb29n
bGUgVGVzdCdzIHNvdXJjZSBmaWxlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGVtcGxhdGVzIChub3QK
LWluIHRoZSBDKysgc2Vuc2UpIHVzaW5nIGEgc2NyaXB0LiAgQSB0ZW1wbGF0ZSBmaWxlIGlzIG5h
bWVkIEZPTy5wdW1wLAotd2hlcmUgRk9PIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGl0IHdpbGwg
Z2VuZXJhdGUuICBGb3IgZXhhbXBsZSwgdGhlCi1maWxlIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtdHlwZS11dGlsLmgucHVtcCBpcyB1c2VkIHRvIGdlbmVyYXRlCi1ndGVzdC10eXBlLXV0
aWwuaCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCi0KLU5vcm1hbGx5IHlvdSBkb24ndCBuZWVkIHRv
IHdvcnJ5IGFib3V0IHJlZ2VuZXJhdGluZyB0aGUgc291cmNlIGZpbGVzLAotdW5sZXNzIHlvdSBu
ZWVkIHRvIG1vZGlmeSB0aGVtLiAgSW4gdGhhdCBjYXNlLCB5b3Ugc2hvdWxkIG1vZGlmeSB0aGUK
LWNvcnJlc3BvbmRpbmcgLnB1bXAgZmlsZXMgaW5zdGVhZCBhbmQgcnVuIHRoZSBwdW1wLnB5IFB5
dGhvbiBzY3JpcHQgdG8KLXJlZ2VuZXJhdGUgdGhlbS4gIFlvdSBjYW4gZmluZCBwdW1wLnB5IGlu
IHRoZSBzY3JpcHRzLyBkaXJlY3RvcnkuCi1SZWFkIHRoZSBQdW1wIG1hbnVhbCBbMl0gZm9yIGhv
dyB0byB1c2UgaXQuCi0KLSAgWzJdIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0
L3dpa2kvUHVtcE1hbnVhbAotCi0jIyMgQ29udHJpYnV0aW5nIGEgUGF0Y2ggIyMjCi0KLVdlIHdl
bGNvbWUgcGF0Y2hlcy4gIFBsZWFzZSByZWFkIHRoZSBHb29nbGUgVGVzdCBkZXZlbG9wZXIncyBn
dWlkZSBbM10KLWZvciBob3cgeW91IGNhbiBjb250cmlidXRlLiAgSW4gcGFydGljdWxhciwgbWFr
ZSBzdXJlIHlvdSBoYXZlIHNpZ25lZAotdGhlIENvbnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVtZW50
LCBvciB3ZSB3b24ndCBiZSBhYmxlIHRvIGFjY2VwdCB0aGUKLXBhdGNoLgotCi0gIFszXSBodHRw
Oi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL0dvb2dsZVRlc3REZXZHdWlkZQot
Ci1IYXBweSB0ZXN0aW5nIQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVB
RE1FLldlYktpdCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5XZWJLaXQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhMzE4ZmY2MmUzMjQ5YzhlNjUzMjA5M2Y0MGUzY2I0
MWMxNWY5YWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVBRE1FLldlYktpdAorKysgL2Rldi9udWxsCkBAIC0x
LDE2ICswLDAgQEAKLUdUZXN0IHYuMS41LjAKLQotaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29k
ZS5jb20vc3ZuL3RhZ3MvcmVsZWFzZS0xLjUuMC8gCi0KLTIwMTYtMDEtMDIgVGluZy1XZWkgTGFu
IChsYW50dzQ0QGdtYWlsLmNvbSkKLSAgICAgIFJlbW92ZSB1c2FnZSBvZiBlbnZpcm9uIGdsb2Jh
bCB2YXJpYWJsZSB0byBmaXggdGhlIGJ1aWxkIG9uIEZyZWVCU0QuCi0KLTIwMTItMDEtMDQgRG1p
dHJ5IExvbW92IChkc2xvbW92QGdvb2dsZS5jb20pICBEYXZpZCBLaWx6ZXIgKGRka2lsemVyQGFw
cGxlLmNvbSkKLSAgICAgIC0gV2ViS2l0IHBvcnQgb2YgZ3Rlc3QgdXNlcyBGYXN0TWFsbG9jICJu
ZXciIGFuZCAiZGVsZXRlIiBvcGVyYXRvcnMgZnJvbSBKYXZhU2NyaXB0Q29yZS4KLSAgICAgIC0g
VGhlIGd0ZXN0LmZyYW1ld29yayB0YXJnZXQgbm93IGxpbmtzIHRvIEphdmFTY3JpcHRDb3JlLmZy
YW1ld29yay4KLQotMjAxMS0xMi0yMiBEYXZpZCBLaWx6ZXIgKGRka2lsemVyQGFwcGxlLmNvbSkK
LSAgICAgIEFkZGVkIFByb2R1Y3Rpb24gY29uZmlndXJhdGlvbiB0byBndGVzdCBYY29kZSBwcm9q
ZWN0LgotCi0yMDExLTA1LTA2IERtaXRyeSBMb21vdiAoZHNsb21vdkBnb29nbGUuY29tKQotICAg
ICAgZ3Rlc3QtbWQudmNwcm9qIHVwZ3JhZGVkIHRvIFZTIDIwMDUgKDguMCkgZm9ybWF0IHRvIG1h
dGNoIHRoZSByZXN0IG9mIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvUkVBRE1FLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVBRE1FLm1kCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUzMGZlODA0NzEyN2JlZTE2ZDJjNzFmMTRiNTA5ZjM3NTcxYWRkNDEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9SRUFETUUubWQKQEAgLTAsMCArMSwzNDEg
QEAKKyMjIyBHZW5lcmljIEJ1aWxkIEluc3RydWN0aW9ucworCisjIyMjIFNldHVwCisKK1RvIGJ1
aWxkIEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRlc3RzIHRoYXQgdXNlIGl0LCB5b3UgbmVlZCB0byB0
ZWxsIHlvdXIgYnVpbGQKK3N5c3RlbSB3aGVyZSB0byBmaW5kIGl0cyBoZWFkZXJzIGFuZCBzb3Vy
Y2UgZmlsZXMuIFRoZSBleGFjdCB3YXkgdG8gZG8gaXQKK2RlcGVuZHMgb24gd2hpY2ggYnVpbGQg
c3lzdGVtIHlvdSB1c2UsIGFuZCBpcyB1c3VhbGx5IHN0cmFpZ2h0Zm9yd2FyZC4KKworIyMjIyBC
dWlsZAorCitTdXBwb3NlIHlvdSBwdXQgR29vZ2xlIFRlc3QgaW4gZGlyZWN0b3J5IGAke0dURVNU
X0RJUn1gLiBUbyBidWlsZCBpdCwgY3JlYXRlIGEKK2xpYnJhcnkgYnVpbGQgdGFyZ2V0IChvciBh
IHByb2plY3QgYXMgY2FsbGVkIGJ5IFZpc3VhbCBTdHVkaW8gYW5kIFhjb2RlKSB0bworY29tcGls
ZQorCisgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1hbGwuY2MKKword2l0aCBgJHtHVEVTVF9E
SVJ9L2luY2x1ZGVgIGluIHRoZSBzeXN0ZW0gaGVhZGVyIHNlYXJjaCBwYXRoIGFuZCBgJHtHVEVT
VF9ESVJ9YAoraW4gdGhlIG5vcm1hbCBoZWFkZXIgc2VhcmNoIHBhdGguIEFzc3VtaW5nIGEgTGlu
dXgtbGlrZSBzeXN0ZW0gYW5kIGdjYywKK3NvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgd2ls
bCBkbzoKKworICAgIGcrKyAtaXN5c3RlbSAke0dURVNUX0RJUn0vaW5jbHVkZSAtSSR7R1RFU1Rf
RElSfSBcCisgICAgICAgIC1wdGhyZWFkIC1jICR7R1RFU1RfRElSfS9zcmMvZ3Rlc3QtYWxsLmNj
CisgICAgYXIgLXJ2IGxpYmd0ZXN0LmEgZ3Rlc3QtYWxsLm8KKworKFdlIG5lZWQgYC1wdGhyZWFk
YCBhcyBHb29nbGUgVGVzdCB1c2VzIHRocmVhZHMuKQorCitOZXh0LCB5b3Ugc2hvdWxkIGNvbXBp
bGUgeW91ciB0ZXN0IHNvdXJjZSBmaWxlIHdpdGggYCR7R1RFU1RfRElSfS9pbmNsdWRlYCBpbgor
dGhlIHN5c3RlbSBoZWFkZXIgc2VhcmNoIHBhdGgsIGFuZCBsaW5rIGl0IHdpdGggZ3Rlc3QgYW5k
IGFueSBvdGhlciBuZWNlc3NhcnkKK2xpYnJhcmllczoKKworICAgIGcrKyAtaXN5c3RlbSAke0dU
RVNUX0RJUn0vaW5jbHVkZSAtcHRocmVhZCBwYXRoL3RvL3lvdXJfdGVzdC5jYyBsaWJndGVzdC5h
IFwKKyAgICAgICAgLW8geW91cl90ZXN0CisKK0FzIGFuIGV4YW1wbGUsIHRoZSBtYWtlLyBkaXJl
Y3RvcnkgY29udGFpbnMgYSBNYWtlZmlsZSB0aGF0IHlvdSBjYW4gdXNlIHRvIGJ1aWxkCitHb29n
bGUgVGVzdCBvbiBzeXN0ZW1zIHdoZXJlIEdOVSBtYWtlIGlzIGF2YWlsYWJsZSAoZS5nLiBMaW51
eCwgTWFjIE9TIFgsIGFuZAorQ3lnd2luKS4gSXQgZG9lc24ndCB0cnkgdG8gYnVpbGQgR29vZ2xl
IFRlc3QncyBvd24gdGVzdHMuIEluc3RlYWQsIGl0IGp1c3QKK2J1aWxkcyB0aGUgR29vZ2xlIFRl
c3QgbGlicmFyeSBhbmQgYSBzYW1wbGUgdGVzdC4gWW91IGNhbiB1c2UgaXQgYXMgYSBzdGFydGlu
ZworcG9pbnQgZm9yIHlvdXIgb3duIGJ1aWxkIHNjcmlwdC4KKworSWYgdGhlIGRlZmF1bHQgc2V0
dGluZ3MgYXJlIGNvcnJlY3QgZm9yIHlvdXIgZW52aXJvbm1lbnQsIHRoZSBmb2xsb3dpbmcgY29t
bWFuZHMKK3Nob3VsZCBzdWNjZWVkOgorCisgICAgY2QgJHtHVEVTVF9ESVJ9L21ha2UKKyAgICBt
YWtlCisgICAgLi9zYW1wbGUxX3VuaXR0ZXN0CisKK0lmIHlvdSBzZWUgZXJyb3JzLCB0cnkgdG8g
dHdlYWsgdGhlIGNvbnRlbnRzIG9mIGBtYWtlL01ha2VmaWxlYCB0byBtYWtlIHRoZW0gZ28KK2F3
YXkuIFRoZXJlIGFyZSBpbnN0cnVjdGlvbnMgaW4gYG1ha2UvTWFrZWZpbGVgIG9uIGhvdyB0byBk
byBpdC4KKworIyMjIFVzaW5nIENNYWtlCisKK0dvb2dsZSBUZXN0IGNvbWVzIHdpdGggYSBDTWFr
ZSBidWlsZCBzY3JpcHQgKAorW0NNYWtlTGlzdHMudHh0XShodHRwczovL2dpdGh1Yi5jb20vZ29v
Z2xlL2dvb2dsZXRlc3QvYmxvYi9tYXN0ZXIvQ01ha2VMaXN0cy50eHQpKQordGhhdCBjYW4gYmUg
dXNlZCBvbiBhIHdpZGUgcmFuZ2Ugb2YgcGxhdGZvcm1zICgiQyIgc3RhbmRzIGZvciBjcm9zcy1w
bGF0Zm9ybS4pLgorSWYgeW91IGRvbid0IGhhdmUgQ01ha2UgaW5zdGFsbGVkIGFscmVhZHksIHlv
dSBjYW4gZG93bmxvYWQgaXQgZm9yIGZyZWUgZnJvbQorPGh0dHA6Ly93d3cuY21ha2Uub3JnLz4u
CisKK0NNYWtlIHdvcmtzIGJ5IGdlbmVyYXRpbmcgbmF0aXZlIG1ha2VmaWxlcyBvciBidWlsZCBw
cm9qZWN0cyB0aGF0IGNhbiBiZSB1c2VkIGluCit0aGUgY29tcGlsZXIgZW52aXJvbm1lbnQgb2Yg
eW91ciBjaG9pY2UuIFlvdSBjYW4gZWl0aGVyIGJ1aWxkIEdvb2dsZSBUZXN0IGFzIGEKK3N0YW5k
YWxvbmUgcHJvamVjdCBvciBpdCBjYW4gYmUgaW5jb3Jwb3JhdGVkIGludG8gYW4gZXhpc3Rpbmcg
Q01ha2UgYnVpbGQgZm9yCithbm90aGVyIHByb2plY3QuCisKKyMjIyMgU3RhbmRhbG9uZSBDTWFr
ZSBQcm9qZWN0CisKK1doZW4gYnVpbGRpbmcgR29vZ2xlIFRlc3QgYXMgYSBzdGFuZGFsb25lIHBy
b2plY3QsIHRoZSB0eXBpY2FsIHdvcmtmbG93IHN0YXJ0cword2l0aDoKKworICAgIG1rZGlyIG15
YnVpbGQgICAgICAgIyBDcmVhdGUgYSBkaXJlY3RvcnkgdG8gaG9sZCB0aGUgYnVpbGQgb3V0cHV0
LgorICAgIGNkIG15YnVpbGQKKyAgICBjbWFrZSAke0dURVNUX0RJUn0gICMgR2VuZXJhdGUgbmF0
aXZlIGJ1aWxkIHNjcmlwdHMuCisKK0lmIHlvdSB3YW50IHRvIGJ1aWxkIEdvb2dsZSBUZXN0J3Mg
c2FtcGxlcywgeW91IHNob3VsZCByZXBsYWNlIHRoZSBsYXN0IGNvbW1hbmQKK3dpdGgKKworICAg
IGNtYWtlIC1EZ3Rlc3RfYnVpbGRfc2FtcGxlcz1PTiAke0dURVNUX0RJUn0KKworSWYgeW91IGFy
ZSBvbiBhIFwqbml4IHN5c3RlbSwgeW91IHNob3VsZCBub3cgc2VlIGEgTWFrZWZpbGUgaW4gdGhl
IGN1cnJlbnQKK2RpcmVjdG9yeS4gSnVzdCB0eXBlICdtYWtlJyB0byBidWlsZCBndGVzdC4KKwor
SWYgeW91IHVzZSBXaW5kb3dzIGFuZCBoYXZlIFZpc3VhbCBTdHVkaW8gaW5zdGFsbGVkLCBhIGBn
dGVzdC5zbG5gIGZpbGUgYW5kCitzZXZlcmFsIGAudmNwcm9qYCBmaWxlcyB3aWxsIGJlIGNyZWF0
ZWQuIFlvdSBjYW4gdGhlbiBidWlsZCB0aGVtIHVzaW5nIFZpc3VhbAorU3R1ZGlvLgorCitPbiBN
YWMgT1MgWCB3aXRoIFhjb2RlIGluc3RhbGxlZCwgYSBgLnhjb2RlcHJvamAgZmlsZSB3aWxsIGJl
IGdlbmVyYXRlZC4KKworIyMjIyBJbmNvcnBvcmF0aW5nIEludG8gQW4gRXhpc3RpbmcgQ01ha2Ug
UHJvamVjdAorCitJZiB5b3Ugd2FudCB0byB1c2UgZ3Rlc3QgaW4gYSBwcm9qZWN0IHdoaWNoIGFs
cmVhZHkgdXNlcyBDTWFrZSwgdGhlbiBhIG1vcmUKK3JvYnVzdCBhbmQgZmxleGlibGUgYXBwcm9h
Y2ggaXMgdG8gYnVpbGQgZ3Rlc3QgYXMgcGFydCBvZiB0aGF0IHByb2plY3QgZGlyZWN0bHkuCitU
aGlzIGlzIGRvbmUgYnkgbWFraW5nIHRoZSBHb29nbGVUZXN0IHNvdXJjZSBjb2RlIGF2YWlsYWJs
ZSB0byB0aGUgbWFpbiBidWlsZAorYW5kIGFkZGluZyBpdCB1c2luZyBDTWFrZSdzIGBhZGRfc3Vi
ZGlyZWN0b3J5KClgIGNvbW1hbmQuIFRoaXMgaGFzIHRoZQorc2lnbmlmaWNhbnQgYWR2YW50YWdl
IHRoYXQgdGhlIHNhbWUgY29tcGlsZXIgYW5kIGxpbmtlciBzZXR0aW5ncyBhcmUgdXNlZAorYmV0
d2VlbiBndGVzdCBhbmQgdGhlIHJlc3Qgb2YgeW91ciBwcm9qZWN0LCBzbyBpc3N1ZXMgYXNzb2Np
YXRlZCB3aXRoIHVzaW5nCitpbmNvbXBhdGlibGUgbGlicmFyaWVzIChlZyBkZWJ1Zy9yZWxlYXNl
KSwgZXRjLiBhcmUgYXZvaWRlZC4gVGhpcyBpcworcGFydGljdWxhcmx5IHVzZWZ1bCBvbiBXaW5k
b3dzLiBNYWtpbmcgR29vZ2xlVGVzdCdzIHNvdXJjZSBjb2RlIGF2YWlsYWJsZSB0byB0aGUKK21h
aW4gYnVpbGQgY2FuIGJlIGRvbmUgYSBmZXcgZGlmZmVyZW50IHdheXM6CisKKyogICBEb3dubG9h
ZCB0aGUgR29vZ2xlVGVzdCBzb3VyY2UgY29kZSBtYW51YWxseSBhbmQgcGxhY2UgaXQgYXQgYSBr
bm93bgorICAgIGxvY2F0aW9uLiBUaGlzIGlzIHRoZSBsZWFzdCBmbGV4aWJsZSBhcHByb2FjaCBh
bmQgY2FuIG1ha2UgaXQgbW9yZSBkaWZmaWN1bHQKKyAgICB0byB1c2Ugd2l0aCBjb250aW51b3Vz
IGludGVncmF0aW9uIHN5c3RlbXMsIGV0Yy4KKyogICBFbWJlZCB0aGUgR29vZ2xlVGVzdCBzb3Vy
Y2UgY29kZSBhcyBhIGRpcmVjdCBjb3B5IGluIHRoZSBtYWluIHByb2plY3QncworICAgIHNvdXJj
ZSB0cmVlLiBUaGlzIGlzIG9mdGVuIHRoZSBzaW1wbGVzdCBhcHByb2FjaCwgYnV0IGlzIGFsc28g
dGhlIGhhcmRlc3QgdG8KKyAgICBrZWVwIHVwIHRvIGRhdGUuIFNvbWUgb3JnYW5pemF0aW9ucyBt
YXkgbm90IHBlcm1pdCB0aGlzIG1ldGhvZC4KKyogICBBZGQgR29vZ2xlVGVzdCBhcyBhIGdpdCBz
dWJtb2R1bGUgb3IgZXF1aXZhbGVudC4gVGhpcyBtYXkgbm90IGFsd2F5cyBiZQorICAgIHBvc3Np
YmxlIG9yIGFwcHJvcHJpYXRlLiBHaXQgc3VibW9kdWxlcywgZm9yIGV4YW1wbGUsIGhhdmUgdGhl
aXIgb3duIHNldCBvZgorICAgIGFkdmFudGFnZXMgYW5kIGRyYXdiYWNrcy4KKyogICBVc2UgQ01h
a2UgdG8gZG93bmxvYWQgR29vZ2xlVGVzdCBhcyBwYXJ0IG9mIHRoZSBidWlsZCdzIGNvbmZpZ3Vy
ZSBzdGVwLiBUaGlzCisgICAgaXMganVzdCBhIGxpdHRsZSBtb3JlIGNvbXBsZXgsIGJ1dCBkb2Vz
bid0IGhhdmUgdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBvdGhlcgorICAgIG1ldGhvZHMuCisKK1Ro
ZSBsYXN0IG9mIHRoZSBhYm92ZSBtZXRob2RzIGlzIGltcGxlbWVudGVkIHdpdGggYSBzbWFsbCBw
aWVjZSBvZiBDTWFrZSBjb2RlIGluCithIHNlcGFyYXRlIGZpbGUgKGUuZy4gYENNYWtlTGlzdHMu
dHh0LmluYCkgd2hpY2ggaXMgY29waWVkIHRvIHRoZSBidWlsZCBhcmVhIGFuZAordGhlbiBpbnZv
a2VkIGFzIGEgc3ViLWJ1aWxkIF9kdXJpbmcgdGhlIENNYWtlIHN0YWdlXy4gVGhhdCBkaXJlY3Rv
cnkgaXMgdGhlbgorcHVsbGVkIGludG8gdGhlIG1haW4gYnVpbGQgd2l0aCBgYWRkX3N1YmRpcmVj
dG9yeSgpYC4gRm9yIGV4YW1wbGU6CisKK05ldyBmaWxlIGBDTWFrZUxpc3RzLnR4dC5pbmA6CisK
KyAgICBjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMi44LjIpCisKKyAgICBwcm9qZWN0
KGdvb2dsZXRlc3QtZG93bmxvYWQgTk9ORSkKKworICAgIGluY2x1ZGUoRXh0ZXJuYWxQcm9qZWN0
KQorICAgIEV4dGVybmFsUHJvamVjdF9BZGQoZ29vZ2xldGVzdAorICAgICAgR0lUX1JFUE9TSVRP
UlkgICAgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0LmdpdAorICAgICAgR0lU
X1RBRyAgICAgICAgICAgbWFzdGVyCisgICAgICBTT1VSQ0VfRElSICAgICAgICAiJHtDTUFLRV9C
SU5BUllfRElSfS9nb29nbGV0ZXN0LXNyYyIKKyAgICAgIEJJTkFSWV9ESVIgICAgICAgICIke0NN
QUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3QtYnVpbGQiCisgICAgICBDT05GSUdVUkVfQ09NTUFO
RCAiIgorICAgICAgQlVJTERfQ09NTUFORCAgICAgIiIKKyAgICAgIElOU1RBTExfQ09NTUFORCAg
ICIiCisgICAgICBURVNUX0NPTU1BTkQgICAgICAiIgorICAgICkKKworRXhpc3RpbmcgYnVpbGQn
cyBgQ01ha2VMaXN0cy50eHRgOgorCisgICAgIyBEb3dubG9hZCBhbmQgdW5wYWNrIGdvb2dsZXRl
c3QgYXQgY29uZmlndXJlIHRpbWUKKyAgICBjb25maWd1cmVfZmlsZShDTWFrZUxpc3RzLnR4dC5p
biBnb29nbGV0ZXN0LWRvd25sb2FkL0NNYWtlTGlzdHMudHh0KQorICAgIGV4ZWN1dGVfcHJvY2Vz
cyhDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUcgIiR7Q01BS0VfR0VORVJBVE9SfSIgLgorICAg
ICAgUkVTVUxUX1ZBUklBQkxFIHJlc3VsdAorICAgICAgV09SS0lOR19ESVJFQ1RPUlkgJHtDTUFL
RV9CSU5BUllfRElSfS9nb29nbGV0ZXN0LWRvd25sb2FkICkKKyAgICBpZihyZXN1bHQpCisgICAg
ICBtZXNzYWdlKEZBVEFMX0VSUk9SICJDTWFrZSBzdGVwIGZvciBnb29nbGV0ZXN0IGZhaWxlZDog
JHtyZXN1bHR9IikKKyAgICBlbmRpZigpCisgICAgZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgJHtD
TUFLRV9DT01NQU5EfSAtLWJ1aWxkIC4KKyAgICAgIFJFU1VMVF9WQVJJQUJMRSByZXN1bHQKKyAg
ICAgIFdPUktJTkdfRElSRUNUT1JZICR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1kb3du
bG9hZCApCisgICAgaWYocmVzdWx0KQorICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiQnVpbGQg
c3RlcCBmb3IgZ29vZ2xldGVzdCBmYWlsZWQ6ICR7cmVzdWx0fSIpCisgICAgZW5kaWYoKQorCisg
ICAgIyBQcmV2ZW50IG92ZXJyaWRpbmcgdGhlIHBhcmVudCBwcm9qZWN0J3MgY29tcGlsZXIvbGlu
a2VyCisgICAgIyBzZXR0aW5ncyBvbiBXaW5kb3dzCisgICAgc2V0KGd0ZXN0X2ZvcmNlX3NoYXJl
ZF9jcnQgT04gQ0FDSEUgQk9PTCAiIiBGT1JDRSkKKworICAgICMgQWRkIGdvb2dsZXRlc3QgZGly
ZWN0bHkgdG8gb3VyIGJ1aWxkLiBUaGlzIGRlZmluZXMKKyAgICAjIHRoZSBndGVzdCBhbmQgZ3Rl
c3RfbWFpbiB0YXJnZXRzLgorICAgIGFkZF9zdWJkaXJlY3RvcnkoJHtDTUFLRV9CSU5BUllfRElS
fS9nb29nbGV0ZXN0LXNyYworICAgICAgICAgICAgICAgICAgICAgJHtDTUFLRV9CSU5BUllfRElS
fS9nb29nbGV0ZXN0LWJ1aWxkCisgICAgICAgICAgICAgICAgICAgICBFWENMVURFX0ZST01fQUxM
KQorCisgICAgIyBUaGUgZ3Rlc3QvZ3Rlc3RfbWFpbiB0YXJnZXRzIGNhcnJ5IGhlYWRlciBzZWFy
Y2ggcGF0aAorICAgICMgZGVwZW5kZW5jaWVzIGF1dG9tYXRpY2FsbHkgd2hlbiB1c2luZyBDTWFr
ZSAyLjguMTEgb3IKKyAgICAjIGxhdGVyLiBPdGhlcndpc2Ugd2UgaGF2ZSB0byBhZGQgdGhlbSBo
ZXJlIG91cnNlbHZlcy4KKyAgICBpZiAoQ01BS0VfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMi44LjEx
KQorICAgICAgaW5jbHVkZV9kaXJlY3RvcmllcygiJHtndGVzdF9TT1VSQ0VfRElSfS9pbmNsdWRl
IikKKyAgICBlbmRpZigpCisKKyAgICAjIE5vdyBzaW1wbHkgbGluayBhZ2FpbnN0IGd0ZXN0IG9y
IGd0ZXN0X21haW4gYXMgbmVlZGVkLiBFZworICAgIGFkZF9leGVjdXRhYmxlKGV4YW1wbGUgZXhh
bXBsZS5jcHApCisgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGV4YW1wbGUgZ3Rlc3RfbWFpbikK
KyAgICBhZGRfdGVzdChOQU1FIGV4YW1wbGVfdGVzdCBDT01NQU5EIGV4YW1wbGUpCisKK05vdGUg
dGhhdCB0aGlzIGFwcHJvYWNoIHJlcXVpcmVzIENNYWtlIDIuOC4yIG9yIGxhdGVyIGR1ZSB0byBp
dHMgdXNlIG9mIHRoZQorYEV4dGVybmFsUHJvamVjdF9BZGQoKWAgY29tbWFuZC4gVGhlIGFib3Zl
IHRlY2huaXF1ZSBpcyBkaXNjdXNzZWQgaW4gbW9yZSBkZXRhaWwKK2luIFt0aGlzIHNlcGFyYXRl
IGFydGljbGVdKGh0dHA6Ly9jcmFzY2l0LmNvbS8yMDE1LzA3LzI1L2NtYWtlLWd0ZXN0Lykgd2hp
Y2gKK2Fsc28gY29udGFpbnMgYSBsaW5rIHRvIGEgZnVsbHkgZ2VuZXJhbGl6ZWQgaW1wbGVtZW50
YXRpb24gb2YgdGhlIHRlY2huaXF1ZS4KKworIyMjIyMgVmlzdWFsIFN0dWRpbyBEeW5hbWljIHZz
IFN0YXRpYyBSdW50aW1lcworCitCeSBkZWZhdWx0LCBuZXcgVmlzdWFsIFN0dWRpbyBwcm9qZWN0
cyBsaW5rIHRoZSBDIHJ1bnRpbWVzIGR5bmFtaWNhbGx5IGJ1dAorR29vZ2xlIFRlc3QgbGlua3Mg
dGhlbSBzdGF0aWNhbGx5LiBUaGlzIHdpbGwgZ2VuZXJhdGUgYW4gZXJyb3IgdGhhdCBsb29rcwor
c29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZzogZ3Rlc3QubGliKGd0ZXN0LWFsbC5vYmopIDog
ZXJyb3IgTE5LMjAzODogbWlzbWF0Y2gKK2RldGVjdGVkIGZvciAnUnVudGltZUxpYnJhcnknOiB2
YWx1ZSAnTVRkX1N0YXRpY0RlYnVnJyBkb2Vzbid0IG1hdGNoIHZhbHVlCisnTURkX0R5bmFtaWNE
ZWJ1ZycgaW4gbWFpbi5vYmoKKworR29vZ2xlIFRlc3QgYWxyZWFkeSBoYXMgYSBDTWFrZSBvcHRp
b24gZm9yIHRoaXM6IGBndGVzdF9mb3JjZV9zaGFyZWRfY3J0YAorCitFbmFibGluZyB0aGlzIG9w
dGlvbiB3aWxsIG1ha2UgZ3Rlc3QgbGluayB0aGUgcnVudGltZXMgZHluYW1pY2FsbHkgdG9vLCBh
bmQKK21hdGNoIHRoZSBwcm9qZWN0IGluIHdoaWNoIGl0IGlzIGluY2x1ZGVkLgorCisjIyMgTGVn
YWN5IEJ1aWxkIFNjcmlwdHMKKworQmVmb3JlIHNldHRsaW5nIG9uIENNYWtlLCB3ZSBoYXZlIGJl
ZW4gcHJvdmlkaW5nIGhhbmQtbWFpbnRhaW5lZCBidWlsZAorcHJvamVjdHMvc2NyaXB0cyBmb3Ig
VmlzdWFsIFN0dWRpbywgWGNvZGUsIGFuZCBBdXRvdG9vbHMuIFdoaWxlIHdlIGNvbnRpbnVlIHRv
Citwcm92aWRlIHRoZW0gZm9yIGNvbnZlbmllbmNlLCB0aGV5IGFyZSBub3QgYWN0aXZlbHkgbWFp
bnRhaW5lZCBhbnkgbW9yZS4gV2UKK2hpZ2hseSByZWNvbW1lbmQgdGhhdCB5b3UgZm9sbG93IHRo
ZSBpbnN0cnVjdGlvbnMgaW4gdGhlIGFib3ZlIHNlY3Rpb25zIHRvCitpbnRlZ3JhdGUgR29vZ2xl
IFRlc3Qgd2l0aCB5b3VyIGV4aXN0aW5nIGJ1aWxkIHN5c3RlbS4KKworSWYgeW91IHN0aWxsIG5l
ZWQgdG8gdXNlIHRoZSBsZWdhY3kgYnVpbGQgc2NyaXB0cywgaGVyZSdzIGhvdzoKKworVGhlIG1z
dmNcIGZvbGRlciBjb250YWlucyB0d28gc29sdXRpb25zIHdpdGggVmlzdWFsIEMrKyBwcm9qZWN0
cy4gT3BlbiB0aGUKK2BndGVzdC5zbG5gIG9yIGBndGVzdC1tZC5zbG5gIGZpbGUgdXNpbmcgVmlz
dWFsIFN0dWRpbywgYW5kIHlvdSBhcmUgcmVhZHkgdG8KK2J1aWxkIEdvb2dsZSBUZXN0IHRoZSBz
YW1lIHdheSB5b3UgYnVpbGQgYW55IFZpc3VhbCBTdHVkaW8gcHJvamVjdC4gRmlsZXMgdGhhdAor
aGF2ZSBuYW1lcyBlbmRpbmcgd2l0aCAtbWQgdXNlIERMTCB2ZXJzaW9ucyBvZiBNaWNyb3NvZnQg
cnVudGltZSBsaWJyYXJpZXMgKHRoZQorL01EIG9yIHRoZSAvTURkIGNvbXBpbGVyIG9wdGlvbiku
IEZpbGVzIHdpdGhvdXQgdGhhdCBzdWZmaXggdXNlIHN0YXRpYyB2ZXJzaW9ucworb2YgdGhlIHJ1
bnRpbWUgbGlicmFyaWVzICh0aGUgL01UIG9yIHRoZSAvTVRkIG9wdGlvbikuIFBsZWFzZSBub3Rl
IHRoYXQgb25lIG11c3QKK3VzZSB0aGUgc2FtZSBvcHRpb24gdG8gY29tcGlsZSBib3RoIGd0ZXN0
IGFuZCB0aGUgdGVzdCBjb2RlLiBJZiB5b3UgdXNlIFZpc3VhbAorU3R1ZGlvIDIwMDUgb3IgYWJv
dmUsIHdlIHJlY29tbWVuZCB0aGUgLW1kIHZlcnNpb24gYXMgL01EIGlzIHRoZSBkZWZhdWx0IGZv
ciBuZXcKK3Byb2plY3RzIGluIHRoZXNlIHZlcnNpb25zIG9mIFZpc3VhbCBTdHVkaW8uCisKK09u
IE1hYyBPUyBYLCBvcGVuIHRoZSBgZ3Rlc3QueGNvZGVwcm9qYCBpbiB0aGUgYHhjb2RlL2AgZm9s
ZGVyIHVzaW5nIFhjb2RlLgorQnVpbGQgdGhlICJndGVzdCIgdGFyZ2V0LiBUaGUgdW5pdmVyc2Fs
IGJpbmFyeSBmcmFtZXdvcmsgd2lsbCBlbmQgdXAgaW4geW91cgorc2VsZWN0ZWQgYnVpbGQgZGly
ZWN0b3J5IChzZWxlY3RlZCBpbiB0aGUgWGNvZGUgIlByZWZlcmVuY2VzLi4uIiAtPiAiQnVpbGRp
bmciCitwYW5lIGFuZCBkZWZhdWx0cyB0byB4Y29kZS9idWlsZCkuIEFsdGVybmF0aXZlbHksIGF0
IHRoZSBjb21tYW5kIGxpbmUsIGVudGVyOgorCisgICAgeGNvZGVidWlsZAorCitUaGlzIHdpbGwg
YnVpbGQgdGhlICJSZWxlYXNlIiBjb25maWd1cmF0aW9uIG9mIGd0ZXN0LmZyYW1ld29yayBpbiB5
b3VyIGRlZmF1bHQKK2J1aWxkIGxvY2F0aW9uLiBTZWUgdGhlICJ4Y29kZWJ1aWxkIiBtYW4gcGFn
ZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dAorYnVpbGRpbmcgZGlmZmVyZW50IGNvbmZpZ3Vy
YXRpb25zIGFuZCBidWlsZGluZyBpbiBkaWZmZXJlbnQgbG9jYXRpb25zLgorCitJZiB5b3Ugd2lz
aCB0byB1c2UgdGhlIEdvb2dsZSBUZXN0IFhjb2RlIHByb2plY3Qgd2l0aCBYY29kZSA0LnggYW5k
IGFib3ZlLCB5b3UKK25lZWQgdG8gZWl0aGVyOgorCisqICAgdXBkYXRlIHRoZSBTREsgY29uZmln
dXJhdGlvbiBvcHRpb25zIGluIHhjb2RlL0NvbmZpZy9HZW5lcmFsLnhjb25maWcuCisgICAgQ29t
bWVudCBvcHRpb25zIGBTREtST09UYCwgYE1BQ09TX0RFUExPWU1FTlRfVEFSR0VUYCwgYW5kIGBH
Q0NfVkVSU0lPTmAuIElmCisgICAgeW91IGNob29zZSB0aGlzIHJvdXRlIHlvdSBsb3NlIHRoZSBh
YmlsaXR5IHRvIHRhcmdldCBlYXJsaWVyIHZlcnNpb25zIG9mCisgICAgTWFjT1MgWC4KKyogICBJ
bnN0YWxsIGFuIFNESyBmb3IgYW4gZWFybGllciB2ZXJzaW9uLiBUaGlzIGRvZXNuJ3QgYXBwZWFy
IHRvIGJlIHN1cHBvcnRlZAorICAgIGJ5IEFwcGxlLCBidXQgaGFzIGJlZW4gcmVwb3J0ZWQgdG8g
d29yaworICAgIChodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzUzNzg1MTgpLgor
CisjIyMgVHdlYWtpbmcgR29vZ2xlIFRlc3QKKworR29vZ2xlIFRlc3QgY2FuIGJlIHVzZWQgaW4g
ZGl2ZXJzZSBlbnZpcm9ubWVudHMuIFRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gbWF5Citub3Qg
d29yayAob3IgbWF5IG5vdCB3b3JrIHdlbGwpIG91dCBvZiB0aGUgYm94IGluIHNvbWUgZW52aXJv
bm1lbnRzLiBIb3dldmVyLAoreW91IGNhbiBlYXNpbHkgdHdlYWsgR29vZ2xlIFRlc3QgYnkgZGVm
aW5pbmcgY29udHJvbCBtYWNyb3Mgb24gdGhlIGNvbXBpbGVyCitjb21tYW5kIGxpbmUuIEdlbmVy
YWxseSwgdGhlc2UgbWFjcm9zIGFyZSBuYW1lZCBsaWtlIGBHVEVTVF9YWVpgIGFuZCB5b3UgZGVm
aW5lCit0aGVtIHRvIGVpdGhlciAxIG9yIDAgdG8gZW5hYmxlIG9yIGRpc2FibGUgYSBjZXJ0YWlu
IGZlYXR1cmUuCisKK1dlIGxpc3QgdGhlIG1vc3QgZnJlcXVlbnRseSB1c2VkIG1hY3JvcyBiZWxv
dy4gRm9yIGEgY29tcGxldGUgbGlzdCwgc2VlIGZpbGUKK1tpbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXBvcnQuaF0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2Iv
bWFzdGVyL2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oKS4KKworIyMjIENob29z
aW5nIGEgVFIxIFR1cGxlIExpYnJhcnkKKworU29tZSBHb29nbGUgVGVzdCBmZWF0dXJlcyByZXF1
aXJlIHRoZSBDKysgVGVjaG5pY2FsIFJlcG9ydCAxIChUUjEpIHR1cGxlCitsaWJyYXJ5LCB3aGlj
aCBpcyBub3QgeWV0IGF2YWlsYWJsZSB3aXRoIGFsbCBjb21waWxlcnMuIFRoZSBnb29kIG5ld3Mg
aXMgdGhhdAorR29vZ2xlIFRlc3QgaW1wbGVtZW50cyBhIHN1YnNldCBvZiBUUjEgdHVwbGUgdGhh
dCdzIGVub3VnaCBmb3IgaXRzIG93biBuZWVkLCBhbmQKK3dpbGwgYXV0b21hdGljYWxseSB1c2Ug
dGhpcyB3aGVuIHRoZSBjb21waWxlciBkb2Vzbid0IHByb3ZpZGUgVFIxIHR1cGxlLgorCitVc3Vh
bGx5IHlvdSBkb24ndCBuZWVkIHRvIGNhcmUgYWJvdXQgd2hpY2ggdHVwbGUgbGlicmFyeSBHb29n
bGUgVGVzdCB1c2VzLgorSG93ZXZlciwgaWYgeW91ciBwcm9qZWN0IGFscmVhZHkgdXNlcyBUUjEg
dHVwbGUsIHlvdSBuZWVkIHRvIHRlbGwgR29vZ2xlIFRlc3QgdG8KK3VzZSB0aGUgc2FtZSBUUjEg
dHVwbGUgbGlicmFyeSB0aGUgcmVzdCBvZiB5b3VyIHByb2plY3QgdXNlcywgb3IgdGhlIHR3byB0
dXBsZQoraW1wbGVtZW50YXRpb25zIHdpbGwgY2xhc2guIFRvIGRvIHRoYXQsIGFkZAorCisgICAg
LURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0wCisKK3RvIHRoZSBjb21waWxlciBmbGFncyB3aGls
ZSBjb21waWxpbmcgR29vZ2xlIFRlc3QgYW5kIHlvdXIgdGVzdHMuIElmIHlvdSB3YW50IHRvCitm
b3JjZSBHb29nbGUgVGVzdCB0byB1c2UgaXRzIG93biB0dXBsZSBsaWJyYXJ5LCBqdXN0IGFkZAor
CisgICAgLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0xCisKK3RvIHRoZSBjb21waWxlciBmbGFn
cyBpbnN0ZWFkLgorCitJZiB5b3UgZG9uJ3Qgd2FudCBHb29nbGUgVGVzdCB0byB1c2UgdHVwbGUg
YXQgYWxsLCBhZGQKKworICAgIC1ER1RFU1RfSEFTX1RSMV9UVVBMRT0wCisKK2FuZCBhbGwgZmVh
dHVyZXMgdXNpbmcgdHVwbGUgd2lsbCBiZSBkaXNhYmxlZC4KKworIyMjIE11bHRpLXRocmVhZGVk
IFRlc3RzCisKK0dvb2dsZSBUZXN0IGlzIHRocmVhZC1zYWZlIHdoZXJlIHRoZSBwdGhyZWFkIGxp
YnJhcnkgaXMgYXZhaWxhYmxlLiBBZnRlcgorYCNpbmNsdWRlICJndGVzdC9ndGVzdC5oImAsIHlv
dSBjYW4gY2hlY2sgdGhlIGBHVEVTVF9JU19USFJFQURTQUZFYCBtYWNybyB0byBzZWUKK3doZXRo
ZXIgdGhpcyBpcyB0aGUgY2FzZSAoeWVzIGlmIHRoZSBtYWNybyBpcyBgI2RlZmluZWRgIHRvIDEs
IG5vIGlmIGl0J3MKK3VuZGVmaW5lZC4pLgorCitJZiBHb29nbGUgVGVzdCBkb2Vzbid0IGNvcnJl
Y3RseSBkZXRlY3Qgd2hldGhlciBwdGhyZWFkIGlzIGF2YWlsYWJsZSBpbiB5b3VyCitlbnZpcm9u
bWVudCwgeW91IGNhbiBmb3JjZSBpdCB3aXRoCisKKyAgICAtREdURVNUX0hBU19QVEhSRUFEPTEK
Kworb3IKKworICAgIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MAorCitXaGVuIEdvb2dsZSBUZXN0IHVz
ZXMgcHRocmVhZCwgeW91IG1heSBuZWVkIHRvIGFkZCBmbGFncyB0byB5b3VyIGNvbXBpbGVyIGFu
ZC9vcgorbGlua2VyIHRvIHNlbGVjdCB0aGUgcHRocmVhZCBsaWJyYXJ5LCBvciB5b3UnbGwgZ2V0
IGxpbmsgZXJyb3JzLiBJZiB5b3UgdXNlIHRoZQorQ01ha2Ugc2NyaXB0IG9yIHRoZSBkZXByZWNh
dGVkIEF1dG90b29scyBzY3JpcHQsIHRoaXMgaXMgdGFrZW4gY2FyZSBvZiBmb3IgeW91LgorSWYg
eW91IHVzZSB5b3VyIG93biBidWlsZCBzY3JpcHQsIHlvdSdsbCBuZWVkIHRvIHJlYWQgeW91ciBj
b21waWxlciBhbmQgbGlua2VyJ3MKK21hbnVhbCB0byBmaWd1cmUgb3V0IHdoYXQgZmxhZ3MgdG8g
YWRkLgorCisjIyMgQXMgYSBTaGFyZWQgTGlicmFyeSAoRExMKQorCitHb29nbGUgVGVzdCBpcyBj
b21wYWN0LCBzbyBtb3N0IHVzZXJzIGNhbiBidWlsZCBhbmQgbGluayBpdCBhcyBhIHN0YXRpYyBs
aWJyYXJ5Citmb3IgdGhlIHNpbXBsaWNpdHkuIFlvdSBjYW4gY2hvb3NlIHRvIHVzZSBHb29nbGUg
VGVzdCBhcyBhIHNoYXJlZCBsaWJyYXJ5IChrbm93bgorYXMgYSBETEwgb24gV2luZG93cykgaWYg
eW91IHByZWZlci4KKworVG8gY29tcGlsZSAqZ3Rlc3QqIGFzIGEgc2hhcmVkIGxpYnJhcnksIGFk
ZAorCisgICAgLURHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJBUlk9MQorCit0byB0aGUgY29tcGls
ZXIgZmxhZ3MuIFlvdSdsbCBhbHNvIG5lZWQgdG8gdGVsbCB0aGUgbGlua2VyIHRvIHByb2R1Y2Ug
YSBzaGFyZWQKK2xpYnJhcnkgaW5zdGVhZCAtIGNvbnN1bHQgeW91ciBsaW5rZXIncyBtYW51YWwg
Zm9yIGhvdyB0byBkbyBpdC4KKworVG8gY29tcGlsZSB5b3VyICp0ZXN0cyogdGhhdCB1c2UgdGhl
IGd0ZXN0IHNoYXJlZCBsaWJyYXJ5LCBhZGQKKworICAgIC1ER1RFU1RfTElOS0VEX0FTX1NIQVJF
RF9MSUJSQVJZPTEKKwordG8gdGhlIGNvbXBpbGVyIGZsYWdzLgorCitOb3RlOiB3aGlsZSB0aGUg
YWJvdmUgc3RlcHMgYXJlbid0IHRlY2huaWNhbGx5IG5lY2Vzc2FyeSB0b2RheSB3aGVuIHVzaW5n
IHNvbWUKK2NvbXBpbGVycyAoZS5nLiBHQ0MpLCB0aGV5IG1heSBiZWNvbWUgbmVjZXNzYXJ5IGlu
IHRoZSBmdXR1cmUsIGlmIHdlIGRlY2lkZSB0bworaW1wcm92ZSB0aGUgc3BlZWQgb2YgbG9hZGlu
ZyB0aGUgbGlicmFyeSAoc2VlCis8aHR0cDovL2djYy5nbnUub3JnL3dpa2kvVmlzaWJpbGl0eT4g
Zm9yIGRldGFpbHMpLiBUaGVyZWZvcmUgeW91IGFyZSByZWNvbW1lbmRlZAordG8gYWx3YXlzIGFk
ZCB0aGUgYWJvdmUgZmxhZ3Mgd2hlbiB1c2luZyBHb29nbGUgVGVzdCBhcyBhIHNoYXJlZCBsaWJy
YXJ5LgorT3RoZXJ3aXNlIGEgZnV0dXJlIHJlbGVhc2Ugb2YgR29vZ2xlIFRlc3QgbWF5IGJyZWFr
IHlvdXIgYnVpbGQgc2NyaXB0LgorCisjIyMgQXZvaWRpbmcgTWFjcm8gTmFtZSBDbGFzaGVzCisK
K0luIEMrKywgbWFjcm9zIGRvbid0IG9iZXkgbmFtZXNwYWNlcy4gVGhlcmVmb3JlIHR3byBsaWJy
YXJpZXMgdGhhdCBib3RoIGRlZmluZSBhCittYWNybyBvZiB0aGUgc2FtZSBuYW1lIHdpbGwgY2xh
c2ggaWYgeW91IGAjaW5jbHVkZWAgYm90aCBkZWZpbml0aW9ucy4gSW4gY2FzZSBhCitHb29nbGUg
VGVzdCBtYWNybyBjbGFzaGVzIHdpdGggYW5vdGhlciBsaWJyYXJ5LCB5b3UgY2FuIGZvcmNlIEdv
b2dsZSBUZXN0IHRvCityZW5hbWUgaXRzIG1hY3JvIHRvIGF2b2lkIHRoZSBjb25mbGljdC4KKwor
U3BlY2lmaWNhbGx5LCBpZiBib3RoIEdvb2dsZSBUZXN0IGFuZCBzb21lIG90aGVyIGNvZGUgZGVm
aW5lIG1hY3JvIEZPTywgeW91IGNhbgorYWRkCisKKyAgICAtREdURVNUX0RPTlRfREVGSU5FX0ZP
Tz0xCisKK3RvIHRoZSBjb21waWxlciBmbGFncyB0byB0ZWxsIEdvb2dsZSBUZXN0IHRvIGNoYW5n
ZSB0aGUgbWFjcm8ncyBuYW1lIGZyb20gYEZPT2AKK3RvIGBHVEVTVF9GT09gLiBDdXJyZW50bHkg
YEZPT2AgY2FuIGJlIGBGQUlMYCwgYFNVQ0NFRURgLCBvciBgVEVTVGAuIEZvcgorZXhhbXBsZSwg
d2l0aCBgLURHVEVTVF9ET05UX0RFRklORV9URVNUPTFgLCB5b3UnbGwgbmVlZCB0byB3cml0ZQor
CisgICAgR1RFU1RfVEVTVChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KKworaW5zdGVhZCBv
ZgorCisgICAgVEVTVChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KKworaW4gb3JkZXIgdG8g
ZGVmaW5lIGEgdGVzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtl
L0NvbmZpZy5jbWFrZS5pbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL0NvbmZpZy5j
bWFrZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMmJlNDQ5OGIxYTA3OTY4MWExMjllMzFiMTdjNTdlMTgxMjZh
NjNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvQ29u
ZmlnLmNtYWtlLmluCkBAIC0wLDAgKzEsOSBAQAorQFBBQ0tBR0VfSU5JVEAKK2luY2x1ZGUoQ01h
a2VGaW5kRGVwZW5kZW5jeU1hY3JvKQoraWYgKEBHVEVTVF9IQVNfUFRIUkVBREApCisgIHNldChU
SFJFQURTX1BSRUZFUl9QVEhSRUFEX0ZMQUcgQFRIUkVBRFNfUFJFRkVSX1BUSFJFQURfRkxBR0Ap
CisgIGZpbmRfZGVwZW5kZW5jeShUaHJlYWRzKQorZW5kaWYoKQorCitpbmNsdWRlKCIke0NNQUtF
X0NVUlJFTlRfTElTVF9ESVJ9L0B0YXJnZXRzX2V4cG9ydF9uYW1lQC5jbWFrZSIpCitjaGVja19y
ZXF1aXJlZF9jb21wb25lbnRzKCJAcHJvamVjdF9uYW1lQCIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9ndGVzdC5wYy5pbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2NtYWtlL2d0ZXN0LnBjLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3OTY3YWQ1NmZmMmMzMmVkNGJhMDY3
MDNhZWE1MjVkY2FkMmNlN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9jbWFrZS9ndGVzdC5wYy5pbgpAQCAtMCwwICsxLDkgQEAKK2xpYmRpcj1AQ01BS0VfSU5T
VEFMTF9GVUxMX0xJQkRJUkAKK2luY2x1ZGVkaXI9QENNQUtFX0lOU1RBTExfRlVMTF9JTkNMVURF
RElSQAorCitOYW1lOiBndGVzdAorRGVzY3JpcHRpb246IEdvb2dsZVRlc3QgKHdpdGhvdXQgbWFp
bigpIGZ1bmN0aW9uKQorVmVyc2lvbjogQFBST0pFQ1RfVkVSU0lPTkAKK1VSTDogaHR0cHM6Ly9n
aXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0CitMaWJzOiAtTCR7bGliZGlyfSAtbGd0ZXN0IEBD
TUFLRV9USFJFQURfTElCU19JTklUQAorQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gQEdURVNUX0hB
U19QVEhSRUFEX01BQ1JPQCBAQ01BS0VfVEhSRUFEX0xJQlNfSU5JVEAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2d0ZXN0X21haW4ucGMuaW4gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9jbWFrZS9ndGVzdF9tYWluLnBjLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlMjVkOWM3
M2M2ODNiNjQxN2I5OWJiNzAzYzEzYWUxNmJhOGE5NTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9ndGVzdF9tYWluLnBjLmluCkBAIC0wLDAgKzEsMTAg
QEAKK2xpYmRpcj1AQ01BS0VfSU5TVEFMTF9GVUxMX0xJQkRJUkAKK2luY2x1ZGVkaXI9QENNQUtF
X0lOU1RBTExfRlVMTF9JTkNMVURFRElSQAorCitOYW1lOiBndGVzdF9tYWluCitEZXNjcmlwdGlv
bjogR29vZ2xlVGVzdCAod2l0aCBtYWluKCkgZnVuY3Rpb24pCitWZXJzaW9uOiBAUFJPSkVDVF9W
RVJTSU9OQAorVVJMOiBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QKK1JlcXVp
cmVzOiBndGVzdAorTGliczogLUwke2xpYmRpcn0gLWxndGVzdF9tYWluIEBDTUFLRV9USFJFQURf
TElCU19JTklUQAorQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gQEdURVNUX0hBU19QVEhSRUFEX01B
Q1JPQCBAQ01BS0VfVEhSRUFEX0xJQlNfSU5JVEAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2NtYWtlL2ludGVybmFsX3V0aWxzLmNtYWtlIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvY21ha2UvaW50ZXJuYWxfdXRpbHMuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGMxZjliYTk5Y2Y1
MDU3NGY2NjlkZDdkZWJhMzI0ZGNlNDA1OTVmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2ludGVybmFsX3V0aWxzLmNtYWtlCkBAIC0wLDAgKzEsMzE4
IEBACisjIERlZmluZXMgZnVuY3Rpb25zIGFuZCBtYWNyb3MgdXNlZnVsIGZvciBidWlsZGluZyBH
b29nbGUgVGVzdCBhbmQKKyMgR29vZ2xlIE1vY2suCisjCisjIE5vdGU6CisjCisjIC0gVGhpcyBm
aWxlIHdpbGwgYmUgcnVuIHR3aWNlIHdoZW4gYnVpbGRpbmcgR29vZ2xlIE1vY2sgKG9uY2Ugdmlh
CisjICAgR29vZ2xlIFRlc3QncyBDTWFrZUxpc3RzLnR4dCwgYW5kIG9uY2UgdmlhIEdvb2dsZSBN
b2NrJ3MpLgorIyAgIFRoZXJlZm9yZSBpdCBzaG91bGRuJ3QgaGF2ZSBhbnkgc2lkZSBlZmZlY3Rz
IG90aGVyIHRoYW4gZGVmaW5pbmcKKyMgICB0aGUgZnVuY3Rpb25zIGFuZCBtYWNyb3MuCisjCisj
IC0gVGhlIGZ1bmN0aW9ucy9tYWNyb3MgZGVmaW5lZCBpbiB0aGlzIGZpbGUgbWF5IGRlcGVuZCBv
biBHb29nbGUKKyMgICBUZXN0IGFuZCBHb29nbGUgTW9jaydzIG9wdGlvbigpIGRlZmluaXRpb25z
LCBhbmQgdGh1cyBtdXN0IGJlCisjICAgY2FsbGVkICphZnRlciogdGhlIG9wdGlvbnMgaGF2ZSBi
ZWVuIGRlZmluZWQuCisKKyMgVHdlYWtzIENNYWtlJ3MgZGVmYXVsdCBjb21waWxlci9saW5rZXIg
c2V0dGluZ3MgdG8gc3VpdCBHb29nbGUgVGVzdCdzIG5lZWRzLgorIworIyBUaGlzIG11c3QgYmUg
YSBtYWNybygpLCBhcyBpbnNpZGUgYSBmdW5jdGlvbiBzdHJpbmcoKSBjYW4gb25seQorIyB1cGRh
dGUgdmFyaWFibGVzIGluIHRoZSBmdW5jdGlvbiBzY29wZS4KK21hY3JvKGZpeF9kZWZhdWx0X2Nv
bXBpbGVyX3NldHRpbmdzXykKKyAgaWYgKE1TVkMpCisgICAgIyBGb3IgTVNWQywgQ01ha2Ugc2V0
cyBjZXJ0YWluIGZsYWdzIHRvIGRlZmF1bHRzIHdlIHdhbnQgdG8gb3ZlcnJpZGUuCisgICAgIyBU
aGlzIHJlcGxhY2VtZW50IGNvZGUgaXMgdGFrZW4gZnJvbSBzYW1wbGUgaW4gdGhlIENNYWtlIFdp
a2kgYXQKKyAgICAjIGh0dHBzOi8vZ2l0bGFiLmtpdHdhcmUuY29tL2NtYWtlL2NvbW11bml0eS93
aWtpcy9GQVEjZHluYW1pYy1yZXBsYWNlLgorICAgIGZvcmVhY2ggKGZsYWdfdmFyCisgICAgICAg
ICAgICAgQ01BS0VfQ1hYX0ZMQUdTIENNQUtFX0NYWF9GTEFHU19ERUJVRyBDTUFLRV9DWFhfRkxB
R1NfUkVMRUFTRQorICAgICAgICAgICAgIENNQUtFX0NYWF9GTEFHU19NSU5TSVpFUkVMIENNQUtF
X0NYWF9GTEFHU19SRUxXSVRIREVCSU5GTykKKyAgICAgIGlmIChOT1QgQlVJTERfU0hBUkVEX0xJ
QlMgQU5EIE5PVCBndGVzdF9mb3JjZV9zaGFyZWRfY3J0KQorICAgICAgICAjIFdoZW4gR29vZ2xl
IFRlc3QgaXMgYnVpbHQgYXMgYSBzaGFyZWQgbGlicmFyeSwgaXQgc2hvdWxkIGFsc28gdXNlCisg
ICAgICAgICMgc2hhcmVkIHJ1bnRpbWUgbGlicmFyaWVzLiAgT3RoZXJ3aXNlLCBpdCBtYXkgZW5k
IHVwIHdpdGggbXVsdGlwbGUKKyAgICAgICAgIyBjb3BpZXMgb2YgcnVudGltZSBsaWJyYXJ5IGRh
dGEgaW4gZGlmZmVyZW50IG1vZHVsZXMsIHJlc3VsdGluZyBpbgorICAgICAgICAjIGhhcmQtdG8t
ZmluZCBjcmFzaGVzLiBXaGVuIGl0IGlzIGJ1aWx0IGFzIGEgc3RhdGljIGxpYnJhcnksIGl0IGlz
CisgICAgICAgICMgcHJlZmVyYWJsZSB0byB1c2UgQ1JUIGFzIHN0YXRpYyBsaWJyYXJpZXMsIGFz
IHdlIGRvbid0IGhhdmUgdG8gcmVseQorICAgICAgICAjIG9uIENSVCBETExzIGJlaW5nIGF2YWls
YWJsZS4gQ01ha2UgYWx3YXlzIGRlZmF1bHRzIHRvIHVzaW5nIHNoYXJlZAorICAgICAgICAjIENS
VCBsaWJyYXJpZXMsIHNvIHdlIG92ZXJyaWRlIHRoYXQgZGVmYXVsdCBoZXJlLgorICAgICAgICBz
dHJpbmcoUkVQTEFDRSAiL01EIiAiLU1UIiAke2ZsYWdfdmFyfSAiJHske2ZsYWdfdmFyfX0iKQor
ICAgICAgZW5kaWYoKQorCisgICAgICAjIFdlIHByZWZlciBtb3JlIHN0cmljdCB3YXJuaW5nIGNo
ZWNraW5nIGZvciBidWlsZGluZyBHb29nbGUgVGVzdC4KKyAgICAgICMgUmVwbGFjZXMgL1czIHdp
dGggL1c0IGluIGRlZmF1bHRzLgorICAgICAgc3RyaW5nKFJFUExBQ0UgIi9XMyIgIi9XNCIgJHtm
bGFnX3Zhcn0gIiR7JHtmbGFnX3Zhcn19IikKKworICAgICAgIyBQcmV2ZW50IEQ5MDI1IHdhcm5p
bmcgZm9yIHRhcmdldHMgdGhhdCBoYXZlIGV4Y2VwdGlvbiBoYW5kbGluZworICAgICAgIyB0dXJu
ZWQgb2ZmICgvRUhzLWMtIGZsYWcpLiBXaGVyZSByZXF1aXJlZCwgZXhjZXB0aW9ucyBhcmUgZXhw
bGljaXRseQorICAgICAgIyByZS1lbmFibGVkIHVzaW5nIHRoZSBjeHhfZXhjZXB0aW9uX2ZsYWdz
IHZhcmlhYmxlLgorICAgICAgc3RyaW5nKFJFUExBQ0UgIi9FSHNjIiAiIiAke2ZsYWdfdmFyfSAi
JHske2ZsYWdfdmFyfX0iKQorICAgIGVuZGZvcmVhY2goKQorICBlbmRpZigpCitlbmRtYWNybygp
CisKKyMgRGVmaW5lcyB0aGUgY29tcGlsZXIvbGlua2VyIGZsYWdzIHVzZWQgdG8gYnVpbGQgR29v
Z2xlIFRlc3QgYW5kCisjIEdvb2dsZSBNb2NrLiAgWW91IGNhbiB0d2VhayB0aGVzZSBkZWZpbml0
aW9ucyB0byBzdWl0IHlvdXIgbmVlZC4gIEEKKyMgdmFyaWFibGUncyB2YWx1ZSBpcyBlbXB0eSBi
ZWZvcmUgaXQncyBleHBsaWNpdGx5IGFzc2lnbmVkIHRvLgorbWFjcm8oY29uZmlnX2NvbXBpbGVy
X2FuZF9saW5rZXIpCisgICMgTm90ZTogcHRocmVhZHMgb24gTWluR1cgaXMgbm90IHN1cHBvcnRl
ZCwgZXZlbiBpZiBhdmFpbGFibGUKKyAgIyBpbnN0ZWFkLCB3ZSB1c2Ugd2luZG93cyB0aHJlYWRp
bmcgcHJpbWl0aXZlcworICB1bnNldChHVEVTVF9IQVNfUFRIUkVBRCkKKyAgaWYgKE5PVCBndGVz
dF9kaXNhYmxlX3B0aHJlYWRzIEFORCBOT1QgTUlOR1cpCisgICAgIyBEZWZpbmVzIENNQUtFX1VT
RV9QVEhSRUFEU19JTklUIGFuZCBDTUFLRV9USFJFQURfTElCU19JTklULgorICAgIHNldChUSFJF
QURTX1BSRUZFUl9QVEhSRUFEX0ZMQUcgT04pCisgICAgZmluZF9wYWNrYWdlKFRocmVhZHMpCisg
ICAgaWYgKENNQUtFX1VTRV9QVEhSRUFEU19JTklUKQorICAgICAgc2V0KEdURVNUX0hBU19QVEhS
RUFEIE9OKQorICAgIGVuZGlmKCkKKyAgZW5kaWYoKQorCisgIGZpeF9kZWZhdWx0X2NvbXBpbGVy
X3NldHRpbmdzXygpCisgIGlmIChNU1ZDKQorICAgICMgTmV3bGluZXMgaW5zaWRlIGZsYWdzIHZh
cmlhYmxlcyBicmVhayBDTWFrZSdzIE5NYWtlIGdlbmVyYXRvci4KKyAgICAjIFRPRE8odmxhZGxA
Z29vZ2xlLmNvbSk6IEFkZCAtUlRDcyBhbmQgLVJUQ3UgdG8gZGVidWcgYnVpbGRzLgorICAgIHNl
dChjeHhfYmFzZV9mbGFncyAiLUdTIC1XNCAtV1ggLXdkNDI1MSAtd2Q0Mjc1IC1ub2xvZ28gLUog
LVppIikKKyAgICBpZiAoTVNWQ19WRVJTSU9OIExFU1MgMTQwMCkgICMgMTQwMCBpcyBWaXN1YWwg
U3R1ZGlvIDIwMDUKKyAgICAgICMgU3VwcHJlc3Mgc3B1cmlvdXMgd2FybmluZ3MgTVNWQyA3LjEg
c29tZXRpbWVzIGlzc3Vlcy4KKyAgICAgICMgRm9yY2luZyB2YWx1ZSB0byBib29sLgorICAgICAg
c2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtd2Q0ODAwIikKKyAgICAgICMg
Q29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVyYXRvciBjb3VsZCBub3QgYmUgZ2Vu
ZXJhdGVkLgorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtd2Q0
NTExIC13ZDQ1MTIiKQorICAgICAgIyBDb21wYXRpYmlsaXR5IHdhcm5pbmdzIG5vdCBhcHBsaWNh
YmxlIHRvIEdvb2dsZSBUZXN0LgorICAgICAgIyBSZXNvbHZlZCBvdmVybG9hZCB3YXMgZm91bmQg
YnkgYXJndW1lbnQtZGVwZW5kZW50IGxvb2t1cC4KKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAi
JHtjeHhfYmFzZV9mbGFnc30gLXdkNDY3NSIpCisgICAgZW5kaWYoKQorICAgIGlmIChNU1ZDX1ZF
UlNJT04gTEVTUyAxNTAwKSAgIyAxNTAwIGlzIFZpc3VhbCBTdHVkaW8gMjAwOAorICAgICAgIyBD
b25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50LgorICAgICAgIyBXaGVuIGNvbXBpbGlu
ZyB3aXRoIC9XNCwgd2UgZ2V0IHNldmVyYWwgaW5zdGFuY2VzIG9mIEM0MTI3CisgICAgICAjIChD
b25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50KS4gSW4gb3VyIGNvZGUsIHdlIGRpc2Fi
bGUgdGhhdAorICAgICAgIyB3YXJuaW5nIG9uIGEgY2FzZS1ieS1jYXNlIGJhc2lzLiBIb3dldmVy
LCBvbiBWaXN1YWwgU3R1ZGlvIDIwMDUsCisgICAgICAjIHRoZSB3YXJuaW5nIGZpcmVzIG9uIHN0
ZDo6bGlzdC4gVGhlcmVmb3JlIG9uIHRoYXQgY29tcGlsZXIgYW5kIGVhcmxpZXIsCisgICAgICAj
IHdlIGRpc2FibGUgdGhlIHdhcm5pbmcgcHJvamVjdC13aWRlLgorICAgICAgc2V0KGN4eF9iYXNl
X2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtd2Q0MTI3IikKKyAgICBlbmRpZigpCisgICAgaWYg
KE5PVCAoTVNWQ19WRVJTSU9OIExFU1MgMTcwMCkpICAjIDE3MDAgaXMgVmlzdWFsIFN0dWRpbyAy
MDEyLgorICAgICAgIyBTdXBwcmVzcyAidW5yZWFjaGFibGUgY29kZSIgd2FybmluZyBvbiBWUyAy
MDEyIGFuZCBsYXRlci4KKyAgICAgICMgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9u
cy8zMjMyNjY5IGV4cGxhaW5zIHRoZSBpc3N1ZS4KKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAi
JHtjeHhfYmFzZV9mbGFnc30gLXdkNDcwMiIpCisgICAgZW5kaWYoKQorCisgICAgc2V0KGN4eF9i
YXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtRF9VTklDT0RFIC1EVU5JQ09ERSAtRFdJTjMy
IC1EX1dJTjMyIikKKyAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC1E
U1RSSUNUIC1EV0lOMzJfTEVBTl9BTkRfTUVBTiIpCisgICAgc2V0KGN4eF9leGNlcHRpb25fZmxh
Z3MgIi1FSHNjIC1EX0hBU19FWENFUFRJT05TPTEiKQorICAgIHNldChjeHhfbm9fZXhjZXB0aW9u
X2ZsYWdzICItRUhzLWMtIC1EX0hBU19FWENFUFRJT05TPTAiKQorICAgIHNldChjeHhfbm9fcnR0
aV9mbGFncyAiLUdSLSIpCisgIGVsc2VpZiAoQ01BS0VfQ09NUElMRVJfSVNfR05VQ1hYKQorICAg
IHNldChjeHhfYmFzZV9mbGFncyAiLVdhbGwgLVdzaGFkb3cgLVdlcnJvciIpCisgICAgaWYoTk9U
IENNQUtFX0NYWF9DT01QSUxFUl9WRVJTSU9OIFZFUlNJT05fTEVTUyA3LjAuMCkKKyAgICAgIHNl
dChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLVduby1lcnJvcj1kYW5nbGluZy1l
bHNlIikKKyAgICBlbmRpZigpCisgICAgc2V0KGN4eF9leGNlcHRpb25fZmxhZ3MgIi1mZXhjZXB0
aW9ucyIpCisgICAgc2V0KGN4eF9ub19leGNlcHRpb25fZmxhZ3MgIi1mbm8tZXhjZXB0aW9ucyIp
CisgICAgIyBVbnRpbCB2ZXJzaW9uIDQuMy4yLCBHQ0MgZG9lc24ndCBkZWZpbmUgYSBtYWNybyB0
byBpbmRpY2F0ZQorICAgICMgd2hldGhlciBSVFRJIGlzIGVuYWJsZWQuICBUaGVyZWZvcmUgd2Ug
ZGVmaW5lIEdURVNUX0hBU19SVFRJCisgICAgIyBleHBsaWNpdGx5LgorICAgIHNldChjeHhfbm9f
cnR0aV9mbGFncyAiLWZuby1ydHRpIC1ER1RFU1RfSEFTX1JUVEk9MCIpCisgICAgc2V0KGN4eF9z
dHJpY3RfZmxhZ3MKKyAgICAgICItV2V4dHJhIC1Xbm8tdW51c2VkLXBhcmFtZXRlciAtV25vLW1p
c3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIikKKyAgZWxzZWlmIChDTUFLRV9DWFhfQ09NUElMRVJf
SUQgU1RSRVFVQUwgIlN1blBybyIpCisgICAgc2V0KGN4eF9leGNlcHRpb25fZmxhZ3MgIi1mZWF0
dXJlcz1leGNlcHQiKQorICAgICMgU3VuIFBybyBkb2Vzbid0IHByb3ZpZGUgbWFjcm9zIHRvIGlu
ZGljYXRlIHdoZXRoZXIgZXhjZXB0aW9ucyBhbmQKKyAgICAjIFJUVEkgYXJlIGVuYWJsZWQsIHNv
IHdlIGRlZmluZSBHVEVTVF9IQVNfKiBleHBsaWNpdGx5LgorICAgIHNldChjeHhfbm9fZXhjZXB0
aW9uX2ZsYWdzICItZmVhdHVyZXM9bm8lZXhjZXB0IC1ER1RFU1RfSEFTX0VYQ0VQVElPTlM9MCIp
CisgICAgc2V0KGN4eF9ub19ydHRpX2ZsYWdzICItZmVhdHVyZXM9bm8lcnR0aSAtREdURVNUX0hB
U19SVFRJPTAiKQorICBlbHNlaWYgKENNQUtFX0NYWF9DT01QSUxFUl9JRCBTVFJFUVVBTCAiVmlz
dWFsQWdlIiBPUgorICAgICAgQ01BS0VfQ1hYX0NPTVBJTEVSX0lEIFNUUkVRVUFMICJYTCIpCisg
ICAgIyBDTWFrZSAyLjggY2hhbmdlcyBWaXN1YWwgQWdlJ3MgY29tcGlsZXIgSUQgdG8gIlhMIi4K
KyAgICBzZXQoY3h4X2V4Y2VwdGlvbl9mbGFncyAiLXFlaCIpCisgICAgc2V0KGN4eF9ub19leGNl
cHRpb25fZmxhZ3MgIi1xbm9laCIpCisgICAgIyBVbnRpbCB2ZXJzaW9uIDkuMCwgVmlzdWFsIEFn
ZSBkb2Vzbid0IGRlZmluZSBhIG1hY3JvIHRvIGluZGljYXRlCisgICAgIyB3aGV0aGVyIFJUVEkg
aXMgZW5hYmxlZC4gIFRoZXJlZm9yZSB3ZSBkZWZpbmUgR1RFU1RfSEFTX1JUVEkKKyAgICAjIGV4
cGxpY2l0bHkuCisgICAgc2V0KGN4eF9ub19ydHRpX2ZsYWdzICItcW5vcnR0aSAtREdURVNUX0hB
U19SVFRJPTAiKQorICBlbHNlaWYgKENNQUtFX0NYWF9DT01QSUxFUl9JRCBTVFJFUVVBTCAiSFAi
KQorICAgIHNldChjeHhfYmFzZV9mbGFncyAiLUFBIC1tdCIpCisgICAgc2V0KGN4eF9leGNlcHRp
b25fZmxhZ3MgIi1ER1RFU1RfSEFTX0VYQ0VQVElPTlM9MSIpCisgICAgc2V0KGN4eF9ub19leGNl
cHRpb25fZmxhZ3MgIitub2VoIC1ER1RFU1RfSEFTX0VYQ0VQVElPTlM9MCIpCisgICAgIyBSVFRJ
IGNhbiBub3QgYmUgZGlzYWJsZWQgaW4gSFAgYUNDIGNvbXBpbGVyLgorICAgIHNldChjeHhfbm9f
cnR0aV9mbGFncyAiIikKKyAgZW5kaWYoKQorCisgICMgVGhlIHB0aHJlYWRzIGxpYnJhcnkgaXMg
YXZhaWxhYmxlIGFuZCBhbGxvd2VkPworICBpZiAoREVGSU5FRCBHVEVTVF9IQVNfUFRIUkVBRCkK
KyAgICBzZXQoR1RFU1RfSEFTX1BUSFJFQURfTUFDUk8gIi1ER1RFU1RfSEFTX1BUSFJFQUQ9MSIp
CisgIGVsc2UoKQorICAgIHNldChHVEVTVF9IQVNfUFRIUkVBRF9NQUNSTyAiLURHVEVTVF9IQVNf
UFRIUkVBRD0wIikKKyAgZW5kaWYoKQorICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2Vf
ZmxhZ3N9ICR7R1RFU1RfSEFTX1BUSFJFQURfTUFDUk99IikKKworICAjIEZvciBidWlsZGluZyBn
dGVzdCdzIG93biB0ZXN0cyBhbmQgc2FtcGxlcy4KKyAgc2V0KGN4eF9leGNlcHRpb24gIiR7Y3h4
X2Jhc2VfZmxhZ3N9ICR7Y3h4X2V4Y2VwdGlvbl9mbGFnc30iKQorICBzZXQoY3h4X25vX2V4Y2Vw
dGlvbgorICAgICIke0NNQUtFX0NYWF9GTEFHU30gJHtjeHhfYmFzZV9mbGFnc30gJHtjeHhfbm9f
ZXhjZXB0aW9uX2ZsYWdzfSIpCisgIHNldChjeHhfZGVmYXVsdCAiJHtjeHhfZXhjZXB0aW9ufSIp
CisgIHNldChjeHhfbm9fcnR0aSAiJHtjeHhfZGVmYXVsdH0gJHtjeHhfbm9fcnR0aV9mbGFnc30i
KQorICBzZXQoY3h4X3VzZV9vd25fdHVwbGUgIiR7Y3h4X2RlZmF1bHR9IC1ER1RFU1RfVVNFX09X
Tl9UUjFfVFVQTEU9MSIpCisKKyAgIyBGb3IgYnVpbGRpbmcgdGhlIGd0ZXN0IGxpYnJhcmllcy4K
KyAgc2V0KGN4eF9zdHJpY3QgIiR7Y3h4X2RlZmF1bHR9ICR7Y3h4X3N0cmljdF9mbGFnc30iKQor
ZW5kbWFjcm8oKQorCisjIERlZmluZXMgdGhlIGd0ZXN0ICYgZ3Rlc3RfbWFpbiBsaWJyYXJpZXMu
ICBVc2VyIHRlc3RzIHNob3VsZCBsaW5rCisjIHdpdGggb25lIG9mIHRoZW0uCitmdW5jdGlvbihj
eHhfbGlicmFyeV93aXRoX3R5cGUgbmFtZSB0eXBlIGN4eF9mbGFncykKKyAgIyB0eXBlIGNhbiBi
ZSBlaXRoZXIgU1RBVElDIG9yIFNIQVJFRCB0byBkZW5vdGUgYSBzdGF0aWMgb3Igc2hhcmVkIGxp
YnJhcnkuCisgICMgQVJHTiByZWZlcnMgdG8gYWRkaXRpb25hbCBhcmd1bWVudHMgYWZ0ZXIgJ2N4
eF9mbGFncycuCisgIGFkZF9saWJyYXJ5KCR7bmFtZX0gJHt0eXBlfSAke0FSR059KQorICBzZXRf
dGFyZ2V0X3Byb3BlcnRpZXMoJHtuYW1lfQorICAgIFBST1BFUlRJRVMKKyAgICBDT01QSUxFX0ZM
QUdTICIke2N4eF9mbGFnc30iKQorICAjIEdlbmVyYXRlIGRlYnVnIGxpYnJhcnkgbmFtZSB3aXRo
IGEgcG9zdGZpeC4KKyAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7bmFtZX0KKyAgICBQUk9QRVJU
SUVTCisgICAgREVCVUdfUE9TVEZJWCAiZCIpCisgIGlmIChCVUlMRF9TSEFSRURfTElCUyBPUiB0
eXBlIFNUUkVRVUFMICJTSEFSRUQiKQorICAgIHNldF90YXJnZXRfcHJvcGVydGllcygke25hbWV9
CisgICAgICBQUk9QRVJUSUVTCisgICAgICBDT01QSUxFX0RFRklOSVRJT05TICJHVEVTVF9DUkVB
VEVfU0hBUkVEX0xJQlJBUlk9MSIpCisgICAgaWYgKE5PVCAiJHtDTUFLRV9WRVJTSU9OfSIgVkVS
U0lPTl9MRVNTICIyLjguMTEiKQorICAgICAgdGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMoJHtu
YW1lfSBJTlRFUkZBQ0UKKyAgICAgICAgJDxJTlNUQUxMX0lOVEVSRkFDRTpHVEVTVF9MSU5LRURf
QVNfU0hBUkVEX0xJQlJBUlk9MT4pCisgICAgZW5kaWYoKQorICBlbmRpZigpCisgIGlmIChERUZJ
TkVEIEdURVNUX0hBU19QVEhSRUFEKQorICAgIGlmICgiJHtDTUFLRV9WRVJTSU9OfSIgVkVSU0lP
Tl9MRVNTICIzLjEuMCIpCisgICAgICBzZXQodGhyZWFkc19zcGVjICR7Q01BS0VfVEhSRUFEX0xJ
QlNfSU5JVH0pCisgICAgZWxzZSgpCisgICAgICBzZXQodGhyZWFkc19zcGVjIFRocmVhZHM6OlRo
cmVhZHMpCisgICAgZW5kaWYoKQorICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke25hbWV9IFBV
QkxJQyAke3RocmVhZHNfc3BlY30pCisgIGVuZGlmKCkKK2VuZGZ1bmN0aW9uKCkKKworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisjCisjIEhlbHBlciBmdW5jdGlvbnMgZm9yIGNyZWF0aW5nIGJ1aWxkIHRhcmdl
dHMuCisKK2Z1bmN0aW9uKGN4eF9zaGFyZWRfbGlicmFyeSBuYW1lIGN4eF9mbGFncykKKyAgY3h4
X2xpYnJhcnlfd2l0aF90eXBlKCR7bmFtZX0gU0hBUkVEICIke2N4eF9mbGFnc30iICR7QVJHTn0p
CitlbmRmdW5jdGlvbigpCisKK2Z1bmN0aW9uKGN4eF9saWJyYXJ5IG5hbWUgY3h4X2ZsYWdzKQor
ICBjeHhfbGlicmFyeV93aXRoX3R5cGUoJHtuYW1lfSAiIiAiJHtjeHhfZmxhZ3N9IiAke0FSR059
KQorZW5kZnVuY3Rpb24oKQorCisjIGN4eF9leGVjdXRhYmxlX3dpdGhfZmxhZ3MobmFtZSBjeHhf
ZmxhZ3MgbGlicyBzcmNzLi4uKQorIworIyBjcmVhdGVzIGEgbmFtZWQgQysrIGV4ZWN1dGFibGUg
dGhhdCBkZXBlbmRzIG9uIHRoZSBnaXZlbiBsaWJyYXJpZXMgYW5kCisjIGlzIGJ1aWx0IGZyb20g
dGhlIGdpdmVuIHNvdXJjZSBmaWxlcyB3aXRoIHRoZSBnaXZlbiBjb21waWxlciBmbGFncy4KK2Z1
bmN0aW9uKGN4eF9leGVjdXRhYmxlX3dpdGhfZmxhZ3MgbmFtZSBjeHhfZmxhZ3MgbGlicykKKyAg
YWRkX2V4ZWN1dGFibGUoJHtuYW1lfSAke0FSR059KQorICBpZiAoTVNWQyBBTkQgKE5PVCAoTVNW
Q19WRVJTSU9OIExFU1MgMTcwMCkpKSAgIyAxNzAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxMi4KKyAg
ICAjIEJpZ09iaiByZXF1aXJlZCBmb3IgdGVzdHMuCisgICAgc2V0KGN4eF9mbGFncyAiJHtjeHhf
ZmxhZ3N9IC1iaWdvYmoiKQorICBlbmRpZigpCisgIGlmIChjeHhfZmxhZ3MpCisgICAgc2V0X3Rh
cmdldF9wcm9wZXJ0aWVzKCR7bmFtZX0KKyAgICAgIFBST1BFUlRJRVMKKyAgICAgIENPTVBJTEVf
RkxBR1MgIiR7Y3h4X2ZsYWdzfSIpCisgIGVuZGlmKCkKKyAgaWYgKEJVSUxEX1NIQVJFRF9MSUJT
KQorICAgIHNldF90YXJnZXRfcHJvcGVydGllcygke25hbWV9CisgICAgICBQUk9QRVJUSUVTCisg
ICAgICBDT01QSUxFX0RFRklOSVRJT05TICJHVEVTVF9MSU5LRURfQVNfU0hBUkVEX0xJQlJBUlk9
MSIpCisgIGVuZGlmKCkKKyAgIyBUbyBzdXBwb3J0IG1peGluZyBsaW5raW5nIGluIHN0YXRpYyBh
bmQgZHluYW1pYyBsaWJyYXJpZXMsIGxpbmsgZWFjaAorICAjIGxpYnJhcnkgaW4gd2l0aCBhbiBl
eHRyYSBjYWxsIHRvIHRhcmdldF9saW5rX2xpYnJhcmllcy4KKyAgZm9yZWFjaCAobGliICIke2xp
YnN9IikKKyAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtuYW1lfSAke2xpYn0pCisgIGVuZGZv
cmVhY2goKQorZW5kZnVuY3Rpb24oKQorCisjIGN4eF9leGVjdXRhYmxlKG5hbWUgZGlyIGxpYiBz
cmNzLi4uKQorIworIyBjcmVhdGVzIGEgbmFtZWQgdGFyZ2V0IHRoYXQgZGVwZW5kcyBvbiB0aGUg
Z2l2ZW4gbGlicyBhbmQgaXMgYnVpbHQKKyMgZnJvbSB0aGUgZ2l2ZW4gc291cmNlIGZpbGVzLiAg
ZGlyL25hbWUuY2MgaXMgaW1wbGljaXRseSBpbmNsdWRlZCBpbgorIyB0aGUgc291cmNlIGZpbGUg
bGlzdC4KK2Z1bmN0aW9uKGN4eF9leGVjdXRhYmxlIG5hbWUgZGlyIGxpYnMpCisgIGN4eF9leGVj
dXRhYmxlX3dpdGhfZmxhZ3MoCisgICAgJHtuYW1lfSAiJHtjeHhfZGVmYXVsdH0iICIke2xpYnN9
IiAiJHtkaXJ9LyR7bmFtZX0uY2MiICR7QVJHTn0pCitlbmRmdW5jdGlvbigpCisKKyMgU2V0cyBQ
WVRIT05JTlRFUlBfRk9VTkQgYW5kIFBZVEhPTl9FWEVDVVRBQkxFLgorZmluZF9wYWNrYWdlKFB5
dGhvbkludGVycCkKKworIyBjeHhfdGVzdF93aXRoX2ZsYWdzKG5hbWUgY3h4X2ZsYWdzIGxpYnMg
c3Jjcy4uLikKKyMKKyMgY3JlYXRlcyBhIG5hbWVkIEMrKyB0ZXN0IHRoYXQgZGVwZW5kcyBvbiB0
aGUgZ2l2ZW4gbGlicyBhbmQgaXMgYnVpbHQKKyMgZnJvbSB0aGUgZ2l2ZW4gc291cmNlIGZpbGVz
IHdpdGggdGhlIGdpdmVuIGNvbXBpbGVyIGZsYWdzLgorZnVuY3Rpb24oY3h4X3Rlc3Rfd2l0aF9m
bGFncyBuYW1lIGN4eF9mbGFncyBsaWJzKQorICBjeHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzKCR7
bmFtZX0gIiR7Y3h4X2ZsYWdzfSIgIiR7bGlic30iICR7QVJHTn0pCisgIGFkZF90ZXN0KE5BTUUg
JHtuYW1lfSBDT01NQU5EICR7bmFtZX0pCitlbmRmdW5jdGlvbigpCisKKyMgY3h4X3Rlc3QobmFt
ZSBsaWJzIHNyY3MuLi4pCisjCisjIGNyZWF0ZXMgYSBuYW1lZCB0ZXN0IHRhcmdldCB0aGF0IGRl
cGVuZHMgb24gdGhlIGdpdmVuIGxpYnMgYW5kIGlzCisjIGJ1aWx0IGZyb20gdGhlIGdpdmVuIHNv
dXJjZSBmaWxlcy4gIFVubGlrZSBjeHhfdGVzdF93aXRoX2ZsYWdzLAorIyB0ZXN0L25hbWUuY2Mg
aXMgYWxyZWFkeSBpbXBsaWNpdGx5IGluY2x1ZGVkIGluIHRoZSBzb3VyY2UgZmlsZSBsaXN0Lgor
ZnVuY3Rpb24oY3h4X3Rlc3QgbmFtZSBsaWJzKQorICBjeHhfdGVzdF93aXRoX2ZsYWdzKCIke25h
bWV9IiAiJHtjeHhfZGVmYXVsdH0iICIke2xpYnN9IgorICAgICJ0ZXN0LyR7bmFtZX0uY2MiICR7
QVJHTn0pCitlbmRmdW5jdGlvbigpCisKKyMgcHlfdGVzdChuYW1lKQorIworIyBjcmVhdGVzIGEg
UHl0aG9uIHRlc3Qgd2l0aCB0aGUgZ2l2ZW4gbmFtZSB3aG9zZSBtYWluIG1vZHVsZSBpcyBpbgor
IyB0ZXN0L25hbWUucHkuICBJdCBkb2VzIG5vdGhpbmcgaWYgUHl0aG9uIGlzIG5vdCBpbnN0YWxs
ZWQuCitmdW5jdGlvbihweV90ZXN0IG5hbWUpCisgIGlmIChQWVRIT05JTlRFUlBfRk9VTkQpCisg
ICAgaWYgKCR7Q01BS0VfTUFKT1JfVkVSU0lPTn0uJHtDTUFLRV9NSU5PUl9WRVJTSU9OfSBHUkVB
VEVSIDMuMSkKKyAgICAgIGlmIChDTUFLRV9DT05GSUdVUkFUSU9OX1RZUEVTKQorCSMgTXVsdGkt
Y29uZmlndXJhdGlvbiBidWlsZCBnZW5lcmF0b3JzIGFzIGZvciBWaXN1YWwgU3R1ZGlvIHNhdmUK
KwkjIG91dHB1dCBpbiBhIHN1YmRpcmVjdG9yeSBvZiBDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVIg
KERlYnVnLAorCSMgUmVsZWFzZSBldGMuKSwgc28gd2UgaGF2ZSB0byBwcm92aWRlIGl0IGhlcmUu
CisgICAgICAgIGFkZF90ZXN0KAorICAgICAgICAgIE5BTUUgJHtuYW1lfQorICAgICAgICAgIENP
TU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3Rl
c3QvJHtuYW1lfS5weQorICAgICAgICAgICAgICAtLWJ1aWxkX2Rpcj0ke0NNQUtFX0NVUlJFTlRf
QklOQVJZX0RJUn0vJDxDT05GSUc+ICR7QVJHTn0pCisgICAgICBlbHNlIChDTUFLRV9DT05GSUdV
UkFUSU9OX1RZUEVTKQorCSMgU2luZ2xlLWNvbmZpZ3VyYXRpb24gYnVpbGQgZ2VuZXJhdG9ycyBs
aWtlIE1ha2VmaWxlIGdlbmVyYXRvcnMKKwkjIGRvbid0IGhhdmUgc3ViZGlycyBiZWxvdyBDTUFL
RV9DVVJSRU5UX0JJTkFSWV9ESVIuCisgICAgICAgIGFkZF90ZXN0KAorICAgICAgICAgIE5BTUUg
JHtuYW1lfQorICAgICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L3Rlc3QvJHtuYW1lfS5weQorICAgICAgICAgICAgICAtLWJ1aWxk
X2Rpcj0ke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0gJHtBUkdOfSkKKyAgICAgIGVuZGlmIChD
TUFLRV9DT05GSUdVUkFUSU9OX1RZUEVTKQorICAgIGVsc2UgKCR7Q01BS0VfTUFKT1JfVkVSU0lP
Tn0uJHtDTUFLRV9NSU5PUl9WRVJTSU9OfSBHUkVBVEVSIDMuMSkKKyAgICAgICMgJHtDTUFLRV9D
VVJSRU5UX0JJTkFSWV9ESVJ9IGlzIGtub3duIGF0IGNvbmZpZ3VyYXRpb24gdGltZSwgc28gd2Ug
Y2FuCisgICAgICAjIGRpcmVjdGx5IGJpbmQgaXQgZnJvbSBjbWFrZS4gJHtDVEVTVF9DT05GSUdV
UkFUSU9OX1RZUEV9IGlzIGtub3duCisgICAgICAjIG9ubHkgYXQgY3Rlc3QgcnVudGltZSAoYnkg
Y2FsbGluZyBjdGVzdCAtYyA8Q29uZmlndXJhdGlvbj4pLCBzbworICAgICAgIyB3ZSBoYXZlIHRv
IGVzY2FwZSAkIHRvIGRlbGF5IHZhcmlhYmxlIHN1YnN0aXR1dGlvbiBoZXJlLgorICAgICAgYWRk
X3Rlc3QoCisgICAgICAgICR7bmFtZX0KKyAgICAgICAgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3Rlc3QvJHtuYW1lfS5weQorICAgICAgICAgIC0tYnVp
bGRfZGlyPSR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9cJHtDVEVTVF9DT05GSUdVUkFUSU9O
X1RZUEV9ICR7QVJHTn0pCisgICAgZW5kaWYgKCR7Q01BS0VfTUFKT1JfVkVSU0lPTn0uJHtDTUFL
RV9NSU5PUl9WRVJTSU9OfSBHUkVBVEVSIDMuMSkKKyAgZW5kaWYoUFlUSE9OSU5URVJQX0ZPVU5E
KQorZW5kZnVuY3Rpb24oKQorCisjIGluc3RhbGxfcHJvamVjdCh0YXJnZXRzLi4uKQorIworIyBJ
bnN0YWxscyB0aGUgc3BlY2lmaWVkIHRhcmdldHMgYW5kIGNvbmZpZ3VyZXMgdGhlIGFzc29jaWF0
ZWQgcGtnY29uZmlnIGZpbGVzLgorZnVuY3Rpb24oaW5zdGFsbF9wcm9qZWN0KQorICBpZihJTlNU
QUxMX0dURVNUKQorICAgIGluc3RhbGwoRElSRUNUT1JZICIke1BST0pFQ1RfU09VUkNFX0RJUn0v
aW5jbHVkZS8iCisgICAgICBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9
IikKKyAgICAjIEluc3RhbGwgdGhlIHByb2plY3QgdGFyZ2V0cy4KKyAgICBpbnN0YWxsKFRBUkdF
VFMgJHtBUkdOfQorICAgICAgRVhQT1JUICR7dGFyZ2V0c19leHBvcnRfbmFtZX0KKyAgICAgIFJV
TlRJTUUgREVTVElOQVRJT04gIiR7Q01BS0VfSU5TVEFMTF9CSU5ESVJ9IgorICAgICAgQVJDSElW
RSBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0iCisgICAgICBMSUJSQVJZIERF
U1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfTElCRElSfSIpCisgICAgIyBDb25maWd1cmUgYW5k
IGluc3RhbGwgcGtnY29uZmlnIGZpbGVzLgorICAgIGZvcmVhY2godCAke0FSR059KQorICAgICAg
c2V0KGNvbmZpZ3VyZWRfcGMgIiR7Z2VuZXJhdGVkX2Rpcn0vJHt0fS5wYyIpCisgICAgICBjb25m
aWd1cmVfZmlsZSgiJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2NtYWtlLyR7dH0ucGMuaW4iCisgICAg
ICAgICIke2NvbmZpZ3VyZWRfcGN9IiBAT05MWSkKKyAgICAgIGluc3RhbGwoRklMRVMgIiR7Y29u
ZmlndXJlZF9wY30iCisgICAgICAgIERFU1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfTElCRElS
fS9wa2djb25maWciKQorICAgIGVuZGZvcmVhY2goKQorICBlbmRpZigpCitlbmRmdW5jdGlvbigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9hbGwu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9hbGwuY2MKaW5kZXgg
YmE3YWQ2OGFkMWNhYTVmYjIwODM4YzcwMDg5NmE0MTgyYmE1OWQ5Zi4uMTIxYjJkODBlODNlYzdj
ZDBmZGY3ZGM2NzEyNzJkYzU0ZjZlOWYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvY29kZWdlYXIvZ3Rlc3RfYWxsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2NvZGVnZWFyL2d0ZXN0X2FsbC5jYwpAQCAtMSwzOCArMSwzOCBAQAotLy8gQ29weXJpZ2h0IDIw
MDksIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0v
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogSm9zaCBLZWxsZXkg
KGpvc2hrZWxAZ21haWwuY29tKQotLy8KLS8vIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsg
KEdvb2dsZSBUZXN0KQotLy8KLS8vIEMrK0J1aWxkZXIncyBJREUgY2Fubm90IGJ1aWxkIGEgc3Rh
dGljIGxpYnJhcnkgZnJvbSBmaWxlcyB3aXRoIGh5cGhlbnMKLS8vIGluIHRoZWlyIG5hbWUuICBT
ZWUgaHR0cDovL3FjLmNvZGVnZWFyLmNvbS93Yy9xY21haW4uYXNweD9kPTcwOTc3IC4KLS8vIFRo
aXMgZmlsZSBzZXJ2ZXMgYXMgYSB3b3JrYXJvdW5kLgotCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWFs
bC5jYyIKKy8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLg0KKy8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuDQorLy8NCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlDQorLy8gbWV0Og0K
Ky8vDQorLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQNCisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KKy8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXINCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlDQorLy8gZGlzdHJpYnV0aW9uLg0KKy8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCisvLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQ0K
Ky8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uDQorLy8NCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQorLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QNCisvLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IN
CisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVA0KKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KKy8vIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QNCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwNCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkNCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFDQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4NCisvLw0KKy8vIEF1dGhvcjogSm9zaCBLZWxsZXkgKGpvc2hr
ZWxAZ21haWwuY29tKQ0KKy8vDQorLy8gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29v
Z2xlIFRlc3QpDQorLy8NCisvLyBDKytCdWlsZGVyJ3MgSURFIGNhbm5vdCBidWlsZCBhIHN0YXRp
YyBsaWJyYXJ5IGZyb20gZmlsZXMgd2l0aCBoeXBoZW5zDQorLy8gaW4gdGhlaXIgbmFtZS4gIFNl
ZSBodHRwOi8vcWMuY29kZWdlYXIuY29tL3djL3FjbWFpbi5hc3B4P2Q9NzA5NzcgLg0KKy8vIFRo
aXMgZmlsZSBzZXJ2ZXMgYXMgYSB3b3JrYXJvdW5kLg0KKw0KKyNpbmNsdWRlICJzcmMvZ3Rlc3Qt
YWxsLmNjIg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NvZGVnZWFyL2d0
ZXN0X2xpbmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9saW5r
LmNjCmluZGV4IGI5NTVlYmYyZjkxMTBlNjM1M2M2ODdjYzM5NDIzNDhkYTc5N2NiNTAuLjkxOGVj
Y2QxOWI3ZGFmYTMyYjUyOTM4MGI3MDkyMzhjOWUzYTM2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2NvZGVnZWFyL2d0ZXN0X2xpbmsuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvY29kZWdlYXIvZ3Rlc3RfbGluay5jYwpAQCAtMSw0MCArMSw0MCBAQAotLy8g
Q29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8K
LS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0
cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0v
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
Sm9zaCBLZWxsZXkgKGpvc2hrZWxAZ21haWwuY29tKQotLy8KLS8vIEdvb2dsZSBDKysgVGVzdGlu
ZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQotLy8KLS8vIExpbmtzIGd0ZXN0LmxpYiBhbmQgZ3Rl
c3RfbWFpbi5saWIgaW50byB0aGUgY3VycmVudCBwcm9qZWN0IGluIEMrK0J1aWxkZXIuCi0vLyBU
aGlzIG1lYW5zIHRoYXQgdGhlc2UgbGlicmFyaWVzIGNhbid0IGJlIHJlbmFtZWQsIGJ1dCBpdCdz
IHRoZSBvbmx5IHdheSB0bwotLy8gZW5zdXJlIHRoYXQgRGVidWcgdmVyc3VzIFJlbGVhc2UgdGVz
dCBidWlsZHMgYXJlIGxpbmtlZCBhZ2FpbnN0IHRoZQotLy8gYXBwcm9wcmlhdGUgRGVidWcgb3Ig
UmVsZWFzZSBidWlsZCBvZiB0aGUgbGlicmFyaWVzLgotCi0jcHJhZ21hIGxpbmsgImd0ZXN0Lmxp
YiIKLSNwcmFnbWEgbGluayAiZ3Rlc3RfbWFpbi5saWIiCisvLyBDb3B5cmlnaHQgMjAwOSwgR29v
Z2xlIEluYy4NCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vDQorLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQ0KKy8vIG1ldDoNCisvLw0KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorLy8gbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Lg0KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUNCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyDQorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KKy8vIGRpc3RyaWJ1dGlv
bi4NCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzDQorLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKy8vDQorLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0KKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UDQorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwNCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UDQorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQorLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVA0KKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorLy8NCisv
LyBBdXRob3I6IEpvc2ggS2VsbGV5IChqb3Noa2VsQGdtYWlsLmNvbSkNCisvLw0KKy8vIEdvb2ds
ZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQ0KKy8vDQorLy8gTGlua3MgZ3Rl
c3QubGliIGFuZCBndGVzdF9tYWluLmxpYiBpbnRvIHRoZSBjdXJyZW50IHByb2plY3QgaW4gQysr
QnVpbGRlci4NCisvLyBUaGlzIG1lYW5zIHRoYXQgdGhlc2UgbGlicmFyaWVzIGNhbid0IGJlIHJl
bmFtZWQsIGJ1dCBpdCdzIHRoZSBvbmx5IHdheSB0bw0KKy8vIGVuc3VyZSB0aGF0IERlYnVnIHZl
cnN1cyBSZWxlYXNlIHRlc3QgYnVpbGRzIGFyZSBsaW5rZWQgYWdhaW5zdCB0aGUNCisvLyBhcHBy
b3ByaWF0ZSBEZWJ1ZyBvciBSZWxlYXNlIGJ1aWxkIG9mIHRoZSBsaWJyYXJpZXMuDQorDQorI3By
YWdtYSBsaW5rICJndGVzdC5saWIiDQorI3ByYWdtYSBsaW5rICJndGVzdF9tYWluLmxpYiINCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb25maWd1cmUuYWMgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9jb25maWd1cmUuYWMKaW5kZXggMWI5MTIzNzQ2MWUzOWZmNjFiNjMw
ZjNlMDE5YWRmZWVlYjc4M2FlNi4uMjU0YzhjNGIzMTg4NWQyNTcxZmEyMzAwYjYzMWU4YmY5ZDk1
YWUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29uZmlndXJlLmFjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NvbmZpZ3VyZS5hYwpAQCAtNSwxMyArNSwxNCBA
QCBtNF9pbmNsdWRlKG00L2FjeF9wdGhyZWFkLm00KQogIyAiWzEuMC4xXSIpLiBJdCBhbHNvIGFz
dW1lcyB0aGF0IHRoZXJlIHdvbid0IGJlIGFueSBjbG9zaW5nIHBhcmVudGhlc2lzCiAjIGJldHdl
ZW4gIkFDX0lOSVQoIiBhbmQgdGhlIGNsb3NpbmcgIikiIGluY2x1ZGluZyBjb21tZW50cyBhbmQg
c3RyaW5ncy4KIEFDX0lOSVQoW0dvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmtdLAotICAgICAg
ICBbMS41LjBdLAorICAgICAgICBbMS44LjBdLAogICAgICAgICBbZ29vZ2xldGVzdGZyYW1ld29y
a0Bnb29nbGVncm91cHMuY29tXSwKICAgICAgICAgW2d0ZXN0XSkKIAogIyBQcm92aWRlIHZhcmlv
dXMgb3B0aW9ucyB0byBpbml0aWFsaXplIHRoZSBBdXRvY29uZiBhbmQgY29uZmlndXJlIHByb2Nl
c3Nlcy4KIEFDX1BSRVJFUShbMi41OV0pCi1BQ19DT05GSUdfU1JDRElSKFsuL0NPUFlJTkddKQor
QUNfQ09ORklHX1NSQ0RJUihbLi9MSUNFTlNFXSkKK0FDX0NPTkZJR19NQUNST19ESVIoW200XSkK
IEFDX0NPTkZJR19BVVhfRElSKFtidWlsZC1hdXhdKQogQUNfQ09ORklHX0hFQURFUlMoW2J1aWxk
LWF1eC9jb25maWcuaF0pCiBBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlXSkKQEAgLTU0LDcgKzU1
LDcgQEAgQVNfSUYoW3Rlc3QgIngkd2l0aF9wdGhyZWFkcyIgIT0gInhubyJdLAogICAgICAgICAg
ICAgICAgW0FDX01TR19GQUlMVVJFKAogICAgICAgICAgICAgICAgICBbLS13aXRoLXB0aHJlYWRz
IHdhcyBzcGVjaWZpZWQsIGJ1dCB1bmFibGUgdG8gYmUgdXNlZF0pXSldKQogICAgICAgIGhhdmVf
cHRocmVhZHM9IiRhY3hfcHRocmVhZF9vayJdKQotQU1fQ09ORElUSU9OQUwoW0hBVkVfUFRIUkVB
RFNdLFt0ZXN0ICJ4JGhhdmVfcHRocmVhZHMiID09ICJ4eWVzIl0pCitBTV9DT05ESVRJT05BTChb
SEFWRV9QVEhSRUFEU10sW3Rlc3QgIngkaGF2ZV9wdGhyZWFkcyIgPSAieHllcyJdKQogQUNfU1VC
U1QoUFRIUkVBRF9DRkxBR1MpCiBBQ19TVUJTVChQVEhSRUFEX0xJQlMpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvUGtnY29uZmlnLm1kIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvZG9jcy9Qa2djb25maWcubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc2MTI4OTRkMmEzYzhl
YWRiNDQyYzU1ODc4MDRmYjc3ODVlYWE3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2RvY3MvUGtnY29uZmlnLm1kCkBAIC0wLDAgKzEsMTQ2IEBACisjIyBVc2lu
ZyBHb29nbGVUZXN0IGZyb20gdmFyaW91cyBidWlsZCBzeXN0ZW1zICMjCisKK0dvb2dsZVRlc3Qg
Y29tZXMgd2l0aCBwa2ctY29uZmlnIGZpbGVzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5l
IGFsbAorbmVjZXNzYXJ5IGZsYWdzIGZvciBjb21waWxpbmcgYW5kIGxpbmtpbmcgdG8gR29vZ2xl
VGVzdCAoYW5kIEdvb2dsZU1vY2spLgorUGtnLWNvbmZpZyBpcyBhIHN0YW5kYXJkaXNlZCBwbGFp
bi10ZXh0IGZvcm1hdCBjb250YWluaW5nCisKKyAgKiB0aGUgaW5jbHVkZWRpciAoLUkpIHBhdGgK
KyAgKiBuZWNlc3NhcnkgbWFjcm8gKC1EKSBkZWZpbml0aW9ucworICAqIGZ1cnRoZXIgcmVxdWly
ZWQgZmxhZ3MgKC1wdGhyZWFkKQorICAqIHRoZSBsaWJyYXJ5ICgtTCkgcGF0aAorICAqIHRoZSBs
aWJyYXJ5ICgtbCkgdG8gbGluayB0bworCitBbGwgY3VycmVudCBidWlsZCBzeXN0ZW1zIHN1cHBv
cnQgcGtnLWNvbmZpZyBpbiBvbmUgd2F5IG9yIGFub3RoZXIuIEZvcgorYWxsIGV4YW1wbGVzIGhl
cmUgd2UgYXNzdW1lIHlvdSB3YW50IHRvIGNvbXBpbGUgdGhlIHNhbXBsZQorYHNhbXBsZXMvc2Ft
cGxlM191bml0dGVzdC5jY2AuCisKKworIyMjIENNYWtlICMjIworCitVc2luZyBgcGtnLWNvbmZp
Z2AgaW4gQ01ha2UgaXMgZmFpcmx5IGVhc3k6CisKK2BgYAorY21ha2VfbWluaW11bV9yZXF1aXJl
ZChWRVJTSU9OIDMuMCkKKworY21ha2VfcG9saWN5KFNFVCBDTVAwMDQ4IE5FVykKK3Byb2plY3Qo
bXlfZ3Rlc3RfcGtnY29uZmlnIFZFUlNJT04gMC4wLjEgTEFOR1VBR0VTIENYWCkKKworZmluZF9w
YWNrYWdlKFBrZ0NvbmZpZykKK3BrZ19zZWFyY2hfbW9kdWxlKEdURVNUIFJFUVVJUkVEIGd0ZXN0
X21haW4pCisKK2FkZF9leGVjdXRhYmxlKHRlc3RhcHAgc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0
LmNjKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzKHRlc3RhcHAgJHtHVEVTVF9MREZMQUdTfSkKK3Rh
cmdldF9jb21waWxlX29wdGlvbnModGVzdGFwcCBQVUJMSUMgJHtHVEVTVF9DRkxBR1N9KQorCitp
bmNsdWRlKENUZXN0KQorYWRkX3Rlc3QoZmlyc3RfYW5kX29ubHlfdGVzdCB0ZXN0YXBwKQorYGBg
CisKK0l0IGlzIGdlbmVyYWxseSByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgYHRhcmdldF9jb21w
aWxlX29wdGlvbnNgICsgYF9DRkxBR1NgCitvdmVyIGB0YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmll
c2AgKyBgX0lOQ0xVREVfRElSU2AgYXMgdGhlIGZvcm1lciBpbmNsdWRlcyBub3QKK2p1c3QgLUkg
ZmxhZ3MgKEdvb2dsZVRlc3QgbWlnaHQgcmVxdWlyZSBhIG1hY3JvIGluZGljYXRpbmcgdG8gaW50
ZXJuYWwgaGVhZGVycwordGhhdCBhbGwgbGlicmFyaWVzIGhhdmUgYmVlbiBjb21waWxlZCB3aXRo
IHRocmVhZGluZyBlbmFibGVkLiBJbiBhZGRpdGlvbiwKK0dvb2dsZVRlc3QgbWlnaHQgYWxzbyBy
ZXF1aXJlIGAtcHRocmVhZGAgaW4gdGhlIGNvbXBpbGluZyBzdGVwLCBhbmQgYXMgc3VjaAorc3Bs
aXR0aW5nIHRoZSBwa2ctY29uZmlnIGBDZmxhZ3NgIHZhcmlhYmxlIGludG8gaW5jbHVkZSBkaXJz
IGFuZCBtYWNyb3MgZm9yCitgdGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMoKWAgbWlnaHQgc3Rp
bGwgbWlzcyB0aGlzKS4gVGhlIHNhbWUgcmVjb21tZW5kYXRpb24KK2dvZXMgZm9yIHVzaW5nIGBf
TERGTEFHU2Agb3ZlciB0aGUgbW9yZSBjb21tb25wbGFjZSBgX0xJQlJBUklFU2AsIHdoaWNoCito
YXBwZW5zIHRvIGRpc2NhcmQgYC1MYCBmbGFncyBhbmQgYC1wdGhyZWFkYC4KKworCisjIyMgQXV0
b3Rvb2xzICMjIworCitGaW5kaW5nIEdvb2dsZVRlc3QgaW4gQXV0b2NvbmYgYW5kIHVzaW5nIGl0
IGZyb20gQXV0b21ha2UgaXMgYWxzbyBmYWlybHkgZWFzeToKKworSW4geW91ciBgY29uZmlndXJl
LmFjYDoKKworYGBgCitBQ19QUkVSRVEoWzIuNjldKQorQUNfSU5JVChbbXlfZ3Rlc3RfcGtnY29u
ZmlnXSwgWzAuMC4xXSkKK0FDX0NPTkZJR19TUkNESVIoW3NhbXBsZXMvc2FtcGxlM191bml0dGVz
dC5jY10pCitBQ19QUk9HX0NYWAorCitQS0dfQ0hFQ0tfTU9EVUxFUyhbR1RFU1RdLCBbZ3Rlc3Rf
bWFpbl0pCisKK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ24gc3ViZGlyLW9iamVjdHNdKQorQUNf
Q09ORklHX0ZJTEVTKFtNYWtlZmlsZV0pCitBQ19PVVRQVVQKK2BgYAorCithbmQgaW4geW91ciBg
TWFrZWZpbGUuYW1gOgorCitgYGAKK2NoZWNrX1BST0dSQU1TID0gdGVzdGFwcAorVEVTVFMgPSAk
KGNoZWNrX1BST0dSQU1TKQorCit0ZXN0YXBwX1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTNfdW5p
dHRlc3QuY2MKK3Rlc3RhcHBfQ1hYRkxBR1MgPSAkKEdURVNUX0NGTEFHUykKK3Rlc3RhcHBfTERB
REQgPSAkKEdURVNUX0xJQlMpCitgYGAKKworCisjIyMgTWVzb24gIyMjCisKK01lc29uIG5hdGl2
ZWx5IHVzZXMgcGtnY29uZmlnIHRvIHF1ZXJ5IGRlcGVuZGVuY2llczoKKworYGBgCitwcm9qZWN0
KCdteV9ndGVzdF9wa2djb25maWcnLCAnY3BwJywgdmVyc2lvbiA6ICcwLjAuMScpCisKK2d0ZXN0
X2RlcCA9IGRlcGVuZGVuY3koJ2d0ZXN0X21haW4nKQorCit0ZXN0YXBwID0gZXhlY3V0YWJsZSgK
KyAgJ3Rlc3RhcHAnLAorICBmaWxlcyhbJ3NhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYyddKSwK
KyAgZGVwZW5kZW5jaWVzIDogZ3Rlc3RfZGVwLAorICBpbnN0YWxsIDogZmFsc2UpCisKK3Rlc3Qo
J2ZpcnN0X2FuZF9vbmx5X3Rlc3QnLCB0ZXN0YXBwKQorYGBgCisKKworIyMjIFBsYWluIE1ha2Vm
aWxlcyAjIyMKKworU2luY2UgYHBrZy1jb25maWdgIGlzIGEgc21hbGwgVW5peCBjb21tYW5kLWxp
bmUgdXRpbGl0eSwgaXQgY2FuIGJlIHVzZWQKK2luIGhhbmR3cml0dGVuIGBNYWtlZmlsZWBzIHRv
bzoKKworYGBgCitHVEVTVF9DRkxBR1MgPSBgcGtnLWNvbmZpZyAtLWNmbGFncyBndGVzdF9tYWlu
YAorR1RFU1RfTElCUyA9IGBwa2ctY29uZmlnIC0tbGlicyBndGVzdF9tYWluYAorCisuUEhPTlk6
IHRlc3RzIGFsbAorCit0ZXN0czogYWxsCisJLi90ZXN0YXBwCisKK2FsbDogdGVzdGFwcAorCit0
ZXN0YXBwOiB0ZXN0YXBwLm8KKwkkKENYWCkgJChDWFhGTEFHUykgJChMREZMQUdTKSAkPCAtbyAk
QCAkKEdURVNUX0xJQlMpCisKK3Rlc3RhcHAubzogc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNj
CisJJChDWFgpICQoQ1BQRkxBR1MpICQoQ1hYRkxBR1MpICQ8IC1jIC1vICRAICQoR1RFU1RfQ0ZM
QUdTKQorYGBgCisKKworIyMjIEhlbHAhIHBrZy1jb25maWcgY2FuJ3QgZmluZCBHb29nbGVUZXN0
ISAjIyMKKworTGV0J3Mgc2F5IHlvdSBoYXZlIGEgYENNYWtlTGlzdHMudHh0YCBhbG9uZyB0aGUg
bGluZXMgb2YgdGhlIG9uZSBpbiB0aGlzCit0dXRvcmlhbCBhbmQgeW91IHRyeSB0byBydW4gYGNt
YWtlYC4gSXQgaXMgdmVyeSBwb3NzaWJsZSB0aGF0IHlvdSBnZXQgYQorZmFpbHVyZSBhbG9uZyB0
aGUgbGluZXMgb2Y6CisKK2BgYAorLS0gQ2hlY2tpbmcgZm9yIG9uZSBvZiB0aGUgbW9kdWxlcyAn
Z3Rlc3RfbWFpbicKK0NNYWtlIEVycm9yIGF0IC91c3Ivc2hhcmUvY21ha2UvTW9kdWxlcy9GaW5k
UGtnQ29uZmlnLmNtYWtlOjY0MCAobWVzc2FnZSk6CisgIE5vbmUgb2YgdGhlIHJlcXVpcmVkICdn
dGVzdF9tYWluJyBmb3VuZAorYGBgCisKK1RoZXNlIGZhaWx1cmVzIGFyZSBjb21tb24gaWYgeW91
IGluc3RhbGxlZCBHb29nbGVUZXN0IHlvdXJzZWxmIGFuZCBoYXZlIG5vdAorc291cmNlZCBpdCBm
cm9tIGEgZGlzdHJvIG9yIG90aGVyIHBhY2thZ2UgbWFuYWdlci4gSWYgc28sIHlvdSBuZWVkIHRv
IHRlbGwKK3BrZy1jb25maWcgd2hlcmUgaXQgY2FuIGZpbmQgdGhlIGAucGNgIGZpbGVzIGNvbnRh
aW5pbmcgdGhlIGluZm9ybWF0aW9uLgorU2F5IHlvdSBpbnN0YWxsZWQgR29vZ2xlVGVzdCB0byBg
L3Vzci9sb2NhbGAsIHRoZW4gaXQgbWlnaHQgYmUgdGhhdCB0aGUKK2AucGNgIGZpbGVzIGFyZSBp
bnN0YWxsZWQgdW5kZXIgYC91c3IvbG9jYWwvbGliNjQvcGtnY29uZmlnYC4gSWYgeW91IHNldAor
CitgYGAKK2V4cG9ydCBQS0dfQ09ORklHX1BBVEg9L3Vzci9sb2NhbC9saWI2NC9wa2djb25maWcK
K2BgYAorCitwa2ctY29uZmlnIHdpbGwgYWxzbyB0cnkgdG8gbG9vayBpbiBgUEtHX0NPTkZJR19Q
QVRIYCB0byBmaW5kIGBndGVzdF9tYWluLnBjYC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2RvY3MvUHVtcE1hbnVhbC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2Rv
Y3MvUHVtcE1hbnVhbC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjdiYjI0YjA0MmRjNTQzYWY0YzQwOWFkMDNl
MTQ3ZWE1OTQ5YjdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
ZG9jcy9QdW1wTWFudWFsLm1kCkBAIC0wLDAgKzEsMTc3IEBACisKKworPGI+UDwvYj51bXAgaXMg
PGI+VTwvYj5zZWZ1bCBmb3IgPGI+TTwvYj5ldGEgPGI+UDwvYj5yb2dyYW1taW5nLgorCisjIFRo
ZSBQcm9ibGVtICMKKworVGVtcGxhdGUgYW5kIG1hY3JvIGxpYnJhcmllcyBvZnRlbiBuZWVkIHRv
IGRlZmluZSBtYW55IGNsYXNzZXMsCitmdW5jdGlvbnMsIG9yIG1hY3JvcyB0aGF0IHZhcnkgb25s
eSAob3IgYWxtb3N0IG9ubHkpIGluIHRoZSBudW1iZXIgb2YKK2FyZ3VtZW50cyB0aGV5IHRha2Uu
IEl0J3MgYSBsb3Qgb2YgcmVwZXRpdGl2ZSwgbWVjaGFuaWNhbCwgYW5kCitlcnJvci1wcm9uZSB3
b3JrLgorCitWYXJpYWRpYyB0ZW1wbGF0ZXMgYW5kIHZhcmlhZGljIG1hY3JvcyBjYW4gYWxsZXZp
YXRlIHRoZSBwcm9ibGVtLgorSG93ZXZlciwgd2hpbGUgYm90aCBhcmUgYmVpbmcgY29uc2lkZXJl
ZCBieSB0aGUgQysrIGNvbW1pdHRlZSwgbmVpdGhlcgoraXMgaW4gdGhlIHN0YW5kYXJkIHlldCBv
ciB3aWRlbHkgc3VwcG9ydGVkIGJ5IGNvbXBpbGVycy4gIFRodXMgdGhleQorYXJlIG9mdGVuIG5v
dCBhIGdvb2QgY2hvaWNlLCBlc3BlY2lhbGx5IHdoZW4geW91ciBjb2RlIG5lZWRzIHRvIGJlCitw
b3J0YWJsZS4gQW5kIHRoZWlyIGNhcGFiaWxpdGllcyBhcmUgc3RpbGwgbGltaXRlZC4KKworQXMg
YSByZXN1bHQsIGF1dGhvcnMgb2Ygc3VjaCBsaWJyYXJpZXMgb2Z0ZW4gaGF2ZSB0byB3cml0ZSBz
Y3JpcHRzIHRvCitnZW5lcmF0ZSB0aGVpciBpbXBsZW1lbnRhdGlvbi4gSG93ZXZlciwgb3VyIGV4
cGVyaWVuY2UgaXMgdGhhdCBpdCdzCit0ZWRpb3VzIHRvIHdyaXRlIHN1Y2ggc2NyaXB0cywgd2hp
Y2ggdGVuZCB0byByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YKK3RoZSBnZW5lcmF0ZWQgY29kZSBw
b29ybHkgYW5kIGFyZSBvZnRlbiBoYXJkIHRvIHJlYWQgYW5kIGVkaXQuIEZvcgorZXhhbXBsZSwg
YSBzbWFsbCBjaGFuZ2UgbmVlZGVkIGluIHRoZSBnZW5lcmF0ZWQgY29kZSBtYXkgcmVxdWlyZSBz
b21lCitub24taW50dWl0aXZlLCBub24tdHJpdmlhbCBjaGFuZ2VzIGluIHRoZSBzY3JpcHQuIFRo
aXMgaXMgZXNwZWNpYWxseQorcGFpbmZ1bCB3aGVuIGV4cGVyaW1lbnRpbmcgd2l0aCB0aGUgY29k
ZS4KKworIyBPdXIgU29sdXRpb24gIworCitQdW1wIChmb3IgUHVtcCBpcyBVc2VmdWwgZm9yIE1l
dGEgUHJvZ3JhbW1pbmcsIFByZXR0eSBVc2VmdWwgZm9yIE1ldGEKK1Byb2dyYW1taW5nLCBvciBQ
cmFjdGljYWwgVXRpbGl0eSBmb3IgTWV0YSBQcm9ncmFtbWluZywgd2hpY2hldmVyIHlvdQorcHJl
ZmVyKSBpcyBhIHNpbXBsZSBtZXRhLXByb2dyYW1taW5nIHRvb2wgZm9yIEMrKy4gVGhlIGlkZWEg
aXMgdGhhdCBhCitwcm9ncmFtbWVyIHdyaXRlcyBhIGBmb28ucHVtcGAgZmlsZSB3aGljaCBjb250
YWlucyBDKysgY29kZSBwbHVzIG1ldGEKK2NvZGUgdGhhdCBtYW5pcHVsYXRlcyB0aGUgQysrIGNv
ZGUuIFRoZSBtZXRhIGNvZGUgY2FuIGhhbmRsZQoraXRlcmF0aW9ucyBvdmVyIGEgcmFuZ2UsIG5l
c3RlZCBpdGVyYXRpb25zLCBsb2NhbCBtZXRhIHZhcmlhYmxlCitkZWZpbml0aW9ucywgc2ltcGxl
IGFyaXRobWV0aWMsIGFuZCBjb25kaXRpb25hbCBleHByZXNzaW9ucy4gWW91IGNhbgordmlldyBp
dCBhcyBhIHNtYWxsIERvbWFpbi1TcGVjaWZpYyBMYW5ndWFnZS4gVGhlIG1ldGEgbGFuZ3VhZ2Ug
aXMKK2Rlc2lnbmVkIHRvIGJlIG5vbi1pbnRydXNpdmUgKHMudC4gaXQgd29uJ3QgY29uZnVzZSBF
bWFjcycgQysrIG1vZGUsCitmb3IgZXhhbXBsZSkgYW5kIGNvbmNpc2UsIG1ha2luZyBQdW1wIGNv
ZGUgaW50dWl0aXZlIGFuZCBlYXN5IHRvCittYWludGFpbi4KKworIyMgSGlnaGxpZ2h0cyAjIwor
CisgICogVGhlIGltcGxlbWVudGF0aW9uIGlzIGluIGEgc2luZ2xlIFB5dGhvbiBzY3JpcHQgYW5k
IHRodXMgdWx0cmEgcG9ydGFibGU6IG5vIGJ1aWxkIG9yIGluc3RhbGxhdGlvbiBpcyBuZWVkZWQg
YW5kIGl0IHdvcmtzIGNyb3NzIHBsYXRmb3Jtcy4KKyAgKiBQdW1wIHRyaWVzIHRvIGJlIHNtYXJ0
IHdpdGggcmVzcGVjdCB0byBbR29vZ2xlJ3Mgc3R5bGUgZ3VpZGVdKGh0dHBzOi8vZ2l0aHViLmNv
bS9nb29nbGUvc3R5bGVndWlkZSk6IGl0IGJyZWFrcyBsb25nIGxpbmVzIChlYXN5IHRvIGhhdmUg
d2hlbiB0aGV5IGFyZSBnZW5lcmF0ZWQpIGF0IGFjY2VwdGFibGUgcGxhY2VzIHRvIGZpdCB3aXRo
aW4gODAgY29sdW1ucyBhbmQgaW5kZW50IHRoZSBjb250aW51YXRpb24gbGluZXMgY29ycmVjdGx5
LgorICAqIFRoZSBmb3JtYXQgaXMgaHVtYW4tcmVhZGFibGUgYW5kIG1vcmUgY29uY2lzZSB0aGFu
IFhNTC4KKyAgKiBUaGUgZm9ybWF0IHdvcmtzIHJlbGF0aXZlbHkgd2VsbCB3aXRoIEVtYWNzJyBD
KysgbW9kZS4KKworIyMgRXhhbXBsZXMgIyMKKworVGhlIGZvbGxvd2luZyBQdW1wIGNvZGUgKHdo
ZXJlIG1ldGEga2V5d29yZHMgc3RhcnQgd2l0aCBgJGAsIGBbW2AgYW5kIGBdXWAgYXJlIG1ldGEg
YnJhY2tldHMsIGFuZCBgJCRgIHN0YXJ0cyBhIG1ldGEgY29tbWVudCB0aGF0IGVuZHMgd2l0aCB0
aGUgbGluZSk6CisKK2BgYAorJHZhciBuID0gMyAgICAgJCQgRGVmaW5lcyBhIG1ldGEgdmFyaWFi
bGUgbi4KKyRyYW5nZSBpIDAuLm4gICQkIERlY2xhcmVzIHRoZSByYW5nZSBvZiBtZXRhIGl0ZXJh
dG9yIGkgKGluY2x1c2l2ZSkuCiskZm9yIGkgW1sKKyAgICAgICAgICAgICAgICQkIE1ldGEgbG9v
cC4KKy8vIEZvbyRpIGRvZXMgYmxhaCBmb3IgJGktYXJ5IHByZWRpY2F0ZXMuCiskcmFuZ2UgaiAx
Li5pCit0ZW1wbGF0ZSA8c2l6ZV90IE4gJGZvciBqIFtbLCB0eXBlbmFtZSBBJGpdXT4KK2NsYXNz
IEZvbyRpIHsKKyRpZiBpID09IDAgW1sKKyAgYmxhaCBhOworXV0gJGVsaWYgaSA8PSAyIFtbCisg
IGJsYWggYjsKK11dICRlbHNlIFtbCisgIGJsYWggYzsKK11dCit9OworCitdXQorYGBgCisKK3dp
bGwgYmUgdHJhbnNsYXRlZCBieSB0aGUgUHVtcCBjb21waWxlciB0bzoKKworYGBgCisvLyBGb28w
IGRvZXMgYmxhaCBmb3IgMC1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTj4KK2Ns
YXNzIEZvbzAgeworICBibGFoIGE7Cit9OworCisvLyBGb28xIGRvZXMgYmxhaCBmb3IgMS1hcnkg
cHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTE+CitjbGFzcyBGb28x
IHsKKyAgYmxhaCBiOworfTsKKworLy8gRm9vMiBkb2VzIGJsYWggZm9yIDItYXJ5IHByZWRpY2F0
ZXMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KK2NsYXNz
IEZvbzIgeworICBibGFoIGI7Cit9OworCisvLyBGb28zIGRvZXMgYmxhaCBmb3IgMy1hcnkgcHJl
ZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0
eXBlbmFtZSBBMz4KK2NsYXNzIEZvbzMgeworICBibGFoIGM7Cit9OworYGBgCisKK0luIGFub3Ro
ZXIgZXhhbXBsZSwKKworYGBgCiskcmFuZ2UgaSAxLi5uCitGdW5jKCRmb3IgaSArIFtbYSRpXV0p
OworJCQgVGhlIHRleHQgYmV0d2VlbiBpIGFuZCBbWyBpcyB0aGUgc2VwYXJhdG9yIGJldHdlZW4g
aXRlcmF0aW9ucy4KK2BgYAorCit3aWxsIGdlbmVyYXRlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGxp
bmVzICh3aXRob3V0IHRoZSBjb21tZW50cyksIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgYG5g
OgorCitgYGAKK0Z1bmMoKTsgICAgICAgICAgICAgIC8vIElmIG4gaXMgMC4KK0Z1bmMoYTEpOyAg
ICAgICAgICAgIC8vIElmIG4gaXMgMS4KK0Z1bmMoYTEgKyBhMik7ICAgICAgIC8vIElmIG4gaXMg
Mi4KK0Z1bmMoYTEgKyBhMiArIGEzKTsgIC8vIElmIG4gaXMgMy4KKy8vIEFuZCBzbyBvbi4uLgor
YGBgCisKKyMjIENvbnN0cnVjdHMgIyMKKworV2Ugc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGEg
cHJvZ3JhbW1pbmcgY29uc3RydWN0czoKKworfCBgJHZhciBpZCA9IGV4cGAgfCBEZWZpbmVzIGEg
bmFtZWQgY29uc3RhbnQgdmFsdWUuIGAkaWRgIGlzIHZhbGlkIHV0aWwgdGhlIGVuZCBvZiB0aGUg
Y3VycmVudCBtZXRhIGxleGljYWwgYmxvY2suIHwKK3w6LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGAkcmFuZ2UgaWQgZXhwLi5leHBg
IHwgU2V0cyB0aGUgcmFuZ2Ugb2YgYW4gaXRlcmF0aW9uIHZhcmlhYmxlLCB3aGljaCBjYW4gYmUg
cmV1c2VkIGluIG11bHRpcGxlIGxvb3BzIGxhdGVyLiAgICAgICAgICB8Cit8IGAkZm9yIGlkIHNl
cCBbWyBjb2RlIF1dYCB8IEl0ZXJhdGlvbi4gVGhlIHJhbmdlIG9mIGBpZGAgbXVzdCBoYXZlIGJl
ZW4gZGVmaW5lZCBlYXJsaWVyLiBgJGlkYCBpcyB2YWxpZCBpbiBgY29kZWAuICAgICAgICAgfAor
fCBgJCgkKWAgICAgICAgICAgfCBHZW5lcmF0ZXMgYSBzaW5nbGUgYCRgIGNoYXJhY3Rlci4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKK3wgYCRpZGAgICAgICAgICAgIHwgVmFsdWUgb2YgdGhlIG5hbWVkIGNvbnN0YW50IG9yIGl0
ZXJhdGlvbiB2YXJpYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8Cit8IGAkKGV4cClgICAgICAgICB8IFZhbHVlIG9mIHRoZSBleHByZXNzaW9uLiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorfCBgJGlmIGV4cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNoYCB8IENvbmRpdGlv
bmFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgW1sgY29kZSBdXWAgICAgfCBNZXRh
IGxleGljYWwgYmxvY2suICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYGNwcF9jb2RlYCAgICAgIHwg
UmF3IEMrKyBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGAkJCBjb21tZW50YCAg
ICB8IE1ldGEgY29tbWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCisqKk5vdGU6Kiog
VG8gZ2l2ZSB0aGUgdXNlciBzb21lIGZyZWVkb20gaW4gZm9ybWF0dGluZyB0aGUgUHVtcCBzb3Vy
Y2UKK2NvZGUsIFB1bXAgaWdub3JlcyBhIG5ldy1saW5lIGNoYXJhY3RlciBpZiBpdCdzIHJpZ2h0
IGFmdGVyIGAkZm9yIGZvb2AKK29yIG5leHQgdG8gYFtbYCBvciBgXV1gLiBXaXRob3V0IHRoaXMg
cnVsZSB5b3UnbGwgb2Z0ZW4gYmUgZm9yY2VkIHRvIHdyaXRlCit2ZXJ5IGxvbmcgbGluZXMgdG8g
Z2V0IHRoZSBkZXNpcmVkIG91dHB1dC4gVGhlcmVmb3JlIHNvbWV0aW1lcyB5b3UgbWF5CituZWVk
IHRvIGluc2VydCBhbiBleHRyYSBuZXctbGluZSBpbiBzdWNoIHBsYWNlcyBmb3IgYSBuZXctbGlu
ZSB0byBzaG93Cit1cCBpbiB5b3VyIG91dHB1dC4KKworIyMgR3JhbW1hciAjIworCitgYGAKK2Nv
ZGUgOjo9IGF0b21pY19jb2RlKgorYXRvbWljX2NvZGUgOjo9ICR2YXIgaWQgPSBleHAKKyAgICB8
ICR2YXIgaWQgPSBbWyBjb2RlIF1dCisgICAgfCAkcmFuZ2UgaWQgZXhwLi5leHAKKyAgICB8ICRm
b3IgaWQgc2VwIFtbIGNvZGUgXV0KKyAgICB8ICQoJCkKKyAgICB8ICRpZAorICAgIHwgJChleHAp
CisgICAgfCAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2gKKyAgICB8IFtbIGNvZGUgXV0K
KyAgICB8IGNwcF9jb2RlCitzZXAgOjo9IGNwcF9jb2RlIHwgZW1wdHlfc3RyaW5nCitlbHNlX2Jy
YW5jaCA6Oj0gJGVsc2UgW1sgY29kZSBdXQorICAgIHwgJGVsaWYgZXhwIFtbIGNvZGUgXV0gZWxz
ZV9icmFuY2gKKyAgICB8IGVtcHR5X3N0cmluZworZXhwIDo6PSBzaW1wbGVfZXhwcmVzc2lvbl9p
bl9QeXRob25fc3ludGF4CitgYGAKKworIyMgQ29kZSAjIworCitZb3UgY2FuIGZpbmQgdGhlIHNv
dXJjZSBjb2RlIG9mIFB1bXAgaW4gW3NjcmlwdHMvcHVtcC5weV0oLi4vc2NyaXB0cy9wdW1wLnB5
KS4gSXQgaXMgc3RpbGwKK3ZlcnkgdW5wb2xpc2hlZCBhbmQgbGFja3MgYXV0b21hdGVkIHRlc3Rz
LCBhbHRob3VnaCBpdCBoYXMgYmVlbgorc3VjY2Vzc2Z1bGx5IHVzZWQgbWFueSB0aW1lcy4gSWYg
eW91IGZpbmQgYSBjaGFuY2UgdG8gdXNlIGl0IGluIHlvdXIKK3Byb2plY3QsIHBsZWFzZSBsZXQg
dXMga25vdyB3aGF0IHlvdSB0aGluayEgIFdlIGFsc28gd2VsY29tZSBoZWxwIG9uCitpbXByb3Zp
bmcgUHVtcC4KKworIyMgUmVhbCBFeGFtcGxlcyAjIworCitZb3UgY2FuIGZpbmQgcmVhbC13b3Js
ZCBhcHBsaWNhdGlvbnMgb2YgUHVtcCBpbiBbR29vZ2xlIFRlc3RdKGh0dHBzOi8vZ2l0aHViLmNv
bS9nb29nbGUvZ29vZ2xldGVzdC90cmVlL21hc3Rlci9nb29nbGV0ZXN0KSBhbmQgW0dvb2dsZSBN
b2NrXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvdHJlZS9tYXN0ZXIvZ29v
Z2xlbW9jaykuIFRoZSBzb3VyY2UgZmlsZSBgZm9vLmgucHVtcGAgZ2VuZXJhdGVzIGBmb28uaGAu
CisKKyMjIFRpcHMgIyMKKworICAqIElmIGEgbWV0YSB2YXJpYWJsZSBpcyBmb2xsb3dlZCBieSBh
IGxldHRlciBvciBkaWdpdCwgeW91IGNhbiBzZXBhcmF0ZSB0aGVtIHVzaW5nIGBbW11dYCwgd2hp
Y2ggaW5zZXJ0cyBhbiBlbXB0eSBzdHJpbmcuIEZvciBleGFtcGxlIGBGb28kaltbXV1IZWxwZXJg
IGdlbmVyYXRlIGBGb28xSGVscGVyYCB3aGVuIGBqYCBpcyAxLgorICAqIFRvIGF2b2lkIGV4dHJh
LWxvbmcgUHVtcCBzb3VyY2UgbGluZXMsIHlvdSBjYW4gYnJlYWsgYSBsaW5lIGFueXdoZXJlIHlv
dSB3YW50IGJ5IGluc2VydGluZyBgW1tdXWAgZm9sbG93ZWQgYnkgYSBuZXcgbGluZS4gU2luY2Ug
YW55IG5ldy1saW5lIGNoYXJhY3RlciBuZXh0IHRvIGBbW2Agb3IgYF1dYCBpcyBpZ25vcmVkLCB0
aGUgZ2VuZXJhdGVkIGNvZGUgd29uJ3QgY29udGFpbiB0aGlzIG5ldyBsaW5lLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9YY29kZUd1aWRlLm1kIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvZG9jcy9YY29kZUd1aWRlLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjNjBhMzNkYWQ0
M2JhZjk4MzgxZjdjOWYyMGY2OWI1NThiMmFhZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1hjb2RlR3VpZGUubWQKQEAgLTAsMCArMSw5MyBAQAorCisK
K1RoaXMgZ3VpZGUgd2lsbCBleHBsYWluIGhvdyB0byB1c2UgdGhlIEdvb2dsZSBUZXN0aW5nIEZy
YW1ld29yayBpbiB5b3VyIFhjb2RlIHByb2plY3RzIG9uIE1hYyBPUyBYLiBUaGlzIHR1dG9yaWFs
IGJlZ2lucyBieSBxdWlja2x5IGV4cGxhaW5pbmcgd2hhdCB0byBkbyBmb3IgZXhwZXJpZW5jZWQg
dXNlcnMuIEFmdGVyIHRoZSBxdWljayBzdGFydCwgdGhlIGd1aWRlIGdvZXMgcHJvdmlkZXMgYWRk
aXRpb25hbCBleHBsYW5hdGlvbiBhYm91dCBlYWNoIHN0ZXAuCisKKyMgUXVpY2sgU3RhcnQgIwor
CitIZXJlIGlzIHRoZSBxdWljayBndWlkZSBmb3IgdXNpbmcgR29vZ2xlIFRlc3QgaW4geW91ciBY
Y29kZSBwcm9qZWN0LgorCisgIDEuIERvd25sb2FkIHRoZSBzb3VyY2UgZnJvbSB0aGUgW3dlYnNp
dGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdCkgdXNpbmcgdGhpcyBjb21t
YW5kOiBgc3ZuIGNoZWNrb3V0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90
cnVuay8gZ29vZ2xldGVzdC1yZWFkLW9ubHlgLgorICAxLiBPcGVuIHVwIHRoZSBgZ3Rlc3QueGNv
ZGVwcm9qYCBpbiB0aGUgYGdvb2dsZXRlc3QtcmVhZC1vbmx5L3hjb2RlL2AgZGlyZWN0b3J5IGFu
ZCBidWlsZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrLgorICAxLiBDcmVhdGUgYSBuZXcgIlNoZWxsIFRv
b2wiIHRhcmdldCBpbiB5b3VyIFhjb2RlIHByb2plY3QgY2FsbGVkIHNvbWV0aGluZyBsaWtlICJV
bml0VGVzdHMiLgorICAxLiBBZGQgdGhlIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyIHByb2plY3Qg
YW5kIGFkZCBpdCB0byB0aGUgIkxpbmsgQmluYXJ5IHdpdGggTGlicmFyaWVzIiBidWlsZCBwaGFz
ZSBvZiAiVW5pdFRlc3RzIi4KKyAgMS4gQWRkIHlvdXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRv
IHRoZSAiQ29tcGlsZSBTb3VyY2VzIiBidWlsZCBwaGFzZSBvZiAiVW5pdFRlc3RzIi4KKyAgMS4g
RWRpdCB0aGUgIlVuaXRUZXN0cyIgZXhlY3V0YWJsZSBhbmQgYWRkIGFuIGVudmlyb25tZW50IHZh
cmlhYmxlIG5hbWVkICJEWUxEXF9GUkFNRVdPUktcX1BBVEgiIHdpdGggYSB2YWx1ZSBlcXVhbCB0
byB0aGUgcGF0aCB0byB0aGUgZnJhbWV3b3JrIGNvbnRhaW5pbmcgdGhlIGd0ZXN0LmZyYW1ld29y
ayByZWxhdGl2ZSB0byB0aGUgY29tcGlsZWQgZXhlY3V0YWJsZS4KKyAgMS4gQnVpbGQgYW5kIEdv
LgorCitUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGZ1cnRoZXIgZXhwbGFpbiBlYWNoIG9mIHRoZSBz
dGVwcyBsaXN0ZWQgYWJvdmUgaW4gZGVwdGgsIGRlc2NyaWJpbmcgaW4gbW9yZSBkZXRhaWwgaG93
IHRvIGNvbXBsZXRlIGl0IGluY2x1ZGluZyBzb21lIHZhcmlhdGlvbnMuCisKKyMgR2V0IHRoZSBT
b3VyY2UgIworCitDdXJyZW50bHksIHRoZSBndGVzdC5mcmFtZXdvcmsgZGlzY3Vzc2VkIGhlcmUg
aXNuJ3QgYXZhaWxhYmxlIGluIGEgdGFnZ2VkIHJlbGVhc2Ugb2YgR29vZ2xlIFRlc3QsIGl0IGlz
IG9ubHkgYXZhaWxhYmxlIGluIHRoZSB0cnVuay4gQXMgZXhwbGFpbmVkIGF0IHRoZSBHb29nbGUg
VGVzdCBbc2l0ZV0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0KSwgeW91IGNh
biBnZXQgdGhlIGNvZGUgZnJvbSBhbm9ueW1vdXMgU1ZOIHdpdGggdGhpcyBjb21tYW5kOgorCitg
YGAKK3N2biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1
bmsvIGdvb2dsZXRlc3QtcmVhZC1vbmx5CitgYGAKKworQWx0ZXJuYXRpdmVseSwgaWYgeW91IGFy
ZSB3b3JraW5nIHdpdGggU3VidmVyc2lvbiBpbiB5b3VyIG93biBjb2RlIGJhc2UsIHlvdSBjYW4g
YWRkIEdvb2dsZSBUZXN0IGFzIGFuIGV4dGVybmFsIGRlcGVuZGVuY3kgdG8geW91ciBvd24gU3Vi
dmVyc2lvbiByZXBvc2l0b3J5LiBCeSBmb2xsb3dpbmcgdGhpcyBhcHByb2FjaCwgZXZlcnlvbmUg
dGhhdCBjaGVja3Mgb3V0IHlvdXIgc3ZuIHJlcG9zaXRvcnkgd2lsbCBhbHNvIHJlY2VpdmUgYSBj
b3B5IG9mIEdvb2dsZSBUZXN0IChhIHNwZWNpZmljIHZlcnNpb24sIGlmIHlvdSB3aXNoKSB3aXRo
b3V0IGhhdmluZyB0byBjaGVjayBpdCBvdXQgZXhwbGljaXRseS4gVGhpcyBtYWtlcyB0aGUgc2V0
IHVwIG9mIHlvdXIgcHJvamVjdCBzaW1wbGVyIGFuZCByZWR1Y2VzIHRoZSBjb3BpZWQgY29kZSBp
biB0aGUgcmVwb3NpdG9yeS4KKworVG8gdXNlIGBzdm46ZXh0ZXJuYWxzYCwgZGVjaWRlIHdoZXJl
IHlvdSB3b3VsZCBsaWtlIHRvIGhhdmUgdGhlIGV4dGVybmFsIHNvdXJjZSByZXNpZGUuIFlvdSBt
aWdodCBjaG9vc2UgdG8gcHV0IHRoZSBleHRlcm5hbCBzb3VyY2UgaW5zaWRlIHRoZSB0cnVuaywg
YmVjYXVzZSB5b3Ugd2FudCBpdCB0byBiZSBwYXJ0IG9mIHRoZSBicmFuY2ggd2hlbiB5b3UgbWFr
ZSBhIHJlbGVhc2UuIEhvd2V2ZXIsIGtlZXBpbmcgaXQgb3V0c2lkZSB0aGUgdHJ1bmsgaW4gYSB2
ZXJzaW9uLXRhZ2dlZCBkaXJlY3RvcnkgY2FsbGVkIHNvbWV0aGluZyBsaWtlIGB0aGlyZC1wYXJ0
eS9nb29nbGV0ZXN0LzEuMC4xYCwgaXMgYW5vdGhlciBvcHRpb24uIE9uY2UgdGhlIGxvY2F0aW9u
IGlzIGVzdGFibGlzaGVkLCB1c2UgYHN2biBwcm9wZWRpdCBzdm46ZXh0ZXJuYWxzIF9kaXJlY3Rv
cnlfYCB0byBzZXQgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgb24gYSBkaXJlY3RvcnkgaW4g
eW91ciByZXBvc2l0b3J5LiBUaGlzIGRpcmVjdG9yeSB3b24ndCBjb250YWluIHRoZSBjb2RlLCBi
dXQgYmUgaXRzIHZlcnNpb25lZCBwYXJlbnQgZGlyZWN0b3J5LgorCitUaGUgY29tbWFuZCBgc3Zu
IHByb3BlZGl0YCB3aWxsIGJyaW5nIHVwIHlvdXIgU3VidmVyc2lvbiBlZGl0b3IsIG1ha2luZyBl
ZGl0aW5nIHRoZSBsb25nLCAocG90ZW50aWFsbHkgbXVsdGktbGluZSkgcHJvcGVydHkgc2ltcGxl
ci4gVGhpcyBzYW1lIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjaGVjayBvdXQgYSB0YWdnZWQgYnJh
bmNoLCBieSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgVVJMIChlLmcuIGBodHRwczovL2dpdGh1Yi5j
b20vZ29vZ2xlL2dvb2dsZXRlc3QvcmVsZWFzZXMvdGFnL3JlbGVhc2UtMS4wLjFgKS4gQWRkaXRp
b25hbGx5LCB0aGUgc3ZuOmV4dGVybmFscyBwcm9wZXJ0eSBhbGxvd3MgdGhlIHNwZWNpZmljYXRp
b24gb2YgYSBwYXJ0aWN1bGFyIHJldmlzaW9uIG9mIHRoZSB0cnVuayB3aXRoIHRoZSBgLXJfIyNf
YCBvcHRpb24gKGUuZy4gYGV4dGVybmFscy9zcmMvZ29vZ2xldGVzdCAtcjYwIGh0dHA6Ly9nb29n
bGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVua2ApLgorCitIZXJlIGlzIGFuIGV4YW1wbGUg
b2YgdXNpbmcgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydGllcyBvbiBhIHRydW5rIChyZWFkIHZp
YSBgc3ZuIHByb3BnZXRgKSBvZiBhIHByb2plY3QuIFRoaXMgdmFsdWUgY2hlY2tzIG91dCBhIGNv
cHkgb2YgR29vZ2xlIFRlc3QgaW50byB0aGUgYHRydW5rL2V4dGVybmFscy9zcmMvZ29vZ2xldGVz
dC9gIGRpcmVjdG9yeS4KKworYGBgCitbQ29tcHV0ZXI6c3ZuXSB1c2VyJCBzdm4gcHJvcGdldCBz
dm46ZXh0ZXJuYWxzIHRydW5rCitleHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QgaHR0cDovL2dvb2ds
ZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rCitgYGAKKworIyBBZGQgdGhlIEZyYW1ld29y
ayB0byBZb3VyIFByb2plY3QgIworCitUaGUgbmV4dCBzdGVwIGlzIHRvIGJ1aWxkIGFuZCBhZGQg
dGhlIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyIG93biBwcm9qZWN0LiBUaGlzIGd1aWRlIGRlc2Ny
aWJlcyB0d28gY29tbW9uIHdheXMgYmVsb3cuCisKKyAgKiAqKk9wdGlvbiAxKiogLS0tIFRoZSBz
aW1wbGVzdCB3YXkgdG8gYWRkIEdvb2dsZSBUZXN0IHRvIHlvdXIgb3duIHByb2plY3QsIGlzIHRv
IG9wZW4gZ3Rlc3QueGNvZGVwcm9qIChmb3VuZCBpbiB0aGUgeGNvZGUvIGRpcmVjdG9yeSBvZiB0
aGUgR29vZ2xlIFRlc3QgdHJ1bmspIGFuZCBidWlsZCB0aGUgZnJhbWV3b3JrIG1hbnVhbGx5LiBU
aGVuLCBhZGQgdGhlIGJ1aWx0IGZyYW1ld29yayBpbnRvIHlvdXIgcHJvamVjdCB1c2luZyB0aGUg
IkFkZC0+RXhpc3RpbmcgRnJhbWV3b3JrLi4uIiBmcm9tIHRoZSBjb250ZXh0IG1lbnUgb3IgIlBy
b2plY3QtPkFkZC4uLiIgZnJvbSB0aGUgbWFpbiBtZW51LiBUaGUgZ3Rlc3QuZnJhbWV3b3JrIGlz
IHJlbG9jYXRhYmxlIGFuZCBjb250YWlucyB0aGUgaGVhZGVycyBhbmQgb2JqZWN0IGNvZGUgdGhh
dCB5b3UnbGwgbmVlZCB0byBtYWtlIHRlc3RzLiBUaGlzIG1ldGhvZCByZXF1aXJlcyByZWJ1aWxk
aW5nIGV2ZXJ5IHRpbWUgeW91IHVwZ3JhZGUgR29vZ2xlIFRlc3QgaW4geW91ciBwcm9qZWN0Lgor
ICAqICoqT3B0aW9uIDIqKiAtLS0gSWYgeW91IGFyZSBnb2luZyB0byBiZSBsaXZpbmcgb2ZmIHRo
ZSB0cnVuayBvZiBHb29nbGUgVGVzdCwgaW5jb3Jwb3JhdGluZyBpdHMgbGF0ZXN0IGZlYXR1cmVz
IGludG8geW91ciB1bml0IHRlc3RzIChvciBhcmUgYSBHb29nbGUgVGVzdCBkZXZlbG9wZXIgeW91
cnNlbGYpLiBZb3UnbGwgd2FudCB0byByZWJ1aWxkIHRoZSBmcmFtZXdvcmsgZXZlcnkgdGltZSB0
aGUgc291cmNlIHVwZGF0ZXMuIHRvIGRvIHRoaXMsIHlvdSdsbCBuZWVkIHRvIGFkZCB0aGUgZ3Rl
c3QueGNvZGVwcm9qIGZpbGUsIG5vdCB0aGUgZnJhbWV3b3JrIGl0c2VsZiwgdG8geW91ciBvd24g
WGNvZGUgcHJvamVjdC4gVGhlbiwgZnJvbSB0aGUgYnVpbGQgcHJvZHVjdHMgdGhhdCBhcmUgcmV2
ZWFsZWQgYnkgdGhlIHByb2plY3QncyBkaXNjbG9zdXJlIHRyaWFuZ2xlLCB5b3UgY2FuIGZpbmQg
dGhlIGd0ZXN0LmZyYW1ld29yaywgd2hpY2ggY2FuIGJlIGFkZGVkIHRvIHlvdXIgdGFyZ2V0cyAo
ZGlzY3Vzc2VkIGJlbG93KS4KKworIyBNYWtlIGEgVGVzdCBUYXJnZXQgIworCitUbyBzdGFydCB3
cml0aW5nIHRlc3RzLCBtYWtlIGEgbmV3ICJTaGVsbCBUb29sIiB0YXJnZXQuIFRoaXMgdGFyZ2V0
IHRlbXBsYXRlIGlzIGF2YWlsYWJsZSB1bmRlciBCU0QsIENvY29hLCBvciBDYXJib24uIEFkZCB5
b3VyIHVuaXQgdGVzdCBzb3VyY2UgY29kZSB0byB0aGUgIkNvbXBpbGUgU291cmNlcyIgYnVpbGQg
cGhhc2Ugb2YgdGhlIHRhcmdldC4KKworTmV4dCwgeW91J2xsIHdhbnQgdG8gYWRkIGd0ZXN0LmZy
YW1ld29yayBpbiB0d28gZGlmZmVyZW50IHdheXMsIGRlcGVuZGluZyB1cG9uIHdoaWNoIG9wdGlv
biB5b3UgY2hvc2UgYWJvdmUuCisKKyAgKiAqKk9wdGlvbiAxKiogLS0tIER1cmluZyBjb21waWxh
dGlvbiwgWGNvZGUgd2lsbCBuZWVkIHRvIGtub3cgdGhhdCB5b3UgYXJlIGxpbmtpbmcgYWdhaW5z
dCB0aGUgZ3Rlc3QuZnJhbWV3b3JrLiBBZGQgdGhlIGd0ZXN0LmZyYW1ld29yayB0byB0aGUgIkxp
bmsgQmluYXJ5IHdpdGggTGlicmFyaWVzIiBidWlsZCBwaGFzZSBvZiB5b3VyIHRlc3QgdGFyZ2V0
LiBUaGlzIHdpbGwgaW5jbHVkZSB0aGUgR29vZ2xlIFRlc3QgaGVhZGVycyBpbiB5b3VyIGhlYWRl
ciBzZWFyY2ggcGF0aCwgYW5kIHdpbGwgdGVsbCB0aGUgbGlua2VyIHdoZXJlIHRvIGZpbmQgdGhl
IGxpYnJhcnkuCisgICogKipPcHRpb24gMioqIC0tLSBJZiB5b3VyIHdvcmtpbmcgb3V0IG9mIHRo
ZSB0cnVuaywgeW91J2xsIGFsc28gd2FudCB0byBhZGQgZ3Rlc3QuZnJhbWV3b3JrIHRvIHlvdXIg
IkxpbmsgQmluYXJ5IHdpdGggTGlicmFyaWVzIiBidWlsZCBwaGFzZSBvZiB5b3VyIHRlc3QgdGFy
Z2V0LiBJbiBhZGRpdGlvbiwgeW91J2xsICB3YW50IHRvIGFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3Jr
IGFzIGEgZGVwZW5kZW5jeSB0byB5b3VyIHVuaXQgdGVzdCB0YXJnZXQuIFRoaXMgd2F5LCBYY29k
ZSB3aWxsIG1ha2Ugc3VyZSB0aGF0IGd0ZXN0LmZyYW1ld29yayBpcyB1cCB0byBkYXRlLCBldmVy
eSB0aW1lIHlvdXIgYnVpbGQgeW91ciB0YXJnZXQuIEZpbmFsbHksIGlmIHlvdSBkb24ndCBzaGFy
ZSBidWlsZCBkaXJlY3RvcmllcyB3aXRoIEdvb2dsZSBUZXN0LCB5b3UnbGwgaGF2ZSB0byBjb3B5
IHRoZSBndGVzdC5mcmFtZXdvcmsgaW50byB5b3VyIG93biBidWlsZCBwcm9kdWN0cyBkaXJlY3Rv
cnkgdXNpbmcgYSAiUnVuIFNjcmlwdCIgYnVpbGQgcGhhc2UuCisKKyMgU2V0IFVwIHRoZSBFeGVj
dXRhYmxlIFJ1biBFbnZpcm9ubWVudCAjCisKK1NpbmNlIHRoZSB1bml0IHRlc3QgZXhlY3V0YWJs
ZSBpcyBhIHNoZWxsIHRvb2wsIGl0IGRvZXNuJ3QgaGF2ZSBhIGJ1bmRsZSB3aXRoIGEgYENvbnRl
bnRzL0ZyYW1ld29ya3NgIGRpcmVjdG9yeSwgaW4gd2hpY2ggdG8gcGxhY2UgZ3Rlc3QuZnJhbWV3
b3JrLiBJbnN0ZWFkLCB0aGUgZHluYW1pYyBsaW5rZXIgbXVzdCBiZSB0b2xkIGF0IHJ1bnRpbWUg
dG8gc2VhcmNoIGZvciB0aGUgZnJhbWV3b3JrIGluIGFub3RoZXIgbG9jYXRpb24uIFRoaXMgY2Fu
IGJlIGFjY29tcGxpc2hlZCBieSBzZXR0aW5nIHRoZSAiRFlMRFxfRlJBTUVXT1JLXF9QQVRIIiBl
bnZpcm9ubWVudCB2YXJpYWJsZSBpbiB0aGUgIkVkaXQgQWN0aXZlIEV4ZWN1dGFibGUgLi4uIiBB
cmd1bWVudHMgdGFiLCB1bmRlciAiVmFyaWFibGVzIHRvIGJlIHNldCBpbiB0aGUgZW52aXJvbm1l
bnQ6Ii4gVGhlIHBhdGggZm9yIHRoaXMgdmFsdWUgaXMgdGhlIHBhdGggKHJlbGF0aXZlIG9yIGFi
c29sdXRlKSBvZiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGd0ZXN0LmZyYW1ld29yay4K
KworSWYgeW91IGhhdmVuJ3Qgc2V0IHVwIHRoZSBEWUxEXF9GUkFNRVdPUktcX1BBVEgsIGNvcnJl
Y3RseSwgeW91IG1pZ2h0IGdldCBhIG1lc3NhZ2UgbGlrZSB0aGlzOgorCitgYGAKK1tTZXNzaW9u
IHN0YXJ0ZWQgYXQgMjAwOC0wOC0xNSAwNjoyMzo1NyAtMDYwMC5dCisgIGR5bGQ6IExpYnJhcnkg
bm90IGxvYWRlZDogQGxvYWRlcl9wYXRoLy4uL0ZyYW1ld29ya3MvZ3Rlc3QuZnJhbWV3b3JrL1Zl
cnNpb25zL0EvZ3Rlc3QKKyAgICBSZWZlcmVuY2VkIGZyb206IC9Vc2Vycy91c2VybmFtZS9Eb2N1
bWVudHMvU2FuZGJveC9ndGVzdFNhbXBsZS9idWlsZC9EZWJ1Zy9XaWRnZXRGcmFtZXdvcmtUZXN0
CisgICAgUmVhc29uOiBpbWFnZSBub3QgZm91bmQKK2BgYAorCitUbyBjb3JyZWN0IHRoaXMgcHJv
YmxlbSwgZ28gdG8gdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBleGVjdXRhYmxlIG5h
bWVkIGluICJSZWZlcmVuY2VkIGZyb206IiB2YWx1ZSBpbiB0aGUgZXJyb3IgbWVzc2FnZSBhYm92
ZS4gVGhlbiwgd2l0aCB0aGUgdGVybWluYWwgaW4gdGhpcyBsb2NhdGlvbiwgZmluZCB0aGUgcmVs
YXRpdmUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGd0ZXN0LmZyYW1ld29y
ay4gVGhhdCBpcyB0aGUgdmFsdWUgeW91J2xsIG5lZWQgdG8gc2V0IGFzIHRoZSBEWUxEXF9GUkFN
RVdPUktcX1BBVEguCisKKyMgQnVpbGQgYW5kIEdvICMKKworTm93LCB3aGVuIHlvdSBjbGljayAi
QnVpbGQgYW5kIEdvIiwgdGhlIHRlc3Qgd2lsbCBiZSBleGVjdXRlZC4gRHVtcGluZyBvdXQgc29t
ZXRoaW5nIGxpa2UgdGhpczoKKworYGBgCitbU2Vzc2lvbiBzdGFydGVkIGF0IDIwMDgtMDgtMDYg
MDY6MzY6MTMgLTA2MDAuXQorWz09PT09PT09PT1dIFJ1bm5pbmcgMiB0ZXN0cyBmcm9tIDEgdGVz
dCBjYXNlLgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KK1st
LS0tLS0tLS0tXSAyIHRlc3RzIGZyb20gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0CitbIFJVTiAgICAg
IF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb25zdHJ1Y3RvcgorWyAgICAgICBPSyBdIFdp
ZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29uc3RydWN0b3IKK1sgUlVOICAgICAgXSBXaWRnZXRJ
bml0aWFsaXplclRlc3QuVGVzdENvbnZlcnNpb24KK1sgICAgICAgT0sgXSBXaWRnZXRJbml0aWFs
aXplclRlc3QuVGVzdENvbnZlcnNpb24KK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9u
bWVudCB0ZWFyLWRvd24KK1s9PT09PT09PT09XSAyIHRlc3RzIGZyb20gMSB0ZXN0IGNhc2UgcmFu
LgorWyAgUEFTU0VEICBdIDIgdGVzdHMuCisKK1RoZSBEZWJ1Z2dlciBoYXMgZXhpdGVkIHdpdGgg
c3RhdHVzIDAuICAKK2BgYAorCisjIFN1bW1hcnkgIworCitVbml0IHRlc3RpbmcgaXMgYSB2YWx1
YWJsZSB3YXkgdG8gZW5zdXJlIHlvdXIgZGF0YSBtb2RlbCBzdGF5cyB2YWxpZCBldmVuIGR1cmlu
ZyByYXBpZCBkZXZlbG9wbWVudCBvciByZWZhY3RvcmluZy4gVGhlIEdvb2dsZSBUZXN0aW5nIEZy
YW1ld29yayBpcyBhIGdyZWF0IHVuaXQgdGVzdGluZyBmcmFtZXdvcmsgZm9yIEMgYW5kIEMrKyB3
aGljaCBpbnRlZ3JhdGVzIHdlbGwgd2l0aCBhbiBYY29kZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVu
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvYWR2YW5jZWQubWQg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL2FkdmFuY2VkLm1kCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgw
NjVkMTk2MjFhOGIzN2ZiNzhjYjVlMGVkMWI4NjE4ZmU3NjI1ZDIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL2FkdmFuY2VkLm1kCkBAIC0wLDAgKzEsMjUy
MCBAQAorIyBBZHZhbmNlZCBnb29nbGV0ZXN0IFRvcGljcworCisKKyMjIEludHJvZHVjdGlvbgor
CitOb3cgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBbZ29vZ2xldGVzdCBQcmltZXJdKHByaW1lci5t
ZCkgYW5kIGxlYXJuZWQgaG93IHRvIHdyaXRlCit0ZXN0cyB1c2luZyBnb29nbGV0ZXN0LCBpdCdz
IHRpbWUgdG8gbGVhcm4gc29tZSBuZXcgdHJpY2tzLiBUaGlzIGRvY3VtZW50IHdpbGwKK3Nob3cg
eW91IG1vcmUgYXNzZXJ0aW9ucyBhcyB3ZWxsIGFzIGhvdyB0byBjb25zdHJ1Y3QgY29tcGxleCBm
YWlsdXJlIG1lc3NhZ2VzLAorcHJvcGFnYXRlIGZhdGFsIGZhaWx1cmVzLCByZXVzZSBhbmQgc3Bl
ZWQgdXAgeW91ciB0ZXN0IGZpeHR1cmVzLCBhbmQgdXNlIHZhcmlvdXMKK2ZsYWdzIHdpdGggeW91
ciB0ZXN0cy4KKworIyMgTW9yZSBBc3NlcnRpb25zCisKK1RoaXMgc2VjdGlvbiBjb3ZlcnMgc29t
ZSBsZXNzIGZyZXF1ZW50bHkgdXNlZCwgYnV0IHN0aWxsIHNpZ25pZmljYW50LAorYXNzZXJ0aW9u
cy4KKworIyMjIEV4cGxpY2l0IFN1Y2Nlc3MgYW5kIEZhaWx1cmUKKworVGhlc2UgdGhyZWUgYXNz
ZXJ0aW9ucyBkbyBub3QgYWN0dWFsbHkgdGVzdCBhIHZhbHVlIG9yIGV4cHJlc3Npb24uIEluc3Rl
YWQsIHRoZXkKK2dlbmVyYXRlIGEgc3VjY2VzcyBvciBmYWlsdXJlIGRpcmVjdGx5LiBMaWtlIHRo
ZSBtYWNyb3MgdGhhdCBhY3R1YWxseSBwZXJmb3JtIGEKK3Rlc3QsIHlvdSBtYXkgc3RyZWFtIGEg
Y3VzdG9tIGZhaWx1cmUgbWVzc2FnZSBpbnRvIHRoZW0uCisKK2BgYGMrKworU1VDQ0VFRCgpOwor
YGBgCisKK0dlbmVyYXRlcyBhIHN1Y2Nlc3MuIFRoaXMgZG9lcyAqKk5PVCoqIG1ha2UgdGhlIG92
ZXJhbGwgdGVzdCBzdWNjZWVkLiBBIHRlc3QgaXMKK2NvbnNpZGVyZWQgc3VjY2Vzc2Z1bCBvbmx5
IGlmIG5vbmUgb2YgaXRzIGFzc2VydGlvbnMgZmFpbCBkdXJpbmcgaXRzIGV4ZWN1dGlvbi4KKwor
Tk9URTogYFNVQ0NFRUQoKWAgaXMgcHVyZWx5IGRvY3VtZW50YXJ5IGFuZCBjdXJyZW50bHkgZG9l
c24ndCBnZW5lcmF0ZSBhbnkKK3VzZXItdmlzaWJsZSBvdXRwdXQuIEhvd2V2ZXIsIHdlIG1heSBh
ZGQgYFNVQ0NFRUQoKWAgbWVzc2FnZXMgdG8gZ29vZ2xldGVzdCdzCitvdXRwdXQgaW4gdGhlIGZ1
dHVyZS4KKworYGBgYysrCitGQUlMKCk7CitBRERfRkFJTFVSRSgpOworQUREX0ZBSUxVUkVfQVQo
ImZpbGVfcGF0aCIsIGxpbmVfbnVtYmVyKTsKK2BgYAorCitgRkFJTCgpYCBnZW5lcmF0ZXMgYSBm
YXRhbCBmYWlsdXJlLCB3aGlsZSBgQUREX0ZBSUxVUkUoKWAgYW5kIGBBRERfRkFJTFVSRV9BVCgp
YAorZ2VuZXJhdGUgYSBub25mYXRhbCBmYWlsdXJlLiBUaGVzZSBhcmUgdXNlZnVsIHdoZW4gY29u
dHJvbCBmbG93LCByYXRoZXIgdGhhbiBhCitCb29sZWFuIGV4cHJlc3Npb24sIGRldGVybWluZXMg
dGhlIHRlc3QncyBzdWNjZXNzIG9yIGZhaWx1cmUuIEZvciBleGFtcGxlLCB5b3UKK21pZ2h0IHdh
bnQgdG8gd3JpdGUgc29tZXRoaW5nIGxpa2U6CisKK2BgYGMrKworc3dpdGNoKGV4cHJlc3Npb24p
IHsKKyAgY2FzZSAxOgorICAgICAuLi4gc29tZSBjaGVja3MgLi4uCisgIGNhc2UgMjoKKyAgICAg
Li4uIHNvbWUgb3RoZXIgY2hlY2tzIC4uLgorICBkZWZhdWx0OgorICAgICBGQUlMKCkgPDwgIldl
IHNob3VsZG4ndCBnZXQgaGVyZS4iOworfQorYGBgCisKK05PVEU6IHlvdSBjYW4gb25seSB1c2Ug
YEZBSUwoKWAgaW4gZnVuY3Rpb25zIHRoYXQgcmV0dXJuIGB2b2lkYC4gU2VlIHRoZQorW0Fzc2Vy
dGlvbiBQbGFjZW1lbnQgc2VjdGlvbl0oI2Fzc2VydGlvbi1wbGFjZW1lbnQpIGZvciBtb3JlIGlu
Zm9ybWF0aW9uLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisj
IyMgRXhjZXB0aW9uIEFzc2VydGlvbnMKKworVGhlc2UgYXJlIGZvciB2ZXJpZnlpbmcgdGhhdCBh
IHBpZWNlIG9mIGNvZGUgdGhyb3dzIChvciBkb2VzIG5vdCB0aHJvdykgYW4KK2V4Y2VwdGlvbiBv
ZiB0aGUgZ2l2ZW4gdHlwZToKKworRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVy
aWZpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tCitgQVNTRVJU
X1RIUk9XKHN0YXRlbWVudCwgZXhjZXB0aW9uX3R5cGUpO2AgfCBgRVhQRUNUX1RIUk9XKHN0YXRl
bWVudCwgZXhjZXB0aW9uX3R5cGUpO2AgfCBgc3RhdGVtZW50YCB0aHJvd3MgYW4gZXhjZXB0aW9u
IG9mIHRoZSBnaXZlbiB0eXBlCitgQVNTRVJUX0FOWV9USFJPVyhzdGF0ZW1lbnQpO2AgICAgICAg
ICAgICAgfCBgRVhQRUNUX0FOWV9USFJPVyhzdGF0ZW1lbnQpO2AgICAgICAgICAgICAgfCBgc3Rh
dGVtZW50YCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIGFueSB0eXBlCitgQVNTRVJUX05PX1RIUk9X
KHN0YXRlbWVudCk7YCAgICAgICAgICAgICAgfCBgRVhQRUNUX05PX1RIUk9XKHN0YXRlbWVudCk7
YCAgICAgICAgICAgICAgfCBgc3RhdGVtZW50YCBkb2Vzbid0IHRocm93IGFueSBleGNlcHRpb24K
KworRXhhbXBsZXM6CisKK2BgYGMrKworQVNTRVJUX1RIUk9XKEZvbyg1KSwgYmFyX2V4Y2VwdGlv
bik7CisKK0VYUEVDVF9OT19USFJPVyh7CisgIGludCBuID0gNTsKKyAgQmFyKCZuKTsKK30pOwor
YGBgCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWM7IHJlcXVpcmVzIGV4
Y2VwdGlvbnMgdG8gYmUgZW5hYmxlZCBpbiB0aGUKK2J1aWxkIGVudmlyb25tZW50IChub3RlIHRo
YXQgYGdvb2dsZTNgICoqZGlzYWJsZXMqKiBleGNlcHRpb25zKS4KKworIyMjIFByZWRpY2F0ZSBB
c3NlcnRpb25zIGZvciBCZXR0ZXIgRXJyb3IgTWVzc2FnZXMKKworRXZlbiB0aG91Z2ggZ29vZ2xl
dGVzdCBoYXMgYSByaWNoIHNldCBvZiBhc3NlcnRpb25zLCB0aGV5IGNhbiBuZXZlciBiZSBjb21w
bGV0ZSwKK2FzIGl0J3MgaW1wb3NzaWJsZSAobm9yIGEgZ29vZCBpZGVhKSB0byBhbnRpY2lwYXRl
IGFsbCBzY2VuYXJpb3MgYSB1c2VyIG1pZ2h0CitydW4gaW50by4gVGhlcmVmb3JlLCBzb21ldGlt
ZXMgYSB1c2VyIGhhcyB0byB1c2UgYEVYUEVDVF9UUlVFKClgIHRvIGNoZWNrIGEKK2NvbXBsZXgg
ZXhwcmVzc2lvbiwgZm9yIGxhY2sgb2YgYSBiZXR0ZXIgbWFjcm8uIFRoaXMgaGFzIHRoZSBwcm9i
bGVtIG9mIG5vdAorc2hvd2luZyB5b3UgdGhlIHZhbHVlcyBvZiB0aGUgcGFydHMgb2YgdGhlIGV4
cHJlc3Npb24sIG1ha2luZyBpdCBoYXJkIHRvCit1bmRlcnN0YW5kIHdoYXQgd2VudCB3cm9uZy4g
QXMgYSB3b3JrYXJvdW5kLCBzb21lIHVzZXJzIGNob29zZSB0byBjb25zdHJ1Y3QgdGhlCitmYWls
dXJlIG1lc3NhZ2UgYnkgdGhlbXNlbHZlcywgc3RyZWFtaW5nIGl0IGludG8gYEVYUEVDVF9UUlVF
KClgLiBIb3dldmVyLCB0aGlzCitpcyBhd2t3YXJkIGVzcGVjaWFsbHkgd2hlbiB0aGUgZXhwcmVz
c2lvbiBoYXMgc2lkZS1lZmZlY3RzIG9yIGlzIGV4cGVuc2l2ZSB0bworZXZhbHVhdGUuCisKK2dv
b2dsZXRlc3QgZ2l2ZXMgeW91IHRocmVlIGRpZmZlcmVudCBvcHRpb25zIHRvIHNvbHZlIHRoaXMg
cHJvYmxlbToKKworIyMjIyBVc2luZyBhbiBFeGlzdGluZyBCb29sZWFuIEZ1bmN0aW9uCisKK0lm
IHlvdSBhbHJlYWR5IGhhdmUgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHRoYXQgcmV0dXJucyBgYm9v
bGAgKG9yIGEgdHlwZSB0aGF0CitjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYGJvb2xg
KSwgeW91IGNhbiB1c2UgaXQgaW4gYSAqcHJlZGljYXRlCithc3NlcnRpb24qIHRvIGdldCB0aGUg
ZnVuY3Rpb24gYXJndW1lbnRzIHByaW50ZWQgZm9yIGZyZWU6CisKK3wgRmF0YWwgYXNzZXJ0aW9u
ICAgICAgICAgICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAg
fCBWZXJpZmllcyAgICAgICAgICAgICAgICAgICAgfAorfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8Cit8IGBBU1NFUlRfUFJFRDEocHJlZDEsIHZhbDEpO2Ag
ICAgICAgfCBgRVhQRUNUX1BSRUQxKHByZWQxLCB2YWwxKTtgICAgICAgIHwgYHByZWQxKHZhbDEp
YCBpcyB0cnVlICAgICAgIHwKK3wgYEFTU0VSVF9QUkVEMihwcmVkMiwgdmFsMSwgdmFsMik7YCB8
IGBFWFBFQ1RfUFJFRDIocHJlZDIsIHZhbDEsIHZhbDIpO2AgfCBgcHJlZDIodmFsMSwgdmFsMilg
IGlzIHRydWUgfAorfCBgLi4uYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYC4uLmAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisKK0luIHRoZSBhYm92ZSwgYHByZWRuYCBpcyBhbiBgbmAtYXJ5IHByZWRpY2F0ZSBmdW5j
dGlvbiBvciBmdW5jdG9yLCB3aGVyZSBgdmFsMWAsCitgdmFsMmAsIC4uLiwgYW5kIGB2YWxuYCBh
cmUgaXRzIGFyZ3VtZW50cy4gVGhlIGFzc2VydGlvbiBzdWNjZWVkcyBpZiB0aGUKK3ByZWRpY2F0
ZSByZXR1cm5zIGB0cnVlYCB3aGVuIGFwcGxpZWQgdG8gdGhlIGdpdmVuIGFyZ3VtZW50cywgYW5k
IGZhaWxzCitvdGhlcndpc2UuIFdoZW4gdGhlIGFzc2VydGlvbiBmYWlscywgaXQgcHJpbnRzIHRo
ZSB2YWx1ZSBvZiBlYWNoIGFyZ3VtZW50LiBJbgorZWl0aGVyIGNhc2UsIHRoZSBhcmd1bWVudHMg
YXJlIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuCisKK0hlcmUncyBhbiBleGFtcGxlLiBHaXZlbgor
CitgYGBjKysKKy8vIFJldHVybnMgdHJ1ZSBpZiBtIGFuZCBuIGhhdmUgbm8gY29tbW9uIGRpdmlz
b3JzIGV4Y2VwdCAxLgorYm9vbCBNdXR1YWxseVByaW1lKGludCBtLCBpbnQgbikgeyAuLi4gfQor
Citjb25zdCBpbnQgYSA9IDM7Citjb25zdCBpbnQgYiA9IDQ7Citjb25zdCBpbnQgYyA9IDEwOwor
YGBgCisKK3RoZSBhc3NlcnRpb24KKworYGBgYysrCisgIEVYUEVDVF9QUkVEMihNdXR1YWxseVBy
aW1lLCBhLCBiKTsKK2BgYAorCit3aWxsIHN1Y2NlZWQsIHdoaWxlIHRoZSBhc3NlcnRpb24KKwor
YGBgYysrCisgIEVYUEVDVF9QUkVEMihNdXR1YWxseVByaW1lLCBiLCBjKTsKK2BgYAorCit3aWxs
IGZhaWwgd2l0aCB0aGUgbWVzc2FnZQorCitgYGBub25lCitNdXR1YWxseVByaW1lKGIsIGMpIGlz
IGZhbHNlLCB3aGVyZQorYiBpcyA0CitjIGlzIDEwCitgYGAKKworPiBOT1RFOgorPgorPiAxLiAg
SWYgeW91IHNlZSBhIGNvbXBpbGVyIGVycm9yICJubyBtYXRjaGluZyBmdW5jdGlvbiB0byBjYWxs
IiB3aGVuIHVzaW5nCis+ICAgICBgQVNTRVJUX1BSRUQqYCBvciBgRVhQRUNUX1BSRUQqYCwgcGxl
YXNlIHNlZQorPiAgICAgW3RoaXNdKGZhcS5tZCNPdmVybG9hZGVkUHJlZGljYXRlKSBmb3IgaG93
IHRvIHJlc29sdmUgaXQuCis+IDEuICBDdXJyZW50bHkgd2Ugb25seSBwcm92aWRlIHByZWRpY2F0
ZSBhc3NlcnRpb25zIG9mIGFyaXR5IDw9IDUuIElmIHlvdSBuZWVkCis+ICAgICBhIGhpZ2hlci1h
cml0eSBhc3NlcnRpb24sIGxldCBbdXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xl
dGVzdC9pc3N1ZXMpIGtub3cuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBN
YWMuCisKKyMjIyMgVXNpbmcgYSBGdW5jdGlvbiBUaGF0IFJldHVybnMgYW4gQXNzZXJ0aW9uUmVz
dWx0CisKK1doaWxlIGBFWFBFQ1RfUFJFRCooKWAgYW5kIGZyaWVuZHMgYXJlIGhhbmR5IGZvciBh
IHF1aWNrIGpvYiwgdGhlIHN5bnRheCBpcyBub3QKK3NhdGlzZmFjdG9yeTogeW91IGhhdmUgdG8g
dXNlIGRpZmZlcmVudCBtYWNyb3MgZm9yIGRpZmZlcmVudCBhcml0aWVzLCBhbmQgaXQKK2ZlZWxz
IG1vcmUgbGlrZSBMaXNwIHRoYW4gQysrLiBUaGUgYDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0
YCBjbGFzcyBzb2x2ZXMKK3RoaXMgcHJvYmxlbS4KKworQW4gYEFzc2VydGlvblJlc3VsdGAgb2Jq
ZWN0IHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBhbiBhc3NlcnRpb24gKHdoZXRoZXIgaXQncwor
YSBzdWNjZXNzIG9yIGEgZmFpbHVyZSwgYW5kIGFuIGFzc29jaWF0ZWQgbWVzc2FnZSkuIFlvdSBj
YW4gY3JlYXRlIGFuCitgQXNzZXJ0aW9uUmVzdWx0YCB1c2luZyBvbmUgb2YgdGhlc2UgZmFjdG9y
eSBmdW5jdGlvbnM6CisKK2BgYGMrKworbmFtZXNwYWNlIHRlc3RpbmcgeworCisvLyBSZXR1cm5z
IGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBhbiBhc3NlcnRpb24g
aGFzCisvLyBzdWNjZWVkZWQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uU3VjY2VzcygpOwor
CisvLyBSZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBh
biBhc3NlcnRpb24gaGFzCisvLyBmYWlsZWQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uRmFp
bHVyZSgpOworCit9CitgYGAKKworWW91IGNhbiB0aGVuIHVzZSB0aGUgYDw8YCBvcGVyYXRvciB0
byBzdHJlYW0gbWVzc2FnZXMgdG8gdGhlIGBBc3NlcnRpb25SZXN1bHRgCitvYmplY3QuCisKK1Rv
IHByb3ZpZGUgbW9yZSByZWFkYWJsZSBtZXNzYWdlcyBpbiBCb29sZWFuIGFzc2VydGlvbnMgKGUu
Zy4gYEVYUEVDVF9UUlVFKClgKSwKK3dyaXRlIGEgcHJlZGljYXRlIGZ1bmN0aW9uIHRoYXQgcmV0
dXJucyBgQXNzZXJ0aW9uUmVzdWx0YCBpbnN0ZWFkIG9mIGBib29sYC4gRm9yCitleGFtcGxlLCBp
ZiB5b3UgZGVmaW5lIGBJc0V2ZW4oKWAgYXM6CisKK2BgYGMrKworOjp0ZXN0aW5nOjpBc3NlcnRp
b25SZXN1bHQgSXNFdmVuKGludCBuKSB7CisgIGlmICgobiAlIDIpID09IDApCisgICAgIHJldHVy
biA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKKyAgZWxzZQorICAgICByZXR1cm4gOjp0
ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgbiA8PCAiIGlzIG9kZCI7Cit9CitgYGAKKwor
aW5zdGVhZCBvZjoKKworYGBgYysrCitib29sIElzRXZlbihpbnQgbikgeworICByZXR1cm4gKG4g
JSAyKSA9PSAwOworfQorYGBgCisKK3RoZSBmYWlsZWQgYXNzZXJ0aW9uIGBFWFBFQ1RfVFJVRShJ
c0V2ZW4oRmliKDQpKSlgIHdpbGwgcHJpbnQ6CisKK2BgYG5vbmUKK1ZhbHVlIG9mOiBJc0V2ZW4o
RmliKDQpKQorICBBY3R1YWw6IGZhbHNlICgzIGlzIG9kZCkKK0V4cGVjdGVkOiB0cnVlCitgYGAK
KworaW5zdGVhZCBvZiBhIG1vcmUgb3BhcXVlCisKK2BgYG5vbmUKK1ZhbHVlIG9mOiBJc0V2ZW4o
RmliKDQpKQorICBBY3R1YWw6IGZhbHNlCitFeHBlY3RlZDogdHJ1ZQorYGBgCisKK0lmIHlvdSB3
YW50IGluZm9ybWF0aXZlIG1lc3NhZ2VzIGluIGBFWFBFQ1RfRkFMU0VgIGFuZCBgQVNTRVJUX0ZB
TFNFYCBhcyB3ZWxsCisob25lIHRoaXJkIG9mIEJvb2xlYW4gYXNzZXJ0aW9ucyBpbiB0aGUgR29v
Z2xlIGNvZGUgYmFzZSBhcmUgbmVnYXRpdmUgb25lcyksIGFuZAorYXJlIGZpbmUgd2l0aCBtYWtp
bmcgdGhlIHByZWRpY2F0ZSBzbG93ZXIgaW4gdGhlIHN1Y2Nlc3MgY2FzZSwgeW91IGNhbiBzdXBw
bHkgYQorc3VjY2VzcyBtZXNzYWdlOgorCitgYGBjKysKKzo6dGVzdGluZzo6QXNzZXJ0aW9uUmVz
dWx0IElzRXZlbihpbnQgbikgeworICBpZiAoKG4gJSAyKSA9PSAwKQorICAgICByZXR1cm4gOjp0
ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCkgPDwgbiA8PCAiIGlzIGV2ZW4iOworICBlbHNlCisg
ICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2Rk
IjsKK30KK2BgYAorCitUaGVuIHRoZSBzdGF0ZW1lbnQgYEVYUEVDVF9GQUxTRShJc0V2ZW4oRmli
KDYpKSlgIHdpbGwgcHJpbnQKKworYGBgbm9uZQorICBWYWx1ZSBvZjogSXNFdmVuKEZpYig2KSkK
KyAgICAgQWN0dWFsOiB0cnVlICg4IGlzIGV2ZW4pCisgIEV4cGVjdGVkOiBmYWxzZQorYGBgCisK
KyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyMgVXNpbmcgYSBQ
cmVkaWNhdGUtRm9ybWF0dGVyCisKK0lmIHlvdSBmaW5kIHRoZSBkZWZhdWx0IG1lc3NhZ2UgZ2Vu
ZXJhdGVkIGJ5IGAoQVNTRVJUfEVYUEVDVClfUFJFRCpgIGFuZAorYChBU1NFUlR8RVhQRUNUKV8o
VFJVRXxGQUxTRSlgIHVuc2F0aXNmYWN0b3J5LCBvciBzb21lIGFyZ3VtZW50cyB0byB5b3VyCitw
cmVkaWNhdGUgZG8gbm90IHN1cHBvcnQgc3RyZWFtaW5nIHRvIGBvc3RyZWFtYCwgeW91IGNhbiBp
bnN0ZWFkIHVzZSB0aGUKK2ZvbGxvd2luZyAqcHJlZGljYXRlLWZvcm1hdHRlciBhc3NlcnRpb25z
KiB0byAqZnVsbHkqIGN1c3RvbWl6ZSBob3cgdGhlIG1lc3NhZ2UKK2lzIGZvcm1hdHRlZDoKKwor
RmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZmF0
YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyaWZpZXMKKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tCitgQVNT
RVJUX1BSRURfRk9STUFUMShwcmVkX2Zvcm1hdDEsIHZhbDEpO2AgICAgICAgfCBgRVhQRUNUX1BS
RURfRk9STUFUMShwcmVkX2Zvcm1hdDEsIHZhbDEpO2AgICAgICAgfCBgcHJlZF9mb3JtYXQxKHZh
bDEpYCBpcyBzdWNjZXNzZnVsCitgQVNTRVJUX1BSRURfRk9STUFUMihwcmVkX2Zvcm1hdDIsIHZh
bDEsIHZhbDIpO2AgfCBgRVhQRUNUX1BSRURfRk9STUFUMihwcmVkX2Zvcm1hdDIsIHZhbDEsIHZh
bDIpO2AgfCBgcHJlZF9mb3JtYXQyKHZhbDEsIHZhbDIpYCBpcyBzdWNjZXNzZnVsCitgLi4uYCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgLi4uYCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAuLi4KKworVGhlIGRpZmZlcmVu
Y2UgYmV0d2VlbiB0aGlzIGFuZCB0aGUgcHJldmlvdXMgZ3JvdXAgb2YgbWFjcm9zIGlzIHRoYXQg
aW5zdGVhZCBvZgorYSBwcmVkaWNhdGUsIGAoQVNTRVJUfEVYUEVDVClfUFJFRF9GT1JNQVQqYCB0
YWtlIGEgKnByZWRpY2F0ZS1mb3JtYXR0ZXIqCisoYHByZWRfZm9ybWF0bmApLCB3aGljaCBpcyBh
IGZ1bmN0aW9uIG9yIGZ1bmN0b3Igd2l0aCB0aGUgc2lnbmF0dXJlOgorCitgYGBjKysKKzo6dGVz
dGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRpY2F0ZUZvcm1hdHRlcm4oY29uc3QgY2hhciogZXhw
cjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGV4cHIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogZXhwcm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFQxIHZhbDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFQyIHZhbDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUbiB2YWxuKTsKK2BgYAorCit3aGVyZSBgdmFsMWAsIGB2YWwyYCwgLi4uLCBhbmQgYHZh
bG5gIGFyZSB0aGUgdmFsdWVzIG9mIHRoZSBwcmVkaWNhdGUgYXJndW1lbnRzLAorYW5kIGBleHBy
MWAsIGBleHByMmAsIC4uLiwgYW5kIGBleHBybmAgYXJlIHRoZSBjb3JyZXNwb25kaW5nIGV4cHJl
c3Npb25zIGFzIHRoZXkKK2FwcGVhciBpbiB0aGUgc291cmNlIGNvZGUuIFRoZSB0eXBlcyBgVDFg
LCBgVDJgLCAuLi4sIGFuZCBgVG5gIGNhbiBiZSBlaXRoZXIKK3ZhbHVlIHR5cGVzIG9yIHJlZmVy
ZW5jZSB0eXBlcy4gRm9yIGV4YW1wbGUsIGlmIGFuIGFyZ3VtZW50IGhhcyB0eXBlIGBGb29gLCB5
b3UKK2NhbiBkZWNsYXJlIGl0IGFzIGVpdGhlciBgRm9vYCBvciBgY29uc3QgRm9vJmAsIHdoaWNo
ZXZlciBpcyBhcHByb3ByaWF0ZS4KKworQXMgYW4gZXhhbXBsZSwgbGV0J3MgaW1wcm92ZSB0aGUg
ZmFpbHVyZSBtZXNzYWdlIGluIGBNdXR1YWxseVByaW1lKClgLCB3aGljaCB3YXMKK3VzZWQgd2l0
aCBgRVhQRUNUX1BSRUQyKClgOgorCitgYGBjKysKKy8vIFJldHVybnMgdGhlIHNtYWxsZXN0IHBy
aW1lIGNvbW1vbiBkaXZpc29yIG9mIG0gYW5kIG4sCisvLyBvciAxIHdoZW4gbSBhbmQgbiBhcmUg
bXV0dWFsbHkgcHJpbWUuCitpbnQgU21hbGxlc3RQcmltZUNvbW1vbkRpdmlzb3IoaW50IG0sIGlu
dCBuKSB7IC4uLiB9CisKKy8vIEEgcHJlZGljYXRlLWZvcm1hdHRlciBmb3IgYXNzZXJ0aW5nIHRo
YXQgdHdvIGludGVnZXJzIGFyZSBtdXR1YWxseSBwcmltZS4KKzo6dGVzdGluZzo6QXNzZXJ0aW9u
UmVzdWx0IEFzc2VydE11dHVhbGx5UHJpbWUoY29uc3QgY2hhciogbV9leHByLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuX2V4cHIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbikgewor
ICBpZiAoTXV0dWFsbHlQcmltZShtLCBuKSkgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3Vj
Y2VzcygpOworCisgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBtX2V4
cHIgPDwgIiBhbmQgIiA8PCBuX2V4cHIKKyAgICAgIDw8ICIgKCIgPDwgbSA8PCAiIGFuZCAiIDw8
IG4gPDwgIikgYXJlIG5vdCBtdXR1YWxseSBwcmltZSwgIgorICAgICAgPDwgImFzIHRoZXkgaGF2
ZSBhIGNvbW1vbiBkaXZpc29yICIgPDwgU21hbGxlc3RQcmltZUNvbW1vbkRpdmlzb3IobSwgbik7
Cit9CitgYGAKKworV2l0aCB0aGlzIHByZWRpY2F0ZS1mb3JtYXR0ZXIsIHdlIGNhbiB1c2UKKwor
YGBgYysrCisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoQXNzZXJ0TXV0dWFsbHlQcmltZSwgYiwgYyk7
CitgYGAKKwordG8gZ2VuZXJhdGUgdGhlIG1lc3NhZ2UKKworYGBgbm9uZQorYiBhbmQgYyAoNCBh
bmQgMTApIGFyZSBub3QgbXV0dWFsbHkgcHJpbWUsIGFzIHRoZXkgaGF2ZSBhIGNvbW1vbiBkaXZp
c29yIDIuCitgYGAKKworQXMgeW91IG1heSBoYXZlIHJlYWxpemVkLCBtYW55IG9mIHRoZSBidWls
dC1pbiBhc3NlcnRpb25zIHdlIGludHJvZHVjZWQgZWFybGllcgorYXJlIHNwZWNpYWwgY2FzZXMg
b2YgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZPUk1BVCpgLiBJbiBmYWN0LCBtb3N0IG9mIHRoZW0g
YXJlCitpbmRlZWQgZGVmaW5lZCB1c2luZyBgKEVYUEVDVHxBU1NFUlQpX1BSRURfRk9STUFUKmAu
CisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBGbG9hdGlu
Zy1Qb2ludCBDb21wYXJpc29uCisKK0NvbXBhcmluZyBmbG9hdGluZy1wb2ludCBudW1iZXJzIGlz
IHRyaWNreS4gRHVlIHRvIHJvdW5kLW9mZiBlcnJvcnMsIGl0IGlzIHZlcnkKK3VubGlrZWx5IHRo
YXQgdHdvIGZsb2F0aW5nLXBvaW50cyB3aWxsIG1hdGNoIGV4YWN0bHkuIFRoZXJlZm9yZSwgYEFT
U0VSVF9FUWAgJ3MKK25haXZlIGNvbXBhcmlzb24gdXN1YWxseSBkb2Vzbid0IHdvcmsuIEFuZCBz
aW5jZSBmbG9hdGluZy1wb2ludHMgY2FuIGhhdmUgYSB3aWRlCit2YWx1ZSByYW5nZSwgbm8gc2lu
Z2xlIGZpeGVkIGVycm9yIGJvdW5kIHdvcmtzLiBJdCdzIGJldHRlciB0byBjb21wYXJlIGJ5IGEK
K2ZpeGVkIHJlbGF0aXZlIGVycm9yIGJvdW5kLCBleGNlcHQgZm9yIHZhbHVlcyBjbG9zZSB0byAw
IGR1ZSB0byB0aGUgbG9zcyBvZgorcHJlY2lzaW9uIHRoZXJlLgorCitJbiBnZW5lcmFsLCBmb3Ig
ZmxvYXRpbmctcG9pbnQgY29tcGFyaXNvbiB0byBtYWtlIHNlbnNlLCB0aGUgdXNlciBuZWVkcyB0
bworY2FyZWZ1bGx5IGNob29zZSB0aGUgZXJyb3IgYm91bmQuIElmIHRoZXkgZG9uJ3Qgd2FudCBv
ciBjYXJlIHRvLCBjb21wYXJpbmcgaW4KK3Rlcm1zIG9mIFVuaXRzIGluIHRoZSBMYXN0IFBsYWNl
IChVTFBzKSBpcyBhIGdvb2QgZGVmYXVsdCwgYW5kIGdvb2dsZXRlc3QKK3Byb3ZpZGVzIGFzc2Vy
dGlvbnMgdG8gZG8gdGhpcy4gRnVsbCBkZXRhaWxzIGFib3V0IFVMUHMgYXJlIHF1aXRlIGxvbmc7
IGlmIHlvdQord2FudCB0byBsZWFybiBtb3JlLCBzZWUKK1toZXJlXShodHRwczovL3JhbmRvbWFz
Y2lpLndvcmRwcmVzcy5jb20vMjAxMi8wMi8yNS9jb21wYXJpbmctZmxvYXRpbmctcG9pbnQtbnVt
YmVycy0yMDEyLWVkaXRpb24vKS4KKworIyMjIyBGbG9hdGluZy1Qb2ludCBNYWNyb3MKKworfCBG
YXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAg
ICAgICAgIHwgVmVyaWZpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKK3wgYEFT
U0VSVF9GTE9BVF9FUSh2YWwxLCB2YWwyKTtgICB8IGBFWFBFQ1RfRkxPQVRfRVEodmFsMSx2YWwy
KTtgICB8IHRoZSB0d28gYGZsb2F0YCB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbCAgfAorfCBgQVNT
RVJUX0RPVUJMRV9FUSh2YWwxLCB2YWwyKTtgIHwgYEVYUEVDVF9ET1VCTEVfRVEodmFsMSwgdmFs
Mik7YHwgdGhlIHR3byBgZG91YmxlYCB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbCB8CisKK0J5ICJh
bG1vc3QgZXF1YWwiIHdlIG1lYW4gdGhlIHZhbHVlcyBhcmUgd2l0aGluIDQgVUxQJ3MgZnJvbSBl
YWNoIG90aGVyLgorCitOT1RFOiBgQ0hFQ0tfRE9VQkxFX0VRKClgIGluIGBiYXNlL2xvZ2dpbmcu
aGAgdXNlcyBhIGZpeGVkIGFic29sdXRlIGVycm9yIGJvdW5kLAorc28gaXRzIHJlc3VsdCBtYXkg
ZGlmZmVyIGZyb20gdGhhdCBvZiB0aGUgZ29vZ2xldGVzdCBtYWNyb3MuIFRoYXQgbWFjcm8gaXMK
K3Vuc2FmZSBhbmQgaGFzIGJlZW4gZGVwcmVjYXRlZC4gUGxlYXNlIGRvbid0IHVzZSBpdCBhbnkg
bW9yZS4KKworVGhlIGZvbGxvd2luZyBhc3NlcnRpb25zIGFsbG93IHlvdSB0byBjaG9vc2UgdGhl
IGFjY2VwdGFibGUgZXJyb3IgYm91bmQ6CisKK3wgRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAg
ICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgfCBWZXJp
ZmllcyAgICAgICAgICAgICAgICAgIHwKK3wgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIHwKK3wgYEFTU0VSVF9ORUFSKHZhbDEsIHZhbDIsIGFic19lcnJv
cik7YCB8IGBFWFBFQ1RfTkVBUih2YWwxLCB2YWwyLCBhYnNfZXJyb3IpO2AgfCB0aGUgZGlmZmVy
ZW5jZSBiZXR3ZWVuIGB2YWwxYCBhbmQgYHZhbDJgIGRvZXNuJ3QgZXhjZWVkIHRoZSBnaXZlbiBh
YnNvbHV0ZSBlcnJvciB8CisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKKyMjIyMgRmxvYXRpbmctUG9pbnQgUHJlZGljYXRlLUZvcm1hdCBGdW5jdGlvbnMKKworU29t
ZSBmbG9hdGluZy1wb2ludCBvcGVyYXRpb25zIGFyZSB1c2VmdWwsIGJ1dCBub3QgdGhhdCBvZnRl
biB1c2VkLiBJbiBvcmRlciB0bworYXZvaWQgYW4gZXhwbG9zaW9uIG9mIG5ldyBtYWNyb3MsIHdl
IHByb3ZpZGUgdGhlbSBhcyBwcmVkaWNhdGUtZm9ybWF0IGZ1bmN0aW9ucwordGhhdCBjYW4gYmUg
dXNlZCBpbiBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3JvcyAoZS5nLiBgRVhQRUNUX1BSRURfRk9S
TUFUMmAsCitldGMpLgorCitgYGBjKysKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpG
bG9hdExFLCB2YWwxLCB2YWwyKTsKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpEb3Vi
bGVMRSwgdmFsMSwgdmFsMik7CitgYGAKKworVmVyaWZpZXMgdGhhdCBgdmFsMWAgaXMgbGVzcyB0
aGFuLCBvciBhbG1vc3QgZXF1YWwgdG8sIGB2YWwyYC4gWW91IGNhbiByZXBsYWNlCitgRVhQRUNU
X1BSRURfRk9STUFUMmAgaW4gdGhlIGFib3ZlIHRhYmxlIHdpdGggYEFTU0VSVF9QUkVEX0ZPUk1B
VDJgLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgQXNz
ZXJ0aW5nIFVzaW5nIGdNb2NrIE1hdGNoZXJzCisKK0dvb2dsZS1kZXZlbG9wZWQgQysrIG1vY2tp
bmcgZnJhbWV3b3JrIFtnTW9ja10oLi4vLi4vZ29vZ2xlbW9jaykgY29tZXMgd2l0aCBhCitsaWJy
YXJ5IG9mIG1hdGNoZXJzIGZvciB2YWxpZGF0aW5nIGFyZ3VtZW50cyBwYXNzZWQgdG8gbW9jayBv
YmplY3RzLiBBIGdNb2NrCisqbWF0Y2hlciogaXMgYmFzaWNhbGx5IGEgcHJlZGljYXRlIHRoYXQg
a25vd3MgaG93IHRvIGRlc2NyaWJlIGl0c2VsZi4gSXQgY2FuIGJlCit1c2VkIGluIHRoZXNlIGFz
c2VydGlvbiBtYWNyb3M6CisKK3wgRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgIHwgTm9u
ZmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgIHwgVmVyaWZpZXMgICAgICAgICAgICAgIHwKK3wg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKK3wgYEFTU0VSVF9USEFUKHZhbHVlLCBt
YXRjaGVyKTtgIHwgYEVYUEVDVF9USEFUKHZhbHVlLCBtYXRjaGVyKTtgIHwgdmFsdWUgbWF0Y2hl
cyBtYXRjaGVyIHwKKworRm9yIGV4YW1wbGUsIGBTdGFydHNXaXRoKHByZWZpeClgIGlzIGEgbWF0
Y2hlciB0aGF0IG1hdGNoZXMgYSBzdHJpbmcgc3RhcnRpbmcKK3dpdGggYHByZWZpeGAsIGFuZCB5
b3UgY2FuIHdyaXRlOgorCitgYGBjKysKK3VzaW5nIDo6dGVzdGluZzo6U3RhcnRzV2l0aDsKKy4u
LgorICAgIC8vIFZlcmlmaWVzIHRoYXQgRm9vKCkgcmV0dXJucyBhIHN0cmluZyBzdGFydGluZyB3
aXRoICJIZWxsbyIuCisgICAgRVhQRUNUX1RIQVQoRm9vKCksIFN0YXJ0c1dpdGgoIkhlbGxvIikp
OworYGBgCisKK1JlYWQgdGhpcyBbcmVjaXBlXSguLi8uLi9nb29nbGVtb2NrL2RvY3MvQ29va0Jv
b2subWQjdXNpbmctbWF0Y2hlcnMtaW4tZ29vZ2xlLXRlc3QtYXNzZXJ0aW9ucykgaW4KK3RoZSBn
TW9jayBDb29rYm9vayBmb3IgbW9yZSBkZXRhaWxzLgorCitnTW9jayBoYXMgYSByaWNoIHNldCBv
ZiBtYXRjaGVycy4gWW91IGNhbiBkbyBtYW55IHRoaW5ncyBnb29nbGV0ZXN0IGNhbm5vdCBkbwor
YWxvbmUgd2l0aCB0aGVtLiBGb3IgYSBsaXN0IG9mIG1hdGNoZXJzIGdNb2NrIHByb3ZpZGVzLCBy
ZWFkCitbdGhpc10oLi4vLi4vZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3VzaW5nLW1hdGNo
ZXJzKS4gRXNwZWNpYWxseSB1c2VmdWwgYW1vbmcgdGhlbSBhcmUKK3NvbWUgW3Byb3RvY29sIGJ1
ZmZlciBtYXRjaGVyc10oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9udWNsZXVzL2Jsb2IvbWFz
dGVyL251Y2xldXMvdGVzdGluZy9wcm90b2NvbC1idWZmZXItbWF0Y2hlcnMuaCkuIEl0J3MgZWFz
eSB0byB3cml0ZQoreW91ciBbb3duIG1hdGNoZXJzXSguLi8uLi9nb29nbGVtb2NrL2RvY3MvQ29v
a0Jvb2subWQjd3JpdGluZy1uZXctbWF0Y2hlcnMtcXVpY2tseSkgdG9vLgorCitGb3IgZXhhbXBs
ZSwgeW91IGNhbiB1c2UgZ01vY2sncworW0VxdWFsc1Byb3RvXShodHRwczovL2dpdGh1Yi5jb20v
Z29vZ2xlL251Y2xldXMvYmxvYi9tYXN0ZXIvbnVjbGV1cy90ZXN0aW5nL3Byb3RvY29sLWJ1ZmZl
ci1tYXRjaGVycy5oKQordG8gY29tcGFyZSBwcm90b3MgaW4geW91ciB0ZXN0czoKKworYGBgYysr
CisjaW5jbHVkZSAidGVzdGluZy9iYXNlL3B1YmxpYy9nbW9jay5oIgordXNpbmcgOjp0ZXN0aW5n
OjpFcXVhbHNQcm90bzsKKy4uLgorICAgIEVYUEVDVF9USEFUKGFjdHVhbF9wcm90bywgRXF1YWxz
UHJvdG8oImZvbzogMTIzIGJhcjogJ3h5eiciKSk7CisgICAgRVhQRUNUX1RIQVQoKmFjdHVhbF9w
cm90b19wdHIsIEVxdWFsc1Byb3RvKGV4cGVjdGVkX3Byb3RvKSk7CitgYGAKKworZ01vY2sgaXMg
YnVuZGxlZCB3aXRoIGdvb2dsZXRlc3QsIHNvIHlvdSBkb24ndCBuZWVkIHRvIGFkZCBhbnkgYnVp
bGQgZGVwZW5kZW5jeQoraW4gb3JkZXIgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhpcy4gSnVzdCBp
bmNsdWRlIGAidGVzdGluZy9iYXNlL3B1YmxpYy9nbW9jay5oImAKK2FuZCB5b3UncmUgcmVhZHkg
dG8gZ28uCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBhbmQgTWFjLgorCisj
IyMgTW9yZSBTdHJpbmcgQXNzZXJ0aW9ucworCisoUGxlYXNlIHJlYWQgdGhlIFtwcmV2aW91c10o
I0Fzc2VydFRoYXQpIHNlY3Rpb24gZmlyc3QgaWYgeW91IGhhdmVuJ3QuKQorCitZb3UgY2FuIHVz
ZSB0aGUgZ01vY2sgW3N0cmluZyBtYXRjaGVyc10oLi4vLi4vZ29vZ2xlbW9jay9kb2NzL0NoZWF0
U2hlZXQubWQjc3RyaW5nLW1hdGNoZXJzKQord2l0aCBgRVhQRUNUX1RIQVQoKWAgb3IgYEFTU0VS
VF9USEFUKClgIHRvIGRvIG1vcmUgc3RyaW5nIGNvbXBhcmlzb24gdHJpY2tzCisoc3ViLXN0cmlu
ZywgcHJlZml4LCBzdWZmaXgsIHJlZ3VsYXIgZXhwcmVzc2lvbiwgYW5kIGV0YykuIEZvciBleGFt
cGxlLAorCitgYGBjKysKK3VzaW5nIDo6dGVzdGluZzo6SGFzU3Vic3RyOwordXNpbmcgOjp0ZXN0
aW5nOjpNYXRjaGVzUmVnZXg7CisuLi4KKyAgQVNTRVJUX1RIQVQoZm9vX3N0cmluZywgSGFzU3Vi
c3RyKCJuZWVkbGUiKSk7CisgIEVYUEVDVF9USEFUKGJhcl9zdHJpbmcsIE1hdGNoZXNSZWdleCgi
XFx3KlxcZCsiKSk7CitgYGAKKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1h
Yy4KKworSWYgdGhlIHN0cmluZyBjb250YWlucyBhIHdlbGwtZm9ybWVkIEhUTUwgb3IgWE1MIGRv
Y3VtZW50LCB5b3UgY2FuIGNoZWNrIHdoZXRoZXIKK2l0cyBET00gdHJlZSBtYXRjaGVzIGFuIFtY
UGF0aAorZXhwcmVzc2lvbl0oaHR0cDovL3d3dy53My5vcmcvVFIveHBhdGgvI2NvbnRlbnRzKToK
KworYGBgYysrCisvLyBDdXJyZW50bHkgc3RpbGwgaW4gLy90ZW1wbGF0ZS9wcm90b3RlbXBsYXRl
L3Rlc3Rpbmc6eHBhdGhfbWF0Y2hlcgorI2luY2x1ZGUgInRlbXBsYXRlL3Byb3RvdGVtcGxhdGUv
dGVzdGluZy94cGF0aF9tYXRjaGVyLmgiCit1c2luZyBwcm90b3RlbXBsYXRlOjp0ZXN0aW5nOjpN
YXRjaGVzWFBhdGg7CitFWFBFQ1RfVEhBVChodG1sX3N0cmluZywgTWF0Y2hlc1hQYXRoKCIvL2Fb
dGV4dCgpPSdjbGljayBoZXJlJ10iKSk7CitgYGAKKworKipBdmFpbGFiaWxpdHkqKjogTGludXgu
CisKKyMjIyBXaW5kb3dzIEhSRVNVTFQgYXNzZXJ0aW9ucworCitUaGVzZSBhc3NlcnRpb25zIHRl
c3QgZm9yIGBIUkVTVUxUYCBzdWNjZXNzIG9yIGZhaWx1cmUuCisKK0ZhdGFsIGFzc2VydGlvbiAg
ICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAg
ICAgICAgfCBWZXJpZmllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
fCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tCitgQVNT
RVJUX0hSRVNVTFRfU1VDQ0VFREVEKGV4cHJlc3Npb24pYCB8IGBFWFBFQ1RfSFJFU1VMVF9TVUND
RUVERUQoZXhwcmVzc2lvbilgIHwgYGV4cHJlc3Npb25gIGlzIGEgc3VjY2VzcyBgSFJFU1VMVGAK
K2BBU1NFUlRfSFJFU1VMVF9GQUlMRUQoZXhwcmVzc2lvbilgICAgIHwgYEVYUEVDVF9IUkVTVUxU
X0ZBSUxFRChleHByZXNzaW9uKWAgICAgfCBgZXhwcmVzc2lvbmAgaXMgYSBmYWlsdXJlIGBIUkVT
VUxUYAorCitUaGUgZ2VuZXJhdGVkIG91dHB1dCBjb250YWlucyB0aGUgaHVtYW4tcmVhZGFibGUg
ZXJyb3IgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGgKK3RoZSBgSFJFU1VMVGAgY29kZSByZXR1cm5l
ZCBieSBgZXhwcmVzc2lvbmAuCisKK1lvdSBtaWdodCB1c2UgdGhlbSBsaWtlIHRoaXM6CisKK2Bg
YGMrKworQ0NvbVB0cjxJU2hlbGxEaXNwYXRjaDI+IHNoZWxsOworQVNTRVJUX0hSRVNVTFRfU1VD
Q0VFREVEKHNoZWxsLkNvQ3JlYXRlSW5zdGFuY2UoTCJTaGVsbC5BcHBsaWNhdGlvbiIpKTsKK0ND
b21WYXJpYW50IGVtcHR5OworQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKHNoZWxsLT5TaGVsbEV4
ZWN1dGUoQ0NvbUJTVFIodXJsKSwgZW1wdHksIGVtcHR5LCBlbXB0eSwgZW1wdHkpKTsKK2BgYAor
CisqKkF2YWlsYWJpbGl0eSoqOiBXaW5kb3dzLgorCisjIyMgVHlwZSBBc3NlcnRpb25zCisKK1lv
dSBjYW4gY2FsbCB0aGUgZnVuY3Rpb24KKworYGBgYysrCis6OnRlc3Rpbmc6OlN0YXRpY0Fzc2Vy
dFR5cGVFcTxUMSwgVDI+KCk7CitgYGAKKwordG8gYXNzZXJ0IHRoYXQgdHlwZXMgYFQxYCBhbmQg
YFQyYCBhcmUgdGhlIHNhbWUuIFRoZSBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgaWYKK3RoZSBhc3Nl
cnRpb24gaXMgc2F0aXNmaWVkLiBJZiB0aGUgdHlwZXMgYXJlIGRpZmZlcmVudCwgdGhlIGZ1bmN0
aW9uIGNhbGwgd2lsbAorZmFpbCB0byBjb21waWxlLCBhbmQgdGhlIGNvbXBpbGVyIGVycm9yIG1l
c3NhZ2Ugd2lsbCBsaWtlbHkgKGRlcGVuZGluZyBvbiB0aGUKK2NvbXBpbGVyKSBzaG93IHlvdSB0
aGUgYWN0dWFsIHZhbHVlcyBvZiBgVDFgIGFuZCBgVDJgLiBUaGlzIGlzIG1haW5seSB1c2VmdWwK
K2luc2lkZSB0ZW1wbGF0ZSBjb2RlLgorCisqKkNhdmVhdCoqOiBXaGVuIHVzZWQgaW5zaWRlIGEg
bWVtYmVyIGZ1bmN0aW9uIG9mIGEgY2xhc3MgdGVtcGxhdGUgb3IgYSBmdW5jdGlvbgordGVtcGxh
dGUsIGBTdGF0aWNBc3NlcnRUeXBlRXE8VDEsIFQyPigpYCBpcyBlZmZlY3RpdmUgb25seSBpZiB0
aGUgZnVuY3Rpb24gaXMKK2luc3RhbnRpYXRlZC4gRm9yIGV4YW1wbGUsIGdpdmVuOgorCitgYGBj
KysKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb28geworIHB1YmxpYzoKKyAgdm9pZCBC
YXIoKSB7IDo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGludCwgVD4oKTsgfQorfTsKK2Bg
YAorCit0aGUgY29kZToKKworYGBgYysrCit2b2lkIFRlc3QxKCkgeyBGb288Ym9vbD4gZm9vOyB9
CitgYGAKKword2lsbCBub3QgZ2VuZXJhdGUgYSBjb21waWxlciBlcnJvciwgYXMgYEZvbzxib29s
Pjo6QmFyKClgIGlzIG5ldmVyIGFjdHVhbGx5CitpbnN0YW50aWF0ZWQuIEluc3RlYWQsIHlvdSBu
ZWVkOgorCitgYGBjKysKK3ZvaWQgVGVzdDIoKSB7IEZvbzxib29sPiBmb287IGZvby5CYXIoKTsg
fQorYGBgCisKK3RvIGNhdXNlIGEgY29tcGlsZXIgZXJyb3IuCisKKyoqQXZhaWxhYmlsaXR5Kio6
IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBBc3NlcnRpb24gUGxhY2VtZW50CisKK1lvdSBj
YW4gdXNlIGFzc2VydGlvbnMgaW4gYW55IEMrKyBmdW5jdGlvbi4gSW4gcGFydGljdWxhciwgaXQg
ZG9lc24ndCBoYXZlIHRvIGJlCithIG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLiBU
aGUgb25lIGNvbnN0cmFpbnQgaXMgdGhhdCBhc3NlcnRpb25zIHRoYXQKK2dlbmVyYXRlIGEgZmF0
YWwgZmFpbHVyZSAoYEZBSUwqYCBhbmQgYEFTU0VSVF8qYCkgY2FuIG9ubHkgYmUgdXNlZCBpbgor
dm9pZC1yZXR1cm5pbmcgZnVuY3Rpb25zLiBUaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2YgR29vZ2xl
J3Mgbm90IHVzaW5nCitleGNlcHRpb25zLiBCeSBwbGFjaW5nIGl0IGluIGEgbm9uLXZvaWQgZnVu
Y3Rpb24geW91J2xsIGdldCBhIGNvbmZ1c2luZyBjb21waWxlCitlcnJvciBsaWtlIGAiZXJyb3I6
IHZvaWQgdmFsdWUgbm90IGlnbm9yZWQgYXMgaXQgb3VnaHQgdG8gYmUiYCBvciBgImNhbm5vdAor
aW5pdGlhbGl6ZSByZXR1cm4gb2JqZWN0IG9mIHR5cGUgJ2Jvb2wnIHdpdGggYW4gcnZhbHVlIG9m
IHR5cGUgJ3ZvaWQnImAgb3IKK2AiZXJyb3I6IG5vIHZpYWJsZSBjb252ZXJzaW9uIGZyb20gJ3Zv
aWQnIHRvICdzdHJpbmcnImAuCisKK0lmIHlvdSBuZWVkIHRvIHVzZSBmYXRhbCBhc3NlcnRpb25z
IGluIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIG5vbi12b2lkLCBvbmUKK29wdGlvbiBpcyB0byBt
YWtlIHRoZSBmdW5jdGlvbiByZXR1cm4gdGhlIHZhbHVlIGluIGFuIG91dCBwYXJhbWV0ZXIgaW5z
dGVhZC4gRm9yCitleGFtcGxlLCB5b3UgY2FuIHJld3JpdGUgYFQyIEZvbyhUMSB4KWAgdG8gYHZv
aWQgRm9vKFQxIHgsIFQyKiByZXN1bHQpYC4gWW91CituZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGAq
cmVzdWx0YCBjb250YWlucyBzb21lIHNlbnNpYmxlIHZhbHVlIGV2ZW4gd2hlbiB0aGUKK2Z1bmN0
aW9uIHJldHVybnMgcHJlbWF0dXJlbHkuIEFzIHRoZSBmdW5jdGlvbiBub3cgcmV0dXJucyBgdm9p
ZGAsIHlvdSBjYW4gdXNlCithbnkgYXNzZXJ0aW9uIGluc2lkZSBvZiBpdC4KKworSWYgY2hhbmdp
bmcgdGhlIGZ1bmN0aW9uJ3MgdHlwZSBpcyBub3QgYW4gb3B0aW9uLCB5b3Ugc2hvdWxkIGp1c3Qg
dXNlIGFzc2VydGlvbnMKK3RoYXQgZ2VuZXJhdGUgbm9uLWZhdGFsIGZhaWx1cmVzLCBzdWNoIGFz
IGBBRERfRkFJTFVSRSpgIGFuZCBgRVhQRUNUXypgLgorCitOT1RFOiBDb25zdHJ1Y3RvcnMgYW5k
IGRlc3RydWN0b3JzIGFyZSBub3QgY29uc2lkZXJlZCB2b2lkLXJldHVybmluZyBmdW5jdGlvbnMs
CithY2NvcmRpbmcgdG8gdGhlIEMrKyBsYW5ndWFnZSBzcGVjaWZpY2F0aW9uLCBhbmQgc28geW91
IG1heSBub3QgdXNlIGZhdGFsCithc3NlcnRpb25zIGluIHRoZW0uIFlvdSdsbCBnZXQgYSBjb21w
aWxhdGlvbiBlcnJvciBpZiB5b3UgdHJ5LiBBIHNpbXBsZQord29ya2Fyb3VuZCBpcyB0byB0cmFu
c2ZlciB0aGUgZW50aXJlIGJvZHkgb2YgdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IgdG8g
YQorcHJpdmF0ZSB2b2lkLXJldHVybmluZyBtZXRob2QuIEhvd2V2ZXIsIHlvdSBzaG91bGQgYmUg
YXdhcmUgdGhhdCBhIGZhdGFsCithc3NlcnRpb24gZmFpbHVyZSBpbiBhIGNvbnN0cnVjdG9yIGRv
ZXMgbm90IHRlcm1pbmF0ZSB0aGUgY3VycmVudCB0ZXN0LCBhcyB5b3VyCitpbnR1aXRpb24gbWln
aHQgc3VnZ2VzdDsgaXQgbWVyZWx5IHJldHVybnMgZnJvbSB0aGUgY29uc3RydWN0b3IgZWFybHks
IHBvc3NpYmx5CitsZWF2aW5nIHlvdXIgb2JqZWN0IGluIGEgcGFydGlhbGx5LWNvbnN0cnVjdGVk
IHN0YXRlLiBMaWtld2lzZSwgYSBmYXRhbAorYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYSBkZXN0cnVj
dG9yIG1heSBsZWF2ZSB5b3VyIG9iamVjdCBpbiBhCitwYXJ0aWFsbHktZGVzdHJ1Y3RlZCBzdGF0
ZS4gVXNlIGFzc2VydGlvbnMgY2FyZWZ1bGx5IGluIHRoZXNlIHNpdHVhdGlvbnMhCisKKyMjIFRl
YWNoaW5nIGdvb2dsZXRlc3QgSG93IHRvIFByaW50IFlvdXIgVmFsdWVzCisKK1doZW4gYSB0ZXN0
IGFzc2VydGlvbiBzdWNoIGFzIGBFWFBFQ1RfRVFgIGZhaWxzLCBnb29nbGV0ZXN0IHByaW50cyB0
aGUgYXJndW1lbnQKK3ZhbHVlcyB0byBoZWxwIHlvdSBkZWJ1Zy4gSXQgZG9lcyB0aGlzIHVzaW5n
IGEgdXNlci1leHRlbnNpYmxlIHZhbHVlIHByaW50ZXIuCisKK1RoaXMgcHJpbnRlciBrbm93cyBo
b3cgdG8gcHJpbnQgYnVpbHQtaW4gQysrIHR5cGVzLCBuYXRpdmUgYXJyYXlzLCBTVEwKK2NvbnRh
aW5lcnMsIGFuZCBhbnkgdHlwZSB0aGF0IHN1cHBvcnRzIHRoZSBgPDxgIG9wZXJhdG9yLiBGb3Ig
b3RoZXIgdHlwZXMsIGl0CitwcmludHMgdGhlIHJhdyBieXRlcyBpbiB0aGUgdmFsdWUgYW5kIGhv
cGVzIHRoYXQgeW91IHRoZSB1c2VyIGNhbiBmaWd1cmUgaXQgb3V0LgorCitBcyBtZW50aW9uZWQg
ZWFybGllciwgdGhlIHByaW50ZXIgaXMgKmV4dGVuc2libGUqLiBUaGF0IG1lYW5zIHlvdSBjYW4g
dGVhY2ggaXQKK3RvIGRvIGEgYmV0dGVyIGpvYiBhdCBwcmludGluZyB5b3VyIHBhcnRpY3VsYXIg
dHlwZSB0aGFuIHRvIGR1bXAgdGhlIGJ5dGVzLiBUbworZG8gdGhhdCwgZGVmaW5lIGA8PGAgZm9y
IHlvdXIgdHlwZToKKworYGBgYysrCisvLyBTdHJlYW1zIGFyZSBhbGxvd2VkIG9ubHkgZm9yIGxv
Z2dpbmcuICBEb24ndCBpbmNsdWRlIHRoaXMgZm9yCisvLyBhbnkgb3RoZXIgcHVycG9zZS4KKyNp
bmNsdWRlIDxvc3RyZWFtPgorCituYW1lc3BhY2UgZm9vIHsKKworY2xhc3MgQmFyIHsgIC8vIFdl
IHdhbnQgZ29vZ2xldGVzdCB0byBiZSBhYmxlIHRvIHByaW50IGluc3RhbmNlcyBvZiB0aGlzLgor
Li4uCisgIC8vIENyZWF0ZSBhIGZyZWUgaW5saW5lIGZyaWVuZCBmdW5jdGlvbi4KKyAgZnJpZW5k
IHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBCYXImIGJh
cikgeworICAgIHJldHVybiBvcyA8PCBiYXIuRGVidWdTdHJpbmcoKTsgIC8vIHdoYXRldmVyIG5l
ZWRlZCB0byBwcmludCBiYXIgdG8gb3MKKyAgfQorfTsKKworLy8gSWYgeW91IGNhbid0IGRlY2xh
cmUgdGhlIGZ1bmN0aW9uIGluIHRoZSBjbGFzcyBpdCdzIGltcG9ydGFudCB0aGF0IHRoZQorLy8g
PDwgb3BlcmF0b3IgaXMgZGVmaW5lZCBpbiB0aGUgU0FNRSBuYW1lc3BhY2UgdGhhdCBkZWZpbmVz
IEJhci4gIEMrKydzIGxvb2stdXAKKy8vIHJ1bGVzIHJlbHkgb24gdGhhdC4KK3N0ZDo6b3N0cmVh
bSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBCYXImIGJhcikgeworICByZXR1
cm4gb3MgPDwgYmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3aGF0ZXZlciBuZWVkZWQgdG8gcHJpbnQg
YmFyIHRvIG9zCit9CisKK30gIC8vIG5hbWVzcGFjZSBmb28KK2BgYAorCitTb21ldGltZXMsIHRo
aXMgbWlnaHQgbm90IGJlIGFuIG9wdGlvbjogeW91ciB0ZWFtIG1heSBjb25zaWRlciBpdCBiYWQg
c3R5bGUgdG8KK2hhdmUgYSBgPDxgIG9wZXJhdG9yIGZvciBgQmFyYCwgb3IgYEJhcmAgbWF5IGFs
cmVhZHkgaGF2ZSBhIGA8PGAgb3BlcmF0b3IgdGhhdAorZG9lc24ndCBkbyB3aGF0IHlvdSB3YW50
IChhbmQgeW91IGNhbm5vdCBjaGFuZ2UgaXQpLiBJZiBzbywgeW91IGNhbiBpbnN0ZWFkCitkZWZp
bmUgYSBgUHJpbnRUbygpYCBmdW5jdGlvbiBsaWtlIHRoaXM6CisKK2BgYGMrKworLy8gU3RyZWFt
cyBhcmUgYWxsb3dlZCBvbmx5IGZvciBsb2dnaW5nLiAgRG9uJ3QgaW5jbHVkZSB0aGlzIGZvcgor
Ly8gYW55IG90aGVyIHB1cnBvc2UuCisjaW5jbHVkZSA8b3N0cmVhbT4KKworbmFtZXNwYWNlIGZv
byB7CisKK2NsYXNzIEJhciB7CisgIC4uLgorICBmcmllbmQgdm9pZCBQcmludFRvKGNvbnN0IEJh
ciYgYmFyLCBzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgKm9zIDw8IGJhci5EZWJ1Z1N0cmluZygp
OyAgLy8gd2hhdGV2ZXIgbmVlZGVkIHRvIHByaW50IGJhciB0byBvcworICB9Cit9OworCisvLyBJ
ZiB5b3UgY2FuJ3QgZGVjbGFyZSB0aGUgZnVuY3Rpb24gaW4gdGhlIGNsYXNzIGl0J3MgaW1wb3J0
YW50IHRoYXQgUHJpbnRUbygpCisvLyBpcyBkZWZpbmVkIGluIHRoZSBTQU1FIG5hbWVzcGFjZSB0
aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11cCBydWxlcyByZWx5CisvLyBvbiB0aGF0Lgor
dm9pZCBQcmludFRvKGNvbnN0IEJhciYgYmFyLCBzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8
PCBiYXIuRGVidWdTdHJpbmcoKTsgIC8vIHdoYXRldmVyIG5lZWRlZCB0byBwcmludCBiYXIgdG8g
b3MKK30KKworfSAgLy8gbmFtZXNwYWNlIGZvbworYGBgCisKK0lmIHlvdSBoYXZlIGRlZmluZWQg
Ym90aCBgPDxgIGFuZCBgUHJpbnRUbygpYCwgdGhlIGxhdHRlciB3aWxsIGJlIHVzZWQgd2hlbgor
Z29vZ2xldGVzdCBpcyBjb25jZXJuZWQuIFRoaXMgYWxsb3dzIHlvdSB0byBjdXN0b21pemUgaG93
IHRoZSB2YWx1ZSBhcHBlYXJzIGluCitnb29nbGV0ZXN0J3Mgb3V0cHV0IHdpdGhvdXQgYWZmZWN0
aW5nIGNvZGUgdGhhdCByZWxpZXMgb24gdGhlIGJlaGF2aW9yIG9mIGl0cworYDw8YCBvcGVyYXRv
ci4KKworSWYgeW91IHdhbnQgdG8gcHJpbnQgYSB2YWx1ZSBgeGAgdXNpbmcgZ29vZ2xldGVzdCdz
IHZhbHVlIHByaW50ZXIgeW91cnNlbGYsIGp1c3QKK2NhbGwgYDo6dGVzdGluZzo6UHJpbnRUb1N0
cmluZyh4KWAsIHdoaWNoIHJldHVybnMgYW4gYHN0ZDo6c3RyaW5nYDoKKworYGBgYysrCit2ZWN0
b3I8cGFpcjxCYXIsIGludD4gPiBiYXJfaW50cyA9IEdldEJhckludFZlY3RvcigpOworCitFWFBF
Q1RfVFJVRShJc0NvcnJlY3RCYXJJbnRWZWN0b3IoYmFyX2ludHMpKQorICAgIDw8ICJiYXJfaW50
cyA9ICIgPDwgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGJhcl9pbnRzKTsKK2BgYAorCisjIyBE
ZWF0aCBUZXN0cworCitJbiBtYW55IGFwcGxpY2F0aW9ucywgdGhlcmUgYXJlIGFzc2VydGlvbnMg
dGhhdCBjYW4gY2F1c2UgYXBwbGljYXRpb24gZmFpbHVyZSBpZgorYSBjb25kaXRpb24gaXMgbm90
IG1ldC4gVGhlc2Ugc2FuaXR5IGNoZWNrcywgd2hpY2ggZW5zdXJlIHRoYXQgdGhlIHByb2dyYW0g
aXMgaW4KK2Ega25vd24gZ29vZCBzdGF0ZSwgYXJlIHRoZXJlIHRvIGZhaWwgYXQgdGhlIGVhcmxp
ZXN0IHBvc3NpYmxlIHRpbWUgYWZ0ZXIgc29tZQorcHJvZ3JhbSBzdGF0ZSBpcyBjb3JydXB0ZWQu
IElmIHRoZSBhc3NlcnRpb24gY2hlY2tzIHRoZSB3cm9uZyBjb25kaXRpb24sIHRoZW4KK3RoZSBw
cm9ncmFtIG1heSBwcm9jZWVkIGluIGFuIGVycm9uZW91cyBzdGF0ZSwgd2hpY2ggY291bGQgbGVh
ZCB0byBtZW1vcnkKK2NvcnJ1cHRpb24sIHNlY3VyaXR5IGhvbGVzLCBvciB3b3JzZS4gSGVuY2Ug
aXQgaXMgdml0YWxseSBpbXBvcnRhbnQgdG8gdGVzdCB0aGF0CitzdWNoIGFzc2VydGlvbiBzdGF0
ZW1lbnRzIHdvcmsgYXMgZXhwZWN0ZWQuCisKK1NpbmNlIHRoZXNlIHByZWNvbmRpdGlvbiBjaGVj
a3MgY2F1c2UgdGhlIHByb2Nlc3NlcyB0byBkaWUsIHdlIGNhbGwgc3VjaCB0ZXN0cworX2RlYXRo
IHRlc3RzXy4gTW9yZSBnZW5lcmFsbHksIGFueSB0ZXN0IHRoYXQgY2hlY2tzIHRoYXQgYSBwcm9n
cmFtIHRlcm1pbmF0ZXMKKyhleGNlcHQgYnkgdGhyb3dpbmcgYW4gZXhjZXB0aW9uKSBpbiBhbiBl
eHBlY3RlZCBmYXNoaW9uIGlzIGFsc28gYSBkZWF0aCB0ZXN0LgorCisKK05vdGUgdGhhdCBpZiBh
IHBpZWNlIG9mIGNvZGUgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgd2UgZG9uJ3QgY29uc2lkZXIgaXQg
ImRlYXRoIgorZm9yIHRoZSBwdXJwb3NlIG9mIGRlYXRoIHRlc3RzLCBhcyB0aGUgY2FsbGVyIG9m
IHRoZSBjb2RlIGNvdWxkIGNhdGNoIHRoZQorZXhjZXB0aW9uIGFuZCBhdm9pZCB0aGUgY3Jhc2gu
IElmIHlvdSB3YW50IHRvIHZlcmlmeSBleGNlcHRpb25zIHRocm93biBieSB5b3VyCitjb2RlLCBz
ZWUgW0V4Y2VwdGlvbiBBc3NlcnRpb25zXSgjZXhjZXB0aW9uLWFzc2VydGlvbnMpLgorCitJZiB5
b3Ugd2FudCB0byB0ZXN0IGBFWFBFQ1RfKigpL0FTU0VSVF8qKClgIGZhaWx1cmVzIGluIHlvdXIg
dGVzdCBjb2RlLCBzZWUKK0NhdGNoaW5nIEZhaWx1cmVzCisKKyMjIyBIb3cgdG8gV3JpdGUgYSBE
ZWF0aCBUZXN0CisKK2dvb2dsZXRlc3QgaGFzIHRoZSBmb2xsb3dpbmcgbWFjcm9zIHRvIHN1cHBv
cnQgZGVhdGggdGVzdHM6CisKK0ZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgVmVyaWZpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0t
LS0tLS0KK2BBU1NFUlRfREVBVEgoc3RhdGVtZW50LCByZWdleCk7YCAgICAgICAgICAgICAgfCBg
RVhQRUNUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpO2AgICAgICAgICAgICAgIHwgYHN0YXRlbWVu
dGAgY3Jhc2hlcyB3aXRoIHRoZSBnaXZlbiBlcnJvcgorYEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JU
RUQoc3RhdGVtZW50LCByZWdleCk7YCB8IGBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRl
bWVudCwgcmVnZXgpO2AgfCBpZiBkZWF0aCB0ZXN0cyBhcmUgc3VwcG9ydGVkLCB2ZXJpZmllcyB0
aGF0IGBzdGF0ZW1lbnRgIGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3I7IG90aGVyd2lzZSB2
ZXJpZmllcyBub3RoaW5nCitgQVNTRVJUX0VYSVQoc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4
KTtgICAgIHwgYEVYUEVDVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCk7YCAgICB8
IGBzdGF0ZW1lbnRgIGV4aXRzIHdpdGggdGhlIGdpdmVuIGVycm9yLCBhbmQgaXRzIGV4aXQgY29k
ZSBtYXRjaGVzIGBwcmVkaWNhdGVgCisKK3doZXJlIGBzdGF0ZW1lbnRgIGlzIGEgc3RhdGVtZW50
IHRoYXQgaXMgZXhwZWN0ZWQgdG8gY2F1c2UgdGhlIHByb2Nlc3MgdG8gZGllLAorYHByZWRpY2F0
ZWAgaXMgYSBmdW5jdGlvbiBvciBmdW5jdGlvbiBvYmplY3QgdGhhdCBldmFsdWF0ZXMgYW4gaW50
ZWdlciBleGl0CitzdGF0dXMsIGFuZCBgcmVnZXhgIGlzIGEgKFBlcmwpIHJlZ3VsYXIgZXhwcmVz
c2lvbiB0aGF0IHRoZSBzdGRlcnIgb3V0cHV0IG9mCitgc3RhdGVtZW50YCBpcyBleHBlY3RlZCB0
byBtYXRjaC4gTm90ZSB0aGF0IGBzdGF0ZW1lbnRgIGNhbiBiZSAqYW55IHZhbGlkCitzdGF0ZW1l
bnQqIChpbmNsdWRpbmcgKmNvbXBvdW5kIHN0YXRlbWVudCopIGFuZCBkb2Vzbid0IGhhdmUgdG8g
YmUgYW4KK2V4cHJlc3Npb24uCisKKworQXMgdXN1YWwsIHRoZSBgQVNTRVJUYCB2YXJpYW50cyBh
Ym9ydCB0aGUgY3VycmVudCB0ZXN0IGZ1bmN0aW9uLCB3aGlsZSB0aGUKK2BFWFBFQ1RgIHZhcmlh
bnRzIGRvIG5vdC4KKworPiBOT1RFOiBXZSB1c2UgdGhlIHdvcmQgImNyYXNoIiBoZXJlIHRvIG1l
YW4gdGhhdCB0aGUgcHJvY2VzcyB0ZXJtaW5hdGVzIHdpdGggYQorPiAqbm9uLXplcm8qIGV4aXQg
c3RhdHVzIGNvZGUuIFRoZXJlIGFyZSB0d28gcG9zc2liaWxpdGllczogZWl0aGVyIHRoZSBwcm9j
ZXNzCis+IGhhcyBjYWxsZWQgYGV4aXQoKWAgb3IgYF9leGl0KClgIHdpdGggYSBub24temVybyB2
YWx1ZSwgb3IgaXQgbWF5IGJlIGtpbGxlZCBieQorPiBhIHNpZ25hbC4KKz4KKz4gVGhpcyBtZWFu
cyB0aGF0IGlmIGAqc3RhdGVtZW50KmAgdGVybWluYXRlcyB0aGUgcHJvY2VzcyB3aXRoIGEgMCBl
eGl0IGNvZGUsIGl0Cis+IGlzICpub3QqIGNvbnNpZGVyZWQgYSBjcmFzaCBieSBgRVhQRUNUX0RF
QVRIYC4gVXNlIGBFWFBFQ1RfRVhJVGAgaW5zdGVhZCBpZgorPiB0aGlzIGlzIHRoZSBjYXNlLCBv
ciBpZiB5b3Ugd2FudCB0byByZXN0cmljdCB0aGUgZXhpdCBjb2RlIG1vcmUgcHJlY2lzZWx5Lgor
CitBIHByZWRpY2F0ZSBoZXJlIG11c3QgYWNjZXB0IGFuIGBpbnRgIGFuZCByZXR1cm4gYSBgYm9v
bGAuIFRoZSBkZWF0aCB0ZXN0CitzdWNjZWVkcyBvbmx5IGlmIHRoZSBwcmVkaWNhdGUgcmV0dXJu
cyBgdHJ1ZWAuIGdvb2dsZXRlc3QgZGVmaW5lcyBhIGZldworcHJlZGljYXRlcyB0aGF0IGhhbmRs
ZSB0aGUgbW9zdCBjb21tb24gY2FzZXM6CisKK2BgYGMrKworOjp0ZXN0aW5nOjpFeGl0ZWRXaXRo
Q29kZShleGl0X2NvZGUpCitgYGAKKworVGhpcyBleHByZXNzaW9uIGlzIGB0cnVlYCBpZiB0aGUg
cHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHkgd2l0aCB0aGUgZ2l2ZW4gZXhpdAorY29kZS4KKworYGBg
YysrCis6OnRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKHNpZ25hbF9udW1iZXIpICAvLyBOb3QgYXZh
aWxhYmxlIG9uIFdpbmRvd3MuCitgYGAKKworVGhpcyBleHByZXNzaW9uIGlzIGB0cnVlYCBpZiB0
aGUgcHJvZ3JhbSB3YXMga2lsbGVkIGJ5IHRoZSBnaXZlbiBzaWduYWwuCisKK1RoZSBgKl9ERUFU
SGAgbWFjcm9zIGFyZSBjb252ZW5pZW50IHdyYXBwZXJzIGZvciBgKl9FWElUYCB0aGF0IHVzZSBh
IHByZWRpY2F0ZQordGhhdCB2ZXJpZmllcyB0aGUgcHJvY2VzcycgZXhpdCBjb2RlIGlzIG5vbi16
ZXJvLgorCitOb3RlIHRoYXQgYSBkZWF0aCB0ZXN0IG9ubHkgY2FyZXMgYWJvdXQgdGhyZWUgdGhp
bmdzOgorCisxLiAgZG9lcyBgc3RhdGVtZW50YCBhYm9ydCBvciBleGl0IHRoZSBwcm9jZXNzPwor
Mi4gIChpbiB0aGUgY2FzZSBvZiBgQVNTRVJUX0VYSVRgIGFuZCBgRVhQRUNUX0VYSVRgKSBkb2Vz
IHRoZSBleGl0IHN0YXR1cworICAgIHNhdGlzZnkgYHByZWRpY2F0ZWA/IE9yIChpbiB0aGUgY2Fz
ZSBvZiBgQVNTRVJUX0RFQVRIYCBhbmQgYEVYUEVDVF9ERUFUSGApCisgICAgaXMgdGhlIGV4aXQg
c3RhdHVzIG5vbi16ZXJvPyBBbmQKKzMuICBkb2VzIHRoZSBzdGRlcnIgb3V0cHV0IG1hdGNoIGBy
ZWdleGA/CisKK0luIHBhcnRpY3VsYXIsIGlmIGBzdGF0ZW1lbnRgIGdlbmVyYXRlcyBhbiBgQVNT
RVJUXypgIG9yIGBFWFBFQ1RfKmAgZmFpbHVyZSwgaXQKK3dpbGwgKipub3QqKiBjYXVzZSB0aGUg
ZGVhdGggdGVzdCB0byBmYWlsLCBhcyBnb29nbGV0ZXN0IGFzc2VydGlvbnMgZG9uJ3QgYWJvcnQK
K3RoZSBwcm9jZXNzLgorCitUbyB3cml0ZSBhIGRlYXRoIHRlc3QsIHNpbXBseSB1c2Ugb25lIG9m
IHRoZSBhYm92ZSBtYWNyb3MgaW5zaWRlIHlvdXIgdGVzdAorZnVuY3Rpb24uIEZvciBleGFtcGxl
LAorCitgYGBjKysKK1RFU1QoTXlEZWF0aFRlc3QsIEZvbykgeworICAvLyBUaGlzIGRlYXRoIHRl
c3QgdXNlcyBhIGNvbXBvdW5kIHN0YXRlbWVudC4KKyAgQVNTRVJUX0RFQVRIKHsKKyAgICBpbnQg
biA9IDU7CisgICAgRm9vKCZuKTsKKyAgfSwgIkVycm9yIG9uIGxpbmUgLiogb2YgRm9vKCkiKTsK
K30KKworVEVTVChNeURlYXRoVGVzdCwgTm9ybWFsRXhpdCkgeworICBFWFBFQ1RfRVhJVChOb3Jt
YWxFeGl0KCksIDo6dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCksICJTdWNjZXNzIik7Cit9CisK
K1RFU1QoTXlEZWF0aFRlc3QsIEtpbGxNeXNlbGYpIHsKKyAgRVhQRUNUX0VYSVQoS2lsbE15c2Vs
ZigpLCA6OnRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKFNJR0tJTEwpLAorICAgICAgICAgICAgICAi
U2VuZGluZyBteXNlbGYgdW5ibG9ja2FibGUgc2lnbmFsIik7Cit9CitgYGAKKwordmVyaWZpZXMg
dGhhdDoKKworKiAgIGNhbGxpbmcgYEZvbyg1KWAgY2F1c2VzIHRoZSBwcm9jZXNzIHRvIGRpZSB3
aXRoIHRoZSBnaXZlbiBlcnJvciBtZXNzYWdlLAorKiAgIGNhbGxpbmcgYE5vcm1hbEV4aXQoKWAg
Y2F1c2VzIHRoZSBwcm9jZXNzIHRvIHByaW50IGAiU3VjY2VzcyJgIHRvIHN0ZGVyciBhbmQKKyAg
ICBleGl0IHdpdGggZXhpdCBjb2RlIDAsIGFuZAorKiAgIGNhbGxpbmcgYEtpbGxNeXNlbGYoKWAg
a2lsbHMgdGhlIHByb2Nlc3Mgd2l0aCBzaWduYWwgYFNJR0tJTExgLgorCitUaGUgdGVzdCBmdW5j
dGlvbiBib2R5IG1heSBjb250YWluIG90aGVyIGFzc2VydGlvbnMgYW5kIHN0YXRlbWVudHMgYXMg
d2VsbCwgaWYKK25lY2Vzc2FyeS4KKworIyMjIERlYXRoIFRlc3QgTmFtaW5nCisKK0lNUE9SVEFO
VDogV2Ugc3Ryb25nbHkgcmVjb21tZW5kIHlvdSB0byBmb2xsb3cgdGhlIGNvbnZlbnRpb24gb2Yg
bmFtaW5nIHlvdXIKKyoqdGVzdCBjYXNlKiogKG5vdCB0ZXN0KSBgKkRlYXRoVGVzdGAgd2hlbiBp
dCBjb250YWlucyBhIGRlYXRoIHRlc3QsIGFzCitkZW1vbnN0cmF0ZWQgaW4gdGhlIGFib3ZlIGV4
YW1wbGUuIFRoZSBbRGVhdGggVGVzdHMgQW5kCitUaHJlYWRzXSgjZGVhdGgtdGVzdHMtYW5kLXRo
cmVhZHMpIHNlY3Rpb24gYmVsb3cgZXhwbGFpbnMgd2h5LgorCitJZiBhIHRlc3QgZml4dHVyZSBj
bGFzcyBpcyBzaGFyZWQgYnkgbm9ybWFsIHRlc3RzIGFuZCBkZWF0aCB0ZXN0cywgeW91IGNhbiB1
c2UKK2B1c2luZ2Agb3IgYHR5cGVkZWZgIHRvIGludHJvZHVjZSBhbiBhbGlhcyBmb3IgdGhlIGZp
eHR1cmUgY2xhc3MgYW5kIGF2b2lkCitkdXBsaWNhdGluZyBpdHMgY29kZToKKworYGBgYysrCitj
bGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OworCit1c2luZyBG
b29EZWF0aFRlc3QgPSBGb29UZXN0OworCitURVNUX0YoRm9vVGVzdCwgRG9lc1RoaXMpIHsKKyAg
Ly8gbm9ybWFsIHRlc3QKK30KKworVEVTVF9GKEZvb0RlYXRoVGVzdCwgRG9lc1RoYXQpIHsKKyAg
Ly8gZGVhdGggdGVzdAorfQorYGBgCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dz
IChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIEN5Z3dpbiwgYW5kIE1hYworCisjIyMgUmVn
dWxhciBFeHByZXNzaW9uIFN5bnRheAorCisKK09uIFBPU0lYIHN5c3RlbXMgKGUuZy4gTGludXgs
IEN5Z3dpbiwgYW5kIE1hYyksIGdvb2dsZXRlc3QgdXNlcyB0aGUKK1tQT1NJWCBleHRlbmRlZCBy
ZWd1bGFyIGV4cHJlc3Npb25dKGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAw
OTY5NTM5OS9iYXNlZGVmcy94YmRfY2hhcDA5Lmh0bWwjdGFnXzA5XzA0KQorc3ludGF4LiBUbyBs
ZWFybiBhYm91dCB0aGlzIHN5bnRheCwgeW91IG1heSB3YW50IHRvIHJlYWQgdGhpcworW1dpa2lw
ZWRpYSBlbnRyeV0oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWd1bGFyX2V4cHJlc3Np
b24jUE9TSVhfRXh0ZW5kZWRfUmVndWxhcl9FeHByZXNzaW9ucykuCisKK09uIFdpbmRvd3MsIGdv
b2dsZXRlc3QgdXNlcyBpdHMgb3duIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24gaW1wbGVtZW50
YXRpb24uIEl0CitsYWNrcyBtYW55IGZlYXR1cmVzLiBGb3IgZXhhbXBsZSwgd2UgZG9uJ3Qgc3Vw
cG9ydCB1bmlvbiAoYCJ4fHkiYCksIGdyb3VwaW5nCisoYCIoeHkpImApLCBicmFja2V0cyAoYCJb
eHldImApLCBhbmQgcmVwZXRpdGlvbiBjb3VudCAoYCJ4ezUsN30iYCksIGFtb25nCitvdGhlcnMu
IEJlbG93IGlzIHdoYXQgd2UgZG8gc3VwcG9ydCAoYEFgIGRlbm90ZXMgYSBsaXRlcmFsIGNoYXJh
Y3RlciwgcGVyaW9kCisoYC5gKSwgb3IgYSBzaW5nbGUgYFxcIGAgZXNjYXBlIHNlcXVlbmNlOyBg
eGAgYW5kIGB5YCBkZW5vdGUgcmVndWxhcgorZXhwcmVzc2lvbnMuKToKKworRXhwcmVzc2lvbiB8
IE1lYW5pbmcKKy0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorYGNgICAgICAgICB8IG1hdGNoZXMgYW55IGxp
dGVyYWwgY2hhcmFjdGVyIGBjYAorYFxcZGAgICAgICB8IG1hdGNoZXMgYW55IGRlY2ltYWwgZGln
aXQKK2BcXERgICAgICAgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBhIGRlY2lt
YWwgZGlnaXQKK2BcXGZgICAgICAgfCBtYXRjaGVzIGBcZmAKK2BcXG5gICAgICAgfCBtYXRjaGVz
IGBcbmAKK2BcXHJgICAgICAgfCBtYXRjaGVzIGBccmAKK2BcXHNgICAgICAgfCBtYXRjaGVzIGFu
eSBBU0NJSSB3aGl0ZXNwYWNlLCBpbmNsdWRpbmcgYFxuYAorYFxcU2AgICAgICB8IG1hdGNoZXMg
YW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgd2hpdGVzcGFjZQorYFxcdGAgICAgICB8IG1hdGNo
ZXMgYFx0YAorYFxcdmAgICAgICB8IG1hdGNoZXMgYFx2YAorYFxcd2AgICAgICB8IG1hdGNoZXMg
YW55IGxldHRlciwgYF9gLCBvciBkZWNpbWFsIGRpZ2l0CitgXFxXYCAgICAgIHwgbWF0Y2hlcyBh
bnkgY2hhcmFjdGVyIHRoYXQgYFxcd2AgZG9lc24ndCBtYXRjaAorYFxcY2AgICAgICB8IG1hdGNo
ZXMgYW55IGxpdGVyYWwgY2hhcmFjdGVyIGBjYCwgd2hpY2ggbXVzdCBiZSBhIHB1bmN0dWF0aW9u
CitgLmAgICAgICAgIHwgbWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciBleGNlcHQgYFxuYAor
YEE/YCAgICAgICB8IG1hdGNoZXMgMCBvciAxIG9jY3VycmVuY2VzIG9mIGBBYAorYEEqYCAgICAg
ICB8IG1hdGNoZXMgMCBvciBtYW55IG9jY3VycmVuY2VzIG9mIGBBYAorYEErYCAgICAgICB8IG1h
dGNoZXMgMSBvciBtYW55IG9jY3VycmVuY2VzIG9mIGBBYAorYF5gICAgICAgICB8IG1hdGNoZXMg
dGhlIGJlZ2lubmluZyBvZiBhIHN0cmluZyAobm90IHRoYXQgb2YgZWFjaCBsaW5lKQorYCRgICAg
ICAgICB8IG1hdGNoZXMgdGhlIGVuZCBvZiBhIHN0cmluZyAobm90IHRoYXQgb2YgZWFjaCBsaW5l
KQorYHh5YCAgICAgICB8IG1hdGNoZXMgYHhgIGZvbGxvd2VkIGJ5IGB5YAorCitUbyBoZWxwIHlv
dSBkZXRlcm1pbmUgd2hpY2ggY2FwYWJpbGl0eSBpcyBhdmFpbGFibGUgb24geW91ciBzeXN0ZW0s
IGdvb2dsZXRlc3QKK2RlZmluZXMgbWFjcm9zIHRvIGdvdmVybiB3aGljaCByZWd1bGFyIGV4cHJl
c3Npb24gaXQgaXMgdXNpbmcuIFRoZSBtYWNyb3MgYXJlOgorPCEtLWFic2w6Z29vZ2xlMy1iZWdp
bihnb29nbGUzLW9ubHkpLS0+YEdURVNUX1VTRVNfUENSRT0xYCwgb3IKKzwhLS1hYnNsOmdvb2ds
ZTMtZW5kLS0+IGBHVEVTVF9VU0VTX1NJTVBMRV9SRT0xYCBvciBgR1RFU1RfVVNFU19QT1NJWF9S
RT0xYC4gSWYKK3lvdSB3YW50IHlvdXIgZGVhdGggdGVzdHMgdG8gd29yayBpbiBhbGwgY2FzZXMs
IHlvdSBjYW4gZWl0aGVyIGAjaWZgIG9uIHRoZXNlCittYWNyb3Mgb3IgdXNlIHRoZSBtb3JlIGxp
bWl0ZWQgc3ludGF4IG9ubHkuCisKKyMjIyBIb3cgSXQgV29ya3MKKworVW5kZXIgdGhlIGhvb2Qs
IGBBU1NFUlRfRVhJVCgpYCBzcGF3bnMgYSBuZXcgcHJvY2VzcyBhbmQgZXhlY3V0ZXMgdGhlIGRl
YXRoIHRlc3QKK3N0YXRlbWVudCBpbiB0aGF0IHByb2Nlc3MuIFRoZSBkZXRhaWxzIG9mIGhvdyBw
cmVjaXNlbHkgdGhhdCBoYXBwZW5zIGRlcGVuZCBvbgordGhlIHBsYXRmb3JtIGFuZCB0aGUgdmFy
aWFibGUgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpICh3aGljaCBpcwor
aW5pdGlhbGl6ZWQgZnJvbSB0aGUgY29tbWFuZC1saW5lIGZsYWcgYC0tZ3Rlc3RfZGVhdGhfdGVz
dF9zdHlsZWApLgorCisqICAgT24gUE9TSVggc3lzdGVtcywgYGZvcmsoKWAgKG9yIGBjbG9uZSgp
YCBvbiBMaW51eCkgaXMgdXNlZCB0byBzcGF3biB0aGUKKyAgICBjaGlsZCwgYWZ0ZXIgd2hpY2g6
CisgICAgKiAgIElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlzIGAiZmFzdCJgLCB0aGUgZGVhdGgg
dGVzdCBzdGF0ZW1lbnQgaXMKKyAgICAgICAgaW1tZWRpYXRlbHkgZXhlY3V0ZWQuCisgICAgKiAg
IElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlzIGAidGhyZWFkc2FmZSJgLCB0aGUgY2hpbGQgcHJv
Y2VzcyByZS1leGVjdXRlcworICAgICAgICB0aGUgdW5pdCB0ZXN0IGJpbmFyeSBqdXN0IGFzIGl0
IHdhcyBvcmlnaW5hbGx5IGludm9rZWQsIGJ1dCB3aXRoIHNvbWUKKyAgICAgICAgZXh0cmEgZmxh
Z3MgdG8gY2F1c2UganVzdCB0aGUgc2luZ2xlIGRlYXRoIHRlc3QgdW5kZXIgY29uc2lkZXJhdGlv
biB0bworICAgICAgICBiZSBydW4uCisqICAgT24gV2luZG93cywgdGhlIGNoaWxkIGlzIHNwYXdu
ZWQgdXNpbmcgdGhlIGBDcmVhdGVQcm9jZXNzKClgIEFQSSwgYW5kCisgICAgcmUtZXhlY3V0ZXMg
dGhlIGJpbmFyeSB0byBjYXVzZSBqdXN0IHRoZSBzaW5nbGUgZGVhdGggdGVzdCB1bmRlcgorICAg
IGNvbnNpZGVyYXRpb24gdG8gYmUgcnVuIC0gbXVjaCBsaWtlIHRoZSBgdGhyZWFkc2FmZWAgbW9k
ZSBvbiBQT1NJWC4KKworT3RoZXIgdmFsdWVzIGZvciB0aGUgdmFyaWFibGUgYXJlIGlsbGVnYWwg
YW5kIHdpbGwgY2F1c2UgdGhlIGRlYXRoIHRlc3QgdG8gZmFpbC4KK0N1cnJlbnRseSwgdGhlIGZs
YWcncyBkZWZhdWx0IHZhbHVlIGlzCisiZmFzdCIuIEhvd2V2ZXIsIHdlIHJlc2VydmUKK3RoZSBy
aWdodCB0byBjaGFuZ2UgaXQgaW4gdGhlIGZ1dHVyZS4gVGhlcmVmb3JlLCB5b3VyIHRlc3RzIHNo
b3VsZCBub3QgZGVwZW5kIG9uCit0aGlzLiBJbiBlaXRoZXIgY2FzZSwgdGhlIHBhcmVudCBwcm9j
ZXNzIHdhaXRzIGZvciB0aGUgY2hpbGQgcHJvY2VzcyB0bworY29tcGxldGUsIGFuZCBjaGVja3Mg
dGhhdAorCisxLiAgdGhlIGNoaWxkJ3MgZXhpdCBzdGF0dXMgc2F0aXNmaWVzIHRoZSBwcmVkaWNh
dGUsIGFuZAorMi4gIHRoZSBjaGlsZCdzIHN0ZGVyciBtYXRjaGVzIHRoZSByZWd1bGFyIGV4cHJl
c3Npb24uCisKK0lmIHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudCBydW5zIHRvIGNvbXBsZXRpb24g
d2l0aG91dCBkeWluZywgdGhlIGNoaWxkIHByb2Nlc3MKK3dpbGwgbm9uZXRoZWxlc3MgdGVybWlu
YXRlLCBhbmQgdGhlIGFzc2VydGlvbiBmYWlscy4KKworIyMjIERlYXRoIFRlc3RzIEFuZCBUaHJl
YWRzCisKK1RoZSByZWFzb24gZm9yIHRoZSB0d28gZGVhdGggdGVzdCBzdHlsZXMgaGFzIHRvIGRv
IHdpdGggdGhyZWFkIHNhZmV0eS4gRHVlIHRvCit3ZWxsLWtub3duIHByb2JsZW1zIHdpdGggZm9y
a2luZyBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhyZWFkcywgZGVhdGggdGVzdHMgc2hvdWxkCitiZSBy
dW4gaW4gYSBzaW5nbGUtdGhyZWFkZWQgY29udGV4dC4gU29tZXRpbWVzLCBob3dldmVyLCBpdCBp
c24ndCBmZWFzaWJsZSB0bworYXJyYW5nZSB0aGF0IGtpbmQgb2YgZW52aXJvbm1lbnQuIEZvciBl
eGFtcGxlLCBzdGF0aWNhbGx5LWluaXRpYWxpemVkIG1vZHVsZXMKK21heSBzdGFydCB0aHJlYWRz
IGJlZm9yZSBtYWluIGlzIGV2ZXIgcmVhY2hlZC4gT25jZSB0aHJlYWRzIGhhdmUgYmVlbiBjcmVh
dGVkLAoraXQgbWF5IGJlIGRpZmZpY3VsdCBvciBpbXBvc3NpYmxlIHRvIGNsZWFuIHRoZW0gdXAu
CisKK2dvb2dsZXRlc3QgaGFzIHRocmVlIGZlYXR1cmVzIGludGVuZGVkIHRvIHJhaXNlIGF3YXJl
bmVzcyBvZiB0aHJlYWRpbmcgaXNzdWVzLgorCisxLiAgQSB3YXJuaW5nIGlzIGVtaXR0ZWQgaWYg
bXVsdGlwbGUgdGhyZWFkcyBhcmUgcnVubmluZyB3aGVuIGEgZGVhdGggdGVzdCBpcworICAgIGVu
Y291bnRlcmVkLgorMi4gIFRlc3QgY2FzZXMgd2l0aCBhIG5hbWUgZW5kaW5nIGluICJEZWF0aFRl
c3QiIGFyZSBydW4gYmVmb3JlIGFsbCBvdGhlciB0ZXN0cy4KKzMuICBJdCB1c2VzIGBjbG9uZSgp
YCBpbnN0ZWFkIG9mIGBmb3JrKClgIHRvIHNwYXduIHRoZSBjaGlsZCBwcm9jZXNzIG9uIExpbnV4
CisgICAgKGBjbG9uZSgpYCBpcyBub3QgYXZhaWxhYmxlIG9uIEN5Z3dpbiBhbmQgTWFjKSwgYXMg
YGZvcmsoKWAgaXMgbW9yZSBsaWtlbHkKKyAgICB0byBjYXVzZSB0aGUgY2hpbGQgdG8gaGFuZyB3
aGVuIHRoZSBwYXJlbnQgcHJvY2VzcyBoYXMgbXVsdGlwbGUgdGhyZWFkcy4KKworSXQncyBwZXJm
ZWN0bHkgZmluZSB0byBjcmVhdGUgdGhyZWFkcyBpbnNpZGUgYSBkZWF0aCB0ZXN0IHN0YXRlbWVu
dDsgdGhleSBhcmUKK2V4ZWN1dGVkIGluIGEgc2VwYXJhdGUgcHJvY2VzcyBhbmQgY2Fubm90IGFm
ZmVjdCB0aGUgcGFyZW50LgorCisjIyMgRGVhdGggVGVzdCBTdHlsZXMKKworCitUaGUgInRocmVh
ZHNhZmUiIGRlYXRoIHRlc3Qgc3R5bGUgd2FzIGludHJvZHVjZWQgaW4gb3JkZXIgdG8gaGVscCBt
aXRpZ2F0ZSB0aGUKK3Jpc2tzIG9mIHRlc3RpbmcgaW4gYSBwb3NzaWJseSBtdWx0aXRocmVhZGVk
IGVudmlyb25tZW50LiBJdCB0cmFkZXMgaW5jcmVhc2VkCit0ZXN0IGV4ZWN1dGlvbiB0aW1lIChw
b3RlbnRpYWxseSBkcmFtYXRpY2FsbHkgc28pIGZvciBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5Lgor
CitUaGUgYXV0b21hdGVkIHRlc3RpbmcgZnJhbWV3b3JrIGRvZXMgbm90IHNldCB0aGUgc3R5bGUg
ZmxhZy4gWW91IGNhbiBjaG9vc2UgYQorcGFydGljdWxhciBzdHlsZSBvZiBkZWF0aCB0ZXN0cyBi
eSBzZXR0aW5nIHRoZSBmbGFnIHByb2dyYW1tYXRpY2FsbHk6CisKK2BgYGMrKwordGVzdGluZzo6
RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZT0idGhyZWFkc2FmZSIKK2BgYAorCitZb3UgY2Fu
IGRvIHRoaXMgaW4gYG1haW4oKWAgdG8gc2V0IHRoZSBzdHlsZSBmb3IgYWxsIGRlYXRoIHRlc3Rz
IGluIHRoZSBiaW5hcnksCitvciBpbiBpbmRpdmlkdWFsIHRlc3RzLiBSZWNhbGwgdGhhdCBmbGFn
cyBhcmUgc2F2ZWQgYmVmb3JlIHJ1bm5pbmcgZWFjaCB0ZXN0IGFuZAorcmVzdG9yZWQgYWZ0ZXJ3
YXJkcywgc28geW91IG5lZWQgbm90IGRvIHRoYXQgeW91cnNlbGYuIEZvciBleGFtcGxlOgorCitg
YGBjKysKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICBJbml0R29vZ2xlKGFy
Z3ZbMF0sICZhcmdjLCAmYXJndiwgdHJ1ZSk7CisgIDo6dGVzdGluZzo6RkxBR1NfZ3Rlc3RfZGVh
dGhfdGVzdF9zdHlsZSA9ICJmYXN0IjsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KKwor
VEVTVChNeURlYXRoVGVzdCwgVGVzdE9uZSkgeworICA6OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2Rl
YXRoX3Rlc3Rfc3R5bGUgPSAidGhyZWFkc2FmZSI7CisgIC8vIFRoaXMgdGVzdCBpcyBydW4gaW4g
dGhlICJ0aHJlYWRzYWZlIiBzdHlsZToKKyAgQVNTRVJUX0RFQVRIKFRoaXNTaG91bGREaWUoKSwg
IiIpOworfQorCitURVNUKE15RGVhdGhUZXN0LCBUZXN0VHdvKSB7CisgIC8vIFRoaXMgdGVzdCBp
cyBydW4gaW4gdGhlICJmYXN0IiBzdHlsZToKKyAgQVNTRVJUX0RFQVRIKFRoaXNTaG91bGREaWUo
KSwgIiIpOworfQorYGBgCisKKworIyMjIENhdmVhdHMKKworVGhlIGBzdGF0ZW1lbnRgIGFyZ3Vt
ZW50IG9mIGBBU1NFUlRfRVhJVCgpYCBjYW4gYmUgYW55IHZhbGlkIEMrKyBzdGF0ZW1lbnQuIElm
CitpdCBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gdmlhIGEgYHJldHVybmAgc3RhdGVtZW50
IG9yIGJ5IHRocm93aW5nIGFuCitleGNlcHRpb24sIHRoZSBkZWF0aCB0ZXN0IGlzIGNvbnNpZGVy
ZWQgdG8gaGF2ZSBmYWlsZWQuIFNvbWUgZ29vZ2xldGVzdCBtYWNyb3MKK21heSByZXR1cm4gZnJv
bSB0aGUgY3VycmVudCBmdW5jdGlvbiAoZS5nLiBgQVNTRVJUX1RSVUUoKWApLCBzbyBiZSBzdXJl
IHRvIGF2b2lkCit0aGVtIGluIGBzdGF0ZW1lbnRgLgorCitTaW5jZSBgc3RhdGVtZW50YCBydW5z
IGluIHRoZSBjaGlsZCBwcm9jZXNzLCBhbnkgaW4tbWVtb3J5IHNpZGUgZWZmZWN0IChlLmcuCitt
b2RpZnlpbmcgYSB2YXJpYWJsZSwgcmVsZWFzaW5nIG1lbW9yeSwgZXRjKSBpdCBjYXVzZXMgd2ls
bCAqbm90KiBiZSBvYnNlcnZhYmxlCitpbiB0aGUgcGFyZW50IHByb2Nlc3MuIEluIHBhcnRpY3Vs
YXIsIGlmIHlvdSByZWxlYXNlIG1lbW9yeSBpbiBhIGRlYXRoIHRlc3QsCit5b3VyIHByb2dyYW0g
d2lsbCBmYWlsIHRoZSBoZWFwIGNoZWNrIGFzIHRoZSBwYXJlbnQgcHJvY2VzcyB3aWxsIG5ldmVy
IHNlZSB0aGUKK21lbW9yeSByZWNsYWltZWQuIFRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgeW91IGNh
bgorCisxLiAgdHJ5IG5vdCB0byBmcmVlIG1lbW9yeSBpbiBhIGRlYXRoIHRlc3Q7CisyLiAgZnJl
ZSB0aGUgbWVtb3J5IGFnYWluIGluIHRoZSBwYXJlbnQgcHJvY2Vzczsgb3IKKzMuICBkbyBub3Qg
dXNlIHRoZSBoZWFwIGNoZWNrZXIgaW4geW91ciBwcm9ncmFtLgorCitEdWUgdG8gYW4gaW1wbGVt
ZW50YXRpb24gZGV0YWlsLCB5b3UgY2Fubm90IHBsYWNlIG11bHRpcGxlIGRlYXRoIHRlc3QgYXNz
ZXJ0aW9ucworb24gdGhlIHNhbWUgbGluZTsgb3RoZXJ3aXNlLCBjb21waWxhdGlvbiB3aWxsIGZh
aWwgd2l0aCBhbiB1bm9idmlvdXMgZXJyb3IKK21lc3NhZ2UuCisKK0Rlc3BpdGUgdGhlIGltcHJv
dmVkIHRocmVhZCBzYWZldHkgYWZmb3JkZWQgYnkgdGhlICJ0aHJlYWRzYWZlIiBzdHlsZSBvZiBk
ZWF0aAordGVzdCwgdGhyZWFkIHByb2JsZW1zIHN1Y2ggYXMgZGVhZGxvY2sgYXJlIHN0aWxsIHBv
c3NpYmxlIGluIHRoZSBwcmVzZW5jZSBvZgoraGFuZGxlcnMgcmVnaXN0ZXJlZCB3aXRoIGBwdGhy
ZWFkX2F0Zm9yaygzKWAuCisKKworIyMgVXNpbmcgQXNzZXJ0aW9ucyBpbiBTdWItcm91dGluZXMK
KworIyMjIEFkZGluZyBUcmFjZXMgdG8gQXNzZXJ0aW9ucworCitJZiBhIHRlc3Qgc3ViLXJvdXRp
bmUgaXMgY2FsbGVkIGZyb20gc2V2ZXJhbCBwbGFjZXMsIHdoZW4gYW4gYXNzZXJ0aW9uIGluc2lk
ZSBpdAorZmFpbHMsIGl0IGNhbiBiZSBoYXJkIHRvIHRlbGwgd2hpY2ggaW52b2NhdGlvbiBvZiB0
aGUgc3ViLXJvdXRpbmUgdGhlIGZhaWx1cmUgaXMKK2Zyb20uIAorWW91IGNhbiBhbGxldmlhdGUg
dGhpcyBwcm9ibGVtIHVzaW5nIGV4dHJhIGxvZ2dpbmcgb3IgY3VzdG9tIGZhaWx1cmUgbWVzc2Fn
ZXMsCitidXQgdGhhdCB1c3VhbGx5IGNsdXR0ZXJzIHVwIHlvdXIgdGVzdHMuIEEgYmV0dGVyIHNv
bHV0aW9uIGlzIHRvIHVzZSB0aGUKK2BTQ09QRURfVFJBQ0VgIG1hY3JvIG9yIHRoZSBgU2NvcGVk
VHJhY2VgIHV0aWxpdHk6CisKK2BgYGMrKworU0NPUEVEX1RSQUNFKG1lc3NhZ2UpOworU2NvcGVk
VHJhY2UgdHJhY2UoImZpbGVfcGF0aCIsIGxpbmVfbnVtYmVyLCBtZXNzYWdlKTsKK2BgYAorCit3
aGVyZSBgbWVzc2FnZWAgY2FuIGJlIGFueXRoaW5nIHN0cmVhbWFibGUgdG8gYHN0ZDo6b3N0cmVh
bWAuIGBTQ09QRURfVFJBQ0VgCittYWNybyB3aWxsIGNhdXNlIHRoZSBjdXJyZW50IGZpbGUgbmFt
ZSwgbGluZSBudW1iZXIsIGFuZCB0aGUgZ2l2ZW4gbWVzc2FnZSB0byBiZQorYWRkZWQgaW4gZXZl
cnkgZmFpbHVyZSBtZXNzYWdlLiBgU2NvcGVkVHJhY2VgIGFjY2VwdHMgZXhwbGljaXQgZmlsZSBu
YW1lIGFuZAorbGluZSBudW1iZXIgaW4gYXJndW1lbnRzLCB3aGljaCBpcyB1c2VmdWwgZm9yIHdy
aXRpbmcgdGVzdCBoZWxwZXJzLiBUaGUgZWZmZWN0Cit3aWxsIGJlIHVuZG9uZSB3aGVuIHRoZSBj
b250cm9sIGxlYXZlcyB0aGUgY3VycmVudCBsZXhpY2FsIHNjb3BlLgorCitGb3IgZXhhbXBsZSwK
KworYGBgYysrCisxMDogdm9pZCBTdWIxKGludCBuKSB7CisxMTogICBFWFBFQ1RfRVEoMSwgQmFy
KG4pKTsKKzEyOiAgIEVYUEVDVF9FUSgyLCBCYXIobiArIDEpKTsKKzEzOiB9CisxNDoKKzE1OiBU
RVNUKEZvb1Rlc3QsIEJhcikgeworMTY6ICAgeworMTc6ICAgICBTQ09QRURfVFJBQ0UoIkEiKTsg
IC8vIFRoaXMgdHJhY2UgcG9pbnQgd2lsbCBiZSBpbmNsdWRlZCBpbgorMTg6ICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGV2ZXJ5IGZhaWx1cmUgaW4gdGhpcyBzY29wZS4KKzE5OiAgICAgU3Vi
MSgxKTsKKzIwOiAgIH0KKzIxOiAgIC8vIE5vdyBpdCB3b24ndC4KKzIyOiAgIFN1YjEoOSk7Cisy
MzogfQorYGBgCisKK2NvdWxkIHJlc3VsdCBpbiBtZXNzYWdlcyBsaWtlIHRoZXNlOgorCitgYGBu
b25lCitwYXRoL3RvL2Zvb190ZXN0LmNjOjExOiBGYWlsdXJlCitWYWx1ZSBvZjogQmFyKG4pCitF
eHBlY3RlZDogMQorICBBY3R1YWw6IDIKKyAgIFRyYWNlOgorcGF0aC90by9mb29fdGVzdC5jYzox
NzogQQorCitwYXRoL3RvL2Zvb190ZXN0LmNjOjEyOiBGYWlsdXJlCitWYWx1ZSBvZjogQmFyKG4g
KyAxKQorRXhwZWN0ZWQ6IDIKKyAgQWN0dWFsOiAzCitgYGAKKworV2l0aG91dCB0aGUgdHJhY2Us
IGl0IHdvdWxkJ3ZlIGJlZW4gZGlmZmljdWx0IHRvIGtub3cgd2hpY2ggaW52b2NhdGlvbiBvZgor
YFN1YjEoKWAgdGhlIHR3byBmYWlsdXJlcyBjb21lIGZyb20gcmVzcGVjdGl2ZWx5LiAoWW91IGNv
dWxkIGFkZAorCithbiBleHRyYSBtZXNzYWdlIHRvIGVhY2ggYXNzZXJ0aW9uIGluIGBTdWIxKClg
IHRvIGluZGljYXRlIHRoZSB2YWx1ZSBvZiBgbmAsIGJ1dAordGhhdCdzIHRlZGlvdXMuKQorCitT
b21lIHRpcHMgb24gdXNpbmcgYFNDT1BFRF9UUkFDRWA6CisKKzEuICBXaXRoIGEgc3VpdGFibGUg
bWVzc2FnZSwgaXQncyBvZnRlbiBlbm91Z2ggdG8gdXNlIGBTQ09QRURfVFJBQ0VgIGF0IHRoZQor
ICAgIGJlZ2lubmluZyBvZiBhIHN1Yi1yb3V0aW5lLCBpbnN0ZWFkIG9mIGF0IGVhY2ggY2FsbCBz
aXRlLgorMi4gIFdoZW4gY2FsbGluZyBzdWItcm91dGluZXMgaW5zaWRlIGEgbG9vcCwgbWFrZSB0
aGUgbG9vcCBpdGVyYXRvciBwYXJ0IG9mIHRoZQorICAgIG1lc3NhZ2UgaW4gYFNDT1BFRF9UUkFD
RWAgc3VjaCB0aGF0IHlvdSBjYW4ga25vdyB3aGljaCBpdGVyYXRpb24gdGhlIGZhaWx1cmUKKyAg
ICBpcyBmcm9tLgorMy4gIFNvbWV0aW1lcyB0aGUgbGluZSBudW1iZXIgb2YgdGhlIHRyYWNlIHBv
aW50IGlzIGVub3VnaCBmb3IgaWRlbnRpZnlpbmcgdGhlCisgICAgcGFydGljdWxhciBpbnZvY2F0
aW9uIG9mIGEgc3ViLXJvdXRpbmUuIEluIHRoaXMgY2FzZSwgeW91IGRvbid0IGhhdmUgdG8KKyAg
ICBjaG9vc2UgYSB1bmlxdWUgbWVzc2FnZSBmb3IgYFNDT1BFRF9UUkFDRWAuIFlvdSBjYW4gc2lt
cGx5IHVzZSBgIiJgLgorNC4gIFlvdSBjYW4gdXNlIGBTQ09QRURfVFJBQ0VgIGluIGFuIGlubmVy
IHNjb3BlIHdoZW4gdGhlcmUgaXMgb25lIGluIHRoZSBvdXRlcgorICAgIHNjb3BlLiBJbiB0aGlz
IGNhc2UsIGFsbCBhY3RpdmUgdHJhY2UgcG9pbnRzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGZh
aWx1cmUKKyAgICBtZXNzYWdlcywgaW4gcmV2ZXJzZSBvcmRlciB0aGV5IGFyZSBlbmNvdW50ZXJl
ZC4KKzUuICBUaGUgdHJhY2UgZHVtcCBpcyBjbGlja2FibGUgaW4gRW1hY3MgLSBoaXQgYHJldHVy
bmAgb24gYSBsaW5lIG51bWJlciBhbmQKKyAgICB5b3UnbGwgYmUgdGFrZW4gdG8gdGhhdCBsaW5l
IGluIHRoZSBzb3VyY2UgZmlsZSEKKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3Ms
IE1hYy4KKworIyMjIFByb3BhZ2F0aW5nIEZhdGFsIEZhaWx1cmVzCisKK0EgY29tbW9uIHBpdGZh
bGwgd2hlbiB1c2luZyBgQVNTRVJUXypgIGFuZCBgRkFJTCpgIGlzIG5vdCB1bmRlcnN0YW5kaW5n
IHRoYXQKK3doZW4gdGhleSBmYWlsIHRoZXkgb25seSBhYm9ydCB0aGUgX2N1cnJlbnQgZnVuY3Rp
b25fLCBub3QgdGhlIGVudGlyZSB0ZXN0LiBGb3IKK2V4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVz
dCB3aWxsIHNlZ2ZhdWx0OgorCitgYGBjKysKK3ZvaWQgU3Vicm91dGluZSgpIHsKKyAgLy8gR2Vu
ZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgor
ICBBU1NFUlRfRVEoMSwgMik7CisKKyAgLy8gVGhlIGZvbGxvd2luZyB3b24ndCBiZSBleGVjdXRl
ZC4KKyAgLi4uCit9CisKK1RFU1QoRm9vVGVzdCwgQmFyKSB7CisgIFN1YnJvdXRpbmUoKTsgIC8v
IFRoZSBpbnRlbmRlZCBiZWhhdmlvciBpcyBmb3IgdGhlIGZhdGFsIGZhaWx1cmUKKyAgICAgICAg
ICAgICAgICAgLy8gaW4gU3Vicm91dGluZSgpIHRvIGFib3J0IHRoZSBlbnRpcmUgdGVzdC4KKwor
ICAvLyBUaGUgYWN0dWFsIGJlaGF2aW9yOiB0aGUgZnVuY3Rpb24gZ29lcyBvbiBhZnRlciBTdWJy
b3V0aW5lKCkgcmV0dXJucy4KKyAgaW50KiBwID0gTlVMTDsKKyAgKnAgPSAzOyAgLy8gU2VnZmF1
bHQhCit9CitgYGAKKworVG8gYWxsZXZpYXRlIHRoaXMsIGdvb2dsZXRlc3QgcHJvdmlkZXMgdGhy
ZWUgZGlmZmVyZW50IHNvbHV0aW9ucy4gWW91IGNvdWxkIHVzZQorZWl0aGVyIGV4Y2VwdGlvbnMs
IHRoZSBgKEFTU0VSVHxFWFBFQ1QpX05PX0ZBVEFMX0ZBSUxVUkVgIGFzc2VydGlvbnMgb3IgdGhl
CitgSGFzRmF0YWxGYWlsdXJlKClgIGZ1bmN0aW9uLiBUaGV5IGFyZSBkZXNjcmliZWQgaW4gdGhl
IGZvbGxvd2luZyB0d28KK3N1YnNlY3Rpb25zLgorCisjIyMjIEFzc2VydGluZyBvbiBTdWJyb3V0
aW5lcyB3aXRoIGFuIGV4Y2VwdGlvbgorCitUaGUgZm9sbG93aW5nIGNvZGUgY2FuIHR1cm4gQVNT
RVJULWZhaWx1cmUgaW50byBhbiBleGNlcHRpb246CisKK2BgYGMrKworY2xhc3MgVGhyb3dMaXN0
ZW5lciA6IHB1YmxpYyB0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKKyAgdm9pZCBP
blRlc3RQYXJ0UmVzdWx0KGNvbnN0IHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0JiByZXN1bHQpIG92
ZXJyaWRlIHsKKyAgICBpZiAocmVzdWx0LnR5cGUoKSA9PSB0ZXN0aW5nOjpUZXN0UGFydFJlc3Vs
dDo6a0ZhdGFsRmFpbHVyZSkgeworICAgICAgdGhyb3cgdGVzdGluZzo6QXNzZXJ0aW9uRXhjZXB0
aW9uKHJlc3VsdCk7CisgICAgfQorICB9Cit9OworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBh
cmd2KSB7CisgIC4uLgorICB0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVu
ZXJzKCkuQXBwZW5kKG5ldyBUaHJvd0xpc3RlbmVyKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMo
KTsKK30KK2BgYAorCitUaGlzIGxpc3RlbmVyIHNob3VsZCBiZSBhZGRlZCBhZnRlciBvdGhlciBs
aXN0ZW5lcnMgaWYgeW91IGhhdmUgYW55LCBvdGhlcndpc2UKK3RoZXkgd29uJ3Qgc2VlIGZhaWxl
ZCBgT25UZXN0UGFydFJlc3VsdGAuCisKKyMjIyMgQXNzZXJ0aW5nIG9uIFN1YnJvdXRpbmVzCisK
K0FzIHNob3duIGFib3ZlLCBpZiB5b3VyIHRlc3QgY2FsbHMgYSBzdWJyb3V0aW5lIHRoYXQgaGFz
IGFuIGBBU1NFUlRfKmAgZmFpbHVyZQoraW4gaXQsIHRoZSB0ZXN0IHdpbGwgY29udGludWUgYWZ0
ZXIgdGhlIHN1YnJvdXRpbmUgcmV0dXJucy4gVGhpcyBtYXkgbm90IGJlIHdoYXQKK3lvdSB3YW50
LgorCitPZnRlbiBwZW9wbGUgd2FudCBmYXRhbCBmYWlsdXJlcyB0byBwcm9wYWdhdGUgbGlrZSBl
eGNlcHRpb25zLiBGb3IgdGhhdAorZ29vZ2xldGVzdCBvZmZlcnMgdGhlIGZvbGxvd2luZyBtYWNy
b3M6CisKK0ZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgICAgfCBOb25mYXRhbCBh
c3NlcnRpb24gICAgICAgICAgICAgICAgICAgIHwgVmVyaWZpZXMKKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIHwgLS0tLS0tLS0KK2BBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShzdGF0ZW1lbnQpO2AgfCBg
RVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoc3RhdGVtZW50KTtgIHwgYHN0YXRlbWVudGAgZG9lc24n
dCBnZW5lcmF0ZSBhbnkgbmV3IGZhdGFsIGZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZC4K
KworT25seSBmYWlsdXJlcyBpbiB0aGUgdGhyZWFkIHRoYXQgZXhlY3V0ZXMgdGhlIGFzc2VydGlv
biBhcmUgY2hlY2tlZCB0byBkZXRlcm1pbmUKK3RoZSByZXN1bHQgb2YgdGhpcyB0eXBlIG9mIGFz
c2VydGlvbnMuIElmIGBzdGF0ZW1lbnRgIGNyZWF0ZXMgbmV3IHRocmVhZHMsCitmYWlsdXJlcyBp
biB0aGVzZSB0aHJlYWRzIGFyZSBpZ25vcmVkLgorCitFeGFtcGxlczoKKworYGBgYysrCitBU1NF
UlRfTk9fRkFUQUxfRkFJTFVSRShGb28oKSk7CisKK2ludCBpOworRVhQRUNUX05PX0ZBVEFMX0ZB
SUxVUkUoeworICBpID0gQmFyKCk7Cit9KTsKK2BgYAorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51
eCwgV2luZG93cywgTWFjLiBBc3NlcnRpb25zIGZyb20gbXVsdGlwbGUgdGhyZWFkcyBhcmUKK2N1
cnJlbnRseSBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MuCisKKyMjIyMgQ2hlY2tpbmcgZm9yIEZh
aWx1cmVzIGluIHRoZSBDdXJyZW50IFRlc3QKKworYEhhc0ZhdGFsRmFpbHVyZSgpYCBpbiB0aGUg
YDo6dGVzdGluZzo6VGVzdGAgY2xhc3MgcmV0dXJucyBgdHJ1ZWAgaWYgYW4KK2Fzc2VydGlvbiBp
biB0aGUgY3VycmVudCB0ZXN0IGhhcyBzdWZmZXJlZCBhIGZhdGFsIGZhaWx1cmUuIFRoaXMgYWxs
b3dzCitmdW5jdGlvbnMgdG8gY2F0Y2ggZmF0YWwgZmFpbHVyZXMgaW4gYSBzdWItcm91dGluZSBh
bmQgcmV0dXJuIGVhcmx5LgorCitgYGBjKysKK2NsYXNzIFRlc3QgeworIHB1YmxpYzoKKyAgLi4u
CisgIHN0YXRpYyBib29sIEhhc0ZhdGFsRmFpbHVyZSgpOworfTsKK2BgYAorCitUaGUgdHlwaWNh
bCB1c2FnZSwgd2hpY2ggYmFzaWNhbGx5IHNpbXVsYXRlcyB0aGUgYmVoYXZpb3Igb2YgYSB0aHJv
d24gZXhjZXB0aW9uLAoraXM6CisKK2BgYGMrKworVEVTVChGb29UZXN0LCBCYXIpIHsKKyAgU3Vi
cm91dGluZSgpOworICAvLyBBYm9ydHMgaWYgU3Vicm91dGluZSgpIGhhZCBhIGZhdGFsIGZhaWx1
cmUuCisgIGlmIChIYXNGYXRhbEZhaWx1cmUoKSkgcmV0dXJuOworCisgIC8vIFRoZSBmb2xsb3dp
bmcgd29uJ3QgYmUgZXhlY3V0ZWQuCisgIC4uLgorfQorYGBgCisKK0lmIGBIYXNGYXRhbEZhaWx1
cmUoKWAgaXMgdXNlZCBvdXRzaWRlIG9mIGBURVNUKClgICwgYFRFU1RfRigpYCAsIG9yIGEgdGVz
dAorZml4dHVyZSwgeW91IG11c3QgYWRkIHRoZSBgOjp0ZXN0aW5nOjpUZXN0OjpgIHByZWZpeCwg
YXMgaW46CisKK2BgYGMrKworaWYgKDo6dGVzdGluZzo6VGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkp
IHJldHVybjsKK2BgYAorCitTaW1pbGFybHksIGBIYXNOb25mYXRhbEZhaWx1cmUoKWAgcmV0dXJu
cyBgdHJ1ZWAgaWYgdGhlIGN1cnJlbnQgdGVzdCBoYXMgYXQKK2xlYXN0IG9uZSBub24tZmF0YWwg
ZmFpbHVyZSwgYW5kIGBIYXNGYWlsdXJlKClgIHJldHVybnMgYHRydWVgIGlmIHRoZSBjdXJyZW50
Cit0ZXN0IGhhcyBhdCBsZWFzdCBvbmUgZmFpbHVyZSBvZiBlaXRoZXIga2luZC4KKworKipBdmFp
bGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgTG9nZ2luZyBBZGRpdGlvbmFs
IEluZm9ybWF0aW9uCisKK0luIHlvdXIgdGVzdCBjb2RlLCB5b3UgY2FuIGNhbGwgYFJlY29yZFBy
b3BlcnR5KCJrZXkiLCB2YWx1ZSlgIHRvIGxvZyBhZGRpdGlvbmFsCitpbmZvcm1hdGlvbiwgd2hl
cmUgYHZhbHVlYCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIGBpbnRgLiBUaGUgKmxhc3Qq
IHZhbHVlCityZWNvcmRlZCBmb3IgYSBrZXkgd2lsbCBiZSBlbWl0dGVkIHRvIHRoZSBbWE1MIG91
dHB1dF0oI2dlbmVyYXRpbmctYW4teG1sLXJlcG9ydCkgaWYgeW91CitzcGVjaWZ5IG9uZS4gRm9y
IGV4YW1wbGUsIHRoZSB0ZXN0CisKK2BgYGMrKworVEVTVF9GKFdpZGdldFVzYWdlVGVzdCwgTWlu
QW5kTWF4V2lkZ2V0cykgeworICBSZWNvcmRQcm9wZXJ0eSgiTWF4aW11bVdpZGdldHMiLCBDb21w
dXRlTWF4VXNhZ2UoKSk7CisgIFJlY29yZFByb3BlcnR5KCJNaW5pbXVtV2lkZ2V0cyIsIENvbXB1
dGVNaW5Vc2FnZSgpKTsKK30KK2BgYAorCit3aWxsIG91dHB1dCBYTUwgbGlrZSB0aGlzOgorCitg
YGB4bWwKKyAgLi4uCisgICAgPHRlc3RjYXNlIG5hbWU9Ik1pbkFuZE1heFdpZGdldHMiIHN0YXR1
cz0icnVuIiB0aW1lPSIwLjAwNiIgY2xhc3NuYW1lPSJXaWRnZXRVc2FnZVRlc3QiIE1heGltdW1X
aWRnZXRzPSIxMiIgTWluaW11bVdpZGdldHM9IjkiIC8+CisgIC4uLgorYGBgCisKKz4gTk9URToK
Kz4KKz4gKiAgIGBSZWNvcmRQcm9wZXJ0eSgpYCBpcyBhIHN0YXRpYyBtZW1iZXIgb2YgdGhlIGBU
ZXN0YCBjbGFzcy4gVGhlcmVmb3JlIGl0Cis+ICAgICBuZWVkcyB0byBiZSBwcmVmaXhlZCB3aXRo
IGA6OnRlc3Rpbmc6OlRlc3Q6OmAgaWYgdXNlZCBvdXRzaWRlIG9mIHRoZQorPiAgICAgYFRFU1Rg
IGJvZHkgYW5kIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuCis+ICogICBgKmtleSpgIG11c3QgYmUg
YSB2YWxpZCBYTUwgYXR0cmlidXRlIG5hbWUsIGFuZCBjYW5ub3QgY29uZmxpY3Qgd2l0aCB0aGUK
Kz4gICAgIG9uZXMgYWxyZWFkeSB1c2VkIGJ5IGdvb2dsZXRlc3QgKGBuYW1lYCwgYHN0YXR1c2As
IGB0aW1lYCwgYGNsYXNzbmFtZWAsCis+ICAgICBgdHlwZV9wYXJhbWAsIGFuZCBgdmFsdWVfcGFy
YW1gKS4KKz4gKiAgIENhbGxpbmcgYFJlY29yZFByb3BlcnR5KClgIG91dHNpZGUgb2YgdGhlIGxp
ZmVzcGFuIG9mIGEgdGVzdCBpcyBhbGxvd2VkLgorPiAgICAgSWYgaXQncyBjYWxsZWQgb3V0c2lk
ZSBvZiBhIHRlc3QgYnV0IGJldHdlZW4gYSB0ZXN0IGNhc2UncworPiAgICAgYFNldFVwVGVzdENh
c2UoKWAgYW5kIGBUZWFyRG93blRlc3RDYXNlKClgIG1ldGhvZHMsIGl0IHdpbGwgYmUgYXR0cmli
dXRlZAorPiAgICAgdG8gdGhlIFhNTCBlbGVtZW50IGZvciB0aGUgdGVzdCBjYXNlLiBJZiBpdCdz
IGNhbGxlZCBvdXRzaWRlIG9mIGFsbCB0ZXN0Cis+ICAgICBjYXNlcyAoZS5nLiBpbiBhIHRlc3Qg
ZW52aXJvbm1lbnQpLCBpdCB3aWxsIGJlIGF0dHJpYnV0ZWQgdG8gdGhlIHRvcC1sZXZlbAorPiAg
ICAgWE1MIGVsZW1lbnQuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKKyMjIFNoYXJpbmcgUmVzb3VyY2VzIEJldHdlZW4gVGVzdHMgaW4gdGhlIFNhbWUgVGVzdCBD
YXNlCisKK2dvb2dsZXRlc3QgY3JlYXRlcyBhIG5ldyB0ZXN0IGZpeHR1cmUgb2JqZWN0IGZvciBl
YWNoIHRlc3QgaW4gb3JkZXIgdG8gbWFrZQordGVzdHMgaW5kZXBlbmRlbnQgYW5kIGVhc2llciB0
byBkZWJ1Zy4gSG93ZXZlciwgc29tZXRpbWVzIHRlc3RzIHVzZSByZXNvdXJjZXMKK3RoYXQgYXJl
IGV4cGVuc2l2ZSB0byBzZXQgdXAsIG1ha2luZyB0aGUgb25lLWNvcHktcGVyLXRlc3QgbW9kZWwg
cHJvaGliaXRpdmVseQorZXhwZW5zaXZlLgorCitJZiB0aGUgdGVzdHMgZG9uJ3QgY2hhbmdlIHRo
ZSByZXNvdXJjZSwgdGhlcmUncyBubyBoYXJtIGluIHRoZWlyIHNoYXJpbmcgYQorc2luZ2xlIHJl
c291cmNlIGNvcHkuIFNvLCBpbiBhZGRpdGlvbiB0byBwZXItdGVzdCBzZXQtdXAvdGVhci1kb3du
LCBnb29nbGV0ZXN0CithbHNvIHN1cHBvcnRzIHBlci10ZXN0LWNhc2Ugc2V0LXVwL3RlYXItZG93
bi4gVG8gdXNlIGl0OgorCisxLiAgSW4geW91ciB0ZXN0IGZpeHR1cmUgY2xhc3MgKHNheSBgRm9v
VGVzdGAgKSwgZGVjbGFyZSBhcyBgc3RhdGljYCBzb21lIG1lbWJlcgorICAgIHZhcmlhYmxlcyB0
byBob2xkIHRoZSBzaGFyZWQgcmVzb3VyY2VzLgorMS4gIE91dHNpZGUgeW91ciB0ZXN0IGZpeHR1
cmUgY2xhc3MgKHR5cGljYWxseSBqdXN0IGJlbG93IGl0KSwgZGVmaW5lIHRob3NlCisgICAgbWVt
YmVyIHZhcmlhYmxlcywgb3B0aW9uYWxseSBnaXZpbmcgdGhlbSBpbml0aWFsIHZhbHVlcy4KKzEu
ICBJbiB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUgY2xhc3MsIGRlZmluZSBhIGBzdGF0aWMgdm9pZCBT
ZXRVcFRlc3RDYXNlKClgCisgICAgZnVuY3Rpb24gKHJlbWVtYmVyIG5vdCB0byBzcGVsbCBpdCBh
cyAqKmBTZXR1cFRlc3RDYXNlYCoqIHdpdGggYSBzbWFsbCBgdWAhKQorICAgIHRvIHNldCB1cCB0
aGUgc2hhcmVkIHJlc291cmNlcyBhbmQgYSBgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgp
YAorICAgIGZ1bmN0aW9uIHRvIHRlYXIgdGhlbSBkb3duLgorCitUaGF0J3MgaXQhIGdvb2dsZXRl
c3QgYXV0b21hdGljYWxseSBjYWxscyBgU2V0VXBUZXN0Q2FzZSgpYCBiZWZvcmUgcnVubmluZyB0
aGUKKypmaXJzdCB0ZXN0KiBpbiB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZSAoaS5lLiBiZWZvcmUg
Y3JlYXRpbmcgdGhlIGZpcnN0CitgRm9vVGVzdGAgb2JqZWN0KSwgYW5kIGNhbGxzIGBUZWFyRG93
blRlc3RDYXNlKClgIGFmdGVyIHJ1bm5pbmcgdGhlICpsYXN0IHRlc3QqCitpbiBpdCAoaS5lLiBh
ZnRlciBkZWxldGluZyB0aGUgbGFzdCBgRm9vVGVzdGAgb2JqZWN0KS4gSW4gYmV0d2VlbiwgdGhl
IHRlc3RzIGNhbgordXNlIHRoZSBzaGFyZWQgcmVzb3VyY2VzLgorCitSZW1lbWJlciB0aGF0IHRo
ZSB0ZXN0IG9yZGVyIGlzIHVuZGVmaW5lZCwgc28geW91ciBjb2RlIGNhbid0IGRlcGVuZCBvbiBh
IHRlc3QKK3ByZWNlZGluZyBvciBmb2xsb3dpbmcgYW5vdGhlci4gQWxzbywgdGhlIHRlc3RzIG11
c3QgZWl0aGVyIG5vdCBtb2RpZnkgdGhlIHN0YXRlCitvZiBhbnkgc2hhcmVkIHJlc291cmNlLCBv
ciwgaWYgdGhleSBkbyBtb2RpZnkgdGhlIHN0YXRlLCB0aGV5IG11c3QgcmVzdG9yZSB0aGUKK3N0
YXRlIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZSBiZWZvcmUgcGFzc2luZyBjb250cm9sIHRvIHRoZSBu
ZXh0IHRlc3QuCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIHBlci10ZXN0LWNhc2Ugc2V0LXVwIGFu
ZCB0ZWFyLWRvd246CisKK2BgYGMrKworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLy8gUGVyLXRlc3QtY2FzZSBzZXQtdXAuCisgIC8vIENh
bGxlZCBiZWZvcmUgdGhlIGZpcnN0IHRlc3QgaW4gdGhpcyB0ZXN0IGNhc2UuCisgIC8vIENhbiBi
ZSBvbWl0dGVkIGlmIG5vdCBuZWVkZWQuCisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7
CisgICAgc2hhcmVkX3Jlc291cmNlXyA9IG5ldyAuLi47CisgIH0KKworICAvLyBQZXItdGVzdC1j
YXNlIHRlYXItZG93bi4KKyAgLy8gQ2FsbGVkIGFmdGVyIHRoZSBsYXN0IHRlc3QgaW4gdGhpcyB0
ZXN0IGNhc2UuCisgIC8vIENhbiBiZSBvbWl0dGVkIGlmIG5vdCBuZWVkZWQuCisgIHN0YXRpYyB2
b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7CisgICAgZGVsZXRlIHNoYXJlZF9yZXNvdXJjZV87Cisg
ICAgc2hhcmVkX3Jlc291cmNlXyA9IE5VTEw7CisgIH0KKworICAvLyBZb3UgY2FuIGRlZmluZSBw
ZXItdGVzdCBzZXQtdXAgbG9naWMgYXMgdXN1YWwuCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsg
Li4uIH0KKworICAvLyBZb3UgY2FuIGRlZmluZSBwZXItdGVzdCB0ZWFyLWRvd24gbG9naWMgYXMg
dXN1YWwuCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsgLi4uIH0KKworICAvLyBTb21lIGV4
cGVuc2l2ZSByZXNvdXJjZSBzaGFyZWQgYnkgYWxsIHRlc3RzLgorICBzdGF0aWMgVCogc2hhcmVk
X3Jlc291cmNlXzsKK307CisKK1QqIEZvb1Rlc3Q6OnNoYXJlZF9yZXNvdXJjZV8gPSBOVUxMOwor
CitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVk
X3Jlc291cmNlXyBoZXJlIC4uLgorfQorCitURVNUX0YoRm9vVGVzdCwgVGVzdDIpIHsKKyAgLi4u
IHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlXyBoZXJlIC4uLgorfQorYGBgCisKK05P
VEU6IFRob3VnaCB0aGUgYWJvdmUgY29kZSBkZWNsYXJlcyBgU2V0VXBUZXN0Q2FzZSgpYCBwcm90
ZWN0ZWQsIGl0IG1heQorc29tZXRpbWVzIGJlIG5lY2Vzc2FyeSB0byBkZWNsYXJlIGl0IHB1Ymxp
Yywgc3VjaCBhcyB3aGVuIHVzaW5nIGl0IHdpdGgKK2BURVNUX1BgLgorCisqKkF2YWlsYWJpbGl0
eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBHbG9iYWwgU2V0LVVwIGFuZCBUZWFyLURv
d24KKworSnVzdCBhcyB5b3UgY2FuIGRvIHNldC11cCBhbmQgdGVhci1kb3duIGF0IHRoZSB0ZXN0
IGxldmVsIGFuZCB0aGUgdGVzdCBjYXNlCitsZXZlbCwgeW91IGNhbiBhbHNvIGRvIGl0IGF0IHRo
ZSB0ZXN0IHByb2dyYW0gbGV2ZWwuIEhlcmUncyBob3cuCisKK0ZpcnN0LCB5b3Ugc3ViY2xhc3Mg
dGhlIGA6OnRlc3Rpbmc6OkVudmlyb25tZW50YCBjbGFzcyB0byBkZWZpbmUgYSB0ZXN0CitlbnZp
cm9ubWVudCwgd2hpY2gga25vd3MgaG93IHRvIHNldC11cCBhbmQgdGVhci1kb3duOgorCitgYGBj
KysKK2NsYXNzIEVudmlyb25tZW50IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfkVudmlyb25tZW50
KCkge30KKworICAvLyBPdmVycmlkZSB0aGlzIHRvIGRlZmluZSBob3cgdG8gc2V0IHVwIHRoZSBl
bnZpcm9ubWVudC4KKyAgdmlydHVhbCB2b2lkIFNldFVwKCkge30KKworICAvLyBPdmVycmlkZSB0
aGlzIHRvIGRlZmluZSBob3cgdG8gdGVhciBkb3duIHRoZSBlbnZpcm9ubWVudC4KKyAgdmlydHVh
bCB2b2lkIFRlYXJEb3duKCkge30KK307CitgYGAKKworVGhlbiwgeW91IHJlZ2lzdGVyIGFuIGlu
c3RhbmNlIG9mIHlvdXIgZW52aXJvbm1lbnQgY2xhc3Mgd2l0aCBnb29nbGV0ZXN0IGJ5CitjYWxs
aW5nIHRoZSBgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgZnVuY3Rpb246
CisKK2BgYGMrKworRW52aXJvbm1lbnQqIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChFbnZpcm9u
bWVudCogZW52KTsKK2BgYAorCitOb3csIHdoZW4gYFJVTl9BTExfVEVTVFMoKWAgaXMgY2FsbGVk
LCBpdCBmaXJzdCBjYWxscyB0aGUgYFNldFVwKClgIG1ldGhvZCBvZgordGhlIGVudmlyb25tZW50
IG9iamVjdCwgdGhlbiBydW5zIHRoZSB0ZXN0cyBpZiB0aGVyZSB3YXMgbm8gZmF0YWwgZmFpbHVy
ZXMsIGFuZAorZmluYWxseSBjYWxscyBgVGVhckRvd24oKWAgb2YgdGhlIGVudmlyb25tZW50IG9i
amVjdC4KKworSXQncyBPSyB0byByZWdpc3RlciBtdWx0aXBsZSBlbnZpcm9ubWVudCBvYmplY3Rz
LiBJbiB0aGlzIGNhc2UsIHRoZWlyIGBTZXRVcCgpYAord2lsbCBiZSBjYWxsZWQgaW4gdGhlIG9y
ZGVyIHRoZXkgYXJlIHJlZ2lzdGVyZWQsIGFuZCB0aGVpciBgVGVhckRvd24oKWAgd2lsbCBiZQor
Y2FsbGVkIGluIHRoZSByZXZlcnNlIG9yZGVyLgorCitOb3RlIHRoYXQgZ29vZ2xldGVzdCB0YWtl
cyBvd25lcnNoaXAgb2YgdGhlIHJlZ2lzdGVyZWQgZW52aXJvbm1lbnQgb2JqZWN0cy4KK1RoZXJl
Zm9yZSAqKmRvIG5vdCBkZWxldGUgdGhlbSoqIGJ5IHlvdXJzZWxmLgorCitZb3Ugc2hvdWxkIGNh
bGwgYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCBiZWZvcmUgYFJVTl9BTExfVEVTVFMoKWAg
aXMgY2FsbGVkLAorcHJvYmFibHkgaW4gYG1haW4oKWAuIElmIHlvdSB1c2UgYGd0ZXN0X21haW5g
LCB5b3UgbmVlZCB0byBjYWxsIHRoaXMgYmVmb3JlCitgbWFpbigpYCBzdGFydHMgZm9yIGl0IHRv
IHRha2UgZWZmZWN0LiBPbmUgd2F5IHRvIGRvIHRoaXMgaXMgdG8gZGVmaW5lIGEgZ2xvYmFsCit2
YXJpYWJsZSBsaWtlIHRoaXM6CisKK2BgYGMrKworOjp0ZXN0aW5nOjpFbnZpcm9ubWVudCogY29u
c3QgZm9vX2VudiA9CisgICAgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3
IEZvb0Vudmlyb25tZW50KTsKK2BgYAorCitIb3dldmVyLCB3ZSBzdHJvbmdseSByZWNvbW1lbmQg
eW91IHRvIHdyaXRlIHlvdXIgb3duIGBtYWluKClgIGFuZCBjYWxsCitgQWRkR2xvYmFsVGVzdEVu
dmlyb25tZW50KClgIHRoZXJlLCBhcyByZWx5aW5nIG9uIGluaXRpYWxpemF0aW9uIG9mIGdsb2Jh
bAordmFyaWFibGVzIG1ha2VzIHRoZSBjb2RlIGhhcmRlciB0byByZWFkIGFuZCBtYXkgY2F1c2Ug
cHJvYmxlbXMgd2hlbiB5b3UgcmVnaXN0ZXIKK211bHRpcGxlIGVudmlyb25tZW50cyBmcm9tIGRp
ZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cyBhbmQgdGhlIGVudmlyb25tZW50cyBoYXZlCitkZXBl
bmRlbmNpZXMgYW1vbmcgdGhlbSAocmVtZW1iZXIgdGhhdCB0aGUgY29tcGlsZXIgZG9lc24ndCBn
dWFyYW50ZWUgdGhlIG9yZGVyCitpbiB3aGljaCBnbG9iYWwgdmFyaWFibGVzIGZyb20gZGlmZmVy
ZW50IHRyYW5zbGF0aW9uIHVuaXRzIGFyZSBpbml0aWFsaXplZCkuCisKKyMjIFZhbHVlLVBhcmFt
ZXRlcml6ZWQgVGVzdHMKKworKlZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMqIGFsbG93IHlvdSB0
byB0ZXN0IHlvdXIgY29kZSB3aXRoIGRpZmZlcmVudAorcGFyYW1ldGVycyB3aXRob3V0IHdyaXRp
bmcgbXVsdGlwbGUgY29waWVzIG9mIHRoZSBzYW1lIHRlc3QuIFRoaXMgaXMgdXNlZnVsIGluIGEK
K251bWJlciBvZiBzaXR1YXRpb25zLCBmb3IgZXhhbXBsZToKKworKiAgIFlvdSBoYXZlIGEgcGll
Y2Ugb2YgY29kZSB3aG9zZSBiZWhhdmlvciBpcyBhZmZlY3RlZCBieSBvbmUgb3IgbW9yZQorICAg
IGNvbW1hbmQtbGluZSBmbGFncy4gWW91IHdhbnQgdG8gbWFrZSBzdXJlIHlvdXIgY29kZSBwZXJm
b3JtcyBjb3JyZWN0bHkgZm9yCisgICAgdmFyaW91cyB2YWx1ZXMgb2YgdGhvc2UgZmxhZ3MuCisq
ICAgWW91IHdhbnQgdG8gdGVzdCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIG9mIGFuIE9PIGlu
dGVyZmFjZS4KKyogICBZb3Ugd2FudCB0byB0ZXN0IHlvdXIgY29kZSBvdmVyIHZhcmlvdXMgaW5w
dXRzIChhLmsuYS4gZGF0YS1kcml2ZW4gdGVzdGluZykuCisgICAgVGhpcyBmZWF0dXJlIGlzIGVh
c3kgdG8gYWJ1c2UsIHNvIHBsZWFzZSBleGVyY2lzZSB5b3VyIGdvb2Qgc2Vuc2Ugd2hlbiBkb2lu
ZworICAgIGl0IQorCisjIyMgSG93IHRvIFdyaXRlIFZhbHVlLVBhcmFtZXRlcml6ZWQgVGVzdHMK
KworVG8gd3JpdGUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cywgZmlyc3QgeW91IHNob3VsZCBk
ZWZpbmUgYSBmaXh0dXJlIGNsYXNzLiBJdAorbXVzdCBiZSBkZXJpdmVkIGZyb20gYm90aCBgOjp0
ZXN0aW5nOjpUZXN0YCBhbmQKK2A6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxUPmAgKHRo
ZSBsYXR0ZXIgaXMgYSBwdXJlIGludGVyZmFjZSksIHdoZXJlIGBUYAoraXMgdGhlIHR5cGUgb2Yg
eW91ciBwYXJhbWV0ZXIgdmFsdWVzLiBGb3IgY29udmVuaWVuY2UsIHlvdSBjYW4ganVzdCBkZXJp
dmUgdGhlCitmaXh0dXJlIGNsYXNzIGZyb20gYDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxUPmAs
IHdoaWNoIGl0c2VsZiBpcyBkZXJpdmVkIGZyb20KK2JvdGggYDo6dGVzdGluZzo6VGVzdGAgYW5k
IGA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxUPmAuIGBUYCBjYW4gYmUgYW55Citjb3B5
YWJsZSB0eXBlLiBJZiBpdCdzIGEgcmF3IHBvaW50ZXIsIHlvdSBhcmUgcmVzcG9uc2libGUgZm9y
IG1hbmFnaW5nIHRoZQorbGlmZXNwYW4gb2YgdGhlIHBvaW50ZWQgdmFsdWVzLgorCitOT1RFOiBJ
ZiB5b3VyIHRlc3QgZml4dHVyZSBkZWZpbmVzIGBTZXRVcFRlc3RDYXNlKClgIG9yIGBUZWFyRG93
blRlc3RDYXNlKClgCit0aGV5IG11c3QgYmUgZGVjbGFyZWQgKipwdWJsaWMqKiByYXRoZXIgdGhh
biAqKnByb3RlY3RlZCoqIGluIG9yZGVyIHRvIHVzZQorYFRFU1RfUGAuCisKK2BgYGMrKworY2xh
c3MgRm9vVGVzdCA6CisgICAgcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBj
aGFyKj4geworICAvLyBZb3UgY2FuIGltcGxlbWVudCBhbGwgdGhlIHVzdWFsIGZpeHR1cmUgY2xh
c3MgbWVtYmVycyBoZXJlLgorICAvLyBUbyBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyLCBjYWxs
IEdldFBhcmFtKCkgZnJvbSBjbGFzcworICAvLyBUZXN0V2l0aFBhcmFtPFQ+LgorfTsKKworLy8g
T3IsIHdoZW4geW91IHdhbnQgdG8gYWRkIHBhcmFtZXRlcnMgdG8gYSBwcmUtZXhpc3RpbmcgZml4
dHVyZSBjbGFzczoKK2NsYXNzIEJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Cisg
IC4uLgorfTsKK2NsYXNzIEJhclRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsCisgICAgICAgICAgICAg
ICAgcHVibGljIDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPGNvbnN0IGNoYXIqPiB7Cisg
IC4uLgorfTsKK2BgYAorCitUaGVuLCB1c2UgdGhlIGBURVNUX1BgIG1hY3JvIHRvIGRlZmluZSBh
cyBtYW55IHRlc3QgcGF0dGVybnMgdXNpbmcgdGhpcyBmaXh0dXJlCithcyB5b3Ugd2FudC4gVGhl
IGBfUGAgc3VmZml4IGlzIGZvciAicGFyYW1ldGVyaXplZCIgb3IgInBhdHRlcm4iLCB3aGljaGV2
ZXIgeW91CitwcmVmZXIgdG8gdGhpbmsuCisKK2BgYGMrKworVEVTVF9QKEZvb1Rlc3QsIERvZXNC
bGFoKSB7CisgIC8vIEluc2lkZSBhIHRlc3QsIGFjY2VzcyB0aGUgdGVzdCBwYXJhbWV0ZXIgd2l0
aCB0aGUgR2V0UGFyYW0oKSBtZXRob2QKKyAgLy8gb2YgdGhlIFRlc3RXaXRoUGFyYW08VD4gY2xh
c3M6CisgIEVYUEVDVF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsKKyAgLi4uCit9CisKK1RF
U1RfUChGb29UZXN0LCBIYXNCbGFoQmxhaCkgeworICAuLi4KK30KK2BgYAorCitGaW5hbGx5LCB5
b3UgY2FuIHVzZSBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIHRvIGluc3RhbnRpYXRlIHRoZSB0
ZXN0IGNhc2Ugd2l0aAorYW55IHNldCBvZiBwYXJhbWV0ZXJzIHlvdSB3YW50LiBnb29nbGV0ZXN0
IGRlZmluZXMgYSBudW1iZXIgb2YgZnVuY3Rpb25zIGZvcgorZ2VuZXJhdGluZyB0ZXN0IHBhcmFt
ZXRlcnMuIFRoZXkgcmV0dXJuIHdoYXQgd2UgY2FsbCAoc3VycHJpc2UhKSAqcGFyYW1ldGVyCitn
ZW5lcmF0b3JzKi4gSGVyZSBpcyBhIHN1bW1hcnkgb2YgdGhlbSwgd2hpY2ggYXJlIGFsbCBpbiB0
aGUgYHRlc3RpbmdgCituYW1lc3BhY2U6CisKK3wgUGFyYW1ldGVyIEdlbmVyYXRvciAgICAgICAg
ICB8IEJlaGF2aW9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSB8Cit8IGBSYW5nZShiZWdpbiwgZW5kIFssIHN0ZXBdKWAgfCBZaWVsZHMg
dmFsdWVzIGB7YmVnaW4sIGJlZ2luK3N0ZXAsIGJlZ2luK3N0ZXArc3RlcCwgLi4ufWAuIFRoZSB2
YWx1ZXMgZG8gbm90IGluY2x1ZGUgYGVuZGAuIGBzdGVwYCBkZWZhdWx0cyB0byAxLiAgICAgIHwK
K3wgYFZhbHVlcyh2MSwgdjIsIC4uLiwgdk4pYCAgICB8IFlpZWxkcyB2YWx1ZXMgYHt2MSwgdjIs
IC4uLiwgdk59YC4gICAgICAgICAgfAorfCBgVmFsdWVzSW4oY29udGFpbmVyKWAgYW5kIGBWYWx1
ZXNJbihiZWdpbixlbmQpYCAgIHwgWWllbGRzIHZhbHVlcyBmcm9tIGEgQy1zdHlsZSBhcnJheSwg
YW4gU1RMLXN0eWxlIGNvbnRhaW5lciwgb3IgYW4gaXRlcmF0b3IgcmFuZ2UgIGBbYmVnaW4sIGVu
ZClgLiB8Cit8IGBCb29sKClgICAgICAgICAgICAgICAgICAgICAgfCBZaWVsZHMgc2VxdWVuY2Ug
YHtmYWxzZSwgdHJ1ZX1gLiAgICAgICAgICAgIHwKK3wgYENvbWJpbmUoZzEsIGcyLCAuLi4sIGdO
KWAgICB8IFlpZWxkcyBhbGwgY29tYmluYXRpb25zIChDYXJ0ZXNpYW4gcHJvZHVjdCkgYXMgc3Rk
XDpcOnR1cGxlcyBvZiB0aGUgdmFsdWVzIGdlbmVyYXRlZCBieSB0aGUgYE5gIGdlbmVyYXRvcnMu
ICAgICAgICAgICAgfAorCitGb3IgbW9yZSBkZXRhaWxzLCBzZWUgdGhlIGNvbW1lbnRzIGF0IHRo
ZSBkZWZpbml0aW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMuCisKK1RoZSBmb2xsb3dpbmcgc3RhdGVt
ZW50IHdpbGwgaW5zdGFudGlhdGUgdGVzdHMgZnJvbSB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZSBl
YWNoCit3aXRoIHBhcmFtZXRlciB2YWx1ZXMgYCJtZWVueSJgLCBgIm1pbnkiYCwgYW5kIGAibW9l
ImAuCisKK2BgYGMrKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSW5zdGFudGlhdGlvbk5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICBGb29UZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgOjp0ZXN0aW5nOjpWYWx1ZXMoIm1lZW55IiwgIm1pbnkiLCAibW9lIikpOworYGBgCisKK05P
VEU6IFRoZSBjb2RlIGFib3ZlIG11c3QgYmUgcGxhY2VkIGF0IGdsb2JhbCBvciBuYW1lc3BhY2Ug
c2NvcGUsIG5vdCBhdAorZnVuY3Rpb24gc2NvcGUuCisKK05PVEU6IERvbid0IGZvcmdldCB0aGlz
IHN0ZXAhIElmIHlvdSBkbyB5b3VyIHRlc3Qgd2lsbCBzaWxlbnRseSBwYXNzLCBidXQgbm9uZQor
b2YgaXRzIGNhc2VzIHdpbGwgZXZlciBydW4hCisKK1RvIGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBp
bnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4gKHllcywgeW91IGNhbiBpbnN0YW50aWF0ZSBpdAorbW9y
ZSB0aGFuIG9uY2UpLCB0aGUgZmlyc3QgYXJndW1lbnQgdG8gYElOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QYCBpcyBhIHByZWZpeAordGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBhY3R1YWwgdGVzdCBj
YXNlIG5hbWUuIFJlbWVtYmVyIHRvIHBpY2sgdW5pcXVlCitwcmVmaXhlcyBmb3IgZGlmZmVyZW50
IGluc3RhbnRpYXRpb25zLiBUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZQor
d2lsbCBoYXZlIHRoZXNlIG5hbWVzOgorCisqICAgYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3Qu
RG9lc0JsYWgvMGAgZm9yIGAibWVlbnkiYAorKiAgIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0
LkRvZXNCbGFoLzFgIGZvciBgIm1pbnkiYAorKiAgIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0
LkRvZXNCbGFoLzJgIGZvciBgIm1vZSJgCisqICAgYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3Qu
SGFzQmxhaEJsYWgvMGAgZm9yIGAibWVlbnkiYAorKiAgIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29U
ZXN0Lkhhc0JsYWhCbGFoLzFgIGZvciBgIm1pbnkiYAorKiAgIGBJbnN0YW50aWF0aW9uTmFtZS9G
b29UZXN0Lkhhc0JsYWhCbGFoLzJgIGZvciBgIm1vZSJgCisKK1lvdSBjYW4gdXNlIHRoZXNlIG5h
bWVzIGluIFtgLS1ndGVzdF9maWx0ZXJgXSgjcnVubmluZy1hLXN1YnNldC1vZi10aGUtdGVzdHMp
LgorCitUaGlzIHN0YXRlbWVudCB3aWxsIGluc3RhbnRpYXRlIGFsbCB0ZXN0cyBmcm9tIGBGb29U
ZXN0YCBhZ2FpbiwgZWFjaCB3aXRoCitwYXJhbWV0ZXIgdmFsdWVzIGAiY2F0ImAgYW5kIGAiZG9n
ImA6CisKK2BgYGMrKworY29uc3QgY2hhciogcGV0c1tdID0geyJjYXQiLCAiZG9nIn07CitJTlNU
QU5USUFURV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFudGlhdGlvbk5hbWUsIEZvb1Rlc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlc0luKHBldHMpKTsKK2BgYAor
CitUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhhdmUgdGhlc2Ug
bmFtZXM6CisKKyogICBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgv
MGAgZm9yIGAiY2F0ImAKKyogICBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9l
c0JsYWgvMWAgZm9yIGAiZG9nImAKKyogICBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rl
c3QuSGFzQmxhaEJsYWgvMGAgZm9yIGAiY2F0ImAKKyogICBgQW5vdGhlckluc3RhbnRpYXRpb25O
YW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMWAgZm9yIGAiZG9nImAKKworUGxlYXNlIG5vdGUgdGhh
dCBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIHdpbGwgaW5zdGFudGlhdGUgKmFsbCogdGVzdHMg
aW4gdGhlCitnaXZlbiB0ZXN0IGNhc2UsIHdoZXRoZXIgdGhlaXIgZGVmaW5pdGlvbnMgY29tZSBi
ZWZvcmUgb3IgKmFmdGVyKiB0aGUKK2BJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgc3RhdGVtZW50
LgorCitZb3UgY2FuIHNlZSBzYW1wbGU3X3VuaXR0ZXN0LmNjIGFuZCBzYW1wbGU4X3VuaXR0ZXN0
LmNjIGZvciBtb3JlIGV4YW1wbGVzLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93
cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBNYWMKKworIyMjIENyZWF0aW5nIFZhbHVl
LVBhcmFtZXRlcml6ZWQgQWJzdHJhY3QgVGVzdHMKKworSW4gdGhlIGFib3ZlLCB3ZSBkZWZpbmUg
YW5kIGluc3RhbnRpYXRlIGBGb29UZXN0YCBpbiB0aGUgKnNhbWUqIHNvdXJjZSBmaWxlLgorU29t
ZXRpbWVzIHlvdSBtYXkgd2FudCB0byBkZWZpbmUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBp
biBhIGxpYnJhcnkgYW5kIGxldAorb3RoZXIgcGVvcGxlIGluc3RhbnRpYXRlIHRoZW0gbGF0ZXIu
IFRoaXMgcGF0dGVybiBpcyBrbm93biBhcyAqYWJzdHJhY3QgdGVzdHMqLgorQXMgYW4gZXhhbXBs
ZSBvZiBpdHMgYXBwbGljYXRpb24sIHdoZW4geW91IGFyZSBkZXNpZ25pbmcgYW4gaW50ZXJmYWNl
IHlvdSBjYW4KK3dyaXRlIGEgc3RhbmRhcmQgc3VpdGUgb2YgYWJzdHJhY3QgdGVzdHMgKHBlcmhh
cHMgdXNpbmcgYSBmYWN0b3J5IGZ1bmN0aW9uIGFzCit0aGUgdGVzdCBwYXJhbWV0ZXIpIHRoYXQg
YWxsIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgaW50ZXJmYWNlIGFyZSBleHBlY3RlZCB0bworcGFz
cy4gV2hlbiBzb21lb25lIGltcGxlbWVudHMgdGhlIGludGVyZmFjZSwgdGhleSBjYW4gaW5zdGFu
dGlhdGUgeW91ciBzdWl0ZSB0bworZ2V0IGFsbCB0aGUgaW50ZXJmYWNlLWNvbmZvcm1hbmNlIHRl
c3RzIGZvciBmcmVlLgorCitUbyBkZWZpbmUgYWJzdHJhY3QgdGVzdHMsIHlvdSBzaG91bGQgb3Jn
YW5pemUgeW91ciBjb2RlIGxpa2UgdGhpczoKKworMS4gIFB1dCB0aGUgZGVmaW5pdGlvbiBvZiB0
aGUgcGFyYW1ldGVyaXplZCB0ZXN0IGZpeHR1cmUgY2xhc3MgKGUuZy4gYEZvb1Rlc3RgKQorICAg
IGluIGEgaGVhZGVyIGZpbGUsIHNheSBgZm9vX3BhcmFtX3Rlc3QuaGAuIFRoaW5rIG9mIHRoaXMg
YXMgKmRlY2xhcmluZyogeW91cgorICAgIGFic3RyYWN0IHRlc3RzLgorMS4gIFB1dCB0aGUgYFRF
U1RfUGAgZGVmaW5pdGlvbnMgaW4gYGZvb19wYXJhbV90ZXN0LmNjYCwgd2hpY2ggaW5jbHVkZXMK
KyAgICBgZm9vX3BhcmFtX3Rlc3QuaGAuIFRoaW5rIG9mIHRoaXMgYXMgKmltcGxlbWVudGluZyog
eW91ciBhYnN0cmFjdCB0ZXN0cy4KKworT25jZSB0aGV5IGFyZSBkZWZpbmVkLCB5b3UgY2FuIGlu
c3RhbnRpYXRlIHRoZW0gYnkgaW5jbHVkaW5nIGBmb29fcGFyYW1fdGVzdC5oYCwKK2ludm9raW5n
IGBJTlNUQU5USUFURV9URVNUX0NBU0VfUCgpYCwgYW5kIGRlcGVuZGluZyBvbiB0aGUgbGlicmFy
eSB0YXJnZXQgdGhhdAorY29udGFpbnMgYGZvb19wYXJhbV90ZXN0LmNjYC4gWW91IGNhbiBpbnN0
YW50aWF0ZSB0aGUgc2FtZSBhYnN0cmFjdCB0ZXN0IGNhc2UKK211bHRpcGxlIHRpbWVzLCBwb3Nz
aWJseSBpbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgorCisjIyMgU3BlY2lmeWluZyBOYW1lcyBm
b3IgVmFsdWUtUGFyYW1ldGVyaXplZCBUZXN0IFBhcmFtZXRlcnMKKworVGhlIG9wdGlvbmFsIGxh
c3QgYXJndW1lbnQgdG8gYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKClgIGFsbG93cyB0aGUgdXNl
ciB0bworc3BlY2lmeSBhIGZ1bmN0aW9uIG9yIGZ1bmN0b3IgdGhhdCBnZW5lcmF0ZXMgY3VzdG9t
IHRlc3QgbmFtZSBzdWZmaXhlcyBiYXNlZCBvbgordGhlIHRlc3QgcGFyYW1ldGVycy4gVGhlIGZ1
bmN0aW9uIHNob3VsZCBhY2NlcHQgb25lIGFyZ3VtZW50IG9mIHR5cGUKK2B0ZXN0aW5nOjpUZXN0
UGFyYW1JbmZvPGNsYXNzIFBhcmFtVHlwZT5gLCBhbmQgcmV0dXJuIGBzdGQ6OnN0cmluZ2AuCisK
K2B0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1OYW1lYCBpcyBhIGJ1aWx0aW4gdGVzdCBzdWZm
aXggZ2VuZXJhdG9yIHRoYXQKK3JldHVybnMgdGhlIHZhbHVlIG9mIGB0ZXN0aW5nOjpQcmludFRv
U3RyaW5nKEdldFBhcmFtKCkpYC4gSXQgZG9lcyBub3Qgd29yayBmb3IKK2BzdGQ6OnN0cmluZ2Ag
b3IgQyBzdHJpbmdzLgorCitOT1RFOiB0ZXN0IG5hbWVzIG11c3QgYmUgbm9uLWVtcHR5LCB1bmlx
dWUsIGFuZCBtYXkgb25seSBjb250YWluIEFTQ0lJCithbHBoYW51bWVyaWMgY2hhcmFjdGVycy4g
SW4gcGFydGljdWxhciwgdGhleSBbc2hvdWxkIG5vdCBjb250YWluCit1bmRlcnNjb3Jlc10oaHR0
cHM6Ly9nM2RvYy5jb3JwLmdvb2dsZS5jb20vdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L2czZG9jL2ZhcS5tZCNuby11bmRlcnNjb3JlcykuCisKK2BgYGMrKworY2xhc3MgTXlUZXN0
Q2FzZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4ge307CisKK1RFU1RfUChN
eVRlc3RDYXNlLCBNeVRlc3QpCit7CisgIHN0ZDo6Y291dCA8PCAiRXhhbXBsZSBUZXN0IFBhcmFt
OiAiIDw8IEdldFBhcmFtKCkgPDwgc3RkOjplbmRsOworfQorCitJTlNUQU5USUFURV9URVNUX0NB
U0VfUChNeUdyb3VwLCBNeVRlc3RDYXNlLCB0ZXN0aW5nOjpSYW5nZSgwLCAxMCksCisgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1OYW1lKCkpOworYGBg
CisKKyMjIFR5cGVkIFRlc3RzPC9pZD4KKworU3VwcG9zZSB5b3UgaGF2ZSBtdWx0aXBsZSBpbXBs
ZW1lbnRhdGlvbnMgb2YgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZCB3YW50IHRvIG1ha2UKK3N1cmUg
dGhhdCBhbGwgb2YgdGhlbSBzYXRpc2Z5IHNvbWUgY29tbW9uIHJlcXVpcmVtZW50cy4gT3IsIHlv
dSBtYXkgaGF2ZSBkZWZpbmVkCitzZXZlcmFsIHR5cGVzIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGNv
bmZvcm0gdG8gdGhlIHNhbWUgImNvbmNlcHQiIGFuZCB5b3Ugd2FudCB0bwordmVyaWZ5IGl0LiBJ
biBib3RoIGNhc2VzLCB5b3Ugd2FudCB0aGUgc2FtZSB0ZXN0IGxvZ2ljIHJlcGVhdGVkIGZvciBk
aWZmZXJlbnQKK3R5cGVzLgorCitXaGlsZSB5b3UgY2FuIHdyaXRlIG9uZSBgVEVTVGAgb3IgYFRF
U1RfRmAgZm9yIGVhY2ggdHlwZSB5b3Ugd2FudCB0byB0ZXN0IChhbmQKK3lvdSBtYXkgZXZlbiBm
YWN0b3IgdGhlIHRlc3QgbG9naWMgaW50byBhIGZ1bmN0aW9uIHRlbXBsYXRlIHRoYXQgeW91IGlu
dm9rZSBmcm9tCit0aGUgYFRFU1RgKSwgaXQncyB0ZWRpb3VzIGFuZCBkb2Vzbid0IHNjYWxlOiBp
ZiB5b3Ugd2FudCBgbWAgdGVzdHMgb3ZlciBgbmAKK3R5cGVzLCB5b3UnbGwgZW5kIHVwIHdyaXRp
bmcgYG0qbmAgYFRFU1Rgcy4KKworKlR5cGVkIHRlc3RzKiBhbGxvdyB5b3UgdG8gcmVwZWF0IHRo
ZSBzYW1lIHRlc3QgbG9naWMgb3ZlciBhIGxpc3Qgb2YgdHlwZXMuIFlvdQorb25seSBuZWVkIHRv
IHdyaXRlIHRoZSB0ZXN0IGxvZ2ljIG9uY2UsIGFsdGhvdWdoIHlvdSBtdXN0IGtub3cgdGhlIHR5
cGUgbGlzdAord2hlbiB3cml0aW5nIHR5cGVkIHRlc3RzLiBIZXJlJ3MgaG93IHlvdSBkbyBpdDoK
KworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUuIEl0IHNob3VsZCBiZSBw
YXJhbWV0ZXJpemVkIGJ5IGEgdHlwZS4KK1JlbWVtYmVyIHRvIGRlcml2ZSBpdCBmcm9tIGA6OnRl
c3Rpbmc6OlRlc3RgOgorCitgYGBjKysKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgRm9v
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHB1YmxpYzoKKyAgLi4uCisgIHR5cGVk
ZWYgc3RkOjpsaXN0PFQ+IExpc3Q7CisgIHN0YXRpYyBUIHNoYXJlZF87CisgIFQgdmFsdWVfOwor
fTsKK2BgYAorCitOZXh0LCBhc3NvY2lhdGUgYSBsaXN0IG9mIHR5cGVzIHdpdGggdGhlIHRlc3Qg
Y2FzZSwgd2hpY2ggd2lsbCBiZSByZXBlYXRlZCBmb3IKK2VhY2ggdHlwZSBpbiB0aGUgbGlzdDoK
KworYGBgYysrCit1c2luZyBNeVR5cGVzID0gOjp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQsIHVu
c2lnbmVkIGludD47CitUWVBFRF9URVNUX0NBU0UoRm9vVGVzdCwgTXlUeXBlcyk7CitgYGAKKwor
VGhlIHR5cGUgYWxpYXMgKGB1c2luZ2Agb3IgYHR5cGVkZWZgKSBpcyBuZWNlc3NhcnkgZm9yIHRo
ZSBgVFlQRURfVEVTVF9DQVNFYAorbWFjcm8gdG8gcGFyc2UgY29ycmVjdGx5LiBPdGhlcndpc2Ug
dGhlIGNvbXBpbGVyIHdpbGwgdGhpbmsgdGhhdCBlYWNoIGNvbW1hIGluCit0aGUgdHlwZSBsaXN0
IGludHJvZHVjZXMgYSBuZXcgbWFjcm8gYXJndW1lbnQuCisKK1RoZW4sIHVzZSBgVFlQRURfVEVT
VCgpYCBpbnN0ZWFkIG9mIGBURVNUX0YoKWAgdG8gZGVmaW5lIGEgdHlwZWQgdGVzdCBmb3IgdGhp
cwordGVzdCBjYXNlLiBZb3UgY2FuIHJlcGVhdCB0aGlzIGFzIG1hbnkgdGltZXMgYXMgeW91IHdh
bnQ6CisKK2BgYGMrKworVFlQRURfVEVTVChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJbnNp
ZGUgYSB0ZXN0LCByZWZlciB0byB0aGUgc3BlY2lhbCBuYW1lIFR5cGVQYXJhbSB0byBnZXQgdGhl
IHR5cGUKKyAgLy8gcGFyYW1ldGVyLiAgU2luY2Ugd2UgYXJlIGluc2lkZSBhIGRlcml2ZWQgY2xh
c3MgdGVtcGxhdGUsIEMrKyByZXF1aXJlcworICAvLyB1cyB0byB2aXNpdCB0aGUgbWVtYmVycyBv
ZiBGb29UZXN0IHZpYSAndGhpcycuCisgIFR5cGVQYXJhbSBuID0gdGhpcy0+dmFsdWVfOworCisg
IC8vIFRvIHZpc2l0IHN0YXRpYyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlLCBhZGQgdGhlICdUZXN0
Rml4dHVyZTo6JworICAvLyBwcmVmaXguCisgIG4gKz0gVGVzdEZpeHR1cmU6OnNoYXJlZF87CisK
KyAgLy8gVG8gcmVmZXIgdG8gdHlwZWRlZnMgaW4gdGhlIGZpeHR1cmUsIGFkZCB0aGUgJ3R5cGVu
YW1lIFRlc3RGaXh0dXJlOjonCisgIC8vIHByZWZpeC4gIFRoZSAndHlwZW5hbWUnIGlzIHJlcXVp
cmVkIHRvIHNhdGlzZnkgdGhlIGNvbXBpbGVyLgorICB0eXBlbmFtZSBUZXN0Rml4dHVyZTo6TGlz
dCB2YWx1ZXM7CisKKyAgdmFsdWVzLnB1c2hfYmFjayhuKTsKKyAgLi4uCit9CisKK1RZUEVEX1RF
U1QoRm9vVGVzdCwgSGFzUHJvcGVydHlBKSB7IC4uLiB9CitgYGAKKworWW91IGNhbiBzZWUgc2Ft
cGxlNl91bml0dGVzdC5jYworCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cyAocmVx
dWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBNYWMKKworIyMgVHlwZS1QYXJhbWV0ZXJpemVkIFRl
c3RzCisKKypUeXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMqIGFyZSBsaWtlIHR5cGVkIHRlc3RzLCBl
eGNlcHQgdGhhdCB0aGV5IGRvbid0IHJlcXVpcmUKK3lvdSB0byBrbm93IHRoZSBsaXN0IG9mIHR5
cGVzIGFoZWFkIG9mIHRpbWUuIEluc3RlYWQsIHlvdSBjYW4gZGVmaW5lIHRoZSB0ZXN0Citsb2dp
YyBmaXJzdCBhbmQgaW5zdGFudGlhdGUgaXQgd2l0aCBkaWZmZXJlbnQgdHlwZSBsaXN0cyBsYXRl
ci4gWW91IGNhbiBldmVuCitpbnN0YW50aWF0ZSBpdCBtb3JlIHRoYW4gb25jZSBpbiB0aGUgc2Ft
ZSBwcm9ncmFtLgorCitJZiB5b3UgYXJlIGRlc2lnbmluZyBhbiBpbnRlcmZhY2Ugb3IgY29uY2Vw
dCwgeW91IGNhbiBkZWZpbmUgYSBzdWl0ZSBvZgordHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzIHRv
IHZlcmlmeSBwcm9wZXJ0aWVzIHRoYXQgYW55IHZhbGlkIGltcGxlbWVudGF0aW9uIG9mCit0aGUg
aW50ZXJmYWNlL2NvbmNlcHQgc2hvdWxkIGhhdmUuIFRoZW4sIHRoZSBhdXRob3Igb2YgZWFjaCBp
bXBsZW1lbnRhdGlvbiBjYW4KK2p1c3QgaW5zdGFudGlhdGUgdGhlIHRlc3Qgc3VpdGUgd2l0aCB0
aGVpciB0eXBlIHRvIHZlcmlmeSB0aGF0IGl0IGNvbmZvcm1zIHRvCit0aGUgcmVxdWlyZW1lbnRz
LCB3aXRob3V0IGhhdmluZyB0byB3cml0ZSBzaW1pbGFyIHRlc3RzIHJlcGVhdGVkbHkuIEhlcmUn
cyBhbgorZXhhbXBsZToKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUs
IGFzIHdlIGRpZCB3aXRoIHR5cGVkIHRlc3RzOgorCitgYGBjKysKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICAuLi4KK307
CitgYGAKKworTmV4dCwgZGVjbGFyZSB0aGF0IHlvdSB3aWxsIGRlZmluZSBhIHR5cGUtcGFyYW1l
dGVyaXplZCB0ZXN0IGNhc2U6CisKK2BgYGMrKworVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7
CitgYGAKKworVGhlbiwgdXNlIGBUWVBFRF9URVNUX1AoKWAgdG8gZGVmaW5lIGEgdHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3QuIFlvdSBjYW4gcmVwZWF0Cit0aGlzIGFzIG1hbnkgdGltZXMgYXMgeW91
IHdhbnQ6CisKK2BgYGMrKworVFlQRURfVEVTVF9QKEZvb1Rlc3QsIERvZXNCbGFoKSB7CisgIC8v
IEluc2lkZSBhIHRlc3QsIHJlZmVyIHRvIFR5cGVQYXJhbSB0byBnZXQgdGhlIHR5cGUgcGFyYW1l
dGVyLgorICBUeXBlUGFyYW0gbiA9IDA7CisgIC4uLgorfQorCitUWVBFRF9URVNUX1AoRm9vVGVz
dCwgSGFzUHJvcGVydHlBKSB7IC4uLiB9CitgYGAKKworTm93IHRoZSB0cmlja3kgcGFydDogeW91
IG5lZWQgdG8gcmVnaXN0ZXIgYWxsIHRlc3QgcGF0dGVybnMgdXNpbmcgdGhlCitgUkVHSVNURVJf
VFlQRURfVEVTVF9DQVNFX1BgIG1hY3JvIGJlZm9yZSB5b3UgY2FuIGluc3RhbnRpYXRlIHRoZW0u
IFRoZSBmaXJzdAorYXJndW1lbnQgb2YgdGhlIG1hY3JvIGlzIHRoZSB0ZXN0IGNhc2UgbmFtZTsg
dGhlIHJlc3QgYXJlIHRoZSBuYW1lcyBvZiB0aGUgdGVzdHMKK2luIHRoaXMgdGVzdCBjYXNlOgor
CitgYGBjKysKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEb2VzQmxhaCwgSGFzUHJvcGVydHlBKTsKK2BgYAorCitGaW5hbGx5
LCB5b3UgYXJlIGZyZWUgdG8gaW5zdGFudGlhdGUgdGhlIHBhdHRlcm4gd2l0aCB0aGUgdHlwZXMg
eW91IHdhbnQuIElmIHlvdQorcHV0IHRoZSBhYm92ZSBjb2RlIGluIGEgaGVhZGVyIGZpbGUsIHlv
dSBjYW4gYCNpbmNsdWRlYCBpdCBpbiBtdWx0aXBsZSBDKysKK3NvdXJjZSBmaWxlcyBhbmQgaW5z
dGFudGlhdGUgaXQgbXVsdGlwbGUgdGltZXMuCisKK2BgYGMrKwordHlwZWRlZiA6OnRlc3Rpbmc6
OlR5cGVzPGNoYXIsIGludCwgdW5zaWduZWQgaW50PiBNeVR5cGVzOworSU5TVEFOVElBVEVfVFlQ
RURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMpOworYGBgCisKK1RvIGRpc3Rpbmd1
aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4sIHRoZSBmaXJzdCBhcmd1bWVu
dCB0byB0aGUKK2BJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUGAgbWFjcm8gaXMgYSBwcmVm
aXggdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZQorYWN0dWFsIHRlc3QgY2FzZSBuYW1lLiBSZW1l
bWJlciB0byBwaWNrIHVuaXF1ZSBwcmVmaXhlcyBmb3IgZGlmZmVyZW50IGluc3RhbmNlcy4KKwor
SW4gdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGUgdHlwZSBsaXN0IGNvbnRhaW5zIG9ubHkgb25l
IHR5cGUsIHlvdSBjYW4gd3JpdGUKK3RoYXQgdHlwZSBkaXJlY3RseSB3aXRob3V0IGA6OnRlc3Rp
bmc6OlR5cGVzPC4uLj5gLCBsaWtlIHRoaXM6CisKK2BgYGMrKworSU5TVEFOVElBVEVfVFlQRURf
VEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIGludCk7CitgYGAKKworWW91IGNhbiBzZWUgYHNhbXBs
ZTZfdW5pdHRlc3QuY2NgIGZvciBhIGNvbXBsZXRlIGV4YW1wbGUuCisKKyoqQXZhaWxhYmlsaXR5
Kio6IExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYworCisj
IyBUZXN0aW5nIFByaXZhdGUgQ29kZQorCitJZiB5b3UgY2hhbmdlIHlvdXIgc29mdHdhcmUncyBp
bnRlcm5hbCBpbXBsZW1lbnRhdGlvbiwgeW91ciB0ZXN0cyBzaG91bGQgbm90CiticmVhayBhcyBs
b25nIGFzIHRoZSBjaGFuZ2UgaXMgbm90IG9ic2VydmFibGUgYnkgdXNlcnMuIFRoZXJlZm9yZSwg
KipwZXIgdGhlCitibGFjay1ib3ggdGVzdGluZyBwcmluY2lwbGUsIG1vc3Qgb2YgdGhlIHRpbWUg
eW91IHNob3VsZCB0ZXN0IHlvdXIgY29kZSB0aHJvdWdoCitpdHMgcHVibGljIGludGVyZmFjZXMu
KioKKworKipJZiB5b3Ugc3RpbGwgZmluZCB5b3Vyc2VsZiBuZWVkaW5nIHRvIHRlc3QgaW50ZXJu
YWwgaW1wbGVtZW50YXRpb24gY29kZSwKK2NvbnNpZGVyIGlmIHRoZXJlJ3MgYSBiZXR0ZXIgZGVz
aWduLioqIFRoZSBkZXNpcmUgdG8gdGVzdCBpbnRlcm5hbAoraW1wbGVtZW50YXRpb24gaXMgb2Z0
ZW4gYSBzaWduIHRoYXQgdGhlIGNsYXNzIGlzIGRvaW5nIHRvbyBtdWNoLiBDb25zaWRlcgorZXh0
cmFjdGluZyBhbiBpbXBsZW1lbnRhdGlvbiBjbGFzcywgYW5kIHRlc3RpbmcgaXQuIFRoZW4gdXNl
IHRoYXQgaW1wbGVtZW50YXRpb24KK2NsYXNzIGluIHRoZSBvcmlnaW5hbCBjbGFzcy4KKworSWYg
eW91IGFic29sdXRlbHkgaGF2ZSB0byB0ZXN0IG5vbi1wdWJsaWMgaW50ZXJmYWNlIGNvZGUgdGhv
dWdoLCB5b3UgY2FuLiBUaGVyZQorYXJlIHR3byBjYXNlcyB0byBjb25zaWRlcjoKKworKiAgIFN0
YXRpYyBmdW5jdGlvbnMgKCAqbm90KiB0aGUgc2FtZSBhcyBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9u
cyEpIG9yIHVubmFtZWQKKyAgICBuYW1lc3BhY2VzLCBhbmQKKyogICBQcml2YXRlIG9yIHByb3Rl
Y3RlZCBjbGFzcyBtZW1iZXJzCisKK1RvIHRlc3QgdGhlbSwgd2UgdXNlIHRoZSBmb2xsb3dpbmcg
c3BlY2lhbCB0ZWNobmlxdWVzOgorCisqICAgQm90aCBzdGF0aWMgZnVuY3Rpb25zIGFuZCBkZWZp
bml0aW9ucy9kZWNsYXJhdGlvbnMgaW4gYW4gdW5uYW1lZCBuYW1lc3BhY2UKKyAgICBhcmUgb25s
eSB2aXNpYmxlIHdpdGhpbiB0aGUgc2FtZSB0cmFuc2xhdGlvbiB1bml0LiBUbyB0ZXN0IHRoZW0s
IHlvdSBjYW4KKyAgICBgI2luY2x1ZGVgIHRoZSBlbnRpcmUgYC5jY2AgZmlsZSBiZWluZyB0ZXN0
ZWQgaW4geW91ciBgKl90ZXN0LmNjYCBmaWxlLgorICAgIChpbmNsdWRpbmcgYC5jY2AgZmlsZXMg
aXMgbm90IGEgZ29vZCB3YXkgdG8gcmV1c2UgY29kZSAtIHlvdSBzaG91bGQgbm90IGRvCisgICAg
dGhpcyBpbiBwcm9kdWN0aW9uIGNvZGUhKQorCisgICAgSG93ZXZlciwgYSBiZXR0ZXIgYXBwcm9h
Y2ggaXMgdG8gbW92ZSB0aGUgcHJpdmF0ZSBjb2RlIGludG8gdGhlCisgICAgYGZvbzo6aW50ZXJu
YWxgIG5hbWVzcGFjZSwgd2hlcmUgYGZvb2AgaXMgdGhlIG5hbWVzcGFjZSB5b3VyIHByb2plY3QK
KyAgICBub3JtYWxseSB1c2VzLCBhbmQgcHV0IHRoZSBwcml2YXRlIGRlY2xhcmF0aW9ucyBpbiBh
IGAqLWludGVybmFsLmhgIGZpbGUuCisgICAgWW91ciBwcm9kdWN0aW9uIGAuY2NgIGZpbGVzIGFu
ZCB5b3VyIHRlc3RzIGFyZSBhbGxvd2VkIHRvIGluY2x1ZGUgdGhpcworICAgIGludGVybmFsIGhl
YWRlciwgYnV0IHlvdXIgY2xpZW50cyBhcmUgbm90LiBUaGlzIHdheSwgeW91IGNhbiBmdWxseSB0
ZXN0IHlvdXIKKyAgICBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiB3aXRob3V0IGxlYWtpbmcgaXQg
dG8geW91ciBjbGllbnRzLgorCisqICAgUHJpdmF0ZSBjbGFzcyBtZW1iZXJzIGFyZSBvbmx5IGFj
Y2Vzc2libGUgZnJvbSB3aXRoaW4gdGhlIGNsYXNzIG9yIGJ5CisgICAgZnJpZW5kcy4gVG8gYWNj
ZXNzIGEgY2xhc3MnIHByaXZhdGUgbWVtYmVycywgeW91IGNhbiBkZWNsYXJlIHlvdXIgdGVzdAor
ICAgIGZpeHR1cmUgYXMgYSBmcmllbmQgdG8gdGhlIGNsYXNzIGFuZCBkZWZpbmUgYWNjZXNzb3Jz
IGluIHlvdXIgZml4dHVyZS4gVGVzdHMKKyAgICB1c2luZyB0aGUgZml4dHVyZSBjYW4gdGhlbiBh
Y2Nlc3MgdGhlIHByaXZhdGUgbWVtYmVycyBvZiB5b3VyIHByb2R1Y3Rpb24KKyAgICBjbGFzcyB2
aWEgdGhlIGFjY2Vzc29ycyBpbiB0aGUgZml4dHVyZS4gTm90ZSB0aGF0IGV2ZW4gdGhvdWdoIHlv
dXIgZml4dHVyZQorICAgIGlzIGEgZnJpZW5kIHRvIHlvdXIgcHJvZHVjdGlvbiBjbGFzcywgeW91
ciB0ZXN0cyBhcmUgbm90IGF1dG9tYXRpY2FsbHkKKyAgICBmcmllbmRzIHRvIGl0LCBhcyB0aGV5
IGFyZSB0ZWNobmljYWxseSBkZWZpbmVkIGluIHN1Yi1jbGFzc2VzIG9mIHRoZQorICAgIGZpeHR1
cmUuCisKKyAgICBBbm90aGVyIHdheSB0byB0ZXN0IHByaXZhdGUgbWVtYmVycyBpcyB0byByZWZh
Y3RvciB0aGVtIGludG8gYW4KKyAgICBpbXBsZW1lbnRhdGlvbiBjbGFzcywgd2hpY2ggaXMgdGhl
biBkZWNsYXJlZCBpbiBhIGAqLWludGVybmFsLmhgIGZpbGUuIFlvdXIKKyAgICBjbGllbnRzIGFy
ZW4ndCBhbGxvd2VkIHRvIGluY2x1ZGUgdGhpcyBoZWFkZXIgYnV0IHlvdXIgdGVzdHMgY2FuLiBT
dWNoIGlzCisgICAgY2FsbGVkIHRoZQorICAgIFtQaW1wbF0oaHR0cHM6Ly93d3cuZ2FtZWRldi5u
ZXQvYXJ0aWNsZXMvcHJvZ3JhbW1pbmcvZ2VuZXJhbC1hbmQtZ2FtZXBsYXktcHJvZ3JhbW1pbmcv
dGhlLWMtcGltcGwtcjE3OTQvKQorICAgIChQcml2YXRlIEltcGxlbWVudGF0aW9uKSBpZGlvbS4K
KworICAgIE9yLCB5b3UgY2FuIGRlY2xhcmUgYW4gaW5kaXZpZHVhbCB0ZXN0IGFzIGEgZnJpZW5k
IG9mIHlvdXIgY2xhc3MgYnkgYWRkaW5nCisgICAgdGhpcyBsaW5lIGluIHRoZSBjbGFzcyBib2R5
OgorCisgICAgYGBgYysrCisgICAgICAgIEZSSUVORF9URVNUKFRlc3RDYXNlTmFtZSwgVGVzdE5h
bWUpOworICAgIGBgYAorCisgICAgRm9yIGV4YW1wbGUsCisKKyAgICBgYGBjKysKKyAgICAvLyBm
b28uaAorCisgICAgI2luY2x1ZGUgImd0ZXN0L2d0ZXN0X3Byb2QuaCIKKworICAgIGNsYXNzIEZv
byB7CisgICAgICAuLi4KKyAgICBwcml2YXRlOgorICAgICAgRlJJRU5EX1RFU1QoRm9vVGVzdCwg
QmFyUmV0dXJuc1plcm9Pbk51bGwpOworCisgICAgICBpbnQgQmFyKHZvaWQqIHgpOworICAgIH07
CisKKyAgICAvLyBmb29fdGVzdC5jYworICAgIC4uLgorICAgIFRFU1QoRm9vVGVzdCwgQmFyUmV0
dXJuc1plcm9Pbk51bGwpIHsKKyAgICAgIEZvbyBmb287CisgICAgICBFWFBFQ1RfRVEoMCwgZm9v
LkJhcihOVUxMKSk7ICAvLyBVc2VzIEZvbydzIHByaXZhdGUgbWVtYmVyIEJhcigpLgorICAgIH0K
KyAgICBgYGAKKworICAgIFBheSBzcGVjaWFsIGF0dGVudGlvbiB3aGVuIHlvdXIgY2xhc3MgaXMg
ZGVmaW5lZCBpbiBhIG5hbWVzcGFjZSwgYXMgeW91CisgICAgc2hvdWxkIGRlZmluZSB5b3VyIHRl
c3QgZml4dHVyZXMgYW5kIHRlc3RzIGluIHRoZSBzYW1lIG5hbWVzcGFjZSBpZiB5b3Ugd2FudAor
ICAgIHRoZW0gdG8gYmUgZnJpZW5kcyBvZiB5b3VyIGNsYXNzLiBGb3IgZXhhbXBsZSwgaWYgdGhl
IGNvZGUgdG8gYmUgdGVzdGVkCisgICAgbG9va3MgbGlrZToKKworICAgIGBgYGMrKworICAgIG5h
bWVzcGFjZSBteV9uYW1lc3BhY2UgeworCisgICAgY2xhc3MgRm9vIHsKKyAgICAgIGZyaWVuZCBj
bGFzcyBGb29UZXN0OworICAgICAgRlJJRU5EX1RFU1QoRm9vVGVzdCwgQmFyKTsKKyAgICAgIEZS
SUVORF9URVNUKEZvb1Rlc3QsIEJheik7CisgICAgICAuLi4gZGVmaW5pdGlvbiBvZiB0aGUgY2xh
c3MgRm9vIC4uLgorICAgIH07CisKKyAgICB9ICAvLyBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlCisg
ICAgYGBgCisKKyAgICBZb3VyIHRlc3QgY29kZSBzaG91bGQgYmUgc29tZXRoaW5nIGxpa2U6CisK
KyAgICBgYGBjKysKKyAgICBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlIHsKKworICAgIGNsYXNzIEZv
b1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyAgICAgcHJvdGVjdGVkOgorICAgICAg
Li4uCisgICAgfTsKKworICAgIFRFU1RfRihGb29UZXN0LCBCYXIpIHsgLi4uIH0KKyAgICBURVNU
X0YoRm9vVGVzdCwgQmF6KSB7IC4uLiB9CisKKyAgICB9ICAvLyBuYW1lc3BhY2UgbXlfbmFtZXNw
YWNlCisgICAgYGBgCisKKworIyMgIkNhdGNoaW5nIiBGYWlsdXJlcworCitJZiB5b3UgYXJlIGJ1
aWxkaW5nIGEgdGVzdGluZyB1dGlsaXR5IG9uIHRvcCBvZiBnb29nbGV0ZXN0LCB5b3UnbGwgd2Fu
dCB0byB0ZXN0Cit5b3VyIHV0aWxpdHkuIFdoYXQgZnJhbWV3b3JrIHdvdWxkIHlvdSB1c2UgdG8g
dGVzdCBpdD8gZ29vZ2xldGVzdCwgb2YgY291cnNlLgorCitUaGUgY2hhbGxlbmdlIGlzIHRvIHZl
cmlmeSB0aGF0IHlvdXIgdGVzdGluZyB1dGlsaXR5IHJlcG9ydHMgZmFpbHVyZXMgY29ycmVjdGx5
LgorSW4gZnJhbWV3b3JrcyB0aGF0IHJlcG9ydCBhIGZhaWx1cmUgYnkgdGhyb3dpbmcgYW4gZXhj
ZXB0aW9uLCB5b3UgY291bGQgY2F0Y2gKK3RoZSBleGNlcHRpb24gYW5kIGFzc2VydCBvbiBpdC4g
QnV0IGdvb2dsZXRlc3QgZG9lc24ndCB1c2UgZXhjZXB0aW9ucywgc28gaG93IGRvCit3ZSB0ZXN0
IHRoYXQgYSBwaWVjZSBvZiBjb2RlIGdlbmVyYXRlcyBhbiBleHBlY3RlZCBmYWlsdXJlPworCitn
dW5pdC1zcGkuaCBjb250YWlucyBzb21lIGNvbnN0cnVjdHMgdG8gZG8gdGhpcy4gQWZ0ZXIgI2lu
Y2x1ZGluZyB0aGlzIGhlYWRlciwKK3lvdSBjYW4gdXNlCisKK2BgYGMrKworICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShzdGF0ZW1lbnQsIHN1YnN0cmluZyk7CitgYGAKKwordG8gYXNzZXJ0IHRoYXQg
YHN0YXRlbWVudGAgZ2VuZXJhdGVzIGEgZmF0YWwgKGUuZy4gYEFTU0VSVF8qYCkgZmFpbHVyZSBp
biB0aGUKK2N1cnJlbnQgdGhyZWFkIHdob3NlIG1lc3NhZ2UgY29udGFpbnMgdGhlIGdpdmVuIGBz
dWJzdHJpbmdgLCBvciB1c2UKKworYGBgYysrCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHN0
YXRlbWVudCwgc3Vic3RyaW5nKTsKK2BgYAorCitpZiB5b3UgYXJlIGV4cGVjdGluZyBhIG5vbi1m
YXRhbCAoZS5nLiBgRVhQRUNUXypgKSBmYWlsdXJlLgorCitPbmx5IGZhaWx1cmVzIGluIHRoZSBj
dXJyZW50IHRocmVhZCBhcmUgY2hlY2tlZCB0byBkZXRlcm1pbmUgdGhlIHJlc3VsdCBvZiB0aGlz
Cit0eXBlIG9mIGV4cGVjdGF0aW9ucy4gSWYgYHN0YXRlbWVudGAgY3JlYXRlcyBuZXcgdGhyZWFk
cywgZmFpbHVyZXMgaW4gdGhlc2UKK3RocmVhZHMgYXJlIGFsc28gaWdub3JlZC4gSWYgeW91IHdh
bnQgdG8gY2F0Y2ggZmFpbHVyZXMgaW4gb3RoZXIgdGhyZWFkcyBhcword2VsbCwgdXNlIG9uZSBv
ZiB0aGUgZm9sbG93aW5nIG1hY3JvcyBpbnN0ZWFkOgorCitgYGBjKysKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoc3RhdGVtZW50LCBzdWJzdHJpbmcpOworICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhzdGF0ZW1lbnQsIHN1YnN0cmluZyk7Citg
YGAKKworTk9URTogQXNzZXJ0aW9ucyBmcm9tIG11bHRpcGxlIHRocmVhZHMgYXJlIGN1cnJlbnRs
eSBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MuCisKK0ZvciB0ZWNobmljYWwgcmVhc29ucywgdGhl
cmUgYXJlIHNvbWUgY2F2ZWF0czoKKworMS4gIFlvdSBjYW5ub3Qgc3RyZWFtIGEgZmFpbHVyZSBt
ZXNzYWdlIHRvIGVpdGhlciBtYWNyby4KKworMS4gIGBzdGF0ZW1lbnRgIGluIGBFWFBFQ1RfRkFU
QUxfRkFJTFVSRXtfT05fQUxMX1RIUkVBRFN9KClgIGNhbm5vdCByZWZlcmVuY2UKKyAgICBsb2Nh
bCBub24tc3RhdGljIHZhcmlhYmxlcyBvciBub24tc3RhdGljIG1lbWJlcnMgb2YgYHRoaXNgIG9i
amVjdC4KKworMS4gIGBzdGF0ZW1lbnRgIGluIGBFWFBFQ1RfRkFUQUxfRkFJTFVSRXtfT05fQUxM
X1RIUkVBRFN9KCkoKWAgY2Fubm90IHJldHVybiBhCisgICAgdmFsdWUuCisKKworIyMgR2V0dGlu
ZyB0aGUgQ3VycmVudCBUZXN0J3MgTmFtZQorCitTb21ldGltZXMgYSBmdW5jdGlvbiBtYXkgbmVl
ZCB0byBrbm93IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LgorRm9yIGV4
YW1wbGUsIHlvdSBtYXkgYmUgdXNpbmcgdGhlIGBTZXRVcCgpYCBtZXRob2Qgb2YgeW91ciB0ZXN0
IGZpeHR1cmUgdG8gc2V0Cit0aGUgZ29sZGVuIGZpbGUgbmFtZSBiYXNlZCBvbiB3aGljaCB0ZXN0
IGlzIHJ1bm5pbmcuIFRoZSBgOjp0ZXN0aW5nOjpUZXN0SW5mb2AKK2NsYXNzIGhhcyB0aGlzIGlu
Zm9ybWF0aW9uOgorCitgYGBjKysKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworY2xhc3MgVGVzdElu
Zm8geworIHB1YmxpYzoKKyAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIG5hbWUgYW5kIHRoZSB0
ZXN0IG5hbWUsIHJlc3BlY3RpdmVseS4KKyAgLy8KKyAgLy8gRG8gTk9UIGRlbGV0ZSBvciBmcmVl
IHRoZSByZXR1cm4gdmFsdWUgLSBpdCdzIG1hbmFnZWQgYnkgdGhlCisgIC8vIFRlc3RJbmZvIGNs
YXNzLgorICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0OworICBjb25zdCBjaGFy
KiBuYW1lKCkgY29uc3Q7Cit9OworCit9CitgYGAKKworVG8gb2J0YWluIGEgYFRlc3RJbmZvYCBv
YmplY3QgZm9yIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LCBjYWxsCitgY3VycmVudF90ZXN0
X2luZm8oKWAgb24gdGhlIGBVbml0VGVzdGAgc2luZ2xldG9uIG9iamVjdDoKKworYGBgYysrCisg
IC8vIEdldHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRlc3QuCisg
IC8vIERvIE5PVCBkZWxldGUgdGhlIHJldHVybmVkIG9iamVjdCAtIGl0J3MgbWFuYWdlZCBieSB0
aGUgVW5pdFRlc3QgY2xhc3MuCisgIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRl
c3RfaW5mbyA9CisgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVu
dF90ZXN0X2luZm8oKTsKKworCisKKyAgcHJpbnRmKCJXZSBhcmUgaW4gdGVzdCAlcyBvZiB0ZXN0
IGNhc2UgJXMuXG4iLAorICAgICAgICAgdGVzdF9pbmZvLT5uYW1lKCksCisgICAgICAgICB0ZXN0
X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOworYGBgCisKK2BjdXJyZW50X3Rlc3RfaW5mbygpYCBy
ZXR1cm5zIGEgbnVsbCBwb2ludGVyIGlmIG5vIHRlc3QgaXMgcnVubmluZy4gSW4KK3BhcnRpY3Vs
YXIsIHlvdSBjYW5ub3QgZmluZCB0aGUgdGVzdCBjYXNlIG5hbWUgaW4gYFRlc3RDYXNlU2V0VXAo
KWAsCitgVGVzdENhc2VUZWFyRG93bigpYCAod2hlcmUgeW91IGtub3cgdGhlIHRlc3QgY2FzZSBu
YW1lIGltcGxpY2l0bHkpLCBvcgorZnVuY3Rpb25zIGNhbGxlZCBmcm9tIHRoZW0uCisKKyoqQXZh
aWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIEV4dGVuZGluZyBnb29nbGV0
ZXN0IGJ5IEhhbmRsaW5nIFRlc3QgRXZlbnRzCisKK2dvb2dsZXRlc3QgcHJvdmlkZXMgYW4gKipl
dmVudCBsaXN0ZW5lciBBUEkqKiB0byBsZXQgeW91IHJlY2VpdmUgbm90aWZpY2F0aW9ucworYWJv
dXQgdGhlIHByb2dyZXNzIG9mIGEgdGVzdCBwcm9ncmFtIGFuZCB0ZXN0IGZhaWx1cmVzLiBUaGUg
ZXZlbnRzIHlvdSBjYW4KK2xpc3RlbiB0byBpbmNsdWRlIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRo
ZSB0ZXN0IHByb2dyYW0sIGEgdGVzdCBjYXNlLCBvciBhIHRlc3QKK21ldGhvZCwgYW1vbmcgb3Ro
ZXJzLiBZb3UgbWF5IHVzZSB0aGlzIEFQSSB0byBhdWdtZW50IG9yIHJlcGxhY2UgdGhlIHN0YW5k
YXJkCitjb25zb2xlIG91dHB1dCwgcmVwbGFjZSB0aGUgWE1MIG91dHB1dCwgb3IgcHJvdmlkZSBh
IGNvbXBsZXRlbHkgZGlmZmVyZW50IGZvcm0KK29mIG91dHB1dCwgc3VjaCBhcyBhIEdVSSBvciBh
IGRhdGFiYXNlLiBZb3UgY2FuIGFsc28gdXNlIHRlc3QgZXZlbnRzIGFzCitjaGVja3BvaW50cyB0
byBpbXBsZW1lbnQgYSByZXNvdXJjZSBsZWFrIGNoZWNrZXIsIGZvciBleGFtcGxlLgorCisqKkF2
YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgRGVmaW5pbmcgRXZlbnQg
TGlzdGVuZXJzCisKK1RvIGRlZmluZSBhIGV2ZW50IGxpc3RlbmVyLCB5b3Ugc3ViY2xhc3MgZWl0
aGVyIHRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyIG9yCit0ZXN0aW5nOjpFbXB0eVRlc3RFdmVu
dExpc3RlbmVyIFRoZSBmb3JtZXIgaXMgYW4gKGFic3RyYWN0KSBpbnRlcmZhY2UsIHdoZXJlCisq
ZWFjaCBwdXJlIHZpcnR1YWwgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIHRvIGhhbmRsZSBhIHRl
c3QgZXZlbnQqIChGb3IKK2V4YW1wbGUsIHdoZW4gYSB0ZXN0IHN0YXJ0cywgdGhlIGBPblRlc3RT
dGFydCgpYCBtZXRob2Qgd2lsbCBiZSBjYWxsZWQuKS4gVGhlCitsYXR0ZXIgcHJvdmlkZXMgYW4g
ZW1wdHkgaW1wbGVtZW50YXRpb24gb2YgYWxsIG1ldGhvZHMgaW4gdGhlIGludGVyZmFjZSwgc3Vj
aAordGhhdCBhIHN1YmNsYXNzIG9ubHkgbmVlZHMgdG8gb3ZlcnJpZGUgdGhlIG1ldGhvZHMgaXQg
Y2FyZXMgYWJvdXQuCisKK1doZW4gYW4gZXZlbnQgaXMgZmlyZWQsIGl0cyBjb250ZXh0IGlzIHBh
c3NlZCB0byB0aGUgaGFuZGxlciBmdW5jdGlvbiBhcyBhbgorYXJndW1lbnQuIFRoZSBmb2xsb3dp
bmcgYXJndW1lbnQgdHlwZXMgYXJlIHVzZWQ6CisKKyogICBVbml0VGVzdCByZWZsZWN0cyB0aGUg
c3RhdGUgb2YgdGhlIGVudGlyZSB0ZXN0IHByb2dyYW0sCisqICAgVGVzdENhc2UgaGFzIGluZm9y
bWF0aW9uIGFib3V0IGEgdGVzdCBjYXNlLCB3aGljaCBjYW4gY29udGFpbiBvbmUgb3IgbW9yZQor
ICAgIHRlc3RzLAorKiAgIFRlc3RJbmZvIGNvbnRhaW5zIHRoZSBzdGF0ZSBvZiBhIHRlc3QsIGFu
ZAorKiAgIFRlc3RQYXJ0UmVzdWx0IHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBhIHRlc3QgYXNz
ZXJ0aW9uLgorCitBbiBldmVudCBoYW5kbGVyIGZ1bmN0aW9uIGNhbiBleGFtaW5lIHRoZSBhcmd1
bWVudCBpdCByZWNlaXZlcyB0byBmaW5kIG91dAoraW50ZXJlc3RpbmcgaW5mb3JtYXRpb24gYWJv
dXQgdGhlIGV2ZW50IGFuZCB0aGUgdGVzdCBwcm9ncmFtJ3Mgc3RhdGUuCisKK0hlcmUncyBhbiBl
eGFtcGxlOgorCitgYGBjKysKKyAgY2xhc3MgTWluaW1hbGlzdFByaW50ZXIgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKKyAgICAvLyBDYWxsZWQgYmVmb3JlIGEg
dGVzdCBzdGFydHMuCisgICAgdmlydHVhbCB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IDo6dGVzdGlu
Zzo6VGVzdEluZm8mIHRlc3RfaW5mbykgeworICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBz
dGFydGluZy5cbiIsCisgICAgICAgICAgICAgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRl
c3RfaW5mby5uYW1lKCkpOworICAgIH0KKworICAgIC8vIENhbGxlZCBhZnRlciBhIGZhaWxlZCBh
c3NlcnRpb24gb3IgYSBTVUNDRVNTKCkuCisgICAgdmlydHVhbCB2b2lkIE9uVGVzdFBhcnRSZXN1
bHQoY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgewor
ICAgICAgcHJpbnRmKCIlcyBpbiAlczolZFxuJXNcbiIsCisgICAgICAgICAgICAgdGVzdF9wYXJ0
X3Jlc3VsdC5mYWlsZWQoKSA/ICIqKiogRmFpbHVyZSIgOiAiU3VjY2VzcyIsCisgICAgICAgICAg
ICAgdGVzdF9wYXJ0X3Jlc3VsdC5maWxlX25hbWUoKSwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRf
cmVzdWx0LmxpbmVfbnVtYmVyKCksCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5zdW1t
YXJ5KCkpOworICAgIH0KKworICAgIC8vIENhbGxlZCBhZnRlciBhIHRlc3QgZW5kcy4KKyAgICB2
aXJ0dWFsIHZvaWQgT25UZXN0RW5kKGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8mIHRlc3RfaW5m
bykgeworICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBlbmRpbmcuXG4iLAorICAgICAgICAg
ICAgIHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgICB9
CisgIH07CitgYGAKKworIyMjIFVzaW5nIEV2ZW50IExpc3RlbmVycworCitUbyB1c2UgdGhlIGV2
ZW50IGxpc3RlbmVyIHlvdSBoYXZlIGRlZmluZWQsIGFkZCBhbiBpbnN0YW5jZSBvZiBpdCB0byB0
aGUKK2dvb2dsZXRlc3QgZXZlbnQgbGlzdGVuZXIgbGlzdCAocmVwcmVzZW50ZWQgYnkgY2xhc3Mg
VGVzdEV2ZW50TGlzdGVuZXJzIC0gbm90ZQordGhlICJzIiBhdCB0aGUgZW5kIG9mIHRoZSBuYW1l
KSBpbiB5b3VyIGBtYWluKClgIGZ1bmN0aW9uLCBiZWZvcmUgY2FsbGluZworYFJVTl9BTExfVEVT
VFMoKWA6CisKK2BgYGMrKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIDo6
dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICAvLyBHZXRzIGhvbGQgb2Yg
dGhlIGV2ZW50IGxpc3RlbmVyIGxpc3QuCisgIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJz
JiBsaXN0ZW5lcnMgPQorICAgICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgp
LT5saXN0ZW5lcnMoKTsKKyAgLy8gQWRkcyBhIGxpc3RlbmVyIHRvIHRoZSBlbmQuICBnb29nbGV0
ZXN0IHRha2VzIHRoZSBvd25lcnNoaXAuCisgIGxpc3RlbmVycy5BcHBlbmQobmV3IE1pbmltYWxp
c3RQcmludGVyKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAorCitUaGVyZSdz
IG9ubHkgb25lIHByb2JsZW06IHRoZSBkZWZhdWx0IHRlc3QgcmVzdWx0IHByaW50ZXIgaXMgc3Rp
bGwgaW4gZWZmZWN0LCBzbworaXRzIG91dHB1dCB3aWxsIG1pbmdsZSB3aXRoIHRoZSBvdXRwdXQg
ZnJvbSB5b3VyIG1pbmltYWxpc3QgcHJpbnRlci4gVG8gc3VwcHJlc3MKK3RoZSBkZWZhdWx0IHBy
aW50ZXIsIGp1c3QgcmVsZWFzZSBpdCBmcm9tIHRoZSBldmVudCBsaXN0ZW5lciBsaXN0IGFuZCBk
ZWxldGUgaXQuCitZb3UgY2FuIGRvIHNvIGJ5IGFkZGluZyBvbmUgbGluZToKKworYGBgYysrCisg
IC4uLgorICBkZWxldGUgbGlzdGVuZXJzLlJlbGVhc2UobGlzdGVuZXJzLmRlZmF1bHRfcmVzdWx0
X3ByaW50ZXIoKSk7CisgIGxpc3RlbmVycy5BcHBlbmQobmV3IE1pbmltYWxpc3RQcmludGVyKTsK
KyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK2BgYAorCitOb3csIHNpdCBiYWNrIGFuZCBlbmpv
eSBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IG91dHB1dCBmcm9tIHlvdXIgdGVzdHMuIEZvciBtb3Jl
CitkZXRhaWxzLCB5b3UgY2FuIHJlYWQgdGhpcyBzYW1wbGU5X3VuaXR0ZXN0LmNjCisKK1lvdSBt
YXkgYXBwZW5kIG1vcmUgdGhhbiBvbmUgbGlzdGVuZXIgdG8gdGhlIGxpc3QuIFdoZW4gYW4gYE9u
KlN0YXJ0KClgIG9yCitgT25UZXN0UGFydFJlc3VsdCgpYCBldmVudCBpcyBmaXJlZCwgdGhlIGxp
c3RlbmVycyB3aWxsIHJlY2VpdmUgaXQgaW4gdGhlIG9yZGVyCit0aGV5IGFwcGVhciBpbiB0aGUg
bGlzdCAoc2luY2UgbmV3IGxpc3RlbmVycyBhcmUgYWRkZWQgdG8gdGhlIGVuZCBvZiB0aGUgbGlz
dCwKK3RoZSBkZWZhdWx0IHRleHQgcHJpbnRlciBhbmQgdGhlIGRlZmF1bHQgWE1MIGdlbmVyYXRv
ciB3aWxsIHJlY2VpdmUgdGhlIGV2ZW50CitmaXJzdCkuIEFuIGBPbipFbmQoKWAgZXZlbnQgd2ls
bCBiZSByZWNlaXZlZCBieSB0aGUgbGlzdGVuZXJzIGluIHRoZSAqcmV2ZXJzZSoKK29yZGVyLiBU
aGlzIGFsbG93cyBvdXRwdXQgYnkgbGlzdGVuZXJzIGFkZGVkIGxhdGVyIHRvIGJlIGZyYW1lZCBi
eSBvdXRwdXQgZnJvbQorbGlzdGVuZXJzIGFkZGVkIGVhcmxpZXIuCisKKyMjIyBHZW5lcmF0aW5n
IEZhaWx1cmVzIGluIExpc3RlbmVycworCitZb3UgbWF5IHVzZSBmYWlsdXJlLXJhaXNpbmcgbWFj
cm9zIChgRVhQRUNUXyooKWAsIGBBU1NFUlRfKigpYCwgYEZBSUwoKWAsIGV0YykKK3doZW4gcHJv
Y2Vzc2luZyBhbiBldmVudC4gVGhlcmUgYXJlIHNvbWUgcmVzdHJpY3Rpb25zOgorCisxLiAgWW91
IGNhbm5vdCBnZW5lcmF0ZSBhbnkgZmFpbHVyZSBpbiBgT25UZXN0UGFydFJlc3VsdCgpYCAob3Ro
ZXJ3aXNlIGl0IHdpbGwKKyAgICBjYXVzZSBgT25UZXN0UGFydFJlc3VsdCgpYCB0byBiZSBjYWxs
ZWQgcmVjdXJzaXZlbHkpLgorMS4gIEEgbGlzdGVuZXIgdGhhdCBoYW5kbGVzIGBPblRlc3RQYXJ0
UmVzdWx0KClgIGlzIG5vdCBhbGxvd2VkIHRvIGdlbmVyYXRlIGFueQorICAgIGZhaWx1cmUuCisK
K1doZW4geW91IGFkZCBsaXN0ZW5lcnMgdG8gdGhlIGxpc3RlbmVyIGxpc3QsIHlvdSBzaG91bGQg
cHV0IGxpc3RlbmVycyB0aGF0CitoYW5kbGUgYE9uVGVzdFBhcnRSZXN1bHQoKWAgKmJlZm9yZSog
bGlzdGVuZXJzIHRoYXQgY2FuIGdlbmVyYXRlIGZhaWx1cmVzLiBUaGlzCitlbnN1cmVzIHRoYXQg
ZmFpbHVyZXMgZ2VuZXJhdGVkIGJ5IHRoZSBsYXR0ZXIgYXJlIGF0dHJpYnV0ZWQgdG8gdGhlIHJp
Z2h0IHRlc3QKK2J5IHRoZSBmb3JtZXIuCisKK1dlIGhhdmUgYSBzYW1wbGUgb2YgZmFpbHVyZS1y
YWlzaW5nIGxpc3RlbmVyIHNhbXBsZTEwX3VuaXR0ZXN0LmNjCisKKyMjIFJ1bm5pbmcgVGVzdCBQ
cm9ncmFtczogQWR2YW5jZWQgT3B0aW9ucworCitnb29nbGV0ZXN0IHRlc3QgcHJvZ3JhbXMgYXJl
IG9yZGluYXJ5IGV4ZWN1dGFibGVzLiBPbmNlIGJ1aWx0LCB5b3UgY2FuIHJ1biB0aGVtCitkaXJl
Y3RseSBhbmQgYWZmZWN0IHRoZWlyIGJlaGF2aW9yIHZpYSB0aGUgZm9sbG93aW5nIGVudmlyb25t
ZW50IHZhcmlhYmxlcworYW5kL29yIGNvbW1hbmQgbGluZSBmbGFncy4gRm9yIHRoZSBmbGFncyB0
byB3b3JrLCB5b3VyIHByb2dyYW1zIG11c3QgY2FsbAorYDo6dGVzdGluZzo6SW5pdEdvb2dsZVRl
c3QoKWAgYmVmb3JlIGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWAuCisKK1RvIHNlZSBhIGxpc3Qg
b2Ygc3VwcG9ydGVkIGZsYWdzIGFuZCB0aGVpciB1c2FnZSwgcGxlYXNlIHJ1biB5b3VyIHRlc3Qg
cHJvZ3JhbQord2l0aCB0aGUgYC0taGVscGAgZmxhZy4gWW91IGNhbiBhbHNvIHVzZSBgLWhgLCBg
LT9gLCBvciBgLz9gIGZvciBzaG9ydC4KKworSWYgYW4gb3B0aW9uIGlzIHNwZWNpZmllZCBib3Ro
IGJ5IGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGFuZCBieSBhIGZsYWcsIHRoZQorbGF0dGVyIHRh
a2VzIHByZWNlZGVuY2UuCisKKyMjIyBTZWxlY3RpbmcgVGVzdHMKKworIyMjIyBMaXN0aW5nIFRl
c3QgTmFtZXMKKworU29tZXRpbWVzIGl0IGlzIG5lY2Vzc2FyeSB0byBsaXN0IHRoZSBhdmFpbGFi
bGUgdGVzdHMgaW4gYSBwcm9ncmFtIGJlZm9yZQorcnVubmluZyB0aGVtIHNvIHRoYXQgYSBmaWx0
ZXIgbWF5IGJlIGFwcGxpZWQgaWYgbmVlZGVkLiBJbmNsdWRpbmcgdGhlIGZsYWcKK2AtLWd0ZXN0
X2xpc3RfdGVzdHNgIG92ZXJyaWRlcyBhbGwgb3RoZXIgZmxhZ3MgYW5kIGxpc3RzIHRlc3RzIGlu
IHRoZSBmb2xsb3dpbmcKK2Zvcm1hdDoKKworYGBgbm9uZQorVGVzdENhc2UxLgorICBUZXN0TmFt
ZTEKKyAgVGVzdE5hbWUyCitUZXN0Q2FzZTIuCisgIFRlc3ROYW1lCitgYGAKKworTm9uZSBvZiB0
aGUgdGVzdHMgbGlzdGVkIGFyZSBhY3R1YWxseSBydW4gaWYgdGhlIGZsYWcgaXMgcHJvdmlkZWQu
IFRoZXJlIGlzIG5vCitjb3JyZXNwb25kaW5nIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciB0aGlz
IGZsYWcuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyMg
UnVubmluZyBhIFN1YnNldCBvZiB0aGUgVGVzdHMKKworQnkgZGVmYXVsdCwgYSBnb29nbGV0ZXN0
IHByb2dyYW0gcnVucyBhbGwgdGVzdHMgdGhlIHVzZXIgaGFzIGRlZmluZWQuIFNvbWV0aW1lcywK
K3lvdSB3YW50IHRvIHJ1biBvbmx5IGEgc3Vic2V0IG9mIHRoZSB0ZXN0cyAoZS5nLiBmb3IgZGVi
dWdnaW5nIG9yIHF1aWNrbHkKK3ZlcmlmeWluZyBhIGNoYW5nZSkuIElmIHlvdSBzZXQgdGhlIGBH
VEVTVF9GSUxURVJgIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQorYC0tZ3Rlc3RfZmlsdGVy
YCBmbGFnIHRvIGEgZmlsdGVyIHN0cmluZywgZ29vZ2xldGVzdCB3aWxsIG9ubHkgcnVuIHRoZSB0
ZXN0cword2hvc2UgZnVsbCBuYW1lcyAoaW4gdGhlIGZvcm0gb2YgYFRlc3RDYXNlTmFtZS5UZXN0
TmFtZWApIG1hdGNoIHRoZSBmaWx0ZXIuCisKK1RoZSBmb3JtYXQgb2YgYSBmaWx0ZXIgaXMgYSAn
YDpgJy1zZXBhcmF0ZWQgbGlzdCBvZiB3aWxkY2FyZCBwYXR0ZXJucyAoY2FsbGVkCit0aGUgKnBv
c2l0aXZlIHBhdHRlcm5zKikgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhICdgLWAnIGFuZCBhbm90
aGVyCisnYDpgJy1zZXBhcmF0ZWQgcGF0dGVybiBsaXN0IChjYWxsZWQgdGhlICpuZWdhdGl2ZSBw
YXR0ZXJucyopLiBBIHRlc3QgbWF0Y2hlcwordGhlIGZpbHRlciBpZiBhbmQgb25seSBpZiBpdCBt
YXRjaGVzIGFueSBvZiB0aGUgcG9zaXRpdmUgcGF0dGVybnMgYnV0IGRvZXMgbm90CittYXRjaCBh
bnkgb2YgdGhlIG5lZ2F0aXZlIHBhdHRlcm5zLgorCitBIHBhdHRlcm4gbWF5IGNvbnRhaW4gYCcq
J2AgKG1hdGNoZXMgYW55IHN0cmluZykgb3IgYCc/J2AgKG1hdGNoZXMgYW55IHNpbmdsZQorY2hh
cmFjdGVyKS4gRm9yIGNvbnZlbmllbmNlLCB0aGUgZmlsdGVyCisKK2AnKi1OZWdhdGl2ZVBhdHRl
cm5zJ2AgY2FuIGJlIGFsc28gd3JpdHRlbiBhcyBgJy1OZWdhdGl2ZVBhdHRlcm5zJ2AuCisKK0Zv
ciBleGFtcGxlOgorCisqICAgYC4vZm9vX3Rlc3RgIEhhcyBubyBmbGFnLCBhbmQgdGh1cyBydW5z
IGFsbCBpdHMgdGVzdHMuCisqICAgYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9KmAgQWxzbyBy
dW5zIGV2ZXJ5dGhpbmcsIGR1ZSB0byB0aGUgc2luZ2xlCisgICAgbWF0Y2gtZXZlcnl0aGluZyBg
KmAgdmFsdWUuCisqICAgYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Rm9vVGVzdC4qYCBSdW5z
IGV2ZXJ5dGhpbmcgaW4gdGVzdCBjYXNlIGBGb29UZXN0YAorICAgIC4KKyogICBgLi9mb29fdGVz
dCAtLWd0ZXN0X2ZpbHRlcj0qTnVsbCo6KkNvbnN0cnVjdG9yKmAgUnVucyBhbnkgdGVzdCB3aG9z
ZSBmdWxsCisgICAgbmFtZSBjb250YWlucyBlaXRoZXIgYCJOdWxsImAgb3IgYCJDb25zdHJ1Y3Rv
ciJgIC4KKyogICBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj0tKkRlYXRoVGVzdC4qYCBSdW5z
IGFsbCBub24tZGVhdGggdGVzdHMuCisqICAgYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Rm9v
VGVzdC4qLUZvb1Rlc3QuQmFyYCBSdW5zIGV2ZXJ5dGhpbmcgaW4gdGVzdAorICAgIGNhc2UgYEZv
b1Rlc3RgIGV4Y2VwdCBgRm9vVGVzdC5CYXJgLgorKiAgIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmls
dGVyPUZvb1Rlc3QuKjpCYXJUZXN0LiotRm9vVGVzdC5CYXI6QmFyVGVzdC5Gb29gIFJ1bnMKKyAg
ICBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBgRm9vVGVzdGAgZXhjZXB0IGBGb29UZXN0LkJhcmAg
YW5kIGV2ZXJ5dGhpbmcgaW4KKyAgICB0ZXN0IGNhc2UgYEJhclRlc3RgIGV4Y2VwdCBgQmFyVGVz
dC5Gb29gLgorICAgIAorIyMjIyBUZW1wb3JhcmlseSBEaXNhYmxpbmcgVGVzdHMKKworSWYgeW91
IGhhdmUgYSBicm9rZW4gdGVzdCB0aGF0IHlvdSBjYW5ub3QgZml4IHJpZ2h0IGF3YXksIHlvdSBj
YW4gYWRkIHRoZQorYERJU0FCTEVEX2AgcHJlZml4IHRvIGl0cyBuYW1lLiBUaGlzIHdpbGwgZXhj
bHVkZSBpdCBmcm9tIGV4ZWN1dGlvbi4gVGhpcyBpcworYmV0dGVyIHRoYW4gY29tbWVudGluZyBv
dXQgdGhlIGNvZGUgb3IgdXNpbmcgYCNpZiAwYCwgYXMgZGlzYWJsZWQgdGVzdHMgYXJlCitzdGls
bCBjb21waWxlZCAoYW5kIHRodXMgd29uJ3Qgcm90KS4KKworSWYgeW91IG5lZWQgdG8gZGlzYWJs
ZSBhbGwgdGVzdHMgaW4gYSB0ZXN0IGNhc2UsIHlvdSBjYW4gZWl0aGVyIGFkZCBgRElTQUJMRURf
YAordG8gdGhlIGZyb250IG9mIHRoZSBuYW1lIG9mIGVhY2ggdGVzdCwgb3IgYWx0ZXJuYXRpdmVs
eSBhZGQgaXQgdG8gdGhlIGZyb250IG9mCit0aGUgdGVzdCBjYXNlIG5hbWUuCisKK0ZvciBleGFt
cGxlLCB0aGUgZm9sbG93aW5nIHRlc3RzIHdvbid0IGJlIHJ1biBieSBnb29nbGV0ZXN0LCBldmVu
IHRob3VnaCB0aGV5Cit3aWxsIHN0aWxsIGJlIGNvbXBpbGVkOgorCitgYGBjKysKKy8vIFRlc3Rz
IHRoYXQgRm9vIGRvZXMgQWJjLgorVEVTVChGb29UZXN0LCBESVNBQkxFRF9Eb2VzQWJjKSB7IC4u
LiB9CisKK2NsYXNzIERJU0FCTEVEX0JhclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsg
Li4uIH07CisKKy8vIFRlc3RzIHRoYXQgQmFyIGRvZXMgWHl6LgorVEVTVF9GKERJU0FCTEVEX0Jh
clRlc3QsIERvZXNYeXopIHsgLi4uIH0KK2BgYAorCitOT1RFOiBUaGlzIGZlYXR1cmUgc2hvdWxk
IG9ubHkgYmUgdXNlZCBmb3IgdGVtcG9yYXJ5IHBhaW4tcmVsaWVmLiBZb3Ugc3RpbGwgaGF2ZQor
dG8gZml4IHRoZSBkaXNhYmxlZCB0ZXN0cyBhdCBhIGxhdGVyIGRhdGUuIEFzIGEgcmVtaW5kZXIs
IGdvb2dsZXRlc3Qgd2lsbCBwcmludAorYSBiYW5uZXIgd2FybmluZyB5b3UgaWYgYSB0ZXN0IHBy
b2dyYW0gY29udGFpbnMgYW55IGRpc2FibGVkIHRlc3RzLgorCitUSVA6IFlvdSBjYW4gZWFzaWx5
IGNvdW50IHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgeW91IGhhdmUgdXNpbmcgYGdzZWFy
Y2hgCithbmQvb3IgYGdyZXBgLiBUaGlzIG51bWJlciBjYW4gYmUgdXNlZCBhcyBhIG1ldHJpYyBm
b3IgaW1wcm92aW5nIHlvdXIgdGVzdAorcXVhbGl0eS4KKworKipBdmFpbGFiaWxpdHkqKjogTGlu
dXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIyBUZW1wb3JhcmlseSBFbmFibGluZyBEaXNhYmxlZCBU
ZXN0cworCitUbyBpbmNsdWRlIGRpc2FibGVkIHRlc3RzIGluIHRlc3QgZXhlY3V0aW9uLCBqdXN0
IGludm9rZSB0aGUgdGVzdCBwcm9ncmFtIHdpdGgKK3RoZSBgLS1ndGVzdF9hbHNvX3J1bl9kaXNh
YmxlZF90ZXN0c2AgZmxhZyBvciBzZXQgdGhlCitgR1RFU1RfQUxTT19SVU5fRElTQUJMRURfVEVT
VFNgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEgdmFsdWUgb3RoZXIgdGhhbiBgMGAuCitZb3Ug
Y2FuIGNvbWJpbmUgdGhpcyB3aXRoIHRoZSBgLS1ndGVzdF9maWx0ZXJgIGZsYWcgdG8gZnVydGhl
ciBzZWxlY3Qgd2hpY2gKK2Rpc2FibGVkIHRlc3RzIHRvIHJ1bi4KKworKipBdmFpbGFiaWxpdHkq
KjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIFJlcGVhdGluZyB0aGUgVGVzdHMKKworT25j
ZSBpbiBhIHdoaWxlIHlvdSdsbCBydW4gaW50byBhIHRlc3Qgd2hvc2UgcmVzdWx0IGlzIGhpdC1v
ci1taXNzLiBQZXJoYXBzIGl0Cit3aWxsIGZhaWwgb25seSAxJSBvZiB0aGUgdGltZSwgbWFraW5n
IGl0IHJhdGhlciBoYXJkIHRvIHJlcHJvZHVjZSB0aGUgYnVnIHVuZGVyCithIGRlYnVnZ2VyLiBU
aGlzIGNhbiBiZSBhIG1ham9yIHNvdXJjZSBvZiBmcnVzdHJhdGlvbi4KKworVGhlIGAtLWd0ZXN0
X3JlcGVhdGAgZmxhZyBhbGxvd3MgeW91IHRvIHJlcGVhdCBhbGwgKG9yIHNlbGVjdGVkKSB0ZXN0
IG1ldGhvZHMgaW4KK2EgcHJvZ3JhbSBtYW55IHRpbWVzLiBIb3BlZnVsbHksIGEgZmxha3kgdGVz
dCB3aWxsIGV2ZW50dWFsbHkgZmFpbCBhbmQgZ2l2ZSB5b3UKK2EgY2hhbmNlIHRvIGRlYnVnLiBI
ZXJlJ3MgaG93IHRvIHVzZSBpdDoKKworYGBgbm9uZQorJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVh
dD0xMDAwCitSZXBlYXQgZm9vX3Rlc3QgMTAwMCB0aW1lcyBhbmQgZG9uJ3Qgc3RvcCBhdCBmYWls
dXJlcy4KKworJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0tMQorQSBuZWdhdGl2ZSBjb3VudCBt
ZWFucyByZXBlYXRpbmcgZm9yZXZlci4KKworJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAw
IC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZQorUmVwZWF0IGZvb190ZXN0IDEwMDAgdGltZXMsIHN0
b3BwaW5nIGF0IHRoZSBmaXJzdCBmYWlsdXJlLiAgVGhpcworaXMgZXNwZWNpYWxseSB1c2VmdWwg
d2hlbiBydW5uaW5nIHVuZGVyIGEgZGVidWdnZXI6IHdoZW4gdGhlIHRlc3QKK2ZhaWxzLCBpdCB3
aWxsIGRyb3AgaW50byB0aGUgZGVidWdnZXIgYW5kIHlvdSBjYW4gdGhlbiBpbnNwZWN0Cit2YXJp
YWJsZXMgYW5kIHN0YWNrcy4KKworJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwIC0tZ3Rl
c3RfZmlsdGVyPUZvb0Jhci4qCitSZXBlYXQgdGhlIHRlc3RzIHdob3NlIG5hbWUgbWF0Y2hlcyB0
aGUgZmlsdGVyIDEwMDAgdGltZXMuCitgYGAKKworSWYgeW91ciB0ZXN0IHByb2dyYW0gY29udGFp
bnMgW2dsb2JhbCBzZXQtdXAvdGVhci1kb3duXSgjZ2xvYmFsLXNldC11cC1hbmQtdGVhci1kb3du
KSBjb2RlLCBpdAord2lsbCBiZSByZXBlYXRlZCBpbiBlYWNoIGl0ZXJhdGlvbiBhcyB3ZWxsLCBh
cyB0aGUgZmxha2luZXNzIG1heSBiZSBpbiBpdC4gWW91CitjYW4gYWxzbyBzcGVjaWZ5IHRoZSBy
ZXBlYXQgY291bnQgYnkgc2V0dGluZyB0aGUgYEdURVNUX1JFUEVBVGAgZW52aXJvbm1lbnQKK3Zh
cmlhYmxlLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMg
U2h1ZmZsaW5nIHRoZSBUZXN0cworCitZb3UgY2FuIHNwZWNpZnkgdGhlIGAtLWd0ZXN0X3NodWZm
bGVgIGZsYWcgKG9yIHNldCB0aGUgYEdURVNUX1NIVUZGTEVgCitlbnZpcm9ubWVudCB2YXJpYWJs
ZSB0byBgMWApIHRvIHJ1biB0aGUgdGVzdHMgaW4gYSBwcm9ncmFtIGluIGEgcmFuZG9tIG9yZGVy
LgorVGhpcyBoZWxwcyB0byByZXZlYWwgYmFkIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRlc3RzLgor
CitCeSBkZWZhdWx0LCBnb29nbGV0ZXN0IHVzZXMgYSByYW5kb20gc2VlZCBjYWxjdWxhdGVkIGZy
b20gdGhlIGN1cnJlbnQgdGltZS4KK1RoZXJlZm9yZSB5b3UnbGwgZ2V0IGEgZGlmZmVyZW50IG9y
ZGVyIGV2ZXJ5IHRpbWUuIFRoZSBjb25zb2xlIG91dHB1dCBpbmNsdWRlcwordGhlIHJhbmRvbSBz
ZWVkIHZhbHVlLCBzdWNoIHRoYXQgeW91IGNhbiByZXByb2R1Y2UgYW4gb3JkZXItcmVsYXRlZCB0
ZXN0IGZhaWx1cmUKK2xhdGVyLiBUbyBzcGVjaWZ5IHRoZSByYW5kb20gc2VlZCBleHBsaWNpdGx5
LCB1c2UgdGhlIGAtLWd0ZXN0X3JhbmRvbV9zZWVkPVNFRURgCitmbGFnIChvciBzZXQgdGhlIGBH
VEVTVF9SQU5ET01fU0VFRGAgZW52aXJvbm1lbnQgdmFyaWFibGUpLCB3aGVyZSBgU0VFRGAgaXMg
YW4KK2ludGVnZXIgaW4gdGhlIHJhbmdlIFswLCA5OTk5OV0uIFRoZSBzZWVkIHZhbHVlIDAgaXMg
c3BlY2lhbDogaXQgdGVsbHMKK2dvb2dsZXRlc3QgdG8gZG8gdGhlIGRlZmF1bHQgYmVoYXZpb3Ig
b2YgY2FsY3VsYXRpbmcgdGhlIHNlZWQgZnJvbSB0aGUgY3VycmVudAordGltZS4KKworSWYgeW91
IGNvbWJpbmUgdGhpcyB3aXRoIGAtLWd0ZXN0X3JlcGVhdD1OYCwgZ29vZ2xldGVzdCB3aWxsIHBp
Y2sgYSBkaWZmZXJlbnQKK3JhbmRvbSBzZWVkIGFuZCByZS1zaHVmZmxlIHRoZSB0ZXN0cyBpbiBl
YWNoIGl0ZXJhdGlvbi4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4K
KworIyMjIENvbnRyb2xsaW5nIFRlc3QgT3V0cHV0CisKKyMjIyMgQ29sb3JlZCBUZXJtaW5hbCBP
dXRwdXQKKworZ29vZ2xldGVzdCBjYW4gdXNlIGNvbG9ycyBpbiBpdHMgdGVybWluYWwgb3V0cHV0
IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNwb3QgdGhlCitpbXBvcnRhbnQgaW5mb3JtYXRpb246CisK
Ky4uLjxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPlstLS0tLS0tLS0tXTxzcGFuIHN0
eWxlPSJjb2xvcjpibGFjayI+IDEgdGVzdCBmcm9tIEZvb1Rlc3Q8YnIvPgorPHNwYW4gc3R5bGU9
ImNvbG9yOmdyZWVuIj5bIFJVTiAgICAgIF08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiBGb29U
ZXN0LkRvZXNBYmM8YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuIj5bICAgICAgIE9LIF08
c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiBGb29UZXN0LkRvZXNBYmM8YnIvPgorPHNwYW4gc3R5
bGU9ImNvbG9yOmdyZWVuIj5bLS0tLS0tLS0tLV08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiAy
IHRlc3RzIGZyb20gQmFyVGVzdDxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPlsgUlVO
ICAgICAgXTxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+IEJhclRlc3QuSGFzWHl6UHJvcGVydHk8
YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuIj5bICAgICAgIE9LIF08c3BhbiBzdHlsZT0i
Y29sb3I6YmxhY2siPiBCYXJUZXN0Lkhhc1h5elByb3BlcnR5PGJyLz4KKzxzcGFuIHN0eWxlPSJj
b2xvcjpncmVlbiI+WyBSVU4gICAgICBdPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4gQmFyVGVz
dC5SZXR1cm5zVHJ1ZU9uU3VjY2Vzczxici8+CisuLi4gc29tZSBlcnJvciBtZXNzYWdlcyAuLi48
YnIvPgorPHNwYW4gICBzdHlsZT0iY29sb3I6cmVkIj5bICBGQUlMRUQgIF0gPHNwYW4gc3R5bGU9
ImNvbG9yOmJsYWNrIj5CYXJUZXN0LlJldHVybnNUcnVlT25TdWNjZXNzPGJyLz4KKy4uLjxici8+
Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPls9PT09PT09PT09XTxzcGFuIHN0eWxlPSJjb2xv
cjpibGFjayI+IDMwIHRlc3RzIGZyb20gMTQgdGVzdCBjYXNlcyByYW4uPGJyLz4KKzxzcGFuIHN0
eWxlPSJjb2xvcjpncmVlbiI+WyAgUEFTU0VEICBdPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4g
MjggdGVzdHMuPGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPlsgIEZBSUxFRCAgXTxzcGFu
IHN0eWxlPSJjb2xvcjpibGFjayI+IDIgdGVzdHMsIGxpc3RlZCBiZWxvdzo8YnIvPgorPHNwYW4g
c3R5bGU9ImNvbG9yOnJlZCI+WyAgRkFJTEVEICBdPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4g
QmFyVGVzdC5SZXR1cm5zVHJ1ZU9uU3VjY2Vzczxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6cmVk
Ij5bICBGQUlMRUQgIF08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiBBbm90aGVyVGVzdC5Eb2Vz
WHl6PGJyLz4KKyAgMiBGQUlMRUQgVEVTVFMKKworWW91IGNhbiBzZXQgdGhlIGBHVEVTVF9DT0xP
UmAgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlIGAtLWd0ZXN0X2NvbG9yYAorY29tbWFuZCBs
aW5lIGZsYWcgdG8gYHllc2AsIGBub2AsIG9yIGBhdXRvYCAodGhlIGRlZmF1bHQpIHRvIGVuYWJs
ZSBjb2xvcnMsCitkaXNhYmxlIGNvbG9ycywgb3IgbGV0IGdvb2dsZXRlc3QgZGVjaWRlLiBXaGVu
IHRoZSB2YWx1ZSBpcyBgYXV0b2AsIGdvb2dsZXRlc3QKK3dpbGwgdXNlIGNvbG9ycyBpZiBhbmQg
b25seSBpZiB0aGUgb3V0cHV0IGdvZXMgdG8gYSB0ZXJtaW5hbCBhbmQgKG9uIG5vbi1XaW5kb3dz
CitwbGF0Zm9ybXMpIHRoZSBgVEVSTWAgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0IHRvIGB4
dGVybWAgb3IgYHh0ZXJtLWNvbG9yYC4KKworICoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5k
b3dzLCBNYWMuCisKKyMjIyMgU3VwcHJlc3NpbmcgdGhlIEVsYXBzZWQgVGltZQorCitCeSBkZWZh
dWx0LCBnb29nbGV0ZXN0IHByaW50cyB0aGUgdGltZSBpdCB0YWtlcyB0byBydW4gZWFjaCB0ZXN0
LiBUbyBkaXNhYmxlCit0aGF0LCBydW4gdGhlIHRlc3QgcHJvZ3JhbSB3aXRoIHRoZSBgLS1ndGVz
dF9wcmludF90aW1lPTBgIGNvbW1hbmQgbGluZSBmbGFnLCBvcgorc2V0IHRoZSBHVEVTVF9QUklO
VF9USU1FIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGAwYC4KKworKipBdmFpbGFiaWxpdHkqKjog
TGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIyBTdXBwcmVzc2luZyBVVEYtOCBUZXh0IE91dHB1
dAorCitJbiBjYXNlIG9mIGFzc2VydGlvbiBmYWlsdXJlcywgZ29vZ2xldGVzdCBwcmludHMgZXhw
ZWN0ZWQgYW5kIGFjdHVhbCB2YWx1ZXMgb2YKK3R5cGUgYHN0cmluZ2AgYm90aCBhcyBoZXgtZW5j
b2RlZCBzdHJpbmdzIGFzIHdlbGwgYXMgaW4gcmVhZGFibGUgVVRGLTggdGV4dCBpZgordGhleSBj
b250YWluIHZhbGlkIG5vbi1BU0NJSSBVVEYtOCBjaGFyYWN0ZXJzLiBJZiB5b3Ugd2FudCB0byBz
dXBwcmVzcyB0aGUgVVRGLTgKK3RleHQgYmVjYXVzZSwgZm9yIGV4YW1wbGUsIHlvdSBkb24ndCBo
YXZlIGFuIFVURi04IGNvbXBhdGlibGUgb3V0cHV0IG1lZGl1bSwgcnVuCit0aGUgdGVzdCBwcm9n
cmFtIHdpdGggYC0tZ3Rlc3RfcHJpbnRfdXRmOD0wYCBvciBzZXQgdGhlIGBHVEVTVF9QUklOVF9V
VEY4YAorZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYDBgLgorCisqKkF2YWlsYWJpbGl0eSoqOiBM
aW51eCwgV2luZG93cywgTWFjLgorCisKKyMjIyMgR2VuZXJhdGluZyBhbiBYTUwgUmVwb3J0CisK
K2dvb2dsZXRlc3QgY2FuIGVtaXQgYSBkZXRhaWxlZCBYTUwgcmVwb3J0IHRvIGEgZmlsZSBpbiBh
ZGRpdGlvbiB0byBpdHMgbm9ybWFsCit0ZXh0dWFsIG91dHB1dC4gVGhlIHJlcG9ydCBjb250YWlu
cyB0aGUgZHVyYXRpb24gb2YgZWFjaCB0ZXN0LCBhbmQgdGh1cyBjYW4gaGVscAoreW91IGlkZW50
aWZ5IHNsb3cgdGVzdHMuIFRoZSByZXBvcnQgaXMgYWxzbyB1c2VkIGJ5IHRoZSBodHRwOi8vdW5p
dHRlc3QKK2Rhc2hib2FyZCB0byBzaG93IHBlci10ZXN0LW1ldGhvZCBlcnJvciBtZXNzYWdlcy4K
KworVG8gZ2VuZXJhdGUgdGhlIFhNTCByZXBvcnQsIHNldCB0aGUgYEdURVNUX09VVFBVVGAgZW52
aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCitgLS1ndGVzdF9vdXRwdXRgIGZsYWcgdG8gdGhlIHN0
cmluZyBgInhtbDpwYXRoX3RvX291dHB1dF9maWxlImAsIHdoaWNoIHdpbGwKK2NyZWF0ZSB0aGUg
ZmlsZSBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24uIFlvdSBjYW4gYWxzbyBqdXN0IHVzZSB0aGUgc3Ry
aW5nIGAieG1sImAsCitpbiB3aGljaCBjYXNlIHRoZSBvdXRwdXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBgdGVzdF9kZXRhaWwueG1sYCBmaWxlIGluIHRoZQorY3VycmVudCBkaXJlY3RvcnkuCisKK0lm
IHlvdSBzcGVjaWZ5IGEgZGlyZWN0b3J5IChmb3IgZXhhbXBsZSwgYCJ4bWw6b3V0cHV0L2RpcmVj
dG9yeS8iYCBvbiBMaW51eCBvcgorYCJ4bWw6b3V0cHV0XGRpcmVjdG9yeVwiYCBvbiBXaW5kb3dz
KSwgZ29vZ2xldGVzdCB3aWxsIGNyZWF0ZSB0aGUgWE1MIGZpbGUgaW4KK3RoYXQgZGlyZWN0b3J5
LCBuYW1lZCBhZnRlciB0aGUgdGVzdCBleGVjdXRhYmxlIChlLmcuIGBmb29fdGVzdC54bWxgIGZv
ciB0ZXN0Citwcm9ncmFtIGBmb29fdGVzdGAgb3IgYGZvb190ZXN0LmV4ZWApLiBJZiB0aGUgZmls
ZSBhbHJlYWR5IGV4aXN0cyAocGVyaGFwcyBsZWZ0CitvdmVyIGZyb20gYSBwcmV2aW91cyBydW4p
LCBnb29nbGV0ZXN0IHdpbGwgcGljayBhIGRpZmZlcmVudCBuYW1lIChlLmcuCitgZm9vX3Rlc3Rf
MS54bWxgKSB0byBhdm9pZCBvdmVyd3JpdGluZyBpdC4KKworCitUaGUgcmVwb3J0IGlzIGJhc2Vk
IG9uIHRoZSBganVuaXRyZXBvcnRgIEFudCB0YXNrLiBTaW5jZSB0aGF0IGZvcm1hdCB3YXMKK29y
aWdpbmFsbHkgaW50ZW5kZWQgZm9yIEphdmEsIGEgbGl0dGxlIGludGVycHJldGF0aW9uIGlzIHJl
cXVpcmVkIHRvIG1ha2UgaXQKK2FwcGx5IHRvIGdvb2dsZXRlc3QgdGVzdHMsIGFzIHNob3duIGhl
cmU6CisKK2BgYHhtbAorPHRlc3RzdWl0ZXMgbmFtZT0iQWxsVGVzdHMiIC4uLj4KKyAgPHRlc3Rz
dWl0ZSBuYW1lPSJ0ZXN0X2Nhc2VfbmFtZSIgLi4uPgorICAgIDx0ZXN0Y2FzZSAgICBuYW1lPSJ0
ZXN0X25hbWUiIC4uLj4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiIvPgorICAgICAgPGZh
aWx1cmUgbWVzc2FnZT0iLi4uIi8+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4KKyAg
ICA8L3Rlc3RjYXNlPgorICA8L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1aXRlcz4KK2BgYAorCisqICAg
VGhlIHJvb3QgYDx0ZXN0c3VpdGVzPmAgZWxlbWVudCBjb3JyZXNwb25kcyB0byB0aGUgZW50aXJl
IHRlc3QgcHJvZ3JhbS4KKyogICBgPHRlc3RzdWl0ZT5gIGVsZW1lbnRzIGNvcnJlc3BvbmQgdG8g
Z29vZ2xldGVzdCB0ZXN0IGNhc2VzLgorKiAgIGA8dGVzdGNhc2U+YCBlbGVtZW50cyBjb3JyZXNw
b25kIHRvIGdvb2dsZXRlc3QgdGVzdCBmdW5jdGlvbnMuCisKK0ZvciBpbnN0YW5jZSwgdGhlIGZv
bGxvd2luZyBwcm9ncmFtCisKK2BgYGMrKworVEVTVChNYXRoVGVzdCwgQWRkaXRpb24pIHsgLi4u
IH0KK1RFU1QoTWF0aFRlc3QsIFN1YnRyYWN0aW9uKSB7IC4uLiB9CitURVNUKExvZ2ljVGVzdCwg
Tm9uQ29udHJhZGljdGlvbikgeyAuLi4gfQorYGBgCisKK2NvdWxkIGdlbmVyYXRlIHRoaXMgcmVw
b3J0OgorCitgYGB4bWwKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8
dGVzdHN1aXRlcyB0ZXN0cz0iMyIgZmFpbHVyZXM9IjEiIGVycm9ycz0iMCIgdGltZT0iMC4wMzUi
IHRpbWVzdGFtcD0iMjAxMS0xMC0zMVQxODo1Mjo0MiIgbmFtZT0iQWxsVGVzdHMiPgorICA8dGVz
dHN1aXRlIG5hbWU9Ik1hdGhUZXN0IiB0ZXN0cz0iMiIgZmFpbHVyZXM9IjEiIGVycm9ycz0iMCIg
dGltZT0iMC4wMTUiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJBZGRpdGlvbiIgc3RhdHVzPSJydW4i
IHRpbWU9IjAuMDA3IiBjbGFzc25hbWU9IiI+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1
ZSBvZjogYWRkKDEsIDEpJiN4MEE7ICBBY3R1YWw6IDMmI3gwQTtFeHBlY3RlZDogMiIgdHlwZT0i
Ij4uLi48L2ZhaWx1cmU+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogYWRkKDEs
IC0xKSYjeDBBOyAgQWN0dWFsOiAxJiN4MEE7RXhwZWN0ZWQ6IDAiIHR5cGU9IiI+Li4uPC9mYWls
dXJlPgorICAgIDwvdGVzdGNhc2U+CisgICAgPHRlc3RjYXNlIG5hbWU9IlN1YnRyYWN0aW9uIiBz
dGF0dXM9InJ1biIgdGltZT0iMC4wMDUiIGNsYXNzbmFtZT0iIj4KKyAgICA8L3Rlc3RjYXNlPgor
ICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJMb2dpY1Rlc3QiIHRlc3RzPSIxIiBm
YWlsdXJlcz0iMCIgZXJyb3JzPSIwIiB0aW1lPSIwLjAwNSI+CisgICAgPHRlc3RjYXNlIG5hbWU9
Ik5vbkNvbnRyYWRpY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSIwLjAwNSIgY2xhc3NuYW1lPSIi
PgorICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPgorYGBgCisK
K1RoaW5ncyB0byBub3RlOgorCisqICAgVGhlIGB0ZXN0c2AgYXR0cmlidXRlIG9mIGEgYDx0ZXN0
c3VpdGVzPmAgb3IgYDx0ZXN0c3VpdGU+YCBlbGVtZW50IHRlbGxzIGhvdworICAgIG1hbnkgdGVz
dCBmdW5jdGlvbnMgdGhlIGdvb2dsZXRlc3QgcHJvZ3JhbSBvciB0ZXN0IGNhc2UgY29udGFpbnMs
IHdoaWxlIHRoZQorICAgIGBmYWlsdXJlc2AgYXR0cmlidXRlIHRlbGxzIGhvdyBtYW55IG9mIHRo
ZW0gZmFpbGVkLgorCisqICAgVGhlIGB0aW1lYCBhdHRyaWJ1dGUgZXhwcmVzc2VzIHRoZSBkdXJh
dGlvbiBvZiB0aGUgdGVzdCwgdGVzdCBjYXNlLCBvcgorICAgIGVudGlyZSB0ZXN0IHByb2dyYW0g
aW4gc2Vjb25kcy4KKworKiAgIFRoZSBgdGltZXN0YW1wYCBhdHRyaWJ1dGUgcmVjb3JkcyB0aGUg
bG9jYWwgZGF0ZSBhbmQgdGltZSBvZiB0aGUgdGVzdAorICAgIGV4ZWN1dGlvbi4KKworKiAgIEVh
Y2ggYDxmYWlsdXJlPmAgZWxlbWVudCBjb3JyZXNwb25kcyB0byBhIHNpbmdsZSBmYWlsZWQgZ29v
Z2xldGVzdAorICAgIGFzc2VydGlvbi4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRv
d3MsIE1hYy4KKworIyMjIyBHZW5lcmF0aW5nIGFuIEpTT04gUmVwb3J0CisKK2dvb2dsZXRlc3Qg
Y2FuIGFsc28gZW1pdCBhIEpTT04gcmVwb3J0IGFzIGFuIGFsdGVybmF0aXZlIGZvcm1hdCB0byBY
TUwuIFRvCitnZW5lcmF0ZSB0aGUgSlNPTiByZXBvcnQsIHNldCB0aGUgYEdURVNUX09VVFBVVGAg
ZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCitgLS1ndGVzdF9vdXRwdXRgIGZsYWcgdG8gdGhl
IHN0cmluZyBgImpzb246cGF0aF90b19vdXRwdXRfZmlsZSJgLCB3aGljaCB3aWxsCitjcmVhdGUg
dGhlIGZpbGUgYXQgdGhlIGdpdmVuIGxvY2F0aW9uLiBZb3UgY2FuIGFsc28ganVzdCB1c2UgdGhl
IHN0cmluZworYCJqc29uImAsIGluIHdoaWNoIGNhc2UgdGhlIG91dHB1dCBjYW4gYmUgZm91bmQg
aW4gdGhlIGB0ZXN0X2RldGFpbC5qc29uYCBmaWxlCitpbiB0aGUgY3VycmVudCBkaXJlY3Rvcnku
CisKK1RoZSByZXBvcnQgZm9ybWF0IGNvbmZvcm1zIHRvIHRoZSBmb2xsb3dpbmcgSlNPTiBTY2hl
bWE6CisKK2BgYGpzb24KK3sKKyAgIiRzY2hlbWEiOiAiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9z
Y2hlbWEjIiwKKyAgInR5cGUiOiAib2JqZWN0IiwKKyAgImRlZmluaXRpb25zIjogeworICAgICJU
ZXN0Q2FzZSI6IHsKKyAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAicHJvcGVydGllcyI6
IHsKKyAgICAgICAgIm5hbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgInRlc3Rz
IjogeyAidHlwZSI6ICJpbnRlZ2VyIiB9LAorICAgICAgICAiZmFpbHVyZXMiOiB7ICJ0eXBlIjog
ImludGVnZXIiIH0sCisgICAgICAgICJkaXNhYmxlZCI6IHsgInR5cGUiOiAiaW50ZWdlciIgfSwK
KyAgICAgICAgInRpbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgInRlc3RzdWl0
ZSI6IHsKKyAgICAgICAgICAidHlwZSI6ICJhcnJheSIsCisgICAgICAgICAgIml0ZW1zIjogewor
ICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9UZXN0SW5mbyIKKyAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJUZXN0SW5mbyI6IHsKKyAgICAgICJ0
eXBlIjogIm9iamVjdCIsCisgICAgICAicHJvcGVydGllcyI6IHsKKyAgICAgICAgIm5hbWUiOiB7
ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgInN0YXR1cyI6IHsKKyAgICAgICAgICAidHlw
ZSI6ICJzdHJpbmciLAorICAgICAgICAgICJlbnVtIjogWyJSVU4iLCAiTk9UUlVOIl0KKyAgICAg
ICAgfSwKKyAgICAgICAgInRpbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgImNs
YXNzbmFtZSI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAiZmFpbHVyZXMiOiB7Cisg
ICAgICAgICAgInR5cGUiOiAiYXJyYXkiLAorICAgICAgICAgICJpdGVtcyI6IHsKKyAgICAgICAg
ICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvRmFpbHVyZSIKKyAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICB9LAorICAgICJGYWlsdXJlIjogeworICAgICAgInR5cGUiOiAib2Jq
ZWN0IiwKKyAgICAgICJwcm9wZXJ0aWVzIjogeworICAgICAgICAiZmFpbHVyZXMiOiB7ICJ0eXBl
IjogInN0cmluZyIgfSwKKyAgICAgICAgInR5cGUiOiB7ICJ0eXBlIjogInN0cmluZyIgfQorICAg
ICAgfQorICAgIH0KKyAgfSwKKyAgInByb3BlcnRpZXMiOiB7CisgICAgInRlc3RzIjogeyAidHlw
ZSI6ICJpbnRlZ2VyIiB9LAorICAgICJmYWlsdXJlcyI6IHsgInR5cGUiOiAiaW50ZWdlciIgfSwK
KyAgICAiZGlzYWJsZWQiOiB7ICJ0eXBlIjogImludGVnZXIiIH0sCisgICAgImVycm9ycyI6IHsg
InR5cGUiOiAiaW50ZWdlciIgfSwKKyAgICAidGltZXN0YW1wIjogeworICAgICAgInR5cGUiOiAi
c3RyaW5nIiwKKyAgICAgICJmb3JtYXQiOiAiZGF0ZS10aW1lIgorICAgIH0sCisgICAgInRpbWUi
OiB7ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAibmFtZSI6IHsgInR5cGUiOiAic3RyaW5nIiB9
LAorICAgICJ0ZXN0c3VpdGVzIjogeworICAgICAgInR5cGUiOiAiYXJyYXkiLAorICAgICAgIml0
ZW1zIjogeworICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL1Rlc3RDYXNlIgorICAgICAg
fQorICAgIH0KKyAgfQorfQorYGBgCisKK1RoZSByZXBvcnQgdXNlcyB0aGUgZm9ybWF0IHRoYXQg
Y29uZm9ybXMgdG8gdGhlIGZvbGxvd2luZyBQcm90bzMgdXNpbmcgdGhlIFtKU09OCitlbmNvZGlu
Z10oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vcHJvdG9jb2wtYnVmZmVycy9kb2NzL3By
b3RvMyNqc29uKToKKworYGBgcHJvdG8KK3N5bnRheCA9ICJwcm90bzMiOworCitwYWNrYWdlIGdv
b2dsZXRlc3Q7CisKK2ltcG9ydCAiZ29vZ2xlL3Byb3RvYnVmL3RpbWVzdGFtcC5wcm90byI7Citp
bXBvcnQgImdvb2dsZS9wcm90b2J1Zi9kdXJhdGlvbi5wcm90byI7CisKK21lc3NhZ2UgVW5pdFRl
c3QgeworICBpbnQzMiB0ZXN0cyA9IDE7CisgIGludDMyIGZhaWx1cmVzID0gMjsKKyAgaW50MzIg
ZGlzYWJsZWQgPSAzOworICBpbnQzMiBlcnJvcnMgPSA0OworICBnb29nbGUucHJvdG9idWYuVGlt
ZXN0YW1wIHRpbWVzdGFtcCA9IDU7CisgIGdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbiB0aW1lID0g
NjsKKyAgc3RyaW5nIG5hbWUgPSA3OworICByZXBlYXRlZCBUZXN0Q2FzZSB0ZXN0c3VpdGVzID0g
ODsKK30KKworbWVzc2FnZSBUZXN0Q2FzZSB7CisgIHN0cmluZyBuYW1lID0gMTsKKyAgaW50MzIg
dGVzdHMgPSAyOworICBpbnQzMiBmYWlsdXJlcyA9IDM7CisgIGludDMyIGRpc2FibGVkID0gNDsK
KyAgaW50MzIgZXJyb3JzID0gNTsKKyAgZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uIHRpbWUgPSA2
OworICByZXBlYXRlZCBUZXN0SW5mbyB0ZXN0c3VpdGUgPSA3OworfQorCittZXNzYWdlIFRlc3RJ
bmZvIHsKKyAgc3RyaW5nIG5hbWUgPSAxOworICBlbnVtIFN0YXR1cyB7CisgICAgUlVOID0gMDsK
KyAgICBOT1RSVU4gPSAxOworICB9CisgIFN0YXR1cyBzdGF0dXMgPSAyOworICBnb29nbGUucHJv
dG9idWYuRHVyYXRpb24gdGltZSA9IDM7CisgIHN0cmluZyBjbGFzc25hbWUgPSA0OworICBtZXNz
YWdlIEZhaWx1cmUgeworICAgIHN0cmluZyBmYWlsdXJlcyA9IDE7CisgICAgc3RyaW5nIHR5cGUg
PSAyOworICB9CisgIHJlcGVhdGVkIEZhaWx1cmUgZmFpbHVyZXMgPSA1OworfQorYGBgCisKK0Zv
ciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBwcm9ncmFtCisKK2BgYGMrKworVEVTVChNYXRoVGVz
dCwgQWRkaXRpb24pIHsgLi4uIH0KK1RFU1QoTWF0aFRlc3QsIFN1YnRyYWN0aW9uKSB7IC4uLiB9
CitURVNUKExvZ2ljVGVzdCwgTm9uQ29udHJhZGljdGlvbikgeyAuLi4gfQorYGBgCisKK2NvdWxk
IGdlbmVyYXRlIHRoaXMgcmVwb3J0OgorCitgYGBqc29uCit7CisgICJ0ZXN0cyI6IDMsCisgICJm
YWlsdXJlcyI6IDEsCisgICJlcnJvcnMiOiAwLAorICAidGltZSI6ICIwLjAzNXMiLAorICAidGlt
ZXN0YW1wIjogIjIwMTEtMTAtMzFUMTg6NTI6NDJaIgorICAibmFtZSI6ICJBbGxUZXN0cyIsCisg
ICJ0ZXN0c3VpdGVzIjogWworICAgIHsKKyAgICAgICJuYW1lIjogIk1hdGhUZXN0IiwKKyAgICAg
ICJ0ZXN0cyI6IDIsCisgICAgICAiZmFpbHVyZXMiOiAxLAorICAgICAgImVycm9ycyI6IDAsCisg
ICAgICAidGltZSI6ICIwLjAxNXMiLAorICAgICAgInRlc3RzdWl0ZSI6IFsKKyAgICAgICAgewor
ICAgICAgICAgICJuYW1lIjogIkFkZGl0aW9uIiwKKyAgICAgICAgICAic3RhdHVzIjogIlJVTiIs
CisgICAgICAgICAgInRpbWUiOiAiMC4wMDdzIiwKKyAgICAgICAgICAiY2xhc3NuYW1lIjogIiIs
CisgICAgICAgICAgImZhaWx1cmVzIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAi
bWVzc2FnZSI6ICJWYWx1ZSBvZjogYWRkKDEsIDEpXHgwQSAgQWN0dWFsOiAzXHgwQUV4cGVjdGVk
OiAyIiwKKyAgICAgICAgICAgICAgInR5cGUiOiAiIgorICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgIm1lc3NhZ2UiOiAiVmFsdWUgb2Y6IGFkZCgxLCAtMSlceDBB
ICBBY3R1YWw6IDFceDBBRXhwZWN0ZWQ6IDAiLAorICAgICAgICAgICAgICAidHlwZSI6ICIiCisg
ICAgICAgICAgICB9CisgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg
ICAgIm5hbWUiOiAiU3VidHJhY3Rpb24iLAorICAgICAgICAgICJzdGF0dXMiOiAiUlVOIiwKKyAg
ICAgICAgICAidGltZSI6ICIwLjAwNXMiLAorICAgICAgICAgICJjbGFzc25hbWUiOiAiIgorICAg
ICAgICB9CisgICAgICBdCisgICAgfQorICAgIHsKKyAgICAgICJuYW1lIjogIkxvZ2ljVGVzdCIs
CisgICAgICAidGVzdHMiOiAxLAorICAgICAgImZhaWx1cmVzIjogMCwKKyAgICAgICJlcnJvcnMi
OiAwLAorICAgICAgInRpbWUiOiAiMC4wMDVzIiwKKyAgICAgICJ0ZXN0c3VpdGUiOiBbCisgICAg
ICAgIHsKKyAgICAgICAgICAibmFtZSI6ICJOb25Db250cmFkaWN0aW9uIiwKKyAgICAgICAgICAi
c3RhdHVzIjogIlJVTiIsCisgICAgICAgICAgInRpbWUiOiAiMC4wMDVzIiwKKyAgICAgICAgICAi
Y2xhc3NuYW1lIjogIiIKKyAgICAgICAgfQorICAgICAgXQorICAgIH0KKyAgXQorfQorYGBgCisK
K0lNUE9SVEFOVDogVGhlIGV4YWN0IGZvcm1hdCBvZiB0aGUgSlNPTiBkb2N1bWVudCBpcyBzdWJq
ZWN0IHRvIGNoYW5nZS4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4K
KworIyMjIENvbnRyb2xsaW5nIEhvdyBGYWlsdXJlcyBBcmUgUmVwb3J0ZWQKKworIyMjIyBUdXJu
aW5nIEFzc2VydGlvbiBGYWlsdXJlcyBpbnRvIEJyZWFrLVBvaW50cworCitXaGVuIHJ1bm5pbmcg
dGVzdCBwcm9ncmFtcyB1bmRlciBhIGRlYnVnZ2VyLCBpdCdzIHZlcnkgY29udmVuaWVudCBpZiB0
aGUKK2RlYnVnZ2VyIGNhbiBjYXRjaCBhbiBhc3NlcnRpb24gZmFpbHVyZSBhbmQgYXV0b21hdGlj
YWxseSBkcm9wIGludG8gaW50ZXJhY3RpdmUKK21vZGUuIGdvb2dsZXRlc3QncyAqYnJlYWstb24t
ZmFpbHVyZSogbW9kZSBzdXBwb3J0cyB0aGlzIGJlaGF2aW9yLgorCitUbyBlbmFibGUgaXQsIHNl
dCB0aGUgYEdURVNUX0JSRUFLX09OX0ZBSUxVUkVgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEg
dmFsdWUKK290aGVyIHRoYW4gYDBgIC4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhlIGAt
LWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVgCitjb21tYW5kIGxpbmUgZmxhZy4KKworKipBdmFpbGFi
aWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIyBEaXNhYmxpbmcgQ2F0Y2hpbmcg
VGVzdC1UaHJvd24gRXhjZXB0aW9ucworCitnb29nbGV0ZXN0IGNhbiBiZSB1c2VkIGVpdGhlciB3
aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucyBlbmFibGVkLiBJZiBhIHRlc3QKK3Rocm93cyBhIEMr
KyBleGNlcHRpb24gb3IgKG9uIFdpbmRvd3MpIGEgc3RydWN0dXJlZCBleGNlcHRpb24gKFNFSCks
IGJ5IGRlZmF1bHQKK2dvb2dsZXRlc3QgY2F0Y2hlcyBpdCwgcmVwb3J0cyBpdCBhcyBhIHRlc3Qg
ZmFpbHVyZSwgYW5kIGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0Cit0ZXN0IG1ldGhvZC4gVGhpcyBt
YXhpbWl6ZXMgdGhlIGNvdmVyYWdlIG9mIGEgdGVzdCBydW4uIEFsc28sIG9uIFdpbmRvd3MgYW4K
K3VuY2F1Z2h0IGV4Y2VwdGlvbiB3aWxsIGNhdXNlIGEgcG9wLXVwIHdpbmRvdywgc28gY2F0Y2hp
bmcgdGhlIGV4Y2VwdGlvbnMgYWxsb3dzCit5b3UgdG8gcnVuIHRoZSB0ZXN0cyBhdXRvbWF0aWNh
bGx5LgorCitXaGVuIGRlYnVnZ2luZyB0aGUgdGVzdCBmYWlsdXJlcywgaG93ZXZlciwgeW91IG1h
eSBpbnN0ZWFkIHdhbnQgdGhlIGV4Y2VwdGlvbnMKK3RvIGJlIGhhbmRsZWQgYnkgdGhlIGRlYnVn
Z2VyLCBzdWNoIHRoYXQgeW91IGNhbiBleGFtaW5lIHRoZSBjYWxsIHN0YWNrIHdoZW4gYW4KK2V4
Y2VwdGlvbiBpcyB0aHJvd24uIFRvIGFjaGlldmUgdGhhdCwgc2V0IHRoZSBgR1RFU1RfQ0FUQ0hf
RVhDRVBUSU9OU2AKK2Vudmlyb25tZW50IHZhcmlhYmxlIHRvIGAwYCwgb3IgdXNlIHRoZSBgLS1n
dGVzdF9jYXRjaF9leGNlcHRpb25zPTBgIGZsYWcgd2hlbgorcnVubmluZyB0aGUgdGVzdHMuCisK
KyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvZmFxLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvZG9jcy9mYXEubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q0MmZmN2RiYWE4ZmFiZDBjYzY1MmZkNzA1Mjc5
ODE4NGU5NWM0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2Rv
Y3MvZmFxLm1kCkBAIC0wLDAgKzEsNzcwIEBACisjIEdvb2dsZXRlc3QgRkFRCisKKworIyMgV2h5
IHNob3VsZCB0ZXN0IGNhc2UgbmFtZXMgYW5kIHRlc3QgbmFtZXMgbm90IGNvbnRhaW4gdW5kZXJz
Y29yZT8KKworVW5kZXJzY29yZSAoYF9gKSBpcyBzcGVjaWFsLCBhcyBDKysgcmVzZXJ2ZXMgdGhl
IGZvbGxvd2luZyB0byBiZSB1c2VkIGJ5IHRoZQorY29tcGlsZXIgYW5kIHRoZSBzdGFuZGFyZCBs
aWJyYXJ5OgorCisxLiAgYW55IGlkZW50aWZpZXIgdGhhdCBzdGFydHMgd2l0aCBhbiBgX2AgZm9s
bG93ZWQgYnkgYW4gdXBwZXItY2FzZSBsZXR0ZXIsIGFuZAorMS4gIGFueSBpZGVudGlmaWVyIHRo
YXQgY29udGFpbnMgdHdvIGNvbnNlY3V0aXZlIHVuZGVyc2NvcmVzIChpLmUuIGBfX2ApCisgICAg
KmFueXdoZXJlKiBpbiBpdHMgbmFtZS4KKworVXNlciBjb2RlIGlzICpwcm9oaWJpdGVkKiBmcm9t
IHVzaW5nIHN1Y2ggaWRlbnRpZmllcnMuCisKK05vdyBsZXQncyBsb29rIGF0IHdoYXQgdGhpcyBt
ZWFucyBmb3IgYFRFU1RgIGFuZCBgVEVTVF9GYC4KKworQ3VycmVudGx5IGBURVNUKFRlc3RDYXNl
TmFtZSwgVGVzdE5hbWUpYCBnZW5lcmF0ZXMgYSBjbGFzcyBuYW1lZAorYFRlc3RDYXNlTmFtZV9U
ZXN0TmFtZV9UZXN0YC4gV2hhdCBoYXBwZW5zIGlmIGBUZXN0Q2FzZU5hbWVgIG9yIGBUZXN0TmFt
ZWAKK2NvbnRhaW5zIGBfYD8KKworMS4gIElmIGBUZXN0Q2FzZU5hbWVgIHN0YXJ0cyB3aXRoIGFu
IGBfYCBmb2xsb3dlZCBieSBhbiB1cHBlci1jYXNlIGxldHRlciAoc2F5LAorICAgIGBfRm9vYCks
IHdlIGVuZCB1cCB3aXRoIGBfRm9vX1Rlc3ROYW1lX1Rlc3RgLCB3aGljaCBpcyByZXNlcnZlZCBh
bmQgdGh1cworICAgIGludmFsaWQuCisxLiAgSWYgYFRlc3RDYXNlTmFtZWAgZW5kcyB3aXRoIGFu
IGBfYCAoc2F5LCBgRm9vX2ApLCB3ZSBnZXQKKyAgICBgRm9vX19UZXN0TmFtZV9UZXN0YCwgd2hp
Y2ggaXMgaW52YWxpZC4KKzEuICBJZiBgVGVzdE5hbWVgIHN0YXJ0cyB3aXRoIGFuIGBfYCAoc2F5
LCBgX0JhcmApLCB3ZSBnZXQKKyAgICBgVGVzdENhc2VOYW1lX19CYXJfVGVzdGAsIHdoaWNoIGlz
IGludmFsaWQuCisxLiAgSWYgYFRlc3ROYW1lYCBlbmRzIHdpdGggYW4gYF9gIChzYXksIGBCYXJf
YCksIHdlIGdldAorICAgIGBUZXN0Q2FzZU5hbWVfQmFyX19UZXN0YCwgd2hpY2ggaXMgaW52YWxp
ZC4KKworU28gY2xlYXJseSBgVGVzdENhc2VOYW1lYCBhbmQgYFRlc3ROYW1lYCBjYW5ub3Qgc3Rh
cnQgb3IgZW5kIHdpdGggYF9gIChBY3R1YWxseSwKK2BUZXN0Q2FzZU5hbWVgIGNhbiBzdGFydCB3
aXRoIGBfYCAtLSBhcyBsb25nIGFzIHRoZSBgX2AgaXNuJ3QgZm9sbG93ZWQgYnkgYW4KK3VwcGVy
LWNhc2UgbGV0dGVyLiBCdXQgdGhhdCdzIGdldHRpbmcgY29tcGxpY2F0ZWQuIFNvIGZvciBzaW1w
bGljaXR5IHdlIGp1c3Qgc2F5Cit0aGF0IGl0IGNhbm5vdCBzdGFydCB3aXRoIGBfYC4pLgorCitJ
dCBtYXkgc2VlbSBmaW5lIGZvciBgVGVzdENhc2VOYW1lYCBhbmQgYFRlc3ROYW1lYCB0byBjb250
YWluIGBfYCBpbiB0aGUgbWlkZGxlLgorSG93ZXZlciwgY29uc2lkZXIgdGhpczoKKworYGBgYysr
CitURVNUKFRpbWUsIEZsaWVzX0xpa2VfQW5fQXJyb3cpIHsgLi4uIH0KK1RFU1QoVGltZV9GbGll
cywgTGlrZV9Bbl9BcnJvdykgeyAuLi4gfQorYGBgCisKK05vdywgdGhlIHR3byBgVEVTVGBzIHdp
bGwgYm90aCBnZW5lcmF0ZSB0aGUgc2FtZSBjbGFzcworKGBUaW1lX0ZsaWVzX0xpa2VfQW5fQXJy
b3dfVGVzdGApLiBUaGF0J3Mgbm90IGdvb2QuCisKK1NvIGZvciBzaW1wbGljaXR5LCB3ZSBqdXN0
IGFzayB0aGUgdXNlcnMgdG8gYXZvaWQgYF9gIGluIGBUZXN0Q2FzZU5hbWVgIGFuZAorYFRlc3RO
YW1lYC4gVGhlIHJ1bGUgaXMgbW9yZSBjb25zdHJhaW5pbmcgdGhhbiBuZWNlc3NhcnksIGJ1dCBp
dCdzIHNpbXBsZSBhbmQKK2Vhc3kgdG8gcmVtZW1iZXIuIEl0IGFsc28gZ2l2ZXMgZ29vZ2xldGVz
dCBzb21lIHdpZ2dsZSByb29tIGluIGNhc2UgaXRzCitpbXBsZW1lbnRhdGlvbiBuZWVkcyB0byBj
aGFuZ2UgaW4gdGhlIGZ1dHVyZS4KKworSWYgeW91IHZpb2xhdGUgdGhlIHJ1bGUsIHRoZXJlIG1h
eSBub3QgYmUgaW1tZWRpYXRlIGNvbnNlcXVlbmNlcywgYnV0IHlvdXIgdGVzdAorbWF5IChqdXN0
IG1heSkgYnJlYWsgd2l0aCBhIG5ldyBjb21waWxlciAob3IgYSBuZXcgdmVyc2lvbiBvZiB0aGUg
Y29tcGlsZXIgeW91CithcmUgdXNpbmcpIG9yIHdpdGggYSBuZXcgdmVyc2lvbiBvZiBnb29nbGV0
ZXN0LiBUaGVyZWZvcmUgaXQncyBiZXN0IHRvIGZvbGxvdwordGhlIHJ1bGUuCisKKyMjIFdoeSBk
b2VzIGdvb2dsZXRlc3Qgc3VwcG9ydCBgRVhQRUNUX0VRKE5VTEwsIHB0cilgIGFuZCBgQVNTRVJU
X0VRKE5VTEwsIHB0cilgIGJ1dCBub3QgYEVYUEVDVF9ORShOVUxMLCBwdHIpYCBhbmQgYEFTU0VS
VF9ORShOVUxMLCBwdHIpYD8KKworRmlyc3Qgb2YgYWxsIHlvdSBjYW4gdXNlIGBFWFBFQ1RfTkUo
bnVsbHB0ciwgcHRyKWAgYW5kIGBBU1NFUlRfTkUobnVsbHB0ciwKK3B0cilgLiBUaGlzIGlzIHRo
ZSBwcmVmZXJyZWQgc3ludGF4IGluIHRoZSBzdHlsZSBndWlkZSBiZWNhdXNlIG51bGxwdHIgZG9l
cyBub3QKK2hhdmUgdGhlIHR5cGUgcHJvYmxlbXMgdGhhdCBOVUxMIGRvZXMuIFdoaWNoIGlzIHdo
eSBOVUxMIGRvZXMgbm90IHdvcmsuCisKK0R1ZSB0byBzb21lIHBlY3VsaWFyaXR5IG9mIEMrKywg
aXQgcmVxdWlyZXMgc29tZSBub24tdHJpdmlhbCB0ZW1wbGF0ZSBtZXRhCitwcm9ncmFtbWluZyB0
cmlja3MgdG8gc3VwcG9ydCB1c2luZyBgTlVMTGAgYXMgYW4gYXJndW1lbnQgb2YgdGhlIGBFWFBF
Q1RfWFgoKWAKK2FuZCBgQVNTRVJUX1hYKClgIG1hY3Jvcy4gVGhlcmVmb3JlIHdlIG9ubHkgZG8g
aXQgd2hlcmUgaXQncyBtb3N0IG5lZWRlZAorKG90aGVyd2lzZSB3ZSBtYWtlIHRoZSBpbXBsZW1l
bnRhdGlvbiBvZiBnb29nbGV0ZXN0IGhhcmRlciB0byBtYWludGFpbiBhbmQgbW9yZQorZXJyb3It
cHJvbmUgdGhhbiBuZWNlc3NhcnkpLgorCitUaGUgYEVYUEVDVF9FUSgpYCBtYWNybyB0YWtlcyB0
aGUgKmV4cGVjdGVkKiB2YWx1ZSBhcyBpdHMgZmlyc3QgYXJndW1lbnQgYW5kIHRoZQorKmFjdHVh
bCogdmFsdWUgYXMgdGhlIHNlY29uZC4gSXQncyByZWFzb25hYmxlIHRoYXQgc29tZW9uZSB3YW50
cyB0byB3cml0ZQorYEVYUEVDVF9FUShOVUxMLCBzb21lX2V4cHJlc3Npb24pYCwgYW5kIHRoaXMg
aW5kZWVkIHdhcyByZXF1ZXN0ZWQgc2V2ZXJhbCB0aW1lcy4KK1RoZXJlZm9yZSB3ZSBpbXBsZW1l
bnRlZCBpdC4KKworVGhlIG5lZWQgZm9yIGBFWFBFQ1RfTkUoTlVMTCwgcHRyKWAgaXNuJ3QgbmVh
cmx5IGFzIHN0cm9uZy4gV2hlbiB0aGUgYXNzZXJ0aW9uCitmYWlscywgeW91IGFscmVhZHkga25v
dyB0aGF0IGBwdHJgIG11c3QgYmUgYE5VTExgLCBzbyBpdCBkb2Vzbid0IGFkZCBhbnkKK2luZm9y
bWF0aW9uIHRvIHByaW50IGBwdHJgIGluIHRoaXMgY2FzZS4gVGhhdCBtZWFucyBgRVhQRUNUX1RS
VUUocHRyICE9IE5VTEwpYAord29ya3MganVzdCBhcyB3ZWxsLgorCitJZiB3ZSB3ZXJlIHRvIHN1
cHBvcnQgYEVYUEVDVF9ORShOVUxMLCBwdHIpYCwgZm9yIGNvbnNpc3RlbmN5IHdlJ2xsIGhhdmUg
dG8KK3N1cHBvcnQgYEVYUEVDVF9ORShwdHIsIE5VTEwpYCBhcyB3ZWxsLCBhcyB1bmxpa2UgYEVY
UEVDVF9FUWAsIHdlIGRvbid0IGhhdmUgYQorY29udmVudGlvbiBvbiB0aGUgb3JkZXIgb2YgdGhl
IHR3byBhcmd1bWVudHMgZm9yIGBFWFBFQ1RfTkVgLiBUaGlzIG1lYW5zIHVzaW5nCit0aGUgdGVt
cGxhdGUgbWV0YSBwcm9ncmFtbWluZyB0cmlja3MgdHdpY2UgaW4gdGhlIGltcGxlbWVudGF0aW9u
LCBtYWtpbmcgaXQgZXZlbgoraGFyZGVyIHRvIHVuZGVyc3RhbmQgYW5kIG1haW50YWluLiBXZSBi
ZWxpZXZlIHRoZSBiZW5lZml0IGRvZXNuJ3QganVzdGlmeSB0aGUKK2Nvc3QuCisKK0ZpbmFsbHks
IHdpdGggdGhlIGdyb3d0aCBvZiB0aGUgZ01vY2sgbWF0Y2hlciBsaWJyYXJ5LCB3ZSBhcmUgZW5j
b3VyYWdpbmcgcGVvcGxlCit0byB1c2UgdGhlIHVuaWZpZWQgYEVYUEVDVF9USEFUKHZhbHVlLCBt
YXRjaGVyKWAgc3ludGF4IG1vcmUgb2Z0ZW4gaW4gdGVzdHMuIE9uZQorc2lnbmlmaWNhbnQgYWR2
YW50YWdlIG9mIHRoZSBtYXRjaGVyIGFwcHJvYWNoIGlzIHRoYXQgbWF0Y2hlcnMgY2FuIGJlIGVh
c2lseQorY29tYmluZWQgdG8gZm9ybSBuZXcgbWF0Y2hlcnMsIHdoaWxlIHRoZSBgRVhQRUNUX05F
YCwgZXRjLCBtYWNyb3MgY2Fubm90IGJlCitlYXNpbHkgY29tYmluZWQuIFRoZXJlZm9yZSB3ZSB3
YW50IHRvIGludmVzdCBtb3JlIGluIHRoZSBtYXRjaGVycyB0aGFuIGluIHRoZQorYEVYUEVDVF9Y
WCgpYCBtYWNyb3MuCisKKyMjIEkgbmVlZCB0byB0ZXN0IHRoYXQgZGlmZmVyZW50IGltcGxlbWVu
dGF0aW9ucyBvZiBhbiBpbnRlcmZhY2Ugc2F0aXNmeSBzb21lIGNvbW1vbiByZXF1aXJlbWVudHMu
IFNob3VsZCBJIHVzZSB0eXBlZCB0ZXN0cyBvciB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzPwor
CitGb3IgdGVzdGluZyB2YXJpb3VzIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgc2FtZSBpbnRlcmZh
Y2UsIGVpdGhlciB0eXBlZCB0ZXN0cyBvcgordmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBjYW4g
Z2V0IGl0IGRvbmUuIEl0J3MgcmVhbGx5IHVwIHRvIHlvdSB0aGUgdXNlciB0bworZGVjaWRlIHdo
aWNoIGlzIG1vcmUgY29udmVuaWVudCBmb3IgeW91LCBkZXBlbmRpbmcgb24geW91ciBwYXJ0aWN1
bGFyIGNhc2UuIFNvbWUKK3JvdWdoIGd1aWRlbGluZXM6CisKKyogICBUeXBlZCB0ZXN0cyBjYW4g
YmUgZWFzaWVyIHRvIHdyaXRlIGlmIGluc3RhbmNlcyBvZiB0aGUgZGlmZmVyZW50CisgICAgaW1w
bGVtZW50YXRpb25zIGNhbiBiZSBjcmVhdGVkIHRoZSBzYW1lIHdheSwgbW9kdWxvIHRoZSB0eXBl
LiBGb3IgZXhhbXBsZSwKKyAgICBpZiBhbGwgdGhlc2UgaW1wbGVtZW50YXRpb25zIGhhdmUgYSBw
dWJsaWMgZGVmYXVsdCBjb25zdHJ1Y3RvciAoc3VjaCB0aGF0CisgICAgeW91IGNhbiB3cml0ZSBg
bmV3IFR5cGVQYXJhbWApLCBvciBpZiB0aGVpciBmYWN0b3J5IGZ1bmN0aW9ucyBoYXZlIHRoZSBz
YW1lCisgICAgZm9ybSAoZS5nLiBgQ3JlYXRlSW5zdGFuY2U8VHlwZVBhcmFtPigpYCkuCisqICAg
VmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBjYW4gYmUgZWFzaWVyIHRvIHdyaXRlIGlmIHlvdSBu
ZWVkIGRpZmZlcmVudCBjb2RlCisgICAgcGF0dGVybnMgdG8gY3JlYXRlIGRpZmZlcmVudCBpbXBs
ZW1lbnRhdGlvbnMnIGluc3RhbmNlcywgZS5nLiBgbmV3IEZvb2AgdnMKKyAgICBgbmV3IEJhcig1
KWAuIFRvIGFjY29tbW9kYXRlIGZvciB0aGUgZGlmZmVyZW5jZXMsIHlvdSBjYW4gd3JpdGUgZmFj
dG9yeQorICAgIGZ1bmN0aW9uIHdyYXBwZXJzIGFuZCBwYXNzIHRoZXNlIGZ1bmN0aW9uIHBvaW50
ZXJzIHRvIHRoZSB0ZXN0cyBhcyB0aGVpcgorICAgIHBhcmFtZXRlcnMuCisqICAgV2hlbiBhIHR5
cGVkIHRlc3QgZmFpbHMsIHRoZSBvdXRwdXQgaW5jbHVkZXMgdGhlIG5hbWUgb2YgdGhlIHR5cGUs
IHdoaWNoIGNhbgorICAgIGhlbHAgeW91IHF1aWNrbHkgaWRlbnRpZnkgd2hpY2ggaW1wbGVtZW50
YXRpb24gaXMgd3JvbmcuIFZhbHVlLXBhcmFtZXRlcml6ZWQKKyAgICB0ZXN0cyBjYW5ub3QgZG8g
dGhpcywgc28gdGhlcmUgeW91J2xsIGhhdmUgdG8gbG9vayBhdCB0aGUgaXRlcmF0aW9uIG51bWJl
cgorICAgIHRvIGtub3cgd2hpY2ggaW1wbGVtZW50YXRpb24gdGhlIGZhaWx1cmUgaXMgZnJvbSwg
d2hpY2ggaXMgbGVzcyBkaXJlY3QuCisqICAgSWYgeW91IG1ha2UgYSBtaXN0YWtlIHdyaXRpbmcg
YSB0eXBlZCB0ZXN0LCB0aGUgY29tcGlsZXIgZXJyb3JzIGNhbiBiZQorICAgIGhhcmRlciB0byBk
aWdlc3QsIGFzIHRoZSBjb2RlIGlzIHRlbXBsYXRpemVkLgorKiAgIFdoZW4gdXNpbmcgdHlwZWQg
dGVzdHMsIHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB5b3UgYXJlIHRlc3RpbmcgYWdhaW5zdCB0aGUK
KyAgICBpbnRlcmZhY2UgdHlwZSwgbm90IHRoZSBjb25jcmV0ZSB0eXBlcyAoaW4gb3RoZXIgd29y
ZHMsIHlvdSB3YW50IHRvIG1ha2UKKyAgICBzdXJlIGBpbXBsaWNpdF9jYXN0PE15SW50ZXJmYWNl
Kj4obXlfY29uY3JldGVfaW1wbClgIHdvcmtzLCBub3QganVzdCB0aGF0CisgICAgYG15X2NvbmNy
ZXRlX2ltcGxgIHdvcmtzKS4gSXQncyBsZXNzIGxpa2VseSB0byBtYWtlIG1pc3Rha2VzIGluIHRo
aXMgYXJlYQorICAgIHdoZW4gdXNpbmcgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKworSSBo
b3BlIEkgZGlkbid0IGNvbmZ1c2UgeW91IG1vcmUuIDotKSBJZiB5b3UgZG9uJ3QgbWluZCwgSSdk
IHN1Z2dlc3QgeW91IHRvIGdpdmUKK2JvdGggYXBwcm9hY2hlcyBhIHRyeS4gUHJhY3RpY2UgaXMg
YSBtdWNoIGJldHRlciB3YXkgdG8gZ3Jhc3AgdGhlIHN1YnRsZQorZGlmZmVyZW5jZXMgYmV0d2Vl
biB0aGUgdHdvIHRvb2xzLiBPbmNlIHlvdSBoYXZlIHNvbWUgY29uY3JldGUgZXhwZXJpZW5jZSwg
eW91CitjYW4gbXVjaCBtb3JlIGVhc2lseSBkZWNpZGUgd2hpY2ggb25lIHRvIHVzZSB0aGUgbmV4
dCB0aW1lLgorCisjIyBNeSBkZWF0aCB0ZXN0cyBiZWNhbWUgdmVyeSBzbG93IC0gd2hhdCBoYXBw
ZW5lZD8KKworSW4gQXVndXN0IDIwMDggd2UgaGFkIHRvIHN3aXRjaCB0aGUgZGVmYXVsdCBkZWF0
aCB0ZXN0IHN0eWxlIGZyb20gYGZhc3RgIHRvCitgdGhyZWFkc2FmZWAsIGFzIHRoZSBmb3JtZXIg
aXMgbm8gbG9uZ2VyIHNhZmUgbm93IHRoYXQgdGhyZWFkZWQgbG9nZ2luZyBpcyB0aGUKK2RlZmF1
bHQuIFRoaXMgY2F1c2VkIG1hbnkgZGVhdGggdGVzdHMgdG8gc2xvdyBkb3duLiBVbmZvcnR1bmF0
ZWx5IHRoaXMgY2hhbmdlCit3YXMgbmVjZXNzYXJ5LgorCitQbGVhc2UgcmVhZCBbRml4aW5nIEZh
aWxpbmcgRGVhdGggVGVzdHNdKGRlYXRoX3Rlc3Rfc3R5bGVzLm1kKSBmb3Igd2hhdCB5b3UgY2Fu
Citkby4KKworIyMgSSBnb3Qgc29tZSBydW4tdGltZSBlcnJvcnMgYWJvdXQgaW52YWxpZCBwcm90
byBkZXNjcmlwdG9ycyB3aGVuIHVzaW5nIGBQcm90b2NvbE1lc3NhZ2VFcXVhbHNgLiBIZWxwIQor
CisqKk5vdGU6KiogYFByb3RvY29sTWVzc2FnZUVxdWFsc2AgYW5kIGBQcm90b2NvbE1lc3NhZ2VF
cXVpdmAgYXJlICpkZXByZWNhdGVkKgorbm93LiBQbGVhc2UgdXNlIGBFcXVhbHNQcm90b2AsIGV0
YyBpbnN0ZWFkLgorCitgUHJvdG9jb2xNZXNzYWdlRXF1YWxzYCBhbmQgYFByb3RvY29sTWVzc2Fn
ZUVxdWl2YCB3ZXJlIHJlZGVmaW5lZCByZWNlbnRseSBhbmQKK2FyZSBub3cgbGVzcyB0b2xlcmFu
dCBvbiBpbnZhbGlkIHByb3RvY29sIGJ1ZmZlciBkZWZpbml0aW9ucy4gSW4gcGFydGljdWxhciwg
aWYKK3lvdSBoYXZlIGEgYGZvby5wcm90b2AgdGhhdCBkb2Vzbid0IGZ1bGx5IHF1YWxpZnkgdGhl
IHR5cGUgb2YgYSBwcm90b2NvbCBtZXNzYWdlCitpdCByZWZlcmVuY2VzIChlLmcuIGBtZXNzYWdl
PEJhcj5gIHdoZXJlIGl0IHNob3VsZCBiZSBgbWVzc2FnZTxibGFoLkJhcj5gKSwgeW91Cit3aWxs
IG5vdyBnZXQgcnVuLXRpbWUgZXJyb3JzIGxpa2U6CisKK2BgYAorLi4uIGRlc2NyaXB0b3IuY2M6
Li4uXSBJbnZhbGlkIHByb3RvIGRlc2NyaXB0b3IgZm9yIGZpbGUgInBhdGgvdG8vZm9vLnByb3Rv
IjoKKy4uLiBkZXNjcmlwdG9yLmNjOi4uLl0gIGJsYWguTXlNZXNzYWdlLm15X2ZpZWxkOiAiLkJh
ciIgaXMgbm90IGRlZmluZWQuCitgYGAKKworSWYgeW91IHNlZSB0aGlzLCB5b3VyIGAucHJvdG9g
IGZpbGUgaXMgYnJva2VuIGFuZCBuZWVkcyB0byBiZSBmaXhlZCBieSBtYWtpbmcKK3RoZSB0eXBl
cyBmdWxseSBxdWFsaWZpZWQuIFRoZSBuZXcgZGVmaW5pdGlvbiBvZiBgUHJvdG9jb2xNZXNzYWdl
RXF1YWxzYCBhbmQKK2BQcm90b2NvbE1lc3NhZ2VFcXVpdmAganVzdCBoYXBwZW4gdG8gcmV2ZWFs
IHlvdXIgYnVnLgorCisjIyBNeSBkZWF0aCB0ZXN0IG1vZGlmaWVzIHNvbWUgc3RhdGUsIGJ1dCB0
aGUgY2hhbmdlIHNlZW1zIGxvc3QgYWZ0ZXIgdGhlIGRlYXRoIHRlc3QgZmluaXNoZXMuIFdoeT8K
KworRGVhdGggdGVzdHMgKGBFWFBFQ1RfREVBVEhgLCBldGMpIGFyZSBleGVjdXRlZCBpbiBhIHN1
Yi1wcm9jZXNzIHMudC4gdGhlCitleHBlY3RlZCBjcmFzaCB3b24ndCBraWxsIHRoZSB0ZXN0IHBy
b2dyYW0gKGkuZS4gdGhlIHBhcmVudCBwcm9jZXNzKS4gQXMgYQorcmVzdWx0LCBhbnkgaW4tbWVt
b3J5IHNpZGUgZWZmZWN0cyB0aGV5IGluY3VyIGFyZSBvYnNlcnZhYmxlIGluIHRoZWlyIHJlc3Bl
Y3RpdmUKK3N1Yi1wcm9jZXNzZXMsIGJ1dCBub3QgaW4gdGhlIHBhcmVudCBwcm9jZXNzLiBZb3Ug
Y2FuIHRoaW5rIG9mIHRoZW0gYXMgcnVubmluZworaW4gYSBwYXJhbGxlbCB1bml2ZXJzZSwgbW9y
ZSBvciBsZXNzLgorCitJbiBwYXJ0aWN1bGFyLCBpZiB5b3UgdXNlIFtnTW9ja10oLi4vLi4vZ29v
Z2xlbW9jaykgYW5kIHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudAoraW52b2tlcyBzb21lIG1vY2sg
bWV0aG9kcywgdGhlIHBhcmVudCBwcm9jZXNzIHdpbGwgdGhpbmsgdGhlIGNhbGxzIGhhdmUgbmV2
ZXIKK29jY3VycmVkLiBUaGVyZWZvcmUsIHlvdSBtYXkgd2FudCB0byBtb3ZlIHlvdXIgYEVYUEVD
VF9DQUxMYCBzdGF0ZW1lbnRzIGluc2lkZQordGhlIGBFWFBFQ1RfREVBVEhgIG1hY3JvLgorCisj
IyBFWFBFQ1RfRVEoaHRvbmwoYmxhaCksIGJsYWhfYmxhaCkgZ2VuZXJhdGVzIHdlaXJkIGNvbXBp
bGVyIGVycm9ycyBpbiBvcHQgbW9kZS4gSXMgdGhpcyBhIGdvb2dsZXRlc3QgYnVnPworCitBY3R1
YWxseSwgdGhlIGJ1ZyBpcyBpbiBgaHRvbmwoKWAuCisKK0FjY29yZGluZyB0byBgJ21hbiBodG9u
bCdgLCBgaHRvbmwoKWAgaXMgYSAqZnVuY3Rpb24qLCB3aGljaCBtZWFucyBpdCdzIHZhbGlkIHRv
Cit1c2UgYGh0b25sYCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuIEhvd2V2ZXIsIGluIG9wdCBtb2Rl
IGBodG9ubCgpYCBpcyBkZWZpbmVkIGFzCithICptYWNybyosIHdoaWNoIGJyZWFrcyB0aGlzIHVz
YWdlLgorCitXb3JzZSwgdGhlIG1hY3JvIGRlZmluaXRpb24gb2YgYGh0b25sKClgIHVzZXMgYSBg
Z2NjYCBleHRlbnNpb24gYW5kIGlzICpub3QqCitzdGFuZGFyZCBDKysuIFRoYXQgaGFja3kgaW1w
bGVtZW50YXRpb24gaGFzIHNvbWUgYWQgaG9jIGxpbWl0YXRpb25zLiBJbgorcGFydGljdWxhciwg
aXQgcHJldmVudHMgeW91IGZyb20gd3JpdGluZyBgRm9vPHNpemVvZihodG9ubCh4KSk+KClgLCB3
aGVyZSBgRm9vYAoraXMgYSB0ZW1wbGF0ZSB0aGF0IGhhcyBhbiBpbnRlZ3JhbCBhcmd1bWVudC4K
KworVGhlIGltcGxlbWVudGF0aW9uIG9mIGBFWFBFQ1RfRVEoYSwgYilgIHVzZXMgYHNpemVvZigu
Li4gYSAuLi4pYCBpbnNpZGUgYQordGVtcGxhdGUgYXJndW1lbnQsIGFuZCB0aHVzIGRvZXNuJ3Qg
Y29tcGlsZSBpbiBvcHQgbW9kZSB3aGVuIGBhYCBjb250YWlucyBhIGNhbGwKK3RvIGBodG9ubCgp
YC4gSXQgaXMgZGlmZmljdWx0IHRvIG1ha2UgYEVYUEVDVF9FUWAgYnlwYXNzIHRoZSBgaHRvbmwo
KWAgYnVnLCBhcwordGhlIHNvbHV0aW9uIG11c3Qgd29yayB3aXRoIGRpZmZlcmVudCBjb21waWxl
cnMgb24gdmFyaW91cyBwbGF0Zm9ybXMuCisKK2BodG9ubCgpYCBoYXMgc29tZSBvdGhlciBwcm9i
bGVtcyBhcyBkZXNjcmliZWQgaW4gYC8vdXRpbC9lbmRpYW4vZW5kaWFuLmhgLAord2hpY2ggZGVm
aW5lcyBgZ2h0b25sKClgIHRvIHJlcGxhY2UgaXQuIGBnaHRvbmwoKWAgZG9lcyB0aGUgc2FtZSB0
aGluZyBgaHRvbmwoKWAKK2RvZXMsIG9ubHkgd2l0aG91dCBpdHMgcHJvYmxlbXMuIFdlIHN1Z2dl
c3QgeW91IHRvIHVzZSBgZ2h0b25sKClgIGluc3RlYWQgb2YKK2BodG9ubCgpYCwgYm90aCBpbiB5
b3VyIHRlc3RzIGFuZCBwcm9kdWN0aW9uIGNvZGUuCisKK2AvL3V0aWwvZW5kaWFuL2VuZGlhbi5o
YCBhbHNvIGRlZmluZXMgYGdodG9ucygpYCwgd2hpY2ggc29sdmVzIHNpbWlsYXIgcHJvYmxlbXMK
K2luIGBodG9ucygpYC4KKworRG9uJ3QgZm9yZ2V0IHRvIGFkZCBgLy91dGlsL2VuZGlhbmAgdG8g
dGhlIGxpc3Qgb2YgZGVwZW5kZW5jaWVzIGluIHRoZSBgQlVJTERgCitmaWxlIHdoZXJldmVyIGBn
aHRvbmwoKWAgYW5kIGBnaHRvbnMoKWAgYXJlIHVzZWQuIFRoZSBsaWJyYXJ5IGNvbnNpc3RzIG9m
IGEKK3NpbmdsZSBoZWFkZXIgZmlsZSBhbmQgd2lsbCBub3QgYmxvYXQgeW91ciBiaW5hcnkuCisK
KyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgInVuZGVmaW5lZCByZWZlcmVuY2VzIiB0
byBzb21lIHN0YXRpYyBjb25zdCBtZW1iZXIgdmFyaWFibGVzLCBidXQgSSBkaWQgZGVmaW5lIHRo
ZW0gaW4gdGhlIGNsYXNzIGJvZHkuIFdoYXQncyB3cm9uZz8KKworSWYgeW91ciBjbGFzcyBoYXMg
YSBzdGF0aWMgZGF0YSBtZW1iZXI6CisKK2BgYGMrKworLy8gZm9vLmgKK2NsYXNzIEZvbyB7Cisg
IC4uLgorICBzdGF0aWMgY29uc3QgaW50IGtCYXIgPSAxMDA7Cit9OworYGBgCisKK1lvdSBhbHNv
IG5lZWQgdG8gZGVmaW5lIGl0ICpvdXRzaWRlKiBvZiB0aGUgY2xhc3MgYm9keSBpbiBgZm9vLmNj
YDoKKworYGBgYysrCitjb25zdCBpbnQgRm9vOjprQmFyOyAgLy8gTm8gaW5pdGlhbGl6ZXIgaGVy
ZS4KK2BgYAorCitPdGhlcndpc2UgeW91ciBjb2RlIGlzICoqaW52YWxpZCBDKysqKiwgYW5kIG1h
eSBicmVhayBpbiB1bmV4cGVjdGVkIHdheXMuIEluCitwYXJ0aWN1bGFyLCB1c2luZyBpdCBpbiBn
b29nbGV0ZXN0IGNvbXBhcmlzb24gYXNzZXJ0aW9ucyAoYEVYUEVDVF9FUWAsIGV0Yykgd2lsbAor
Z2VuZXJhdGUgYW4gInVuZGVmaW5lZCByZWZlcmVuY2UiIGxpbmtlciBlcnJvci4gVGhlIGZhY3Qg
dGhhdCAiaXQgdXNlZCB0byB3b3JrIgorZG9lc24ndCBtZWFuIGl0J3MgdmFsaWQuIEl0IGp1c3Qg
bWVhbnMgdGhhdCB5b3Ugd2VyZSBsdWNreS4gOi0pCisKKyMjIENhbiBJIGRlcml2ZSBhIHRlc3Qg
Zml4dHVyZSBmcm9tIGFub3RoZXI/CisKK1llcy4KKworRWFjaCB0ZXN0IGZpeHR1cmUgaGFzIGEg
Y29ycmVzcG9uZGluZyBhbmQgc2FtZSBuYW1lZCB0ZXN0IGNhc2UuIFRoaXMgbWVhbnMgb25seQor
b25lIHRlc3QgY2FzZSBjYW4gdXNlIGEgcGFydGljdWxhciBmaXh0dXJlLiBTb21ldGltZXMsIGhv
d2V2ZXIsIG11bHRpcGxlIHRlc3QKK2Nhc2VzIG1heSB3YW50IHRvIHVzZSB0aGUgc2FtZSBvciBz
bGlnaHRseSBkaWZmZXJlbnQgZml4dHVyZXMuIEZvciBleGFtcGxlLCB5b3UKK21heSB3YW50IHRv
IG1ha2Ugc3VyZSB0aGF0IGFsbCBvZiBhIEdVSSBsaWJyYXJ5J3MgdGVzdCBjYXNlcyBkb24ndCBs
ZWFrCitpbXBvcnRhbnQgc3lzdGVtIHJlc291cmNlcyBsaWtlIGZvbnRzIGFuZCBicnVzaGVzLgor
CitJbiBnb29nbGV0ZXN0LCB5b3Ugc2hhcmUgYSBmaXh0dXJlIGFtb25nIHRlc3QgY2FzZXMgYnkg
cHV0dGluZyB0aGUgc2hhcmVkIGxvZ2ljCitpbiBhIGJhc2UgdGVzdCBmaXh0dXJlLCB0aGVuIGRl
cml2aW5nIGZyb20gdGhhdCBiYXNlIGEgc2VwYXJhdGUgZml4dHVyZSBmb3IgZWFjaAordGVzdCBj
YXNlIHRoYXQgd2FudHMgdG8gdXNlIHRoaXMgY29tbW9uIGxvZ2ljLiBZb3UgdGhlbiB1c2UgYFRF
U1RfRigpYCB0byB3cml0ZQordGVzdHMgdXNpbmcgZWFjaCBkZXJpdmVkIGZpeHR1cmUuCisKK1R5
cGljYWxseSwgeW91ciBjb2RlIGxvb2tzIGxpa2UgdGhpczoKKworYGBgYysrCisvLyBEZWZpbmVz
IGEgYmFzZSB0ZXN0IGZpeHR1cmUuCitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLi4uCit9OworCisvLyBEZXJpdmVzIGEgZml4dHVyZSBG
b29UZXN0IGZyb20gQmFzZVRlc3QuCitjbGFzcyBGb29UZXN0IDogcHVibGljIEJhc2VUZXN0IHsK
KyBwcm90ZWN0ZWQ6CisgIHZvaWQgU2V0VXAoKSBvdmVycmlkZSB7CisgICAgQmFzZVRlc3Q6OlNl
dFVwKCk7ICAvLyBTZXRzIHVwIHRoZSBiYXNlIGZpeHR1cmUgZmlyc3QuCisgICAgLi4uIGFkZGl0
aW9uYWwgc2V0LXVwIHdvcmsgLi4uCisgIH0KKworICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUg
eworICAgIC4uLiBjbGVhbi11cCB3b3JrIGZvciBGb29UZXN0IC4uLgorICAgIEJhc2VUZXN0OjpU
ZWFyRG93bigpOyAgLy8gUmVtZW1iZXIgdG8gdGVhciBkb3duIHRoZSBiYXNlIGZpeHR1cmUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFmdGVyIGNsZWFuaW5nIHVwIEZvb1Rlc3QhCisg
IH0KKworICAuLi4gZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMgZm9yIEZvb1Rlc3QgLi4uCit9Owor
CisvLyBUZXN0cyB0aGF0IHVzZSB0aGUgZml4dHVyZSBGb29UZXN0LgorVEVTVF9GKEZvb1Rlc3Qs
IEJhcikgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIEJheikgeyAuLi4gfQorCisuLi4gYWRkaXRp
b25hbCBmaXh0dXJlcyBkZXJpdmVkIGZyb20gQmFzZVRlc3QgLi4uCitgYGAKKworSWYgbmVjZXNz
YXJ5LCB5b3UgY2FuIGNvbnRpbnVlIHRvIGRlcml2ZSB0ZXN0IGZpeHR1cmVzIGZyb20gYSBkZXJp
dmVkIGZpeHR1cmUuCitnb29nbGV0ZXN0IGhhcyBubyBsaW1pdCBvbiBob3cgZGVlcCB0aGUgaGll
cmFyY2h5IGNhbiBiZS4KKworRm9yIGEgY29tcGxldGUgZXhhbXBsZSB1c2luZyBkZXJpdmVkIHRl
c3QgZml4dHVyZXMsIHNlZSBbZ29vZ2xldGVzdAorc2FtcGxlXShodHRwczovL2dpdGh1Yi5jb20v
Z29vZ2xlL2dvb2dsZXRlc3QvYmxvYi9tYXN0ZXIvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTVf
dW5pdHRlc3QuY2MpCisKKyMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyAidm9pZCB2YWx1ZSBub3Qg
aWdub3JlZCBhcyBpdCBvdWdodCB0byBiZS4iIFdoYXQgZG9lcyB0aGlzIG1lYW4/CisKK1lvdSdy
ZSBwcm9iYWJseSB1c2luZyBhbiBgQVNTRVJUXyooKWAgaW4gYSBmdW5jdGlvbiB0aGF0IGRvZXNu
J3QgcmV0dXJuIGB2b2lkYC4KK2BBU1NFUlRfKigpYCBjYW4gb25seSBiZSB1c2VkIGluIGB2b2lk
YCBmdW5jdGlvbnMsIGR1ZSB0byBleGNlcHRpb25zIGJlaW5nCitkaXNhYmxlZCBieSBvdXIgYnVp
bGQgc3lzdGVtLiBQbGVhc2Ugc2VlIG1vcmUgZGV0YWlscworW2hlcmVdKGFkdmFuY2VkLm1kI2Fz
c2VydGlvbi1wbGFjZW1lbnQpLgorCisjIyBNeSBkZWF0aCB0ZXN0IGhhbmdzIChvciBzZWctZmF1
bHRzKS4gSG93IGRvIEkgZml4IGl0PworCitJbiBnb29nbGV0ZXN0LCBkZWF0aCB0ZXN0cyBhcmUg
cnVuIGluIGEgY2hpbGQgcHJvY2VzcyBhbmQgdGhlIHdheSB0aGV5IHdvcmsgaXMKK2RlbGljYXRl
LiBUbyB3cml0ZSBkZWF0aCB0ZXN0cyB5b3UgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZCBob3cg
dGhleSB3b3JrLgorUGxlYXNlIG1ha2Ugc3VyZSB5b3UgaGF2ZSByZWFkIFt0aGlzXShhZHZhbmNl
ZC5tZCNob3ctaXQtd29ya3MpLgorCitJbiBwYXJ0aWN1bGFyLCBkZWF0aCB0ZXN0cyBkb24ndCBs
aWtlIGhhdmluZyBtdWx0aXBsZSB0aHJlYWRzIGluIHRoZSBwYXJlbnQKK3Byb2Nlc3MuIFNvIHRo
ZSBmaXJzdCB0aGluZyB5b3UgY2FuIHRyeSBpcyB0byBlbGltaW5hdGUgY3JlYXRpbmcgdGhyZWFk
cyBvdXRzaWRlCitvZiBgRVhQRUNUX0RFQVRIKClgLiBGb3IgZXhhbXBsZSwgeW91IG1heSB3YW50
IHRvIHVzZSBbbW9ja3NdKC4uLy4uL2dvb2dsZW1vY2spCitvciBmYWtlIG9iamVjdHMgaW5zdGVh
ZCBvZiByZWFsIG9uZXMgaW4geW91ciB0ZXN0cy4KKworU29tZXRpbWVzIHRoaXMgaXMgaW1wb3Nz
aWJsZSBhcyBzb21lIGxpYnJhcnkgeW91IG11c3QgdXNlIG1heSBiZSBjcmVhdGluZwordGhyZWFk
cyBiZWZvcmUgYG1haW4oKWAgaXMgZXZlbiByZWFjaGVkLiBJbiB0aGlzIGNhc2UsIHlvdSBjYW4g
dHJ5IHRvIG1pbmltaXplCit0aGUgY2hhbmNlIG9mIGNvbmZsaWN0cyBieSBlaXRoZXIgbW92aW5n
IGFzIG1hbnkgYWN0aXZpdGllcyBhcyBwb3NzaWJsZSBpbnNpZGUKK2BFWFBFQ1RfREVBVEgoKWAg
KGluIHRoZSBleHRyZW1lIGNhc2UsIHlvdSB3YW50IHRvIG1vdmUgZXZlcnl0aGluZyBpbnNpZGUp
LCBvcgorbGVhdmluZyBhcyBmZXcgdGhpbmdzIGFzIHBvc3NpYmxlIGluIGl0LiBBbHNvLCB5b3Ug
Y2FuIHRyeSB0byBzZXQgdGhlIGRlYXRoIHRlc3QKK3N0eWxlIHRvIGAidGhyZWFkc2FmZSJgLCB3
aGljaCBpcyBzYWZlciBidXQgc2xvd2VyLCBhbmQgc2VlIGlmIGl0IGhlbHBzLgorCitJZiB5b3Ug
Z28gd2l0aCB0aHJlYWQtc2FmZSBkZWF0aCB0ZXN0cywgcmVtZW1iZXIgdGhhdCB0aGV5IHJlcnVu
IHRoZSB0ZXN0Citwcm9ncmFtIGZyb20gdGhlIGJlZ2lubmluZyBpbiB0aGUgY2hpbGQgcHJvY2Vz
cy4gVGhlcmVmb3JlIG1ha2Ugc3VyZSB5b3VyCitwcm9ncmFtIGNhbiBydW4gc2lkZS1ieS1zaWRl
IHdpdGggaXRzZWxmIGFuZCBpcyBkZXRlcm1pbmlzdGljLgorCitJbiB0aGUgZW5kLCB0aGlzIGJv
aWxzIGRvd24gdG8gZ29vZCBjb25jdXJyZW50IHByb2dyYW1taW5nLiBZb3UgaGF2ZSB0byBtYWtl
CitzdXJlIHRoYXQgdGhlcmUgaXMgbm8gcmFjZSBjb25kaXRpb25zIG9yIGRlYWQgbG9ja3MgaW4g
eW91ciBwcm9ncmFtLiBObyBzaWx2ZXIKK2J1bGxldCAtIHNvcnJ5IQorCisjIyBTaG91bGQgSSB1
c2UgdGhlIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3Igb2YgdGhlIHRlc3QgZml4dHVyZSBvciBTZXRV
cCgpL1RlYXJEb3duKCk/CisKK1RoZSBmaXJzdCB0aGluZyB0byByZW1lbWJlciBpcyB0aGF0IGdv
b2dsZXRlc3QgZG9lcyAqKm5vdCoqIHJldXNlIHRoZSBzYW1lIHRlc3QKK2ZpeHR1cmUgb2JqZWN0
IGFjcm9zcyBtdWx0aXBsZSB0ZXN0cy4gRm9yIGVhY2ggYFRFU1RfRmAsIGdvb2dsZXRlc3Qgd2ls
bCBjcmVhdGUKK2EgKipmcmVzaCoqIHRlc3QgZml4dHVyZSBvYmplY3QsIGltbWVkaWF0ZWx5IGNh
bGwgYFNldFVwKClgLCBydW4gdGhlIHRlc3QgYm9keSwKK2NhbGwgYFRlYXJEb3duKClgLCBhbmQg
dGhlbiBkZWxldGUgdGhlIHRlc3QgZml4dHVyZSBvYmplY3QuCisKK1doZW4geW91IG5lZWQgdG8g
d3JpdGUgcGVyLXRlc3Qgc2V0LXVwIGFuZCB0ZWFyLWRvd24gbG9naWMsIHlvdSBoYXZlIHRoZSBj
aG9pY2UKK2JldHdlZW4gdXNpbmcgdGhlIHRlc3QgZml4dHVyZSBjb25zdHJ1Y3Rvci9kZXN0cnVj
dG9yIG9yIGBTZXRVcCgpL1RlYXJEb3duKClgLgorVGhlIGZvcm1lciBpcyB1c3VhbGx5IHByZWZl
cnJlZCwgYXMgaXQgaGFzIHRoZSBmb2xsb3dpbmcgYmVuZWZpdHM6CisKKyogICBCeSBpbml0aWFs
aXppbmcgYSBtZW1iZXIgdmFyaWFibGUgaW4gdGhlIGNvbnN0cnVjdG9yLCB3ZSBoYXZlIHRoZSBv
cHRpb24gdG8KKyAgICBtYWtlIGl0IGBjb25zdGAsIHdoaWNoIGhlbHBzIHByZXZlbnQgYWNjaWRl
bnRhbCBjaGFuZ2VzIHRvIGl0cyB2YWx1ZSBhbmQKKyAgICBtYWtlcyB0aGUgdGVzdHMgbW9yZSBv
YnZpb3VzbHkgY29ycmVjdC4KKyogICBJbiBjYXNlIHdlIG5lZWQgdG8gc3ViY2xhc3MgdGhlIHRl
c3QgZml4dHVyZSBjbGFzcywgdGhlIHN1YmNsYXNzJworICAgIGNvbnN0cnVjdG9yIGlzIGd1YXJh
bnRlZWQgdG8gY2FsbCB0aGUgYmFzZSBjbGFzcycgY29uc3RydWN0b3IgKmZpcnN0KiwgYW5kCisg
ICAgdGhlIHN1YmNsYXNzJyBkZXN0cnVjdG9yIGlzIGd1YXJhbnRlZWQgdG8gY2FsbCB0aGUgYmFz
ZSBjbGFzcycgZGVzdHJ1Y3RvcgorICAgICphZnRlcndhcmQqLiBXaXRoIGBTZXRVcCgpL1RlYXJE
b3duKClgLCBhIHN1YmNsYXNzIG1heSBtYWtlIHRoZSBtaXN0YWtlIG9mCisgICAgZm9yZ2V0dGlu
ZyB0byBjYWxsIHRoZSBiYXNlIGNsYXNzJyBgU2V0VXAoKS9UZWFyRG93bigpYCBvciBjYWxsIHRo
ZW0gYXQgdGhlCisgICAgd3JvbmcgdGltZS4KKworWW91IG1heSBzdGlsbCB3YW50IHRvIHVzZSBg
U2V0VXAoKS9UZWFyRG93bigpYCBpbiB0aGUgZm9sbG93aW5nIHJhcmUgY2FzZXM6CisKKyogICBJ
biB0aGUgYm9keSBvZiBhIGNvbnN0cnVjdG9yIChvciBkZXN0cnVjdG9yKSwgaXQncyBub3QgcG9z
c2libGUgdG8gdXNlIHRoZQorICAgIGBBU1NFUlRfeHhgIG1hY3Jvcy4gVGhlcmVmb3JlLCBpZiB0
aGUgc2V0LXVwIG9wZXJhdGlvbiBjb3VsZCBjYXVzZSBhIGZhdGFsCisgICAgdGVzdCBmYWlsdXJl
IHRoYXQgc2hvdWxkIHByZXZlbnQgdGhlIHRlc3QgZnJvbSBydW5uaW5nLCBpdCdzIG5lY2Vzc2Fy
eSB0bworICAgIHVzZSBhIGBDSEVDS2AgbWFjcm8gb3IgdG8gdXNlIGBTZXRVcCgpYCBpbnN0ZWFk
IG9mIGEgY29uc3RydWN0b3IuCisqICAgSWYgdGhlIHRlYXItZG93biBvcGVyYXRpb24gY291bGQg
dGhyb3cgYW4gZXhjZXB0aW9uLCB5b3UgbXVzdCB1c2UKKyAgICBgVGVhckRvd24oKWAgYXMgb3Bw
b3NlZCB0byB0aGUgZGVzdHJ1Y3RvciwgYXMgdGhyb3dpbmcgaW4gYSBkZXN0cnVjdG9yIGxlYWRz
CisgICAgdG8gdW5kZWZpbmVkIGJlaGF2aW9yIGFuZCB1c3VhbGx5IHdpbGwga2lsbCB5b3VyIHBy
b2dyYW0gcmlnaHQgYXdheS4gTm90ZQorICAgIHRoYXQgbWFueSBzdGFuZGFyZCBsaWJyYXJpZXMg
KGxpa2UgU1RMKSBtYXkgdGhyb3cgd2hlbiBleGNlcHRpb25zIGFyZQorICAgIGVuYWJsZWQgaW4g
dGhlIGNvbXBpbGVyLiBUaGVyZWZvcmUgeW91IHNob3VsZCBwcmVmZXIgYFRlYXJEb3duKClgIGlm
IHlvdQorICAgIHdhbnQgdG8gd3JpdGUgcG9ydGFibGUgdGVzdHMgdGhhdCB3b3JrIHdpdGggb3Ig
d2l0aG91dCBleGNlcHRpb25zLgorKiAgIFRoZSBnb29nbGV0ZXN0IHRlYW0gaXMgY29uc2lkZXJp
bmcgbWFraW5nIHRoZSBhc3NlcnRpb24gbWFjcm9zIHRocm93IG9uCisgICAgcGxhdGZvcm1zIHdo
ZXJlIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQgKGUuZy4gV2luZG93cywgTWFjIE9TLCBhbmQgTGlu
dXgKKyAgICBjbGllbnQtc2lkZSksIHdoaWNoIHdpbGwgZWxpbWluYXRlIHRoZSBuZWVkIGZvciB0
aGUgdXNlciB0byBwcm9wYWdhdGUKKyAgICBmYWlsdXJlcyBmcm9tIGEgc3Vicm91dGluZSB0byBp
dHMgY2FsbGVyLiBUaGVyZWZvcmUsIHlvdSBzaG91bGRuJ3QgdXNlCisgICAgZ29vZ2xldGVzdCBh
c3NlcnRpb25zIGluIGEgZGVzdHJ1Y3RvciBpZiB5b3VyIGNvZGUgY291bGQgcnVuIG9uIHN1Y2gg
YQorICAgIHBsYXRmb3JtLgorKiAgIEluIGEgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciwgeW91
IGNhbm5vdCBtYWtlIGEgdmlydHVhbCBmdW5jdGlvbiBjYWxsIG9uCisgICAgdGhpcyBvYmplY3Qu
IChZb3UgY2FuIGNhbGwgYSBtZXRob2QgZGVjbGFyZWQgYXMgdmlydHVhbCwgYnV0IGl0IHdpbGwg
YmUKKyAgICBzdGF0aWNhbGx5IGJvdW5kLikgVGhlcmVmb3JlLCBpZiB5b3UgbmVlZCB0byBjYWxs
IGEgbWV0aG9kIHRoYXQgd2lsbCBiZQorICAgIG92ZXJyaWRkZW4gaW4gYSBkZXJpdmVkIGNsYXNz
LCB5b3UgaGF2ZSB0byB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAuCisKKworIyMgVGhlIGNvbXBp
bGVyIGNvbXBsYWlucyAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gdG8gY2FsbCIgd2hlbiBJIHVzZSBB
U1NFUlRfUFJFRCouIEhvdyBkbyBJIGZpeCBpdD8KKworSWYgdGhlIHByZWRpY2F0ZSBmdW5jdGlv
biB5b3UgdXNlIGluIGBBU1NFUlRfUFJFRCpgIG9yIGBFWFBFQ1RfUFJFRCpgIGlzCitvdmVybG9h
ZGVkIG9yIGEgdGVtcGxhdGUsIHRoZSBjb21waWxlciB3aWxsIGhhdmUgdHJvdWJsZSBmaWd1cmlu
ZyBvdXQgd2hpY2gKK292ZXJsb2FkZWQgdmVyc2lvbiBpdCBzaG91bGQgdXNlLiBgQVNTRVJUX1BS
RURfRk9STUFUKmAgYW5kCitgRVhQRUNUX1BSRURfRk9STUFUKmAgZG9uJ3QgaGF2ZSB0aGlzIHBy
b2JsZW0uCisKK0lmIHlvdSBzZWUgdGhpcyBlcnJvciwgeW91IG1pZ2h0IHdhbnQgdG8gc3dpdGNo
IHRvCitgKEFTU0VSVHxFWFBFQ1QpX1BSRURfRk9STUFUKmAsIHdoaWNoIHdpbGwgYWxzbyBnaXZl
IHlvdSBhIGJldHRlciBmYWlsdXJlCittZXNzYWdlLiBJZiwgaG93ZXZlciwgdGhhdCBpcyBub3Qg
YW4gb3B0aW9uLCB5b3UgY2FuIHJlc29sdmUgdGhlIHByb2JsZW0gYnkKK2V4cGxpY2l0bHkgdGVs
bGluZyB0aGUgY29tcGlsZXIgd2hpY2ggdmVyc2lvbiB0byBwaWNrLgorCitGb3IgZXhhbXBsZSwg
c3VwcG9zZSB5b3UgaGF2ZQorCitgYGBjKysKK2Jvb2wgSXNQb3NpdGl2ZShpbnQgbikgeworICBy
ZXR1cm4gbiA+IDA7Cit9CisKK2Jvb2wgSXNQb3NpdGl2ZShkb3VibGUgeCkgeworICByZXR1cm4g
eCA+IDA7Cit9CitgYGAKKworeW91IHdpbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IgaWYgeW91IHdy
aXRlCisKK2BgYGMrKworRVhQRUNUX1BSRUQxKElzUG9zaXRpdmUsIDUpOworYGBgCisKK0hvd2V2
ZXIsIHRoaXMgd2lsbCB3b3JrOgorCitgYGBjKysKK0VYUEVDVF9QUkVEMShzdGF0aWNfY2FzdDxi
b29sICgqKShpbnQpPihJc1Bvc2l0aXZlKSwgNSk7CitgYGAKKworKFRoZSBzdHVmZiBpbnNpZGUg
dGhlIGFuZ2xlZCBicmFja2V0cyBmb3IgdGhlIGBzdGF0aWNfY2FzdGAgb3BlcmF0b3IgaXMgdGhl
IHR5cGUKK29mIHRoZSBmdW5jdGlvbiBwb2ludGVyIGZvciB0aGUgYGludGAtdmVyc2lvbiBvZiBg
SXNQb3NpdGl2ZSgpYC4pCisKK0FzIGFub3RoZXIgZXhhbXBsZSwgd2hlbiB5b3UgaGF2ZSBhIHRl
bXBsYXRlIGZ1bmN0aW9uCisKK2BgYGMrKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citib29sIElz
TmVnYXRpdmUoVCB4KSB7CisgIHJldHVybiB4IDwgMDsKK30KK2BgYAorCit5b3UgY2FuIHVzZSBp
dCBpbiBhIHByZWRpY2F0ZSBhc3NlcnRpb24gbGlrZSB0aGlzOgorCitgYGBjKysKK0FTU0VSVF9Q
UkVEMShJc05lZ2F0aXZlPGludD4sIC01KTsKK2BgYAorCitUaGluZ3MgYXJlIG1vcmUgaW50ZXJl
c3RpbmcgaWYgeW91ciB0ZW1wbGF0ZSBoYXMgbW9yZSB0aGFuIG9uZSBwYXJhbWV0ZXJzLiBUaGUK
K2ZvbGxvd2luZyB3b24ndCBjb21waWxlOgorCitgYGBjKysKK0FTU0VSVF9QUkVEMihHcmVhdGVy
VGhhbjxpbnQsIGludD4sIDUsIDApOworYGBgCisKK2FzIHRoZSBDKysgcHJlLXByb2Nlc3NvciB0
aGlua3MgeW91IGFyZSBnaXZpbmcgYEFTU0VSVF9QUkVEMmAgNCBhcmd1bWVudHMsIHdoaWNoCitp
cyBvbmUgbW9yZSB0aGFuIGV4cGVjdGVkLiBUaGUgd29ya2Fyb3VuZCBpcyB0byB3cmFwIHRoZSBw
cmVkaWNhdGUgZnVuY3Rpb24gaW4KK3BhcmVudGhlc2VzOgorCitgYGBjKysKK0FTU0VSVF9QUkVE
MigoR3JlYXRlclRoYW48aW50LCBpbnQ+KSwgNSwgMCk7CitgYGAKKworCisjIyBNeSBjb21waWxl
ciBjb21wbGFpbnMgYWJvdXQgImlnbm9yaW5nIHJldHVybiB2YWx1ZSIgd2hlbiBJIGNhbGwgUlVO
X0FMTF9URVNUUygpLiBXaHk/CisKK1NvbWUgcGVvcGxlIGhhZCBiZWVuIGlnbm9yaW5nIHRoZSBy
ZXR1cm4gdmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAuIFRoYXQgaXMsCitpbnN0ZWFkIG9mCisK
K2BgYGMrKworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworYGBgCisKK3RoZXkgd3JpdGUKKwor
YGBgYysrCisgIFJVTl9BTExfVEVTVFMoKTsKK2BgYAorCitUaGlzIGlzICoqd3JvbmcgYW5kIGRh
bmdlcm91cyoqLiBUaGUgdGVzdGluZyBzZXJ2aWNlcyBuZWVkcyB0byBzZWUgdGhlIHJldHVybgor
dmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGlmIGEgdGVz
dCBoYXMgcGFzc2VkLiBJZiB5b3VyCitgbWFpbigpYCBmdW5jdGlvbiBpZ25vcmVzIGl0LCB5b3Vy
IHRlc3Qgd2lsbCBiZSBjb25zaWRlcmVkIHN1Y2Nlc3NmdWwgZXZlbiBpZiBpdAoraGFzIGEgZ29v
Z2xldGVzdCBhc3NlcnRpb24gZmFpbHVyZS4gVmVyeSBiYWQuCisKK1dlIGhhdmUgZGVjaWRlZCB0
byBmaXggdGhpcyAodGhhbmtzIHRvIE1pY2hhZWwgQ2hhc3RhaW4gZm9yIHRoZSBpZGVhKS4gTm93
LCB5b3VyCitjb2RlIHdpbGwgbm8gbG9uZ2VyIGJlIGFibGUgdG8gaWdub3JlIGBSVU5fQUxMX1RF
U1RTKClgIHdoZW4gY29tcGlsZWQgd2l0aAorYGdjY2AuIElmIHlvdSBkbyBzbywgeW91J2xsIGdl
dCBhIGNvbXBpbGVyIGVycm9yLgorCitJZiB5b3Ugc2VlIHRoZSBjb21waWxlciBjb21wbGFpbmlu
ZyBhYm91dCB5b3UgaWdub3JpbmcgdGhlIHJldHVybiB2YWx1ZSBvZgorYFJVTl9BTExfVEVTVFMo
KWAsIHRoZSBmaXggaXMgc2ltcGxlOiBqdXN0IG1ha2Ugc3VyZSBpdHMgdmFsdWUgaXMgdXNlZCBh
cyB0aGUKK3JldHVybiB2YWx1ZSBvZiBgbWFpbigpYC4KKworQnV0IGhvdyBjb3VsZCB3ZSBpbnRy
b2R1Y2UgYSBjaGFuZ2UgdGhhdCBicmVha3MgZXhpc3RpbmcgdGVzdHM/IFdlbGwsIGluIHRoaXMK
K2Nhc2UsIHRoZSBjb2RlIHdhcyBhbHJlYWR5IGJyb2tlbiBpbiB0aGUgZmlyc3QgcGxhY2UsIHNv
IHdlIGRpZG4ndCBicmVhayBpdC4gOi0pCisKKyMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyB0aGF0
IGEgY29uc3RydWN0b3IgKG9yIGRlc3RydWN0b3IpIGNhbm5vdCByZXR1cm4gYSB2YWx1ZS4gV2hh
dCdzIGdvaW5nIG9uPworCitEdWUgdG8gYSBwZWN1bGlhcml0eSBvZiBDKyssIGluIG9yZGVyIHRv
IHN1cHBvcnQgdGhlIHN5bnRheCBmb3Igc3RyZWFtaW5nCittZXNzYWdlcyB0byBhbiBgQVNTRVJU
XypgLCBlLmcuCisKK2BgYGMrKworICBBU1NFUlRfRVEoMSwgRm9vKCkpIDw8ICJibGFoIGJsYWgi
IDw8IGZvbzsKK2BgYAorCit3ZSBoYWQgdG8gZ2l2ZSB1cCB1c2luZyBgQVNTRVJUKmAgYW5kIGBG
QUlMKmAgKGJ1dCBub3QgYEVYUEVDVCpgIGFuZAorYEFERF9GQUlMVVJFKmApIGluIGNvbnN0cnVj
dG9ycyBhbmQgZGVzdHJ1Y3RvcnMuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIG1vdmUgdGhlCitjb250
ZW50IG9mIHlvdXIgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciB0byBhIHByaXZhdGUgdm9pZCBtZW1i
ZXIgZnVuY3Rpb24sIG9yCitzd2l0Y2ggdG8gYEVYUEVDVF8qKClgIGlmIHRoYXQgd29ya3MuIFRo
aXMKK1tzZWN0aW9uXShhZHZhbmNlZC5tZCNhc3NlcnRpb24tcGxhY2VtZW50KSBpbiB0aGUgdXNl
cidzIGd1aWRlIGV4cGxhaW5zIGl0LgorCisjIyBNeSBTZXRVcCgpIGZ1bmN0aW9uIGlzIG5vdCBj
YWxsZWQuIFdoeT8KKworQysrIGlzIGNhc2Utc2Vuc2l0aXZlLiBEaWQgeW91IHNwZWxsIGl0IGFz
IGBTZXR1cCgpYD8KKworU2ltaWxhcmx5LCBzb21ldGltZXMgcGVvcGxlIHNwZWxsIGBTZXRVcFRl
c3RDYXNlKClgIGFzIGBTZXR1cFRlc3RDYXNlKClgIGFuZAord29uZGVyIHdoeSBpdCdzIG5ldmVy
IGNhbGxlZC4KKworIyMgSG93IGRvIEkganVtcCB0byB0aGUgbGluZSBvZiBhIGZhaWx1cmUgaW4g
RW1hY3MgZGlyZWN0bHk/CisKK2dvb2dsZXRlc3QncyBmYWlsdXJlIG1lc3NhZ2UgZm9ybWF0IGlz
IHVuZGVyc3Rvb2QgYnkgRW1hY3MgYW5kIG1hbnkgb3RoZXIgSURFcywKK2xpa2UgYWNtZSBhbmQg
WENvZGUuIElmIGEgZ29vZ2xldGVzdCBtZXNzYWdlIGlzIGluIGEgY29tcGlsYXRpb24gYnVmZmVy
IGluCitFbWFjcywgdGhlbiBpdCdzIGNsaWNrYWJsZS4KKworCisjIyBJIGhhdmUgc2V2ZXJhbCB0
ZXN0IGNhc2VzIHdoaWNoIHNoYXJlIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBsb2dpYywgZG8gSSBo
YXZlIHRvIGRlZmluZSBhIG5ldyB0ZXN0IGZpeHR1cmUgY2xhc3MgZm9yIGVhY2ggb2YgdGhlbT8g
VGhpcyBzZWVtcyBwcmV0dHkgdGVkaW91cy4KKworWW91IGRvbid0IGhhdmUgdG8uIEluc3RlYWQg
b2YKKworYGBgYysrCitjbGFzcyBGb29UZXN0IDogcHVibGljIEJhc2VUZXN0IHt9OworCitURVNU
X0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9CisK
K2NsYXNzIEJhclRlc3QgOiBwdWJsaWMgQmFzZVRlc3Qge307CisKK1RFU1RfRihCYXJUZXN0LCBB
YmMpIHsgLi4uIH0KK1RFU1RfRihCYXJUZXN0LCBEZWYpIHsgLi4uIH0KK2BgYAorCit5b3UgY2Fu
IHNpbXBseSBgdHlwZWRlZmAgdGhlIHRlc3QgZml4dHVyZXM6CisKK2BgYGMrKwordHlwZWRlZiBC
YXNlVGVzdCBGb29UZXN0OworCitURVNUX0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0Yo
Rm9vVGVzdCwgRGVmKSB7IC4uLiB9CisKK3R5cGVkZWYgQmFzZVRlc3QgQmFyVGVzdDsKKworVEVT
VF9GKEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIERlZikgeyAuLi4gfQor
YGBgCisKKyMjIGdvb2dsZXRlc3Qgb3V0cHV0IGlzIGJ1cmllZCBpbiBhIHdob2xlIGJ1bmNoIG9m
IExPRyBtZXNzYWdlcy4gV2hhdCBkbyBJIGRvPworCitUaGUgZ29vZ2xldGVzdCBvdXRwdXQgaXMg
bWVhbnQgdG8gYmUgYSBjb25jaXNlIGFuZCBodW1hbi1mcmllbmRseSByZXBvcnQuIElmCit5b3Vy
IHRlc3QgZ2VuZXJhdGVzIHRleHR1YWwgb3V0cHV0IGl0c2VsZiwgaXQgd2lsbCBtaXggd2l0aCB0
aGUgZ29vZ2xldGVzdAorb3V0cHV0LCBtYWtpbmcgaXQgaGFyZCB0byByZWFkLiBIb3dldmVyLCB0
aGVyZSBpcyBhbiBlYXN5IHNvbHV0aW9uIHRvIHRoaXMKK3Byb2JsZW0uCisKK1NpbmNlIGBMT0dg
IG1lc3NhZ2VzIGdvIHRvIHN0ZGVyciwgd2UgZGVjaWRlZCB0byBsZXQgZ29vZ2xldGVzdCBvdXRw
dXQgZ28gdG8KK3N0ZG91dC4gVGhpcyB3YXksIHlvdSBjYW4gZWFzaWx5IHNlcGFyYXRlIHRoZSB0
d28gdXNpbmcgcmVkaXJlY3Rpb24uIEZvcgorZXhhbXBsZToKKworYGBgc2hlbGwKKyQgLi9teV90
ZXN0ID4gZ3Rlc3Rfb3V0cHV0LnR4dAorYGBgCisKKworIyMgV2h5IHNob3VsZCBJIHByZWZlciB0
ZXN0IGZpeHR1cmVzIG92ZXIgZ2xvYmFsIHZhcmlhYmxlcz8KKworVGhlcmUgYXJlIHNldmVyYWwg
Z29vZCByZWFzb25zOgorCisxLiAgSXQncyBsaWtlbHkgeW91ciB0ZXN0IG5lZWRzIHRvIGNoYW5n
ZSB0aGUgc3RhdGVzIG9mIGl0cyBnbG9iYWwgdmFyaWFibGVzLgorICAgIFRoaXMgbWFrZXMgaXQg
ZGlmZmljdWx0IHRvIGtlZXAgc2lkZSBlZmZlY3RzIGZyb20gZXNjYXBpbmcgb25lIHRlc3QgYW5k
CisgICAgY29udGFtaW5hdGluZyBvdGhlcnMsIG1ha2luZyBkZWJ1Z2dpbmcgZGlmZmljdWx0LiBC
eSB1c2luZyBmaXh0dXJlcywgZWFjaAorICAgIHRlc3QgaGFzIGEgZnJlc2ggc2V0IG9mIHZhcmlh
YmxlcyB0aGF0J3MgZGlmZmVyZW50IChidXQgd2l0aCB0aGUgc2FtZQorICAgIG5hbWVzKS4gVGh1
cywgdGVzdHMgYXJlIGtlcHQgaW5kZXBlbmRlbnQgb2YgZWFjaCBvdGhlci4KKzEuICBHbG9iYWwg
dmFyaWFibGVzIHBvbGx1dGUgdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisxLiAgVGVzdCBmaXh0dXJl
cyBjYW4gYmUgcmV1c2VkIHZpYSBzdWJjbGFzc2luZywgd2hpY2ggY2Fubm90IGJlIGRvbmUgZWFz
aWx5CisgICAgd2l0aCBnbG9iYWwgdmFyaWFibGVzLiBUaGlzIGlzIHVzZWZ1bCBpZiBtYW55IHRl
c3QgY2FzZXMgaGF2ZSBzb21ldGhpbmcgaW4KKyAgICBjb21tb24uCisKKworICAgICMjIFdoYXQg
Y2FuIHRoZSBzdGF0ZW1lbnQgYXJndW1lbnQgaW4gQVNTRVJUX0RFQVRIKCkgYmU/CisKK2BBU1NF
UlRfREVBVEgoKnN0YXRlbWVudCosICpyZWdleCopYCAob3IgYW55IGRlYXRoIGFzc2VydGlvbiBt
YWNybykgY2FuIGJlIHVzZWQKK3doZXJldmVyIGAqc3RhdGVtZW50KmAgaXMgdmFsaWQuIFNvIGJh
c2ljYWxseSBgKnN0YXRlbWVudCpgIGNhbiBiZSBhbnkgQysrCitzdGF0ZW1lbnQgdGhhdCBtYWtl
cyBzZW5zZSBpbiB0aGUgY3VycmVudCBjb250ZXh0LiBJbiBwYXJ0aWN1bGFyLCBpdCBjYW4KK3Jl
ZmVyZW5jZSBnbG9iYWwgYW5kL29yIGxvY2FsIHZhcmlhYmxlcywgYW5kIGNhbiBiZToKKworKiAg
IGEgc2ltcGxlIGZ1bmN0aW9uIGNhbGwgKG9mdGVuIHRoZSBjYXNlKSwKKyogICBhIGNvbXBsZXgg
ZXhwcmVzc2lvbiwgb3IKKyogICBhIGNvbXBvdW5kIHN0YXRlbWVudC4KKworU29tZSBleGFtcGxl
cyBhcmUgc2hvd24gaGVyZToKKworYGBgYysrCisvLyBBIGRlYXRoIHRlc3QgY2FuIGJlIGEgc2lt
cGxlIGZ1bmN0aW9uIGNhbGwuCitURVNUKE15RGVhdGhUZXN0LCBGdW5jdGlvbkNhbGwpIHsKKyAg
QVNTRVJUX0RFQVRIKFh5eig1KSwgIlh5eiBmYWlsZWQiKTsKK30KKworLy8gT3IgYSBjb21wbGV4
IGV4cHJlc3Npb24gdGhhdCByZWZlcmVuY2VzIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zLgorVEVT
VChNeURlYXRoVGVzdCwgQ29tcGxleEV4cHJlc3Npb24pIHsKKyAgY29uc3QgYm9vbCBjID0gQ29u
ZGl0aW9uKCk7CisgIEFTU0VSVF9ERUFUSCgoYyA/IEZ1bmMxKDApIDogb2JqZWN0Mi5NZXRob2Qo
InRlc3QiKSksCisgICAgICAgICAgICAgICAiKEZ1bmMxfE1ldGhvZCkgZmFpbGVkIik7Cit9CisK
Ky8vIERlYXRoIGFzc2VydGlvbnMgY2FuIGJlIHVzZWQgYW55IHdoZXJlIGluIGEgZnVuY3Rpb24u
ICBJbgorLy8gcGFydGljdWxhciwgdGhleSBjYW4gYmUgaW5zaWRlIGEgbG9vcC4KK1RFU1QoTXlE
ZWF0aFRlc3QsIEluc2lkZUxvb3ApIHsKKyAgLy8gVmVyaWZpZXMgdGhhdCBGb28oMCksIEZvbygx
KSwgLi4uLCBhbmQgRm9vKDQpIGFsbCBkaWUuCisgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsr
KSB7CisgICAgRVhQRUNUX0RFQVRIX00oRm9vKGkpLCAiRm9vIGhhcyBcXGQrIGVycm9ycyIsCisg
ICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpNZXNzYWdlKCkgPDwgIndoZXJlIGkgaXMgIiA8
PCBpKTsKKyAgfQorfQorCisvLyBBIGRlYXRoIGFzc2VydGlvbiBjYW4gY29udGFpbiBhIGNvbXBv
dW5kIHN0YXRlbWVudC4KK1RFU1QoTXlEZWF0aFRlc3QsIENvbXBvdW5kU3RhdGVtZW50KSB7Cisg
IC8vIFZlcmlmaWVzIHRoYXQgYXQgbGVhc2Ugb25lIG9mIEJhcigwKSwgQmFyKDEpLCAuLi4sIGFu
ZAorICAvLyBCYXIoNCkgZGllcy4KKyAgQVNTRVJUX0RFQVRIKHsKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IDU7IGkrKykgeworICAgICAgQmFyKGkpOworICAgIH0KKyAgfSwKKyAgIkJhciBoYXMg
XFxkKyBlcnJvcnMiKTsKK30KK2BgYAorCitndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2MgY29udGFp
bnMgbW9yZSBleGFtcGxlcyBpZiB5b3UgYXJlIGludGVyZXN0ZWQuCisKKyMjIEkgaGF2ZSBhIGZp
eHR1cmUgY2xhc3MgYEZvb1Rlc3RgLCBidXQgYFRFU1RfRihGb29UZXN0LCBCYXIpYCBnaXZlcyBt
ZSBlcnJvciBgYCJubyBtYXRjaGluZyBmdW5jdGlvbiBmb3IgY2FsbCB0byBgRm9vVGVzdDo6Rm9v
VGVzdCgpJyJgYC4gV2h5PworCitHb29nbGV0ZXN0IG5lZWRzIHRvIGJlIGFibGUgdG8gY3JlYXRl
IG9iamVjdHMgb2YgeW91ciB0ZXN0IGZpeHR1cmUgY2xhc3MsIHNvIGl0CittdXN0IGhhdmUgYSBk
ZWZhdWx0IGNvbnN0cnVjdG9yLiBOb3JtYWxseSB0aGUgY29tcGlsZXIgd2lsbCBkZWZpbmUgb25l
IGZvciB5b3UuCitIb3dldmVyLCB0aGVyZSBhcmUgY2FzZXMgd2hlcmUgeW91IGhhdmUgdG8gZGVm
aW5lIHlvdXIgb3duOgorCisqICAgSWYgeW91IGV4cGxpY2l0bHkgZGVjbGFyZSBhIG5vbi1kZWZh
dWx0IGNvbnN0cnVjdG9yIGZvciBjbGFzcyBgRm9vVGVzdGAKKyAgICAoYERJU0FMTE9XX0VWSUxf
Q09OU1RSVUNUT1JTKClgIGRvZXMgdGhpcyksIHRoZW4geW91IG5lZWQgdG8gZGVmaW5lIGEKKyAg
ICBkZWZhdWx0IGNvbnN0cnVjdG9yLCBldmVuIGlmIGl0IHdvdWxkIGJlIGVtcHR5LgorKiAgIElm
IGBGb29UZXN0YCBoYXMgYSBjb25zdCBub24tc3RhdGljIGRhdGEgbWVtYmVyLCB0aGVuIHlvdSBo
YXZlIHRvIGRlZmluZSB0aGUKKyAgICBkZWZhdWx0IGNvbnN0cnVjdG9yICphbmQqIGluaXRpYWxp
emUgdGhlIGNvbnN0IG1lbWJlciBpbiB0aGUgaW5pdGlhbGl6ZXIKKyAgICBsaXN0IG9mIHRoZSBj
b25zdHJ1Y3Rvci4gKEVhcmx5IHZlcnNpb25zIG9mIGBnY2NgIGRvZXNuJ3QgZm9yY2UgeW91IHRv
CisgICAgaW5pdGlhbGl6ZSB0aGUgY29uc3QgbWVtYmVyLiBJdCdzIGEgYnVnIHRoYXQgaGFzIGJl
ZW4gZml4ZWQgaW4gYGdjYyA0YC4pCisKKyMjIFdoeSBkb2VzIEFTU0VSVF9ERUFUSCBjb21wbGFp
biBhYm91dCBwcmV2aW91cyB0aHJlYWRzIHRoYXQgd2VyZSBhbHJlYWR5IGpvaW5lZD8KKworV2l0
aCB0aGUgTGludXggcHRocmVhZCBsaWJyYXJ5LCB0aGVyZSBpcyBubyB0dXJuaW5nIGJhY2sgb25j
ZSB5b3UgY3Jvc3MgdGhlIGxpbmUKK2Zyb20gc2luZ2xlIHRocmVhZCB0byBtdWx0aXBsZSB0aHJl
YWRzLiBUaGUgZmlyc3QgdGltZSB5b3UgY3JlYXRlIGEgdGhyZWFkLCBhCittYW5hZ2VyIHRocmVh
ZCBpcyBjcmVhdGVkIGluIGFkZGl0aW9uLCBzbyB5b3UgZ2V0IDMsIG5vdCAyLCB0aHJlYWRzLiBM
YXRlciB3aGVuCit0aGUgdGhyZWFkIHlvdSBjcmVhdGUgam9pbnMgdGhlIG1haW4gdGhyZWFkLCB0
aGUgdGhyZWFkIGNvdW50IGRlY3JlbWVudHMgYnkgMSwKK2J1dCB0aGUgbWFuYWdlciB0aHJlYWQg
d2lsbCBuZXZlciBiZSBraWxsZWQsIHNvIHlvdSBzdGlsbCBoYXZlIDIgdGhyZWFkcywgd2hpY2gK
K21lYW5zIHlvdSBjYW5ub3Qgc2FmZWx5IHJ1biBhIGRlYXRoIHRlc3QuCisKK1RoZSBuZXcgTlBU
TCB0aHJlYWQgbGlicmFyeSBkb2Vzbid0IHN1ZmZlciBmcm9tIHRoaXMgcHJvYmxlbSwgYXMgaXQg
ZG9lc24ndAorY3JlYXRlIGEgbWFuYWdlciB0aHJlYWQuIEhvd2V2ZXIsIGlmIHlvdSBkb24ndCBj
b250cm9sIHdoaWNoIG1hY2hpbmUgeW91ciB0ZXN0CitydW5zIG9uLCB5b3Ugc2hvdWxkbid0IGRl
cGVuZCBvbiB0aGlzLgorCisjIyBXaHkgZG9lcyBnb29nbGV0ZXN0IHJlcXVpcmUgdGhlIGVudGly
ZSB0ZXN0IGNhc2UsIGluc3RlYWQgb2YgaW5kaXZpZHVhbCB0ZXN0cywgdG8gYmUgbmFtZWQgKkRl
YXRoVGVzdCB3aGVuIGl0IHVzZXMgQVNTRVJUX0RFQVRIPworCitnb29nbGV0ZXN0IGRvZXMgbm90
IGludGVybGVhdmUgdGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcy4gVGhhdCBpcywgaXQg
cnVucworYWxsIHRlc3RzIGluIG9uZSB0ZXN0IGNhc2UgZmlyc3QsIGFuZCB0aGVuIHJ1bnMgYWxs
IHRlc3RzIGluIHRoZSBuZXh0IHRlc3QgY2FzZSwKK2FuZCBzbyBvbi4gZ29vZ2xldGVzdCBkb2Vz
IHRoaXMgYmVjYXVzZSBpdCBuZWVkcyB0byBzZXQgdXAgYSB0ZXN0IGNhc2UgYmVmb3JlCit0aGUg
Zmlyc3QgdGVzdCBpbiBpdCBpcyBydW4sIGFuZCB0ZWFyIGl0IGRvd24gYWZ0ZXJ3b3Jkcy4gU3Bs
aXR0aW5nIHVwIHRoZSB0ZXN0CitjYXNlIHdvdWxkIHJlcXVpcmUgbXVsdGlwbGUgc2V0LXVwIGFu
ZCB0ZWFyLWRvd24gcHJvY2Vzc2VzLCB3aGljaCBpcyBpbmVmZmljaWVudAorYW5kIG1ha2VzIHRo
ZSBzZW1hbnRpY3MgdW5jbGVhbi4KKworSWYgd2Ugd2VyZSB0byBkZXRlcm1pbmUgdGhlIG9yZGVy
IG9mIHRlc3RzIGJhc2VkIG9uIHRlc3QgbmFtZSBpbnN0ZWFkIG9mIHRlc3QKK2Nhc2UgbmFtZSwg
dGhlbiB3ZSB3b3VsZCBoYXZlIGEgcHJvYmxlbSB3aXRoIHRoZSBmb2xsb3dpbmcgc2l0dWF0aW9u
OgorCitgYGBjKysKK1RFU1RfRihGb29UZXN0LCBBYmNEZWF0aFRlc3QpIHsgLi4uIH0KK1RFU1Rf
RihGb29UZXN0LCBVdncpIHsgLi4uIH0KKworVEVTVF9GKEJhclRlc3QsIERlZkRlYXRoVGVzdCkg
eyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIFh5eikgeyAuLi4gfQorYGBgCisKK1NpbmNlIGBGb29U
ZXN0LkFiY0RlYXRoVGVzdGAgbmVlZHMgdG8gcnVuIGJlZm9yZSBgQmFyVGVzdC5YeXpgLCBhbmQg
d2UgZG9uJ3QKK2ludGVybGVhdmUgdGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcywgd2Ug
bmVlZCB0byBydW4gYWxsIHRlc3RzIGluIHRoZQorYEZvb1Rlc3RgIGNhc2UgYmVmb3JlIHJ1bm5p
bmcgYW55IHRlc3QgaW4gdGhlIGBCYXJUZXN0YCBjYXNlLiBUaGlzIGNvbnRyYWRpY3RzCit3aXRo
IHRoZSByZXF1aXJlbWVudCB0byBydW4gYEJhclRlc3QuRGVmRGVhdGhUZXN0YCBiZWZvcmUgYEZv
b1Rlc3QuVXZ3YC4KKworIyMgQnV0IEkgZG9uJ3QgbGlrZSBjYWxsaW5nIG15IGVudGlyZSB0ZXN0
IGNhc2UgXCpEZWF0aFRlc3Qgd2hlbiBpdCBjb250YWlucyBib3RoIGRlYXRoIHRlc3RzIGFuZCBu
b24tZGVhdGggdGVzdHMuIFdoYXQgZG8gSSBkbz8KKworWW91IGRvbid0IGhhdmUgdG8sIGJ1dCBp
ZiB5b3UgbGlrZSwgeW91IG1heSBzcGxpdCB1cCB0aGUgdGVzdCBjYXNlIGludG8KK2BGb29UZXN0
YCBhbmQgYEZvb0RlYXRoVGVzdGAsIHdoZXJlIHRoZSBuYW1lcyBtYWtlIGl0IGNsZWFyIHRoYXQg
dGhleSBhcmUKK3JlbGF0ZWQ6CisKK2BgYGMrKworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgeyAuLi4gfTsKKworVEVTVF9GKEZvb1Rlc3QsIEFiYykgeyAuLi4gfQorVEVT
VF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQorCit1c2luZyBGb29EZWF0aFRlc3QgPSBGb29UZXN0
OworCitURVNUX0YoRm9vRGVhdGhUZXN0LCBVdncpIHsgLi4uIEVYUEVDVF9ERUFUSCguLi4pIC4u
LiB9CitURVNUX0YoRm9vRGVhdGhUZXN0LCBYeXopIHsgLi4uIEFTU0VSVF9ERUFUSCguLi4pIC4u
LiB9CitgYGAKKworIyMgZ29vZ2xldGVzdCBwcmludHMgdGhlIExPRyBtZXNzYWdlcyBpbiBhIGRl
YXRoIHRlc3QncyBjaGlsZCBwcm9jZXNzIG9ubHkgd2hlbiB0aGUgdGVzdCBmYWlscy4gSG93IGNh
biBJIHNlZSB0aGUgTE9HIG1lc3NhZ2VzIHdoZW4gdGhlIGRlYXRoIHRlc3Qgc3VjY2VlZHM/CisK
K1ByaW50aW5nIHRoZSBMT0cgbWVzc2FnZXMgZ2VuZXJhdGVkIGJ5IHRoZSBzdGF0ZW1lbnQgaW5z
aWRlIGBFWFBFQ1RfREVBVEgoKWAKK21ha2VzIGl0IGhhcmRlciB0byBzZWFyY2ggZm9yIHJlYWwg
cHJvYmxlbXMgaW4gdGhlIHBhcmVudCdzIGxvZy4gVGhlcmVmb3JlLAorZ29vZ2xldGVzdCBvbmx5
IHByaW50cyB0aGVtIHdoZW4gdGhlIGRlYXRoIHRlc3QgaGFzIGZhaWxlZC4KKworSWYgeW91IHJl
YWxseSBuZWVkIHRvIHNlZSBzdWNoIExPRyBtZXNzYWdlcywgYSB3b3JrYXJvdW5kIGlzIHRvIHRl
bXBvcmFyaWx5CiticmVhayB0aGUgZGVhdGggdGVzdCAoZS5nLiBieSBjaGFuZ2luZyB0aGUgcmVn
ZXggcGF0dGVybiBpdCBpcyBleHBlY3RlZCB0bworbWF0Y2gpLiBBZG1pdHRlZGx5LCB0aGlzIGlz
IGEgaGFjay4gV2UnbGwgY29uc2lkZXIgYSBtb3JlIHBlcm1hbmVudCBzb2x1dGlvbgorYWZ0ZXIg
dGhlIGZvcmstYW5kLWV4ZWMtc3R5bGUgZGVhdGggdGVzdHMgYXJlIGltcGxlbWVudGVkLgorCisj
IyBUaGUgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJubyBtYXRjaCBmb3IgJ29wZXJhdG9yPDwn
IiB3aGVuIEkgdXNlIGFuIGFzc2VydGlvbi4gV2hhdCBnaXZlcz8KKworSWYgeW91IHVzZSBhIHVz
ZXItZGVmaW5lZCB0eXBlIGBGb29UeXBlYCBpbiBhbiBhc3NlcnRpb24sIHlvdSBtdXN0IG1ha2Ug
c3VyZQordGhlcmUgaXMgYW4gYHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0m
LCBjb25zdCBGb29UeXBlJilgIGZ1bmN0aW9uCitkZWZpbmVkIHN1Y2ggdGhhdCB3ZSBjYW4gcHJp
bnQgYSB2YWx1ZSBvZiBgRm9vVHlwZWAuCisKK0luIGFkZGl0aW9uLCBpZiBgRm9vVHlwZWAgaXMg
ZGVjbGFyZWQgaW4gYSBuYW1lIHNwYWNlLCB0aGUgYDw8YCBvcGVyYXRvciBhbHNvCituZWVkcyB0
byBiZSBkZWZpbmVkIGluIHRoZSAqc2FtZSogbmFtZSBzcGFjZS4gU2VlIGdvL3RvdHcvNDkgZm9y
IGRldGFpbHMuCisKKyMjIEhvdyBkbyBJIHN1cHByZXNzIHRoZSBtZW1vcnkgbGVhayBtZXNzYWdl
cyBvbiBXaW5kb3dzPworCitTaW5jZSB0aGUgc3RhdGljYWxseSBpbml0aWFsaXplZCBnb29nbGV0
ZXN0IHNpbmdsZXRvbiByZXF1aXJlcyBhbGxvY2F0aW9ucyBvbgordGhlIGhlYXAsIHRoZSBWaXN1
YWwgQysrIG1lbW9yeSBsZWFrIGRldGVjdG9yIHdpbGwgcmVwb3J0IG1lbW9yeSBsZWFrcyBhdCB0
aGUKK2VuZCBvZiB0aGUgcHJvZ3JhbSBydW4uIFRoZSBlYXNpZXN0IHdheSB0byBhdm9pZCB0aGlz
IGlzIHRvIHVzZSB0aGUKK2BfQ3J0TWVtQ2hlY2twb2ludGAgYW5kIGBfQ3J0TWVtRHVtcEFsbE9i
amVjdHNTaW5jZWAgY2FsbHMgdG8gbm90IHJlcG9ydCBhbnkKK3N0YXRpY2FsbHkgaW5pdGlhbGl6
ZWQgaGVhcCBvYmplY3RzLiBTZWUgTVNETiBmb3IgbW9yZSBkZXRhaWxzIGFuZCBhZGRpdGlvbmFs
CitoZWFwIGNoZWNrL2RlYnVnIHJvdXRpbmVzLgorCisKKyMjIEhvdyBjYW4gbXkgY29kZSBkZXRl
Y3QgaWYgaXQgaXMgcnVubmluZyBpbiBhIHRlc3Q/CisKK0lmIHlvdSB3cml0ZSBjb2RlIHRoYXQg
c25pZmZzIHdoZXRoZXIgaXQncyBydW5uaW5nIGluIGEgdGVzdCBhbmQgZG9lcyBkaWZmZXJlbnQK
K3RoaW5ncyBhY2NvcmRpbmdseSwgeW91IGFyZSBsZWFraW5nIHRlc3Qtb25seSBsb2dpYyBpbnRv
IHByb2R1Y3Rpb24gY29kZSBhbmQKK3RoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIGVuc3VyZSB0aGF0
IHRoZSB0ZXN0LW9ubHkgY29kZSBwYXRocyBhcmVuJ3QgcnVuIGJ5CittaXN0YWtlIGluIHByb2R1
Y3Rpb24uIFN1Y2ggY2xldmVybmVzcyBhbHNvIGxlYWRzIHRvCitbSGVpc2VuYnVnc10oaHR0cHM6
Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVpc2VuYnVnKS4gVGhlcmVmb3JlIHdlIHN0cm9uZ2x5
CithZHZpc2UgYWdhaW5zdCB0aGUgcHJhY3RpY2UsIGFuZCBnb29nbGV0ZXN0IGRvZXNuJ3QgcHJv
dmlkZSBhIHdheSB0byBkbyBpdC4KKworSW4gZ2VuZXJhbCwgdGhlIHJlY29tbWVuZGVkIHdheSB0
byBjYXVzZSB0aGUgY29kZSB0byBiZWhhdmUgZGlmZmVyZW50bHkgdW5kZXIKK3Rlc3QgaXMgW0Rl
cGVuZGVuY3kgSW5qZWN0aW9uXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZXBlbmRl
bmN5X2luamVjdGlvbikuIFlvdSBjYW4gaW5qZWN0CitkaWZmZXJlbnQgZnVuY3Rpb25hbGl0eSBm
cm9tIHRoZSB0ZXN0IGFuZCBmcm9tIHRoZSBwcm9kdWN0aW9uIGNvZGUuIFNpbmNlIHlvdXIKK3By
b2R1Y3Rpb24gY29kZSBkb2Vzbid0IGxpbmsgaW4gdGhlIGZvci10ZXN0IGxvZ2ljIGF0IGFsbCAo
dGhlCitbYHRlc3Rvbmx5YF0oaHR0cHM6Ly9kb2NzLmJhemVsLmJ1aWxkL3ZlcnNpb25zL21hc3Rl
ci9iZS9jb21tb24tZGVmaW5pdGlvbnMuaHRtbCNjb21tb24udGVzdG9ubHkpCithdHRyaWJ1dGUg
Zm9yIEJVSUxEIHRhcmdldHMgaGVscHMgdG8gZW5zdXJlIHRoYXQpLCB0aGVyZSBpcyBubyBkYW5n
ZXIgaW4KK2FjY2lkZW50YWxseSBydW5uaW5nIGl0LgorCitIb3dldmVyLCBpZiB5b3UgKnJlYWxs
eSosICpyZWFsbHkqLCAqcmVhbGx5KiBoYXZlIG5vIGNob2ljZSwgYW5kIGlmIHlvdSBmb2xsb3cK
K3RoZSBydWxlIG9mIGVuZGluZyB5b3VyIHRlc3QgcHJvZ3JhbSBuYW1lcyB3aXRoIGBfdGVzdGAs
IHlvdSBjYW4gdXNlIHRoZQorKmhvcnJpYmxlKiBoYWNrIG9mIHNuaWZmaW5nIHlvdXIgZXhlY3V0
YWJsZSBuYW1lIChgYXJndlswXWAgaW4gYG1haW4oKWApIHRvIGtub3cKK3doZXRoZXIgdGhlIGNv
ZGUgaXMgdW5kZXIgdGVzdC4KKworCisjIyBIb3cgZG8gSSB0ZW1wb3JhcmlseSBkaXNhYmxlIGEg
dGVzdD8KKworSWYgeW91IGhhdmUgYSBicm9rZW4gdGVzdCB0aGF0IHlvdSBjYW5ub3QgZml4IHJp
Z2h0IGF3YXksIHlvdSBjYW4gYWRkIHRoZQorRElTQUJMRURfIHByZWZpeCB0byBpdHMgbmFtZS4g
VGhpcyB3aWxsIGV4Y2x1ZGUgaXQgZnJvbSBleGVjdXRpb24uIFRoaXMgaXMKK2JldHRlciB0aGFu
IGNvbW1lbnRpbmcgb3V0IHRoZSBjb2RlIG9yIHVzaW5nICNpZiAwLCBhcyBkaXNhYmxlZCB0ZXN0
cyBhcmUgc3RpbGwKK2NvbXBpbGVkIChhbmQgdGh1cyB3b24ndCByb3QpLgorCitUbyBpbmNsdWRl
IGRpc2FibGVkIHRlc3RzIGluIHRlc3QgZXhlY3V0aW9uLCBqdXN0IGludm9rZSB0aGUgdGVzdCBw
cm9ncmFtIHdpdGgKK3RoZSAtLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIGZsYWcuCisK
KyMjIElzIGl0IE9LIGlmIEkgaGF2ZSB0d28gc2VwYXJhdGUgYFRFU1QoRm9vLCBCYXIpYCB0ZXN0
IG1ldGhvZHMgZGVmaW5lZCBpbiBkaWZmZXJlbnQgbmFtZXNwYWNlcz8KKworWWVzLgorCitUaGUg
cnVsZSBpcyAqKmFsbCB0ZXN0IG1ldGhvZHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNl
IHRoZSBzYW1lIGZpeHR1cmUKK2NsYXNzLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5n
IGlzICoqYWxsb3dlZCoqIGJlY2F1c2UgYm90aCB0ZXN0cyB1c2UgdGhlCitzYW1lIGZpeHR1cmUg
Y2xhc3MgKGA6OnRlc3Rpbmc6OlRlc3RgKS4KKworYGBgYysrCituYW1lc3BhY2UgZm9vIHsKK1RF
U1QoQ29vbFRlc3QsIERvU29tZXRoaW5nKSB7CisgIFNVQ0NFRUQoKTsKK30KK30gIC8vIG5hbWVz
cGFjZSBmb28KKworbmFtZXNwYWNlIGJhciB7CitURVNUKENvb2xUZXN0LCBEb1NvbWV0aGluZykg
eworICBTVUNDRUVEKCk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgYmFyCitgYGAKKworSG93ZXZlciwg
dGhlIGZvbGxvd2luZyBjb2RlIGlzICoqbm90IGFsbG93ZWQqKiBhbmQgd2lsbCBwcm9kdWNlIGEg
cnVudGltZSBlcnJvcgorZnJvbSBnb29nbGV0ZXN0IGJlY2F1c2UgdGhlIHRlc3QgbWV0aG9kcyBh
cmUgdXNpbmcgZGlmZmVyZW50IHRlc3QgZml4dHVyZQorY2xhc3NlcyB3aXRoIHRoZSBzYW1lIHRl
c3QgY2FzZSBuYW1lLgorCitgYGBjKysKK25hbWVzcGFjZSBmb28geworY2xhc3MgQ29vbFRlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OyAgLy8gRml4dHVyZSBmb286OkNvb2xUZXN0CitU
RVNUX0YoQ29vbFRlc3QsIERvU29tZXRoaW5nKSB7CisgIFNVQ0NFRUQoKTsKK30KK30gIC8vIG5h
bWVzcGFjZSBmb28KKworbmFtZXNwYWNlIGJhciB7CitjbGFzcyBDb29sVGVzdCA6IHB1YmxpYyA6
OnRlc3Rpbmc6OlRlc3Qge307ICAvLyBGaXh0dXJlOiBiYXI6OkNvb2xUZXN0CitURVNUX0YoQ29v
bFRlc3QsIERvU29tZXRoaW5nKSB7CisgIFNVQ0NFRUQoKTsKK30KK30gIC8vIG5hbWVzcGFjZSBi
YXIKK2BgYApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9wcmltZXIu
bWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL3ByaW1lci5tZApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
YThlYThkNzE3YjgzNWJjYmQyM2Y4NGM5ZWEwNWYxNmE4NzhhNWQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9wcmltZXIubWQKQEAgLTAsMCArMSw1Njkg
QEAKKyMgR29vZ2xldGVzdCBQcmltZXIKKworCisjIyBJbnRyb2R1Y3Rpb246IFdoeSBnb29nbGV0
ZXN0PworCisqZ29vZ2xldGVzdCogaGVscHMgeW91IHdyaXRlIGJldHRlciBDKysgdGVzdHMuCisK
K2dvb2dsZXRlc3QgaXMgYSB0ZXN0aW5nIGZyYW1ld29yayBkZXZlbG9wZWQgYnkgdGhlIFRlc3Rp
bmcKK1RlY2hub2xvZ3kgdGVhbSB3aXRoIEdvb2dsZSdzIHNwZWNpZmljCityZXF1aXJlbWVudHMg
YW5kIGNvbnN0cmFpbnRzIGluIG1pbmQuIE5vIG1hdHRlciB3aGV0aGVyIHlvdSB3b3JrIG9uIExp
bnV4LAorV2luZG93cywgb3IgYSBNYWMsIGlmIHlvdSB3cml0ZSBDKysgY29kZSwgZ29vZ2xldGVz
dCBjYW4gaGVscCB5b3UuIEFuZCBpdAorc3VwcG9ydHMgKmFueSoga2luZCBvZiB0ZXN0cywgbm90
IGp1c3QgdW5pdCB0ZXN0cy4KKworU28gd2hhdCBtYWtlcyBhIGdvb2QgdGVzdCwgYW5kIGhvdyBk
b2VzIGdvb2dsZXRlc3QgZml0IGluPyBXZSBiZWxpZXZlOgorCisxLiAgVGVzdHMgc2hvdWxkIGJl
ICppbmRlcGVuZGVudCogYW5kICpyZXBlYXRhYmxlKi4gSXQncyBhIHBhaW4gdG8gZGVidWcgYSB0
ZXN0CisgICAgdGhhdCBzdWNjZWVkcyBvciBmYWlscyBhcyBhIHJlc3VsdCBvZiBvdGhlciB0ZXN0
cy4gZ29vZ2xldGVzdCBpc29sYXRlcyB0aGUKKyAgICB0ZXN0cyBieSBydW5uaW5nIGVhY2ggb2Yg
dGhlbSBvbiBhIGRpZmZlcmVudCBvYmplY3QuIFdoZW4gYSB0ZXN0IGZhaWxzLAorICAgIGdvb2ds
ZXRlc3QgYWxsb3dzIHlvdSB0byBydW4gaXQgaW4gaXNvbGF0aW9uIGZvciBxdWljayBkZWJ1Z2dp
bmcuCisxLiAgVGVzdHMgc2hvdWxkIGJlIHdlbGwgKm9yZ2FuaXplZCogYW5kIHJlZmxlY3QgdGhl
IHN0cnVjdHVyZSBvZiB0aGUgdGVzdGVkCisgICAgY29kZS4gZ29vZ2xldGVzdCBncm91cHMgcmVs
YXRlZCB0ZXN0cyBpbnRvIHRlc3QgY2FzZXMgdGhhdCBjYW4gc2hhcmUgZGF0YQorICAgIGFuZCBz
dWJyb3V0aW5lcy4gVGhpcyBjb21tb24gcGF0dGVybiBpcyBlYXN5IHRvIHJlY29nbml6ZSBhbmQg
bWFrZXMgdGVzdHMKKyAgICBlYXN5IHRvIG1haW50YWluLiBTdWNoIGNvbnNpc3RlbmN5IGlzIGVz
cGVjaWFsbHkgaGVscGZ1bCB3aGVuIHBlb3BsZSBzd2l0Y2gKKyAgICBwcm9qZWN0cyBhbmQgc3Rh
cnQgdG8gd29yayBvbiBhIG5ldyBjb2RlIGJhc2UuCisxLiAgVGVzdHMgc2hvdWxkIGJlICpwb3J0
YWJsZSogYW5kICpyZXVzYWJsZSouIEdvb2dsZSBoYXMgYSBsb3Qgb2YgY29kZSB0aGF0IGlzCisg
ICAgcGxhdGZvcm0tbmV1dHJhbCwgaXRzIHRlc3RzIHNob3VsZCBhbHNvIGJlIHBsYXRmb3JtLW5l
dXRyYWwuIGdvb2dsZXRlc3QKKyAgICB3b3JrcyBvbiBkaWZmZXJlbnQgT1Nlcywgd2l0aCBkaWZm
ZXJlbnQgY29tcGlsZXJzIChnY2MsIGljYywgYW5kIE1TVkMpLCB3aXRoCisgICAgb3Igd2l0aG91
dCBleGNlcHRpb25zLCBzbyBnb29nbGV0ZXN0IHRlc3RzIGNhbiBlYXNpbHkgd29yayB3aXRoIGEg
dmFyaWV0eSBvZgorICAgIGNvbmZpZ3VyYXRpb25zLgorMS4gIFdoZW4gdGVzdHMgZmFpbCwgdGhl
eSBzaG91bGQgcHJvdmlkZSBhcyBtdWNoICppbmZvcm1hdGlvbiogYWJvdXQgdGhlIHByb2JsZW0K
KyAgICBhcyBwb3NzaWJsZS4gZ29vZ2xldGVzdCBkb2Vzbid0IHN0b3AgYXQgdGhlIGZpcnN0IHRl
c3QgZmFpbHVyZS4gSW5zdGVhZCwgaXQKKyAgICBvbmx5IHN0b3BzIHRoZSBjdXJyZW50IHRlc3Qg
YW5kIGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0LiBZb3UgY2FuIGFsc28gc2V0IHVwCisgICAgdGVz
dHMgdGhhdCByZXBvcnQgbm9uLWZhdGFsIGZhaWx1cmVzIGFmdGVyIHdoaWNoIHRoZSBjdXJyZW50
IHRlc3QgY29udGludWVzLgorICAgIFRodXMsIHlvdSBjYW4gZGV0ZWN0IGFuZCBmaXggbXVsdGlw
bGUgYnVncyBpbiBhIHNpbmdsZSBydW4tZWRpdC1jb21waWxlCisgICAgY3ljbGUuCisxLiAgVGhl
IHRlc3RpbmcgZnJhbWV3b3JrIHNob3VsZCBsaWJlcmF0ZSB0ZXN0IHdyaXRlcnMgZnJvbSBob3Vz
ZWtlZXBpbmcgY2hvcmVzCisgICAgYW5kIGxldCB0aGVtIGZvY3VzIG9uIHRoZSB0ZXN0ICpjb250
ZW50Ki4gZ29vZ2xldGVzdCBhdXRvbWF0aWNhbGx5IGtlZXBzCisgICAgdHJhY2sgb2YgYWxsIHRl
c3RzIGRlZmluZWQsIGFuZCBkb2Vzbid0IHJlcXVpcmUgdGhlIHVzZXIgdG8gZW51bWVyYXRlIHRo
ZW0KKyAgICBpbiBvcmRlciB0byBydW4gdGhlbS4KKzEuICBUZXN0cyBzaG91bGQgYmUgKmZhc3Qq
LiBXaXRoIGdvb2dsZXRlc3QsIHlvdSBjYW4gcmV1c2Ugc2hhcmVkIHJlc291cmNlcworICAgIGFj
cm9zcyB0ZXN0cyBhbmQgcGF5IGZvciB0aGUgc2V0LXVwL3RlYXItZG93biBvbmx5IG9uY2UsIHdp
dGhvdXQgbWFraW5nCisgICAgdGVzdHMgZGVwZW5kIG9uIGVhY2ggb3RoZXIuCisKK1NpbmNlIGdv
b2dsZXRlc3QgaXMgYmFzZWQgb24gdGhlIHBvcHVsYXIgeFVuaXQgYXJjaGl0ZWN0dXJlLCB5b3Un
bGwgZmVlbCByaWdodAorYXQgaG9tZSBpZiB5b3UndmUgdXNlZCBKVW5pdCBvciBQeVVuaXQgYmVm
b3JlLiBJZiBub3QsIGl0IHdpbGwgdGFrZSB5b3UgYWJvdXQgMTAKK21pbnV0ZXMgdG8gbGVhcm4g
dGhlIGJhc2ljcyBhbmQgZ2V0IHN0YXJ0ZWQuIFNvIGxldCdzIGdvIQorCisjIyBCZXdhcmUgb2Yg
dGhlIG5vbWVuY2xhdHVyZQorCitfTm90ZTpfIFRoZXJlIG1pZ2h0IGJlIHNvbWUgY29uZnVzaW9u
IG9mIGlkZWEgZHVlIHRvIGRpZmZlcmVudAorZGVmaW5pdGlvbnMgb2YgdGhlIHRlcm1zIF9UZXN0
XywgX1Rlc3QgQ2FzZV8gYW5kIF9UZXN0IFN1aXRlXywgc28gYmV3YXJlCitvZiBtaXN1bmRlcnN0
YW5kaW5nIHRoZXNlLgorCitIaXN0b3JpY2FsbHksIGdvb2dsZXRlc3Qgc3RhcnRlZCB0byB1c2Ug
dGhlIHRlcm0gX1Rlc3QgQ2FzZV8gZm9yIGdyb3VwaW5nCityZWxhdGVkIHRlc3RzLCB3aGVyZWFz
IGN1cnJlbnQgcHVibGljYXRpb25zIGluY2x1ZGluZyB0aGUgSW50ZXJuYXRpb25hbCBTb2Z0d2Fy
ZQorVGVzdGluZyBRdWFsaWZpY2F0aW9ucyBCb2FyZCAoW0lTVFFCXShodHRwOi8vd3d3LmlzdHFi
Lm9yZy8pKSBhbmQgdmFyaW91cwordGV4dGJvb2tzIG9uIFNvZnR3YXJlIFF1YWxpdHkgdXNlIHRo
ZSB0ZXJtIF9bVGVzdAorU3VpdGVdKGh0dHA6Ly9nbG9zc2FyeS5pc3RxYi5vcmcvc2VhcmNoL3Rl
c3QlMjBzdWl0ZSlfIGZvciB0aGlzLgorCitUaGUgcmVsYXRlZCB0ZXJtIF9UZXN0XywgYXMgaXQg
aXMgdXNlZCBpbiB0aGUgZ29vZ2xldGVzdCwgaXMgY29ycmVzcG9uZGluZyB0bwordGhlIHRlcm0g
X1tUZXN0IENhc2VdKGh0dHA6Ly9nbG9zc2FyeS5pc3RxYi5vcmcvc2VhcmNoL3Rlc3QlMjBjYXNl
KV8gb2YgSVNUUUIKK2FuZCBvdGhlcnMuCisKK1RoZSB0ZXJtIF9UZXN0XyBpcyBjb21tb25seSBv
ZiBicm9hZCBlbm91Z2ggc2Vuc2UsIGluY2x1ZGluZyBJU1RRQidzCitkZWZpbml0aW9uIG9mIF9U
ZXN0IENhc2VfLCBzbyBpdCdzIG5vdCBtdWNoIG9mIGEgcHJvYmxlbSBoZXJlLiBCdXQgdGhlCit0
ZXJtIF9UZXN0IENhc2VfIGFzIHVzZWQgaW4gR29vZ2xlIFRlc3QgaXMgb2YgY29udHJhZGljdG9y
eSBzZW5zZSBhbmQgdGh1cyBjb25mdXNpbmcuCisKK1VuZm9ydHVuYXRlbHkgcmVwbGFjaW5nIHRo
ZSB0ZXJtIF9UZXN0IENhc2VfIGJ5IF9UZXN0IFN1aXRlXyB0aHJvdWdob3V0IHRoZQorZ29vZ2xl
dGVzdCBpcyBub3QgZWFzeSB3aXRob3V0IGJyZWFraW5nIGRlcGVuZGVudCBwcm9qZWN0cywgYXMg
YFRlc3RDYXNlYCBpcworcGFydCBvZiB0aGUgcHVibGljIEFQSSBhdCB2YXJpb3VzIHBsYWNlcy4K
KworU28gZm9yIHRoZSB0aW1lIGJlaW5nLCBwbGVhc2UgYmUgYXdhcmUgb2YgdGhlIGRpZmZlcmVu
dCBkZWZpbml0aW9ucyBvZgordGhlIHRlcm1zOgorCitNZWFuaW5nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCBnb29nbGV0ZXN0IFRlcm0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
W0lTVFFCXShodHRwOi8vd3d3LmlzdHFiLm9yZy8pIFRlcm0KKzotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRXhlcmNpc2UgYSBwYXJ0
aWN1bGFyIHByb2dyYW0gcGF0aCB3aXRoIHNwZWNpZmljIGlucHV0IHZhbHVlcyBhbmQgdmVyaWZ5
IHRoZSByZXN1bHRzIHwgW1RFU1QoKV0oI3NpbXBsZS10ZXN0cykgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IFtUZXN0IENhc2VdKGh0dHA6Ly9nbG9zc2FyeS5pc3RxYi5vcmcvc2VhcmNoL3Rl
c3QlMjBjYXNlKQorQSBzZXQgb2Ygc2V2ZXJhbCB0ZXN0cyByZWxhdGVkIHRvIG9uZSBjb21wb25l
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW1Rlc3RDYXNlXSgjYmFz
aWMtY29uY2VwdHMpIHwgW1Rlc3RTdWl0ZV0oaHR0cDovL2dsb3NzYXJ5LmlzdHFiLm9yZy9zZWFy
Y2gvdGVzdCUyMHN1aXRlKQorCisjIyBCYXNpYyBDb25jZXB0cworCitXaGVuIHVzaW5nIGdvb2ds
ZXRlc3QsIHlvdSBzdGFydCBieSB3cml0aW5nICphc3NlcnRpb25zKiwgd2hpY2ggYXJlIHN0YXRl
bWVudHMKK3RoYXQgY2hlY2sgd2hldGhlciBhIGNvbmRpdGlvbiBpcyB0cnVlLiBBbiBhc3NlcnRp
b24ncyByZXN1bHQgY2FuIGJlICpzdWNjZXNzKiwKKypub25mYXRhbCBmYWlsdXJlKiwgb3IgKmZh
dGFsIGZhaWx1cmUqLiBJZiBhIGZhdGFsIGZhaWx1cmUgb2NjdXJzLCBpdCBhYm9ydHMgdGhlCitj
dXJyZW50IGZ1bmN0aW9uOyBvdGhlcndpc2UgdGhlIHByb2dyYW0gY29udGludWVzIG5vcm1hbGx5
LgorCisqVGVzdHMqIHVzZSBhc3NlcnRpb25zIHRvIHZlcmlmeSB0aGUgdGVzdGVkIGNvZGUncyBi
ZWhhdmlvci4gSWYgYSB0ZXN0IGNyYXNoZXMKK29yIGhhcyBhIGZhaWxlZCBhc3NlcnRpb24sIHRo
ZW4gaXQgKmZhaWxzKjsgb3RoZXJ3aXNlIGl0ICpzdWNjZWVkcyouCisKK0EgKnRlc3QgY2FzZSog
Y29udGFpbnMgb25lIG9yIG1hbnkgdGVzdHMuIFlvdSBzaG91bGQgZ3JvdXAgeW91ciB0ZXN0cyBp
bnRvIHRlc3QKK2Nhc2VzIHRoYXQgcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mIHRoZSB0ZXN0ZWQg
Y29kZS4gV2hlbiBtdWx0aXBsZSB0ZXN0cyBpbiBhCit0ZXN0IGNhc2UgbmVlZCB0byBzaGFyZSBj
b21tb24gb2JqZWN0cyBhbmQgc3Vicm91dGluZXMsIHlvdSBjYW4gcHV0IHRoZW0gaW50byBhCisq
dGVzdCBmaXh0dXJlKiBjbGFzcy4KKworQSAqdGVzdCBwcm9ncmFtKiBjYW4gY29udGFpbiBtdWx0
aXBsZSB0ZXN0IGNhc2VzLgorCitXZSdsbCBub3cgZXhwbGFpbiBob3cgdG8gd3JpdGUgYSB0ZXN0
IHByb2dyYW0sIHN0YXJ0aW5nIGF0IHRoZSBpbmRpdmlkdWFsCithc3NlcnRpb24gbGV2ZWwgYW5k
IGJ1aWxkaW5nIHVwIHRvIHRlc3RzIGFuZCB0ZXN0IGNhc2VzLgorCisjIyBBc3NlcnRpb25zCisK
K2dvb2dsZXRlc3QgYXNzZXJ0aW9ucyBhcmUgbWFjcm9zIHRoYXQgcmVzZW1ibGUgZnVuY3Rpb24g
Y2FsbHMuIFlvdSB0ZXN0IGEgY2xhc3MKK29yIGZ1bmN0aW9uIGJ5IG1ha2luZyBhc3NlcnRpb25z
IGFib3V0IGl0cyBiZWhhdmlvci4gV2hlbiBhbiBhc3NlcnRpb24gZmFpbHMsCitnb29nbGV0ZXN0
IHByaW50cyB0aGUgYXNzZXJ0aW9uJ3Mgc291cmNlIGZpbGUgYW5kIGxpbmUgbnVtYmVyIGxvY2F0
aW9uLCBhbG9uZword2l0aCBhIGZhaWx1cmUgbWVzc2FnZS4gWW91IG1heSBhbHNvIHN1cHBseSBh
IGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2Ugd2hpY2ggd2lsbAorYmUgYXBwZW5kZWQgdG8gZ29vZ2xl
dGVzdCdzIG1lc3NhZ2UuCisKK1RoZSBhc3NlcnRpb25zIGNvbWUgaW4gcGFpcnMgdGhhdCB0ZXN0
IHRoZSBzYW1lIHRoaW5nIGJ1dCBoYXZlIGRpZmZlcmVudCBlZmZlY3RzCitvbiB0aGUgY3VycmVu
dCBmdW5jdGlvbi4gYEFTU0VSVF8qYCB2ZXJzaW9ucyBnZW5lcmF0ZSBmYXRhbCBmYWlsdXJlcyB3
aGVuIHRoZXkKK2ZhaWwsIGFuZCAqKmFib3J0IHRoZSBjdXJyZW50IGZ1bmN0aW9uKiouIGBFWFBF
Q1RfKmAgdmVyc2lvbnMgZ2VuZXJhdGUgbm9uZmF0YWwKK2ZhaWx1cmVzLCB3aGljaCBkb24ndCBh
Ym9ydCB0aGUgY3VycmVudCBmdW5jdGlvbi4gVXN1YWxseSBgRVhQRUNUXypgIGFyZQorcHJlZmVy
cmVkLCBhcyB0aGV5IGFsbG93IG1vcmUgdGhhbiBvbmUgZmFpbHVyZSB0byBiZSByZXBvcnRlZCBp
biBhIHRlc3QuCitIb3dldmVyLCB5b3Ugc2hvdWxkIHVzZSBgQVNTRVJUXypgIGlmIGl0IGRvZXNu
J3QgbWFrZSBzZW5zZSB0byBjb250aW51ZSB3aGVuIHRoZQorYXNzZXJ0aW9uIGluIHF1ZXN0aW9u
IGZhaWxzLgorCitTaW5jZSBhIGZhaWxlZCBgQVNTRVJUXypgIHJldHVybnMgZnJvbSB0aGUgY3Vy
cmVudCBmdW5jdGlvbiBpbW1lZGlhdGVseSwKK3Bvc3NpYmx5IHNraXBwaW5nIGNsZWFuLXVwIGNv
ZGUgdGhhdCBjb21lcyBhZnRlciBpdCwgaXQgbWF5IGNhdXNlIGEgc3BhY2UgbGVhay4KK0RlcGVu
ZGluZyBvbiB0aGUgbmF0dXJlIG9mIHRoZSBsZWFrLCBpdCBtYXkgb3IgbWF5IG5vdCBiZSB3b3J0
aCBmaXhpbmcgLSBzbyBrZWVwCit0aGlzIGluIG1pbmQgaWYgeW91IGdldCBhIGhlYXAgY2hlY2tl
ciBlcnJvciBpbiBhZGRpdGlvbiB0byBhc3NlcnRpb24gZXJyb3JzLgorCitUbyBwcm92aWRlIGEg
Y3VzdG9tIGZhaWx1cmUgbWVzc2FnZSwgc2ltcGx5IHN0cmVhbSBpdCBpbnRvIHRoZSBtYWNybyB1
c2luZyB0aGUKK2A8PGAgb3BlcmF0b3IsIG9yIGEgc2VxdWVuY2Ugb2Ygc3VjaCBvcGVyYXRvcnMu
IEFuIGV4YW1wbGU6CisKK2BgYGMrKworQVNTRVJUX0VRKHguc2l6ZSgpLCB5LnNpemUoKSkgPDwg
IlZlY3RvcnMgeCBhbmQgeSBhcmUgb2YgdW5lcXVhbCBsZW5ndGgiOworCitmb3IgKGludCBpID0g
MDsgaSA8IHguc2l6ZSgpOyArK2kpIHsKKyAgRVhQRUNUX0VRKHhbaV0sIHlbaV0pIDw8ICJWZWN0
b3JzIHggYW5kIHkgZGlmZmVyIGF0IGluZGV4ICIgPDwgaTsKK30KK2BgYAorCitBbnl0aGluZyB0
aGF0IGNhbiBiZSBzdHJlYW1lZCB0byBhbiBgb3N0cmVhbWAgY2FuIGJlIHN0cmVhbWVkIHRvIGFu
IGFzc2VydGlvbgorbWFjcm8tLWluIHBhcnRpY3VsYXIsIEMgc3RyaW5ncyBhbmQgYHN0cmluZ2Ag
b2JqZWN0cy4gSWYgYSB3aWRlIHN0cmluZworKGB3Y2hhcl90KmAsIGBUQ0hBUipgIGluIGBVTklD
T0RFYCBtb2RlIG9uIFdpbmRvd3MsIG9yIGBzdGQ6OndzdHJpbmdgKSBpcworc3RyZWFtZWQgdG8g
YW4gYXNzZXJ0aW9uLCBpdCB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gVVRGLTggd2hlbiBwcmludGVk
LgorCisjIyMgQmFzaWMgQXNzZXJ0aW9ucworCitUaGVzZSBhc3NlcnRpb25zIGRvIGJhc2ljIHRy
dWUvZmFsc2UgY29uZGl0aW9uIHRlc3RpbmcuCisKK0ZhdGFsIGFzc2VydGlvbiAgICAgICAgICAg
IHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgICAgfCBWZXJpZmllcworLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0t
LS0tLS0tCitgQVNTRVJUX1RSVUUoY29uZGl0aW9uKTtgICB8IGBFWFBFQ1RfVFJVRShjb25kaXRp
b24pO2AgIHwgYGNvbmRpdGlvbmAgaXMgdHJ1ZQorYEFTU0VSVF9GQUxTRShjb25kaXRpb24pO2Ag
fCBgRVhQRUNUX0ZBTFNFKGNvbmRpdGlvbik7YCB8IGBjb25kaXRpb25gIGlzIGZhbHNlCisKK1Jl
bWVtYmVyLCB3aGVuIHRoZXkgZmFpbCwgYEFTU0VSVF8qYCB5aWVsZHMgYSBmYXRhbCBmYWlsdXJl
IGFuZCByZXR1cm5zIGZyb20gdGhlCitjdXJyZW50IGZ1bmN0aW9uLCB3aGlsZSBgRVhQRUNUXypg
IHlpZWxkcyBhIG5vbmZhdGFsIGZhaWx1cmUsIGFsbG93aW5nIHRoZQorZnVuY3Rpb24gdG8gY29u
dGludWUgcnVubmluZy4gSW4gZWl0aGVyIGNhc2UsIGFuIGFzc2VydGlvbiBmYWlsdXJlIG1lYW5z
IGl0cworY29udGFpbmluZyB0ZXN0IGZhaWxzLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwg
V2luZG93cywgTWFjLgorCisjIyMgQmluYXJ5IENvbXBhcmlzb24KKworVGhpcyBzZWN0aW9uIGRl
c2NyaWJlcyBhc3NlcnRpb25zIHRoYXQgY29tcGFyZSB0d28gdmFsdWVzLgorCitGYXRhbCBhc3Nl
cnRpb24gICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAgfCBWZXJpZmllcworLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0t
LS0tLS0tLS0KK2BBU1NFUlRfRVEodmFsMSwgdmFsMik7YCB8IGBFWFBFQ1RfRVEodmFsMSwgdmFs
Mik7YCB8IGB2YWwxID09IHZhbDJgCitgQVNTRVJUX05FKHZhbDEsIHZhbDIpO2AgfCBgRVhQRUNU
X05FKHZhbDEsIHZhbDIpO2AgfCBgdmFsMSAhPSB2YWwyYAorYEFTU0VSVF9MVCh2YWwxLCB2YWwy
KTtgIHwgYEVYUEVDVF9MVCh2YWwxLCB2YWwyKTtgIHwgYHZhbDEgPCB2YWwyYAorYEFTU0VSVF9M
RSh2YWwxLCB2YWwyKTtgIHwgYEVYUEVDVF9MRSh2YWwxLCB2YWwyKTtgIHwgYHZhbDEgPD0gdmFs
MmAKK2BBU1NFUlRfR1QodmFsMSwgdmFsMik7YCB8IGBFWFBFQ1RfR1QodmFsMSwgdmFsMik7YCB8
IGB2YWwxID4gdmFsMmAKK2BBU1NFUlRfR0UodmFsMSwgdmFsMik7YCB8IGBFWFBFQ1RfR0UodmFs
MSwgdmFsMik7YCB8IGB2YWwxID49IHZhbDJgCisKK1ZhbHVlIGFyZ3VtZW50cyBtdXN0IGJlIGNv
bXBhcmFibGUgYnkgdGhlIGFzc2VydGlvbidzIGNvbXBhcmlzb24gb3BlcmF0b3Igb3IKK3lvdSds
bCBnZXQgYSBjb21waWxlciBlcnJvci4gV2UgdXNlZCB0byByZXF1aXJlIHRoZSBhcmd1bWVudHMg
dG8gc3VwcG9ydCB0aGUKK2A8PGAgb3BlcmF0b3IgZm9yIHN0cmVhbWluZyB0byBhbiBgb3N0cmVh
bWAsIGJ1dCBpdCdzIG5vIGxvbmdlciBuZWNlc3NhcnkuIElmCitgPDxgIGlzIHN1cHBvcnRlZCwg
aXQgd2lsbCBiZSBjYWxsZWQgdG8gcHJpbnQgdGhlIGFyZ3VtZW50cyB3aGVuIHRoZSBhc3NlcnRp
b24KK2ZhaWxzOyBvdGhlcndpc2UgZ29vZ2xldGVzdCB3aWxsIGF0dGVtcHQgdG8gcHJpbnQgdGhl
bSBpbiB0aGUgYmVzdCB3YXkgaXQgY2FuLgorRm9yIG1vcmUgZGV0YWlscyBhbmQgaG93IHRvIGN1
c3RvbWl6ZSB0aGUgcHJpbnRpbmcgb2YgdGhlIGFyZ3VtZW50cywgc2VlCitnTW9jayBbcmVjaXBl
XSguLi8uLi9nb29nbGVtb2NrL2RvY3MvQ29va0Jvb2subWQjdGVhY2hpbmctZ29vZ2xlLW1vY2st
aG93LXRvLXByaW50LXlvdXItdmFsdWVzKS4pLgorCitUaGVzZSBhc3NlcnRpb25zIGNhbiB3b3Jr
IHdpdGggYSB1c2VyLWRlZmluZWQgdHlwZSwgYnV0IG9ubHkgaWYgeW91IGRlZmluZSB0aGUKK2Nv
cnJlc3BvbmRpbmcgY29tcGFyaXNvbiBvcGVyYXRvciAoZS5nLiBgPT1gLCBgPGAsIGV0YykuIFNp
bmNlIHRoaXMgaXMKK2Rpc2NvdXJhZ2VkIGJ5IHRoZSBHb29nbGUgW0MrKyBTdHlsZQorR3VpZGVd
KGh0dHBzOi8vZ29vZ2xlLmdpdGh1Yi5pby9zdHlsZWd1aWRlL2NwcGd1aWRlLmh0bWwjT3BlcmF0
b3JfT3ZlcmxvYWRpbmcpLAoreW91IG1heSBuZWVkIHRvIHVzZSBgQVNTRVJUX1RSVUUoKWAgb3Ig
YEVYUEVDVF9UUlVFKClgIHRvIGFzc2VydCB0aGUgZXF1YWxpdHkgb2YKK3R3byBvYmplY3RzIG9m
IGEgdXNlci1kZWZpbmVkIHR5cGUuCisKK0hvd2V2ZXIsIHdoZW4gcG9zc2libGUsIGBBU1NFUlRf
RVEoYWN0dWFsLCBleHBlY3RlZClgIGlzIHByZWZlcnJlZCB0bworYEFTU0VSVF9UUlVFKGFjdHVh
bCA9PSBleHBlY3RlZClgLCBzaW5jZSBpdCB0ZWxscyB5b3UgYGFjdHVhbGAgYW5kIGBleHBlY3Rl
ZGAncwordmFsdWVzIG9uIGZhaWx1cmUuCisKK0FyZ3VtZW50cyBhcmUgYWx3YXlzIGV2YWx1YXRl
ZCBleGFjdGx5IG9uY2UuIFRoZXJlZm9yZSwgaXQncyBPSyBmb3IgdGhlCithcmd1bWVudHMgdG8g
aGF2ZSBzaWRlIGVmZmVjdHMuIEhvd2V2ZXIsIGFzIHdpdGggYW55IG9yZGluYXJ5IEMvQysrIGZ1
bmN0aW9uLAordGhlIGFyZ3VtZW50cycgZXZhbHVhdGlvbiBvcmRlciBpcyB1bmRlZmluZWQgKGku
ZS4gdGhlIGNvbXBpbGVyIGlzIGZyZWUgdG8KK2Nob29zZSBhbnkgb3JkZXIpIGFuZCB5b3VyIGNv
ZGUgc2hvdWxkIG5vdCBkZXBlbmQgb24gYW55IHBhcnRpY3VsYXIgYXJndW1lbnQKK2V2YWx1YXRp
b24gb3JkZXIuCisKK2BBU1NFUlRfRVEoKWAgZG9lcyBwb2ludGVyIGVxdWFsaXR5IG9uIHBvaW50
ZXJzLiBJZiB1c2VkIG9uIHR3byBDIHN0cmluZ3MsIGl0Cit0ZXN0cyBpZiB0aGV5IGFyZSBpbiB0
aGUgc2FtZSBtZW1vcnkgbG9jYXRpb24sIG5vdCBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgdmFsdWUu
CitUaGVyZWZvcmUsIGlmIHlvdSB3YW50IHRvIGNvbXBhcmUgQyBzdHJpbmdzIChlLmcuIGBjb25z
dCBjaGFyKmApIGJ5IHZhbHVlLCB1c2UKK2BBU1NFUlRfU1RSRVEoKWAsIHdoaWNoIHdpbGwgYmUg
ZGVzY3JpYmVkIGxhdGVyIG9uLiBJbiBwYXJ0aWN1bGFyLCB0byBhc3NlcnQKK3RoYXQgYSBDIHN0
cmluZyBpcyBgTlVMTGAsIHVzZSBgQVNTRVJUX1NUUkVRKGNfc3RyaW5nLCBOVUxMKWAuIENvbnNp
ZGVyIHVzZQorYEFTU0VSVF9FUShjX3N0cmluZywgbnVsbHB0cilgIGlmIGMrKzExIGlzIHN1cHBv
cnRlZC4gVG8gY29tcGFyZSB0d28gYHN0cmluZ2AKK29iamVjdHMsIHlvdSBzaG91bGQgdXNlIGBB
U1NFUlRfRVFgLgorCitXaGVuIGRvaW5nIHBvaW50ZXIgY29tcGFyaXNvbnMgdXNlIGAqX0VRKHB0
ciwgbnVsbHB0cilgIGFuZCBgKl9ORShwdHIsIG51bGxwdHIpYAoraW5zdGVhZCBvZiBgKl9FUShw
dHIsIE5VTEwpYCBhbmQgYCpfTkUocHRyLCBOVUxMKWAuIFRoaXMgaXMgYmVjYXVzZSBgbnVsbHB0
cmAgaXMKK3R5cGVkIHdoaWxlIGBOVUxMYCBpcyBub3QuIFNlZSBbRkFRXShmYXEubWQjd2h5LWRv
ZXMtZ29vZ2xlLXRlc3Qtc3VwcG9ydC1leHBlY3RfZXFudWxsLXB0ci1hbmQtYXNzZXJ0X2VxbnVs
bC1wdHItYnV0LW5vdC1leHBlY3RfbmVudWxsLXB0ci1hbmQtYXNzZXJ0X25lbnVsbC1wdHIpCitm
b3IgbW9yZSBkZXRhaWxzLgorCitJZiB5b3UncmUgd29ya2luZyB3aXRoIGZsb2F0aW5nIHBvaW50
IG51bWJlcnMsIHlvdSBtYXkgd2FudCB0byB1c2UgdGhlIGZsb2F0aW5nCitwb2ludCB2YXJpYXRp
b25zIG9mIHNvbWUgb2YgdGhlc2UgbWFjcm9zIGluIG9yZGVyIHRvIGF2b2lkIHByb2JsZW1zIGNh
dXNlZCBieQorcm91bmRpbmcuIFNlZSBbQWR2YW5jZWQgZ29vZ2xldGVzdCBUb3BpY3NdKGFkdmFu
Y2VkLm1kKSBmb3IgZGV0YWlscy4KKworTWFjcm9zIGluIHRoaXMgc2VjdGlvbiB3b3JrIHdpdGgg
Ym90aCBuYXJyb3cgYW5kIHdpZGUgc3RyaW5nIG9iamVjdHMgKGBzdHJpbmdgCithbmQgYHdzdHJp
bmdgKS4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworKipIaXN0
b3JpY2FsIG5vdGUqKjogQmVmb3JlIEZlYnJ1YXJ5IDIwMTYgYCpfRVFgIGhhZCBhIGNvbnZlbnRp
b24gb2YgY2FsbGluZyBpdAorYXMgYEFTU0VSVF9FUShleHBlY3RlZCwgYWN0dWFsKWAsIHNvIGxv
dHMgb2YgZXhpc3RpbmcgY29kZSB1c2VzIHRoaXMgb3JkZXIuIE5vdworYCpfRVFgIHRyZWF0cyBi
b3RoIHBhcmFtZXRlcnMgaW4gdGhlIHNhbWUgd2F5LgorCisjIyMgU3RyaW5nIENvbXBhcmlzb24K
KworVGhlIGFzc2VydGlvbnMgaW4gdGhpcyBncm91cCBjb21wYXJlIHR3byAqKkMgc3RyaW5ncyoq
LiBJZiB5b3Ugd2FudCB0byBjb21wYXJlCit0d28gYHN0cmluZ2Agb2JqZWN0cywgdXNlIGBFWFBF
Q1RfRVFgLCBgRVhQRUNUX05FYCwgYW5kIGV0YyBpbnN0ZWFkLgorCit8IEZhdGFsIGFzc2VydGlv
biAgICAgICAgICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgIHwgVmVy
aWZpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
fCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIHwKK3wgYEFTU0VSVF9TVFJFUShzdHIxLCBzdHIyKTtgICAgICB8IGBFWFBF
Q1RfU1RSRVEoc3RyMSwgc3RyMik7YCAgICAgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIHRoZSBz
YW1lIGNvbnRlbnQgICAgICAgICAgICAgICAgICB8Cit8IGBBU1NFUlRfU1RSTkUoc3RyMSwgc3Ry
Mik7YCAgICAgfCBgRVhQRUNUX1NUUk5FKHN0cjEsIHN0cjIpO2AgICAgIHwgdGhlIHR3byBDIHN0
cmluZ3MgaGF2ZSBkaWZmZXJlbnQgY29udGVudHMgICAgICAgICAgICAgICAgfAorfCBgQVNTRVJU
X1NUUkNBU0VFUShzdHIxLCBzdHIyKTtgIHwgYEVYUEVDVF9TVFJDQVNFRVEoc3RyMSwgc3RyMik7
YCB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUgdGhlIHNhbWUgY29udGVudCwgaWdub3JpbmcgY2Fz
ZSAgIHwKK3wgYEFTU0VSVF9TVFJDQVNFTkUoc3RyMSwgc3RyMik7YCB8IGBFWFBFQ1RfU1RSQ0FT
RU5FKHN0cjEsIHN0cjIpO2AgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIGRpZmZlcmVudCBjb250
ZW50cywgaWdub3JpbmcgY2FzZSB8CisKK05vdGUgdGhhdCAiQ0FTRSIgaW4gYW4gYXNzZXJ0aW9u
IG5hbWUgbWVhbnMgdGhhdCBjYXNlIGlzIGlnbm9yZWQuIEEgYE5VTExgCitwb2ludGVyIGFuZCBh
biBlbXB0eSBzdHJpbmcgYXJlIGNvbnNpZGVyZWQgKmRpZmZlcmVudCouCisKK2AqU1RSRVEqYCBh
bmQgYCpTVFJORSpgIGFsc28gYWNjZXB0IHdpZGUgQyBzdHJpbmdzIChgd2NoYXJfdCpgKS4gSWYg
YSBjb21wYXJpc29uCitvZiB0d28gd2lkZSBzdHJpbmdzIGZhaWxzLCB0aGVpciB2YWx1ZXMgd2ls
bCBiZSBwcmludGVkIGFzIFVURi04IG5hcnJvdyBzdHJpbmdzLgorCisqKkF2YWlsYWJpbGl0eSoq
OiBMaW51eCwgV2luZG93cywgTWFjLgorCisqKlNlZSBhbHNvKio6IEZvciBtb3JlIHN0cmluZyBj
b21wYXJpc29uIHRyaWNrcyAoc3Vic3RyaW5nLCBwcmVmaXgsIHN1ZmZpeCwgYW5kCityZWd1bGFy
IGV4cHJlc3Npb24gbWF0Y2hpbmcsIGZvciBleGFtcGxlKSwgc2VlCitbdGhpc10oaHR0cHM6Ly9n
aXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2dsZXRlc3QvZG9jcy9h
ZHZhbmNlZC5tZCkKK2luIHRoZSBBZHZhbmNlZCBnb29nbGV0ZXN0IEd1aWRlLgorCisjIyBTaW1w
bGUgVGVzdHMKKworVG8gY3JlYXRlIGEgdGVzdDoKKworMS4gIFVzZSB0aGUgYFRFU1QoKWAgbWFj
cm8gdG8gZGVmaW5lIGFuZCBuYW1lIGEgdGVzdCBmdW5jdGlvbiwgVGhlc2UgYXJlCisgICAgb3Jk
aW5hcnkgQysrIGZ1bmN0aW9ucyB0aGF0IGRvbid0IHJldHVybiBhIHZhbHVlLgorMS4gIEluIHRo
aXMgZnVuY3Rpb24sIGFsb25nIHdpdGggYW55IHZhbGlkIEMrKyBzdGF0ZW1lbnRzIHlvdSB3YW50
IHRvIGluY2x1ZGUsCisgICAgdXNlIHRoZSB2YXJpb3VzIGdvb2dsZXRlc3QgYXNzZXJ0aW9ucyB0
byBjaGVjayB2YWx1ZXMuCisxLiAgVGhlIHRlc3QncyByZXN1bHQgaXMgZGV0ZXJtaW5lZCBieSB0
aGUgYXNzZXJ0aW9uczsgaWYgYW55IGFzc2VydGlvbiBpbiB0aGUKKyAgICB0ZXN0IGZhaWxzIChl
aXRoZXIgZmF0YWxseSBvciBub24tZmF0YWxseSksIG9yIGlmIHRoZSB0ZXN0IGNyYXNoZXMsIHRo
ZQorICAgIGVudGlyZSB0ZXN0IGZhaWxzLiBPdGhlcndpc2UsIGl0IHN1Y2NlZWRzLgorCitgYGBj
KysKK1RFU1QoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSkgeworICAuLi4gdGVzdCBib2R5IC4uLgor
fQorYGBgCisKK2BURVNUKClgIGFyZ3VtZW50cyBnbyBmcm9tIGdlbmVyYWwgdG8gc3BlY2lmaWMu
IFRoZSAqZmlyc3QqIGFyZ3VtZW50IGlzIHRoZSBuYW1lCitvZiB0aGUgdGVzdCBjYXNlLCBhbmQg
dGhlICpzZWNvbmQqIGFyZ3VtZW50IGlzIHRoZSB0ZXN0J3MgbmFtZSB3aXRoaW4gdGhlIHRlc3QK
K2Nhc2UuIEJvdGggbmFtZXMgbXVzdCBiZSB2YWxpZCBDKysgaWRlbnRpZmllcnMsIGFuZCB0aGV5
IHNob3VsZCBub3QgY29udGFpbgordW5kZXJzY29yZSAoYF9gKS4gQSB0ZXN0J3MgKmZ1bGwgbmFt
ZSogY29uc2lzdHMgb2YgaXRzIGNvbnRhaW5pbmcgdGVzdCBjYXNlIGFuZAoraXRzIGluZGl2aWR1
YWwgbmFtZS4gVGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcyBjYW4gaGF2ZSB0aGUgc2Ft
ZQoraW5kaXZpZHVhbCBuYW1lLgorCitGb3IgZXhhbXBsZSwgbGV0J3MgdGFrZSBhIHNpbXBsZSBp
bnRlZ2VyIGZ1bmN0aW9uOgorCitgYGBjKysKK2ludCBGYWN0b3JpYWwoaW50IG4pOyAgLy8gUmV0
dXJucyB0aGUgZmFjdG9yaWFsIG9mIG4KK2BgYAorCitBIHRlc3QgY2FzZSBmb3IgdGhpcyBmdW5j
dGlvbiBtaWdodCBsb29rIGxpa2U6CisKK2BgYGMrKworLy8gVGVzdHMgZmFjdG9yaWFsIG9mIDAu
CitURVNUKEZhY3RvcmlhbFRlc3QsIEhhbmRsZXNaZXJvSW5wdXQpIHsKKyAgRVhQRUNUX0VRKEZh
Y3RvcmlhbCgwKSwgMSk7Cit9CisKKy8vIFRlc3RzIGZhY3RvcmlhbCBvZiBwb3NpdGl2ZSBudW1i
ZXJzLgorVEVTVChGYWN0b3JpYWxUZXN0LCBIYW5kbGVzUG9zaXRpdmVJbnB1dCkgeworICBFWFBF
Q1RfRVEoRmFjdG9yaWFsKDEpLCAxKTsKKyAgRVhQRUNUX0VRKEZhY3RvcmlhbCgyKSwgMik7Cisg
IEVYUEVDVF9FUShGYWN0b3JpYWwoMyksIDYpOworICBFWFBFQ1RfRVEoRmFjdG9yaWFsKDgpLCA0
MDMyMCk7Cit9CitgYGAKKworZ29vZ2xldGVzdCBncm91cHMgdGhlIHRlc3QgcmVzdWx0cyBieSB0
ZXN0IGNhc2VzLCBzbyBsb2dpY2FsbHktcmVsYXRlZCB0ZXN0cworc2hvdWxkIGJlIGluIHRoZSBz
YW1lIHRlc3QgY2FzZTsgaW4gb3RoZXIgd29yZHMsIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGVp
cgorYFRFU1QoKWAgc2hvdWxkIGJlIHRoZSBzYW1lLiBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgd2Ug
aGF2ZSB0d28gdGVzdHMsCitgSGFuZGxlc1plcm9JbnB1dGAgYW5kIGBIYW5kbGVzUG9zaXRpdmVJ
bnB1dGAsIHRoYXQgYmVsb25nIHRvIHRoZSBzYW1lIHRlc3QgY2FzZQorYEZhY3RvcmlhbFRlc3Rg
LgorCitXaGVuIG5hbWluZyB5b3VyIHRlc3QgY2FzZXMgYW5kIHRlc3RzLCB5b3Ugc2hvdWxkIGZv
bGxvdyB0aGUgc2FtZSBjb252ZW50aW9uIGFzCitmb3IgW25hbWluZyBmdW5jdGlvbnMgYW5kCitj
bGFzc2VzXShodHRwczovL2dvb2dsZS5naXRodWIuaW8vc3R5bGVndWlkZS9jcHBndWlkZS5odG1s
I0Z1bmN0aW9uX05hbWVzKS4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1h
Yy4KKworIyMgVGVzdCBGaXh0dXJlczogVXNpbmcgdGhlIFNhbWUgRGF0YSBDb25maWd1cmF0aW9u
IGZvciBNdWx0aXBsZSBUZXN0cworCitJZiB5b3UgZmluZCB5b3Vyc2VsZiB3cml0aW5nIHR3byBv
ciBtb3JlIHRlc3RzIHRoYXQgb3BlcmF0ZSBvbiBzaW1pbGFyIGRhdGEsIHlvdQorY2FuIHVzZSBh
ICp0ZXN0IGZpeHR1cmUqLiBJdCBhbGxvd3MgeW91IHRvIHJldXNlIHRoZSBzYW1lIGNvbmZpZ3Vy
YXRpb24gb2YKK29iamVjdHMgZm9yIHNldmVyYWwgZGlmZmVyZW50IHRlc3RzLgorCitUbyBjcmVh
dGUgYSBmaXh0dXJlOgorCisxLiAgRGVyaXZlIGEgY2xhc3MgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0
YCAuIFN0YXJ0IGl0cyBib2R5IHdpdGggYHByb3RlY3RlZDpgIGFzCisgICAgd2UnbGwgd2FudCB0
byBhY2Nlc3MgZml4dHVyZSBtZW1iZXJzIGZyb20gc3ViLWNsYXNzZXMuCisxLiAgSW5zaWRlIHRo
ZSBjbGFzcywgZGVjbGFyZSBhbnkgb2JqZWN0cyB5b3UgcGxhbiB0byB1c2UuCisxLiAgSWYgbmVj
ZXNzYXJ5LCB3cml0ZSBhIGRlZmF1bHQgY29uc3RydWN0b3Igb3IgYFNldFVwKClgIGZ1bmN0aW9u
IHRvIHByZXBhcmUKKyAgICB0aGUgb2JqZWN0cyBmb3IgZWFjaCB0ZXN0LiBBIGNvbW1vbiBtaXN0
YWtlIGlzIHRvIHNwZWxsIGBTZXRVcCgpYCBhcworICAgICoqYFNldHVwKClgKiogd2l0aCBhIHNt
YWxsIGB1YCAtIFVzZSBgb3ZlcnJpZGVgIGluIEMrKzExIHRvIG1ha2Ugc3VyZSB5b3UKKyAgICBz
cGVsbGVkIGl0IGNvcnJlY3RseQorMS4gIElmIG5lY2Vzc2FyeSwgd3JpdGUgYSBkZXN0cnVjdG9y
IG9yIGBUZWFyRG93bigpYCBmdW5jdGlvbiB0byByZWxlYXNlIGFueQorICAgIHJlc291cmNlcyB5
b3UgYWxsb2NhdGVkIGluIGBTZXRVcCgpYCAuIFRvIGxlYXJuIHdoZW4geW91IHNob3VsZCB1c2Ug
dGhlCisgICAgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBhbmQgd2hlbiB5b3Ugc2hvdWxkIHVzZSBg
U2V0VXAoKS9UZWFyRG93bigpYCwgcmVhZAorICAgIHRoaXMgW0ZBUV0oZmFxLm1kI3Nob3VsZC1p
LXVzZS10aGUtY29uc3RydWN0b3JkZXN0cnVjdG9yLW9mLXRoZS10ZXN0LWZpeHR1cmUtb3Itc2V0
dXB0ZWFyZG93bikgZW50cnkuCisxLiAgSWYgbmVlZGVkLCBkZWZpbmUgc3Vicm91dGluZXMgZm9y
IHlvdXIgdGVzdHMgdG8gc2hhcmUuCisKK1doZW4gdXNpbmcgYSBmaXh0dXJlLCB1c2UgYFRFU1Rf
RigpYCBpbnN0ZWFkIG9mIGBURVNUKClgIGFzIGl0IGFsbG93cyB5b3UgdG8KK2FjY2VzcyBvYmpl
Y3RzIGFuZCBzdWJyb3V0aW5lcyBpbiB0aGUgdGVzdCBmaXh0dXJlOgorCitgYGBjKysKK1RFU1Rf
RihUZXN0Q2FzZU5hbWUsIFRlc3ROYW1lKSB7CisgIC4uLiB0ZXN0IGJvZHkgLi4uCit9CitgYGAK
KworTGlrZSBgVEVTVCgpYCwgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSB0ZXN0IGNhc2UgbmFt
ZSwgYnV0IGZvciBgVEVTVF9GKClgIHRoaXMKK211c3QgYmUgdGhlIG5hbWUgb2YgdGhlIHRlc3Qg
Zml4dHVyZSBjbGFzcy4gWW91J3ZlIHByb2JhYmx5IGd1ZXNzZWQ6IGBfRmAgaXMgZm9yCitmaXh0
dXJlLgorCitVbmZvcnR1bmF0ZWx5LCB0aGUgQysrIG1hY3JvIHN5c3RlbSBkb2VzIG5vdCBhbGxv
dyB1cyB0byBjcmVhdGUgYSBzaW5nbGUgbWFjcm8KK3RoYXQgY2FuIGhhbmRsZSBib3RoIHR5cGVz
IG9mIHRlc3RzLiBVc2luZyB0aGUgd3JvbmcgbWFjcm8gY2F1c2VzIGEgY29tcGlsZXIKK2Vycm9y
LgorCitBbHNvLCB5b3UgbXVzdCBmaXJzdCBkZWZpbmUgYSB0ZXN0IGZpeHR1cmUgY2xhc3MgYmVm
b3JlIHVzaW5nIGl0IGluIGEKK2BURVNUX0YoKWAsIG9yIHlvdSdsbCBnZXQgdGhlIGNvbXBpbGVy
IGVycm9yICJgdmlydHVhbCBvdXRzaWRlIGNsYXNzCitkZWNsYXJhdGlvbmAiLgorCitGb3IgZWFj
aCB0ZXN0IGRlZmluZWQgd2l0aCBgVEVTVF9GKClgICwgZ29vZ2xldGVzdCB3aWxsIGNyZWF0ZSBh
ICpmcmVzaCogdGVzdAorZml4dHVyZSBhdCBydW50aW1lLCBpbW1lZGlhdGVseSBpbml0aWFsaXpl
IGl0IHZpYSBgU2V0VXAoKWAgLCBydW4gdGhlIHRlc3QsCitjbGVhbiB1cCBieSBjYWxsaW5nIGBU
ZWFyRG93bigpYCAsIGFuZCB0aGVuIGRlbGV0ZSB0aGUgdGVzdCBmaXh0dXJlLiBOb3RlIHRoYXQK
K2RpZmZlcmVudCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgaGF2ZSBkaWZmZXJlbnQgdGVz
dCBmaXh0dXJlIG9iamVjdHMsIGFuZAorZ29vZ2xldGVzdCBhbHdheXMgZGVsZXRlcyBhIHRlc3Qg
Zml4dHVyZSBiZWZvcmUgaXQgY3JlYXRlcyB0aGUgbmV4dCBvbmUuCitnb29nbGV0ZXN0IGRvZXMg
Kipub3QqKiByZXVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUgZm9yIG11bHRpcGxlIHRlc3RzLiBB
bnkKK2NoYW5nZXMgb25lIHRlc3QgbWFrZXMgdG8gdGhlIGZpeHR1cmUgZG8gbm90IGFmZmVjdCBv
dGhlciB0ZXN0cy4KKworQXMgYW4gZXhhbXBsZSwgbGV0J3Mgd3JpdGUgdGVzdHMgZm9yIGEgRklG
TyBxdWV1ZSBjbGFzcyBuYW1lZCBgUXVldWVgLCB3aGljaCBoYXMKK3RoZSBmb2xsb3dpbmcgaW50
ZXJmYWNlOgorCitgYGBjKysKK3RlbXBsYXRlIDx0eXBlbmFtZSBFPiAgLy8gRSBpcyB0aGUgZWxl
bWVudCB0eXBlLgorY2xhc3MgUXVldWUgeworIHB1YmxpYzoKKyAgUXVldWUoKTsKKyAgdm9pZCBF
bnF1ZXVlKGNvbnN0IEUmIGVsZW1lbnQpOworICBFKiBEZXF1ZXVlKCk7ICAvLyBSZXR1cm5zIE5V
TEwgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LgorICBzaXplX3Qgc2l6ZSgpIGNvbnN0OworICAuLi4K
K307CitgYGAKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MuIEJ5IGNvbnZlbnRpb24s
IHlvdSBzaG91bGQgZ2l2ZSBpdCB0aGUgbmFtZQorYEZvb1Rlc3RgIHdoZXJlIGBGb29gIGlzIHRo
ZSBjbGFzcyBiZWluZyB0ZXN0ZWQuCisKK2BgYGMrKworY2xhc3MgUXVldWVUZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUg
eworICAgICBxMV8uRW5xdWV1ZSgxKTsKKyAgICAgcTJfLkVucXVldWUoMik7CisgICAgIHEyXy5F
bnF1ZXVlKDMpOworICB9CisKKyAgLy8gdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlIHt9CisKKyAg
UXVldWU8aW50PiBxMF87CisgIFF1ZXVlPGludD4gcTFfOworICBRdWV1ZTxpbnQ+IHEyXzsKK307
CitgYGAKKworSW4gdGhpcyBjYXNlLCBgVGVhckRvd24oKWAgaXMgbm90IG5lZWRlZCBzaW5jZSB3
ZSBkb24ndCBoYXZlIHRvIGNsZWFuIHVwIGFmdGVyCitlYWNoIHRlc3QsIG90aGVyIHRoYW4gd2hh
dCdzIGFscmVhZHkgZG9uZSBieSB0aGUgZGVzdHJ1Y3Rvci4KKworTm93IHdlJ2xsIHdyaXRlIHRl
c3RzIHVzaW5nIGBURVNUX0YoKWAgYW5kIHRoaXMgZml4dHVyZS4KKworYGBgYysrCitURVNUX0Yo
UXVldWVUZXN0LCBJc0VtcHR5SW5pdGlhbGx5KSB7CisgIEVYUEVDVF9FUShxMF8uc2l6ZSgpLCAw
KTsKK30KKworVEVTVF9GKFF1ZXVlVGVzdCwgRGVxdWV1ZVdvcmtzKSB7CisgIGludCogbiA9IHEw
Xy5EZXF1ZXVlKCk7CisgIEVYUEVDVF9FUShuLCBudWxscHRyKTsKKworICBuID0gcTFfLkRlcXVl
dWUoKTsKKyAgQVNTRVJUX05FKG4sIG51bGxwdHIpOworICBFWFBFQ1RfRVEoKm4sIDEpOworICBF
WFBFQ1RfRVEocTFfLnNpemUoKSwgMCk7CisgIGRlbGV0ZSBuOworCisgIG4gPSBxMl8uRGVxdWV1
ZSgpOworICBBU1NFUlRfTkUobiwgbnVsbHB0cik7CisgIEVYUEVDVF9FUSgqbiwgMik7CisgIEVY
UEVDVF9FUShxMl8uc2l6ZSgpLCAxKTsKKyAgZGVsZXRlIG47Cit9CitgYGAKKworVGhlIGFib3Zl
IHVzZXMgYm90aCBgQVNTRVJUXypgIGFuZCBgRVhQRUNUXypgIGFzc2VydGlvbnMuIFRoZSBydWxl
IG9mIHRodW1iIGlzCit0byB1c2UgYEVYUEVDVF8qYCB3aGVuIHlvdSB3YW50IHRoZSB0ZXN0IHRv
IGNvbnRpbnVlIHRvIHJldmVhbCBtb3JlIGVycm9ycyBhZnRlcgordGhlIGFzc2VydGlvbiBmYWls
dXJlLCBhbmQgdXNlIGBBU1NFUlRfKmAgd2hlbiBjb250aW51aW5nIGFmdGVyIGZhaWx1cmUgZG9l
c24ndAorbWFrZSBzZW5zZS4gRm9yIGV4YW1wbGUsIHRoZSBzZWNvbmQgYXNzZXJ0aW9uIGluIHRo
ZSBgRGVxdWV1ZWAgdGVzdCBpcworPUFTU0VSVF9ORShudWxscHRyLCBuKT0sIGFzIHdlIG5lZWQg
dG8gZGVyZWZlcmVuY2UgdGhlIHBvaW50ZXIgYG5gIGxhdGVyLCB3aGljaAord291bGQgbGVhZCB0
byBhIHNlZ2ZhdWx0IHdoZW4gYG5gIGlzIGBOVUxMYC4KKworV2hlbiB0aGVzZSB0ZXN0cyBydW4s
IHRoZSBmb2xsb3dpbmcgaGFwcGVuczoKKworMS4gIGdvb2dsZXRlc3QgY29uc3RydWN0cyBhIGBR
dWV1ZVRlc3RgIG9iamVjdCAobGV0J3MgY2FsbCBpdCBgdDFgICkuCisxLiAgYHQxLlNldFVwKClg
IGluaXRpYWxpemVzIGB0MWAgLgorMS4gIFRoZSBmaXJzdCB0ZXN0ICggYElzRW1wdHlJbml0aWFs
bHlgICkgcnVucyBvbiBgdDFgIC4KKzEuICBgdDEuVGVhckRvd24oKWAgY2xlYW5zIHVwIGFmdGVy
IHRoZSB0ZXN0IGZpbmlzaGVzLgorMS4gIGB0MWAgaXMgZGVzdHJ1Y3RlZC4KKzEuICBUaGUgYWJv
dmUgc3RlcHMgYXJlIHJlcGVhdGVkIG9uIGFub3RoZXIgYFF1ZXVlVGVzdGAgb2JqZWN0LCB0aGlz
IHRpbWUKKyAgICBydW5uaW5nIHRoZSBgRGVxdWV1ZVdvcmtzYCB0ZXN0LgorCisqKkF2YWlsYWJp
bGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisKKyMjIEludm9raW5nIHRoZSBUZXN0cwor
CitgVEVTVCgpYCBhbmQgYFRFU1RfRigpYCBpbXBsaWNpdGx5IHJlZ2lzdGVyIHRoZWlyIHRlc3Rz
IHdpdGggZ29vZ2xldGVzdC4gU28sCit1bmxpa2Ugd2l0aCBtYW55IG90aGVyIEMrKyB0ZXN0aW5n
IGZyYW1ld29ya3MsIHlvdSBkb24ndCBoYXZlIHRvIHJlLWxpc3QgYWxsCit5b3VyIGRlZmluZWQg
dGVzdHMgaW4gb3JkZXIgdG8gcnVuIHRoZW0uCisKK0FmdGVyIGRlZmluaW5nIHlvdXIgdGVzdHMs
IHlvdSBjYW4gcnVuIHRoZW0gd2l0aCBgUlVOX0FMTF9URVNUUygpYCAsIHdoaWNoCityZXR1cm5z
IGAwYCBpZiBhbGwgdGhlIHRlc3RzIGFyZSBzdWNjZXNzZnVsLCBvciBgMWAgb3RoZXJ3aXNlLiBO
b3RlIHRoYXQKK2BSVU5fQUxMX1RFU1RTKClgIHJ1bnMgKmFsbCB0ZXN0cyogaW4geW91ciBsaW5r
IHVuaXQgLS0gdGhleSBjYW4gYmUgZnJvbQorZGlmZmVyZW50IHRlc3QgY2FzZXMsIG9yIGV2ZW4g
ZGlmZmVyZW50IHNvdXJjZSBmaWxlcy4KKworV2hlbiBpbnZva2VkLCB0aGUgYFJVTl9BTExfVEVT
VFMoKWAgbWFjcm86CisKKzEuIFNhdmVzIHRoZSBzdGF0ZSBvZiBhbGwgZ29vZ2xldGVzdCBmbGFn
cworCisqICAgQ3JlYXRlcyBhIHRlc3QgZml4dHVyZSBvYmplY3QgZm9yIHRoZSBmaXJzdCB0ZXN0
LgorCisqICAgSW5pdGlhbGl6ZXMgaXQgdmlhIGBTZXRVcCgpYC4KKworKiAgIFJ1bnMgdGhlIHRl
c3Qgb24gdGhlIGZpeHR1cmUgb2JqZWN0LgorCisqICAgQ2xlYW5zIHVwIHRoZSBmaXh0dXJlIHZp
YSBgVGVhckRvd24oKWAuCisKKyogICBEZWxldGVzIHRoZSBmaXh0dXJlLgorCisqIFJlc3RvcmVz
IHRoZSBzdGF0ZSBvZiBhbGwgZ29vZ2xldGVzdCBmbGFncworCisqICAgUmVwZWF0cyB0aGUgYWJv
dmUgc3RlcHMgZm9yIHRoZSBuZXh0IHRlc3QsIHVudGlsIGFsbCB0ZXN0cyBoYXZlIHJ1bi4KKwor
SWYgYSBmYXRhbCBmYWlsdXJlIGhhcHBlbnMgdGhlIHN1YnNlcXVlbnQgc3RlcHMgd2lsbCBiZSBz
a2lwcGVkLgorCis+IElNUE9SVEFOVDogWW91IG11c3QgKipub3QqKiBpZ25vcmUgdGhlIHJldHVy
biB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYCwgb3IKKz4geW91IHdpbGwgZ2V0IGEgY29tcGls
ZXIgZXJyb3IuIFRoZSByYXRpb25hbGUgZm9yIHRoaXMgZGVzaWduIGlzIHRoYXQgdGhlCis+IGF1
dG9tYXRlZCB0ZXN0aW5nIHNlcnZpY2UgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgdGVzdCBoYXMgcGFz
c2VkIGJhc2VkIG9uIGl0cworPiBleGl0IGNvZGUsIG5vdCBvbiBpdHMgc3Rkb3V0L3N0ZGVyciBv
dXRwdXQ7IHRodXMgeW91ciBgbWFpbigpYCBmdW5jdGlvbiBtdXN0Cis+IHJldHVybiB0aGUgdmFs
dWUgb2YgYFJVTl9BTExfVEVTVFMoKWAuCis+Cis+IEFsc28sIHlvdSBzaG91bGQgY2FsbCBgUlVO
X0FMTF9URVNUUygpYCBvbmx5ICoqb25jZSoqLiBDYWxsaW5nIGl0IG1vcmUgdGhhbgorPiBvbmNl
IGNvbmZsaWN0cyB3aXRoIHNvbWUgYWR2YW5jZWQgZ29vZ2xldGVzdCBmZWF0dXJlcyAoZS5nLiB0
aHJlYWQtc2FmZSBbZGVhdGgKKz4gdGVzdHNdKGFkdmFuY2VkI2RlYXRoLXRlc3RzKSkgYW5kIHRo
dXMgaXMgbm90IHN1cHBvcnRlZC4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3Ms
IE1hYy4KKworIyMgV3JpdGluZyB0aGUgbWFpbigpIEZ1bmN0aW9uCisKK0luIGBnb29nbGUzYCwg
dGhlIHNpbXBsZXN0IGFwcHJvYWNoIGlzIHRvIHVzZSB0aGUgZGVmYXVsdCBtYWluKCkgZnVuY3Rp
b24KK3Byb3ZpZGVkIGJ5IGxpbmtpbmcgaW4gYCIvL3Rlc3RpbmcvYmFzZS9wdWJsaWM6Z3Rlc3Rf
bWFpbiJgLiBJZiB0aGF0IGRvZXNuJ3QKK2NvdmVyIHdoYXQgeW91IG5lZWQsIHlvdSBzaG91bGQg
d3JpdGUgeW91ciBvd24gbWFpbigpIGZ1bmN0aW9uLCB3aGljaCBzaG91bGQKK3JldHVybiB0aGUg
dmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAuIExpbmsgdG8gYCIvL3Rlc3RpbmcvYmFzZS9wdWJs
aWM6Z3VuaXQiYC4KK1lvdSBjYW4gc3RhcnQgZnJvbSB0aGlzIGJvaWxlcnBsYXRlOgorCitgYGBj
KysKKyNpbmNsdWRlICJ0aGlzL3BhY2thZ2UvZm9vLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKKworbmFtZXNwYWNlIHsKKworLy8gVGhlIGZpeHR1cmUgZm9yIHRlc3RpbmcgY2xhc3MgRm9v
LgorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoK
KyAgLy8gWW91IGNhbiByZW1vdmUgYW55IG9yIGFsbCBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9u
cyBpZiBpdHMgYm9keQorICAvLyBpcyBlbXB0eS4KKworICBGb29UZXN0KCkgeworICAgICAvLyBZ
b3UgY2FuIGRvIHNldC11cCB3b3JrIGZvciBlYWNoIHRlc3QgaGVyZS4KKyAgfQorCisgIH5Gb29U
ZXN0KCkgb3ZlcnJpZGUgeworICAgICAvLyBZb3UgY2FuIGRvIGNsZWFuLXVwIHdvcmsgdGhhdCBk
b2Vzbid0IHRocm93IGV4Y2VwdGlvbnMgaGVyZS4KKyAgfQorCisgIC8vIElmIHRoZSBjb25zdHJ1
Y3RvciBhbmQgZGVzdHJ1Y3RvciBhcmUgbm90IGVub3VnaCBmb3Igc2V0dGluZyB1cAorICAvLyBh
bmQgY2xlYW5pbmcgdXAgZWFjaCB0ZXN0LCB5b3UgY2FuIGRlZmluZSB0aGUgZm9sbG93aW5nIG1l
dGhvZHM6CisKKyAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIHsKKyAgICAgLy8gQ29kZSBoZXJlIHdp
bGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjb25zdHJ1Y3RvciAocmlnaHQKKyAg
ICAgLy8gYmVmb3JlIGVhY2ggdGVzdCkuCisgIH0KKworICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJp
ZGUgeworICAgICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIg
ZWFjaCB0ZXN0IChyaWdodAorICAgICAvLyBiZWZvcmUgdGhlIGRlc3RydWN0b3IpLgorICB9CisK
KyAgLy8gT2JqZWN0cyBkZWNsYXJlZCBoZXJlIGNhbiBiZSB1c2VkIGJ5IGFsbCB0ZXN0cyBpbiB0
aGUgdGVzdCBjYXNlIGZvciBGb28uCit9OworCisvLyBUZXN0cyB0aGF0IHRoZSBGb286OkJhcigp
IG1ldGhvZCBkb2VzIEFiYy4KK1RFU1RfRihGb29UZXN0LCBNZXRob2RCYXJEb2VzQWJjKSB7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGlucHV0X2ZpbGVwYXRoID0gInRoaXMvcGFja2FnZS90ZXN0ZGF0
YS9teWlucHV0ZmlsZS5kYXQiOworICBjb25zdCBzdGQ6OnN0cmluZyBvdXRwdXRfZmlsZXBhdGgg
PSAidGhpcy9wYWNrYWdlL3Rlc3RkYXRhL215b3V0cHV0ZmlsZS5kYXQiOworICBGb28gZjsKKyAg
RVhQRUNUX0VRKGYuQmFyKGlucHV0X2ZpbGVwYXRoLCBvdXRwdXRfZmlsZXBhdGgpLCAwKTsKK30K
KworLy8gVGVzdHMgdGhhdCBGb28gZG9lcyBYeXouCitURVNUX0YoRm9vVGVzdCwgRG9lc1h5eikg
eworICAvLyBFeGVyY2lzZXMgdGhlIFh5eiBmZWF0dXJlIG9mIEZvby4KK30KKworfSAgLy8gbmFt
ZXNwYWNlCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICA6OnRlc3Rpbmc6
OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsK
K30KK2BgYAorCisKK1RoZSBgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpYCBmdW5jdGlvbiBw
YXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IKK2dvb2dsZXRlc3QgZmxhZ3MsIGFuZCByZW1vdmVz
IGFsbCByZWNvZ25pemVkIGZsYWdzLiBUaGlzIGFsbG93cyB0aGUgdXNlciB0bworY29udHJvbCBh
IHRlc3QgcHJvZ3JhbSdzIGJlaGF2aW9yIHZpYSB2YXJpb3VzIGZsYWdzLCB3aGljaCB3ZSdsbCBj
b3ZlciBpbgorW0FkdmFuY2VkR3VpZGVdKGFkdmFuY2VkLm1kKS4gWW91ICoqbXVzdCoqIGNhbGwg
dGhpcyBmdW5jdGlvbiBiZWZvcmUgY2FsbGluZworYFJVTl9BTExfVEVTVFMoKWAsIG9yIHRoZSBm
bGFncyB3b24ndCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4KKworT24gV2luZG93cywgYEluaXRH
b29nbGVUZXN0KClgIGFsc28gd29ya3Mgd2l0aCB3aWRlIHN0cmluZ3MsIHNvIGl0IGNhbiBiZSB1
c2VkCitpbiBwcm9ncmFtcyBjb21waWxlZCBpbiBgVU5JQ09ERWAgbW9kZSBhcyB3ZWxsLgorCitC
dXQgbWF5YmUgeW91IHRoaW5rIHRoYXQgd3JpdGluZyBhbGwgdGhvc2UgbWFpbigpIGZ1bmN0aW9u
cyBpcyB0b28gbXVjaCB3b3JrPyBXZQorYWdyZWUgd2l0aCB5b3UgY29tcGxldGVseSBhbmQgdGhh
dCdzIHdoeSBHb29nbGUgVGVzdCBwcm92aWRlcyBhIGJhc2ljCitpbXBsZW1lbnRhdGlvbiBvZiBt
YWluKCkuIElmIGl0IGZpdHMgeW91ciBuZWVkcywgdGhlbiBqdXN0IGxpbmsgeW91ciB0ZXN0IHdp
dGgKK2d0ZXN0XF9tYWluIGxpYnJhcnkgYW5kIHlvdSBhcmUgZ29vZCB0byBnby4KKworTk9URTog
YFBhcnNlR1VuaXRGbGFncygpYCBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBJbml0R29vZ2xl
VGVzdCgpYC4KKworCisjIyBLbm93biBMaW1pdGF0aW9ucworCisqICAgR29vZ2xlIFRlc3QgaXMg
ZGVzaWduZWQgdG8gYmUgdGhyZWFkLXNhZmUuIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyB0aHJlYWQt
c2FmZQorICAgIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGBwdGhyZWFkc2AgbGlicmFyeSBpcyBhdmFp
bGFibGUuIEl0IGlzIGN1cnJlbnRseQorICAgIF91bnNhZmVfIHRvIHVzZSBHb29nbGUgVGVzdCBh
c3NlcnRpb25zIGZyb20gdHdvIHRocmVhZHMgY29uY3VycmVudGx5IG9uCisgICAgb3RoZXIgc3lz
dGVtcyAoZS5nLiBXaW5kb3dzKS4gSW4gbW9zdCB0ZXN0cyB0aGlzIGlzIG5vdCBhbiBpc3N1ZSBh
cyB1c3VhbGx5CisgICAgdGhlIGFzc2VydGlvbnMgYXJlIGRvbmUgaW4gdGhlIG1haW4gdGhyZWFk
LiBJZiB5b3Ugd2FudCB0byBoZWxwLCB5b3UgY2FuCisgICAgdm9sdW50ZWVyIHRvIGltcGxlbWVu
dCB0aGUgbmVjZXNzYXJ5IHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGluCisgICAgYGd0ZXN0
LXBvcnQuaGAgZm9yIHlvdXIgcGxhdGZvcm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9kb2NzL3NhbXBsZXMubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL3Nh
bXBsZXMubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMThkY2NhMzgxNDkxZTE5ODIzMzJjNmQ0NDcyY2E4MmQwZDAy
MTcwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3Mvc2Ft
cGxlcy5tZApAQCAtMCwwICsxLDIyIEBACisjIEdvb2dsZXRlc3QgU2FtcGxlcyB7I3NhbXBsZXN9
CisKK0lmIHlvdSdyZSBsaWtlIHVzLCB5b3UnZCBsaWtlIHRvIGxvb2sgYXQgW2dvb2dsZXRlc3QK
K3NhbXBsZXMuXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvdHJlZS9tYXN0
ZXIvZ29vZ2xldGVzdC9zYW1wbGVzKQorVGhlIHNhbXBsZSBkaXJlY3RvcnkgaGFzIGEgbnVtYmVy
IG9mIHdlbGwtY29tbWVudGVkIHNhbXBsZXMgc2hvd2luZyBob3cgdG8gdXNlIGEKK3ZhcmlldHkg
b2YgZ29vZ2xldGVzdCBmZWF0dXJlcy4KKworKiAgIFNhbXBsZSAjMSBzaG93cyB0aGUgYmFzaWMg
c3RlcHMgb2YgdXNpbmcgZ29vZ2xldGVzdCB0byB0ZXN0IEMrKyBmdW5jdGlvbnMuCisqICAgU2Ft
cGxlICMyIHNob3dzIGEgbW9yZSBjb21wbGV4IHVuaXQgdGVzdCBmb3IgYSBjbGFzcyB3aXRoIG11
bHRpcGxlIG1lbWJlcgorICAgIGZ1bmN0aW9ucy4KKyogICBTYW1wbGUgIzMgdXNlcyBhIHRlc3Qg
Zml4dHVyZS4KKyogICBTYW1wbGUgIzQgdGVhY2hlcyB5b3UgaG93IHRvIHVzZSBnb29nbGV0ZXN0
IGFuZCBgZ29vZ2xldGVzdC5oYCB0b2dldGhlciB0bworICAgIGdldCB0aGUgYmVzdCBvZiBib3Ro
IGxpYnJhcmllcy4KKyogICBTYW1wbGUgIzUgcHV0cyBzaGFyZWQgdGVzdGluZyBsb2dpYyBpbiBh
IGJhc2UgdGVzdCBmaXh0dXJlLCBhbmQgcmV1c2VzIGl0IGluCisgICAgZGVyaXZlZCBmaXh0dXJl
cy4KKyogICBTYW1wbGUgIzYgZGVtb25zdHJhdGVzIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4K
KyogICBTYW1wbGUgIzcgdGVhY2hlcyB0aGUgYmFzaWNzIG9mIHZhbHVlLXBhcmFtZXRlcml6ZWQg
dGVzdHMuCisqICAgU2FtcGxlICM4IHNob3dzIHVzaW5nIGBDb21iaW5lKClgIGluIHZhbHVlLXBh
cmFtZXRlcml6ZWQgdGVzdHMuCisqICAgU2FtcGxlICM5IHNob3dzIHVzZSBvZiB0aGUgbGlzdGVu
ZXIgQVBJIHRvIG1vZGlmeSBHb29nbGUgVGVzdCdzIGNvbnNvbGUKKyAgICBvdXRwdXQgYW5kIHRo
ZSB1c2Ugb2YgaXRzIHJlZmxlY3Rpb24gQVBJIHRvIGluc3BlY3QgdGVzdCByZXN1bHRzLgorKiAg
IFNhbXBsZSAjMTAgc2hvd3MgdXNlIG9mIHRoZSBsaXN0ZW5lciBBUEkgdG8gaW1wbGVtZW50IGEg
cHJpbWl0aXZlIG1lbW9yeQorICAgIGxlYWsgY2hlY2tlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgKaW5kZXgg
MTIxZGMxZmI1YWM1ZDU5YTMzZDUzMDM0MDU4ZWVlOTFjMjEyYTIwOC4uMjBjNTRkODY5NTE5ZjY5
MzBlN2ViZmQyYzA4MDViYWNhNDIyMTZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgKQEAgLTI2LDE5ICsy
NiwxOSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CiAvLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRo
ZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIFRoZSBHb29n
bGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAv
LyBUaGlzIGhlYWRlciBmaWxlIGRlZmluZXMgdGhlIHB1YmxpYyBBUEkgZm9yIGRlYXRoIHRlc3Rz
LiAgSXQgaXMKIC8vICNpbmNsdWRlZCBieSBndGVzdC5oIHNvIGEgdXNlciBkb2Vzbid0IG5lZWQg
dG8gaW5jbHVkZSB0aGlzCiAvLyBkaXJlY3RseS4KKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5P
VCBERUxFVEUKIAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0RFQVRIX1RFU1Rf
SF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9ERUFUSF9URVNUX0hfCiAKLSNp
bmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmg+CisjaW5j
bHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5oIgogCiBuYW1l
c3BhY2UgdGVzdGluZyB7CiAKQEAgLTUxLDYgKzUxLDE3IEBAIEdURVNUX0RFQ0xBUkVfc3RyaW5n
XyhkZWF0aF90ZXN0X3N0eWxlKTsKIAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCiAKK25hbWVz
cGFjZSBpbnRlcm5hbCB7CisKKy8vIFJldHVybnMgYSBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcg
d2hldGhlciB0aGUgY2FsbGVyIGlzIGN1cnJlbnRseQorLy8gZXhlY3V0aW5nIGluIHRoZSBjb250
ZXh0IG9mIHRoZSBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nlc3MuICBUb29scyBzdWNoIGFzCisvLyBW
YWxncmluZCBoZWFwIGNoZWNrZXJzIG1heSBuZWVkIHRoaXMgdG8gbW9kaWZ5IHRoZWlyIGJlaGF2
aW9yIGluIGRlYXRoCisvLyB0ZXN0cy4gIElNUE9SVEFOVDogVGhpcyBpcyBhbiBpbnRlcm5hbCB1
dGlsaXR5LiAgVXNpbmcgaXQgbWF5IGJyZWFrIHRoZQorLy8gaW1wbGVtZW50YXRpb24gb2YgZGVh
dGggdGVzdHMuICBVc2VyIGNvZGUgTVVTVCBOT1QgdXNlIGl0LgorR1RFU1RfQVBJXyBib29sIElu
RGVhdGhUZXN0Q2hpbGQoKTsKKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKIC8vIFRoZSBm
b2xsb3dpbmcgbWFjcm9zIGFyZSB1c2VmdWwgZm9yIHdyaXRpbmcgZGVhdGggdGVzdHMuCiAKIC8v
IEhlcmUncyB3aGF0IGhhcHBlbnMgd2hlbiBhbiBBU1NFUlRfREVBVEgqIG9yIEVYUEVDVF9ERUFU
SCogaXMKQEAgLTc1LDcgKzg2LDcgQEAgR1RFU1RfREVDTEFSRV9zdHJpbmdfKGRlYXRoX3Rlc3Rf
c3R5bGUpOwogLy8gICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgewogLy8gICAgIEVYUEVD
VF9ERUFUSChzZXJ2ZXIuUHJvY2Vzc1JlcXVlc3QoaSksCiAvLyAgICAgICAgICAgICAgICAgICJJ
bnZhbGlkIHJlcXVlc3QgLiogaW4gUHJvY2Vzc1JlcXVlc3QoKSIpCi0vLyAgICAgICAgIDw8ICJG
YWlsZWQgdG8gZGllIG9uIHJlcXVlc3QgIiA8PCBpKTsKKy8vICAgICAgICAgICAgICAgICAgPDwg
IkZhaWxlZCB0byBkaWUgb24gcmVxdWVzdCAiIDw8IGk7CiAvLyAgIH0KIC8vCiAvLyAgIEFTU0VS
VF9FWElUKHNlcnZlci5FeGl0Tm93KCksIDo6dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCksICJF
eGl0aW5nIik7CkBAIC04OCwxMCArOTksMTEgQEAgR1RFU1RfREVDTEFSRV9zdHJpbmdfKGRlYXRo
X3Rlc3Rfc3R5bGUpOwogLy8KIC8vIE9uIHRoZSByZWd1bGFyIGV4cHJlc3Npb25zIHVzZWQgaW4g
ZGVhdGggdGVzdHM6CiAvLworLy8gICBHT09HTEVURVNUX0NNMDAwNSBETyBOT1QgREVMRVRFCiAv
LyAgIE9uIFBPU0lYLWNvbXBsaWFudCBzeXN0ZW1zICgqbml4KSwgd2UgdXNlIHRoZSA8cmVnZXgu
aD4gbGlicmFyeSwKIC8vICAgd2hpY2ggdXNlcyB0aGUgUE9TSVggZXh0ZW5kZWQgcmVnZXggc3lu
dGF4LgogLy8KLS8vICAgT24gb3RoZXIgcGxhdGZvcm1zIChlLmcuIFdpbmRvd3MpLCB3ZSBvbmx5
IHN1cHBvcnQgYSBzaW1wbGUgcmVnZXgKKy8vICAgT24gb3RoZXIgcGxhdGZvcm1zIChlLmcuIFdp
bmRvd3Mgb3IgTWFjKSwgd2Ugb25seSBzdXBwb3J0IGEgc2ltcGxlIHJlZ2V4CiAvLyAgIHN5bnRh
eCBpbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIEdvb2dsZSBUZXN0LiAgVGhpcyBsaW1pdGVkCiAvLyAg
IGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSBlbm91Z2ggbW9zdCBvZiB0aGUgdGltZSB3aGVuIHdy
aXRpbmcKIC8vICAgZGVhdGggdGVzdHM7IHRob3VnaCBpdCBsYWNrcyBtYW55IGZlYXR1cmVzIHlv
dSBjYW4gZmluZCBpbiBQQ1JFCkBAIC0xNDksMjkgKzE2MSwyOSBAQCBHVEVTVF9ERUNMQVJFX3N0
cmluZ18oZGVhdGhfdGVzdF9zdHlsZSk7CiAvLyAgIGlzIHJhcmVseSBhIHByb2JsZW0gYXMgcGVv
cGxlIHVzdWFsbHkgZG9uJ3QgcHV0IHRoZSB0ZXN0IGJpbmFyeQogLy8gICBkaXJlY3RvcnkgaW4g
UEFUSC4KIC8vCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogbWFrZSB0aHJlYWQtc2FmZSBkZWF0
aCB0ZXN0cyBzZWFyY2ggdGhlIFBBVEguCisvLyBGSVhNRTogbWFrZSB0aHJlYWQtc2FmZSBkZWF0
aCB0ZXN0cyBzZWFyY2ggdGhlIFBBVEguCiAKIC8vIEFzc2VydHMgdGhhdCBhIGdpdmVuIHN0YXRl
bWVudCBjYXVzZXMgdGhlIHByb2dyYW0gdG8gZXhpdCwgd2l0aCBhbgogLy8gaW50ZWdlciBleGl0
IHN0YXR1cyB0aGF0IHNhdGlzZmllcyBwcmVkaWNhdGUsIGFuZCBlbWl0dGluZyBlcnJvciBvdXRw
dXQKIC8vIHRoYXQgbWF0Y2hlcyByZWdleC4KLSNkZWZpbmUgQVNTRVJUX0VYSVQoc3RhdGVtZW50
LCBwcmVkaWNhdGUsIHJlZ2V4KSBcCi0gIEdURVNUX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJl
ZGljYXRlLCByZWdleCwgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCisjIGRlZmluZSBBU1NFUlRfRVhJ
VChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpIFwKKyAgICBHVEVTVF9ERUFUSF9URVNUXyhz
dGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIEdURVNUX0ZBVEFMX0ZBSUxVUkVfKQogCiAvLyBM
aWtlIEFTU0VSVF9FWElULCBidXQgY29udGludWVzIG9uIHRvIHN1Y2Nlc3NpdmUgdGVzdHMgaW4g
dGhlCiAvLyB0ZXN0IGNhc2UsIGlmIGFueToKLSNkZWZpbmUgRVhQRUNUX0VYSVQoc3RhdGVtZW50
LCBwcmVkaWNhdGUsIHJlZ2V4KSBcCi0gIEdURVNUX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJl
ZGljYXRlLCByZWdleCwgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8pCisjIGRlZmluZSBFWFBFQ1Rf
RVhJVChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpIFwKKyAgICBHVEVTVF9ERUFUSF9URVNU
XyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVfKQog
CiAvLyBBc3NlcnRzIHRoYXQgYSBnaXZlbiBzdGF0ZW1lbnQgY2F1c2VzIHRoZSBwcm9ncmFtIHRv
IGV4aXQsIGVpdGhlciBieQogLy8gZXhwbGljaXRseSBleGl0aW5nIHdpdGggYSBub256ZXJvIGV4
aXQgY29kZSBvciBiZWluZyBraWxsZWQgYnkgYQogLy8gc2lnbmFsLCBhbmQgZW1pdHRpbmcgZXJy
b3Igb3V0cHV0IHRoYXQgbWF0Y2hlcyByZWdleC4KLSNkZWZpbmUgQVNTRVJUX0RFQVRIKHN0YXRl
bWVudCwgcmVnZXgpIFwKLSAgQVNTRVJUX0VYSVQoc3RhdGVtZW50LCA6OnRlc3Rpbmc6OmludGVy
bmFsOjpFeGl0ZWRVbnN1Y2Nlc3NmdWxseSwgcmVnZXgpCisjIGRlZmluZSBBU1NFUlRfREVBVEgo
c3RhdGVtZW50LCByZWdleCkgXAorICAgIEFTU0VSVF9FWElUKHN0YXRlbWVudCwgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6RXhpdGVkVW5zdWNjZXNzZnVsbHksIHJlZ2V4KQogCiAvLyBMaWtlIEFTU0VS
VF9ERUFUSCwgYnV0IGNvbnRpbnVlcyBvbiB0byBzdWNjZXNzaXZlIHRlc3RzIGluIHRoZQogLy8g
dGVzdCBjYXNlLCBpZiBhbnk6Ci0jZGVmaW5lIEVYUEVDVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4
KSBcCi0gIEVYUEVDVF9FWElUKHN0YXRlbWVudCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RXhpdGVk
VW5zdWNjZXNzZnVsbHksIHJlZ2V4KQorIyBkZWZpbmUgRVhQRUNUX0RFQVRIKHN0YXRlbWVudCwg
cmVnZXgpIFwKKyAgICBFWFBFQ1RfRVhJVChzdGF0ZW1lbnQsIDo6dGVzdGluZzo6aW50ZXJuYWw6
OkV4aXRlZFVuc3VjY2Vzc2Z1bGx5LCByZWdleCkKIAogLy8gVHdvIHByZWRpY2F0ZSBjbGFzc2Vz
IHRoYXQgY2FuIGJlIHVzZWQgaW4ge0FTU0VSVCxFWFBFQ1R9X0VYSVQqOgogCkBAIC0xODcsOSAr
MTk5LDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gRXhpdGVkV2l0aENvZGUgewogICBjb25zdCBpbnQg
ZXhpdF9jb2RlXzsKIH07CiAKLSNpZiAhR1RFU1RfT1NfV0lORE9XUworIyBpZiAhR1RFU1RfT1Nf
V0lORE9XUyAmJiAhR1RFU1RfT1NfRlVDSFNJQQogLy8gVGVzdHMgdGhhdCBhbiBleGl0IGNvZGUg
ZGVzY3JpYmVzIGFuIGV4aXQgZHVlIHRvIHRlcm1pbmF0aW9uIGJ5IGEKIC8vIGdpdmVuIHNpZ25h
bC4KKy8vIEdPT0dMRVRFU1RfQ00wMDA2IERPIE5PVCBERUxFVEUKIGNsYXNzIEdURVNUX0FQSV8g
S2lsbGVkQnlTaWduYWwgewogIHB1YmxpYzoKICAgZXhwbGljaXQgS2lsbGVkQnlTaWduYWwoaW50
IHNpZ251bSk7CkBAIC0xOTcsNyArMjEwLDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBLaWxsZWRCeVNp
Z25hbCB7CiAgcHJpdmF0ZToKICAgY29uc3QgaW50IHNpZ251bV87CiB9OwotI2VuZGlmICAvLyAh
R1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1MKIAogLy8gRVhQ
RUNUX0RFQlVHX0RFQVRIIGFzc2VydHMgdGhhdCB0aGUgZ2l2ZW4gc3RhdGVtZW50cyBkaWUgaW4g
ZGVidWcgbW9kZS4KIC8vIFRoZSBkZWF0aCB0ZXN0aW5nIGZyYW1ld29yayBjYXVzZXMgdGhpcyB0
byBoYXZlIGludGVyZXN0aW5nIHNlbWFudGljcywKQEAgLTI0Miw0MCArMjU1LDg4IEBAIGNsYXNz
IEdURVNUX0FQSV8gS2lsbGVkQnlTaWduYWwgewogLy8gICBFWFBFQ1RfRVEoMTIsIERpZUluRGVi
dWdPcjEyKCZzaWRlZWZmZWN0KSk7CiAvLyB9LCAiZGVhdGgiKTsKIC8vCi0jaWZkZWYgTkRFQlVH
CisjIGlmZGVmIE5ERUJVRwogCi0jZGVmaW5lIEVYUEVDVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQs
IHJlZ2V4KSBcCi0gIGRvIHsgc3RhdGVtZW50OyB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFs
OjpBbHdheXNGYWxzZSgpKQorIyAgZGVmaW5lIEVYUEVDVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQs
IHJlZ2V4KSBcCisgIEdURVNUX0VYRUNVVEVfU1RBVEVNRU5UXyhzdGF0ZW1lbnQsIHJlZ2V4KQog
Ci0jZGVmaW5lIEFTU0VSVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCi0gIGRvIHsg
c3RhdGVtZW50OyB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgpKQor
IyAgZGVmaW5lIEFTU0VSVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgIEdURVNU
X0VYRUNVVEVfU1RBVEVNRU5UXyhzdGF0ZW1lbnQsIHJlZ2V4KQogCi0jZWxzZQorIyBlbHNlCiAK
LSNkZWZpbmUgRVhQRUNUX0RFQlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKKyMgIGRlZmlu
ZSBFWFBFQ1RfREVCVUdfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAogICBFWFBFQ1RfREVBVEgo
c3RhdGVtZW50LCByZWdleCkKIAotI2RlZmluZSBBU1NFUlRfREVCVUdfREVBVEgoc3RhdGVtZW50
LCByZWdleCkgXAorIyAgZGVmaW5lIEFTU0VSVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4
KSBcCiAgIEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KQogCi0jZW5kaWYgIC8vIE5ERUJV
RyBmb3IgRVhQRUNUX0RFQlVHX0RFQVRICisjIGVuZGlmICAvLyBOREVCVUcgZm9yIEVYUEVDVF9E
RUJVR19ERUFUSAogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCisvLyBUaGlzIG1h
Y3JvIGlzIHVzZWQgZm9yIGltcGxlbWVudGluZyBtYWNyb3Mgc3VjaCBhcworLy8gRVhQRUNUX0RF
QVRIX0lGX1NVUFBPUlRFRCBhbmQgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCBvbiBzeXN0ZW1z
IHdoZXJlCisvLyBkZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZC4gVGhvc2UgbWFjcm9zIG11
c3QgY29tcGlsZSBvbiBzdWNoIHN5c3RlbXMKKy8vIGlmZiBFWFBFQ1RfREVBVEggYW5kIEFTU0VS
VF9ERUFUSCBjb21waWxlIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycyBvbgorLy8gc3lzdGVtcyB0
aGF0IHN1cHBvcnQgZGVhdGggdGVzdHMuIFRoaXMgYWxsb3dzIG9uZSB0byB3cml0ZSBzdWNoIGEg
bWFjcm8KKy8vIG9uIGEgc3lzdGVtIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCBkZWF0aCB0ZXN0cyBh
bmQgYmUgc3VyZSB0aGF0IGl0IHdpbGwKKy8vIGNvbXBpbGUgb24gYSBkZWF0aC10ZXN0IHN1cHBv
cnRpbmcgc3lzdGVtLiBJdCBpcyBleHBvc2VkIHB1YmxpY2x5IHNvIHRoYXQKKy8vIHN5c3RlbXMg
dGhhdCBoYXZlIGRlYXRoLXRlc3RzIHdpdGggc3RyaWN0ZXIgcmVxdWlyZW1lbnRzIHRoYW4KKy8v
IEdURVNUX0hBU19ERUFUSF9URVNUIGNhbiB3cml0ZSB0aGVpciBvd24gZXF1aXZhbGVudCBvZgor
Ly8gRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCBhbmQgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRF
RC4KKy8vCisvLyBQYXJhbWV0ZXJzOgorLy8gICBzdGF0ZW1lbnQgLSAgQSBzdGF0ZW1lbnQgdGhh
dCBhIG1hY3JvIHN1Y2ggYXMgRVhQRUNUX0RFQVRIIHdvdWxkIHRlc3QKKy8vICAgICAgICAgICAg
ICAgIGZvciBwcm9ncmFtIHRlcm1pbmF0aW9uLiBUaGlzIG1hY3JvIGhhcyB0byBtYWtlIHN1cmUg
dGhpcworLy8gICAgICAgICAgICAgICAgc3RhdGVtZW50IGlzIGNvbXBpbGVkIGJ1dCBub3QgZXhl
Y3V0ZWQsIHRvIGVuc3VyZSB0aGF0CisvLyAgICAgICAgICAgICAgICBFWFBFQ1RfREVBVEhfSUZf
U1VQUE9SVEVEIGNvbXBpbGVzIHdpdGggYSBjZXJ0YWluCisvLyAgICAgICAgICAgICAgICBwYXJh
bWV0ZXIgaWZmIEVYUEVDVF9ERUFUSCBjb21waWxlcyB3aXRoIGl0LgorLy8gICByZWdleCAgICAg
LSAgQSByZWdleCB0aGF0IGEgbWFjcm8gc3VjaCBhcyBFWFBFQ1RfREVBVEggd291bGQgdXNlIHRv
IHRlc3QKKy8vICAgICAgICAgICAgICAgIHRoZSBvdXRwdXQgb2Ygc3RhdGVtZW50LiAgVGhpcyBw
YXJhbWV0ZXIgaGFzIHRvIGJlCisvLyAgICAgICAgICAgICAgICBjb21waWxlZCBidXQgbm90IGV2
YWx1YXRlZCBieSB0aGlzIG1hY3JvLCB0byBlbnN1cmUgdGhhdAorLy8gICAgICAgICAgICAgICAg
dGhpcyBtYWNybyBvbmx5IGFjY2VwdHMgZXhwcmVzc2lvbnMgdGhhdCBhIG1hY3JvIHN1Y2ggYXMK
Ky8vICAgICAgICAgICAgICAgIEVYUEVDVF9ERUFUSCB3b3VsZCBhY2NlcHQuCisvLyAgIHRlcm1p
bmF0b3IgLSBNdXN0IGJlIGFuIGVtcHR5IHN0YXRlbWVudCBmb3IgRVhQRUNUX0RFQVRIX0lGX1NV
UFBPUlRFRAorLy8gICAgICAgICAgICAgICAgYW5kIGEgcmV0dXJuIHN0YXRlbWVudCBmb3IgQVNT
RVJUX0RFQVRIX0lGX1NVUFBPUlRFRC4KKy8vICAgICAgICAgICAgICAgIFRoaXMgZW5zdXJlcyB0
aGF0IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgd2lsbCBub3QKKy8vICAgICAgICAgICAgICAg
IGNvbXBpbGUgaW5zaWRlIGZ1bmN0aW9ucyB3aGVyZSBBU1NFUlRfREVBVEggZG9lc24ndAorLy8g
ICAgICAgICAgICAgICAgY29tcGlsZS4KKy8vCisvLyAgVGhlIGJyYW5jaCB0aGF0IGhhcyBhbiBh
bHdheXMgZmFsc2UgY29uZGl0aW9uIGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQKKy8vICBzdGF0ZW1l
bnQgYW5kIHJlZ2V4IGFyZSBjb21waWxlZCAoYW5kIHRodXMgc3ludGFjdGljYWxseSBjb3JyZWN0
KSBidXQKKy8vICBuZXZlciBleGVjdXRlZC4gVGhlIHVucmVhY2hhYmxlIGNvZGUgbWFjcm8gcHJv
dGVjdHMgdGhlIHRlcm1pbmF0b3IKKy8vICBzdGF0ZW1lbnQgZnJvbSBnZW5lcmF0aW5nIGFuICd1
bnJlYWNoYWJsZSBjb2RlJyB3YXJuaW5nIGluIGNhc2UKKy8vICBzdGF0ZW1lbnQgdW5jb25kaXRp
b25hbGx5IHJldHVybnMgb3IgdGhyb3dzLiBUaGUgTWVzc2FnZSBjb25zdHJ1Y3RvciBhdAorLy8g
IHRoZSBlbmQgYWxsb3dzIHRoZSBzeW50YXggb2Ygc3RyZWFtaW5nIGFkZGl0aW9uYWwgbWVzc2Fn
ZXMgaW50byB0aGUKKy8vICBtYWNybywgZm9yIGNvbXBpbGF0aW9uYWwgY29tcGF0aWJpbGl0eSB3
aXRoIEVYUEVDVF9ERUFUSC9BU1NFUlRfREVBVEguCisjIGRlZmluZSBHVEVTVF9VTlNVUFBPUlRF
RF9ERUFUSF9URVNUKHN0YXRlbWVudCwgcmVnZXgsIHRlcm1pbmF0b3IpIFwKKyAgICBHVEVTVF9B
TUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCisgICAgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFs
d2F5c1RydWUoKSkgeyBcCisgICAgICBHVEVTVF9MT0dfKFdBUk5JTkcpIFwKKyAgICAgICAgICA8
PCAiRGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS5cbiIgXAor
ICAgICAgICAgIDw8ICJTdGF0ZW1lbnQgJyIgI3N0YXRlbWVudCAiJyBjYW5ub3QgYmUgdmVyaWZp
ZWQuIjsgXAorICAgIH0gZWxzZSBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2Uo
KSkgeyBcCisgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpSRTo6UGFydGlhbE1hdGNoKCIuKiIs
IChyZWdleCkpOyBcCisgICAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5J
TkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKKyAgICAgIHRlcm1pbmF0b3I7IFwKKyAgICB9IGVsc2Ug
XAorICAgICAgOjp0ZXN0aW5nOjpNZXNzYWdlKCkKKwogLy8gRVhQRUNUX0RFQVRIX0lGX1NVUFBP
UlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBhbmQKIC8vIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQo
c3RhdGVtZW50LCByZWdleCkgZXhwYW5kIHRvIHJlYWwgZGVhdGggdGVzdHMgaWYKIC8vIGRlYXRo
IHRlc3RzIGFyZSBzdXBwb3J0ZWQ7IG90aGVyd2lzZSB0aGV5IGp1c3QgaXNzdWUgYSB3YXJuaW5n
LiAgVGhpcyBpcwogLy8gdXNlZnVsIHdoZW4geW91IGFyZSBjb21iaW5pbmcgZGVhdGggdGVzdCBh
c3NlcnRpb25zIHdpdGggbm9ybWFsIHRlc3QKIC8vIGFzc2VydGlvbnMgaW4gb25lIHRlc3QuCiAj
aWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLSNkZWZpbmUgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRF
RChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisjIGRlZmluZSBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVE
KHN0YXRlbWVudCwgcmVnZXgpIFwKICAgICBFWFBFQ1RfREVBVEgoc3RhdGVtZW50LCByZWdleCkK
LSNkZWZpbmUgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisj
IGRlZmluZSBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKICAg
ICBBU1NFUlRfREVBVEgoc3RhdGVtZW50LCByZWdleCkKICNlbHNlCi0jZGVmaW5lIEVYUEVDVF9E
RUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAotICAgIEdURVNUX1VOU1VQUE9S
VEVEX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcmVnZXgsICkKLSNkZWZpbmUgQVNTRVJUX0RFQVRI
X0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCi0gICAgR1RFU1RfVU5TVVBQT1JURURf
REVBVEhfVEVTVF8oc3RhdGVtZW50LCByZWdleCwgcmV0dXJuKQorIyBkZWZpbmUgRVhQRUNUX0RF
QVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgICAgR1RFU1RfVU5TVVBQT1JU
RURfREVBVEhfVEVTVChzdGF0ZW1lbnQsIHJlZ2V4LCApCisjIGRlZmluZSBBU1NFUlRfREVBVEhf
SUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKKyAgICBHVEVTVF9VTlNVUFBPUlRFRF9E
RUFUSF9URVNUKHN0YXRlbWVudCwgcmVnZXgsIHJldHVybikKICNlbmRpZgogCiB9ICAvLyBuYW1l
c3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaAppbmRleCBmMTM1YjY5NDI3ZmU5ZWJlMjM3YzRjZGE3YTlj
MmYwZDc4ZGQ3NjhlLi41Y2EwNDE2MTRjYjM1NTkyMmYzNTViODkzZjljODRhM2I3ZjUyYzZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LW1l
c3NhZ2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0
LW1lc3NhZ2UuaApAQCAtMjYsMTAgKzI2LDkgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKwogLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbikKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29v
Z2xlIFRlc3QpCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29y
ayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVzIHRoZSBNZXNz
YWdlIGNsYXNzLgogLy8KQEAgLTQzLDEzICs0MiwyMSBAQAogLy8gdG8gQ0hBTkdFIFdJVEhPVVQg
Tk9USUNFLiAgVGhlcmVmb3JlIERPIE5PVCBERVBFTkQgT04gSVQgaW4gYSB1c2VyCiAvLyBwcm9n
cmFtIQogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RF
U1RfSU5DTFVERV9HVEVTVF9HVEVTVF9NRVNTQUdFX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVf
R1RFU1RfR1RFU1RfTUVTU0FHRV9IXwogCiAjaW5jbHVkZSA8bGltaXRzPgogCi0jaW5jbHVkZSA8
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtaW50ZXJuYWwuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmgi
CisKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQyNTEgXAorLyogY2xhc3MgQSBu
ZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBieSBjbGllbnRzIG9mIGNsYXNz
IEIgKi8pCisKKy8vIEVuc3VyZXMgdGhhdCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgb3BlcmF0b3I8
PCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KKy8vIFNlZSBNZXNzYWdlJiBvcGVyYXRvcjw8KC4u
LikgYmVsb3cgZm9yIHdoeS4KK3ZvaWQgb3BlcmF0b3I8PChjb25zdCB0ZXN0aW5nOjppbnRlcm5h
bDo6U2VjcmV0JiwgaW50KTsKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC01OCw3ICs2NSw3
IEBAIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIC8vIFR5cGljYWwgdXNhZ2U6CiAvLwogLy8gICAxLiBZ
b3Ugc3RyZWFtIGEgYnVuY2ggb2YgdmFsdWVzIHRvIGEgTWVzc2FnZSBvYmplY3QuCi0vLyAgICAg
IEl0IHdpbGwgcmVtZW1iZXIgdGhlIHRleHQgaW4gYSBTdHJTdHJlYW0uCisvLyAgICAgIEl0IHdp
bGwgcmVtZW1iZXIgdGhlIHRleHQgaW4gYSBzdHJpbmdzdHJlYW0uCiAvLyAgIDIuIFRoZW4geW91
IHN0cmVhbSB0aGUgTWVzc2FnZSBvYmplY3QgdG8gYW4gb3N0cmVhbS4KIC8vICAgICAgVGhpcyBj
YXVzZXMgdGhlIHRleHQgaW4gdGhlIE1lc3NhZ2UgdG8gYmUgc3RyZWFtZWQKIC8vICAgICAgdG8g
dGhlIG9zdHJlYW0uCkBAIC03NCw3ICs4MSw3IEBAIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIC8vIE1l
c3NhZ2UgaXMgbm90IGludGVuZGVkIHRvIGJlIGluaGVyaXRlZCBmcm9tLiAgSW4gcGFydGljdWxh
ciwgaXRzCiAvLyBkZXN0cnVjdG9yIGlzIG5vdCB2aXJ0dWFsLgogLy8KLS8vIE5vdGUgdGhhdCBT
dHJTdHJlYW0gYmVoYXZlcyBkaWZmZXJlbnRseSBpbiBnY2MgYW5kIGluIE1TVkMuICBZb3UKKy8v
IE5vdGUgdGhhdCBzdHJpbmdzdHJlYW0gYmVoYXZlcyBkaWZmZXJlbnRseSBpbiBnY2MgYW5kIGlu
IE1TVkMuICBZb3UKIC8vIGNhbiBzdHJlYW0gYSBOVUxMIGNoYXIgcG9pbnRlciB0byBpdCBpbiB0
aGUgZm9ybWVyLCBidXQgbm90IGluIHRoZQogLy8gbGF0dGVyIChpdCBjYXVzZXMgYW4gYWNjZXNz
IHZpb2xhdGlvbiBpZiB5b3UgZG8pLiAgVGhlIE1lc3NhZ2UKIC8vIGNsYXNzIGhpZGVzIHRoaXMg
ZGlmZmVyZW5jZSBieSB0cmVhdGluZyBhIE5VTEwgY2hhciBwb2ludGVyIGFzCkBAIC04NywyNyAr
OTQsMTggQEAgY2xhc3MgR1RFU1RfQVBJXyBNZXNzYWdlIHsKIAogIHB1YmxpYzoKICAgLy8gQ29u
c3RydWN0cyBhbiBlbXB0eSBNZXNzYWdlLgotICAvLyBXZSBhbGxvY2F0ZSB0aGUgU3RyU3RyZWFt
IHNlcGFyYXRlbHkgYmVjYXVzZSBpdCBvdGhlcndpc2UgZWFjaCB1c2Ugb2YKLSAgLy8gQVNTRVJU
L0VYUEVDVCBpbiBhIHByb2NlZHVyZSBhZGRzIG92ZXIgMjAwIGJ5dGVzIHRvIHRoZSBwcm9jZWR1
cmUncwotICAvLyBzdGFjayBmcmFtZSBsZWFkaW5nIHRvIGh1Z2Ugc3RhY2sgZnJhbWVzIGluIHNv
bWUgY2FzZXM7IGdjYyBkb2VzIG5vdCByZXVzZQotICAvLyB0aGUgc3RhY2sgc3BhY2UuCi0gIE1l
c3NhZ2UoKSA6IHNzXyhuZXcgaW50ZXJuYWw6OlN0clN0cmVhbSkgewotICAgIC8vIEJ5IGRlZmF1
bHQsIHdlIHdhbnQgdGhlcmUgdG8gYmUgZW5vdWdoIHByZWNpc2lvbiB3aGVuIHByaW50aW5nCi0g
ICAgLy8gYSBkb3VibGUgdG8gYSBNZXNzYWdlLgotICAgICpzc18gPDwgc3RkOjpzZXRwcmVjaXNp
b24oc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpkaWdpdHMxMCArIDIpOwotICB9CisgIE1l
c3NhZ2UoKTsKIAogICAvLyBDb3B5IGNvbnN0cnVjdG9yLgotICBNZXNzYWdlKGNvbnN0IE1lc3Nh
Z2UmIG1zZykgOiBzc18obmV3IGludGVybmFsOjpTdHJTdHJlYW0pIHsgIC8vIE5PTElOVAorICBN
ZXNzYWdlKGNvbnN0IE1lc3NhZ2UmIG1zZykgOiBzc18obmV3IDo6c3RkOjpzdHJpbmdzdHJlYW0p
IHsgIC8vIE5PTElOVAogICAgICpzc18gPDwgbXNnLkdldFN0cmluZygpOwogICB9CiAKICAgLy8g
Q29uc3RydWN0cyBhIE1lc3NhZ2UgZnJvbSBhIEMtc3RyaW5nLgotICBleHBsaWNpdCBNZXNzYWdl
KGNvbnN0IGNoYXIqIHN0cikgOiBzc18obmV3IGludGVybmFsOjpTdHJTdHJlYW0pIHsKKyAgZXhw
bGljaXQgTWVzc2FnZShjb25zdCBjaGFyKiBzdHIpIDogc3NfKG5ldyA6OnN0ZDo6c3RyaW5nc3Ry
ZWFtKSB7CiAgICAgKnNzXyA8PCBzdHI7CiAgIH0KIAotICB+TWVzc2FnZSgpIHsgZGVsZXRlIHNz
XzsgfQogI2lmIEdURVNUX09TX1NZTUJJQU4KICAgLy8gU3RyZWFtcyBhIHZhbHVlIChlaXRoZXIg
YSBwb2ludGVyIG9yIG5vdCkgdG8gdGhpcyBvYmplY3QuCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgpAQCAtMTE5LDcgKzExNywyMiBAQCBjbGFzcyBHVEVTVF9BUElfIE1lc3NhZ2UgewogICAvLyBT
dHJlYW1zIGEgbm9uLXBvaW50ZXIgdmFsdWUgdG8gdGhpcyBvYmplY3QuCiAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogICBpbmxpbmUgTWVzc2FnZSYgb3BlcmF0b3IgPDwoY29uc3QgVCYgdmFsKSB7
Ci0gICAgOjpHVGVzdFN0cmVhbVRvSGVscGVyKHNzXywgdmFsKTsKKyAgICAvLyBTb21lIGxpYnJh
cmllcyBvdmVybG9hZCA8PCBmb3IgU1RMIGNvbnRhaW5lcnMuICBUaGVzZQorICAgIC8vIG92ZXJs
b2FkcyBhcmUgZGVmaW5lZCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZSBpbnN0ZWFkIG9mIDo6c3Rk
LgorICAgIC8vCisgICAgLy8gQysrJ3Mgc3ltYm9sIGxvb2t1cCBydWxlIChpLmUuIEtvZW5pZyBs
b29rdXApIHNheXMgdGhhdCB0aGVzZQorICAgIC8vIG92ZXJsb2FkcyBhcmUgdmlzaWJsZSBpbiBl
aXRoZXIgdGhlIHN0ZCBuYW1lc3BhY2Ugb3IgdGhlIGdsb2JhbAorICAgIC8vIG5hbWVzcGFjZSwg
YnV0IG5vdCBvdGhlciBuYW1lc3BhY2VzLCBpbmNsdWRpbmcgdGhlIHRlc3RpbmcKKyAgICAvLyBu
YW1lc3BhY2Ugd2hpY2ggR29vZ2xlIFRlc3QncyBNZXNzYWdlIGNsYXNzIGlzIGluLgorICAgIC8v
CisgICAgLy8gVG8gYWxsb3cgU1RMIGNvbnRhaW5lcnMgKGFuZCBvdGhlciB0eXBlcyB0aGF0IGhh
cyBhIDw8IG9wZXJhdG9yCisgICAgLy8gZGVmaW5lZCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZSkg
dG8gYmUgdXNlZCBpbiBHb29nbGUgVGVzdAorICAgIC8vIGFzc2VydGlvbnMsIHRlc3Rpbmc6Ok1l
c3NhZ2UgbXVzdCBhY2Nlc3MgdGhlIGN1c3RvbSA8PCBvcGVyYXRvcgorICAgIC8vIGZyb20gdGhl
IGdsb2JhbCBuYW1lc3BhY2UuICBXaXRoIHRoaXMgdXNpbmcgZGVjbGFyYXRpb24sCisgICAgLy8g
b3ZlcmxvYWRzIG9mIDw8IGRlZmluZWQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UgYW5kIHRob3Nl
CisgICAgLy8gdmlzaWJsZSB2aWEgS29lbmlnIGxvb2t1cCBhcmUgYm90aCBleHBvc2VkIGluIHRo
aXMgZnVuY3Rpb24uCisgICAgdXNpbmcgOjpvcGVyYXRvciA8PDsKKyAgICAqc3NfIDw8IHZhbDsK
ICAgICByZXR1cm4gKnRoaXM7CiAgIH0KIApAQCAtMTQxLDcgKzE1NCw3IEBAIGNsYXNzIEdURVNU
X0FQSV8gTWVzc2FnZSB7CiAgICAgaWYgKHBvaW50ZXIgPT0gTlVMTCkgewogICAgICAgKnNzXyA8
PCAiKG51bGwpIjsKICAgICB9IGVsc2UgewotICAgICAgOjpHVGVzdFN0cmVhbVRvSGVscGVyKHNz
XywgcG9pbnRlcik7CisgICAgICAqc3NfIDw8IHBvaW50ZXI7CiAgICAgfQogICAgIHJldHVybiAq
dGhpczsKICAgfQpAQCAtMTY1LDEyICsxNzgsOCBAQCBjbGFzcyBHVEVTVF9BUElfIE1lc3NhZ2Ug
ewogCiAgIC8vIFRoZXNlIHR3byBvdmVybG9hZHMgYWxsb3cgc3RyZWFtaW5nIGEgd2lkZSBDIHN0
cmluZyB0byBhIE1lc3NhZ2UKICAgLy8gdXNpbmcgdGhlIFVURi04IGVuY29kaW5nLgotICBNZXNz
YWdlJiBvcGVyYXRvciA8PChjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKSB7Ci0gICAgcmV0dXJu
ICp0aGlzIDw8IGludGVybmFsOjpTdHJpbmc6OlNob3dXaWRlQ1N0cmluZyh3aWRlX2Nfc3RyKTsK
LSAgfQotICBNZXNzYWdlJiBvcGVyYXRvciA8PCh3Y2hhcl90KiB3aWRlX2Nfc3RyKSB7Ci0gICAg
cmV0dXJuICp0aGlzIDw8IGludGVybmFsOjpTdHJpbmc6OlNob3dXaWRlQ1N0cmluZyh3aWRlX2Nf
c3RyKTsKLSAgfQorICBNZXNzYWdlJiBvcGVyYXRvciA8PChjb25zdCB3Y2hhcl90KiB3aWRlX2Nf
c3RyKTsKKyAgTWVzc2FnZSYgb3BlcmF0b3IgPDwod2NoYXJfdCogd2lkZV9jX3N0cik7CiAKICNp
ZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKICAgLy8gQ29udmVydHMgdGhlIGdpdmVuIHdpZGUgc3Ry
aW5nIHRvIGEgbmFycm93IHN0cmluZyB1c2luZyB0aGUgVVRGLTgKQEAgLTE4NCwxMyArMTkzLDEx
IEBAIGNsYXNzIEdURVNUX0FQSV8gTWVzc2FnZSB7CiAgIE1lc3NhZ2UmIG9wZXJhdG9yIDw8KGNv
bnN0IDo6d3N0cmluZyYgd3N0cik7CiAjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklO
RwogCi0gIC8vIEdldHMgdGhlIHRleHQgc3RyZWFtZWQgdG8gdGhpcyBvYmplY3Qgc28gZmFyIGFz
IGEgU3RyaW5nLgorICAvLyBHZXRzIHRoZSB0ZXh0IHN0cmVhbWVkIHRvIHRoaXMgb2JqZWN0IHNv
IGZhciBhcyBhbiBzdGQ6OnN0cmluZy4KICAgLy8gRWFjaCAnXDAnIGNoYXJhY3RlciBpbiB0aGUg
YnVmZmVyIGlzIHJlcGxhY2VkIHdpdGggIlxcMCIuCiAgIC8vCiAgIC8vIElOVEVSTkFMIElNUExF
TUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KLSAgaW50ZXJuYWw6OlN0
cmluZyBHZXRTdHJpbmcoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGludGVybmFsOjpTdHJTdHJlYW1U
b1N0cmluZyhzc18pOwotICB9CisgIHN0ZDo6c3RyaW5nIEdldFN0cmluZygpIGNvbnN0OwogCiAg
cHJpdmF0ZToKICNpZiBHVEVTVF9PU19TWU1CSUFOCkBAIC0xOTksMjEgKzIwNiwyNSBAQCBjbGFz
cyBHVEVTVF9BUElfIE1lc3NhZ2UgewogICAvLyBkZWNpZGUgYmV0d2VlbiBjbGFzcyB0ZW1wbGF0
ZSBzcGVjaWFsaXphdGlvbnMgZm9yIFQgYW5kIFQqLCBzbyBhCiAgIC8vIHRyMTo6dHlwZV90cmFp
dHMtbGlrZSBpc19wb2ludGVyIHdvcmtzLCBhbmQgd2UgY2FuIG92ZXJsb2FkIG9uIHRoYXQuCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBpbmxpbmUgdm9pZCBTdHJlYW1IZWxwZXIoaW50ZXJu
YWw6OnRydWVfdHlwZSAvKmR1bW15Ki8sIFQqIHBvaW50ZXIpIHsKKyAgaW5saW5lIHZvaWQgU3Ry
ZWFtSGVscGVyKGludGVybmFsOjp0cnVlX3R5cGUgLyppc19wb2ludGVyKi8sIFQqIHBvaW50ZXIp
IHsKICAgICBpZiAocG9pbnRlciA9PSBOVUxMKSB7CiAgICAgICAqc3NfIDw8ICIobnVsbCkiOwog
ICAgIH0gZWxzZSB7Ci0gICAgICA6OkdUZXN0U3RyZWFtVG9IZWxwZXIoc3NfLCBwb2ludGVyKTsK
KyAgICAgICpzc18gPDwgcG9pbnRlcjsKICAgICB9CiAgIH0KICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci0gIGlubGluZSB2b2lkIFN0cmVhbUhlbHBlcihpbnRlcm5hbDo6ZmFsc2VfdHlwZSAvKmR1
bW15Ki8sIGNvbnN0IFQmIHZhbHVlKSB7Ci0gICAgOjpHVGVzdFN0cmVhbVRvSGVscGVyKHNzXywg
dmFsdWUpOworICBpbmxpbmUgdm9pZCBTdHJlYW1IZWxwZXIoaW50ZXJuYWw6OmZhbHNlX3R5cGUg
Lyppc19wb2ludGVyKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiB2YWx1
ZSkgeworICAgIC8vIFNlZSB0aGUgY29tbWVudHMgaW4gTWVzc2FnZSYgb3BlcmF0b3IgPDwoY29u
c3QgVCYpIGFib3ZlIGZvciB3aHkKKyAgICAvLyB3ZSBuZWVkIHRoaXMgdXNpbmcgc3RhdGVtZW50
LgorICAgIHVzaW5nIDo6b3BlcmF0b3IgPDw7CisgICAgKnNzXyA8PCB2YWx1ZTsKICAgfQogI2Vu
ZGlmICAvLyBHVEVTVF9PU19TWU1CSUFOCiAKICAgLy8gV2UnbGwgaG9sZCB0aGUgdGV4dCBzdHJl
YW1lZCB0byB0aGlzIG9iamVjdCBoZXJlLgotICBpbnRlcm5hbDo6U3RyU3RyZWFtKiBjb25zdCBz
c187CisgIGNvbnN0IGludGVybmFsOjpzY29wZWRfcHRyPCA6OnN0ZDo6c3RyaW5nc3RyZWFtPiBz
c187CiAKICAgLy8gV2UgZGVjbGFyZSAoYnV0IGRvbid0IGltcGxlbWVudCkgdGhpcyB0byBwcmV2
ZW50IHRoZSBjb21waWxlcgogICAvLyBmcm9tIGltcGxlbWVudGluZyB0aGUgYXNzaWdubWVudCBv
cGVyYXRvci4KQEAgLTIyNSw2ICsyMzYsMjAgQEAgaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0
b3IgPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgTWVzc2FnZSYgc2IpIHsKICAgcmV0dXJuIG9z
IDw8IHNiLkdldFN0cmluZygpOwogfQogCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBDb252
ZXJ0cyBhIHN0cmVhbWFibGUgdmFsdWUgdG8gYW4gc3RkOjpzdHJpbmcuICBBIE5VTEwgcG9pbnRl
ciBpcworLy8gY29udmVydGVkIHRvICIobnVsbCkiLiAgV2hlbiB0aGUgaW5wdXQgdmFsdWUgaXMg
YSA6OnN0cmluZywKKy8vIDo6c3RkOjpzdHJpbmcsIDo6d3N0cmluZywgb3IgOjpzdGQ6OndzdHJp
bmcgb2JqZWN0LCBlYWNoIE5VTAorLy8gY2hhcmFjdGVyIGluIGl0IGlzIHJlcGxhY2VkIHdpdGgg
IlxcMCIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0ZDo6c3RyaW5nIFN0cmVhbWFibGVUb1N0
cmluZyhjb25zdCBUJiBzdHJlYW1hYmxlKSB7CisgIHJldHVybiAoTWVzc2FnZSgpIDw8IHN0cmVh
bWFibGUpLkdldFN0cmluZygpOworfQorCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8v
IG5hbWVzcGFjZSB0ZXN0aW5nCiAKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAg
Ly8gIDQyNTEKKwogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX01FU1NBR0Vf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rl
c3QtcGFyYW0tdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9n
dGVzdC1wYXJhbS10ZXN0LmgKaW5kZXggODEwMDY5NjQ0ZDIzYWQzNTU5NzNjYjUzZmNlYjBhODU2
YjBhMDA2Yy4uM2U5NWU0MzkwZTAwZTExNjMxMGE0MjM4M2QyZTMwYjU4ZWRhNWYwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10
ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1w
YXJhbS10ZXN0LmgKQEAgLTEsNCArMSw2IEBACi0vLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBi
eSBhIHNjcmlwdC4gIERPIE5PVCBFRElUIEJZIEhBTkQhISEKKy8vIFRoaXMgZmlsZSB3YXMgR0VO
RVJBVEVEIGJ5IGNvbW1hbmQ6CisvLyAgICAgcHVtcC5weSBndGVzdC1wYXJhbS10ZXN0LmgucHVt
cAorLy8gRE8gTk9UIEVESVQgQlkgSEFORCEhIQogCiAvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xl
IEluYy4KIC8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0yOSwxMyArMzEsMTIgQEAKIC8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRob3JzOiB2bGFkbEBnb29nbGUu
Y29tIChWbGFkIExvc2V2KQotLy8KIC8vIE1hY3JvcyBhbmQgZnVuY3Rpb25zIGZvciBpbXBsZW1l
bnRpbmcgcGFyYW1ldGVyaXplZCB0ZXN0cwotLy8gaW4gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1l
d29yayAoR29vZ2xlIFRlc3QpCisvLyBpbiBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcg
RnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5
IGEgU0NSSVBULiAgRE8gTk9UIEVESVQgQlkgSEFORCEKIC8vCisvLyBHT09HTEVURVNUX0NNMDAw
MSBETyBOT1QgREVMRVRFCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUEFSQU1f
VEVTVF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8K
IApAQCAtNDgsMTAgKzQ5LDEyIEBACiAjaWYgMAogCiAvLyBUbyB3cml0ZSB2YWx1ZS1wYXJhbWV0
ZXJpemVkIHRlc3RzLCBmaXJzdCB5b3Ugc2hvdWxkIGRlZmluZSBhIGZpeHR1cmUKLS8vIGNsYXNz
LiBJdCBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPFQ+LCB3aGVy
ZSBUIGlzCi0vLyB0aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuIFRlc3RXaXRoUGFy
YW08VD4gaXMgaXRzZWxmIGRlcml2ZWQKLS8vIGZyb20gdGVzdGluZzo6VGVzdC4gVCBjYW4gYmUg
YW55IGNvcHlhYmxlIHR5cGUuIElmIGl0J3MgYSByYXcgcG9pbnRlciwKLS8vIHlvdSBhcmUgcmVz
cG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBsaWZlc3BhbiBvZiB0aGUgcG9pbnRlZCB2YWx1ZXMu
CisvLyBjbGFzcy4gSXQgaXMgdXN1YWxseSBkZXJpdmVkIGZyb20gdGVzdGluZzo6VGVzdFdpdGhQ
YXJhbTxUPiAoc2VlIGJlbG93IGZvcgorLy8gYW5vdGhlciBpbmhlcml0YW5jZSBzY2hlbWUgdGhh
dCdzIHNvbWV0aW1lcyB1c2VmdWwgaW4gbW9yZSBjb21wbGljYXRlZAorLy8gY2xhc3MgaGllcmFy
Y2hpZXMpLCB3aGVyZSB0aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuCisvLyBUZXN0
V2l0aFBhcmFtPFQ+IGlzIGl0c2VsZiBkZXJpdmVkIGZyb20gdGVzdGluZzo6VGVzdC4gVCBjYW4g
YmUgYW55CisvLyBjb3B5YWJsZSB0eXBlLiBJZiBpdCdzIGEgcmF3IHBvaW50ZXIsIHlvdSBhcmUg
cmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZQorLy8gbGlmZXNwYW4gb2YgdGhlIHBvaW50ZWQg
dmFsdWVzLgogCiBjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJh
bTxjb25zdCBjaGFyKj4gewogICAvLyBZb3UgY2FuIGltcGxlbWVudCBhbGwgdGhlIHVzdWFsIGNs
YXNzIGZpeHR1cmUgbWVtYmVycyBoZXJlLgpAQCAtNzUsNyArNzgsNyBAQCBURVNUX1AoRm9vVGVz
dCwgSGFzQmxhaEJsYWgpIHsKIC8vIEZpbmFsbHksIHlvdSBjYW4gdXNlIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QIHRvIGluc3RhbnRpYXRlIHRoZSB0ZXN0CiAvLyBjYXNlIHdpdGggYW55IHNldCBv
ZiBwYXJhbWV0ZXJzIHlvdSB3YW50LiBHb29nbGUgVGVzdCBkZWZpbmVzIGEgbnVtYmVyCiAvLyBv
ZiBmdW5jdGlvbnMgZm9yIGdlbmVyYXRpbmcgdGVzdCBwYXJhbWV0ZXJzLiBUaGV5IHJldHVybiB3
aGF0IHdlIGNhbGwKLS8vIChzdXJwcmlzZSEpIHBhcmFtZXRlciBnZW5lcmF0b3JzLiBIZXJlIGlz
IGEgIHN1bW1hcnkgb2YgdGhlbSwgd2hpY2gKKy8vIChzdXJwcmlzZSEpIHBhcmFtZXRlciBnZW5l
cmF0b3JzLiBIZXJlIGlzIGEgc3VtbWFyeSBvZiB0aGVtLCB3aGljaAogLy8gYXJlIGFsbCBpbiB0
aGUgdGVzdGluZyBuYW1lc3BhY2U6CiAvLwogLy8KQEAgLTE0NiwyMyArMTQ5LDQ0IEBAIElOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QKEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwgVmFs
dWVzSW4ocGV0cykpOwogLy8gSW4gdGhlIGZ1dHVyZSwgd2UgcGxhbiB0byBwdWJsaXNoIHRoZSBB
UEkgZm9yIGRlZmluaW5nIG5ldyBwYXJhbWV0ZXIKIC8vIGdlbmVyYXRvcnMuIEJ1dCBmb3Igbm93
IHRoaXMgaW50ZXJmYWNlIHJlbWFpbnMgcGFydCBvZiB0aGUgaW50ZXJuYWwKIC8vIGltcGxlbWVu
dGF0aW9uIGFuZCBpcyBzdWJqZWN0IHRvIGNoYW5nZS4KKy8vCisvLworLy8gQSBwYXJhbWV0ZXJp
emVkIHRlc3QgZml4dHVyZSBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0IGFuZCBm
cm9tCisvLyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD4sIHdoZXJlIFQgaXMgdGhlIHR5
cGUgb2YgdGhlIHBhcmFtZXRlcgorLy8gdmFsdWVzLiBJbmhlcml0aW5nIGZyb20gVGVzdFdpdGhQ
YXJhbTxUPiBzYXRpc2ZpZXMgdGhhdCByZXF1aXJlbWVudCBiZWNhdXNlCisvLyBUZXN0V2l0aFBh
cmFtPFQ+IGluaGVyaXRzIGZyb20gYm90aCBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UuIElu
IG1vcmUKKy8vIGNvbXBsaWNhdGVkIGhpZXJhcmNoaWVzLCBob3dldmVyLCBpdCBpcyBvY2Nhc2lv
bmFsbHkgdXNlZnVsIHRvIGluaGVyaXQKKy8vIHNlcGFyYXRlbHkgZnJvbSBUZXN0IGFuZCBXaXRo
UGFyYW1JbnRlcmZhY2UuIEZvciBleGFtcGxlOgorCitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6
OnRlc3Rpbmc6OlRlc3QgeworICAvLyBZb3UgY2FuIGluaGVyaXQgYWxsIHRoZSB1c3VhbCBtZW1i
ZXJzIGZvciBhIG5vbi1wYXJhbWV0ZXJpemVkIHRlc3QKKyAgLy8gZml4dHVyZSBoZXJlLgorfTsK
KworY2xhc3MgRGVyaXZlZFRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsIHB1YmxpYyA6OnRlc3Rpbmc6
OldpdGhQYXJhbUludGVyZmFjZTxpbnQ+IHsKKyAgLy8gVGhlIHVzdWFsIHRlc3QgZml4dHVyZSBt
ZW1iZXJzIGdvIGhlcmUgdG9vLgorfTsKKworVEVTVF9GKEJhc2VUZXN0LCBIYXNGb28pIHsKKyAg
Ly8gVGhpcyBpcyBhbiBvcmRpbmFyeSBub24tcGFyYW1ldGVyaXplZCB0ZXN0LgorfQorCitURVNU
X1AoRGVyaXZlZFRlc3QsIERvZXNCbGFoKSB7CisgIC8vIEdldFBhcmFtIHdvcmtzIGp1c3QgdGhl
IHNhbWUgaGVyZSBhcyBpZiB5b3UgaW5oZXJpdCBmcm9tIFRlc3RXaXRoUGFyYW0uCisgIEVYUEVD
VF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsKK30KIAogI2VuZGlmICAvLyAwCiAKLSNpbmNs
dWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcG9ydC5oIgogCiAjaWYgIUdURVNUX09TX1NZTUJJQU4KLSNpbmNsdWRlIDx1dGls
aXR5PgorIyBpbmNsdWRlIDx1dGlsaXR5PgogI2VuZGlmCiAKLS8vIHNjcmlwdHMvZnVzZV9ndGVz
dC5weSBkZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKLS8vICp1
bmNvbmRpdGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92
ZWQKLS8vIGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVz
dC1wYXJhbS11dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRp
bC1nZW5lcmF0ZWQuaD4KLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCisjaW5jbHVkZSAiZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9n
dGVzdC1wYXJhbS11dGlsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC1nZW5lcmF0ZWQuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC0yNDMsNyArMjY3
LDcgQEAgaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFJhbmdlKFQgc3RhcnQsIFQgZW5kKSB7
CiAvLyBlYWNoIHdpdGggQy1zdHJpbmcgdmFsdWVzIG9mICJmb28iLCAiYmFyIiwgYW5kICJiYXoi
OgogLy8KIC8vIGNvbnN0IGNoYXIqIHN0cmluZ3NbXSA9IHsiZm9vIiwgImJhciIsICJiYXoifTsK
LS8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFN0cmluZ1NlcXVlbmNlLCBTcnRpbmdUZXN0LCBW
YWx1ZXNJbihzdHJpbmdzKSk7CisvLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChTdHJpbmdTZXF1
ZW5jZSwgU3RyaW5nVGVzdCwgVmFsdWVzSW4oc3RyaW5ncykpOwogLy8KIC8vIFRoaXMgaW5zdGFu
dGlhdGVzIHRlc3RzIGZyb20gdGVzdCBjYXNlIFN0bFN0cmluZ1Rlc3QKIC8vIGVhY2ggd2l0aCBT
VEwgc3RyaW5ncyB3aXRoIHZhbHVlcyAiYSIgYW5kICJiIjoKQEAgLTI3NiwxMSArMzAwLDEwIEBA
IGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxUPiBSYW5nZShUIHN0YXJ0LCBUIGVuZCkgewogLy8K
IHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+CiBpbnRlcm5hbDo6UGFyYW1HZW5l
cmF0b3I8Ci0gICAgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0
b3I+Ojp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKLSAgRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLAotICBG
b3J3YXJkSXRlcmF0b3IgZW5kKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9y
X3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCi0gICAgICBQYXJhbVR5cGU7Cisg
IHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJhaXRzPEZvcndhcmRJdGVy
YXRvcj46OnZhbHVlX3R5cGU+CitWYWx1ZXNJbihGb3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndh
cmRJdGVyYXRvciBlbmQpIHsKKyAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFs
OjpJdGVyYXRvclRyYWl0czxGb3J3YXJkSXRlcmF0b3I+CisgICAgICA6OnZhbHVlX3R5cGUgUGFy
YW1UeXBlOwogICByZXR1cm4gaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT4oCiAg
ICAgICBuZXcgaW50ZXJuYWw6OlZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvcjxQYXJhbVR5
cGU+KGJlZ2luLCBlbmQpKTsKIH0KQEAgLTExOTIsNyArMTIxNSw3IEBAIGlubGluZSBpbnRlcm5h
bDo6UGFyYW1HZW5lcmF0b3I8Ym9vbD4gQm9vbCgpIHsKICAgcmV0dXJuIFZhbHVlcyhmYWxzZSwg
dHJ1ZSk7CiB9CiAKLSNpZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNfQ09NQklO
RQogLy8gQ29tYmluZSgpIGFsbG93cyB0aGUgdXNlciB0byBjb21iaW5lIHR3byBvciBtb3JlIHNl
cXVlbmNlcyB0byBwcm9kdWNlCiAvLyB2YWx1ZXMgb2YgYSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB0
aG9zZSBzZXF1ZW5jZXMnIGVsZW1lbnRzLgogLy8KQEAgLTEyMjgsNyArMTI1MSw3IEBAIGlubGlu
ZSBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ym9vbD4gQm9vbCgpIHsKIC8vIEJvb2xlYW4gZmxh
Z3M6CiAvLwogLy8gY2xhc3MgRmxhZ0RlcGVuZGVudFRlc3QKLS8vICAgICA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0V2l0aFBhcmFtPHR1cGxlKGJvb2wsIGJvb2wpPiA+IHsKKy8vICAgICA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHR1cGxlPGJvb2wsIGJvb2w+ID4gewogLy8gICB2aXJ0
dWFsIHZvaWQgU2V0VXAoKSB7CiAvLyAgICAgLy8gQXNzaWducyBleHRlcm5hbF9mbGFnXzEgYW5k
IGV4dGVybmFsX2ZsYWdfMiB2YWx1ZXMgZnJvbSB0aGUgdHVwbGUuCiAvLyAgICAgdGllKGV4dGVy
bmFsX2ZsYWdfMSwgZXh0ZXJuYWxfZmxhZ18yKSA9IEdldFBhcmFtKCk7CkBAIC0xMzQ0LDExICsx
MzY3LDkgQEAgaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIxMDxHZW5lcmF0b3IxLCBH
ZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAogICAgICAgR2VuZXJhdG9yMTA+KAogICAgICAgZzEsIGcy
LCBnMywgZzQsIGc1LCBnNiwgZzcsIGc4LCBnOSwgZzEwKTsKIH0KLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX0NPTUJJTkUKLQotCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQogCi0jZGVmaW5l
IFRFU1RfUCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBcCisjIGRlZmluZSBURVNUX1AodGVz
dF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXAogICBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVf
KHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIFwKICAgICAgIDogcHVibGljIHRlc3RfY2FzZV9u
YW1lIHsgXAogICAgcHVibGljOiBcCkBAIC0xMzU4LDE0ICsxMzc5LDE3IEBAIGludGVybmFsOjpD
YXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMTA8R2VuZXJhdG9yMSwgR2VuZXJhdG9yMiwgR2VuZXJhdG9y
MywKICAgICBzdGF0aWMgaW50IEFkZFRvUmVnaXN0cnkoKSB7IFwKICAgICAgIDo6dGVzdGluZzo6
VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpLiBc
CiAgICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVyPHRlc3RfY2FzZV9uYW1lPihcCi0g
ICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgX19GSUxFX18sIF9fTElORV9fKS0+QWRkVGVz
dFBhdHRlcm4oXAotICAgICAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCi0gICAgICAg
ICAgICAgICAgICAjdGVzdF9uYW1lLCBcCi0gICAgICAgICAgICAgICAgICBuZXcgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6VGVzdE1ldGFGYWN0b3J5PCBcCi0gICAgICAgICAgICAgICAgICAgICAgR1RF
U1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKT4oKSk7IFwKKyAg
ICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCisgICAgICAgICAgICAgIDo6dGVzdGluZzo6
aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihcCisgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19M
SU5FX18pKS0+QWRkVGVzdFBhdHRlcm4oXAorICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1NU
UklOR0lGWV8odGVzdF9jYXNlX25hbWUpLCBcCisgICAgICAgICAgICAgICAgICAgICAgR1RFU1Rf
U1RSSU5HSUZZXyh0ZXN0X25hbWUpLCBcCisgICAgICAgICAgICAgICAgICAgICAgbmV3IDo6dGVz
dGluZzo6aW50ZXJuYWw6OlRlc3RNZXRhRmFjdG9yeTwgXAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpPigpKTsgXAogICAgICAgcmV0dXJuIDA7IFwK
ICAgICB9IFwKLSAgICBzdGF0aWMgaW50IGd0ZXN0X3JlZ2lzdGVyaW5nX2R1bW15XzsgXAorICAg
IHN0YXRpYyBpbnQgZ3Rlc3RfcmVnaXN0ZXJpbmdfZHVtbXlfIEdURVNUX0FUVFJJQlVURV9VTlVT
RURfOyBcCiAgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhcCiAgICAgICAgIEdU
RVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkpOyBcCiAgIH07
IFwKQEAgLTEzNzQsMTkgKzEzOTgsMzcgQEAgaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xk
ZXIxMDxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAogICAgICAgR1RFU1RfVEVT
VF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKTo6QWRkVG9SZWdpc3RyeSgp
OyBcCiAgIHZvaWQgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9u
YW1lKTo6VGVzdEJvZHkoKQogCi0jZGVmaW5lIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKHByZWZp
eCwgdGVzdF9jYXNlX25hbWUsIGdlbmVyYXRvcikgXAotICA6OnRlc3Rpbmc6OmludGVybmFsOjpQ
YXJhbUdlbmVyYXRvcjx0ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiBcCisvLyBUaGUgb3B0aW9u
YWwgbGFzdCBhcmd1bWVudCB0byBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBhbGxvd3MgdGhlIHVz
ZXIKKy8vIHRvIHNwZWNpZnkgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHRoYXQgZ2VuZXJhdGVzIGN1
c3RvbSB0ZXN0IG5hbWUgc3VmZml4ZXMKKy8vIGJhc2VkIG9uIHRoZSB0ZXN0IHBhcmFtZXRlcnMu
IFRoZSBmdW5jdGlvbiBzaG91bGQgYWNjZXB0IG9uZSBhcmd1bWVudCBvZgorLy8gdHlwZSB0ZXN0
aW5nOjpUZXN0UGFyYW1JbmZvPGNsYXNzIFBhcmFtVHlwZT4sIGFuZCByZXR1cm4gc3RkOjpzdHJp
bmcuCisvLworLy8gdGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSBpcyBhIGJ1aWx0aW4g
dGVzdCBzdWZmaXggZ2VuZXJhdG9yIHRoYXQKKy8vIHJldHVybnMgdGhlIHZhbHVlIG9mIHRlc3Rp
bmc6OlByaW50VG9TdHJpbmcoR2V0UGFyYW0oKSkuCisvLworLy8gTm90ZTogdGVzdCBuYW1lcyBt
dXN0IGJlIG5vbi1lbXB0eSwgdW5pcXVlLCBhbmQgbWF5IG9ubHkgY29udGFpbiBBU0NJSQorLy8g
YWxwaGFudW1lcmljIGNoYXJhY3RlcnMgb3IgdW5kZXJzY29yZS4gQmVjYXVzZSBQcmludFRvU3Ry
aW5nIGFkZHMgcXVvdGVzCisvLyB0byBzdGQ6OnN0cmluZyBhbmQgQyBzdHJpbmdzLCBpdCB3b24n
dCB3b3JrIGZvciB0aGVzZSB0eXBlcy4KKworIyBkZWZpbmUgSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AocHJlZml4LCB0ZXN0X2Nhc2VfbmFtZSwgZ2VuZXJhdG9yLCAuLi4pIFwKKyAgc3RhdGljIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5
cGU+IFwKICAgICAgIGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0
b3JfKCkgeyByZXR1cm4gZ2VuZXJhdG9yOyB9IFwKLSAgaW50IGd0ZXN0XyMjcHJlZml4IyN0ZXN0
X2Nhc2VfbmFtZSMjX2R1bW15XyA9IFwKKyAgc3RhdGljIDo6c3RkOjpzdHJpbmcgZ3Rlc3RfIyNw
cmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRlTmFtZV8oIFwKKyAgICAgIGNvbnN0
IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzx0ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiYgaW5m
bykgeyBcCisgICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkdldFBhcmFtTmFtZUdlbjx0
ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiBcCisgICAgICAgIChfX1ZBX0FSR1NfXykoaW5mbyk7
IFwKKyAgfSBcCisgIHN0YXRpYyBpbnQgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNf
ZHVtbXlfIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gXAogICAgICAgOjp0ZXN0aW5nOjpVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkuIFwKICAg
ICAgICAgICBHZXRUZXN0Q2FzZVBhdHRlcm5Ib2xkZXI8dGVzdF9jYXNlX25hbWU+KFwKLSAgICAg
ICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBfX0ZJTEVfXywgX19MSU5FX18pLT5BZGRUZXN0Q2Fz
ZUluc3RhbnRpYXRpb24oXAotICAgICAgICAgICAgICAgICAgI3ByZWZpeCwgXAotICAgICAgICAg
ICAgICAgICAgJmd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0b3Jf
LCBcCi0gICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pCisgICAgICAgICAgICAg
ICN0ZXN0X2Nhc2VfbmFtZSwgXAorICAgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpD
b2RlTG9jYXRpb24oXAorICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKSktPkFk
ZFRlc3RDYXNlSW5zdGFudGlhdGlvbihcCisgICAgICAgICAgICAgICAgICAgICAgI3ByZWZpeCwg
XAorICAgICAgICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUj
I19FdmFsR2VuZXJhdG9yXywgXAorICAgICAgICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZp
eCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdGVOYW1lXywgXAorICAgICAgICAgICAgICAg
ICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAot
I2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xV
REVfR1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1bXAKaW5k
ZXggYTIzMTE4ODI3ZjFkNDgwZmJiYjgyNTJmMzQwZjBlYmVkYTM0NmUyNS4uMjc0ZjJiM2I1Njkz
MzAwMTJlODVlZTNjZjRmZDU3ZWIwYjU0MjFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC5wdW1w
CkBAIC0zMCwxMyArMzAsMTIgQEAgJHZhciBtYXh0dXBsZSA9IDEwICAkJCBNYXhpbXVtIG51bWJl
ciBvZiBDb21iaW5lIGFyZ3VtZW50cyB3ZSB3YW50IHRvIHN1cHBvcnQuCiAvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQXV0aG9yczogdmxhZGxAZ29vZ2xlLmNvbSAoVmxh
ZCBMb3NldikKLS8vCiAvLyBNYWNyb3MgYW5kIGZ1bmN0aW9ucyBmb3IgaW1wbGVtZW50aW5nIHBh
cmFtZXRlcml6ZWQgdGVzdHMKLS8vIGluIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdv
b2dsZSBUZXN0KQorLy8gaW4gR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29y
ayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBhIFNDUklQ
VC4gIERPIE5PVCBFRElUIEJZIEhBTkQhCiAvLworLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9U
IERFTEVURQogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8K
ICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QQVJBTV9URVNUX0hfCiAKQEAgLTQ5
LDEwICs0OCwxMiBAQCAkdmFyIG1heHR1cGxlID0gMTAgICQkIE1heGltdW0gbnVtYmVyIG9mIENv
bWJpbmUgYXJndW1lbnRzIHdlIHdhbnQgdG8gc3VwcG9ydC4KICNpZiAwCiAKIC8vIFRvIHdyaXRl
IHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4
dHVyZQotLy8gY2xhc3MuIEl0IG11c3QgYmUgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3RXaXRo
UGFyYW08VD4sIHdoZXJlIFQgaXMKLS8vIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVl
cy4gVGVzdFdpdGhQYXJhbTxUPiBpcyBpdHNlbGYgZGVyaXZlZAotLy8gZnJvbSB0ZXN0aW5nOjpU
ZXN0LiBUIGNhbiBiZSBhbnkgY29weWFibGUgdHlwZS4gSWYgaXQncyBhIHJhdyBwb2ludGVyLAot
Ly8geW91IGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIGxpZmVzcGFuIG9mIHRoZSBw
b2ludGVkIHZhbHVlcy4KKy8vIGNsYXNzLiBJdCBpcyB1c3VhbGx5IGRlcml2ZWQgZnJvbSB0ZXN0
aW5nOjpUZXN0V2l0aFBhcmFtPFQ+IChzZWUgYmVsb3cgZm9yCisvLyBhbm90aGVyIGluaGVyaXRh
bmNlIHNjaGVtZSB0aGF0J3Mgc29tZXRpbWVzIHVzZWZ1bCBpbiBtb3JlIGNvbXBsaWNhdGVkCisv
LyBjbGFzcyBoaWVyYXJjaGllcyksIHdoZXJlIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZh
bHVlcy4KKy8vIFRlc3RXaXRoUGFyYW08VD4gaXMgaXRzZWxmIGRlcml2ZWQgZnJvbSB0ZXN0aW5n
OjpUZXN0LiBUIGNhbiBiZSBhbnkKKy8vIGNvcHlhYmxlIHR5cGUuIElmIGl0J3MgYSByYXcgcG9p
bnRlciwgeW91IGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlCisvLyBsaWZlc3BhbiBv
ZiB0aGUgcG9pbnRlZCB2YWx1ZXMuCiAKIGNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0V2l0aFBhcmFtPGNvbnN0IGNoYXIqPiB7CiAgIC8vIFlvdSBjYW4gaW1wbGVtZW50IGFs
bCB0aGUgdXN1YWwgY2xhc3MgZml4dHVyZSBtZW1iZXJzIGhlcmUuCkBAIC03Niw3ICs3Nyw3IEBA
IFRFU1RfUChGb29UZXN0LCBIYXNCbGFoQmxhaCkgewogLy8gRmluYWxseSwgeW91IGNhbiB1c2Ug
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgdG8gaW5zdGFudGlhdGUgdGhlIHRlc3QKIC8vIGNhc2Ug
d2l0aCBhbnkgc2V0IG9mIHBhcmFtZXRlcnMgeW91IHdhbnQuIEdvb2dsZSBUZXN0IGRlZmluZXMg
YSBudW1iZXIKIC8vIG9mIGZ1bmN0aW9ucyBmb3IgZ2VuZXJhdGluZyB0ZXN0IHBhcmFtZXRlcnMu
IFRoZXkgcmV0dXJuIHdoYXQgd2UgY2FsbAotLy8gKHN1cnByaXNlISkgcGFyYW1ldGVyIGdlbmVy
YXRvcnMuIEhlcmUgaXMgYSAgc3VtbWFyeSBvZiB0aGVtLCB3aGljaAorLy8gKHN1cnByaXNlISkg
cGFyYW1ldGVyIGdlbmVyYXRvcnMuIEhlcmUgaXMgYSBzdW1tYXJ5IG9mIHRoZW0sIHdoaWNoCiAv
LyBhcmUgYWxsIGluIHRoZSB0ZXN0aW5nIG5hbWVzcGFjZToKIC8vCiAvLwpAQCAtMTM0LDkgKzEz
NSwxMiBAQCBJTlNUQU5USUFURV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFudGlhdGlvbk5hbWUs
IEZvb1Rlc3QsIFZhbHVlc0luKHBldHMpKTsKIC8vIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UsIHdo
ZXRoZXIgdGhlaXIgZGVmaW5pdGlvbnMgY29tZSBiZWZvcmUgb3IKIC8vIEFGVEVSIHRoZSBJTlNU
QU5USUFURV9URVNUX0NBU0VfUCBzdGF0ZW1lbnQuCiAvLwotLy8gUGxlYXNlIGFsc28gbm90ZSB0
aGF0IGdlbmVyYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIGluCi0vLyBSVU5fQUxMX1RF
U1RTKCksIGFmdGVyIG1haW4oKSBoYXMgc3RhcnRlZC4gVGhpcyBhbGxvd3MgZXZhbHVhdGlvbiBv
ZgotLy8gcGFyYW1ldGVyIGxpc3QgYmFzZWQgb24gY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMuCisv
LyBQbGVhc2UgYWxzbyBub3RlIHRoYXQgZ2VuZXJhdG9yIGV4cHJlc3Npb25zIChpbmNsdWRpbmcg
cGFyYW1ldGVycyB0byB0aGUKKy8vIGdlbmVyYXRvcnMpIGFyZSBldmFsdWF0ZWQgaW4gSW5pdEdv
b2dsZVRlc3QoKSwgYWZ0ZXIgbWFpbigpIGhhcyBzdGFydGVkLgorLy8gVGhpcyBhbGxvd3MgdGhl
IHVzZXIgb24gb25lIGhhbmQsIHRvIGFkanVzdCBnZW5lcmF0b3IgcGFyYW1ldGVycyBpbiBvcmRl
cgorLy8gdG8gZHluYW1pY2FsbHkgZGV0ZXJtaW5lIGEgc2V0IG9mIHRlc3RzIHRvIHJ1biBhbmQg
b24gdGhlIG90aGVyIGhhbmQsCisvLyBnaXZlIHRoZSB1c2VyIGEgY2hhbmNlIHRvIGluc3BlY3Qg
dGhlIGdlbmVyYXRlZCB0ZXN0cyB3aXRoIEdvb2dsZSBUZXN0CisvLyByZWZsZWN0aW9uIEFQSSBi
ZWZvcmUgUlVOX0FMTF9URVNUUygpIGlzIGV4ZWN1dGVkLgogLy8KIC8vIFlvdSBjYW4gc2VlIHNh
bXBsZXMvc2FtcGxlN191bml0dGVzdC5jYyBhbmQgc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNj
CiAvLyBmb3IgbW9yZSBleGFtcGxlcy4KQEAgLTE0NCwyMyArMTQ4LDQ0IEBAIElOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwgVmFsdWVzSW4o
cGV0cykpOwogLy8gSW4gdGhlIGZ1dHVyZSwgd2UgcGxhbiB0byBwdWJsaXNoIHRoZSBBUEkgZm9y
IGRlZmluaW5nIG5ldyBwYXJhbWV0ZXIKIC8vIGdlbmVyYXRvcnMuIEJ1dCBmb3Igbm93IHRoaXMg
aW50ZXJmYWNlIHJlbWFpbnMgcGFydCBvZiB0aGUgaW50ZXJuYWwKIC8vIGltcGxlbWVudGF0aW9u
IGFuZCBpcyBzdWJqZWN0IHRvIGNoYW5nZS4KKy8vCisvLworLy8gQSBwYXJhbWV0ZXJpemVkIHRl
c3QgZml4dHVyZSBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0IGFuZCBmcm9tCisv
LyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD4sIHdoZXJlIFQgaXMgdGhlIHR5cGUgb2Yg
dGhlIHBhcmFtZXRlcgorLy8gdmFsdWVzLiBJbmhlcml0aW5nIGZyb20gVGVzdFdpdGhQYXJhbTxU
PiBzYXRpc2ZpZXMgdGhhdCByZXF1aXJlbWVudCBiZWNhdXNlCisvLyBUZXN0V2l0aFBhcmFtPFQ+
IGluaGVyaXRzIGZyb20gYm90aCBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UuIEluIG1vcmUK
Ky8vIGNvbXBsaWNhdGVkIGhpZXJhcmNoaWVzLCBob3dldmVyLCBpdCBpcyBvY2Nhc2lvbmFsbHkg
dXNlZnVsIHRvIGluaGVyaXQKKy8vIHNlcGFyYXRlbHkgZnJvbSBUZXN0IGFuZCBXaXRoUGFyYW1J
bnRlcmZhY2UuIEZvciBleGFtcGxlOgorCitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3QgeworICAvLyBZb3UgY2FuIGluaGVyaXQgYWxsIHRoZSB1c3VhbCBtZW1iZXJzIGZv
ciBhIG5vbi1wYXJhbWV0ZXJpemVkIHRlc3QKKyAgLy8gZml4dHVyZSBoZXJlLgorfTsKKworY2xh
c3MgRGVyaXZlZFRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQ
YXJhbUludGVyZmFjZTxpbnQ+IHsKKyAgLy8gVGhlIHVzdWFsIHRlc3QgZml4dHVyZSBtZW1iZXJz
IGdvIGhlcmUgdG9vLgorfTsKKworVEVTVF9GKEJhc2VUZXN0LCBIYXNGb28pIHsKKyAgLy8gVGhp
cyBpcyBhbiBvcmRpbmFyeSBub24tcGFyYW1ldGVyaXplZCB0ZXN0LgorfQorCitURVNUX1AoRGVy
aXZlZFRlc3QsIERvZXNCbGFoKSB7CisgIC8vIEdldFBhcmFtIHdvcmtzIGp1c3QgdGhlIHNhbWUg
aGVyZSBhcyBpZiB5b3UgaW5oZXJpdCBmcm9tIFRlc3RXaXRoUGFyYW0uCisgIEVYUEVDVF9UUlVF
KGZvby5CbGFoKEdldFBhcmFtKCkpKTsKK30KIAogI2VuZGlmICAvLyAwCiAKLSNpbmNsdWRlIDxn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oIgogCiAjaWYgIUdURVNUX09TX1NZTUJJQU4KLSNpbmNsdWRlIDx1dGlsaXR5Pgor
IyBpbmNsdWRlIDx1dGlsaXR5PgogI2VuZGlmCiAKLS8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBk
ZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKLS8vICp1bmNvbmRp
dGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKLS8v
IGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJh
bS11dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5l
cmF0ZWQuaD4KLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCisjaW5jbHVkZSAiZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1w
YXJhbS11dGlsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1n
ZW5lcmF0ZWQuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC0yNDEsNyArMjY2LDcgQEAg
aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFJhbmdlKFQgc3RhcnQsIFQgZW5kKSB7CiAvLyBl
YWNoIHdpdGggQy1zdHJpbmcgdmFsdWVzIG9mICJmb28iLCAiYmFyIiwgYW5kICJiYXoiOgogLy8K
IC8vIGNvbnN0IGNoYXIqIHN0cmluZ3NbXSA9IHsiZm9vIiwgImJhciIsICJiYXoifTsKLS8vIElO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFN0cmluZ1NlcXVlbmNlLCBTcnRpbmdUZXN0LCBWYWx1ZXNJ
bihzdHJpbmdzKSk7CisvLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChTdHJpbmdTZXF1ZW5jZSwg
U3RyaW5nVGVzdCwgVmFsdWVzSW4oc3RyaW5ncykpOwogLy8KIC8vIFRoaXMgaW5zdGFudGlhdGVz
IHRlc3RzIGZyb20gdGVzdCBjYXNlIFN0bFN0cmluZ1Rlc3QKIC8vIGVhY2ggd2l0aCBTVEwgc3Ry
aW5ncyB3aXRoIHZhbHVlcyAiYSIgYW5kICJiIjoKQEAgLTI3NCwxMSArMjk5LDEwIEBAIGludGVy
bmFsOjpQYXJhbUdlbmVyYXRvcjxUPiBSYW5nZShUIHN0YXJ0LCBUIGVuZCkgewogLy8KIHRlbXBs
YXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8
Ci0gICAgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2
YWx1ZV90eXBlPiBWYWx1ZXNJbigKLSAgRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLAotICBGb3J3YXJk
SXRlcmF0b3IgZW5kKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0
czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCi0gICAgICBQYXJhbVR5cGU7CisgIHR5cGVu
YW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJhaXRzPEZvcndhcmRJdGVyYXRvcj46
OnZhbHVlX3R5cGU+CitWYWx1ZXNJbihGb3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJdGVy
YXRvciBlbmQpIHsKKyAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVy
YXRvclRyYWl0czxGb3J3YXJkSXRlcmF0b3I+CisgICAgICA6OnZhbHVlX3R5cGUgUGFyYW1UeXBl
OwogICByZXR1cm4gaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT4oCiAgICAgICBu
ZXcgaW50ZXJuYWw6OlZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvcjxQYXJhbVR5cGU+KGJl
Z2luLCBlbmQpKTsKIH0KQEAgLTM0OCw3ICszNzIsNyBAQCBpbmxpbmUgaW50ZXJuYWw6OlBhcmFt
R2VuZXJhdG9yPGJvb2w+IEJvb2woKSB7CiAgIHJldHVybiBWYWx1ZXMoZmFsc2UsIHRydWUpOwog
fQogCi0jaWYgR1RFU1RfSEFTX0NPTUJJTkUKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKIC8vIENv
bWJpbmUoKSBhbGxvd3MgdGhlIHVzZXIgdG8gY29tYmluZSB0d28gb3IgbW9yZSBzZXF1ZW5jZXMg
dG8gcHJvZHVjZQogLy8gdmFsdWVzIG9mIGEgQ2FydGVzaWFuIHByb2R1Y3Qgb2YgdGhvc2Ugc2Vx
dWVuY2VzJyBlbGVtZW50cy4KIC8vCkBAIC0zODQsNyArNDA4LDcgQEAgaW5saW5lIGludGVybmFs
OjpQYXJhbUdlbmVyYXRvcjxib29sPiBCb29sKCkgewogLy8gQm9vbGVhbiBmbGFnczoKIC8vCiAv
LyBjbGFzcyBGbGFnRGVwZW5kZW50VGVzdAotLy8gICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3RX
aXRoUGFyYW08dHVwbGUoYm9vbCwgYm9vbCk+ID4geworLy8gICAgIDogcHVibGljIHRlc3Rpbmc6
OlRlc3RXaXRoUGFyYW08dHVwbGU8Ym9vbCwgYm9vbD4gPiB7CiAvLyAgIHZpcnR1YWwgdm9pZCBT
ZXRVcCgpIHsKIC8vICAgICAvLyBBc3NpZ25zIGV4dGVybmFsX2ZsYWdfMSBhbmQgZXh0ZXJuYWxf
ZmxhZ18yIHZhbHVlcyBmcm9tIHRoZSB0dXBsZS4KIC8vICAgICB0aWUoZXh0ZXJuYWxfZmxhZ18x
LCBleHRlcm5hbF9mbGFnXzIpID0gR2V0UGFyYW0oKTsKQEAgLTQwOSwxMSArNDMzLDkgQEAgaW50
ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIkaTwkZm9yIGosIFtbR2VuZXJhdG9yJGpdXT4g
Q29tYmluZSgKIH0KIAogXV0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKLQotCisjIGVu
ZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQogCi0jZGVmaW5lIFRFU1RfUCh0ZXN0X2Nhc2VfbmFt
ZSwgdGVzdF9uYW1lKSBcCisjIGRlZmluZSBURVNUX1AodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFt
ZSkgXAogICBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0
X25hbWUpIFwKICAgICAgIDogcHVibGljIHRlc3RfY2FzZV9uYW1lIHsgXAogICAgcHVibGljOiBc
CkBAIC00MjMsMTQgKzQ0NSwxNyBAQCBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlciRp
PCRmb3IgaiwgW1tHZW5lcmF0b3Ikal1dPiBDb21iaW5lKAogICAgIHN0YXRpYyBpbnQgQWRkVG9S
ZWdpc3RyeSgpIHsgXAogICAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+
cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkuIFwKICAgICAgICAgICBHZXRUZXN0Q2FzZVBh
dHRlcm5Ib2xkZXI8dGVzdF9jYXNlX25hbWU+KFwKLSAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9u
YW1lLCBfX0ZJTEVfXywgX19MSU5FX18pLT5BZGRUZXN0UGF0dGVybihcCi0gICAgICAgICAgICAg
ICAgICAjdGVzdF9jYXNlX25hbWUsIFwKLSAgICAgICAgICAgICAgICAgICN0ZXN0X25hbWUsIFwK
LSAgICAgICAgICAgICAgICAgIG5ldyA6OnRlc3Rpbmc6OmludGVybmFsOjpUZXN0TWV0YUZhY3Rv
cnk8IFwKLSAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3Rf
Y2FzZV9uYW1lLCB0ZXN0X25hbWUpPigpKTsgXAorICAgICAgICAgICAgICAjdGVzdF9jYXNlX25h
bWUsIFwKKyAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKFwK
KyAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykpLT5BZGRUZXN0UGF0dGVybihc
CisgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfU1RSSU5HSUZZXyh0ZXN0X2Nhc2VfbmFtZSks
IFwKKyAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9TVFJJTkdJRllfKHRlc3RfbmFtZSksIFwK
KyAgICAgICAgICAgICAgICAgICAgICBuZXcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdE1ldGFG
YWN0b3J5PCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFN
RV8oXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jYXNlX25hbWUsIHRlc3Rf
bmFtZSk+KCkpOyBcCiAgICAgICByZXR1cm4gMDsgXAogICAgIH0gXAotICAgIHN0YXRpYyBpbnQg
Z3Rlc3RfcmVnaXN0ZXJpbmdfZHVtbXlfOyBcCisgICAgc3RhdGljIGludCBndGVzdF9yZWdpc3Rl
cmluZ19kdW1teV8gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF87IFwKICAgICBHVEVTVF9ESVNBTExP
V19DT1BZX0FORF9BU1NJR05fKFwKICAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0
X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSk7IFwKICAgfTsgXApAQCAtNDM5LDE5ICs0NjQsMzcgQEAg
aW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIkaTwkZm9yIGosIFtbR2VuZXJhdG9yJGpd
XT4gQ29tYmluZSgKICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUs
IHRlc3RfbmFtZSk6OkFkZFRvUmVnaXN0cnkoKTsgXAogICB2b2lkIEdURVNUX1RFU1RfQ0xBU1Nf
TkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSk6OlRlc3RCb2R5KCkKIAotI2RlZmluZSBJ
TlNUQU5USUFURV9URVNUX0NBU0VfUChwcmVmaXgsIHRlc3RfY2FzZV9uYW1lLCBnZW5lcmF0b3Ip
IFwKLSAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dGVzdF9jYXNlX25hbWU6
OlBhcmFtVHlwZT4gXAorLy8gVGhlIG9wdGlvbmFsIGxhc3QgYXJndW1lbnQgdG8gSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AgYWxsb3dzIHRoZSB1c2VyCisvLyB0byBzcGVjaWZ5IGEgZnVuY3Rpb24g
b3IgZnVuY3RvciB0aGF0IGdlbmVyYXRlcyBjdXN0b20gdGVzdCBuYW1lIHN1ZmZpeGVzCisvLyBi
YXNlZCBvbiB0aGUgdGVzdCBwYXJhbWV0ZXJzLiBUaGUgZnVuY3Rpb24gc2hvdWxkIGFjY2VwdCBv
bmUgYXJndW1lbnQgb2YKKy8vIHR5cGUgdGVzdGluZzo6VGVzdFBhcmFtSW5mbzxjbGFzcyBQYXJh
bVR5cGU+LCBhbmQgcmV0dXJuIHN0ZDo6c3RyaW5nLgorLy8KKy8vIHRlc3Rpbmc6OlByaW50VG9T
dHJpbmdQYXJhbU5hbWUgaXMgYSBidWlsdGluIHRlc3Qgc3VmZml4IGdlbmVyYXRvciB0aGF0Cisv
LyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0ZXN0aW5nOjpQcmludFRvU3RyaW5nKEdldFBhcmFtKCkp
LgorLy8KKy8vIE5vdGU6IHRlc3QgbmFtZXMgbXVzdCBiZSBub24tZW1wdHksIHVuaXF1ZSwgYW5k
IG1heSBvbmx5IGNvbnRhaW4gQVNDSUkKKy8vIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9yIHVu
ZGVyc2NvcmUuIEJlY2F1c2UgUHJpbnRUb1N0cmluZyBhZGRzIHF1b3RlcworLy8gdG8gc3RkOjpz
dHJpbmcgYW5kIEMgc3RyaW5ncywgaXQgd29uJ3Qgd29yayBmb3IgdGhlc2UgdHlwZXMuCisKKyMg
ZGVmaW5lIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKHByZWZpeCwgdGVzdF9jYXNlX25hbWUsIGdl
bmVyYXRvciwgLi4uKSBcCisgIHN0YXRpYyA6OnRlc3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVy
YXRvcjx0ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiBcCiAgICAgICBndGVzdF8jI3ByZWZpeCMj
dGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdG9yXygpIHsgcmV0dXJuIGdlbmVyYXRvcjsgfSBc
Ci0gIGludCBndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19kdW1teV8gPSBcCisgIHN0
YXRpYyA6OnN0ZDo6c3RyaW5nIGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxH
ZW5lcmF0ZU5hbWVfKCBcCisgICAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88dGVz
dF9jYXNlX25hbWU6OlBhcmFtVHlwZT4mIGluZm8pIHsgXAorICAgIHJldHVybiA6OnRlc3Rpbmc6
OmludGVybmFsOjpHZXRQYXJhbU5hbWVHZW48dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlwZT4gXAor
ICAgICAgICAoX19WQV9BUkdTX18pKGluZm8pOyBcCisgIH0gXAorICBzdGF0aWMgaW50IGd0ZXN0
XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX2R1bW15XyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VE
XyA9IFwKICAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRl
cml6ZWRfdGVzdF9yZWdpc3RyeSgpLiBcCiAgICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9s
ZGVyPHRlc3RfY2FzZV9uYW1lPihcCi0gICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgX19G
SUxFX18sIF9fTElORV9fKS0+QWRkVGVzdENhc2VJbnN0YW50aWF0aW9uKFwKLSAgICAgICAgICAg
ICAgICAgICNwcmVmaXgsIFwKLSAgICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVz
dF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdG9yXywgXAotICAgICAgICAgICAgICAgICAgX19GSUxF
X18sIF9fTElORV9fKQorICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIFwKKyAgICAgICAg
ICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKFwKKyAgICAgICAgICAgICAg
ICAgIF9fRklMRV9fLCBfX0xJTkVfXykpLT5BZGRUZXN0Q2FzZUluc3RhbnRpYXRpb24oXAorICAg
ICAgICAgICAgICAgICAgICAgICNwcmVmaXgsIFwKKyAgICAgICAgICAgICAgICAgICAgICAmZ3Rl
c3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRvcl8sIFwKKyAgICAgICAg
ICAgICAgICAgICAgICAmZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVy
YXRlTmFtZV8sIFwKKyAgICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pCiAK
IH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RF
U1QKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qt
cHJpbnRlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qt
cHJpbnRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTg2NWY4NGU2ZjZmYTNlMGZjZTE5ODcwMGI1YTVkZmU1
ZjY1NTBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9ndGVzdC1wcmludGVycy5oCkBAIC0wLDAgKzEsMTEwNyBAQAorLy8gQ29weXJpZ2h0
IDIwMDcsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24u
CisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIEdvb2dsZSBUZXN0IC0gVGhl
IEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsKKy8vCisvLyBUaGlzIGZp
bGUgaW1wbGVtZW50cyBhIHVuaXZlcnNhbCB2YWx1ZSBwcmludGVyIHRoYXQgY2FuIHByaW50IGEK
Ky8vIHZhbHVlIG9mIGFueSB0eXBlIFQ6CisvLworLy8gICB2b2lkIDo6dGVzdGluZzo6aW50ZXJu
YWw6OlVuaXZlcnNhbFByaW50ZXI8VD46OlByaW50KHZhbHVlLCBvc3RyZWFtX3B0cik7CisvLwor
Ly8gQSB1c2VyIGNhbiB0ZWFjaCB0aGlzIGZ1bmN0aW9uIGhvdyB0byBwcmludCBhIGNsYXNzIHR5
cGUgVCBieQorLy8gZGVmaW5pbmcgZWl0aGVyIG9wZXJhdG9yPDwoKSBvciBQcmludFRvKCkgaW4g
dGhlIG5hbWVzcGFjZSB0aGF0CisvLyBkZWZpbmVzIFQuICBNb3JlIHNwZWNpZmljYWxseSwgdGhl
IEZJUlNUIGRlZmluZWQgZnVuY3Rpb24gaW4gdGhlCisvLyBmb2xsb3dpbmcgbGlzdCB3aWxsIGJl
IHVzZWQgKGFzc3VtaW5nIFQgaXMgZGVmaW5lZCBpbiBuYW1lc3BhY2UKKy8vIGZvbyk6CisvLwor
Ly8gICAxLiBmb286OlByaW50VG8oY29uc3QgVCYsIG9zdHJlYW0qKQorLy8gICAyLiBvcGVyYXRv
cjw8KG9zdHJlYW0mLCBjb25zdCBUJikgZGVmaW5lZCBpbiBlaXRoZXIgZm9vIG9yIHRoZQorLy8g
ICAgICBnbG9iYWwgbmFtZXNwYWNlLgorLy8KKy8vIEhvd2V2ZXIgaWYgVCBpcyBhbiBTVEwtc3R5
bGUgY29udGFpbmVyIHRoZW4gaXQgaXMgcHJpbnRlZCBlbGVtZW50LXdpc2UKKy8vIHVubGVzcyBm
b286OlByaW50VG8oY29uc3QgVCYsIG9zdHJlYW0qKSBpcyBkZWZpbmVkLiBOb3RlIHRoYXQKKy8v
IG9wZXJhdG9yPDwoKSBpcyBpZ25vcmVkIGZvciBjb250YWluZXIgdHlwZXMuCisvLworLy8gSWYg
bm9uZSBvZiB0aGUgYWJvdmUgaXMgZGVmaW5lZCwgaXQgd2lsbCBwcmludCB0aGUgZGVidWcgc3Ry
aW5nIG9mCisvLyB0aGUgdmFsdWUgaWYgaXQgaXMgYSBwcm90b2NvbCBidWZmZXIsIG9yIHByaW50
IHRoZSByYXcgYnl0ZXMgaW4gdGhlCisvLyB2YWx1ZSBvdGhlcndpc2UuCisvLworLy8gVG8gYWlk
IGRlYnVnZ2luZzogd2hlbiBUIGlzIGEgcmVmZXJlbmNlIHR5cGUsIHRoZSBhZGRyZXNzIG9mIHRo
ZQorLy8gdmFsdWUgaXMgYWxzbyBwcmludGVkOyB3aGVuIFQgaXMgYSAoY29uc3QpIGNoYXIgcG9p
bnRlciwgYm90aCB0aGUKKy8vIHBvaW50ZXIgdmFsdWUgYW5kIHRoZSBOVUwtdGVybWluYXRlZCBz
dHJpbmcgaXQgcG9pbnRzIHRvIGFyZQorLy8gcHJpbnRlZC4KKy8vCisvLyBXZSBhbHNvIHByb3Zp
ZGUgc29tZSBjb252ZW5pZW50IHdyYXBwZXJzOgorLy8KKy8vICAgLy8gUHJpbnRzIGEgdmFsdWUg
dG8gYSBzdHJpbmcuICBGb3IgYSAoY29uc3Qgb3Igbm90KSBjaGFyCisvLyAgIC8vIHBvaW50ZXIs
IHRoZSBOVUwtdGVybWluYXRlZCBzdHJpbmcgKGJ1dCBub3QgdGhlIHBvaW50ZXIpIGlzCisvLyAg
IC8vIHByaW50ZWQuCisvLyAgIHN0ZDo6c3RyaW5nIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhj
b25zdCBUJiB2YWx1ZSk7CisvLworLy8gICAvLyBQcmludHMgYSB2YWx1ZSB0ZXJzZWx5OiBmb3Ig
YSByZWZlcmVuY2UgdHlwZSwgdGhlIHJlZmVyZW5jZWQKKy8vICAgLy8gdmFsdWUgKGJ1dCBub3Qg
dGhlIGFkZHJlc3MpIGlzIHByaW50ZWQ7IGZvciBhIChjb25zdCBvciBub3QpIGNoYXIKKy8vICAg
Ly8gcG9pbnRlciwgdGhlIE5VTC10ZXJtaW5hdGVkIHN0cmluZyAoYnV0IG5vdCB0aGUgcG9pbnRl
cikgaXMKKy8vICAgLy8gcHJpbnRlZC4KKy8vICAgdm9pZCA6OnRlc3Rpbmc6OmludGVybmFsOjpV
bml2ZXJzYWxUZXJzZVByaW50KGNvbnN0IFQmIHZhbHVlLCBvc3RyZWFtKik7CisvLworLy8gICAv
LyBQcmludHMgdmFsdWUgdXNpbmcgdGhlIHR5cGUgaW5mZXJyZWQgYnkgdGhlIGNvbXBpbGVyLiAg
VGhlIGRpZmZlcmVuY2UKKy8vICAgLy8gZnJvbSBVbml2ZXJzYWxUZXJzZVByaW50KCkgaXMgdGhh
dCB0aGlzIGZ1bmN0aW9uIHByaW50cyBib3RoIHRoZQorLy8gICAvLyBwb2ludGVyIGFuZCB0aGUg
TlVMLXRlcm1pbmF0ZWQgc3RyaW5nIGZvciBhIChjb25zdCBvciBub3QpIGNoYXIgcG9pbnRlci4K
Ky8vICAgdm9pZCA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxQcmludChjb25zdCBUJiB2
YWx1ZSwgb3N0cmVhbSopOworLy8KKy8vICAgLy8gUHJpbnRzIHRoZSBmaWVsZHMgb2YgYSB0dXBs
ZSB0ZXJzZWx5IHRvIGEgc3RyaW5nIHZlY3Rvciwgb25lCisvLyAgIC8vIGVsZW1lbnQgZm9yIGVh
Y2ggZmllbGQuIFR1cGxlIHN1cHBvcnQgbXVzdCBiZSBlbmFibGVkIGluCisvLyAgIC8vIGd0ZXN0
LXBvcnQuaC4KKy8vICAgc3RkOjp2ZWN0b3I8c3RyaW5nPiBVbml2ZXJzYWxUZXJzZVByaW50VHVw
bGVGaWVsZHNUb1N0cmluZ3MoCisvLyAgICAgICBjb25zdCBUdXBsZSYgdmFsdWUpOworLy8KKy8v
IEtub3duIGxpbWl0YXRpb246CisvLworLy8gVGhlIHByaW50IHByaW1pdGl2ZXMgcHJpbnQgdGhl
IGVsZW1lbnRzIG9mIGFuIFNUTC1zdHlsZSBjb250YWluZXIKKy8vIHVzaW5nIHRoZSBjb21waWxl
ci1pbmZlcnJlZCB0eXBlIG9mICppdGVyIHdoZXJlIGl0ZXIgaXMgYQorLy8gY29uc3RfaXRlcmF0
b3Igb2YgdGhlIGNvbnRhaW5lci4gIFdoZW4gY29uc3RfaXRlcmF0b3IgaXMgYW4gaW5wdXQKKy8v
IGl0ZXJhdG9yIGJ1dCBub3QgYSBmb3J3YXJkIGl0ZXJhdG9yLCB0aGlzIGluZmVycmVkIHR5cGUg
bWF5IG5vdAorLy8gbWF0Y2ggdmFsdWVfdHlwZSwgYW5kIHRoZSBwcmludCBvdXRwdXQgbWF5IGJl
IGluY29ycmVjdC4gIEluCisvLyBwcmFjdGljZSwgdGhpcyBpcyByYXJlbHkgYSBwcm9ibGVtIGFz
IGZvciBtb3N0IGNvbnRhaW5lcnMKKy8vIGNvbnN0X2l0ZXJhdG9yIGlzIGEgZm9yd2FyZCBpdGVy
YXRvci4gIFdlJ2xsIGZpeCB0aGlzIGlmIHRoZXJlJ3MgYW4KKy8vIGFjdHVhbCBuZWVkIGZvciBp
dC4gIE5vdGUgdGhhdCB0aGlzIGZpeCBjYW5ub3QgcmVseSBvbiB2YWx1ZV90eXBlCisvLyBiZWlu
ZyBkZWZpbmVkIGFzIG1hbnkgdXNlci1kZWZpbmVkIGNvbnRhaW5lciB0eXBlcyBkb24ndCBoYXZl
CisvLyB2YWx1ZV90eXBlLgorCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisK
KyNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUklOVEVSU19IXworI2RlZmluZSBH
VEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BSSU5URVJTX0hfCisKKyNpbmNsdWRlIDxvc3RyZWFt
PiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5j
bHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcG9ydC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFs
LmgiCisKKyNpZiBHVEVTVF9IQVNfU1REX1RVUExFXworIyBpbmNsdWRlIDx0dXBsZT4KKyNlbmRp
ZgorCisjaWYgR1RFU1RfSEFTX0FCU0wKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3Zp
ZXcuaCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYWJzbC90
eXBlcy92YXJpYW50LmgiCisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCisKK25hbWVzcGFjZSB0
ZXN0aW5nIHsKKworLy8gRGVmaW5pdGlvbnMgaW4gdGhlICdpbnRlcm5hbCcgYW5kICdpbnRlcm5h
bDInIG5hbWUgc3BhY2VzIGFyZQorLy8gc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2Uu
ICBETyBOT1QgVVNFIFRIRU0gSU4gVVNFUiBDT0RFIQorbmFtZXNwYWNlIGludGVybmFsMiB7CisK
Ky8vIFByaW50cyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBnaXZlbiBvYmplY3Qg
dG8gdGhlIGdpdmVuCisvLyBvc3RyZWFtLgorR1RFU1RfQVBJXyB2b2lkIFByaW50Qnl0ZXNJbk9i
amVjdFRvKGNvbnN0IHVuc2lnbmVkIGNoYXIqIG9ial9ieXRlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKKworLy8gRm9yIHNlbGVjdGluZyB3
aGljaCBwcmludGVyIHRvIHVzZSB3aGVuIGEgZ2l2ZW4gdHlwZSBoYXMgbmVpdGhlciA8PAorLy8g
bm9yIFByaW50VG8oKS4KK2VudW0gVHlwZUtpbmQgeworICBrUHJvdG9idWYsICAgICAgICAgICAg
ICAvLyBhIHByb3RvYnVmIHR5cGUKKyAga0NvbnZlcnRpYmxlVG9JbnRlZ2VyLCAgLy8gYSB0eXBl
IGltcGxpY2l0bHkgY29udmVydGlibGUgdG8gQmlnZ2VzdEludAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyAoZS5nLiBhIG5hbWVkIG9yIHVubmFtZWQgZW51bSB0eXBlKQorI2lmIEdURVNU
X0hBU19BQlNMCisgIGtDb252ZXJ0aWJsZVRvU3RyaW5nVmlldywgIC8vIGEgdHlwZSBpbXBsaWNp
dGx5IGNvbnZlcnRpYmxlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFic2w6
OnN0cmluZ192aWV3CisjZW5kaWYKKyAga090aGVyVHlwZSAgLy8gYW55dGhpbmcgZWxzZQorfTsK
KworLy8gVHlwZVdpdGhvdXRGb3JtYXR0ZXI8VCwga1R5cGVLaW5kPjo6UHJpbnRWYWx1ZSh2YWx1
ZSwgb3MpIGlzIGNhbGxlZAorLy8gYnkgdGhlIHVuaXZlcnNhbCBwcmludGVyIHRvIHByaW50IGEg
dmFsdWUgb2YgdHlwZSBUIHdoZW4gbmVpdGhlcgorLy8gb3BlcmF0b3I8PCBub3IgUHJpbnRUbygp
IGlzIGRlZmluZWQgZm9yIFQsIHdoZXJlIGtUeXBlS2luZCBpcyB0aGUKKy8vICJraW5kIiBvZiBU
IGFzIGRlZmluZWQgYnkgZW51bSBUeXBlS2luZC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBUeXBl
S2luZCBrVHlwZUtpbmQ+CitjbGFzcyBUeXBlV2l0aG91dEZvcm1hdHRlciB7CisgcHVibGljOgor
ICAvLyBUaGlzIGRlZmF1bHQgdmVyc2lvbiBpcyBjYWxsZWQgd2hlbiBrVHlwZUtpbmQgaXMga090
aGVyVHlwZS4KKyAgc3RhdGljIHZvaWQgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgICAgUHJpbnRCeXRlc0luT2JqZWN0VG8oc3RhdGljX2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhcio+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVy
cHJldF9jYXN0PGNvbnN0IHZvaWQqPigmdmFsdWUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplb2YodmFsdWUpLCBvcyk7CisgIH0KK307CisKKy8vIFdlIHByaW50IGEgcHJvdG9idWYg
dXNpbmcgaXRzIFNob3J0RGVidWdTdHJpbmcoKSB3aGVuIHRoZSBzdHJpbmcKKy8vIGRvZXNuJ3Qg
ZXhjZWVkIHRoaXMgbWFueSBjaGFyYWN0ZXJzOyBvdGhlcndpc2Ugd2UgcHJpbnQgaXQgdXNpbmcK
Ky8vIERlYnVnU3RyaW5nKCkgZm9yIGJldHRlciByZWFkYWJpbGl0eS4KK2NvbnN0IHNpemVfdCBr
UHJvdG9idWZPbmVMaW5lck1heExlbmd0aCA9IDUwOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2NsYXNzIFR5cGVXaXRob3V0Rm9ybWF0dGVyPFQsIGtQcm90b2J1Zj4geworIHB1YmxpYzoKKyAg
c3RhdGljIHZvaWQgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9z
KSB7CisgICAgc3RkOjpzdHJpbmcgcHJldHR5X3N0ciA9IHZhbHVlLlNob3J0RGVidWdTdHJpbmco
KTsKKyAgICBpZiAocHJldHR5X3N0ci5sZW5ndGgoKSA+IGtQcm90b2J1Zk9uZUxpbmVyTWF4TGVu
Z3RoKSB7CisgICAgICBwcmV0dHlfc3RyID0gIlxuIiArIHZhbHVlLkRlYnVnU3RyaW5nKCk7Cisg
ICAgfQorICAgICpvcyA8PCAoIjwiICsgcHJldHR5X3N0ciArICI+Iik7CisgIH0KK307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZVdpdGhvdXRGb3JtYXR0ZXI8VCwga0NvbnZl
cnRpYmxlVG9JbnRlZ2VyPiB7CisgcHVibGljOgorICAvLyBTaW5jZSBUIGhhcyBubyA8PCBvcGVy
YXRvciBvciBQcmludFRvKCkgYnV0IGNhbiBiZSBpbXBsaWNpdGx5CisgIC8vIGNvbnZlcnRlZCB0
byBCaWdnZXN0SW50LCB3ZSBwcmludCBpdCBhcyBhIEJpZ2dlc3RJbnQuCisgIC8vCisgIC8vIE1v
c3QgbGlrZWx5IFQgaXMgYW4gZW51bSB0eXBlIChlaXRoZXIgbmFtZWQgb3IgdW5uYW1lZCksIGlu
IHdoaWNoCisgIC8vIGNhc2UgcHJpbnRpbmcgaXQgYXMgYW4gaW50ZWdlciBpcyB0aGUgZGVzaXJl
ZCBiZWhhdmlvci4gIEluIGNhc2UKKyAgLy8gVCBpcyBub3QgYW4gZW51bSwgcHJpbnRpbmcgaXQg
YXMgYW4gaW50ZWdlciBpcyB0aGUgYmVzdCB3ZSBjYW4gZG8KKyAgLy8gZ2l2ZW4gdGhhdCBpdCBo
YXMgbm8gdXNlci1kZWZpbmVkIHByaW50ZXIuCisgIHN0YXRpYyB2b2lkIFByaW50VmFsdWUoY29u
c3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIGNvbnN0IGludGVybmFsOjpC
aWdnZXN0SW50IGtCaWdJbnQgPSB2YWx1ZTsKKyAgICAqb3MgPDwga0JpZ0ludDsKKyAgfQorfTsK
KworI2lmIEdURVNUX0hBU19BQlNMCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVX
aXRob3V0Rm9ybWF0dGVyPFQsIGtDb252ZXJ0aWJsZVRvU3RyaW5nVmlldz4geworIHB1YmxpYzoK
KyAgLy8gU2luY2UgVCBoYXMgbmVpdGhlciBvcGVyYXRvcjw8IG5vciBQcmludFRvKCkgYnV0IGNh
biBiZSBpbXBsaWNpdGx5CisgIC8vIGNvbnZlcnRlZCB0byBhYnNsOjpzdHJpbmdfdmlldywgd2Ug
cHJpbnQgaXQgYXMgYSBhYnNsOjpzdHJpbmdfdmlldy4KKyAgLy8KKyAgLy8gTm90ZTogdGhlIGlt
cGxlbWVudGF0aW9uIGlzIGZ1cnRoZXIgYmVsb3csIGFzIGl0IGRlcGVuZHMgb24KKyAgLy8gaW50
ZXJuYWw6OlByaW50VG8gc3ltYm9sIHdoaWNoIGlzIGRlZmluZWQgbGF0ZXIgaW4gdGhlIGZpbGUu
CisgIHN0YXRpYyB2b2lkIFByaW50VmFsdWUoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFt
KiBvcyk7Cit9OworI2VuZGlmCisKKy8vIFByaW50cyB0aGUgZ2l2ZW4gdmFsdWUgdG8gdGhlIGdp
dmVuIG9zdHJlYW0uICBJZiB0aGUgdmFsdWUgaXMgYQorLy8gcHJvdG9jb2wgbWVzc2FnZSwgaXRz
IGRlYnVnIHN0cmluZyBpcyBwcmludGVkOyBpZiBpdCdzIGFuIGVudW0gb3IKKy8vIG9mIGEgdHlw
ZSBpbXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRvIEJpZ2dlc3RJbnQsIGl0J3MgcHJpbnRlZCBhcyBh
bgorLy8gaW50ZWdlcjsgb3RoZXJ3aXNlIHRoZSBieXRlcyBpbiB0aGUgdmFsdWUgYXJlIHByaW50
ZWQuICBUaGlzIGlzCisvLyB3aGF0IFVuaXZlcnNhbFByaW50ZXI8VD46OlByaW50KCkgZG9lcyB3
aGVuIGl0IGtub3dzIG5vdGhpbmcgYWJvdXQKKy8vIHR5cGUgVCBhbmQgVCBoYXMgbmVpdGhlciA8
PCBvcGVyYXRvciBub3IgUHJpbnRUbygpLgorLy8KKy8vIEEgdXNlciBjYW4gb3ZlcnJpZGUgdGhp
cyBiZWhhdmlvciBmb3IgYSBjbGFzcyB0eXBlIEZvbyBieSBkZWZpbmluZworLy8gYSA8PCBvcGVy
YXRvciBpbiB0aGUgbmFtZXNwYWNlIHdoZXJlIEZvbyBpcyBkZWZpbmVkLgorLy8KKy8vIFdlIHB1
dCB0aGlzIG9wZXJhdG9yIGluIG5hbWVzcGFjZSAnaW50ZXJuYWwyJyBpbnN0ZWFkIG9mICdpbnRl
cm5hbCcKKy8vIHRvIHNpbXBsaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbiwgYXMgbXVjaCBjb2RlIGlu
ICdpbnRlcm5hbCcgbmVlZHMgdG8KKy8vIHVzZSA8PCBpbiBTVEwsIHdoaWNoIHdvdWxkIGNvbmZs
aWN0IHdpdGggb3VyIG93biA8PCB3ZXJlIGl0IGRlZmluZWQKKy8vIGluICdpbnRlcm5hbCcuCisv
LworLy8gTm90ZSB0aGF0IHRoaXMgb3BlcmF0b3I8PCB0YWtlcyBhIGdlbmVyaWMgc3RkOjpiYXNp
Y19vc3RyZWFtPENoYXIsCisvLyBDaGFyVHJhaXRzPiB0eXBlIGluc3RlYWQgb2YgdGhlIG1vcmUg
cmVzdHJpY3RlZCBzdGQ6Om9zdHJlYW0uICBJZgorLy8gd2UgZGVmaW5lIGl0IHRvIHRha2UgYW4g
c3RkOjpvc3RyZWFtIGluc3RlYWQsIHdlJ2xsIGdldCBhbgorLy8gImFtYmlndW91cyBvdmVybG9h
ZHMiIGNvbXBpbGVyIGVycm9yIHdoZW4gdHJ5aW5nIHRvIHByaW50IGEgdHlwZQorLy8gRm9vIHRo
YXQgc3VwcG9ydHMgc3RyZWFtaW5nIHRvIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLAorLy8gQ2hh
clRyYWl0cz4sIGFzIHRoZSBjb21waWxlciBjYW5ub3QgdGVsbCB3aGV0aGVyCisvLyBvcGVyYXRv
cjw8KHN0ZDo6b3N0cmVhbSYsIGNvbnN0IFQmKSBvcgorLy8gb3BlcmF0b3I8PChzdGQ6OmJhc2lj
X3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiwgY29uc3QgRm9vJikgaXMgbW9yZQorLy8gc3BlY2lm
aWMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhciwgdHlwZW5hbWUgQ2hhclRyYWl0cywgdHlwZW5h
bWUgVD4KKzo6c3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcGVyYXRvcjw8
KAorICAgIDo6c3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcywgY29uc3Qg
VCYgeCkgeworICBUeXBlV2l0aG91dEZvcm1hdHRlcjxULCAoaW50ZXJuYWw6OklzQVByb3RvY29s
TWVzc2FnZTxUPjo6dmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGtQcm90
b2J1ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50ZXJuYWw6OkltcGxpY2l0
bHlDb252ZXJ0aWJsZTwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUJiwgaW50ZXJuYWw6OkJpZ2dlc3RJbnQ+Ojp2YWx1ZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID8ga0NvbnZlcnRpYmxlVG9JbnRlZ2VyCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOgorI2lmIEdURVNUX0hBU19BQlNMCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCYsIGFic2w6
OnN0cmluZ192aWV3Pjo6dmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPyBrQ29udmVydGlibGVUb1N0cmluZ1ZpZXcKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOgorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtPdGhlclR5cGUpPjo6UHJpbnRWYWx1ZSh4LCAmb3MpOworICByZXR1cm4g
b3M7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbDIKK30gIC8vIG5hbWVzcGFjZSB0ZXN0
aW5nCisKKy8vIFRoaXMgbmFtZXNwYWNlIE1VU1QgTk9UIEJFIE5FU1RFRCBJTiA6OnRlc3Rpbmcs
IG9yIHRoZSBuYW1lIGxvb2stdXAKKy8vIG1hZ2ljIG5lZWRlZCBmb3IgaW1wbGVtZW50aW5nIFVu
aXZlcnNhbFByaW50ZXIgd29uJ3Qgd29yay4KK25hbWVzcGFjZSB0ZXN0aW5nX2ludGVybmFsIHsK
KworLy8gVXNlZCB0byBwcmludCBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIFNUTC1zdHlsZSBjb250
YWluZXIgd2hlbiB0aGUKKy8vIHVzZXIgZG9lc24ndCBkZWZpbmUgUHJpbnRUbygpIGZvciBpdC4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBEZWZhdWx0UHJpbnROb25Db250YWluZXJUbyhj
b25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIC8vIFdpdGggdGhlIGZvbGxv
d2luZyBzdGF0ZW1lbnQsIGR1cmluZyB1bnF1YWxpZmllZCBuYW1lIGxvb2t1cCwKKyAgLy8gdGVz
dGluZzo6aW50ZXJuYWwyOjpvcGVyYXRvcjw8IGFwcGVhcnMgYXMgaWYgaXQgd2FzIGRlY2xhcmVk
IGluCisgIC8vIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UgdGhhdCBjb250YWlucyBi
b3RoCisgIC8vIDo6dGVzdGluZ19pbnRlcm5hbCBhbmQgOjp0ZXN0aW5nOjppbnRlcm5hbDIsIGku
ZS4gdGhlIGdsb2JhbAorICAvLyBuYW1lc3BhY2UuICBGb3IgbW9yZSBkZXRhaWxzLCByZWZlciB0
byB0aGUgQysrIFN0YW5kYXJkIHNlY3Rpb24KKyAgLy8gNy4zLjQtMSBbbmFtZXNwYWNlLnVkaXJd
LiAgVGhpcyBhbGxvd3MgdXMgdG8gZmFsbCBiYWNrIG9udG8KKyAgLy8gdGVzdGluZzo6aW50ZXJu
YWwyOjpvcGVyYXRvcjw8IGluIGNhc2UgVCBkb2Vzbid0IGNvbWUgd2l0aCBhIDw8CisgIC8vIG9w
ZXJhdG9yLgorICAvLworICAvLyBXZSBjYW5ub3Qgd3JpdGUgJ3VzaW5nIDo6dGVzdGluZzo6aW50
ZXJuYWwyOjpvcGVyYXRvcjw8OycsIHdoaWNoCisgIC8vIGdjYyAzLjMgZmFpbHMgdG8gY29tcGls
ZSBkdWUgdG8gYSBjb21waWxlciBidWcuCisgIHVzaW5nIG5hbWVzcGFjZSA6OnRlc3Rpbmc6Omlu
dGVybmFsMjsgIC8vIE5PTElOVAorCisgIC8vIEFzc3VtaW5nIFQgaXMgZGVmaW5lZCBpbiBuYW1l
c3BhY2UgZm9vLCBpbiB0aGUgbmV4dCBzdGF0ZW1lbnQsCisgIC8vIHRoZSBjb21waWxlciB3aWxs
IGNvbnNpZGVyIGFsbCBvZjoKKyAgLy8KKyAgLy8gICAxLiBmb286Om9wZXJhdG9yPDwgKHRoYW5r
cyB0byBLb2VuaWcgbG9vay11cCksCisgIC8vICAgMi4gOjpvcGVyYXRvcjw8IChhcyB0aGUgY3Vy
cmVudCBuYW1lc3BhY2UgaXMgZW5jbG9zZWQgaW4gOjopLAorICAvLyAgIDMuIHRlc3Rpbmc6Omlu
dGVybmFsMjo6b3BlcmF0b3I8PCAodGhhbmtzIHRvIHRoZSB1c2luZyBzdGF0ZW1lbnQgYWJvdmUp
LgorICAvLworICAvLyBUaGUgb3BlcmF0b3I8PCB3aG9zZSB0eXBlIG1hdGNoZXMgVCBiZXN0IHdp
bGwgYmUgcGlja2VkLgorICAvLworICAvLyBXZSBkZWxpYmVyYXRlbHkgYWxsb3cgIzIgdG8gYmUg
YSBjYW5kaWRhdGUsIGFzIHNvbWV0aW1lcyBpdCdzCisgIC8vIGltcG9zc2libGUgdG8gZGVmaW5l
ICMxIChlLmcuIHdoZW4gZm9vIGlzIDo6c3RkLCBkZWZpbmluZworICAvLyBhbnl0aGluZyBpbiBp
dCBpcyB1bmRlZmluZWQgYmVoYXZpb3IgdW5sZXNzIHlvdSBhcmUgYSBjb21waWxlcgorICAvLyB2
ZW5kb3IuKS4KKyAgKm9zIDw8IHZhbHVlOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZ19p
bnRlcm5hbAorCituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCisv
LyBGb3JtYXRGb3JDb21wYXJpc29uPFRvUHJpbnQsIE90aGVyT3BlcmFuZD46OkZvcm1hdCh2YWx1
ZSkgZm9ybWF0cyBhCisvLyB2YWx1ZSBvZiB0eXBlIFRvUHJpbnQgdGhhdCBpcyBhbiBvcGVyYW5k
IG9mIGEgY29tcGFyaXNvbiBhc3NlcnRpb24KKy8vIChlLmcuIEFTU0VSVF9FUSkuICBPdGhlck9w
ZXJhbmQgaXMgdGhlIHR5cGUgb2YgdGhlIG90aGVyIG9wZXJhbmQgaW4KKy8vIHRoZSBjb21wYXJp
c29uLCBhbmQgaXMgdXNlZCB0byBoZWxwIGRldGVybWluZSB0aGUgYmVzdCB3YXkgdG8KKy8vIGZv
cm1hdCB0aGUgdmFsdWUuICBJbiBwYXJ0aWN1bGFyLCB3aGVuIHRoZSB2YWx1ZSBpcyBhIEMgc3Ry
aW5nCisvLyAoY2hhciBwb2ludGVyKSBhbmQgdGhlIG90aGVyIG9wZXJhbmQgaXMgYW4gU1RMIHN0
cmluZyBvYmplY3QsIHdlCisvLyB3YW50IHRvIGZvcm1hdCB0aGUgQyBzdHJpbmcgYXMgYSBzdHJp
bmcsIHNpbmNlIHdlIGtub3cgaXQgaXMKKy8vIGNvbXBhcmVkIGJ5IHZhbHVlIHdpdGggdGhlIHN0
cmluZyBvYmplY3QuICBJZiB0aGUgdmFsdWUgaXMgYSBjaGFyCisvLyBwb2ludGVyIGJ1dCB0aGUg
b3RoZXIgb3BlcmFuZCBpcyBub3QgYW4gU1RMIHN0cmluZyBvYmplY3QsIHdlIGRvbid0CisvLyBr
bm93IHdoZXRoZXIgdGhlIHBvaW50ZXIgaXMgc3VwcG9zZWQgdG8gcG9pbnQgdG8gYSBOVUwtdGVy
bWluYXRlZAorLy8gc3RyaW5nLCBhbmQgdGh1cyB3YW50IHRvIHByaW50IGl0IGFzIGEgcG9pbnRl
ciB0byBiZSBzYWZlLgorLy8KKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVT
RSBJTiBBIFVTRVIgUFJPR1JBTS4KKworLy8gVGhlIGRlZmF1bHQgY2FzZS4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUb1ByaW50LCB0eXBlbmFtZSBPdGhlck9wZXJhbmQ+CitjbGFzcyBGb3JtYXRGb3JD
b21wYXJpc29uIHsKKyBwdWJsaWM6CisgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1hdChjb25z
dCBUb1ByaW50JiB2YWx1ZSkgeworICAgIHJldHVybiA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmco
dmFsdWUpOworICB9Cit9OworCisvLyBBcnJheS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUb1ByaW50
LCBzaXplX3QgTiwgdHlwZW5hbWUgT3RoZXJPcGVyYW5kPgorY2xhc3MgRm9ybWF0Rm9yQ29tcGFy
aXNvbjxUb1ByaW50W05dLCBPdGhlck9wZXJhbmQ+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyA6OnN0
ZDo6c3RyaW5nIEZvcm1hdChjb25zdCBUb1ByaW50KiB2YWx1ZSkgeworICAgIHJldHVybiBGb3Jt
YXRGb3JDb21wYXJpc29uPGNvbnN0IFRvUHJpbnQqLCBPdGhlck9wZXJhbmQ+OjpGb3JtYXQodmFs
dWUpOworICB9Cit9OworCisvLyBCeSBkZWZhdWx0LCBwcmludCBDIHN0cmluZyBhcyBwb2ludGVy
cyB0byBiZSBzYWZlLCBhcyB3ZSBkb24ndCBrbm93CisvLyB3aGV0aGVyIHRoZXkgYWN0dWFsbHkg
cG9pbnQgdG8gYSBOVUwtdGVybWluYXRlZCBzdHJpbmcuCisKKyNkZWZpbmUgR1RFU1RfSU1QTF9G
T1JNQVRfQ19TVFJJTkdfQVNfUE9JTlRFUl8oQ2hhclR5cGUpICAgICAgICAgICAgICAgIFwKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIE90aGVyT3BlcmFuZD4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgY2xhc3MgRm9ybWF0Rm9yQ29tcGFyaXNvbjxDaGFyVHlwZSosIE90
aGVyT3BlcmFuZD4geyAgICAgICAgICAgICAgICAgIFwKKyAgIHB1YmxpYzogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBz
dGF0aWMgOjpzdGQ6OnN0cmluZyBGb3JtYXQoQ2hhclR5cGUqIHZhbHVlKSB7ICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgIHJldHVybiA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoc3RhdGlj
X2Nhc3Q8Y29uc3Qgdm9pZCo+KHZhbHVlKSk7IFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCitH
VEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19QT0lOVEVSXyhjaGFyKTsKK0dURVNUX0lNUExf
Rk9STUFUX0NfU1RSSU5HX0FTX1BPSU5URVJfKGNvbnN0IGNoYXIpOworR1RFU1RfSU1QTF9GT1JN
QVRfQ19TVFJJTkdfQVNfUE9JTlRFUl8od2NoYXJfdCk7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NU
UklOR19BU19QT0lOVEVSXyhjb25zdCB3Y2hhcl90KTsKKworI3VuZGVmIEdURVNUX0lNUExfRk9S
TUFUX0NfU1RSSU5HX0FTX1BPSU5URVJfCisKKy8vIElmIGEgQyBzdHJpbmcgaXMgY29tcGFyZWQg
d2l0aCBhbiBTVEwgc3RyaW5nIG9iamVjdCwgd2Uga25vdyBpdCdzIG1lYW50CisvLyB0byBwb2lu
dCB0byBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZywgYW5kIHRodXMgY2FuIHByaW50IGl0IGFzIGEg
c3RyaW5nLgorCisjZGVmaW5lIEdURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18o
Q2hhclR5cGUsIE90aGVyU3RyaW5nVHlwZSkgXAorICB0ZW1wbGF0ZSA8PiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBjbGFzcyBG
b3JtYXRGb3JDb21wYXJpc29uPENoYXJUeXBlKiwgT3RoZXJTdHJpbmdUeXBlPiB7ICAgICAgICAg
ICAgICAgXAorICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1h
dChDaGFyVHlwZSogdmFsdWUpIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgcmV0dXJu
IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyh2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5H
X0FTX1NUUklOR18oY2hhciwgOjpzdGQ6OnN0cmluZyk7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NU
UklOR19BU19TVFJJTkdfKGNvbnN0IGNoYXIsIDo6c3RkOjpzdHJpbmcpOworCisjaWYgR1RFU1Rf
SEFTX0dMT0JBTF9TVFJJTkcKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18o
Y2hhciwgOjpzdHJpbmcpOworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhj
b25zdCBjaGFyLCA6OnN0cmluZyk7CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19HTE9CQUxfV1NU
UklORworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyh3Y2hhcl90LCA6Ondz
dHJpbmcpOworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjb25zdCB3Y2hh
cl90LCA6OndzdHJpbmcpOworI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKK0dU
RVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18od2NoYXJfdCwgOjpzdGQ6OndzdHJp
bmcpOworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjb25zdCB3Y2hhcl90
LCA6OnN0ZDo6d3N0cmluZyk7CisjZW5kaWYKKworI3VuZGVmIEdURVNUX0lNUExfRk9STUFUX0Nf
U1RSSU5HX0FTX1NUUklOR18KKworLy8gRm9ybWF0cyBhIGNvbXBhcmlzb24gYXNzZXJ0aW9uIChl
LmcuIEFTU0VSVF9FUSwgRVhQRUNUX0xULCBhbmQgZXRjKQorLy8gb3BlcmFuZCB0byBiZSB1c2Vk
IGluIGEgZmFpbHVyZSBtZXNzYWdlLiAgVGhlIHR5cGUgKGJ1dCBub3QgdmFsdWUpCisvLyBvZiB0
aGUgb3RoZXIgb3BlcmFuZCBtYXkgYWZmZWN0IHRoZSBmb3JtYXQuICBUaGlzIGFsbG93cyB1cyB0
bworLy8gcHJpbnQgYSBjaGFyKiBhcyBhIHJhdyBwb2ludGVyIHdoZW4gaXQgaXMgY29tcGFyZWQg
YWdhaW5zdCBhbm90aGVyCisvLyBjaGFyKiBvciB2b2lkKiwgYW5kIHByaW50IGl0IGFzIGEgQyBz
dHJpbmcgd2hlbiBpdCBpcyBjb21wYXJlZAorLy8gYWdhaW5zdCBhbiBzdGQ6OnN0cmluZyBvYmpl
Y3QsIGZvciBleGFtcGxlLgorLy8KKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9U
IFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDI+CitzdGQ6OnN0cmluZyBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoCisgICAg
Y29uc3QgVDEmIHZhbHVlLCBjb25zdCBUMiYgLyogb3RoZXJfb3BlcmFuZCAqLykgeworICByZXR1
cm4gRm9ybWF0Rm9yQ29tcGFyaXNvbjxUMSwgVDI+OjpGb3JtYXQodmFsdWUpOworfQorCisvLyBV
bml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCh2YWx1ZSwgb3N0cmVhbV9wdHIpIHByaW50cyB0aGUg
Z2l2ZW4KKy8vIHZhbHVlIHRvIHRoZSBnaXZlbiBvc3RyZWFtLiAgVGhlIGNhbGxlciBtdXN0IGVu
c3VyZSB0aGF0CisvLyAnb3N0cmVhbV9wdHInIGlzIG5vdCBOVUxMLCBvciB0aGUgYmVoYXZpb3Ig
aXMgdW5kZWZpbmVkLgorLy8KKy8vIFdlIGRlZmluZSBVbml2ZXJzYWxQcmludGVyIGFzIGEgY2xh
c3MgdGVtcGxhdGUgKGFzIG9wcG9zZWQgdG8gYQorLy8gZnVuY3Rpb24gdGVtcGxhdGUpLCBhcyB3
ZSBuZWVkIHRvIHBhcnRpYWxseSBzcGVjaWFsaXplIGl0IGZvcgorLy8gcmVmZXJlbmNlIHR5cGVz
LCB3aGljaCBjYW5ub3QgYmUgZG9uZSB3aXRoIGZ1bmN0aW9uIHRlbXBsYXRlcy4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorY2xhc3MgVW5pdmVyc2FsUHJpbnRlcjsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVh
bSogb3MpOworCitlbnVtIERlZmF1bHRQcmludGVyVHlwZSB7CisgIGtQcmludENvbnRhaW5lciwK
KyAga1ByaW50UG9pbnRlciwKKyAga1ByaW50RnVuY3Rpb25Qb2ludGVyLAorICBrUHJpbnRPdGhl
ciwKK307Cit0ZW1wbGF0ZSA8RGVmYXVsdFByaW50ZXJUeXBlIHR5cGU+IHN0cnVjdCBXcmFwUHJp
bnRlclR5cGUge307CisKKy8vIFVzZWQgdG8gcHJpbnQgYW4gU1RMLXN0eWxlIGNvbnRhaW5lciB3
aGVuIHRoZSB1c2VyIGRvZXNuJ3QgZGVmaW5lCisvLyBhIFByaW50VG8oKSBmb3IgaXQuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgQz4KK3ZvaWQgRGVmYXVsdFByaW50VG8oV3JhcFByaW50ZXJUeXBlPGtQ
cmludENvbnRhaW5lcj4gLyogZHVtbXkgKi8sCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEMm
IGNvbnRhaW5lciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIGNvbnN0IHNpemVfdCBrTWF4Q291
bnQgPSAzMjsgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyB0byBwcmludC4KKyAg
Km9zIDw8ICd7JzsKKyAgc2l6ZV90IGNvdW50ID0gMDsKKyAgZm9yICh0eXBlbmFtZSBDOjpjb25z
dF9pdGVyYXRvciBpdCA9IGNvbnRhaW5lci5iZWdpbigpOworICAgICAgIGl0ICE9IGNvbnRhaW5l
ci5lbmQoKTsgKytpdCwgKytjb3VudCkgeworICAgIGlmIChjb3VudCA+IDApIHsKKyAgICAgICpv
cyA8PCAnLCc7CisgICAgICBpZiAoY291bnQgPT0ga01heENvdW50KSB7ICAvLyBFbm91Z2ggaGFz
IGJlZW4gcHJpbnRlZC4KKyAgICAgICAgKm9zIDw8ICIgLi4uIjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICB9CisgICAgfQorICAgICpvcyA8PCAnICc7CisgICAgLy8gV2UgY2Fubm90IGNhbGwgUHJp
bnRUbygqaXQsIG9zKSBoZXJlIGFzIFByaW50VG8oKSBkb2Vzbid0CisgICAgLy8gaGFuZGxlICpp
dCBiZWluZyBhIG5hdGl2ZSBhcnJheS4KKyAgICBpbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnQoKml0
LCBvcyk7CisgIH0KKworICBpZiAoY291bnQgPiAwKSB7CisgICAgKm9zIDw8ICcgJzsKKyAgfQor
ICAqb3MgPDwgJ30nOworfQorCisvLyBVc2VkIHRvIHByaW50IGEgcG9pbnRlciB0aGF0IGlzIG5l
aXRoZXIgYSBjaGFyIHBvaW50ZXIgbm9yIGEgbWVtYmVyCisvLyBwb2ludGVyLCB3aGVuIHRoZSB1
c2VyIGRvZXNuJ3QgZGVmaW5lIFByaW50VG8oKSBmb3IgaXQuICAoQSBtZW1iZXIKKy8vIHZhcmlh
YmxlIHBvaW50ZXIgb3IgbWVtYmVyIGZ1bmN0aW9uIHBvaW50ZXIgZG9lc24ndCByZWFsbHkgcG9p
bnQgdG8KKy8vIGEgbG9jYXRpb24gaW4gdGhlIGFkZHJlc3Mgc3BhY2UuICBUaGVpciByZXByZXNl
bnRhdGlvbiBpcworLy8gaW1wbGVtZW50YXRpb24tZGVmaW5lZC4gIFRoZXJlZm9yZSB0aGV5IHdp
bGwgYmUgcHJpbnRlZCBhcyByYXcKKy8vIGJ5dGVzLikKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
dm9pZCBEZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5cGU8a1ByaW50UG9pbnRlcj4gLyogZHVt
bXkgKi8sCisgICAgICAgICAgICAgICAgICAgIFQqIHAsIDo6c3RkOjpvc3RyZWFtKiBvcykgewor
ICBpZiAocCA9PSBOVUxMKSB7CisgICAgKm9zIDw8ICJOVUxMIjsKKyAgfSBlbHNlIHsKKyAgICAv
LyBUIGlzIG5vdCBhIGZ1bmN0aW9uIHR5cGUuICBXZSBqdXN0IGNhbGwgPDwgdG8gcHJpbnQgcCwK
KyAgICAvLyByZWx5aW5nIG9uIEFETCB0byBwaWNrIHVwIHVzZXItZGVmaW5lZCA8PCBmb3IgdGhl
aXIgcG9pbnRlcgorICAgIC8vIHR5cGVzLCBpZiBhbnkuCisgICAgKm9zIDw8IHA7CisgIH0KK30K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBEZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5
cGU8a1ByaW50RnVuY3Rpb25Qb2ludGVyPiAvKiBkdW1teSAqLywKKyAgICAgICAgICAgICAgICAg
ICAgVCogcCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIGlmIChwID09IE5VTEwpIHsKKyAgICAq
b3MgPDwgIk5VTEwiOworICB9IGVsc2UgeworICAgIC8vIFQgaXMgYSBmdW5jdGlvbiB0eXBlLCBz
byAnKm9zIDw8IHAnIGRvZXNuJ3QgZG8gd2hhdCB3ZSB3YW50CisgICAgLy8gKGl0IGp1c3QgcHJp
bnRzIHAgYXMgYm9vbCkuICBXZSB3YW50IHRvIHByaW50IHAgYXMgYSBjb25zdAorICAgIC8vIHZv
aWQqLgorICAgICpvcyA8PCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihwKTsKKyAgfQor
fQorCisvLyBVc2VkIHRvIHByaW50IGEgbm9uLWNvbnRhaW5lciwgbm9uLXBvaW50ZXIgdmFsdWUg
d2hlbiB0aGUgdXNlcgorLy8gZG9lc24ndCBkZWZpbmUgUHJpbnRUbygpIGZvciBpdC4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgordm9pZCBEZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5cGU8a1By
aW50T3RoZXI+IC8qIGR1bW15ICovLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiB2YWx1
ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIDo6dGVzdGluZ19pbnRlcm5hbDo6RGVmYXVsdFBy
aW50Tm9uQ29udGFpbmVyVG8odmFsdWUsIG9zKTsKK30KKworLy8gUHJpbnRzIHRoZSBnaXZlbiB2
YWx1ZSB1c2luZyB0aGUgPDwgb3BlcmF0b3IgaWYgaXQgaGFzIG9uZTsKKy8vIG90aGVyd2lzZSBw
cmludHMgdGhlIGJ5dGVzIGluIGl0LiAgVGhpcyBpcyB3aGF0CisvLyBVbml2ZXJzYWxQcmludGVy
PFQ+OjpQcmludCgpIGRvZXMgd2hlbiBQcmludFRvKCkgaXMgbm90IHNwZWNpYWxpemVkCisvLyBv
ciBvdmVybG9hZGVkIGZvciB0eXBlIFQuCisvLworLy8gQSB1c2VyIGNhbiBvdmVycmlkZSB0aGlz
IGJlaGF2aW9yIGZvciBhIGNsYXNzIHR5cGUgRm9vIGJ5IGRlZmluaW5nCisvLyBhbiBvdmVybG9h
ZCBvZiBQcmludFRvKCkgaW4gdGhlIG5hbWVzcGFjZSB3aGVyZSBGb28gaXMgZGVmaW5lZC4gIFdl
CisvLyBnaXZlIHRoZSB1c2VyIHRoaXMgb3B0aW9uIGFzIHNvbWV0aW1lcyBkZWZpbmluZyBhIDw8
IG9wZXJhdG9yIGZvcgorLy8gRm9vIGlzIG5vdCBkZXNpcmFibGUgKGUuZy4gdGhlIGNvZGluZyBz
dHlsZSBtYXkgcHJldmVudCBkb2luZyBpdCwKKy8vIG9yIHRoZXJlIGlzIGFscmVhZHkgYSA8PCBv
cGVyYXRvciBidXQgaXQgZG9lc24ndCBkbyB3aGF0IHRoZSB1c2VyCisvLyB3YW50cykuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgUHJpbnRUbyhjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgIC8vIERlZmF1bHRQcmludFRvKCkgaXMgb3ZlcmxvYWRlZC4gIFRoZSB0
eXBlIG9mIGl0cyBmaXJzdCBhcmd1bWVudAorICAvLyBkZXRlcm1pbmVzIHdoaWNoIHZlcnNpb24g
d2lsbCBiZSBwaWNrZWQuCisgIC8vCisgIC8vIE5vdGUgdGhhdCB3ZSBjaGVjayBmb3IgY29udGFp
bmVyIHR5cGVzIGhlcmUsIHByaW9yIHRvIHdlIGNoZWNrCisgIC8vIGZvciBwcm90b2NvbCBtZXNz
YWdlIHR5cGVzIGluIG91ciBvcGVyYXRvcjw8LiAgVGhlIHJhdGlvbmFsZSBpczoKKyAgLy8KKyAg
Ly8gRm9yIHByb3RvY29sIG1lc3NhZ2VzLCB3ZSB3YW50IHRvIGdpdmUgcGVvcGxlIGEgY2hhbmNl
IHRvCisgIC8vIG92ZXJyaWRlIEdvb2dsZSBNb2NrJ3MgZm9ybWF0IGJ5IGRlZmluaW5nIGEgUHJp
bnRUbygpIG9yCisgIC8vIG9wZXJhdG9yPDwuICBGb3IgU1RMIGNvbnRhaW5lcnMsIG90aGVyIGZv
cm1hdHMgY2FuIGJlCisgIC8vIGluY29tcGF0aWJsZSB3aXRoIEdvb2dsZSBNb2NrJ3MgZm9ybWF0
IGZvciB0aGUgY29udGFpbmVyCisgIC8vIGVsZW1lbnRzOyB0aGVyZWZvcmUgd2UgY2hlY2sgZm9y
IGNvbnRhaW5lciB0eXBlcyBoZXJlIHRvIGVuc3VyZQorICAvLyB0aGF0IG91ciBmb3JtYXQgaXMg
dXNlZC4KKyAgLy8KKyAgLy8gTm90ZSB0aGF0IE1TVkMgYW5kIGNsYW5nLWNsIGRvIGFsbG93IGFu
IGltcGxpY2l0IGNvbnZlcnNpb24gZnJvbQorICAvLyBwb2ludGVyLXRvLWZ1bmN0aW9uIHRvIHBv
aW50ZXItdG8tb2JqZWN0LCBidXQgY2xhbmctY2wgd2FybnMgb24gaXQuCisgIC8vIFNvIGRvbid0
IHVzZSBJbXBsaWNpdGx5Q29udmVydGlibGUgaWYgaXQgY2FuIGJlIGhlbHBlZCBzaW5jZSBpdCB3
aWxsCisgIC8vIGNhdXNlIHRoaXMgd2FybmluZywgYW5kIHVzZSBhIHNlcGFyYXRlIG92ZXJsb2Fk
IG9mIERlZmF1bHRQcmludFRvIGZvcgorICAvLyBmdW5jdGlvbiBwb2ludGVycyBzbyB0aGF0IHRo
ZSBgKm9zIDw8IHBgIGluIHRoZSBvYmplY3QgcG9pbnRlciBvdmVybG9hZAorICAvLyBkb2Vzbid0
IGNhdXNlIHRoYXQgd2FybmluZyBlaXRoZXIuCisgIERlZmF1bHRQcmludFRvKAorICAgICAgV3Jh
cFByaW50ZXJUeXBlIDwKKyAgICAgICAgICAgICAgICAgIChzaXplb2YoSXNDb250YWluZXJUZXN0
PFQ+KDApKSA9PSBzaXplb2YoSXNDb250YWluZXIpKSAmJgorICAgICAgICAgICAgICAhSXNSZWN1
cnNpdmVDb250YWluZXI8VD46OnZhbHVlCisgICAgICAgICAgPyBrUHJpbnRDb250YWluZXIKKyAg
ICAgICAgICA6ICFpc19wb2ludGVyPFQ+Ojp2YWx1ZQorICAgICAgICAgICAgICAgID8ga1ByaW50
T3RoZXIKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisgICAgICAgICAgICAgICAgOiBzdGQ6OmlzX2Z1
bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+Ojp2YWx1ZQorI2Vs
c2UKKyAgICAgICAgICAgICAgICA6ICFpbnRlcm5hbDo6SW1wbGljaXRseUNvbnZlcnRpYmxlPFQs
IGNvbnN0IHZvaWQqPjo6dmFsdWUKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgID8ga1By
aW50RnVuY3Rpb25Qb2ludGVyCisgICAgICAgICAgICAgICAgICAgICAgOiBrUHJpbnRQb2ludGVy
ID4gKCksCisgICAgICB2YWx1ZSwgb3MpOworfQorCisvLyBUaGUgZm9sbG93aW5nIGxpc3Qgb2Yg
UHJpbnRUbygpIG92ZXJsb2FkcyB0ZWxscworLy8gVW5pdmVyc2FsUHJpbnRlcjxUPjo6UHJpbnQo
KSBob3cgdG8gcHJpbnQgc3RhbmRhcmQgdHlwZXMgKGJ1aWx0LWluCisvLyB0eXBlcywgc3RyaW5n
cywgcGxhaW4gYXJyYXlzLCBhbmQgcG9pbnRlcnMpLgorCisvLyBPdmVybG9hZHMgZm9yIHZhcmlv
dXMgY2hhciB0eXBlcy4KK0dURVNUX0FQSV8gdm9pZCBQcmludFRvKHVuc2lnbmVkIGNoYXIgYywg
OjpzdGQ6Om9zdHJlYW0qIG9zKTsKK0dURVNUX0FQSV8gdm9pZCBQcmludFRvKHNpZ25lZCBjaGFy
IGMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRvKGNoYXIgYywgOjpz
dGQ6Om9zdHJlYW0qIG9zKSB7CisgIC8vIFdoZW4gcHJpbnRpbmcgYSBwbGFpbiBjaGFyLCB3ZSBh
bHdheXMgdHJlYXQgaXQgYXMgdW5zaWduZWQuICBUaGlzCisgIC8vIHdheSwgdGhlIG91dHB1dCB3
b24ndCBiZSBhZmZlY3RlZCBieSB3aGV0aGVyIHRoZSBjb21waWxlciB0aGlua3MKKyAgLy8gY2hh
ciBpcyBzaWduZWQgb3Igbm90LgorICBQcmludFRvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KGMpLCBvcyk7Cit9CisKKy8vIE92ZXJsb2FkcyBmb3Igb3RoZXIgc2ltcGxlIGJ1aWx0LWluIHR5
cGVzLgoraW5saW5lIHZvaWQgUHJpbnRUbyhib29sIHgsIDo6c3RkOjpvc3RyZWFtKiBvcykgewor
ICAqb3MgPDwgKHggPyAidHJ1ZSIgOiAiZmFsc2UiKTsKK30KKworLy8gT3ZlcmxvYWQgZm9yIHdj
aGFyX3QgdHlwZS4KKy8vIFByaW50cyBhIHdjaGFyX3QgYXMgYSBzeW1ib2wgaWYgaXQgaXMgcHJp
bnRhYmxlIG9yIGFzIGl0cyBpbnRlcm5hbAorLy8gY29kZSBvdGhlcndpc2UgYW5kIGFsc28gYXMg
aXRzIGRlY2ltYWwgY29kZSAoZXhjZXB0IGZvciBMJ1wwJykuCisvLyBUaGUgTCdcMCcgY2hhciBp
cyBwcmludGVkIGFzICJMJ1xcMCciLiBUaGUgZGVjaW1hbCBjb2RlIGlzIHByaW50ZWQKKy8vIGFz
IHNpZ25lZCBpbnRlZ2VyIHdoZW4gd2NoYXJfdCBpcyBpbXBsZW1lbnRlZCBieSB0aGUgY29tcGls
ZXIKKy8vIGFzIGEgc2lnbmVkIHR5cGUgYW5kIGlzIHByaW50ZWQgYXMgYW4gdW5zaWduZWQgaW50
ZWdlciB3aGVuIHdjaGFyX3QKKy8vIGlzIGltcGxlbWVudGVkIGFzIGFuIHVuc2lnbmVkIHR5cGUu
CitHVEVTVF9BUElfIHZvaWQgUHJpbnRUbyh3Y2hhcl90IHdjLCA6OnN0ZDo6b3N0cmVhbSogb3Mp
OworCisvLyBPdmVybG9hZHMgZm9yIEMgc3RyaW5ncy4KK0dURVNUX0FQSV8gdm9pZCBQcmludFRv
KGNvbnN0IGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRv
KGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFRvKEltcGxpY2l0Q2FzdF88
Y29uc3QgY2hhcio+KHMpLCBvcyk7Cit9CisKKy8vIHNpZ25lZC91bnNpZ25lZCBjaGFyIGlzIG9m
dGVuIHVzZWQgZm9yIHJlcHJlc2VudGluZyBiaW5hcnkgZGF0YSwgc28KKy8vIHdlIHByaW50IHBv
aW50ZXJzIHRvIGl0IGFzIHZvaWQqIHRvIGJlIHNhZmUuCitpbmxpbmUgdm9pZCBQcmludFRvKGNv
bnN0IHNpZ25lZCBjaGFyKiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUbyhJbXBs
aWNpdENhc3RfPGNvbnN0IHZvaWQqPihzKSwgb3MpOworfQoraW5saW5lIHZvaWQgUHJpbnRUbyhz
aWduZWQgY2hhciogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGljaXRD
YXN0Xzxjb25zdCB2b2lkKj4ocyksIG9zKTsKK30KK2lubGluZSB2b2lkIFByaW50VG8oY29uc3Qg
dW5zaWduZWQgY2hhciogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGlj
aXRDYXN0Xzxjb25zdCB2b2lkKj4ocyksIG9zKTsKK30KK2lubGluZSB2b2lkIFByaW50VG8odW5z
aWduZWQgY2hhciogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGljaXRD
YXN0Xzxjb25zdCB2b2lkKj4ocyksIG9zKTsKK30KKworLy8gTVNWQyBjYW4gYmUgY29uZmlndXJl
ZCB0byBkZWZpbmUgd2NoYXJfdCBhcyBhIHR5cGVkZWYgb2YgdW5zaWduZWQKKy8vIHNob3J0LiAg
SXQgZGVmaW5lcyBfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCB3aGVuIHdjaGFyX3QgaXMgYSBuYXRp
dmUKKy8vIHR5cGUuICBXaGVuIHdjaGFyX3QgaXMgYSB0eXBlZGVmLCBkZWZpbmluZyBhbiBvdmVy
bG9hZCBmb3IgY29uc3QKKy8vIHdjaGFyX3QqIHdvdWxkIGNhdXNlIHVuc2lnbmVkIHNob3J0KiBi
ZSBwcmludGVkIGFzIGEgd2lkZSBzdHJpbmcsCisvLyBwb3NzaWJseSBjYXVzaW5nIGludmFsaWQg
bWVtb3J5IGFjY2Vzc2VzLgorI2lmICFkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9OQVRJ
VkVfV0NIQVJfVF9ERUZJTkVEKQorLy8gT3ZlcmxvYWRzIGZvciB3aWRlIEMgc3RyaW5ncworR1RF
U1RfQVBJXyB2b2lkIFByaW50VG8oY29uc3Qgd2NoYXJfdCogcywgOjpzdGQ6Om9zdHJlYW0qIG9z
KTsKK2lubGluZSB2b2lkIFByaW50VG8od2NoYXJfdCogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7
CisgIFByaW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB3Y2hhcl90Kj4ocyksIG9zKTsKK30KKyNl
bmRpZgorCisvLyBPdmVybG9hZCBmb3IgQyBhcnJheXMuICBNdWx0aS1kaW1lbnNpb25hbCBhcnJh
eXMgYXJlIHByaW50ZWQKKy8vIHByb3Blcmx5LgorCisvLyBQcmludHMgdGhlIGdpdmVuIG51bWJl
ciBvZiBlbGVtZW50cyBpbiBhbiBhcnJheSwgd2l0aG91dCBwcmludGluZworLy8gdGhlIGN1cmx5
IGJyYWNlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBQcmludFJhd0FycmF5VG8oY29u
c3QgVCBhW10sIHNpemVfdCBjb3VudCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFVuaXZlcnNh
bFByaW50KGFbMF0sIG9zKTsKKyAgZm9yIChzaXplX3QgaSA9IDE7IGkgIT0gY291bnQ7IGkrKykg
eworICAgICpvcyA8PCAiLCAiOworICAgIFVuaXZlcnNhbFByaW50KGFbaV0sIG9zKTsKKyAgfQor
fQorCisvLyBPdmVybG9hZHMgZm9yIDo6c3RyaW5nIGFuZCA6OnN0ZDo6c3RyaW5nLgorI2lmIEdU
RVNUX0hBU19HTE9CQUxfU1RSSU5HCitHVEVTVF9BUElfIHZvaWQgUHJpbnRTdHJpbmdUbyhjb25z
dCA6OnN0cmluZyZzLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhj
b25zdCA6OnN0cmluZyYgcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50U3RyaW5nVG8o
cywgb3MpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCitHVEVTVF9B
UElfIHZvaWQgUHJpbnRTdHJpbmdUbyhjb25zdCA6OnN0ZDo6c3RyaW5nJnMsIDo6c3RkOjpvc3Ry
ZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHMsIDo6
c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFN0cmluZ1RvKHMsIG9zKTsKK30KKworLy8gT3Zl
cmxvYWRzIGZvciA6OndzdHJpbmcgYW5kIDo6c3RkOjp3c3RyaW5nLgorI2lmIEdURVNUX0hBU19H
TE9CQUxfV1NUUklORworR1RFU1RfQVBJXyB2b2lkIFByaW50V2lkZVN0cmluZ1RvKGNvbnN0IDo6
d3N0cmluZyZzLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhjb25z
dCA6OndzdHJpbmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFdpZGVTdHJpbmdU
byhzLCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORworCisjaWYg
R1RFU1RfSEFTX1NURF9XU1RSSU5HCitHVEVTVF9BUElfIHZvaWQgUHJpbnRXaWRlU3RyaW5nVG8o
Y29uc3QgOjpzdGQ6OndzdHJpbmcmcywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKK2lubGluZSB2b2lk
IFByaW50VG8oY29uc3QgOjpzdGQ6OndzdHJpbmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgewor
ICBQcmludFdpZGVTdHJpbmdUbyhzLCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERf
V1NUUklORworCisjaWYgR1RFU1RfSEFTX0FCU0wKKy8vIE92ZXJsb2FkIGZvciBhYnNsOjpzdHJp
bmdfdmlldy4KK2lubGluZSB2b2lkIFByaW50VG8oYWJzbDo6c3RyaW5nX3ZpZXcgc3AsIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgeworICBQcmludFRvKDo6c3RkOjpzdHJpbmcoc3ApLCBvcyk7Cit9Cisj
ZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCisKKyNpZiBHVEVTVF9MQU5HX0NYWDExCitpbmxpbmUg
dm9pZCBQcmludFRvKHN0ZDo6bnVsbHB0cl90LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsgKm9zIDw8
ICIobnVsbHB0cikiOyB9CisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKworI2lmIEdURVNU
X0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8KKy8vIEhlbHBlciBmdW5jdGlv
biBmb3IgcHJpbnRpbmcgYSB0dXBsZS4gIFQgbXVzdCBiZSBpbnN0YW50aWF0ZWQgd2l0aAorLy8g
YSB0dXBsZSB0eXBlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFByaW50VHVwbGVUbyhj
b25zdCBUJiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfVFIx
X1RVUExFIHx8IEdURVNUX0hBU19TVERfVFVQTEVfCisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExF
CisvLyBPdmVybG9hZCBmb3IgOjpzdGQ6OnRyMTo6dHVwbGUuICBOZWVkZWQgZm9yIHByaW50aW5n
IGZ1bmN0aW9uIGFyZ3VtZW50cywKKy8vIHdoaWNoIGFyZSBwYWNrZWQgYXMgdHVwbGVzLgorCisv
LyBPdmVybG9hZGVkIFByaW50VG8oKSBmb3IgdHVwbGVzIG9mIHZhcmlvdXMgYXJpdGllcy4gIFdl
IHN1cHBvcnQKKy8vIHR1cGxlcyBvZiB1cC10byAxMCBmaWVsZHMuICBUaGUgZm9sbG93aW5nIGlt
cGxlbWVudGF0aW9uIHdvcmtzCisvLyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdHIxOjp0dXBsZSBp
cyBpbXBsZW1lbnRlZCB1c2luZyB0aGUKKy8vIG5vbi1zdGFuZGFyZCB2YXJpYWRpYyB0ZW1wbGF0
ZSBmZWF0dXJlIG9yIG5vdC4KKworaW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIx
Ojp0dXBsZTw+JiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9z
KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3Rk
Ojp0cjE6OnR1cGxlPFQxPiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVU
byh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lk
IFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyPiYgdCwgOjpzdGQ6Om9zdHJl
YW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3Rk
Ojp0cjE6OnR1cGxlPFQxLCBUMiwgVDM+JiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJp
bnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Pgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0
cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFBy
aW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+Cit2b2lkIFByaW50VG8o
Y29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiYgdCwKKyAgICAgICAg
ICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0eXBlbmFtZSBUNj4KK3ZvaWQgUHJpbnRUbyhj
b25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiYgdCwKKyAgICAg
ICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVu
YW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+
Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDc+JiB0LAorICAgICAgICAgICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmlu
dFR1cGxlVG8odCwgb3MpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgICAgICAgIHR5cGVu
YW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+Cit2b2lkIFByaW50VG8oY29uc3QgOjpz
dGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiYgdCwKKyAgICAg
ICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVu
YW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcs
IHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOT4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIx
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiYgdCwKKyAgICAgICAg
ICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5
cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgordm9pZCBQcmludFRvKAorICAg
IGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksIFQxMD4mIHQsCisgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0
LCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUKKworI2lmIEdURVNUX0hB
U19TVERfVFVQTEVfCit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHlwZXM+Cit2b2lkIFByaW50VG8o
Y29uc3QgOjpzdGQ6OnR1cGxlPFR5cGVzLi4uPiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Cisg
IFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfVFVQTEVf
CisKKy8vIE92ZXJsb2FkIGZvciBzdGQ6OnBhaXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjpwYWlyPFQxLCBUMj4mIHZhbHVl
LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8ICcoJzsKKyAgLy8gV2UgY2Fubm90IHVz
ZSBVbml2ZXJzYWxQcmludCh2YWx1ZS5maXJzdCwgb3MpIGhlcmUsIGFzIFQxIG1heSBiZQorICAv
LyBhIHJlZmVyZW5jZSB0eXBlLiAgVGhlIHNhbWUgZm9yIHByaW50aW5nIHZhbHVlLnNlY29uZC4K
KyAgVW5pdmVyc2FsUHJpbnRlcjxUMT46OlByaW50KHZhbHVlLmZpcnN0LCBvcyk7CisgICpvcyA8
PCAiLCAiOworICBVbml2ZXJzYWxQcmludGVyPFQyPjo6UHJpbnQodmFsdWUuc2Vjb25kLCBvcyk7
CisgICpvcyA8PCAnKSc7Cit9CisKKy8vIEltcGxlbWVudHMgcHJpbnRpbmcgYSBub24tcmVmZXJl
bmNlIHR5cGUgVCBieSBsZXR0aW5nIHRoZSBjb21waWxlcgorLy8gcGljayB0aGUgcmlnaHQgb3Zl
cmxvYWQgb2YgUHJpbnRUbygpIGZvciBULgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBV
bml2ZXJzYWxQcmludGVyIHsKKyBwdWJsaWM6CisgIC8vIE1TVkMgd2FybnMgYWJvdXQgYWRkaW5n
IGNvbnN0IHRvIGEgZnVuY3Rpb24gdHlwZSwgc28gd2Ugd2FudCB0bworICAvLyBkaXNhYmxlIHRo
ZSB3YXJuaW5nLgorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MTgwKQorCisg
IC8vIE5vdGU6IHdlIGRlbGliZXJhdGVseSBkb24ndCBjYWxsIHRoaXMgUHJpbnRUbygpLCBhcyB0
aGF0IG5hbWUKKyAgLy8gY29uZmxpY3RzIHdpdGggOjp0ZXN0aW5nOjppbnRlcm5hbDo6UHJpbnRU
byBpbiB0aGUgYm9keSBvZiB0aGUKKyAgLy8gZnVuY3Rpb24uCisgIHN0YXRpYyB2b2lkIFByaW50
KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICAvLyBCeSBkZWZhdWx0
LCA6OnRlc3Rpbmc6OmludGVybmFsOjpQcmludFRvKCkgaXMgdXNlZCBmb3IgcHJpbnRpbmcKKyAg
ICAvLyB0aGUgdmFsdWUuCisgICAgLy8KKyAgICAvLyBUaGFua3MgdG8gS29lbmlnIGxvb2stdXAs
IGlmIFQgaXMgYSBjbGFzcyBhbmQgaGFzIGl0cyBvd24KKyAgICAvLyBQcmludFRvKCkgZnVuY3Rp
b24gZGVmaW5lZCBpbiBpdHMgbmFtZXNwYWNlLCB0aGF0IGZ1bmN0aW9uIHdpbGwKKyAgICAvLyBi
ZSB2aXNpYmxlIGhlcmUuICBTaW5jZSBpdCBpcyBtb3JlIHNwZWNpZmljIHRoYW4gdGhlIGdlbmVy
aWMgb25lcworICAgIC8vIGluIDo6dGVzdGluZzo6aW50ZXJuYWwsIGl0IHdpbGwgYmUgcGlja2Vk
IGJ5IHRoZSBjb21waWxlciBpbiB0aGUKKyAgICAvLyBmb2xsb3dpbmcgc3RhdGVtZW50IC0gZXhh
Y3RseSB3aGF0IHdlIHdhbnQuCisgICAgUHJpbnRUbyh2YWx1ZSwgb3MpOworICB9CisKKyAgR1RF
U1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCit9OworCisjaWYgR1RFU1RfSEFTX0FCU0wK
KworLy8gUHJpbnRlciBmb3IgYWJzbDo6b3B0aW9uYWwKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitjbGFzcyBVbml2ZXJzYWxQcmludGVyPDo6YWJzbDo6b3B0aW9uYWw8VD4+IHsKKyBwdWJsaWM6
CisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IDo6YWJzbDo6b3B0aW9uYWw8VD4mIHZhbHVlLCA6
OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICAqb3MgPDwgJygnOworICAgIGlmICghdmFsdWUpIHsK
KyAgICAgICpvcyA8PCAibnVsbG9wdCI7CisgICAgfSBlbHNlIHsKKyAgICAgIFVuaXZlcnNhbFBy
aW50KCp2YWx1ZSwgb3MpOworICAgIH0KKyAgICAqb3MgPDwgJyknOworICB9Cit9OworCisvLyBQ
cmludGVyIGZvciBhYnNsOjp2YXJpYW50CisKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBUPgorY2xh
c3MgVW5pdmVyc2FsUHJpbnRlcjw6OmFic2w6OnZhcmlhbnQ8VC4uLj4+IHsKKyBwdWJsaWM6Cisg
IHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IDo6YWJzbDo6dmFyaWFudDxULi4uPiYgdmFsdWUsIDo6
c3RkOjpvc3RyZWFtKiBvcykgeworICAgICpvcyA8PCAnKCc7CisgICAgYWJzbDo6dmlzaXQoVmlz
aXRvcntvc30sIHZhbHVlKTsKKyAgICAqb3MgPDwgJyknOworICB9CisKKyBwcml2YXRlOgorICBz
dHJ1Y3QgVmlzaXRvciB7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgICAgdm9pZCBvcGVy
YXRvcigpKGNvbnN0IFUmIHUpIGNvbnN0IHsKKyAgICAgICpvcyA8PCAiJyIgPDwgR2V0VHlwZU5h
bWU8VT4oKSA8PCAiJyB3aXRoIHZhbHVlICI7CisgICAgICBVbml2ZXJzYWxQcmludCh1LCBvcyk7
CisgICAgfQorICAgIDo6c3RkOjpvc3RyZWFtKiBvczsKKyAgfTsKK307CisKKyNlbmRpZiAgLy8g
R1RFU1RfSEFTX0FCU0wKKworLy8gVW5pdmVyc2FsUHJpbnRBcnJheShiZWdpbiwgbGVuLCBvcykg
cHJpbnRzIGFuIGFycmF5IG9mICdsZW4nCisvLyBlbGVtZW50cywgc3RhcnRpbmcgYXQgYWRkcmVz
cyAnYmVnaW4nLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFByaW50QXJy
YXkoY29uc3QgVCogYmVnaW4sIHNpemVfdCBsZW4sIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBp
ZiAobGVuID09IDApIHsKKyAgICAqb3MgPDwgInt9IjsKKyAgfSBlbHNlIHsKKyAgICAqb3MgPDwg
InsgIjsKKyAgICBjb25zdCBzaXplX3Qga1RocmVzaG9sZCA9IDE4OworICAgIGNvbnN0IHNpemVf
dCBrQ2h1bmtTaXplID0gODsKKyAgICAvLyBJZiB0aGUgYXJyYXkgaGFzIG1vcmUgdGhhbiBrVGhy
ZXNob2xkIGVsZW1lbnRzLCB3ZSdsbCBoYXZlIHRvCisgICAgLy8gb21pdCBzb21lIGRldGFpbHMg
YnkgcHJpbnRpbmcgb25seSB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0CisgICAgLy8ga0NodW5rU2l6
ZSBlbGVtZW50cy4KKyAgICAvLyBGSVhNRTogbGV0IHRoZSB1c2VyIGNvbnRyb2wgdGhlIHRocmVz
aG9sZCB1c2luZyBhIGZsYWcuCisgICAgaWYgKGxlbiA8PSBrVGhyZXNob2xkKSB7CisgICAgICBQ
cmludFJhd0FycmF5VG8oYmVnaW4sIGxlbiwgb3MpOworICAgIH0gZWxzZSB7CisgICAgICBQcmlu
dFJhd0FycmF5VG8oYmVnaW4sIGtDaHVua1NpemUsIG9zKTsKKyAgICAgICpvcyA8PCAiLCAuLi4s
ICI7CisgICAgICBQcmludFJhd0FycmF5VG8oYmVnaW4gKyBsZW4gLSBrQ2h1bmtTaXplLCBrQ2h1
bmtTaXplLCBvcyk7CisgICAgfQorICAgICpvcyA8PCAiIH0iOworICB9Cit9CisvLyBUaGlzIG92
ZXJsb2FkIHByaW50cyBhIChjb25zdCkgY2hhciBhcnJheSBjb21wYWN0bHkuCitHVEVTVF9BUElf
IHZvaWQgVW5pdmVyc2FsUHJpbnRBcnJheSgKKyAgICBjb25zdCBjaGFyKiBiZWdpbiwgc2l6ZV90
IGxlbiwgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKKworLy8gVGhpcyBvdmVybG9hZCBwcmludHMgYSAo
Y29uc3QpIHdjaGFyX3QgYXJyYXkgY29tcGFjdGx5LgorR1RFU1RfQVBJXyB2b2lkIFVuaXZlcnNh
bFByaW50QXJyYXkoCisgICAgY29uc3Qgd2NoYXJfdCogYmVnaW4sIHNpemVfdCBsZW4sIDo6c3Rk
Ojpvc3RyZWFtKiBvcyk7CisKKy8vIEltcGxlbWVudHMgcHJpbnRpbmcgYW4gYXJyYXkgdHlwZSBU
W05dLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgorY2xhc3MgVW5pdmVyc2FsUHJp
bnRlcjxUW05dPiB7CisgcHVibGljOgorICAvLyBQcmludHMgdGhlIGdpdmVuIGFycmF5LCBvbWl0
dGluZyBzb21lIGVsZW1lbnRzIHdoZW4gdGhlcmUgYXJlIHRvbworICAvLyBtYW55LgorICBzdGF0
aWMgdm9pZCBQcmludChjb25zdCBUICgmYSlbTl0sIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAg
IFVuaXZlcnNhbFByaW50QXJyYXkoYSwgTiwgb3MpOworICB9Cit9OworCisvLyBJbXBsZW1lbnRz
IHByaW50aW5nIGEgcmVmZXJlbmNlIHR5cGUgVCYuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIFVuaXZlcnNhbFByaW50ZXI8VCY+IHsKKyBwdWJsaWM6CisgIC8vIE1TVkMgd2FybnMgYWJv
dXQgYWRkaW5nIGNvbnN0IHRvIGEgZnVuY3Rpb24gdHlwZSwgc28gd2Ugd2FudCB0bworICAvLyBk
aXNhYmxlIHRoZSB3YXJuaW5nLgorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0
MTgwKQorCisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgICAvLyBQcmludHMgdGhlIGFkZHJlc3Mgb2YgdGhlIHZhbHVlLiAgV2UgdXNl
IHJlaW50ZXJwcmV0X2Nhc3QgaGVyZQorICAgIC8vIGFzIHN0YXRpY19jYXN0IGRvZXNuJ3QgY29t
cGlsZSB3aGVuIFQgaXMgYSBmdW5jdGlvbiB0eXBlLgorICAgICpvcyA8PCAiQCIgPDwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB2b2lkKj4oJnZhbHVlKSA8PCAiICI7CisKKyAgICAvLyBUaGVuIHBy
aW50cyB0aGUgdmFsdWUgaXRzZWxmLgorICAgIFVuaXZlcnNhbFByaW50KHZhbHVlLCBvcyk7Cisg
IH0KKworICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKK307CisKKy8vIFByaW50
cyBhIHZhbHVlIHRlcnNlbHk6IGZvciBhIHJlZmVyZW5jZSB0eXBlLCB0aGUgcmVmZXJlbmNlZCB2
YWx1ZQorLy8gKGJ1dCBub3QgdGhlIGFkZHJlc3MpIGlzIHByaW50ZWQ7IGZvciBhIChjb25zdCkg
Y2hhciBwb2ludGVyLCB0aGUKKy8vIE5VTC10ZXJtaW5hdGVkIHN0cmluZyAoYnV0IG5vdCB0aGUg
cG9pbnRlcikgaXMgcHJpbnRlZC4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbml2
ZXJzYWxUZXJzZVByaW50ZXIgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3Qg
VCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIFVuaXZlcnNhbFByaW50KHZhbHVl
LCBvcyk7CisgIH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFVuaXZlcnNhbFRl
cnNlUHJpbnRlcjxUJj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCYg
dmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIFVuaXZlcnNhbFByaW50KHZhbHVlLCBv
cyk7CisgIH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitjbGFzcyBVbml2
ZXJzYWxUZXJzZVByaW50ZXI8VFtOXT4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQo
Y29uc3QgVCAoJnZhbHVlKVtOXSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVW5pdmVyc2Fs
UHJpbnRlcjxUW05dPjo6UHJpbnQodmFsdWUsIG9zKTsKKyAgfQorfTsKK3RlbXBsYXRlIDw+Citj
bGFzcyBVbml2ZXJzYWxUZXJzZVByaW50ZXI8Y29uc3QgY2hhcio+IHsKKyBwdWJsaWM6CisgIHN0
YXRpYyB2b2lkIFByaW50KGNvbnN0IGNoYXIqIHN0ciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Cisg
ICAgaWYgKHN0ciA9PSBOVUxMKSB7CisgICAgICAqb3MgPDwgIk5VTEwiOworICAgIH0gZWxzZSB7
CisgICAgICBVbml2ZXJzYWxQcmludChzdGQ6OnN0cmluZyhzdHIpLCBvcyk7CisgICAgfQorICB9
Cit9OwordGVtcGxhdGUgPD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjaGFyKj4gewor
IHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY2hhciogc3RyLCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgICBVbml2ZXJzYWxUZXJzZVByaW50ZXI8Y29uc3QgY2hhcio+OjpQcmludChzdHIs
IG9zKTsKKyAgfQorfTsKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORwordGVtcGxhdGUgPD4K
K2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjb25zdCB3Y2hhcl90Kj4geworIHB1YmxpYzoK
KyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3Qgd2NoYXJfdCogc3RyLCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICpvcyA8PCAiTlVMTCI7CisgICAg
fSBlbHNlIHsKKyAgICAgIFVuaXZlcnNhbFByaW50KDo6c3RkOjp3c3RyaW5nKHN0ciksIG9zKTsK
KyAgICB9CisgIH0KK307CisjZW5kaWYKKwordGVtcGxhdGUgPD4KK2NsYXNzIFVuaXZlcnNhbFRl
cnNlUHJpbnRlcjx3Y2hhcl90Kj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQod2No
YXJfdCogc3RyLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBVbml2ZXJzYWxUZXJzZVByaW50
ZXI8Y29uc3Qgd2NoYXJfdCo+OjpQcmludChzdHIsIG9zKTsKKyAgfQorfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFRlcnNlUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6
c3RkOjpvc3RyZWFtKiBvcykgeworICBVbml2ZXJzYWxUZXJzZVByaW50ZXI8VD46OlByaW50KHZh
bHVlLCBvcyk7Cit9CisKKy8vIFByaW50cyBhIHZhbHVlIHVzaW5nIHRoZSB0eXBlIGluZmVycmVk
IGJ5IHRoZSBjb21waWxlci4gIFRoZQorLy8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIFVu
aXZlcnNhbFRlcnNlUHJpbnQoKSBpcyB0aGF0IGZvciBhCisvLyAoY29uc3QpIGNoYXIgcG9pbnRl
ciwgdGhpcyBwcmludHMgYm90aCB0aGUgcG9pbnRlciBhbmQgdGhlCisvLyBOVUwtdGVybWluYXRl
ZCBzdHJpbmcuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVW5pdmVyc2FsUHJpbnQoY29u
c3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAvLyBBIHdvcmthcm9uZCBmb3Ig
dGhlIGJ1ZyBpbiBWQysrIDcuMSB0aGF0IHByZXZlbnRzIHVzIGZyb20gaW5zdGFudGlhdGluZwor
ICAvLyBVbml2ZXJzYWxQcmludGVyIHdpdGggVCBkaXJlY3RseS4KKyAgdHlwZWRlZiBUIFQxOwor
ICBVbml2ZXJzYWxQcmludGVyPFQxPjo6UHJpbnQodmFsdWUsIG9zKTsKK30KKwordHlwZWRlZiA6
OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6c3RyaW5nPiBTdHJpbmdzOworCisvLyBUdXBsZVBvbGljeTxU
dXBsZVQ+IG11c3QgcHJvdmlkZToKKy8vIC0gdHVwbGVfc2l6ZQorLy8gICAgIHNpemUgb2YgdHVw
bGUgVHVwbGVULgorLy8gLSBnZXQ8c2l6ZV90IEk+KGNvbnN0IFR1cGxlVCYgdCkKKy8vICAgICBz
dGF0aWMgZnVuY3Rpb24gZXh0cmFjdGluZyBlbGVtZW50IEkgb2YgdHVwbGUgVHVwbGVULgorLy8g
LSB0dXBsZV9lbGVtZW50PHNpemVfdCBJPjo6dHlwZQorLy8gICAgIHR5cGUgb2YgZWxlbWVudCBJ
IG9mIHR1cGxlIFR1cGxlVC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZVQ+CitzdHJ1Y3QgVHVw
bGVQb2xpY3k7CisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VHVwbGVUPgorc3RydWN0IFR1cGxlUG9saWN5IHsKKyAgdHlwZWRlZiBUdXBsZVQgVHVwbGU7Cisg
IHN0YXRpYyBjb25zdCBzaXplX3QgdHVwbGVfc2l6ZSA9IDo6c3RkOjp0cjE6OnR1cGxlX3NpemU8
VHVwbGU+Ojp2YWx1ZTsKKworICB0ZW1wbGF0ZSA8c2l6ZV90IEk+CisgIHN0cnVjdCB0dXBsZV9l
bGVtZW50IDogOjpzdGQ6OnRyMTo6dHVwbGVfZWxlbWVudDxzdGF0aWNfY2FzdDxpbnQ+KEkpLCBU
dXBsZT4geworICB9OworCisgIHRlbXBsYXRlIDxzaXplX3QgST4KKyAgc3RhdGljIHR5cGVuYW1l
IEFkZFJlZmVyZW5jZTxjb25zdCB0eXBlbmFtZSA6OnN0ZDo6dHIxOjp0dXBsZV9lbGVtZW50PAor
ICAgICAgc3RhdGljX2Nhc3Q8aW50PihJKSwgVHVwbGU+Ojp0eXBlPjo6dHlwZQorICBnZXQoY29u
c3QgVHVwbGUmIHR1cGxlKSB7CisgICAgcmV0dXJuIDo6c3RkOjp0cjE6OmdldDxJPih0dXBsZSk7
CisgIH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGVUPgorY29uc3Qgc2l6ZV90IFR1cGxl
UG9saWN5PFR1cGxlVD46OnR1cGxlX3NpemU7CisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQ
TEUKKworI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHlw
ZXM+CitzdHJ1Y3QgVHVwbGVQb2xpY3k8IDo6c3RkOjp0dXBsZTxUeXBlcy4uLj4gPiB7CisgIHR5
cGVkZWYgOjpzdGQ6OnR1cGxlPFR5cGVzLi4uPiBUdXBsZTsKKyAgc3RhdGljIGNvbnN0IHNpemVf
dCB0dXBsZV9zaXplID0gOjpzdGQ6OnR1cGxlX3NpemU8VHVwbGU+Ojp2YWx1ZTsKKworICB0ZW1w
bGF0ZSA8c2l6ZV90IEk+CisgIHN0cnVjdCB0dXBsZV9lbGVtZW50IDogOjpzdGQ6OnR1cGxlX2Vs
ZW1lbnQ8SSwgVHVwbGU+IHt9OworCisgIHRlbXBsYXRlIDxzaXplX3QgST4KKyAgc3RhdGljIGNv
bnN0IHR5cGVuYW1lIDo6c3RkOjp0dXBsZV9lbGVtZW50PEksIFR1cGxlPjo6dHlwZSYgZ2V0KAor
ICAgICAgY29uc3QgVHVwbGUmIHR1cGxlKSB7CisgICAgcmV0dXJuIDo6c3RkOjpnZXQ8ST4odHVw
bGUpOworICB9Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFR5cGVzPgorY29uc3Qgc2l6ZV90
IFR1cGxlUG9saWN5PCA6OnN0ZDo6dHVwbGU8VHlwZXMuLi4+ID46OnR1cGxlX3NpemU7CisjZW5k
aWYgIC8vIEdURVNUX0hBU19TVERfVFVQTEVfCisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFIHx8
IEdURVNUX0hBU19TVERfVFVQTEVfCisvLyBUaGlzIGhlbHBlciB0ZW1wbGF0ZSBhbGxvd3MgUHJp
bnRUbygpIGZvciB0dXBsZXMgYW5kCisvLyBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNU
b1N0cmluZ3MoKSB0byBiZSBkZWZpbmVkIGJ5CisvLyBpbmR1Y3Rpb24gb24gdGhlIG51bWJlciBv
ZiB0dXBsZSBmaWVsZHMuICBUaGUgaWRlYSBpcyB0aGF0CisvLyBUdXBsZVByZWZpeFByaW50ZXI8
Tj46OlByaW50UHJlZml4VG8odCwgb3MpIHByaW50cyB0aGUgZmlyc3QgTgorLy8gZmllbGRzIGlu
IHR1cGxlIHQsIGFuZCBjYW4gYmUgZGVmaW5lZCBpbiB0ZXJtcyBvZgorLy8gVHVwbGVQcmVmaXhQ
cmludGVyPE4gLSAxPi4KKy8vCisvLyBUaGUgaW5kdWN0aXZlIGNhc2UuCit0ZW1wbGF0ZSA8c2l6
ZV90IE4+CitzdHJ1Y3QgVHVwbGVQcmVmaXhQcmludGVyIHsKKyAgLy8gUHJpbnRzIHRoZSBmaXJz
dCBOIGZpZWxkcyBvZiBhIHR1cGxlLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+CisgIHN0
YXRpYyB2b2lkIFByaW50UHJlZml4VG8oY29uc3QgVHVwbGUmIHQsIDo6c3RkOjpvc3RyZWFtKiBv
cykgeworICAgIFR1cGxlUHJlZml4UHJpbnRlcjxOIC0gMT46OlByaW50UHJlZml4VG8odCwgb3Mp
OworICAgIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUFVTSF8oKQorICAgIGlmIChOID4g
MSkgeworICAgIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUE9QXygpCisgICAgICAqb3Mg
PDwgIiwgIjsKKyAgICB9CisgICAgVW5pdmVyc2FsUHJpbnRlcjwKKyAgICAgICAgdHlwZW5hbWUg
VHVwbGVQb2xpY3k8VHVwbGU+Ojp0ZW1wbGF0ZSB0dXBsZV9lbGVtZW50PE4gLSAxPjo6dHlwZT4K
KyAgICAgICAgOjpQcmludChUdXBsZVBvbGljeTxUdXBsZT46OnRlbXBsYXRlIGdldDxOIC0gMT4o
dCksIG9zKTsKKyAgfQorCisgIC8vIFRlcnNlbHkgcHJpbnRzIHRoZSBmaXJzdCBOIGZpZWxkcyBv
ZiBhIHR1cGxlIHRvIGEgc3RyaW5nIHZlY3RvciwKKyAgLy8gb25lIGVsZW1lbnQgZm9yIGVhY2gg
ZmllbGQuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4KKyAgc3RhdGljIHZvaWQgVGVyc2VQ
cmludFByZWZpeFRvU3RyaW5ncyhjb25zdCBUdXBsZSYgdCwgU3RyaW5ncyogc3RyaW5ncykgewor
ICAgIFR1cGxlUHJlZml4UHJpbnRlcjxOIC0gMT46OlRlcnNlUHJpbnRQcmVmaXhUb1N0cmluZ3Mo
dCwgc3RyaW5ncyk7CisgICAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgICBVbml2ZXJzYWxU
ZXJzZVByaW50KFR1cGxlUG9saWN5PFR1cGxlPjo6dGVtcGxhdGUgZ2V0PE4gLSAxPih0KSwgJnNz
KTsKKyAgICBzdHJpbmdzLT5wdXNoX2JhY2soc3Muc3RyKCkpOworICB9Cit9OworCisvLyBCYXNl
IGNhc2UuCit0ZW1wbGF0ZSA8Pgorc3RydWN0IFR1cGxlUHJlZml4UHJpbnRlcjwwPiB7CisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4KKyAgc3RhdGljIHZvaWQgUHJpbnRQcmVmaXhUbyhjb25z
dCBUdXBsZSYsIDo6c3RkOjpvc3RyZWFtKikge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVw
bGU+CisgIHN0YXRpYyB2b2lkIFRlcnNlUHJpbnRQcmVmaXhUb1N0cmluZ3MoY29uc3QgVHVwbGUm
LCBTdHJpbmdzKikge30KK307CisKKy8vIEhlbHBlciBmdW5jdGlvbiBmb3IgcHJpbnRpbmcgYSB0
dXBsZS4KKy8vIFR1cGxlIG11c3QgYmUgZWl0aGVyIHN0ZDo6dHIxOjp0dXBsZSBvciBzdGQ6OnR1
cGxlIHR5cGUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+Cit2b2lkIFByaW50VHVwbGVUbyhj
b25zdCBUdXBsZSYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCAiKCI7CisgIFR1
cGxlUHJlZml4UHJpbnRlcjxUdXBsZVBvbGljeTxUdXBsZT46OnR1cGxlX3NpemU+OjpQcmludFBy
ZWZpeFRvKHQsIG9zKTsKKyAgKm9zIDw8ICIpIjsKK30KKworLy8gUHJpbnRzIHRoZSBmaWVsZHMg
b2YgYSB0dXBsZSB0ZXJzZWx5IHRvIGEgc3RyaW5nIHZlY3Rvciwgb25lCisvLyBlbGVtZW50IGZv
ciBlYWNoIGZpZWxkLiAgU2VlIHRoZSBjb21tZW50IGJlZm9yZQorLy8gVW5pdmVyc2FsVGVyc2VQ
cmludCgpIGZvciBob3cgd2UgZGVmaW5lICJ0ZXJzZWx5Ii4KK3RlbXBsYXRlIDx0eXBlbmFtZSBU
dXBsZT4KK1N0cmluZ3MgVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKGNv
bnN0IFR1cGxlJiB2YWx1ZSkgeworICBTdHJpbmdzIHJlc3VsdDsKKyAgVHVwbGVQcmVmaXhQcmlu
dGVyPFR1cGxlUG9saWN5PFR1cGxlPjo6dHVwbGVfc2l6ZT46OgorICAgICAgVGVyc2VQcmludFBy
ZWZpeFRvU3RyaW5ncyh2YWx1ZSwgJnJlc3VsdCk7CisgIHJldHVybiByZXN1bHQ7Cit9CisjZW5k
aWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8KKworfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCisKKyNpZiBHVEVTVF9IQVNfQUJTTAorbmFtZXNwYWNlIGlu
dGVybmFsMiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVHlwZVdpdGhvdXRGb3JtYXR0
ZXI8VCwga0NvbnZlcnRpYmxlVG9TdHJpbmdWaWV3Pjo6UHJpbnRWYWx1ZSgKKyAgICBjb25zdCBU
JiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIGludGVybmFsOjpQcmludFRvKGFic2w6
OnN0cmluZ192aWV3KHZhbHVlKSwgb3MpOworfQorfSAgLy8gbmFtZXNwYWNlIGludGVybmFsMgor
I2VuZGlmCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorOjpzdGQ6OnN0cmluZyBQcmludFRvU3Ry
aW5nKGNvbnN0IFQmIHZhbHVlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIGludGVy
bmFsOjpVbml2ZXJzYWxUZXJzZVByaW50ZXI8VD46OlByaW50KHZhbHVlLCAmc3MpOworICByZXR1
cm4gc3Muc3RyKCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKy8vIEluY2x1ZGUg
YW55IGN1c3RvbSBwcmludGVyIGFkZGVkIGJ5IHRoZSBsb2NhbCBpbnN0YWxsYXRpb24uCisvLyBX
ZSBtdXN0IGluY2x1ZGUgdGhpcyBoZWFkZXIgYXQgdGhlIGVuZCB0byBtYWtlIHN1cmUgaXQgY2Fu
IHVzZSB0aGUKKy8vIGRlY2xhcmF0aW9ucyBmcm9tIHRoaXMgZmlsZS4KKyNpbmNsdWRlICJndGVz
dC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcHJpbnRlcnMuaCIKKworI2VuZGlmICAvLyBHVEVTVF9J
TkNMVURFX0dURVNUX0dURVNUX1BSSU5URVJTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXNwaS5oIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1zcGkuaAppbmRleCBjNDFkYTQ4NDQ3NjAzZTk2NWZi
NzcyYWJjYTJmMTQ1ZWU4MmE2MDZmLi4xZTg5ODM5MzhlYTI3OTJjNTI2OTBlYWQyOWIwMGFiNThj
ZGFhZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2d0ZXN0LXNwaS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
Z3Rlc3Qtc3BpLmgKQEAgLTI2LDE2ICsyNiwyMCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbikKKwogLy8KIC8vIFV0aWxpdGllcyBmb3IgdGVzdGluZyBHb29nbGUgVGVzdCBp
dHNlbGYgYW5kIGNvZGUgdGhhdCB1c2VzIEdvb2dsZSBUZXN0CiAvLyAoZS5nLiBmcmFtZXdvcmtz
IGJ1aWx0IG9uIHRvcCBvZiBHb29nbGUgVGVzdCkuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDA0IERP
IE5PVCBERUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1NQSV9IXwog
I2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1NQSV9IXwogCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCitHVEVTVF9ESVNBQkxFX01T
Q19XQVJOSU5HU19QVVNIXyg0MjUxIFwKKy8qIGNsYXNzIEEgbmVlZHMgdG8gaGF2ZSBkbGwtaW50
ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50cyBvZiBjbGFzcyBCICovKQogCiBuYW1lc3BhY2Ug
dGVzdGluZyB7CiAKQEAgLTk3LDEzICsxMDEsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBTaW5nbGVG
YWlsdXJlQ2hlY2tlciB7CiAgcHVibGljOgogICAvLyBUaGUgY29uc3RydWN0b3IgcmVtZW1iZXJz
IHRoZSBhcmd1bWVudHMuCiAgIFNpbmdsZUZhaWx1cmVDaGVja2VyKGNvbnN0IFRlc3RQYXJ0UmVz
dWx0QXJyYXkqIHJlc3VsdHMsCi0gICAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0
OjpUeXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN1YnN0cik7
CisgICAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUsIGNvbnN0
IHN0ZDo6c3RyaW5nJiBzdWJzdHIpOwogICB+U2luZ2xlRmFpbHVyZUNoZWNrZXIoKTsKICBwcml2
YXRlOgogICBjb25zdCBUZXN0UGFydFJlc3VsdEFycmF5KiBjb25zdCByZXN1bHRzXzsKICAgY29u
c3QgVGVzdFBhcnRSZXN1bHQ6OlR5cGUgdHlwZV87Ci0gIGNvbnN0IFN0cmluZyBzdWJzdHJfOwor
ICBjb25zdCBzdGQ6OnN0cmluZyBzdWJzdHJfOwogCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8oU2luZ2xlRmFpbHVyZUNoZWNrZXIpOwogfTsKQEAgLTExMiw2ICsxMTUsOCBAQCBj
bGFzcyBHVEVTVF9BUElfIFNpbmdsZUZhaWx1cmVDaGVja2VyIHsKIAogfSAgLy8gbmFtZXNwYWNl
IHRlc3RpbmcKIAorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQor
CiAvLyBBIHNldCBvZiBtYWNyb3MgZm9yIHRlc3RpbmcgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBv
ciBjb2RlIHRoYXQncyBleHBlY3RlZAogLy8gdG8gZ2VuZXJhdGUgR29vZ2xlIFRlc3QgZmF0YWwg
ZmFpbHVyZXMuICBJdCB2ZXJpZmllcyB0aGF0IHRoZSBnaXZlbgogLy8gc3RhdGVtZW50IHdpbGwg
Y2F1c2UgZXhhY3RseSBvbmUgZmF0YWwgR29vZ2xlIFRlc3QgZmFpbHVyZSB3aXRoICdzdWJzdHIn
CkBAIC0yMjMsNyArMjI4LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBTaW5nbGVGYWlsdXJlQ2hlY2tl
ciB7CiAgICAgICAgIChzdWJzdHIpKTtcCiAgICAge1wKICAgICAgIDo6dGVzdGluZzo6U2NvcGVk
RmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIgZ3Rlc3RfcmVwb3J0ZXIoXAotICAgICAgICAgIDo6
dGVzdGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6OklOVEVSQ0VQVF9BTExf
VEhSRUFEUyxcCisgICAgICAgICAgOjp0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRS
ZXBvcnRlcjo6SU5URVJDRVBUX0FMTF9USFJFQURTLCBcCiAgICAgICAgICAgJmd0ZXN0X2ZhaWx1
cmVzKTtcCiAgICAgICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IHN0
YXRlbWVudDsgfVwKICAgICB9XApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBhcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgKaW5kZXggZjcxNDc1OTA2NzYzOWYxZWE0
ZWMwYTEyNjM0N2RlYzEyMDQ4MjQzOS4uMWM3Yjg5ZTA4Nzk2ZDk3MzBmOWY4ZWVhZTQwNjIyNzE3
N2RiYTUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9ndGVzdC10ZXN0LXBhcnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oCkBAIC0yNywxNiArMjcsMTggQEAKIC8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRob3I6IG1oZXVsZUBnb29nbGUuY29tIChN
YXJrdXMgSGV1bGUpCi0vLworLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQogCiAj
aWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfVEVTVF9QQVJUX0hfCiAjZGVmaW5lIEdU
RVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfVEVTVF9QQVJUX0hfCiAKICNpbmNsdWRlIDxpb3Nmd2Q+
CiAjaW5jbHVkZSA8dmVjdG9yPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVy
bmFsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+CisjaW5jbHVk
ZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRl
cm5hbC9ndGVzdC1zdHJpbmcuaCIKKworR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8o
NDI1MSBcCisvKiBjbGFzcyBBIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2Vk
IGJ5IGNsaWVudHMgb2YgY2xhc3MgQiAqLykKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC02
Miw3ICs2NCw3IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFBhcnRSZXN1bHQgewogICAgICAgICAg
ICAgICAgICBpbnQgYV9saW5lX251bWJlciwKICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
YV9tZXNzYWdlKQogICAgICAgOiB0eXBlXyhhX3R5cGUpLAotICAgICAgICBmaWxlX25hbWVfKGFf
ZmlsZV9uYW1lKSwKKyAgICAgICAgZmlsZV9uYW1lXyhhX2ZpbGVfbmFtZSA9PSBOVUxMID8gIiIg
OiBhX2ZpbGVfbmFtZSksCiAgICAgICAgIGxpbmVfbnVtYmVyXyhhX2xpbmVfbnVtYmVyKSwKICAg
ICAgICAgc3VtbWFyeV8oRXh0cmFjdFN1bW1hcnkoYV9tZXNzYWdlKSksCiAgICAgICAgIG1lc3Nh
Z2VfKGFfbWVzc2FnZSkgewpAQCAtNzMsNyArNzUsOSBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RQ
YXJ0UmVzdWx0IHsKIAogICAvLyBHZXRzIHRoZSBuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB3aGVy
ZSB0aGUgdGVzdCBwYXJ0IHRvb2sgcGxhY2UsIG9yCiAgIC8vIE5VTEwgaWYgaXQncyB1bmtub3du
LgotICBjb25zdCBjaGFyKiBmaWxlX25hbWUoKSBjb25zdCB7IHJldHVybiBmaWxlX25hbWVfLmNf
c3RyKCk7IH0KKyAgY29uc3QgY2hhciogZmlsZV9uYW1lKCkgY29uc3QgeworICAgIHJldHVybiBm
aWxlX25hbWVfLmVtcHR5KCkgPyBOVUxMIDogZmlsZV9uYW1lXy5jX3N0cigpOworICB9CiAKICAg
Ly8gR2V0cyB0aGUgbGluZSBpbiB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0
b29rIHBsYWNlLAogICAvLyBvciAtMSBpZiBpdCdzIHVua25vd24uCkBAIC05NiwyMSArMTAwLDIy
IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFBhcnRSZXN1bHQgewogCiAgIC8vIFJldHVybnMgdHJ1
ZSBpZmYgdGhlIHRlc3QgcGFydCBmYXRhbGx5IGZhaWxlZC4KICAgYm9vbCBmYXRhbGx5X2ZhaWxl
ZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGVfID09IGtGYXRhbEZhaWx1cmU7IH0KKwogIHByaXZhdGU6
CiAgIFR5cGUgdHlwZV87CiAKICAgLy8gR2V0cyB0aGUgc3VtbWFyeSBvZiB0aGUgZmFpbHVyZSBt
ZXNzYWdlIGJ5IG9taXR0aW5nIHRoZSBzdGFjawogICAvLyB0cmFjZSBpbiBpdC4KLSAgc3RhdGlj
IGludGVybmFsOjpTdHJpbmcgRXh0cmFjdFN1bW1hcnkoY29uc3QgY2hhciogbWVzc2FnZSk7Cisg
IHN0YXRpYyBzdGQ6OnN0cmluZyBFeHRyYWN0U3VtbWFyeShjb25zdCBjaGFyKiBtZXNzYWdlKTsK
IAogICAvLyBUaGUgbmFtZSBvZiB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0
b29rIHBsYWNlLCBvcgotICAvLyBOVUxMIGlmIHRoZSBzb3VyY2UgZmlsZSBpcyB1bmtub3duLgot
ICBpbnRlcm5hbDo6U3RyaW5nIGZpbGVfbmFtZV87CisgIC8vICIiIGlmIHRoZSBzb3VyY2UgZmls
ZSBpcyB1bmtub3duLgorICBzdGQ6OnN0cmluZyBmaWxlX25hbWVfOwogICAvLyBUaGUgbGluZSBp
biB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0b29rIHBsYWNlLCBvciAtMQog
ICAvLyBpZiB0aGUgbGluZSBudW1iZXIgaXMgdW5rbm93bi4KICAgaW50IGxpbmVfbnVtYmVyXzsK
LSAgaW50ZXJuYWw6OlN0cmluZyBzdW1tYXJ5XzsgIC8vIFRoZSB0ZXN0IGZhaWx1cmUgc3VtbWFy
eS4KLSAgaW50ZXJuYWw6OlN0cmluZyBtZXNzYWdlXzsgIC8vIFRoZSB0ZXN0IGZhaWx1cmUgbWVz
c2FnZS4KKyAgc3RkOjpzdHJpbmcgc3VtbWFyeV87ICAvLyBUaGUgdGVzdCBmYWlsdXJlIHN1bW1h
cnkuCisgIHN0ZDo6c3RyaW5nIG1lc3NhZ2VfOyAgLy8gVGhlIHRlc3QgZmFpbHVyZSBtZXNzYWdl
LgogfTsKIAogLy8gUHJpbnRzIGEgVGVzdFBhcnRSZXN1bHQgb2JqZWN0LgpAQCAtMTQwLDcgKzE0
NSw3IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFBhcnRSZXN1bHRBcnJheSB7CiB9OwogCiAvLyBU
aGlzIGludGVyZmFjZSBrbm93cyBob3cgdG8gcmVwb3J0IGEgdGVzdCBwYXJ0IHJlc3VsdC4KLWNs
YXNzIFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2UgeworY2xhc3MgR1RFU1RfQVBJXyBU
ZXN0UGFydFJlc3VsdFJlcG9ydGVySW50ZXJmYWNlIHsKICBwdWJsaWM6CiAgIHZpcnR1YWwgflRl
c3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2UoKSB7fQogCkBAIC0xNzMsNCArMTc4LDYgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBIYXNOZXdGYXRhbEZhaWx1cmVIZWxwZXIKIAogfSAgLy8gbmFtZXNw
YWNlIHRlc3RpbmcKIAorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1
MQorCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfVEVTVF9QQVJUX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXR5
cGVkLXRlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qt
dHlwZWQtdGVzdC5oCmluZGV4IDFlYzhlYjhkMzA5Mzk4ZDUyYmQ0OTYzODRjZjQ3NDgzYWUxMTUy
ZWUuLjc0YmNlNDZiZGM1MGY0YzhjZGUyYzZkNzI2NDkxMWZmNGQ5OWNmMTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQt
dGVzdC5oCkBAIC0yNiw4ICsyNiw5IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
IC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcg
V2FuKQorCisKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKIAogI2lmbmRlZiBH
VEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1RZUEVEX1RFU1RfSF8KICNkZWZpbmUgR1RFU1RfSU5D
TFVERV9HVEVTVF9HVEVTVF9UWVBFRF9URVNUX0hfCkBAIC04Miw2ICs4MywyNCBAQCBUWVBFRF9U
RVNUKEZvb1Rlc3QsIERvZXNCbGFoKSB7CiAKIFRZUEVEX1RFU1QoRm9vVGVzdCwgSGFzUHJvcGVy
dHlBKSB7IC4uLiB9CiAKKy8vIFRZUEVEX1RFU1RfQ0FTRSB0YWtlcyBhbiBvcHRpb25hbCB0aGly
ZCBhcmd1bWVudCB3aGljaCBhbGxvd3MgdG8gc3BlY2lmeSBhCisvLyBjbGFzcyB0aGF0IGdlbmVy
YXRlcyBjdXN0b20gdGVzdCBuYW1lIHN1ZmZpeGVzIGJhc2VkIG9uIHRoZSB0eXBlLiBUaGlzIHNo
b3VsZAorLy8gYmUgYSBjbGFzcyB3aGljaCBoYXMgYSBzdGF0aWMgdGVtcGxhdGUgZnVuY3Rpb24g
R2V0TmFtZShpbnQgaW5kZXgpIHJldHVybmluZworLy8gYSBzdHJpbmcgZm9yIGVhY2ggdHlwZS4g
VGhlIHByb3ZpZGVkIGludGVnZXIgaW5kZXggZXF1YWxzIHRoZSBpbmRleCBvZiB0aGUKKy8vIHR5
cGUgaW4gdGhlIHByb3ZpZGVkIHR5cGUgbGlzdC4gSW4gbWFueSBjYXNlcyB0aGUgaW5kZXggY2Fu
IGJlIGlnbm9yZWQuCisvLworLy8gRm9yIGV4YW1wbGU6CisvLyAgIGNsYXNzIE15VHlwZU5hbWVz
IHsKKy8vICAgIHB1YmxpYzoKKy8vICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy8vICAgICBz
dGF0aWMgc3RkOjpzdHJpbmcgR2V0TmFtZShpbnQpIHsKKy8vICAgICAgIGlmIChzdGQ6OmlzX3Nh
bWU8VCwgY2hhcj4oKSkgcmV0dXJuICJjaGFyIjsKKy8vICAgICAgIGlmIChzdGQ6OmlzX3NhbWU8
VCwgaW50PigpKSByZXR1cm4gImludCI7CisvLyAgICAgICBpZiAoc3RkOjppc19zYW1lPFQsIHVu
c2lnbmVkIGludD4oKSkgcmV0dXJuICJ1bnNpZ25lZEludCI7CisvLyAgICAgfQorLy8gICB9Owor
Ly8gICBUWVBFRF9URVNUX0NBU0UoRm9vVGVzdCwgTXlUeXBlcywgTXlUeXBlTmFtZXMpOworCiAj
ZW5kaWYgIC8vIDAKIAogLy8gVHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBhYnN0cmFjdCB0
ZXN0IHBhdHRlcm5zIHBhcmFtZXRlcml6ZWQKQEAgLTE0MywxMSArMTYyLDE2IEBAIElOU1RBTlRJ
QVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsKIC8vIElmIHRoZSB0
eXBlIGxpc3QgY29udGFpbnMgb25seSBvbmUgdHlwZSwgeW91IGNhbiB3cml0ZSB0aGF0IHR5cGUK
IC8vIGRpcmVjdGx5IHdpdGhvdXQgVHlwZXM8Li4uPjoKIC8vICAgSU5TVEFOVElBVEVfVFlQRURf
VEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIGludCk7CisvLworLy8gU2ltaWxhciB0byB0aGUgb3B0
aW9uYWwgYXJndW1lbnQgb2YgVFlQRURfVEVTVF9DQVNFIGFib3ZlLAorLy8gSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AgdGFrZXMgYW4gb3B0aW9uYWwgZm91cnRoIGFyZ3VtZW50IHdoaWNoIGFsbG93
cyB0bworLy8gZ2VuZXJhdGUgY3VzdG9tIG5hbWVzLgorLy8gICBJTlNUQU5USUFURV9UWVBFRF9U
RVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcywgTXlUeXBlTmFtZXMpOwogCiAjZW5kaWYg
IC8vIDAKIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLSNpbmNsdWRl
IDxndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRl
cm5hbC9ndGVzdC1wb3J0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11
dGlsLmgiCiAKIC8vIEltcGxlbWVudHMgdHlwZWQgdGVzdHMuCiAKQEAgLTE1NywzMyArMTgxLDQ4
IEBAIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsK
IC8vCiAvLyBFeHBhbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSB0eXBlZGVmIGZvciB0aGUgdHlwZSBw
YXJhbWV0ZXJzIG9mIHRoZQogLy8gZ2l2ZW4gdGVzdCBjYXNlLgotI2RlZmluZSBHVEVTVF9UWVBF
X1BBUkFNU18oVGVzdENhc2VOYW1lKSBndGVzdF90eXBlX3BhcmFtc18jI1Rlc3RDYXNlTmFtZSMj
XworIyBkZWZpbmUgR1RFU1RfVFlQRV9QQVJBTVNfKFRlc3RDYXNlTmFtZSkgZ3Rlc3RfdHlwZV9w
YXJhbXNfIyNUZXN0Q2FzZU5hbWUjI18KKworLy8gRXhwYW5kcyB0byB0aGUgbmFtZSBvZiB0aGUg
dHlwZWRlZiBmb3IgdGhlIE5hbWVHZW5lcmF0b3IsIHJlc3BvbnNpYmxlIGZvcgorLy8gY3JlYXRp
bmcgdGhlIHN1ZmZpeGVzIG9mIHRoZSBuYW1lLgorI2RlZmluZSBHVEVTVF9OQU1FX0dFTkVSQVRP
Ul8oVGVzdENhc2VOYW1lKSBcCisgIGd0ZXN0X3R5cGVfcGFyYW1zXyMjVGVzdENhc2VOYW1lIyNf
TmFtZUdlbmVyYXRvcgogCiAvLyBUaGUgJ1R5cGVzJyB0ZW1wbGF0ZSBhcmd1bWVudCBiZWxvdyBt
dXN0IGhhdmUgc3BhY2VzIGFyb3VuZCBpdAogLy8gc2luY2Ugc29tZSBjb21waWxlcnMgbWF5IGNo
b2tlIG9uICc+Picgd2hlbiBwYXNzaW5nIGEgdGVtcGxhdGUKIC8vIGluc3RhbmNlIChlLmcuIFR5
cGVzPGludD4pCi0jZGVmaW5lIFRZUEVEX1RFU1RfQ0FTRShDYXNlTmFtZSwgVHlwZXMpIFwKLSAg
dHlwZWRlZiA6OnRlc3Rpbmc6OmludGVybmFsOjpUeXBlTGlzdDwgVHlwZXMgPjo6dHlwZSBcCi0g
ICAgICBHVEVTVF9UWVBFX1BBUkFNU18oQ2FzZU5hbWUpCi0KLSNkZWZpbmUgVFlQRURfVEVTVChD
YXNlTmFtZSwgVGVzdE5hbWUpIFwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIGd0ZXN0X1R5cGVQYXJh
bV8+IFwKLSAgY2xhc3MgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyhDYXNlTmFtZSwgVGVzdE5hbWUp
IFwKLSAgICAgIDogcHVibGljIENhc2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IHsgXAotICAgcHJp
dmF0ZTogXAotICAgIHR5cGVkZWYgQ2FzZU5hbWU8Z3Rlc3RfVHlwZVBhcmFtXz4gVGVzdEZpeHR1
cmU7IFwKLSAgICB0eXBlZGVmIGd0ZXN0X1R5cGVQYXJhbV8gVHlwZVBhcmFtOyBcCi0gICAgdmly
dHVhbCB2b2lkIFRlc3RCb2R5KCk7IFwKLSAgfTsgXAotICBib29sIGd0ZXN0XyMjQ2FzZU5hbWUj
I18jI1Rlc3ROYW1lIyNfcmVnaXN0ZXJlZF8gPSBcCi0gICAgICA6OnRlc3Rpbmc6OmludGVybmFs
OjpUeXBlUGFyYW1ldGVyaXplZFRlc3Q8IFwKLSAgICAgICAgICBDYXNlTmFtZSwgXAotICAgICAg
ICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlRlbXBsYXRlU2VsPCBcCi0gICAgICAgICAgICAgIEdU
RVNUX1RFU1RfQ0xBU1NfTkFNRV8oQ2FzZU5hbWUsIFRlc3ROYW1lKT4sIFwKLSAgICAgICAgICBH
VEVTVF9UWVBFX1BBUkFNU18oQ2FzZU5hbWUpPjo6UmVnaXN0ZXIoXAotICAgICAgICAgICAgICAi
IiwgI0Nhc2VOYW1lLCAjVGVzdE5hbWUsIDApOyBcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBndGVz
dF9UeXBlUGFyYW1fPiBcCi0gIHZvaWQgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyhDYXNlTmFtZSwg
VGVzdE5hbWUpPGd0ZXN0X1R5cGVQYXJhbV8+OjpUZXN0Qm9keSgpCisjIGRlZmluZSBUWVBFRF9U
RVNUX0NBU0UoQ2FzZU5hbWUsIFR5cGVzLCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgIHR5cGVkZWYgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZUxpc3Q8IFR5cGVzID46OnR5
cGUgR1RFU1RfVFlQRV9QQVJBTVNfKCBcCisgICAgICBDYXNlTmFtZSk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHR5cGVkZWYg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6TmFtZUdlbmVyYXRvclNlbGVjdG9yPF9fVkFfQVJHU19fPjo6
dHlwZSAgICBcCisgICAgICBHVEVTVF9OQU1FX0dFTkVSQVRPUl8oQ2FzZU5hbWUpCisKKyMgZGVm
aW5lIFRZUEVEX1RFU1QoQ2FzZU5hbWUsIFRlc3ROYW1lKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIGd0ZXN0X1R5cGVQYXJhbV8+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgY2xhc3MgR1RFU1Rf
VEVTVF9DTEFTU19OQU1FXyhDYXNlTmFtZSwgVGVzdE5hbWUpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgIDogcHVibGljIENhc2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIHByaXZhdGU6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB0eXBlZGVmIENhc2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IFRlc3RGaXh0dXJlOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0eXBlZGVmIGd0ZXN0X1R5cGVQYXJhbV8gVHlw
ZVBhcmFtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2aXJ0
dWFsIHZvaWQgVGVzdEJvZHkoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgc3RhdGljIGJvb2wgZ3Rl
c3RfIyNDYXNlTmFtZSMjXyMjVGVzdE5hbWUjI19yZWdpc3RlcmVkXyAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gPSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6
OlR5cGVQYXJhbWV0ZXJpemVkVGVzdDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICBDYXNlTmFtZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpUZW1w
bGF0ZVNlbDxHVEVTVF9URVNUX0NMQVNTX05BTUVfKENhc2VOYW1lLCAgIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
c3ROYW1lKT4sIFwKKyAgICAgICAgICBHVEVTVF9UWVBFX1BBUkFNU18oICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgQ2FzZU5h
bWUpPjo6UmVnaXN0ZXIoIiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q29kZUxvY2F0aW9uKCAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXyksICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI0Nhc2VOYW1lLCAjVGVzdE5hbWUsIDAsICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6R2VuZXJhdGVOYW1lczwgICAgICAgIFwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX05BTUVfR0VORVJBVE9SXyhDYXNlTmFtZSks
ICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1RZ
UEVfUEFSQU1TXyhDYXNlTmFtZSk+KCkpOyAgICAgIFwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIGd0
ZXN0X1R5cGVQYXJhbV8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgdm9pZCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKENhc2VOYW1lLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
c3ROYW1lKTxndGVzdF9UeXBlUGFyYW1fPjo6VGVzdEJvZHkoKQogCiAjZW5kaWYgIC8vIEdURVNU
X0hBU19UWVBFRF9URVNUCiAKQEAgLTE5NiwzMSArMjM1LDMxIEBAIElOU1RBTlRJQVRFX1RZUEVE
X1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsKIC8vIEV4cGFuZHMgdG8gdGhlIG5h
bWVzcGFjZSBuYW1lIHRoYXQgdGhlIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyBmb3IKIC8vIHRo
ZSBnaXZlbiB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGFyZSBkZWZpbmVkIGluLiAgVGhl
IGV4YWN0CiAvLyBuYW1lIG9mIHRoZSBuYW1lc3BhY2UgaXMgc3ViamVjdCB0byBjaGFuZ2Ugd2l0
aG91dCBub3RpY2UuCi0jZGVmaW5lIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhUZXN0Q2FzZU5hbWUp
IFwKKyMgZGVmaW5lIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhUZXN0Q2FzZU5hbWUpIFwKICAgZ3Rl
c3RfY2FzZV8jI1Rlc3RDYXNlTmFtZSMjXwogCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAt
IERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgogLy8KIC8vIEV4cGFuZHMgdG8gdGhlIG5hbWUgb2Yg
dGhlIHZhcmlhYmxlIHVzZWQgdG8gcmVtZW1iZXIgdGhlIG5hbWVzIG9mCiAvLyB0aGUgZGVmaW5l
ZCB0ZXN0cyBpbiB0aGUgZ2l2ZW4gdGVzdCBjYXNlLgotI2RlZmluZSBHVEVTVF9UWVBFRF9URVNU
X0NBU0VfUF9TVEFURV8oVGVzdENhc2VOYW1lKSBcCisjIGRlZmluZSBHVEVTVF9UWVBFRF9URVNU
X0NBU0VfUF9TVEFURV8oVGVzdENhc2VOYW1lKSBcCiAgIGd0ZXN0X3R5cGVkX3Rlc3RfY2FzZV9w
X3N0YXRlXyMjVGVzdENhc2VOYW1lIyNfCiAKIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0g
RE8gTk9UIFVTRSBJTiBVU0VSIENPREUgRElSRUNUTFkuCiAvLwogLy8gRXhwYW5kcyB0byB0aGUg
bmFtZSBvZiB0aGUgdmFyaWFibGUgdXNlZCB0byByZW1lbWJlciB0aGUgbmFtZXMgb2YKIC8vIHRo
ZSByZWdpc3RlcmVkIHRlc3RzIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UuCi0jZGVmaW5lIEdURVNU
X1JFR0lTVEVSRURfVEVTVF9OQU1FU18oVGVzdENhc2VOYW1lKSBcCisjIGRlZmluZSBHVEVTVF9S
RUdJU1RFUkVEX1RFU1RfTkFNRVNfKFRlc3RDYXNlTmFtZSkgXAogICBndGVzdF9yZWdpc3RlcmVk
X3Rlc3RfbmFtZXNfIyNUZXN0Q2FzZU5hbWUjI18KIAogLy8gVGhlIHZhcmlhYmxlcyBkZWZpbmVk
IGluIHRoZSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBtYWNyb3MgYXJlCiAvLyBzdGF0aWMgYXMg
dHlwaWNhbGx5IHRoZXNlIG1hY3JvcyBhcmUgdXNlZCBpbiBhIC5oIGZpbGUgdGhhdCBjYW4gYmUK
IC8vICNpbmNsdWRlZCBpbiBtdWx0aXBsZSB0cmFuc2xhdGlvbiB1bml0cyBsaW5rZWQgdG9nZXRo
ZXIuCi0jZGVmaW5lIFRZUEVEX1RFU1RfQ0FTRV9QKENhc2VOYW1lKSBcCisjIGRlZmluZSBUWVBF
RF9URVNUX0NBU0VfUChDYXNlTmFtZSkgXAogICBzdGF0aWMgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
VHlwZWRUZXN0Q2FzZVBTdGF0ZSBcCiAgICAgICBHVEVTVF9UWVBFRF9URVNUX0NBU0VfUF9TVEFU
RV8oQ2FzZU5hbWUpCiAKLSNkZWZpbmUgVFlQRURfVEVTVF9QKENhc2VOYW1lLCBUZXN0TmFtZSkg
XAorIyBkZWZpbmUgVFlQRURfVEVTVF9QKENhc2VOYW1lLCBUZXN0TmFtZSkgXAogICBuYW1lc3Bh
Y2UgR1RFU1RfQ0FTRV9OQU1FU1BBQ0VfKENhc2VOYW1lKSB7IFwKICAgdGVtcGxhdGUgPHR5cGVu
YW1lIGd0ZXN0X1R5cGVQYXJhbV8+IFwKICAgY2xhc3MgVGVzdE5hbWUgOiBwdWJsaWMgQ2FzZU5h
bWU8Z3Rlc3RfVHlwZVBhcmFtXz4geyBcCkBAIC0yMjksMzAgKzI2OCwzOCBAQCBJTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcyk7CiAgICAgdHlwZWRlZiBn
dGVzdF9UeXBlUGFyYW1fIFR5cGVQYXJhbTsgXAogICAgIHZpcnR1YWwgdm9pZCBUZXN0Qm9keSgp
OyBcCiAgIH07IFwKLSAgc3RhdGljIGJvb2wgZ3Rlc3RfIyNUZXN0TmFtZSMjX2RlZmluZWRfID0g
XAorICBzdGF0aWMgYm9vbCBndGVzdF8jI1Rlc3ROYW1lIyNfZGVmaW5lZF8gR1RFU1RfQVRUUklC
VVRFX1VOVVNFRF8gPSBcCiAgICAgICBHVEVTVF9UWVBFRF9URVNUX0NBU0VfUF9TVEFURV8oQ2Fz
ZU5hbWUpLkFkZFRlc3ROYW1lKFwKICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sICNDYXNl
TmFtZSwgI1Rlc3ROYW1lKTsgXAogICB9IFwKICAgdGVtcGxhdGUgPHR5cGVuYW1lIGd0ZXN0X1R5
cGVQYXJhbV8+IFwKICAgdm9pZCBHVEVTVF9DQVNFX05BTUVTUEFDRV8oQ2FzZU5hbWUpOjpUZXN0
TmFtZTxndGVzdF9UeXBlUGFyYW1fPjo6VGVzdEJvZHkoKQogCi0jZGVmaW5lIFJFR0lTVEVSX1RZ
UEVEX1RFU1RfQ0FTRV9QKENhc2VOYW1lLCAuLi4pIFwKKyMgZGVmaW5lIFJFR0lTVEVSX1RZUEVE
X1RFU1RfQ0FTRV9QKENhc2VOYW1lLCAuLi4pIFwKICAgbmFtZXNwYWNlIEdURVNUX0NBU0VfTkFN
RVNQQUNFXyhDYXNlTmFtZSkgeyBcCiAgIHR5cGVkZWYgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVt
cGxhdGVzPF9fVkFfQVJHU19fPjo6dHlwZSBndGVzdF9BbGxUZXN0c187IFwKICAgfSBcCi0gIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBHVEVTVF9SRUdJU1RFUkVEX1RFU1RfTkFNRVNfKENhc2VO
YW1lKSA9IFwKLSAgICAgIEdURVNUX1RZUEVEX1RFU1RfQ0FTRV9QX1NUQVRFXyhDYXNlTmFtZSku
VmVyaWZ5UmVnaXN0ZXJlZFRlc3ROYW1lcyhcCi0gICAgICAgICAgX19GSUxFX18sIF9fTElORV9f
LCAjX19WQV9BUkdTX18pCisgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBHVEVTVF9SRUdJU1RF
UkVEX1RFU1RfTkFNRVNfKENhc2VOYW1lKSBcCisgICAgICBHVEVTVF9BVFRSSUJVVEVfVU5VU0VE
XyA9IFwKKyAgICAgICAgICBHVEVTVF9UWVBFRF9URVNUX0NBU0VfUF9TVEFURV8oQ2FzZU5hbWUp
LlZlcmlmeVJlZ2lzdGVyZWRUZXN0TmFtZXMoIFwKKyAgICAgICAgICAgICAgX19GSUxFX18sIF9f
TElORV9fLCAjX19WQV9BUkdTX18pCiAKIC8vIFRoZSAnVHlwZXMnIHRlbXBsYXRlIGFyZ3VtZW50
IGJlbG93IG11c3QgaGF2ZSBzcGFjZXMgYXJvdW5kIGl0CiAvLyBzaW5jZSBzb21lIGNvbXBpbGVy
cyBtYXkgY2hva2Ugb24gJz4+JyB3aGVuIHBhc3NpbmcgYSB0ZW1wbGF0ZQogLy8gaW5zdGFuY2Ug
KGUuZy4gVHlwZXM8aW50PikKLSNkZWZpbmUgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1Ao
UHJlZml4LCBDYXNlTmFtZSwgVHlwZXMpIFwKLSAgYm9vbCBndGVzdF8jI1ByZWZpeCMjXyMjQ2Fz
ZU5hbWUgPSBcCi0gICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpUeXBlUGFyYW1ldGVyaXplZFRl
c3RDYXNlPENhc2VOYW1lLCBcCi0gICAgICAgICAgR1RFU1RfQ0FTRV9OQU1FU1BBQ0VfKENhc2VO
YW1lKTo6Z3Rlc3RfQWxsVGVzdHNfLCBcCi0gICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
VHlwZUxpc3Q8IFR5cGVzID46OnR5cGU+OjpSZWdpc3RlcihcCi0gICAgICAgICAgICAgICNQcmVm
aXgsICNDYXNlTmFtZSwgR1RFU1RfUkVHSVNURVJFRF9URVNUX05BTUVTXyhDYXNlTmFtZSkpCisj
IGRlZmluZSBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChQcmVmaXgsIENhc2VOYW1lLCBU
eXBlcywgLi4uKSAgICAgIFwKKyAgc3RhdGljIGJvb2wgZ3Rlc3RfIyNQcmVmaXgjI18jI0Nhc2VO
YW1lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gICAgICAgXAorICAgICAgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6VHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTwgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgQ2FzZU5hbWUsIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhDYXNlTmFtZSk6Omd0
ZXN0X0FsbFRlc3RzXywgICAgIFwKKyAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpUeXBl
TGlzdDwgVHlwZXMgPjo6dHlwZT46OiAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIFJlZ2lz
dGVyKCNQcmVmaXgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9u
KF9fRklMRV9fLCBfX0xJTkVfXyksIFwKKyAgICAgICAgICAgICAgICAgICAmR1RFU1RfVFlQRURf
VEVTVF9DQVNFX1BfU1RBVEVfKENhc2VOYW1lKSwgI0Nhc2VOYW1lLCAgXAorICAgICAgICAgICAg
ICAgICAgIEdURVNUX1JFR0lTVEVSRURfVEVTVF9OQU1FU18oQ2FzZU5hbWUpLCAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6R2VuZXJhdGVO
YW1lczwgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6TmFtZUdlbmVyYXRvclNlbGVjdG9yPCAgICAgICAgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19WQV9BUkdTX18+Ojp0eXBlLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlR5
cGVMaXN0PCBUeXBlcyA+Ojp0eXBlPigpKQogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9U
RVNUX1AKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9ndGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC5o
CmluZGV4IDkyMWZhZDExZmNjOGYyNGMwZGQyMjM5NGE0ODY3YWIyNGI2ZWEwYzMuLjVkZjRiMGEz
YTcxMjc2OTA0NTVhOTQ1Y2IxNTI4YjZiZDc0NDliNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgKQEAgLTI2LDEwICsyNiw5IEBACiAvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKIC8vCi0vLyBBdXRob3I6
IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGhlIEdvb2dsZSBDKysgVGVz
dGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBh
bmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogLy8KIC8vIFRoaXMgaGVhZGVyIGZp
bGUgZGVmaW5lcyB0aGUgcHVibGljIEFQSSBmb3IgR29vZ2xlIFRlc3QuICBJdCBzaG91bGQgYmUK
IC8vIGluY2x1ZGVkIGJ5IGFueSB0ZXN0IHByb2dyYW0gdGhhdCB1c2VzIEdvb2dsZSBUZXN0LgpA
QCAtNDgsMzggKzQ3LDU0IEBACiAvLyByZWdpc3RyYXRpb24gZnJvbSBCYXJ0aGVsZW15IERhZ2Vu
YWlzJyAoYmFydGhlbGVteUBwcm9sb2dpcXVlLmNvbSkKIC8vIGVhc3lVbml0IGZyYW1ld29yay4K
IAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lO
Q0xVREVfR1RFU1RfR1RFU1RfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9I
XwogCiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPG9zdHJlYW0+CiAjaW5jbHVkZSA8dmVj
dG9yPgogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNs
dWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC1kZWF0aC10ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oPgotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdF9wcm9k
Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QtdHlwZWQtdGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVy
bmFsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgiCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LW1lc3Nh
Z2UuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgiCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QtcHJpbnRlcnMuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdF9wcm9kLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtdHlw
ZWQtdGVzdC5oIgorCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MjUxIFwKKy8q
IGNsYXNzIEEgbmVlZHMgdG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50
cyBvZiBjbGFzcyBCICovKQogCiAvLyBEZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLCBkaWZmZXJl
bnQgc3RyaW5nIGNsYXNzZXMgYXJlIGF2YWlsYWJsZS4KIC8vIE9uIExpbnV4LCBpbiBhZGRpdGlv
biB0byA6OnN0ZDo6c3RyaW5nLCBHb29nbGUgYWxzbyBtYWtlcyB1c2Ugb2YKIC8vIGNsYXNzIDo6
c3RyaW5nLCB3aGljaCBoYXMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIDo6c3RkOjpzdHJpbmcsIGJ1
dAogLy8gaGFzIGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uLgogLy8KLS8vIFRoZSB1c2VyIGNh
biBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgdG8gMSB0byBpbmRpY2F0ZSB0aGF0Cisv
LyBZb3UgY2FuIGRlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORyB0byAxIHRvIGluZGljYXRl
IHRoYXQKIC8vIDo6c3RyaW5nIGlzIGF2YWlsYWJsZSBBTkQgaXMgYSBkaXN0aW5jdCB0eXBlIHRv
IDo6c3RkOjpzdHJpbmcsIG9yCiAvLyBkZWZpbmUgaXQgdG8gMCB0byBpbmRpY2F0ZSBvdGhlcndp
c2UuCiAvLwotLy8gSWYgdGhlIHVzZXIncyA6OnN0ZDo6c3RyaW5nIGFuZCA6OnN0cmluZyBhcmUg
dGhlIHNhbWUgY2xhc3MgZHVlIHRvCi0vLyBhbGlhc2luZywgaGUgc2hvdWxkIGRlZmluZSBHVEVT
VF9IQVNfR0xPQkFMX1NUUklORyB0byAwLgorLy8gSWYgOjpzdGQ6OnN0cmluZyBhbmQgOjpzdHJp
bmcgYXJlIHRoZSBzYW1lIGNsYXNzIG9uIHlvdXIgcGxhdGZvcm0KKy8vIGR1ZSB0byBhbGlhc2lu
ZywgeW91IHNob3VsZCBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgdG8gMC4KIC8vCi0v
LyBJZiB0aGUgdXNlciBkb2Vzbid0IGRlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORywgaXQg
aXMgZGVmaW5lZAorLy8gSWYgeW91IGRvIG5vdCBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJ
TkcsIGl0IGlzIGRlZmluZWQKIC8vIGhldXJpc3RpY2FsbHkuCiAKIG5hbWVzcGFjZSB0ZXN0aW5n
IHsKIAorLy8gU2lsZW5jZSBDNDEwMCAodW5yZWZlcmVuY2VkIGZvcm1hbCBwYXJhbWV0ZXIpIGFu
ZCA0ODA1CisvLyB1bnNhZmUgbWl4IG9mIHR5cGUgJ2NvbnN0IGludCcgYW5kIHR5cGUgJ2NvbnN0
IGJvb2wnCisjaWZkZWYgX01TQ19WRVIKKyMgcHJhZ21hIHdhcm5pbmcocHVzaCkKKyMgcHJhZ21h
IHdhcm5pbmcoZGlzYWJsZTo0ODA1KQorIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDApCisj
ZW5kaWYKKworCiAvLyBEZWNsYXJlcyB0aGUgZmxhZ3MuCiAKIC8vIFRoaXMgZmxhZyB0ZW1wb3Jh
cnkgZW5hYmxlcyB0aGUgZGlzYWJsZWQgdGVzdHMuCkBAIC0xMDEsNiArMTE2LDEwIEBAIEdURVNU
X0RFQ0xBUkVfc3RyaW5nXyhjb2xvcik7CiAvLyB0aGUgdGVzdHMgdG8gcnVuLiBJZiB0aGUgZmls
dGVyIGlzIG5vdCBnaXZlbiBhbGwgdGVzdHMgYXJlIGV4ZWN1dGVkLgogR1RFU1RfREVDTEFSRV9z
dHJpbmdfKGZpbHRlcik7CiAKKy8vIFRoaXMgZmxhZyBjb250cm9scyB3aGV0aGVyIEdvb2dsZSBU
ZXN0IGluc3RhbGxzIGEgc2lnbmFsIGhhbmRsZXIgdGhhdCBkdW1wcworLy8gZGVidWdnaW5nIGlu
Zm9ybWF0aW9uIHdoZW4gZmF0YWwgc2lnbmFscyBhcmUgcmFpc2VkLgorR1RFU1RfREVDTEFSRV9i
b29sXyhpbnN0YWxsX2ZhaWx1cmVfc2lnbmFsX2hhbmRsZXIpOworCiAvLyBUaGlzIGZsYWcgY2F1
c2VzIHRoZSBHb29nbGUgVGVzdCB0byBsaXN0IHRlc3RzLiBOb25lIG9mIHRoZSB0ZXN0cyBsaXN0
ZWQKIC8vIGFyZSBhY3R1YWxseSBydW4gaWYgdGhlIGZsYWcgaXMgcHJvdmlkZWQuCiBHVEVTVF9E
RUNMQVJFX2Jvb2xfKGxpc3RfdGVzdHMpOwpAQCAtMTEzLDYgKzEzMiw5IEBAIEdURVNUX0RFQ0xB
UkVfc3RyaW5nXyhvdXRwdXQpOwogLy8gdGVzdC4KIEdURVNUX0RFQ0xBUkVfYm9vbF8ocHJpbnRf
dGltZSk7CiAKKy8vIFRoaXMgZmxhZ3MgY29udHJvbCB3aGV0aGVyIEdvb2dsZSBUZXN0IHByaW50
cyBVVEY4IGNoYXJhY3RlcnMgYXMgdGV4dC4KK0dURVNUX0RFQ0xBUkVfYm9vbF8ocHJpbnRfdXRm
OCk7CisKIC8vIFRoaXMgZmxhZyBzcGVjaWZpZXMgdGhlIHJhbmRvbSBudW1iZXIgc2VlZC4KIEdU
RVNUX0RFQ0xBUkVfaW50MzJfKHJhbmRvbV9zZWVkKTsKIApAQCAtMTMzLDkgKzE1NSwxOCBAQCBH
VEVTVF9ERUNMQVJFX2ludDMyXyhzdGFja190cmFjZV9kZXB0aCk7CiAKIC8vIFdoZW4gdGhpcyBm
bGFnIGlzIHNwZWNpZmllZCwgYSBmYWlsZWQgYXNzZXJ0aW9uIHdpbGwgdGhyb3cgYW4KIC8vIGV4
Y2VwdGlvbiBpZiBleGNlcHRpb25zIGFyZSBlbmFibGVkLCBvciBleGl0IHRoZSBwcm9ncmFtIHdp
dGggYQotLy8gbm9uLXplcm8gY29kZSBvdGhlcndpc2UuCisvLyBub24temVybyBjb2RlIG90aGVy
d2lzZS4gRm9yIHVzZSB3aXRoIGFuIGV4dGVybmFsIHRlc3QgZnJhbWV3b3JrLgogR1RFU1RfREVD
TEFSRV9ib29sXyh0aHJvd19vbl9mYWlsdXJlKTsKIAorLy8gV2hlbiB0aGlzIGZsYWcgaXMgc2V0
IHdpdGggYSAiaG9zdDpwb3J0IiBzdHJpbmcsIG9uIHN1cHBvcnRlZAorLy8gcGxhdGZvcm1zIHRl
c3QgcmVzdWx0cyBhcmUgc3RyZWFtZWQgdG8gdGhlIHNwZWNpZmllZCBwb3J0IG9uCisvLyB0aGUg
c3BlY2lmaWVkIGhvc3QgbWFjaGluZS4KK0dURVNUX0RFQ0xBUkVfc3RyaW5nXyhzdHJlYW1fcmVz
dWx0X3RvKTsKKworI2lmIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KK0dURVNUX0RFQ0xB
UkVfc3RyaW5nXyhmbGFnZmlsZSk7CisjZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVf
RkxBR18KKwogLy8gVGhlIHVwcGVyIGxpbWl0IGZvciB2YWxpZCBzdGFjayB0cmFjZSBkZXB0aHMu
CiBjb25zdCBpbnQga01heFN0YWNrVHJhY2VEZXB0aCA9IDEwMDsKIApAQCAtMTQ3LDMxICsxNzgs
MjcgQEAgY2xhc3MgRXhlY0RlYXRoVGVzdDsKIGNsYXNzIE5vRXhlY0RlYXRoVGVzdDsKIGNsYXNz
IEZpbmFsU3VjY2Vzc0NoZWNrZXI7CiBjbGFzcyBHVGVzdEZsYWdTYXZlcjsKLWNsYXNzIFRlc3RJ
bmZvSW1wbDsKK2NsYXNzIFN0cmVhbWluZ0xpc3RlbmVyVGVzdDsKIGNsYXNzIFRlc3RSZXN1bHRB
Y2Nlc3NvcjsKIGNsYXNzIFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOwogY2xhc3MgVGVzdEV2
ZW50UmVwZWF0ZXI7CitjbGFzcyBVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdEhlbHBlcjsKIGNs
YXNzIFdpbmRvd3NEZWF0aFRlc3Q7CitjbGFzcyBGdWNoc2lhRGVhdGhUZXN0OwogY2xhc3MgVW5p
dFRlc3RJbXBsKiBHZXRVbml0VGVzdEltcGwoKTsKIHZvaWQgUmVwb3J0RmFpbHVyZUluVW5rbm93
bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLWNsYXNzIFBy
ZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjsKLWNsYXNzIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRl
cjsKLQotLy8gQ29udmVydHMgYSBzdHJlYW1hYmxlIHZhbHVlIHRvIGEgU3RyaW5nLiAgQSBOVUxM
IHBvaW50ZXIgaXMKLS8vIGNvbnZlcnRlZCB0byAiKG51bGwpIi4gIFdoZW4gdGhlIGlucHV0IHZh
bHVlIGlzIGEgOjpzdHJpbmcsCi0vLyA6OnN0ZDo6c3RyaW5nLCA6OndzdHJpbmcsIG9yIDo6c3Rk
Ojp3c3RyaW5nIG9iamVjdCwgZWFjaCBOVUwKLS8vIGNoYXJhY3RlciBpbiBpdCBpcyByZXBsYWNl
ZCB3aXRoICJcXDAiLgotLy8gRGVjbGFyZWQgaW4gZ3Rlc3QtaW50ZXJuYWwuaCBidXQgZGVmaW5l
ZCBoZXJlLCBzbyB0aGF0IGl0IGhhcyBhY2Nlc3MKLS8vIHRvIHRoZSBkZWZpbml0aW9uIG9mIHRo
ZSBNZXNzYWdlIGNsYXNzLCByZXF1aXJlZCBieSB0aGUgQVJNCi0vLyBjb21waWxlci4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotU3RyaW5nIFN0cmVhbWFibGVUb1N0cmluZyhjb25zdCBUJiBzdHJl
YW1hYmxlKSB7Ci0gIHJldHVybiAoTWVzc2FnZSgpIDw8IHN0cmVhbWFibGUpLkdldFN0cmluZygp
OwotfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIG1lc3NhZ2UpOwogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAorLy8gVGhlIGZyaWVu
ZCByZWxhdGlvbnNoaXAgb2Ygc29tZSBvZiB0aGVzZSBjbGFzc2VzIGlzIGN5Y2xpYy4KKy8vIElm
IHdlIGRvbid0IGZvcndhcmQgZGVjbGFyZSB0aGVtIHRoZSBjb21waWxlciBtaWdodCBjb25mdXNl
IHRoZSBjbGFzc2VzCisvLyBpbiBmcmllbmRzaGlwIGNsYXVzZXMgd2l0aCBzYW1lIG5hbWVkIGNs
YXNzZXMgb24gdGhlIHNjb3BlLgorY2xhc3MgVGVzdDsKK2NsYXNzIFRlc3RDYXNlOworY2xhc3Mg
VGVzdEluZm87CitjbGFzcyBVbml0VGVzdDsKKwogLy8gQSBjbGFzcyBmb3IgaW5kaWNhdGluZyB3
aGV0aGVyIGFuIGFzc2VydGlvbiB3YXMgc3VjY2Vzc2Z1bC4gIFdoZW4KIC8vIHRoZSBhc3NlcnRp
b24gd2Fzbid0IHN1Y2Nlc3NmdWwsIHRoZSBBc3NlcnRpb25SZXN1bHQgb2JqZWN0CiAvLyByZW1l
bWJlcnMgYSBub24tZW1wdHkgbWVzc2FnZSB0aGF0IGRlc2NyaWJlcyBob3cgaXQgZmFpbGVkLgpA
QCAtMjU2LDggKzI4MywzNSBAQCBjbGFzcyBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCB7CiAg
IC8vIENvcHkgY29uc3RydWN0b3IuCiAgIC8vIFVzZWQgaW4gRVhQRUNUX1RSVUUvRkFMU0UoYXNz
ZXJ0aW9uX3Jlc3VsdCkuCiAgIEFzc2VydGlvblJlc3VsdChjb25zdCBBc3NlcnRpb25SZXN1bHQm
IG90aGVyKTsKKworI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSIDwgMTkxMAorICBH
VEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0ODAwIC8qIGZvcmNpbmcgdmFsdWUgdG8g
Ym9vbCAqLykKKyNlbmRpZgorCiAgIC8vIFVzZWQgaW4gdGhlIEVYUEVDVF9UUlVFL0ZBTFNFKGJv
b2xfZXhwcmVzc2lvbikuCi0gIGV4cGxpY2l0IEFzc2VydGlvblJlc3VsdChib29sIHN1Y2Nlc3Mp
IDogc3VjY2Vzc18oc3VjY2Vzcykge30KKyAgLy8KKyAgLy8gVCBtdXN0IGJlIGNvbnRleHR1YWxs
eSBjb252ZXJ0aWJsZSB0byBib29sLgorICAvLworICAvLyBUaGUgc2Vjb25kIHBhcmFtZXRlciBw
cmV2ZW50cyB0aGlzIG92ZXJsb2FkIGZyb20gYmVpbmcgY29uc2lkZXJlZCBpZgorICAvLyB0aGUg
YXJndW1lbnQgaXMgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0byBBc3NlcnRpb25SZXN1bHQuIElu
IHRoYXQgY2FzZQorICAvLyB3ZSB3YW50IEFzc2VydGlvblJlc3VsdCdzIGNvcHkgY29uc3RydWN0
b3IgdG8gYmUgdXNlZC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIGV4cGxpY2l0IEFzc2Vy
dGlvblJlc3VsdCgKKyAgICAgIGNvbnN0IFQmIHN1Y2Nlc3MsCisgICAgICB0eXBlbmFtZSBpbnRl
cm5hbDo6RW5hYmxlSWY8CisgICAgICAgICAgIWludGVybmFsOjpJbXBsaWNpdGx5Q29udmVydGli
bGU8VCwgQXNzZXJ0aW9uUmVzdWx0Pjo6dmFsdWU+Ojp0eXBlKgorICAgICAgICAgIC8qZW5hYmxl
ciovID0gTlVMTCkKKyAgICAgIDogc3VjY2Vzc18oc3VjY2Vzcykge30KKworI2lmIGRlZmluZWQo
X01TQ19WRVIpICYmIF9NU0NfVkVSIDwgMTkxMAorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5H
U19QT1BfKCkKKyNlbmRpZgorCisgIC8vIEFzc2lnbm1lbnQgb3BlcmF0b3IuCisgIEFzc2VydGlv
blJlc3VsdCYgb3BlcmF0b3I9KEFzc2VydGlvblJlc3VsdCBvdGhlcikgeworICAgIHN3YXAob3Ro
ZXIpOworICAgIHJldHVybiAqdGhpczsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhl
IGFzc2VydGlvbiBzdWNjZWVkZWQuCiAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBz
dWNjZXNzXzsgfSAgLy8gTk9MSU5UCkBAIC0yNzAsMjAgKzMyNCwzNiBAQCBjbGFzcyBHVEVTVF9B
UElfIEFzc2VydGlvblJlc3VsdCB7CiAgIC8vIGFzc2VydGlvbidzIGV4cGVjdGF0aW9uKS4gV2hl
biBub3RoaW5nIGhhcyBiZWVuIHN0cmVhbWVkIGludG8gdGhlCiAgIC8vIG9iamVjdCwgcmV0dXJu
cyBhbiBlbXB0eSBzdHJpbmcuCiAgIGNvbnN0IGNoYXIqIG1lc3NhZ2UoKSBjb25zdCB7Ci0gICAg
cmV0dXJuIG1lc3NhZ2VfLmdldCgpICE9IE5VTEwgJiYgbWVzc2FnZV8tPmNfc3RyKCkgIT0gTlVM
TCA/Ci0gICAgICAgICAgIG1lc3NhZ2VfLT5jX3N0cigpIDogIiI7CisgICAgcmV0dXJuIG1lc3Nh
Z2VfLmdldCgpICE9IE5VTEwgPyAgbWVzc2FnZV8tPmNfc3RyKCkgOiAiIjsKICAgfQotICAvLyBU
T0RPKHZsYWRsQGdvb2dsZS5jb20pOiBSZW1vdmUgdGhpcyBhZnRlciBtYWtpbmcgc3VyZSBubyBj
bGllbnRzIHVzZSBpdC4KKyAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGFmdGVyIG1ha2luZyBzdXJl
IG5vIGNsaWVudHMgdXNlIGl0LgogICAvLyBEZXByZWNhdGVkOyBwbGVhc2UgdXNlIG1lc3NhZ2Uo
KSBpbnN0ZWFkLgogICBjb25zdCBjaGFyKiBmYWlsdXJlX21lc3NhZ2UoKSBjb25zdCB7IHJldHVy
biBtZXNzYWdlKCk7IH0KIAogICAvLyBTdHJlYW1zIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSBp
bnRvIHRoaXMgb2JqZWN0LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gQXNzZXJ0aW9uUmVzdWx0
JiBvcGVyYXRvcjw8KGNvbnN0IFQmIHZhbHVlKTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IEFz
c2VydGlvblJlc3VsdCYgb3BlcmF0b3I8PChjb25zdCBUJiB2YWx1ZSkgeworICAgIEFwcGVuZE1l
c3NhZ2UoTWVzc2FnZSgpIDw8IHZhbHVlKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICAv
LyBBbGxvd3Mgc3RyZWFtaW5nIGJhc2ljIG91dHB1dCBtYW5pcHVsYXRvcnMgc3VjaCBhcyBlbmRs
IG9yIGZsdXNoIGludG8KKyAgLy8gdGhpcyBvYmplY3QuCisgIEFzc2VydGlvblJlc3VsdCYgb3Bl
cmF0b3I8PCgKKyAgICAgIDo6c3RkOjpvc3RyZWFtJiAoKmJhc2ljX21hbmlwdWxhdG9yKSg6OnN0
ZDo6b3N0cmVhbSYgc3RyZWFtKSkgeworICAgIEFwcGVuZE1lc3NhZ2UoTWVzc2FnZSgpIDw8IGJh
c2ljX21hbmlwdWxhdG9yKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KIAogIHByaXZhdGU6Ci0g
IC8vIE5vIGltcGxlbWVudGF0aW9uIC0gd2Ugd2FudCBBc3NlcnRpb25SZXN1bHQgdG8gYmUKLSAg
Ly8gY29weS1jb25zdHJ1Y3RpYmxlIGJ1dCBub3QgYXNzaWduYWJsZS4KLSAgdm9pZCBvcGVyYXRv
cj0oY29uc3QgQXNzZXJ0aW9uUmVzdWx0JiBvdGhlcik7CisgIC8vIEFwcGVuZHMgdGhlIGNvbnRl
bnRzIG9mIG1lc3NhZ2UgdG8gbWVzc2FnZV8uCisgIHZvaWQgQXBwZW5kTWVzc2FnZShjb25zdCBN
ZXNzYWdlJiBhX21lc3NhZ2UpIHsKKyAgICBpZiAobWVzc2FnZV8uZ2V0KCkgPT0gTlVMTCkKKyAg
ICAgIG1lc3NhZ2VfLnJlc2V0KG5ldyA6OnN0ZDo6c3RyaW5nKTsKKyAgICBtZXNzYWdlXy0+YXBw
ZW5kKGFfbWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0cigpKTsKKyAgfQorCisgIC8vIFN3YXAgdGhl
IGNvbnRlbnRzIG9mIHRoaXMgQXNzZXJ0aW9uUmVzdWx0IHdpdGggb3RoZXIuCisgIHZvaWQgc3dh
cChBc3NlcnRpb25SZXN1bHQmIG90aGVyKTsKIAogICAvLyBTdG9yZXMgcmVzdWx0IG9mIHRoZSBh
c3NlcnRpb24gcHJlZGljYXRlLgogICBib29sIHN1Y2Nlc3NfOwpAQCAtMjkxLDE5ICszNjEsOCBA
QCBjbGFzcyBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCB7CiAgIC8vIGNvbnN0cnVjdCBpcyBu
b3Qgc2F0aXNmaWVkIHdpdGggdGhlIHByZWRpY2F0ZSdzIG91dGNvbWUuCiAgIC8vIFJlZmVyZW5j
ZWQgdmlhIGEgcG9pbnRlciB0byBhdm9pZCB0YWtpbmcgdG9vIG11Y2ggc3RhY2sgZnJhbWUgc3Bh
Y2UKICAgLy8gd2l0aCB0ZXN0IGFzc2VydGlvbnMuCi0gIGludGVybmFsOjpzY29wZWRfcHRyPGlu
dGVybmFsOjpTdHJpbmc+IG1lc3NhZ2VfOwotfTsgIC8vIGNsYXNzIEFzc2VydGlvblJlc3VsdAot
Ci0vLyBTdHJlYW1zIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSBpbnRvIHRoaXMgb2JqZWN0Lgot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1Bc3NlcnRpb25SZXN1bHQmIEFzc2VydGlvblJlc3VsdDo6
b3BlcmF0b3I8PChjb25zdCBUJiB2YWx1ZSkgewotICBNZXNzYWdlIG1zZzsKLSAgaWYgKG1lc3Nh
Z2VfLmdldCgpICE9IE5VTEwpCi0gICAgbXNnIDw8ICptZXNzYWdlXzsKLSAgbXNnIDw8IHZhbHVl
OwotICBtZXNzYWdlXy5yZXNldChuZXcgaW50ZXJuYWw6OlN0cmluZyhtc2cuR2V0U3RyaW5nKCkp
KTsKLSAgcmV0dXJuICp0aGlzOwotfQorICBpbnRlcm5hbDo6c2NvcGVkX3B0cjwgOjpzdGQ6OnN0
cmluZz4gbWVzc2FnZV87Cit9OwogCiAvLyBNYWtlcyBhIHN1Y2Nlc3NmdWwgYXNzZXJ0aW9uIHJl
c3VsdC4KIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvblN1Y2Nlc3MoKTsKQEAg
LTMxNSw2ICszNzQsMTUgQEAgR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uRmFp
bHVyZSgpOwogLy8gRGVwcmVjYXRlZDsgdXNlIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBtc2cuCiBH
VEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKGNvbnN0IE1lc3NhZ2Um
IG1zZyk7CiAKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKy8vIEluY2x1ZGVzIHRoZSBhdXRv
LWdlbmVyYXRlZCBoZWFkZXIgdGhhdCBpbXBsZW1lbnRzIGEgZmFtaWx5IG9mIGdlbmVyaWMKKy8v
IHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9zLiBUaGlzIGluY2x1ZGUgY29tZXMgbGF0ZSBiZWNh
dXNlIGl0IHJlbGllcyBvbgorLy8gQVBJcyBkZWNsYXJlZCBhYm92ZS4KKyNpbmNsdWRlICJndGVz
dC9ndGVzdF9wcmVkX2ltcGwuaCIKKworbmFtZXNwYWNlIHRlc3RpbmcgeworCiAvLyBUaGUgYWJz
dHJhY3QgY2xhc3MgdGhhdCBhbGwgdGVzdHMgaW5oZXJpdCBmcm9tLgogLy8KIC8vIEluIEdvb2ds
ZSBUZXN0LCBhIHVuaXQgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIG9uZSBvciBtYW55IFRlc3RDYXNl
cywgYW5kCkBAIC0zMjUsMTIgKzM5MywxMiBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBB
c3NlcnRpb25GYWlsdXJlKGNvbnN0IE1lc3NhZ2UmIG1zZyk7CiAvLyB0aGlzIGZvciB5b3UuCiAv
LwogLy8gVGhlIG9ubHkgdGltZSB5b3UgZGVyaXZlIGZyb20gVGVzdCBpcyB3aGVuIGRlZmluaW5n
IGEgdGVzdCBmaXh0dXJlCi0vLyB0byBiZSB1c2VkIGEgVEVTVF9GLiAgRm9yIGV4YW1wbGU6Cisv
LyB0byBiZSB1c2VkIGluIGEgVEVTVF9GLiAgRm9yIGV4YW1wbGU6CiAvLwogLy8gICBjbGFzcyBG
b29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogLy8gICAgcHJvdGVjdGVkOgotLy8gICAg
IHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsgLi4uIH0KLS8vICAgICB2aXJ0dWFsIHZvaWQgVGVhckRv
d24oKSB7IC4uLiB9CisvLyAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIHsgLi4uIH0KKy8vICAg
ICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUgeyAuLi4gfQogLy8gICAgIC4uLgogLy8gICB9Owog
Ly8KQEAgLTM0MCw3ICs0MDgsNyBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBBc3NlcnRp
b25GYWlsdXJlKGNvbnN0IE1lc3NhZ2UmIG1zZyk7CiAvLyBUZXN0IGlzIG5vdCBjb3B5YWJsZS4K
IGNsYXNzIEdURVNUX0FQSV8gVGVzdCB7CiAgcHVibGljOgotICBmcmllbmQgY2xhc3MgaW50ZXJu
YWw6OlRlc3RJbmZvSW1wbDsKKyAgZnJpZW5kIGNsYXNzIFRlc3RJbmZvOwogCiAgIC8vIERlZmlu
ZXMgdHlwZXMgZm9yIHBvaW50ZXJzIHRvIGZ1bmN0aW9ucyB0aGF0IHNldCB1cCBhbmQgdGVhciBk
b3duCiAgIC8vIGEgdGVzdCBjYXNlLgpAQCAtMzc2LDIwICs0NDQsMjEgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBUZXN0IHsKICAgLy8gbm9uLWZhdGFsKSBmYWlsdXJlLgogICBzdGF0aWMgYm9vbCBIYXNG
YWlsdXJlKCkgeyByZXR1cm4gSGFzRmF0YWxGYWlsdXJlKCkgfHwgSGFzTm9uZmF0YWxGYWlsdXJl
KCk7IH0KIAotICAvLyBMb2dzIGEgcHJvcGVydHkgZm9yIHRoZSBjdXJyZW50IHRlc3QuICBPbmx5
IHRoZSBsYXN0IHZhbHVlIGZvciBhIGdpdmVuCi0gIC8vIGtleSBpcyByZW1lbWJlcmVkLgotICAv
LyBUaGVzZSBhcmUgcHVibGljIHN0YXRpYyBzbyB0aGV5IGNhbiBiZSBjYWxsZWQgZnJvbSB1dGls
aXR5IGZ1bmN0aW9ucwotICAvLyB0aGF0IGFyZSBub3QgbWVtYmVycyBvZiB0aGUgdGVzdCBmaXh0
dXJlLgotICAvLyBUaGUgYXJndW1lbnRzIGFyZSBjb25zdCBjaGFyKiBpbnN0ZWFkIHN0cmluZ3Ms
IGFzIEdvb2dsZSBUZXN0IGlzIHVzZWQKLSAgLy8gb24gcGxhdGZvcm1zIHdoZXJlIHN0cmluZyBk
b2Vzbid0IGNvbXBpbGUuCi0gIC8vCi0gIC8vIE5vdGUgdGhhdCBhIGRyaXZpbmcgY29uc2lkZXJh
dGlvbiBmb3IgdGhlc2UgUmVjb3JkUHJvcGVydHkgbWV0aG9kcwotICAvLyB3YXMgdG8gcHJvZHVj
ZSB4bWwgb3V0cHV0IHN1aXRlZCB0byB0aGUgR3JlZW5zcGFuIGNoYXJ0aW5nIHV0aWxpdHksCi0g
IC8vIHdoaWNoIGF0IHByZXNlbnQgd2lsbCBvbmx5IGNoYXJ0IHZhbHVlcyB0aGF0IGZpdCBpbiBh
IDMyLWJpdCBpbnQuIEl0Ci0gIC8vIGlzIHRoZSB1c2VyJ3MgcmVzcG9uc2liaWxpdHkgdG8gcmVz
dHJpY3QgdGhlaXIgdmFsdWVzIHRvIDMyLWJpdCBpbnRzCi0gIC8vIGlmIHRoZXkgaW50ZW5kIHRo
ZW0gdG8gYmUgdXNlZCB3aXRoIEdyZWVuc3Bhbi4KLSAgc3RhdGljIHZvaWQgUmVjb3JkUHJvcGVy
dHkoY29uc3QgY2hhcioga2V5LCBjb25zdCBjaGFyKiB2YWx1ZSk7Ci0gIHN0YXRpYyB2b2lkIFJl
Y29yZFByb3BlcnR5KGNvbnN0IGNoYXIqIGtleSwgaW50IHZhbHVlKTsKKyAgLy8gTG9ncyBhIHBy
b3BlcnR5IGZvciB0aGUgY3VycmVudCB0ZXN0LCB0ZXN0IGNhc2UsIG9yIGZvciB0aGUgZW50aXJl
CisgIC8vIGludm9jYXRpb24gb2YgdGhlIHRlc3QgcHJvZ3JhbSB3aGVuIHVzZWQgb3V0c2lkZSBv
ZiB0aGUgY29udGV4dCBvZiBhCisgIC8vIHRlc3QgY2FzZS4gIE9ubHkgdGhlIGxhc3QgdmFsdWUg
Zm9yIGEgZ2l2ZW4ga2V5IGlzIHJlbWVtYmVyZWQuICBUaGVzZQorICAvLyBhcmUgcHVibGljIHN0
YXRpYyBzbyB0aGV5IGNhbiBiZSBjYWxsZWQgZnJvbSB1dGlsaXR5IGZ1bmN0aW9ucyB0aGF0IGFy
ZQorICAvLyBub3QgbWVtYmVycyBvZiB0aGUgdGVzdCBmaXh0dXJlLiAgQ2FsbHMgdG8gUmVjb3Jk
UHJvcGVydHkgbWFkZSBkdXJpbmcKKyAgLy8gbGlmZXNwYW4gb2YgdGhlIHRlc3QgKGZyb20gdGhl
IG1vbWVudCBpdHMgY29uc3RydWN0b3Igc3RhcnRzIHRvIHRoZQorICAvLyBtb21lbnQgaXRzIGRl
c3RydWN0b3IgZmluaXNoZXMpIHdpbGwgYmUgb3V0cHV0IGluIFhNTCBhcyBhdHRyaWJ1dGVzIG9m
CisgIC8vIHRoZSA8dGVzdGNhc2U+IGVsZW1lbnQuICBQcm9wZXJ0aWVzIHJlY29yZGVkIGZyb20g
Zml4dHVyZSdzCisgIC8vIFNldFVwVGVzdENhc2Ugb3IgVGVhckRvd25UZXN0Q2FzZSBhcmUgbG9n
Z2VkIGFzIGF0dHJpYnV0ZXMgb2YgdGhlCisgIC8vIGNvcnJlc3BvbmRpbmcgPHRlc3RzdWl0ZT4g
ZWxlbWVudC4gIENhbGxzIHRvIFJlY29yZFByb3BlcnR5IG1hZGUgaW4gdGhlCisgIC8vIGdsb2Jh
bCBjb250ZXh0IChiZWZvcmUgb3IgYWZ0ZXIgaW52b2NhdGlvbiBvZiBSVU5fQUxMX1RFU1RTIGFu
ZCBmcm9tCisgIC8vIFNldFVwL1RlYXJEb3duIG1ldGhvZCBvZiBFbnZpcm9ubWVudCBvYmplY3Rz
IHJlZ2lzdGVyZWQgd2l0aCBHb29nbGUKKyAgLy8gVGVzdCkgd2lsbCBiZSBvdXRwdXQgYXMgYXR0
cmlidXRlcyBvZiB0aGUgPHRlc3RzdWl0ZXM+IGVsZW1lbnQuCisgIHN0YXRpYyB2b2lkIFJlY29y
ZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1
ZSk7CisgIHN0YXRpYyB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXks
IGludCB2YWx1ZSk7CiAKICBwcm90ZWN0ZWQ6CiAgIC8vIENyZWF0ZXMgYSBUZXN0IG9iamVjdC4K
QEAgLTQxNywyMCArNDg2LDIzIEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdCB7CiAgIC8vIFNldHMg
dXAsIGV4ZWN1dGVzLCBhbmQgdGVhcnMgZG93biB0aGUgdGVzdC4KICAgdm9pZCBSdW4oKTsKIAot
ICAvLyBVc2VzIGEgR1Rlc3RGbGFnU2F2ZXIgdG8gc2F2ZSBhbmQgcmVzdG9yZSBhbGwgR29vZ2xl
IFRlc3QgZmxhZ3MuCi0gIGNvbnN0IGludGVybmFsOjpHVGVzdEZsYWdTYXZlciogY29uc3QgZ3Rl
c3RfZmxhZ19zYXZlcl87CisgIC8vIERlbGV0ZXMgc2VsZi4gIFdlIGRlbGliZXJhdGVseSBwaWNr
IGFuIHVudXN1YWwgbmFtZSBmb3IgdGhpcworICAvLyBpbnRlcm5hbCBtZXRob2QgdG8gYXZvaWQg
Y2xhc2hpbmcgd2l0aCBuYW1lcyB1c2VkIGluIHVzZXIgVEVTVHMuCisgIHZvaWQgRGVsZXRlU2Vs
Zl8oKSB7IGRlbGV0ZSB0aGlzOyB9CisKKyAgY29uc3QgaW50ZXJuYWw6OnNjb3BlZF9wdHI8IEdU
RVNUX0ZMQUdfU0FWRVJfID4gZ3Rlc3RfZmxhZ19zYXZlcl87CiAKLSAgLy8gT2Z0ZW4gYSB1c2Vy
IG1pcy1zcGVsbHMgU2V0VXAoKSBhcyBTZXR1cCgpIGFuZCBzcGVuZHMgYSBsb25nIHRpbWUKKyAg
Ly8gT2Z0ZW4gYSB1c2VyIG1pc3NwZWxscyBTZXRVcCgpIGFzIFNldHVwKCkgYW5kIHNwZW5kcyBh
IGxvbmcgdGltZQogICAvLyB3b25kZXJpbmcgd2h5IGl0IGlzIG5ldmVyIGNhbGxlZCBieSBHb29n
bGUgVGVzdC4gIFRoZSBkZWNsYXJhdGlvbiBvZgogICAvLyB0aGUgZm9sbG93aW5nIG1ldGhvZCBp
cyBzb2xlbHkgZm9yIGNhdGNoaW5nIHN1Y2ggYW4gZXJyb3IgYXQKICAgLy8gY29tcGlsZSB0aW1l
OgogICAvLwogICAvLyAgIC0gVGhlIHJldHVybiB0eXBlIGlzIGRlbGliZXJhdGVseSBjaG9zZW4g
dG8gYmUgbm90IHZvaWQsIHNvIGl0Ci0gIC8vICAgd2lsbCBiZSBhIGNvbmZsaWN0IGlmIGEgdXNl
ciBkZWNsYXJlcyB2b2lkIFNldHVwKCkgaW4gaGlzIHRlc3QKLSAgLy8gICBmaXh0dXJlLgorICAv
LyAgIHdpbGwgYmUgYSBjb25mbGljdCBpZiB2b2lkIFNldHVwKCkgaXMgZGVjbGFyZWQgaW4gdGhl
IHVzZXIncworICAvLyAgIHRlc3QgZml4dHVyZS4KICAgLy8KICAgLy8gICAtIFRoaXMgbWV0aG9k
IGlzIHByaXZhdGUsIHNvIGl0IHdpbGwgYmUgYW5vdGhlciBjb21waWxlciBlcnJvcgotICAvLyAg
IGlmIGEgdXNlciBjYWxscyBpdCBmcm9tIGhpcyB0ZXN0IGZpeHR1cmUuCisgIC8vICAgaWYgdGhl
IG1ldGhvZCBpcyBjYWxsZWQgZnJvbSB0aGUgdXNlcidzIHRlc3QgZml4dHVyZS4KICAgLy8KICAg
Ly8gRE8gTk9UIE9WRVJSSURFIFRISVMgRlVOQ1RJT04uCiAgIC8vCkBAIC00NTQsNyArNTI2LDcg
QEAgY2xhc3MgVGVzdFByb3BlcnR5IHsKICAgLy8gQyd0b3IuICBUZXN0UHJvcGVydHkgZG9lcyBO
T1QgaGF2ZSBhIGRlZmF1bHQgY29uc3RydWN0b3IuCiAgIC8vIEFsd2F5cyB1c2UgdGhpcyBjb25z
dHJ1Y3RvciAod2l0aCBwYXJhbWV0ZXJzKSB0byBjcmVhdGUgYQogICAvLyBUZXN0UHJvcGVydHkg
b2JqZWN0LgotICBUZXN0UHJvcGVydHkoY29uc3QgY2hhciogYV9rZXksIGNvbnN0IGNoYXIqIGFf
dmFsdWUpIDoKKyAgVGVzdFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBhX2tleSwgY29uc3Qg
c3RkOjpzdHJpbmcmIGFfdmFsdWUpIDoKICAgICBrZXlfKGFfa2V5KSwgdmFsdWVfKGFfdmFsdWUp
IHsKICAgfQogCkBAIC00NjksMTUgKzU0MSwxNSBAQCBjbGFzcyBUZXN0UHJvcGVydHkgewogICB9
CiAKICAgLy8gU2V0cyBhIG5ldyB2YWx1ZSwgb3ZlcnJpZGluZyB0aGUgb25lIHN1cHBsaWVkIGlu
IHRoZSBjb25zdHJ1Y3Rvci4KLSAgdm9pZCBTZXRWYWx1ZShjb25zdCBjaGFyKiBuZXdfdmFsdWUp
IHsKKyAgdm9pZCBTZXRWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYgbmV3X3ZhbHVlKSB7CiAgICAg
dmFsdWVfID0gbmV3X3ZhbHVlOwogICB9CiAKICBwcml2YXRlOgogICAvLyBUaGUga2V5IHN1cHBs
aWVkIGJ5IHRoZSB1c2VyLgotICBpbnRlcm5hbDo6U3RyaW5nIGtleV87CisgIHN0ZDo6c3RyaW5n
IGtleV87CiAgIC8vIFRoZSB2YWx1ZSBzdXBwbGllZCBieSB0aGUgdXNlci4KLSAgaW50ZXJuYWw6
OlN0cmluZyB2YWx1ZV87CisgIHN0ZDo6c3RyaW5nIHZhbHVlXzsKIH07CiAKIC8vIFRoZSByZXN1
bHQgb2YgYSBzaW5nbGUgVGVzdC4gIFRoaXMgaW5jbHVkZXMgYSBsaXN0IG9mCkBAIC01MTYsOSAr
NTg4LDggQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0UmVzdWx0IHsKICAgLy8gUmV0dXJucyB0aGUg
ZWxhcHNlZCB0aW1lLCBpbiBtaWxsaXNlY29uZHMuCiAgIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3Rp
bWUoKSBjb25zdCB7IHJldHVybiBlbGFwc2VkX3RpbWVfOyB9CiAKLSAgLy8gUmV0dXJucyB0aGUg
aS10aCB0ZXN0IHBhcnQgcmVzdWx0IGFtb25nIGFsbCB0aGUgcmVzdWx0cy4gaSBjYW4gcmFuZ2UK
LSAgLy8gZnJvbSAwIHRvIHRlc3RfcHJvcGVydHlfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGlu
IHRoYXQgcmFuZ2UsIGFib3J0cwotICAvLyB0aGUgcHJvZ3JhbS4KKyAgLy8gUmV0dXJucyB0aGUg
aS10aCB0ZXN0IHBhcnQgcmVzdWx0IGFtb25nIGFsbCB0aGUgcmVzdWx0cy4gaSBjYW4gcmFuZ2Ug
ZnJvbSAwCisgIC8vIHRvIHRvdGFsX3BhcnRfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRo
YXQgcmFuZ2UsIGFib3J0cyB0aGUgcHJvZ3JhbS4KICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIEdl
dFRlc3RQYXJ0UmVzdWx0KGludCBpKSBjb25zdDsKIAogICAvLyBSZXR1cm5zIHRoZSBpLXRoIHRl
c3QgcHJvcGVydHkuIGkgY2FuIHJhbmdlIGZyb20gMCB0bwpAQCAtNTI4LDEzICs1OTksMTQgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBUZXN0UmVzdWx0IHsKIAogIHByaXZhdGU6CiAgIGZyaWVuZCBjbGFz
cyBUZXN0SW5mbzsKKyAgZnJpZW5kIGNsYXNzIFRlc3RDYXNlOwogICBmcmllbmQgY2xhc3MgVW5p
dFRlc3Q7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6RGVmYXVsdEdsb2JhbFRlc3RQYXJ0UmVz
dWx0UmVwb3J0ZXI7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6RXhlY0RlYXRoVGVzdDsKLSAg
ZnJpZW5kIGNsYXNzIGludGVybmFsOjpUZXN0SW5mb0ltcGw7CiAgIGZyaWVuZCBjbGFzcyBpbnRl
cm5hbDo6VGVzdFJlc3VsdEFjY2Vzc29yOwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlVuaXRU
ZXN0SW1wbDsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpXaW5kb3dzRGVhdGhUZXN0OworICBm
cmllbmQgY2xhc3MgaW50ZXJuYWw6OkZ1Y2hzaWFEZWF0aFRlc3Q7CiAKICAgLy8gR2V0cyB0aGUg
dmVjdG9yIG9mIFRlc3RQYXJ0UmVzdWx0cy4KICAgY29uc3Qgc3RkOjp2ZWN0b3I8VGVzdFBhcnRS
ZXN1bHQ+JiB0ZXN0X3BhcnRfcmVzdWx0cygpIGNvbnN0IHsKQEAgLTU1MywxMyArNjI1LDE2IEBA
IGNsYXNzIEdURVNUX0FQSV8gVGVzdFJlc3VsdCB7CiAgIC8vIGEgbm9uLWZhdGFsIGZhaWx1cmUg
aWYgaW52YWxpZCAoZS5nLiwgaWYgaXQgY29uZmxpY3RzIHdpdGggcmVzZXJ2ZWQKICAgLy8ga2V5
IG5hbWVzKS4gSWYgYSBwcm9wZXJ0eSBpcyBhbHJlYWR5IHJlY29yZGVkIGZvciB0aGUgc2FtZSBr
ZXksIHRoZQogICAvLyB2YWx1ZSB3aWxsIGJlIHVwZGF0ZWQsIHJhdGhlciB0aGFuIHN0b3Jpbmcg
bXVsdGlwbGUgdmFsdWVzIGZvciB0aGUgc2FtZQotICAvLyBrZXkuCi0gIHZvaWQgUmVjb3JkUHJv
cGVydHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5KTsKKyAgLy8ga2V5LiAgeG1s
X2VsZW1lbnQgc3BlY2lmaWVzIHRoZSBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvcGVydHkgaXMg
YmVpbmcKKyAgLy8gcmVjb3JkZWQgYW5kIGlzIHVzZWQgZm9yIHZhbGlkYXRpb24uCisgIHZvaWQg
UmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50LAorICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSk7CiAKICAgLy8g
QWRkcyBhIGZhaWx1cmUgaWYgdGhlIGtleSBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBvZiBHb29n
bGUgVGVzdAogICAvLyB0ZXN0Y2FzZSB0YWdzLiAgUmV0dXJucyB0cnVlIGlmIHRoZSBwcm9wZXJ0
eSBpcyB2YWxpZC4KLSAgLy8gVE9ETyhydXNzcik6IFZhbGlkYXRlIGF0dHJpYnV0ZSBuYW1lcyBh
cmUgbGVnYWwgYW5kIGh1bWFuIHJlYWRhYmxlLgotICBzdGF0aWMgYm9vbCBWYWxpZGF0ZVRlc3RQ
cm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpOworICAvLyBGSVhNRTog
VmFsaWRhdGUgYXR0cmlidXRlIG5hbWVzIGFyZSBsZWdhbCBhbmQgaHVtYW4gcmVhZGFibGUuCisg
IHN0YXRpYyBib29sIFZhbGlkYXRlVGVzdFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiB4bWxf
ZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFBy
b3BlcnR5JiB0ZXN0X3Byb3BlcnR5KTsKIAogICAvLyBBZGRzIGEgdGVzdCBwYXJ0IHJlc3VsdCB0
byB0aGUgbGlzdC4KICAgdm9pZCBBZGRUZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3Vs
dCYgdGVzdF9wYXJ0X3Jlc3VsdCk7CkBAIC02MTEsMjAgKzY4NiwzOSBAQCBjbGFzcyBHVEVTVF9B
UElfIFRlc3RJbmZvIHsKICAgflRlc3RJbmZvKCk7CiAKICAgLy8gUmV0dXJucyB0aGUgdGVzdCBj
YXNlIG5hbWUuCi0gIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lKCkgY29uc3Q7CisgIGNvbnN0
IGNoYXIqIHRlc3RfY2FzZV9uYW1lKCkgY29uc3QgeyByZXR1cm4gdGVzdF9jYXNlX25hbWVfLmNf
c3RyKCk7IH0KIAogICAvLyBSZXR1cm5zIHRoZSB0ZXN0IG5hbWUuCi0gIGNvbnN0IGNoYXIqIG5h
bWUoKSBjb25zdDsKKyAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG5hbWVfLmNf
c3RyKCk7IH0KKworICAvLyBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdHlwZSwg
b3IgTlVMTCBpZiB0aGlzIGlzIG5vdCBhIHR5cGVkCisgIC8vIG9yIGEgdHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3QuCisgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0oKSBjb25zdCB7CisgICAgaWYgKHR5
cGVfcGFyYW1fLmdldCgpICE9IE5VTEwpCisgICAgICByZXR1cm4gdHlwZV9wYXJhbV8tPmNfc3Ry
KCk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICAvLyBSZXR1cm5zIHRoZSB0ZXh0IHJlcHJl
c2VudGF0aW9uIG9mIHRoZSB2YWx1ZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYgdGhpcworICAvLyBp
cyBub3QgYSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisgIGNvbnN0IGNoYXIqIHZhbHVlX3Bh
cmFtKCkgY29uc3QgeworICAgIGlmICh2YWx1ZV9wYXJhbV8uZ2V0KCkgIT0gTlVMTCkKKyAgICAg
IHJldHVybiB2YWx1ZV9wYXJhbV8tPmNfc3RyKCk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KIAot
ICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNhc2UgY29tbWVudC4KLSAgY29uc3QgY2hhciogdGVzdF9j
YXNlX2NvbW1lbnQoKSBjb25zdDsKKyAgLy8gUmV0dXJucyB0aGUgZmlsZSBuYW1lIHdoZXJlIHRo
aXMgdGVzdCBpcyBkZWZpbmVkLgorICBjb25zdCBjaGFyKiBmaWxlKCkgY29uc3QgeyByZXR1cm4g
bG9jYXRpb25fLmZpbGUuY19zdHIoKTsgfQogCi0gIC8vIFJldHVybnMgdGhlIHRlc3QgY29tbWVu
dC4KLSAgY29uc3QgY2hhciogY29tbWVudCgpIGNvbnN0OworICAvLyBSZXR1cm5zIHRoZSBsaW5l
IHdoZXJlIHRoaXMgdGVzdCBpcyBkZWZpbmVkLgorICBpbnQgbGluZSgpIGNvbnN0IHsgcmV0dXJu
IGxvY2F0aW9uXy5saW5lOyB9CiAKLSAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBzaG91
bGQgcnVuLCB0aGF0IGlzIGlmIHRoZSB0ZXN0IGlzIG5vdCBkaXNhYmxlZAotICAvLyAob3IgaXQg
aXMgZGlzYWJsZWQgYnV0IHRoZSBhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnIGhhcyBiZWVu
IHNwZWNpZmllZCkKLSAgLy8gYW5kIGl0cyBmdWxsIG5hbWUgbWF0Y2hlcyB0aGUgdXNlci1zcGVj
aWZpZWQgZmlsdGVyLgorICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIHRlc3Qgc2hvdWxkIG5vdCBi
ZSBydW4gYmVjYXVzZSBpdCdzIGluIGFub3RoZXIgc2hhcmQuCisgIGJvb2wgaXNfaW5fYW5vdGhl
cl9zaGFyZCgpIGNvbnN0IHsgcmV0dXJuIGlzX2luX2Fub3RoZXJfc2hhcmRfOyB9CisKKyAgLy8g
UmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBzaG91bGQgcnVuLCB0aGF0IGlzIGlmIHRoZSB0ZXN0
IGlzIG5vdAorICAvLyBkaXNhYmxlZCAob3IgaXQgaXMgZGlzYWJsZWQgYnV0IHRoZSBhbHNvX3J1
bl9kaXNhYmxlZF90ZXN0cyBmbGFnIGhhcworICAvLyBiZWVuIHNwZWNpZmllZCkgYW5kIGl0cyBm
dWxsIG5hbWUgbWF0Y2hlcyB0aGUgdXNlci1zcGVjaWZpZWQgZmlsdGVyLgogICAvLwogICAvLyBH
b29nbGUgVGVzdCBhbGxvd3MgdGhlIHVzZXIgdG8gZmlsdGVyIHRoZSB0ZXN0cyBieSB0aGVpciBm
dWxsIG5hbWVzLgogICAvLyBUaGUgZnVsbCBuYW1lIG9mIGEgdGVzdCBCYXIgaW4gdGVzdCBjYXNl
IEZvbyBpcyBkZWZpbmVkIGFzCkBAIC02MzgsMTAgKzczMiwxNyBAQCBjbGFzcyBHVEVTVF9BUElf
IFRlc3RJbmZvIHsKICAgLy8KICAgLy8gRm9yIGV4YW1wbGUsICpBKjpGb28uKiBpcyBhIGZpbHRl
ciB0aGF0IG1hdGNoZXMgYW55IHN0cmluZyB0aGF0CiAgIC8vIGNvbnRhaW5zIHRoZSBjaGFyYWN0
ZXIgJ0EnIG9yIHN0YXJ0cyB3aXRoICJGb28uIi4KLSAgYm9vbCBzaG91bGRfcnVuKCkgY29uc3Q7
CisgIGJvb2wgc2hvdWxkX3J1bigpIGNvbnN0IHsgcmV0dXJuIHNob3VsZF9ydW5fOyB9CisKKyAg
Ly8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIHRlc3Qgd2lsbCBhcHBlYXIgaW4gdGhlIFhNTCByZXBv
cnQuCisgIGJvb2wgaXNfcmVwb3J0YWJsZSgpIGNvbnN0IHsKKyAgICAvLyBUaGUgWE1MIHJlcG9y
dCBpbmNsdWRlcyB0ZXN0cyBtYXRjaGluZyB0aGUgZmlsdGVyLCBleGNsdWRpbmcgdGhvc2UKKyAg
ICAvLyBydW4gaW4gb3RoZXIgc2hhcmRzLgorICAgIHJldHVybiBtYXRjaGVzX2ZpbHRlcl8gJiYg
IWlzX2luX2Fub3RoZXJfc2hhcmRfOworICB9CiAKICAgLy8gUmV0dXJucyB0aGUgcmVzdWx0IG9m
IHRoZSB0ZXN0LgotICBjb25zdCBUZXN0UmVzdWx0KiByZXN1bHQoKSBjb25zdDsKKyAgY29uc3Qg
VGVzdFJlc3VsdCogcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gJnJlc3VsdF87IH0KIAogIHByaXZh
dGU6CiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKQEAgLTY0OSwzNiArNzUwLDY1IEBAIGNsYXNz
IEdURVNUX0FQSV8gVGVzdEluZm8gewogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAog
ICBmcmllbmQgY2xhc3MgVGVzdDsKICAgZnJpZW5kIGNsYXNzIFRlc3RDYXNlOwotICBmcmllbmQg
Y2xhc3MgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbDsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpV
bml0VGVzdEltcGw7CisgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6U3RyZWFtaW5nTGlzdGVuZXJU
ZXN0OwogICBmcmllbmQgVGVzdEluZm8qIGludGVybmFsOjpNYWtlQW5kUmVnaXN0ZXJUZXN0SW5m
bygKLSAgICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLCBjb25zdCBjaGFyKiBuYW1lLAot
ICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX2NvbW1lbnQsIGNvbnN0IGNoYXIqIGNvbW1lbnQs
CisgICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgIGNvbnN0IGNoYXIqIG5h
bWUsCisgICAgICBjb25zdCBjaGFyKiB0eXBlX3BhcmFtLAorICAgICAgY29uc3QgY2hhciogdmFs
dWVfcGFyYW0sCisgICAgICBpbnRlcm5hbDo6Q29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24sCiAg
ICAgICBpbnRlcm5hbDo6VHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCiAgICAgICBUZXN0OjpTZXRV
cFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCiAgICAgICBUZXN0OjpUZWFyRG93blRlc3RDYXNlRnVu
YyB0ZWFyX2Rvd25fdGMsCiAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5
KTsKIAotICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IG1hdGNoZXMgdGhlIHVzZXItc3Bl
Y2lmaWVkIGZpbHRlci4KLSAgYm9vbCBtYXRjaGVzX2ZpbHRlcigpIGNvbnN0OworICAvLyBDb25z
dHJ1Y3RzIGEgVGVzdEluZm8gb2JqZWN0LiBUaGUgbmV3bHkgY29uc3RydWN0ZWQgaW5zdGFuY2Ug
YXNzdW1lcworICAvLyBvd25lcnNoaXAgb2YgdGhlIGZhY3Rvcnkgb2JqZWN0LgorICBUZXN0SW5m
byhjb25zdCBzdGQ6OnN0cmluZyYgdGVzdF9jYXNlX25hbWUsCisgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBuYW1lLAorICAgICAgICAgICBjb25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sICAg
Ly8gTlVMTCBpZiBub3QgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdAorICAgICAgICAgICBjb25z
dCBjaGFyKiBhX3ZhbHVlX3BhcmFtLCAgLy8gTlVMTCBpZiBub3QgYSB2YWx1ZS1wYXJhbWV0ZXJp
emVkIHRlc3QKKyAgICAgICAgICAgaW50ZXJuYWw6OkNvZGVMb2NhdGlvbiBhX2NvZGVfbG9jYXRp
b24sCisgICAgICAgICAgIGludGVybmFsOjpUeXBlSWQgZml4dHVyZV9jbGFzc19pZCwKKyAgICAg
ICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSk7CiAKICAgLy8gSW5jcmVt
ZW50cyB0aGUgbnVtYmVyIG9mIGRlYXRoIHRlc3RzIGVuY291bnRlcmVkIGluIHRoaXMgdGVzdCBz
bwogICAvLyBmYXIuCi0gIGludCBpbmNyZW1lbnRfZGVhdGhfdGVzdF9jb3VudCgpOworICBpbnQg
aW5jcmVtZW50X2RlYXRoX3Rlc3RfY291bnQoKSB7CisgICAgcmV0dXJuIHJlc3VsdF8uaW5jcmVt
ZW50X2RlYXRoX3Rlc3RfY291bnQoKTsKKyAgfQogCi0gIC8vIEFjY2Vzc29ycyBmb3IgdGhlIGlt
cGxlbWVudGF0aW9uIG9iamVjdC4KLSAgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbCogaW1wbCgpIHsg
cmV0dXJuIGltcGxfOyB9Ci0gIGNvbnN0IGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGltcGwoKSBj
b25zdCB7IHJldHVybiBpbXBsXzsgfQorICAvLyBDcmVhdGVzIHRoZSB0ZXN0IG9iamVjdCwgcnVu
cyBpdCwgcmVjb3JkcyBpdHMgcmVzdWx0LCBhbmQgdGhlbgorICAvLyBkZWxldGVzIGl0LgorICB2
b2lkIFJ1bigpOwogCi0gIC8vIENvbnN0cnVjdHMgYSBUZXN0SW5mbyBvYmplY3QuIFRoZSBuZXds
eSBjb25zdHJ1Y3RlZCBpbnN0YW5jZSBhc3N1bWVzCi0gIC8vIG93bmVyc2hpcCBvZiB0aGUgZmFj
dG9yeSBvYmplY3QuCi0gIFRlc3RJbmZvKGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLCBjb25z
dCBjaGFyKiBuYW1lLAotICAgICAgICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfY29tbWVudCwg
Y29uc3QgY2hhciogY29tbWVudCwKLSAgICAgICAgICAgaW50ZXJuYWw6OlR5cGVJZCBmaXh0dXJl
X2NsYXNzX2lkLAotICAgICAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5
KTsKKyAgc3RhdGljIHZvaWQgQ2xlYXJUZXN0UmVzdWx0KFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsK
KyAgICB0ZXN0X2luZm8tPnJlc3VsdF8uQ2xlYXIoKTsKKyAgfQogCi0gIC8vIEFuIG9wYXF1ZSBp
bXBsZW1lbnRhdGlvbiBvYmplY3QuCi0gIGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGltcGxfOwor
ICAvLyBUaGVzZSBmaWVsZHMgYXJlIGltbXV0YWJsZSBwcm9wZXJ0aWVzIG9mIHRoZSB0ZXN0Lgor
ICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0X2Nhc2VfbmFtZV87ICAgICAvLyBUZXN0IGNhc2UgbmFt
ZQorICBjb25zdCBzdGQ6OnN0cmluZyBuYW1lXzsgICAgICAgICAgICAgICAvLyBUZXN0IG5hbWUK
KyAgLy8gTmFtZSBvZiB0aGUgcGFyYW1ldGVyIHR5cGUsIG9yIE5VTEwgaWYgdGhpcyBpcyBub3Qg
YSB0eXBlZCBvciBhCisgIC8vIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LgorICBjb25zdCBpbnRl
cm5hbDo6c2NvcGVkX3B0cjxjb25zdCA6OnN0ZDo6c3RyaW5nPiB0eXBlX3BhcmFtXzsKKyAgLy8g
VGV4dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFsdWUgcGFyYW1ldGVyLCBvciBOVUxMIGlmIHRo
aXMgaXMgbm90IGEKKyAgLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0LgorICBjb25zdCBpbnRl
cm5hbDo6c2NvcGVkX3B0cjxjb25zdCA6OnN0ZDo6c3RyaW5nPiB2YWx1ZV9wYXJhbV87CisgIGlu
dGVybmFsOjpDb2RlTG9jYXRpb24gbG9jYXRpb25fOworICBjb25zdCBpbnRlcm5hbDo6VHlwZUlk
IGZpeHR1cmVfY2xhc3NfaWRfOyAgIC8vIElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKKyAg
Ym9vbCBzaG91bGRfcnVuXzsgICAgICAgICAgICAgICAgIC8vIFRydWUgaWZmIHRoaXMgdGVzdCBz
aG91bGQgcnVuCisgIGJvb2wgaXNfZGlzYWJsZWRfOyAgICAgICAgICAgICAgICAvLyBUcnVlIGlm
ZiB0aGlzIHRlc3QgaXMgZGlzYWJsZWQKKyAgYm9vbCBtYXRjaGVzX2ZpbHRlcl87ICAgICAgICAg
ICAgIC8vIFRydWUgaWYgdGhpcyB0ZXN0IG1hdGNoZXMgdGhlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB1c2VyLXNwZWNpZmllZCBmaWx0ZXIuCisgIGJvb2wgaXNfaW5f
YW5vdGhlcl9zaGFyZF87ICAgICAgICAvLyBXaWxsIGJlIHJ1biBpbiBhbm90aGVyIHNoYXJkLgor
ICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBjb25zdCBmYWN0b3J5XzsgIC8vIFRoZSBmYWN0
b3J5IHRoYXQgY3JlYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHRoZSB0ZXN0IG9iamVjdAorCisgIC8vIFRoaXMgZmllbGQgaXMgbXV0YWJsZSBh
bmQgbmVlZHMgdG8gYmUgcmVzZXQgYmVmb3JlIHJ1bm5pbmcgdGhlCisgIC8vIHRlc3QgZm9yIHRo
ZSBzZWNvbmQgdGltZS4KKyAgVGVzdFJlc3VsdCByZXN1bHRfOwogCiAgIEdURVNUX0RJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTl8oVGVzdEluZm8pOwogfTsKQEAgLTY5Niw5ICs4MjYsMTEgQEAgY2xh
c3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIEFyZ3VtZW50czoKICAgLy8KICAgLy8gICBu
YW1lOiAgICAgICAgIG5hbWUgb2YgdGhlIHRlc3QgY2FzZQorICAvLyAgIGFfdHlwZV9wYXJhbTog
dGhlIG5hbWUgb2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorICAvLyAg
ICAgICAgICAgICAgICAgdGhpcyBpcyBub3QgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KICAg
Ly8gICBzZXRfdXBfdGM6ICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0
aGUgdGVzdCBjYXNlCiAgIC8vICAgdGVhcl9kb3duX3RjOiBwb2ludGVyIHRvIHRoZSBmdW5jdGlv
biB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQotICBUZXN0Q2FzZShjb25zdCBjaGFyKiBu
YW1lLCBjb25zdCBjaGFyKiBjb21tZW50LAorICBUZXN0Q2FzZShjb25zdCBjaGFyKiBuYW1lLCBj
b25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sCiAgICAgICAgICAgIFRlc3Q6OlNldFVwVGVzdENhc2VG
dW5jIHNldF91cF90YywKICAgICAgICAgICAgVGVzdDo6VGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVh
cl9kb3duX3RjKTsKIApAQCAtNzA4LDggKzg0MCwxMyBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RD
YXNlIHsKICAgLy8gR2V0cyB0aGUgbmFtZSBvZiB0aGUgVGVzdENhc2UuCiAgIGNvbnN0IGNoYXIq
IG5hbWUoKSBjb25zdCB7IHJldHVybiBuYW1lXy5jX3N0cigpOyB9CiAKLSAgLy8gUmV0dXJucyB0
aGUgdGVzdCBjYXNlIGNvbW1lbnQuCi0gIGNvbnN0IGNoYXIqIGNvbW1lbnQoKSBjb25zdCB7IHJl
dHVybiBjb21tZW50Xy5jX3N0cigpOyB9CisgIC8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHBh
cmFtZXRlciB0eXBlLCBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEKKyAgLy8gdHlwZS1wYXJhbWV0
ZXJpemVkIHRlc3QgY2FzZS4KKyAgY29uc3QgY2hhciogdHlwZV9wYXJhbSgpIGNvbnN0IHsKKyAg
ICBpZiAodHlwZV9wYXJhbV8uZ2V0KCkgIT0gTlVMTCkKKyAgICAgIHJldHVybiB0eXBlX3BhcmFt
Xy0+Y19zdHIoKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiBhbnkgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZSBzaG91bGQgcnVuLgogICBib29sIHNob3VsZF9y
dW4oKSBjb25zdCB7IHJldHVybiBzaG91bGRfcnVuXzsgfQpAQCAtNzIwLDkgKzg1NywxNSBAQCBj
bGFzcyBHVEVTVF9BUElfIFRlc3RDYXNlIHsKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxl
ZCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KICAgaW50IGZhaWxlZF90ZXN0X2NvdW50KCkgY29u
c3Q7CiAKKyAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHRoYXQgd2lsbCBi
ZSByZXBvcnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFibGVfZGlzYWJsZWRf
dGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0
ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KICAgaW50IGRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25z
dDsKIAorICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0aGUg
WE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8v
IEdldCB0aGUgbnVtYmVyIG9mIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlIHRoYXQgc2hvdWxkIHJ1
bi4KICAgaW50IHRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3Q7CiAKQEAgLTc0Miw2ICs4ODUsMTAg
QEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIHRvdGFsX3Rlc3RfY291bnQoKSAt
IDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVMTC4KICAgY29uc3QgVGVz
dEluZm8qIEdldFRlc3RJbmZvKGludCBpKSBjb25zdDsKIAorICAvLyBSZXR1cm5zIHRoZSBUZXN0
UmVzdWx0IHRoYXQgaG9sZHMgdGVzdCBwcm9wZXJ0aWVzIHJlY29yZGVkIGR1cmluZworICAvLyBl
eGVjdXRpb24gb2YgU2V0VXBUZXN0Q2FzZSBhbmQgVGVhckRvd25UZXN0Q2FzZS4KKyAgY29uc3Qg
VGVzdFJlc3VsdCYgYWRfaG9jX3Rlc3RfcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gYWRfaG9jX3Rl
c3RfcmVzdWx0XzsgfQorCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNsYXNzIFRlc3Q7CiAgIGZyaWVu
ZCBjbGFzcyBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsOwpAQCAtNzc2LDE3ICs5MjMsNDQgQEAgY2xh
c3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIFJ1bnMgZXZlcnkgdGVzdCBpbiB0aGlzIFRl
c3RDYXNlLgogICB2b2lkIFJ1bigpOwogCisgIC8vIFJ1bnMgU2V0VXBUZXN0Q2FzZSgpIGZvciB0
aGlzIFRlc3RDYXNlLiAgVGhpcyB3cmFwcGVyIGlzIG5lZWRlZAorICAvLyBmb3IgY2F0Y2hpbmcg
ZXhjZXB0aW9ucyB0aHJvd24gZnJvbSBTZXRVcFRlc3RDYXNlKCkuCisgIHZvaWQgUnVuU2V0VXBU
ZXN0Q2FzZSgpIHsgKCpzZXRfdXBfdGNfKSgpOyB9CisKKyAgLy8gUnVucyBUZWFyRG93blRlc3RD
YXNlKCkgZm9yIHRoaXMgVGVzdENhc2UuICBUaGlzIHdyYXBwZXIgaXMKKyAgLy8gbmVlZGVkIGZv
ciBjYXRjaGluZyBleGNlcHRpb25zIHRocm93biBmcm9tIFRlYXJEb3duVGVzdENhc2UoKS4KKyAg
dm9pZCBSdW5UZWFyRG93blRlc3RDYXNlKCkgeyAoKnRlYXJfZG93bl90Y18pKCk7IH0KKwogICAv
LyBSZXR1cm5zIHRydWUgaWZmIHRlc3QgcGFzc2VkLgotICBzdGF0aWMgYm9vbCBUZXN0UGFzc2Vk
KGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKTsKKyAgc3RhdGljIGJvb2wgVGVzdFBhc3NlZChj
b25zdCBUZXN0SW5mbyogdGVzdF9pbmZvKSB7CisgICAgcmV0dXJuIHRlc3RfaW5mby0+c2hvdWxk
X3J1bigpICYmIHRlc3RfaW5mby0+cmVzdWx0KCktPlBhc3NlZCgpOworICB9CiAKICAgLy8gUmV0
dXJucyB0cnVlIGlmZiB0ZXN0IGZhaWxlZC4KLSAgc3RhdGljIGJvb2wgVGVzdEZhaWxlZChjb25z
dCBUZXN0SW5mbyAqIHRlc3RfaW5mbyk7CisgIHN0YXRpYyBib29sIFRlc3RGYWlsZWQoY29uc3Qg
VGVzdEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPnNob3VsZF9ydW4o
KSAmJiB0ZXN0X2luZm8tPnJlc3VsdCgpLT5GYWlsZWQoKTsKKyAgfQorCisgIC8vIFJldHVybnMg
dHJ1ZSBpZmYgdGhlIHRlc3QgaXMgZGlzYWJsZWQgYW5kIHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhl
IFhNTAorICAvLyByZXBvcnQuCisgIHN0YXRpYyBib29sIFRlc3RSZXBvcnRhYmxlRGlzYWJsZWQo
Y29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPmlzX3Jl
cG9ydGFibGUoKSAmJiB0ZXN0X2luZm8tPmlzX2Rpc2FibGVkXzsKKyAgfQogCiAgIC8vIFJldHVy
bnMgdHJ1ZSBpZmYgdGVzdCBpcyBkaXNhYmxlZC4KLSAgc3RhdGljIGJvb2wgVGVzdERpc2FibGVk
KGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKTsKKyAgc3RhdGljIGJvb2wgVGVzdERpc2FibGVk
KGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKKyAgICByZXR1cm4gdGVzdF9pbmZvLT5pc19k
aXNhYmxlZF87CisgIH0KKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgdGVzdCB3aWxsIGFw
cGVhciBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgc3RhdGljIGJvb2wgVGVzdFJlcG9ydGFibGUoY29u
c3QgVGVzdEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPmlzX3JlcG9y
dGFibGUoKTsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdGVzdCBzaG91
bGQgcnVuLgotICBzdGF0aWMgYm9vbCBTaG91bGRSdW5UZXN0KGNvbnN0IFRlc3RJbmZvICp0ZXN0
X2luZm8pOworICBzdGF0aWMgYm9vbCBTaG91bGRSdW5UZXN0KGNvbnN0IFRlc3RJbmZvKiB0ZXN0
X2luZm8pIHsKKyAgICByZXR1cm4gdGVzdF9pbmZvLT5zaG91bGRfcnVuKCk7CisgIH0KIAogICAv
LyBTaHVmZmxlcyB0aGUgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCiAgIHZvaWQgU2h1ZmZsZVRl
c3RzKGludGVybmFsOjpSYW5kb20qIHJhbmRvbSk7CkBAIC03OTUsOSArOTY5LDEwIEBAIGNsYXNz
IEdURVNUX0FQSV8gVGVzdENhc2UgewogICB2b2lkIFVuc2h1ZmZsZVRlc3RzKCk7CiAKICAgLy8g
TmFtZSBvZiB0aGUgdGVzdCBjYXNlLgotICBpbnRlcm5hbDo6U3RyaW5nIG5hbWVfOwotICAvLyBD
b21tZW50IG9uIHRoZSB0ZXN0IGNhc2UuCi0gIGludGVybmFsOjpTdHJpbmcgY29tbWVudF87Cisg
IHN0ZDo6c3RyaW5nIG5hbWVfOworICAvLyBOYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdHlwZSwgb3Ig
TlVMTCBpZiB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEKKyAgLy8gdHlwZS1wYXJhbWV0ZXJpemVk
IHRlc3QuCisgIGNvbnN0IGludGVybmFsOjpzY29wZWRfcHRyPGNvbnN0IDo6c3RkOjpzdHJpbmc+
IHR5cGVfcGFyYW1fOwogICAvLyBUaGUgdmVjdG9yIG9mIFRlc3RJbmZvcyBpbiB0aGVpciBvcmln
aW5hbCBvcmRlci4gIEl0IG93bnMgdGhlCiAgIC8vIGVsZW1lbnRzIGluIHRoZSB2ZWN0b3IuCiAg
IHN0ZDo6dmVjdG9yPFRlc3RJbmZvKj4gdGVzdF9pbmZvX2xpc3RfOwpAQCAtODEzLDEzICs5ODgs
MTYgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIGJvb2wgc2hvdWxkX3J1bl87CiAg
IC8vIEVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5NaWxsaXMgZWxhcHNl
ZF90aW1lXzsKKyAgLy8gSG9sZHMgdGVzdCBwcm9wZXJ0aWVzIHJlY29yZGVkIGR1cmluZyBleGVj
dXRpb24gb2YgU2V0VXBUZXN0Q2FzZSBhbmQKKyAgLy8gVGVhckRvd25UZXN0Q2FzZS4KKyAgVGVz
dFJlc3VsdCBhZF9ob2NfdGVzdF9yZXN1bHRfOwogCiAgIC8vIFdlIGRpc2FsbG93IGNvcHlpbmcg
VGVzdENhc2VzLgogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRlc3RDYXNlKTsK
IH07CiAKIC8vIEFuIEVudmlyb25tZW50IG9iamVjdCBpcyBjYXBhYmxlIG9mIHNldHRpbmcgdXAg
YW5kIHRlYXJpbmcgZG93biBhbgotLy8gZW52aXJvbm1lbnQuICBUaGUgdXNlciBzaG91bGQgc3Vi
Y2xhc3MgdGhpcyB0byBkZWZpbmUgaGlzIG93bgorLy8gZW52aXJvbm1lbnQuICBZb3Ugc2hvdWxk
IHN1YmNsYXNzIHRoaXMgdG8gZGVmaW5lIHlvdXIgb3duCiAvLyBlbnZpcm9ubWVudChzKS4KIC8v
CiAvLyBBbiBFbnZpcm9ubWVudCBvYmplY3QgZG9lcyB0aGUgc2V0LXVwIGFuZCB0ZWFyLWRvd24g
aW4gdmlydHVhbApAQCAtODQ5LDYgKzEwMjcsMTggQEAgY2xhc3MgRW52aXJvbm1lbnQgewogICB2
aXJ0dWFsIFNldHVwX3Nob3VsZF9iZV9zcGVsbGVkX1NldFVwKiBTZXR1cCgpIHsgcmV0dXJuIE5V
TEw7IH0KIH07CiAKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBFeGNlcHRpb24gd2hp
Y2ggY2FuIGJlIHRocm93biBmcm9tIFRlc3RFdmVudExpc3RlbmVyOjpPblRlc3RQYXJ0UmVzdWx0
LgorY2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRpb25FeGNlcHRpb24KKyAgICA6IHB1YmxpYyBpbnRl
cm5hbDo6R29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24geworIHB1YmxpYzoKKyAgZXhwbGljaXQg
QXNzZXJ0aW9uRXhjZXB0aW9uKGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiByZXN1bHQpCisgICAgICA6
IEdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uKHJlc3VsdCkge30KK307CisKKyNlbmRpZiAgLy8g
R1RFU1RfSEFTX0VYQ0VQVElPTlMKKwogLy8gVGhlIGludGVyZmFjZSBmb3IgdHJhY2luZyBleGVj
dXRpb24gb2YgdGVzdHMuIFRoZSBtZXRob2RzIGFyZSBvcmdhbml6ZWQgaW4KIC8vIHRoZSBvcmRl
ciB0aGUgY29ycmVzcG9uZGluZyBldmVudHMgYXJlIGZpcmVkLgogY2xhc3MgVGVzdEV2ZW50TGlz
dGVuZXIgewpAQCAtODc2LDcgKzEwNjYsOSBAQCBjbGFzcyBUZXN0RXZlbnRMaXN0ZW5lciB7CiAg
IC8vIEZpcmVkIGJlZm9yZSB0aGUgdGVzdCBzdGFydHMuCiAgIHZpcnR1YWwgdm9pZCBPblRlc3RT
dGFydChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSA9IDA7CiAKLSAgLy8gRmlyZWQgYWZ0ZXIg
YSBmYWlsZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VTUygpLgorICAvLyBGaXJlZCBhZnRlciBhIGZh
aWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRUVEKCkgaW52b2NhdGlvbi4KKyAgLy8gSWYgeW91IHdh
bnQgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIGZyb20gdGhpcyBmdW5jdGlvbiB0byBza2lwIHRvIHRo
ZSBuZXh0CisgIC8vIFRFU1QsIGl0IG11c3QgYmUgQXNzZXJ0aW9uRXhjZXB0aW9uIGRlZmluZWQg
YWJvdmUsIG9yIGluaGVyaXRlZCBmcm9tIGl0LgogICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJl
c3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgPSAwOwogCiAgIC8v
IEZpcmVkIGFmdGVyIHRoZSB0ZXN0IGVuZHMuCkBAIC05NjEsMTAgKzExNTMsMTAgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBUZXN0RXZlbnRMaXN0ZW5lcnMgewogCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNs
YXNzIFRlc3RDYXNlOworICBmcmllbmQgY2xhc3MgVGVzdEluZm87CiAgIGZyaWVuZCBjbGFzcyBp
bnRlcm5hbDo6RGVmYXVsdEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI7CiAgIGZyaWVuZCBj
bGFzcyBpbnRlcm5hbDo6Tm9FeGVjRGVhdGhUZXN0OwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6
OlRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOwotICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlRl
c3RJbmZvSW1wbDsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpVbml0VGVzdEltcGw7CiAKICAg
Ly8gUmV0dXJucyByZXBlYXRlciB0aGF0IGJyb2FkY2FzdHMgdGhlIFRlc3RFdmVudExpc3RlbmVy
IGV2ZW50cyB0byBhbGwKQEAgLTEwMzIsMjIgKzEyMjQsMjMgQEAgY2xhc3MgR1RFU1RfQVBJXyBV
bml0VGVzdCB7CiAKICAgLy8gUmV0dXJucyB0aGUgVGVzdENhc2Ugb2JqZWN0IGZvciB0aGUgdGVz
dCB0aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcsCiAgIC8vIG9yIE5VTEwgaWYgbm8gdGVzdCBpcyBy
dW5uaW5nLgotICBjb25zdCBUZXN0Q2FzZSogY3VycmVudF90ZXN0X2Nhc2UoKSBjb25zdDsKKyAg
Y29uc3QgVGVzdENhc2UqIGN1cnJlbnRfdGVzdF9jYXNlKCkgY29uc3QKKyAgICAgIEdURVNUX0xP
Q0tfRVhDTFVERURfKG11dGV4Xyk7CiAKICAgLy8gUmV0dXJucyB0aGUgVGVzdEluZm8gb2JqZWN0
IGZvciB0aGUgdGVzdCB0aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcsCiAgIC8vIG9yIE5VTEwgaWYg
bm8gdGVzdCBpcyBydW5uaW5nLgotICBjb25zdCBUZXN0SW5mbyogY3VycmVudF90ZXN0X2luZm8o
KSBjb25zdDsKKyAgY29uc3QgVGVzdEluZm8qIGN1cnJlbnRfdGVzdF9pbmZvKCkgY29uc3QKKyAg
ICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4Xyk7CiAKICAgLy8gUmV0dXJucyB0aGUgcmFu
ZG9tIHNlZWQgdXNlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQgdGVzdCBydW4uCiAgIGlu
dCByYW5kb21fc2VlZCgpIGNvbnN0OwogCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgLy8g
UmV0dXJucyB0aGUgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgb2JqZWN0IHVzZWQgdG8g
a2VlcCB0cmFjayBvZgogICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFuZCBpbnN0YW50
aWF0ZSBhbmQgcmVnaXN0ZXIgdGhlbS4KICAgLy8KICAgLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJ
T04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotICBpbnRlcm5hbDo6UGFyYW1ldGVy
aXplZFRlc3RDYXNlUmVnaXN0cnkmIHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpOwotI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAorICBpbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRl
c3RDYXNlUmVnaXN0cnkmIHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpCisgICAgICBHVEVT
VF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBzdWNj
ZXNzZnVsIHRlc3QgY2FzZXMuCiAgIGludCBzdWNjZXNzZnVsX3Rlc3RfY2FzZV9jb3VudCgpIGNv
bnN0OwpAQCAtMTA2OCwxNSArMTI2MSwyNSBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0IHsK
ICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cy4KICAgaW50IGZhaWxlZF90ZXN0
X2NvdW50KCkgY29uc3Q7CiAKKyAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3Rz
IHRoYXQgd2lsbCBiZSByZXBvcnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFi
bGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8vIEdldHMgdGhlIG51bWJlciBv
ZiBkaXNhYmxlZCB0ZXN0cy4KICAgaW50IGRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdDsKIAor
ICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJl
cG9ydC4KKyAgaW50IHJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8vIEdldHMg
dGhlIG51bWJlciBvZiBhbGwgdGVzdHMuCiAgIGludCB0b3RhbF90ZXN0X2NvdW50KCkgY29uc3Q7
CiAKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRoYXQgc2hvdWxkIHJ1bi4KICAgaW50
IHRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3Q7CiAKKyAgLy8gR2V0cyB0aGUgdGltZSBvZiB0aGUg
dGVzdCBwcm9ncmFtIHN0YXJ0LCBpbiBtcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUKKyAgLy8gVU5J
WCBlcG9jaC4KKyAgVGltZUluTWlsbGlzIHN0YXJ0X3RpbWVzdGFtcCgpIGNvbnN0OworCiAgIC8v
IEdldHMgdGhlIGVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5NaWxsaXMg
ZWxhcHNlZF90aW1lKCkgY29uc3Q7CiAKQEAgLTEwOTEsNiArMTI5NCwxMCBAQCBjbGFzcyBHVEVT
VF9BUElfIFVuaXRUZXN0IHsKICAgLy8gdG90YWxfdGVzdF9jYXNlX2NvdW50KCkgLSAxLiBJZiBp
IGlzIG5vdCBpbiB0aGF0IHJhbmdlLCByZXR1cm5zIE5VTEwuCiAgIGNvbnN0IFRlc3RDYXNlKiBH
ZXRUZXN0Q2FzZShpbnQgaSkgY29uc3Q7CiAKKyAgLy8gUmV0dXJucyB0aGUgVGVzdFJlc3VsdCBj
b250YWluaW5nIGluZm9ybWF0aW9uIG9uIHRlc3QgZmFpbHVyZXMgYW5kCisgIC8vIHByb3BlcnRp
ZXMgbG9nZ2VkIG91dHNpZGUgb2YgaW5kaXZpZHVhbCB0ZXN0IGNhc2VzLgorICBjb25zdCBUZXN0
UmVzdWx0JiBhZF9ob2NfdGVzdF9yZXN1bHQoKSBjb25zdDsKKwogICAvLyBSZXR1cm5zIHRoZSBs
aXN0IG9mIGV2ZW50IGxpc3RlbmVycyB0aGF0IGNhbiBiZSB1c2VkIHRvIHRyYWNrIGV2ZW50cwog
ICAvLyBpbnNpZGUgR29vZ2xlIFRlc3QuCiAgIFRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJz
KCk7CkBAIC0xMTE0LDEyICsxMzIxLDE2IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3Qgewog
ICB2b2lkIEFkZFRlc3RQYXJ0UmVzdWx0KFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGVfbmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgbGluZV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBpbnRlcm5hbDo6U3RyaW5nJiBvc19zdGFja190cmFjZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9zX3N0YWNrX3RyYWNlKQorICAgICAg
R1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKTsKIAotICAvLyBBZGRzIGEgVGVzdFByb3BlcnR5
IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0LiBJZiB0aGUgcmVzdWx0IGFscmVhZHkK
LSAgLy8gY29udGFpbnMgYSBwcm9wZXJ0eSB3aXRoIHRoZSBzYW1lIGtleSwgdGhlIHZhbHVlIHdp
bGwgYmUgdXBkYXRlZC4KLSAgdm9pZCBSZWNvcmRQcm9wZXJ0eUZvckN1cnJlbnRUZXN0KGNvbnN0
IGNoYXIqIGtleSwgY29uc3QgY2hhciogdmFsdWUpOworICAvLyBBZGRzIGEgVGVzdFByb3BlcnR5
IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0IHdoZW4gaW52b2tlZCBmcm9tCisgIC8v
IGluc2lkZSBhIHRlc3QsIHRvIGN1cnJlbnQgVGVzdENhc2UncyBhZF9ob2NfdGVzdF9yZXN1bHRf
IHdoZW4gaW52b2tlZAorICAvLyBmcm9tIFNldFVwVGVzdENhc2Ugb3IgVGVhckRvd25UZXN0Q2Fz
ZSwgb3IgdG8gdGhlIGdsb2JhbCBwcm9wZXJ0eSBzZXQKKyAgLy8gd2hlbiBpbnZva2VkIGVsc2V3
aGVyZS4gIElmIHRoZSByZXN1bHQgYWxyZWFkeSBjb250YWlucyBhIHByb3BlcnR5IHdpdGgKKyAg
Ly8gdGhlIHNhbWUga2V5LCB0aGUgdmFsdWUgd2lsbCBiZSB1cGRhdGVkLgorICB2b2lkIFJlY29y
ZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1
ZSk7CiAKICAgLy8gR2V0cyB0aGUgaS10aCB0ZXN0IGNhc2UgYW1vbmcgYWxsIHRoZSB0ZXN0IGNh
c2VzLiBpIGNhbiByYW5nZSBmcm9tIDAgdG8KICAgLy8gdG90YWxfdGVzdF9jYXNlX2NvdW50KCkg
LSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCByZXR1cm5zIE5VTEwuCkBAIC0xMTI5LDE2
ICsxMzQwLDE4IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3QgewogICBpbnRlcm5hbDo6VW5p
dFRlc3RJbXBsKiBpbXBsKCkgeyByZXR1cm4gaW1wbF87IH0KICAgY29uc3QgaW50ZXJuYWw6OlVu
aXRUZXN0SW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIGltcGxfOyB9CiAKLSAgLy8gVGhlc2Ug
Y2xhc3NlcyBhbmQgZnVuY2lvbnMgYXJlIGZyaWVuZHMgYXMgdGhleSBuZWVkIHRvIGFjY2VzcyBw
cml2YXRlCisgIC8vIFRoZXNlIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyBhcmUgZnJpZW5kcyBhcyB0
aGV5IG5lZWQgdG8gYWNjZXNzIHByaXZhdGUKICAgLy8gbWVtYmVycyBvZiBVbml0VGVzdC4KKyAg
ZnJpZW5kIGNsYXNzIFNjb3BlZFRyYWNlOwogICBmcmllbmQgY2xhc3MgVGVzdDsKICAgZnJpZW5k
IGNsYXNzIGludGVybmFsOjpBc3NlcnRIZWxwZXI7Ci0gIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6
U2NvcGVkVHJhY2U7CisgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6U3RyZWFtaW5nTGlzdGVuZXJU
ZXN0OworICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0
SGVscGVyOwogICBmcmllbmQgRW52aXJvbm1lbnQqIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChF
bnZpcm9ubWVudCogZW52KTsKICAgZnJpZW5kIGludGVybmFsOjpVbml0VGVzdEltcGwqIGludGVy
bmFsOjpHZXRVbml0VGVzdEltcGwoKTsKICAgZnJpZW5kIHZvaWQgaW50ZXJuYWw6OlJlcG9ydEZh
aWx1cmVJblVua25vd25Mb2NhdGlvbigKICAgICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3Vs
dF90eXBlLAotICAgICAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyYgbWVzc2FnZSk7CisgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSk7CiAKICAgLy8gQ3JlYXRlcyBhbiBlbXB0eSBVbml0
VGVzdC4KICAgVW5pdFRlc3QoKTsKQEAgLTExNDgsMTAgKzEzNjEsMTIgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBVbml0VGVzdCB7CiAKICAgLy8gUHVzaGVzIGEgdHJhY2UgZGVmaW5lZCBieSBTQ09QRURf
VFJBQ0UoKSBvbiB0byB0aGUgcGVyLXRocmVhZAogICAvLyBHb29nbGUgVGVzdCB0cmFjZSBzdGFj
ay4KLSAgdm9pZCBQdXNoR1Rlc3RUcmFjZShjb25zdCBpbnRlcm5hbDo6VHJhY2VJbmZvJiB0cmFj
ZSk7CisgIHZvaWQgUHVzaEdUZXN0VHJhY2UoY29uc3QgaW50ZXJuYWw6OlRyYWNlSW5mbyYgdHJh
Y2UpCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCiAgIC8vIFBvcHMgYSB0
cmFjZSBmcm9tIHRoZSBwZXItdGhyZWFkIEdvb2dsZSBUZXN0IHRyYWNlIHN0YWNrLgotICB2b2lk
IFBvcEdUZXN0VHJhY2UoKTsKKyAgdm9pZCBQb3BHVGVzdFRyYWNlKCkKKyAgICAgIEdURVNUX0xP
Q0tfRVhDTFVERURfKG11dGV4Xyk7CiAKICAgLy8gUHJvdGVjdHMgbXV0YWJsZSBzdGF0ZSBpbiAq
aW1wbF8uICBUaGlzIGlzIG11dGFibGUgYXMgc29tZSBjb25zdAogICAvLyBtZXRob2RzIG5lZWQg
dG8gbG9jayBpdCB0b28uCkBAIC0xMjA2LDgyICsxNDIxLDQwIEBAIEdURVNUX0FQSV8gdm9pZCBJ
bml0R29vZ2xlVGVzdChpbnQqIGFyZ2MsIHdjaGFyX3QqKiBhcmd2KTsKIAogbmFtZXNwYWNlIGlu
dGVybmFsIHsKIAotLy8gVGhlc2Ugb3ZlcmxvYWRlZCB2ZXJzaW9ucyBoYW5kbGUgOjpzdGQ6OnN0
cmluZyBhbmQgOjpzdGQ6OndzdHJpbmcuCi1HVEVTVF9BUElfIGlubGluZSBTdHJpbmcgRm9ybWF0
Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyKSB7Ci0gIHJldHVybiAo
TWVzc2FnZSgpIDw8ICciJyA8PCBzdHIgPDwgJyInKS5HZXRTdHJpbmcoKTsKLX0KLQotI2lmIEdU
RVNUX0hBU19TVERfV1NUUklORwotR1RFU1RfQVBJXyBpbmxpbmUgU3RyaW5nIEZvcm1hdEZvckZh
aWx1cmVNZXNzYWdlKGNvbnN0IDo6c3RkOjp3c3RyaW5nJiB3c3RyKSB7Ci0gIHJldHVybiAoTWVz
c2FnZSgpIDw8ICJMXCIiIDw8IHdzdHIgPDwgJyInKS5HZXRTdHJpbmcoKTsKLX0KLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1NURF9XU1RSSU5HCi0KLS8vIFRoZXNlIG92ZXJsb2FkZWQgdmVyc2lvbnMg
aGFuZGxlIDo6c3RyaW5nIGFuZCA6OndzdHJpbmcuCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJ
TkcKLUdURVNUX0FQSV8gaW5saW5lIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjb25z
dCA6OnN0cmluZyYgc3RyKSB7Ci0gIHJldHVybiAoTWVzc2FnZSgpIDw8ICciJyA8PCBzdHIgPDwg
JyInKS5HZXRTdHJpbmcoKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcK
LQotI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotR1RFU1RfQVBJXyBpbmxpbmUgU3RyaW5n
IEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKGNvbnN0IDo6d3N0cmluZyYgd3N0cikgewotICByZXR1
cm4gKE1lc3NhZ2UoKSA8PCAiTFwiIiA8PCB3c3RyIDw8ICciJykuR2V0U3RyaW5nKCk7Ci19Ci0j
ZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotCi0vLyBGb3JtYXRzIGEgY29tcGFy
aXNvbiBhc3NlcnRpb24gKGUuZy4gQVNTRVJUX0VRLCBFWFBFQ1RfTFQsIGFuZCBldGMpCi0vLyBv
cGVyYW5kIHRvIGJlIHVzZWQgaW4gYSBmYWlsdXJlIG1lc3NhZ2UuICBUaGUgdHlwZSAoYnV0IG5v
dCB2YWx1ZSkKLS8vIG9mIHRoZSBvdGhlciBvcGVyYW5kIG1heSBhZmZlY3QgdGhlIGZvcm1hdC4g
IFRoaXMgYWxsb3dzIHVzIHRvCi0vLyBwcmludCBhIGNoYXIqIGFzIGEgcmF3IHBvaW50ZXIgd2hl
biBpdCBpcyBjb21wYXJlZCBhZ2FpbnN0IGFub3RoZXIKLS8vIGNoYXIqLCBhbmQgcHJpbnQgaXQg
YXMgYSBDIHN0cmluZyB3aGVuIGl0IGlzIGNvbXBhcmVkIGFnYWluc3QgYW4KLS8vIHN0ZDo6c3Ry
aW5nIG9iamVjdCwgZm9yIGV4YW1wbGUuCi0vLwotLy8gVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRp
b24gaWdub3JlcyB0aGUgdHlwZSBvZiB0aGUgb3RoZXIgb3BlcmFuZC4KLS8vIFNvbWUgc3BlY2lh
bGl6ZWQgdmVyc2lvbnMgYXJlIHVzZWQgdG8gaGFuZGxlIGZvcm1hdHRpbmcgd2lkZSBvcgotLy8g
bmFycm93IEMgc3RyaW5ncy4KLS8vCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5P
VCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCisvLyBTZXBhcmF0ZSB0aGUgZXJyb3IgZ2VuZXJhdGlu
ZyBjb2RlIGZyb20gdGhlIGNvZGUgcGF0aCB0byByZWR1Y2UgdGhlIHN0YWNrCisvLyBmcmFtZSBz
aXplIG9mIENtcEhlbHBlckVRLiBUaGlzIGhlbHBzIHJlZHVjZSB0aGUgb3ZlcmhlYWQgb2Ygc29t
ZSBzYW5pdGl6ZXJzCisvLyB3aGVuIGNhbGxpbmcgRVhQRUNUXyogaW4gYSB0aWdodCBsb29wLgog
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLVN0cmluZyBGb3JtYXRGb3JDb21w
YXJpc29uRmFpbHVyZU1lc3NhZ2UoY29uc3QgVDEmIHZhbHVlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgLyogb3RoZXJfb3BlcmFuZCAqLykgewot
ICByZXR1cm4gRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UodmFsdWUpOworQXNzZXJ0aW9uUmVzdWx0
IENtcEhlbHBlckVRRmFpbHVyZShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiBsaHMsIGNvbnN0IFQy
JiByaHMpIHsKKyAgcmV0dXJuIEVxRmFpbHVyZShsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21w
YXJpc29uRmFpbHVyZU1lc3NhZ2UobGhzLCByaHMpLAorICAgICAgICAgICAgICAgICAgIEZvcm1h
dEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShyaHMsIGxocyksCisgICAgICAgICAgICAgICAg
ICAgZmFsc2UpOwogfQogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVD
VH1fRVEuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotQXNzZXJ0aW9uUmVz
dWx0IENtcEhlbHBlckVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGV4cGVjdGVkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFQyJiBhY3R1YWwpIHsKLSNpZmRlZiBfTVNDX1ZFUgotI3By
YWdtYSB3YXJuaW5nKHB1c2gpICAgICAgICAgIC8vIFNhdmVzIHRoZSBjdXJyZW50IHdhcm5pbmcg
c3RhdGUuCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0Mzg5KSAgLy8gVGVtcG9yYXJpbHkgZGlz
YWJsZXMgd2FybmluZyBvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpZ25l
ZC91bnNpZ25lZCBtaXNtYXRjaC4KLSNlbmRpZgotCi0gIGlmIChleHBlY3RlZCA9PSBhY3R1YWwp
IHsKK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgbGhzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiByaHMpIHsKKyAgaWYgKGxocyA9PSByaHMpIHsK
ICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9CiAKLSNpZmRlZiBfTVNDX1ZFUgot
I3ByYWdtYSB3YXJuaW5nKHBvcCkgICAgICAgICAgLy8gUmVzdG9yZXMgdGhlIHdhcm5pbmcgc3Rh
dGUuCi0jZW5kaWYKLQotICByZXR1cm4gRXFGYWlsdXJlKGV4cGVjdGVkX2V4cHJlc3Npb24sCi0g
ICAgICAgICAgICAgICAgICAgYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAg
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKGV4cGVjdGVkLCBhY3R1YWwpLAotICAg
ICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShhY3R1YWws
IGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAgICAgICBmYWxzZSk7CisgIHJldHVybiBDbXBIZWxw
ZXJFUUZhaWx1cmUobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7CiB9
CiAKIC8vIFdpdGggdGhpcyBvdmVybG9hZGVkIHZlcnNpb24sIHdlIGFsbG93IGFub255bW91cyBl
bnVtcyB0byBiZSB1c2VkCiAvLyBpbiB7QVNTRVJUfEVYUEVDVH1fRVEgd2hlbiBjb21waWxlZCB3
aXRoIGdjYyA0LCBhcyBhbm9ueW1vdXMgZW51bXMKIC8vIGNhbiBiZSBpbXBsaWNpdGx5IGNhc3Qg
dG8gQmlnZ2VzdEludC4KLUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRKGNv
bnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgZXhwZWN0ZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGFjdHVhbCk7CitHVEVT
VF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVz
c2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QmlnZ2VzdEludCBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
aWdnZXN0SW50IHJocyk7CiAKIC8vIFRoZSBoZWxwZXIgY2xhc3MgZm9yIHtBU1NFUlR8RVhQRUNU
fV9FUS4gIFRoZSB0ZW1wbGF0ZSBhcmd1bWVudAogLy8gbGhzX2lzX251bGxfbGl0ZXJhbCBpcyB0
cnVlIGlmZiB0aGUgZmlyc3QgYXJndW1lbnQgdG8gQVNTRVJUX0VRKCkKQEAgLTEyOTIsMTIgKzE0
NjUsMTEgQEAgY2xhc3MgRXFIZWxwZXIgewogIHB1YmxpYzoKICAgLy8gVGhpcyB0ZW1wbGF0aXpl
ZCB2ZXJzaW9uIGlzIGZvciB0aGUgZ2VuZXJhbCBjYXNlLgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyPgotICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUoY29uc3Qg
Y2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVDEmIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVDImIGFjdHVhbCkgewotICAgIHJldHVybiBDbXBIZWxwZXJFUShleHBl
Y3RlZF9leHByZXNzaW9uLCBhY3R1YWxfZXhwcmVzc2lvbiwgZXhwZWN0ZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgIGFjdHVhbCk7CisgIHN0YXRpYyBBc3NlcnRpb25SZXN1bHQgQ29tcGFyZShj
b25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVDEmIGxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFQyJiByaHMpIHsKKyAgICByZXR1cm4gQ21wSGVscGVyRVEobGhzX2V4cHJlc3Npb24s
IHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7CiAgIH0KIAogICAvLyBXaXRoIHRoaXMgb3Zlcmxv
YWRlZCB2ZXJzaW9uLCB3ZSBhbGxvdyBhbm9ueW1vdXMgZW51bXMgdG8gYmUgdXNlZApAQCAtMTMw
NiwxNyArMTQ3OCwxNiBAQCBjbGFzcyBFcUhlbHBlciB7CiAgIC8vCiAgIC8vIEV2ZW4gdGhvdWdo
IGl0cyBib2R5IGxvb2tzIHRoZSBzYW1lIGFzIHRoZSBhYm92ZSB2ZXJzaW9uLCB3ZQogICAvLyBj
YW5ub3QgbWVyZ2UgdGhlIHR3bywgYXMgaXQgd2lsbCBtYWtlIGFub255bW91cyBlbnVtcyB1bmhh
cHB5LgotICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUoY29uc3QgY2hhciogZXhwZWN0
ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QmlnZ2VzdEludCBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJp
Z2dlc3RJbnQgYWN0dWFsKSB7Ci0gICAgcmV0dXJuIENtcEhlbHBlckVRKGV4cGVjdGVkX2V4cHJl
c3Npb24sIGFjdHVhbF9leHByZXNzaW9uLCBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgYWN0dWFsKTsKKyAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBDb21wYXJlKGNvbnN0IGNoYXIq
IGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
aWdnZXN0SW50IGxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJ
bnQgcmhzKSB7CisgICAgcmV0dXJuIENtcEhlbHBlckVRKGxoc19leHByZXNzaW9uLCByaHNfZXhw
cmVzc2lvbiwgbGhzLCByaHMpOwogICB9CiB9OwogCiAvLyBUaGlzIHNwZWNpYWxpemF0aW9uIGlz
IHVzZWQgd2hlbiB0aGUgZmlyc3QgYXJndW1lbnQgdG8gQVNTRVJUX0VRKCkKLS8vIGlzIGEgbnVs
bCBwb2ludGVyIGxpdGVyYWwuCisvLyBpcyBhIG51bGwgcG9pbnRlciBsaXRlcmFsLCBsaWtlIE5V
TEwsIGZhbHNlLCBvciAwLgogdGVtcGxhdGUgPD4KIGNsYXNzIEVxSGVscGVyPHRydWU+IHsKICBw
dWJsaWM6CkBAIC0xMzI1LDI3ICsxNDk2LDUzIEBAIGNsYXNzIEVxSGVscGVyPHRydWU+IHsKICAg
Ly8gTk9UIGEgcG9pbnRlciwgZS5nLiBBU1NFUlRfRVEoMCwgQW5JbnRGdW5jdGlvbigpKSBvcgog
ICAvLyBFWFBFQ1RfRVEoZmFsc2UsIGFfYm9vbCkuCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDI+Ci0gIHN0YXRpYyBBc3NlcnRpb25SZXN1bHQgQ29tcGFyZShjb25zdCBjaGFy
KiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUMSYgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUMiYgYWN0dWFsKSB7Ci0gICAgcmV0dXJuIENtcEhlbHBlckVRKGV4cGVjdGVk
X2V4cHJlc3Npb24sIGFjdHVhbF9leHByZXNzaW9uLCBleHBlY3RlZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgYWN0dWFsKTsKKyAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBDb21wYXJlKAorICAg
ICAgY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICBjb25zdCBjaGFyKiByaHNfZXhw
cmVzc2lvbiwKKyAgICAgIGNvbnN0IFQxJiBsaHMsCisgICAgICBjb25zdCBUMiYgcmhzLAorICAg
ICAgLy8gVGhlIGZvbGxvd2luZyBsaW5lIHByZXZlbnRzIHRoaXMgb3ZlcmxvYWQgZnJvbSBiZWlu
ZyBjb25zaWRlcmVkIGlmIFQyCisgICAgICAvLyBpcyBub3QgYSBwb2ludGVyIHR5cGUuICBXZSBu
ZWVkIHRoaXMgYmVjYXVzZSBBU1NFUlRfRVEoTlVMTCwgbXlfcHRyKQorICAgICAgLy8gZXhwYW5k
cyB0byBDb21wYXJlKCIiLCAiIiwgTlVMTCwgbXlfcHRyKSwgd2hpY2ggcmVxdWlyZXMgYSBjb252
ZXJzaW9uCisgICAgICAvLyB0byBtYXRjaCB0aGUgU2VjcmV0KiBpbiB0aGUgb3RoZXIgb3Zlcmxv
YWQsIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBtYWtlCisgICAgICAvLyB0aGlzIHRlbXBsYXRlIG1h
dGNoIGJldHRlci4KKyAgICAgIHR5cGVuYW1lIEVuYWJsZUlmPCFpc19wb2ludGVyPFQyPjo6dmFs
dWU+Ojp0eXBlKiA9IDApIHsKKyAgICByZXR1cm4gQ21wSGVscGVyRVEobGhzX2V4cHJlc3Npb24s
IHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7CiAgIH0KIAotICAvLyBUaGlzIHZlcnNpb24gd2ls
bCBiZSBwaWNrZWQgd2hlbiB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvCi0gIC8vIEFTU0VSVF9FUSgp
IGlzIGEgcG9pbnRlciwgZS5nLiBBU1NFUlRfRVEoTlVMTCwgYV9wb2ludGVyKS4KLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBD
b21wYXJlKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiAvKiBleHBlY3RlZCAqLywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQyKiBhY3R1YWwpIHsKLSAgICAvLyBXZSBhbHJl
YWR5IGtub3cgdGhhdCAnZXhwZWN0ZWQnIGlzIGEgbnVsbCBwb2ludGVyLgotICAgIHJldHVybiBD
bXBIZWxwZXJFUShleHBlY3RlZF9leHByZXNzaW9uLCBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VDIqPihOVUxMKSwgYWN0dWFsKTsKKyAgLy8g
VGhpcyB2ZXJzaW9uIHdpbGwgYmUgcGlja2VkIHdoZW4gdGhlIHNlY29uZCBhcmd1bWVudCB0byBB
U1NFUlRfRVEoKSBpcyBhCisgIC8vIHBvaW50ZXIsIGUuZy4gQVNTRVJUX0VRKE5VTEwsIGFfcG9p
bnRlcikuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0
IENvbXBhcmUoCisgICAgICBjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgIGNvbnN0
IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgLy8gV2UgdXNlZCB0byBoYXZlIGEgc2Vjb25k
IHRlbXBsYXRlIHBhcmFtZXRlciBpbnN0ZWFkIG9mIFNlY3JldCouICBUaGF0CisgICAgICAvLyB0
ZW1wbGF0ZSBwYXJhbWV0ZXIgd291bGQgZGVkdWNlIHRvICdsb25nJywgbWFraW5nIHRoaXMgYSBi
ZXR0ZXIgbWF0Y2gKKyAgICAgIC8vIHRoYW4gdGhlIGZpcnN0IG92ZXJsb2FkIGV2ZW4gd2l0aG91
dCB0aGUgZmlyc3Qgb3ZlcmxvYWQncyBFbmFibGVJZi4KKyAgICAgIC8vIFVuZm9ydHVuYXRlbHks
IGdjYyB3aXRoIC1XY29udmVyc2lvbi1udWxsIHdhcm5zIHdoZW4gInBhc3NpbmcgTlVMTCB0bwor
ICAgICAgLy8gbm9uLXBvaW50ZXIgYXJndW1lbnQiIChldmVuIGEgZGVkdWNlZCBpbnRlZ3JhbCBh
cmd1bWVudCksIHNvIHRoZSBvbGQKKyAgICAgIC8vIGltcGxlbWVudGF0aW9uIGNhdXNlZCB3YXJu
aW5ncyBpbiB1c2VyIGNvZGUuCisgICAgICBTZWNyZXQqIC8qIGxocyAoTlVMTCkgKi8sCisgICAg
ICBUKiByaHMpIHsKKyAgICAvLyBXZSBhbHJlYWR5IGtub3cgdGhhdCAnbGhzJyBpcyBhIG51bGwg
cG9pbnRlci4KKyAgICByZXR1cm4gQ21wSGVscGVyRVEobGhzX2V4cHJlc3Npb24sIHJoc19leHBy
ZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxUKj4oTlVMTCksIHJo
cyk7CiAgIH0KIH07CiAKKy8vIFNlcGFyYXRlIHRoZSBlcnJvciBnZW5lcmF0aW5nIGNvZGUgZnJv
bSB0aGUgY29kZSBwYXRoIHRvIHJlZHVjZSB0aGUgc3RhY2sKKy8vIGZyYW1lIHNpemUgb2YgQ21w
SGVscGVyT1AuIFRoaXMgaGVscHMgcmVkdWNlIHRoZSBvdmVyaGVhZCBvZiBzb21lIHNhbml0aXpl
cnMKKy8vIHdoZW4gY2FsbGluZyBFWFBFQ1RfT1AgaW4gYSB0aWdodCBsb29wLgordGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJPcEZh
aWx1cmUoY29uc3QgY2hhciogZXhwcjEsIGNvbnN0IGNoYXIqIGV4cHIyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgdmFsMSwgY29uc3QgVDImIHZhbDIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG9wKSB7CisgIHJl
dHVybiBBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgICAgIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhw
cjEgPDwgIikgIiA8PCBvcCA8PCAiICgiIDw8IGV4cHIyCisgICAgICAgICA8PCAiKSwgYWN0dWFs
OiAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSh2YWwxLCB2YWwyKQorICAg
ICAgICAgPDwgIiB2cyAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSh2YWwy
LCB2YWwxKTsKK30KKwogLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHRoZSBoZWxwZXIgZnVu
Y3Rpb25zIG5lZWRlZCB0byBpbXBsZW1lbnQKIC8vIEFTU0VSVF8/PyBhbmQgRVhQRUNUXz8/LiAg
SXQgaXMgaGVyZSBqdXN0IHRvIGF2b2lkIGNvcHktYW5kLXBhc3RlCiAvLyBvZiBzaW1pbGFyIGNv
ZGUuCkBAIC0xMzU2LDYgKzE1NTMsNyBAQCBjbGFzcyBFcUhlbHBlcjx0cnVlPiB7CiAvLyB3aXRo
IGdjYyA0LgogLy8KIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBB
IFVTRVIgUFJPR1JBTS4KKwogI2RlZmluZSBHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKG9wX25hbWUs
IG9wKVwKIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+XAogQXNzZXJ0aW9uUmVz
dWx0IENtcEhlbHBlciMjb3BfbmFtZShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhw
cjIsIFwKQEAgLTEzNjMsMTEgKzE1NjEsNyBAQCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyIyNv
cF9uYW1lKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwgXAogICBpZiAodmFs
MSBvcCB2YWwyKSB7XAogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7XAogICB9IGVsc2Ug
e1wKLSAgICBNZXNzYWdlIG1zZztcCi0gICAgbXNnIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEg
PDwgIikgIiAjb3AgIiAoIiA8PCBleHByMlwKLSAgICAgICAgPDwgIiksIGFjdHVhbDogIiA8PCBG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UodmFsMSwgdmFsMilcCi0gICAgICAgIDw8
ICIgdnMgIiA8PCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UodmFsMiwgdmFsMSk7
XAotICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7XAorICAgIHJldHVybiBDbXBIZWxw
ZXJPcEZhaWx1cmUoZXhwcjEsIGV4cHIyLCB2YWwxLCB2YWwyLCAjb3ApO1wKICAgfVwKIH1cCiBH
VEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXIjI29wX25hbWUoXApAQCAtMTM4MCwy
OSArMTU3NCwyOSBAQCBHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKE5FLCAhPSk7CiAvLyBJbXBsZW1l
bnRzIHRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9MRQogR1RFU1RfSU1Q
TF9DTVBfSEVMUEVSXyhMRSwgPD0pOwogLy8gSW1wbGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9u
IGZvciB7QVNTRVJUfEVYUEVDVH1fTFQKLUdURVNUX0lNUExfQ01QX0hFTFBFUl8oTFQsIDwgKTsK
K0dURVNUX0lNUExfQ01QX0hFTFBFUl8oTFQsIDwpOwogLy8gSW1wbGVtZW50cyB0aGUgaGVscGVy
IGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fR0UKIEdURVNUX0lNUExfQ01QX0hFTFBFUl8o
R0UsID49KTsKIC8vIEltcGxlbWVudHMgdGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxF
WFBFQ1R9X0dUCi1HVEVTVF9JTVBMX0NNUF9IRUxQRVJfKEdULCA+ICk7CitHVEVTVF9JTVBMX0NN
UF9IRUxQRVJfKEdULCA+KTsKIAogI3VuZGVmIEdURVNUX0lNUExfQ01QX0hFTFBFUl8KIAogLy8g
VGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NUUkVRLgogLy8KIC8vIElO
VEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KLUdU
RVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGV4cGVj
dGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsKTsKK0dURVNUX0FQ
SV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Np
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBzMl9leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogczEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBzMik7CiAKIC8vIFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NF
UlR8RVhQRUNUfV9TVFJDQVNFRVEuCiAvLwogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBE
TyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQg
Q21wSGVscGVyU1RSQ0FTRUVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0
dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsKTsKK0dURVNUX0FQSV8gQXNzZXJ0
aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VFUShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHMyX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogczEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogczIpOwogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZv
ciB7QVNTRVJUfEVYUEVDVH1fU1RSTkUuCiAvLwpAQCAtMTQyNCwxMCArMTYxOCwxMCBAQCBHVEVT
VF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJDQVNFTkUoY29uc3QgY2hhciogczFf
ZXhwcmVzc2lvbiwKIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgKl9TVFJFUSBvbiB3aWRlIHN0cmlu
Z3MuCiAvLwogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNF
UiBQUk9HUkFNLgotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29u
c3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogZXhwZWN0ZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90
KiBhY3R1YWwpOworR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29u
c3QgY2hhciogczFfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHMyX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiBzMSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIHMyKTsKIAogLy8gSGVs
cGVyIGZ1bmN0aW9uIGZvciAqX1NUUk5FIG9uIHdpZGUgc3RyaW5ncy4KIC8vCkBAIC0xNDg1LDI4
ICsxNjc5LDI4IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLwogLy8gSU5URVJOQUwgSU1QTEVN
RU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgogdGVtcGxhdGUgPHR5cGVu
YW1lIFJhd1R5cGU+Ci1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRmxvYXRpbmdQb2ludEVRKGNv
bnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdUeXBlIGV4cGVjdGVkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdUeXBlIGFjdHVhbCkgewotICBj
b25zdCBGbG9hdGluZ1BvaW50PFJhd1R5cGU+IGxocyhleHBlY3RlZCksIHJocyhhY3R1YWwpOwor
QXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckZsb2F0aW5nUG9pbnRFUShjb25zdCBjaGFyKiBsaHNf
ZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJhd1R5cGUgbGhzX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSYXdUeXBlIHJoc192YWx1ZSkgeworICBjb25zdCBGbG9hdGluZ1BvaW50
PFJhd1R5cGU+IGxocyhsaHNfdmFsdWUpLCByaHMocmhzX3ZhbHVlKTsKIAogICBpZiAobGhzLkFs
bW9zdEVxdWFscyhyaHMpKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQog
Ci0gIFN0clN0cmVhbSBleHBlY3RlZF9zczsKLSAgZXhwZWN0ZWRfc3MgPDwgc3RkOjpzZXRwcmVj
aXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxSYXdUeXBlPjo6ZGlnaXRzMTAgKyAyKQotICAgICAg
ICAgICAgICA8PCBleHBlY3RlZDsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBsaHNfc3M7CisgIGxo
c19zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+Ojpk
aWdpdHMxMCArIDIpCisgICAgICAgICA8PCBsaHNfdmFsdWU7CiAKLSAgU3RyU3RyZWFtIGFjdHVh
bF9zczsKLSAgYWN0dWFsX3NzIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1p
dHM8UmF3VHlwZT46OmRpZ2l0czEwICsgMikKLSAgICAgICAgICAgIDw8IGFjdHVhbDsKKyAgOjpz
dGQ6OnN0cmluZ3N0cmVhbSByaHNfc3M7CisgIHJoc19zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihz
dGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+OjpkaWdpdHMxMCArIDIpCisgICAgICAgICA8PCBy
aHNfdmFsdWU7CiAKLSAgcmV0dXJuIEVxRmFpbHVyZShleHBlY3RlZF9leHByZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIFN0
clN0cmVhbVRvU3RyaW5nKCZleHBlY3RlZF9zcyksCi0gICAgICAgICAgICAgICAgICAgU3RyU3Ry
ZWFtVG9TdHJpbmcoJmFjdHVhbF9zcyksCisgIHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Np
b24sCisgICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAg
ICAgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJmxoc19zcyksCisgICAgICAgICAgICAgICAgICAgU3Ry
aW5nU3RyZWFtVG9TdHJpbmcoJnJoc19zcyksCiAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwog
fQogCkBAIC0xNTQ4LDkgKzE3NDIsOSBAQCBjbGFzcyBHVEVTVF9BUElfIEFzc2VydEhlbHBlciB7
CiAgICAgICAgIDogdHlwZSh0KSwgZmlsZShzcmNmaWxlKSwgbGluZShsaW5lX251bSksIG1lc3Nh
Z2UobXNnKSB7IH0KIAogICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIGNvbnN0IHR5cGU7Ci0gICAg
Y29uc3QgY2hhciogICAgICAgIGNvbnN0IGZpbGU7Ci0gICAgaW50ICAgICAgICAgICAgICAgIGNv
bnN0IGxpbmU7Ci0gICAgU3RyaW5nICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2U7CisgICAgY29u
c3QgY2hhciogY29uc3QgZmlsZTsKKyAgICBpbnQgY29uc3QgbGluZTsKKyAgICBzdGQ6OnN0cmlu
ZyBjb25zdCBtZXNzYWdlOwogCiAgICBwcml2YXRlOgogICAgIEdURVNUX0RJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTl8oQXNzZXJ0SGVscGVyRGF0YSk7CkBAIC0xNTYzLDEwICsxNzU3LDEzIEBAIGNs
YXNzIEdURVNUX0FQSV8gQXNzZXJ0SGVscGVyIHsKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
CiAKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotLy8gVGhlIGFic3RyYWN0IGJhc2UgY2xhc3Mg
dGhhdCBhbGwgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBpbmhlcml0IGZyb20uCisvLyBUaGUg
cHVyZSBpbnRlcmZhY2UgY2xhc3MgdGhhdCBhbGwgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBp
bmhlcml0IGZyb20uCisvLyBBIHZhbHVlLXBhcmFtZXRlcml6ZWQgY2xhc3MgbXVzdCBpbmhlcml0
IGZyb20gYm90aCA6OnRlc3Rpbmc6OlRlc3QgYW5kCisvLyA6OnRlc3Rpbmc6OldpdGhQYXJhbUlu
dGVyZmFjZS4gSW4gbW9zdCBjYXNlcyB0aGF0IGp1c3QgbWVhbnMgaW5oZXJpdGluZworLy8gZnJv
bSA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW0sIGJ1dCBtb3JlIGNvbXBsaWNhdGVkIHRlc3QgaGll
cmFyY2hpZXMKKy8vIG1heSBuZWVkIHRvIGluaGVyaXQgZnJvbSBUZXN0IGFuZCBXaXRoUGFyYW1J
bnRlcmZhY2UgYXQgZGlmZmVyZW50IGxldmVscy4KIC8vCi0vLyBUaGlzIGNsYXNzIGFkZHMgc3Vw
cG9ydCBmb3IgYWNjZXNzaW5nIHRoZSB0ZXN0IHBhcmFtZXRlciB2YWx1ZSB2aWEKKy8vIFRoaXMg
aW50ZXJmYWNlIGhhcyBzdXBwb3J0IGZvciBhY2Nlc3NpbmcgdGhlIHRlc3QgcGFyYW1ldGVyIHZh
bHVlIHZpYQogLy8gdGhlIEdldFBhcmFtKCkgbWV0aG9kLgogLy8KIC8vIFVzZSBpdCB3aXRoIG9u
ZSBvZiB0aGUgcGFyYW1ldGVyIGdlbmVyYXRvciBkZWZpbmluZyBmdW5jdGlvbnMsIGxpa2UgUmFu
Z2UoKSwKQEAgLTE1OTUsMTMgKzE3OTIsMjIgQEAgY2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRIZWxw
ZXIgewogLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoT25lVG9UZW5SYW5nZSwgRm9vVGVzdCwg
Ojp0ZXN0aW5nOjpSYW5nZSgxLCAxMCkpOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNz
IFRlc3RXaXRoUGFyYW0gOiBwdWJsaWMgVGVzdCB7CitjbGFzcyBXaXRoUGFyYW1JbnRlcmZhY2Ug
ewogIHB1YmxpYzoKICAgdHlwZWRlZiBUIFBhcmFtVHlwZTsKKyAgdmlydHVhbCB+V2l0aFBhcmFt
SW50ZXJmYWNlKCkge30KIAogICAvLyBUaGUgY3VycmVudCBwYXJhbWV0ZXIgdmFsdWUuIElzIGFs
c28gYXZhaWxhYmxlIGluIHRoZSB0ZXN0IGZpeHR1cmUncwotICAvLyBjb25zdHJ1Y3Rvci4KLSAg
Y29uc3QgUGFyYW1UeXBlJiBHZXRQYXJhbSgpIGNvbnN0IHsgcmV0dXJuICpwYXJhbWV0ZXJfOyB9
CisgIC8vIGNvbnN0cnVjdG9yLiBUaGlzIG1lbWJlciBmdW5jdGlvbiBpcyBub24tc3RhdGljLCBl
dmVuIHRob3VnaCBpdCBvbmx5CisgIC8vIHJlZmVyZW5jZXMgc3RhdGljIGRhdGEsIHRvIHJlZHVj
ZSB0aGUgb3Bwb3J0dW5pdHkgZm9yIGluY29ycmVjdCB1c2VzCisgIC8vIGxpa2Ugd3JpdGluZyAn
V2l0aFBhcmFtSW50ZXJmYWNlPGJvb2w+OjpHZXRQYXJhbSgpJyBmb3IgYSB0ZXN0IHRoYXQKKyAg
Ly8gdXNlcyBhIGZpeHR1cmUgd2hvc2UgcGFyYW1ldGVyIHR5cGUgaXMgaW50LgorICBjb25zdCBQ
YXJhbVR5cGUmIEdldFBhcmFtKCkgY29uc3QgeworICAgIEdURVNUX0NIRUNLXyhwYXJhbWV0ZXJf
ICE9IE5VTEwpCisgICAgICAgIDw8ICJHZXRQYXJhbSgpIGNhbiBvbmx5IGJlIGNhbGxlZCBpbnNp
ZGUgYSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QgIgorICAgICAgICA8PCAiLS0gZGlkIHlvdSBp
bnRlbmQgdG8gd3JpdGUgVEVTVF9QIGluc3RlYWQgb2YgVEVTVF9GPyI7CisgICAgcmV0dXJuICpw
YXJhbWV0ZXJfOworICB9CiAKICBwcml2YXRlOgogICAvLyBTZXRzIHBhcmFtZXRlciB2YWx1ZS4g
VGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgbWFraW5nIHN1cmUgdGhlIHZhbHVlCkBAIC0x
NjEzLDE0ICsxODE5LDE5IEBAIGNsYXNzIFRlc3RXaXRoUGFyYW0gOiBwdWJsaWMgVGVzdCB7CiAg
IC8vIFN0YXRpYyB2YWx1ZSB1c2VkIGZvciBhY2Nlc3NpbmcgcGFyYW1ldGVyIGR1cmluZyBhIHRl
c3QgbGlmZXRpbWUuCiAgIHN0YXRpYyBjb25zdCBQYXJhbVR5cGUqIHBhcmFtZXRlcl87CiAKLSAg
Ly8gVGVzdENsYXNzIG11c3QgYmUgYSBzdWJjbGFzcyBvZiBUZXN0V2l0aFBhcmFtPFQ+LgorICAv
LyBUZXN0Q2xhc3MgbXVzdCBiZSBhIHN1YmNsYXNzIG9mIFdpdGhQYXJhbUludGVyZmFjZTxUPiBh
bmQgVGVzdC4KICAgdGVtcGxhdGUgPGNsYXNzIFRlc3RDbGFzcz4gZnJpZW5kIGNsYXNzIGludGVy
bmFsOjpQYXJhbWV0ZXJpemVkVGVzdEZhY3Rvcnk7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLWNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOworY29uc3Qg
VCogV2l0aFBhcmFtSW50ZXJmYWNlPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIAotI2VuZGlmICAv
LyBHVEVTVF9IQVNfUEFSQU1fVEVTVAorLy8gTW9zdCB2YWx1ZS1wYXJhbWV0ZXJpemVkIGNsYXNz
ZXMgY2FuIGlnbm9yZSB0aGUgZXhpc3RlbmNlIG9mCisvLyBXaXRoUGFyYW1JbnRlcmZhY2UsIGFu
ZCBjYW4ganVzdCBpbmhlcml0IGZyb20gOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtLgorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFRlc3RXaXRoUGFyYW0gOiBwdWJsaWMgVGVzdCwgcHVi
bGljIFdpdGhQYXJhbUludGVyZmFjZTxUPiB7Cit9OwogCiAvLyBNYWNyb3MgZm9yIGluZGljYXRp
bmcgc3VjY2Vzcy9mYWlsdXJlIGluIHRlc3QgY29kZS4KIApAQCAtMTY0MCwyMyArMTg1MSwyMyBA
QCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIC8vIHVzdWFs
bHkgd2FudCB0aGUgZmFpbC1mYXN0IGJlaGF2aW9yIG9mIEZBSUwgYW5kIEFTU0VSVF8qLCBidXQg
dGhvc2UKIC8vIHdyaXRpbmcgZGF0YS1kcml2ZW4gdGVzdHMgb2Z0ZW4gZmluZCB0aGVtc2VsdmVz
IHVzaW5nIEFERF9GQUlMVVJFCiAvLyBhbmQgRVhQRUNUXyogbW9yZS4KLS8vCi0vLyBFeGFtcGxl
czoKLS8vCi0vLyAgIEVYUEVDVF9UUlVFKHNlcnZlci5TdGF0dXNJc09LKCkpOwotLy8gICBBU1NF
UlRfRkFMU0Uoc2VydmVyLkhhc1BlbmRpbmdSZXF1ZXN0KHBvcnQpKQotLy8gICAgICAgPDwgIlRo
ZXJlIGFyZSBzdGlsbCBwZW5kaW5nIHJlcXVlc3RzICIgPDwgIm9uIHBvcnQgIiA8PCBwb3J0Owog
CiAvLyBHZW5lcmF0ZXMgYSBub25mYXRhbCBmYWlsdXJlIHdpdGggYSBnZW5lcmljIG1lc3NhZ2Uu
CiAjZGVmaW5lIEFERF9GQUlMVVJFKCkgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8oIkZhaWxlZCIp
CiAKKy8vIEdlbmVyYXRlcyBhIG5vbmZhdGFsIGZhaWx1cmUgYXQgdGhlIGdpdmVuIHNvdXJjZSBm
aWxlIGxvY2F0aW9uIHdpdGgKKy8vIGEgZ2VuZXJpYyBtZXNzYWdlLgorI2RlZmluZSBBRERfRkFJ
TFVSRV9BVChmaWxlLCBsaW5lKSBcCisgIEdURVNUX01FU1NBR0VfQVRfKGZpbGUsIGxpbmUsICJG
YWlsZWQiLCBcCisgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ6
OmtOb25GYXRhbEZhaWx1cmUpCisKIC8vIEdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUgd2l0aCBh
IGdlbmVyaWMgbWVzc2FnZS4KICNkZWZpbmUgR1RFU1RfRkFJTCgpIEdURVNUX0ZBVEFMX0ZBSUxV
UkVfKCJGYWlsZWQiKQogCiAvLyBEZWZpbmUgdGhpcyBtYWNybyB0byAxIHRvIG9taXQgdGhlIGRl
ZmluaXRpb24gb2YgRkFJTCgpLCB3aGljaCBpcyBhCiAvLyBnZW5lcmljIG5hbWUgYW5kIGNsYXNo
ZXMgd2l0aCBzb21lIG90aGVyIGxpYnJhcmllcy4KICNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfRkFJ
TAotI2RlZmluZSBGQUlMKCkgR1RFU1RfRkFJTCgpCisjIGRlZmluZSBGQUlMKCkgR1RFU1RfRkFJ
TCgpCiAjZW5kaWYKIAogLy8gR2VuZXJhdGVzIGEgc3VjY2VzcyB3aXRoIGEgZ2VuZXJpYyBtZXNz
YWdlLgpAQCAtMTY2NSw3ICsxODc2LDcgQEAgY29uc3QgVCogVGVzdFdpdGhQYXJhbTxUPjo6cGFy
YW1ldGVyXyA9IE5VTEw7CiAvLyBEZWZpbmUgdGhpcyBtYWNybyB0byAxIHRvIG9taXQgdGhlIGRl
ZmluaXRpb24gb2YgU1VDQ0VFRCgpLCB3aGljaAogLy8gaXMgYSBnZW5lcmljIG5hbWUgYW5kIGNs
YXNoZXMgd2l0aCBzb21lIG90aGVyIGxpYnJhcmllcy4KICNpZiAhR1RFU1RfRE9OVF9ERUZJTkVf
U1VDQ0VFRAotI2RlZmluZSBTVUNDRUVEKCkgR1RFU1RfU1VDQ0VFRCgpCisjIGRlZmluZSBTVUND
RUVEKCkgR1RFU1RfU1VDQ0VFRCgpCiAjZW5kaWYKIAogLy8gTWFjcm9zIGZvciB0ZXN0aW5nIGV4
Y2VwdGlvbnMuCkBAIC0xNzA2LDE4ICsxOTE3LDE0IEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08
VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogICBHVEVTVF9URVNUX0JPT0xFQU5fKCEoY29uZGl0aW9u
KSwgI2NvbmRpdGlvbiwgdHJ1ZSwgZmFsc2UsIFwKICAgICAgICAgICAgICAgICAgICAgICBHVEVT
VF9GQVRBTF9GQUlMVVJFXykKIAotLy8gSW5jbHVkZXMgdGhlIGF1dG8tZ2VuZXJhdGVkIGhlYWRl
ciB0aGF0IGltcGxlbWVudHMgYSBmYW1pbHkgb2YKLS8vIGdlbmVyaWMgcHJlZGljYXRlIGFzc2Vy
dGlvbiBtYWNyb3MuCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmg+Ci0KIC8vIE1h
Y3JvcyBmb3IgdGVzdGluZyBlcXVhbGl0aWVzIGFuZCBpbmVxdWFsaXRpZXMuCiAvLwotLy8gICAg
KiB7QVNTRVJUfEVYUEVDVH1fRVEoZXhwZWN0ZWQsIGFjdHVhbCk6IFRlc3RzIHRoYXQgZXhwZWN0
ZWQgPT0gYWN0dWFsCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9ORSh2MSwgdjIpOiAgICAgICAg
ICAgVGVzdHMgdGhhdCB2MSAhPSB2MgotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTFQodjEsIHYy
KTogICAgICAgICAgIFRlc3RzIHRoYXQgdjEgPCB2MgotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1f
TEUodjEsIHYyKTogICAgICAgICAgIFRlc3RzIHRoYXQgdjEgPD0gdjIKLS8vICAgICoge0FTU0VS
VHxFWFBFQ1R9X0dUKHYxLCB2Mik6ICAgICAgICAgICBUZXN0cyB0aGF0IHYxID4gdjIKLS8vICAg
ICoge0FTU0VSVHxFWFBFQ1R9X0dFKHYxLCB2Mik6ICAgICAgICAgICBUZXN0cyB0aGF0IHYxID49
IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9FUSh2MSwgdjIpOiBUZXN0cyB0aGF0IHYxID09
IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9ORSh2MSwgdjIpOiBUZXN0cyB0aGF0IHYxICE9
IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9MVCh2MSwgdjIpOiBUZXN0cyB0aGF0IHYxIDwg
djIKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0xFKHYxLCB2Mik6IFRlc3RzIHRoYXQgdjEgPD0g
djIKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0dUKHYxLCB2Mik6IFRlc3RzIHRoYXQgdjEgPiB2
MgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fR0UodjEsIHYyKTogVGVzdHMgdGhhdCB2MSA+PSB2
MgogLy8KIC8vIFdoZW4gdGhleSBhcmUgbm90LCBHb29nbGUgVGVzdCBwcmludHMgYm90aCB0aGUg
dGVzdGVkIGV4cHJlc3Npb25zIGFuZAogLy8gdGhlaXIgYWN0dWFsIHZhbHVlcy4gIFRoZSB2YWx1
ZXMgbXVzdCBiZSBjb21wYXRpYmxlIGJ1aWx0LWluIHR5cGVzLApAQCAtMTczOSw4ICsxOTQ2LDgg
QEAgY29uc3QgVCogVGVzdFdpdGhQYXJhbTxUPjo6cGFyYW1ldGVyXyA9IE5VTEw7CiAvLyAgIGFy
ZSByZWxhdGVkLCBub3QgaG93IHRoZWlyIGNvbnRlbnQgaXMgcmVsYXRlZC4gIFRvIGNvbXBhcmUg
dHdvIEMKIC8vICAgc3RyaW5ncyBieSBjb250ZW50LCB1c2Uge0FTU0VSVHxFWFBFQ1R9X1NUUioo
KS4KIC8vCi0vLyAgIDMuIHtBU1NFUlR8RVhQRUNUfV9FUShleHBlY3RlZCwgYWN0dWFsKSBpcyBw
cmVmZXJyZWQgdG8KLS8vICAge0FTU0VSVHxFWFBFQ1R9X1RSVUUoZXhwZWN0ZWQgPT0gYWN0dWFs
KSwgYXMgdGhlIGZvcm1lciB0ZWxscyB5b3UKKy8vICAgMy4ge0FTU0VSVHxFWFBFQ1R9X0VRKHYx
LCB2MikgaXMgcHJlZmVycmVkIHRvCisvLyAgIHtBU1NFUlR8RVhQRUNUfV9UUlVFKHYxID09IHYy
KSwgYXMgdGhlIGZvcm1lciB0ZWxscyB5b3UKIC8vICAgd2hhdCB0aGUgYWN0dWFsIHZhbHVlIGlz
IHdoZW4gaXQgZmFpbHMsIGFuZCBzaW1pbGFybHkgZm9yIHRoZQogLy8gICBvdGhlciBjb21wYXJp
c29ucy4KIC8vCkBAIC0xNzUxLDE3ICsxOTU4LDE3IEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08
VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogLy8KIC8vIEV4YW1wbGVzOgogLy8KLS8vICAgRVhQRUNU
X05FKDUsIEZvbygpKTsKLS8vICAgRVhQRUNUX0VRKE5VTEwsIGFfcG9pbnRlcik7CisvLyAgIEVY
UEVDVF9ORShGb28oKSwgNSk7CisvLyAgIEVYUEVDVF9FUShhX3BvaW50ZXIsIE5VTEwpOwogLy8g
ICBBU1NFUlRfTFQoaSwgYXJyYXlfc2l6ZSk7CiAvLyAgIEFTU0VSVF9HVChyZWNvcmRzLnNpemUo
KSwgMCkgPDwgIlRoZXJlIGlzIG5vIHJlY29yZCBsZWZ0LiI7CiAKLSNkZWZpbmUgRVhQRUNUX0VR
KGV4cGVjdGVkLCBhY3R1YWwpIFwKKyNkZWZpbmUgRVhQRUNUX0VRKHZhbDEsIHZhbDIpIFwKICAg
RVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjogXAotICAgICAgICAgICAg
ICAgICAgICAgIEVxSGVscGVyPEdURVNUX0lTX05VTExfTElURVJBTF8oZXhwZWN0ZWQpPjo6Q29t
cGFyZSwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLCBhY3R1YWwpCi0jZGVmaW5l
IEVYUEVDVF9ORShleHBlY3RlZCwgYWN0dWFsKSBcCi0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0
ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyTkUsIGV4cGVjdGVkLCBhY3R1YWwpCisgICAgICAg
ICAgICAgICAgICAgICAgRXFIZWxwZXI8R1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh2YWwxKT46OkNv
bXBhcmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICB2YWwxLCB2YWwyKQorI2RlZmluZSBFWFBF
Q1RfTkUodmFsMSwgdmFsMikgXAorICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkNtcEhlbHBlck5FLCB2YWwxLCB2YWwyKQogI2RlZmluZSBFWFBFQ1RfTEUodmFsMSwg
dmFsMikgXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhl
bHBlckxFLCB2YWwxLCB2YWwyKQogI2RlZmluZSBFWFBFQ1RfTFQodmFsMSwgdmFsMikgXApAQCAt
MTc3MSwyMiArMTk3OCw0OSBAQCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJf
ID0gTlVMTDsKICNkZWZpbmUgRVhQRUNUX0dUKHZhbDEsIHZhbDIpIFwKICAgRVhQRUNUX1BSRURf
Rk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJHVCwgdmFsMSwgdmFsMikKIAot
I2RlZmluZSBBU1NFUlRfRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAorI2RlZmluZSBHVEVTVF9BU1NF
UlRfRVEodmFsMSwgdmFsMikgXAogICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50
ZXJuYWw6OiBcCi0gICAgICAgICAgICAgICAgICAgICAgRXFIZWxwZXI8R1RFU1RfSVNfTlVMTF9M
SVRFUkFMXyhleHBlY3RlZCk+OjpDb21wYXJlLCBcCi0gICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0ZWQsIGFjdHVhbCkKLSNkZWZpbmUgQVNTRVJUX05FKHZhbDEsIHZhbDIpIFwKKyAgICAgICAg
ICAgICAgICAgICAgICBFcUhlbHBlcjxHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHZhbDEpPjo6Q29t
cGFyZSwgXAorICAgICAgICAgICAgICAgICAgICAgIHZhbDEsIHZhbDIpCisjZGVmaW5lIEdURVNU
X0FTU0VSVF9ORSh2YWwxLCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5n
OjppbnRlcm5hbDo6Q21wSGVscGVyTkUsIHZhbDEsIHZhbDIpCi0jZGVmaW5lIEFTU0VSVF9MRSh2
YWwxLCB2YWwyKSBcCisjZGVmaW5lIEdURVNUX0FTU0VSVF9MRSh2YWwxLCB2YWwyKSBcCiAgIEFT
U0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyTEUsIHZhbDEs
IHZhbDIpCi0jZGVmaW5lIEFTU0VSVF9MVCh2YWwxLCB2YWwyKSBcCisjZGVmaW5lIEdURVNUX0FT
U0VSVF9MVCh2YWwxLCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6Q21wSGVscGVyTFQsIHZhbDEsIHZhbDIpCi0jZGVmaW5lIEFTU0VSVF9HRSh2YWwx
LCB2YWwyKSBcCisjZGVmaW5lIEdURVNUX0FTU0VSVF9HRSh2YWwxLCB2YWwyKSBcCiAgIEFTU0VS
VF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyR0UsIHZhbDEsIHZh
bDIpCi0jZGVmaW5lIEFTU0VSVF9HVCh2YWwxLCB2YWwyKSBcCisjZGVmaW5lIEdURVNUX0FTU0VS
VF9HVCh2YWwxLCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRl
cm5hbDo6Q21wSGVscGVyR1QsIHZhbDEsIHZhbDIpCiAKLS8vIEMgU3RyaW5nIENvbXBhcmlzb25z
LiAgQWxsIHRlc3RzIHRyZWF0IE5VTEwgYW5kIGFueSBub24tTlVMTCBzdHJpbmcKKy8vIERlZmlu
ZSBtYWNybyBHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfWFkgdG8gMSB0byBvbWl0IHRoZSBkZWZp
bml0aW9uIG9mCisvLyBBU1NFUlRfWFkoKSwgd2hpY2ggY2xhc2hlcyB3aXRoIHNvbWUgdXNlcnMn
IG93biBjb2RlLgorCisjaWYgIUdURVNUX0RPTlRfREVGSU5FX0FTU0VSVF9FUQorIyBkZWZpbmUg
QVNTRVJUX0VRKHZhbDEsIHZhbDIpIEdURVNUX0FTU0VSVF9FUSh2YWwxLCB2YWwyKQorI2VuZGlm
CisKKyNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX05FCisjIGRlZmluZSBBU1NFUlRfTkUo
dmFsMSwgdmFsMikgR1RFU1RfQVNTRVJUX05FKHZhbDEsIHZhbDIpCisjZW5kaWYKKworI2lmICFH
VEVTVF9ET05UX0RFRklORV9BU1NFUlRfTEUKKyMgZGVmaW5lIEFTU0VSVF9MRSh2YWwxLCB2YWwy
KSBHVEVTVF9BU1NFUlRfTEUodmFsMSwgdmFsMikKKyNlbmRpZgorCisjaWYgIUdURVNUX0RPTlRf
REVGSU5FX0FTU0VSVF9MVAorIyBkZWZpbmUgQVNTRVJUX0xUKHZhbDEsIHZhbDIpIEdURVNUX0FT
U0VSVF9MVCh2YWwxLCB2YWwyKQorI2VuZGlmCisKKyNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfQVNT
RVJUX0dFCisjIGRlZmluZSBBU1NFUlRfR0UodmFsMSwgdmFsMikgR1RFU1RfQVNTRVJUX0dFKHZh
bDEsIHZhbDIpCisjZW5kaWYKKworI2lmICFHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfR1QKKyMg
ZGVmaW5lIEFTU0VSVF9HVCh2YWwxLCB2YWwyKSBHVEVTVF9BU1NFUlRfR1QodmFsMSwgdmFsMikK
KyNlbmRpZgorCisvLyBDLXN0cmluZyBDb21wYXJpc29ucy4gIEFsbCB0ZXN0cyB0cmVhdCBOVUxM
IGFuZCBhbnkgbm9uLU5VTEwgc3RyaW5nCiAvLyBhcyBkaWZmZXJlbnQuICBUd28gTlVMTHMgYXJl
IGVxdWFsLgogLy8KIC8vICAgICoge0FTU0VSVHxFWFBFQ1R9X1NUUkVRKHMxLCBzMik6ICAgICBU
ZXN0cyB0aGF0IHMxID09IHMyCkBAIC0xODAyLDI5ICsyMDM2LDI5IEBAIGNvbnN0IFQqIFRlc3RX
aXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogLy8KIC8vIFRoZXNlIG1hY3JvcyBldmFs
dWF0ZSB0aGVpciBhcmd1bWVudHMgZXhhY3RseSBvbmNlLgogCi0jZGVmaW5lIEVYUEVDVF9TVFJF
UShleHBlY3RlZCwgYWN0dWFsKSBcCi0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6Q21wSGVscGVyU1RSRVEsIGV4cGVjdGVkLCBhY3R1YWwpCisjZGVmaW5lIEVYUEVD
VF9TVFJFUShzMSwgczIpIFwKKyAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVy
bmFsOjpDbXBIZWxwZXJTVFJFUSwgczEsIHMyKQogI2RlZmluZSBFWFBFQ1RfU1RSTkUoczEsIHMy
KSBcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVy
U1RSTkUsIHMxLCBzMikKLSNkZWZpbmUgRVhQRUNUX1NUUkNBU0VFUShleHBlY3RlZCwgYWN0dWFs
KSBcCi0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVy
U1RSQ0FTRUVRLCBleHBlY3RlZCwgYWN0dWFsKQorI2RlZmluZSBFWFBFQ1RfU1RSQ0FTRUVRKHMx
LCBzMikgXAorICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhl
bHBlclNUUkNBU0VFUSwgczEsIHMyKQogI2RlZmluZSBFWFBFQ1RfU1RSQ0FTRU5FKHMxLCBzMilc
CiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RS
Q0FTRU5FLCBzMSwgczIpCiAKLSNkZWZpbmUgQVNTRVJUX1NUUkVRKGV4cGVjdGVkLCBhY3R1YWwp
IFwKLSAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJT
VFJFUSwgZXhwZWN0ZWQsIGFjdHVhbCkKKyNkZWZpbmUgQVNTRVJUX1NUUkVRKHMxLCBzMikgXAor
ICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkVR
LCBzMSwgczIpCiAjZGVmaW5lIEFTU0VSVF9TVFJORShzMSwgczIpIFwKICAgQVNTRVJUX1BSRURf
Rk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJORSwgczEsIHMyKQotI2Rl
ZmluZSBBU1NFUlRfU1RSQ0FTRUVRKGV4cGVjdGVkLCBhY3R1YWwpIFwKLSAgQVNTRVJUX1BSRURf
Rk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJDQVNFRVEsIGV4cGVjdGVk
LCBhY3R1YWwpCisjZGVmaW5lIEFTU0VSVF9TVFJDQVNFRVEoczEsIHMyKSBcCisgIEFTU0VSVF9Q
UkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSQ0FTRUVRLCBzMSwg
czIpCiAjZGVmaW5lIEFTU0VSVF9TVFJDQVNFTkUoczEsIHMyKVwKICAgQVNTRVJUX1BSRURfRk9S
TUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJDQVNFTkUsIHMxLCBzMikKIAog
Ly8gTWFjcm9zIGZvciBjb21wYXJpbmcgZmxvYXRpbmctcG9pbnQgbnVtYmVycy4KIC8vCi0vLyAg
ICAqIHtBU1NFUlR8RVhQRUNUfV9GTE9BVF9FUShleHBlY3RlZCwgYWN0dWFsKToKKy8vICAgICog
e0FTU0VSVHxFWFBFQ1R9X0ZMT0FUX0VRKHZhbDEsIHZhbDIpOgogLy8gICAgICAgICBUZXN0cyB0
aGF0IHR3byBmbG9hdCB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbC4KLS8vICAgICoge0FTU0VSVHxF
WFBFQ1R9X0RPVUJMRV9FUShleHBlY3RlZCwgYWN0dWFsKToKKy8vICAgICoge0FTU0VSVHxFWFBF
Q1R9X0RPVUJMRV9FUSh2YWwxLCB2YWwyKToKIC8vICAgICAgICAgVGVzdHMgdGhhdCB0d28gZG91
YmxlIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsLgogLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTkVB
Uih2MSwgdjIsIGFic19lcnJvcik6CiAvLyAgICAgICAgIFRlc3RzIHRoYXQgdjEgYW5kIHYyIGFy
ZSB3aXRoaW4gdGhlIGdpdmVuIGRpc3RhbmNlIHRvIGVhY2ggb3RoZXIuCkBAIC0xODM0LDIxICsy
MDY4LDIxIEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwog
Ly8gRmxvYXRpbmdQb2ludCB0ZW1wbGF0ZSBjbGFzcyBpbiBndGVzdC1pbnRlcm5hbC5oIGlmIHlv
dSBhcmUKIC8vIGludGVyZXN0ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCiAKLSNk
ZWZpbmUgRVhQRUNUX0ZMT0FUX0VRKGV4cGVjdGVkLCBhY3R1YWwpXAorI2RlZmluZSBFWFBFQ1Rf
RkxPQVRfRVEodmFsMSwgdmFsMilcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6Q21wSGVscGVyRmxvYXRpbmdQb2ludEVRPGZsb2F0PiwgXAotICAgICAgICAgICAg
ICAgICAgICAgIGV4cGVjdGVkLCBhY3R1YWwpCisgICAgICAgICAgICAgICAgICAgICAgdmFsMSwg
dmFsMikKIAotI2RlZmluZSBFWFBFQ1RfRE9VQkxFX0VRKGV4cGVjdGVkLCBhY3R1YWwpXAorI2Rl
ZmluZSBFWFBFQ1RfRE9VQkxFX0VRKHZhbDEsIHZhbDIpXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckZsb2F0aW5nUG9pbnRFUTxkb3VibGU+LCBc
Ci0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQsIGFjdHVhbCkKKyAgICAgICAgICAgICAg
ICAgICAgICB2YWwxLCB2YWwyKQogCi0jZGVmaW5lIEFTU0VSVF9GTE9BVF9FUShleHBlY3RlZCwg
YWN0dWFsKVwKKyNkZWZpbmUgQVNTRVJUX0ZMT0FUX0VRKHZhbDEsIHZhbDIpXAogICBBU1NFUlRf
UFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckZsb2F0aW5nUG9pbnRF
UTxmbG9hdD4sIFwKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwgYWN0dWFsKQorICAg
ICAgICAgICAgICAgICAgICAgIHZhbDEsIHZhbDIpCiAKLSNkZWZpbmUgQVNTRVJUX0RPVUJMRV9F
UShleHBlY3RlZCwgYWN0dWFsKVwKKyNkZWZpbmUgQVNTRVJUX0RPVUJMRV9FUSh2YWwxLCB2YWwy
KVwKICAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJG
bG9hdGluZ1BvaW50RVE8ZG91YmxlPiwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
LCBhY3R1YWwpCisgICAgICAgICAgICAgICAgICAgICAgdmFsMSwgdmFsMikKIAogI2RlZmluZSBF
WFBFQ1RfTkVBUih2YWwxLCB2YWwyLCBhYnNfZXJyb3IpXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQz
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkRvdWJsZU5lYXJQcmVkRm9ybWF0LCBcCkBAIC0xODgyLDE2
ICsyMTE2LDE2IEBAIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IERvdWJsZUxFKGNvbnN0IGNo
YXIqIGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwKIC8vIGV4cGVjdGVkIHJlc3VsdCBhbmQgdGhl
IGFjdHVhbCByZXN1bHQgd2l0aCBib3RoIGEgaHVtYW4tcmVhZGFibGUKIC8vIHN0cmluZyByZXBy
ZXNlbnRhdGlvbiBvZiB0aGUgZXJyb3IsIGlmIGF2YWlsYWJsZSwgYXMgd2VsbCBhcyB0aGUKIC8v
IGhleCByZXN1bHQgY29kZS4KLSNkZWZpbmUgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKGV4cHIp
IFwKKyMgZGVmaW5lIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChleHByKSBcCiAgICAgRVhQRUNU
X1BSRURfRk9STUFUMSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hSRVNVTFRTdWNjZXNzLCAoZXhw
cikpCiAKLSNkZWZpbmUgQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKGV4cHIpIFwKKyMgZGVmaW5l
IEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChleHByKSBcCiAgICAgQVNTRVJUX1BSRURfRk9STUFU
MSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hSRVNVTFRTdWNjZXNzLCAoZXhwcikpCiAKLSNkZWZp
bmUgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKGV4cHIpIFwKKyMgZGVmaW5lIEVYUEVDVF9IUkVTVUxU
X0ZBSUxFRChleHByKSBcCiAgICAgRVhQRUNUX1BSRURfRk9STUFUMSg6OnRlc3Rpbmc6OmludGVy
bmFsOjpJc0hSRVNVTFRGYWlsdXJlLCAoZXhwcikpCiAKLSNkZWZpbmUgQVNTRVJUX0hSRVNVTFRf
RkFJTEVEKGV4cHIpIFwKKyMgZGVmaW5lIEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChleHByKSBcCiAg
ICAgQVNTRVJUX1BSRURfRk9STUFUMSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hSRVNVTFRGYWls
dXJlLCAoZXhwcikpCiAKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwpAQCAtMTkxMSw2ICsy
MTQ1LDU3IEBAIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IERvdWJsZUxFKGNvbnN0IGNoYXIq
IGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwKICNkZWZpbmUgRVhQRUNUX05PX0ZBVEFMX0ZBSUxV
UkUoc3RhdGVtZW50KSBcCiAgICAgR1RFU1RfVEVTVF9OT19GQVRBTF9GQUlMVVJFXyhzdGF0ZW1l
bnQsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVfKQogCisvLyBDYXVzZXMgYSB0cmFjZSAoaW5jbHVk
aW5nIHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBwYXRoIGFuZCBsaW5lIG51bWJlciwKKy8vIGFuZCB0
aGUgZ2l2ZW4gbWVzc2FnZSkgdG8gYmUgaW5jbHVkZWQgaW4gZXZlcnkgdGVzdCBmYWlsdXJlIG1l
c3NhZ2UgZ2VuZXJhdGVkCisvLyBieSBjb2RlIGluIHRoZSBzY29wZSBvZiB0aGUgbGlmZXRpbWUg
b2YgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy4gVGhlIGVmZmVjdAorLy8gaXMgdW5kb25lIHdp
dGggdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZS4KKy8vCisvLyBUaGUgbWVzc2FnZSBh
cmd1bWVudCBjYW4gYmUgYW55dGhpbmcgc3RyZWFtYWJsZSB0byBzdGQ6Om9zdHJlYW0uCisvLwor
Ly8gRXhhbXBsZToKKy8vICAgdGVzdGluZzo6U2NvcGVkVHJhY2UgdHJhY2UoImZpbGUuY2MiLCAx
MjMsICJtZXNzYWdlIik7CisvLworY2xhc3MgR1RFU1RfQVBJXyBTY29wZWRUcmFjZSB7CisgcHVi
bGljOgorICAvLyBUaGUgYyd0b3IgcHVzaGVzIHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlv
biBhbmQgbWVzc2FnZSBvbnRvCisgIC8vIGEgdHJhY2Ugc3RhY2sgbWFpbnRhaW5lZCBieSBHb29n
bGUgVGVzdC4KKworICAvLyBUZW1wbGF0ZSB2ZXJzaW9uLiBVc2VzIE1lc3NhZ2UoKSB0byBjb252
ZXJ0IHRoZSB2YWx1ZXMgaW50byBzdHJpbmdzLgorICAvLyBTbG93LCBidXQgZmxleGlibGUuCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBTY29wZWRUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBp
bnQgbGluZSwgY29uc3QgVCYgbWVzc2FnZSkgeworICAgIFB1c2hUcmFjZShmaWxlLCBsaW5lLCAo
TWVzc2FnZSgpIDw8IG1lc3NhZ2UpLkdldFN0cmluZygpKTsKKyAgfQorCisgIC8vIE9wdGltaXpl
IGZvciBzb21lIGtub3duIHR5cGVzLgorICBTY29wZWRUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBp
bnQgbGluZSwgY29uc3QgY2hhciogbWVzc2FnZSkgeworICAgIFB1c2hUcmFjZShmaWxlLCBsaW5l
LCBtZXNzYWdlID8gbWVzc2FnZSA6ICIobnVsbCkiKTsKKyAgfQorCisjaWYgR1RFU1RfSEFTX0dM
T0JBTF9TVFJJTkcKKyAgU2NvcGVkVHJhY2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNv
bnN0IDo6c3RyaW5nJiBtZXNzYWdlKSB7CisgICAgUHVzaFRyYWNlKGZpbGUsIGxpbmUsIG1lc3Nh
Z2UpOworICB9CisjZW5kaWYKKworICBTY29wZWRUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBpbnQg
bGluZSwgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsKKyAgICBQdXNoVHJhY2UoZmlsZSwg
bGluZSwgbWVzc2FnZSk7CisgIH0KKworICAvLyBUaGUgZCd0b3IgcG9wcyB0aGUgaW5mbyBwdXNo
ZWQgYnkgdGhlIGMndG9yLgorICAvLworICAvLyBOb3RlIHRoYXQgdGhlIGQndG9yIGlzIG5vdCB2
aXJ0dWFsIGluIG9yZGVyIHRvIGJlIGVmZmljaWVudC4KKyAgLy8gRG9uJ3QgaW5oZXJpdCBmcm9t
IFNjb3BlZFRyYWNlIQorICB+U2NvcGVkVHJhY2UoKTsKKworIHByaXZhdGU6CisgIHZvaWQgUHVz
aFRyYWNlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBzdGQ6OnN0cmluZyBtZXNzYWdlKTsK
KworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNjb3BlZFRyYWNlKTsKK30gR1RF
U1RfQVRUUklCVVRFX1VOVVNFRF87ICAvLyBBIFNjb3BlZFRyYWNlIG9iamVjdCBkb2VzIGl0cyBq
b2IgaW4gaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYyd0b3IgYW5kIGQndG9y
LiAgVGhlcmVmb3JlIGl0IGRvZXNuJ3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBu
ZWVkIHRvIGJlIHVzZWQgb3RoZXJ3aXNlLgorCiAvLyBDYXVzZXMgYSB0cmFjZSAoaW5jbHVkaW5n
IHRoZSBzb3VyY2UgZmlsZSBwYXRoLCB0aGUgY3VycmVudCBsaW5lCiAvLyBudW1iZXIsIGFuZCB0
aGUgZ2l2ZW4gbWVzc2FnZSkgdG8gYmUgaW5jbHVkZWQgaW4gZXZlcnkgdGVzdCBmYWlsdXJlCiAv
LyBtZXNzYWdlIGdlbmVyYXRlZCBieSBjb2RlIGluIHRoZSBjdXJyZW50IHNjb3BlLiAgVGhlIGVm
ZmVjdCBpcwpAQCAtMTkyMiwyMCArMjIwNywxNCBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3Vs
dCBEb3VibGVMRShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIsCiAvLyBvZiB0
aGUgZHVtbXkgdmFyaWFibGUgbmFtZSwgdGh1cyBhbGxvd2luZyBtdWx0aXBsZSBTQ09QRURfVFJB
Q0UoKXMKIC8vIHRvIGFwcGVhciBpbiB0aGUgc2FtZSBibG9jayAtIGFzIGxvbmcgYXMgdGhleSBh
cmUgb24gZGlmZmVyZW50CiAvLyBsaW5lcy4KKy8vCisvLyBBc3N1bWluZyB0aGF0IGVhY2ggdGhy
ZWFkIG1haW50YWlucyBpdHMgb3duIHN0YWNrIG9mIHRyYWNlcy4KKy8vIFRoZXJlZm9yZSwgYSBT
Q09QRURfVFJBQ0UoKSB3b3VsZCAoY29ycmVjdGx5KSBvbmx5IGFmZmVjdCB0aGUKKy8vIGFzc2Vy
dGlvbnMgaW4gaXRzIG93biB0aHJlYWQuCiAjZGVmaW5lIFNDT1BFRF9UUkFDRShtZXNzYWdlKSBc
Ci0gIDo6dGVzdGluZzo6aW50ZXJuYWw6OlNjb3BlZFRyYWNlIEdURVNUX0NPTkNBVF9UT0tFTl8o
Z3Rlc3RfdHJhY2VfLCBfX0xJTkVfXykoXAotICAgIF9fRklMRV9fLCBfX0xJTkVfXywgOjp0ZXN0
aW5nOjpNZXNzYWdlKCkgPDwgKG1lc3NhZ2UpKQotCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0v
LyBUaGlzIHRlbXBsYXRlIGlzIGRlY2xhcmVkLCBidXQgaW50ZW50aW9uYWxseSB1bmRlZmluZWQu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotc3RydWN0IFN0YXRpY0Fzc2Vy
dFR5cGVFcUhlbHBlcjsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgU3RhdGljQXNz
ZXJ0VHlwZUVxSGVscGVyPFQsIFQ+IHt9OworICA6OnRlc3Rpbmc6OlNjb3BlZFRyYWNlIEdURVNU
X0NPTkNBVF9UT0tFTl8oZ3Rlc3RfdHJhY2VfLCBfX0xJTkVfXykoXAorICAgIF9fRklMRV9fLCBf
X0xJTkVfXywgKG1lc3NhZ2UpKQogCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAogLy8gQ29t
cGlsZS10aW1lIGFzc2VydGlvbiBmb3IgdHlwZSBlcXVhbGl0eS4KIC8vIFN0YXRpY0Fzc2VydFR5
cGVFcTx0eXBlMSwgdHlwZTI+KCkgY29tcGlsZXMgaWZmIHR5cGUxIGFuZCB0eXBlMiBhcmUKQEAg
LTE5NjksNyArMjI0OCw3IEBAIHN0cnVjdCBTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI8VCwgVD4g
e307CiAvLyB0byBjYXVzZSBhIGNvbXBpbGVyIGVycm9yLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMj4KIGJvb2wgU3RhdGljQXNzZXJ0VHlwZUVxKCkgewotICBpbnRlcm5hbDo6
U3RhdGljQXNzZXJ0VHlwZUVxSGVscGVyPFQxLCBUMj4oKTsKKyAgKHZvaWQpaW50ZXJuYWw6OlN0
YXRpY0Fzc2VydFR5cGVFcUhlbHBlcjxUMSwgVDI+KCk7CiAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0xOTgxLDggKzIyNjAsOCBAQCBib29sIFN0YXRpY0Fzc2VydFR5cGVFcSgpIHsKIC8vIFRoZSBj
b252ZW50aW9uIGlzIHRvIGVuZCB0aGUgdGVzdCBjYXNlIG5hbWUgd2l0aCAiVGVzdCIuICBGb3IK
IC8vIGV4YW1wbGUsIGEgdGVzdCBjYXNlIGZvciB0aGUgRm9vIGNsYXNzIGNhbiBiZSBuYW1lZCBG
b29UZXN0LgogLy8KLS8vIFRoZSB1c2VyIHNob3VsZCBwdXQgaGlzIHRlc3QgY29kZSBiZXR3ZWVu
IGJyYWNlcyBhZnRlciB1c2luZyB0aGlzCi0vLyBtYWNyby4gIEV4YW1wbGU6CisvLyBUZXN0IGNv
ZGUgc2hvdWxkIGFwcGVhciBiZXR3ZWVuIGJyYWNlcyBhZnRlciBhbiBpbnZvY2F0aW9uIG9mCisv
LyB0aGlzIG1hY3JvLiAgRXhhbXBsZToKIC8vCiAvLyAgIFRFU1QoRm9vVGVzdCwgSW5pdGlhbGl6
ZXNDb3JyZWN0bHkpIHsKIC8vICAgICBGb28gZm9vOwpAQCAtMjAwNSw3ICsyMjg0LDcgQEAgYm9v
bCBTdGF0aWNBc3NlcnRUeXBlRXEoKSB7CiAvLyBEZWZpbmUgdGhpcyBtYWNybyB0byAxIHRvIG9t
aXQgdGhlIGRlZmluaXRpb24gb2YgVEVTVCgpLCB3aGljaAogLy8gaXMgYSBnZW5lcmljIG5hbWUg
YW5kIGNsYXNoZXMgd2l0aCBzb21lIG90aGVyIGxpYnJhcmllcy4KICNpZiAhR1RFU1RfRE9OVF9E
RUZJTkVfVEVTVAotI2RlZmluZSBURVNUKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIEdURVNU
X1RFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkKKyMgZGVmaW5lIFRFU1QodGVzdF9jYXNl
X25hbWUsIHRlc3RfbmFtZSkgR1RFU1RfVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKQog
I2VuZGlmCiAKIC8vIERlZmluZXMgYSB0ZXN0IHRoYXQgdXNlcyBhIHRlc3QgZml4dHVyZS4KQEAg
LTIwMTUsNyArMjI5NCw3IEBAIGJvb2wgU3RhdGljQXNzZXJ0VHlwZUVxKCkgewogLy8gbmFtZSBv
ZiB0aGUgdGVzdCB3aXRoaW4gdGhlIHRlc3QgY2FzZS4KIC8vCiAvLyBBIHRlc3QgZml4dHVyZSBj
bGFzcyBtdXN0IGJlIGRlY2xhcmVkIGVhcmxpZXIuICBUaGUgdXNlciBzaG91bGQgcHV0Ci0vLyBo
aXMgdGVzdCBjb2RlIGJldHdlZW4gYnJhY2VzIGFmdGVyIHVzaW5nIHRoaXMgbWFjcm8uICBFeGFt
cGxlOgorLy8gdGhlIHRlc3QgY29kZSBiZXR3ZWVuIGJyYWNlcyBhZnRlciB1c2luZyB0aGlzIG1h
Y3JvLiAgRXhhbXBsZToKIC8vCiAvLyAgIGNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7CiAvLyAgICBwcm90ZWN0ZWQ6CkBAIC0yMDMwLDIzICsyMzA5LDM4IEBAIGJvb2wgU3Rh
dGljQXNzZXJ0VHlwZUVxKCkgewogLy8gICB9CiAvLwogLy8gICBURVNUX0YoRm9vVGVzdCwgUmV0
dXJuc0VsZW1lbnRDb3VudENvcnJlY3RseSkgewotLy8gICAgIEVYUEVDVF9FUSgwLCBhXy5zaXpl
KCkpOwotLy8gICAgIEVYUEVDVF9FUSgxLCBiXy5zaXplKCkpOworLy8gICAgIEVYUEVDVF9FUShh
Xy5zaXplKCksIDApOworLy8gICAgIEVYUEVDVF9FUShiXy5zaXplKCksIDEpOwogLy8gICB9CiAK
ICNkZWZpbmUgVEVTVF9GKHRlc3RfZml4dHVyZSwgdGVzdF9uYW1lKVwKICAgR1RFU1RfVEVTVF8o
dGVzdF9maXh0dXJlLCB0ZXN0X25hbWUsIHRlc3RfZml4dHVyZSwgXAogICAgICAgICAgICAgICA6
OnRlc3Rpbmc6OmludGVybmFsOjpHZXRUeXBlSWQ8dGVzdF9maXh0dXJlPigpKQogCi0vLyBVc2Ug
dGhpcyBtYWNybyBpbiBtYWluKCkgdG8gcnVuIGFsbCB0ZXN0cy4gIEl0IHJldHVybnMgMCBpZiBh
bGwKKy8vIFJldHVybnMgYSBwYXRoIHRvIHRlbXBvcmFyeSBkaXJlY3RvcnkuCisvLyBUcmllcyB0
byBkZXRlcm1pbmUgYW4gYXBwcm9wcmlhdGUgZGlyZWN0b3J5IGZvciB0aGUgcGxhdGZvcm0uCitH
VEVTVF9BUElfIHN0ZDo6c3RyaW5nIFRlbXBEaXIoKTsKKworI2lmZGVmIF9NU0NfVkVSCisjICBw
cmFnbWEgd2FybmluZyhwb3ApCisjZW5kaWYKKworfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKwor
Ly8gVXNlIHRoaXMgZnVuY3Rpb24gaW4gbWFpbigpIHRvIHJ1biBhbGwgdGVzdHMuICBJdCByZXR1
cm5zIDAgaWYgYWxsCiAvLyB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3IgMSBvdGhlcndpc2UuCiAv
LwogLy8gUlVOX0FMTF9URVNUUygpIHNob3VsZCBiZSBpbnZva2VkIGFmdGVyIHRoZSBjb21tYW5k
IGxpbmUgaGFzIGJlZW4KIC8vIHBhcnNlZCBieSBJbml0R29vZ2xlVGVzdCgpLgorLy8KKy8vIFRo
aXMgZnVuY3Rpb24gd2FzIGZvcm1lcmx5IGEgbWFjcm87IHRodXMsIGl0IGlzIGluIHRoZSBnbG9i
YWwKKy8vIG5hbWVzcGFjZSBhbmQgaGFzIGFuIGFsbC1jYXBzIG5hbWUuCitpbnQgUlVOX0FMTF9U
RVNUUygpIEdURVNUX01VU1RfVVNFX1JFU1VMVF87CiAKLSNkZWZpbmUgUlVOX0FMTF9URVNUUygp
XAotICAoOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+UnVuKCkpCitpbmxpbmUg
aW50IFJVTl9BTExfVEVTVFMoKSB7CisgIHJldHVybiA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5SdW4oKTsKK30KIAotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKK0dURVNUX0RJ
U0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQyNTEKIAogI2VuZGlmICAvLyBHVEVTVF9J
TkNMVURFX0dURVNUX0dURVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcmVkX2ltcGwuaAppbmRleCBlMWUyZjhjNGM4ODdhOGRl
ZmNiNzU4Y2EwY2FhYjNiN2NlYjlkNDFhLi4wYzExMDVjYjhlYjJlZjdjMjYxNmU2N2ZmNTU1NmFh
YjI5ZmYyZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmgKQEAgLTI3LDE4ICsyNywxOSBAQAogLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0vLyBUaGlzIGZpbGUgaXMgQVVUT01BVElDQUxMWSBH
RU5FUkFURUQgb24gMTAvMDIvMjAwOCBieSBjb21tYW5kCisvLyBUaGlzIGZpbGUgaXMgQVVUT01B
VElDQUxMWSBHRU5FUkFURUQgb24gMDEvMDIvMjAxOCBieSBjb21tYW5kCiAvLyAnZ2VuX2d0ZXN0
X3ByZWRfaW1wbC5weSA1Jy4gIERPIE5PVCBFRElUIEJZIEhBTkQhCiAvLwogLy8gSW1wbGVtZW50
cyBhIGZhbWlseSBvZiBnZW5lcmljIHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9zLgogCisvLyBH
T09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9H
VEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVT
VF9QUkVEX0lNUExfSF8KIAotLy8gTWFrZXMgc3VyZSB0aGlzIGhlYWRlciBpcyBub3QgaW5jbHVk
ZWQgYmVmb3JlIGd0ZXN0LmguCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8K
LSNlcnJvciBEbyBub3QgaW5jbHVkZSBndGVzdF9wcmVkX2ltcGwuaCBkaXJlY3RseS4gIEluY2x1
ZGUgZ3Rlc3QuaCBpbnN0ZWFkLgotI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNU
X0hfCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHRlc3RpbmcgewogCiAv
LyBUaGlzIGhlYWRlciBpbXBsZW1lbnRzIGEgZmFtaWx5IG9mIGdlbmVyaWMgcHJlZGljYXRlIGFz
c2VydGlvbgogLy8gbWFjcm9zOgpAQCAtNjYsOCArNjcsNiBAQAogLy8gV2UgYWxzbyBkZWZpbmUg
dGhlIEVYUEVDVF8qIHZhcmlhdGlvbnMuCiAvLwogLy8gRm9yIG5vdyB3ZSBvbmx5IHN1cHBvcnQg
cHJlZGljYXRlcyB3aG9zZSBhcml0eSBpcyBhdCBtb3N0IDUuCi0vLyBQbGVhc2UgZW1haWwgZ29v
Z2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tIGlmIHlvdSBuZWVkCi0vLyBzdXBwb3J0
IGZvciBoaWdoZXIgYXJpdGllcy4KIAogLy8gR1RFU1RfQVNTRVJUXyBpcyB0aGUgYmFzaWMgc3Rh
dGVtZW50IHRvIHdoaWNoIGFsbCBvZiB0aGUgYXNzZXJ0aW9ucwogLy8gaW4gdGhpcyBmaWxlIHJl
ZHVjZS4gIERvbid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KQEAgLTkwLDE3ICs4OSwxNSBAQCBB
c3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDFIZWxwZXIoY29uc3QgY2hhciogcHJlZF90ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiB2MSkgewogICBpZiAo
cHJlZCh2MSkpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0g
IG1zZyA8PCBwcmVkX3RleHQgPDwgIigiCi0gICAgICA8PCBlMSA8PCAiKSBldmFsdWF0ZXMgdG8g
ZmFsc2UsIHdoZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8
IHYxOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9u
RmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCBlMSA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MTsKIH0K
IAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJF
RF9GT1JNQVQxLgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVT
VF9QUkVEX0ZPUk1BVDFfKHByZWRfZm9ybWF0LCB2MSwgb25fZmFpbHVyZSlcCi0gIEdURVNUX0FT
U0VSVF8ocHJlZF9mb3JtYXQoI3YxLCB2MSksXAorICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0
KCN2MSwgdjEpLCBcCiAgICAgICAgICAgICAgICAgb25fZmFpbHVyZSkKIAogLy8gSW50ZXJuYWwg
bWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRDEuICBEb24ndCB1c2UK
QEAgLTEzNiwxOSArMTMzLDE3IEBAIEFzc2VydGlvblJlc3VsdCBBc3NlcnRQcmVkMkhlbHBlcihj
b25zdCBjaGFyKiBwcmVkX3RleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVDImIHYyKSB7CiAgIGlmIChwcmVkKHYxLCB2MikpIHJldHVybiBBc3NlcnRpb25TdWNj
ZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBwcmVkX3RleHQgPDwgIigiCi0gICAg
ICA8PCBlMSA8PCAiLCAiCi0gICAgICA8PCBlMiA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdo
ZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxCi0gICAg
ICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjI7Ci0gIHJldHVybiBBc3Nl
cnRpb25GYWlsdXJlKG1zZyk7CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgcHJlZF90
ZXh0IDw8ICIoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUxIDw8ICIsICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMiA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2Us
IHdoZXJlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBl
dmFsdWF0ZXMgdG8gIiA8PCB2MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIg
PDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MjsKIH0KIAogLy8gSW50ZXJuYWwgbWFjcm8g
Zm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQyLgogLy8gRG9uJ3Qg
dXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDJfKHByZWRf
Zm9ybWF0LCB2MSwgdjIsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0
KCN2MSwgI3YyLCB2MSwgdjIpLFwKKyAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2
MiwgdjEsIHYyKSwgXAogICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVybmFs
IG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQyLiAgRG9uJ3QgdXNl
CkBAIC0xODksMjEgKzE4NCwxOSBAQCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDNIZWxwZXIo
Y29uc3QgY2hhciogcHJlZF90ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFQzJiB2MykgewogICBpZiAocHJlZCh2MSwgdjIsIHYzKSkgcmV0dXJuIEFzc2VydGlv
blN1Y2Nlc3MoKTsKIAotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IHByZWRfdGV4dCA8PCAiKCIK
LSAgICAgIDw8IGUxIDw8ICIsICIKLSAgICAgIDw8IGUyIDw8ICIsICIKLSAgICAgIDw8IGUzIDw8
ICIpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmUiCi0gICAgICA8PCAiXG4iIDw8IGUxIDw8ICIg
ZXZhbHVhdGVzIHRvICIgPDwgdjEKLSAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0ZXMg
dG8gIiA8PCB2MgotICAgICAgPDwgIlxuIiA8PCBlMyA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYz
OwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFp
bHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
PCBlMSA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTIgPDwgIiwgIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUzIDw8ICIpIGV2YWx1YXRlcyB0byBmYWxz
ZSwgd2hlcmUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIiA8PCBlMSA8PCAi
IGV2YWx1YXRlcyB0byAiIDw8IHYxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxu
IiA8PCBlMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYyCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgIlxuIiA8PCBlMyA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYzOwogfQogCiAvLyBJ
bnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEX0ZPUk1B
VDMuCiAvLyBEb24ndCB1c2UgdGhpcyBpbiB5b3VyIGNvZGUuCiAjZGVmaW5lIEdURVNUX1BSRURf
Rk9STUFUM18ocHJlZF9mb3JtYXQsIHYxLCB2MiwgdjMsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9B
U1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAjdjMsIHYxLCB2MiwgdjMpLFwKKyAgR1RFU1Rf
QVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3YzLCB2MSwgdjIsIHYzKSwgXAogICAgICAg
ICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRp
bmcge0VYUEVDVHxBU1NFUlR9X1BSRUQzLiAgRG9uJ3QgdXNlCkBAIC0yNDksMjMgKzI0MiwyMSBA
QCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDRIZWxwZXIoY29uc3QgY2hhciogcHJlZF90ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQ0JiB2NCkgewogICBp
ZiAocHJlZCh2MSwgdjIsIHYzLCB2NCkpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAg
TWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBwcmVkX3RleHQgPDwgIigiCi0gICAgICA8PCBlMSA8PCAi
LCAiCi0gICAgICA8PCBlMiA8PCAiLCAiCi0gICAgICA8PCBlMyA8PCAiLCAiCi0gICAgICA8PCBl
NCA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8
PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxCi0gICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVh
dGVzIHRvICIgPDwgdjIKLSAgICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8
PCB2MwotICAgICAgPDwgIlxuIiA8PCBlNCA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHY0OwotICBy
ZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgp
IDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMSA8
PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTIgPDwgIiwgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8IGUzIDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCBlNCA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2
MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0
ZXMgdG8gIiA8PCB2MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTMg
PDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICJcbiIgPDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NDsKIH0KIAogLy8gSW50ZXJuYWwg
bWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQ0LgogLy8g
RG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDRf
KHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCB2NCwgb25fZmFpbHVyZSlcCi0gIEdURVNUX0FTU0VS
VF8ocHJlZF9mb3JtYXQoI3YxLCAjdjIsICN2MywgI3Y0LCB2MSwgdjIsIHYzLCB2NCksXAorICBH
VEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAjdjMsICN2NCwgdjEsIHYyLCB2Mywg
djQpLCBcCiAgICAgICAgICAgICAgICAgb25fZmFpbHVyZSkKIAogLy8gSW50ZXJuYWwgbWFjcm8g
Zm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRDQuICBEb24ndCB1c2UKQEAgLTMx
NiwyNSArMzA3LDIzIEBAIEFzc2VydGlvblJlc3VsdCBBc3NlcnRQcmVkNUhlbHBlcihjb25zdCBj
aGFyKiBwcmVkX3RleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VDUmIHY1KSB7CiAgIGlmIChwcmVkKHYxLCB2MiwgdjMsIHY0LCB2NSkpIHJldHVybiBBc3NlcnRp
b25TdWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBwcmVkX3RleHQgPDwgIigi
Ci0gICAgICA8PCBlMSA8PCAiLCAiCi0gICAgICA8PCBlMiA8PCAiLCAiCi0gICAgICA8PCBlMyA8
PCAiLCAiCi0gICAgICA8PCBlNCA8PCAiLCAiCi0gICAgICA8PCBlNSA8PCAiKSBldmFsdWF0ZXMg
dG8gZmFsc2UsIHdoZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAi
IDw8IHYxCi0gICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjIKLSAg
ICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MwotICAgICAgPDwgIlxu
IiA8PCBlNCA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHY0Ci0gICAgICA8PCAiXG4iIDw8IGU1IDw8
ICIgZXZhbHVhdGVzIHRvICIgPDwgdjU7Ci0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7
CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgcHJlZF90ZXh0IDw8ICIoIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8IGUxIDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCBlMiA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTMg
PDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGU0IDw8ICIsICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCBlNSA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdo
ZXJlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFs
dWF0ZXMgdG8gIiA8PCB2MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwg
ZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTUgPDwgIiBldmFsdWF0ZXMgdG8g
IiA8PCB2NTsKIH0KIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNU
fEFTU0VSVH1fUFJFRF9GT1JNQVQ1LgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgog
I2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDVfKHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCB2NCwg
djUsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAj
djMsICN2NCwgI3Y1LCB2MSwgdjIsIHYzLCB2NCwgdjUpLFwKKyAgR1RFU1RfQVNTRVJUXyhwcmVk
X2Zvcm1hdCgjdjEsICN2MiwgI3YzLCAjdjQsICN2NSwgdjEsIHYyLCB2MywgdjQsIHY1KSwgXAog
ICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBs
ZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQ1LiAgRG9uJ3QgdXNlCkBAIC0zNjUsNCArMzU0
LDYgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQ1SGVscGVyKGNvbnN0IGNoYXIqIHByZWRf
dGV4dCwKIAogCiAKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKICNlbmRpZiAgLy8gR1RFU1Rf
SU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmgKaW5kZXggZGE4MGRkYzZjNzBlZTJk
Yzc3M2VkNjc2NWE0Zjg5ZGZhOGNiMzhlOC4uZTY1MTY3MWViZGU4NTlmYzczMWI1NDU5YmRjMDY2
MWFmMDc1N2NiNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdF9wcm9kLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdF9wcm9kLmgKQEAgLTI2LDEwICsyNiwxMCBAQAogLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsg
ZGVmaW5pdGlvbnMgdXNlZnVsIGluIHByb2R1Y3Rpb24gY29kZS4KKy8vIEdvb2dsZSBDKysgVGVz
dGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgZGVmaW5pdGlvbnMgdXNlZnVsIGluIHByb2R1Y3Rp
b24gY29kZS4KKy8vIEdPT0dMRVRFU1RfQ00wMDAzIERPIE5PVCBERUxFVEUKIAogI2lmbmRlZiBH
VEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BST0RfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9H
VEVTVF9HVEVTVF9QUk9EX0hfCkBAIC00MCwxNyArNDAsMjAgQEAKIC8vCiAvLyBjbGFzcyBNeUNs
YXNzIHsKIC8vICBwcml2YXRlOgotLy8gICB2b2lkIE15TWV0aG9kKCk7Ci0vLyAgIEZSSUVORF9U
RVNUKE15Q2xhc3NUZXN0LCBNeU1ldGhvZCk7CisvLyAgIHZvaWQgUHJpdmF0ZU1ldGhvZCgpOwor
Ly8gICBGUklFTkRfVEVTVChNeUNsYXNzVGVzdCwgUHJpdmF0ZU1ldGhvZFdvcmtzKTsKIC8vIH07
CiAvLwogLy8gY2xhc3MgTXlDbGFzc1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAvLyAg
IC8vIC4uLgogLy8gfTsKIC8vCi0vLyBURVNUX0YoTXlDbGFzc1Rlc3QsIE15TWV0aG9kKSB7Ci0v
LyAgIC8vIENhbiBjYWxsIE15Q2xhc3M6Ok15TWV0aG9kKCkgaGVyZS4KKy8vIFRFU1RfRihNeUNs
YXNzVGVzdCwgUHJpdmF0ZU1ldGhvZFdvcmtzKSB7CisvLyAgIC8vIENhbiBjYWxsIE15Q2xhc3M6
OlByaXZhdGVNZXRob2QoKSBoZXJlLgogLy8gfQorLy8KKy8vIE5vdGU6IFRoZSB0ZXN0IGNsYXNz
IG11c3QgYmUgaW4gdGhlIHNhbWUgbmFtZXNwYWNlIGFzIHRoZSBjbGFzcyBiZWluZyB0ZXN0ZWQu
CisvLyBGb3IgZXhhbXBsZSwgcHV0dGluZyBNeUNsYXNzVGVzdCBpbiBhbiBhbm9ueW1vdXMgbmFt
ZXNwYWNlIHdpbGwgbm90IHdvcmsuCiAKICNkZWZpbmUgRlJJRU5EX1RFU1QodGVzdF9jYXNlX25h
bWUsIHRlc3RfbmFtZSlcCiBmcmllbmQgY2xhc3MgdGVzdF9jYXNlX25hbWUjI18jI3Rlc3RfbmFt
ZSMjX1Rlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvY3VzdG9tL1JFQURNRS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjM5MWZi
NGUyYjU3NjVjYWM4YzY5NDMzNTliMTViYmQ1ZjRmMTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vUkVBRE1F
Lm1kCkBAIC0wLDAgKzEsNTYgQEAKKyMgQ3VzdG9taXphdGlvbiBQb2ludHMKKworVGhlIGN1c3Rv
bSBkaXJlY3RvcnkgaXMgYW4gaW5qZWN0aW9uIHBvaW50IGZvciBjdXN0b20gdXNlciBjb25maWd1
cmF0aW9ucy4KKworIyMgSGVhZGVyIGBndGVzdC5oYAorCisjIyMgVGhlIGZvbGxvd2luZyBtYWNy
b3MgY2FuIGJlIGRlZmluZWQ6CisKKyogICBgR1RFU1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVSX2Ag
LSBUaGUgbmFtZSBvZiBhbiBpbXBsZW1lbnRhdGlvbiBvZgorICAgIGBPc1N0YWNrVHJhY2VHZXR0
ZXJJbnRlcmZhY2VgLgorKiAgIGBHVEVTVF9DVVNUT01fVEVNUERJUl9GVU5DVElPTl9gIC0gQW4g
b3ZlcnJpZGUgZm9yIGB0ZXN0aW5nOjpUZW1wRGlyKClgLiBTZWUKKyAgICBgdGVzdGluZzo6VGVt
cERpcmAgZm9yIHNlbWFudGljcyBhbmQgc2lnbmF0dXJlLgorCisjIyBIZWFkZXIgYGd0ZXN0LXBv
cnQuaGAKKworVGhlIGZvbGxvd2luZyBtYWNyb3MgY2FuIGJlIGRlZmluZWQ6CisKKyMjIyBGbGFn
IHJlbGF0ZWQgbWFjcm9zOgorCisqICAgYEdURVNUX0ZMQUcoZmxhZ19uYW1lKWAKKyogICBgR1RF
U1RfVVNFX09XTl9GTEFHRklMRV9GTEFHX2AgLSBEZWZpbmUgdG8gMCB3aGVuIHRoZSBzeXN0ZW0g
cHJvdmlkZXMgaXRzCisgICAgb3duIGZsYWdmaWxlIGZsYWcgcGFyc2luZy4KKyogICBgR1RFU1Rf
REVDTEFSRV9ib29sXyhuYW1lKWAKKyogICBgR1RFU1RfREVDTEFSRV9pbnQzMl8obmFtZSlgCisq
ICAgYEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhuYW1lKWAKKyogICBgR1RFU1RfREVGSU5FX2Jvb2xf
KG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpYAorKiAgIGBHVEVTVF9ERUZJTkVfaW50MzJfKG5hbWUs
IGRlZmF1bHRfdmFsLCBkb2MpYAorKiAgIGBHVEVTVF9ERUZJTkVfc3RyaW5nXyhuYW1lLCBkZWZh
dWx0X3ZhbCwgZG9jKWAKKworIyMjIExvZ2dpbmc6CisKKyogICBgR1RFU1RfTE9HXyhzZXZlcml0
eSlgCisqICAgYEdURVNUX0NIRUNLXyhjb25kaXRpb24pYAorKiAgIEZ1bmN0aW9ucyBgTG9nVG9T
dGRlcnIoKWAgYW5kIGBGbHVzaEluZm9Mb2coKWAgaGF2ZSB0byBiZSBwcm92aWRlZCB0b28uCisK
KyMjIyBUaHJlYWRpbmc6CisKKyogICBgR1RFU1RfSEFTX05PVElGSUNBVElPTl9gIC0gRW5hYmxl
ZCBpZiBOb3RpZmljYXRpb24gaXMgYWxyZWFkeSBwcm92aWRlZC4KKyogICBgR1RFU1RfSEFTX01V
VEVYX0FORF9USFJFQURfTE9DQUxfYCAtIEVuYWJsZWQgaWYgYE11dGV4YCBhbmQgYFRocmVhZExv
Y2FsYAorICAgIGFyZSBhbHJlYWR5IHByb3ZpZGVkLiBNdXN0IGFsc28gcHJvdmlkZSBgR1RFU1Rf
REVDTEFSRV9TVEFUSUNfTVVURVhfKG11dGV4KWAKKyAgICBhbmQgYEdURVNUX0RFRklORV9TVEFU
SUNfTVVURVhfKG11dGV4KWAKKyogICBgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGxv
Y2tzKWAKKyogICBgR1RFU1RfTE9DS19FWENMVURFRF8obG9ja3MpYAorCisjIyMgVW5kZXJseWlu
ZyBsaWJyYXJ5IHN1cHBvcnQgZmVhdHVyZXMKKworKiAgIGBHVEVTVF9IQVNfQ1hYQUJJX0hfYAor
CisjIyMgRXhwb3J0aW5nIEFQSSBzeW1ib2xzOgorCisqICAgYEdURVNUX0FQSV9gIC0gU3BlY2lm
aWVyIGZvciBleHBvcnRlZCBzeW1ib2xzLgorCisjIyBIZWFkZXIgYGd0ZXN0LXByaW50ZXJzLmhg
CisKKyogICBTZWUgZG9jdW1lbnRhdGlvbiBhdCBgZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaGAgZm9y
IGRldGFpbHMgb24gaG93IHRvIGRlZmluZSBhCisgICAgY3VzdG9tIHByaW50ZXIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3Rv
bS9ndGVzdC1wb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q4NWQ5NTZkMmRjMTdiZDUz
N2YyMTQyMzQwYmRmNThmNDczNzExOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXBvcnQuaApAQCAt
MCwwICsxLDM3IEBACisvLyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisvLworLy8gSW5qZWN0aW9uIHBvaW50IGZvciBjdXN0b20gdXNlciBjb25maWd1cmF0aW9ucy4g
U2VlIFJFQURNRSBmb3IgZGV0YWlscworLy8KKy8vICoqIEN1c3RvbSBpbXBsZW1lbnRhdGlvbiBz
dGFydHMgaGVyZSAqKgorCisjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VT
VE9NX0dURVNUX1BPUlRfSF8KKyNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9D
VVNUT01fR1RFU1RfUE9SVF9IXworCisjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5U
RVJOQUxfQ1VTVE9NX0dURVNUX1BPUlRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXByaW50ZXJzLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVz
dC1wcmludGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViNDQ2N2FiY2FiZWE3ZmY3NmY5ZDJkNTI3Mzg3Yzlk
YTgxMDE0OGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wcmludGVycy5oCkBAIC0wLDAgKzEsNDIg
QEAKKy8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
Ly8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBU
aGlzIGZpbGUgcHJvdmlkZXMgYW4gaW5qZWN0aW9uIHBvaW50IGZvciBjdXN0b20gcHJpbnRlcnMg
aW4gYSBsb2NhbAorLy8gaW5zdGFsbGF0aW9uIG9mIGdUZXN0LgorLy8gSXQgd2lsbCBiZSBpbmNs
dWRlZCBmcm9tIGd0ZXN0LXByaW50ZXJzLmggYW5kIHRoZSBvdmVycmlkZXMgaW4gdGhpcyBmaWxl
CisvLyB3aWxsIGJlIHZpc2libGUgdG8gZXZlcnlvbmUuCisvLworLy8gSW5qZWN0aW9uIHBvaW50
IGZvciBjdXN0b20gdXNlciBjb25maWd1cmF0aW9ucy4gU2VlIFJFQURNRSBmb3IgZGV0YWlscwor
Ly8KKy8vICoqIEN1c3RvbSBpbXBsZW1lbnRhdGlvbiBzdGFydHMgaGVyZSAqKgorCisjaWZuZGVm
IEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX1BSSU5URVJTX0hfCisj
ZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX1BSSU5URVJT
X0hfCisKKyNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RF
U1RfUFJJTlRFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjOGUw
N2JlMjNmMWZkNjE1OWFmZWYyZWVmZDc0NDQwMzRkZDA2MDQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVz
dC5oCkBAIC0wLDAgKzEsMzcgQEAKKy8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgorLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
Ky8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
Ky8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKy8vCisvLyBJbmplY3Rpb24gcG9pbnQgZm9yIGN1c3RvbSB1c2VyIGNvbmZpZ3Vy
YXRpb25zLiBTZWUgUkVBRE1FIGZvciBkZXRhaWxzCisvLworLy8gKiogQ3VzdG9tIGltcGxlbWVu
dGF0aW9uIHN0YXJ0cyBoZXJlICoqCisKKyNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRF
Uk5BTF9DVVNUT01fR1RFU1RfSF8KKyNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5B
TF9DVVNUT01fR1RFU1RfSF8KKworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVS
TkFMX0NVU1RPTV9HVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRl
c3QtaW50ZXJuYWwuaAppbmRleCBlNDMzMDg0OGQ0ZWFlNTcwZjI4MGRhYzU3Y2YwMGIyOTcyMmM3
ZDBjLi4wYTliNDJjOGE1NzJhODcxOTRjNjUxMDkwM2UyMWVhMjI2MGZhYzVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRl
YXRoLXRlc3QtaW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaApAQCAtMjcsMTcgKzI3
LDE4IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQXV0aG9yczog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiksIGVlZmFjbUBnbWFpbC5jb20gKFNlYW4gTWNh
ZmVlKQotLy8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVz
dCkKKy8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29n
bGUgVGVzdCkKIC8vCiAvLyBUaGlzIGhlYWRlciBmaWxlIGRlZmluZXMgaW50ZXJuYWwgdXRpbGl0
aWVzIG5lZWRlZCBmb3IgaW1wbGVtZW50aW5nCiAvLyBkZWF0aCB0ZXN0cy4gIFRoZXkgYXJlIHN1
YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8g
Tk9UIERFTEVURQogCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1Rf
REVBVEhfVEVTVF9JTlRFUk5BTF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVS
TkFMX0dURVNUX0RFQVRIX1RFU1RfSU5URVJOQUxfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVy
bmFsL2d0ZXN0LWludGVybmFsLmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50
ZXJuYWwuaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+CiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5h
bWVzcGFjZSBpbnRlcm5hbCB7CkBAIC01MSw2ICs1Miw5IEBAIGNvbnN0IGNoYXIga0ludGVybmFs
UnVuRGVhdGhUZXN0RmxhZ1tdID0gImludGVybmFsX3J1bl9kZWF0aF90ZXN0IjsKIAogI2lmIEdU
RVNUX0hBU19ERUFUSF9URVNUCiAKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQy
NTEgXAorLyogY2xhc3MgQSBuZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBi
eSBjbGllbnRzIG9mIGNsYXNzIEIgKi8pCisKIC8vIERlYXRoVGVzdCBpcyBhIGNsYXNzIHRoYXQg
aGlkZXMgbXVjaCBvZiB0aGUgY29tcGxleGl0eSBvZiB0aGUKIC8vIEdURVNUX0RFQVRIX1RFU1Rf
IG1hY3JvLiAgSXQgaXMgYWJzdHJhY3Q7IGl0cyBzdGF0aWMgQ3JlYXRlIG1ldGhvZAogLy8gcmV0
dXJucyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiB0aGUgcHJldmFpbGluZyBkZWF0
aCB0ZXN0CkBAIC05Niw4ICsxMDAsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBEZWF0aFRlc3Qgewog
ICAvLyB0ZXN0LCB0aGVuIHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlLgogICBlbnVtIFRlc3RSb2xl
IHsgT1ZFUlNFRV9URVNULCBFWEVDVVRFX1RFU1QgfTsKIAotICAvLyBBbiBlbnVtZXJhdGlvbiBv
ZiB0aGUgdHdvIHJlYXNvbnMgdGhhdCBhIHRlc3QgbWlnaHQgYmUgYWJvcnRlZC4KLSAgZW51bSBB
Ym9ydFJlYXNvbiB7IFRFU1RfRU5DT1VOVEVSRURfUkVUVVJOX1NUQVRFTUVOVCwgVEVTVF9ESURf
Tk9UX0RJRSB9OworICAvLyBBbiBlbnVtZXJhdGlvbiBvZiB0aGUgdGhyZWUgcmVhc29ucyB0aGF0
IGEgdGVzdCBtaWdodCBiZSBhYm9ydGVkLgorICBlbnVtIEFib3J0UmVhc29uIHsKKyAgICBURVNU
X0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQsCisgICAgVEVTVF9USFJFV19FWENFUFRJT04s
CisgICAgVEVTVF9ESURfTk9UX0RJRQorICB9OwogCiAgIC8vIEFzc3VtZXMgb25lIG9mIHRoZSBh
Ym92ZSByb2xlcy4KICAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCkgPSAwOwpAQCAtMTIx
LDE1ICsxMjksMTcgQEAgY2xhc3MgR1RFU1RfQVBJXyBEZWF0aFRlc3QgewogICAvLyB0aGUgbGFz
dCBkZWF0aCB0ZXN0LgogICBzdGF0aWMgY29uc3QgY2hhciogTGFzdE1lc3NhZ2UoKTsKIAotICBz
dGF0aWMgdm9pZCBzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKKyAgc3RhdGljIHZvaWQgc2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKGNvbnN0IHN0
ZDo6c3RyaW5nJiBtZXNzYWdlKTsKIAogIHByaXZhdGU6CiAgIC8vIEEgc3RyaW5nIGNvbnRhaW5p
bmcgYSBkZXNjcmlwdGlvbiBvZiB0aGUgb3V0Y29tZSBvZiB0aGUgbGFzdCBkZWF0aCB0ZXN0Lgot
ICBzdGF0aWMgU3RyaW5nIGxhc3RfZGVhdGhfdGVzdF9tZXNzYWdlXzsKKyAgc3RhdGljIHN0ZDo6
c3RyaW5nIGxhc3RfZGVhdGhfdGVzdF9tZXNzYWdlXzsKIAogICBHVEVTVF9ESVNBTExPV19DT1BZ
X0FORF9BU1NJR05fKERlYXRoVGVzdCk7CiB9OwogCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5H
U19QT1BfKCkgIC8vICA0MjUxCisKIC8vIEZhY3RvcnkgaW50ZXJmYWNlIGZvciBkZWF0aCB0ZXN0
cy4gIE1heSBiZSBtb2NrZWQgb3V0IGZvciB0ZXN0aW5nLgogY2xhc3MgRGVhdGhUZXN0RmFjdG9y
eSB7CiAgcHVibGljOgpAQCAtMTQ5LDkgKzE1OSwzNCBAQCBjbGFzcyBEZWZhdWx0RGVhdGhUZXN0
RmFjdG9yeSA6IHB1YmxpYyBEZWF0aFRlc3RGYWN0b3J5IHsKIC8vIGJ5IGEgc2lnbmFsLCBvciBl
eGl0ZWQgbm9ybWFsbHkgd2l0aCBhIG5vbnplcm8gZXhpdCBjb2RlLgogR1RFU1RfQVBJXyBib29s
IEV4aXRlZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1cyk7CiAKKy8vIFRyYXBzIEMrKyBl
eGNlcHRpb25zIGVzY2FwaW5nIHN0YXRlbWVudCBhbmQgcmVwb3J0cyB0aGVtIGFzIHRlc3QKKy8v
IGZhaWx1cmVzLiBOb3RlIHRoYXQgdHJhcHBpbmcgU0VIIGV4Y2VwdGlvbnMgaXMgbm90IGltcGxl
bWVudGVkIGhlcmUuCisjIGlmIEdURVNUX0hBU19FWENFUFRJT05TCisjICBkZWZpbmUgR1RFU1Rf
RVhFQ1VURV9ERUFUSF9URVNUX1NUQVRFTUVOVF8oc3RhdGVtZW50LCBkZWF0aF90ZXN0KSBcCisg
IHRyeSB7IFwKKyAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVM
T1dfKHN0YXRlbWVudCk7IFwKKyAgfSBjYXRjaCAoY29uc3QgOjpzdGQ6OmV4Y2VwdGlvbiYgZ3Rl
c3RfZXhjZXB0aW9uKSB7IFwKKyAgICBmcHJpbnRmKFwKKyAgICAgICAgc3RkZXJyLCBcCisgICAg
ICAgICJcbiVzOiBDYXVnaHQgc3RkOjpleGNlcHRpb24tZGVyaXZlZCBleGNlcHRpb24gZXNjYXBp
bmcgdGhlICIgXAorICAgICAgICAiZGVhdGggdGVzdCBzdGF0ZW1lbnQuIEV4Y2VwdGlvbiBtZXNz
YWdlOiAlc1xuIiwgXAorICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRGaWxlTG9j
YXRpb24oX19GSUxFX18sIF9fTElORV9fKS5jX3N0cigpLCBcCisgICAgICAgIGd0ZXN0X2V4Y2Vw
dGlvbi53aGF0KCkpOyBcCisgICAgZmZsdXNoKHN0ZGVycik7IFwKKyAgICBkZWF0aF90ZXN0LT5B
Ym9ydCg6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OlRFU1RfVEhSRVdfRVhDRVBUSU9O
KTsgXAorICB9IGNhdGNoICguLi4pIHsgXAorICAgIGRlYXRoX3Rlc3QtPkFib3J0KDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkRlYXRoVGVzdDo6VEVTVF9USFJFV19FWENFUFRJT04pOyBcCisgIH0KKwor
IyBlbHNlCisjICBkZWZpbmUgR1RFU1RfRVhFQ1VURV9ERUFUSF9URVNUX1NUQVRFTUVOVF8oc3Rh
dGVtZW50LCBkZWF0aF90ZXN0KSBcCisgIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVf
V0FSTklOR19CRUxPV18oc3RhdGVtZW50KQorCisjIGVuZGlmCisKIC8vIFRoaXMgbWFjcm8gaXMg
Zm9yIGltcGxlbWVudGluZyBBU1NFUlRfREVBVEgqLCBFWFBFQ1RfREVBVEgqLAogLy8gQVNTRVJU
X0VYSVQqLCBhbmQgRVhQRUNUX0VYSVQqLgotI2RlZmluZSBHVEVTVF9ERUFUSF9URVNUXyhzdGF0
ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIGZhaWwpIFwKKyMgZGVmaW5lIEdURVNUX0RFQVRIX1RF
U1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgZmFpbCkgXAogICBHVEVTVF9BTUJJR1VP
VVNfRUxTRV9CTE9DS0VSXyBcCiAgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVl
KCkpIHsgXAogICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6OlJFJiBndGVzdF9yZWdleCA9
IChyZWdleCk7IFwKQEAgLTE3MiwxMCArMjA3LDEyIEBAIEdURVNUX0FQSV8gYm9vbCBFeGl0ZWRV
bnN1Y2Nlc3NmdWxseShpbnQgZXhpdF9zdGF0dXMpOwogICAgICAgICBjYXNlIDo6dGVzdGluZzo6
aW50ZXJuYWw6OkRlYXRoVGVzdDo6RVhFQ1VURV9URVNUOiB7IFwKICAgICAgICAgICA6OnRlc3Rp
bmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OlJldHVyblNlbnRpbmVsIFwKICAgICAgICAgICAgICAg
Z3Rlc3Rfc2VudGluZWwoZ3Rlc3RfZHQpOyBcCi0gICAgICAgICAgR1RFU1RfU1VQUFJFU1NfVU5S
RUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCisgICAgICAgICAgR1RF
U1RfRVhFQ1VURV9ERUFUSF9URVNUX1NUQVRFTUVOVF8oc3RhdGVtZW50LCBndGVzdF9kdCk7IFwK
ICAgICAgICAgICBndGVzdF9kdC0+QWJvcnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0
OjpURVNUX0RJRF9OT1RfRElFKTsgXAogICAgICAgICAgIGJyZWFrOyBcCiAgICAgICAgIH0gXAor
ICAgICAgICBkZWZhdWx0OiBcCisgICAgICAgICAgYnJlYWs7IFwKICAgICAgIH0gXAogICAgIH0g
XAogICB9IGVsc2UgXApAQCAtMTg0LDEyICsyMjEsMjcgQEAgR1RFU1RfQVBJXyBib29sIEV4aXRl
ZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1cyk7CiAvLyBUaGUgc3ltYm9sICJmYWlsIiBo
ZXJlIGV4cGFuZHMgdG8gc29tZXRoaW5nIGludG8gd2hpY2ggYSBtZXNzYWdlCiAvLyBjYW4gYmUg
c3RyZWFtZWQuCiAKKy8vIFRoaXMgbWFjcm8gaXMgZm9yIGltcGxlbWVudGluZyBBU1NFUlQvRVhQ
RUNUX0RFQlVHX0RFQVRIIHdoZW4gY29tcGlsZWQgaW4KKy8vIE5ERUJVRyBtb2RlLiBJbiB0aGlz
IGNhc2Ugd2UgbmVlZCB0aGUgc3RhdGVtZW50cyB0byBiZSBleGVjdXRlZCBhbmQgdGhlIG1hY3Jv
CisvLyBtdXN0IGFjY2VwdCBhIHN0cmVhbWVkIG1lc3NhZ2UgZXZlbiB0aG91Z2ggdGhlIG1lc3Nh
Z2UgaXMgbmV2ZXIgcHJpbnRlZC4KKy8vIFRoZSByZWdleCBvYmplY3QgaXMgbm90IGV2YWx1YXRl
ZCwgYnV0IGl0IGlzIHVzZWQgdG8gcHJldmVudCAidW51c2VkIgorLy8gd2FybmluZ3MgYW5kIHRv
IGF2b2lkIGFuIGV4cHJlc3Npb24gdGhhdCBkb2Vzbid0IGNvbXBpbGUgaW4gZGVidWcgbW9kZS4K
KyNkZWZpbmUgR1RFU1RfRVhFQ1VURV9TVEFURU1FTlRfKHN0YXRlbWVudCwgcmVnZXgpICAgICAg
ICAgICAgIFwKKyAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUo
KSkgeyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJM
RV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKKyAgfSBlbHNlIGlmICghOjp0ZXN0
aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7ICAgICAgICAgICAgIFwKKyAgICBjb25zdCA6
OnRlc3Rpbmc6OmludGVybmFsOjpSRSYgZ3Rlc3RfcmVnZXggPSAocmVnZXgpOyAgICAgIFwKKyAg
ICBzdGF0aWNfY2FzdDx2b2lkPihndGVzdF9yZWdleCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgfSBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICA6OnRlc3Rpbmc6Ok1lc3NhZ2UoKQorCiAvLyBBIGNsYXNzIHJl
cHJlc2VudGluZyB0aGUgcGFyc2VkIGNvbnRlbnRzIG9mIHRoZQogLy8gLS1ndGVzdF9pbnRlcm5h
bF9ydW5fZGVhdGhfdGVzdCBmbGFnLCBhcyBpdCBleGlzdGVkIHdoZW4KIC8vIFJVTl9BTExfVEVT
VFMgd2FzIGNhbGxlZC4KIGNsYXNzIEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyB7CiAgcHVibGlj
OgotICBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoY29uc3QgU3RyaW5nJiBhX2ZpbGUsCisgIElu
dGVybmFsUnVuRGVhdGhUZXN0RmxhZyhjb25zdCBzdGQ6OnN0cmluZyYgYV9maWxlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGFfbGluZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBhbl9pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhX3dyaXRl
X2ZkKQpAQCAtMjAxLDEzICsyNTMsMTMgQEAgY2xhc3MgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFn
IHsKICAgICAgIHBvc2l4OjpDbG9zZSh3cml0ZV9mZF8pOwogICB9CiAKLSAgU3RyaW5nIGZpbGUo
KSBjb25zdCB7IHJldHVybiBmaWxlXzsgfQorICBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZSgpIGNv
bnN0IHsgcmV0dXJuIGZpbGVfOyB9CiAgIGludCBsaW5lKCkgY29uc3QgeyByZXR1cm4gbGluZV87
IH0KICAgaW50IGluZGV4KCkgY29uc3QgeyByZXR1cm4gaW5kZXhfOyB9CiAgIGludCB3cml0ZV9m
ZCgpIGNvbnN0IHsgcmV0dXJuIHdyaXRlX2ZkXzsgfQogCiAgcHJpdmF0ZToKLSAgU3RyaW5nIGZp
bGVfOworICBzdGQ6OnN0cmluZyBmaWxlXzsKICAgaW50IGxpbmVfOwogICBpbnQgaW5kZXhfOwog
ICBpbnQgd3JpdGVfZmRfOwpAQCAtMjIwLDUzICsyNzIsNiBAQCBjbGFzcyBJbnRlcm5hbFJ1bkRl
YXRoVGVzdEZsYWcgewogLy8gdGhlIGZsYWcgaXMgc3BlY2lmaWVkOyBvdGhlcndpc2UgcmV0dXJu
cyBOVUxMLgogSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBQYXJzZUludGVybmFsUnVuRGVhdGhU
ZXN0RmxhZygpOwogCi0jZWxzZSAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotLy8gVGhpcyBt
YWNybyBpcyB1c2VkIGZvciBpbXBsZW1lbnRpbmcgbWFjcm9zIHN1Y2ggYXMKLS8vIEVYUEVDVF9E
RUFUSF9JRl9TVVBQT1JURUQgYW5kIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgb24gc3lzdGVt
cyB3aGVyZQotLy8gZGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQuIFRob3NlIG1hY3JvcyBt
dXN0IGNvbXBpbGUgb24gc3VjaCBzeXN0ZW1zCi0vLyBpZmYgRVhQRUNUX0RFQVRIIGFuZCBBU1NF
UlRfREVBVEggY29tcGlsZSB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMgb24KLS8vIHN5c3RlbXMg
dGhhdCBzdXBwb3J0IGRlYXRoIHRlc3RzLiBUaGlzIGFsbG93cyBvbmUgdG8gd3JpdGUgc3VjaCBh
IG1hY3JvCi0vLyBvbiBhIHN5c3RlbSB0aGF0IGRvZXMgbm90IHN1cHBvcnQgZGVhdGggdGVzdHMg
YW5kIGJlIHN1cmUgdGhhdCBpdCB3aWxsCi0vLyBjb21waWxlIG9uIGEgZGVhdGgtdGVzdCBzdXBw
b3J0aW5nIHN5c3RlbS4KLS8vCi0vLyBQYXJhbWV0ZXJzOgotLy8gICBzdGF0ZW1lbnQgLSAgQSBz
dGF0ZW1lbnQgdGhhdCBhIG1hY3JvIHN1Y2ggYXMgRVhQRUNUX0RFQVRIIHdvdWxkIHRlc3QKLS8v
ICAgICAgICAgICAgICAgIGZvciBwcm9ncmFtIHRlcm1pbmF0aW9uLiBUaGlzIG1hY3JvIGhhcyB0
byBtYWtlIHN1cmUgdGhpcwotLy8gICAgICAgICAgICAgICAgc3RhdGVtZW50IGlzIGNvbXBpbGVk
IGJ1dCBub3QgZXhlY3V0ZWQsIHRvIGVuc3VyZSB0aGF0Ci0vLyAgICAgICAgICAgICAgICBFWFBF
Q1RfREVBVEhfSUZfU1VQUE9SVEVEIGNvbXBpbGVzIHdpdGggYSBjZXJ0YWluCi0vLyAgICAgICAg
ICAgICAgICBwYXJhbWV0ZXIgaWZmIEVYUEVDVF9ERUFUSCBjb21waWxlcyB3aXRoIGl0LgotLy8g
ICByZWdleCAgICAgLSAgQSByZWdleCB0aGF0IGEgbWFjcm8gc3VjaCBhcyBFWFBFQ1RfREVBVEgg
d291bGQgdXNlIHRvIHRlc3QKLS8vICAgICAgICAgICAgICAgIHRoZSBvdXRwdXQgb2Ygc3RhdGVt
ZW50LiAgVGhpcyBwYXJhbWV0ZXIgaGFzIHRvIGJlCi0vLyAgICAgICAgICAgICAgICBjb21waWxl
ZCBidXQgbm90IGV2YWx1YXRlZCBieSB0aGlzIG1hY3JvLCB0byBlbnN1cmUgdGhhdAotLy8gICAg
ICAgICAgICAgICAgdGhpcyBtYWNybyBvbmx5IGFjY2VwdHMgZXhwcmVzc2lvbnMgdGhhdCBhIG1h
Y3JvIHN1Y2ggYXMKLS8vICAgICAgICAgICAgICAgIEVYUEVDVF9ERUFUSCB3b3VsZCBhY2NlcHQu
Ci0vLyAgIHRlcm1pbmF0b3IgLSBNdXN0IGJlIGFuIGVtcHR5IHN0YXRlbWVudCBmb3IgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRAotLy8gICAgICAgICAgICAgICAgYW5kIGEgcmV0dXJuIHN0YXRl
bWVudCBmb3IgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRC4KLS8vICAgICAgICAgICAgICAgIFRo
aXMgZW5zdXJlcyB0aGF0IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgd2lsbCBub3QKLS8vICAg
ICAgICAgICAgICAgIGNvbXBpbGUgaW5zaWRlIGZ1bmN0aW9ucyB3aGVyZSBBU1NFUlRfREVBVEgg
ZG9lc24ndAotLy8gICAgICAgICAgICAgICAgY29tcGlsZS4KLS8vCi0vLyAgVGhlIGJyYW5jaCB0
aGF0IGhhcyBhbiBhbHdheXMgZmFsc2UgY29uZGl0aW9uIGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQK
LS8vICBzdGF0ZW1lbnQgYW5kIHJlZ2V4IGFyZSBjb21waWxlZCAoYW5kIHRodXMgc3ludGFjdGlj
YWxseSBjb3JyZWN0KSBidXQKLS8vICBuZXZlciBleGVjdXRlZC4gVGhlIHVucmVhY2hhYmxlIGNv
ZGUgbWFjcm8gcHJvdGVjdHMgdGhlIHRlcm1pbmF0b3IKLS8vICBzdGF0ZW1lbnQgZnJvbSBnZW5l
cmF0aW5nIGFuICd1bnJlYWNoYWJsZSBjb2RlJyB3YXJuaW5nIGluIGNhc2UKLS8vICBzdGF0ZW1l
bnQgdW5jb25kaXRpb25hbGx5IHJldHVybnMgb3IgdGhyb3dzLiBUaGUgTWVzc2FnZSBjb25zdHJ1
Y3RvciBhdAotLy8gIHRoZSBlbmQgYWxsb3dzIHRoZSBzeW50YXggb2Ygc3RyZWFtaW5nIGFkZGl0
aW9uYWwgbWVzc2FnZXMgaW50byB0aGUKLS8vICBtYWNybywgZm9yIGNvbXBpbGF0aW9uYWwgY29t
cGF0aWJpbGl0eSB3aXRoIEVYUEVDVF9ERUFUSC9BU1NFUlRfREVBVEguCi0jZGVmaW5lIEdURVNU
X1VOU1VQUE9SVEVEX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcmVnZXgsIHRlcm1pbmF0b3IpIFwK
LSAgICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0gICAgaWYgKDo6dGVzdGluZzo6
aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBcCi0gICAgICBHVEVTVF9MT0dfKFdBUk5JTkcpIFwK
LSAgICAgICAgICA8PCAiRGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0
Zm9ybS5cbiIgXAotICAgICAgICAgIDw8ICJTdGF0ZW1lbnQgJyIgI3N0YXRlbWVudCAiJyBjYW5u
b3QgYmUgdmVyaWZpZWQuIjsgXAotICAgIH0gZWxzZSBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
QWx3YXlzRmFsc2UoKSkgeyBcCi0gICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpSRTo6UGFydGlh
bE1hdGNoKCIuKiIsIChyZWdleCkpOyBcCi0gICAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJM
RV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKLSAgICAgIHRlcm1pbmF0b3I7IFwK
LSAgICB9IGVsc2UgXAotICAgICAgOjp0ZXN0aW5nOjpNZXNzYWdlKCkKLQogI2VuZGlmICAvLyBH
VEVTVF9IQVNfREVBVEhfVEVTVAogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
ZmlsZXBhdGguaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtZmlsZXBhdGguaAppbmRleCA0Yjc2ZDc5NTA2YjAyNmFiYTM3MTY0NzJmYzQzY2Vm
YzFhN2UzODhhLi5hZTM4ZDk1YmY4NDRmYTlkYzIxNzM5Y2Y4MjEyNzZkNWIzNDE3ZTNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LWZpbGVwYXRoLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oCkBAIC0yNywyMCArMjcsMjMgQEAKIC8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRob3I6IGtlaXRoLnJheUBnbWFpbC5j
b20gKEtlaXRoIFJheSkKLS8vCiAvLyBHb29nbGUgVGVzdCBmaWxlcGF0aCB1dGlsaXRpZXMKIC8v
CiAvLyBUaGlzIGhlYWRlciBmaWxlIGRlY2xhcmVzIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyB1c2Vk
IGludGVybmFsbHkgYnkKIC8vIEdvb2dsZSBUZXN0LiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFu
Z2Ugd2l0aG91dCBub3RpY2UuCiAvLwotLy8gVGhpcyBmaWxlIGlzICNpbmNsdWRlZCBpbiA8Z3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4uCisvLyBUaGlzIGZpbGUgaXMgI2luY2x1ZGVk
IGluIGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmguCiAvLyBEbyBub3QgaW5jbHVkZSB0
aGlzIGhlYWRlciBmaWxlIHNlcGFyYXRlbHkhCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5P
VCBERUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0ZJ
TEVQQVRIX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfRklM
RVBBVEhfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oPgorI2lu
Y2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgorCitHVEVTVF9ESVNBQkxFX01T
Q19XQVJOSU5HU19QVVNIXyg0MjUxIFwKKy8qIGNsYXNzIEEgbmVlZHMgdG8gaGF2ZSBkbGwtaW50
ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50cyBvZiBjbGFzcyBCICovKQogCiBuYW1lc3BhY2Ug
dGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewpAQCAtNjEsMTEgKzY0LDcgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBGaWxlUGF0aCB7CiAgIEZpbGVQYXRoKCkgOiBwYXRobmFtZV8oIiIpIHsgfQog
ICBGaWxlUGF0aChjb25zdCBGaWxlUGF0aCYgcmhzKSA6IHBhdGhuYW1lXyhyaHMucGF0aG5hbWVf
KSB7IH0KIAotICBleHBsaWNpdCBGaWxlUGF0aChjb25zdCBjaGFyKiBwYXRobmFtZSkgOiBwYXRo
bmFtZV8ocGF0aG5hbWUpIHsKLSAgICBOb3JtYWxpemUoKTsKLSAgfQotCi0gIGV4cGxpY2l0IEZp
bGVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aG5hbWUpIDogcGF0aG5hbWVfKHBhdGhuYW1lKSB7Cisg
IGV4cGxpY2l0IEZpbGVQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRobmFtZSkgOiBwYXRobmFt
ZV8ocGF0aG5hbWUpIHsKICAgICBOb3JtYWxpemUoKTsKICAgfQogCkBAIC03OCw3ICs3Nyw3IEBA
IGNsYXNzIEdURVNUX0FQSV8gRmlsZVBhdGggewogICAgIHBhdGhuYW1lXyA9IHJocy5wYXRobmFt
ZV87CiAgIH0KIAotICBTdHJpbmcgVG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBwYXRobmFtZV87
IH0KKyAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHBhdGhuYW1l
XzsgfQogICBjb25zdCBjaGFyKiBjX3N0cigpIGNvbnN0IHsgcmV0dXJuIHBhdGhuYW1lXy5jX3N0
cigpOyB9CiAKICAgLy8gUmV0dXJucyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSwgb3Ig
IiIgaWYgdW5zdWNjZXNzZnVsLgpAQCAtMTExLDggKzExMCw4IEBAIGNsYXNzIEdURVNUX0FQSV8g
RmlsZVBhdGggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBGaWxlUGF0aCYgYmFzZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBleHRlbnNpb24pOwogCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYg
dGhlIHBhdGggaXMgTlVMTCBvciAiIi4KLSAgYm9vbCBJc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
Y19zdHIoKSA9PSBOVUxMIHx8ICpjX3N0cigpID09ICdcMCc7IH0KKyAgLy8gUmV0dXJucyB0cnVl
IGlmZiB0aGUgcGF0aCBpcyAiIi4KKyAgYm9vbCBJc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gcGF0
aG5hbWVfLmVtcHR5KCk7IH0KIAogICAvLyBJZiBpbnB1dCBuYW1lIGhhcyBhIHRyYWlsaW5nIHNl
cGFyYXRvciBjaGFyYWN0ZXIsIHJlbW92ZXMgaXQgYW5kIHJldHVybnMKICAgLy8gdGhlIG5hbWUs
IG90aGVyd2lzZSByZXR1cm4gdGhlIG5hbWUgc3RyaW5nIHVubW9kaWZpZWQuCkBAIC0yMDEsMTAg
KzIwMCwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIEZpbGVQYXRoIHsKICAgLy8gc2VwYXJhdG9ycy4g
UmV0dXJucyBOVUxMIGlmIG5vIHBhdGggc2VwYXJhdG9yIHdhcyBmb3VuZC4KICAgY29uc3QgY2hh
ciogRmluZExhc3RQYXRoU2VwYXJhdG9yKCkgY29uc3Q7CiAKLSAgU3RyaW5nIHBhdGhuYW1lXzsK
KyAgc3RkOjpzdHJpbmcgcGF0aG5hbWVfOwogfTsgIC8vIGNsYXNzIEZpbGVQYXRoCiAKIH0gIC8v
IG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAorR1RFU1RfRElT
QUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQorCiAjZW5kaWYgIC8vIEdURVNUX0lO
Q0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfRklMRVBBVEhfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
aW50ZXJuYWwuaAppbmRleCAzMWE2NmU5OWQzYzQ4MjE1MWU0MGZjMzVhNDAyNzAwNjkwMzJhMWQ1
Li5iNzYyZjYxZmM1M2MzZGI5Y2ZiNzUzOTQwZDkxYjVkNTRhYjM2MzU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVy
bmFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC1pbnRlcm5hbC5oCkBAIC0yNywzNCArMjcsNDMgQEAKIC8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRob3JzOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcg
V2FuKSwgZWVmYWNtQGdtYWlsLmNvbSAoU2VhbiBNY2FmZWUpCi0vLwotLy8gVGhlIEdvb2dsZSBD
KysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gVGhlIEdvb2dsZSBDKysgVGVz
dGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogLy8KIC8vIFRoaXMgaGVh
ZGVyIGZpbGUgZGVjbGFyZXMgZnVuY3Rpb25zIGFuZCBtYWNyb3MgdXNlZCBpbnRlcm5hbGx5IGJ5
CiAvLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90
aWNlLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RF
U1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9JTlRFUk5BTF9IXwogI2RlZmluZSBHVEVT
VF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0lOVEVSTkFMX0hfCiAKLSNpbmNsdWRlIDxn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oIgogCiAjaWYgR1RFU1RfT1NfTElOVVgKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNp
bmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvd2FpdC5oPgotI2luY2x1ZGUgPHVu
aXN0ZC5oPgorIyBpbmNsdWRlIDxzdGRsaWIuaD4KKyMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cisj
IGluY2x1ZGUgPHN5cy93YWl0Lmg+CisjIGluY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmICAvLyBH
VEVTVF9PU19MSU5VWAogCisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKyMgaW5jbHVkZSA8c3Rk
ZXhjZXB0PgorI2VuZGlmCisKICNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPGZsb2F0Lmg+
CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8aW9tYW5pcD4KICNpbmNsdWRlIDxsaW1p
dHM+CisjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHNldD4KKyNpbmNsdWRlIDxzdHJpbmc+Cisj
aW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaD4KLSNpbmNsdWRl
IDxndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVz
dC1tZXNzYWdlLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCIK
KyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKKyNpbmNsdWRlICJndGVz
dC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCIKIAogLy8gRHVlIHRvIEMrKyBwcmVwcm9jZXNz
b3Igd2VpcmRuZXNzLCB3ZSBuZWVkIGRvdWJsZSBpbmRpcmVjdGlvbiB0bwogLy8gY29uY2F0ZW5h
dGUgdHdvIHRva2VucyB3aGVuIG9uZSBvZiB0aGVtIGlzIF9fTElORV9fLiAgV3JpdGluZwpAQCAt
NjcsMzkgKzc2LDE1IEBACiAjZGVmaW5lIEdURVNUX0NPTkNBVF9UT0tFTl8oZm9vLCBiYXIpIEdU
RVNUX0NPTkNBVF9UT0tFTl9JTVBMXyhmb28sIGJhcikKICNkZWZpbmUgR1RFU1RfQ09OQ0FUX1RP
S0VOX0lNUExfKGZvbywgYmFyKSBmb28gIyMgYmFyCiAKLS8vIEdvb2dsZSBUZXN0IGRlZmluZXMg
dGhlIHRlc3Rpbmc6Ok1lc3NhZ2UgY2xhc3MgdG8gYWxsb3cgY29uc3RydWN0aW9uIG9mCi0vLyB0
ZXN0IG1lc3NhZ2VzIHZpYSB0aGUgPDwgb3BlcmF0b3IuICBUaGUgaWRlYSBpcyB0aGF0IGFueXRo
aW5nCi0vLyBzdHJlYW1hYmxlIHRvIHN0ZDo6b3N0cmVhbSBjYW4gYmUgc3RyZWFtZWQgdG8gYSB0
ZXN0aW5nOjpNZXNzYWdlLgotLy8gVGhpcyBhbGxvd3MgYSB1c2VyIHRvIHVzZSBoaXMgb3duIHR5
cGVzIGluIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgYnkKLS8vIG92ZXJsb2FkaW5nIHRoZSA8PCBv
cGVyYXRvci4KLS8vCi0vLyB1dGlsL2d0bC9zdGxfbG9nZ2luZy1pbmwuaCBvdmVybG9hZHMgPDwg
Zm9yIFNUTCBjb250YWluZXJzLiAgVGhlc2UKLS8vIG92ZXJsb2FkcyBjYW5ub3QgYmUgZGVmaW5l
ZCBpbiB0aGUgc3RkIG5hbWVzcGFjZSwgYXMgdGhhdCB3aWxsIGJlCi0vLyB1bmRlZmluZWQgYmVo
YXZpb3IuICBUaGVyZWZvcmUsIHRoZXkgYXJlIGRlZmluZWQgaW4gdGhlIGdsb2JhbAotLy8gbmFt
ZXNwYWNlIGluc3RlYWQuCi0vLwotLy8gQysrJ3Mgc3ltYm9sIGxvb2t1cCBydWxlIChpLmUuIEtv
ZW5pZyBsb29rdXApIHNheXMgdGhhdCB0aGVzZQotLy8gb3ZlcmxvYWRzIGFyZSB2aXNpYmxlIGlu
IGVpdGhlciB0aGUgc3RkIG5hbWVzcGFjZSBvciB0aGUgZ2xvYmFsCi0vLyBuYW1lc3BhY2UsIGJ1
dCBub3Qgb3RoZXIgbmFtZXNwYWNlcywgaW5jbHVkaW5nIHRoZSB0ZXN0aW5nCi0vLyBuYW1lc3Bh
Y2Ugd2hpY2ggR29vZ2xlIFRlc3QncyBNZXNzYWdlIGNsYXNzIGlzIGluLgotLy8KLS8vIFRvIGFs
bG93IFNUTCBjb250YWluZXJzIChhbmQgb3RoZXIgdHlwZXMgdGhhdCBoYXMgYSA8PCBvcGVyYXRv
cgotLy8gZGVmaW5lZCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZSkgdG8gYmUgdXNlZCBpbiBHb29n
bGUgVGVzdCBhc3NlcnRpb25zLAotLy8gdGVzdGluZzo6TWVzc2FnZSBtdXN0IGFjY2VzcyB0aGUg
Y3VzdG9tIDw8IG9wZXJhdG9yIGZyb20gdGhlIGdsb2JhbAotLy8gbmFtZXNwYWNlLiAgSGVuY2Ug
dGhpcyBoZWxwZXIgZnVuY3Rpb24uCi0vLwotLy8gTm90ZTogSmVmZnJleSBZYXNza2luIHN1Z2dl
c3RlZCBhbiBhbHRlcm5hdGl2ZSBmaXggYnkgInVzaW5nCi0vLyA6Om9wZXJhdG9yPDw7IiBpbiB0
aGUgZGVmaW5pdGlvbiBvZiBNZXNzYWdlJ3Mgb3BlcmF0b3I8PC4gIFRoYXQgZml4Ci0vLyBkb2Vz
bid0IHJlcXVpcmUgYSBoZWxwZXIgZnVuY3Rpb24sIGJ1dCB1bmZvcnR1bmF0ZWx5IGRvZXNuJ3QK
LS8vIGNvbXBpbGUgd2l0aCBNU1ZDLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9p
ZCBHVGVzdFN0cmVhbVRvSGVscGVyKHN0ZDo6b3N0cmVhbSogb3MsIGNvbnN0IFQmIHZhbCkgewot
ICAqb3MgPDwgdmFsOwotfQorLy8gU3RyaW5naWZpZXMgaXRzIGFyZ3VtZW50LgorI2RlZmluZSBH
VEVTVF9TVFJJTkdJRllfKG5hbWUpICNuYW1lCisKK2NsYXNzIFByb3RvY29sTWVzc2FnZTsKK25h
bWVzcGFjZSBwcm90bzIgeyBjbGFzcyBNZXNzYWdlOyB9CiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsK
IAotLy8gRm9yd2FyZCBkZWNsYXJhdGlvbiBvZiBjbGFzc2VzLgorLy8gRm9yd2FyZCBkZWNsYXJh
dGlvbnMuCiAKIGNsYXNzIEFzc2VydGlvblJlc3VsdDsgICAgICAgICAgICAgICAgIC8vIFJlc3Vs
dCBvZiBhbiBhc3NlcnRpb24uCiBjbGFzcyBNZXNzYWdlOyAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBSZXByZXNlbnRzIGEgZmFpbHVyZSBtZXNzYWdlLgpAQCAtMTA4LDI1ICs5MywxOSBAQCBj
bGFzcyBUZXN0SW5mbzsgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbmZvcm1hdGlvbiBhYm91
dCBhIHRlc3QuCiBjbGFzcyBUZXN0UGFydFJlc3VsdDsgICAgICAgICAgICAgICAgICAvLyBSZXN1
bHQgb2YgYSB0ZXN0IHBhcnQuCiBjbGFzcyBVbml0VGVzdDsgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBBIGNvbGxlY3Rpb24gb2YgdGVzdCBjYXNlcy4KIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Cis6OnN0ZDo6c3RyaW5nIFByaW50VG9TdHJpbmcoY29uc3QgVCYgdmFsdWUpOworCiBuYW1lc3Bh
Y2UgaW50ZXJuYWwgewogCiBzdHJ1Y3QgVHJhY2VJbmZvOyAgICAgICAgICAgICAgICAgICAgICAv
LyBJbmZvcm1hdGlvbiBhYm91dCBhIHRyYWNlIHBvaW50LgotY2xhc3MgU2NvcGVkVHJhY2U7ICAg
ICAgICAgICAgICAgICAgICAgLy8gSW1wbGVtZW50cyBzY29wZWQgdHJhY2UuCiBjbGFzcyBUZXN0
SW5mb0ltcGw7ICAgICAgICAgICAgICAgICAgICAvLyBPcGFxdWUgaW1wbGVtZW50YXRpb24gb2Yg
VGVzdEluZm8KIGNsYXNzIFVuaXRUZXN0SW1wbDsgICAgICAgICAgICAgICAgICAgIC8vIE9wYXF1
ZSBpbXBsZW1lbnRhdGlvbiBvZiBVbml0VGVzdAogCi0vLyBIb3cgbWFueSB0aW1lcyBJbml0R29v
Z2xlVGVzdCgpIGhhcyBiZWVuIGNhbGxlZC4KLWV4dGVybiBpbnQgZ19pbml0X2d0ZXN0X2NvdW50
OwotCiAvLyBUaGUgdGV4dCB1c2VkIGluIGZhaWx1cmUgbWVzc2FnZXMgdG8gaW5kaWNhdGUgdGhl
IHN0YXJ0IG9mIHRoZQogLy8gc3RhY2sgdHJhY2UuCiBHVEVTVF9BUElfIGV4dGVybiBjb25zdCBj
aGFyIGtTdGFja1RyYWNlTWFya2VyW107CiAKLS8vIEEgc2VjcmV0IHR5cGUgdGhhdCBHb29nbGUg
VGVzdCB1c2VycyBkb24ndCBrbm93IGFib3V0LiAgSXQgaGFzIG5vCi0vLyBkZWZpbml0aW9uIG9u
IHB1cnBvc2UuICBUaGVyZWZvcmUgaXQncyBpbXBvc3NpYmxlIHRvIGNyZWF0ZSBhCi0vLyBTZWNy
ZXQgb2JqZWN0LCB3aGljaCBpcyB3aGF0IHdlIHdhbnQuCi1jbGFzcyBTZWNyZXQ7Ci0KIC8vIFR3
byBvdmVybG9hZGVkIGhlbHBlcnMgZm9yIGNoZWNraW5nIGF0IGNvbXBpbGUgdGltZSB3aGV0aGVy
IGFuCiAvLyBleHByZXNzaW9uIGlzIGEgbnVsbCBwb2ludGVyIGxpdGVyYWwgKGkuZS4gTlVMTCBv
ciBhbnkgMC12YWx1ZWQKIC8vIGNvbXBpbGUtdGltZSBpbnRlZ3JhbCBjb25zdGFudCkuICBUaGVp
ciByZXR1cm4gdmFsdWVzIGhhdmUKQEAgLTE1MCwxMjcgKzEyOSw2NSBAQCBjaGFyICgmSXNOdWxs
TGl0ZXJhbEhlbHBlciguLi4pKVsyXTsgIC8vIE5PTElOVAogI2lmZGVmIEdURVNUX0VMTElQU0lT
X05FRURTX1BPRF8KIC8vIFdlIGxvc2Ugc3VwcG9ydCBmb3IgTlVMTCBkZXRlY3Rpb24gd2hlcmUg
dGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZQogLy8gcGFzc2luZyBub24tUE9EIGNsYXNzZXMgdGhy
b3VnaCBlbGxpcHNpcyAoLi4uKS4KLSNkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBm
YWxzZQorIyBkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBmYWxzZQogI2Vsc2UKLSNk
ZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBcCisjIGRlZmluZSBHVEVTVF9JU19OVUxM
X0xJVEVSQUxfKHgpIFwKICAgICAoc2l6ZW9mKDo6dGVzdGluZzo6aW50ZXJuYWw6OklzTnVsbExp
dGVyYWxIZWxwZXIoeCkpID09IDEpCiAjZW5kaWYgIC8vIEdURVNUX0VMTElQU0lTX05FRURTX1BP
RF8KIAogLy8gQXBwZW5kcyB0aGUgdXNlci1zdXBwbGllZCBtZXNzYWdlIHRvIHRoZSBHb29nbGUt
VGVzdC1nZW5lcmF0ZWQgbWVzc2FnZS4KLUdURVNUX0FQSV8gU3RyaW5nIEFwcGVuZFVzZXJNZXNz
YWdlKGNvbnN0IFN0cmluZyYgZ3Rlc3RfbXNnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgTWVzc2FnZSYgdXNlcl9tc2cpOwotCi0vLyBBIGhlbHBlciBjbGFzcyBm
b3IgY3JlYXRpbmcgc2NvcGVkIHRyYWNlcyBpbiB1c2VyIHByb2dyYW1zLgotY2xhc3MgR1RFU1Rf
QVBJXyBTY29wZWRUcmFjZSB7Ci0gcHVibGljOgotICAvLyBUaGUgYyd0b3IgcHVzaGVzIHRoZSBn
aXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlvbiBhbmQgbWVzc2FnZSBvbnRvCi0gIC8vIGEgdHJhY2Ug
c3RhY2sgbWFpbnRhaW5lZCBieSBHb29nbGUgVGVzdC4KLSAgU2NvcGVkVHJhY2UoY29uc3QgY2hh
ciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IE1lc3NhZ2UmIG1lc3NhZ2UpOwotCi0gIC8vIFRoZSBk
J3RvciBwb3BzIHRoZSBpbmZvIHB1c2hlZCBieSB0aGUgYyd0b3IuCi0gIC8vCi0gIC8vIE5vdGUg
dGhhdCB0aGUgZCd0b3IgaXMgbm90IHZpcnR1YWwgaW4gb3JkZXIgdG8gYmUgZWZmaWNpZW50Lgot
ICAvLyBEb24ndCBpbmhlcml0IGZyb20gU2NvcGVkVHJhY2UhCi0gIH5TY29wZWRUcmFjZSgpOwot
Ci0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTY29wZWRUcmFj
ZSk7Ci19IEdURVNUX0FUVFJJQlVURV9VTlVTRURfOyAgLy8gQSBTY29wZWRUcmFjZSBvYmplY3Qg
ZG9lcyBpdHMgam9iIGluIGl0cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGMndG9y
IGFuZCBkJ3Rvci4gIFRoZXJlZm9yZSBpdCBkb2Vzbid0Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gbmVlZCB0byBiZSB1c2VkIG90aGVyd2lzZS4KLQotLy8gQ29udmVydHMgYSBzdHJl
YW1hYmxlIHZhbHVlIHRvIGEgU3RyaW5nLiAgQSBOVUxMIHBvaW50ZXIgaXMKLS8vIGNvbnZlcnRl
ZCB0byAiKG51bGwpIi4gIFdoZW4gdGhlIGlucHV0IHZhbHVlIGlzIGEgOjpzdHJpbmcsCi0vLyA6
OnN0ZDo6c3RyaW5nLCA6OndzdHJpbmcsIG9yIDo6c3RkOjp3c3RyaW5nIG9iamVjdCwgZWFjaCBO
VUwKLS8vIGNoYXJhY3RlciBpbiBpdCBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgotLy8gRGVjbGFy
ZWQgaGVyZSBidXQgZGVmaW5lZCBpbiBndGVzdC5oLCBzbyB0aGF0IGl0IGhhcyBhY2Nlc3MKLS8v
IHRvIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBNZXNzYWdlIGNsYXNzLCByZXF1aXJlZCBieSB0aGUg
QVJNCi0vLyBjb21waWxlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotU3RyaW5nIFN0cmVhbWFi
bGVUb1N0cmluZyhjb25zdCBUJiBzdHJlYW1hYmxlKTsKLQotLy8gRm9ybWF0cyBhIHZhbHVlIHRv
IGJlIHVzZWQgaW4gYSBmYWlsdXJlIG1lc3NhZ2UuCi0KLSNpZmRlZiBHVEVTVF9ORUVEU19JU19Q
T0lOVEVSXwotCi0vLyBUaGVzZSBhcmUgbmVlZGVkIGFzIHRoZSBOb2tpYSBTeW1iaWFuIGFuZCBJ
Qk0gWEwgQy9DKysgY29tcGlsZXJzCi0vLyBjYW5ub3QgZGVjaWRlIGJldHdlZW4gY29uc3QgVCYg
YW5kIGNvbnN0IFQqIGluIGEgZnVuY3Rpb24gdGVtcGxhdGUuCi0vLyBUaGVzZSBjb21waWxlcnMg
X2Nhbl8gZGVjaWRlIGJldHdlZW4gY2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zCi0vLyBm
b3IgVCBhbmQgVCosIHNvIGEgdHIxOjp0eXBlX3RyYWl0cy1saWtlIGlzX3BvaW50ZXIgd29ya3Ms
IGFuZCB3ZQotLy8gY2FuIG92ZXJsb2FkIG9uIHRoYXQuCitHVEVTVF9BUElfIHN0ZDo6c3RyaW5n
IEFwcGVuZFVzZXJNZXNzYWdlKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBndGVzdF9tc2csIGNv
bnN0IE1lc3NhZ2UmIHVzZXJfbXNnKTsKIAotLy8gVGhpcyBvdmVybG9hZCBtYWtlcyBzdXJlIHRo
YXQgYWxsIHBvaW50ZXJzIChpbmNsdWRpbmcKLS8vIHRob3NlIHRvIGNoYXIgb3Igd2NoYXJfdCkg
YXJlIHByaW50ZWQgYXMgcmF3IHBvaW50ZXJzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxp
bmUgU3RyaW5nIEZvcm1hdFZhbHVlRm9yRmFpbHVyZU1lc3NhZ2UoaW50ZXJuYWw6OnRydWVfdHlw
ZSAvKmR1bW15Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VCogcG9pbnRlcikgewotICByZXR1cm4gU3RyZWFtYWJsZVRvU3RyaW5nKHN0YXRpY19jYXN0PGNv
bnN0IHZvaWQqPihwb2ludGVyKSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5l
IFN0cmluZyBGb3JtYXRWYWx1ZUZvckZhaWx1cmVNZXNzYWdlKGludGVybmFsOjpmYWxzZV90eXBl
IC8qZHVtbXkqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUJiB2YWx1ZSkgewotICByZXR1cm4gU3RyZWFtYWJsZVRvU3RyaW5nKHZhbHVlKTsKLX0K
KyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGlu
ZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3QgVCYgdmFsdWUpIHsKLSAgcmV0
dXJuIEZvcm1hdFZhbHVlRm9yRmFpbHVyZU1lc3NhZ2UoCi0gICAgICB0eXBlbmFtZSBpbnRlcm5h
bDo6aXNfcG9pbnRlcjxUPjo6dHlwZSgpLCB2YWx1ZSk7Ci19CitHVEVTVF9ESVNBQkxFX01TQ19X
QVJOSU5HU19QVVNIXyg0Mjc1IFwKKy8qIGFuIGV4cG9ydGVkIGNsYXNzIHdhcyBkZXJpdmVkIGZy
b20gYSBjbGFzcyB0aGF0IHdhcyBub3QgZXhwb3J0ZWQgKi8pCiAKLSNlbHNlCisvLyBUaGlzIGV4
Y2VwdGlvbiBpcyB0aHJvd24gYnkgKGFuZCBvbmx5IGJ5KSBhIGZhaWxlZCBHb29nbGUgVGVzdAor
Ly8gYXNzZXJ0aW9uIHdoZW4gR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSBpcyB0cnVlIChp
ZiBleGNlcHRpb25zCisvLyBhcmUgZW5hYmxlZCkuICBXZSBkZXJpdmUgaXQgZnJvbSBzdGQ6OnJ1
bnRpbWVfZXJyb3IsIHdoaWNoIGlzIGZvcgorLy8gZXJyb3JzIHByZXN1bWFibHkgZGV0ZWN0YWJs
ZSBvbmx5IGF0IHJ1biB0aW1lLiAgU2luY2UKKy8vIHN0ZDo6cnVudGltZV9lcnJvciBpbmhlcml0
cyBmcm9tIHN0ZDo6ZXhjZXB0aW9uLCBtYW55IHRlc3RpbmcKKy8vIGZyYW1ld29ya3Mga25vdyBo
b3cgdG8gZXh0cmFjdCBhbmQgcHJpbnQgdGhlIG1lc3NhZ2UgaW5zaWRlIGl0LgorY2xhc3MgR1RF
U1RfQVBJXyBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbiA6IHB1YmxpYyA6OnN0ZDo6cnVudGlt
ZV9lcnJvciB7CisgcHVibGljOgorICBleHBsaWNpdCBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlv
bihjb25zdCBUZXN0UGFydFJlc3VsdCYgZmFpbHVyZSk7Cit9OwogCi0vLyBUaGVzZSBhcmUgbmVl
ZGVkIGFzIHRoZSBhYm92ZSBzb2x1dGlvbiB1c2luZyBpc19wb2ludGVyIGhhcyB0aGUKLS8vIGxp
bWl0YXRpb24gdGhhdCBUIGNhbm5vdCBiZSBhIHR5cGUgd2l0aG91dCBleHRlcm5hbCBsaW5rYWdl
LCB3aGVuCi0vLyBjb21waWxlZCB1c2luZyBNU1ZDLgorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklO
R1NfUE9QXygpICAvLyAgNDI3NQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBTdHJp
bmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3QgVCYgdmFsdWUpIHsKLSAgcmV0dXJuIFN0
cmVhbWFibGVUb1N0cmluZyh2YWx1ZSk7Ci19CisjZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJ
T05TCiAKLS8vIFRoaXMgb3ZlcmxvYWQgbWFrZXMgc3VyZSB0aGF0IGFsbCBwb2ludGVycyAoaW5j
bHVkaW5nCi0vLyB0aG9zZSB0byBjaGFyIG9yIHdjaGFyX3QpIGFyZSBwcmludGVkIGFzIHJhdyBw
b2ludGVycy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFN0cmluZyBGb3JtYXRGb3JG
YWlsdXJlTWVzc2FnZShUKiBwb2ludGVyKSB7Ci0gIHJldHVybiBTdHJlYW1hYmxlVG9TdHJpbmco
c3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHBvaW50ZXIpKTsKLX0KK25hbWVzcGFjZSBlZGl0X2Rp
c3RhbmNlIHsKKy8vIFJldHVybnMgdGhlIG9wdGltYWwgZWRpdHMgdG8gZ28gZnJvbSAnbGVmdCcg
dG8gJ3JpZ2h0Jy4KKy8vIEFsbCBlZGl0cyBjb3N0IHRoZSBzYW1lLCB3aXRoIHJlcGxhY2UgaGF2
aW5nIGxvd2VyIHByaW9yaXR5IHRoYW4KKy8vIGFkZC9yZW1vdmUuCisvLyBTaW1wbGUgaW1wbGVt
ZW50YXRpb24gb2YgdGhlIFdhZ25lci1GaXNjaGVyIGFsZ29yaXRobS4KKy8vIFNlZSBodHRwOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL1dhZ25lci1GaXNjaGVyX2FsZ29yaXRobQorZW51bSBFZGl0
VHlwZSB7IGtNYXRjaCwga0FkZCwga1JlbW92ZSwga1JlcGxhY2UgfTsKK0dURVNUX0FQSV8gc3Rk
Ojp2ZWN0b3I8RWRpdFR5cGU+IENhbGN1bGF0ZU9wdGltYWxFZGl0cygKKyAgICBjb25zdCBzdGQ6
OnZlY3RvcjxzaXplX3Q+JiBsZWZ0LCBjb25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+JiByaWdodCk7
CiAKLSNlbmRpZiAgLy8gR1RFU1RfTkVFRFNfSVNfUE9JTlRFUl8KLQotLy8gVGhlc2Ugb3Zlcmxv
YWRlZCB2ZXJzaW9ucyBoYW5kbGUgbmFycm93IGFuZCB3aWRlIGNoYXJhY3RlcnMuCi1HVEVTVF9B
UElfIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjaGFyIGNoKTsKLUdURVNUX0FQSV8g
U3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKHdjaGFyX3Qgd2NoYXIpOwotCi0vLyBXaGVu
IHRoaXMgb3BlcmFuZCBpcyBhIGNvbnN0IGNoYXIqIG9yIGNoYXIqLCBhbmQgdGhlIG90aGVyIG9w
ZXJhbmQKLS8vIGlzIGEgOjpzdGQ6OnN0cmluZyBvciA6OnN0cmluZywgd2UgcHJpbnQgdGhpcyBv
cGVyYW5kIGFzIGEgQyBzdHJpbmcKLS8vIHJhdGhlciB0aGFuIGEgcG9pbnRlci4gIFdlIGRvIHRo
ZSBzYW1lIGZvciB3aWRlIHN0cmluZ3MuCi0KLS8vIFRoaXMgaW50ZXJuYWwgbWFjcm8gaXMgdXNl
ZCB0byBhdm9pZCBkdXBsaWNhdGVkIGNvZGUuCi0jZGVmaW5lIEdURVNUX0ZPUk1BVF9JTVBMXyhv
cGVyYW5kMl90eXBlLCBvcGVyYW5kMV9wcmludGVyKVwKLWlubGluZSBTdHJpbmcgRm9ybWF0Rm9y
Q29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKFwKLSAgICBvcGVyYW5kMl90eXBlOjp2YWx1ZV90eXBl
KiBzdHIsIGNvbnN0IG9wZXJhbmQyX3R5cGUmIC8qb3BlcmFuZDIqLykge1wKLSAgcmV0dXJuIG9w
ZXJhbmQxX3ByaW50ZXIoc3RyKTtcCi19XAotaW5saW5lIFN0cmluZyBGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2UoXAotICAgIGNvbnN0IG9wZXJhbmQyX3R5cGU6OnZhbHVlX3R5cGUq
IHN0ciwgY29uc3Qgb3BlcmFuZDJfdHlwZSYgLypvcGVyYW5kMiovKSB7XAotICByZXR1cm4gb3Bl
cmFuZDFfcHJpbnRlcihzdHIpO1wKLX0KKy8vIFNhbWUgYXMgYWJvdmUsIGJ1dCB0aGUgaW5wdXQg
aXMgcmVwcmVzZW50ZWQgYXMgc3RyaW5ncy4KK0dURVNUX0FQSV8gc3RkOjp2ZWN0b3I8RWRpdFR5
cGU+IENhbGN1bGF0ZU9wdGltYWxFZGl0cygKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4mIGxlZnQsCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiByaWdodCk7
CiAKLUdURVNUX0ZPUk1BVF9JTVBMXyg6OnN0ZDo6c3RyaW5nLCBTdHJpbmc6OlNob3dDU3RyaW5n
UXVvdGVkKQotI2lmIEdURVNUX0hBU19TVERfV1NUUklORwotR1RFU1RfRk9STUFUX0lNUExfKDo6
c3RkOjp3c3RyaW5nLCBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZCkKLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1NURF9XU1RSSU5HCisvLyBDcmVhdGUgYSBkaWZmIG9mIHRoZSBpbnB1dCBzdHJp
bmdzIGluIFVuaWZpZWQgZGlmZiBmb3JtYXQuCitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIENyZWF0
ZVVuaWZpZWREaWZmKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgbGVmdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+JiByaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGNvbnRleHQgPSAyKTsKIAotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi1H
VEVTVF9GT1JNQVRfSU1QTF8oOjpzdHJpbmcsIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQpCi0j
ZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9X
U1RSSU5HCi1HVEVTVF9GT1JNQVRfSU1QTF8oOjp3c3RyaW5nLCBTdHJpbmc6OlNob3dXaWRlQ1N0
cmluZ1F1b3RlZCkKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCit9ICAvLyBu
YW1lc3BhY2UgZWRpdF9kaXN0YW5jZQogCi0jdW5kZWYgR1RFU1RfRk9STUFUX0lNUExfCisvLyBD
YWxjdWxhdGUgdGhlIGRpZmYgYmV0d2VlbiAnbGVmdCcgYW5kICdyaWdodCcgYW5kIHJldHVybiBp
dCBpbiB1bmlmaWVkIGRpZmYKKy8vIGZvcm1hdC4KKy8vIElmIG5vdCBudWxsLCBzdG9yZXMgaW4g
J3RvdGFsX2xpbmVfY291bnQnIHRoZSB0b3RhbCBudW1iZXIgb2YgbGluZXMgZm91bmQKKy8vIGlu
IGxlZnQgKyByaWdodC4KK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgRGlmZlN0cmluZ3MoY29uc3Qg
c3RkOjpzdHJpbmcmIGxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiByaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90KiB0b3RhbF9saW5lX2NvdW50KTsKIAogLy8gQ29uc3RydWN0cyBhbmQgcmV0dXJu
cyB0aGUgbWVzc2FnZSBmb3IgYW4gZXF1YWxpdHkgYXNzZXJ0aW9uCiAvLyAoZS5nLiBBU1NFUlRf
RVEsIEVYUEVDVF9TVFJFUSwgZXRjKSBmYWlsdXJlLgpAQCAtMjg5LDEyICsyMDYsMTIgQEAgR1RF
U1RfRk9STUFUX0lNUExfKDo6d3N0cmluZywgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQp
CiAvLyBiZSBpbnNlcnRlZCBpbnRvIHRoZSBtZXNzYWdlLgogR1RFU1RfQVBJXyBBc3NlcnRpb25S
ZXN1bHQgRXFGYWlsdXJlKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBl
eHBlY3RlZF92YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBTdHJpbmcmIGFjdHVhbF92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRfdmFsdWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFjdHVhbF92YWx1ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yaW5nX2Nhc2UpOwog
CiAvLyBDb25zdHJ1Y3RzIGEgZmFpbHVyZSBtZXNzYWdlIGZvciBCb29sZWFuIGFzc2VydGlvbnMg
c3VjaCBhcyBFWFBFQ1RfVFJVRS4KLUdURVNUX0FQSV8gU3RyaW5nIEdldEJvb2xBc3NlcnRpb25G
YWlsdXJlTWVzc2FnZSgKK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgR2V0Qm9vbEFzc2VydGlvbkZh
aWx1cmVNZXNzYWdlKAogICAgIGNvbnN0IEFzc2VydGlvblJlc3VsdCYgYXNzZXJ0aW9uX3Jlc3Vs
dCwKICAgICBjb25zdCBjaGFyKiBleHByZXNzaW9uX3RleHQsCiAgICAgY29uc3QgY2hhciogYWN0
dWFsX3ByZWRpY2F0ZV92YWx1ZSwKQEAgLTM2OSw3ICsyODYsNyBAQCBjbGFzcyBGbG9hdGluZ1Bv
aW50IHsKICAgLy8gYml0cy4gIFRoZXJlZm9yZSwgNCBzaG91bGQgYmUgZW5vdWdoIGZvciBvcmRp
bmFyeSB1c2UuCiAgIC8vCiAgIC8vIFNlZSB0aGUgZm9sbG93aW5nIGFydGljbGUgZm9yIG1vcmUg
ZGV0YWlscyBvbiBVTFA6Ci0gIC8vIGh0dHA6Ly93d3cuY3lnbnVzLXNvZnR3YXJlLmNvbS9wYXBl
cnMvY29tcGFyaW5nZmxvYXRzL2NvbXBhcmluZ2Zsb2F0cy5odG0uCisgIC8vIGh0dHA6Ly9yYW5k
b21hc2NpaS53b3JkcHJlc3MuY29tLzIwMTIvMDIvMjUvY29tcGFyaW5nLWZsb2F0aW5nLXBvaW50
LW51bWJlcnMtMjAxMi1lZGl0aW9uLwogICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtNYXhVbHBzID0g
NDsKIAogICAvLyBDb25zdHJ1Y3RzIGEgRmxvYXRpbmdQb2ludCBmcm9tIGEgcmF3IGZsb2F0aW5n
LXBvaW50IG51bWJlci4KQEAgLTM5Niw2ICszMTMsOSBAQCBjbGFzcyBGbG9hdGluZ1BvaW50IHsK
ICAgICByZXR1cm4gUmVpbnRlcnByZXRCaXRzKGtFeHBvbmVudEJpdE1hc2spOwogICB9CiAKKyAg
Ly8gUmV0dXJucyB0aGUgbWF4aW11bSByZXByZXNlbnRhYmxlIGZpbml0ZSBmbG9hdGluZy1wb2lu
dCBudW1iZXIuCisgIHN0YXRpYyBSYXdUeXBlIE1heCgpOworCiAgIC8vIE5vbi1zdGF0aWMgbWV0
aG9kcwogCiAgIC8vIFJldHVybnMgdGhlIGJpdHMgdGhhdCByZXByZXNlbnRzIHRoaXMgbnVtYmVy
LgpAQCAtNDc2LDYgKzM5NiwxMyBAQCBjbGFzcyBGbG9hdGluZ1BvaW50IHsKICAgRmxvYXRpbmdQ
b2ludFVuaW9uIHVfOwogfTsKIAorLy8gV2UgY2Fubm90IHVzZSBzdGQ6Om51bWVyaWNfbGltaXRz
PFQ+OjptYXgoKSBhcyBpdCBjbGFzaGVzIHdpdGggdGhlIG1heCgpCisvLyBtYWNybyBkZWZpbmVk
IGJ5IDx3aW5kb3dzLmg+LgordGVtcGxhdGUgPD4KK2lubGluZSBmbG9hdCBGbG9hdGluZ1BvaW50
PGZsb2F0Pjo6TWF4KCkgeyByZXR1cm4gRkxUX01BWDsgfQordGVtcGxhdGUgPD4KK2lubGluZSBk
b3VibGUgRmxvYXRpbmdQb2ludDxkb3VibGU+OjpNYXgoKSB7IHJldHVybiBEQkxfTUFYOyB9CisK
IC8vIFR5cGVkZWZzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIEZsb2F0aW5nUG9pbnQgdGVtcGxhdGUg
Y2xhc3MgdGhhdCB3ZQogLy8gY2FyZSB0byB1c2UuCiB0eXBlZGVmIEZsb2F0aW5nUG9pbnQ8Zmxv
YXQ+IEZsb2F0OwpAQCAtNTU4LDI0ICs0ODUsMTggQEAgR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1
bHQgSXNIUkVTVUxURmFpbHVyZShjb25zdCBjaGFyKiBleHByLAogCiAjZW5kaWYgIC8vIEdURVNU
X09TX1dJTkRPV1MKIAotLy8gRm9ybWF0cyBhIHNvdXJjZSBmaWxlIHBhdGggYW5kIGEgbGluZSBu
dW1iZXIgYXMgdGhleSB3b3VsZCBhcHBlYXIKLS8vIGluIGEgY29tcGlsZXIgZXJyb3IgbWVzc2Fn
ZS4KLWlubGluZSBTdHJpbmcgRm9ybWF0RmlsZUxvY2F0aW9uKGNvbnN0IGNoYXIqIGZpbGUsIGlu
dCBsaW5lKSB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IGZpbGVfbmFtZSA9IGZpbGUgPT0gTlVMTCA/
ICJ1bmtub3duIGZpbGUiIDogZmlsZTsKLSAgaWYgKGxpbmUgPCAwKSB7Ci0gICAgcmV0dXJuIFN0
cmluZzo6Rm9ybWF0KCIlczoiLCBmaWxlX25hbWUpOwotICB9Ci0jaWZkZWYgX01TQ19WRVIKLSAg
cmV0dXJuIFN0cmluZzo6Rm9ybWF0KCIlcyglZCk6IiwgZmlsZV9uYW1lLCBsaW5lKTsKLSNlbHNl
Ci0gIHJldHVybiBTdHJpbmc6OkZvcm1hdCgiJXM6JWQ6IiwgZmlsZV9uYW1lLCBsaW5lKTsKLSNl
bmRpZiAgLy8gX01TQ19WRVIKLX0KLQogLy8gVHlwZXMgb2YgU2V0VXBUZXN0Q2FzZSgpIGFuZCBU
ZWFyRG93blRlc3RDYXNlKCkgZnVuY3Rpb25zLgogdHlwZWRlZiB2b2lkICgqU2V0VXBUZXN0Q2Fz
ZUZ1bmMpKCk7CiB0eXBlZGVmIHZvaWQgKCpUZWFyRG93blRlc3RDYXNlRnVuYykoKTsKIAorc3Ry
dWN0IENvZGVMb2NhdGlvbiB7CisgIENvZGVMb2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgYV9m
aWxlLCBpbnQgYV9saW5lKQorICAgICAgOiBmaWxlKGFfZmlsZSksIGxpbmUoYV9saW5lKSB7fQor
CisgIHN0ZDo6c3RyaW5nIGZpbGU7CisgIGludCBsaW5lOworfTsKKwogLy8gQ3JlYXRlcyBhIG5l
dyBUZXN0SW5mbyBvYmplY3QgYW5kIHJlZ2lzdGVycyBpdCB3aXRoIEdvb2dsZSBUZXN0OwogLy8g
cmV0dXJucyB0aGUgY3JlYXRlZCBvYmplY3QuCiAvLwpAQCAtNTgzLDEwICs1MDQsMTEgQEAgdHlw
ZWRlZiB2b2lkICgqVGVhckRvd25UZXN0Q2FzZUZ1bmMpKCk7CiAvLwogLy8gICB0ZXN0X2Nhc2Vf
bmFtZTogICBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UKIC8vICAgbmFtZTogICAgICAgICAgICAgbmFt
ZSBvZiB0aGUgdGVzdAotLy8gICB0ZXN0X2Nhc2VfY29tbWVudDogYSBjb21tZW50IG9uIHRoZSB0
ZXN0IGNhc2UgdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluCi0vLyAgICAgICAgICAgICAgICAgICAg
ICB0aGUgdGVzdCBvdXRwdXQKLS8vICAgY29tbWVudDogICAgICAgICAgYSBjb21tZW50IG9uIHRo
ZSB0ZXN0IHRoYXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKLS8vICAgICAgICAgICAgICAgICAg
ICAgdGVzdCBvdXRwdXQKKy8vICAgdHlwZV9wYXJhbSAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHRl
c3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorLy8gICAgICAgICAgICAgICAgICAgICB0
aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisvLyAgIHZh
bHVlX3BhcmFtICAgICAgIHRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRlc3QncyB2YWx1ZSBw
YXJhbWV0ZXIsCisvLyAgICAgICAgICAgICAgICAgICAgIG9yIE5VTEwgaWYgdGhpcyBpcyBub3Qg
YSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKy8vICAgY29kZV9sb2NhdGlvbjogICAgY29kZSBs
b2NhdGlvbiB3aGVyZSB0aGUgdGVzdCBpcyBkZWZpbmVkCiAvLyAgIGZpeHR1cmVfY2xhc3NfaWQ6
IElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKIC8vICAgc2V0X3VwX3RjOiAgICAgICAgcG9p
bnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSB0ZXN0IGNhc2UKIC8vICAgdGVh
cl9kb3duX3RjOiAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCB0ZWFycyBkb3duIHRo
ZSB0ZXN0IGNhc2UKQEAgLTU5NCw4ICs1MTYsMTEgQEAgdHlwZWRlZiB2b2lkICgqVGVhckRvd25U
ZXN0Q2FzZUZ1bmMpKCk7CiAvLyAgICAgICAgICAgICAgICAgICAgIFRoZSBuZXdseSBjcmVhdGVk
IFRlc3RJbmZvIGluc3RhbmNlIHdpbGwgYXNzdW1lCiAvLyAgICAgICAgICAgICAgICAgICAgIG93
bmVyc2hpcCBvZiB0aGUgZmFjdG9yeSBvYmplY3QuCiBHVEVTVF9BUElfIFRlc3RJbmZvKiBNYWtl
QW5kUmVnaXN0ZXJUZXN0SW5mbygKLSAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwgY29u
c3QgY2hhciogbmFtZSwKLSAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfY29tbWVudCwgY29uc3Qg
Y2hhciogY29tbWVudCwKKyAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICBjb25z
dCBjaGFyKiBuYW1lLAorICAgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0sCisgICAgY29uc3QgY2hh
ciogdmFsdWVfcGFyYW0sCisgICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24sCiAgICAgVHlw
ZUlkIGZpeHR1cmVfY2xhc3NfaWQsCiAgICAgU2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAog
ICAgIFRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YywKQEAgLTYwNCwxMCArNTI5LDEz
IEBAIEdURVNUX0FQSV8gVGVzdEluZm8qIE1ha2VBbmRSZWdpc3RlclRlc3RJbmZvKAogLy8gSWYg
KnBzdHIgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeCwgbW9kaWZpZXMgKnBzdHIgdG8gYmUg
cmlnaHQKIC8vIHBhc3QgdGhlIHByZWZpeCBhbmQgcmV0dXJucyB0cnVlOyBvdGhlcndpc2UgbGVh
dmVzICpwc3RyIHVuY2hhbmdlZAogLy8gYW5kIHJldHVybnMgZmFsc2UuICBOb25lIG9mIHBzdHIs
ICpwc3RyLCBhbmQgcHJlZml4IGNhbiBiZSBOVUxMLgotYm9vbCBTa2lwUHJlZml4KGNvbnN0IGNo
YXIqIHByZWZpeCwgY29uc3QgY2hhcioqIHBzdHIpOworR1RFU1RfQVBJXyBib29sIFNraXBQcmVm
aXgoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiogcHN0cik7CiAKICNpZiBHVEVTVF9I
QVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCiAKK0dURVNUX0RJU0FCTEVf
TVNDX1dBUk5JTkdTX1BVU0hfKDQyNTEgXAorLyogY2xhc3MgQSBuZWVkcyB0byBoYXZlIGRsbC1p
bnRlcmZhY2UgdG8gYmUgdXNlZCBieSBjbGllbnRzIG9mIGNsYXNzIEIgKi8pCisKIC8vIFN0YXRl
IG9mIHRoZSBkZWZpbml0aW9uIG9mIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZS4KIGNs
YXNzIEdURVNUX0FQSV8gVHlwZWRUZXN0Q2FzZVBTdGF0ZSB7CiAgcHVibGljOgpAQCAtNjI1LDEw
ICs1NTMsMjEgQEAgY2xhc3MgR1RFU1RfQVBJXyBUeXBlZFRlc3RDYXNlUFN0YXRlIHsKICAgICAg
IGZmbHVzaChzdGRlcnIpOwogICAgICAgcG9zaXg6OkFib3J0KCk7CiAgICAgfQotICAgIGRlZmlu
ZWRfdGVzdF9uYW1lc18uaW5zZXJ0KHRlc3RfbmFtZSk7CisgICAgcmVnaXN0ZXJlZF90ZXN0c18u
aW5zZXJ0KAorICAgICAgICA6OnN0ZDo6bWFrZV9wYWlyKHRlc3RfbmFtZSwgQ29kZUxvY2F0aW9u
KGZpbGUsIGxpbmUpKSk7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIAorICBib29sIFRlc3RFeGlz
dHMoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RfbmFtZSkgY29uc3QgeworICAgIHJldHVybiByZWdp
c3RlcmVkX3Rlc3RzXy5jb3VudCh0ZXN0X25hbWUpID4gMDsKKyAgfQorCisgIGNvbnN0IENvZGVM
b2NhdGlvbiYgR2V0Q29kZUxvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0X25hbWUpIGNv
bnN0IHsKKyAgICBSZWdpc3RlcmVkVGVzdHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVnaXN0
ZXJlZF90ZXN0c18uZmluZCh0ZXN0X25hbWUpOworICAgIEdURVNUX0NIRUNLXyhpdCAhPSByZWdp
c3RlcmVkX3Rlc3RzXy5lbmQoKSk7CisgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CisgIH0KKwogICAv
LyBWZXJpZmllcyB0aGF0IHJlZ2lzdGVyZWRfdGVzdHMgbWF0Y2ggdGhlIHRlc3QgbmFtZXMgaW4K
ICAgLy8gZGVmaW5lZF90ZXN0X25hbWVzXzsgcmV0dXJucyByZWdpc3RlcmVkX3Rlc3RzIGlmIHN1
Y2Nlc3NmdWwsIG9yCiAgIC8vIGFib3J0cyB0aGUgcHJvZ3JhbSBvdGhlcndpc2UuCkBAIC02MzYs
MTAgKzU3NSwxNCBAQCBjbGFzcyBHVEVTVF9BUElfIFR5cGVkVGVzdENhc2VQU3RhdGUgewogICAg
ICAgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIHJlZ2lzdGVyZWRfdGVz
dHMpOwogCiAgcHJpdmF0ZToKKyAgdHlwZWRlZiA6OnN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBDb2Rl
TG9jYXRpb24+IFJlZ2lzdGVyZWRUZXN0c01hcDsKKwogICBib29sIHJlZ2lzdGVyZWRfOwotICA6
OnN0ZDo6c2V0PGNvbnN0IGNoYXIqPiBkZWZpbmVkX3Rlc3RfbmFtZXNfOworICBSZWdpc3RlcmVk
VGVzdHNNYXAgcmVnaXN0ZXJlZF90ZXN0c187CiB9OwogCitHVEVTVF9ESVNBQkxFX01TQ19XQVJO
SU5HU19QT1BfKCkgIC8vICA0MjUxCisKIC8vIFNraXBzIHRvIHRoZSBmaXJzdCBub24tc3BhY2Ug
Y2hhciBhZnRlciB0aGUgZmlyc3QgY29tbWEgaW4gJ3N0cic7CiAvLyByZXR1cm5zIE5VTEwgaWYg
bm8gY29tbWEgaXMgZm91bmQgaW4gJ3N0cicuCiBpbmxpbmUgY29uc3QgY2hhciogU2tpcENvbW1h
KGNvbnN0IGNoYXIqIHN0cikgewpAQCAtNjQ3LDE1ICs1OTAsNTEgQEAgaW5saW5lIGNvbnN0IGNo
YXIqIFNraXBDb21tYShjb25zdCBjaGFyKiBzdHIpIHsKICAgaWYgKGNvbW1hID09IE5VTEwpIHsK
ICAgICByZXR1cm4gTlVMTDsKICAgfQotICB3aGlsZSAoaXNzcGFjZSgqKCsrY29tbWEpKSkge30K
KyAgd2hpbGUgKElzU3BhY2UoKigrK2NvbW1hKSkpIHt9CiAgIHJldHVybiBjb21tYTsKIH0KIAog
Ly8gUmV0dXJucyB0aGUgcHJlZml4IG9mICdzdHInIGJlZm9yZSB0aGUgZmlyc3QgY29tbWEgaW4g
aXQ7IHJldHVybnMKIC8vIHRoZSBlbnRpcmUgc3RyaW5nIGlmIGl0IGNvbnRhaW5zIG5vIGNvbW1h
LgotaW5saW5lIFN0cmluZyBHZXRQcmVmaXhVbnRpbENvbW1hKGNvbnN0IGNoYXIqIHN0cikgewor
aW5saW5lIHN0ZDo6c3RyaW5nIEdldFByZWZpeFVudGlsQ29tbWEoY29uc3QgY2hhciogc3RyKSB7
CiAgIGNvbnN0IGNoYXIqIGNvbW1hID0gc3RyY2hyKHN0ciwgJywnKTsKLSAgcmV0dXJuIGNvbW1h
ID09IE5VTEwgPyBTdHJpbmcoc3RyKSA6IFN0cmluZyhzdHIsIGNvbW1hIC0gc3RyKTsKKyAgcmV0
dXJuIGNvbW1hID09IE5VTEwgPyBzdHIgOiBzdGQ6OnN0cmluZyhzdHIsIGNvbW1hKTsKK30KKwor
Ly8gU3BsaXRzIGEgZ2l2ZW4gc3RyaW5nIG9uIGEgZ2l2ZW4gZGVsaW1pdGVyLCBwb3B1bGF0aW5n
IGEgZ2l2ZW4KKy8vIHZlY3RvciB3aXRoIHRoZSBmaWVsZHMuCit2b2lkIFNwbGl0U3RyaW5nKGNv
bnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgY2hhciBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAg
IDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpzdHJpbmc+KiBkZXN0KTsKKworLy8gVGhlIGRlZmF1bHQg
YXJndW1lbnQgdG8gdGhlIHRlbXBsYXRlIGJlbG93IGZvciB0aGUgY2FzZSB3aGVuIHRoZSB1c2Vy
IGRvZXMKKy8vIG5vdCBwcm92aWRlIGEgbmFtZSBnZW5lcmF0b3IuCitzdHJ1Y3QgRGVmYXVsdE5h
bWVHZW5lcmF0b3IgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIHN0ZDo6c3Ry
aW5nIEdldE5hbWUoaW50IGkpIHsKKyAgICByZXR1cm4gU3RyZWFtYWJsZVRvU3RyaW5nKGkpOwor
ICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUHJvdmlkZWQgPSBEZWZhdWx0TmFtZUdlbmVy
YXRvcj4KK3N0cnVjdCBOYW1lR2VuZXJhdG9yU2VsZWN0b3IgeworICB0eXBlZGVmIFByb3ZpZGVk
IHR5cGU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTmFtZUdlbmVyYXRvcj4KK3ZvaWQgR2Vu
ZXJhdGVOYW1lc1JlY3Vyc2l2ZWx5KFR5cGVzMCwgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+Kiwg
aW50KSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTmFtZUdlbmVyYXRvciwgdHlwZW5hbWUgVHlw
ZXM+Cit2b2lkIEdlbmVyYXRlTmFtZXNSZWN1cnNpdmVseShUeXBlcywgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+KiByZXN1bHQsIGludCBpKSB7CisgIHJlc3VsdC0+cHVzaF9iYWNrKE5hbWVHZW5l
cmF0b3I6OnRlbXBsYXRlIEdldE5hbWU8dHlwZW5hbWUgVHlwZXM6OkhlYWQ+KGkpKTsKKyAgR2Vu
ZXJhdGVOYW1lc1JlY3Vyc2l2ZWx5PE5hbWVHZW5lcmF0b3I+KHR5cGVuYW1lIFR5cGVzOjpUYWls
KCksIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkg
KyAxKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE5hbWVHZW5lcmF0b3IsIHR5cGVuYW1lIFR5
cGVzPgorc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdlbmVyYXRlTmFtZXMoKSB7CisgIHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiByZXN1bHQ7CisgIEdlbmVyYXRlTmFtZXNSZWN1cnNpdmVseTxO
YW1lR2VuZXJhdG9yPihUeXBlcygpLCAmcmVzdWx0LCAwKTsKKyAgcmV0dXJuIHJlc3VsdDsKIH0K
IAogLy8gVHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIFRlc3RTZWwsIFR5cGVzPjo6UmVn
aXN0ZXIoKQpAQCAtNjcyLDggKzY1MSwxMCBAQCBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3Qg
ewogICAvLyBzcGVjaWZpZWQgaW4gSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoUHJlZml4
LCBUZXN0Q2FzZSwKICAgLy8gVHlwZXMpLiAgVmFsaWQgdmFsdWVzIGZvciAnaW5kZXgnIGFyZSBb
MCwgTiAtIDFdIHdoZXJlIE4gaXMgdGhlCiAgIC8vIGxlbmd0aCBvZiBUeXBlcy4KLSAgc3RhdGlj
IGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiBjYXNlX25hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRlc3RfbmFtZXMsIGludCBpbmRl
eCkgeworICBzdGF0aWMgYm9vbCBSZWdpc3Rlcihjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IENv
ZGVMb2NhdGlvbiYgY29kZV9sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogY2FzZV9uYW1lLCBjb25zdCBjaGFyKiB0ZXN0X25hbWVzLCBpbnQgaW5kZXgsCisgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgdHlwZV9u
YW1lcyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU5hbWVzPERlZmF1bHRO
YW1lR2VuZXJhdG9yLCBUeXBlcz4oKSkgewogICAgIHR5cGVkZWYgdHlwZW5hbWUgVHlwZXM6Okhl
YWQgVHlwZTsKICAgICB0eXBlZGVmIEZpeHR1cmU8VHlwZT4gRml4dHVyZUNsYXNzOwogICAgIHR5
cGVkZWYgdHlwZW5hbWUgR1RFU1RfQklORF8oVGVzdFNlbCwgVHlwZSkgVGVzdENsYXNzOwpAQCAt
NjgxLDE5ICs2NjIsMjMgQEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0IHsKICAgICAvLyBG
aXJzdCwgcmVnaXN0ZXJzIHRoZSBmaXJzdCB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBpbiB0aGUg
dHlwZQogICAgIC8vIGxpc3QuCiAgICAgTWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8oCi0gICAgICAg
IFN0cmluZzo6Rm9ybWF0KCIlcyVzJXMvJWQiLCBwcmVmaXgsIHByZWZpeFswXSA9PSAnXDAnID8g
IiIgOiAiLyIsCi0gICAgICAgICAgICAgICAgICAgICAgIGNhc2VfbmFtZSwgaW5kZXgpLmNfc3Ry
KCksCi0gICAgICAgIEdldFByZWZpeFVudGlsQ29tbWEodGVzdF9uYW1lcykuY19zdHIoKSwKLSAg
ICAgICAgU3RyaW5nOjpGb3JtYXQoIlR5cGVQYXJhbSA9ICVzIiwgR2V0VHlwZU5hbWU8VHlwZT4o
KS5jX3N0cigpKS5jX3N0cigpLAotICAgICAgICAiIiwKLSAgICAgICAgR2V0VHlwZUlkPEZpeHR1
cmVDbGFzcz4oKSwKLSAgICAgICAgVGVzdENsYXNzOjpTZXRVcFRlc3RDYXNlLAotICAgICAgICBU
ZXN0Q2xhc3M6OlRlYXJEb3duVGVzdENhc2UsCi0gICAgICAgIG5ldyBUZXN0RmFjdG9yeUltcGw8
VGVzdENsYXNzPik7CisgICAgICAgIChzdGQ6OnN0cmluZyhwcmVmaXgpICsgKHByZWZpeFswXSA9
PSAnXDAnID8gIiIgOiAiLyIpICsgY2FzZV9uYW1lICsKKyAgICAgICAgICIvIiArIHR5cGVfbmFt
ZXNbaW5kZXhdKQorICAgICAgICAgICAgLmNfc3RyKCksCisgICAgICAgIFN0cmlwVHJhaWxpbmdT
cGFjZXMoR2V0UHJlZml4VW50aWxDb21tYSh0ZXN0X25hbWVzKSkuY19zdHIoKSwKKyAgICAgICAg
R2V0VHlwZU5hbWU8VHlwZT4oKS5jX3N0cigpLAorICAgICAgICBOVUxMLCAgLy8gTm8gdmFsdWUg
cGFyYW1ldGVyLgorICAgICAgICBjb2RlX2xvY2F0aW9uLCBHZXRUeXBlSWQ8Rml4dHVyZUNsYXNz
PigpLCBUZXN0Q2xhc3M6OlNldFVwVGVzdENhc2UsCisgICAgICAgIFRlc3RDbGFzczo6VGVhckRv
d25UZXN0Q2FzZSwgbmV3IFRlc3RGYWN0b3J5SW1wbDxUZXN0Q2xhc3M+KTsKIAogICAgIC8vIE5l
eHQsIHJlY3Vyc2VzIChhdCBjb21waWxlIHRpbWUpIHdpdGggdGhlIHRhaWwgb2YgdGhlIHR5cGUg
bGlzdC4KLSAgICByZXR1cm4gVHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIFRlc3RTZWws
IHR5cGVuYW1lIFR5cGVzOjpUYWlsPgotICAgICAgICA6OlJlZ2lzdGVyKHByZWZpeCwgY2FzZV9u
YW1lLCB0ZXN0X25hbWVzLCBpbmRleCArIDEpOworICAgIHJldHVybiBUeXBlUGFyYW1ldGVyaXpl
ZFRlc3Q8Rml4dHVyZSwgVGVzdFNlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHR5cGVuYW1lIFR5cGVzOjpUYWlsPjo6UmVnaXN0ZXIocHJlZml4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlX2xv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbmFtZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluZGV4ICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHlwZV9uYW1lcyk7CiAgIH0KIH07CiAKQEAgLTcwMSw4ICs2
ODYsMTEgQEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0IHsKIHRlbXBsYXRlIDxHVEVTVF9U
RU1QTEFURV8gRml4dHVyZSwgY2xhc3MgVGVzdFNlbD4KIGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVk
VGVzdDxGaXh0dXJlLCBUZXN0U2VsLCBUeXBlczA+IHsKICBwdWJsaWM6Ci0gIHN0YXRpYyBib29s
IFJlZ2lzdGVyKGNvbnN0IGNoYXIqIC8qcHJlZml4Ki8sIGNvbnN0IGNoYXIqIC8qY2FzZV9uYW1l
Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qdGVzdF9uYW1lcyovLCBp
bnQgLyppbmRleCovKSB7CisgIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIqIC8qcHJl
Zml4Ki8sIGNvbnN0IENvZGVMb2NhdGlvbiYsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIC8qY2FzZV9uYW1lKi8sIGNvbnN0IGNoYXIqIC8qdGVzdF9uYW1lcyovLAorICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgLyppbmRleCovLAorICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mID0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPigpIC8qdHlwZV9uYW1lcyovKSB7CiAgICAgcmV0
dXJuIHRydWU7CiAgIH0KIH07CkBAIC03MTQsMTcgKzcwMiwzNSBAQCBjbGFzcyBUeXBlUGFyYW1l
dGVyaXplZFRlc3Q8Rml4dHVyZSwgVGVzdFNlbCwgVHlwZXMwPiB7CiB0ZW1wbGF0ZSA8R1RFU1Rf
VEVNUExBVEVfIEZpeHR1cmUsIHR5cGVuYW1lIFRlc3RzLCB0eXBlbmFtZSBUeXBlcz4KIGNsYXNz
IFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UgewogIHB1YmxpYzoKLSAgc3RhdGljIGJvb2wgUmVn
aXN0ZXIoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiBjYXNlX25hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRlc3RfbmFtZXMpIHsKKyAgc3RhdGljIGJvb2wg
UmVnaXN0ZXIoY29uc3QgY2hhciogcHJlZml4LCBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHlwZWRUZXN0Q2FzZVBTdGF0ZSogc3RhdGUs
IGNvbnN0IGNoYXIqIGNhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogdGVzdF9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+JiB0eXBlX25hbWVzID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdl
bmVyYXRlTmFtZXM8RGVmYXVsdE5hbWVHZW5lcmF0b3IsIFR5cGVzPigpKSB7CisgICAgc3RkOjpz
dHJpbmcgdGVzdF9uYW1lID0gU3RyaXBUcmFpbGluZ1NwYWNlcygKKyAgICAgICAgR2V0UHJlZml4
VW50aWxDb21tYSh0ZXN0X25hbWVzKSk7CisgICAgaWYgKCFzdGF0ZS0+VGVzdEV4aXN0cyh0ZXN0
X25hbWUpKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgY29kZSBsb2Nh
dGlvbiBmb3IgdGVzdCAlcy4lcyBhdCAlcy4iLAorICAgICAgICAgICAgICBjYXNlX25hbWUsIHRl
c3RfbmFtZS5jX3N0cigpLAorICAgICAgICAgICAgICBGb3JtYXRGaWxlTG9jYXRpb24oY29kZV9s
b2NhdGlvbi5maWxlLmNfc3RyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b2RlX2xvY2F0aW9uLmxpbmUpLmNfc3RyKCkpOworICAgICAgZmZsdXNoKHN0ZGVycik7CisgICAg
ICBwb3NpeDo6QWJvcnQoKTsKKyAgICB9CisgICAgY29uc3QgQ29kZUxvY2F0aW9uJiB0ZXN0X2xv
Y2F0aW9uID0gc3RhdGUtPkdldENvZGVMb2NhdGlvbih0ZXN0X25hbWUpOworCiAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBUZXN0czo6SGVhZCBIZWFkOwogCiAgICAgLy8gRmlyc3QsIHJlZ2lzdGVyIHRo
ZSBmaXJzdCB0ZXN0IGluICdUZXN0JyBmb3IgZWFjaCB0eXBlIGluICdUeXBlcycuCiAgICAgVHlw
ZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIEhlYWQsIFR5cGVzPjo6UmVnaXN0ZXIoCi0gICAg
ICAgIHByZWZpeCwgY2FzZV9uYW1lLCB0ZXN0X25hbWVzLCAwKTsKKyAgICAgICAgcHJlZml4LCB0
ZXN0X2xvY2F0aW9uLCBjYXNlX25hbWUsIHRlc3RfbmFtZXMsIDAsIHR5cGVfbmFtZXMpOwogCiAg
ICAgLy8gTmV4dCwgcmVjdXJzZXMgKGF0IGNvbXBpbGUgdGltZSkgd2l0aCB0aGUgdGFpbCBvZiB0
aGUgdGVzdCBsaXN0LgotICAgIHJldHVybiBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlPEZpeHR1
cmUsIHR5cGVuYW1lIFRlc3RzOjpUYWlsLCBUeXBlcz4KLSAgICAgICAgOjpSZWdpc3RlcihwcmVm
aXgsIGNhc2VfbmFtZSwgU2tpcENvbW1hKHRlc3RfbmFtZXMpKTsKKyAgICByZXR1cm4gVHlwZVBh
cmFtZXRlcml6ZWRUZXN0Q2FzZTxGaXh0dXJlLCB0eXBlbmFtZSBUZXN0czo6VGFpbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlcz46OlJlZ2lzdGVyKHByZWZpeCwg
Y29kZV9sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlLCBjYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa2lwQ29tbWEodGVzdF9uYW1lcyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlX25h
bWVzKTsKICAgfQogfTsKIApAQCAtNzMyLDE1ICs3MzgsMTggQEAgY2xhc3MgVHlwZVBhcmFtZXRl
cml6ZWRUZXN0Q2FzZSB7CiB0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIEZpeHR1cmUsIHR5cGVu
YW1lIFR5cGVzPgogY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTxGaXh0dXJlLCBUZW1w
bGF0ZXMwLCBUeXBlcz4gewogIHB1YmxpYzoKLSAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3Qg
Y2hhciogLypwcmVmaXgqLywgY29uc3QgY2hhciogLypjYXNlX25hbWUqLywKLSAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogLyp0ZXN0X25hbWVzKi8pIHsKKyAgc3RhdGljIGJvb2wg
UmVnaXN0ZXIoY29uc3QgY2hhciogLypwcmVmaXgqLywgY29uc3QgQ29kZUxvY2F0aW9uJiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHlwZWRUZXN0Q2FzZVBTdGF0ZSogLypzdGF0ZSov
LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKmNhc2VfbmFtZSovLCBjb25z
dCBjaGFyKiAvKnRlc3RfbmFtZXMqLywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+JiA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4oKSAvKnR5cGVfbmFtZXMqLykgewogICAgIHJldHVybiB0cnVl
OwogICB9CiB9OwogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hB
U19UWVBFRF9URVNUX1AKIAotLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBh
cyBhIFN0cmluZy4KKy8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYW4g
c3RkOjpzdHJpbmcuCiAvLwogLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0
byBiZSBpbmNsdWRlZCBpcyBzcGVjaWZpZWQgYnkKIC8vIHRoZSBndGVzdF9zdGFja190cmFjZV9k
ZXB0aCBmbGFnLiAgVGhlIHNraXBfY291bnQgcGFyYW1ldGVyCkBAIC03NTAsOCArNzU5LDggQEAg
Y2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTxGaXh0dXJlLCBUZW1wbGF0ZXMwLCBUeXBl
cz4gewogLy8gRm9yIGV4YW1wbGUsIGlmIEZvbygpIGNhbGxzIEJhcigpLCB3aGljaCBpbiB0dXJu
IGNhbGxzCiAvLyBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKC4uLiwgMSksIEZvbygp
IHdpbGwgYmUgaW5jbHVkZWQgaW4KIC8vIHRoZSB0cmFjZSBidXQgQmFyKCkgYW5kIEdldEN1cnJl
bnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoKSB3b24ndC4KLUdURVNUX0FQSV8gU3RyaW5nIEdldEN1
cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoVW5pdFRlc3QqIHVuaXRfdGVzdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNraXBfY291bnQp
OworR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9w
KAorICAgIFVuaXRUZXN0KiB1bml0X3Rlc3QsIGludCBza2lwX2NvdW50KTsKIAogLy8gSGVscGVy
cyBmb3Igc3VwcHJlc3Npbmcgd2FybmluZ3Mgb24gdW5yZWFjaGFibGUgY29kZSBvciBjb25zdGFu
dAogLy8gY29uZGl0aW9uLgpAQCAtNzYyLDYgKzc3MSwxNSBAQCBHVEVTVF9BUElfIGJvb2wgQWx3
YXlzVHJ1ZSgpOwogLy8gQWx3YXlzIHJldHVybnMgZmFsc2UuCiBpbmxpbmUgYm9vbCBBbHdheXNG
YWxzZSgpIHsgcmV0dXJuICFBbHdheXNUcnVlKCk7IH0KIAorLy8gSGVscGVyIGZvciBzdXBwcmVz
c2luZyBmYWxzZSB3YXJuaW5nIGZyb20gQ2xhbmcgb24gYSBjb25zdCBjaGFyKgorLy8gdmFyaWFi
bGUgZGVjbGFyZWQgaW4gYSBjb25kaXRpb25hbCBleHByZXNzaW9uIGFsd2F5cyBiZWluZyBOVUxM
IGluCisvLyB0aGUgZWxzZSBicmFuY2guCitzdHJ1Y3QgR1RFU1RfQVBJXyBDb25zdENoYXJQdHIg
eworICBDb25zdENoYXJQdHIoY29uc3QgY2hhciogc3RyKSA6IHZhbHVlKHN0cikge30KKyAgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgY29uc3QgY2hhciogdmFsdWU7
Cit9OworCiAvLyBBIHNpbXBsZSBMaW5lYXIgQ29uZ3J1ZW50aWFsIEdlbmVyYXRvciBmb3IgZ2Vu
ZXJhdGluZyByYW5kb20KIC8vIG51bWJlcnMgd2l0aCBhIHVuaWZvcm0gZGlzdHJpYnV0aW9uLiAg
VW5saWtlIHJhbmQoKSBhbmQgc3JhbmQoKSwgaXQKIC8vIGRvZXNuJ3QgdXNlIGdsb2JhbCBzdGF0
ZSAoYW5kIHRoZXJlZm9yZSBjYW4ndCBpbnRlcmZlcmUgd2l0aCB1c2VyCkBAIC03ODQsMTMgKzgw
Miw0MDMgQEAgY2xhc3MgR1RFU1RfQVBJXyBSYW5kb20gewogICBHVEVTVF9ESVNBTExPV19DT1BZ
X0FORF9BU1NJR05fKFJhbmRvbSk7CiB9OwogCisvLyBEZWZpbmluZyBhIHZhcmlhYmxlIG9mIHR5
cGUgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8VDEsIFQyPiB3aWxsIGNhdXNlIGEKKy8vIGNvbXBp
bGVyIGVycm9yIGlmZiBUMSBhbmQgVDIgYXJlIGRpZmZlcmVudCB0eXBlcy4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitzdHJ1Y3QgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw7
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFs
PFQsIFQ+IHsKK307CisKKy8vIFJlbW92ZXMgdGhlIHJlZmVyZW5jZSBmcm9tIGEgdHlwZSBpZiBp
dCBpcyBhIHJlZmVyZW5jZSB0eXBlLAorLy8gb3RoZXJ3aXNlIGxlYXZlcyBpdCB1bmNoYW5nZWQu
ICBUaGlzIGlzIHRoZSBzYW1lIGFzCisvLyB0cjE6OnJlbW92ZV9yZWZlcmVuY2UsIHdoaWNoIGlz
IG5vdCB3aWRlbHkgYXZhaWxhYmxlIHlldC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0
IFJlbW92ZVJlZmVyZW5jZSB7IHR5cGVkZWYgVCB0eXBlOyB9OyAgLy8gTk9MSU5UCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBSZW1vdmVSZWZlcmVuY2U8VCY+IHsgdHlwZWRlZiBUIHR5
cGU7IH07ICAvLyBOT0xJTlQKKworLy8gQSBoYW5keSB3cmFwcGVyIGFyb3VuZCBSZW1vdmVSZWZl
cmVuY2UgdGhhdCB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudAorLy8gVCBkZXBlbmRzIG9uIHRlbXBs
YXRlIHBhcmFtZXRlcnMuCisjZGVmaW5lIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfKFQpIFwKKyAg
ICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpSZW1vdmVSZWZlcmVuY2U8VD46OnR5cGUK
KworLy8gUmVtb3ZlcyBjb25zdCBmcm9tIGEgdHlwZSBpZiBpdCBpcyBhIGNvbnN0IHR5cGUsIG90
aGVyd2lzZSBsZWF2ZXMKKy8vIGl0IHVuY2hhbmdlZC4gIFRoaXMgaXMgdGhlIHNhbWUgYXMgdHIx
OjpyZW1vdmVfY29uc3QsIHdoaWNoIGlzIG5vdAorLy8gd2lkZWx5IGF2YWlsYWJsZSB5ZXQuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBSZW1vdmVDb25zdCB7IHR5cGVkZWYgVCB0eXBl
OyB9OyAgLy8gTk9MSU5UCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBSZW1vdmVDb25z
dDxjb25zdCBUPiB7IHR5cGVkZWYgVCB0eXBlOyB9OyAgLy8gTk9MSU5UCisKKy8vIE1TVkMgOC4w
LCBTdW4gQysrLCBhbmQgSUJNIFhMIEMrKyBoYXZlIGEgYnVnIHdoaWNoIGNhdXNlcyB0aGUgYWJv
dmUKKy8vIGRlZmluaXRpb24gdG8gZmFpbCB0byByZW1vdmUgdGhlIGNvbnN0IGluICdjb25zdCBp
bnRbM10nIGFuZCAnY29uc3QKKy8vIGNoYXJbM11bNF0nLiAgVGhlIGZvbGxvd2luZyBzcGVjaWFs
aXphdGlvbiB3b3JrcyBhcm91bmQgdGhlIGJ1Zy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXpl
X3QgTj4KK3N0cnVjdCBSZW1vdmVDb25zdDxjb25zdCBUW05dPiB7CisgIHR5cGVkZWYgdHlwZW5h
bWUgUmVtb3ZlQ29uc3Q8VD46OnR5cGUgdHlwZVtOXTsKK307CisKKyNpZiBkZWZpbmVkKF9NU0Nf
VkVSKSAmJiBfTVNDX1ZFUiA8IDE0MDAKKy8vIFRoaXMgaXMgdGhlIG9ubHkgc3BlY2lhbGl6YXRp
b24gdGhhdCBhbGxvd3MgVkMrKyA3LjEgdG8gcmVtb3ZlIGNvbnN0IGluCisvLyAnY29uc3QgaW50
WzNdIGFuZCAnY29uc3QgaW50WzNdWzRdJy4gIEhvd2V2ZXIsIGl0IGNhdXNlcyB0cm91YmxlIHdp
dGggR0NDCisvLyBhbmQgdGh1cyBuZWVkcyB0byBiZSBjb25kaXRpb25hbGx5IGNvbXBpbGVkLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgorc3RydWN0IFJlbW92ZUNvbnN0PFRbTl0+
IHsKKyAgdHlwZWRlZiB0eXBlbmFtZSBSZW1vdmVDb25zdDxUPjo6dHlwZSB0eXBlW05dOworfTsK
KyNlbmRpZgorCisvLyBBIGhhbmR5IHdyYXBwZXIgYXJvdW5kIFJlbW92ZUNvbnN0IHRoYXQgd29y
a3Mgd2hlbiB0aGUgYXJndW1lbnQKKy8vIFQgZGVwZW5kcyBvbiB0ZW1wbGF0ZSBwYXJhbWV0ZXJz
LgorI2RlZmluZSBHVEVTVF9SRU1PVkVfQ09OU1RfKFQpIFwKKyAgICB0eXBlbmFtZSA6OnRlc3Rp
bmc6OmludGVybmFsOjpSZW1vdmVDb25zdDxUPjo6dHlwZQorCisvLyBUdXJucyBjb25zdCBVJiwg
VSYsIGNvbnN0IFUsIGFuZCBVIGFsbCBpbnRvIFUuCisjZGVmaW5lIEdURVNUX1JFTU9WRV9SRUZF
UkVOQ0VfQU5EX0NPTlNUXyhUKSBcCisgICAgR1RFU1RfUkVNT1ZFX0NPTlNUXyhHVEVTVF9SRU1P
VkVfUkVGRVJFTkNFXyhUKSkKKworLy8gSW1wbGljaXRseUNvbnZlcnRpYmxlPEZyb20sIFRvPjo6
dmFsdWUgaXMgYSBjb21waWxlLXRpbWUgYm9vbAorLy8gY29uc3RhbnQgdGhhdCdzIHRydWUgaWZm
IHR5cGUgRnJvbSBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8KKy8vIHR5cGUgVG8uCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+CitjbGFzcyBJbXBsaWNpdGx5Q29u
dmVydGlibGUgeworIHByaXZhdGU6CisgIC8vIFdlIG5lZWQgdGhlIGZvbGxvd2luZyBoZWxwZXIg
ZnVuY3Rpb25zIG9ubHkgZm9yIHRoZWlyIHR5cGVzLgorICAvLyBUaGV5IGhhdmUgbm8gaW1wbGVt
ZW50YXRpb25zLgorCisgIC8vIE1ha2VGcm9tKCkgaXMgYW4gZXhwcmVzc2lvbiB3aG9zZSB0eXBl
IGlzIEZyb20uICBXZSBjYW5ub3Qgc2ltcGx5CisgIC8vIHVzZSBGcm9tKCksIGFzIHRoZSB0eXBl
IEZyb20gbWF5IG5vdCBoYXZlIGEgcHVibGljIGRlZmF1bHQKKyAgLy8gY29uc3RydWN0b3IuCisg
IHN0YXRpYyB0eXBlbmFtZSBBZGRSZWZlcmVuY2U8RnJvbT46OnR5cGUgTWFrZUZyb20oKTsKKwor
ICAvLyBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSBvdmVybG9hZGVkLiAgR2l2ZW4gYW4gZXhwcmVz
c2lvbgorICAvLyBIZWxwZXIoeCksIHRoZSBjb21waWxlciB3aWxsIHBpY2sgdGhlIGZpcnN0IHZl
cnNpb24gaWYgeCBjYW4gYmUKKyAgLy8gaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gdHlwZSBUbzsg
b3RoZXJ3aXNlIGl0IHdpbGwgcGljayB0aGUKKyAgLy8gc2Vjb25kIHZlcnNpb24uCisgIC8vCisg
IC8vIFRoZSBmaXJzdCB2ZXJzaW9uIHJldHVybnMgYSB2YWx1ZSBvZiBzaXplIDEsIGFuZCB0aGUg
c2Vjb25kCisgIC8vIHZlcnNpb24gcmV0dXJucyBhIHZhbHVlIG9mIHNpemUgMi4gIFRoZXJlZm9y
ZSwgYnkgY2hlY2tpbmcgdGhlCisgIC8vIHNpemUgb2YgSGVscGVyKHgpLCB3aGljaCBjYW4gYmUg
ZG9uZSBhdCBjb21waWxlIHRpbWUsIHdlIGNhbiB0ZWxsCisgIC8vIHdoaWNoIHZlcnNpb24gb2Yg
SGVscGVyKCkgaXMgdXNlZCwgYW5kIGhlbmNlIHdoZXRoZXIgeCBjYW4gYmUKKyAgLy8gaW1wbGlj
aXRseSBjb252ZXJ0ZWQgdG8gdHlwZSBUby4KKyAgc3RhdGljIGNoYXIgSGVscGVyKFRvKTsKKyAg
c3RhdGljIGNoYXIgKCZIZWxwZXIoLi4uKSlbMl07ICAvLyBOT0xJTlQKKworICAvLyBXZSBoYXZl
IHRvIHB1dCB0aGUgJ3B1YmxpYycgc2VjdGlvbiBhZnRlciB0aGUgJ3ByaXZhdGUnIHNlY3Rpb24s
CisgIC8vIG9yIE1TVkMgcmVmdXNlcyB0byBjb21waWxlIHRoZSBjb2RlLgorIHB1YmxpYzoKKyNp
ZiBkZWZpbmVkKF9fQk9STEFORENfXykKKyAgLy8gQysrQnVpbGRlciBjYW5ub3QgdXNlIG1lbWJl
ciBvdmVybG9hZCByZXNvbHV0aW9uIGR1cmluZyB0ZW1wbGF0ZQorICAvLyBpbnN0YW50aWF0aW9u
LiAgVGhlIHNpbXBsZXN0IHdvcmthcm91bmQgaXMgdG8gdXNlIGl0cyBDKysweCB0eXBlIHRyYWl0
cworICAvLyBmdW5jdGlvbnMgKEMrK0J1aWxkZXIgMjAwOSBhbmQgYWJvdmUgb25seSkuCisgIHN0
YXRpYyBjb25zdCBib29sIHZhbHVlID0gX19pc19jb252ZXJ0aWJsZShGcm9tLCBUbyk7CisjZWxz
ZQorICAvLyBNU1ZDIHdhcm5zIGFib3V0IGltcGxpY2l0bHkgY29udmVydGluZyBmcm9tIGRvdWJs
ZSB0byBpbnQgZm9yCisgIC8vIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YSwgc28gd2UgbmVlZCB0byB0
ZW1wb3JhcmlseSBkaXNhYmxlIHRoZQorICAvLyB3YXJuaW5nLgorICBHVEVTVF9ESVNBQkxFX01T
Q19XQVJOSU5HU19QVVNIXyg0MjQ0KQorICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9CisgICAg
ICBzaXplb2YoSGVscGVyKEltcGxpY2l0bHlDb252ZXJ0aWJsZTo6TWFrZUZyb20oKSkpID09IDE7
CisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQorI2VuZGlmICAvLyBfX0JPUkxB
TkRDX18KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Citjb25zdCBi
b29sIEltcGxpY2l0bHlDb252ZXJ0aWJsZTxGcm9tLCBUbz46OnZhbHVlOworCisvLyBJc0FQcm90
b2NvbE1lc3NhZ2U8VD46OnZhbHVlIGlzIGEgY29tcGlsZS10aW1lIGJvb2wgY29uc3RhbnQgdGhh
dCdzCisvLyB0cnVlIGlmZiBUIGlzIHR5cGUgUHJvdG9jb2xNZXNzYWdlLCBwcm90bzI6Ok1lc3Nh
Z2UsIG9yIGEgc3ViY2xhc3MKKy8vIG9mIHRob3NlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citz
dHJ1Y3QgSXNBUHJvdG9jb2xNZXNzYWdlCisgICAgOiBwdWJsaWMgYm9vbF9jb25zdGFudDwKKyAg
SW1wbGljaXRseUNvbnZlcnRpYmxlPGNvbnN0IFQqLCBjb25zdCA6OlByb3RvY29sTWVzc2FnZSo+
Ojp2YWx1ZSB8fAorICBJbXBsaWNpdGx5Q29udmVydGlibGU8Y29uc3QgVCosIGNvbnN0IDo6cHJv
dG8yOjpNZXNzYWdlKj46OnZhbHVlPiB7Cit9OworCisvLyBXaGVuIHRoZSBjb21waWxlciBzZWVz
IGV4cHJlc3Npb24gSXNDb250YWluZXJUZXN0PEM+KDApLCBpZiBDIGlzIGFuCisvLyBTVEwtc3R5
bGUgY29udGFpbmVyIGNsYXNzLCB0aGUgZmlyc3Qgb3ZlcmxvYWQgb2YgSXNDb250YWluZXJUZXN0
CisvLyB3aWxsIGJlIHZpYWJsZSAoc2luY2UgYm90aCBDOjppdGVyYXRvciogYW5kIEM6OmNvbnN0
X2l0ZXJhdG9yKiBhcmUKKy8vIHZhbGlkIHR5cGVzIGFuZCBOVUxMIGNhbiBiZSBpbXBsaWNpdGx5
IGNvbnZlcnRlZCB0byB0aGVtKS4gIEl0IHdpbGwKKy8vIGJlIHBpY2tlZCBvdmVyIHRoZSBzZWNv
bmQgb3ZlcmxvYWQgYXMgJ2ludCcgaXMgYSBwZXJmZWN0IG1hdGNoIGZvcgorLy8gdGhlIHR5cGUg
b2YgYXJndW1lbnQgMC4gIElmIEM6Oml0ZXJhdG9yIG9yIEM6OmNvbnN0X2l0ZXJhdG9yIGlzIG5v
dAorLy8gYSB2YWxpZCB0eXBlLCB0aGUgZmlyc3Qgb3ZlcmxvYWQgaXMgbm90IHZpYWJsZSwgYW5k
IHRoZSBzZWNvbmQKKy8vIG92ZXJsb2FkIHdpbGwgYmUgcGlja2VkLiAgVGhlcmVmb3JlLCB3ZSBj
YW4gZGV0ZXJtaW5lIHdoZXRoZXIgQyBpcworLy8gYSBjb250YWluZXIgY2xhc3MgYnkgY2hlY2tp
bmcgdGhlIHR5cGUgb2YgSXNDb250YWluZXJUZXN0PEM+KDApLgorLy8gVGhlIHZhbHVlIG9mIHRo
ZSBleHByZXNzaW9uIGlzIGluc2lnbmlmaWNhbnQuCisvLworLy8gSW4gQysrMTEgbW9kZSB3ZSBj
aGVjayB0aGUgZXhpc3RlbmNlIG9mIGEgY29uc3RfaXRlcmF0b3IgYW5kIHRoYXQgYW4KKy8vIGl0
ZXJhdG9yIGlzIHByb3Blcmx5IGltcGxlbWVudGVkIGZvciB0aGUgY29udGFpbmVyLgorLy8KKy8v
IEZvciBwcmUtQysrMTEgdGhhdCB3ZSBsb29rIGZvciBib3RoIEM6Oml0ZXJhdG9yIGFuZCBDOjpj
b25zdF9pdGVyYXRvci4KKy8vIFRoZSByZWFzb24gaXMgdGhhdCBDKysgaW5qZWN0cyB0aGUgbmFt
ZSBvZiBhIGNsYXNzIGFzIGEgbWVtYmVyIG9mIHRoZQorLy8gY2xhc3MgaXRzZWxmIChlLmcuIHlv
dSBjYW4gcmVmZXIgdG8gY2xhc3MgaXRlcmF0b3IgYXMgZWl0aGVyCisvLyAnaXRlcmF0b3InIG9y
ICdpdGVyYXRvcjo6aXRlcmF0b3InKS4gIElmIHdlIGxvb2sgZm9yIEM6Oml0ZXJhdG9yCisvLyBv
bmx5LCBmb3IgZXhhbXBsZSwgd2Ugd291bGQgbWlzdGFrZW5seSB0aGluayB0aGF0IGEgY2xhc3Mg
bmFtZWQKKy8vIGl0ZXJhdG9yIGlzIGFuIFNUTCBjb250YWluZXIuCisvLworLy8gQWxzbyBub3Rl
IHRoYXQgdGhlIHNpbXBsZXIgYXBwcm9hY2ggb2Ygb3ZlcmxvYWRpbmcKKy8vIElzQ29udGFpbmVy
VGVzdCh0eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvciopIGFuZAorLy8gSXNDb250YWluZXJUZXN0
KC4uLikgZG9lc24ndCB3b3JrIHdpdGggVmlzdWFsIEFnZSBDKysgYW5kIFN1biBDKysuCit0eXBl
ZGVmIGludCBJc0NvbnRhaW5lcjsKKyNpZiBHVEVTVF9MQU5HX0NYWDExCit0ZW1wbGF0ZSA8Y2xh
c3MgQywKKyAgICAgICAgICBjbGFzcyBJdGVyYXRvciA9IGRlY2x0eXBlKDo6c3RkOjpkZWNsdmFs
PGNvbnN0IEMmPigpLmJlZ2luKCkpLAorICAgICAgICAgIGNsYXNzID0gZGVjbHR5cGUoOjpzdGQ6
OmRlY2x2YWw8Y29uc3QgQyY+KCkuZW5kKCkpLAorICAgICAgICAgIGNsYXNzID0gZGVjbHR5cGUo
Kys6OnN0ZDo6ZGVjbHZhbDxJdGVyYXRvciY+KCkpLAorICAgICAgICAgIGNsYXNzID0gZGVjbHR5
cGUoKjo6c3RkOjpkZWNsdmFsPEl0ZXJhdG9yPigpKSwKKyAgICAgICAgICBjbGFzcyA9IHR5cGVu
YW1lIEM6OmNvbnN0X2l0ZXJhdG9yPgorSXNDb250YWluZXIgSXNDb250YWluZXJUZXN0KGludCAv
KiBkdW1teSAqLykgeworICByZXR1cm4gMDsKK30KKyNlbHNlCit0ZW1wbGF0ZSA8Y2xhc3MgQz4K
K0lzQ29udGFpbmVyIElzQ29udGFpbmVyVGVzdChpbnQgLyogZHVtbXkgKi8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQzo6aXRlcmF0b3IqIC8qIGl0ICovID0gTlVMTCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvciog
LyogY29uc3RfaXQgKi8gPSBOVUxMKSB7CisgIHJldHVybiAwOworfQorI2VuZGlmICAvLyBHVEVT
VF9MQU5HX0NYWDExCisKK3R5cGVkZWYgY2hhciBJc05vdENvbnRhaW5lcjsKK3RlbXBsYXRlIDxj
bGFzcyBDPgorSXNOb3RDb250YWluZXIgSXNDb250YWluZXJUZXN0KGxvbmcgLyogZHVtbXkgKi8p
IHsgcmV0dXJuICdcMCc7IH0KKworLy8gVHJhaXQgdG8gZGV0ZWN0IHdoZXRoZXIgYSB0eXBlIFQg
aXMgYSBoYXNoIHRhYmxlLgorLy8gVGhlIGhldXJpc3RpYyB1c2VkIGlzIHRoYXQgdGhlIHR5cGUg
Y29udGFpbnMgYW4gaW5uZXIgdHlwZSBgaGFzaGVyYCBhbmQgZG9lcworLy8gbm90IGNvbnRhaW4g
YW4gaW5uZXIgdHlwZSBgcmV2ZXJzZV9pdGVyYXRvcmAuCisvLyBJZiB0aGUgY29udGFpbmVyIGlz
IGl0ZXJhYmxlIGluIHJldmVyc2UsIHRoZW4gb3JkZXIgbWlnaHQgYWN0dWFsbHkgbWF0dGVyLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNIYXNoVGFibGUgeworIHByaXZhdGU6Cisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICBzdGF0aWMgY2hhciB0ZXN0KHR5cGVuYW1lIFU6Omhh
c2hlciosIHR5cGVuYW1lIFU6OnJldmVyc2VfaXRlcmF0b3IqKTsKKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIFU+CisgIHN0YXRpYyBpbnQgdGVzdCh0eXBlbmFtZSBVOjpoYXNoZXIqLCAuLi4pOworICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgc3RhdGljIGNoYXIgdGVzdCguLi4pOworCisgcHVibGlj
OgorICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZih0ZXN0PFQ+KDAsIDApKSA9PSBz
aXplb2YoaW50KTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3QgYm9vbCBJc0hh
c2hUYWJsZTxUPjo6dmFsdWU7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgVm9pZFQg
eworICAgIHR5cGVkZWYgdm9pZCB2YWx1ZV90eXBlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHR5cGVuYW1lID0gdm9pZD4KK3N0cnVjdCBIYXNWYWx1ZVR5cGUgOiBmYWxzZV90eXBlIHt9
OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSGFzVmFsdWVUeXBlPFQsIFZvaWRUPHR5
cGVuYW1lIFQ6OnZhbHVlX3R5cGU+ID4gOiB0cnVlX3R5cGUgeworfTsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIEMsCisgICAgICAgICAgYm9vbCA9IHNpemVvZihJc0NvbnRhaW5lclRlc3Q8Qz4oMCkp
ID09IHNpemVvZihJc0NvbnRhaW5lciksCisgICAgICAgICAgYm9vbCA9IEhhc1ZhbHVlVHlwZTxD
Pjo6dmFsdWU+CitzdHJ1Y3QgSXNSZWN1cnNpdmVDb250YWluZXJJbXBsOworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgQywgYm9vbCBIVj4KK3N0cnVjdCBJc1JlY3Vyc2l2ZUNvbnRhaW5lckltcGw8Qywg
ZmFsc2UsIEhWPiA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OworCisvLyBTaW5jZSB0aGUgSXNSZWN1
cnNpdmVDb250YWluZXJJbXBsIGRlcGVuZHMgb24gdGhlIElzQ29udGFpbmVyVGVzdCB3ZSBuZWVk
IHRvCisvLyBvYmV5IHRoZSBzYW1lIGluY29uc2lzdGVuY2llcyBhcyB0aGUgSXNDb250YWluZXJU
ZXN0LCBuYW1lbHkgY2hlY2sgaWYKKy8vIHNvbWV0aGluZyBpcyBhIGNvbnRhaW5lciBpcyByZWx5
aW5nIG9uIG9ubHkgY29uc3RfaXRlcmF0b3IgaW4gQysrMTEgYW5kCisvLyBpcyByZWx5aW5nIG9u
IGJvdGggY29uc3RfaXRlcmF0b3IgYW5kIGl0ZXJhdG9yIG90aGVyd2lzZQordGVtcGxhdGUgPHR5
cGVuYW1lIEM+CitzdHJ1Y3QgSXNSZWN1cnNpdmVDb250YWluZXJJbXBsPEMsIHRydWUsIGZhbHNl
PiA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KK3N0cnVj
dCBJc1JlY3Vyc2l2ZUNvbnRhaW5lckltcGw8QywgdHJ1ZSwgdHJ1ZT4geworICAjaWYgR1RFU1Rf
TEFOR19DWFgxMQorICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yVHJhaXRzPHR5cGVuYW1lIEM6
OmNvbnN0X2l0ZXJhdG9yPjo6dmFsdWVfdHlwZQorICAgICAgdmFsdWVfdHlwZTsKKyNlbHNlCisg
IHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3JUcmFpdHM8dHlwZW5hbWUgQzo6aXRlcmF0b3I+Ojp2
YWx1ZV90eXBlIHZhbHVlX3R5cGU7CisjZW5kaWYKKyAgdHlwZWRlZiBpc19zYW1lPHZhbHVlX3R5
cGUsIEM+IHR5cGU7Cit9OworCisvLyBJc1JlY3Vyc2l2ZUNvbnRhaW5lcjxUeXBlPiBpcyBhIHVu
YXJ5IGNvbXBpbGUtdGltZSBwcmVkaWNhdGUgdGhhdAorLy8gZXZhbHVhdGVzIHdoZXRoZXIgQyBp
cyBhIHJlY3Vyc2l2ZSBjb250YWluZXIgdHlwZS4gQSByZWN1cnNpdmUgY29udGFpbmVyCisvLyB0
eXBlIGlzIGEgY29udGFpbmVyIHR5cGUgd2hvc2UgdmFsdWVfdHlwZSBpcyBlcXVhbCB0byB0aGUg
Y29udGFpbmVyIHR5cGUKKy8vIGl0c2VsZi4gQW4gZXhhbXBsZSBmb3IgYSByZWN1cnNpdmUgY29u
dGFpbmVyIHR5cGUgaXMKKy8vIGJvb3N0OjpmaWxlc3lzdGVtOjpwYXRoLCB3aG9zZSBpdGVyYXRv
ciBoYXMgYSB2YWx1ZV90eXBlIHRoYXQgaXMgZXF1YWwgdG8KKy8vIGJvb3N0OjpmaWxlc3lzdGVt
OjpwYXRoLgordGVtcGxhdGUgPHR5cGVuYW1lIEM+CitzdHJ1Y3QgSXNSZWN1cnNpdmVDb250YWlu
ZXIgOiBwdWJsaWMgSXNSZWN1cnNpdmVDb250YWluZXJJbXBsPEM+Ojp0eXBlIHt9OworCisvLyBF
bmFibGVJZjxjb25kaXRpb24+Ojp0eXBlIGlzIHZvaWQgd2hlbiAnQ29uZCcgaXMgdHJ1ZSwgYW5k
CisvLyB1bmRlZmluZWQgd2hlbiAnQ29uZCcgaXMgZmFsc2UuICBUbyB1c2UgU0ZJTkFFIHRvIG1h
a2UgYSBmdW5jdGlvbgorLy8gb3ZlcmxvYWQgb25seSBhcHBseSB3aGVuIGEgcGFydGljdWxhciBl
eHByZXNzaW9uIGlzIHRydWUsIGFkZAorLy8gInR5cGVuYW1lIEVuYWJsZUlmPGV4cHJlc3Npb24+
Ojp0eXBlKiA9IDAiIGFzIHRoZSBsYXN0IHBhcmFtZXRlci4KK3RlbXBsYXRlPGJvb2w+IHN0cnVj
dCBFbmFibGVJZjsKK3RlbXBsYXRlPD4gc3RydWN0IEVuYWJsZUlmPHRydWU+IHsgdHlwZWRlZiB2
b2lkIHR5cGU7IH07ICAvLyBOT0xJTlQKKworLy8gVXRpbGl0aWVzIGZvciBuYXRpdmUgYXJyYXlz
LgorCisvLyBBcnJheUVxKCkgY29tcGFyZXMgdHdvIGstZGltZW5zaW9uYWwgbmF0aXZlIGFycmF5
cyB1c2luZyB0aGUKKy8vIGVsZW1lbnRzJyBvcGVyYXRvcj09LCB3aGVyZSBrIGNhbiBiZSBhbnkg
aW50ZWdlciA+PSAwLiAgV2hlbiBrIGlzCisvLyAwLCBBcnJheUVxKCkgZGVnZW5lcmF0ZXMgaW50
byBjb21wYXJpbmcgYSBzaW5nbGUgcGFpciBvZiB2YWx1ZXMuCisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPgorYm9vbCBBcnJheUVxKGNvbnN0IFQqIGxocywgc2l6ZV90IHNpemUs
IGNvbnN0IFUqIHJocyk7CisKKy8vIFRoaXMgZ2VuZXJpYyB2ZXJzaW9uIGlzIHVzZWQgd2hlbiBr
IGlzIDAuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2lubGluZSBib29sIEFy
cmF5RXEoY29uc3QgVCYgbGhzLCBjb25zdCBVJiByaHMpIHsgcmV0dXJuIGxocyA9PSByaHM7IH0K
KworLy8gVGhpcyBvdmVybG9hZCBpcyB1c2VkIHdoZW4gayA+PSAxLgordGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBOPgoraW5saW5lIGJvb2wgQXJyYXlFcShjb25zdCBU
KCZsaHMpW05dLCBjb25zdCBVKCZyaHMpW05dKSB7CisgIHJldHVybiBpbnRlcm5hbDo6QXJyYXlF
cShsaHMsIE4sIHJocyk7Cit9CisKKy8vIFRoaXMgaGVscGVyIHJlZHVjZXMgY29kZSBibG9hdC4g
IElmIHdlIGluc3RlYWQgcHV0IGl0cyBsb2dpYyBpbnNpZGUKKy8vIHRoZSBwcmV2aW91cyBBcnJh
eUVxKCkgZnVuY3Rpb24sIGFycmF5cyB3aXRoIGRpZmZlcmVudCBzaXplcyB3b3VsZAorLy8gbGVh
ZCB0byBkaWZmZXJlbnQgY29waWVzIG9mIHRoZSB0ZW1wbGF0ZSBjb2RlLgordGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+Citib29sIEFycmF5RXEoY29uc3QgVCogbGhzLCBzaXplX3Qg
c2l6ZSwgY29uc3QgVSogcmhzKSB7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHNpemU7IGkr
KykgeworICAgIGlmICghaW50ZXJuYWw6OkFycmF5RXEobGhzW2ldLCByaHNbaV0pKQorICAgICAg
cmV0dXJuIGZhbHNlOworICB9CisgIHJldHVybiB0cnVlOworfQorCisvLyBGaW5kcyB0aGUgZmly
c3QgZWxlbWVudCBpbiB0aGUgaXRlcmF0b3IgcmFuZ2UgW2JlZ2luLCBlbmQpIHRoYXQKKy8vIGVx
dWFscyBlbGVtLiAgRWxlbWVudCBtYXkgYmUgYSBuYXRpdmUgYXJyYXkgdHlwZSBpdHNlbGYuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlciwgdHlwZW5hbWUgRWxlbWVudD4KK0l0ZXIgQXJyYXlBd2Fy
ZUZpbmQoSXRlciBiZWdpbiwgSXRlciBlbmQsIGNvbnN0IEVsZW1lbnQmIGVsZW0pIHsKKyAgZm9y
IChJdGVyIGl0ID0gYmVnaW47IGl0ICE9IGVuZDsgKytpdCkgeworICAgIGlmIChpbnRlcm5hbDo6
QXJyYXlFcSgqaXQsIGVsZW0pKQorICAgICAgcmV0dXJuIGl0OworICB9CisgIHJldHVybiBlbmQ7
Cit9CisKKy8vIENvcHlBcnJheSgpIGNvcGllcyBhIGstZGltZW5zaW9uYWwgbmF0aXZlIGFycmF5
IHVzaW5nIHRoZSBlbGVtZW50cycKKy8vIG9wZXJhdG9yPSwgd2hlcmUgayBjYW4gYmUgYW55IGlu
dGVnZXIgPj0gMC4gIFdoZW4gayBpcyAwLAorLy8gQ29weUFycmF5KCkgZGVnZW5lcmF0ZXMgaW50
byBjb3B5aW5nIGEgc2luZ2xlIHZhbHVlLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KK3ZvaWQgQ29weUFycmF5KGNvbnN0IFQqIGZyb20sIHNpemVfdCBzaXplLCBVKiB0byk7
CisKKy8vIFRoaXMgZ2VuZXJpYyB2ZXJzaW9uIGlzIHVzZWQgd2hlbiBrIGlzIDAuCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2lubGluZSB2b2lkIENvcHlBcnJheShjb25zdCBU
JiBmcm9tLCBVKiB0bykgeyAqdG8gPSBmcm9tOyB9CisKKy8vIFRoaXMgb3ZlcmxvYWQgaXMgdXNl
ZCB3aGVuIGsgPj0gMS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3Qg
Tj4KK2lubGluZSB2b2lkIENvcHlBcnJheShjb25zdCBUKCZmcm9tKVtOXSwgVSgqdG8pW05dKSB7
CisgIGludGVybmFsOjpDb3B5QXJyYXkoZnJvbSwgTiwgKnRvKTsKK30KKworLy8gVGhpcyBoZWxw
ZXIgcmVkdWNlcyBjb2RlIGJsb2F0LiAgSWYgd2UgaW5zdGVhZCBwdXQgaXRzIGxvZ2ljIGluc2lk
ZQorLy8gdGhlIHByZXZpb3VzIENvcHlBcnJheSgpIGZ1bmN0aW9uLCBhcnJheXMgd2l0aCBkaWZm
ZXJlbnQgc2l6ZXMKKy8vIHdvdWxkIGxlYWQgdG8gZGlmZmVyZW50IGNvcGllcyBvZiB0aGUgdGVt
cGxhdGUgY29kZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgordm9pZCBDb3B5
QXJyYXkoY29uc3QgVCogZnJvbSwgc2l6ZV90IHNpemUsIFUqIHRvKSB7CisgIGZvciAoc2l6ZV90
IGkgPSAwOyBpICE9IHNpemU7IGkrKykgeworICAgIGludGVybmFsOjpDb3B5QXJyYXkoZnJvbVtp
XSwgdG8gKyBpKTsKKyAgfQorfQorCisvLyBUaGUgcmVsYXRpb24gYmV0d2VlbiBhbiBOYXRpdmVB
cnJheSBvYmplY3QgKHNlZSBiZWxvdykgYW5kIHRoZQorLy8gbmF0aXZlIGFycmF5IGl0IHJlcHJl
c2VudHMuCisvLyBXZSB1c2UgMiBkaWZmZXJlbnQgc3RydWN0cyB0byBhbGxvdyBub24tY29weWFi
bGUgdHlwZXMgdG8gYmUgdXNlZCwgYXMgbG9uZworLy8gYXMgUmVsYXRpb25Ub1NvdXJjZVJlZmVy
ZW5jZSgpIGlzIHBhc3NlZC4KK3N0cnVjdCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlIHt9Owor
c3RydWN0IFJlbGF0aW9uVG9Tb3VyY2VDb3B5IHt9OworCisvLyBBZGFwdHMgYSBuYXRpdmUgYXJy
YXkgdG8gYSByZWFkLW9ubHkgU1RMLXN0eWxlIGNvbnRhaW5lci4gIEluc3RlYWQKKy8vIG9mIHRo
ZSBjb21wbGV0ZSBTVEwgY29udGFpbmVyIGNvbmNlcHQsIHRoaXMgYWRhcHRvciBvbmx5IGltcGxl
bWVudHMKKy8vIG1lbWJlcnMgdXNlZnVsIGZvciBHb29nbGUgTW9jaydzIGNvbnRhaW5lciBtYXRj
aGVycy4gIE5ldyBtZW1iZXJzCisvLyBzaG91bGQgYmUgYWRkZWQgYXMgbmVlZGVkLiAgVG8gc2lt
cGxpZnkgdGhlIGltcGxlbWVudGF0aW9uLCB3ZSBvbmx5CisvLyBzdXBwb3J0IEVsZW1lbnQgYmVp
bmcgYSByYXcgdHlwZSAoaS5lLiBoYXZpbmcgbm8gdG9wLWxldmVsIGNvbnN0IG9yCisvLyByZWZl
cmVuY2UgbW9kaWZpZXIpLiAgSXQncyB0aGUgY2xpZW50J3MgcmVzcG9uc2liaWxpdHkgdG8gc2F0
aXNmeQorLy8gdGhpcyByZXF1aXJlbWVudC4gIEVsZW1lbnQgY2FuIGJlIGFuIGFycmF5IHR5cGUg
aXRzZWxmIChoZW5jZQorLy8gbXVsdGktZGltZW5zaW9uYWwgYXJyYXlzIGFyZSBzdXBwb3J0ZWQp
LgordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnQ+CitjbGFzcyBOYXRpdmVBcnJheSB7CisgcHVi
bGljOgorICAvLyBTVEwtc3R5bGUgY29udGFpbmVyIHR5cGVkZWZzLgorICB0eXBlZGVmIEVsZW1l
bnQgdmFsdWVfdHlwZTsKKyAgdHlwZWRlZiBFbGVtZW50KiBpdGVyYXRvcjsKKyAgdHlwZWRlZiBj
b25zdCBFbGVtZW50KiBjb25zdF9pdGVyYXRvcjsKKworICAvLyBDb25zdHJ1Y3RzIGZyb20gYSBu
YXRpdmUgYXJyYXkuIFJlZmVyZW5jZXMgdGhlIHNvdXJjZS4KKyAgTmF0aXZlQXJyYXkoY29uc3Qg
RWxlbWVudCogYXJyYXksIHNpemVfdCBjb3VudCwgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSkg
eworICAgIEluaXRSZWYoYXJyYXksIGNvdW50KTsKKyAgfQorCisgIC8vIENvbnN0cnVjdHMgZnJv
bSBhIG5hdGl2ZSBhcnJheS4gQ29waWVzIHRoZSBzb3VyY2UuCisgIE5hdGl2ZUFycmF5KGNvbnN0
IEVsZW1lbnQqIGFycmF5LCBzaXplX3QgY291bnQsIFJlbGF0aW9uVG9Tb3VyY2VDb3B5KSB7Cisg
ICAgSW5pdENvcHkoYXJyYXksIGNvdW50KTsKKyAgfQorCisgIC8vIENvcHkgY29uc3RydWN0b3Iu
CisgIE5hdGl2ZUFycmF5KGNvbnN0IE5hdGl2ZUFycmF5JiByaHMpIHsKKyAgICAodGhpcy0+KnJo
cy5jbG9uZV8pKHJocy5hcnJheV8sIHJocy5zaXplXyk7CisgIH0KKworICB+TmF0aXZlQXJyYXko
KSB7CisgICAgaWYgKGNsb25lXyAhPSAmTmF0aXZlQXJyYXk6OkluaXRSZWYpCisgICAgICBkZWxl
dGVbXSBhcnJheV87CisgIH0KKworICAvLyBTVEwtc3R5bGUgY29udGFpbmVyIG1ldGhvZHMuCisg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZV87IH0KKyAgY29uc3RfaXRlcmF0b3Ig
YmVnaW4oKSBjb25zdCB7IHJldHVybiBhcnJheV87IH0KKyAgY29uc3RfaXRlcmF0b3IgZW5kKCkg
Y29uc3QgeyByZXR1cm4gYXJyYXlfICsgc2l6ZV87IH0KKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IE5hdGl2ZUFycmF5JiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gc2l6ZSgpID09IHJocy5zaXpl
KCkgJiYKKyAgICAgICAgQXJyYXlFcShiZWdpbigpLCBzaXplKCksIHJocy5iZWdpbigpKTsKKyAg
fQorCisgcHJpdmF0ZToKKyAgZW51bSB7CisgICAga0NoZWNrVHlwZUlzTm90Q29uc3RPckFSZWZl
cmVuY2UgPSBTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI8CisgICAgICAgIEVsZW1lbnQsIEdURVNU
X1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhFbGVtZW50KT46OnZhbHVlCisgIH07CisKKyAg
Ly8gSW5pdGlhbGl6ZXMgdGhpcyBvYmplY3Qgd2l0aCBhIGNvcHkgb2YgdGhlIGlucHV0LgorICB2
b2lkIEluaXRDb3B5KGNvbnN0IEVsZW1lbnQqIGFycmF5LCBzaXplX3QgYV9zaXplKSB7CisgICAg
RWxlbWVudCogY29uc3QgY29weSA9IG5ldyBFbGVtZW50W2Ffc2l6ZV07CisgICAgQ29weUFycmF5
KGFycmF5LCBhX3NpemUsIGNvcHkpOworICAgIGFycmF5XyA9IGNvcHk7CisgICAgc2l6ZV8gPSBh
X3NpemU7CisgICAgY2xvbmVfID0gJk5hdGl2ZUFycmF5OjpJbml0Q29weTsKKyAgfQorCisgIC8v
IEluaXRpYWxpemVzIHRoaXMgb2JqZWN0IHdpdGggYSByZWZlcmVuY2Ugb2YgdGhlIGlucHV0Lgor
ICB2b2lkIEluaXRSZWYoY29uc3QgRWxlbWVudCogYXJyYXksIHNpemVfdCBhX3NpemUpIHsKKyAg
ICBhcnJheV8gPSBhcnJheTsKKyAgICBzaXplXyA9IGFfc2l6ZTsKKyAgICBjbG9uZV8gPSAmTmF0
aXZlQXJyYXk6OkluaXRSZWY7CisgIH0KKworICBjb25zdCBFbGVtZW50KiBhcnJheV87CisgIHNp
emVfdCBzaXplXzsKKyAgdm9pZCAoTmF0aXZlQXJyYXk6OipjbG9uZV8pKGNvbnN0IEVsZW1lbnQq
LCBzaXplX3QpOworCisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oTmF0aXZlQXJyYXkpOworfTsK
KwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCi0j
ZGVmaW5lIEdURVNUX01FU1NBR0VfKG1lc3NhZ2UsIHJlc3VsdF90eXBlKSBcCi0gIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkFzc2VydEhlbHBlcihyZXN1bHRfdHlwZSwgX19GSUxFX18sIF9fTElORV9f
LCBtZXNzYWdlKSBcCisjZGVmaW5lIEdURVNUX01FU1NBR0VfQVRfKGZpbGUsIGxpbmUsIG1lc3Nh
Z2UsIHJlc3VsdF90eXBlKSBcCisgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkFzc2VydEhlbHBlcihy
ZXN1bHRfdHlwZSwgZmlsZSwgbGluZSwgbWVzc2FnZSkgXAogICAgID0gOjp0ZXN0aW5nOjpNZXNz
YWdlKCkKIAorI2RlZmluZSBHVEVTVF9NRVNTQUdFXyhtZXNzYWdlLCByZXN1bHRfdHlwZSkgXAor
ICBHVEVTVF9NRVNTQUdFX0FUXyhfX0ZJTEVfXywgX19MSU5FX18sIG1lc3NhZ2UsIHJlc3VsdF90
eXBlKQorCiAjZGVmaW5lIEdURVNUX0ZBVEFMX0ZBSUxVUkVfKG1lc3NhZ2UpIFwKICAgcmV0dXJu
IEdURVNUX01FU1NBR0VfKG1lc3NhZ2UsIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ6OmtGYXRh
bEZhaWx1cmUpCiAKQEAgLTgwMCw3ICsxMjA4LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBSYW5kb20g
ewogI2RlZmluZSBHVEVTVF9TVUNDRVNTXyhtZXNzYWdlKSBcCiAgIEdURVNUX01FU1NBR0VfKG1l
c3NhZ2UsIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNzKQogCi0vLyBTdXBwcmVz
c2VzIE1TVkMgd2FybmluZ3MgNDA3MiAodW5yZWFjaGFibGUgY29kZSkgZm9yIHRoZSBjb2RlIGZv
bGxvd2luZworLy8gU3VwcHJlc3MgTVNWQyB3YXJuaW5nIDQ3MDIgKHVucmVhY2hhYmxlIGNvZGUp
IGZvciB0aGUgY29kZSBmb2xsb3dpbmcKIC8vIHN0YXRlbWVudCBpZiBpdCByZXR1cm5zIG9yIHRo
cm93cyAob3IgZG9lc24ndCByZXR1cm4gb3IgdGhyb3cgaW4gc29tZQogLy8gc2l0dWF0aW9ucyku
CiAjZGVmaW5lIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18o
c3RhdGVtZW50KSBcCkBAIC04MDgsNyArMTIxNiw3IEBAIGNsYXNzIEdURVNUX0FQSV8gUmFuZG9t
IHsKIAogI2RlZmluZSBHVEVTVF9URVNUX1RIUk9XXyhzdGF0ZW1lbnQsIGV4cGVjdGVkX2V4Y2Vw
dGlvbiwgZmFpbCkgXAogICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0gIGlmIChj
b25zdCBjaGFyKiBndGVzdF9tc2cgPSAiIikgeyBcCisgIGlmICg6OnRlc3Rpbmc6OmludGVybmFs
OjpDb25zdENoYXJQdHIgZ3Rlc3RfbXNnID0gIiIpIHsgXAogICAgIGJvb2wgZ3Rlc3RfY2F1Z2h0
X2V4cGVjdGVkID0gZmFsc2U7IFwKICAgICB0cnkgeyBcCiAgICAgICBHVEVTVF9TVVBQUkVTU19V
TlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKQEAgLTgxNywzOCAr
MTIyNSwzOCBAQCBjbGFzcyBHVEVTVF9BUElfIFJhbmRvbSB7CiAgICAgICBndGVzdF9jYXVnaHRf
ZXhwZWN0ZWQgPSB0cnVlOyBcCiAgICAgfSBcCiAgICAgY2F0Y2ggKC4uLikgeyBcCi0gICAgICBn
dGVzdF9tc2cgPSAiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIHRocm93cyBhbiBleGNlcHRpb24g
b2YgdHlwZSAiIFwKLSAgICAgICAgICAgICAgICAgICNleHBlY3RlZF9leGNlcHRpb24gIi5cbiAg
QWN0dWFsOiBpdCB0aHJvd3MgYSBkaWZmZXJlbnQgIiBcCi0gICAgICAgICAgICAgICAgICAidHlw
ZS4iOyBcCisgICAgICBndGVzdF9tc2cudmFsdWUgPSBcCisgICAgICAgICAgIkV4cGVjdGVkOiAi
ICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5cGUgIiBcCisgICAgICAgICAg
I2V4cGVjdGVkX2V4Y2VwdGlvbiAiLlxuICBBY3R1YWw6IGl0IHRocm93cyBhIGRpZmZlcmVudCB0
eXBlLiI7IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0
dGhyb3dfLCBfX0xJTkVfXyk7IFwKICAgICB9IFwKICAgICBpZiAoIWd0ZXN0X2NhdWdodF9leHBl
Y3RlZCkgeyBcCi0gICAgICBndGVzdF9tc2cgPSAiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIHRo
cm93cyBhbiBleGNlcHRpb24gb2YgdHlwZSAiIFwKLSAgICAgICAgICAgICAgICAgICNleHBlY3Rl
ZF9leGNlcHRpb24gIi5cbiAgQWN0dWFsOiBpdCB0aHJvd3Mgbm90aGluZy4iOyBcCisgICAgICBn
dGVzdF9tc2cudmFsdWUgPSBcCisgICAgICAgICAgIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0
aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5cGUgIiBcCisgICAgICAgICAgI2V4cGVjdGVkX2V4Y2Vw
dGlvbiAiLlxuICBBY3R1YWw6IGl0IHRocm93cyBub3RoaW5nLiI7IFwKICAgICAgIGdvdG8gR1RF
U1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0dGhyb3dfLCBfX0xJTkVfXyk7IFwKICAg
ICB9IFwKICAgfSBlbHNlIFwKICAgICBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rl
c3R0aHJvd18sIF9fTElORV9fKTogXAotICAgICAgZmFpbChndGVzdF9tc2cpCisgICAgICBmYWls
KGd0ZXN0X21zZy52YWx1ZSkKIAogI2RlZmluZSBHVEVTVF9URVNUX05PX1RIUk9XXyhzdGF0ZW1l
bnQsIGZhaWwpIFwKICAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAotICBpZiAoY29u
c3QgY2hhciogZ3Rlc3RfbXNnID0gIiIpIHsgXAorICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
QWx3YXlzVHJ1ZSgpKSB7IFwKICAgICB0cnkgeyBcCiAgICAgICBHVEVTVF9TVVBQUkVTU19VTlJF
QUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKICAgICB9IFwKICAgICBj
YXRjaCAoLi4uKSB7IFwKLSAgICAgIGd0ZXN0X21zZyA9ICJFeHBlY3RlZDogIiAjc3RhdGVtZW50
ICIgZG9lc24ndCB0aHJvdyBhbiBleGNlcHRpb24uXG4iIFwKLSAgICAgICAgICAgICAgICAgICIg
IEFjdHVhbDogaXQgdGhyb3dzLiI7IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhn
dGVzdF9sYWJlbF90ZXN0bm90aHJvd18sIF9fTElORV9fKTsgXAogICAgIH0gXAogICB9IGVsc2Ug
XAogICAgIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdG5vdGhyb3dfLCBfX0xJ
TkVfXyk6IFwKLSAgICAgIGZhaWwoZ3Rlc3RfbXNnKQorICAgICAgZmFpbCgiRXhwZWN0ZWQ6ICIg
I3N0YXRlbWVudCAiIGRvZXNuJ3QgdGhyb3cgYW4gZXhjZXB0aW9uLlxuIiBcCisgICAgICAgICAg
ICIgIEFjdHVhbDogaXQgdGhyb3dzLiIpCiAKICNkZWZpbmUgR1RFU1RfVEVTVF9BTllfVEhST1df
KHN0YXRlbWVudCwgZmFpbCkgXAogICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0g
IGlmIChjb25zdCBjaGFyKiBndGVzdF9tc2cgPSAiIikgeyBcCisgIGlmICg6OnRlc3Rpbmc6Omlu
dGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAogICAgIGJvb2wgZ3Rlc3RfY2F1Z2h0X2FueSA9IGZh
bHNlOyBcCiAgICAgdHJ5IHsgXAogICAgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09E
RV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCkBAIC04NTcsMTMgKzEyNjUsMTIgQEAgY2xh
c3MgR1RFU1RfQVBJXyBSYW5kb20gewogICAgICAgZ3Rlc3RfY2F1Z2h0X2FueSA9IHRydWU7IFwK
ICAgICB9IFwKICAgICBpZiAoIWd0ZXN0X2NhdWdodF9hbnkpIHsgXAotICAgICAgZ3Rlc3RfbXNn
ID0gIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuIiBcCi0g
ICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IGl0IGRvZXNuJ3QuIjsgXAogICAgICAgZ290byBH
VEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3Rhbnl0aHJvd18sIF9fTElORV9fKTsg
XAogICAgIH0gXAogICB9IGVsc2UgXAogICAgIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFi
ZWxfdGVzdGFueXRocm93XywgX19MSU5FX18pOiBcCi0gICAgICBmYWlsKGd0ZXN0X21zZykKKyAg
ICAgIGZhaWwoIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxu
IiBcCisgICAgICAgICAgICIgIEFjdHVhbDogaXQgZG9lc24ndC4iKQogCiAKIC8vIEltcGxlbWVu
dHMgQm9vbGVhbiB0ZXN0IGFzc2VydGlvbnMgc3VjaCBhcyBFWFBFQ1RfVFJVRS4gZXhwcmVzc2lv
biBjYW4gYmUKQEAgLTg4MCwxOCArMTI4NywxNyBAQCBjbGFzcyBHVEVTVF9BUElfIFJhbmRvbSB7
CiAKICNkZWZpbmUgR1RFU1RfVEVTVF9OT19GQVRBTF9GQUlMVVJFXyhzdGF0ZW1lbnQsIGZhaWwp
IFwKICAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAotICBpZiAoY29uc3QgY2hhciog
Z3Rlc3RfbXNnID0gIiIpIHsgXAorICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1
ZSgpKSB7IFwKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpIYXNOZXdGYXRhbEZhaWx1cmVIZWxw
ZXIgZ3Rlc3RfZmF0YWxfZmFpbHVyZV9jaGVja2VyOyBcCiAgICAgR1RFU1RfU1VQUFJFU1NfVU5S
RUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCiAgICAgaWYgKGd0ZXN0
X2ZhdGFsX2ZhaWx1cmVfY2hlY2tlci5oYXNfbmV3X2ZhdGFsX2ZhaWx1cmUoKSkgeyBcCi0gICAg
ICBndGVzdF9tc2cgPSAiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgZ2VuZXJhdGUg
bmV3IGZhdGFsICIgXAotICAgICAgICAgICAgICAgICAgImZhaWx1cmVzIGluIHRoZSBjdXJyZW50
IHRocmVhZC5cbiIgXAotICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBpdCBkb2VzLiI7IFwK
ICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0bm9mYXRhbF8s
IF9fTElORV9fKTsgXAogICAgIH0gXAogICB9IGVsc2UgXAogICAgIEdURVNUX0NPTkNBVF9UT0tF
Tl8oZ3Rlc3RfbGFiZWxfdGVzdG5vZmF0YWxfLCBfX0xJTkVfXyk6IFwKLSAgICAgIGZhaWwoZ3Rl
c3RfbXNnKQorICAgICAgZmFpbCgiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgZ2Vu
ZXJhdGUgbmV3IGZhdGFsICIgXAorICAgICAgICAgICAiZmFpbHVyZXMgaW4gdGhlIGN1cnJlbnQg
dGhyZWFkLlxuIiBcCisgICAgICAgICAgICIgIEFjdHVhbDogaXQgZG9lcy4iKQogCiAvLyBFeHBh
bmRzIHRvIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyB0aGF0IGltcGxlbWVudHMgdGhlIGdpdmVuIHRl
c3QuCiAjZGVmaW5lIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3Rf
bmFtZSkgXApAQCAtOTA0LDcgKzEzMTAsNyBAQCBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVf
KHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIDogcHVibGljIHBhcmVudF9jbGFzcyB7XAogICBH
VEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpKCkge31cCiAg
cHJpdmF0ZTpcCiAgIHZpcnR1YWwgdm9pZCBUZXN0Qm9keSgpO1wKLSAgc3RhdGljIDo6dGVzdGlu
Zzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mb187XAorICBzdGF0aWMgOjp0ZXN0aW5nOjpUZXN0
SW5mbyogY29uc3QgdGVzdF9pbmZvXyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXztcCiAgIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oXAogICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1F
Xyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSk7XAogfTtcCkBAIC05MTIsNyArMTMxOCw4IEBA
IGNsYXNzIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkg
OiBwdWJsaWMgcGFyZW50X2NsYXNzIHtcCiA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCBHVEVT
VF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpXAogICA6OnRlc3Rf
aW5mb18gPVwKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpNYWtlQW5kUmVnaXN0ZXJUZXN0SW5m
byhcCi0gICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgI3Rlc3RfbmFtZSwgIiIsICIiLCBcCisgICAg
ICAgICN0ZXN0X2Nhc2VfbmFtZSwgI3Rlc3RfbmFtZSwgTlVMTCwgTlVMTCwgXAorICAgICAgICA6
OnRlc3Rpbmc6OmludGVybmFsOjpDb2RlTG9jYXRpb24oX19GSUxFX18sIF9fTElORV9fKSwgXAog
ICAgICAgICAocGFyZW50X2lkKSwgXAogICAgICAgICBwYXJlbnRfY2xhc3M6OlNldFVwVGVzdENh
c2UsIFwKICAgICAgICAgcGFyZW50X2NsYXNzOjpUZWFyRG93blRlc3RDYXNlLCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0
LWxpbmtlZF9wdHIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oCmluZGV4IDU0MGVmNGNkNDRlNzJiNTU4NjU3MDgxYTVm
MDdhMGYyOGIzZTQwZTMuLjA4MmI4NzI4OWFlMTdjOGFhN2I5NmQ4ZThjOTJiOTZlMDE4Yzc2OGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtbGlua2VkX3B0ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oCkBAIC0yNyw4ICsyNyw2IEBACiAv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQXV0aG9yczogRGFuIEVnbm9y
IChlZ25vckBnb29nbGUuY29tKQotLy8KIC8vIEEgInNtYXJ0IiBwb2ludGVyIHR5cGUgd2l0aCBy
ZWZlcmVuY2UgdHJhY2tpbmcuICBFdmVyeSBwb2ludGVyIHRvIGEKIC8vIHBhcnRpY3VsYXIgb2Jq
ZWN0IGlzIGtlcHQgb24gYSBjaXJjdWxhciBsaW5rZWQgbGlzdC4gIFdoZW4gdGhlIGxhc3QgcG9p
bnRlcgogLy8gdG8gYW4gb2JqZWN0IGlzIGRlc3Ryb3llZCBvciByZWFzc2lnbmVkLCB0aGUgb2Jq
ZWN0IGlzIGRlbGV0ZWQuCkBAIC02MiwxNiArNjAsMTggQEAKIC8vICAgICAgIHJhdyBwb2ludGVy
IChlLmcuIHZpYSBnZXQoKSkgY29uY3VycmVudGx5LCBhbmQKIC8vICAgICAtIGl0J3Mgc2FmZSB0
byB3cml0ZSB0byB0d28gbGlua2VkX3B0cnMgdGhhdCBwb2ludCB0byB0aGUgc2FtZQogLy8gICAg
ICAgc2hhcmVkIG9iamVjdCBjb25jdXJyZW50bHkuCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTog
cmVuYW1lIHRoaXMgdG8gc2FmZV9saW5rZWRfcHRyIHRvIGF2b2lkCisvLyBGSVhNRTogcmVuYW1l
IHRoaXMgdG8gc2FmZV9saW5rZWRfcHRyIHRvIGF2b2lkCiAvLyBjb25mdXNpb24gd2l0aCBub3Jt
YWwgbGlua2VkX3B0ci4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAj
aWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfTElOS0VEX1BUUl9IXwog
I2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0xJTktFRF9QVFJfSF8K
IAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPGFzc2VydC5oPgogCi0jaW5jbHVkZSA8
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsK
QEAgLTEwNSwyNSArMTA1LDM1IEBAIGNsYXNzIGxpbmtlZF9wdHJfaW50ZXJuYWwgewogICAvLyBm
cmFtZXdvcmsuCiAKICAgLy8gSm9pbiBhbiBleGlzdGluZyBjaXJjbGUuCi0gIC8vIEwgPCBnX2xp
bmtlZF9wdHJfbXV0ZXgKLSAgdm9pZCBqb2luKGxpbmtlZF9wdHJfaW50ZXJuYWwgY29uc3QqIHB0
cikgeworICB2b2lkIGpvaW4obGlua2VkX3B0cl9pbnRlcm5hbCBjb25zdCogcHRyKQorICAgICAg
R1RFU1RfTE9DS19FWENMVURFRF8oZ19saW5rZWRfcHRyX211dGV4KSB7CiAgICAgTXV0ZXhMb2Nr
IGxvY2soJmdfbGlua2VkX3B0cl9tdXRleCk7CiAKICAgICBsaW5rZWRfcHRyX2ludGVybmFsIGNv
bnN0KiBwID0gcHRyOwotICAgIHdoaWxlIChwLT5uZXh0XyAhPSBwdHIpIHAgPSBwLT5uZXh0XzsK
KyAgICB3aGlsZSAocC0+bmV4dF8gIT0gcHRyKSB7CisgICAgICBhc3NlcnQocC0+bmV4dF8gIT0g
dGhpcyAmJgorICAgICAgICAgICAgICJUcnlpbmcgdG8gam9pbigpIGEgbGlua2VkIHJpbmcgd2Ug
YXJlIGFscmVhZHkgaW4uICIKKyAgICAgICAgICAgICAiSXMgR01vY2sgdGhyZWFkIHNhZmV0eSBl
bmFibGVkPyIpOworICAgICAgcCA9IHAtPm5leHRfOworICAgIH0KICAgICBwLT5uZXh0XyA9IHRo
aXM7CiAgICAgbmV4dF8gPSBwdHI7CiAgIH0KIAogICAvLyBMZWF2ZSB3aGF0ZXZlciBjaXJjbGUg
d2UncmUgcGFydCBvZi4gIFJldHVybnMgdHJ1ZSBpZiB3ZSB3ZXJlIHRoZQogICAvLyBsYXN0IG1l
bWJlciBvZiB0aGUgY2lyY2xlLiAgT25jZSB0aGlzIGlzIGRvbmUsIHlvdSBjYW4gam9pbigpIGFu
b3RoZXIuCi0gIC8vIEwgPCBnX2xpbmtlZF9wdHJfbXV0ZXgKLSAgYm9vbCBkZXBhcnQoKSB7Cisg
IGJvb2wgZGVwYXJ0KCkKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGdfbGlua2VkX3B0cl9t
dXRleCkgewogICAgIE11dGV4TG9jayBsb2NrKCZnX2xpbmtlZF9wdHJfbXV0ZXgpOwogCiAgICAg
aWYgKG5leHRfID09IHRoaXMpIHJldHVybiB0cnVlOwogICAgIGxpbmtlZF9wdHJfaW50ZXJuYWwg
Y29uc3QqIHAgPSBuZXh0XzsKLSAgICB3aGlsZSAocC0+bmV4dF8gIT0gdGhpcykgcCA9IHAtPm5l
eHRfOworICAgIHdoaWxlIChwLT5uZXh0XyAhPSB0aGlzKSB7CisgICAgICBhc3NlcnQocC0+bmV4
dF8gIT0gbmV4dF8gJiYKKyAgICAgICAgICAgICAiVHJ5aW5nIHRvIGRlcGFydCgpIGEgbGlua2Vk
IHJpbmcgd2UgYXJlIG5vdCBpbi4gIgorICAgICAgICAgICAgICJJcyBHTW9jayB0aHJlYWQgc2Fm
ZXR5IGVuYWJsZWQ/Iik7CisgICAgICBwID0gcC0+bmV4dF87CisgICAgfQogICAgIHAtPm5leHRf
ID0gbmV4dF87CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CkBAIC0xNzIsMTUgKzE4Miw2IEBAIGNs
YXNzIGxpbmtlZF9wdHIgewogICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KICAg
VCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQogICBUJiBvcGVyYXRvcioo
KSBjb25zdCB7IHJldHVybiAqdmFsdWVfOyB9Ci0gIC8vIFJlbGVhc2Ugb3duZXJzaGlwIG9mIHRo
ZSBwb2ludGVkIG9iamVjdCBhbmQgcmV0dXJucyBpdC4KLSAgLy8gU29sZSBvd25lcnNoaXAgYnkg
dGhpcyBsaW5rZWRfcHRyIG9iamVjdCBpcyByZXF1aXJlZC4KLSAgVCogcmVsZWFzZSgpIHsKLSAg
ICBib29sIGxhc3QgPSBsaW5rXy5kZXBhcnQoKTsKLSAgICBhc3NlcnQobGFzdCk7Ci0gICAgVCog
diA9IHZhbHVlXzsKLSAgICB2YWx1ZV8gPSBOVUxMOwotICAgIHJldHVybiB2OwotICB9CiAKICAg
Ym9vbCBvcGVyYXRvcj09KFQqIHApIGNvbnN0IHsgcmV0dXJuIHZhbHVlXyA9PSBwOyB9CiAgIGJv
b2wgb3BlcmF0b3IhPShUKiBwKSBjb25zdCB7IHJldHVybiB2YWx1ZV8gIT0gcDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oCmluZGV4IDYyYjVh
ZTEzZTI4ZTU2NmIxZTg4NTEyN2RiYjA3Y2QxNzJhMjZmMTkuLjRmYWM4YzAyNzAzZDU5MWViMmYy
MmVmMTQ4NDFiNDI1NTZjNTA0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBh
cmFtLXV0aWwtZ2VuZXJhdGVkLmgKQEAgLTEsNCArMSw2IEBACi0vLyBUaGlzIGZpbGUgd2FzIEdF
TkVSQVRFRCBieSBhIHNjcmlwdC4gIERPIE5PVCBFRElUIEJZIEhBTkQhISEKKy8vIFRoaXMgZmls
ZSB3YXMgR0VORVJBVEVEIGJ5IGNvbW1hbmQ6CisvLyAgICAgcHVtcC5weSBndGVzdC1wYXJhbS11
dGlsLWdlbmVyYXRlZC5oLnB1bXAKKy8vIERPIE5PVCBFRElUIEJZIEhBTkQhISEKIAogLy8gQ29w
eXJpZ2h0IDIwMDggR29vZ2xlIEluYy4KIC8vIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCkBAIC0yOCw4
ICszMCw3IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQorCiAKIC8vIFR5
cGUgYW5kIGZ1bmN0aW9uIHV0aWxpdGllcyBmb3IgaW1wbGVtZW50aW5nIHBhcmFtZXRlcml6ZWQg
dGVzdHMuCiAvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBULiAgRE8gTk9UIEVE
SVQgQlkgSEFORCEKQEAgLTQxLDE2ICs0MiwxMyBAQAogLy8gYnkgdGhlIG1heGltdW0gYXJpdHkg
b2YgdGhlIGltcGxlbWVudGF0aW9uIG9mIHR1cGxlIHdoaWNoIGlzCiAvLyBjdXJyZW50bHkgc2V0
IGF0IDEwLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYg
R1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0dFTkVSQVRFRF9I
XwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BBUkFNX1VUSUxf
R0VORVJBVEVEX0hfCiAKLS8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBkZXBlbmRzIG9uIGd0ZXN0
J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKLS8vICp1bmNvbmRpdGlvbmFsbHkqLiAgVGhl
cmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKLS8vIGluc2lkZSAjaWYgR1RF
U1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLQotI2lmIEdU
RVNUX0hBU19QQVJBTV9URVNUCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKIAogbmFtZXNw
YWNlIHRlc3RpbmcgewogCkBAIC01OCw4ICs1Niw4IEBAIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIC8v
IGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLgogdGVtcGxhdGUgPHR5cGVuYW1lIEZv
cndhcmRJdGVyYXRvcj4KIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjwKLSAgICB0eXBlbmFtZSA6
OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+IFZhbHVl
c0luKAotICAgICAgICBGb3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJdGVyYXRvciBlbmQp
OworICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVyYXRvclRyYWl0czxGb3J3YXJk
SXRlcmF0b3I+Ojp2YWx1ZV90eXBlPgorVmFsdWVzSW4oRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLCBG
b3J3YXJkSXRlcmF0b3IgZW5kKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgog
aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFZhbHVlc0luKGNvbnN0IFQgKCZhcnJheSlbTl0p
OwpAQCAtNzcsNyArNzUsMTIgQEAgY2xhc3MgVmFsdWVBcnJheTEgewogICBleHBsaWNpdCBWYWx1
ZUFycmF5MShUMSB2MSkgOiB2MV8odjEpIHt9CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0g
IG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgeyByZXR1cm4gVmFsdWVzSW4oJnYx
XywgJnYxXyArIDEpOyB9CisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qgewor
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pfTsKKyAgICByZXR1cm4g
VmFsdWVzSW4oYXJyYXkpOworICB9CisKKyAgVmFsdWVBcnJheTEoY29uc3QgVmFsdWVBcnJheTEm
IG90aGVyKSA6IHYxXyhvdGhlci52MV8pIHt9CiAKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1l
bnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC05MywxMCArOTYsMTIgQEAg
Y2xhc3MgVmFsdWVBcnJheTIgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFf
LCB2Ml99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0
aWNfY2FzdDxUPih2Ml8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAg
VmFsdWVBcnJheTIoY29uc3QgVmFsdWVBcnJheTImIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2
Ml8ob3RoZXIudjJfKSB7fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBh
c3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFy
cmF5MiYgb3RoZXIpOwpAQCAtMTEyLDEwICsxMTcsMTQgQEAgY2xhc3MgVmFsdWVBcnJheTMgewog
CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigp
IGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzX307CisgICAgY29u
c3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJh
eSk7CiAgIH0KIAorICBWYWx1ZUFycmF5Myhjb25zdCBWYWx1ZUFycmF5MyYgb3RoZXIpIDogdjFf
KG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXykge30KKwog
IHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBv
cnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTMmIG90aGVyKTsKQEAgLTEz
MywxMCArMTQyLDE0IEBAIGNsYXNzIFZhbHVlQXJyYXk0IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3Qg
VCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0X307CisgICAgY29uc3QgVCBhcnJheVtdID0g
e3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJ
bihhcnJheSk7CiAgIH0KIAorICBWYWx1ZUFycmF5NChjb25zdCBWYWx1ZUFycmF5NCYgb3RoZXIp
IDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyks
IHY0XyhvdGhlci52NF8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAt
IGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVl
QXJyYXk0JiBvdGhlcik7CkBAIC0xNTUsMTAgKzE2OCwxNCBAQCBjbGFzcyBWYWx1ZUFycmF5NSB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19j
YXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+
KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7
CiAgIH0KIAorICBWYWx1ZUFycmF5NShjb25zdCBWYWx1ZUFycmF5NSYgb3RoZXIpIDogdjFfKG90
aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhl
ci52NF8pLCB2NV8ob3RoZXIudjVfKSB7fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50
YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25z
dCBWYWx1ZUFycmF5NSYgb3RoZXIpOwpAQCAtMTc5LDEwICsxOTYsMTUgQEAgY2xhc3MgVmFsdWVB
cnJheTYgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywg
djRfLCB2NV8sIHY2X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYx
XyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0
YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY2Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAorICBWYWx1
ZUFycmF5Nihjb25zdCBWYWx1ZUFycmF5NiYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhv
dGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3Ro
ZXIudjVfKSwgdjZfKG90aGVyLnY2Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVu
dGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgVmFsdWVBcnJheTYmIG90aGVyKTsKQEAgLTIwNCwxMCArMjI2LDE2IEBAIGNsYXNzIFZhbHVl
QXJyYXk3IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5l
cmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18s
IHY0XywgdjVfLCB2Nl8sIHY3X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0
PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
XyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3Xyl9OwogICAgIHJldHVybiBWYWx1
ZXNJbihhcnJheSk7CiAgIH0KIAorICBWYWx1ZUFycmF5Nyhjb25zdCBWYWx1ZUFycmF5NyYgb3Ro
ZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYz
XyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAg
ICB2N18ob3RoZXIudjdfKSB7fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24g
LSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1
ZUFycmF5NyYgb3RoZXIpOwpAQCAtMjMxLDEwICsyNTksMTYgQEAgY2xhc3MgVmFsdWVBcnJheTgg
ewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2
NV8sIHY2XywgdjdfLCB2OF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxU
Pih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18p
LCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8p
fTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTgoY29u
c3QgVmFsdWVBcnJheTgmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwK
KyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2
XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pIHt9CisK
ICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBw
b3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk4JiBvdGhlcik7CkBAIC0y
NTksMTAgKzI5MywxNyBAQCBjbGFzcyBWYWx1ZUFycmF5OSB7CiAKICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywgdjlf
fTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4o
djRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwg
c3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjlfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZh
bHVlQXJyYXk5KGNvbnN0IFZhbHVlQXJyYXk5JiBvdGhlcikgOiB2MV8ob3RoZXIudjFfKSwgdjJf
KG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0XyksIHY1Xyhv
dGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2OF8ob3Ro
ZXIudjhfKSwgdjlfKG90aGVyLnY5Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVu
dGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgVmFsdWVBcnJheTkmIG90aGVyKTsKQEAgLTI4OCwxMCArMzI5LDE3IEBAIGNsYXNzIFZhbHVl
QXJyYXkxMCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNf
LCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBffTsKKyAgICBjb25zdCBUIGFycmF5
W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEwXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAorICBW
YWx1ZUFycmF5MTAoY29uc3QgVmFsdWVBcnJheTEwJiBvdGhlcikgOiB2MV8ob3RoZXIudjFfKSwg
djJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0XyksIHY1
XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2OF8o
b3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXykge30KKwogIHByaXZh
dGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4K
ICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTEwJiBvdGhlcik7CkBAIC0zMTksMTAg
KzM2NywxOCBAQCBjbGFzcyBWYWx1ZUFycmF5MTEgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFy
cmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEw
XywgdjExX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJy
YXkxMShjb25zdCBWYWx1ZUFycmF5MTEmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3Ro
ZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVy
LnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52
OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIu
djExXykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVu
dCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTExJiBv
dGhlcik7CkBAIC0zNTEsMTEgKzQwNywxOSBAQCBjbGFzcyBWYWx1ZUFycmF5MTIgewogCiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0
IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywg
djdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyX307CisgICAgY29uc3QgVCBh
cnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0
PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3
XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0
YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjEyXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAorICBW
YWx1ZUFycmF5MTIoY29uc3QgVmFsdWVBcnJheTEyJiBvdGhlcikgOiB2MV8ob3RoZXIudjFfKSwg
djJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0XyksIHY1
XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2OF8o
b3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXyksCisgICAgICB2MTFf
KG90aGVyLnYxMV8pLCB2MTJfKG90aGVyLnYxMl8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBp
bXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0
b3I9KGNvbnN0IFZhbHVlQXJyYXkxMiYgb3RoZXIpOwpAQCAtMzg2LDExICs0NTAsMTkgQEAgY2xh
c3MgVmFsdWVBcnJheTEzIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3Ig
UGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywg
djJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAg
ICAgIHYxMl8sIHYxM199OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2
MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBz
dGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGlj
X2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2Fz
dDxUPih2MTNfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVl
QXJyYXkxMyhjb25zdCBWYWx1ZUFycmF5MTMmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8o
b3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90
aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhl
ci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3Ro
ZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXykge30KKwogIHByaXZh
dGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4K
ICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTEzJiBvdGhlcik7CkBAIC00MjIsMTEg
KzQ5NCwxOSBAQCBjbGFzcyBWYWx1ZUFycmF5MTQgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFy
cmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEw
XywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0X307CisgICAgY29uc3QgVCBhcnJheVtd
ID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0
YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19j
YXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKX07CiAg
ICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkxNChjb25zdCBW
YWx1ZUFycmF5MTQmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAg
ICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2Xyhv
dGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3Ro
ZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8o
b3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0Xykge30KKwogIHBy
aXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRl
ZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTE0JiBvdGhlcik7CkBAIC00NTks
MTEgKzUzOSwyMSBAQCBjbGFzcyBWYWx1ZUFycmF5MTUgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBU
IGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5Xywg
djEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1X307CisgICAgY29uc3Qg
VCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19j
YXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+
KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5Xyks
IHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2
MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJ
bihhcnJheSk7CiAgIH0KIAorICBWYWx1ZUFycmF5MTUoY29uc3QgVmFsdWVBcnJheTE1JiBvdGhl
cikgOiB2MV8ob3RoZXIudjFfKSwgdjJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNf
KSwgdjRfKG90aGVyLnY0XyksIHY1XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAg
IHY3XyhvdGhlci52N18pLCB2OF8ob3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3Ro
ZXIudjEwXyksCisgICAgICB2MTFfKG90aGVyLnYxMV8pLCB2MTJfKG90aGVyLnYxMl8pLCB2MTNf
KG90aGVyLnYxM18pLCB2MTRfKG90aGVyLnYxNF8pLAorICAgICAgdjE1XyhvdGhlci52MTVfKSB7
fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVu
c3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MTUmIG90aGVyKTsK
QEAgLTQ5OSwxMSArNTg5LDIxIEBAIGNsYXNzIFZhbHVlQXJyYXkxNiB7CiAKICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4
XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZf
fTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4o
djRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwg
c3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0
YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE2Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAorICBW
YWx1ZUFycmF5MTYoY29uc3QgVmFsdWVBcnJheTE2JiBvdGhlcikgOiB2MV8ob3RoZXIudjFfKSwg
djJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0XyksIHY1
XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2OF8o
b3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXyksCisgICAgICB2MTFf
KG90aGVyLnYxMV8pLCB2MTJfKG90aGVyLnYxMl8pLCB2MTNfKG90aGVyLnYxM18pLCB2MTRfKG90
aGVyLnYxNF8pLAorICAgICAgdjE1XyhvdGhlci52MTVfKSwgdjE2XyhvdGhlci52MTZfKSB7fQor
CiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3Vw
cG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MTYmIG90aGVyKTsKQEAg
LTU0MCwxMSArNjQwLDIxIEBAIGNsYXNzIFZhbHVlQXJyYXkxNyB7CiAKICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywg
djlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2
MTdffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyks
IHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pfTsKICAgICByZXR1cm4gVmFs
dWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTE3KGNvbnN0IFZhbHVlQXJyYXkxNyYg
b3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVy
LnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisg
ICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBf
KG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwg
djEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1
XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIudjE3Xykge30KKwogIHByaXZhdGU6CiAg
IC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9p
ZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTE3JiBvdGhlcik7CkBAIC01ODIsMTEgKzY5Miwy
MiBAQCBjbGFzcyBWYWx1ZUFycmF5MTggewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4X307Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNf
Y2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0
PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE4Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAorICBWYWx1ZUFycmF5
MTgoY29uc3QgVmFsdWVBcnJheTE4JiBvdGhlcikgOiB2MV8ob3RoZXIudjFfKSwgdjJfKG90aGVy
LnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0XyksIHY1XyhvdGhlci52
NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2OF8ob3RoZXIudjhf
KSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXyksCisgICAgICB2MTFfKG90aGVyLnYx
MV8pLCB2MTJfKG90aGVyLnYxMl8pLCB2MTNfKG90aGVyLnYxM18pLCB2MTRfKG90aGVyLnYxNF8p
LAorICAgICAgdjE1XyhvdGhlci52MTVfKSwgdjE2XyhvdGhlci52MTZfKSwgdjE3XyhvdGhlci52
MTdfKSwgdjE4XyhvdGhlci52MThfKSB7fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50
YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25z
dCBWYWx1ZUFycmF5MTgmIG90aGVyKTsKQEAgLTYyNSwxMSArNzQ2LDIzIEBAIGNsYXNzIFZhbHVl
QXJyYXkxOSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNf
LCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJf
LCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlffTsKKyAgICBjb25zdCBU
IGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nh
c3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4o
djdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwg
c3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYx
NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2Xyks
IHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE5Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAor
ICBWYWx1ZUFycmF5MTkoY29uc3QgVmFsdWVBcnJheTE5JiBvdGhlcikgOiB2MV8ob3RoZXIudjFf
KSwgdjJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0Xyks
IHY1XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2
OF8ob3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXyksCisgICAgICB2
MTFfKG90aGVyLnYxMV8pLCB2MTJfKG90aGVyLnYxMl8pLCB2MTNfKG90aGVyLnYxM18pLCB2MTRf
KG90aGVyLnYxNF8pLAorICAgICAgdjE1XyhvdGhlci52MTVfKSwgdjE2XyhvdGhlci52MTZfKSwg
djE3XyhvdGhlci52MTdfKSwgdjE4XyhvdGhlci52MThfKSwKKyAgICAgIHYxOV8ob3RoZXIudjE5
Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBp
cyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTE5JiBvdGhl
cik7CkBAIC02NzAsMTEgKzgwMywyMyBAQCBjbGFzcyBWYWx1ZUFycmF5MjAgewogCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
LSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywgdjdf
LCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1Xywg
djE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYx
OV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
ICAgfQogCisgIFZhbHVlQXJyYXkyMChjb25zdCBWYWx1ZUFycmF5MjAmIG90aGVyKSA6IHYxXyhv
dGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3Ro
ZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVy
LnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwK
KyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEz
XyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVy
LnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5Xyhv
dGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSB7fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1w
bGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9y
PShjb25zdCBWYWx1ZUFycmF5MjAmIG90aGVyKTsKQEAgLTcxNywxMSArODYyLDI0IEBAIGNsYXNz
IFZhbHVlQXJyYXkyMSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYy
XywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAg
ICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2
MjFffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyks
IHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkyMShjb25zdCBWYWx1ZUFycmF5MjEmIG90aGVyKSA6
IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2
NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdf
KG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52
MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3Ro
ZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZf
KG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAg
djE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSB7fQor
CiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3Vw
cG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MjEmIG90aGVyKTsKQEAg
LTc2NSwxMSArOTIzLDI0IEBAIGNsYXNzIFZhbHVlQXJyYXkyMiB7CiAKICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywg
djlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2
MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJffTsKKyAgICBjb25zdCBUIGFycmF5W10g
PSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nh
c3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19j
YXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8
VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7
CiAgIH0KIAorICBWYWx1ZUFycmF5MjIoY29uc3QgVmFsdWVBcnJheTIyJiBvdGhlcikgOiB2MV8o
b3RoZXIudjFfKSwgdjJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90
aGVyLnY0XyksIHY1XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhl
ci52N18pLCB2OF8ob3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXyks
CisgICAgICB2MTFfKG90aGVyLnYxMV8pLCB2MTJfKG90aGVyLnYxMl8pLCB2MTNfKG90aGVyLnYx
M18pLCB2MTRfKG90aGVyLnYxNF8pLAorICAgICAgdjE1XyhvdGhlci52MTVfKSwgdjE2XyhvdGhl
ci52MTZfKSwgdjE3XyhvdGhlci52MTdfKSwgdjE4XyhvdGhlci52MThfKSwKKyAgICAgIHYxOV8o
b3RoZXIudjE5XyksIHYyMF8ob3RoZXIudjIwXyksIHYyMV8ob3RoZXIudjIxXyksIHYyMl8ob3Ro
ZXIudjIyXykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdu
bWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTIy
JiBvdGhlcik7CkBAIC04MTUsMTIgKzk4NiwyNSBAQCBjbGFzcyBWYWx1ZUFycmF5MjMgewogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2
XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0Xywg
djE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywKLSAgICAgICAg
djIzX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRp
Y19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0
PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2
XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2
MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18p
LCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0
YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBz
dGF0aWNfY2FzdDxUPih2MjNfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQog
CisgIFZhbHVlQXJyYXkyMyhjb25zdCBWYWx1ZUFycmF5MjMmIG90aGVyKSA6IHYxXyhvdGhlci52
MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRf
KSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3Xyks
IHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAg
IHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYx
NF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8p
LCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52
MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJf
KSwKKyAgICAgIHYyM18ob3RoZXIudjIzXykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxl
bWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0o
Y29uc3QgVmFsdWVBcnJheTIzJiBvdGhlcik7CkBAIC04NjcsMTIgKzEwNTEsMjYgQEAgY2xhc3Mg
VmFsdWVBcnJheTI0IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFy
YW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJf
LCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAg
IHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYy
MV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtz
dGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNf
Y2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
Ml8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8
VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2
MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8p
LCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyNF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAK
KyAgVmFsdWVBcnJheTI0KGNvbnN0IFZhbHVlQXJyYXkyNCYgb3RoZXIpIDogdjFfKG90aGVyLnYx
XyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8p
LCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwg
djhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAg
djExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0
XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2Xyks
IHYxN18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYx
OV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8p
LAorICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSB7fQorCiAgcHJpdmF0
ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgog
ICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MjQmIG90aGVyKTsKQEAgLTkyMCwxMiAr
MTExOCwyNiBAQCBjbGFzcyBWYWx1ZUFycmF5MjUgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFy
cmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEw
XywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4
XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1X307Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNf
Y2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0
PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2Fz
dDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+
KHYyNV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJh
eTI1KGNvbnN0IFZhbHVlQXJyYXkyNSYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhl
ci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIu
djVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4
XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52
MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRf
KSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIu
djE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90
aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIz
XyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVfKSB7fQorCiAg
cHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9y
dGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MjUmIG90aGVyKTsKQEAgLTk3
NSwxMiArMTE4NywyNiBAQCBjbGFzcyBWYWx1ZUFycmF5MjYgewogCiAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25z
dCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5
XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3
XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1
XywgdjI2X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYx
M18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyks
IHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2
MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8p
LCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0
YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKX07CiAgICAgcmV0dXJuIFZh
bHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkyNihjb25zdCBWYWx1ZUFycmF5MjYm
IG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhl
ci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAor
ICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEw
XyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyks
IHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYx
NV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8p
LAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52
MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3Ro
ZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2Xykge30KKwogIHByaXZh
dGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4K
ICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTI2JiBvdGhlcik7CkBAIC0xMDMyLDEy
ICsxMjU4LDI4IEBAIGNsYXNzIFZhbHVlQXJyYXkyNyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2
MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2
MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2
MjZfLCB2MjdffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0
PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4o
djEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVf
KSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+
KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIy
XyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjdfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisg
IFZhbHVlQXJyYXkyNyhjb25zdCBWYWx1ZUFycmF5MjcmIG90aGVyKSA6IHYxXyhvdGhlci52MV8p
LCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwg
djVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4
XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYx
MV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8o
b3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2
MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlf
KSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwK
KyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1
XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pIHt9CisKICBwcml2
YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQu
CiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkyNyYgb3RoZXIpOwpAQCAtMTA5MCwx
MiArMTMzMiwyOCBAQCBjbGFzcyBWYWx1ZUFycmF5MjggewogCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBU
IGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5Xywg
djEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3Xywg
djE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1Xywg
djI2XywgdjI3XywgdjI4X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+
KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyks
IHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0
aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19j
YXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0
PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pfTsKICAgICByZXR1
cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTI4KGNvbnN0IFZhbHVlQXJy
YXkyOCYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNf
KG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2
XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8p
LCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52
MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3Ro
ZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIu
djE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90
aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0
XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAg
IHYyN18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIudjI4Xykge30KKwogIHByaXZhdGU6CiAgIC8v
IE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBv
cGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTI4JiBvdGhlcik7CkBAIC0xMTQ5LDEyICsxNDA3LDI4
IEBAIGNsYXNzIFZhbHVlQXJyYXkyOSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9w
ZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9
IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFf
LAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlf
LCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2Mjdf
LCB2MjhfLCB2MjlffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8
VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0
PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+
KHYyOV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJh
eTI5KGNvbnN0IFZhbHVlQXJyYXkyOSYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhl
ci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIu
djVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4
XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52
MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRf
KSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIu
djE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90
aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIz
XyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVfKSwgdjI2Xyhv
dGhlci52MjZfKSwKKyAgICAgIHYyN18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIudjI4XyksIHYy
OV8ob3RoZXIudjI5Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0g
YXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVB
cnJheTI5JiBvdGhlcik7CkBAIC0xMjEwLDEyICsxNDg0LDI5IEBAIGNsYXNzIFZhbHVlQXJyYXkz
MCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9y
PFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8s
IHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNf
LCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2
MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBffTsK
KyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRp
Y19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nh
c3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19j
YXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8
VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAg
fQogCisgIFZhbHVlQXJyYXkzMChjb25zdCBWYWx1ZUFycmF5MzAmIG90aGVyKSA6IHYxXyhvdGhl
ci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIu
djRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3
XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAg
ICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyks
IHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYx
Nl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhl
ci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52
MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3Ro
ZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pLCB2Mjhf
KG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pIHt9CisKICBw
cml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0
ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkzMCYgb3RoZXIpOwpAQCAtMTI3
MywxMiArMTU2NCwzMCBAQCBjbGFzcyBWYWx1ZUFycmF5MzEgewogCiAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25z
dCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5
XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3
XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1
XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxX307CisgICAgY29uc3QgVCBhcnJh
eVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+
KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3Xyks
IHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRp
Y19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0
aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19j
YXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0
PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkp
OwogICB9CiAKKyAgVmFsdWVBcnJheTMxKGNvbnN0IFZhbHVlQXJyYXkzMSYgb3RoZXIpIDogdjFf
KG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0Xyhv
dGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3Ro
ZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8p
LAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52
MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3Ro
ZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlf
KG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90
aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1
XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAgIHYyN18ob3RoZXIudjI3Xyks
IHYyOF8ob3RoZXIudjI4XyksIHYyOV8ob3RoZXIudjI5XyksIHYzMF8ob3RoZXIudjMwXyksCisg
ICAgICB2MzFfKG90aGVyLnYzMV8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRh
dGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0
IFZhbHVlQXJyYXkzMSYgb3RoZXIpOwpAQCAtMTMzNywxMiArMTY0NiwzMCBAQCBjbGFzcyBWYWx1
ZUFycmF5MzIgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdl
bmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYz
XywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEy
XywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywg
djIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5Xywg
djMwXywgdjMxXywgdjMyX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+
KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyks
IHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0
aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19j
YXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0
PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2Fz
dDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+
KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5
KTsKICAgfQogCisgIFZhbHVlQXJyYXkzMihjb25zdCBWYWx1ZUFycmF5MzImIG90aGVyKSA6IHYx
XyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8o
b3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90
aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBf
KSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIu
djEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90
aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5
XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhv
dGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYy
NV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18p
LCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pLAor
ICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52MzJfKSB7fQorCiAgcHJpdmF0ZToK
ICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2
b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MzImIG90aGVyKTsKQEAgLTE0MDMsMTIgKzE3
MzAsMzEgQEAgY2xhc3MgVmFsdWVBcnJheTMzIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
ICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJh
eVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8s
IHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8s
IHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8s
IHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM199OworICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2Fz
dDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2
N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBz
dGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwg
c3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0
aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNf
Y2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkp
OwogICB9CiAKKyAgVmFsdWVBcnJheTMzKGNvbnN0IFZhbHVlQXJyYXkzMyYgb3RoZXIpIDogdjFf
KG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0Xyhv
dGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3Ro
ZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8p
LAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52
MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3Ro
ZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlf
KG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90
aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1
XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAgIHYyN18ob3RoZXIudjI3Xyks
IHYyOF8ob3RoZXIudjI4XyksIHYyOV8ob3RoZXIudjI5XyksIHYzMF8ob3RoZXIudjMwXyksCisg
ICAgICB2MzFfKG90aGVyLnYzMV8pLCB2MzJfKG90aGVyLnYzMl8pLCB2MzNfKG90aGVyLnYzM18p
IHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMg
dW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkzMyYgb3RoZXIp
OwpAQCAtMTQ3MCwxMiArMTgxNiwzMSBAQCBjbGFzcyBWYWx1ZUFycmF5MzQgewogCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
LSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywgdjdf
LCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1Xywg
djE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAg
djI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMz
XywgdjM0X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYx
M18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyks
IHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2
MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8p
LCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0
YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2Mjlf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBz
dGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRp
Y19jYXN0PFQ+KHYzNF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAg
VmFsdWVBcnJheTM0KGNvbnN0IFZhbHVlQXJyYXkzNCYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyks
IHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2
NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhf
KG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjEx
XyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0Xyhv
dGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYx
N18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8p
LCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAor
ICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVf
KSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAgIHYyN18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIu
djI4XyksIHYyOV8ob3RoZXIudjI5XyksIHYzMF8ob3RoZXIudjMwXyksCisgICAgICB2MzFfKG90
aGVyLnYzMV8pLCB2MzJfKG90aGVyLnYzMl8pLCB2MzNfKG90aGVyLnYzM18pLCB2MzRfKG90aGVy
LnYzNF8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1l
bnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkzNCYg
b3RoZXIpOwpAQCAtMTUzOCwxMyArMTkwMywzMiBAQCBjbGFzcyBWYWx1ZUFycmF5MzUgewogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2
XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0Xywg
djE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAg
ICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMy
XywgdjMzXywgdjM0XywKLSAgICAgICAgdjM1X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYx
OV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyks
IHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2
MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8p
LCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0
YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVf
KX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkzNShj
b25zdCBWYWx1ZUFycmF5MzUmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJf
KSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1Xyks
IHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2
OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyks
IHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisg
ICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18p
LCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52
MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3Ro
ZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIu
djI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90
aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMy
XyhvdGhlci52MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAg
IHYzNV8ob3RoZXIudjM1Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9u
IC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFs
dWVBcnJheTM1JiBvdGhlcik7CkBAIC0xNjA5LDEzICsxOTkzLDMzIEBAIGNsYXNzIFZhbHVlQXJy
YXkzNiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJh
dG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2
NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2
MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJf
LCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBf
LCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZffTsKKyAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+
KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2
XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwg
c3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYy
M18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0
YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkzNihjb25zdCBWYWx1
ZUFycmF5MzYmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAg
IHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhl
ci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIu
djlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3Ro
ZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVf
KG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90
aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIx
XyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyks
IHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisg
ICAgICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8p
LCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52
MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAgIHYzNV8ob3Ro
ZXIudjM1XyksIHYzNl8ob3RoZXIudjM2Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxl
bWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0o
Y29uc3QgVmFsdWVBcnJheTM2JiBvdGhlcik7CkBAIC0xNjgyLDEzICsyMDg2LDMzIEBAIGNsYXNz
IFZhbHVlQXJyYXkzNyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYy
XywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAg
ICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2
MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2
MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2
MzdffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyks
IHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0
YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRp
Y19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nh
c3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJh
eSk7CiAgIH0KIAorICBWYWx1ZUFycmF5MzcoY29uc3QgVmFsdWVBcnJheTM3JiBvdGhlcikgOiB2
MV8ob3RoZXIudjFfKSwgdjJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRf
KG90aGVyLnY0XyksIHY1XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3Xyhv
dGhlci52N18pLCB2OF8ob3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEw
XyksCisgICAgICB2MTFfKG90aGVyLnYxMV8pLCB2MTJfKG90aGVyLnYxMl8pLCB2MTNfKG90aGVy
LnYxM18pLCB2MTRfKG90aGVyLnYxNF8pLAorICAgICAgdjE1XyhvdGhlci52MTVfKSwgdjE2Xyhv
dGhlci52MTZfKSwgdjE3XyhvdGhlci52MTdfKSwgdjE4XyhvdGhlci52MThfKSwKKyAgICAgIHYx
OV8ob3RoZXIudjE5XyksIHYyMF8ob3RoZXIudjIwXyksIHYyMV8ob3RoZXIudjIxXyksIHYyMl8o
b3RoZXIudjIyXyksCisgICAgICB2MjNfKG90aGVyLnYyM18pLCB2MjRfKG90aGVyLnYyNF8pLCB2
MjVfKG90aGVyLnYyNV8pLCB2MjZfKG90aGVyLnYyNl8pLAorICAgICAgdjI3XyhvdGhlci52Mjdf
KSwgdjI4XyhvdGhlci52MjhfKSwgdjI5XyhvdGhlci52MjlfKSwgdjMwXyhvdGhlci52MzBfKSwK
KyAgICAgIHYzMV8ob3RoZXIudjMxXyksIHYzMl8ob3RoZXIudjMyXyksIHYzM18ob3RoZXIudjMz
XyksIHYzNF8ob3RoZXIudjM0XyksCisgICAgICB2MzVfKG90aGVyLnYzNV8pLCB2MzZfKG90aGVy
LnYzNl8pLCB2MzdfKG90aGVyLnYzN18pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1l
bnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNv
bnN0IFZhbHVlQXJyYXkzNyYgb3RoZXIpOwpAQCAtMTc1NiwxMyArMjE4MCwzMyBAQCBjbGFzcyBW
YWx1ZUFycmF5MzggewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8s
IHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAg
djEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIx
XywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5
XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3
XywgdjM4X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYx
M18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyks
IHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2
MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8p
LCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0
YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2Mjlf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBz
dGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRp
Y19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKX07
CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkzOChjb25z
dCBWYWx1ZUFycmF5MzgmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwK
KyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2
XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8o
b3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYx
Ml8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAg
ICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2
MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBf
KSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIu
djIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2
XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90aGVy
LnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMyXyhv
dGhlci52MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAgIHYz
NV8ob3RoZXIudjM1XyksIHYzNl8ob3RoZXIudjM2XyksIHYzN18ob3RoZXIudjM3XyksIHYzOF8o
b3RoZXIudjM4Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNz
aWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJh
eTM4JiBvdGhlcik7CkBAIC0xODMxLDEzICsyMjc1LDM1IEBAIGNsYXNzIFZhbHVlQXJyYXkzOSB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2
MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNf
LAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFf
LCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2Mzlf
fTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4o
djRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwg
c3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0
YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRp
Y19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nh
c3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19j
YXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8
VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzlfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAg
fQogCisgIFZhbHVlQXJyYXkzOShjb25zdCBWYWx1ZUFycmF5MzkmIG90aGVyKSA6IHYxXyhvdGhl
ci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIu
djRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3
XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAg
ICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyks
IHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYx
Nl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhl
ci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52
MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3Ro
ZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pLCB2Mjhf
KG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAg
djMxXyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0
XyhvdGhlci52MzRfKSwKKyAgICAgIHYzNV8ob3RoZXIudjM1XyksIHYzNl8ob3RoZXIudjM2Xyks
IHYzN18ob3RoZXIudjM3XyksIHYzOF8ob3RoZXIudjM4XyksCisgICAgICB2MzlfKG90aGVyLnYz
OV8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQg
aXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkzOSYgb3Ro
ZXIpOwpAQCAtMTkwOCwxMyArMjM3NCwzNSBAQCBjbGFzcyBWYWx1ZUFycmF5NDAgewogCiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0
IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywg
djdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1
XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAg
ICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywg
djMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwX307
CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0
PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0
XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0
YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0
aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19j
YXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0
PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2Fz
dDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+
KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2
XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pfTsKICAgICByZXR1cm4g
VmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTQwKGNvbnN0IFZhbHVlQXJyYXk0
MCYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90
aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2Xyks
CisgICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2
MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJf
KSwgdjEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIu
djE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4
XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVy
LnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0Xyhv
dGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAgIHYy
N18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIudjI4XyksIHYyOV8ob3RoZXIudjI5XyksIHYzMF8o
b3RoZXIudjMwXyksCisgICAgICB2MzFfKG90aGVyLnYzMV8pLCB2MzJfKG90aGVyLnYzMl8pLCB2
MzNfKG90aGVyLnYzM18pLCB2MzRfKG90aGVyLnYzNF8pLAorICAgICAgdjM1XyhvdGhlci52MzVf
KSwgdjM2XyhvdGhlci52MzZfKSwgdjM3XyhvdGhlci52MzdfKSwgdjM4XyhvdGhlci52MzhfKSwK
KyAgICAgIHYzOV8ob3RoZXIudjM5XyksIHY0MF8ob3RoZXIudjQwXykge30KKwogIHByaXZhdGU6
CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTQwJiBvdGhlcik7CkBAIC0xOTg3LDEzICsy
NDc1LDM1IEBAIGNsYXNzIFZhbHVlQXJyYXk0MSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJy
YXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBf
LCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThf
LCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZf
LCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAot
ICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFffTsKKyAgICBjb25zdCBU
IGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nh
c3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4o
djdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwg
c3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYx
NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2Xyks
IHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0
YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRp
Y19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nh
c3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pfTsKICAg
ICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTQxKGNvbnN0IFZh
bHVlQXJyYXk0MSYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAg
ICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90
aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhl
ci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhv
dGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYx
NV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYxOF8o
b3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2
MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52MjNf
KSwgdjI0XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZfKSwK
KyAgICAgIHYyN18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIudjI4XyksIHYyOV8ob3RoZXIudjI5
XyksIHYzMF8ob3RoZXIudjMwXyksCisgICAgICB2MzFfKG90aGVyLnYzMV8pLCB2MzJfKG90aGVy
LnYzMl8pLCB2MzNfKG90aGVyLnYzM18pLCB2MzRfKG90aGVyLnYzNF8pLAorICAgICAgdjM1Xyhv
dGhlci52MzVfKSwgdjM2XyhvdGhlci52MzZfKSwgdjM3XyhvdGhlci52MzdfKSwgdjM4XyhvdGhl
ci52MzhfKSwKKyAgICAgIHYzOV8ob3RoZXIudjM5XyksIHY0MF8ob3RoZXIudjQwXyksIHY0MV8o
b3RoZXIudjQxXykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNz
aWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJh
eTQxJiBvdGhlcik7CkBAIC0yMDY3LDEzICsyNTc3LDM2IEBAIGNsYXNzIFZhbHVlQXJyYXk0MiB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2
MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNf
LAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFf
LCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2Mzlf
LCB2NDBfLCB2NDFfLCB2NDJffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8
VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNf
KSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0
YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRp
Y19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19j
YXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8
VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0
PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4o
djQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJf
KX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXk0Mihj
b25zdCBWYWx1ZUFycmF5NDImIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJf
KSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1Xyks
IHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2
OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyks
IHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisg
ICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18p
LCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52
MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3Ro
ZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIu
djI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90
aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMy
XyhvdGhlci52MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAg
IHYzNV8ob3RoZXIudjM1XyksIHYzNl8ob3RoZXIudjM2XyksIHYzN18ob3RoZXIudjM3XyksIHYz
OF8ob3RoZXIudjM4XyksCisgICAgICB2MzlfKG90aGVyLnYzOV8pLCB2NDBfKG90aGVyLnY0MF8p
LCB2NDFfKG90aGVyLnY0MV8pLCB2NDJfKG90aGVyLnY0Ml8pIHt9CisKICBwcml2YXRlOgogICAv
LyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQg
b3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk0MiYgb3RoZXIpOwpAQCAtMjE0OCwxMyArMjY4MSwz
NyBAQCBjbGFzcyBWYWx1ZUFycmF5NDMgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5
XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3
XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAg
ICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzX307CisgICAg
Y29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYy
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0
YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19j
YXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2Fz
dDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+
KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4
XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYy
NV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2
MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8p
LCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0
YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pfTsK
ICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTQzKGNvbnN0
IFZhbHVlQXJyYXk0MyYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAor
ICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZf
KG90aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5Xyhv
dGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEy
XyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAg
IHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYx
OF8ob3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8p
LCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52
MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZf
KSwKKyAgICAgIHYyN18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIudjI4XyksIHYyOV8ob3RoZXIu
djI5XyksIHYzMF8ob3RoZXIudjMwXyksCisgICAgICB2MzFfKG90aGVyLnYzMV8pLCB2MzJfKG90
aGVyLnYzMl8pLCB2MzNfKG90aGVyLnYzM18pLCB2MzRfKG90aGVyLnYzNF8pLAorICAgICAgdjM1
XyhvdGhlci52MzVfKSwgdjM2XyhvdGhlci52MzZfKSwgdjM3XyhvdGhlci52MzdfKSwgdjM4Xyhv
dGhlci52MzhfKSwKKyAgICAgIHYzOV8ob3RoZXIudjM5XyksIHY0MF8ob3RoZXIudjQwXyksIHY0
MV8ob3RoZXIudjQxXyksIHY0Ml8ob3RoZXIudjQyXyksCisgICAgICB2NDNfKG90aGVyLnY0M18p
IHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMg
dW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk0MyYgb3RoZXIp
OwpAQCAtMjIzMSwxMyArMjc4OCwzNyBAQCBjbGFzcyBWYWx1ZUFycmF5NDQgewogCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
LSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywgdjdf
LCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1Xywg
djE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAg
djI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMz
XywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQx
XywgdjQyXywgdjQzXywgdjQ0X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0
PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
XyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBz
dGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRp
Y19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0
aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19j
YXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNf
Y2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0
PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2Fz
dDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+
KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQy
XyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKX07CiAgICAgcmV0
dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXk0NChjb25zdCBWYWx1ZUFy
cmF5NDQmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYz
XyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52
Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlf
KSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIu
djEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90
aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVy
LnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhv
dGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYy
NF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAg
ICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8pLCB2
MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52MzJf
KSwgdjMzXyhvdGhlci52MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAgIHYzNV8ob3RoZXIu
djM1XyksIHYzNl8ob3RoZXIudjM2XyksIHYzN18ob3RoZXIudjM3XyksIHYzOF8ob3RoZXIudjM4
XyksCisgICAgICB2MzlfKG90aGVyLnYzOV8pLCB2NDBfKG90aGVyLnY0MF8pLCB2NDFfKG90aGVy
LnY0MV8pLCB2NDJfKG90aGVyLnY0Ml8pLAorICAgICAgdjQzXyhvdGhlci52NDNfKSwgdjQ0Xyhv
dGhlci52NDRfKSB7fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3Np
Z25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5
NDQmIG90aGVyKTsKQEAgLTIzMTUsMTMgKzI4OTYsMzggQEAgY2xhc3MgVmFsdWVBcnJheTQ1IHsK
IAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4o
KSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVf
LCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYx
NF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18s
Ci0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8s
IHYzMl8sIHYzM18sIHYzNF8sIHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYzOV8s
IHY0MF8sIHY0MV8sIHY0Ml8sIHY0M18sIHY0NF8sIHY0NV99OworICAgIGNvbnN0IFQgYXJyYXlb
XSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2
NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBz
dGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNf
Y2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2Fz
dDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nh
c3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxU
Pih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
MF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8
VD4odjM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2
MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8p
LCBzdGF0aWNfY2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY0Ml8pLCBzdGF0aWNfY2FzdDxUPih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4o
djQ0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0NV8pfTsKICAgICByZXR1cm4gVmFsdWVz
SW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTQ1KGNvbnN0IFZhbHVlQXJyYXk0NSYgb3Ro
ZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYz
XyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAg
ICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90
aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEz
XyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1Xyks
IHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4XyksCisg
ICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8p
LCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52
MjRfKSwgdjI1XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAgIHYyN18ob3Ro
ZXIudjI3XyksIHYyOF8ob3RoZXIudjI4XyksIHYyOV8ob3RoZXIudjI5XyksIHYzMF8ob3RoZXIu
djMwXyksCisgICAgICB2MzFfKG90aGVyLnYzMV8pLCB2MzJfKG90aGVyLnYzMl8pLCB2MzNfKG90
aGVyLnYzM18pLCB2MzRfKG90aGVyLnYzNF8pLAorICAgICAgdjM1XyhvdGhlci52MzVfKSwgdjM2
XyhvdGhlci52MzZfKSwgdjM3XyhvdGhlci52MzdfKSwgdjM4XyhvdGhlci52MzhfKSwKKyAgICAg
IHYzOV8ob3RoZXIudjM5XyksIHY0MF8ob3RoZXIudjQwXyksIHY0MV8ob3RoZXIudjQxXyksIHY0
Ml8ob3RoZXIudjQyXyksCisgICAgICB2NDNfKG90aGVyLnY0M18pLCB2NDRfKG90aGVyLnY0NF8p
LCB2NDVfKG90aGVyLnY0NV8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlv
biAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZh
bHVlQXJyYXk0NSYgb3RoZXIpOwpAQCAtMjQwMSwxMyArMzAwNywzOCBAQCBjbGFzcyBWYWx1ZUFy
cmF5NDYgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywg
djRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywg
djEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIy
XywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMw
XywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4
XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0XywgdjQ1XywgdjQ2X307CisgICAg
Y29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYy
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0
YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19j
YXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2Fz
dDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+
KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4
XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYy
NV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2
MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8p
LCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0
YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBz
dGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0YXRp
Y19jYXN0PFQ+KHY0Nl8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAg
VmFsdWVBcnJheTQ2KGNvbnN0IFZhbHVlQXJyYXk0NiYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyks
IHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2
NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhf
KG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjEx
XyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0Xyhv
dGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYx
N18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8p
LCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAor
ICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVf
KSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAgIHYyN18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIu
djI4XyksIHYyOV8ob3RoZXIudjI5XyksIHYzMF8ob3RoZXIudjMwXyksCisgICAgICB2MzFfKG90
aGVyLnYzMV8pLCB2MzJfKG90aGVyLnYzMl8pLCB2MzNfKG90aGVyLnYzM18pLCB2MzRfKG90aGVy
LnYzNF8pLAorICAgICAgdjM1XyhvdGhlci52MzVfKSwgdjM2XyhvdGhlci52MzZfKSwgdjM3Xyhv
dGhlci52MzdfKSwgdjM4XyhvdGhlci52MzhfKSwKKyAgICAgIHYzOV8ob3RoZXIudjM5XyksIHY0
MF8ob3RoZXIudjQwXyksIHY0MV8ob3RoZXIudjQxXyksIHY0Ml8ob3RoZXIudjQyXyksCisgICAg
ICB2NDNfKG90aGVyLnY0M18pLCB2NDRfKG90aGVyLnY0NF8pLCB2NDVfKG90aGVyLnY0NV8pLCB2
NDZfKG90aGVyLnY0Nl8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAt
IGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVl
QXJyYXk0NiYgb3RoZXIpOwpAQCAtMjQ4OSwxNCArMzEyMCwzOSBAQCBjbGFzcyBWYWx1ZUFycmF5
NDcgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRf
LCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEz
XywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywg
djIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywg
djMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4Xywg
djM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0XywgdjQ1XywgdjQ2XywKLSAgICAgICAg
djQ3X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRp
Y19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0
PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2
XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2
MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18p
LCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0
YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBz
dGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRp
Y19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0
aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19j
YXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNf
Y2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0
PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBzdGF0aWNfY2FzdDxUPih2NDdfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXk0Nyhjb25zdCBWYWx1
ZUFycmF5NDcmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAg
IHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhl
ci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIu
djlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3Ro
ZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVf
KG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90
aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIx
XyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyks
IHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisg
ICAgICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8p
LCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52
MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAgIHYzNV8ob3Ro
ZXIudjM1XyksIHYzNl8ob3RoZXIudjM2XyksIHYzN18ob3RoZXIudjM3XyksIHYzOF8ob3RoZXIu
djM4XyksCisgICAgICB2MzlfKG90aGVyLnYzOV8pLCB2NDBfKG90aGVyLnY0MF8pLCB2NDFfKG90
aGVyLnY0MV8pLCB2NDJfKG90aGVyLnY0Ml8pLAorICAgICAgdjQzXyhvdGhlci52NDNfKSwgdjQ0
XyhvdGhlci52NDRfKSwgdjQ1XyhvdGhlci52NDVfKSwgdjQ2XyhvdGhlci52NDZfKSwKKyAgICAg
IHY0N18ob3RoZXIudjQ3Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9u
IC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFs
dWVBcnJheTQ3JiBvdGhlcik7CkBAIC0yNTc5LDE0ICszMjM1LDQwIEBAIGNsYXNzIFZhbHVlQXJy
YXk0OCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJh
dG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2
NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2
MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJf
LCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBf
LCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2Mzhf
LCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJfLCB2NDNfLCB2NDRfLCB2NDVfLCB2NDZfLCB2NDdfLAot
ICAgICAgICB2NDhffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8
VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0
PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+
KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMx
XyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwg
c3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYz
OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyks
IHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3Rh
dGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2NDVfKSwgc3RhdGljX2Nhc3Q8VD4odjQ2XyksIHN0YXRpY19jYXN0PFQ+KHY0N18p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDhfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXk0OChjb25zdCBWYWx1ZUFycmF5NDgmIG90aGVyKSA6
IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2
NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdf
KG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52
MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3Ro
ZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZf
KG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAg
djE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIy
XyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3RoZXIudjI0Xyks
IHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAgICB2MjdfKG90aGVyLnYy
N18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8p
LAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52MzJfKSwgdjMzXyhvdGhlci52
MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAgIHYzNV8ob3RoZXIudjM1XyksIHYzNl8ob3Ro
ZXIudjM2XyksIHYzN18ob3RoZXIudjM3XyksIHYzOF8ob3RoZXIudjM4XyksCisgICAgICB2Mzlf
KG90aGVyLnYzOV8pLCB2NDBfKG90aGVyLnY0MF8pLCB2NDFfKG90aGVyLnY0MV8pLCB2NDJfKG90
aGVyLnY0Ml8pLAorICAgICAgdjQzXyhvdGhlci52NDNfKSwgdjQ0XyhvdGhlci52NDRfKSwgdjQ1
XyhvdGhlci52NDVfKSwgdjQ2XyhvdGhlci52NDZfKSwKKyAgICAgIHY0N18ob3RoZXIudjQ3Xyks
IHY0OF8ob3RoZXIudjQ4Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9u
IC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFs
dWVBcnJheTQ4JiBvdGhlcik7CkBAIC0yNjcwLDE0ICszMzUyLDQwIEBAIGNsYXNzIFZhbHVlQXJy
YXk0OSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJh
dG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2
NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2
MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJf
LCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBf
LCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2Mzhf
LCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJfLCB2NDNfLCB2NDRfLCB2NDVfLCB2NDZfLCB2NDdfLAot
ICAgICAgICB2NDhfLCB2NDlffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8
VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNf
KSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0
YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRp
Y19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19j
YXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8
VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0
PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4o
djQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJf
KSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2NDVfKSwgc3RhdGljX2Nhc3Q8VD4odjQ2XyksIHN0YXRpY19jYXN0PFQ+
KHY0N18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDhfKSwgc3RhdGljX2Nhc3Q8VD4odjQ5
Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAorICBWYWx1ZUFycmF5NDko
Y29uc3QgVmFsdWVBcnJheTQ5JiBvdGhlcikgOiB2MV8ob3RoZXIudjFfKSwgdjJfKG90aGVyLnYy
XyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0XyksIHY1XyhvdGhlci52NV8p
LCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2OF8ob3RoZXIudjhfKSwg
djlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXyksCisgICAgICB2MTFfKG90aGVyLnYxMV8p
LCB2MTJfKG90aGVyLnYxMl8pLCB2MTNfKG90aGVyLnYxM18pLCB2MTRfKG90aGVyLnYxNF8pLAor
ICAgICAgdjE1XyhvdGhlci52MTVfKSwgdjE2XyhvdGhlci52MTZfKSwgdjE3XyhvdGhlci52MTdf
KSwgdjE4XyhvdGhlci52MThfKSwKKyAgICAgIHYxOV8ob3RoZXIudjE5XyksIHYyMF8ob3RoZXIu
djIwXyksIHYyMV8ob3RoZXIudjIxXyksIHYyMl8ob3RoZXIudjIyXyksCisgICAgICB2MjNfKG90
aGVyLnYyM18pLCB2MjRfKG90aGVyLnYyNF8pLCB2MjVfKG90aGVyLnYyNV8pLCB2MjZfKG90aGVy
LnYyNl8pLAorICAgICAgdjI3XyhvdGhlci52MjdfKSwgdjI4XyhvdGhlci52MjhfKSwgdjI5Xyhv
dGhlci52MjlfKSwgdjMwXyhvdGhlci52MzBfKSwKKyAgICAgIHYzMV8ob3RoZXIudjMxXyksIHYz
Ml8ob3RoZXIudjMyXyksIHYzM18ob3RoZXIudjMzXyksIHYzNF8ob3RoZXIudjM0XyksCisgICAg
ICB2MzVfKG90aGVyLnYzNV8pLCB2MzZfKG90aGVyLnYzNl8pLCB2MzdfKG90aGVyLnYzN18pLCB2
MzhfKG90aGVyLnYzOF8pLAorICAgICAgdjM5XyhvdGhlci52MzlfKSwgdjQwXyhvdGhlci52NDBf
KSwgdjQxXyhvdGhlci52NDFfKSwgdjQyXyhvdGhlci52NDJfKSwKKyAgICAgIHY0M18ob3RoZXIu
djQzXyksIHY0NF8ob3RoZXIudjQ0XyksIHY0NV8ob3RoZXIudjQ1XyksIHY0Nl8ob3RoZXIudjQ2
XyksCisgICAgICB2NDdfKG90aGVyLnY0N18pLCB2NDhfKG90aGVyLnY0OF8pLCB2NDlfKG90aGVy
LnY0OV8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1l
bnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk0OSYg
b3RoZXIpOwpAQCAtMjc2MiwxNCArMzQ3MCw0MCBAQCBjbGFzcyBWYWx1ZUFycmF5NTAgewogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2
XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0Xywg
djE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAg
ICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMy
XywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQw
XywgdjQxXywgdjQyXywgdjQzXywgdjQ0XywgdjQ1XywgdjQ2XywgdjQ3XywKLSAgICAgICAgdjQ4
XywgdjQ5XywgdjUwX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYx
XyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0
YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNf
Y2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0
PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+
KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0
XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxU
Pih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYz
MV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyks
IHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2
MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8p
LCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0
YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBzdGF0aWNfY2FzdDxUPih2NDdf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ4XyksIHN0YXRpY19jYXN0PFQ+KHY0OV8pLCBz
dGF0aWNfY2FzdDxUPih2NTBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQog
CisgIFZhbHVlQXJyYXk1MChjb25zdCBWYWx1ZUFycmF5NTAmIG90aGVyKSA6IHYxXyhvdGhlci52
MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRf
KSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3Xyks
IHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAg
IHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYx
NF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8p
LCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52
MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJf
KSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIu
djI1XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90
aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMx
XyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0Xyhv
dGhlci52MzRfKSwKKyAgICAgIHYzNV8ob3RoZXIudjM1XyksIHYzNl8ob3RoZXIudjM2XyksIHYz
N18ob3RoZXIudjM3XyksIHYzOF8ob3RoZXIudjM4XyksCisgICAgICB2MzlfKG90aGVyLnYzOV8p
LCB2NDBfKG90aGVyLnY0MF8pLCB2NDFfKG90aGVyLnY0MV8pLCB2NDJfKG90aGVyLnY0Ml8pLAor
ICAgICAgdjQzXyhvdGhlci52NDNfKSwgdjQ0XyhvdGhlci52NDRfKSwgdjQ1XyhvdGhlci52NDVf
KSwgdjQ2XyhvdGhlci52NDZfKSwKKyAgICAgIHY0N18ob3RoZXIudjQ3XyksIHY0OF8ob3RoZXIu
djQ4XyksIHY0OV8ob3RoZXIudjQ5XyksIHY1MF8ob3RoZXIudjUwXykge30KKwogIHByaXZhdGU6
CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTUwJiBvdGhlcik7CkBAIC0yODI2LDcgKzM1
NjAsNyBAQCBjbGFzcyBWYWx1ZUFycmF5NTAgewogICBjb25zdCBUNTAgdjUwXzsKIH07CiAKLSNp
ZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNfQ09NQklORQogLy8gSU5URVJOQUwg
SU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KIC8vCiAvLyBHZW5lcmF0
ZXMgdmFsdWVzIGZyb20gdGhlIENhcnRlc2lhbiBwcm9kdWN0IG9mIHZhbHVlcyBwcm9kdWNlZApA
QCAtMjgzNCw5ICszNTY4LDkgQEAgY2xhc3MgVmFsdWVBcnJheTUwIHsKIC8vCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjIKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnR1cGxlPFQx
LCBUMj4gPiB7CisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGlu
Zzo6dHVwbGU8VDEsIFQyPiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnR1cGxlPFQx
LCBUMj4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyPiBQYXJh
bVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjIoY29uc3QgUGFyYW1HZW5lcmF0
b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIpCkBAIC0yODgy
LDcgKzM2MTYsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMgogICAgIHZpcnR1
YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKICAg
ICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwogICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0
IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQor
ICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gY3Vy
cmVudF92YWx1ZV8uZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFt
SXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKICAgICAgIC8vIEhh
dmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCiAg
ICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3Qu
CkBAIC0yOTE0LDcgKzM2NDgsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMgog
CiAgICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgpKQot
ICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJf
KTsKKyAgICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVudDFf
LCAqY3VycmVudDJfKSk7CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAv
LyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4g
ZWl0aGVyIG9mIHRoZQpAQCAtMjkzNiw3ICszNjcwLDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjIKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJh
dG9yIGJlZ2luMl87CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVy
YXRvciBlbmQyXzsKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9yIGN1
cnJlbnQyXzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0cjxQ
YXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjI6Okl0ZXJhdG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25t
ZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtMjk0OSw5ICszNjgzLDkgQEAgY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjIKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDM+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMwotICAgIDogcHVi
bGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMz4gPiB7
CisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8
VDEsIFQyLCBUMz4gPiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0dXBsZTxUMSwgVDIs
IFQzPiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzPiBQ
YXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjMoY29uc3QgUGFyYW1HZW5l
cmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMpCkBAIC0zMDA1LDcgKzM3MzksNyBAQCBjbGFzcyBDYXJ0
ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMwogICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFj
ZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKICAgICAgIHJldHVybiBuZXcgSXRlcmF0b3Io
KnRoaXMpOwogICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNv
bnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQorICAgIHZpcnR1YWwgY29uc3QgUGFyYW1U
eXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gY3VycmVudF92YWx1ZV8uZ2V0KCk7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1U
eXBlPiYgb3RoZXIpIGNvbnN0IHsKICAgICAgIC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVy
YXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCiAgICAgICAvLyBpdGVyYXRvciBpcyBvZiB0
aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCkBAIC0zMDQxLDcgKzM3NzUsNyBAQCBj
bGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMwogCiAgICAgdm9pZCBDb21wdXRlQ3VycmVu
dFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9
IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfKTsKKyAgICAgICAg
Y3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJf
LCAqY3VycmVudDNfKSk7CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAv
LyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4g
ZWl0aGVyIG9mIHRoZQpAQCAtMzA2Nyw3ICszODAxLDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjMKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJh
dG9yIGJlZ2luM187CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+OjppdGVy
YXRvciBlbmQzXzsKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yIGN1
cnJlbnQzXzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0cjxQ
YXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjM6Okl0ZXJhdG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25t
ZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtMzA4MSw5ICszODE1LDkgQEAgY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjMKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0PgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjQKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0PiA+IHsKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwg
Ojp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPiB7CiAgcHVibGljOgotICB0eXBlZGVm
IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVz
dGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yNChjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKQEAg
LTMxNDYsNyArMzg4MCw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0CiAgICAg
dmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3Qg
ewogICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwg
Y29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVf
OyB9CisgICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVy
biBjdXJyZW50X3ZhbHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3Qg
UGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAgICAg
Ly8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3Ro
ZXIKICAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3du
Y2FzdC4KQEAgLTMxODYsOCArMzkyMCw4IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0
b3I0CiAKICAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5k
KCkpCi0gICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJy
ZW50Ml8sICpjdXJyZW50M18sCi0gICAgICAgICAgICAqY3VycmVudDRfKTsKKyAgICAgICAgY3Vy
cmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAq
Y3VycmVudDNfLAorICAgICAgICAgICAgKmN1cnJlbnQ0XykpOwogICAgIH0KICAgICBib29sIEF0
RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUg
ZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAgLTMyMTcsNyArMzk1MSw3IEBA
IGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0CiAgICAgY29uc3QgdHlwZW5hbWUgUGFy
YW1HZW5lcmF0b3I8VDQ+OjppdGVyYXRvciBiZWdpbjRfOwogICAgIGNvbnN0IHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgZW5kNF87CiAgICAgdHlwZW5hbWUgUGFyYW1HZW5l
cmF0b3I8VDQ+OjppdGVyYXRvciBjdXJyZW50NF87Ci0gICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFs
dWVfOworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsKICAgfTsgIC8v
IGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0OjpJdGVyYXRvcgogCiAgIC8vIE5vIGlt
cGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTMyMzIsOSArMzk2
Niw5IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDU+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNQotICAgIDogcHVibGljIFBhcmFt
R2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiA+IHsK
KyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxU
MSwgVDIsIFQzLCBUNCwgVDU+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8
VDEsIFQyLCBUMywgVDQsIFQ1PiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBs
ZTxUMSwgVDIsIFQzLCBUNCwgVDU+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2Vu
ZXJhdG9yNShjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKQEAgLTMzMDQs
NyArNDAzOCw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1CiAgICAgdmlydHVh
bCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3QgewogICAg
ICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwgY29uc3Qg
UGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9Cisg
ICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiBjdXJy
ZW50X3ZhbHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1J
dGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAgICAgLy8gSGF2
aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKICAg
ICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4K
QEAgLTMzNDgsOCArNDA4Miw4IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1CiAK
ICAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkpCi0g
ICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8s
ICpjdXJyZW50M18sCi0gICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVudDVfKTsKKyAgICAg
ICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVu
dDJfLCAqY3VycmVudDNfLAorICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1cnJlbnQ1XykpOwog
ICAgIH0KICAgICBib29sIEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQg
aXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAg
LTMzODMsNyArNDExNyw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1CiAgICAg
Y29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+OjppdGVyYXRvciBiZWdpbjVfOwogICAg
IGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgZW5kNV87CiAgICAg
dHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+OjppdGVyYXRvciBjdXJyZW50NV87Ci0gICAgUGFy
YW1UeXBlIGN1cnJlbnRfdmFsdWVfOworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50
X3ZhbHVlXzsKICAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1OjpJdGVy
YXRvcgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRl
ZC4KQEAgLTM0MDAsMTAgKzQxMzQsMTAgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjUKIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgdHlwZW5hbWUgVDY+CiBjbGFzcyBDYXJ0ZXNpYW5Q
cm9kdWN0R2VuZXJhdG9yNgotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6
OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LAorICAgIDogcHVibGljIFBhcmFtR2VuZXJh
dG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwKICAgICAg
ICAgVDY+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNj4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNj4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0
b3I2KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLApAQCAtMzQ4MSw3ICs0
MjE1LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjYKICAgICB2aXJ0dWFsIFBh
cmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7CiAgICAgICBy
ZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJh
bVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KKyAgICB2
aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRf
dmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJh
dG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAvLyBIYXZpbmcg
dGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgogICAgICAg
Ly8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0LgpAQCAt
MzUyOSw4ICs0MjYzLDggQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjYKIAogICAg
IHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKICAgICAgIGlmICghQXRFbmQoKSkKLSAgICAg
ICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1
cnJlbnQzXywKLSAgICAgICAgICAgICpjdXJyZW50NF8sICpjdXJyZW50NV8sICpjdXJyZW50Nl8p
OworICAgICAgICBjdXJyZW50X3ZhbHVlXy5yZXNldChuZXcgUGFyYW1UeXBlKCpjdXJyZW50MV8s
ICpjdXJyZW50Ml8sICpjdXJyZW50M18sCisgICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVu
dDVfLCAqY3VycmVudDZfKSk7CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAg
ICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdo
ZW4gZWl0aGVyIG9mIHRoZQpAQCAtMzU2OCw3ICs0MzAyLDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjYKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0
ZXJhdG9yIGJlZ2luNl87CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDY+Ojpp
dGVyYXRvciBlbmQ2XzsKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0ZXJhdG9y
IGN1cnJlbnQ2XzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0
cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjY6Okl0ZXJhdG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3Np
Z25tZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtMzU4NiwxMCArNDMyMCwxMCBAQCBjbGFzcyBDYXJ0
ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNgogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICB0eXBlbmFtZSBU
NiwgdHlwZW5hbWUgVDc+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNwotICAgIDog
cHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0
aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAogICAgICAgICBUNz4gPiB7CiAgcHVi
bGljOgotICB0eXBlZGVmIDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4g
UGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDc+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNyhjb25z
dCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+
JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKQEAgLTM2NzUsNyArNDQwOSw3IEBA
IGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3CiAgICAgdmlydHVhbCBQYXJhbUl0ZXJh
dG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3QgewogICAgICAgcmV0dXJuIG5l
dyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBD
dXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9CisgICAgdmlydHVhbCBj
b25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiBjdXJyZW50X3ZhbHVlXy5n
ZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRvckludGVy
ZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAgICAgLy8gSGF2aW5nIHRoZSBzYW1l
IGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKICAgICAgIC8vIGl0ZXJh
dG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KQEAgLTM3MjcsOCAr
NDQ2MSw4IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3CiAKICAgICB2b2lkIENv
bXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkpCi0gICAgICAgIGN1cnJl
bnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18s
Ci0gICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVudDVfLCAqY3VycmVudDZfLCAqY3VycmVu
dDdfKTsKKyAgICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVu
dDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAorICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1
cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1cnJlbnQ3XykpOwogICAgIH0KICAgICBib29sIEF0RW5k
KCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUgZW5k
IG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAgLTM3NzAsNyArNDUwNCw3IEBAIGNs
YXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1H
ZW5lcmF0b3I8VDc+OjppdGVyYXRvciBiZWdpbjdfOwogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQ3Pjo6aXRlcmF0b3IgZW5kN187CiAgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0
b3I8VDc+OjppdGVyYXRvciBjdXJyZW50N187Ci0gICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFsdWVf
OworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsKICAgfTsgIC8vIGNs
YXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3OjpJdGVyYXRvcgogCiAgIC8vIE5vIGltcGxl
bWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTM3ODksMTAgKzQ1MjMs
MTAgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjcKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUs
CiAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOD4KIGNsYXNzIENhcnRl
c2lhblByb2R1Y3RHZW5lcmF0b3I4Ci0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZh
Y2U8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAorICAgIDogcHVibGljIFBh
cmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsCiAgICAgICAgIFQ3LCBUOD4gPiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0
dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+IFBhcmFtVHlwZTsKKyAgdHlwZWRl
ZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4gUGFyYW1U
eXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4KGNvbnN0IFBhcmFtR2VuZXJhdG9y
PFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJh
bUdlbmVyYXRvcjxUMz4mIGczLApAQCAtMzg4OCw3ICs0NjIyLDcgQEAgY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjgKICAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFy
YW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7CiAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlz
KTsKICAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7
IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSog
Q3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmly
dHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4m
IG90aGVyKSBjb25zdCB7CiAgICAgICAvLyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3Ig
Z3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgogICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNh
bWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0LgpAQCAtMzk0NCw4ICs0Njc4LDggQEAgY2xhc3Mg
Q2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjgKIAogICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1
ZSgpIHsKICAgICAgIGlmICghQXRFbmQoKSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJh
bVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKLSAgICAgICAgICAgICpj
dXJyZW50NF8sICpjdXJyZW50NV8sICpjdXJyZW50Nl8sICpjdXJyZW50N18sICpjdXJyZW50OF8p
OworICAgICAgICBjdXJyZW50X3ZhbHVlXy5yZXNldChuZXcgUGFyYW1UeXBlKCpjdXJyZW50MV8s
ICpjdXJyZW50Ml8sICpjdXJyZW50M18sCisgICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVu
dDVfLCAqY3VycmVudDZfLCAqY3VycmVudDdfLCAqY3VycmVudDhfKSk7CiAgICAgfQogICAgIGJv
b2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0
IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQpAQCAtMzk5MSw3ICs0NzI1
LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjgKICAgICBjb25zdCB0eXBlbmFt
ZSBQYXJhbUdlbmVyYXRvcjxUOD46Oml0ZXJhdG9yIGJlZ2luOF87CiAgICAgY29uc3QgdHlwZW5h
bWUgUGFyYW1HZW5lcmF0b3I8VDg+OjppdGVyYXRvciBlbmQ4XzsKICAgICB0eXBlbmFtZSBQYXJh
bUdlbmVyYXRvcjxUOD46Oml0ZXJhdG9yIGN1cnJlbnQ4XzsKLSAgICBQYXJhbVR5cGUgY3VycmVu
dF92YWx1ZV87CisgICAgbGlua2VkX3B0cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9
OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjg6Okl0ZXJhdG9yCiAKICAgLy8g
Tm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtNDAxMSwx
MCArNDc0NSwxMCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBl
bmFtZSBUNSwKICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBl
bmFtZSBUOT4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5Ci0gICAgOiBwdWJsaWMg
UGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LAorICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCiAgICAgICAgIFQ3LCBUOCwgVDk+ID4gewogIHB1
YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOT4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1
Y3RHZW5lcmF0b3I5KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLApAQCAt
NDExNyw3ICs0ODUxLDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjkKICAgICB2
aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7
CiAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBj
b25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87
IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJu
IGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQ
YXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAv
LyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhl
cgogICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25j
YXN0LgpAQCAtNDE3Nyw5ICs0OTExLDkgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjkKIAogICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKICAgICAgIGlmICghQXRFbmQo
KSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJl
bnQyXywgKmN1cnJlbnQzXywKKyAgICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFt
VHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAogICAgICAgICAgICAgKmN1
cnJlbnQ0XywgKmN1cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1cnJlbnQ3XywgKmN1cnJlbnQ4XywK
LSAgICAgICAgICAgICpjdXJyZW50OV8pOworICAgICAgICAgICAgKmN1cnJlbnQ5XykpOwogICAg
IH0KICAgICBib29sIEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRl
cmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAgLTQy
MjksNyArNDk2Myw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5CiAgICAgY29u
c3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDk+OjppdGVyYXRvciBiZWdpbjlfOwogICAgIGNv
bnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ5Pjo6aXRlcmF0b3IgZW5kOV87CiAgICAgdHlw
ZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDk+OjppdGVyYXRvciBjdXJyZW50OV87Ci0gICAgUGFyYW1U
eXBlIGN1cnJlbnRfdmFsdWVfOworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3Zh
bHVlXzsKICAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5OjpJdGVyYXRv
cgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4K
QEAgLTQyNTAsMTAgKzQ5ODQsMTAgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjkK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFt
ZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMD4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RH
ZW5lcmF0b3IxMAotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRv
ckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAogICAg
ICAgICBUNywgVDgsIFQ5LCBUMTA+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVw
bGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwPiBQYXJhbVR5cGU7Cisg
IHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTA+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMTAoY29u
c3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQy
PiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBAIC00MzY0LDcgKzUwOTgsNyBA
QCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMTAKICAgICB2aXJ0dWFsIFBhcmFtSXRl
cmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7CiAgICAgICByZXR1cm4g
bmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUq
IEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KKyAgICB2aXJ0dWFs
IGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfdmFsdWVf
LmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50
ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAvLyBIYXZpbmcgdGhlIHNh
bWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgogICAgICAgLy8gaXRl
cmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0LgpAQCAtNDQyOCw5
ICs1MTYyLDkgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjEwCiAKICAgICB2b2lk
IENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkpCi0gICAgICAgIGN1
cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50
M18sCisgICAgICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJhbVR5cGUoKmN1cnJlbnQx
XywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKICAgICAgICAgICAgICpjdXJyZW50NF8sICpjdXJy
ZW50NV8sICpjdXJyZW50Nl8sICpjdXJyZW50N18sICpjdXJyZW50OF8sCi0gICAgICAgICAgICAq
Y3VycmVudDlfLCAqY3VycmVudDEwXyk7CisgICAgICAgICAgICAqY3VycmVudDlfLCAqY3VycmVu
dDEwXykpOwogICAgIH0KICAgICBib29sIEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVz
dCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBv
ZiB0aGUKQEAgLTQ0ODQsNyArNTIxOCw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0
b3IxMAogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxMD46Oml0ZXJhdG9yIGJl
Z2luMTBfOwogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxMD46Oml0ZXJhdG9y
IGVuZDEwXzsKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMTA+OjppdGVyYXRvciBjdXJy
ZW50MTBfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKKyAgICBsaW5rZWRfcHRyPFBh
cmFtVHlwZT4gY3VycmVudF92YWx1ZV87CiAgIH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0
R2VuZXJhdG9yMTA6Okl0ZXJhdG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25t
ZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtNDUxNSw4ICs1MjQ5LDggQEAgY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEhvbGRlcjIgewogQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjIoY29uc3QgR2VuZXJhdG9y
MSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyKQogICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpIHt9
CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gIG9wZXJhdG9yIFBhcmFt
R2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyPiA+KCkgY29uc3QgewotICAgIHJldHVybiBQ
YXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMj4gPigKKyAgb3BlcmF0b3IgUGFyYW1H
ZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyPiA+KCkgY29uc3QgeworICAgIHJldHVy
biBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDI+ID4oCiAgICAgICAgIG5l
dyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMjxUMSwgVDI+KAogICAgICAgICBzdGF0aWNfY2Fz
dDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdl
bmVyYXRvcjxUMj4gPihnMl8pKSk7CkBAIC00NTM3LDggKzUyNzEsOCBAQCBDYXJ0ZXNpYW5Qcm9k
dWN0SG9sZGVyMyhjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAg
ICAgY29uc3QgR2VuZXJhdG9yMyYgZzMpCiAgICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhn
Mykge30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+
Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMz4gPigp
IGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIs
IFQzPiA+KAorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwg
VDIsIFQzPiA+KCkgY29uc3QgeworICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5n
Ojp0dXBsZTxUMSwgVDIsIFQzPiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVy
YXRvcjM8VDEsIFQyLCBUMz4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQx
PiA+KGcxXyksCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyks
CkBAIC00NTYyLDggKzUyOTYsOCBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNChjb25zdCBHZW5l
cmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgY29uc3QgR2VuZXJhdG9yMyYg
ZzMsIGNvbnN0IEdlbmVyYXRvcjQmIGc0KQogICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBnM18o
ZzMpLCBnNF8oZzQpIHt9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5
cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3Rk
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5l
cmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPigKKyAgb3BlcmF0b3IgUGFyYW1H
ZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+ID4oKSBjb25zdCB7Cisg
ICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0
PiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQ8VDEsIFQyLCBUMywg
VDQ+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLAogICAg
ICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pLApAQCAtNDU4OSw4ICs1
MzIzLDggQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjUoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNv
bnN0IEdlbmVyYXRvcjImIGcyLAogICAgIGNvbnN0IEdlbmVyYXRvcjMmIGczLCBjb25zdCBHZW5l
cmF0b3I0JiBnNCwgY29uc3QgR2VuZXJhdG9yNSYgZzUpCiAgICAgICA6IGcxXyhnMSksIGcyXyhn
MiksIGczXyhnMyksIGc0XyhnNCksIGc1XyhnNSkge30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KLSAg
b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+
ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEs
IFQyLCBUMywgVDQsIFQ1PiA+KAorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5n
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+ID4oKSBjb25zdCB7CisgICAgcmV0dXJuIFBhcmFt
R2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gPigKICAgICAg
ICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1PFQxLCBUMiwgVDMsIFQ0LCBUNT4oCiAg
ICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcxXyksCiAgICAgICAgIHN0
YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyksCkBAIC00NjIwLDggKzUzNTQsOCBA
QCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNihjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2Vu
ZXJhdG9yMiYgZzIsCiAgICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhnMyksIGc0XyhnNCks
IGc1XyhnNSksIGc2XyhnNikge30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICAgIHR5cGVuYW1l
IFQ2PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDY+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0
ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4gPigKKyAgb3BlcmF0b3IgUGFyYW1HZW5l
cmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4gPigpIGNvbnN0
IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNj4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVy
YXRvcjxUMT4gPihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4g
PihnMl8pLApAQCAtNDY1Myw5ICs1Mzg3LDkgQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjcoY29u
c3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICAgICAgOiBnMV8oZzEp
LCBnMl8oZzIpLCBnM18oZzMpLCBnNF8oZzQpLCBnNV8oZzUpLCBnNl8oZzYpLCBnN18oZzcpIHt9
CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+Ci0g
IG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwKICAgICAgIFQ3PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJh
bUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PiA+KAor
ICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNz4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1H
ZW5lcmF0b3I8VDE+ID4oZzFfKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8
VDI+ID4oZzJfKSwKQEAgLTQ2OTEsOSArNTQyNSw5IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXI4
KGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKICAgICAgICAgICBn
OF8oZzgpIHt9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5h
bWUgVDcsIHR5cGVuYW1lIFQ4PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LAorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywKICAgICAgIFQ4
PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4gPigKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0
b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiA+KAog
ICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjg8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4PigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4o
ZzFfKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwKQEAg
LTQ3MzIsOSArNTQ2Niw5IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXI5KGNvbnN0IEdlbmVyYXRv
cjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKICAgICAgICAgICBnOV8oZzkpIHt9CiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
NCwgdHlwZW5hbWUgVDUsCiAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1l
IFQ4LCB0eXBlbmFtZSBUOT4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBs
ZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsCisgIG9wZXJhdG9yIFBhcmFtR2VuZXJh
dG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwKICAg
ICAgIFQ5PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwKKyAgICByZXR1cm4gUGFyYW1HZW5l
cmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LAog
ICAgICAgICBUOT4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5PFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+KAogICAgICAgICBzdGF0aWNfY2FzdDxQ
YXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLApAQCAtNDc3NiwxMCArNTUxMCwxMCBAQCBDYXJ0ZXNp
YW5Qcm9kdWN0SG9sZGVyMTAoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjIm
IGcyLAogICAgICAgICAgIGc5XyhnOSksIGcxMF8oZzEwKSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1
LAogICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUg
VDksIHR5cGVuYW1lIFQxMD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBs
ZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsCi0gICAgICBUOSwgVDEwPiA+KCkgY29u
c3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwKLSAgICAgICAgVDksIFQxMD4gPigKKyAgb3BlcmF0b3IgUGFy
YW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwKKyAgICAgIFQxMD4gPigpIGNvbnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0
b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwK
KyAgICAgICAgVDEwPiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjEw
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksCiAgICAgICAgICAgICBUMTA+KAog
ICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLApAQCAtNDgxMCwx
MSArNTU0NCw5IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXIxMChjb25zdCBHZW5lcmF0b3IxJiBn
MSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgIGNvbnN0IEdlbmVyYXRvcjEwIGcxMF87CiB9OyAg
Ly8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjEwCiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X0NPTUJJTkUKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCiAKIH0gIC8vIG5hbWVzcGFj
ZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotI2VuZGlmICAvLyAgR1RFU1Rf
SEFTX1BBUkFNX1RFU1QKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFM
X0dURVNUX1BBUkFNX1VUSUxfR0VORVJBVEVEX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJh
dGVkLmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCmluZGV4IGJhZWRmYmMyZDdlODM0
MWI1YjU1OWQ5Y2UzM2I4ZDg3NDUzZGVkNDIuLjMwZGZmZTQzYzNjNjc4NTY4NTI0NmRiNWYzMWQx
OTQ3YzhhMjJjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUv
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC1nZW5lcmF0ZWQuaC5wdW1wCkBAIC0yOSw4ICsyOSw3IEBAICR2YXIgbWF4dHVwbGUgPSAx
MCAgJCQgTWF4aW11bSBudW1iZXIgb2YgQ29tYmluZSBhcmd1bWVudHMgd2Ugd2FudCB0byBzdXBw
b3J0LgogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8K
LS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKwogCiAvLyBUeXBlIGFu
ZCBmdW5jdGlvbiB1dGlsaXRpZXMgZm9yIGltcGxlbWVudGluZyBwYXJhbWV0ZXJpemVkIHRlc3Rz
LgogLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBhIFNDUklQVC4gIERPIE5PVCBFRElUIEJZ
IEhBTkQhCkBAIC0zOSwxOSArMzgsMTYgQEAgJHZhciBtYXh0dXBsZSA9IDEwICAkJCBNYXhpbXVt
IG51bWJlciBvZiBDb21iaW5lIGFyZ3VtZW50cyB3ZSB3YW50IHRvIHN1cHBvcnQuCiAvLyBhbmQg
YXQgbW9zdCAkbWF4dHVwbGUgYXJndW1lbnRzIGluIENvbWJpbmUuIFBsZWFzZSBjb250YWN0CiAv
LyBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20gaWYgeW91IG5lZWQgbW9yZS4K
IC8vIFBsZWFzZSBub3RlIHRoYXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgdG8gQ29tYmluZSBp
cyBsaW1pdGVkCi0vLyBieSB0aGUgbWF4aW11bSBhcml0eSBvZiB0aGUgaW1wbGVtZW50YXRpb24g
b2YgdHIxOjp0dXBsZSB3aGljaCBpcworLy8gYnkgdGhlIG1heGltdW0gYXJpdHkgb2YgdGhlIGlt
cGxlbWVudGF0aW9uIG9mIHR1cGxlIHdoaWNoIGlzCiAvLyBjdXJyZW50bHkgc2V0IGF0ICRtYXh0
dXBsZS4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdU
RVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFURURfSF8K
ICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0dF
TkVSQVRFRF9IXwogCi0vLyBzY3JpcHRzL2Z1c2VfZ3Rlc3QucHkgZGVwZW5kcyBvbiBndGVzdCdz
IG93biBoZWFkZXIgYmVpbmcgI2luY2x1ZGVkCi0vLyAqdW5jb25kaXRpb25hbGx5Ki4gIFRoZXJl
Zm9yZSB0aGVzZSAjaW5jbHVkZXMgY2Fubm90IGJlIG1vdmVkCi0vLyBpbnNpZGUgI2lmIEdURVNU
X0hBU19QQVJBTV9URVNULgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0
aWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+Ci0KLSNpZiBHVEVT
VF9IQVNfUEFSQU1fVEVTVAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0
aWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKIG5hbWVzcGFj
ZSB0ZXN0aW5nIHsKIApAQCAtNTksOCArNTUsOCBAQCBuYW1lc3BhY2UgdGVzdGluZyB7CiAvLyBp
bmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3
YXJkSXRlcmF0b3I+CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ci0gICAgdHlwZW5hbWUgOjpz
dGQ6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiBWYWx1ZXNJ
bigKLSAgICAgICAgRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKTsK
KyAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0
ZXJhdG9yPjo6dmFsdWVfdHlwZT4KK1ZhbHVlc0luKEZvcndhcmRJdGVyYXRvciBiZWdpbiwgRm9y
d2FyZEl0ZXJhdG9yIGVuZCk7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KIGlu
dGVybmFsOjpQYXJhbUdlbmVyYXRvcjxUPiBWYWx1ZXNJbihjb25zdCBUICgmYXJyYXkpW05dKTsK
QEAgLTcyLDM2ICs2OCwyMyBAQCBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dHlwZW5hbWUgQ29u
dGFpbmVyOjp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIC8v
IFVzZWQgaW4gdGhlIFZhbHVlcygpIGZ1bmN0aW9uIHRvIHByb3ZpZGUgcG9seW1vcnBoaWMgY2Fw
YWJpbGl0aWVzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxPgotY2xhc3MgVmFsdWVBcnJheTEgewot
IHB1YmxpYzoKLSAgZXhwbGljaXQgVmFsdWVBcnJheTEoVDEgdjEpIDogdjFfKHYxKSB7fQotCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsgcmV0dXJuIFZhbHVlc0luKCZ2MV8sICZ2MV8gKyAxKTsgfQotCi0gcHJpdmF0ZToKLSAg
Ly8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lk
IG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MSYgb3RoZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsK
LX07Ci0KLSRyYW5nZSBpIDIuLm4KKyRyYW5nZSBpIDEuLm4KICRmb3IgaSBbWwogJHJhbmdlIGog
MS4uaQogCiB0ZW1wbGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIFQkal1dPgogY2xhc3MgVmFsdWVB
cnJheSRpIHsKICBwdWJsaWM6Ci0gIFZhbHVlQXJyYXkkaSgkZm9yIGosIFtbVCRqIHYkal1dKSA6
ICRmb3IgaiwgW1t2JChqKV8odiRqKV1dIHt9CisgICRpZiBpPT0xIFtbZXhwbGljaXQgXV1WYWx1
ZUFycmF5JGkoJGZvciBqLCBbW1QkaiB2JGpdXSkgOiAkZm9yIGosIFtbdiQoailfKHYkaildXSB7
fQogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7JGZvciBqLCBbW3YkKGopX11dfTsK
KyAgICBjb25zdCBUIGFycmF5W10gPSB7JGZvciBqLCBbW3N0YXRpY19jYXN0PFQ+KHYkKGopXyld
XX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkkaShj
b25zdCBWYWx1ZUFycmF5JGkmIG90aGVyKSA6ICRmb3IgaiwgW1t2JChqKV8ob3RoZXIudiQoailf
KV1dIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQg
aXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkkaSYgb3Ro
ZXIpOwpAQCAtMTE1LDcgKzk4LDcgQEAgJGZvciBqIFtbCiAKIF1dCiAKLSNpZiBHVEVTVF9IQVNf
Q09NQklORQorIyBpZiBHVEVTVF9IQVNfQ09NQklORQogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJ
T04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KIC8vCiAvLyBHZW5lcmF0ZXMgdmFsdWVzIGZy
b20gdGhlIENhcnRlc2lhbiBwcm9kdWN0IG9mIHZhbHVlcyBwcm9kdWNlZApAQCAtMTI4LDkgKzEx
MSw5IEBAICRyYW5nZSBrIDIuLmkKIAogdGVtcGxhdGUgPCRmb3IgaiwgW1t0eXBlbmFtZSBUJGpd
XT4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IkaQotICAgIDogcHVibGljIFBhcmFt
R2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4g
eworICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxl
PCRmb3IgaiwgW1tUJGpdXT4gPiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0cjE6OnR1
cGxlPCRmb3IgaiwgW1tUJGpdXT4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVw
bGU8JGZvciBqLCBbW1Qkal1dPiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVy
YXRvciRpKCRmb3IgaiwgW1tjb25zdCBQYXJhbUdlbmVyYXRvcjxUJGo+JiBnJGpdXSkKICAgICAg
IDogJGZvciBqLCBbW2ckKGopXyhnJGopXV0ge30KQEAgLTE4MCw3ICsxNjMsNyBAQCAkZm9yIGsg
W1sKICAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUo
KSBjb25zdCB7CiAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAg
dmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVu
dF92YWx1ZV87IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0
IHsgcmV0dXJuIGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFs
cyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7
CiAgICAgICAvLyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0
IHRoZSBvdGhlcgogICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2Ug
Y2FuIGRvd25jYXN0LgpAQCAtMjEyLDcgKzE5NSw3IEBAICRmb3IgayBbWwogCiAgICAgdm9pZCBD
b21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBjdXJy
ZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgkZm9yIGosIFtbKmN1cnJlbnQkKGopX11dKTsKKyAgICAg
ICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgkZm9yIGosIFtbKmN1cnJlbnQk
KGopX11dKSk7CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAvLyBXZSBt
dXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVy
IG9mIHRoZQpAQCAtMjM3LDcgKzIyMCw3IEBAICRmb3IgaiBbWwogICAgIHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQkaj46Oml0ZXJhdG9yIGN1cnJlbnQkKGopXzsKIF1dCiAKLSAgICBQYXJhbVR5
cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFs
dWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpOjpJdGVyYXRv
cgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4K
QEAgLTI2OSw4ICsyNTIsOCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyJGkgewogQ2Fy
dGVzaWFuUHJvZHVjdEhvbGRlciRpKCRmb3IgaiwgW1tjb25zdCBHZW5lcmF0b3IkaiYgZyRqXV0p
CiAgICAgICA6ICRmb3IgaiwgW1tnJChqKV8oZyRqKV1dIHt9CiAgIHRlbXBsYXRlIDwkZm9yIGos
IFtbdHlwZW5hbWUgVCRqXV0+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIx
Ojp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2Vu
ZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4oCisgIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4gPigpIGNv
bnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8JGZvciBq
LCBbW1Qkal1dPiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpPCRm
b3IgaiwgW1tUJGpdXT4oCiAkZm9yIGosW1sKIApAQCAtMjkxLDExICsyNzQsOSBAQCAkZm9yIGog
W1sKIAogXV0KIAotI2VuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQorIyBlbmRpZiAgLy8gR1RF
U1RfSEFTX0NPTUJJTkUKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3Bh
Y2UgdGVzdGluZwogCi0jZW5kaWYgIC8vICBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCiAjZW5kaWYg
IC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFU
RURfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgKaW5kZXggMGNiYjU4YzIxYjdi
ODljZDQ4YThkMWM1Y2I1MjBmMzExMzc0Y2RlMi4uZDY0ZjYyMGM0YzY3NDM0NjczYzBhNjFlMjM5
NjBiNjE1YzM0ZTc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgKQEAgLTI2
LDI4ICsyNiw0OSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKwogCiAv
LyBUeXBlIGFuZCBmdW5jdGlvbiB1dGlsaXRpZXMgZm9yIGltcGxlbWVudGluZyBwYXJhbWV0ZXJp
emVkIHRlc3RzLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5k
ZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0hfCiAjZGVm
aW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9IXwogCisj
aW5jbHVkZSA8Y3R5cGUuaD4KKwogI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPHNldD4K
ICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotLy8gc2NyaXB0cy9mdXNl
X2d0ZXN0LnB5IGRlcGVuZHMgb24gZ3Rlc3QncyBvd24gaGVhZGVyIGJlaW5nICNpbmNsdWRlZAot
Ly8gKnVuY29uZGl0aW9uYWxseSouICBUaGVyZWZvcmUgdGhlc2UgI2luY2x1ZGVzIGNhbm5vdCBi
ZSBtb3ZlZAotLy8gaW5zaWRlICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVC4KLSNpbmNsdWRlIDxn
dGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFs
L2d0ZXN0LWxpbmtlZF9wdHIuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0
Lmg+Ci0KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFs
L2d0ZXN0LWludGVybmFsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2Vk
X3B0ci5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC1wcmludGVycy5oIgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CisKKy8vIElu
cHV0IHRvIGEgcGFyYW1ldGVyaXplZCB0ZXN0IG5hbWUgZ2VuZXJhdG9yLCBkZXNjcmliaW5nIGEg
dGVzdCBwYXJhbWV0ZXIuCisvLyBDb25zaXN0cyBvZiB0aGUgcGFyYW1ldGVyIHZhbHVlIGFuZCB0
aGUgaW50ZWdlciBwYXJhbWV0ZXIgaW5kZXguCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgor
c3RydWN0IFRlc3RQYXJhbUluZm8geworICBUZXN0UGFyYW1JbmZvKGNvbnN0IFBhcmFtVHlwZSYg
YV9wYXJhbSwgc2l6ZV90IGFuX2luZGV4KSA6CisgICAgcGFyYW0oYV9wYXJhbSksCisgICAgaW5k
ZXgoYW5faW5kZXgpIHt9CisgIFBhcmFtVHlwZSBwYXJhbTsKKyAgc2l6ZV90IGluZGV4OworfTsK
KworLy8gQSBidWlsdGluIHBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lIGdlbmVyYXRvciB3aGljaCBy
ZXR1cm5zIHRoZSByZXN1bHQgb2YKKy8vIHRlc3Rpbmc6OlByaW50VG9TdHJpbmcuCitzdHJ1Y3Qg
UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSB7CisgIHRlbXBsYXRlIDxjbGFzcyBQYXJhbVR5cGU+Cisg
IHN0ZDo6c3RyaW5nIG9wZXJhdG9yKCkoY29uc3QgVGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+JiBp
bmZvKSBjb25zdCB7CisgICAgcmV0dXJuIFByaW50VG9TdHJpbmcoaW5mby5wYXJhbSk7CisgIH0K
K307CisKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9O
IC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCkBAIC01Nyw3ICs3OCw3IEBAIG5hbWVzcGFjZSBp
bnRlcm5hbCB7CiAvLyBURVNUX1AgbWFjcm8gaXMgdXNlZCB0byBkZWZpbmUgdHdvIHRlc3RzIHdp
dGggdGhlIHNhbWUgbmFtZQogLy8gYnV0IGluIGRpZmZlcmVudCBuYW1lc3BhY2VzLgogR1RFU1Rf
QVBJXyB2b2lkIFJlcG9ydEludmFsaWRUZXN0Q2FzZVR5cGUoY29uc3QgY2hhciogdGVzdF9jYXNl
X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBmaWxlLCBpbnQgbGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbik7CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZT4gY2xhc3MgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U7CiB0ZW1wbGF0ZSA8dHlwZW5hbWU+IGNs
YXNzIFBhcmFtR2VuZXJhdG9yOwpAQCAtMTcxLDcgKzE5Miw3IEBAIGNsYXNzIFBhcmFtR2VuZXJh
dG9yIHsKICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoaW1wbF8tPkVu
ZCgpKTsgfQogCiAgcHJpdmF0ZToKLSAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjxj
b25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiA+IGltcGxfOworICBsaW5rZWRfcHRyPGNv
bnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+ID4gaW1wbF87CiB9OwogCiAvLyBHZW5lcmF0
ZXMgdmFsdWVzIGZyb20gYSByYW5nZSBvZiB0d28gY29tcGFyYWJsZSB2YWx1ZXMuIENhbiBiZSB1
c2VkIHRvCkBAIC0yMDUsNyArMjI2LDcgQEAgY2xhc3MgUmFuZ2VHZW5lcmF0b3IgOiBwdWJsaWMg
UGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4gewogICAgICAgcmV0dXJuIGJhc2VfOwogICAgIH0K
ICAgICB2aXJ0dWFsIHZvaWQgQWR2YW5jZSgpIHsKLSAgICAgIHZhbHVlXyA9IHZhbHVlXyArIHN0
ZXBfOworICAgICAgdmFsdWVfID0gc3RhdGljX2Nhc3Q8VD4odmFsdWVfICsgc3RlcF8pOwogICAg
ICAgaW5kZXhfKys7CiAgICAgfQogICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxU
PiogQ2xvbmUoKSBjb25zdCB7CkBAIC0yNDIsNyArMjYzLDcgQEAgY2xhc3MgUmFuZ2VHZW5lcmF0
b3IgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4gewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFQmIGVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBJbmNyZW1lbnRUJiBzdGVwKSB7CiAgICAgaW50IGVuZF9pbmRleCA9IDA7Ci0g
ICAgZm9yIChUIGkgPSBiZWdpbjsgaSA8IGVuZDsgaSA9IGkgKyBzdGVwKQorICAgIGZvciAoVCBp
ID0gYmVnaW47IGkgPCBlbmQ7IGkgPSBzdGF0aWNfY2FzdDxUPihpICsgc3RlcCkpCiAgICAgICBl
bmRfaW5kZXgrKzsKICAgICByZXR1cm4gZW5kX2luZGV4OwogICB9CkBAIC0yODUsNyArMzA2LDcg
QEAgY2xhc3MgVmFsdWVzSW5JdGVyYXRvclJhbmdlR2VuZXJhdG9yIDogcHVibGljIFBhcmFtR2Vu
ZXJhdG9ySW50ZXJmYWNlPFQ+IHsKICAgIHB1YmxpYzoKICAgICBJdGVyYXRvcihjb25zdCBQYXJh
bUdlbmVyYXRvckludGVyZmFjZTxUPiogYmFzZSwKICAgICAgICAgICAgICB0eXBlbmFtZSBDb250
YWluZXJUeXBlOjpjb25zdF9pdGVyYXRvciBpdGVyYXRvcikKLSAgICAgICAgOiAgYmFzZV8oYmFz
ZSksIGl0ZXJhdG9yXyhpdGVyYXRvcikge30KKyAgICAgICAgOiBiYXNlXyhiYXNlKSwgaXRlcmF0
b3JfKGl0ZXJhdG9yKSB7fQogICAgIHZpcnR1YWwgfkl0ZXJhdG9yKCkge30KIAogICAgIHZpcnR1
YWwgY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4qIEJhc2VHZW5lcmF0b3IoKSBjb25z
dCB7CkBAIC0zNDQsNiArMzY1LDM3IEBAIGNsYXNzIFZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVy
YXRvciA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiB7CiAgIGNvbnN0IENvbnRh
aW5lclR5cGUgY29udGFpbmVyXzsKIH07ICAvLyBjbGFzcyBWYWx1ZXNJbkl0ZXJhdG9yUmFuZ2VH
ZW5lcmF0b3IKIAorLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVT
RVIgQ09ERS4KKy8vCisvLyBEZWZhdWx0IHBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lIGdlbmVyYXRv
ciwgcmV0dXJucyBhIHN0cmluZyBjb250YWluaW5nIHRoZQorLy8gaW50ZWdlciB0ZXN0IHBhcmFt
ZXRlciBpbmRleC4KK3RlbXBsYXRlIDxjbGFzcyBQYXJhbVR5cGU+CitzdGQ6OnN0cmluZyBEZWZh
dWx0UGFyYW1OYW1lKGNvbnN0IFRlc3RQYXJhbUluZm88UGFyYW1UeXBlPiYgaW5mbykgeworICBN
ZXNzYWdlIG5hbWVfc3RyZWFtOworICBuYW1lX3N0cmVhbSA8PCBpbmZvLmluZGV4OworICByZXR1
cm4gbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCk7Cit9CisKKy8vIElOVEVSTkFMIElNUExFTUVOVEFU
SU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCisvLworLy8gUGFyYW1ldGVyaXplZCB0ZXN0
IG5hbWUgb3ZlcmxvYWQgaGVscGVycywgd2hpY2ggaGVscCB0aGUKKy8vIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QIG1hY3JvIGNob29zZSBiZXR3ZWVuIHRoZSBkZWZhdWx0IHBhcmFtZXRlcml6ZWQK
Ky8vIHRlc3QgbmFtZSBnZW5lcmF0b3IgYW5kIHVzZXIgcGFyYW0gbmFtZSBnZW5lcmF0b3IuCit0
ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlLCBjbGFzcyBQYXJhbU5hbWVHZW5GdW5jdG9yPgorUGFy
YW1OYW1lR2VuRnVuY3RvciBHZXRQYXJhbU5hbWVHZW4oUGFyYW1OYW1lR2VuRnVuY3RvciBmdW5j
KSB7CisgIHJldHVybiBmdW5jOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgorc3Ry
dWN0IFBhcmFtTmFtZUdlbkZ1bmMgeworICB0eXBlZGVmIHN0ZDo6c3RyaW5nIFR5cGUoY29uc3Qg
VGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+Jik7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1U
eXBlPgordHlwZW5hbWUgUGFyYW1OYW1lR2VuRnVuYzxQYXJhbVR5cGU+OjpUeXBlICpHZXRQYXJh
bU5hbWVHZW4oKSB7CisgIHJldHVybiBEZWZhdWx0UGFyYW1OYW1lOworfQorCiAvLyBJTlRFUk5B
TCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgogLy8KIC8vIFN0b3Jl
cyBhIHBhcmFtZXRlciB2YWx1ZSBhbmQgbGF0ZXIgY3JlYXRlcyB0ZXN0cyBwYXJhbWV0ZXJpemVk
IHdpdGggdGhhdApAQCAtNDE2LDcgKzQ2OCw3IEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2Fz
ZUluZm9CYXNlIHsKICAgdmlydHVhbCB+UGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UoKSB7
fQogCiAgIC8vIEJhc2UgcGFydCBvZiB0ZXN0IGNhc2UgbmFtZSBmb3IgZGlzcGxheSBwdXJwb3Nl
cy4KLSAgdmlydHVhbCBjb25zdCBTdHJpbmcmIEdldFRlc3RDYXNlTmFtZSgpIGNvbnN0ID0gMDsK
KyAgdmlydHVhbCBjb25zdCBzdGQ6OnN0cmluZyYgR2V0VGVzdENhc2VOYW1lKCkgY29uc3QgPSAw
OwogICAvLyBUZXN0IGNhc2UgaWQgdG8gdmVyaWZ5IGlkZW50aXR5LgogICB2aXJ0dWFsIFR5cGVJ
ZCBHZXRUZXN0Q2FzZVR5cGVJZCgpIGNvbnN0ID0gMDsKICAgLy8gVW5pdFRlc3QgY2xhc3MgaW52
b2tlcyB0aGlzIG1ldGhvZCB0byByZWdpc3RlciB0ZXN0cyBpbiB0aGlzCkBAIC00NDgsMTIgKzUw
MCwxNCBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvIDogcHVibGljIFBhcmFtZXRl
cml6ZWRUZXN0Q2FzZUluZm9CYXNlIHsKICAgdHlwZWRlZiB0eXBlbmFtZSBUZXN0Q2FzZTo6UGFy
YW1UeXBlIFBhcmFtVHlwZTsKICAgLy8gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gaW5zdGFu
Y2Ugb2YgYXBwcm9wcmlhdGUgZ2VuZXJhdG9yIHR5cGUuCiAgIHR5cGVkZWYgUGFyYW1HZW5lcmF0
b3I8UGFyYW1UeXBlPihHZW5lcmF0b3JDcmVhdGlvbkZ1bmMpKCk7CisgIHR5cGVkZWYgdHlwZW5h
bWUgUGFyYW1OYW1lR2VuRnVuYzxQYXJhbVR5cGU+OjpUeXBlIFBhcmFtTmFtZUdlbmVyYXRvckZ1
bmM7CiAKLSAgZXhwbGljaXQgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbyhjb25zdCBjaGFyKiBu
YW1lKQotICAgICAgOiB0ZXN0X2Nhc2VfbmFtZV8obmFtZSkge30KKyAgZXhwbGljaXQgUGFyYW1l
dGVyaXplZFRlc3RDYXNlSW5mbygKKyAgICAgIGNvbnN0IGNoYXIqIG5hbWUsIENvZGVMb2NhdGlv
biBjb2RlX2xvY2F0aW9uKQorICAgICAgOiB0ZXN0X2Nhc2VfbmFtZV8obmFtZSksIGNvZGVfbG9j
YXRpb25fKGNvZGVfbG9jYXRpb24pIHt9CiAKICAgLy8gVGVzdCBjYXNlIGJhc2UgbmFtZSBmb3Ig
ZGlzcGxheSBwdXJwb3Nlcy4KLSAgdmlydHVhbCBjb25zdCBTdHJpbmcmIEdldFRlc3RDYXNlTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIHRlc3RfY2FzZV9uYW1lXzsgfQorICB2aXJ0dWFsIGNvbnN0IHN0
ZDo6c3RyaW5nJiBHZXRUZXN0Q2FzZU5hbWUoKSBjb25zdCB7IHJldHVybiB0ZXN0X2Nhc2VfbmFt
ZV87IH0KICAgLy8gVGVzdCBjYXNlIGlkIHRvIHZlcmlmeSBpZGVudGl0eS4KICAgdmlydHVhbCBU
eXBlSWQgR2V0VGVzdENhc2VUeXBlSWQoKSBjb25zdCB7IHJldHVybiBHZXRUeXBlSWQ8VGVzdENh
c2U+KCk7IH0KICAgLy8gVEVTVF9QIG1hY3JvIHVzZXMgQWRkVGVzdFBhdHRlcm4oKSB0byByZWNv
cmQgaW5mb3JtYXRpb24KQEAgLTQ3MSwxMSArNTI1LDEyIEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRU
ZXN0Q2FzZUluZm8gOiBwdWJsaWMgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UgewogICB9
CiAgIC8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIG1hY3JvIHVzZXMgQWRkR2VuZXJhdG9yKCkg
dG8gcmVjb3JkIGluZm9ybWF0aW9uCiAgIC8vIGFib3V0IGEgZ2VuZXJhdG9yLgotICBpbnQgQWRk
VGVzdENhc2VJbnN0YW50aWF0aW9uKGNvbnN0IGNoYXIqIGluc3RhbnRpYXRpb25fbmFtZSwKKyAg
aW50IEFkZFRlc3RDYXNlSW5zdGFudGlhdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgaW5zdGFudGlh
dGlvbl9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvckNyZWF0
aW9uRnVuYyogZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiAvKiBmaWxlICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKiBsaW5l
ICovKSB7Ci0gICAgaW5zdGFudGlhdGlvbnNfLnB1c2hfYmFjayg6OnN0ZDo6bWFrZV9wYWlyKGlu
c3RhbnRpYXRpb25fbmFtZSwgZnVuYykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBhcmFtTmFtZUdlbmVyYXRvckZ1bmMqIG5hbWVfZnVuYywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSkgeworICAgIGluc3RhbnRpYXRp
b25zXy5wdXNoX2JhY2soCisgICAgICAgIEluc3RhbnRpYXRpb25JbmZvKGluc3RhbnRpYXRpb25f
bmFtZSwgZnVuYywgbmFtZV9mdW5jLCBmaWxlLCBsaW5lKSk7CiAgICAgcmV0dXJuIDA7ICAvLyBS
ZXR1cm4gdmFsdWUgdXNlZCBvbmx5IHRvIHJ1biB0aGlzIG1ldGhvZCBpbiBuYW1lc3BhY2Ugc2Nv
cGUuCiAgIH0KICAgLy8gVW5pdFRlc3QgY2xhc3MgaW52b2tlcyB0aGlzIG1ldGhvZCB0byByZWdp
c3RlciB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZQpAQCAtNDkwLDI2ICs1NDUsNDUgQEAgY2xhc3Mg
UGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbyA6IHB1YmxpYyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJ
bmZvQmFzZSB7CiAgICAgICBmb3IgKHR5cGVuYW1lIEluc3RhbnRpYXRpb25Db250YWluZXI6Oml0
ZXJhdG9yIGdlbl9pdCA9CiAgICAgICAgICAgICAgICBpbnN0YW50aWF0aW9uc18uYmVnaW4oKTsg
Z2VuX2l0ICE9IGluc3RhbnRpYXRpb25zXy5lbmQoKTsKICAgICAgICAgICAgICAgICsrZ2VuX2l0
KSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgaW5zdGFudGlhdGlvbl9uYW1lID0gZ2VuX2l0LT5m
aXJzdDsKLSAgICAgICAgUGFyYW1HZW5lcmF0b3I8UGFyYW1UeXBlPiBnZW5lcmF0b3IoKCpnZW5f
aXQtPnNlY29uZCkoKSk7CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnN0YW50aWF0aW9u
X25hbWUgPSBnZW5faXQtPm5hbWU7CisgICAgICAgIFBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT4g
Z2VuZXJhdG9yKCgqZ2VuX2l0LT5nZW5lcmF0b3IpKCkpOworICAgICAgICBQYXJhbU5hbWVHZW5l
cmF0b3JGdW5jKiBuYW1lX2Z1bmMgPSBnZW5faXQtPm5hbWVfZnVuYzsKKyAgICAgICAgY29uc3Qg
Y2hhciogZmlsZSA9IGdlbl9pdC0+ZmlsZTsKKyAgICAgICAgaW50IGxpbmUgPSBnZW5faXQtPmxp
bmU7CiAKLSAgICAgICAgTWVzc2FnZSB0ZXN0X2Nhc2VfbmFtZV9zdHJlYW07CisgICAgICAgIHN0
ZDo6c3RyaW5nIHRlc3RfY2FzZV9uYW1lOwogICAgICAgICBpZiAoICFpbnN0YW50aWF0aW9uX25h
bWUuZW1wdHkoKSApCi0gICAgICAgICAgdGVzdF9jYXNlX25hbWVfc3RyZWFtIDw8IGluc3RhbnRp
YXRpb25fbmFtZS5jX3N0cigpIDw8ICIvIjsKLSAgICAgICAgdGVzdF9jYXNlX25hbWVfc3RyZWFt
IDw8IHRlc3RfaW5mby0+dGVzdF9jYXNlX2Jhc2VfbmFtZS5jX3N0cigpOworICAgICAgICAgIHRl
c3RfY2FzZV9uYW1lID0gaW5zdGFudGlhdGlvbl9uYW1lICsgIi8iOworICAgICAgICB0ZXN0X2Nh
c2VfbmFtZSArPSB0ZXN0X2luZm8tPnRlc3RfY2FzZV9iYXNlX25hbWU7CiAKLSAgICAgICAgaW50
IGkgPSAwOworICAgICAgICBzaXplX3QgaSA9IDA7CisgICAgICAgIHN0ZDo6c2V0PHN0ZDo6c3Ry
aW5nPiB0ZXN0X3BhcmFtX25hbWVzOwogICAgICAgICBmb3IgKHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFBhcmFtVHlwZT46Oml0ZXJhdG9yIHBhcmFtX2l0ID0KICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmJlZ2luKCk7CiAgICAgICAgICAgICAgcGFyYW1faXQgIT0gZ2VuZXJhdG9yLmVuZCgp
OyArK3BhcmFtX2l0LCArK2kpIHsKICAgICAgICAgICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07
Ci0gICAgICAgICAgdGVzdF9uYW1lX3N0cmVhbSA8PCB0ZXN0X2luZm8tPnRlc3RfYmFzZV9uYW1l
LmNfc3RyKCkgPDwgIi8iIDw8IGk7Ci0gICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TWFr
ZUFuZFJlZ2lzdGVyVGVzdEluZm8oCi0gICAgICAgICAgICAgIHRlc3RfY2FzZV9uYW1lX3N0cmVh
bS5HZXRTdHJpbmcoKS5jX3N0cigpLAorCisgICAgICAgICAgc3RkOjpzdHJpbmcgcGFyYW1fbmFt
ZSA9IG5hbWVfZnVuYygKKyAgICAgICAgICAgICAgVGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+KCpw
YXJhbV9pdCwgaSkpOworCisgICAgICAgICAgR1RFU1RfQ0hFQ0tfKElzVmFsaWRQYXJhbU5hbWUo
cGFyYW1fbmFtZSkpCisgICAgICAgICAgICAgIDw8ICJQYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSAn
IiA8PCBwYXJhbV9uYW1lCisgICAgICAgICAgICAgIDw8ICInIGlzIGludmFsaWQsIGluICIgPDwg
ZmlsZQorICAgICAgICAgICAgICA8PCAiIGxpbmUgIiA8PCBsaW5lIDw8IHN0ZDo6ZW5kbDsKKwor
ICAgICAgICAgIEdURVNUX0NIRUNLXyh0ZXN0X3BhcmFtX25hbWVzLmNvdW50KHBhcmFtX25hbWUp
ID09IDApCisgICAgICAgICAgICAgIDw8ICJEdXBsaWNhdGUgcGFyYW1ldGVyaXplZCB0ZXN0IG5h
bWUgJyIgPDwgcGFyYW1fbmFtZQorICAgICAgICAgICAgICA8PCAiJywgaW4gIiA8PCBmaWxlIDw8
ICIgbGluZSAiIDw8IGxpbmUgPDwgc3RkOjplbmRsOworCisgICAgICAgICAgdGVzdF9wYXJhbV9u
YW1lcy5pbnNlcnQocGFyYW1fbmFtZSk7CisKKyAgICAgICAgICB0ZXN0X25hbWVfc3RyZWFtIDw8
IHRlc3RfaW5mby0+dGVzdF9iYXNlX25hbWUgPDwgIi8iIDw8IHBhcmFtX25hbWU7CisgICAgICAg
ICAgTWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8oCisgICAgICAgICAgICAgIHRlc3RfY2FzZV9uYW1l
LmNfc3RyKCksCiAgICAgICAgICAgICAgIHRlc3RfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19z
dHIoKSwKLSAgICAgICAgICAgICAgIiIsICAvLyB0ZXN0X2Nhc2VfY29tbWVudAotICAgICAgICAg
ICAgICAiIiwgIC8vIGNvbW1lbnQ7IFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IHByb3ZpZGUgcGFy
YW1ldGVyIHZhbHVlCi0gICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVwcmVzZW50YXRpb24uCisgICAgICAgICAgICAgIE5VTEwsICAvLyBObyB0
eXBlIHBhcmFtZXRlci4KKyAgICAgICAgICAgICAgUHJpbnRUb1N0cmluZygqcGFyYW1faXQpLmNf
c3RyKCksCisgICAgICAgICAgICAgIGNvZGVfbG9jYXRpb25fLAogICAgICAgICAgICAgICBHZXRU
ZXN0Q2FzZVR5cGVJZCgpLAogICAgICAgICAgICAgICBUZXN0Q2FzZTo6U2V0VXBUZXN0Q2FzZSwK
ICAgICAgICAgICAgICAgVGVzdENhc2U6OlRlYXJEb3duVGVzdENhc2UsCkBAIC01MzAsMTcgKzYw
NCw1MCBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvIDogcHVibGljIFBhcmFtZXRl
cml6ZWRUZXN0Q2FzZUluZm9CYXNlIHsKICAgICAgICAgdGVzdF9iYXNlX25hbWUoYV90ZXN0X2Jh
c2VfbmFtZSksCiAgICAgICAgIHRlc3RfbWV0YV9mYWN0b3J5KGFfdGVzdF9tZXRhX2ZhY3Rvcnkp
IHt9CiAKLSAgICBjb25zdCBTdHJpbmcgdGVzdF9jYXNlX2Jhc2VfbmFtZTsKLSAgICBjb25zdCBT
dHJpbmcgdGVzdF9iYXNlX25hbWU7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdF9jYXNlX2Jh
c2VfbmFtZTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0X2Jhc2VfbmFtZTsKICAgICBjb25z
dCBzY29wZWRfcHRyPFRlc3RNZXRhRmFjdG9yeUJhc2U8UGFyYW1UeXBlPiA+IHRlc3RfbWV0YV9m
YWN0b3J5OwogICB9OwogICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8bGlua2VkX3B0cjxUZXN0SW5m
bz4gPiBUZXN0SW5mb0NvbnRhaW5lcjsKLSAgLy8gS2VlcHMgcGFpcnMgb2YgPEluc3RhbnRpYXRp
b24gbmFtZSwgU2VxdWVuY2UgZ2VuZXJhdG9yIGNyZWF0aW9uIGZ1bmN0aW9uPgotICAvLyByZWNl
aXZlZCBmcm9tIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIG1hY3Jvcy4KLSAgdHlwZWRlZiA6OnN0
ZDo6dmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIEdlbmVyYXRvckNyZWF0aW9uRnVuYyo+ID4KLSAg
ICAgIEluc3RhbnRpYXRpb25Db250YWluZXI7CisgIC8vIFJlY29yZHMgZGF0YSByZWNlaXZlZCBm
cm9tIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIG1hY3JvczoKKyAgLy8gIDxJbnN0YW50aWF0aW9u
IG5hbWUsIFNlcXVlbmNlIGdlbmVyYXRvciBjcmVhdGlvbiBmdW5jdGlvbiwKKyAgLy8gICAgIE5h
bWUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBTb3VyY2UgZmlsZSwgU291cmNlIGxpbmU+CisgIHN0cnVj
dCBJbnN0YW50aWF0aW9uSW5mbyB7CisgICAgICBJbnN0YW50aWF0aW9uSW5mbyhjb25zdCBzdGQ6
OnN0cmluZyAmbmFtZV9pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvckNyZWF0
aW9uRnVuYyogZ2VuZXJhdG9yX2luLAorICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1OYW1l
R2VuZXJhdG9yRnVuYyogbmFtZV9mdW5jX2luLAorICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogZmlsZV9pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lX2luKQor
ICAgICAgICAgIDogbmFtZShuYW1lX2luKSwKKyAgICAgICAgICAgIGdlbmVyYXRvcihnZW5lcmF0
b3JfaW4pLAorICAgICAgICAgICAgbmFtZV9mdW5jKG5hbWVfZnVuY19pbiksCisgICAgICAgICAg
ICBmaWxlKGZpbGVfaW4pLAorICAgICAgICAgICAgbGluZShsaW5lX2luKSB7fQorCisgICAgICBz
dGQ6OnN0cmluZyBuYW1lOworICAgICAgR2VuZXJhdG9yQ3JlYXRpb25GdW5jKiBnZW5lcmF0b3I7
CisgICAgICBQYXJhbU5hbWVHZW5lcmF0b3JGdW5jKiBuYW1lX2Z1bmM7CisgICAgICBjb25zdCBj
aGFyKiBmaWxlOworICAgICAgaW50IGxpbmU7CisgIH07CisgIHR5cGVkZWYgOjpzdGQ6OnZlY3Rv
cjxJbnN0YW50aWF0aW9uSW5mbz4gSW5zdGFudGlhdGlvbkNvbnRhaW5lcjsKIAotICBjb25zdCBT
dHJpbmcgdGVzdF9jYXNlX25hbWVfOworICBzdGF0aWMgYm9vbCBJc1ZhbGlkUGFyYW1OYW1lKGNv
bnN0IHN0ZDo6c3RyaW5nJiBuYW1lKSB7CisgICAgLy8gQ2hlY2sgZm9yIGVtcHR5IHN0cmluZwor
ICAgIGlmIChuYW1lLmVtcHR5KCkpCisgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBDaGVj
ayBmb3IgaW52YWxpZCBjaGFyYWN0ZXJzCisgICAgZm9yIChzdGQ6OnN0cmluZzo6c2l6ZV90eXBl
IGluZGV4ID0gMDsgaW5kZXggPCBuYW1lLnNpemUoKTsgKytpbmRleCkgeworICAgICAgaWYgKCFp
c2FsbnVtKG5hbWVbaW5kZXhdKSAmJiBuYW1lW2luZGV4XSAhPSAnXycpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIGNvbnN0IHN0ZDo6
c3RyaW5nIHRlc3RfY2FzZV9uYW1lXzsKKyAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb25fOwog
ICBUZXN0SW5mb0NvbnRhaW5lciB0ZXN0c187CiAgIEluc3RhbnRpYXRpb25Db250YWluZXIgaW5z
dGFudGlhdGlvbnNfOwogCkBAIC01NjgsOCArNjc1LDcgQEAgY2xhc3MgUGFyYW1ldGVyaXplZFRl
c3RDYXNlUmVnaXN0cnkgewogICB0ZW1wbGF0ZSA8Y2xhc3MgVGVzdENhc2U+CiAgIFBhcmFtZXRl
cml6ZWRUZXN0Q2FzZUluZm88VGVzdENhc2U+KiBHZXRUZXN0Q2FzZVBhdHRlcm5Ib2xkZXIoCiAg
ICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgIGNvbnN0IGNoYXIqIGZpbGUs
Ci0gICAgICBpbnQgbGluZSkgeworICAgICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24pIHsK
ICAgICBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvPFRlc3RDYXNlPiogdHlwZWRfdGVzdF9pbmZv
ID0gTlVMTDsKICAgICBmb3IgKFRlc3RDYXNlSW5mb0NvbnRhaW5lcjo6aXRlcmF0b3IgaXQgPSB0
ZXN0X2Nhc2VfaW5mb3NfLmJlZ2luKCk7CiAgICAgICAgICBpdCAhPSB0ZXN0X2Nhc2VfaW5mb3Nf
LmVuZCgpOyArK2l0KSB7CkBAIC01NzgsOCArNjg0LDggQEAgY2xhc3MgUGFyYW1ldGVyaXplZFRl
c3RDYXNlUmVnaXN0cnkgewogICAgICAgICAgIC8vIENvbXBsYWluIGFib3V0IGluY29ycmVjdCB1
c2FnZSBvZiBHb29nbGUgVGVzdCBmYWNpbGl0aWVzCiAgICAgICAgICAgLy8gYW5kIHRlcm1pbmF0
ZSB0aGUgcHJvZ3JhbSBzaW5jZSB3ZSBjYW5ub3QgZ3VhcmFudHkgY29ycmVjdAogICAgICAgICAg
IC8vIHRlc3QgY2FzZSBzZXR1cCBhbmQgdGVhci1kb3duIGluIHRoaXMgY2FzZS4KLSAgICAgICAg
ICBSZXBvcnRJbnZhbGlkVGVzdENhc2VUeXBlKHRlc3RfY2FzZV9uYW1lLCAgZmlsZSwgbGluZSk7
Ci0gICAgICAgICAgYWJvcnQoKTsKKyAgICAgICAgICBSZXBvcnRJbnZhbGlkVGVzdENhc2VUeXBl
KHRlc3RfY2FzZV9uYW1lLCBjb2RlX2xvY2F0aW9uKTsKKyAgICAgICAgICBwb3NpeDo6QWJvcnQo
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGFyZSBz
dXJlIHRoYXQgdGhlIG9iamVjdCB3ZSBmb3VuZCBpcyBvZiB0aGUgc2FtZQogICAgICAgICAgIC8v
IHR5cGUgd2UgYXJlIGxvb2tpbmcgZm9yLCBzbyB3ZSBkb3duY2FzdCBpdCB0byB0aGF0IHR5cGUK
QEAgLTU5MSw3ICs2OTcsOCBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSB7
CiAgICAgICB9CiAgICAgfQogICAgIGlmICh0eXBlZF90ZXN0X2luZm8gPT0gTlVMTCkgewotICAg
ICAgdHlwZWRfdGVzdF9pbmZvID0gbmV3IFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm88VGVzdENh
c2U+KHRlc3RfY2FzZV9uYW1lKTsKKyAgICAgIHR5cGVkX3Rlc3RfaW5mbyA9IG5ldyBQYXJhbWV0
ZXJpemVkVGVzdENhc2VJbmZvPFRlc3RDYXNlPigKKyAgICAgICAgICB0ZXN0X2Nhc2VfbmFtZSwg
Y29kZV9sb2NhdGlvbik7CiAgICAgICB0ZXN0X2Nhc2VfaW5mb3NfLnB1c2hfYmFjayh0eXBlZF90
ZXN0X2luZm8pOwogICAgIH0KICAgICByZXR1cm4gdHlwZWRfdGVzdF9pbmZvOwpAQCAtNjE0LDYg
KzcyMSw0IEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IHsKIH0gIC8vIG5h
bWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotI2VuZGlmICAvLyAg
R1RFU1RfSEFTX1BBUkFNX1RFU1QKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lO
VEVSTkFMX0dURVNUX1BBUkFNX1VUSUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC1hcmNoLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY4MzcwMGUwNmQ5OGMzNmY2NDg3MjkxYzNmOTMxODA3YWYzNTNmNzQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oCkBAIC0wLDAgKzEsMTAwIEBACisvLyBDb3B5cmlnaHQg
MjAxNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4K
Ky8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gVGhlIEdvb2dsZSBDKysgVGVz
dGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8KKy8vIFRoaXMgaGVh
ZGVyIGZpbGUgZGVmaW5lcyB0aGUgR1RFU1RfT1NfKiBtYWNyby4KKy8vIEl0IGlzIHNlcGFyYXRl
IGZyb20gZ3Rlc3QtcG9ydC5oIHNvIHRoYXQgY3VzdG9tL2d0ZXN0LXBvcnQuaCBjYW4gaW5jbHVk
ZSBpdC4KKworI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRf
QVJDSF9IXworI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRf
QVJDSF9IXworCisvLyBEZXRlcm1pbmVzIHRoZSBwbGF0Zm9ybSBvbiB3aGljaCBHb29nbGUgVGVz
dCBpcyBjb21waWxlZC4KKyNpZmRlZiBfX0NZR1dJTl9fCisjIGRlZmluZSBHVEVTVF9PU19DWUdX
SU4gMQorI2VsaWYgZGVmaW5lZCBfX1NZTUJJQU4zMl9fCisjIGRlZmluZSBHVEVTVF9PU19TWU1C
SUFOIDEKKyNlbGlmIGRlZmluZWQgX1dJTjMyCisjIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTIDEK
KyMgaWZkZWYgX1dJTjMyX1dDRQorIyAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIDEK
KyMgZWxpZiBkZWZpbmVkKF9fTUlOR1dfXykgfHwgZGVmaW5lZChfX01JTkdXMzJfXykKKyMgIGRl
ZmluZSBHVEVTVF9PU19XSU5ET1dTX01JTkdXIDEKKyMgZWxpZiBkZWZpbmVkKFdJTkFQSV9GQU1J
TFkpCisjICBpbmNsdWRlIDx3aW5hcGlmYW1pbHkuaD4KKyMgIGlmIFdJTkFQSV9GQU1JTFlfUEFS
VElUSU9OKFdJTkFQSV9QQVJUSVRJT05fREVTS1RPUCkKKyMgICBkZWZpbmUgR1RFU1RfT1NfV0lO
RE9XU19ERVNLVE9QIDEKKyMgIGVsaWYgV0lOQVBJX0ZBTUlMWV9QQVJUSVRJT04oV0lOQVBJX1BB
UlRJVElPTl9QSE9ORV9BUFApCisjICAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfUEhPTkUgMQor
IyAgZWxpZiBXSU5BUElfRkFNSUxZX1BBUlRJVElPTihXSU5BUElfUEFSVElUSU9OX0FQUCkKKyMg
ICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19SVCAxCisjICBlbGlmIFdJTkFQSV9GQU1JTFlfUEFS
VElUSU9OKFdJTkFQSV9QQVJUSVRJT05fVFZfVElUTEUpCisjICAgZGVmaW5lIEdURVNUX09TX1dJ
TkRPV1NfUEhPTkUgMQorIyAgIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTX1RWX1RJVExFIDEKKyMg
IGVsc2UKKyAgICAvLyBXSU5BUElfRkFNSUxZIGRlZmluZWQgYnV0IG5vIGtub3duIHBhcnRpdGlv
biBtYXRjaGVkLgorICAgIC8vIERlZmF1bHQgdG8gZGVza3RvcC4KKyMgICBkZWZpbmUgR1RFU1Rf
T1NfV0lORE9XU19ERVNLVE9QIDEKKyMgIGVuZGlmCisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9P
U19XSU5ET1dTX0RFU0tUT1AgMQorIyBlbmRpZiAgLy8gX1dJTjMyX1dDRQorI2VsaWYgZGVmaW5l
ZCBfX0FQUExFX18KKyMgZGVmaW5lIEdURVNUX09TX01BQyAxCisjIGlmIFRBUkdFVF9PU19JUEhP
TkUKKyMgIGRlZmluZSBHVEVTVF9PU19JT1MgMQorIyBlbmRpZgorI2VsaWYgZGVmaW5lZCBfX0Zy
ZWVCU0RfXworIyBkZWZpbmUgR1RFU1RfT1NfRlJFRUJTRCAxCisjZWxpZiBkZWZpbmVkIF9fRnVj
aHNpYV9fCisjIGRlZmluZSBHVEVTVF9PU19GVUNIU0lBIDEKKyNlbGlmIGRlZmluZWQgX19saW51
eF9fCisjIGRlZmluZSBHVEVTVF9PU19MSU5VWCAxCisjIGlmIGRlZmluZWQgX19BTkRST0lEX18K
KyMgIGRlZmluZSBHVEVTVF9PU19MSU5VWF9BTkRST0lEIDEKKyMgZW5kaWYKKyNlbGlmIGRlZmlu
ZWQgX19NVlNfXworIyBkZWZpbmUgR1RFU1RfT1NfWk9TIDEKKyNlbGlmIGRlZmluZWQoX19zdW4p
ICYmIGRlZmluZWQoX19TVlI0KQorIyBkZWZpbmUgR1RFU1RfT1NfU09MQVJJUyAxCisjZWxpZiBk
ZWZpbmVkKF9BSVgpCisjIGRlZmluZSBHVEVTVF9PU19BSVggMQorI2VsaWYgZGVmaW5lZChfX2hw
dXgpCisjIGRlZmluZSBHVEVTVF9PU19IUFVYIDEKKyNlbGlmIGRlZmluZWQgX19uYXRpdmVfY2xp
ZW50X18KKyMgZGVmaW5lIEdURVNUX09TX05BQ0wgMQorI2VsaWYgZGVmaW5lZCBfX05ldEJTRF9f
CisjIGRlZmluZSBHVEVTVF9PU19ORVRCU0QgMQorI2VsaWYgZGVmaW5lZCBfX09wZW5CU0RfXwor
IyBkZWZpbmUgR1RFU1RfT1NfT1BFTkJTRCAxCisjZWxpZiBkZWZpbmVkIF9fUU5YX18KKyMgZGVm
aW5lIEdURVNUX09TX1FOWCAxCisjZW5kaWYgIC8vIF9fQ1lHV0lOX18KKworI2VuZGlmICAvLyBH
VEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRfQVJDSF9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1w
b3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaAppbmRleCBmOGJlODA5MjZmODk4N2QzYzk1ODI4NjE2MDIwMTBiZmY2ZTY0ZDZk
Li43ODY0OTdkODU0Yzk3ZjFiNmFiOTM3MmEyNDFjMWZhMTU1YTMwYTU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaApAQCAtMjcsMjkgKzI3LDU3IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAvLwotLy8gQXV0aG9yczogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8v
CiAvLyBMb3ctbGV2ZWwgdHlwZXMgYW5kIHV0aWxpdGllcyBmb3IgcG9ydGluZyBHb29nbGUgVGVz
dCB0byB2YXJpb3VzCi0vLyBwbGF0Zm9ybXMuICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3
aXRob3V0IG5vdGljZS4gIERPIE5PVCBVU0UKLS8vIFRIRU0gSU4gVVNFUiBDT0RFLgorLy8gcGxh
dGZvcm1zLiAgQWxsIG1hY3JvcyBlbmRpbmcgd2l0aCBfIGFuZCBzeW1ib2xzIGRlZmluZWQgaW4g
YW4KKy8vIGludGVybmFsIG5hbWVzcGFjZSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBu
b3RpY2UuICBDb2RlCisvLyBvdXRzaWRlIEdvb2dsZSBUZXN0IE1VU1QgTk9UIFVTRSBUSEVNIERJ
UkVDVExZLiAgTWFjcm9zIHRoYXQgZG9uJ3QKKy8vIGVuZCB3aXRoIF8gYXJlIHBhcnQgb2YgR29v
Z2xlIFRlc3QncyBwdWJsaWMgQVBJIGFuZCBjYW4gYmUgdXNlZCBieQorLy8gY29kZSBvdXRzaWRl
IEdvb2dsZSBUZXN0LgorLy8KKy8vIFRoaXMgZmlsZSBpcyBmdW5kYW1lbnRhbCB0byBHb29nbGUg
VGVzdC4gIEFsbCBvdGhlciBHb29nbGUgVGVzdCBzb3VyY2UKKy8vIGZpbGVzIGFyZSBleHBlY3Rl
ZCB0byAjaW5jbHVkZSB0aGlzLiAgVGhlcmVmb3JlLCBpdCBjYW5ub3QgI2luY2x1ZGUKKy8vIGFu
eSBvdGhlciBHb29nbGUgVGVzdCBoZWFkZXIuCisKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5P
VCBERUxFVEUKIAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BP
UlRfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QT1JUX0hf
CiAKLS8vIFRoZSB1c2VyIGNhbiBkZWZpbmUgdGhlIGZvbGxvd2luZyBtYWNyb3MgaW4gdGhlIGJ1
aWxkIHNjcmlwdCB0bwotLy8gY29udHJvbCBHb29nbGUgVGVzdCdzIGJlaGF2aW9yLiAgSWYgdGhl
IHVzZXIgZG9lc24ndCBkZWZpbmUgYSBtYWNybwotLy8gaW4gdGhpcyBsaXN0LCBHb29nbGUgVGVz
dCB3aWxsIGRlZmluZSBpdC4KKy8vIEVudmlyb25tZW50LWRlc2NyaWJpbmcgbWFjcm9zCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEdvb2dsZSBUZXN0IGNhbiBiZSB1
c2VkIGluIG1hbnkgZGlmZmVyZW50IGVudmlyb25tZW50cy4gIE1hY3JvcyBpbgorLy8gdGhpcyBz
ZWN0aW9uIHRlbGwgR29vZ2xlIFRlc3Qgd2hhdCBraW5kIG9mIGVudmlyb25tZW50IGl0IGlzIGJl
aW5nCisvLyB1c2VkIGluLCBzdWNoIHRoYXQgR29vZ2xlIFRlc3QgY2FuIHByb3ZpZGUgZW52aXJv
bm1lbnQtc3BlY2lmaWMKKy8vIGZlYXR1cmVzIGFuZCBpbXBsZW1lbnRhdGlvbnMuCisvLworLy8g
R29vZ2xlIFRlc3QgdHJpZXMgdG8gYXV0b21hdGljYWxseSBkZXRlY3QgdGhlIHByb3BlcnRpZXMg
b2YgaXRzCisvLyBlbnZpcm9ubWVudCwgc28gdXNlcnMgdXN1YWxseSBkb24ndCBuZWVkIHRvIHdv
cnJ5IGFib3V0IHRoZXNlCisvLyBtYWNyb3MuICBIb3dldmVyLCB0aGUgYXV0b21hdGljIGRldGVj
dGlvbiBpcyBub3QgcGVyZmVjdC4KKy8vIFNvbWV0aW1lcyBpdCdzIG5lY2Vzc2FyeSBmb3IgYSB1
c2VyIHRvIGRlZmluZSBzb21lIG9mIHRoZSBmb2xsb3dpbmcKKy8vIG1hY3JvcyBpbiB0aGUgYnVp
bGQgc2NyaXB0IHRvIG92ZXJyaWRlIEdvb2dsZSBUZXN0J3MgZGVjaXNpb25zLgorLy8KKy8vIElm
IHRoZSB1c2VyIGRvZXNuJ3QgZGVmaW5lIGEgbWFjcm8gaW4gdGhlIGxpc3QsIEdvb2dsZSBUZXN0
IHdpbGwKKy8vIHByb3ZpZGUgYSBkZWZhdWx0IGRlZmluaXRpb24uICBBZnRlciB0aGlzIGhlYWRl
ciBpcyAjaW5jbHVkZWQsIGFsbAorLy8gbWFjcm9zIGluIHRoaXMgbGlzdCB3aWxsIGJlIGRlZmlu
ZWQgdG8gZWl0aGVyIDEgb3IgMC4KKy8vCisvLyBOb3RlcyB0byBtYWludGFpbmVyczoKKy8vICAg
LSBFYWNoIG1hY3JvIGhlcmUgaXMgYSB1c2VyLXR3ZWFrYWJsZSBrbm9iOyBkbyBub3QgZ3JvdyB0
aGUgbGlzdAorLy8gICAgIGxpZ2h0bHkuCisvLyAgIC0gVXNlICNpZiB0byBrZXkgb2ZmIHRoZXNl
IG1hY3Jvcy4gIERvbid0IHVzZSAjaWZkZWYgb3IgIiNpZgorLy8gICAgIGRlZmluZWQoLi4uKSIs
IHdoaWNoIHdpbGwgbm90IHdvcmsgYXMgdGhlc2UgbWFjcm9zIGFyZSBBTFdBWVMKKy8vICAgICBk
ZWZpbmVkLgogLy8KIC8vICAgR1RFU1RfSEFTX0NMT05FICAgICAgICAgIC0gRGVmaW5lIGl0IHRv
IDEvMCB0byBpbmRpY2F0ZSB0aGF0IGNsb25lKDIpCiAvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlzL2lzbid0IGF2YWlsYWJsZS4KIC8vICAgR1RFU1RfSEFTX0VYQ0VQVElPTlMgICAg
IC0gRGVmaW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB0aGF0IGV4Y2VwdGlvbnMKIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGVuYWJsZWQuCiAvLyAgIEdURVNUX0hBU19HTE9C
QUxfU1RSSU5HICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA6OnN0cmluZwot
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcy9pc24ndCBhdmFpbGFibGUgKHNvbWUg
c3lzdGVtcyBkZWZpbmUKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdHJpbmcs
IHdoaWNoIGlzIGRpZmZlcmVudCB0byBzdGQ6OnN0cmluZykuCi0vLyAgIEdURVNUX0hBU19HTE9C
QUxfV1NUUklORyAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA6OnN0cmluZwot
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcy9pc24ndCBhdmFpbGFibGUgKHNvbWUg
c3lzdGVtcyBkZWZpbmUKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjp3c3RyaW5n
LCB3aGljaCBpcyBkaWZmZXJlbnQgdG8gc3RkOjp3c3RyaW5nKS4KKy8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlCisvLyAgIEdURVNUX0hBU19HTE9CQUxf
V1NUUklORyAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA6OndzdHJpbmcKKy8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlCisvLyAgIEdU
RVNUX0hBU19QT1NJWF9SRSAgICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhh
dCBQT1NJWCByZWd1bGFyCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Np
b25zIGFyZS9hcmVuJ3QgYXZhaWxhYmxlLgogLy8gICBHVEVTVF9IQVNfUFRIUkVBRCAgICAgICAg
LSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgPHB0aHJlYWQuaD4KIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlLgogLy8gICBHVEVTVF9I
QVNfUlRUSSAgICAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgUlRU
SSBpcy9pc24ndApAQCAtNjIsMTAgKzkwLDE2IEBACiAvLyAgIEdURVNUX0hBU19TRUggICAgICAg
ICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUKIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIgc3VwcG9ydHMgTWljcm9zb2Z0J3MgIlN0
cnVjdHVyZWQKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uIEhhbmRs
aW5nIi4KKy8vICAgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgorLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHdoZXRoZXIgdGhl
CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtIHN1cHBvcnRzIEkvTyBz
dHJlYW0gcmVkaXJlY3Rpb24gdXNpbmcKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZHVwKCkgYW5kIGR1cDIoKS4KIC8vICAgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgIC0gRGVmaW5l
IGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB3aGV0aGVyIEdvb2dsZQogLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXN0J3Mgb3duIHRyMSB0dXBsZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQg
YmUKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZC4gIFVudXNlZCB3aGVuIHRo
ZSB1c2VyIHNldHMKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfSEFTX1RS
MV9UVVBMRSB0byAwLgorLy8gICBHVEVTVF9MQU5HX0NYWDExICAgICAgICAgLSBEZWZpbmUgaXQg
dG8gMS8wIHRvIGluZGljYXRlIHRoYXQgR29vZ2xlIFRlc3QKKy8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXMgYnVpbGRpbmcgaW4gQysrMTEvQysrOTggbW9kZS4KIC8vICAgR1RFU1Rf
TElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAt
IERlZmluZSB0byAxIHdoZW4gY29tcGlsaW5nIHRlc3RzIHRoYXQgdXNlCiAvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdvb2dsZSBUZXN0IGFzIGEgc2hhcmVkIGxpYnJhcnkgKGtub3du
IGFzCkBAIC03MywyMyArMTA3LDQzIEBACiAvLyAgIEdURVNUX0NSRUFURV9TSEFSRURfTElCUkFS
WQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBEZWZpbmUgdG8gMSB3aGVuIGNvbXBp
bGluZyBHb29nbGUgVGVzdCBpdHNlbGYKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXMgYSBzaGFyZWQgbGlicmFyeS4KLQotLy8gVGhpcyBoZWFkZXIgZGVmaW5lcyB0aGUgZm9sbG93
aW5nIHV0aWxpdGllczoKKy8vICAgR1RFU1RfREVGQVVMVF9ERUFUSF9URVNUX1NUWUxFCisvLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoZSBkZWZhdWx0IHZhbHVlIG9mIC0tZ3Rlc3Rf
ZGVhdGhfdGVzdF9zdHlsZS4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxl
Z2FjeSBkZWZhdWx0IGhhcyBiZWVuICJmYXN0IiBpbiB0aGUgb3BlbgorLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzb3VyY2UgdmVyc2lvbiBzaW5jZSAyMDA4LiBUaGUgcmVjb21tZW5k
ZWQgdmFsdWUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgInRocmVhZHNhZmUi
LCBhbmQgY2FuIGJlIHNldCBpbgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0
b20vZ3Rlc3QtcG9ydC5oLgorCisvLyBQbGF0Zm9ybS1pbmRpY2F0aW5nIG1hY3JvcworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNYWNyb3MgaW5kaWNhdGluZyB0aGUgcGxh
dGZvcm0gb24gd2hpY2ggR29vZ2xlIFRlc3QgaXMgYmVpbmcgdXNlZAorLy8gKGEgbWFjcm8gaXMg
ZGVmaW5lZCB0byAxIGlmIGNvbXBpbGVkIG9uIHRoZSBnaXZlbiBwbGF0Zm9ybTsKKy8vIG90aGVy
d2lzZSBVTkRFRklORUQgLS0gaXQncyBuZXZlciBkZWZpbmVkIHRvIDAuKS4gIEdvb2dsZSBUZXN0
CisvLyBkZWZpbmVzIHRoZXNlIG1hY3JvcyBhdXRvbWF0aWNhbGx5LiAgQ29kZSBvdXRzaWRlIEdv
b2dsZSBUZXN0IE1VU1QKKy8vIE5PVCBkZWZpbmUgdGhlbS4KIC8vCi0vLyBNYWNyb3MgaW5kaWNh
dGluZyB0aGUgY3VycmVudCBwbGF0Zm9ybSAoZGVmaW5lZCB0byAxIGlmIGNvbXBpbGVkIG9uCi0v
LyB0aGUgZ2l2ZW4gcGxhdGZvcm07IG90aGVyd2lzZSB1bmRlZmluZWQpOgogLy8gICBHVEVTVF9P
U19BSVggICAgICAtIElCTSBBSVgKIC8vICAgR1RFU1RfT1NfQ1lHV0lOICAgLSBDeWd3aW4KLS8v
ICAgR1RFU1RfT1NfTElOVVggICAgLSBMaW51eAogLy8gICBHVEVTVF9PU19GUkVFQlNEICAtIEZy
ZWVCU0QKLS8vICAgR1RFU1RfT1NfSFVSRCAgICAgLSBHTlUvSHVyZAorLy8gICBHVEVTVF9PU19G
VUNIU0lBICAtIEZ1Y2hzaWEKKy8vICAgR1RFU1RfT1NfSFBVWCAgICAgLSBIUC1VWAorLy8gICBH
VEVTVF9PU19MSU5VWCAgICAtIExpbnV4CisvLyAgICAgR1RFU1RfT1NfTElOVVhfQU5EUk9JRCAt
IEdvb2dsZSBBbmRyb2lkCiAvLyAgIEdURVNUX09TX01BQyAgICAgIC0gTWFjIE9TIFgKKy8vICAg
ICBHVEVTVF9PU19JT1MgICAgLSBpT1MKKy8vICAgR1RFU1RfT1NfTkFDTCAgICAgLSBHb29nbGUg
TmF0aXZlIENsaWVudCAoTmFDbCkKKy8vICAgR1RFU1RfT1NfTkVUQlNEICAgLSBOZXRCU0QKKy8v
ICAgR1RFU1RfT1NfT1BFTkJTRCAgLSBPcGVuQlNECisvLyAgIEdURVNUX09TX1FOWCAgICAgIC0g
UU5YCiAvLyAgIEdURVNUX09TX1NPTEFSSVMgIC0gU3VuIFNvbGFyaXMKIC8vICAgR1RFU1RfT1Nf
U1lNQklBTiAgLSBTeW1iaWFuCiAvLyAgIEdURVNUX09TX1dJTkRPV1MgIC0gV2luZG93cyAoRGVz
a3RvcCwgTWluR1csIG9yIE1vYmlsZSkKIC8vICAgICBHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1Ag
IC0gV2luZG93cyBEZXNrdG9wCiAvLyAgICAgR1RFU1RfT1NfV0lORE9XU19NSU5HVyAgICAtIE1p
bkdXCiAvLyAgICAgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgICAtIFdpbmRvd3MgTW9iaWxlCisv
LyAgICAgR1RFU1RfT1NfV0lORE9XU19QSE9ORSAgICAtIFdpbmRvd3MgUGhvbmUKKy8vICAgICBH
VEVTVF9PU19XSU5ET1dTX1JUICAgICAgIC0gV2luZG93cyBTdG9yZSBBcHAvV2luUlQKIC8vICAg
R1RFU1RfT1NfWk9TICAgICAgLSB6L09TCiAvLwogLy8gQW1vbmcgdGhlIHBsYXRmb3JtcywgQ3ln
d2luLCBMaW51eCwgTWF4IE9TIFgsIGFuZCBXaW5kb3dzIGhhdmUgdGhlCkBAIC05OSwyMCArMTUz
LDUwIEBACiAvLyBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20gKHBhdGNoZXMg
Zm9yIGZpeGluZyB0aGVtIGFyZQogLy8gZXZlbiBtb3JlIHdlbGNvbWUhKS4KIC8vCi0vLyBOb3Rl
IHRoYXQgaXQgaXMgcG9zc2libGUgdGhhdCBub25lIG9mIHRoZSBHVEVTVF9PU18qIG1hY3JvcyBh
cmUgZGVmaW5lZC4KKy8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgbm9uZSBvZiB0aGUgR1RFU1RfT1Nf
KiBtYWNyb3MgYXJlIGRlZmluZWQuCisKKy8vIEZlYXR1cmUtaW5kaWNhdGluZyBtYWNyb3MKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNYWNyb3MgaW5kaWNhdGluZyB3aGlj
aCBHb29nbGUgVGVzdCBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlIChhIG1hY3JvCisvLyBpcyBkZWZp
bmVkIHRvIDEgaWYgdGhlIGNvcnJlc3BvbmRpbmcgZmVhdHVyZSBpcyBzdXBwb3J0ZWQ7CisvLyBv
dGhlcndpc2UgVU5ERUZJTkVEIC0tIGl0J3MgbmV2ZXIgZGVmaW5lZCB0byAwLikuICBHb29nbGUg
VGVzdAorLy8gZGVmaW5lcyB0aGVzZSBtYWNyb3MgYXV0b21hdGljYWxseS4gIENvZGUgb3V0c2lk
ZSBHb29nbGUgVGVzdCBNVVNUCisvLyBOT1QgZGVmaW5lIHRoZW0uCisvLworLy8gVGhlc2UgbWFj
cm9zIGFyZSBwdWJsaWMgc28gdGhhdCBwb3J0YWJsZSB0ZXN0cyBjYW4gYmUgd3JpdHRlbi4KKy8v
IFN1Y2ggdGVzdHMgdHlwaWNhbGx5IHN1cnJvdW5kIGNvZGUgdXNpbmcgYSBmZWF0dXJlIHdpdGgg
YW4gI2lmCisvLyB3aGljaCBjb250cm9scyB0aGF0IGNvZGUuICBGb3IgZXhhbXBsZToKKy8vCisv
LyAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKy8vICAgRVhQRUNUX0RFQVRIKERvU29tZXRoaW5n
RGVhZGx5KCkpOworLy8gI2VuZGlmCiAvLwotLy8gTWFjcm9zIGluZGljYXRpbmcgYXZhaWxhYmxl
IEdvb2dsZSBUZXN0IGZlYXR1cmVzIChkZWZpbmVkIHRvIDEgaWYKLS8vIHRoZSBjb3JyZXNwb25k
aW5nIGZlYXR1cmUgaXMgc3VwcG9ydGVkOyBvdGhlcndpc2UgdW5kZWZpbmVkKToKIC8vICAgR1RF
U1RfSEFTX0NPTUJJTkUgICAgICAtIHRoZSBDb21iaW5lKCkgZnVuY3Rpb24gKGZvciB2YWx1ZS1w
YXJhbWV0ZXJpemVkCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cykKIC8vICAg
R1RFU1RfSEFTX0RFQVRIX1RFU1QgICAtIGRlYXRoIHRlc3RzCi0vLyAgIEdURVNUX0hBU19QQVJB
TV9URVNUICAgLSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzCiAvLyAgIEdURVNUX0hBU19UWVBF
RF9URVNUICAgLSB0eXBlZCB0ZXN0cwogLy8gICBHVEVTVF9IQVNfVFlQRURfVEVTVF9QIC0gdHlw
ZS1wYXJhbWV0ZXJpemVkIHRlc3RzCi0vLyAgIEdURVNUX1VTRVNfUE9TSVhfUkUgICAgLSBlbmhh
bmNlZCBQT1NJWCByZWdleCBpcyB1c2VkLgorLy8gICBHVEVTVF9JU19USFJFQURTQUZFICAgIC0g
R29vZ2xlIFRlc3QgaXMgdGhyZWFkLXNhZmUuCisvLyAgIEdPT0dMRVRFU1RfQ00wMDA3IERPIE5P
VCBERUxFVEUKKy8vICAgR1RFU1RfVVNFU19QT1NJWF9SRSAgICAtIGVuaGFuY2VkIFBPU0lYIHJl
Z2V4IGlzIHVzZWQuIERvIG5vdCBjb25mdXNlIHdpdGgKKy8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdURVNUX0hBU19QT1NJWF9SRSAoc2VlIGFib3ZlKSB3aGljaCB1c2VycyBjYW4KKy8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSB0aGVtc2VsdmVzLgogLy8gICBHVEVT
VF9VU0VTX1NJTVBMRV9SRSAgIC0gb3VyIG93biBzaW1wbGUgcmVnZXggaXMgdXNlZDsKLS8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhYm92ZSB0d28gYXJlIG11dHVhbGx5IGV4Y2x1
c2l2ZS4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhYm92ZSBSRVxiKHMpIGFy
ZSBtdXR1YWxseSBleGNsdXNpdmUuCiAvLyAgIEdURVNUX0NBTl9DT01QQVJFX05VTEwgLSBhY2Nl
cHRzIHVudHlwZWQgTlVMTCBpbiBFWFBFQ1RfRVEoKS4KKworLy8gTWlzYyBwdWJsaWMgbWFjcm9z
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyAgIEdURVNUX0ZMQUcoZmxhZ19uYW1lKSAg
LSByZWZlcmVuY2VzIHRoZSB2YXJpYWJsZSBjb3JyZXNwb25kaW5nIHRvCisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGUgZ2l2ZW4gR29vZ2xlIFRlc3QgZmxhZy4KKworLy8gSW50ZXJu
YWwgdXRpbGl0aWVzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBUaGUgZm9sbG93aW5n
IG1hY3JvcyBhbmQgdXRpbGl0aWVzIGFyZSBmb3IgR29vZ2xlIFRlc3QncyBJTlRFUk5BTAorLy8g
dXNlIG9ubHkuICBDb2RlIG91dHNpZGUgR29vZ2xlIFRlc3QgTVVTVCBOT1QgVVNFIFRIRU0gRElS
RUNUTFkuCiAvLwogLy8gTWFjcm9zIGZvciBiYXNpYyBDKysgY29kaW5nOgogLy8gICBHVEVTVF9B
TUJJR1VPVVNfRUxTRV9CTE9DS0VSXyAtIGZvciBkaXNhYmxpbmcgYSBnY2Mgd2FybmluZy4KQEAg
LTEyMSwyNSArMjA1LDM0IEBACiAvLyAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8gICAtIGRpc2Fi
bGVzIG9wZXJhdG9yPS4KIC8vICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyAtIGRp
c2FibGVzIGNvcHkgY3RvciBhbmQgb3BlcmF0b3I9LgogLy8gICBHVEVTVF9NVVNUX1VTRV9SRVNV
TFRfICAgLSBkZWNsYXJlcyB0aGF0IGEgZnVuY3Rpb24ncyByZXN1bHQgbXVzdCBiZSB1c2VkLgor
Ly8gICBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BVU0hfIC0gc3RhcnQgY29kZSBzZWN0
aW9uIHdoZXJlIE1TVkMgQzQxMjcgaXMKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1cHByZXNzZWQgKGNvbnN0YW50IGNvbmRpdGlvbmFsKS4KKy8vICAgR1RFU1Rf
SU5URU5USU9OQUxfQ09OU1RfQ09ORF9QT1BfICAtIGZpbmlzaCBjb2RlIHNlY3Rpb24gd2hlcmUg
TVNWQyBDNDEyNworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMg
c3VwcHJlc3NlZC4KKy8vCisvLyBDKysxMSBmZWF0dXJlIHdyYXBwZXJzOgorLy8KKy8vICAgdGVz
dGluZzo6aW50ZXJuYWw6OmZvcndhcmQgLSBwb3J0YWJpbGl0eSB3cmFwcGVyIGZvciBzdGQ6OmZv
cndhcmQuCisvLyAgIHRlc3Rpbmc6OmludGVybmFsOjptb3ZlICAtIHBvcnRhYmlsaXR5IHdyYXBw
ZXIgZm9yIHN0ZDo6bW92ZS4KIC8vCiAvLyBTeW5jaHJvbml6YXRpb246CiAvLyAgIE11dGV4LCBN
dXRleExvY2ssIFRocmVhZExvY2FsLCBHZXRUaHJlYWRDb3VudCgpCi0vLyAgICAgICAgICAgICAg
ICAgIC0gc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMuCi0vLyAgIEdURVNUX0lTX1RIUkVBRFNB
RkUgLSBkZWZpbmVkIHRvIDEgdG8gaW5kaWNhdGUgdGhhdCB0aGUgYWJvdmUKLS8vICAgICAgICAg
ICAgICAgICAgICAgICAgIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGhhdmUgcmVhbCBpbXBs
ZW1lbnRhdGlvbnMKLS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBHb29nbGUgVGVzdCBp
cyB0aHJlYWQtc2FmZTsgb3IgMCBvdGhlcndpc2UuCisvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAtIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzLgogLy8KIC8vIFRlbXBsYXRlIG1ldGEg
cHJvZ3JhbW1pbmc6CiAvLyAgIGlzX3BvaW50ZXIgICAgIC0gYXMgaW4gVFIxOyBuZWVkZWQgb24g
U3ltYmlhbiBhbmQgSUJNIFhMIEMvQysrIG9ubHkuCisvLyAgIEl0ZXJhdG9yVHJhaXRzIC0gcGFy
dGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBzdGQ6Oml0ZXJhdG9yX3RyYWl0cywgd2hpY2gKKy8vICAg
ICAgICAgICAgICAgICAgICBpcyBub3QgYXZhaWxhYmxlIGluIGxpYkNzdGQgd2hlbiBjb21waWxl
ZCB3aXRoIFN1biBDKysuCiAvLwogLy8gU21hcnQgcG9pbnRlcnM6CiAvLyAgIHNjb3BlZF9wdHIg
ICAgIC0gYXMgaW4gVFIyLgogLy8KIC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnM6CiAvLyAgIFJFICAg
ICAgICAgICAgIC0gYSBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uIGNsYXNzIHVzaW5nIHRoZSBQ
T1NJWAotLy8gICAgICAgICAgICAgICAgICAgIEV4dGVuZGVkIFJlZ3VsYXIgRXhwcmVzc2lvbiBz
eW50YXguICBOb3QgYXZhaWxhYmxlIG9uCi0vLyAgICAgICAgICAgICAgICAgICAgV2luZG93cy4K
LS8vCisvLyAgICAgICAgICAgICAgICAgICAgRXh0ZW5kZWQgUmVndWxhciBFeHByZXNzaW9uIHN5
bnRheCBvbiBVTklYLWxpa2UgcGxhdGZvcm1zCisvLyAgICAgICAgICAgICAgICAgICAgR09PR0xF
VEVTVF9DTTAwMDggRE8gTk9UIERFTEVURQorLy8gICAgICAgICAgICAgICAgICAgIG9yIGEgcmVk
dWNlZCByZWd1bGFyIGV4Y2VwdGlvbiBzeW50YXggb24gb3RoZXIKKy8vICAgICAgICAgICAgICAg
ICAgICBwbGF0Zm9ybXMsIGluY2x1ZGluZyBXaW5kb3dzLgogLy8gTG9nZ2luZzoKIC8vICAgR1RF
U1RfTE9HXygpICAgLSBsb2dzIG1lc3NhZ2VzIGF0IHRoZSBzcGVjaWZpZWQgc2V2ZXJpdHkgbGV2
ZWwuCiAvLyAgIExvZ1RvU3RkZXJyKCkgIC0gZGlyZWN0cyBhbGwgbG9nIG1lc3NhZ2VzIHRvIHN0
ZGVyci4KQEAgLTE2MCwxMCArMjUzLDkgQEAKIC8vICAgQmlnZ2VzdEludCAgICAgLSB0aGUgYmln
Z2VzdCBzaWduZWQgaW50ZWdlciB0eXBlLgogLy8KIC8vIENvbW1hbmQtbGluZSB1dGlsaXRpZXM6
Ci0vLyAgIEdURVNUX0ZMQUcoKSAgICAgICAtIHJlZmVyZW5jZXMgYSBmbGFnLgogLy8gICBHVEVT
VF9ERUNMQVJFXyooKSAgLSBkZWNsYXJlcyBhIGZsYWcuCiAvLyAgIEdURVNUX0RFRklORV8qKCkg
ICAtIGRlZmluZXMgYSBmbGFnLgotLy8gICBHZXRBcmd2cygpICAgICAgICAgLSByZXR1cm5zIHRo
ZSBjb21tYW5kIGxpbmUgYXMgYSB2ZWN0b3Igb2Ygc3RyaW5ncy4KKy8vICAgR2V0SW5qZWN0YWJs
ZUFyZ3ZzKCkgLSByZXR1cm5zIHRoZSBjb21tYW5kIGxpbmUgYXMgYSB2ZWN0b3Igb2Ygc3RyaW5n
cy4KIC8vCiAvLyBFbnZpcm9ubWVudCB2YXJpYWJsZSB1dGlsaXRpZXM6CiAvLyAgIEdldEVudigp
ICAgICAgICAgICAgIC0gZ2V0cyB0aGUgdmFsdWUgb2YgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUu
CkBAIC0xNzEsMTcxICsyNjMsMzA1IEBACiAvLyAgIEludDMyRnJvbUdUZXN0RW52KCkgIC0gcGFy
c2VzIGFuIEludDMyIGVudmlyb25tZW50IHZhcmlhYmxlLgogLy8gICBTdHJpbmdGcm9tR1Rlc3RF
bnYoKSAtIHBhcnNlcyBhIHN0cmluZyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KIAotI2luY2x1ZGUg
PHN0ZGRlZi5oPiAgLy8gRm9yIHB0cmRpZmZfdAorI2luY2x1ZGUgPGN0eXBlLmg+ICAgLy8gZm9y
IGlzc3BhY2UsIGV0YworI2luY2x1ZGUgPHN0ZGRlZi5oPiAgLy8gZm9yIHB0cmRpZmZfdAogI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+
CiAjaWZuZGVmIF9XSU4zMl9XQ0UKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgorIyBpbmNsdWRlIDxz
eXMvdHlwZXMuaD4KKyMgaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNlbmRpZiAgLy8gIV9XSU4zMl9X
Q0UKIAotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgotI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNy
b3MuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0V4cG9ydE1hY3Jvcy5oPgotI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpZiBk
ZWZpbmVkIF9fQVBQTEVfXworIyBpbmNsdWRlIDxBdmFpbGFiaWxpdHlNYWNyb3MuaD4KKyMgaW5j
bHVkZSA8VGFyZ2V0Q29uZGl0aW9uYWxzLmg+CisjZW5kaWYKIAorLy8gQnJpbmdzIGluIHRoZSBk
ZWZpbml0aW9uIG9mIEhBU19HTE9CQUxfU1RSSU5HLiAgVGhpcyBtdXN0IGJlIGRvbmUKKy8vIEJF
Rk9SRSB3ZSB0ZXN0IEhBU19HTE9CQUxfU1RSSU5HLgorI2luY2x1ZGUgPHN0cmluZz4gIC8vIE5P
TElOVAorI2luY2x1ZGUgPGFsZ29yaXRobT4gIC8vIE5PTElOVAogI2luY2x1ZGUgPGlvc3RyZWFt
PiAgLy8gTk9MSU5UCiAjaW5jbHVkZSA8c3N0cmVhbT4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHN0
cmluZz4gIC8vIE5PTElOVAorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9yPiAg
Ly8gTk9MSU5UCisKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LWFyY2guaCIK
KyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oIgorCisjaWYgIWRl
ZmluZWQoR1RFU1RfREVWX0VNQUlMXykKKyMgZGVmaW5lIEdURVNUX0RFVl9FTUFJTF8gImdvb2ds
ZXRlc3RmcmFtZXdvcmtAQGdvb2dsZWdyb3Vwcy5jb20iCisjIGRlZmluZSBHVEVTVF9GTEFHX1BS
RUZJWF8gImd0ZXN0XyIKKyMgZGVmaW5lIEdURVNUX0ZMQUdfUFJFRklYX0RBU0hfICJndGVzdC0i
CisjIGRlZmluZSBHVEVTVF9GTEFHX1BSRUZJWF9VUFBFUl8gIkdURVNUXyIKKyMgZGVmaW5lIEdU
RVNUX05BTUVfICJHb29nbGUgVGVzdCIKKyMgZGVmaW5lIEdURVNUX1BST0pFQ1RfVVJMXyAiaHR0
cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0LyIKKyNlbmRpZiAgLy8gIWRlZmluZWQo
R1RFU1RfREVWX0VNQUlMXykKIAotI2RlZmluZSBHVEVTVF9ERVZfRU1BSUxfICJnb29nbGV0ZXN0
ZnJhbWV3b3JrQEBnb29nbGVncm91cHMuY29tIgotI2RlZmluZSBHVEVTVF9GTEFHX1BSRUZJWF8g
Imd0ZXN0XyIKLSNkZWZpbmUgR1RFU1RfRkxBR19QUkVGSVhfREFTSF8gImd0ZXN0LSIKLSNkZWZp
bmUgR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJHVEVTVF8iCi0jZGVmaW5lIEdURVNUX05BTUVf
ICJHb29nbGUgVGVzdCIKLSNkZWZpbmUgR1RFU1RfUFJPSkVDVF9VUkxfICJodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xldGVzdC8iCisjaWYgIWRlZmluZWQoR1RFU1RfSU5JVF9HT09HTEVf
VEVTVF9OQU1FXykKKyMgZGVmaW5lIEdURVNUX0lOSVRfR09PR0xFX1RFU1RfTkFNRV8gInRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0IgorI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9JTklUX0dPT0dM
RV9URVNUX05BTUVfKQogCiAvLyBEZXRlcm1pbmVzIHRoZSB2ZXJzaW9uIG9mIGdjYyB0aGF0IGlz
IHVzZWQgdG8gY29tcGlsZSB0aGlzLgogI2lmZGVmIF9fR05VQ19fCiAvLyA0MDMwMiBtZWFucyB2
ZXJzaW9uIDQuMy4yLgotI2RlZmluZSBHVEVTVF9HQ0NfVkVSXyBcCisjIGRlZmluZSBHVEVTVF9H
Q0NfVkVSXyBcCiAgICAgKF9fR05VQ19fKjEwMDAwICsgX19HTlVDX01JTk9SX18qMTAwICsgX19H
TlVDX1BBVENITEVWRUxfXykKICNlbmRpZiAgLy8gX19HTlVDX18KIAotLy8gRGV0ZXJtaW5lcyB0
aGUgcGxhdGZvcm0gb24gd2hpY2ggR29vZ2xlIFRlc3QgaXMgY29tcGlsZWQuCi0jaWZkZWYgX19D
WUdXSU5fXwotI2RlZmluZSBHVEVTVF9PU19DWUdXSU4gMQotI2VsaWYgZGVmaW5lZCBfX1NZTUJJ
QU4zMl9fCi0jZGVmaW5lIEdURVNUX09TX1NZTUJJQU4gMQotI2VsaWYgZGVmaW5lZCBfV0lOMzIK
LSNkZWZpbmUgR1RFU1RfT1NfV0lORE9XUyAxCi0jaWZkZWYgX1dJTjMyX1dDRQotI2RlZmluZSBH
VEVTVF9PU19XSU5ET1dTX01PQklMRSAxCi0jZWxpZiBkZWZpbmVkKF9fTUlOR1dfXykgfHwgZGVm
aW5lZChfX01JTkdXMzJfXykKLSNkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19NSU5HVyAxCisvLyBN
YWNyb3MgZm9yIGRpc2FibGluZyBNaWNyb3NvZnQgVmlzdWFsIEMrKyB3YXJuaW5ncy4KKy8vCisv
LyAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQ4MDAgNDM4NSkKKy8vICAgLyog
Y29kZSB0aGF0IHRyaWdnZXJzIHdhcm5pbmdzIEM0ODAwIGFuZCBDNDM4NSAqLworLy8gICBHVEVT
VF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKyNpZiBfTVNDX1ZFUiA+PSAxNDAwCisjIGRl
ZmluZSBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyh3YXJuaW5ncykgXAorICAgIF9f
cHJhZ21hKHdhcm5pbmcocHVzaCkpICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9fcHJh
Z21hKHdhcm5pbmcoZGlzYWJsZTogd2FybmluZ3MpKQorIyBkZWZpbmUgR1RFU1RfRElTQUJMRV9N
U0NfV0FSTklOR1NfUE9QXygpICAgICAgICAgIFwKKyAgICBfX3ByYWdtYSh3YXJuaW5nKHBvcCkp
CiAjZWxzZQotI2RlZmluZSBHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1AgMQotI2VuZGlmICAvLyBf
V0lOMzJfV0NFCi0jZWxpZiBkZWZpbmVkIF9fQVBQTEVfXwotI2RlZmluZSBHVEVTVF9PU19NQUMg
MQotI2VsaWYgZGVmaW5lZCBfX2xpbnV4X18KLSNkZWZpbmUgR1RFU1RfT1NfTElOVVggMQotI2Vs
aWYgZGVmaW5lZCBfX0dOVV9fCi0jZGVmaW5lIEdURVNUX09TX0hVUkQgMQotI2VsaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKF9fRnJl
ZUJTRF9rZXJuZWxfXykKLSNkZWZpbmUgR1RFU1RfT1NfRlJFRUJTRCAxCi0jZWxpZiBkZWZpbmVk
IF9fTVZTX18KLSNkZWZpbmUgR1RFU1RfT1NfWk9TIDEKLSNlbGlmIGRlZmluZWQoX19zdW4pICYm
IGRlZmluZWQoX19TVlI0KQotI2RlZmluZSBHVEVTVF9PU19TT0xBUklTIDEKLSNlbGlmIGRlZmlu
ZWQoX0FJWCkKLSNkZWZpbmUgR1RFU1RfT1NfQUlYIDEKLSNlbmRpZiAgLy8gX19DWUdXSU5fXwot
Ci0jaWYgR1RFU1RfT1NfQ1lHV0lOIHx8IEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8
fCBHVEVTVF9PU19TWU1CSUFOIHx8IFwKLSAgICBHVEVTVF9PU19TT0xBUklTIHx8IEdURVNUX09T
X0FJWCB8fCBHVEVTVF9PU19GUkVFQlNEIHx8IEdURVNUX09TX0hVUkQKKy8vIE9sZGVyIHZlcnNp
b25zIG9mIE1TVkMgZG9uJ3QgaGF2ZSBfX3ByYWdtYS4KKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVf
TVNDX1dBUk5JTkdTX1BVU0hfKHdhcm5pbmdzKQorIyBkZWZpbmUgR1RFU1RfRElTQUJMRV9NU0Nf
V0FSTklOR1NfUE9QXygpCisjZW5kaWYKKworLy8gQ2xhbmcgb24gV2luZG93cyBkb2VzIG5vdCB1
bmRlcnN0YW5kIE1TVkMncyBwcmFnbWEgd2FybmluZy4KKy8vIFdlIG5lZWQgY2xhbmctc3BlY2lm
aWMgd2F5IHRvIGRpc2FibGUgZnVuY3Rpb24gZGVwcmVjYXRpb24gd2FybmluZy4KKyNpZmRlZiBf
X2NsYW5nX18KKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVTSF8oKSAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgX1ByYWdtYSgiY2xhbmcgZGlhZ25vc3RpYyBw
dXNoIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9QcmFnbWEoImNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCBcIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNcIiIpIFwK
KyAgICBfUHJhZ21hKCJjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV2RlcHJlY2F0ZWQtaW1w
bGVtZW50YXRpb25zXCIiKQorI2RlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BP
UF8oKSBcCisgICAgX1ByYWdtYSgiY2xhbmcgZGlhZ25vc3RpYyBwb3AiKQorI2Vsc2UKKyMgZGVm
aW5lIEdURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVTSF8oKSBcCisgICAgR1RFU1RfRElT
QUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDk5NikKKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVND
X0RFUFJFQ0FURURfUE9QXygpIFwKKyAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1Bf
KCkKKyNlbmRpZgorCisjaWZuZGVmIEdURVNUX0xBTkdfQ1hYMTEKKy8vIGdjYyBhbmQgY2xhbmcg
ZGVmaW5lIF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fIHdoZW4KKy8vIC1zdGQ9e2MsZ251fSsr
ezB4LDExfSBpcyBwYXNzZWQuICBUaGUgQysrMTEgc3RhbmRhcmQgc3BlY2lmaWVzIGEKKy8vIHZh
bHVlIGZvciBfX2NwbHVzcGx1cywgYW5kIHJlY2VudCB2ZXJzaW9ucyBvZiBjbGFuZywgZ2NjLCBh
bmQKKy8vIHByb2JhYmx5IG90aGVyIGNvbXBpbGVycyBzZXQgdGhhdCB0b28gaW4gQysrMTEgbW9k
ZS4KKyMgaWYgX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18gfHwgX19jcGx1c3BsdXMgPj0gMjAx
MTAzTCB8fCBfTVNDX1ZFUiA+PSAxOTAwCisvLyBDb21waWxpbmcgaW4gYXQgbGVhc3QgQysrMTEg
bW9kZS4KKyMgIGRlZmluZSBHVEVTVF9MQU5HX0NYWDExIDEKKyMgZWxzZQorIyAgZGVmaW5lIEdU
RVNUX0xBTkdfQ1hYMTEgMAorIyBlbmRpZgorI2VuZGlmCisKKy8vIERpc3RpbmN0IGZyb20gQysr
MTEgbGFuZ3VhZ2Ugc3VwcG9ydCwgc29tZSBlbnZpcm9ubWVudHMgZG9uJ3QgcHJvdmlkZQorLy8g
cHJvcGVyIEMrKzExIGxpYnJhcnkgc3VwcG9ydC4gTm90YWJseSwgaXQncyBwb3NzaWJsZSB0byBi
dWlsZCBpbgorLy8gQysrMTEgbW9kZSB3aGVuIHRhcmdldGluZyBNYWMgT1MgWCAxMC42LCB3aGlj
aCBoYXMgYW4gb2xkIGxpYnN0ZGMrKworLy8gd2l0aCBubyBDKysxMSBzdXBwb3J0LgorLy8KKy8v
IGxpYnN0ZGMrKyBoYXMgc3VmZmljaWVudCBDKysxMSBzdXBwb3J0IGFzIG9mIEdDQyA0LjYuMCwg
X19HTElCQ1hYX18KKy8vIDIwMTEwMzI1LCBidXQgbWFpbnRlbmFuY2UgcmVsZWFzZXMgaW4gdGhl
IDQuNCBhbmQgNC41IHNlcmllcyBmb2xsb3dlZAorLy8gdGhpcyBkYXRlLCBzbyBjaGVjayBmb3Ig
dGhvc2UgdmVyc2lvbnMgYnkgdGhlaXIgZGF0ZSBzdGFtcHMuCisvLyBodHRwczovL2djYy5nbnUu
b3JnL29ubGluZWRvY3MvbGlic3RkYysrL21hbnVhbC9hYmkuaHRtbCNhYmkudmVyc2lvbmluZwor
I2lmIEdURVNUX0xBTkdfQ1hYMTEgJiYgXAorICAgICghZGVmaW5lZChfX0dMSUJDWFhfXykgfHwg
KCBcCisgICAgICAgIF9fR0xJQkNYWF9fID49IDIwMTEwMzI1dWwgJiYgIC8qIEdDQyA+PSA0LjYu
MCAqLyBcCisgICAgICAgIC8qIEJsYWNrbGlzdCBvZiBwYXRjaCByZWxlYXNlcyBvZiBvbGRlciBi
cmFuY2hlczogKi8gXAorICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDExMDQxNnVsICYmICAvKiBH
Q0MgNC40LjYgKi8gXAorICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDEyMDMxM3VsICYmICAvKiBH
Q0MgNC40LjcgKi8gXAorICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDExMDQyOHVsICYmICAvKiBH
Q0MgNC41LjMgKi8gXAorICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDEyMDcwMnVsKSkgICAvKiBH
Q0MgNC41LjQgKi8KKyMgZGVmaW5lIEdURVNUX1NURExJQl9DWFgxMSAxCisjZW5kaWYKKworLy8g
T25seSB1c2UgQysrMTEgbGlicmFyeSBmZWF0dXJlcyBpZiB0aGUgbGlicmFyeSBwcm92aWRlcyB0
aGVtLgorI2lmIEdURVNUX1NURExJQl9DWFgxMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9CRUdJ
Tl9BTkRfRU5EXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8gMQorIyBp
ZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgKF9NU0NfRlVMTF9WRVIgPj0gMTkwMDIzODI0KQorLy8g
d29ya3Mgb25seSB3aXRoIFZTMjAxNVUyIGFuZCBiZXR0ZXIKKyMgICBkZWZpbmUgR1RFU1RfSEFT
X1NURF9GVU5DVElPTl8gMQorIyBlbmRpZgorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9JTklUSUFM
SVpFUl9MSVNUXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX01PVkVfIDEKKyMgZGVmaW5lIEdU
RVNUX0hBU19TVERfVU5JUVVFX1BUUl8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9TSEFSRURf
UFRSXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfVU5PUkRFUkVEX01BUF8gMQorIyBkZWZpbmUgR1RF
U1RfSEFTX1VOT1JERVJFRF9TRVRfIDEKKyNlbmRpZgorCisvLyBDKysxMSBzcGVjaWZpZXMgdGhh
dCA8dHVwbGU+IHByb3ZpZGVzIHN0ZDo6dHVwbGUuCisvLyBTb21lIHBsYXRmb3JtcyBzdGlsbCBt
aWdodCBub3QgaGF2ZSBpdCwgaG93ZXZlci4KKyNpZiBHVEVTVF9MQU5HX0NYWDExCisjIGRlZmlu
ZSBHVEVTVF9IQVNfU1REX1RVUExFXyAxCisjIGlmIGRlZmluZWQoX19jbGFuZ19fKQorLy8gSW5z
cGlyZWQgYnkKKy8vIGh0dHBzOi8vY2xhbmcubGx2bS5vcmcvZG9jcy9MYW5ndWFnZUV4dGVuc2lv
bnMuaHRtbCNpbmNsdWRlLWZpbGUtY2hlY2tpbmctbWFjcm9zCisjICBpZiBkZWZpbmVkKF9faGFz
X2luY2x1ZGUpICYmICFfX2hhc19pbmNsdWRlKDx0dXBsZT4pCisjICAgdW5kZWYgR1RFU1RfSEFT
X1NURF9UVVBMRV8KKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfTVNDX1ZFUikKKy8vIEluc3Bp
cmVkIGJ5IGJvb3N0L2NvbmZpZy9zdGRsaWIvZGlua3Vtd2FyZS5ocHAKKyMgIGlmIGRlZmluZWQo
X0NQUExJQl9WRVIpICYmIF9DUFBMSUJfVkVSIDwgNTIwCisjICAgdW5kZWYgR1RFU1RfSEFTX1NU
RF9UVVBMRV8KKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX0dMSUJDWFhfXykKKy8vIEluc3Bp
cmVkIGJ5IGJvb3N0L2NvbmZpZy9zdGRsaWIvbGlic3RkY3BwMy5ocHAsCisvLyBodHRwOi8vZ2Nj
LmdudS5vcmcvZ2NjLTQuMi9jaGFuZ2VzLmh0bWwgYW5kCisvLyBodHRwczovL3dlYi5hcmNoaXZl
Lm9yZy93ZWIvMjAxNDAyMjcwNDQ0MjkvZ2NjLmdudS5vcmcvb25saW5lZG9jcy9saWJzdGRjKysv
bWFudWFsL2JrMDFwdDAxY2gwMS5odG1sI21hbnVhbC5pbnRyby5zdGF0dXMuc3RhbmRhcmQuMjAw
eAorIyAgaWYgX19HTlVDX18gPCA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9f
IDwgMikKKyMgICB1bmRlZiBHVEVTVF9IQVNfU1REX1RVUExFXworIyAgZW5kaWYKKyMgZW5kaWYK
KyNlbmRpZgorCisvLyBCcmluZ3MgaW4gZGVmaW5pdGlvbnMgZm9yIGZ1bmN0aW9ucyB1c2VkIGlu
IHRoZSB0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXgKKy8vIG5hbWVzcGFjZSAocmVhZCwgd3JpdGUs
IGNsb3NlLCBjaGRpciwgaXNhdHR5LCBzdGF0KS4gV2UgZG8gbm90IGN1cnJlbnRseQorLy8gdXNl
IHRoZW0gb24gV2luZG93cyBNb2JpbGUuCisjaWYgR1RFU1RfT1NfV0lORE9XUworIyBpZiAhR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKKyMgIGluY2x1ZGUgPGRpcmVjdC5oPgorIyAgaW5jbHVkZSA8
aW8uaD4KKyMgZW5kaWYKKy8vIEluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBpbmNsdWRlIDx3
aW5kb3dzLmg+LCB1c2UgZm9yd2FyZCBkZWNsYXJhdGlvbgorI2lmIEdURVNUX09TX1dJTkRPV1Nf
TUlOR1cgJiYgIWRlZmluZWQoX19NSU5HVzY0X1ZFUlNJT05fTUFKT1IpCisvLyBNaW5HVyBkZWZp
bmVkIF9DUklUSUNBTF9TRUNUSU9OIGFuZCBfUlRMX0NSSVRJQ0FMX1NFQ1RJT04gYXMgdHdvCisv
LyBzZXBhcmF0ZSAoZXF1aXZhbGVudCkgc3RydWN0cywgaW5zdGVhZCBvZiB1c2luZyB0eXBlZGVm
Cit0eXBlZGVmIHN0cnVjdCBfQ1JJVElDQUxfU0VDVElPTiBHVEVTVF9DUklUSUNBTF9TRUNUSU9O
OworI2Vsc2UKKy8vIEFzc3VtZSBDUklUSUNBTF9TRUNUSU9OIGlzIGEgdHlwZWRlZiBvZiBfUlRM
X0NSSVRJQ0FMX1NFQ1RJT04uCisvLyBUaGlzIGFzc3VtcHRpb24gaXMgdmVyaWZpZWQgYnkKKy8v
IFdpbmRvd3NUeXBlc1Rlc3QuQ1JJVElDQUxfU0VDVElPTklzX1JUTF9DUklUSUNBTF9TRUNUSU9O
LgordHlwZWRlZiBzdHJ1Y3QgX1JUTF9DUklUSUNBTF9TRUNUSU9OIEdURVNUX0NSSVRJQ0FMX1NF
Q1RJT047CisjZW5kaWYKKyNlbHNlCisvLyBUaGlzIGFzc3VtZXMgdGhhdCBub24tV2luZG93cyBP
U2VzIHByb3ZpZGUgdW5pc3RkLmguIEZvciBPU2VzIHdoZXJlIHRoaXMKKy8vIGlzIG5vdCB0aGUg
Y2FzZSwgd2UgbmVlZCB0byBpbmNsdWRlIGhlYWRlcnMgdGhhdCBwcm92aWRlIHRoZSBmdW5jdGlv
bnMKKy8vIG1lbnRpb25lZCBhYm92ZS4KKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjIGluY2x1ZGUg
PHN0cmluZ3MuaD4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjaWYgR1RFU1RfT1Nf
TElOVVhfQU5EUk9JRAorLy8gVXNlZCB0byBkZWZpbmUgX19BTkRST0lEX0FQSV9fIG1hdGNoaW5n
IHRoZSB0YXJnZXQgTkRLIEFQSSBsZXZlbC4KKyMgIGluY2x1ZGUgPGFuZHJvaWQvYXBpLWxldmVs
Lmg+ICAvLyBOT0xJTlQKKyNlbmRpZgorCisvLyBEZWZpbmVzIHRoaXMgdG8gdHJ1ZSBpZmYgR29v
Z2xlIFRlc3QgY2FuIHVzZSBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb25zLgorI2lmbmRlZiBHVEVT
VF9IQVNfUE9TSVhfUkUKKyMgaWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRAorLy8gT24gQW5kcm9p
ZCwgPHJlZ2V4Lmg+IGlzIG9ubHkgYXZhaWxhYmxlIHN0YXJ0aW5nIHdpdGggR2luZ2VyYnJlYWQu
CisjICBkZWZpbmUgR1RFU1RfSEFTX1BPU0lYX1JFIChfX0FORFJPSURfQVBJX18gPj0gOSkKKyMg
ZWxzZQorIyAgZGVmaW5lIEdURVNUX0hBU19QT1NJWF9SRSAoIUdURVNUX09TX1dJTkRPV1MpCisj
IGVuZGlmCisjZW5kaWYKKworI2lmIEdURVNUX1VTRVNfUENSRQorLy8gVGhlIGFwcHJvcHJpYXRl
IGhlYWRlcnMgaGF2ZSBhbHJlYWR5IGJlZW4gaW5jbHVkZWQuCisKKyNlbGlmIEdURVNUX0hBU19Q
T1NJWF9SRQogCiAvLyBPbiBzb21lIHBsYXRmb3JtcywgPHJlZ2V4Lmg+IG5lZWRzIHNvbWVvbmUg
dG8gZGVmaW5lIHNpemVfdCwgYW5kCiAvLyB3b24ndCBjb21waWxlIG90aGVyd2lzZS4gIFdlIGNh
biAjaW5jbHVkZSBpdCBoZXJlIGFzIHdlIGFscmVhZHkKIC8vIGluY2x1ZGVkIDxzdGRsaWIuaD4s
IHdoaWNoIGlzIGd1YXJhbnRlZWQgdG8gZGVmaW5lIHNpemVfdCB0aHJvdWdoCiAvLyA8c3RkZGVm
Lmg+LgotI2lmIEhBVkUoUkVHRVhfSCkKLSNpbmNsdWRlIDxyZWdleC5oPiAgLy8gTk9MSU5UCi0j
ZGVmaW5lIEdURVNUX1VTRVNfUE9TSVhfUkUgMQotI2Vsc2UKLSNkZWZpbmUgR1RFU1RfVVNFU19T
SU1QTEVfUkUgMQotI2VuZGlmCi0jaW5jbHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5UCi0jaW5j
bHVkZSA8c3lzL3R5cGVzLmg+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDx0aW1lLmg+ICAvLyBOT0xJ
TlQKLSNpbmNsdWRlIDx1bmlzdGQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxyZWdleC5oPiAg
Ly8gTk9MSU5UCiAKKyMgZGVmaW5lIEdURVNUX1VTRVNfUE9TSVhfUkUgMQogCiAjZWxpZiBHVEVT
VF9PU19XSU5ET1dTCiAKLSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSNpbmNsdWRlIDxk
aXJlY3QuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPGlvLmg+ICAvLyBOT0xJTlQKLSNlbmRpZgot
CiAvLyA8cmVnZXguaD4gaXMgbm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLiAgVXNlIG91ciBvd24g
c2ltcGxlIHJlZ2V4CiAvLyBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkLgotI2RlZmluZSBHVEVTVF9V
U0VTX1NJTVBMRV9SRSAxCisjIGRlZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9SRSAxCiAKICNlbHNl
CiAKIC8vIDxyZWdleC5oPiBtYXkgbm90IGJlIGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtLiAg
VXNlIG91ciBvd24KIC8vIHNpbXBsZSByZWdleCBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkLgotI2Rl
ZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9SRSAxCisjIGRlZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9S
RSAxCiAKLSNlbmRpZiAgLy8gR1RFU1RfT1NfQ1lHV0lOIHx8IEdURVNUX09TX0xJTlVYIHx8IEdU
RVNUX09TX01BQyB8fAotICAgICAgICAvLyBHVEVTVF9PU19TWU1CSUFOIHx8IEdURVNUX09TX1NP
TEFSSVMgfHwgR1RFU1RfT1NfQUlYIHx8Ci0gICAgICAgIC8vIEdURVNUX09TX0ZSRUVCU0QgfHwg
R1RFU1RfT1NfSFVSRAorI2VuZGlmICAvLyBHVEVTVF9VU0VTX1BDUkUKIAogI2lmbmRlZiBHVEVT
VF9IQVNfRVhDRVBUSU9OUwogLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMgd2hldGhlciBleGNl
cHRpb25zIGFyZSBlbmFibGVkLCBzbyB3ZSBuZWVkCiAvLyB0byBmaWd1cmUgaXQgb3V0LgotI2lm
IGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQotLy8gTVNWQydzIGFu
ZCBDKytCdWlsZGVyJ3MgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBTVEwgdXNlIHRoZSBfSEFTX0VY
Q0VQVElPTlMKKyMgaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZChfQ1BQVU5XSU5EKQor
Ly8gTVNWQyBkZWZpbmVzIF9DUFBVTldJTkQgdG8gMSBpZmYgZXhjZXB0aW9ucyBhcmUgZW5hYmxl
ZC4KKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCisjIGVsaWYgZGVmaW5lZChfX0JP
UkxBTkRDX18pCisvLyBDKytCdWlsZGVyJ3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNUTCB1c2Vz
IHRoZSBfSEFTX0VYQ0VQVElPTlMKIC8vIG1hY3JvIHRvIGVuYWJsZSBleGNlcHRpb25zLCBzbyB3
ZSdsbCBkbyB0aGUgc2FtZS4KIC8vIEFzc3VtZXMgdGhhdCBleGNlcHRpb25zIGFyZSBlbmFibGVk
IGJ5IGRlZmF1bHQuCi0jaWZuZGVmIF9IQVNfRVhDRVBUSU9OUwotI2RlZmluZSBfSEFTX0VYQ0VQ
VElPTlMgMQotI2VuZGlmICAvLyBfSEFTX0VYQ0VQVElPTlMKLSNkZWZpbmUgR1RFU1RfSEFTX0VY
Q0VQVElPTlMgX0hBU19FWENFUFRJT05TCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0VY
Q0VQVElPTlMKKyMgIGlmbmRlZiBfSEFTX0VYQ0VQVElPTlMKKyMgICBkZWZpbmUgX0hBU19FWENF
UFRJT05TIDEKKyMgIGVuZGlmICAvLyBfSEFTX0VYQ0VQVElPTlMKKyMgIGRlZmluZSBHVEVTVF9I
QVNfRVhDRVBUSU9OUyBfSEFTX0VYQ0VQVElPTlMKKyMgZWxpZiBkZWZpbmVkKF9fY2xhbmdfXykK
Ky8vIGNsYW5nIGRlZmluZXMgX19FWENFUFRJT05TIGlmZiBleGNlcHRpb25zIGFyZSBlbmFibGVk
IGJlZm9yZSBjbGFuZyAyMjA3MTQsCisvLyBidXQgaWZmIGNsZWFudXBzIGFyZSBlbmFibGVkIGFm
dGVyIHRoYXQuIEluIE9iai1DKysgZmlsZXMsIHRoZXJlIGNhbiBiZQorLy8gY2xlYW51cHMgZm9y
IE9iakMgZXhjZXB0aW9ucyB3aGljaCBhbHNvIG5lZWQgY2xlYW51cHMsIGV2ZW4gaWYgQysrIGV4
Y2VwdGlvbnMKKy8vIGFyZSBkaXNhYmxlZC4gY2xhbmcgaGFzIF9faGFzX2ZlYXR1cmUoY3h4X2V4
Y2VwdGlvbnMpIHdoaWNoIGNoZWNrcyBmb3IgQysrCisvLyBleGNlcHRpb25zIHN0YXJ0aW5nIGF0
IGNsYW5nIHIyMDYzNTIsIGJ1dCB3aGljaCBjaGVja2VkIGZvciBjbGVhbnVwcyBwcmlvciB0bwor
Ly8gdGhhdC4gVG8gcmVsaWFibHkgY2hlY2sgZm9yIEMrKyBleGNlcHRpb24gYXZhaWxhYmlsaXR5
IHdpdGggY2xhbmcsIGNoZWNrIGZvcgorLy8gX19FWENFUFRJT05TICYmIF9faGFzX2ZlYXR1cmUo
Y3h4X2V4Y2VwdGlvbnMpLgorIyAgZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIChfX0VYQ0VQ
VElPTlMgJiYgX19oYXNfZmVhdHVyZShjeHhfZXhjZXB0aW9ucykpCisjIGVsaWYgZGVmaW5lZChf
X0dOVUNfXykgJiYgX19FWENFUFRJT05TCiAvLyBnY2MgZGVmaW5lcyBfX0VYQ0VQVElPTlMgdG8g
MSBpZmYgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZC4KLSNkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElP
TlMgMQotI2VsaWYgZGVmaW5lZChfX1NVTlBST19DQykKKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhD
RVBUSU9OUyAxCisjIGVsaWYgZGVmaW5lZChfX1NVTlBST19DQykKIC8vIFN1biBQcm8gQ0Mgc3Vw
cG9ydHMgZXhjZXB0aW9ucy4gIEhvd2V2ZXIsIHRoZXJlIGlzIG5vIGNvbXBpbGUtdGltZSB3YXkg
b2YKIC8vIGRldGVjdGluZyB3aGV0aGVyIHRoZXkgYXJlIGVuYWJsZWQgb3Igbm90LiAgVGhlcmVm
b3JlLCB3ZSBhc3N1bWUgdGhhdAogLy8gdGhleSBhcmUgZW5hYmxlZCB1bmxlc3MgdGhlIHVzZXIg
dGVsbHMgdXMgb3RoZXJ3aXNlLgotI2RlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCi0jZWxp
ZiBkZWZpbmVkKF9fSUJNQ1BQX18pICYmIF9fRVhDRVBUSU9OUworIyAgZGVmaW5lIEdURVNUX0hB
U19FWENFUFRJT05TIDEKKyMgZWxpZiBkZWZpbmVkKF9fSUJNQ1BQX18pICYmIF9fRVhDRVBUSU9O
UwogLy8geGxDIGRlZmluZXMgX19FWENFUFRJT05TIHRvIDEgaWZmIGV4Y2VwdGlvbnMgYXJlIGVu
YWJsZWQuCi0jZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIDEKLSNlbHNlCisjICBkZWZpbmUg
R1RFU1RfSEFTX0VYQ0VQVElPTlMgMQorIyBlbGlmIGRlZmluZWQoX19IUF9hQ0MpCisvLyBFeGNl
cHRpb24gaGFuZGxpbmcgaXMgaW4gZWZmZWN0IGJ5IGRlZmF1bHQgaW4gSFAgYUNDIGNvbXBpbGVy
LiBJdCBoYXMgdG8KKy8vIGJlIHR1cm5lZCBvZiBieSArbm9laCBjb21waWxlciBvcHRpb24gaWYg
ZGVzaXJlZC4KKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCisjIGVsc2UKIC8vIEZv
ciBvdGhlciBjb21waWxlcnMsIHdlIGFzc3VtZSBleGNlcHRpb25zIGFyZSBkaXNhYmxlZCB0byBi
ZQogLy8gY29uc2VydmF0aXZlLgotI2RlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAwCi0jZW5k
aWYgIC8vIGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQorIyAgZGVm
aW5lIEdURVNUX0hBU19FWENFUFRJT05TIDAKKyMgZW5kaWYgIC8vIGRlZmluZWQoX01TQ19WRVIp
IHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQogI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9O
UwogCiAjaWYgIWRlZmluZWQoR1RFU1RfSEFTX1NURF9TVFJJTkcpCiAvLyBFdmVuIHRob3VnaCB3
ZSBkb24ndCB1c2UgdGhpcyBtYWNybyBhbnkgbG9uZ2VyLCB3ZSBrZWVwIGl0IGluIGNhc2UKIC8v
IHNvbWUgY2xpZW50cyBzdGlsbCBkZXBlbmQgb24gaXQuCi0jZGVmaW5lIEdURVNUX0hBU19TVERf
U1RSSU5HIDEKKyMgZGVmaW5lIEdURVNUX0hBU19TVERfU1RSSU5HIDEKICNlbGlmICFHVEVTVF9I
QVNfU1REX1NUUklORwogLy8gVGhlIHVzZXIgdG9sZCB1cyB0aGF0IDo6c3RkOjpzdHJpbmcgaXNu
J3QgYXZhaWxhYmxlLgotI2Vycm9yICJHb29nbGUgVGVzdCBjYW5ub3QgYmUgdXNlZCB3aGVyZSA6
OnN0ZDo6c3RyaW5nIGlzbid0IGF2YWlsYWJsZS4iCisjIGVycm9yICI6OnN0ZDo6c3RyaW5nIGlz
bid0IGF2YWlsYWJsZS4iCiAjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0hBU19TVERfU1RSSU5H
KQogCiAjaWZuZGVmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0vLyBUaGUgdXNlciBkaWRuJ3Qg
dGVsbCB1cyB3aGV0aGVyIDo6c3RyaW5nIGlzIGF2YWlsYWJsZSwgc28gd2UgbmVlZAotLy8gdG8g
ZmlndXJlIGl0IG91dC4KLQotI2RlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORyAwCi0KKyMg
ZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HIDAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0dM
T0JBTF9TVFJJTkcKIAogI2lmbmRlZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKIC8vIFRoZSB1c2Vy
IGRpZG4ndCB0ZWxsIHVzIHdoZXRoZXIgOjpzdGQ6OndzdHJpbmcgaXMgYXZhaWxhYmxlLCBzbyB3
ZSBuZWVkCiAvLyB0byBmaWd1cmUgaXQgb3V0LgotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHVz
ZXMgYXV0b2NvbmYgdG8gZGV0ZWN0IHdoZXRoZXIgOjpzdGQ6OndzdHJpbmcKKy8vIEZJWE1FOiB1
c2VzIGF1dG9jb25mIHRvIGRldGVjdCB3aGV0aGVyIDo6c3RkOjp3c3RyaW5nCiAvLyAgIGlzIGF2
YWlsYWJsZS4KIAotLy8gQ3lnd2luIDEuNSBhbmQgYmVsb3cgZG9lc24ndCBzdXBwb3J0IDo6c3Rk
Ojp3c3RyaW5nLgotLy8gQ3lnd2luIDEuNyBtaWdodCBhZGQgd3N0cmluZyBzdXBwb3J0OyB0aGlz
IHNob3VsZCBiZSB1cGRhdGVkIHdoZW4gY2xlYXIuCi0vLyBTb2xhcmlzJyBsaWJjKysgZG9lc24n
dCBzdXBwb3J0IGl0IGVpdGhlci4KLSNkZWZpbmUgR1RFU1RfSEFTX1NURF9XU1RSSU5HICghKEdU
RVNUX09TX0NZR1dJTiB8fCBHVEVTVF9PU19TT0xBUklTKSkKKy8vIEN5Z3dpbiAxLjcgYW5kIGJl
bG93IGRvZXNuJ3Qgc3VwcG9ydCA6OnN0ZDo6d3N0cmluZy4KKy8vIFNvbGFyaXMnIGxpYmMrKyBk
b2Vzbid0IHN1cHBvcnQgaXQgZWl0aGVyLiAgQW5kcm9pZCBoYXMKKy8vIG5vIHN1cHBvcnQgZm9y
IGl0IGF0IGxlYXN0IGFzIHJlY2VudCBhcyBGcm95byAoMi4yKS4KKyMgZGVmaW5lIEdURVNUX0hB
U19TVERfV1NUUklORyBcCisgICAgKCEoR1RFU1RfT1NfTElOVVhfQU5EUk9JRCB8fCBHVEVTVF9P
U19DWUdXSU4gfHwgR1RFU1RfT1NfU09MQVJJUykpCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1NU
RF9XU1RSSU5HCiAKICNpZm5kZWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCiAvLyBUaGUgdXNl
ciBkaWRuJ3QgdGVsbCB1cyB3aGV0aGVyIDo6d3N0cmluZyBpcyBhdmFpbGFibGUsIHNvIHdlIG5l
ZWQKIC8vIHRvIGZpZ3VyZSBpdCBvdXQuCi0jZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfV1NUUklO
RyBcCisjIGRlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcgXAogICAgIChHVEVTVF9IQVNf
U1REX1dTVFJJTkcgJiYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcpCiAjZW5kaWYgIC8vIEdURVNU
X0hBU19HTE9CQUxfV1NUUklORwogCkBAIC0zNDQsMTMzICs1NzAsMjEyIEBACiAvLyBUaGUgdXNl
ciBkaWRuJ3QgdGVsbCB1cyB3aGV0aGVyIFJUVEkgaXMgZW5hYmxlZCwgc28gd2UgbmVlZCB0bwog
Ly8gZmlndXJlIGl0IG91dC4KIAotI2lmZGVmIF9NU0NfVkVSCisjIGlmZGVmIF9NU0NfVkVSCiAK
LSNpZmRlZiBfQ1BQUlRUSSAgLy8gTVNWQyBkZWZpbmVzIHRoaXMgbWFjcm8gaWZmIFJUVEkgaXMg
ZW5hYmxlZC4KLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQotI2Vsc2UKLSNkZWZpbmUgR1RFU1Rf
SEFTX1JUVEkgMAotI2VuZGlmCisjICBpZmRlZiBfQ1BQUlRUSSAgLy8gTVNWQyBkZWZpbmVzIHRo
aXMgbWFjcm8gaWZmIFJUVEkgaXMgZW5hYmxlZC4KKyMgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkg
MQorIyAgZWxzZQorIyAgIGRlZmluZSBHVEVTVF9IQVNfUlRUSSAwCisjICBlbmRpZgogCiAvLyBT
dGFydGluZyB3aXRoIHZlcnNpb24gNC4zLjIsIGdjYyBkZWZpbmVzIF9fR1hYX1JUVEkgaWZmIFJU
VEkgaXMgZW5hYmxlZC4KLSNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIChHVEVTVF9HQ0NfVkVS
XyA+PSA0MDMwMikKLQotI2lmZGVmIF9fR1hYX1JUVEkKLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkg
MQotI2Vsc2UKLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAotI2VuZGlmICAvLyBfX0dYWF9SVFRJ
CisjIGVsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMzAyKQor
CisjICBpZmRlZiBfX0dYWF9SVFRJCisvLyBXaGVuIGJ1aWxkaW5nIGFnYWluc3QgU1RMcG9ydCB3
aXRoIHRoZSBBbmRyb2lkIE5ESyBhbmQgd2l0aAorLy8gLWZydHRpIC1mbm8tZXhjZXB0aW9ucywg
dGhlIGJ1aWxkIGZhaWxzIGF0IGxpbmsgdGltZSB3aXRoIHVuZGVmaW5lZAorLy8gcmVmZXJlbmNl
cyB0byBfX2N4YV9iYWRfdHlwZWlkLiBOb3RlIHN1cmUgaWYgU1RMIG9yIHRvb2xjaGFpbiBidWcs
CisvLyBzbyBkaXNhYmxlIFJUVEkgd2hlbiBkZXRlY3RlZC4KKyMgICBpZiBHVEVTVF9PU19MSU5V
WF9BTkRST0lEICYmIGRlZmluZWQoX1NUTFBPUlRfTUFKT1IpICYmIFwKKyAgICAgICAhZGVmaW5l
ZChfX0VYQ0VQVElPTlMpCisjICAgIGRlZmluZSBHVEVTVF9IQVNfUlRUSSAwCisjICAgZWxzZQor
IyAgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQorIyAgIGVuZGlmICAvLyBHVEVTVF9PU19MSU5V
WF9BTkRST0lEICYmIF9fU1RMUE9SVF9NQUpPUiAmJiAhX19FWENFUFRJT05TCisjICBlbHNlCisj
ICAgZGVmaW5lIEdURVNUX0hBU19SVFRJIDAKKyMgIGVuZGlmICAvLyBfX0dYWF9SVFRJCisKKy8v
IENsYW5nIGRlZmluZXMgX19HWFhfUlRUSSBzdGFydGluZyB3aXRoIHZlcnNpb24gMy4wLCBidXQg
aXRzIG1hbnVhbCByZWNvbW1lbmRzCisvLyB1c2luZyBoYXNfZmVhdHVyZSBpbnN0ZWFkLiBoYXNf
ZmVhdHVyZShjeHhfcnR0aSkgaXMgc3VwcG9ydGVkIHNpbmNlIDIuNywgdGhlCisvLyBmaXJzdCB2
ZXJzaW9uIHdpdGggQysrIHN1cHBvcnQuCisjIGVsaWYgZGVmaW5lZChfX2NsYW5nX18pCisKKyMg
IGRlZmluZSBHVEVTVF9IQVNfUlRUSSBfX2hhc19mZWF0dXJlKGN4eF9ydHRpKQogCiAvLyBTdGFy
dGluZyB3aXRoIHZlcnNpb24gOS4wIElCTSBWaXN1YWwgQWdlIGRlZmluZXMgX19SVFRJX0FMTF9f
IHRvIDEgaWYKIC8vIGJvdGggdGhlIHR5cGVpZCBhbmQgZHluYW1pY19jYXN0IGZlYXR1cmVzIGFy
ZSBwcmVzZW50LgotI2VsaWYgZGVmaW5lZChfX0lCTUNQUF9fKSAmJiAoX19JQk1DUFBfXyA+PSA5
MDApCisjIGVsaWYgZGVmaW5lZChfX0lCTUNQUF9fKSAmJiAoX19JQk1DUFBfXyA+PSA5MDApCiAK
LSNpZmRlZiBfX1JUVElfQUxMX18KLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQotI2Vsc2UKLSNk
ZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAotI2VuZGlmCisjICBpZmRlZiBfX1JUVElfQUxMX18KKyMg
ICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQorIyAgZWxzZQorIyAgIGRlZmluZSBHVEVTVF9IQVNf
UlRUSSAwCisjICBlbmRpZgogCi0jZWxzZQorIyBlbHNlCiAKIC8vIEZvciBhbGwgb3RoZXIgY29t
cGlsZXJzLCB3ZSBhc3N1bWUgUlRUSSBpcyBlbmFibGVkLgotI2RlZmluZSBHVEVTVF9IQVNfUlRU
SSAxCisjICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQogCi0jZW5kaWYgIC8vIF9NU0NfVkVSCisj
IGVuZGlmICAvLyBfTVNDX1ZFUgogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19SVFRJCiAKIC8vIEl0
J3MgdGhpcyBoZWFkZXIncyByZXNwb25zaWJpbGl0eSB0byAjaW5jbHVkZSA8dHlwZWluZm8+IHdo
ZW4gUlRUSQogLy8gaXMgZW5hYmxlZC4KICNpZiBHVEVTVF9IQVNfUlRUSQotI2luY2x1ZGUgPHR5
cGVpbmZvPgorIyBpbmNsdWRlIDx0eXBlaW5mbz4KICNlbmRpZgogCiAvLyBEZXRlcm1pbmVzIHdo
ZXRoZXIgR29vZ2xlIFRlc3QgY2FuIHVzZSB0aGUgcHRocmVhZHMgbGlicmFyeS4KICNpZm5kZWYg
R1RFU1RfSEFTX1BUSFJFQUQKLS8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIGV4cGxpY2l0bHks
IHNvIHdlIGFzc3VtZSBwdGhyZWFkcyBzdXBwb3J0IGlzCi0vLyBhdmFpbGFibGUgb24gTGludXgg
YW5kIE1hYy4KKy8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIGV4cGxpY2l0bHksIHNvIHdlIG1h
a2UgcmVhc29uYWJsZSBhc3N1bXB0aW9ucyBhYm91dAorLy8gd2hpY2ggcGxhdGZvcm1zIGhhdmUg
cHRocmVhZHMgc3VwcG9ydC4KIC8vCiAvLyBUbyBkaXNhYmxlIHRocmVhZGluZyBzdXBwb3J0IGlu
IEdvb2dsZSBUZXN0LCBhZGQgLURHVEVTVF9IQVNfUFRIUkVBRD0wCiAvLyB0byB5b3VyIGNvbXBp
bGVyIGZsYWdzLgotI2RlZmluZSBHVEVTVF9IQVNfUFRIUkVBRCAoR1RFU1RfT1NfTElOVVggfHwg
R1RFU1RfT1NfRlJFRUJTRCB8fCBHVEVTVF9PU19IVVJEIHx8IEdURVNUX09TX01BQykKKyNkZWZp
bmUgR1RFU1RfSEFTX1BUSFJFQUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgIChHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19NQUMgfHwgR1RFU1RfT1Nf
SFBVWCB8fCBHVEVTVF9PU19RTlggfHwgXAorICAgR1RFU1RfT1NfRlJFRUJTRCB8fCBHVEVTVF9P
U19OQUNMIHx8IEdURVNUX09TX05FVEJTRCB8fCBHVEVTVF9PU19GVUNIU0lBKQogI2VuZGlmICAv
LyBHVEVTVF9IQVNfUFRIUkVBRAogCisjaWYgR1RFU1RfSEFTX1BUSFJFQUQKKy8vIGd0ZXN0LXBv
cnQuaCBndWFyYW50ZWVzIHRvICNpbmNsdWRlIDxwdGhyZWFkLmg+IHdoZW4gR1RFU1RfSEFTX1BU
SFJFQUQgaXMKKy8vIHRydWUuCisjIGluY2x1ZGUgPHB0aHJlYWQuaD4gIC8vIE5PTElOVAorCisv
LyBGb3IgdGltZXNwZWMgYW5kIG5hbm9zbGVlcCwgdXNlZCBiZWxvdy4KKyMgaW5jbHVkZSA8dGlt
ZS5oPiAgLy8gTk9MSU5UCisjZW5kaWYKKworLy8gRGV0ZXJtaW5lcyBpZiBoYXNoX21hcC9oYXNo
X3NldCBhcmUgYXZhaWxhYmxlLgorLy8gT25seSB1c2VkIGZvciB0ZXN0aW5nIGFnYWluc3QgdGhv
c2UgY29udGFpbmVycy4KKyNpZiAhZGVmaW5lZChHVEVTVF9IQVNfSEFTSF9NQVBfKQorIyBpZiBk
ZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPCAxOTAwKQorIyAgZGVmaW5lIEdURVNUX0hB
U19IQVNIX01BUF8gMSAgLy8gSW5kaWNhdGVzIHRoYXQgaGFzaF9tYXAgaXMgYXZhaWxhYmxlLgor
IyAgZGVmaW5lIEdURVNUX0hBU19IQVNIX1NFVF8gMSAgLy8gSW5kaWNhdGVzIHRoYXQgaGFzaF9z
ZXQgaXMgYXZhaWxhYmxlLgorIyBlbmRpZiAgLy8gX01TQ19WRVIKKyNlbmRpZiAgLy8gIWRlZmlu
ZWQoR1RFU1RfSEFTX0hBU0hfTUFQXykKKwogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIEdvb2dsZSBU
ZXN0IGNhbiB1c2UgdHIxL3R1cGxlLiAgWW91IGNhbiBkZWZpbmUKIC8vIHRoaXMgbWFjcm8gdG8g
MCB0byBwcmV2ZW50IEdvb2dsZSBUZXN0IGZyb20gdXNpbmcgdHVwbGUgKGFueQogLy8gZmVhdHVy
ZSBkZXBlbmRpbmcgb24gdHVwbGUgd2l0aCBiZSBkaXNhYmxlZCBpbiB0aGlzIG1vZGUpLgogI2lm
bmRlZiBHVEVTVF9IQVNfVFIxX1RVUExFCisjIGlmIEdURVNUX09TX0xJTlVYX0FORFJPSUQgJiYg
ZGVmaW5lZChfU1RMUE9SVF9NQUpPUikKKy8vIFNUTHBvcnQsIHByb3ZpZGVkIHdpdGggdGhlIEFu
ZHJvaWQgTkRLLCBoYXMgbmVpdGhlciA8dHIxL3R1cGxlPiBvciA8dHVwbGU+LgorIyAgZGVmaW5l
IEdURVNUX0hBU19UUjFfVFVQTEUgMAorIyBlbGlmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVND
X1ZFUiA+PSAxOTEwKQorLy8gUHJldmVudCBgd2FybmluZyBDNDk5NjogJ3N0ZDo6dHIxJzogd2Fy
bmluZyBTVEw0MDAyOgorLy8gVGhlIG5vbi1TdGFuZGFyZCBzdGQ6OnRyMSBuYW1lc3BhY2UgYW5k
IFRSMS1vbmx5IG1hY2hpbmVyeQorLy8gYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgUkVNT1ZF
RC5gCisjICBkZWZpbmUgR1RFU1RfSEFTX1RSMV9UVVBMRSAwCisjIGVsaWYgR1RFU1RfTEFOR19D
WFgxMSAmJiBkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikKKy8vIGxpYmMrKyBkb2Vzbid0IHN1cHBv
cnQgVFIxLgorIyAgZGVmaW5lIEdURVNUX0hBU19UUjFfVFVQTEUgMAorIyBlbHNlCiAvLyBUaGUg
dXNlciBkaWRuJ3QgdGVsbCB1cyBub3QgdG8gZG8gaXQsIHNvIHdlIGFzc3VtZSBpdCdzIE9LLgot
I2RlZmluZSBHVEVTVF9IQVNfVFIxX1RVUExFIDEKKyMgIGRlZmluZSBHVEVTVF9IQVNfVFIxX1RV
UExFIDEKKyMgZW5kaWYKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRQogCiAvLyBEZXRl
cm1pbmVzIHdoZXRoZXIgR29vZ2xlIFRlc3QncyBvd24gdHIxIHR1cGxlIGltcGxlbWVudGF0aW9u
CiAvLyBzaG91bGQgYmUgdXNlZC4KICNpZm5kZWYgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUKKy8v
IFdlIHVzZSBvdXIgb3duIHR1cGxlIGltcGxlbWVudGF0aW9uIG9uIFN5bWJpYW4uCisjIGlmIEdU
RVNUX09TX1NZTUJJQU4KKyMgIGRlZmluZSBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSAxCisjIGVs
c2UKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzLCBzbyB3ZSBuZWVkIHRvIGZpZ3VyZSBpdCBv
dXQuCiAKIC8vIFdlIHVzZSBvdXIgb3duIFRSMSB0dXBsZSBpZiB3ZSBhcmVuJ3Qgc3VyZSB0aGUg
dXNlciBoYXMgYW4KLS8vIGltcGxlbWVudGF0aW9uIG9mIGl0IGFscmVhZHkuICBBdCB0aGlzIHRp
bWUsIEdDQyA0LjAuMCsgYW5kIE1TVkMKLS8vIDIwMTAgYXJlIHRoZSBvbmx5IG1haW5zdHJlYW0g
Y29tcGlsZXJzIHRoYXQgY29tZSB3aXRoIGEgVFIxIHR1cGxlCi0vLyBpbXBsZW1lbnRhdGlvbi4g
IE5WSURJQSdzIENVREEgTlZDQyBjb21waWxlciBwcmV0ZW5kcyB0byBiZSBHQ0MgYnkKLS8vIGRl
ZmluaW5nIF9fR05VQ19fIGFuZCBmcmllbmRzLCBidXQgY2Fubm90IGNvbXBpbGUgR0NDJ3MgdHVw
bGUKLS8vIGltcGxlbWVudGF0aW9uLiAgTVNWQyAyMDA4ICg5LjApIHByb3ZpZGVzIFRSMSB0dXBs
ZSBpbiBhIDMyMyBNQgotLy8gRmVhdHVyZSBQYWNrIGRvd25sb2FkLCB3aGljaCB3ZSBjYW5ub3Qg
YXNzdW1lIHRoZSB1c2VyIGhhcy4KLSNpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQo
X19DVURBQ0NfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMDAwKSkgXAotICAgIHx8IF9NU0Nf
VkVSID49IDE2MDAKLSNkZWZpbmUgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgMAotI2Vsc2UKLSNk
ZWZpbmUgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgMQotI2VuZGlmCi0KKy8vIGltcGxlbWVudGF0
aW9uIG9mIGl0IGFscmVhZHkuICBBdCB0aGlzIHRpbWUsIGxpYnN0ZGMrKyA0LjAuMCsgYW5kCisv
LyBNU1ZDIDIwMTAgYXJlIHRoZSBvbmx5IG1haW5zdHJlYW0gc3RhbmRhcmQgbGlicmFyaWVzIHRo
YXQgY29tZQorLy8gd2l0aCBhIFRSMSB0dXBsZSBpbXBsZW1lbnRhdGlvbi4gIE5WSURJQSdzIENV
REEgTlZDQyBjb21waWxlcgorLy8gcHJldGVuZHMgdG8gYmUgR0NDIGJ5IGRlZmluaW5nIF9fR05V
Q19fIGFuZCBmcmllbmRzLCBidXQgY2Fubm90CisvLyBjb21waWxlIEdDQydzIHR1cGxlIGltcGxl
bWVudGF0aW9uLiAgTVNWQyAyMDA4ICg5LjApIHByb3ZpZGVzIFRSMQorLy8gdHVwbGUgaW4gYSAz
MjMgTUIgRmVhdHVyZSBQYWNrIGRvd25sb2FkLCB3aGljaCB3ZSBjYW5ub3QgYXNzdW1lIHRoZQor
Ly8gdXNlciBoYXMuICBRTlgncyBRQ0MgY29tcGlsZXIgaXMgYSBtb2RpZmllZCBHQ0MgYnV0IGl0
IGRvZXNuJ3QKKy8vIHN1cHBvcnQgVFIxIHR1cGxlLiAgbGliYysrIG9ubHkgcHJvdmlkZXMgc3Rk
Ojp0dXBsZSwgaW4gQysrMTEgbW9kZSwKKy8vIGFuZCBpdCBjYW4gYmUgdXNlZCB3aXRoIHNvbWUg
Y29tcGlsZXJzIHRoYXQgZGVmaW5lIF9fR05VQ19fLgorIyBpZiAoZGVmaW5lZChfX0dOVUNfXykg
JiYgIWRlZmluZWQoX19DVURBQ0NfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMDAwKSBcCisg
ICAgICAmJiAhR1RFU1RfT1NfUU5YICYmICFkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikpIFwKKyAg
ICAgIHx8IChfTVNDX1ZFUiA+PSAxNjAwICYmIF9NU0NfVkVSIDwgMTkwMCkKKyMgIGRlZmluZSBH
VEVTVF9FTlZfSEFTX1RSMV9UVVBMRV8gMQorIyBlbmRpZgorCisvLyBDKysxMSBzcGVjaWZpZXMg
dGhhdCA8dHVwbGU+IHByb3ZpZGVzIHN0ZDo6dHVwbGUuIFVzZSB0aGF0IGlmIGd0ZXN0IGlzIHVz
ZWQKKy8vIGluIEMrKzExIG1vZGUgYW5kIGxpYnN0ZGMrKyBpc24ndCB2ZXJ5IG9sZCAoYmluYXJp
ZXMgdGFyZ2V0aW5nIE9TIFggMTAuNgorLy8gY2FuIGJ1aWxkIHdpdGggY2xhbmcgYnV0IG5lZWQg
dG8gdXNlIGdjYzQuMidzIGxpYnN0ZGMrKykuCisjIGlmIEdURVNUX0xBTkdfQ1hYMTEgJiYgKCFk
ZWZpbmVkKF9fR0xJQkNYWF9fKSB8fCBfX0dMSUJDWFhfXyA+IDIwMTEwMzI1KQorIyAgZGVmaW5l
IEdURVNUX0VOVl9IQVNfU1REX1RVUExFXyAxCisjIGVuZGlmCisKKyMgaWYgR1RFU1RfRU5WX0hB
U19UUjFfVFVQTEVfIHx8IEdURVNUX0VOVl9IQVNfU1REX1RVUExFXworIyAgZGVmaW5lIEdURVNU
X1VTRV9PV05fVFIxX1RVUExFIDAKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX1VTRV9PV05fVFIx
X1RVUExFIDEKKyMgZW5kaWYKKyMgZW5kaWYgIC8vIEdURVNUX09TX1NZTUJJQU4KICNlbmRpZiAg
Ly8gR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUKIAotLy8gVG8gYXZvaWQgY29uZGl0aW9uYWwgY29t
cGlsYXRpb24gZXZlcnl3aGVyZSwgd2UgbWFrZSBpdAotLy8gZ3Rlc3QtcG9ydC5oJ3MgcmVzcG9u
c2liaWxpdHkgdG8gI2luY2x1ZGUgdGhlIGhlYWRlciBpbXBsZW1lbnRpbmcKLS8vIHRyMS90dXBs
ZS4KKy8vIFRvIGF2b2lkIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHdlIG1ha2UgaXQgZ3Rlc3Qt
cG9ydC5oJ3MgcmVzcG9uc2liaWxpdHkKKy8vIHRvICNpbmNsdWRlIHRoZSBoZWFkZXIgaW1wbGVt
ZW50aW5nIHR1cGxlLgorI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCisjIGluY2x1ZGUgPHR1cGxl
PiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydAorIyBkZWZpbmUgR1RFU1RfVFVQTEVfTkFNRVNQQUNF
XyA6OnN0ZAorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1RVUExFXworCisvLyBXZSBpbmNsdWRl
IHRyMTo6dHVwbGUgZXZlbiBpZiBzdGQ6OnR1cGxlIGlzIGF2YWlsYWJsZSB0byBkZWZpbmUgcHJp
bnRlcnMgZm9yCisvLyB0aGVtLgogI2lmIEdURVNUX0hBU19UUjFfVFVQTEUKKyMgaWZuZGVmIEdU
RVNUX1RVUExFX05BTUVTUEFDRV8KKyMgIGRlZmluZSBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfIDo6
c3RkOjp0cjEKKyMgZW5kaWYgIC8vIEdURVNUX1RVUExFX05BTUVTUEFDRV8KIAotI2lmIEdURVNU
X1VTRV9PV05fVFIxX1RVUExFCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUu
aD4KLSNlbGlmIEdURVNUX09TX1NZTUJJQU4KKyMgaWYgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUK
KyMgIGluY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgiICAvLyBJV1lVIHByYWdt
YTogZXhwb3J0ICAvLyBOT0xJTlQKKyMgZWxpZiBHVEVTVF9PU19TWU1CSUFOCiAKIC8vIE9uIFN5
bWJpYW4sIEJPT1NUX0hBU19UUjFfVFVQTEUgY2F1c2VzIEJvb3N0J3MgVFIxIHR1cGxlIGxpYnJh
cnkgdG8KIC8vIHVzZSBTVExwb3J0J3MgdHVwbGUgaW1wbGVtZW50YXRpb24sIHdoaWNoIHVuZm9y
dHVuYXRlbHkgZG9lc24ndAogLy8gd29yayBhcyB0aGUgY29weSBvZiBTVExwb3J0IGRpc3RyaWJ1
dGVkIHdpdGggU3ltYmlhbiBpcyBpbmNvbXBsZXRlLgogLy8gQnkgbWFraW5nIHN1cmUgQk9PU1Rf
SEFTX1RSMV9UVVBMRSBpcyB1bmRlZmluZWQsIHdlIGZvcmNlIEJvb3N0IHRvCiAvLyB1c2UgaXRz
IG93biB0dXBsZSBpbXBsZW1lbnRhdGlvbi4KLSNpZmRlZiBCT09TVF9IQVNfVFIxX1RVUExFCi0j
dW5kZWYgQk9PU1RfSEFTX1RSMV9UVVBMRQotI2VuZGlmICAvLyBCT09TVF9IQVNfVFIxX1RVUExF
CisjICBpZmRlZiBCT09TVF9IQVNfVFIxX1RVUExFCisjICAgdW5kZWYgQk9PU1RfSEFTX1RSMV9U
VVBMRQorIyAgZW5kaWYgIC8vIEJPT1NUX0hBU19UUjFfVFVQTEUKIAogLy8gVGhpcyBwcmV2ZW50
cyA8Ym9vc3QvdHIxL2RldGFpbC9jb25maWcuaHBwPiwgd2hpY2ggZGVmaW5lcwogLy8gQk9PU1Rf
SEFTX1RSMV9UVVBMRSwgZnJvbSBiZWluZyAjaW5jbHVkZWQgYnkgQm9vc3QncyA8dHVwbGU+Lgot
I2RlZmluZSBCT09TVF9UUjFfREVUQUlMX0NPTkZJR19IUFBfSU5DTFVERUQKLSNpbmNsdWRlIDx0
dXBsZT4KKyMgIGRlZmluZSBCT09TVF9UUjFfREVUQUlMX0NPTkZJR19IUFBfSU5DTFVERUQKKyMg
IGluY2x1ZGUgPHR1cGxlPiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydCAgLy8gTk9MSU5UCiAKLSNl
bGlmIGRlZmluZWQoX19HTlVDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSA0MDAwMCkKKyMgZWxp
ZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0gNDAwMDApCiAvLyBHQ0Mg
NC4wKyBpbXBsZW1lbnRzIHRyMS90dXBsZSBpbiB0aGUgPHRyMS90dXBsZT4gaGVhZGVyLiAgVGhp
cyBkb2VzCiAvLyBub3QgY29uZm9ybSB0byB0aGUgVFIxIHNwZWMsIHdoaWNoIHJlcXVpcmVzIHRo
ZSBoZWFkZXIgdG8gYmUgPHR1cGxlPi4KIAotI2lmICFHVEVTVF9IQVNfUlRUSSAmJiBHVEVTVF9H
Q0NfVkVSXyA8IDQwMzAyCisjICBpZiAhR1RFU1RfSEFTX1JUVEkgJiYgR1RFU1RfR0NDX1ZFUl8g
PCA0MDMwMgogLy8gVW50aWwgdmVyc2lvbiA0LjMuMiwgZ2NjIGhhcyBhIGJ1ZyB0aGF0IGNhdXNl
cyA8dHIxL2Z1bmN0aW9uYWw+LAogLy8gd2hpY2ggaXMgI2luY2x1ZGVkIGJ5IDx0cjEvdHVwbGU+
LCB0byBub3QgY29tcGlsZSB3aGVuIFJUVEkgaXMKIC8vIGRpc2FibGVkLiAgX1RSMV9GVU5DVElP
TkFMIGlzIHRoZSBoZWFkZXIgZ3VhcmQgZm9yCi0vLyA8dHIxL2Z1bmN0aW9uYWw+LiAgSGVuY2Ug
dGhlIGZvbGxvd2luZyAjZGVmaW5lIGlzIGEgaGFjayB0byBwcmV2ZW50CisvLyA8dHIxL2Z1bmN0
aW9uYWw+LiAgSGVuY2UgdGhlIGZvbGxvd2luZyAjZGVmaW5lIGlzIHVzZWQgdG8gcHJldmVudAog
Ly8gPHRyMS9mdW5jdGlvbmFsPiBmcm9tIGJlaW5nIGluY2x1ZGVkLgotI2RlZmluZSBfVFIxX0ZV
TkNUSU9OQUwgMQotI2luY2x1ZGUgPHRyMS90dXBsZT4KLSN1bmRlZiBfVFIxX0ZVTkNUSU9OQUwg
IC8vIEFsbG93cyB0aGUgdXNlciB0byAjaW5jbHVkZQotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gPHRyMS9mdW5jdGlvbmFsPiBpZiBoZSBjaG9vc2VzIHRvLgotI2Vsc2UKLSNpbmNsdWRlIDx0
cjEvdHVwbGU+ICAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gIUdURVNUX0hBU19SVFRJICYmIEdURVNU
X0dDQ19WRVJfIDwgNDAzMDIKLQotI2Vsc2UKLS8vIElmIHRoZSBjb21waWxlciBpcyBub3QgR0ND
IDQuMCssIHdlIGFzc3VtZSB0aGUgdXNlciBpcyB1c2luZyBhCi0vLyBzcGVjLWNvbmZvcm1pbmcg
VFIxIGltcGxlbWVudGF0aW9uLgotI2luY2x1ZGUgPHR1cGxlPiAgLy8gTk9MSU5UCi0jZW5kaWYg
IC8vIEdURVNUX1VTRV9PV05fVFIxX1RVUExFCisjICAgZGVmaW5lIF9UUjFfRlVOQ1RJT05BTCAx
CisjICAgaW5jbHVkZSA8dHIxL3R1cGxlPgorIyAgIHVuZGVmIF9UUjFfRlVOQ1RJT05BTCAgLy8g
QWxsb3dzIHRoZSB1c2VyIHRvICNpbmNsdWRlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyA8
dHIxL2Z1bmN0aW9uYWw+IGlmIHRoZXkgY2hvb3NlIHRvLgorIyAgZWxzZQorIyAgIGluY2x1ZGUg
PHRyMS90dXBsZT4gIC8vIE5PTElOVAorIyAgZW5kaWYgIC8vICFHVEVTVF9IQVNfUlRUSSAmJiBH
VEVTVF9HQ0NfVkVSXyA8IDQwMzAyCisKKy8vIFZTIDIwMTAgbm93IGhhcyB0cjEgc3VwcG9ydC4K
KyMgZWxpZiBfTVNDX1ZFUiA+PSAxNjAwCisjICBpbmNsdWRlIDx0dXBsZT4gIC8vIElXWVUgcHJh
Z21hOiBleHBvcnQgIC8vIE5PTElOVAorCisjIGVsc2UgIC8vIEdURVNUX1VTRV9PV05fVFIxX1RV
UExFCisjICBpbmNsdWRlIDx0cjEvdHVwbGU+ICAvLyBJV1lVIHByYWdtYTogZXhwb3J0ICAvLyBO
T0xJTlQKKyMgZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fVFIxX1RVUExFCiAKICNlbmRpZiAgLy8g
R1RFU1RfSEFTX1RSMV9UVVBMRQogCkBAIC00ODEsNTkgKzc4Niw4MCBAQAogI2lmbmRlZiBHVEVT
VF9IQVNfQ0xPTkUKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzLCBzbyB3ZSBuZWVkIHRvIGZp
Z3VyZSBpdCBvdXQuCiAKLSNpZiBHVEVTVF9PU19MSU5VWCAmJiAhZGVmaW5lZChfX2lhNjRfXykK
LSNkZWZpbmUgR1RFU1RfSEFTX0NMT05FIDEKLSNlbHNlCi0jZGVmaW5lIEdURVNUX0hBU19DTE9O
RSAwCi0jZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYICYmICFkZWZpbmVkKF9faWE2NF9fKQorIyBp
ZiBHVEVTVF9PU19MSU5VWCAmJiAhZGVmaW5lZChfX2lhNjRfXykKKyMgIGlmIEdURVNUX09TX0xJ
TlVYX0FORFJPSUQKKy8vIE9uIEFuZHJvaWQsIGNsb25lKCkgYmVjYW1lIGF2YWlsYWJsZSBhdCBk
aWZmZXJlbnQgQVBJIGxldmVscyBmb3IgZWFjaCAzMi1iaXQKKy8vIGFyY2hpdGVjdHVyZS4KKyMg
ICAgaWYgZGVmaW5lZChfX0xQNjRfXykgfHwgXAorICAgICAgICAoZGVmaW5lZChfX2FybV9fKSAm
JiBfX0FORFJPSURfQVBJX18gPj0gOSkgfHwgXAorICAgICAgICAoZGVmaW5lZChfX21pcHNfXykg
JiYgX19BTkRST0lEX0FQSV9fID49IDEyKSB8fCBcCisgICAgICAgIChkZWZpbmVkKF9faTM4Nl9f
KSAmJiBfX0FORFJPSURfQVBJX18gPj0gMTcpCisjICAgICBkZWZpbmUgR1RFU1RfSEFTX0NMT05F
IDEKKyMgICAgZWxzZQorIyAgICAgZGVmaW5lIEdURVNUX0hBU19DTE9ORSAwCisjICAgIGVuZGlm
CisjICBlbHNlCisjICAgZGVmaW5lIEdURVNUX0hBU19DTE9ORSAxCisjICBlbmRpZgorIyBlbHNl
CisjICBkZWZpbmUgR1RFU1RfSEFTX0NMT05FIDAKKyMgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVY
ICYmICFkZWZpbmVkKF9faWE2NF9fKQogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORQogCiAv
LyBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc3VwcG9ydCBzdHJlYW0gcmVkaXJlY3Rpb24uIFRoaXMg
aXMgdXNlZCB0byB0ZXN0CiAvLyBvdXRwdXQgY29ycmVjdG5lc3MgYW5kIHRvIGltcGxlbWVudCBk
ZWF0aCB0ZXN0cy4KLSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZ
TUJJQU4KLSNkZWZpbmUgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8gMQotI2VuZGlmICAv
LyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZTUJJQU4KKyNpZm5kZWYg
R1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgorLy8gQnkgZGVmYXVsdCwgd2UgYXNzdW1lIHRo
YXQgc3RyZWFtIHJlZGlyZWN0aW9uIGlzIHN1cHBvcnRlZCBvbiBhbGwKKy8vIHBsYXRmb3JtcyBl
eGNlcHQga25vd24gbW9iaWxlIG9uZXMuCisjIGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8
IEdURVNUX09TX1NZTUJJQU4gfHwgXAorICAgIEdURVNUX09TX1dJTkRPV1NfUEhPTkUgfHwgR1RF
U1RfT1NfV0lORE9XU19SVAorIyAgZGVmaW5lIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04g
MAorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTiAxCisjIGVu
ZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZTUJJQU4KKyNl
bmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgogCiAvLyBEZXRlcm1pbmVzIHdo
ZXRoZXIgdG8gc3VwcG9ydCBkZWF0aCB0ZXN0cy4KIC8vIEdvb2dsZSBUZXN0IGRvZXMgbm90IHN1
cHBvcnQgZGVhdGggdGVzdHMgZm9yIFZDIDcuMSBhbmQgZWFybGllciBhcwogLy8gYWJvcnQoKSBp
biBhIFZDIDcuMSBhcHBsaWNhdGlvbiBjb21waWxlZCBhcyBHVUkgaW4gZGVidWcgY29uZmlnCiAv
LyBwb3BzIHVwIGEgZGlhbG9nIHdpbmRvdyB0aGF0IGNhbm5vdCBiZSBzdXBwcmVzc2VkIHByb2dy
YW1tYXRpY2FsbHkuCi0jaWYgKEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX0ZSRUVCU0QgfHwg
R1RFU1RfT1NfSFVSRCB8fCBcCi0gICAgIEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19DWUdXSU4g
fHwgR1RFU1RfT1NfU09MQVJJUyB8fCBcCi0gICAgIChHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1Ag
JiYgX01TQ19WRVIgPj0gMTQwMCkgfHwgXAotICAgICBHVEVTVF9PU19XSU5ET1dTX01JTkdXIHx8
IEdURVNUX09TX0FJWCkKLSNkZWZpbmUgR1RFU1RfSEFTX0RFQVRIX1RFU1QgMQotI2luY2x1ZGUg
PHZlY3Rvcj4gIC8vIE5PTElOVAorI2lmIChHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19DWUdX
SU4gfHwgR1RFU1RfT1NfU09MQVJJUyB8fCAgIFwKKyAgICAgKEdURVNUX09TX01BQyAmJiAhR1RF
U1RfT1NfSU9TKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIChHVEVTVF9PU19X
SU5ET1dTX0RFU0tUT1AgJiYgX01TQ19WRVIgPj0gMTQwMCkgfHwgICAgICAgICAgXAorICAgICBH
VEVTVF9PU19XSU5ET1dTX01JTkdXIHx8IEdURVNUX09TX0FJWCB8fCBHVEVTVF9PU19IUFVYIHx8
IFwKKyAgICAgR1RFU1RfT1NfT1BFTkJTRCB8fCBHVEVTVF9PU19RTlggfHwgR1RFU1RfT1NfRlJF
RUJTRCB8fCBcCisgICAgIEdURVNUX09TX05FVEJTRCB8fCBHVEVTVF9PU19GVUNIU0lBKQorIyBk
ZWZpbmUgR1RFU1RfSEFTX0RFQVRIX1RFU1QgMQogI2VuZGlmCiAKLS8vIFdlIGRvbid0IHN1cHBv
cnQgTVNWQyA3LjEgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkIG5vdy4gIFRoZXJlZm9yZQotLy8g
YWxsIHRoZSBjb21waWxlcnMgd2UgY2FyZSBhYm91dCBhcmUgYWRlcXVhdGUgZm9yIHN1cHBvcnRp
bmcKLS8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCi0jZGVmaW5lIEdURVNUX0hBU19QQVJB
TV9URVNUIDEKLQogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHN1cHBvcnQgdHlwZS1kcml2ZW4g
dGVzdHMuCiAKIC8vIFR5cGVkIHRlc3RzIG5lZWQgPHR5cGVpbmZvPiBhbmQgdmFyaWFkaWMgbWFj
cm9zLCB3aGljaCBHQ0MsIFZDKysgOC4wLAotLy8gU3VuIFBybyBDQywgYW5kIElCTSBWaXN1YWwg
QWdlIHN1cHBvcnQuCisvLyBTdW4gUHJvIENDLCBJQk0gVmlzdWFsIEFnZSwgYW5kIEhQIGFDQyBz
dXBwb3J0LgogI2lmIGRlZmluZWQoX19HTlVDX18pIHx8IChfTVNDX1ZFUiA+PSAxNDAwKSB8fCBk
ZWZpbmVkKF9fU1VOUFJPX0NDKSB8fCBcCi0gICAgZGVmaW5lZChfX0lCTUNQUF9fKQotI2RlZmlu
ZSBHVEVTVF9IQVNfVFlQRURfVEVTVCAxCi0jZGVmaW5lIEdURVNUX0hBU19UWVBFRF9URVNUX1Ag
MQorICAgIGRlZmluZWQoX19JQk1DUFBfXykgfHwgZGVmaW5lZChfX0hQX2FDQykKKyMgZGVmaW5l
IEdURVNUX0hBU19UWVBFRF9URVNUIDEKKyMgZGVmaW5lIEdURVNUX0hBU19UWVBFRF9URVNUX1Ag
MQogI2VuZGlmCiAKIC8vIERldGVybWluZXMgd2hldGhlciB0byBzdXBwb3J0IENvbWJpbmUoKS4g
VGhpcyBvbmx5IG1ha2VzIHNlbnNlIHdoZW4KIC8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMg
YXJlIGVuYWJsZWQuICBUaGUgaW1wbGVtZW50YXRpb24gZG9lc24ndAogLy8gd29yayBvbiBTdW4g
U3R1ZGlvIHNpbmNlIGl0IGRvZXNuJ3QgdW5kZXJzdGFuZCB0ZW1wbGF0ZWQgY29udmVyc2lvbgog
Ly8gb3BlcmF0b3JzLgotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUICYmIEdURVNUX0hBU19UUjFf
VFVQTEUgJiYgIWRlZmluZWQoX19TVU5QUk9fQ0MpCi0jZGVmaW5lIEdURVNUX0hBU19DT01CSU5F
IDEKKyNpZiAoR1RFU1RfSEFTX1RSMV9UVVBMRSB8fCBHVEVTVF9IQVNfU1REX1RVUExFXykgJiYg
IWRlZmluZWQoX19TVU5QUk9fQ0MpCisjIGRlZmluZSBHVEVTVF9IQVNfQ09NQklORSAxCiAjZW5k
aWYKIAogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzeXN0ZW0gY29tcGlsZXIgdXNlcyBVVEYt
MTYgZm9yIGVuY29kaW5nIHdpZGUgc3RyaW5ncy4KICNkZWZpbmUgR1RFU1RfV0lERV9TVFJJTkdf
VVNFU19VVEYxNl8gXAogICAgIChHVEVTVF9PU19XSU5ET1dTIHx8IEdURVNUX09TX0NZR1dJTiB8
fCBHVEVTVF9PU19TWU1CSUFOIHx8IEdURVNUX09TX0FJWCkKIAorLy8gRGV0ZXJtaW5lcyB3aGV0
aGVyIHRlc3QgcmVzdWx0cyBjYW4gYmUgc3RyZWFtZWQgdG8gYSBzb2NrZXQuCisjaWYgR1RFU1Rf
T1NfTElOVVgKKyMgZGVmaW5lIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18gMQorI2VuZGlmCisK
IC8vIERlZmluZXMgc29tZSB1dGlsaXR5IG1hY3Jvcy4KIAogLy8gVGhlIEdOVSBjb21waWxlciBl
bWl0cyBhIHdhcm5pbmcgaWYgbmVzdGVkICJpZiIgc3RhdGVtZW50cyBhcmUgZm9sbG93ZWQgYnkK
QEAgLTU0NSw5ICs4NzEsOSBAQAogLy8KIC8vIFRoZSAic3dpdGNoICgwKSBjYXNlIDA6IiBpZGlv
bSBpcyB1c2VkIHRvIHN1cHByZXNzIHRoaXMuCiAjaWZkZWYgX19JTlRFTF9DT01QSUxFUgotI2Rl
ZmluZSBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXworIyBkZWZpbmUgR1RFU1RfQU1CSUdV
T1VTX0VMU0VfQkxPQ0tFUl8KICNlbHNlCi0jZGVmaW5lIEdURVNUX0FNQklHVU9VU19FTFNFX0JM
T0NLRVJfIHN3aXRjaCAoMCkgY2FzZSAwOiAgLy8gTk9MSU5UCisjIGRlZmluZSBHVEVTVF9BTUJJ
R1VPVVNfRUxTRV9CTE9DS0VSXyBzd2l0Y2ggKDApIGNhc2UgMDogZGVmYXVsdDogIC8vIE5PTElO
VAogI2VuZGlmCiAKIC8vIFVzZSB0aGlzIGFubm90YXRpb24gYXQgdGhlIGVuZCBvZiBhIHN0cnVj
dC9jbGFzcyBkZWZpbml0aW9uIHRvCkBAIC01NjIsMjAgKzg4OCw0OSBAQAogLy8gQWxzbyB1c2Ug
aXQgYWZ0ZXIgYSB2YXJpYWJsZSBvciBwYXJhbWV0ZXIgZGVjbGFyYXRpb24gdG8gdGVsbCB0aGUK
IC8vIGNvbXBpbGVyIHRoZSB2YXJpYWJsZS9wYXJhbWV0ZXIgZG9lcyBub3QgaGF2ZSB0byBiZSB1
c2VkLgogI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKENPTVBJTEVSX0lDQykKLSNk
ZWZpbmUgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCisj
IGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkK
KyNlbGlmIGRlZmluZWQoX19jbGFuZ19fKQorIyBpZiBfX2hhc19hdHRyaWJ1dGUodW51c2VkKQor
IyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfIF9fYXR0cmlidXRlX18gKCh1bnVzZWQp
KQorIyBlbmRpZgorI2VuZGlmCisjaWZuZGVmIEdURVNUX0FUVFJJQlVURV9VTlVTRURfCisjIGRl
ZmluZSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXworI2VuZGlmCisKKyNpZiBHVEVTVF9MQU5HX0NY
WDExCisjIGRlZmluZSBHVEVTVF9DWFgxMV9FUVVBTFNfREVMRVRFXyA9IGRlbGV0ZQorI2Vsc2Ug
IC8vIEdURVNUX0xBTkdfQ1hYMTEKKyMgZGVmaW5lIEdURVNUX0NYWDExX0VRVUFMU19ERUxFVEVf
CisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKworLy8gVXNlIHRoaXMgYW5ub3RhdGlvbiBi
ZWZvcmUgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgcHJpbnRmIGZvcm1hdCBzdHJpbmcuCisjaWYg
KGRlZmluZWQoX19HTlVDX18pIHx8IGRlZmluZWQoX19jbGFuZ19fKSkgJiYgIWRlZmluZWQoQ09N
UElMRVJfSUNDKQorIyBpZiBkZWZpbmVkKF9fTUlOR1dfUFJJTlRGX0ZPUk1BVCkKKy8vIE1pbkdX
IGhhcyB0d28gZGlmZmVyZW50IHByaW50ZiBpbXBsZW1lbnRhdGlvbnMuIEVuc3VyZSB0aGUgZm9y
bWF0IG1hY3JvCisvLyBtYXRjaGVzIHRoZSBzZWxlY3RlZCBpbXBsZW1lbnRhdGlvbi4gU2VlCisv
LyBodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wL21pbmd3LXc2NC93aWtpMi9nbnUlMjBwcmludGYv
LgorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9QUklOVEZfKHN0cmluZ19pbmRleCwgZmlyc3Rf
dG9fY2hlY2spIFwKKyAgICAgICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fTUlOR1dfUFJJ
TlRGX0ZPUk1BVCwgc3RyaW5nX2luZGV4LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaXJzdF90b19jaGVjaykpKQorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRF
X1BSSU5URl8oc3RyaW5nX2luZGV4LCBmaXJzdF90b19jaGVjaykgXAorICAgICAgIF9fYXR0cmli
dXRlX18oKF9fZm9ybWF0X18oX19wcmludGZfXywgc3RyaW5nX2luZGV4LCBmaXJzdF90b19jaGVj
aykpKQorIyBlbmRpZgogI2Vsc2UKLSNkZWZpbmUgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8KKyMg
ZGVmaW5lIEdURVNUX0FUVFJJQlVURV9QUklOVEZfKHN0cmluZ19pbmRleCwgZmlyc3RfdG9fY2hl
Y2spCiAjZW5kaWYKIAorCiAvLyBBIG1hY3JvIHRvIGRpc2FsbG93IG9wZXJhdG9yPQogLy8gVGhp
cyBzaG91bGQgYmUgdXNlZCBpbiB0aGUgcHJpdmF0ZTogZGVjbGFyYXRpb25zIGZvciBhIGNsYXNz
LgotI2RlZmluZSBHVEVTVF9ESVNBTExPV19BU1NJR05fKHR5cGUpXAotICB2b2lkIG9wZXJhdG9y
PSh0eXBlIGNvbnN0ICYpCisjZGVmaW5lIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8odHlwZSkgXAor
ICB2b2lkIG9wZXJhdG9yPSh0eXBlIGNvbnN0ICYpIEdURVNUX0NYWDExX0VRVUFMU19ERUxFVEVf
CiAKIC8vIEEgbWFjcm8gdG8gZGlzYWxsb3cgY29weSBjb25zdHJ1Y3RvciBhbmQgb3BlcmF0b3I9
CiAvLyBUaGlzIHNob3VsZCBiZSB1c2VkIGluIHRoZSBwcml2YXRlOiBkZWNsYXJhdGlvbnMgZm9y
IGEgY2xhc3MuCi0jZGVmaW5lIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8odHlwZSlc
Ci0gIHR5cGUodHlwZSBjb25zdCAmKTtcCisjZGVmaW5lIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8odHlwZSkgXAorICB0eXBlKHR5cGUgY29uc3QgJikgR1RFU1RfQ1hYMTFfRVFVQUxT
X0RFTEVURV87IFwKICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyh0eXBlKQogCiAvLyBUZWxsIHRo
ZSBjb21waWxlciB0byB3YXJuIGFib3V0IHVudXNlZCByZXR1cm4gdmFsdWVzIGZvciBmdW5jdGlv
bnMgZGVjbGFyZWQKQEAgLTU4NCw3MiArOTM5LDI1MCBAQAogLy8KIC8vICAgU3Byb2NrZXQqIEFs
bG9jYXRlU3Byb2NrZXQoKSBHVEVTVF9NVVNUX1VTRV9SRVNVTFRfOwogI2lmIGRlZmluZWQoX19H
TlVDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSAzMDQwMCkgJiYgIWRlZmluZWQoQ09NUElMRVJf
SUNDKQotI2RlZmluZSBHVEVTVF9NVVNUX1VTRV9SRVNVTFRfIF9fYXR0cmlidXRlX18gKCh3YXJu
X3VudXNlZF9yZXN1bHQpKQorIyBkZWZpbmUgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXyBfX2F0dHJp
YnV0ZV9fICgod2Fybl91bnVzZWRfcmVzdWx0KSkKICNlbHNlCi0jZGVmaW5lIEdURVNUX01VU1Rf
VVNFX1JFU1VMVF8KKyMgZGVmaW5lIEdURVNUX01VU1RfVVNFX1JFU1VMVF8KICNlbmRpZiAgLy8g
X19HTlVDX18gJiYgKEdURVNUX0dDQ19WRVJfID49IDMwNDAwKSAmJiAhQ09NUElMRVJfSUNDCiAK
Ky8vIE1TIEMrKyBjb21waWxlciBlbWl0cyB3YXJuaW5nIHdoZW4gYSBjb25kaXRpb25hbCBleHBy
ZXNzaW9uIGlzIGNvbXBpbGUgdGltZQorLy8gY29uc3RhbnQuIEluIHNvbWUgY29udGV4dHMgdGhp
cyB3YXJuaW5nIGlzIGZhbHNlIHBvc2l0aXZlIGFuZCBuZWVkcyB0byBiZQorLy8gc3VwcHJlc3Nl
ZC4gVXNlIHRoZSBmb2xsb3dpbmcgdHdvIG1hY3JvcyBpbiBzdWNoIGNhc2VzOgorLy8KKy8vIEdU
RVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUFVTSF8oKQorLy8gd2hpbGUgKHRydWUpIHsKKy8v
IEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUE9QXygpCisvLyB9CisjIGRlZmluZSBHVEVT
VF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BVU0hfKCkgXAorICAgIEdURVNUX0RJU0FCTEVfTVND
X1dBUk5JTkdTX1BVU0hfKDQxMjcpCisjIGRlZmluZSBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9D
T05EX1BPUF8oKSBcCisgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCisKIC8v
IERldGVybWluZSB3aGV0aGVyIHRoZSBjb21waWxlciBzdXBwb3J0cyBNaWNyb3NvZnQncyBTdHJ1
Y3R1cmVkIEV4Y2VwdGlvbgogLy8gSGFuZGxpbmcuICBUaGlzIGlzIHN1cHBvcnRlZCBieSBzZXZl
cmFsIFdpbmRvd3MgY29tcGlsZXJzIGJ1dCBnZW5lcmFsbHkKIC8vIGRvZXMgbm90IGV4aXN0IG9u
IGFueSBvdGhlciBzeXN0ZW0uCiAjaWZuZGVmIEdURVNUX0hBU19TRUgKIC8vIFRoZSB1c2VyIGRp
ZG4ndCB0ZWxsIHVzLCBzbyB3ZSBuZWVkIHRvIGZpZ3VyZSBpdCBvdXQuCiAKLSNpZiBkZWZpbmVk
KF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykKKyMgaWYgZGVmaW5lZChfTVNDX1ZF
UikgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pCiAvLyBUaGVzZSB0d28gY29tcGlsZXJzIGFyZSBr
bm93biB0byBzdXBwb3J0IFNFSC4KLSNkZWZpbmUgR1RFU1RfSEFTX1NFSCAxCi0jZWxzZQorIyAg
ZGVmaW5lIEdURVNUX0hBU19TRUggMQorIyBlbHNlCiAvLyBBc3N1bWUgbm8gU0VILgotI2RlZmlu
ZSBHVEVTVF9IQVNfU0VIIDAKLSNlbmRpZgorIyAgZGVmaW5lIEdURVNUX0hBU19TRUggMAorIyBl
bmRpZgogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKKyNkZWZpbmUgR1RFU1RfSVNfVEhSRUFE
U0FGRSBcCisgICAgKEdURVNUX0hBU19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMXyBcCisgICAgIHx8
IChHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9P
U19XSU5ET1dTX1JUKSBcCisgICAgIHx8IEdURVNUX0hBU19QVEhSRUFEKQogCi0jaWZkZWYgX01T
Q19WRVIKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAogCi0jaWYgR1RFU1RfTElOS0VEX0FTX1NI
QVJFRF9MSUJSQVJZCi0jZGVmaW5lIEdURVNUX0FQSV8gX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0j
ZWxpZiBHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJBUlkKLSNkZWZpbmUgR1RFU1RfQVBJXyBfX2Rl
Y2xzcGVjKGRsbGV4cG9ydCkKLSNlbmRpZgorLy8gR1RFU1RfQVBJXyBxdWFsaWZpZXMgYWxsIHN5
bWJvbHMgdGhhdCBtdXN0IGJlIGV4cG9ydGVkLiBUaGUgZGVmaW5pdGlvbnMgYmVsb3cKKy8vIGFy
ZSBndWFyZGVkIGJ5ICNpZm5kZWYgdG8gZ2l2ZSBlbWJlZGRlcnMgYSBjaGFuY2UgdG8gZGVmaW5l
IEdURVNUX0FQSV8gaW4KKy8vIGd0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmgKKyNp
Zm5kZWYgR1RFU1RfQVBJXwogCisjaWZkZWYgX01TQ19WRVIKKyMgaWYgR1RFU1RfTElOS0VEX0FT
X1NIQVJFRF9MSUJSQVJZCisjICBkZWZpbmUgR1RFU1RfQVBJXyBfX2RlY2xzcGVjKGRsbGltcG9y
dCkKKyMgZWxpZiBHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJBUlkKKyMgIGRlZmluZSBHVEVTVF9B
UElfIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorIyBlbmRpZgorI2VsaWYgX19HTlVDX18gPj0gNCB8
fCBkZWZpbmVkKF9fY2xhbmdfXykKKyMgZGVmaW5lIEdURVNUX0FQSV8gX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAjZW5kaWYgIC8vIF9NU0NfVkVSCiAKKyNlbmRpZiAg
Ly8gR1RFU1RfQVBJXworCiAjaWZuZGVmIEdURVNUX0FQSV8KLSNkZWZpbmUgR1RFU1RfQVBJXwor
IyBkZWZpbmUgR1RFU1RfQVBJXworI2VuZGlmICAvLyBHVEVTVF9BUElfCisKKyNpZm5kZWYgR1RF
U1RfREVGQVVMVF9ERUFUSF9URVNUX1NUWUxFCisjIGRlZmluZSBHVEVTVF9ERUZBVUxUX0RFQVRI
X1RFU1RfU1RZTEUgICJmYXN0IgorI2VuZGlmICAvLyBHVEVTVF9ERUZBVUxUX0RFQVRIX1RFU1Rf
U1RZTEUKKworI2lmZGVmIF9fR05VQ19fCisvLyBBc2sgdGhlIGNvbXBpbGVyIHRvIG5ldmVyIGlu
bGluZSBhIGdpdmVuIGZ1bmN0aW9uLgorIyBkZWZpbmUgR1RFU1RfTk9fSU5MSU5FXyBfX2F0dHJp
YnV0ZV9fKChub2lubGluZSkpCisjZWxzZQorIyBkZWZpbmUgR1RFU1RfTk9fSU5MSU5FXwogI2Vu
ZGlmCiAKKy8vIF9MSUJDUFBfVkVSU0lPTiBpcyBkZWZpbmVkIGJ5IHRoZSBsaWJjKysgbGlicmFy
eSBmcm9tIHRoZSBMTFZNIHByb2plY3QuCisjaWYgIWRlZmluZWQoR1RFU1RfSEFTX0NYWEFCSV9I
XykKKyMgaWYgZGVmaW5lZChfX0dMSUJDWFhfXykgfHwgKGRlZmluZWQoX0xJQkNQUF9WRVJTSU9O
KSAmJiAhZGVmaW5lZChfTVNDX1ZFUikpCisjICBkZWZpbmUgR1RFU1RfSEFTX0NYWEFCSV9IXyAx
CisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9IQVNfQ1hYQUJJX0hfIDAKKyMgZW5kaWYKKyNlbmRp
ZgorCisvLyBBIGZ1bmN0aW9uIGxldmVsIGF0dHJpYnV0ZSB0byBkaXNhYmxlIGNoZWNraW5nIGZv
ciB1c2Ugb2YgdW5pbml0aWFsaXplZAorLy8gbWVtb3J5IHdoZW4gYnVpbHQgd2l0aCBNZW1vcnlT
YW5pdGl6ZXIuCisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisjIGlmIF9faGFzX2ZlYXR1cmUobWVt
b3J5X3Nhbml0aXplcikKKyMgIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfTUVN
T1JZXyBcCisgICAgICAgX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfbWVtb3J5KSkKKyMgZWxz
ZQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9NRU1PUllfCisjIGVuZGlm
ICAvLyBfX2hhc19mZWF0dXJlKG1lbW9yeV9zYW5pdGl6ZXIpCisjZWxzZQorIyBkZWZpbmUgR1RF
U1RfQVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8KKyNlbmRpZiAgLy8gX19jbGFuZ19fCisK
Ky8vIEEgZnVuY3Rpb24gbGV2ZWwgYXR0cmlidXRlIHRvIGRpc2FibGUgQWRkcmVzc1Nhbml0aXpl
ciBpbnN0cnVtZW50YXRpb24uCisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisjIGlmIF9faGFzX2Zl
YXR1cmUoYWRkcmVzc19zYW5pdGl6ZXIpCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NB
TklUSVpFX0FERFJFU1NfIFwKKyAgICAgICBfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV9hZGRy
ZXNzKSkKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERS
RVNTXworIyBlbmRpZiAgLy8gX19oYXNfZmVhdHVyZShhZGRyZXNzX3Nhbml0aXplcikKKyNlbHNl
CisjIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTU18KKyNlbmRpZiAg
Ly8gX19jbGFuZ19fCisKKy8vIEEgZnVuY3Rpb24gbGV2ZWwgYXR0cmlidXRlIHRvIGRpc2FibGUg
VGhyZWFkU2FuaXRpemVyIGluc3RydW1lbnRhdGlvbi4KKyNpZiBkZWZpbmVkKF9fY2xhbmdfXykK
KyMgaWYgX19oYXNfZmVhdHVyZSh0aHJlYWRfc2FuaXRpemVyKQorIyAgZGVmaW5lIEdURVNUX0FU
VFJJQlVURV9OT19TQU5JVElaRV9USFJFQURfIFwKKyAgICAgICBfX2F0dHJpYnV0ZV9fKChub19z
YW5pdGl6ZV90aHJlYWQpKQorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NB
TklUSVpFX1RIUkVBRF8KKyMgZW5kaWYgIC8vIF9faGFzX2ZlYXR1cmUodGhyZWFkX3Nhbml0aXpl
cikKKyNlbHNlCisjIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXwor
I2VuZGlmICAvLyBfX2NsYW5nX18KKwogbmFtZXNwYWNlIHRlc3RpbmcgewogCiBjbGFzcyBNZXNz
YWdlOwogCisjaWYgZGVmaW5lZChHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfKQorLy8gSW1wb3J0IHR1
cGxlIGFuZCBmcmllbmRzIGludG8gdGhlIDo6dGVzdGluZyBuYW1lc3BhY2UuCisvLyBJdCBpcyBw
YXJ0IG9mIG91ciBpbnRlcmZhY2UsIGhhdmluZyB0aGVtIGluIDo6dGVzdGluZyBhbGxvd3MgdXMg
dG8gY2hhbmdlCisvLyB0aGVpciB0eXBlcyBhcyBuZWVkZWQuCit1c2luZyBHVEVTVF9UVVBMRV9O
QU1FU1BBQ0VfOjpnZXQ7Cit1c2luZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjptYWtlX3R1cGxl
OwordXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXzo6dHVwbGU7Cit1c2luZyBHVEVTVF9UVVBM
RV9OQU1FU1BBQ0VfOjp0dXBsZV9zaXplOwordXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXzo6
dHVwbGVfZWxlbWVudDsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9UVVBMRV9OQU1FU1BBQ0Vf
KQorCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCi1jbGFzcyBTdHJpbmc7CisvLyBBIHNlY3JldCB0
eXBlIHRoYXQgR29vZ2xlIFRlc3QgdXNlcnMgZG9uJ3Qga25vdyBhYm91dC4gIEl0IGhhcyBubwor
Ly8gZGVmaW5pdGlvbiBvbiBwdXJwb3NlLiAgVGhlcmVmb3JlIGl0J3MgaW1wb3NzaWJsZSB0byBj
cmVhdGUgYQorLy8gU2VjcmV0IG9iamVjdCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LgorY2xhc3Mg
U2VjcmV0OwogCi1jbGFzcyBTdHJTdHJlYW0gOiBwdWJsaWMgOjpzdGQ6OnN0cmluZ3N0cmVhbSB7
Ci0gcHVibGljOgotICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVy
biBwOyB9Ci0gIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4g
cDsgfQorLy8gVGhlIEdURVNUX0NPTVBJTEVfQVNTRVJUXyBtYWNybyBjYW4gYmUgdXNlZCB0byB2
ZXJpZnkgdGhhdCBhIGNvbXBpbGUgdGltZQorLy8gZXhwcmVzc2lvbiBpcyB0cnVlLiBGb3IgZXhh
bXBsZSwgeW91IGNvdWxkIHVzZSBpdCB0byB2ZXJpZnkgdGhlCisvLyBzaXplIG9mIGEgc3RhdGlj
IGFycmF5OgorLy8KKy8vICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKEdURVNUX0FSUkFZX1NJWkVf
KG5hbWVzKSA9PSBOVU1fTkFNRVMsCisvLyAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc19p
bmNvcnJlY3Rfc2l6ZSk7CisvLworLy8gb3IgdG8gbWFrZSBzdXJlIGEgc3RydWN0IGlzIHNtYWxs
ZXIgdGhhbiBhIGNlcnRhaW4gc2l6ZToKKy8vCisvLyAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhz
aXplb2YoZm9vKSA8IDEyOCwgZm9vX3Rvb19sYXJnZSk7CisvLworLy8gVGhlIHNlY29uZCBhcmd1
bWVudCB0byB0aGUgbWFjcm8gaXMgdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlLiBJZgorLy8gdGhl
IGV4cHJlc3Npb24gaXMgZmFsc2UsIG1vc3QgY29tcGlsZXJzIHdpbGwgaXNzdWUgYSB3YXJuaW5n
L2Vycm9yCisvLyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZS4KKworI2lmIEdU
RVNUX0xBTkdfQ1hYMTEKKyMgZGVmaW5lIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhleHByLCBtc2cp
IHN0YXRpY19hc3NlcnQoZXhwciwgI21zZykKKyNlbHNlICAvLyAhR1RFU1RfTEFOR19DWFgxMQor
dGVtcGxhdGUgPGJvb2w+CisgIHN0cnVjdCBDb21waWxlQXNzZXJ0IHsKK307CiAKLSAgdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7Ci0gICAgcmV0dXJuIG1hbGxvYyhzaXplKTsKLSAg
fQorIyBkZWZpbmUgR1RFU1RfQ09NUElMRV9BU1NFUlRfKGV4cHIsIG1zZykgXAorICB0eXBlZGVm
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvbXBpbGVBc3NlcnQ8KHN0YXRpY19jYXN0PGJvb2w+KGV4
cHIpKT4gXAorICAgICAgbXNnW3N0YXRpY19jYXN0PGJvb2w+KGV4cHIpID8gMSA6IC0xXSBHVEVT
VF9BVFRSSUJVVEVfVU5VU0VEXworI2VuZGlmICAvLyAhR1RFU1RfTEFOR19DWFgxMQogCi0gIHZv
aWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsKLSAgICBmcmVlKHApOwotICB9CisvLyBJbXBs
ZW1lbnRhdGlvbiBkZXRhaWxzIG9mIEdURVNUX0NPTVBJTEVfQVNTRVJUXzoKKy8vCisvLyAoSW4g
QysrMTEsIHdlIHNpbXBseSB1c2Ugc3RhdGljX2Fzc2VydCBpbnN0ZWFkIG9mIHRoZSBmb2xsb3dp
bmcpCisvLworLy8gLSBHVEVTVF9DT01QSUxFX0FTU0VSVF8gd29ya3MgYnkgZGVmaW5pbmcgYW4g
YXJyYXkgdHlwZSB0aGF0IGhhcyAtMQorLy8gICBlbGVtZW50cyAoYW5kIHRodXMgaXMgaW52YWxp
ZCkgd2hlbiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZS4KKy8vCisvLyAtIFRoZSBzaW1wbGVyIGRl
ZmluaXRpb24KKy8vCisvLyAgICAjZGVmaW5lIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhleHByLCBt
c2cpIHR5cGVkZWYgY2hhciBtc2dbKGV4cHIpID8gMSA6IC0xXQorLy8KKy8vICAgZG9lcyBub3Qg
d29yaywgYXMgZ2NjIHN1cHBvcnRzIHZhcmlhYmxlLWxlbmd0aCBhcnJheXMgd2hvc2Ugc2l6ZXMK
Ky8vICAgYXJlIGRldGVybWluZWQgYXQgcnVuLXRpbWUgKHRoaXMgaXMgZ2NjJ3MgZXh0ZW5zaW9u
IGFuZCBub3QgcGFydAorLy8gICBvZiB0aGUgQysrIHN0YW5kYXJkKS4gIEFzIGEgcmVzdWx0LCBn
Y2MgZmFpbHMgdG8gcmVqZWN0IHRoZQorLy8gICBmb2xsb3dpbmcgY29kZSB3aXRoIHRoZSBzaW1w
bGUgZGVmaW5pdGlvbjoKKy8vCisvLyAgICAgaW50IGZvbzsKKy8vICAgICBHVEVTVF9DT01QSUxF
X0FTU0VSVF8oZm9vLCBtc2cpOyAvLyBub3Qgc3VwcG9zZWQgdG8gY29tcGlsZSBhcyBmb28gaXMK
Ky8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBub3QgYSBjb21waWxl
LXRpbWUgY29uc3RhbnQuCisvLworLy8gLSBCeSB1c2luZyB0aGUgdHlwZSBDb21waWxlQXNzZXJ0
PChib29sKGV4cHIpKT4sIHdlIGVuc3VyZXMgdGhhdAorLy8gICBleHByIGlzIGEgY29tcGlsZS10
aW1lIGNvbnN0YW50LiAgKFRlbXBsYXRlIGFyZ3VtZW50cyBtdXN0IGJlCisvLyAgIGRldGVybWlu
ZWQgYXQgY29tcGlsZS10aW1lLikKKy8vCisvLyAtIFRoZSBvdXR0ZXIgcGFyZW50aGVzZXMgaW4g
Q29tcGlsZUFzc2VydDwoYm9vbChleHByKSk+IGFyZSBuZWNlc3NhcnkKKy8vICAgdG8gd29yayBh
cm91bmQgYSBidWcgaW4gZ2NjIDMuNC40IGFuZCA0LjAuMS4gIElmIHdlIGhhZCB3cml0dGVuCisv
LworLy8gICAgIENvbXBpbGVBc3NlcnQ8Ym9vbChleHByKT4KKy8vCisvLyAgIGluc3RlYWQsIHRo
ZXNlIGNvbXBpbGVycyB3aWxsIHJlZnVzZSB0byBjb21waWxlCisvLworLy8gICAgIEdURVNUX0NP
TVBJTEVfQVNTRVJUXyg1ID4gMCwgc29tZV9tZXNzYWdlKTsKKy8vCisvLyAgIChUaGV5IHNlZW0g
dG8gdGhpbmsgdGhlICI+IiBpbiAiNSA+IDAiIG1hcmtzIHRoZSBlbmQgb2YgdGhlCisvLyAgIHRl
bXBsYXRlIGFyZ3VtZW50IGxpc3QuKQorLy8KKy8vIC0gVGhlIGFycmF5IHNpemUgaXMgKGJvb2wo
ZXhwcikgPyAxIDogLTEpLCBpbnN0ZWFkIG9mIHNpbXBseQorLy8KKy8vICAgICAoKGV4cHIpID8g
MSA6IC0xKS4KKy8vCisvLyAgIFRoaXMgaXMgdG8gYXZvaWQgcnVubmluZyBpbnRvIGEgYnVnIGlu
IE1TIFZDIDcuMSwgd2hpY2gKKy8vICAgY2F1c2VzICgoMC4wKSA/IDEgOiAtMSkgdG8gaW5jb3Jy
ZWN0bHkgZXZhbHVhdGUgdG8gMS4KIAotICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6
ZSkgewotICAgIHJldHVybiBtYWxsb2Moc2l6ZSk7Ci0gIH0KKy8vIFN0YXRpY0Fzc2VydFR5cGVF
cUhlbHBlciBpcyB1c2VkIGJ5IFN0YXRpY0Fzc2VydFR5cGVFcSBkZWZpbmVkIGluIGd0ZXN0Lmgu
CisvLworLy8gVGhpcyB0ZW1wbGF0ZSBpcyBkZWNsYXJlZCwgYnV0IGludGVudGlvbmFsbHkgdW5k
ZWZpbmVkLgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3N0cnVjdCBTdGF0
aWNBc3NlcnRUeXBlRXFIZWxwZXI7CiAKLSAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBw
KSB7Ci0gICAgZnJlZShwKTsKLSAgfQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgU3Rh
dGljQXNzZXJ0VHlwZUVxSGVscGVyPFQsIFQ+IHsKKyAgZW51bSB7IHZhbHVlID0gdHJ1ZSB9Owog
fTsKIAorLy8gU2FtZSBhcyBzdGQ6OmlzX3NhbWU8Pi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgorc3RydWN0IElzU2FtZSB7CisgIGVudW0geyB2YWx1ZSA9IGZhbHNlIH07Cit9
OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNTYW1lPFQsIFQ+IHsKKyAgZW51bSB7
IHZhbHVlID0gdHJ1ZSB9OworfTsKIAorLy8gRXZhbHVhdGVzIHRvIHRoZSBudW1iZXIgb2YgZWxl
bWVudHMgaW4gJ2FycmF5Jy4KKyNkZWZpbmUgR1RFU1RfQVJSQVlfU0laRV8oYXJyYXkpIChzaXpl
b2YoYXJyYXkpIC8gc2l6ZW9mKGFycmF5WzBdKSkKKworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RS
SU5HCit0eXBlZGVmIDo6c3RyaW5nIHN0cmluZzsKKyNlbHNlCit0eXBlZGVmIDo6c3RkOjpzdHJp
bmcgc3RyaW5nOworI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCisjaWYgR1RF
U1RfSEFTX0dMT0JBTF9XU1RSSU5HCit0eXBlZGVmIDo6d3N0cmluZyB3c3RyaW5nOworI2VsaWYg
R1RFU1RfSEFTX1NURF9XU1RSSU5HCit0eXBlZGVmIDo6c3RkOjp3c3RyaW5nIHdzdHJpbmc7Cisj
ZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwogCiAvLyBBIGhlbHBlciBmb3Igc3Vw
cHJlc3Npbmcgd2FybmluZ3Mgb24gY29uc3RhbnQgY29uZGl0aW9uLiAgSXQganVzdAogLy8gcmV0
dXJucyAnY29uZGl0aW9uJy4KQEAgLTY4NSw2ICsxMjE4LDEyIEBAIGNsYXNzIHNjb3BlZF9wdHIg
ewogICAgICAgcHRyXyA9IHA7CiAgICAgfQogICB9CisKKyAgZnJpZW5kIHZvaWQgc3dhcChzY29w
ZWRfcHRyJiBhLCBzY29wZWRfcHRyJiBiKSB7CisgICAgdXNpbmcgc3RkOjpzd2FwOworICAgIHN3
YXAoYS5wdHJfLCBiLnB0cl8pOworICB9CisKICBwcml2YXRlOgogICBUKiBwdHJfOwogCkBAIC02
OTMsNiArMTIzMiwxMCBAQCBjbGFzcyBzY29wZWRfcHRyIHsKIAogLy8gRGVmaW5lcyBSRS4KIAor
I2lmIEdURVNUX1VTRVNfUENSRQorLy8gaWYgdXNlZCwgUENSRSBpcyBpbmplY3RlZCBieSBjdXN0
b20vZ3Rlc3QtcG9ydC5oCisjZWxpZiBHVEVTVF9VU0VTX1BPU0lYX1JFIHx8IEdURVNUX1VTRVNf
U0lNUExFX1JFCisKIC8vIEEgc2ltcGxlIEMrKyB3cmFwcGVyIGZvciA8cmVnZXguaD4uICBJdCB1
c2VzIHRoZSBQT1NJWCBFeHRlbmRlZAogLy8gUmVndWxhciBFeHByZXNzaW9uIHN5bnRheC4KIGNs
YXNzIEdURVNUX0FQSV8gUkUgewpAQCAtNzA0LDkgKzEyNDcsMTEgQEAgY2xhc3MgR1RFU1RfQVBJ
XyBSRSB7CiAgIC8vIENvbnN0cnVjdHMgYW4gUkUgZnJvbSBhIHN0cmluZy4KICAgUkUoY29uc3Qg
OjpzdGQ6OnN0cmluZyYgcmVnZXgpIHsgSW5pdChyZWdleC5jX3N0cigpKTsgfSAgLy8gTk9MSU5U
CiAKLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworIyBpZiBHVEVTVF9IQVNfR0xPQkFMX1NU
UklORworCiAgIFJFKGNvbnN0IDo6c3RyaW5nJiByZWdleCkgeyBJbml0KHJlZ2V4LmNfc3RyKCkp
OyB9ICAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKworIyBl
bmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKIAogICBSRShjb25zdCBjaGFyKiByZWdl
eCkgeyBJbml0KHJlZ2V4KTsgfSAgLy8gTk9MSU5UCiAgIH5SRSgpOwpAQCAtNzE5LDcgKzEyNjQs
NyBAQCBjbGFzcyBHVEVTVF9BUElfIFJFIHsKICAgLy8gUGFydGlhbE1hdGNoKHN0ciwgcmUpIHJl
dHVybnMgdHJ1ZSBpZmYgcmVndWxhciBleHByZXNzaW9uIHJlCiAgIC8vIG1hdGNoZXMgYSBzdWJz
dHJpbmcgb2Ygc3RyIChpbmNsdWRpbmcgc3RyIGl0c2VsZikuCiAgIC8vCi0gIC8vIFRPRE8od2Fu
QGdvb2dsZS5jb20pOiBtYWtlIEZ1bGxNYXRjaCgpIGFuZCBQYXJ0aWFsTWF0Y2goKSB3b3JrCisg
IC8vIEZJWE1FOiBtYWtlIEZ1bGxNYXRjaCgpIGFuZCBQYXJ0aWFsTWF0Y2goKSB3b3JrCiAgIC8v
IHdoZW4gc3RyIGNvbnRhaW5zIE5VTCBjaGFyYWN0ZXJzLgogICBzdGF0aWMgYm9vbCBGdWxsTWF0
Y2goY29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyLCBjb25zdCBSRSYgcmUpIHsKICAgICByZXR1cm4g
RnVsbE1hdGNoKHN0ci5jX3N0cigpLCByZSk7CkBAIC03MjgsMTQgKzEyNzMsMTYgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBSRSB7CiAgICAgcmV0dXJuIFBhcnRpYWxNYXRjaChzdHIuY19zdHIoKSwgcmUp
OwogICB9CiAKLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworIyBpZiBHVEVTVF9IQVNfR0xP
QkFMX1NUUklORworCiAgIHN0YXRpYyBib29sIEZ1bGxNYXRjaChjb25zdCA6OnN0cmluZyYgc3Ry
LCBjb25zdCBSRSYgcmUpIHsKICAgICByZXR1cm4gRnVsbE1hdGNoKHN0ci5jX3N0cigpLCByZSk7
CiAgIH0KICAgc3RhdGljIGJvb2wgUGFydGlhbE1hdGNoKGNvbnN0IDo6c3RyaW5nJiBzdHIsIGNv
bnN0IFJFJiByZSkgewogICAgIHJldHVybiBQYXJ0aWFsTWF0Y2goc3RyLmNfc3RyKCksIHJlKTsK
ICAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCisjIGVuZGlmICAvLyBH
VEVTVF9IQVNfR0xPQkFMX1NUUklORwogCiAgIHN0YXRpYyBib29sIEZ1bGxNYXRjaChjb25zdCBj
aGFyKiBzdHIsIGNvbnN0IFJFJiByZSk7CiAgIHN0YXRpYyBib29sIFBhcnRpYWxNYXRjaChjb25z
dCBjaGFyKiBzdHIsIGNvbnN0IFJFJiByZSk7CkBAIC03NDMsMjIgKzEyOTAsMzggQEAgY2xhc3Mg
R1RFU1RfQVBJXyBSRSB7CiAgcHJpdmF0ZToKICAgdm9pZCBJbml0KGNvbnN0IGNoYXIqIHJlZ2V4
KTsKIAotICAvLyBXZSB1c2UgYSBjb25zdCBjaGFyKiBpbnN0ZWFkIG9mIGEgc3RyaW5nLCBhcyBH
b29nbGUgVGVzdCBtYXkgYmUgdXNlZAotICAvLyB3aGVyZSBzdHJpbmcgaXMgbm90IGF2YWlsYWJs
ZS4gIFdlIGFsc28gZG8gbm90IHVzZSBHb29nbGUgVGVzdCdzIG93bgotICAvLyBTdHJpbmcgdHlw
ZSBoZXJlLCBpbiBvcmRlciB0byBzaW1wbGlmeSBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGUKLSAg
Ly8gZmlsZXMuCisgIC8vIFdlIHVzZSBhIGNvbnN0IGNoYXIqIGluc3RlYWQgb2YgYW4gc3RkOjpz
dHJpbmcsIGFzIEdvb2dsZSBUZXN0IHVzZWQgdG8gYmUKKyAgLy8gdXNlZCB3aGVyZSBzdGQ6OnN0
cmluZyBpcyBub3QgYXZhaWxhYmxlLiAgRklYTUU6IGNoYW5nZSB0bworICAvLyBzdGQ6OnN0cmlu
Zy4KICAgY29uc3QgY2hhciogcGF0dGVybl87CiAgIGJvb2wgaXNfdmFsaWRfOwotI2lmIEdURVNU
X1VTRVNfUE9TSVhfUkUKKworIyBpZiBHVEVTVF9VU0VTX1BPU0lYX1JFCisKICAgcmVnZXhfdCBm
dWxsX3JlZ2V4XzsgICAgIC8vIEZvciBGdWxsTWF0Y2goKS4KICAgcmVnZXhfdCBwYXJ0aWFsX3Jl
Z2V4XzsgIC8vIEZvciBQYXJ0aWFsTWF0Y2goKS4KLSNlbHNlICAvLyBHVEVTVF9VU0VTX1NJTVBM
RV9SRQorCisjIGVsc2UgIC8vIEdURVNUX1VTRVNfU0lNUExFX1JFCisKICAgY29uc3QgY2hhciog
ZnVsbF9wYXR0ZXJuXzsgIC8vIEZvciBGdWxsTWF0Y2goKTsKLSNlbmRpZgorCisjIGVuZGlmCiAK
ICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhSRSk7CiB9OwogCisjZW5kaWYgIC8vIEdURVNUX1VT
RVNfUENSRQorCisvLyBGb3JtYXRzIGEgc291cmNlIGZpbGUgcGF0aCBhbmQgYSBsaW5lIG51bWJl
ciBhcyB0aGV5IHdvdWxkIGFwcGVhcgorLy8gaW4gYW4gZXJyb3IgbWVzc2FnZSBmcm9tIHRoZSBj
b21waWxlciB1c2VkIHRvIGNvbXBpbGUgdGhpcyBjb2RlLgorR1RFU1RfQVBJXyA6OnN0ZDo6c3Ry
aW5nIEZvcm1hdEZpbGVMb2NhdGlvbihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7CisKKy8v
IEZvcm1hdHMgYSBmaWxlIGxvY2F0aW9uIGZvciBjb21waWxlci1pbmRlcGVuZGVudCBYTUwgb3V0
cHV0LgorLy8gQWx0aG91Z2ggdGhpcyBmdW5jdGlvbiBpcyBub3QgcGxhdGZvcm0gZGVwZW5kZW50
LCB3ZSBwdXQgaXQgbmV4dCB0bworLy8gRm9ybWF0RmlsZUxvY2F0aW9uIGluIG9yZGVyIHRvIGNv
bnRyYXN0IHRoZSB0d28gZnVuY3Rpb25zLgorR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEZvcm1h
dENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oY29uc3QgY2hhciogZmlsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBsaW5lKTsKKwogLy8gRGVmaW5lcyBsb2dnaW5nIHV0aWxpdGllczoKIC8vICAgR1RFU1Rf
TE9HXyhzZXZlcml0eSkgLSBsb2dzIG1lc3NhZ2VzIGF0IHRoZSBzcGVjaWZpZWQgc2V2ZXJpdHkg
bGV2ZWwuIFRoZQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgaXRzZWxmIGlz
IHN0cmVhbWVkIGludG8gdGhlIG1hY3JvLgpAQCAtNzkwLDEzICsxMzUzLDE4IEBAIGNsYXNzIEdU
RVNUX0FQSV8gR1Rlc3RMb2cgewogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEdU
ZXN0TG9nKTsKIH07CiAKLSNkZWZpbmUgR1RFU1RfTE9HXyhzZXZlcml0eSkgXAorI2lmICFkZWZp
bmVkKEdURVNUX0xPR18pCisKKyMgZGVmaW5lIEdURVNUX0xPR18oc2V2ZXJpdHkpIFwKICAgICA6
OnRlc3Rpbmc6OmludGVybmFsOjpHVGVzdExvZyg6OnRlc3Rpbmc6OmludGVybmFsOjpHVEVTVF8j
I3NldmVyaXR5LCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18s
IF9fTElORV9fKS5HZXRTdHJlYW0oKQogCiBpbmxpbmUgdm9pZCBMb2dUb1N0ZGVycigpIHt9CiBp
bmxpbmUgdm9pZCBGbHVzaEluZm9Mb2coKSB7IGZmbHVzaChOVUxMKTsgfQogCisjZW5kaWYgIC8v
ICFkZWZpbmVkKEdURVNUX0xPR18pCisKKyNpZiAhZGVmaW5lZChHVEVTVF9DSEVDS18pCiAvLyBJ
TlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UuCiAvLwogLy8gR1RFU1RfQ0hFQ0tf
IGlzIGFuIGFsbC1tb2RlIGFzc2VydC4gSXQgYWJvcnRzIHRoZSBwcm9ncmFtIGlmIHRoZSBjb25k
aXRpb24KQEAgLTgxMSwxMiArMTM3OSwxMyBAQCBpbmxpbmUgdm9pZCBGbHVzaEluZm9Mb2coKSB7
IGZmbHVzaChOVUxMKTsgfQogLy8gICAgY29uZGl0aW9uIGl0c2VsZiwgcGx1cyBhZGRpdGlvbmFs
IG1lc3NhZ2Ugc3RyZWFtZWQgaW50byBpdCwgaWYgYW55LAogLy8gICAgYW5kIHRoZW4gaXQgYWJv
cnRzIHRoZSBwcm9ncmFtLiBJdCBhYm9ydHMgdGhlIHByb2dyYW0gaXJyZXNwZWN0aXZlIG9mCiAv
LyAgICB3aGV0aGVyIGl0IGlzIGJ1aWx0IGluIHRoZSBkZWJ1ZyBtb2RlIG9yIG5vdC4KLSNkZWZp
bmUgR1RFU1RfQ0hFQ0tfKGNvbmRpdGlvbikgXAorIyBkZWZpbmUgR1RFU1RfQ0hFQ0tfKGNvbmRp
dGlvbikgXAogICAgIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKICAgICBpZiAoOjp0
ZXN0aW5nOjppbnRlcm5hbDo6SXNUcnVlKGNvbmRpdGlvbikpIFwKICAgICAgIDsgXAogICAgIGVs
c2UgXAogICAgICAgR1RFU1RfTE9HXyhGQVRBTCkgPDwgIkNvbmRpdGlvbiAiICNjb25kaXRpb24g
IiBmYWlsZWQuICIKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfQ0hFQ0tfKQogCiAvLyBBbiBh
bGwtbW9kZSBhc3NlcnQgdG8gdmVyaWZ5IHRoYXQgdGhlIGdpdmVuIFBPU0lYLXN0eWxlIGZ1bmN0
aW9uCiAvLyBjYWxsIHJldHVybnMgMCAoaW5kaWNhdGluZyBzdWNjZXNzKS4gIEtub3duIGxpbWl0
YXRpb246IHRoaXMKQEAgLTgyOCw4ICsxMzk3LDEyNSBAQCBpbmxpbmUgdm9pZCBGbHVzaEluZm9M
b2coKSB7IGZmbHVzaChOVUxMKTsgfQogICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICNwb3NpeF9j
YWxsIDw8ICJmYWlsZWQgd2l0aCBlcnJvciAiIFwKICAgICAgICAgICAgICAgICAgICAgICA8PCBn
dGVzdF9lcnJvcgogCisvLyBBZGRzIHJlZmVyZW5jZSB0byBhIHR5cGUgaWYgaXQgaXMgbm90IGEg
cmVmZXJlbmNlIHR5cGUsCisvLyBvdGhlcndpc2UgbGVhdmVzIGl0IHVuY2hhbmdlZC4gIFRoaXMg
aXMgdGhlIHNhbWUgYXMKKy8vIHRyMTo6YWRkX3JlZmVyZW5jZSwgd2hpY2ggaXMgbm90IHdpZGVs
eSBhdmFpbGFibGUgeWV0LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQWRkUmVmZXJl
bmNlIHsgdHlwZWRlZiBUJiB0eXBlOyB9OyAgLy8gTk9MSU5UCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK3N0cnVjdCBBZGRSZWZlcmVuY2U8VCY+IHsgdHlwZWRlZiBUJiB0eXBlOyB9OyAgLy8gTk9M
SU5UCisKKy8vIEEgaGFuZHkgd3JhcHBlciBhcm91bmQgQWRkUmVmZXJlbmNlIHRoYXQgd29ya3Mg
d2hlbiB0aGUgYXJndW1lbnQgVAorLy8gZGVwZW5kcyBvbiB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgor
I2RlZmluZSBHVEVTVF9BRERfUkVGRVJFTkNFXyhUKSBcCisgICAgdHlwZW5hbWUgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6QWRkUmVmZXJlbmNlPFQ+Ojp0eXBlCisKKy8vIFRyYW5zZm9ybXMgIlQiIGlu
dG8gImNvbnN0IFQmIiBhY2NvcmRpbmcgdG8gc3RhbmRhcmQgcmVmZXJlbmNlIGNvbGxhcHNpbmcK
Ky8vIHJ1bGVzICh0aGlzIGlzIG9ubHkgbmVlZGVkIGFzIGEgYmFja3BvcnQgZm9yIEMrKzk4IGNv
bXBpbGVycyB0aGF0IGRvIG5vdAorLy8gc3VwcG9ydCByZWZlcmVuY2UgY29sbGFwc2luZykuIFNw
ZWNpZmljYWxseSwgaXQgdHJhbnNmb3JtczoKKy8vCisvLyAgIGNoYXIgICAgICAgICA9PT4gY29u
c3QgY2hhciYKKy8vICAgY29uc3QgY2hhciAgID09PiBjb25zdCBjaGFyJgorLy8gICBjaGFyJiAg
ICAgICAgPT0+IGNoYXImCisvLyAgIGNvbnN0IGNoYXImICA9PT4gY29uc3QgY2hhciYKKy8vCisv
LyBOb3RlIHRoYXQgdGhlIG5vbi1jb25zdCByZWZlcmVuY2Ugd2lsbCBub3QgaGF2ZSAiY29uc3Qi
IGFkZGVkLiBUaGlzIGlzCisvLyBzdGFuZGFyZCwgYW5kIG5lY2Vzc2FyeSBzbyB0aGF0ICJUIiBj
YW4gYWx3YXlzIGJpbmQgdG8gImNvbnN0IFQmIi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3Ry
dWN0IENvbnN0UmVmIHsgdHlwZWRlZiBjb25zdCBUJiB0eXBlOyB9OwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitzdHJ1Y3QgQ29uc3RSZWY8VCY+IHsgdHlwZWRlZiBUJiB0eXBlOyB9OworCisvLyBU
aGUgYXJndW1lbnQgVCBtdXN0IGRlcGVuZCBvbiBzb21lIHRlbXBsYXRlIHBhcmFtZXRlcnMuCisj
ZGVmaW5lIEdURVNUX1JFRkVSRU5DRV9UT19DT05TVF8oVCkgXAorICB0eXBlbmFtZSA6OnRlc3Rp
bmc6OmludGVybmFsOjpDb25zdFJlZjxUPjo6dHlwZQorCisjaWYgR1RFU1RfSEFTX1NURF9NT1ZF
XwordXNpbmcgc3RkOjpmb3J3YXJkOwordXNpbmcgc3RkOjptb3ZlOworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3N0cnVjdCBSdmFsdWVSZWYgeworICB0eXBlZGVmIFQmJiB0eXBlOworfTsKKyNl
bHNlICAvLyBHVEVTVF9IQVNfU1REX01PVkVfCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0
IFQmIG1vdmUoY29uc3QgVCYgdCkgeworICByZXR1cm4gdDsKK30KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorR1RFU1RfQUREX1JFRkVSRU5DRV8oVCkgZm9yd2FyZChHVEVTVF9BRERfUkVGRVJFTkNF
XyhUKSB0KSB7IHJldHVybiB0OyB9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IFJ2
YWx1ZVJlZiB7CisgIHR5cGVkZWYgY29uc3QgVCYgdHlwZTsKK307CisjZW5kaWYgIC8vIEdURVNU
X0hBU19TVERfTU9WRV8KKwogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNF
IElOIFVTRVIgQ09ERS4KIC8vCisvLyBVc2UgSW1wbGljaXRDYXN0XyBhcyBhIHNhZmUgdmVyc2lv
biBvZiBzdGF0aWNfY2FzdCBmb3IgdXBjYXN0aW5nIGluCisvLyB0aGUgdHlwZSBoaWVyYXJjaHkg
KGUuZy4gY2FzdGluZyBhIEZvbyogdG8gYSBTdXBlcmNsYXNzT2ZGb28qIG9yIGEKKy8vIGNvbnN0
IEZvbyopLiAgV2hlbiB5b3UgdXNlIEltcGxpY2l0Q2FzdF8sIHRoZSBjb21waWxlciBjaGVja3Mg
dGhhdAorLy8gdGhlIGNhc3QgaXMgc2FmZS4gIFN1Y2ggZXhwbGljaXQgSW1wbGljaXRDYXN0X3Mg
YXJlIG5lY2Vzc2FyeSBpbgorLy8gc3VycHJpc2luZ2x5IG1hbnkgc2l0dWF0aW9ucyB3aGVyZSBD
KysgZGVtYW5kcyBhbiBleGFjdCB0eXBlIG1hdGNoCisvLyBpbnN0ZWFkIG9mIGFuIGFyZ3VtZW50
IHR5cGUgY29udmVydGFibGUgdG8gYSB0YXJnZXQgdHlwZS4KKy8vCisvLyBUaGUgc3ludGF4IGZv
ciB1c2luZyBJbXBsaWNpdENhc3RfIGlzIHRoZSBzYW1lIGFzIGZvciBzdGF0aWNfY2FzdDoKKy8v
CisvLyAgIEltcGxpY2l0Q2FzdF88VG9UeXBlPihleHByKQorLy8KKy8vIEltcGxpY2l0Q2FzdF8g
d291bGQgaGF2ZSBiZWVuIHBhcnQgb2YgdGhlIEMrKyBzdGFuZGFyZCBsaWJyYXJ5LAorLy8gYnV0
IHRoZSBwcm9wb3NhbCB3YXMgc3VibWl0dGVkIHRvbyBsYXRlLiAgSXQgd2lsbCBwcm9iYWJseSBt
YWtlCisvLyBpdHMgd2F5IGludG8gdGhlIGxhbmd1YWdlIGluIHRoZSBmdXR1cmUuCisvLworLy8g
VGhpcyByZWxhdGl2ZWx5IHVnbHkgbmFtZSBpcyBpbnRlbnRpb25hbC4gSXQgcHJldmVudHMgY2xh
c2hlcyB3aXRoCisvLyBzaW1pbGFyIGZ1bmN0aW9ucyB1c2VycyBtYXkgaGF2ZSAoZS5nLiwgaW1w
bGljaXRfY2FzdCkuIFRoZSBpbnRlcm5hbAorLy8gbmFtZXNwYWNlIGFsb25lIGlzIG5vdCBlbm91
Z2ggYmVjYXVzZSB0aGUgZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGJ5IEFETC4KK3RlbXBsYXRlPHR5
cGVuYW1lIFRvPgoraW5saW5lIFRvIEltcGxpY2l0Q2FzdF8oVG8geCkgeyByZXR1cm4geDsgfQor
CisvLyBXaGVuIHlvdSB1cGNhc3QgKHRoYXQgaXMsIGNhc3QgYSBwb2ludGVyIGZyb20gdHlwZSBG
b28gdG8gdHlwZQorLy8gU3VwZXJjbGFzc09mRm9vKSwgaXQncyBmaW5lIHRvIHVzZSBJbXBsaWNp
dENhc3RfPD4sIHNpbmNlIHVwY2FzdHMKKy8vIGFsd2F5cyBzdWNjZWVkLiAgV2hlbiB5b3UgZG93
bmNhc3QgKHRoYXQgaXMsIGNhc3QgYSBwb2ludGVyIGZyb20KKy8vIHR5cGUgRm9vIHRvIHR5cGUg
U3ViY2xhc3NPZkZvbyksIHN0YXRpY19jYXN0PD4gaXNuJ3Qgc2FmZSwgYmVjYXVzZQorLy8gaG93
IGRvIHlvdSBrbm93IHRoZSBwb2ludGVyIGlzIHJlYWxseSBvZiB0eXBlIFN1YmNsYXNzT2ZGb28/
ICBJdAorLy8gY291bGQgYmUgYSBiYXJlIEZvbywgb3Igb2YgdHlwZSBEaWZmZXJlbnRTdWJjbGFz
c09mRm9vLiAgVGh1cywKKy8vIHdoZW4geW91IGRvd25jYXN0LCB5b3Ugc2hvdWxkIHVzZSB0aGlz
IG1hY3JvLiAgSW4gZGVidWcgbW9kZSwgd2UKKy8vIHVzZSBkeW5hbWljX2Nhc3Q8PiB0byBkb3Vi
bGUtY2hlY2sgdGhlIGRvd25jYXN0IGlzIGxlZ2FsICh3ZSBkaWUKKy8vIGlmIGl0J3Mgbm90KS4g
IEluIG5vcm1hbCBtb2RlLCB3ZSBkbyB0aGUgZWZmaWNpZW50IHN0YXRpY19jYXN0PD4KKy8vIGlu
c3RlYWQuICBUaHVzLCBpdCdzIGltcG9ydGFudCB0byB0ZXN0IGluIGRlYnVnIG1vZGUgdG8gbWFr
ZSBzdXJlCisvLyB0aGUgY2FzdCBpcyBsZWdhbCEKKy8vICAgIFRoaXMgaXMgdGhlIG9ubHkgcGxh
Y2UgaW4gdGhlIGNvZGUgd2Ugc2hvdWxkIHVzZSBkeW5hbWljX2Nhc3Q8Pi4KKy8vIEluIHBhcnRp
Y3VsYXIsIHlvdSBTSE9VTEROJ1QgYmUgdXNpbmcgZHluYW1pY19jYXN0PD4gaW4gb3JkZXIgdG8K
Ky8vIGRvIFJUVEkgKGVnIGNvZGUgbGlrZSB0aGlzOgorLy8gICAgaWYgKGR5bmFtaWNfY2FzdDxT
dWJjbGFzczE+KGZvbykpIEhhbmRsZUFTdWJjbGFzczFPYmplY3QoZm9vKTsKKy8vICAgIGlmIChk
eW5hbWljX2Nhc3Q8U3ViY2xhc3MyPihmb28pKSBIYW5kbGVBU3ViY2xhc3MyT2JqZWN0KGZvbyk7
CisvLyBZb3Ugc2hvdWxkIGRlc2lnbiB0aGUgY29kZSBzb21lIG90aGVyIHdheSBub3QgdG8gbmVl
ZCB0aGlzLgorLy8KKy8vIFRoaXMgcmVsYXRpdmVseSB1Z2x5IG5hbWUgaXMgaW50ZW50aW9uYWwu
IEl0IHByZXZlbnRzIGNsYXNoZXMgd2l0aAorLy8gc2ltaWxhciBmdW5jdGlvbnMgdXNlcnMgbWF5
IGhhdmUgKGUuZy4sIGRvd25fY2FzdCkuIFRoZSBpbnRlcm5hbAorLy8gbmFtZXNwYWNlIGFsb25l
IGlzIG5vdCBlbm91Z2ggYmVjYXVzZSB0aGUgZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGJ5IEFETC4K
K3RlbXBsYXRlPHR5cGVuYW1lIFRvLCB0eXBlbmFtZSBGcm9tPiAgLy8gdXNlIGxpa2UgdGhpczog
RG93bkNhc3RfPFQqPihmb28pOworaW5saW5lIFRvIERvd25DYXN0XyhGcm9tKiBmKSB7ICAvLyBz
byB3ZSBvbmx5IGFjY2VwdCBwb2ludGVycworICAvLyBFbnN1cmVzIHRoYXQgVG8gaXMgYSBzdWIt
dHlwZSBvZiBGcm9tICouICBUaGlzIHRlc3QgaXMgaGVyZSBvbmx5CisgIC8vIGZvciBjb21waWxl
LXRpbWUgdHlwZSBjaGVja2luZywgYW5kIGhhcyBubyBvdmVyaGVhZCBpbiBhbgorICAvLyBvcHRp
bWl6ZWQgYnVpbGQgYXQgcnVuLXRpbWUsIGFzIGl0IHdpbGwgYmUgb3B0aW1pemVkIGF3YXkKKyAg
Ly8gY29tcGxldGVseS4KKyAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QVVNIXygpCisg
IGlmIChmYWxzZSkgeworICBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BPUF8oKQorICAg
IGNvbnN0IFRvIHRvID0gTlVMTDsKKyAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENh
c3RfPEZyb20qPih0byk7CisgIH0KKworI2lmIEdURVNUX0hBU19SVFRJCisgIC8vIFJUVEk6IGRl
YnVnIG1vZGUgb25seSEKKyAgR1RFU1RfQ0hFQ0tfKGYgPT0gTlVMTCB8fCBkeW5hbWljX2Nhc3Q8
VG8+KGYpICE9IE5VTEwpOworI2VuZGlmCisgIHJldHVybiBzdGF0aWNfY2FzdDxUbz4oZik7Cit9
CisKIC8vIERvd25jYXN0cyB0aGUgcG9pbnRlciBvZiB0eXBlIEJhc2UgdG8gRGVyaXZlZC4KIC8v
IERlcml2ZWQgbXVzdCBiZSBhIHN1YmNsYXNzIG9mIEJhc2UuIFRoZSBwYXJhbWV0ZXIgTVVTVAog
Ly8gcG9pbnQgdG8gYSBjbGFzcyBvZiB0eXBlIERlcml2ZWQsIG5vdCBhbnkgc3ViY2xhc3Mgb2Yg
aXQuCkBAIC04MzksMTMgKzE1MjUsMTggQEAgdGVtcGxhdGUgPGNsYXNzIERlcml2ZWQsIGNsYXNz
IEJhc2U+CiBEZXJpdmVkKiBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGUoQmFzZSogYmFzZSkg
ewogI2lmIEdURVNUX0hBU19SVFRJCiAgIEdURVNUX0NIRUNLXyh0eXBlaWQoKmJhc2UpID09IHR5
cGVpZChEZXJpdmVkKSk7CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19ET1dOQ0FTVF8KKyAgcmV0
dXJuIDo6ZG93bl9jYXN0PERlcml2ZWQqPihiYXNlKTsKKyNlbGlmIEdURVNUX0hBU19SVFRJCiAg
IHJldHVybiBkeW5hbWljX2Nhc3Q8RGVyaXZlZCo+KGJhc2UpOyAgLy8gTk9MSU5UCiAjZWxzZQog
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZCo+KGJhc2UpOyAgLy8gUG9vciBtYW4ncyBkb3du
Y2FzdC4KICNlbmRpZgogfQogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNp
ZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCiAKIC8vIERlZmluZXMgdGhlIHN0ZGVyciBj
YXB0dXJlcjoKIC8vICAgQ2FwdHVyZVN0ZG91dCAgICAgLSBzdGFydHMgY2FwdHVyaW5nIHN0ZG91
dC4KQEAgLTg1NCwzMCArMTU0NSwzOSBAQCBEZXJpdmVkKiBDaGVja2VkRG93bmNhc3RUb0FjdHVh
bFR5cGUoQmFzZSogYmFzZSkgewogLy8gICBHZXRDYXB0dXJlZFN0ZGVyciAtIHN0b3BzIGNhcHR1
cmluZyBzdGRlcnIgYW5kIHJldHVybnMgdGhlIGNhcHR1cmVkIHN0cmluZy4KIC8vCiBHVEVTVF9B
UElfIHZvaWQgQ2FwdHVyZVN0ZG91dCgpOwotR1RFU1RfQVBJXyBTdHJpbmcgR2V0Q2FwdHVyZWRT
dGRvdXQoKTsKK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKTsKIEdU
RVNUX0FQSV8gdm9pZCBDYXB0dXJlU3RkZXJyKCk7Ci1HVEVTVF9BUElfIFN0cmluZyBHZXRDYXB0
dXJlZFN0ZGVycigpOworR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0ZGVycigp
OwogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCisjZW5kaWYgIC8v
IEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KKy8vIFJldHVybnMgdGhlIHNpemUgKGluIGJ5
dGVzKSBvZiBhIGZpbGUuCitHVEVTVF9BUElfIHNpemVfdCBHZXRGaWxlU2l6ZShGSUxFKiBmaWxl
KTsKIAorLy8gUmVhZHMgdGhlIGVudGlyZSBjb250ZW50IG9mIGEgZmlsZSBhcyBhIHN0cmluZy4K
K0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgUmVhZEVudGlyZUZpbGUoRklMRSogZmlsZSk7CiAKLSNp
ZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorLy8gQWxsIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCitH
VEVTVF9BUElfIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRBcmd2cygpOwogCi0vLyBBIGNv
cHkgb2YgYWxsIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuICBTZXQgYnkgSW5pdEdvb2dsZVRlc3Qo
KS4KLWV4dGVybiA6OnN0ZDo6dmVjdG9yPFN0cmluZz4gZ19hcmd2czsKKyNpZiBHVEVTVF9IQVNf
REVBVEhfVEVTVAogCi0vLyBHVEVTVF9IQVNfREVBVEhfVEVTVCBpbXBsaWVzIHdlIGhhdmUgOjpz
dGQ6OnN0cmluZy4KLWNvbnN0IDo6c3RkOjp2ZWN0b3I8U3RyaW5nPiYgR2V0QXJndnMoKTsKK3N0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRJbmplY3RhYmxlQXJndnMoKTsKKy8vIERlcHJlY2F0
ZWQ6IHBhc3MgdGhlIGFyZ3MgdmVjdG9yIGJ5IHZhbHVlIGluc3RlYWQuCit2b2lkIFNldEluamVj
dGFibGVBcmd2cyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIG5ld19hcmd2cyk7Cit2
b2lkIFNldEluamVjdGFibGVBcmd2cyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIG5l
d19hcmd2cyk7CisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK3ZvaWQgU2V0SW5qZWN0YWJs
ZUFyZ3ZzKGNvbnN0IHN0ZDo6dmVjdG9yPCA6OnN0cmluZz4mIG5ld19hcmd2cyk7CisjZW5kaWYg
IC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCit2b2lkIENsZWFySW5qZWN0YWJsZUFyZ3ZzKCk7
CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKIAogLy8gRGVmaW5lcyBzeW5jaHJv
bml6YXRpb24gcHJpbWl0aXZlcy4KLQotI2lmIEdURVNUX0hBU19QVEhSRUFECi0KLS8vIFNsZWVw
cyBmb3IgKHJvdWdobHkpIG4gbWlsbGktc2Vjb25kcy4gIFRoaXMgZnVuY3Rpb24gaXMgb25seSBm
b3IKLS8vIHRlc3RpbmcgR29vZ2xlIFRlc3QncyBvd24gY29uc3RydWN0cy4gIERvbid0IHVzZSBp
dCBpbiB1c2VyIHRlc3RzLAotLy8gZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCisjaWYg
R1RFU1RfSVNfVEhSRUFEU0FGRQorIyBpZiBHVEVTVF9IQVNfUFRIUkVBRAorLy8gU2xlZXBzIGZv
ciAocm91Z2hseSkgbiBtaWxsaXNlY29uZHMuICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZm9yIHRl
c3RpbmcKKy8vIEdvb2dsZSBUZXN0J3Mgb3duIGNvbnN0cnVjdHMuICBEb24ndCB1c2UgaXQgaW4g
dXNlciB0ZXN0cywgZWl0aGVyCisvLyBkaXJlY3RseSBvciBpbmRpcmVjdGx5LgogaW5saW5lIHZv
aWQgU2xlZXBNaWxsaXNlY29uZHMoaW50IG4pIHsKICAgY29uc3QgdGltZXNwZWMgdGltZSA9IHsK
ICAgICAwLCAgICAgICAgICAgICAgICAgIC8vIDAgc2Vjb25kcy4KQEAgLTg4NSw3ICsxNTg1LDEz
IEBAIGlubGluZSB2b2lkIFNsZWVwTWlsbGlzZWNvbmRzKGludCBuKSB7CiAgIH07CiAgIG5hbm9z
bGVlcCgmdGltZSwgTlVMTCk7CiB9CisjIGVuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVBRAogCisj
IGlmIEdURVNUX0hBU19OT1RJRklDQVRJT05fCisvLyBOb3RpZmljYXRpb24gaGFzIGFscmVhZHkg
YmVlbiBpbXBvcnRlZCBpbnRvIHRoZSBuYW1lc3BhY2UuCisvLyBOb3RoaW5nIHRvIGRvIGhlcmUu
CisKKyMgZWxpZiBHVEVTVF9IQVNfUFRIUkVBRAogLy8gQWxsb3dzIGEgY29udHJvbGxlciB0aHJl
YWQgdG8gcGF1c2UgZXhlY3V0aW9uIG9mIG5ld2x5IGNyZWF0ZWQKIC8vIHRocmVhZHMgdW50aWwg
bm90aWZpZWQuICBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBtdXN0IGJlIGNyZWF0ZWQKIC8vIGFu
ZCBkZXN0cm95ZWQgaW4gdGhlIGNvbnRyb2xsZXIgdGhyZWFkLgpAQCAtODk0LDI1ICsxNjAwLDk2
IEBAIGlubGluZSB2b2lkIFNsZWVwTWlsbGlzZWNvbmRzKGludCBuKSB7CiAvLyB1c2UgaXQgaW4g
dXNlciB0ZXN0cywgZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCiBjbGFzcyBOb3RpZmlj
YXRpb24gewogIHB1YmxpYzoKLSAgTm90aWZpY2F0aW9uKCkgOiBub3RpZmllZF8oZmFsc2UpIHt9
CisgIE5vdGlmaWNhdGlvbigpIDogbm90aWZpZWRfKGZhbHNlKSB7CisgICAgR1RFU1RfQ0hFQ0tf
UE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9pbml0KCZtdXRleF8sIE5VTEwpKTsKKyAgfQor
ICB+Tm90aWZpY2F0aW9uKCkgeworICAgIHB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmbXV0ZXhfKTsK
KyAgfQogCiAgIC8vIE5vdGlmaWVzIGFsbCB0aHJlYWRzIGNyZWF0ZWQgd2l0aCB0aGlzIG5vdGlm
aWNhdGlvbiB0byBzdGFydC4gTXVzdAogICAvLyBiZSBjYWxsZWQgZnJvbSB0aGUgY29udHJvbGxl
ciB0aHJlYWQuCi0gIHZvaWQgTm90aWZ5KCkgeyBub3RpZmllZF8gPSB0cnVlOyB9CisgIHZvaWQg
Tm90aWZ5KCkgeworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXhfKTsKKyAgICBub3RpZmll
ZF8gPSB0cnVlOworICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleF8pOworICB9CiAKICAg
Ly8gQmxvY2tzIHVudGlsIHRoZSBjb250cm9sbGVyIHRocmVhZCBub3RpZmllcy4gTXVzdCBiZSBj
YWxsZWQgZnJvbSBhIHRlc3QKICAgLy8gdGhyZWFkLgogICB2b2lkIFdhaXRGb3JOb3RpZmljYXRp
b24oKSB7Ci0gICAgd2hpbGUoIW5vdGlmaWVkXykgeworICAgIGZvciAoOzspIHsKKyAgICAgIHB0
aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXhfKTsKKyAgICAgIGNvbnN0IGJvb2wgbm90aWZpZWQgPSBu
b3RpZmllZF87CisgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXhfKTsKKyAgICAgIGlm
IChub3RpZmllZCkKKyAgICAgICAgYnJlYWs7CiAgICAgICBTbGVlcE1pbGxpc2Vjb25kcygxMCk7
CiAgICAgfQogICB9CiAKICBwcml2YXRlOgotICB2b2xhdGlsZSBib29sIG5vdGlmaWVkXzsKKyAg
cHRocmVhZF9tdXRleF90IG11dGV4XzsKKyAgYm9vbCBub3RpZmllZF87CisKKyAgR1RFU1RfRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhOb3RpZmljYXRpb24pOworfTsKKworIyBlbGlmIEdURVNU
X09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRP
V1NfUlQKKworR1RFU1RfQVBJXyB2b2lkIFNsZWVwTWlsbGlzZWNvbmRzKGludCBuKTsKKworLy8g
UHJvdmlkZXMgbGVhay1zYWZlIFdpbmRvd3Mga2VybmVsIGhhbmRsZSBvd25lcnNoaXAuCisvLyBV
c2VkIGluIGRlYXRoIHRlc3RzIGFuZCBpbiB0aHJlYWRpbmcgc3VwcG9ydC4KK2NsYXNzIEdURVNU
X0FQSV8gQXV0b0hhbmRsZSB7CisgcHVibGljOgorICAvLyBBc3N1bWUgdGhhdCBXaW4zMiBIQU5E
TEUgdHlwZSBpcyBlcXVpdmFsZW50IHRvIHZvaWQqLiBEb2luZyBzbyBhbGxvd3MgdXMgdG8KKyAg
Ly8gYXZvaWQgaW5jbHVkaW5nIDx3aW5kb3dzLmg+IGluIHRoaXMgaGVhZGVyIGZpbGUuIEluY2x1
ZGluZyA8d2luZG93cy5oPiBpcworICAvLyB1bmRlc2lyYWJsZSBiZWNhdXNlIGl0IGRlZmluZXMg
YSBsb3Qgb2Ygc3ltYm9scyBhbmQgbWFjcm9zIHRoYXQgdGVuZCB0bworICAvLyBjb25mbGljdCB3
aXRoIGNsaWVudCBjb2RlLiBUaGlzIGFzc3VtcHRpb24gaXMgdmVyaWZpZWQgYnkKKyAgLy8gV2lu
ZG93c1R5cGVzVGVzdC5IQU5ETEVJc1ZvaWRTdGFyLgorICB0eXBlZGVmIHZvaWQqIEhhbmRsZTsK
KyAgQXV0b0hhbmRsZSgpOworICBleHBsaWNpdCBBdXRvSGFuZGxlKEhhbmRsZSBoYW5kbGUpOwor
CisgIH5BdXRvSGFuZGxlKCk7CisKKyAgSGFuZGxlIEdldCgpIGNvbnN0OworICB2b2lkIFJlc2V0
KCk7CisgIHZvaWQgUmVzZXQoSGFuZGxlIGhhbmRsZSk7CisKKyBwcml2YXRlOgorICAvLyBSZXR1
cm5zIHRydWUgaWZmIHRoZSBoYW5kbGUgaXMgYSB2YWxpZCBoYW5kbGUgb2JqZWN0IHRoYXQgY2Fu
IGJlIGNsb3NlZC4KKyAgYm9vbCBJc0Nsb3NlYWJsZSgpIGNvbnN0OworCisgIEhhbmRsZSBoYW5k
bGVfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQXV0b0hhbmRsZSk7Cit9
OworCisvLyBBbGxvd3MgYSBjb250cm9sbGVyIHRocmVhZCB0byBwYXVzZSBleGVjdXRpb24gb2Yg
bmV3bHkgY3JlYXRlZAorLy8gdGhyZWFkcyB1bnRpbCBub3RpZmllZC4gIEluc3RhbmNlcyBvZiB0
aGlzIGNsYXNzIG11c3QgYmUgY3JlYXRlZAorLy8gYW5kIGRlc3Ryb3llZCBpbiB0aGUgY29udHJv
bGxlciB0aHJlYWQuCisvLworLy8gVGhpcyBjbGFzcyBpcyBvbmx5IGZvciB0ZXN0aW5nIEdvb2ds
ZSBUZXN0J3Mgb3duIGNvbnN0cnVjdHMuIERvIG5vdAorLy8gdXNlIGl0IGluIHVzZXIgdGVzdHMs
IGVpdGhlciBkaXJlY3RseSBvciBpbmRpcmVjdGx5LgorY2xhc3MgR1RFU1RfQVBJXyBOb3RpZmlj
YXRpb24geworIHB1YmxpYzoKKyAgTm90aWZpY2F0aW9uKCk7CisgIHZvaWQgTm90aWZ5KCk7Cisg
IHZvaWQgV2FpdEZvck5vdGlmaWNhdGlvbigpOworCisgcHJpdmF0ZToKKyAgQXV0b0hhbmRsZSBl
dmVudF87CiAKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhOb3RpZmljYXRpb24p
OwogfTsKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19OT1RJRklDQVRJT05fCisKKy8vIE9uIE1pbkdX
LCB3ZSBjYW4gaGF2ZSBib3RoIEdURVNUX09TX1dJTkRPV1MgYW5kIEdURVNUX0hBU19QVEhSRUFE
CisvLyBkZWZpbmVkLCBidXQgd2UgZG9uJ3Qgd2FudCB0byB1c2UgTWluR1cncyBwdGhyZWFkcyBp
bXBsZW1lbnRhdGlvbiwgd2hpY2gKKy8vIGhhcyBjb25mb3JtYW5jZSBwcm9ibGVtcyB3aXRoIHNv
bWUgdmVyc2lvbnMgb2YgdGhlIFBPU0lYIHN0YW5kYXJkLgorIyBpZiBHVEVTVF9IQVNfUFRIUkVB
RCAmJiAhR1RFU1RfT1NfV0lORE9XU19NSU5HVwogCiAvLyBBcyBhIEMtZnVuY3Rpb24sIFRocmVh
ZEZ1bmNXaXRoQ0xpbmthZ2UgY2Fubm90IGJlIHRlbXBsYXRlZCBpdHNlbGYuCiAvLyBDb25zZXF1
ZW50bHksIGl0IGNhbm5vdCBzZWxlY3QgYSBjb3JyZWN0IGluc3RhbnRpYXRpb24gb2YgVGhyZWFk
V2l0aFBhcmFtCkBAIC05NTEsMTAgKzE3MjgsOSBAQCBleHRlcm4gIkMiIGlubGluZSB2b2lkKiBU
aHJlYWRGdW5jV2l0aENMaW5rYWdlKHZvaWQqIHRocmVhZCkgewogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiBjbGFzcyBUaHJlYWRXaXRoUGFyYW0gOiBwdWJsaWMgVGhyZWFkV2l0aFBhcmFtQmFzZSB7
CiAgcHVibGljOgotICB0eXBlZGVmIHZvaWQgKCpVc2VyVGhyZWFkRnVuYykoVCk7CisgIHR5cGVk
ZWYgdm9pZCBVc2VyVGhyZWFkRnVuYyhUKTsKIAotICBUaHJlYWRXaXRoUGFyYW0oCi0gICAgICBV
c2VyVGhyZWFkRnVuYyBmdW5jLCBUIHBhcmFtLCBOb3RpZmljYXRpb24qIHRocmVhZF9jYW5fc3Rh
cnQpCisgIFRocmVhZFdpdGhQYXJhbShVc2VyVGhyZWFkRnVuYyogZnVuYywgVCBwYXJhbSwgTm90
aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KQogICAgICAgOiBmdW5jXyhmdW5jKSwKICAgICAg
ICAgcGFyYW1fKHBhcmFtKSwKICAgICAgICAgdGhyZWFkX2Nhbl9zdGFydF8odGhyZWFkX2Nhbl9z
dGFydCksCkBAIC05ODEsNyArMTc1Nyw3IEBAIGNsYXNzIFRocmVhZFdpdGhQYXJhbSA6IHB1Ymxp
YyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKICAgfQogCiAgcHJpdmF0ZToKLSAgY29uc3QgVXNlclRo
cmVhZEZ1bmMgZnVuY187ICAvLyBVc2VyLXN1cHBsaWVkIHRocmVhZCBmdW5jdGlvbi4KKyAgVXNl
clRocmVhZEZ1bmMqIGNvbnN0IGZ1bmNfOyAgLy8gVXNlci1zdXBwbGllZCB0aHJlYWQgZnVuY3Rp
b24uCiAgIGNvbnN0IFQgcGFyYW1fOyAgLy8gVXNlci1zdXBwbGllZCBwYXJhbWV0ZXIgdG8gdGhl
IHRocmVhZCBmdW5jdGlvbi4KICAgLy8gV2hlbiBub24tTlVMTCwgdXNlZCB0byBibG9jayBleGVj
dXRpb24gdW50aWwgdGhlIGNvbnRyb2xsZXIgdGhyZWFkCiAgIC8vIG5vdGlmaWVzLgpAQCAtOTkx
LDUxICsxNzY3LDMxNiBAQCBjbGFzcyBUaHJlYWRXaXRoUGFyYW0gOiBwdWJsaWMgVGhyZWFkV2l0
aFBhcmFtQmFzZSB7CiAKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJlYWRX
aXRoUGFyYW0pOwogfTsKKyMgZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTICYmIEdURVNUX0hB
U19QVEhSRUFEIHx8CisgICAgICAgICAvLyBHVEVTVF9IQVNfTVVURVhfQU5EX1RIUkVBRF9MT0NB
TF8KIAotLy8gZ3Rlc3QtcG9ydC5oIGd1YXJhbnRlZXMgdG8gI2luY2x1ZGUgPHB0aHJlYWQuaD4g
d2hlbiBHVEVTVF9IQVNfUFRIUkVBRCBpcwotLy8gdHJ1ZS4KLSNpbmNsdWRlIDxwdGhyZWFkLmg+
CisjIGlmIEdURVNUX0hBU19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMXworLy8gTXV0ZXggYW5kIFRo
cmVhZExvY2FsIGhhdmUgYWxyZWFkeSBiZWVuIGltcG9ydGVkIGludG8gdGhlIG5hbWVzcGFjZS4K
Ky8vIE5vdGhpbmcgdG8gZG8gaGVyZS4KIAotLy8gTXV0ZXhCYXNlIGFuZCBNdXRleCBpbXBsZW1l
bnQgbXV0ZXggb24gcHRocmVhZHMtYmFzZWQgcGxhdGZvcm1zLiBUaGV5Ci0vLyBhcmUgdXNlZCBp
biBjb25qdW5jdGlvbiB3aXRoIGNsYXNzIE11dGV4TG9jazoKKyMgZWxpZiBHVEVTVF9PU19XSU5E
T1dTICYmICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUCisK
Ky8vIE11dGV4IGltcGxlbWVudHMgbXV0ZXggb24gV2luZG93cyBwbGF0Zm9ybXMuICBJdCBpcyB1
c2VkIGluIGNvbmp1bmN0aW9uCisvLyB3aXRoIGNsYXNzIE11dGV4TG9jazoKIC8vCiAvLyAgIE11
dGV4IG11dGV4OwogLy8gICAuLi4KLS8vICAgTXV0ZXhMb2NrIGxvY2soJm11dGV4KTsgIC8vIEFj
cXVpcmVzIHRoZSBtdXRleCBhbmQgcmVsZWFzZXMgaXQgYXQgdGhlIGVuZAotLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gb2YgdGhlIGN1cnJlbnQgc2NvcGUuCi0vLwotLy8gTXV0ZXhC
YXNlIGltcGxlbWVudHMgYmVoYXZpb3IgZm9yIGJvdGggc3RhdGljYWxseSBhbmQgZHluYW1pY2Fs
bHkKLS8vIGFsbG9jYXRlZCBtdXRleGVzLiAgRG8gbm90IHVzZSBNdXRleEJhc2UgZGlyZWN0bHku
ICBJbnN0ZWFkLCB3cml0ZQotLy8gdGhlIGZvbGxvd2luZyB0byBkZWZpbmUgYSBzdGF0aWMgbXV0
ZXg6CisvLyAgIE11dGV4TG9jayBsb2NrKCZtdXRleCk7ICAvLyBBY3F1aXJlcyB0aGUgbXV0ZXgg
YW5kIHJlbGVhc2VzIGl0IGF0IHRoZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
ZW5kIG9mIHRoZSBjdXJyZW50IHNjb3BlLgogLy8KKy8vIEEgc3RhdGljIE11dGV4ICptdXN0KiBi
ZSBkZWZpbmVkIG9yIGRlY2xhcmVkIHVzaW5nIG9uZSBvZiB0aGUgZm9sbG93aW5nCisvLyBtYWNy
b3M6CiAvLyAgIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKGdfc29tZV9tdXRleCk7CisvLyAg
IEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhnX3NvbWVfbXV0ZXgpOworLy8KKy8vIChBIG5v
bi1zdGF0aWMgTXV0ZXggaXMgZGVmaW5lZC9kZWNsYXJlZCBpbiB0aGUgdXN1YWwgd2F5KS4KK2Ns
YXNzIEdURVNUX0FQSV8gTXV0ZXggeworIHB1YmxpYzoKKyAgZW51bSBNdXRleFR5cGUgeyBrU3Rh
dGljID0gMCwga0R5bmFtaWMgPSAxIH07CisgIC8vIFdlIHJlbHkgb24ga1N0YXRpY011dGV4IGJl
aW5nIDAgYXMgaXQgaXMgdG8gd2hhdCB0aGUgbGlua2VyIGluaXRpYWxpemVzCisgIC8vIHR5cGVf
IGluIHN0YXRpYyBtdXRleGVzLiAgY3JpdGljYWxfc2VjdGlvbl8gd2lsbCBiZSBpbml0aWFsaXpl
ZCBsYXppbHkKKyAgLy8gaW4gVGhyZWFkU2FmZUxhenlJbml0KCkuCisgIGVudW0gU3RhdGljQ29u
c3RydWN0b3JTZWxlY3RvciB7IGtTdGF0aWNNdXRleCA9IDAgfTsKKworICAvLyBUaGlzIGNvbnN0
cnVjdG9yIGludGVudGlvbmFsbHkgZG9lcyBub3RoaW5nLiAgSXQgcmVsaWVzIG9uIHR5cGVfIGJl
aW5nCisgIC8vIHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQgdG8gMCAoZWZmZWN0aXZlbHkgc2V0dGlu
ZyBpdCB0byBrU3RhdGljKSBhbmQgb24KKyAgLy8gVGhyZWFkU2FmZUxhenlJbml0KCkgdG8gbGF6
aWx5IGluaXRpYWxpemUgdGhlIHJlc3Qgb2YgdGhlIG1lbWJlcnMuCisgIGV4cGxpY2l0IE11dGV4
KFN0YXRpY0NvbnN0cnVjdG9yU2VsZWN0b3IgLypkdW1teSovKSB7fQorCisgIE11dGV4KCk7Cisg
IH5NdXRleCgpOworCisgIHZvaWQgTG9jaygpOworCisgIHZvaWQgVW5sb2NrKCk7CisKKyAgLy8g
RG9lcyBub3RoaW5nIGlmIHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUgbXV0ZXguIE90aGVy
d2lzZSwgY3Jhc2hlcworICAvLyB3aXRoIGhpZ2ggcHJvYmFiaWxpdHkuCisgIHZvaWQgQXNzZXJ0
SGVsZCgpOworCisgcHJpdmF0ZToKKyAgLy8gSW5pdGlhbGl6ZXMgb3duZXJfdGhyZWFkX2lkXyBh
bmQgY3JpdGljYWxfc2VjdGlvbl8gaW4gc3RhdGljIG11dGV4ZXMuCisgIHZvaWQgVGhyZWFkU2Fm
ZUxhenlJbml0KCk7CisKKyAgLy8gUGVyIGh0dHBzOi8vYmxvZ3MubXNkbi5taWNyb3NvZnQuY29t
L29sZG5ld3RoaW5nLzIwMDQwMjIzLTAwLz9wPTQwNTAzLAorICAvLyB3ZSBhc3N1bWUgdGhhdCAw
IGlzIGFuIGludmFsaWQgdmFsdWUgZm9yIHRocmVhZCBJRHMuCisgIHVuc2lnbmVkIGludCBvd25l
cl90aHJlYWRfaWRfOworCisgIC8vIEZvciBzdGF0aWMgbXV0ZXhlcywgd2UgcmVseSBvbiB0aGVz
ZSBtZW1iZXJzIGJlaW5nIGluaXRpYWxpemVkIHRvIHplcm9zCisgIC8vIGJ5IHRoZSBsaW5rZXIu
CisgIE11dGV4VHlwZSB0eXBlXzsKKyAgbG9uZyBjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhhc2Vf
OyAgLy8gTk9MSU5UCisgIEdURVNUX0NSSVRJQ0FMX1NFQ1RJT04qIGNyaXRpY2FsX3NlY3Rpb25f
OworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTXV0ZXgpOworfTsKKworIyBk
ZWZpbmUgR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVURVhfKG11dGV4KSBcCisgICAgZXh0ZXJuIDo6
dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4IG11dGV4CisKKyMgZGVmaW5lIEdURVNUX0RFRklORV9T
VEFUSUNfTVVURVhfKG11dGV4KSBcCisgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXggbXV0
ZXgoOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXg6OmtTdGF0aWNNdXRleCkKKworLy8gV2UgY2Fu
bm90IG5hbWUgdGhpcyBjbGFzcyBNdXRleExvY2sgYmVjYXVzZSB0aGUgY3RvciBkZWNsYXJhdGlv
biB3b3VsZAorLy8gY29uZmxpY3Qgd2l0aCBhIG1hY3JvIG5hbWVkIE11dGV4TG9jaywgd2hpY2gg
aXMgZGVmaW5lZCBvbiBzb21lCisvLyBwbGF0Zm9ybXMuIFRoYXQgbWFjcm8gaXMgdXNlZCBhcyBh
IGRlZmVuc2l2ZSBtZWFzdXJlIHRvIHByZXZlbnQgYWdhaW5zdAorLy8gaW5hZHZlcnRlbnQgbWlz
dXNlcyBvZiBNdXRleExvY2sgbGlrZSAiTXV0ZXhMb2NrKCZtdSkiIHJhdGhlciB0aGFuCisvLyAi
TXV0ZXhMb2NrIGwoJm11KSIuICBIZW5jZSB0aGUgdHlwZWRlZiB0cmljayBiZWxvdy4KK2NsYXNz
IEdUZXN0TXV0ZXhMb2NrIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEdUZXN0TXV0ZXhMb2NrKE11
dGV4KiBtdXRleCkKKyAgICAgIDogbXV0ZXhfKG11dGV4KSB7IG11dGV4Xy0+TG9jaygpOyB9CisK
KyAgfkdUZXN0TXV0ZXhMb2NrKCkgeyBtdXRleF8tPlVubG9jaygpOyB9CisKKyBwcml2YXRlOgor
ICBNdXRleCogY29uc3QgbXV0ZXhfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oR1Rlc3RNdXRleExvY2spOworfTsKKwordHlwZWRlZiBHVGVzdE11dGV4TG9jayBNdXRleExv
Y2s7CisKKy8vIEJhc2UgY2xhc3MgZm9yIFZhbHVlSG9sZGVyPFQ+LiAgQWxsb3dzIGEgY2FsbGVy
IHRvIGhvbGQgYW5kIGRlbGV0ZSBhIHZhbHVlCisvLyB3aXRob3V0IGtub3dpbmcgaXRzIHR5cGUu
CitjbGFzcyBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSB7CisgcHVibGljOgorICB2aXJ0dWFs
IH5UaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSgpIHt9Cit9OworCisvLyBQcm92aWRlcyBhIHdh
eSBmb3IgYSB0aHJlYWQgdG8gc2VuZCBub3RpZmljYXRpb25zIHRvIGEgVGhyZWFkTG9jYWwKKy8v
IHJlZ2FyZGxlc3Mgb2YgaXRzIHBhcmFtZXRlciB0eXBlLgorY2xhc3MgVGhyZWFkTG9jYWxCYXNl
IHsKKyBwdWJsaWM6CisgIC8vIENyZWF0ZXMgYSBuZXcgVmFsdWVIb2xkZXI8VD4gb2JqZWN0IGhv
bGRpbmcgYSBkZWZhdWx0IHZhbHVlIHBhc3NlZCB0bworICAvLyB0aGlzIFRocmVhZExvY2FsPFQ+
J3MgY29uc3RydWN0b3IgYW5kIHJldHVybnMgaXQuICBJdCBpcyB0aGUgY2FsbGVyJ3MKKyAgLy8g
cmVzcG9uc2liaWxpdHkgbm90IHRvIGNhbGwgdGhpcyB3aGVuIHRoZSBUaHJlYWRMb2NhbDxUPiBp
bnN0YW5jZSBhbHJlYWR5CisgIC8vIGhhcyBhIHZhbHVlIG9uIHRoZSBjdXJyZW50IHRocmVhZC4K
KyAgdmlydHVhbCBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogTmV3VmFsdWVGb3JDdXJyZW50
VGhyZWFkKCkgY29uc3QgPSAwOworCisgcHJvdGVjdGVkOgorICBUaHJlYWRMb2NhbEJhc2UoKSB7
fQorICB2aXJ0dWFsIH5UaHJlYWRMb2NhbEJhc2UoKSB7fQorCisgcHJpdmF0ZToKKyAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJlYWRMb2NhbEJhc2UpOworfTsKKworLy8gTWFw
cyBhIHRocmVhZCB0byBhIHNldCBvZiBUaHJlYWRMb2NhbHMgdGhhdCBoYXZlIHZhbHVlcyBpbnN0
YW50aWF0ZWQgb24gdGhhdAorLy8gdGhyZWFkIGFuZCBub3RpZmllcyB0aGVtIHdoZW4gdGhlIHRo
cmVhZCBleGl0cy4gIEEgVGhyZWFkTG9jYWwgaW5zdGFuY2UgaXMKKy8vIGV4cGVjdGVkIHRvIHBl
cnNpc3QgdW50aWwgYWxsIHRocmVhZHMgaXQgaGFzIHZhbHVlcyBvbiBoYXZlIHRlcm1pbmF0ZWQu
CitjbGFzcyBHVEVTVF9BUElfIFRocmVhZExvY2FsUmVnaXN0cnkgeworIHB1YmxpYzoKKyAgLy8g
UmVnaXN0ZXJzIHRocmVhZF9sb2NhbF9pbnN0YW5jZSBhcyBoYXZpbmcgdmFsdWUgb24gdGhlIGN1
cnJlbnQgdGhyZWFkLgorICAvLyBSZXR1cm5zIGEgdmFsdWUgdGhhdCBjYW4gYmUgdXNlZCB0byBp
ZGVudGlmeSB0aGUgdGhyZWFkIGZyb20gb3RoZXIgdGhyZWFkcy4KKyAgc3RhdGljIFRocmVhZExv
Y2FsVmFsdWVIb2xkZXJCYXNlKiBHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCgKKyAgICAgIGNvbnN0
IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKKworICAvLyBJbnZva2Vk
IHdoZW4gYSBUaHJlYWRMb2NhbCBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuCisgIHN0YXRpYyB2b2lk
IE9uVGhyZWFkTG9jYWxEZXN0cm95ZWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRo
cmVhZF9sb2NhbF9pbnN0YW5jZSk7Cit9OworCitjbGFzcyBHVEVTVF9BUElfIFRocmVhZFdpdGhQ
YXJhbUJhc2UgeworIHB1YmxpYzoKKyAgdm9pZCBKb2luKCk7CisKKyBwcm90ZWN0ZWQ6CisgIGNs
YXNzIFJ1bm5hYmxlIHsKKyAgIHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5SdW5uYWJsZSgpIHt9Cisg
ICAgdmlydHVhbCB2b2lkIFJ1bigpID0gMDsKKyAgfTsKKworICBUaHJlYWRXaXRoUGFyYW1CYXNl
KFJ1bm5hYmxlICpydW5uYWJsZSwgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KTsKKyAg
dmlydHVhbCB+VGhyZWFkV2l0aFBhcmFtQmFzZSgpOworCisgcHJpdmF0ZToKKyAgQXV0b0hhbmRs
ZSB0aHJlYWRfOworfTsKKworLy8gSGVscGVyIGNsYXNzIGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0
J3MgbXVsdGktdGhyZWFkaW5nIGNvbnN0cnVjdHMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIFRocmVhZFdpdGhQYXJhbSA6IHB1YmxpYyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKKyBwdWJs
aWM6CisgIHR5cGVkZWYgdm9pZCBVc2VyVGhyZWFkRnVuYyhUKTsKKworICBUaHJlYWRXaXRoUGFy
YW0oVXNlclRocmVhZEZ1bmMqIGZ1bmMsIFQgcGFyYW0sIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nh
bl9zdGFydCkKKyAgICAgIDogVGhyZWFkV2l0aFBhcmFtQmFzZShuZXcgUnVubmFibGVJbXBsKGZ1
bmMsIHBhcmFtKSwgdGhyZWFkX2Nhbl9zdGFydCkgeworICB9CisgIHZpcnR1YWwgflRocmVhZFdp
dGhQYXJhbSgpIHt9CisKKyBwcml2YXRlOgorICBjbGFzcyBSdW5uYWJsZUltcGwgOiBwdWJsaWMg
UnVubmFibGUgeworICAgcHVibGljOgorICAgIFJ1bm5hYmxlSW1wbChVc2VyVGhyZWFkRnVuYyog
ZnVuYywgVCBwYXJhbSkKKyAgICAgICAgOiBmdW5jXyhmdW5jKSwKKyAgICAgICAgICBwYXJhbV8o
cGFyYW0pIHsKKyAgICB9CisgICAgdmlydHVhbCB+UnVubmFibGVJbXBsKCkge30KKyAgICB2aXJ0
dWFsIHZvaWQgUnVuKCkgeworICAgICAgZnVuY18ocGFyYW1fKTsKKyAgICB9CisKKyAgIHByaXZh
dGU6CisgICAgVXNlclRocmVhZEZ1bmMqIGNvbnN0IGZ1bmNfOworICAgIGNvbnN0IFQgcGFyYW1f
OworCisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhSdW5uYWJsZUltcGwpOwor
ICB9OworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkV2l0aFBhcmFt
KTsKK307CisKKy8vIEltcGxlbWVudHMgdGhyZWFkLWxvY2FsIHN0b3JhZ2Ugb24gV2luZG93cyBz
eXN0ZW1zLgogLy8KLS8vIFlvdSBjYW4gZm9yd2FyZCBkZWNsYXJlIGEgc3RhdGljIG11dGV4IGxp
a2UgdGhpczoKKy8vICAgLy8gVGhyZWFkIDEKKy8vICAgVGhyZWFkTG9jYWw8aW50PiB0bCgxMDAp
OyAgLy8gMTAwIGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBlYWNoIHRocmVhZC4KIC8vCi0vLyAg
IEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhnX3NvbWVfbXV0ZXgpOworLy8gICAvLyBUaHJl
YWQgMgorLy8gICB0bC5zZXQoMTUwKTsgIC8vIENoYW5nZXMgdGhlIHZhbHVlIGZvciB0aHJlYWQg
MiBvbmx5LgorLy8gICBFWFBFQ1RfRVEoMTUwLCB0bC5nZXQoKSk7CiAvLwotLy8gVG8gY3JlYXRl
IGEgZHluYW1pYyBtdXRleCwganVzdCBkZWZpbmUgYW4gb2JqZWN0IG9mIHR5cGUgTXV0ZXguCisv
LyAgIC8vIFRocmVhZCAxCisvLyAgIEVYUEVDVF9FUSgxMDAsIHRsLmdldCgpKTsgIC8vIEluIHRo
cmVhZCAxLCB0bCBoYXMgdGhlIG9yaWdpbmFsIHZhbHVlLgorLy8gICB0bC5zZXQoMjAwKTsKKy8v
ICAgRVhQRUNUX0VRKDIwMCwgdGwuZ2V0KCkpOworLy8KKy8vIFRoZSB0ZW1wbGF0ZSB0eXBlIGFy
Z3VtZW50IFQgbXVzdCBoYXZlIGEgcHVibGljIGNvcHkgY29uc3RydWN0b3IuCisvLyBJbiBhZGRp
dGlvbiwgdGhlIGRlZmF1bHQgVGhyZWFkTG9jYWwgY29uc3RydWN0b3IgcmVxdWlyZXMgVCB0byBo
YXZlCisvLyBhIHB1YmxpYyBkZWZhdWx0IGNvbnN0cnVjdG9yLgorLy8KKy8vIFRoZSB1c2VycyBv
ZiBhIFRoZWFkTG9jYWwgaW5zdGFuY2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCBhbGwgYnV0IG9u
ZQorLy8gdGhyZWFkcyAoaW5jbHVkaW5nIHRoZSBtYWluIG9uZSkgdXNpbmcgdGhhdCBpbnN0YW5j
ZSBoYXZlIGV4aXRlZCBiZWZvcmUKKy8vIGRlc3Ryb3lpbmcgaXQuIE90aGVyd2lzZSwgdGhlIHBl
ci10aHJlYWQgb2JqZWN0cyBtYW5hZ2VkIGZvciB0aGVtIGJ5IHRoZQorLy8gVGhyZWFkTG9jYWwg
aW5zdGFuY2UgYXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlIGRlc3Ryb3llZCBvbiBhbGwgcGxhdGZv
cm1zLgorLy8KKy8vIEdvb2dsZSBUZXN0IG9ubHkgdXNlcyBnbG9iYWwgVGhyZWFkTG9jYWwgb2Jq
ZWN0cy4gIFRoYXQgbWVhbnMgdGhleQorLy8gd2lsbCBkaWUgYWZ0ZXIgbWFpbigpIGhhcyByZXR1
cm5lZC4gIFRoZXJlZm9yZSwgbm8gcGVyLXRocmVhZAorLy8gb2JqZWN0IG1hbmFnZWQgYnkgR29v
Z2xlIFRlc3Qgd2lsbCBiZSBsZWFrZWQgYXMgbG9uZyBhcyBhbGwgdGhyZWFkcworLy8gdXNpbmcg
R29vZ2xlIFRlc3QgaGF2ZSBleGl0ZWQgd2hlbiBtYWluKCkgcmV0dXJucy4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorY2xhc3MgVGhyZWFkTG9jYWwgOiBwdWJsaWMgVGhyZWFkTG9jYWxCYXNlIHsK
KyBwdWJsaWM6CisgIFRocmVhZExvY2FsKCkgOiBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0
VmFsdWVIb2xkZXJGYWN0b3J5KCkpIHt9CisgIGV4cGxpY2l0IFRocmVhZExvY2FsKGNvbnN0IFQm
IHZhbHVlKQorICAgICAgOiBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBJbnN0YW5jZVZhbHVlSG9sZGVy
RmFjdG9yeSh2YWx1ZSkpIHt9CisKKyAgflRocmVhZExvY2FsKCkgeyBUaHJlYWRMb2NhbFJlZ2lz
dHJ5OjpPblRocmVhZExvY2FsRGVzdHJveWVkKHRoaXMpOyB9CisKKyAgVCogcG9pbnRlcigpIHsg
cmV0dXJuIEdldE9yQ3JlYXRlVmFsdWUoKTsgfQorICBjb25zdCBUKiBwb2ludGVyKCkgY29uc3Qg
eyByZXR1cm4gR2V0T3JDcmVhdGVWYWx1ZSgpOyB9CisgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsg
cmV0dXJuICpwb2ludGVyKCk7IH0KKyAgdm9pZCBzZXQoY29uc3QgVCYgdmFsdWUpIHsgKnBvaW50
ZXIoKSA9IHZhbHVlOyB9CisKKyBwcml2YXRlOgorICAvLyBIb2xkcyBhIHZhbHVlIG9mIFQuICBD
YW4gYmUgZGVsZXRlZCB2aWEgaXRzIGJhc2UgY2xhc3Mgd2l0aG91dCB0aGUgY2FsbGVyCisgIC8v
IGtub3dpbmcgdGhlIHR5cGUgb2YgVC4KKyAgY2xhc3MgVmFsdWVIb2xkZXIgOiBwdWJsaWMgVGhy
ZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UgeworICAgcHVibGljOgorICAgIFZhbHVlSG9sZGVyKCkg
OiB2YWx1ZV8oKSB7fQorICAgIGV4cGxpY2l0IFZhbHVlSG9sZGVyKGNvbnN0IFQmIHZhbHVlKSA6
IHZhbHVlXyh2YWx1ZSkge30KKworICAgIFQqIHBvaW50ZXIoKSB7IHJldHVybiAmdmFsdWVfOyB9
CisKKyAgIHByaXZhdGU6CisgICAgVCB2YWx1ZV87CisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOXyhWYWx1ZUhvbGRlcik7CisgIH07CisKKworICBUKiBHZXRPckNyZWF0ZVZhbHVl
KCkgY29uc3QgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxWYWx1ZUhvbGRlcio+KAorICAgICAg
ICBUaHJlYWRMb2NhbFJlZ2lzdHJ5OjpHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCh0aGlzKSktPnBv
aW50ZXIoKTsKKyAgfQorCisgIHZpcnR1YWwgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UqIE5l
d1ZhbHVlRm9yQ3VycmVudFRocmVhZCgpIGNvbnN0IHsKKyAgICByZXR1cm4gZGVmYXVsdF9mYWN0
b3J5Xy0+TWFrZU5ld0hvbGRlcigpOworICB9CisKKyAgY2xhc3MgVmFsdWVIb2xkZXJGYWN0b3J5
IHsKKyAgIHB1YmxpYzoKKyAgICBWYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1YWwg
flZhbHVlSG9sZGVyRmFjdG9yeSgpIHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRlciogTWFrZU5l
d0hvbGRlcigpIGNvbnN0ID0gMDsKKworICAgcHJpdmF0ZToKKyAgICBHVEVTVF9ESVNBTExPV19D
T1BZX0FORF9BU1NJR05fKFZhbHVlSG9sZGVyRmFjdG9yeSk7CisgIH07CisKKyAgY2xhc3MgRGVm
YXVsdFZhbHVlSG9sZGVyRmFjdG9yeSA6IHB1YmxpYyBWYWx1ZUhvbGRlckZhY3RvcnkgeworICAg
cHVibGljOgorICAgIERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1YWwg
VmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCB7IHJldHVybiBuZXcgVmFsdWVIb2xk
ZXIoKTsgfQorCisgICBwcml2YXRlOgorICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oRGVmYXVsdFZhbHVlSG9sZGVyRmFjdG9yeSk7CisgIH07CisKKyAgY2xhc3MgSW5zdGFuY2VW
YWx1ZUhvbGRlckZhY3RvcnkgOiBwdWJsaWMgVmFsdWVIb2xkZXJGYWN0b3J5IHsKKyAgIHB1Ymxp
YzoKKyAgICBleHBsaWNpdCBJbnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeShjb25zdCBUJiB2YWx1
ZSkgOiB2YWx1ZV8odmFsdWUpIHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRlciogTWFrZU5ld0hv
bGRlcigpIGNvbnN0IHsKKyAgICAgIHJldHVybiBuZXcgVmFsdWVIb2xkZXIodmFsdWVfKTsKKyAg
ICB9CisKKyAgIHByaXZhdGU6CisgICAgY29uc3QgVCB2YWx1ZV87ICAvLyBUaGUgdmFsdWUgZm9y
IGVhY2ggdGhyZWFkLgorCisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhJbnN0
YW5jZVZhbHVlSG9sZGVyRmFjdG9yeSk7CisgIH07CisKKyAgc2NvcGVkX3B0cjxWYWx1ZUhvbGRl
ckZhY3Rvcnk+IGRlZmF1bHRfZmFjdG9yeV87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOXyhUaHJlYWRMb2NhbCk7Cit9OworCisjIGVsaWYgR1RFU1RfSEFTX1BUSFJFQUQKKwor
Ly8gTXV0ZXhCYXNlIGFuZCBNdXRleCBpbXBsZW1lbnQgbXV0ZXggb24gcHRocmVhZHMtYmFzZWQg
cGxhdGZvcm1zLgogY2xhc3MgTXV0ZXhCYXNlIHsKICBwdWJsaWM6CiAgIC8vIEFjcXVpcmVzIHRo
aXMgbXV0ZXguCiAgIHZvaWQgTG9jaygpIHsKICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNT
XyhwdGhyZWFkX211dGV4X2xvY2soJm11dGV4XykpOwogICAgIG93bmVyXyA9IHB0aHJlYWRfc2Vs
ZigpOworICAgIGhhc19vd25lcl8gPSB0cnVlOwogICB9CiAKICAgLy8gUmVsZWFzZXMgdGhpcyBt
dXRleC4KICAgdm9pZCBVbmxvY2soKSB7Ci0gICAgLy8gV2UgZG9uJ3QgcHJvdGVjdCB3cml0aW5n
IHRvIG93bmVyXyBoZXJlLCBhcyBpdCdzIHRoZSBjYWxsZXIncwotICAgIC8vIHJlc3BvbnNpYmls
aXR5IHRvIGVuc3VyZSB0aGF0IHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUKKyAgICAvLyBT
aW5jZSB0aGUgbG9jayBpcyBiZWluZyByZWxlYXNlZCB0aGUgb3duZXJfIGZpZWxkIHNob3VsZCBu
byBsb25nZXIgYmUKKyAgICAvLyBjb25zaWRlcmVkIHZhbGlkLiBXZSBkb24ndCBwcm90ZWN0IHdy
aXRpbmcgdG8gaGFzX293bmVyXyBoZXJlLCBhcyBpdCdzCisgICAgLy8gdGhlIGNhbGxlcidzIHJl
c3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGF0IHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUK
ICAgICAvLyBtdXRleCB3aGVuIHRoaXMgaXMgY2FsbGVkLgotICAgIG93bmVyXyA9IDA7CisgICAg
aGFzX293bmVyXyA9IGZhbHNlOwogICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJl
YWRfbXV0ZXhfdW5sb2NrKCZtdXRleF8pKTsKICAgfQogCiAgIC8vIERvZXMgbm90aGluZyBpZiB0
aGUgY3VycmVudCB0aHJlYWQgaG9sZHMgdGhlIG11dGV4LiBPdGhlcndpc2UsIGNyYXNoZXMKICAg
Ly8gd2l0aCBoaWdoIHByb2JhYmlsaXR5LgogICB2b2lkIEFzc2VydEhlbGQoKSBjb25zdCB7Ci0g
ICAgR1RFU1RfQ0hFQ0tfKG93bmVyXyA9PSBwdGhyZWFkX3NlbGYoKSkKKyAgICBHVEVTVF9DSEVD
S18oaGFzX293bmVyXyAmJiBwdGhyZWFkX2VxdWFsKG93bmVyXywgcHRocmVhZF9zZWxmKCkpKQog
ICAgICAgICA8PCAiVGhlIGN1cnJlbnQgdGhyZWFkIGlzIG5vdCBob2xkaW5nIHRoZSBtdXRleCBA
IiA8PCB0aGlzOwogICB9CiAKQEAgLTEwNDYsMTYgKzIwODcsMjggQEAgY2xhc3MgTXV0ZXhCYXNl
IHsKICAgLy8gaGF2ZSB0byBiZSBwdWJsaWMuCiAgcHVibGljOgogICBwdGhyZWFkX211dGV4X3Qg
bXV0ZXhfOyAgLy8gVGhlIHVuZGVybHlpbmcgcHRocmVhZCBtdXRleC4KLSAgcHRocmVhZF90IG93
bmVyXzsgIC8vIFRoZSB0aHJlYWQgaG9sZGluZyB0aGUgbXV0ZXg7IDAgbWVhbnMgbm8gb25lIGhv
bGRzIGl0LgorICAvLyBoYXNfb3duZXJfIGluZGljYXRlcyB3aGV0aGVyIHRoZSBvd25lcl8gZmll
bGQgYmVsb3cgY29udGFpbnMgYSB2YWxpZCB0aHJlYWQKKyAgLy8gSUQgYW5kIGlzIHRoZXJlZm9y
ZSBzYWZlIHRvIGluc3BlY3QgKGUuZy4sIHRvIHVzZSBpbiBwdGhyZWFkX2VxdWFsKCkpLiBBbGwK
KyAgLy8gYWNjZXNzZXMgdG8gdGhlIG93bmVyXyBmaWVsZCBzaG91bGQgYmUgcHJvdGVjdGVkIGJ5
IGEgY2hlY2sgb2YgdGhpcyBmaWVsZC4KKyAgLy8gQW4gYWx0ZXJuYXRpdmUgbWlnaHQgYmUgdG8g
bWVtc2V0KCkgb3duZXJfIHRvIGFsbCB6ZXJvcywgYnV0IHRoZXJlJ3Mgbm8KKyAgLy8gZ3VhcmFu
dGVlIHRoYXQgYSB6ZXJvJ2QgcHRocmVhZF90IGlzIG5lY2Vzc2FyaWx5IGludmFsaWQgb3IgZXZl
biBkaWZmZXJlbnQKKyAgLy8gZnJvbSBwdGhyZWFkX3NlbGYoKS4KKyAgYm9vbCBoYXNfb3duZXJf
OworICBwdGhyZWFkX3Qgb3duZXJfOyAgLy8gVGhlIHRocmVhZCBob2xkaW5nIHRoZSBtdXRleC4K
IH07CiAKIC8vIEZvcndhcmQtZGVjbGFyZXMgYSBzdGF0aWMgbXV0ZXguCi0jZGVmaW5lIEdURVNU
X0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRleCkgXAotICAgIGV4dGVybiA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpNdXRleEJhc2UgbXV0ZXgKKyMgIGRlZmluZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19N
VVRFWF8obXV0ZXgpIFwKKyAgICAgZXh0ZXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4QmFz
ZSBtdXRleAogCiAvLyBEZWZpbmVzIGFuZCBzdGF0aWNhbGx5IChpLmUuIGF0IGxpbmsgdGltZSkg
aW5pdGlhbGl6ZXMgYSBzdGF0aWMgbXV0ZXguCisvLyBUaGUgaW5pdGlhbGl6YXRpb24gbGlzdCBo
ZXJlIGRvZXMgbm90IGV4cGxpY2l0bHkgaW5pdGlhbGl6ZSBlYWNoIGZpZWxkLAorLy8gaW5zdGVh
ZCByZWx5aW5nIG9uIGRlZmF1bHQgaW5pdGlhbGl6YXRpb24gZm9yIHRoZSB1bnNwZWNpZmllZCBm
aWVsZHMuIEluCisvLyBwYXJ0aWN1bGFyLCB0aGUgb3duZXJfIGZpZWxkIChhIHB0aHJlYWRfdCkg
aXMgbm90IGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQuCisvLyBUaGlzIGFsbG93cyBpbml0aWFsaXph
dGlvbiB0byB3b3JrIHdoZXRoZXIgcHRocmVhZF90IGlzIGEgc2NhbGFyIG9yIHN0cnVjdC4KKy8v
IFRoZSBmbGFnIC1XbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMgbXVzdCBub3QgYmUgc3BlY2lm
aWVkIGZvciB0aGlzIHRvIHdvcmsuCiAjZGVmaW5lIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhf
KG11dGV4KSBcCi0gICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXhCYXNlIG11dGV4ID0geyBQ
VEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSLCAwIH0KKyAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0
ZXhCYXNlIG11dGV4ID0ge1BUSFJFQURfTVVURVhfSU5JVElBTElaRVIsIGZhbHNlLCAwfQogCiAv
LyBUaGUgTXV0ZXggY2xhc3MgY2FuIG9ubHkgYmUgdXNlZCBmb3IgbXV0ZXhlcyBjcmVhdGVkIGF0
IHJ1bnRpbWUuIEl0CiAvLyBzaGFyZXMgaXRzIEFQSSB3aXRoIE11dGV4QmFzZSBvdGhlcndpc2Uu
CkBAIC0xMDYzLDcgKzIxMTYsNyBAQCBjbGFzcyBNdXRleCA6IHB1YmxpYyBNdXRleEJhc2Ugewog
IHB1YmxpYzoKICAgTXV0ZXgoKSB7CiAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRo
cmVhZF9tdXRleF9pbml0KCZtdXRleF8sIE5VTEwpKTsKLSAgICBvd25lcl8gPSAwOworICAgIGhh
c19vd25lcl8gPSBmYWxzZTsKICAgfQogICB+TXV0ZXgoKSB7CiAgICAgR1RFU1RfQ0hFQ0tfUE9T
SVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9kZXN0cm95KCZtdXRleF8pKTsKQEAgLTEwNzMsOSAr
MjEyNiwxMSBAQCBjbGFzcyBNdXRleCA6IHB1YmxpYyBNdXRleEJhc2UgewogICBHVEVTVF9ESVNB
TExPV19DT1BZX0FORF9BU1NJR05fKE11dGV4KTsKIH07CiAKLS8vIFdlIGNhbm5vdCBuYW1lIHRo
aXMgY2xhc3MgTXV0ZXhMb2NrIGFzIHRoZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCisvLyBXZSBj
YW5ub3QgbmFtZSB0aGlzIGNsYXNzIE11dGV4TG9jayBiZWNhdXNlIHRoZSBjdG9yIGRlY2xhcmF0
aW9uIHdvdWxkCiAvLyBjb25mbGljdCB3aXRoIGEgbWFjcm8gbmFtZWQgTXV0ZXhMb2NrLCB3aGlj
aCBpcyBkZWZpbmVkIG9uIHNvbWUKLS8vIHBsYXRmb3Jtcy4gIEhlbmNlIHRoZSB0eXBlZGVmIHRy
aWNrIGJlbG93LgorLy8gcGxhdGZvcm1zLiBUaGF0IG1hY3JvIGlzIHVzZWQgYXMgYSBkZWZlbnNp
dmUgbWVhc3VyZSB0byBwcmV2ZW50IGFnYWluc3QKKy8vIGluYWR2ZXJ0ZW50IG1pc3VzZXMgb2Yg
TXV0ZXhMb2NrIGxpa2UgIk11dGV4TG9jaygmbXUpIiByYXRoZXIgdGhhbgorLy8gIk11dGV4TG9j
ayBsKCZtdSkiLiAgSGVuY2UgdGhlIHR5cGVkZWYgdHJpY2sgYmVsb3cuCiBjbGFzcyBHVGVzdE11
dGV4TG9jayB7CiAgcHVibGljOgogICBleHBsaWNpdCBHVGVzdE11dGV4TG9jayhNdXRleEJhc2Uq
IG11dGV4KQpAQCAtMTEwOSw0MSArMjE2NCwxNCBAQCBleHRlcm4gIkMiIGlubGluZSB2b2lkIERl
bGV0ZVRocmVhZExvY2FsVmFsdWUodm9pZCogdmFsdWVfaG9sZGVyKSB7CiB9CiAKIC8vIEltcGxl
bWVudHMgdGhyZWFkLWxvY2FsIHN0b3JhZ2Ugb24gcHRocmVhZHMtYmFzZWQgc3lzdGVtcy4KLS8v
Ci0vLyAgIC8vIFRocmVhZCAxCi0vLyAgIFRocmVhZExvY2FsPGludD4gdGwoMTAwKTsgIC8vIDEw
MCBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgZWFjaCB0aHJlYWQuCi0vLwotLy8gICAvLyBUaHJl
YWQgMgotLy8gICB0bC5zZXQoMTUwKTsgIC8vIENoYW5nZXMgdGhlIHZhbHVlIGZvciB0aHJlYWQg
MiBvbmx5LgotLy8gICBFWFBFQ1RfRVEoMTUwLCB0bC5nZXQoKSk7Ci0vLwotLy8gICAvLyBUaHJl
YWQgMQotLy8gICBFWFBFQ1RfRVEoMTAwLCB0bC5nZXQoKSk7ICAvLyBJbiB0aHJlYWQgMSwgdGwg
aGFzIHRoZSBvcmlnaW5hbCB2YWx1ZS4KLS8vICAgdGwuc2V0KDIwMCk7Ci0vLyAgIEVYUEVDVF9F
USgyMDAsIHRsLmdldCgpKTsKLS8vCi0vLyBUaGUgdGVtcGxhdGUgdHlwZSBhcmd1bWVudCBUIG11
c3QgaGF2ZSBhIHB1YmxpYyBjb3B5IGNvbnN0cnVjdG9yLgotLy8gSW4gYWRkaXRpb24sIHRoZSBk
ZWZhdWx0IFRocmVhZExvY2FsIGNvbnN0cnVjdG9yIHJlcXVpcmVzIFQgdG8gaGF2ZQotLy8gYSBw
dWJsaWMgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KLS8vCi0vLyBBbiBvYmplY3QgbWFuYWdlZCBmb3Ig
YSB0aHJlYWQgYnkgYSBUaHJlYWRMb2NhbCBpbnN0YW5jZSBpcyBkZWxldGVkCi0vLyB3aGVuIHRo
ZSB0aHJlYWQgZXhpdHMuICBPciwgaWYgdGhlIFRocmVhZExvY2FsIGluc3RhbmNlIGRpZXMgaW4K
LS8vIHRoYXQgdGhyZWFkLCB3aGVuIHRoZSBUaHJlYWRMb2NhbCBkaWVzLiAgSXQncyB0aGUgdXNl
cidzCi0vLyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCBhbGwgb3RoZXIgdGhyZWFkcyB1
c2luZyBhIFRocmVhZExvY2FsCi0vLyBoYXZlIGV4aXRlZCB3aGVuIGl0IGRpZXMsIG9yIHRoZSBw
ZXItdGhyZWFkIG9iamVjdHMgZm9yIHRob3NlCi0vLyB0aHJlYWRzIHdpbGwgbm90IGJlIGRlbGV0
ZWQuCi0vLwotLy8gR29vZ2xlIFRlc3Qgb25seSB1c2VzIGdsb2JhbCBUaHJlYWRMb2NhbCBvYmpl
Y3RzLiAgVGhhdCBtZWFucyB0aGV5Ci0vLyB3aWxsIGRpZSBhZnRlciBtYWluKCkgaGFzIHJldHVy
bmVkLiAgVGhlcmVmb3JlLCBubyBwZXItdGhyZWFkCi0vLyBvYmplY3QgbWFuYWdlZCBieSBHb29n
bGUgVGVzdCB3aWxsIGJlIGxlYWtlZCBhcyBsb25nIGFzIGFsbCB0aHJlYWRzCi0vLyB1c2luZyBH
b29nbGUgVGVzdCBoYXZlIGV4aXRlZCB3aGVuIG1haW4oKSByZXR1cm5zLgogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1jbGFzcyBUaHJlYWRMb2NhbCB7CitjbGFzcyBHVEVTVF9BUElfIFRocmVhZExv
Y2FsIHsKICBwdWJsaWM6Ci0gIFRocmVhZExvY2FsKCkgOiBrZXlfKENyZWF0ZUtleSgpKSwKLSAg
ICAgICAgICAgICAgICAgIGRlZmF1bHRfKCkge30KLSAgZXhwbGljaXQgVGhyZWFkTG9jYWwoY29u
c3QgVCYgdmFsdWUpIDoga2V5XyhDcmVhdGVLZXkoKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfKHZhbHVlKSB7fQorICBUaHJlYWRMb2NhbCgpCisg
ICAgICA6IGtleV8oQ3JlYXRlS2V5KCkpLCBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0VmFs
dWVIb2xkZXJGYWN0b3J5KCkpIHt9CisgIGV4cGxpY2l0IFRocmVhZExvY2FsKGNvbnN0IFQmIHZh
bHVlKQorICAgICAgOiBrZXlfKENyZWF0ZUtleSgpKSwKKyAgICAgICAgZGVmYXVsdF9mYWN0b3J5
XyhuZXcgSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkodmFsdWUpKSB7fQogCiAgIH5UaHJlYWRM
b2NhbCgpIHsKICAgICAvLyBEZXN0cm95cyB0aGUgbWFuYWdlZCBvYmplY3QgZm9yIHRoZSBjdXJy
ZW50IHRocmVhZCwgaWYgYW55LgpAQCAtMTE2Myw2ICsyMTkxLDcgQEAgY2xhc3MgVGhyZWFkTG9j
YWwgewogICAvLyBIb2xkcyBhIHZhbHVlIG9mIHR5cGUgVC4KICAgY2xhc3MgVmFsdWVIb2xkZXIg
OiBwdWJsaWMgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UgewogICAgcHVibGljOgorICAgIFZh
bHVlSG9sZGVyKCkgOiB2YWx1ZV8oKSB7fQogICAgIGV4cGxpY2l0IFZhbHVlSG9sZGVyKGNvbnN0
IFQmIHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KIAogICAgIFQqIHBvaW50ZXIoKSB7IHJldHVy
biAmdmFsdWVfOyB9CkBAIC0xMTg4LDIyICsyMjE3LDU0IEBAIGNsYXNzIFRocmVhZExvY2FsIHsK
ICAgICAgIHJldHVybiBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGU8VmFsdWVIb2xkZXI+KGhv
bGRlciktPnBvaW50ZXIoKTsKICAgICB9CiAKLSAgICBWYWx1ZUhvbGRlciogY29uc3QgbmV3X2hv
bGRlciA9IG5ldyBWYWx1ZUhvbGRlcihkZWZhdWx0Xyk7CisgICAgVmFsdWVIb2xkZXIqIGNvbnN0
IG5ld19ob2xkZXIgPSBkZWZhdWx0X2ZhY3RvcnlfLT5NYWtlTmV3SG9sZGVyKCk7CiAgICAgVGhy
ZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UqIGNvbnN0IGhvbGRlcl9iYXNlID0gbmV3X2hvbGRlcjsK
ICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX3NldHNwZWNpZmljKGtleV8s
IGhvbGRlcl9iYXNlKSk7CiAgICAgcmV0dXJuIG5ld19ob2xkZXItPnBvaW50ZXIoKTsKICAgfQog
CisgIGNsYXNzIFZhbHVlSG9sZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAgVmFsdWVIb2xk
ZXJGYWN0b3J5KCkge30KKyAgICB2aXJ0dWFsIH5WYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAg
IHZpcnR1YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCA9IDA7CisKKyAgIHBy
aXZhdGU6CisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhWYWx1ZUhvbGRlckZh
Y3RvcnkpOworICB9OworCisgIGNsYXNzIERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkgOiBwdWJs
aWMgVmFsdWVIb2xkZXJGYWN0b3J5IHsKKyAgIHB1YmxpYzoKKyAgICBEZWZhdWx0VmFsdWVIb2xk
ZXJGYWN0b3J5KCkge30KKyAgICB2aXJ0dWFsIFZhbHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkg
Y29uc3QgeyByZXR1cm4gbmV3IFZhbHVlSG9sZGVyKCk7IH0KKworICAgcHJpdmF0ZToKKyAgICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKERlZmF1bHRWYWx1ZUhvbGRlckZhY3Rvcnkp
OworICB9OworCisgIGNsYXNzIEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5IDogcHVibGljIFZh
bHVlSG9sZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAgZXhwbGljaXQgSW5zdGFuY2VWYWx1
ZUhvbGRlckZhY3RvcnkoY29uc3QgVCYgdmFsdWUpIDogdmFsdWVfKHZhbHVlKSB7fQorICAgIHZp
cnR1YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCB7CisgICAgICByZXR1cm4g
bmV3IFZhbHVlSG9sZGVyKHZhbHVlXyk7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGNvbnN0
IFQgdmFsdWVfOyAgLy8gVGhlIHZhbHVlIGZvciBlYWNoIHRocmVhZC4KKworICAgIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9
OworCiAgIC8vIEEga2V5IHB0aHJlYWRzIHVzZXMgZm9yIGxvb2tpbmcgdXAgcGVyLXRocmVhZCB2
YWx1ZXMuCiAgIGNvbnN0IHB0aHJlYWRfa2V5X3Qga2V5XzsKLSAgY29uc3QgVCBkZWZhdWx0Xzsg
IC8vIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBlYWNoIHRocmVhZC4KKyAgc2NvcGVkX3B0cjxWYWx1
ZUhvbGRlckZhY3Rvcnk+IGRlZmF1bHRfZmFjdG9yeV87CiAKICAgR1RFU1RfRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOXyhUaHJlYWRMb2NhbCk7CiB9OwogCi0jZGVmaW5lIEdURVNUX0lTX1RIUkVB
RFNBRkUgMQorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX01VVEVYX0FORF9USFJFQURfTE9DQUxfCiAK
LSNlbHNlICAvLyBHVEVTVF9IQVNfUFRIUkVBRAorI2Vsc2UgIC8vIEdURVNUX0lTX1RIUkVBRFNB
RkUKIAogLy8gQSBkdW1teSBpbXBsZW1lbnRhdGlvbiBvZiBzeW5jaHJvbml6YXRpb24gcHJpbWl0
aXZlcyAobXV0ZXgsIGxvY2ssCiAvLyBhbmQgdGhyZWFkLWxvY2FsIHZhcmlhYmxlKS4gIE5lY2Vz
c2FyeSBmb3IgY29tcGlsaW5nIEdvb2dsZSBUZXN0IHdoZXJlCkBAIC0xMjEzLDE0ICsyMjc0LDIx
IEBAIGNsYXNzIFRocmVhZExvY2FsIHsKIGNsYXNzIE11dGV4IHsKICBwdWJsaWM6CiAgIE11dGV4
KCkge30KKyAgdm9pZCBMb2NrKCkge30KKyAgdm9pZCBVbmxvY2soKSB7fQogICB2b2lkIEFzc2Vy
dEhlbGQoKSBjb25zdCB7fQogfTsKIAotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRF
WF8obXV0ZXgpIFwKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRleCkg
XAogICBleHRlcm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXggbXV0ZXgKIAotI2RlZmluZSBH
VEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhtdXRleCkgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0
ZXggbXV0ZXgKKyMgZGVmaW5lIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKG11dGV4KSA6OnRl
c3Rpbmc6OmludGVybmFsOjpNdXRleCBtdXRleAogCisvLyBXZSBjYW5ub3QgbmFtZSB0aGlzIGNs
YXNzIE11dGV4TG9jayBiZWNhdXNlIHRoZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCisvLyBjb25m
bGljdCB3aXRoIGEgbWFjcm8gbmFtZWQgTXV0ZXhMb2NrLCB3aGljaCBpcyBkZWZpbmVkIG9uIHNv
bWUKKy8vIHBsYXRmb3Jtcy4gVGhhdCBtYWNybyBpcyB1c2VkIGFzIGEgZGVmZW5zaXZlIG1lYXN1
cmUgdG8gcHJldmVudCBhZ2FpbnN0CisvLyBpbmFkdmVydGVudCBtaXN1c2VzIG9mIE11dGV4TG9j
ayBsaWtlICJNdXRleExvY2soJm11KSIgcmF0aGVyIHRoYW4KKy8vICJNdXRleExvY2sgbCgmbXUp
Ii4gIEhlbmNlIHRoZSB0eXBlZGVmIHRyaWNrIGJlbG93LgogY2xhc3MgR1Rlc3RNdXRleExvY2sg
ewogIHB1YmxpYzoKICAgZXhwbGljaXQgR1Rlc3RNdXRleExvY2soTXV0ZXgqKSB7fSAgLy8gTk9M
SU5UCkBAIC0xMjI5LDcgKzIyOTcsNyBAQCBjbGFzcyBHVGVzdE11dGV4TG9jayB7CiB0eXBlZGVm
IEdUZXN0TXV0ZXhMb2NrIE11dGV4TG9jazsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFz
cyBUaHJlYWRMb2NhbCB7CitjbGFzcyBHVEVTVF9BUElfIFRocmVhZExvY2FsIHsKICBwdWJsaWM6
CiAgIFRocmVhZExvY2FsKCkgOiB2YWx1ZV8oKSB7fQogICBleHBsaWNpdCBUaHJlYWRMb2NhbChj
b25zdCBUJiB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9CkBAIC0xMjQxLDI4ICsyMzA5LDI1IEBA
IGNsYXNzIFRocmVhZExvY2FsIHsKICAgVCB2YWx1ZV87CiB9OwogCi0vLyBUaGUgYWJvdmUgc3lu
Y2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaGF2ZSBkdW1teSBpbXBsZW1lbnRhdGlvbnMuCi0vLyBU
aGVyZWZvcmUgR29vZ2xlIFRlc3QgaXMgbm90IHRocmVhZC1zYWZlLgotI2RlZmluZSBHVEVTVF9J
U19USFJFQURTQUZFIDAKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVBRAorI2VuZGlmICAv
LyBHVEVTVF9JU19USFJFQURTQUZFCiAKIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiB0aHJlYWRz
IHJ1bm5pbmcgaW4gdGhlIHByb2Nlc3MsIG9yIDAgdG8gaW5kaWNhdGUgdGhhdAogLy8gd2UgY2Fu
bm90IGRldGVjdCBpdC4KIEdURVNUX0FQSV8gc2l6ZV90IEdldFRocmVhZENvdW50KCk7CiAKIC8v
IFBhc3Npbmcgbm9uLVBPRCBjbGFzc2VzIHRocm91Z2ggZWxsaXBzaXMgKC4uLikgY3Jhc2hlcyB0
aGUgQVJNCi0vLyBjb21waWxlciBhbmQgZ2VuZXJhdGVzIGEgd2FybmluZyBpbiBTdW4gU3R1ZGlv
LiAgVGhlIE5va2lhIFN5bWJpYW4KKy8vIGNvbXBpbGVyIGFuZCBnZW5lcmF0ZXMgYSB3YXJuaW5n
IGluIFN1biBTdHVkaW8gYmVmb3JlIDEydTQuIFRoZSBOb2tpYSBTeW1iaWFuCiAvLyBhbmQgdGhl
IElCTSBYTCBDL0MrKyBjb21waWxlciB0cnkgdG8gaW5zdGFudGlhdGUgYSBjb3B5IGNvbnN0cnVj
dG9yCiAvLyBmb3Igb2JqZWN0cyBwYXNzZWQgdGhyb3VnaCBlbGxpcHNpcyAoLi4uKSwgZmFpbGlu
ZyBmb3IgdW5jb3B5YWJsZQogLy8gb2JqZWN0cy4gIFdlIGRlZmluZSB0aGlzIHRvIGVuc3VyZSB0
aGF0IG9ubHkgUE9EIGlzIHBhc3NlZCB0aHJvdWdoCiAvLyBlbGxpcHNpcyBvbiB0aGVzZSBzeXN0
ZW1zLgotI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgfHwgZGVmaW5lZChfX0lCTUNQUF9fKSB8
fCBkZWZpbmVkKF9fU1VOUFJPX0NDKQorI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgfHwgZGVm
aW5lZChfX0lCTUNQUF9fKSB8fCBcCisgICAgIChkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiBfX1NV
TlBST19DQyA8IDB4NTEzMCkKIC8vIFdlIGxvc2Ugc3VwcG9ydCBmb3IgTlVMTCBkZXRlY3Rpb24g
d2hlcmUgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZQogLy8gcGFzc2luZyBub24tUE9EIGNsYXNz
ZXMgdGhyb3VnaCBlbGxpcHNpcyAoLi4uKS4KLSNkZWZpbmUgR1RFU1RfRUxMSVBTSVNfTkVFRFNf
UE9EXyAxCisjIGRlZmluZSBHVEVTVF9FTExJUFNJU19ORUVEU19QT0RfIDEKICNlbHNlCi0jZGVm
aW5lIEdURVNUX0NBTl9DT01QQVJFX05VTEwgMQorIyBkZWZpbmUgR1RFU1RfQ0FOX0NPTVBBUkVf
TlVMTCAxCiAjZW5kaWYKIAogLy8gVGhlIE5va2lhIFN5bWJpYW4gYW5kIElCTSBYTCBDL0MrKyBj
b21waWxlcnMgY2Fubm90IGRlY2lkZSBiZXR3ZWVuCkBAIC0xMjcwLDcgKzIzMzUsNyBAQCBHVEVT
VF9BUElfIHNpemVfdCBHZXRUaHJlYWRDb3VudCgpOwogLy8gX2Nhbl8gZGVjaWRlIGJldHdlZW4g
Y2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIGZvciBUIGFuZCBUKiwKIC8vIHNvIGEgdHIx
Ojp0eXBlX3RyYWl0cy1saWtlIGlzX3BvaW50ZXIgd29ya3MuCiAjaWYgZGVmaW5lZChfX1NZTUJJ
QU4zMl9fKSB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pCi0jZGVmaW5lIEdURVNUX05FRURTX0lTX1BP
SU5URVJfIDEKKyMgZGVmaW5lIEdURVNUX05FRURTX0lTX1BPSU5URVJfIDEKICNlbmRpZgogCiB0
ZW1wbGF0ZSA8Ym9vbCBib29sX3ZhbHVlPgpAQCAtMTI4MywyMyArMjM0OCw5MyBAQCB0ZW1wbGF0
ZSA8Ym9vbCBib29sX3ZhbHVlPiBjb25zdCBib29sIGJvb2xfY29uc3RhbnQ8Ym9vbF92YWx1ZT46
OnZhbHVlOwogdHlwZWRlZiBib29sX2NvbnN0YW50PGZhbHNlPiBmYWxzZV90eXBlOwogdHlwZWRl
ZiBib29sX2NvbnN0YW50PHRydWU+IHRydWVfdHlwZTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+CitzdHJ1Y3QgaXNfc2FtZSA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc19zYW1lPFQsIFQ+IDogcHVibGljIHRydWVf
dHlwZSB7fTsKKworCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0cnVjdCBpc19wb2ludGVyIDog
cHVibGljIGZhbHNlX3R5cGUge307CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RydWN0IGlz
X3BvaW50ZXI8VCo+IDogcHVibGljIHRydWVfdHlwZSB7fTsKIAordGVtcGxhdGUgPHR5cGVuYW1l
IEl0ZXJhdG9yPgorc3RydWN0IEl0ZXJhdG9yVHJhaXRzIHsKKyAgdHlwZWRlZiB0eXBlbmFtZSBJ
dGVyYXRvcjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOworfTsKKworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK3N0cnVjdCBJdGVyYXRvclRyYWl0czxUKj4geworICB0eXBlZGVmIFQgdmFsdWVfdHlw
ZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEl0ZXJhdG9yVHJhaXRzPGNv
bnN0IFQqPiB7CisgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOworfTsKKwogI2lmIEdURVNUX09TX1dJ
TkRPV1MKLSNkZWZpbmUgR1RFU1RfUEFUSF9TRVBfICJcXCIKLSNkZWZpbmUgR1RFU1RfSEFTX0FM
VF9QQVRIX1NFUF8gMQorIyBkZWZpbmUgR1RFU1RfUEFUSF9TRVBfICJcXCIKKyMgZGVmaW5lIEdU
RVNUX0hBU19BTFRfUEFUSF9TRVBfIDEKIC8vIFRoZSBiaWdnZXN0IHNpZ25lZCBpbnRlZ2VyIHR5
cGUgdGhlIGNvbXBpbGVyIHN1cHBvcnRzLgogdHlwZWRlZiBfX2ludDY0IEJpZ2dlc3RJbnQ7CiAj
ZWxzZQotI2RlZmluZSBHVEVTVF9QQVRIX1NFUF8gIi8iCi0jZGVmaW5lIEdURVNUX0hBU19BTFRf
UEFUSF9TRVBfIDAKKyMgZGVmaW5lIEdURVNUX1BBVEhfU0VQXyAiLyIKKyMgZGVmaW5lIEdURVNU
X0hBU19BTFRfUEFUSF9TRVBfIDAKIHR5cGVkZWYgbG9uZyBsb25nIEJpZ2dlc3RJbnQ7ICAvLyBO
T0xJTlQKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCisvLyBVdGlsaXRpZXMgZm9yIGNo
YXIuCisKKy8vIGlzc3BhY2UoaW50IGNoKSBhbmQgZnJpZW5kcyBhY2NlcHQgYW4gdW5zaWduZWQg
Y2hhciBvciBFT0YuICBjaGFyCisvLyBtYXkgYmUgc2lnbmVkLCBkZXBlbmRpbmcgb24gdGhlIGNv
bXBpbGVyIChvciBjb21waWxlciBmbGFncykuCisvLyBUaGVyZWZvcmUgd2UgbmVlZCB0byBjYXN0
IGEgY2hhciB0byB1bnNpZ25lZCBjaGFyIGJlZm9yZSBjYWxsaW5nCisvLyBpc3NwYWNlKCksIGV0
Yy4KKworaW5saW5lIGJvb2wgSXNBbHBoYShjaGFyIGNoKSB7CisgIHJldHVybiBpc2FscGhhKHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKK30KK2lubGluZSBib29sIElzQWxO
dW0oY2hhciBjaCkgeworICByZXR1cm4gaXNhbG51bShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PihjaCkpICE9IDA7Cit9CitpbmxpbmUgYm9vbCBJc0RpZ2l0KGNoYXIgY2gpIHsKKyAgcmV0dXJu
IGlzZGlnaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOworfQoraW5saW5l
IGJvb2wgSXNMb3dlcihjaGFyIGNoKSB7CisgIHJldHVybiBpc2xvd2VyKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKK30KK2lubGluZSBib29sIElzU3BhY2UoY2hhciBjaCkg
eworICByZXR1cm4gaXNzcGFjZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpICE9IDA7
Cit9CitpbmxpbmUgYm9vbCBJc1VwcGVyKGNoYXIgY2gpIHsKKyAgcmV0dXJuIGlzdXBwZXIoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNYRGln
aXQoY2hhciBjaCkgeworICByZXR1cm4gaXN4ZGlnaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cj4oY2gpKSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNYRGlnaXQod2NoYXJfdCBjaCkgeworICBj
b25zdCB1bnNpZ25lZCBjaGFyIGxvd19ieXRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
Y2gpOworICByZXR1cm4gY2ggPT0gbG93X2J5dGUgJiYgaXN4ZGlnaXQobG93X2J5dGUpICE9IDA7
Cit9CisKK2lubGluZSBjaGFyIFRvTG93ZXIoY2hhciBjaCkgeworICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y2hhcj4odG9sb3dlcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpKTsKK30KK2lu
bGluZSBjaGFyIFRvVXBwZXIoY2hhciBjaCkgeworICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcj4o
dG91cHBlcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpKTsKK30KKworaW5saW5lIHN0
ZDo6c3RyaW5nIFN0cmlwVHJhaWxpbmdTcGFjZXMoc3RkOjpzdHJpbmcgc3RyKSB7CisgIHN0ZDo6
c3RyaW5nOjppdGVyYXRvciBpdCA9IHN0ci5lbmQoKTsKKyAgd2hpbGUgKGl0ICE9IHN0ci5iZWdp
bigpICYmIElzU3BhY2UoKi0taXQpKQorICAgIGl0ID0gc3RyLmVyYXNlKGl0KTsKKyAgcmV0dXJu
IHN0cjsKK30KKwogLy8gVGhlIHRlc3Rpbmc6OmludGVybmFsOjpwb3NpeCBuYW1lc3BhY2UgaG9s
ZHMgd3JhcHBlcnMgZm9yIGNvbW1vbgogLy8gUE9TSVggZnVuY3Rpb25zLiAgVGhlc2Ugd3JhcHBl
cnMgaGlkZSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbgogLy8gV2luZG93cy9NU1ZDIGFuZCBQT1NJ
WCBzeXN0ZW1zLiAgU2luY2Ugc29tZSBjb21waWxlcnMgZGVmaW5lIHRoZXNlCkBAIC0xMzE0LDM2
ICsyNDQ5LDM2IEBAIG5hbWVzcGFjZSBwb3NpeCB7CiAKIHR5cGVkZWYgc3RydWN0IF9zdGF0IFN0
YXRTdHJ1Y3Q7CiAKLSNpZmRlZiBfX0JPUkxBTkRDX18KKyMgaWZkZWYgX19CT1JMQU5EQ19fCiBp
bmxpbmUgaW50IElzQVRUWShpbnQgZmQpIHsgcmV0dXJuIGlzYXR0eShmZCk7IH0KIGlubGluZSBp
bnQgU3RyQ2FzZUNtcChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIpIHsKICAgcmV0dXJu
IHN0cmljbXAoczEsIHMyKTsKIH0KIGlubGluZSBjaGFyKiBTdHJEdXAoY29uc3QgY2hhciogc3Jj
KSB7IHJldHVybiBzdHJkdXAoc3JjKTsgfQotI2Vsc2UgIC8vICFfX0JPUkxBTkRDX18KLSNpZiBH
VEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBlbHNlICAvLyAhX19CT1JMQU5EQ19fCisjICBpZiBH
VEVTVF9PU19XSU5ET1dTX01PQklMRQogaW5saW5lIGludCBJc0FUVFkoaW50IC8qIGZkICovKSB7
IHJldHVybiAwOyB9Ci0jZWxzZQorIyAgZWxzZQogaW5saW5lIGludCBJc0FUVFkoaW50IGZkKSB7
IHJldHVybiBfaXNhdHR5KGZkKTsgfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklM
RQorIyAgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiBpbmxpbmUgaW50IFN0ckNh
c2VDbXAoY29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyKSB7CiAgIHJldHVybiBfc3RyaWNt
cChzMSwgczIpOwogfQogaW5saW5lIGNoYXIqIFN0ckR1cChjb25zdCBjaGFyKiBzcmMpIHsgcmV0
dXJuIF9zdHJkdXAoc3JjKTsgfQotI2VuZGlmICAvLyBfX0JPUkxBTkRDX18KKyMgZW5kaWYgIC8v
IF9fQk9STEFORENfXwogCi0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaWYgR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKIGlubGluZSBpbnQgRmlsZU5vKEZJTEUqIGZpbGUpIHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50PihfZmlsZW5vKGZpbGUpKTsgfQogLy8gU3RhdCgpLCBSbURp
cigpLCBhbmQgSXNEaXIoKSBhcmUgbm90IG5lZWRlZCBvbiBXaW5kb3dzIENFIGF0IHRoaXMKIC8v
IHRpbWUgYW5kIHRodXMgbm90IGRlZmluZWQgdGhlcmUuCi0jZWxzZQorIyBlbHNlCiBpbmxpbmUg
aW50IEZpbGVObyhGSUxFKiBmaWxlKSB7IHJldHVybiBfZmlsZW5vKGZpbGUpOyB9CiBpbmxpbmUg
aW50IFN0YXQoY29uc3QgY2hhciogcGF0aCwgU3RhdFN0cnVjdCogYnVmKSB7IHJldHVybiBfc3Rh
dChwYXRoLCBidWYpOyB9CiBpbmxpbmUgaW50IFJtRGlyKGNvbnN0IGNoYXIqIGRpcikgeyByZXR1
cm4gX3JtZGlyKGRpcik7IH0KIGlubGluZSBib29sIElzRGlyKGNvbnN0IFN0YXRTdHJ1Y3QmIHN0
KSB7CiAgIHJldHVybiAoX1NfSUZESVIgJiBzdC5zdF9tb2RlKSAhPSAwOwogfQotI2VuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKIAogI2Vsc2UKIApAQCAtMTM2MywxMSArMjQ5OCw3IEBAIGlubGluZSBib29sIElzRGly
KGNvbnN0IFN0YXRTdHJ1Y3QmIHN0KSB7IHJldHVybiBTX0lTRElSKHN0LnN0X21vZGUpOyB9CiAK
IC8vIEZ1bmN0aW9ucyBkZXByZWNhdGVkIGJ5IE1TVkMgOC4wLgogCi0jaWZkZWYgX01TQ19WRVIK
LS8vIFRlbXBvcmFyaWx5IGRpc2FibGUgd2FybmluZyA0OTk2IChkZXByZWNhdGVkIGZ1bmN0aW9u
KS4KLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDk5NikK
LSNlbmRpZgorR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRFRF9QVVNIXygpCiAKIGlubGluZSBj
b25zdCBjaGFyKiBTdHJOQ3B5KGNoYXIqIGRlc3QsIGNvbnN0IGNoYXIqIHNyYywgc2l6ZV90IG4p
IHsKICAgcmV0dXJuIHN0cm5jcHkoZGVzdCwgc3JjLCBuKTsKQEAgLTEzNzcsNyArMjUwOCw3IEBA
IGlubGluZSBjb25zdCBjaGFyKiBTdHJOQ3B5KGNoYXIqIGRlc3QsIGNvbnN0IGNoYXIqIHNyYywg
c2l6ZV90IG4pIHsKIC8vIFN0ckVycm9yKCkgYXJlbid0IG5lZWRlZCBvbiBXaW5kb3dzIENFIGF0
IHRoaXMgdGltZSBhbmQgdGh1cyBub3QKIC8vIGRlZmluZWQgdGhlcmUuCiAKLSNpZiAhR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKKyNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNU
X09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQKIGlubGluZSBpbnQgQ2hE
aXIoY29uc3QgY2hhciogZGlyKSB7IHJldHVybiBjaGRpcihkaXIpOyB9CiAjZW5kaWYKIGlubGlu
ZSBGSUxFKiBGT3Blbihjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyKiBtb2RlKSB7CkBAIC0x
NDAxLDggKzI1MzIsOSBAQCBpbmxpbmUgaW50IENsb3NlKGludCBmZCkgeyByZXR1cm4gY2xvc2Uo
ZmQpOyB9CiBpbmxpbmUgY29uc3QgY2hhciogU3RyRXJyb3IoaW50IGVycm51bSkgeyByZXR1cm4g
c3RyZXJyb3IoZXJybnVtKTsgfQogI2VuZGlmCiBpbmxpbmUgY29uc3QgY2hhciogR2V0RW52KGNv
bnN0IGNoYXIqIG5hbWUpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorI2lmIEdURVNU
X09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNUX09TX1dJTkRPV1NfUEhPTkUgfHwgR1RFU1RfT1Nf
V0lORE9XU19SVAogICAvLyBXZSBhcmUgb24gV2luZG93cyBDRSwgd2hpY2ggaGFzIG5vIGVudmly
b25tZW50IHZhcmlhYmxlcy4KKyAgc3RhdGljX2Nhc3Q8dm9pZD4obmFtZSk7ICAvLyBUbyBwcmV2
ZW50ICd1bnVzZWQgYXJndW1lbnQnIHdhcm5pbmcuCiAgIHJldHVybiBOVUxMOwogI2VsaWYgZGVm
aW5lZChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQoX19TdW5PU181XzgpIHx8IGRlZmluZWQoX19T
dW5PU181XzkpCiAgIC8vIEVudmlyb25tZW50IHZhcmlhYmxlcyB3aGljaCB3ZSBwcm9ncmFtbWF0
aWNhbGx5IGNsZWFyIHdpbGwgYmUgc2V0IHRvIHRoZQpAQCAtMTQxNCw5ICsyNTQ2LDcgQEAgaW5s
aW5lIGNvbnN0IGNoYXIqIEdldEVudihjb25zdCBjaGFyKiBuYW1lKSB7CiAjZW5kaWYKIH0KIAot
I2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmcocG9wKSAgLy8gUmVzdG9yZXMgdGhlIHdh
cm5pbmcgc3RhdGUuCi0jZW5kaWYKK0dURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUE9QXygp
CiAKICNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogLy8gV2luZG93cyBDRSBoYXMgbm8gQyBs
aWJyYXJ5LiBUaGUgYWJvcnQoKSBmdW5jdGlvbiBpcyB1c2VkIGluCkBAIC0xNDI5LDYgKzI1NTks
MjMgQEAgaW5saW5lIHZvaWQgQWJvcnQoKSB7IGFib3J0KCk7IH0KIAogfSAgLy8gbmFtZXNwYWNl
IHBvc2l4CiAKKy8vIE1TVkMgImRlcHJlY2F0ZXMiIHNucHJpbnRmIGFuZCBpc3N1ZXMgd2Fybmlu
Z3Mgd2hlcmV2ZXIgaXQgaXMgdXNlZC4gIEluCisvLyBvcmRlciB0byBhdm9pZCB0aGVzZSB3YXJu
aW5ncywgd2UgbmVlZCB0byB1c2UgX3NucHJpbnRmIG9yIF9zbnByaW50Zl9zIG9uCisvLyBNU1ZD
LWJhc2VkIHBsYXRmb3Jtcy4gIFdlIG1hcCB0aGUgR1RFU1RfU05QUklOVEZfIG1hY3JvIHRvIHRo
ZSBhcHByb3ByaWF0ZQorLy8gZnVuY3Rpb24gaW4gb3JkZXIgdG8gYWNoaWV2ZSB0aGF0LiAgV2Ug
dXNlIG1hY3JvIGRlZmluaXRpb24gaGVyZSBiZWNhdXNlCisvLyBzbnByaW50ZiBpcyBhIHZhcmlh
ZGljIGZ1bmN0aW9uLgorI2lmIF9NU0NfVkVSID49IDE0MDAgJiYgIUdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFCisvLyBNU1ZDIDIwMDUgYW5kIGFib3ZlIHN1cHBvcnQgdmFyaWFkaWMgbWFjcm9zLgor
IyBkZWZpbmUgR1RFU1RfU05QUklOVEZfKGJ1ZmZlciwgc2l6ZSwgZm9ybWF0LCAuLi4pIFwKKyAg
ICAgX3NucHJpbnRmX3MoYnVmZmVyLCBzaXplLCBzaXplLCBmb3JtYXQsIF9fVkFfQVJHU19fKQor
I2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKy8vIFdpbmRvd3MgQ0UgZG9lcyBub3QgZGVmaW5lIF9z
bnByaW50Zl9zIGFuZCBNU1ZDIHByaW9yIHRvIDIwMDUgZG9lc24ndAorLy8gY29tcGxhaW4gYWJv
dXQgX3NucHJpbnRmLgorIyBkZWZpbmUgR1RFU1RfU05QUklOVEZfIF9zbnByaW50ZgorI2Vsc2UK
KyMgZGVmaW5lIEdURVNUX1NOUFJJTlRGXyBzbnByaW50ZgorI2VuZGlmCisKIC8vIFRoZSBtYXhp
bXVtIG51bWJlciBhIEJpZ2dlc3RJbnQgY2FuIHJlcHJlc2VudC4gIFRoaXMgZGVmaW5pdGlvbgog
Ly8gd29ya3Mgbm8gbWF0dGVyIEJpZ2dlc3RJbnQgaXMgcmVwcmVzZW50ZWQgaW4gb25lJ3MgY29t
cGxlbWVudCBvcgogLy8gdHdvJ3MgY29tcGxlbWVudC4KQEAgLTE1MDAsMjcgKzI2NDcsNDQgQEAg
dHlwZWRlZiBUeXBlV2l0aFNpemU8OD46OkludCBUaW1lSW5NaWxsaXM7ICAvLyBSZXByZXNlbnRz
IHRpbWUgaW4gbWlsbGlzZWNvbmRzLgogLy8gVXRpbGl0aWVzIGZvciBjb21tYW5kIGxpbmUgZmxh
Z3MgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlcy4KIAogLy8gTWFjcm8gZm9yIHJlZmVyZW5jaW5n
IGZsYWdzLgotI2RlZmluZSBHVEVTVF9GTEFHKG5hbWUpIEZMQUdTX2d0ZXN0XyMjbmFtZQorI2lm
ICFkZWZpbmVkKEdURVNUX0ZMQUcpCisjIGRlZmluZSBHVEVTVF9GTEFHKG5hbWUpIEZMQUdTX2d0
ZXN0XyMjbmFtZQorI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9GTEFHKQorCisjaWYgIWRlZmlu
ZWQoR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXykKKyMgZGVmaW5lIEdURVNUX1VTRV9PV05f
RkxBR0ZJTEVfRkxBR18gMQorI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9VU0VfT1dOX0ZMQUdG
SUxFX0ZMQUdfKQorCisjaWYgIWRlZmluZWQoR1RFU1RfREVDTEFSRV9ib29sXykKKyMgZGVmaW5l
IEdURVNUX0ZMQUdfU0FWRVJfIDo6dGVzdGluZzo6aW50ZXJuYWw6OkdUZXN0RmxhZ1NhdmVyCiAK
IC8vIE1hY3JvcyBmb3IgZGVjbGFyaW5nIGZsYWdzLgotI2RlZmluZSBHVEVTVF9ERUNMQVJFX2Jv
b2xfKG5hbWUpIEdURVNUX0FQSV8gZXh0ZXJuIGJvb2wgR1RFU1RfRkxBRyhuYW1lKQotI2RlZmlu
ZSBHVEVTVF9ERUNMQVJFX2ludDMyXyhuYW1lKSBcCisjIGRlZmluZSBHVEVTVF9ERUNMQVJFX2Jv
b2xfKG5hbWUpIEdURVNUX0FQSV8gZXh0ZXJuIGJvb2wgR1RFU1RfRkxBRyhuYW1lKQorIyBkZWZp
bmUgR1RFU1RfREVDTEFSRV9pbnQzMl8obmFtZSkgXAogICAgIEdURVNUX0FQSV8gZXh0ZXJuIDo6
dGVzdGluZzo6aW50ZXJuYWw6OkludDMyIEdURVNUX0ZMQUcobmFtZSkKLSNkZWZpbmUgR1RFU1Rf
REVDTEFSRV9zdHJpbmdfKG5hbWUpIFwKLSAgICBHVEVTVF9BUElfIGV4dGVybiA6OnRlc3Rpbmc6
OmludGVybmFsOjpTdHJpbmcgR1RFU1RfRkxBRyhuYW1lKQorIyBkZWZpbmUgR1RFU1RfREVDTEFS
RV9zdHJpbmdfKG5hbWUpIFwKKyAgICBHVEVTVF9BUElfIGV4dGVybiA6OnN0ZDo6c3RyaW5nIEdU
RVNUX0ZMQUcobmFtZSkKIAogLy8gTWFjcm9zIGZvciBkZWZpbmluZyBmbGFncy4KLSNkZWZpbmUg
R1RFU1RfREVGSU5FX2Jvb2xfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpIFwKKyMgZGVmaW5lIEdU
RVNUX0RFRklORV9ib29sXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCiAgICAgR1RFU1RfQVBJ
XyBib29sIEdURVNUX0ZMQUcobmFtZSkgPSAoZGVmYXVsdF92YWwpCi0jZGVmaW5lIEdURVNUX0RF
RklORV9pbnQzMl8obmFtZSwgZGVmYXVsdF92YWwsIGRvYykgXAorIyBkZWZpbmUgR1RFU1RfREVG
SU5FX2ludDMyXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCiAgICAgR1RFU1RfQVBJXyA6OnRl
c3Rpbmc6OmludGVybmFsOjpJbnQzMiBHVEVTVF9GTEFHKG5hbWUpID0gKGRlZmF1bHRfdmFsKQot
I2RlZmluZSBHVEVTVF9ERUZJTkVfc3RyaW5nXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCi0g
ICAgR1RFU1RfQVBJXyA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmcgR1RFU1RfRkxBRyhuYW1l
KSA9IChkZWZhdWx0X3ZhbCkKKyMgZGVmaW5lIEdURVNUX0RFRklORV9zdHJpbmdfKG5hbWUsIGRl
ZmF1bHRfdmFsLCBkb2MpIFwKKyAgICBHVEVTVF9BUElfIDo6c3RkOjpzdHJpbmcgR1RFU1RfRkxB
RyhuYW1lKSA9IChkZWZhdWx0X3ZhbCkKKworI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9ERUNM
QVJFX2Jvb2xfKQorCisvLyBUaHJlYWQgYW5ub3RhdGlvbnMKKyNpZiAhZGVmaW5lZChHVEVTVF9F
WENMVVNJVkVfTE9DS19SRVFVSVJFRF8pCisjIGRlZmluZSBHVEVTVF9FWENMVVNJVkVfTE9DS19S
RVFVSVJFRF8obG9ja3MpCisjIGRlZmluZSBHVEVTVF9MT0NLX0VYQ0xVREVEXyhsb2NrcykKKyNl
bmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKQogCiAvLyBQ
YXJzZXMgJ3N0cicgZm9yIGEgMzItYml0IHNpZ25lZCBpbnRlZ2VyLiAgSWYgc3VjY2Vzc2Z1bCwg
d3JpdGVzIHRoZSByZXN1bHQKIC8vIHRvICp2YWx1ZSBhbmQgcmV0dXJucyB0cnVlOyBvdGhlcndp
c2UgbGVhdmVzICp2YWx1ZSB1bmNoYW5nZWQgYW5kIHJldHVybnMKIC8vIGZhbHNlLgotLy8gVE9E
TyhjaGFuZGxlcmMpOiBGaW5kIGEgYmV0dGVyIHdheSB0byByZWZhY3RvciBmbGFnIGFuZCBlbnZp
cm9ubWVudCBwYXJzaW5nCisvLyBGSVhNRTogRmluZCBhIGJldHRlciB3YXkgdG8gcmVmYWN0b3Ig
ZmxhZyBhbmQgZW52aXJvbm1lbnQgcGFyc2luZwogLy8gb3V0IG9mIGJvdGggZ3Rlc3QtcG9ydC5j
YyBhbmQgZ3Rlc3QuY2MgdG8gYXZvaWQgZXhwb3J0aW5nIHRoaXMgdXRpbGl0eQogLy8gZnVuY3Rp
b24uCiBib29sIFBhcnNlSW50MzIoY29uc3QgTWVzc2FnZSYgc3JjX3RleHQsIGNvbnN0IGNoYXIq
IHN0ciwgSW50MzIqIHZhbHVlKTsKQEAgLTE1MjksNiArMjY5Myw3IEBAIGJvb2wgUGFyc2VJbnQz
Mihjb25zdCBNZXNzYWdlJiBzcmNfdGV4dCwgY29uc3QgY2hhciogc3RyLCBJbnQzMiogdmFsdWUp
OwogLy8gY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gR29vZ2xlIFRlc3QgZmxhZy4KIGJvb2wg
Qm9vbEZyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBib29sIGRlZmF1bHRfdmFsKTsKIEdU
RVNUX0FQSV8gSW50MzIgSW50MzJGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywgSW50MzIg
ZGVmYXVsdF92YWwpOworc3RkOjpzdHJpbmcgT3V0cHV0RmxhZ0Fsc29DaGVja0VudlZhcigpOwog
Y29uc3QgY2hhciogU3RyaW5nRnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIGNvbnN0IGNo
YXIqIGRlZmF1bHRfdmFsKTsKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXN0
cmluZy5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9n
dGVzdC1zdHJpbmcuaAppbmRleCBhZmYwOTNkZWM4ZGIzOTkwNzRlYTNiNzFiYjcyMjdkYTdlOTY3
MzBhLi40YzliNjI2MmMzYzEwMzcyNmFhM2NhYjRjMTk5OTViYWVmOTU4Yjk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXN0
cmluZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3Qtc3RyaW5nLmgKQEAgLTI3LDcwICsyNywzOCBAQAogLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogLy8KLS8vIEF1dGhvcnM6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBX
YW4pLCBlZWZhY21AZ21haWwuY29tIChTZWFuIE1jYWZlZSkKLS8vCi0vLyBUaGUgR29vZ2xlIEMr
KyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0
aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBoZWFk
ZXIgZmlsZSBkZWNsYXJlcyB0aGUgU3RyaW5nIGNsYXNzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRl
cm5hbGx5IGJ5CiAvLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdp
dGhvdXQgbm90aWNlLiBUaGV5IHNob3VsZCBub3QgdXNlZAogLy8gYnkgY29kZSBleHRlcm5hbCB0
byBHb29nbGUgVGVzdC4KIC8vCi0vLyBUaGlzIGhlYWRlciBmaWxlIGlzICNpbmNsdWRlZCBieSA8
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4uCisvLyBUaGlzIGhlYWRlciBmaWxlIGlz
ICNpbmNsdWRlZCBieSBndGVzdC1pbnRlcm5hbC5oLgogLy8gSXQgc2hvdWxkIG5vdCBiZSAjaW5j
bHVkZWQgYnkgb3RoZXIgZmlsZXMuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxF
VEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1NUUklOR19I
XwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1NUUklOR19IXwog
CiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBzdHJpbmcuaCBpcyBub3QgZ3VhcmFudGVlZCB0byBw
cm92aWRlIHN0cmNweSBvbiBDKysgQnVpbGRlci4KLSNpbmNsdWRlIDxtZW0uaD4KKyMgaW5jbHVk
ZSA8bWVtLmg+CiAjZW5kaWYKIAogI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPGd0ZXN0
L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLQogI2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUg
Imd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKwogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFt
ZXNwYWNlIGludGVybmFsIHsKIAotLy8gU3RyaW5nIC0gYSBVVEYtOCBzdHJpbmcgY2xhc3MuCi0v
LwotLy8gRm9yIGhpc3RvcmljIHJlYXNvbnMsIHdlIGRvbid0IHVzZSBzdGQ6OnN0cmluZy4KLS8v
Ci0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogcmVwbGFjZSB0aGlzIGNsYXNzIHdpdGggc3RkOjpz
dHJpbmcgb3IKLS8vIGltcGxlbWVudCBpdCBpbiB0ZXJtcyBvZiB0aGUgbGF0dGVyLgotLy8KLS8v
IE5vdGUgdGhhdCBTdHJpbmcgY2FuIHJlcHJlc2VudCBib3RoIE5VTEwgYW5kIHRoZSBlbXB0eSBz
dHJpbmcsCi0vLyB3aGlsZSBzdGQ6OnN0cmluZyBjYW5ub3QgcmVwcmVzZW50IE5VTEwuCi0vLwot
Ly8gTlVMTCBhbmQgdGhlIGVtcHR5IHN0cmluZyBhcmUgY29uc2lkZXJlZCBkaWZmZXJlbnQuICBO
VUxMIGlzIGxlc3MKLS8vIHRoYW4gYW55dGhpbmcgKGluY2x1ZGluZyB0aGUgZW1wdHkgc3RyaW5n
KSBleGNlcHQgaXRzZWxmLgotLy8KLS8vIFRoaXMgY2xhc3Mgb25seSBwcm92aWRlcyBtaW5pbXVt
IGZ1bmN0aW9uYWxpdHkgbmVjZXNzYXJ5IGZvcgotLy8gaW1wbGVtZW50aW5nIEdvb2dsZSBUZXN0
LiAgV2UgZG8gbm90IGludGVuZCB0byBpbXBsZW1lbnQgYSBmdWxsLWZsZWRnZWQKLS8vIHN0cmlu
ZyBjbGFzcyBoZXJlLgotLy8KLS8vIFNpbmNlIHRoZSBwdXJwb3NlIG9mIHRoaXMgY2xhc3MgaXMg
dG8gcHJvdmlkZSBhIHN1YnN0aXR1dGUgZm9yCi0vLyBzdGQ6OnN0cmluZyBvbiBwbGF0Zm9ybXMg
d2hlcmUgaXQgY2Fubm90IGJlIHVzZWQsIHdlIGRlZmluZSBhIGNvcHkKLS8vIGNvbnN0cnVjdG9y
IGFuZCBhc3NpZ25tZW50IG9wZXJhdG9ycyBzdWNoIHRoYXQgd2UgZG9uJ3QgbmVlZAotLy8gY29u
ZGl0aW9uYWwgY29tcGlsYXRpb24gaW4gYSBsb3Qgb2YgcGxhY2VzLgotLy8KLS8vIEluIG9yZGVy
IHRvIG1ha2UgdGhlIHJlcHJlc2VudGF0aW9uIGVmZmljaWVudCwgdGhlIGQndG9yIG9mIFN0cmlu
ZwotLy8gaXMgbm90IHZpcnR1YWwuICBUaGVyZWZvcmUgRE8gTk9UIElOSEVSSVQgRlJPTSBTdHJp
bmcuCisvLyBTdHJpbmcgLSBhbiBhYnN0cmFjdCBjbGFzcyBob2xkaW5nIHN0YXRpYyBzdHJpbmcg
dXRpbGl0aWVzLgogY2xhc3MgR1RFU1RfQVBJXyBTdHJpbmcgewogIHB1YmxpYzoKICAgLy8gU3Rh
dGljIHV0aWxpdHkgbWV0aG9kcwogCi0gIC8vIFJldHVybnMgdGhlIGlucHV0IGVuY2xvc2VkIGlu
IGRvdWJsZSBxdW90ZXMgaWYgaXQncyBub3QgTlVMTDsKLSAgLy8gb3RoZXJ3aXNlIHJldHVybnMg
IihudWxsKSIuICBGb3IgZXhhbXBsZSwgIlwiSGVsbG9cIiIgaXMgcmV0dXJuZWQKLSAgLy8gZm9y
IGlucHV0ICJIZWxsbyIuCi0gIC8vCi0gIC8vIFRoaXMgaXMgdXNlZnVsIGZvciBwcmludGluZyBh
IEMgc3RyaW5nIGluIHRoZSBzeW50YXggb2YgYSBsaXRlcmFsLgotICAvLwotICAvLyBLbm93biBp
c3N1ZTogZXNjYXBlIHNlcXVlbmNlcyBhcmUgbm90IGhhbmRsZWQgeWV0LgotICBzdGF0aWMgU3Ry
aW5nIFNob3dDU3RyaW5nUXVvdGVkKGNvbnN0IGNoYXIqIGNfc3RyKTsKLQogICAvLyBDbG9uZXMg
YSAwLXRlcm1pbmF0ZWQgQyBzdHJpbmcsIGFsbG9jYXRpbmcgbWVtb3J5IHVzaW5nIG5ldy4gIFRo
ZQogICAvLyBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZSByZXR1cm4gdmFs
dWUgdXNpbmcKICAgLy8gZGVsZXRlW10uICBSZXR1cm5zIHRoZSBjbG9uZWQgc3RyaW5nLCBvciBO
VUxMIGlmIHRoZSBpbnB1dCBpcwpAQCAtMTM3LDExICsxMDUsNyBAQCBjbGFzcyBHVEVTVF9BUElf
IFN0cmluZyB7CiAgIC8vIE5VTEwgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gIihudWxsKSIuICBJZiBh
biBlcnJvciBvY2N1cnJlZCBkdXJpbmcKICAgLy8gdGhlIGNvbnZlcnNpb24sICIoZmFpbGVkIHRv
IGNvbnZlcnQgZnJvbSB3aWRlIHN0cmluZykiIGlzCiAgIC8vIHJldHVybmVkLgotICBzdGF0aWMg
U3RyaW5nIFNob3dXaWRlQ1N0cmluZyhjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKTsKLQotICAv
LyBTaW1pbGFyIHRvIFNob3dXaWRlQ1N0cmluZygpLCBleGNlcHQgdGhhdCB0aGlzIGZ1bmN0aW9u
IGVuY2xvc2VzCi0gIC8vIHRoZSBjb252ZXJ0ZWQgc3RyaW5nIGluIGRvdWJsZSBxdW90ZXMuCi0g
IHN0YXRpYyBTdHJpbmcgU2hvd1dpZGVDU3RyaW5nUXVvdGVkKGNvbnN0IHdjaGFyX3QqIHdpZGVf
Y19zdHIpOworICBzdGF0aWMgc3RkOjpzdHJpbmcgU2hvd1dpZGVDU3RyaW5nKGNvbnN0IHdjaGFy
X3QqIHdpZGVfY19zdHIpOwogCiAgIC8vIENvbXBhcmVzIHR3byB3aWRlIEMgc3RyaW5ncy4gIFJl
dHVybnMgdHJ1ZSBpZmYgdGhleSBoYXZlIHRoZSBzYW1lCiAgIC8vIGNvbnRlbnQuCkBAIC0xNzUs
MTc0ICsxMzksMjcgQEAgY2xhc3MgR1RFU1RfQVBJXyBTdHJpbmcgewogICBzdGF0aWMgYm9vbCBD
YXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscyhjb25zdCB3Y2hhcl90KiBsaHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3Qq
IHJocyk7CiAKLSAgLy8gRm9ybWF0cyBhIGxpc3Qgb2YgYXJndW1lbnRzIHRvIGEgU3RyaW5nLCB1
c2luZyB0aGUgc2FtZSBmb3JtYXQKLSAgLy8gc3BlYyBzdHJpbmcgYXMgZm9yIHByaW50Zi4KLSAg
Ly8KLSAgLy8gV2UgZG8gbm90IHVzZSB0aGUgU3RyaW5nUHJpbnRmIGNsYXNzIGFzIGl0IGlzIG5v
dCB1bml2ZXJzYWxseQotICAvLyBhdmFpbGFibGUuCi0gIC8vCi0gIC8vIFRoZSByZXN1bHQgaXMg
bGltaXRlZCB0byA0MDk2IGNoYXJhY3RlcnMgKGluY2x1ZGluZyB0aGUgdGFpbGluZwotICAvLyAw
KS4gIElmIDQwOTYgY2hhcmFjdGVycyBhcmUgbm90IGVub3VnaCB0byBmb3JtYXQgdGhlIGlucHV0
LAotICAvLyAiPGJ1ZmZlciBleGNlZWRlZD4iIGlzIHJldHVybmVkLgotICBzdGF0aWMgU3RyaW5n
IEZvcm1hdChjb25zdCBjaGFyKiBmb3JtYXQsIC4uLik7Ci0KLSAgLy8gQyd0b3JzCi0KLSAgLy8g
VGhlIGRlZmF1bHQgYyd0b3IgY29uc3RydWN0cyBhIE5VTEwgc3RyaW5nLgotICBTdHJpbmcoKSA6
IGNfc3RyXyhOVUxMKSwgbGVuZ3RoXygwKSB7fQotCi0gIC8vIENvbnN0cnVjdHMgYSBTdHJpbmcg
YnkgY2xvbmluZyBhIDAtdGVybWluYXRlZCBDIHN0cmluZy4KLSAgU3RyaW5nKGNvbnN0IGNoYXIq
IGFfY19zdHIpIHsgIC8vIE5PTElOVAotICAgIGlmIChhX2Nfc3RyID09IE5VTEwpIHsKLSAgICAg
IGNfc3RyXyA9IE5VTEw7Ci0gICAgICBsZW5ndGhfID0gMDsKLSAgICB9IGVsc2UgewotICAgICAg
Q29uc3RydWN0Tm9uTnVsbChhX2Nfc3RyLCBzdHJsZW4oYV9jX3N0cikpOwotICAgIH0KLSAgfQor
ICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBnaXZlbiBzdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZl
biBzdWZmaXgsIGlnbm9yaW5nCisgIC8vIGNhc2UuIEFueSBzdHJpbmcgaXMgY29uc2lkZXJlZCB0
byBlbmQgd2l0aCBhbiBlbXB0eSBzdWZmaXguCisgIHN0YXRpYyBib29sIEVuZHNXaXRoQ2FzZUlu
c2Vuc2l0aXZlKAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0ciwgY29uc3Qgc3RkOjpzdHJp
bmcmIHN1ZmZpeCk7CiAKLSAgLy8gQ29uc3RydWN0cyBhIFN0cmluZyBieSBjb3B5aW5nIGEgZ2l2
ZW4gbnVtYmVyIG9mIGNoYXJzIGZyb20gYQotICAvLyBidWZmZXIuICBFLmcuIFN0cmluZygiaGVs
bG8iLCAzKSBjcmVhdGVzIHRoZSBzdHJpbmcgImhlbCIsCi0gIC8vIFN0cmluZygiYVwwYmNkIiwg
NCkgY3JlYXRlcyAiYVwwYmMiLCBTdHJpbmcoTlVMTCwgMCkgY3JlYXRlcyAiIiwKLSAgLy8gYW5k
IFN0cmluZyhOVUxMLCAxKSByZXN1bHRzIGluIGFjY2VzcyB2aW9sYXRpb24uCi0gIFN0cmluZyhj
b25zdCBjaGFyKiBidWZmZXIsIHNpemVfdCBhX2xlbmd0aCkgewotICAgIENvbnN0cnVjdE5vbk51
bGwoYnVmZmVyLCBhX2xlbmd0aCk7Ci0gIH0KKyAgLy8gRm9ybWF0cyBhbiBpbnQgdmFsdWUgYXMg
IiUwMmQiLgorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0SW50V2lkdGgyKGludCB2YWx1ZSk7
ICAvLyAiJTAyZCIgZm9yIHdpZHRoID09IDIKIAotICAvLyBUaGUgY29weSBjJ3RvciBjcmVhdGVz
IGEgbmV3IGNvcHkgb2YgdGhlIHN0cmluZy4gIFRoZSB0d28KLSAgLy8gU3RyaW5nIG9iamVjdHMg
ZG8gbm90IHNoYXJlIGNvbnRlbnQuCi0gIFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cikgOiBjX3N0
cl8oTlVMTCksIGxlbmd0aF8oMCkgeyAqdGhpcyA9IHN0cjsgfQorICAvLyBGb3JtYXRzIGFuIGlu
dCB2YWx1ZSBhcyAiJVgiLgorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0SGV4SW50KGludCB2
YWx1ZSk7CiAKLSAgLy8gRCd0b3IuICBTdHJpbmcgaXMgaW50ZW5kZWQgdG8gYmUgYSBmaW5hbCBj
bGFzcywgc28gdGhlIGQndG9yCi0gIC8vIGRvZXNuJ3QgbmVlZCB0byBiZSB2aXJ0dWFsLgotICB+
U3RyaW5nKCkgeyBkZWxldGVbXSBjX3N0cl87IH0KLQotICAvLyBBbGxvd3MgYSBTdHJpbmcgdG8g
YmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYW4gOjpzdGQ6OnN0cmluZyBvcgotICAvLyA6OnN0
cmluZywgYW5kIHZpY2UgdmVyc2EuICBDb252ZXJ0aW5nIGEgU3RyaW5nIGNvbnRhaW5pbmcgYSBO
VUxMCi0gIC8vIHBvaW50ZXIgdG8gOjpzdGQ6OnN0cmluZyBvciA6OnN0cmluZyBpcyB1bmRlZmlu
ZWQgYmVoYXZpb3IuCi0gIC8vIENvbnZlcnRpbmcgYSA6OnN0ZDo6c3RyaW5nIG9yIDo6c3RyaW5n
IGNvbnRhaW5pbmcgYW4gZW1iZWRkZWQgTlVMCi0gIC8vIGNoYXJhY3RlciB0byBhIFN0cmluZyB3
aWxsIHJlc3VsdCBpbiB0aGUgcHJlZml4IHVwIHRvIHRoZSBmaXJzdAotICAvLyBOVUwgY2hhcmFj
dGVyLgotICBTdHJpbmcoY29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyKSB7Ci0gICAgQ29uc3RydWN0
Tm9uTnVsbChzdHIuY19zdHIoKSwgc3RyLmxlbmd0aCgpKTsKLSAgfQotCi0gIG9wZXJhdG9yIDo6
c3RkOjpzdHJpbmcoKSBjb25zdCB7IHJldHVybiA6OnN0ZDo6c3RyaW5nKGNfc3RyKCksIGxlbmd0
aCgpKTsgfQotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLSAgU3RyaW5nKGNvbnN0IDo6
c3RyaW5nJiBzdHIpIHsKLSAgICBDb25zdHJ1Y3ROb25OdWxsKHN0ci5jX3N0cigpLCBzdHIubGVu
Z3RoKCkpOwotICB9Ci0KLSAgb3BlcmF0b3IgOjpzdHJpbmcoKSBjb25zdCB7IHJldHVybiA6OnN0
cmluZyhjX3N0cigpLCBsZW5ndGgoKSk7IH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9T
VFJJTkcKLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgaXMgYW4gZW1wdHkgc3RyaW5nIChp
LmUuICIiKS4KLSAgYm9vbCBlbXB0eSgpIGNvbnN0IHsgcmV0dXJuIChjX3N0cigpICE9IE5VTEwp
ICYmIChsZW5ndGgoKSA9PSAwKTsgfQotCi0gIC8vIENvbXBhcmVzIHRoaXMgd2l0aCBhbm90aGVy
IFN0cmluZy4KLSAgLy8gUmV0dXJucyA8IDAgaWYgdGhpcyBpcyBsZXNzIHRoYW4gcmhzLCAwIGlm
IHRoaXMgaXMgZXF1YWwgdG8gcmhzLCBvciA+IDAKLSAgLy8gaWYgdGhpcyBpcyBncmVhdGVyIHRo
YW4gcmhzLgotICBpbnQgQ29tcGFyZShjb25zdCBTdHJpbmcmIHJocykgY29uc3Q7Ci0KLSAgLy8g
UmV0dXJucyB0cnVlIGlmZiB0aGlzIFN0cmluZyBlcXVhbHMgdGhlIGdpdmVuIEMgc3RyaW5nLiAg
QSBOVUxMCi0gIC8vIHN0cmluZyBhbmQgYSBub24tTlVMTCBzdHJpbmcgYXJlIGNvbnNpZGVyZWQg
bm90IGVxdWFsLgotICBib29sIG9wZXJhdG9yPT0oY29uc3QgY2hhciogYV9jX3N0cikgY29uc3Qg
eyByZXR1cm4gQ29tcGFyZShhX2Nfc3RyKSA9PSAwOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlm
ZiB0aGlzIFN0cmluZyBpcyBsZXNzIHRoYW4gdGhlIGdpdmVuIFN0cmluZy4gIEEKLSAgLy8gTlVM
TCBzdHJpbmcgaXMgY29uc2lkZXJlZCBsZXNzIHRoYW4gIiIuCi0gIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IFN0cmluZyYgcmhzKSBjb25zdCB7IHJldHVybiBDb21wYXJlKHJocykgPCAwOyB9Ci0KLSAg
Ly8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIFN0cmluZyBkb2Vzbid0IGVxdWFsIHRoZSBnaXZlbiBD
IHN0cmluZy4gIEEgTlVMTAotICAvLyBzdHJpbmcgYW5kIGEgbm9uLU5VTEwgc3RyaW5nIGFyZSBj
b25zaWRlcmVkIG5vdCBlcXVhbC4KLSAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIqIGFfY19z
dHIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gYV9jX3N0cik7IH0KLQotICAvLyBSZXR1cm5z
IHRydWUgaWZmIHRoaXMgU3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LiAgKkFueSoK
LSAgLy8gU3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGggYSBOVUxMIG9yIGVtcHR5IHN1
ZmZpeC4KLSAgYm9vbCBFbmRzV2l0aChjb25zdCBjaGFyKiBzdWZmaXgpIGNvbnN0OwotCi0gIC8v
IFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBTdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXgs
IG5vdCBjb25zaWRlcmluZwotICAvLyBjYXNlLiBBbnkgU3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8g
ZW5kIHdpdGggYSBOVUxMIG9yIGVtcHR5IHN1ZmZpeC4KLSAgYm9vbCBFbmRzV2l0aENhc2VJbnNl
bnNpdGl2ZShjb25zdCBjaGFyKiBzdWZmaXgpIGNvbnN0OwotCi0gIC8vIFJldHVybnMgdGhlIGxl
bmd0aCBvZiB0aGUgZW5jYXBzdWxhdGVkIHN0cmluZywgb3IgMCBpZiB0aGUKLSAgLy8gc3RyaW5n
IGlzIE5VTEwuCi0gIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBsZW5ndGhfOyB9Ci0K
LSAgLy8gR2V0cyB0aGUgMC10ZXJtaW5hdGVkIEMgc3RyaW5nIHRoaXMgU3RyaW5nIG9iamVjdCBy
ZXByZXNlbnRzLgotICAvLyBUaGUgU3RyaW5nIG9iamVjdCBzdGlsbCBvd25zIHRoZSBzdHJpbmcu
ICBUaGVyZWZvcmUgdGhlIGNhbGxlcgotICAvLyBzaG91bGQgTk9UIGRlbGV0ZSB0aGUgcmV0dXJu
IHZhbHVlLgotICBjb25zdCBjaGFyKiBjX3N0cigpIGNvbnN0IHsgcmV0dXJuIGNfc3RyXzsgfQot
Ci0gIC8vIEFzc2lnbnMgYSBDIHN0cmluZyB0byB0aGlzIG9iamVjdC4gIFNlbGYtYXNzaWdubWVu
dCB3b3Jrcy4KLSAgY29uc3QgU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgY2hhciogYV9jX3N0cikg
ewotICAgIHJldHVybiAqdGhpcyA9IFN0cmluZyhhX2Nfc3RyKTsKLSAgfQotCi0gIC8vIEFzc2ln
bnMgYSBTdHJpbmcgb2JqZWN0IHRvIHRoaXMgb2JqZWN0LiAgU2VsZi1hc3NpZ25tZW50IHdvcmtz
LgotICBjb25zdCBTdHJpbmcmIG9wZXJhdG9yPShjb25zdCBTdHJpbmcmIHJocykgewotICAgIGlm
ICh0aGlzICE9ICZyaHMpIHsKLSAgICAgIGRlbGV0ZVtdIGNfc3RyXzsKLSAgICAgIGlmIChyaHMu
Y19zdHIoKSA9PSBOVUxMKSB7Ci0gICAgICAgIGNfc3RyXyA9IE5VTEw7Ci0gICAgICAgIGxlbmd0
aF8gPSAwOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgQ29uc3RydWN0Tm9uTnVsbChyaHMuY19z
dHIoKSwgcmhzLmxlbmd0aCgpKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gKnRoaXM7
Ci0gIH0KKyAgLy8gRm9ybWF0cyBhIGJ5dGUgYXMgIiUwMlgiLgorICBzdGF0aWMgc3RkOjpzdHJp
bmcgRm9ybWF0Qnl0ZSh1bnNpZ25lZCBjaGFyIHZhbHVlKTsKIAogIHByaXZhdGU6Ci0gIC8vIENv
bnN0cnVjdHMgYSBub24tTlVMTCBTdHJpbmcgZnJvbSB0aGUgZ2l2ZW4gY29udGVudC4gIFRoaXMK
LSAgLy8gZnVuY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gZGF0YV8gaGFzIG5vdCBiZWVu
IGFsbG9jYXRlZC4KLSAgLy8gQ29uc3RydWN0Tm9uTnVsbChOVUxMLCAwKSByZXN1bHRzIGluIGFu
IGVtcHR5IHN0cmluZyAoIiIpLgotICAvLyBDb25zdHJ1Y3ROb25OdWxsKE5VTEwsIG5vbl96ZXJv
KSBpcyB1bmRlZmluZWQgYmVoYXZpb3IuCi0gIHZvaWQgQ29uc3RydWN0Tm9uTnVsbChjb25zdCBj
aGFyKiBidWZmZXIsIHNpemVfdCBhX2xlbmd0aCkgewotICAgIGNoYXIqIGNvbnN0IHN0ciA9IG5l
dyBjaGFyW2FfbGVuZ3RoICsgMV07Ci0gICAgbWVtY3B5KHN0ciwgYnVmZmVyLCBhX2xlbmd0aCk7
Ci0gICAgc3RyW2FfbGVuZ3RoXSA9ICdcMCc7Ci0gICAgY19zdHJfID0gc3RyOwotICAgIGxlbmd0
aF8gPSBhX2xlbmd0aDsKLSAgfQotCi0gIGNvbnN0IGNoYXIqIGNfc3RyXzsKLSAgc2l6ZV90IGxl
bmd0aF87CisgIFN0cmluZygpOyAgLy8gTm90IG1lYW50IHRvIGJlIGluc3RhbnRpYXRlZC4KIH07
ICAvLyBjbGFzcyBTdHJpbmcKIAotLy8gU3RyZWFtcyBhIFN0cmluZyB0byBhbiBvc3RyZWFtLiAg
RWFjaCAnXDAnIGNoYXJhY3RlciBpbiB0aGUgU3RyaW5nCi0vLyBpcyByZXBsYWNlZCB3aXRoICJc
XDAiLgotaW5saW5lIDo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBv
cywgY29uc3QgU3RyaW5nJiBzdHIpIHsKLSAgaWYgKHN0ci5jX3N0cigpID09IE5VTEwpIHsKLSAg
ICBvcyA8PCAiKG51bGwpIjsKLSAgfSBlbHNlIHsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBjX3N0
ciA9IHN0ci5jX3N0cigpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHN0ci5sZW5ndGgo
KTsgaSsrKSB7Ci0gICAgICBpZiAoY19zdHJbaV0gPT0gJ1wwJykgewotICAgICAgICBvcyA8PCAi
XFwwIjsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIG9zIDw8IGNfc3RyW2ldOwotICAgICAgfQot
ICAgIH0KLSAgfQotICByZXR1cm4gb3M7Ci19Ci0KLS8vIEdldHMgdGhlIGNvbnRlbnQgb2YgdGhl
IFN0clN0cmVhbSdzIGJ1ZmZlciBhcyBhIFN0cmluZy4gIEVhY2ggJ1wwJworLy8gR2V0cyB0aGUg
Y29udGVudCBvZiB0aGUgc3RyaW5nc3RyZWFtJ3MgYnVmZmVyIGFzIGFuIHN0ZDo6c3RyaW5nLiAg
RWFjaCAnXDAnCiAvLyBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlciBpcyByZXBsYWNlZCB3aXRoICJc
XDAiLgotR1RFU1RfQVBJXyBTdHJpbmcgU3RyU3RyZWFtVG9TdHJpbmcoU3RyU3RyZWFtKiBzdHJl
YW0pOwotCi0vLyBDb252ZXJ0cyBhIHN0cmVhbWFibGUgdmFsdWUgdG8gYSBTdHJpbmcuICBBIE5V
TEwgcG9pbnRlciBpcwotLy8gY29udmVydGVkIHRvICIobnVsbCkiLiAgV2hlbiB0aGUgaW5wdXQg
dmFsdWUgaXMgYSA6OnN0cmluZywKLS8vIDo6c3RkOjpzdHJpbmcsIDo6d3N0cmluZywgb3IgOjpz
dGQ6OndzdHJpbmcgb2JqZWN0LCBlYWNoIE5VTAotLy8gY2hhcmFjdGVyIGluIGl0IGlzIHJlcGxh
Y2VkIHdpdGggIlxcMCIuCi0KLS8vIERlY2xhcmVkIGhlcmUgYnV0IGRlZmluZWQgaW4gZ3Rlc3Qu
aCwgc28gdGhhdCBpdCBoYXMgYWNjZXNzCi0vLyB0byB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgTWVz
c2FnZSBjbGFzcywgcmVxdWlyZWQgYnkgdGhlIEFSTQotLy8gY29tcGlsZXIuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLVN0cmluZyBTdHJlYW1hYmxlVG9TdHJpbmcoY29uc3QgVCYgc3RyZWFtYWJs
ZSk7CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFN0cmluZ1N0cmVhbVRvU3RyaW5nKDo6c3RkOjpz
dHJpbmdzdHJlYW0qIHN0cmVhbSk7CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8g
bmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaAppbmRleCBjMjdmM2E0MjFk
OWM0OTcxZWRlNDljYzMzMjkxMmQ0YTgzNjBjNWE1Li43OGEzYTZhMDFmYWM3NTUxN2VhYjgzMTMx
MjQyN2UxNWQ1ZTRlYmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oCkBAIC0xLDQgKzEsNiBA
QAotLy8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgYSBzY3JpcHQuICBETyBOT1QgRURJVCBC
WSBIQU5EISEhCisvLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBjb21tYW5kOgorLy8gICAg
IHB1bXAucHkgZ3Rlc3QtdHVwbGUuaC5wdW1wCisvLyBETyBOT1QgRURJVCBCWSBIQU5EISEhCiAK
IC8vIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuCiAvLyBBbGwgUmlnaHRzIFJlc2VydmVkLgpA
QCAtMjgsMTEgKzMwLDEyIEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQor
CiAKIC8vIEltcGxlbWVudHMgYSBzdWJzZXQgb2YgVFIxIHR1cGxlIG5lZWRlZCBieSBHb29nbGUg
VGVzdCBhbmQgR29vZ2xlIE1vY2suCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxF
VEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RVUExFX0hf
CiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFVQTEVfSF8KIApA
QCAtNDAsMTcgKzQzLDI1IEBACiAKIC8vIFRoZSBjb21waWxlciB1c2VkIGluIFN5bWJpYW4gaGFz
IGEgYnVnIHRoYXQgcHJldmVudHMgdXMgZnJvbSBkZWNsYXJpbmcgdGhlCiAvLyB0dXBsZSB0ZW1w
bGF0ZSBhcyBhIGZyaWVuZCAoaXQgY29tcGxhaW5zIHRoYXQgdHVwbGUgaXMgcmVkZWZpbmVkKS4g
IFRoaXMKLS8vIGhhY2sgYnlwYXNzZXMgdGhlIGJ1ZyBieSBkZWNsYXJpbmcgdGhlIG1lbWJlcnMg
dGhhdCBzaG91bGQgb3RoZXJ3aXNlIGJlCisvLyBieXBhc3NlcyB0aGUgYnVnIGJ5IGRlY2xhcmlu
ZyB0aGUgbWVtYmVycyB0aGF0IHNob3VsZCBvdGhlcndpc2UgYmUKIC8vIHByaXZhdGUgYXMgcHVi
bGljLgogLy8gU3VuIFN0dWRpbyB2ZXJzaW9ucyA8IDEyIGFsc28gaGF2ZSB0aGUgYWJvdmUgYnVn
LgogI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgfHwgKGRlZmluZWQoX19TVU5QUk9fQ0MpICYm
IF9fU1VOUFJPX0NDIDwgMHg1OTApCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJ
RU5EXyBwdWJsaWM6CisjIGRlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8gcHVi
bGljOgogI2Vsc2UKLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIFwKKyMg
ZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBcCiAgICAgdGVtcGxhdGUgPEdU
RVNUXzEwX1RZUEVOQU1FU18oVSk+IGZyaWVuZCBjbGFzcyB0dXBsZTsgXAogICAgcHJpdmF0ZToK
ICNlbmRpZgogCisvLyBWaXN1YWwgU3R1ZGlvIDIwMTAsIDIwMTIsIGFuZCAyMDEzIGRlZmluZSBz
eW1ib2xzIGluIHN0ZDo6dHIxIHRoYXQgY29uZmxpY3QKKy8vIHdpdGggb3VyIG93biBkZWZpbml0
aW9ucy4gVGhlcmVmb3JlIHVzaW5nIG91ciBvd24gdHVwbGUgZG9lcyBub3Qgd29yayBvbgorLy8g
dGhvc2UgY29tcGlsZXJzLgorI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE2
MDAgIC8qIDE2MDAgaXMgVmlzdWFsIFN0dWRpbyAyMDEwICovCisjIGVycm9yICJndGVzdCdzIHR1
cGxlIGRvZXNuJ3QgY29tcGlsZSBvbiBWaXN1YWwgU3R1ZGlvIDIwMTAgb3IgbGF0ZXIuIFwKK0dU
RVNUX1VTRV9PV05fVFIxX1RVUExFIG11c3QgYmUgc2V0IHRvIDAgb24gdGhvc2UgY29tcGlsZXJz
LiIKKyNlbmRpZgorCiAvLyBHVEVTVF9uX1RVUExFXyhUKSBpcyB0aGUgdHlwZSBvZiBhbiBuLXR1
cGxlLgogI2RlZmluZSBHVEVTVF8wX1RVUExFXyhUKSB0dXBsZTw+CiAjZGVmaW5lIEdURVNUXzFf
VFVQTEVfKFQpIHR1cGxlPFQjIzAsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQs
IFwKQEAgLTE0MCwzNCArMTUxLDU0IEBAIHRlbXBsYXRlIDxib29sIGtJbmRleFZhbGlkLCBpbnQg
a0luZGV4LCBjbGFzcyBUdXBsZT4KIHN0cnVjdCBUdXBsZUVsZW1lbnQ7CiAKIHRlbXBsYXRlIDxH
VEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAwLCBHVEVT
VF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUMCB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVu
dDx0cnVlLCAwLCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDAgdHlwZTsKK307
CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVu
dDx0cnVlLCAxLCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUMSB0eXBlOyB9Oworc3Ry
dWN0IFR1cGxlRWxlbWVudDx0cnVlLCAxLCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVk
ZWYgVDEgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3Ry
dWN0IFR1cGxlRWxlbWVudDx0cnVlLCAyLCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBU
MiB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAyLCBHVEVTVF8xMF9UVVBMRV8o
VCkgPiB7CisgIHR5cGVkZWYgVDIgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBF
TkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAzLCBHVEVTVF8xMF9UVVBMRV8o
VCk+IHsgdHlwZWRlZiBUMyB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAzLCBH
VEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDMgdHlwZTsKK307CiAKIHRlbXBsYXRl
IDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA0LCBH
VEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUNCB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxl
bWVudDx0cnVlLCA0LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDQgdHlwZTsK
K307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxl
bWVudDx0cnVlLCA1LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUNSB0eXBlOyB9Owor
c3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA1LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5
cGVkZWYgVDUgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgot
c3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA2LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRl
ZiBUNiB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA2LCBHVEVTVF8xMF9UVVBM
RV8oVCkgPiB7CisgIHR5cGVkZWYgVDYgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9U
WVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA3LCBHVEVTVF8xMF9UVVBM
RV8oVCk+IHsgdHlwZWRlZiBUNyB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA3
LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDcgdHlwZTsKK307CiAKIHRlbXBs
YXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA4
LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUOCB0eXBlOyB9Oworc3RydWN0IFR1cGxl
RWxlbWVudDx0cnVlLCA4LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDggdHlw
ZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxl
RWxlbWVudDx0cnVlLCA5LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUOSB0eXBlOyB9
Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA5LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7Cisg
IHR5cGVkZWYgVDkgdHlwZTsKK307CiAKIH0gIC8vIG5hbWVzcGFjZSBndGVzdF9pbnRlcm5hbAog
CkBAIC03MDgsMzcgKzczOSw1OSBAQCBpbmxpbmUgR1RFU1RfMTBfVFVQTEVfKFQpIG1ha2VfdHVw
bGUoY29uc3QgVDAmIGYwLCBjb25zdCBUMSYgZjEsIGNvbnN0IFQyJiBmMiwKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUdXBsZT4gc3RydWN0IHR1cGxlX3NpemU7CiAKIHRlbXBsYXRlIDxHVEVTVF8wX1RZ
UEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8wX1RVUExFXyhUKT4geyBzdGF0
aWMgY29uc3QgaW50IHZhbHVlID0gMDsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzBfVFVQ
TEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMDsKK307CiAKIHRlbXBsYXRl
IDxHVEVTVF8xX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8xX1RVUExF
XyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMTsgfTsKK3N0cnVjdCB0dXBsZV9zaXpl
PEdURVNUXzFfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMTsKK307
CiAKIHRlbXBsYXRlIDxHVEVTVF8yX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxH
VEVTVF8yX1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMjsgfTsKK3N0cnVj
dCB0dXBsZV9zaXplPEdURVNUXzJfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZh
bHVlID0gMjsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8zX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3Qg
dHVwbGVfc2l6ZTxHVEVTVF8zX1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0g
MzsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzNfVFVQTEVfKFQpID4geworICBzdGF0aWMg
Y29uc3QgaW50IHZhbHVlID0gMzsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF80X1RZUEVOQU1FU18o
VCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF80X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3Qg
aW50IHZhbHVlID0gNDsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzRfVFVQTEVfKFQpID4g
eworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNDsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF81
X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF81X1RVUExFXyhUKT4geyBz
dGF0aWMgY29uc3QgaW50IHZhbHVlID0gNTsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzVf
VFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNTsKK307CiAKIHRlbXBs
YXRlIDxHVEVTVF82X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF82X1RV
UExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNjsgfTsKK3N0cnVjdCB0dXBsZV9z
aXplPEdURVNUXzZfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNjsK
K307CiAKIHRlbXBsYXRlIDxHVEVTVF83X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6
ZTxHVEVTVF83X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNzsgfTsKK3N0
cnVjdCB0dXBsZV9zaXplPEdURVNUXzdfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50
IHZhbHVlID0gNzsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF84X1RZUEVOQU1FU18oVCk+Ci1zdHJ1
Y3QgdHVwbGVfc2l6ZTxHVEVTVF84X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVl
ID0gODsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzhfVFVQTEVfKFQpID4geworICBzdGF0
aWMgY29uc3QgaW50IHZhbHVlID0gODsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF85X1RZUEVOQU1F
U18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF85X1RVUExFXyhUKT4geyBzdGF0aWMgY29u
c3QgaW50IHZhbHVlID0gOTsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzlfVFVQTEVfKFQp
ID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gOTsKK307CiAKIHRlbXBsYXRlIDxHVEVT
VF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFQp
PiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAxMDsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdU
RVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDEwOworfTsK
IAogdGVtcGxhdGUgPGludCBrLCBjbGFzcyBUdXBsZT4KIHN0cnVjdCB0dXBsZV9lbGVtZW50IHsK
QEAgLTkxMiw3ICs5NjUsNyBAQCBzdHJ1Y3QgU2FtZVNpemVUdXBsZVByZWZpeENvbXBhcmF0b3I8
aywgaz4gewogICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGUxLCBjbGFzcyBUdXBsZTI+CiAgIHN0YXRp
YyBib29sIEVxKGNvbnN0IFR1cGxlMSYgdDEsIGNvbnN0IFR1cGxlMiYgdDIpIHsKICAgICByZXR1
cm4gU2FtZVNpemVUdXBsZVByZWZpeENvbXBhcmF0b3I8ayAtIDEsIGsgLSAxPjo6RXEodDEsIHQy
KSAmJgotICAgICAgICA6OnN0ZDo6Z2V0PGsgLSAxPih0MSkgPT0gOjpzdGQ6OmdldDxrIC0gMT4o
dDIpOworICAgICAgICA6OnN0ZDo6dHIxOjpnZXQ8ayAtIDE+KHQxKSA9PSA6OnN0ZDo6dHIxOjpn
ZXQ8ayAtIDE+KHQyKTsKICAgfQogfTsKIApAQCAtOTIyLDggKzk3NSw4IEBAIHRlbXBsYXRlIDxH
VEVTVF8xMF9UWVBFTkFNRVNfKFQpLCBHVEVTVF8xMF9UWVBFTkFNRVNfKFUpPgogaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBHVEVTVF8xMF9UVVBMRV8oVCkmIHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdURVNUXzEwX1RVUExFXyhVKSYgdSkgewogICByZXR1cm4gZ3Rlc3Rf
aW50ZXJuYWw6OlNhbWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9yPAotICAgICAgdHVwbGVfc2l6
ZTxHVEVTVF8xMF9UVVBMRV8oVCk+Ojp2YWx1ZSwKLSAgICAgIHR1cGxlX3NpemU8R1RFU1RfMTBf
VFVQTEVfKFUpPjo6dmFsdWU+OjpFcSh0LCB1KTsKKyAgICAgIHR1cGxlX3NpemU8R1RFU1RfMTBf
VFVQTEVfKFQpID46OnZhbHVlLAorICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8xMF9UVVBMRV8oVSkg
Pjo6dmFsdWU+OjpFcSh0LCB1KTsKIH0KIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18o
VCksIEdURVNUXzEwX1RZUEVOQU1FU18oVSk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5w
dW1wCmluZGV4IDg1ZWJjODA2MmVlMTA0NDczN2IzNmU4YTQwODVkMjY3ZjE4ZGMyMDUuLmJiNjI2
ZTA0OWYwODc4MGZmY2U5NmQ0ODUyY2I4ZWQ1ZDNlZjVmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1w
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtdHVwbGUuaC5wdW1wCkBAIC0yOSwxMSArMjksMTIgQEAgJCQgVGhpcyBtZXRhIGNvbW1lbnQg
Zml4ZXMgYXV0by1pbmRlbnRhdGlvbiBpbiBFbWFjcy4gfX0KIC8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29t
IChaaGFueW9uZyBXYW4pCisKIAogLy8gSW1wbGVtZW50cyBhIHN1YnNldCBvZiBUUjEgdHVwbGUg
bmVlZGVkIGJ5IEdvb2dsZSBUZXN0IGFuZCBHb29nbGUgTW9jay4KIAorLy8gR09PR0xFVEVTVF9D
TTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJO
QUxfR1RFU1RfVFVQTEVfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9H
VEVTVF9UVVBMRV9IXwogCkBAIC00MSwxNyArNDIsMjUgQEAgJCQgVGhpcyBtZXRhIGNvbW1lbnQg
Zml4ZXMgYXV0by1pbmRlbnRhdGlvbiBpbiBFbWFjcy4gfX0KIAogLy8gVGhlIGNvbXBpbGVyIHVz
ZWQgaW4gU3ltYmlhbiBoYXMgYSBidWcgdGhhdCBwcmV2ZW50cyB1cyBmcm9tIGRlY2xhcmluZyB0
aGUKIC8vIHR1cGxlIHRlbXBsYXRlIGFzIGEgZnJpZW5kIChpdCBjb21wbGFpbnMgdGhhdCB0dXBs
ZSBpcyByZWRlZmluZWQpLiAgVGhpcwotLy8gaGFjayBieXBhc3NlcyB0aGUgYnVnIGJ5IGRlY2xh
cmluZyB0aGUgbWVtYmVycyB0aGF0IHNob3VsZCBvdGhlcndpc2UgYmUKKy8vIGJ5cGFzc2VzIHRo
ZSBidWcgYnkgZGVjbGFyaW5nIHRoZSBtZW1iZXJzIHRoYXQgc2hvdWxkIG90aGVyd2lzZSBiZQog
Ly8gcHJpdmF0ZSBhcyBwdWJsaWMuCiAvLyBTdW4gU3R1ZGlvIHZlcnNpb25zIDwgMTIgYWxzbyBo
YXZlIHRoZSBhYm92ZSBidWcuCiAjaWYgZGVmaW5lZChfX1NZTUJJQU4zMl9fKSB8fCAoZGVmaW5l
ZChfX1NVTlBST19DQykgJiYgX19TVU5QUk9fQ0MgPCAweDU5MCkKLSNkZWZpbmUgR1RFU1RfREVD
TEFSRV9UVVBMRV9BU19GUklFTkRfIHB1YmxpYzoKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQ
TEVfQVNfRlJJRU5EXyBwdWJsaWM6CiAjZWxzZQotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExF
X0FTX0ZSSUVORF8gXAorIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIFwK
ICAgICB0ZW1wbGF0ZSA8R1RFU1RfJChuKV9UWVBFTkFNRVNfKFUpPiBmcmllbmQgY2xhc3MgdHVw
bGU7IFwKICAgIHByaXZhdGU6CiAjZW5kaWYKIAorLy8gVmlzdWFsIFN0dWRpbyAyMDEwLCAyMDEy
LCBhbmQgMjAxMyBkZWZpbmUgc3ltYm9scyBpbiBzdGQ6OnRyMSB0aGF0IGNvbmZsaWN0CisvLyB3
aXRoIG91ciBvd24gZGVmaW5pdGlvbnMuIFRoZXJlZm9yZSB1c2luZyBvdXIgb3duIHR1cGxlIGRv
ZXMgbm90IHdvcmsgb24KKy8vIHRob3NlIGNvbXBpbGVycy4KKyNpZiBkZWZpbmVkKF9NU0NfVkVS
KSAmJiBfTVNDX1ZFUiA+PSAxNjAwICAvKiAxNjAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxMCAqLwor
IyBlcnJvciAiZ3Rlc3QncyB0dXBsZSBkb2Vzbid0IGNvbXBpbGUgb24gVmlzdWFsIFN0dWRpbyAy
MDEwIG9yIGxhdGVyLiBcCitHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSBtdXN0IGJlIHNldCB0byAw
IG9uIHRob3NlIGNvbXBpbGVycy4iCisjZW5kaWYKKwogCiAkcmFuZ2UgaSAwLi5uLTEKICRyYW5n
ZSBqIDAuLm4KQEAgLTExOCw4ICsxMjcsOSBAQCBzdHJ1Y3QgVHVwbGVFbGVtZW50OwogCiAkZm9y
IGkgW1sKIHRlbXBsYXRlIDxHVEVTVF8kKG4pX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVF
bGVtZW50PHRydWUsICRpLCBHVEVTVF8kKG4pX1RVUExFXyhUKT4gW1tdXQoteyB0eXBlZGVmIFQk
aSB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAkaSwgR1RFU1RfJChuKV9UVVBM
RV8oVCkgPiB7CisgIHR5cGVkZWYgVCRpIHR5cGU7Cit9OwogCiAKIF1dCkBAIC0yMjAsNyArMjMw
LDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPiBzdHJ1Y3QgdHVwbGVfc2l6ZTsKIAogJGZv
ciBqIFtbCiB0ZW1wbGF0ZSA8R1RFU1RfJChqKV9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxl
X3NpemU8R1RFU1RfJChqKV9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9ICRq
OyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfJChqKV9UVVBMRV8oVCkgPiB7CisgIHN0YXRp
YyBjb25zdCBpbnQgdmFsdWUgPSAkajsKK307CiAKIAogXV0KQEAgLTMwMiw4ICszMTQsOCBAQCB0
ZW1wbGF0ZSA8R1RFU1RfJChuKV9UWVBFTkFNRVNfKFQpLCBHVEVTVF8kKG4pX1RZUEVOQU1FU18o
VSk+CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdURVNUXyQobilfVFVQTEVfKFQpJiB0
LAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHVEVTVF8kKG4pX1RVUExFXyhVKSYgdSkg
ewogICByZXR1cm4gZ3Rlc3RfaW50ZXJuYWw6OlNhbWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9y
PAotICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8kKG4pX1RVUExFXyhUKT46OnZhbHVlLAotICAgICAg
dHVwbGVfc2l6ZTxHVEVTVF8kKG4pX1RVUExFXyhVKT46OnZhbHVlPjo6RXEodCwgdSk7CisgICAg
ICB0dXBsZV9zaXplPEdURVNUXyQobilfVFVQTEVfKFQpID46OnZhbHVlLAorICAgICAgdHVwbGVf
c2l6ZTxHVEVTVF8kKG4pX1RVUExFXyhVKSA+Ojp2YWx1ZT46OkVxKHQsIHUpOwogfQogCiB0ZW1w
bGF0ZSA8R1RFU1RfJChuKV9UWVBFTkFNRVNfKFQpLCBHVEVTVF8kKG4pX1RZUEVOQU1FU18oVSk+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVy
bmFsL2d0ZXN0LXR5cGUtdXRpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaAppbmRleCAwOTNlZWU2ZjAxOTYzNTU2OWY0
MDRhZTYzNTdiOGRlNDhiNzE4ZTgxLi4yOGU0MTEyNDUzNjFjMDhmMjg3MDdlOTI0OGU2ZDAzMzIw
ZTY4NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgKQEAgLTMwLDggKzMwLDcg
QEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0v
LyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogLy8gVHlwZSB1dGls
aXRpZXMgbmVlZGVkIGZvciBpbXBsZW1lbnRpbmcgdHlwZWQgYW5kIHR5cGUtcGFyYW1ldGVyaXpl
ZAogLy8gdGVzdHMuICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBULiAgRE8gTk9U
IEVESVQgQlkgSEFORCEKQEAgLTQxLDU4ICs0MCw4NCBAQAogLy8gUGxlYXNlIGNvbnRhY3QgZ29v
Z2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tIGlmIHlvdSBuZWVkCiAvLyBtb3JlLgog
CisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1RfSU5D
TFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UWVBFX1VUSUxfSF8KICNkZWZpbmUgR1RFU1RfSU5D
TFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UWVBFX1VUSUxfSF8KIAotI2luY2x1ZGUgPGd0ZXN0
L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1z
dHJpbmcuaD4KLQotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9U
RVNUX1AKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKIC8vICNpZmRl
ZiBfX0dOVUNfXyBpcyB0b28gZ2VuZXJhbCBoZXJlLiAgSXQgaXMgcG9zc2libGUgdG8gdXNlIGdj
YyB3aXRob3V0IHVzaW5nCiAvLyBsaWJzdGRjKysgKHdoaWNoIGlzIHdoZXJlIGN4eGFiaS5oIGNv
bWVzIGZyb20pLgotI2lmZGVmIF9fR0xJQkNYWF9fCi0jaW5jbHVkZSA8Y3h4YWJpLmg+Ci0jZW5k
aWYgIC8vIF9fR0xJQkNYWF9fCisjIGlmIEdURVNUX0hBU19DWFhBQklfSF8KKyMgIGluY2x1ZGUg
PGN4eGFiaS5oPgorIyBlbGlmIGRlZmluZWQoX19IUF9hQ0MpCisjICBpbmNsdWRlIDxhY3h4X2Rl
bWFuZ2xlLmg+CisjIGVuZGlmICAvLyBHVEVTVF9IQVNIX0NYWEFCSV9IXwogCiBuYW1lc3BhY2Ug
dGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCi0vLyBBc3NlcnR5VHlwZUVxPFQxLCBU
Mj46OnR5cGUgaXMgZGVmaW5lZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQotLy8gdHlwZS4g
IFRoaXMgY2FuIGJlIHVzZWQgYXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0
aGF0Ci0vLyB0d28gdHlwZXMgYXJlIGVxdWFsLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyPgotc3RydWN0IEFzc2VydFR5cGVFcTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1zdHJ1Y3QgQXNzZXJ0VHlwZUVxPFQsIFQ+IHsKLSAgdHlwZWRlZiBib29sIHR5cGU7Ci19Owor
Ly8gQ2Fub25pY2FsaXplcyBhIGdpdmVuIG5hbWUgd2l0aCByZXNwZWN0IHRvIHRoZSBTdGFuZGFy
ZCBDKysgTGlicmFyeS4KKy8vIFRoaXMgaGFuZGxlcyByZW1vdmluZyB0aGUgaW5saW5lIG5hbWVz
cGFjZSB3aXRoaW4gYHN0ZGAgdGhhdCBpcworLy8gdXNlZCBieSB2YXJpb3VzIHN0YW5kYXJkIGxp
YnJhcmllcyAoZS5nLiwgYHN0ZDo6X18xYCkuICBOYW1lcyBvdXRzaWRlCisvLyBvZiBuYW1lc3Bh
Y2Ugc3RkIGFyZSByZXR1cm5lZCB1bm1vZGlmaWVkLgoraW5saW5lIHN0ZDo6c3RyaW5nIENhbm9u
aWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoc3RkOjpzdHJpbmcgcykgeworICBzdGF0aWMgY29u
c3QgY2hhciBwcmVmaXhbXSA9ICJzdGQ6Ol9fIjsKKyAgaWYgKHMuY29tcGFyZSgwLCBzdHJsZW4o
cHJlZml4KSwgcHJlZml4KSA9PSAwKSB7CisgICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBlbmQg
PSBzLmZpbmQoIjo6Iiwgc3RybGVuKHByZWZpeCkpOworICAgIGlmIChlbmQgIT0gcy5ucG9zKSB7
CisgICAgICAvLyBFcmFzZSBldmVyeXRoaW5nIGJldHdlZW4gdGhlIGluaXRpYWwgYHN0ZGAgYW5k
IHRoZSBzZWNvbmQgYDo6YC4KKyAgICAgIHMuZXJhc2Uoc3RybGVuKCJzdGQiKSwgZW5kIC0gc3Ry
bGVuKCJzdGQiKSk7CisgICAgfQorICB9CisgIHJldHVybiBzOworfQogCiAvLyBHZXRUeXBlTmFt
ZTxUPigpIHJldHVybnMgYSBodW1hbi1yZWFkYWJsZSBuYW1lIG9mIHR5cGUgVC4KKy8vIE5COiBU
aGlzIGZ1bmN0aW9uIGlzIGFsc28gdXNlZCBpbiBHb29nbGUgTW9jaywgc28gZG9uJ3QgbW92ZSBp
dCBpbnNpZGUgb2YKKy8vIHRoZSB0eXBlZC10ZXN0LW9ubHkgc2VjdGlvbiBiZWxvdy4KIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotU3RyaW5nIEdldFR5cGVOYW1lKCkgewotI2lmIEdURVNUX0hBU19S
VFRJCitzdGQ6OnN0cmluZyBHZXRUeXBlTmFtZSgpIHsKKyMgaWYgR1RFU1RfSEFTX1JUVEkKIAog
ICBjb25zdCBjaGFyKiBjb25zdCBuYW1lID0gdHlwZWlkKFQpLm5hbWUoKTsKLSNpZmRlZiBfX0dM
SUJDWFhfXworIyAgaWYgR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBkZWZpbmVkKF9fSFBfYUNDKQog
ICBpbnQgc3RhdHVzID0gMDsKICAgLy8gZ2NjJ3MgaW1wbGVtZW50YXRpb24gb2YgdHlwZWlkKFQp
Lm5hbWUoKSBtYW5nbGVzIHRoZSB0eXBlIG5hbWUsCiAgIC8vIHNvIHdlIGhhdmUgdG8gZGVtYW5n
bGUgaXQuCi0gIGNoYXIqIGNvbnN0IHJlYWRhYmxlX25hbWUgPSBhYmk6Ol9fY3hhX2RlbWFuZ2xl
KG5hbWUsIDAsIDAsICZzdGF0dXMpOwotICBjb25zdCBTdHJpbmcgbmFtZV9zdHIoc3RhdHVzID09
IDAgPyByZWFkYWJsZV9uYW1lIDogbmFtZSk7CisjICAgaWYgR1RFU1RfSEFTX0NYWEFCSV9IXwor
ICB1c2luZyBhYmk6Ol9fY3hhX2RlbWFuZ2xlOworIyAgIGVuZGlmICAvLyBHVEVTVF9IQVNfQ1hY
QUJJX0hfCisgIGNoYXIqIGNvbnN0IHJlYWRhYmxlX25hbWUgPSBfX2N4YV9kZW1hbmdsZShuYW1l
LCAwLCAwLCAmc3RhdHVzKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZV9zdHIoc3RhdHVzID09
IDAgPyByZWFkYWJsZV9uYW1lIDogbmFtZSk7CiAgIGZyZWUocmVhZGFibGVfbmFtZSk7Ci0gIHJl
dHVybiBuYW1lX3N0cjsKLSNlbHNlCisgIHJldHVybiBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJz
aW9uaW5nKG5hbWVfc3RyKTsKKyMgIGVsc2UKICAgcmV0dXJuIG5hbWU7Ci0jZW5kaWYgIC8vIF9f
R0xJQkNYWF9fCisjICBlbmRpZiAgLy8gR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBfX0hQX2FDQwor
CisjIGVsc2UKIAotI2Vsc2UKICAgcmV0dXJuICI8dHlwZT4iOwotI2VuZGlmICAvLyBHVEVTVF9I
QVNfUlRUSQorCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfUlRUSQogfQogCisjaWYgR1RFU1RfSEFT
X1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorCisvLyBBc3NlcnR5VHlwZUVx
PFQxLCBUMj46OnR5cGUgaXMgZGVmaW5lZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQorLy8g
dHlwZS4gIFRoaXMgY2FuIGJlIHVzZWQgYXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRvIGVu
c3VyZSB0aGF0CisvLyB0d28gdHlwZXMgYXJlIGVxdWFsLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyPgorc3RydWN0IEFzc2VydFR5cGVFcTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitzdHJ1Y3QgQXNzZXJ0VHlwZUVxPFQsIFQ+IHsKKyAgdHlwZWRlZiBib29sIHR5cGU7
Cit9OworCiAvLyBBIHVuaXF1ZSB0eXBlIHVzZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRo
ZSBhcmd1bWVudHMgb2YgY2xhc3MKIC8vIHRlbXBsYXRlIFR5cGVzLiAgVGhpcyBhbGxvd3MgdXMg
dG8gc2ltdWxhdGUgdmFyaWFkaWMgdGVtcGxhdGVzCiAvLyAoZS5nLiBUeXBlczxpbnQ+LCBUeXBl
PGludCwgZG91YmxlPiwgYW5kIGV0YyksIHdoaWNoIEMrKyBkb2Vzbid0CkBAIC0xNjExLDcgKzE2
MzYsNyBAQCBzdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKIAogbmFtZXNwYWNlIGludGVybmFsIHsKIAot
I2RlZmluZSBHVEVTVF9URU1QTEFURV8gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzCisjIGRl
ZmluZSBHVEVTVF9URU1QTEFURV8gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzCiAKIC8vIFRo
ZSB0ZW1wbGF0ZSAic2VsZWN0b3IiIHN0cnVjdCBUZW1wbGF0ZVNlbDxUbXBsPiBpcyB1c2VkIHRv
CiAvLyByZXByZXNlbnQgVG1wbCwgd2hpY2ggbXVzdCBiZSBhIGNsYXNzIHRlbXBsYXRlIHdpdGgg
b25lIHR5cGUKQEAgLTE2MjksNyArMTY1NCw3IEBAIHN0cnVjdCBUZW1wbGF0ZVNlbCB7CiAgIH07
CiB9OwogCi0jZGVmaW5lIEdURVNUX0JJTkRfKFRtcGxTZWwsIFQpIFwKKyMgZGVmaW5lIEdURVNU
X0JJTkRfKFRtcGxTZWwsIFQpIFwKICAgVG1wbFNlbDo6dGVtcGxhdGUgQmluZDxUPjo6dHlwZQog
CiAvLyBBIHVuaXF1ZSBzdHJ1Y3QgdGVtcGxhdGUgdXNlZCBhcyB0aGUgZGVmYXVsdCB2YWx1ZSBm
b3IgdGhlCkBAIC0zMjkxLDcgKzMzMTYsOSBAQCBzdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAogLy8gSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoKS4KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1z
dHJ1Y3QgVHlwZUxpc3QgeyB0eXBlZGVmIFR5cGVzMTxUPiB0eXBlOyB9Oworc3RydWN0IFR5cGVM
aXN0IHsKKyAgdHlwZWRlZiBUeXBlczE8VD4gdHlwZTsKK307CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUs
CiAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDks
IHR5cGVuYW1lIFQxMCwKQEAgLTMzMTMsOSArMzM0MCw5IEBAIHN0cnVjdCBUeXBlTGlzdDxUeXBl
czxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMs
CiAgICAgICBUNDEsIFQ0MiwgVDQzLCBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5LCBUNTA+
Ojp0eXBlIHR5cGU7CiB9OwogCisjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdU
RVNUX0hBU19UWVBFRF9URVNUX1AKKwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBu
YW1lc3BhY2UgdGVzdGluZwogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdU
RVNUX0hBU19UWVBFRF9URVNUX1AKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lO
VEVSTkFMX0dURVNUX1RZUEVfVVRJTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0
aWwuaC5wdW1wCmluZGV4IDVhZWQxZTU1NDRmYTJkYTE1ODk3MzRjYmMzYjQxNDFiNTg3YTFmMzIu
LjAwMDFhNWQzOWRmYTZkMjRjN2M0MWExNmExNWYyZTJhNWNlOTQ5ZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11
dGlsLmgucHVtcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oLnB1bXAKQEAgLTI4LDggKzI4LDcgQEAgJHZhciBuID0g
NTAgICQkIE1heGltdW0gbGVuZ3RoIG9mIHR5cGUgbGlzdHMgd2Ugd2FudCB0byBzdXBwb3J0Lgog
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUeXBlIHV0aWxpdGll
cyBuZWVkZWQgZm9yIGltcGxlbWVudGluZyB0eXBlZCBhbmQgdHlwZS1wYXJhbWV0ZXJpemVkCiAv
LyB0ZXN0cy4gIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBETyBOT1QgRURJ
VCBCWSBIQU5EIQpAQCAtMzksNTggKzM4LDg0IEBAICR2YXIgbiA9IDUwICAkJCBNYXhpbXVtIGxl
bmd0aCBvZiB0eXBlIGxpc3RzIHdlIHdhbnQgdG8gc3VwcG9ydC4KIC8vIFBsZWFzZSBjb250YWN0
IGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbSBpZiB5b3UgbmVlZAogLy8gbW9y
ZS4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNU
X0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCiAjZGVmaW5lIEdURVNU
X0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCiAKLSNpbmNsdWRlIDxn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rl
c3Qtc3RyaW5nLmg+Ci0KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQ
RURfVEVTVF9QCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAvLyAj
aWZkZWYgX19HTlVDX18gaXMgdG9vIGdlbmVyYWwgaGVyZS4gIEl0IGlzIHBvc3NpYmxlIHRvIHVz
ZSBnY2Mgd2l0aG91dCB1c2luZwogLy8gbGlic3RkYysrICh3aGljaCBpcyB3aGVyZSBjeHhhYmku
aCBjb21lcyBmcm9tKS4KLSNpZmRlZiBfX0dMSUJDWFhfXwotI2luY2x1ZGUgPGN4eGFiaS5oPgot
I2VuZGlmICAvLyBfX0dMSUJDWFhfXworIyBpZiBHVEVTVF9IQVNfQ1hYQUJJX0hfCisjICBpbmNs
dWRlIDxjeHhhYmkuaD4KKyMgZWxpZiBkZWZpbmVkKF9fSFBfYUNDKQorIyAgaW5jbHVkZSA8YWN4
eF9kZW1hbmdsZS5oPgorIyBlbmRpZiAgLy8gR1RFU1RfSEFTSF9DWFhBQklfSF8KIAogbmFtZXNw
YWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsKIAotLy8gQXNzZXJ0eVR5cGVFcTxU
MSwgVDI+Ojp0eXBlIGlzIGRlZmluZWQgaWZmIFQxIGFuZCBUMiBhcmUgdGhlIHNhbWUKLS8vIHR5
cGUuICBUaGlzIGNhbiBiZSB1c2VkIGFzIGEgY29tcGlsZS10aW1lIGFzc2VydGlvbiB0byBlbnN1
cmUgdGhhdAotLy8gdHdvIHR5cGVzIGFyZSBlcXVhbC4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMj4KLXN0cnVjdCBBc3NlcnRUeXBlRXE7Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotc3RydWN0IEFzc2VydFR5cGVFcTxULCBUPiB7Ci0gIHR5cGVkZWYgYm9vbCB0eXBlOwot
fTsKKy8vIENhbm9uaWNhbGl6ZXMgYSBnaXZlbiBuYW1lIHdpdGggcmVzcGVjdCB0byB0aGUgU3Rh
bmRhcmQgQysrIExpYnJhcnkuCisvLyBUaGlzIGhhbmRsZXMgcmVtb3ZpbmcgdGhlIGlubGluZSBu
YW1lc3BhY2Ugd2l0aGluIGBzdGRgIHRoYXQgaXMKKy8vIHVzZWQgYnkgdmFyaW91cyBzdGFuZGFy
ZCBsaWJyYXJpZXMgKGUuZy4sIGBzdGQ6Ol9fMWApLiAgTmFtZXMgb3V0c2lkZQorLy8gb2YgbmFt
ZXNwYWNlIHN0ZCBhcmUgcmV0dXJuZWQgdW5tb2RpZmllZC4KK2lubGluZSBzdGQ6OnN0cmluZyBD
YW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKHN0ZDo6c3RyaW5nIHMpIHsKKyAgc3RhdGlj
IGNvbnN0IGNoYXIgcHJlZml4W10gPSAic3RkOjpfXyI7CisgIGlmIChzLmNvbXBhcmUoMCwgc3Ry
bGVuKHByZWZpeCksIHByZWZpeCkgPT0gMCkgeworICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUg
ZW5kID0gcy5maW5kKCI6OiIsIHN0cmxlbihwcmVmaXgpKTsKKyAgICBpZiAoZW5kICE9IHMubnBv
cykgeworICAgICAgLy8gRXJhc2UgZXZlcnl0aGluZyBiZXR3ZWVuIHRoZSBpbml0aWFsIGBzdGRg
IGFuZCB0aGUgc2Vjb25kIGA6OmAuCisgICAgICBzLmVyYXNlKHN0cmxlbigic3RkIiksIGVuZCAt
IHN0cmxlbigic3RkIikpOworICAgIH0KKyAgfQorICByZXR1cm4gczsKK30KIAogLy8gR2V0VHlw
ZU5hbWU8VD4oKSByZXR1cm5zIGEgaHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0eXBlIFQuCisvLyBO
QjogVGhpcyBmdW5jdGlvbiBpcyBhbHNvIHVzZWQgaW4gR29vZ2xlIE1vY2ssIHNvIGRvbid0IG1v
dmUgaXQgaW5zaWRlIG9mCisvLyB0aGUgdHlwZWQtdGVzdC1vbmx5IHNlY3Rpb24gYmVsb3cuCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVN0cmluZyBHZXRUeXBlTmFtZSgpIHsKLSNpZiBHVEVTVF9I
QVNfUlRUSQorc3RkOjpzdHJpbmcgR2V0VHlwZU5hbWUoKSB7CisjIGlmIEdURVNUX0hBU19SVFRJ
CiAKICAgY29uc3QgY2hhciogY29uc3QgbmFtZSA9IHR5cGVpZChUKS5uYW1lKCk7Ci0jaWZkZWYg
X19HTElCQ1hYX18KKyMgIGlmIEdURVNUX0hBU19DWFhBQklfSF8gfHwgZGVmaW5lZChfX0hQX2FD
QykKICAgaW50IHN0YXR1cyA9IDA7CiAgIC8vIGdjYydzIGltcGxlbWVudGF0aW9uIG9mIHR5cGVp
ZChUKS5uYW1lKCkgbWFuZ2xlcyB0aGUgdHlwZSBuYW1lLAogICAvLyBzbyB3ZSBoYXZlIHRvIGRl
bWFuZ2xlIGl0LgotICBjaGFyKiBjb25zdCByZWFkYWJsZV9uYW1lID0gYWJpOjpfX2N4YV9kZW1h
bmdsZShuYW1lLCAwLCAwLCAmc3RhdHVzKTsKLSAgY29uc3QgU3RyaW5nIG5hbWVfc3RyKHN0YXR1
cyA9PSAwID8gcmVhZGFibGVfbmFtZSA6IG5hbWUpOworIyAgIGlmIEdURVNUX0hBU19DWFhBQklf
SF8KKyAgdXNpbmcgYWJpOjpfX2N4YV9kZW1hbmdsZTsKKyMgICBlbmRpZiAgLy8gR1RFU1RfSEFT
X0NYWEFCSV9IXworICBjaGFyKiBjb25zdCByZWFkYWJsZV9uYW1lID0gX19jeGFfZGVtYW5nbGUo
bmFtZSwgMCwgMCwgJnN0YXR1cyk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG5hbWVfc3RyKHN0YXR1
cyA9PSAwID8gcmVhZGFibGVfbmFtZSA6IG5hbWUpOwogICBmcmVlKHJlYWRhYmxlX25hbWUpOwot
ICByZXR1cm4gbmFtZV9zdHI7Ci0jZWxzZQorICByZXR1cm4gQ2Fub25pY2FsaXplRm9yU3RkTGli
VmVyc2lvbmluZyhuYW1lX3N0cik7CisjICBlbHNlCiAgIHJldHVybiBuYW1lOwotI2VuZGlmICAv
LyBfX0dMSUJDWFhfXworIyAgZW5kaWYgIC8vIEdURVNUX0hBU19DWFhBQklfSF8gfHwgX19IUF9h
Q0MKKworIyBlbHNlCiAKLSNlbHNlCiAgIHJldHVybiAiPHR5cGU+IjsKLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX1JUVEkKKworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX1JUVEkKIH0KIAorI2lmIEdURVNU
X0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AKKworLy8gQXNzZXJ0eVR5
cGVFcTxUMSwgVDI+Ojp0eXBlIGlzIGRlZmluZWQgaWZmIFQxIGFuZCBUMiBhcmUgdGhlIHNhbWUK
Ky8vIHR5cGUuICBUaGlzIGNhbiBiZSB1c2VkIGFzIGEgY29tcGlsZS10aW1lIGFzc2VydGlvbiB0
byBlbnN1cmUgdGhhdAorLy8gdHdvIHR5cGVzIGFyZSBlcXVhbC4KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMj4KK3N0cnVjdCBBc3NlcnRUeXBlRXE7CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorc3RydWN0IEFzc2VydFR5cGVFcTxULCBUPiB7CisgIHR5cGVkZWYgYm9vbCB0
eXBlOworfTsKKwogLy8gQSB1bmlxdWUgdHlwZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHZhbHVlIGZv
ciB0aGUgYXJndW1lbnRzIG9mIGNsYXNzCiAvLyB0ZW1wbGF0ZSBUeXBlcy4gIFRoaXMgYWxsb3dz
IHVzIHRvIHNpbXVsYXRlIHZhcmlhZGljIHRlbXBsYXRlcwogLy8gKGUuZy4gVHlwZXM8aW50Piwg
VHlwZTxpbnQsIGRvdWJsZT4sIGFuZCBldGMpLCB3aGljaCBDKysgZG9lc24ndApAQCAtMTY5LDcg
KzE5NCw3IEBAIHN0cnVjdCBUeXBlczwkZm9yIGosIFtbVCRqXV0kZm9yIGtbWywgaW50ZXJuYWw6
Ok5vbmVdXT4gewogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCi0jZGVmaW5lIEdURVNUX1RFTVBM
QVRFXyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MKKyMgZGVmaW5lIEdURVNUX1RFTVBMQVRF
XyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MKIAogLy8gVGhlIHRlbXBsYXRlICJzZWxlY3Rv
ciIgc3RydWN0IFRlbXBsYXRlU2VsPFRtcGw+IGlzIHVzZWQgdG8KIC8vIHJlcHJlc2VudCBUbXBs
LCB3aGljaCBtdXN0IGJlIGEgY2xhc3MgdGVtcGxhdGUgd2l0aCBvbmUgdHlwZQpAQCAtMTg3LDcg
KzIxMiw3IEBAIHN0cnVjdCBUZW1wbGF0ZVNlbCB7CiAgIH07CiB9OwogCi0jZGVmaW5lIEdURVNU
X0JJTkRfKFRtcGxTZWwsIFQpIFwKKyMgZGVmaW5lIEdURVNUX0JJTkRfKFRtcGxTZWwsIFQpIFwK
ICAgVG1wbFNlbDo6dGVtcGxhdGUgQmluZDxUPjo6dHlwZQogCiAvLyBBIHVuaXF1ZSBzdHJ1Y3Qg
dGVtcGxhdGUgdXNlZCBhcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlCkBAIC0yNzAsNyArMjk1
LDkgQEAgc3RydWN0IFRlbXBsYXRlczwkZm9yIGosIFtbVCRqXV0kZm9yIGtbWywgTm9uZVRdXT4g
ewogLy8gSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoKS4KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1zdHJ1Y3QgVHlwZUxpc3QgeyB0eXBlZGVmIFR5cGVzMTxUPiB0eXBlOyB9Oworc3Ry
dWN0IFR5cGVMaXN0IHsKKyAgdHlwZWRlZiBUeXBlczE8VD4gdHlwZTsKK307CiAKIAogJHJhbmdl
IGkgMS4ubgpAQCAtMjc5LDkgKzMwNiw5IEBAIHN0cnVjdCBUeXBlTGlzdDxUeXBlczwkZm9yIGks
IFtbVCRpXV0+ID4gewogICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzPCRmb3IgaSwgW1tUJGldXT46
OnR5cGUgdHlwZTsKIH07CiAKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RF
U1RfSEFTX1RZUEVEX1RFU1RfUAorCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5h
bWVzcGFjZSB0ZXN0aW5nCiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RF
U1RfSEFTX1RZUEVEX1RFU1RfUAotCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5U
RVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9tYWtlL01ha2VmaWxlIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbWFrZS9NYWtlZmls
ZQppbmRleCA1YjI3YjZhMmNiYjEzZTM4MGVlNzVkMTg2ZjU1M2JmYjVmYTE0NGI1Li45YWM3NDQ5
M2JhNTUyNDY1OTdlOTBiODk4ZmFlODQ3YWUzNThlYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9tYWtlL01ha2VmaWxlCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L21ha2UvTWFrZWZpbGUKQEAgLTIwLDEwICsyMCwxMiBAQCBHVEVTVF9ESVIgPSAuLgogVVNFUl9E
SVIgPSAuLi9zYW1wbGVzCiAKICMgRmxhZ3MgcGFzc2VkIHRvIHRoZSBwcmVwcm9jZXNzb3IuCi1D
UFBGTEFHUyArPSAtSSQoR1RFU1RfRElSKS9pbmNsdWRlCisjIFNldCBHb29nbGUgVGVzdCdzIGhl
YWRlciBkaXJlY3RvcnkgYXMgYSBzeXN0ZW0gZGlyZWN0b3J5LCBzdWNoIHRoYXQKKyMgdGhlIGNv
bXBpbGVyIGRvZXNuJ3QgZ2VuZXJhdGUgd2FybmluZ3MgaW4gR29vZ2xlIFRlc3QgaGVhZGVycy4K
K0NQUEZMQUdTICs9IC1pc3lzdGVtICQoR1RFU1RfRElSKS9pbmNsdWRlCiAKICMgRmxhZ3MgcGFz
c2VkIHRvIHRoZSBDKysgY29tcGlsZXIuCi1DWFhGTEFHUyArPSAtZyAtV2FsbCAtV2V4dHJhCitD
WFhGTEFHUyArPSAtZyAtV2FsbCAtV2V4dHJhIC1wdGhyZWFkCiAKICMgQWxsIHRlc3RzIHByb2R1
Y2VkIGJ5IHRoaXMgTWFrZWZpbGUuICBSZW1lbWJlciB0byBhZGQgbmV3IHRlc3RzIHlvdQogIyBj
cmVhdGVkIHRvIHRoZSBsaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
bXN2Yy8yMDEwL2d0ZXN0LW1kLnNsbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAx
MC9ndGVzdC1tZC5zbG4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM2YjMzYjYyMTVjMzc0YWZjMTE2YjUyMDg0YjE2
ZjQxNDg4MDQ3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21z
dmMvMjAxMC9ndGVzdC1tZC5zbG4KQEAgLTAsMCArMSw1NSBAQAorTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTEuMDAKKyMgVmlzdWFsIEMrKyBF
eHByZXNzIDIwMTAKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5
NDJ9IikgPSAiZ3Rlc3QtbWQiLCAiZ3Rlc3QtbWQudmN4cHJvaiIsICJ7QzhGNkMxNzItNTZGMi00
RTc2LUI1RkEtQzNCNDIzQjMxQkU4fSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04
QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3RfbWFpbi1tZCIsICJndGVzdF9t
YWluLW1kLnZjeHByb2oiLCAiezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzM30i
CitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJD
OTQyfSIpID0gImd0ZXN0X3Byb2RfdGVzdC1tZCIsICJndGVzdF9wcm9kX3Rlc3QtbWQudmN4cHJv
aiIsICJ7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfSIKK0VuZFByb2plY3QK
K1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rl
c3RfdW5pdHRlc3QtbWQiLCAiZ3Rlc3RfdW5pdHRlc3QtbWQudmN4cHJvaiIsICJ7NEQ5RkRGQjUt
OTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfSIKK0VuZFByb2plY3QKK0dsb2JhbAorCUdsb2Jh
bFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCisJ
CURlYnVnfFdpbjMyID0gRGVidWd8V2luMzIKKwkJRGVidWd8eDY0ID0gRGVidWd8eDY0CisJCVJl
bGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyCisJCVJlbGVhc2V8eDY0ID0gUmVsZWFzZXx4NjQK
KwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBs
YXRmb3JtcykgPSBwb3N0U29sdXRpb24KKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQy
M0IzMUJFOH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0M4RjZDMTcy
LTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVn
fFdpbjMyCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LkRlYnVnfHg2
NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQy
M0IzMUJFOH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJe0M4RjZDMTcyLTU2RjIt
NEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNl
fFdpbjMyCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LlJlbGVhc2V8
V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZB
LUMzQjQyM0IzMUJFOH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0M4
RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9
IFJlbGVhc2V8eDY0CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LkRl
YnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzIt
OTE0Ny1GNjhFRDk4NjIwMzN9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7
M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5EZWJ1Z3x4NjQuQWN0aXZlQ2Zn
ID0gRGVidWd8eDY0CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LkRl
YnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1G
NjhFRDk4NjIwMzN9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7
M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5SZWxlYXNlfFdpbjMyLkJ1aWxk
LjAgPSBSZWxlYXNlfFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIw
MzN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXszQUY1NEM4QS0xMEJG
LTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2
NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5EZWJ1Z3xXaW4zMi5B
Y3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5
QkMzRUNCfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezI0ODQ4NTUxLUVG
NEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2
NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5EZWJ1Z3x4NjQuQnVp
bGQuMCA9IERlYnVnfHg2NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNC
fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezI0ODQ4NTUxLUVG
NEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFz
ZXxXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5SZWxlYXNl
fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQt
RUE0RDQ5QkMzRUNCfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezREOUZE
RkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0g
RGVidWd8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uRGVi
dWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzktODIz
Qy1GNEVFMEVENDgxQTJ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezREOUZE
RkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1
Z3x4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uUmVsZWFzZXxX
aW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzktODIz
Qy1GNEVFMEVENDgxQTJ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJ
ezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uUmVsZWFzZXx4NjQuQWN0aXZl
Q2ZnID0gUmVsZWFzZXx4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFB
Mn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJRW5kR2xvYmFsU2VjdGlvbgor
CUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uCisJCUhpZGVT
b2x1dGlvbk5vZGUgPSBGQUxTRQorCUVuZEdsb2JhbFNlY3Rpb24KK0VuZEdsb2JhbApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1kLnZjeHByb2og
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QtbWQudmN4cHJvagpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNmE2ZmYxMmY3YjU3OTAxNWFiYjE0MTU4MGUyZjJkNGZkYTZmOWMzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1kLnZj
eHByb2oKQEAgLTAsMCArMSwxNDkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0i
NC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWls
ZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAg
ICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENv
bmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8
L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25m
aWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1
ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwv
UHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9
IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJh
dGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29u
ZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4
NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAg
IDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Cisg
IDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFBy
b2plY3RHdWlkPntDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9PC9Qcm9qZWN0
R3VpZD4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91
cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVm
YXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24i
PgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlw
ZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0
Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+Cisg
IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRp
b25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJT
ZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9Q
bGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExh
YmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFy
eTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJh
Y3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAg
PC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4K
KyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+
CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZv
cm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8
SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4K
KyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3Jv
dXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBv
cnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2Vy
LnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4k
KFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4K
KyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMi
PgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBs
YXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWlj
cm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQ
bGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJv
cGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9z
b2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJM
b2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIg
TGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlz
dHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycp
IiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQ
cm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAg
ICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+
CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSkt
JChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE91dERpcikkKFByb2pl
Y3ROYW1lKVw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlv
bk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERp
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3Vw
PgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9u
TmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGly
PiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0
ZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Cisg
ICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENv
bmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpJChQcm9qZWN0TmFt
ZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3Q8L1RhcmdldE5hbWU+CisgIDwvUHJv
cGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0ZDwv
VGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAg
ICA8VGFyZ2V0TmFtZT5ndGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8
SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRp
b24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50
cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFz
dENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRp
VGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZl
bDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRD
b250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4K
KyAgICA8TGliIC8+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9u
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0
aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJ
Q19NQVg9MTA7X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hl
Y2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJl
YWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4K
KyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwv
V2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFi
YXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAg
IDxMaWIgLz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJ
TjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRp
VGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgor
ICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9X
YXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJh
c2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAg
PExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQn
Ij4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMy
O19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8
L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhy
ZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAg
ICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJu
aW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8
L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExp
YiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3QtYWxsLmNjIj4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25h
bEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBp
bGU+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClc
TWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lv
blRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAx
MC9ndGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3Zj
LzIwMTAvZ3Rlc3QtbWQudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZWRlZmYyMzA2ZTFm
YWM5M2U3N2M1NTNmMDU2YjcwZmQyYTY4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QtbWQudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAg
KzEsMTggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJv
amVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5j
b20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJ
bmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0Yx
LUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8
RXh0ZW5zaW9ucz5jcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5z
aW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+
CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJF
NTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDto
bTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+
CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3Qt
YWxsLmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENv
bXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVz
dC5zbG4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3Quc2xuCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNhY2Q1YzBjZTZiOTMyODZiYTUyNzBmODMxMWY3ZDY0OTIxZTAyZTYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3Quc2xuCkBA
IC0wLDAgKzEsNTUgQEAKK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZv
cm1hdCBWZXJzaW9uIDExLjAwCisjIFZpc3VhbCBDKysgRXhwcmVzcyAyMDEwCitQcm9qZWN0KCJ7
OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0IiwgImd0ZXN0
LnZjeHByb2oiLCAie0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30iCitFbmRQ
cm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIp
ID0gImd0ZXN0X21haW4iLCAiZ3Rlc3RfbWFpbi52Y3hwcm9qIiwgInszQUY1NEM4QS0xMEJGLTQz
MzItOTE0Ny1GNjhFRDk4NjIwMzJ9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThC
NEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdF91bml0dGVzdCIsICJndGVzdF91
bml0dGVzdC52Y3hwcm9qIiwgIns0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9
IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFC
Qzk0Mn0iKSA9ICJndGVzdF9wcm9kX3Rlc3QiLCAiZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2oiLCAi
ezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQX0iCitFbmRQcm9qZWN0CitHbG9i
YWwKKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVT
b2x1dGlvbgorCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyCisJCURlYnVnfHg2NCA9IERlYnVn
fHg2NAorCQlSZWxlYXNlfFdpbjMyID0gUmVsZWFzZXxXaW4zMgorCQlSZWxlYXNlfHg2NCA9IFJl
bGVhc2V8eDY0CisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZp
Z3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYt
QjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJ
CXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnfFdpbjMyLkJ1aWxk
LjAgPSBEZWJ1Z3xXaW4zMgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3
fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXtDOEY2QzE3Mi01NkYyLTRFNzYt
QjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtDOEY2
QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2Zn
ID0gUmVsZWFzZXxXaW4zMgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3
fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtDOEY2QzE3Mi01NkYy
LTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8
eDY0CisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LlJlbGVhc2V8eDY0
LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5
ODYyMDMyfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7M0FGNTRDOEEt
MTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8
V2luMzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uRGVidWd8eDY0
LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5
ODYyMDMyfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00
MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8
V2luMzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uUmVsZWFzZXxX
aW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDct
RjY4RUQ5ODYyMDMyfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7M0FG
NTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0g
UmVsZWFzZXx4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uRGVi
dWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04
MjNDLUY0RUUwRUQ0ODFBMX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs0
RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9LkRlYnVnfHg2NC5BY3RpdmVDZmcg
PSBEZWJ1Z3x4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uRGVi
dWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0
RUUwRUQ0ODFBMX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs0
RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9LlJlbGVhc2V8V2luMzIuQnVpbGQu
MCA9IFJlbGVhc2V8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFB
MX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezREOUZERkI1LTk4NkEt
NDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0
CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LkRlYnVnfFdpbjMyLkFj
dGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlC
QzNFQ0F9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7MjQ4NDg1NTEtRUY0
Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0
CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LkRlYnVnfHg2NC5CdWls
ZC4wID0gRGVidWd8eDY0CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9
LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7MjQ4NDg1NTEtRUY0
Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNl
fFdpbjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LlJlbGVhc2V8
eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1F
QTRENDlCQzNFQ0F9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCUVuZEdsb2Jh
bFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlv
bgorCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UKKwlFbmRHbG9iYWxTZWN0aW9uCitFbmRHbG9i
YWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC52
Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LnZjeHByb2oK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTQ2ZjVjN2FmMjQ1MzhkMzk4YzM2MjZjOGVjY2U5MTQ4Yzk2ZjAxZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC52
Y3hwcm9qCkBAIC0wLDAgKzEsMTQ5IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249
IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVp
bGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+Cisg
ICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxD
b25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMy
PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29u
ZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVi
dWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8
L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRl
PSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3Vy
YXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENv
bmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8
eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAg
ICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgor
ICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQ
cm9qZWN0R3VpZD57QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fTwvUHJvamVj
dEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3Jv
dXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRl
ZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9u
Ij4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5
cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxh
dGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0
aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVy
U2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwv
UGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBM
YWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJh
cnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFy
YWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+Cisg
IDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+
CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBl
PgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRm
b3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAg
PEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+
CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdy
b3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1w
b3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+
CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRz
Ij4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRh
UGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlBy
b3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0i
TG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
IExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhp
c3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMn
KSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8
UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+Cisg
ICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9u
PgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0p
LSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpdGVtcFwk
KFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChT
b2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAg
PEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGly
KSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgor
ICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8
VGFyZ2V0TmFtZT5ndGVzdGQ8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFBy
b3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlc
JChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0
RGlyKXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3Q8
L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAg
IDxUYXJnZXROYW1lPmd0ZXN0ZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8
UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdDwvVGFyZ2V0TmFtZT4KKyAg
PC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGls
ZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElC
OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAg
ICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1
bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAg
PFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+CisgICAg
ICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAg
PFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0
aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4K
KyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGliIC8+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4K
KyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXph
dGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRp
b25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNo
ZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGlt
ZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVj
b21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2Fybmlu
Z0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3Jt
YXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwv
Q2xDb21waWxlPgorICAgIDxMaWIgLz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRl
bURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRp
bWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2
ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Q
cm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENv
bXBpbGU+CisgICAgPExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVm
aW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXx4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmlu
aXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJy
YXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVh
ZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2
ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFt
RGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+
CisgICAgPExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3QtYWxsLmNjIj4KKyAgICAgIDxB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAg
PC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJn
ZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9
IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L21zdmMvMjAxMC9ndGVzdC52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9tc3ZjLzIwMTAvZ3Rlc3QudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZWRlZmYyMzA2
ZTFmYWM5M2U3N2M1NTNmMDU2YjcwZmQyYTY4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAg
KzEsMTggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJv
amVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5j
b20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJ
bmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0Yx
LUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8
RXh0ZW5zaW9ucz5jcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5z
aW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+
CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJF
NTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDto
bTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+
CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3Qt
YWxsLmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENv
bXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVz
dF9tYWluLW1kLnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rl
c3RfbWFpbi1tZC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNzczODk1YjcwMjNkZTg0NzQwZDYyYmJh
NjNlYzkwMGY3NGM5MjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qCkBAIC0wLDAgKzEsMTU0IEBACivvu788
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRh
cmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1p
Y3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9
IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0
aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25m
aWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQi
PgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxh
dGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25m
aWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8
L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25m
aWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJl
bGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAg
ICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3Jv
dXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57M0FGNTRDOEEtMTBCRi00MzMy
LTkxNDctRjY4RUQ5ODYyMDMzfTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9q
PC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1Rh
cmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxX
aW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3Rh
dGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5
dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9v
bHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZp
Z3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1
cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pgor
ICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5
R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENv
bmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxD
aGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNl
dD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRp
Y0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRl
PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xz
ZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1Bh
dGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5z
aW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9
IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJl
bD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9u
PSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+
CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwv
SW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAg
PEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3Jt
IiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3Jv
cyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40
MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIp
JChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Cisg
ICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPE91dERp
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3Vy
YXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlc
PC9JbnREaXI+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8T3V0
RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJh
dGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0lu
dERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGly
KSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgor
ICAgIDxJbnREaXI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdl
dE5hbWU+Z3Rlc3RfbWFpbjwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJv
cGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfbWFpbmQ8L1RhcmdldE5hbWU+Cisg
IDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+
Z3Rlc3RfbWFpbjwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmlu
aXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJs
ZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtf
VkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9Q
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5p
bWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwv
QmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRE
ZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAg
ICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5p
bmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwv
RGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGli
IC8+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAg
ICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9u
PgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7
X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmlu
aXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNp
Y1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVn
RExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xl
dmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWIgLz4K
KyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAg
ICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJ
QURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRE
TEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9Q
cmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2
ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4u
LlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgor
ICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8
Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJ
Q19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8
L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVj
b21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+
CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5m
b3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwu
LlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgorICA8
L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlwuLlxzcmNcZ3Rlc3RfbWFpbi5jYyI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3x4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICA8
L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRl
PSJndGVzdC1tZC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjOGY2YzE3Mi01NmYyLTRlNzYt
YjVmYS1jM2I0MjNiMzFiZTh9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAg
PC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3Nv
ZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0
cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0
X21haW4tbWQudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8y
MDEwL2d0ZXN0X21haW4tbWQudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyNmM3NzNjY2Ix
Nzc2YTU4ZDZmNGZkNjVhMTZjYjUwZjQyMmQxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qLmZpbHRlcnMK
QEAgLTAsMCArMSwxOCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgi
Pz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWlj
cm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8
RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57
NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4K
KyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214
PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVy
IEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhF
Qi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDto
cHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0
ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNy
Y1xndGVzdF9tYWluLmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMv
MjAxMC9ndGVzdF9tYWluLnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIw
MTAvZ3Rlc3RfbWFpbi52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmYjI1ODk3YzhiMWMyZGJiM2NmNmMx
M2U5YjQxOTNmYzlhZTA1MGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi52Y3hwcm9qCkBAIC0wLDAgKzEsMTYyIEBACivvu788
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRh
cmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1p
Y3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9
IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0
aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25m
aWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQi
PgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxh
dGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25m
aWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8
L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25m
aWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJl
bGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAg
ICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3Jv
dXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57M0FGNTRDOEEtMTBCRi00MzMy
LTkxNDctRjY4RUQ5ODYyMDMyfTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9q
PC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1Rh
cmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxX
aW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3Rh
dGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5
dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9v
bHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZp
Z3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1
cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pgor
ICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5
R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENv
bmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxD
aGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNl
dD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRp
Y0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRl
PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xz
ZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1Bh
dGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5z
aW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9
IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJl
bD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9u
PSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+
CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwv
SW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAg
PEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3Jt
IiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3Jv
cyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40
MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIp
JChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Cisg
ICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8
T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29u
ZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE91dERpcil0ZW1wXCQoUHJv
amVjdE5hbWUpXDwvSW50RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0k
KENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFBy
b2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluZDwvVGFyZ2V0
TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE91dERp
cj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRp
b24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8
L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluPC9UYXJnZXROYW1lPgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9t
YWluZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5
R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAg
PE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19MSUI7JShQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmlt
YWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNr
cz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxp
YnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21w
aWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xl
dmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xD
b21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3RO
YW1lKWQubGliPC9PdXRwdXRGaWxlPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3Jv
dXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRp
bWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxCYXNpY1J1bnRp
bWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1
bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+CisgICAgICA8
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdh
cm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAg
ICA8L0NsQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQ
cm9qZWN0TmFtZSlkLmxpYjwvT3V0cHV0RmlsZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5p
dGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgor
ICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRF
QlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRp
b25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5
PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4K
KyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4u
OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQo
T3V0RGlyKSQoUHJvamVjdE5hbWUpLmxpYjwvT3V0cHV0RmlsZT4KKyAgICA8L0xpYj4KKyAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPENsQ29t
cGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFY
PTEwO05ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1l
TGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRI
ZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAg
PERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVk
ZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0
RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKS5saWI8L091dHB1dEZpbGU+CisgICAgPC9MaWI+
CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXC4uXHNyY1xndGVzdF9tYWluLmNjIj4KKyAgICAgIDxBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+
CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIElu
Y2x1ZGU9Imd0ZXN0LnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2M4ZjZjMTcyLTU2ZjItNGU3
Ni1iNWZhLWMzYjQyM2IzMWJlN308L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgor
ICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jv
c29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJn
ZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rl
c3RfbWFpbi52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIw
MTAvZ3Rlc3RfbWFpbi52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI2Yzc3M2NjYjE3NzZh
NThkNmY0ZmQ2NWExNmNiNTBmNDIyZDE1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9tYWluLnZjeHByb2ouZmlsdGVycwpAQCAtMCww
ICsxLDE4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFBy
b2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQu
Y29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIg
SW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdG
MS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAg
PEV4dGVuc2lvbnM+Y3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVu
c2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMi
PgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZC
RTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7
aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3Vw
PgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXGd0ZXN0
X21haW4uY2MiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0Ns
Q29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0
ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8y
MDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzMGU1ZGNlNDEwNjIz
YzE1YjY4ZmVhNzE4ZWQ5NGM0NTdmMDcwZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjeHByb2oKQEAgLTAs
MCArMSwxOTkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8
UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0i
aHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAg
PEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENv
bmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+
RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgor
ICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIElu
Y2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJh
dGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZp
Z3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2lu
MzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAg
IDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4K
KyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAg
PENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54
NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3Vw
PgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnsy
NDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0J9PC9Qcm9qZWN0R3VpZD4KKyAgICA8
S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9y
dCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIg
Lz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25m
aWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJh
Y3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYx
MDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0
JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNh
dGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0No
YXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4K
KyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRp
b24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5
cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxh
dGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlv
blR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+
TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0
Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZD
VGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJl
bD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMy
JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJl
eGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+Cisg
IDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIg
Q29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1w
b3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8
SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0i
IC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0
cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQo
UGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0
YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0i
VXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNp
b24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29s
dXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9P
dXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+Cisg
ICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5j
cmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPE91dERpciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0aW9u
RGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGly
PgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAg
PExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5j
cmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgIDwvUHJvcGVydHlHcm91cD4KKyAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUp
XCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91
dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9wcm9k
X3Rlc3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCci
PgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSkt
JChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKSQoUHJvamVj
dE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X3Byb2RfdGVzdDwvVGFyZ2V0
TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPFRhcmdl
dE5hbWU+Z3Rlc3RfcHJvZF90ZXN0PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+Cisg
IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X3Byb2RfdGVzdDwvVGFy
Z2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Cisg
ICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlv
bj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEw
O19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+
CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGlt
ZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1
bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRI
ZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAg
PERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVk
ZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVy
YXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAg
ICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF9wcm9kX3Rlc3QucGRiPC9Qcm9n
cmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Cisg
ICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGlu
az4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAg
IDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+
CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtf
REVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRl
ZmluaXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9C
YXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERl
YnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1By
ZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZl
bD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4u
XC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAg
ICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0
aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChPdXREaXIpZ3Rlc3RfcHJvZF90ZXN0
LnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3Vi
U3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURl
ZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRl
ZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50
aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVj
b21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZl
bD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlBy
b2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29t
cGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwv
R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJT
eXN0ZW0+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNl
cz4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+
CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwv
TGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+
CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtf
VkFSSUFESUNfTUFYPTEwO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25z
KTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlU
aHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNl
PC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5n
TGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0Rl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+
CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZv
cm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPE9w
dGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8RW5hYmxl
Q09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgIDwvTGluaz4KKyAg
PC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cLi5cdGVzdFxndGVzdF9wcm9kX3Rlc3QuY2MiPgorICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxl
ZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgIDwvQ2xDb21waWxlPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxwcm9kdWN0aW9uLmNjIj4KKyAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAg
ICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAg
IDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8eDY0JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAg
IDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAg
ICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8
L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24uaCIgLz4KKyAgPC9JdGVtR3JvdXA+Cisg
IDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iZ3Rlc3RfbWFpbi1t
ZC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnszYWY1NGM4YS0xMGJmLTQzMzItOTE0Ny1mNjhl
ZDk4NjIwMzN9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3Jv
dXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRh
cmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwv
SW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVz
dC1tZC52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAv
Z3Rlc3RfcHJvZF90ZXN0LW1kLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzM2NzMxMGFl
ZTYyNmY0ZWM5YzFkZmZkYTczM2E1MGYyYTVjNWVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qLmZp
bHRlcnMKQEAgLTAsMCArMSwyNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
dXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVt
YXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4K
KyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRp
Zmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRp
Zmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2Fz
bTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0i
SGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRi
MDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lv
bnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgor
ICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XC4uXHRlc3RcZ3Rlc3RfcHJvZF90ZXN0LmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwu
Llx0ZXN0XHByb2R1Y3Rpb24uY2MiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24uaCI+CisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91
cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2og
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHBy
b2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDQyZTEzNTExZGYyOGE1MzIyMjQyMDU3ZTc1NDFmOTY1NjcwZGRhMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVz
dF9wcm9kX3Rlc3QudmN4cHJvagpAQCAtMCwwICsxLDE5MSBAQAor77u/PD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIg
VG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2Rl
dmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmln
dXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4z
MiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQ
bGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAg
ICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25m
aWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxh
dGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3Vy
YXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxl
YXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAg
ICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNs
dWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1
cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29u
ZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9i
YWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJD
M0VDQX08L1Byb2plY3RHdWlkPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAg
PC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWlj
cm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0i
Q29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25m
aWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0
PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3Bl
cnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAg
PENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8
Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xz
ZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0
eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFw
cGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0
ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29s
c2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3Vy
YXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlv
blR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8
UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3Vw
PgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9w
cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1w
b3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAg
IDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3Jt
KS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0
LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9y
bSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlT
aGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNw
cC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFw
cERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJl
bD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilc
TWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygn
JChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExh
YmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9y
dEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9u
PSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+
CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91
cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZl
cnNpb24+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0
Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE91dERpcil0
ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8
L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVu
dGFsPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0
Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoT3V0RGly
KXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5m
YWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5r
SW5jcmVtZW50YWw+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8
T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmln
dXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5h
bWUpXDwvSW50RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAg
ICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29u
ZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERpcil0ZW1wXCQoUHJvamVj
dE5hbWUpXDwvSW50RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2lu
MzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0
aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJ
Q19NQVg9MTA7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFs
UmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFz
aWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1
ZzwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21w
aWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Cisg
ICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxp
bmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8
R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4K
KyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKWd0ZXN0X3Byb2RfdGVzdC5wZGI8
L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3Rl
bT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAg
PC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXph
dGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFY
PTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVj
a3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVh
ZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xl
dmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgor
ICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3Jt
YXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF9wcm9kX3Rl
c3QucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9T
dWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1
bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNv
bXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVs
PkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJv
Z3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21w
aWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9H
ZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5
c3RlbT4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2Vz
PgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4K
KyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9M
aW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4K
KyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19W
QVJJQURJQ19NQVg9MTA7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMp
PC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRo
cmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1By
ZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZl
bD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4u
XC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAg
ICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0
aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8T3B0aW1p
emVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxFbmFibGVDT01E
QVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgPC9MaW5rPgorICA8L0l0
ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlwuLlx0ZXN0XGd0ZXN0X3Byb2RfdGVzdC5jYyI+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
PgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
KTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVh
ZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4
NjQnIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24uY2MiPgorICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFBy
ZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJl
Y29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8QWRkaXRp
b25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFBy
ZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQ
cmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgIDwvQ2xD
b21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXC4uXHRlc3RccHJvZHVjdGlvbi5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0
ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJndGVzdF9tYWluLnZjeHBy
b2oiPgorICAgICAgPFByb2plY3Q+ezNhZjU0YzhhLTEwYmYtNDMzMi05MTQ3LWY2OGVkOTg2MjAz
Mn08L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAg
PEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIg
Lz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRH
cm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHBy
b2ouZmlsdGVycyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9wcm9k
X3Rlc3QudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjMzY3MzEwYWVlNjI2ZjRlYzljMWRm
ZmRhNzMzYTUwZjJhNWM1ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsx
LDI2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2pl
Y3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29t
L2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5j
bHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1D
N0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4
dGVuc2lvbnM+Y3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lv
bnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgor
ICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUy
RUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07
aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgor
ICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxndGVzdF9w
cm9kX3Rlc3QuY2MiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8
L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RccHJvZHVjdGlv
bi5jYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21w
aWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXC4uXHRlc3RccHJvZHVjdGlvbi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0Pgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC1tZC52Y3hwcm9qIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjeHByb2oKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTNiMGRjNGUxYTRlMDNhZThkNjNlZmYzNmM2N2JmZTgyMzY1ZjE4OAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC1t
ZC52Y3hwcm9qCkBAIC0wLDAgKzEsMTg4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNp
b249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21z
YnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+
CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAg
IDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldp
bjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0
Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+
RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAg
ICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNs
dWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZp
Z3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVj
dENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVh
c2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Cisg
ICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9u
PgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAg
IDxQcm9qZWN0R3VpZD57NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfTwvUHJv
amVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5
R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3Bw
LkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0
aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25U
eXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBs
YXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4K
KyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJh
dGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJT
ZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9Q
bGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExh
YmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248
L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0
ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwv
UHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Cisg
ICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAg
ICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRv
b2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBv
cnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8
SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4K
KyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQ
cm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJv
cHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxh
dGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8
L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Cisg
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRm
b3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0
eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2Fs
QXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJl
bD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilc
TWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygn
JChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExh
YmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3Bl
cnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxf
UHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAg
ICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENv
bmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5h
bWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0xpbmtJbmNyZW1lbnRh
bD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxPdXRE
aXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1
cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUp
XDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRh
bD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGly
KSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgor
ICAgIDxJbnREaXI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdl
dE5hbWU+Z3Rlc3RfdW5pdHRlc3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFt
ZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQo
T3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X3Vu
aXR0ZXN0PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF91bml0dGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF91
bml0dGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRp
b25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8
L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFS
SUFESUNfTUFYPTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwv
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWlu
aW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8
L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVk
RGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xl
dmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgor
ICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3Jt
YXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF91bml0dGVz
dC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1
YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+
CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlv
bkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09w
dGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFE
SUNfTUFYPTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZh
c3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0
aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVh
ZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwv
V2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFi
YXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAg
IDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURl
YnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVz
dF91bml0dGVzdC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNv
bnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4K
KyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztfQ09OU09M
RTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Cisg
ICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Cisg
ICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxX
YXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlv
bkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Cisg
ICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0
aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29u
c29sZTwvU3ViU3lzdGVtPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6
ZVJlZmVyZW5jZXM+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01E
QVRGb2xkaW5nPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGlu
ZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0
aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJy
YXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVs
MzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURh
dGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgor
ICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0
ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4K
KyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAg
ICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICA8
L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2MiPgorICAgICAgPE9w
dGltaXphdGlvbiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+TWluU3BhY2U8L09wdGltaXphdGlvbj4KKyAgICAgIDxPcHRpbWl6YXRpb24g
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5N
aW5TcGFjZTwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0
JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+RGVmYXVs
dDwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkRlZmF1bHQ8
L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgICA8
L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgICA8L1By
ZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPlByb2dyYW1E
YXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyI+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAg
IDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAg
ICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8
L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RS
ZWZlcmVuY2UgSW5jbHVkZT0iZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0
PnszYWY1NGM4YS0xMGJmLTQzMzItOTE0Ny1mNjhlZDk4NjIwMzN9PC9Qcm9qZWN0PgorICAgIDwv
UHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChW
Q1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBM
YWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjeHByb2ouZmlsdGVycyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC1tZC52Y3hwcm9qLmZp
bHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDQ3ZGFlNTEzZTg2MDE1M2E1Y2VjMmY0NWI0OGNkYmM3NWY5YjZj
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9n
dGVzdF91bml0dGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxOCBAQAor77u/PD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lv
bj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNi
dWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBG
aWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYt
MkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtj
O2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmls
dGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJ
ZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJ
ZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9F
eHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2MiPgor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAg
PC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0
LnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfdW5pdHRl
c3QudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzZhYmRlN2RhMTdlMjllZDI0NzZmNzBjNjk0MTVhZTk2
OGYyMWYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8y
MDEwL2d0ZXN0X3VuaXR0ZXN0LnZjeHByb2oKQEAgLTAsMCArMSwxODAgQEAKK++7vzw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0i
QnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0
LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVj
dENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVi
dWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+Cisg
ICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRp
b24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAg
ICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54
NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RD
b25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRp
b24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZv
cm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRp
b24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwv
Q29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJv
amVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJl
bD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPns0RDlGREZCNS05ODZBLTQxMzktODIzQy1G
NEVFMEVENDgxQTF9PC9Qcm9qZWN0R3VpZD4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdv
cmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1Bh
dGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIg
TGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlv
bjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJh
Y3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAg
PC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24i
PgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+
CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZv
cm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8
UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9u
VHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5N
dWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRm
b3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJD
b25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZp
Z3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+
CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVy
dHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5D
cHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgor
ICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRz
Ij4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRh
UGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlBy
b3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0i
TG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJl
eGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+Cisg
IDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0
PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENv
bmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9y
dEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3Bl
cnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVj
dEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUp
XCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChP
dXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVudGFs
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij50cnVlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0xpbmtJ
bmNyZW1lbnRhbD4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUp
XCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4k
KE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50
YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5mYWxz
ZTwvTGlua0luY3JlbWVudGFsPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0k
KENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFBy
b2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0
JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3Jt
KS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwk
KFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmlu
aXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJs
ZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtf
VkFSSUFESUNfTUFYPTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25z
KTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwv
TWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVj
a3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVh
ZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xl
dmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgor
ICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3Jt
YXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF91bml0dGVz
dC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1
YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+
CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlv
bkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09w
dGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFE
SUNfTUFYPTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZh
c3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0
aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVy
PlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2Fy
bmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNl
PC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxM
aW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVn
SW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF91
bml0dGVzdC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNv
bGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAg
PEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztfQ09OU09MRTsl
KFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAg
ICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8
UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5n
TGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1h
dD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9D
bENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRy
dWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwv
U3ViU3lzdGVtPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVy
ZW5jZXM+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xk
aW5nPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAg
ICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2
NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lO
MzI7X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11
bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVz
ZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2Fybmlu
Z0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9E
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5r
PgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5m
b3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxP
cHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPEVuYWJs
ZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICA8L0xpbms+Cisg
IDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2MiPgorICAgICAgPE9wdGltaXphdGlv
biBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+TWluU3BhY2U8L09wdGltaXphdGlvbj4KKyAgICAgIDxPcHRpbWl6YXRpb24gQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5NaW5TcGFjZTwv
T3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uOy4u
XGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Li47Li5c
aW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+RGVmYXVsdDwvQmFzaWNS
dW50aW1lQ2hlY2tzPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkRlZmF1bHQ8L0Jhc2ljUnVu
dGltZUNoZWNrcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgICA8L1ByZWNvbXBp
bGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgICA8L1ByZWNvbXBpbGVk
SGVhZGVyPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPlByb2dyYW1EYXRhYmFzZTwv
RGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0IENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+UHJv
Z3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21w
aWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29t
cGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8L0NsQ29tcGls
ZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2Ug
SW5jbHVkZT0iZ3Rlc3RfbWFpbi52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnszYWY1NGM4YS0x
MGJmLTQzMzItOTE0Ny1mNjhlZDk4NjIwMzJ9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVy
ZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRo
KVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5z
aW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8y
MDEwL2d0ZXN0X3VuaXR0ZXN0LnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDQ3ZGFlNTEzZTg2MDE1M2E1Y2VjMmY0NWI0OGNkYmM3NWY5YjZjZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC52Y3hw
cm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxOCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv
ZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDov
L3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1H
cm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVl
SWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVl
SWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7
YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5j
bHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04
OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4
dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmls
dGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2MiPgorICAgICAgPEZpbHRlcj5Tb3VyY2Ug
RmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2pl
Y3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvbXN2Yy9ndGVzdC1tZC52Y3hwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
MDA3OGU0YWFiNjkxNzEyYTEwM2MyZWI2M2VlN2RhYzFlZjQ5OWJlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21z
dmMvZ3Rlc3QtbWQudmN4cHJvagorKysgL2Rldi9udWxsCkBAIC0xLDM2MCArMCwwIEBACi3vu788
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRh
cmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjE0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5t
aWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SXRlbUdyb3VwIExhYmVs
PSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNs
dWRlPSJEZWJ1Z1N1ZmZpeHxXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Z1N1ZmZp
eDwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAg
PC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVk
ZT0iRGVidWdTdWZmaXh8eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnU3VmZml4PC9D
b25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9q
ZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVi
dWdfV2luQ2Fpcm98V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWdfV2luQ2Fpcm88
L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwv
UHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9
IkRlYnVnX1dpbkNhaXJvfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Z19XaW5DYWly
bzwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwv
UHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9
IkRlYnVnfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9u
PgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1
cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgot
ICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZv
cm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9q
ZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQcm9kdWN0aW9ufFdpbjMyIj4KLSAgICAgIDxDb25m
aWd1cmF0aW9uPlByb2R1Y3Rpb248L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2lu
MzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RD
b25maWd1cmF0aW9uIEluY2x1ZGU9IlByb2R1Y3Rpb258eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0
aW9uPlByb2R1Y3Rpb248L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0
Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJh
dGlvbiBJbmNsdWRlPSJSZWxlYXNlX1dpbkNhaXJvfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0
aW9uPlJlbGVhc2VfV2luQ2Fpcm88L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2lu
MzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RD
b25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2VfV2luQ2Fpcm98eDY0Ij4KLSAgICAgIDxDb25m
aWd1cmF0aW9uPlJlbGVhc2VfV2luQ2Fpcm88L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZv
cm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9q
ZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KLSAgICAgIDxDb25maWd1
cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1Bs
YXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1
cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVh
c2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8
L1Byb2plY3RDb25maWd1cmF0aW9uPgotICA8L0l0ZW1Hcm91cD4KLSAgPFByb3BlcnR5R3JvdXAg
TGFiZWw9Ikdsb2JhbHMiPgotICAgIDxQcm9qZWN0R3VpZD57QzhGNkMxNzItNTZGMi00RTc2LUI1
RkEtQzNCNDIzQjMxQkU4fTwvUHJvamVjdEd1aWQ+Ci0gICAgPFJvb3ROYW1lc3BhY2U+Z3Rlc3Qt
bWQ8L1Jvb3ROYW1lc3BhY2U+Ci0gICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgotICAg
IDxXaW5kb3dzVGFyZ2V0UGxhdGZvcm1WZXJzaW9uPjguMTwvV2luZG93c1RhcmdldFBsYXRmb3Jt
VmVyc2lvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJn
ZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRp
Y0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRl
PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xz
ZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1
cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJh
dGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAg
ICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdy
b3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+
Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBl
PgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRm
b3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29u
ZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENo
YXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0
PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBl
PlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVs
dGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9y
bVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciIExhYmVs
PSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwv
Q29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3Rl
clNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Q
cm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgot
ICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4K
LSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9y
bVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQ
cm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlw
ZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11
bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZv
cm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzIn
IiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xp
YnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9D
aGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+
Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIiBMYWJlbD0iQ29u
ZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZp
Z3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+
Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVy
dHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4K
LSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+
Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZv
cm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8
UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnU3VmZml4fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJh
dGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3Rl
clNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8
L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9
IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KLSAgPEltcG9ydEdyb3Vw
IExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChV
c2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRp
b249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2Vy
LnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+
Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRz
Ij4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRh
UGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRv
b2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
X1dpbkNhaXJvfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAg
PEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9u
LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciIExh
YmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3Rz
KCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIg
TGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChX
ZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBv
cnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0g
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRm
b3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2
c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4
NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249
ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnBy
b3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2pl
Y3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0g
IDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4K
LSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxh
dGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xz
XHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQn
IiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9v
dERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4
aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3Bz
JykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9
IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gIDwv
SW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hl
ZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBE
YXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMp
XHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1w
b3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z19XaW5DYWlyb3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJv
amVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3Bz
IiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8
SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24u
cHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyIgTGFiZWw9
IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJl
bD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktp
dF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICAgIDxJbXBvcnQg
UHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGRlYnVnc3VmZml4LnBy
b3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIiBMYWJlbD0iUHJv
cGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9z
b2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJM
b2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xp
YnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9q
ZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcZGVidWdzdWZmaXgucHJvcHMi
IC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9z
IiAvPgotICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQw
MjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXRE
aXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQn
Ij4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9P
dXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxp
YiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj4k
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXRE
aXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnU3VmZml4fFdpbjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj4kKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAg
PE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxp
YiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMy
JyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwv
T3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxs
aWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERp
cj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnx4NjQnIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Z3Rlc3QkKERlYnVn
U3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Z3Rlc3QkKERlYnVnU3VmZml4
KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj5ndGVzdCQoRGVidWdT
dWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj5ndGVzdCQoRGVi
dWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPmd0ZXN0JChEZWJ1
Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPmd0ZXN0JChEZWJ1Z1N1
ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8
L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXRO
YW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJn
ZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFy
Z2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFy
Z2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1Rhcmdl
dE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAg
IDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+
Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQ
cm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxw
cml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlw
dENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxQcmVj
b21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8QmFzaWNS
dW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICA8
L0NsQ29tcGlsZT4KLSAgICA8TGliPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpZ3Rlc3Qk
KERlYnVnU3VmZml4KS5saWI8L091dHB1dEZpbGU+Ci0gICAgPC9MaWI+Ci0gIDwvSXRlbURlZmlu
aXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAg
ICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNs
dWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hl
YWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAg
ICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25z
KTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0g
ICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFi
bGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAg
PExpYj4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKWd0ZXN0JChEZWJ1Z1N1ZmZpeCkubGli
PC9PdXRwdXRGaWxlPgotICAgIDwvTGliPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJ
dGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9w
dGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRl
ZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8
L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0
Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYj4K
LSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKWd0ZXN0LmxpYjwvT3V0cHV0RmlsZT4KLSAgICA8
L0xpYj4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJv
fHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9P
cHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2pl
Y3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZh
dGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5f
TElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4K
LSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4K
LSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0g
ICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNo
ZWNrcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliPgotICAgICAgPE91dHB1dEZpbGU+JChP
dXREaXIpZ3Rlc3QubGliPC9PdXRwdXRGaWxlPgotICAgIDwvTGliPgotICA8L0l0ZW1EZWZpbml0
aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj4KLSAgICA8Q2xDb21waWxl
PgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpciku
LlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2Fy
ZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmlu
aXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFk
ZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNr
cz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+
Ci0gICAgPExpYj4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKWd0ZXN0JChEZWJ1Z1N1ZmZp
eCkubGliPC9PdXRwdXRGaWxlPgotICAgIDwvTGliPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+
Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxP
cHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVkZTsk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJz
OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1By
ZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAg
PC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFz
dENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWI+
Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilndGVzdCQoRGVidWdTdWZmaXgpLmxpYjwvT3V0
cHV0RmlsZT4KLSAgICA8L0xpYj4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURl
ZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJl
Y29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFByZXBy
b2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPENsQ29t
cGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpciku
LjskKFByb2plY3REaXIpLi5cSW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNs
dWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZh
U2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVj
b21waWxlZEhlYWRlcj4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0Ns
Q29tcGlsZT4KLSAgICA8TGliIC8+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1E
ZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5c
SW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgot
ICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAg
ICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGli
IC8+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJv
fHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxp
bmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVjb21waWxlZEhl
YWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYiAvPgotICA8L0l0ZW1EZWZpbml0
aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+
Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQ
cm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxw
cml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlw
dENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGls
ZWRIZWFkZXI+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nl
c3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBp
bGU+Ci0gICAgPExpYiAvPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5p
dGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnx4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChD
b25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlY29t
cGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFByZXByb2Nl
c3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAgPC9JdGVt
RGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cc3JjXGd0ZXN0LWRlYXRoLXRlc3QuY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxzcmNcZ3Rlc3QtZmlsZXBhdGguY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxz
cmNcZ3Rlc3QtcG9ydC5jYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVz
dC10ZXN0LXBhcnQuY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3Qt
dHlwZWQtdGVzdC5jYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC5j
YyIgLz4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwu
aCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtZGVh
dGgtdGVzdC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxp
bnRlcm5hbFxndGVzdC1maWxlcGF0aC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
c3JjXGd0ZXN0LWludGVybmFsLWlubC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1pbnRlcm5hbC5oIiAvPgotICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC1tZXNzYWdlLmgiIC8+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LXBvcnQuaCIg
Lz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3Qtc3BpLmgi
IC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0
ZXN0LXN0cmluZy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVz
dFxndGVzdC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxn
dGVzdF9wcmVkX2ltcGwuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVc
Z3Rlc3RcZ3Rlc3RfcHJvZC5oIiAvPgotICA8L0l0ZW1Hcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0
PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KLSAgPEltcG9ydEdy
b3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KLSAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVj
dD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4
cHJvai5maWx0ZXJzIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3hw
cm9qLmZpbHRlcnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzN2QxYzliNGRjYTZh
MTRlYzcwNmJjNGE4YzEzMWY2YjVjODM4MDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52
Y3hwcm9qLmZpbHRlcnMKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi3vu788P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0
LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxk
LzIwMDMiPgotICA8SXRlbUdyb3VwPgotICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVz
Ij4KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMy
RDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgotICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y3h4
O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+Ci0gICAgPC9GaWx0ZXI+
Ci0gICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgotICAgICAgPFVuaXF1ZUlkZW50
aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50
aWZpZXI+Ci0gICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVu
c2lvbnM+Ci0gICAgPC9GaWx0ZXI+Ci0gIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LWRlYXRoLXRlc3QuY2MiPgotICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC1maWxlcGF0aC5jYyI+Ci0gICAgICA8RmlsdGVy
PlNvdXJjZSBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cc3JjXGd0ZXN0LXBvcnQuY2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmls
ZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHNyY1xndGVzdC10ZXN0LXBhcnQuY2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0Zp
bHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xn
dGVzdC10eXBlZC10ZXN0LmNjIj4KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+
Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3Qu
Y2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGls
ZT4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCI+
Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC1kZWF0aC10ZXN0
LmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVk
ZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rl
c3QtZmlsZXBhdGguaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAg
IDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LWludGVy
bmFsLWlubC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9D
bEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVy
bmFsXGd0ZXN0LWludGVybmFsLmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVc
Z3Rlc3RcZ3Rlc3QtbWVzc2FnZS5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0
ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRl
XGd0ZXN0XGludGVybmFsXGd0ZXN0LXBvcnQuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5jbHVkZVxndGVzdFxndGVzdC1zcGkuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwv
RmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5j
bHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1zdHJpbmcuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
PC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxp
bmNsdWRlXGd0ZXN0XGd0ZXN0X3ByZWRfaW1wbC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxpbmNsdWRlXGd0ZXN0XGd0ZXN0X3Byb2QuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9ydW5fdGVzdHMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9ydW5fdGVzdHMu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGUxMDg0MDU2ZTIzYmRkNWNmY2Y0NGYw
Njc2YzFkNjI4YWU2M2Q3NjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvcnVuX3Rlc3RzLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsNjAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdo
dCAyMDA4LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0j
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotIiIiUnVucyB0aGUgc3BlY2lmaWVkIHRlc3RzIGZvciBHb29nbGUgVGVzdC4KLQotVGhp
cyBzY3JpcHQgcmVxdWlyZXMgUHl0aG9uIDIuMyBvciBoaWdoZXIuICBUbyBsZWFybiB0aGUgdXNh
Z2UsIHJ1biBpdAotd2l0aCAtaC4KLSIiIgotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotU0NS
SVBUX0RJUiA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3IgJy4nCi0KLXN5cy5wYXRoLmFw
cGVuZChvcy5wYXRoLmpvaW4oU0NSSVBUX0RJUiwgJ3Rlc3QnKSkKLWltcG9ydCBydW5fdGVzdHNf
dXRpbAotCi0KLWRlZiBfTWFpbigpOgotICAiIiJSdW5zIGFsbCB0ZXN0cyBmb3IgR29vZ2xlIFRl
c3QuIiIiCi0KLSAgb3B0aW9ucywgYXJncyA9IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygnZ3Rl
c3QnKQotICB0ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5uZXIoc2NyaXB0X2Rp
cj1TQ1JJUFRfRElSKQotICB0ZXN0cyA9IHRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oYXJncywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuY29uZmlndXJhdGlv
bnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmJ1aWx0X2Nv
bmZpZ3VyYXRpb25zKQotICBpZiBub3QgdGVzdHM6Ci0gICAgc3lzLmV4aXQoMSkgICMgSW5jb3Jy
ZWN0IHBhcmFtZXRlcnMgZ2l2ZW4sIGFib3J0IGV4ZWN1dGlvbi4KLQotICBzeXMuZXhpdCh0ZXN0
X3J1bm5lci5SdW5UZXN0cyh0ZXN0c1swXSwgdGVzdHNbMV0pKQotCi1pZiBfX25hbWVfXyA9PSAn
X19tYWluX18nOgotICBfTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zYW1wbGVzL3ByaW1lX3RhYmxlcy5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxl
cy9wcmltZV90YWJsZXMuaAppbmRleCA5MmNlMTZhMDE0NGQ1MDJmZDBlNDViNzNmMzdkMzJiYmVk
ZjFjM2YzLi41MjNjNTBiOWFmYjFhMDkxOTE2ODA5NGQ3MWZkZjM3NmI2NGFmNmIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3ByaW1lX3RhYmxlcy5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvcHJpbWVfdGFibGVzLmgKQEAgLTI2LDkg
KzI2LDggQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLyBBdXRob3I6
IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCisKKwogCiAvLyBUaGlzIHByb3ZpZGVzIGlu
dGVyZmFjZSBQcmltZVRhYmxlIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgbnVtYmVyIGlzIGEK
IC8vIHByaW1lIGFuZCBkZXRlcm1pbmVzIGEgbmV4dCBwcmltZSBudW1iZXIuIFRoaXMgaW50ZXJm
YWNlIGlzIHVzZWQKQEAgLTEwMywxMSArMTAyLDE1IEBAIGNsYXNzIFByZUNhbGN1bGF0ZWRQcmlt
ZVRhYmxlIDogcHVibGljIFByaW1lVGFibGUgewogICAgIDo6c3RkOjpmaWxsKGlzX3ByaW1lXywg
aXNfcHJpbWVfICsgaXNfcHJpbWVfc2l6ZV8sIHRydWUpOwogICAgIGlzX3ByaW1lX1swXSA9IGlz
X3ByaW1lX1sxXSA9IGZhbHNlOwogCi0gICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gbWF4OyBpKysp
IHsKKyAgICAvLyBDaGVja3MgZXZlcnkgY2FuZGlkYXRlIGZvciBwcmltZSBudW1iZXIgKHdlIGtu
b3cgdGhhdCAyIGlzIHRoZSBvbmx5IGV2ZW4KKyAgICAvLyBwcmltZSkuCisgICAgZm9yIChpbnQg
aSA9IDI7IGkqaSA8PSBtYXg7IGkgKz0gaSUyKzEpIHsKICAgICAgIGlmICghaXNfcHJpbWVfW2ld
KSBjb250aW51ZTsKIAogICAgICAgLy8gTWFya3MgYWxsIG11bHRpcGxlcyBvZiBpIChleGNlcHQg
aSBpdHNlbGYpIGFzIG5vbi1wcmltZS4KLSAgICAgIGZvciAoaW50IGogPSAyKmk7IGogPD0gbWF4
OyBqICs9IGkpIHsKKyAgICAgIC8vIFdlIGFyZSBzdGFydGluZyBoZXJlIGZyb20gaS10aCBtdWx0
aXBsaWVyLCBiZWNhdXNlIGFsbCBzbWFsbGVyCisgICAgICAvLyBjb21wbGV4IG51bWJlcnMgd2Vy
ZSBhbHJlYWR5IG1hcmtlZC4KKyAgICAgIGZvciAoaW50IGogPSBpKmk7IGogPD0gbWF4OyBqICs9
IGkpIHsKICAgICAgICAgaXNfcHJpbWVfW2pdID0gZmFsc2U7CiAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmNjCmluZGV4IGYxNzFlMjYwOWQy
NTEzMjI4NDYyMWZiNjJjZjNiYTg2ZTFlNjk5MjUuLjEzY2VjMWQwZmJmYWJkYWFmMWM2YzQxYjFh
ODZiYzFkMDkwODk4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBs
ZXMvc2FtcGxlMS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBs
ZTEuY2MKQEAgLTI4LDggKzI4LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHBy
b2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgot
Ly8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAogI2luY2x1ZGUg
InNhbXBsZTEuaCIKIApAQCAtNTUsNyArNTMsNyBAQCBib29sIElzUHJpbWUoaW50IG4pIHsKIAog
ICAvLyBUcnkgdG8gZGl2aWRlIG4gYnkgZXZlcnkgb2RkIG51bWJlciBpLCBzdGFydGluZyBmcm9t
IDMKICAgZm9yIChpbnQgaSA9IDM7IDsgaSArPSAyKSB7Ci0gICAgLy8gV2Ugb25seSBoYXZlIHRv
IHRyeSBpIHVwIHRvIHRoZSBzcXVyZSByb290IG9mIG4KKyAgICAvLyBXZSBvbmx5IGhhdmUgdG8g
dHJ5IGkgdXAgdG8gdGhlIHNxdWFyZSByb290IG9mIG4KICAgICBpZiAoaSA+IG4vaSkgYnJlYWs7
CiAKICAgICAvLyBOb3csIHdlIGhhdmUgaSA8PSBuL2kgPCBuLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTEuaAppbmRleCAzZGZlYjk4YzQ1MDMwMTQ1ZjllYTE4ZDc5NTMx
YzkxYzgxZWU4NDlhLi4yYzNlOWYwNWYxYTEwYTQ0MjVmNzdiMjg3MTZlODA1OTY4MjE5NjFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEuaApAQCAtMjgsOCArMjgs
NiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5n
IHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCiAjaWZuZGVmIEdURVNUX1NBTVBMRVNfU0FNUExF
MV9IXwogI2RlZmluZSBHVEVTVF9TQU1QTEVTX1NBTVBMRTFfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjCmluZGV4IDNhZDZm
ZDY1MzgyNjE3ZjdkNmI0MDFmNGQxYmQ4M2ZjODZlZDg0ZmUuLjdjZTk1NTBmODgzYWEzNDJkMjVi
MDQ4NTkzZmFhOTZjYWJkOGUxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYwpAQCAtMjUsOCArMjUsNyBAQAogLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
dmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKwogCiAvLyBUaGlzIHNhbXBsZSBzaG93cyBo
b3cgdG8gdXNlIEdvb2dsZSBUZXN0IGxpc3RlbmVyIEFQSSB0byBpbXBsZW1lbnQKIC8vIGEgcHJp
bWl0aXZlIGxlYWsgY2hlY2tlci4KQEAgLTM0LDE5ICszMywxNiBAQAogI2luY2x1ZGUgPHN0ZGlv
Lmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIHVzaW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRM
aXN0ZW5lcjsKIHVzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7CiB1c2luZyA6OnRlc3Rp
bmc6OlRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RDYXNlOwogdXNpbmcgOjp0ZXN0aW5nOjpU
ZXN0RXZlbnRMaXN0ZW5lcnM7CiB1c2luZyA6OnRlc3Rpbmc6OlRlc3RJbmZvOwogdXNpbmcgOjp0
ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDsKIHVzaW5nIDo6dGVzdGluZzo6VW5pdFRlc3Q7CiAKIG5h
bWVzcGFjZSB7Ci0KIC8vIFdlIHdpbGwgdHJhY2sgbWVtb3J5IHVzZWQgYnkgdGhpcyBjbGFzcy4K
IGNsYXNzIFdhdGVyIHsKICBwdWJsaWM6CkBAIC04OSw4ICs4NSw3IEBAIGNsYXNzIExlYWtDaGVj
a2VyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewogICAgIC8vIFlvdSBjYW4gZ2Vu
ZXJhdGUgYSBmYWlsdXJlIGluIGFueSBldmVudCBoYW5kbGVyIGV4Y2VwdAogICAgIC8vIE9uVGVz
dFBhcnRSZXN1bHQuIEp1c3QgdXNlIGFuIGFwcHJvcHJpYXRlIEdvb2dsZSBUZXN0IGFzc2VydGlv
biB0byBkbwogICAgIC8vIGl0LgotICAgIEVYUEVDVF9UUlVFKGRpZmZlcmVuY2UgPD0gMCkKLSAg
ICAgICAgPDwgIkxlYWtlZCAiIDw8IGRpZmZlcmVuY2UgPDwgIiB1bml0KHMpIG9mIFdhdGVyISI7
CisgICAgRVhQRUNUX0xFKGRpZmZlcmVuY2UsIDApIDw8ICJMZWFrZWQgIiA8PCBkaWZmZXJlbmNl
IDw8ICIgdW5pdChzKSBvZiBXYXRlciEiOwogICB9CiAKICAgaW50IGluaXRpYWxseV9hbGxvY2F0
ZWRfOwpAQCAtMTA3LDcgKzEwMiw2IEBAIFRFU1QoTGlzdGVuZXJzVGVzdCwgTGVha3NXYXRlcikg
ewogICBXYXRlciogd2F0ZXIgPSBuZXcgV2F0ZXI7CiAgIEVYUEVDVF9UUlVFKHdhdGVyICE9IE5V
TEwpOwogfQotCiB9ICAvLyBuYW1lc3BhY2UKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiph
cmd2KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBs
ZTFfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTFf
dW5pdHRlc3QuY2MKaW5kZXggMDFlYjU0NjJmODFhZDU0YjM4YWM1ZWU2MzM3OTcyZWFhMDRkN2Fk
ZS4uY2IwOGI2MWE1OWE5ZTE2YjM2NTc4NjFmMWM5NjA5MDAxZDIwOTZiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYwpAQCAt
MjgsOSArMjgsNiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1v
bnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0
aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCiAKIC8vIFRoaXMgc2FtcGxlIHNo
b3dzIGhvdyB0byB3cml0ZSBhIHNpbXBsZSB1bml0IHRlc3QgZm9yIGEgZnVuY3Rpb24sCiAvLyB1
c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgpAQCAtNDUsOCArNDIsOCBAQAogCiAj
aW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSAic2FtcGxlMS5oIgotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+Ci0KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorbmFtZXNwYWNlIHsKIAogLy8g
U3RlcCAyLiBVc2UgdGhlIFRFU1QgbWFjcm8gdG8gZGVmaW5lIHlvdXIgdGVzdHMuCiAvLwpAQCAt
ODEsNyArNzgsNyBAQCBURVNUKEZhY3RvcmlhbFRlc3QsIE5lZ2F0aXZlKSB7CiAgIC8vIHRlc3Qg
Y2FzZS4KICAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgtNSkpOwogICBFWFBFQ1RfRVEoMSwgRmFj
dG9yaWFsKC0xKSk7Ci0gIEVYUEVDVF9UUlVFKEZhY3RvcmlhbCgtMTApID4gMCk7CisgIEVYUEVD
VF9HVChGYWN0b3JpYWwoLTEwKSwgMCk7CiAKICAgLy8gPFRlY2huaWNhbERldGFpbHM+CiAgIC8v
CkBAIC0xMzksNiArMTM2LDcgQEAgVEVTVChJc1ByaW1lVGVzdCwgUG9zaXRpdmUpIHsKICAgRVhQ
RUNUX0ZBTFNFKElzUHJpbWUoNikpOwogICBFWFBFQ1RfVFJVRShJc1ByaW1lKDIzKSk7CiB9Cit9
ICAvLyBuYW1lc3BhY2UKIAogLy8gU3RlcCAzLiBDYWxsIFJVTl9BTExfVEVTVFMoKSBpbiBtYWlu
KCkuCiAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1w
bGUyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUyLmNjCmluZGV4
IDVmNzYzYjliZGY4ZDdhYmMxM2M2MWM1NjgzMzFkMjFiOWZhNDk3NWQuLmYzYjcyMmZjYWNmZWVl
N2Q4OTBiMmQxZjE5YmM5NzQxNWVjYTQ5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9z
YW1wbGVzL3NhbXBsZTIuY2MKQEAgLTI4LDggKzI4LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8v
IEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3Rpbmcg
ZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikK
IAogI2luY2x1ZGUgInNhbXBsZTIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2FtcGxlcy9zYW1wbGUyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVz
L3NhbXBsZTIuaAppbmRleCA1YjU3ZTYwODJmYTRmNmI3MjRiZmI1ODI2ODdiZmUwYTYzMTlmMmE3
Li41OGYzNjBmNDVjNzY1OGMwMTk3ZTNmZmM2NWVjOGIzNzVmYjMzNmIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTIuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTIuaApAQCAtMjgsOCArMjgsNiBAQAogLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2ds
ZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAo
WmhhbnlvbmcgV2FuKQogCiAjaWZuZGVmIEdURVNUX1NBTVBMRVNfU0FNUExFMl9IXwogI2RlZmlu
ZSBHVEVTVF9TQU1QTEVTX1NBTVBMRTJfSF8KQEAgLTQ0LDcgKzQyLDYgQEAgY2xhc3MgTXlTdHJp
bmcgewogICBjb25zdCBNeVN0cmluZyYgb3BlcmF0b3I9KGNvbnN0IE15U3RyaW5nJiByaHMpOwog
CiAgcHVibGljOgotCiAgIC8vIENsb25lcyBhIDAtdGVybWluYXRlZCBDIHN0cmluZywgYWxsb2Nh
dGluZyBtZW1vcnkgdXNpbmcgbmV3LgogICBzdGF0aWMgY29uc3QgY2hhciogQ2xvbmVDU3RyaW5n
KGNvbnN0IGNoYXIqIGFfY19zdHJpbmcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2MKaW5kZXggMzIyMzJkOThjMGJkMjU0ODIx
YzhmNjkxYTZiODU1ZjFmMTYxNmZiOC4uMDg0ODgyNjE5MmNjNjZmY2I3OTA2ZWYyYzBhYWVmNjZh
Zjg0M2Y5MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1w
bGUyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2Ft
cGxlMl91bml0dGVzdC5jYwpAQCAtMjgsOSArMjgsNiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8g
QSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBm
cmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQot
CiAKIC8vIFRoaXMgc2FtcGxlIHNob3dzIGhvdyB0byB3cml0ZSBhIG1vcmUgY29tcGxleCB1bml0
IHRlc3QgZm9yIGEgY2xhc3MKIC8vIHRoYXQgaGFzIG11bHRpcGxlIG1lbWJlciBmdW5jdGlvbnMu
CkBAIC00MSw4ICszOCw4IEBACiAvLyBuZWVkZWQuCiAKICNpbmNsdWRlICJzYW1wbGUyLmgiCi0j
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCituYW1l
c3BhY2UgewogLy8gSW4gdGhpcyBleGFtcGxlLCB3ZSB0ZXN0IHRoZSBNeVN0cmluZyBjbGFzcyAo
YSBzaW1wbGUgc3RyaW5nKS4KIAogLy8gVGVzdHMgdGhlIGRlZmF1bHQgYyd0b3IuCkBAIC03OSw3
ICs3Niw3IEBAIGNvbnN0IGNoYXIga0hlbGxvU3RyaW5nW10gPSAiSGVsbG8sIHdvcmxkISI7CiAv
LyBUZXN0cyB0aGUgYyd0b3IgdGhhdCBhY2NlcHRzIGEgQyBzdHJpbmcuCiBURVNUKE15U3RyaW5n
LCBDb25zdHJ1Y3RvckZyb21DU3RyaW5nKSB7CiAgIGNvbnN0IE15U3RyaW5nIHMoa0hlbGxvU3Ry
aW5nKTsKLSAgRVhQRUNUX1RSVUUoc3RyY21wKHMuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSA9
PSAwKTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykp
OwogICBFWFBFQ1RfRVEoc2l6ZW9mKGtIZWxsb1N0cmluZykvc2l6ZW9mKGtIZWxsb1N0cmluZ1sw
XSkgLSAxLAogICAgICAgICAgICAgcy5MZW5ndGgoKSk7CiB9CkBAIC04OCw3ICs4NSw3IEBAIFRF
U1QoTXlTdHJpbmcsIENvbnN0cnVjdG9yRnJvbUNTdHJpbmcpIHsKIFRFU1QoTXlTdHJpbmcsIENv
cHlDb25zdHJ1Y3RvcikgewogICBjb25zdCBNeVN0cmluZyBzMShrSGVsbG9TdHJpbmcpOwogICBj
b25zdCBNeVN0cmluZyBzMiA9IHMxOwotICBFWFBFQ1RfVFJVRShzdHJjbXAoczIuY19zdHJpbmco
KSwga0hlbGxvU3RyaW5nKSA9PSAwKTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzMi5jX3N0cmlu
ZygpLCBrSGVsbG9TdHJpbmcpKTsKIH0KIAogLy8gVGVzdHMgdGhlIFNldCBtZXRob2QuCkBAIC05
NiwxNCArOTMsMTUgQEAgVEVTVChNeVN0cmluZywgU2V0KSB7CiAgIE15U3RyaW5nIHM7CiAKICAg
cy5TZXQoa0hlbGxvU3RyaW5nKTsKLSAgRVhQRUNUX1RSVUUoc3RyY21wKHMuY19zdHJpbmcoKSwg
a0hlbGxvU3RyaW5nKSA9PSAwKTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzLmNfc3RyaW5nKCks
IGtIZWxsb1N0cmluZykpOwogCiAgIC8vIFNldCBzaG91bGQgd29yayB3aGVuIHRoZSBpbnB1dCBw
b2ludGVyIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUKICAgLy8gYWxyZWFkeSBpbiB0aGUgTXlTdHJp
bmcgb2JqZWN0LgogICBzLlNldChzLmNfc3RyaW5nKCkpOwotICBFWFBFQ1RfVFJVRShzdHJjbXAo
cy5jX3N0cmluZygpLCBrSGVsbG9TdHJpbmcpID09IDApOworICBFWFBFQ1RfRVEoMCwgc3RyY21w
KHMuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSk7CiAKICAgLy8gQ2FuIHdlIHNldCB0aGUgTXlT
dHJpbmcgdG8gTlVMTD8KICAgcy5TZXQoTlVMTCk7CiAgIEVYUEVDVF9TVFJFUShOVUxMLCBzLmNf
c3RyaW5nKCkpOwogfQorfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTMtaW5sLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zYW1wbGVzL3NhbXBsZTMtaW5sLmgKaW5kZXggNDYzNjlhMDc2ZDg1YzQxMTQyM2FjYWE5OGRk
NDU1ZTU1OWVkMzAwYS4uMWEyOWNlOTI5NmE2NGRmZTk3YTlmN2ZkYzZkYTg2Mzg3ZGMwYjc1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzLWlubC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMy1pbmwuaApAQCAt
MjgsOCArMjgsNiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1v
bnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0
aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCiAjaWZuZGVmIEdURVNUX1NBTVBM
RVNfU0FNUExFM19JTkxfSF8KICNkZWZpbmUgR1RFU1RfU0FNUExFU19TQU1QTEUzX0lOTF9IXwpA
QCAtNjAsNyArNTgsNyBAQCBjbGFzcyBRdWV1ZU5vZGUgewogIHByaXZhdGU6CiAgIC8vIENyZWF0
ZXMgYSBub2RlIHdpdGggYSBnaXZlbiBlbGVtZW50IHZhbHVlLiAgVGhlIG5leHQgcG9pbnRlciBp
cwogICAvLyBzZXQgdG8gTlVMTC4KLSAgUXVldWVOb2RlKGNvbnN0IEUmIGFuX2VsZW1lbnQpIDog
ZWxlbWVudF8oYW5fZWxlbWVudCksIG5leHRfKE5VTEwpIHt9CisgIGV4cGxpY2l0IFF1ZXVlTm9k
ZShjb25zdCBFJiBhbl9lbGVtZW50KSA6IGVsZW1lbnRfKGFuX2VsZW1lbnQpLCBuZXh0XyhOVUxM
KSB7fQogCiAgIC8vIFdlIGRpc2FibGUgdGhlIGRlZmF1bHQgYXNzaWdubWVudCBvcGVyYXRvciBh
bmQgY29weSBjJ3Rvci4KICAgY29uc3QgUXVldWVOb2RlJiBvcGVyYXRvciA9IChjb25zdCBRdWV1
ZU5vZGUmKTsKQEAgLTcyLDggKzcwLDcgQEAgY2xhc3MgUXVldWVOb2RlIHsKIAogdGVtcGxhdGUg
PHR5cGVuYW1lIEU+ICAvLyBFIGlzIHRoZSBlbGVtZW50IHR5cGUuCiBjbGFzcyBRdWV1ZSB7Ci1w
dWJsaWM6Ci0KKyBwdWJsaWM6CiAgIC8vIENyZWF0ZXMgYW4gZW1wdHkgcXVldWUuCiAgIFF1ZXVl
KCkgOiBoZWFkXyhOVUxMKSwgbGFzdF8oTlVMTCksIHNpemVfKDApIHt9CiAKQEAgLTE2OCw2ICsx
NjUsNiBAQCBwdWJsaWM6CiAgIC8vIFdlIGRpc2FsbG93IGNvcHlpbmcgYSBxdWV1ZS4KICAgUXVl
dWUoY29uc3QgUXVldWUmKTsKICAgY29uc3QgUXVldWUmIG9wZXJhdG9yID0gKGNvbnN0IFF1ZXVl
Jik7Ci0gfTsKK307CiAKICNlbmRpZiAgLy8gR1RFU1RfU0FNUExFU19TQU1QTEUzX0lOTF9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0
LmNjCmluZGV4IDM0YzFjYTg2NTZlYWI1NjQxODE1NjBkYmYxNDlkMGEyYWE5MmNjMWQuLmUwOTNj
MjU4ODU3M2Y5NjI3MGE1ZWQ0MTI0NWFjN2U4OWY0ODUxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MKQEAgLTI4LDkgKzI4
LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGlu
ZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2Fu
QGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQogCiAvLyBJbiB0aGlzIGV4YW1wbGUsIHdlIHVz
ZSBhIG1vcmUgYWR2YW5jZWQgZmVhdHVyZSBvZiBHb29nbGUgVGVzdCBjYWxsZWQKIC8vIHRlc3Qg
Zml4dHVyZS4KQEAgLTY0LDE1ICs2MSwxNSBAQAogLy8gPC9UZWNobmljYWxEZXRhaWxzPgogCiAj
aW5jbHVkZSAic2FtcGxlMy1pbmwuaCIKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKK25hbWVzcGFjZSB7CiAvLyBUbyB1c2UgYSB0ZXN0IGZpeHR1
cmUsIGRlcml2ZSBhIGNsYXNzIGZyb20gdGVzdGluZzo6VGVzdC4KLWNsYXNzIFF1ZXVlVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIFF1ZXVlVGVzdFNtcGwzIDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgewogIHByb3RlY3RlZDogIC8vIFlvdSBzaG91bGQgbWFrZSB0aGUgbWVtYmVy
cyBwcm90ZWN0ZWQgcy50LiB0aGV5IGNhbiBiZQogICAgICAgICAgICAgIC8vIGFjY2Vzc2VkIGZy
b20gc3ViLWNsYXNzZXMuCiAKICAgLy8gdmlydHVhbCB2b2lkIFNldFVwKCkgd2lsbCBiZSBjYWxs
ZWQgYmVmb3JlIGVhY2ggdGVzdCBpcyBydW4uICBZb3UKLSAgLy8gc2hvdWxkIGRlZmluZSBpdCBp
ZiB5b3UgbmVlZCB0byBpbml0aWFsaXplIHRoZSB2YXJhaWJsZXMuCisgIC8vIHNob3VsZCBkZWZp
bmUgaXQgaWYgeW91IG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGUgdmFyaWFibGVzLgogICAvLyBPdGhl
cndpc2UsIHRoaXMgY2FuIGJlIHNraXBwZWQuCiAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKICAg
ICBxMV8uRW5xdWV1ZSgxKTsKQEAgLTEyMCwxMyArMTE3LDEzIEBAIGNsYXNzIFF1ZXVlVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIC8vIGluc3RlYWQgb2YgVEVTVC4KIAogLy8gVGVzdHMg
dGhlIGRlZmF1bHQgYyd0b3IuCi1URVNUX0YoUXVldWVUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3Ip
IHsKK1RFU1RfRihRdWV1ZVRlc3RTbXBsMywgRGVmYXVsdENvbnN0cnVjdG9yKSB7CiAgIC8vIFlv
dSBjYW4gYWNjZXNzIGRhdGEgaW4gdGhlIHRlc3QgZml4dHVyZSBoZXJlLgogICBFWFBFQ1RfRVEo
MHUsIHEwXy5TaXplKCkpOwogfQogCiAvLyBUZXN0cyBEZXF1ZXVlKCkuCi1URVNUX0YoUXVldWVU
ZXN0LCBEZXF1ZXVlKSB7CitURVNUX0YoUXVldWVUZXN0U21wbDMsIERlcXVldWUpIHsKICAgaW50
ICogbiA9IHEwXy5EZXF1ZXVlKCk7CiAgIEVYUEVDVF9UUlVFKG4gPT0gTlVMTCk7CiAKQEAgLTE0
NCw4ICsxNDEsOSBAQCBURVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVlKSB7CiB9CiAKIC8vIFRlc3Rz
IHRoZSBRdWV1ZTo6TWFwKCkgZnVuY3Rpb24uCi1URVNUX0YoUXVldWVUZXN0LCBNYXApIHsKK1RF
U1RfRihRdWV1ZVRlc3RTbXBsMywgTWFwKSB7CiAgIE1hcFRlc3RlcigmcTBfKTsKICAgTWFwVGVz
dGVyKCZxMV8pOwogICBNYXBUZXN0ZXIoJnEyXyk7CiB9Cit9ICAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNC5jYwppbmRleCBhZTQ0YmRhNmYxYmFk
NTNmZjNjNmYxNGUwMzAyYmQzYmIzMDljYmE3Li5iMGVlNjA5M2I0YTI1MGNmMTE5MzZjY2M4MjA4
YTYxMjI5MWI4MTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVz
L3NhbXBsZTQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0
LmNjCkBAIC0yOCw4ICsyOCw2IEBACiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAvLyBBIHNhbXBsZSBwcm9n
cmFtIGRlbW9uc3RyYXRpbmcgdXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8v
Ci0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAKICNpbmNsdWRlIDxz
dGRpby5oPgogCkBAIC00MCw2ICszOCwxNiBAQCBpbnQgQ291bnRlcjo6SW5jcmVtZW50KCkgewog
ICByZXR1cm4gY291bnRlcl8rKzsKIH0KIAorLy8gUmV0dXJucyB0aGUgY3VycmVudCBjb3VudGVy
IHZhbHVlLCBhbmQgZGVjcmVtZW50cyBpdC4KKy8vIGNvdW50ZXIgY2FuIG5vdCBiZSBsZXNzIHRo
YW4gMCwgcmV0dXJuIDAgaW4gdGhpcyBjYXNlCitpbnQgQ291bnRlcjo6RGVjcmVtZW50KCkgewor
ICBpZiAoY291bnRlcl8gPT0gMCkgeworICAgIHJldHVybiBjb3VudGVyXzsKKyAgfSBlbHNlICB7
CisgICAgcmV0dXJuIGNvdW50ZXJfLS07CisgIH0KK30KKwogLy8gUHJpbnRzIHRoZSBjdXJyZW50
IGNvdW50ZXIgdmFsdWUgdG8gU1RET1VULgogdm9pZCBDb3VudGVyOjpQcmludCgpIGNvbnN0IHsK
ICAgcHJpbnRmKCIlZCIsIGNvdW50ZXJfKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxl
cy9zYW1wbGU0LmgKaW5kZXggY2Q2MGYwZGQyZDE4NjA3MzdiN2YwZWE0NWM1Njc1YTNhOGVhNzIx
Zi4uZTI1NmY0MDY0ZmU5MWE3ZjAxYTk0NTUwZDMyYzNiYjExYjBhNGZmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0LmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0LmgKQEAgLTI4LDkgKzI4LDYgQEAKIC8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29n
bGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20g
KFpoYW55b25nIFdhbikKLQogI2lmbmRlZiBHVEVTVF9TQU1QTEVTX1NBTVBMRTRfSF8KICNkZWZp
bmUgR1RFU1RfU0FNUExFU19TQU1QTEU0X0hfCiAKQEAgLTQ2LDYgKzQzLDkgQEAgY2xhc3MgQ291
bnRlciB7CiAgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgY291bnRlciB2YWx1ZSwgYW5kIGluY3Jl
bWVudHMgaXQuCiAgIGludCBJbmNyZW1lbnQoKTsKIAorICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50
IGNvdW50ZXIgdmFsdWUsIGFuZCBkZWNyZW1lbnRzIGl0LgorICBpbnQgRGVjcmVtZW50KCk7CisK
ICAgLy8gUHJpbnRzIHRoZSBjdXJyZW50IGNvdW50ZXIgdmFsdWUgdG8gU1RET1VULgogICB2b2lk
IFByaW50KCkgY29uc3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGU0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ft
cGxlcy9zYW1wbGU0X3VuaXR0ZXN0LmNjCmluZGV4IGI0ZmIzNzM2YWJiZmY4M2Y3OWFmNDQ3Y2E0
YmM2YjkxMDU4NjkzMmUuLmQ1MTQ0YzBkMDBmNWM3NjAwNjkzZWEwMjU4MDJjMGQ3ZDUyNTBkMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNF91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTRfdW5p
dHRlc3QuY2MKQEAgLTI2LDIwICsyNiwyOCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKICNpbmNsdWRlICJzYW1wbGU0
LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAorbmFtZXNwYWNlIHsKIC8vIFRlc3RzIHRo
ZSBJbmNyZW1lbnQoKSBtZXRob2QuCisKIFRFU1QoQ291bnRlciwgSW5jcmVtZW50KSB7CiAgIENv
dW50ZXIgYzsKIAorICAvLyBUZXN0IHRoYXQgY291bnRlciAwIHJldHVybnMgMAorICBFWFBFQ1Rf
RVEoMCwgYy5EZWNyZW1lbnQoKSk7CisKICAgLy8gRVhQRUNUX0VRKCkgZXZhbHVhdGVzIGl0cyBh
cmd1bWVudHMgZXhhY3RseSBvbmNlLCBzbyB0aGV5CiAgIC8vIGNhbiBoYXZlIHNpZGUgZWZmZWN0
cy4KIAogICBFWFBFQ1RfRVEoMCwgYy5JbmNyZW1lbnQoKSk7CiAgIEVYUEVDVF9FUSgxLCBjLklu
Y3JlbWVudCgpKTsKICAgRVhQRUNUX0VRKDIsIGMuSW5jcmVtZW50KCkpOworCisgIEVYUEVDVF9F
USgzLCBjLkRlY3JlbWVudCgpKTsKIH0KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MKaW5kZXggNDlk
YWU3YzY5ZmE3NmU4YTQ4NjA3NzA2YjRhMTYyYzY0MmYwYTA4NS4uZDhhODc4OGM2ZDBmZGEyMzg2
NDZmZWEyOTBlMDk3Y2M3NjI3Nzg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYwpAQCAtMjYsOCArMjYsNyBAQAogLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUaGlzIHNhbXBsZSB0ZWFjaGVz
IGhvdyB0byByZXVzZSBhIHRlc3QgZml4dHVyZSBpbiBtdWx0aXBsZSB0ZXN0CiAvLyBjYXNlcyBi
eSBkZXJpdmluZyBzdWItZml4dHVyZXMgZnJvbSBpdC4KQEAgLTQ2LDEwICs0NSwxMCBAQAogCiAj
aW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8dGltZS5oPgotI2luY2x1ZGUgInNhbXBsZTMt
aW5sLmgiCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgogI2luY2x1ZGUgInNhbXBsZTEuaCIKLQorI2luY2x1ZGUgInNhbXBsZTMtaW5sLmgiCituYW1l
c3BhY2UgewogLy8gSW4gdGhpcyBzYW1wbGUsIHdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgZXZlcnkg
dGVzdCBmaW5pc2hlcyB3aXRoaW4KIC8vIH41IHNlY29uZHMuICBJZiBhIHRlc3QgdGFrZXMgbG9u
Z2VyIHRvIHJ1biwgd2UgY29uc2lkZXIgaXQgYQogLy8gZmFpbHVyZS4KQEAgLTEwMSw3ICsxMDAs
NyBAQCBURVNUX0YoSW50ZWdlckZ1bmN0aW9uVGVzdCwgRmFjdG9yaWFsKSB7CiAgIC8vIFRlc3Rz
IGZhY3RvcmlhbCBvZiBuZWdhdGl2ZSBudW1iZXJzLgogICBFWFBFQ1RfRVEoMSwgRmFjdG9yaWFs
KC01KSk7CiAgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoLTEpKTsKLSAgRVhQRUNUX1RSVUUoRmFj
dG9yaWFsKC0xMCkgPiAwKTsKKyAgRVhQRUNUX0dUKEZhY3RvcmlhbCgtMTApLCAwKTsKIAogICAv
LyBUZXN0cyBmYWN0b3JpYWwgb2YgMC4KICAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgwKSk7CkBA
IC0xMTcsMjAgKzExNiwyMCBAQCBURVNUX0YoSW50ZWdlckZ1bmN0aW9uVGVzdCwgRmFjdG9yaWFs
KSB7CiAvLyBUZXN0cyBJc1ByaW1lKCkKIFRFU1RfRihJbnRlZ2VyRnVuY3Rpb25UZXN0LCBJc1By
aW1lKSB7CiAgIC8vIFRlc3RzIG5lZ2F0aXZlIGlucHV0LgotICBFWFBFQ1RfVFJVRSghSXNQcmlt
ZSgtMSkpOwotICBFWFBFQ1RfVFJVRSghSXNQcmltZSgtMikpOwotICBFWFBFQ1RfVFJVRSghSXNQ
cmltZShJTlRfTUlOKSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKC0xKSk7CisgIEVYUEVDVF9G
QUxTRShJc1ByaW1lKC0yKSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKElOVF9NSU4pKTsKIAog
ICAvLyBUZXN0cyBzb21lIHRyaXZpYWwgY2FzZXMuCi0gIEVYUEVDVF9UUlVFKCFJc1ByaW1lKDAp
KTsKLSAgRVhQRUNUX1RSVUUoIUlzUHJpbWUoMSkpOworICBFWFBFQ1RfRkFMU0UoSXNQcmltZSgw
KSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKDEpKTsKICAgRVhQRUNUX1RSVUUoSXNQcmltZSgy
KSk7CiAgIEVYUEVDVF9UUlVFKElzUHJpbWUoMykpOwogCiAgIC8vIFRlc3RzIHBvc2l0aXZlIGlu
cHV0LgotICBFWFBFQ1RfVFJVRSghSXNQcmltZSg0KSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1l
KDQpKTsKICAgRVhQRUNUX1RSVUUoSXNQcmltZSg1KSk7Ci0gIEVYUEVDVF9UUlVFKCFJc1ByaW1l
KDYpKTsKKyAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoNikpOwogICBFWFBFQ1RfVFJVRShJc1ByaW1l
KDIzKSk7CiB9CiAKQEAgLTE5MSw3ICsxOTAsNyBAQCBURVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVl
KSB7CiAgIEVYUEVDVF9FUSgxdSwgcTJfLlNpemUoKSk7CiAgIGRlbGV0ZSBuOwogfQotCit9ICAv
LyBuYW1lc3BhY2UKIC8vIElmIG5lY2Vzc2FyeSwgeW91IGNhbiBkZXJpdmUgZnVydGhlciB0ZXN0
IGZpeHR1cmVzIGZyb20gYSBkZXJpdmVkCiAvLyBmaXh0dXJlIGl0c2VsZi4gIEZvciBleGFtcGxl
LCB5b3UgY2FuIGRlcml2ZSBhbm90aGVyIGZpeHR1cmUgZnJvbQogLy8gUXVldWVUZXN0LiAgR29v
Z2xlIFRlc3QgaW1wb3NlcyBubyBsaW1pdCBvbiBob3cgZGVlcCB0aGUgaGllcmFyY2h5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2MK
aW5kZXggZGQwZGYzMWYwYmI3Y2JmMjYxNjA3MzQyZTg2NDA0ZDc1YTg1MzQzZS4uZGRmMmYxYzEz
YmJlMDM0ODEzNDQ5MzZiMGE3MmRiYjJhMGIyODQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYwpAQCAtMjYsOCArMjYsNyBA
QAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8v
IEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUaGlzIHNhbXBs
ZSBzaG93cyBob3cgdG8gdGVzdCBjb21tb24gcHJvcGVydGllcyBvZiBtdWx0aXBsZQogLy8gaW1w
bGVtZW50YXRpb25zIG9mIHRoZSBzYW1lIGludGVyZmFjZSAoYWthIGludGVyZmFjZSB0ZXN0cyku
CkBAIC0zNSw4ICszNCw4IEBACiAvLyBUaGUgaW50ZXJmYWNlIGFuZCBpdHMgaW1wbGVtZW50YXRp
b25zIGFyZSBpbiB0aGlzIGhlYWRlci4KICNpbmNsdWRlICJwcmltZV90YWJsZXMuaCIKIAotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorbmFtZXNw
YWNlIHsKIC8vIEZpcnN0LCB3ZSBkZWZpbmUgc29tZSBmYWN0b3J5IGZ1bmN0aW9ucyBmb3IgY3Jl
YXRpbmcgaW5zdGFuY2VzIG9mCiAvLyB0aGUgaW1wbGVtZW50YXRpb25zLiAgWW91IG1heSBiZSBh
YmxlIHRvIHNraXAgdGhpcyBzdGVwIGlmIGFsbCB5b3VyCiAvLyBpbXBsZW1lbnRhdGlvbnMgY2Fu
IGJlIGNvbnN0cnVjdGVkIHRoZSBzYW1lIHdheS4KQEAgLTIyMiwzICsyMjEsNCBAQCBJTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChPblRoZUZseUFuZFByZUNhbGN1bGF0ZWQsICAgIC8vIElu
c3RhbmNlIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1lVGFibGVJbXBs
ZW1lbnRhdGlvbnMpOyAgLy8gVHlwZSBsaXN0CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVE
X1RFU1RfUAorfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MKaW5kZXggZjQ1NTI4MjdlZDliODMwNmNkZDMx
OWFhNTdmM2VkMDY3NjJiNGY1Zi4uYzFhZThiZGVkYzlhZmM5YTExZDBkOTIwMjFlZjc2NzdkMzk4
YTljOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU3
X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxl
N191bml0dGVzdC5jYwpAQCAtMjYsOCArMjYsNyBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAo
VmxhZCBMb3NldikKKwogCiAvLyBUaGlzIHNhbXBsZSBzaG93cyBob3cgdG8gdGVzdCBjb21tb24g
cHJvcGVydGllcyBvZiBtdWx0aXBsZQogLy8gaW1wbGVtZW50YXRpb25zIG9mIGFuIGludGVyZmFj
ZSAoYWthIGludGVyZmFjZSB0ZXN0cykgdXNpbmcKQEAgLTM4LDE5ICszNywxNyBAQAogLy8gVGhl
IGludGVyZmFjZSBhbmQgaXRzIGltcGxlbWVudGF0aW9ucyBhcmUgaW4gdGhpcyBoZWFkZXIuCiAj
aW5jbHVkZSAicHJpbWVfdGFibGVzLmgiCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0j
aWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorbmFtZXNw
YWNlIHsKIAogdXNpbmcgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtOwogdXNpbmcgOjp0ZXN0aW5n
OjpWYWx1ZXM7CiAKLS8vIEFzIGEgZ2VuZXJhbCBydWxlLCB0ZXN0ZWQgb2JqZWN0cyBzaG91bGQg
bm90IGJlIHJldXNlZCBiZXR3ZWVuIHRlc3RzLgotLy8gQWxzbywgdGhlaXIgY29uc3RydWN0b3Jz
IGFuZCBkZXN0cnVjdG9ycyBvZiB0ZXN0ZWQgb2JqZWN0cyBjYW4gaGF2ZQotLy8gc2lkZSBlZmZl
Y3RzLiBUaHVzIHlvdSBzaG91bGQgY3JlYXRlIGFuZCBkZXN0cm95IHRoZW0gZm9yIGVhY2ggdGVz
dC4KLS8vIEluIHRoaXMgc2FtcGxlIHdlIHdpbGwgZGVmaW5lIGEgc2ltcGxlIGZhY3RvcnkgZnVu
Y3Rpb24gZm9yIFByaW1lVGFibGUKLS8vIG9iamVjdHMuIFdlIHdpbGwgaW5zdGFudGlhdGUgb2Jq
ZWN0cyBpbiB0ZXN0J3MgU2V0VXAoKSBtZXRob2QgYW5kCi0vLyBkZWxldGUgdGhlbSBpbiBUZWFy
RG93bigpIG1ldGhvZC4KKy8vIEFzIGEgZ2VuZXJhbCBydWxlLCB0byBwcmV2ZW50IGEgdGVzdCBm
cm9tIGFmZmVjdGluZyB0aGUgdGVzdHMgdGhhdCBjb21lCisvLyBhZnRlciBpdCwgeW91IHNob3Vs
ZCBjcmVhdGUgYW5kIGRlc3Ryb3kgdGhlIHRlc3RlZCBvYmplY3RzIGZvciBlYWNoIHRlc3QKKy8v
IGluc3RlYWQgb2YgcmV1c2luZyB0aGVtLiAgSW4gdGhpcyBzYW1wbGUgd2Ugd2lsbCBkZWZpbmUg
YSBzaW1wbGUgZmFjdG9yeQorLy8gZnVuY3Rpb24gZm9yIFByaW1lVGFibGUgb2JqZWN0cy4gIFdl
IHdpbGwgaW5zdGFudGlhdGUgb2JqZWN0cyBpbiB0ZXN0J3MKKy8vIFNldFVwKCkgbWV0aG9kIGFu
ZCBkZWxldGUgdGhlbSBpbiBUZWFyRG93bigpIG1ldGhvZC4KIHR5cGVkZWYgUHJpbWVUYWJsZSog
Q3JlYXRlUHJpbWVUYWJsZUZ1bmMoKTsKIAogUHJpbWVUYWJsZSogQ3JlYXRlT25UaGVGbHlQcmlt
ZVRhYmxlKCkgewpAQCAtNjIsMTQgKzU5LDEzIEBAIFByaW1lVGFibGUqIENyZWF0ZVByZUNhbGN1
bGF0ZWRQcmltZVRhYmxlKCkgewogICByZXR1cm4gbmV3IFByZUNhbGN1bGF0ZWRQcmltZVRhYmxl
KG1heF9wcmVjYWxjdWxhdGVkKTsKIH0KIAotLy8gSW5zaWRlIHRoZSB0ZXN0IGJvZHksIGZpeHR1
cmUgY29uc3RydWN0b3IsIFNldFVwKCksIGFuZCBUZWFyRG93bigpCi0vLyB5b3UgY2FuIHJlZmVy
IHRvIHRoZSB0ZXN0IHBhcmFtZXRlciBieSBHZXRQYXJhbSgpLgotLy8gSW4gdGhpcyBjYXNlLCB0
aGUgdGVzdCBwYXJhbWV0ZXIgaXMgYSBQcmltZVRhYmxlRmFjdG9yeSBpbnRlcmZhY2UgcG9pbnRl
cgotLy8gd2hpY2ggd2UgdXNlIGluIGZpeHR1cmUncyBTZXRVcCgpIHRvIGNyZWF0ZSBhbmQgc3Rv
cmUgYW4gaW5zdGFuY2Ugb2YKLS8vIFByaW1lVGFibGUuCi1jbGFzcyBQcmltZVRhYmxlVGVzdCA6
IHB1YmxpYyBUZXN0V2l0aFBhcmFtPENyZWF0ZVByaW1lVGFibGVGdW5jKj4geworLy8gSW5zaWRl
IHRoZSB0ZXN0IGJvZHksIGZpeHR1cmUgY29uc3RydWN0b3IsIFNldFVwKCksIGFuZCBUZWFyRG93
bigpIHlvdQorLy8gY2FuIHJlZmVyIHRvIHRoZSB0ZXN0IHBhcmFtZXRlciBieSBHZXRQYXJhbSgp
LiAgSW4gdGhpcyBjYXNlLCB0aGUgdGVzdAorLy8gcGFyYW1ldGVyIGlzIGEgZmFjdG9yeSBmdW5j
dGlvbiB3aGljaCB3ZSBjYWxsIGluIGZpeHR1cmUncyBTZXRVcCgpIHRvCisvLyBjcmVhdGUgYW5k
IHN0b3JlIGFuIGluc3RhbmNlIG9mIFByaW1lVGFibGUuCitjbGFzcyBQcmltZVRhYmxlVGVzdFNt
cGw3IDogcHVibGljIFRlc3RXaXRoUGFyYW08Q3JlYXRlUHJpbWVUYWJsZUZ1bmMqPiB7CiAgcHVi
bGljOgotICB2aXJ0dWFsIH5QcmltZVRhYmxlVGVzdCgpIHsgZGVsZXRlIHRhYmxlXzsgfQorICB2
aXJ0dWFsIH5QcmltZVRhYmxlVGVzdFNtcGw3KCkgeyBkZWxldGUgdGFibGVfOyB9CiAgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsgdGFibGVfID0gKCpHZXRQYXJhbSgpKSgpOyB9CiAgIHZpcnR1YWwg
dm9pZCBUZWFyRG93bigpIHsKICAgICBkZWxldGUgdGFibGVfOwpAQCAtODAsNyArNzYsNyBAQCBj
bGFzcyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPENyZWF0ZVByaW1lVGFi
bGVGdW5jKj4gewogICBQcmltZVRhYmxlKiB0YWJsZV87CiB9OwogCi1URVNUX1AoUHJpbWVUYWJs
ZVRlc3QsIFJldHVybnNGYWxzZUZvck5vblByaW1lcykgeworVEVTVF9QKFByaW1lVGFibGVUZXN0
U21wbDcsIFJldHVybnNGYWxzZUZvck5vblByaW1lcykgewogICBFWFBFQ1RfRkFMU0UodGFibGVf
LT5Jc1ByaW1lKC01KSk7CiAgIEVYUEVDVF9GQUxTRSh0YWJsZV8tPklzUHJpbWUoMCkpOwogICBF
WFBFQ1RfRkFMU0UodGFibGVfLT5Jc1ByaW1lKDEpKTsKQEAgLTg5LDcgKzg1LDcgQEAgVEVTVF9Q
KFByaW1lVGFibGVUZXN0LCBSZXR1cm5zRmFsc2VGb3JOb25QcmltZXMpIHsKICAgRVhQRUNUX0ZB
TFNFKHRhYmxlXy0+SXNQcmltZSgxMDApKTsKIH0KIAotVEVTVF9QKFByaW1lVGFibGVUZXN0LCBS
ZXR1cm5zVHJ1ZUZvclByaW1lcykgeworVEVTVF9QKFByaW1lVGFibGVUZXN0U21wbDcsIFJldHVy
bnNUcnVlRm9yUHJpbWVzKSB7CiAgIEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSgyKSk7CiAg
IEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSgzKSk7CiAgIEVYUEVDVF9UUlVFKHRhYmxlXy0+
SXNQcmltZSg1KSk7CkBAIC05OCw3ICs5NCw3IEBAIFRFU1RfUChQcmltZVRhYmxlVGVzdCwgUmV0
dXJuc1RydWVGb3JQcmltZXMpIHsKICAgRVhQRUNUX1RSVUUodGFibGVfLT5Jc1ByaW1lKDEzMSkp
OwogfQogCi1URVNUX1AoUHJpbWVUYWJsZVRlc3QsIENhbkdldE5leHRQcmltZSkgeworVEVTVF9Q
KFByaW1lVGFibGVUZXN0U21wbDcsIENhbkdldE5leHRQcmltZSkgewogICBFWFBFQ1RfRVEoMiwg
dGFibGVfLT5HZXROZXh0UHJpbWUoMCkpOwogICBFWFBFQ1RfRVEoMywgdGFibGVfLT5HZXROZXh0
UHJpbWUoMikpOwogICBFWFBFQ1RfRVEoNSwgdGFibGVfLT5HZXROZXh0UHJpbWUoMykpOwpAQCAt
MTE0LDE5ICsxMTAsOCBAQCBURVNUX1AoUHJpbWVUYWJsZVRlc3QsIENhbkdldE5leHRQcmltZSkg
ewogLy8KIC8vIEhlcmUsIHdlIGluc3RhbnRpYXRlIG91ciB0ZXN0cyB3aXRoIGEgbGlzdCBvZiB0
d28gUHJpbWVUYWJsZSBvYmplY3QKIC8vIGZhY3RvcnkgZnVuY3Rpb25zOgotSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoCi0gICAgT25UaGVGbHlBbmRQcmVDYWxjdWxhdGVkLAotICAgIFByaW1lVGFi
bGVUZXN0LAotICAgIFZhbHVlcygmQ3JlYXRlT25UaGVGbHlQcmltZVRhYmxlLCAmQ3JlYXRlUHJl
Q2FsY3VsYXRlZFByaW1lVGFibGU8MTAwMD4pKTsKLQotI2Vsc2UKLQotLy8gR29vZ2xlIFRlc3Qg
bWF5IG5vdCBzdXBwb3J0IHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgd2l0aCBzb21lCi0vLyBj
b21waWxlcnMuIElmIHdlIHVzZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBjb21waWxlIG91
dCBhbGwKLS8vIGNvZGUgcmVmZXJyaW5nIHRvIHRoZSBndGVzdF9tYWluIGxpYnJhcnksIE1TVkMg
bGlua2VyIHdpbGwgbm90IGxpbmsKLS8vIHRoYXQgbGlicmFyeSBhdCBhbGwgYW5kIGNvbnNlcXVl
bnRseSBjb21wbGFpbiBhYm91dCBtaXNzaW5nIGVudHJ5Ci0vLyBwb2ludCBkZWZpbmVkIGluIHRo
YXQgbGlicmFyeSAoZmF0YWwgZXJyb3IgTE5LMTU2MTogZW50cnkgcG9pbnQKLS8vIG11c3QgYmUg
ZGVmaW5lZCkuIFRoaXMgZHVtbXkgdGVzdCBrZWVwcyBndGVzdF9tYWluIGxpbmtlZCBpbi4KLVRF
U1QoRHVtbXlUZXN0LCBWYWx1ZVBhcmFtZXRlcml6ZWRUZXN0c0FyZU5vdFN1cHBvcnRlZE9uVGhp
c1BsYXRmb3JtKSB7fQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoT25UaGVGbHlBbmRQcmVDYWxj
dWxhdGVkLCBQcmltZVRhYmxlVGVzdFNtcGw3LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFs
dWVzKCZDcmVhdGVPblRoZUZseVByaW1lVGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJkNyZWF0ZVByZUNhbGN1bGF0ZWRQcmltZVRhYmxlPDEwMDA+KSk7CiAKLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjCmluZGV4IGNjZjYx
ZDkyYjg1YzMxMmY3ZjJlYzJmNmQ4YTY3M2RmZjRiMDJkNjYuLmNlNzVjZjAzMDg3MGMzNzZkZmVj
NjAzMWRiMjQ3MTEwODcwMzgzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2MKQEAgLTI2LDggKzI2LDcgQEAKIC8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZs
YWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCisKIAogLy8gVGhpcyBzYW1wbGUgc2hvd3MgaG93
IHRvIHRlc3QgY29kZSByZWx5aW5nIG9uIHNvbWUgZ2xvYmFsIGZsYWcgdmFyaWFibGVzLgogLy8g
Q29tYmluZSgpIGhlbHBzIHdpdGggZ2VuZXJhdGluZyBhbGwgcG9zc2libGUgY29tYmluYXRpb25z
IG9mIHN1Y2ggZmxhZ3MsCkBAIC0zNiw4ICszNSw4IEBACiAvLyBVc2UgY2xhc3MgZGVmaW5pdGlv
bnMgdG8gdGVzdCBmcm9tIHRoaXMgaGVhZGVyLgogI2luY2x1ZGUgInByaW1lX3RhYmxlcy5oIgog
Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCitu
YW1lc3BhY2UgewogI2lmIEdURVNUX0hBU19DT01CSU5FCiAKIC8vIFN1cHBvc2Ugd2Ugd2FudCB0
byBpbnRyb2R1Y2UgYSBuZXcsIGltcHJvdmVkIGltcGxlbWVudGF0aW9uIG9mIFByaW1lVGFibGUK
QEAgLTkwLDcgKzg5LDcgQEAgdXNpbmcgOjp0ZXN0aW5nOjpDb21iaW5lOwogLy8gUHJlQ2FsY3Vs
YXRlZFByaW1lVGFibGUgZGlzYWJsZWQuIFdlIGRvIHRoaXMgYnkgZGVmaW5pbmcgZml4dHVyZSB3
aGljaCB3aWxsCiAvLyBhY2NlcHQgZGlmZmVyZW50IGNvbWJpbmF0aW9ucyBvZiBwYXJhbWV0ZXJz
IGZvciBpbnN0YW50aWF0aW5nIGEKIC8vIEh5YnJpZFByaW1lVGFibGUgaW5zdGFuY2UuCi1jbGFz
cyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPCA6OnN0ZDo6dHIxOjp0dXBs
ZTxib29sLCBpbnQ+ID4geworY2xhc3MgUHJpbWVUYWJsZVRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQ
YXJhbTwgOjp0ZXN0aW5nOjp0dXBsZTxib29sLCBpbnQ+ID4gewogIHByb3RlY3RlZDoKICAgdmly
dHVhbCB2b2lkIFNldFVwKCkgewogICAgIC8vIFRoaXMgY2FuIGJlIHdyaXR0ZW4gYXMKQEAgLTEw
MSw4ICsxMDAsOCBAQCBjbGFzcyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFt
PCA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQ+ID4gewogICAgIC8vCiAgICAgLy8gb25jZSB0
aGUgR29vZ2xlIEMrKyBTdHlsZSBHdWlkZSBhbGxvd3MgdXNlIG9mIDo6c3RkOjp0cjE6OnRpZS4K
ICAgICAvLwotICAgIGJvb2wgZm9yY2Vfb25fdGhlX2ZseSA9IDo6c3RkOjp0cjE6OmdldDwwPihH
ZXRQYXJhbSgpKTsKLSAgICBpbnQgbWF4X3ByZWNhbGN1bGF0ZWQgPSA6OnN0ZDo6dHIxOjpnZXQ8
MT4oR2V0UGFyYW0oKSk7CisgICAgYm9vbCBmb3JjZV9vbl90aGVfZmx5ID0gOjp0ZXN0aW5nOjpn
ZXQ8MD4oR2V0UGFyYW0oKSk7CisgICAgaW50IG1heF9wcmVjYWxjdWxhdGVkID0gOjp0ZXN0aW5n
OjpnZXQ8MT4oR2V0UGFyYW0oKSk7CiAgICAgdGFibGVfID0gbmV3IEh5YnJpZFByaW1lVGFibGUo
Zm9yY2Vfb25fdGhlX2ZseSwgbWF4X3ByZWNhbGN1bGF0ZWQpOwogICB9CiAgIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsKQEAgLTE3MSwzICsxNzAsNCBAQCBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UChNZWFuaW5nZnVsVGVzdFBhcmFtZXRlcnMsCiBURVNUKER1bW15VGVzdCwgQ29tYmluZUlzTm90
U3VwcG9ydGVkT25UaGlzUGxhdGZvcm0pIHt9CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJ
TkUKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ft
cGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjCmluZGV4IGQ4MjhlZjRkODZiNzQ2YjI1Njk3YmRkNDZk
MjEwMGE0NDYxNDJkMzEuLjUzZjlhZjViYTFkZmMyNjk1NjYwNzhmMjM2ZjY5NTU5OWRjNTJhZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlOV91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTlfdW5p
dHRlc3QuY2MKQEAgLTI1LDggKzI1LDcgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQg
TG9zZXYpCisKIAogLy8gVGhpcyBzYW1wbGUgc2hvd3MgaG93IHRvIHVzZSBHb29nbGUgVGVzdCBs
aXN0ZW5lciBBUEkgdG8gaW1wbGVtZW50CiAvLyBhbiBhbHRlcm5hdGl2ZSBjb25zb2xlIG91dHB1
dCBhbmQgaG93IHRvIHVzZSB0aGUgVW5pdFRlc3QgcmVmbGVjdGlvbiBBUEkKQEAgLTM0LDcgKzMz
LDcgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIHVzaW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZl
bnRMaXN0ZW5lcjsKIHVzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7CkBAIC00NCw5ICs0
Myw3IEBAIHVzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzOwogdXNpbmcgOjp0ZXN0
aW5nOjpUZXN0SW5mbzsKIHVzaW5nIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ7CiB1c2luZyA6
OnRlc3Rpbmc6OlVuaXRUZXN0OwotCiBuYW1lc3BhY2UgewotCiAvLyBQcm92aWRlcyBhbHRlcm5h
dGl2ZSBvdXRwdXQgbW9kZSB3aGljaCBwcm9kdWNlcyBtaW5pbWFsIGFtb3VudCBvZgogLy8gaW5m
b3JtYXRpb24gYWJvdXQgdGVzdHMuCiBjbGFzcyBUZXJzZVByaW50ZXIgOiBwdWJsaWMgRW1wdHlU
ZXN0RXZlbnRMaXN0ZW5lciB7CkBAIC02OSw3ICs2Niw3IEBAIGNsYXNzIFRlcnNlUHJpbnRlciA6
IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKICAgICBmZmx1c2goc3Rkb3V0KTsKICAg
fQogCi0gIC8vIENhbGxlZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRVNTKCku
CisgIC8vIENhbGxlZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRUVEKCkgaW52
b2NhdGlvbi4KICAgdmlydHVhbCB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRS
ZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKICAgICBmcHJpbnRmKHN0ZG91dCwKICAgICAgICAg
ICAgICIlcyBpbiAlczolZFxuJXNcbiIsCkBAIC0xMDIsNyArOTksNiBAQCBURVNUKEN1c3RvbU91
dHB1dFRlc3QsIEZhaWxzKSB7CiAgIEVYUEVDVF9FUSgxLCAyKQogICAgICAgPDwgIlRoaXMgdGVz
dCBmYWlscyBpbiBvcmRlciB0byBkZW1vbnN0cmF0ZSBhbHRlcm5hdGl2ZSBmYWlsdXJlIG1lc3Nh
Z2VzIjsKIH0KLQogfSAgLy8gbmFtZXNwYWNlCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoq
YXJndikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9jb21t
b24ucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2NvbW1vbi5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zYzAzNDdhNzViZGZmMzE4ODA5Nzc0NTAxNWE1ODAzNzY0YWQ3NDFjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9jb21tb24ucHkKQEAgLTAs
MCArMSw4MyBAQAorIyBDb3B5cmlnaHQgMjAxMyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiU2hhcmVkIHV0aWxpdGllcyBmb3Igd3JpdGlu
ZyBzY3JpcHRzIGZvciBHb29nbGUgVGVzdC9Nb2NrLiIiIgorCitfX2F1dGhvcl9fID0gJ3dhbkBn
b29nbGUuY29tIChaaGFueW9uZyBXYW4pJworCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCisKKwor
IyBNYXRjaGVzIHRoZSBsaW5lIGZyb20gJ3N2biBpbmZvIC4nIG91dHB1dCB0aGF0IGRlc2NyaWJl
cyB3aGF0IFNWTgorIyBwYXRoIHRoZSBjdXJyZW50IGxvY2FsIGRpcmVjdG9yeSBjb3JyZXNwb25k
cyB0by4gIEZvciBleGFtcGxlLCBpbgorIyBhIGdvb2dsZXRlc3QgU1ZOIHdvcmtzcGFjZSdzIHRy
dW5rL3Rlc3QgZGlyZWN0b3J5LCB0aGUgb3V0cHV0IHdpbGwgYmU6CisjCisjIFVSTDogaHR0cHM6
Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay90ZXN0CitfU1ZOX0lORk9fVVJM
X1JFID0gcmUuY29tcGlsZShyJ15VUkw6IGh0dHBzOi8vKFx3KylcLmdvb2dsZWNvZGVcLmNvbS9z
dm4oLiopJykKKworCitkZWYgR2V0Q29tbWFuZE91dHB1dChjb21tYW5kKToKKyAgIiIiUnVucyB0
aGUgc2hlbGwgY29tbWFuZCBhbmQgcmV0dXJucyBpdHMgc3Rkb3V0IGFzIGEgbGlzdCBvZiBsaW5l
cy4iIiIKKworICBmID0gb3MucG9wZW4oY29tbWFuZCwgJ3InKQorICBsaW5lcyA9IFtsaW5lLnN0
cmlwKCkgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKV0KKyAgZi5jbG9zZSgpCisgIHJldHVybiBs
aW5lcworCisKK2RlZiBHZXRTdm5JbmZvKCk6CisgICIiIlJldHVybnMgdGhlIHByb2plY3QgbmFt
ZSBhbmQgdGhlIGN1cnJlbnQgU1ZOIHdvcmtzcGFjZSdzIHJvb3QgcGF0aC4iIiIKKworICBmb3Ig
bGluZSBpbiBHZXRDb21tYW5kT3V0cHV0KCdzdm4gaW5mbyAuJyk6CisgICAgbSA9IF9TVk5fSU5G
T19VUkxfUkUubWF0Y2gobGluZSkKKyAgICBpZiBtOgorICAgICAgcHJvamVjdCA9IG0uZ3JvdXAo
MSkgICMgZ29vZ2xldGVzdCBvciBnb29nbGVtb2NrCisgICAgICByZWxfcGF0aCA9IG0uZ3JvdXAo
MikKKyAgICAgIHJvb3QgPSBvcy5wYXRoLnJlYWxwYXRoKHJlbF9wYXRoLmNvdW50KCcvJykgKiAn
Li4vJykKKyAgICAgIHJldHVybiBwcm9qZWN0LCByb290CisKKyAgcmV0dXJuIE5vbmUsIE5vbmUK
KworCitkZWYgR2V0U3ZuVHJ1bmsoKToKKyAgIiIiUmV0dXJucyB0aGUgY3VycmVudCBTVk4gd29y
a3NwYWNlJ3MgdHJ1bmsgcm9vdCBwYXRoLiIiIgorCisgIF8sIHJvb3QgPSBHZXRTdm5JbmZvKCkK
KyAgcmV0dXJuIHJvb3QgKyAnL3RydW5rJyBpZiByb290IGVsc2UgTm9uZQorCisKK2RlZiBJc0lu
R1Rlc3RTdm4oKToKKyAgcHJvamVjdCwgXyA9IEdldFN2bkluZm8oKQorICByZXR1cm4gcHJvamVj
dCA9PSAnZ29vZ2xldGVzdCcKKworCitkZWYgSXNJbkdNb2NrU3ZuKCk6CisgIHByb2plY3QsIF8g
PSBHZXRTdm5JbmZvKCkKKyAgcmV0dXJuIHByb2plY3QgPT0gJ2dvb2dsZW1vY2snCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMucHkg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMucHkKaW5k
ZXggMTQ4NDQ0Y2E3MTFiMWVkYWFhZmVhOGQ3ODI2ZDNjZmQ0YzAxZGUwYi4uZDBkZDQ2NGZlOGI1
OWM1NDEwYTNkMWI4NWRiNDc5NWJiZDAzMWQ4OSAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc2NyaXB0cy9mdXNlX2d0ZXN0X2ZpbGVzLnB5CisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3NjcmlwdHMvZnVzZV9ndGVzdF9maWxlcy5weQpAQCAtNTIsNyArNTIsNyBAQCBF
WEFNUExFUwogVGhpcyB0b29sIGlzIGV4cGVyaW1lbnRhbC4gIEluIHBhcnRpY3VsYXIsIGl0IGFz
c3VtZXMgdGhhdCB0aGVyZSBpcyBubwogY29uZGl0aW9uYWwgaW5jbHVzaW9uIG9mIEdvb2dsZSBU
ZXN0IGhlYWRlcnMuICBQbGVhc2UgcmVwb3J0IGFueQogcHJvYmxlbXMgdG8gZ29vZ2xldGVzdGZy
YW1ld29ya0Bnb29nbGVncm91cHMuY29tLiAgWW91IGNhbiByZWFkCi1odHRwOi8vY29kZS5nb29n
bGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL0dvb2dsZVRlc3RBZHZhbmNlZEd1aWRlIGZvcgoraHR0
cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2dsZXRlc3Qv
ZG9jcy9hZHZhbmNlZC5tZCBmb3IKIG1vcmUgaW5mb3JtYXRpb24uCiAiIiIKIApAQCAtNjAsMTUg
KzYwLDE4IEBAIF9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCiAK
IGltcG9ydCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgc2V0cwordHJ5OgorICBmcm9tIHNldHMgaW1w
b3J0IFNldCBhcyBzZXQgICMgRm9yIFB5dGhvbiAyLjMgY29tcGF0aWJpbGl0eQorZXhjZXB0IElt
cG9ydEVycm9yOgorICBwYXNzCiBpbXBvcnQgc3lzCiAKICMgV2UgYXNzdW1lIHRoYXQgdGhpcyBm
aWxlIGlzIGluIHRoZSBzY3JpcHRzLyBkaXJlY3RvcnkgaW4gdGhlIEdvb2dsZQogIyBUZXN0IHJv
b3QgZGlyZWN0b3J5LgogREVGQVVMVF9HVEVTVF9ST09UX0RJUiA9IG9zLnBhdGguam9pbihvcy5w
YXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nKQogCi0jIFJlZ2V4IGZvciBtYXRjaGluZyAnI2lu
Y2x1ZGUgPGd0ZXN0Ly4uLj4nLgotSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VYID0gcmUuY29tcGls
ZShyJ15ccyojXHMqaW5jbHVkZVxzKjwoZ3Rlc3QvLispPicpCisjIFJlZ2V4IGZvciBtYXRjaGlu
ZyAnI2luY2x1ZGUgImd0ZXN0Ly4uLiInLgorSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VYID0gcmUu
Y29tcGlsZShyJ15ccyojXHMqaW5jbHVkZVxzKiIoZ3Rlc3QvLispIicpCiAKICMgUmVnZXggZm9y
IG1hdGNoaW5nICcjaW5jbHVkZSAic3JjLy4uLiInLgogSU5DTFVERV9TUkNfRklMRV9SRUdFWCA9
IHJlLmNvbXBpbGUocideXHMqI1xzKmluY2x1ZGVccyoiKHNyYy8uKykiJykKQEAgLTkwLDEwICs5
MywxMCBAQCBkZWYgVmVyaWZ5RmlsZUV4aXN0cyhkaXJlY3RvcnksIHJlbGF0aXZlX3BhdGgpOgog
ICAiIiIKIAogICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGRpcmVjdG9yeSwg
cmVsYXRpdmVfcGF0aCkpOgotICAgIHByaW50ICdFUlJPUjogQ2Fubm90IGZpbmQgJXMgaW4gZGly
ZWN0b3J5ICVzLicgJSAocmVsYXRpdmVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSkKLSAgICBwcmludCAoJ1BsZWFz
ZSBlaXRoZXIgc3BlY2lmeSBhIHZhbGlkIHByb2plY3Qgcm9vdCBkaXJlY3RvcnkgJwotICAgICAg
ICAgICAnb3Igb21pdCBpdCBvbiB0aGUgY29tbWFuZCBsaW5lLicpCisgICAgcHJpbnQoJ0VSUk9S
OiBDYW5ub3QgZmluZCAlcyBpbiBkaXJlY3RvcnkgJXMuJyAlIChyZWxhdGl2ZV9wYXRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0
b3J5KSkKKyAgICBwcmludCgnUGxlYXNlIGVpdGhlciBzcGVjaWZ5IGEgdmFsaWQgcHJvamVjdCBy
b290IGRpcmVjdG9yeSAnCisgICAgICAgICAgJ29yIG9taXQgaXQgb24gdGhlIGNvbW1hbmQgbGlu
ZS4nKQogICAgIHN5cy5leGl0KDEpCiAKIApAQCAtMTE5LDExICsxMjIsMTEgQEAgZGVmIFZlcmlm
eU91dHB1dEZpbGUob3V0cHV0X2RpciwgcmVsYXRpdmVfcGF0aCk6CiAgICAgIyBUT0RPKHdhbkBn
b29nbGUuY29tKTogVGhlIGZvbGxvd2luZyB1c2VyLWludGVyYWN0aW9uIGRvZXNuJ3QKICAgICAj
IHdvcmsgd2l0aCBhdXRvbWF0ZWQgcHJvY2Vzc2VzLiAgV2Ugc2hvdWxkIHByb3ZpZGUgYSB3YXkg
Zm9yIHRoZQogICAgICMgTWFrZWZpbGUgdG8gZm9yY2Ugb3ZlcndyaXRpbmcgdGhlIGZpbGVzLgot
ICAgIHByaW50ICgnJXMgYWxyZWFkeSBleGlzdHMgaW4gZGlyZWN0b3J5ICVzIC0gb3ZlcndyaXRl
IGl0PyAoeS9OKSAnICUKLSAgICAgICAgICAgKHJlbGF0aXZlX3BhdGgsIG91dHB1dF9kaXIpKQor
ICAgIHByaW50KCclcyBhbHJlYWR5IGV4aXN0cyBpbiBkaXJlY3RvcnkgJXMgLSBvdmVyd3JpdGUg
aXQ/ICh5L04pICcgJQorICAgICAgICAgIChyZWxhdGl2ZV9wYXRoLCBvdXRwdXRfZGlyKSkKICAg
ICBhbnN3ZXIgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKS5zdHJpcCgpCiAgICAgaWYgYW5zd2VyIG5v
dCBpbiBbJ3knLCAnWSddOgotICAgICAgcHJpbnQgJ0FCT1JURUQuJworICAgICAgcHJpbnQoJ0FC
T1JURUQuJykKICAgICAgIHN5cy5leGl0KDEpCiAKICAgIyBNYWtlcyBzdXJlIHRoZSBkaXJlY3Rv
cnkgaG9sZGluZyB0aGUgb3V0cHV0IGZpbGUgZXhpc3RzOyBjcmVhdGVzCkBAIC0xNDYsOCArMTQ5
LDggQEAgZGVmIFZhbGlkYXRlT3V0cHV0RGlyKG91dHB1dF9kaXIpOgogZGVmIEZ1c2VHVGVzdEgo
Z3Rlc3Rfcm9vdCwgb3V0cHV0X2Rpcik6CiAgICIiIlNjYW5zIGZvbGRlciBndGVzdF9yb290IHRv
IGdlbmVyYXRlIGd0ZXN0L2d0ZXN0LmggaW4gb3V0cHV0X2Rpci4iIiIKIAotICBvdXRwdXRfZmls
ZSA9IGZpbGUob3MucGF0aC5qb2luKG91dHB1dF9kaXIsIEdURVNUX0hfT1VUUFVUKSwgJ3cnKQot
ICBwcm9jZXNzZWRfZmlsZXMgPSBzZXRzLlNldCgpICAjIEhvbGRzIGFsbCBndGVzdCBoZWFkZXJz
IHdlJ3ZlIHByb2Nlc3NlZC4KKyAgb3V0cHV0X2ZpbGUgPSBvcGVuKG9zLnBhdGguam9pbihvdXRw
dXRfZGlyLCBHVEVTVF9IX09VVFBVVCksICd3JykKKyAgcHJvY2Vzc2VkX2ZpbGVzID0gc2V0KCkg
ICMgSG9sZHMgYWxsIGd0ZXN0IGhlYWRlcnMgd2UndmUgcHJvY2Vzc2VkLgogCiAgIGRlZiBQcm9j
ZXNzRmlsZShndGVzdF9oZWFkZXJfcGF0aCk6CiAgICAgIiIiUHJvY2Vzc2VzIHRoZSBnaXZlbiBn
dGVzdCBoZWFkZXIgZmlsZS4iIiIKQEAgLTE1OSwxMCArMTYyLDEwIEBAIGRlZiBGdXNlR1Rlc3RI
KGd0ZXN0X3Jvb3QsIG91dHB1dF9kaXIpOgogICAgIHByb2Nlc3NlZF9maWxlcy5hZGQoZ3Rlc3Rf
aGVhZGVyX3BhdGgpCiAKICAgICAjIFJlYWRzIGVhY2ggbGluZSBpbiB0aGUgZ2l2ZW4gZ3Rlc3Qg
aGVhZGVyLgotICAgIGZvciBsaW5lIGluIGZpbGUob3MucGF0aC5qb2luKGd0ZXN0X3Jvb3QsIGd0
ZXN0X2hlYWRlcl9wYXRoKSwgJ3InKToKKyAgICBmb3IgbGluZSBpbiBvcGVuKG9zLnBhdGguam9p
bihndGVzdF9yb290LCBndGVzdF9oZWFkZXJfcGF0aCksICdyJyk6CiAgICAgICBtID0gSU5DTFVE
RV9HVEVTVF9GSUxFX1JFR0VYLm1hdGNoKGxpbmUpCiAgICAgICBpZiBtOgotICAgICAgICAjIEl0
J3MgJyNpbmNsdWRlIDxndGVzdC8uLi4+JyAtIGxldCdzIHByb2Nlc3MgaXQgcmVjdXJzaXZlbHku
CisgICAgICAgICMgSXQncyAnI2luY2x1ZGUgImd0ZXN0Ly4uLiInIC0gbGV0J3MgcHJvY2VzcyBp
dCByZWN1cnNpdmVseS4KICAgICAgICAgUHJvY2Vzc0ZpbGUoJ2luY2x1ZGUvJyArIG0uZ3JvdXAo
MSkpCiAgICAgICBlbHNlOgogICAgICAgICAjIE90aGVyd2lzZSB3ZSBjb3B5IHRoZSBsaW5lIHVu
Y2hhbmdlZCB0byB0aGUgb3V0cHV0IGZpbGUuCkBAIC0xNzUsNyArMTc4LDcgQEAgZGVmIEZ1c2VH
VGVzdEgoZ3Rlc3Rfcm9vdCwgb3V0cHV0X2Rpcik6CiBkZWYgRnVzZUdUZXN0QWxsQ2NUb0ZpbGUo
Z3Rlc3Rfcm9vdCwgb3V0cHV0X2ZpbGUpOgogICAiIiJTY2FucyBmb2xkZXIgZ3Rlc3Rfcm9vdCB0
byBnZW5lcmF0ZSBndGVzdC9ndGVzdC1hbGwuY2MgaW4gb3V0cHV0X2ZpbGUuIiIiCiAKLSAgcHJv
Y2Vzc2VkX2ZpbGVzID0gc2V0cy5TZXQoKQorICBwcm9jZXNzZWRfZmlsZXMgPSBzZXQoKQogCiAg
IGRlZiBQcm9jZXNzRmlsZShndGVzdF9zb3VyY2VfZmlsZSk6CiAgICAgIiIiUHJvY2Vzc2VzIHRo
ZSBnaXZlbiBndGVzdCBzb3VyY2UgZmlsZS4iIiIKQEAgLTE4NywyMyArMTkwLDIzIEBAIGRlZiBG
dXNlR1Rlc3RBbGxDY1RvRmlsZShndGVzdF9yb290LCBvdXRwdXRfZmlsZSk6CiAgICAgcHJvY2Vz
c2VkX2ZpbGVzLmFkZChndGVzdF9zb3VyY2VfZmlsZSkKIAogICAgICMgUmVhZHMgZWFjaCBsaW5l
IGluIHRoZSBnaXZlbiBndGVzdCBzb3VyY2UgZmlsZS4KLSAgICBmb3IgbGluZSBpbiBmaWxlKG9z
LnBhdGguam9pbihndGVzdF9yb290LCBndGVzdF9zb3VyY2VfZmlsZSksICdyJyk6CisgICAgZm9y
IGxpbmUgaW4gb3Blbihvcy5wYXRoLmpvaW4oZ3Rlc3Rfcm9vdCwgZ3Rlc3Rfc291cmNlX2ZpbGUp
LCAncicpOgogICAgICAgbSA9IElOQ0xVREVfR1RFU1RfRklMRV9SRUdFWC5tYXRjaChsaW5lKQog
ICAgICAgaWYgbToKICAgICAgICAgaWYgJ2luY2x1ZGUvJyArIG0uZ3JvdXAoMSkgPT0gR1RFU1Rf
U1BJX0hfU0VFRDoKLSAgICAgICAgICAjIEl0J3MgJyNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGku
aD4nLiAgVGhpcyBmaWxlIGlzIG5vdAotICAgICAgICAgICMgI2luY2x1ZGVkIGJ5IDxndGVzdC9n
dGVzdC5oPiwgc28gd2UgbmVlZCB0byBwcm9jZXNzIGl0LgorICAgICAgICAgICMgSXQncyAnI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIicuICBUaGlzIGZpbGUgaXMgbm90CisgICAgICAgICAg
IyAjaW5jbHVkZWQgYnkgImd0ZXN0L2d0ZXN0LmgiLCBzbyB3ZSBuZWVkIHRvIHByb2Nlc3MgaXQu
CiAgICAgICAgICAgUHJvY2Vzc0ZpbGUoR1RFU1RfU1BJX0hfU0VFRCkKICAgICAgICAgZWxzZToK
LSAgICAgICAgICAjIEl0J3MgJyNpbmNsdWRlIDxndGVzdC9mb28uaD4nIHdoZXJlIGZvbyBpcyBu
b3QgZ3Rlc3Qtc3BpLgotICAgICAgICAgICMgV2UgdHJlYXQgaXQgYXMgJyNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPicsIGFzIGFsbCBvdGhlcgorICAgICAgICAgICMgSXQncyAnI2luY2x1ZGUgImd0
ZXN0L2Zvby5oIicgd2hlcmUgZm9vIGlzIG5vdCBndGVzdC1zcGkuCisgICAgICAgICAgIyBXZSB0
cmVhdCBpdCBhcyAnI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiJywgYXMgYWxsIG90aGVyCiAgICAg
ICAgICAgIyBndGVzdCBoZWFkZXJzIGFyZSBiZWluZyBmdXNlZCBpbnRvIGd0ZXN0LmggYW5kIGNh
bm5vdCBiZQogICAgICAgICAgICMgI2luY2x1ZGVkIGRpcmVjdGx5LgogCi0gICAgICAgICAgIyBU
aGVyZSBpcyBubyBuZWVkIHRvICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPiBtb3JlIHRoYW4gb25j
ZS4KKyAgICAgICAgICAjIFRoZXJlIGlzIG5vIG5lZWQgdG8gI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiIG1vcmUgdGhhbiBvbmNlLgogICAgICAgICAgIGlmIG5vdCBHVEVTVF9IX1NFRUQgaW4gcHJv
Y2Vzc2VkX2ZpbGVzOgogICAgICAgICAgICAgcHJvY2Vzc2VkX2ZpbGVzLmFkZChHVEVTVF9IX1NF
RUQpCi0gICAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZSgnI2luY2x1ZGUgPCVzPlxuJyAlIChH
VEVTVF9IX09VVFBVVCwpKQorICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoJyNpbmNsdWRl
ICIlcyJcbicgJSAoR1RFU1RfSF9PVVRQVVQsKSkKICAgICAgIGVsc2U6CiAgICAgICAgIG0gPSBJ
TkNMVURFX1NSQ19GSUxFX1JFR0VYLm1hdGNoKGxpbmUpCiAgICAgICAgIGlmIG06CkBAIC0yMTgs
NyArMjIxLDcgQEAgZGVmIEZ1c2VHVGVzdEFsbENjVG9GaWxlKGd0ZXN0X3Jvb3QsIG91dHB1dF9m
aWxlKToKIGRlZiBGdXNlR1Rlc3RBbGxDYyhndGVzdF9yb290LCBvdXRwdXRfZGlyKToKICAgIiIi
U2NhbnMgZm9sZGVyIGd0ZXN0X3Jvb3QgdG8gZ2VuZXJhdGUgZ3Rlc3QvZ3Rlc3QtYWxsLmNjIGlu
IG91dHB1dF9kaXIuIiIiCiAKLSAgb3V0cHV0X2ZpbGUgPSBmaWxlKG9zLnBhdGguam9pbihvdXRw
dXRfZGlyLCBHVEVTVF9BTExfQ0NfT1VUUFVUKSwgJ3cnKQorICBvdXRwdXRfZmlsZSA9IG9wZW4o
b3MucGF0aC5qb2luKG91dHB1dF9kaXIsIEdURVNUX0FMTF9DQ19PVVRQVVQpLCAndycpCiAgIEZ1
c2VHVGVzdEFsbENjVG9GaWxlKGd0ZXN0X3Jvb3QsIG91dHB1dF9maWxlKQogICBvdXRwdXRfZmls
ZS5jbG9zZSgpCiAKQEAgLTI0Miw3ICsyNDUsNyBAQCBkZWYgbWFpbigpOgogICAgICMgZnVzZV9n
dGVzdF9maWxlcy5weSBHVEVTVF9ST09UX0RJUiBPVVRQVVRfRElSCiAgICAgRnVzZUdUZXN0KHN5
cy5hcmd2WzFdLCBzeXMuYXJndlsyXSkKICAgZWxzZToKLSAgICBwcmludCBfX2RvY19fCisgICAg
cHJpbnQoX19kb2NfXykKICAgICBzeXMuZXhpdCgxKQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weQppbmRleCA4MzA3
MTM0YWRhZjRkYTJiZThmYTIzMzIyOTE1MjBkMzljOTRiYjEyLi5iNDNlZmRmNDFlNWMwMjc0MGY3
MmIzNTUzMmJlNWNmMDQ5Nzk0ODM1IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zY3JpcHRzL2dlbl9ndGVzdF9wcmVkX2ltcGwucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2NyaXB0cy9nZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5CkBAIC0xMTUsMTAgKzExNSw5IEBA
IGRlZiBIZWFkZXJQcmVhbWJsZShuKToKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVT
VF9QUkVEX0lNUExfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lN
UExfSF8KIAotLy8gTWFrZXMgc3VyZSB0aGlzIGhlYWRlciBpcyBub3QgaW5jbHVkZWQgYmVmb3Jl
IGd0ZXN0LmguCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KLSNlcnJvciBE
byBub3QgaW5jbHVkZSBndGVzdF9wcmVkX2ltcGwuaCBkaXJlY3RseS4gIEluY2x1ZGUgZ3Rlc3Qu
aCBpbnN0ZWFkLgotI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0hfCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHRlc3RpbmcgewogCiAvLyBUaGlzIGhl
YWRlciBpbXBsZW1lbnRzIGEgZmFtaWx5IG9mIGdlbmVyaWMgcHJlZGljYXRlIGFzc2VydGlvbgog
Ly8gbWFjcm9zOgpAQCAtMjM4LDI3ICsyMzcsMjUgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFBy
ZWQlKG4pc0hlbHBlcihjb25zdCBjaGFyKiBwcmVkX3RleHQiIiIgJSBERUZTCiAgIGltcGwgKz0g
IiIiKSB7CiAgIGlmIChwcmVkKCUodnMpcykpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAK
LSAgTWVzc2FnZSBtc2c7CiAiIiIgJSBERUZTCiAKLSAgaW1wbCArPSAnICBtc2cgPDwgcHJlZF90
ZXh0IDw8ICIoIicKKyAgaW1wbCArPSAnICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHBy
ZWRfdGV4dCA8PCAiKCInCiAKICAgaW1wbCArPSBJdGVyKG4sICIiIgotICAgICAgPDwgZSVzIiIi
LCBzZXA9JyA8PCAiLCAiJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlJXMiIiIs
IHNlcD0nIDw8ICIsICInKQogCiAgIGltcGwgKz0gJyA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2Us
IHdoZXJlIicKIAogICBpbXBsICs9IEl0ZXIobiwgIiIiCi0gICAgICA8PCAiXFxuIiA8PCBlJXMg
PDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2JXMiIiIpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIlxcbiIgPDwgZSVzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdiVzIiIiKQogCiAgIGlt
cGwgKz0gIiIiOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogCiAvLyBJbnRl
cm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEX0ZPUk1BVCUo
bilzLgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVE
X0ZPUk1BVCUobilzXyhwcmVkX2Zvcm1hdCwgJSh2cylzLCBvbl9mYWlsdXJlKVxcCi0gIEdURVNU
X0FTU0VSVF8ocHJlZF9mb3JtYXQoJSh2dHMpcywgJSh2cylzKSxcXAorICBHVEVTVF9BU1NFUlRf
KHByZWRfZm9ybWF0KCUodnRzKXMsICUodnMpcyksIFxcCiAgICAgICAgICAgICAgICAgb25fZmFp
bHVyZSkKIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VS
VH1fUFJFRCUobilzLiAgRG9uJ3QgdXNlCkBAIC0yOTcsMTYgKzI5NCwxNyBAQCBkZWYgSGVhZGVy
UG9zdGFtYmxlKCk6CiAKICAgcmV0dXJuICIiIgogCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwor
CiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJFRF9JTVBMX0hfCiAiIiIK
IAogCiBkZWYgR2VuZXJhdGVGaWxlKHBhdGgsIGNvbnRlbnQpOgotICAiIiJHaXZlbiBhIGZpbGUg
cGF0aCBhbmQgYSBjb250ZW50IHN0cmluZywgb3ZlcndyaXRlcyBpdCB3aXRoIHRoZQotICBnaXZl
biBjb250ZW50LiIiIgotCisgICIiIkdpdmVuIGEgZmlsZSBwYXRoIGFuZCBhIGNvbnRlbnQgc3Ry
aW5nCisgICAgIG92ZXJ3cml0ZXMgaXQgd2l0aCB0aGUgZ2l2ZW4gY29udGVudC4KKyAgIiIiCiAg
IHByaW50ICdVcGRhdGluZyBmaWxlICVzIC4gLiAuJyAlIHBhdGgKLQogICBmID0gZmlsZShwYXRo
LCAndysnKQogICBwcmludCA+PmYsIGNvbnRlbnQsCiAgIGYuY2xvc2UoKQpAQCAtMzE2LDggKzMx
NCw4IEBAIGRlZiBHZW5lcmF0ZUZpbGUocGF0aCwgY29udGVudCk6CiAKIGRlZiBHZW5lcmF0ZUhl
YWRlcihuKToKICAgIiIiR2l2ZW4gdGhlIG1heGltdW0gYXJpdHkgbiwgdXBkYXRlcyB0aGUgaGVh
ZGVyIGZpbGUgdGhhdCBpbXBsZW1lbnRzCi0gIHRoZSBwcmVkaWNhdGUgYXNzZXJ0aW9ucy4iIiIK
LQorICB0aGUgcHJlZGljYXRlIGFzc2VydGlvbnMuCisgICIiIgogICBHZW5lcmF0ZUZpbGUoSEVB
REVSLAogICAgICAgICAgICAgICAgSGVhZGVyUHJlYW1ibGUobikKICAgICAgICAgICAgICAgICsg
Jycuam9pbihbSW1wbGVtZW50YXRpb25Gb3JBcml0eShpKSBmb3IgaSBpbiBPbmVUbyhuKV0pCkBA
IC0zODYsOCArMzg0LDggQEAgZGVmIFVuaXRUZXN0UHJlYW1ibGUoKToKIAogI2luY2x1ZGUgPGlv
c3RyZWFtPgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC1zcGkuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LXNwaS5oIgogCiAvLyBBIHVzZXItZGVmaW5lZCBkYXRhIHR5cGUuCiBzdHJ1Y3QgQm9vbCB7CkBA
IC00NzgsMTUgKzQ3NiwxNCBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1
bmN0aW9uJShuKXMoIiIiICUgREVGUwogICBpZiAoUHJlZEZ1bmN0aW9uJShuKXMoJSh2cylzKSkK
ICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIHRlc3Rpbmc6Ok1l
c3NhZ2UgbXNnOwotICBtc2cgPDwgIiIiICUgREVGUworICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0
aW9uRmFpbHVyZSgpCisgICAgICA8PCAiIiIgJSBERUZTCiAKICAgdGVzdHMgKz0gSXRlcihuLCAn
ZSVzJywgc2VwPScgPDwgIiArICIgPDwgJykKIAogICB0ZXN0cyArPSAiIiIKICAgICAgIDw8ICIg
aXMgZXhwZWN0ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgogICAgICAgPDwg
JSh2X3N1bSlzIDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNn
KTsKIH0KICIiIiAlIERFRlMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2NyaXB0cy9ndGVzdC1jb25maWcuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRz
L2d0ZXN0LWNvbmZpZy5pbgppbmRleCA5YzcyNjM4NTRiOWY4NjNiNjE4YzcwOGRlMWVmZTBlOGIx
ZjcyODBhLi43ODBmODQzMmVmY2MxYWVlYWFhZDA3MDYwODZkM2ZmNjQxMjg1YjY4IDEwMDc1NQot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2d0ZXN0LWNvbmZpZy5pbgorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2d0ZXN0LWNvbmZpZy5pbgpAQCAtMjA5
LDcgKzIwOSw3IEBAIGlmIHRlc3QgIiR7dGhpc19iaW5kaXJ9IiA9ICIke3RoaXNfYmluZGlyJSR7
YmluZGlyfX0iOyB0aGVuCiAgICMgVGhlIHBhdGggdG8gdGhlIHNjcmlwdCBkb2Vzbid0IGVuZCBp
biB0aGUgYmluZGlyIHNlcXVlbmNlIGZyb20gQXV0b2NvbmYsCiAgICMgYXNzdW1lIHRoYXQgd2Ug
YXJlIGluIGEgYnVpbGQgdHJlZS4KICAgYnVpbGRfZGlyPWBkaXJuYW1lICR7dGhpc19iaW5kaXJ9
YAotICBzcmNfZGlyPWBjZCAke3RoaXNfYmluZGlyfS9AdG9wX3NyY2RpckA7IHB3ZCAtUGAKKyAg
c3JjX2Rpcj1gY2QgJHt0aGlzX2JpbmRpcn07IGNkIEB0b3Bfc3JjZGlyQDsgcHdkIC1QYAogCiAg
ICMgVE9ETyhjaGFuZGxlcmNAZ29vZ2xlLmNvbSk6IFRoaXMgaXMgYSBkYW5nZXJvdXMgZGVwZW5k
ZW5jeSBvbiBsaWJ0b29sLCB3ZQogICAjIHNob3VsZCB3b3JrIHRvIHJlbW92ZSBpdCwgYW5kL29y
IHJlbW92ZSBsaWJ0b29sIGFsdG9nZXRoZXIsIHJlcGxhY2luZyBpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9wdW1wLnB5IGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2NyaXB0cy9wdW1wLnB5CmluZGV4IGYxNWMxYjZjZWI0YjhiMWJiMGJmNGU4M2UzZWE5
M2IzOGM3ODU4MDAuLjVlZmI2NTNjMjA3ZDFmMWMyYWVjYzRkNjkwYmY3MzJlM2MxZDcxYWIgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcHVtcC5weQorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3B1bXAucHkKQEAgLTI5LDcgKzI5LDcgQEAK
ICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSIiInB1bXAgdjAuMSAtIFByZXR0eSBV
c2VmdWwgZm9yIE1ldGEgUHJvZ3JhbW1pbmcuCisiIiJwdW1wIHYwLjIuMCAtIFByZXR0eSBVc2Vm
dWwgZm9yIE1ldGEgUHJvZ3JhbW1pbmcuCiAKIEEgdG9vbCBmb3IgcHJlcHJvY2Vzc29yIG1ldGEg
cHJvZ3JhbW1pbmcuICBVc2VmdWwgZm9yIGdlbmVyYXRpbmcKIHJlcGV0aXRpdmUgYm9pbGVycGxh
dGUgY29kZS4gIEVzcGVjaWFsbHkgdXNlZnVsIGZvciB3cml0aW5nIEMrKwpAQCAtNzgsNyArNzgs
NiBAQCBUT0tFTl9UQUJMRSA9IFsKICAgICAocmUuY29tcGlsZShyJ1wkcmFuZ2VccysnKSwgJyRy
YW5nZScpLAogICAgIChyZS5jb21waWxlKHInXCRbX0EtWmEtel1cdyonKSwgJyRpZCcpLAogICAg
IChyZS5jb21waWxlKHInXCRcKFwkXCknKSwgJyQoJCknKSwKLSAgICAocmUuY29tcGlsZShyJ1wk
XCQuKicpLCAnJCQnKSwKICAgICAocmUuY29tcGlsZShyJ1wkJyksICckJyksCiAgICAgKHJlLmNv
bXBpbGUocidcW1xbXG4/JyksICdbWycpLAogICAgIChyZS5jb21waWxlKHInXF1cXVxuPycpLCAn
XV0nKSwKQEAgLTIyNCw2ICsyMjMsMTcgQEAgZGVmIFN1YlN0cmluZyhsaW5lcywgc3RhcnQsIGVu
ZCk6CiAgIHJldHVybiAnJy5qb2luKHJlc3VsdF9saW5lcykKIAogCitkZWYgU3RyaXBNZXRhQ29t
bWVudHMoc3RyKToKKyAgIiIiU3RyaXAgbWV0YSBjb21tZW50cyBmcm9tIGVhY2ggbGluZSBpbiB0
aGUgZ2l2ZW4gc3RyaW5nLiIiIgorCisgICMgRmlyc3QsIGNvbXBsZXRlbHkgcmVtb3ZlIGxpbmVz
IGNvbnRhaW5pbmcgbm90aGluZyBidXQgYSBtZXRhCisgICMgY29tbWVudCwgaW5jbHVkaW5nIHRo
ZSB0cmFpbGluZyBcbi4KKyAgc3RyID0gcmUuc3ViKHInXlxzKlwkXCQuKlxuJywgJycsIHN0cikK
KworICAjIFRoZW4sIHJlbW92ZSBtZXRhIGNvbW1lbnRzIGZyb20gY29udGVudGZ1bCBsaW5lcy4K
KyAgcmV0dXJuIHJlLnN1YihyJ1xzKlwkXCQuKicsICcnLCBzdHIpCisKKwogZGVmIE1ha2VUb2tl
bihsaW5lcywgc3RhcnQsIGVuZCwgdG9rZW5fdHlwZSk6CiAgICIiIkNyZWF0ZXMgYSBuZXcgaW5z
dGFuY2Ugb2YgVG9rZW4uIiIiCiAKQEAgLTMxMSwxMSArMzIxLDcgQEAgZGVmIFRva2VuaXplTGlu
ZXMobGluZXMsIHBvcyk6CiAgICAgICBwcmV2X3Rva2VuID0gTWFrZVRva2VuKGxpbmVzLCBwb3Ms
IGZvdW5kLnN0YXJ0LCAnY29kZScpCiAgICAgICBwcmV2X3Rva2VuX3JzdHJpcHBlZCA9IFJTdHJp
cE5ld0xpbmVGcm9tVG9rZW4ocHJldl90b2tlbikKIAotICAgIGlmIGZvdW5kLnRva2VuX3R5cGUg
PT0gJyQkJzogICMgQSBtZXRhIGNvbW1lbnQuCi0gICAgICBpZiBwcmV2X3Rva2VuX3JzdHJpcHBl
ZDoKLSAgICAgICAgeWllbGQgcHJldl90b2tlbl9yc3RyaXBwZWQKLSAgICAgIHBvcyA9IEN1cnNv
cihmb3VuZC5lbmQubGluZSArIDEsIDApCi0gICAgZWxpZiBmb3VuZC50b2tlbl90eXBlID09ICck
dmFyJzoKKyAgICBpZiBmb3VuZC50b2tlbl90eXBlID09ICckdmFyJzoKICAgICAgIGlmIHByZXZf
dG9rZW5fcnN0cmlwcGVkOgogICAgICAgICB5aWVsZCBwcmV2X3Rva2VuX3JzdHJpcHBlZAogICAg
ICAgeWllbGQgZm91bmQKQEAgLTM3NCw4ICszODAsMTEgQEAgZGVmIFRva2VuaXplTGluZXMobGlu
ZXMsIHBvcyk6CiAKIAogZGVmIFRva2VuaXplKHMpOgotICBsaW5lcyA9IHMuc3BsaXRsaW5lcyhU
cnVlKQotICByZXR1cm4gVG9rZW5pemVMaW5lcyhsaW5lcywgQ3Vyc29yKDAsIDApKQorICAiIiJB
IGdlbmVyYXRvciB0aGF0IHlpZWxkcyB0aGUgdG9rZW5zIGluIHRoZSBnaXZlbiBzdHJpbmcuIiIi
CisgIGlmIHMgIT0gJyc6CisgICAgbGluZXMgPSBzLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICBmb3Ig
dG9rZW4gaW4gVG9rZW5pemVMaW5lcyhsaW5lcywgQ3Vyc29yKDAsIDApKToKKyAgICAgIHlpZWxk
IHRva2VuCiAKIAogY2xhc3MgQ29kZU5vZGU6CkBAIC01NjUsMTEgKzU3NCw5IEBAIGRlZiBQYXJz
ZUNvZGVOb2RlKHRva2Vucyk6CiAgIHJldHVybiBDb2RlTm9kZShhdG9taWNfY29kZV9saXN0KQog
CiAKLWRlZiBDb252ZXJ0KGZpbGVfcGF0aCk6Ci0gIHMgPSBmaWxlKGZpbGVfcGF0aCwgJ3InKS5y
ZWFkKCkKLSAgdG9rZW5zID0gW10KLSAgZm9yIHRva2VuIGluIFRva2VuaXplKHMpOgotICAgIHRv
a2Vucy5hcHBlbmQodG9rZW4pCitkZWYgUGFyc2VUb0FTVChwdW1wX3NyY190ZXh0KToKKyAgIiIi
Q29udmVydCB0aGUgZ2l2ZW4gUHVtcCBzb3VyY2UgdGV4dCBpbnRvIGFuIEFTVC4iIiIKKyAgdG9r
ZW5zID0gbGlzdChUb2tlbml6ZShwdW1wX3NyY190ZXh0KSkKICAgY29kZV9ub2RlID0gUGFyc2VD
b2RlTm9kZSh0b2tlbnMpCiAgIHJldHVybiBjb2RlX25vZGUKIApAQCAtNjk3LDE0ICs3MDQsMTQg
QEAgZGVmIFJ1bkNvZGUoZW52LCBjb2RlX25vZGUsIG91dHB1dCk6CiAgICAgUnVuQXRvbWljQ29k
ZShlbnYsIGF0b21pY19jb2RlLCBvdXRwdXQpCiAKIAotZGVmIElzQ29tbWVudChjdXJfbGluZSk6
CitkZWYgSXNTaW5nbGVMaW5lQ29tbWVudChjdXJfbGluZSk6CiAgIHJldHVybiAnLy8nIGluIGN1
cl9saW5lCiAKIAotZGVmIElzSW5QcmVwcm9jZXNzb3JEaXJldmF0aXZlKHByZXZfbGluZXMsIGN1
cl9saW5lKToKK2RlZiBJc0luUHJlcHJvY2Vzc29yRGlyZWN0aXZlKHByZXZfbGluZXMsIGN1cl9s
aW5lKToKICAgaWYgY3VyX2xpbmUubHN0cmlwKCkuc3RhcnRzd2l0aCgnIycpOgogICAgIHJldHVy
biBUcnVlCi0gIHJldHVybiBwcmV2X2xpbmVzICE9IFtdIGFuZCBwcmV2X2xpbmVzWy0xXS5lbmRz
d2l0aCgnXFwnKQorICByZXR1cm4gcHJldl9saW5lcyBhbmQgcHJldl9saW5lc1stMV0uZW5kc3dp
dGgoJ1xcJykKIAogCiBkZWYgV3JhcENvbW1lbnQobGluZSwgb3V0cHV0KToKQEAgLTc2MSw3ICs3
NjgsNyBAQCBkZWYgV3JhcENvZGUobGluZSwgbGluZV9jb25jYXQsIG91dHB1dCk6CiAgICAgb3V0
cHV0LmFwcGVuZChwcmVmaXggKyBjdXJfbGluZS5zdHJpcCgpKQogCiAKLWRlZiBXcmFwUHJlcHJv
Y2Vzc29yRGlyZXZhdGl2ZShsaW5lLCBvdXRwdXQpOgorZGVmIFdyYXBQcmVwcm9jZXNzb3JEaXJl
Y3RpdmUobGluZSwgb3V0cHV0KToKICAgV3JhcENvZGUobGluZSwgJyBcXCcsIG91dHB1dCkKIAog
CkBAIC03NjksMjkgKzc3NiwzNyBAQCBkZWYgV3JhcFBsYWluQ29kZShsaW5lLCBvdXRwdXQpOgog
ICBXcmFwQ29kZShsaW5lLCAnJywgb3V0cHV0KQogCiAKLWRlZiBJc0hlYWRlckd1YXJkT3JJbmNs
dWRlKGxpbmUpOgorZGVmIElzTXVsdGlMaW5lSVdZVVByYWdtYShsaW5lKToKKyAgcmV0dXJuIHJl
LnNlYXJjaChyJy9cKiBJV1lVIHByYWdtYTogJywgbGluZSkKKworCitkZWYgSXNIZWFkZXJHdWFy
ZEluY2x1ZGVPck9uZUxpbmVJV1lVUHJhZ21hKGxpbmUpOgogICByZXR1cm4gKHJlLm1hdGNoKHIn
XiMoaWZuZGVmfGRlZmluZXxlbmRpZlxzKi8vKVxzKltcd19dK1xzKiQnLCBsaW5lKSBvcgotICAg
ICAgICAgIHJlLm1hdGNoKHInXiNpbmNsdWRlXHMnLCBsaW5lKSkKKyAgICAgICAgICByZS5tYXRj
aChyJ14jaW5jbHVkZVxzJywgbGluZSkgb3IKKyAgICAgICAgICAjIERvbid0IGJyZWFrIElXWVUg
cHJhZ21hcywgZWl0aGVyOyB0aGF0IGNhdXNlcyBpd3l1LnB5IHByb2JsZW1zLgorICAgICAgICAg
IHJlLnNlYXJjaChyJy8vIElXWVUgcHJhZ21hOiAnLCBsaW5lKSkKIAogCiBkZWYgV3JhcExvbmdM
aW5lKGxpbmUsIG91dHB1dCk6CiAgIGxpbmUgPSBsaW5lLnJzdHJpcCgpCiAgIGlmIGxlbihsaW5l
KSA8PSA4MDoKICAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCi0gIGVsaWYgSXNDb21tZW50KGxpbmUp
OgotICAgIGlmIElzSGVhZGVyR3VhcmRPckluY2x1ZGUobGluZSk6Ci0gICAgICAjIFRoZSBzdHls
ZSBndWlkZSBtYWRlIGFuIGV4Y2VwdGlvbiB0byBhbGxvdyBsb25nIGhlYWRlciBndWFyZCBsaW5l
cwotICAgICAgIyBhbmQgaW5jbHVkZXMuCisgIGVsaWYgSXNTaW5nbGVMaW5lQ29tbWVudChsaW5l
KToKKyAgICBpZiBJc0hlYWRlckd1YXJkSW5jbHVkZU9yT25lTGluZUlXWVVQcmFnbWEobGluZSk6
CisgICAgICAjIFRoZSBzdHlsZSBndWlkZSBtYWRlIGFuIGV4Y2VwdGlvbiB0byBhbGxvdyBsb25n
IGhlYWRlciBndWFyZCBsaW5lcywKKyAgICAgICMgaW5jbHVkZXMgYW5kIElXWVUgcHJhZ21hcy4K
ICAgICAgIG91dHB1dC5hcHBlbmQobGluZSkKICAgICBlbHNlOgogICAgICAgV3JhcENvbW1lbnQo
bGluZSwgb3V0cHV0KQotICBlbGlmIElzSW5QcmVwcm9jZXNzb3JEaXJldmF0aXZlKG91dHB1dCwg
bGluZSk6Ci0gICAgaWYgSXNIZWFkZXJHdWFyZE9ySW5jbHVkZShsaW5lKToKLSAgICAgICMgVGhl
IHN0eWxlIGd1aWRlIG1hZGUgYW4gZXhjZXB0aW9uIHRvIGFsbG93IGxvbmcgaGVhZGVyIGd1YXJk
IGxpbmVzCi0gICAgICAjIGFuZCBpbmNsdWRlcy4KKyAgZWxpZiBJc0luUHJlcHJvY2Vzc29yRGly
ZWN0aXZlKG91dHB1dCwgbGluZSk6CisgICAgaWYgSXNIZWFkZXJHdWFyZEluY2x1ZGVPck9uZUxp
bmVJV1lVUHJhZ21hKGxpbmUpOgorICAgICAgIyBUaGUgc3R5bGUgZ3VpZGUgbWFkZSBhbiBleGNl
cHRpb24gdG8gYWxsb3cgbG9uZyBoZWFkZXIgZ3VhcmQgbGluZXMsCisgICAgICAjIGluY2x1ZGVz
IGFuZCBJV1lVIHByYWdtYXMuCiAgICAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCiAgICAgZWxzZToK
LSAgICAgIFdyYXBQcmVwcm9jZXNzb3JEaXJldmF0aXZlKGxpbmUsIG91dHB1dCkKKyAgICAgIFdy
YXBQcmVwcm9jZXNzb3JEaXJlY3RpdmUobGluZSwgb3V0cHV0KQorICBlbGlmIElzTXVsdGlMaW5l
SVdZVVByYWdtYShsaW5lKToKKyAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCiAgIGVsc2U6CiAgICAg
V3JhcFBsYWluQ29kZShsaW5lLCBvdXRwdXQpCiAKQEAgLTgwNSwxNiArODIwLDIxIEBAIGRlZiBC
ZWF1dGlmeUNvZGUoc3RyaW5nKToKICAgcmV0dXJuICdcbicuam9pbihvdXRwdXQyKSArICdcbicK
IAogCitkZWYgQ29udmVydEZyb21QdW1wU291cmNlKHNyY190ZXh0KToKKyAgIiIiUmV0dXJuIHRo
ZSB0ZXh0IGdlbmVyYXRlZCBmcm9tIHRoZSBnaXZlbiBQdW1wIHNvdXJjZSB0ZXh0LiIiIgorICBh
c3QgPSBQYXJzZVRvQVNUKFN0cmlwTWV0YUNvbW1lbnRzKHNyY190ZXh0KSkKKyAgb3V0cHV0ID0g
T3V0cHV0KCkKKyAgUnVuQ29kZShFbnYoKSwgYXN0LCBvdXRwdXQpCisgIHJldHVybiBCZWF1dGlm
eUNvZGUob3V0cHV0LnN0cmluZykKKworCiBkZWYgbWFpbihhcmd2KToKICAgaWYgbGVuKGFyZ3Yp
ID09IDE6CiAgICAgcHJpbnQgX19kb2NfXwogICAgIHN5cy5leGl0KDEpCiAKICAgZmlsZV9wYXRo
ID0gYXJndlstMV0KLSAgYXN0ID0gQ29udmVydChmaWxlX3BhdGgpCi0gIG91dHB1dCA9IE91dHB1
dCgpCi0gIFJ1bkNvZGUoRW52KCksIGFzdCwgb3V0cHV0KQotICBvdXRwdXRfc3RyID0gQmVhdXRp
ZnlDb2RlKG91dHB1dC5zdHJpbmcpCisgIG91dHB1dF9zdHIgPSBDb252ZXJ0RnJvbVB1bXBTb3Vy
Y2UoZmlsZShmaWxlX3BhdGgsICdyJykucmVhZCgpKQogICBpZiBmaWxlX3BhdGguZW5kc3dpdGgo
Jy5wdW1wJyk6CiAgICAgb3V0cHV0X2ZpbGVfcGF0aCA9IGZpbGVfcGF0aFs6LTVdCiAgIGVsc2U6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3JlbGVhc2VfZG9j
cy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcmVsZWFzZV9kb2NzLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjEyOTEzNDdmNjc0YWZkN2FmODQ5NjE1YTc1YjEzOGQ1MjkzZjljZjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3JlbGVhc2VfZG9j
cy5weQpAQCAtMCwwICsxLDE1OCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHly
aWdodCAyMDEzIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisiIiJTY3JpcHQgZm9yIGJyYW5jaGluZyBHb29nbGUgVGVzdC9Nb2NrIHdpa2kgcGFn
ZXMgZm9yIGEgbmV3IHZlcnNpb24uCisKK1NZTk9QU0lTCisgICAgICAgcmVsZWFzZV9kb2NzLnB5
IE5FV19SRUxFQVNFX1ZFUlNJT04KKworICAgICAgIEdvb2dsZSBUZXN0IGFuZCBHb29nbGUgTW9j
aydzIGV4dGVybmFsIHVzZXIgZG9jdW1lbnRhdGlvbiBpcyBpbgorICAgICAgIGludGVybGlua2Vk
IHdpa2kgZmlsZXMuICBXaGVuIHdlIHJlbGVhc2UgYSBuZXcgdmVyc2lvbiBvZgorICAgICAgIEdv
b2dsZSBUZXN0IG9yIEdvb2dsZSBNb2NrLCB3ZSBuZWVkIHRvIGJyYW5jaCB0aGUgd2lraSBmaWxl
cworICAgICAgIHN1Y2ggdGhhdCB1c2VycyBvZiBhIHNwZWNpZmljIHZlcnNpb24gb2YgR29vZ2xl
IFRlc3QvTW9jayBjYW4KKyAgICAgICBsb29rIHVwIGRvY3VtZW5hdGlvbiByZWxldmFudCBmb3Ig
dGhhdCB2ZXJzaW9uLiAgVGhpcyBzY3JpcHQKKyAgICAgICBhdXRvbWF0ZXMgdGhhdCBwcm9jZXNz
IGJ5OgorCisgICAgICAgICAtIGJyYW5jaGluZyB0aGUgY3VycmVudCB3aWtpIHBhZ2VzICh3aGlj
aCBkb2N1bWVudCB0aGUKKyAgICAgICAgICAgYmVoYXZpb3Igb2YgdGhlIFNWTiB0cnVuayBoZWFk
KSB0byBwYWdlcyBmb3IgdGhlIHNwZWNpZmllZAorICAgICAgICAgICB2ZXJzaW9uIChlLmcuIGJy
YW5jaGluZyBGQVEud2lraSB0byBWMl82X0ZBUS53aWtpIHdoZW4KKyAgICAgICAgICAgTkVXX1JF
TEVBU0VfVkVSU0lPTiBpcyAyLjYpOworICAgICAgICAgLSB1cGRhdGluZyB0aGUgbGlua3MgaW4g
dGhlIGJyYW5jaGVkIGZpbGVzIHRvIHBvaW50IHRvIHRoZSBicmFuY2hlZAorICAgICAgICAgICB2
ZXJzaW9uIChlLmcuIGEgbGluayBpbiBWMl82X0ZBUS53aWtpIHRoYXQgcG9pbnRlZCB0bworICAg
ICAgICAgICBQcmltZXIud2lraSNBbmNob3Igd2lsbCBub3cgcG9pbnQgdG8gVjJfNl9QcmltZXIu
d2lraSNBbmNob3IpLgorCisgICAgICAgTk9URTogTkVXX1JFTEVBU0VfVkVSU0lPTiBtdXN0IGJl
IGEgTkVXIHZlcnNpb24gbnVtYmVyIGZvcgorICAgICAgIHdoaWNoIHRoZSB3aWtpIHBhZ2VzIGRv
bid0IHlldCBleGlzdDsgb3RoZXJ3aXNlIHlvdSdsbCBnZXQgU1ZOCisgICAgICAgZXJyb3JzIGxp
a2UgInN2bjogUGF0aCAnVjFfN19QdW1wTWFudWFsLndpa2knIGlzIG5vdCBhCisgICAgICAgZGly
ZWN0b3J5IiB3aGVuIHJ1bm5pbmcgdGhlIHNjcmlwdC4KKworRVhBTVBMRQorICAgICAgICQgY2Qg
UEFUSC9UTy9HVEVTVF9TVk5fV09SS1NQQUNFL3RydW5rCisgICAgICAgJCBzY3JpcHRzL3JlbGVh
c2VfZG9jcy5weSAyLjYgICMgY3JlYXRlIHdpa2kgcGFnZXMgZm9yIHYyLjYKKyAgICAgICAkIHN2
biBzdGF0dXMgICAgICAgICAgICAgICAgICAgIyB2ZXJpZnkgdGhlIGZpbGUgbGlzdAorICAgICAg
ICQgc3ZuIGRpZmYgICAgICAgICAgICAgICAgICAgICAjIHZlcmlmeSB0aGUgZmlsZSBjb250ZW50
cworICAgICAgICQgc3ZuIGNvbW1pdCAtbSAicmVsZWFzZSB3aWtpIHBhZ2VzIGZvciB2Mi42Igor
IiIiCisKK19fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCisKK2lt
cG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCisKK2ltcG9ydCBjb21tb24KKworCisjIFdp
a2kgcGFnZXMgdGhhdCBzaG91bGRuJ3QgYmUgYnJhbmNoZWQgZm9yIGV2ZXJ5IGd0ZXN0L2dtb2Nr
IHJlbGVhc2UuCitHVEVTVF9VTlZFUlNJT05FRF9XSUtJUyA9IFsnRGV2R3VpZGUud2lraSddCitH
TU9DS19VTlZFUlNJT05FRF9XSUtJUyA9IFsKKyAgICAnRGVzaWduRG9jLndpa2knLAorICAgICdE
ZXZHdWlkZS53aWtpJywKKyAgICAnS25vd25Jc3N1ZXMud2lraScKKyAgICBdCisKKworZGVmIERy
b3BXaWtpU3VmZml4KHdpa2lfZmlsZW5hbWUpOgorICAiIiJSZW1vdmVzIHRoZSAud2lraSBzdWZm
aXggKGlmIGFueSkgZnJvbSB0aGUgZ2l2ZW4gZmlsZW5hbWUuIiIiCisKKyAgcmV0dXJuICh3aWtp
X2ZpbGVuYW1lWzotbGVuKCcud2lraScpXSBpZiB3aWtpX2ZpbGVuYW1lLmVuZHN3aXRoKCcud2lr
aScpCisgICAgICAgICAgZWxzZSB3aWtpX2ZpbGVuYW1lKQorCisKK2NsYXNzIFdpa2lCcmFuY2hl
cihvYmplY3QpOgorICAiIiJCcmFuY2hlcyAuLi4iIiIKKworICBkZWYgX19pbml0X18oc2VsZiwg
ZG90X3ZlcnNpb24pOgorICAgIHNlbGYucHJvamVjdCwgc3ZuX3Jvb3RfcGF0aCA9IGNvbW1vbi5H
ZXRTdm5JbmZvKCkKKyAgICBpZiBzZWxmLnByb2plY3Qgbm90IGluICgnZ29vZ2xldGVzdCcsICdn
b29nbGVtb2NrJyk6CisgICAgICBzeXMuZXhpdCgnVGhpcyBzY3JpcHQgbXVzdCBiZSBydW4gaW4g
YSBndGVzdCBvciBnbW9jayBTVk4gd29ya3NwYWNlLicpCisgICAgc2VsZi53aWtpX2RpciA9IHN2
bl9yb290X3BhdGggKyAnL3dpa2knCisgICAgIyBUdXJuICcyLjYnIHRvICdWMl82XycuCisgICAg
c2VsZi52ZXJzaW9uX3ByZWZpeCA9ICdWJyArIGRvdF92ZXJzaW9uLnJlcGxhY2UoJy4nLCAnXycp
ICsgJ18nCisgICAgc2VsZi5maWxlc190b19icmFuY2ggPSBzZWxmLkdldEZpbGVzVG9CcmFuY2go
KQorICAgIHBhZ2VfbmFtZXMgPSBbRHJvcFdpa2lTdWZmaXgoZikgZm9yIGYgaW4gc2VsZi5maWxl
c190b19icmFuY2hdCisgICAgIyBBIGxpbmsgdG8gRm9vLndpa2kgaXMgaW4gb25lIG9mIHRoZSBm
b2xsb3dpbmcgZm9ybXM6CisgICAgIyAgIFtGb28gd29yZHNdCisgICAgIyAgIFtGb28jQW5jaG9y
IHdvcmRzXQorICAgICMgICBbaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS8uLi4vd2lraS9Gb28gd29y
ZHNdCisgICAgIyAgIFtodHRwOi8vY29kZS5nb29nbGUuY29tLy4uLi93aWtpL0ZvbyNBbmNob3Ig
d29yZHNdCisgICAgIyBXZSB3YW50IHRvIHJlcGxhY2UgJ0Zvbycgd2l0aCAnVjJfNl9Gb28nIGlu
IHRoZSBhYm92ZSBjYXNlcy4KKyAgICBzZWxmLnNlYXJjaF9mb3JfcmUgPSByZS5jb21waWxlKAor
ICAgICAgICAjIFRoaXMgcmVnZXggbWF0Y2hlcyBlaXRoZXIKKyAgICAgICAgIyAgIFtGb28KKyAg
ICAgICAgIyBvcgorICAgICAgICAjICAgL3dpa2kvRm9vCisgICAgICAgICMgZm9sbG93ZWQgYnkg
YSBzcGFjZSBvciBhICMsIHdoZXJlIEZvbyBpcyB0aGUgbmFtZSBvZiBhbgorICAgICAgICAjIHVu
dmVyc2lvbmVkIHdpa2kgcGFnZS4KKyAgICAgICAgcicoXFt8L3dpa2kvKSglcykoWyAjXSknICUg
J3wnLmpvaW4ocGFnZV9uYW1lcykpCisgICAgc2VsZi5yZXBsYWNlX3dpdGggPSByJ1wxJXNcMlwz
JyAlIChzZWxmLnZlcnNpb25fcHJlZml4LCkKKworICBkZWYgR2V0RmlsZXNUb0JyYW5jaChzZWxm
KToKKyAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiAud2lraSBmaWxlIG5hbWVzIHRoYXQgbmVlZCB0
byBiZSBicmFuY2hlZC4iIiIKKworICAgIHVudmVyc2lvbmVkX3dpa2lzID0gKEdURVNUX1VOVkVS
U0lPTkVEX1dJS0lTIGlmIHNlbGYucHJvamVjdCA9PSAnZ29vZ2xldGVzdCcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIEdNT0NLX1VOVkVSU0lPTkVEX1dJS0lTKQorICAgIHJldHVybiBb
ZiBmb3IgZiBpbiBvcy5saXN0ZGlyKHNlbGYud2lraV9kaXIpCisgICAgICAgICAgICBpZiAoZi5l
bmRzd2l0aCgnLndpa2knKSBhbmQKKyAgICAgICAgICAgICAgICBub3QgcmUubWF0Y2gocideVlxk
JywgZikgYW5kICAjIEV4Y2x1ZGVkIHZlcnNpb25lZCAud2lraSBmaWxlcy4KKyAgICAgICAgICAg
ICAgICBmIG5vdCBpbiB1bnZlcnNpb25lZF93aWtpcyldCisKKyAgZGVmIEJyYW5jaEZpbGVzKHNl
bGYpOgorICAgICIiIkJyYW5jaGVzIHRoZSAud2lraSBmaWxlcyBuZWVkZWQgdG8gYmUgYnJhbmNo
ZWQuIiIiCisKKyAgICBwcmludCAnQnJhbmNoaW5nICVkIC53aWtpIGZpbGVzOicgJSAobGVuKHNl
bGYuZmlsZXNfdG9fYnJhbmNoKSwpCisgICAgb3MuY2hkaXIoc2VsZi53aWtpX2RpcikKKyAgICBm
b3IgZiBpbiBzZWxmLmZpbGVzX3RvX2JyYW5jaDoKKyAgICAgIGNvbW1hbmQgPSAnc3ZuIGNwICVz
ICVzJXMnICUgKGYsIHNlbGYudmVyc2lvbl9wcmVmaXgsIGYpCisgICAgICBwcmludCBjb21tYW5k
CisgICAgICBvcy5zeXN0ZW0oY29tbWFuZCkKKworICBkZWYgVXBkYXRlTGlua3NJbkJyYW5jaGVk
RmlsZXMoc2VsZik6CisKKyAgICBmb3IgZiBpbiBzZWxmLmZpbGVzX3RvX2JyYW5jaDoKKyAgICAg
IHNvdXJjZV9maWxlID0gb3MucGF0aC5qb2luKHNlbGYud2lraV9kaXIsIGYpCisgICAgICB2ZXJz
aW9uZWRfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndpa2lfZGlyLCBzZWxmLnZlcnNpb25fcHJl
Zml4ICsgZikKKyAgICAgIHByaW50ICdVcGRhdGluZyBsaW5rcyBpbiAlcy4nICUgKHZlcnNpb25l
ZF9maWxlLCkKKyAgICAgIHRleHQgPSBmaWxlKHNvdXJjZV9maWxlLCAncicpLnJlYWQoKQorICAg
ICAgbmV3X3RleHQgPSBzZWxmLnNlYXJjaF9mb3JfcmUuc3ViKHNlbGYucmVwbGFjZV93aXRoLCB0
ZXh0KQorICAgICAgZmlsZSh2ZXJzaW9uZWRfZmlsZSwgJ3cnKS53cml0ZShuZXdfdGV4dCkKKwor
CitkZWYgbWFpbigpOgorICBpZiBsZW4oc3lzLmFyZ3YpICE9IDI6CisgICAgc3lzLmV4aXQoX19k
b2NfXykKKworICBicmFuY2hlciA9IFdpa2lCcmFuY2hlcihzeXMuYXJndlsxXSkKKyAgYnJhbmNo
ZXIuQnJhbmNoRmlsZXMoKQorICBicmFuY2hlci5VcGRhdGVMaW5rc0luQnJhbmNoZWRGaWxlcygp
CisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgbWFpbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUKaW5kZXggZmZjMGM5MGFkOTk1NzJk
Zjk0YWZiNWI2NDEzNmE5YzI5NDg4YWUwNi4uY2RmZjU4NDYzN2I3YTZlOWRmMWZhNDNjZThmNTg4
YzQzODE1ZTU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy90
ZXN0L01ha2VmaWxlCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvdGVzdC9N
YWtlZmlsZQpAQCAtMjEsNyArMjEsOSBAQCBTQU1QTEVfRElSID0gLi4vLi4vc2FtcGxlcwogR1RF
U1RfTUFJTl9DQyA9IC4uLy4uL3NyYy9ndGVzdF9tYWluLmNjCiAKICMgRmxhZ3MgcGFzc2VkIHRv
IHRoZSBwcmVwcm9jZXNzb3IuCi1DUFBGTEFHUyArPSAtSSQoRlVTRURfR1RFU1RfRElSKQorIyBX
ZSBoYXZlIG5vIGlkZWEgaGVyZSB3aGV0aGVyIHB0aHJlYWRzIGlzIGF2YWlsYWJsZSBpbiB0aGUg
c3lzdGVtLCBzbworIyBkaXNhYmxlIGl0cyB1c2UuCitDUFBGTEFHUyArPSAtSSQoRlVTRURfR1RF
U1RfRElSKSAtREdURVNUX0hBU19QVEhSRUFEPTAKIAogIyBGbGFncyBwYXNzZWQgdG8gdGhlIEMr
KyBjb21waWxlci4KIENYWEZMQUdTICs9IC1nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zY3JpcHRzL3VwbG9hZC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Njcmlw
dHMvdXBsb2FkLnB5CmluZGV4IDZlNmY5YTE0NzE5ZWY4YzlmZGI2MDNhZDUwYmRkMzVkYzc5OTZl
MmQuLmM4NTJlNGM5MWUwNmVmN2M0OWUwMzg2ODM1MDlmZmQ5NDk1YzgyMGYgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvdXBsb2FkLnB5CisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvdXBsb2FkLnB5CkBAIC0yNDIsNyArMjQyLDcgQEAgY2xh
c3MgQWJzdHJhY3RScGNTZXJ2ZXIob2JqZWN0KToKICAgICBUaGUgYXV0aGVudGljYXRpb24gcHJv
Y2VzcyB3b3JrcyBhcyBmb2xsb3dzOgogICAgICAxKSBXZSBnZXQgYSB1c2VybmFtZSBhbmQgcGFz
c3dvcmQgZnJvbSB0aGUgdXNlcgogICAgICAyKSBXZSB1c2UgQ2xpZW50TG9naW4gdG8gb2J0YWlu
IGFuIEFVVEggdG9rZW4gZm9yIHRoZSB1c2VyCi0gICAgICAgIChzZWUgaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9hcGlzL2FjY291bnRzL0F1dGhGb3JJbnN0YWxsZWRBcHBzLmh0bWwpLgorICAgICAg
ICAoc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2lkZW50aXR5L3Byb3RvY29scy9B
dXRoRm9ySW5zdGFsbGVkQXBwcykuCiAgICAgIDMpIFdlIHBhc3MgdGhlIGF1dGggdG9rZW4gdG8g
L19haC9sb2dpbiBvbiB0aGUgc2VydmVyIHRvIG9idGFpbiBhbgogICAgICAgICBhdXRoZW50aWNh
dGlvbiBjb29raWUuIElmIGxvZ2luIHdhcyBzdWNjZXNzZnVsLCBpdCB0cmllcyB0byByZWRpcmVj
dAogICAgICAgICB1cyB0byB0aGUgVVJMIHdlIHByb3ZpZGVkLgpAQCAtNTA2LDcgKzUwNiw3IEBA
IGRlZiBFbmNvZGVNdWx0aXBhcnRGb3JtRGF0YShmaWVsZHMsIGZpbGVzKToKICAgICAoY29udGVu
dF90eXBlLCBib2R5KSByZWFkeSBmb3IgaHR0cGxpYi5IVFRQIGluc3RhbmNlLgogCiAgIFNvdXJj
ZToKLSAgICBodHRwOi8vYXNwbi5hY3RpdmVzdGF0ZS5jb20vQVNQTi9Db29rYm9vay9QeXRob24v
UmVjaXBlLzE0NjMwNgorICAgIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE2MDExNjA1
MjAwMS9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzE0NjMwNgogICAiIiIKICAgQk9VTkRB
UlkgPSAnLU0tQS1HLUktQy0tLUItTy1VLU4tRC1BLVItWS0nCiAgIENSTEYgPSAnXHJcbicKQEAg
LTczMiw3ICs3MzIsNyBAQCBjbGFzcyBTdWJ2ZXJzaW9uVkNTKFZlcnNpb25Db250cm9sU3lzdGVt
KToKICAgICBlbHNlOgogICAgICAgc2VsZi5yZXZfc3RhcnQgPSBzZWxmLnJldl9lbmQgPSBOb25l
CiAgICAgIyBDYWNoZSBvdXRwdXQgZnJvbSAic3ZuIGxpc3QgLXIgUkVWTk8gZGlybmFtZSIuCi0g
ICAgIyBLZXlzOiBkaXJuYW1lLCBWYWx1ZXM6IDItdHVwbGUgKG91cHV0IGZvciBzdGFydCByZXYg
YW5kIGVuZCByZXYpLgorICAgICMgS2V5czogZGlybmFtZSwgVmFsdWVzOiAyLXR1cGxlIChvdXRw
dXQgZm9yIHN0YXJ0IHJldiBhbmQgZW5kIHJldikuCiAgICAgc2VsZi5zdm5sc19jYWNoZSA9IHt9
CiAgICAgIyBTVk4gYmFzZSBVUkwgaXMgcmVxdWlyZWQgdG8gZmV0Y2ggZmlsZXMgZGVsZXRlZCBp
biBhbiBvbGRlciByZXZpc2lvbi4KICAgICAjIFJlc3VsdCBpcyBjYWNoZWQgdG8gbm90IGd1ZXNz
IGl0IG92ZXIgYW5kIG92ZXIgYWdhaW4gaW4gR2V0QmFzZUZpbGUoKS4KQEAgLTgwNyw3ICs4MDcs
NyBAQCBjbGFzcyBTdWJ2ZXJzaW9uVkNTKFZlcnNpb25Db250cm9sU3lzdGVtKToKICAgICAjIHN2
biBjYXQgdHJhbnNsYXRlcyBrZXl3b3JkcyBidXQgc3ZuIGRpZmYgZG9lc24ndC4gQXMgYSByZXN1
bHQgb2YgdGhpcwogICAgICMgYmVoYXZpb3IgcGF0Y2hpbmcuUGF0Y2hDaHVua3MoKSBmYWlscyB3
aXRoIGEgY2h1bmsgbWlzbWF0Y2ggZXJyb3IuCiAgICAgIyBUaGlzIHBhcnQgd2FzIG9yaWdpbmFs
bHkgd3JpdHRlbiBieSB0aGUgUmV2aWV3IEJvYXJkIGRldmVsb3BtZW50IHRlYW0KLSAgICAjIHdo
byBoYWQgdGhlIHNhbWUgcHJvYmxlbSAoaHR0cDovL3Jldmlld3MucmV2aWV3LWJvYXJkLm9yZy9y
LzI3Ni8pLgorICAgICMgd2hvIGhhZCB0aGUgc2FtZSBwcm9ibGVtIChodHRwczovL3Jldmlld3Mu
cmV2aWV3Ym9hcmQub3JnL3IvMjc2LykuCiAgICAgIyBNYXBwaW5nIG9mIGtleXdvcmRzIHRvIGtu
b3duIGFsaWFzZXMKICAgICBzdm5fa2V5d29yZHMgPSB7CiAgICAgICAjIFN0YW5kYXJkIGtleXdv
cmRzCkBAIC04NjAsNyArODYwLDcgQEAgY2xhc3MgU3VidmVyc2lvblZDUyhWZXJzaW9uQ29udHJv
bFN5c3RlbSk6CiAgICAgICBzdGF0dXNfbGluZXMgPSBzdGF0dXMuc3BsaXRsaW5lcygpCiAgICAg
ICAjIElmIGZpbGUgaXMgaW4gYSBjbCwgdGhlIG91dHB1dCB3aWxsIGJlZ2luIHdpdGgKICAgICAg
ICMgIlxuLS0tIENoYW5nZWxpc3QgJ2NsX25hbWUnOlxuIi4gIFNlZQotICAgICAgIyBodHRwOi8v
c3ZuLmNvbGxhYi5uZXQvcmVwb3Mvc3ZuL3RydW5rL25vdGVzL2NoYW5nZWxpc3QtZGVzaWduLnR4
dAorICAgICAgIyBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAwOTA5MTgyMzQ4MTUvc3Zu
LmNvbGxhYi5uZXQvcmVwb3Mvc3ZuL3RydW5rL25vdGVzL2NoYW5nZWxpc3QtZGVzaWduLnR4dAog
ICAgICAgaWYgKGxlbihzdGF0dXNfbGluZXMpID09IDMgYW5kCiAgICAgICAgICAgbm90IHN0YXR1
c19saW5lc1swXSBhbmQKICAgICAgICAgICBzdGF0dXNfbGluZXNbMV0uc3RhcnRzd2l0aCgiLS0t
IENoYW5nZWxpc3QiKSk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMv
Z3Rlc3QtYWxsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWFsbC5jYwpp
bmRleCBmZTM0NzY1ZmI2NzIxOGE1NmNiNWUyNTJhNzBlNjhhMzZiYzg4ZDA3Li5iMjE3YTE4MDA2
YjBjOGJkYWY0YTlmOWI2ZDA2ZGU0ZmQ4YWQ5ZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtYWxsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NyYy9ndGVzdC1hbGwuY2MKQEAgLTI2LDIyICsyNiwyMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiBtaGV1bGVAZ29v
Z2xlLmNvbSAoTWFya3VzIEhldWxlKQotLy8KLS8vIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdv
cmsgKEdvb2dsZSBUZXN0KQorLy8gR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1l
d29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gU29tZXRpbWVzIGl0J3MgZGVzaXJhYmxlIHRvIGJ1
aWxkIEdvb2dsZSBUZXN0IGJ5IGNvbXBpbGluZyBhIHNpbmdsZSBmaWxlLgogLy8gVGhpcyBmaWxl
IHNlcnZlcyB0aGlzIHB1cnBvc2UuCiAKIC8vIFRoaXMgbGluZSBlbnN1cmVzIHRoYXQgZ3Rlc3Qu
aCBjYW4gYmUgY29tcGlsZWQgb24gaXRzIG93biwgZXZlbgogLy8gd2hlbiBpdCdzIGZ1c2VkLgot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogLy8g
VGhlIGZvbGxvd2luZyBsaW5lcyBwdWxsIGluIHRoZSByZWFsIGd0ZXN0ICouY2MgZmlsZXMuCiAj
aW5jbHVkZSAic3JjL2d0ZXN0LmNjIgogI2luY2x1ZGUgInNyYy9ndGVzdC1kZWF0aC10ZXN0LmNj
IgogI2luY2x1ZGUgInNyYy9ndGVzdC1maWxlcGF0aC5jYyIKICNpbmNsdWRlICJzcmMvZ3Rlc3Qt
cG9ydC5jYyIKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtcHJpbnRlcnMuY2MiCiAjaW5jbHVkZSAic3Jj
L2d0ZXN0LXRlc3QtcGFydC5jYyIKICNpbmNsdWRlICJzcmMvZ3Rlc3QtdHlwZWQtdGVzdC5jYyIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1kZWF0aC10ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MKaW5k
ZXggMGNmNzgyNWJjYWM3OWZhMzVkMGExMjQ4ZTIzMDhhMjRhYTYyN2I4YS4uMDkwODM1NTE2MTJl
M2MzYjliM2JkN2QxZWU2MDZjMThmZmI1ZjczYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MKQEAgLTI2LDUyICsyNiw2NSBAQAogLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiksIHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9z
ZXYpCisKIC8vCiAvLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBkZWF0aCB0ZXN0cy4KIAotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9n
dGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgorI2luY2x1
ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5h
bC9jdXN0b20vZ3Rlc3QuaCIKIAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCiAKLSNpZiBHVEVT
VF9PU19NQUMKLSNpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgotI2VuZGlmICAvLyBHVEVTVF9PU19N
QUMKKyMgaWYgR1RFU1RfT1NfTUFDCisjICBpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgorIyBlbmRp
ZiAgLy8gR1RFU1RfT1NfTUFDCiAKLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZjbnRs
Lmg+Ci0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+CisjIGluY2x1ZGUg
PGVycm5vLmg+CisjIGluY2x1ZGUgPGZjbnRsLmg+CisjIGluY2x1ZGUgPGxpbWl0cy5oPgogCi0j
aWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbHNlCi0jaW5jbHVk
ZSA8c3lzL21tYW4uaD4KLSNpbmNsdWRlIDxzeXMvd2FpdC5oPgotI2VuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCisjIGlmIEdURVNUX09TX0xJTlVYCisjICBpbmNsdWRlIDxzaWduYWwuaD4KKyMg
ZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RF
U1QKKyMgaW5jbHVkZSA8c3RkYXJnLmg+CisKKyMgaWYgR1RFU1RfT1NfV0lORE9XUworIyAgaW5j
bHVkZSA8d2luZG93cy5oPgorIyBlbHNlCisjICBpbmNsdWRlIDxzeXMvbW1hbi5oPgorIyAgaW5j
bHVkZSA8c3lzL3dhaXQuaD4KKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworIyBpZiBH
VEVTVF9PU19RTlgKKyMgIGluY2x1ZGUgPHNwYXduLmg+CisjIGVuZGlmICAvLyBHVEVTVF9PU19R
TlgKKworIyBpZiBHVEVTVF9PU19GVUNIU0lBCisjICBpbmNsdWRlIDxsaWIvZmRpby9pby5oPgor
IyAgaW5jbHVkZSA8bGliL2ZkaW8vc3Bhd24uaD4KKyMgIGluY2x1ZGUgPHppcmNvbi9wcm9jZXNz
YXJncy5oPgorIyAgaW5jbHVkZSA8emlyY29uL3N5c2NhbGxzLmg+CisjICBpbmNsdWRlIDx6aXJj
b24vc3lzY2FsbHMvcG9ydC5oPgorIyBlbmRpZiAgLy8gR1RFU1RfT1NfRlVDSFNJQQogCi0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0
ZXN0LXN0cmluZy5oPgorI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCi0vLyBJbmRp
Y2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdz
Ci0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwt
aW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3Iu
ICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBp
bmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBH
VEVTVF9JTVBMRU1FTlRBVElPTl8gMQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCIK
KyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKICNpbmNsdWRlICJzcmMv
Z3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCiAKIG5h
bWVzcGFjZSB0ZXN0aW5nIHsKIAogLy8gQ29uc3RhbnRzLgogCiAvLyBUaGUgZGVmYXVsdCBkZWF0
aCB0ZXN0IHN0eWxlLgotc3RhdGljIGNvbnN0IGNoYXIga0RlZmF1bHREZWF0aFRlc3RTdHlsZVtd
ID0gImZhc3QiOworLy8KKy8vIFRoaXMgaXMgZGVmaW5lZCBpbiBpbnRlcm5hbC9ndGVzdC1wb3J0
LmggYXMgImZhc3QiLCBidXQgY2FuIGJlIG92ZXJyaWRkZW4gYnkKKy8vIGEgZGVmaW5pdGlvbiBp
biBpbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oLiBUaGUgcmVjb21tZW5kZWQgdmFsdWUsIHdo
aWNoIGlzCisvLyB1c2VkIGludGVybmFsbHkgYXQgR29vZ2xlLCBpcyAidGhyZWFkc2FmZSIuCitz
dGF0aWMgY29uc3QgY2hhciBrRGVmYXVsdERlYXRoVGVzdFN0eWxlW10gPSBHVEVTVF9ERUZBVUxU
X0RFQVRIX1RFU1RfU1RZTEU7CiAKIEdURVNUX0RFRklORV9zdHJpbmdfKAogICAgIGRlYXRoX3Rl
c3Rfc3R5bGUsCkBAIC0xMDAsMzYgKzExMyw3OSBAQCBHVEVTVF9ERUZJTkVfc3RyaW5nXygKICAg
ICAiSW5kaWNhdGVzIHRoZSBmaWxlLCBsaW5lIG51bWJlciwgdGVtcG9yYWwgaW5kZXggb2YgIgog
ICAgICJ0aGUgc2luZ2xlIGRlYXRoIHRlc3QgdG8gcnVuLCBhbmQgYSBmaWxlIGRlc2NyaXB0b3Ig
dG8gIgogICAgICJ3aGljaCBhIHN1Y2Nlc3MgY29kZSBtYXkgYmUgc2VudCwgYWxsIHNlcGFyYXRl
ZCBieSAiCi0gICAgImNvbG9ucy4gIFRoaXMgZmxhZyBpcyBzcGVjaWZpZWQgaWYgYW5kIG9ubHkg
aWYgdGhlIGN1cnJlbnQgIgorICAgICJ0aGUgJ3wnIGNoYXJhY3RlcnMuICBUaGlzIGZsYWcgaXMg
c3BlY2lmaWVkIGlmIGFuZCBvbmx5IGlmIHRoZSBjdXJyZW50ICIKICAgICAicHJvY2VzcyBpcyBh
IHN1Yi1wcm9jZXNzIGxhdW5jaGVkIGZvciBydW5uaW5nIGEgdGhyZWFkLXNhZmUgIgogICAgICJk
ZWF0aCB0ZXN0LiAgRk9SIElOVEVSTkFMIFVTRSBPTkxZLiIpOwogfSAgLy8gbmFtZXNwYWNlIGlu
dGVybmFsCiAKICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogCituYW1lc3BhY2UgaW50ZXJuYWwg
eworCisvLyBWYWxpZCBvbmx5IGZvciBmYXN0IGRlYXRoIHRlc3RzLiBJbmRpY2F0ZXMgdGhlIGNv
ZGUgaXMgcnVubmluZyBpbiB0aGUKKy8vIGNoaWxkIHByb2Nlc3Mgb2YgYSBmYXN0IHN0eWxlIGRl
YXRoIHRlc3QuCisjIGlmICFHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19GVUNIU0lBCitz
dGF0aWMgYm9vbCBnX2luX2Zhc3RfZGVhdGhfdGVzdF9jaGlsZCA9IGZhbHNlOworIyBlbmRpZgor
CisvLyBSZXR1cm5zIGEgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNhbGxl
ciBpcyBjdXJyZW50bHkKKy8vIGV4ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiB0aGUgZGVhdGgg
dGVzdCBjaGlsZCBwcm9jZXNzLiAgVG9vbHMgc3VjaCBhcworLy8gVmFsZ3JpbmQgaGVhcCBjaGVj
a2VycyBtYXkgbmVlZCB0aGlzIHRvIG1vZGlmeSB0aGVpciBiZWhhdmlvciBpbiBkZWF0aAorLy8g
dGVzdHMuICBJTVBPUlRBTlQ6IFRoaXMgaXMgYW4gaW50ZXJuYWwgdXRpbGl0eS4gIFVzaW5nIGl0
IG1heSBicmVhayB0aGUKKy8vIGltcGxlbWVudGF0aW9uIG9mIGRlYXRoIHRlc3RzLiAgVXNlciBj
b2RlIE1VU1QgTk9UIHVzZSBpdC4KK2Jvb2wgSW5EZWF0aFRlc3RDaGlsZCgpIHsKKyMgaWYgR1RF
U1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19GVUNIU0lBCisKKyAgLy8gT24gV2luZG93cyBhbmQg
RnVjaHNpYSwgZGVhdGggdGVzdHMgYXJlIHRocmVhZC1zYWZlIHJlZ2FyZGxlc3Mgb2YgdGhlIHZh
bHVlCisgIC8vIG9mIHRoZSBkZWF0aF90ZXN0X3N0eWxlIGZsYWcuCisgIHJldHVybiAhR1RFU1Rf
RkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkuZW1wdHkoKTsKKworIyBlbHNlCisKKyAgaWYg
KEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPT0gInRocmVhZHNhZmUiKQorICAgIHJldHVy
biAhR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkuZW1wdHkoKTsKKyAgZWxzZQor
ICAgIHJldHVybiBnX2luX2Zhc3RfZGVhdGhfdGVzdF9jaGlsZDsKKyNlbmRpZgorfQorCit9ICAv
LyBuYW1lc3BhY2UgaW50ZXJuYWwKKwogLy8gRXhpdGVkV2l0aENvZGUgY29uc3RydWN0b3IuCiBF
eGl0ZWRXaXRoQ29kZTo6RXhpdGVkV2l0aENvZGUoaW50IGV4aXRfY29kZSkgOiBleGl0X2NvZGVf
KGV4aXRfY29kZSkgewogfQogCiAvLyBFeGl0ZWRXaXRoQ29kZSBmdW5jdGlvbi1jYWxsIG9wZXJh
dG9yLgogYm9vbCBFeGl0ZWRXaXRoQ29kZTo6b3BlcmF0b3IoKShpbnQgZXhpdF9zdGF0dXMpIGNv
bnN0IHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MgfHwgR1RF
U1RfT1NfRlVDSFNJQQorCiAgIHJldHVybiBleGl0X3N0YXR1cyA9PSBleGl0X2NvZGVfOwotI2Vs
c2UKKworIyBlbHNlCisKICAgcmV0dXJuIFdJRkVYSVRFRChleGl0X3N0YXR1cykgJiYgV0VYSVRT
VEFUVVMoZXhpdF9zdGF0dXMpID09IGV4aXRfY29kZV87Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1MKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19GVUNIU0lB
CiB9CiAKLSNpZiAhR1RFU1RfT1NfV0lORE9XUworIyBpZiAhR1RFU1RfT1NfV0lORE9XUyAmJiAh
R1RFU1RfT1NfRlVDSFNJQQogLy8gS2lsbGVkQnlTaWduYWwgY29uc3RydWN0b3IuCiBLaWxsZWRC
eVNpZ25hbDo6S2lsbGVkQnlTaWduYWwoaW50IHNpZ251bSkgOiBzaWdudW1fKHNpZ251bSkgewog
fQogCiAvLyBLaWxsZWRCeVNpZ25hbCBmdW5jdGlvbi1jYWxsIG9wZXJhdG9yLgogYm9vbCBLaWxs
ZWRCeVNpZ25hbDo6b3BlcmF0b3IoKShpbnQgZXhpdF9zdGF0dXMpIGNvbnN0IHsKKyMgIGlmIGRl
ZmluZWQoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8pCisgIHsKKyAgICBib29sIHJl
c3VsdDsKKyAgICBpZiAoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8oc2lnbnVtXywg
ZXhpdF9zdGF0dXMsICZyZXN1bHQpKSB7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAg
fQorIyAgZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8p
CiAgIHJldHVybiBXSUZTSUdOQUxFRChleGl0X3N0YXR1cykgJiYgV1RFUk1TSUcoZXhpdF9zdGF0
dXMpID09IHNpZ251bV87CiB9Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlm
ICAvLyAhR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfRlVDSFNJQQogCiBuYW1lc3BhY2Ug
aW50ZXJuYWwgewogCkBAIC0xMzcsMjIgKzE5MywyNyBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewog
CiAvLyBHZW5lcmF0ZXMgYSB0ZXh0dWFsIGRlc2NyaXB0aW9uIG9mIGEgZ2l2ZW4gZXhpdCBjb2Rl
LCBpbiB0aGUgZm9ybWF0CiAvLyBzcGVjaWZpZWQgYnkgd2FpdCgyKS4KLXN0YXRpYyBTdHJpbmcg
RXhpdFN1bW1hcnkoaW50IGV4aXRfY29kZSkgeworc3RhdGljIHN0ZDo6c3RyaW5nIEV4aXRTdW1t
YXJ5KGludCBleGl0X2NvZGUpIHsKICAgTWVzc2FnZSBtOwotI2lmIEdURVNUX09TX1dJTkRPV1MK
KworIyBpZiBHVEVTVF9PU19XSU5ET1dTIHx8IEdURVNUX09TX0ZVQ0hTSUEKKwogICBtIDw8ICJF
eGl0ZWQgd2l0aCBleGl0IHN0YXR1cyAiIDw8IGV4aXRfY29kZTsKLSNlbHNlCisKKyMgZWxzZQor
CiAgIGlmIChXSUZFWElURUQoZXhpdF9jb2RlKSkgewogICAgIG0gPDwgIkV4aXRlZCB3aXRoIGV4
aXQgc3RhdHVzICIgPDwgV0VYSVRTVEFUVVMoZXhpdF9jb2RlKTsKICAgfSBlbHNlIGlmIChXSUZT
SUdOQUxFRChleGl0X2NvZGUpKSB7CiAgICAgbSA8PCAiVGVybWluYXRlZCBieSBzaWduYWwgIiA8
PCBXVEVSTVNJRyhleGl0X2NvZGUpOwogICB9Ci0jaWZkZWYgV0NPUkVEVU1QCisjICBpZmRlZiBX
Q09SRURVTVAKICAgaWYgKFdDT1JFRFVNUChleGl0X2NvZGUpKSB7CiAgICAgbSA8PCAiIChjb3Jl
IGR1bXBlZCkiOwogICB9Ci0jZW5kaWYKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIyAg
ZW5kaWYKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfRlVDSFNJQQor
CiAgIHJldHVybiBtLkdldFN0cmluZygpOwogfQogCkBAIC0xNjIsNDIgKzIyMyw1OSBAQCBib29s
IEV4aXRlZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1cykgewogICByZXR1cm4gIUV4aXRl
ZFdpdGhDb2RlKDApKGV4aXRfc3RhdHVzKTsKIH0KIAotI2lmICFHVEVTVF9PU19XSU5ET1dTCisj
IGlmICFHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19GVUNIU0lBCiAvLyBHZW5lcmF0ZXMg
YSB0ZXh0dWFsIGZhaWx1cmUgbWVzc2FnZSB3aGVuIGEgZGVhdGggdGVzdCBmaW5kcyBtb3JlIHRo
YW4KIC8vIG9uZSB0aHJlYWQgcnVubmluZywgb3IgY2Fubm90IGRldGVybWluZSB0aGUgbnVtYmVy
IG9mIHRocmVhZHMsIHByaW9yCiAvLyB0byBleGVjdXRpbmcgdGhlIGdpdmVuIHN0YXRlbWVudC4g
IEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUKIC8vIGNhbGxlciBub3QgdG8gcGFzcyBh
IHRocmVhZF9jb3VudCBvZiAxLgotc3RhdGljIFN0cmluZyBEZWF0aFRlc3RUaHJlYWRXYXJuaW5n
KHNpemVfdCB0aHJlYWRfY291bnQpIHsKK3N0YXRpYyBzdGQ6OnN0cmluZyBEZWF0aFRlc3RUaHJl
YWRXYXJuaW5nKHNpemVfdCB0aHJlYWRfY291bnQpIHsKICAgTWVzc2FnZSBtc2c7CiAgIG1zZyA8
PCAiRGVhdGggdGVzdHMgdXNlIGZvcmsoKSwgd2hpY2ggaXMgdW5zYWZlIHBhcnRpY3VsYXJseSIK
ICAgICAgIDw8ICIgaW4gYSB0aHJlYWRlZCBjb250ZXh0LiBGb3IgdGhpcyB0ZXN0LCAiIDw8IEdU
RVNUX05BTUVfIDw8ICIgIjsKLSAgaWYgKHRocmVhZF9jb3VudCA9PSAwKQorICBpZiAodGhyZWFk
X2NvdW50ID09IDApIHsKICAgICBtc2cgPDwgImNvdWxkbid0IGRldGVjdCB0aGUgbnVtYmVyIG9m
IHRocmVhZHMuIjsKLSAgZWxzZQorICB9IGVsc2UgewogICAgIG1zZyA8PCAiZGV0ZWN0ZWQgIiA8
PCB0aHJlYWRfY291bnQgPDwgIiB0aHJlYWRzLiI7CisgIH0KKyAgbXNnIDw8ICIgU2VlICIKKyAg
ICAgICAgICJodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvYmxvYi9tYXN0ZXIv
Z29vZ2xldGVzdC9kb2NzLyIKKyAgICAgICAgICJhZHZhbmNlZC5tZCNkZWF0aC10ZXN0cy1hbmQt
dGhyZWFkcyIKKyAgICAgIDw8ICIgZm9yIG1vcmUgZXhwbGFuYXRpb24gYW5kIHN1Z2dlc3RlZCBz
b2x1dGlvbnMsIGVzcGVjaWFsbHkgaWYiCisgICAgICA8PCAiIHRoaXMgaXMgdGhlIGxhc3QgbWVz
c2FnZSB5b3Ugc2VlIGJlZm9yZSB5b3VyIHRlc3QgdGltZXMgb3V0LiI7CiAgIHJldHVybiBtc2cu
R2V0U3RyaW5nKCk7CiB9Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAv
LyAhR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfRlVDSFNJQQogCiAvLyBGbGFnIGNoYXJh
Y3RlcnMgZm9yIHJlcG9ydGluZyBhIGRlYXRoIHRlc3QgdGhhdCBkaWQgbm90IGRpZS4KIHN0YXRp
YyBjb25zdCBjaGFyIGtEZWF0aFRlc3RMaXZlZCA9ICdMJzsKIHN0YXRpYyBjb25zdCBjaGFyIGtE
ZWF0aFRlc3RSZXR1cm5lZCA9ICdSJzsKK3N0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RUaHJl
dyA9ICdUJzsKIHN0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RJbnRlcm5hbEVycm9yID0gJ0kn
OwogCi0vLyBBbiBlbnVtZXJhdGlvbiBkZXNjcmliaW5nIGFsbCBvZiB0aGUgcG9zc2libGUgd2F5
cyB0aGF0IGEgZGVhdGggdGVzdAotLy8gY2FuIGNvbmNsdWRlLiAgRElFRCBtZWFucyB0aGF0IHRo
ZSBwcm9jZXNzIGRpZWQgd2hpbGUgZXhlY3V0aW5nIHRoZQotLy8gdGVzdCBjb2RlOyBMSVZFRCBt
ZWFucyB0aGF0IHByb2Nlc3MgbGl2ZWQgYmV5b25kIHRoZSBlbmQgb2YgdGhlIHRlc3QKLS8vIGNv
ZGU7IGFuZCBSRVRVUk5FRCBtZWFucyB0aGF0IHRoZSB0ZXN0IHN0YXRlbWVudCBhdHRlbXB0ZWQg
YSAicmV0dXJuLCIKLS8vIHdoaWNoIGlzIG5vdCBhbGxvd2VkLiAgSU5fUFJPR1JFU1MgbWVhbnMg
dGhlIHRlc3QgaGFzIG5vdCB5ZXQKLS8vIGNvbmNsdWRlZC4KLWVudW0gRGVhdGhUZXN0T3V0Y29t
ZSB7IElOX1BST0dSRVNTLCBESUVELCBMSVZFRCwgUkVUVVJORUQgfTsKKyNpZiBHVEVTVF9PU19G
VUNIU0lBCisKKy8vIEZpbGUgZGVzY3JpcHRvciB1c2VkIGZvciB0aGUgcGlwZSBpbiB0aGUgY2hp
bGQgcHJvY2Vzcy4KK3N0YXRpYyBjb25zdCBpbnQga0Z1Y2hzaWFSZWFkUGlwZUZkID0gMzsKKwor
I2VuZGlmCisKKy8vIEFuIGVudW1lcmF0aW9uIGRlc2NyaWJpbmcgYWxsIG9mIHRoZSBwb3NzaWJs
ZSB3YXlzIHRoYXQgYSBkZWF0aCB0ZXN0IGNhbgorLy8gY29uY2x1ZGUuICBESUVEIG1lYW5zIHRo
YXQgdGhlIHByb2Nlc3MgZGllZCB3aGlsZSBleGVjdXRpbmcgdGhlIHRlc3QKKy8vIGNvZGU7IExJ
VkVEIG1lYW5zIHRoYXQgcHJvY2VzcyBsaXZlZCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgdGVzdCBj
b2RlOworLy8gUkVUVVJORUQgbWVhbnMgdGhhdCB0aGUgdGVzdCBzdGF0ZW1lbnQgYXR0ZW1wdGVk
IHRvIGV4ZWN1dGUgYSByZXR1cm4KKy8vIHN0YXRlbWVudCwgd2hpY2ggaXMgbm90IGFsbG93ZWQ7
IFRIUkVXIG1lYW5zIHRoYXQgdGhlIHRlc3Qgc3RhdGVtZW50CisvLyByZXR1cm5lZCBjb250cm9s
IGJ5IHRocm93aW5nIGFuIGV4Y2VwdGlvbi4gIElOX1BST0dSRVNTIG1lYW5zIHRoZSB0ZXN0Cisv
LyBoYXMgbm90IHlldCBjb25jbHVkZWQuCisvLyBGSVhNRTogVW5pZnkgbmFtZXMgYW5kIHBvc3Np
Ymx5IHZhbHVlcyBmb3IKKy8vIEFib3J0UmVhc29uLCBEZWF0aFRlc3RPdXRjb21lLCBhbmQgZmxh
ZyBjaGFyYWN0ZXJzIGFib3ZlLgorZW51bSBEZWF0aFRlc3RPdXRjb21lIHsgSU5fUFJPR1JFU1Ms
IERJRUQsIExJVkVELCBSRVRVUk5FRCwgVEhSRVcgfTsKIAogLy8gUm91dGluZSBmb3IgYWJvcnRp
bmcgdGhlIHByb2dyYW0gd2hpY2ggaXMgc2FmZSB0byBjYWxsIGZyb20gYW4KIC8vIGV4ZWMtc3R5
bGUgZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzLCBpbiB3aGljaCBjYXNlIHRoZSBlcnJvcgogLy8g
bWVzc2FnZSBpcyBwcm9wYWdhdGVkIGJhY2sgdG8gdGhlIHBhcmVudCBwcm9jZXNzLiAgT3RoZXJ3
aXNlLCB0aGUKIC8vIG1lc3NhZ2UgaXMgc2ltcGx5IHByaW50ZWQgdG8gc3RkZXJyLiAgSW4gZWl0
aGVyIGNhc2UsIHRoZSBwcm9ncmFtCiAvLyB0aGVuIGV4aXRzIHdpdGggc3RhdHVzIDEuCi12b2lk
IERlYXRoVGVzdEFib3J0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgeworc3RhdGljIHZvaWQgRGVh
dGhUZXN0QWJvcnQoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsKICAgLy8gT24gYSBQT1NJ
WCBzeXN0ZW0sIHRoaXMgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCBmcm9tIGEgdGhyZWFkc2FmZS1z
dHlsZQogICAvLyBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nlc3MsIHdoaWNoIG9wZXJhdGVzIG9uIGEg
dmVyeSBzbWFsbCBzdGFjay4gIFVzZQogICAvLyB0aGUgaGVhcCBmb3IgYW55IGFkZGl0aW9uYWwg
bm9uLW1pbnVzY3VsZSBtZW1vcnkgcmVxdWlyZW1lbnRzLgpAQCAtMjEyLDE4ICsyOTAsMTkgQEAg
dm9pZCBEZWF0aFRlc3RBYm9ydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsKICAgfSBlbHNlIHsK
ICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgbWVzc2FnZS5jX3N0cigpKTsKICAgICBmZmx1c2go
c3RkZXJyKTsKLSAgICBhYm9ydCgpOworICAgIHBvc2l4OjpBYm9ydCgpOwogICB9CiB9CiAKIC8v
IEEgcmVwbGFjZW1lbnQgZm9yIENIRUNLIHRoYXQgY2FsbHMgRGVhdGhUZXN0QWJvcnQgaWYgdGhl
IGFzc2VydGlvbgogLy8gZmFpbHMuCi0jZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGV4
cHJlc3Npb24pIFwKKyMgZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGV4cHJlc3Npb24p
IFwKICAgZG8geyBcCiAgICAgaWYgKCE6OnRlc3Rpbmc6OmludGVybmFsOjpJc1RydWUoZXhwcmVz
c2lvbikpIHsgXAotICAgICAgRGVhdGhUZXN0QWJvcnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3Ry
aW5nOjpGb3JtYXQoIFwKLSAgICAgICAgICAiQ0hFQ0sgZmFpbGVkOiBGaWxlICVzLCBsaW5lICVk
OiAlcyIsIFwKLSAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sICNleHByZXNzaW9uKSk7IFwK
KyAgICAgIERlYXRoVGVzdEFib3J0KCBcCisgICAgICAgICAgOjpzdGQ6OnN0cmluZygiQ0hFQ0sg
ZmFpbGVkOiBGaWxlICIpICsgX19GSUxFX18gKyAgIiwgbGluZSAiIFwKKyAgICAgICAgICArIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlN0cmVhbWFibGVUb1N0cmluZyhfX0xJTkVfXykgKyAiOiAiIFwK
KyAgICAgICAgICArICNleHByZXNzaW9uKTsgXAogICAgIH0gXAogICB9IHdoaWxlICg6OnRlc3Rp
bmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgpKQogCkBAIC0yMzQsMjIgKzMxMywyMyBAQCB2b2lk
IERlYXRoVGVzdEFib3J0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewogLy8gZXZhbHVhdGVzIHRo
ZSBleHByZXNzaW9uIGFzIGxvbmcgYXMgaXQgZXZhbHVhdGVzIHRvIC0xIGFuZCBzZXRzCiAvLyBl
cnJubyB0byBFSU5UUi4gIElmIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAtMSBidXQgZXJy
bm8gaXMKIC8vIHNvbWV0aGluZyBvdGhlciB0aGFuIEVJTlRSLCBEZWF0aFRlc3RBYm9ydCBpcyBj
YWxsZWQuCi0jZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oZXhwcmVzc2lv
bikgXAorIyBkZWZpbmUgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhleHByZXNzaW9u
KSBcCiAgIGRvIHsgXAogICAgIGludCBndGVzdF9yZXR2YWw7IFwKICAgICBkbyB7IFwKICAgICAg
IGd0ZXN0X3JldHZhbCA9IChleHByZXNzaW9uKTsgXAogICAgIH0gd2hpbGUgKGd0ZXN0X3JldHZh
bCA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUik7IFwKICAgICBpZiAoZ3Rlc3RfcmV0dmFsID09IC0x
KSB7IFwKLSAgICAgIERlYXRoVGVzdEFib3J0KDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZzo6
Rm9ybWF0KCBcCi0gICAgICAgICAgIkNIRUNLIGZhaWxlZDogRmlsZSAlcywgbGluZSAlZDogJXMg
IT0gLTEiLCBcCi0gICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCAjZXhwcmVzc2lvbikpOyBc
CisgICAgICBEZWF0aFRlc3RBYm9ydCggXAorICAgICAgICAgIDo6c3RkOjpzdHJpbmcoIkNIRUNL
IGZhaWxlZDogRmlsZSAiKSArIF9fRklMRV9fICsgIiwgbGluZSAiIFwKKyAgICAgICAgICArIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlN0cmVhbWFibGVUb1N0cmluZyhfX0xJTkVfXykgKyAiOiAiIFwK
KyAgICAgICAgICArICNleHByZXNzaW9uICsgIiAhPSAtMSIpOyBcCiAgICAgfSBcCiAgIH0gd2hp
bGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCiAKIC8vIFJldHVybnMgdGhl
IG1lc3NhZ2UgZGVzY3JpYmluZyB0aGUgbGFzdCBzeXN0ZW0gZXJyb3IgaW4gZXJybm8uCi1TdHJp
bmcgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKSB7Ci0gICAgcmV0dXJuIFN0cmluZyhlcnJubyA9
PSAwID8gIiIgOiBwb3NpeDo6U3RyRXJyb3IoZXJybm8pKTsKK3N0ZDo6c3RyaW5nIEdldExhc3RF
cnJub0Rlc2NyaXB0aW9uKCkgeworICAgIHJldHVybiBlcnJubyA9PSAwID8gIiIgOiBwb3NpeDo6
U3RyRXJyb3IoZXJybm8pOwogfQogCiAvLyBUaGlzIGlzIGNhbGxlZCBmcm9tIGEgZGVhdGggdGVz
dCBwYXJlbnQgcHJvY2VzcyB0byByZWFkIGEgZmFpbHVyZQpAQCAtMjk5LDExICszNzksMTEgQEAg
Y29uc3QgY2hhciogRGVhdGhUZXN0OjpMYXN0TWVzc2FnZSgpIHsKICAgcmV0dXJuIGxhc3RfZGVh
dGhfdGVzdF9tZXNzYWdlXy5jX3N0cigpOwogfQogCi12b2lkIERlYXRoVGVzdDo6c2V0X2xhc3Rf
ZGVhdGhfdGVzdF9tZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewordm9pZCBEZWF0aFRl
c3Q6OnNldF9sYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2Fn
ZSkgewogICBsYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZV8gPSBtZXNzYWdlOwogfQogCi1TdHJpbmcg
RGVhdGhUZXN0OjpsYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZV87CitzdGQ6OnN0cmluZyBEZWF0aFRl
c3Q6Omxhc3RfZGVhdGhfdGVzdF9tZXNzYWdlXzsKIAogLy8gUHJvdmlkZXMgY3Jvc3MgcGxhdGZv
cm0gaW1wbGVtZW50YXRpb24gZm9yIHNvbWUgZGVhdGggZnVuY3Rpb25hbGl0eS4KIGNsYXNzIERl
YXRoVGVzdEltcGwgOiBwdWJsaWMgRGVhdGhUZXN0IHsKQEAgLTM4OCw2ICs0NjgsOSBAQCB2b2lk
IERlYXRoVGVzdEltcGw6OlJlYWRBbmRJbnRlcnByZXRTdGF0dXNCeXRlKCkgewogICAgICAgY2Fz
ZSBrRGVhdGhUZXN0UmV0dXJuZWQ6CiAgICAgICAgIHNldF9vdXRjb21lKFJFVFVSTkVEKTsKICAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIGtEZWF0aFRlc3RUaHJldzoKKyAgICAgICAgc2V0X291
dGNvbWUoVEhSRVcpOworICAgICAgICBicmVhazsKICAgICAgIGNhc2Uga0RlYXRoVGVzdExpdmVk
OgogICAgICAgICBzZXRfb3V0Y29tZShMSVZFRCk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDE2LDE5
ICs0OTksNDYgQEAgdm9pZCBEZWF0aFRlc3RJbXBsOjpBYm9ydChBYm9ydFJlYXNvbiByZWFzb24p
IHsKICAgLy8gaXQgZmluZHMgYW55IGRhdGEgaW4gb3VyIHBpcGUuICBTbywgaGVyZSB3ZSB3cml0
ZSBhIHNpbmdsZSBmbGFnIGJ5dGUKICAgLy8gdG8gdGhlIHBpcGUsIHRoZW4gZXhpdC4KICAgY29u
c3QgY2hhciBzdGF0dXNfY2ggPQotICAgICAgcmVhc29uID09IFRFU1RfRElEX05PVF9ESUUgPyBr
RGVhdGhUZXN0TGl2ZWQgOiBrRGVhdGhUZXN0UmV0dXJuZWQ7CisgICAgICByZWFzb24gPT0gVEVT
VF9ESURfTk9UX0RJRSA/IGtEZWF0aFRlc3RMaXZlZCA6CisgICAgICByZWFzb24gPT0gVEVTVF9U
SFJFV19FWENFUFRJT04gPyBrRGVhdGhUZXN0VGhyZXcgOiBrRGVhdGhUZXN0UmV0dXJuZWQ7CisK
ICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhwb3NpeDo6V3JpdGUod3JpdGVfZmQo
KSwgJnN0YXR1c19jaCwgMSkpOwotICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKHBv
c2l4OjpDbG9zZSh3cml0ZV9mZCgpKSk7CisgIC8vIFdlIGFyZSBsZWFraW5nIHRoZSBkZXNjcmlw
dG9yIGhlcmUgYmVjYXVzZSBvbiBzb21lIHBsYXRmb3JtcyAoaS5lLiwKKyAgLy8gd2hlbiBidWls
dCBhcyBXaW5kb3dzIERMTCksIGRlc3RydWN0b3JzIG9mIGdsb2JhbCBvYmplY3RzIHdpbGwgc3Rp
bGwKKyAgLy8gcnVuIGFmdGVyIGNhbGxpbmcgX2V4aXQoKS4gT24gc3VjaCBzeXN0ZW1zLCB3cml0
ZV9mZF8gd2lsbCBiZQorICAvLyBpbmRpcmVjdGx5IGNsb3NlZCBmcm9tIHRoZSBkZXN0cnVjdG9y
IG9mIFVuaXRUZXN0SW1wbCwgY2F1c2luZyBkb3VibGUKKyAgLy8gY2xvc2UgaWYgaXQgaXMgYWxz
byBjbG9zZWQgaGVyZS4gT24gZGVidWcgY29uZmlndXJhdGlvbnMsIGRvdWJsZSBjbG9zZQorICAv
LyBtYXkgYXNzZXJ0LiBBcyB0aGVyZSBhcmUgbm8gaW4tcHJvY2VzcyBidWZmZXJzIHRvIGZsdXNo
IGhlcmUsIHdlIGFyZQorICAvLyByZWx5aW5nIG9uIHRoZSBPUyB0byBjbG9zZSB0aGUgZGVzY3Jp
cHRvciBhZnRlciB0aGUgcHJvY2VzcyB0ZXJtaW5hdGVzCisgIC8vIHdoZW4gdGhlIGRlc3RydWN0
b3JzIGFyZSBub3QgcnVuLgogICBfZXhpdCgxKTsgIC8vIEV4aXRzIHcvbyBhbnkgbm9ybWFsIGV4
aXQgaG9va3MgKHdlIHdlcmUgc3VwcG9zZWQgdG8gY3Jhc2gpCiB9CiAKKy8vIFJldHVybnMgYW4g
aW5kZW50ZWQgY29weSBvZiBzdGRlcnIgb3V0cHV0IGZvciBhIGRlYXRoIHRlc3QuCisvLyBUaGlz
IG1ha2VzIGRpc3Rpbmd1aXNoaW5nIGRlYXRoIHRlc3Qgb3V0cHV0IGxpbmVzIGZyb20gcmVndWxh
ciBsb2cgbGluZXMKKy8vIG11Y2ggZWFzaWVyLgorc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9ybWF0
RGVhdGhUZXN0T3V0cHV0KGNvbnN0IDo6c3RkOjpzdHJpbmcmIG91dHB1dCkgeworICA6OnN0ZDo6
c3RyaW5nIHJldDsKKyAgZm9yIChzaXplX3QgYXQgPSAwOyA7ICkgeworICAgIGNvbnN0IHNpemVf
dCBsaW5lX2VuZCA9IG91dHB1dC5maW5kKCdcbicsIGF0KTsKKyAgICByZXQgKz0gIlsgIERFQVRI
ICAgXSAiOworICAgIGlmIChsaW5lX2VuZCA9PSA6OnN0ZDo6c3RyaW5nOjpucG9zKSB7CisgICAg
ICByZXQgKz0gb3V0cHV0LnN1YnN0cihhdCk7CisgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0
ICs9IG91dHB1dC5zdWJzdHIoYXQsIGxpbmVfZW5kICsgMSAtIGF0KTsKKyAgICBhdCA9IGxpbmVf
ZW5kICsgMTsKKyAgfQorICByZXR1cm4gcmV0OworfQorCiAvLyBBc3Nlc3NlcyB0aGUgc3VjY2Vz
cyBvciBmYWlsdXJlIG9mIGEgZGVhdGggdGVzdCwgdXNpbmcgYm90aCBwcml2YXRlCiAvLyBtZW1i
ZXJzIHdoaWNoIGhhdmUgcHJldmlvdXNseSBiZWVuIHNldCwgYW5kIG9uZSBhcmd1bWVudDoKIC8v
CiAvLyBQcml2YXRlIGRhdGEgbWVtYmVyczoKIC8vICAgb3V0Y29tZTogIEFuIGVudW1lcmF0aW9u
IGRlc2NyaWJpbmcgaG93IHRoZSBkZWF0aCB0ZXN0Ci0vLyAgICAgICAgICAgICBjb25jbHVkZWQ6
IERJRUQsIExJVkVELCBvciBSRVRVUk5FRC4gIFRoZSBkZWF0aCB0ZXN0IGZhaWxzCi0vLyAgICAg
ICAgICAgICBpbiB0aGUgbGF0dGVyIHR3byBjYXNlcy4KKy8vICAgICAgICAgICAgIGNvbmNsdWRl
ZDogRElFRCwgTElWRUQsIFRIUkVXLCBvciBSRVRVUk5FRC4gIFRoZSBkZWF0aCB0ZXN0CisvLyAg
ICAgICAgICAgICBmYWlscyBpbiB0aGUgbGF0dGVyIHRocmVlIGNhc2VzLgogLy8gICBzdGF0dXM6
ICAgVGhlIGV4aXQgc3RhdHVzIG9mIHRoZSBjaGlsZCBwcm9jZXNzLiBPbiAqbml4LCBpdCBpcyBp
biB0aGUKIC8vICAgICAgICAgICAgIGluIHRoZSBmb3JtYXQgc3BlY2lmaWVkIGJ5IHdhaXQoMiku
IE9uIFdpbmRvd3MsIHRoaXMgaXMgdGhlCiAvLyAgICAgICAgICAgICB2YWx1ZSBzdXBwbGllZCB0
byB0aGUgRXhpdFByb2Nlc3MoKSBBUEkgb3IgYSBudW1lcmljIGNvZGUKQEAgLTQ0OCw3ICs1NTgs
NyBAQCBib29sIERlYXRoVGVzdEltcGw6OlBhc3NlZChib29sIHN0YXR1c19vaykgewogICBpZiAo
IXNwYXduZWQoKSkKICAgICByZXR1cm4gZmFsc2U7CiAKLSAgY29uc3QgU3RyaW5nIGVycm9yX21l
c3NhZ2UgPSBHZXRDYXB0dXJlZFN0ZGVycigpOworICBjb25zdCBzdGQ6OnN0cmluZyBlcnJvcl9t
ZXNzYWdlID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKIAogICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsK
ICAgTWVzc2FnZSBidWZmZXI7CkBAIC00NTcsMjUgKzU2NywzNSBAQCBib29sIERlYXRoVGVzdElt
cGw6OlBhc3NlZChib29sIHN0YXR1c19vaykgewogICBzd2l0Y2ggKG91dGNvbWUoKSkgewogICAg
IGNhc2UgTElWRUQ6CiAgICAgICBidWZmZXIgPDwgIiAgICBSZXN1bHQ6IGZhaWxlZCB0byBkaWUu
XG4iCi0gICAgICAgICAgICAgPDwgIiBFcnJvciBtc2c6ICIgPDwgZXJyb3JfbWVzc2FnZTsKKyAg
ICAgICAgICAgICA8PCAiIEVycm9yIG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGVy
cm9yX21lc3NhZ2UpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBUSFJFVzoKKyAgICAgIGJ1ZmZl
ciA8PCAiICAgIFJlc3VsdDogdGhyZXcgYW4gZXhjZXB0aW9uLlxuIgorICAgICAgICAgICAgIDw8
ICIgRXJyb3IgbXNnOlxuIiA8PCBGb3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2FnZSk7
CiAgICAgICBicmVhazsKICAgICBjYXNlIFJFVFVSTkVEOgogICAgICAgYnVmZmVyIDw8ICIgICAg
UmVzdWx0OiBpbGxlZ2FsIHJldHVybiBpbiB0ZXN0IHN0YXRlbWVudC5cbiIKLSAgICAgICAgICAg
ICA8PCAiIEVycm9yIG1zZzogIiA8PCBlcnJvcl9tZXNzYWdlOworICAgICAgICAgICAgIDw8ICIg
RXJyb3IgbXNnOlxuIiA8PCBGb3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2FnZSk7CiAg
ICAgICBicmVhazsKICAgICBjYXNlIERJRUQ6CiAgICAgICBpZiAoc3RhdHVzX29rKSB7CisjIGlm
IEdURVNUX1VTRVNfUENSRQorICAgICAgICAvLyBQQ1JFIHJlZ2V4ZXMgc3VwcG9ydCBlbWJlZGRl
ZCBOVUxzLgorICAgICAgICBjb25zdCBib29sIG1hdGNoZWQgPSBSRTo6UGFydGlhbE1hdGNoKGVy
cm9yX21lc3NhZ2UsICpyZWdleCgpKTsKKyMgZWxzZQogICAgICAgICBjb25zdCBib29sIG1hdGNo
ZWQgPSBSRTo6UGFydGlhbE1hdGNoKGVycm9yX21lc3NhZ2UuY19zdHIoKSwgKnJlZ2V4KCkpOwor
IyBlbmRpZiAgLy8gR1RFU1RfVVNFU19QQ1JFCiAgICAgICAgIGlmIChtYXRjaGVkKSB7CiAgICAg
ICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgYnVmZmVy
IDw8ICIgICAgUmVzdWx0OiBkaWVkIGJ1dCBub3Qgd2l0aCBleHBlY3RlZCBlcnJvci5cbiIKICAg
ICAgICAgICAgICAgICAgPDwgIiAgRXhwZWN0ZWQ6ICIgPDwgcmVnZXgoKS0+cGF0dGVybigpIDw8
ICJcbiIKLSAgICAgICAgICAgICAgICAgPDwgIkFjdHVhbCBtc2c6ICIgPDwgZXJyb3JfbWVzc2Fn
ZTsKKyAgICAgICAgICAgICAgICAgPDwgIkFjdHVhbCBtc2c6XG4iIDw8IEZvcm1hdERlYXRoVGVz
dE91dHB1dChlcnJvcl9tZXNzYWdlKTsKICAgICAgICAgfQogICAgICAgfSBlbHNlIHsKICAgICAg
ICAgYnVmZmVyIDw8ICIgICAgUmVzdWx0OiBkaWVkIGJ1dCBub3Qgd2l0aCBleHBlY3RlZCBleGl0
IGNvZGU6XG4iCi0gICAgICAgICAgICAgICA8PCAiICAgICAgICAgICAgIiA8PCBFeGl0U3VtbWFy
eShzdGF0dXMoKSkgPDwgIlxuIjsKKyAgICAgICAgICAgICAgIDw8ICIgICAgICAgICAgICAiIDw8
IEV4aXRTdW1tYXJ5KHN0YXR1cygpKSA8PCAiXG4iCisgICAgICAgICAgICAgICA8PCAiQWN0dWFs
IG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGVycm9yX21lc3NhZ2UpOwogICAgICAg
fQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTl9QUk9HUkVTUzoKQEAgLTQ4OCw3ICs2MDgsNyBA
QCBib29sIERlYXRoVGVzdEltcGw6OlBhc3NlZChib29sIHN0YXR1c19vaykgewogICByZXR1cm4g
c3VjY2VzczsKIH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lORE9X
UwogLy8gV2luZG93c0RlYXRoVGVzdCBpbXBsZW1lbnRzIGRlYXRoIHRlc3RzIG9uIFdpbmRvd3Mu
IER1ZSB0byB0aGUKIC8vIHNwZWNpZmljcyBvZiBzdGFydGluZyBuZXcgcHJvY2Vzc2VzIG9uIFdp
bmRvd3MsIGRlYXRoIHRlc3RzIHRoZXJlIGFyZQogLy8gYWx3YXlzIHRocmVhZHNhZmUsIGFuZCBH
b29nbGUgVGVzdCBjb25zaWRlcnMgdGhlCkBAIC01MTksMTEgKzYzOSwxMSBAQCBib29sIERlYXRo
VGVzdEltcGw6OlBhc3NlZChib29sIHN0YXR1c19vaykgewogLy8KIGNsYXNzIFdpbmRvd3NEZWF0
aFRlc3QgOiBwdWJsaWMgRGVhdGhUZXN0SW1wbCB7CiAgcHVibGljOgotICBXaW5kb3dzRGVhdGhU
ZXN0KGNvbnN0IGNoYXIqIHN0YXRlbWVudCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBSRSog
cmVnZXgsCisgIFdpbmRvd3NEZWF0aFRlc3QoY29uc3QgY2hhciogYV9zdGF0ZW1lbnQsCisgICAg
ICAgICAgICAgICAgICAgY29uc3QgUkUqIGFfcmVnZXgsCiAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogZmlsZSwKICAgICAgICAgICAgICAgICAgICBpbnQgbGluZSkKLSAgICAgIDogRGVh
dGhUZXN0SW1wbChzdGF0ZW1lbnQsIHJlZ2V4KSwgZmlsZV8oZmlsZSksIGxpbmVfKGxpbmUpIHt9
CisgICAgICA6IERlYXRoVGVzdEltcGwoYV9zdGF0ZW1lbnQsIGFfcmVnZXgpLCBmaWxlXyhmaWxl
KSwgbGluZV8obGluZSkge30KIAogICAvLyBBbGwgb2YgdGhlc2UgdmlydHVhbCBmdW5jdGlvbnMg
YXJlIGluaGVyaXRlZCBmcm9tIERlYXRoVGVzdC4KICAgdmlydHVhbCBpbnQgV2FpdCgpOwpAQCAt
NTgwLDEyICs3MDAsMTIgQEAgaW50IFdpbmRvd3NEZWF0aFRlc3Q6OldhaXQoKSB7CiAgIEdURVNU
X0RFQVRIX1RFU1RfQ0hFQ0tfKAogICAgICAgV0FJVF9PQkpFQ1RfMCA9PSA6OldhaXRGb3JTaW5n
bGVPYmplY3QoY2hpbGRfaGFuZGxlXy5HZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIElORklOSVRFKSk7Ci0gIERXT1JEIHN0YXR1czsKLSAgR1RFU1Rf
REVBVEhfVEVTVF9DSEVDS18oOjpHZXRFeGl0Q29kZVByb2Nlc3MoY2hpbGRfaGFuZGxlXy5HZXQo
KSwgJnN0YXR1cykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gRkFMU0UpOworICBEV09S
RCBzdGF0dXNfY29kZTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oCisgICAgICA6OkdldEV4
aXRDb2RlUHJvY2VzcyhjaGlsZF9oYW5kbGVfLkdldCgpLCAmc3RhdHVzX2NvZGUpICE9IEZBTFNF
KTsKICAgY2hpbGRfaGFuZGxlXy5SZXNldCgpOwotICBzZXRfc3RhdHVzKHN0YXRpY19jYXN0PGlu
dD4oc3RhdHVzKSk7Ci0gIHJldHVybiB0aGlzLT5zdGF0dXMoKTsKKyAgc2V0X3N0YXR1cyhzdGF0
aWNfY2FzdDxpbnQ+KHN0YXR1c19jb2RlKSk7CisgIHJldHVybiBzdGF0dXMoKTsKIH0KIAogLy8g
VGhlIEFzc3VtZVJvbGUgcHJvY2VzcyBmb3IgYSBXaW5kb3dzIGRlYXRoIHRlc3QuICBJdCBjcmVh
dGVzIGEgY2hpbGQKQEAgLTYyNSwyMiArNzQ1LDE5IEBAIERlYXRoVGVzdDo6VGVzdFJvbGUgV2lu
ZG93c0RlYXRoVGVzdDo6QXNzdW1lUm9sZSgpIHsKICAgICAgIEZBTFNFLCAgIC8vIFRoZSBpbml0
aWFsIHN0YXRlIGlzIG5vbi1zaWduYWxsZWQuCiAgICAgICBOVUxMKSk7ICAvLyBUaGUgZXZlbiBp
cyB1bm5hbWVkLgogICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhldmVudF9oYW5kbGVfLkdldCgp
ICE9IE5VTEwpOwotICBjb25zdCBTdHJpbmcgZmlsdGVyX2ZsYWcgPSBTdHJpbmc6OkZvcm1hdCgi
LS0lcyVzPSVzLiVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR1RFU1RfRkxBR19QUkVGSVhfLCBrRmlsdGVyRmxhZywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+dGVzdF9jYXNlX25hbWUoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+bmFtZSgpKTsKLSAgY29u
c3QgU3RyaW5nIGludGVybmFsX2ZsYWcgPSBTdHJpbmc6OkZvcm1hdCgKLSAgICAiLS0lcyVzPSVz
fCVkfCVkfCV1fCVJdXwlSXUiLAotICAgICAgR1RFU1RfRkxBR19QUkVGSVhfLAotICAgICAga0lu
dGVybmFsUnVuRGVhdGhUZXN0RmxhZywKLSAgICAgIGZpbGVfLCBsaW5lXywKLSAgICAgIGRlYXRo
X3Rlc3RfaW5kZXgsCi0gICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KDo6R2V0Q3VycmVu
dFByb2Nlc3NJZCgpKSwKLSAgICAgIC8vIHNpemVfdCBoYXMgdGhlIHNhbWUgd2l0aCBhcyBwb2lu
dGVycyBvbiBib3RoIDMyLWJpdCBhbmQgNjQtYml0CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbHRl
cl9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsg
a0ZpbHRlckZsYWcgKyAiPSIgKworICAgICAgaW5mby0+dGVzdF9jYXNlX25hbWUoKSArICIuIiAr
IGluZm8tPm5hbWUoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgaW50ZXJuYWxfZmxhZyA9CisgICAg
ICBzdGQ6OnN0cmluZygiLS0iKSArIEdURVNUX0ZMQUdfUFJFRklYXyArIGtJbnRlcm5hbFJ1bkRl
YXRoVGVzdEZsYWcgKworICAgICAgIj0iICsgZmlsZV8gKyAifCIgKyBTdHJlYW1hYmxlVG9TdHJp
bmcobGluZV8pICsgInwiICsKKyAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhkZWF0aF90ZXN0X2lu
ZGV4KSArICJ8IiArCisgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50Pig6OkdldEN1cnJlbnRQcm9jZXNzSWQoKSkpICsKKyAgICAgIC8vIHNpemVfdCBoYXMg
dGhlIHNhbWUgd2lkdGggYXMgcG9pbnRlcnMgb24gYm90aCAzMi1iaXQgYW5kIDY0LWJpdAogICAg
ICAgLy8gV2luZG93cyBwbGF0Zm9ybXMuCiAgICAgICAvLyBTZWUgaHR0cDovL21zZG4ubWljcm9z
b2Z0LmNvbS9lbi11cy9saWJyYXJ5L3RjeGYxZHc2LmFzcHguCi0gICAgICByZWludGVycHJldF9j
YXN0PHNpemVfdD4od3JpdGVfaGFuZGxlKSwKLSAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90
PihldmVudF9oYW5kbGVfLkdldCgpKSk7CisgICAgICAifCIgKyBTdHJlYW1hYmxlVG9TdHJpbmco
cmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KHdyaXRlX2hhbmRsZSkpICsKKyAgICAgICJ8IiArIFN0
cmVhbWFibGVUb1N0cmluZyhyZWludGVycHJldF9jYXN0PHNpemVfdD4oZXZlbnRfaGFuZGxlXy5H
ZXQoKSkpOwogCiAgIGNoYXIgZXhlY3V0YWJsZV9wYXRoW19NQVhfUEFUSCArIDFdOyAgLy8gTk9M
SU5UCiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKApAQCAtNjQ4LDEwICs3NjUsOSBAQCBEZWF0
aFRlc3Q6OlRlc3RSb2xlIFdpbmRvd3NEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVfcGF0aCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01BWF9QQVRIKSk7CiAK
LSAgU3RyaW5nIGNvbW1hbmRfbGluZSA9IFN0cmluZzo6Rm9ybWF0KCIlcyAlcyBcIiVzXCIiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpHZXRDb21tYW5kTGluZUEo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl9mbGFnLmNf
c3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbF9m
bGFnLmNfc3RyKCkpOworICBzdGQ6OnN0cmluZyBjb21tYW5kX2xpbmUgPQorICAgICAgc3RkOjpz
dHJpbmcoOjpHZXRDb21tYW5kTGluZUEoKSkgKyAiICIgKyBmaWx0ZXJfZmxhZyArICIgXCIiICsK
KyAgICAgIGludGVybmFsX2ZsYWcgKyAiXCIiOwogCiAgIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVh
dGhfdGVzdF9tZXNzYWdlKCIiKTsKIApAQCAtNjg0LDcgKzgwMCwyMDAgQEAgRGVhdGhUZXN0OjpU
ZXN0Um9sZSBXaW5kb3dzRGVhdGhUZXN0OjpBc3N1bWVSb2xlKCkgewogICBzZXRfc3Bhd25lZCh0
cnVlKTsKICAgcmV0dXJuIE9WRVJTRUVfVEVTVDsKIH0KLSNlbHNlICAvLyBXZSBhcmUgbm90IG9u
IFdpbmRvd3MuCisKKyMgZWxpZiBHVEVTVF9PU19GVUNIU0lBCisKK2NsYXNzIEZ1Y2hzaWFEZWF0
aFRlc3QgOiBwdWJsaWMgRGVhdGhUZXN0SW1wbCB7CisgcHVibGljOgorICBGdWNoc2lhRGVhdGhU
ZXN0KGNvbnN0IGNoYXIqIGFfc3RhdGVtZW50LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFJF
KiBhX3JlZ2V4LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsCisgICAgICAg
ICAgICAgICAgICAgaW50IGxpbmUpCisgICAgICA6IERlYXRoVGVzdEltcGwoYV9zdGF0ZW1lbnQs
IGFfcmVnZXgpLCBmaWxlXyhmaWxlKSwgbGluZV8obGluZSkge30KKyAgdmlydHVhbCB+RnVjaHNp
YURlYXRoVGVzdCgpIHsKKyAgICB6eF9zdGF0dXNfdCBzdGF0dXMgPSB6eF9oYW5kbGVfY2xvc2Uo
Y2hpbGRfcHJvY2Vzc18pOworICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1cyA9PSBa
WF9PSyk7CisgICAgc3RhdHVzID0genhfaGFuZGxlX2Nsb3NlKHBvcnRfKTsKKyAgICBHVEVTVF9E
RUFUSF9URVNUX0NIRUNLXyhzdGF0dXMgPT0gWlhfT0spOworICB9CisKKyAgLy8gQWxsIG9mIHRo
ZXNlIHZpcnR1YWwgZnVuY3Rpb25zIGFyZSBpbmhlcml0ZWQgZnJvbSBEZWF0aFRlc3QuCisgIHZp
cnR1YWwgaW50IFdhaXQoKTsKKyAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCk7CisKKyBw
cml2YXRlOgorICAvLyBUaGUgbmFtZSBvZiB0aGUgZmlsZSBpbiB3aGljaCB0aGUgZGVhdGggdGVz
dCBpcyBsb2NhdGVkLgorICBjb25zdCBjaGFyKiBjb25zdCBmaWxlXzsKKyAgLy8gVGhlIGxpbmUg
bnVtYmVyIG9uIHdoaWNoIHRoZSBkZWF0aCB0ZXN0IGlzIGxvY2F0ZWQuCisgIGNvbnN0IGludCBs
aW5lXzsKKworICB6eF9oYW5kbGVfdCBjaGlsZF9wcm9jZXNzXyA9IFpYX0hBTkRMRV9JTlZBTElE
OworICB6eF9oYW5kbGVfdCBwb3J0XyA9IFpYX0hBTkRMRV9JTlZBTElEOworfTsKKworLy8gVXRp
bGl0eSBjbGFzcyBmb3IgYWNjdW11bGF0aW5nIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuCitjbGFz
cyBBcmd1bWVudHMgeworIHB1YmxpYzoKKyAgQXJndW1lbnRzKCkgeworICAgIGFyZ3NfLnB1c2hf
YmFjayhOVUxMKTsKKyAgfQorCisgIH5Bcmd1bWVudHMoKSB7CisgICAgZm9yIChzdGQ6OnZlY3Rv
cjxjaGFyKj46Oml0ZXJhdG9yIGkgPSBhcmdzXy5iZWdpbigpOyBpICE9IGFyZ3NfLmVuZCgpOwor
ICAgICAgICAgKytpKSB7CisgICAgICBmcmVlKCppKTsKKyAgICB9CisgIH0KKyAgdm9pZCBBZGRB
cmd1bWVudChjb25zdCBjaGFyKiBhcmd1bWVudCkgeworICAgIGFyZ3NfLmluc2VydChhcmdzXy5l
bmQoKSAtIDEsIHBvc2l4OjpTdHJEdXAoYXJndW1lbnQpKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBTdHI+CisgIHZvaWQgQWRkQXJndW1lbnRzKGNvbnN0IDo6c3RkOjp2ZWN0b3I8U3Ry
PiYgYXJndW1lbnRzKSB7CisgICAgZm9yICh0eXBlbmFtZSA6OnN0ZDo6dmVjdG9yPFN0cj46OmNv
bnN0X2l0ZXJhdG9yIGkgPSBhcmd1bWVudHMuYmVnaW4oKTsKKyAgICAgICAgIGkgIT0gYXJndW1l
bnRzLmVuZCgpOworICAgICAgICAgKytpKSB7CisgICAgICBhcmdzXy5pbnNlcnQoYXJnc18uZW5k
KCkgLSAxLCBwb3NpeDo6U3RyRHVwKGktPmNfc3RyKCkpKTsKKyAgICB9CisgIH0KKyAgY2hhciog
Y29uc3QqIEFyZ3YoKSB7CisgICAgcmV0dXJuICZhcmdzX1swXTsKKyAgfQorCisgIGludCBzaXpl
KCkgeworICAgIHJldHVybiBhcmdzXy5zaXplKCkgLSAxOworICB9CisKKyBwcml2YXRlOgorICBz
dGQ6OnZlY3RvcjxjaGFyKj4gYXJnc187Cit9OworCisvLyBXYWl0cyBmb3IgdGhlIGNoaWxkIGlu
IGEgZGVhdGggdGVzdCB0byBleGl0LCByZXR1cm5pbmcgaXRzIGV4aXQKKy8vIHN0YXR1cywgb3Ig
MCBpZiBubyBjaGlsZCBwcm9jZXNzIGV4aXN0cy4gIEFzIGEgc2lkZSBlZmZlY3QsIHNldHMgdGhl
CisvLyBvdXRjb21lIGRhdGEgbWVtYmVyLgoraW50IEZ1Y2hzaWFEZWF0aFRlc3Q6OldhaXQoKSB7
CisgIGlmICghc3Bhd25lZCgpKQorICAgIHJldHVybiAwOworCisgIC8vIFJlZ2lzdGVyIHRvIHdh
aXQgZm9yIHRoZSBjaGlsZCBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4KKyAgenhfc3RhdHVzX3Qgc3Rh
dHVzX3p4OworICBzdGF0dXNfenggPSB6eF9vYmplY3Rfd2FpdF9hc3luYyhjaGlsZF9wcm9jZXNz
XywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyoga2V5ICovLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBaWF9QUk9DRVNTX1RFUk1JTkFURUQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFpYX1dBSVRfQVNZTkNfT05DRSk7CisgIEdURVNUX0RFQVRIX1RF
U1RfQ0hFQ0tfKHN0YXR1c196eCA9PSBaWF9PSyk7CisKKyAgLy8gV2FpdCBmb3IgaXQgdG8gdGVy
bWluYXRlLCBvciBhbiBleGNlcHRpb24gdG8gYmUgcmVjZWl2ZWQuCisgIHp4X3BvcnRfcGFja2V0
X3QgcGFja2V0OworICBzdGF0dXNfenggPSB6eF9wb3J0X3dhaXQocG9ydF8sIFpYX1RJTUVfSU5G
SU5JVEUsICZwYWNrZXQpOworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhzdGF0dXNfenggPT0g
WlhfT0spOworCisgIGlmIChaWF9QS1RfSVNfRVhDRVBUSU9OKHBhY2tldC50eXBlKSkgeworICAg
IC8vIFByb2Nlc3MgZW5jb3VudGVyZWQgYW4gZXhjZXB0aW9uLiBLaWxsIGl0IGRpcmVjdGx5IHJh
dGhlciB0aGFuIGxldHRpbmcKKyAgICAvLyBvdGhlciBoYW5kbGVycyBwcm9jZXNzIHRoZSBldmVu
dC4KKyAgICBzdGF0dXNfenggPSB6eF90YXNrX2tpbGwoY2hpbGRfcHJvY2Vzc18pOworICAgIEdU
RVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1c196eCA9PSBaWF9PSyk7CisKKyAgICAvLyBOb3cg
d2FpdCBmb3IgfGNoaWxkX3Byb2Nlc3NffCB0byB0ZXJtaW5hdGUuCisgICAgenhfc2lnbmFsc190
IHNpZ25hbHMgPSAwOworICAgIHN0YXR1c196eCA9IHp4X29iamVjdF93YWl0X29uZSgKKyAgICAg
ICAgY2hpbGRfcHJvY2Vzc18sIFpYX1BST0NFU1NfVEVSTUlOQVRFRCwgWlhfVElNRV9JTkZJTklU
RSwgJnNpZ25hbHMpOworICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1c196eCA9PSBa
WF9PSyk7CisgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc2lnbmFscyAmIFpYX1BST0NFU1Nf
VEVSTUlOQVRFRCk7CisgIH0gZWxzZSB7CisgICAgLy8gUHJvY2VzcyB0ZXJtaW5hdGVkLgorICAg
IEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKFpYX1BLVF9JU19TSUdOQUxfT05FKHBhY2tldC50eXBl
KSk7CisgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18ocGFja2V0LnNpZ25hbC5vYnNlcnZlZCAm
IFpYX1BST0NFU1NfVEVSTUlOQVRFRCk7CisgIH0KKworICBSZWFkQW5kSW50ZXJwcmV0U3RhdHVz
Qnl0ZSgpOworCisgIHp4X2luZm9fcHJvY2Vzc190IGJ1ZmZlcjsKKyAgc3RhdHVzX3p4ID0genhf
b2JqZWN0X2dldF9pbmZvKAorICAgICAgY2hpbGRfcHJvY2Vzc18sCisgICAgICBaWF9JTkZPX1BS
T0NFU1MsCisgICAgICAmYnVmZmVyLAorICAgICAgc2l6ZW9mKGJ1ZmZlciksCisgICAgICBudWxs
cHRyLAorICAgICAgbnVsbHB0cik7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1c196
eCA9PSBaWF9PSyk7CisKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oYnVmZmVyLmV4aXRlZCk7
CisgIHNldF9zdGF0dXMoYnVmZmVyLnJldHVybl9jb2RlKTsKKyAgcmV0dXJuIHN0YXR1cygpOwor
fQorCisvLyBUaGUgQXNzdW1lUm9sZSBwcm9jZXNzIGZvciBhIEZ1Y2hzaWEgZGVhdGggdGVzdC4g
IEl0IGNyZWF0ZXMgYSBjaGlsZAorLy8gcHJvY2VzcyB3aXRoIHRoZSBzYW1lIGV4ZWN1dGFibGUg
YXMgdGhlIGN1cnJlbnQgcHJvY2VzcyB0byBydW4gdGhlCisvLyBkZWF0aCB0ZXN0LiAgVGhlIGNo
aWxkIHByb2Nlc3MgaXMgZ2l2ZW4gdGhlIC0tZ3Rlc3RfZmlsdGVyIGFuZAorLy8gLS1ndGVzdF9p
bnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFncyBzdWNoIHRoYXQgaXQga25vd3MgdG8gcnVuIHRo
ZQorLy8gY3VycmVudCBkZWF0aCB0ZXN0IG9ubHkuCitEZWF0aFRlc3Q6OlRlc3RSb2xlIEZ1Y2hz
aWFEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CisgIGNvbnN0IFVuaXRUZXN0SW1wbCogY29uc3Qg
aW1wbCA9IEdldFVuaXRUZXN0SW1wbCgpOworICBjb25zdCBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZs
YWcqIGNvbnN0IGZsYWcgPQorICAgICAgaW1wbC0+aW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfZmxh
ZygpOworICBjb25zdCBUZXN0SW5mbyogY29uc3QgaW5mbyA9IGltcGwtPmN1cnJlbnRfdGVzdF9p
bmZvKCk7CisgIGNvbnN0IGludCBkZWF0aF90ZXN0X2luZGV4ID0gaW5mby0+cmVzdWx0KCktPmRl
YXRoX3Rlc3RfY291bnQoKTsKKworICBpZiAoZmxhZyAhPSBOVUxMKSB7CisgICAgLy8gUGFyc2VJ
bnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoKSBoYXMgcGVyZm9ybWVkIGFsbCB0aGUgbmVjZXNzYXJ5
CisgICAgLy8gcHJvY2Vzc2luZy4KKyAgICBzZXRfd3JpdGVfZmQoa0Z1Y2hzaWFSZWFkUGlwZUZk
KTsKKyAgICByZXR1cm4gRVhFQ1VURV9URVNUOworICB9CisKKyAgQ2FwdHVyZVN0ZGVycigpOwor
ICAvLyBGbHVzaCB0aGUgbG9nIGJ1ZmZlcnMgc2luY2UgdGhlIGxvZyBzdHJlYW1zIGFyZSBzaGFy
ZWQgd2l0aCB0aGUgY2hpbGQuCisgIEZsdXNoSW5mb0xvZygpOworCisgIC8vIEJ1aWxkIHRoZSBj
aGlsZCBwcm9jZXNzIGNvbW1hbmQgbGluZS4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsdGVyX2Zs
YWcgPQorICAgICAgc3RkOjpzdHJpbmcoIi0tIikgKyBHVEVTVF9GTEFHX1BSRUZJWF8gKyBrRmls
dGVyRmxhZyArICI9IgorICAgICAgKyBpbmZvLT50ZXN0X2Nhc2VfbmFtZSgpICsgIi4iICsgaW5m
by0+bmFtZSgpOworICBjb25zdCBzdGQ6OnN0cmluZyBpbnRlcm5hbF9mbGFnID0KKyAgICAgIHN0
ZDo6c3RyaW5nKCItLSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsga0ludGVybmFsUnVuRGVhdGhU
ZXN0RmxhZyArICI9IgorICAgICAgKyBmaWxlXyArICJ8IgorICAgICAgKyBTdHJlYW1hYmxlVG9T
dHJpbmcobGluZV8pICsgInwiCisgICAgICArIFN0cmVhbWFibGVUb1N0cmluZyhkZWF0aF90ZXN0
X2luZGV4KTsKKyAgQXJndW1lbnRzIGFyZ3M7CisgIGFyZ3MuQWRkQXJndW1lbnRzKEdldEluamVj
dGFibGVBcmd2cygpKTsKKyAgYXJncy5BZGRBcmd1bWVudChmaWx0ZXJfZmxhZy5jX3N0cigpKTsK
KyAgYXJncy5BZGRBcmd1bWVudChpbnRlcm5hbF9mbGFnLmNfc3RyKCkpOworCisgIC8vIEJ1aWxk
IHRoZSBwaXBlIGZvciBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGNoaWxkLgorICB6eF9zdGF0dXNf
dCBzdGF0dXM7CisgIHp4X2hhbmRsZV90IGNoaWxkX3BpcGVfaGFuZGxlOworICB1aW50MzJfdCB0
eXBlOworICBzdGF0dXMgPSBmZGlvX3BpcGVfaGFsZigmY2hpbGRfcGlwZV9oYW5kbGUsICZ0eXBl
KTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhdHVzID49IDApOworICBzZXRfcmVhZF9m
ZChzdGF0dXMpOworCisgIC8vIFNldCB0aGUgcGlwZSBoYW5kbGUgZm9yIHRoZSBjaGlsZC4KKyAg
ZmRpb19zcGF3bl9hY3Rpb25fdCBhZGRfaGFuZGxlX2FjdGlvbiA9IHt9OworICBhZGRfaGFuZGxl
X2FjdGlvbi5hY3Rpb24gPSBGRElPX1NQQVdOX0FDVElPTl9BRERfSEFORExFOworICBhZGRfaGFu
ZGxlX2FjdGlvbi5oLmlkID0gUEFfSE5EKHR5cGUsIGtGdWNoc2lhUmVhZFBpcGVGZCk7CisgIGFk
ZF9oYW5kbGVfYWN0aW9uLmguaGFuZGxlID0gY2hpbGRfcGlwZV9oYW5kbGU7CisKKyAgLy8gU3Bh
d24gdGhlIGNoaWxkIHByb2Nlc3MuCisgIHN0YXR1cyA9IGZkaW9fc3Bhd25fZXRjKFpYX0hBTkRM
RV9JTlZBTElELCBGRElPX1NQQVdOX0NMT05FX0FMTCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXJncy5Bcmd2KClbMF0sIGFyZ3MuQXJndigpLCBudWxscHRyLCAxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAmYWRkX2hhbmRsZV9hY3Rpb24sICZjaGlsZF9wcm9jZXNzXywgbnVsbHB0
cik7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1cyA9PSBaWF9PSyk7CisKKyAgLy8g
Q3JlYXRlIGFuIGV4Y2VwdGlvbiBwb3J0IGFuZCBhdHRhY2ggaXQgdG8gdGhlIHxjaGlsZF9wcm9j
ZXNzX3wsIHRvIGFsbG93CisgIC8vIHVzIHRvIHN1cHByZXNzIHRoZSBzeXN0ZW0gZGVmYXVsdCBl
eGNlcHRpb24gaGFuZGxlciBmcm9tIGZpcmluZy4KKyAgc3RhdHVzID0genhfcG9ydF9jcmVhdGUo
MCwgJnBvcnRfKTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhdHVzID09IFpYX09LKTsK
KyAgc3RhdHVzID0genhfdGFza19iaW5kX2V4Y2VwdGlvbl9wb3J0KAorICAgICAgY2hpbGRfcHJv
Y2Vzc18sIHBvcnRfLCAwIC8qIGtleSAqLywgMCAvKm9wdGlvbnMgKi8pOworICBHVEVTVF9ERUFU
SF9URVNUX0NIRUNLXyhzdGF0dXMgPT0gWlhfT0spOworCisgIHNldF9zcGF3bmVkKHRydWUpOwor
ICByZXR1cm4gT1ZFUlNFRV9URVNUOworfQorCisjZWxzZSAgLy8gV2UgYXJlIG5laXRoZXIgb24g
V2luZG93cywgbm9yIG9uIEZ1Y2hzaWEuCiAKIC8vIEZvcmtpbmdEZWF0aFRlc3QgcHJvdmlkZXMg
aW1wbGVtZW50YXRpb25zIGZvciBtb3N0IG9mIHRoZSBhYnN0cmFjdAogLy8gbWV0aG9kcyBvZiB0
aGUgRGVhdGhUZXN0IGludGVyZmFjZS4gIE9ubHkgdGhlIEFzc3VtZVJvbGUgbWV0aG9kIGlzCkBA
IC03NjgsNiArMTA3Nyw3IEBAIERlYXRoVGVzdDo6VGVzdFJvbGUgTm9FeGVjRGVhdGhUZXN0OjpB
c3N1bWVSb2xlKCkgewogICAgIC8vIEV2ZW50IGZvcndhcmRpbmcgdG8gdGhlIGxpc3RlbmVycyBv
ZiBldmVudCBsaXN0ZW5lciBBUEkgbXVzaCBiZSBzaHV0CiAgICAgLy8gZG93biBpbiBkZWF0aCB0
ZXN0IHN1YnByb2Nlc3Nlcy4KICAgICBHZXRVbml0VGVzdEltcGwoKS0+bGlzdGVuZXJzKCktPlN1
cHByZXNzRXZlbnRGb3J3YXJkaW5nKCk7CisgICAgZ19pbl9mYXN0X2RlYXRoX3Rlc3RfY2hpbGQg
PSB0cnVlOwogICAgIHJldHVybiBFWEVDVVRFX1RFU1Q7CiAgIH0gZWxzZSB7CiAgICAgR1RFU1Rf
REVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhjbG9zZShwaXBlX2ZkWzFdKSk7CkBAIC03ODcsNiAr
MTA5NywxNSBAQCBjbGFzcyBFeGVjRGVhdGhUZXN0IDogcHVibGljIEZvcmtpbmdEZWF0aFRlc3Qg
ewogICAgICAgRm9ya2luZ0RlYXRoVGVzdChhX3N0YXRlbWVudCwgYV9yZWdleCksIGZpbGVfKGZp
bGUpLCBsaW5lXyhsaW5lKSB7IH0KICAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCk7CiAg
cHJpdmF0ZToKKyAgc3RhdGljIDo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdldEFyZ3ZzRm9y
RGVhdGhUZXN0Q2hpbGRQcm9jZXNzKCkgeworICAgIDo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
IGFyZ3MgPSBHZXRJbmplY3RhYmxlQXJndnMoKTsKKyMgIGlmIGRlZmluZWQoR1RFU1RfRVhUUkFf
REVBVEhfVEVTVF9DT01NQU5EX0xJTkVfQVJHU18pCisgICAgOjpzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4gZXh0cmFfYXJncyA9CisgICAgICAgIEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ09NTUFO
RF9MSU5FX0FSR1NfKCk7CisgICAgYXJncy5pbnNlcnQoYXJncy5lbmQoKSwgZXh0cmFfYXJncy5i
ZWdpbigpLCBleHRyYV9hcmdzLmVuZCgpKTsKKyMgIGVuZGlmICAvLyBkZWZpbmVkKEdURVNUX0VY
VFJBX0RFQVRIX1RFU1RfQ09NTUFORF9MSU5FX0FSR1NfKQorICAgIHJldHVybiBhcmdzOworICB9
CiAgIC8vIFRoZSBuYW1lIG9mIHRoZSBmaWxlIGluIHdoaWNoIHRoZSBkZWF0aCB0ZXN0IGlzIGxv
Y2F0ZWQuCiAgIGNvbnN0IGNoYXIqIGNvbnN0IGZpbGVfOwogICAvLyBUaGUgbGluZSBudW1iZXIg
b24gd2hpY2ggdGhlIGRlYXRoIHRlc3QgaXMgbG9jYXRlZC4KQEAgLTgyMSw2ICsxMTQwLDcgQEAg
Y2xhc3MgQXJndW1lbnRzIHsKICAgY2hhciogY29uc3QqIEFyZ3YoKSB7CiAgICAgcmV0dXJuICZh
cmdzX1swXTsKICAgfQorCiAgcHJpdmF0ZToKICAgc3RkOjp2ZWN0b3I8Y2hhcio+IGFyZ3NfOwog
fTsKQEAgLTgzMiw2ICsxMTUyLDIxIEBAIHN0cnVjdCBFeGVjRGVhdGhUZXN0QXJncyB7CiAgIGlu
dCBjbG9zZV9mZDsgICAgICAgLy8gRmlsZSBkZXNjcmlwdG9yIHRvIGNsb3NlOyB0aGUgcmVhZCBl
bmQgb2YgYSBwaXBlCiB9OwogCisjICBpZiBHVEVTVF9PU19NQUMKK2lubGluZSBjaGFyKiogR2V0
RW52aXJvbigpIHsKKyAgLy8gV2hlbiBHb29nbGUgVGVzdCBpcyBidWlsdCBhcyBhIGZyYW1ld29y
ayBvbiBNYWNPUyBYLCB0aGUgZW52aXJvbiB2YXJpYWJsZQorICAvLyBpcyB1bmF2YWlsYWJsZS4g
QXBwbGUncyBkb2N1bWVudGF0aW9uIChtYW4gZW52aXJvbikgcmVjb21tZW5kcyB1c2luZworICAv
LyBfTlNHZXRFbnZpcm9uKCkgaW5zdGVhZC4KKyAgcmV0dXJuICpfTlNHZXRFbnZpcm9uKCk7Cit9
CisjICBlbHNlCisvLyBTb21lIFBPU0lYIHBsYXRmb3JtcyBleHBlY3QgeW91IHRvIGRlY2xhcmUg
ZW52aXJvbi4gZXh0ZXJuICJDIiBtYWtlcworLy8gaXQgcmVzaWRlIGluIHRoZSBnbG9iYWwgbmFt
ZXNwYWNlLgorZXh0ZXJuICJDIiBjaGFyKiogZW52aXJvbjsKK2lubGluZSBjaGFyKiogR2V0RW52
aXJvbigpIHsgcmV0dXJuIGVudmlyb247IH0KKyMgIGVuZGlmICAvLyBHVEVTVF9PU19NQUMKKwor
IyAgaWYgIUdURVNUX09TX1FOWAogLy8gVGhlIG1haW4gZnVuY3Rpb24gZm9yIGEgdGhyZWFkc2Fm
ZS1zdHlsZSBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nlc3MuCiAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNh
bGxlZCBpbiBhIGNsb25lKCktZWQgcHJvY2VzcyBhbmQgdGh1cyBtdXN0IGF2b2lkCiAvLyBhbnkg
cG90ZW50aWFsbHkgdW5zYWZlIG9wZXJhdGlvbnMgbGlrZSBtYWxsb2Mgb3IgbGliYyBmdW5jdGlv
bnMuCkBAIC04NDYsOSArMTE4MSw4IEBAIHN0YXRpYyBpbnQgRXhlY0RlYXRoVGVzdENoaWxkTWFp
bih2b2lkKiBjaGlsZF9hcmcpIHsKICAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmln
aW5hbF93b3JraW5nX2RpcigpOwogICAvLyBXZSBjYW4gc2FmZWx5IGNhbGwgY2hkaXIoKSBhcyBp
dCdzIGEgZGlyZWN0IHN5c3RlbSBjYWxsLgogICBpZiAoY2hkaXIob3JpZ2luYWxfZGlyKSAhPSAw
KSB7Ci0gICAgRGVhdGhUZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQoImNoZGlyKFwiJXNcIikgZmFp
bGVkOiAlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxfZGly
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2NyaXB0
aW9uKCkuY19zdHIoKSkpOworICAgIERlYXRoVGVzdEFib3J0KHN0ZDo6c3RyaW5nKCJjaGRpcihc
IiIpICsgb3JpZ2luYWxfZGlyICsgIlwiKSBmYWlsZWQ6ICIgKworICAgICAgICAgICAgICAgICAg
IEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkpOwogICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAg
IH0KIApAQCAtODU3LDQwICsxMTkxLDk3IEBAIHN0YXRpYyBpbnQgRXhlY0RlYXRoVGVzdENoaWxk
TWFpbih2b2lkKiBjaGlsZF9hcmcpIHsKICAgLy8gdW5zYWZlLiAgU2luY2UgZXhlY3ZlKCkgZG9l
c24ndCBzZWFyY2ggdGhlIFBBVEgsIHRoZSB1c2VyIG11c3QKICAgLy8gaW52b2tlIHRoZSB0ZXN0
IHByb2dyYW0gdmlhIGEgdmFsaWQgcGF0aCB0aGF0IGNvbnRhaW5zIGF0IGxlYXN0CiAgIC8vIG9u
ZSBwYXRoIHNlcGFyYXRvci4KLSAgLy8gV2UgaGF2ZSByZXBsYWNlZCBleGVjdmUoKSB3aXRoIGV4
ZWN2KCkgZm9yIFdlYktpdCB0byBhdm9pZCB1c2luZwotICAvLyBlbnZpcm9uLiBJdCBzaG91bGQg
YmUgc2FmZSBiZWNhdXNlIGV4ZWN2KCkgaXMganVzdCBhIHNpbXBsZSB3cmFwcGVyCi0gIC8vIG9m
IGV4ZWN2ZSgpLgotICBleGVjdihhcmdzLT5hcmd2WzBdLCBhcmdzLT5hcmd2KTsKLSAgRGVhdGhU
ZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQoImV4ZWN2KCVzLCAuLi4pIGluICVzIGZhaWxlZDogJXMi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLT5hcmd2WzBdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbF9kaXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkuY19zdHIoKSkpOworICBl
eGVjdmUoYXJncy0+YXJndlswXSwgYXJncy0+YXJndiwgR2V0RW52aXJvbigpKTsKKyAgRGVhdGhU
ZXN0QWJvcnQoc3RkOjpzdHJpbmcoImV4ZWN2ZSgiKSArIGFyZ3MtPmFyZ3ZbMF0gKyAiLCAuLi4p
IGluICIgKworICAgICAgICAgICAgICAgICBvcmlnaW5hbF9kaXIgKyAiIGZhaWxlZDogIiArCisg
ICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkpOwogICByZXR1cm4gRVhJ
VF9GQUlMVVJFOwogfQorIyAgZW5kaWYgIC8vICFHVEVTVF9PU19RTlgKIAorIyAgaWYgR1RFU1Rf
SEFTX0NMT05FCiAvLyBUd28gdXRpbGl0eSByb3V0aW5lcyB0aGF0IHRvZ2V0aGVyIGRldGVybWlu
ZSB0aGUgZGlyZWN0aW9uIHRoZSBzdGFjawogLy8gZ3Jvd3MuCiAvLyBUaGlzIGNvdWxkIGJlIGFj
Y29tcGxpc2hlZCBtb3JlIGVsZWdhbnRseSBieSBhIHNpbmdsZSByZWN1cnNpdmUKIC8vIGZ1bmN0
aW9uLCBidXQgd2Ugd2FudCB0byBndWFyZCBhZ2FpbnN0IHRoZSB1bmxpa2VseSBwb3NzaWJpbGl0
eSBvZgogLy8gYSBzbWFydCBjb21waWxlciBvcHRpbWl6aW5nIHRoZSByZWN1cnNpb24gYXdheS4K
LWJvb2wgU3RhY2tMb3dlclRoYW5BZGRyZXNzKGNvbnN0IHZvaWQqIHB0cikgeworLy8KKy8vIEdU
RVNUX05PX0lOTElORV8gaXMgcmVxdWlyZWQgdG8gcHJldmVudCBHQ0MgNC42IGZyb20gaW5saW5p
bmcKKy8vIFN0YWNrTG93ZXJUaGFuQWRkcmVzcyBpbnRvIFN0YWNrR3Jvd3NEb3duLCB3aGljaCB0
aGVuIGRvZXNuJ3QgZ2l2ZQorLy8gY29ycmVjdCBhbnN3ZXIuCitzdGF0aWMgdm9pZCBTdGFja0xv
d2VyVGhhbkFkZHJlc3MoY29uc3Qgdm9pZCogcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wqIHJlc3VsdCkgR1RFU1RfTk9fSU5MSU5FXzsKK3N0YXRpYyB2b2lkIFN0
YWNrTG93ZXJUaGFuQWRkcmVzcyhjb25zdCB2b2lkKiBwdHIsIGJvb2wqIHJlc3VsdCkgewogICBp
bnQgZHVtbXk7Ci0gIHJldHVybiAmZHVtbXkgPCBwdHI7CisgICpyZXN1bHQgPSAoJmR1bW15IDwg
cHRyKTsKIH0KIAotYm9vbCBTdGFja0dyb3dzRG93bigpIHsKKy8vIE1ha2Ugc3VyZSBBZGRyZXNz
U2FuaXRpemVyIGRvZXMgbm90IHRhbXBlciB3aXRoIHRoZSBzdGFjayBoZXJlLgorR1RFU1RfQVRU
UklCVVRFX05PX1NBTklUSVpFX0FERFJFU1NfCitzdGF0aWMgYm9vbCBTdGFja0dyb3dzRG93bigp
IHsKICAgaW50IGR1bW15OwotICByZXR1cm4gU3RhY2tMb3dlclRoYW5BZGRyZXNzKCZkdW1teSk7
CisgIGJvb2wgcmVzdWx0OworICBTdGFja0xvd2VyVGhhbkFkZHJlc3MoJmR1bW15LCAmcmVzdWx0
KTsKKyAgcmV0dXJuIHJlc3VsdDsKIH0KLQotLy8gQSB0aHJlYWRzYWZlIGltcGxlbWVudGF0aW9u
IG9mIGZvcmsoMikgZm9yIHRocmVhZHNhZmUtc3R5bGUgZGVhdGggdGVzdHMKLS8vIHRoYXQgdXNl
cyBjbG9uZSgyKS4gIEl0IGRpZXMgd2l0aCBhbiBlcnJvciBtZXNzYWdlIGlmIGFueXRoaW5nIGdv
ZXMKLS8vIHdyb25nLgotc3RhdGljIHBpZF90IEV4ZWNEZWF0aFRlc3RGb3JrKGNoYXIqIGNvbnN0
KiBhcmd2LCBpbnQgY2xvc2VfZmQpIHsKKyMgIGVuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUKKwor
Ly8gU3Bhd25zIGEgY2hpbGQgcHJvY2VzcyB3aXRoIHRoZSBzYW1lIGV4ZWN1dGFibGUgYXMgdGhl
IGN1cnJlbnQgcHJvY2VzcyBpbgorLy8gYSB0aHJlYWQtc2FmZSBtYW5uZXIgYW5kIGluc3RydWN0
cyBpdCB0byBydW4gdGhlIGRlYXRoIHRlc3QuICBUaGUKKy8vIGltcGxlbWVudGF0aW9uIHVzZXMg
Zm9yaygyKSArIGV4ZWMuICBPbiBzeXN0ZW1zIHdoZXJlIGNsb25lKDIpIGlzCisvLyBhdmFpbGFi
bGUsIGl0IGlzIHVzZWQgaW5zdGVhZCwgYmVpbmcgc2xpZ2h0bHkgbW9yZSB0aHJlYWQtc2FmZS4g
IE9uIFFOWCwKKy8vIGZvcmsgc3VwcG9ydHMgb25seSBzaW5nbGUtdGhyZWFkZWQgZW52aXJvbm1l
bnRzLCBzbyB0aGlzIGZ1bmN0aW9uIHVzZXMKKy8vIHNwYXduKDIpIHRoZXJlIGluc3RlYWQuICBU
aGUgZnVuY3Rpb24gZGllcyB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaWYKKy8vIGFueXRoaW5nIGdv
ZXMgd3JvbmcuCitzdGF0aWMgcGlkX3QgRXhlY0RlYXRoVGVzdFNwYXduQ2hpbGQoY2hhciogY29u
c3QqIGFyZ3YsIGludCBjbG9zZV9mZCkgewogICBFeGVjRGVhdGhUZXN0QXJncyBhcmdzID0geyBh
cmd2LCBjbG9zZV9mZCB9OwogICBwaWRfdCBjaGlsZF9waWQgPSAtMTsKIAotI2lmIEdURVNUX0hB
U19DTE9ORQorIyAgaWYgR1RFU1RfT1NfUU5YCisgIC8vIE9idGFpbnMgdGhlIGN1cnJlbnQgZGly
ZWN0b3J5IGFuZCBzZXRzIGl0IHRvIGJlIGNsb3NlZCBpbiB0aGUgY2hpbGQKKyAgLy8gcHJvY2Vz
cy4KKyAgY29uc3QgaW50IGN3ZF9mZCA9IG9wZW4oIi4iLCBPX1JET05MWSk7CisgIEdURVNUX0RF
QVRIX1RFU1RfQ0hFQ0tfKGN3ZF9mZCAhPSAtMSk7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tf
U1lTQ0FMTF8oZmNudGwoY3dkX2ZkLCBGX1NFVEZELCBGRF9DTE9FWEVDKSk7CisgIC8vIFdlIG5l
ZWQgdG8gZXhlY3V0ZSB0aGUgdGVzdCBwcm9ncmFtIGluIHRoZSBzYW1lIGVudmlyb25tZW50IHdo
ZXJlCisgIC8vIGl0IHdhcyBvcmlnaW5hbGx5IGludm9rZWQuICBUaGVyZWZvcmUgd2UgY2hhbmdl
IHRvIHRoZSBvcmlnaW5hbAorICAvLyB3b3JraW5nIGRpcmVjdG9yeSBmaXJzdC4KKyAgY29uc3Qg
Y2hhciogY29uc3Qgb3JpZ2luYWxfZGlyID0KKyAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgp
LT5vcmlnaW5hbF93b3JraW5nX2RpcigpOworICAvLyBXZSBjYW4gc2FmZWx5IGNhbGwgY2hkaXIo
KSBhcyBpdCdzIGEgZGlyZWN0IHN5c3RlbSBjYWxsLgorICBpZiAoY2hkaXIob3JpZ2luYWxfZGly
KSAhPSAwKSB7CisgICAgRGVhdGhUZXN0QWJvcnQoc3RkOjpzdHJpbmcoImNoZGlyKFwiIikgKyBv
cmlnaW5hbF9kaXIgKyAiXCIpIGZhaWxlZDogIiArCisgICAgICAgICAgICAgICAgICAgR2V0TGFz
dEVycm5vRGVzY3JpcHRpb24oKSk7CisgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgfQorCisg
IGludCBmZF9mbGFnczsKKyAgLy8gU2V0IGNsb3NlX2ZkIHRvIGJlIGNsb3NlZCBhZnRlciBzcGF3
bi4KKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhmZF9mbGFncyA9IGZjbnRsKGNs
b3NlX2ZkLCBGX0dFVEZEKSk7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oZmNu
dGwoY2xvc2VfZmQsIEZfU0VURkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmRfZmxhZ3MgfCBGRF9DTE9FWEVDKSk7CisgIHN0cnVjdCBpbmhlcml0YW5jZSBpbmhl
cml0ID0gezB9OworICAvLyBzcGF3biBpcyBhIHN5c3RlbSBjYWxsLgorICBjaGlsZF9waWQgPSBz
cGF3bihhcmdzLmFyZ3ZbMF0sIDAsIE5VTEwsICZpbmhlcml0LCBhcmdzLmFyZ3YsIEdldEVudmly
b24oKSk7CisgIC8vIFJlc3RvcmVzIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorICBH
VEVTVF9ERUFUSF9URVNUX0NIRUNLXyhmY2hkaXIoY3dkX2ZkKSAhPSAtMSk7CisgIEdURVNUX0RF
QVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oY2xvc2UoY3dkX2ZkKSk7CisKKyMgIGVsc2UgICAvLyBH
VEVTVF9PU19RTlgKKyMgICBpZiBHVEVTVF9PU19MSU5VWAorICAvLyBXaGVuIGEgU0lHUFJPRiBz
aWduYWwgaXMgcmVjZWl2ZWQgd2hpbGUgZm9yaygpIG9yIGNsb25lKCkgYXJlIGV4ZWN1dGluZywK
KyAgLy8gdGhlIHByb2Nlc3MgbWF5IGhhbmcuIFRvIGF2b2lkIHRoaXMsIHdlIGlnbm9yZSBTSUdQ
Uk9GIGhlcmUgYW5kIHJlLWVuYWJsZQorICAvLyBpdCBhZnRlciB0aGUgY2FsbCB0byBmb3JrKCkv
Y2xvbmUoKSBpcyBjb21wbGV0ZS4KKyAgc3RydWN0IHNpZ2FjdGlvbiBzYXZlZF9zaWdwcm9mX2Fj
dGlvbjsKKyAgc3RydWN0IHNpZ2FjdGlvbiBpZ25vcmVfc2lncHJvZl9hY3Rpb247CisgIG1lbXNl
dCgmaWdub3JlX3NpZ3Byb2ZfYWN0aW9uLCAwLCBzaXplb2YoaWdub3JlX3NpZ3Byb2ZfYWN0aW9u
KSk7CisgIHNpZ2VtcHR5c2V0KCZpZ25vcmVfc2lncHJvZl9hY3Rpb24uc2FfbWFzayk7CisgIGln
bm9yZV9zaWdwcm9mX2FjdGlvbi5zYV9oYW5kbGVyID0gU0lHX0lHTjsKKyAgR1RFU1RfREVBVEhf
VEVTVF9DSEVDS19TWVNDQUxMXyhzaWdhY3Rpb24oCisgICAgICBTSUdQUk9GLCAmaWdub3JlX3Np
Z3Byb2ZfYWN0aW9uLCAmc2F2ZWRfc2lncHJvZl9hY3Rpb24pKTsKKyMgICBlbmRpZiAgLy8gR1RF
U1RfT1NfTElOVVgKKworIyAgIGlmIEdURVNUX0hBU19DTE9ORQogICBjb25zdCBib29sIHVzZV9m
b3JrID0gR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKTsKIAogICBpZiAoIXVzZV9mb3Jr
KSB7CkBAIC05MDAsMjEgKzEyOTEsMzcgQEAgc3RhdGljIHBpZF90IEV4ZWNEZWF0aFRlc3RGb3Jr
KGNoYXIqIGNvbnN0KiBhcmd2LCBpbnQgY2xvc2VfZmQpIHsKICAgICB2b2lkKiBjb25zdCBzdGFj
ayA9IG1tYXAoTlVMTCwgc3RhY2tfc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTUFQX0FOT04gfCBNQVBfUFJJVkFURSwgLTEsIDApOwog
ICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YWNrICE9IE1BUF9GQUlMRUQpOworCisgICAg
Ly8gTWF4aW11bSBzdGFjayBhbGlnbm1lbnQgaW4gYnl0ZXM6ICBGb3IgYSBkb3dud2FyZC1ncm93
aW5nIHN0YWNrLCB0aGlzCisgICAgLy8gYW1vdW50IGlzIHN1YnRyYWN0ZWQgZnJvbSBzaXplIG9m
IHRoZSBzdGFjayBzcGFjZSB0byBnZXQgYW4gYWRkcmVzcworICAgIC8vIHRoYXQgaXMgd2l0aGlu
IHRoZSBzdGFjayBzcGFjZSBhbmQgaXMgYWxpZ25lZCBvbiBhbGwgc3lzdGVtcyB3ZSBjYXJlCisg
ICAgLy8gYWJvdXQuICBBcyBmYXIgYXMgSSBrbm93IHRoZXJlIGlzIG5vIEFCSSB3aXRoIHN0YWNr
IGFsaWdubWVudCBncmVhdGVyCisgICAgLy8gdGhhbiA2NC4gIFdlIGFzc3VtZSBzdGFjayBhbmQg
c3RhY2tfc2l6ZSBhbHJlYWR5IGhhdmUgYWxpZ25tZW50IG9mCisgICAgLy8ga01heFN0YWNrQWxp
Z25tZW50LgorICAgIGNvbnN0IHNpemVfdCBrTWF4U3RhY2tBbGlnbm1lbnQgPSA2NDsKICAgICB2
b2lkKiBjb25zdCBzdGFja190b3AgPQotICAgICAgICBzdGF0aWNfY2FzdDxjaGFyKj4oc3RhY2sp
ICsgKHN0YWNrX2dyb3dzX2Rvd24gPyBzdGFja19zaXplIDogMCk7CisgICAgICAgIHN0YXRpY19j
YXN0PGNoYXIqPihzdGFjaykgKworICAgICAgICAgICAgKHN0YWNrX2dyb3dzX2Rvd24gPyBzdGFj
a19zaXplIC0ga01heFN0YWNrQWxpZ25tZW50IDogMCk7CisgICAgR1RFU1RfREVBVEhfVEVTVF9D
SEVDS18oc3RhY2tfc2l6ZSA+IGtNYXhTdGFja0FsaWdubWVudCAmJgorICAgICAgICByZWludGVy
cHJldF9jYXN0PGludHB0cl90PihzdGFja190b3ApICUga01heFN0YWNrQWxpZ25tZW50ID09IDAp
OwogCiAgICAgY2hpbGRfcGlkID0gY2xvbmUoJkV4ZWNEZWF0aFRlc3RDaGlsZE1haW4sIHN0YWNr
X3RvcCwgU0lHQ0hMRCwgJmFyZ3MpOwogCiAgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18obXVu
bWFwKHN0YWNrLCBzdGFja19zaXplKSAhPSAtMSk7CiAgIH0KLSNlbHNlCisjICAgZWxzZQogICBj
b25zdCBib29sIHVzZV9mb3JrID0gdHJ1ZTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NMT05FCisj
ICAgZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORQogCiAgIGlmICh1c2VfZm9yayAmJiAoY2hpbGRf
cGlkID0gZm9yaygpKSA9PSAwKSB7CiAgICAgICBFeGVjRGVhdGhUZXN0Q2hpbGRNYWluKCZhcmdz
KTsKICAgICAgIF9leGl0KDApOwogICB9CisjICBlbmRpZiAgLy8gR1RFU1RfT1NfUU5YCisjICBp
ZiBHVEVTVF9PU19MSU5VWAorICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKAorICAg
ICAgc2lnYWN0aW9uKFNJR1BST0YsICZzYXZlZF9zaWdwcm9mX2FjdGlvbiwgTlVMTCkpOworIyAg
ZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCiAKICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oY2hp
bGRfcGlkICE9IC0xKTsKICAgcmV0dXJuIGNoaWxkX3BpZDsKQEAgLTk0MiwxNiArMTM0OSwxNiBA
QCBEZWF0aFRlc3Q6OlRlc3RSb2xlIEV4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAgIC8v
IGl0IGJlIGNsb3NlZCB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGRvZXMgYW4gZXhlYzoKICAgR1RF
U1RfREVBVEhfVEVTVF9DSEVDS18oZmNudGwocGlwZV9mZFsxXSwgRl9TRVRGRCwgMCkgIT0gLTEp
OwogCi0gIGNvbnN0IFN0cmluZyBmaWx0ZXJfZmxhZyA9Ci0gICAgICBTdHJpbmc6OkZvcm1hdCgi
LS0lcyVzPSVzLiVzIiwKLSAgICAgICAgICAgICAgICAgICAgIEdURVNUX0ZMQUdfUFJFRklYXywg
a0ZpbHRlckZsYWcsCi0gICAgICAgICAgICAgICAgICAgICBpbmZvLT50ZXN0X2Nhc2VfbmFtZSgp
LCBpbmZvLT5uYW1lKCkpOwotICBjb25zdCBTdHJpbmcgaW50ZXJuYWxfZmxhZyA9Ci0gICAgICBT
dHJpbmc6OkZvcm1hdCgiLS0lcyVzPSVzfCVkfCVkfCVkIiwKLSAgICAgICAgICAgICAgICAgICAg
IEdURVNUX0ZMQUdfUFJFRklYXywga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZywKLSAgICAgICAg
ICAgICAgICAgICAgIGZpbGVfLCBsaW5lXywgZGVhdGhfdGVzdF9pbmRleCwgcGlwZV9mZFsxXSk7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbHRlcl9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCIt
LSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsga0ZpbHRlckZsYWcgKyAiPSIKKyAgICAgICsgaW5m
by0+dGVzdF9jYXNlX25hbWUoKSArICIuIiArIGluZm8tPm5hbWUoKTsKKyAgY29uc3Qgc3RkOjpz
dHJpbmcgaW50ZXJuYWxfZmxhZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0iKSArIEdURVNUX0ZM
QUdfUFJFRklYXyArIGtJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcgKyAiPSIKKyAgICAgICsgZmls
ZV8gKyAifCIgKyBTdHJlYW1hYmxlVG9TdHJpbmcobGluZV8pICsgInwiCisgICAgICArIFN0cmVh
bWFibGVUb1N0cmluZyhkZWF0aF90ZXN0X2luZGV4KSArICJ8IgorICAgICAgKyBTdHJlYW1hYmxl
VG9TdHJpbmcocGlwZV9mZFsxXSk7CiAgIEFyZ3VtZW50cyBhcmdzOwotICBhcmdzLkFkZEFyZ3Vt
ZW50cyhHZXRBcmd2cygpKTsKKyAgYXJncy5BZGRBcmd1bWVudHMoR2V0QXJndnNGb3JEZWF0aFRl
c3RDaGlsZFByb2Nlc3MoKSk7CiAgIGFyZ3MuQWRkQXJndW1lbnQoZmlsdGVyX2ZsYWcuY19zdHIo
KSk7CiAgIGFyZ3MuQWRkQXJndW1lbnQoaW50ZXJuYWxfZmxhZy5jX3N0cigpKTsKIApAQCAtOTYy
LDcgKzEzNjksNyBAQCBEZWF0aFRlc3Q6OlRlc3RSb2xlIEV4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJv
bGUoKSB7CiAgIC8vIGlzIG5lY2Vzc2FyeS4KICAgRmx1c2hJbmZvTG9nKCk7CiAKLSAgY29uc3Qg
cGlkX3QgY2hpbGRfcGlkID0gRXhlY0RlYXRoVGVzdEZvcmsoYXJncy5Bcmd2KCksIHBpcGVfZmRb
MF0pOworICBjb25zdCBwaWRfdCBjaGlsZF9waWQgPSBFeGVjRGVhdGhUZXN0U3Bhd25DaGlsZChh
cmdzLkFyZ3YoKSwgcGlwZV9mZFswXSk7CiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FM
TF8oY2xvc2UocGlwZV9mZFsxXSkpOwogICBzZXRfY2hpbGRfcGlkKGNoaWxkX3BpZCk7CiAgIHNl
dF9yZWFkX2ZkKHBpcGVfZmRbMF0pOwpAQCAtOTcwLDcgKzEzNzcsNyBAQCBEZWF0aFRlc3Q6OlRl
c3RSb2xlIEV4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAgIHJldHVybiBPVkVSU0VFX1RF
U1Q7CiB9CiAKLSNlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vICFHVEVT
VF9PU19XSU5ET1dTCiAKIC8vIENyZWF0ZXMgYSBjb25jcmV0ZSBEZWF0aFRlc3QtZGVyaXZlZCBj
bGFzcyB0aGF0IGRlcGVuZHMgb24gdGhlCiAvLyAtLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgZmxh
ZywgYW5kIHNldHMgdGhlIHBvaW50ZXIgcG9pbnRlZCB0bwpAQCAtOTg4LDkgKzEzOTUsMTAgQEAg
Ym9vbCBEZWZhdWx0RGVhdGhUZXN0RmFjdG9yeTo6Q3JlYXRlKGNvbnN0IGNoYXIqIHN0YXRlbWVu
dCwgY29uc3QgUkUqIHJlZ2V4LAogCiAgIGlmIChmbGFnICE9IE5VTEwpIHsKICAgICBpZiAoZGVh
dGhfdGVzdF9pbmRleCA+IGZsYWctPmluZGV4KCkpIHsKLSAgICAgIERlYXRoVGVzdDo6c2V0X2xh
c3RfZGVhdGhfdGVzdF9tZXNzYWdlKFN0cmluZzo6Rm9ybWF0KAotICAgICAgICAgICJEZWF0aCB0
ZXN0IGNvdW50ICglZCkgc29tZWhvdyBleGNlZWRlZCBleHBlY3RlZCBtYXhpbXVtICglZCkiLAot
ICAgICAgICAgIGRlYXRoX3Rlc3RfaW5kZXgsIGZsYWctPmluZGV4KCkpKTsKKyAgICAgIERlYXRo
VGVzdDo6c2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKAorICAgICAgICAgICJEZWF0aCB0ZXN0
IGNvdW50ICgiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGRlYXRoX3Rlc3RfaW5kZXgpCisgICAgICAg
ICAgKyAiKSBzb21laG93IGV4Y2VlZGVkIGV4cGVjdGVkIG1heGltdW0gKCIKKyAgICAgICAgICAr
IFN0cmVhbWFibGVUb1N0cmluZyhmbGFnLT5pbmRleCgpKSArICIpIik7CiAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCkBAIC0xMDAxLDY0ICsxNDA5LDU2IEBAIGJvb2wgRGVmYXVsdERlYXRo
VGVzdEZhY3Rvcnk6OkNyZWF0ZShjb25zdCBjaGFyKiBzdGF0ZW1lbnQsIGNvbnN0IFJFKiByZWdl
eCwKICAgICB9CiAgIH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lO
RE9XUworCiAgIGlmIChHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZl
IiB8fAogICAgICAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAiZmFzdCIpIHsKICAg
ICAqdGVzdCA9IG5ldyBXaW5kb3dzRGVhdGhUZXN0KHN0YXRlbWVudCwgcmVnZXgsIGZpbGUsIGxp
bmUpOwogICB9Ci0jZWxzZQorCisjIGVsaWYgR1RFU1RfT1NfRlVDSFNJQQorCisgIGlmIChHVEVT
VF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZlIiB8fAorICAgICAgR1RFU1Rf
RkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAiZmFzdCIpIHsKKyAgICAqdGVzdCA9IG5ldyBGdWNo
c2lhRGVhdGhUZXN0KHN0YXRlbWVudCwgcmVnZXgsIGZpbGUsIGxpbmUpOworICB9CisKKyMgZWxz
ZQorCiAgIGlmIChHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZlIikg
ewogICAgICp0ZXN0ID0gbmV3IEV4ZWNEZWF0aFRlc3Qoc3RhdGVtZW50LCByZWdleCwgZmlsZSwg
bGluZSk7CiAgIH0gZWxzZSBpZiAoR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAiZmFz
dCIpIHsKICAgICAqdGVzdCA9IG5ldyBOb0V4ZWNEZWF0aFRlc3Qoc3RhdGVtZW50LCByZWdleCk7
CiAgIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjIGVuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCisKICAgZWxzZSB7ICAvLyBOT0xJTlQgLSB0aGlzIGlzIG1vcmUgcmVhZGFibGUg
dGhhbiB1bmJhbGFuY2VkIGJyYWNrZXRzIGluc2lkZSAjaWYuCi0gICAgRGVhdGhUZXN0OjpzZXRf
bGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICJVbmtub3du
IGRlYXRoIHRlc3Qgc3R5bGUgXCIlc1wiIGVuY291bnRlcmVkIiwKLSAgICAgICAgR1RFU1RfRkxB
RyhkZWF0aF90ZXN0X3N0eWxlKS5jX3N0cigpKSk7CisgICAgRGVhdGhUZXN0OjpzZXRfbGFzdF9k
ZWF0aF90ZXN0X21lc3NhZ2UoCisgICAgICAgICJVbmtub3duIGRlYXRoIHRlc3Qgc3R5bGUgXCIi
ICsgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKQorICAgICAgICArICJcIiBlbmNvdW50ZXJl
ZCIpOwogICAgIHJldHVybiBmYWxzZTsKICAgfQogCiAgIHJldHVybiB0cnVlOwogfQogCi0vLyBT
cGxpdHMgYSBnaXZlbiBzdHJpbmcgb24gYSBnaXZlbiBkZWxpbWl0ZXIsIHBvcHVsYXRpbmcgYSBn
aXZlbgotLy8gdmVjdG9yIHdpdGggdGhlIGZpZWxkcy4gIEdURVNUX0hBU19ERUFUSF9URVNUIGlt
cGxpZXMgdGhhdCB3ZSBoYXZlCi0vLyA6OnN0ZDo6c3RyaW5nLCBzbyB3ZSBjYW4gdXNlIGl0IGhl
cmUuCi1zdGF0aWMgdm9pZCBTcGxpdFN0cmluZyhjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIsIGNo
YXIgZGVsaW1pdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6OnZlY3RvcjwgOjpz
dGQ6OnN0cmluZz4qIGRlc3QpIHsKLSAgOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4gcGFy
c2VkOwotICA6OnN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgcG9zID0gMDsKLSAgd2hpbGUgKDo6dGVz
dGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgewotICAgIGNvbnN0IDo6c3RkOjpzdHJpbmc6
OnNpemVfdHlwZSBjb2xvbiA9IHN0ci5maW5kKGRlbGltaXRlciwgcG9zKTsKLSAgICBpZiAoY29s
b24gPT0gOjpzdGQ6OnN0cmluZzo6bnBvcykgewotICAgICAgcGFyc2VkLnB1c2hfYmFjayhzdHIu
c3Vic3RyKHBvcykpOwotICAgICAgYnJlYWs7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHBhcnNlZC5w
dXNoX2JhY2soc3RyLnN1YnN0cihwb3MsIGNvbG9uIC0gcG9zKSk7Ci0gICAgICBwb3MgPSBjb2xv
biArIDE7Ci0gICAgfQotICB9Ci0gIGRlc3QtPnN3YXAocGFyc2VkKTsKLX0KLQotI2lmIEdURVNU
X09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lORE9XUwogLy8gUmVjcmVhdGVzIHRoZSBwaXBl
IGFuZCBldmVudCBoYW5kbGVzIGZyb20gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMsCiAvLyBzaWdu
YWxzIHRoZSBldmVudCwgYW5kIHJldHVybnMgYSBmaWxlIGRlc2NyaXB0b3Igd3JhcHBlZCBhcm91
bmQgdGhlIHBpcGUKIC8vIGhhbmRsZS4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gdGhlIGNo
aWxkIHByb2Nlc3Mgb25seS4KLWludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBp
bnQgcGFyZW50X3Byb2Nlc3NfaWQsCitzdGF0aWMgaW50IEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9y
KHVuc2lnbmVkIGludCBwYXJlbnRfcHJvY2Vzc19pZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgZXZlbnRfaGFuZGxlX2FzX3NpemVfdCkgewogICBBdXRvSGFuZGxlIHBh
cmVudF9wcm9jZXNzX2hhbmRsZSg6Ok9wZW5Qcm9jZXNzKFBST0NFU1NfRFVQX0hBTkRMRSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCAg
Ly8gTm9uLWluaGVyaXRhYmxlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyZW50X3Byb2Nlc3NfaWQpKTsKICAgaWYgKHBhcmVudF9wcm9jZXNz
X2hhbmRsZS5HZXQoKSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgIERlYXRoVGVzdEFi
b3J0KFN0cmluZzo6Rm9ybWF0KCJVbmFibGUgdG8gb3BlbiBwYXJlbnQgcHJvY2VzcyAldSIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50X3Byb2Nlc3NfaWQpKTsKKyAg
ICBEZWF0aFRlc3RBYm9ydCgiVW5hYmxlIHRvIG9wZW4gcGFyZW50IHByb2Nlc3MgIiArCisgICAg
ICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHBhcmVudF9wcm9jZXNzX2lkKSk7CiAg
IH0KIAotICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBSZXBsYWNlIHRoZSBmb2xsb3dpbmcg
Y2hlY2sgd2l0aCBhCisgIC8vIEZJWE1FOiBSZXBsYWNlIHRoZSBmb2xsb3dpbmcgY2hlY2sgd2l0
aCBhCiAgIC8vIGNvbXBpbGUtdGltZSBhc3NlcnRpb24gd2hlbiBhdmFpbGFibGUuCiAgIEdURVNU
X0NIRUNLXyhzaXplb2YoSEFORExFKSA8PSBzaXplb2Yoc2l6ZV90KSk7CiAKQEAgLTEwNjYsNyAr
MTQ2Niw3IEBAIGludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBpbnQgcGFyZW50
X3Byb2Nlc3NfaWQsCiAgICAgICByZWludGVycHJldF9jYXN0PEhBTkRMRT4od3JpdGVfaGFuZGxl
X2FzX3NpemVfdCk7CiAgIEhBTkRMRSBkdXBfd3JpdGVfaGFuZGxlOwogCi0gIC8vIFRoZSBuZXds
eSBpbml0aWFsaXplZCBoYW5kbGUgaXMgYWNjZXNzaWJsZSBvbmx5IGluIGluIHRoZSBwYXJlbnQK
KyAgLy8gVGhlIG5ld2x5IGluaXRpYWxpemVkIGhhbmRsZSBpcyBhY2Nlc3NpYmxlIG9ubHkgaW4g
dGhlIHBhcmVudAogICAvLyBwcm9jZXNzLiBUbyBvYnRhaW4gb25lIGFjY2Vzc2libGUgd2l0aGlu
IHRoZSBjaGlsZCwgd2UgbmVlZCB0byB1c2UKICAgLy8gRHVwbGljYXRlSGFuZGxlLgogICBpZiAo
ITo6RHVwbGljYXRlSGFuZGxlKHBhcmVudF9wcm9jZXNzX2hhbmRsZS5HZXQoKSwgd3JpdGVfaGFu
ZGxlLApAQCAtMTA3NSw5ICsxNDc1LDEwIEBAIGludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1
bnNpZ25lZCBpbnQgcGFyZW50X3Byb2Nlc3NfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MgaXMgdXNlZC4KICAgICAgICAgICAgICAg
ICAgICAgICAgICBGQUxTRSwgIC8vIFJlcXVlc3Qgbm9uLWluaGVyaXRhYmxlIGhhbmRsZXIuCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFVQTElDQVRFX1NBTUVfQUNDRVNTKSkgewotICAgIERl
YXRoVGVzdEFib3J0KFN0cmluZzo6Rm9ybWF0KAotICAgICAgICAiVW5hYmxlIHRvIGR1cGxpY2F0
ZSB0aGUgcGlwZSBoYW5kbGUgJUl1IGZyb20gdGhlIHBhcmVudCBwcm9jZXNzICV1IiwKLSAgICAg
ICAgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCwgcGFyZW50X3Byb2Nlc3NfaWQpKTsKKyAgICBEZWF0
aFRlc3RBYm9ydCgiVW5hYmxlIHRvIGR1cGxpY2F0ZSB0aGUgcGlwZSBoYW5kbGUgIiArCisgICAg
ICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHdyaXRlX2hhbmRsZV9hc19zaXplX3Qp
ICsKKyAgICAgICAgICAgICAgICAgICAiIGZyb20gdGhlIHBhcmVudCBwcm9jZXNzICIgKworICAg
ICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhwYXJlbnRfcHJvY2Vzc19pZCkpOwog
ICB9CiAKICAgY29uc3QgSEFORExFIGV2ZW50X2hhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFO
RExFPihldmVudF9oYW5kbGVfYXNfc2l6ZV90KTsKQEAgLTEwODgsMTcgKzE0ODksMTggQEAgaW50
IEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9yKHVuc2lnbmVkIGludCBwYXJlbnRfcHJvY2Vzc19pZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
RkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgRFVQTElDQVRFX1NBTUVfQUNDRVNTKSkg
ewotICAgIERlYXRoVGVzdEFib3J0KFN0cmluZzo6Rm9ybWF0KAotICAgICAgICAiVW5hYmxlIHRv
IGR1cGxpY2F0ZSB0aGUgZXZlbnQgaGFuZGxlICVJdSBmcm9tIHRoZSBwYXJlbnQgcHJvY2VzcyAl
dSIsCi0gICAgICAgIGV2ZW50X2hhbmRsZV9hc19zaXplX3QsIHBhcmVudF9wcm9jZXNzX2lkKSk7
CisgICAgRGVhdGhUZXN0QWJvcnQoIlVuYWJsZSB0byBkdXBsaWNhdGUgdGhlIGV2ZW50IGhhbmRs
ZSAiICsKKyAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcoZXZlbnRfaGFuZGxl
X2FzX3NpemVfdCkgKworICAgICAgICAgICAgICAgICAgICIgZnJvbSB0aGUgcGFyZW50IHByb2Nl
c3MgIiArCisgICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHBhcmVudF9wcm9j
ZXNzX2lkKSk7CiAgIH0KIAogICBjb25zdCBpbnQgd3JpdGVfZmQgPQogICAgICAgOjpfb3Blbl9v
c2ZoYW5kbGUocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oZHVwX3dyaXRlX2hhbmRsZSksIE9f
QVBQRU5EKTsKICAgaWYgKHdyaXRlX2ZkID09IC0xKSB7Ci0gICAgRGVhdGhUZXN0QWJvcnQoU3Ry
aW5nOjpGb3JtYXQoCi0gICAgICAgICJVbmFibGUgdG8gY29udmVydCBwaXBlIGhhbmRsZSAlSXUg
dG8gYSBmaWxlIGRlc2NyaXB0b3IiLAotICAgICAgICB3cml0ZV9oYW5kbGVfYXNfc2l6ZV90KSk7
CisgICAgRGVhdGhUZXN0QWJvcnQoIlVuYWJsZSB0byBjb252ZXJ0IHBpcGUgaGFuZGxlICIgKwor
ICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh3cml0ZV9oYW5kbGVfYXNfc2l6
ZV90KSArCisgICAgICAgICAgICAgICAgICAgIiB0byBhIGZpbGUgZGVzY3JpcHRvciIpOwogICB9
CiAKICAgLy8gU2lnbmFscyB0aGUgcGFyZW50IHRoYXQgdGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlw
ZSBoYXMgYmVlbiBhY3F1aXJlZApAQCAtMTEwNyw3ICsxNTA5LDcgQEAgaW50IEdldFN0YXR1c0Zp
bGVEZXNjcmlwdG9yKHVuc2lnbmVkIGludCBwYXJlbnRfcHJvY2Vzc19pZCwKIAogICByZXR1cm4g
d3JpdGVfZmQ7CiB9Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MKIAogLy8gUmV0dXJucyBhIG5ld2x5IGNyZWF0ZWQgSW50ZXJuYWxSdW5E
ZWF0aFRlc3RGbGFnIG9iamVjdCB3aXRoIGZpZWxkcwogLy8gaW5pdGlhbGl6ZWQgZnJvbSB0aGUg
R1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkgZmxhZyBpZgpAQCAtMTEyMyw3ICsx
NTI1LDggQEAgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBQYXJzZUludGVybmFsUnVuRGVhdGhU
ZXN0RmxhZygpIHsKICAgU3BsaXRTdHJpbmcoR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhf
dGVzdCkuY19zdHIoKSwgJ3wnLCAmZmllbGRzKTsKICAgaW50IHdyaXRlX2ZkID0gLTE7CiAKLSNp
ZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKwogICB1bnNpZ25lZCBp
bnQgcGFyZW50X3Byb2Nlc3NfaWQgPSAwOwogICBzaXplX3Qgd3JpdGVfaGFuZGxlX2FzX3NpemVf
dCA9IDA7CiAgIHNpemVfdCBldmVudF9oYW5kbGVfYXNfc2l6ZV90ID0gMDsKQEAgLTExMzQsMjMg
KzE1MzcsMzQgQEAgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBQYXJzZUludGVybmFsUnVuRGVh
dGhUZXN0RmxhZygpIHsKICAgICAgIHx8ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmllbGRzWzNdLCAm
cGFyZW50X3Byb2Nlc3NfaWQpCiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1s0
XSwgJndyaXRlX2hhbmRsZV9hc19zaXplX3QpCiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVy
KGZpZWxkc1s1XSwgJmV2ZW50X2hhbmRsZV9hc19zaXplX3QpKSB7Ci0gICAgRGVhdGhUZXN0QWJv
cnQoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICJCYWQgLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVh
dGhfdGVzdCBmbGFnOiAlcyIsCi0gICAgICAgIEdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRo
X3Rlc3QpLmNfc3RyKCkpKTsKKyAgICBEZWF0aFRlc3RBYm9ydCgiQmFkIC0tZ3Rlc3RfaW50ZXJu
YWxfcnVuX2RlYXRoX3Rlc3QgZmxhZzogIiArCisgICAgICAgICAgICAgICAgICAgR1RFU1RfRkxB
RyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkpOwogICB9CiAgIHdyaXRlX2ZkID0gR2V0U3RhdHVz
RmlsZURlc2NyaXB0b3IocGFyZW50X3Byb2Nlc3NfaWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBldmVudF9oYW5kbGVfYXNfc2l6ZV90KTsKLSNlbHNlCisKKyMg
ZWxpZiBHVEVTVF9PU19GVUNIU0lBCisKKyAgaWYgKGZpZWxkcy5zaXplKCkgIT0gMworICAgICAg
fHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVsZHNbMV0sICZsaW5lKQorICAgICAgfHwgIVBhcnNl
TmF0dXJhbE51bWJlcihmaWVsZHNbMl0sICZpbmRleCkpIHsKKyAgICBEZWF0aFRlc3RBYm9ydCgi
QmFkIC0tZ3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QgZmxhZzogIgorICAgICAgICArIEdU
RVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpKTsKKyAgfQorCisjIGVsc2UKKwogICBp
ZiAoZmllbGRzLnNpemUoKSAhPSA0CiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxk
c1sxXSwgJmxpbmUpCiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1syXSwgJmlu
ZGV4KQogICAgICAgfHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVsZHNbM10sICZ3cml0ZV9mZCkp
IHsKLSAgICBEZWF0aFRlc3RBYm9ydChTdHJpbmc6OkZvcm1hdCgKLSAgICAgICAgIkJhZCAtLWd0
ZXN0X2ludGVybmFsX3J1bl9kZWF0aF90ZXN0IGZsYWc6ICVzIiwKLSAgICAgICAgR1RFU1RfRkxB
RyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkuY19zdHIoKSkpOworICAgIERlYXRoVGVzdEFib3J0
KCJCYWQgLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFnOiAiCisgICAgICAgICsg
R1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkpOwogICB9Ci0jZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCiAgIHJldHVy
biBuZXcgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKGZpZWxkc1swXSwgbGluZSwgaW5kZXgsIHdy
aXRlX2ZkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0
ZXN0LWZpbGVwYXRoLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWZpbGVw
YXRoLmNjCmluZGV4IGMxZWY5MTg4YWQ4NWFiOGEwNDdhMzNiZjk5NDVlMWNkMGNjNzNlZmYuLmE3
ZTY1YzA4MmE3NWZjNmZiMDM4YTAyM2Q1YjFkM2UwOWU0NzlmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1maWxlcGF0aC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtZmlsZXBhdGguY2MKQEAgLTI2LDM5ICsyNiwzOCBAQAog
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcnM6IGtlaXRoLnJheUBnbWFpbC5jb20gKEtlaXRoIFJheSkKIAotI2luY2x1ZGUgPGd0ZXN0
L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgiCiAK
ICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0
LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgogCiAjaWYgR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUKLSNpbmNsdWRlIDx3aW5kb3dzLmg+CisjIGluY2x1ZGUgPHdpbmRvd3MuaD4K
ICNlbGlmIEdURVNUX09TX1dJTkRPV1MKLSNpbmNsdWRlIDxkaXJlY3QuaD4KLSNpbmNsdWRlIDxp
by5oPgorIyBpbmNsdWRlIDxkaXJlY3QuaD4KKyMgaW5jbHVkZSA8aW8uaD4KICNlbGlmIEdURVNU
X09TX1NZTUJJQU4KIC8vIFN5bWJpYW4gT3BlbkMgaGFzIFBBVEhfTUFYIGluIHN5cy9zeXNsaW1p
dHMuaAotI2luY2x1ZGUgPHN5cy9zeXNsaW1pdHMuaD4KKyMgaW5jbHVkZSA8c3lzL3N5c2xpbWl0
cy5oPgogI2Vsc2UKLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxjbGltaXRzPiAgLy8g
U29tZSBMaW51eCBkaXN0cmlidXRpb25zIGRlZmluZSBQQVRIX01BWCBoZXJlLgorIyBpbmNsdWRl
IDxsaW1pdHMuaD4KKyMgaW5jbHVkZSA8Y2xpbWl0cz4gIC8vIFNvbWUgTGludXggZGlzdHJpYnV0
aW9ucyBkZWZpbmUgUEFUSF9NQVggaGVyZS4KICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKIAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgorCiAjaWYg
R1RFU1RfT1NfV0lORE9XUwotI2RlZmluZSBHVEVTVF9QQVRIX01BWF8gX01BWF9QQVRICisjIGRl
ZmluZSBHVEVTVF9QQVRIX01BWF8gX01BWF9QQVRICiAjZWxpZiBkZWZpbmVkKFBBVEhfTUFYKQot
I2RlZmluZSBHVEVTVF9QQVRIX01BWF8gUEFUSF9NQVgKKyMgZGVmaW5lIEdURVNUX1BBVEhfTUFY
XyBQQVRIX01BWAogI2VsaWYgZGVmaW5lZChfWE9QRU5fUEFUSF9NQVgpCi0jZGVmaW5lIEdURVNU
X1BBVEhfTUFYXyBfWE9QRU5fUEFUSF9NQVgKKyMgZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBfWE9Q
RU5fUEFUSF9NQVgKICNlbHNlCi0jZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBfUE9TSVhfUEFUSF9N
QVgKKyMgZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBfUE9TSVhfUEFUSF9NQVgKICNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUwogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5n
Lmg+Ci0KIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKQEAgLTY5
LDIxICs2OCwxOSBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogLy8gb2YgdGhlbS4KIGNvbnN0IGNo
YXIga1BhdGhTZXBhcmF0b3IgPSAnXFwnOwogY29uc3QgY2hhciBrQWx0ZXJuYXRlUGF0aFNlcGFy
YXRvciA9ICcvJzsKLWNvbnN0IGNoYXIga1BhdGhTZXBhcmF0b3JTdHJpbmdbXSA9ICJcXCI7CiBj
b25zdCBjaGFyIGtBbHRlcm5hdGVQYXRoU2VwYXJhdG9yU3RyaW5nW10gPSAiLyI7Ci0jaWYgR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIC8vIFdp
bmRvd3MgQ0UgZG9lc24ndCBoYXZlIGEgY3VycmVudCBkaXJlY3RvcnkuIFlvdSBzaG91bGQgbm90
IHVzZQogLy8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGluIHRlc3RzIG9uIFdpbmRvd3MgQ0UsIGJ1
dCB0aGlzIGF0IGxlYXN0CiAvLyBwcm92aWRlcyBhIHJlYXNvbmFibGUgZmFsbGJhY2suCiBjb25z
dCBjaGFyIGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nW10gPSAiXFwiOwogLy8gV2luZG93cyBDRSBk
b2Vzbid0IGRlZmluZSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUwogY29uc3QgRFdPUkQga0ludmFs
aWRGaWxlQXR0cmlidXRlcyA9IDB4ZmZmZmZmZmY7Ci0jZWxzZQorIyBlbHNlCiBjb25zdCBjaGFy
IGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nW10gPSAiLlxcIjsKLSNlbmRpZiAgLy8gR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAjZWxz
ZQogY29uc3QgY2hhciBrUGF0aFNlcGFyYXRvciA9ICcvJzsKLWNvbnN0IGNoYXIga1BhdGhTZXBh
cmF0b3JTdHJpbmdbXSA9ICIvIjsKIGNvbnN0IGNoYXIga0N1cnJlbnREaXJlY3RvcnlTdHJpbmdb
XSA9ICIuLyI7CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIApAQCAtOTgsNyArOTUsNyBA
QCBzdGF0aWMgYm9vbCBJc1BhdGhTZXBhcmF0b3IoY2hhciBjKSB7CiAKIC8vIFJldHVybnMgdGhl
IGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksIG9yICIiIGlmIHVuc3VjY2Vzc2Z1bC4KIEZpbGVQ
YXRoIEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkgewotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9C
SUxFCisjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgfHwgR1RFU1RfT1NfV0lORE9XU19QSE9O
RSB8fCBHVEVTVF9PU19XSU5ET1dTX1JUCiAgIC8vIFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlIGEg
Y3VycmVudCBkaXJlY3RvcnksIHNvIHdlIGp1c3QgcmV0dXJuCiAgIC8vIHNvbWV0aGluZyByZWFz
b25hYmxlLgogICByZXR1cm4gRmlsZVBhdGgoa0N1cnJlbnREaXJlY3RvcnlTdHJpbmcpOwpAQCAt
MTA3LDcgKzEwNCwxNCBAQCBGaWxlUGF0aCBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpIHsKICAg
cmV0dXJuIEZpbGVQYXRoKF9nZXRjd2QoY3dkLCBzaXplb2YoY3dkKSkgPT0gTlVMTCA/ICIiIDog
Y3dkKTsKICNlbHNlCiAgIGNoYXIgY3dkW0dURVNUX1BBVEhfTUFYXyArIDFdID0geyAnXDAnIH07
Ci0gIHJldHVybiBGaWxlUGF0aChnZXRjd2QoY3dkLCBzaXplb2YoY3dkKSkgPT0gTlVMTCA/ICIi
IDogY3dkKTsKKyAgY2hhciogcmVzdWx0ID0gZ2V0Y3dkKGN3ZCwgc2l6ZW9mKGN3ZCkpOworIyBp
ZiBHVEVTVF9PU19OQUNMCisgIC8vIGdldGN3ZCB3aWxsIGxpa2VseSBmYWlsIGluIE5hQ2wgZHVl
IHRvIHRoZSBzYW5kYm94LCBzbyByZXR1cm4gc29tZXRoaW5nCisgIC8vIHJlYXNvbmFibGUuIFRo
ZSB1c2VyIG1heSBoYXZlIHByb3ZpZGVkIGEgc2hpbSBpbXBsZW1lbnRhdGlvbiBmb3IgZ2V0Y3dk
LAorICAvLyBob3dldmVyLCBzbyBmYWxsYmFjayBvbmx5IHdoZW4gZmFpbHVyZSBpcyBkZXRlY3Rl
ZC4KKyAgcmV0dXJuIEZpbGVQYXRoKHJlc3VsdCA9PSBOVUxMID8ga0N1cnJlbnREaXJlY3RvcnlT
dHJpbmcgOiBjd2QpOworIyBlbmRpZiAgLy8gR1RFU1RfT1NfTkFDTAorICByZXR1cm4gRmlsZVBh
dGgocmVzdWx0ID09IE5VTEwgPyAiIiA6IGN3ZCk7CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCiB9CiAKQEAgLTExNiwxNCArMTIwLDE1IEBAIEZpbGVQYXRoIEZpbGVQYXRoOjpH
ZXRDdXJyZW50RGlyKCkgewogLy8gRmlsZVBhdGgoImRpci9maWxlIikuIElmIGEgY2FzZS1pbnNl
bnNpdGl2ZSBleHRlbnNpb24gaXMgbm90CiAvLyBmb3VuZCwgcmV0dXJucyBhIGNvcHkgb2YgdGhl
IG9yaWdpbmFsIEZpbGVQYXRoLgogRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZUV4dGVuc2lvbihj
b25zdCBjaGFyKiBleHRlbnNpb24pIGNvbnN0IHsKLSAgU3RyaW5nIGRvdF9leHRlbnNpb24oU3Ry
aW5nOjpGb3JtYXQoIi4lcyIsIGV4dGVuc2lvbikpOwotICBpZiAocGF0aG5hbWVfLkVuZHNXaXRo
Q2FzZUluc2Vuc2l0aXZlKGRvdF9leHRlbnNpb24uY19zdHIoKSkpIHsKLSAgICByZXR1cm4gRmls
ZVBhdGgoU3RyaW5nKHBhdGhuYW1lXy5jX3N0cigpLCBwYXRobmFtZV8ubGVuZ3RoKCkgLSA0KSk7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGRvdF9leHRlbnNpb24gPSBzdGQ6OnN0cmluZygiLiIpICsg
ZXh0ZW5zaW9uOworICBpZiAoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZShwYXRobmFt
ZV8sIGRvdF9leHRlbnNpb24pKSB7CisgICAgcmV0dXJuIEZpbGVQYXRoKHBhdGhuYW1lXy5zdWJz
dHIoCisgICAgICAgIDAsIHBhdGhuYW1lXy5sZW5ndGgoKSAtIGRvdF9leHRlbnNpb24ubGVuZ3Ro
KCkpKTsKICAgfQogICByZXR1cm4gKnRoaXM7CiB9CiAKLS8vIFJldHVybnMgYSBwb2ludGVyIHRv
IHRoZSBsYXN0IG9jY3VyZW5jZSBvZiBhIHZhbGlkIHBhdGggc2VwYXJhdG9yIGluCisvLyBSZXR1
cm5zIGEgcG9pbnRlciB0byB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIGEgdmFsaWQgcGF0aCBzZXBh
cmF0b3IgaW4KIC8vIHRoZSBGaWxlUGF0aC4gT24gV2luZG93cywgZm9yIGV4YW1wbGUsIGJvdGgg
Jy8nIGFuZCAnXCcgYXJlIHZhbGlkIHBhdGgKIC8vIHNlcGFyYXRvcnMuIFJldHVybnMgTlVMTCBp
ZiBubyBwYXRoIHNlcGFyYXRvciB3YXMgZm91bmQuCiBjb25zdCBjaGFyKiBGaWxlUGF0aDo6Rmlu
ZExhc3RQYXRoU2VwYXJhdG9yKCkgY29uc3QgewpAQCAtMTQ3LDcgKzE1Miw3IEBAIGNvbnN0IGNo
YXIqIEZpbGVQYXRoOjpGaW5kTGFzdFBhdGhTZXBhcmF0b3IoKSBjb25zdCB7CiAvLyBPbiBXaW5k
b3dzIHBsYXRmb3JtLCAnXCcgaXMgdGhlIHBhdGggc2VwYXJhdG9yLCBvdGhlcndpc2UgaXQgaXMg
Jy8nLgogRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZURpcmVjdG9yeU5hbWUoKSBjb25zdCB7CiAg
IGNvbnN0IGNoYXIqIGNvbnN0IGxhc3Rfc2VwID0gRmluZExhc3RQYXRoU2VwYXJhdG9yKCk7Ci0g
IHJldHVybiBsYXN0X3NlcCA/IEZpbGVQYXRoKFN0cmluZyhsYXN0X3NlcCArIDEpKSA6ICp0aGlz
OworICByZXR1cm4gbGFzdF9zZXAgPyBGaWxlUGF0aChsYXN0X3NlcCArIDEpIDogKnRoaXM7CiB9
CiAKIC8vIFJlbW92ZUZpbGVOYW1lIHJldHVybnMgdGhlIGRpcmVjdG9yeSBwYXRoIHdpdGggdGhl
IGZpbGVuYW1lIHJlbW92ZWQuCkBAIC0xNTgsOSArMTYzLDkgQEAgRmlsZVBhdGggRmlsZVBhdGg6
OlJlbW92ZURpcmVjdG9yeU5hbWUoKSBjb25zdCB7CiAvLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCAn
XCcgaXMgdGhlIHBhdGggc2VwYXJhdG9yLCBvdGhlcndpc2UgaXQgaXMgJy8nLgogRmlsZVBhdGgg
RmlsZVBhdGg6OlJlbW92ZUZpbGVOYW1lKCkgY29uc3QgewogICBjb25zdCBjaGFyKiBjb25zdCBs
YXN0X3NlcCA9IEZpbmRMYXN0UGF0aFNlcGFyYXRvcigpOwotICBTdHJpbmcgZGlyOworICBzdGQ6
OnN0cmluZyBkaXI7CiAgIGlmIChsYXN0X3NlcCkgewotICAgIGRpciA9IFN0cmluZyhjX3N0cigp
LCBsYXN0X3NlcCArIDEgLSBjX3N0cigpKTsKKyAgICBkaXIgPSBzdGQ6OnN0cmluZyhjX3N0cigp
LCBsYXN0X3NlcCArIDEgLSBjX3N0cigpKTsKICAgfSBlbHNlIHsKICAgICBkaXIgPSBrQ3VycmVu
dERpcmVjdG9yeVN0cmluZzsKICAgfQpAQCAtMTc3LDExICsxODIsMTIgQEAgRmlsZVBhdGggRmls
ZVBhdGg6Ok1ha2VGaWxlTmFtZShjb25zdCBGaWxlUGF0aCYgZGlyZWN0b3J5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGaWxlUGF0aCYgYmFzZV9uYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtYmVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHRlbnNpb24pIHsKLSAgU3RyaW5nIGZpbGU7Cisg
IHN0ZDo6c3RyaW5nIGZpbGU7CiAgIGlmIChudW1iZXIgPT0gMCkgewotICAgIGZpbGUgPSBTdHJp
bmc6OkZvcm1hdCgiJXMuJXMiLCBiYXNlX25hbWUuY19zdHIoKSwgZXh0ZW5zaW9uKTsKKyAgICBm
aWxlID0gYmFzZV9uYW1lLnN0cmluZygpICsgIi4iICsgZXh0ZW5zaW9uOwogICB9IGVsc2Ugewot
ICAgIGZpbGUgPSBTdHJpbmc6OkZvcm1hdCgiJXNfJWQuJXMiLCBiYXNlX25hbWUuY19zdHIoKSwg
bnVtYmVyLCBleHRlbnNpb24pOworICAgIGZpbGUgPSBiYXNlX25hbWUuc3RyaW5nKCkgKyAiXyIg
KyBTdHJlYW1hYmxlVG9TdHJpbmcobnVtYmVyKQorICAgICAgICArICIuIiArIGV4dGVuc2lvbjsK
ICAgfQogICByZXR1cm4gQ29uY2F0UGF0aHMoZGlyZWN0b3J5LCBGaWxlUGF0aChmaWxlKSk7CiB9
CkBAIC0xOTMsOCArMTk5LDcgQEAgRmlsZVBhdGggRmlsZVBhdGg6OkNvbmNhdFBhdGhzKGNvbnN0
IEZpbGVQYXRoJiBkaXJlY3RvcnksCiAgIGlmIChkaXJlY3RvcnkuSXNFbXB0eSgpKQogICAgIHJl
dHVybiByZWxhdGl2ZV9wYXRoOwogICBjb25zdCBGaWxlUGF0aCBkaXIoZGlyZWN0b3J5LlJlbW92
ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpKTsKLSAgcmV0dXJuIEZpbGVQYXRoKFN0cmluZzo6Rm9y
bWF0KCIlcyVjJXMiLCBkaXIuY19zdHIoKSwga1BhdGhTZXBhcmF0b3IsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZV9wYXRoLmNfc3RyKCkpKTsKKyAgcmV0dXJuIEZp
bGVQYXRoKGRpci5zdHJpbmcoKSArIGtQYXRoU2VwYXJhdG9yICsgcmVsYXRpdmVfcGF0aC5zdHJp
bmcoKSk7CiB9CiAKIC8vIFJldHVybnMgdHJ1ZSBpZiBwYXRobmFtZSBkZXNjcmliZXMgc29tZXRo
aW5nIGZpbmRhYmxlIGluIHRoZSBmaWxlLXN5c3RlbSwKQEAgLTI0NSw3ICsyNTAsNyBAQCBib29s
IEZpbGVQYXRoOjpEaXJlY3RvcnlFeGlzdHMoKSBjb25zdCB7CiAvLyByb290IGRpcmVjdG9yeSBw
ZXIgZGlzayBkcml2ZS4pCiBib29sIEZpbGVQYXRoOjpJc1Jvb3REaXJlY3RvcnkoKSBjb25zdCB7
CiAjaWYgR1RFU1RfT1NfV0lORE9XUwotICAvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogb24gV2lu
ZG93cyBhIG5ldHdvcmsgc2hhcmUgbGlrZQorICAvLyBGSVhNRTogb24gV2luZG93cyBhIG5ldHdv
cmsgc2hhcmUgbGlrZQogICAvLyBcXHNlcnZlclxzaGFyZSBjYW4gYmUgYSByb290IGRpcmVjdG9y
eSwgYWx0aG91Z2ggaXQgY2Fubm90IGJlIHRoZQogICAvLyBjdXJyZW50IGRpcmVjdG9yeS4gIEhh
bmRsZSB0aGlzIHByb3Blcmx5LgogICByZXR1cm4gcGF0aG5hbWVfLmxlbmd0aCgpID09IDMgJiYg
SXNBYnNvbHV0ZVBhdGgoKTsKQEAgLTMzOCwxNCArMzQzLDE0IEBAIGJvb2wgRmlsZVBhdGg6OkNy
ZWF0ZUZvbGRlcigpIGNvbnN0IHsKIC8vIE9uIFdpbmRvd3MgcGxhdGZvcm0sIHVzZXMgXCBhcyB0
aGUgc2VwYXJhdG9yLCBvdGhlciBwbGF0Zm9ybXMgdXNlIC8uCiBGaWxlUGF0aCBGaWxlUGF0aDo6
UmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkgY29uc3QgewogICByZXR1cm4gSXNEaXJlY3Rv
cnkoKQotICAgICAgPyBGaWxlUGF0aChTdHJpbmcocGF0aG5hbWVfLmNfc3RyKCksIHBhdGhuYW1l
Xy5sZW5ndGgoKSAtIDEpKQorICAgICAgPyBGaWxlUGF0aChwYXRobmFtZV8uc3Vic3RyKDAsIHBh
dGhuYW1lXy5sZW5ndGgoKSAtIDEpKQogICAgICAgOiAqdGhpczsKIH0KIAogLy8gUmVtb3ZlcyBh
bnkgcmVkdW5kYW50IHNlcGFyYXRvcnMgdGhhdCBtaWdodCBiZSBpbiB0aGUgcGF0aG5hbWUuCiAv
LyBGb3IgZXhhbXBsZSwgImJhci8vL2ZvbyIgYmVjb21lcyAiYmFyL2ZvbyIuIERvZXMgbm90IGVs
aW1pbmF0ZSBvdGhlcgogLy8gcmVkdW5kYW5jaWVzIHRoYXQgbWlnaHQgYmUgaW4gYSBwYXRobmFt
ZSBpbnZvbHZpbmcgIi4iIG9yICIuLiIuCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogaGFuZGxl
IFdpbmRvd3MgbmV0d29yayBzaGFyZXMgKGUuZy4gXFxzZXJ2ZXJcc2hhcmUpLgorLy8gRklYTUU6
IGhhbmRsZSBXaW5kb3dzIG5ldHdvcmsgc2hhcmVzIChlLmcuIFxcc2VydmVyXHNoYXJlKS4KIHZv
aWQgRmlsZVBhdGg6Ok5vcm1hbGl6ZSgpIHsKICAgaWYgKHBhdGhuYW1lXy5jX3N0cigpID09IE5V
TEwpIHsKICAgICBwYXRobmFtZV8gPSAiIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaAppbmRleCAwMTQxNWY3ZDk1OWRjYTA3MDlmYWMxNzY2
MTBkYjczODhmNjA0NTU5Li40NzkwMDQxNDliNDhjMjg1NjRlMjA1ZTAyMTBjNmM0MzEwNDE4YjVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtaW50ZXJuYWwt
aW5sLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWludGVybmFsLWlu
bC5oCkBAIC0yNywyNiArMjcsMTUgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
IAotLy8gVXRpbGl0eSBmdW5jdGlvbnMgYW5kIGNsYXNzZXMgdXNlZCBieSB0aGUgR29vZ2xlIEMr
KyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFu
eW9uZyBXYW4pCi0vLworLy8gVXRpbGl0eSBmdW5jdGlvbnMgYW5kIGNsYXNzZXMgdXNlZCBieSB0
aGUgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4vLwogLy8gVGhpcyBmaWxlIGNvbnRhaW5z
IHB1cmVseSBHb29nbGUgVGVzdCdzIGludGVybmFsIGltcGxlbWVudGF0aW9uLiAgUGxlYXNlCiAv
LyBETyBOT1QgI0lOQ0xVREUgSVQgSU4gQSBVU0VSIFBST0dSQU0uCiAKICNpZm5kZWYgR1RFU1Rf
U1JDX0dURVNUX0lOVEVSTkFMX0lOTF9IXwogI2RlZmluZSBHVEVTVF9TUkNfR1RFU1RfSU5URVJO
QUxfSU5MX0hfCiAKLS8vIEdURVNUX0lNUExFTUVOVEFUSU9OXyBpcyBkZWZpbmVkIHRvIDEgaWZm
IHRoZSBjdXJyZW50IHRyYW5zbGF0aW9uIHVuaXQgaXMKLS8vIHBhcnQgb2YgR29vZ2xlIFRlc3Qn
cyBpbXBsZW1lbnRhdGlvbjsgb3RoZXJ3aXNlIGl0J3MgdW5kZWZpbmVkLgotI2lmICFHVEVTVF9J
TVBMRU1FTlRBVElPTl8KLS8vIEEgdXNlciBpcyB0cnlpbmcgdG8gaW5jbHVkZSB0aGlzIGZyb20g
aGlzIGNvZGUgLSBqdXN0IHNheSBuby4KLSNlcnJvciAiZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMg
cGFydCBvZiBHb29nbGUgVGVzdCdzIGludGVybmFsIGltcGxlbWVudGF0aW9uLiIKLSNlcnJvciAi
SXQgbXVzdCBub3QgYmUgaW5jbHVkZWQgZXhjZXB0IGJ5IEdvb2dsZSBUZXN0IGl0c2VsZi4iCi0j
ZW5kaWYgIC8vIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCiAjaWZuZGVmIF9XSU4zMl9XQ0UKLSNp
bmNsdWRlIDxlcnJuby5oPgorIyBpbmNsdWRlIDxlcnJuby5oPgogI2VuZGlmICAvLyAhX1dJTjMy
X1dDRQogI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPiAgLy8gRm9yIHN0
cnRvbGwvX3N0cnRvdWw2NC9tYWxsb2MvZnJlZS4KQEAgLTU2LDE0ICs0NSwyMiBAQAogI2luY2x1
ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5h
bC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgor
CisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworIyBpbmNsdWRlIDxhcnBhL2luZXQuaD4g
IC8vIE5PTElOVAorIyBpbmNsdWRlIDxuZXRkYi5oPiAgLy8gTk9MSU5UCisjZW5kaWYKIAogI2lm
IEdURVNUX09TX1dJTkRPV1MKLSNpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBGb3IgRFdPUkQuCisj
IGluY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5E
T1dTCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3Qtc3BpLmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC1zcGkuaCIKKworR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDI1MSBc
CisvKiBjbGFzcyBBIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2VkIGJ5IGNs
aWVudHMgb2YgY2xhc3MgQiAqLykKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC04OSwxMSAr
ODYsMTQgQEAgY29uc3QgY2hhciBrRmlsdGVyRmxhZ1tdID0gImZpbHRlciI7CiBjb25zdCBjaGFy
IGtMaXN0VGVzdHNGbGFnW10gPSAibGlzdF90ZXN0cyI7CiBjb25zdCBjaGFyIGtPdXRwdXRGbGFn
W10gPSAib3V0cHV0IjsKIGNvbnN0IGNoYXIga1ByaW50VGltZUZsYWdbXSA9ICJwcmludF90aW1l
IjsKK2NvbnN0IGNoYXIga1ByaW50VVRGOEZsYWdbXSA9ICJwcmludF91dGY4IjsKIGNvbnN0IGNo
YXIga1JhbmRvbVNlZWRGbGFnW10gPSAicmFuZG9tX3NlZWQiOwogY29uc3QgY2hhciBrUmVwZWF0
RmxhZ1tdID0gInJlcGVhdCI7CiBjb25zdCBjaGFyIGtTaHVmZmxlRmxhZ1tdID0gInNodWZmbGUi
OwogY29uc3QgY2hhciBrU3RhY2tUcmFjZURlcHRoRmxhZ1tdID0gInN0YWNrX3RyYWNlX2RlcHRo
IjsKK2NvbnN0IGNoYXIga1N0cmVhbVJlc3VsdFRvRmxhZ1tdID0gInN0cmVhbV9yZXN1bHRfdG8i
OwogY29uc3QgY2hhciBrVGhyb3dPbkZhaWx1cmVGbGFnW10gPSAidGhyb3dfb25fZmFpbHVyZSI7
Citjb25zdCBjaGFyIGtGbGFnZmlsZUZsYWdbXSA9ICJmbGFnZmlsZSI7CiAKIC8vIEEgdmFsaWQg
cmFuZG9tIHNlZWQgbXVzdCBiZSBpbiBbMSwga01heFJhbmRvbVNlZWRdLgogY29uc3QgaW50IGtN
YXhSYW5kb21TZWVkID0gOTk5OTk7CkBAIC0xMTEsNiArMTExLDEyIEBAIEdURVNUX0FQSV8gYm9v
bCBTaG91bGRVc2VDb2xvcihib29sIHN0ZG91dF9pc190dHkpOwogLy8gRm9ybWF0cyB0aGUgZ2l2
ZW4gdGltZSBpbiBtaWxsaXNlY29uZHMgYXMgc2Vjb25kcy4KIEdURVNUX0FQSV8gc3RkOjpzdHJp
bmcgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKFRpbWVJbk1pbGxpcyBtcyk7CiAKKy8vIENv
bnZlcnRzIHRoZSBnaXZlbiB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byBhIGRhdGUgc3RyaW5nIGlu
IHRoZSBJU08gODYwMQorLy8gZm9ybWF0LCB3aXRob3V0IHRoZSB0aW1lem9uZSBpbmZvcm1hdGlv
bi4gIE4uQi46IGR1ZSB0byB0aGUgdXNlIHRoZQorLy8gbm9uLXJlZW50cmFudCBsb2NhbHRpbWUo
KSBmdW5jdGlvbiwgdGhpcyBmdW5jdGlvbiBpcyBub3QgdGhyZWFkIHNhZmUuICBEbworLy8gbm90
IHVzZSBpdCBpbiBhbnkgY29kZSB0aGF0IGNhbiBiZSBjYWxsZWQgZnJvbSBtdWx0aXBsZSB0aHJl
YWRzLgorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNv
ODYwMShUaW1lSW5NaWxsaXMgbXMpOworCiAvLyBQYXJzZXMgYSBzdHJpbmcgZm9yIGFuIEludDMy
IGZsYWcsIGluIHRoZSBmb3JtIG9mICItLWZsYWc9dmFsdWUiLgogLy8KIC8vIE9uIHN1Y2Nlc3Ms
IHN0b3JlcyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcgaW4gKnZhbHVlLCBhbmQgcmV0dXJucwpAQCAt
MTYxLDEwICsxNjcsMTIgQEAgY2xhc3MgR1Rlc3RGbGFnU2F2ZXIgewogICAgIGxpc3RfdGVzdHNf
ID0gR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKTsKICAgICBvdXRwdXRfID0gR1RFU1RfRkxBRyhvdXRw
dXQpOwogICAgIHByaW50X3RpbWVfID0gR1RFU1RfRkxBRyhwcmludF90aW1lKTsKKyAgICBwcmlu
dF91dGY4XyA9IEdURVNUX0ZMQUcocHJpbnRfdXRmOCk7CiAgICAgcmFuZG9tX3NlZWRfID0gR1RF
U1RfRkxBRyhyYW5kb21fc2VlZCk7CiAgICAgcmVwZWF0XyA9IEdURVNUX0ZMQUcocmVwZWF0KTsK
ICAgICBzaHVmZmxlXyA9IEdURVNUX0ZMQUcoc2h1ZmZsZSk7CiAgICAgc3RhY2tfdHJhY2VfZGVw
dGhfID0gR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCk7CisgICAgc3RyZWFtX3Jlc3VsdF90
b18gPSBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pOwogICAgIHRocm93X29uX2ZhaWx1cmVf
ID0gR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKICAgfQogCkBAIC0xODEsNDEgKzE4OSw0
NCBAQCBjbGFzcyBHVGVzdEZsYWdTYXZlciB7CiAgICAgR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSA9
IGxpc3RfdGVzdHNfOwogICAgIEdURVNUX0ZMQUcob3V0cHV0KSA9IG91dHB1dF87CiAgICAgR1RF
U1RfRkxBRyhwcmludF90aW1lKSA9IHByaW50X3RpbWVfOworICAgIEdURVNUX0ZMQUcocHJpbnRf
dXRmOCkgPSBwcmludF91dGY4XzsKICAgICBHVEVTVF9GTEFHKHJhbmRvbV9zZWVkKSA9IHJhbmRv
bV9zZWVkXzsKICAgICBHVEVTVF9GTEFHKHJlcGVhdCkgPSByZXBlYXRfOwogICAgIEdURVNUX0ZM
QUcoc2h1ZmZsZSkgPSBzaHVmZmxlXzsKICAgICBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRo
KSA9IHN0YWNrX3RyYWNlX2RlcHRoXzsKKyAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8p
ID0gc3RyZWFtX3Jlc3VsdF90b187CiAgICAgR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9
IHRocm93X29uX2ZhaWx1cmVfOwogICB9CisKICBwcml2YXRlOgogICAvLyBGaWVsZHMgZm9yIHNh
dmluZyB0aGUgb3JpZ2luYWwgdmFsdWVzIG9mIGZsYWdzLgogICBib29sIGFsc29fcnVuX2Rpc2Fi
bGVkX3Rlc3RzXzsKICAgYm9vbCBicmVha19vbl9mYWlsdXJlXzsKICAgYm9vbCBjYXRjaF9leGNl
cHRpb25zXzsKLSAgU3RyaW5nIGNvbG9yXzsKLSAgU3RyaW5nIGRlYXRoX3Rlc3Rfc3R5bGVfOwor
ICBzdGQ6OnN0cmluZyBjb2xvcl87CisgIHN0ZDo6c3RyaW5nIGRlYXRoX3Rlc3Rfc3R5bGVfOwog
ICBib29sIGRlYXRoX3Rlc3RfdXNlX2ZvcmtfOwotICBTdHJpbmcgZmlsdGVyXzsKLSAgU3RyaW5n
IGludGVybmFsX3J1bl9kZWF0aF90ZXN0XzsKKyAgc3RkOjpzdHJpbmcgZmlsdGVyXzsKKyAgc3Rk
OjpzdHJpbmcgaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfOwogICBib29sIGxpc3RfdGVzdHNfOwot
ICBTdHJpbmcgb3V0cHV0XzsKKyAgc3RkOjpzdHJpbmcgb3V0cHV0XzsKICAgYm9vbCBwcmludF90
aW1lXzsKKyAgYm9vbCBwcmludF91dGY4XzsKICAgaW50ZXJuYWw6OkludDMyIHJhbmRvbV9zZWVk
XzsKICAgaW50ZXJuYWw6OkludDMyIHJlcGVhdF87CiAgIGJvb2wgc2h1ZmZsZV87CiAgIGludGVy
bmFsOjpJbnQzMiBzdGFja190cmFjZV9kZXB0aF87CisgIHN0ZDo6c3RyaW5nIHN0cmVhbV9yZXN1
bHRfdG9fOwogICBib29sIHRocm93X29uX2ZhaWx1cmVfOwogfSBHVEVTVF9BVFRSSUJVVEVfVU5V
U0VEXzsKIAogLy8gQ29udmVydHMgYSBVbmljb2RlIGNvZGUgcG9pbnQgdG8gYSBuYXJyb3cgc3Ry
aW5nIGluIFVURi04IGVuY29kaW5nLgogLy8gY29kZV9wb2ludCBwYXJhbWV0ZXIgaXMgb2YgdHlw
ZSBVSW50MzIgYmVjYXVzZSB3Y2hhcl90IG1heSBub3QgYmUKIC8vIHdpZGUgZW5vdWdoIHRvIGNv
bnRhaW4gYSBjb2RlIHBvaW50LgotLy8gVGhlIG91dHB1dCBidWZmZXIgc3RyIG11c3QgY29udGFp
bnQgYXQgbGVhc3QgMzIgY2hhcmFjdGVycy4KLS8vIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBh
ZGRyZXNzIG9mIHRoZSBvdXRwdXQgYnVmZmVyLgogLy8gSWYgdGhlIGNvZGVfcG9pbnQgaXMgbm90
IGEgdmFsaWQgVW5pY29kZSBjb2RlIHBvaW50Ci0vLyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNvZGUg
cmFuZ2UgVSswIHRvIFUrMTBGRkZGKSBpdCB3aWxsIGJlIG91dHB1dAotLy8gYXMgJyhJbnZhbGlk
IFVuaWNvZGUgMHhYWFhYWFhYWCknLgotR1RFU1RfQVBJXyBjaGFyKiBDb2RlUG9pbnRUb1V0Zjgo
VUludDMyIGNvZGVfcG9pbnQsIGNoYXIqIHN0cik7CisvLyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNv
ZGUgcmFuZ2UgVSswIHRvIFUrMTBGRkZGKSBpdCB3aWxsIGJlIGNvbnZlcnRlZAorLy8gdG8gIihJ
bnZhbGlkIFVuaWNvZGUgMHhYWFhYWFhYWCkiLgorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBDb2Rl
UG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQpOwogCiAvLyBDb252ZXJ0cyBhIHdpZGUgc3Ry
aW5nIHRvIGEgbmFycm93IHN0cmluZyBpbiBVVEYtOCBlbmNvZGluZy4KIC8vIFRoZSB3aWRlIHN0
cmluZyBpcyBhc3N1bWVkIHRvIGhhdmUgdGhlIGZvbGxvd2luZyBlbmNvZGluZzoKQEAgLTIzMCw3
ICsyNDEsNyBAQCBHVEVTVF9BUElfIGNoYXIqIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9w
b2ludCwgY2hhciogc3RyKTsKIC8vIGFzICcoSW52YWxpZCBVbmljb2RlIDB4WFhYWFhYWFgpJy4g
SWYgdGhlIHN0cmluZyBpcyBpbiBVVEYxNiBlbmNvZGluZwogLy8gYW5kIGNvbnRhaW5zIGludmFs
aWQgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycywgdmFsdWVzIGluIHRob3NlIHBhaXJzCiAvLyB3aWxs
IGJlIGVuY29kZWQgYXMgaW5kaXZpZHVhbCBVbmljb2RlIGNoYXJhY3RlcnMgZnJvbSBCYXNpYyBO
b3JtYWwgUGxhbmUuCi1HVEVTVF9BUElfIFN0cmluZyBXaWRlU3RyaW5nVG9VdGY4KGNvbnN0IHdj
aGFyX3QqIHN0ciwgaW50IG51bV9jaGFycyk7CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFdpZGVT
dHJpbmdUb1V0ZjgoY29uc3Qgd2NoYXJfdCogc3RyLCBpbnQgbnVtX2NoYXJzKTsKIAogLy8gUmVh
ZHMgdGhlIEdURVNUX1NIQVJEX1NUQVRVU19GSUxFIGVudmlyb25tZW50IHZhcmlhYmxlLCBhbmQg
Y3JlYXRlcyB0aGUgZmlsZQogLy8gaWYgdGhlIHZhcmlhYmxlIGlzIHByZXNlbnQuIElmIGEgZmls
ZSBhbHJlYWR5IGV4aXN0cyBhdCB0aGlzIGxvY2F0aW9uLCB0aGlzCkBAIC0yNjYsNyArMjc3LDE0
IEBAIEdURVNUX0FQSV8gYm9vbCBTaG91bGRSdW5UZXN0T25TaGFyZCgKIC8vIHRoZSBnaXZlbiBw
cmVkaWNhdGUuCiB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyLCB0eXBlbmFtZSBQcmVkaWNhdGU+
CiBpbmxpbmUgaW50IENvdW50SWYoY29uc3QgQ29udGFpbmVyJiBjLCBQcmVkaWNhdGUgcHJlZGlj
YXRlKSB7Ci0gIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6Y291bnRfaWYoYy5iZWdpbigp
LCBjLmVuZCgpLCBwcmVkaWNhdGUpKTsKKyAgLy8gSW1wbGVtZW50ZWQgYXMgYW4gZXhwbGljaXQg
bG9vcCBzaW5jZSBzdGQ6OmNvdW50X2lmKCkgaW4gbGliQ3N0ZCBvbgorICAvLyBTb2xhcmlzIGhh
cyBhIG5vbi1zdGFuZGFyZCBzaWduYXR1cmUuCisgIGludCBjb3VudCA9IDA7CisgIGZvciAodHlw
ZW5hbWUgQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBpdCA9IGMuYmVnaW4oKTsgaXQgIT0gYy5l
bmQoKTsgKytpdCkgeworICAgIGlmIChwcmVkaWNhdGUoKml0KSkKKyAgICAgICsrY291bnQ7Cisg
IH0KKyAgcmV0dXJuIGNvdW50OwogfQogCiAvLyBBcHBsaWVzIGEgZnVuY3Rpb24vZnVuY3RvciB0
byBlYWNoIGVsZW1lbnQgaW4gdGhlIGNvbnRhaW5lci4KQEAgLTMyNyw5NSArMzQ1LDE1IEBAIGNs
YXNzIFRlc3RQcm9wZXJ0eUtleUlzIHsKICAgLy8gQ29uc3RydWN0b3IuCiAgIC8vCiAgIC8vIFRl
c3RQcm9wZXJ0eUtleUlzIGhhcyBOTyBkZWZhdWx0IGNvbnN0cnVjdG9yLgotICBleHBsaWNpdCBU
ZXN0UHJvcGVydHlLZXlJcyhjb25zdCBjaGFyKiBrZXkpCi0gICAgICA6IGtleV8oa2V5KSB7fQor
ICBleHBsaWNpdCBUZXN0UHJvcGVydHlLZXlJcyhjb25zdCBzdGQ6OnN0cmluZyYga2V5KSA6IGtl
eV8oa2V5KSB7fQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgbmFtZSBvZiB0ZXN0
IHByb3BlcnR5IG1hdGNoZXMgb24ga2V5Xy4KICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFRlc3RQ
cm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgY29uc3QgewotICAgIHJldHVybiBTdHJpbmcodGVzdF9w
cm9wZXJ0eS5rZXkoKSkuQ29tcGFyZShrZXlfKSA9PSAwOwotICB9Ci0KLSBwcml2YXRlOgotICBT
dHJpbmcga2V5XzsKLX07Ci0KLWNsYXNzIFRlc3RJbmZvSW1wbCB7Ci0gcHVibGljOgotICBUZXN0
SW5mb0ltcGwoVGVzdEluZm8qIHBhcmVudCwgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0g
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfY29t
bWVudCwKLSAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbW1lbnQsIFR5cGVJZCBmaXh0dXJl
X2NsYXNzX2lkLAotICAgICAgICAgICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFj
dG9yeSk7Ci0gIH5UZXN0SW5mb0ltcGwoKTsKLQotICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0
ZXN0IHNob3VsZCBydW4uCi0gIGJvb2wgc2hvdWxkX3J1bigpIGNvbnN0IHsgcmV0dXJuIHNob3Vs
ZF9ydW5fOyB9Ci0KLSAgLy8gU2V0cyB0aGUgc2hvdWxkX3J1biBtZW1iZXIuCi0gIHZvaWQgc2V0
X3Nob3VsZF9ydW4oYm9vbCBzaG91bGQpIHsgc2hvdWxkX3J1bl8gPSBzaG91bGQ7IH0KLQotICAv
LyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IGlzIGRpc2FibGVkLiBEaXNhYmxlZCB0ZXN0cyBh
cmUgbm90IHJ1bi4KLSAgYm9vbCBpc19kaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGlzX2Rpc2Fi
bGVkXzsgfQotCi0gIC8vIFNldHMgdGhlIGlzX2Rpc2FibGVkIG1lbWJlci4KLSAgdm9pZCBzZXRf
aXNfZGlzYWJsZWQoYm9vbCBpcykgeyBpc19kaXNhYmxlZF8gPSBpczsgfQotCi0gIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGlzIHRlc3QgbWF0Y2hlcyB0aGUgZmlsdGVyIHNwZWNpZmllZCBieSB0aGUg
dXNlci4KLSAgYm9vbCBtYXRjaGVzX2ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1hdGNoZXNfZmls
dGVyXzsgfQotCi0gIC8vIFNldHMgdGhlIG1hdGNoZXNfZmlsdGVyIG1lbWJlci4KLSAgdm9pZCBz
ZXRfbWF0Y2hlc19maWx0ZXIoYm9vbCBtYXRjaGVzKSB7IG1hdGNoZXNfZmlsdGVyXyA9IG1hdGNo
ZXM7IH0KLQotICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNhc2UgbmFtZS4KLSAgY29uc3QgY2hhciog
dGVzdF9jYXNlX25hbWUoKSBjb25zdCB7IHJldHVybiB0ZXN0X2Nhc2VfbmFtZV8uY19zdHIoKTsg
fQotCi0gIC8vIFJldHVybnMgdGhlIHRlc3QgbmFtZS4KLSAgY29uc3QgY2hhciogbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG5hbWVfLmNfc3RyKCk7IH0KLQotICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNh
c2UgY29tbWVudC4KLSAgY29uc3QgY2hhciogdGVzdF9jYXNlX2NvbW1lbnQoKSBjb25zdCB7IHJl
dHVybiB0ZXN0X2Nhc2VfY29tbWVudF8uY19zdHIoKTsgfQotCi0gIC8vIFJldHVybnMgdGhlIHRl
c3QgY29tbWVudC4KLSAgY29uc3QgY2hhciogY29tbWVudCgpIGNvbnN0IHsgcmV0dXJuIGNvbW1l
bnRfLmNfc3RyKCk7IH0KLQotICAvLyBSZXR1cm5zIHRoZSBJRCBvZiB0aGUgdGVzdCBmaXh0dXJl
IGNsYXNzLgotICBUeXBlSWQgZml4dHVyZV9jbGFzc19pZCgpIGNvbnN0IHsgcmV0dXJuIGZpeHR1
cmVfY2xhc3NfaWRfOyB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgdGVzdCByZXN1bHQuCi0gIFRlc3RS
ZXN1bHQqIHJlc3VsdCgpIHsgcmV0dXJuICZyZXN1bHRfOyB9Ci0gIGNvbnN0IFRlc3RSZXN1bHQq
IHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuICZyZXN1bHRfOyB9Ci0KLSAgLy8gQ3JlYXRlcyB0aGUg
dGVzdCBvYmplY3QsIHJ1bnMgaXQsIHJlY29yZHMgaXRzIHJlc3VsdCwgYW5kIHRoZW4KLSAgLy8g
ZGVsZXRlcyBpdC4KLSAgdm9pZCBSdW4oKTsKLQotICAvLyBDbGVhcnMgdGhlIHRlc3QgcmVzdWx0
LgotICB2b2lkIENsZWFyUmVzdWx0KCkgeyByZXN1bHRfLkNsZWFyKCk7IH0KLQotICAvLyBDbGVh
cnMgdGhlIHRlc3QgcmVzdWx0IGluIHRoZSBnaXZlbiBUZXN0SW5mbyBvYmplY3QuCi0gIHN0YXRp
YyB2b2lkIENsZWFyVGVzdFJlc3VsdChUZXN0SW5mbyAqIHRlc3RfaW5mbykgewotICAgIHRlc3Rf
aW5mby0+aW1wbCgpLT5DbGVhclJlc3VsdCgpOworICAgIHJldHVybiB0ZXN0X3Byb3BlcnR5Lmtl
eSgpID09IGtleV87CiAgIH0KIAogIHByaXZhdGU6Ci0gIC8vIFRoZXNlIGZpZWxkcyBhcmUgaW1t
dXRhYmxlIHByb3BlcnRpZXMgb2YgdGhlIHRlc3QuCi0gIFRlc3RJbmZvKiBjb25zdCBwYXJlbnRf
OyAgICAgICAgICAvLyBUaGUgb3duZXIgb2YgdGhpcyBvYmplY3QKLSAgY29uc3QgU3RyaW5nIHRl
c3RfY2FzZV9uYW1lXzsgICAgIC8vIFRlc3QgY2FzZSBuYW1lCi0gIGNvbnN0IFN0cmluZyBuYW1l
XzsgICAgICAgICAgICAgICAvLyBUZXN0IG5hbWUKLSAgY29uc3QgU3RyaW5nIHRlc3RfY2FzZV9j
b21tZW50XzsgIC8vIFRlc3QgY2FzZSBjb21tZW50Ci0gIGNvbnN0IFN0cmluZyBjb21tZW50Xzsg
ICAgICAgICAgICAvLyBUZXN0IGNvbW1lbnQKLSAgY29uc3QgVHlwZUlkIGZpeHR1cmVfY2xhc3Nf
aWRfOyAgIC8vIElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKLSAgYm9vbCBzaG91bGRfcnVu
XzsgICAgICAgICAgICAgICAgIC8vIFRydWUgaWZmIHRoaXMgdGVzdCBzaG91bGQgcnVuCi0gIGJv
b2wgaXNfZGlzYWJsZWRfOyAgICAgICAgICAgICAgICAvLyBUcnVlIGlmZiB0aGlzIHRlc3QgaXMg
ZGlzYWJsZWQKLSAgYm9vbCBtYXRjaGVzX2ZpbHRlcl87ICAgICAgICAgICAgIC8vIFRydWUgaWYg
dGhpcyB0ZXN0IG1hdGNoZXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyB1c2VyLXNwZWNpZmllZCBmaWx0ZXIuCi0gIGludGVybmFsOjpUZXN0RmFjdG9yeUJhc2Uq
IGNvbnN0IGZhY3RvcnlfOyAgLy8gVGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHRlc3Qgb2JqZWN0Ci0K
LSAgLy8gVGhpcyBmaWVsZCBpcyBtdXRhYmxlIGFuZCBuZWVkcyB0byBiZSByZXNldCBiZWZvcmUg
cnVubmluZyB0aGUKLSAgLy8gdGVzdCBmb3IgdGhlIHNlY29uZCB0aW1lLgotICBUZXN0UmVzdWx0
IHJlc3VsdF87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0SW5mb0lt
cGwpOworICBzdGQ6OnN0cmluZyBrZXlfOwogfTsKIAogLy8gQ2xhc3MgVW5pdFRlc3RPcHRpb25z
LgpAQCAtNDMzLDEyICszNzEsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdE9wdGlvbnMg
ewogICAvLyBGdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgdGhlIGd0ZXN0X291dHB1dCBmbGFnLgog
CiAgIC8vIFJldHVybnMgdGhlIG91dHB1dCBmb3JtYXQsIG9yICIiIGZvciBub3JtYWwgcHJpbnRl
ZCBvdXRwdXQuCi0gIHN0YXRpYyBTdHJpbmcgR2V0T3V0cHV0Rm9ybWF0KCk7CisgIHN0YXRpYyBz
dGQ6OnN0cmluZyBHZXRPdXRwdXRGb3JtYXQoKTsKIAogICAvLyBSZXR1cm5zIHRoZSBhYnNvbHV0
ZSBwYXRoIG9mIHRoZSByZXF1ZXN0ZWQgb3V0cHV0IGZpbGUsIG9yIHRoZQogICAvLyBkZWZhdWx0
ICh0ZXN0X2RldGFpbC54bWwgaW4gdGhlIG9yaWdpbmFsIHdvcmtpbmcgZGlyZWN0b3J5KSBpZgog
ICAvLyBub25lIHdhcyBleHBsaWNpdGx5IHNwZWNpZmllZC4KLSAgc3RhdGljIFN0cmluZyBHZXRB
YnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKTsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldEFic29s
dXRlUGF0aFRvT3V0cHV0RmlsZSgpOwogCiAgIC8vIEZ1bmN0aW9ucyBmb3IgcHJvY2Vzc2luZyB0
aGUgZ3Rlc3RfZmlsdGVyIGZsYWcuCiAKQEAgLTQ1MSw4ICszODksOCBAQCBjbGFzcyBHVEVTVF9B
UElfIFVuaXRUZXN0T3B0aW9ucyB7CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdXNlci1z
cGVjaWZpZWQgZmlsdGVyIG1hdGNoZXMgdGhlIHRlc3QgY2FzZQogICAvLyBuYW1lIGFuZCB0aGUg
dGVzdCBuYW1lLgotICBzdGF0aWMgYm9vbCBGaWx0ZXJNYXRjaGVzVGVzdChjb25zdCBTdHJpbmcg
JnRlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBT
dHJpbmcgJnRlc3RfbmFtZSk7CisgIHN0YXRpYyBib29sIEZpbHRlck1hdGNoZXNUZXN0KGNvbnN0
IHN0ZDo6c3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnRlc3RfbmFtZSk7CiAKICNpZiBHVEVTVF9PU19XSU5E
T1dTCiAgIC8vIEZ1bmN0aW9uIGZvciBzdXBwb3J0aW5nIHRoZSBndGVzdF9jYXRjaF9leGNlcHRp
b24gZmxhZy4KQEAgLTQ2NSw3ICs0MDMsNyBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0T3B0
aW9ucyB7CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmICJuYW1lIiBtYXRjaGVzIHRoZSAnOicgc2Vw
YXJhdGVkIGxpc3Qgb2YgZ2xvYi1zdHlsZQogICAvLyBmaWx0ZXJzIGluICJmaWx0ZXIiLgotICBz
dGF0aWMgYm9vbCBNYXRjaGVzRmlsdGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgY2hhciog
ZmlsdGVyKTsKKyAgc3RhdGljIGJvb2wgTWF0Y2hlc0ZpbHRlcihjb25zdCBzdGQ6OnN0cmluZyYg
bmFtZSwgY29uc3QgY2hhciogZmlsdGVyKTsKIH07CiAKIC8vIFJldHVybnMgdGhlIGN1cnJlbnQg
YXBwbGljYXRpb24ncyBuYW1lLCByZW1vdmluZyBkaXJlY3RvcnkgcGF0aCBpZiB0aGF0CkBAIC00
NzgsMTkgKzQxNiwyMyBAQCBjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UgewogICBP
c1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UoKSB7fQogICB2aXJ0dWFsIH5Pc1N0YWNrVHJhY2VH
ZXR0ZXJJbnRlcmZhY2UoKSB7fQogCi0gIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sg
dHJhY2UgYXMgYSBTdHJpbmcuICBQYXJhbWV0ZXJzOgorICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50
IE9TIHN0YWNrIHRyYWNlIGFzIGFuIHN0ZDo6c3RyaW5nLiAgUGFyYW1ldGVyczoKICAgLy8KICAg
Ly8gICBtYXhfZGVwdGggIC0gdGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBi
ZSBpbmNsdWRlZAogICAvLyAgICAgICAgICAgICAgICBpbiB0aGUgdHJhY2UuCiAgIC8vICAgc2tp
cF9jb3VudCAtIHRoZSBudW1iZXIgb2YgdG9wIGZyYW1lcyB0byBiZSBza2lwcGVkOyBkb2Vzbid0
IGNvdW50CiAgIC8vICAgICAgICAgICAgICAgIGFnYWluc3QgbWF4X2RlcHRoLgotICB2aXJ0dWFs
IFN0cmluZyBDdXJyZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCkg
PSAwOworICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIEN1cnJlbnRTdGFja1RyYWNlKGludCBtYXhfZGVw
dGgsIGludCBza2lwX2NvdW50KSA9IDA7CiAKICAgLy8gVXBvbkxlYXZpbmdHVGVzdCgpIHNob3Vs
ZCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIEdvb2dsZSBUZXN0IGNhbGxzCiAgIC8vIHVz
ZXIgY29kZS4gSXQgc2F2ZXMgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBzdGFj
ayB0aGF0CiAgIC8vIEN1cnJlbnRTdGFja1RyYWNlKCkgd2lsbCB1c2UgdG8gZmluZCBhbmQgaGlk
ZSBHb29nbGUgVGVzdCBzdGFjayBmcmFtZXMuCiAgIHZpcnR1YWwgdm9pZCBVcG9uTGVhdmluZ0dU
ZXN0KCkgPSAwOwogCisgIC8vIFRoaXMgc3RyaW5nIGlzIGluc2VydGVkIGluIHBsYWNlIG9mIHN0
YWNrIGZyYW1lcyB0aGF0IGFyZSBwYXJ0IG9mCisgIC8vIEdvb2dsZSBUZXN0J3MgaW1wbGVtZW50
YXRpb24uCisgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBrRWxpZGVkRnJhbWVzTWFya2VyOwor
CiAgcHJpdmF0ZToKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhPc1N0YWNrVHJh
Y2VHZXR0ZXJJbnRlcmZhY2UpOwogfTsKQEAgLTQ5OCwyMiArNDQwLDIxIEBAIGNsYXNzIE9zU3Rh
Y2tUcmFjZUdldHRlckludGVyZmFjZSB7CiAvLyBBIHdvcmtpbmcgaW1wbGVtZW50YXRpb24gb2Yg
dGhlIE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSBpbnRlcmZhY2UuCiBjbGFzcyBPc1N0YWNr
VHJhY2VHZXR0ZXIgOiBwdWJsaWMgT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlIHsKICBwdWJs
aWM6Ci0gIE9zU3RhY2tUcmFjZUdldHRlcigpIDogY2FsbGVyX2ZyYW1lXyhOVUxMKSB7fQotICB2
aXJ0dWFsIFN0cmluZyBDdXJyZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9j
b3VudCk7Ci0gIHZpcnR1YWwgdm9pZCBVcG9uTGVhdmluZ0dUZXN0KCk7CisgIE9zU3RhY2tUcmFj
ZUdldHRlcigpIHt9CiAKLSAgLy8gVGhpcyBzdHJpbmcgaXMgaW5zZXJ0ZWQgaW4gcGxhY2Ugb2Yg
c3RhY2sgZnJhbWVzIHRoYXQgYXJlIHBhcnQgb2YKLSAgLy8gR29vZ2xlIFRlc3QncyBpbXBsZW1l
bnRhdGlvbi4KLSAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGtFbGlkZWRGcmFtZXNNYXJrZXI7
CisgIHZpcnR1YWwgc3RkOjpzdHJpbmcgQ3VycmVudFN0YWNrVHJhY2UoaW50IG1heF9kZXB0aCwg
aW50IHNraXBfY291bnQpOworICB2aXJ0dWFsIHZvaWQgVXBvbkxlYXZpbmdHVGVzdCgpOwogCiAg
cHJpdmF0ZToKLSAgTXV0ZXggbXV0ZXhfOyAgLy8gcHJvdGVjdHMgYWxsIGludGVybmFsIHN0YXRl
CisjaWYgR1RFU1RfSEFTX0FCU0wKKyAgTXV0ZXggbXV0ZXhfOyAgLy8gUHJvdGVjdHMgYWxsIGlu
dGVybmFsIHN0YXRlLgogCiAgIC8vIFdlIHNhdmUgdGhlIHN0YWNrIGZyYW1lIGJlbG93IHRoZSBm
cmFtZSB0aGF0IGNhbGxzIHVzZXIgY29kZS4KICAgLy8gV2UgZG8gdGhpcyBiZWNhdXNlIHRoZSBh
ZGRyZXNzIG9mIHRoZSBmcmFtZSBpbW1lZGlhdGVseSBiZWxvdwogICAvLyB0aGUgdXNlciBjb2Rl
IGNoYW5nZXMgYmV0d2VlbiB0aGUgY2FsbCB0byBVcG9uTGVhdmluZ0dUZXN0KCkKLSAgLy8gYW5k
IGFueSBjYWxscyB0byBDdXJyZW50U3RhY2tUcmFjZSgpIGZyb20gd2l0aGluIHRoZSB1c2VyIGNv
ZGUuCi0gIHZvaWQqIGNhbGxlcl9mcmFtZV87CisgIC8vIGFuZCBhbnkgY2FsbHMgdG8gdGhlIHN0
YWNrIHRyYWNlIGNvZGUgZnJvbSB3aXRoaW4gdGhlIHVzZXIgY29kZS4KKyAgdm9pZCogY2FsbGVy
X2ZyYW1lXyA9IG51bGxwdHI7CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCiAKICAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhPc1N0YWNrVHJhY2VHZXR0ZXIpOwogfTsKQEAgLTUy
Miw3ICs0NjMsNyBAQCBjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXIgOiBwdWJsaWMgT3NTdGFja1Ry
YWNlR2V0dGVySW50ZXJmYWNlIHsKIHN0cnVjdCBUcmFjZUluZm8gewogICBjb25zdCBjaGFyKiBm
aWxlOwogICBpbnQgbGluZTsKLSAgU3RyaW5nIG1lc3NhZ2U7CisgIHN0ZDo6c3RyaW5nIG1lc3Nh
Z2U7CiB9OwogCiAvLyBUaGlzIGlzIHRoZSBkZWZhdWx0IGdsb2JhbCB0ZXN0IHBhcnQgcmVzdWx0
IHJlcG9ydGVyIHVzZWQgaW4gVW5pdFRlc3RJbXBsLgpAQCAtNjA2LDE1ICs1NDcsMjUgQEAgY2xh
c3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZmFp
bGVkIHRlc3RzLgogICBpbnQgZmFpbGVkX3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAvLyBHZXRz
IHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRo
ZSBYTUwgcmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkgY29u
c3Q7CisKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzLgogICBpbnQgZGlz
YWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0OwogCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0
cyB0byBiZSBwcmludGVkIGluIHRoZSBYTUwgcmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV90ZXN0
X2NvdW50KCkgY29uc3Q7CisKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0cy4KICAg
aW50IHRvdGFsX3Rlc3RfY291bnQoKSBjb25zdDsKIAogICAvLyBHZXRzIHRoZSBudW1iZXIgb2Yg
dGVzdHMgdGhhdCBzaG91bGQgcnVuLgogICBpbnQgdGVzdF90b19ydW5fY291bnQoKSBjb25zdDsK
IAorICAvLyBHZXRzIHRoZSB0aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0gc3RhcnQsIGluIG1zIGZy
b20gdGhlIHN0YXJ0IG9mIHRoZQorICAvLyBVTklYIGVwb2NoLgorICBUaW1lSW5NaWxsaXMgc3Rh
cnRfdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gc3RhcnRfdGltZXN0YW1wXzsgfQorCiAgIC8v
IEdldHMgdGhlIGVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5NaWxsaXMg
ZWxhcHNlZF90aW1lKCkgY29uc3QgeyByZXR1cm4gZWxhcHNlZF90aW1lXzsgfQogCkBAIC02NjMs
NyArNjE0LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBnZXR0ZXIs
IGFuZCByZXR1cm5zIGl0LgogICBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UqIG9zX3N0YWNr
X3RyYWNlX2dldHRlcigpOwogCi0gIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJh
Y2UgYXMgYSBTdHJpbmcuCisgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2Ug
YXMgYW4gc3RkOjpzdHJpbmcuCiAgIC8vCiAgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFj
ayBmcmFtZXMgdG8gYmUgaW5jbHVkZWQgaXMgc3BlY2lmaWVkIGJ5CiAgIC8vIHRoZSBndGVzdF9z
dGFja190cmFjZV9kZXB0aCBmbGFnLiAgVGhlIHNraXBfY291bnQgcGFyYW1ldGVyCkBAIC02NzMs
NyArNjI0LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBGb3IgZXhh
bXBsZSwgaWYgRm9vKCkgY2FsbHMgQmFyKCksIHdoaWNoIGluIHR1cm4gY2FsbHMKICAgLy8gQ3Vy
cmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgxKSwgRm9vKCkgd2lsbCBiZSBpbmNsdWRlZCBpbiB0
aGUKICAgLy8gdHJhY2UgYnV0IEJhcigpIGFuZCBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9w
KCkgd29uJ3QuCi0gIFN0cmluZyBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKGludCBza2lw
X2NvdW50KTsKKyAgc3RkOjpzdHJpbmcgQ3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcChpbnQg
c2tpcF9jb3VudCkgR1RFU1RfTk9fSU5MSU5FXzsKIAogICAvLyBGaW5kcyBhbmQgcmV0dXJucyBh
IFRlc3RDYXNlIHdpdGggdGhlIGdpdmVuIG5hbWUuICBJZiBvbmUgZG9lc24ndAogICAvLyBleGlz
dCwgY3JlYXRlcyBvbmUgYW5kIHJldHVybnMgaXQuCkBAIC02ODEsMTAgKzYzMiwxMiBAQCBjbGFz
cyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vIEFyZ3VtZW50czoKICAgLy8KICAgLy8g
ICB0ZXN0X2Nhc2VfbmFtZTogbmFtZSBvZiB0aGUgdGVzdCBjYXNlCisgIC8vICAgdHlwZV9wYXJh
bTogICAgIHRoZSBuYW1lIG9mIHRoZSB0ZXN0J3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYK
KyAgLy8gICAgICAgICAgICAgICAgICAgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhIHR5cGUtcGFy
YW1ldGVyaXplZCB0ZXN0LgogICAvLyAgIHNldF91cF90YzogICAgICBwb2ludGVyIHRvIHRoZSBm
dW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIHRlc3QgY2FzZQogICAvLyAgIHRlYXJfZG93bl90Yzog
ICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQog
ICBUZXN0Q2FzZSogR2V0VGVzdENhc2UoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb21tZW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogdHlwZV9wYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAg
IFRlc3Q6OlNldFVwVGVzdENhc2VGdW5jIHNldF91cF90YywKICAgICAgICAgICAgICAgICAgICAg
ICAgIFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90Yyk7CiAKQEAgLTY5Nyw3
ICs2NTAsNyBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vICAgdGVzdF9p
bmZvOiAgICB0aGUgVGVzdEluZm8gb2JqZWN0CiAgIHZvaWQgQWRkVGVzdEluZm8oVGVzdDo6U2V0
VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAgICAgICAgICAgICAgICAgIFRlc3Q6OlRlYXJE
b3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YywKLSAgICAgICAgICAgICAgICAgICBUZXN0SW5m
byAqIHRlc3RfaW5mbykgeworICAgICAgICAgICAgICAgICAgIFRlc3RJbmZvKiB0ZXN0X2luZm8p
IHsKICAgICAvLyBJbiBvcmRlciB0byBzdXBwb3J0IHRocmVhZC1zYWZlIGRlYXRoIHRlc3RzLCB3
ZSBuZWVkIHRvCiAgICAgLy8gcmVtZW1iZXIgdGhlIG9yaWdpbmFsIHdvcmtpbmcgZGlyZWN0b3J5
IHdoZW4gdGhlIHRlc3QgcHJvZ3JhbQogICAgIC8vIHdhcyBmaXJzdCBpbnZva2VkLiAgV2UgY2Fu
bm90IGRvIHRoaXMgaW4gUlVOX0FMTF9URVNUUygpLCBhcwpAQCAtNzEyLDE4ICs2NjUsMTYgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAgIH0KIAogICAgIEdldFRlc3RDYXNl
KHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSwKLSAgICAgICAgICAgICAgICB0ZXN0X2luZm8t
PnRlc3RfY2FzZV9jb21tZW50KCksCisgICAgICAgICAgICAgICAgdGVzdF9pbmZvLT50eXBlX3Bh
cmFtKCksCiAgICAgICAgICAgICAgICAgc2V0X3VwX3RjLAogICAgICAgICAgICAgICAgIHRlYXJf
ZG93bl90YyktPkFkZFRlc3RJbmZvKHRlc3RfaW5mbyk7CiAgIH0KIAotI2lmIEdURVNUX0hBU19Q
QVJBTV9URVNUCiAgIC8vIFJldHVybnMgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgb2Jq
ZWN0IHVzZWQgdG8ga2VlcCB0cmFjayBvZgogICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3Rz
IGFuZCBpbnN0YW50aWF0ZSBhbmQgcmVnaXN0ZXIgdGhlbS4KICAgaW50ZXJuYWw6OlBhcmFtZXRl
cml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5JiBwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKSB7CiAg
ICAgcmV0dXJuIHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeV87CiAgIH0KLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1BBUkFNX1RFU1QKIAogICAvLyBTZXRzIHRoZSBUZXN0Q2FzZSBvYmplY3QgZm9y
IHRoZSB0ZXN0IHRoYXQncyBjdXJyZW50bHkgcnVubmluZy4KICAgdm9pZCBzZXRfY3VycmVudF90
ZXN0X2Nhc2UoVGVzdENhc2UqIGFfY3VycmVudF90ZXN0X2Nhc2UpIHsKQEAgLTczOCwyNyArNjg5
LDM1IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgfQogCiAgIC8vIFJlZ2lz
dGVycyBhbGwgcGFyYW1ldGVyaXplZCB0ZXN0cyBkZWZpbmVkIHVzaW5nIFRFU1RfUCBhbmQKLSAg
Ly8gSU5TVEFOVElBVEVfVEVTVF9QLCBjcmVhdGluZyByZWd1bGFyIHRlc3RzIGZvciBlYWNoIHRl
c3QvcGFyYW1ldGVyCi0gIC8vIGNvbWJpbmF0aW9uLiBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVk
IG1vcmUgdGhlbiBvbmNlOyBpdCBoYXMKLSAgLy8gZ3VhcmRzIHByb3RlY3RpbmcgZnJvbSByZWdp
c3RlcmluZyB0aGUgdGVzdHMgbW9yZSB0aGVuIG9uY2UuCi0gIC8vIElmIHZhbHVlLXBhcmFtZXRl
cml6ZWQgdGVzdHMgYXJlIGRpc2FibGVkLCBSZWdpc3RlclBhcmFtZXRlcml6ZWRUZXN0cwotICAv
LyBpcyBwcmVzZW50IGJ1dCBkb2VzIG5vdGhpbmcuCisgIC8vIElOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QLCBjcmVhdGluZyByZWd1bGFyIHRlc3RzIGZvciBlYWNoIHRlc3QvcGFyYW1ldGVyCisgIC8v
IGNvbWJpbmF0aW9uLiBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIG1vcmUgdGhlbiBvbmNlOyBp
dCBoYXMgZ3VhcmRzCisgIC8vIHByb3RlY3RpbmcgZnJvbSByZWdpc3RlcmluZyB0aGUgdGVzdHMg
bW9yZSB0aGVuIG9uY2UuICBJZgorICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBk
aXNhYmxlZCwgUmVnaXN0ZXJQYXJhbWV0ZXJpemVkVGVzdHMgaXMKKyAgLy8gcHJlc2VudCBidXQg
ZG9lcyBub3RoaW5nLgogICB2b2lkIFJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzKCk7CiAKICAg
Ly8gUnVucyBhbGwgdGVzdHMgaW4gdGhpcyBVbml0VGVzdCBvYmplY3QsIHByaW50cyB0aGUgcmVz
dWx0LCBhbmQKLSAgLy8gcmV0dXJucyAwIGlmIGFsbCB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3Ig
MSBvdGhlcndpc2UuICBJZiBhbnkKLSAgLy8gZXhjZXB0aW9uIGlzIHRocm93biBkdXJpbmcgYSB0
ZXN0IG9uIFdpbmRvd3MsIHRoaXMgdGVzdCBpcwotICAvLyBjb25zaWRlcmVkIHRvIGJlIGZhaWxl
ZCwgYnV0IHRoZSByZXN0IG9mIHRoZSB0ZXN0cyB3aWxsIHN0aWxsIGJlCi0gIC8vIHJ1bi4gIChX
ZSBkaXNhYmxlIGV4Y2VwdGlvbnMgb24gTGludXggYW5kIE1hYyBPUyBYLCBzbyB0aGUgaXNzdWUK
LSAgLy8gZG9lc24ndCBhcHBseSB0aGVyZS4pCi0gIGludCBSdW5BbGxUZXN0cygpOwotCi0gIC8v
IENsZWFycyB0aGUgcmVzdWx0cyBvZiBhbGwgdGVzdHMsIGluY2x1ZGluZyB0aGUgYWQgaG9jIHRl
c3QuCi0gIHZvaWQgQ2xlYXJSZXN1bHQoKSB7CisgIC8vIHJldHVybnMgdHJ1ZSBpZiBhbGwgdGVz
dHMgYXJlIHN1Y2Nlc3NmdWwuICBJZiBhbnkgZXhjZXB0aW9uIGlzCisgIC8vIHRocm93biBkdXJp
bmcgYSB0ZXN0LCB0aGlzIHRlc3QgaXMgY29uc2lkZXJlZCB0byBiZSBmYWlsZWQsIGJ1dAorICAv
LyB0aGUgcmVzdCBvZiB0aGUgdGVzdHMgd2lsbCBzdGlsbCBiZSBydW4uCisgIGJvb2wgUnVuQWxs
VGVzdHMoKTsKKworICAvLyBDbGVhcnMgdGhlIHJlc3VsdHMgb2YgYWxsIHRlc3RzLCBleGNlcHQg
dGhlIGFkIGhvYyB0ZXN0cy4KKyAgdm9pZCBDbGVhck5vbkFkSG9jVGVzdFJlc3VsdCgpIHsKICAg
ICBGb3JFYWNoKHRlc3RfY2FzZXNfLCBUZXN0Q2FzZTo6Q2xlYXJUZXN0Q2FzZVJlc3VsdCk7Cisg
IH0KKworICAvLyBDbGVhcnMgdGhlIHJlc3VsdHMgb2YgYWQtaG9jIHRlc3QgYXNzZXJ0aW9ucy4K
KyAgdm9pZCBDbGVhckFkSG9jVGVzdFJlc3VsdCgpIHsKICAgICBhZF9ob2NfdGVzdF9yZXN1bHRf
LkNsZWFyKCk7CiAgIH0KIAorICAvLyBBZGRzIGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJyZW50
IFRlc3RSZXN1bHQgb2JqZWN0IHdoZW4gaW52b2tlZCBpbiBhCisgIC8vIGNvbnRleHQgb2YgYSB0
ZXN0IG9yIGEgdGVzdCBjYXNlLCBvciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNldC4gSWYgdGhl
CisgIC8vIHJlc3VsdCBhbHJlYWR5IGNvbnRhaW5zIGEgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBr
ZXksIHRoZSB2YWx1ZSB3aWxsIGJlCisgIC8vIHVwZGF0ZWQuCisgIHZvaWQgUmVjb3JkUHJvcGVy
dHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5KTsKKwogICBlbnVtIFJlYWN0aW9u
VG9TaGFyZGluZyB7CiAgICAgSE9OT1JfU0hBUkRJTkdfUFJPVE9DT0wsCiAgICAgSUdOT1JFX1NI
QVJESU5HX1BST1RPQ09MCkBAIC04MTcsNiArNzc2LDEyIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5p
dFRlc3RJbXBsIHsKICAgLy8gVW5pdFRlc3RPcHRpb25zLiBNdXN0IG5vdCBiZSBjYWxsZWQgYmVm
b3JlIEluaXRHb29nbGVUZXN0LgogICB2b2lkIENvbmZpZ3VyZVhtbE91dHB1dCgpOwogCisjaWYg
R1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworICAvLyBJbml0aWFsaXplcyB0aGUgZXZlbnQgbGlz
dGVuZXIgZm9yIHN0cmVhbWluZyB0ZXN0IHJlc3VsdHMgdG8gYSBzb2NrZXQuCisgIC8vIE11c3Qg
bm90IGJlIGNhbGxlZCBiZWZvcmUgSW5pdEdvb2dsZVRlc3QuCisgIHZvaWQgQ29uZmlndXJlU3Ry
ZWFtaW5nT3V0cHV0KCk7CisjZW5kaWYKKwogICAvLyBQZXJmb3JtcyBpbml0aWFsaXphdGlvbiBk
ZXBlbmRlbnQgdXBvbiBmbGFnIHZhbHVlcyBvYnRhaW5lZCBpbgogICAvLyBQYXJzZUdvb2dsZVRl
c3RGbGFnc09ubHkuICBJcyBjYWxsZWQgZnJvbSBJbml0R29vZ2xlVGVzdCBhZnRlciB0aGUgY2Fs
bCB0bwogICAvLyBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkuICBJbiBjYXNlIGEgdXNlciBuZWds
ZWN0cyB0byBjYWxsIEluaXRHb29nbGVUZXN0CkBAIC04MzcsOSArODAyLDE3IEBAIGNsYXNzIEdU
RVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gUmVzdG9yZXMgdGhlIHRlc3QgY2FzZXMgYW5k
IHRlc3RzIHRvIHRoZWlyIG9yZGVyIGJlZm9yZSB0aGUgZmlyc3Qgc2h1ZmZsZS4KICAgdm9pZCBV
bnNodWZmbGVUZXN0cygpOwogCisgIC8vIFJldHVybnMgdGhlIHZhbHVlIG9mIEdURVNUX0ZMQUco
Y2F0Y2hfZXhjZXB0aW9ucykgYXQgdGhlIG1vbWVudAorICAvLyBVbml0VGVzdDo6UnVuKCkgc3Rh
cnRzLgorICBib29sIGNhdGNoX2V4Y2VwdGlvbnMoKSBjb25zdCB7IHJldHVybiBjYXRjaF9leGNl
cHRpb25zXzsgfQorCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNsYXNzIDo6dGVzdGluZzo6VW5pdFRl
c3Q7CiAKKyAgLy8gVXNlZCBieSBVbml0VGVzdDo6UnVuKCkgdG8gY2FwdHVyZSB0aGUgc3RhdGUg
b2YKKyAgLy8gR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSBhdCB0aGUgbW9tZW50IGl0IHN0
YXJ0cy4KKyAgdm9pZCBzZXRfY2F0Y2hfZXhjZXB0aW9ucyhib29sIHZhbHVlKSB7IGNhdGNoX2V4
Y2VwdGlvbnNfID0gdmFsdWU7IH0KKwogICAvLyBUaGUgVW5pdFRlc3Qgb2JqZWN0IHRoYXQgb3du
cyB0aGlzIGltcGxlbWVudGF0aW9uIG9iamVjdC4KICAgVW5pdFRlc3QqIGNvbnN0IHBhcmVudF87
CiAKQEAgLTg3NiwxNCArODQ5LDEyIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsK
ICAgLy8gc2h1ZmZsZWQgb3JkZXIuCiAgIHN0ZDo6dmVjdG9yPGludD4gdGVzdF9jYXNlX2luZGlj
ZXNfOwogCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgLy8gUGFyYW1ldGVyaXplZFRlc3RS
ZWdpc3RyeSBvYmplY3QgdXNlZCB0byByZWdpc3RlciB2YWx1ZS1wYXJhbWV0ZXJpemVkCiAgIC8v
IHRlc3RzLgogICBpbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgcGFyYW1l
dGVyaXplZF90ZXN0X3JlZ2lzdHJ5XzsKIAogICAvLyBJbmRpY2F0ZXMgd2hldGhlciBSZWdpc3Rl
clBhcmFtZXRlcml6ZWRUZXN0cygpIGhhcyBiZWVuIGNhbGxlZCBhbHJlYWR5LgogICBib29sIHBh
cmFtZXRlcml6ZWRfdGVzdHNfcmVnaXN0ZXJlZF87Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJB
TV9URVNUCiAKICAgLy8gSW5kZXggb2YgdGhlIGxhc3QgZGVhdGggdGVzdCBjYXNlIHJlZ2lzdGVy
ZWQuICBJbml0aWFsbHkgLTEuCiAgIGludCBsYXN0X2RlYXRoX3Rlc3RfY2FzZV87CkBAIC05Mjks
NiArOTAwLDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gT3VyIHJh
bmRvbSBudW1iZXIgZ2VuZXJhdG9yLgogICBpbnRlcm5hbDo6UmFuZG9tIHJhbmRvbV87CiAKKyAg
Ly8gVGhlIHRpbWUgb2YgdGhlIHRlc3QgcHJvZ3JhbSBzdGFydCwgaW4gbXMgZnJvbSB0aGUgc3Rh
cnQgb2YgdGhlCisgIC8vIFVOSVggZXBvY2guCisgIFRpbWVJbk1pbGxpcyBzdGFydF90aW1lc3Rh
bXBfOworCiAgIC8vIEhvdyBsb25nIHRoZSB0ZXN0IHRvb2sgdG8gcnVuLCBpbiBtaWxsaXNlY29u
ZHMuCiAgIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3RpbWVfOwogCkBAIC05NDIsNiArOTE3LDEwIEBA
IGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gQSBwZXItdGhyZWFkIHN0YWNr
IG9mIHRyYWNlcyBjcmVhdGVkIGJ5IHRoZSBTQ09QRURfVFJBQ0UoKSBtYWNyby4KICAgaW50ZXJu
YWw6OlRocmVhZExvY2FsPHN0ZDo6dmVjdG9yPFRyYWNlSW5mbz4gPiBndGVzdF90cmFjZV9zdGFj
a187CiAKKyAgLy8gVGhlIHZhbHVlIG9mIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgYXQg
dGhlIG1vbWVudCBSdW5BbGxUZXN0cygpCisgIC8vIHN0YXJ0cy4KKyAgYm9vbCBjYXRjaF9leGNl
cHRpb25zXzsKKwogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFVuaXRUZXN0SW1w
bCk7CiB9OyAgLy8gY2xhc3MgVW5pdFRlc3RJbXBsCiAKQEAgLTk1MSwxNCArOTMwLDE2IEBAIGlu
bGluZSBVbml0VGVzdEltcGwqIEdldFVuaXRUZXN0SW1wbCgpIHsKICAgcmV0dXJuIFVuaXRUZXN0
OjpHZXRJbnN0YW5jZSgpLT5pbXBsKCk7CiB9CiAKKyNpZiBHVEVTVF9VU0VTX1NJTVBMRV9SRQor
CiAvLyBJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zIGZvciBpbXBsZW1lbnRpbmcgdGhlIHNpbXBs
ZSByZWd1bGFyCiAvLyBleHByZXNzaW9uIG1hdGNoZXIuCiBHVEVTVF9BUElfIGJvb2wgSXNJblNl
dChjaGFyIGNoLCBjb25zdCBjaGFyKiBzdHIpOwotR1RFU1RfQVBJXyBib29sIElzRGlnaXQoY2hh
ciBjaCk7Ci1HVEVTVF9BUElfIGJvb2wgSXNQdW5jdChjaGFyIGNoKTsKK0dURVNUX0FQSV8gYm9v
bCBJc0FzY2lpRGlnaXQoY2hhciBjaCk7CitHVEVTVF9BUElfIGJvb2wgSXNBc2NpaVB1bmN0KGNo
YXIgY2gpOwogR1RFU1RfQVBJXyBib29sIElzUmVwZWF0KGNoYXIgY2gpOwotR1RFU1RfQVBJXyBi
b29sIElzV2hpdGVTcGFjZShjaGFyIGNoKTsKLUdURVNUX0FQSV8gYm9vbCBJc1dvcmRDaGFyKGNo
YXIgY2gpOworR1RFU1RfQVBJXyBib29sIElzQXNjaWlXaGl0ZVNwYWNlKGNoYXIgY2gpOworR1RF
U1RfQVBJXyBib29sIElzQXNjaWlXb3JkQ2hhcihjaGFyIGNoKTsKIEdURVNUX0FQSV8gYm9vbCBJ
c1ZhbGlkRXNjYXBlKGNoYXIgY2gpOwogR1RFU1RfQVBJXyBib29sIEF0b21NYXRjaGVzQ2hhcihi
b29sIGVzY2FwZWQsIGNoYXIgcGF0dGVybiwgY2hhciBjaCk7CiBHVEVTVF9BUElfIGJvb2wgVmFs
aWRhdGVSZWdleChjb25zdCBjaGFyKiByZWdleCk7CkBAIC05NjcsNiArOTQ4LDggQEAgR1RFU1Rf
QVBJXyBib29sIE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKAogICAgIGJvb2wgZXNjYXBl
ZCwgY2hhciBjaCwgY2hhciByZXBlYXQsIGNvbnN0IGNoYXIqIHJlZ2V4LCBjb25zdCBjaGFyKiBz
dHIpOwogR1RFU1RfQVBJXyBib29sIE1hdGNoUmVnZXhBbnl3aGVyZShjb25zdCBjaGFyKiByZWdl
eCwgY29uc3QgY2hhciogc3RyKTsKIAorI2VuZGlmICAvLyBHVEVTVF9VU0VTX1NJTVBMRV9SRQor
CiAvLyBQYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IgR29vZ2xlIFRlc3QgZmxhZ3MsIHdpdGhv
dXQgaW5pdGlhbGl6aW5nCiAvLyBvdGhlciBwYXJ0cyBvZiBHb29nbGUgVGVzdC4KIEdURVNUX0FQ
SV8gdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoaW50KiBhcmdjLCBjaGFyKiogYXJndik7
CkBAIC05NzYsMzMgKzk1OSw3IEBAIEdURVNUX0FQSV8gdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFn
c09ubHkoaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndik7CiAKIC8vIFJldHVybnMgdGhlIG1lc3Nh
Z2UgZGVzY3JpYmluZyB0aGUgbGFzdCBzeXN0ZW0gZXJyb3IsIHJlZ2FyZGxlc3Mgb2YgdGhlCiAv
LyBwbGF0Zm9ybS4KLVN0cmluZyBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpOwotCi0jaWYgR1RF
U1RfT1NfV0lORE9XUwotLy8gUHJvdmlkZXMgbGVhay1zYWZlIFdpbmRvd3Mga2VybmVsIGhhbmRs
ZSBvd25lcnNoaXAuCi1jbGFzcyBBdXRvSGFuZGxlIHsKLSBwdWJsaWM6Ci0gIEF1dG9IYW5kbGUo
KSA6IGhhbmRsZV8oSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHt9Ci0gIGV4cGxpY2l0IEF1dG9IYW5k
bGUoSEFORExFIGhhbmRsZSkgOiBoYW5kbGVfKGhhbmRsZSkge30KLQotICB+QXV0b0hhbmRsZSgp
IHsgUmVzZXQoKTsgfQotCi0gIEhBTkRMRSBHZXQoKSBjb25zdCB7IHJldHVybiBoYW5kbGVfOyB9
Ci0gIHZvaWQgUmVzZXQoKSB7IFJlc2V0KElOVkFMSURfSEFORExFX1ZBTFVFKTsgfQotICB2b2lk
IFJlc2V0KEhBTkRMRSBoYW5kbGUpIHsKLSAgICBpZiAoaGFuZGxlICE9IGhhbmRsZV8pIHsKLSAg
ICAgIGlmIChoYW5kbGVfICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICA6OkNsb3Nl
SGFuZGxlKGhhbmRsZV8pOwotICAgICAgaGFuZGxlXyA9IGhhbmRsZTsKLSAgICB9Ci0gIH0KLQot
IHByaXZhdGU6Ci0gIEhBTkRMRSBoYW5kbGVfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8oQXV0b0hhbmRsZSk7Ci19OwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCitH
VEVTVF9BUElfIHN0ZDo6c3RyaW5nIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCk7CiAKIC8vIEF0
dGVtcHRzIHRvIHBhcnNlIGEgc3RyaW5nIGludG8gYSBwb3NpdGl2ZSBpbnRlZ2VyIHBvaW50ZWQg
dG8gYnkgdGhlCiAvLyBudW1iZXIgcGFyYW1ldGVyLiAgUmV0dXJucyB0cnVlIGlmIHRoYXQgaXMg
cG9zc2libGUuCkBAIC0xMDEzLDcgKzk3MCw3IEBAIGJvb2wgUGFyc2VOYXR1cmFsTnVtYmVyKGNv
bnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgSW50ZWdlciogbnVtYmVyKSB7CiAgIC8vIEZhaWwgZmFz
dCBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGRvZXMgbm90IGJlZ2luIHdpdGggYSBkaWdpdDsKICAgLy8g
dGhpcyBieXBhc3NlcyBzdHJ0b1hYWCdzICJvcHRpb25hbCBsZWFkaW5nIHdoaXRlc3BhY2UgYW5k
IHBsdXMKICAgLy8gb3IgbWludXMgc2lnbiIgc2VtYW50aWNzLCB3aGljaCBhcmUgdW5kZXNpcmFi
bGUgaGVyZS4KLSAgaWYgKHN0ci5lbXB0eSgpIHx8ICFpc2RpZ2l0KHN0clswXSkpIHsKKyAgaWYg
KHN0ci5lbXB0eSgpIHx8ICFJc0RpZ2l0KHN0clswXSkpIHsKICAgICByZXR1cm4gZmFsc2U7CiAg
IH0KICAgZXJybm8gPSAwOwpAQCAtMTAyMSwxNyArOTc4LDIzIEBAIGJvb2wgUGFyc2VOYXR1cmFs
TnVtYmVyKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgSW50ZWdlciogbnVtYmVyKSB7CiAgIGNo
YXIqIGVuZDsKICAgLy8gQmlnZ2VzdENvbnZlcnRpYmxlIGlzIHRoZSBsYXJnZXN0IGludGVnZXIg
dHlwZSB0aGF0IHN5c3RlbS1wcm92aWRlZAogICAvLyBzdHJpbmctdG8tbnVtYmVyIGNvbnZlcnNp
b24gcm91dGluZXMgY2FuIHJldHVybi4KLSNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVk
KF9fR05VQ19fKQorCisjIGlmIEdURVNUX09TX1dJTkRPV1MgJiYgIWRlZmluZWQoX19HTlVDX18p
CisKICAgLy8gTVNWQyBhbmQgQysrIEJ1aWxkZXIgZGVmaW5lIF9faW50NjQgaW5zdGVhZCBvZiB0
aGUgc3RhbmRhcmQgbG9uZyBsb25nLgogICB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgQmlnZ2Vz
dENvbnZlcnRpYmxlOwogICBjb25zdCBCaWdnZXN0Q29udmVydGlibGUgcGFyc2VkID0gX3N0cnRv
dWk2NChzdHIuY19zdHIoKSwgJmVuZCwgMTApOwotI2Vsc2UKKworIyBlbHNlCisKICAgdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIGxvbmcgQmlnZ2VzdENvbnZlcnRpYmxlOyAgLy8gTk9MSU5UCiAgIGNv
bnN0IEJpZ2dlc3RDb252ZXJ0aWJsZSBwYXJzZWQgPSBzdHJ0b3VsbChzdHIuY19zdHIoKSwgJmVu
ZCwgMTApOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVkKF9fR05VQ19f
KQorCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVkKF9fR05VQ19fKQor
CiAgIGNvbnN0IGJvb2wgcGFyc2Vfc3VjY2VzcyA9ICplbmQgPT0gJ1wwJyAmJiBlcnJubyA9PSAw
OwogCi0gIC8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IENvbnZlcnQgdGhpcyB0byBjb21waWxl
IHRpbWUgYXNzZXJ0aW9uIHdoZW4gaXQgaXMKKyAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBj
b21waWxlIHRpbWUgYXNzZXJ0aW9uIHdoZW4gaXQgaXMKICAgLy8gYXZhaWxhYmxlLgogICBHVEVT
VF9DSEVDS18oc2l6ZW9mKEludGVnZXIpIDw9IHNpemVvZihwYXJzZWQpKTsKIApAQCAtMTA1Myw4
ICsxMDE2LDkgQEAgYm9vbCBQYXJzZU5hdHVyYWxOdW1iZXIoY29uc3QgOjpzdGQ6OnN0cmluZyYg
c3RyLCBJbnRlZ2VyKiBudW1iZXIpIHsKIGNsYXNzIFRlc3RSZXN1bHRBY2Nlc3NvciB7CiAgcHVi
bGljOgogICBzdGF0aWMgdm9pZCBSZWNvcmRQcm9wZXJ0eShUZXN0UmVzdWx0KiB0ZXN0X3Jlc3Vs
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9l
bGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UHJvcGVydHkm
IHByb3BlcnR5KSB7Ci0gICAgdGVzdF9yZXN1bHQtPlJlY29yZFByb3BlcnR5KHByb3BlcnR5KTsK
KyAgICB0ZXN0X3Jlc3VsdC0+UmVjb3JkUHJvcGVydHkoeG1sX2VsZW1lbnQsIHByb3BlcnR5KTsK
ICAgfQogCiAgIHN0YXRpYyB2b2lkIENsZWFyVGVzdFBhcnRSZXN1bHRzKFRlc3RSZXN1bHQqIHRl
c3RfcmVzdWx0KSB7CkBAIC0xMDY3LDcgKzEwMzEsMTU3IEBAIGNsYXNzIFRlc3RSZXN1bHRBY2Nl
c3NvciB7CiAgIH0KIH07CiAKKyNpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKKy8vIFN0
cmVhbXMgdGVzdCByZXN1bHRzIHRvIHRoZSBnaXZlbiBwb3J0IG9uIHRoZSBnaXZlbiBob3N0IG1h
Y2hpbmUuCitjbGFzcyBTdHJlYW1pbmdMaXN0ZW5lciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExp
c3RlbmVyIHsKKyBwdWJsaWM6CisgIC8vIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHdyaXRpbmcg
c3RyaW5ncyB0byBhIHNvY2tldC4KKyAgY2xhc3MgQWJzdHJhY3RTb2NrZXRXcml0ZXIgeworICAg
cHVibGljOgorICAgIHZpcnR1YWwgfkFic3RyYWN0U29ja2V0V3JpdGVyKCkge30KKworICAgIC8v
IFNlbmRzIGEgc3RyaW5nIHRvIHRoZSBzb2NrZXQuCisgICAgdmlydHVhbCB2b2lkIFNlbmQoY29u
c3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpID0gMDsKKworICAgIC8vIENsb3NlcyB0aGUgc29ja2V0
LgorICAgIHZpcnR1YWwgdm9pZCBDbG9zZUNvbm5lY3Rpb24oKSB7fQorCisgICAgLy8gU2VuZHMg
YSBzdHJpbmcgYW5kIGEgbmV3bGluZSB0byB0aGUgc29ja2V0LgorICAgIHZvaWQgU2VuZExuKGNv
bnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7IFNlbmQobWVzc2FnZSArICJcbiIpOyB9CisgIH07
CisKKyAgLy8gQ29uY3JldGUgY2xhc3MgZm9yIGFjdHVhbGx5IHdyaXRpbmcgc3RyaW5ncyB0byBh
IHNvY2tldC4KKyAgY2xhc3MgU29ja2V0V3JpdGVyIDogcHVibGljIEFic3RyYWN0U29ja2V0V3Jp
dGVyIHsKKyAgIHB1YmxpYzoKKyAgICBTb2NrZXRXcml0ZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGhv
c3QsIGNvbnN0IHN0ZDo6c3RyaW5nJiBwb3J0KQorICAgICAgICA6IHNvY2tmZF8oLTEpLCBob3N0
X25hbWVfKGhvc3QpLCBwb3J0X251bV8ocG9ydCkgeworICAgICAgTWFrZUNvbm5lY3Rpb24oKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIH5Tb2NrZXRXcml0ZXIoKSB7CisgICAgICBpZiAoc29ja2Zk
XyAhPSAtMSkKKyAgICAgICAgQ2xvc2VDb25uZWN0aW9uKCk7CisgICAgfQorCisgICAgLy8gU2Vu
ZHMgYSBzdHJpbmcgdG8gdGhlIHNvY2tldC4KKyAgICB2aXJ0dWFsIHZvaWQgU2VuZChjb25zdCBz
dGQ6OnN0cmluZyYgbWVzc2FnZSkgeworICAgICAgR1RFU1RfQ0hFQ0tfKHNvY2tmZF8gIT0gLTEp
CisgICAgICAgICAgPDwgIlNlbmQoKSBjYW4gYmUgY2FsbGVkIG9ubHkgd2hlbiB0aGVyZSBpcyBh
IGNvbm5lY3Rpb24uIjsKKworICAgICAgY29uc3QgaW50IGxlbiA9IHN0YXRpY19jYXN0PGludD4o
bWVzc2FnZS5sZW5ndGgoKSk7CisgICAgICBpZiAod3JpdGUoc29ja2ZkXywgbWVzc2FnZS5jX3N0
cigpLCBsZW4pICE9IGxlbikgeworICAgICAgICBHVEVTVF9MT0dfKFdBUk5JTkcpCisgICAgICAg
ICAgICA8PCAic3RyZWFtX3Jlc3VsdF90bzogZmFpbGVkIHRvIHN0cmVhbSB0byAiCisgICAgICAg
ICAgICA8PCBob3N0X25hbWVfIDw8ICI6IiA8PCBwb3J0X251bV87CisgICAgICB9CisgICAgfQor
CisgICBwcml2YXRlOgorICAgIC8vIENyZWF0ZXMgYSBjbGllbnQgc29ja2V0IGFuZCBjb25uZWN0
cyB0byB0aGUgc2VydmVyLgorICAgIHZvaWQgTWFrZUNvbm5lY3Rpb24oKTsKKworICAgIC8vIENs
b3NlcyB0aGUgc29ja2V0LgorICAgIHZvaWQgQ2xvc2VDb25uZWN0aW9uKCkgeworICAgICAgR1RF
U1RfQ0hFQ0tfKHNvY2tmZF8gIT0gLTEpCisgICAgICAgICAgPDwgIkNsb3NlQ29ubmVjdGlvbigp
IGNhbiBiZSBjYWxsZWQgb25seSB3aGVuIHRoZXJlIGlzIGEgY29ubmVjdGlvbi4iOworCisgICAg
ICBjbG9zZShzb2NrZmRfKTsKKyAgICAgIHNvY2tmZF8gPSAtMTsKKyAgICB9CisKKyAgICBpbnQg
c29ja2ZkXzsgIC8vIHNvY2tldCBmaWxlIGRlc2NyaXB0b3IKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyBob3N0X25hbWVfOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHBvcnRfbnVtXzsKKworICAgIEdU
RVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oU29ja2V0V3JpdGVyKTsKKyAgfTsgIC8vIGNs
YXNzIFNvY2tldFdyaXRlcgorCisgIC8vIEVzY2FwZXMgJz0nLCAnJicsICclJywgYW5kICdcbicg
Y2hhcmFjdGVycyBpbiBzdHIgYXMgIiV4eCIuCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBVcmxFbmNv
ZGUoY29uc3QgY2hhciogc3RyKTsKKworICBTdHJlYW1pbmdMaXN0ZW5lcihjb25zdCBzdGQ6OnN0
cmluZyYgaG9zdCwgY29uc3Qgc3RkOjpzdHJpbmcmIHBvcnQpCisgICAgICA6IHNvY2tldF93cml0
ZXJfKG5ldyBTb2NrZXRXcml0ZXIoaG9zdCwgcG9ydCkpIHsKKyAgICBTdGFydCgpOworICB9CisK
KyAgZXhwbGljaXQgU3RyZWFtaW5nTGlzdGVuZXIoQWJzdHJhY3RTb2NrZXRXcml0ZXIqIHNvY2tl
dF93cml0ZXIpCisgICAgICA6IHNvY2tldF93cml0ZXJfKHNvY2tldF93cml0ZXIpIHsgU3RhcnQo
KTsgfQorCisgIHZvaWQgT25UZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKiB1bml0
X3Rlc3QgKi8pIHsKKyAgICBTZW5kTG4oImV2ZW50PVRlc3RQcm9ncmFtU3RhcnQiKTsKKyAgfQor
CisgIHZvaWQgT25UZXN0UHJvZ3JhbUVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KSB7Cisg
ICAgLy8gTm90ZSB0aGF0IEdvb2dsZSBUZXN0IGN1cnJlbnQgb25seSByZXBvcnQgZWxhcHNlZCB0
aW1lIGZvciBlYWNoCisgICAgLy8gdGVzdCBpdGVyYXRpb24sIG5vdCBmb3IgdGhlIGVudGlyZSB0
ZXN0IHByb2dyYW0uCisgICAgU2VuZExuKCJldmVudD1UZXN0UHJvZ3JhbUVuZCZwYXNzZWQ9IiAr
IEZvcm1hdEJvb2wodW5pdF90ZXN0LlBhc3NlZCgpKSk7CisKKyAgICAvLyBOb3RpZnkgdGhlIHN0
cmVhbWluZyBzZXJ2ZXIgdG8gc3RvcC4KKyAgICBzb2NrZXRfd3JpdGVyXy0+Q2xvc2VDb25uZWN0
aW9uKCk7CisgIH0KKworICB2b2lkIE9uVGVzdEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVuaXRUZXN0
JiAvKiB1bml0X3Rlc3QgKi8sIGludCBpdGVyYXRpb24pIHsKKyAgICBTZW5kTG4oImV2ZW50PVRl
c3RJdGVyYXRpb25TdGFydCZpdGVyYXRpb249IiArCisgICAgICAgICAgIFN0cmVhbWFibGVUb1N0
cmluZyhpdGVyYXRpb24pKTsKKyAgfQorCisgIHZvaWQgT25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0
IFVuaXRUZXN0JiB1bml0X3Rlc3QsIGludCAvKiBpdGVyYXRpb24gKi8pIHsKKyAgICBTZW5kTG4o
ImV2ZW50PVRlc3RJdGVyYXRpb25FbmQmcGFzc2VkPSIgKworICAgICAgICAgICBGb3JtYXRCb29s
KHVuaXRfdGVzdC5QYXNzZWQoKSkgKyAiJmVsYXBzZWRfdGltZT0iICsKKyAgICAgICAgICAgU3Ry
ZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5lbGFwc2VkX3RpbWUoKSkgKyAibXMiKTsKKyAgfQor
CisgIHZvaWQgT25UZXN0Q2FzZVN0YXJ0KGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKKyAg
ICBTZW5kTG4oc3RkOjpzdHJpbmcoImV2ZW50PVRlc3RDYXNlU3RhcnQmbmFtZT0iKSArIHRlc3Rf
Y2FzZS5uYW1lKCkpOworICB9CisKKyAgdm9pZCBPblRlc3RDYXNlRW5kKGNvbnN0IFRlc3RDYXNl
JiB0ZXN0X2Nhc2UpIHsKKyAgICBTZW5kTG4oImV2ZW50PVRlc3RDYXNlRW5kJnBhc3NlZD0iICsg
Rm9ybWF0Qm9vbCh0ZXN0X2Nhc2UuUGFzc2VkKCkpCisgICAgICAgICAgICsgIiZlbGFwc2VkX3Rp
bWU9IiArIFN0cmVhbWFibGVUb1N0cmluZyh0ZXN0X2Nhc2UuZWxhcHNlZF90aW1lKCkpCisgICAg
ICAgICAgICsgIm1zIik7CisgIH0KKworICB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZv
JiB0ZXN0X2luZm8pIHsKKyAgICBTZW5kTG4oc3RkOjpzdHJpbmcoImV2ZW50PVRlc3RTdGFydCZu
YW1lPSIpICsgdGVzdF9pbmZvLm5hbWUoKSk7CisgIH0KKworICB2b2lkIE9uVGVzdEVuZChjb25z
dCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CisgICAgU2VuZExuKCJldmVudD1UZXN0RW5kJnBhc3Nl
ZD0iICsKKyAgICAgICAgICAgRm9ybWF0Qm9vbCgodGVzdF9pbmZvLnJlc3VsdCgpKS0+UGFzc2Vk
KCkpICsKKyAgICAgICAgICAgIiZlbGFwc2VkX3RpbWU9IiArCisgICAgICAgICAgIFN0cmVhbWFi
bGVUb1N0cmluZygodGVzdF9pbmZvLnJlc3VsdCgpKS0+ZWxhcHNlZF90aW1lKCkpICsgIm1zIik7
CisgIH0KKworICB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRl
c3RfcGFydF9yZXN1bHQpIHsKKyAgICBjb25zdCBjaGFyKiBmaWxlX25hbWUgPSB0ZXN0X3BhcnRf
cmVzdWx0LmZpbGVfbmFtZSgpOworICAgIGlmIChmaWxlX25hbWUgPT0gTlVMTCkKKyAgICAgIGZp
bGVfbmFtZSA9ICIiOworICAgIFNlbmRMbigiZXZlbnQ9VGVzdFBhcnRSZXN1bHQmZmlsZT0iICsg
VXJsRW5jb2RlKGZpbGVfbmFtZSkgKworICAgICAgICAgICAiJmxpbmU9IiArIFN0cmVhbWFibGVU
b1N0cmluZyh0ZXN0X3BhcnRfcmVzdWx0LmxpbmVfbnVtYmVyKCkpICsKKyAgICAgICAgICAgIiZt
ZXNzYWdlPSIgKyBVcmxFbmNvZGUodGVzdF9wYXJ0X3Jlc3VsdC5tZXNzYWdlKCkpKTsKKyAgfQor
CisgcHJpdmF0ZToKKyAgLy8gU2VuZHMgdGhlIGdpdmVuIG1lc3NhZ2UgYW5kIGEgbmV3bGluZSB0
byB0aGUgc29ja2V0LgorICB2b2lkIFNlbmRMbihjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkg
eyBzb2NrZXRfd3JpdGVyXy0+U2VuZExuKG1lc3NhZ2UpOyB9CisKKyAgLy8gQ2FsbGVkIGF0IHRo
ZSBzdGFydCBvZiBzdHJlYW1pbmcgdG8gbm90aWZ5IHRoZSByZWNlaXZlciB3aGF0CisgIC8vIHBy
b3RvY29sIHdlIGFyZSB1c2luZy4KKyAgdm9pZCBTdGFydCgpIHsgU2VuZExuKCJndGVzdF9zdHJl
YW1pbmdfcHJvdG9jb2xfdmVyc2lvbj0xLjAiKTsgfQorCisgIHN0ZDo6c3RyaW5nIEZvcm1hdEJv
b2woYm9vbCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPyAiMSIgOiAiMCI7IH0KKworICBjb25zdCBz
Y29wZWRfcHRyPEFic3RyYWN0U29ja2V0V3JpdGVyPiBzb2NrZXRfd3JpdGVyXzsKKworICBHVEVT
VF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFN0cmVhbWluZ0xpc3RlbmVyKTsKK307ICAvLyBj
bGFzcyBTdHJlYW1pbmdMaXN0ZW5lcgorCisjZW5kaWYgIC8vIEdURVNUX0NBTl9TVFJFQU1fUkVT
VUxUU18KKwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGlu
ZwogCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkgIC8vICA0MjUxCisKICNlbmRp
ZiAgLy8gR1RFU1RfU1JDX0dURVNUX0lOVEVSTkFMX0lOTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXBvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYwppbmRleCBiOTUwNGY1NmFlNmY5M2UxMjZkMmI1NjhhN2Q5
N2RiNTE3ZmI4M2U0Li5mZWNiNWQxMWMyMTI5NmE5MTgxYTExMjgwMjI2MDY3YjY0M2VkZDA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYwpAQCAtMjYsNDIgKzI2
LDUyIEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0v
LwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCi0jaW5jbHVkZSA8
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtcG9ydC5oIgogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+
CiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxmc3Ry
ZWFtPgogCi0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSNpbmNsdWRlIDx3aW5kb3dzLmg+
ICAvLyBGb3IgVGVybWluYXRlUHJvY2VzcygpCi0jZWxpZiBHVEVTVF9PU19XSU5ET1dTCi0jaW5j
bHVkZSA8aW8uaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2lmIEdURVNUX09TX1dJTkRPV1MK
KyMgaW5jbHVkZSA8d2luZG93cy5oPgorIyBpbmNsdWRlIDxpby5oPgorIyBpbmNsdWRlIDxzeXMv
c3RhdC5oPgorIyBpbmNsdWRlIDxtYXA+ICAvLyBVc2VkIGluIFRocmVhZExvY2FsLgogI2Vsc2UK
LSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
KyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAogI2lm
IEdURVNUX09TX01BQwotI2luY2x1ZGUgPG1hY2gvbWFjaF9pbml0Lmg+Ci0jaW5jbHVkZSA8bWFj
aC90YXNrLmg+Ci0jaW5jbHVkZSA8bWFjaC92bV9tYXAuaD4KKyMgaW5jbHVkZSA8bWFjaC9tYWNo
X2luaXQuaD4KKyMgaW5jbHVkZSA8bWFjaC90YXNrLmg+CisjIGluY2x1ZGUgPG1hY2gvdm1fbWFw
Lmg+CiAjZW5kaWYgIC8vIEdURVNUX09TX01BQwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3Bp
Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oPgotI2luY2x1ZGUgPGd0ZXN0L2lu
dGVybmFsL2d0ZXN0LXN0cmluZy5oPgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0
aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0
IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBv
ciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBw
cmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwt
aW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQor
I2lmIEdURVNUX09TX1FOWAorIyBpbmNsdWRlIDxkZXZjdGwuaD4KKyMgaW5jbHVkZSA8ZmNudGwu
aD4KKyMgaW5jbHVkZSA8c3lzL3Byb2Nmcy5oPgorI2VuZGlmICAvLyBHVEVTVF9PU19RTlgKKwor
I2lmIEdURVNUX09TX0FJWAorIyBpbmNsdWRlIDxwcm9jaW5mby5oPgorIyBpbmNsdWRlIDxzeXMv
dHlwZXMuaD4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfQUlYCisKKyNpZiBHVEVTVF9PU19GVUNIU0lB
CisjIGluY2x1ZGUgPHppcmNvbi9wcm9jZXNzLmg+CisjIGluY2x1ZGUgPHppcmNvbi9zeXNjYWxs
cy5oPgorI2VuZGlmICAvLyBHVEVTVF9PU19GVUNIU0lBCisKKyNpbmNsdWRlICJndGVzdC9ndGVz
dC1zcGkuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1tZXNzYWdlLmgiCisjaW5jbHVkZSAiZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9n
dGVzdC1zdHJpbmcuaCIKICNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5k
ZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFj
ZSBpbnRlcm5hbCB7CkBAIC03NSwxMCArODUsMzEgQEAgY29uc3QgaW50IGtTdGRPdXRGaWxlbm8g
PSBTVERPVVRfRklMRU5POwogY29uc3QgaW50IGtTdGRFcnJGaWxlbm8gPSBTVERFUlJfRklMRU5P
OwogI2VuZGlmICAvLyBfTVNDX1ZFUgogCi0jaWYgR1RFU1RfT1NfTUFDCisjaWYgR1RFU1RfT1Nf
TElOVVgKKworbmFtZXNwYWNlIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorVCBSZWFkUHJvY0Zp
bGVGaWVsZChjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUsIGludCBmaWVsZCkgeworICBzdGQ6
OnN0cmluZyBkdW1teTsKKyAgc3RkOjppZnN0cmVhbSBmaWxlKGZpbGVuYW1lLmNfc3RyKCkpOwor
ICB3aGlsZSAoZmllbGQtLSA+IDApIHsKKyAgICBmaWxlID4+IGR1bW15OworICB9CisgIFQgb3V0
cHV0ID0gMDsKKyAgZmlsZSA+PiBvdXRwdXQ7CisgIHJldHVybiBvdXRwdXQ7Cit9Cit9ICAvLyBu
YW1lc3BhY2UKKworLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSB0aHJlYWRzLCBvciAw
IHdoZW4gdGhlcmUgaXMgYW4gZXJyb3IuCitzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CisgIGNv
bnN0IHN0ZDo6c3RyaW5nIGZpbGVuYW1lID0KKyAgICAgIChNZXNzYWdlKCkgPDwgIi9wcm9jLyIg
PDwgZ2V0cGlkKCkgPDwgIi9zdGF0IikuR2V0U3RyaW5nKCk7CisgIHJldHVybiBSZWFkUHJvY0Zp
bGVGaWVsZDxpbnQ+KGZpbGVuYW1lLCAxOSk7Cit9CisKKyNlbGlmIEdURVNUX09TX01BQwogCi0v
LyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBydW5uaW5nIGluIHRoZSBwcm9jZXNzLCBv
ciAwIHRvIGluZGljYXRlIHRoYXQKLS8vIHdlIGNhbm5vdCBkZXRlY3QgaXQuCiBzaXplX3QgR2V0
VGhyZWFkQ291bnQoKSB7CiAgIGNvbnN0IHRhc2tfdCB0YXNrID0gbWFjaF90YXNrX3NlbGYoKTsK
ICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCB0aHJlYWRfY291bnQ7CkBAIC05Niw2ICsxMjcsNTgg
QEAgc2l6ZV90IEdldFRocmVhZENvdW50KCkgewogICB9CiB9CiAKKyNlbGlmIEdURVNUX09TX1FO
WAorCisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBydW5uaW5nIGluIHRoZSBwcm9j
ZXNzLCBvciAwIHRvIGluZGljYXRlIHRoYXQKKy8vIHdlIGNhbm5vdCBkZXRlY3QgaXQuCitzaXpl
X3QgR2V0VGhyZWFkQ291bnQoKSB7CisgIGNvbnN0IGludCBmZCA9IG9wZW4oIi9wcm9jL3NlbGYv
YXMiLCBPX1JET05MWSk7CisgIGlmIChmZCA8IDApIHsKKyAgICByZXR1cm4gMDsKKyAgfQorICBw
cm9jZnNfaW5mbyBwcm9jZXNzX2luZm87CisgIGNvbnN0IGludCBzdGF0dXMgPQorICAgICAgZGV2
Y3RsKGZkLCBEQ01EX1BST0NfSU5GTywgJnByb2Nlc3NfaW5mbywgc2l6ZW9mKHByb2Nlc3NfaW5m
byksIE5VTEwpOworICBjbG9zZShmZCk7CisgIGlmIChzdGF0dXMgPT0gRU9LKSB7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHNpemVfdD4ocHJvY2Vzc19pbmZvLm51bV90aHJlYWRzKTsKKyAgfSBl
bHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCisjZWxpZiBHVEVTVF9PU19BSVgKKworc2l6
ZV90IEdldFRocmVhZENvdW50KCkgeworICBzdHJ1Y3QgcHJvY2VudHJ5NjQgZW50cnk7CisgIHBp
ZF90IHBpZCA9IGdldHBpZCgpOworICBpbnQgc3RhdHVzID0gZ2V0cHJvY3M2NCgmZW50cnksIHNp
emVvZihlbnRyeSksIE5VTEwsIDAsICZwaWQsIDEpOworICBpZiAoc3RhdHVzID09IDEpIHsKKyAg
ICByZXR1cm4gZW50cnkucGlfdGhjb3VudDsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAg
fQorfQorCisjZWxpZiBHVEVTVF9PU19GVUNIU0lBCisKK3NpemVfdCBHZXRUaHJlYWRDb3VudCgp
IHsKKyAgaW50IGR1bW15X2J1ZmZlcjsKKyAgc2l6ZV90IGF2YWlsOworICB6eF9zdGF0dXNfdCBz
dGF0dXMgPSB6eF9vYmplY3RfZ2V0X2luZm8oCisgICAgICB6eF9wcm9jZXNzX3NlbGYoKSwKKyAg
ICAgIFpYX0lORk9fUFJPQ0VTU19USFJFQURTLAorICAgICAgJmR1bW15X2J1ZmZlciwKKyAgICAg
IDAsCisgICAgICBudWxscHRyLAorICAgICAgJmF2YWlsKTsKKyAgaWYgKHN0YXR1cyA9PSBaWF9P
SykgeworICAgIHJldHVybiBhdmFpbDsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQor
fQorCiAjZWxzZQogCiBzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CkBAIC0xMDQsNyArMTg3LDQz
MiBAQCBzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CiAgIHJldHVybiAwOwogfQogCi0jZW5kaWYg
IC8vIEdURVNUX09TX01BQworI2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCisjaWYgR1RFU1Rf
SVNfVEhSRUFEU0FGRSAmJiBHVEVTVF9PU19XSU5ET1dTCisKK3ZvaWQgU2xlZXBNaWxsaXNlY29u
ZHMoaW50IG4pIHsKKyAgOjpTbGVlcChuKTsKK30KKworQXV0b0hhbmRsZTo6QXV0b0hhbmRsZSgp
CisgICAgOiBoYW5kbGVfKElOVkFMSURfSEFORExFX1ZBTFVFKSB7fQorCitBdXRvSGFuZGxlOjpB
dXRvSGFuZGxlKEhhbmRsZSBoYW5kbGUpCisgICAgOiBoYW5kbGVfKGhhbmRsZSkge30KKworQXV0
b0hhbmRsZTo6fkF1dG9IYW5kbGUoKSB7CisgIFJlc2V0KCk7Cit9CisKK0F1dG9IYW5kbGU6Okhh
bmRsZSBBdXRvSGFuZGxlOjpHZXQoKSBjb25zdCB7CisgIHJldHVybiBoYW5kbGVfOworfQorCit2
b2lkIEF1dG9IYW5kbGU6OlJlc2V0KCkgeworICBSZXNldChJTlZBTElEX0hBTkRMRV9WQUxVRSk7
Cit9CisKK3ZvaWQgQXV0b0hhbmRsZTo6UmVzZXQoSEFORExFIGhhbmRsZSkgeworICAvLyBSZXNl
dHRpbmcgd2l0aCB0aGUgc2FtZSBoYW5kbGUgd2UgYWxyZWFkeSBvd24gaXMgaW52YWxpZC4KKyAg
aWYgKGhhbmRsZV8gIT0gaGFuZGxlKSB7CisgICAgaWYgKElzQ2xvc2VhYmxlKCkpIHsKKyAgICAg
IDo6Q2xvc2VIYW5kbGUoaGFuZGxlXyk7CisgICAgfQorICAgIGhhbmRsZV8gPSBoYW5kbGU7Cisg
IH0gZWxzZSB7CisgICAgR1RFU1RfQ0hFQ0tfKCFJc0Nsb3NlYWJsZSgpKQorICAgICAgICA8PCAi
UmVzZXR0aW5nIGEgdmFsaWQgaGFuZGxlIHRvIGl0c2VsZiBpcyBsaWtlbHkgYSBwcm9ncmFtbWVy
IGVycm9yICIKKyAgICAgICAgICAgICJhbmQgdGh1cyBub3QgYWxsb3dlZC4iOworICB9Cit9CisK
K2Jvb2wgQXV0b0hhbmRsZTo6SXNDbG9zZWFibGUoKSBjb25zdCB7CisgIC8vIERpZmZlcmVudCBX
aW5kb3dzIEFQSXMgbWF5IHVzZSBlaXRoZXIgb2YgdGhlc2UgdmFsdWVzIHRvIHJlcHJlc2VudCBh
bgorICAvLyBpbnZhbGlkIGhhbmRsZS4KKyAgcmV0dXJuIGhhbmRsZV8gIT0gTlVMTCAmJiBoYW5k
bGVfICE9IElOVkFMSURfSEFORExFX1ZBTFVFOworfQorCitOb3RpZmljYXRpb246Ok5vdGlmaWNh
dGlvbigpCisgICAgOiBldmVudF8oOjpDcmVhdGVFdmVudChOVUxMLCAgIC8vIERlZmF1bHQgc2Vj
dXJpdHkgYXR0cmlidXRlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsICAgLy8g
RG8gbm90IHJlc2V0IGF1dG9tYXRpY2FsbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBG
QUxTRSwgIC8vIEluaXRpYWxseSB1bnNldC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V
TEwpKSB7ICAvLyBBbm9ueW1vdXMgZXZlbnQuCisgIEdURVNUX0NIRUNLXyhldmVudF8uR2V0KCkg
IT0gTlVMTCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpOb3RpZnkoKSB7CisgIEdURVNUX0NI
RUNLXyg6OlNldEV2ZW50KGV2ZW50Xy5HZXQoKSkgIT0gRkFMU0UpOworfQorCit2b2lkIE5vdGlm
aWNhdGlvbjo6V2FpdEZvck5vdGlmaWNhdGlvbigpIHsKKyAgR1RFU1RfQ0hFQ0tfKAorICAgICAg
OjpXYWl0Rm9yU2luZ2xlT2JqZWN0KGV2ZW50Xy5HZXQoKSwgSU5GSU5JVEUpID09IFdBSVRfT0JK
RUNUXzApOworfQorCitNdXRleDo6TXV0ZXgoKQorICAgIDogb3duZXJfdGhyZWFkX2lkXygwKSwK
KyAgICAgIHR5cGVfKGtEeW5hbWljKSwKKyAgICAgIGNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFz
ZV8oMCksCisgICAgICBjcml0aWNhbF9zZWN0aW9uXyhuZXcgQ1JJVElDQUxfU0VDVElPTikgewor
ICA6OkluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oY3JpdGljYWxfc2VjdGlvbl8pOworfQorCitN
dXRleDo6fk11dGV4KCkgeworICAvLyBTdGF0aWMgbXV0ZXhlcyBhcmUgbGVha2VkIGludGVudGlv
bmFsbHkuIEl0IGlzIG5vdCB0aHJlYWQtc2FmZSB0byB0cnkKKyAgLy8gdG8gY2xlYW4gdGhlbSB1
cC4KKyAgLy8gRklYTUU6IFN3aXRjaCB0byBTbGltIFJlYWRlci9Xcml0ZXIgKFNSVykgTG9ja3Ms
IHdoaWNoIHJlcXVpcmVzCisgIC8vIG5vdGhpbmcgdG8gY2xlYW4gaXQgdXAgYnV0IGlzIGF2YWls
YWJsZSBvbmx5IG9uIFZpc3RhIGFuZCBsYXRlci4KKyAgLy8gaHR0cHM6Ly9kb2NzLm1pY3Jvc29m
dC5jb20vZW4tdXMvd2luZG93cy9kZXNrdG9wL1N5bmMvc2xpbS1yZWFkZXItd3JpdGVyLS1zcnct
LWxvY2tzCisgIGlmICh0eXBlXyA9PSBrRHluYW1pYykgeworICAgIDo6RGVsZXRlQ3JpdGljYWxT
ZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb25fKTsKKyAgICBkZWxldGUgY3JpdGljYWxfc2VjdGlvbl87
CisgICAgY3JpdGljYWxfc2VjdGlvbl8gPSBOVUxMOworICB9Cit9CisKK3ZvaWQgTXV0ZXg6Okxv
Y2soKSB7CisgIFRocmVhZFNhZmVMYXp5SW5pdCgpOworICA6OkVudGVyQ3JpdGljYWxTZWN0aW9u
KGNyaXRpY2FsX3NlY3Rpb25fKTsKKyAgb3duZXJfdGhyZWFkX2lkXyA9IDo6R2V0Q3VycmVudFRo
cmVhZElkKCk7Cit9CisKK3ZvaWQgTXV0ZXg6OlVubG9jaygpIHsKKyAgVGhyZWFkU2FmZUxhenlJ
bml0KCk7CisgIC8vIFdlIGRvbid0IHByb3RlY3Qgd3JpdGluZyB0byBvd25lcl90aHJlYWRfaWRf
IGhlcmUsIGFzIGl0J3MgdGhlCisgIC8vIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3Vy
ZSB0aGF0IHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUKKyAgLy8gbXV0ZXggd2hlbiB0aGlz
IGlzIGNhbGxlZC4KKyAgb3duZXJfdGhyZWFkX2lkXyA9IDA7CisgIDo6TGVhdmVDcml0aWNhbFNl
Y3Rpb24oY3JpdGljYWxfc2VjdGlvbl8pOworfQorCisvLyBEb2VzIG5vdGhpbmcgaWYgdGhlIGN1
cnJlbnQgdGhyZWFkIGhvbGRzIHRoZSBtdXRleC4gT3RoZXJ3aXNlLCBjcmFzaGVzCisvLyB3aXRo
IGhpZ2ggcHJvYmFiaWxpdHkuCit2b2lkIE11dGV4OjpBc3NlcnRIZWxkKCkgeworICBUaHJlYWRT
YWZlTGF6eUluaXQoKTsKKyAgR1RFU1RfQ0hFQ0tfKG93bmVyX3RocmVhZF9pZF8gPT0gOjpHZXRD
dXJyZW50VGhyZWFkSWQoKSkKKyAgICAgIDw8ICJUaGUgY3VycmVudCB0aHJlYWQgaXMgbm90IGhv
bGRpbmcgdGhlIG11dGV4IEAiIDw8IHRoaXM7Cit9CisKK25hbWVzcGFjZSB7CisKKy8vIFVzZSB0
aGUgUkFJSSBpZGlvbSB0byBmbGFnIG1lbSBhbGxvY3MgdGhhdCBhcmUgaW50ZW50aW9uYWxseSBu
ZXZlcgorLy8gZGVhbGxvY2F0ZWQuIFRoZSBtb3RpdmF0aW9uIGlzIHRvIHNpbGVuY2UgdGhlIGZh
bHNlIHBvc2l0aXZlIG1lbSBsZWFrcworLy8gdGhhdCBhcmUgcmVwb3J0ZWQgYnkgdGhlIGRlYnVn
IHZlcnNpb24gb2YgTVMncyBDUlQgd2hpY2ggY2FuIG9ubHkgZGV0ZWN0CisvLyBpZiBhbiBhbGxv
YyBpcyBtaXNzaW5nIGEgbWF0Y2hpbmcgZGVhbGxvY2F0aW9uLgorLy8gRXhhbXBsZToKKy8vICAg
IE1lbW9yeUlzTm90RGVhbGxvY2F0ZWQgbWVtb3J5X2lzX25vdF9kZWFsbG9jYXRlZDsKKy8vICAg
IGNyaXRpY2FsX3NlY3Rpb25fID0gbmV3IENSSVRJQ0FMX1NFQ1RJT047CisvLworY2xhc3MgTWVt
b3J5SXNOb3REZWFsbG9jYXRlZAoreworIHB1YmxpYzoKKyAgTWVtb3J5SXNOb3REZWFsbG9jYXRl
ZCgpIDogb2xkX2NydGRiZ19mbGFnXygwKSB7CisjaWZkZWYgX01TQ19WRVIKKyAgICBvbGRfY3J0
ZGJnX2ZsYWdfID0gX0NydFNldERiZ0ZsYWcoX0NSVERCR19SRVBPUlRfRkxBRyk7CisgICAgLy8g
U2V0IGhlYXAgYWxsb2NhdGlvbiBibG9jayB0eXBlIHRvIF9JR05PUkVfQkxPQ0sgc28gdGhhdCBN
UyBkZWJ1ZyBDUlQKKyAgICAvLyBkb2Vzbid0IHJlcG9ydCBtZW0gbGVhayBpZiB0aGVyZSdzIG5v
IG1hdGNoaW5nIGRlYWxsb2NhdGlvbi4KKyAgICBfQ3J0U2V0RGJnRmxhZyhvbGRfY3J0ZGJnX2Zs
YWdfICYgfl9DUlREQkdfQUxMT0NfTUVNX0RGKTsKKyNlbmRpZiAgLy8gIF9NU0NfVkVSCisgIH0K
KworICB+TWVtb3J5SXNOb3REZWFsbG9jYXRlZCgpIHsKKyNpZmRlZiBfTVNDX1ZFUgorICAgIC8v
IFJlc3RvcmUgdGhlIG9yaWdpbmFsIF9DUlREQkdfQUxMT0NfTUVNX0RGIGZsYWcKKyAgICBfQ3J0
U2V0RGJnRmxhZyhvbGRfY3J0ZGJnX2ZsYWdfKTsKKyNlbmRpZiAgLy8gIF9NU0NfVkVSCisgIH0K
KworIHByaXZhdGU6CisgIGludCBvbGRfY3J0ZGJnX2ZsYWdfOworCisgIEdURVNUX0RJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTl8oTWVtb3J5SXNOb3REZWFsbG9jYXRlZCk7Cit9OworCit9ICAvLyBu
YW1lc3BhY2UKKworLy8gSW5pdGlhbGl6ZXMgb3duZXJfdGhyZWFkX2lkXyBhbmQgY3JpdGljYWxf
c2VjdGlvbl8gaW4gc3RhdGljIG11dGV4ZXMuCit2b2lkIE11dGV4OjpUaHJlYWRTYWZlTGF6eUlu
aXQoKSB7CisgIC8vIER5bmFtaWMgbXV0ZXhlcyBhcmUgaW5pdGlhbGl6ZWQgaW4gdGhlIGNvbnN0
cnVjdG9yLgorICBpZiAodHlwZV8gPT0ga1N0YXRpYykgeworICAgIHN3aXRjaCAoCisgICAgICAg
IDo6SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoJmNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFz
ZV8sIDFMLCAwTCkpIHsKKyAgICAgIGNhc2UgMDoKKyAgICAgICAgLy8gSWYgY3JpdGljYWxfc2Vj
dGlvbl9pbml0X3BoYXNlXyB3YXMgMCBiZWZvcmUgdGhlIGV4Y2hhbmdlLCB3ZQorICAgICAgICAv
LyBhcmUgdGhlIGZpcnN0IHRvIHRlc3QgaXQgYW5kIG5lZWQgdG8gcGVyZm9ybSB0aGUgaW5pdGlh
bGl6YXRpb24uCisgICAgICAgIG93bmVyX3RocmVhZF9pZF8gPSAwOworICAgICAgICB7CisgICAg
ICAgICAgLy8gVXNlIFJBSUkgdG8gZmxhZyB0aGF0IGZvbGxvd2luZyBtZW0gYWxsb2MgaXMgbmV2
ZXIgZGVhbGxvY2F0ZWQuCisgICAgICAgICAgTWVtb3J5SXNOb3REZWFsbG9jYXRlZCBtZW1vcnlf
aXNfbm90X2RlYWxsb2NhdGVkOworICAgICAgICAgIGNyaXRpY2FsX3NlY3Rpb25fID0gbmV3IENS
SVRJQ0FMX1NFQ1RJT047CisgICAgICAgIH0KKyAgICAgICAgOjpJbml0aWFsaXplQ3JpdGljYWxT
ZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb25fKTsKKyAgICAgICAgLy8gVXBkYXRlcyB0aGUgY3JpdGlj
YWxfc2VjdGlvbl9pbml0X3BoYXNlXyB0byAyIHRvIHNpZ25hbAorICAgICAgICAvLyBpbml0aWFs
aXphdGlvbiBjb21wbGV0ZS4KKyAgICAgICAgR1RFU1RfQ0hFQ0tfKDo6SW50ZXJsb2NrZWRDb21w
YXJlRXhjaGFuZ2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICZjcml0aWNhbF9zZWN0aW9u
X2luaXRfcGhhc2VfLCAyTCwgMUwpID09CisgICAgICAgICAgICAgICAgICAgICAgMUwpOworICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgMToKKyAgICAgICAgLy8gU29tZWJvZHkgZWxzZSBpcyBh
bHJlYWR5IGluaXRpYWxpemluZyB0aGUgbXV0ZXg7IHNwaW4gdW50aWwgdGhleQorICAgICAgICAv
LyBhcmUgZG9uZS4KKyAgICAgICAgd2hpbGUgKDo6SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2Uo
JmNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFzZV8sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDJMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyTCkgIT0gMkwpIHsKKyAgICAgICAgICAvLyBQb3NzaWJseSB5aWVsZHMgdGhl
IHJlc3Qgb2YgdGhlIHRocmVhZCdzIHRpbWUgc2xpY2UgdG8gb3RoZXIKKyAgICAgICAgICAvLyB0
aHJlYWRzLgorICAgICAgICAgIDo6U2xlZXAoMCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7
CisKKyAgICAgIGNhc2UgMjoKKyAgICAgICAgYnJlYWs7ICAvLyBUaGUgbXV0ZXggaXMgYWxyZWFk
eSBpbml0aWFsaXplZCBhbmQgcmVhZHkgZm9yIHVzZS4KKworICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgR1RFU1RfQ0hFQ0tfKGZhbHNlKQorICAgICAgICAgICAgPDwgIlVuZXhwZWN0ZWQgdmFsdWUg
b2YgY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXyAiCisgICAgICAgICAgICA8PCAid2hpbGUg
aW5pdGlhbGl6aW5nIGEgc3RhdGljIG11dGV4LiI7CisgICAgfQorICB9Cit9CisKK25hbWVzcGFj
ZSB7CisKK2NsYXNzIFRocmVhZFdpdGhQYXJhbVN1cHBvcnQgOiBwdWJsaWMgVGhyZWFkV2l0aFBh
cmFtQmFzZSB7CisgcHVibGljOgorICBzdGF0aWMgSEFORExFIENyZWF0ZVRocmVhZChSdW5uYWJs
ZSogcnVubmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiog
dGhyZWFkX2Nhbl9zdGFydCkgeworICAgIFRocmVhZE1haW5QYXJhbSogcGFyYW0gPSBuZXcgVGhy
ZWFkTWFpblBhcmFtKHJ1bm5hYmxlLCB0aHJlYWRfY2FuX3N0YXJ0KTsKKyAgICBEV09SRCB0aHJl
YWRfaWQ7CisgICAgLy8gRklYTUU6IENvbnNpZGVyIHRvIHVzZSBfYmVnaW50aHJlYWRleCBpbnN0
ZWFkLgorICAgIEhBTkRMRSB0aHJlYWRfaGFuZGxlID0gOjpDcmVhdGVUaHJlYWQoCisgICAgICAg
IE5VTEwsICAgIC8vIERlZmF1bHQgc2VjdXJpdHkuCisgICAgICAgIDAsICAgICAgIC8vIERlZmF1
bHQgc3RhY2sgc2l6ZS4KKyAgICAgICAgJlRocmVhZFdpdGhQYXJhbVN1cHBvcnQ6OlRocmVhZE1h
aW4sCisgICAgICAgIHBhcmFtLCAgIC8vIFBhcmFtZXRlciB0byBUaHJlYWRNYWluU3RhdGljCisg
ICAgICAgIDB4MCwgICAgIC8vIERlZmF1bHQgY3JlYXRpb24gZmxhZ3MuCisgICAgICAgICZ0aHJl
YWRfaWQpOyAgLy8gTmVlZCBhIHZhbGlkIHBvaW50ZXIgZm9yIHRoZSBjYWxsIHRvIHdvcmsgdW5k
ZXIgV2luOTguCisgICAgR1RFU1RfQ0hFQ0tfKHRocmVhZF9oYW5kbGUgIT0gTlVMTCkgPDwgIkNy
ZWF0ZVRocmVhZCBmYWlsZWQgd2l0aCBlcnJvciAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgOjpHZXRMYXN0RXJyb3IoKSA8PCAiLiI7CisgICAgaWYgKHRocmVh
ZF9oYW5kbGUgPT0gTlVMTCkgeworICAgICAgZGVsZXRlIHBhcmFtOworICAgIH0KKyAgICByZXR1
cm4gdGhyZWFkX2hhbmRsZTsKKyAgfQorCisgcHJpdmF0ZToKKyAgc3RydWN0IFRocmVhZE1haW5Q
YXJhbSB7CisgICAgVGhyZWFkTWFpblBhcmFtKFJ1bm5hYmxlKiBydW5uYWJsZSwgTm90aWZpY2F0
aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KQorICAgICAgICA6IHJ1bm5hYmxlXyhydW5uYWJsZSksCisg
ICAgICAgICAgdGhyZWFkX2Nhbl9zdGFydF8odGhyZWFkX2Nhbl9zdGFydCkgeworICAgIH0KKyAg
ICBzY29wZWRfcHRyPFJ1bm5hYmxlPiBydW5uYWJsZV87CisgICAgLy8gRG9lcyBub3Qgb3duLgor
ICAgIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydF87CisgIH07CisKKyAgc3RhdGljIERX
T1JEIFdJTkFQSSBUaHJlYWRNYWluKHZvaWQqIHB0cikgeworICAgIC8vIFRyYW5zZmVycyBvd25l
cnNoaXAuCisgICAgc2NvcGVkX3B0cjxUaHJlYWRNYWluUGFyYW0+IHBhcmFtKHN0YXRpY19jYXN0
PFRocmVhZE1haW5QYXJhbSo+KHB0cikpOworICAgIGlmIChwYXJhbS0+dGhyZWFkX2Nhbl9zdGFy
dF8gIT0gTlVMTCkKKyAgICAgIHBhcmFtLT50aHJlYWRfY2FuX3N0YXJ0Xy0+V2FpdEZvck5vdGlm
aWNhdGlvbigpOworICAgIHBhcmFtLT5ydW5uYWJsZV8tPlJ1bigpOworICAgIHJldHVybiAwOwor
ICB9CisKKyAgLy8gUHJvaGliaXQgaW5zdGFudGlhdGlvbi4KKyAgVGhyZWFkV2l0aFBhcmFtU3Vw
cG9ydCgpOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkV2l0aFBh
cmFtU3VwcG9ydCk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UKKworVGhyZWFkV2l0aFBhcmFtQmFz
ZTo6VGhyZWFkV2l0aFBhcmFtQmFzZShSdW5uYWJsZSAqcnVubmFibGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFy
dCkKKyAgICAgIDogdGhyZWFkXyhUaHJlYWRXaXRoUGFyYW1TdXBwb3J0OjpDcmVhdGVUaHJlYWQo
cnVubmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRocmVhZF9jYW5fc3RhcnQpKSB7Cit9CisKK1RocmVhZFdpdGhQYXJhbUJhc2U6On5U
aHJlYWRXaXRoUGFyYW1CYXNlKCkgeworICBKb2luKCk7Cit9CisKK3ZvaWQgVGhyZWFkV2l0aFBh
cmFtQmFzZTo6Sm9pbigpIHsKKyAgR1RFU1RfQ0hFQ0tfKDo6V2FpdEZvclNpbmdsZU9iamVjdCh0
aHJlYWRfLkdldCgpLCBJTkZJTklURSkgPT0gV0FJVF9PQkpFQ1RfMCkKKyAgICAgIDw8ICJGYWls
ZWQgdG8gam9pbiB0aGUgdGhyZWFkIHdpdGggZXJyb3IgIiA8PCA6OkdldExhc3RFcnJvcigpIDw8
ICIuIjsKK30KKworLy8gTWFwcyBhIHRocmVhZCB0byBhIHNldCBvZiBUaHJlYWRJZFRvVGhyZWFk
TG9jYWxzIHRoYXQgaGF2ZSB2YWx1ZXMKKy8vIGluc3RhbnRpYXRlZCBvbiB0aGF0IHRocmVhZCBh
bmQgbm90aWZpZXMgdGhlbSB3aGVuIHRoZSB0aHJlYWQgZXhpdHMuICBBCisvLyBUaHJlYWRMb2Nh
bCBpbnN0YW5jZSBpcyBleHBlY3RlZCB0byBwZXJzaXN0IHVudGlsIGFsbCB0aHJlYWRzIGl0IGhh
cworLy8gdmFsdWVzIG9uIGhhdmUgdGVybWluYXRlZC4KK2NsYXNzIFRocmVhZExvY2FsUmVnaXN0
cnlJbXBsIHsKKyBwdWJsaWM6CisgIC8vIFJlZ2lzdGVycyB0aHJlYWRfbG9jYWxfaW5zdGFuY2Ug
YXMgaGF2aW5nIHZhbHVlIG9uIHRoZSBjdXJyZW50IHRocmVhZC4KKyAgLy8gUmV0dXJucyBhIHZh
bHVlIHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHRocmVhZCBmcm9tIG90aGVyIHRo
cmVhZHMuCisgIHN0YXRpYyBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogR2V0VmFsdWVPbkN1
cnJlbnRUaHJlYWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9p
bnN0YW5jZSkgeworICAgIERXT1JEIGN1cnJlbnRfdGhyZWFkID0gOjpHZXRDdXJyZW50VGhyZWFk
SWQoKTsKKyAgICBNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKKyAgICBUaHJlYWRJZFRvVGhyZWFk
TG9jYWxzKiBjb25zdCB0aHJlYWRfdG9fdGhyZWFkX2xvY2FscyA9CisgICAgICAgIEdldFRocmVh
ZExvY2Fsc01hcExvY2tlZCgpOworICAgIFRocmVhZElkVG9UaHJlYWRMb2NhbHM6Oml0ZXJhdG9y
IHRocmVhZF9sb2NhbF9wb3MgPQorICAgICAgICB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+Zmlu
ZChjdXJyZW50X3RocmVhZCk7CisgICAgaWYgKHRocmVhZF9sb2NhbF9wb3MgPT0gdGhyZWFkX3Rv
X3RocmVhZF9sb2NhbHMtPmVuZCgpKSB7CisgICAgICB0aHJlYWRfbG9jYWxfcG9zID0gdGhyZWFk
X3RvX3RocmVhZF9sb2NhbHMtPmluc2VydCgKKyAgICAgICAgICBzdGQ6Om1ha2VfcGFpcihjdXJy
ZW50X3RocmVhZCwgVGhyZWFkTG9jYWxWYWx1ZXMoKSkpLmZpcnN0OworICAgICAgU3RhcnRXYXRj
aGVyVGhyZWFkRm9yKGN1cnJlbnRfdGhyZWFkKTsKKyAgICB9CisgICAgVGhyZWFkTG9jYWxWYWx1
ZXMmIHRocmVhZF9sb2NhbF92YWx1ZXMgPSB0aHJlYWRfbG9jYWxfcG9zLT5zZWNvbmQ7CisgICAg
VGhyZWFkTG9jYWxWYWx1ZXM6Oml0ZXJhdG9yIHZhbHVlX3BvcyA9CisgICAgICAgIHRocmVhZF9s
b2NhbF92YWx1ZXMuZmluZCh0aHJlYWRfbG9jYWxfaW5zdGFuY2UpOworICAgIGlmICh2YWx1ZV9w
b3MgPT0gdGhyZWFkX2xvY2FsX3ZhbHVlcy5lbmQoKSkgeworICAgICAgdmFsdWVfcG9zID0KKyAg
ICAgICAgICB0aHJlYWRfbG9jYWxfdmFsdWVzCisgICAgICAgICAgICAgIC5pbnNlcnQoc3RkOjpt
YWtlX3BhaXIoCisgICAgICAgICAgICAgICAgICB0aHJlYWRfbG9jYWxfaW5zdGFuY2UsCisgICAg
ICAgICAgICAgICAgICBsaW5rZWRfcHRyPFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlPigKKyAg
ICAgICAgICAgICAgICAgICAgICB0aHJlYWRfbG9jYWxfaW5zdGFuY2UtPk5ld1ZhbHVlRm9yQ3Vy
cmVudFRocmVhZCgpKSkpCisgICAgICAgICAgICAgIC5maXJzdDsKKyAgICB9CisgICAgcmV0dXJu
IHZhbHVlX3Bvcy0+c2Vjb25kLmdldCgpOworICB9CisKKyAgc3RhdGljIHZvaWQgT25UaHJlYWRM
b2NhbERlc3Ryb3llZCgKKyAgICAgIGNvbnN0IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2Fs
X2luc3RhbmNlKSB7CisgICAgc3RkOjp2ZWN0b3I8bGlua2VkX3B0cjxUaHJlYWRMb2NhbFZhbHVl
SG9sZGVyQmFzZT4gPiB2YWx1ZV9ob2xkZXJzOworICAgIC8vIENsZWFuIHVwIHRoZSBUaHJlYWRM
b2NhbFZhbHVlcyBkYXRhIHN0cnVjdHVyZSB3aGlsZSBob2xkaW5nIHRoZSBsb2NrLCBidXQKKyAg
ICAvLyBkZWZlciB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhlIFRocmVhZExvY2FsVmFsdWVIb2xkZXJC
YXNlcy4KKyAgICB7CisgICAgICBNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKKyAgICAgIFRocmVh
ZElkVG9UaHJlYWRMb2NhbHMqIGNvbnN0IHRocmVhZF90b190aHJlYWRfbG9jYWxzID0KKyAgICAg
ICAgICBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKTsKKyAgICAgIGZvciAoVGhyZWFkSWRUb1Ro
cmVhZExvY2Fsczo6aXRlcmF0b3IgaXQgPQorICAgICAgICAgIHRocmVhZF90b190aHJlYWRfbG9j
YWxzLT5iZWdpbigpOworICAgICAgICAgIGl0ICE9IHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5l
bmQoKTsKKyAgICAgICAgICArK2l0KSB7CisgICAgICAgIFRocmVhZExvY2FsVmFsdWVzJiB0aHJl
YWRfbG9jYWxfdmFsdWVzID0gaXQtPnNlY29uZDsKKyAgICAgICAgVGhyZWFkTG9jYWxWYWx1ZXM6
Oml0ZXJhdG9yIHZhbHVlX3BvcyA9CisgICAgICAgICAgICB0aHJlYWRfbG9jYWxfdmFsdWVzLmZp
bmQodGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKKyAgICAgICAgaWYgKHZhbHVlX3BvcyAhPSB0aHJl
YWRfbG9jYWxfdmFsdWVzLmVuZCgpKSB7CisgICAgICAgICAgdmFsdWVfaG9sZGVycy5wdXNoX2Jh
Y2sodmFsdWVfcG9zLT5zZWNvbmQpOworICAgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMuZXJh
c2UodmFsdWVfcG9zKTsKKyAgICAgICAgICAvLyBUaGlzICdpZicgY2FuIG9ubHkgYmUgc3VjY2Vz
c2Z1bCBhdCBtb3N0IG9uY2UsIHNvIHRoZW9yZXRpY2FsbHkgd2UKKyAgICAgICAgICAvLyBjb3Vs
ZCBicmVhayBvdXQgb2YgdGhlIGxvb3AgaGVyZSwgYnV0IHdlIGRvbid0IGJvdGhlciBkb2luZyBz
by4KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICAvLyBPdXRzaWRlIHRoZSBsb2NrLCBs
ZXQgdGhlIGRlc3RydWN0b3IgZm9yICd2YWx1ZV9ob2xkZXJzJyBkZWFsbG9jYXRlIHRoZQorICAg
IC8vIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlcy4KKyAgfQorCisgIHN0YXRpYyB2b2lkIE9u
VGhyZWFkRXhpdChEV09SRCB0aHJlYWRfaWQpIHsKKyAgICBHVEVTVF9DSEVDS18odGhyZWFkX2lk
ICE9IDApIDw8IDo6R2V0TGFzdEVycm9yKCk7CisgICAgc3RkOjp2ZWN0b3I8bGlua2VkX3B0cjxU
aHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZT4gPiB2YWx1ZV9ob2xkZXJzOworICAgIC8vIENsZWFu
IHVwIHRoZSBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzIGRhdGEgc3RydWN0dXJlIHdoaWxlIGhvbGRp
bmcgdGhlCisgICAgLy8gbG9jaywgYnV0IGRlZmVyIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgVGhy
ZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2VzLgorICAgIHsKKyAgICAgIE11dGV4TG9jayBsb2NrKCZt
dXRleF8pOworICAgICAgVGhyZWFkSWRUb1RocmVhZExvY2FscyogY29uc3QgdGhyZWFkX3RvX3Ro
cmVhZF9sb2NhbHMgPQorICAgICAgICAgIEdldFRocmVhZExvY2Fsc01hcExvY2tlZCgpOworICAg
ICAgVGhyZWFkSWRUb1RocmVhZExvY2Fsczo6aXRlcmF0b3IgdGhyZWFkX2xvY2FsX3BvcyA9Cisg
ICAgICAgICAgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmZpbmQodGhyZWFkX2lkKTsKKyAgICAg
IGlmICh0aHJlYWRfbG9jYWxfcG9zICE9IHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5lbmQoKSkg
eworICAgICAgICBUaHJlYWRMb2NhbFZhbHVlcyYgdGhyZWFkX2xvY2FsX3ZhbHVlcyA9IHRocmVh
ZF9sb2NhbF9wb3MtPnNlY29uZDsKKyAgICAgICAgZm9yIChUaHJlYWRMb2NhbFZhbHVlczo6aXRl
cmF0b3IgdmFsdWVfcG9zID0KKyAgICAgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMuYmVnaW4o
KTsKKyAgICAgICAgICAgIHZhbHVlX3BvcyAhPSB0aHJlYWRfbG9jYWxfdmFsdWVzLmVuZCgpOwor
ICAgICAgICAgICAgKyt2YWx1ZV9wb3MpIHsKKyAgICAgICAgICB2YWx1ZV9ob2xkZXJzLnB1c2hf
YmFjayh2YWx1ZV9wb3MtPnNlY29uZCk7CisgICAgICAgIH0KKyAgICAgICAgdGhyZWFkX3RvX3Ro
cmVhZF9sb2NhbHMtPmVyYXNlKHRocmVhZF9sb2NhbF9wb3MpOworICAgICAgfQorICAgIH0KKyAg
ICAvLyBPdXRzaWRlIHRoZSBsb2NrLCBsZXQgdGhlIGRlc3RydWN0b3IgZm9yICd2YWx1ZV9ob2xk
ZXJzJyBkZWFsbG9jYXRlIHRoZQorICAgIC8vIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlcy4K
KyAgfQorCisgcHJpdmF0ZToKKyAgLy8gSW4gYSBwYXJ0aWN1bGFyIHRocmVhZCwgbWFwcyBhIFRo
cmVhZExvY2FsIG9iamVjdCB0byBpdHMgdmFsdWUuCisgIHR5cGVkZWYgc3RkOjptYXA8Y29uc3Qg
VGhyZWFkTG9jYWxCYXNlKiwKKyAgICAgICAgICAgICAgICAgICBsaW5rZWRfcHRyPFRocmVhZExv
Y2FsVmFsdWVIb2xkZXJCYXNlPiA+IFRocmVhZExvY2FsVmFsdWVzOworICAvLyBTdG9yZXMgYWxs
IFRocmVhZElkVG9UaHJlYWRMb2NhbHMgaGF2aW5nIHZhbHVlcyBpbiBhIHRocmVhZCwgaW5kZXhl
ZCBieQorICAvLyB0aHJlYWQncyBJRC4KKyAgdHlwZWRlZiBzdGQ6Om1hcDxEV09SRCwgVGhyZWFk
TG9jYWxWYWx1ZXM+IFRocmVhZElkVG9UaHJlYWRMb2NhbHM7CisKKyAgLy8gSG9sZHMgdGhlIHRo
cmVhZCBpZCBhbmQgdGhyZWFkIGhhbmRsZSB0aGF0IHdlIHBhc3MgZnJvbQorICAvLyBTdGFydFdh
dGNoZXJUaHJlYWRGb3IgdG8gV2F0Y2hlclRocmVhZEZ1bmMuCisgIHR5cGVkZWYgc3RkOjpwYWly
PERXT1JELCBIQU5ETEU+IFRocmVhZElkQW5kSGFuZGxlOworCisgIHN0YXRpYyB2b2lkIFN0YXJ0
V2F0Y2hlclRocmVhZEZvcihEV09SRCB0aHJlYWRfaWQpIHsKKyAgICAvLyBUaGUgcmV0dXJuZWQg
aGFuZGxlIHdpbGwgYmUga2VwdCBpbiB0aHJlYWRfbWFwIGFuZCBjbG9zZWQgYnkKKyAgICAvLyB3
YXRjaGVyX3RocmVhZCBpbiBXYXRjaGVyVGhyZWFkRnVuYy4KKyAgICBIQU5ETEUgdGhyZWFkID0g
OjpPcGVuVGhyZWFkKFNZTkNIUk9OSVpFIHwgVEhSRUFEX1FVRVJZX0lORk9STUFUSU9OLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aHJlYWRfaWQpOworICAgIEdURVNUX0NIRUNLXyh0aHJlYWQgIT0gTlVM
TCk7CisgICAgLy8gV2UgbmVlZCB0byBwYXNzIGEgdmFsaWQgdGhyZWFkIElEIHBvaW50ZXIgaW50
byBDcmVhdGVUaHJlYWQgZm9yIGl0CisgICAgLy8gdG8gd29yayBjb3JyZWN0bHkgdW5kZXIgV2lu
OTguCisgICAgRFdPUkQgd2F0Y2hlcl90aHJlYWRfaWQ7CisgICAgSEFORExFIHdhdGNoZXJfdGhy
ZWFkID0gOjpDcmVhdGVUaHJlYWQoCisgICAgICAgIE5VTEwsICAgLy8gRGVmYXVsdCBzZWN1cml0
eS4KKyAgICAgICAgMCwgICAgICAvLyBEZWZhdWx0IHN0YWNrIHNpemUKKyAgICAgICAgJlRocmVh
ZExvY2FsUmVnaXN0cnlJbXBsOjpXYXRjaGVyVGhyZWFkRnVuYywKKyAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxMUFZPSUQ+KG5ldyBUaHJlYWRJZEFuZEhhbmRsZSh0aHJlYWRfaWQsIHRocmVhZCkp
LAorICAgICAgICBDUkVBVEVfU1VTUEVOREVELAorICAgICAgICAmd2F0Y2hlcl90aHJlYWRfaWQp
OworICAgIEdURVNUX0NIRUNLXyh3YXRjaGVyX3RocmVhZCAhPSBOVUxMKTsKKyAgICAvLyBHaXZl
IHRoZSB3YXRjaGVyIHRocmVhZCB0aGUgc2FtZSBwcmlvcml0eSBhcyBvdXJzIHRvIGF2b2lkIGJl
aW5nCisgICAgLy8gYmxvY2tlZCBieSBpdC4KKyAgICA6OlNldFRocmVhZFByaW9yaXR5KHdhdGNo
ZXJfdGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgOjpHZXRUaHJlYWRQcmlvcml0eSg6
OkdldEN1cnJlbnRUaHJlYWQoKSkpOworICAgIDo6UmVzdW1lVGhyZWFkKHdhdGNoZXJfdGhyZWFk
KTsKKyAgICA6OkNsb3NlSGFuZGxlKHdhdGNoZXJfdGhyZWFkKTsKKyAgfQorCisgIC8vIE1vbml0
b3JzIGV4aXQgZnJvbSBhIGdpdmVuIHRocmVhZCBhbmQgbm90aWZpZXMgdGhvc2UKKyAgLy8gVGhy
ZWFkSWRUb1RocmVhZExvY2FscyBhYm91dCB0aHJlYWQgdGVybWluYXRpb24uCisgIHN0YXRpYyBE
V09SRCBXSU5BUEkgV2F0Y2hlclRocmVhZEZ1bmMoTFBWT0lEIHBhcmFtKSB7CisgICAgY29uc3Qg
VGhyZWFkSWRBbmRIYW5kbGUqIHRhaCA9CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VGhyZWFkSWRBbmRIYW5kbGUqPihwYXJhbSk7CisgICAgR1RFU1RfQ0hFQ0tfKAorICAgICAgICA6
OldhaXRGb3JTaW5nbGVPYmplY3QodGFoLT5zZWNvbmQsIElORklOSVRFKSA9PSBXQUlUX09CSkVD
VF8wKTsKKyAgICBPblRocmVhZEV4aXQodGFoLT5maXJzdCk7CisgICAgOjpDbG9zZUhhbmRsZSh0
YWgtPnNlY29uZCk7CisgICAgZGVsZXRlIHRhaDsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIC8v
IFJldHVybnMgbWFwIG9mIHRocmVhZCBsb2NhbCBpbnN0YW5jZXMuCisgIHN0YXRpYyBUaHJlYWRJ
ZFRvVGhyZWFkTG9jYWxzKiBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKSB7CisgICAgbXV0ZXhf
LkFzc2VydEhlbGQoKTsKKyAgICBNZW1vcnlJc05vdERlYWxsb2NhdGVkIG1lbW9yeV9pc19ub3Rf
ZGVhbGxvY2F0ZWQ7CisgICAgc3RhdGljIFRocmVhZElkVG9UaHJlYWRMb2NhbHMqIG1hcCA9IG5l
dyBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzKCk7CisgICAgcmV0dXJuIG1hcDsKKyAgfQorCisgIC8v
IFByb3RlY3RzIGFjY2VzcyB0byBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKSBhbmQgaXRzIHJl
dHVybiB2YWx1ZS4KKyAgc3RhdGljIE11dGV4IG11dGV4XzsKKyAgLy8gUHJvdGVjdHMgYWNjZXNz
IHRvIEdldFRocmVhZE1hcExvY2tlZCgpIGFuZCBpdHMgcmV0dXJuIHZhbHVlLgorICBzdGF0aWMg
TXV0ZXggdGhyZWFkX21hcF9tdXRleF87Cit9OworCitNdXRleCBUaHJlYWRMb2NhbFJlZ2lzdHJ5
SW1wbDo6bXV0ZXhfKE11dGV4OjprU3RhdGljTXV0ZXgpOworTXV0ZXggVGhyZWFkTG9jYWxSZWdp
c3RyeUltcGw6OnRocmVhZF9tYXBfbXV0ZXhfKE11dGV4OjprU3RhdGljTXV0ZXgpOworCitUaHJl
YWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogVGhyZWFkTG9jYWxSZWdpc3RyeTo6R2V0VmFsdWVPbkN1
cnJlbnRUaHJlYWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9p
bnN0YW5jZSkgeworICByZXR1cm4gVGhyZWFkTG9jYWxSZWdpc3RyeUltcGw6OkdldFZhbHVlT25D
dXJyZW50VGhyZWFkKAorICAgICAgdGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKK30KKwordm9pZCBU
aHJlYWRMb2NhbFJlZ2lzdHJ5OjpPblRocmVhZExvY2FsRGVzdHJveWVkKAorICAgICAgY29uc3Qg
VGhyZWFkTG9jYWxCYXNlKiB0aHJlYWRfbG9jYWxfaW5zdGFuY2UpIHsKKyAgVGhyZWFkTG9jYWxS
ZWdpc3RyeUltcGw6Ok9uVGhyZWFkTG9jYWxEZXN0cm95ZWQodGhyZWFkX2xvY2FsX2luc3RhbmNl
KTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFICYmIEdURVNUX09TX1dJTkRP
V1MKIAogI2lmIEdURVNUX1VTRVNfUE9TSVhfUkUKIApAQCAtMTgwLDIwICs2ODgsMjAgQEAgYm9v
bCBJc0luU2V0KGNoYXIgY2gsIGNvbnN0IGNoYXIqIHN0cikgewogLy8gUmV0dXJucyB0cnVlIGlm
ZiBjaCBiZWxvbmdzIHRvIHRoZSBnaXZlbiBjbGFzc2lmaWNhdGlvbi4gIFVubGlrZQogLy8gc2lt
aWxhciBmdW5jdGlvbnMgaW4gPGN0eXBlLmg+LCB0aGVzZSBhcmVuJ3QgYWZmZWN0ZWQgYnkgdGhl
CiAvLyBjdXJyZW50IGxvY2FsZS4KLWJvb2wgSXNEaWdpdChjaGFyIGNoKSB7IHJldHVybiAnMCcg
PD0gY2ggJiYgY2ggPD0gJzknOyB9Ci1ib29sIElzUHVuY3QoY2hhciBjaCkgeworYm9vbCBJc0Fz
Y2lpRGlnaXQoY2hhciBjaCkgeyByZXR1cm4gJzAnIDw9IGNoICYmIGNoIDw9ICc5JzsgfQorYm9v
bCBJc0FzY2lpUHVuY3QoY2hhciBjaCkgewogICByZXR1cm4gSXNJblNldChjaCwgIl4tIVwiIyQl
JicoKSorLC4vOjs8PT4/QFtcXF1fYHt8fX4iKTsKIH0KIGJvb2wgSXNSZXBlYXQoY2hhciBjaCkg
eyByZXR1cm4gSXNJblNldChjaCwgIj8qKyIpOyB9Ci1ib29sIElzV2hpdGVTcGFjZShjaGFyIGNo
KSB7IHJldHVybiBJc0luU2V0KGNoLCAiIFxmXG5cclx0XHYiKTsgfQotYm9vbCBJc1dvcmRDaGFy
KGNoYXIgY2gpIHsKK2Jvb2wgSXNBc2NpaVdoaXRlU3BhY2UoY2hhciBjaCkgeyByZXR1cm4gSXNJ
blNldChjaCwgIiBcZlxuXHJcdFx2Iik7IH0KK2Jvb2wgSXNBc2NpaVdvcmRDaGFyKGNoYXIgY2gp
IHsKICAgcmV0dXJuICgnYScgPD0gY2ggJiYgY2ggPD0gJ3onKSB8fCAoJ0EnIDw9IGNoICYmIGNo
IDw9ICdaJykgfHwKICAgICAgICgnMCcgPD0gY2ggJiYgY2ggPD0gJzknKSB8fCBjaCA9PSAnXyc7
CiB9CiAKIC8vIFJldHVybnMgdHJ1ZSBpZmYgIlxcYyIgaXMgYSBzdXBwb3J0ZWQgZXNjYXBlIHNl
cXVlbmNlLgogYm9vbCBJc1ZhbGlkRXNjYXBlKGNoYXIgYykgewotICByZXR1cm4gKElzUHVuY3Qo
YykgfHwgSXNJblNldChjLCAiZERmbnJzU3R2d1ciKSk7CisgIHJldHVybiAoSXNBc2NpaVB1bmN0
KGMpIHx8IElzSW5TZXQoYywgImREZm5yc1N0dndXIikpOwogfQogCiAvLyBSZXR1cm5zIHRydWUg
aWZmIHRoZSBnaXZlbiBhdG9tIChzcGVjaWZpZWQgYnkgZXNjYXBlZCBhbmQgcGF0dGVybikKQEAg
LTIwMSwyNiArNzA5LDI2IEBAIGJvb2wgSXNWYWxpZEVzY2FwZShjaGFyIGMpIHsKIGJvb2wgQXRv
bU1hdGNoZXNDaGFyKGJvb2wgZXNjYXBlZCwgY2hhciBwYXR0ZXJuX2NoYXIsIGNoYXIgY2gpIHsK
ICAgaWYgKGVzY2FwZWQpIHsgIC8vICJcXHAiIHdoZXJlIHAgaXMgcGF0dGVybl9jaGFyLgogICAg
IHN3aXRjaCAocGF0dGVybl9jaGFyKSB7Ci0gICAgICBjYXNlICdkJzogcmV0dXJuIElzRGlnaXQo
Y2gpOwotICAgICAgY2FzZSAnRCc6IHJldHVybiAhSXNEaWdpdChjaCk7CisgICAgICBjYXNlICdk
JzogcmV0dXJuIElzQXNjaWlEaWdpdChjaCk7CisgICAgICBjYXNlICdEJzogcmV0dXJuICFJc0Fz
Y2lpRGlnaXQoY2gpOwogICAgICAgY2FzZSAnZic6IHJldHVybiBjaCA9PSAnXGYnOwogICAgICAg
Y2FzZSAnbic6IHJldHVybiBjaCA9PSAnXG4nOwogICAgICAgY2FzZSAncic6IHJldHVybiBjaCA9
PSAnXHInOwotICAgICAgY2FzZSAncyc6IHJldHVybiBJc1doaXRlU3BhY2UoY2gpOwotICAgICAg
Y2FzZSAnUyc6IHJldHVybiAhSXNXaGl0ZVNwYWNlKGNoKTsKKyAgICAgIGNhc2UgJ3MnOiByZXR1
cm4gSXNBc2NpaVdoaXRlU3BhY2UoY2gpOworICAgICAgY2FzZSAnUyc6IHJldHVybiAhSXNBc2Np
aVdoaXRlU3BhY2UoY2gpOwogICAgICAgY2FzZSAndCc6IHJldHVybiBjaCA9PSAnXHQnOwogICAg
ICAgY2FzZSAndic6IHJldHVybiBjaCA9PSAnXHYnOwotICAgICAgY2FzZSAndyc6IHJldHVybiBJ
c1dvcmRDaGFyKGNoKTsKLSAgICAgIGNhc2UgJ1cnOiByZXR1cm4gIUlzV29yZENoYXIoY2gpOwor
ICAgICAgY2FzZSAndyc6IHJldHVybiBJc0FzY2lpV29yZENoYXIoY2gpOworICAgICAgY2FzZSAn
Vyc6IHJldHVybiAhSXNBc2NpaVdvcmRDaGFyKGNoKTsKICAgICB9Ci0gICAgcmV0dXJuIElzUHVu
Y3QocGF0dGVybl9jaGFyKSAmJiBwYXR0ZXJuX2NoYXIgPT0gY2g7CisgICAgcmV0dXJuIElzQXNj
aWlQdW5jdChwYXR0ZXJuX2NoYXIpICYmIHBhdHRlcm5fY2hhciA9PSBjaDsKICAgfQogCiAgIHJl
dHVybiAocGF0dGVybl9jaGFyID09ICcuJyAmJiBjaCAhPSAnXG4nKSB8fCBwYXR0ZXJuX2NoYXIg
PT0gY2g7CiB9CiAKIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IFZhbGlkYXRlUmVnZXgoKSB0
byBmb3JtYXQgZXJyb3IgbWVzc2FnZXMuCi1TdHJpbmcgRm9ybWF0UmVnZXhTeW50YXhFcnJvcihj
b25zdCBjaGFyKiByZWdleCwgaW50IGluZGV4KSB7CitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0
UmVnZXhTeW50YXhFcnJvcihjb25zdCBjaGFyKiByZWdleCwgaW50IGluZGV4KSB7CiAgIHJldHVy
biAoTWVzc2FnZSgpIDw8ICJTeW50YXggZXJyb3IgYXQgaW5kZXggIiA8PCBpbmRleAogICAgICAg
ICAgIDw8ICIgaW4gc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiBcIiIgPDwgcmVnZXggPDwgIlwi
OiAiKS5HZXRTdHJpbmcoKTsKIH0KQEAgLTIyOSw3ICs3MzcsNyBAQCBTdHJpbmcgRm9ybWF0UmVn
ZXhTeW50YXhFcnJvcihjb25zdCBjaGFyKiByZWdleCwgaW50IGluZGV4KSB7CiAvLyBvdGhlcndp
c2UgcmV0dXJucyB0cnVlLgogYm9vbCBWYWxpZGF0ZVJlZ2V4KGNvbnN0IGNoYXIqIHJlZ2V4KSB7
CiAgIGlmIChyZWdleCA9PSBOVUxMKSB7Ci0gICAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IGZp
eCB0aGUgc291cmNlIGZpbGUgbG9jYXRpb24gaW4gdGhlCisgICAgLy8gRklYTUU6IGZpeCB0aGUg
c291cmNlIGZpbGUgbG9jYXRpb24gaW4gdGhlCiAgICAgLy8gYXNzZXJ0aW9uIGZhaWx1cmVzIHRv
IG1hdGNoIHdoZXJlIHRoZSByZWdleCBpcyB1c2VkIGluIHVzZXIKICAgICAvLyBjb2RlLgogICAg
IEFERF9GQUlMVVJFKCkgPDwgIk5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxlIHJlZ3VsYXIgZXhw
cmVzc2lvbi4iOwpAQCAtNDIyLDYgKzkzMCwzNyBAQCB2b2lkIFJFOjpJbml0KGNvbnN0IGNoYXIq
IHJlZ2V4KSB7CiAKICNlbmRpZiAgLy8gR1RFU1RfVVNFU19QT1NJWF9SRQogCitjb25zdCBjaGFy
IGtVbmtub3duRmlsZVtdID0gInVua25vd24gZmlsZSI7CisKKy8vIEZvcm1hdHMgYSBzb3VyY2Ug
ZmlsZSBwYXRoIGFuZCBhIGxpbmUgbnVtYmVyIGFzIHRoZXkgd291bGQgYXBwZWFyCisvLyBpbiBh
biBlcnJvciBtZXNzYWdlIGZyb20gdGhlIGNvbXBpbGVyIHVzZWQgdG8gY29tcGlsZSB0aGlzIGNv
ZGUuCitHVEVTVF9BUElfIDo6c3RkOjpzdHJpbmcgRm9ybWF0RmlsZUxvY2F0aW9uKGNvbnN0IGNo
YXIqIGZpbGUsIGludCBsaW5lKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbGVfbmFtZShmaWxl
ID09IE5VTEwgPyBrVW5rbm93bkZpbGUgOiBmaWxlKTsKKworICBpZiAobGluZSA8IDApIHsKKyAg
ICByZXR1cm4gZmlsZV9uYW1lICsgIjoiOworICB9CisjaWZkZWYgX01TQ19WRVIKKyAgcmV0dXJu
IGZpbGVfbmFtZSArICIoIiArIFN0cmVhbWFibGVUb1N0cmluZyhsaW5lKSArICIpOiI7CisjZWxz
ZQorICByZXR1cm4gZmlsZV9uYW1lICsgIjoiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGxpbmUpICsg
IjoiOworI2VuZGlmICAvLyBfTVNDX1ZFUgorfQorCisvLyBGb3JtYXRzIGEgZmlsZSBsb2NhdGlv
biBmb3IgY29tcGlsZXItaW5kZXBlbmRlbnQgWE1MIG91dHB1dC4KKy8vIEFsdGhvdWdoIHRoaXMg
ZnVuY3Rpb24gaXMgbm90IHBsYXRmb3JtIGRlcGVuZGVudCwgd2UgcHV0IGl0IG5leHQgdG8KKy8v
IEZvcm1hdEZpbGVMb2NhdGlvbiBpbiBvcmRlciB0byBjb250cmFzdCB0aGUgdHdvIGZ1bmN0aW9u
cy4KKy8vIE5vdGUgdGhhdCBGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uKCkg
ZG9lcyBOT1QgYXBwZW5kIGNvbG9uCisvLyB0byB0aGUgZmlsZSBsb2NhdGlvbiBpdCBwcm9kdWNl
cywgdW5saWtlIEZvcm1hdEZpbGVMb2NhdGlvbigpLgorR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5n
IEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oCisgICAgY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsZV9uYW1lKGZpbGUgPT0g
TlVMTCA/IGtVbmtub3duRmlsZSA6IGZpbGUpOworCisgIGlmIChsaW5lIDwgMCkKKyAgICByZXR1
cm4gZmlsZV9uYW1lOworICBlbHNlCisgICAgcmV0dXJuIGZpbGVfbmFtZSArICI6IiArIFN0cmVh
bWFibGVUb1N0cmluZyhsaW5lKTsKK30KIAogR1Rlc3RMb2c6OkdUZXN0TG9nKEdUZXN0TG9nU2V2
ZXJpdHkgc2V2ZXJpdHksIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKQogICAgIDogc2V2ZXJp
dHlfKHNldmVyaXR5KSB7CkBAIC00NDEsMjEgKzk4MCwxOSBAQCBHVGVzdExvZzo6fkdUZXN0TG9n
KCkgewogICAgIHBvc2l4OjpBYm9ydCgpOwogICB9CiB9CisKIC8vIERpc2FibGUgTWljcm9zb2Z0
IGRlcHJlY2F0aW9uIHdhcm5pbmdzIGZvciBQT1NJWCBmdW5jdGlvbnMgY2FsbGVkIGZyb20KIC8v
IHRoaXMgY2xhc3MgKGNyZWF0LCBkdXAsIGR1cDIsIGFuZCBjbG9zZSkKLSNpZmRlZiBfTVNDX1ZF
UgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDk5NikK
LSNlbmRpZiAgLy8gX01TQ19WRVIKK0dURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVTSF8o
KQogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNpZiBHVEVTVF9IQVNfU1RS
RUFNX1JFRElSRUNUSU9OCiAKIC8vIE9iamVjdCB0aGF0IGNhcHR1cmVzIGFuIG91dHB1dCBzdHJl
YW0gKHN0ZG91dC9zdGRlcnIpLgogY2xhc3MgQ2FwdHVyZWRTdHJlYW0gewogIHB1YmxpYzoKICAg
Ly8gVGhlIGN0b3IgcmVkaXJlY3RzIHRoZSBzdHJlYW0gdG8gYSB0ZW1wb3JhcnkgZmlsZS4KLSAg
Q2FwdHVyZWRTdHJlYW0oaW50IGZkKSA6IGZkXyhmZCksIHVuY2FwdHVyZWRfZmRfKGR1cChmZCkp
IHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisgIGV4cGxpY2l0IENhcHR1cmVkU3RyZWFtKGludCBm
ZCkgOiBmZF8oZmQpLCB1bmNhcHR1cmVkX2ZkXyhkdXAoZmQpKSB7CisjIGlmIEdURVNUX09TX1dJ
TkRPV1MKICAgICBjaGFyIHRlbXBfZGlyX3BhdGhbTUFYX1BBVEggKyAxXSA9IHsgJ1wwJyB9OyAg
Ly8gTk9MSU5UCiAgICAgY2hhciB0ZW1wX2ZpbGVfcGF0aFtNQVhfUEFUSCArIDFdID0geyAnXDAn
IH07ICAvLyBOT0xJTlQKIApAQCAtNDcwLDE0ICsxMDA3LDMzIEBAIGNsYXNzIENhcHR1cmVkU3Ry
ZWFtIHsKICAgICBHVEVTVF9DSEVDS18oY2FwdHVyZWRfZmQgIT0gLTEpIDw8ICJVbmFibGUgdG8g
b3BlbiB0ZW1wb3JhcnkgZmlsZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCB0ZW1wX2ZpbGVfcGF0aDsKICAgICBmaWxlbmFtZV8gPSB0ZW1wX2ZpbGVfcGF0aDsKLSNl
bHNlCi0gICAgLy8gVGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCBhIHRlc3QgaGFzIHdyaXRlIGFj
Y2VzcyB0byB0aGUKLSAgICAvLyBjdXJyZW50IGRpcmVjdG9yeSwgc28gd2UgY3JlYXRlIHRoZSB0
ZW1wb3JhcnkgZmlsZSBpbiB0aGUgL3RtcAotICAgIC8vIGRpcmVjdG9yeSBpbnN0ZWFkLgorIyBl
bHNlCisgICAgLy8gVGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCBhIHRlc3QgaGFzIHdyaXRlIGFj
Y2VzcyB0byB0aGUgY3VycmVudAorICAgIC8vIGRpcmVjdG9yeSwgc28gd2UgY3JlYXRlIHRoZSB0
ZW1wb3JhcnkgZmlsZSBpbiB0aGUgL3RtcCBkaXJlY3RvcnkKKyAgICAvLyBpbnN0ZWFkLiBXZSB1
c2UgL3RtcCBvbiBtb3N0IHN5c3RlbXMsIGFuZCAvc2RjYXJkIG9uIEFuZHJvaWQuCisgICAgLy8g
VGhhdCdzIGJlY2F1c2UgQW5kcm9pZCBkb2Vzbid0IGhhdmUgL3RtcC4KKyMgIGlmIEdURVNUX09T
X0xJTlVYX0FORFJPSUQKKyAgICAvLyBOb3RlOiBBbmRyb2lkIGFwcGxpY2F0aW9ucyBhcmUgZXhw
ZWN0ZWQgdG8gY2FsbCB0aGUgZnJhbWV3b3JrJ3MKKyAgICAvLyBDb250ZXh0LmdldEV4dGVybmFs
U3RvcmFnZURpcmVjdG9yeSgpIG1ldGhvZCB0aHJvdWdoIEpOSSB0byBnZXQKKyAgICAvLyB0aGUg
bG9jYXRpb24gb2YgdGhlIHdvcmxkLXdyaXRhYmxlIFNEIENhcmQgZGlyZWN0b3J5LiBIb3dldmVy
LAorICAgIC8vIHRoaXMgcmVxdWlyZXMgYSBDb250ZXh0IGhhbmRsZSwgd2hpY2ggY2Fubm90IGJl
IHJldHJpZXZlZAorICAgIC8vIGdsb2JhbGx5IGZyb20gbmF0aXZlIGNvZGUuIERvaW5nIHNvIGFs
c28gcHJlY2x1ZGVzIHJ1bm5pbmcgdGhlCisgICAgLy8gY29kZSBhcyBwYXJ0IG9mIGEgcmVndWxh
ciBzdGFuZGFsb25lIGV4ZWN1dGFibGUsIHdoaWNoIGRvZXNuJ3QKKyAgICAvLyBydW4gaW4gYSBE
YWx2aWsgcHJvY2VzcyAoZS5nLiB3aGVuIHJ1bm5pbmcgaXQgdGhyb3VnaCAnYWRiIHNoZWxsJyku
CisgICAgLy8KKyAgICAvLyBUaGUgbG9jYXRpb24gL3NkY2FyZCBpcyBkaXJlY3RseSBhY2Nlc3Np
YmxlIGZyb20gbmF0aXZlIGNvZGUKKyAgICAvLyBhbmQgaXMgdGhlIG9ubHkgbG9jYXRpb24gKHVu
b2ZmaWNpYWxseSkgc3VwcG9ydGVkIGJ5IHRoZSBBbmRyb2lkCisgICAgLy8gdGVhbS4gSXQncyBn
ZW5lcmFsbHkgYSBzeW1saW5rIHRvIHRoZSByZWFsIFNEIENhcmQgbW91bnQgcG9pbnQKKyAgICAv
LyB3aGljaCBjYW4gYmUgL21udC9zZGNhcmQsIC9tbnQvc2RjYXJkMCwgL3N5c3RlbS9tZWRpYS9z
ZGNhcmQsIG9yCisgICAgLy8gb3RoZXIgT0VNLWN1c3RvbWl6ZWQgbG9jYXRpb25zLiBOZXZlciBy
ZWx5IG9uIHRoZXNlLCBhbmQgYWx3YXlzCisgICAgLy8gdXNlIC9zZGNhcmQuCisgICAgY2hhciBu
YW1lX3RlbXBsYXRlW10gPSAiL3NkY2FyZC9ndGVzdF9jYXB0dXJlZF9zdHJlYW0uWFhYWFhYIjsK
KyMgIGVsc2UKICAgICBjaGFyIG5hbWVfdGVtcGxhdGVbXSA9ICIvdG1wL2NhcHR1cmVkX3N0cmVh
bS5YWFhYWFgiOworIyAgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYX0FORFJPSUQKICAgICBjb25z
dCBpbnQgY2FwdHVyZWRfZmQgPSBta3N0ZW1wKG5hbWVfdGVtcGxhdGUpOwogICAgIGZpbGVuYW1l
XyA9IG5hbWVfdGVtcGxhdGU7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYg
IC8vIEdURVNUX09TX1dJTkRPV1MKICAgICBmZmx1c2goTlVMTCk7CiAgICAgZHVwMihjYXB0dXJl
ZF9mZCwgZmRfKTsKICAgICBjbG9zZShjYXB0dXJlZF9mZCk7CkBAIC00ODcsNyArMTA0Myw3IEBA
IGNsYXNzIENhcHR1cmVkU3RyZWFtIHsKICAgICByZW1vdmUoZmlsZW5hbWVfLmNfc3RyKCkpOwog
ICB9CiAKLSAgU3RyaW5nIEdldENhcHR1cmVkU3RyaW5nKCkgeworICBzdGQ6OnN0cmluZyBHZXRD
YXB0dXJlZFN0cmluZygpIHsKICAgICBpZiAodW5jYXB0dXJlZF9mZF8gIT0gLTEpIHsKICAgICAg
IC8vIFJlc3RvcmVzIHRoZSBvcmlnaW5hbCBzdHJlYW0uCiAgICAgICBmZmx1c2goTlVMTCk7CkBA
IC00OTcsMTggKzEwNTMsMTIgQEAgY2xhc3MgQ2FwdHVyZWRTdHJlYW0gewogICAgIH0KIAogICAg
IEZJTEUqIGNvbnN0IGZpbGUgPSBwb3NpeDo6Rk9wZW4oZmlsZW5hbWVfLmNfc3RyKCksICJyIik7
Ci0gICAgY29uc3QgU3RyaW5nIGNvbnRlbnQgPSBSZWFkRW50aXJlRmlsZShmaWxlKTsKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyBjb250ZW50ID0gUmVhZEVudGlyZUZpbGUoZmlsZSk7CiAgICAgcG9z
aXg6OkZDbG9zZShmaWxlKTsKICAgICByZXR1cm4gY29udGVudDsKICAgfQogCiAgcHJpdmF0ZToK
LSAgLy8gUmVhZHMgdGhlIGVudGlyZSBjb250ZW50IG9mIGEgZmlsZSBhcyBhIFN0cmluZy4KLSAg
c3RhdGljIFN0cmluZyBSZWFkRW50aXJlRmlsZShGSUxFKiBmaWxlKTsKLQotICAvLyBSZXR1cm5z
IHRoZSBzaXplIChpbiBieXRlcykgb2YgYSBmaWxlLgotICBzdGF0aWMgc2l6ZV90IEdldEZpbGVT
aXplKEZJTEUqIGZpbGUpOwotCiAgIGNvbnN0IGludCBmZF87ICAvLyBBIHN0cmVhbSB0byBjYXB0
dXJlLgogICBpbnQgdW5jYXB0dXJlZF9mZF87CiAgIC8vIE5hbWUgb2YgdGhlIHRlbXBvcmFyeSBm
aWxlIGhvbGRpbmcgdGhlIHN0ZGVyciBvdXRwdXQuCkBAIC01MTcsNDQgKzEwNjcsMTQgQEAgY2xh
c3MgQ2FwdHVyZWRTdHJlYW0gewogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKENh
cHR1cmVkU3RyZWFtKTsKIH07CiAKLS8vIFJldHVybnMgdGhlIHNpemUgKGluIGJ5dGVzKSBvZiBh
IGZpbGUuCi1zaXplX3QgQ2FwdHVyZWRTdHJlYW06OkdldEZpbGVTaXplKEZJTEUqIGZpbGUpIHsK
LSAgZnNlZWsoZmlsZSwgMCwgU0VFS19FTkQpOwotICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90
PihmdGVsbChmaWxlKSk7Ci19Ci0KLS8vIFJlYWRzIHRoZSBlbnRpcmUgY29udGVudCBvZiBhIGZp
bGUgYXMgYSBzdHJpbmcuCi1TdHJpbmcgQ2FwdHVyZWRTdHJlYW06OlJlYWRFbnRpcmVGaWxlKEZJ
TEUqIGZpbGUpIHsKLSAgY29uc3Qgc2l6ZV90IGZpbGVfc2l6ZSA9IEdldEZpbGVTaXplKGZpbGUp
OwotICBjaGFyKiBjb25zdCBidWZmZXIgPSBuZXcgY2hhcltmaWxlX3NpemVdOwotCi0gIHNpemVf
dCBieXRlc19sYXN0X3JlYWQgPSAwOyAgLy8gIyBvZiBieXRlcyByZWFkIGluIHRoZSBsYXN0IGZy
ZWFkKCkKLSAgc2l6ZV90IGJ5dGVzX3JlYWQgPSAwOyAgICAgICAvLyAjIG9mIGJ5dGVzIHJlYWQg
c28gZmFyCi0KLSAgZnNlZWsoZmlsZSwgMCwgU0VFS19TRVQpOwotCi0gIC8vIEtlZXBzIHJlYWRp
bmcgdGhlIGZpbGUgdW50aWwgd2UgY2Fubm90IHJlYWQgZnVydGhlciBvciB0aGUKLSAgLy8gcHJl
LWRldGVybWluZWQgZmlsZSBzaXplIGlzIHJlYWNoZWQuCi0gIGRvIHsKLSAgICBieXRlc19sYXN0
X3JlYWQgPSBmcmVhZChidWZmZXIrYnl0ZXNfcmVhZCwgMSwgZmlsZV9zaXplLWJ5dGVzX3JlYWQs
IGZpbGUpOwotICAgIGJ5dGVzX3JlYWQgKz0gYnl0ZXNfbGFzdF9yZWFkOwotICB9IHdoaWxlIChi
eXRlc19sYXN0X3JlYWQgPiAwICYmIGJ5dGVzX3JlYWQgPCBmaWxlX3NpemUpOwotCi0gIGNvbnN0
IFN0cmluZyBjb250ZW50KGJ1ZmZlciwgYnl0ZXNfcmVhZCk7Ci0gIGRlbGV0ZVtdIGJ1ZmZlcjsK
LQotICByZXR1cm4gY29udGVudDsKLX0KLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5p
bmcocG9wKQotI2VuZGlmICAvLyBfTVNDX1ZFUgorR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRF
RF9QT1BfKCkKIAogc3RhdGljIENhcHR1cmVkU3RyZWFtKiBnX2NhcHR1cmVkX3N0ZGVyciA9IE5V
TEw7CiBzdGF0aWMgQ2FwdHVyZWRTdHJlYW0qIGdfY2FwdHVyZWRfc3Rkb3V0ID0gTlVMTDsKIAog
Ly8gU3RhcnRzIGNhcHR1cmluZyBhbiBvdXRwdXQgc3RyZWFtIChzdGRvdXQvc3RkZXJyKS4KLXZv
aWQgQ2FwdHVyZVN0cmVhbShpbnQgZmQsIGNvbnN0IGNoYXIqIHN0cmVhbV9uYW1lLCBDYXB0dXJl
ZFN0cmVhbSoqIHN0cmVhbSkgeworc3RhdGljIHZvaWQgQ2FwdHVyZVN0cmVhbShpbnQgZmQsIGNv
bnN0IGNoYXIqIHN0cmVhbV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICBDYXB0dXJl
ZFN0cmVhbSoqIHN0cmVhbSkgewogICBpZiAoKnN0cmVhbSAhPSBOVUxMKSB7CiAgICAgR1RFU1Rf
TE9HXyhGQVRBTCkgPDwgIk9ubHkgb25lICIgPDwgc3RyZWFtX25hbWUKICAgICAgICAgICAgICAg
ICAgICAgICA8PCAiIGNhcHR1cmVyIGNhbiBleGlzdCBhdCBhIHRpbWUuIjsKQEAgLTU2Myw4ICsx
MDgzLDggQEAgdm9pZCBDYXB0dXJlU3RyZWFtKGludCBmZCwgY29uc3QgY2hhciogc3RyZWFtX25h
bWUsIENhcHR1cmVkU3RyZWFtKiogc3RyZWFtKSB7CiB9CiAKIC8vIFN0b3BzIGNhcHR1cmluZyB0
aGUgb3V0cHV0IHN0cmVhbSBhbmQgcmV0dXJucyB0aGUgY2FwdHVyZWQgc3RyaW5nLgotU3RyaW5n
IEdldENhcHR1cmVkU3RyZWFtKENhcHR1cmVkU3RyZWFtKiogY2FwdHVyZWRfc3RyZWFtKSB7Ci0g
IGNvbnN0IFN0cmluZyBjb250ZW50ID0gKCpjYXB0dXJlZF9zdHJlYW0pLT5HZXRDYXB0dXJlZFN0
cmluZygpOworc3RhdGljIHN0ZDo6c3RyaW5nIEdldENhcHR1cmVkU3RyZWFtKENhcHR1cmVkU3Ry
ZWFtKiogY2FwdHVyZWRfc3RyZWFtKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvbnRlbnQgPSAo
KmNhcHR1cmVkX3N0cmVhbSktPkdldENhcHR1cmVkU3RyaW5nKCk7CiAKICAgZGVsZXRlICpjYXB0
dXJlZF9zdHJlYW07CiAgICpjYXB0dXJlZF9zdHJlYW0gPSBOVUxMOwpAQCAtNTgzLDIxICsxMTAz
LDc5IEBAIHZvaWQgQ2FwdHVyZVN0ZGVycigpIHsKIH0KIAogLy8gU3RvcHMgY2FwdHVyaW5nIHN0
ZG91dCBhbmQgcmV0dXJucyB0aGUgY2FwdHVyZWQgc3RyaW5nLgotU3RyaW5nIEdldENhcHR1cmVk
U3Rkb3V0KCkgeyByZXR1cm4gR2V0Q2FwdHVyZWRTdHJlYW0oJmdfY2FwdHVyZWRfc3Rkb3V0KTsg
fQorc3RkOjpzdHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKSB7CisgIHJldHVybiBHZXRDYXB0dXJl
ZFN0cmVhbSgmZ19jYXB0dXJlZF9zdGRvdXQpOworfQogCiAvLyBTdG9wcyBjYXB0dXJpbmcgc3Rk
ZXJyIGFuZCByZXR1cm5zIHRoZSBjYXB0dXJlZCBzdHJpbmcuCi1TdHJpbmcgR2V0Q2FwdHVyZWRT
dGRlcnIoKSB7IHJldHVybiBHZXRDYXB0dXJlZFN0cmVhbSgmZ19jYXB0dXJlZF9zdGRlcnIpOyB9
CitzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0ZGVycigpIHsKKyAgcmV0dXJuIEdldENhcHR1cmVk
U3RyZWFtKCZnX2NhcHR1cmVkX3N0ZGVycik7Cit9CiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NU
UkVBTV9SRURJUkVDVElPTl8KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElP
TgorCisKKworCisKK3NpemVfdCBHZXRGaWxlU2l6ZShGSUxFKiBmaWxlKSB7CisgIGZzZWVrKGZp
bGUsIDAsIFNFRUtfRU5EKTsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oZnRlbGwoZmls
ZSkpOworfQorCitzdGQ6OnN0cmluZyBSZWFkRW50aXJlRmlsZShGSUxFKiBmaWxlKSB7CisgIGNv
bnN0IHNpemVfdCBmaWxlX3NpemUgPSBHZXRGaWxlU2l6ZShmaWxlKTsKKyAgY2hhciogY29uc3Qg
YnVmZmVyID0gbmV3IGNoYXJbZmlsZV9zaXplXTsKKworICBzaXplX3QgYnl0ZXNfbGFzdF9yZWFk
ID0gMDsgIC8vICMgb2YgYnl0ZXMgcmVhZCBpbiB0aGUgbGFzdCBmcmVhZCgpCisgIHNpemVfdCBi
eXRlc19yZWFkID0gMDsgICAgICAgLy8gIyBvZiBieXRlcyByZWFkIHNvIGZhcgorCisgIGZzZWVr
KGZpbGUsIDAsIFNFRUtfU0VUKTsKKworICAvLyBLZWVwcyByZWFkaW5nIHRoZSBmaWxlIHVudGls
IHdlIGNhbm5vdCByZWFkIGZ1cnRoZXIgb3IgdGhlCisgIC8vIHByZS1kZXRlcm1pbmVkIGZpbGUg
c2l6ZSBpcyByZWFjaGVkLgorICBkbyB7CisgICAgYnl0ZXNfbGFzdF9yZWFkID0gZnJlYWQoYnVm
ZmVyK2J5dGVzX3JlYWQsIDEsIGZpbGVfc2l6ZS1ieXRlc19yZWFkLCBmaWxlKTsKKyAgICBieXRl
c19yZWFkICs9IGJ5dGVzX2xhc3RfcmVhZDsKKyAgfSB3aGlsZSAoYnl0ZXNfbGFzdF9yZWFkID4g
MCAmJiBieXRlc19yZWFkIDwgZmlsZV9zaXplKTsKKworICBjb25zdCBzdGQ6OnN0cmluZyBjb250
ZW50KGJ1ZmZlciwgYnl0ZXNfcmVhZCk7CisgIGRlbGV0ZVtdIGJ1ZmZlcjsKKworICByZXR1cm4g
Y29udGVudDsKK30KIAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCitzdGF0aWMgY29uc3Qgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+KiBnX2luamVjdGVkX3Rlc3RfYXJndnMgPSBOVUxMOyAgLy8g
T3duZWQuCiAKLS8vIEEgY29weSBvZiBhbGwgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4gIFNldCBi
eSBJbml0R29vZ2xlVGVzdCgpLgotOjpzdGQ6OnZlY3RvcjxTdHJpbmc+IGdfYXJndnM7CitzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0SW5qZWN0YWJsZUFyZ3ZzKCkgeworICBpZiAoZ19pbmpl
Y3RlZF90ZXN0X2FyZ3ZzICE9IE5VTEwpIHsKKyAgICByZXR1cm4gKmdfaW5qZWN0ZWRfdGVzdF9h
cmd2czsKKyAgfQorICByZXR1cm4gR2V0QXJndnMoKTsKK30KKwordm9pZCBTZXRJbmplY3RhYmxl
QXJndnMoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiBuZXdfYXJndnMpIHsKKyAgaWYg
KGdfaW5qZWN0ZWRfdGVzdF9hcmd2cyAhPSBuZXdfYXJndnMpIGRlbGV0ZSBnX2luamVjdGVkX3Rl
c3RfYXJndnM7CisgIGdfaW5qZWN0ZWRfdGVzdF9hcmd2cyA9IG5ld19hcmd2czsKK30KIAotLy8g
UmV0dXJucyB0aGUgY29tbWFuZCBsaW5lIGFzIGEgdmVjdG9yIG9mIHN0cmluZ3MuCi1jb25zdCA6
OnN0ZDo6dmVjdG9yPFN0cmluZz4mIEdldEFyZ3ZzKCkgeyByZXR1cm4gZ19hcmd2czsgfQordm9p
ZCBTZXRJbmplY3RhYmxlQXJndnMoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBuZXdf
YXJndnMpIHsKKyAgU2V0SW5qZWN0YWJsZUFyZ3ZzKAorICAgICAgbmV3IHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPihuZXdfYXJndnMuYmVnaW4oKSwgbmV3X2FyZ3ZzLmVuZCgpKSk7Cit9CisKKyNp
ZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwordm9pZCBTZXRJbmplY3RhYmxlQXJndnMoY29uc3Qg
c3RkOjp2ZWN0b3I8IDo6c3RyaW5nPiYgbmV3X2FyZ3ZzKSB7CisgIFNldEluamVjdGFibGVBcmd2
cygKKyAgICAgIG5ldyBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4obmV3X2FyZ3ZzLmJlZ2luKCks
IG5ld19hcmd2cy5lbmQoKSkpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklO
RwogCit2b2lkIENsZWFySW5qZWN0YWJsZUFyZ3ZzKCkgeworICBkZWxldGUgZ19pbmplY3RlZF90
ZXN0X2FyZ3ZzOworICBnX2luamVjdGVkX3Rlc3RfYXJndnMgPSBOVUxMOworfQogI2VuZGlmICAv
LyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCiAjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKQEAg
LTYxMiwxMyArMTE5MCwxMyBAQCB2b2lkIEFib3J0KCkgewogLy8gUmV0dXJucyB0aGUgbmFtZSBv
ZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgY29ycmVzcG9uZGluZyB0byB0aGUKIC8vIGdpdmVu
IGZsYWcuICBGb3IgZXhhbXBsZSwgRmxhZ1RvRW52VmFyKCJmb28iKSB3aWxsIHJldHVybgogLy8g
IkdURVNUX0ZPTyIgaW4gdGhlIG9wZW4tc291cmNlIHZlcnNpb24uCi1zdGF0aWMgU3RyaW5nIEZs
YWdUb0VudlZhcihjb25zdCBjaGFyKiBmbGFnKSB7Ci0gIGNvbnN0IFN0cmluZyBmdWxsX2ZsYWcg
PQorc3RhdGljIHN0ZDo6c3RyaW5nIEZsYWdUb0VudlZhcihjb25zdCBjaGFyKiBmbGFnKSB7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGZ1bGxfZmxhZyA9CiAgICAgICAoTWVzc2FnZSgpIDw8IEdURVNU
X0ZMQUdfUFJFRklYXyA8PCBmbGFnKS5HZXRTdHJpbmcoKTsKIAogICBNZXNzYWdlIGVudl92YXI7
CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGZ1bGxfZmxhZy5sZW5ndGgoKTsgaSsrKSB7Ci0g
ICAgZW52X3ZhciA8PCBzdGF0aWNfY2FzdDxjaGFyPih0b3VwcGVyKGZ1bGxfZmxhZy5jX3N0cigp
W2ldKSk7CisgICAgZW52X3ZhciA8PCBUb1VwcGVyKGZ1bGxfZmxhZy5jX3N0cigpW2ldKTsKICAg
fQogCiAgIHJldHVybiBlbnZfdmFyLkdldFN0cmluZygpOwpAQCAtNjcwLDE3ICsxMjQ4LDI0IEBA
IGJvb2wgUGFyc2VJbnQzMihjb25zdCBNZXNzYWdlJiBzcmNfdGV4dCwgY29uc3QgY2hhciogc3Ry
LCBJbnQzMiogdmFsdWUpIHsKIC8vCiAvLyBUaGUgdmFsdWUgaXMgY29uc2lkZXJlZCB0cnVlIGlm
ZiBpdCdzIG5vdCAiMCIuCiBib29sIEJvb2xGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywg
Ym9vbCBkZWZhdWx0X3ZhbHVlKSB7Ci0gIGNvbnN0IFN0cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52
VmFyKGZsYWcpOworI2lmIGRlZmluZWQoR1RFU1RfR0VUX0JPT0xfRlJPTV9FTlZfKQorICByZXR1
cm4gR1RFU1RfR0VUX0JPT0xfRlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOworI2Vsc2UK
KyAgY29uc3Qgc3RkOjpzdHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFnKTsKICAgY29u
c3QgY2hhciogY29uc3Qgc3RyaW5nX3ZhbHVlID0gcG9zaXg6OkdldEVudihlbnZfdmFyLmNfc3Ry
KCkpOwogICByZXR1cm4gc3RyaW5nX3ZhbHVlID09IE5VTEwgPwogICAgICAgZGVmYXVsdF92YWx1
ZSA6IHN0cmNtcChzdHJpbmdfdmFsdWUsICIwIikgIT0gMDsKKyNlbmRpZiAgLy8gZGVmaW5lZChH
VEVTVF9HRVRfQk9PTF9GUk9NX0VOVl8pCiB9CiAKIC8vIFJlYWRzIGFuZCByZXR1cm5zIGEgMzIt
Yml0IGludGVnZXIgc3RvcmVkIGluIHRoZSBlbnZpcm9ubWVudAogLy8gdmFyaWFibGUgY29ycmVz
cG9uZGluZyB0byB0aGUgZ2l2ZW4gZmxhZzsgaWYgaXQgaXNuJ3Qgc2V0IG9yCiAvLyBkb2Vzbid0
IHJlcHJlc2VudCBhIHZhbGlkIDMyLWJpdCBpbnRlZ2VyLCByZXR1cm5zIGRlZmF1bHRfdmFsdWUu
CiBJbnQzMiBJbnQzMkZyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBJbnQzMiBkZWZhdWx0
X3ZhbHVlKSB7Ci0gIGNvbnN0IFN0cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52VmFyKGZsYWcpOwor
I2lmIGRlZmluZWQoR1RFU1RfR0VUX0lOVDMyX0ZST01fRU5WXykKKyAgcmV0dXJuIEdURVNUX0dF
VF9JTlQzMl9GUk9NX0VOVl8oZmxhZywgZGVmYXVsdF92YWx1ZSk7CisjZWxzZQorICBjb25zdCBz
dGQ6OnN0cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52VmFyKGZsYWcpOwogICBjb25zdCBjaGFyKiBj
b25zdCBzdHJpbmdfdmFsdWUgPSBwb3NpeDo6R2V0RW52KGVudl92YXIuY19zdHIoKSk7CiAgIGlm
IChzdHJpbmdfdmFsdWUgPT0gTlVMTCkgewogICAgIC8vIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJs
ZSBpcyBub3Qgc2V0LgpAQCAtNjk3LDE0ICsxMjgyLDM2IEBAIEludDMyIEludDMyRnJvbUdUZXN0
RW52KGNvbnN0IGNoYXIqIGZsYWcsIEludDMyIGRlZmF1bHRfdmFsdWUpIHsKICAgfQogCiAgIHJl
dHVybiByZXN1bHQ7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfR0VUX0lOVDMyX0ZST01fRU5W
XykKK30KKworLy8gQXMgYSBzcGVjaWFsIGNhc2UgZm9yIHRoZSAnb3V0cHV0JyBmbGFnLCBpZiBH
VEVTVF9PVVRQVVQgaXMgbm90CisvLyBzZXQsIHdlIGxvb2sgZm9yIFhNTF9PVVRQVVRfRklMRSwg
d2hpY2ggaXMgc2V0IGJ5IHRoZSBCYXplbCBidWlsZAorLy8gc3lzdGVtLiAgVGhlIHZhbHVlIG9m
IFhNTF9PVVRQVVRfRklMRSBpcyBhIGZpbGVuYW1lIHdpdGhvdXQgdGhlCisvLyAieG1sOiIgcHJl
Zml4IG9mIEdURVNUX09VVFBVVC4KKy8vIE5vdGUgdGhhdCB0aGlzIGlzIG1lYW50IHRvIGJlIGNh
bGxlZCBhdCB0aGUgY2FsbCBzaXRlIHNvIGl0IGRvZXMKKy8vIG5vdCBjaGVjayB0aGF0IHRoZSBm
bGFnIGlzICdvdXRwdXQnCisvLyBJbiBlc3NlbmNlIHRoaXMgY2hlY2tzIGFuIGVudiB2YXJpYWJs
ZSBjYWxsZWQgWE1MX09VVFBVVF9GSUxFCisvLyBhbmQgaWYgaXQgaXMgc2V0IHdlIHByZXBlbmQg
InhtbDoiIHRvIGl0cyB2YWx1ZSwgaWYgaXQgbm90IHNldCB3ZSByZXR1cm4gIiIKK3N0ZDo6c3Ry
aW5nIE91dHB1dEZsYWdBbHNvQ2hlY2tFbnZWYXIoKXsKKyAgc3RkOjpzdHJpbmcgZGVmYXVsdF92
YWx1ZV9mb3Jfb3V0cHV0X2ZsYWcgPSAiIjsKKyAgY29uc3QgY2hhciogeG1sX291dHB1dF9maWxl
X2VudiA9IHBvc2l4OjpHZXRFbnYoIlhNTF9PVVRQVVRfRklMRSIpOworICBpZiAoTlVMTCAhPSB4
bWxfb3V0cHV0X2ZpbGVfZW52KSB7CisgICAgZGVmYXVsdF92YWx1ZV9mb3Jfb3V0cHV0X2ZsYWcg
PSBzdGQ6OnN0cmluZygieG1sOiIpICsgeG1sX291dHB1dF9maWxlX2VudjsKKyAgfQorICByZXR1
cm4gZGVmYXVsdF92YWx1ZV9mb3Jfb3V0cHV0X2ZsYWc7CiB9CiAKIC8vIFJlYWRzIGFuZCByZXR1
cm5zIHRoZSBzdHJpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgY29ycmVzcG9uZGluZyB0bwogLy8g
dGhlIGdpdmVuIGZsYWc7IGlmIGl0J3Mgbm90IHNldCwgcmV0dXJucyBkZWZhdWx0X3ZhbHVlLgog
Y29uc3QgY2hhciogU3RyaW5nRnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIGNvbnN0IGNo
YXIqIGRlZmF1bHRfdmFsdWUpIHsKLSAgY29uc3QgU3RyaW5nIGVudl92YXIgPSBGbGFnVG9FbnZW
YXIoZmxhZyk7CisjaWYgZGVmaW5lZChHVEVTVF9HRVRfU1RSSU5HX0ZST01fRU5WXykKKyAgcmV0
dXJuIEdURVNUX0dFVF9TVFJJTkdfRlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOworI2Vs
c2UKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFnKTsKICAg
Y29uc3QgY2hhciogY29uc3QgdmFsdWUgPSBwb3NpeDo6R2V0RW52KGVudl92YXIuY19zdHIoKSk7
CiAgIHJldHVybiB2YWx1ZSA9PSBOVUxMID8gZGVmYXVsdF92YWx1ZSA6IHZhbHVlOworI2VuZGlm
ICAvLyBkZWZpbmVkKEdURVNUX0dFVF9TVFJJTkdfRlJPTV9FTlZfKQogfQogCiB9ICAvLyBuYW1l
c3BhY2UgaW50ZXJuYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9n
dGVzdC1wcmludGVycy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1wcmlu
dGVycy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kZTRkMjQ1ZTlmYzg4OTdhZjIxMzc2NzlkOTEzZDY2NWZkODQz
NmUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0
LXByaW50ZXJzLmNjCkBAIC0wLDAgKzEsNDU3IEBACisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xl
IEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
Ky8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gR29vZ2xlIFRlc3QgLSBUaGUgR29vZ2xlIEMrKyBU
ZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yaworLy8KKy8vIFRoaXMgZmlsZSBpbXBsZW1lbnRz
IGEgdW5pdmVyc2FsIHZhbHVlIHByaW50ZXIgdGhhdCBjYW4gcHJpbnQgYQorLy8gdmFsdWUgb2Yg
YW55IHR5cGUgVDoKKy8vCisvLyAgIHZvaWQgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2Fs
UHJpbnRlcjxUPjo6UHJpbnQodmFsdWUsIG9zdHJlYW1fcHRyKTsKKy8vCisvLyBJdCB1c2VzIHRo
ZSA8PCBvcGVyYXRvciB3aGVuIHBvc3NpYmxlLCBhbmQgcHJpbnRzIHRoZSBieXRlcyBpbiB0aGUK
Ky8vIG9iamVjdCBvdGhlcndpc2UuICBBIHVzZXIgY2FuIG92ZXJyaWRlIGl0cyBiZWhhdmlvciBm
b3IgYSBjbGFzcworLy8gdHlwZSBGb28gYnkgZGVmaW5pbmcgZWl0aGVyIG9wZXJhdG9yPDwoOjpz
dGQ6Om9zdHJlYW0mLCBjb25zdCBGb28mKQorLy8gb3Igdm9pZCBQcmludFRvKGNvbnN0IEZvbyYs
IDo6c3RkOjpvc3RyZWFtKikgaW4gdGhlIG5hbWVzcGFjZSB0aGF0CisvLyBkZWZpbmVzIEZvby4K
KworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXByaW50ZXJzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4K
KyNpbmNsdWRlIDxjY3R5cGU+CisjaW5jbHVkZSA8Y3djaGFyPgorI2luY2x1ZGUgPG9zdHJlYW0+
ICAvLyBOT0xJTlQKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtcG9ydC5oIgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKworbmFt
ZXNwYWNlIHRlc3RpbmcgeworCituYW1lc3BhY2UgeworCit1c2luZyA6OnN0ZDo6b3N0cmVhbTsK
KworLy8gUHJpbnRzIGEgc2VnbWVudCBvZiBieXRlcyBpbiB0aGUgZ2l2ZW4gb2JqZWN0LgorR1RF
U1RfQVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8KK0dURVNUX0FUVFJJQlVURV9OT19TQU5J
VElaRV9BRERSRVNTXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KK3ZvaWQg
UHJpbnRCeXRlU2VnbWVudEluT2JqZWN0VG8oY29uc3QgdW5zaWduZWQgY2hhciogb2JqX2J5dGVz
LCBzaXplX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBj
b3VudCwgb3N0cmVhbSogb3MpIHsKKyAgY2hhciB0ZXh0WzVdID0gIiI7CisgIGZvciAoc2l6ZV90
IGkgPSAwOyBpICE9IGNvdW50OyBpKyspIHsKKyAgICBjb25zdCBzaXplX3QgaiA9IHN0YXJ0ICsg
aTsKKyAgICBpZiAoaSAhPSAwKSB7CisgICAgICAvLyBPcmdhbml6ZXMgdGhlIGJ5dGVzIGludG8g
Z3JvdXBzIG9mIDIgZm9yIGVhc3kgcGFyc2luZyBieQorICAgICAgLy8gaHVtYW4uCisgICAgICBp
ZiAoKGogJSAyKSA9PSAwKQorICAgICAgICAqb3MgPDwgJyAnOworICAgICAgZWxzZQorICAgICAg
ICAqb3MgPDwgJy0nOworICAgIH0KKyAgICBHVEVTVF9TTlBSSU5URl8odGV4dCwgc2l6ZW9mKHRl
eHQpLCAiJTAyWCIsIG9ial9ieXRlc1tqXSk7CisgICAgKm9zIDw8IHRleHQ7CisgIH0KK30KKwor
Ly8gUHJpbnRzIHRoZSBieXRlcyBpbiB0aGUgZ2l2ZW4gdmFsdWUgdG8gdGhlIGdpdmVuIG9zdHJl
YW0uCit2b2lkIFByaW50Qnl0ZXNJbk9iamVjdFRvSW1wbChjb25zdCB1bnNpZ25lZCBjaGFyKiBv
YmpfYnl0ZXMsIHNpemVfdCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9z
dHJlYW0qIG9zKSB7CisgIC8vIFRlbGxzIHRoZSB1c2VyIGhvdyBiaWcgdGhlIG9iamVjdCBpcy4K
KyAgKm9zIDw8IGNvdW50IDw8ICItYnl0ZSBvYmplY3QgPCI7CisKKyAgY29uc3Qgc2l6ZV90IGtU
aHJlc2hvbGQgPSAxMzI7CisgIGNvbnN0IHNpemVfdCBrQ2h1bmtTaXplID0gNjQ7CisgIC8vIElm
IHRoZSBvYmplY3Qgc2l6ZSBpcyBiaWdnZXIgdGhhbiBrVGhyZXNob2xkLCB3ZSdsbCBoYXZlIHRv
IG9taXQKKyAgLy8gc29tZSBkZXRhaWxzIGJ5IHByaW50aW5nIG9ubHkgdGhlIGZpcnN0IGFuZCB0
aGUgbGFzdCBrQ2h1bmtTaXplCisgIC8vIGJ5dGVzLgorICAvLyBGSVhNRTogbGV0IHRoZSB1c2Vy
IGNvbnRyb2wgdGhlIHRocmVzaG9sZCB1c2luZyBhIGZsYWcuCisgIGlmIChjb3VudCA8IGtUaHJl
c2hvbGQpIHsKKyAgICBQcmludEJ5dGVTZWdtZW50SW5PYmplY3RUbyhvYmpfYnl0ZXMsIDAsIGNv
dW50LCBvcyk7CisgIH0gZWxzZSB7CisgICAgUHJpbnRCeXRlU2VnbWVudEluT2JqZWN0VG8ob2Jq
X2J5dGVzLCAwLCBrQ2h1bmtTaXplLCBvcyk7CisgICAgKm9zIDw8ICIgLi4uICI7CisgICAgLy8g
Um91bmRzIHVwIHRvIDItYnl0ZSBib3VuZGFyeS4KKyAgICBjb25zdCBzaXplX3QgcmVzdW1lX3Bv
cyA9IChjb3VudCAtIGtDaHVua1NpemUgKyAxKS8yKjI7CisgICAgUHJpbnRCeXRlU2VnbWVudElu
T2JqZWN0VG8ob2JqX2J5dGVzLCByZXN1bWVfcG9zLCBjb3VudCAtIHJlc3VtZV9wb3MsIG9zKTsK
KyAgfQorICAqb3MgPDwgIj4iOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworbmFtZXNwYWNlIGlu
dGVybmFsMiB7CisKKy8vIERlbGVnYXRlcyB0byBQcmludEJ5dGVzSW5PYmplY3RUb0ltcGwoKSB0
byBwcmludCB0aGUgYnl0ZXMgaW4gdGhlCisvLyBnaXZlbiBvYmplY3QuICBUaGUgZGVsZWdhdGlv
biBzaW1wbGlmaWVzIHRoZSBpbXBsZW1lbnRhdGlvbiwgd2hpY2gKKy8vIHVzZXMgdGhlIDw8IG9w
ZXJhdG9yIGFuZCB0aHVzIGlzIGVhc2llciBkb25lIG91dHNpZGUgb2YgdGhlCisvLyA6OnRlc3Rp
bmc6OmludGVybmFsIG5hbWVzcGFjZSwgd2hpY2ggY29udGFpbnMgYSA8PCBvcGVyYXRvciB0aGF0
CisvLyBzb21ldGltZXMgY29uZmxpY3RzIHdpdGggdGhlIG9uZSBpbiBTVEwuCit2b2lkIFByaW50
Qnl0ZXNJbk9iamVjdFRvKGNvbnN0IHVuc2lnbmVkIGNoYXIqIG9ial9ieXRlcywgc2l6ZV90IGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICBvc3RyZWFtKiBvcykgeworICBQcmludEJ5
dGVzSW5PYmplY3RUb0ltcGwob2JqX2J5dGVzLCBjb3VudCwgb3MpOworfQorCit9ICAvLyBuYW1l
c3BhY2UgaW50ZXJuYWwyCisKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIERlcGVuZGluZyBv
biB0aGUgdmFsdWUgb2YgYSBjaGFyIChvciB3Y2hhcl90KSwgd2UgcHJpbnQgaXQgaW4gb25lCisv
LyBvZiB0aHJlZSBmb3JtYXRzOgorLy8gICAtIGFzIGlzIGlmIGl0J3MgYSBwcmludGFibGUgQVND
SUkgKGUuZy4gJ2EnLCAnMicsICcgJyksCisvLyAgIC0gYXMgYSBoZXhhZGVjaW1hbCBlc2NhcGUg
c2VxdWVuY2UgKGUuZy4gJ1x4N0YnKSwgb3IKKy8vICAgLSBhcyBhIHNwZWNpYWwgZXNjYXBlIHNl
cXVlbmNlIChlLmcuICdccicsICdcbicpLgorZW51bSBDaGFyRm9ybWF0IHsKKyAga0FzSXMsCisg
IGtIZXhFc2NhcGUsCisgIGtTcGVjaWFsRXNjYXBlCit9OworCisvLyBSZXR1cm5zIHRydWUgaWYg
YyBpcyBhIHByaW50YWJsZSBBU0NJSSBjaGFyYWN0ZXIuICBXZSB0ZXN0IHRoZQorLy8gdmFsdWUg
b2YgYyBkaXJlY3RseSBpbnN0ZWFkIG9mIGNhbGxpbmcgaXNwcmludCgpLCB3aGljaCBpcyBidWdn
eSBvbgorLy8gV2luZG93cyBNb2JpbGUuCitpbmxpbmUgYm9vbCBJc1ByaW50YWJsZUFzY2lpKHdj
aGFyX3QgYykgeworICByZXR1cm4gMHgyMCA8PSBjICYmIGMgPD0gMHg3RTsKK30KKworLy8gUHJp
bnRzIGEgd2lkZSBvciBuYXJyb3cgY2hhciBjIGFzIGEgY2hhcmFjdGVyIGxpdGVyYWwgd2l0aG91
dCB0aGUKKy8vIHF1b3RlcywgZXNjYXBpbmcgaXQgd2hlbiBuZWNlc3Nhcnk7IHJldHVybnMgaG93
IGMgd2FzIGZvcm1hdHRlZC4KKy8vIFRoZSB0ZW1wbGF0ZSBhcmd1bWVudCBVbnNpZ25lZENoYXIg
aXMgdGhlIHVuc2lnbmVkIHZlcnNpb24gb2YgQ2hhciwKKy8vIHdoaWNoIGlzIHRoZSB0eXBlIG9m
IGMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVW5zaWduZWRDaGFyLCB0eXBlbmFtZSBDaGFyPgorc3Rh
dGljIENoYXJGb3JtYXQgUHJpbnRBc0NoYXJMaXRlcmFsVG8oQ2hhciBjLCBvc3RyZWFtKiBvcykg
eworICBzd2l0Y2ggKHN0YXRpY19jYXN0PHdjaGFyX3Q+KGMpKSB7CisgICAgY2FzZSBMJ1wwJzoK
KyAgICAgICpvcyA8PCAiXFwwIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTCdcJyc6CisgICAg
ICAqb3MgPDwgIlxcJyI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwnXFwnOgorICAgICAgKm9z
IDw8ICJcXFxcIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTCdcYSc6CisgICAgICAqb3MgPDwg
IlxcYSI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwnXGInOgorICAgICAgKm9zIDw8ICJcXGIi
OworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1xmJzoKKyAgICAgICpvcyA8PCAiXFxmIjsKKyAg
ICAgIGJyZWFrOworICAgIGNhc2UgTCdcbic6CisgICAgICAqb3MgPDwgIlxcbiI7CisgICAgICBi
cmVhazsKKyAgICBjYXNlIEwnXHInOgorICAgICAgKm9zIDw8ICJcXHIiOworICAgICAgYnJlYWs7
CisgICAgY2FzZSBMJ1x0JzoKKyAgICAgICpvcyA8PCAiXFx0IjsKKyAgICAgIGJyZWFrOworICAg
IGNhc2UgTCdcdic6CisgICAgICAqb3MgPDwgIlxcdiI7CisgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgaWYgKElzUHJpbnRhYmxlQXNjaWkoYykpIHsKKyAgICAgICAgKm9zIDw8IHN0
YXRpY19jYXN0PGNoYXI+KGMpOworICAgICAgICByZXR1cm4ga0FzSXM7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBvc3RyZWFtOjpmbXRmbGFncyBmbGFncyA9IG9zLT5mbGFncygpOworICAgICAg
ICAqb3MgPDwgIlxceCIgPDwgc3RkOjpoZXggPDwgc3RkOjp1cHBlcmNhc2UKKyAgICAgICAgICAg
IDw8IHN0YXRpY19jYXN0PGludD4oc3RhdGljX2Nhc3Q8VW5zaWduZWRDaGFyPihjKSk7CisgICAg
ICAgIG9zLT5mbGFncyhmbGFncyk7CisgICAgICAgIHJldHVybiBrSGV4RXNjYXBlOworICAgICAg
fQorICB9CisgIHJldHVybiBrU3BlY2lhbEVzY2FwZTsKK30KKworLy8gUHJpbnRzIGEgd2NoYXJf
dCBjIGFzIGlmIGl0J3MgcGFydCBvZiBhIHN0cmluZyBsaXRlcmFsLCBlc2NhcGluZyBpdCB3aGVu
CisvLyBuZWNlc3Nhcnk7IHJldHVybnMgaG93IGMgd2FzIGZvcm1hdHRlZC4KK3N0YXRpYyBDaGFy
Rm9ybWF0IFByaW50QXNTdHJpbmdMaXRlcmFsVG8od2NoYXJfdCBjLCBvc3RyZWFtKiBvcykgewor
ICBzd2l0Y2ggKGMpIHsKKyAgICBjYXNlIEwnXCcnOgorICAgICAgKm9zIDw8ICInIjsKKyAgICAg
IHJldHVybiBrQXNJczsKKyAgICBjYXNlIEwnIic6CisgICAgICAqb3MgPDwgIlxcXCIiOworICAg
ICAgcmV0dXJuIGtTcGVjaWFsRXNjYXBlOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gUHJp
bnRBc0NoYXJMaXRlcmFsVG88d2NoYXJfdD4oYywgb3MpOworICB9Cit9CisKKy8vIFByaW50cyBh
IGNoYXIgYyBhcyBpZiBpdCdzIHBhcnQgb2YgYSBzdHJpbmcgbGl0ZXJhbCwgZXNjYXBpbmcgaXQg
d2hlbgorLy8gbmVjZXNzYXJ5OyByZXR1cm5zIGhvdyBjIHdhcyBmb3JtYXR0ZWQuCitzdGF0aWMg
Q2hhckZvcm1hdCBQcmludEFzU3RyaW5nTGl0ZXJhbFRvKGNoYXIgYywgb3N0cmVhbSogb3MpIHsK
KyAgcmV0dXJuIFByaW50QXNTdHJpbmdMaXRlcmFsVG8oCisgICAgICBzdGF0aWNfY2FzdDx3Y2hh
cl90PihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKSksIG9zKTsKK30KKworLy8gUHJpbnRz
IGEgd2lkZSBvciBuYXJyb3cgY2hhcmFjdGVyIGMgYW5kIGl0cyBjb2RlLiAgJ1wwJyBpcyBwcmlu
dGVkCisvLyBhcyAiJ1xcMCciLCBvdGhlciB1bnByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZSBhbHNv
IHByb3Blcmx5IGVzY2FwZWQKKy8vIHVzaW5nIHRoZSBzdGFuZGFyZCBDKysgZXNjYXBlIHNlcXVl
bmNlLiAgVGhlIHRlbXBsYXRlIGFyZ3VtZW50CisvLyBVbnNpZ25lZENoYXIgaXMgdGhlIHVuc2ln
bmVkIHZlcnNpb24gb2YgQ2hhciwgd2hpY2ggaXMgdGhlIHR5cGUgb2YgYy4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBVbnNpZ25lZENoYXIsIHR5cGVuYW1lIENoYXI+Cit2b2lkIFByaW50Q2hhckFuZENv
ZGVUbyhDaGFyIGMsIG9zdHJlYW0qIG9zKSB7CisgIC8vIEZpcnN0LCBwcmludCBjIGFzIGEgbGl0
ZXJhbCBpbiB0aGUgbW9zdCByZWFkYWJsZSBmb3JtIHdlIGNhbiBmaW5kLgorICAqb3MgPDwgKChz
aXplb2YoYykgPiAxKSA/ICJMJyIgOiAiJyIpOworICBjb25zdCBDaGFyRm9ybWF0IGZvcm1hdCA9
IFByaW50QXNDaGFyTGl0ZXJhbFRvPFVuc2lnbmVkQ2hhcj4oYywgb3MpOworICAqb3MgPDwgIici
OworCisgIC8vIFRvIGFpZCB1c2VyIGRlYnVnZ2luZywgd2UgYWxzbyBwcmludCBjJ3MgY29kZSBp
biBkZWNpbWFsLCB1bmxlc3MKKyAgLy8gaXQncyAwIChpbiB3aGljaCBjYXNlIGMgd2FzIHByaW50
ZWQgYXMgJ1xcMCcsIG1ha2luZyB0aGUgY29kZQorICAvLyBvYnZpb3VzKS4KKyAgaWYgKGMgPT0g
MCkKKyAgICByZXR1cm47CisgICpvcyA8PCAiICgiIDw8IHN0YXRpY19jYXN0PGludD4oYyk7CisK
KyAgLy8gRm9yIG1vcmUgY29udmVuaWVuY2UsIHdlIHByaW50IGMncyBjb2RlIGFnYWluIGluIGhl
eGFkZWNpbWFsLAorICAvLyB1bmxlc3MgYyB3YXMgYWxyZWFkeSBwcmludGVkIGluIHRoZSBmb3Jt
ICdceCMjJyBvciB0aGUgY29kZSBpcyBpbgorICAvLyBbMSwgOV0uCisgIGlmIChmb3JtYXQgPT0g
a0hleEVzY2FwZSB8fCAoMSA8PSBjICYmIGMgPD0gOSkpIHsKKyAgICAvLyBEbyBub3RoaW5nLgor
ICB9IGVsc2UgeworICAgICpvcyA8PCAiLCAweCIgPDwgU3RyaW5nOjpGb3JtYXRIZXhJbnQoc3Rh
dGljX2Nhc3Q8VW5zaWduZWRDaGFyPihjKSk7CisgIH0KKyAgKm9zIDw8ICIpIjsKK30KKwordm9p
ZCBQcmludFRvKHVuc2lnbmVkIGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50
Q2hhckFuZENvZGVUbzx1bnNpZ25lZCBjaGFyPihjLCBvcyk7Cit9Cit2b2lkIFByaW50VG8oc2ln
bmVkIGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hhckFuZENvZGVUbzx1
bnNpZ25lZCBjaGFyPihjLCBvcyk7Cit9CisKKy8vIFByaW50cyBhIHdjaGFyX3QgYXMgYSBzeW1i
b2wgaWYgaXQgaXMgcHJpbnRhYmxlIG9yIGFzIGl0cyBpbnRlcm5hbAorLy8gY29kZSBvdGhlcndp
c2UgYW5kIGFsc28gYXMgaXRzIGNvZGUuICBMJ1wwJyBpcyBwcmludGVkIGFzICJMJ1xcMCciLgor
dm9pZCBQcmludFRvKHdjaGFyX3Qgd2MsIG9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hhckFuZENv
ZGVUbzx3Y2hhcl90Pih3Yywgb3MpOworfQorCisvLyBQcmludHMgdGhlIGdpdmVuIGFycmF5IG9m
IGNoYXJhY3RlcnMgdG8gdGhlIG9zdHJlYW0uICBDaGFyVHlwZSBtdXN0IGJlIGVpdGhlcgorLy8g
Y2hhciBvciB3Y2hhcl90LgorLy8gVGhlIGFycmF5IHN0YXJ0cyBhdCBiZWdpbiwgdGhlIGxlbmd0
aCBpcyBsZW4sIGl0IG1heSBpbmNsdWRlICdcMCcgY2hhcmFjdGVycworLy8gYW5kIG1heSBub3Qg
YmUgTlVMLXRlcm1pbmF0ZWQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CitHVEVTVF9B
VFRSSUJVVEVfTk9fU0FOSVRJWkVfTUVNT1JZXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpF
X0FERFJFU1NfCitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXworc3RhdGljIENo
YXJGb3JtYXQgUHJpbnRDaGFyc0FzU3RyaW5nVG8oCisgICAgY29uc3QgQ2hhclR5cGUqIGJlZ2lu
LCBzaXplX3QgbGVuLCBvc3RyZWFtKiBvcykgeworICBjb25zdCBjaGFyKiBjb25zdCBrUXVvdGVC
ZWdpbiA9IHNpemVvZihDaGFyVHlwZSkgPT0gMSA/ICJcIiIgOiAiTFwiIjsKKyAgKm9zIDw8IGtR
dW90ZUJlZ2luOworICBib29sIGlzX3ByZXZpb3VzX2hleCA9IGZhbHNlOworICBDaGFyRm9ybWF0
IHByaW50X2Zvcm1hdCA9IGtBc0lzOworICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
bGVuOyArK2luZGV4KSB7CisgICAgY29uc3QgQ2hhclR5cGUgY3VyID0gYmVnaW5baW5kZXhdOwor
ICAgIGlmIChpc19wcmV2aW91c19oZXggJiYgSXNYRGlnaXQoY3VyKSkgeworICAgICAgLy8gUHJl
dmlvdXMgY2hhcmFjdGVyIGlzIG9mICdceC4uJyBmb3JtIGFuZCB0aGlzIGNoYXJhY3RlciBjYW4g
YmUKKyAgICAgIC8vIGludGVycHJldGVkIGFzIGFub3RoZXIgaGV4YWRlY2ltYWwgZGlnaXQgaW4g
aXRzIG51bWJlci4gQnJlYWsgc3RyaW5nIHRvCisgICAgICAvLyBkaXNhbWJpZ3VhdGUuCisgICAg
ICAqb3MgPDwgIlwiICIgPDwga1F1b3RlQmVnaW47CisgICAgfQorICAgIGlzX3ByZXZpb3VzX2hl
eCA9IFByaW50QXNTdHJpbmdMaXRlcmFsVG8oY3VyLCBvcykgPT0ga0hleEVzY2FwZTsKKyAgICAv
LyBSZW1lbWJlciBpZiBhbnkgY2hhcmFjdGVycyByZXF1aXJlZCBoZXggZXNjYXBpbmcuCisgICAg
aWYgKGlzX3ByZXZpb3VzX2hleCkgeworICAgICAgcHJpbnRfZm9ybWF0ID0ga0hleEVzY2FwZTsK
KyAgICB9CisgIH0KKyAgKm9zIDw8ICJcIiI7CisgIHJldHVybiBwcmludF9mb3JtYXQ7Cit9CisK
Ky8vIFByaW50cyBhIChjb25zdCkgY2hhci93Y2hhcl90IGFycmF5IG9mICdsZW4nIGVsZW1lbnRz
LCBzdGFydGluZyBhdCBhZGRyZXNzCisvLyAnYmVnaW4nLiAgQ2hhclR5cGUgbXVzdCBiZSBlaXRo
ZXIgY2hhciBvciB3Y2hhcl90LgordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorR1RFU1Rf
QVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8KK0dURVNUX0FUVFJJQlVURV9OT19TQU5JVEla
RV9BRERSRVNTXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KK3N0YXRpYyB2
b2lkIFVuaXZlcnNhbFByaW50Q2hhckFycmF5KAorICAgIGNvbnN0IENoYXJUeXBlKiBiZWdpbiwg
c2l6ZV90IGxlbiwgb3N0cmVhbSogb3MpIHsKKyAgLy8gVGhlIGNvZGUKKyAgLy8gICBjb25zdCBj
aGFyIGtGb29bXSA9ICJmb28iOworICAvLyBnZW5lcmF0ZXMgYW4gYXJyYXkgb2YgNCwgbm90IDMs
IGVsZW1lbnRzLCB3aXRoIHRoZSBsYXN0IG9uZSBiZWluZyAnXDAnLgorICAvLworICAvLyBUaGVy
ZWZvcmUgd2hlbiBwcmludGluZyBhIGNoYXIgYXJyYXksIHdlIGRvbid0IHByaW50IHRoZSBsYXN0
IGVsZW1lbnQgaWYKKyAgLy8gaXQncyAnXDAnLCBzdWNoIHRoYXQgdGhlIG91dHB1dCBtYXRjaGVz
IHRoZSBzdHJpbmcgbGl0ZXJhbCBhcyBpdCdzCisgIC8vIHdyaXR0ZW4gaW4gdGhlIHNvdXJjZSBj
b2RlLgorICBpZiAobGVuID4gMCAmJiBiZWdpbltsZW4gLSAxXSA9PSAnXDAnKSB7CisgICAgUHJp
bnRDaGFyc0FzU3RyaW5nVG8oYmVnaW4sIGxlbiAtIDEsIG9zKTsKKyAgICByZXR1cm47CisgIH0K
KworICAvLyBJZiwgaG93ZXZlciwgdGhlIGxhc3QgZWxlbWVudCBpbiB0aGUgYXJyYXkgaXMgbm90
ICdcMCcsIGUuZy4KKyAgLy8gICAgY29uc3QgY2hhciBrRm9vW10gPSB7ICdmJywgJ28nLCAnbycg
fTsKKyAgLy8gd2UgbXVzdCBwcmludCB0aGUgZW50aXJlIGFycmF5LiAgV2UgYWxzbyBwcmludCBh
IG1lc3NhZ2UgdG8gaW5kaWNhdGUKKyAgLy8gdGhhdCB0aGUgYXJyYXkgaXMgbm90IE5VTC10ZXJt
aW5hdGVkLgorICBQcmludENoYXJzQXNTdHJpbmdUbyhiZWdpbiwgbGVuLCBvcyk7CisgICpvcyA8
PCAiIChubyB0ZXJtaW5hdGluZyBOVUwpIjsKK30KKworLy8gUHJpbnRzIGEgKGNvbnN0KSBjaGFy
IGFycmF5IG9mICdsZW4nIGVsZW1lbnRzLCBzdGFydGluZyBhdCBhZGRyZXNzICdiZWdpbicuCit2
b2lkIFVuaXZlcnNhbFByaW50QXJyYXkoY29uc3QgY2hhciogYmVnaW4sIHNpemVfdCBsZW4sIG9z
dHJlYW0qIG9zKSB7CisgIFVuaXZlcnNhbFByaW50Q2hhckFycmF5KGJlZ2luLCBsZW4sIG9zKTsK
K30KKworLy8gUHJpbnRzIGEgKGNvbnN0KSB3Y2hhcl90IGFycmF5IG9mICdsZW4nIGVsZW1lbnRz
LCBzdGFydGluZyBhdCBhZGRyZXNzCisvLyAnYmVnaW4nLgordm9pZCBVbml2ZXJzYWxQcmludEFy
cmF5KGNvbnN0IHdjaGFyX3QqIGJlZ2luLCBzaXplX3QgbGVuLCBvc3RyZWFtKiBvcykgeworICBV
bml2ZXJzYWxQcmludENoYXJBcnJheShiZWdpbiwgbGVuLCBvcyk7Cit9CisKKy8vIFByaW50cyB0
aGUgZ2l2ZW4gQyBzdHJpbmcgdG8gdGhlIG9zdHJlYW0uCit2b2lkIFByaW50VG8oY29uc3QgY2hh
ciogcywgb3N0cmVhbSogb3MpIHsKKyAgaWYgKHMgPT0gTlVMTCkgeworICAgICpvcyA8PCAiTlVM
TCI7CisgIH0gZWxzZSB7CisgICAgKm9zIDw8IEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMp
IDw8ICIgcG9pbnRpbmcgdG8gIjsKKyAgICBQcmludENoYXJzQXNTdHJpbmdUbyhzLCBzdHJsZW4o
cyksIG9zKTsKKyAgfQorfQorCisvLyBNU1ZDIGNvbXBpbGVyIGNhbiBiZSBjb25maWd1cmVkIHRv
IGRlZmluZSB3aGFyX3QgYXMgYSB0eXBlZGVmCisvLyBvZiB1bnNpZ25lZCBzaG9ydC4gRGVmaW5p
bmcgYW4gb3ZlcmxvYWQgZm9yIGNvbnN0IHdjaGFyX3QqIGluIHRoYXQgY2FzZQorLy8gd291bGQg
Y2F1c2UgcG9pbnRlcnMgdG8gdW5zaWduZWQgc2hvcnRzIGJlIHByaW50ZWQgYXMgd2lkZSBzdHJp
bmdzLAorLy8gcG9zc2libHkgYWNjZXNzaW5nIG1vcmUgbWVtb3J5IHRoYW4gaW50ZW5kZWQgYW5k
IGNhdXNpbmcgaW52YWxpZAorLy8gbWVtb3J5IGFjY2Vzc2VzLiBNU1ZDIGRlZmluZXMgX05BVElW
RV9XQ0hBUl9UX0RFRklORUQgc3ltYm9sIHdoZW4KKy8vIHdjaGFyX3QgaXMgaW1wbGVtZW50ZWQg
YXMgYSBuYXRpdmUgdHlwZS4KKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfTkFU
SVZFX1dDSEFSX1RfREVGSU5FRCkKKy8vIFByaW50cyB0aGUgZ2l2ZW4gd2lkZSBDIHN0cmluZyB0
byB0aGUgb3N0cmVhbS4KK3ZvaWQgUHJpbnRUbyhjb25zdCB3Y2hhcl90KiBzLCBvc3RyZWFtKiBv
cykgeworICBpZiAocyA9PSBOVUxMKSB7CisgICAgKm9zIDw8ICJOVUxMIjsKKyAgfSBlbHNlIHsK
KyAgICAqb3MgPDwgSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocykgPDwgIiBwb2ludGluZyB0
byAiOworICAgIFByaW50Q2hhcnNBc1N0cmluZ1RvKHMsIHN0ZDo6d2NzbGVuKHMpLCBvcyk7Cisg
IH0KK30KKyNlbmRpZiAgLy8gd2NoYXJfdCBpcyBuYXRpdmUKKworbmFtZXNwYWNlIHsKKworYm9v
bCBDb250YWluc1VucHJpbnRhYmxlQ29udHJvbENvZGVzKGNvbnN0IGNoYXIqIHN0ciwgc2l6ZV90
IGxlbmd0aCkgeworICBjb25zdCB1bnNpZ25lZCBjaGFyICpzID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyICo+KHN0cik7CisKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBs
ZW5ndGg7IGkrKykgeworICAgIHVuc2lnbmVkIGNoYXIgY2ggPSAqcysrOworICAgIGlmIChzdGQ6
OmlzY250cmwoY2gpKSB7CisgICAgICAgIHN3aXRjaCAoY2gpIHsKKyAgICAgICAgY2FzZSAnXHQn
OgorICAgICAgICBjYXNlICdcbic6CisgICAgICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgfQorICB9CisgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBJc1VURjhUcmFpbEJ5dGUo
dW5zaWduZWQgY2hhciB0KSB7IHJldHVybiAweDgwIDw9IHQgJiYgdDw9IDB4YmY7IH0KKworYm9v
bCBJc1ZhbGlkVVRGOChjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW5ndGgpIHsKKyAgY29uc3Qg
dW5zaWduZWQgY2hhciAqcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAq
PihzdHIpOworCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOykgeworICAgIHVuc2ln
bmVkIGNoYXIgbGVhZCA9IHNbaSsrXTsKKworICAgIGlmIChsZWFkIDw9IDB4N2YpIHsKKyAgICAg
IGNvbnRpbnVlOyAgLy8gc2luZ2xlLWJ5dGUgY2hhcmFjdGVyIChBU0NJSSkgMC4uN0YKKyAgICB9
CisgICAgaWYgKGxlYWQgPCAweGMyKSB7CisgICAgICByZXR1cm4gZmFsc2U7ICAvLyB0cmFpbCBi
eXRlIG9yIG5vbi1zaG9ydGVzdCBmb3JtCisgICAgfSBlbHNlIGlmIChsZWFkIDw9IDB4ZGYgJiYg
KGkgKyAxKSA8PSBsZW5ndGggJiYgSXNVVEY4VHJhaWxCeXRlKHNbaV0pKSB7CisgICAgICArK2k7
ICAvLyAyLWJ5dGUgY2hhcmFjdGVyCisgICAgfSBlbHNlIGlmICgweGUwIDw9IGxlYWQgJiYgbGVh
ZCA8PSAweGVmICYmIChpICsgMikgPD0gbGVuZ3RoICYmCisgICAgICAgICAgICAgICBJc1VURjhU
cmFpbEJ5dGUoc1tpXSkgJiYKKyAgICAgICAgICAgICAgIElzVVRGOFRyYWlsQnl0ZShzW2kgKyAx
XSkgJiYKKyAgICAgICAgICAgICAgIC8vIGNoZWNrIGZvciBub24tc2hvcnRlc3QgZm9ybSBhbmQg
c3Vycm9nYXRlCisgICAgICAgICAgICAgICAobGVhZCAhPSAweGUwIHx8IHNbaV0gPj0gMHhhMCkg
JiYKKyAgICAgICAgICAgICAgIChsZWFkICE9IDB4ZWQgfHwgc1tpXSA8IDB4YTApKSB7CisgICAg
ICBpICs9IDI7ICAvLyAzLWJ5dGUgY2hhcmFjdGVyCisgICAgfSBlbHNlIGlmICgweGYwIDw9IGxl
YWQgJiYgbGVhZCA8PSAweGY0ICYmIChpICsgMykgPD0gbGVuZ3RoICYmCisgICAgICAgICAgICAg
ICBJc1VURjhUcmFpbEJ5dGUoc1tpXSkgJiYKKyAgICAgICAgICAgICAgIElzVVRGOFRyYWlsQnl0
ZShzW2kgKyAxXSkgJiYKKyAgICAgICAgICAgICAgIElzVVRGOFRyYWlsQnl0ZShzW2kgKyAyXSkg
JiYKKyAgICAgICAgICAgICAgIC8vIGNoZWNrIGZvciBub24tc2hvcnRlc3QgZm9ybQorICAgICAg
ICAgICAgICAgKGxlYWQgIT0gMHhmMCB8fCBzW2ldID49IDB4OTApICYmCisgICAgICAgICAgICAg
ICAobGVhZCAhPSAweGY0IHx8IHNbaV0gPCAweDkwKSkgeworICAgICAgaSArPSAzOyAgLy8gNC1i
eXRlIGNoYXJhY3RlcgorICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICB9CisgIHJldHVybiB0cnVlOworfQorCit2b2lkIENvbmRpdGlvbmFsUHJpbnRBc1RleHQoY29u
c3QgY2hhciogc3RyLCBzaXplX3QgbGVuZ3RoLCBvc3RyZWFtKiBvcykgeworICBpZiAoIUNvbnRh
aW5zVW5wcmludGFibGVDb250cm9sQ29kZXMoc3RyLCBsZW5ndGgpICYmCisgICAgICBJc1ZhbGlk
VVRGOChzdHIsIGxlbmd0aCkpIHsKKyAgICAqb3MgPDwgIlxuICAgIEFzIFRleHQ6IFwiIiA8PCBz
dHIgPDwgIlwiIjsKKyAgfQorfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKKy8vIFBy
aW50cyBhIDo6c3RyaW5nIG9iamVjdC4KKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwordm9p
ZCBQcmludFN0cmluZ1RvKGNvbnN0IDo6c3RyaW5nJiBzLCBvc3RyZWFtKiBvcykgeworICBpZiAo
UHJpbnRDaGFyc0FzU3RyaW5nVG8ocy5kYXRhKCksIHMuc2l6ZSgpLCBvcykgPT0ga0hleEVzY2Fw
ZSkgeworICAgIGlmIChHVEVTVF9GTEFHKHByaW50X3V0ZjgpKSB7CisgICAgICBDb25kaXRpb25h
bFByaW50QXNUZXh0KHMuZGF0YSgpLCBzLnNpemUoKSwgb3MpOworICAgIH0KKyAgfQorfQorI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCit2b2lkIFByaW50U3RyaW5nVG8oY29u
c3QgOjpzdGQ6OnN0cmluZyYgcywgb3N0cmVhbSogb3MpIHsKKyAgaWYgKFByaW50Q2hhcnNBc1N0
cmluZ1RvKHMuZGF0YSgpLCBzLnNpemUoKSwgb3MpID09IGtIZXhFc2NhcGUpIHsKKyAgICBpZiAo
R1RFU1RfRkxBRyhwcmludF91dGY4KSkgeworICAgICAgQ29uZGl0aW9uYWxQcmludEFzVGV4dChz
LmRhdGEoKSwgcy5zaXplKCksIG9zKTsKKyAgICB9CisgIH0KK30KKworLy8gUHJpbnRzIGEgOjp3
c3RyaW5nIG9iamVjdC4KKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKK3ZvaWQgUHJpbnRX
aWRlU3RyaW5nVG8oY29uc3QgOjp3c3RyaW5nJiBzLCBvc3RyZWFtKiBvcykgeworICBQcmludENo
YXJzQXNTdHJpbmdUbyhzLmRhdGEoKSwgcy5zaXplKCksIG9zKTsKK30KKyNlbmRpZiAgLy8gR1RF
U1RfSEFTX0dMT0JBTF9XU1RSSU5HCisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKK3ZvaWQg
UHJpbnRXaWRlU3RyaW5nVG8oY29uc3QgOjpzdGQ6OndzdHJpbmcmIHMsIG9zdHJlYW0qIG9zKSB7
CisgIFByaW50Q2hhcnNBc1N0cmluZ1RvKHMuZGF0YSgpLCBzLnNpemUoKSwgb3MpOworfQorI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c3JjL2d0ZXN0LXRlc3QtcGFydC5jYwppbmRleCA1ZDE4M2E0NDZmMjk0Y2U5ZTFhODU4N2M4Yjkx
MjBhOWJlYzg4N2RkLi5jODg4NjBkOTIzODU2MTllYTY3NjQ4ODQ1ODM5ZDE0NTgzZjExMTQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10ZXN0LXBhcnQuY2MKQEAg
LTI2LDIxICsyNiwxMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotLy8KLS8vIEF1dGhvcjogbWhldWxlQGdvb2dsZS5jb20gKE1hcmt1cyBIZXVsZSkK
LS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAK
LSNpbmNsdWRlIDxndGVzdC9ndGVzdC10ZXN0LXBhcnQuaD4KKy8vCisvLyBUaGUgR29vZ2xlIEMr
KyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAKLS8vIEluZGlj
YXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MK
LS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1p
bmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4g
IFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGlu
Y2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8gaGlzIGNvZGUuCi0jZGVmaW5lIEdU
RVNUX0lNUExFTUVOVEFUSU9OXyAxCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0Lmgi
CiAjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExF
TUVOVEFUSU9OXwogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKQEAgLTQ4LDEwICszOSwxMCBAQCB1
c2luZyBpbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsOwogCiAvLyBHZXRzIHRoZSBzdW1tYXJ5IG9m
IHRoZSBmYWlsdXJlIG1lc3NhZ2UgYnkgb21pdHRpbmcgdGhlIHN0YWNrIHRyYWNlCiAvLyBpbiBp
dC4KLWludGVybmFsOjpTdHJpbmcgVGVzdFBhcnRSZXN1bHQ6OkV4dHJhY3RTdW1tYXJ5KGNvbnN0
IGNoYXIqIG1lc3NhZ2UpIHsKK3N0ZDo6c3RyaW5nIFRlc3RQYXJ0UmVzdWx0OjpFeHRyYWN0U3Vt
bWFyeShjb25zdCBjaGFyKiBtZXNzYWdlKSB7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IHN0YWNrX3Ry
YWNlID0gc3Ryc3RyKG1lc3NhZ2UsIGludGVybmFsOjprU3RhY2tUcmFjZU1hcmtlcik7Ci0gIHJl
dHVybiBzdGFja190cmFjZSA9PSBOVUxMID8gaW50ZXJuYWw6OlN0cmluZyhtZXNzYWdlKSA6Ci0g
ICAgICBpbnRlcm5hbDo6U3RyaW5nKG1lc3NhZ2UsIHN0YWNrX3RyYWNlIC0gbWVzc2FnZSk7Cisg
IHJldHVybiBzdGFja190cmFjZSA9PSBOVUxMID8gbWVzc2FnZSA6CisgICAgICBzdGQ6OnN0cmlu
ZyhtZXNzYWdlLCBzdGFja190cmFjZSk7CiB9CiAKIC8vIFByaW50cyBhIFRlc3RQYXJ0UmVzdWx0
IG9iamVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10
eXBlZC10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXR5cGVkLXRl
c3QuY2MKaW5kZXggM2NjNGI1ZGUyYWFjYjc1OTg5MTE5YzVmOTZjN2Y0ZjgwZWFkNWNhZS4uMWRj
MmFkMzhiYWI5OGJjMTQ2YzE2MTU4YTQ3ZGExZTM5NGJmMzg1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKQEAgLTI2LDExICsyNiwxMSBA
QAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8v
IEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0LXR5cGVkLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
IAogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsKQEAgLTQwLDM4ICs0
MCw0NiBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogLy8gU2tpcHMgdG8gdGhlIGZpcnN0IG5vbi1z
cGFjZSBjaGFyIGluIHN0ci4gUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgc3RyCiAvLyBjb250
YWlucyBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycy4KIHN0YXRpYyBjb25zdCBjaGFyKiBTa2lw
U3BhY2VzKGNvbnN0IGNoYXIqIHN0cikgewotICB3aGlsZSAoaXNzcGFjZSgqc3RyKSkKKyAgd2hp
bGUgKElzU3BhY2UoKnN0cikpCiAgICAgc3RyKys7CiAgIHJldHVybiBzdHI7CiB9CiAKK3N0YXRp
YyBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gU3BsaXRJbnRvVGVzdE5hbWVzKGNvbnN0IGNoYXIq
IHNyYykgeworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbmFtZV92ZWM7CisgIHNyYyA9IFNr
aXBTcGFjZXMoc3JjKTsKKyAgZm9yICg7IHNyYyAhPSBOVUxMOyBzcmMgPSBTa2lwQ29tbWEoc3Jj
KSkgeworICAgIG5hbWVfdmVjLnB1c2hfYmFjayhTdHJpcFRyYWlsaW5nU3BhY2VzKEdldFByZWZp
eFVudGlsQ29tbWEoc3JjKSkpOworICB9CisgIHJldHVybiBuYW1lX3ZlYzsKK30KKwogLy8gVmVy
aWZpZXMgdGhhdCByZWdpc3RlcmVkX3Rlc3RzIG1hdGNoIHRoZSB0ZXN0IG5hbWVzIGluCi0vLyBk
ZWZpbmVkX3Rlc3RfbmFtZXNfOyByZXR1cm5zIHJlZ2lzdGVyZWRfdGVzdHMgaWYgc3VjY2Vzc2Z1
bCwgb3IKKy8vIHJlZ2lzdGVyZWRfdGVzdHNfOyByZXR1cm5zIHJlZ2lzdGVyZWRfdGVzdHMgaWYg
c3VjY2Vzc2Z1bCwgb3IKIC8vIGFib3J0cyB0aGUgcHJvZ3JhbSBvdGhlcndpc2UuCiBjb25zdCBj
aGFyKiBUeXBlZFRlc3RDYXNlUFN0YXRlOjpWZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVzKAogICAg
IGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiByZWdpc3RlcmVkX3Rlc3Rz
KSB7Ci0gIHR5cGVkZWYgOjpzdGQ6OnNldDxjb25zdCBjaGFyKj46OmNvbnN0X2l0ZXJhdG9yIERl
ZmluZWRUZXN0SXRlcjsKKyAgdHlwZWRlZiBSZWdpc3RlcmVkVGVzdHNNYXA6OmNvbnN0X2l0ZXJh
dG9yIFJlZ2lzdGVyZWRUZXN0SXRlcjsKICAgcmVnaXN0ZXJlZF8gPSB0cnVlOwogCi0gIC8vIFNr
aXAgaW5pdGlhbCB3aGl0ZXNwYWNlIGluIHJlZ2lzdGVyZWRfdGVzdHMgc2luY2Ugc29tZQotICAv
LyBwcmVwcm9jZXNzb3JzIHByZWZpeCBzdHJpbmdpemllZCBsaXRlcmFscyB3aXRoIHdoaXRlc3Bh
Y2UuCi0gIHJlZ2lzdGVyZWRfdGVzdHMgPSBTa2lwU3BhY2VzKHJlZ2lzdGVyZWRfdGVzdHMpOwor
ICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbmFtZV92ZWMgPSBTcGxpdEludG9UZXN0TmFtZXMo
cmVnaXN0ZXJlZF90ZXN0cyk7CiAKICAgTWVzc2FnZSBlcnJvcnM7Ci0gIDo6c3RkOjpzZXQ8U3Ry
aW5nPiB0ZXN0czsKLSAgZm9yIChjb25zdCBjaGFyKiBuYW1lcyA9IHJlZ2lzdGVyZWRfdGVzdHM7
IG5hbWVzICE9IE5VTEw7Ci0gICAgICAgbmFtZXMgPSBTa2lwQ29tbWEobmFtZXMpKSB7Ci0gICAg
Y29uc3QgU3RyaW5nIG5hbWUgPSBHZXRQcmVmaXhVbnRpbENvbW1hKG5hbWVzKTsKKworICBzdGQ6
OnNldDxzdGQ6OnN0cmluZz4gdGVzdHM7CisgIGZvciAoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
Ojpjb25zdF9pdGVyYXRvciBuYW1lX2l0ID0gbmFtZV92ZWMuYmVnaW4oKTsKKyAgICAgICBuYW1l
X2l0ICE9IG5hbWVfdmVjLmVuZCgpOyArK25hbWVfaXQpIHsKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbmFtZSA9ICpuYW1lX2l0OwogICAgIGlmICh0ZXN0cy5jb3VudChuYW1lKSAhPSAwKSB7CiAg
ICAgICBlcnJvcnMgPDwgIlRlc3QgIiA8PCBuYW1lIDw8ICIgaXMgbGlzdGVkIG1vcmUgdGhhbiBv
bmNlLlxuIjsKICAgICAgIGNvbnRpbnVlOwogICAgIH0KIAogICAgIGJvb2wgZm91bmQgPSBmYWxz
ZTsKLSAgICBmb3IgKERlZmluZWRUZXN0SXRlciBpdCA9IGRlZmluZWRfdGVzdF9uYW1lc18uYmVn
aW4oKTsKLSAgICAgICAgIGl0ICE9IGRlZmluZWRfdGVzdF9uYW1lc18uZW5kKCk7CisgICAgZm9y
IChSZWdpc3RlcmVkVGVzdEl0ZXIgaXQgPSByZWdpc3RlcmVkX3Rlc3RzXy5iZWdpbigpOworICAg
ICAgICAgaXQgIT0gcmVnaXN0ZXJlZF90ZXN0c18uZW5kKCk7CiAgICAgICAgICArK2l0KSB7Ci0g
ICAgICBpZiAobmFtZSA9PSAqaXQpIHsKKyAgICAgIGlmIChuYW1lID09IGl0LT5maXJzdCkgewog
ICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQpAQCAtODUsMTUg
KzkzLDE1IEBAIGNvbnN0IGNoYXIqIFR5cGVkVGVzdENhc2VQU3RhdGU6OlZlcmlmeVJlZ2lzdGVy
ZWRUZXN0TmFtZXMoCiAgICAgfQogICB9CiAKLSAgZm9yIChEZWZpbmVkVGVzdEl0ZXIgaXQgPSBk
ZWZpbmVkX3Rlc3RfbmFtZXNfLmJlZ2luKCk7Ci0gICAgICAgaXQgIT0gZGVmaW5lZF90ZXN0X25h
bWVzXy5lbmQoKTsKKyAgZm9yIChSZWdpc3RlcmVkVGVzdEl0ZXIgaXQgPSByZWdpc3RlcmVkX3Rl
c3RzXy5iZWdpbigpOworICAgICAgIGl0ICE9IHJlZ2lzdGVyZWRfdGVzdHNfLmVuZCgpOwogICAg
ICAgICsraXQpIHsKLSAgICBpZiAodGVzdHMuY291bnQoKml0KSA9PSAwKSB7Ci0gICAgICBlcnJv
cnMgPDwgIllvdSBmb3Jnb3QgdG8gbGlzdCB0ZXN0ICIgPDwgKml0IDw8ICIuXG4iOworICAgIGlm
ICh0ZXN0cy5jb3VudChpdC0+Zmlyc3QpID09IDApIHsKKyAgICAgIGVycm9ycyA8PCAiWW91IGZv
cmdvdCB0byBsaXN0IHRlc3QgIiA8PCBpdC0+Zmlyc3QgPDwgIi5cbiI7CiAgICAgfQogICB9CiAK
LSAgY29uc3QgU3RyaW5nJiBlcnJvcnNfc3RyID0gZXJyb3JzLkdldFN0cmluZygpOworICBjb25z
dCBzdGQ6OnN0cmluZyYgZXJyb3JzX3N0ciA9IGVycm9ycy5HZXRTdHJpbmcoKTsKICAgaWYgKGVy
cm9yc19zdHIgIT0gIiIpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzICVzIiwgRm9ybWF0Rmls
ZUxvY2F0aW9uKGZpbGUsIGxpbmUpLmNfc3RyKCksCiAgICAgICAgICAgICBlcnJvcnNfc3RyLmNf
c3RyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LmNjCmluZGV4IDViODcxYzBhZGIw
YTFjNGNmYTIzNzU1NDA1N2Q1MTYwODQ2MTk1MGUuLjk2YjA3YzY4YWJiMDVhMmRiZTFiZTA5ZjFj
MzUzNWJjZjc5ZDAwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9n
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QuY2MKQEAgLTI2
LDExMiArMjYsMTMxIEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKIC8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0v
LwotLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8g
VGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0
KQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGku
aD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2N1
c3RvbS9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgogCiAjaW5jbHVkZSA8
Y3R5cGUuaD4KICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5jbHVk
ZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CiAjaW5j
bHVkZSA8d2NoYXIuaD4KICNpbmNsdWRlIDx3Y3R5cGUuaD4KIAogI2luY2x1ZGUgPGFsZ29yaXRo
bT4KLSNpbmNsdWRlIDxvc3RyZWFtPgorI2luY2x1ZGUgPGlvbWFuaXA+CisjaW5jbHVkZSA8bGlt
aXRzPgorI2luY2x1ZGUgPGxpc3Q+CisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPG9zdHJlYW0+
ICAvLyBOT0xJTlQKICNpbmNsdWRlIDxzc3RyZWFtPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2lm
IEdURVNUX09TX0xJTlVYCiAKLS8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBVc2UgYXV0b2Nv
bmYgdG8gZGV0ZWN0IGF2YWlsYWJpbGl0eSBvZgorLy8gRklYTUU6IFVzZSBhdXRvY29uZiB0byBk
ZXRlY3QgYXZhaWxhYmlsaXR5IG9mCiAvLyBnZXR0aW1lb2ZkYXkoKS4KLSNkZWZpbmUgR1RFU1Rf
SEFTX0dFVFRJTUVPRkRBWV8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQog
Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxzY2hl
ZC5oPgorIyBpbmNsdWRlIDxmY250bC5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPGxpbWl0cy5o
PiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHNjaGVkLmg+ICAvLyBOT0xJTlQKIC8vIERlY2xhcmVz
IHZzbnByaW50ZigpLiAgVGhpcyBoZWFkZXIgaXMgbm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgot
I2luY2x1ZGUgPHN0cmluZ3MuaD4KLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgotI2luY2x1ZGUgPHN5
cy90aW1lLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1
ZGUgPHZlY3Rvcj4KKyMgaW5jbHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUg
PHN5cy9tbWFuLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElO
VAorIyBpbmNsdWRlIDx1bmlzdGQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxzdHJpbmc+CiAK
ICNlbGlmIEdURVNUX09TX1NZTUJJQU4KLSNkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8g
MQotI2luY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMgZGVmaW5lIEdURVNUX0hBU19H
RVRUSU1FT0ZEQVlfIDEKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAogCiAjZWxp
ZiBHVEVTVF9PU19aT1MKLSNkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQotI2luY2x1
ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZE
QVlfIDEKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAogCiAvLyBPbiB6L09TIHdl
IGFkZGl0aW9uYWxseSBuZWVkIHN0cmluZ3MuaCBmb3Igc3RyY2FzZWNtcC4KLSNpbmNsdWRlIDxz
dHJpbmdzLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5UCiAK
ICNlbGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFICAvLyBXZSBhcmUgb24gV2luZG93cyBDRS4K
IAotI2luY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDx3aW5kb3dzLmg+
ICAvLyBOT0xJTlQKKyMgdW5kZWYgbWluCiAKICNlbGlmIEdURVNUX09TX1dJTkRPV1MgIC8vIFdl
IGFyZSBvbiBXaW5kb3dzIHByb3Blci4KIAotI2luY2x1ZGUgPGlvLmg+ICAvLyBOT0xJTlQKLSNp
bmNsdWRlIDxzeXMvdGltZWIuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPiAg
Ly8gTk9MSU5UCi0jaW5jbHVkZSA8c3lzL3N0YXQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxp
by5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy90aW1lYi5oPiAgLy8gTk9MSU5UCisjIGlu
Y2x1ZGUgPHN5cy90eXBlcy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+ICAv
LyBOT0xJTlQKIAotI2lmIEdURVNUX09TX1dJTkRPV1NfTUlOR1cKKyMgaWYgR1RFU1RfT1NfV0lO
RE9XU19NSU5HVwogLy8gTWluR1cgaGFzIGdldHRpbWVvZmRheSgpIGJ1dCBub3QgX2Z0aW1lNjQo
KS4KLS8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBVc2UgYXV0b2NvbmYgdG8gZGV0ZWN0IGF2
YWlsYWJpbGl0eSBvZgorLy8gRklYTUU6IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZhaWxhYmls
aXR5IG9mCiAvLyAgIGdldHRpbWVvZmRheSgpLgotLy8gVE9ETyhrZW50b25AZ29vZ2xlLmNvbSk6
IFRoZXJlIGFyZSBvdGhlciB3YXlzIHRvIGdldCB0aGUgdGltZSBvbgorLy8gRklYTUU6IFRoZXJl
IGFyZSBvdGhlciB3YXlzIHRvIGdldCB0aGUgdGltZSBvbgogLy8gICBXaW5kb3dzLCBsaWtlIEdl
dFRpY2tDb3VudCgpIG9yIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCkuICBNaW5HVwogLy8gICBz
dXBwb3J0cyB0aGVzZS4gIGNvbnNpZGVyIHVzaW5nIHRoZW0gaW5zdGVhZC4KLSNkZWZpbmUgR1RF
U1RfSEFTX0dFVFRJTUVPRkRBWV8gMQotI2luY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQK
LSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NSU5HVworIyAgZGVmaW5lIEdURVNUX0hBU19H
RVRUSU1FT0ZEQVlfIDEKKyMgIGluY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMgZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTUlOR1cKIAogLy8gY3BwbGludCB0aGlua3MgdGhhdCB0
aGUgaGVhZGVyIGlzIGFscmVhZHkgaW5jbHVkZWQsIHNvIHdlIHdhbnQgdG8KIC8vIHNpbGVuY2Ug
aXQuCi0jaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHdpbmRvd3Mu
aD4gIC8vIE5PTElOVAorIyB1bmRlZiBtaW4KIAogI2Vsc2UKIAogLy8gQXNzdW1lIG90aGVyIHBs
YXRmb3JtcyBoYXZlIGdldHRpbWVvZmRheSgpLgotLy8gVE9ETyhrZW50b25AZ29vZ2xlLmNvbSk6
IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZhaWxhYmlsaXR5IG9mCisvLyBGSVhNRTogVXNlIGF1
dG9jb25mIHRvIGRldGVjdCBhdmFpbGFiaWxpdHkgb2YKIC8vICAgZ2V0dGltZW9mZGF5KCkuCi0j
ZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKKyMgZGVmaW5lIEdURVNUX0hBU19HRVRU
SU1FT0ZEQVlfIDEKIAogLy8gY3BwbGludCB0aGlua3MgdGhhdCB0aGUgaGVhZGVyIGlzIGFscmVh
ZHkgaW5jbHVkZWQsIHNvIHdlIHdhbnQgdG8KIC8vIHNpbGVuY2UgaXQuCi0jaW5jbHVkZSA8c3lz
L3RpbWUuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHVuaXN0ZC5oPiAgLy8gTk9MSU5UCisjIGlu
Y2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8dW5pc3RkLmg+ICAvLyBO
T0xJTlQKIAogI2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAogCiAjaWYgR1RFU1RfSEFTX0VYQ0VQ
VElPTlMKLSNpbmNsdWRlIDxzdGRleGNlcHQ+CisjIGluY2x1ZGUgPHN0ZGV4Y2VwdD4KKyNlbmRp
ZgorCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworIyBpbmNsdWRlIDxhcnBhL2luZXQu
aD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxuZXRkYi5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUg
PHN5cy9zb2NrZXQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4gIC8vIE5P
TElOVAogI2VuZGlmCiAKLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBp
cyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21l
IGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdp
bGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1
c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgot
Ly8gaGlzIGNvZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCiAjaW5jbHVkZSAi
c3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwog
CiAjaWYgR1RFU1RfT1NfV0lORE9XUwotI2RlZmluZSB2c25wcmludGYgX3ZzbnByaW50ZgorIyBk
ZWZpbmUgdnNucHJpbnRmIF92c25wcmludGYKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwog
CisjaWYgR1RFU1RfT1NfTUFDCisjaWZuZGVmIEdURVNUX09TX0lPUworI2luY2x1ZGUgPGNydF9l
eHRlcm5zLmg+CisjZW5kaWYKKyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX0FCU0wKKyNpbmNsdWRl
ICJhYnNsL2RlYnVnZ2luZy9mYWlsdXJlX3NpZ25hbF9oYW5kbGVyLmgiCisjaW5jbHVkZSAiYWJz
bC9kZWJ1Z2dpbmcvc3RhY2t0cmFjZS5oIgorI2luY2x1ZGUgImFic2wvZGVidWdnaW5nL3N5bWJv
bGl6ZS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCisjZW5kaWYgIC8vIEdU
RVNUX0hBU19BQlNMCisKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIAogdXNpbmcgaW50ZXJuYWw6OkNv
dW50SWY7CkBAIC0xNTMsOCArMTcyLDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RD
YXNlRmlsdGVyW10gPSAiKkRlYXRoVGVzdDoqRGVhdGhUZXN0LyoiOwogLy8gQSB0ZXN0IGZpbHRl
ciB0aGF0IG1hdGNoZXMgZXZlcnl0aGluZy4KIHN0YXRpYyBjb25zdCBjaGFyIGtVbml2ZXJzYWxG
aWx0ZXJbXSA9ICIqIjsKIAotLy8gVGhlIGRlZmF1bHQgb3V0cHV0IGZpbGUgZm9yIFhNTCBvdXRw
dXQuCi1zdGF0aWMgY29uc3QgY2hhciBrRGVmYXVsdE91dHB1dEZpbGVbXSA9ICJ0ZXN0X2RldGFp
bC54bWwiOworLy8gVGhlIGRlZmF1bHQgb3V0cHV0IGZvcm1hdC4KK3N0YXRpYyBjb25zdCBjaGFy
IGtEZWZhdWx0T3V0cHV0Rm9ybWF0W10gPSAieG1sIjsKKy8vIFRoZSBkZWZhdWx0IG91dHB1dCBm
aWxlLgorc3RhdGljIGNvbnN0IGNoYXIga0RlZmF1bHRPdXRwdXRGaWxlW10gPSAidGVzdF9kZXRh
aWwiOwogCiAvLyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZSBmb3IgdGhlIHRlc3Qgc2hh
cmQgaW5kZXguCiBzdGF0aWMgY29uc3QgY2hhciBrVGVzdFNoYXJkSW5kZXhbXSA9ICJHVEVTVF9T
SEFSRF9JTkRFWCI7CkBAIC0xNzMsOCArMTk0LDM0IEBAIGNvbnN0IGNoYXIga1N0YWNrVHJhY2VN
YXJrZXJbXSA9ICJcblN0YWNrIHRyYWNlOlxuIjsKIC8vIHNwZWNpZmllZCBvbiB0aGUgY29tbWFu
ZCBsaW5lLgogYm9vbCBnX2hlbHBfZmxhZyA9IGZhbHNlOwogCisvLyBVdGlsdHkgZnVuY3Rpb24g
dG8gT3BlbiBGaWxlIGZvciBXcml0aW5nCitzdGF0aWMgRklMRSogT3BlbkZpbGVGb3JXcml0aW5n
KGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZmlsZSkgeworICBGSUxFKiBmaWxlb3V0ID0gTlVM
TDsKKyAgRmlsZVBhdGggb3V0cHV0X2ZpbGVfcGF0aChvdXRwdXRfZmlsZSk7CisgIEZpbGVQYXRo
IG91dHB1dF9kaXIob3V0cHV0X2ZpbGVfcGF0aC5SZW1vdmVGaWxlTmFtZSgpKTsKKworICBpZiAo
b3V0cHV0X2Rpci5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpIHsKKyAgICBmaWxlb3V0
ID0gcG9zaXg6OkZPcGVuKG91dHB1dF9maWxlLmNfc3RyKCksICJ3Iik7CisgIH0KKyAgaWYgKGZp
bGVvdXQgPT0gTlVMTCkgeworICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICJVbmFibGUgdG8gb3Bl
biBmaWxlIFwiIiA8PCBvdXRwdXRfZmlsZSA8PCAiXCIiOworICB9CisgIHJldHVybiBmaWxlb3V0
OworfQorCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAorLy8gQmF6ZWwgcGFzc2VzIGluIHRo
ZSBhcmd1bWVudCB0byAnLS10ZXN0X2ZpbHRlcicgdmlhIHRoZSBURVNUQlJJREdFX1RFU1RfT05M
WQorLy8gZW52aXJvbm1lbnQgdmFyaWFibGUuCitzdGF0aWMgY29uc3QgY2hhciogR2V0RGVmYXVs
dEZpbHRlcigpIHsKKyAgY29uc3QgY2hhciogY29uc3QgdGVzdGJyaWRnZV90ZXN0X29ubHkgPQor
ICAgICAgaW50ZXJuYWw6OnBvc2l4OjpHZXRFbnYoIlRFU1RCUklER0VfVEVTVF9PTkxZIik7Cisg
IGlmICh0ZXN0YnJpZGdlX3Rlc3Rfb25seSAhPSBOVUxMKSB7CisgICAgcmV0dXJuIHRlc3Ricmlk
Z2VfdGVzdF9vbmx5OworICB9CisgIHJldHVybiBrVW5pdmVyc2FsRmlsdGVyOworfQorCiBHVEVT
VF9ERUZJTkVfYm9vbF8oCiAgICAgYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMsCiAgICAgaW50ZXJu
YWw6OkJvb2xGcm9tR1Rlc3RFbnYoImFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIiwgZmFsc2UpLApA
QCAtMTg3LDcgKzIzNCw3IEBAIEdURVNUX0RFRklORV9ib29sXygKIAogR1RFU1RfREVGSU5FX2Jv
b2xfKAogICAgIGNhdGNoX2V4Y2VwdGlvbnMsCi0gICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RF
bnYoImNhdGNoX2V4Y2VwdGlvbnMiLCBmYWxzZSksCisgICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rl
c3RFbnYoImNhdGNoX2V4Y2VwdGlvbnMiLCB0cnVlKSwKICAgICAiVHJ1ZSBpZmYgIiBHVEVTVF9O
QU1FXwogICAgICIgc2hvdWxkIGNhdGNoIGV4Y2VwdGlvbnMgYW5kIHRyZWF0IHRoZW0gYXMgdGVz
dCBmYWlsdXJlcy4iKTsKIApAQCAtMTk3LDI2ICsyNDQsMzkgQEAgR1RFU1RfREVGSU5FX3N0cmlu
Z18oCiAgICAgIldoZXRoZXIgdG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0LiAgVmFsaWQgdmFs
dWVzOiB5ZXMsIG5vLCAiCiAgICAgImFuZCBhdXRvLiAgJ2F1dG8nIG1lYW5zIHRvIHVzZSBjb2xv
cnMgaWYgdGhlIG91dHB1dCBpcyAiCiAgICAgImJlaW5nIHNlbnQgdG8gYSB0ZXJtaW5hbCBhbmQg
dGhlIFRFUk0gZW52aXJvbm1lbnQgdmFyaWFibGUgIgotICAgICJpcyBzZXQgdG8geHRlcm0sIHh0
ZXJtLWNvbG9yLCB4dGVybS0yNTZjb2xvciwgbGludXggb3IgY3lnd2luLiIpOworICAgICJpcyBz
ZXQgdG8gYSB0ZXJtaW5hbCB0eXBlIHRoYXQgc3VwcG9ydHMgY29sb3JzLiIpOwogCiBHVEVTVF9E
RUZJTkVfc3RyaW5nXygKICAgICBmaWx0ZXIsCi0gICAgaW50ZXJuYWw6OlN0cmluZ0Zyb21HVGVz
dEVudigiZmlsdGVyIiwga1VuaXZlcnNhbEZpbHRlciksCisgICAgaW50ZXJuYWw6OlN0cmluZ0Zy
b21HVGVzdEVudigiZmlsdGVyIiwgR2V0RGVmYXVsdEZpbHRlcigpKSwKICAgICAiQSBjb2xvbi1z
ZXBhcmF0ZWQgbGlzdCBvZiBnbG9iIChub3QgcmVnZXgpIHBhdHRlcm5zICIKICAgICAiZm9yIGZp
bHRlcmluZyB0aGUgdGVzdHMgdG8gcnVuLCBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgIgogICAg
ICInLScgYW5kIGEgOiBzZXBhcmF0ZWQgbGlzdCBvZiBuZWdhdGl2ZSBwYXR0ZXJucyAodGVzdHMg
dG8gIgogICAgICJleGNsdWRlKS4gIEEgdGVzdCBpcyBydW4gaWYgaXQgbWF0Y2hlcyBvbmUgb2Yg
dGhlIHBvc2l0aXZlICIKICAgICAicGF0dGVybnMgYW5kIGRvZXMgbm90IG1hdGNoIGFueSBvZiB0
aGUgbmVnYXRpdmUgcGF0dGVybnMuIik7CiAKK0dURVNUX0RFRklORV9ib29sXygKKyAgICBpbnN0
YWxsX2ZhaWx1cmVfc2lnbmFsX2hhbmRsZXIsCisgICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RF
bnYoImluc3RhbGxfZmFpbHVyZV9zaWduYWxfaGFuZGxlciIsIGZhbHNlKSwKKyAgICAiSWYgdHJ1
ZSBhbmQgc3VwcG9ydGVkIG9uIHRoZSBjdXJyZW50IHBsYXRmb3JtLCAiIEdURVNUX05BTUVfICIg
c2hvdWxkICIKKyAgICAiaW5zdGFsbCBhIHNpZ25hbCBoYW5kbGVyIHRoYXQgZHVtcHMgZGVidWdn
aW5nIGluZm9ybWF0aW9uIHdoZW4gZmF0YWwgIgorICAgICJzaWduYWxzIGFyZSByYWlzZWQuIik7
CisKIEdURVNUX0RFRklORV9ib29sXyhsaXN0X3Rlc3RzLCBmYWxzZSwKICAgICAgICAgICAgICAg
ICAgICAiTGlzdCBhbGwgdGVzdHMgd2l0aG91dCBydW5uaW5nIHRoZW0uIik7CiAKKy8vIFRoZSBu
ZXQgcHJpb3JpdHkgb3JkZXIgYWZ0ZXIgZmxhZyBwcm9jZXNzaW5nIGlzIHRodXM6CisvLyAgIC0t
Z3Rlc3Rfb3V0cHV0IGNvbW1hbmQgbGluZSBmbGFnCisvLyAgIEdURVNUX09VVFBVVCBlbnZpcm9u
bWVudCB2YXJpYWJsZQorLy8gICBYTUxfT1VUUFVUX0ZJTEUgZW52aXJvbm1lbnQgdmFyaWFibGUK
Ky8vICAgJycKIEdURVNUX0RFRklORV9zdHJpbmdfKAogICAgIG91dHB1dCwKLSAgICBpbnRlcm5h
bDo6U3RyaW5nRnJvbUdUZXN0RW52KCJvdXRwdXQiLCAiIiksCi0gICAgIkEgZm9ybWF0IChjdXJy
ZW50bHkgbXVzdCBiZSBcInhtbFwiKSwgb3B0aW9uYWxseSBmb2xsb3dlZCAiCi0gICAgImJ5IGEg
Y29sb24gYW5kIGFuIG91dHB1dCBmaWxlIG5hbWUgb3IgZGlyZWN0b3J5LiBBIGRpcmVjdG9yeSAi
Ci0gICAgImlzIGluZGljYXRlZCBieSBhIHRyYWlsaW5nIHBhdGhuYW1lIHNlcGFyYXRvci4gIgor
ICAgIGludGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYoIm91dHB1dCIsCisgICAgICBpbnRlcm5h
bDo6T3V0cHV0RmxhZ0Fsc29DaGVja0VudlZhcigpLmNfc3RyKCkpLAorICAgICJBIGZvcm1hdCAo
ZGVmYXVsdHMgdG8gXCJ4bWxcIiBidXQgY2FuIGJlIHNwZWNpZmllZCB0byBiZSBcImpzb25cIiks
ICIKKyAgICAib3B0aW9uYWxseSBmb2xsb3dlZCBieSBhIGNvbG9uIGFuZCBhbiBvdXRwdXQgZmls
ZSBuYW1lIG9yIGRpcmVjdG9yeS4gIgorICAgICJBIGRpcmVjdG9yeSBpcyBpbmRpY2F0ZWQgYnkg
YSB0cmFpbGluZyBwYXRobmFtZSBzZXBhcmF0b3IuICIKICAgICAiRXhhbXBsZXM6IFwieG1sOmZp
bGVuYW1lLnhtbFwiLCBcInhtbDo6ZGlyZWN0b3J5bmFtZS9cIi4gIgogICAgICJJZiBhIGRpcmVj
dG9yeSBpcyBzcGVjaWZpZWQsIG91dHB1dCBmaWxlcyB3aWxsIGJlIGNyZWF0ZWQgIgogICAgICJ3
aXRoaW4gdGhhdCBkaXJlY3RvcnksIHdpdGggZmlsZS1uYW1lcyBiYXNlZCBvbiB0aGUgdGVzdCAi
CkBAIC0yMjksNiArMjg5LDEyIEBAIEdURVNUX0RFRklORV9ib29sXygKICAgICAiVHJ1ZSBpZmYg
IiBHVEVTVF9OQU1FXwogICAgICIgc2hvdWxkIGRpc3BsYXkgZWxhcHNlZCB0aW1lIGluIHRleHQg
b3V0cHV0LiIpOwogCitHVEVTVF9ERUZJTkVfYm9vbF8oCisgICAgcHJpbnRfdXRmOCwKKyAgICBp
bnRlcm5hbDo6Qm9vbEZyb21HVGVzdEVudigicHJpbnRfdXRmOCIsIHRydWUpLAorICAgICJUcnVl
IGlmZiAiIEdURVNUX05BTUVfCisgICAgIiBwcmludHMgVVRGOCBjaGFyYWN0ZXJzIGFzIHRleHQu
Iik7CisKIEdURVNUX0RFRklORV9pbnQzMl8oCiAgICAgcmFuZG9tX3NlZWQsCiAgICAgaW50ZXJu
YWw6OkludDMyRnJvbUdUZXN0RW52KCJyYW5kb21fc2VlZCIsIDApLApAQCAtMjU4LDEyICszMjQs
MjYgQEAgR1RFU1RfREVGSU5FX2ludDMyXygKICAgICAiVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0
YWNrIGZyYW1lcyB0byBwcmludCB3aGVuIGFuICIKICAgICAiYXNzZXJ0aW9uIGZhaWxzLiAgVGhl
IHZhbGlkIHJhbmdlIGlzIDAgdGhyb3VnaCAxMDAsIGluY2x1c2l2ZS4iKTsKIAorR1RFU1RfREVG
SU5FX3N0cmluZ18oCisgICAgc3RyZWFtX3Jlc3VsdF90bywKKyAgICBpbnRlcm5hbDo6U3RyaW5n
RnJvbUdUZXN0RW52KCJzdHJlYW1fcmVzdWx0X3RvIiwgIiIpLAorICAgICJUaGlzIGZsYWcgc3Bl
Y2lmaWVzIHRoZSBob3N0IG5hbWUgYW5kIHRoZSBwb3J0IG51bWJlciBvbiB3aGljaCB0byBzdHJl
YW0gIgorICAgICJ0ZXN0IHJlc3VsdHMuIEV4YW1wbGU6IFwibG9jYWxob3N0OjU1NVwiLiBUaGUg
ZmxhZyBpcyBlZmZlY3RpdmUgb25seSBvbiAiCisgICAgIkxpbnV4LiIpOworCiBHVEVTVF9ERUZJ
TkVfYm9vbF8oCiAgICAgdGhyb3dfb25fZmFpbHVyZSwKICAgICBpbnRlcm5hbDo6Qm9vbEZyb21H
VGVzdEVudigidGhyb3dfb25fZmFpbHVyZSIsIGZhbHNlKSwKICAgICAiV2hlbiB0aGlzIGZsYWcg
aXMgc3BlY2lmaWVkLCBhIGZhaWxlZCBhc3NlcnRpb24gd2lsbCB0aHJvdyBhbiBleGNlcHRpb24g
IgogICAgICJpZiBleGNlcHRpb25zIGFyZSBlbmFibGVkIG9yIGV4aXQgdGhlIHByb2dyYW0gd2l0
aCBhIG5vbi16ZXJvIGNvZGUgIgotICAgICJvdGhlcndpc2UuIik7CisgICAgIm90aGVyd2lzZS4g
Rm9yIHVzZSB3aXRoIGFuIGV4dGVybmFsIHRlc3QgZnJhbWV3b3JrLiIpOworCisjaWYgR1RFU1Rf
VVNFX09XTl9GTEFHRklMRV9GTEFHXworR1RFU1RfREVGSU5FX3N0cmluZ18oCisgICAgZmxhZ2Zp
bGUsCisgICAgaW50ZXJuYWw6OlN0cmluZ0Zyb21HVGVzdEVudigiZmxhZ2ZpbGUiLCAiIiksCisg
ICAgIlRoaXMgZmxhZyBzcGVjaWZpZXMgdGhlIGZsYWdmaWxlIHRvIHJlYWQgY29tbWFuZC1saW5l
IGZsYWdzIGZyb20uIik7CisjZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18K
IAogbmFtZXNwYWNlIGludGVybmFsIHsKIApAQCAtMjcyLDcgKzM1Miw4IEBAIG5hbWVzcGFjZSBp
bnRlcm5hbCB7CiAvLyB0aGFuIGtNYXhSYW5nZS4KIFVJbnQzMiBSYW5kb206OkdlbmVyYXRlKFVJ
bnQzMiByYW5nZSkgewogICAvLyBUaGVzZSBjb25zdGFudHMgYXJlIHRoZSBzYW1lIGFzIGFyZSB1
c2VkIGluIGdsaWJjJ3MgcmFuZCgzKS4KLSAgc3RhdGVfID0gKDExMDM1MTUyNDVVKnN0YXRlXyAr
IDEyMzQ1VSkgJSBrTWF4UmFuZ2U7CisgIC8vIFVzZSB3aWRlciB0eXBlcyB0aGFuIG5lY2Vzc2Fy
eSB0byBwcmV2ZW50IHVuc2lnbmVkIG92ZXJmbG93IGRpYWdub3N0aWNzLgorICBzdGF0ZV8gPSBz
dGF0aWNfY2FzdDxVSW50MzI+KDExMDM1MTUyNDVVTEwqc3RhdGVfICsgMTIzNDVVKSAlIGtNYXhS
YW5nZTsKIAogICBHVEVTVF9DSEVDS18ocmFuZ2UgPiAwKQogICAgICAgPDwgIkNhbm5vdCBnZW5l
cmF0ZSBhIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDApLiI7CkBAIC0yODksMTMgKzM3MCw3IEBA
IFVJbnQzMiBSYW5kb206OkdlbmVyYXRlKFVJbnQzMiByYW5nZSkgewogLy8gR1Rlc3RJc0luaXRp
YWxpemVkKCkgcmV0dXJucyB0cnVlIGlmZiB0aGUgdXNlciBoYXMgaW5pdGlhbGl6ZWQKIC8vIEdv
b2dsZSBUZXN0LiAgVXNlZnVsIGZvciBjYXRjaGluZyB0aGUgdXNlciBtaXN0YWtlIG9mIG5vdCBp
bml0aWFsaXppbmcKIC8vIEdvb2dsZSBUZXN0IGJlZm9yZSBjYWxsaW5nIFJVTl9BTExfVEVTVFMo
KS4KLS8vCi0vLyBBIHVzZXIgbXVzdCBjYWxsIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCkgdG8g
aW5pdGlhbGl6ZSBHb29nbGUKLS8vIFRlc3QuICBnX2luaXRfZ3Rlc3RfY291bnQgaXMgc2V0IHRv
IHRoZSBudW1iZXIgb2YgdGltZXMKLS8vIEluaXRHb29nbGVUZXN0KCkgaGFzIGJlZW4gY2FsbGVk
LiAgV2UgZG9uJ3QgcHJvdGVjdCB0aGlzIHZhcmlhYmxlCi0vLyB1bmRlciBhIG11dGV4IGFzIGl0
IGlzIG9ubHkgYWNjZXNzZWQgaW4gdGhlIG1haW4gdGhyZWFkLgotaW50IGdfaW5pdF9ndGVzdF9j
b3VudCA9IDA7Ci1zdGF0aWMgYm9vbCBHVGVzdElzSW5pdGlhbGl6ZWQoKSB7IHJldHVybiBnX2lu
aXRfZ3Rlc3RfY291bnQgIT0gMDsgfQorc3RhdGljIGJvb2wgR1Rlc3RJc0luaXRpYWxpemVkKCkg
eyByZXR1cm4gR2V0QXJndnMoKS5zaXplKCkgPiAwOyB9CiAKIC8vIEl0ZXJhdGVzIG92ZXIgYSB2
ZWN0b3Igb2YgVGVzdENhc2VzLCBrZWVwaW5nIGEgcnVubmluZyBzdW0gb2YgdGhlCiAvLyByZXN1
bHRzIG9mIGNhbGxpbmcgYSBnaXZlbiBpbnQtcmV0dXJuaW5nIG1ldGhvZCBvbiBlYWNoLgpAQCAt
MzQ5LDEwICs0MjQsMjEgQEAgdm9pZCBBc3NlcnRIZWxwZXI6Om9wZXJhdG9yPShjb25zdCBNZXNz
YWdlJiBtZXNzYWdlKSBjb25zdCB7CiB9CiAKIC8vIE11dGV4IGZvciBsaW5rZWQgcG9pbnRlcnMu
Ci1HVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhnX2xpbmtlZF9wdHJfbXV0ZXgpOworR1RFU1Rf
QVBJXyBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhnX2xpbmtlZF9wdHJfbXV0ZXgpOwogCi0v
LyBBcHBsaWNhdGlvbiBwYXRobmFtZSBnb3R0ZW4gaW4gSW5pdEdvb2dsZVRlc3QuCi1TdHJpbmcg
Z19leGVjdXRhYmxlX3BhdGg7CisvLyBBIGNvcHkgb2YgYWxsIGNvbW1hbmQgbGluZSBhcmd1bWVu
dHMuICBTZXQgYnkgSW5pdEdvb2dsZVRlc3QoKS4KK3N0YXRpYyA6OnN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiBnX2FyZ3ZzOworCis6OnN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRBcmd2cygp
IHsKKyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9HRVRfQVJHVlNfKQorICAvLyBHVEVTVF9DVVNU
T01fR0VUX0FSR1ZTXygpIG1heSByZXR1cm4gYSBjb250YWluZXIgb2Ygc3RkOjpzdHJpbmcgb3IK
KyAgLy8gOjpzdHJpbmcuIFRoaXMgY29kZSBjb252ZXJ0cyBpdCB0byB0aGUgYXBwcm9wcmlhdGUg
dHlwZS4KKyAgY29uc3QgYXV0byYgY3VzdG9tID0gR1RFU1RfQ1VTVE9NX0dFVF9BUkdWU18oKTsK
KyAgcmV0dXJuIDo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KGN1c3RvbS5iZWdpbigpLCBjdXN0
b20uZW5kKCkpOworI2Vsc2UgICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9HRVRfQVJHVlNfKQor
ICByZXR1cm4gZ19hcmd2czsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01fR0VUX0FS
R1ZTXykKK30KIAogLy8gUmV0dXJucyB0aGUgY3VycmVudCBhcHBsaWNhdGlvbidzIG5hbWUsIHJl
bW92aW5nIGRpcmVjdG9yeSBwYXRoIGlmIHRoYXQKIC8vIGlzIHByZXNlbnQuCkBAIC0zNjAsOSAr
NDQ2LDkgQEAgRmlsZVBhdGggR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkgewogICBGaWxlUGF0
aCByZXN1bHQ7CiAKICNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIHJlc3VsdC5TZXQoRmlsZVBhdGgo
Z19leGVjdXRhYmxlX3BhdGgpLlJlbW92ZUV4dGVuc2lvbigiZXhlIikpOworICByZXN1bHQuU2V0
KEZpbGVQYXRoKEdldEFyZ3ZzKClbMF0pLlJlbW92ZUV4dGVuc2lvbigiZXhlIikpOwogI2Vsc2UK
LSAgcmVzdWx0LlNldChGaWxlUGF0aChnX2V4ZWN1dGFibGVfcGF0aCkpOworICByZXN1bHQuU2V0
KEZpbGVQYXRoKEdldEFyZ3ZzKClbMF0pKTsKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwog
CiAgIHJldHVybiByZXN1bHQuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpOwpAQCAtMzcxLDMzICs0NTcs
MzQgQEAgRmlsZVBhdGggR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkgewogLy8gRnVuY3Rpb25z
IGZvciBwcm9jZXNzaW5nIHRoZSBndGVzdF9vdXRwdXQgZmxhZy4KIAogLy8gUmV0dXJucyB0aGUg
b3V0cHV0IGZvcm1hdCwgb3IgIiIgZm9yIG5vcm1hbCBwcmludGVkIG91dHB1dC4KLVN0cmluZyBV
bml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdCgpIHsKK3N0ZDo6c3RyaW5nIFVuaXRUZXN0
T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCkgewogICBjb25zdCBjaGFyKiBjb25zdCBndGVzdF9v
dXRwdXRfZmxhZyA9IEdURVNUX0ZMQUcob3V0cHV0KS5jX3N0cigpOwotICBpZiAoZ3Rlc3Rfb3V0
cHV0X2ZsYWcgPT0gTlVMTCkgcmV0dXJuIFN0cmluZygiIik7Ci0KICAgY29uc3QgY2hhciogY29u
c3QgY29sb24gPSBzdHJjaHIoZ3Rlc3Rfb3V0cHV0X2ZsYWcsICc6Jyk7CiAgIHJldHVybiAoY29s
b24gPT0gTlVMTCkgPwotICAgICAgU3RyaW5nKGd0ZXN0X291dHB1dF9mbGFnKSA6Ci0gICAgICBT
dHJpbmcoZ3Rlc3Rfb3V0cHV0X2ZsYWcsIGNvbG9uIC0gZ3Rlc3Rfb3V0cHV0X2ZsYWcpOworICAg
ICAgc3RkOjpzdHJpbmcoZ3Rlc3Rfb3V0cHV0X2ZsYWcpIDoKKyAgICAgIHN0ZDo6c3RyaW5nKGd0
ZXN0X291dHB1dF9mbGFnLCBjb2xvbiAtIGd0ZXN0X291dHB1dF9mbGFnKTsKIH0KIAogLy8gUmV0
dXJucyB0aGUgbmFtZSBvZiB0aGUgcmVxdWVzdGVkIG91dHB1dCBmaWxlLCBvciB0aGUgZGVmYXVs
dCBpZiBub25lCiAvLyB3YXMgZXhwbGljaXRseSBzcGVjaWZpZWQuCi1TdHJpbmcgVW5pdFRlc3RP
cHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSB7CitzdGQ6OnN0cmluZyBVbml0
VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpIHsKICAgY29uc3QgY2hh
ciogY29uc3QgZ3Rlc3Rfb3V0cHV0X2ZsYWcgPSBHVEVTVF9GTEFHKG91dHB1dCkuY19zdHIoKTsK
LSAgaWYgKGd0ZXN0X291dHB1dF9mbGFnID09IE5VTEwpCi0gICAgcmV0dXJuIFN0cmluZygiIik7
CisKKyAgc3RkOjpzdHJpbmcgZm9ybWF0ID0gR2V0T3V0cHV0Rm9ybWF0KCk7CisgIGlmIChmb3Jt
YXQuZW1wdHkoKSkKKyAgICBmb3JtYXQgPSBzdGQ6OnN0cmluZyhrRGVmYXVsdE91dHB1dEZvcm1h
dCk7CiAKICAgY29uc3QgY2hhciogY29uc3QgY29sb24gPSBzdHJjaHIoZ3Rlc3Rfb3V0cHV0X2Zs
YWcsICc6Jyk7CiAgIGlmIChjb2xvbiA9PSBOVUxMKQotICAgIHJldHVybiBTdHJpbmcoaW50ZXJu
YWw6OkZpbGVQYXRoOjpDb25jYXRQYXRocygKLSAgICAgICAgICAgICAgIGludGVybmFsOjpGaWxl
UGF0aCgKLSAgICAgICAgICAgICAgICAgICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+b3JpZ2lu
YWxfd29ya2luZ19kaXIoKSksCi0gICAgICAgICAgICAgICBpbnRlcm5hbDo6RmlsZVBhdGgoa0Rl
ZmF1bHRPdXRwdXRGaWxlKSkuVG9TdHJpbmcoKSApOworICAgIHJldHVybiBpbnRlcm5hbDo6Rmls
ZVBhdGg6Ok1ha2VGaWxlTmFtZSgKKyAgICAgICAgaW50ZXJuYWw6OkZpbGVQYXRoKAorICAgICAg
ICAgICAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPm9yaWdpbmFsX3dvcmtpbmdfZGlyKCkpLAor
ICAgICAgICBpbnRlcm5hbDo6RmlsZVBhdGgoa0RlZmF1bHRPdXRwdXRGaWxlKSwgMCwKKyAgICAg
ICAgZm9ybWF0LmNfc3RyKCkpLnN0cmluZygpOwogCiAgIGludGVybmFsOjpGaWxlUGF0aCBvdXRw
dXRfbmFtZShjb2xvbiArIDEpOwogICBpZiAoIW91dHB1dF9uYW1lLklzQWJzb2x1dGVQYXRoKCkp
Ci0gICAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IG9uIFdpbmRvd3MgXHNvbWVccGF0aCBpcyBu
b3QgYW4gYWJzb2x1dGUKKyAgICAvLyBGSVhNRTogb24gV2luZG93cyBcc29tZVxwYXRoIGlzIG5v
dCBhbiBhYnNvbHV0ZQogICAgIC8vIHBhdGggKGFzIGl0cyBtZWFuaW5nIGRlcGVuZHMgb24gdGhl
IGN1cnJlbnQgZHJpdmUpLCB5ZXQgdGhlCiAgICAgLy8gZm9sbG93aW5nIGxvZ2ljIGZvciB0dXJu
aW5nIGl0IGludG8gYW4gYWJzb2x1dGUgcGF0aCBpcyB3cm9uZy4KICAgICAvLyBGaXggaXQuCkBA
IC00MDYsMTIgKzQ5MywxMiBAQCBTdHJpbmcgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBh
dGhUb091dHB1dEZpbGUoKSB7CiAgICAgICAgIGludGVybmFsOjpGaWxlUGF0aChjb2xvbiArIDEp
KTsKIAogICBpZiAoIW91dHB1dF9uYW1lLklzRGlyZWN0b3J5KCkpCi0gICAgcmV0dXJuIG91dHB1
dF9uYW1lLlRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG91dHB1dF9uYW1lLnN0cmluZygpOwogCiAg
IGludGVybmFsOjpGaWxlUGF0aCByZXN1bHQoaW50ZXJuYWw6OkZpbGVQYXRoOjpHZW5lcmF0ZVVu
aXF1ZUZpbGVOYW1lKAogICAgICAgb3V0cHV0X25hbWUsIGludGVybmFsOjpHZXRDdXJyZW50RXhl
Y3V0YWJsZU5hbWUoKSwKICAgICAgIEdldE91dHB1dEZvcm1hdCgpLmNfc3RyKCkpKTsKLSAgcmV0
dXJuIHJlc3VsdC5Ub1N0cmluZygpOworICByZXR1cm4gcmVzdWx0LnN0cmluZygpOwogfQogCiAv
LyBSZXR1cm5zIHRydWUgaWZmIHRoZSB3aWxkY2FyZCBwYXR0ZXJuIG1hdGNoZXMgdGhlIHN0cmlu
Zy4gIFRoZQpAQCAtNDM2LDcgKzUyMyw4IEBAIGJvb2wgVW5pdFRlc3RPcHRpb25zOjpQYXR0ZXJu
TWF0Y2hlc1N0cmluZyhjb25zdCBjaGFyICpwYXR0ZXJuLAogICB9CiB9CiAKLWJvb2wgVW5pdFRl
c3RPcHRpb25zOjpNYXRjaGVzRmlsdGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgY2hhciog
ZmlsdGVyKSB7Citib29sIFVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcigKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyYgbmFtZSwgY29uc3QgY2hhciogZmlsdGVyKSB7CiAgIGNvbnN0IGNoYXIg
KmN1cl9wYXR0ZXJuID0gZmlsdGVyOwogICBmb3IgKDs7KSB7CiAgICAgaWYgKFBhdHRlcm5NYXRj
aGVzU3RyaW5nKGN1cl9wYXR0ZXJuLCBuYW1lLmNfc3RyKCkpKSB7CkBAIC00NTYsMjggKzU0NCwy
NCBAQCBib29sIFVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcihjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IGNoYXIqIGZpbHRlcikgewogICB9CiB9CiAKLS8vIFRPRE8oa2VpdGhyYXkpOiBt
b3ZlIFN0cmluZyBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMgdG8gZ3Rlc3Qtc3RyaW5nLmNjLgot
CiAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB1c2VyLXNwZWNpZmllZCBmaWx0ZXIgbWF0Y2hlcyB0
aGUgdGVzdCBjYXNlCiAvLyBuYW1lIGFuZCB0aGUgdGVzdCBuYW1lLgotYm9vbCBVbml0VGVzdE9w
dGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KGNvbnN0IFN0cmluZyAmdGVzdF9jYXNlX25hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nICZ0ZXN0
X25hbWUpIHsKLSAgY29uc3QgU3RyaW5nJiBmdWxsX25hbWUgPSBTdHJpbmc6OkZvcm1hdCgiJXMu
JXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY2Fz
ZV9uYW1lLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdF9uYW1lLmNfc3RyKCkpOworYm9vbCBVbml0VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNo
ZXNUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdGVzdF9uYW1lKSB7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmdWxsX25hbWUgPSB0ZXN0X2Nhc2VfbmFtZSArICIuIiAr
IHRlc3RfbmFtZS5jX3N0cigpOwogCiAgIC8vIFNwbGl0IC0tZ3Rlc3RfZmlsdGVyIGF0ICctJywg
aWYgdGhlcmUgaXMgb25lLCB0byBzZXBhcmF0ZSBpbnRvCiAgIC8vIHBvc2l0aXZlIGZpbHRlciBh
bmQgbmVnYXRpdmUgZmlsdGVyIHBvcnRpb25zCiAgIGNvbnN0IGNoYXIqIGNvbnN0IHAgPSBHVEVT
VF9GTEFHKGZpbHRlcikuY19zdHIoKTsKICAgY29uc3QgY2hhciogY29uc3QgZGFzaCA9IHN0cmNo
cihwLCAnLScpOwotICBTdHJpbmcgcG9zaXRpdmU7Ci0gIFN0cmluZyBuZWdhdGl2ZTsKKyAgc3Rk
OjpzdHJpbmcgcG9zaXRpdmU7CisgIHN0ZDo6c3RyaW5nIG5lZ2F0aXZlOwogICBpZiAoZGFzaCA9
PSBOVUxMKSB7CiAgICAgcG9zaXRpdmUgPSBHVEVTVF9GTEFHKGZpbHRlcikuY19zdHIoKTsgIC8v
IFdob2xlIHN0cmluZyBpcyBhIHBvc2l0aXZlIGZpbHRlcgotICAgIG5lZ2F0aXZlID0gU3RyaW5n
KCIiKTsKKyAgICBuZWdhdGl2ZSA9ICIiOwogICB9IGVsc2UgewotICAgIHBvc2l0aXZlID0gU3Ry
aW5nKHAsIGRhc2ggLSBwKTsgIC8vIEV2ZXJ5dGhpbmcgdXAgdG8gdGhlIGRhc2gKLSAgICBuZWdh
dGl2ZSA9IFN0cmluZyhkYXNoKzEpOyAgICAgICAvLyBFdmVyeXRoaW5nIGFmdGVyIHRoZSBkYXNo
CisgICAgcG9zaXRpdmUgPSBzdGQ6OnN0cmluZyhwLCBkYXNoKTsgICAvLyBFdmVyeXRoaW5nIHVw
IHRvIHRoZSBkYXNoCisgICAgbmVnYXRpdmUgPSBzdGQ6OnN0cmluZyhkYXNoICsgMSk7ICAvLyBF
dmVyeXRoaW5nIGFmdGVyIHRoZSBkYXNoCiAgICAgaWYgKHBvc2l0aXZlLmVtcHR5KCkpIHsKICAg
ICAgIC8vIFRyZWF0ICctdGVzdDEnIGFzIHRoZSBzYW1lIGFzICcqLXRlc3QxJwogICAgICAgcG9z
aXRpdmUgPSBrVW5pdmVyc2FsRmlsdGVyOwpAQCAtNDkwLDIwICs1NzQsMzMgQEAgYm9vbCBVbml0
VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KGNvbnN0IFN0cmluZyAmdGVzdF9jYXNlX25h
bWUsCiAgICAgICAgICAgIU1hdGNoZXNGaWx0ZXIoZnVsbF9uYW1lLCBuZWdhdGl2ZS5jX3N0cigp
KSk7CiB9CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjaWYgR1RFU1RfSEFTX1NFSAogLy8gUmV0
dXJucyBFWENFUFRJT05fRVhFQ1VURV9IQU5ETEVSIGlmIEdvb2dsZSBUZXN0IHNob3VsZCBoYW5k
bGUgdGhlCiAvLyBnaXZlbiBTRUggZXhjZXB0aW9uLCBvciBFWENFUFRJT05fQ09OVElOVUVfU0VB
UkNIIG90aGVyd2lzZS4KIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIGFzIGFuIF9fZXhjZXB0
IGNvbmRpdGlvbi4KIGludCBVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSChE
V09SRCBleGNlcHRpb25fY29kZSkgewotICAvLyBHb29nbGUgVGVzdCBzaG91bGQgaGFuZGxlIGFu
IGV4Y2VwdGlvbiBpZjoKKyAgLy8gR29vZ2xlIFRlc3Qgc2hvdWxkIGhhbmRsZSBhIFNFSCBleGNl
cHRpb24gaWY6CiAgIC8vICAgMS4gdGhlIHVzZXIgd2FudHMgaXQgdG8sIEFORAotICAvLyAgIDIu
IHRoaXMgaXMgbm90IGEgYnJlYWtwb2ludCBleGNlcHRpb24uCi0gIHJldHVybiAoR1RFU1RfRkxB
RyhjYXRjaF9leGNlcHRpb25zKSAmJgotICAgICAgICAgIGV4Y2VwdGlvbl9jb2RlICE9IEVYQ0VQ
VElPTl9CUkVBS1BPSU5UKSA/Ci0gICAgICBFWENFUFRJT05fRVhFQ1VURV9IQU5ETEVSIDoKLSAg
ICAgIEVYQ0VQVElPTl9DT05USU5VRV9TRUFSQ0g7CisgIC8vICAgMi4gdGhpcyBpcyBub3QgYSBi
cmVha3BvaW50IGV4Y2VwdGlvbiwgQU5ECisgIC8vICAgMy4gdGhpcyBpcyBub3QgYSBDKysgZXhj
ZXB0aW9uIChWQysrIGltcGxlbWVudHMgdGhlbSB2aWEgU0VILAorICAvLyAgICAgIGFwcGFyZW50
bHkpLgorICAvLworICAvLyBTRUggZXhjZXB0aW9uIGNvZGUgZm9yIEMrKyBleGNlcHRpb25zLgor
ICAvLyAoc2VlIGh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20va2IvMTg1Mjk0IGZvciBtb3Jl
IGluZm9ybWF0aW9uKS4KKyAgY29uc3QgRFdPUkQga0N4eEV4Y2VwdGlvbkNvZGUgPSAweGUwNmQ3
MzYzOworCisgIGJvb2wgc2hvdWxkX2hhbmRsZSA9IHRydWU7CisKKyAgaWYgKCFHVEVTVF9GTEFH
KGNhdGNoX2V4Y2VwdGlvbnMpKQorICAgIHNob3VsZF9oYW5kbGUgPSBmYWxzZTsKKyAgZWxzZSBp
ZiAoZXhjZXB0aW9uX2NvZGUgPT0gRVhDRVBUSU9OX0JSRUFLUE9JTlQpCisgICAgc2hvdWxkX2hh
bmRsZSA9IGZhbHNlOworICBlbHNlIGlmIChleGNlcHRpb25fY29kZSA9PSBrQ3h4RXhjZXB0aW9u
Q29kZSkKKyAgICBzaG91bGRfaGFuZGxlID0gZmFsc2U7CisKKyAgcmV0dXJuIHNob3VsZF9oYW5k
bGUgPyBFWENFUFRJT05fRVhFQ1VURV9IQU5ETEVSIDogRVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJD
SDsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworI2VuZGlmICAvLyBHVEVTVF9IQVNf
U0VICiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogCkBAIC01NzgsMTMgKzY3NSwxMyBAQCBl
eHRlcm4gY29uc3QgVHlwZUlkIGtUZXN0VHlwZUlkSW5Hb29nbGVUZXN0ID0gR2V0VGVzdFR5cGVJ
ZCgpOwogLy8gVGhpcyBwcmVkaWNhdGUtZm9ybWF0dGVyIGNoZWNrcyB0aGF0ICdyZXN1bHRzJyBj
b250YWlucyBhIHRlc3QgcGFydAogLy8gZmFpbHVyZSBvZiB0aGUgZ2l2ZW4gdHlwZSBhbmQgdGhh
dCB0aGUgZmFpbHVyZSBtZXNzYWdlIGNvbnRhaW5zIHRoZQogLy8gZ2l2ZW4gc3Vic3RyaW5nLgot
QXNzZXJ0aW9uUmVzdWx0IEhhc09uZUZhaWx1cmUoY29uc3QgY2hhciogLyogcmVzdWx0c19leHBy
ICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLyogdHlwZV9l
eHByICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLyogc3Vi
c3RyX2V4cHIgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UGFy
dFJlc3VsdEFycmF5JiByZXN1bHRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVz
dFBhcnRSZXN1bHQ6OlR5cGUgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHN1YnN0cikgewotICBjb25zdCBTdHJpbmcgZXhwZWN0ZWQodHlwZSA9PSBUZXN0
UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSA/CitzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IEhhc09u
ZUZhaWx1cmUoY29uc3QgY2hhciogLyogcmVzdWx0c19leHByICovLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qIHR5cGVfZXhwciAqLywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKiBzdWJzdHJfZXhw
ciAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UGFy
dFJlc3VsdEFycmF5JiByZXN1bHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN1YnN0cikgeworICBjb25zdCBzdGQ6OnN0
cmluZyBleHBlY3RlZCh0eXBlID09IFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlID8KICAg
ICAgICAgICAgICAgICAgICAgICAgICIxIGZhdGFsIGZhaWx1cmUiIDoKICAgICAgICAgICAgICAg
ICAgICAgICAgICIxIG5vbi1mYXRhbCBmYWlsdXJlIik7CiAgIE1lc3NhZ2UgbXNnOwpAQCAtNTk0
LDIzICs2OTEsMjEgQEAgQXNzZXJ0aW9uUmVzdWx0IEhhc09uZUZhaWx1cmUoY29uc3QgY2hhciog
LyogcmVzdWx0c19leHByICovLAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXpl
KCk7IGkrKykgewogICAgICAgbXNnIDw8ICJcbiIgPDwgcmVzdWx0cy5HZXRUZXN0UGFydFJlc3Vs
dChpKTsKICAgICB9Ci0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgICByZXR1
cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG1zZzsKICAgfQogCiAgIGNvbnN0IFRlc3RQYXJ0UmVz
dWx0JiByID0gcmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgwKTsKICAgaWYgKHIudHlwZSgpICE9
IHR5cGUpIHsKLSAgICBtc2cgPDwgIkV4cGVjdGVkOiAiIDw8IGV4cGVjdGVkIDw8ICJcbiIKLSAg
ICAgICAgPDwgIiAgQWN0dWFsOlxuIgotICAgICAgICA8PCByOwotICAgIHJldHVybiBBc3NlcnRp
b25GYWlsdXJlKG1zZyk7CisgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiRXhwZWN0
ZWQ6ICIgPDwgZXhwZWN0ZWQgPDwgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PDwgIiAgQWN0dWFsOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcjsKICAg
fQogCi0gIGlmIChzdHJzdHIoci5tZXNzYWdlKCksIHN1YnN0cikgPT0gTlVMTCkgewotICAgIG1z
ZyA8PCAiRXhwZWN0ZWQ6ICIgPDwgZXhwZWN0ZWQgPDwgIiBjb250YWluaW5nIFwiIgotICAgICAg
ICA8PCBzdWJzdHIgPDwgIlwiXG4iCi0gICAgICAgIDw8ICIgIEFjdHVhbDpcbiIKLSAgICAgICAg
PDwgcjsKLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICBpZiAoc3Ryc3RyKHIu
bWVzc2FnZSgpLCBzdWJzdHIuY19zdHIoKSkgPT0gTlVMTCkgeworICAgIHJldHVybiBBc3NlcnRp
b25GYWlsdXJlKCkgPDwgIkV4cGVjdGVkOiAiIDw8IGV4cGVjdGVkIDw8ICIgY29udGFpbmluZyBc
IiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHN1YnN0ciA8PCAiXCJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgIEFjdHVhbDpcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IHI7CiAgIH0KIAogICByZXR1cm4gQXNzZXJ0aW9uU3VjY2Vz
cygpOwpAQCAtNjE5LDIwICs3MTQsMTcgQEAgQXNzZXJ0aW9uUmVzdWx0IEhhc09uZUZhaWx1cmUo
Y29uc3QgY2hhciogLyogcmVzdWx0c19leHByICovLAogLy8gVGhlIGNvbnN0cnVjdG9yIG9mIFNp
bmdsZUZhaWx1cmVDaGVja2VyIHJlbWVtYmVycyB3aGVyZSB0byBsb29rIHVwCiAvLyB0ZXN0IHBh
cnQgcmVzdWx0cywgd2hhdCB0eXBlIG9mIGZhaWx1cmUgd2UgZXhwZWN0LCBhbmQgd2hhdAogLy8g
c3Vic3RyaW5nIHRoZSBmYWlsdXJlIG1lc3NhZ2Ugc2hvdWxkIGNvbnRhaW4uCi1TaW5nbGVGYWls
dXJlQ2hlY2tlcjo6IFNpbmdsZUZhaWx1cmVDaGVja2VyKAotICAgIGNvbnN0IFRlc3RQYXJ0UmVz
dWx0QXJyYXkqIHJlc3VsdHMsCi0gICAgVGVzdFBhcnRSZXN1bHQ6OlR5cGUgdHlwZSwKLSAgICBj
b25zdCBjaGFyKiBzdWJzdHIpCi0gICAgOiByZXN1bHRzXyhyZXN1bHRzKSwKLSAgICAgIHR5cGVf
KHR5cGUpLAotICAgICAgc3Vic3RyXyhzdWJzdHIpIHt9CitTaW5nbGVGYWlsdXJlQ2hlY2tlcjo6
U2luZ2xlRmFpbHVyZUNoZWNrZXIoY29uc3QgVGVzdFBhcnRSZXN1bHRBcnJheSogcmVzdWx0cywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0UGFydFJlc3Vs
dDo6VHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBzdWJzdHIpCisgICAgOiByZXN1bHRzXyhyZXN1bHRzKSwgdHlw
ZV8odHlwZSksIHN1YnN0cl8oc3Vic3RyKSB7fQogCiAvLyBUaGUgZGVzdHJ1Y3RvciBvZiBTaW5n
bGVGYWlsdXJlQ2hlY2tlciB2ZXJpZmllcyB0aGF0IHRoZSBnaXZlbgogLy8gVGVzdFBhcnRSZXN1
bHRBcnJheSBjb250YWlucyBleGFjdGx5IG9uZSBmYWlsdXJlIHRoYXQgaGFzIHRoZSBnaXZlbgog
Ly8gdHlwZSBhbmQgY29udGFpbnMgdGhlIGdpdmVuIHN1YnN0cmluZy4gIElmIHRoYXQncyBub3Qg
dGhlIGNhc2UsIGEKIC8vIG5vbi1mYXRhbCBmYWlsdXJlIHdpbGwgYmUgZ2VuZXJhdGVkLgogU2lu
Z2xlRmFpbHVyZUNoZWNrZXI6On5TaW5nbGVGYWlsdXJlQ2hlY2tlcigpIHsKLSAgRVhQRUNUX1BS
RURfRk9STUFUMyhIYXNPbmVGYWlsdXJlLCAqcmVzdWx0c18sIHR5cGVfLCBzdWJzdHJfLmNfc3Ry
KCkpOworICBFWFBFQ1RfUFJFRF9GT1JNQVQzKEhhc09uZUZhaWx1cmUsICpyZXN1bHRzXywgdHlw
ZV8sIHN1YnN0cl8pOwogfQogCiBEZWZhdWx0R2xvYmFsVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjo6
RGVmYXVsdEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIoCkBAIC03MDksMTEgKzgwMSwyMiBA
QCBpbnQgVW5pdFRlc3RJbXBsOjpmYWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJu
IFN1bU92ZXJUZXN0Q2FzZUxpc3QodGVzdF9jYXNlc18sICZUZXN0Q2FzZTo6ZmFpbGVkX3Rlc3Rf
Y291bnQpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3
aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0LgoraW50IFVuaXRUZXN0SW1wbDo6cmVw
b3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3QgeworICByZXR1cm4gU3VtT3ZlclRl
c3RDYXNlTGlzdCh0ZXN0X2Nhc2VzXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlRl
c3RDYXNlOjpyZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQpOworfQorCiAvLyBHZXRzIHRo
ZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMuCiBpbnQgVW5pdFRlc3RJbXBsOjpkaXNhYmxlZF90
ZXN0X2NvdW50KCkgY29uc3QgewogICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0ZXN0X2Nh
c2VzXywgJlRlc3RDYXNlOjpkaXNhYmxlZF90ZXN0X2NvdW50KTsKIH0KIAorLy8gR2V0cyB0aGUg
bnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50ZWQgaW4gdGhlIFhNTCByZXBvcnQuCitpbnQgVW5p
dFRlc3RJbXBsOjpyZXBvcnRhYmxlX3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBTdW1P
dmVyVGVzdENhc2VMaXN0KHRlc3RfY2FzZXNfLCAmVGVzdENhc2U6OnJlcG9ydGFibGVfdGVzdF9j
b3VudCk7Cit9CisKIC8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdHMuCiBpbnQgVW5pdFRl
c3RJbXBsOjp0b3RhbF90ZXN0X2NvdW50KCkgY29uc3QgewogICByZXR1cm4gU3VtT3ZlclRlc3RD
YXNlTGlzdCh0ZXN0X2Nhc2VzXywgJlRlc3RDYXNlOjp0b3RhbF90ZXN0X2NvdW50KTsKQEAgLTcy
NCw3ICs4MjcsNyBAQCBpbnQgVW5pdFRlc3RJbXBsOjp0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0
IHsKICAgcmV0dXJuIFN1bU92ZXJUZXN0Q2FzZUxpc3QodGVzdF9jYXNlc18sICZUZXN0Q2FzZTo6
dGVzdF90b19ydW5fY291bnQpOwogfQogCi0vLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNr
IHRyYWNlIGFzIGEgU3RyaW5nLgorLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFj
ZSBhcyBhbiBzdGQ6OnN0cmluZy4KIC8vCiAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhY2sg
ZnJhbWVzIHRvIGJlIGluY2x1ZGVkIGlzIHNwZWNpZmllZCBieQogLy8gdGhlIGd0ZXN0X3N0YWNr
X3RyYWNlX2RlcHRoIGZsYWcuICBUaGUgc2tpcF9jb3VudCBwYXJhbWV0ZXIKQEAgLTczNCw5ICs4
MzcsMTMgQEAgaW50IFVuaXRUZXN0SW1wbDo6dGVzdF90b19ydW5fY291bnQoKSBjb25zdCB7CiAv
LyBGb3IgZXhhbXBsZSwgaWYgRm9vKCkgY2FsbHMgQmFyKCksIHdoaWNoIGluIHR1cm4gY2FsbHMK
IC8vIEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoMSksIEZvbygpIHdpbGwgYmUgaW5jbHVk
ZWQgaW4gdGhlCiAvLyB0cmFjZSBidXQgQmFyKCkgYW5kIEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNl
cHRUb3AoKSB3b24ndC4KLVN0cmluZyBVbml0VGVzdEltcGw6OkN1cnJlbnRPc1N0YWNrVHJhY2VF
eGNlcHRUb3AoaW50IHNraXBfY291bnQpIHsKLSAgKHZvaWQpc2tpcF9jb3VudDsKLSAgcmV0dXJu
IFN0cmluZygiIik7CitzdGQ6OnN0cmluZyBVbml0VGVzdEltcGw6OkN1cnJlbnRPc1N0YWNrVHJh
Y2VFeGNlcHRUb3AoaW50IHNraXBfY291bnQpIHsKKyAgcmV0dXJuIG9zX3N0YWNrX3RyYWNlX2dl
dHRlcigpLT5DdXJyZW50U3RhY2tUcmFjZSgKKyAgICAgIHN0YXRpY19jYXN0PGludD4oR1RFU1Rf
RkxBRyhzdGFja190cmFjZV9kZXB0aCkpLAorICAgICAgc2tpcF9jb3VudCArIDEKKyAgICAgIC8v
IFNraXBzIHRoZSB1c2VyLXNwZWNpZmllZCBudW1iZXIgb2YgZnJhbWVzIHBsdXMgdGhpcyBmdW5j
dGlvbgorICAgICAgLy8gaXRzZWxmLgorICAgICAgKTsgIC8vIE5PTElOVAogfQogCiAvLyBSZXR1
cm5zIHRoZSBjdXJyZW50IHRpbWUgaW4gbWlsbGlzZWNvbmRzLgpAQCAtNzUxLDcgKzg1OCw3IEBA
IFRpbWVJbk1pbGxpcyBHZXRUaW1lSW5NaWxsaXMoKSB7CiAgIFNZU1RFTVRJTUUgbm93X3N5c3Rp
bWU7CiAgIEZJTEVUSU1FIG5vd19maWxldGltZTsKICAgVUxBUkdFX0lOVEVHRVIgbm93X2ludDY0
OwotICAvLyBUT0RPKGtlbnRvbkBnb29nbGUuY29tKTogU2hvdWxkbid0IHRoaXMganVzdCB1c2UK
KyAgLy8gRklYTUU6IFNob3VsZG4ndCB0aGlzIGp1c3QgdXNlCiAgIC8vICAgR2V0U3lzdGVtVGlt
ZUFzRmlsZVRpbWUoKT8KICAgR2V0U3lzdGVtVGltZSgmbm93X3N5c3RpbWUpOwogICBpZiAoU3lz
dGVtVGltZVRvRmlsZVRpbWUoJm5vd19zeXN0aW1lLCAmbm93X2ZpbGV0aW1lKSkgewpAQCAtNzY0
LDY1ICs4NzEsMjggQEAgVGltZUluTWlsbGlzIEdldFRpbWVJbk1pbGxpcygpIHsKICAgcmV0dXJu
IDA7CiAjZWxpZiBHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9IQVNfR0VUVElNRU9GREFZXwog
ICBfX3RpbWViNjQgbm93OwotI2lmZGVmIF9NU0NfVkVSCisKICAgLy8gTVNWQyA4IGRlcHJlY2F0
ZXMgX2Z0aW1lNjQoKSwgc28gd2Ugd2FudCB0byBzdXBwcmVzcyB3YXJuaW5nIDQ5OTYKICAgLy8g
KGRlcHJlY2F0ZWQgZnVuY3Rpb24pIHRoZXJlLgotICAvLyBUT0RPKGtlbnRvbkBnb29nbGUuY29t
KTogVXNlIEdldFRpY2tDb3VudCgpPyAgT3IgdXNlCisgIC8vIEZJWE1FOiBVc2UgR2V0VGlja0Nv
dW50KCk/ICBPciB1c2UKICAgLy8gICBTeXN0ZW1UaW1lVG9GaWxlVGltZSgpCi0jcHJhZ21hIHdh
cm5pbmcocHVzaCkgICAgICAgICAgLy8gU2F2ZXMgdGhlIGN1cnJlbnQgd2FybmluZyBzdGF0ZS4K
LSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5OTYpICAvLyBUZW1wb3JhcmlseSBkaXNhYmxlcyB3
YXJuaW5nIDQ5OTYuCisgIEdURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVTSF8oKQogICBf
ZnRpbWU2NCgmbm93KTsKLSNwcmFnbWEgd2FybmluZyhwb3ApICAgICAgICAgICAvLyBSZXN0b3Jl
cyB0aGUgd2FybmluZyBzdGF0ZS4KLSNlbHNlCi0gIF9mdGltZTY0KCZub3cpOwotI2VuZGlmICAv
LyBfTVNDX1ZFUgorICBHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BPUF8oKQorCiAgIHJl
dHVybiBzdGF0aWNfY2FzdDxUaW1lSW5NaWxsaXM+KG5vdy50aW1lKSAqIDEwMDAgKyBub3cubWls
bGl0bTsKICNlbGlmIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfCiAgIHN0cnVjdCB0aW1ldmFsIG5v
dzsKICAgZ2V0dGltZW9mZGF5KCZub3csIE5VTEwpOwogICByZXR1cm4gc3RhdGljX2Nhc3Q8VGlt
ZUluTWlsbGlzPihub3cudHZfc2VjKSAqIDEwMDAgKyBub3cudHZfdXNlYyAvIDEwMDA7CiAjZWxz
ZQotI2Vycm9yICJEb24ndCBrbm93IGhvdyB0byBnZXQgdGhlIGN1cnJlbnQgdGltZSBvbiB5b3Vy
IHN5c3RlbS4iCisjIGVycm9yICJEb24ndCBrbm93IGhvdyB0byBnZXQgdGhlIGN1cnJlbnQgdGlt
ZSBvbiB5b3VyIHN5c3RlbS4iCiAjZW5kaWYKIH0KIAogLy8gVXRpbGl0aWVzCiAKLS8vIGNsYXNz
IFN0cmluZwotCi0vLyBSZXR1cm5zIHRoZSBpbnB1dCBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVz
IGlmIGl0J3Mgbm90IE5VTEw7Ci0vLyBvdGhlcndpc2UgcmV0dXJucyAiKG51bGwpIi4gIEZvciBl
eGFtcGxlLCAiXCJIZWxsb1wiIiBpcyByZXR1cm5lZAotLy8gZm9yIGlucHV0ICJIZWxsbyIuCi0v
LwotLy8gVGhpcyBpcyB1c2VmdWwgZm9yIHByaW50aW5nIGEgQyBzdHJpbmcgaW4gdGhlIHN5bnRh
eCBvZiBhIGxpdGVyYWwuCi0vLwotLy8gS25vd24gaXNzdWU6IGVzY2FwZSBzZXF1ZW5jZXMgYXJl
IG5vdCBoYW5kbGVkIHlldC4KLVN0cmluZyBTdHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKGNvbnN0
IGNoYXIqIGNfc3RyKSB7Ci0gIHJldHVybiBjX3N0ciA/IFN0cmluZzo6Rm9ybWF0KCJcIiVzXCIi
LCBjX3N0cikgOiBTdHJpbmcoIihudWxsKSIpOwotfQotCi0vLyBDb3BpZXMgYXQgbW9zdCBsZW5n
dGggY2hhcmFjdGVycyBmcm9tIHN0ciBpbnRvIGEgbmV3bHktYWxsb2NhdGVkCi0vLyBwaWVjZSBv
ZiBtZW1vcnkgb2Ygc2l6ZSBsZW5ndGgrMS4gIFRoZSBtZW1vcnkgaXMgYWxsb2NhdGVkIHdpdGgg
bmV3W10uCi0vLyBBIHRlcm1pbmF0aW5nIG51bGwgYnl0ZSBpcyB3cml0dGVuIHRvIHRoZSBtZW1v
cnksIGFuZCBhIHBvaW50ZXIgdG8gaXQKLS8vIGlzIHJldHVybmVkLiAgSWYgc3RyIGlzIE5VTEws
IE5VTEwgaXMgcmV0dXJuZWQuCi1zdGF0aWMgY2hhciogQ2xvbmVTdHJpbmcoY29uc3QgY2hhciog
c3RyLCBzaXplX3QgbGVuZ3RoKSB7Ci0gIGlmIChzdHIgPT0gTlVMTCkgewotICAgIHJldHVybiBO
VUxMOwotICB9IGVsc2UgewotICAgIGNoYXIqIGNvbnN0IGNsb25lID0gbmV3IGNoYXJbbGVuZ3Ro
ICsgMV07Ci0gICAgcG9zaXg6OlN0ck5DcHkoY2xvbmUsIHN0ciwgbGVuZ3RoKTsKLSAgICBjbG9u
ZVtsZW5ndGhdID0gJ1wwJzsKLSAgICByZXR1cm4gY2xvbmU7Ci0gIH0KLX0KLQotLy8gQ2xvbmVz
IGEgMC10ZXJtaW5hdGVkIEMgc3RyaW5nLCBhbGxvY2F0aW5nIG1lbW9yeSB1c2luZyBuZXcuICBU
aGUKLS8vIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmdbXSB0aGUgcmV0dXJuIHZh
bHVlLiAgUmV0dXJucyB0aGUKLS8vIGNsb25lZCBzdHJpbmcsIG9yIE5VTEwgaWYgdGhlIGlucHV0
IGlzIE5VTEwuCi1jb25zdCBjaGFyICogU3RyaW5nOjpDbG9uZUNTdHJpbmcoY29uc3QgY2hhciog
Y19zdHIpIHsKLSAgcmV0dXJuIChjX3N0ciA9PSBOVUxMKSA/Ci0gICAgICAgICAgICAgICAgICAg
IE5VTEwgOiBDbG9uZVN0cmluZyhjX3N0ciwgc3RybGVuKGNfc3RyKSk7Ci19CisvLyBjbGFzcyBT
dHJpbmcuCiAKICNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogLy8gQ3JlYXRlcyBhIFVURi0x
NiB3aWRlIHN0cmluZyBmcm9tIHRoZSBnaXZlbiBBTlNJIHN0cmluZywgYWxsb2NhdGluZwpAQCAt
ODc5LDExICs5NDksNiBAQCBib29sIFN0cmluZzo6Q1N0cmluZ0VxdWFscyhjb25zdCBjaGFyICog
bGhzLCBjb25zdCBjaGFyICogcmhzKSB7CiAvLyBlbmNvZGluZywgYW5kIHN0cmVhbXMgdGhlIHJl
c3VsdCB0byB0aGUgZ2l2ZW4gTWVzc2FnZSBvYmplY3QuCiBzdGF0aWMgdm9pZCBTdHJlYW1XaWRl
Q2hhcnNUb01lc3NhZ2UoY29uc3Qgd2NoYXJfdCogd3N0ciwgc2l6ZV90IGxlbmd0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlKiBtc2cpIHsKLSAgLy8gVE9E
Tyh3YW4pOiBjb25zaWRlciBhbGxvd2luZyBhIHRlc3Rpbmc6OlN0cmluZyBvYmplY3QgdG8KLSAg
Ly8gY29udGFpbiAnXDAnLiAgVGhpcyB3aWxsIG1ha2UgaXQgYmVoYXZlIG1vcmUgbGlrZSBzdGQ6
OnN0cmluZywKLSAgLy8gYW5kIHdpbGwgYWxsb3cgVG9VdGY4U3RyaW5nKCkgdG8gcmV0dXJuIHRo
ZSBjb3JyZWN0IGVuY29kaW5nCi0gIC8vIGZvciAnXDAnIHMudC4gd2UgY2FuIGdldCByaWQgb2Yg
dGhlIGNvbmRpdGlvbmFsIGhlcmUgKGFuZCBpbgotICAvLyBzZXZlcmFsIG90aGVyIHBsYWNlcyku
CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGxlbmd0aDsgKSB7ICAvLyBOT0xJTlQKICAgICBp
ZiAod3N0cltpXSAhPSBMJ1wwJykgewogICAgICAgKm1zZyA8PCBXaWRlU3RyaW5nVG9VdGY4KHdz
dHIgKyBpLCBzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aCAtIGkpKTsKQEAgLTg5OCw4ICs5NjMsNDUg
QEAgc3RhdGljIHZvaWQgU3RyZWFtV2lkZUNoYXJzVG9NZXNzYWdlKGNvbnN0IHdjaGFyX3QqIHdz
dHIsIHNpemVfdCBsZW5ndGgsCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RSSU5HIHx8
IEdURVNUX0hBU19HTE9CQUxfV1NUUklORwogCit2b2lkIFNwbGl0U3RyaW5nKGNvbnN0IDo6c3Rk
OjpzdHJpbmcmIHN0ciwgY2hhciBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAgIDo6c3RkOjp2
ZWN0b3I8IDo6c3RkOjpzdHJpbmc+KiBkZXN0KSB7CisgIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpz
dHJpbmc+IHBhcnNlZDsKKyAgOjpzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHBvcyA9IDA7CisgIHdo
aWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsKKyAgICBjb25zdCA6OnN0
ZDo6c3RyaW5nOjpzaXplX3R5cGUgY29sb24gPSBzdHIuZmluZChkZWxpbWl0ZXIsIHBvcyk7Cisg
ICAgaWYgKGNvbG9uID09IDo6c3RkOjpzdHJpbmc6Om5wb3MpIHsKKyAgICAgIHBhcnNlZC5wdXNo
X2JhY2soc3RyLnN1YnN0cihwb3MpKTsKKyAgICAgIGJyZWFrOworICAgIH0gZWxzZSB7CisgICAg
ICBwYXJzZWQucHVzaF9iYWNrKHN0ci5zdWJzdHIocG9zLCBjb2xvbiAtIHBvcykpOworICAgICAg
cG9zID0gY29sb24gKyAxOworICAgIH0KKyAgfQorICBkZXN0LT5zd2FwKHBhcnNlZCk7Cit9CisK
IH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogCisvLyBDb25zdHJ1Y3RzIGFuIGVtcHR5IE1lc3Nh
Z2UuCisvLyBXZSBhbGxvY2F0ZSB0aGUgc3RyaW5nc3RyZWFtIHNlcGFyYXRlbHkgYmVjYXVzZSBv
dGhlcndpc2UgZWFjaCB1c2Ugb2YKKy8vIEFTU0VSVC9FWFBFQ1QgaW4gYSBwcm9jZWR1cmUgYWRk
cyBvdmVyIDIwMCBieXRlcyB0byB0aGUgcHJvY2VkdXJlJ3MKKy8vIHN0YWNrIGZyYW1lIGxlYWRp
bmcgdG8gaHVnZSBzdGFjayBmcmFtZXMgaW4gc29tZSBjYXNlczsgZ2NjIGRvZXMgbm90IHJldXNl
CisvLyB0aGUgc3RhY2sgc3BhY2UuCitNZXNzYWdlOjpNZXNzYWdlKCkgOiBzc18obmV3IDo6c3Rk
OjpzdHJpbmdzdHJlYW0pIHsKKyAgLy8gQnkgZGVmYXVsdCwgd2Ugd2FudCB0aGVyZSB0byBiZSBl
bm91Z2ggcHJlY2lzaW9uIHdoZW4gcHJpbnRpbmcKKyAgLy8gYSBkb3VibGUgdG8gYSBNZXNzYWdl
LgorICAqc3NfIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6ZGlnaXRzMTAgKyAyKTsKK30KKworLy8gVGhlc2UgdHdvIG92ZXJsb2FkcyBhbGxvdyBzdHJl
YW1pbmcgYSB3aWRlIEMgc3RyaW5nIHRvIGEgTWVzc2FnZQorLy8gdXNpbmcgdGhlIFVURi04IGVu
Y29kaW5nLgorTWVzc2FnZSYgTWVzc2FnZTo6b3BlcmF0b3IgPDwoY29uc3Qgd2NoYXJfdCogd2lk
ZV9jX3N0cikgeworICByZXR1cm4gKnRoaXMgPDwgaW50ZXJuYWw6OlN0cmluZzo6U2hvd1dpZGVD
U3RyaW5nKHdpZGVfY19zdHIpOworfQorTWVzc2FnZSYgTWVzc2FnZTo6b3BlcmF0b3IgPDwod2No
YXJfdCogd2lkZV9jX3N0cikgeworICByZXR1cm4gKnRoaXMgPDwgaW50ZXJuYWw6OlN0cmluZzo6
U2hvd1dpZGVDU3RyaW5nKHdpZGVfY19zdHIpOworfQorCiAjaWYgR1RFU1RfSEFTX1NURF9XU1RS
SU5HCiAvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gd2lkZSBzdHJpbmcgdG8gYSBuYXJyb3cgc3RyaW5n
IHVzaW5nIHRoZSBVVEYtOAogLy8gZW5jb2RpbmcsIGFuZCBzdHJlYW1zIHRoZSByZXN1bHQgdG8g
dGhpcyBNZXNzYWdlIG9iamVjdC4KQEAgLTkxOCw1NSArMTAyMCwyNiBAQCBNZXNzYWdlJiBNZXNz
YWdlOjpvcGVyYXRvciA8PChjb25zdCA6OndzdHJpbmcmIHdzdHIpIHsKIH0KICNlbmRpZiAgLy8g
R1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCiAKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIEZv
cm1hdHMgYSB2YWx1ZSB0byBiZSB1c2VkIGluIGEgZmFpbHVyZSBtZXNzYWdlLgotCi0vLyBGb3Ig
YSBjaGFyIHZhbHVlLCB3ZSBwcmludCBpdCBhcyBhIEMrKyBjaGFyIGxpdGVyYWwgYW5kIGFzIGFu
Ci0vLyB1bnNpZ25lZCBpbnRlZ2VyIChib3RoIGluIGRlY2ltYWwgYW5kIGluIGhleGFkZWNpbWFs
KS4KLVN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjaGFyIGNoKSB7Ci0gIGNvbnN0IHVu
c2lnbmVkIGludCBjaF9hc191aW50ID0gY2g7Ci0gIC8vIEEgU3RyaW5nIG9iamVjdCBjYW5ub3Qg
Y29udGFpbiAnXDAnLCBzbyB3ZSBwcmludCAiXFwwIiB3aGVuIGNoIGlzCi0gIC8vICdcMCcuCi0g
IHJldHVybiBTdHJpbmc6OkZvcm1hdCgiJyVzJyAoJXUsIDB4JVgpIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNoID8gU3RyaW5nOjpGb3JtYXQoIiVjIiwgY2gpLmNfc3RyKCkgOiAiXFwwIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNoX2FzX3VpbnQsIGNoX2FzX3VpbnQpOwotfQotCi0v
LyBGb3IgYSB3Y2hhcl90IHZhbHVlLCB3ZSBwcmludCBpdCBhcyBhIEMrKyB3Y2hhcl90IGxpdGVy
YWwgYW5kIGFzIGFuCi0vLyB1bnNpZ25lZCBpbnRlZ2VyIChib3RoIGluIGRlY2ltYWwgYW5kIGlu
IGhleGlkZWNpbWFsKS4KLVN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZSh3Y2hhcl90IHdj
aGFyKSB7Ci0gIC8vIFRoZSBDKysgc3RhbmRhcmQgZG9lc24ndCBzcGVjaWZ5IHRoZSBleGFjdCBz
aXplIG9mIHRoZSB3Y2hhcl90Ci0gIC8vIHR5cGUuICBJdCBqdXN0IHNheXMgdGhhdCBpdCBzaGFs
bCBoYXZlIHRoZSBzYW1lIHNpemUgYXMgYW5vdGhlcgotICAvLyBpbnRlZ3JhbCB0eXBlLCBjYWxs
ZWQgaXRzIHVuZGVybHlpbmcgdHlwZS4KLSAgLy8KLSAgLy8gVGhlcmVmb3JlLCBpbiBvcmRlciB0
byBwcmludCBhIHdjaGFyX3QgdmFsdWUgaW4gdGhlIG51bWVyaWMgZm9ybSwKLSAgLy8gd2UgZmly
c3QgY29udmVydCBpdCB0byB0aGUgbGFyZ2VzdCBpbnRlZ3JhbCB0eXBlIChVSW50NjQpIGFuZAot
ICAvLyB0aGVuIHByaW50IHRoZSBjb252ZXJ0ZWQgdmFsdWUuCi0gIC8vCi0gIC8vIFdlIHVzZSBz
dHJlYW1pbmcgdG8gcHJpbnQgdGhlIHZhbHVlIGFzICIlbGx1IiBkb2Vzbid0IHdvcmsKLSAgLy8g
Y29ycmVjdGx5IHdpdGggTVNWQyA3LjEuCi0gIGNvbnN0IFVJbnQ2NCB3Y2hhcl9hc191aW50NjQg
PSB3Y2hhcjsKLSAgTWVzc2FnZSBtc2c7Ci0gIC8vIEEgU3RyaW5nIG9iamVjdCBjYW5ub3QgY29u
dGFpbiAnXDAnLCBzbyB3ZSBwcmludCAiXFwwIiB3aGVuIHdjaGFyIGlzCi0gIC8vIEwnXDAnLgot
ICBjaGFyIGJ1ZmZlclszMl07ICAvLyBDb2RlUG9pbnRUb1V0ZjggcmVxdWlyZXMgYSBidWZmZXIg
dGhhdCBiaWcuCi0gIG1zZyA8PCAiTCciCi0gICAgICA8PCAod2NoYXIgPyBDb2RlUG9pbnRUb1V0
Zjgoc3RhdGljX2Nhc3Q8VUludDMyPih3Y2hhciksIGJ1ZmZlcikgOiAiXFwwIikKLSAgICAgIDw8
ICInICgiIDw8IHdjaGFyX2FzX3VpbnQ2NCA8PCAiLCAweCIgPDwgOjpzdGQ6OnNldGJhc2UoMTYp
Ci0gICAgICA8PCB3Y2hhcl9hc191aW50NjQgPDwgIikiOwotICByZXR1cm4gbXNnLkdldFN0cmlu
ZygpOworLy8gR2V0cyB0aGUgdGV4dCBzdHJlYW1lZCB0byB0aGlzIG9iamVjdCBzbyBmYXIgYXMg
YW4gc3RkOjpzdHJpbmcuCisvLyBFYWNoICdcMCcgY2hhcmFjdGVyIGluIHRoZSBidWZmZXIgaXMg
cmVwbGFjZWQgd2l0aCAiXFwwIi4KK3N0ZDo6c3RyaW5nIE1lc3NhZ2U6OkdldFN0cmluZygpIGNv
bnN0IHsKKyAgcmV0dXJuIGludGVybmFsOjpTdHJpbmdTdHJlYW1Ub1N0cmluZyhzc18uZ2V0KCkp
OwogfQogCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQogLy8gQXNzZXJ0aW9uUmVzdWx0IGNv
bnN0cnVjdG9ycy4KIC8vIFVzZWQgaW4gRVhQRUNUX1RSVUUvRkFMU0UoYXNzZXJ0aW9uX3Jlc3Vs
dCkuCiBBc3NlcnRpb25SZXN1bHQ6OkFzc2VydGlvblJlc3VsdChjb25zdCBBc3NlcnRpb25SZXN1
bHQmIG90aGVyKQogICAgIDogc3VjY2Vzc18ob3RoZXIuc3VjY2Vzc18pLAogICAgICAgbWVzc2Fn
ZV8ob3RoZXIubWVzc2FnZV8uZ2V0KCkgIT0gTlVMTCA/Ci0gICAgICAgICAgICAgICBuZXcgaW50
ZXJuYWw6OlN0cmluZygqb3RoZXIubWVzc2FnZV8pIDoKLSAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PGludGVybmFsOjpTdHJpbmcqPihOVUxMKSkgeworICAgICAgICAgICAgICAgbmV3IDo6c3Rk
OjpzdHJpbmcoKm90aGVyLm1lc3NhZ2VfKSA6CisgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDwg
OjpzdGQ6OnN0cmluZyo+KE5VTEwpKSB7Cit9CisKKy8vIFN3YXBzIHR3byBBc3NlcnRpb25SZXN1
bHRzLgordm9pZCBBc3NlcnRpb25SZXN1bHQ6OnN3YXAoQXNzZXJ0aW9uUmVzdWx0JiBvdGhlcikg
eworICB1c2luZyBzdGQ6OnN3YXA7CisgIHN3YXAoc3VjY2Vzc18sIG90aGVyLnN1Y2Nlc3NfKTsK
KyAgc3dhcChtZXNzYWdlXywgb3RoZXIubWVzc2FnZV8pOwogfQogCiAvLyBSZXR1cm5zIHRoZSBh
c3NlcnRpb24ncyBuZWdhdGlvbi4gVXNlZCB3aXRoIEVYUEVDVC9BU1NFUlRfRkFMU0UuCkBAIC05
OTUsNiArMTA2OCwyNzYgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvbkZhaWx1cmUoY29uc3Qg
TWVzc2FnZSYgbWVzc2FnZSkgewogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCituYW1lc3BhY2Ug
ZWRpdF9kaXN0YW5jZSB7CitzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gQ2FsY3VsYXRlT3B0aW1hbEVk
aXRzKGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIGxlZnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIHJpZ2h0
KSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGRvdWJsZT4gPiBjb3N0cygKKyAgICAgIGxl
ZnQuc2l6ZSgpICsgMSwgc3RkOjp2ZWN0b3I8ZG91YmxlPihyaWdodC5zaXplKCkgKyAxKSk7Cisg
IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPEVkaXRUeXBlPiA+IGJlc3RfbW92ZSgKKyAgICAgIGxl
ZnQuc2l6ZSgpICsgMSwgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+KHJpZ2h0LnNpemUoKSArIDEpKTsK
KworICAvLyBQb3B1bGF0ZSBmb3IgZW1wdHkgcmlnaHQuCisgIGZvciAoc2l6ZV90IGxfaSA9IDA7
IGxfaSA8IGNvc3RzLnNpemUoKTsgKytsX2kpIHsKKyAgICBjb3N0c1tsX2ldWzBdID0gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihsX2kpOworICAgIGJlc3RfbW92ZVtsX2ldWzBdID0ga1JlbW92ZTsKKyAg
fQorICAvLyBQb3B1bGF0ZSBmb3IgZW1wdHkgbGVmdC4KKyAgZm9yIChzaXplX3Qgcl9pID0gMTsg
cl9pIDwgY29zdHNbMF0uc2l6ZSgpOyArK3JfaSkgeworICAgIGNvc3RzWzBdW3JfaV0gPSBzdGF0
aWNfY2FzdDxkb3VibGU+KHJfaSk7CisgICAgYmVzdF9tb3ZlWzBdW3JfaV0gPSBrQWRkOworICB9
CisKKyAgZm9yIChzaXplX3QgbF9pID0gMDsgbF9pIDwgbGVmdC5zaXplKCk7ICsrbF9pKSB7Cisg
ICAgZm9yIChzaXplX3Qgcl9pID0gMDsgcl9pIDwgcmlnaHQuc2l6ZSgpOyArK3JfaSkgeworICAg
ICAgaWYgKGxlZnRbbF9pXSA9PSByaWdodFtyX2ldKSB7CisgICAgICAgIC8vIEZvdW5kIGEgbWF0
Y2guIENvbnN1bWUgaXQuCisgICAgICAgIGNvc3RzW2xfaSArIDFdW3JfaSArIDFdID0gY29zdHNb
bF9pXVtyX2ldOworICAgICAgICBiZXN0X21vdmVbbF9pICsgMV1bcl9pICsgMV0gPSBrTWF0Y2g7
CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorCisgICAgICBjb25zdCBkb3VibGUgYWRkID0g
Y29zdHNbbF9pICsgMV1bcl9pXTsKKyAgICAgIGNvbnN0IGRvdWJsZSByZW1vdmUgPSBjb3N0c1ts
X2ldW3JfaSArIDFdOworICAgICAgY29uc3QgZG91YmxlIHJlcGxhY2UgPSBjb3N0c1tsX2ldW3Jf
aV07CisgICAgICBpZiAoYWRkIDwgcmVtb3ZlICYmIGFkZCA8IHJlcGxhY2UpIHsKKyAgICAgICAg
Y29zdHNbbF9pICsgMV1bcl9pICsgMV0gPSBhZGQgKyAxOworICAgICAgICBiZXN0X21vdmVbbF9p
ICsgMV1bcl9pICsgMV0gPSBrQWRkOworICAgICAgfSBlbHNlIGlmIChyZW1vdmUgPCBhZGQgJiYg
cmVtb3ZlIDwgcmVwbGFjZSkgeworICAgICAgICBjb3N0c1tsX2kgKyAxXVtyX2kgKyAxXSA9IHJl
bW92ZSArIDE7CisgICAgICAgIGJlc3RfbW92ZVtsX2kgKyAxXVtyX2kgKyAxXSA9IGtSZW1vdmU7
CisgICAgICB9IGVsc2UgeworICAgICAgICAvLyBXZSBtYWtlIHJlcGxhY2UgYSBsaXR0bGUgbW9y
ZSBleHBlbnNpdmUgdGhhbiBhZGQvcmVtb3ZlIHRvIGxvd2VyCisgICAgICAgIC8vIHRoZWlyIHBy
aW9yaXR5LgorICAgICAgICBjb3N0c1tsX2kgKyAxXVtyX2kgKyAxXSA9IHJlcGxhY2UgKyAxLjAw
MDAxOworICAgICAgICBiZXN0X21vdmVbbF9pICsgMV1bcl9pICsgMV0gPSBrUmVwbGFjZTsKKyAg
ICAgIH0KKyAgICB9CisgIH0KKworICAvLyBSZWNvbnN0cnVjdCB0aGUgYmVzdCBwYXRoLiBXZSBk
byBpdCBpbiByZXZlcnNlIG9yZGVyLgorICBzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gYmVzdF9wYXRo
OworICBmb3IgKHNpemVfdCBsX2kgPSBsZWZ0LnNpemUoKSwgcl9pID0gcmlnaHQuc2l6ZSgpOyBs
X2kgPiAwIHx8IHJfaSA+IDA7KSB7CisgICAgRWRpdFR5cGUgbW92ZSA9IGJlc3RfbW92ZVtsX2ld
W3JfaV07CisgICAgYmVzdF9wYXRoLnB1c2hfYmFjayhtb3ZlKTsKKyAgICBsX2kgLT0gbW92ZSAh
PSBrQWRkOworICAgIHJfaSAtPSBtb3ZlICE9IGtSZW1vdmU7CisgIH0KKyAgc3RkOjpyZXZlcnNl
KGJlc3RfcGF0aC5iZWdpbigpLCBiZXN0X3BhdGguZW5kKCkpOworICByZXR1cm4gYmVzdF9wYXRo
OworfQorCituYW1lc3BhY2UgeworCisvLyBIZWxwZXIgY2xhc3MgdG8gY29udmVydCBzdHJpbmcg
aW50byBpZHMgd2l0aCBkZWR1cGxpY2F0aW9uLgorY2xhc3MgSW50ZXJuYWxTdHJpbmdzIHsKKyBw
dWJsaWM6CisgIHNpemVfdCBHZXRJZChjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7CisgICAgSWRN
YXA6Oml0ZXJhdG9yIGl0ID0gaWRzXy5maW5kKHN0cik7CisgICAgaWYgKGl0ICE9IGlkc18uZW5k
KCkpIHJldHVybiBpdC0+c2Vjb25kOworICAgIHNpemVfdCBpZCA9IGlkc18uc2l6ZSgpOworICAg
IHJldHVybiBpZHNfW3N0cl0gPSBpZDsKKyAgfQorCisgcHJpdmF0ZToKKyAgdHlwZWRlZiBzdGQ6
Om1hcDxzdGQ6OnN0cmluZywgc2l6ZV90PiBJZE1hcDsKKyAgSWRNYXAgaWRzXzsKK307CisKK30g
IC8vIG5hbWVzcGFjZQorCitzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gQ2FsY3VsYXRlT3B0aW1hbEVk
aXRzKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgbGVmdCwKKyAgICBjb25z
dCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHJpZ2h0KSB7CisgIHN0ZDo6dmVjdG9yPHNpemVf
dD4gbGVmdF9pZHMsIHJpZ2h0X2lkczsKKyAgeworICAgIEludGVybmFsU3RyaW5ncyBpbnRlcm5f
dGFibGU7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZWZ0LnNpemUoKTsgKytpKSB7Cisg
ICAgICBsZWZ0X2lkcy5wdXNoX2JhY2soaW50ZXJuX3RhYmxlLkdldElkKGxlZnRbaV0pKTsKKyAg
ICB9CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByaWdodC5zaXplKCk7ICsraSkgeworICAg
ICAgcmlnaHRfaWRzLnB1c2hfYmFjayhpbnRlcm5fdGFibGUuR2V0SWQocmlnaHRbaV0pKTsKKyAg
ICB9CisgIH0KKyAgcmV0dXJuIENhbGN1bGF0ZU9wdGltYWxFZGl0cyhsZWZ0X2lkcywgcmlnaHRf
aWRzKTsKK30KKworbmFtZXNwYWNlIHsKKworLy8gSGVscGVyIGNsYXNzIHRoYXQgaG9sZHMgdGhl
IHN0YXRlIGZvciBvbmUgaHVuayBhbmQgcHJpbnRzIGl0IG91dCB0byB0aGUKKy8vIHN0cmVhbS4K
Ky8vIEl0IHJlb3JkZXJzIGFkZHMvcmVtb3ZlcyB3aGVuIHBvc3NpYmxlIHRvIGdyb3VwIGFsbCBy
ZW1vdmVzIGJlZm9yZSBhbGwKKy8vIGFkZHMuIEl0IGFsc28gYWRkcyB0aGUgaHVuayBoZWFkZXIg
YmVmb3JlIHByaW50aW50IGludG8gdGhlIHN0cmVhbS4KK2NsYXNzIEh1bmsgeworIHB1YmxpYzoK
KyAgSHVuayhzaXplX3QgbGVmdF9zdGFydCwgc2l6ZV90IHJpZ2h0X3N0YXJ0KQorICAgICAgOiBs
ZWZ0X3N0YXJ0XyhsZWZ0X3N0YXJ0KSwKKyAgICAgICAgcmlnaHRfc3RhcnRfKHJpZ2h0X3N0YXJ0
KSwKKyAgICAgICAgYWRkc18oKSwKKyAgICAgICAgcmVtb3Zlc18oKSwKKyAgICAgICAgY29tbW9u
XygpIHt9CisKKyAgdm9pZCBQdXNoTGluZShjaGFyIGVkaXQsIGNvbnN0IGNoYXIqIGxpbmUpIHsK
KyAgICBzd2l0Y2ggKGVkaXQpIHsKKyAgICAgIGNhc2UgJyAnOgorICAgICAgICArK2NvbW1vbl87
CisgICAgICAgIEZsdXNoRWRpdHMoKTsKKyAgICAgICAgaHVua18ucHVzaF9iYWNrKHN0ZDo6bWFr
ZV9wYWlyKCcgJywgbGluZSkpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJy0nOgorICAg
ICAgICArK3JlbW92ZXNfOworICAgICAgICBodW5rX3JlbW92ZXNfLnB1c2hfYmFjayhzdGQ6Om1h
a2VfcGFpcignLScsIGxpbmUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICcrJzoKKyAg
ICAgICAgKythZGRzXzsKKyAgICAgICAgaHVua19hZGRzXy5wdXNoX2JhY2soc3RkOjptYWtlX3Bh
aXIoJysnLCBsaW5lKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgfQorCisgIHZvaWQgUHJp
bnRUbyhzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgUHJpbnRIZWFkZXIob3MpOworICAgIEZsdXNo
RWRpdHMoKTsKKyAgICBmb3IgKHN0ZDo6bGlzdDxzdGQ6OnBhaXI8Y2hhciwgY29uc3QgY2hhcio+
ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0KKyAgICAgICAgICAgICBodW5rXy5iZWdpbigpOworICAg
ICAgICAgaXQgIT0gaHVua18uZW5kKCk7ICsraXQpIHsKKyAgICAgICpvcyA8PCBpdC0+Zmlyc3Qg
PDwgaXQtPnNlY29uZCA8PCAiXG4iOworICAgIH0KKyAgfQorCisgIGJvb2wgaGFzX2VkaXRzKCkg
Y29uc3QgeyByZXR1cm4gYWRkc18gfHwgcmVtb3Zlc187IH0KKworIHByaXZhdGU6CisgIHZvaWQg
Rmx1c2hFZGl0cygpIHsKKyAgICBodW5rXy5zcGxpY2UoaHVua18uZW5kKCksIGh1bmtfcmVtb3Zl
c18pOworICAgIGh1bmtfLnNwbGljZShodW5rXy5lbmQoKSwgaHVua19hZGRzXyk7CisgIH0KKwor
ICAvLyBQcmludCBhIHVuaWZpZWQgZGlmZiBoZWFkZXIgZm9yIG9uZSBodW5rLgorICAvLyBUaGUg
Zm9ybWF0IGlzCisgIC8vICAgIkBAIC08bGVmdF9zdGFydD4sPGxlZnRfbGVuZ3RoPiArPHJpZ2h0
X3N0YXJ0Piw8cmlnaHRfbGVuZ3RoPiBAQCIKKyAgLy8gd2hlcmUgdGhlIGxlZnQvcmlnaHQgcGFy
dHMgYXJlIG9taXR0ZWQgaWYgdW5uZWNlc3NhcnkuCisgIHZvaWQgUHJpbnRIZWFkZXIoc3RkOjpv
c3RyZWFtKiBzcykgY29uc3QgeworICAgICpzcyA8PCAiQEAgIjsKKyAgICBpZiAocmVtb3Zlc18p
IHsKKyAgICAgICpzcyA8PCAiLSIgPDwgbGVmdF9zdGFydF8gPDwgIiwiIDw8IChyZW1vdmVzXyAr
IGNvbW1vbl8pOworICAgIH0KKyAgICBpZiAocmVtb3Zlc18gJiYgYWRkc18pIHsKKyAgICAgICpz
cyA8PCAiICI7CisgICAgfQorICAgIGlmIChhZGRzXykgeworICAgICAgKnNzIDw8ICIrIiA8PCBy
aWdodF9zdGFydF8gPDwgIiwiIDw8IChhZGRzXyArIGNvbW1vbl8pOworICAgIH0KKyAgICAqc3Mg
PDwgIiBAQFxuIjsKKyAgfQorCisgIHNpemVfdCBsZWZ0X3N0YXJ0XywgcmlnaHRfc3RhcnRfOwor
ICBzaXplX3QgYWRkc18sIHJlbW92ZXNfLCBjb21tb25fOworICBzdGQ6Omxpc3Q8c3RkOjpwYWly
PGNoYXIsIGNvbnN0IGNoYXIqPiA+IGh1bmtfLCBodW5rX2FkZHNfLCBodW5rX3JlbW92ZXNfOwor
fTsKKworfSAgLy8gbmFtZXNwYWNlCisKKy8vIENyZWF0ZSBhIGxpc3Qgb2YgZGlmZiBodW5rcyBp
biBVbmlmaWVkIGRpZmYgZm9ybWF0LgorLy8gRWFjaCBodW5rIGhhcyBhIGhlYWRlciBnZW5lcmF0
ZWQgYnkgUHJpbnRIZWFkZXIgYWJvdmUgcGx1cyBhIGJvZHkgd2l0aAorLy8gbGluZXMgcHJlZml4
ZWQgd2l0aCAnICcgZm9yIG5vIGNoYW5nZSwgJy0nIGZvciBkZWxldGlvbiBhbmQgJysnIGZvcgor
Ly8gYWRkaXRpb24uCisvLyAnY29udGV4dCcgcmVwcmVzZW50cyB0aGUgZGVzaXJlZCB1bmNoYW5n
ZWQgcHJlZml4L3N1ZmZpeCBhcm91bmQgdGhlIGRpZmYuCisvLyBJZiB0d28gaHVua3MgYXJlIGNs
b3NlIGVub3VnaCB0aGF0IHRoZWlyIGNvbnRleHRzIG92ZXJsYXAsIHRoZW4gdGhleSBhcmUKKy8v
IGpvaW5lZCBpbnRvIG9uZSBodW5rLgorc3RkOjpzdHJpbmcgQ3JlYXRlVW5pZmllZERpZmYoY29u
c3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBsZWZ0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiByaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb250ZXh0KSB7CisgIGNvbnN0IHN0ZDo6dmVj
dG9yPEVkaXRUeXBlPiBlZGl0cyA9IENhbGN1bGF0ZU9wdGltYWxFZGl0cyhsZWZ0LCByaWdodCk7
CisKKyAgc2l6ZV90IGxfaSA9IDAsIHJfaSA9IDAsIGVkaXRfaSA9IDA7CisgIHN0ZDo6c3RyaW5n
c3RyZWFtIHNzOworICB3aGlsZSAoZWRpdF9pIDwgZWRpdHMuc2l6ZSgpKSB7CisgICAgLy8gRmlu
ZCBmaXJzdCBlZGl0LgorICAgIHdoaWxlIChlZGl0X2kgPCBlZGl0cy5zaXplKCkgJiYgZWRpdHNb
ZWRpdF9pXSA9PSBrTWF0Y2gpIHsKKyAgICAgICsrbF9pOworICAgICAgKytyX2k7CisgICAgICAr
K2VkaXRfaTsKKyAgICB9CisKKyAgICAvLyBGaW5kIHRoZSBmaXJzdCBsaW5lIHRvIGluY2x1ZGUg
aW4gdGhlIGh1bmsuCisgICAgY29uc3Qgc2l6ZV90IHByZWZpeF9jb250ZXh0ID0gc3RkOjptaW4o
bF9pLCBjb250ZXh0KTsKKyAgICBIdW5rIGh1bmsobF9pIC0gcHJlZml4X2NvbnRleHQgKyAxLCBy
X2kgLSBwcmVmaXhfY29udGV4dCArIDEpOworICAgIGZvciAoc2l6ZV90IGkgPSBwcmVmaXhfY29u
dGV4dDsgaSA+IDA7IC0taSkgeworICAgICAgaHVuay5QdXNoTGluZSgnICcsIGxlZnRbbF9pIC0g
aV0uY19zdHIoKSk7CisgICAgfQorCisgICAgLy8gSXRlcmF0ZSB0aGUgZWRpdHMgdW50aWwgd2Ug
Zm91bmQgZW5vdWdoIHN1ZmZpeCBmb3IgdGhlIGh1bmsgb3IgdGhlIGlucHV0CisgICAgLy8gaXMg
b3Zlci4KKyAgICBzaXplX3Qgbl9zdWZmaXggPSAwOworICAgIGZvciAoOyBlZGl0X2kgPCBlZGl0
cy5zaXplKCk7ICsrZWRpdF9pKSB7CisgICAgICBpZiAobl9zdWZmaXggPj0gY29udGV4dCkgewor
ICAgICAgICAvLyBDb250aW51ZSBvbmx5IGlmIHRoZSBuZXh0IGh1bmsgaXMgdmVyeSBjbG9zZS4K
KyAgICAgICAgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGVkaXRz
LmJlZ2luKCkgKyBlZGl0X2k7CisgICAgICAgIHdoaWxlIChpdCAhPSBlZGl0cy5lbmQoKSAmJiAq
aXQgPT0ga01hdGNoKSArK2l0OworICAgICAgICBpZiAoaXQgPT0gZWRpdHMuZW5kKCkgfHwgKGl0
IC0gZWRpdHMuYmVnaW4oKSkgLSBlZGl0X2kgPj0gY29udGV4dCkgeworICAgICAgICAgIC8vIFRo
ZXJlIGlzIG5vIG5leHQgZWRpdCBvciBpdCBpcyB0b28gZmFyIGF3YXkuCisgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgRWRpdFR5cGUgZWRpdCA9IGVkaXRzW2Vk
aXRfaV07CisgICAgICAvLyBSZXNldCBjb3VudCB3aGVuIGEgbm9uIG1hdGNoIGlzIGZvdW5kLgor
ICAgICAgbl9zdWZmaXggPSBlZGl0ID09IGtNYXRjaCA/IG5fc3VmZml4ICsgMSA6IDA7CisKKyAg
ICAgIGlmIChlZGl0ID09IGtNYXRjaCB8fCBlZGl0ID09IGtSZW1vdmUgfHwgZWRpdCA9PSBrUmVw
bGFjZSkgeworICAgICAgICBodW5rLlB1c2hMaW5lKGVkaXQgPT0ga01hdGNoID8gJyAnIDogJy0n
LCBsZWZ0W2xfaV0uY19zdHIoKSk7CisgICAgICB9CisgICAgICBpZiAoZWRpdCA9PSBrQWRkIHx8
IGVkaXQgPT0ga1JlcGxhY2UpIHsKKyAgICAgICAgaHVuay5QdXNoTGluZSgnKycsIHJpZ2h0W3Jf
aV0uY19zdHIoKSk7CisgICAgICB9CisKKyAgICAgIC8vIEFkdmFuY2UgaW5kaWNlcywgZGVwZW5k
aW5nIG9uIGVkaXQgdHlwZS4KKyAgICAgIGxfaSArPSBlZGl0ICE9IGtBZGQ7CisgICAgICByX2kg
Kz0gZWRpdCAhPSBrUmVtb3ZlOworICAgIH0KKworICAgIGlmICghaHVuay5oYXNfZWRpdHMoKSkg
eworICAgICAgLy8gV2UgYXJlIGRvbmUuIFdlIGRvbid0IHdhbnQgdGhpcyBodW5rLgorICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgaHVuay5QcmludFRvKCZzcyk7CisgIH0KKyAgcmV0dXJuIHNz
LnN0cigpOworfQorCit9ICAvLyBuYW1lc3BhY2UgZWRpdF9kaXN0YW5jZQorCituYW1lc3BhY2Ug
eworCisvLyBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2YWx1ZXMgcmVjZWl2ZWQg
aW4gRXFGYWlsdXJlKCkgYXJlIGFscmVhZHkKKy8vIGVzY2FwZWQuIFNwbGl0IHRoZW0gb24gZXNj
YXBlZCAnXG4nIGJvdW5kYXJpZXMuIExlYXZlIGFsbCBvdGhlciBlc2NhcGVkCisvLyBjaGFyYWN0
ZXJzIHRoZSBzYW1lLgorc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IFNwbGl0RXNjYXBlZFN0cmlu
Zyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBs
aW5lczsKKyAgc2l6ZV90IHN0YXJ0ID0gMCwgZW5kID0gc3RyLnNpemUoKTsKKyAgaWYgKGVuZCA+
IDIgJiYgc3RyWzBdID09ICciJyAmJiBzdHJbZW5kIC0gMV0gPT0gJyInKSB7CisgICAgKytzdGFy
dDsKKyAgICAtLWVuZDsKKyAgfQorICBib29sIGVzY2FwZWQgPSBmYWxzZTsKKyAgZm9yIChzaXpl
X3QgaSA9IHN0YXJ0OyBpICsgMSA8IGVuZDsgKytpKSB7CisgICAgaWYgKGVzY2FwZWQpIHsKKyAg
ICAgIGVzY2FwZWQgPSBmYWxzZTsKKyAgICAgIGlmIChzdHJbaV0gPT0gJ24nKSB7CisgICAgICAg
IGxpbmVzLnB1c2hfYmFjayhzdHIuc3Vic3RyKHN0YXJ0LCBpIC0gc3RhcnQgLSAxKSk7CisgICAg
ICAgIHN0YXJ0ID0gaSArIDE7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIGVzY2FwZWQg
PSBzdHJbaV0gPT0gJ1xcJzsKKyAgICB9CisgIH0KKyAgbGluZXMucHVzaF9iYWNrKHN0ci5zdWJz
dHIoc3RhcnQsIGVuZCAtIHN0YXJ0KSk7CisgIHJldHVybiBsaW5lczsKK30KKworfSAgLy8gbmFt
ZXNwYWNlCisKIC8vIENvbnN0cnVjdHMgYW5kIHJldHVybnMgdGhlIG1lc3NhZ2UgZm9yIGFuIGVx
dWFsaXR5IGFzc2VydGlvbgogLy8gKGUuZy4gQVNTRVJUX0VRLCBFWFBFQ1RfU1RSRVEsIGV0Yykg
ZmFpbHVyZS4KIC8vCkBAIC0xMDAyLDQxICsxMzQ1LDU0IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7
CiAvLyBhbmQgdGhlaXIgdmFsdWVzLCBhcyBzdHJpbmdzLiAgRm9yIGV4YW1wbGUsIGZvciBBU1NF
UlRfRVEoZm9vLCBiYXIpCiAvLyB3aGVyZSBmb28gaXMgNSBhbmQgYmFyIGlzIDYsIHdlIGhhdmU6
CiAvLwotLy8gICBleHBlY3RlZF9leHByZXNzaW9uOiAiZm9vIgotLy8gICBhY3R1YWxfZXhwcmVz
c2lvbjogICAiYmFyIgotLy8gICBleHBlY3RlZF92YWx1ZTogICAgICAiNSIKLS8vICAgYWN0dWFs
X3ZhbHVlOiAgICAgICAgIjYiCisvLyAgIGxoc19leHByZXNzaW9uOiAiZm9vIgorLy8gICByaHNf
ZXhwcmVzc2lvbjogImJhciIKKy8vICAgbGhzX3ZhbHVlOiAgICAgICI1IgorLy8gICByaHNfdmFs
dWU6ICAgICAgIjYiCiAvLwogLy8gVGhlIGlnbm9yaW5nX2Nhc2UgcGFyYW1ldGVyIGlzIHRydWUg
aWZmIHRoZSBhc3NlcnRpb24gaXMgYQotLy8gKl9TVFJDQVNFRVEqLiAgV2hlbiBpdCdzIHRydWUs
IHRoZSBzdHJpbmcgIiAoaWdub3JpbmcgY2FzZSkiIHdpbGwKKy8vICpfU1RSQ0FTRUVRKi4gIFdo
ZW4gaXQncyB0cnVlLCB0aGUgc3RyaW5nICJJZ25vcmluZyBjYXNlIiB3aWxsCiAvLyBiZSBpbnNl
cnRlZCBpbnRvIHRoZSBtZXNzYWdlLgotQXNzZXJ0aW9uUmVzdWx0IEVxRmFpbHVyZShjb25zdCBj
aGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBleHBlY3RlZF92YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBhY3R1YWxfdmFsdWUsCitBc3NlcnRpb25SZXN1bHQgRXFGYWlsdXJlKGNvbnN0
IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIGxoc192YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHJoc192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25v
cmluZ19jYXNlKSB7CiAgIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgIlZhbHVlIG9mOiAiIDw8IGFj
dHVhbF9leHByZXNzaW9uOwotICBpZiAoYWN0dWFsX3ZhbHVlICE9IGFjdHVhbF9leHByZXNzaW9u
KSB7Ci0gICAgbXNnIDw8ICJcbiAgQWN0dWFsOiAiIDw8IGFjdHVhbF92YWx1ZTsKKyAgbXNnIDw8
ICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6IjsKKyAgbXNnIDw8ICJcbiAgIiA8
PCBsaHNfZXhwcmVzc2lvbjsKKyAgaWYgKGxoc192YWx1ZSAhPSBsaHNfZXhwcmVzc2lvbikgewor
ICAgIG1zZyA8PCAiXG4gICAgV2hpY2ggaXM6ICIgPDwgbGhzX3ZhbHVlOworICB9CisgIG1zZyA8
PCAiXG4gICIgPDwgcmhzX2V4cHJlc3Npb247CisgIGlmIChyaHNfdmFsdWUgIT0gcmhzX2V4cHJl
c3Npb24pIHsKKyAgICBtc2cgPDwgIlxuICAgIFdoaWNoIGlzOiAiIDw8IHJoc192YWx1ZTsKICAg
fQogCi0gIG1zZyA8PCAiXG5FeHBlY3RlZDogIiA8PCBleHBlY3RlZF9leHByZXNzaW9uOwogICBp
ZiAoaWdub3JpbmdfY2FzZSkgewotICAgIG1zZyA8PCAiIChpZ25vcmluZyBjYXNlKSI7CisgICAg
bXNnIDw8ICJcbklnbm9yaW5nIGNhc2UiOwogICB9Ci0gIGlmIChleHBlY3RlZF92YWx1ZSAhPSBl
eHBlY3RlZF9leHByZXNzaW9uKSB7Ci0gICAgbXNnIDw8ICJcbldoaWNoIGlzOiAiIDw8IGV4cGVj
dGVkX3ZhbHVlOworCisgIGlmICghbGhzX3ZhbHVlLmVtcHR5KCkgJiYgIXJoc192YWx1ZS5lbXB0
eSgpKSB7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGxoc19saW5lcyA9Cisg
ICAgICAgIFNwbGl0RXNjYXBlZFN0cmluZyhsaHNfdmFsdWUpOworICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiByaHNfbGluZXMgPQorICAgICAgICBTcGxpdEVzY2FwZWRTdHJpbmco
cmhzX3ZhbHVlKTsKKyAgICBpZiAobGhzX2xpbmVzLnNpemUoKSA+IDEgfHwgcmhzX2xpbmVzLnNp
emUoKSA+IDEpIHsKKyAgICAgIG1zZyA8PCAiXG5XaXRoIGRpZmY6XG4iCisgICAgICAgICAgPDwg
ZWRpdF9kaXN0YW5jZTo6Q3JlYXRlVW5pZmllZERpZmYobGhzX2xpbmVzLCByaHNfbGluZXMpOwor
ICAgIH0KICAgfQogCi0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIHJldHVybiBB
c3NlcnRpb25GYWlsdXJlKCkgPDwgbXNnOwogfQogCiAvLyBDb25zdHJ1Y3RzIGEgZmFpbHVyZSBt
ZXNzYWdlIGZvciBCb29sZWFuIGFzc2VydGlvbnMgc3VjaCBhcyBFWFBFQ1RfVFJVRS4KLVN0cmlu
ZyBHZXRCb29sQXNzZXJ0aW9uRmFpbHVyZU1lc3NhZ2UoY29uc3QgQXNzZXJ0aW9uUmVzdWx0JiBh
c3NlcnRpb25fcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBleHByZXNzaW9uX3RleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9wcmVkaWNhdGVfdmFsdWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkX3ByZWRpY2F0
ZV92YWx1ZSkgeworc3RkOjpzdHJpbmcgR2V0Qm9vbEFzc2VydGlvbkZhaWx1cmVNZXNzYWdlKAor
ICAgIGNvbnN0IEFzc2VydGlvblJlc3VsdCYgYXNzZXJ0aW9uX3Jlc3VsdCwKKyAgICBjb25zdCBj
aGFyKiBleHByZXNzaW9uX3RleHQsCisgICAgY29uc3QgY2hhciogYWN0dWFsX3ByZWRpY2F0ZV92
YWx1ZSwKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZF9wcmVkaWNhdGVfdmFsdWUpIHsKICAgY29u
c3QgY2hhciogYWN0dWFsX21lc3NhZ2UgPSBhc3NlcnRpb25fcmVzdWx0Lm1lc3NhZ2UoKTsKICAg
TWVzc2FnZSBtc2c7CiAgIG1zZyA8PCAiVmFsdWUgb2Y6ICIgPDwgZXhwcmVzc2lvbl90ZXh0CkBA
IC0xMDU3LDE1ICsxNDEzLDE0IEBAIEFzc2VydGlvblJlc3VsdCBEb3VibGVOZWFyUHJlZEZvcm1h
dChjb25zdCBjaGFyKiBleHByMSwKICAgY29uc3QgZG91YmxlIGRpZmYgPSBmYWJzKHZhbDEgLSB2
YWwyKTsKICAgaWYgKGRpZmYgPD0gYWJzX2Vycm9yKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2Vzcygp
OwogCi0gIC8vIFRPRE8od2FuKTogZG8gbm90IHByaW50IHRoZSB2YWx1ZSBvZiBhbiBleHByZXNz
aW9uIGlmIGl0J3MKKyAgLy8gRklYTUU6IGRvIG5vdCBwcmludCB0aGUgdmFsdWUgb2YgYW4gZXhw
cmVzc2lvbiBpZiBpdCdzCiAgIC8vIGFscmVhZHkgYSBsaXRlcmFsLgotICBNZXNzYWdlIG1zZzsK
LSAgbXNnIDw8ICJUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuICIgPDwgZXhwcjEgPDwgIiBhbmQgIiA8
PCBleHByMgorICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCAiVGhlIGRpZmZl
cmVuY2UgYmV0d2VlbiAiIDw8IGV4cHIxIDw8ICIgYW5kICIgPDwgZXhwcjIKICAgICAgIDw8ICIg
aXMgIiA8PCBkaWZmIDw8ICIsIHdoaWNoIGV4Y2VlZHMgIiA8PCBhYnNfZXJyb3JfZXhwciA8PCAi
LCB3aGVyZVxuIgogICAgICAgPDwgZXhwcjEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2YWwxIDw8
ICIsXG4iCiAgICAgICA8PCBleHByMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHZhbDIgPDwgIiwg
YW5kXG4iCiAgICAgICA8PCBhYnNfZXJyb3JfZXhwciA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IGFi
c19lcnJvciA8PCAiLiI7Ci0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIApA
QCAtMTA5MCwyMCArMTQ0NSwxOCBAQCBBc3NlcnRpb25SZXN1bHQgRmxvYXRpbmdQb2ludExFKGNv
bnN0IGNoYXIqIGV4cHIxLAogICAvLyB2YWwyIGlzIE5hTiwgYXMgdGhlIElFRUUgZmxvYXRpbmct
cG9pbnQgc3RhbmRhcmQgcmVxdWlyZXMgdGhhdAogICAvLyBhbnkgcHJlZGljYXRlIGludm9sdmlu
ZyBhIE5hTiBtdXN0IHJldHVybiBmYWxzZS4KIAotICBTdHJTdHJlYW0gdmFsMV9zczsKKyAgOjpz
dGQ6OnN0cmluZ3N0cmVhbSB2YWwxX3NzOwogICB2YWwxX3NzIDw8IHN0ZDo6c2V0cHJlY2lzaW9u
KHN0ZDo6bnVtZXJpY19saW1pdHM8UmF3VHlwZT46OmRpZ2l0czEwICsgMikKICAgICAgICAgICA8
PCB2YWwxOwogCi0gIFN0clN0cmVhbSB2YWwyX3NzOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHZh
bDJfc3M7CiAgIHZhbDJfc3MgPDwgc3RkOjpzZXRwcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0
czxSYXdUeXBlPjo6ZGlnaXRzMTAgKyAyKQogICAgICAgICAgIDw8IHZhbDI7CiAKLSAgTWVzc2Fn
ZSBtc2c7Ci0gIG1zZyA8PCAiRXhwZWN0ZWQ6ICgiIDw8IGV4cHIxIDw8ICIpIDw9ICgiIDw8IGV4
cHIyIDw8ICIpXG4iCi0gICAgICA8PCAiICBBY3R1YWw6ICIgPDwgU3RyU3RyZWFtVG9TdHJpbmco
JnZhbDFfc3MpIDw8ICIgdnMgIgotICAgICAgPDwgU3RyU3RyZWFtVG9TdHJpbmcoJnZhbDJfc3Mp
OwotCi0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIHJldHVybiBBc3NlcnRpb25G
YWlsdXJlKCkKKyAgICAgIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgPD0gKCIgPDwg
ZXhwcjIgPDwgIilcbiIKKyAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBTdHJpbmdTdHJlYW1Ub1N0
cmluZygmdmFsMV9zcykgPDwgIiB2cyAiCisgICAgICA8PCBTdHJpbmdTdHJlYW1Ub1N0cmluZygm
dmFsMl9zcyk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbApAQCAtMTEyNiwxOCArMTQ3
OSwxOCBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZv
ciB7QVNTRVJUfEVYUEVDVH1fRVEgd2l0aCBpbnQgb3IgZW51bQogLy8gYXJndW1lbnRzLgotQXNz
ZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBleHBlY3RlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGFjdHVhbCkgewotICBpZiAoZXhw
ZWN0ZWQgPT0gYWN0dWFsKSB7CitBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRVEoY29uc3QgY2hh
ciogbGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdElu
dCBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCByaHMpIHsKKyAg
aWYgKGxocyA9PSByaHMpIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9CiAK
LSAgcmV0dXJuIEVxRmFpbHVyZShleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAg
ICAgIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBh
cmlzb25GYWlsdXJlTWVzc2FnZShleHBlY3RlZCwgYWN0dWFsKSwKLSAgICAgICAgICAgICAgICAg
ICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoYWN0dWFsLCBleHBlY3RlZCksCisg
IHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgcmhz
X2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1
cmVNZXNzYWdlKGxocywgcmhzKSwKKyAgICAgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2UocmhzLCBsaHMpLAogICAgICAgICAgICAgICAgICAgIGZhbHNlKTsK
IH0KIApAQCAtMTE1MCwxMSArMTUwMywxMCBAQCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyIyNv
cF9uYW1lKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwgXAogICBpZiAodmFs
MSBvcCB2YWwyKSB7XAogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7XAogICB9IGVsc2Ug
e1wKLSAgICBNZXNzYWdlIG1zZztcCi0gICAgbXNnIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEg
PDwgIikgIiAjb3AgIiAoIiA8PCBleHByMlwKKyAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgp
IFwKKyAgICAgICAgPDwgIkV4cGVjdGVkOiAoIiA8PCBleHByMSA8PCAiKSAiICNvcCAiICgiIDw8
IGV4cHIyXAogICAgICAgICA8PCAiKSwgYWN0dWFsOiAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZSh2YWwxLCB2YWwyKVwKICAgICAgICAgPDwgIiB2cyAiIDw8IEZvcm1hdEZv
ckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSh2YWwyLCB2YWwxKTtcCi0gICAgcmV0dXJuIEFzc2Vy
dGlvbkZhaWx1cmUobXNnKTtcCiAgIH1cCiB9CiAKQEAgLTExNzcsMzQgKzE1MjksMzQgQEAgR1RF
U1RfSU1QTF9DTVBfSEVMUEVSXyhHVCwgPiApCiAjdW5kZWYgR1RFU1RfSU1QTF9DTVBfSEVMUEVS
XwogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fU1RSRVEuCi1B
c3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVz
c2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxf
ZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBl
eHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1
YWwpIHsKLSAgaWYgKFN0cmluZzo6Q1N0cmluZ0VxdWFscyhleHBlY3RlZCwgYWN0dWFsKSkgewor
QXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNz
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxocywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHMpIHsKKyAgaWYgKFN0
cmluZzo6Q1N0cmluZ0VxdWFscyhsaHMsIHJocykpIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3Vj
Y2VzcygpOwogICB9CiAKLSAgcmV0dXJuIEVxRmFpbHVyZShleHBlY3RlZF9leHByZXNzaW9uLAot
ICAgICAgICAgICAgICAgICAgIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAg
IFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQoZXhwZWN0ZWQpLAotICAgICAgICAgICAgICAgICAg
IFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQoYWN0dWFsKSwKKyAgcmV0dXJuIEVxRmFpbHVyZShs
aHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICByaHNfZXhwcmVzc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKGxocyksCisgICAgICAgICAgICAgICAgICAgUHJp
bnRUb1N0cmluZyhyaHMpLAogICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKIH0KIAogLy8gVGhl
IGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NUUkNBU0VFUS4KLUFzc2VydGlv
blJlc3VsdCBDbXBIZWxwZXJTVFJDQVNFRVEoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFs
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBhY3R1YWwpIHsKLSAgaWYgKFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFs
cyhleHBlY3RlZCwgYWN0dWFsKSkgeworQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VF
UShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxocywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogcmhzKSB7CisgIGlmIChTdHJpbmc6OkNhc2VJbnNlbnNp
dGl2ZUNTdHJpbmdFcXVhbHMobGhzLCByaHMpKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nl
c3MoKTsKICAgfQogCi0gIHJldHVybiBFcUZhaWx1cmUoZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBT
dHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAgICAgICBT
dHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKGFjdHVhbCksCisgIHJldHVybiBFcUZhaWx1cmUobGhz
X2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAg
ICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhsaHMpLAorICAgICAgICAgICAgICAgICAgIFByaW50
VG9TdHJpbmcocmhzKSwKICAgICAgICAgICAgICAgICAgICB0cnVlKTsKIH0KIApAQCAtMTIxNiwx
MSArMTU2OCw5IEBAIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJORShjb25zdCBjaGFyKiBz
MV9leHByZXNzaW9uLAogICBpZiAoIVN0cmluZzo6Q1N0cmluZ0VxdWFscyhzMSwgczIpKSB7CiAg
ICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfSBlbHNlIHsKLSAgICBNZXNzYWdlIG1z
ZzsKLSAgICBtc2cgPDwgIkV4cGVjdGVkOiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgi
Ci0gICAgICAgIDw8IHMyX2V4cHJlc3Npb24gPDwgIiksIGFjdHVhbDogXCIiCi0gICAgICAgIDw8
IHMxIDw8ICJcIiB2cyBcIiIgPDwgczIgPDwgIlwiIjsKLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFp
bHVyZShtc2cpOworICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgIkV4cGVjdGVkOiAo
IiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8PCBzMl9leHByZXNzaW9uIDw8ICIpLCBhY3R1YWw6IFwiIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgczEgPDwgIlwiIHZzIFwiIiA8PCBzMiA8PCAiXCIiOwogICB9CiB9
CiAKQEAgLTEyMzIsMTEgKzE1ODIsMTAgQEAgQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNB
U0VORShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAogICBpZiAoIVN0cmluZzo6Q2FzZUluc2Vu
c2l0aXZlQ1N0cmluZ0VxdWFscyhzMSwgczIpKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nl
c3MoKTsKICAgfSBlbHNlIHsKLSAgICBNZXNzYWdlIG1zZzsKLSAgICBtc2cgPDwgIkV4cGVjdGVk
OiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgiCisgICAgcmV0dXJuIEFzc2VydGlvbkZh
aWx1cmUoKQorICAgICAgICA8PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4cHJlc3Npb24gPDwgIikg
IT0gKCIKICAgICAgICAgPDwgczJfZXhwcmVzc2lvbiA8PCAiKSAoaWdub3JpbmcgY2FzZSksIGFj
dHVhbDogXCIiCiAgICAgICAgIDw8IHMxIDw8ICJcIiB2cyBcIiIgPDwgczIgPDwgIlwiIjsKLSAg
ICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogICB9CiB9CiAKQEAgLTEyODUsMTMgKzE2
MzQsMTIgQEAgQXNzZXJ0aW9uUmVzdWx0IElzU3Vic3RyaW5nSW1wbCgKIAogICBjb25zdCBib29s
IGlzX3dpZGVfc3RyaW5nID0gc2l6ZW9mKG5lZWRsZVswXSkgPiAxOwogICBjb25zdCBjaGFyKiBj
b25zdCBiZWdpbl9zdHJpbmdfcXVvdGUgPSBpc193aWRlX3N0cmluZyA/ICJMXCIiIDogIlwiIjsK
LSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoCi0gICAgICBNZXNzYWdlKCkKKyAgcmV0dXJuIEFz
c2VydGlvbkZhaWx1cmUoKQogICAgICAgPDwgIlZhbHVlIG9mOiAiIDw8IG5lZWRsZV9leHByIDw8
ICJcbiIKICAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBiZWdpbl9zdHJpbmdfcXVvdGUgPDwgbmVl
ZGxlIDw8ICJcIlxuIgogICAgICAgPDwgIkV4cGVjdGVkOiAiIDw8IChleHBlY3RlZF90b19iZV9z
dWJzdHJpbmcgPyAiIiA6ICJub3QgIikKICAgICAgIDw8ICJhIHN1YnN0cmluZyBvZiAiIDw8IGhh
eXN0YWNrX2V4cHIgPDwgIlxuIgotICAgICAgPDwgIldoaWNoIGlzOiAiIDw8IGJlZ2luX3N0cmlu
Z19xdW90ZSA8PCBoYXlzdGFjayA8PCAiXCIiKTsKKyAgICAgIDw8ICJXaGljaCBpczogIiA8PCBi
ZWdpbl9zdHJpbmdfcXVvdGUgPDwgaGF5c3RhY2sgPDwgIlwiIjsKIH0KIAogfSAgLy8gbmFtZXNw
YWNlCkBAIC0xMzYwLDE2ICsxNzA4LDE5IEBAIG5hbWVzcGFjZSB7CiBBc3NlcnRpb25SZXN1bHQg
SFJFU1VMVEZhaWx1cmVIZWxwZXIoY29uc3QgY2hhciogZXhwciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHBlY3RlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb25nIGhyKSB7ICAvLyBOT0xJTlQKLSNpZiBHVEVTVF9P
U19XSU5ET1dTX01PQklMRQorIyBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRSB8fCBHVEVTVF9P
U19XSU5ET1dTX1RWX1RJVExFCisKICAgLy8gV2luZG93cyBDRSBkb2Vzbid0IHN1cHBvcnQgRm9y
bWF0TWVzc2FnZS4KICAgY29uc3QgY2hhciBlcnJvcl90ZXh0W10gPSAiIjsKLSNlbHNlCisKKyMg
ZWxzZQorCiAgIC8vIExvb2tzIHVwIHRoZSBodW1hbi1yZWFkYWJsZSBzeXN0ZW0gbWVzc2FnZSBm
b3IgdGhlIEhSRVNVTFQgY29kZQogICAvLyBhbmQgc2luY2Ugd2UncmUgbm90IHBhc3NpbmcgYW55
IHBhcmFtcyB0byBGb3JtYXRNZXNzYWdlLCB3ZSBkb24ndAogICAvLyB3YW50IGluc2VydHMgZXhw
YW5kZWQuCiAgIGNvbnN0IERXT1JEIGtGbGFncyA9IEZPUk1BVF9NRVNTQUdFX0ZST01fU1lTVEVN
IHwKICAgICAgICAgICAgICAgICAgICAgICAgRk9STUFUX01FU1NBR0VfSUdOT1JFX0lOU0VSVFM7
Ci0gIGNvbnN0IERXT1JEIGtCdWZTaXplID0gNDA5NjsgIC8vIFN0cmluZzo6Rm9ybWF0IGNhbid0
IGV4Y2VlZCB0aGlzIGxlbmd0aC4KKyAgY29uc3QgRFdPUkQga0J1ZlNpemUgPSA0MDk2OwogICAv
LyBHZXRzIHRoZSBzeXN0ZW0ncyBodW1hbiByZWFkYWJsZSBtZXNzYWdlIHN0cmluZyBmb3IgdGhp
cyBIUkVTVUxULgogICBjaGFyIGVycm9yX3RleHRba0J1ZlNpemVdID0geyAnXDAnIH07CiAgIERX
T1JEIG1lc3NhZ2VfbGVuZ3RoID0gOjpGb3JtYXRNZXNzYWdlQShrRmxhZ3MsCkBAIC0xMzc5LDE5
ICsxNzMwLDE4IEBAIEFzc2VydGlvblJlc3VsdCBIUkVTVUxURmFpbHVyZUhlbHBlcihjb25zdCBj
aGFyKiBleHByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJy
b3JfdGV4dCwgIC8vIG91dHB1dCBidWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtCdWZTaXplLCAgLy8gYnVmIHNpemUKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOyAgLy8gbm8gYXJndW1lbnRzIGZvciBpbnNlcnRz
Ci0gIC8vIFRyaW1zIHRhaWxpbmcgd2hpdGUgc3BhY2UgKEZvcm1hdE1lc3NhZ2UgbGVhdmVzIGEg
dHJhaWxpbmcgY3ItbGYpCi0gIGZvciAoOyBtZXNzYWdlX2xlbmd0aCAmJiBpc3NwYWNlKGVycm9y
X3RleHRbbWVzc2FnZV9sZW5ndGggLSAxXSk7CisgIC8vIFRyaW1zIHRhaWxpbmcgd2hpdGUgc3Bh
Y2UgKEZvcm1hdE1lc3NhZ2UgbGVhdmVzIGEgdHJhaWxpbmcgQ1ItTEYpCisgIGZvciAoOyBtZXNz
YWdlX2xlbmd0aCAmJiBJc1NwYWNlKGVycm9yX3RleHRbbWVzc2FnZV9sZW5ndGggLSAxXSk7CiAg
ICAgICAgICAgLS1tZXNzYWdlX2xlbmd0aCkgewogICAgIGVycm9yX3RleHRbbWVzc2FnZV9sZW5n
dGggLSAxXSA9ICdcMCc7CiAgIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
IAotICBjb25zdCBTdHJpbmcgZXJyb3JfaGV4KFN0cmluZzo6Rm9ybWF0KCIweCUwOFggIiwgaHIp
KTsKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCAiRXhwZWN0ZWQ6ICIgPDwgZXhwciA8PCAiICIg
PDwgZXhwZWN0ZWQgPDwgIi5cbiIKLSAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBlcnJvcl9oZXgg
PDwgZXJyb3JfdGV4dCA8PCAiXG4iOworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKIAotICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIGNvbnN0
IHN0ZDo6c3RyaW5nIGVycm9yX2hleCgiMHgiICsgU3RyaW5nOjpGb3JtYXRIZXhJbnQoaHIpKTsK
KyAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCAiRXhwZWN0
ZWQ6ICIgPDwgZXhwciA8PCAiICIgPDwgZXhwZWN0ZWQgPDwgIi5cbiIKKyAgICAgIDw8ICIgIEFj
dHVhbDogIiA8PCBlcnJvcl9oZXggPDwgIiAiIDw8IGVycm9yX3RleHQgPDwgIlxuIjsKIH0KIAog
fSAgLy8gbmFtZXNwYWNlCkBAIC0xNDE1LDcgKzE3NjUsNyBAQCBBc3NlcnRpb25SZXN1bHQgSXNI
UkVTVUxURmFpbHVyZShjb25zdCBjaGFyKiBleHByLCBsb25nIGhyKSB7ICAvLyBOT0xJTlQKIC8v
IFV0aWxpdHkgZnVuY3Rpb25zIGZvciBlbmNvZGluZyBVbmljb2RlIHRleHQgKHdpZGUgc3RyaW5n
cykgaW4KIC8vIFVURi04LgogCi0vLyBBIFVuaWNvZGUgY29kZS1wb2ludCBjYW4gaGF2ZSB1cHRv
IDIxIGJpdHMsIGFuZCBpcyBlbmNvZGVkIGluIFVURi04CisvLyBBIFVuaWNvZGUgY29kZS1wb2lu
dCBjYW4gaGF2ZSB1cCB0byAyMSBiaXRzLCBhbmQgaXMgZW5jb2RlZCBpbiBVVEYtOAogLy8gbGlr
ZSB0aGlzOgogLy8KIC8vIENvZGUtcG9pbnQgbGVuZ3RoICAgRW5jb2RpbmcKQEAgLTE0NDgsMTIg
KzE3OTgsMTUgQEAgaW5saW5lIFVJbnQzMiBDaG9wTG93Qml0cyhVSW50MzIqIGJpdHMsIGludCBu
KSB7CiAvLyBDb252ZXJ0cyBhIFVuaWNvZGUgY29kZSBwb2ludCB0byBhIG5hcnJvdyBzdHJpbmcg
aW4gVVRGLTggZW5jb2RpbmcuCiAvLyBjb2RlX3BvaW50IHBhcmFtZXRlciBpcyBvZiB0eXBlIFVJ
bnQzMiBiZWNhdXNlIHdjaGFyX3QgbWF5IG5vdCBiZQogLy8gd2lkZSBlbm91Z2ggdG8gY29udGFp
biBhIGNvZGUgcG9pbnQuCi0vLyBUaGUgb3V0cHV0IGJ1ZmZlciBzdHIgbXVzdCBjb250YWludCBh
dCBsZWFzdCAzMiBjaGFyYWN0ZXJzLgotLy8gVGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIGFkZHJl
c3Mgb2YgdGhlIG91dHB1dCBidWZmZXIuCiAvLyBJZiB0aGUgY29kZV9wb2ludCBpcyBub3QgYSB2
YWxpZCBVbmljb2RlIGNvZGUgcG9pbnQKLS8vIChpLmUuIG91dHNpZGUgb2YgVW5pY29kZSByYW5n
ZSBVKzAgdG8gVSsxMEZGRkYpIGl0IHdpbGwgYmUgb3V0cHV0Ci0vLyBhcyAnKEludmFsaWQgVW5p
Y29kZSAweFhYWFhYWFhYKScuCi1jaGFyKiBDb2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9p
bnQsIGNoYXIqIHN0cikgeworLy8gKGkuZS4gb3V0c2lkZSBvZiBVbmljb2RlIHJhbmdlIFUrMCB0
byBVKzEwRkZGRikgaXQgd2lsbCBiZSBjb252ZXJ0ZWQKKy8vIHRvICIoSW52YWxpZCBVbmljb2Rl
IDB4WFhYWFhYWFgpIi4KK3N0ZDo6c3RyaW5nIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9w
b2ludCkgeworICBpZiAoY29kZV9wb2ludCA+IGtNYXhDb2RlUG9pbnQ0KSB7CisgICAgcmV0dXJu
ICIoSW52YWxpZCBVbmljb2RlIDB4IiArIFN0cmluZzo6Rm9ybWF0SGV4SW50KGNvZGVfcG9pbnQp
ICsgIikiOworICB9CisKKyAgY2hhciBzdHJbNV07ICAvLyBCaWcgZW5vdWdoIGZvciB0aGUgbGFy
Z2VzdCB2YWxpZCBjb2RlIHBvaW50LgogICBpZiAoY29kZV9wb2ludCA8PSBrTWF4Q29kZVBvaW50
MSkgewogICAgIHN0clsxXSA9ICdcMCc7CiAgICAgc3RyWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4o
Y29kZV9wb2ludCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAweHh4eHh4eApAQCAtMTQ2
NiwyNyArMTgxOSwxNyBAQCBjaGFyKiBDb2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQs
IGNoYXIqIHN0cikgewogICAgIHN0clsyXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgfCBDaG9w
TG93Qml0cygmY29kZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKICAgICBzdHJbMV0gPSBzdGF0
aWNfY2FzdDxjaGFyPigweDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVfcG9pbnQsIDYpKTsgIC8vIDEw
eHh4eHh4CiAgICAgc3RyWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHhFMCB8IGNvZGVfcG9pbnQp
OyAgICAgICAgICAgICAgICAgICAvLyAxMTEweHh4eAotICB9IGVsc2UgaWYgKGNvZGVfcG9pbnQg
PD0ga01heENvZGVQb2ludDQpIHsKKyAgfSBlbHNlIHsgIC8vIGNvZGVfcG9pbnQgPD0ga01heENv
ZGVQb2ludDQKICAgICBzdHJbNF0gPSAnXDAnOwogICAgIHN0clszXSA9IHN0YXRpY19jYXN0PGNo
YXI+KDB4ODAgfCBDaG9wTG93Qml0cygmY29kZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKICAg
ICBzdHJbMl0gPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVfcG9p
bnQsIDYpKTsgIC8vIDEweHh4eHh4CiAgICAgc3RyWzFdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHg4
MCB8IENob3BMb3dCaXRzKCZjb2RlX3BvaW50LCA2KSk7ICAvLyAxMHh4eHh4eAogICAgIHN0clsw
XSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4RjAgfCBjb2RlX3BvaW50KTsgICAgICAgICAgICAgICAg
ICAgLy8gMTExMTB4eHgKLSAgfSBlbHNlIHsKLSAgICAvLyBUaGUgbG9uZ2VzdCBzdHJpbmcgU3Ry
aW5nOjpGb3JtYXQgY2FuIHByb2R1Y2Ugd2hlbiBpbnZva2VkCi0gICAgLy8gd2l0aCB0aGVzZSBw
YXJhbWV0ZXJzIGlzIDI4IGNoYXJhY3RlciBsb25nIChub3QgaW5jbHVkaW5nCi0gICAgLy8gdGhl
IHRlcm1pbmF0aW5nIG51bCBjaGFyYWN0ZXIpLiBXZSBhcmUgYXNraW5nIGZvciAzMiBjaGFyYWN0
ZXIKLSAgICAvLyBidWZmZXIganVzdCBpbiBjYXNlLiBUaGlzIGlzIGFsc28gZW5vdWdoIGZvciBz
dHJuY3B5IHRvCi0gICAgLy8gbnVsbC10ZXJtaW5hdGUgdGhlIGRlc3RpbmF0aW9uIHN0cmluZy4K
LSAgICBwb3NpeDo6U3RyTkNweSgKLSAgICAgICAgc3RyLCBTdHJpbmc6OkZvcm1hdCgiKEludmFs
aWQgVW5pY29kZSAweCVYKSIsIGNvZGVfcG9pbnQpLmNfc3RyKCksIDMyKTsKLSAgICBzdHJbMzFd
ID0gJ1wwJzsgIC8vIE1ha2VzIHN1cmUgbm8gY2hhbmdlIGluIHRoZSBmb3JtYXQgdG8gc3RybmNw
eSBsZWF2ZXMKLSAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSByZXN1bHQgdW50ZXJtaW5hdGVk
LgogICB9CiAgIHJldHVybiBzdHI7CiB9CiAKLS8vIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9u
cyBvbmx5IG1ha2Ugc2Vuc2UgaWYgdGhlIHRoZSBzeXN0ZW0KKy8vIFRoZSBmb2xsb3dpbmcgdHdv
IGZ1bmN0aW9ucyBvbmx5IG1ha2Ugc2Vuc2UgaWYgdGhlIHN5c3RlbQogLy8gdXNlcyBVVEYtMTYg
Zm9yIHdpZGUgc3RyaW5nIGVuY29kaW5nLiBBbGwgc3VwcG9ydGVkIHN5c3RlbXMKIC8vIHdpdGgg
MTYgYml0IHdjaGFyX3QgKFdpbmRvd3MsIEN5Z3dpbiwgU3ltYmlhbiBPUykgZG8gdXNlIFVURi0x
Ni4KIApAQCAtMTUyMiwxMSArMTg2NSwxMSBAQCBpbmxpbmUgVUludDMyIENyZWF0ZUNvZGVQb2lu
dEZyb21VdGYxNlN1cnJvZ2F0ZVBhaXIod2NoYXJfdCBmaXJzdCwKIC8vIGFzICcoSW52YWxpZCBV
bmljb2RlIDB4WFhYWFhYWFgpJy4gSWYgdGhlIHN0cmluZyBpcyBpbiBVVEYxNiBlbmNvZGluZwog
Ly8gYW5kIGNvbnRhaW5zIGludmFsaWQgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycywgdmFsdWVzIGlu
IHRob3NlIHBhaXJzCiAvLyB3aWxsIGJlIGVuY29kZWQgYXMgaW5kaXZpZHVhbCBVbmljb2RlIGNo
YXJhY3RlcnMgZnJvbSBCYXNpYyBOb3JtYWwgUGxhbmUuCi1TdHJpbmcgV2lkZVN0cmluZ1RvVXRm
OChjb25zdCB3Y2hhcl90KiBzdHIsIGludCBudW1fY2hhcnMpIHsKK3N0ZDo6c3RyaW5nIFdpZGVT
dHJpbmdUb1V0ZjgoY29uc3Qgd2NoYXJfdCogc3RyLCBpbnQgbnVtX2NoYXJzKSB7CiAgIGlmIChu
dW1fY2hhcnMgPT0gLTEpCiAgICAgbnVtX2NoYXJzID0gc3RhdGljX2Nhc3Q8aW50Pih3Y3NsZW4o
c3RyKSk7CiAKLSAgU3RyU3RyZWFtIHN0cmVhbTsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJl
YW07CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtX2NoYXJzOyArK2kpIHsKICAgICBVSW50MzIg
dW5pY29kZV9jb2RlX3BvaW50OwogCkBAIC0xNTQwLDI3ICsxODgzLDE3IEBAIFN0cmluZyBXaWRl
U3RyaW5nVG9VdGY4KGNvbnN0IHdjaGFyX3QqIHN0ciwgaW50IG51bV9jaGFycykgewogICAgICAg
dW5pY29kZV9jb2RlX3BvaW50ID0gc3RhdGljX2Nhc3Q8VUludDMyPihzdHJbaV0pOwogICAgIH0K
IAotICAgIGNoYXIgYnVmZmVyWzMyXTsgIC8vIENvZGVQb2ludFRvVXRmOCByZXF1aXJlcyBhIGJ1
ZmZlciB0aGlzIGJpZy4KLSAgICBzdHJlYW0gPDwgQ29kZVBvaW50VG9VdGY4KHVuaWNvZGVfY29k
ZV9wb2ludCwgYnVmZmVyKTsKKyAgICBzdHJlYW0gPDwgQ29kZVBvaW50VG9VdGY4KHVuaWNvZGVf
Y29kZV9wb2ludCk7CiAgIH0KLSAgcmV0dXJuIFN0clN0cmVhbVRvU3RyaW5nKCZzdHJlYW0pOwor
ICByZXR1cm4gU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnN0cmVhbSk7CiB9CiAKLS8vIENvbnZlcnRz
IGEgd2lkZSBDIHN0cmluZyB0byBhIFN0cmluZyB1c2luZyB0aGUgVVRGLTggZW5jb2RpbmcuCisv
LyBDb252ZXJ0cyBhIHdpZGUgQyBzdHJpbmcgdG8gYW4gc3RkOjpzdHJpbmcgdXNpbmcgdGhlIFVU
Ri04IGVuY29kaW5nLgogLy8gTlVMTCB3aWxsIGJlIGNvbnZlcnRlZCB0byAiKG51bGwpIi4KLVN0
cmluZyBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZyhjb25zdCB3Y2hhcl90ICogd2lkZV9jX3N0cikg
ewotICBpZiAod2lkZV9jX3N0ciA9PSBOVUxMKSByZXR1cm4gU3RyaW5nKCIobnVsbCkiKTsKLQot
ICByZXR1cm4gU3RyaW5nKGludGVybmFsOjpXaWRlU3RyaW5nVG9VdGY4KHdpZGVfY19zdHIsIC0x
KS5jX3N0cigpKTsKLX0KLQotLy8gU2ltaWxhciB0byBTaG93V2lkZUNTdHJpbmcoKSwgZXhjZXB0
IHRoYXQgdGhpcyBmdW5jdGlvbiBlbmNsb3NlcwotLy8gdGhlIGNvbnZlcnRlZCBzdHJpbmcgaW4g
ZG91YmxlIHF1b3Rlcy4KLVN0cmluZyBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChjb25z
dCB3Y2hhcl90KiB3aWRlX2Nfc3RyKSB7Ci0gIGlmICh3aWRlX2Nfc3RyID09IE5VTEwpIHJldHVy
biBTdHJpbmcoIihudWxsKSIpOworc3RkOjpzdHJpbmcgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmco
Y29uc3Qgd2NoYXJfdCAqIHdpZGVfY19zdHIpIHsKKyAgaWYgKHdpZGVfY19zdHIgPT0gTlVMTCkg
IHJldHVybiAiKG51bGwpIjsKIAotICByZXR1cm4gU3RyaW5nOjpGb3JtYXQoIkxcIiVzXCIiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmcod2lkZV9jX3N0
cikuY19zdHIoKSk7CisgIHJldHVybiBpbnRlcm5hbDo6V2lkZVN0cmluZ1RvVXRmOCh3aWRlX2Nf
c3RyLCAtMSk7CiB9CiAKIC8vIENvbXBhcmVzIHR3byB3aWRlIEMgc3RyaW5ncy4gIFJldHVybnMg
dHJ1ZSBpZmYgdGhleSBoYXZlIHRoZSBzYW1lCkBAIC0xNTc4LDE4ICsxOTExLDE4IEBAIGJvb2wg
U3RyaW5nOjpXaWRlQ1N0cmluZ0VxdWFscyhjb25zdCB3Y2hhcl90ICogbGhzLCBjb25zdCB3Y2hh
cl90ICogcmhzKSB7CiB9CiAKIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgKl9TVFJFUSBvbiB3aWRl
IHN0cmluZ3MuCi1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogZXhw
ZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB3Y2hhcl90KiBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB3Y2hhcl90KiBhY3R1YWwpIHsKLSAgaWYgKFN0cmluZzo6V2lkZUNTdHJpbmdFcXVhbHMo
ZXhwZWN0ZWQsIGFjdHVhbCkpIHsKK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJFUShjb25z
dCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB3Y2hhcl90KiBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgd2NoYXJfdCogcmhzKSB7CisgIGlmIChTdHJpbmc6OldpZGVDU3RyaW5nRXF1YWxzKGxocywg
cmhzKSkgewogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAgIH0KIAotICByZXR1cm4g
RXFGYWlsdXJlKGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgYWN0dWFs
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdR
dW90ZWQoZXhwZWN0ZWQpLAotICAgICAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd1dpZGVDU3Ry
aW5nUXVvdGVkKGFjdHVhbCksCisgIHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgUHJp
bnRUb1N0cmluZyhsaHMpLAorICAgICAgICAgICAgICAgICAgIFByaW50VG9TdHJpbmcocmhzKSwK
ICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CiB9CiAKQEAgLTE2MDIsMTIgKzE5MzUsMTAgQEAg
QXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUk5FKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24s
CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQogCi0gIE1lc3NhZ2UgbXNnOwot
ICBtc2cgPDwgIkV4cGVjdGVkOiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgiCi0gICAg
ICA8PCBzMl9leHByZXNzaW9uIDw8ICIpLCBhY3R1YWw6ICIKLSAgICAgIDw8IFN0cmluZzo6U2hv
d1dpZGVDU3RyaW5nUXVvdGVkKHMxKQotICAgICAgPDwgIiB2cyAiIDw8IFN0cmluZzo6U2hvd1dp
ZGVDU3RyaW5nUXVvdGVkKHMyKTsKLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAg
cmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4cHJlc3Np
b24gPDwgIikgIT0gKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzMl9leHByZXNz
aW9uIDw8ICIpLCBhY3R1YWw6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBQcmlu
dFRvU3RyaW5nKHMxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgdnMgIiA8PCBQ
cmludFRvU3RyaW5nKHMyKTsKIH0KIAogLy8gQ29tcGFyZXMgdHdvIEMgc3RyaW5ncywgaWdub3Jp
bmcgY2FzZS4gIFJldHVybnMgdHJ1ZSBpZmYgdGhleSBoYXZlCkBAIC0xNjM4LDE3ICsxOTY5LDE3
IEBAIGJvb2wgU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGNvbnN0IGNoYXIg
KiBsaHMsIGNvbnN0IGNoYXIgKiByaHMpIHsKICAgLy8gY3VycmVudCBsb2NhbGUuCiBib29sIFN0
cmluZzo6Q2FzZUluc2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMoY29uc3Qgd2NoYXJfdCogbGhz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdj
aGFyX3QqIHJocykgewotICBpZiAoIGxocyA9PSBOVUxMICkgcmV0dXJuIHJocyA9PSBOVUxMOwor
ICBpZiAobGhzID09IE5VTEwpIHJldHVybiByaHMgPT0gTlVMTDsKIAotICBpZiAoIHJocyA9PSBO
VUxMICkgcmV0dXJuIGZhbHNlOworICBpZiAocmhzID09IE5VTEwpIHJldHVybiBmYWxzZTsKIAog
I2lmIEdURVNUX09TX1dJTkRPV1MKICAgcmV0dXJuIF93Y3NpY21wKGxocywgcmhzKSA9PSAwOwot
I2VsaWYgR1RFU1RfT1NfTElOVVgKKyNlbGlmIEdURVNUX09TX0xJTlVYICYmICFHVEVTVF9PU19M
SU5VWF9BTkRST0lECiAgIHJldHVybiB3Y3NjYXNlY21wKGxocywgcmhzKSA9PSAwOwogI2Vsc2UK
LSAgLy8gTWFjIE9TIFggYW5kIEN5Z3dpbiBkb24ndCBkZWZpbmUgd2NzY2FzZWNtcC4gIE90aGVy
IHVua25vd24gT1NlcwotICAvLyBtYXkgbm90IGRlZmluZSBpdCBlaXRoZXIuCisgIC8vIEFuZHJv
aWQsIE1hYyBPUyBYIGFuZCBDeWd3aW4gZG9uJ3QgZGVmaW5lIHdjc2Nhc2VjbXAuCisgIC8vIE90
aGVyIHVua25vd24gT1NlcyBtYXkgbm90IGRlZmluZSBpdCBlaXRoZXIuCiAgIHdpbnRfdCBsZWZ0
LCByaWdodDsKICAgZG8gewogICAgIGxlZnQgPSB0b3dsb3dlcigqbGhzKyspOwpAQCAtMTY1OCwx
MzMgKzE5ODksNjkgQEAgYm9vbCBTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZVdpZGVDU3RyaW5nRXF1
YWxzKGNvbnN0IHdjaGFyX3QqIGxocywKICNlbmRpZiAgLy8gT1Mgc2VsZWN0b3IKIH0KIAotLy8g
Q29tcGFyZXMgdGhpcyB3aXRoIGFub3RoZXIgU3RyaW5nLgotLy8gUmV0dXJucyA8IDAgaWYgdGhp
cyBpcyBsZXNzIHRoYW4gcmhzLCAwIGlmIHRoaXMgaXMgZXF1YWwgdG8gcmhzLCBvciA+IDAKLS8v
IGlmIHRoaXMgaXMgZ3JlYXRlciB0aGFuIHJocy4KLWludCBTdHJpbmc6OkNvbXBhcmUoY29uc3Qg
U3RyaW5nICYgcmhzKSBjb25zdCB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IGxoc19jX3N0ciA9IGNf
c3RyKCk7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IHJoc19jX3N0ciA9IHJocy5jX3N0cigpOwotCi0g
IGlmIChsaHNfY19zdHIgPT0gTlVMTCkgewotICAgIHJldHVybiByaHNfY19zdHIgPT0gTlVMTCA/
IDAgOiAtMTsgIC8vIE5VTEwgPCBhbnl0aGluZyBleGNlcHQgTlVMTAotICB9IGVsc2UgaWYgKHJo
c19jX3N0ciA9PSBOVUxMKSB7Ci0gICAgcmV0dXJuIDE7Ci0gIH0KLQotICBjb25zdCBzaXplX3Qg
c2hvcnRlcl9zdHJfbGVuID0KLSAgICAgIGxlbmd0aCgpIDw9IHJocy5sZW5ndGgoKSA/IGxlbmd0
aCgpIDogcmhzLmxlbmd0aCgpOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBzaG9ydGVyX3N0
cl9sZW47IGkrKykgewotICAgIGlmIChsaHNfY19zdHJbaV0gPCByaHNfY19zdHJbaV0pIHsKLSAg
ICAgIHJldHVybiAtMTsKLSAgICB9IGVsc2UgaWYgKGxoc19jX3N0cltpXSA+IHJoc19jX3N0cltp
XSkgewotICAgICAgcmV0dXJuIDE7Ci0gICAgfQotICB9Ci0gIHJldHVybiAobGVuZ3RoKCkgPCBy
aHMubGVuZ3RoKCkpID8gLTEgOgotICAgICAgKGxlbmd0aCgpID4gcmhzLmxlbmd0aCgpKSA/IDEg
OiAwOworLy8gUmV0dXJucyB0cnVlIGlmZiBzdHIgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXgs
IGlnbm9yaW5nIGNhc2UuCisvLyBBbnkgc3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGgg
YW4gZW1wdHkgc3VmZml4LgorYm9vbCBTdHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKAor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIsIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdWZmaXgpIHsK
KyAgY29uc3Qgc2l6ZV90IHN0cl9sZW4gPSBzdHIubGVuZ3RoKCk7CisgIGNvbnN0IHNpemVfdCBz
dWZmaXhfbGVuID0gc3VmZml4Lmxlbmd0aCgpOworICByZXR1cm4gKHN0cl9sZW4gPj0gc3VmZml4
X2xlbikgJiYKKyAgICAgICAgIENhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMoc3RyLmNfc3Ry
KCkgKyBzdHJfbGVuIC0gc3VmZml4X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3VmZml4LmNfc3RyKCkpOwogfQogCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMg
U3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LiAgKkFueSoKLS8vIFN0cmluZyBpcyBj
b25zaWRlcmVkIHRvIGVuZCB3aXRoIGEgTlVMTCBvciBlbXB0eSBzdWZmaXguCi1ib29sIFN0cmlu
Zzo6RW5kc1dpdGgoY29uc3QgY2hhciogc3VmZml4KSBjb25zdCB7Ci0gIGlmIChzdWZmaXggPT0g
TlVMTCB8fCBDU3RyaW5nRXF1YWxzKHN1ZmZpeCwgIiIpKSByZXR1cm4gdHJ1ZTsKLQotICBpZiAo
Y19zdHIoKSA9PSBOVUxMKSByZXR1cm4gZmFsc2U7Ci0KLSAgY29uc3Qgc2l6ZV90IHRoaXNfbGVu
ID0gc3RybGVuKGNfc3RyKCkpOwotICBjb25zdCBzaXplX3Qgc3VmZml4X2xlbiA9IHN0cmxlbihz
dWZmaXgpOwotICByZXR1cm4gKHRoaXNfbGVuID49IHN1ZmZpeF9sZW4pICYmCi0gICAgICAgICBD
U3RyaW5nRXF1YWxzKGNfc3RyKCkgKyB0aGlzX2xlbiAtIHN1ZmZpeF9sZW4sIHN1ZmZpeCk7Cisv
LyBGb3JtYXRzIGFuIGludCB2YWx1ZSBhcyAiJTAyZCIuCitzdGQ6OnN0cmluZyBTdHJpbmc6OkZv
cm1hdEludFdpZHRoMihpbnQgdmFsdWUpIHsKKyAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIHNz
IDw8IHN0ZDo6c2V0ZmlsbCgnMCcpIDw8IHN0ZDo6c2V0dygyKSA8PCB2YWx1ZTsKKyAgcmV0dXJu
IHNzLnN0cigpOwogfQogCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgU3RyaW5nIGVuZHMgd2l0
aCB0aGUgZ2l2ZW4gc3VmZml4LCBpZ25vcmluZyBjYXNlLgotLy8gQW55IFN0cmluZyBpcyBjb25z
aWRlcmVkIHRvIGVuZCB3aXRoIGEgTlVMTCBvciBlbXB0eSBzdWZmaXguCi1ib29sIFN0cmluZzo6
RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoY29uc3QgY2hhciogc3VmZml4KSBjb25zdCB7Ci0gIGlm
IChzdWZmaXggPT0gTlVMTCB8fCBDU3RyaW5nRXF1YWxzKHN1ZmZpeCwgIiIpKSByZXR1cm4gdHJ1
ZTsKLQotICBpZiAoY19zdHIoKSA9PSBOVUxMKSByZXR1cm4gZmFsc2U7Ci0KLSAgY29uc3Qgc2l6
ZV90IHRoaXNfbGVuID0gc3RybGVuKGNfc3RyKCkpOwotICBjb25zdCBzaXplX3Qgc3VmZml4X2xl
biA9IHN0cmxlbihzdWZmaXgpOwotICByZXR1cm4gKHRoaXNfbGVuID49IHN1ZmZpeF9sZW4pICYm
Ci0gICAgICAgICBDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGNfc3RyKCkgKyB0aGlzX2xl
biAtIHN1ZmZpeF9sZW4sIHN1ZmZpeCk7CisvLyBGb3JtYXRzIGFuIGludCB2YWx1ZSBhcyAiJVgi
Lgorc3RkOjpzdHJpbmcgU3RyaW5nOjpGb3JtYXRIZXhJbnQoaW50IHZhbHVlKSB7CisgIHN0ZDo6
c3RyaW5nc3RyZWFtIHNzOworICBzcyA8PCBzdGQ6OmhleCA8PCBzdGQ6OnVwcGVyY2FzZSA8PCB2
YWx1ZTsKKyAgcmV0dXJuIHNzLnN0cigpOwogfQogCi0vLyBGb3JtYXRzIGEgbGlzdCBvZiBhcmd1
bWVudHMgdG8gYSBTdHJpbmcsIHVzaW5nIHRoZSBzYW1lIGZvcm1hdAotLy8gc3BlYyBzdHJpbmcg
YXMgZm9yIHByaW50Zi4KLS8vCi0vLyBXZSBkbyBub3QgdXNlIHRoZSBTdHJpbmdQcmludGYgY2xh
c3MgYXMgaXQgaXMgbm90IHVuaXZlcnNhbGx5Ci0vLyBhdmFpbGFibGUuCi0vLwotLy8gVGhlIHJl
c3VsdCBpcyBsaW1pdGVkIHRvIDQwOTYgY2hhcmFjdGVycyAoaW5jbHVkaW5nIHRoZSB0YWlsaW5n
IDApLgotLy8gSWYgNDA5NiBjaGFyYWN0ZXJzIGFyZSBub3QgZW5vdWdoIHRvIGZvcm1hdCB0aGUg
aW5wdXQsIG9yIGlmCi0vLyB0aGVyZSdzIGFuIGVycm9yLCAiPGZvcm1hdHRpbmcgZXJyb3Igb3Ig
YnVmZmVyIGV4Y2VlZGVkPiIgaXMKLS8vIHJldHVybmVkLgotU3RyaW5nIFN0cmluZzo6Rm9ybWF0
KGNvbnN0IGNoYXIgKiBmb3JtYXQsIC4uLikgewotICB2YV9saXN0IGFyZ3M7Ci0gIHZhX3N0YXJ0
KGFyZ3MsIGZvcm1hdCk7Ci0KLSAgY2hhciBidWZmZXJbNDA5Nl07Ci0gIGNvbnN0IGludCBrQnVm
ZmVyU2l6ZSA9IHNpemVvZihidWZmZXIpL3NpemVvZihidWZmZXJbMF0pOwotCi0gIC8vIE1TVkMg
OCBkZXByZWNhdGVzIHZzbnByaW50ZigpLCBzbyB3ZSB3YW50IHRvIHN1cHByZXNzIHdhcm5pbmcK
LSAgLy8gNDk5NiAoZGVwcmVjYXRlZCBmdW5jdGlvbikgdGhlcmUuCi0jaWZkZWYgX01TQ19WRVIg
IC8vIFdlIGFyZSB1c2luZyBNU1ZDLgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpICAgICAgICAgIC8v
IFNhdmVzIHRoZSBjdXJyZW50IHdhcm5pbmcgc3RhdGUuCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTo0OTk2KSAgLy8gVGVtcG9yYXJpbHkgZGlzYWJsZXMgd2FybmluZyA0OTk2LgotICBjb25zdCBp
bnQgc2l6ZSA9IHZzbnByaW50ZihidWZmZXIsIGtCdWZmZXJTaXplLCBmb3JtYXQsIGFyZ3MpOwot
I3ByYWdtYSB3YXJuaW5nKHBvcCkgICAgICAgICAgIC8vIFJlc3RvcmVzIHRoZSB3YXJuaW5nIHN0
YXRlLgotI2Vsc2UgIC8vIFdlIGFyZSBub3QgdXNpbmcgTVNWQy4KLSAgY29uc3QgaW50IHNpemUg
PSB2c25wcmludGYoYnVmZmVyLCBrQnVmZmVyU2l6ZSwgZm9ybWF0LCBhcmdzKTsKLSNlbmRpZiAg
Ly8gX01TQ19WRVIKLSAgdmFfZW5kKGFyZ3MpOwotCi0gIC8vIHZzbnByaW50ZigpJ3MgYmVoYXZp
b3IgaXMgbm90IHBvcnRhYmxlLiAgV2hlbiB0aGUgYnVmZmVyIGlzIG5vdAotICAvLyBiaWcgZW5v
dWdoLCBpdCByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUgaW4gTVNWQywgYW5kIHJldHVybnMgdGhl
Ci0gIC8vIG5lZWRlZCBidWZmZXIgc2l6ZSBvbiBMaW51eC4gIFdoZW4gdGhlcmUgaXMgYW4gb3V0
cHV0IGVycm9yLCBpdAotICAvLyBhbHdheXMgcmV0dXJucyBhIG5lZ2F0aXZlIHZhbHVlLiAgRm9y
IHNpbXBsaWNpdHksIHdlIGx1bXAgdGhlIHR3bwotICAvLyBlcnJvciBjYXNlcyB0b2dldGhlci4K
LSAgaWYgKHNpemUgPCAwIHx8IHNpemUgPj0ga0J1ZmZlclNpemUpIHsKLSAgICByZXR1cm4gU3Ry
aW5nKCI8Zm9ybWF0dGluZyBlcnJvciBvciBidWZmZXIgZXhjZWVkZWQ+Iik7Ci0gIH0gZWxzZSB7
Ci0gICAgcmV0dXJuIFN0cmluZyhidWZmZXIsIHNpemUpOwotICB9CisvLyBGb3JtYXRzIGEgYnl0
ZSBhcyAiJTAyWCIuCitzdGQ6OnN0cmluZyBTdHJpbmc6OkZvcm1hdEJ5dGUodW5zaWduZWQgY2hh
ciB2YWx1ZSkgeworICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgc3MgPDwgc3RkOjpzZXRmaWxs
KCcwJykgPDwgc3RkOjpzZXR3KDIpIDw8IHN0ZDo6aGV4IDw8IHN0ZDo6dXBwZXJjYXNlCisgICAg
IDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odmFsdWUpOworICByZXR1cm4gc3Muc3RyKCk7
CiB9CiAKLS8vIENvbnZlcnRzIHRoZSBidWZmZXIgaW4gYSBTdHJTdHJlYW0gdG8gYSBTdHJpbmcs
IGNvbnZlcnRpbmcgTlVMCisvLyBDb252ZXJ0cyB0aGUgYnVmZmVyIGluIGEgc3RyaW5nc3RyZWFt
IHRvIGFuIHN0ZDo6c3RyaW5nLCBjb252ZXJ0aW5nIE5VTAogLy8gYnl0ZXMgdG8gIlxcMCIgYWxv
bmcgdGhlIHdheS4KLVN0cmluZyBTdHJTdHJlYW1Ub1N0cmluZyhTdHJTdHJlYW0qIHNzKSB7Citz
dGQ6OnN0cmluZyBTdHJpbmdTdHJlYW1Ub1N0cmluZyg6OnN0ZDo6c3RyaW5nc3RyZWFtKiBzcykg
ewogICBjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIgPSBzcy0+c3RyKCk7CiAgIGNvbnN0IGNoYXIq
IGNvbnN0IHN0YXJ0ID0gc3RyLmNfc3RyKCk7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGVuZCA9IHN0
YXJ0ICsgc3RyLmxlbmd0aCgpOwogCi0gIC8vIFdlIG5lZWQgdG8gdXNlIGEgaGVscGVyIFN0clN0
cmVhbSB0byBkbyB0aGlzIHRyYW5zZm9ybWF0aW9uCi0gIC8vIGJlY2F1c2UgU3RyaW5nIGRvZXNu
J3Qgc3VwcG9ydCBwdXNoX2JhY2soKS4KLSAgU3RyU3RyZWFtIGhlbHBlcjsKKyAgc3RkOjpzdHJp
bmcgcmVzdWx0OworICByZXN1bHQucmVzZXJ2ZSgyICogKGVuZCAtIHN0YXJ0KSk7CiAgIGZvciAo
Y29uc3QgY2hhciogY2ggPSBzdGFydDsgY2ggIT0gZW5kOyArK2NoKSB7CiAgICAgaWYgKCpjaCA9
PSAnXDAnKSB7Ci0gICAgICBoZWxwZXIgPDwgIlxcMCI7ICAvLyBSZXBsYWNlcyBOVUwgd2l0aCAi
XFwwIjsKKyAgICAgIHJlc3VsdCArPSAiXFwwIjsgIC8vIFJlcGxhY2VzIE5VTCB3aXRoICJcXDAi
OwogICAgIH0gZWxzZSB7Ci0gICAgICBoZWxwZXIucHV0KCpjaCk7CisgICAgICByZXN1bHQgKz0g
KmNoOwogICAgIH0KICAgfQogCi0gIHJldHVybiBTdHJpbmcoaGVscGVyLnN0cigpLmNfc3RyKCkp
OworICByZXR1cm4gcmVzdWx0OwogfQogCiAvLyBBcHBlbmRzIHRoZSB1c2VyLXN1cHBsaWVkIG1l
c3NhZ2UgdG8gdGhlIEdvb2dsZS1UZXN0LWdlbmVyYXRlZCBtZXNzYWdlLgotU3RyaW5nIEFwcGVu
ZFVzZXJNZXNzYWdlKGNvbnN0IFN0cmluZyYgZ3Rlc3RfbXNnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IE1lc3NhZ2UmIHVzZXJfbXNnKSB7CitzdGQ6OnN0cmluZyBBcHBlbmRVc2Vy
TWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgZ3Rlc3RfbXNnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgTWVzc2FnZSYgdXNlcl9tc2cpIHsKICAgLy8gQXBwZW5kcyB0aGUg
dXNlciBtZXNzYWdlIGlmIGl0J3Mgbm9uLWVtcHR5LgotICBjb25zdCBTdHJpbmcgdXNlcl9tc2df
c3RyaW5nID0gdXNlcl9tc2cuR2V0U3RyaW5nKCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHVzZXJf
bXNnX3N0cmluZyA9IHVzZXJfbXNnLkdldFN0cmluZygpOwogICBpZiAodXNlcl9tc2dfc3RyaW5n
LmVtcHR5KCkpIHsKICAgICByZXR1cm4gZ3Rlc3RfbXNnOwogICB9CiAKLSAgTWVzc2FnZSBtc2c7
Ci0gIG1zZyA8PCBndGVzdF9tc2cgPDwgIlxuIiA8PCB1c2VyX21zZ19zdHJpbmc7Ci0KLSAgcmV0
dXJuIG1zZy5HZXRTdHJpbmcoKTsKKyAgcmV0dXJuIGd0ZXN0X21zZyArICJcbiIgKyB1c2VyX21z
Z19zdHJpbmc7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbApAQCAtMTgzMiw4ICsyMDk5
LDkgQEAgdm9pZCBUZXN0UmVzdWx0OjpBZGRUZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJl
c3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgewogLy8gQWRkcyBhIHRlc3QgcHJvcGVydHkgdG8gdGhl
IGxpc3QuIElmIGEgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBrZXkgYXMgdGhlCiAvLyBzdXBwbGll
ZCBwcm9wZXJ0eSBpcyBhbHJlYWR5IHJlcHJlc2VudGVkLCB0aGUgdmFsdWUgb2YgdGhpcyB0ZXN0
X3Byb3BlcnR5CiAvLyByZXBsYWNlcyB0aGUgb2xkIHZhbHVlIGZvciB0aGF0IGtleS4KLXZvaWQg
VGVzdFJlc3VsdDo6UmVjb3JkUHJvcGVydHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3Bl
cnR5KSB7Ci0gIGlmICghVmFsaWRhdGVUZXN0UHJvcGVydHkodGVzdF9wcm9wZXJ0eSkpIHsKK3Zv
aWQgVGVzdFJlc3VsdDo6UmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9lbGVt
ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UHJvcGVydHkm
IHRlc3RfcHJvcGVydHkpIHsKKyAgaWYgKCFWYWxpZGF0ZVRlc3RQcm9wZXJ0eSh4bWxfZWxlbWVu
dCwgdGVzdF9wcm9wZXJ0eSkpIHsKICAgICByZXR1cm47CiAgIH0KICAgaW50ZXJuYWw6Ok11dGV4
TG9jayBsb2NrKCZ0ZXN0X3Byb3Blcml0ZXNfbXV0ZXhfKTsKQEAgLTE4NDcsMjEgKzIxMTUsOTAg
QEAgdm9pZCBUZXN0UmVzdWx0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRl
c3RfcHJvcGVydHkpIHsKICAgcHJvcGVydHlfd2l0aF9tYXRjaGluZ19rZXktPlNldFZhbHVlKHRl
c3RfcHJvcGVydHkudmFsdWUoKSk7CiB9CiAKLS8vIEFkZHMgYSBmYWlsdXJlIGlmIHRoZSBrZXkg
aXMgYSByZXNlcnZlZCBhdHRyaWJ1dGUgb2YgR29vZ2xlIFRlc3QKLS8vIHRlc3RjYXNlIHRhZ3Mu
ICBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3BlcnR5IGlzIHZhbGlkLgotYm9vbCBUZXN0UmVzdWx0
OjpWYWxpZGF0ZVRlc3RQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkp
IHsKLSAgaW50ZXJuYWw6OlN0cmluZyBrZXkodGVzdF9wcm9wZXJ0eS5rZXkoKSk7Ci0gIGlmIChr
ZXkgPT0gIm5hbWUiIHx8IGtleSA9PSAic3RhdHVzIiB8fCBrZXkgPT0gInRpbWUiIHx8IGtleSA9
PSAiY2xhc3NuYW1lIikgewotICAgIEFERF9GQUlMVVJFKCkKLSAgICAgICAgPDwgIlJlc2VydmVk
IGtleSB1c2VkIGluIFJlY29yZFByb3BlcnR5KCk6ICIKLSAgICAgICAgPDwga2V5Ci0gICAgICAg
IDw8ICIgKCduYW1lJywgJ3N0YXR1cycsICd0aW1lJywgYW5kICdjbGFzc25hbWUnIGFyZSByZXNl
cnZlZCBieSAiCi0gICAgICAgIDw8IEdURVNUX05BTUVfIDw8ICIpIjsKKy8vIFRoZSBsaXN0IG9m
IHJlc2VydmVkIGF0dHJpYnV0ZXMgdXNlZCBpbiB0aGUgPHRlc3RzdWl0ZXM+IGVsZW1lbnQgb2Yg
WE1MCisvLyBvdXRwdXQuCitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qga1Jlc2VydmVkVGVzdFN1
aXRlc0F0dHJpYnV0ZXNbXSA9IHsKKyAgImRpc2FibGVkIiwKKyAgImVycm9ycyIsCisgICJmYWls
dXJlcyIsCisgICJuYW1lIiwKKyAgInJhbmRvbV9zZWVkIiwKKyAgInRlc3RzIiwKKyAgInRpbWUi
LAorICAidGltZXN0YW1wIgorfTsKKworLy8gVGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgYXR0cmlidXRl
cyB1c2VkIGluIHRoZSA8dGVzdHN1aXRlPiBlbGVtZW50IG9mIFhNTAorLy8gb3V0cHV0Lgorc3Rh
dGljIGNvbnN0IGNoYXIqIGNvbnN0IGtSZXNlcnZlZFRlc3RTdWl0ZUF0dHJpYnV0ZXNbXSA9IHsK
KyAgImRpc2FibGVkIiwKKyAgImVycm9ycyIsCisgICJmYWlsdXJlcyIsCisgICJuYW1lIiwKKyAg
InRlc3RzIiwKKyAgInRpbWUiCit9OworCisvLyBUaGUgbGlzdCBvZiByZXNlcnZlZCBhdHRyaWJ1
dGVzIHVzZWQgaW4gdGhlIDx0ZXN0Y2FzZT4gZWxlbWVudCBvZiBYTUwgb3V0cHV0Lgorc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IGtSZXNlcnZlZFRlc3RDYXNlQXR0cmlidXRlc1tdID0geworICAg
ICJjbGFzc25hbWUiLCAgIm5hbWUiLCAgICAgICAgInN0YXR1cyIsICJ0aW1lIiwKKyAgICAidHlw
ZV9wYXJhbSIsICJ2YWx1ZV9wYXJhbSIsICJmaWxlIiwgICAibGluZSJ9OworCit0ZW1wbGF0ZSA8
aW50IGtTaXplPgorc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEFycmF5QXNWZWN0b3IoY29uc3Qg
Y2hhciogY29uc3QgKCZhcnJheSlba1NpemVdKSB7CisgIHJldHVybiBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4oYXJyYXksIGFycmF5ICsga1NpemUpOworfQorCitzdGF0aWMgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IEdldFJlc2VydmVkQXR0cmlidXRlc0ZvckVsZW1lbnQoCisgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50KSB7CisgIGlmICh4bWxfZWxlbWVudCA9PSAidGVzdHN1
aXRlcyIpIHsKKyAgICByZXR1cm4gQXJyYXlBc1ZlY3RvcihrUmVzZXJ2ZWRUZXN0U3VpdGVzQXR0
cmlidXRlcyk7CisgIH0gZWxzZSBpZiAoeG1sX2VsZW1lbnQgPT0gInRlc3RzdWl0ZSIpIHsKKyAg
ICByZXR1cm4gQXJyYXlBc1ZlY3RvcihrUmVzZXJ2ZWRUZXN0U3VpdGVBdHRyaWJ1dGVzKTsKKyAg
fSBlbHNlIGlmICh4bWxfZWxlbWVudCA9PSAidGVzdGNhc2UiKSB7CisgICAgcmV0dXJuIEFycmF5
QXNWZWN0b3Ioa1Jlc2VydmVkVGVzdENhc2VBdHRyaWJ1dGVzKTsKKyAgfSBlbHNlIHsKKyAgICBH
VEVTVF9DSEVDS18oZmFsc2UpIDw8ICJVbnJlY29nbml6ZWQgeG1sX2VsZW1lbnQgcHJvdmlkZWQ6
ICIgPDwgeG1sX2VsZW1lbnQ7CisgIH0KKyAgLy8gVGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGJ1
dCBzb21lIGNvbXBpbGVycyBtYXkgbm90IHJlYWxpemVzIHRoYXQuCisgIHJldHVybiBzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4oKTsKK30KKworc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFdvcmRM
aXN0KGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgd29yZHMpIHsKKyAgTWVzc2FnZSB3
b3JkX2xpc3Q7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHMuc2l6ZSgpOyArK2kpIHsK
KyAgICBpZiAoaSA+IDAgJiYgd29yZHMuc2l6ZSgpID4gMikgeworICAgICAgd29yZF9saXN0IDw8
ICIsICI7CisgICAgfQorICAgIGlmIChpID09IHdvcmRzLnNpemUoKSAtIDEpIHsKKyAgICAgIHdv
cmRfbGlzdCA8PCAiYW5kICI7CisgICAgfQorICAgIHdvcmRfbGlzdCA8PCAiJyIgPDwgd29yZHNb
aV0gPDwgIiciOworICB9CisgIHJldHVybiB3b3JkX2xpc3QuR2V0U3RyaW5nKCk7Cit9CisKK3N0
YXRpYyBib29sIFZhbGlkYXRlVGVzdFByb3BlcnR5TmFtZSgKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgcHJvcGVydHlfbmFtZSwKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHJl
c2VydmVkX25hbWVzKSB7CisgIGlmIChzdGQ6OmZpbmQocmVzZXJ2ZWRfbmFtZXMuYmVnaW4oKSwg
cmVzZXJ2ZWRfbmFtZXMuZW5kKCksIHByb3BlcnR5X25hbWUpICE9CisgICAgICAgICAgcmVzZXJ2
ZWRfbmFtZXMuZW5kKCkpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJSZXNlcnZlZCBrZXkgdXNl
ZCBpbiBSZWNvcmRQcm9wZXJ0eSgpOiAiIDw8IHByb3BlcnR5X25hbWUKKyAgICAgICAgICAgICAg
ICAgIDw8ICIgKCIgPDwgRm9ybWF0V29yZExpc3QocmVzZXJ2ZWRfbmFtZXMpCisgICAgICAgICAg
ICAgICAgICA8PCAiIGFyZSByZXNlcnZlZCBieSAiIDw8IEdURVNUX05BTUVfIDw8ICIpIjsKICAg
ICByZXR1cm4gZmFsc2U7CiAgIH0KICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIEFkZHMgYSBmYWls
dXJlIGlmIHRoZSBrZXkgaXMgYSByZXNlcnZlZCBhdHRyaWJ1dGUgb2YgdGhlIGVsZW1lbnQgbmFt
ZWQKKy8vIHhtbF9lbGVtZW50LiAgUmV0dXJucyB0cnVlIGlmIHRoZSBwcm9wZXJ0eSBpcyB2YWxp
ZC4KK2Jvb2wgVGVzdFJlc3VsdDo6VmFsaWRhdGVUZXN0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJp
bmcmIHhtbF9lbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpIHsKKyAgcmV0dXJuIFZhbGlkYXRlVGVz
dFByb3BlcnR5TmFtZSh0ZXN0X3Byb3BlcnR5LmtleSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdldFJlc2VydmVkQXR0cmlidXRlc0ZvckVsZW1lbnQoeG1sX2VsZW1lbnQp
KTsKK30KKwogLy8gQ2xlYXJzIHRoZSBvYmplY3QuCiB2b2lkIFRlc3RSZXN1bHQ6OkNsZWFyKCkg
ewogICB0ZXN0X3BhcnRfcmVzdWx0c18uY2xlYXIoKTsKQEAgLTE5MTQsMTQgKzIyNTEsMTUgQEAg
aW50IFRlc3RSZXN1bHQ6OnRlc3RfcHJvcGVydHlfY291bnQoKSBjb25zdCB7CiAKIC8vIENyZWF0
ZXMgYSBUZXN0IG9iamVjdC4KIAotLy8gVGhlIGMndG9yIHNhdmVzIHRoZSB2YWx1ZXMgb2YgYWxs
IEdvb2dsZSBUZXN0IGZsYWdzLgorLy8gVGhlIGMndG9yIHNhdmVzIHRoZSBzdGF0ZXMgb2YgYWxs
IGZsYWdzLgogVGVzdDo6VGVzdCgpCi0gICAgOiBndGVzdF9mbGFnX3NhdmVyXyhuZXcgaW50ZXJu
YWw6OkdUZXN0RmxhZ1NhdmVyKSB7CisgICAgOiBndGVzdF9mbGFnX3NhdmVyXyhuZXcgR1RFU1Rf
RkxBR19TQVZFUl8pIHsKIH0KIAotLy8gVGhlIGQndG9yIHJlc3RvcmVzIHRoZSB2YWx1ZXMgb2Yg
YWxsIEdvb2dsZSBUZXN0IGZsYWdzLgorLy8gVGhlIGQndG9yIHJlc3RvcmVzIHRoZSBzdGF0ZXMg
b2YgYWxsIGZsYWdzLiAgVGhlIGFjdHVhbCB3b3JrIGlzCisvLyBkb25lIGJ5IHRoZSBkJ3RvciBv
ZiB0aGUgZ3Rlc3RfZmxhZ19zYXZlcl8gZmllbGQsIGFuZCB0aHVzIG5vdAorLy8gdmlzaWJsZSBo
ZXJlLgogVGVzdDo6flRlc3QoKSB7Ci0gIGRlbGV0ZSBndGVzdF9mbGFnX3NhdmVyXzsKIH0KIAog
Ly8gU2V0cyB1cCB0aGUgdGVzdCBmaXh0dXJlLgpAQCAtMTkzNywxMiArMjI3NSwxMiBAQCB2b2lk
IFRlc3Q6OlRlYXJEb3duKCkgewogfQogCiAvLyBBbGxvd3MgdXNlciBzdXBwbGllZCBrZXkgdmFs
dWUgcGFpcnMgdG8gYmUgcmVjb3JkZWQgZm9yIGxhdGVyIG91dHB1dC4KLXZvaWQgVGVzdDo6UmVj
b3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBjb25zdCBjaGFyKiB2YWx1ZSkgewotICBVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+UmVjb3JkUHJvcGVydHlGb3JDdXJyZW50VGVzdChrZXksIHZh
bHVlKTsKK3ZvaWQgVGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwg
Y29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSB7CisgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5S
ZWNvcmRQcm9wZXJ0eShrZXksIHZhbHVlKTsKIH0KIAogLy8gQWxsb3dzIHVzZXIgc3VwcGxpZWQg
a2V5IHZhbHVlIHBhaXJzIHRvIGJlIHJlY29yZGVkIGZvciBsYXRlciBvdXRwdXQuCi12b2lkIFRl
c3Q6OlJlY29yZFByb3BlcnR5KGNvbnN0IGNoYXIqIGtleSwgaW50IHZhbHVlKSB7Cit2b2lkIFRl
c3Q6OlJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGludCB2YWx1ZSkgewog
ICBNZXNzYWdlIHZhbHVlX21lc3NhZ2U7CiAgIHZhbHVlX21lc3NhZ2UgPDwgdmFsdWU7CiAgIFJl
Y29yZFByb3BlcnR5KGtleSwgdmFsdWVfbWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0cigpKTsKQEAg
LTE5NTEsNyArMjI4OSw3IEBAIHZvaWQgVGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3QgY2hhciog
a2V5LCBpbnQgdmFsdWUpIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIHZvaWQgUmVwb3J0RmFp
bHVyZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbWVzc2FnZSkgewogICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGEgZnJpZW5kIG9mIFVuaXRUZXN0
IGFuZCBhcyBzdWNoIGhhcyBhY2Nlc3MgdG8KICAgLy8gQWRkVGVzdFBhcnRSZXN1bHQuCiAgIFVu
aXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5BZGRUZXN0UGFydFJlc3VsdCgKQEAgLTE5NTksMjcgKzIy
OTcsMTEgQEAgdm9pZCBSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oVGVzdFBhcnRSZXN1
bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCiAgICAgICBOVUxMLCAgLy8gTm8gaW5mbyBhYm91dCB0aGUg
c291cmNlIGZpbGUgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4KICAgICAgIC0xLCAgICAv
LyBXZSBoYXZlIG5vIGluZm8gb24gd2hpY2ggbGluZSBjYXVzZWQgdGhlIGV4Y2VwdGlvbi4KICAg
ICAgIG1lc3NhZ2UsCi0gICAgICBTdHJpbmcoKSk7ICAvLyBObyBzdGFjayB0cmFjZSwgZWl0aGVy
LgorICAgICAgIiIpOyAgIC8vIE5vIHN0YWNrIHRyYWNlLCBlaXRoZXIuCiB9CiAKIH0gIC8vIG5h
bWVzcGFjZSBpbnRlcm5hbAogCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotLy8gV2UgYXJlIG9uIFdp
bmRvd3MuCi0KLS8vIEFkZHMgYW4gImV4Y2VwdGlvbiB0aHJvd24iIGZhdGFsIGZhaWx1cmUgdG8g
dGhlIGN1cnJlbnQgdGVzdC4KLXN0YXRpYyB2b2lkIEFkZEV4Y2VwdGlvblRocm93bkZhaWx1cmUo
RFdPUkQgZXhjZXB0aW9uX2NvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7Ci0gIE1lc3NhZ2UgbWVzc2FnZTsKLSAgbWVzc2Fn
ZSA8PCAiRXhjZXB0aW9uIHRocm93biB3aXRoIGNvZGUgMHgiIDw8IHN0ZDo6c2V0YmFzZSgxNikg
PDwKLSAgICBleGNlcHRpb25fY29kZSA8PCBzdGQ6OnNldGJhc2UoMTApIDw8ICIgaW4gIiA8PCBs
b2NhdGlvbiA8PCAiLiI7Ci0KLSAgaW50ZXJuYWw6OlJlcG9ydEZhaWx1cmVJblVua25vd25Mb2Nh
dGlvbihUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLkdldFN0cmluZygpKTsKLX0KLQotI2VuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KIC8vIEdvb2dsZSBUZXN0IHJlcXVpcmVzIGFsbCB0ZXN0
cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgdG8gdXNlIHRoZSBzYW1lIHRlc3QKIC8vIGZpeHR1cmUg
Y2xhc3MuICBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgY3VycmVudCB0ZXN0IGhhcyB0aGUK
IC8vIHNhbWUgZml4dHVyZSBjbGFzcyBhcyB0aGUgZmlyc3QgdGVzdCBpbiB0aGUgY3VycmVudCB0
ZXN0IGNhc2UuICBJZgpAQCAtMTk5MCwxNSArMjMxMiwxMyBAQCBib29sIFRlc3Q6Okhhc1NhbWVG
aXh0dXJlQ2xhc3MoKSB7CiAgIGNvbnN0IFRlc3RDYXNlKiBjb25zdCB0ZXN0X2Nhc2UgPSBpbXBs
LT5jdXJyZW50X3Rlc3RfY2FzZSgpOwogCiAgIC8vIEluZm8gYWJvdXQgdGhlIGZpcnN0IHRlc3Qg
aW4gdGhlIGN1cnJlbnQgdGVzdCBjYXNlLgotICBjb25zdCBpbnRlcm5hbDo6VGVzdEluZm9JbXBs
KiBjb25zdCBmaXJzdF90ZXN0X2luZm8gPQotICAgICAgdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlz
dCgpWzBdLT5pbXBsKCk7Ci0gIGNvbnN0IGludGVybmFsOjpUeXBlSWQgZmlyc3RfZml4dHVyZV9p
ZCA9IGZpcnN0X3Rlc3RfaW5mby0+Zml4dHVyZV9jbGFzc19pZCgpOworICBjb25zdCBUZXN0SW5m
byogY29uc3QgZmlyc3RfdGVzdF9pbmZvID0gdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpWzBd
OworICBjb25zdCBpbnRlcm5hbDo6VHlwZUlkIGZpcnN0X2ZpeHR1cmVfaWQgPSBmaXJzdF90ZXN0
X2luZm8tPmZpeHR1cmVfY2xhc3NfaWRfOwogICBjb25zdCBjaGFyKiBjb25zdCBmaXJzdF90ZXN0
X25hbWUgPSBmaXJzdF90ZXN0X2luZm8tPm5hbWUoKTsKIAogICAvLyBJbmZvIGFib3V0IHRoZSBj
dXJyZW50IHRlc3QuCi0gIGNvbnN0IGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGNvbnN0IHRoaXNf
dGVzdF9pbmZvID0KLSAgICAgIGltcGwtPmN1cnJlbnRfdGVzdF9pbmZvKCktPmltcGwoKTsKLSAg
Y29uc3QgaW50ZXJuYWw6OlR5cGVJZCB0aGlzX2ZpeHR1cmVfaWQgPSB0aGlzX3Rlc3RfaW5mby0+
Zml4dHVyZV9jbGFzc19pZCgpOworICBjb25zdCBUZXN0SW5mbyogY29uc3QgdGhpc190ZXN0X2lu
Zm8gPSBpbXBsLT5jdXJyZW50X3Rlc3RfaW5mbygpOworICBjb25zdCBpbnRlcm5hbDo6VHlwZUlk
IHRoaXNfZml4dHVyZV9pZCA9IHRoaXNfdGVzdF9pbmZvLT5maXh0dXJlX2NsYXNzX2lkXzsKICAg
Y29uc3QgY2hhciogY29uc3QgdGhpc190ZXN0X25hbWUgPSB0aGlzX3Rlc3RfaW5mby0+bmFtZSgp
OwogCiAgIGlmICh0aGlzX2ZpeHR1cmVfaWQgIT0gZmlyc3RfZml4dHVyZV9pZCkgewpAQCAtMjAw
OCw4ICsyMzI4LDggQEAgYm9vbCBUZXN0OjpIYXNTYW1lRml4dHVyZUNsYXNzKCkgewogICAgIGNv
bnN0IGJvb2wgdGhpc19pc19URVNUID0gdGhpc19maXh0dXJlX2lkID09IGludGVybmFsOjpHZXRU
ZXN0VHlwZUlkKCk7CiAKICAgICBpZiAoZmlyc3RfaXNfVEVTVCB8fCB0aGlzX2lzX1RFU1QpIHsK
LSAgICAgIC8vIFRoZSB1c2VyIG1peGVkIFRFU1QgYW5kIFRFU1RfRiBpbiB0aGlzIHRlc3QgY2Fz
ZSAtIHdlJ2xsIHRlbGwKLSAgICAgIC8vIGhpbS9oZXIgaG93IHRvIGZpeCBpdC4KKyAgICAgIC8v
IEJvdGggVEVTVCBhbmQgVEVTVF9GIGFwcGVhciBpbiBzYW1lIHRlc3QgY2FzZSwgd2hpY2ggaXMg
aW5jb3JyZWN0LgorICAgICAgLy8gVGVsbCB0aGUgdXNlciBob3cgdG8gZml4IHRoaXMuCiAKICAg
ICAgIC8vIEdldHMgdGhlIG5hbWUgb2YgdGhlIFRFU1QgYW5kIHRoZSBuYW1lIG9mIHRoZSBURVNU
X0YuICBOb3RlCiAgICAgICAvLyB0aGF0IGZpcnN0X2lzX1RFU1QgYW5kIHRoaXNfaXNfVEVTVCBj
YW5ub3QgYm90aCBiZSB0cnVlLCBhcwpAQCAtMjAyOSw4ICsyMzQ5LDggQEAgYm9vbCBUZXN0OjpI
YXNTYW1lRml4dHVyZUNsYXNzKCkgewogICAgICAgICAgIDw8ICJ3YW50IHRvIGNoYW5nZSB0aGUg
VEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0byBhbm90aGVyIHRlc3RcbiIKICAgICAgICAgICA8
PCAiY2FzZS4iOwogICAgIH0gZWxzZSB7Ci0gICAgICAvLyBUaGUgdXNlciBkZWZpbmVkIHR3byBm
aXh0dXJlIGNsYXNzZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGluCi0gICAgICAvLyB0d28gbmFtZXNw
YWNlcyAtIHdlJ2xsIHRlbGwgaGltL2hlciBob3cgdG8gZml4IGl0LgorICAgICAgLy8gVHdvIGZp
eHR1cmUgY2xhc3NlcyB3aXRoIHRoZSBzYW1lIG5hbWUgYXBwZWFyIGluIHR3byBkaWZmZXJlbnQK
KyAgICAgIC8vIG5hbWVzcGFjZXMsIHdoaWNoIGlzIG5vdCBhbGxvd2VkLiBUZWxsIHRoZSB1c2Vy
IGhvdyB0byBmaXggdGhpcy4KICAgICAgIEFERF9GQUlMVVJFKCkKICAgICAgICAgICA8PCAiQWxs
IHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1
cmVcbiIKICAgICAgICAgICA8PCAiY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgIgpAQCAt
MjA0OCw2MiArMjM2OCwxNjQgQEAgYm9vbCBUZXN0OjpIYXNTYW1lRml4dHVyZUNsYXNzKCkgewog
ICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gUnVucyB0aGUgdGVzdCBhbmQgdXBkYXRlcyB0aGUgdGVz
dCByZXN1bHQuCi12b2lkIFRlc3Q6OlJ1bigpIHsKLSAgaWYgKCFIYXNTYW1lRml4dHVyZUNsYXNz
KCkpIHJldHVybjsKLQotICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0gaW50
ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpOwogI2lmIEdURVNUX0hBU19TRUgKLSAgLy8gQ2F0Y2gg
U0VILXN0eWxlIGV4Y2VwdGlvbnMuCi0gIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5V
cG9uTGVhdmluZ0dUZXN0KCk7Ci0gIF9fdHJ5IHsKLSAgICBTZXRVcCgpOwotICB9IF9fZXhjZXB0
KGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCgKLSAgICAg
IEdldEV4Y2VwdGlvbkNvZGUoKSkpIHsKLSAgICBBZGRFeGNlcHRpb25UaHJvd25GYWlsdXJlKEdl
dEV4Y2VwdGlvbkNvZGUoKSwgIlNldFVwKCkiKTsKLSAgfQogCi0gIC8vIFdlIHdpbGwgcnVuIHRo
ZSB0ZXN0IG9ubHkgaWYgU2V0VXAoKSBoYWQgbm8gZmF0YWwgZmFpbHVyZS4KLSAgaWYgKCFIYXNG
YXRhbEZhaWx1cmUoKSkgewotICAgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9u
TGVhdmluZ0dUZXN0KCk7Ci0gICAgX190cnkgewotICAgICAgVGVzdEJvZHkoKTsKLSAgICB9IF9f
ZXhjZXB0KGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCgK
LSAgICAgICAgR2V0RXhjZXB0aW9uQ29kZSgpKSkgewotICAgICAgQWRkRXhjZXB0aW9uVGhyb3du
RmFpbHVyZShHZXRFeGNlcHRpb25Db2RlKCksICJ0aGUgdGVzdCBib2R5Iik7Ci0gICAgfQotICB9
CisvLyBBZGRzIGFuICJleGNlcHRpb24gdGhyb3duIiBmYXRhbCBmYWlsdXJlIHRvIHRoZSBjdXJy
ZW50IHRlc3QuICBUaGlzCisvLyBmdW5jdGlvbiByZXR1cm5zIGl0cyByZXN1bHQgdmlhIGFuIG91
dHB1dCBwYXJhbWV0ZXIgcG9pbnRlciBiZWNhdXNlIFZDKysKKy8vIHByb2hpYml0cyBjcmVhdGlv
biBvZiBvYmplY3RzIHdpdGggZGVzdHJ1Y3RvcnMgb24gc3RhY2sgaW4gZnVuY3Rpb25zCisvLyB1
c2luZyBfX3RyeSAoc2VlIGVycm9yIEMyNzEyKS4KK3N0YXRpYyBzdGQ6OnN0cmluZyogRm9ybWF0
U2VoRXhjZXB0aW9uTWVzc2FnZShEV09SRCBleGNlcHRpb25fY29kZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBsb2NhdGlvbikgewor
ICBNZXNzYWdlIG1lc3NhZ2U7CisgIG1lc3NhZ2UgPDwgIlNFSCBleGNlcHRpb24gd2l0aCBjb2Rl
IDB4IiA8PCBzdGQ6OnNldGJhc2UoMTYpIDw8CisgICAgZXhjZXB0aW9uX2NvZGUgPDwgc3RkOjpz
ZXRiYXNlKDEwKSA8PCAiIHRocm93biBpbiAiIDw8IGxvY2F0aW9uIDw8ICIuIjsKIAotICAvLyBI
b3dldmVyLCB3ZSB3YW50IHRvIGNsZWFuIHVwIGFzIG11Y2ggYXMgcG9zc2libGUuICBIZW5jZSB3
ZSB3aWxsCi0gIC8vIGFsd2F5cyBjYWxsIFRlYXJEb3duKCksIGV2ZW4gaWYgU2V0VXAoKSBvciB0
aGUgdGVzdCBib2R5IGhhcwotICAvLyBmYWlsZWQuCi0gIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dl
dHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7CisgIHJldHVybiBuZXcgc3RkOjpzdHJpbmcobWVz
c2FnZS5HZXRTdHJpbmcoKSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAorCituYW1l
c3BhY2UgaW50ZXJuYWwgeworCisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworLy8gQWRkcyBh
biAiZXhjZXB0aW9uIHRocm93biIgZmF0YWwgZmFpbHVyZSB0byB0aGUgY3VycmVudCB0ZXN0Lgor
c3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdEN4eEV4Y2VwdGlvbk1lc3NhZ2UoY29uc3QgY2hhciog
ZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBsb2NhdGlvbikgeworICBNZXNzYWdlIG1lc3NhZ2U7CisgIGlmIChkZXNj
cmlwdGlvbiAhPSBOVUxMKSB7CisgICAgbWVzc2FnZSA8PCAiQysrIGV4Y2VwdGlvbiB3aXRoIGRl
c2NyaXB0aW9uIFwiIiA8PCBkZXNjcmlwdGlvbiA8PCAiXCIiOworICB9IGVsc2UgeworICAgIG1l
c3NhZ2UgPDwgIlVua25vd24gQysrIGV4Y2VwdGlvbiI7CisgIH0KKyAgbWVzc2FnZSA8PCAiIHRo
cm93biBpbiAiIDw8IGxvY2F0aW9uIDw8ICIuIjsKKworICByZXR1cm4gbWVzc2FnZS5HZXRTdHJp
bmcoKTsKK30KKworc3RhdGljIHN0ZDo6c3RyaW5nIFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmlu
ZygKKyAgICBjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCk7CisKK0dvb2ds
ZVRlc3RGYWlsdXJlRXhjZXB0aW9uOjpHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbigKKyAgICBj
b25zdCBUZXN0UGFydFJlc3VsdCYgZmFpbHVyZSkKKyAgICA6IDo6c3RkOjpydW50aW1lX2Vycm9y
KFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmluZyhmYWlsdXJlKS5jX3N0cigpKSB7fQorCisjZW5k
aWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCisKKy8vIFdlIHB1dCB0aGVzZSBoZWxwZXIgZnVu
Y3Rpb25zIGluIHRoZSBpbnRlcm5hbCBuYW1lc3BhY2UgYXMgSUJNJ3MgeGxDCisvLyBjb21waWxl
ciByZWplY3RzIHRoZSBjb2RlIGlmIHRoZXkgd2VyZSBkZWNsYXJlZCBzdGF0aWMuCisKKy8vIFJ1
bnMgdGhlIGdpdmVuIG1ldGhvZCBhbmQgaGFuZGxlcyBTRUggZXhjZXB0aW9ucyBpdCB0aHJvd3Ms
IHdoZW4KKy8vIFNFSCBpcyBzdXBwb3J0ZWQ7IHJldHVybnMgdGhlIDAtdmFsdWUgZm9yIHR5cGUg
UmVzdWx0IGluIGNhc2Ugb2YgYW4KKy8vIFNFSCBleGNlcHRpb24uICAoTWljcm9zb2Z0IGNvbXBp
bGVycyBjYW5ub3QgaGFuZGxlIFNFSCBhbmQgQysrCisvLyBleGNlcHRpb25zIGluIHRoZSBzYW1l
IGZ1bmN0aW9uLiAgVGhlcmVmb3JlLCB3ZSBwcm92aWRlIGEgc2VwYXJhdGUKKy8vIHdyYXBwZXIg
ZnVuY3Rpb24gZm9yIGhhbmRsaW5nIFNFSCBleGNlcHRpb25zLikKK3RlbXBsYXRlIDxjbGFzcyBU
LCB0eXBlbmFtZSBSZXN1bHQ+CitSZXN1bHQgSGFuZGxlU2VoRXhjZXB0aW9uc0luTWV0aG9kSWZT
dXBwb3J0ZWQoCisgICAgVCogb2JqZWN0LCBSZXN1bHQgKFQ6OiptZXRob2QpKCksIGNvbnN0IGNo
YXIqIGxvY2F0aW9uKSB7CisjaWYgR1RFU1RfSEFTX1NFSAogICBfX3RyeSB7Ci0gICAgVGVhckRv
d24oKTsKLSAgfSBfX2V4Y2VwdChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpHVGVzdFNob3Vs
ZFByb2Nlc3NTRUgoCisgICAgcmV0dXJuIChvYmplY3QtPiptZXRob2QpKCk7CisgIH0gX19leGNl
cHQgKGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCggIC8v
IE5PTElOVAogICAgICAgR2V0RXhjZXB0aW9uQ29kZSgpKSkgewotICAgIEFkZEV4Y2VwdGlvblRo
cm93bkZhaWx1cmUoR2V0RXhjZXB0aW9uQ29kZSgpLCAiVGVhckRvd24oKSIpOworICAgIC8vIFdl
IGNyZWF0ZSB0aGUgZXhjZXB0aW9uIG1lc3NhZ2Ugb24gdGhlIGhlYXAgYmVjYXVzZSBWQysrIHBy
b2hpYml0cworICAgIC8vIGNyZWF0aW9uIG9mIG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycyBvbiBz
dGFjayBpbiBmdW5jdGlvbnMgdXNpbmcgX190cnkKKyAgICAvLyAoc2VlIGVycm9yIEMyNzEyKS4K
KyAgICBzdGQ6OnN0cmluZyogZXhjZXB0aW9uX21lc3NhZ2UgPSBGb3JtYXRTZWhFeGNlcHRpb25N
ZXNzYWdlKAorICAgICAgICBHZXRFeGNlcHRpb25Db2RlKCksIGxvY2F0aW9uKTsKKyAgICBpbnRl
cm5hbDo6UmVwb3J0RmFpbHVyZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjprRmF0
YWxGYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KmV4Y2VwdGlvbl9tZXNzYWdlKTsKKyAgICBkZWxldGUgZXhjZXB0aW9uX21lc3NhZ2U7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFJlc3VsdD4oMCk7CiAgIH0KKyNlbHNlCisgICh2b2lkKWxvY2F0
aW9uOworICByZXR1cm4gKG9iamVjdC0+Km1ldGhvZCkoKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFT
X1NFSAorfQogCi0jZWxzZSAgLy8gV2UgYXJlIG9uIGEgY29tcGlsZXIgb3IgcGxhdGZvcm0gdGhh
dCBkb2Vzbid0IHN1cHBvcnQgU0VILgotICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+
VXBvbkxlYXZpbmdHVGVzdCgpOwotICBTZXRVcCgpOworLy8gUnVucyB0aGUgZ2l2ZW4gbWV0aG9k
IGFuZCBjYXRjaGVzIGFuZCByZXBvcnRzIEMrKyBhbmQvb3IgU0VILXN0eWxlCisvLyBleGNlcHRp
b25zLCBpZiB0aGV5IGFyZSBzdXBwb3J0ZWQ7IHJldHVybnMgdGhlIDAtdmFsdWUgZm9yIHR5cGUK
Ky8vIFJlc3VsdCBpbiBjYXNlIG9mIGFuIFNFSCBleGNlcHRpb24uCit0ZW1wbGF0ZSA8Y2xhc3Mg
VCwgdHlwZW5hbWUgUmVzdWx0PgorUmVzdWx0IEhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3Vw
cG9ydGVkKAorICAgIFQqIG9iamVjdCwgUmVzdWx0IChUOjoqbWV0aG9kKSgpLCBjb25zdCBjaGFy
KiBsb2NhdGlvbikgeworICAvLyBOT1RFOiBUaGUgdXNlciBjb2RlIGNhbiBhZmZlY3QgdGhlIHdh
eSBpbiB3aGljaCBHb29nbGUgVGVzdCBoYW5kbGVzCisgIC8vIGV4Y2VwdGlvbnMgYnkgc2V0dGlu
ZyBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpLCBidXQgb25seSBiZWZvcmUKKyAgLy8gUlVO
X0FMTF9URVNUUygpIHN0YXJ0cy4gSXQgaXMgdGVjaG5pY2FsbHkgcG9zc2libGUgdG8gY2hlY2sg
dGhlIGZsYWcKKyAgLy8gYWZ0ZXIgdGhlIGV4Y2VwdGlvbiBpcyBjYXVnaHQgYW5kIGVpdGhlciBy
ZXBvcnQgb3IgcmUtdGhyb3cgdGhlCisgIC8vIGV4Y2VwdGlvbiBiYXNlZCBvbiB0aGUgZmxhZydz
IHZhbHVlOgorICAvLworICAvLyB0cnkgeworICAvLyAgIC8vIFBlcmZvcm0gdGhlIHRlc3QgbWV0
aG9kLgorICAvLyB9IGNhdGNoICguLi4pIHsKKyAgLy8gICBpZiAoR1RFU1RfRkxBRyhjYXRjaF9l
eGNlcHRpb25zKSkKKyAgLy8gICAgIC8vIFJlcG9ydCB0aGUgZXhjZXB0aW9uIGFzIGZhaWx1cmUu
CisgIC8vICAgZWxzZQorICAvLyAgICAgdGhyb3c7ICAvLyBSZS10aHJvd3MgdGhlIG9yaWdpbmFs
IGV4Y2VwdGlvbi4KKyAgLy8gfQorICAvLworICAvLyBIb3dldmVyLCB0aGUgcHVycG9zZSBvZiB0
aGlzIGZsYWcgaXMgdG8gYWxsb3cgdGhlIHByb2dyYW0gdG8gZHJvcCBpbnRvCisgIC8vIHRoZSBk
ZWJ1Z2dlciB3aGVuIHRoZSBleGNlcHRpb24gaXMgdGhyb3duLiBPbiBtb3N0IHBsYXRmb3Jtcywg
b25jZSB0aGUKKyAgLy8gY29udHJvbCBlbnRlcnMgdGhlIGNhdGNoIGJsb2NrLCB0aGUgZXhjZXB0
aW9uIG9yaWdpbiBpbmZvcm1hdGlvbiBpcworICAvLyBsb3N0IGFuZCB0aGUgZGVidWdnZXIgd2ls
bCBzdG9wIHRoZSBwcm9ncmFtIGF0IHRoZSBwb2ludCBvZiB0aGUKKyAgLy8gcmUtdGhyb3cgaW4g
dGhpcyBmdW5jdGlvbiAtLSBpbnN0ZWFkIG9mIGF0IHRoZSBwb2ludCBvZiB0aGUgb3JpZ2luYWwK
KyAgLy8gdGhyb3cgc3RhdGVtZW50IGluIHRoZSBjb2RlIHVuZGVyIHRlc3QuICBGb3IgdGhpcyBy
ZWFzb24sIHdlIHBlcmZvcm0KKyAgLy8gdGhlIGNoZWNrIGVhcmx5LCBzYWNyaWZpY2luZyB0aGUg
YWJpbGl0eSB0byBhZmZlY3QgR29vZ2xlIFRlc3QncworICAvLyBleGNlcHRpb24gaGFuZGxpbmcg
aW4gdGhlIG1ldGhvZCB3aGVyZSB0aGUgZXhjZXB0aW9uIGlzIHRocm93bi4KKyAgaWYgKGludGVy
bmFsOjpHZXRVbml0VGVzdEltcGwoKS0+Y2F0Y2hfZXhjZXB0aW9ucygpKSB7CisjaWYgR1RFU1Rf
SEFTX0VYQ0VQVElPTlMKKyAgICB0cnkgeworICAgICAgcmV0dXJuIEhhbmRsZVNlaEV4Y2VwdGlv
bnNJbk1ldGhvZElmU3VwcG9ydGVkKG9iamVjdCwgbWV0aG9kLCBsb2NhdGlvbik7CisgICAgfSBj
YXRjaCAoY29uc3QgQXNzZXJ0aW9uRXhjZXB0aW9uJikgeyAgLy8gTk9MSU5UCisgICAgICAvLyBU
aGlzIGZhaWx1cmUgd2FzIHJlcG9ydGVkIGFscmVhZHkuCisgICAgfSBjYXRjaCAoY29uc3QgaW50
ZXJuYWw6Okdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uJikgeyAgLy8gTk9MSU5UCisgICAgICAv
LyBUaGlzIGV4Y2VwdGlvbiB0eXBlIGNhbiBvbmx5IGJlIHRocm93biBieSBhIGZhaWxlZCBHb29n
bGUKKyAgICAgIC8vIFRlc3QgYXNzZXJ0aW9uIHdpdGggdGhlIGludGVudGlvbiBvZiBsZXR0aW5n
IGFub3RoZXIgdGVzdGluZworICAgICAgLy8gZnJhbWV3b3JrIGNhdGNoIGl0LiAgVGhlcmVmb3Jl
IHdlIGp1c3QgcmUtdGhyb3cgaXQuCisgICAgICB0aHJvdzsKKyAgICB9IGNhdGNoIChjb25zdCBz
dGQ6OmV4Y2VwdGlvbiYgZSkgeyAgLy8gTk9MSU5UCisgICAgICBpbnRlcm5hbDo6UmVwb3J0RmFp
bHVyZUluVW5rbm93bkxvY2F0aW9uKAorICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxG
YWlsdXJlLAorICAgICAgICAgIEZvcm1hdEN4eEV4Y2VwdGlvbk1lc3NhZ2UoZS53aGF0KCksIGxv
Y2F0aW9uKSk7CisgICAgfSBjYXRjaCAoLi4uKSB7ICAvLyBOT0xJTlQKKyAgICAgIGludGVybmFs
OjpSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oCisgICAgICAgICAgVGVzdFBhcnRSZXN1
bHQ6OmtGYXRhbEZhaWx1cmUsCisgICAgICAgICAgRm9ybWF0Q3h4RXhjZXB0aW9uTWVzc2FnZShO
VUxMLCBsb2NhdGlvbikpOworICAgIH0KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzdWx0Pigw
KTsKKyNlbHNlCisgICAgcmV0dXJuIEhhbmRsZVNlaEV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9y
dGVkKG9iamVjdCwgbWV0aG9kLCBsb2NhdGlvbik7CisjZW5kaWYgIC8vIEdURVNUX0hBU19FWENF
UFRJT05TCisgIH0gZWxzZSB7CisgICAgcmV0dXJuIChvYmplY3QtPiptZXRob2QpKCk7CisgIH0K
K30KKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiAKKy8vIFJ1bnMgdGhlIHRlc3QgYW5kIHVw
ZGF0ZXMgdGhlIHRlc3QgcmVzdWx0Lgordm9pZCBUZXN0OjpSdW4oKSB7CisgIGlmICghSGFzU2Ft
ZUZpeHR1cmVDbGFzcygpKSByZXR1cm47CisKKyAgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCogY29u
c3QgaW1wbCA9IGludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKTsKKyAgaW1wbC0+b3Nfc3RhY2tf
dHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKKyAgaW50ZXJuYWw6OkhhbmRsZUV4
Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKHRoaXMsICZUZXN0OjpTZXRVcCwgIlNldFVwKCki
KTsKICAgLy8gV2Ugd2lsbCBydW4gdGhlIHRlc3Qgb25seSBpZiBTZXRVcCgpIHdhcyBzdWNjZXNz
ZnVsLgogICBpZiAoIUhhc0ZhdGFsRmFpbHVyZSgpKSB7CiAgICAgaW1wbC0+b3Nfc3RhY2tfdHJh
Y2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgICBUZXN0Qm9keSgpOworICAgIGlu
dGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAgICAgICAgdGhp
cywgJlRlc3Q6OlRlc3RCb2R5LCAidGhlIHRlc3QgYm9keSIpOwogICB9CiAKICAgLy8gSG93ZXZl
ciwgd2Ugd2FudCB0byBjbGVhbiB1cCBhcyBtdWNoIGFzIHBvc3NpYmxlLiAgSGVuY2Ugd2Ugd2ls
bAogICAvLyBhbHdheXMgY2FsbCBUZWFyRG93bigpLCBldmVuIGlmIFNldFVwKCkgb3IgdGhlIHRl
c3QgYm9keSBoYXMKICAgLy8gZmFpbGVkLgogICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIo
KS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotICBUZWFyRG93bigpOwotI2VuZGlmICAvLyBHVEVTVF9I
QVNfU0VICisgIGludGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgK
KyAgICAgIHRoaXMsICZUZXN0OjpUZWFyRG93biwgIlRlYXJEb3duKCkiKTsKIH0KIAotCiAvLyBS
ZXR1cm5zIHRydWUgaWZmIHRoZSBjdXJyZW50IHRlc3QgaGFzIGEgZmF0YWwgZmFpbHVyZS4KIGJv
b2wgVGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkgewogICByZXR1cm4gaW50ZXJuYWw6OkdldFVuaXRU
ZXN0SW1wbCgpLT5jdXJyZW50X3Rlc3RfcmVzdWx0KCktPkhhc0ZhdGFsRmFpbHVyZSgpOwpAQCAt
MjExOCwyMiArMjU0MCwyOCBAQCBib29sIFRlc3Q6Okhhc05vbmZhdGFsRmFpbHVyZSgpIHsKIC8v
IGNsYXNzIFRlc3RJbmZvCiAKIC8vIENvbnN0cnVjdHMgYSBUZXN0SW5mbyBvYmplY3QuIEl0IGFz
c3VtZXMgb3duZXJzaGlwIG9mIHRoZSB0ZXN0IGZhY3RvcnkKLS8vIG9iamVjdCB2aWEgaW1wbF8u
Ci1UZXN0SW5mbzo6VGVzdEluZm8oY29uc3QgY2hhciogYV90ZXN0X2Nhc2VfbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX25hbWUsCi0gICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogYV90ZXN0X2Nhc2VfY29tbWVudCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBhX2NvbW1lbnQsCisvLyBvYmplY3QuCitUZXN0SW5mbzo6VGVzdEluZm8oY29uc3Qgc3Rk
OjpzdHJpbmcmIGFfdGVzdF9jYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIGFfbmFtZSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX3R5cGVf
cGFyYW0sCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV92YWx1ZV9wYXJhbSwKKyAg
ICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6Q29kZUxvY2F0aW9uIGFfY29kZV9sb2NhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6VHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCi0g
ICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSkgewot
ICBpbXBsXyA9IG5ldyBpbnRlcm5hbDo6VGVzdEluZm9JbXBsKHRoaXMsIGFfdGVzdF9jYXNlX25h
bWUsIGFfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhX3Rlc3Rf
Y2FzZV9jb21tZW50LCBhX2NvbW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZml4dHVyZV9jbGFzc19pZCwgZmFjdG9yeSk7Ci19CisgICAgICAgICAgICAgICAgICAg
aW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSkKKyAgICA6IHRlc3RfY2FzZV9uYW1l
XyhhX3Rlc3RfY2FzZV9uYW1lKSwKKyAgICAgIG5hbWVfKGFfbmFtZSksCisgICAgICB0eXBlX3Bh
cmFtXyhhX3R5cGVfcGFyYW0gPyBuZXcgc3RkOjpzdHJpbmcoYV90eXBlX3BhcmFtKSA6IE5VTEwp
LAorICAgICAgdmFsdWVfcGFyYW1fKGFfdmFsdWVfcGFyYW0gPyBuZXcgc3RkOjpzdHJpbmcoYV92
YWx1ZV9wYXJhbSkgOiBOVUxMKSwKKyAgICAgIGxvY2F0aW9uXyhhX2NvZGVfbG9jYXRpb24pLAor
ICAgICAgZml4dHVyZV9jbGFzc19pZF8oZml4dHVyZV9jbGFzc19pZCksCisgICAgICBzaG91bGRf
cnVuXyhmYWxzZSksCisgICAgICBpc19kaXNhYmxlZF8oZmFsc2UpLAorICAgICAgbWF0Y2hlc19m
aWx0ZXJfKGZhbHNlKSwKKyAgICAgIGZhY3RvcnlfKGZhY3RvcnkpLAorICAgICAgcmVzdWx0Xygp
IHt9CiAKIC8vIERlc3RydWN0cyBhIFRlc3RJbmZvIG9iamVjdC4KLVRlc3RJbmZvOjp+VGVzdElu
Zm8oKSB7Ci0gIGRlbGV0ZSBpbXBsXzsKLX0KK1Rlc3RJbmZvOjp+VGVzdEluZm8oKSB7IGRlbGV0
ZSBmYWN0b3J5XzsgfQogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCkBAIC0yMTQ0LDEwICsyNTcy
LDExIEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLwogLy8gICB0ZXN0X2Nhc2VfbmFtZTogICBu
YW1lIG9mIHRoZSB0ZXN0IGNhc2UKIC8vICAgbmFtZTogICAgICAgICAgICAgbmFtZSBvZiB0aGUg
dGVzdAotLy8gICB0ZXN0X2Nhc2VfY29tbWVudDogYSBjb21tZW50IG9uIHRoZSB0ZXN0IGNhc2Ug
dGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluCi0vLyAgICAgICAgICAgICAgICAgICAgICB0aGUgdGVz
dCBvdXRwdXQKLS8vICAgY29tbWVudDogICAgICAgICAgYSBjb21tZW50IG9uIHRoZSB0ZXN0IHRo
YXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKLS8vICAgICAgICAgICAgICAgICAgICAgdGVzdCBv
dXRwdXQKKy8vICAgdHlwZV9wYXJhbTogICAgICAgdGhlIG5hbWUgb2YgdGhlIHRlc3QncyB0eXBl
IHBhcmFtZXRlciwgb3IgTlVMTCBpZgorLy8gICAgICAgICAgICAgICAgICAgICB0aGlzIGlzIG5v
dCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisvLyAgIHZhbHVlX3BhcmFt
OiAgICAgIHRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRlc3QncyB2YWx1ZSBwYXJhbWV0ZXIs
CisvLyAgICAgICAgICAgICAgICAgICAgIG9yIE5VTEwgaWYgdGhpcyBpcyBub3QgYSB2YWx1ZS1w
YXJhbWV0ZXJpemVkIHRlc3QuCisvLyAgIGNvZGVfbG9jYXRpb246ICAgIGNvZGUgbG9jYXRpb24g
d2hlcmUgdGhlIHRlc3QgaXMgZGVmaW5lZAogLy8gICBmaXh0dXJlX2NsYXNzX2lkOiBJRCBvZiB0
aGUgdGVzdCBmaXh0dXJlIGNsYXNzCiAvLyAgIHNldF91cF90YzogICAgICAgIHBvaW50ZXIgdG8g
dGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBjYXNlCiAvLyAgIHRlYXJfZG93bl90
YzogICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgdGVhcnMgZG93biB0aGUgdGVzdCBj
YXNlCkBAIC0yMTU1LDIyICsyNTg0LDI0IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLyAgICAg
ICAgICAgICAgICAgICAgIFRoZSBuZXdseSBjcmVhdGVkIFRlc3RJbmZvIGluc3RhbmNlIHdpbGwg
YXNzdW1lCiAvLyAgICAgICAgICAgICAgICAgICAgIG93bmVyc2hpcCBvZiB0aGUgZmFjdG9yeSBv
YmplY3QuCiBUZXN0SW5mbyogTWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8oCi0gICAgY29uc3QgY2hh
ciogdGVzdF9jYXNlX25hbWUsIGNvbnN0IGNoYXIqIG5hbWUsCi0gICAgY29uc3QgY2hhciogdGVz
dF9jYXNlX2NvbW1lbnQsIGNvbnN0IGNoYXIqIGNvbW1lbnQsCisgICAgY29uc3QgY2hhciogdGVz
dF9jYXNlX25hbWUsCisgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICBjb25zdCBjaGFyKiB0eXBl
X3BhcmFtLAorICAgIGNvbnN0IGNoYXIqIHZhbHVlX3BhcmFtLAorICAgIENvZGVMb2NhdGlvbiBj
b2RlX2xvY2F0aW9uLAogICAgIFR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkLAogICAgIFNldFVwVGVz
dENhc2VGdW5jIHNldF91cF90YywKICAgICBUZWFyRG93blRlc3RDYXNlRnVuYyB0ZWFyX2Rvd25f
dGMsCiAgICAgVGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5KSB7CiAgIFRlc3RJbmZvKiBjb25zdCB0
ZXN0X2luZm8gPQotICAgICAgbmV3IFRlc3RJbmZvKHRlc3RfY2FzZV9uYW1lLCBuYW1lLCB0ZXN0
X2Nhc2VfY29tbWVudCwgY29tbWVudCwKLSAgICAgICAgICAgICAgICAgICBmaXh0dXJlX2NsYXNz
X2lkLCBmYWN0b3J5KTsKKyAgICAgIG5ldyBUZXN0SW5mbyh0ZXN0X2Nhc2VfbmFtZSwgbmFtZSwg
dHlwZV9wYXJhbSwgdmFsdWVfcGFyYW0sCisgICAgICAgICAgICAgICAgICAgY29kZV9sb2NhdGlv
biwgZml4dHVyZV9jbGFzc19pZCwgZmFjdG9yeSk7CiAgIEdldFVuaXRUZXN0SW1wbCgpLT5BZGRU
ZXN0SW5mbyhzZXRfdXBfdGMsIHRlYXJfZG93bl90YywgdGVzdF9pbmZvKTsKICAgcmV0dXJuIHRl
c3RfaW5mbzsKIH0KIAotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiB2b2lkIFJlcG9ydEludmFs
aWRUZXN0Q2FzZVR5cGUoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbikgewogICBN
ZXNzYWdlIGVycm9yczsKICAgZXJyb3JzCiAgICAgICA8PCAiQXR0ZW1wdGVkIHJlZGVmaW5pdGlv
biBvZiB0ZXN0IGNhc2UgIiA8PCB0ZXN0X2Nhc2VfbmFtZSA8PCAiLlxuIgpAQCAtMjE4Miw0OCAr
MjYxMywxMiBAQCB2b2lkIFJlcG9ydEludmFsaWRUZXN0Q2FzZVR5cGUoY29uc3QgY2hhciogdGVz
dF9jYXNlX25hbWUsCiAgICAgICA8PCAicHJvYmFibHkgcmVuYW1lIG9uZSBvZiB0aGUgY2xhc3Nl
cyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50XG4iCiAgICAgICA8PCAidGVzdCBjYXNl
cy4iOwogCi0gIGZwcmludGYoc3RkZXJyLCAiJXMgJXMiLCBGb3JtYXRGaWxlTG9jYXRpb24oZmls
ZSwgbGluZSkuY19zdHIoKSwKLSAgICAgICAgICBlcnJvcnMuR2V0U3RyaW5nKCkuY19zdHIoKSk7
CisgIEdURVNUX0xPR18oRVJST1IpIDw8IEZvcm1hdEZpbGVMb2NhdGlvbihjb2RlX2xvY2F0aW9u
LmZpbGUuY19zdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvZGVfbG9jYXRpb24ubGluZSkKKyAgICAgICAgICAgICAgICAgICAgPDwgIiAiIDw8IGVycm9y
cy5HZXRTdHJpbmcoKTsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQogfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCiAKLS8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBuYW1lLgot
Y29uc3QgY2hhciogVGVzdEluZm86OnRlc3RfY2FzZV9uYW1lKCkgY29uc3QgewotICByZXR1cm4g
aW1wbF8tPnRlc3RfY2FzZV9uYW1lKCk7Ci19Ci0KLS8vIFJldHVybnMgdGhlIHRlc3QgbmFtZS4K
LWNvbnN0IGNoYXIqIFRlc3RJbmZvOjpuYW1lKCkgY29uc3QgewotICByZXR1cm4gaW1wbF8tPm5h
bWUoKTsKLX0KLQotLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIGNvbW1lbnQuCi1jb25zdCBjaGFy
KiBUZXN0SW5mbzo6dGVzdF9jYXNlX2NvbW1lbnQoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBsXy0+
dGVzdF9jYXNlX2NvbW1lbnQoKTsKLX0KLQotLy8gUmV0dXJucyB0aGUgdGVzdCBjb21tZW50Lgot
Y29uc3QgY2hhciogVGVzdEluZm86OmNvbW1lbnQoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBsXy0+
Y29tbWVudCgpOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IHNob3VsZCBydW4u
Ci1ib29sIFRlc3RJbmZvOjpzaG91bGRfcnVuKCkgY29uc3QgeyByZXR1cm4gaW1wbF8tPnNob3Vs
ZF9ydW4oKTsgfQotCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IG1hdGNoZXMgdGhlIHVz
ZXItc3BlY2lmaWVkIGZpbHRlci4KLWJvb2wgVGVzdEluZm86Om1hdGNoZXNfZmlsdGVyKCkgY29u
c3QgeyByZXR1cm4gaW1wbF8tPm1hdGNoZXNfZmlsdGVyKCk7IH0KLQotLy8gUmV0dXJucyB0aGUg
cmVzdWx0IG9mIHRoZSB0ZXN0LgotY29uc3QgVGVzdFJlc3VsdCogVGVzdEluZm86OnJlc3VsdCgp
IGNvbnN0IHsgcmV0dXJuIGltcGxfLT5yZXN1bHQoKTsgfQotCi0vLyBJbmNyZW1lbnRzIHRoZSBu
dW1iZXIgb2YgZGVhdGggdGVzdHMgZW5jb3VudGVyZWQgaW4gdGhpcyB0ZXN0IHNvCi0vLyBmYXIu
Ci1pbnQgVGVzdEluZm86OmluY3JlbWVudF9kZWF0aF90ZXN0X2NvdW50KCkgewotICByZXR1cm4g
aW1wbF8tPnJlc3VsdCgpLT5pbmNyZW1lbnRfZGVhdGhfdGVzdF9jb3VudCgpOwotfQotCiBuYW1l
c3BhY2UgewogCiAvLyBBIHByZWRpY2F0ZSB0aGF0IGNoZWNrcyB0aGUgdGVzdCBuYW1lIG9mIGEg
VGVzdEluZm8gYWdhaW5zdCBhIGtub3duCkBAIC0yMjQ0LDExICsyNjM5LDExIEBAIGNsYXNzIFRl
c3ROYW1lSXMgewogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgbmFtZSBvZiB0ZXN0
X2luZm8gbWF0Y2hlcyBuYW1lXy4KICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFRlc3RJbmZvICog
dGVzdF9pbmZvKSBjb25zdCB7Ci0gICAgcmV0dXJuIHRlc3RfaW5mbyAmJiBpbnRlcm5hbDo6U3Ry
aW5nKHRlc3RfaW5mby0+bmFtZSgpKS5Db21wYXJlKG5hbWVfKSA9PSAwOworICAgIHJldHVybiB0
ZXN0X2luZm8gJiYgdGVzdF9pbmZvLT5uYW1lKCkgPT0gbmFtZV87CiAgIH0KIAogIHByaXZhdGU6
Ci0gIGludGVybmFsOjpTdHJpbmcgbmFtZV87CisgIHN0ZDo6c3RyaW5nIG5hbWVfOwogfTsKIAog
fSAgLy8gbmFtZXNwYWNlCkBAIC0yMjU5LDc4ICsyNjU0LDYwIEBAIG5hbWVzcGFjZSBpbnRlcm5h
bCB7CiAvLyBhbmQgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgaW50byByZWd1bGFyIHRlc3RzIGFu
ZCByZWdpc3RlcnMgdGhvc2UuCiAvLyBUaGlzIHdpbGwgYmUgZG9uZSBqdXN0IG9uY2UgZHVyaW5n
IHRoZSBwcm9ncmFtIHJ1bnRpbWUuCiB2b2lkIFVuaXRUZXN0SW1wbDo6UmVnaXN0ZXJQYXJhbWV0
ZXJpemVkVGVzdHMoKSB7Ci0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgaWYgKCFwYXJhbWV0
ZXJpemVkX3Rlc3RzX3JlZ2lzdGVyZWRfKSB7CiAgICAgcGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lz
dHJ5Xy5SZWdpc3RlclRlc3RzKCk7CiAgICAgcGFyYW1ldGVyaXplZF90ZXN0c19yZWdpc3RlcmVk
XyA9IHRydWU7CiAgIH0KLSNlbmRpZgogfQogCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKwog
Ly8gQ3JlYXRlcyB0aGUgdGVzdCBvYmplY3QsIHJ1bnMgaXQsIHJlY29yZHMgaXRzIHJlc3VsdCwg
YW5kIHRoZW4KIC8vIGRlbGV0ZXMgaXQuCi12b2lkIFRlc3RJbmZvSW1wbDo6UnVuKCkgewordm9p
ZCBUZXN0SW5mbzo6UnVuKCkgewogICBpZiAoIXNob3VsZF9ydW5fKSByZXR1cm47CiAKICAgLy8g
VGVsbHMgVW5pdFRlc3Qgd2hlcmUgdG8gc3RvcmUgdGVzdCByZXN1bHQuCi0gIFVuaXRUZXN0SW1w
bCogY29uc3QgaW1wbCA9IGludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKTsKLSAgaW1wbC0+c2V0
X2N1cnJlbnRfdGVzdF9pbmZvKHBhcmVudF8pOworICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBj
b25zdCBpbXBsID0gaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpOworICBpbXBsLT5zZXRfY3Vy
cmVudF90ZXN0X2luZm8odGhpcyk7CiAKICAgVGVzdEV2ZW50TGlzdGVuZXIqIHJlcGVhdGVyID0g
VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpLnJlcGVhdGVyKCk7CiAKICAgLy8g
Tm90aWZpZXMgdGhlIHVuaXQgdGVzdCBldmVudCBsaXN0ZW5lcnMgdGhhdCBhIHRlc3QgaXMgYWJv
dXQgdG8gc3RhcnQuCi0gIHJlcGVhdGVyLT5PblRlc3RTdGFydCgqcGFyZW50Xyk7CisgIHJlcGVh
dGVyLT5PblRlc3RTdGFydCgqdGhpcyk7CiAKLSAgY29uc3QgVGltZUluTWlsbGlzIHN0YXJ0ID0g
R2V0VGltZUluTWlsbGlzKCk7CisgIGNvbnN0IFRpbWVJbk1pbGxpcyBzdGFydCA9IGludGVybmFs
OjpHZXRUaW1lSW5NaWxsaXMoKTsKIAogICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+
VXBvbkxlYXZpbmdHVGVzdCgpOwotI2lmIEdURVNUX0hBU19TRUgKLSAgLy8gQ2F0Y2ggU0VILXN0
eWxlIGV4Y2VwdGlvbnMuCi0gIFRlc3QqIHRlc3QgPSBOVUxMOwotCi0gIF9fdHJ5IHsKLSAgICAv
LyBDcmVhdGVzIHRoZSB0ZXN0IG9iamVjdC4KLSAgICB0ZXN0ID0gZmFjdG9yeV8tPkNyZWF0ZVRl
c3QoKTsKLSAgfSBfX2V4Y2VwdChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpHVGVzdFNob3Vs
ZFByb2Nlc3NTRUgoCi0gICAgICBHZXRFeGNlcHRpb25Db2RlKCkpKSB7Ci0gICAgQWRkRXhjZXB0
aW9uVGhyb3duRmFpbHVyZShHZXRFeGNlcHRpb25Db2RlKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAidGhlIHRlc3QgZml4dHVyZSdzIGNvbnN0cnVjdG9yIik7Ci0gICAgcmV0dXJu
OwotICB9Ci0jZWxzZSAgLy8gV2UgYXJlIG9uIGEgY29tcGlsZXIgb3IgcGxhdGZvcm0gdGhhdCBk
b2Vzbid0IHN1cHBvcnQgU0VILgotCi0gIC8vIFRPRE8od2FuKTogSWYgdGVzdC0+UnVuKCkgdGhy
b3dzLCB0ZXN0IHdvbid0IGJlIGRlbGV0ZWQuICBUaGlzIGlzCi0gIC8vIG5vdCBhIHByb2JsZW0g
bm93IGFzIHdlIGRvbid0IHVzZSBleGNlcHRpb25zLiAgSWYgd2Ugd2VyZSB0bwotICAvLyBlbmFi
bGUgZXhjZXB0aW9ucywgd2Ugc2hvdWxkIHJldmlzZSB0aGUgZm9sbG93aW5nIHRvIGJlCi0gIC8v
IGV4Y2VwdGlvbi1zYWZlLgogCiAgIC8vIENyZWF0ZXMgdGhlIHRlc3Qgb2JqZWN0LgotICBUZXN0
KiB0ZXN0ID0gZmFjdG9yeV8tPkNyZWF0ZVRlc3QoKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NF
SAorICBUZXN0KiBjb25zdCB0ZXN0ID0gaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhv
ZElmU3VwcG9ydGVkKAorICAgICAgZmFjdG9yeV8sICZpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNl
OjpDcmVhdGVUZXN0LAorICAgICAgInRoZSB0ZXN0IGZpeHR1cmUncyBjb25zdHJ1Y3RvciIpOwog
Ci0gIC8vIFJ1bnMgdGhlIHRlc3Qgb25seSBpZiB0aGUgY29uc3RydWN0b3Igb2YgdGhlIHRlc3Qg
Zml4dHVyZSBkaWRuJ3QKLSAgLy8gZ2VuZXJhdGUgYSBmYXRhbCBmYWlsdXJlLgorICAvLyBSdW5z
IHRoZSB0ZXN0IGlmIHRoZSBjb25zdHJ1Y3RvciBkaWRuJ3QgZ2VuZXJhdGUgYSBmYXRhbCBmYWls
dXJlLgorICAvLyBOb3RlIHRoYXQgdGhlIG9iamVjdCB3aWxsIG5vdCBiZSBudWxsCiAgIGlmICgh
VGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkpIHsKKyAgICAvLyBUaGlzIGRvZXNuJ3QgdGhyb3cgYXMg
YWxsIHVzZXIgY29kZSB0aGF0IGNhbiB0aHJvdyBhcmUgd3JhcHBlZCBpbnRvCisgICAgLy8gZXhj
ZXB0aW9uIGhhbmRsaW5nIGNvZGUuCiAgICAgdGVzdC0+UnVuKCk7CiAgIH0KIAotICAvLyBEZWxl
dGVzIHRoZSB0ZXN0IG9iamVjdC4KLSAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVw
b25MZWF2aW5nR1Rlc3QoKTsKLSAgZGVsZXRlIHRlc3Q7Ci0gIHRlc3QgPSBOVUxMOworICAgIC8v
IERlbGV0ZXMgdGhlIHRlc3Qgb2JqZWN0LgorICAgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRl
cigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7CisgICAgaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJ
bk1ldGhvZElmU3VwcG9ydGVkKAorICAgICAgICB0ZXN0LCAmVGVzdDo6RGVsZXRlU2VsZl8sICJ0
aGUgdGVzdCBmaXh0dXJlJ3MgZGVzdHJ1Y3RvciIpOwogCi0gIHJlc3VsdF8uc2V0X2VsYXBzZWRf
dGltZShHZXRUaW1lSW5NaWxsaXMoKSAtIHN0YXJ0KTsKKyAgcmVzdWx0Xy5zZXRfZWxhcHNlZF90
aW1lKGludGVybmFsOjpHZXRUaW1lSW5NaWxsaXMoKSAtIHN0YXJ0KTsKIAogICAvLyBOb3RpZmll
cyB0aGUgdW5pdCB0ZXN0IGV2ZW50IGxpc3RlbmVyIHRoYXQgYSB0ZXN0IGhhcyBqdXN0IGZpbmlz
aGVkLgotICByZXBlYXRlci0+T25UZXN0RW5kKCpwYXJlbnRfKTsKKyAgcmVwZWF0ZXItPk9uVGVz
dEVuZCgqdGhpcyk7CiAKICAgLy8gVGVsbHMgVW5pdFRlc3QgdG8gc3RvcCBhc3NvY2lhdGluZyBh
c3NlcnRpb24gcmVzdWx0cyB0byB0aGlzCiAgIC8vIHRlc3QuCiAgIGltcGwtPnNldF9jdXJyZW50
X3Rlc3RfaW5mbyhOVUxMKTsKIH0KIAotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KIC8vIGNs
YXNzIFRlc3RDYXNlCiAKIC8vIEdldHMgdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIHRlc3RzIGlu
IHRoaXMgdGVzdCBjYXNlLgpAQCAtMjM0MywxMCArMjcyMCwyMSBAQCBpbnQgVGVzdENhc2U6OmZh
aWxlZF90ZXN0X2NvdW50KCkgY29uc3QgewogICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlz
dF8sIFRlc3RGYWlsZWQpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVz
dHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0LgoraW50IFRlc3RDYXNl
OjpyZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBDb3Vu
dElmKHRlc3RfaW5mb19saXN0XywgVGVzdFJlcG9ydGFibGVEaXNhYmxlZCk7Cit9CisKKy8vIEdl
dHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KIGludCBU
ZXN0Q2FzZTo6ZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJuIENvdW50SWYo
dGVzdF9pbmZvX2xpc3RfLCBUZXN0RGlzYWJsZWQpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIg
b2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KK2ludCBUZXN0Q2FzZTo6
cmVwb3J0YWJsZV90ZXN0X2NvdW50KCkgY29uc3QgeworICByZXR1cm4gQ291bnRJZih0ZXN0X2lu
Zm9fbGlzdF8sIFRlc3RSZXBvcnRhYmxlKTsKK30KKwogLy8gR2V0IHRoZSBudW1iZXIgb2YgdGVz
dHMgaW4gdGhpcyB0ZXN0IGNhc2UgdGhhdCBzaG91bGQgcnVuLgogaW50IFRlc3RDYXNlOjp0ZXN0
X3RvX3J1bl9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJuIENvdW50SWYodGVzdF9pbmZvX2xpc3Rf
LCBTaG91bGRSdW5UZXN0KTsKQEAgLTIzNjIsMTMgKzI3NTAsMTUgQEAgaW50IFRlc3RDYXNlOjp0
b3RhbF90ZXN0X2NvdW50KCkgY29uc3QgewogLy8gQXJndW1lbnRzOgogLy8KIC8vICAgbmFtZTog
ICAgICAgICBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UKKy8vICAgYV90eXBlX3BhcmFtOiB0aGUgbmFt
ZSBvZiB0aGUgdGVzdCBjYXNlJ3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYKKy8vICAgICAg
ICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRl
c3QgY2FzZS4KIC8vICAgc2V0X3VwX3RjOiAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0
IHNldHMgdXAgdGhlIHRlc3QgY2FzZQogLy8gICB0ZWFyX2Rvd25fdGM6IHBvaW50ZXIgdG8gdGhl
IGZ1bmN0aW9uIHRoYXQgdGVhcnMgZG93biB0aGUgdGVzdCBjYXNlCi1UZXN0Q2FzZTo6VGVzdENh
c2UoY29uc3QgY2hhciogYV9uYW1lLCBjb25zdCBjaGFyKiBhX2NvbW1lbnQsCitUZXN0Q2FzZTo6
VGVzdENhc2UoY29uc3QgY2hhciogYV9uYW1lLCBjb25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sCiAg
ICAgICAgICAgICAgICAgICAgVGVzdDo6U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAg
ICAgICAgICAgICAgICAgIFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YykK
ICAgICA6IG5hbWVfKGFfbmFtZSksCi0gICAgICBjb21tZW50XyhhX2NvbW1lbnQpLAorICAgICAg
dHlwZV9wYXJhbV8oYV90eXBlX3BhcmFtID8gbmV3IHN0ZDo6c3RyaW5nKGFfdHlwZV9wYXJhbSkg
OiBOVUxMKSwKICAgICAgIHNldF91cF90Y18oc2V0X3VwX3RjKSwKICAgICAgIHRlYXJfZG93bl90
Y18odGVhcl9kb3duX3RjKSwKICAgICAgIHNob3VsZF9ydW5fKGZhbHNlKSwKQEAgLTI0MTMsNDUg
KzI4MDMsMjcgQEAgdm9pZCBUZXN0Q2FzZTo6UnVuKCkgewogCiAgIHJlcGVhdGVyLT5PblRlc3RD
YXNlU3RhcnQoKnRoaXMpOwogICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxl
YXZpbmdHVGVzdCgpOwotICBzZXRfdXBfdGNfKCk7CisgIGludGVybmFsOjpIYW5kbGVFeGNlcHRp
b25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAgICAgIHRoaXMsICZUZXN0Q2FzZTo6UnVuU2V0VXBU
ZXN0Q2FzZSwgIlNldFVwVGVzdENhc2UoKSIpOwogCiAgIGNvbnN0IGludGVybmFsOjpUaW1lSW5N
aWxsaXMgc3RhcnQgPSBpbnRlcm5hbDo6R2V0VGltZUluTWlsbGlzKCk7CiAgIGZvciAoaW50IGkg
PSAwOyBpIDwgdG90YWxfdGVzdF9jb3VudCgpOyBpKyspIHsKLSAgICBHZXRNdXRhYmxlVGVzdElu
Zm8oaSktPmltcGwoKS0+UnVuKCk7CisgICAgR2V0TXV0YWJsZVRlc3RJbmZvKGkpLT5SdW4oKTsK
ICAgfQogICBlbGFwc2VkX3RpbWVfID0gaW50ZXJuYWw6OkdldFRpbWVJbk1pbGxpcygpIC0gc3Rh
cnQ7CiAKICAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3Qo
KTsKLSAgdGVhcl9kb3duX3RjXygpOworICBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0
aG9kSWZTdXBwb3J0ZWQoCisgICAgICB0aGlzLCAmVGVzdENhc2U6OlJ1blRlYXJEb3duVGVzdENh
c2UsICJUZWFyRG93blRlc3RDYXNlKCkiKTsKKwogICByZXBlYXRlci0+T25UZXN0Q2FzZUVuZCgq
dGhpcyk7CiAgIGltcGwtPnNldF9jdXJyZW50X3Rlc3RfY2FzZShOVUxMKTsKIH0KIAogLy8gQ2xl
YXJzIHRoZSByZXN1bHRzIG9mIGFsbCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KIHZvaWQgVGVz
dENhc2U6OkNsZWFyUmVzdWx0KCkgewotICBGb3JFYWNoKHRlc3RfaW5mb19saXN0XywgaW50ZXJu
YWw6OlRlc3RJbmZvSW1wbDo6Q2xlYXJUZXN0UmVzdWx0KTsKLX0KLQotLy8gUmV0dXJucyB0cnVl
IGlmZiB0ZXN0IHBhc3NlZC4KLWJvb2wgVGVzdENhc2U6OlRlc3RQYXNzZWQoY29uc3QgVGVzdElu
Zm8gKiB0ZXN0X2luZm8pIHsKLSAgY29uc3QgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbCogY29uc3Qg
aW1wbCA9IHRlc3RfaW5mby0+aW1wbCgpOwotICByZXR1cm4gaW1wbC0+c2hvdWxkX3J1bigpICYm
IGltcGwtPnJlc3VsdCgpLT5QYXNzZWQoKTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0
IGZhaWxlZC4KLWJvb2wgVGVzdENhc2U6OlRlc3RGYWlsZWQoY29uc3QgVGVzdEluZm8gKiB0ZXN0
X2luZm8pIHsKLSAgY29uc3QgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbCogY29uc3QgaW1wbCA9IHRl
c3RfaW5mby0+aW1wbCgpOwotICByZXR1cm4gaW1wbC0+c2hvdWxkX3J1bigpICYmIGltcGwtPnJl
c3VsdCgpLT5GYWlsZWQoKTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0IGlzIGRpc2Fi
bGVkLgotYm9vbCBUZXN0Q2FzZTo6VGVzdERpc2FibGVkKGNvbnN0IFRlc3RJbmZvICogdGVzdF9p
bmZvKSB7Ci0gIHJldHVybiB0ZXN0X2luZm8tPmltcGwoKS0+aXNfZGlzYWJsZWQoKTsKLX0KLQot
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiB0ZXN0IHNob3VsZCBydW4uCi1ib29sIFRlc3RD
YXNlOjpTaG91bGRSdW5UZXN0KGNvbnN0IFRlc3RJbmZvICp0ZXN0X2luZm8pIHsKLSAgcmV0dXJu
IHRlc3RfaW5mby0+aW1wbCgpLT5zaG91bGRfcnVuKCk7CisgIGFkX2hvY190ZXN0X3Jlc3VsdF8u
Q2xlYXIoKTsKKyAgRm9yRWFjaCh0ZXN0X2luZm9fbGlzdF8sIFRlc3RJbmZvOjpDbGVhclRlc3RS
ZXN1bHQpOwogfQogCiAvLyBTaHVmZmxlcyB0aGUgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCkBA
IC0yNDcxLDIwICsyODQzLDIwIEBAIHZvaWQgVGVzdENhc2U6OlVuc2h1ZmZsZVRlc3RzKCkgewog
Ly8KIC8vIEZvcm1hdENvdW50YWJsZU5vdW4oMSwgImZvcm11bGEiLCAiZm9ybXVsaSIpIHJldHVy
bnMgIjEgZm9ybXVsYSIuCiAvLyBGb3JtYXRDb3VudGFibGVOb3VuKDUsICJib29rIiwgImJvb2tz
IikgcmV0dXJucyAiNSBib29rcyIuCi1zdGF0aWMgaW50ZXJuYWw6OlN0cmluZyBGb3JtYXRDb3Vu
dGFibGVOb3VuKGludCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqIHNpbmd1bGFyX2Zvcm0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBwbHVyYWxfZm9ybSkgewotICBy
ZXR1cm4gaW50ZXJuYWw6OlN0cmluZzo6Rm9ybWF0KCIlZCAlcyIsIGNvdW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ID09IDEgPyBzaW5ndWxhcl9mb3JtIDogcGx1
cmFsX2Zvcm0pOworc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdENvdW50YWJsZU5vdW4oaW50IGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
IHNpbmd1bGFyX2Zvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICogcGx1cmFsX2Zvcm0pIHsKKyAgcmV0dXJuIGludGVybmFsOjpTdHJlYW1hYmxl
VG9TdHJpbmcoY291bnQpICsgIiAiICsKKyAgICAgIChjb3VudCA9PSAxID8gc2luZ3VsYXJfZm9y
bSA6IHBsdXJhbF9mb3JtKTsKIH0KIAogLy8gRm9ybWF0cyB0aGUgY291bnQgb2YgdGVzdHMuCi1z
dGF0aWMgaW50ZXJuYWw6OlN0cmluZyBGb3JtYXRUZXN0Q291bnQoaW50IHRlc3RfY291bnQpIHsK
K3N0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRUZXN0Q291bnQoaW50IHRlc3RfY291bnQpIHsKICAg
cmV0dXJuIEZvcm1hdENvdW50YWJsZU5vdW4odGVzdF9jb3VudCwgInRlc3QiLCAidGVzdHMiKTsK
IH0KIAogLy8gRm9ybWF0cyB0aGUgY291bnQgb2YgdGVzdCBjYXNlcy4KLXN0YXRpYyBpbnRlcm5h
bDo6U3RyaW5nIEZvcm1hdFRlc3RDYXNlQ291bnQoaW50IHRlc3RfY2FzZV9jb3VudCkgeworc3Rh
dGljIHN0ZDo6c3RyaW5nIEZvcm1hdFRlc3RDYXNlQ291bnQoaW50IHRlc3RfY2FzZV9jb3VudCkg
ewogICByZXR1cm4gRm9ybWF0Q291bnRhYmxlTm91bih0ZXN0X2Nhc2VfY291bnQsICJ0ZXN0IGNh
c2UiLCAidGVzdCBjYXNlcyIpOwogfQogCkBAIC0yNTA0LDEzICsyODc2LDE1IEBAIHN0YXRpYyBj
b25zdCBjaGFyICogVGVzdFBhcnRSZXN1bHRUeXBlVG9TdHJpbmcoVGVzdFBhcnRSZXN1bHQ6OlR5
cGUgdHlwZSkgewogI2Vsc2UKICAgICAgIHJldHVybiAiRmFpbHVyZVxuIjsKICNlbmRpZgorICAg
IGRlZmF1bHQ6CisgICAgICByZXR1cm4gIlVua25vd24gcmVzdWx0IHR5cGUiOwogICB9Ci0KLSAg
cmV0dXJuICJVbmtub3duIHJlc3VsdCB0eXBlIjsKIH0KIAotLy8gUHJpbnRzIGEgVGVzdFBhcnRS
ZXN1bHQgdG8gYSBTdHJpbmcuCi1zdGF0aWMgaW50ZXJuYWw6OlN0cmluZyBQcmludFRlc3RQYXJ0
UmVzdWx0VG9TdHJpbmcoCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBQcmludHMgYSBUZXN0
UGFydFJlc3VsdCB0byBhbiBzdGQ6OnN0cmluZy4KK3N0YXRpYyBzdGQ6OnN0cmluZyBQcmludFRl
c3RQYXJ0UmVzdWx0VG9TdHJpbmcoCiAgICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFy
dF9yZXN1bHQpIHsKICAgcmV0dXJuIChNZXNzYWdlKCkKICAgICAgICAgICA8PCBpbnRlcm5hbDo6
Rm9ybWF0RmlsZUxvY2F0aW9uKHRlc3RfcGFydF9yZXN1bHQuZmlsZV9uYW1lKCksCkBAIC0yNTIx
LDcgKzI4OTUsNyBAQCBzdGF0aWMgaW50ZXJuYWw6OlN0cmluZyBQcmludFRlc3RQYXJ0UmVzdWx0
VG9TdHJpbmcoCiAKIC8vIFByaW50cyBhIFRlc3RQYXJ0UmVzdWx0Lgogc3RhdGljIHZvaWQgUHJp
bnRUZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkg
ewotICBjb25zdCBpbnRlcm5hbDo6U3RyaW5nJiByZXN1bHQgPQorICBjb25zdCBzdGQ6OnN0cmlu
ZyYgcmVzdWx0ID0KICAgICAgIFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmluZyh0ZXN0X3BhcnRf
cmVzdWx0KTsKICAgcHJpbnRmKCIlc1xuIiwgcmVzdWx0LmNfc3RyKCkpOwogICBmZmx1c2goc3Rk
b3V0KTsKQEAgLTI1NDAsOCArMjkxNCw2IEBAIHN0YXRpYyB2b2lkIFByaW50VGVzdFBhcnRSZXN1
bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKIAogLy8gY2xhc3Mg
UHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyCiAKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KIGVu
dW0gR1Rlc3RDb2xvciB7CiAgIENPTE9SX0RFRkFVTFQsCiAgIENPTE9SX1JFRCwKQEAgLTI1NDks
MTAgKzI5MjEsMTEgQEAgZW51bSBHVGVzdENvbG9yIHsKICAgQ09MT1JfWUVMTE9XCiB9OwogCi0j
aWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyNpZiBHVEVT
VF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRSAmJiBcCisgICAgIUdURVNU
X09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQgJiYgIUdURVNUX09TX1dJ
TkRPV1NfTUlOR1cKIAogLy8gUmV0dXJucyB0aGUgY2hhcmFjdGVyIGF0dHJpYnV0ZSBmb3IgdGhl
IGdpdmVuIGNvbG9yLgotV09SRCBHZXRDb2xvckF0dHJpYnV0ZShHVGVzdENvbG9yIGNvbG9yKSB7
CitzdGF0aWMgV09SRCBHZXRDb2xvckF0dHJpYnV0ZShHVGVzdENvbG9yIGNvbG9yKSB7CiAgIHN3
aXRjaCAoY29sb3IpIHsKICAgICBjYXNlIENPTE9SX1JFRDogICAgcmV0dXJuIEZPUkVHUk9VTkRf
UkVEOwogICAgIGNhc2UgQ09MT1JfR1JFRU46ICByZXR1cm4gRk9SRUdST1VORF9HUkVFTjsKQEAg
LTI1NjEsMTEgKzI5MzQsNDIgQEAgV09SRCBHZXRDb2xvckF0dHJpYnV0ZShHVGVzdENvbG9yIGNv
bG9yKSB7CiAgIH0KIH0KIAorc3RhdGljIGludCBHZXRCaXRPZmZzZXQoV09SRCBjb2xvcl9tYXNr
KSB7CisgIGlmIChjb2xvcl9tYXNrID09IDApIHJldHVybiAwOworCisgIGludCBiaXRPZmZzZXQg
PSAwOworICB3aGlsZSAoKGNvbG9yX21hc2sgJiAxKSA9PSAwKSB7CisgICAgY29sb3JfbWFzayA+
Pj0gMTsKKyAgICArK2JpdE9mZnNldDsKKyAgfQorICByZXR1cm4gYml0T2Zmc2V0OworfQorCitz
dGF0aWMgV09SRCBHZXROZXdDb2xvcihHVGVzdENvbG9yIGNvbG9yLCBXT1JEIG9sZF9jb2xvcl9h
dHRycykgeworICAvLyBMZXQncyByZXVzZSB0aGUgQkcKKyAgc3RhdGljIGNvbnN0IFdPUkQgYmFj
a2dyb3VuZF9tYXNrID0gQkFDS0dST1VORF9CTFVFIHwgQkFDS0dST1VORF9HUkVFTiB8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJBQ0tHUk9VTkRfUkVEIHwgQkFDS0dS
T1VORF9JTlRFTlNJVFk7CisgIHN0YXRpYyBjb25zdCBXT1JEIGZvcmVncm91bmRfbWFzayA9IEZP
UkVHUk9VTkRfQkxVRSB8IEZPUkVHUk9VTkRfR1JFRU4gfAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGT1JFR1JPVU5EX1JFRCB8IEZPUkVHUk9VTkRfSU5URU5TSVRZOwor
ICBjb25zdCBXT1JEIGV4aXN0aW5nX2JnID0gb2xkX2NvbG9yX2F0dHJzICYgYmFja2dyb3VuZF9t
YXNrOworCisgIFdPUkQgbmV3X2NvbG9yID0KKyAgICAgIEdldENvbG9yQXR0cmlidXRlKGNvbG9y
KSB8IGV4aXN0aW5nX2JnIHwgRk9SRUdST1VORF9JTlRFTlNJVFk7CisgIHN0YXRpYyBjb25zdCBp
bnQgYmdfYml0T2Zmc2V0ID0gR2V0Qml0T2Zmc2V0KGJhY2tncm91bmRfbWFzayk7CisgIHN0YXRp
YyBjb25zdCBpbnQgZmdfYml0T2Zmc2V0ID0gR2V0Qml0T2Zmc2V0KGZvcmVncm91bmRfbWFzayk7
CisKKyAgaWYgKCgobmV3X2NvbG9yICYgYmFja2dyb3VuZF9tYXNrKSA+PiBiZ19iaXRPZmZzZXQp
ID09CisgICAgICAoKG5ld19jb2xvciAmIGZvcmVncm91bmRfbWFzaykgPj4gZmdfYml0T2Zmc2V0
KSkgeworICAgIG5ld19jb2xvciBePSBGT1JFR1JPVU5EX0lOVEVOU0lUWTsgIC8vIGludmVydCBp
bnRlbnNpdHkKKyAgfQorICByZXR1cm4gbmV3X2NvbG9yOworfQorCiAjZWxzZQogCiAvLyBSZXR1
cm5zIHRoZSBBTlNJIGNvbG9yIGNvZGUgZm9yIHRoZSBnaXZlbiBjb2xvci4gIENPTE9SX0RFRkFV
TFQgaXMKIC8vIGFuIGludmFsaWQgaW5wdXQuCi1jb25zdCBjaGFyKiBHZXRBbnNpQ29sb3JDb2Rl
KEdUZXN0Q29sb3IgY29sb3IpIHsKK3N0YXRpYyBjb25zdCBjaGFyKiBHZXRBbnNpQ29sb3JDb2Rl
KEdUZXN0Q29sb3IgY29sb3IpIHsKICAgc3dpdGNoIChjb2xvcikgewogICAgIGNhc2UgQ09MT1Jf
UkVEOiAgICAgcmV0dXJuICIxIjsKICAgICBjYXNlIENPTE9SX0dSRUVOOiAgIHJldHVybiAiMiI7
CkBAIC0yNTgxLDcgKzI5ODUsNyBAQCBib29sIFNob3VsZFVzZUNvbG9yKGJvb2wgc3Rkb3V0X2lz
X3R0eSkgewogICBjb25zdCBjaGFyKiBjb25zdCBndGVzdF9jb2xvciA9IEdURVNUX0ZMQUcoY29s
b3IpLmNfc3RyKCk7CiAKICAgaWYgKFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFs
cyhndGVzdF9jb2xvciwgImF1dG8iKSkgewotI2lmIEdURVNUX09TX1dJTkRPV1MKKyNpZiBHVEVT
VF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX01JTkdXCiAgICAgLy8gT24gV2luZG93
cyB0aGUgVEVSTSB2YXJpYWJsZSBpcyB1c3VhbGx5IG5vdCBzZXQsIGJ1dCB0aGUKICAgICAvLyBj
b25zb2xlIHRoZXJlIGRvZXMgc3VwcG9ydCBjb2xvcnMuCiAgICAgcmV0dXJuIHN0ZG91dF9pc190
dHk7CkBAIC0yNTkyLDYgKzI5OTYsMTIgQEAgYm9vbCBTaG91bGRVc2VDb2xvcihib29sIHN0ZG91
dF9pc190dHkpIHsKICAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJ4dGVybSIp
IHx8CiAgICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAieHRlcm0tY29sb3IiKSB8
fAogICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgInh0ZXJtLTI1NmNvbG9yIikg
fHwKKyAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJzY3JlZW4iKSB8fAorICAg
ICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgInNjcmVlbi0yNTZjb2xvciIpIHx8Cisg
ICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAidG11eCIpIHx8CisgICAgICAgIFN0
cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAidG11eC0yNTZjb2xvciIpIHx8CisgICAgICAgIFN0
cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAicnh2dC11bmljb2RlIikgfHwKKyAgICAgICAgU3Ry
aW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJyeHZ0LXVuaWNvZGUtMjU2Y29sb3IiKSB8fAogICAg
ICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgImxpbnV4IikgfHwKICAgICAgICAgU3Ry
aW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJjeWd3aW4iKTsKICAgICByZXR1cm4gc3Rkb3V0X2lz
X3R0eSAmJiB0ZXJtX3N1cHBvcnRzX2NvbG9yOwpAQCAtMjYxMSwxMiArMzAyMSwxMyBAQCBib29s
IFNob3VsZFVzZUNvbG9yKGJvb2wgc3Rkb3V0X2lzX3R0eSkgewogLy8gY2Fubm90IHNpbXBseSBl
bWl0IHNwZWNpYWwgY2hhcmFjdGVycyBhbmQgaGF2ZSB0aGUgdGVybWluYWwgY2hhbmdlIGNvbG9y
cy4KIC8vIFRoaXMgcm91dGluZSBtdXN0IGFjdHVhbGx5IGVtaXQgdGhlIGNoYXJhY3RlcnMgcmF0
aGVyIHRoYW4gcmV0dXJuIGEgc3RyaW5nCiAvLyB0aGF0IHdvdWxkIGJlIGNvbG9yZWQgd2hlbiBw
cmludGVkLCBhcyBjYW4gYmUgZG9uZSBvbiBMaW51eC4KLXZvaWQgQ29sb3JlZFByaW50ZihHVGVz
dENvbG9yIGNvbG9yLCBjb25zdCBjaGFyKiBmbXQsIC4uLikgeworc3RhdGljIHZvaWQgQ29sb3Jl
ZFByaW50ZihHVGVzdENvbG9yIGNvbG9yLCBjb25zdCBjaGFyKiBmbXQsIC4uLikgewogICB2YV9s
aXN0IGFyZ3M7CiAgIHZhX3N0YXJ0KGFyZ3MsIGZtdCk7CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dT
X01PQklMRSB8fCBHVEVTVF9PU19TWU1CSUFOIHx8IEdURVNUX09TX1pPUwotICBjb25zdCBib29s
IHVzZV9jb2xvciA9IGZhbHNlOworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNU
X09TX1NZTUJJQU4gfHwgR1RFU1RfT1NfWk9TIHx8IFwKKyAgICBHVEVTVF9PU19JT1MgfHwgR1RF
U1RfT1NfV0lORE9XU19QSE9ORSB8fCBHVEVTVF9PU19XSU5ET1dTX1JUCisgIGNvbnN0IGJvb2wg
dXNlX2NvbG9yID0gQWx3YXlzRmFsc2UoKTsKICNlbHNlCiAgIHN0YXRpYyBjb25zdCBib29sIGlu
X2NvbG9yX21vZGUgPQogICAgICAgU2hvdWxkVXNlQ29sb3IocG9zaXg6OklzQVRUWShwb3NpeDo6
RmlsZU5vKHN0ZG91dCkpICE9IDApOwpAQCAtMjYzMCwyMCArMzA0MSwyMiBAQCB2b2lkIENvbG9y
ZWRQcmludGYoR1Rlc3RDb2xvciBjb2xvciwgY29uc3QgY2hhciogZm10LCAuLi4pIHsKICAgICBy
ZXR1cm47CiAgIH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFCisjaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUg
JiYgXAorICAgICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JU
ICYmICFHVEVTVF9PU19XSU5ET1dTX01JTkdXCiAgIGNvbnN0IEhBTkRMRSBzdGRvdXRfaGFuZGxl
ID0gR2V0U3RkSGFuZGxlKFNURF9PVVRQVVRfSEFORExFKTsKIAogICAvLyBHZXRzIHRoZSBjdXJy
ZW50IHRleHQgY29sb3IuCiAgIENPTlNPTEVfU0NSRUVOX0JVRkZFUl9JTkZPIGJ1ZmZlcl9pbmZv
OwogICBHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbyhzdGRvdXRfaGFuZGxlLCAmYnVmZmVyX2lu
Zm8pOwogICBjb25zdCBXT1JEIG9sZF9jb2xvcl9hdHRycyA9IGJ1ZmZlcl9pbmZvLndBdHRyaWJ1
dGVzOworICBjb25zdCBXT1JEIG5ld19jb2xvciA9IEdldE5ld0NvbG9yKGNvbG9yLCBvbGRfY29s
b3JfYXR0cnMpOwogCiAgIC8vIFdlIG5lZWQgdG8gZmx1c2ggdGhlIHN0cmVhbSBidWZmZXJzIGlu
dG8gdGhlIGNvbnNvbGUgYmVmb3JlIGVhY2gKICAgLy8gU2V0Q29uc29sZVRleHRBdHRyaWJ1dGUg
Y2FsbCBsZXN0IGl0IGFmZmVjdCB0aGUgdGV4dCB0aGF0IGlzIGFscmVhZHkKICAgLy8gcHJpbnRl
ZCBidXQgaGFzIG5vdCB5ZXQgcmVhY2hlZCB0aGUgY29uc29sZS4KICAgZmZsdXNoKHN0ZG91dCk7
Ci0gIFNldENvbnNvbGVUZXh0QXR0cmlidXRlKHN0ZG91dF9oYW5kbGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIEdldENvbG9yQXR0cmlidXRlKGNvbG9yKSB8IEZPUkVHUk9VTkRfSU5URU5T
SVRZKTsKKyAgU2V0Q29uc29sZVRleHRBdHRyaWJ1dGUoc3Rkb3V0X2hhbmRsZSwgbmV3X2NvbG9y
KTsKKwogICB2cHJpbnRmKGZtdCwgYXJncyk7CiAKICAgZmZsdXNoKHN0ZG91dCk7CkBAIC0yNjU3
LDYgKzMwNzAsMjggQEAgdm9pZCBDb2xvcmVkUHJpbnRmKEdUZXN0Q29sb3IgY29sb3IsIGNvbnN0
IGNoYXIqIGZtdCwgLi4uKSB7CiAgIHZhX2VuZChhcmdzKTsKIH0KIAorLy8gVGV4dCBwcmludGVk
IGluIEdvb2dsZSBUZXN0J3MgdGV4dCBvdXRwdXQgYW5kIC0tZ3Rlc3RfbGlzdF90ZXN0cworLy8g
b3V0cHV0IHRvIGxhYmVsIHRoZSB0eXBlIHBhcmFtZXRlciBhbmQgdmFsdWUgcGFyYW1ldGVyIGZv
ciBhIHRlc3QuCitzdGF0aWMgY29uc3QgY2hhciBrVHlwZVBhcmFtTGFiZWxbXSA9ICJUeXBlUGFy
YW0iOworc3RhdGljIGNvbnN0IGNoYXIga1ZhbHVlUGFyYW1MYWJlbFtdID0gIkdldFBhcmFtKCki
OworCitzdGF0aWMgdm9pZCBQcmludEZ1bGxUZXN0Q29tbWVudElmUHJlc2VudChjb25zdCBUZXN0
SW5mbyYgdGVzdF9pbmZvKSB7CisgIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVfcGFyYW0gPSB0ZXN0
X2luZm8udHlwZV9wYXJhbSgpOworICBjb25zdCBjaGFyKiBjb25zdCB2YWx1ZV9wYXJhbSA9IHRl
c3RfaW5mby52YWx1ZV9wYXJhbSgpOworCisgIGlmICh0eXBlX3BhcmFtICE9IE5VTEwgfHwgdmFs
dWVfcGFyYW0gIT0gTlVMTCkgeworICAgIHByaW50ZigiLCB3aGVyZSAiKTsKKyAgICBpZiAodHlw
ZV9wYXJhbSAhPSBOVUxMKSB7CisgICAgICBwcmludGYoIiVzID0gJXMiLCBrVHlwZVBhcmFtTGFi
ZWwsIHR5cGVfcGFyYW0pOworICAgICAgaWYgKHZhbHVlX3BhcmFtICE9IE5VTEwpCisgICAgICAg
IHByaW50ZigiIGFuZCAiKTsKKyAgICB9CisgICAgaWYgKHZhbHVlX3BhcmFtICE9IE5VTEwpIHsK
KyAgICAgIHByaW50ZigiJXMgPSAlcyIsIGtWYWx1ZVBhcmFtTGFiZWwsIHZhbHVlX3BhcmFtKTsK
KyAgICB9CisgIH0KK30KKwogLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBUZXN0RXZlbnRM
aXN0ZW5lciBpbnRlcmZhY2UuCiAvLwogLy8gQ2xhc3MgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmlu
dGVyIGlzIGNvcHlhYmxlLgpAQCAtMjY4NCw4ICszMTE5LDYgQEAgY2xhc3MgUHJldHR5VW5pdFRl
c3RSZXN1bHRQcmludGVyIDogcHVibGljIFRlc3RFdmVudExpc3RlbmVyIHsKIAogIHByaXZhdGU6
CiAgIHN0YXRpYyB2b2lkIFByaW50RmFpbGVkVGVzdHMoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVz
dCk7Ci0KLSAgaW50ZXJuYWw6OlN0cmluZyB0ZXN0X2Nhc2VfbmFtZV87CiB9OwogCiAgIC8vIEZp
cmVkIGJlZm9yZSBlYWNoIGl0ZXJhdGlvbiBvZiB0ZXN0cyBzdGFydHMuCkBAIC0yNjk4LDE1ICsz
MTMxLDE2IEBAIHZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RJdGVyYXRp
b25TdGFydCgKIAogICAvLyBQcmludHMgdGhlIGZpbHRlciBpZiBpdCdzIG5vdCAqLiAgVGhpcyBy
ZW1pbmRzIHRoZSB1c2VyIHRoYXQgc29tZQogICAvLyB0ZXN0cyBtYXkgYmUgc2tpcHBlZC4KLSAg
aWYgKCFpbnRlcm5hbDo6U3RyaW5nOjpDU3RyaW5nRXF1YWxzKGZpbHRlciwga1VuaXZlcnNhbEZp
bHRlcikpIHsKKyAgaWYgKCFTdHJpbmc6OkNTdHJpbmdFcXVhbHMoZmlsdGVyLCBrVW5pdmVyc2Fs
RmlsdGVyKSkgewogICAgIENvbG9yZWRQcmludGYoQ09MT1JfWUVMTE9XLAogICAgICAgICAgICAg
ICAgICAgIk5vdGU6ICVzIGZpbHRlciA9ICVzXG4iLCBHVEVTVF9OQU1FXywgZmlsdGVyKTsKICAg
fQogCiAgIGlmIChpbnRlcm5hbDo6U2hvdWxkU2hhcmQoa1Rlc3RUb3RhbFNoYXJkcywga1Rlc3RT
aGFyZEluZGV4LCBmYWxzZSkpIHsKKyAgICBjb25zdCBJbnQzMiBzaGFyZF9pbmRleCA9IEludDMy
RnJvbUVudk9yRGllKGtUZXN0U2hhcmRJbmRleCwgLTEpOwogICAgIENvbG9yZWRQcmludGYoQ09M
T1JfWUVMTE9XLAotICAgICAgICAgICAgICAgICAgIk5vdGU6IFRoaXMgaXMgdGVzdCBzaGFyZCAl
cyBvZiAlcy5cbiIsCi0gICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cG9zaXg6OkdldEVudihr
VGVzdFNoYXJkSW5kZXgpLAorICAgICAgICAgICAgICAgICAgIk5vdGU6IFRoaXMgaXMgdGVzdCBz
aGFyZCAlZCBvZiAlcy5cbiIsCisgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHNo
YXJkX2luZGV4KSArIDEsCiAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cG9zaXg6OkdldEVu
dihrVGVzdFRvdGFsU2hhcmRzKSk7CiAgIH0KIApAQCAtMjczMSwyNyArMzE2NSwyMiBAQCB2b2lk
IFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0KAog
fQogCiB2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0Q2FzZVN0YXJ0KGNv
bnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKLSAgdGVzdF9jYXNlX25hbWVfID0gdGVzdF9jYXNl
Lm5hbWUoKTsKLSAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyBjb3VudHMgPQorICBjb25zdCBzdGQ6
OnN0cmluZyBjb3VudHMgPQogICAgICAgRm9ybWF0Q291bnRhYmxlTm91bih0ZXN0X2Nhc2UudGVz
dF90b19ydW5fY291bnQoKSwgInRlc3QiLCAidGVzdHMiKTsKICAgQ29sb3JlZFByaW50ZihDT0xP
Ul9HUkVFTiwgIlstLS0tLS0tLS0tXSAiKTsKLSAgcHJpbnRmKCIlcyBmcm9tICVzIiwgY291bnRz
LmNfc3RyKCksIHRlc3RfY2FzZV9uYW1lXy5jX3N0cigpKTsKLSAgaWYgKHRlc3RfY2FzZS5jb21t
ZW50KClbMF0gPT0gJ1wwJykgeworICBwcmludGYoIiVzIGZyb20gJXMiLCBjb3VudHMuY19zdHIo
KSwgdGVzdF9jYXNlLm5hbWUoKSk7CisgIGlmICh0ZXN0X2Nhc2UudHlwZV9wYXJhbSgpID09IE5V
TEwpIHsKICAgICBwcmludGYoIlxuIik7CiAgIH0gZWxzZSB7Ci0gICAgcHJpbnRmKCIsIHdoZXJl
ICVzXG4iLCB0ZXN0X2Nhc2UuY29tbWVudCgpKTsKKyAgICBwcmludGYoIiwgd2hlcmUgJXMgPSAl
c1xuIiwga1R5cGVQYXJhbUxhYmVsLCB0ZXN0X2Nhc2UudHlwZV9wYXJhbSgpKTsKICAgfQogICBm
Zmx1c2goc3Rkb3V0KTsKIH0KIAogdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9u
VGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKICAgQ29sb3JlZFByaW50ZihD
T0xPUl9HUkVFTiwgICJbIFJVTiAgICAgIF0gIik7Ci0gIFByaW50VGVzdE5hbWUodGVzdF9jYXNl
X25hbWVfLmNfc3RyKCksIHRlc3RfaW5mby5uYW1lKCkpOwotICBpZiAodGVzdF9pbmZvLmNvbW1l
bnQoKVswXSA9PSAnXDAnKSB7Ci0gICAgcHJpbnRmKCJcbiIpOwotICB9IGVsc2UgewotICAgIHBy
aW50ZigiLCB3aGVyZSAlc1xuIiwgdGVzdF9pbmZvLmNvbW1lbnQoKSk7Ci0gIH0KKyAgUHJpbnRU
ZXN0TmFtZSh0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7Cisg
IHByaW50ZigiXG4iKTsKICAgZmZsdXNoKHN0ZG91dCk7CiB9CiAKQEAgLTI3NzMsNyArMzIwMiwx
MCBAQCB2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0RW5kKGNvbnN0IFRl
c3RJbmZvJiB0ZXN0X2luZm8pIHsKICAgfSBlbHNlIHsKICAgICBDb2xvcmVkUHJpbnRmKENPTE9S
X1JFRCwgIlsgIEZBSUxFRCAgXSAiKTsKICAgfQotICBQcmludFRlc3ROYW1lKHRlc3RfY2FzZV9u
YW1lXy5jX3N0cigpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgUHJpbnRUZXN0TmFtZSh0ZXN0X2lu
Zm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7CisgIGlmICh0ZXN0X2luZm8u
cmVzdWx0KCktPkZhaWxlZCgpKQorICAgIFByaW50RnVsbFRlc3RDb21tZW50SWZQcmVzZW50KHRl
c3RfaW5mbyk7CisKICAgaWYgKEdURVNUX0ZMQUcocHJpbnRfdGltZSkpIHsKICAgICBwcmludGYo
IiAoJXMgbXMpXG4iLCBpbnRlcm5hbDo6U3RyZWFtYWJsZVRvU3RyaW5nKAogICAgICAgICAgICB0
ZXN0X2luZm8ucmVzdWx0KCktPmVsYXBzZWRfdGltZSgpKS5jX3N0cigpKTsKQEAgLTI3ODYsMTIg
KzMyMTgsMTEgQEAgdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdEVuZChj
b25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CiB2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJp
bnRlcjo6T25UZXN0Q2FzZUVuZChjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKSB7CiAgIGlmICgh
R1RFU1RfRkxBRyhwcmludF90aW1lKSkgcmV0dXJuOwogCi0gIHRlc3RfY2FzZV9uYW1lXyA9IHRl
c3RfY2FzZS5uYW1lKCk7Ci0gIGNvbnN0IGludGVybmFsOjpTdHJpbmcgY291bnRzID0KKyAgY29u
c3Qgc3RkOjpzdHJpbmcgY291bnRzID0KICAgICAgIEZvcm1hdENvdW50YWJsZU5vdW4odGVzdF9j
YXNlLnRlc3RfdG9fcnVuX2NvdW50KCksICJ0ZXN0IiwgInRlc3RzIik7CiAgIENvbG9yZWRQcmlu
dGYoQ09MT1JfR1JFRU4sICJbLS0tLS0tLS0tLV0gIik7CiAgIHByaW50ZigiJXMgZnJvbSAlcyAo
JXMgbXMgdG90YWwpXG5cbiIsCi0gICAgICAgICBjb3VudHMuY19zdHIoKSwgdGVzdF9jYXNlX25h
bWVfLmNfc3RyKCksCisgICAgICAgICBjb3VudHMuY19zdHIoKSwgdGVzdF9jYXNlLm5hbWUoKSwK
ICAgICAgICAgIGludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcodGVzdF9jYXNlLmVsYXBzZWRf
dGltZSgpKS5jX3N0cigpKTsKICAgZmZsdXNoKHN0ZG91dCk7CiB9CkBAIC0yODIyLDIxICszMjUz
LDE0IEBAIHZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludEZhaWxlZFRlc3Rz
KGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpIHsKICAgICAgIH0KICAgICAgIENvbG9yZWRQcmlu
dGYoQ09MT1JfUkVELCAiWyAgRkFJTEVEICBdICIpOwogICAgICAgcHJpbnRmKCIlcy4lcyIsIHRl
c3RfY2FzZS5uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOwotICAgICAgaWYgKHRlc3RfY2FzZS5j
b21tZW50KClbMF0gIT0gJ1wwJyB8fAotICAgICAgICAgIHRlc3RfaW5mby5jb21tZW50KClbMF0g
IT0gJ1wwJykgewotICAgICAgICBwcmludGYoIiwgd2hlcmUgJXMiLCB0ZXN0X2Nhc2UuY29tbWVu
dCgpKTsKLSAgICAgICAgaWYgKHRlc3RfY2FzZS5jb21tZW50KClbMF0gIT0gJ1wwJyAmJgotICAg
ICAgICAgICAgdGVzdF9pbmZvLmNvbW1lbnQoKVswXSAhPSAnXDAnKSB7Ci0gICAgICAgICAgcHJp
bnRmKCIgYW5kICIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBwcmludGYoIiVzXG4iLCB0
ZXN0X2luZm8uY29tbWVudCgpKTsKKyAgICAgIFByaW50RnVsbFRlc3RDb21tZW50SWZQcmVzZW50
KHRlc3RfaW5mbyk7CisgICAgICBwcmludGYoIlxuIik7CiAgICAgfQogICB9CiB9CiAKLSB2b2lk
IFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVu
aXRUZXN0JiB1bml0X3Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgLyppdGVyYXRpb24qLykgewordm9pZCBQcmV0dHlVbml0VGVz
dFJlc3VsdFByaW50ZXI6Ok9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgLyppdGVyYXRpb24qLykgewogICBDb2xvcmVkUHJpbnRmKENPTE9SX0dSRUVOLCAgIls9
PT09PT09PT09XSAiKTsKICAgcHJpbnRmKCIlcyBmcm9tICVzIHJhbi4iLAogICAgICAgICAgRm9y
bWF0VGVzdENvdW50KHVuaXRfdGVzdC50ZXN0X3RvX3J1bl9jb3VudCgpKS5jX3N0cigpLApAQCAt
Mjg1OSw3ICszMjgzLDcgQEAgdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6OlByaW50
RmFpbGVkVGVzdHMoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgbnVtX2ZhaWx1cmVzID09IDEgPyAiVEVTVCIgOiAiVEVTVFMiKTsKICAgfQogCi0g
IGludCBudW1fZGlzYWJsZWQgPSB1bml0X3Rlc3QuZGlzYWJsZWRfdGVzdF9jb3VudCgpOworICBp
bnQgbnVtX2Rpc2FibGVkID0gdW5pdF90ZXN0LnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3Vu
dCgpOwogICBpZiAobnVtX2Rpc2FibGVkICYmICFHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVk
X3Rlc3RzKSkgewogICAgIGlmICghbnVtX2ZhaWx1cmVzKSB7CiAgICAgICBwcmludGYoIlxuIik7
ICAvLyBBZGQgYSBzcGFjZXIgaWYgbm8gRkFJTFVSRSBiYW5uZXIgaXMgZGlzcGxheWVkLgpAQCAt
MjkyMiw3ICszMzQ2LDcgQEAgdm9pZCBUZXN0RXZlbnRSZXBlYXRlcjo6QXBwZW5kKFRlc3RFdmVu
dExpc3RlbmVyICpsaXN0ZW5lcikgewogICBsaXN0ZW5lcnNfLnB1c2hfYmFjayhsaXN0ZW5lcik7
CiB9CiAKLS8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEZhY3RvciB0aGUgc2VhcmNoIGZ1bmN0
aW9uYWxpdHkgaW50byBWZWN0b3I6OkZpbmQuCisvLyBGSVhNRTogRmFjdG9yIHRoZSBzZWFyY2gg
ZnVuY3Rpb25hbGl0eSBpbnRvIFZlY3Rvcjo6RmluZC4KIFRlc3RFdmVudExpc3RlbmVyKiBUZXN0
RXZlbnRSZXBlYXRlcjo6UmVsZWFzZShUZXN0RXZlbnRMaXN0ZW5lciAqbGlzdGVuZXIpIHsKICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0ZW5lcnNfLnNpemUoKTsgKytpKSB7CiAgICAgaWYg
KGxpc3RlbmVyc19baV0gPT0gbGlzdGVuZXIpIHsKQEAgLTI5OTYsNiArMzQyMCwxMSBAQCBjbGFz
cyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5l
ciB7CiAgIGV4cGxpY2l0IFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcihjb25zdCBjaGFyKiBvdXRw
dXRfZmlsZSk7CiAKICAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0
VGVzdCYgdW5pdF90ZXN0LCBpbnQgaXRlcmF0aW9uKTsKKyAgdm9pZCBMaXN0VGVzdHNNYXRjaGlu
Z0ZpbHRlcihjb25zdCBzdGQ6OnZlY3RvcjxUZXN0Q2FzZSo+JiB0ZXN0X2Nhc2VzKTsKKworICAv
LyBQcmludHMgYW4gWE1MIHN1bW1hcnkgb2YgYWxsIHVuaXQgdGVzdHMuCisgIHN0YXRpYyB2b2lk
IFByaW50WG1sVGVzdHNMaXN0KHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxUZXN0Q2FzZSo+JiB0ZXN0X2Nhc2Vz
KTsKIAogIHByaXZhdGU6CiAgIC8vIElzIGMgYSB3aGl0ZXNwYWNlIGNoYXJhY3RlciB0aGF0IGlz
IG5vcm1hbGl6ZWQgdG8gYSBzcGFjZSBjaGFyYWN0ZXIKQEAgLTMwMTMsMTggKzM0NDIsMjcgQEAg
Y2xhc3MgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlz
dGVuZXIgewogICAvLyBpc19hdHRyaWJ1dGUgaXMgdHJ1ZSwgdGhlIHRleHQgaXMgbWVhbnQgdG8g
YXBwZWFyIGFzIGFuIGF0dHJpYnV0ZQogICAvLyB2YWx1ZSwgYW5kIG5vcm1hbGl6YWJsZSB3aGl0
ZXNwYWNlIGlzIHByZXNlcnZlZCBieSByZXBsYWNpbmcgaXQKICAgLy8gd2l0aCBjaGFyYWN0ZXIg
cmVmZXJlbmNlcy4KLSAgc3RhdGljIFN0cmluZyBFc2NhcGVYbWwoY29uc3QgY2hhciogc3RyLCBi
b29sIGlzX2F0dHJpYnV0ZSk7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFc2NhcGVYbWwoY29uc3Qg
c3RkOjpzdHJpbmcmIHN0ciwgYm9vbCBpc19hdHRyaWJ1dGUpOwogCiAgIC8vIFJldHVybnMgdGhl
IGdpdmVuIHN0cmluZyB3aXRoIGFsbCBjaGFyYWN0ZXJzIGludmFsaWQgaW4gWE1MIHJlbW92ZWQu
Ci0gIHN0YXRpYyBTdHJpbmcgUmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoY29uc3QgY2hhciog
c3RyKTsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIFJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGNv
bnN0IHN0ZDo6c3RyaW5nJiBzdHIpOwogCiAgIC8vIENvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5k
IEVzY2FwZVhtbCB3aGVuIHN0ciBpcyBhbiBhdHRyaWJ1dGUgdmFsdWUuCi0gIHN0YXRpYyBTdHJp
bmcgRXNjYXBlWG1sQXR0cmlidXRlKGNvbnN0IGNoYXIqIHN0cikgeworICBzdGF0aWMgc3RkOjpz
dHJpbmcgRXNjYXBlWG1sQXR0cmlidXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKICAgICBy
ZXR1cm4gRXNjYXBlWG1sKHN0ciwgdHJ1ZSk7CiAgIH0KIAogICAvLyBDb252ZW5pZW5jZSB3cmFw
cGVyIGFyb3VuZCBFc2NhcGVYbWwgd2hlbiBzdHIgaXMgbm90IGFuIGF0dHJpYnV0ZSB2YWx1ZS4K
LSAgc3RhdGljIFN0cmluZyBFc2NhcGVYbWxUZXh0KGNvbnN0IGNoYXIqIHN0cikgeyByZXR1cm4g
RXNjYXBlWG1sKHN0ciwgZmFsc2UpOyB9CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFc2NhcGVYbWxU
ZXh0KGNvbnN0IGNoYXIqIHN0cikgeworICAgIHJldHVybiBFc2NhcGVYbWwoc3RyLCBmYWxzZSk7
CisgIH0KKworICAvLyBWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBhdHRyaWJ1dGUgYmVsb25ncyB0
byB0aGUgZ2l2ZW4gZWxlbWVudCBhbmQKKyAgLy8gc3RyZWFtcyB0aGUgYXR0cmlidXRlIGFzIFhN
TC4KKyAgc3RhdGljIHZvaWQgT3V0cHV0WG1sQXR0cmlidXRlKHN0ZDo6b3N0cmVhbSogc3RyZWFt
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGVs
ZW1lbnRfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHZhbHVlKTsKIAogICAvLyBTdHJlYW1zIGFuIFhNTCBDREFUQSBzZWN0aW9uLCBl
c2NhcGluZyBpbnZhbGlkIENEQVRBIHNlcXVlbmNlcyBhcyBuZWVkZWQuCiAgIHN0YXRpYyB2b2lk
IE91dHB1dFhtbENEYXRhU2VjdGlvbig6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLCBjb25zdCBjaGFy
KiBkYXRhKTsKQEAgLTMwMzUsMTkgKzM0NzMsMjYgQEAgY2xhc3MgWG1sVW5pdFRlc3RSZXN1bHRQ
cmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKTsKIAogICAvLyBQcmlu
dHMgYW4gWE1MIHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdENhc2Ugb2JqZWN0Ci0gIHN0YXRpYyB2
b2lkIFByaW50WG1sVGVzdENhc2UoRklMRSogb3V0LCBjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNl
KTsKKyAgc3RhdGljIHZvaWQgUHJpbnRYbWxUZXN0Q2FzZSg6OnN0ZDo6b3N0cmVhbSogc3RyZWFt
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nh
c2UpOwogCiAgIC8vIFByaW50cyBhbiBYTUwgc3VtbWFyeSBvZiB1bml0X3Rlc3QgdG8gb3V0cHV0
IHN0cmVhbSBvdXQuCi0gIHN0YXRpYyB2b2lkIFByaW50WG1sVW5pdFRlc3QoRklMRSogb3V0LCBj
b25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KTsKKyAgc3RhdGljIHZvaWQgUHJpbnRYbWxVbml0VGVz
dCg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpOwogCiAgIC8vIFByb2R1Y2VzIGEgc3RyaW5nIHJl
cHJlc2VudGluZyB0aGUgdGVzdCBwcm9wZXJ0aWVzIGluIGEgcmVzdWx0IGFzIHNwYWNlCiAgIC8v
IGRlbGltaXRlZCBYTUwgYXR0cmlidXRlcyBiYXNlZCBvbiB0aGUgcHJvcGVydHkga2V5PSJ2YWx1
ZSIgcGFpcnMuCi0gIC8vIFdoZW4gdGhlIFN0cmluZyBpcyBub3QgZW1wdHksIGl0IGluY2x1ZGVz
IGEgc3BhY2UgYXQgdGhlIGJlZ2lubmluZywKKyAgLy8gV2hlbiB0aGUgc3RkOjpzdHJpbmcgaXMg
bm90IGVtcHR5LCBpdCBpbmNsdWRlcyBhIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcsCiAgIC8vIHRv
IGRlbGltaXQgdGhpcyBhdHRyaWJ1dGUgZnJvbSBwcmlvciBhdHRyaWJ1dGVzLgotICBzdGF0aWMg
U3RyaW5nIFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKGNvbnN0IFRlc3RSZXN1bHQmIHJl
c3VsdCk7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBUZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRl
cyhjb25zdCBUZXN0UmVzdWx0JiByZXN1bHQpOworCisgIC8vIFN0cmVhbXMgYW4gWE1MIHJlcHJl
c2VudGF0aW9uIG9mIHRoZSB0ZXN0IHByb3BlcnRpZXMgb2YgYSBUZXN0UmVzdWx0CisgIC8vIG9i
amVjdC4KKyAgc3RhdGljIHZvaWQgT3V0cHV0WG1sVGVzdFByb3BlcnRpZXMoc3RkOjpvc3RyZWFt
KiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRl
c3RSZXN1bHQmIHJlc3VsdCk7CiAKICAgLy8gVGhlIG91dHB1dCBmaWxlLgotICBjb25zdCBTdHJp
bmcgb3V0cHV0X2ZpbGVfOworICBjb25zdCBzdGQ6OnN0cmluZyBvdXRwdXRfZmlsZV87CiAKICAg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIp
OwogfTsKQEAgLTMwNTUsNDEgKzM1MDAsMjcgQEAgY2xhc3MgWG1sVW5pdFRlc3RSZXN1bHRQcmlu
dGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewogLy8gQ3JlYXRlcyBhIG5ldyBY
bWxVbml0VGVzdFJlc3VsdFByaW50ZXIuCiBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlhtbFVu
aXRUZXN0UmVzdWx0UHJpbnRlcihjb25zdCBjaGFyKiBvdXRwdXRfZmlsZSkKICAgICA6IG91dHB1
dF9maWxlXyhvdXRwdXRfZmlsZSkgewotICBpZiAob3V0cHV0X2ZpbGVfLmNfc3RyKCkgPT0gTlVM
TCB8fCBvdXRwdXRfZmlsZV8uZW1wdHkoKSkgewotICAgIGZwcmludGYoc3RkZXJyLCAiWE1MIG91
dHB1dCBmaWxlIG1heSBub3QgYmUgbnVsbFxuIik7Ci0gICAgZmZsdXNoKHN0ZGVycik7Ci0gICAg
ZXhpdChFWElUX0ZBSUxVUkUpOworICBpZiAob3V0cHV0X2ZpbGVfLmVtcHR5KCkpIHsKKyAgICBH
VEVTVF9MT0dfKEZBVEFMKSA8PCAiWE1MIG91dHB1dCBmaWxlIG1heSBub3QgYmUgbnVsbCI7CiAg
IH0KIH0KIAogLy8gQ2FsbGVkIGFmdGVyIHRoZSB1bml0IHRlc3QgZW5kcy4KIHZvaWQgWG1sVW5p
dFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVu
aXRfdGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IC8qaXRlcmF0aW9uKi8pIHsKLSAgRklMRSogeG1sb3V0ID0gTlVMTDsKLSAgRmlsZVBh
dGggb3V0cHV0X2ZpbGUob3V0cHV0X2ZpbGVfKTsKLSAgRmlsZVBhdGggb3V0cHV0X2RpcihvdXRw
dXRfZmlsZS5SZW1vdmVGaWxlTmFtZSgpKTsKKyAgRklMRSogeG1sb3V0ID0gT3BlbkZpbGVGb3JX
cml0aW5nKG91dHB1dF9maWxlXyk7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgUHJp
bnRYbWxVbml0VGVzdCgmc3RyZWFtLCB1bml0X3Rlc3QpOworICBmcHJpbnRmKHhtbG91dCwgIiVz
IiwgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnN0cmVhbSkuY19zdHIoKSk7CisgIGZjbG9zZSh4bWxv
dXQpOworfQogCi0gIGlmIChvdXRwdXRfZGlyLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHko
KSkgewotICAgIHhtbG91dCA9IHBvc2l4OjpGT3BlbihvdXRwdXRfZmlsZV8uY19zdHIoKSwgInci
KTsKLSAgfQotICBpZiAoeG1sb3V0ID09IE5VTEwpIHsKLSAgICAvLyBUT0RPKHdhbik6IHJlcG9y
dCB0aGUgcmVhc29uIG9mIHRoZSBmYWlsdXJlLgotICAgIC8vCi0gICAgLy8gV2UgZG9uJ3QgZG8g
aXQgZm9yIG5vdyBhczoKLSAgICAvLwotICAgIC8vICAgMS4gVGhlcmUgaXMgbm8gdXJnZW50IG5l
ZWQgZm9yIGl0LgotICAgIC8vICAgMi4gSXQncyBhIGJpdCBpbnZvbHZlZCB0byBtYWtlIHRoZSBl
cnJubyB2YXJpYWJsZSB0aHJlYWQtc2FmZSBvbgotICAgIC8vICAgICAgYWxsIHRocmVlIG9wZXJh
dGluZyBzeXN0ZW1zIChMaW51eCwgV2luZG93cywgYW5kIE1hYyBPUykuCi0gICAgLy8gICAzLiBU
byBpbnRlcnByZXQgdGhlIG1lYW5pbmcgb2YgZXJybm8gaW4gYSB0aHJlYWQtc2FmZSB3YXksCi0g
ICAgLy8gICAgICB3ZSBuZWVkIHRoZSBzdHJlcnJvcl9yKCkgZnVuY3Rpb24sIHdoaWNoIGlzIG5v
dCBhdmFpbGFibGUgb24KLSAgICAvLyAgICAgIFdpbmRvd3MuCi0gICAgZnByaW50ZihzdGRlcnIs
Ci0gICAgICAgICAgICAiVW5hYmxlIHRvIG9wZW4gZmlsZSBcIiVzXCJcbiIsCi0gICAgICAgICAg
ICBvdXRwdXRfZmlsZV8uY19zdHIoKSk7Ci0gICAgZmZsdXNoKHN0ZGVycik7Ci0gICAgZXhpdChF
WElUX0ZBSUxVUkUpOwotICB9Ci0gIFByaW50WG1sVW5pdFRlc3QoeG1sb3V0LCB1bml0X3Rlc3Qp
Owordm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Okxpc3RUZXN0c01hdGNoaW5nRmlsdGVy
KAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMpIHsKKyAgRklM
RSogeG1sb3V0ID0gT3BlbkZpbGVGb3JXcml0aW5nKG91dHB1dF9maWxlXyk7CisgIHN0ZDo6c3Ry
aW5nc3RyZWFtIHN0cmVhbTsKKyAgUHJpbnRYbWxUZXN0c0xpc3QoJnN0cmVhbSwgdGVzdF9jYXNl
cyk7CisgIGZwcmludGYoeG1sb3V0LCAiJXMiLCBTdHJpbmdTdHJlYW1Ub1N0cmluZygmc3RyZWFt
KS5jX3N0cigpKTsKICAgZmNsb3NlKHhtbG91dCk7CiB9CiAKQEAgLTMxMDMsNDQgKzM1MzQsNDUg
QEAgdm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdEl0ZXJhdGlvbkVuZChjb25z
dCBVbml0VGVzdCYgdW5pdF90ZXN0LAogLy8gbW9kdWxlIHdpbGwgY29uc2lzdCBvZiBvcmRpbmFy
eSBFbmdsaXNoIHRleHQuCiAvLyBJZiB0aGlzIG1vZHVsZSBpcyBldmVyIG1vZGlmaWVkIHRvIHBy
b2R1Y2UgdmVyc2lvbiAxLjEgWE1MIG91dHB1dCwKIC8vIG1vc3QgaW52YWxpZCBjaGFyYWN0ZXJz
IGNhbiBiZSByZXRhaW5lZCB1c2luZyBjaGFyYWN0ZXIgcmVmZXJlbmNlcy4KLS8vIFRPRE8od2Fu
KTogSXQgbWlnaHQgYmUgbmljZSB0byBoYXZlIGEgbWluaW1hbGx5IGludmFzaXZlLCBodW1hbi1y
ZWFkYWJsZQorLy8gRklYTUU6IEl0IG1pZ2h0IGJlIG5pY2UgdG8gaGF2ZSBhIG1pbmltYWxseSBp
bnZhc2l2ZSwgaHVtYW4tcmVhZGFibGUKIC8vIGVzY2FwaW5nIHNjaGVtZSBmb3IgaW52YWxpZCBj
aGFyYWN0ZXJzLCByYXRoZXIgdGhhbiBkcm9wcGluZyB0aGVtLgotU3RyaW5nIFhtbFVuaXRUZXN0
UmVzdWx0UHJpbnRlcjo6RXNjYXBlWG1sKGNvbnN0IGNoYXIqIHN0ciwgYm9vbCBpc19hdHRyaWJ1
dGUpIHsKK3N0ZDo6c3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6RXNjYXBlWG1sKAor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIsIGJvb2wgaXNfYXR0cmlidXRlKSB7CiAgIE1lc3Nh
Z2UgbTsKIAotICBpZiAoc3RyICE9IE5VTEwpIHsKLSAgICBmb3IgKGNvbnN0IGNoYXIqIHNyYyA9
IHN0cjsgKnNyYzsgKytzcmMpIHsKLSAgICAgIHN3aXRjaCAoKnNyYykgewotICAgICAgICBjYXNl
ICc8JzoKLSAgICAgICAgICBtIDw8ICImbHQ7IjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSAnPic6Ci0gICAgICAgICAgbSA8PCAiJmd0OyI7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgJyYnOgotICAgICAgICAgIG0gPDwgIiZhbXA7IjsKLSAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSAnXCcnOgotICAgICAgICAgIGlmIChpc19hdHRyaWJ1dGUpCi0gICAgICAg
ICAgICBtIDw8ICImYXBvczsiOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG0gPDwgJ1wn
JzsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnIic6Ci0gICAgICAgICAgaWYgKGlz
X2F0dHJpYnV0ZSkKLSAgICAgICAgICAgIG0gPDwgIiZxdW90OyI7CisgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RyLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgY2hhciBjaCA9IHN0cltpXTsK
KyAgICBzd2l0Y2ggKGNoKSB7CisgICAgICBjYXNlICc8JzoKKyAgICAgICAgbSA8PCAiJmx0OyI7
CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnPic6CisgICAgICAgIG0gPDwgIiZndDsiOwor
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJyYnOgorICAgICAgICBtIDw8ICImYW1wOyI7Cisg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnXCcnOgorICAgICAgICBpZiAoaXNfYXR0cmlidXRl
KQorICAgICAgICAgIG0gPDwgIiZhcG9zOyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBtIDw8
ICdcJyc7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnIic6CisgICAgICAgIGlmIChpc19h
dHRyaWJ1dGUpCisgICAgICAgICAgbSA8PCAiJnF1b3Q7IjsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgIG0gPDwgJyInOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGlm
IChJc1ZhbGlkWG1sQ2hhcmFjdGVyKGNoKSkgeworICAgICAgICAgIGlmIChpc19hdHRyaWJ1dGUg
JiYgSXNOb3JtYWxpemFibGVXaGl0ZXNwYWNlKGNoKSkKKyAgICAgICAgICAgIG0gPDwgIiYjeCIg
PDwgU3RyaW5nOjpGb3JtYXRCeXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkKKyAg
ICAgICAgICAgICAgPDwgIjsiOwogICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG0gPDwgJyIn
OwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgIGlmIChJc1Zh
bGlkWG1sQ2hhcmFjdGVyKCpzcmMpKSB7Ci0gICAgICAgICAgICBpZiAoaXNfYXR0cmlidXRlICYm
IElzTm9ybWFsaXphYmxlV2hpdGVzcGFjZSgqc3JjKSkKLSAgICAgICAgICAgICAgbSA8PCBTdHJp
bmc6OkZvcm1hdCgiJiN4JTAyWDsiLCB1bnNpZ25lZCgqc3JjKSk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgIG0gPDwgKnNyYzsKLSAgICAgICAgICB9Ci0gICAgICAgICAgYnJlYWs7
Ci0gICAgICB9CisgICAgICAgICAgICBtIDw8IGNoOworICAgICAgICB9CisgICAgICAgIGJyZWFr
OwogICAgIH0KICAgfQogCkBAIC0zMTUwLDIxICszNTgyLDIwIEBAIFN0cmluZyBYbWxVbml0VGVz
dFJlc3VsdFByaW50ZXI6OkVzY2FwZVhtbChjb25zdCBjaGFyKiBzdHIsIGJvb2wgaXNfYXR0cmli
dXRlKSB7CiAvLyBSZXR1cm5zIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBhbGwgY2hhcmFjdGVycyBp
bnZhbGlkIGluIFhNTCByZW1vdmVkLgogLy8gQ3VycmVudGx5IGludmFsaWQgY2hhcmFjdGVycyBh
cmUgZHJvcHBlZCBmcm9tIHRoZSBzdHJpbmcuIEFuCiAvLyBhbHRlcm5hdGl2ZSBpcyB0byByZXBs
YWNlIHRoZW0gd2l0aCBjZXJ0YWluIGNoYXJhY3RlcnMgc3VjaCBhcyAuIG9yID8uCi1TdHJpbmcg
WG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpSZW1vdmVJbnZhbGlkWG1sQ2hhcmFjdGVycyhjb25z
dCBjaGFyKiBzdHIpIHsKLSAgY2hhciogY29uc3Qgb3V0cHV0ID0gbmV3IGNoYXJbc3RybGVuKHN0
cikgKyAxXTsKLSAgY2hhciogYXBwZW5kZXIgPSBvdXRwdXQ7Ci0gIGZvciAoY2hhciBjaCA9ICpz
dHI7IGNoICE9ICdcMCc7IGNoID0gKisrc3RyKQotICAgIGlmIChJc1ZhbGlkWG1sQ2hhcmFjdGVy
KGNoKSkKLSAgICAgICphcHBlbmRlcisrID0gY2g7Ci0gICphcHBlbmRlciA9ICdcMCc7CitzdGQ6
OnN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlJlbW92ZUludmFsaWRYbWxDaGFyYWN0
ZXJzKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKKyAgc3RkOjpzdHJpbmcgb3V0cHV0
OworICBvdXRwdXQucmVzZXJ2ZShzdHIuc2l6ZSgpKTsKKyAgZm9yIChzdGQ6OnN0cmluZzo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBzdHIuYmVnaW4oKTsgaXQgIT0gc3RyLmVuZCgpOyArK2l0KQorICAg
IGlmIChJc1ZhbGlkWG1sQ2hhcmFjdGVyKCppdCkpCisgICAgICBvdXRwdXQucHVzaF9iYWNrKCpp
dCk7CiAKLSAgU3RyaW5nIHJldF92YWx1ZShvdXRwdXQpOwotICBkZWxldGVbXSBvdXRwdXQ7Ci0g
IHJldHVybiByZXRfdmFsdWU7CisgIHJldHVybiBvdXRwdXQ7CiB9CiAKIC8vIFRoZSBmb2xsb3dp
bmcgcm91dGluZXMgZ2VuZXJhdGUgYW4gWE1MIHJlcHJlc2VudGF0aW9uIG9mIGEgVW5pdFRlc3QK
IC8vIG9iamVjdC4KKy8vIEdPT0dMRVRFU1RfQ00wMDA5IERPIE5PVCBERUxFVEUKIC8vCiAvLyBU
aGlzIGlzIGhvdyBHb29nbGUgVGVzdCBjb25jZXB0cyBtYXAgdG8gdGhlIERURDoKIC8vCkBAIC0z
MTgyLDEwICszNjEzLDQxIEBAIFN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlJlbW92
ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIHN0cikgewogLy8gRm9ybWF0cyB0aGUg
Z2l2ZW4gdGltZSBpbiBtaWxsaXNlY29uZHMgYXMgc2Vjb25kcy4KIHN0ZDo6c3RyaW5nIEZvcm1h
dFRpbWVJbk1pbGxpc0FzU2Vjb25kcyhUaW1lSW5NaWxsaXMgbXMpIHsKICAgOjpzdGQ6OnN0cmlu
Z3N0cmVhbSBzczsKLSAgc3MgPDwgbXMvMTAwMC4wOworICBzcyA8PCAoc3RhdGljX2Nhc3Q8ZG91
YmxlPihtcykgKiAxZS0zKTsKICAgcmV0dXJuIHNzLnN0cigpOwogfQogCitzdGF0aWMgYm9vbCBQ
b3J0YWJsZUxvY2FsdGltZSh0aW1lX3Qgc2Vjb25kcywgc3RydWN0IHRtKiBvdXQpIHsKKyNpZiBk
ZWZpbmVkKF9NU0NfVkVSKQorICByZXR1cm4gbG9jYWx0aW1lX3Mob3V0LCAmc2Vjb25kcykgPT0g
MDsKKyNlbGlmIGRlZmluZWQoX19NSU5HVzMyX18pIHx8IGRlZmluZWQoX19NSU5HVzY0X18pCisg
IC8vIE1JTkdXIDx0aW1lLmg+IHByb3ZpZGVzIG5laXRoZXIgbG9jYWx0aW1lX3Igbm9yIGxvY2Fs
dGltZV9zLCBidXQgdXNlcworICAvLyBXaW5kb3dzJyBsb2NhbHRpbWUoKSwgd2hpY2ggaGFzIGEg
dGhyZWFkLWxvY2FsIHRtIGJ1ZmZlci4KKyAgc3RydWN0IHRtKiB0bV9wdHIgPSBsb2NhbHRpbWUo
JnNlY29uZHMpOyAgLy8gTk9MSU5UCisgIGlmICh0bV9wdHIgPT0gTlVMTCkKKyAgICByZXR1cm4g
ZmFsc2U7CisgICpvdXQgPSAqdG1fcHRyOworICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgIHJldHVy
biBsb2NhbHRpbWVfcigmc2Vjb25kcywgb3V0KSAhPSBOVUxMOworI2VuZGlmCit9CisKKy8vIENv
bnZlcnRzIHRoZSBnaXZlbiBlcG9jaCB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byBhIGRhdGUgc3Ry
aW5nIGluIHRoZSBJU08KKy8vIDg2MDEgZm9ybWF0LCB3aXRob3V0IHRoZSB0aW1lem9uZSBpbmZv
cm1hdGlvbi4KK3N0ZDo6c3RyaW5nIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKFRp
bWVJbk1pbGxpcyBtcykgeworICBzdHJ1Y3QgdG0gdGltZV9zdHJ1Y3Q7CisgIGlmICghUG9ydGFi
bGVMb2NhbHRpbWUoc3RhdGljX2Nhc3Q8dGltZV90PihtcyAvIDEwMDApLCAmdGltZV9zdHJ1Y3Qp
KQorICAgIHJldHVybiAiIjsKKyAgLy8gWVlZWS1NTS1ERFRoaDptbTpzcworICByZXR1cm4gU3Ry
ZWFtYWJsZVRvU3RyaW5nKHRpbWVfc3RydWN0LnRtX3llYXIgKyAxOTAwKSArICItIiArCisgICAg
ICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9tb24gKyAxKSArICItIiAr
CisgICAgICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9tZGF5KSArICJU
IiArCisgICAgICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9ob3VyKSAr
ICI6IiArCisgICAgICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9taW4p
ICsgIjoiICsKKyAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX3Nl
Yyk7Cit9CisKIC8vIFN0cmVhbXMgYW4gWE1MIENEQVRBIHNlY3Rpb24sIGVzY2FwaW5nIGludmFs
aWQgQ0RBVEEgc2VxdWVuY2VzIGFzIG5lZWRlZC4KIHZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmlu
dGVyOjpPdXRwdXRYbWxDRGF0YVNlY3Rpb24oOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogZGF0YSkgewpAQCAtMzIwNiw4OSArMzY2OCwxNzkgQEAgdm9pZCBYbWxVbml0VGVzdFJlc3Vs
dFByaW50ZXI6Ok91dHB1dFhtbENEYXRhU2VjdGlvbig6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAog
ICAqc3RyZWFtIDw8ICJdXT4iOwogfQogCit2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6
T3V0cHV0WG1sQXR0cmlidXRlKAorICAgIHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBlbGVtZW50X25hbWUsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUs
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSB7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiYgYWxsb3dlZF9uYW1lcyA9CisgICAgICBHZXRSZXNlcnZlZEF0dHJpYnV0ZXNG
b3JFbGVtZW50KGVsZW1lbnRfbmFtZSk7CisKKyAgR1RFU1RfQ0hFQ0tfKHN0ZDo6ZmluZChhbGxv
d2VkX25hbWVzLmJlZ2luKCksIGFsbG93ZWRfbmFtZXMuZW5kKCksIG5hbWUpICE9CisgICAgICAg
ICAgICAgICAgICAgYWxsb3dlZF9uYW1lcy5lbmQoKSkKKyAgICAgIDw8ICJBdHRyaWJ1dGUgIiA8
PCBuYW1lIDw8ICIgaXMgbm90IGFsbG93ZWQgZm9yIGVsZW1lbnQgPCIgPDwgZWxlbWVudF9uYW1l
CisgICAgICA8PCAiPi4iOworCisgICpzdHJlYW0gPDwgIiAiIDw8IG5hbWUgPDwgIj1cIiIgPDwg
RXNjYXBlWG1sQXR0cmlidXRlKHZhbHVlKSA8PCAiXCIiOworfQorCiAvLyBQcmludHMgYW4gWE1M
IHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdEluZm8gb2JqZWN0LgotLy8gVE9ETyh3YW4pOiBUaGVy
ZSBpcyBhbHNvIHZhbHVlIGluIHByaW50aW5nIHByb3BlcnRpZXMgd2l0aCB0aGUgcGxhaW4gcHJp
bnRlci4KKy8vIEZJWE1FOiBUaGVyZSBpcyBhbHNvIHZhbHVlIGluIHByaW50aW5nIHByb3BlcnRp
ZXMgd2l0aCB0aGUgcGxhaW4gcHJpbnRlci4KIHZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVy
OjpPdXRwdXRYbWxUZXN0SW5mbyg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRlc3RfY2Fz
ZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKICAgY29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0
ID0gKnRlc3RfaW5mby5yZXN1bHQoKTsKLSAgKnN0cmVhbSA8PCAiICAgIDx0ZXN0Y2FzZSBuYW1l
PVwiIgotICAgICAgICAgIDw8IEVzY2FwZVhtbEF0dHJpYnV0ZSh0ZXN0X2luZm8ubmFtZSgpKS5j
X3N0cigpCi0gICAgICAgICAgPDwgIlwiIHN0YXR1cz1cIiIKLSAgICAgICAgICA8PCAodGVzdF9p
bmZvLnNob3VsZF9ydW4oKSA/ICJydW4iIDogIm5vdHJ1biIpCi0gICAgICAgICAgPDwgIlwiIHRp
bWU9XCIiCi0gICAgICAgICAgPDwgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKHJlc3VsdC5l
bGFwc2VkX3RpbWUoKSkKLSAgICAgICAgICA8PCAiXCIgY2xhc3NuYW1lPVwiIiA8PCBFc2NhcGVY
bWxBdHRyaWJ1dGUodGVzdF9jYXNlX25hbWUpLmNfc3RyKCkKLSAgICAgICAgICA8PCAiXCIiIDw8
IFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKHJlc3VsdCkuY19zdHIoKTsKKyAgY29uc3Qg
c3RkOjpzdHJpbmcga1Rlc3RjYXNlID0gInRlc3RjYXNlIjsKKworICBpZiAodGVzdF9pbmZvLmlz
X2luX2Fub3RoZXJfc2hhcmQoKSkgeworICAgIHJldHVybjsKKyAgfQorCisgICpzdHJlYW0gPDwg
IiAgICA8dGVzdGNhc2UiOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2Us
ICJuYW1lIiwgdGVzdF9pbmZvLm5hbWUoKSk7CisKKyAgaWYgKHRlc3RfaW5mby52YWx1ZV9wYXJh
bSgpICE9IE5VTEwpIHsKKyAgICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2Us
ICJ2YWx1ZV9wYXJhbSIsCisgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfaW5mby52YWx1ZV9w
YXJhbSgpKTsKKyAgfQorICBpZiAodGVzdF9pbmZvLnR5cGVfcGFyYW0oKSAhPSBOVUxMKSB7Cisg
ICAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNlLCAidHlwZV9wYXJhbSIsIHRl
c3RfaW5mby50eXBlX3BhcmFtKCkpOworICB9CisgIGlmIChHVEVTVF9GTEFHKGxpc3RfdGVzdHMp
KSB7CisgICAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNlLCAiZmlsZSIsIHRl
c3RfaW5mby5maWxlKCkpOworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2Fz
ZSwgImxpbmUiLAorICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodGVz
dF9pbmZvLmxpbmUoKSkpOworICAgICpzdHJlYW0gPDwgIiAvPlxuIjsKKyAgICByZXR1cm47Cisg
IH0KKworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJzdGF0dXMiLAor
ICAgICAgICAgICAgICAgICAgICAgdGVzdF9pbmZvLnNob3VsZF9ydW4oKSA/ICJydW4iIDogIm5v
dHJ1biIpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJ0aW1lIiwK
KyAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyhyZXN1bHQu
ZWxhcHNlZF90aW1lKCkpKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNl
LCAiY2xhc3NuYW1lIiwgdGVzdF9jYXNlX25hbWUpOwogCiAgIGludCBmYWlsdXJlcyA9IDA7CiAg
IGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0LnRvdGFsX3BhcnRfY291bnQoKTsgKytpKSB7CiAg
ICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIHBhcnQgPSByZXN1bHQuR2V0VGVzdFBhcnRSZXN1bHQo
aSk7CiAgICAgaWYgKHBhcnQuZmFpbGVkKCkpIHsKLSAgICAgIGlmICgrK2ZhaWx1cmVzID09IDEp
CisgICAgICBpZiAoKytmYWlsdXJlcyA9PSAxKSB7CiAgICAgICAgICpzdHJlYW0gPDwgIj5cbiI7
CisgICAgICB9CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyBsb2NhdGlvbiA9CisgICAgICAgICAg
aW50ZXJuYWw6OkZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24ocGFydC5maWxl
X25hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJ0LmxpbmVfbnVtYmVyKCkpOworICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg
c3VtbWFyeSA9IGxvY2F0aW9uICsgIlxuIiArIHBhcnQuc3VtbWFyeSgpOwogICAgICAgKnN0cmVh
bSA8PCAiICAgICAgPGZhaWx1cmUgbWVzc2FnZT1cIiIKLSAgICAgICAgICAgICAgPDwgRXNjYXBl
WG1sQXR0cmlidXRlKHBhcnQuc3VtbWFyeSgpKS5jX3N0cigpCisgICAgICAgICAgICAgIDw8IEVz
Y2FwZVhtbEF0dHJpYnV0ZShzdW1tYXJ5LmNfc3RyKCkpCiAgICAgICAgICAgICAgIDw8ICJcIiB0
eXBlPVwiXCI+IjsKLSAgICAgIGNvbnN0IFN0cmluZyBtZXNzYWdlID0gUmVtb3ZlSW52YWxpZFht
bENoYXJhY3RlcnMoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICAgIiVzOiVkXG4lcyIsCi0gICAg
ICAgICAgcGFydC5maWxlX25hbWUoKSwgcGFydC5saW5lX251bWJlcigpLAotICAgICAgICAgIHBh
cnQubWVzc2FnZSgpKS5jX3N0cigpKTsKLSAgICAgIE91dHB1dFhtbENEYXRhU2VjdGlvbihzdHJl
YW0sIG1lc3NhZ2UuY19zdHIoKSk7CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyBkZXRhaWwgPSBs
b2NhdGlvbiArICJcbiIgKyBwYXJ0Lm1lc3NhZ2UoKTsKKyAgICAgIE91dHB1dFhtbENEYXRhU2Vj
dGlvbihzdHJlYW0sIFJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGRldGFpbCkuY19zdHIoKSk7
CiAgICAgICAqc3RyZWFtIDw8ICI8L2ZhaWx1cmU+XG4iOwogICAgIH0KICAgfQogCi0gIGlmIChm
YWlsdXJlcyA9PSAwKQorICBpZiAoZmFpbHVyZXMgPT0gMCAmJiByZXN1bHQudGVzdF9wcm9wZXJ0
eV9jb3VudCgpID09IDApIHsKICAgICAqc3RyZWFtIDw8ICIgLz5cbiI7Ci0gIGVsc2UKKyAgfSBl
bHNlIHsKKyAgICBpZiAoZmFpbHVyZXMgPT0gMCkgeworICAgICAgKnN0cmVhbSA8PCAiPlxuIjsK
KyAgICB9CisgICAgT3V0cHV0WG1sVGVzdFByb3BlcnRpZXMoc3RyZWFtLCByZXN1bHQpOwogICAg
ICpzdHJlYW0gPDwgIiAgICA8L3Rlc3RjYXNlPlxuIjsKKyAgfQogfQogCiAvLyBQcmludHMgYW4g
WE1MIHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdENhc2Ugb2JqZWN0Ci12b2lkIFhtbFVuaXRUZXN0
UmVzdWx0UHJpbnRlcjo6UHJpbnRYbWxUZXN0Q2FzZShGSUxFKiBvdXQsCit2b2lkIFhtbFVuaXRU
ZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRYbWxUZXN0Q2FzZShzdGQ6Om9zdHJlYW0qIHN0cmVhbSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRl
c3RDYXNlJiB0ZXN0X2Nhc2UpIHsKLSAgZnByaW50ZihvdXQsCi0gICAgICAgICAgIiAgPHRlc3Rz
dWl0ZSBuYW1lPVwiJXNcIiB0ZXN0cz1cIiVkXCIgZmFpbHVyZXM9XCIlZFwiICIKLSAgICAgICAg
ICAiZGlzYWJsZWQ9XCIlZFwiICIsCi0gICAgICAgICAgRXNjYXBlWG1sQXR0cmlidXRlKHRlc3Rf
Y2FzZS5uYW1lKCkpLmNfc3RyKCksCi0gICAgICAgICAgdGVzdF9jYXNlLnRvdGFsX3Rlc3RfY291
bnQoKSwKLSAgICAgICAgICB0ZXN0X2Nhc2UuZmFpbGVkX3Rlc3RfY291bnQoKSwKLSAgICAgICAg
ICB0ZXN0X2Nhc2UuZGlzYWJsZWRfdGVzdF9jb3VudCgpKTsKLSAgZnByaW50ZihvdXQsCi0gICAg
ICAgICAgImVycm9ycz1cIjBcIiB0aW1lPVwiJXNcIj5cbiIsCi0gICAgICAgICAgRm9ybWF0VGlt
ZUluTWlsbGlzQXNTZWNvbmRzKHRlc3RfY2FzZS5lbGFwc2VkX3RpbWUoKSkuY19zdHIoKSk7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0c3VpdGUgPSAidGVzdHN1aXRlIjsKKyAgKnN0cmVhbSA8
PCAiICA8IiA8PCBrVGVzdHN1aXRlOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVz
dHN1aXRlLCAibmFtZSIsIHRlc3RfY2FzZS5uYW1lKCkpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUo
c3RyZWFtLCBrVGVzdHN1aXRlLCAidGVzdHMiLAorICAgICAgICAgICAgICAgICAgICAgU3RyZWFt
YWJsZVRvU3RyaW5nKHRlc3RfY2FzZS5yZXBvcnRhYmxlX3Rlc3RfY291bnQoKSkpOworICBpZiAo
IUdURVNUX0ZMQUcobGlzdF90ZXN0cykpIHsKKyAgICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFt
LCBrVGVzdHN1aXRlLCAiZmFpbHVyZXMiLAorICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW1h
YmxlVG9TdHJpbmcodGVzdF9jYXNlLmZhaWxlZF90ZXN0X2NvdW50KCkpKTsKKyAgICBPdXRwdXRY
bWxBdHRyaWJ1dGUoCisgICAgICAgIHN0cmVhbSwga1Rlc3RzdWl0ZSwgImRpc2FibGVkIiwKKyAg
ICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHRlc3RfY2FzZS5yZXBvcnRhYmxlX2Rpc2FibGVkX3Rl
c3RfY291bnQoKSkpOworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUs
ICJlcnJvcnMiLCAiMCIpOworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3Vp
dGUsICJ0aW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNT
ZWNvbmRzKHRlc3RfY2FzZS5lbGFwc2VkX3RpbWUoKSkpOworICAgICpzdHJlYW0gPDwgVGVzdFBy
b3BlcnRpZXNBc1htbEF0dHJpYnV0ZXModGVzdF9jYXNlLmFkX2hvY190ZXN0X3Jlc3VsdCgpKTsK
KyAgfQorICAqc3RyZWFtIDw8ICI+XG4iOwogICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RfY2Fz
ZS50b3RhbF90ZXN0X2NvdW50KCk7ICsraSkgewotICAgIFN0clN0cmVhbSBzdHJlYW07Ci0gICAg
T3V0cHV0WG1sVGVzdEluZm8oJnN0cmVhbSwgdGVzdF9jYXNlLm5hbWUoKSwgKnRlc3RfY2FzZS5H
ZXRUZXN0SW5mbyhpKSk7Ci0gICAgZnByaW50ZihvdXQsICIlcyIsIFN0clN0cmVhbVRvU3RyaW5n
KCZzdHJlYW0pLmNfc3RyKCkpOworICAgIGlmICh0ZXN0X2Nhc2UuR2V0VGVzdEluZm8oaSktPmlz
X3JlcG9ydGFibGUoKSkKKyAgICAgIE91dHB1dFhtbFRlc3RJbmZvKHN0cmVhbSwgdGVzdF9jYXNl
Lm5hbWUoKSwgKnRlc3RfY2FzZS5HZXRUZXN0SW5mbyhpKSk7CiAgIH0KLSAgZnByaW50ZihvdXQs
ICIgIDwvdGVzdHN1aXRlPlxuIik7CisgICpzdHJlYW0gPDwgIiAgPC8iIDw8IGtUZXN0c3VpdGUg
PDwgIj5cbiI7CiB9CiAKIC8vIFByaW50cyBhbiBYTUwgc3VtbWFyeSBvZiB1bml0X3Rlc3QgdG8g
b3V0cHV0IHN0cmVhbSBvdXQuCi12b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRY
bWxVbml0VGVzdChGSUxFKiBvdXQsCit2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJp
bnRYbWxVbml0VGVzdChzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpIHsK
LSAgZnByaW50ZihvdXQsICI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwi
Pz5cbiIpOwotICBmcHJpbnRmKG91dCwKLSAgICAgICAgICAiPHRlc3RzdWl0ZXMgdGVzdHM9XCIl
ZFwiIGZhaWx1cmVzPVwiJWRcIiBkaXNhYmxlZD1cIiVkXCIgIgotICAgICAgICAgICJlcnJvcnM9
XCIwXCIgdGltZT1cIiVzXCIgIiwKLSAgICAgICAgICB1bml0X3Rlc3QudG90YWxfdGVzdF9jb3Vu
dCgpLAotICAgICAgICAgIHVuaXRfdGVzdC5mYWlsZWRfdGVzdF9jb3VudCgpLAotICAgICAgICAg
IHVuaXRfdGVzdC5kaXNhYmxlZF90ZXN0X2NvdW50KCksCi0gICAgICAgICAgRm9ybWF0VGltZUlu
TWlsbGlzQXNTZWNvbmRzKHVuaXRfdGVzdC5lbGFwc2VkX3RpbWUoKSkuY19zdHIoKSk7CisgIGNv
bnN0IHN0ZDo6c3RyaW5nIGtUZXN0c3VpdGVzID0gInRlc3RzdWl0ZXMiOworCisgICpzdHJlYW0g
PDwgIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCI/PlxuIjsKKyAgKnN0
cmVhbSA8PCAiPCIgPDwga1Rlc3RzdWl0ZXM7CisKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVh
bSwga1Rlc3RzdWl0ZXMsICJ0ZXN0cyIsCisgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxl
VG9TdHJpbmcodW5pdF90ZXN0LnJlcG9ydGFibGVfdGVzdF9jb3VudCgpKSk7CisgIE91dHB1dFht
bEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGVzLCAiZmFpbHVyZXMiLAorICAgICAgICAgICAg
ICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5mYWlsZWRfdGVzdF9jb3VudCgp
KSk7CisgIE91dHB1dFhtbEF0dHJpYnV0ZSgKKyAgICAgIHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJk
aXNhYmxlZCIsCisgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodW5pdF90ZXN0LnJlcG9ydGFibGVf
ZGlzYWJsZWRfdGVzdF9jb3VudCgpKSk7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtU
ZXN0c3VpdGVzLCAiZXJyb3JzIiwgIjAiKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKAorICAgICAg
c3RyZWFtLCBrVGVzdHN1aXRlcywgInRpbWVzdGFtcCIsCisgICAgICBGb3JtYXRFcG9jaFRpbWVJ
bk1pbGxpc0FzSXNvODYwMSh1bml0X3Rlc3Quc3RhcnRfdGltZXN0YW1wKCkpKTsKKyAgT3V0cHV0
WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0aW1lIiwKKyAgICAgICAgICAgICAg
ICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyh1bml0X3Rlc3QuZWxhcHNlZF90aW1l
KCkpKTsKKwogICBpZiAoR1RFU1RfRkxBRyhzaHVmZmxlKSkgewotICAgIGZwcmludGYob3V0LCAi
cmFuZG9tX3NlZWQ9XCIlZFwiICIsIHVuaXRfdGVzdC5yYW5kb21fc2VlZCgpKTsKKyAgICBPdXRw
dXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlcywgInJhbmRvbV9zZWVkIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5yYW5kb21fc2Vl
ZCgpKSk7CisgIH0KKyAgKnN0cmVhbSA8PCBUZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRlcyh1
bml0X3Rlc3QuYWRfaG9jX3Rlc3RfcmVzdWx0KCkpOworCisgIE91dHB1dFhtbEF0dHJpYnV0ZShz
dHJlYW0sIGtUZXN0c3VpdGVzLCAibmFtZSIsICJBbGxUZXN0cyIpOworICAqc3RyZWFtIDw8ICI+
XG4iOworCisgIGZvciAoaW50IGkgPSAwOyBpIDwgdW5pdF90ZXN0LnRvdGFsX3Rlc3RfY2FzZV9j
b3VudCgpOyArK2kpIHsKKyAgICBpZiAodW5pdF90ZXN0LkdldFRlc3RDYXNlKGkpLT5yZXBvcnRh
YmxlX3Rlc3RfY291bnQoKSA+IDApCisgICAgICBQcmludFhtbFRlc3RDYXNlKHN0cmVhbSwgKnVu
aXRfdGVzdC5HZXRUZXN0Q2FzZShpKSk7CiAgIH0KLSAgZnByaW50ZihvdXQsICJuYW1lPVwiQWxs
VGVzdHNcIj5cbiIpOwotICBmb3IgKGludCBpID0gMDsgaSA8IHVuaXRfdGVzdC50b3RhbF90ZXN0
X2Nhc2VfY291bnQoKTsgKytpKQotICAgIFByaW50WG1sVGVzdENhc2Uob3V0LCAqdW5pdF90ZXN0
LkdldFRlc3RDYXNlKGkpKTsKLSAgZnByaW50ZihvdXQsICI8L3Rlc3RzdWl0ZXM+XG4iKTsKKyAg
KnN0cmVhbSA8PCAiPC8iIDw8IGtUZXN0c3VpdGVzIDw8ICI+XG4iOworfQorCit2b2lkIFhtbFVu
aXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRYbWxUZXN0c0xpc3QoCisgICAgc3RkOjpvc3RyZWFt
KiBzdHJlYW0sIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMpIHsKKyAg
Y29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RzdWl0ZXMgPSAidGVzdHN1aXRlcyI7CisKKyAgKnN0cmVh
bSA8PCAiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIj8+XG4iOworICAq
c3RyZWFtIDw8ICI8IiA8PCBrVGVzdHN1aXRlczsKKworICBpbnQgdG90YWxfdGVzdHMgPSAwOwor
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXMuc2l6ZSgpOyArK2kpIHsKKyAgICB0
b3RhbF90ZXN0cyArPSB0ZXN0X2Nhc2VzW2ldLT50b3RhbF90ZXN0X2NvdW50KCk7CisgIH0KKyAg
T3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0ZXN0cyIsCisgICAgICAg
ICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodG90YWxfdGVzdHMpKTsKKyAgT3V0cHV0
WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJuYW1lIiwgIkFsbFRlc3RzIik7Cisg
ICpzdHJlYW0gPDwgIj5cbiI7CisKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0X2Nhc2Vz
LnNpemUoKTsgKytpKSB7CisgICAgUHJpbnRYbWxUZXN0Q2FzZShzdHJlYW0sICp0ZXN0X2Nhc2Vz
W2ldKTsKKyAgfQorICAqc3RyZWFtIDw8ICI8LyIgPDwga1Rlc3RzdWl0ZXMgPDwgIj5cbiI7CiB9
CiAKIC8vIFByb2R1Y2VzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdGVzdCBwcm9wZXJ0aWVz
IGluIGEgcmVzdWx0IGFzIHNwYWNlCiAvLyBkZWxpbWl0ZWQgWE1MIGF0dHJpYnV0ZXMgYmFzZWQg
b24gdGhlIHByb3BlcnR5IGtleT0idmFsdWUiIHBhaXJzLgotU3RyaW5nIFhtbFVuaXRUZXN0UmVz
dWx0UHJpbnRlcjo6VGVzdFByb3BlcnRpZXNBc1htbEF0dHJpYnV0ZXMoCitzdGQ6OnN0cmluZyBY
bWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKAog
ICAgIGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCkgewogICBNZXNzYWdlIGF0dHJpYnV0ZXM7CiAg
IGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKTsgKytpKSB7
CkBAIC0zMjk5LDUyICszODUxLDU2MiBAQCBTdHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVy
OjpUZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRlcygKICAgcmV0dXJuIGF0dHJpYnV0ZXMuR2V0
U3RyaW5nKCk7CiB9CiAKK3ZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPdXRwdXRYbWxU
ZXN0UHJvcGVydGllcygKKyAgICBzdGQ6Om9zdHJlYW0qIHN0cmVhbSwgY29uc3QgVGVzdFJlc3Vs
dCYgcmVzdWx0KSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtQcm9wZXJ0aWVzID0gInByb3BlcnRp
ZXMiOworICBjb25zdCBzdGQ6OnN0cmluZyBrUHJvcGVydHkgPSAicHJvcGVydHkiOworCisgIGlm
IChyZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpIDw9IDApIHsKKyAgICByZXR1cm47CisgIH0K
KworICAqc3RyZWFtIDw8ICI8IiA8PCBrUHJvcGVydGllcyA8PCAiPlxuIjsKKyAgZm9yIChpbnQg
aSA9IDA7IGkgPCByZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpOyArK2kpIHsKKyAgICBjb25z
dCBUZXN0UHJvcGVydHkmIHByb3BlcnR5ID0gcmVzdWx0LkdldFRlc3RQcm9wZXJ0eShpKTsKKyAg
ICAqc3RyZWFtIDw8ICI8IiA8PCBrUHJvcGVydHk7CisgICAgKnN0cmVhbSA8PCAiIG5hbWU9XCIi
IDw8IEVzY2FwZVhtbEF0dHJpYnV0ZShwcm9wZXJ0eS5rZXkoKSkgPDwgIlwiIjsKKyAgICAqc3Ry
ZWFtIDw8ICIgdmFsdWU9XCIiIDw8IEVzY2FwZVhtbEF0dHJpYnV0ZShwcm9wZXJ0eS52YWx1ZSgp
KSA8PCAiXCIiOworICAgICpzdHJlYW0gPDwgIi8+XG4iOworICB9CisgICpzdHJlYW0gPDwgIjwv
IiA8PCBrUHJvcGVydGllcyA8PCAiPlxuIjsKK30KKwogLy8gRW5kIFhtbFVuaXRUZXN0UmVzdWx0
UHJpbnRlcgogCi0vLyBDbGFzcyBTY29wZWRUcmFjZQorLy8gVGhpcyBjbGFzcyBnZW5lcmF0ZXMg
YW4gSlNPTiBvdXRwdXQgZmlsZS4KK2NsYXNzIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIgOiBw
dWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CisgcHVibGljOgorICBleHBsaWNpdCBKc29u
VW5pdFRlc3RSZXN1bHRQcmludGVyKGNvbnN0IGNoYXIqIG91dHB1dF9maWxlKTsKIAotLy8gUHVz
aGVzIHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlvbiBhbmQgbWVzc2FnZSBvbnRvIGEgcGVy
LXRocmVhZAotLy8gdHJhY2Ugc3RhY2sgbWFpbnRhaW5lZCBieSBHb29nbGUgVGVzdC4KLS8vIEwg
PCBVbml0VGVzdDo6bXV0ZXhfCi1TY29wZWRUcmFjZTo6U2NvcGVkVHJhY2UoY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUsIGNvbnN0IE1lc3NhZ2UmIG1lc3NhZ2UpIHsKLSAgVHJhY2VJbmZvIHRy
YWNlOwotICB0cmFjZS5maWxlID0gZmlsZTsKLSAgdHJhY2UubGluZSA9IGxpbmU7Ci0gIHRyYWNl
Lm1lc3NhZ2UgPSBtZXNzYWdlLkdldFN0cmluZygpOworICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRl
cmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsIGludCBpdGVyYXRpb24pOwogCi0g
IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5QdXNoR1Rlc3RUcmFjZSh0cmFjZSk7CisgIC8vIFBy
aW50cyBhbiBKU09OIHN1bW1hcnkgb2YgYWxsIHVuaXQgdGVzdHMuCisgIHN0YXRpYyB2b2lkIFBy
aW50SnNvblRlc3RMaXN0KDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMp
OworCisgcHJpdmF0ZToKKyAgLy8gUmV0dXJucyBhbiBKU09OLWVzY2FwZWQgY29weSBvZiB0aGUg
aW5wdXQgc3RyaW5nIHN0ci4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEVzY2FwZUpzb24oY29uc3Qg
c3RkOjpzdHJpbmcmIHN0cik7CisKKyAgLy8vLyBWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBhdHRy
aWJ1dGUgYmVsb25ncyB0byB0aGUgZ2l2ZW4gZWxlbWVudCBhbmQKKyAgLy8vLyBzdHJlYW1zIHRo
ZSBhdHRyaWJ1dGUgYXMgSlNPTi4KKyAgc3RhdGljIHZvaWQgT3V0cHV0SnNvbktleShzdGQ6Om9z
dHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgZWxlbWVudF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgaW5kZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29tbWEgPSB0
cnVlKTsKKyAgc3RhdGljIHZvaWQgT3V0cHV0SnNvbktleShzdGQ6Om9zdHJlYW0qIHN0cmVhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZWxlbWVudF9u
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5kZW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgY29tbWEgPSB0cnVlKTsKKworICAvLyBTdHJlYW1zIGEgSlNPTiBy
ZXByZXNlbnRhdGlvbiBvZiBhIFRlc3RJbmZvIG9iamVjdC4KKyAgc3RhdGljIHZvaWQgT3V0cHV0
SnNvblRlc3RJbmZvKDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pOworCisgIC8vIFBy
aW50cyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgYSBUZXN0Q2FzZSBvYmplY3QKKyAgc3RhdGlj
IHZvaWQgUHJpbnRKc29uVGVzdENhc2UoOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSk7CisKKyAg
Ly8gUHJpbnRzIGEgSlNPTiBzdW1tYXJ5IG9mIHVuaXRfdGVzdCB0byBvdXRwdXQgc3RyZWFtIG91
dC4KKyAgc3RhdGljIHZvaWQgUHJpbnRKc29uVW5pdFRlc3QoOjpzdGQ6Om9zdHJlYW0qIHN0cmVh
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pdFRlc3QmIHVuaXRf
dGVzdCk7CisKKyAgLy8gUHJvZHVjZXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0ZXN0IHBy
b3BlcnRpZXMgaW4gYSByZXN1bHQgYXMKKyAgLy8gYSBKU09OIGRpY3Rpb25hcnkuCisgIHN0YXRp
YyBzdGQ6OnN0cmluZyBUZXN0UHJvcGVydGllc0FzSnNvbihjb25zdCBUZXN0UmVzdWx0JiByZXN1
bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgaW5kZW50KTsKKworICAvLyBUaGUgb3V0cHV0IGZpbGUuCisgIGNvbnN0IHN0ZDo6
c3RyaW5nIG91dHB1dF9maWxlXzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05f
KEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIpOworfTsKKworLy8gQ3JlYXRlcyBhIG5ldyBKc29u
VW5pdFRlc3RSZXN1bHRQcmludGVyLgorSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6SnNvblVu
aXRUZXN0UmVzdWx0UHJpbnRlcihjb25zdCBjaGFyKiBvdXRwdXRfZmlsZSkKKyAgICA6IG91dHB1
dF9maWxlXyhvdXRwdXRfZmlsZSkgeworICBpZiAob3V0cHV0X2ZpbGVfLmVtcHR5KCkpIHsKKyAg
ICBHVEVTVF9MT0dfKEZBVEFMKSA8PCAiSlNPTiBvdXRwdXQgZmlsZSBtYXkgbm90IGJlIG51bGwi
OworICB9CiB9CiAKLS8vIFBvcHMgdGhlIGluZm8gcHVzaGVkIGJ5IHRoZSBjJ3Rvci4KLS8vIEwg
PCBVbml0VGVzdDo6bXV0ZXhfCi1TY29wZWRUcmFjZTo6flNjb3BlZFRyYWNlKCkgewotICBVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+UG9wR1Rlc3RUcmFjZSgpOwordm9pZCBKc29uVW5pdFRlc3RS
ZXN1bHRQcmludGVyOjpPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IC8qaXRlcmF0aW9uKi8pIHsKKyAgRklMRSoganNvbm91dCA9IE9wZW5GaWxlRm9yV3JpdGluZyhv
dXRwdXRfZmlsZV8pOworICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07CisgIFByaW50SnNvblVu
aXRUZXN0KCZzdHJlYW0sIHVuaXRfdGVzdCk7CisgIGZwcmludGYoanNvbm91dCwgIiVzIiwgU3Ry
aW5nU3RyZWFtVG9TdHJpbmcoJnN0cmVhbSkuY19zdHIoKSk7CisgIGZjbG9zZShqc29ub3V0KTsK
IH0KIAorLy8gUmV0dXJucyBhbiBKU09OLWVzY2FwZWQgY29weSBvZiB0aGUgaW5wdXQgc3RyaW5n
IHN0ci4KK3N0ZDo6c3RyaW5nIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6OkVzY2FwZUpzb24o
Y29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgeworICBNZXNzYWdlIG07CiAKLS8vIGNsYXNzIE9zU3Rh
Y2tUcmFjZUdldHRlcgorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ci5zaXplKCk7ICsraSkg
eworICAgIGNvbnN0IGNoYXIgY2ggPSBzdHJbaV07CisgICAgc3dpdGNoIChjaCkgeworICAgICAg
Y2FzZSAnXFwnOgorICAgICAgY2FzZSAnIic6CisgICAgICBjYXNlICcvJzoKKyAgICAgICAgbSA8
PCAnXFwnIDw8IGNoOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ1xiJzoKKyAgICAgICAg
bSA8PCAiXFxiIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdcdCc6CisgICAgICAgIG0g
PDwgIlxcdCI7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnXG4nOgorICAgICAgICBtIDw8
ICJcXG4iOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ1xmJzoKKyAgICAgICAgbSA8PCAi
XFxmIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdccic6CisgICAgICAgIG0gPDwgIlxc
ciI7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKGNoIDwgJyAn
KSB7CisgICAgICAgICAgbSA8PCAiXFx1MDAiIDw8IFN0cmluZzo6Rm9ybWF0Qnl0ZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIG0g
PDwgY2g7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICB9CiAKLS8vIFJldHVy
bnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYSBTdHJpbmcuICBQYXJhbWV0ZXJzOgot
Ly8KLS8vICAgbWF4X2RlcHRoICAtIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMg
dG8gYmUgaW5jbHVkZWQKLS8vICAgICAgICAgICAgICAgIGluIHRoZSB0cmFjZS4KLS8vICAgc2tp
cF9jb3VudCAtIHRoZSBudW1iZXIgb2YgdG9wIGZyYW1lcyB0byBiZSBza2lwcGVkOyBkb2Vzbid0
IGNvdW50Ci0vLyAgICAgICAgICAgICAgICBhZ2FpbnN0IG1heF9kZXB0aC4KLS8vCi0vLyBMIDwg
bXV0ZXhfCi0vLyBXZSB1c2UgIkwgPCBtdXRleF8iIHRvIGRlbm90ZSB0aGF0IHRoZSBmdW5jdGlv
biBtYXkgYWNxdWlyZSBtdXRleF8uCi1TdHJpbmcgT3NTdGFja1RyYWNlR2V0dGVyOjpDdXJyZW50
U3RhY2tUcmFjZShpbnQsIGludCkgewotICByZXR1cm4gU3RyaW5nKCIiKTsKKyAgcmV0dXJuIG0u
R2V0U3RyaW5nKCk7CiB9CiAKLS8vIEwgPCBtdXRleF8KLXZvaWQgT3NTdGFja1RyYWNlR2V0dGVy
OjpVcG9uTGVhdmluZ0dUZXN0KCkgeworLy8gVGhlIGZvbGxvd2luZyByb3V0aW5lcyBnZW5lcmF0
ZSBhbiBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgVW5pdFRlc3QKKy8vIG9iamVjdC4KKworLy8g
Rm9ybWF0cyB0aGUgZ2l2ZW4gdGltZSBpbiBtaWxsaXNlY29uZHMgYXMgc2Vjb25kcy4KK3N0YXRp
YyBzdGQ6OnN0cmluZyBGb3JtYXRUaW1lSW5NaWxsaXNBc0R1cmF0aW9uKFRpbWVJbk1pbGxpcyBt
cykgeworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICBzcyA8PCAoc3RhdGljX2Nhc3Q8ZG91
YmxlPihtcykgKiAxZS0zKSA8PCAicyI7CisgIHJldHVybiBzcy5zdHIoKTsKIH0KIAotY29uc3Qg
Y2hhciogY29uc3QKLU9zU3RhY2tUcmFjZUdldHRlcjo6a0VsaWRlZEZyYW1lc01hcmtlciA9Cisv
LyBDb252ZXJ0cyB0aGUgZ2l2ZW4gZXBvY2ggdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gYSBkYXRl
IHN0cmluZyBpbiB0aGUKKy8vIFJGQzMzMzkgZm9ybWF0LCB3aXRob3V0IHRoZSB0aW1lem9uZSBp
bmZvcm1hdGlvbi4KK3N0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0Fz
UkZDMzMzOShUaW1lSW5NaWxsaXMgbXMpIHsKKyAgc3RydWN0IHRtIHRpbWVfc3RydWN0OworICBp
ZiAoIVBvcnRhYmxlTG9jYWx0aW1lKHN0YXRpY19jYXN0PHRpbWVfdD4obXMgLyAxMDAwKSwgJnRp
bWVfc3RydWN0KSkKKyAgICByZXR1cm4gIiI7CisgIC8vIFlZWVktTU0tRERUaGg6bW06c3MKKyAg
cmV0dXJuIFN0cmVhbWFibGVUb1N0cmluZyh0aW1lX3N0cnVjdC50bV95ZWFyICsgMTkwMCkgKyAi
LSIgKworICAgICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1fbW9uICsg
MSkgKyAiLSIgKworICAgICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1f
bWRheSkgKyAiVCIgKworICAgICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3Qu
dG1faG91cikgKyAiOiIgKworICAgICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1
Y3QudG1fbWluKSArICI6IiArCisgICAgICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0
cnVjdC50bV9zZWMpICsgIloiOworfQorCitzdGF0aWMgaW5saW5lIHN0ZDo6c3RyaW5nIEluZGVu
dChpbnQgd2lkdGgpIHsKKyAgcmV0dXJuIHN0ZDo6c3RyaW5nKHdpZHRoLCAnICcpOworfQorCit2
b2lkIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dEpzb25LZXkoCisgICAgc3RkOjpv
c3RyZWFtKiBzdHJlYW0sCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGVsZW1lbnRfbmFtZSwKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUs
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGluZGVudCwKKyAgICBib29sIGNvbW1hKSB7CisgIGNv
bnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgYWxsb3dlZF9uYW1lcyA9CisgICAgICBHZXRS
ZXNlcnZlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KGVsZW1lbnRfbmFtZSk7CisKKyAgR1RFU1RfQ0hF
Q0tfKHN0ZDo6ZmluZChhbGxvd2VkX25hbWVzLmJlZ2luKCksIGFsbG93ZWRfbmFtZXMuZW5kKCks
IG5hbWUpICE9CisgICAgICAgICAgICAgICAgICAgYWxsb3dlZF9uYW1lcy5lbmQoKSkKKyAgICAg
IDw8ICJLZXkgXCIiIDw8IG5hbWUgPDwgIlwiIGlzIG5vdCBhbGxvd2VkIGZvciB2YWx1ZSBcIiIg
PDwgZWxlbWVudF9uYW1lCisgICAgICA8PCAiXCIuIjsKKworICAqc3RyZWFtIDw8IGluZGVudCA8
PCAiXCIiIDw8IG5hbWUgPDwgIlwiOiBcIiIgPDwgRXNjYXBlSnNvbih2YWx1ZSkgPDwgIlwiIjsK
KyAgaWYgKGNvbW1hKQorICAgICpzdHJlYW0gPDwgIixcbiI7Cit9CisKK3ZvaWQgSnNvblVuaXRU
ZXN0UmVzdWx0UHJpbnRlcjo6T3V0cHV0SnNvbktleSgKKyAgICBzdGQ6Om9zdHJlYW0qIHN0cmVh
bSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZWxlbWVudF9uYW1lLAorICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBuYW1lLAorICAgIGludCB2YWx1ZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5k
ZW50LAorICAgIGJvb2wgY29tbWEpIHsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
JiBhbGxvd2VkX25hbWVzID0KKyAgICAgIEdldFJlc2VydmVkQXR0cmlidXRlc0ZvckVsZW1lbnQo
ZWxlbWVudF9uYW1lKTsKKworICBHVEVTVF9DSEVDS18oc3RkOjpmaW5kKGFsbG93ZWRfbmFtZXMu
YmVnaW4oKSwgYWxsb3dlZF9uYW1lcy5lbmQoKSwgbmFtZSkgIT0KKyAgICAgICAgICAgICAgICAg
ICBhbGxvd2VkX25hbWVzLmVuZCgpKQorICAgICAgPDwgIktleSBcIiIgPDwgbmFtZSA8PCAiXCIg
aXMgbm90IGFsbG93ZWQgZm9yIHZhbHVlIFwiIiA8PCBlbGVtZW50X25hbWUKKyAgICAgIDw8ICJc
Ii4iOworCisgICpzdHJlYW0gPDwgaW5kZW50IDw8ICJcIiIgPDwgbmFtZSA8PCAiXCI6ICIgPDwg
U3RyZWFtYWJsZVRvU3RyaW5nKHZhbHVlKTsKKyAgaWYgKGNvbW1hKQorICAgICpzdHJlYW0gPDwg
IixcbiI7Cit9CisKKy8vIFByaW50cyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgYSBUZXN0SW5m
byBvYmplY3QuCit2b2lkIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dEpzb25UZXN0
SW5mbyg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0
SW5mbyYgdGVzdF9pbmZvKSB7CisgIGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCA9ICp0ZXN0X2lu
Zm8ucmVzdWx0KCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0Y2FzZSA9ICJ0ZXN0Y2FzZSI7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtJbmRlbnQgPSBJbmRlbnQoMTApOworCisgICpzdHJlYW0g
PDwgSW5kZW50KDgpIDw8ICJ7XG4iOworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RjYXNl
LCAibmFtZSIsIHRlc3RfaW5mby5uYW1lKCksIGtJbmRlbnQpOworCisgIGlmICh0ZXN0X2luZm8u
dmFsdWVfcGFyYW0oKSAhPSBOVUxMKSB7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0
Y2FzZSwgInZhbHVlX3BhcmFtIiwKKyAgICAgICAgICAgICAgICAgIHRlc3RfaW5mby52YWx1ZV9w
YXJhbSgpLCBrSW5kZW50KTsKKyAgfQorICBpZiAodGVzdF9pbmZvLnR5cGVfcGFyYW0oKSAhPSBO
VUxMKSB7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0Y2FzZSwgInR5cGVfcGFyYW0i
LCB0ZXN0X2luZm8udHlwZV9wYXJhbSgpLAorICAgICAgICAgICAgICAgICAga0luZGVudCk7Cisg
IH0KKyAgaWYgKEdURVNUX0ZMQUcobGlzdF90ZXN0cykpIHsKKyAgICBPdXRwdXRKc29uS2V5KHN0
cmVhbSwga1Rlc3RjYXNlLCAiZmlsZSIsIHRlc3RfaW5mby5maWxlKCksIGtJbmRlbnQpOworICAg
IE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdGNhc2UsICJsaW5lIiwgdGVzdF9pbmZvLmxpbmUo
KSwga0luZGVudCwgZmFsc2UpOworICAgICpzdHJlYW0gPDwgIlxuIiA8PCBJbmRlbnQoOCkgPDwg
In0iOworICAgIHJldHVybjsKKyAgfQorCisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdGNh
c2UsICJzdGF0dXMiLAorICAgICAgICAgICAgICAgIHRlc3RfaW5mby5zaG91bGRfcnVuKCkgPyAi
UlVOIiA6ICJOT1RSVU4iLCBrSW5kZW50KTsKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0
Y2FzZSwgInRpbWUiLAorICAgICAgICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzRHVyYXRp
b24ocmVzdWx0LmVsYXBzZWRfdGltZSgpKSwga0luZGVudCk7CisgIE91dHB1dEpzb25LZXkoc3Ry
ZWFtLCBrVGVzdGNhc2UsICJjbGFzc25hbWUiLCB0ZXN0X2Nhc2VfbmFtZSwga0luZGVudCwgZmFs
c2UpOworICAqc3RyZWFtIDw8IFRlc3RQcm9wZXJ0aWVzQXNKc29uKHJlc3VsdCwga0luZGVudCk7
CisKKyAgaW50IGZhaWx1cmVzID0gMDsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHQudG90
YWxfcGFydF9jb3VudCgpOyArK2kpIHsKKyAgICBjb25zdCBUZXN0UGFydFJlc3VsdCYgcGFydCA9
IHJlc3VsdC5HZXRUZXN0UGFydFJlc3VsdChpKTsKKyAgICBpZiAocGFydC5mYWlsZWQoKSkgewor
ICAgICAgKnN0cmVhbSA8PCAiLFxuIjsKKyAgICAgIGlmICgrK2ZhaWx1cmVzID09IDEpIHsKKyAg
ICAgICAgKnN0cmVhbSA8PCBrSW5kZW50IDw8ICJcIiIgPDwgImZhaWx1cmVzIiA8PCAiXCI6IFtc
biI7CisgICAgICB9CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyBsb2NhdGlvbiA9CisgICAgICAg
ICAgaW50ZXJuYWw6OkZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24ocGFydC5m
aWxlX25hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJ0LmxpbmVfbnVtYmVyKCkpOworICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgbWVzc2FnZSA9IEVzY2FwZUpzb24obG9jYXRpb24gKyAiXG4iICsgcGFydC5tZXNzYWdlKCkp
OworICAgICAgKnN0cmVhbSA8PCBrSW5kZW50IDw8ICIgIHtcbiIKKyAgICAgICAgICAgICAgPDwg
a0luZGVudCA8PCAiICAgIFwiZmFpbHVyZVwiOiBcIiIgPDwgbWVzc2FnZSA8PCAiXCIsXG4iCisg
ICAgICAgICAgICAgIDw8IGtJbmRlbnQgPDwgIiAgICBcInR5cGVcIjogXCJcIlxuIgorICAgICAg
ICAgICAgICA8PCBrSW5kZW50IDw8ICIgIH0iOworICAgIH0KKyAgfQorCisgIGlmIChmYWlsdXJl
cyA+IDApCisgICAgKnN0cmVhbSA8PCAiXG4iIDw8IGtJbmRlbnQgPDwgIl0iOworICAqc3RyZWFt
IDw8ICJcbiIgPDwgSW5kZW50KDgpIDw8ICJ9IjsKK30KKworLy8gUHJpbnRzIGFuIEpTT04gcmVw
cmVzZW50YXRpb24gb2YgYSBUZXN0Q2FzZSBvYmplY3QKK3ZvaWQgSnNvblVuaXRUZXN0UmVzdWx0
UHJpbnRlcjo6UHJpbnRKc29uVGVzdENhc2Uoc3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RDYXNl
JiB0ZXN0X2Nhc2UpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RzdWl0ZSA9ICJ0ZXN0c3Vp
dGUiOworICBjb25zdCBzdGQ6OnN0cmluZyBrSW5kZW50ID0gSW5kZW50KDYpOworCisgICpzdHJl
YW0gPDwgSW5kZW50KDQpIDw8ICJ7XG4iOworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3Rz
dWl0ZSwgIm5hbWUiLCB0ZXN0X2Nhc2UubmFtZSgpLCBrSW5kZW50KTsKKyAgT3V0cHV0SnNvbktl
eShzdHJlYW0sIGtUZXN0c3VpdGUsICJ0ZXN0cyIsIHRlc3RfY2FzZS5yZXBvcnRhYmxlX3Rlc3Rf
Y291bnQoKSwKKyAgICAgICAgICAgICAgICBrSW5kZW50KTsKKyAgaWYgKCFHVEVTVF9GTEFHKGxp
c3RfdGVzdHMpKSB7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGUsICJmYWls
dXJlcyIsIHRlc3RfY2FzZS5mYWlsZWRfdGVzdF9jb3VudCgpLAorICAgICAgICAgICAgICAgICAg
a0luZGVudCk7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGUsICJkaXNhYmxl
ZCIsCisgICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2UucmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0
X2NvdW50KCksIGtJbmRlbnQpOworICAgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRl
LCAiZXJyb3JzIiwgMCwga0luZGVudCk7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0
c3VpdGUsICJ0aW1lIiwKKyAgICAgICAgICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzRHVy
YXRpb24odGVzdF9jYXNlLmVsYXBzZWRfdGltZSgpKSwKKyAgICAgICAgICAgICAgICAgIGtJbmRl
bnQsIGZhbHNlKTsKKyAgICAqc3RyZWFtIDw8IFRlc3RQcm9wZXJ0aWVzQXNKc29uKHRlc3RfY2Fz
ZS5hZF9ob2NfdGVzdF9yZXN1bHQoKSwga0luZGVudCkKKyAgICAgICAgICAgIDw8ICIsXG4iOwor
ICB9CisKKyAgKnN0cmVhbSA8PCBrSW5kZW50IDw8ICJcIiIgPDwga1Rlc3RzdWl0ZSA8PCAiXCI6
IFtcbiI7CisKKyAgYm9vbCBjb21tYSA9IGZhbHNlOworICBmb3IgKGludCBpID0gMDsgaSA8IHRl
c3RfY2FzZS50b3RhbF90ZXN0X2NvdW50KCk7ICsraSkgeworICAgIGlmICh0ZXN0X2Nhc2UuR2V0
VGVzdEluZm8oaSktPmlzX3JlcG9ydGFibGUoKSkgeworICAgICAgaWYgKGNvbW1hKSB7CisgICAg
ICAgICpzdHJlYW0gPDwgIixcbiI7CisgICAgICB9IGVsc2UgeworICAgICAgICBjb21tYSA9IHRy
dWU7CisgICAgICB9CisgICAgICBPdXRwdXRKc29uVGVzdEluZm8oc3RyZWFtLCB0ZXN0X2Nhc2Uu
bmFtZSgpLCAqdGVzdF9jYXNlLkdldFRlc3RJbmZvKGkpKTsKKyAgICB9CisgIH0KKyAgKnN0cmVh
bSA8PCAiXG4iIDw8IGtJbmRlbnQgPDwgIl1cbiIgPDwgSW5kZW50KDQpIDw8ICJ9IjsKK30KKwor
Ly8gUHJpbnRzIGEgSlNPTiBzdW1tYXJ5IG9mIHVuaXRfdGVzdCB0byBvdXRwdXQgc3RyZWFtIG91
dC4KK3ZvaWQgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRKc29uVW5pdFRlc3Qoc3Rk
Ojpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpIHsKKyAgY29uc3Qgc3RkOjpz
dHJpbmcga1Rlc3RzdWl0ZXMgPSAidGVzdHN1aXRlcyI7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtJ
bmRlbnQgPSBJbmRlbnQoMik7CisgICpzdHJlYW0gPDwgIntcbiI7CisKKyAgT3V0cHV0SnNvbktl
eShzdHJlYW0sIGtUZXN0c3VpdGVzLCAidGVzdHMiLCB1bml0X3Rlc3QucmVwb3J0YWJsZV90ZXN0
X2NvdW50KCksCisgICAgICAgICAgICAgICAga0luZGVudCk7CisgIE91dHB1dEpzb25LZXkoc3Ry
ZWFtLCBrVGVzdHN1aXRlcywgImZhaWx1cmVzIiwgdW5pdF90ZXN0LmZhaWxlZF90ZXN0X2NvdW50
KCksCisgICAgICAgICAgICAgICAga0luZGVudCk7CisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBr
VGVzdHN1aXRlcywgImRpc2FibGVkIiwKKyAgICAgICAgICAgICAgICB1bml0X3Rlc3QucmVwb3J0
YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCksIGtJbmRlbnQpOworICBPdXRwdXRKc29uS2V5KHN0
cmVhbSwga1Rlc3RzdWl0ZXMsICJlcnJvcnMiLCAwLCBrSW5kZW50KTsKKyAgaWYgKEdURVNUX0ZM
QUcoc2h1ZmZsZSkpIHsKKyAgICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJy
YW5kb21fc2VlZCIsIHVuaXRfdGVzdC5yYW5kb21fc2VlZCgpLAorICAgICAgICAgICAgICAgICAg
a0luZGVudCk7CisgIH0KKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAidGlt
ZXN0YW1wIiwKKyAgICAgICAgICAgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzUkZDMzMz
OSh1bml0X3Rlc3Quc3RhcnRfdGltZXN0YW1wKCkpLAorICAgICAgICAgICAgICAgIGtJbmRlbnQp
OworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0aW1lIiwKKyAgICAgICAg
ICAgICAgICBGb3JtYXRUaW1lSW5NaWxsaXNBc0R1cmF0aW9uKHVuaXRfdGVzdC5lbGFwc2VkX3Rp
bWUoKSksIGtJbmRlbnQsCisgICAgICAgICAgICAgICAgZmFsc2UpOworCisgICpzdHJlYW0gPDwg
VGVzdFByb3BlcnRpZXNBc0pzb24odW5pdF90ZXN0LmFkX2hvY190ZXN0X3Jlc3VsdCgpLCBrSW5k
ZW50KQorICAgICAgICAgIDw8ICIsXG4iOworCisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVz
dHN1aXRlcywgIm5hbWUiLCAiQWxsVGVzdHMiLCBrSW5kZW50KTsKKyAgKnN0cmVhbSA8PCBrSW5k
ZW50IDw8ICJcIiIgPDwga1Rlc3RzdWl0ZXMgPDwgIlwiOiBbXG4iOworCisgIGJvb2wgY29tbWEg
PSBmYWxzZTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCB1bml0X3Rlc3QudG90YWxfdGVzdF9jYXNl
X2NvdW50KCk7ICsraSkgeworICAgIGlmICh1bml0X3Rlc3QuR2V0VGVzdENhc2UoaSktPnJlcG9y
dGFibGVfdGVzdF9jb3VudCgpID4gMCkgeworICAgICAgaWYgKGNvbW1hKSB7CisgICAgICAgICpz
dHJlYW0gPDwgIixcbiI7CisgICAgICB9IGVsc2UgeworICAgICAgICBjb21tYSA9IHRydWU7Cisg
ICAgICB9CisgICAgICBQcmludEpzb25UZXN0Q2FzZShzdHJlYW0sICp1bml0X3Rlc3QuR2V0VGVz
dENhc2UoaSkpOworICAgIH0KKyAgfQorCisgICpzdHJlYW0gPDwgIlxuIiA8PCBrSW5kZW50IDw8
ICJdXG4iIDw8ICJ9XG4iOworfQorCit2b2lkIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6OlBy
aW50SnNvblRlc3RMaXN0KAorICAgIHN0ZDo6b3N0cmVhbSogc3RyZWFtLCBjb25zdCBzdGQ6OnZl
Y3RvcjxUZXN0Q2FzZSo+JiB0ZXN0X2Nhc2VzKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0
c3VpdGVzID0gInRlc3RzdWl0ZXMiOworICBjb25zdCBzdGQ6OnN0cmluZyBrSW5kZW50ID0gSW5k
ZW50KDIpOworICAqc3RyZWFtIDw8ICJ7XG4iOworICBpbnQgdG90YWxfdGVzdHMgPSAwOworICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXMuc2l6ZSgpOyArK2kpIHsKKyAgICB0b3Rh
bF90ZXN0cyArPSB0ZXN0X2Nhc2VzW2ldLT50b3RhbF90ZXN0X2NvdW50KCk7CisgIH0KKyAgT3V0
cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAidGVzdHMiLCB0b3RhbF90ZXN0cywga0lu
ZGVudCk7CisKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAibmFtZSIsICJB
bGxUZXN0cyIsIGtJbmRlbnQpOworICAqc3RyZWFtIDw8IGtJbmRlbnQgPDwgIlwiIiA8PCBrVGVz
dHN1aXRlcyA8PCAiXCI6IFtcbiI7CisKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0X2Nh
c2VzLnNpemUoKTsgKytpKSB7CisgICAgaWYgKGkgIT0gMCkgeworICAgICAgKnN0cmVhbSA8PCAi
LFxuIjsKKyAgICB9CisgICAgUHJpbnRKc29uVGVzdENhc2Uoc3RyZWFtLCAqdGVzdF9jYXNlc1tp
XSk7CisgIH0KKworICAqc3RyZWFtIDw8ICJcbiIKKyAgICAgICAgICA8PCBrSW5kZW50IDw8ICJd
XG4iCisgICAgICAgICAgPDwgIn1cbiI7Cit9CisvLyBQcm9kdWNlcyBhIHN0cmluZyByZXByZXNl
bnRpbmcgdGhlIHRlc3QgcHJvcGVydGllcyBpbiBhIHJlc3VsdCBhcworLy8gYSBKU09OIGRpY3Rp
b25hcnkuCitzdGQ6OnN0cmluZyBKc29uVW5pdFRlc3RSZXN1bHRQcmludGVyOjpUZXN0UHJvcGVy
dGllc0FzSnNvbigKKyAgICBjb25zdCBUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBpbmRlbnQpIHsKKyAgTWVzc2FnZSBhdHRyaWJ1dGVzOworICBmb3IgKGludCBpID0gMDsg
aSA8IHJlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCk7ICsraSkgeworICAgIGNvbnN0IFRlc3RQ
cm9wZXJ0eSYgcHJvcGVydHkgPSByZXN1bHQuR2V0VGVzdFByb3BlcnR5KGkpOworICAgIGF0dHJp
YnV0ZXMgPDwgIixcbiIgPDwgaW5kZW50IDw8ICJcIiIgPDwgcHJvcGVydHkua2V5KCkgPDwgIlwi
OiAiCisgICAgICAgICAgICAgICA8PCAiXCIiIDw8IEVzY2FwZUpzb24ocHJvcGVydHkudmFsdWUo
KSkgPDwgIlwiIjsKKyAgfQorICByZXR1cm4gYXR0cmlidXRlcy5HZXRTdHJpbmcoKTsKK30KKwor
Ly8gRW5kIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIKKworI2lmIEdURVNUX0NBTl9TVFJFQU1f
UkVTVUxUU18KKworLy8gQ2hlY2tzIGlmIHN0ciBjb250YWlucyAnPScsICcmJywgJyUnIG9yICdc
bicgY2hhcmFjdGVycy4gSWYgeWVzLAorLy8gcmVwbGFjZXMgdGhlbSBieSAiJXh4IiB3aGVyZSB4
eCBpcyB0aGVpciBoZXhhZGVjaW1hbCB2YWx1ZS4gRm9yCisvLyBleGFtcGxlLCByZXBsYWNlcyAi
PSIgd2l0aCAiJTNEIi4gIFRoaXMgYWxnb3JpdGhtIGlzIE8oc3RybGVuKHN0cikpCisvLyBpbiBi
b3RoIHRpbWUgYW5kIHNwYWNlIC0tIGltcG9ydGFudCBhcyB0aGUgaW5wdXQgc3RyIG1heSBjb250
YWluIGFuCisvLyBhcmJpdHJhcmlseSBsb25nIHRlc3QgZmFpbHVyZSBtZXNzYWdlIGFuZCBzdGFj
ayB0cmFjZS4KK3N0ZDo6c3RyaW5nIFN0cmVhbWluZ0xpc3RlbmVyOjpVcmxFbmNvZGUoY29uc3Qg
Y2hhciogc3RyKSB7CisgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKKyAgcmVzdWx0LnJlc2VydmUoc3Ry
bGVuKHN0cikgKyAxKTsKKyAgZm9yIChjaGFyIGNoID0gKnN0cjsgY2ggIT0gJ1wwJzsgY2ggPSAq
KytzdHIpIHsKKyAgICBzd2l0Y2ggKGNoKSB7CisgICAgICBjYXNlICclJzoKKyAgICAgIGNhc2Ug
Jz0nOgorICAgICAgY2FzZSAnJic6CisgICAgICBjYXNlICdcbic6CisgICAgICAgIHJlc3VsdC5h
cHBlbmQoIiUiICsgU3RyaW5nOjpGb3JtYXRCeXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KGNoKSkpOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJlc3VsdC5w
dXNoX2JhY2soY2gpOworICAgICAgICBicmVhazsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3Vs
dDsKK30KKwordm9pZCBTdHJlYW1pbmdMaXN0ZW5lcjo6U29ja2V0V3JpdGVyOjpNYWtlQ29ubmVj
dGlvbigpIHsKKyAgR1RFU1RfQ0hFQ0tfKHNvY2tmZF8gPT0gLTEpCisgICAgICA8PCAiTWFrZUNv
bm5lY3Rpb24oKSBjYW4ndCBiZSBjYWxsZWQgd2hlbiB0aGVyZSBpcyBhbHJlYWR5IGEgY29ubmVj
dGlvbi4iOworCisgIGFkZHJpbmZvIGhpbnRzOworICBtZW1zZXQoJmhpbnRzLCAwLCBzaXplb2Yo
aGludHMpKTsKKyAgaGludHMuYWlfZmFtaWx5ID0gQUZfVU5TUEVDOyAgICAvLyBUbyBhbGxvdyBi
b3RoIElQdjQgYW5kIElQdjYgYWRkcmVzc2VzLgorICBoaW50cy5haV9zb2NrdHlwZSA9IFNPQ0tf
U1RSRUFNOworICBhZGRyaW5mbyogc2VydmluZm8gPSBOVUxMOworCisgIC8vIFVzZSB0aGUgZ2V0
YWRkcmluZm8oKSB0byBnZXQgYSBsaW5rZWQgbGlzdCBvZiBJUCBhZGRyZXNzZXMgZm9yCisgIC8v
IHRoZSBnaXZlbiBob3N0IG5hbWUuCisgIGNvbnN0IGludCBlcnJvcl9udW0gPSBnZXRhZGRyaW5m
bygKKyAgICAgIGhvc3RfbmFtZV8uY19zdHIoKSwgcG9ydF9udW1fLmNfc3RyKCksICZoaW50cywg
JnNlcnZpbmZvKTsKKyAgaWYgKGVycm9yX251bSAhPSAwKSB7CisgICAgR1RFU1RfTE9HXyhXQVJO
SU5HKSA8PCAic3RyZWFtX3Jlc3VsdF90bzogZ2V0YWRkcmluZm8oKSBmYWlsZWQ6ICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IGdhaV9zdHJlcnJvcihlcnJvcl9udW0pOworICB9CisKKyAg
Ly8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgcmVzdWx0cyBhbmQgY29ubmVjdCB0byB0aGUgZmlyc3Qg
d2UgY2FuLgorICBmb3IgKGFkZHJpbmZvKiBjdXJfYWRkciA9IHNlcnZpbmZvOyBzb2NrZmRfID09
IC0xICYmIGN1cl9hZGRyICE9IE5VTEw7CisgICAgICAgY3VyX2FkZHIgPSBjdXJfYWRkci0+YWlf
bmV4dCkgeworICAgIHNvY2tmZF8gPSBzb2NrZXQoCisgICAgICAgIGN1cl9hZGRyLT5haV9mYW1p
bHksIGN1cl9hZGRyLT5haV9zb2NrdHlwZSwgY3VyX2FkZHItPmFpX3Byb3RvY29sKTsKKyAgICBp
ZiAoc29ja2ZkXyAhPSAtMSkgeworICAgICAgLy8gQ29ubmVjdCB0aGUgY2xpZW50IHNvY2tldCB0
byB0aGUgc2VydmVyIHNvY2tldC4KKyAgICAgIGlmIChjb25uZWN0KHNvY2tmZF8sIGN1cl9hZGRy
LT5haV9hZGRyLCBjdXJfYWRkci0+YWlfYWRkcmxlbikgPT0gLTEpIHsKKyAgICAgICAgY2xvc2Uo
c29ja2ZkXyk7CisgICAgICAgIHNvY2tmZF8gPSAtMTsKKyAgICAgIH0KKyAgICB9CisgIH0KKwor
ICBmcmVlYWRkcmluZm8oc2VydmluZm8pOyAgLy8gYWxsIGRvbmUgd2l0aCB0aGlzIHN0cnVjdHVy
ZQorCisgIGlmIChzb2NrZmRfID09IC0xKSB7CisgICAgR1RFU1RfTE9HXyhXQVJOSU5HKSA8PCAi
c3RyZWFtX3Jlc3VsdF90bzogZmFpbGVkIHRvIGNvbm5lY3QgdG8gIgorICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgaG9zdF9uYW1lXyA8PCAiOiIgPDwgcG9ydF9udW1fOworICB9Cit9CisKKy8v
IEVuZCBvZiBjbGFzcyBTdHJlYW1pbmcgTGlzdGVuZXIKKyNlbmRpZiAgLy8gR1RFU1RfQ0FOX1NU
UkVBTV9SRVNVTFRTX18KKworLy8gY2xhc3MgT3NTdGFja1RyYWNlR2V0dGVyCisKK2NvbnN0IGNo
YXIqIGNvbnN0IE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZTo6a0VsaWRlZEZyYW1lc01hcmtl
ciA9CiAgICAgIi4uLiAiIEdURVNUX05BTUVfICIgaW50ZXJuYWwgZnJhbWVzIC4uLiI7CiAKK3N0
ZDo6c3RyaW5nIE9zU3RhY2tUcmFjZUdldHRlcjo6Q3VycmVudFN0YWNrVHJhY2UoaW50IG1heF9k
ZXB0aCwgaW50IHNraXBfY291bnQpCisgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7
CisjaWYgR1RFU1RfSEFTX0FCU0wKKyAgc3RkOjpzdHJpbmcgcmVzdWx0OworCisgIGlmIChtYXhf
ZGVwdGggPD0gMCkgeworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworICBtYXhfZGVwdGggPSBz
dGQ6Om1pbihtYXhfZGVwdGgsIGtNYXhTdGFja1RyYWNlRGVwdGgpOworCisgIHN0ZDo6dmVjdG9y
PHZvaWQqPiByYXdfc3RhY2sobWF4X2RlcHRoKTsKKyAgLy8gU2tpcHMgdGhlIGZyYW1lcyByZXF1
ZXN0ZWQgYnkgdGhlIGNhbGxlciwgcGx1cyB0aGlzIGZ1bmN0aW9uLgorICBjb25zdCBpbnQgcmF3
X3N0YWNrX3NpemUgPQorICAgICAgYWJzbDo6R2V0U3RhY2tUcmFjZSgmcmF3X3N0YWNrWzBdLCBt
YXhfZGVwdGgsIHNraXBfY291bnQgKyAxKTsKKworICB2b2lkKiBjYWxsZXJfZnJhbWUgPSBudWxs
cHRyOworICB7CisgICAgTXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7CisgICAgY2FsbGVyX2ZyYW1l
ID0gY2FsbGVyX2ZyYW1lXzsKKyAgfQorCisgIGZvciAoaW50IGkgPSAwOyBpIDwgcmF3X3N0YWNr
X3NpemU7ICsraSkgeworICAgIGlmIChyYXdfc3RhY2tbaV0gPT0gY2FsbGVyX2ZyYW1lICYmCisg
ICAgICAgICFHVEVTVF9GTEFHKHNob3dfaW50ZXJuYWxfc3RhY2tfZnJhbWVzKSkgeworICAgICAg
Ly8gQWRkIGEgbWFya2VyIHRvIHRoZSB0cmFjZSBhbmQgc3RvcCBhZGRpbmcgZnJhbWVzLgorICAg
ICAgYWJzbDo6U3RyQXBwZW5kKCZyZXN1bHQsIGtFbGlkZWRGcmFtZXNNYXJrZXIsICJcbiIpOwor
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2hhciB0bXBbMTAyNF07CisgICAgY29uc3QgY2hh
ciogc3ltYm9sID0gIih1bmtub3duKSI7CisgICAgaWYgKGFic2w6OlN5bWJvbGl6ZShyYXdfc3Rh
Y2tbaV0sIHRtcCwgc2l6ZW9mKHRtcCkpKSB7CisgICAgICBzeW1ib2wgPSB0bXA7CisgICAgfQor
CisgICAgY2hhciBsaW5lWzEwMjRdOworICAgIHNucHJpbnRmKGxpbmUsIHNpemVvZihsaW5lKSwg
IiAgJXA6ICVzXG4iLCByYXdfc3RhY2tbaV0sIHN5bWJvbCk7CisgICAgcmVzdWx0ICs9IGxpbmU7
CisgIH0KKworICByZXR1cm4gcmVzdWx0OworCisjZWxzZSAgLy8gIUdURVNUX0hBU19BQlNMCisg
IHN0YXRpY19jYXN0PHZvaWQ+KG1heF9kZXB0aCk7CisgIHN0YXRpY19jYXN0PHZvaWQ+KHNraXBf
Y291bnQpOworICByZXR1cm4gIiI7CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCit9CisKK3Zv
aWQgT3NTdGFja1RyYWNlR2V0dGVyOjpVcG9uTGVhdmluZ0dUZXN0KCkgR1RFU1RfTE9DS19FWENM
VURFRF8obXV0ZXhfKSB7CisjaWYgR1RFU1RfSEFTX0FCU0wKKyAgdm9pZCogY2FsbGVyX2ZyYW1l
ID0gbnVsbHB0cjsKKyAgaWYgKGFic2w6OkdldFN0YWNrVHJhY2UoJmNhbGxlcl9mcmFtZSwgMSwg
MykgPD0gMCkgeworICAgIGNhbGxlcl9mcmFtZSA9IG51bGxwdHI7CisgIH0KKworICBNdXRleExv
Y2sgbG9jaygmbXV0ZXhfKTsKKyAgY2FsbGVyX2ZyYW1lXyA9IGNhbGxlcl9mcmFtZTsKKyNlbmRp
ZiAgLy8gR1RFU1RfSEFTX0FCU0wKK30KKworLy8gQSBoZWxwZXIgY2xhc3MgdGhhdCBjcmVhdGVz
IHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlIGluIGl0cworLy8gY29uc3RydWN0b3IgYW5kIGRlbGV0
ZXMgdGhlIGZpbGUgaW4gaXRzIGRlc3RydWN0b3IuCitjbGFzcyBTY29wZWRQcmVtYXR1cmVFeGl0
RmlsZSB7CisgcHVibGljOgorICBleHBsaWNpdCBTY29wZWRQcmVtYXR1cmVFeGl0RmlsZShjb25z
dCBjaGFyKiBwcmVtYXR1cmVfZXhpdF9maWxlcGF0aCkKKyAgICAgIDogcHJlbWF0dXJlX2V4aXRf
ZmlsZXBhdGhfKHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoID8KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoIDogIiIpIHsKKyAgICAvLyBJZiBh
IHBhdGggdG8gdGhlIHByZW1hdHVyZS1leGl0IGZpbGUgaXMgc3BlY2lmaWVkLi4uCisgICAgaWYg
KCFwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8uZW1wdHkoKSkgeworICAgICAgLy8gY3JlYXRlIHRo
ZSBmaWxlIHdpdGggYSBzaW5nbGUgIjAiIGNoYXJhY3RlciBpbiBpdC4gIEkvTworICAgICAgLy8g
ZXJyb3JzIGFyZSBpZ25vcmVkIGFzIHRoZXJlJ3Mgbm90aGluZyBiZXR0ZXIgd2UgY2FuIGRvIGFu
ZCB3ZQorICAgICAgLy8gZG9uJ3Qgd2FudCB0byBmYWlsIHRoZSB0ZXN0IGJlY2F1c2Ugb2YgdGhp
cy4KKyAgICAgIEZJTEUqIHBmaWxlID0gcG9zaXg6OkZPcGVuKHByZW1hdHVyZV9leGl0X2ZpbGVw
YXRoLCAidyIpOworICAgICAgZndyaXRlKCIwIiwgMSwgMSwgcGZpbGUpOworICAgICAgZmNsb3Nl
KHBmaWxlKTsKKyAgICB9CisgIH0KKworICB+U2NvcGVkUHJlbWF0dXJlRXhpdEZpbGUoKSB7Cisg
ICAgaWYgKCFwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8uZW1wdHkoKSkgeworICAgICAgaW50IHJl
dHZhbCA9IHJlbW92ZShwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8uY19zdHIoKSk7CisgICAgICBp
ZiAocmV0dmFsKSB7CisgICAgICAgIEdURVNUX0xPR18oRVJST1IpIDw8ICJGYWlsZWQgdG8gcmVt
b3ZlIHByZW1hdHVyZSBleGl0IGZpbGVwYXRoIFwiIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCBwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8gPDwgIlwiIHdpdGggZXJyb3IgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCByZXR2YWw7CisgICAgICB9CisgICAgfQorICB9CisKKyBw
cml2YXRlOgorICBjb25zdCBzdGQ6OnN0cmluZyBwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF87CisK
KyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTY29wZWRQcmVtYXR1cmVFeGl0Rmls
ZSk7Cit9OworCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAogLy8gY2xhc3MgVGVzdEV2ZW50
TGlzdGVuZXJzCkBAIC0zNDMxLDcgKzQ0OTMsNyBAQCB2b2lkIFRlc3RFdmVudExpc3RlbmVyczo6
U3VwcHJlc3NFdmVudEZvcndhcmRpbmcoKSB7CiAvLyBXZSBkb24ndCBwcm90ZWN0IHRoaXMgdW5k
ZXIgbXV0ZXhfIGFzIGEgdXNlciBpcyBub3Qgc3VwcG9zZWQgdG8KIC8vIGNhbGwgdGhpcyBiZWZv
cmUgbWFpbigpIHN0YXJ0cywgZnJvbSB3aGljaCBwb2ludCBvbiB0aGUgcmV0dXJuCiAvLyB2YWx1
ZSB3aWxsIG5ldmVyIGNoYW5nZS4KLVVuaXRUZXN0ICogVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkg
eworVW5pdFRlc3QqIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpIHsKICAgLy8gV2hlbiBjb21waWxl
ZCB3aXRoIE1TVkMgNy4xIGluIG9wdGltaXplZCBtb2RlLCBkZXN0cm95aW5nIHRoZQogICAvLyBV
bml0VGVzdCBvYmplY3QgdXBvbiBleGl0aW5nIHRoZSBwcm9ncmFtIG1lc3NlcyB1cCB0aGUgZXhp
dCBjb2RlLAogICAvLyBjYXVzaW5nIHN1Y2Nlc3NmdWwgdGVzdHMgdG8gYXBwZWFyIGZhaWxlZC4g
IFdlIGhhdmUgdG8gdXNlIGEKQEAgLTM0ODEsMTcgKzQ1NDMsMzMgQEAgaW50IFVuaXRUZXN0Ojpz
dWNjZXNzZnVsX3Rlc3RfY291bnQoKSBjb25zdCB7CiAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZmFp
bGVkIHRlc3RzLgogaW50IFVuaXRUZXN0OjpmYWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsgcmV0
dXJuIGltcGwoKS0+ZmFpbGVkX3Rlc3RfY291bnQoKTsgfQogCisvLyBHZXRzIHRoZSBudW1iZXIg
b2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0
LgoraW50IFVuaXRUZXN0OjpyZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7
CisgIHJldHVybiBpbXBsKCktPnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpOworfQor
CiAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMuCiBpbnQgVW5pdFRlc3Q6OmRp
c2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7CiAgIHJldHVybiBpbXBsKCktPmRpc2FibGVkX3Rl
c3RfY291bnQoKTsKIH0KIAorLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50
ZWQgaW4gdGhlIFhNTCByZXBvcnQuCitpbnQgVW5pdFRlc3Q6OnJlcG9ydGFibGVfdGVzdF9jb3Vu
dCgpIGNvbnN0IHsKKyAgcmV0dXJuIGltcGwoKS0+cmVwb3J0YWJsZV90ZXN0X2NvdW50KCk7Cit9
CisKIC8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdHMuCiBpbnQgVW5pdFRlc3Q6OnRvdGFs
X3Rlc3RfY291bnQoKSBjb25zdCB7IHJldHVybiBpbXBsKCktPnRvdGFsX3Rlc3RfY291bnQoKTsg
fQogCiAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdGhhdCBzaG91bGQgcnVuLgogaW50IFVu
aXRUZXN0Ojp0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0IHsgcmV0dXJuIGltcGwoKS0+dGVzdF90
b19ydW5fY291bnQoKTsgfQogCisvLyBHZXRzIHRoZSB0aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0g
c3RhcnQsIGluIG1zIGZyb20gdGhlIHN0YXJ0IG9mIHRoZQorLy8gVU5JWCBlcG9jaC4KK2ludGVy
bmFsOjpUaW1lSW5NaWxsaXMgVW5pdFRlc3Q6OnN0YXJ0X3RpbWVzdGFtcCgpIGNvbnN0IHsKKyAg
ICByZXR1cm4gaW1wbCgpLT5zdGFydF90aW1lc3RhbXAoKTsKK30KKwogLy8gR2V0cyB0aGUgZWxh
cHNlZCB0aW1lLCBpbiBtaWxsaXNlY29uZHMuCiBpbnRlcm5hbDo6VGltZUluTWlsbGlzIFVuaXRU
ZXN0OjplbGFwc2VkX3RpbWUoKSBjb25zdCB7CiAgIHJldHVybiBpbXBsKCktPmVsYXBzZWRfdGlt
ZSgpOwpAQCAtMzUxMCw2ICs0NTg4LDEyIEBAIGNvbnN0IFRlc3RDYXNlKiBVbml0VGVzdDo6R2V0
VGVzdENhc2UoaW50IGkpIGNvbnN0IHsKICAgcmV0dXJuIGltcGwoKS0+R2V0VGVzdENhc2UoaSk7
CiB9CiAKKy8vIFJldHVybnMgdGhlIFRlc3RSZXN1bHQgY29udGFpbmluZyBpbmZvcm1hdGlvbiBv
biB0ZXN0IGZhaWx1cmVzIGFuZAorLy8gcHJvcGVydGllcyBsb2dnZWQgb3V0c2lkZSBvZiBpbmRp
dmlkdWFsIHRlc3QgY2FzZXMuCitjb25zdCBUZXN0UmVzdWx0JiBVbml0VGVzdDo6YWRfaG9jX3Rl
c3RfcmVzdWx0KCkgY29uc3QgeworICByZXR1cm4gKmltcGwoKS0+YWRfaG9jX3Rlc3RfcmVzdWx0
KCk7Cit9CisKIC8vIEdldHMgdGhlIGktdGggdGVzdCBjYXNlIGFtb25nIGFsbCB0aGUgdGVzdCBj
YXNlcy4gaSBjYW4gcmFuZ2UgZnJvbSAwIHRvCiAvLyB0b3RhbF90ZXN0X2Nhc2VfY291bnQoKSAt
IDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVMTC4KIFRlc3RDYXNlKiBV
bml0VGVzdDo6R2V0TXV0YWJsZVRlc3RDYXNlKGludCBpKSB7CkBAIC0zNTQxLDI5ICs0NjI1LDE2
IEBAIEVudmlyb25tZW50KiBVbml0VGVzdDo6QWRkRW52aXJvbm1lbnQoRW52aXJvbm1lbnQqIGVu
dikgewogICByZXR1cm4gZW52OwogfQogCi0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLS8vIEEg
ZmFpbGVkIEdvb2dsZSBUZXN0IGFzc2VydGlvbiB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBvZiB0
aGlzIHR5cGUKLS8vIHdoZW4gZXhjZXB0aW9ucyBhcmUgZW5hYmxlZC4gIFdlIGRlcml2ZSBpdCBm
cm9tIHN0ZDo6cnVudGltZV9lcnJvciwKLS8vIHdoaWNoIGlzIGZvciBlcnJvcnMgcHJlc3VtYWJs
eSBkZXRlY3RhYmxlIG9ubHkgYXQgcnVuIHRpbWUuICBTaW5jZQotLy8gc3RkOjpydW50aW1lX2Vy
cm9yIGluaGVyaXRzIGZyb20gc3RkOjpleGNlcHRpb24sIG1hbnkgdGVzdGluZwotLy8gZnJhbWV3
b3JrcyBrbm93IGhvdyB0byBleHRyYWN0IGFuZCBwcmludCB0aGUgbWVzc2FnZSBpbnNpZGUgaXQu
Ci1jbGFzcyBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbiA6IHB1YmxpYyA6OnN0ZDo6cnVudGlt
ZV9lcnJvciB7Ci0gcHVibGljOgotICBleHBsaWNpdCBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlv
bihjb25zdCBUZXN0UGFydFJlc3VsdCYgZmFpbHVyZSkKLSAgICAgIDogOjpzdGQ6OnJ1bnRpbWVf
ZXJyb3IoUHJpbnRUZXN0UGFydFJlc3VsdFRvU3RyaW5nKGZhaWx1cmUpLmNfc3RyKCkpIHt9Ci19
OwotI2VuZGlmCi0KIC8vIEFkZHMgYSBUZXN0UGFydFJlc3VsdCB0byB0aGUgY3VycmVudCBUZXN0
UmVzdWx0IG9iamVjdC4gIEFsbCBHb29nbGUgVGVzdAogLy8gYXNzZXJ0aW9uIG1hY3JvcyAoZS5n
LiBBU1NFUlRfVFJVRSwgRVhQRUNUX0VRLCBldGMpIGV2ZW50dWFsbHkgY2FsbAogLy8gdGhpcyB0
byByZXBvcnQgdGhlaXIgcmVzdWx0cy4gIFRoZSB1c2VyIGNvZGUgc2hvdWxkIHVzZSB0aGUKIC8v
IGFzc2VydGlvbiBtYWNyb3MgaW5zdGVhZCBvZiBjYWxsaW5nIHRoaXMgZGlyZWN0bHkuCi0vLyBM
IDwgbXV0ZXhfCi12b2lkIFVuaXRUZXN0OjpBZGRUZXN0UGFydFJlc3VsdChUZXN0UGFydFJlc3Vs
dDo6VHlwZSByZXN1bHRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGZpbGVfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBsaW5lX251bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlu
dGVybmFsOjpTdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBpbnRlcm5hbDo6U3RyaW5nJiBvc19zdGFja190cmFjZSkgewordm9pZCBVbml0VGVz
dDo6QWRkVGVzdFBhcnRSZXN1bHQoCisgICAgVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5
cGUsCisgICAgY29uc3QgY2hhciogZmlsZV9uYW1lLAorICAgIGludCBsaW5lX251bWJlciwKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3Nf
c3RhY2tfdHJhY2UpIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4XykgewogICBNZXNzYWdlIG1z
ZzsKICAgbXNnIDw8IG1lc3NhZ2U7CiAKQEAgLTM1OTYsMTcgKzQ2NjcsMjYgQEAgdm9pZCBVbml0
VGVzdDo6QWRkVGVzdFBhcnRSZXN1bHQoVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUs
CiAgICAgLy8gd2l0aCBhbm90aGVyIHRlc3RpbmcgZnJhbWV3b3JrKSBhbmQgc3BlY2lmeSB0aGUg
Zm9ybWVyIG9uIHRoZQogICAgIC8vIGNvbW1hbmQgbGluZSBmb3IgZGVidWdnaW5nLgogICAgIGlm
IChHVEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpKSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwor
I2lmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNU
X09TX1dJTkRPV1NfUlQKICAgICAgIC8vIFVzaW5nIERlYnVnQnJlYWsgb24gV2luZG93cyBhbGxv
d3MgZ3Rlc3QgdG8gc3RpbGwgYnJlYWsgaW50byBhIGRlYnVnZ2VyCiAgICAgICAvLyB3aGVuIGEg
ZmFpbHVyZSBoYXBwZW5zIGFuZCBib3RoIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgYW5k
CiAgICAgICAvLyB0aGUgLS1ndGVzdF9jYXRjaF9leGNlcHRpb25zIGZsYWdzIGFyZSBzcGVjaWZp
ZWQuCiAgICAgICBEZWJ1Z0JyZWFrKCk7CisjZWxpZiAoIWRlZmluZWQoX19uYXRpdmVfY2xpZW50
X18pKSAmJiAgICAgICAgICAgIFwKKyAgICAoKGRlZmluZWQoX19jbGFuZ19fKSB8fCBkZWZpbmVk
KF9fR05VQ19fKSkgJiYgXAorICAgICAoZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9f
aTM4Nl9fKSkpCisgICAgICAvLyB3aXRoIGNsYW5nL2djYyB3ZSBjYW4gYWNoaWV2ZSB0aGUgc2Ft
ZSBlZmZlY3Qgb24geDg2IGJ5IGludm9raW5nIGludDMKKyAgICAgIGFzbSgiaW50MyIpOwogI2Vs
c2UKKyAgICAgIC8vIERlcmVmZXJlbmNlIE5VTEwgdGhyb3VnaCBhIHZvbGF0aWxlIHBvaW50ZXIg
dG8gcHJldmVudCB0aGUgY29tcGlsZXIKKyAgICAgIC8vIGZyb20gcmVtb3ZpbmcuIFdlIHVzZSB0
aGlzIHJhdGhlciB0aGFuIGFib3J0KCkgb3IgX19idWlsdGluX3RyYXAoKSBmb3IKKyAgICAgIC8v
IHBvcnRhYmlsaXR5OiBTeW1iaWFuIGRvZXNuJ3QgaW1wbGVtZW50IGFib3J0KCkgd2VsbCwgYW5k
IHNvbWUgZGVidWdnZXJzCisgICAgICAvLyBkb24ndCBjb3JyZWN0bHkgdHJhcCBhYm9ydCgpLgog
ICAgICAgKnN0YXRpY19jYXN0PHZvbGF0aWxlIGludCo+KE5VTEwpID0gMTsKICNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUwogICAgIH0gZWxzZSBpZiAoR1RFU1RfRkxBRyh0aHJvd19vbl9mYWls
dXJlKSkgewogI2lmIEdURVNUX0hBU19FWENFUFRJT05TCi0gICAgICB0aHJvdyBHb29nbGVUZXN0
RmFpbHVyZUV4Y2VwdGlvbihyZXN1bHQpOworICAgICAgdGhyb3cgaW50ZXJuYWw6Okdvb2dsZVRl
c3RGYWlsdXJlRXhjZXB0aW9uKHJlc3VsdCk7CiAjZWxzZQogICAgICAgLy8gV2UgY2Fubm90IGNh
bGwgYWJvcnQoKSBhcyBpdCBnZW5lcmF0ZXMgYSBwb3AtdXAgaW4gZGVidWcgbW9kZQogICAgICAg
Ly8gdGhhdCBjYW5ub3QgYmUgc3VwcHJlc3NlZCBpbiBWQyA3LjEgb3IgYmVsb3cuCkBAIC0zNjE2
LDEyICs0Njk2LDE0IEBAIHZvaWQgVW5pdFRlc3Q6OkFkZFRlc3RQYXJ0UmVzdWx0KFRlc3RQYXJ0
UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAogICB9CiB9CiAKLS8vIENyZWF0ZXMgYW5kIGFkZHMg
YSBwcm9wZXJ0eSB0byB0aGUgY3VycmVudCBUZXN0UmVzdWx0LiBJZiBhIHByb3BlcnR5IG1hdGNo
aW5nCi0vLyB0aGUgc3VwcGxpZWQgdmFsdWUgYWxyZWFkeSBleGlzdHMsIHVwZGF0ZXMgaXRzIHZh
bHVlIGluc3RlYWQuCi12b2lkIFVuaXRUZXN0OjpSZWNvcmRQcm9wZXJ0eUZvckN1cnJlbnRUZXN0
KGNvbnN0IGNoYXIqIGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogdmFsdWUpIHsKLSAgY29uc3QgVGVzdFByb3BlcnR5IHRlc3RfcHJv
cGVydHkoa2V5LCB2YWx1ZSk7Ci0gIGltcGxfLT5jdXJyZW50X3Rlc3RfcmVzdWx0KCktPlJlY29y
ZFByb3BlcnR5KHRlc3RfcHJvcGVydHkpOworLy8gQWRkcyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUg
Y3VycmVudCBUZXN0UmVzdWx0IG9iamVjdCB3aGVuIGludm9rZWQgZnJvbQorLy8gaW5zaWRlIGEg
dGVzdCwgdG8gY3VycmVudCBUZXN0Q2FzZSdzIGFkX2hvY190ZXN0X3Jlc3VsdF8gd2hlbiBpbnZv
a2VkCisvLyBmcm9tIFNldFVwVGVzdENhc2Ugb3IgVGVhckRvd25UZXN0Q2FzZSwgb3IgdG8gdGhl
IGdsb2JhbCBwcm9wZXJ0eSBzZXQKKy8vIHdoZW4gaW52b2tlZCBlbHNld2hlcmUuICBJZiB0aGUg
cmVzdWx0IGFscmVhZHkgY29udGFpbnMgYSBwcm9wZXJ0eSB3aXRoCisvLyB0aGUgc2FtZSBrZXks
IHRoZSB2YWx1ZSB3aWxsIGJlIHVwZGF0ZWQuCit2b2lkIFVuaXRUZXN0OjpSZWNvcmRQcm9wZXJ0
eShjb25zdCBzdGQ6OnN0cmluZyYga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSB7CisgIGltcGxfLT5SZWNvcmRQcm9wZXJ0eShUZXN0
UHJvcGVydHkoa2V5LCB2YWx1ZSkpOwogfQogCiAvLyBSdW5zIGFsbCB0ZXN0cyBpbiB0aGlzIFVu
aXRUZXN0IG9iamVjdCBhbmQgcHJpbnRzIHRoZSByZXN1bHQuCkBAIC0zNjMwLDMxICs0NzEyLDU4
IEBAIHZvaWQgVW5pdFRlc3Q6OlJlY29yZFByb3BlcnR5Rm9yQ3VycmVudFRlc3QoY29uc3QgY2hh
cioga2V5LAogLy8gV2UgZG9uJ3QgcHJvdGVjdCB0aGlzIHVuZGVyIG11dGV4XywgYXMgd2Ugb25s
eSBzdXBwb3J0IGNhbGxpbmcgaXQKIC8vIGZyb20gdGhlIG1haW4gdGhyZWFkLgogaW50IFVuaXRU
ZXN0OjpSdW4oKSB7Ci0jaWYgR1RFU1RfSEFTX1NFSAotICAvLyBDYXRjaCBTRUgtc3R5bGUgZXhj
ZXB0aW9ucy4KLQogICBjb25zdCBib29sIGluX2RlYXRoX3Rlc3RfY2hpbGRfcHJvY2VzcyA9CiAg
ICAgICBpbnRlcm5hbDo6R1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkubGVuZ3Ro
KCkgPiAwOwogCisgIC8vIEdvb2dsZSBUZXN0IGltcGxlbWVudHMgdGhpcyBwcm90b2NvbCBmb3Ig
Y2F0Y2hpbmcgdGhhdCBhIHRlc3QKKyAgLy8gcHJvZ3JhbSBleGl0cyBiZWZvcmUgcmV0dXJuaW5n
IGNvbnRyb2wgdG8gR29vZ2xlIFRlc3Q6CisgIC8vCisgIC8vICAgMS4gVXBvbiBzdGFydCwgR29v
Z2xlIFRlc3QgY3JlYXRlcyBhIGZpbGUgd2hvc2UgYWJzb2x1dGUgcGF0aAorICAvLyAgICAgIGlz
IHNwZWNpZmllZCBieSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgLy8gICAgICBURVNUX1BS
RU1BVFVSRV9FWElUX0ZJTEUuCisgIC8vICAgMi4gV2hlbiBHb29nbGUgVGVzdCBoYXMgZmluaXNo
ZWQgaXRzIHdvcmssIGl0IGRlbGV0ZXMgdGhlIGZpbGUuCisgIC8vCisgIC8vIFRoaXMgYWxsb3dz
IGEgdGVzdCBydW5uZXIgdG8gc2V0IFRFU1RfUFJFTUFUVVJFX0VYSVRfRklMRSBiZWZvcmUKKyAg
Ly8gcnVubmluZyBhIEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QgcHJvZ3JhbSBhbmQgY2hlY2sgdGhl
IGV4aXN0ZW5jZQorICAvLyBvZiB0aGUgZmlsZSBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0IGV4ZWN1
dGlvbiB0byBzZWUgaWYgaXQgaGFzCisgIC8vIGV4aXRlZCBwcmVtYXR1cmVseS4KKworICAvLyBJ
ZiB3ZSBhcmUgaW4gdGhlIGNoaWxkIHByb2Nlc3Mgb2YgYSBkZWF0aCB0ZXN0LCBkb24ndAorICAv
LyBjcmVhdGUvZGVsZXRlIHRoZSBwcmVtYXR1cmUgZXhpdCBmaWxlLCBhcyBkb2luZyBzbyBpcyB1
bm5lY2Vzc2FyeQorICAvLyBhbmQgd2lsbCBjb25mdXNlIHRoZSBwYXJlbnQgcHJvY2Vzcy4gIE90
aGVyd2lzZSwgY3JlYXRlL2RlbGV0ZQorICAvLyB0aGUgZmlsZSB1cG9uIGVudGVyaW5nL2xlYXZp
bmcgdGhpcyBmdW5jdGlvbi4gIElmIHRoZSBwcm9ncmFtCisgIC8vIHNvbWVob3cgZXhpdHMgYmVm
b3JlIHRoaXMgZnVuY3Rpb24gaGFzIGEgY2hhbmNlIHRvIHJldHVybiwgdGhlCisgIC8vIHByZW1h
dHVyZS1leGl0IGZpbGUgd2lsbCBiZSBsZWZ0IHVuZGVsZXRlZCwgY2F1c2luZyBhIHRlc3QgcnVu
bmVyCisgIC8vIHRoYXQgdW5kZXJzdGFuZHMgdGhlIHByZW1hdHVyZS1leGl0LWZpbGUgcHJvdG9j
b2wgdG8gcmVwb3J0IHRoZQorICAvLyB0ZXN0IGFzIGhhdmluZyBmYWlsZWQuCisgIGNvbnN0IGlu
dGVybmFsOjpTY29wZWRQcmVtYXR1cmVFeGl0RmlsZSBwcmVtYXR1cmVfZXhpdF9maWxlKAorICAg
ICAgaW5fZGVhdGhfdGVzdF9jaGlsZF9wcm9jZXNzID8KKyAgICAgIE5VTEwgOiBpbnRlcm5hbDo6
cG9zaXg6OkdldEVudigiVEVTVF9QUkVNQVRVUkVfRVhJVF9GSUxFIikpOworCisgIC8vIENhcHR1
cmVzIHRoZSB2YWx1ZSBvZiBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpLiAgVGhpcyB2YWx1
ZSB3aWxsIGJlCisgIC8vIHVzZWQgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgcHJvZ3JhbS4KKyAg
aW1wbCgpLT5zZXRfY2F0Y2hfZXhjZXB0aW9ucyhHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMp
KTsKKworI2lmIEdURVNUX09TX1dJTkRPV1MKICAgLy8gRWl0aGVyIHRoZSB1c2VyIHdhbnRzIEdv
b2dsZSBUZXN0IHRvIGNhdGNoIGV4Y2VwdGlvbnMgdGhyb3duIGJ5IHRoZQogICAvLyB0ZXN0cyBv
ciB0aGlzIGlzIGV4ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiBkZWF0aCB0ZXN0IGNoaWxkCiAg
IC8vIHByb2Nlc3MuIEluIGVpdGhlciBjYXNlIHRoZSB1c2VyIGRvZXMgbm90IHdhbnQgdG8gc2Vl
IHBvcC11cCBkaWFsb2dzCi0gIC8vIGFib3V0IGNyYXNoZXMgLSB0aGV5IGFyZSBleHBlY3RlZC4u
Ci0gIGlmIChHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpIHx8IGluX2RlYXRoX3Rlc3RfY2hp
bGRfcHJvY2VzcykgewotI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorICAvLyBhYm91dCBj
cmFzaGVzIC0gdGhleSBhcmUgZXhwZWN0ZWQuCisgIGlmIChpbXBsKCktPmNhdGNoX2V4Y2VwdGlv
bnMoKSB8fCBpbl9kZWF0aF90ZXN0X2NoaWxkX3Byb2Nlc3MpIHsKKyMgaWYgIUdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFICYmICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5E
T1dTX1JUCiAgICAgLy8gU2V0RXJyb3JNb2RlIGRvZXNuJ3QgZXhpc3Qgb24gQ0UuCiAgICAgU2V0
RXJyb3JNb2RlKFNFTV9GQUlMQ1JJVElDQUxFUlJPUlMgfCBTRU1fTk9BTElHTk1FTlRGQVVMVEVY
Q0VQVCB8CiAgICAgICAgICAgICAgICAgIFNFTV9OT0dQRkFVTFRFUlJPUkJPWCB8IFNFTV9OT09Q
RU5GSUxFRVJST1JCT1gpOwotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMg
ZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQogCi0jaWYgKGRlZmluZWQoX01TQ19W
RVIpIHx8IEdURVNUX09TX1dJTkRPV1NfTUlOR1cpICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklM
RQorIyBpZiAoZGVmaW5lZChfTVNDX1ZFUikgfHwgR1RFU1RfT1NfV0lORE9XU19NSU5HVykgJiYg
IUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAgICAgLy8gRGVhdGggdGVzdCBjaGlsZHJlbiBjYW4g
YmUgdGVybWluYXRlZCB3aXRoIF9hYm9ydCgpLiAgT24gV2luZG93cywKICAgICAvLyBfYWJvcnQo
KSBjYW4gc2hvdyBhIGRpYWxvZyB3aXRoIGEgd2FybmluZyBtZXNzYWdlLiAgVGhpcyBmb3JjZXMg
dGhlCiAgICAgLy8gYWJvcnQgbWVzc2FnZSB0byBnbyB0byBzdGRlcnIgaW5zdGVhZC4KICAgICBf
c2V0X2Vycm9yX21vZGUoX09VVF9UT19TVERFUlIpOwotI2VuZGlmCisjIGVuZGlmCiAKLSNpZiBf
TVNDX1ZFUiA+PSAxNDAwICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBpZiBfTVNDX1ZF
UiA+PSAxNDAwICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQogICAgIC8vIEluIHRoZSBkZWJ1
ZyB2ZXJzaW9uLCBWaXN1YWwgU3R1ZGlvIHBvcHMgdXAgYSBzZXBhcmF0ZSBkaWFsb2cKICAgICAv
LyBvZmZlcmluZyBhIGNob2ljZSB0byBkZWJ1ZyB0aGUgYWJvcnRlZCBwcm9ncmFtLiBXZSBuZWVk
IHRvIHN1cHByZXNzCiAgICAgLy8gdGhpcyBkaWFsb2cgb3IgaXQgd2lsbCBwb3AgdXAgZm9yIGV2
ZXJ5IEVYUEVDVC9BU1NFUlRfREVBVEggc3RhdGVtZW50CkBAIC0zNjY0LDI4ICs0NzczLDIwIEBA
IGludCBVbml0VGVzdDo6UnVuKCkgewogICAgIC8vIFZDKysgZG9lc24ndCBkZWZpbmUgX3NldF9h
Ym9ydF9iZWhhdmlvcigpIHByaW9yIHRvIHRoZSB2ZXJzaW9uIDguMC4KICAgICAvLyBVc2VycyBv
ZiBwcmlvciBWQyB2ZXJzaW9ucyBzaGFsbCBzdWZmZXIgdGhlIGFnb255IGFuZCBwYWluIG9mCiAg
ICAgLy8gY2xpY2tpbmcgdGhyb3VnaCB0aGUgY291bnRsZXNzIGRlYnVnIGRpYWxvZ3MuCi0gICAg
Ly8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogZmluZCBhIHdheSB0byBzdXBwcmVzcyB0aGUgYWJv
cnQgZGlhbG9nKCkgaW4gdGhlCisgICAgLy8gRklYTUU6IGZpbmQgYSB3YXkgdG8gc3VwcHJlc3Mg
dGhlIGFib3J0IGRpYWxvZygpIGluIHRoZQogICAgIC8vIGRlYnVnIG1vZGUgd2hlbiBjb21waWxl
ZCB3aXRoIFZDIDcuMSBvciBsb3dlci4KICAgICBpZiAoIUdURVNUX0ZMQUcoYnJlYWtfb25fZmFp
bHVyZSkpCiAgICAgICBfc2V0X2Fib3J0X2JlaGF2aW9yKAogICAgICAgICAgIDB4MCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDbGVhciB0aGUgZm9sbG93aW5nIGZsYWdz
OgogICAgICAgICAgIF9XUklURV9BQk9SVF9NU0cgfCBfQ0FMTF9SRVBPUlRGQVVMVCk7ICAvLyBw
b3AtdXAgd2luZG93LCBjb3JlIGR1bXAuCi0jZW5kaWYKKyMgZW5kaWYKICAgfQorI2VuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTCiAKLSAgX190cnkgewotICAgIHJldHVybiBpbXBsXy0+UnVuQWxs
VGVzdHMoKTsKLSAgfSBfX2V4Y2VwdChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpHVGVzdFNo
b3VsZFByb2Nlc3NTRUgoCi0gICAgICBHZXRFeGNlcHRpb25Db2RlKCkpKSB7Ci0gICAgcHJpbnRm
KCJFeGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAweCV4LlxuRkFJTFxuIiwgR2V0RXhjZXB0aW9u
Q29kZSgpKTsKLSAgICBmZmx1c2goc3Rkb3V0KTsKLSAgICByZXR1cm4gMTsKLSAgfQotCi0jZWxz
ZSAgLy8gV2UgYXJlIG9uIGEgY29tcGlsZXIgb3IgcGxhdGZvcm0gdGhhdCBkb2Vzbid0IHN1cHBv
cnQgU0VILgotCi0gIHJldHVybiBpbXBsXy0+UnVuQWxsVGVzdHMoKTsKLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX1NFSAorICByZXR1cm4gaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElm
U3VwcG9ydGVkKAorICAgICAgaW1wbCgpLAorICAgICAgJmludGVybmFsOjpVbml0VGVzdEltcGw6
OlJ1bkFsbFRlc3RzLAorICAgICAgImF1eGlsaWFyeSB0ZXN0IGNvZGUgKGVudmlyb25tZW50cyBv
ciBldmVudCBsaXN0ZW5lcnMpIikgPyAwIDogMTsKIH0KIAogLy8gUmV0dXJucyB0aGUgd29ya2lu
ZyBkaXJlY3Rvcnkgd2hlbiB0aGUgZmlyc3QgVEVTVCgpIG9yIFRFU1RfRigpIHdhcwpAQCAtMzY5
NiwxNiArNDc5NywxNiBAQCBjb25zdCBjaGFyKiBVbml0VGVzdDo6b3JpZ2luYWxfd29ya2luZ19k
aXIoKSBjb25zdCB7CiAKIC8vIFJldHVybnMgdGhlIFRlc3RDYXNlIG9iamVjdCBmb3IgdGhlIHRl
c3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLAogLy8gb3IgTlVMTCBpZiBubyB0ZXN0IGlzIHJ1
bm5pbmcuCi0vLyBMIDwgbXV0ZXhfCi1jb25zdCBUZXN0Q2FzZSogVW5pdFRlc3Q6OmN1cnJlbnRf
dGVzdF9jYXNlKCkgY29uc3QgeworY29uc3QgVGVzdENhc2UqIFVuaXRUZXN0OjpjdXJyZW50X3Rl
c3RfY2FzZSgpIGNvbnN0CisgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7CiAgIGlu
dGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKICAgcmV0dXJuIGltcGxfLT5jdXJyZW50
X3Rlc3RfY2FzZSgpOwogfQogCiAvLyBSZXR1cm5zIHRoZSBUZXN0SW5mbyBvYmplY3QgZm9yIHRo
ZSB0ZXN0IHRoYXQncyBjdXJyZW50bHkgcnVubmluZywKIC8vIG9yIE5VTEwgaWYgbm8gdGVzdCBp
cyBydW5uaW5nLgotLy8gTCA8IG11dGV4XwotY29uc3QgVGVzdEluZm8qIFVuaXRUZXN0OjpjdXJy
ZW50X3Rlc3RfaW5mbygpIGNvbnN0IHsKK2NvbnN0IFRlc3RJbmZvKiBVbml0VGVzdDo6Y3VycmVu
dF90ZXN0X2luZm8oKSBjb25zdAorICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4Xykgewog
ICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7CiAgIHJldHVybiBpbXBsXy0+Y3Vy
cmVudF90ZXN0X2luZm8oKTsKIH0KQEAgLTM3MTMsMTUgKzQ4MTQsMTMgQEAgY29uc3QgVGVzdElu
Zm8qIFVuaXRUZXN0OjpjdXJyZW50X3Rlc3RfaW5mbygpIGNvbnN0IHsKIC8vIFJldHVybnMgdGhl
IHJhbmRvbSBzZWVkIHVzZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50IHRlc3QgcnVuLgog
aW50IFVuaXRUZXN0OjpyYW5kb21fc2VlZCgpIGNvbnN0IHsgcmV0dXJuIGltcGxfLT5yYW5kb21f
c2VlZCgpOyB9CiAKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAogLy8gUmV0dXJucyBQYXJhbWV0
ZXJpemVkVGVzdENhc2VSZWdpc3RyeSBvYmplY3QgdXNlZCB0byBrZWVwIHRyYWNrIG9mCiAvLyB2
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFuZCBpbnN0YW50aWF0ZSBhbmQgcmVnaXN0ZXIgdGhl
bS4KLS8vIEwgPCBtdXRleF8KIGludGVybmFsOjpQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3Ry
eSYKLSAgICBVbml0VGVzdDo6cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkgeworICAgIFVu
aXRUZXN0OjpwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKQorICAgICAgICBHVEVTVF9MT0NL
X0VYQ0xVREVEXyhtdXRleF8pIHsKICAgcmV0dXJuIGltcGxfLT5wYXJhbWV0ZXJpemVkX3Rlc3Rf
cmVnaXN0cnkoKTsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIAogLy8gQ3Jl
YXRlcyBhbiBlbXB0eSBVbml0VGVzdC4KIFVuaXRUZXN0OjpVbml0VGVzdCgpIHsKQEAgLTM3MzUs
MTUgKzQ4MzQsMTUgQEAgVW5pdFRlc3Q6On5Vbml0VGVzdCgpIHsKIAogLy8gUHVzaGVzIGEgdHJh
Y2UgZGVmaW5lZCBieSBTQ09QRURfVFJBQ0UoKSBvbiB0byB0aGUgcGVyLXRocmVhZAogLy8gR29v
Z2xlIFRlc3QgdHJhY2Ugc3RhY2suCi0vLyBMIDwgbXV0ZXhfCi12b2lkIFVuaXRUZXN0OjpQdXNo
R1Rlc3RUcmFjZShjb25zdCBpbnRlcm5hbDo6VHJhY2VJbmZvJiB0cmFjZSkgewordm9pZCBVbml0
VGVzdDo6UHVzaEdUZXN0VHJhY2UoY29uc3QgaW50ZXJuYWw6OlRyYWNlSW5mbyYgdHJhY2UpCisg
ICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7CiAgIGludGVybmFsOjpNdXRleExvY2sg
bG9jaygmbXV0ZXhfKTsKICAgaW1wbF8tPmd0ZXN0X3RyYWNlX3N0YWNrKCkucHVzaF9iYWNrKHRy
YWNlKTsKIH0KIAogLy8gUG9wcyBhIHRyYWNlIGZyb20gdGhlIHBlci10aHJlYWQgR29vZ2xlIFRl
c3QgdHJhY2Ugc3RhY2suCi0vLyBMIDwgbXV0ZXhfCi12b2lkIFVuaXRUZXN0OjpQb3BHVGVzdFRy
YWNlKCkgewordm9pZCBVbml0VGVzdDo6UG9wR1Rlc3RUcmFjZSgpCisgICAgR1RFU1RfTE9DS19F
WENMVURFRF8obXV0ZXhfKSB7CiAgIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsK
ICAgaW1wbF8tPmd0ZXN0X3RyYWNlX3N0YWNrKCkucG9wX2JhY2soKTsKIH0KQEAgLTM3NTIsMjUg
KzQ4NTEsMTYgQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIAogVW5pdFRlc3RJbXBsOjpVbml0VGVz
dEltcGwoVW5pdFRlc3QqIHBhcmVudCkKICAgICA6IHBhcmVudF8ocGFyZW50KSwKLSNpZmRlZiBf
TVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpICAgICAgICAgICAgICAgICAgICAvLyBTYXZl
cyB0aGUgY3VycmVudCB3YXJuaW5nIHN0YXRlLgotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDM1
NSkgICAgICAgICAgICAvLyBUZW1wb3JhcmlseSBkaXNhYmxlcyB3YXJuaW5nIDQzNTUKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHVzaW5nIHRoaXMgaW4gaW5p
dGlhbGl6ZXIpLgotICAgICAgZGVmYXVsdF9nbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRl
cl8odGhpcyksCi0gICAgICBkZWZhdWx0X3Blcl90aHJlYWRfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBv
cnRlcl8odGhpcyksCi0jcHJhZ21hIHdhcm5pbmcocG9wKSAgICAgICAgICAgICAgICAgICAgIC8v
IFJlc3RvcmVzIHRoZSB3YXJuaW5nIHN0YXRlIGFnYWluLgotI2Vsc2UKKyAgICAgIEdURVNUX0RJ
U0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQzNTUgLyogdXNpbmcgdGhpcyBpbiBpbml0aWFsaXpl
ciAqLykKICAgICAgIGRlZmF1bHRfZ2xvYmFsX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfKHRo
aXMpLAogICAgICAgZGVmYXVsdF9wZXJfdGhyZWFkX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJf
KHRoaXMpLAotI2VuZGlmICAvLyBfTVNDX1ZFUgorICAgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FS
TklOR1NfUE9QXygpCiAgICAgICBnbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvdGVyXygKICAg
ICAgICAgICAmZGVmYXVsdF9nbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8pLAogICAg
ICAgcGVyX3RocmVhZF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXygKICAgICAgICAgICAmZGVm
YXVsdF9wZXJfdGhyZWFkX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfKSwKLSNpZiBHVEVTVF9I
QVNfUEFSQU1fVEVTVAogICAgICAgcGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5XygpLAogICAg
ICAgcGFyYW1ldGVyaXplZF90ZXN0c19yZWdpc3RlcmVkXyhmYWxzZSksCi0jZW5kaWYgIC8vIEdU
RVNUX0hBU19QQVJBTV9URVNUCiAgICAgICBsYXN0X2RlYXRoX3Rlc3RfY2FzZV8oLTEpLAogICAg
ICAgY3VycmVudF90ZXN0X2Nhc2VfKE5VTEwpLAogICAgICAgY3VycmVudF90ZXN0X2luZm9fKE5V
TEwpLApAQCAtMzc3OSwxMyArNDg2OSwxMyBAQCBVbml0VGVzdEltcGw6OlVuaXRUZXN0SW1wbChV
bml0VGVzdCogcGFyZW50KQogICAgICAgcG9zdF9mbGFnX3BhcnNlX2luaXRfcGVyZm9ybWVkXyhm
YWxzZSksCiAgICAgICByYW5kb21fc2VlZF8oMCksICAvLyBXaWxsIGJlIG92ZXJyaWRkZW4gYnkg
dGhlIGZsYWcgYmVmb3JlIGZpcnN0IHVzZS4KICAgICAgIHJhbmRvbV8oMCksICAvLyBXaWxsIGJl
IHJlc2VlZGVkIGJlZm9yZSBmaXJzdCB1c2UuCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKyAg
ICAgIHN0YXJ0X3RpbWVzdGFtcF8oMCksCiAgICAgICBlbGFwc2VkX3RpbWVfKDApLAotICAgICAg
aW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfZmxhZ18oTlVMTCksCi0gICAgICBkZWF0aF90ZXN0X2Zh
Y3RvcnlfKG5ldyBEZWZhdWx0RGVhdGhUZXN0RmFjdG9yeSkgewotI2Vsc2UKLSAgICAgIGVsYXBz
ZWRfdGltZV8oMCkgewotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorI2lmIEdURVNU
X0hBU19ERUFUSF9URVNUCisgICAgICBkZWF0aF90ZXN0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0RGVh
dGhUZXN0RmFjdG9yeSksCisjZW5kaWYKKyAgICAgIC8vIFdpbGwgYmUgb3ZlcnJpZGRlbiBieSB0
aGUgZmxhZyBiZWZvcmUgZmlyc3QgdXNlLgorICAgICAgY2F0Y2hfZXhjZXB0aW9uc18oZmFsc2Up
IHsKICAgbGlzdGVuZXJzKCktPlNldERlZmF1bHRSZXN1bHRQcmludGVyKG5ldyBQcmV0dHlVbml0
VGVzdFJlc3VsdFByaW50ZXIpOwogfQogCkBAIC0zNzk5LDYgKzQ4ODksMjggQEAgVW5pdFRlc3RJ
bXBsOjp+VW5pdFRlc3RJbXBsKCkgewogICBkZWxldGUgb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXzsK
IH0KIAorLy8gQWRkcyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUgY3VycmVudCBUZXN0UmVzdWx0IG9i
amVjdCB3aGVuIGludm9rZWQgaW4gYQorLy8gY29udGV4dCBvZiBhIHRlc3QsIHRvIGN1cnJlbnQg
dGVzdCBjYXNlJ3MgYWRfaG9jX3Rlc3RfcmVzdWx0IHdoZW4gaW52b2tlCisvLyBmcm9tIFNldFVw
VGVzdENhc2UvVGVhckRvd25UZXN0Q2FzZSwgb3IgdG8gdGhlIGdsb2JhbCBwcm9wZXJ0eSBzZXQK
Ky8vIG90aGVyd2lzZS4gIElmIHRoZSByZXN1bHQgYWxyZWFkeSBjb250YWlucyBhIHByb3BlcnR5
IHdpdGggdGhlIHNhbWUga2V5LAorLy8gdGhlIHZhbHVlIHdpbGwgYmUgdXBkYXRlZC4KK3ZvaWQg
VW5pdFRlc3RJbXBsOjpSZWNvcmRQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJv
cGVydHkpIHsKKyAgc3RkOjpzdHJpbmcgeG1sX2VsZW1lbnQ7CisgIFRlc3RSZXN1bHQqIHRlc3Rf
cmVzdWx0OyAgLy8gVGVzdFJlc3VsdCBhcHByb3ByaWF0ZSBmb3IgcHJvcGVydHkgcmVjb3JkaW5n
LgorCisgIGlmIChjdXJyZW50X3Rlc3RfaW5mb18gIT0gTlVMTCkgeworICAgIHhtbF9lbGVtZW50
ID0gInRlc3RjYXNlIjsKKyAgICB0ZXN0X3Jlc3VsdCA9ICYoY3VycmVudF90ZXN0X2luZm9fLT5y
ZXN1bHRfKTsKKyAgfSBlbHNlIGlmIChjdXJyZW50X3Rlc3RfY2FzZV8gIT0gTlVMTCkgeworICAg
IHhtbF9lbGVtZW50ID0gInRlc3RzdWl0ZSI7CisgICAgdGVzdF9yZXN1bHQgPSAmKGN1cnJlbnRf
dGVzdF9jYXNlXy0+YWRfaG9jX3Rlc3RfcmVzdWx0Xyk7CisgIH0gZWxzZSB7CisgICAgeG1sX2Vs
ZW1lbnQgPSAidGVzdHN1aXRlcyI7CisgICAgdGVzdF9yZXN1bHQgPSAmYWRfaG9jX3Rlc3RfcmVz
dWx0XzsKKyAgfQorICB0ZXN0X3Jlc3VsdC0+UmVjb3JkUHJvcGVydHkoeG1sX2VsZW1lbnQsIHRl
c3RfcHJvcGVydHkpOworfQorCiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKIC8vIERpc2FibGVz
IGV2ZW50IGZvcndhcmRpbmcgaWYgdGhlIGNvbnRyb2wgaXMgY3VycmVudGx5IGluIGEgZGVhdGgg
dGVzdAogLy8gc3VicHJvY2Vzcy4gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBJbml0R29vZ2xl
VGVzdC4KQEAgLTM4MTEsMTcgKzQ5MjMsMzcgQEAgdm9pZCBVbml0VGVzdEltcGw6OlN1cHByZXNz
VGVzdEV2ZW50c0lmSW5TdWJwcm9jZXNzKCkgewogLy8gSW5pdGlhbGl6ZXMgZXZlbnQgbGlzdGVu
ZXJzIHBlcmZvcm1pbmcgWE1MIG91dHB1dCBhcyBzcGVjaWZpZWQgYnkKIC8vIFVuaXRUZXN0T3B0
aW9ucy4gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBJbml0R29vZ2xlVGVzdC4KIHZvaWQgVW5p
dFRlc3RJbXBsOjpDb25maWd1cmVYbWxPdXRwdXQoKSB7Ci0gIGNvbnN0IFN0cmluZyYgb3V0cHV0
X2Zvcm1hdCA9IFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCk7CisgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBvdXRwdXRfZm9ybWF0ID0gVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3Jt
YXQoKTsKICAgaWYgKG91dHB1dF9mb3JtYXQgPT0gInhtbCIpIHsKICAgICBsaXN0ZW5lcnMoKS0+
U2V0RGVmYXVsdFhtbEdlbmVyYXRvcihuZXcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyKAogICAg
ICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3Ry
KCkpKTsKKyAgfSBlbHNlIGlmIChvdXRwdXRfZm9ybWF0ID09ICJqc29uIikgeworICAgIGxpc3Rl
bmVycygpLT5TZXREZWZhdWx0WG1sR2VuZXJhdG9yKG5ldyBKc29uVW5pdFRlc3RSZXN1bHRQcmlu
dGVyKAorICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0Rmls
ZSgpLmNfc3RyKCkpKTsKICAgfSBlbHNlIGlmIChvdXRwdXRfZm9ybWF0ICE9ICIiKSB7Ci0gICAg
cHJpbnRmKCJXQVJOSU5HOiB1bnJlY29nbml6ZWQgb3V0cHV0IGZvcm1hdCBcIiVzXCIgaWdub3Jl
ZC5cbiIsCi0gICAgICAgICAgIG91dHB1dF9mb3JtYXQuY19zdHIoKSk7Ci0gICAgZmZsdXNoKHN0
ZG91dCk7CisgICAgR1RFU1RfTE9HXyhXQVJOSU5HKSA8PCAiV0FSTklORzogdW5yZWNvZ25pemVk
IG91dHB1dCBmb3JtYXQgXCIiCisgICAgICAgICAgICAgICAgICAgICAgICA8PCBvdXRwdXRfZm9y
bWF0IDw8ICJcIiBpZ25vcmVkLiI7CiAgIH0KIH0KIAorI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVT
VUxUU18KKy8vIEluaXRpYWxpemVzIGV2ZW50IGxpc3RlbmVycyBmb3Igc3RyZWFtaW5nIHRlc3Qg
cmVzdWx0cyBpbiBzdHJpbmcgZm9ybS4KKy8vIE11c3Qgbm90IGJlIGNhbGxlZCBiZWZvcmUgSW5p
dEdvb2dsZVRlc3QuCit2b2lkIFVuaXRUZXN0SW1wbDo6Q29uZmlndXJlU3RyZWFtaW5nT3V0cHV0
KCkgeworICBjb25zdCBzdGQ6OnN0cmluZyYgdGFyZ2V0ID0gR1RFU1RfRkxBRyhzdHJlYW1fcmVz
dWx0X3RvKTsKKyAgaWYgKCF0YXJnZXQuZW1wdHkoKSkgeworICAgIGNvbnN0IHNpemVfdCBwb3Mg
PSB0YXJnZXQuZmluZCgnOicpOworICAgIGlmIChwb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsK
KyAgICAgIGxpc3RlbmVycygpLT5BcHBlbmQobmV3IFN0cmVhbWluZ0xpc3RlbmVyKHRhcmdldC5z
dWJzdHIoMCwgcG9zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRhcmdldC5zdWJzdHIocG9zKzEpKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIEdURVNU
X0xPR18oV0FSTklORykgPDwgInVucmVjb2duaXplZCBzdHJlYW1pbmcgdGFyZ2V0IFwiIiA8PCB0
YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlwiIGlnbm9yZWQuIjsKKyAgICB9
CisgIH0KK30KKyNlbmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworCiAvLyBQZXJm
b3JtcyBpbml0aWFsaXphdGlvbiBkZXBlbmRlbnQgdXBvbiBmbGFnIHZhbHVlcyBvYnRhaW5lZCBp
bgogLy8gUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5LiAgSXMgY2FsbGVkIGZyb20gSW5pdEdvb2ds
ZVRlc3QgYWZ0ZXIgdGhlIGNhbGwgdG8KIC8vIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seS4gIElu
IGNhc2UgYSB1c2VyIG5lZ2xlY3RzIHRvIGNhbGwgSW5pdEdvb2dsZVRlc3QKQEAgLTM4MzIsNiAr
NDk2NCwxMSBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6UG9zdEZsYWdQYXJzaW5nSW5pdCgpIHsKICAg
aWYgKCFwb3N0X2ZsYWdfcGFyc2VfaW5pdF9wZXJmb3JtZWRfKSB7CiAgICAgcG9zdF9mbGFnX3Bh
cnNlX2luaXRfcGVyZm9ybWVkXyA9IHRydWU7CiAKKyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9U
RVNUX0VWRU5UX0xJU1RFTkVSXykKKyAgICAvLyBSZWdpc3RlciB0byBzZW5kIG5vdGlmaWNhdGlv
bnMgYWJvdXQga2V5IHByb2Nlc3Mgc3RhdGUgY2hhbmdlcy4KKyAgICBsaXN0ZW5lcnMoKS0+QXBw
ZW5kKG5ldyBHVEVTVF9DVVNUT01fVEVTVF9FVkVOVF9MSVNURU5FUl8oKSk7CisjZW5kaWYgIC8v
IGRlZmluZWQoR1RFU1RfQ1VTVE9NX1RFU1RfRVZFTlRfTElTVEVORVJfKQorCiAjaWYgR1RFU1Rf
SEFTX0RFQVRIX1RFU1QKICAgICBJbml0RGVhdGhUZXN0U3VicHJvY2Vzc0NvbnRyb2xJbmZvKCk7
CiAgICAgU3VwcHJlc3NUZXN0RXZlbnRzSWZJblN1YnByb2Nlc3MoKTsKQEAgLTM4NDUsNiArNDk4
MiwxOCBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6UG9zdEZsYWdQYXJzaW5nSW5pdCgpIHsKICAgICAv
LyBDb25maWd1cmVzIGxpc3RlbmVycyBmb3IgWE1MIG91dHB1dC4gVGhpcyBtYWtlcyBpdCBwb3Nz
aWJsZSBmb3IgdXNlcnMKICAgICAvLyB0byBzaHV0IGRvd24gdGhlIGRlZmF1bHQgWE1MIG91dHB1
dCBiZWZvcmUgaW52b2tpbmcgUlVOX0FMTF9URVNUUy4KICAgICBDb25maWd1cmVYbWxPdXRwdXQo
KTsKKworI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKyAgICAvLyBDb25maWd1cmVzIGxp
c3RlbmVycyBmb3Igc3RyZWFtaW5nIHRlc3QgcmVzdWx0cyB0byB0aGUgc3BlY2lmaWVkIHNlcnZl
ci4KKyAgICBDb25maWd1cmVTdHJlYW1pbmdPdXRwdXQoKTsKKyNlbmRpZiAgLy8gR1RFU1RfQ0FO
X1NUUkVBTV9SRVNVTFRTXworCisjaWYgR1RFU1RfSEFTX0FCU0wKKyAgICBpZiAoR1RFU1RfRkxB
RyhpbnN0YWxsX2ZhaWx1cmVfc2lnbmFsX2hhbmRsZXIpKSB7CisgICAgICBhYnNsOjpGYWlsdXJl
U2lnbmFsSGFuZGxlck9wdGlvbnMgb3B0aW9uczsKKyAgICAgIGFic2w6Okluc3RhbGxGYWlsdXJl
U2lnbmFsSGFuZGxlcihvcHRpb25zKTsKKyAgICB9CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNM
CiAgIH0KIH0KIApAQCAtMzg1OSw3ICs1MDA4LDcgQEAgdm9pZCBVbml0VGVzdEltcGw6OlBvc3RG
bGFnUGFyc2luZ0luaXQoKSB7CiBjbGFzcyBUZXN0Q2FzZU5hbWVJcyB7CiAgcHVibGljOgogICAv
LyBDb25zdHJ1Y3Rvci4KLSAgZXhwbGljaXQgVGVzdENhc2VOYW1lSXMoY29uc3QgU3RyaW5nJiBu
YW1lKQorICBleHBsaWNpdCBUZXN0Q2FzZU5hbWVJcyhjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkK
ICAgICAgIDogbmFtZV8obmFtZSkge30KIAogICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBuYW1l
IG9mIHRlc3RfY2FzZSBtYXRjaGVzIG5hbWVfLgpAQCAtMzg2OCw3ICs1MDE3LDcgQEAgY2xhc3Mg
VGVzdENhc2VOYW1lSXMgewogICB9CiAKICBwcml2YXRlOgotICBTdHJpbmcgbmFtZV87CisgIHN0
ZDo6c3RyaW5nIG5hbWVfOwogfTsKIAogLy8gRmluZHMgYW5kIHJldHVybnMgYSBUZXN0Q2FzZSB3
aXRoIHRoZSBnaXZlbiBuYW1lLiAgSWYgb25lIGRvZXNuJ3QKQEAgLTM4NzksMjYgKzUwMjgsMjgg
QEAgY2xhc3MgVGVzdENhc2VOYW1lSXMgewogLy8gQXJndW1lbnRzOgogLy8KIC8vICAgdGVzdF9j
YXNlX25hbWU6IG5hbWUgb2YgdGhlIHRlc3QgY2FzZQorLy8gICB0eXBlX3BhcmFtOiAgICAgdGhl
IG5hbWUgb2YgdGhlIHRlc3QgY2FzZSdzIHR5cGUgcGFyYW1ldGVyLCBvciBOVUxMIGlmCisvLyAg
ICAgICAgICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3QgY2FzZS4KIC8vICAgc2V0X3VwX3RjOiAgICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0
aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBjYXNlCiAvLyAgIHRlYXJfZG93bl90YzogICBwb2lu
dGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQogVGVzdENh
c2UqIFVuaXRUZXN0SW1wbDo6R2V0VGVzdENhc2UoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb21tZW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdHlwZV9w
YXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3Q6OlNldFVwVGVz
dENhc2VGdW5jIHNldF91cF90YywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YykgewogICAvLyBDYW4gd2Ug
ZmluZCBhIFRlc3RDYXNlIHdpdGggdGhlIGdpdmVuIG5hbWU/Ci0gIGNvbnN0IHN0ZDo6dmVjdG9y
PFRlc3RDYXNlKj46OmNvbnN0X2l0ZXJhdG9yIHRlc3RfY2FzZSA9Ci0gICAgICBzdGQ6OmZpbmRf
aWYodGVzdF9jYXNlc18uYmVnaW4oKSwgdGVzdF9jYXNlc18uZW5kKCksCisgIGNvbnN0IHN0ZDo6
dmVjdG9yPFRlc3RDYXNlKj46OmNvbnN0X3JldmVyc2VfaXRlcmF0b3IgdGVzdF9jYXNlID0KKyAg
ICAgIHN0ZDo6ZmluZF9pZih0ZXN0X2Nhc2VzXy5yYmVnaW4oKSwgdGVzdF9jYXNlc18ucmVuZCgp
LAogICAgICAgICAgICAgICAgICAgIFRlc3RDYXNlTmFtZUlzKHRlc3RfY2FzZV9uYW1lKSk7CiAK
LSAgaWYgKHRlc3RfY2FzZSAhPSB0ZXN0X2Nhc2VzXy5lbmQoKSkKKyAgaWYgKHRlc3RfY2FzZSAh
PSB0ZXN0X2Nhc2VzXy5yZW5kKCkpCiAgICAgcmV0dXJuICp0ZXN0X2Nhc2U7CiAKICAgLy8gTm8u
ICBMZXQncyBjcmVhdGUgb25lLgogICBUZXN0Q2FzZSogY29uc3QgbmV3X3Rlc3RfY2FzZSA9Ci0g
ICAgICBuZXcgVGVzdENhc2UodGVzdF9jYXNlX25hbWUsIGNvbW1lbnQsIHNldF91cF90YywgdGVh
cl9kb3duX3RjKTsKKyAgICAgIG5ldyBUZXN0Q2FzZSh0ZXN0X2Nhc2VfbmFtZSwgdHlwZV9wYXJh
bSwgc2V0X3VwX3RjLCB0ZWFyX2Rvd25fdGMpOwogCiAgIC8vIElzIHRoaXMgYSBkZWF0aCB0ZXN0
IGNhc2U/Ci0gIGlmIChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpNYXRjaGVzRmlsdGVyKFN0
cmluZyh0ZXN0X2Nhc2VfbmFtZSksCisgIGlmIChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpN
YXRjaGVzRmlsdGVyKHRlc3RfY2FzZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrRGVhdGhUZXN0Q2FzZUZpbHRlcikpIHsKICAgICAvLyBZZXMu
ICBJbnNlcnRzIHRoZSB0ZXN0IGNhc2UgYWZ0ZXIgdGhlIGxhc3QgZGVhdGggdGVzdCBjYXNlCiAg
ICAgLy8gZGVmaW5lZCBzbyBmYXIuICBUaGlzIG9ubHkgd29ya3Mgd2hlbiB0aGUgdGVzdCBjYXNl
cyBoYXZlbid0CkBAIC0zOTIyLDI3ICs1MDczLDIxIEBAIHN0YXRpYyB2b2lkIFNldFVwRW52aXJv
bm1lbnQoRW52aXJvbm1lbnQqIGVudikgeyBlbnYtPlNldFVwKCk7IH0KIHN0YXRpYyB2b2lkIFRl
YXJEb3duRW52aXJvbm1lbnQoRW52aXJvbm1lbnQqIGVudikgeyBlbnYtPlRlYXJEb3duKCk7IH0K
IAogLy8gUnVucyBhbGwgdGVzdHMgaW4gdGhpcyBVbml0VGVzdCBvYmplY3QsIHByaW50cyB0aGUg
cmVzdWx0LCBhbmQKLS8vIHJldHVybnMgMCBpZiBhbGwgdGVzdHMgYXJlIHN1Y2Nlc3NmdWwsIG9y
IDEgb3RoZXJ3aXNlLiAgSWYgYW55Ci0vLyBleGNlcHRpb24gaXMgdGhyb3duIGR1cmluZyBhIHRl
c3Qgb24gV2luZG93cywgdGhpcyB0ZXN0IGlzCi0vLyBjb25zaWRlcmVkIHRvIGJlIGZhaWxlZCwg
YnV0IHRoZSByZXN0IG9mIHRoZSB0ZXN0cyB3aWxsIHN0aWxsIGJlCi0vLyBydW4uICAoV2UgZGlz
YWJsZSBleGNlcHRpb25zIG9uIExpbnV4IGFuZCBNYWMgT1MgWCwgc28gdGhlIGlzc3VlCi0vLyBk
b2Vzbid0IGFwcGx5IHRoZXJlLikKKy8vIHJldHVybnMgdHJ1ZSBpZiBhbGwgdGVzdHMgYXJlIHN1
Y2Nlc3NmdWwuICBJZiBhbnkgZXhjZXB0aW9uIGlzCisvLyB0aHJvd24gZHVyaW5nIGEgdGVzdCwg
dGhlIHRlc3QgaXMgY29uc2lkZXJlZCB0byBiZSBmYWlsZWQsIGJ1dCB0aGUKKy8vIHJlc3Qgb2Yg
dGhlIHRlc3RzIHdpbGwgc3RpbGwgYmUgcnVuLgorLy8KIC8vIFdoZW4gcGFyYW1ldGVyaXplZCB0
ZXN0cyBhcmUgZW5hYmxlZCwgaXQgZXhwYW5kcyBhbmQgcmVnaXN0ZXJzCiAvLyBwYXJhbWV0ZXJp
emVkIHRlc3RzIGZpcnN0IGluIFJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzKCkuCiAvLyBBbGwg
b3RoZXIgZnVuY3Rpb25zIGNhbGxlZCBmcm9tIFJ1bkFsbFRlc3RzKCkgbWF5IHNhZmVseSBhc3N1
bWUgdGhhdAogLy8gcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgcmVhZHkgdG8gYmUgY291bnRlZCBh
bmQgcnVuLgotaW50IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7Ci0gIC8vIE1ha2VzIHN1
cmUgSW5pdEdvb2dsZVRlc3QoKSB3YXMgY2FsbGVkLgotICBpZiAoIUdUZXN0SXNJbml0aWFsaXpl
ZCgpKSB7Ci0gICAgcHJpbnRmKCIlcyIsCi0gICAgICAgICAgICJcblRoaXMgdGVzdCBwcm9ncmFt
IGRpZCBOT1QgY2FsbCA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0ICIKLSAgICAgICAgICAgImJl
Zm9yZSBjYWxsaW5nIFJVTl9BTExfVEVTVFMoKS4gIFBsZWFzZSBmaXggaXQuXG4iKTsKLSAgICBy
ZXR1cm4gMTsKLSAgfQorYm9vbCBVbml0VGVzdEltcGw6OlJ1bkFsbFRlc3RzKCkgeworICAvLyBU
cnVlIGlmZiBHb29nbGUgVGVzdCBpcyBpbml0aWFsaXplZCBiZWZvcmUgUlVOX0FMTF9URVNUUygp
IGlzIGNhbGxlZC4KKyAgY29uc3QgYm9vbCBndGVzdF9pc19pbml0aWFsaXplZF9iZWZvcmVfcnVu
X2FsbF90ZXN0cyA9IEdUZXN0SXNJbml0aWFsaXplZCgpOwogCiAgIC8vIERvIG5vdCBydW4gYW55
IHRlc3QgaWYgdGhlIC0taGVscCBmbGFnIHdhcyBzcGVjaWZpZWQuCiAgIGlmIChnX2hlbHBfZmxh
ZykKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdHJ1ZTsKIAogICAvLyBSZXBlYXRzIHRoZSBj
YWxsIHRvIHRoZSBwb3N0LWZsYWcgcGFyc2luZyBpbml0aWFsaXphdGlvbiBpbiBjYXNlIHRoZQog
ICAvLyB1c2VyIGRpZG4ndCBjYWxsIEluaXRHb29nbGVUZXN0LgpAQCAtMzk1OSw2ICs1MTA0LDEx
IEBAIGludCBVbml0VGVzdEltcGw6OlJ1bkFsbFRlc3RzKCkgewogCiAjaWYgR1RFU1RfSEFTX0RF
QVRIX1RFU1QKICAgaW5fc3VicHJvY2Vzc19mb3JfZGVhdGhfdGVzdCA9IChpbnRlcm5hbF9ydW5f
ZGVhdGhfdGVzdF9mbGFnXy5nZXQoKSAhPSBOVUxMKTsKKyMgaWYgZGVmaW5lZChHVEVTVF9FWFRS
QV9ERUFUSF9URVNUX0NISUxEX1NFVFVQXykKKyAgaWYgKGluX3N1YnByb2Nlc3NfZm9yX2RlYXRo
X3Rlc3QpIHsKKyAgICBHVEVTVF9FWFRSQV9ERUFUSF9URVNUX0NISUxEX1NFVFVQXygpOworICB9
CisjIGVuZGlmICAvLyBkZWZpbmVkKEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ0hJTERfU0VUVVBf
KQogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCiAgIGNvbnN0IGJvb2wgc2hvdWxk
X3NoYXJkID0gU2hvdWxkU2hhcmQoa1Rlc3RUb3RhbFNoYXJkcywga1Rlc3RTaGFyZEluZGV4LApA
QCAtMzk3NCw3ICs1MTI0LDcgQEAgaW50IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7CiAg
IGlmIChHVEVTVF9GTEFHKGxpc3RfdGVzdHMpKSB7CiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxl
ZCAqYWZ0ZXIqIEZpbHRlclRlc3RzKCkgaGFzIGJlZW4gY2FsbGVkLgogICAgIExpc3RUZXN0c01h
dGNoaW5nRmlsdGVyKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHRydWU7CiAgIH0KIAog
ICByYW5kb21fc2VlZF8gPSBHVEVTVF9GTEFHKHNodWZmbGUpID8KQEAgLTM5ODUsNiArNTEzNSw3
IEBAIGludCBVbml0VGVzdEltcGw6OlJ1bkFsbFRlc3RzKCkgewogCiAgIFRlc3RFdmVudExpc3Rl
bmVyKiByZXBlYXRlciA9IGxpc3RlbmVycygpLT5yZXBlYXRlcigpOwogCisgIHN0YXJ0X3RpbWVz
dGFtcF8gPSBHZXRUaW1lSW5NaWxsaXMoKTsKICAgcmVwZWF0ZXItPk9uVGVzdFByb2dyYW1TdGFy
dCgqcGFyZW50Xyk7CiAKICAgLy8gSG93IG1hbnkgdGltZXMgdG8gcmVwZWF0IHRoZSB0ZXN0cz8g
IFdlIGRvbid0IHdhbnQgdG8gcmVwZWF0IHRoZW0KQEAgLTM5OTMsNyArNTE0NCw5IEBAIGludCBV
bml0VGVzdEltcGw6OlJ1bkFsbFRlc3RzKCkgewogICAvLyBSZXBlYXRzIGZvcmV2ZXIgaWYgdGhl
IHJlcGVhdCBjb3VudCBpcyBuZWdhdGl2ZS4KICAgY29uc3QgYm9vbCBmb3JldmVyID0gcmVwZWF0
IDwgMDsKICAgZm9yIChpbnQgaSA9IDA7IGZvcmV2ZXIgfHwgaSAhPSByZXBlYXQ7IGkrKykgewot
ICAgIENsZWFyUmVzdWx0KCk7CisgICAgLy8gV2Ugd2FudCB0byBwcmVzZXJ2ZSBmYWlsdXJlcyBn
ZW5lcmF0ZWQgYnkgYWQtaG9jIHRlc3QKKyAgICAvLyBhc3NlcnRpb25zIGV4ZWN1dGVkIGJlZm9y
ZSBSVU5fQUxMX1RFU1RTKCkuCisgICAgQ2xlYXJOb25BZEhvY1Rlc3RSZXN1bHQoKTsKIAogICAg
IGNvbnN0IFRpbWVJbk1pbGxpcyBzdGFydCA9IEdldFRpbWVJbk1pbGxpcygpOwogCkBAIC00MDU4
LDggKzUyMTEsMjEgQEAgaW50IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7CiAKICAgcmVw
ZWF0ZXItPk9uVGVzdFByb2dyYW1FbmQoKnBhcmVudF8pOwogCi0gIC8vIFJldHVybnMgMCBpZiBh
bGwgdGVzdHMgcGFzc2VkLCBvciAxIG90aGVyIHdpc2UuCi0gIHJldHVybiBmYWlsZWQgPyAxIDog
MDsKKyAgaWYgKCFndGVzdF9pc19pbml0aWFsaXplZF9iZWZvcmVfcnVuX2FsbF90ZXN0cykgewor
ICAgIENvbG9yZWRQcmludGYoCisgICAgICAgIENPTE9SX1JFRCwKKyAgICAgICAgIlxuSU1QT1JU
QU5UIE5PVElDRSAtIERPIE5PVCBJR05PUkU6XG4iCisgICAgICAgICJUaGlzIHRlc3QgcHJvZ3Jh
bSBkaWQgTk9UIGNhbGwgIiBHVEVTVF9JTklUX0dPT0dMRV9URVNUX05BTUVfCisgICAgICAgICIo
KSBiZWZvcmUgY2FsbGluZyBSVU5fQUxMX1RFU1RTKCkuIFRoaXMgaXMgSU5WQUxJRC4gU29vbiAi
IEdURVNUX05BTUVfCisgICAgICAgICIgd2lsbCBzdGFydCB0byBlbmZvcmNlIHRoZSB2YWxpZCB1
c2FnZS4gIgorICAgICAgICAiUGxlYXNlIGZpeCBpdCBBU0FQLCBvciBJVCBXSUxMIFNUQVJUIFRP
IEZBSUwuXG4iKTsgIC8vIE5PTElOVAorI2lmIEdURVNUX0ZPUl9HT09HTEVfCisgICAgQ29sb3Jl
ZFByaW50ZihDT0xPUl9SRUQsCisgICAgICAgICAgICAgICAgICAiRm9yIG1vcmUgZGV0YWlscywg
c2VlIGh0dHA6Ly93aWtpL01haW4vVmFsaWRHVW5pdE1haW4uXG4iKTsKKyNlbmRpZiAgLy8gR1RF
U1RfRk9SX0dPT0dMRV8KKyAgfQorCisgIHJldHVybiAhZmFpbGVkOwogfQogCiAvLyBSZWFkcyB0
aGUgR1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEUgZW52aXJvbm1lbnQgdmFyaWFibGUsIGFuZCBjcmVh
dGVzIHRoZSBmaWxlCkBAIC00MTMzLDcgKzUyOTksNyBAQCBib29sIFNob3VsZFNoYXJkKGNvbnN0
IGNoYXIqIHRvdGFsX3NoYXJkc19lbnYsCiAvLyBQYXJzZXMgdGhlIGVudmlyb25tZW50IHZhcmlh
YmxlIHZhciBhcyBhbiBJbnQzMi4gSWYgaXQgaXMgdW5zZXQsCiAvLyByZXR1cm5zIGRlZmF1bHRf
dmFsLiBJZiBpdCBpcyBub3QgYW4gSW50MzIsIHByaW50cyBhbiBlcnJvcgogLy8gYW5kIGFib3J0
cy4KLUludDMyIEludDMyRnJvbUVudk9yRGllKGNvbnN0IGNoYXIqIGNvbnN0IHZhciwgSW50MzIg
ZGVmYXVsdF92YWwpIHsKK0ludDMyIEludDMyRnJvbUVudk9yRGllKGNvbnN0IGNoYXIqIHZhciwg
SW50MzIgZGVmYXVsdF92YWwpIHsKICAgY29uc3QgY2hhciogc3RyX3ZhbCA9IHBvc2l4OjpHZXRF
bnYodmFyKTsKICAgaWYgKHN0cl92YWwgPT0gTlVMTCkgewogICAgIHJldHVybiBkZWZhdWx0X3Zh
bDsKQEAgLTQxNjAsOCArNTMyNiw4IEBAIGJvb2wgU2hvdWxkUnVuVGVzdE9uU2hhcmQoaW50IHRv
dGFsX3NoYXJkcywgaW50IHNoYXJkX2luZGV4LCBpbnQgdGVzdF9pZCkgewogLy8gZWFjaCBUZXN0
Q2FzZSBhbmQgVGVzdEluZm8gb2JqZWN0LgogLy8gSWYgc2hhcmRfdGVzdHMgPT0gdHJ1ZSwgZnVy
dGhlciBmaWx0ZXJzIHRlc3RzIGJhc2VkIG9uIHNoYXJkaW5nCiAvLyB2YXJpYWJsZXMgaW4gdGhl
IGVudmlyb25tZW50IC0gc2VlCi0vLyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVz
dC93aWtpL0dvb2dsZVRlc3RBZHZhbmNlZEd1aWRlLgotLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9m
IHRlc3RzIHRoYXQgc2hvdWxkIHJ1bi4KKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29v
Z2xldGVzdC9ibG9iL21hc3Rlci9nb29nbGV0ZXN0L2RvY3MvYWR2YW5jZWQubWQKKy8vIC4gUmV0
dXJucyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRoYXQgc2hvdWxkIHJ1bi4KIGludCBVbml0VGVzdElt
cGw6OkZpbHRlclRlc3RzKFJlYWN0aW9uVG9TaGFyZGluZyBzaGFyZF90ZXN0cykgewogICBjb25z
dCBJbnQzMiB0b3RhbF9zaGFyZHMgPSBzaGFyZF90ZXN0cyA9PSBIT05PUl9TSEFSRElOR19QUk9U
T0NPTCA/CiAgICAgICBJbnQzMkZyb21FbnZPckRpZShrVGVzdFRvdGFsU2hhcmRzLCAtMSkgOiAt
MTsKQEAgLTQxNzYsMTIgKzUzNDIsMTIgQEAgaW50IFVuaXRUZXN0SW1wbDo6RmlsdGVyVGVzdHMo
UmVhY3Rpb25Ub1NoYXJkaW5nIHNoYXJkX3Rlc3RzKSB7CiAgIGludCBudW1fc2VsZWN0ZWRfdGVz
dHMgPSAwOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXNfLnNpemUoKTsgaSsr
KSB7CiAgICAgVGVzdENhc2UqIGNvbnN0IHRlc3RfY2FzZSA9IHRlc3RfY2FzZXNfW2ldOwotICAg
IGNvbnN0IFN0cmluZyAmdGVzdF9jYXNlX25hbWUgPSB0ZXN0X2Nhc2UtPm5hbWUoKTsKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyAmdGVzdF9jYXNlX25hbWUgPSB0ZXN0X2Nhc2UtPm5hbWUoKTsKICAg
ICB0ZXN0X2Nhc2UtPnNldF9zaG91bGRfcnVuKGZhbHNlKTsKIAogICAgIGZvciAoc2l6ZV90IGog
PSAwOyBqIDwgdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpLnNpemUoKTsgaisrKSB7CiAgICAg
ICBUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0gdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgp
W2pdOwotICAgICAgY29uc3QgU3RyaW5nIHRlc3RfbmFtZSh0ZXN0X2luZm8tPm5hbWUoKSk7Cisg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0X25hbWUodGVzdF9pbmZvLT5uYW1lKCkpOwogICAg
ICAgLy8gQSB0ZXN0IGlzIGRpc2FibGVkIGlmIHRlc3QgY2FzZSBuYW1lIG9yIHRlc3QgbmFtZSBt
YXRjaGVzCiAgICAgICAvLyBrRGlzYWJsZVRlc3RGaWx0ZXIuCiAgICAgICBjb25zdCBib29sIGlz
X2Rpc2FibGVkID0KQEAgLTQxODksMzQgKzUzNTUsNjAgQEAgaW50IFVuaXRUZXN0SW1wbDo6Rmls
dGVyVGVzdHMoUmVhY3Rpb25Ub1NoYXJkaW5nIHNoYXJkX3Rlc3RzKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrRGlzYWJsZVRlc3RGaWx0ZXIp
IHx8CiAgICAgICAgICAgaW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcih0
ZXN0X25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBrRGlzYWJsZVRlc3RGaWx0ZXIpOwotICAgICAgdGVzdF9pbmZvLT5pbXBsKCktPnNldF9p
c19kaXNhYmxlZChpc19kaXNhYmxlZCk7CisgICAgICB0ZXN0X2luZm8tPmlzX2Rpc2FibGVkXyA9
IGlzX2Rpc2FibGVkOwogCiAgICAgICBjb25zdCBib29sIG1hdGNoZXNfZmlsdGVyID0KICAgICAg
ICAgICBpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpGaWx0ZXJNYXRjaGVzVGVzdCh0ZXN0X2Nh
c2VfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0X25hbWUpOwotICAgICAgdGVzdF9pbmZvLT5pbXBsKCktPnNldF9tYXRjaGVz
X2ZpbHRlcihtYXRjaGVzX2ZpbHRlcik7CisgICAgICB0ZXN0X2luZm8tPm1hdGNoZXNfZmlsdGVy
XyA9IG1hdGNoZXNfZmlsdGVyOwogCiAgICAgICBjb25zdCBib29sIGlzX3J1bm5hYmxlID0KICAg
ICAgICAgICAoR1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cykgfHwgIWlzX2Rpc2Fi
bGVkKSAmJgogICAgICAgICAgIG1hdGNoZXNfZmlsdGVyOwogCi0gICAgICBjb25zdCBib29sIGlz
X3NlbGVjdGVkID0gaXNfcnVubmFibGUgJiYKLSAgICAgICAgICAoc2hhcmRfdGVzdHMgPT0gSUdO
T1JFX1NIQVJESU5HX1BST1RPQ09MIHx8Ci0gICAgICAgICAgIFNob3VsZFJ1blRlc3RPblNoYXJk
KHRvdGFsX3NoYXJkcywgc2hhcmRfaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bV9ydW5uYWJsZV90ZXN0cykpOworICAgICAgY29uc3QgYm9vbCBpc19pbl9hbm90aGVy
X3NoYXJkID0KKyAgICAgICAgICBzaGFyZF90ZXN0cyAhPSBJR05PUkVfU0hBUkRJTkdfUFJPVE9D
T0wgJiYKKyAgICAgICAgICAhU2hvdWxkUnVuVGVzdE9uU2hhcmQodG90YWxfc2hhcmRzLCBzaGFy
ZF9pbmRleCwgbnVtX3J1bm5hYmxlX3Rlc3RzKTsKKyAgICAgIHRlc3RfaW5mby0+aXNfaW5fYW5v
dGhlcl9zaGFyZF8gPSBpc19pbl9hbm90aGVyX3NoYXJkOworICAgICAgY29uc3QgYm9vbCBpc19z
ZWxlY3RlZCA9IGlzX3J1bm5hYmxlICYmICFpc19pbl9hbm90aGVyX3NoYXJkOwogCiAgICAgICBu
dW1fcnVubmFibGVfdGVzdHMgKz0gaXNfcnVubmFibGU7CiAgICAgICBudW1fc2VsZWN0ZWRfdGVz
dHMgKz0gaXNfc2VsZWN0ZWQ7CiAKLSAgICAgIHRlc3RfaW5mby0+aW1wbCgpLT5zZXRfc2hvdWxk
X3J1bihpc19zZWxlY3RlZCk7CisgICAgICB0ZXN0X2luZm8tPnNob3VsZF9ydW5fID0gaXNfc2Vs
ZWN0ZWQ7CiAgICAgICB0ZXN0X2Nhc2UtPnNldF9zaG91bGRfcnVuKHRlc3RfY2FzZS0+c2hvdWxk
X3J1bigpIHx8IGlzX3NlbGVjdGVkKTsKICAgICB9CiAgIH0KICAgcmV0dXJuIG51bV9zZWxlY3Rl
ZF90ZXN0czsKIH0KIAorLy8gUHJpbnRzIHRoZSBnaXZlbiBDLXN0cmluZyBvbiBhIHNpbmdsZSBs
aW5lIGJ5IHJlcGxhY2luZyBhbGwgJ1xuJworLy8gY2hhcmFjdGVycyB3aXRoIHN0cmluZyAiXFxu
Ii4gIElmIHRoZSBvdXRwdXQgdGFrZXMgbW9yZSB0aGFuCisvLyBtYXhfbGVuZ3RoIGNoYXJhY3Rl
cnMsIG9ubHkgcHJpbnRzIHRoZSBmaXJzdCBtYXhfbGVuZ3RoIGNoYXJhY3RlcnMKKy8vIGFuZCAi
Li4uIi4KK3N0YXRpYyB2b2lkIFByaW50T25PbmVMaW5lKGNvbnN0IGNoYXIqIHN0ciwgaW50IG1h
eF9sZW5ndGgpIHsKKyAgaWYgKHN0ciAhPSBOVUxMKSB7CisgICAgZm9yIChpbnQgaSA9IDA7ICpz
dHIgIT0gJ1wwJzsgKytzdHIpIHsKKyAgICAgIGlmIChpID49IG1heF9sZW5ndGgpIHsKKyAgICAg
ICAgcHJpbnRmKCIuLi4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBpZiAoKnN0
ciA9PSAnXG4nKSB7CisgICAgICAgIHByaW50ZigiXFxuIik7CisgICAgICAgIGkgKz0gMjsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHByaW50ZigiJWMiLCAqc3RyKTsKKyAgICAgICAgKytpOwor
ICAgICAgfQorICAgIH0KKyAgfQorfQorCiAvLyBQcmludHMgdGhlIG5hbWVzIG9mIHRoZSB0ZXN0
cyBtYXRjaGluZyB0aGUgdXNlci1zcGVjaWZpZWQgZmlsdGVyIGZsYWcuCiB2b2lkIFVuaXRUZXN0
SW1wbDo6TGlzdFRlc3RzTWF0Y2hpbmdGaWx0ZXIoKSB7CisgIC8vIFByaW50IGF0IG1vc3QgdGhp
cyBtYW55IGNoYXJhY3RlcnMgZm9yIGVhY2ggdHlwZS92YWx1ZSBwYXJhbWV0ZXIuCisgIGNvbnN0
IGludCBrTWF4UGFyYW1MZW5ndGggPSAyNTA7CisKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0
ZXN0X2Nhc2VzXy5zaXplKCk7IGkrKykgewogICAgIGNvbnN0IFRlc3RDYXNlKiBjb25zdCB0ZXN0
X2Nhc2UgPSB0ZXN0X2Nhc2VzX1tpXTsKICAgICBib29sIHByaW50ZWRfdGVzdF9jYXNlX25hbWUg
PSBmYWxzZTsKQEAgLTQyMjQsMTYgKzU0MTYsNDcgQEAgdm9pZCBVbml0VGVzdEltcGw6Okxpc3RU
ZXN0c01hdGNoaW5nRmlsdGVyKCkgewogICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgdGVzdF9j
YXNlLT50ZXN0X2luZm9fbGlzdCgpLnNpemUoKTsgaisrKSB7CiAgICAgICBjb25zdCBUZXN0SW5m
byogY29uc3QgdGVzdF9pbmZvID0KICAgICAgICAgICB0ZXN0X2Nhc2UtPnRlc3RfaW5mb19saXN0
KClbal07Ci0gICAgICBpZiAodGVzdF9pbmZvLT5tYXRjaGVzX2ZpbHRlcigpKSB7CisgICAgICBp
ZiAodGVzdF9pbmZvLT5tYXRjaGVzX2ZpbHRlcl8pIHsKICAgICAgICAgaWYgKCFwcmludGVkX3Rl
c3RfY2FzZV9uYW1lKSB7CiAgICAgICAgICAgcHJpbnRlZF90ZXN0X2Nhc2VfbmFtZSA9IHRydWU7
Ci0gICAgICAgICAgcHJpbnRmKCIlcy5cbiIsIHRlc3RfY2FzZS0+bmFtZSgpKTsKKyAgICAgICAg
ICBwcmludGYoIiVzLiIsIHRlc3RfY2FzZS0+bmFtZSgpKTsKKyAgICAgICAgICBpZiAodGVzdF9j
YXNlLT50eXBlX3BhcmFtKCkgIT0gTlVMTCkgeworICAgICAgICAgICAgcHJpbnRmKCIgICMgJXMg
PSAiLCBrVHlwZVBhcmFtTGFiZWwpOworICAgICAgICAgICAgLy8gV2UgcHJpbnQgdGhlIHR5cGUg
cGFyYW1ldGVyIG9uIGEgc2luZ2xlIGxpbmUgdG8gbWFrZQorICAgICAgICAgICAgLy8gdGhlIG91
dHB1dCBlYXN5IHRvIHBhcnNlIGJ5IGEgcHJvZ3JhbS4KKyAgICAgICAgICAgIFByaW50T25PbmVM
aW5lKHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgpLCBrTWF4UGFyYW1MZW5ndGgpOworICAgICAgICAg
IH0KKyAgICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAgIH0KKyAgICAgICAgcHJpbnRmKCIg
ICVzIiwgdGVzdF9pbmZvLT5uYW1lKCkpOworICAgICAgICBpZiAodGVzdF9pbmZvLT52YWx1ZV9w
YXJhbSgpICE9IE5VTEwpIHsKKyAgICAgICAgICBwcmludGYoIiAgIyAlcyA9ICIsIGtWYWx1ZVBh
cmFtTGFiZWwpOworICAgICAgICAgIC8vIFdlIHByaW50IHRoZSB2YWx1ZSBwYXJhbWV0ZXIgb24g
YSBzaW5nbGUgbGluZSB0byBtYWtlIHRoZQorICAgICAgICAgIC8vIG91dHB1dCBlYXN5IHRvIHBh
cnNlIGJ5IGEgcHJvZ3JhbS4KKyAgICAgICAgICBQcmludE9uT25lTGluZSh0ZXN0X2luZm8tPnZh
bHVlX3BhcmFtKCksIGtNYXhQYXJhbUxlbmd0aCk7CiAgICAgICAgIH0KLSAgICAgICAgcHJpbnRm
KCIgICVzXG4iLCB0ZXN0X2luZm8tPm5hbWUoKSk7CisgICAgICAgIHByaW50ZigiXG4iKTsKICAg
ICAgIH0KICAgICB9CiAgIH0KICAgZmZsdXNoKHN0ZG91dCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBvdXRwdXRfZm9ybWF0ID0gVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQoKTsKKyAg
aWYgKG91dHB1dF9mb3JtYXQgPT0gInhtbCIgfHwgb3V0cHV0X2Zvcm1hdCA9PSAianNvbiIpIHsK
KyAgICBGSUxFKiBmaWxlb3V0ID0gT3BlbkZpbGVGb3JXcml0aW5nKAorICAgICAgICBVbml0VGVz
dE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOworICAgIHN0
ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgICBpZiAob3V0cHV0X2Zvcm1hdCA9PSAieG1sIikg
eworICAgICAgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyKAorICAgICAgICAgIFVuaXRUZXN0T3B0
aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSkKKyAgICAgICAgICAu
UHJpbnRYbWxUZXN0c0xpc3QoJnN0cmVhbSwgdGVzdF9jYXNlc18pOworICAgIH0gZWxzZSBpZiAo
b3V0cHV0X2Zvcm1hdCA9PSAianNvbiIpIHsKKyAgICAgIEpzb25Vbml0VGVzdFJlc3VsdFByaW50
ZXIoCisgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZp
bGUoKS5jX3N0cigpKQorICAgICAgICAgIC5QcmludEpzb25UZXN0TGlzdCgmc3RyZWFtLCB0ZXN0
X2Nhc2VzXyk7CisgICAgfQorICAgIGZwcmludGYoZmlsZW91dCwgIiVzIiwgU3RyaW5nU3RyZWFt
VG9TdHJpbmcoJnN0cmVhbSkuY19zdHIoKSk7CisgICAgZmNsb3NlKGZpbGVvdXQpOworICB9CiB9
CiAKIC8vIFNldHMgdGhlIE9TIHN0YWNrIHRyYWNlIGdldHRlci4KQEAgLTQyNTQsMTcgKzU0Nzcs
MjUgQEAgdm9pZCBVbml0VGVzdEltcGw6OnNldF9vc19zdGFja190cmFjZV9nZXR0ZXIoCiAvLyBn
ZXR0ZXIsIGFuZCByZXR1cm5zIGl0LgogT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlKiBVbml0
VGVzdEltcGw6Om9zX3N0YWNrX3RyYWNlX2dldHRlcigpIHsKICAgaWYgKG9zX3N0YWNrX3RyYWNl
X2dldHRlcl8gPT0gTlVMTCkgeworI2lmZGVmIEdURVNUX09TX1NUQUNLX1RSQUNFX0dFVFRFUl8K
KyAgICBvc19zdGFja190cmFjZV9nZXR0ZXJfID0gbmV3IEdURVNUX09TX1NUQUNLX1RSQUNFX0dF
VFRFUl87CisjZWxzZQogICAgIG9zX3N0YWNrX3RyYWNlX2dldHRlcl8gPSBuZXcgT3NTdGFja1Ry
YWNlR2V0dGVyOworI2VuZGlmICAvLyBHVEVTVF9PU19TVEFDS19UUkFDRV9HRVRURVJfCiAgIH0K
IAogICByZXR1cm4gb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXzsKIH0KIAotLy8gUmV0dXJucyB0aGUg
VGVzdFJlc3VsdCBmb3IgdGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLCBvcgotLy8g
dGhlIFRlc3RSZXN1bHQgZm9yIHRoZSBhZCBob2MgdGVzdCBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcu
CisvLyBSZXR1cm5zIHRoZSBtb3N0IHNwZWNpZmljIFRlc3RSZXN1bHQgY3VycmVudGx5IHJ1bm5p
bmcuCiBUZXN0UmVzdWx0KiBVbml0VGVzdEltcGw6OmN1cnJlbnRfdGVzdF9yZXN1bHQoKSB7Ci0g
IHJldHVybiBjdXJyZW50X3Rlc3RfaW5mb18gPwotICAgIGN1cnJlbnRfdGVzdF9pbmZvXy0+aW1w
bCgpLT5yZXN1bHQoKSA6ICZhZF9ob2NfdGVzdF9yZXN1bHRfOworICBpZiAoY3VycmVudF90ZXN0
X2luZm9fICE9IE5VTEwpIHsKKyAgICByZXR1cm4gJmN1cnJlbnRfdGVzdF9pbmZvXy0+cmVzdWx0
XzsKKyAgfQorICBpZiAoY3VycmVudF90ZXN0X2Nhc2VfICE9IE5VTEwpIHsKKyAgICByZXR1cm4g
JmN1cnJlbnRfdGVzdF9jYXNlXy0+YWRfaG9jX3Rlc3RfcmVzdWx0XzsKKyAgfQorICByZXR1cm4g
JmFkX2hvY190ZXN0X3Jlc3VsdF87CiB9CiAKIC8vIFNodWZmbGVzIGFsbCB0ZXN0IGNhc2VzLCBh
bmQgdGhlIHRlc3RzIHdpdGhpbiBlYWNoIHRlc3QgY2FzZSwKQEAgLTQyOTMsMzMgKzU1MjQsNyBA
QCB2b2lkIFVuaXRUZXN0SW1wbDo6VW5zaHVmZmxlVGVzdHMoKSB7CiAgIH0KIH0KIAotLy8gVGVz
dEluZm9JbXBsIGNvbnN0cnVjdG9yLiBUaGUgbmV3IGluc3RhbmNlIGFzc3VtZXMgb3duZXJzaGlw
IG9mIHRoZSB0ZXN0Ci0vLyBmYWN0b3J5IG9iamVjdC4KLVRlc3RJbmZvSW1wbDo6VGVzdEluZm9J
bXBsKFRlc3RJbmZvKiBwYXJlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBhX3Rlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogYV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV90
ZXN0X2Nhc2VfY29tbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGFfY29tbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVJZCBhX2ZpeHR1cmVf
Y2xhc3NfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3Rv
cnlCYXNlKiBmYWN0b3J5KSA6Ci0gICAgcGFyZW50XyhwYXJlbnQpLAotICAgIHRlc3RfY2FzZV9u
YW1lXyhTdHJpbmcoYV90ZXN0X2Nhc2VfbmFtZSkpLAotICAgIG5hbWVfKFN0cmluZyhhX25hbWUp
KSwKLSAgICB0ZXN0X2Nhc2VfY29tbWVudF8oU3RyaW5nKGFfdGVzdF9jYXNlX2NvbW1lbnQpKSwK
LSAgICBjb21tZW50XyhTdHJpbmcoYV9jb21tZW50KSksCi0gICAgZml4dHVyZV9jbGFzc19pZF8o
YV9maXh0dXJlX2NsYXNzX2lkKSwKLSAgICBzaG91bGRfcnVuXyhmYWxzZSksCi0gICAgaXNfZGlz
YWJsZWRfKGZhbHNlKSwKLSAgICBtYXRjaGVzX2ZpbHRlcl8oZmFsc2UpLAotICAgIGZhY3Rvcnlf
KGZhY3RvcnkpIHsKLX0KLQotLy8gVGVzdEluZm9JbXBsIGRlc3RydWN0b3IuCi1UZXN0SW5mb0lt
cGw6On5UZXN0SW5mb0ltcGwoKSB7Ci0gIGRlbGV0ZSBmYWN0b3J5XzsKLX0KLQotLy8gUmV0dXJu
cyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBhcyBhIFN0cmluZy4KKy8vIFJldHVybnMgdGhl
IGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYW4gc3RkOjpzdHJpbmcuCiAvLwogLy8gVGhlIG1h
eGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZCBpcyBzcGVjaWZpZWQg
YnkKIC8vIHRoZSBndGVzdF9zdGFja190cmFjZV9kZXB0aCBmbGFnLiAgVGhlIHNraXBfY291bnQg
cGFyYW1ldGVyCkBAIC00MzI5LDE1ICs1NTM0LDE1IEBAIFRlc3RJbmZvSW1wbDo6flRlc3RJbmZv
SW1wbCgpIHsKIC8vIEZvciBleGFtcGxlLCBpZiBGb28oKSBjYWxscyBCYXIoKSwgd2hpY2ggaW4g
dHVybiBjYWxscwogLy8gR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCguLi4sIDEpLCBG
b28oKSB3aWxsIGJlIGluY2x1ZGVkIGluCiAvLyB0aGUgdHJhY2UgYnV0IEJhcigpIGFuZCBHZXRD
dXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKCkgd29uJ3QuCi1TdHJpbmcgR2V0Q3VycmVudE9z
U3RhY2tUcmFjZUV4Y2VwdFRvcChVbml0VGVzdCogLyp1bml0X3Rlc3QqLywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBza2lwX2NvdW50KSB7CitzdGQ6OnN0cmlu
ZyBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKFVuaXRUZXN0KiAvKnVuaXRfdGVzdCov
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2tpcF9j
b3VudCkgewogICAvLyBXZSBwYXNzIHNraXBfY291bnQgKyAxIHRvIHNraXAgdGhpcyB3cmFwcGVy
IGZ1bmN0aW9uIGluIGFkZGl0aW9uCiAgIC8vIHRvIHdoYXQgdGhlIHVzZXIgcmVhbGx5IHdhbnRz
IHRvIHNraXAuCiAgIHJldHVybiBHZXRVbml0VGVzdEltcGwoKS0+Q3VycmVudE9zU3RhY2tUcmFj
ZUV4Y2VwdFRvcChza2lwX2NvdW50ICsgMSk7CiB9CiAKLS8vIFVzZWQgYnkgdGhlIEdURVNUX0hJ
REVfVU5SRUFDSEFCTEVfQ09ERV8gbWFjcm8gdG8gc3VwcHJlc3MgdW5yZWFjaGFibGUKLS8vIGNv
ZGUgd2FybmluZ3MuCisvLyBVc2VkIGJ5IHRoZSBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9D
T0RFX1dBUk5JTkdfQkVMT1dfIG1hY3JvIHRvCisvLyBzdXBwcmVzcyB1bnJlYWNoYWJsZSBjb2Rl
IHdhcm5pbmdzLgogbmFtZXNwYWNlIHsKIGNsYXNzIENsYXNzVW5pcXVlVG9BbHdheXNUcnVlIHt9
OwogfQpAQCAtNDM3MSwxNCArNTU3NiwxMyBAQCBib29sIFNraXBQcmVmaXgoY29uc3QgY2hhciog
cHJlZml4LCBjb25zdCBjaGFyKiogcHN0cikgewogLy8gcGFydCBjYW4gYmUgb21pdHRlZC4KIC8v
CiAvLyBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZywgb3IgTlVMTCBpZiB0aGUgcGFyc2lu
ZyBmYWlsZWQuCi1jb25zdCBjaGFyKiBQYXJzZUZsYWdWYWx1ZShjb25zdCBjaGFyKiBzdHIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmbGFnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBkZWZfb3B0aW9uYWwpIHsKK3N0YXRpYyBjb25zdCBjaGFyKiBQ
YXJzZUZsYWdWYWx1ZShjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWZfb3B0aW9uYWwpIHsKICAgLy8gc3Ry
IGFuZCBmbGFnIG11c3Qgbm90IGJlIE5VTEwuCiAgIGlmIChzdHIgPT0gTlVMTCB8fCBmbGFnID09
IE5VTEwpIHJldHVybiBOVUxMOwogCiAgIC8vIFRoZSBmbGFnIG11c3Qgc3RhcnQgd2l0aCAiLS0i
IGZvbGxvd2VkIGJ5IEdURVNUX0ZMQUdfUFJFRklYXy4KLSAgY29uc3QgU3RyaW5nIGZsYWdfc3Ry
ID0gU3RyaW5nOjpGb3JtYXQoIi0tJXMlcyIsIEdURVNUX0ZMQUdfUFJFRklYXywgZmxhZyk7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGZsYWdfc3RyID0gc3RkOjpzdHJpbmcoIi0tIikgKyBHVEVTVF9G
TEFHX1BSRUZJWF8gKyBmbGFnOwogICBjb25zdCBzaXplX3QgZmxhZ19sZW4gPSBmbGFnX3N0ci5s
ZW5ndGgoKTsKICAgaWYgKHN0cm5jbXAoc3RyLCBmbGFnX3N0ci5jX3N0cigpLCBmbGFnX2xlbikg
IT0gMCkgcmV0dXJuIE5VTEw7CiAKQEAgLTQ0MDksNyArNTYxMyw3IEBAIGNvbnN0IGNoYXIqIFBh
cnNlRmxhZ1ZhbHVlKGNvbnN0IGNoYXIqIHN0ciwKIC8vCiAvLyBPbiBzdWNjZXNzLCBzdG9yZXMg
dGhlIHZhbHVlIG9mIHRoZSBmbGFnIGluICp2YWx1ZSwgYW5kIHJldHVybnMKIC8vIHRydWUuICBP
biBmYWlsdXJlLCByZXR1cm5zIGZhbHNlIHdpdGhvdXQgY2hhbmdpbmcgKnZhbHVlLgotYm9vbCBQ
YXJzZUJvb2xGbGFnKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgY2hhciogZmxhZywgYm9vbCogdmFs
dWUpIHsKK3N0YXRpYyBib29sIFBhcnNlQm9vbEZsYWcoY29uc3QgY2hhciogc3RyLCBjb25zdCBj
aGFyKiBmbGFnLCBib29sKiB2YWx1ZSkgewogICAvLyBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgZmxh
ZyBhcyBhIHN0cmluZy4KICAgY29uc3QgY2hhciogY29uc3QgdmFsdWVfc3RyID0gUGFyc2VGbGFn
VmFsdWUoc3RyLCBmbGFnLCB0cnVlKTsKIApAQCAtNDQ0Myw3ICs1NjQ3LDggQEAgYm9vbCBQYXJz
ZUludDMyRmxhZyhjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsIEludDMyKiB2YWx1
ZSkgewogLy8KIC8vIE9uIHN1Y2Nlc3MsIHN0b3JlcyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcgaW4g
KnZhbHVlLCBhbmQgcmV0dXJucwogLy8gdHJ1ZS4gIE9uIGZhaWx1cmUsIHJldHVybnMgZmFsc2Ug
d2l0aG91dCBjaGFuZ2luZyAqdmFsdWUuCi1ib29sIFBhcnNlU3RyaW5nRmxhZyhjb25zdCBjaGFy
KiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsIFN0cmluZyogdmFsdWUpIHsKK3RlbXBsYXRlIDx0eXBl
bmFtZSBTdHJpbmc+CitzdGF0aWMgYm9vbCBQYXJzZVN0cmluZ0ZsYWcoY29uc3QgY2hhciogc3Ry
LCBjb25zdCBjaGFyKiBmbGFnLCBTdHJpbmcqIHZhbHVlKSB7CiAgIC8vIEdldHMgdGhlIHZhbHVl
IG9mIHRoZSBmbGFnIGFzIGEgc3RyaW5nLgogICBjb25zdCBjaGFyKiBjb25zdCB2YWx1ZV9zdHIg
PSBQYXJzZUZsYWdWYWx1ZShzdHIsIGZsYWcsIGZhbHNlKTsKIApAQCAtNDQ3OSw3ICs1Njg0LDcg
QEAgc3RhdGljIGJvb2wgSGFzR29vZ2xlVGVzdEZsYWdQcmVmaXgoY29uc3QgY2hhciogc3RyKSB7
CiAvLyAgIEBZICAgIGNoYW5nZXMgdGhlIGNvbG9yIHRvIHllbGxvdy4KIC8vICAgQEQgICAgY2hh
bmdlcyB0byB0aGUgZGVmYXVsdCB0ZXJtaW5hbCB0ZXh0IGNvbG9yLgogLy8KLS8vIFRPRE8od2Fu
QGdvb2dsZS5jb20pOiBXcml0ZSB0ZXN0cyBmb3IgdGhpcyBvbmNlIHdlIGFkZCBzdGRvdXQKKy8v
IEZJWE1FOiBXcml0ZSB0ZXN0cyBmb3IgdGhpcyBvbmNlIHdlIGFkZCBzdGRvdXQKIC8vIGNhcHR1
cmluZyB0byBHb29nbGUgVGVzdC4KIHN0YXRpYyB2b2lkIFByaW50Q29sb3JFbmNvZGVkKGNvbnN0
IGNoYXIqIHN0cikgewogICBHVGVzdENvbG9yIGNvbG9yID0gQ09MT1JfREVGQVVMVDsgIC8vIFRo
ZSBjdXJyZW50IGNvbG9yLgpAQCAtNDQ5NSw3ICs1NzAwLDcgQEAgc3RhdGljIHZvaWQgUHJpbnRD
b2xvckVuY29kZWQoY29uc3QgY2hhciogc3RyKSB7CiAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgQ29sb3JlZFByaW50Zihjb2xvciwgIiVzIiwgU3RyaW5nKHN0ciwgcCAtIHN0cikuY19zdHIo
KSk7CisgICAgQ29sb3JlZFByaW50Zihjb2xvciwgIiVzIiwgc3RkOjpzdHJpbmcoc3RyLCBwKS5j
X3N0cigpKTsKIAogICAgIGNvbnN0IGNoYXIgY2ggPSBwWzFdOwogICAgIHN0ciA9IHAgKyAyOwpA
QCAtNDU0NSwyNCArNTc1MCwyOCBAQCBzdGF0aWMgY29uc3QgY2hhciBrQ29sb3JFbmNvZGVkSGVs
cE1lc3NhZ2VbXSA9CiAiICAgICAgRW5hYmxlL2Rpc2FibGUgY29sb3JlZCBvdXRwdXQuIFRoZSBk
ZWZhdWx0IGlzIEBHYXV0b0BELlxuIgogIiAgLUBHLSIgR1RFU1RfRkxBR19QUkVGSVhfICJwcmlu
dF90aW1lPTBARFxuIgogIiAgICAgIERvbid0IHByaW50IHRoZSBlbGFwc2VkIHRpbWUgb2YgZWFj
aCB0ZXN0LlxuIgotIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJvdXRwdXQ9eG1sQFlbQEc6
QFlESVJFQ1RPUllfUEFUSEBHIgorIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJvdXRwdXQ9
QFkoQEdqc29uQFl8QEd4bWxAWSlbQEc6QFlESVJFQ1RPUllfUEFUSEBHIgogICAgIEdURVNUX1BB
VEhfU0VQXyAiQFl8QEc6QFlGSUxFX1BBVEhdQERcbiIKLSIgICAgICBHZW5lcmF0ZSBhbiBYTUwg
cmVwb3J0IGluIHRoZSBnaXZlbiBkaXJlY3Rvcnkgb3Igd2l0aCB0aGUgZ2l2ZW4gZmlsZVxuIgot
IiAgICAgIG5hbWUuIEBZRklMRV9QQVRIQEQgZGVmYXVsdHMgdG8gQEd0ZXN0X2RldGFpbHMueG1s
QEQuXG4iCisiICAgICAgR2VuZXJhdGUgYSBKU09OIG9yIFhNTCByZXBvcnQgaW4gdGhlIGdpdmVu
IGRpcmVjdG9yeSBvciB3aXRoIHRoZSBnaXZlblxuIgorIiAgICAgIGZpbGUgbmFtZS4gQFlGSUxF
X1BBVEhARCBkZWZhdWx0cyB0byBAR3Rlc3RfZGV0YWlscy54bWxARC5cbiIKKyMgaWYgR1RFU1Rf
Q0FOX1NUUkVBTV9SRVNVTFRTXworIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJzdHJlYW1f
cmVzdWx0X3RvPUBZSE9TVEBHOkBZUE9SVEBEXG4iCisiICAgICAgU3RyZWFtIHRlc3QgcmVzdWx0
cyB0byB0aGUgZ2l2ZW4gc2VydmVyLlxuIgorIyBlbmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9S
RVNVTFRTXwogIlxuIgogIkFzc2VydGlvbiBCZWhhdmlvcjpcbiIKLSNpZiBHVEVTVF9IQVNfREVB
VEhfVEVTVCAmJiAhR1RFU1RfT1NfV0lORE9XUworIyBpZiBHVEVTVF9IQVNfREVBVEhfVEVTVCAm
JiAhR1RFU1RfT1NfV0lORE9XUwogIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJkZWF0aF90
ZXN0X3N0eWxlPUBZKEBHZmFzdEBZfEBHdGhyZWFkc2FmZUBZKUBEXG4iCiAiICAgICAgU2V0IHRo
ZSBkZWZhdWx0IGRlYXRoIHRlc3Qgc3R5bGUuXG4iCi0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFU
SF9URVNUICYmICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhf
VEVTVCAmJiAhR1RFU1RfT1NfV0lORE9XUwogIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJi
cmVha19vbl9mYWlsdXJlQERcbiIKICIgICAgICBUdXJuIGFzc2VydGlvbiBmYWlsdXJlcyBpbnRv
IGRlYnVnZ2VyIGJyZWFrLXBvaW50cy5cbiIKICIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAi
dGhyb3dfb25fZmFpbHVyZUBEXG4iCi0iICAgICAgVHVybiBhc3NlcnRpb24gZmFpbHVyZXMgaW50
byBDKysgZXhjZXB0aW9ucy5cbiIKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0iICBARy0tIiBHVEVT
VF9GTEFHX1BSRUZJWF8gImNhdGNoX2V4Y2VwdGlvbnNARFxuIgotIiAgICAgIFN1cHByZXNzIHBv
cC11cHMgY2F1c2VkIGJ5IGV4Y2VwdGlvbnMuXG4iCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRP
V1MKKyIgICAgICBUdXJuIGFzc2VydGlvbiBmYWlsdXJlcyBpbnRvIEMrKyBleGNlcHRpb25zIGZv
ciB1c2UgYnkgYW4gZXh0ZXJuYWxcbiIKKyIgICAgICB0ZXN0IGZyYW1ld29yay5cbiIKKyIgIEBH
LS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiY2F0Y2hfZXhjZXB0aW9ucz0wQERcbiIKKyIgICAgICBE
byBub3QgcmVwb3J0IGV4Y2VwdGlvbnMgYXMgdGVzdCBmYWlsdXJlcy4gSW5zdGVhZCwgYWxsb3cg
dGhlbVxuIgorIiAgICAgIHRvIGNyYXNoIHRoZSBwcm9ncmFtIG9yIHRocm93IGEgcG9wLXVwIChv
biBXaW5kb3dzKS5cbiIKICJcbiIKICJFeGNlcHQgZm9yIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklY
XyAibGlzdF90ZXN0c0BELCB5b3UgY2FuIGFsdGVybmF0aXZlbHkgc2V0ICIKICAgICAidGhlIGNv
cnJlc3BvbmRpbmdcbiIKQEAgLTQ1NzYsNDUgKzU3ODUsODcgQEAgc3RhdGljIGNvbnN0IGNoYXIg
a0NvbG9yRW5jb2RlZEhlbHBNZXNzYWdlW10gPQogIihub3Qgb25lIGluIHlvdXIgb3duIGNvZGUg
b3IgdGVzdHMpLCBwbGVhc2UgcmVwb3J0IGl0IHRvXG4iCiAiQEc8IiBHVEVTVF9ERVZfRU1BSUxf
ICI+QEQuXG4iOwogCitzdGF0aWMgYm9vbCBQYXJzZUdvb2dsZVRlc3RGbGFnKGNvbnN0IGNoYXIq
IGNvbnN0IGFyZykgeworICByZXR1cm4gUGFyc2VCb29sRmxhZyhhcmcsIGtBbHNvUnVuRGlzYWJs
ZWRUZXN0c0ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGFsc29fcnVu
X2Rpc2FibGVkX3Rlc3RzKSkgfHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrQnJlYWtPbkZh
aWx1cmVGbGFnLAorICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhicmVha19vbl9mYWls
dXJlKSkgfHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrQ2F0Y2hFeGNlcHRpb25zRmxhZywK
KyAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykpIHx8Cisg
ICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrQ29sb3JGbGFnLCAmR1RFU1RfRkxBRyhjb2xvcikp
IHx8CisgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrRGVhdGhUZXN0U3R5bGVGbGFnLAorICAg
ICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpKSB8fAorICAg
ICAgUGFyc2VCb29sRmxhZyhhcmcsIGtEZWF0aFRlc3RVc2VGb3JrLAorICAgICAgICAgICAgICAg
ICAgICAmR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKSkgfHwKKyAgICAgIFBhcnNlU3Ry
aW5nRmxhZyhhcmcsIGtGaWx0ZXJGbGFnLCAmR1RFU1RfRkxBRyhmaWx0ZXIpKSB8fAorICAgICAg
UGFyc2VTdHJpbmdGbGFnKGFyZywga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZywKKyAgICAgICAg
ICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkpIHx8Cisg
ICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0xpc3RUZXN0c0ZsYWcsICZHVEVTVF9GTEFHKGxpc3Rf
dGVzdHMpKSB8fAorICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga091dHB1dEZsYWcsICZHVEVT
VF9GTEFHKG91dHB1dCkpIHx8CisgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga1ByaW50VGltZUZs
YWcsICZHVEVTVF9GTEFHKHByaW50X3RpbWUpKSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhhcmcs
IGtQcmludFVURjhGbGFnLCAmR1RFU1RfRkxBRyhwcmludF91dGY4KSkgfHwKKyAgICAgIFBhcnNl
SW50MzJGbGFnKGFyZywga1JhbmRvbVNlZWRGbGFnLCAmR1RFU1RfRkxBRyhyYW5kb21fc2VlZCkp
IHx8CisgICAgICBQYXJzZUludDMyRmxhZyhhcmcsIGtSZXBlYXRGbGFnLCAmR1RFU1RfRkxBRyhy
ZXBlYXQpKSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtTaHVmZmxlRmxhZywgJkdURVNU
X0ZMQUcoc2h1ZmZsZSkpIHx8CisgICAgICBQYXJzZUludDMyRmxhZyhhcmcsIGtTdGFja1RyYWNl
RGVwdGhGbGFnLAorICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoc3RhY2tfdHJhY2Vf
ZGVwdGgpKSB8fAorICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga1N0cmVhbVJlc3VsdFRvRmxh
ZywKKyAgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSkg
fHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrVGhyb3dPbkZhaWx1cmVGbGFnLAorICAgICAg
ICAgICAgICAgICAgICAmR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSk7Cit9CisKKyNpZiBH
VEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCitzdGF0aWMgdm9pZCBMb2FkRmxhZ3NGcm9tRmls
ZShjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCkgeworICBGSUxFKiBmbGFnZmlsZSA9IHBvc2l4OjpG
T3BlbihwYXRoLmNfc3RyKCksICJyIik7CisgIGlmICghZmxhZ2ZpbGUpIHsKKyAgICBHVEVTVF9M
T0dfKEZBVEFMKSA8PCAiVW5hYmxlIHRvIG9wZW4gZmlsZSBcIiIgPDwgR1RFU1RfRkxBRyhmbGFn
ZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICA8PCAiXCIiOworICB9CisgIHN0ZDo6c3RyaW5n
IGNvbnRlbnRzKFJlYWRFbnRpcmVGaWxlKGZsYWdmaWxlKSk7CisgIHBvc2l4OjpGQ2xvc2UoZmxh
Z2ZpbGUpOworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbGluZXM7CisgIFNwbGl0U3RyaW5n
KGNvbnRlbnRzLCAnXG4nLCAmbGluZXMpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpbmVz
LnNpemUoKTsgKytpKSB7CisgICAgaWYgKGxpbmVzW2ldLmVtcHR5KCkpCisgICAgICBjb250aW51
ZTsKKyAgICBpZiAoIVBhcnNlR29vZ2xlVGVzdEZsYWcobGluZXNbaV0uY19zdHIoKSkpCisgICAg
ICBnX2hlbHBfZmxhZyA9IHRydWU7CisgIH0KK30KKyNlbmRpZiAgLy8gR1RFU1RfVVNFX09XTl9G
TEFHRklMRV9GTEFHXworCiAvLyBQYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IgR29vZ2xlIFRl
c3QgZmxhZ3MsIHdpdGhvdXQgaW5pdGlhbGl6aW5nCiAvLyBvdGhlciBwYXJ0cyBvZiBHb29nbGUg
VGVzdC4gIFRoZSB0eXBlIHBhcmFtZXRlciBDaGFyVHlwZSBjYW4gYmUKIC8vIGluc3RhbnRpYXRl
ZCB0byBlaXRoZXIgY2hhciBvciB3Y2hhcl90LgogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBl
Pgogdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHlJbXBsKGludCogYXJnYywgQ2hhclR5cGUq
KiBhcmd2KSB7CiAgIGZvciAoaW50IGkgPSAxOyBpIDwgKmFyZ2M7IGkrKykgewotICAgIGNvbnN0
IFN0cmluZyBhcmdfc3RyaW5nID0gU3RyZWFtYWJsZVRvU3RyaW5nKGFyZ3ZbaV0pOworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIGFyZ19zdHJpbmcgPSBTdHJlYW1hYmxlVG9TdHJpbmcoYXJndltpXSk7
CiAgICAgY29uc3QgY2hhciogY29uc3QgYXJnID0gYXJnX3N0cmluZy5jX3N0cigpOwogCiAgICAg
dXNpbmcgaW50ZXJuYWw6OlBhcnNlQm9vbEZsYWc7CiAgICAgdXNpbmcgaW50ZXJuYWw6OlBhcnNl
SW50MzJGbGFnOwogICAgIHVzaW5nIGludGVybmFsOjpQYXJzZVN0cmluZ0ZsYWc7CiAKLSAgICAv
LyBEbyB3ZSBzZWUgYSBHb29nbGUgVGVzdCBmbGFnPwotICAgIGlmIChQYXJzZUJvb2xGbGFnKGFy
Zywga0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAmR1RF
U1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cykpIHx8Ci0gICAgICAgIFBhcnNlQm9vbEZs
YWcoYXJnLCBrQnJlYWtPbkZhaWx1cmVGbGFnLAotICAgICAgICAgICAgICAgICAgICAgICZHVEVT
VF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpKSB8fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywg
a0NhdGNoRXhjZXB0aW9uc0ZsYWcsCi0gICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUco
Y2F0Y2hfZXhjZXB0aW9ucykpIHx8Ci0gICAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtDb2xv
ckZsYWcsICZHVEVTVF9GTEFHKGNvbG9yKSkgfHwKLSAgICAgICAgUGFyc2VTdHJpbmdGbGFnKGFy
Zywga0RlYXRoVGVzdFN0eWxlRmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpKSB8fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0Rl
YXRoVGVzdFVzZUZvcmssCi0gICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoZGVhdGhf
dGVzdF91c2VfZm9yaykpIHx8Ci0gICAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtGaWx0ZXJG
bGFnLCAmR1RFU1RfRkxBRyhmaWx0ZXIpKSB8fAotICAgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJn
LCBrSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgJkdU
RVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpKSB8fAotICAgICAgICBQYXJzZUJvb2xG
bGFnKGFyZywga0xpc3RUZXN0c0ZsYWcsICZHVEVTVF9GTEFHKGxpc3RfdGVzdHMpKSB8fAotICAg
ICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrT3V0cHV0RmxhZywgJkdURVNUX0ZMQUcob3V0cHV0
KSkgfHwKLSAgICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtQcmludFRpbWVGbGFnLCAmR1RFU1Rf
RkxBRyhwcmludF90aW1lKSkgfHwKLSAgICAgICAgUGFyc2VJbnQzMkZsYWcoYXJnLCBrUmFuZG9t
U2VlZEZsYWcsICZHVEVTVF9GTEFHKHJhbmRvbV9zZWVkKSkgfHwKLSAgICAgICAgUGFyc2VJbnQz
MkZsYWcoYXJnLCBrUmVwZWF0RmxhZywgJkdURVNUX0ZMQUcocmVwZWF0KSkgfHwKLSAgICAgICAg
UGFyc2VCb29sRmxhZyhhcmcsIGtTaHVmZmxlRmxhZywgJkdURVNUX0ZMQUcoc2h1ZmZsZSkpIHx8
Ci0gICAgICAgIFBhcnNlSW50MzJGbGFnKGFyZywga1N0YWNrVHJhY2VEZXB0aEZsYWcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSkgfHwKLSAg
ICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtUaHJvd09uRmFpbHVyZUZsYWcsICZHVEVTVF9GTEFH
KHRocm93X29uX2ZhaWx1cmUpKQotICAgICAgICApIHsKLSAgICAgIC8vIFllcy4gIFNoaWZ0IHRo
ZSByZW1haW5kZXIgb2YgdGhlIGFyZ3YgbGlzdCBsZWZ0IGJ5IG9uZS4gIE5vdGUKKyAgICBib29s
IHJlbW92ZV9mbGFnID0gZmFsc2U7CisgICAgaWYgKFBhcnNlR29vZ2xlVGVzdEZsYWcoYXJnKSkg
eworICAgICAgcmVtb3ZlX2ZsYWcgPSB0cnVlOworI2lmIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVf
RkxBR18KKyAgICB9IGVsc2UgaWYgKFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtGbGFnZmlsZUZsYWcs
ICZHVEVTVF9GTEFHKGZsYWdmaWxlKSkpIHsKKyAgICAgIExvYWRGbGFnc0Zyb21GaWxlKEdURVNU
X0ZMQUcoZmxhZ2ZpbGUpKTsKKyAgICAgIHJlbW92ZV9mbGFnID0gdHJ1ZTsKKyNlbmRpZiAgLy8g
R1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXworICAgIH0gZWxzZSBpZiAoYXJnX3N0cmluZyA9
PSAiLS1oZWxwIiB8fCBhcmdfc3RyaW5nID09ICItaCIgfHwKKyAgICAgICAgICAgICAgIGFyZ19z
dHJpbmcgPT0gIi0/IiB8fCBhcmdfc3RyaW5nID09ICIvPyIgfHwKKyAgICAgICAgICAgICAgIEhh
c0dvb2dsZVRlc3RGbGFnUHJlZml4KGFyZykpIHsKKyAgICAgIC8vIEJvdGggaGVscCBmbGFnIGFu
ZCB1bnJlY29nbml6ZWQgR29vZ2xlIFRlc3QgZmxhZ3MgKGV4Y2x1ZGluZworICAgICAgLy8gaW50
ZXJuYWwgb25lcykgdHJpZ2dlciBoZWxwIGRpc3BsYXkuCisgICAgICBnX2hlbHBfZmxhZyA9IHRy
dWU7CisgICAgfQorCisgICAgaWYgKHJlbW92ZV9mbGFnKSB7CisgICAgICAvLyBTaGlmdCB0aGUg
cmVtYWluZGVyIG9mIHRoZSBhcmd2IGxpc3QgbGVmdCBieSBvbmUuICBOb3RlCiAgICAgICAvLyB0
aGF0IGFyZ3YgaGFzICgqYXJnYyArIDEpIGVsZW1lbnRzLCB0aGUgbGFzdCBvbmUgYWx3YXlzIGJl
aW5nCiAgICAgICAvLyBOVUxMLiAgVGhlIGZvbGxvd2luZyBsb29wIG1vdmVzIHRoZSB0cmFpbGlu
ZyBOVUxMIGVsZW1lbnQgYXMKICAgICAgIC8vIHdlbGwuCkBAIC00NjI4LDEyICs1ODc5LDYgQEAg
dm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHlJbXBsKGludCogYXJnYywgQ2hhclR5cGUqKiBh
cmd2KSB7CiAgICAgICAvLyBXZSBhbHNvIG5lZWQgdG8gZGVjcmVtZW50IHRoZSBpdGVyYXRvciBh
cyB3ZSBqdXN0IHJlbW92ZWQKICAgICAgIC8vIGFuIGVsZW1lbnQuCiAgICAgICBpLS07Ci0gICAg
fSBlbHNlIGlmIChhcmdfc3RyaW5nID09ICItLWhlbHAiIHx8IGFyZ19zdHJpbmcgPT0gIi1oIiB8
fAotICAgICAgICAgICAgICAgYXJnX3N0cmluZyA9PSAiLT8iIHx8IGFyZ19zdHJpbmcgPT0gIi8/
IiB8fAotICAgICAgICAgICAgICAgSGFzR29vZ2xlVGVzdEZsYWdQcmVmaXgoYXJnKSkgewotICAg
ICAgLy8gQm90aCBoZWxwIGZsYWcgYW5kIHVucmVjb2duaXplZCBHb29nbGUgVGVzdCBmbGFncyAo
ZXhjbHVkaW5nCi0gICAgICAvLyBpbnRlcm5hbCBvbmVzKSB0cmlnZ2VyIGhlbHAgZGlzcGxheS4K
LSAgICAgIGdfaGVscF9mbGFnID0gdHJ1ZTsKICAgICB9CiAgIH0KIApAQCAtNDY0OSw2ICs1ODk0
LDE3IEBAIHZvaWQgUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5SW1wbChpbnQqIGFyZ2MsIENoYXJU
eXBlKiogYXJndikgewogLy8gb3RoZXIgcGFydHMgb2YgR29vZ2xlIFRlc3QuCiB2b2lkIFBhcnNl
R29vZ2xlVGVzdEZsYWdzT25seShpbnQqIGFyZ2MsIGNoYXIqKiBhcmd2KSB7CiAgIFBhcnNlR29v
Z2xlVGVzdEZsYWdzT25seUltcGwoYXJnYywgYXJndik7CisKKyAgLy8gRml4IHRoZSB2YWx1ZSBv
ZiAqX05TR2V0QXJnYygpIG9uIG1hY09TLCBidXQgaWZmCisgIC8vICpfTlNHZXRBcmd2KCkgPT0g
YXJndgorICAvLyBPbmx5IGFwcGxpY2FibGUgdG8gY2hhcioqIHZlcnNpb24gb2YgYXJndgorI2lm
IEdURVNUX09TX01BQworI2lmbmRlZiBHVEVTVF9PU19JT1MKKyAgaWYgKCpfTlNHZXRBcmd2KCkg
PT0gYXJndikgeworICAgICpfTlNHZXRBcmdjKCkgPSAqYXJnYzsKKyAgfQorI2VuZGlmCisjZW5k
aWYKIH0KIHZvaWQgUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5KGludCogYXJnYywgd2NoYXJfdCoq
IGFyZ3YpIHsKICAgUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5SW1wbChhcmdjLCBhcmd2KTsKQEAg
LTQ2NjAsMjEgKzU5MTYsMTkgQEAgdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoaW50KiBh
cmdjLCB3Y2hhcl90KiogYXJndikgewogLy8gd2NoYXJfdC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyVHlwZT4KIHZvaWQgSW5pdEdvb2dsZVRlc3RJbXBsKGludCogYXJnYywgQ2hhclR5cGUqKiBh
cmd2KSB7Ci0gIGdfaW5pdF9ndGVzdF9jb3VudCsrOwotCiAgIC8vIFdlIGRvbid0IHdhbnQgdG8g
cnVuIHRoZSBpbml0aWFsaXphdGlvbiBjb2RlIHR3aWNlLgotICBpZiAoZ19pbml0X2d0ZXN0X2Nv
dW50ICE9IDEpIHJldHVybjsKKyAgaWYgKEdUZXN0SXNJbml0aWFsaXplZCgpKSByZXR1cm47CiAK
ICAgaWYgKCphcmdjIDw9IDApIHJldHVybjsKIAotICBpbnRlcm5hbDo6Z19leGVjdXRhYmxlX3Bh
dGggPSBpbnRlcm5hbDo6U3RyZWFtYWJsZVRvU3RyaW5nKGFyZ3ZbMF0pOwotCi0jaWYgR1RFU1Rf
SEFTX0RFQVRIX1RFU1QKICAgZ19hcmd2cy5jbGVhcigpOwogICBmb3IgKGludCBpID0gMDsgaSAh
PSAqYXJnYzsgaSsrKSB7CiAgICAgZ19hcmd2cy5wdXNoX2JhY2soU3RyZWFtYWJsZVRvU3RyaW5n
KGFyZ3ZbaV0pKTsKICAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisjaWYg
R1RFU1RfSEFTX0FCU0wKKyAgYWJzbDo6SW5pdGlhbGl6ZVN5bWJvbGl6ZXIoZ19hcmd2c1swXS5j
X3N0cigpKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0FCU0wKIAogICBQYXJzZUdvb2dsZVRlc3RG
bGFnc09ubHkoYXJnYywgYXJndik7CiAgIEdldFVuaXRUZXN0SW1wbCgpLT5Qb3N0RmxhZ1BhcnNp
bmdJbml0KCk7CkBAIC00NjkyLDEzICs1OTQ2LDYyIEBAIHZvaWQgSW5pdEdvb2dsZVRlc3RJbXBs
KGludCogYXJnYywgQ2hhclR5cGUqKiBhcmd2KSB7CiAvLwogLy8gQ2FsbGluZyB0aGUgZnVuY3Rp
b24gZm9yIHRoZSBzZWNvbmQgdGltZSBoYXMgbm8gdXNlci12aXNpYmxlIGVmZmVjdC4KIHZvaWQg
SW5pdEdvb2dsZVRlc3QoaW50KiBhcmdjLCBjaGFyKiogYXJndikgeworI2lmIGRlZmluZWQoR1RF
U1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQorICBHVEVTVF9DVVNUT01fSU5J
VF9HT09HTEVfVEVTVF9GVU5DVElPTl8oYXJnYywgYXJndik7CisjZWxzZSAgLy8gZGVmaW5lZChH
VEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8pCiAgIGludGVybmFsOjpJbml0
R29vZ2xlVGVzdEltcGwoYXJnYywgYXJndik7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfQ1VT
VE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQogfQogCiAvLyBUaGlzIG92ZXJsb2FkZWQg
dmVyc2lvbiBjYW4gYmUgdXNlZCBpbiBXaW5kb3dzIHByb2dyYW1zIGNvbXBpbGVkIGluCiAvLyBV
TklDT0RFIG1vZGUuCiB2b2lkIEluaXRHb29nbGVUZXN0KGludCogYXJnYywgd2NoYXJfdCoqIGFy
Z3YpIHsKKyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9O
XykKKyAgR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKGFyZ2MsIGFyZ3Yp
OworI2Vsc2UgIC8vIGRlZmluZWQoR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJ
T05fKQogICBpbnRlcm5hbDo6SW5pdEdvb2dsZVRlc3RJbXBsKGFyZ2MsIGFyZ3YpOworI2VuZGlm
ICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9OXykKK30K
Kworc3RkOjpzdHJpbmcgVGVtcERpcigpIHsKKyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9URU1Q
RElSX0ZVTkNUSU9OXykKKyAgcmV0dXJuIEdURVNUX0NVU1RPTV9URU1QRElSX0ZVTkNUSU9OXygp
OworI2VuZGlmCisKKyNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorICByZXR1cm4gIlxcdGVt
cFxcIjsKKyNlbGlmIEdURVNUX09TX1dJTkRPV1MKKyAgY29uc3QgY2hhciogdGVtcF9kaXIgPSBp
bnRlcm5hbDo6cG9zaXg6OkdldEVudigiVEVNUCIpOworICBpZiAodGVtcF9kaXIgPT0gTlVMTCB8
fCB0ZW1wX2RpclswXSA9PSAnXDAnKQorICAgIHJldHVybiAiXFx0ZW1wXFwiOworICBlbHNlIGlm
ICh0ZW1wX2RpcltzdHJsZW4odGVtcF9kaXIpIC0gMV0gPT0gJ1xcJykKKyAgICByZXR1cm4gdGVt
cF9kaXI7CisgIGVsc2UKKyAgICByZXR1cm4gc3RkOjpzdHJpbmcodGVtcF9kaXIpICsgIlxcIjsK
KyNlbGlmIEdURVNUX09TX0xJTlVYX0FORFJPSUQKKyAgcmV0dXJuICIvc2RjYXJkLyI7CisjZWxz
ZQorICByZXR1cm4gIi90bXAvIjsKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
K30KKworLy8gQ2xhc3MgU2NvcGVkVHJhY2UKKworLy8gUHVzaGVzIHRoZSBnaXZlbiBzb3VyY2Ug
ZmlsZSBsb2NhdGlvbiBhbmQgbWVzc2FnZSBvbnRvIGEgcGVyLXRocmVhZAorLy8gdHJhY2Ugc3Rh
Y2sgbWFpbnRhaW5lZCBieSBHb29nbGUgVGVzdC4KK3ZvaWQgU2NvcGVkVHJhY2U6OlB1c2hUcmFj
ZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgc3RkOjpzdHJpbmcgbWVzc2FnZSkgeworICBp
bnRlcm5hbDo6VHJhY2VJbmZvIHRyYWNlOworICB0cmFjZS5maWxlID0gZmlsZTsKKyAgdHJhY2Uu
bGluZSA9IGxpbmU7CisgIHRyYWNlLm1lc3NhZ2Uuc3dhcChtZXNzYWdlKTsKKworICBVbml0VGVz
dDo6R2V0SW5zdGFuY2UoKS0+UHVzaEdUZXN0VHJhY2UodHJhY2UpOworfQorCisvLyBQb3BzIHRo
ZSBpbmZvIHB1c2hlZCBieSB0aGUgYyd0b3IuCitTY29wZWRUcmFjZTo6flNjb3BlZFRyYWNlKCkK
KyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXygmVW5pdFRlc3Q6Om11dGV4XykgeworICBVbml0VGVz
dDo6R2V0SW5zdGFuY2UoKS0+UG9wR1Rlc3RUcmFjZSgpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ug
dGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0X21h
aW4uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3RfbWFpbi5jYwppbmRleCBk
MjBjMDJmZGZiMGE5NDYxZGNjMmEyNzg5YzQ5MjJiNWIzMDU2MzUyLi4yMTEzZjYyMWU2NTQzMGU1
NTcwZGZiMjAxNTg4NGEyZDRmNGNmMGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zcmMvZ3Rlc3RfbWFpbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMv
Z3Rlc3RfbWFpbi5jYwpAQCAtMjcsMTMgKzI3LDExIEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKLSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotICBzdGQ6OmNvdXQgPDwg
IlJ1bm5pbmcgbWFpbigpIGZyb20gZ3Rlc3RfbWFpbi5jY1xuIjsKKyNpbmNsdWRlIDxzdGRpby5o
PgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKK0dURVNUX0FQSV8gaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIgKiphcmd2KSB7CisgIHByaW50ZigiUnVubmluZyBtYWluKCkgZnJvbSAlc1xuIiwg
X19GSUxFX18pOwogICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CiAgIHJl
dHVybiBSVU5fQUxMX1RFU1RTKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L0JVSUxELmJhemVsIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9CVUlM
RC5iYXplbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hOTMwZDY1ZTA0NDAxNDQ0MTZhZTg4YWIyNzU4ZmQ5MzQwYTA5
MzdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9CVUlM
RC5iYXplbApAQCAtMCwwICsxLDUyNyBAQAorIyBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLgor
IyBBbGwgUmlnaHRzIFJlc2VydmVkLgorIworIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgQXV0aG9y
OiBtaXN0ZXJnQGdvb2dsZS5jb20gKEdlbm5hZGl5IENpdmlsKQorIworIyBCYXplbCBCVUlMRCBm
b3IgVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorCitsaWNl
bnNlcyhbIm5vdGljZSJdKQorCitjb25maWdfc2V0dGluZygKKyAgICBuYW1lID0gIndpbmRvd3Mi
LAorICAgIHZhbHVlcyA9IHsiY3B1IjogIng2NF93aW5kb3dzIn0sCispCisKK2NvbmZpZ19zZXR0
aW5nKAorICAgIG5hbWUgPSAid2luZG93c19tc3ZjIiwKKyAgICB2YWx1ZXMgPSB7ImNwdSI6ICJ4
NjRfd2luZG93c19tc3ZjIn0sCispCisKK2NvbmZpZ19zZXR0aW5nKAorICAgIG5hbWUgPSAiaGFz
X2Fic2wiLAorICAgIHZhbHVlcyA9IHsiZGVmaW5lIjogImFic2w9MSJ9LAorKQorCisjb24gd2lu
ZG93cyBleGNsdWRlIGd0ZXN0LXR1cGxlLmggYW5kIGdvb2dsZXRlc3QtdHVwbGUtdGVzdC5jYwor
Y2NfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0X2FsbF90ZXN0IiwKKyAgICBzaXplID0gInNtYWxs
IiwKKyAgICBzcmNzID0gZ2xvYigKKyAgICAgICAgaW5jbHVkZSA9IFsKKyAgICAgICAgICAgICJn
dGVzdC0qLmNjIiwKKyAgICAgICAgICAgICJnb29nbGV0ZXN0LSouY2MiLAorICAgICAgICAgICAg
IiouaCIsCisgICAgICAgICAgICAiZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0LyoqLyouaCIsCisg
ICAgICAgIF0sCisgICAgICAgIGV4Y2x1ZGUgPSBbCisgICAgICAgICAgICAiZ3Rlc3QtdW5pdHRl
c3QtYXBpX3Rlc3QuY2MiLAorICAgICAgICAgICAgImdvb2dsZXRlc3QtdHVwbGUtdGVzdC5jYyIs
CisgICAgICAgICAgICAiZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtYWxsLmNjIiwKKyAgICAgICAgICAg
ICJndGVzdF9hbGxfdGVzdC5jYyIsCisgICAgICAgICAgICAiZ3Rlc3QtZGVhdGgtdGVzdF9leF90
ZXN0LmNjIiwKKyAgICAgICAgICAgICJndGVzdC1saXN0ZW5lcl90ZXN0LmNjIiwKKyAgICAgICAg
ICAgICJndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYyIsCisgICAgICAgICAgICAiZ29vZ2xldGVz
dC1wYXJhbS10ZXN0LXRlc3QuY2MiLAorICAgICAgICAgICAgImdvb2dsZXRlc3QtY2F0Y2gtZXhj
ZXB0aW9ucy10ZXN0Xy5jYyIsCisgICAgICAgICAgICAiZ29vZ2xldGVzdC1jb2xvci10ZXN0Xy5j
YyIsCisgICAgICAgICAgICAiZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3RfLmNjIiwKKyAgICAgICAg
ICAgICJnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8uY2MiLAorICAgICAgICAgICAgImdvb2ds
ZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8uY2MiLAorICAgICAgICAgICAgICJnb29n
bGV0ZXN0LWxpc3RlbmVyLXRlc3QuY2MiLAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LW91dHB1
dC10ZXN0Xy5jYyIsCisgICAgICAgICAgICAgImdvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVz
dF8uY2MiLAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8uY2MiLAorICAg
ICAgICAgICAgICJnb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdF8uY2MiLAorICAgICAgICAg
ICAgICJnb29nbGV0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYyIsCisgICAgICAgICAgICAgImdv
b2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0IiwKKyAgICAgICAgICAgICAiZ29vZ2xldGVzdC10aHJv
dy1vbi1mYWlsdXJlLXRlc3RfLmNjIiwKKyAgICAgICAgICAgICAiZ29vZ2xldGVzdC1wYXJhbS10
ZXN0LWludmFsaWQtbmFtZTEtdGVzdF8uY2MiLAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LXBh
cmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0Xy5jYyIsCisKKyAgICAgICAgXSwKKyAgICApICsg
c2VsZWN0KHsKKyAgICAgICAgIi8vOndpbmRvd3MiOiBbXSwKKyAgICAgICAgIi8vOndpbmRvd3Nf
bXN2YyI6IFtdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbCisgICAgICAgICAg
ICAiZ29vZ2xldGVzdC10dXBsZS10ZXN0LmNjIiwKKyAgICAgICAgXSwKKyAgICB9KSwKKyAgICBj
b3B0cyA9IHNlbGVjdCh7CisgICAgICAgICIvLzp3aW5kb3dzIjogWyItREdURVNUX1VTRV9PV05f
VFIxX1RVUExFPTAiXSwKKyAgICAgICAgIi8vOndpbmRvd3NfbXN2YyI6IFsiLURHVEVTVF9VU0Vf
T1dOX1RSMV9UVVBMRT0wIl0sCisgICAgICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsiLURH
VEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0xIl0sCisgICAgfSksCisgICAgaW5jbHVkZXMgPSBbCisg
ICAgICAgICJnb29nbGV0ZXN0IiwKKyAgICAgICAgImdvb2dsZXRlc3QvaW5jbHVkZSIsCisgICAg
ICAgICJnb29nbGV0ZXN0L2luY2x1ZGUvaW50ZXJuYWwiLAorICAgICAgICAiZ29vZ2xldGVzdC90
ZXN0IiwKKyAgICBdLAorICAgIGxpbmtvcHRzID0gc2VsZWN0KHsKKyAgICAgICAgIi8vOndpbmRv
d3MiOiBbXSwKKyAgICAgICAgIi8vOndpbmRvd3NfbXN2YyI6IFtdLAorICAgICAgICAiLy9jb25k
aXRpb25zOmRlZmF1bHQiOiBbCisgICAgICAgICAgICAiLXB0aHJlYWQiLAorICAgICAgICBdLAor
ICAgIH0pLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0X21haW4iXSwKKykKKworCisjIFRlc3RzIGRl
YXRoIHRlc3RzLgorY2NfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtZGVhdGgtdGVzdC10
ZXN0IiwKKyAgICBzaXplID0gIm1lZGl1bSIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1kZWF0
aC10ZXN0LXRlc3QuY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdF9tYWluIl0sCispCisKK2Nj
X3Rlc3QoCisgICAgbmFtZSA9ICJndGVzdF90ZXN0X21hY3JvX3N0YWNrX2Zvb3RwcmludF90ZXN0
IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJndGVzdF90ZXN0X21hY3JvX3N0
YWNrX2Zvb3RwcmludF90ZXN0LmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKwor
I1RoZXNlIGdvb2dsZXRlc3QgdGVzdHMgaGF2ZSB0aGVpciBvd24gbWFpbigpCitjY190ZXN0KAor
ICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1saXN0ZW5lci10ZXN0IiwKKyAgICBzaXplID0gInNtYWxs
IiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWxpc3RlbmVyLXRlc3QuY2MiXSwKKyAgICBkZXBz
ID0gWyIvLzpndGVzdF9tYWluIl0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJndGVzdC11
bml0dGVzdC1hcGlfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAg
ICAgICAgImd0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjIiwKKyAgICBdLAorICAgIGRlcHMgPSBb
CisgICAgICAgICIvLzpndGVzdCIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0g
Imdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBz
cmNzID0gWworICAgICAgICAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MiLAorICAgICAg
ICAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuaCIsCisgICAgICAgICJnb29nbGV0ZXN0LXBh
cmFtLXRlc3QyLXRlc3QuY2MiLAorICAgIF0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykK
KworY2NfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0X3VuaXR0ZXN0IiwKKyAgICBzaXplID0gInNt
YWxsIiwKKyAgICBzcmNzID0gWyJndGVzdF91bml0dGVzdC5jYyJdLAorICAgIGFyZ3MgPSBbIi0t
aGVhcF9jaGVjaz1zdHJpY3QiXSwKKyAgICBzaGFyZF9jb3VudCA9IDIsCisgICAgZGVwcyA9IFsi
Ly86Z3Rlc3RfbWFpbiJdLAorKQorCisjICBQeSB0ZXN0cworCitweV9saWJyYXJ5KAorICAgIG5h
bWUgPSAiZ3Rlc3RfdGVzdF91dGlscyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBb
Imd0ZXN0X3Rlc3RfdXRpbHMucHkiXSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ3Rl
c3RfaGVscF90ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImd0ZXN0X2hl
bHBfdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdF9tYWluIl0sCispCisKK3B5X3Rl
c3QoCisgICAgbmFtZSA9ICJndGVzdF9oZWxwX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAor
ICAgIHNyY3MgPSBbImd0ZXN0X2hlbHBfdGVzdC5weSJdLAorICAgIGRhdGEgPSBbIjpndGVzdF9o
ZWxwX3Rlc3RfIl0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworY2Nf
YmluYXJ5KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8iLAorICAgIHRlc3Rv
bmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYyJdLAorICAg
IGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImdv
b2dsZXRlc3Qtb3V0cHV0LXRlc3QucHkiXSwKKyAgICBhcmdzID0gc2VsZWN0KHsKKyAgICAgICAg
IjpoYXNfYWJzbCI6IFtdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi0tbm9f
c3RhY2t0cmFjZV9zdXBwb3J0Il0sCisgICAgfSksCisgICAgZGF0YSA9IFsKKyAgICAgICAgImdv
b2dsZXRlc3Qtb3V0cHV0LXRlc3QtZ29sZGVuLWxpbi50eHQiLAorICAgICAgICAiOmdvb2dsZXRl
c3Qtb3V0cHV0LXRlc3RfIiwKKyAgICBdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxz
Il0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtY29sb3ItdGVzdF8i
LAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWNvbG9yLXRlc3Rf
LmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1l
ID0gImdvb2dsZXRlc3QtY29sb3ItdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3Jj
cyA9IFsiZ29vZ2xldGVzdC1jb2xvci10ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmdvb2dsZXRl
c3QtY29sb3ItdGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQor
CitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWVudi12YXItdGVzdF8iLAorICAg
IHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWVudi12YXItdGVzdF8uY2Mi
XSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAi
Z29vZ2xldGVzdC1lbnYtdmFyLXRlc3QiLAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNz
ID0gWyJnb29nbGV0ZXN0LWVudi12YXItdGVzdC5weSJdLAorICAgIGRhdGEgPSBbIjpnb29nbGV0
ZXN0LWVudi12YXItdGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAor
KQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8i
LAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWZpbHRlci11bml0
dGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAorICAg
IG5hbWUgPSAiZ29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3QiLAorICAgIHNpemUgPSAibWVkaXVt
IiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdC5weSJdLAorICAgIGRh
dGEgPSBbIjpnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rl
c3RfdGVzdF91dGlscyJdLAorKQorCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRl
c3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBz
cmNzID0gWyJnb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3RfLmNjIl0sCisgICAg
ZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29n
bGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAor
ICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdC5weSJdLAor
ICAgIGRhdGEgPSBbIjpnb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3RfIl0sCisg
ICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworCitjY190ZXN0KAorICAgIG5h
bWUgPSAiZ3Rlc3RfYXNzZXJ0X2J5X2V4Y2VwdGlvbl90ZXN0IiwKKyAgICBzaXplID0gInNtYWxs
IiwKKyAgICBzcmNzID0gWyJndGVzdF9hc3NlcnRfYnlfZXhjZXB0aW9uX3Rlc3QuY2MiXSwKKyAg
ICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCisKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAi
Z29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisg
ICAgc3JjcyA9IFsiZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfLmNjIl0sCisgICAg
ZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRl
c3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNz
ID0gWyJnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdC5weSJdLAorICAgIGRhdGEgPSBb
Ijpnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rl
c3RfdGVzdF91dGlscyJdLAorKQorCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRl
c3QtbGlzdC10ZXN0cy11bml0dGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0g
WyJnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86
Z3Rlc3QiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtbGlzdC10ZXN0
cy11bml0dGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVz
dC1saXN0LXRlc3RzLXVuaXR0ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmdvb2dsZXRlc3QtbGlz
dC10ZXN0cy11bml0dGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAor
KQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8iLAor
ICAgIHNyY3MgPSBbImdvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBb
Ii8vOmd0ZXN0Il0sCispCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXNodWZm
bGUtdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1z
aHVmZmxlLXRlc3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z29vZ2xldGVzdC1zaHVmZmxlLXRlc3Rf
Il0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworY2NfYmluYXJ5KAor
ICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLW5vLWV4LXRlc3RfIiwKKyAg
ICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25z
LXRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQorCitjY19iaW5h
cnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtZXgtdGVzdF8iLAor
ICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlv
bnMtdGVzdF8uY2MiXSwKKyAgICBjb3B0cyA9IFsiLWZleGNlcHRpb25zIl0sCisgICAgZGVwcyA9
IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVz
dC1jYXRjaC1leGNlcHRpb25zLXRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3Mg
PSBbImdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsK
KyAgICAgICAgIjpnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtZXgtdGVzdF8iLAorICAgICAg
ICAiOmdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy1uby1leC10ZXN0XyIsCisgICAgXSwKKyAg
ICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFt
ZSA9ICJndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAg
IHNyY3MgPSBbImd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsi
Ly86Z3Rlc3QiXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0X25vX3Rlc3RfdW5p
dHRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImd0ZXN0X25vX3Rlc3Rf
dW5pdHRlc3QuY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAor
ICAgIG5hbWUgPSAiZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdCIsCisgICAgc2l6ZSA9ICJzbWFs
bCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3QucHki
LAorICAgICAgICAiZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkiLAorICAgIF0sCisgICAgYXJncyA9
IHNlbGVjdCh7CisgICAgICAgICI6aGFzX2Fic2wiOiBbXSwKKyAgICAgICAgIi8vY29uZGl0aW9u
czpkZWZhdWx0IjogWyItLW5vX3N0YWNrdHJhY2Vfc3VwcG9ydCJdLAorICAgIH0pLAorICAgIGRh
dGEgPSBbCisgICAgICAgICMgV2UgaW52b2tlIGd0ZXN0X25vX3Rlc3RfdW5pdHRlc3QgdG8gdmVy
aWZ5IHRoZSBYTUwgb3V0cHV0CisgICAgICAgICMgd2hlbiB0aGUgdGVzdCBwcm9ncmFtIGNvbnRh
aW5zIG5vIHRlc3QgZGVmaW5pdGlvbi4KKyAgICAgICAgIjpndGVzdF9ub190ZXN0X3VuaXR0ZXN0
IiwKKyAgICAgICAgIjpndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0XyIsCisgICAgXSwKKyAgICBk
ZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9
ICJndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNz
ID0gWyJndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVz
dF9tYWluIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImd0ZXN0X3htbF9vdXRmaWxl
Ml90ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImd0ZXN0X3htbF9vdXRm
aWxlMl90ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0X21haW4iXSwKKykKKworcHlf
dGVzdCgKKyAgICBuYW1lID0gImd0ZXN0X3htbF9vdXRmaWxlc190ZXN0IiwKKyAgICBzaXplID0g
InNtYWxsIiwKKyAgICBzcmNzID0gWworICAgICAgICAiZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3Qu
cHkiLAorICAgICAgICAiZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkiLAorICAgIF0sCisgICAgZGF0
YSA9IFsKKyAgICAgICAgIjpndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8iLAorICAgICAgICAiOmd0
ZXN0X3htbF9vdXRmaWxlMl90ZXN0XyIsCisgICAgXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVz
dF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXVuaW5p
dGlhbGl6ZWQtdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0
ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAor
KQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3Qi
LAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LXVuaW5pdGlh
bGl6ZWQtdGVzdC5weSJdLAorICAgIGRhdGEgPSBbImdvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10
ZXN0XyJdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK2NjX2JpbmFy
eSgKKyAgICBuYW1lID0gImd0ZXN0X3Rlc3RicmlkZ2VfdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0g
MSwKKyAgICBzcmNzID0gWyJndGVzdF90ZXN0YnJpZGdlX3Rlc3RfLmNjIl0sCisgICAgZGVwcyA9
IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQorCisjIFRlc3RzIHRoYXQgZmlsdGVyaW5nIHZpYSB0ZXN0
YnJpZGdlIHdvcmtzCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ3Rlc3RfdGVzdGJyaWRnZV90ZXN0
IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJndGVzdF90ZXN0YnJpZGdlX3Rl
c3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z3Rlc3RfdGVzdGJyaWRnZV90ZXN0XyJdLAorICAgIGRl
cHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKKworcHlfdGVzdCgKKyAgICBuYW1lID0g
Imdvb2dsZXRlc3QtanNvbi1vdXRmaWxlcy10ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAg
ICBzcmNzID0gWworICAgICAgICAiZ29vZ2xldGVzdC1qc29uLW91dGZpbGVzLXRlc3QucHkiLAor
ICAgICAgICAiZ3Rlc3RfanNvbl90ZXN0X3V0aWxzLnB5IiwKKyAgICBdLAorICAgIGRhdGEgPSBb
CisgICAgICAgICI6Z3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfIiwKKyAgICAgICAgIjpndGVzdF94
bWxfb3V0ZmlsZTJfdGVzdF8iLAorICAgIF0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRp
bHMiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtanNvbi1vdXRwdXQt
dW5pdHRlc3QiLAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNzID0gWworICAgICAgICAi
Z29vZ2xldGVzdC1qc29uLW91dHB1dC11bml0dGVzdC5weSIsCisgICAgICAgICJndGVzdF9qc29u
X3Rlc3RfdXRpbHMucHkiLAorICAgIF0sCisgICAgZGF0YSA9IFsKKyAgICAgICAgIyBXZSBpbnZv
a2UgZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCB0byB2ZXJpZnkgdGhlIEpTT04gb3V0cHV0CisgICAg
ICAgICMgd2hlbiB0aGUgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIG5vIHRlc3QgZGVmaW5pdGlvbi4K
KyAgICAgICAgIjpndGVzdF9ub190ZXN0X3VuaXR0ZXN0IiwKKyAgICAgICAgIjpndGVzdF94bWxf
b3V0cHV0X3VuaXR0ZXN0XyIsCisgICAgXSwKKyAgICBhcmdzID0gc2VsZWN0KHsKKyAgICAgICAg
IjpoYXNfYWJzbCI6IFtdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi0tbm9f
c3RhY2t0cmFjZV9zdXBwb3J0Il0sCisgICAgfSksCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3Rf
dXRpbHMiXSwKKykKKyMgVmVyaWZpZXMgaW50ZXJhY3Rpb24gb2YgZGVhdGggdGVzdHMgYW5kIGV4
Y2VwdGlvbnMuCitjY190ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1kZWF0aC10ZXN0X2V4
X2NhdGNoX3Rlc3QiLAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNzID0gWyJnb29nbGV0
ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gWyItZmV4Y2VwdGlvbnMi
XSwKKyAgICBkZWZpbmVzID0gWyJHVEVTVF9FTkFCTEVfQ0FUQ0hfRVhDRVBUSU9OU189MSJdLAor
ICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdv
b2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3RfIiwKKyAgICB0ZXN0b25seSA9
IDEsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVz
dF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitjY19iaW5hcnkoCisgICAg
bmFtZSA9ICJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0XyIsCisgICAg
dGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlk
LW5hbWUyLXRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworcHlfdGVz
dCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3Qi
LAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtcGFyYW0tdGVz
dC1pbnZhbGlkLW5hbWUxLXRlc3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z29vZ2xldGVzdC1wYXJh
bS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91
dGlscyJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0
LWludmFsaWQtbmFtZTItdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsi
Z29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTItdGVzdC5weSJdLAorICAgIGRhdGEg
PSBbIjpnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0XyJdLAorICAgIGRl
cHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdC5weSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJl
LXVuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1ZGZiYzY5M2I0M2ExYjE5ZTM4NDdkY2JjYWI4ODZk
MmY0ZDI4ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdC5weQpAQCAtMCwwICsxLDIwOCBA
QAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5j
LgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVW5pdCB0
ZXN0IGZvciBHb29nbGUgVGVzdCdzIGJyZWFrLW9uLWZhaWx1cmUgbW9kZS4KKworQSB1c2VyIGNh
biBhc2sgR29vZ2xlIFRlc3QgdG8gc2VnLWZhdWx0IHdoZW4gYW4gYXNzZXJ0aW9uIGZhaWxzLCB1
c2luZworZWl0aGVyIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlh
YmxlIG9yIHRoZQorLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWcuICBUaGlzIHNjcmlwdCB0
ZXN0cyBzdWNoIGZ1bmN0aW9uYWxpdHkKK2J5IGludm9raW5nIGdvb2dsZXRlc3QtYnJlYWstb24t
ZmFpbHVyZS11bml0dGVzdF8gKGEgcHJvZ3JhbSB3cml0dGVuIHdpdGgKK0dvb2dsZSBUZXN0KSB3
aXRoIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgYW5kIGNvbW1hbmQgbGluZSBmbGFncy4KKyIiIgor
CitpbXBvcnQgb3MKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKKyMgQ29uc3RhbnRzLgorCitJ
U19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCisKKyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxl
IGZvciBlbmFibGluZy9kaXNhYmxpbmcgdGhlIGJyZWFrLW9uLWZhaWx1cmUgbW9kZS4KK0JSRUFL
X09OX0ZBSUxVUkVfRU5WX1ZBUiA9ICdHVEVTVF9CUkVBS19PTl9GQUlMVVJFJworCisjIFRoZSBj
b21tYW5kIGxpbmUgZmxhZyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBicmVhay1vbi1mYWls
dXJlIG1vZGUuCitCUkVBS19PTl9GQUlMVVJFX0ZMQUcgPSAnZ3Rlc3RfYnJlYWtfb25fZmFpbHVy
ZScKKworIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0
aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLgorVEhST1dfT05fRkFJTFVSRV9FTlZfVkFSID0gJ0dU
RVNUX1RIUk9XX09OX0ZBSUxVUkUnCisKKyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciBl
bmFibGluZy9kaXNhYmxpbmcgdGhlIGNhdGNoLWV4Y2VwdGlvbnMgbW9kZS4KK0NBVENIX0VYQ0VQ
VElPTlNfRU5WX1ZBUiA9ICdHVEVTVF9DQVRDSF9FWENFUFRJT05TJworCisjIFBhdGggdG8gdGhl
IGdvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8gcHJvZ3JhbS4KK0VYRV9QQVRI
ID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisgICAgJ2dvb2dsZXRl
c3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8nKQorCisKK2Vudmlyb24gPSBndGVzdF90ZXN0
X3V0aWxzLmVudmlyb24KK1NldEVudlZhciA9IGd0ZXN0X3Rlc3RfdXRpbHMuU2V0RW52VmFyCisK
KyMgVGVzdHMgaW4gdGhpcyBmaWxlIHJ1biBhIEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QgcHJvZ3Jh
bSBhbmQgZXhwZWN0IGl0CisjIHRvIHRlcm1pbmF0ZSBwcmVtYXR1cmVseS4gIFRoZXJlZm9yZSB0
aGV5IGFyZSBpbmNvbXBhdGlibGUgd2l0aAorIyB0aGUgcHJlbWF0dXJlLWV4aXQtZmlsZSBwcm90
b2NvbCBieSBkZXNpZ24uICBVbnNldCB0aGUKKyMgcHJlbWF0dXJlLWV4aXQgZmlsZXBhdGggdG8g
cHJldmVudCBHb29nbGUgVGVzdCBmcm9tIGNyZWF0aW5nCisjIHRoZSBmaWxlLgorU2V0RW52VmFy
KGd0ZXN0X3Rlc3RfdXRpbHMuUFJFTUFUVVJFX0VYSVRfRklMRV9FTlZfVkFSLCBOb25lKQorCisK
K2RlZiBSdW4oY29tbWFuZCk6CisgICIiIlJ1bnMgYSBjb21tYW5kOyByZXR1cm5zIDEgaWYgaXQg
d2FzIGtpbGxlZCBieSBhIHNpZ25hbCwgb3IgMCBvdGhlcndpc2UuIiIiCisKKyAgcCA9IGd0ZXN0
X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kLCBlbnY9ZW52aXJvbikKKyAgaWYgcC50ZXJt
aW5hdGVkX2J5X3NpZ25hbDoKKyAgICByZXR1cm4gMQorICBlbHNlOgorICAgIHJldHVybiAwCisK
KworIyBUaGUgdGVzdHMuCisKKworY2xhc3MgR1Rlc3RCcmVha09uRmFpbHVyZVVuaXRUZXN0KGd0
ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJUZXN0cyB1c2luZyB0aGUgR1RFU1RfQlJF
QUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBvcgorICB0aGUgLS1ndGVzdF9icmVh
a19vbl9mYWlsdXJlIGZsYWcgdG8gdHVybiBhc3NlcnRpb24gZmFpbHVyZXMgaW50bworICBzZWdt
ZW50YXRpb24gZmF1bHRzLgorICAiIiIKKworICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGVudl92
YXJfdmFsdWUsIGZsYWdfdmFsdWUsIGV4cGVjdF9zZWdfZmF1bHQpOgorICAgICIiIlJ1bnMgZ29v
Z2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0XyBhbmQgdmVyaWZpZXMgdGhhdCBpdCBk
b2VzCisgICAgKG9yIGRvZXMgbm90KSBoYXZlIGEgc2VnLWZhdWx0LgorCisgICAgQXJnczoKKyAg
ICAgIGVudl92YXJfdmFsdWU6ICAgIHZhbHVlIG9mIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJF
IGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZTsgTm9uZSBpZiB0
aGUgdmFyaWFibGUgc2hvdWxkIGJlIHVuc2V0LgorICAgICAgZmxhZ192YWx1ZTogICAgICAgdmFs
dWUgb2YgdGhlIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnOworICAgICAgICAgICAgICAg
ICAgICAgICAgTm9uZSBpZiB0aGUgZmxhZyBzaG91bGQgbm90IGJlIHByZXNlbnQuCisgICAgICBl
eHBlY3Rfc2VnX2ZhdWx0OiAxIGlmIHRoZSBwcm9ncmFtIGlzIGV4cGVjdGVkIHRvIGdlbmVyYXRl
IGEgc2VnLWZhdWx0OworICAgICAgICAgICAgICAgICAgICAgICAgMCBvdGhlcndpc2UuCisgICAg
IiIiCisKKyAgICBTZXRFbnZWYXIoQlJFQUtfT05fRkFJTFVSRV9FTlZfVkFSLCBlbnZfdmFyX3Zh
bHVlKQorCisgICAgaWYgZW52X3Zhcl92YWx1ZSBpcyBOb25lOgorICAgICAgZW52X3Zhcl92YWx1
ZV9tc2cgPSAnIGlzIG5vdCBzZXQnCisgICAgZWxzZToKKyAgICAgIGVudl92YXJfdmFsdWVfbXNn
ID0gJz0nICsgZW52X3Zhcl92YWx1ZQorCisgICAgaWYgZmxhZ192YWx1ZSBpcyBOb25lOgorICAg
ICAgZmxhZyA9ICcnCisgICAgZWxpZiBmbGFnX3ZhbHVlID09ICcwJzoKKyAgICAgIGZsYWcgPSAn
LS0lcz0wJyAlIEJSRUFLX09OX0ZBSUxVUkVfRkxBRworICAgIGVsc2U6CisgICAgICBmbGFnID0g
Jy0tJXMnICUgQlJFQUtfT05fRkFJTFVSRV9GTEFHCisKKyAgICBjb21tYW5kID0gW0VYRV9QQVRI
XQorICAgIGlmIGZsYWc6CisgICAgICBjb21tYW5kLmFwcGVuZChmbGFnKQorCisgICAgaWYgZXhw
ZWN0X3NlZ19mYXVsdDoKKyAgICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxkJworICAgIGVsc2U6
CisgICAgICBzaG91bGRfb3Jfbm90ID0gJ3Nob3VsZCBub3QnCisKKyAgICBoYXNfc2VnX2ZhdWx0
ID0gUnVuKGNvbW1hbmQpCisKKyAgICBTZXRFbnZWYXIoQlJFQUtfT05fRkFJTFVSRV9FTlZfVkFS
LCBOb25lKQorCisgICAgbXNnID0gKCd3aGVuICVzJXMsIGFuIGFzc2VydGlvbiBmYWlsdXJlIGlu
ICIlcyIgJXMgY2F1c2UgYSBzZWctZmF1bHQuJyAlCisgICAgICAgICAgIChCUkVBS19PTl9GQUlM
VVJFX0VOVl9WQVIsIGVudl92YXJfdmFsdWVfbXNnLCAnICcuam9pbihjb21tYW5kKSwKKyAgICAg
ICAgICAgIHNob3VsZF9vcl9ub3QpKQorICAgIHNlbGYuYXNzZXJ0XyhoYXNfc2VnX2ZhdWx0ID09
IGV4cGVjdF9zZWdfZmF1bHQsIG1zZykKKworICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcihzZWxm
KToKKyAgICAiIiJUZXN0cyB0aGUgYmVoYXZpb3Igb2YgdGhlIGRlZmF1bHQgbW9kZS4iIiIKKwor
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3Nl
Z19mYXVsdD0wKQorCisgIGRlZiB0ZXN0RW52VmFyKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5n
IHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlhYmxlLiIiIgorCisg
ICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ192YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdf
ZmF1bHQ9MCkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKKyAgICAg
ICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0X3NlZ19mYXVsdD0xKQorCisgIGRlZiB0ZXN0RmxhZyhzZWxmKToKKyAgICAiIiJUZXN0
cyB1c2luZyB0aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWcuIiIiCisKKyAgICBzZWxm
LlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ192YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0w
KQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAg
ICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rf
c2VnX2ZhdWx0PTEpCisKKyAgZGVmIHRlc3RGbGFnT3ZlcnJpZGVzRW52VmFyKHNlbGYpOgorICAg
ICIiIlRlc3RzIHRoYXQgdGhlIGZsYWcgb3ZlcnJpZGVzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJs
ZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAorICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIGV4
cGVjdF9zZWdfZmF1bHQ9MCkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScw
JywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAg
ICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zh
cl92YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCisgICAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0wKQorICAgIHNlbGYuUnVuQW5kVmVy
aWZ5KGVudl92YXJfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9
JzEnLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKKworICBkZWYg
dGVzdEJyZWFrT25GYWlsdXJlT3ZlcnJpZGVzVGhyb3dPbkZhaWx1cmUoc2VsZik6CisgICAgIiIi
VGVzdHMgdGhhdCBndGVzdF9icmVha19vbl9mYWlsdXJlIG92ZXJyaWRlcyBndGVzdF90aHJvd19v
bl9mYWlsdXJlLiIiIgorCisgICAgU2V0RW52VmFyKFRIUk9XX09OX0ZBSUxVUkVfRU5WX1ZBUiwg
JzEnKQorICAgIHRyeToKKyAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0xKQorICAgIGZpbmFsbHk6CisgICAgICBTZXRF
bnZWYXIoVEhST1dfT05fRkFJTFVSRV9FTlZfVkFSLCBOb25lKQorCisgIGlmIElTX1dJTkRPV1M6
CisgICAgZGVmIHRlc3RDYXRjaEV4Y2VwdGlvbnNEb2VzTm90SW50ZXJmZXJlKHNlbGYpOgorICAg
ICAgIiIiVGVzdHMgdGhhdCBndGVzdF9jYXRjaF9leGNlcHRpb25zIGRvZXNuJ3QgaW50ZXJmZXJl
LiIiIgorCisgICAgICBTZXRFbnZWYXIoQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSLCAnMScpCisg
ICAgICB0cnk6CisgICAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0xKQorICAgICAgZmluYWxseToKKyAgICAgICAg
U2V0RW52VmFyKENBVENIX0VYQ0VQVElPTlNfRU5WX1ZBUiwgTm9uZSkKKworCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUt
dW5pdHRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWJy
ZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4NDk1N2EyZDAzYjU2MjYw
YzhlMmMwYWU4ZjVhMjdiZWI2ZjYzNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8uY2MK
QEAgLTAsMCArMSw4NiBAQAorLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCisvLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8g
bWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisKKy8vIFVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyBicmVhay1vbi1mYWlsdXJl
IG1vZGUuCisvLworLy8gQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gc2VnLWZhdWx0IHdo
ZW4gYW4gYXNzZXJ0aW9uIGZhaWxzLCB1c2luZworLy8gZWl0aGVyIHRoZSBHVEVTVF9CUkVBS19P
Tl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQorLy8gLS1ndGVzdF9icmVha19v
bl9mYWlsdXJlIGZsYWcuICBUaGlzIGZpbGUgaXMgdXNlZCBmb3IgdGVzdGluZyBzdWNoCisvLyBm
dW5jdGlvbmFsaXR5LgorLy8KKy8vIFRoaXMgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBh
IFB5dGhvbiB1bml0IHRlc3QuICBJdCBpcworLy8gZXhwZWN0ZWQgdG8gZmFpbC4gIERvbid0IHJ1
biBpdCBkaXJlY3RseS4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpZiBHVEVTVF9P
U19XSU5ET1dTCisjIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyMgaW5jbHVkZSA8c3RkbGliLmg+Cisj
ZW5kaWYKKworbmFtZXNwYWNlIHsKKworLy8gQSB0ZXN0IHRoYXQncyBleHBlY3RlZCB0byBmYWls
LgorVEVTVChGb28sIEJhcikgeworICBFWFBFQ1RfRVEoMiwgMyk7Cit9CisKKyNpZiBHVEVTVF9I
QVNfU0VIICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorLy8gT24gV2luZG93cyBNb2JpbGUg
Z2xvYmFsIGV4Y2VwdGlvbiBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZC4KK0xPTkcgV0lOQVBJ
IEV4aXRXaXRoRXhjZXB0aW9uQ29kZSgKKyAgICBzdHJ1Y3QgX0VYQ0VQVElPTl9QT0lOVEVSUyog
ZXhjZXB0aW9uX3BvaW50ZXJzKSB7CisgIGV4aXQoZXhjZXB0aW9uX3BvaW50ZXJzLT5FeGNlcHRp
b25SZWNvcmQtPkV4Y2VwdGlvbkNvZGUpOworfQorI2VuZGlmCisKK30gIC8vIG5hbWVzcGFjZQor
CitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyNpZiBHVEVTVF9PU19XSU5ET1dT
CisgIC8vIFN1cHByZXNzZXMgZGlzcGxheSBvZiB0aGUgV2luZG93cyBlcnJvciBkaWFsb2cgdXBv
biBlbmNvdW50ZXJpbmcKKyAgLy8gYSBnZW5lcmFsIHByb3RlY3Rpb24gZmF1bHQgKHNlZ21lbnQg
dmlvbGF0aW9uKS4KKyAgU2V0RXJyb3JNb2RlKFNFTV9OT0dQRkFVTFRFUlJPUkJPWCB8IFNFTV9G
QUlMQ1JJVElDQUxFUlJPUlMpOworCisjIGlmIEdURVNUX0hBU19TRUggJiYgIUdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCisKKyAgLy8gVGhlIGRlZmF1bHQgdW5oYW5kbGVkIGV4Y2VwdGlvbiBmaWx0
ZXIgZG9lcyBub3QgYWx3YXlzIGV4aXQKKyAgLy8gd2l0aCB0aGUgZXhjZXB0aW9uIGNvZGUgYXMg
ZXhpdCBjb2RlIC0gZm9yIGV4YW1wbGUgaXQgZXhpdHMgd2l0aAorICAvLyAwIGZvciBFWENFUFRJ
T05fQUNDRVNTX1ZJT0xBVElPTiBhbmQgMSBmb3IgRVhDRVBUSU9OX0JSRUFLUE9JTlQKKyAgLy8g
aWYgdGhlIGFwcGxpY2F0aW9uIGlzIGNvbXBpbGVkIGluIGRlYnVnIG1vZGUuIFRodXMgd2UgdXNl
IG91ciBvd24KKyAgLy8gZmlsdGVyIHdoaWNoIGFsd2F5cyBleGl0cyB3aXRoIHRoZSBleGNlcHRp
b24gY29kZSBmb3IgdW5oYW5kbGVkCisgIC8vIGV4Y2VwdGlvbnMuCisgIFNldFVuaGFuZGxlZEV4
Y2VwdGlvbkZpbHRlcihFeGl0V2l0aEV4Y2VwdGlvbkNvZGUpOworCisjIGVuZGlmCisjZW5kaWYg
IC8vIEdURVNUX09TX1dJTkRPV1MKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFy
Z3YpOworCisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0LnB5
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlv
bnMtdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZDQ5YzEwMjNjNTBlZjE2ODMzZTZiOGUyYThlNjIwMjQ4
NDMyYWMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
b29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdC5weQpAQCAtMCwwICsxLDIzMyBAQAorIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDEwIEdvb2dsZSBJbmMuICBBbGwg
UmlnaHRzIFJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6
CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVGVzdHMgR29vZ2xlIFRl
c3QncyBleGNlcHRpb24gY2F0Y2hpbmcgYmVoYXZpb3IuCisKK1RoaXMgc2NyaXB0IGludm9rZXMg
Z29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3RfIGFuZAorZ29vZ2xldGVzdC1jYXRjaC1l
eGNlcHRpb25zLWV4LXRlc3RfIChwcm9ncmFtcyB3cml0dGVuIHdpdGgKK0dvb2dsZSBUZXN0KSBh
bmQgdmVyaWZpZXMgdGhlaXIgb3V0cHV0LgorIiIiCisKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxz
CisKKyMgQ29uc3RhbnRzLgorRkxBR19QUkVGSVggPSAnLS1ndGVzdF8nCitMSVNUX1RFU1RTX0ZM
QUcgPSBGTEFHX1BSRUZJWCArICdsaXN0X3Rlc3RzJworTk9fQ0FUQ0hfRVhDRVBUSU9OU19GTEFH
ID0gRkxBR19QUkVGSVggKyAnY2F0Y2hfZXhjZXB0aW9ucz0wJworRklMVEVSX0ZMQUcgPSBGTEFH
X1BSRUZJWCArICdmaWx0ZXInCisKKyMgUGF0aCB0byB0aGUgZ29vZ2xldGVzdC1jYXRjaC1leGNl
cHRpb25zLWV4LXRlc3RfIGJpbmFyeSwgY29tcGlsZWQgd2l0aAorIyBleGNlcHRpb25zIGVuYWJs
ZWQuCitFWF9FWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRo
KAorICAgICdnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtZXgtdGVzdF8nKQorCisjIFBhdGgg
dG8gdGhlIGdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0XyBiaW5hcnksIGNvbXBpbGVk
IHdpdGgKKyMgZXhjZXB0aW9ucyBkaXNhYmxlZC4KK0VYRV9QQVRIID0gZ3Rlc3RfdGVzdF91dGls
cy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisgICAgJ2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9u
cy1uby1leC10ZXN0XycpCisKK2Vudmlyb24gPSBndGVzdF90ZXN0X3V0aWxzLmVudmlyb24KK1Nl
dEVudlZhciA9IGd0ZXN0X3Rlc3RfdXRpbHMuU2V0RW52VmFyCisKKyMgVGVzdHMgaW4gdGhpcyBm
aWxlIHJ1biBhIEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QgcHJvZ3JhbSBhbmQgZXhwZWN0IGl0Cisj
IHRvIHRlcm1pbmF0ZSBwcmVtYXR1cmVseS4gIFRoZXJlZm9yZSB0aGV5IGFyZSBpbmNvbXBhdGli
bGUgd2l0aAorIyB0aGUgcHJlbWF0dXJlLWV4aXQtZmlsZSBwcm90b2NvbCBieSBkZXNpZ24uICBV
bnNldCB0aGUKKyMgcHJlbWF0dXJlLWV4aXQgZmlsZXBhdGggdG8gcHJldmVudCBHb29nbGUgVGVz
dCBmcm9tIGNyZWF0aW5nCisjIHRoZSBmaWxlLgorU2V0RW52VmFyKGd0ZXN0X3Rlc3RfdXRpbHMu
UFJFTUFUVVJFX0VYSVRfRklMRV9FTlZfVkFSLCBOb25lKQorCitURVNUX0xJU1QgPSBndGVzdF90
ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgW0VYRV9QQVRILCBMSVNUX1RFU1RTX0ZMQUddLCBl
bnY9ZW52aXJvbikub3V0cHV0CisKK1NVUFBPUlRTX1NFSF9FWENFUFRJT05TID0gJ1Rocm93c1Nl
aEV4Y2VwdGlvbicgaW4gVEVTVF9MSVNUCisKK2lmIFNVUFBPUlRTX1NFSF9FWENFUFRJT05TOgor
ICBCSU5BUllfT1VUUFVUID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtFWEVfUEFUSF0s
IGVudj1lbnZpcm9uKS5vdXRwdXQKKworRVhfQklOQVJZX09VVFBVVCA9IGd0ZXN0X3Rlc3RfdXRp
bHMuU3VicHJvY2VzcygKKyAgICBbRVhfRVhFX1BBVEhdLCBlbnY9ZW52aXJvbikub3V0cHV0CisK
KworIyBUaGUgdGVzdHMuCitpZiBTVVBQT1JUU19TRUhfRVhDRVBUSU9OUzoKKyAgIyBweWxpbnQ6
ZGlzYWJsZS1tc2c9QzYzMDIKKyAgY2xhc3MgQ2F0Y2hTZWhFeGNlcHRpb25zVGVzdChndGVzdF90
ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBleGNlcHRpb24tY2F0Y2hpbmcgYmVo
YXZpb3IuIiIiCisKKworICAgIGRlZiBUZXN0U2VoRXhjZXB0aW9ucyhzZWxmLCB0ZXN0X291dHB1
dCk6CisgICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhy
b3duICcKKyAgICAgICAgICAgICAgICAgICAnaW4gdGhlIHRlc3QgZml4dHVyZVwncyBjb25zdHJ1
Y3RvcicKKyAgICAgICAgICAgICAgICAgICBpbiB0ZXN0X291dHB1dCkKKyAgICAgIHNlbGYuYXNz
ZXJ0XygnU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24gJworICAgICAgICAgICAg
ICAgICAgICdpbiB0aGUgdGVzdCBmaXh0dXJlXCdzIGRlc3RydWN0b3InCisgICAgICAgICAgICAg
ICAgICAgaW4gdGVzdF9vdXRwdXQpCisgICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24g
d2l0aCBjb2RlIDB4MmEgdGhyb3duIGluIFNldFVwVGVzdENhc2UoKScKKyAgICAgICAgICAgICAg
ICAgICBpbiB0ZXN0X291dHB1dCkKKyAgICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3
aXRoIGNvZGUgMHgyYSB0aHJvd24gaW4gVGVhckRvd25UZXN0Q2FzZSgpJworICAgICAgICAgICAg
ICAgICAgIGluIHRlc3Rfb3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9u
IHdpdGggY29kZSAweDJhIHRocm93biBpbiBTZXRVcCgpJworICAgICAgICAgICAgICAgICAgIGlu
IHRlc3Rfb3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGggY29k
ZSAweDJhIHRocm93biBpbiBUZWFyRG93bigpJworICAgICAgICAgICAgICAgICAgIGluIHRlc3Rf
b3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGggY29kZSAweDJh
IHRocm93biBpbiB0aGUgdGVzdCBib2R5JworICAgICAgICAgICAgICAgICAgIGluIHRlc3Rfb3V0
cHV0KQorCisgICAgZGVmIHRlc3RDYXRjaGVzU2VoRXhjZXB0aW9uc1dpdGhDeHhFeGNlcHRpb25z
RW5hYmxlZChzZWxmKToKKyAgICAgIHNlbGYuVGVzdFNlaEV4Y2VwdGlvbnMoRVhfQklOQVJZX09V
VFBVVCkKKworICAgIGRlZiB0ZXN0Q2F0Y2hlc1NlaEV4Y2VwdGlvbnNXaXRoQ3h4RXhjZXB0aW9u
c0Rpc2FibGVkKHNlbGYpOgorICAgICAgc2VsZi5UZXN0U2VoRXhjZXB0aW9ucyhCSU5BUllfT1VU
UFVUKQorCisKK2NsYXNzIENhdGNoQ3h4RXhjZXB0aW9uc1Rlc3QoZ3Rlc3RfdGVzdF91dGlscy5U
ZXN0Q2FzZSk6CisgICIiIlRlc3RzIEMrKyBleGNlcHRpb24tY2F0Y2hpbmcgYmVoYXZpb3IuCisK
KyAgICAgVGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UgdmVyaWZ5IHRoYXQ6CisgICAgICogQysrIGV4
Y2VwdGlvbnMgYXJlIGNhdWdodCBhbmQgbG9nZ2VkIGFzIEMrKyAobm90IFNFSCkgZXhjZXB0aW9u
cworICAgICAqIEV4Y2VwdGlvbiB0aHJvd24gYWZmZWN0IHRoZSByZW1haW5kZXIgb2YgdGhlIHRl
c3Qgd29yayBmbG93IGluIHRoZQorICAgICAgIGV4cGVjdGVkIG1hbm5lci4KKyAgIiIiCisKKyAg
ZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luRml4dHVyZUNvbnN0cnVjdG9yKHNlbGYpOgor
ICAgIHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICcKKyAgICAg
ICAgICAgICAgICAgJyJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIiB0aHJvd24gJworICAgICAgICAg
ICAgICAgICAnaW4gdGhlIHRlc3QgZml4dHVyZVwncyBjb25zdHJ1Y3RvcicKKyAgICAgICAgICAg
ICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ3VuZXhwZWN0ZWQn
IG5vdCBpbiBFWF9CSU5BUllfT1VUUFVULAorICAgICAgICAgICAgICAgICAnVGhpcyBmYWlsdXJl
IGJlbG9uZ3MgaW4gdGhpcyB0ZXN0IG9ubHkgaWYgJworICAgICAgICAgICAgICAgICAnIkN4eEV4
Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0IiAobm8gcXVvdGVzKSAnCisgICAgICAgICAgICAgICAg
ICdhcHBlYXJzIG9uIHRoZSBzYW1lIGxpbmUgYXMgd29yZHMgImNhbGxlZCB1bmV4cGVjdGVkbHki
JykKKworICBpZiAoJ0N4eEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3QuVGhyb3dzRXhjZXB0aW9u
SW5EZXN0cnVjdG9yJyBpbgorICAgICAgRVhfQklOQVJZX09VVFBVVCk6CisKKyAgICBkZWYgdGVz
dENhdGNoZXNDeHhFeGNlcHRpb25zSW5GaXh0dXJlRGVzdHJ1Y3RvcihzZWxmKToKKyAgICAgIHNl
bGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICcKKyAgICAgICAgICAg
ICAgICAgICAnIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iIHRocm93biAnCisgICAgICAgICAgICAg
ICAgICAgJ2luIHRoZSB0ZXN0IGZpeHR1cmVcJ3MgZGVzdHJ1Y3RvcicKKyAgICAgICAgICAgICAg
ICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRp
b25JbkRlc3RydWN0b3JUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgJworICAgICAgICAgICAgICAg
ICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFS
WV9PVVRQVVQpCisKKyAgZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luU2V0VXBUZXN0Q2Fz
ZShzZWxmKToKKyAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlv
biAiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiInCisgICAgICAgICAgICAgICAgICcgdGhyb3duIGlu
IFNldFVwVGVzdENhc2UoKScKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkK
KyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0OjpUZWFyRG93
blRlc3RDYXNlKCkgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAg
ICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4
eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgY29uc3RydWN0b3IgJworICAgICAgICAgICAg
ICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZ
X09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRl
c3QgZGVzdHJ1Y3RvciAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJwor
ICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0Xygn
Q3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6U2V0VXAoKSAnCisgICAgICAgICAgICAg
ICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllf
T1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVz
dDo6VGVhckRvd24oKSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJwor
ICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0Xygn
Q3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCB0ZXN0IGJvZHkgJworICAgICAgICAgICAg
ICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZ
X09VVFBVVCkKKworICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5UZWFyRG93blRlc3RD
YXNlKHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0
aW9uICJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIicKKyAgICAgICAgICAgICAgICAgJyB0aHJvd24g
aW4gVGVhckRvd25UZXN0Q2FzZSgpJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VU
UFVUKQorCisgIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJblNldFVwKHNlbGYpOgorICAg
IHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICJTdGFuZGFyZCBD
KysgZXhjZXB0aW9uIicKKyAgICAgICAgICAgICAgICAgJyB0aHJvd24gaW4gU2V0VXAoKScKKyAg
ICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4
eEV4Y2VwdGlvbkluU2V0VXBUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgJworICAgICAgICAgICAg
ICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZ
X09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0IGRlc3Ry
dWN0b3IgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAg
ICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2Vw
dGlvbkluU2V0VXBUZXN0OjpUZWFyRG93bigpICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBh
cyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAg
c2VsZi5hc3NlcnRfKCd1bmV4cGVjdGVkJyBub3QgaW4gRVhfQklOQVJZX09VVFBVVCwKKyAgICAg
ICAgICAgICAgICAgJ1RoaXMgZmFpbHVyZSBiZWxvbmdzIGluIHRoaXMgdGVzdCBvbmx5IGlmICcK
KyAgICAgICAgICAgICAgICAgJyJDeHhFeGNlcHRpb25JblNldFVwVGVzdCIgKG5vIHF1b3Rlcykg
JworICAgICAgICAgICAgICAgICAnYXBwZWFycyBvbiB0aGUgc2FtZSBsaW5lIGFzIHdvcmRzICJj
YWxsZWQgdW5leHBlY3RlZGx5IicpCisKKyAgZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0lu
VGVhckRvd24oc2VsZik6CisgICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVz
Y3JpcHRpb24gIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iJworICAgICAgICAgICAgICAgICAnIHRo
cm93biBpbiBUZWFyRG93bigpJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVU
KQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3Q6OlRlYXJEb3du
VGVzdENhc2UoKSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAg
ICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4
RXhjZXB0aW9uSW5UZWFyRG93blRlc3QgZGVzdHJ1Y3RvciAnCisgICAgICAgICAgICAgICAgICdj
YWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVU
KQorCisgIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJblRlc3RCb2R5KHNlbGYpOgorICAg
IHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICJTdGFuZGFyZCBD
KysgZXhjZXB0aW9uIicKKyAgICAgICAgICAgICAgICAgJyB0aHJvd24gaW4gdGhlIHRlc3QgYm9k
eScKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2Vy
dF8oJ0N4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgJworICAg
ICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4g
RVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluVGVzdEJv
ZHlUZXN0IGRlc3RydWN0b3IgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVk
LicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2Vy
dF8oJ0N4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0OjpUZWFyRG93bigpICcKKyAgICAgICAgICAg
ICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFS
WV9PVVRQVVQpCisKKyAgZGVmIHRlc3RDYXRjaGVzTm9uU3RkQ3h4RXhjZXB0aW9ucyhzZWxmKToK
KyAgICBzZWxmLmFzc2VydF8oJ1Vua25vd24gQysrIGV4Y2VwdGlvbiB0aHJvd24gaW4gdGhlIHRl
c3QgYm9keScKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKworICBkZWYg
dGVzdFVuaGFuZGxlZEN4eEV4Y2VwdGlvbnNBYm9ydFRoZVByb2dyYW0oc2VsZik6CisgICAgIyBG
aWx0ZXJzIG91dCBTRUggZXhjZXB0aW9uIHRlc3RzIG9uIFdpbmRvd3MuIFVuaGFuZGxlZCBTRUgg
ZXhjZXB0aW9ucworICAgICMgY2F1c2UgdGVzdHMgdG8gc2hvdyBwb3AtdXAgd2luZG93cyB0aGVy
ZS4KKyAgICBGSVRMRVJfT1VUX1NFSF9URVNUU19GTEFHID0gRklMVEVSX0ZMQUcgKyAnPS0qU2Vo
KicKKyAgICAjIEJ5IGRlZmF1bHQsIEdvb2dsZSBUZXN0IGRvZXNuJ3QgY2F0Y2ggdGhlIGV4Y2Vw
dGlvbnMuCisgICAgdW5jYXVnaHRfZXhjZXB0aW9uc19leF9iaW5hcnlfb3V0cHV0ID0gZ3Rlc3Rf
dGVzdF91dGlscy5TdWJwcm9jZXNzKAorICAgICAgICBbRVhfRVhFX1BBVEgsCisgICAgICAgICBO
T19DQVRDSF9FWENFUFRJT05TX0ZMQUcsCisgICAgICAgICBGSVRMRVJfT1VUX1NFSF9URVNUU19G
TEFHXSwKKyAgICAgICAgZW52PWVudmlyb24pLm91dHB1dAorCisgICAgc2VsZi5hc3NlcnRfKCdV
bmhhbmRsZWQgQysrIGV4Y2VwdGlvbiB0ZXJtaW5hdGluZyB0aGUgcHJvZ3JhbScKKyAgICAgICAg
ICAgICAgICAgaW4gdW5jYXVnaHRfZXhjZXB0aW9uc19leF9iaW5hcnlfb3V0cHV0KQorICAgIHNl
bGYuYXNzZXJ0XygndW5leHBlY3RlZCcgbm90IGluIHVuY2F1Z2h0X2V4Y2VwdGlvbnNfZXhfYmlu
YXJ5X291dHB1dCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0
X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
b29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0Xy5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wOWRhZTcwMDMwYTMzYWVhYmEwNjBhYWVmOTdhOTc5YThmNTgwNGFlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNhdGNoLWV4Y2Vw
dGlvbnMtdGVzdF8uY2MKQEAgLTAsMCArMSwzMTEgQEAKKy8vIENvcHlyaWdodCAyMDEwLCBHb29n
bGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8KKy8vIFRlc3RzIGZvciBHb29nbGUgVGVzdCBpdHNl
bGYuIFRlc3RzIGluIHRoaXMgZmlsZSB0aHJvdyBDKysgb3IgU0VICisvLyBleGNlcHRpb25zLCBh
bmQgdGhlIG91dHB1dCBpcyB2ZXJpZmllZCBieQorLy8gZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRp
b25zLXRlc3QucHkuCisKKyNpbmNsdWRlIDxzdGRpby5oPiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8
c3RkbGliLmg+ICAvLyBGb3IgZXhpdCgpLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKwor
I2lmIEdURVNUX0hBU19TRUgKKyMgaW5jbHVkZSA8d2luZG93cy5oPgorI2VuZGlmCisKKyNpZiBH
VEVTVF9IQVNfRVhDRVBUSU9OUworIyBpbmNsdWRlIDxleGNlcHRpb24+ICAvLyBGb3Igc2V0X3Rl
cm1pbmF0ZSgpLgorIyBpbmNsdWRlIDxzdGRleGNlcHQ+CisjZW5kaWYKKwordXNpbmcgdGVzdGlu
Zzo6VGVzdDsKKworI2lmIEdURVNUX0hBU19TRUgKKworY2xhc3MgU2VoRXhjZXB0aW9uSW5Db25z
dHJ1Y3RvclRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBTZWhFeGNlcHRpb25JbkNv
bnN0cnVjdG9yVGVzdCgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9Owor
CitURVNUX0YoU2VoRXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QsIFRocm93c0V4Y2VwdGlvbklu
Q29uc3RydWN0b3IpIHt9CisKK2NsYXNzIFNlaEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3QgOiBw
dWJsaWMgVGVzdCB7CisgcHVibGljOgorICB+U2VoRXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCgp
IHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhj
ZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5EZXN0cnVjdG9yKSB7fQor
CitjbGFzcyBTZWhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0IDogcHVibGljIFRlc3Qgewor
IHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsgUmFpc2VFeGNlcHRpb24o
NDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhjZXB0aW9uSW5TZXRVcFRlc3RD
YXNlVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlKSB7fQorCitjbGFzcyBTZWhF
eGNlcHRpb25JblRlYXJEb3duVGVzdENhc2VUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoK
KyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAs
IDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNl
VGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNlKSB7fQorCitjbGFzcyBTZWhF
eGNlcHRpb25JblNldFVwVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9Owor
CitURVNUX0YoU2VoRXhjZXB0aW9uSW5TZXRVcFRlc3QsIFRocm93c0V4Y2VwdGlvbkluU2V0VXAp
IHt9CisKK2NsYXNzIFNlaEV4Y2VwdGlvbkluVGVhckRvd25UZXN0IDogcHVibGljIFRlc3Qgewor
IHByb3RlY3RlZDoKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeyBSYWlzZUV4Y2VwdGlvbig0
MiwgMCwgMCwgTlVMTCk7IH0KK307CisKK1RFU1RfRihTZWhFeGNlcHRpb25JblRlYXJEb3duVGVz
dCwgVGhyb3dzRXhjZXB0aW9uSW5UZWFyRG93bikge30KKworVEVTVChTZWhFeGNlcHRpb25UZXN0
LCBUaHJvd3NTZWhFeGNlcHRpb24pIHsKKyAgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwp
OworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKKworI2lmIEdURVNUX0hBU19FWENFUFRJ
T05TCisKK2NsYXNzIEN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0IDogcHVibGljIFRlc3Qg
eworIHB1YmxpYzoKKyAgQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QoKSB7CisgICAgLy8g
V2l0aG91dCB0aGlzIG1hY3JvIFZDKysgY29tcGxhaW5zIGFib3V0IHVucmVhY2hhYmxlIGNvZGUg
YXQgdGhlIGVuZCBvZgorICAgIC8vIHRoZSBjb25zdHJ1Y3Rvci4KKyAgICBHVEVTVF9TVVBQUkVT
U19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKAorICAgICAgICB0aHJvdyBzdGQ6OnJ1
bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iKSk7CisgIH0KKworICBzdGF0aWMg
dm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAi
Q3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCisgICAg
ICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICB+
Q3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QoKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAi
Q3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QgZGVzdHJ1Y3RvciAiCisgICAgICAgICAgICAg
ICAgICA8PCAiY2FsbGVkIHVuZXhwZWN0ZWRseS4iOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNl
dFVwKCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JU
ZXN0OjpTZXRVcCgpICIKKyAgICAgICAgICAgICAgICAgIDw8ICJjYWxsZWQgdW5leHBlY3RlZGx5
LiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgQUREX0ZBSUxVUkUo
KSA8PCAiQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Q6OlRlYXJEb3duKCkgIgorICAgICAg
ICAgICAgICAgICAgPDwgImNhbGxlZCB1bmV4cGVjdGVkbHkuIjsKKyAgfQorfTsKKworVEVTVF9G
KEN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0LCBUaHJvd3NFeGNlcHRpb25JbkNvbnN0cnVj
dG9yKSB7CisgIEFERF9GQUlMVVJFKCkgPDwgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0
IHRlc3QgYm9keSAiCisgICAgICAgICAgICAgICAgPDwgImNhbGxlZCB1bmV4cGVjdGVkbHkuIjsK
K30KKworLy8gRXhjZXB0aW9ucyBpbiBkZXN0cnVjdG9ycyBhcmUgbm90IHN1cHBvcnRlZCBpbiBD
KysxMS4KKyNpZiAhR1RFU1RfTEFOR19DWFgxMQorY2xhc3MgQ3h4RXhjZXB0aW9uSW5EZXN0cnVj
dG9yVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFRlYXJEb3du
VGVzdENhc2UoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25J
bkRlc3RydWN0b3JUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgIgorICAgICAgICAgICAiY2FsbGVk
IGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworIHByb3RlY3RlZDoKKyAgfkN4eEV4Y2VwdGlvbklu
RGVzdHJ1Y3RvclRlc3QoKSB7CisgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9X
QVJOSU5HX0JFTE9XXygKKyAgICAgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFy
ZCBDKysgZXhjZXB0aW9uIikpOworICB9Cit9OworCitURVNUX0YoQ3h4RXhjZXB0aW9uSW5EZXN0
cnVjdG9yVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5EZXN0cnVjdG9yKSB7fQorI2VuZGlmICAvLyBD
KysxMSBtb2RlCisKK2NsYXNzIEN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgOiBwdWJs
aWMgVGVzdCB7CisgcHVibGljOgorICBDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0KCkg
eworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RD
YXNlVGVzdCBjb25zdHJ1Y3RvciAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4i
KTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7CisgICAgdGhyb3cgc3Rk
OjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIik7CisgIH0KKworICBzdGF0
aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAg
ICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIK
KyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyBwcm90ZWN0ZWQ6
CisgIH5DeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0KCkgeworICAgIHByaW50ZigiJXMi
LAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCBkZXN0cnVjdG9y
ICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyAgdmlydHVh
bCB2b2lkIFNldFVwKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0
aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6U2V0VXAoKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMg
ZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBw
cmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3Q6
OlRlYXJEb3duKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0K
K307CisKK1RFU1RfRihDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0LCBUaHJvd3NFeGNl
cHRpb25JblNldFVwVGVzdENhc2UpIHsKKyAgcHJpbnRmKCIlcyIsCisgICAgICAgICAiQ3h4RXhj
ZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCB0ZXN0IGJvZHkgIgorICAgICAgICAgImNhbGxlZCBh
cyBleHBlY3RlZC5cbiIpOworfQorCitjbGFzcyBDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdENh
c2VUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgVGVhckRvd25U
ZXN0Q2FzZSgpIHsKKyAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBl
eGNlcHRpb24iKTsKKyAgfQorfTsKKworVEVTVF9GKEN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0
Q2FzZVRlc3QsIFRocm93c0V4Y2VwdGlvbkluVGVhckRvd25UZXN0Q2FzZSkge30KKworY2xhc3Mg
Q3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBzdGF0
aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAg
ICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCisgICAgICAg
ICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICB+Q3h4
RXhjZXB0aW9uSW5TZXRVcFRlc3QoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJD
eHhFeGNlcHRpb25JblNldFVwVGVzdCBkZXN0cnVjdG9yICIKKyAgICAgICAgICAgImNhbGxlZCBh
cyBleHBlY3RlZC5cbiIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeyB0aHJvdyBz
dGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iKTsgfQorCisgIHZpcnR1
YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4
Y2VwdGlvbkluU2V0VXBUZXN0OjpUZWFyRG93bigpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBl
eHBlY3RlZC5cbiIpOworICB9Cit9OworCitURVNUX0YoQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Qs
IFRocm93c0V4Y2VwdGlvbkluU2V0VXApIHsKKyAgQUREX0ZBSUxVUkUoKSA8PCAiQ3h4RXhjZXB0
aW9uSW5TZXRVcFRlc3QgdGVzdCBib2R5ICIKKyAgICAgICAgICAgICAgICA8PCAiY2FsbGVkIHVu
ZXhwZWN0ZWRseS4iOworfQorCitjbGFzcyBDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCA6IHB1
YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7
CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblRlYXJEb3duVGVz
dDo6VGVhckRvd25UZXN0Q2FzZSgpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5c
biIpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIH5DeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCgp
IHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluVGVhckRvd25U
ZXN0IGRlc3RydWN0b3IgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7Cisg
IH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgdGhyb3cgc3RkOjpydW50aW1l
X2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIik7CisgIH0KK307CisKK1RFU1RfRihDeHhF
eGNlcHRpb25JblRlYXJEb3duVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5UZWFyRG93bikge30KKwor
Y2xhc3MgQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGlj
OgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHByaW50ZigiJXMiLAor
ICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duVGVzdENhc2Uo
KSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVj
dGVkOgorICB+Q3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QoKSB7CisgICAgcHJpbnRmKCIlcyIs
CisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdCBkZXN0cnVjdG9yICIKKyAg
ICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyAgdmlydHVhbCB2b2lk
IFRlYXJEb3duKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9u
SW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVj
dGVkLlxuIik7CisgIH0KK307CisKK1RFU1RfRihDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdCwg
VGhyb3dzU3RkQ3h4RXhjZXB0aW9uKSB7CisgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcigiU3Rh
bmRhcmQgQysrIGV4Y2VwdGlvbiIpOworfQorCitURVNUKEN4eEV4Y2VwdGlvblRlc3QsIFRocm93
c05vblN0ZEN4eEV4Y2VwdGlvbikgeworICB0aHJvdyAiQy1zdHJpbmciOworfQorCisvLyBUaGlz
IHRlcm1pbmF0ZSBoYW5kbGVyIGFib3J0cyB0aGUgcHJvZ3JhbSB1c2luZyBleGl0KCkgcmF0aGVy
IHRoYW4gYWJvcnQoKS4KKy8vIFRoaXMgYXZvaWRzIHNob3dpbmcgcG9wLXVwcyBvbiBXaW5kb3dz
IHN5c3RlbXMgYW5kIGNvcmUgZHVtcHMgb24gVW5peC1saWtlCisvLyBvbmVzLgordm9pZCBUZXJt
aW5hdGVIYW5kbGVyKCkgeworICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCAiVW5oYW5kbGVkIEMr
KyBleGNlcHRpb24gdGVybWluYXRpbmcgdGhlIHByb2dyYW0uIik7CisgIGZmbHVzaChOVUxMKTsK
KyAgZXhpdCgzKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUworCitpbnQg
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwor
ICBzdGQ6OnNldF90ZXJtaW5hdGUoJlRlcm1pbmF0ZUhhbmRsZXIpOworI2VuZGlmCisgIHRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMo
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVz
dC1jb2xvci10ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0
LWNvbG9yLXRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjNiN2M5OTkwYmNmNDRhNjUwMzZjMjUzZTdhMDE4
NDVhZjljMzcxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ29vZ2xldGVzdC1jb2xvci10ZXN0LnB5CkBAIC0wLDAgKzEsMTI3IEBACisjIS91c3IvYmlu
L2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMK
KyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
IyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJWZXJpZmllcyB0aGF0IEdvb2ds
ZSBUZXN0IGNvcnJlY3RseSBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlIGNvbG9ycy4iIiIKKwor
aW1wb3J0IG9zCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitJU19XSU5ET1dTID0gb3MubmFt
ZSA9PSAnbnQnCisKK0NPTE9SX0VOVl9WQVIgPSAnR1RFU1RfQ09MT1InCitDT0xPUl9GTEFHID0g
J2d0ZXN0X2NvbG9yJworQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFi
bGVQYXRoKCdnb29nbGV0ZXN0LWNvbG9yLXRlc3RfJykKKworCitkZWYgU2V0RW52VmFyKGVudl92
YXIsIHZhbHVlKToKKyAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxlIHRvICd2YWx1ZSc7IHVuc2V0
cyBpdCB3aGVuICd2YWx1ZScgaXMgTm9uZS4iIiIKKworICBpZiB2YWx1ZSBpcyBub3QgTm9uZToK
KyAgICBvcy5lbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKKyAgZWxpZiBlbnZfdmFyIGluIG9zLmVu
dmlyb246CisgICAgZGVsIG9zLmVudmlyb25bZW52X3Zhcl0KKworCitkZWYgVXNlc0NvbG9yKHRl
cm0sIGNvbG9yX2Vudl92YXIsIGNvbG9yX2ZsYWcpOgorICAiIiJSdW5zIGdvb2dsZXRlc3QtY29s
b3ItdGVzdF8gYW5kIHJldHVybnMgaXRzIGV4aXQgY29kZS4iIiIKKworICBTZXRFbnZWYXIoJ1RF
Uk0nLCB0ZXJtKQorICBTZXRFbnZWYXIoQ09MT1JfRU5WX1ZBUiwgY29sb3JfZW52X3ZhcikKKwor
ICBpZiBjb2xvcl9mbGFnIGlzIE5vbmU6CisgICAgYXJncyA9IFtdCisgIGVsc2U6CisgICAgYXJn
cyA9IFsnLS0lcz0lcycgJSAoQ09MT1JfRkxBRywgY29sb3JfZmxhZyldCisgIHAgPSBndGVzdF90
ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0NPTU1BTkRdICsgYXJncykKKyAgcmV0dXJuIG5vdCBwLmV4
aXRlZCBvciBwLmV4aXRfY29kZQorCisKK2NsYXNzIEdUZXN0Q29sb3JUZXN0KGd0ZXN0X3Rlc3Rf
dXRpbHMuVGVzdENhc2UpOgorICBkZWYgdGVzdE5vRW52VmFyTm9GbGFnKHNlbGYpOgorICAgICIi
IlRlc3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUncyBuZWl0aGVyIEdURVNUX0NPTE9SIG5vciAtLWd0
ZXN0X2NvbG9yLiIiIgorCisgICAgaWYgbm90IElTX1dJTkRPV1M6CisgICAgICBzZWxmLmFzc2Vy
dF8obm90IFVzZXNDb2xvcignZHVtYicsIE5vbmUsIE5vbmUpKQorICAgICAgc2VsZi5hc3NlcnRf
KG5vdCBVc2VzQ29sb3IoJ2VtYWNzJywgTm9uZSwgTm9uZSkpCisgICAgICBzZWxmLmFzc2VydF8o
bm90IFVzZXNDb2xvcigneHRlcm0tbW9ubycsIE5vbmUsIE5vbmUpKQorICAgICAgc2VsZi5hc3Nl
cnRfKG5vdCBVc2VzQ29sb3IoJ3Vua25vd24nLCBOb25lLCBOb25lKSkKKyAgICAgIHNlbGYuYXNz
ZXJ0Xyhub3QgVXNlc0NvbG9yKE5vbmUsIE5vbmUsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhV
c2VzQ29sb3IoJ2xpbnV4JywgTm9uZSwgTm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xv
cignY3lnd2luJywgTm9uZSwgTm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRl
cm0nLCBOb25lLCBOb25lKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS1jb2xv
cicsIE5vbmUsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLTI1NmNv
bG9yJywgTm9uZSwgTm9uZSkpCisKKyAgZGVmIHRlc3RGbGFnT25seShzZWxmKToKKyAgICAiIiJU
ZXN0cyB0aGUgY2FzZSB3aGVuIHRoZXJlJ3MgLS1ndGVzdF9jb2xvciBidXQgbm90IEdURVNUX0NP
TE9SLiIiIgorCisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAn
bm8nKSkKKyAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0tY29sb3InLCBOb25l
LCAnbm8nKSkKKyAgICBpZiBub3QgSVNfV0lORE9XUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qg
VXNlc0NvbG9yKCdlbWFjcycsIE5vbmUsICdhdXRvJykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXND
b2xvcigneHRlcm0nLCBOb25lLCAnYXV0bycpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3Io
J2R1bWInLCBOb25lLCAneWVzJykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0n
LCBOb25lLCAneWVzJykpCisKKyAgZGVmIHRlc3RFbnZWYXJPbmx5KHNlbGYpOgorICAgICIiIlRl
c3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUncyBHVEVTVF9DT0xPUiBidXQgbm90IC0tZ3Rlc3RfY29s
b3IuIiIiCisKKyAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcignZHVtYicsICdubycsIE5v
bmUpKQorICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsICdubycs
IE5vbmUpKQorICAgIGlmIG5vdCBJU19XSU5ET1dTOgorICAgICAgc2VsZi5hc3NlcnRfKG5vdCBV
c2VzQ29sb3IoJ2R1bWInLCAnYXV0bycsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29s
b3IoJ3h0ZXJtLWNvbG9yJywgJ2F1dG8nLCBOb25lKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0Nv
bG9yKCdkdW1iJywgJ3llcycsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0
ZXJtLWNvbG9yJywgJ3llcycsIE5vbmUpKQorCisgIGRlZiB0ZXN0RW52VmFyQW5kRmxhZyhzZWxm
KToKKyAgICAiIiJUZXN0cyB0aGUgY2FzZSB3aGVuIHRoZXJlIGFyZSBib3RoIEdURVNUX0NPTE9S
IGFuZCAtLWd0ZXN0X2NvbG9yLiIiIgorCisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3Io
J3h0ZXJtLWNvbG9yJywgJ25vJywgJ25vJykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcign
ZHVtYicsICdubycsICd5ZXMnKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS1j
b2xvcicsICdubycsICdhdXRvJykpCisKKyAgZGVmIHRlc3RBbGlhc2VzT2ZZZXNBbmRObyhzZWxm
KToKKyAgICAiIiJUZXN0cyB1c2luZyBhbGlhc2VzIGluIHNwZWNpZnlpbmcgLS1ndGVzdF9jb2xv
ci4iIiIKKworICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAndHJ1ZScp
KQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAnWUVTJykpCisgICAg
c2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUsICdUJykpCisgICAgc2VsZi5hc3Nl
cnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUsICcxJykpCisKKyAgICBzZWxmLmFzc2VydF8obm90
IFVzZXNDb2xvcigneHRlcm0nLCBOb25lLCAnZicpKQorICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNl
c0NvbG9yKCd4dGVybScsIE5vbmUsICdmYWxzZScpKQorICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNl
c0NvbG9yKCd4dGVybScsIE5vbmUsICcwJykpCisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29s
b3IoJ3h0ZXJtJywgTm9uZSwgJ3Vua25vd24nKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNvbG9yLXRlc3RfLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNvbG9yLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIy
MGEzYTAwNTQ4ZmRiMWU5MzVhM2RhMTZkZjU2M2E1MGUxNzlhOGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY29sb3ItdGVzdF8uY2MK
QEAgLTAsMCArMSw2MiBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8g
bWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisKKy8vIEEgaGVscGVyIHByb2dyYW0gZm9yIHRlc3RpbmcgaG93IEdvb2dsZSBUZXN0
IGRldGVybWluZXMgd2hldGhlciB0byB1c2UKKy8vIGNvbG9ycyBpbiB0aGUgb3V0cHV0LiAgSXQg
cHJpbnRzICJZRVMiIGFuZCByZXR1cm5zIDEgaWYgR29vZ2xlIFRlc3QKKy8vIGRlY2lkZXMgdG8g
dXNlIGNvbG9ycywgYW5kIHByaW50cyAiTk8iIGFuZCByZXR1cm5zIDAgb3RoZXJ3aXNlLgorCisj
aW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAi
c3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgorCit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hv
dWxkVXNlQ29sb3I7CisKKy8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gZW5zdXJlIHRoYXQg
dGhlIFVuaXRUZXN0IHNpbmdsZXRvbiBpcworLy8gY3JlYXRlZCBiZWZvcmUgbWFpbigpIGlzIGVu
dGVyZWQsIGFuZCB0aHVzIHRoYXQgU2hvdWxkVXNlQ29sb3IoKQorLy8gd29ya3MgdGhlIHNhbWUg
d2F5IGFzIGluIGEgcmVhbCBHb29nbGUtVGVzdC1iYXNlZCB0ZXN0LiAgV2UgZG9uJ3QgYWN0dWFs
CisvLyBydW4gdGhlIFRFU1QgaXRzZWxmLgorVEVTVChHVGVzdENvbG9yVGVzdCwgRHVtbXkpIHsK
K30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIHRlc3Rpbmc6OkluaXRH
b29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICBpZiAoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpIHsK
KyAgICAvLyBHb29nbGUgVGVzdCBkZWNpZGVzIHRvIHVzZSBjb2xvcnMgaW4gdGhlIG91dHB1dCAo
YXNzdW1pbmcgaXQKKyAgICAvLyBnb2VzIHRvIGEgVFRZKS4KKyAgICBwcmludGYoIllFU1xuIik7
CisgICAgcmV0dXJuIDE7CisgIH0gZWxzZSB7CisgICAgLy8gR29vZ2xlIFRlc3QgZGVjaWRlcyBu
b3QgdG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0LgorICAgIHByaW50ZigiTk9cbiIpOworICAg
IHJldHVybiAwOworICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3QtZGVhdGgtdGVzdC10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LWRlYXRoLXRlc3QtdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGMzMDI2
ZmI1ODk1NjYwYWQyYzlkNjVmYmQ5OWI1ZmFmOWFkNDhjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWRlYXRoLXRlc3QtdGVzdC5jYwpA
QCAtMCwwICsxLDE0MjMgQEAKKy8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgorLy8gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8v
IG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisv
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworLy8KKy8vIFRlc3RzIGZvciBkZWF0aCB0ZXN0cy4KKworI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LWRlYXRoLXRlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUg
Imd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgiCisKK3VzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpBbHdheXNGYWxzZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlOwor
CisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisjICBp
bmNsdWRlIDxkaXJlY3QuaD4gICAgICAgICAgLy8gRm9yIGNoZGlyKCkuCisjIGVsc2UKKyMgIGlu
Y2x1ZGUgPHVuaXN0ZC5oPgorIyAgaW5jbHVkZSA8c3lzL3dhaXQuaD4gICAgICAgIC8vIEZvciB3
YWl0cGlkLgorIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjIGluY2x1ZGUgPGxpbWl0
cy5oPgorIyBpbmNsdWRlIDxzaWduYWwuaD4KKyMgaW5jbHVkZSA8c3RkaW8uaD4KKworIyBpZiBH
VEVTVF9PU19MSU5VWAorIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMgZW5kaWYgIC8vIEdURVNU
X09TX0xJTlVYCisKKyMgaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCisjIGluY2x1ZGUgInNy
Yy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKworbmFtZXNwYWNlIHBvc2l4ID0gOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6cG9zaXg7CisKK3VzaW5nIHRlc3Rpbmc6Ok1lc3NhZ2U7Cit1c2luZyB0ZXN0aW5n
OjppbnRlcm5hbDo6RGVhdGhUZXN0OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVz
dEZhY3Rvcnk7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RmlsZVBhdGg7Cit1c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6R2V0TGFzdEVycm5vRGVzY3JpcHRpb247Cit1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkluRGVh
dGhUZXN0Q2hpbGQ7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UGFyc2VOYXR1cmFsTnVtYmVy
OworCituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBBIGhl
bHBlciBjbGFzcyB3aG9zZSBvYmplY3RzIHJlcGxhY2UgdGhlIGRlYXRoIHRlc3QgZmFjdG9yeSBm
b3IgYQorLy8gc2luZ2xlIFVuaXRUZXN0IG9iamVjdCBkdXJpbmcgdGhlaXIgbGlmZXRpbWVzLgor
Y2xhc3MgUmVwbGFjZURlYXRoVGVzdEZhY3RvcnkgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgUmVw
bGFjZURlYXRoVGVzdEZhY3RvcnkoRGVhdGhUZXN0RmFjdG9yeSogbmV3X2ZhY3RvcnkpCisgICAg
ICA6IHVuaXRfdGVzdF9pbXBsXyhHZXRVbml0VGVzdEltcGwoKSkgeworICAgIG9sZF9mYWN0b3J5
XyA9IHVuaXRfdGVzdF9pbXBsXy0+ZGVhdGhfdGVzdF9mYWN0b3J5Xy5yZWxlYXNlKCk7CisgICAg
dW5pdF90ZXN0X2ltcGxfLT5kZWF0aF90ZXN0X2ZhY3RvcnlfLnJlc2V0KG5ld19mYWN0b3J5KTsK
KyAgfQorCisgIH5SZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSgpIHsKKyAgICB1bml0X3Rlc3RfaW1w
bF8tPmRlYXRoX3Rlc3RfZmFjdG9yeV8ucmVsZWFzZSgpOworICAgIHVuaXRfdGVzdF9pbXBsXy0+
ZGVhdGhfdGVzdF9mYWN0b3J5Xy5yZXNldChvbGRfZmFjdG9yeV8pOworICB9CisgcHJpdmF0ZToK
KyAgLy8gUHJldmVudHMgY29weWluZyBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSBvYmplY3RzLgor
ICBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeShjb25zdCBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSYp
OworICB2b2lkIG9wZXJhdG9yPShjb25zdCBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSYpOworCisg
IFVuaXRUZXN0SW1wbCogdW5pdF90ZXN0X2ltcGxfOworICBEZWF0aFRlc3RGYWN0b3J5KiBvbGRf
ZmFjdG9yeV87Cit9OworCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCisKK3ZvaWQgRGllV2l0aE1lc3NhZ2UoY29uc3QgOjpzdGQ6OnN0cmluZyYgbWVz
c2FnZSkgeworICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgbWVzc2FnZS5jX3N0cigpKTsKKyAgZmZs
dXNoKHN0ZGVycik7ICAvLyBNYWtlIHN1cmUgdGhlIHRleHQgaXMgcHJpbnRlZCBiZWZvcmUgdGhl
IHByb2Nlc3MgZXhpdHMuCisKKyAgLy8gV2UgY2FsbCBfZXhpdCgpIGluc3RlYWQgb2YgZXhpdCgp
LCBhcyB0aGUgZm9ybWVyIGlzIGEgZGlyZWN0CisgIC8vIHN5c3RlbSBjYWxsIGFuZCB0aHVzIHNh
ZmVyIGluIHRoZSBwcmVzZW5jZSBvZiB0aHJlYWRzLiAgZXhpdCgpCisgIC8vIHdpbGwgaW52b2tl
IHVzZXItZGVmaW5lZCBleGl0LWhvb2tzLCB3aGljaCBtYXkgZG8gZGFuZ2Vyb3VzCisgIC8vIHRo
aW5ncyB0aGF0IGNvbmZsaWN0IHdpdGggZGVhdGggdGVzdHMuCisgIC8vCisgIC8vIFNvbWUgY29t
cGlsZXJzIGNhbiByZWNvZ25pemUgdGhhdCBfZXhpdCgpIG5ldmVyIHJldHVybnMgYW5kIGlzc3Vl
IHRoZQorICAvLyAndW5yZWFjaGFibGUgY29kZScgd2FybmluZyBmb3IgY29kZSBmb2xsb3dpbmcg
dGhpcyBmdW5jdGlvbiwgdW5sZXNzCisgIC8vIGZvb2xlZCBieSBhIGZha2UgY29uZGl0aW9uLgor
ICBpZiAoQWx3YXlzVHJ1ZSgpKQorICAgIF9leGl0KDEpOworfQorCit2b2lkIERpZUluc2lkZShj
b25zdCA6OnN0ZDo6c3RyaW5nJiBmdW5jdGlvbikgeworICBEaWVXaXRoTWVzc2FnZSgiZGVhdGgg
aW5zaWRlICIgKyBmdW5jdGlvbiArICIoKS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBkZWF0aCB0
ZXN0cyB3b3JrLgorCitjbGFzcyBUZXN0Rm9yRGVhdGhUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgeworIHByb3RlY3RlZDoKKyAgVGVzdEZvckRlYXRoVGVzdCgpIDogb3JpZ2luYWxfZGlyXyhG
aWxlUGF0aDo6R2V0Q3VycmVudERpcigpKSB7fQorCisgIHZpcnR1YWwgflRlc3RGb3JEZWF0aFRl
c3QoKSB7CisgICAgcG9zaXg6OkNoRGlyKG9yaWdpbmFsX2Rpcl8uY19zdHIoKSk7CisgIH0KKwor
ICAvLyBBIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24gdGhhdCdzIGV4cGVjdGVkIHRvIGRpZS4KKyAg
c3RhdGljIHZvaWQgU3RhdGljTWVtYmVyRnVuY3Rpb24oKSB7IERpZUluc2lkZSgiU3RhdGljTWVt
YmVyRnVuY3Rpb24iKTsgfQorCisgIC8vIEEgbWV0aG9kIG9mIHRoZSB0ZXN0IGZpeHR1cmUgdGhh
dCBtYXkgZGllLgorICB2b2lkIE1lbWJlckZ1bmN0aW9uKCkgeworICAgIGlmIChzaG91bGRfZGll
XykKKyAgICAgIERpZUluc2lkZSgiTWVtYmVyRnVuY3Rpb24iKTsKKyAgfQorCisgIC8vIFRydWUg
aWZmIE1lbWJlckZ1bmN0aW9uKCkgc2hvdWxkIGRpZS4KKyAgYm9vbCBzaG91bGRfZGllXzsKKyAg
Y29uc3QgRmlsZVBhdGggb3JpZ2luYWxfZGlyXzsKK307CisKKy8vIEEgY2xhc3Mgd2l0aCBhIG1l
bWJlciBmdW5jdGlvbiB0aGF0IG1heSBkaWUuCitjbGFzcyBNYXlEaWUgeworIHB1YmxpYzoKKyAg
ZXhwbGljaXQgTWF5RGllKGJvb2wgc2hvdWxkX2RpZSkgOiBzaG91bGRfZGllXyhzaG91bGRfZGll
KSB7fQorCisgIC8vIEEgbWVtYmVyIGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KKyAgdm9pZCBNZW1i
ZXJGdW5jdGlvbigpIGNvbnN0IHsKKyAgICBpZiAoc2hvdWxkX2RpZV8pCisgICAgICBEaWVJbnNp
ZGUoIk1heURpZTo6TWVtYmVyRnVuY3Rpb24iKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gVHJ1
ZSBpZmYgTWVtYmVyRnVuY3Rpb24oKSBzaG91bGQgZGllLgorICBib29sIHNob3VsZF9kaWVfOwor
fTsKKworLy8gQSBnbG9iYWwgZnVuY3Rpb24gdGhhdCdzIGV4cGVjdGVkIHRvIGRpZS4KK3ZvaWQg
R2xvYmFsRnVuY3Rpb24oKSB7IERpZUluc2lkZSgiR2xvYmFsRnVuY3Rpb24iKTsgfQorCisvLyBB
IG5vbi12b2lkIGZ1bmN0aW9uIHRoYXQncyBleHBlY3RlZCB0byBkaWUuCitpbnQgTm9uVm9pZEZ1
bmN0aW9uKCkgeworICBEaWVJbnNpZGUoIk5vblZvaWRGdW5jdGlvbiIpOworICByZXR1cm4gMTsK
K30KKworLy8gQSB1bmFyeSBmdW5jdGlvbiB0aGF0IG1heSBkaWUuCit2b2lkIERpZUlmKGJvb2wg
c2hvdWxkX2RpZSkgeworICBpZiAoc2hvdWxkX2RpZSkKKyAgICBEaWVJbnNpZGUoIkRpZUlmIik7
Cit9CisKKy8vIEEgYmluYXJ5IGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KK2Jvb2wgRGllSWZMZXNz
VGhhbihpbnQgeCwgaW50IHkpIHsKKyAgaWYgKHggPCB5KSB7CisgICAgRGllSW5zaWRlKCJEaWVJ
Zkxlc3NUaGFuIik7CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisKKy8vIFRlc3RzIHRoYXQgQVNT
RVJUX0RFQVRIIGNhbiBiZSB1c2VkIG91dHNpZGUgYSBURVNULCBURVNUX0YsIG9yIHRlc3QgZml4
dHVyZS4KK3ZvaWQgRGVhdGhUZXN0U3Vicm91dGluZSgpIHsKKyAgRVhQRUNUX0RFQVRIKEdsb2Jh
bEZ1bmN0aW9uKCksICJkZWF0aC4qR2xvYmFsRnVuY3Rpb24iKTsKKyAgQVNTRVJUX0RFQVRIKEds
b2JhbEZ1bmN0aW9uKCksICJkZWF0aC4qR2xvYmFsRnVuY3Rpb24iKTsKK30KKworLy8gRGVhdGgg
aW4gZGJnLCBub3Qgb3B0LgoraW50IERpZUluRGVidWdFbHNlMTIoaW50KiBzaWRlZWZmZWN0KSB7
CisgIGlmIChzaWRlZWZmZWN0KSAqc2lkZWVmZmVjdCA9IDEyOworCisjIGlmbmRlZiBOREVCVUcK
KworICBEaWVJbnNpZGUoIkRpZUluRGVidWdFbHNlMTIiKTsKKworIyBlbmRpZiAgLy8gTkRFQlVH
CisKKyAgcmV0dXJuIDEyOworfQorCisjIGlmIEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1Nf
RlVDSFNJQQorCisvLyBUZXN0cyB0aGUgRXhpdGVkV2l0aENvZGUgcHJlZGljYXRlLgorVEVTVChF
eGl0U3RhdHVzUHJlZGljYXRlVGVzdCwgRXhpdGVkV2l0aENvZGUpIHsKKyAgLy8gT24gV2luZG93
cywgdGhlIHByb2Nlc3MncyBleGl0IGNvZGUgaXMgdGhlIHNhbWUgYXMgaXRzIGV4aXQgc3RhdHVz
LAorICAvLyBzbyB0aGUgcHJlZGljYXRlIGp1c3QgY29tcGFyZXMgdGhlIGl0cyBpbnB1dCB3aXRo
IGl0cyBwYXJhbWV0ZXIuCisgIEVYUEVDVF9UUlVFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDAp
KDApKTsKKyAgRVhQRUNUX1RSVUUodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSkoMSkpOworICBF
WFBFQ1RfVFJVRSh0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSg0MikoNDIpKTsKKyAgRVhQRUNUX0ZB
TFNFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApKDEpKTsKKyAgRVhQRUNUX0ZBTFNFKHRlc3Rp
bmc6OkV4aXRlZFdpdGhDb2RlKDEpKDApKTsKK30KKworIyBlbHNlCisKKy8vIFJldHVybnMgdGhl
IGV4aXQgc3RhdHVzIG9mIGEgcHJvY2VzcyB0aGF0IGNhbGxzIF9leGl0KDIpIHdpdGggYQorLy8g
Z2l2ZW4gZXhpdCBjb2RlLiAgVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgdGhlCisvLyBF
eGl0U3RhdHVzUHJlZGljYXRlVGVzdCB0ZXN0IHN1aXRlLgorc3RhdGljIGludCBOb3JtYWxFeGl0
U3RhdHVzKGludCBleGl0X2NvZGUpIHsKKyAgcGlkX3QgY2hpbGRfcGlkID0gZm9yaygpOworICBp
ZiAoY2hpbGRfcGlkID09IDApIHsKKyAgICBfZXhpdChleGl0X2NvZGUpOworICB9CisgIGludCBz
dGF0dXM7CisgIHdhaXRwaWQoY2hpbGRfcGlkLCAmc3RhdHVzLCAwKTsKKyAgcmV0dXJuIHN0YXR1
czsKK30KKworLy8gUmV0dXJucyB0aGUgZXhpdCBzdGF0dXMgb2YgYSBwcm9jZXNzIHRoYXQgcmFp
c2VzIGEgZ2l2ZW4gc2lnbmFsLgorLy8gSWYgdGhlIHNpZ25hbCBkb2VzIG5vdCBjYXVzZSB0aGUg
cHJvY2VzcyB0byBkaWUsIHRoZW4gaXQgcmV0dXJucworLy8gaW5zdGVhZCB0aGUgZXhpdCBzdGF0
dXMgb2YgYSBwcm9jZXNzIHRoYXQgZXhpdHMgbm9ybWFsbHkgd2l0aCBleGl0CisvLyBjb2RlIDEu
ICBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGUgRXhpdFN0YXR1c1ByZWRpY2F0ZVRl
c3QKKy8vIHRlc3Qgc3VpdGUuCitzdGF0aWMgaW50IEtpbGxlZEV4aXRTdGF0dXMoaW50IHNpZ251
bSkgeworICBwaWRfdCBjaGlsZF9waWQgPSBmb3JrKCk7CisgIGlmIChjaGlsZF9waWQgPT0gMCkg
eworICAgIHJhaXNlKHNpZ251bSk7CisgICAgX2V4aXQoMSk7CisgIH0KKyAgaW50IHN0YXR1czsK
KyAgd2FpdHBpZChjaGlsZF9waWQsICZzdGF0dXMsIDApOworICByZXR1cm4gc3RhdHVzOworfQor
CisvLyBUZXN0cyB0aGUgRXhpdGVkV2l0aENvZGUgcHJlZGljYXRlLgorVEVTVChFeGl0U3RhdHVz
UHJlZGljYXRlVGVzdCwgRXhpdGVkV2l0aENvZGUpIHsKKyAgY29uc3QgaW50IHN0YXR1czAgID0g
Tm9ybWFsRXhpdFN0YXR1cygwKTsKKyAgY29uc3QgaW50IHN0YXR1czEgID0gTm9ybWFsRXhpdFN0
YXR1cygxKTsKKyAgY29uc3QgaW50IHN0YXR1czQyID0gTm9ybWFsRXhpdFN0YXR1cyg0Mik7Cisg
IGNvbnN0IHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlIHByZWQwKDApOworICBjb25zdCB0ZXN0aW5n
OjpFeGl0ZWRXaXRoQ29kZSBwcmVkMSgxKTsKKyAgY29uc3QgdGVzdGluZzo6RXhpdGVkV2l0aENv
ZGUgcHJlZDQyKDQyKTsKKyAgRVhQRUNUX1BSRUQxKHByZWQwLCAgc3RhdHVzMCk7CisgIEVYUEVD
VF9QUkVEMShwcmVkMSwgIHN0YXR1czEpOworICBFWFBFQ1RfUFJFRDEocHJlZDQyLCBzdGF0dXM0
Mik7CisgIEVYUEVDVF9GQUxTRShwcmVkMChzdGF0dXMxKSk7CisgIEVYUEVDVF9GQUxTRShwcmVk
NDIoc3RhdHVzMCkpOworICBFWFBFQ1RfRkFMU0UocHJlZDEoc3RhdHVzNDIpKTsKK30KKworLy8g
VGVzdHMgdGhlIEtpbGxlZEJ5U2lnbmFsIHByZWRpY2F0ZS4KK1RFU1QoRXhpdFN0YXR1c1ByZWRp
Y2F0ZVRlc3QsIEtpbGxlZEJ5U2lnbmFsKSB7CisgIGNvbnN0IGludCBzdGF0dXNfc2VndiA9IEtp
bGxlZEV4aXRTdGF0dXMoU0lHU0VHVik7CisgIGNvbnN0IGludCBzdGF0dXNfa2lsbCA9IEtpbGxl
ZEV4aXRTdGF0dXMoU0lHS0lMTCk7CisgIGNvbnN0IHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsIHBy
ZWRfc2VndihTSUdTRUdWKTsKKyAgY29uc3QgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwgcHJlZF9r
aWxsKFNJR0tJTEwpOworICBFWFBFQ1RfUFJFRDEocHJlZF9zZWd2LCBzdGF0dXNfc2Vndik7Cisg
IEVYUEVDVF9QUkVEMShwcmVkX2tpbGwsIHN0YXR1c19raWxsKTsKKyAgRVhQRUNUX0ZBTFNFKHBy
ZWRfc2VndihzdGF0dXNfa2lsbCkpOworICBFWFBFQ1RfRkFMU0UocHJlZF9raWxsKHN0YXR1c19z
ZWd2KSk7Cit9CisKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfRlVD
SFNJQQorCisvLyBUZXN0cyB0aGF0IHRoZSBkZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29k
ZSB3aGljaCBtYXkgb3IgbWF5IG5vdAorLy8gYmUgZm9sbG93ZWQgYnkgb3BlcmF0b3I8PCwgYW5k
IHRoYXQgaW4gZWl0aGVyIGNhc2UgdGhlIGNvbXBsZXRlIHRleHQKKy8vIGNvbXByaXNlcyBvbmx5
IGEgc2luZ2xlIEMrKyBzdGF0ZW1lbnQuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU2luZ2xl
U3RhdGVtZW50KSB7CisgIGlmIChBbHdheXNGYWxzZSgpKQorICAgIC8vIFRoaXMgd291bGQgZmFp
bCBpZiBleGVjdXRlZDsgdGhpcyBpcyBhIGNvbXBpbGF0aW9uIHRlc3Qgb25seQorICAgIEFTU0VS
VF9ERUFUSChyZXR1cm4sICIiKTsKKworICBpZiAoQWx3YXlzVHJ1ZSgpKQorICAgIEVYUEVDVF9E
RUFUSChfZXhpdCgxKSwgIiIpOworICBlbHNlCisgICAgLy8gVGhpcyBlbXB0eSAiZWxzZSIgYnJh
bmNoIGlzIG1lYW50IHRvIGVuc3VyZSB0aGF0IEVYUEVDVF9ERUFUSAorICAgIC8vIGRvZXNuJ3Qg
ZXhwYW5kIGludG8gYW4gImlmIiBzdGF0ZW1lbnQgd2l0aG91dCBhbiAiZWxzZSIKKyAgICA7CisK
KyAgaWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgQVNTRVJUX0RFQVRIKHJldHVybiwgIiIpIDw8ICJk
aWQgbm90IGRpZSI7CisKKyAgaWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgOworICBlbHNlCisgICAg
RVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgMSA8PCAyIDw8IDM7Cit9CisKK3ZvaWQgRGll
V2l0aEVtYmVkZGVkTnVsKCkgeworICBmcHJpbnRmKHN0ZGVyciwgIkhlbGxvJWNteSBudWxsIHdv
cmxkLlxuIiwgJ1wwJyk7CisgIGZmbHVzaChzdGRlcnIpOworICBfZXhpdCgxKTsKK30KKworIyBp
ZiBHVEVTVF9VU0VTX1BDUkUKKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEggYW5kIEFTU0VS
VF9ERUFUSCB3b3JrIHdoZW4gdGhlIGVycm9yCisvLyBtZXNzYWdlIGhhcyBhIE5VTCBjaGFyYWN0
ZXIgaW4gaXQuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRW1iZWRkZWROdWxJbk1lc3NhZ2Up
IHsKKyAgRVhQRUNUX0RFQVRIKERpZVdpdGhFbWJlZGRlZE51bCgpLCAibXkgbnVsbCB3b3JsZCIp
OworICBBU1NFUlRfREVBVEgoRGllV2l0aEVtYmVkZGVkTnVsKCksICJteSBudWxsIHdvcmxkIik7
Cit9CisKKyMgZW5kaWYgIC8vIEdURVNUX1VTRVNfUENSRQorCisvLyBUZXN0cyB0aGF0IGRlYXRo
IHRlc3QgbWFjcm9zIGV4cGFuZCB0byBjb2RlIHdoaWNoIGludGVyYWN0cyB3ZWxsIHdpdGggc3dp
dGNoCisvLyBzdGF0ZW1lbnRzLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFN3aXRjaFN0YXRl
bWVudCkgeworICAvLyBNaWNyb3NvZnQgY29tcGlsZXIgdXN1YWxseSBjb21wbGFpbnMgYWJvdXQg
c3dpdGNoIHN0YXRlbWVudHMgd2l0aG91dAorICAvLyBjYXNlIGxhYmVscy4gV2Ugc3VwcHJlc3Mg
dGhhdCB3YXJuaW5nIGZvciB0aGlzIHRlc3QuCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdT
X1BVU0hfKDQwNjUpCisKKyAgc3dpdGNoICgwKQorICAgIGRlZmF1bHQ6CisgICAgICBBU1NFUlRf
REVBVEgoX2V4aXQoMSksICIiKSA8PCAiZXhpdCBpbiBkZWZhdWx0IHN3aXRjaCBoYW5kbGVyIjsK
KworICBzd2l0Y2ggKDApCisgICAgY2FzZSAwOgorICAgICAgRVhQRUNUX0RFQVRIKF9leGl0KDEp
LCAiIikgPDwgImV4aXQgaW4gc3dpdGNoIGNhc2UiOworCisgIEdURVNUX0RJU0FCTEVfTVNDX1dB
Uk5JTkdTX1BPUF8oKQorfQorCisvLyBUZXN0cyB0aGF0IGEgc3RhdGljIG1lbWJlciBmdW5jdGlv
biBjYW4gYmUgdXNlZCBpbiBhICJmYXN0IiBzdHlsZQorLy8gZGVhdGggdGVzdC4KK1RFU1RfRihU
ZXN0Rm9yRGVhdGhUZXN0LCBTdGF0aWNNZW1iZXJGdW5jdGlvbkZhc3RTdHlsZSkgeworICB0ZXN0
aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOworICBBU1NFUlRfREVB
VEgoU3RhdGljTWVtYmVyRnVuY3Rpb24oKSwgImRlYXRoLipTdGF0aWNNZW1iZXIiKTsKK30KKwor
Ly8gVGVzdHMgdGhhdCBhIG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNhbiBiZSB1c2VkIGlu
IGEgImZhc3QiCisvLyBzdHlsZSBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3Qs
IE1lbWJlckZ1bmN0aW9uRmFzdFN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhf
dGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIHNob3VsZF9kaWVfID0gdHJ1ZTsKKyAgRVhQRUNUX0RF
QVRIKE1lbWJlckZ1bmN0aW9uKCksICJpbnNpZGUuKk1lbWJlckZ1bmN0aW9uIik7Cit9CisKK3Zv
aWQgQ2hhbmdlVG9Sb290RGlyKCkgeyBwb3NpeDo6Q2hEaXIoR1RFU1RfUEFUSF9TRVBfKTsgfQor
CisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHdvcmsgZXZlbiBpZiB0aGUgY3VycmVudCBkaXJl
Y3RvcnkgaGFzIGJlZW4KKy8vIGNoYW5nZWQuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRmFz
dERlYXRoVGVzdEluQ2hhbmdlZERpcikgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rl
c3Rfc3R5bGUpID0gImZhc3QiOworCisgIENoYW5nZVRvUm9vdERpcigpOworICBFWFBFQ1RfRVhJ
VChfZXhpdCgxKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSksICIiKTsKKworICBDaGFuZ2VU
b1Jvb3REaXIoKTsKKyAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAiIik7Cit9CisKKyMgaWYgR1RF
U1RfT1NfTElOVVgKK3ZvaWQgU2lncHJvZkFjdGlvbihpbnQsIHNpZ2luZm9fdCosIHZvaWQqKSB7
IC8qIG5vIG9wICovIH0KKworLy8gU2V0cyBTSUdQUk9GIGFjdGlvbiBhbmQgSVRJTUVSX1BST0Yg
dGltZXIgKGludGVydmFsOiAxbXMpLgordm9pZCBTZXRTaWdwcm9mQWN0aW9uQW5kVGltZXIoKSB7
CisgIHN0cnVjdCBpdGltZXJ2YWwgdGltZXI7CisgIHRpbWVyLml0X2ludGVydmFsLnR2X3NlYyA9
IDA7CisgIHRpbWVyLml0X2ludGVydmFsLnR2X3VzZWMgPSAxOworICB0aW1lci5pdF92YWx1ZSA9
IHRpbWVyLml0X2ludGVydmFsOworICBBU1NFUlRfRVEoMCwgc2V0aXRpbWVyKElUSU1FUl9QUk9G
LCAmdGltZXIsIE5VTEwpKTsKKyAgc3RydWN0IHNpZ2FjdGlvbiBzaWduYWxfYWN0aW9uOworICBt
ZW1zZXQoJnNpZ25hbF9hY3Rpb24sIDAsIHNpemVvZihzaWduYWxfYWN0aW9uKSk7CisgIHNpZ2Vt
cHR5c2V0KCZzaWduYWxfYWN0aW9uLnNhX21hc2spOworICBzaWduYWxfYWN0aW9uLnNhX3NpZ2Fj
dGlvbiA9IFNpZ3Byb2ZBY3Rpb247CisgIHNpZ25hbF9hY3Rpb24uc2FfZmxhZ3MgPSBTQV9SRVNU
QVJUIHwgU0FfU0lHSU5GTzsKKyAgQVNTRVJUX0VRKDAsIHNpZ2FjdGlvbihTSUdQUk9GLCAmc2ln
bmFsX2FjdGlvbiwgTlVMTCkpOworfQorCisvLyBEaXNhYmxlcyBJVElNRVJfUFJPRiB0aW1lciBh
bmQgaWdub3JlcyBTSUdQUk9GIHNpZ25hbC4KK3ZvaWQgRGlzYWJsZVNpZ3Byb2ZBY3Rpb25BbmRU
aW1lcihzdHJ1Y3Qgc2lnYWN0aW9uKiBvbGRfc2lnbmFsX2FjdGlvbikgeworICBzdHJ1Y3QgaXRp
bWVydmFsIHRpbWVyOworICB0aW1lci5pdF9pbnRlcnZhbC50dl9zZWMgPSAwOworICB0aW1lci5p
dF9pbnRlcnZhbC50dl91c2VjID0gMDsKKyAgdGltZXIuaXRfdmFsdWUgPSB0aW1lci5pdF9pbnRl
cnZhbDsKKyAgQVNTRVJUX0VRKDAsIHNldGl0aW1lcihJVElNRVJfUFJPRiwgJnRpbWVyLCBOVUxM
KSk7CisgIHN0cnVjdCBzaWdhY3Rpb24gc2lnbmFsX2FjdGlvbjsKKyAgbWVtc2V0KCZzaWduYWxf
YWN0aW9uLCAwLCBzaXplb2Yoc2lnbmFsX2FjdGlvbikpOworICBzaWdlbXB0eXNldCgmc2lnbmFs
X2FjdGlvbi5zYV9tYXNrKTsKKyAgc2lnbmFsX2FjdGlvbi5zYV9oYW5kbGVyID0gU0lHX0lHTjsK
KyAgQVNTRVJUX0VRKDAsIHNpZ2FjdGlvbihTSUdQUk9GLCAmc2lnbmFsX2FjdGlvbiwgb2xkX3Np
Z25hbF9hY3Rpb24pKTsKK30KKworLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyB3b3JrIHdoZW4g
U0lHUFJPRiBoYW5kbGVyIGFuZCB0aW1lciBhcmUgc2V0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIEZhc3RTaWdwcm9mQWN0aW9uU2V0KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhf
dGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIFNldFNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigpOworICBF
WFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKTsKKyAgc3RydWN0IHNpZ2FjdGlvbiBvbGRfc2lnbmFs
X2FjdGlvbjsKKyAgRGlzYWJsZVNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigmb2xkX3NpZ25hbF9hY3Rp
b24pOworICBFWFBFQ1RfVFJVRShvbGRfc2lnbmFsX2FjdGlvbi5zYV9zaWdhY3Rpb24gPT0gU2ln
cHJvZkFjdGlvbik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUaHJlYWRTYWZlU2ln
cHJvZkFjdGlvblNldCkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUp
ID0gInRocmVhZHNhZmUiOworICBTZXRTaWdwcm9mQWN0aW9uQW5kVGltZXIoKTsKKyAgRVhQRUNU
X0RFQVRIKF9leGl0KDEpLCAiIik7CisgIHN0cnVjdCBzaWdhY3Rpb24gb2xkX3NpZ25hbF9hY3Rp
b247CisgIERpc2FibGVTaWdwcm9mQWN0aW9uQW5kVGltZXIoJm9sZF9zaWduYWxfYWN0aW9uKTsK
KyAgRVhQRUNUX1RSVUUob2xkX3NpZ25hbF9hY3Rpb24uc2Ffc2lnYWN0aW9uID09IFNpZ3Byb2ZB
Y3Rpb24pOworfQorIyBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKKworLy8gUmVwZWF0cyBhIHJl
cHJlc2VudGF0aXZlIHNhbXBsZSBvZiBkZWF0aCB0ZXN0cyBpbiB0aGUgInRocmVhZHNhZmUiIHN0
eWxlOgorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU3RhdGljTWVtYmVyRnVuY3Rpb25UaHJl
YWRzYWZlU3R5bGUpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9
ICJ0aHJlYWRzYWZlIjsKKyAgQVNTRVJUX0RFQVRIKFN0YXRpY01lbWJlckZ1bmN0aW9uKCksICJk
ZWF0aC4qU3RhdGljTWVtYmVyIik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNZW1i
ZXJGdW5jdGlvblRocmVhZHNhZmVTdHlsZSkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRo
X3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOworICBzaG91bGRfZGllXyA9IHRydWU7CisgIEVY
UEVDVF9ERUFUSChNZW1iZXJGdW5jdGlvbigpLCAiaW5zaWRlLipNZW1iZXJGdW5jdGlvbiIpOwor
fQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgVGhyZWFkc2FmZURlYXRoVGVzdEluTG9vcCkg
eworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUi
OworCisgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKQorICAgIEVYUEVDVF9FWElUKF9leGl0
KGkpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZShpKSwgIiIpIDw8ICI6IGkgPSAiIDw8IGk7Cit9
CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUaHJlYWRzYWZlRGVhdGhUZXN0SW5DaGFuZ2Vk
RGlyKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFk
c2FmZSI7CisKKyAgQ2hhbmdlVG9Sb290RGlyKCk7CisgIEVYUEVDVF9FWElUKF9leGl0KDEpLCB0
ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSwgIiIpOworCisgIENoYW5nZVRvUm9vdERpcigpOwor
ICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIiKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIE1peGVkU3R5bGVzKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHls
ZSkgPSAidGhyZWFkc2FmZSI7CisgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOworICB0ZXN0
aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOworICBFWFBFQ1RfREVB
VEgoX2V4aXQoMSksICIiKTsKK30KKworIyBpZiBHVEVTVF9IQVNfQ0xPTkUgJiYgR1RFU1RfSEFT
X1BUSFJFQUQKKworbmFtZXNwYWNlIHsKKworYm9vbCBwdGhyZWFkX2ZsYWc7CisKK3ZvaWQgU2V0
UHRocmVhZEZsYWcoKSB7CisgIHB0aHJlYWRfZmxhZyA9IHRydWU7Cit9CisKK30gIC8vIG5hbWVz
cGFjZQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRG9lc05vdEV4ZWN1dGVBdGZvcmtIb29r
cykgeworICBpZiAoIXRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yaykpIHsK
KyAgICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUi
OworICAgIHB0aHJlYWRfZmxhZyA9IGZhbHNlOworICAgIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0
Zm9yaygmU2V0UHRocmVhZEZsYWcsIE5VTEwsIE5VTEwpKTsKKyAgICBBU1NFUlRfREVBVEgoX2V4
aXQoMSksICIiKTsKKyAgICBBU1NFUlRfRkFMU0UocHRocmVhZF9mbGFnKTsKKyAgfQorfQorCisj
IGVuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUgJiYgR1RFU1RfSEFTX1BUSFJFQUQKKworLy8gVGVz
dHMgdGhhdCBhIG1ldGhvZCBvZiBhbm90aGVyIGNsYXNzIGNhbiBiZSB1c2VkIGluIGEgZGVhdGgg
dGVzdC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNZXRob2RPZkFub3RoZXJDbGFzcykgewor
ICBjb25zdCBNYXlEaWUgeCh0cnVlKTsKKyAgQVNTRVJUX0RFQVRIKHguTWVtYmVyRnVuY3Rpb24o
KSwgIk1heURpZVxcOlxcOk1lbWJlckZ1bmN0aW9uIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBn
bG9iYWwgZnVuY3Rpb24gY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RG
b3JEZWF0aFRlc3QsIEdsb2JhbEZ1bmN0aW9uKSB7CisgIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5j
dGlvbigpLCAiR2xvYmFsRnVuY3Rpb24iKTsKK30KKworLy8gVGVzdHMgdGhhdCBhbnkgdmFsdWUg
Y29udmVydGlibGUgdG8gYW4gUkUgd29ya3MgYXMgYSBzZWNvbmQKKy8vIGFyZ3VtZW50IHRvIEVY
UEVDVF9ERUFUSC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBY2NlcHRzQW55dGhpbmdDb252
ZXJ0aWJsZVRvUkUpIHsKKyAgc3RhdGljIGNvbnN0IGNoYXIgcmVnZXhfY19zdHJbXSA9ICJHbG9i
YWxGdW5jdGlvbiI7CisgIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleF9jX3N0
cik7CisKKyAgY29uc3QgdGVzdGluZzo6aW50ZXJuYWw6OlJFIHJlZ2V4KHJlZ2V4X2Nfc3RyKTsK
KyAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksIHJlZ2V4KTsKKworIyBpZiBHVEVTVF9I
QVNfR0xPQkFMX1NUUklORworCisgIGNvbnN0IDo6c3RyaW5nIHJlZ2V4X3N0cihyZWdleF9jX3N0
cik7CisgIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleF9zdHIpOworCisjIGVu
ZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCisjIGlmICFHVEVTVF9VU0VTX1BDUkUK
KworICBjb25zdCA6OnN0ZDo6c3RyaW5nIHJlZ2V4X3N0ZF9zdHIocmVnZXhfY19zdHIpOworICBF
WFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXhfc3RkX3N0cik7CisKKyMgZW5kaWYg
IC8vICFHVEVTVF9VU0VTX1BDUkUKK30KKworLy8gVGVzdHMgdGhhdCBhIG5vbi12b2lkIGZ1bmN0
aW9uIGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0
LCBOb25Wb2lkRnVuY3Rpb24pIHsKKyAgQVNTRVJUX0RFQVRIKE5vblZvaWRGdW5jdGlvbigpLCAi
Tm9uVm9pZEZ1bmN0aW9uIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgZnVuY3Rpb25zIHRoYXQgdGFr
ZSBwYXJhbWV0ZXIocykgY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RG
b3JEZWF0aFRlc3QsIEZ1bmN0aW9uV2l0aFBhcmFtZXRlcikgeworICBFWFBFQ1RfREVBVEgoRGll
SWYodHJ1ZSksICJEaWVJZlxcKFxcKSIpOworICBFWFBFQ1RfREVBVEgoRGllSWZMZXNzVGhhbigy
LCAzKSwgIkRpZUlmTGVzc1RoYW4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVBVEgg
Y2FuIGJlIHVzZWQgb3V0c2lkZSBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdCBmaXh0dXJlLgorVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIE91dHNpZGVGaXh0dXJlKSB7CisgIERlYXRoVGVzdFN1YnJv
dXRpbmUoKTsKK30KKworLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyBjYW4gYmUgZG9uZSBpbnNp
ZGUgYSBsb29wLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEluc2lkZUxvb3ApIHsKKyAgZm9y
IChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICBFWFBFQ1RfREVBVEgoRGllSWZMZXNzVGhh
bigtMSwgaSksICJEaWVJZkxlc3NUaGFuIikgPDwgIndoZXJlIGkgPT0gIiA8PCBpOworICB9Cit9
CisKKy8vIFRlc3RzIHRoYXQgYSBjb21wb3VuZCBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgaW4gYSBk
ZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIENvbXBvdW5kU3RhdGVtZW50KSB7
CisgIEVYUEVDVF9ERUFUSCh7ICAvLyBOT0xJTlQKKyAgICBjb25zdCBpbnQgeCA9IDI7CisgICAg
Y29uc3QgaW50IHkgPSB4ICsgMTsKKyAgICBEaWVJZkxlc3NUaGFuKHgsIHkpOworICB9LAorICAi
RGllSWZMZXNzVGhhbiIpOworfQorCisvLyBUZXN0cyB0aGF0IGNvZGUgdGhhdCBkb2Vzbid0IGRp
ZSBjYXVzZXMgYSBkZWF0aCB0ZXN0IHRvIGZhaWwuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
RG9lc05vdERpZSkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgoRGll
SWYoZmFsc2UpLCAiRGllSWYiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0
byBkaWUiKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIGRlYXRoIHRlc3QgZmFpbHMgd2hlbiB0aGUg
ZXJyb3IgbWVzc2FnZSBpc24ndCBleHBlY3RlZC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBF
cnJvck1lc3NhZ2VNaXNtYXRjaCkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBO
T0xJTlQKKyAgICBFWFBFQ1RfREVBVEgoRGllSWYodHJ1ZSksICJEaWVJZkxlc3NUaGFuIikgPDwg
IkVuZCBvZiBkZWF0aCB0ZXN0IG1lc3NhZ2UuIjsKKyAgfSwgImRpZWQgYnV0IG5vdCB3aXRoIGV4
cGVjdGVkIGVycm9yIik7Cit9CisKKy8vIE9uIGV4aXQsICphYm9ydGVkIHdpbGwgYmUgdHJ1ZSBp
ZmYgdGhlIEVYUEVDVF9ERUFUSCgpIHN0YXRlbWVudAorLy8gYWJvcnRlZCB0aGUgZnVuY3Rpb24u
Cit2b2lkIEV4cGVjdERlYXRoVGVzdEhlbHBlcihib29sKiBhYm9ydGVkKSB7CisgICphYm9ydGVk
ID0gdHJ1ZTsKKyAgRVhQRUNUX0RFQVRIKERpZUlmKGZhbHNlKSwgIkRpZUlmIik7ICAvLyBUaGlz
IGFzc2VydGlvbiBzaG91bGQgZmFpbC4KKyAgKmFib3J0ZWQgPSBmYWxzZTsKK30KKworLy8gVGVz
dHMgdGhhdCBFWFBFQ1RfREVBVEggZG9lc24ndCBhYm9ydCB0aGUgdGVzdCBvbiBmYWlsdXJlLgor
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEVYUEVDVF9ERUFUSCkgeworICBib29sIGFib3J0ZWQg
PSB0cnVlOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFeHBlY3REZWF0aFRlc3RIZWxwZXIo
JmFib3J0ZWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGRpZSIpOwor
ICBFWFBFQ1RfRkFMU0UoYWJvcnRlZCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQVRI
IGRvZXMgYWJvcnQgdGhlIHRlc3Qgb24gZmFpbHVyZS4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0
LCBBU1NFUlRfREVBVEgpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgYWJvcnRlZCA9IHRydWU7CisgICAgQVNTRVJUX0RF
QVRIKERpZUlmKGZhbHNlKSwgIkRpZUlmIik7ICAvLyBUaGlzIGFzc2VydGlvbiBzaG91bGQgZmFp
bC4KKyAgICBhYm9ydGVkID0gZmFsc2U7CisgIH0sICJmYWlsZWQgdG8gZGllIik7CisgIEVYUEVD
VF9UUlVFKGFib3J0ZWQpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSCBldmFsdWF0
ZXMgdGhlIGFyZ3VtZW50cyBleGFjdGx5IG9uY2UuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
U2luZ2xlRXZhbHVhdGlvbikgeworICBpbnQgeCA9IDM7CisgIEVYUEVDVF9ERUFUSChEaWVJZigo
Kyt4KSA9PSA0KSwgIkRpZUlmIik7CisKKyAgY29uc3QgY2hhciogcmVnZXggPSAiRGllSWYiOwor
ICBjb25zdCBjaGFyKiByZWdleF9zYXZlID0gcmVnZXg7CisgIEVYUEVDVF9ERUFUSChEaWVJZkxl
c3NUaGFuKDMsIDQpLCByZWdleCsrKTsKKyAgRVhQRUNUX0VRKHJlZ2V4X3NhdmUgKyAxLCByZWdl
eCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgcnVuLWF3YXkgZGVhdGggdGVzdHMgYXJlIHJlcG9ydGVk
IGFzIGZhaWx1cmVzLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFJ1bmF3YXlJc0ZhaWx1cmUp
IHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKHN0YXRpY19jYXN0PHZv
aWQ+KDApLCAiRm9vIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZGll
LiIpOworfQorCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHJlcG9ydCBleGVjdXRpbmcgJ3Jl
dHVybicgaW4gdGhlIHN0YXRlbWVudCBhcworLy8gZmFpbHVyZS4KK1RFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBSZXR1cm5Jc0ZhaWx1cmUpIHsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJU
X0RFQVRIKHJldHVybiwgIkJhciIpLAorICAgICAgICAgICAgICAgICAgICAgICAiaWxsZWdhbCBy
ZXR1cm4gaW4gdGVzdCBzdGF0ZW1lbnQuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0RF
QlVHX0RFQVRIIHdvcmtzIGFzIGV4cGVjdGVkLCB0aGF0IGlzLCB5b3UgY2FuIHN0cmVhbSBhCisv
LyBtZXNzYWdlIHRvIGl0LCBhbmQgaW4gZGVidWcgbW9kZSBpdDoKKy8vIDEuIEFzc2VydHMgb24g
ZGVhdGguCisvLyAyLiBIYXMgbm8gc2lkZSBlZmZlY3QuCisvLworLy8gQW5kIGluIG9wdCBtb2Rl
LCBpdDoKKy8vIDEuICBIYXMgc2lkZSBlZmZlY3RzIGJ1dCBkb2VzIG5vdCBhc3NlcnQuCitURVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgVGVzdEV4cGVjdERlYnVnRGVhdGgpIHsKKyAgaW50IHNpZGVl
ZmZlY3QgPSAwOworCisgIC8vIFB1dCB0aGUgcmVnZXggaW4gYSBsb2NhbCB2YXJpYWJsZSB0byBt
YWtlIHN1cmUgd2UgZG9uJ3QgZ2V0IGFuICJ1bnVzZWQiCisgIC8vIHdhcm5pbmcgaW4gb3B0IG1v
ZGUuCisgIGNvbnN0IGNoYXIqIHJlZ2V4ID0gImRlYXRoLipEaWVJbkRlYnVnRWxzZTEyIjsKKwor
ICBFWFBFQ1RfREVCVUdfREVBVEgoRGllSW5EZWJ1Z0Vsc2UxMigmc2lkZWVmZmVjdCksIHJlZ2V4
KQorICAgICAgPDwgIk11c3QgYWNjZXB0IGEgc3RyZWFtZWQgbWVzc2FnZSI7CisKKyMgaWZkZWYg
TkRFQlVHCisKKyAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgb2NjdXJzIGluIG9wdCBt
b2RlIChzaWRlZWZmZWN0KS4KKyAgRVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0KTsKKworIyBlbHNl
CisKKyAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgZG9lcyBub3Qgb2NjdXIgaW4gZGJn
IG1vZGUgKG5vIHNpZGVlZmZlY3QpLgorICBFWFBFQ1RfRVEoMCwgc2lkZWVmZmVjdCk7CisKKyMg
ZW5kaWYKK30KKworLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVCVUdfREVBVEggd29ya3MgYXMgZXhw
ZWN0ZWQsIHRoYXQgaXMsIHlvdSBjYW4gc3RyZWFtIGEKKy8vIG1lc3NhZ2UgdG8gaXQsIGFuZCBp
biBkZWJ1ZyBtb2RlIGl0OgorLy8gMS4gQXNzZXJ0cyBvbiBkZWF0aC4KKy8vIDIuIEhhcyBubyBz
aWRlIGVmZmVjdC4KKy8vCisvLyBBbmQgaW4gb3B0IG1vZGUsIGl0OgorLy8gMS4gIEhhcyBzaWRl
IGVmZmVjdHMgYnV0IGRvZXMgbm90IGFzc2VydC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBU
ZXN0QXNzZXJ0RGVidWdEZWF0aCkgeworICBpbnQgc2lkZWVmZmVjdCA9IDA7CisKKyAgQVNTRVJU
X0RFQlVHX0RFQVRIKERpZUluRGVidWdFbHNlMTIoJnNpZGVlZmZlY3QpLCAiZGVhdGguKkRpZUlu
RGVidWdFbHNlMTIiKQorICAgICAgPDwgIk11c3QgYWNjZXB0IGEgc3RyZWFtZWQgbWVzc2FnZSI7
CisKKyMgaWZkZWYgTkRFQlVHCisKKyAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgb2Nj
dXJzIGluIG9wdCBtb2RlIChzaWRlZWZmZWN0KS4KKyAgRVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0
KTsKKworIyBlbHNlCisKKyAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgZG9lcyBub3Qg
b2NjdXIgaW4gZGJnIG1vZGUgKG5vIHNpZGVlZmZlY3QpLgorICBFWFBFQ1RfRVEoMCwgc2lkZWVm
ZmVjdCk7CisKKyMgZW5kaWYKK30KKworIyBpZm5kZWYgTkRFQlVHCisKK3ZvaWQgRXhwZWN0RGVi
dWdEZWF0aEhlbHBlcihib29sKiBhYm9ydGVkKSB7CisgICphYm9ydGVkID0gdHJ1ZTsKKyAgRVhQ
RUNUX0RFQlVHX0RFQVRIKHJldHVybiwgIiIpIDw8ICJUaGlzIGlzIGV4cGVjdGVkIHRvIGZhaWwu
IjsKKyAgKmFib3J0ZWQgPSBmYWxzZTsKK30KKworIyAgaWYgR1RFU1RfT1NfV0lORE9XUworVEVT
VChQb3BVcERlYXRoVGVzdCwgRG9lc05vdFNob3dQb3BVcE9uQWJvcnQpIHsKKyAgcHJpbnRmKCJU
aGlzIHRlc3Qgc2hvdWxkIGJlIGNvbnNpZGVyZWQgZmFpbGluZyBpZiBpdCBzaG93cyAiCisgICAg
ICAgICAiYW55IHBvcC11cCBkaWFsb2dzLlxuIik7CisgIGZmbHVzaChzdGRvdXQpOworCisgIEVY
UEVDVF9ERUFUSCh7CisgICAgdGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA9
IGZhbHNlOworICAgIGFib3J0KCk7CisgIH0sICIiKTsKK30KKyMgIGVuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQlVHX0RFQVRIIGluIGRlYnVnIG1v
ZGUgZG9lcyBub3QgYWJvcnQKKy8vIHRoZSBmdW5jdGlvbi4KK1RFU1RfRihUZXN0Rm9yRGVhdGhU
ZXN0LCBFeHBlY3REZWJ1Z0RlYXRoRG9lc05vdEFib3J0KSB7CisgIGJvb2wgYWJvcnRlZCA9IHRy
dWU7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEV4cGVjdERlYnVnRGVhdGhIZWxwZXIoJmFi
b3J0ZWQpLCAiIik7CisgIEVYUEVDVF9GQUxTRShhYm9ydGVkKTsKK30KKwordm9pZCBBc3NlcnRE
ZWJ1Z0RlYXRoSGVscGVyKGJvb2wqIGFib3J0ZWQpIHsKKyAgKmFib3J0ZWQgPSB0cnVlOworICBH
VEVTVF9MT0dfKElORk8pIDw8ICJCZWZvcmUgQVNTRVJUX0RFQlVHX0RFQVRIIjsKKyAgQVNTRVJU
X0RFQlVHX0RFQVRIKEdURVNUX0xPR18oSU5GTykgPDwgIkluIEFTU0VSVF9ERUJVR19ERUFUSCI7
IHJldHVybiwgIiIpCisgICAgICA8PCAiVGhpcyBpcyBleHBlY3RlZCB0byBmYWlsLiI7CisgIEdU
RVNUX0xPR18oSU5GTykgPDwgIkFmdGVyIEFTU0VSVF9ERUJVR19ERUFUSCI7CisgICphYm9ydGVk
ID0gZmFsc2U7Cit9CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQlVHX0RFQVRIIGluIGRlYnVn
IG1vZGUgYWJvcnRzIHRoZSBmdW5jdGlvbiBvbgorLy8gZmFpbHVyZS4KK1RFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzKSB7CisgIHN0YXRpYyBib29sIGFib3J0
ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVi
dWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9
CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzMikgewor
ICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVD
VF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVi
dWdEZWF0aEFib3J0czMpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZh
bHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9y
dGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JE
ZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM0KSB7CisgIHN0YXRpYyBib29sIGFib3J0
ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVi
dWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9
CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzNSkgewor
ICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVD
VF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVi
dWdEZWF0aEFib3J0czYpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZh
bHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9y
dGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JE
ZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM3KSB7CisgIHN0YXRpYyBib29sIGFib3J0
ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVi
dWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9
CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzOCkgewor
ICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVD
VF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVi
dWdEZWF0aEFib3J0czkpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZh
bHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9y
dGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JE
ZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHMxMCkgeworICBzdGF0aWMgYm9vbCBhYm9y
dGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERl
YnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOwor
fQorCisjIGVuZGlmICAvLyBfTkRFQlVHCisKKy8vIFRlc3RzIHRoZSAqX0VYSVQgZmFtaWx5IG9m
IG1hY3JvcywgdXNpbmcgYSB2YXJpZXR5IG9mIHByZWRpY2F0ZXMuCitzdGF0aWMgdm9pZCBUZXN0
RXhpdE1hY3JvcygpIHsKKyAgRVhQRUNUX0VYSVQoX2V4aXQoMSksICB0ZXN0aW5nOjpFeGl0ZWRX
aXRoQ29kZSgxKSwgICIiKTsKKyAgQVNTRVJUX0VYSVQoX2V4aXQoNDIpLCB0ZXN0aW5nOjpFeGl0
ZWRXaXRoQ29kZSg0MiksICIiKTsKKworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisKKyAgLy8gT2Yg
YWxsIHNpZ25hbHMgZWZmZWN0cyBvbiB0aGUgcHJvY2VzcyBleGl0IGNvZGUsIG9ubHkgdGhvc2Ug
b2YgU0lHQUJSVAorICAvLyBhcmUgZG9jdW1lbnRlZCBvbiBXaW5kb3dzLgorICAvLyBTZWUgaHR0
cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvcXVlcnktYmkvbS9kd3d6a3Q0Yy4KKyAgRVhQ
RUNUX0VYSVQocmFpc2UoU0lHQUJSVCksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDMpLCAiIikg
PDwgImJfYXIiOworCisjIGVsaWYgIUdURVNUX09TX0ZVQ0hTSUEKKworICAvLyBGdWNoc2lhIGhh
cyBubyB1bml4IHNpZ25hbHMuCisgIEVYUEVDVF9FWElUKHJhaXNlKFNJR0tJTEwpLCB0ZXN0aW5n
OjpLaWxsZWRCeVNpZ25hbChTSUdLSUxMKSwgIiIpIDw8ICJmb28iOworICBBU1NFUlRfRVhJVChy
YWlzZShTSUdVU1IyKSwgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHVVNSMiksICIiKSA8PCAi
YmFyIjsKKworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRf
RVhJVChfZXhpdCgwKSwgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHU0VHViksICIiKQorICAg
ICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgdG9vLiI7CisgIH0sICJUaGlzIGZhaWx1
cmUgaXMgZXhwZWN0ZWQsIHRvby4iKTsKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwor
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9FWElU
KHJhaXNlKFNJR1NFR1YpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgwKSwgIiIpCisgICAgICA8
PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiI7CisgIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhw
ZWN0ZWQuIik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFeGl0TWFjcm9zKSB7Cisg
IFRlc3RFeGl0TWFjcm9zKCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFeGl0TWFj
cm9zVXNpbmdGb3JrKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9y
aykgPSB0cnVlOworICBUZXN0RXhpdE1hY3JvcygpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgSW52YWxpZFN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9z
dHlsZSkgPSAicm9jb2NvIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
CisgICAgRVhQRUNUX0RFQVRIKF9leGl0KDApLCAiIikgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBl
Y3RlZC4iOworICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOworfQorCitURVNUX0Yo
VGVzdEZvckRlYXRoVGVzdCwgRGVhdGhUZXN0RmFpbGVkT3V0cHV0KSB7CisgIHRlc3Rpbmc6OkdU
RVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKAorICAgICAgRVhQRUNUX0RFQVRIKERpZVdpdGhNZXNzYWdlKCJkZWF0aFxuIiksCisg
ICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIG1lc3NhZ2UiKSwKKyAgICAgICJBY3R1YWwgbXNn
OlxuIgorICAgICAgIlsgIERFQVRIICAgXSBkZWF0aFxuIik7Cit9CisKK1RFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBEZWF0aFRlc3RVbmV4cGVjdGVkUmV0dXJuT3V0cHV0KSB7CisgIHRlc3Rpbmc6
OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKAorICAgICAgRVhQRUNUX0RFQVRIKHsKKyAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgInJldHVybmluZ1xuIik7CisgICAgICAgICAgZmZsdXNoKHN0ZGVycik7CisgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9LCAiIiksCisgICAgICAiICAgIFJlc3VsdDogaWxsZWdhbCByZXR1
cm4gaW4gdGVzdCBzdGF0ZW1lbnQuXG4iCisgICAgICAiIEVycm9yIG1zZzpcbiIKKyAgICAgICJb
ICBERUFUSCAgIF0gcmV0dXJuaW5nXG4iKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3Qs
IERlYXRoVGVzdEJhZEV4aXRDb2RlT3V0cHV0KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVh
dGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAorICAg
ICAgRVhQRUNUX0VYSVQoRGllV2l0aE1lc3NhZ2UoImV4aXRpbmcgd2l0aCByYyAxXG4iKSwKKyAg
ICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDMpLAorICAgICAgICAgICAg
ICAgICAgImV4cGVjdGVkIG1lc3NhZ2UiKSwKKyAgICAgICIgICAgUmVzdWx0OiBkaWVkIGJ1dCBu
b3Qgd2l0aCBleHBlY3RlZCBleGl0IGNvZGU6XG4iCisgICAgICAiICAgICAgICAgICAgRXhpdGVk
IHdpdGggZXhpdCBzdGF0dXMgMVxuIgorICAgICAgIkFjdHVhbCBtc2c6XG4iCisgICAgICAiWyAg
REVBVEggICBdIGV4aXRpbmcgd2l0aCByYyAxXG4iKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0
aFRlc3QsIERlYXRoVGVzdE11bHRpTGluZU1hdGNoRmFpbCkgeworICB0ZXN0aW5nOjpHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RSgKKyAgICAgIEVYUEVDVF9ERUFUSChEaWVXaXRoTWVzc2FnZSgibGluZSAxXG5saW5lIDJcbmxp
bmUgM1xuIiksCisgICAgICAgICAgICAgICAgICAgImxpbmUgMVxueHl6XG5saW5lIDNcbiIpLAor
ICAgICAgIkFjdHVhbCBtc2c6XG4iCisgICAgICAiWyAgREVBVEggICBdIGxpbmUgMVxuIgorICAg
ICAgIlsgIERFQVRIICAgXSBsaW5lIDJcbiIKKyAgICAgICJbICBERUFUSCAgIF0gbGluZSAzXG4i
KTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERlYXRoVGVzdE11bHRpTGluZU1hdGNo
UGFzcykgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3Qi
OworICBFWFBFQ1RfREVBVEgoRGllV2l0aE1lc3NhZ2UoImxpbmUgMVxubGluZSAyXG5saW5lIDNc
biIpLAorICAgICAgICAgICAgICAgImxpbmUgMVxubGluZSAyXG5saW5lIDNcbiIpOworfQorCisv
LyBBIERlYXRoVGVzdEZhY3RvcnkgdGhhdCByZXR1cm5zIE1vY2tEZWF0aFRlc3RzLgorY2xhc3Mg
TW9ja0RlYXRoVGVzdEZhY3RvcnkgOiBwdWJsaWMgRGVhdGhUZXN0RmFjdG9yeSB7CisgcHVibGlj
OgorICBNb2NrRGVhdGhUZXN0RmFjdG9yeSgpOworICB2aXJ0dWFsIGJvb2wgQ3JlYXRlKGNvbnN0
IGNoYXIqIHN0YXRlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6
OmludGVybmFsOjpSRSogcmVnZXgsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUsIERlYXRoVGVzdCoqIHRlc3QpOworCisgIC8vIFNldHMgdGhlIHBhcmFt
ZXRlcnMgZm9yIHN1YnNlcXVlbnQgY2FsbHMgdG8gQ3JlYXRlLgorICB2b2lkIFNldFBhcmFtZXRl
cnMoYm9vbCBjcmVhdGUsIERlYXRoVGVzdDo6VGVzdFJvbGUgcm9sZSwKKyAgICAgICAgICAgICAg
ICAgICAgIGludCBzdGF0dXMsIGJvb2wgcGFzc2VkKTsKKworICAvLyBBY2Nlc3NvcnMuCisgIGlu
dCBBc3N1bWVSb2xlQ2FsbHMoKSBjb25zdCB7IHJldHVybiBhc3N1bWVfcm9sZV9jYWxsc187IH0K
KyAgaW50IFdhaXRDYWxscygpIGNvbnN0IHsgcmV0dXJuIHdhaXRfY2FsbHNfOyB9CisgIHNpemVf
dCBQYXNzZWRDYWxscygpIGNvbnN0IHsgcmV0dXJuIHBhc3NlZF9hcmdzXy5zaXplKCk7IH0KKyAg
Ym9vbCBQYXNzZWRBcmd1bWVudChpbnQgbikgY29uc3QgeyByZXR1cm4gcGFzc2VkX2FyZ3NfW25d
OyB9CisgIHNpemVfdCBBYm9ydENhbGxzKCkgY29uc3QgeyByZXR1cm4gYWJvcnRfYXJnc18uc2l6
ZSgpOyB9CisgIERlYXRoVGVzdDo6QWJvcnRSZWFzb24gQWJvcnRBcmd1bWVudChpbnQgbikgY29u
c3QgeworICAgIHJldHVybiBhYm9ydF9hcmdzX1tuXTsKKyAgfQorICBib29sIFRlc3REZWxldGVk
KCkgY29uc3QgeyByZXR1cm4gdGVzdF9kZWxldGVkXzsgfQorCisgcHJpdmF0ZToKKyAgZnJpZW5k
IGNsYXNzIE1vY2tEZWF0aFRlc3Q7CisgIC8vIElmIHRydWUsIENyZWF0ZSB3aWxsIHJldHVybiBh
IE1vY2tEZWF0aFRlc3Q7IG90aGVyd2lzZSBpdCByZXR1cm5zCisgIC8vIE5VTEwuCisgIGJvb2wg
Y3JlYXRlXzsKKyAgLy8gVGhlIHZhbHVlIGEgTW9ja0RlYXRoVGVzdCB3aWxsIHJldHVybiBmcm9t
IGl0cyBBc3N1bWVSb2xlIG1ldGhvZC4KKyAgRGVhdGhUZXN0OjpUZXN0Um9sZSByb2xlXzsKKyAg
Ly8gVGhlIHZhbHVlIGEgTW9ja0RlYXRoVGVzdCB3aWxsIHJldHVybiBmcm9tIGl0cyBXYWl0IG1l
dGhvZC4KKyAgaW50IHN0YXR1c187CisgIC8vIFRoZSB2YWx1ZSBhIE1vY2tEZWF0aFRlc3Qgd2ls
bCByZXR1cm4gZnJvbSBpdHMgUGFzc2VkIG1ldGhvZC4KKyAgYm9vbCBwYXNzZWRfOworCisgIC8v
IE51bWJlciBvZiB0aW1lcyBBc3N1bWVSb2xlIHdhcyBjYWxsZWQuCisgIGludCBhc3N1bWVfcm9s
ZV9jYWxsc187CisgIC8vIE51bWJlciBvZiB0aW1lcyBXYWl0IHdhcyBjYWxsZWQuCisgIGludCB3
YWl0X2NhbGxzXzsKKyAgLy8gVGhlIGFyZ3VtZW50cyB0byB0aGUgY2FsbHMgdG8gUGFzc2VkIHNp
bmNlIHRoZSBsYXN0IGNhbGwgdG8KKyAgLy8gU2V0UGFyYW1ldGVycy4KKyAgc3RkOjp2ZWN0b3I8
Ym9vbD4gcGFzc2VkX2FyZ3NfOworICAvLyBUaGUgYXJndW1lbnRzIHRvIHRoZSBjYWxscyB0byBB
Ym9ydCBzaW5jZSB0aGUgbGFzdCBjYWxsIHRvCisgIC8vIFNldFBhcmFtZXRlcnMuCisgIHN0ZDo6
dmVjdG9yPERlYXRoVGVzdDo6QWJvcnRSZWFzb24+IGFib3J0X2FyZ3NfOworICAvLyBUcnVlIGlm
IHRoZSBsYXN0IE1vY2tEZWF0aFRlc3QgcmV0dXJuZWQgYnkgQ3JlYXRlIGhhcyBiZWVuCisgIC8v
IGRlbGV0ZWQuCisgIGJvb2wgdGVzdF9kZWxldGVkXzsKK307CisKKworLy8gQSBEZWF0aFRlc3Qg
aW1wbGVtZW50YXRpb24gdXNlZnVsIGluIHRlc3RpbmcuICBJdCByZXR1cm5zIHZhbHVlcyBzZXQK
Ky8vIGF0IGl0cyBjcmVhdGlvbiBmcm9tIGl0cyB2YXJpb3VzIGluaGVyaXRlZCBEZWF0aFRlc3Qg
bWV0aG9kcywgYW5kCisvLyByZXBvcnRzIGNhbGxzIHRvIHRob3NlIG1ldGhvZHMgdG8gaXRzIHBh
cmVudCBNb2NrRGVhdGhUZXN0RmFjdG9yeQorLy8gb2JqZWN0LgorY2xhc3MgTW9ja0RlYXRoVGVz
dCA6IHB1YmxpYyBEZWF0aFRlc3QgeworIHB1YmxpYzoKKyAgTW9ja0RlYXRoVGVzdChNb2NrRGVh
dGhUZXN0RmFjdG9yeSAqcGFyZW50LAorICAgICAgICAgICAgICAgIFRlc3RSb2xlIHJvbGUsIGlu
dCBzdGF0dXMsIGJvb2wgcGFzc2VkKSA6CisgICAgICBwYXJlbnRfKHBhcmVudCksIHJvbGVfKHJv
bGUpLCBzdGF0dXNfKHN0YXR1cyksIHBhc3NlZF8ocGFzc2VkKSB7CisgIH0KKyAgdmlydHVhbCB+
TW9ja0RlYXRoVGVzdCgpIHsKKyAgICBwYXJlbnRfLT50ZXN0X2RlbGV0ZWRfID0gdHJ1ZTsKKyAg
fQorICB2aXJ0dWFsIFRlc3RSb2xlIEFzc3VtZVJvbGUoKSB7CisgICAgKytwYXJlbnRfLT5hc3N1
bWVfcm9sZV9jYWxsc187CisgICAgcmV0dXJuIHJvbGVfOworICB9CisgIHZpcnR1YWwgaW50IFdh
aXQoKSB7CisgICAgKytwYXJlbnRfLT53YWl0X2NhbGxzXzsKKyAgICByZXR1cm4gc3RhdHVzXzsK
KyAgfQorICB2aXJ0dWFsIGJvb2wgUGFzc2VkKGJvb2wgZXhpdF9zdGF0dXNfb2spIHsKKyAgICBw
YXJlbnRfLT5wYXNzZWRfYXJnc18ucHVzaF9iYWNrKGV4aXRfc3RhdHVzX29rKTsKKyAgICByZXR1
cm4gcGFzc2VkXzsKKyAgfQorICB2aXJ0dWFsIHZvaWQgQWJvcnQoQWJvcnRSZWFzb24gcmVhc29u
KSB7CisgICAgcGFyZW50Xy0+YWJvcnRfYXJnc18ucHVzaF9iYWNrKHJlYXNvbik7CisgIH0KKwor
IHByaXZhdGU6CisgIE1vY2tEZWF0aFRlc3RGYWN0b3J5KiBjb25zdCBwYXJlbnRfOworICBjb25z
dCBUZXN0Um9sZSByb2xlXzsKKyAgY29uc3QgaW50IHN0YXR1c187CisgIGNvbnN0IGJvb2wgcGFz
c2VkXzsKK307CisKKworLy8gTW9ja0RlYXRoVGVzdEZhY3RvcnkgY29uc3RydWN0b3IuCitNb2Nr
RGVhdGhUZXN0RmFjdG9yeTo6TW9ja0RlYXRoVGVzdEZhY3RvcnkoKQorICAgIDogY3JlYXRlXyh0
cnVlKSwKKyAgICAgIHJvbGVfKERlYXRoVGVzdDo6T1ZFUlNFRV9URVNUKSwKKyAgICAgIHN0YXR1
c18oMCksCisgICAgICBwYXNzZWRfKHRydWUpLAorICAgICAgYXNzdW1lX3JvbGVfY2FsbHNfKDAp
LAorICAgICAgd2FpdF9jYWxsc18oMCksCisgICAgICBwYXNzZWRfYXJnc18oKSwKKyAgICAgIGFi
b3J0X2FyZ3NfKCkgeworfQorCisKKy8vIFNldHMgdGhlIHBhcmFtZXRlcnMgZm9yIHN1YnNlcXVl
bnQgY2FsbHMgdG8gQ3JlYXRlLgordm9pZCBNb2NrRGVhdGhUZXN0RmFjdG9yeTo6U2V0UGFyYW1l
dGVycyhib29sIGNyZWF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRGVhdGhUZXN0OjpUZXN0Um9sZSByb2xlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgc3RhdHVzLCBib29sIHBhc3NlZCkgeworICBjcmVhdGVfID0gY3Jl
YXRlOworICByb2xlXyA9IHJvbGU7CisgIHN0YXR1c18gPSBzdGF0dXM7CisgIHBhc3NlZF8gPSBw
YXNzZWQ7CisKKyAgYXNzdW1lX3JvbGVfY2FsbHNfID0gMDsKKyAgd2FpdF9jYWxsc18gPSAwOwor
ICBwYXNzZWRfYXJnc18uY2xlYXIoKTsKKyAgYWJvcnRfYXJnc18uY2xlYXIoKTsKK30KKworCisv
LyBTZXRzIHRlc3QgdG8gTlVMTCAoaWYgY3JlYXRlXyBpcyBmYWxzZSkgb3IgdG8gdGhlIGFkZHJl
c3Mgb2YgYSBuZXcKKy8vIE1vY2tEZWF0aFRlc3Qgb2JqZWN0IHdpdGggcGFyYW1ldGVycyB0YWtl
biBmcm9tIHRoZSBsYXN0IGNhbGwKKy8vIHRvIFNldFBhcmFtZXRlcnMgKGlmIGNyZWF0ZV8gaXMg
dHJ1ZSkuICBBbHdheXMgcmV0dXJucyB0cnVlLgorYm9vbCBNb2NrRGVhdGhUZXN0RmFjdG9yeTo6
Q3JlYXRlKGNvbnN0IGNoYXIqIC8qc3RhdGVtZW50Ki8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UkUqIC8qcmVnZXgqLywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKmZpbGUqLywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgLypsaW5lKi8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRGVhdGhUZXN0KiogdGVzdCkgeworICB0ZXN0X2RlbGV0
ZWRfID0gZmFsc2U7CisgIGlmIChjcmVhdGVfKSB7CisgICAgKnRlc3QgPSBuZXcgTW9ja0RlYXRo
VGVzdCh0aGlzLCByb2xlXywgc3RhdHVzXywgcGFzc2VkXyk7CisgIH0gZWxzZSB7CisgICAgKnRl
c3QgPSBOVUxMOworICB9CisgIHJldHVybiB0cnVlOworfQorCisvLyBBIHRlc3QgZml4dHVyZSBm
b3IgdGVzdGluZyB0aGUgbG9naWMgb2YgdGhlIEdURVNUX0RFQVRIX1RFU1RfIG1hY3JvLgorLy8g
SXQgaW5zdGFsbHMgYSBNb2NrRGVhdGhUZXN0RmFjdG9yeSB0aGF0IGlzIHVzZWQgZm9yIHRoZSBk
dXJhdGlvbgorLy8gb2YgdGhlIHRlc3QgY2FzZS4KK2NsYXNzIE1hY3JvTG9naWNEZWF0aFRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICBzdGF0aWMgdGVzdGluZzo6
aW50ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KiByZXBsYWNlcl87CisgIHN0YXRpYyBN
b2NrRGVhdGhUZXN0RmFjdG9yeSogZmFjdG9yeV87CisKKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0
Q2FzZSgpIHsKKyAgICBmYWN0b3J5XyA9IG5ldyBNb2NrRGVhdGhUZXN0RmFjdG9yeTsKKyAgICBy
ZXBsYWNlcl8gPSBuZXcgdGVzdGluZzo6aW50ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5
KGZhY3RvcnlfKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7Cisg
ICAgZGVsZXRlIHJlcGxhY2VyXzsKKyAgICByZXBsYWNlcl8gPSBOVUxMOworICAgIGRlbGV0ZSBm
YWN0b3J5XzsKKyAgICBmYWN0b3J5XyA9IE5VTEw7CisgIH0KKworICAvLyBSdW5zIGEgZGVhdGgg
dGVzdCB0aGF0IGJyZWFrcyB0aGUgcnVsZXMgYnkgcmV0dXJuaW5nLiAgU3VjaCBhIGRlYXRoCisg
IC8vIHRlc3QgY2Fubm90IGJlIHJ1biBkaXJlY3RseSBmcm9tIGEgdGVzdCByb3V0aW5lIHRoYXQg
dXNlcyBhCisgIC8vIE1vY2tEZWF0aFRlc3QsIG9yIHRoZSByZW1haW5kZXIgb2YgdGhlIHJvdXRp
bmUgd2lsbCBub3QgYmUgZXhlY3V0ZWQuCisgIHN0YXRpYyB2b2lkIFJ1blJldHVybmluZ0RlYXRo
VGVzdChib29sKiBmbGFnKSB7CisgICAgQVNTRVJUX0RFQVRIKHsgIC8vIE5PTElOVAorICAgICAg
KmZsYWcgPSB0cnVlOworICAgICAgcmV0dXJuOworICAgIH0sICIiKTsKKyAgfQorfTsKKwordGVz
dGluZzo6aW50ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KiBNYWNyb0xvZ2ljRGVhdGhU
ZXN0OjpyZXBsYWNlcl8KKyAgICA9IE5VTEw7CitNb2NrRGVhdGhUZXN0RmFjdG9yeSogTWFjcm9M
b2dpY0RlYXRoVGVzdDo6ZmFjdG9yeV8gPSBOVUxMOworCisKKy8vIFRlc3QgdGhhdCBub3RoaW5n
IGhhcHBlbnMgd2hlbiB0aGUgZmFjdG9yeSBkb2Vzbid0IHJldHVybiBhIERlYXRoVGVzdDoKK1RF
U1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBOb3RoaW5nSGFwcGVucykgeworICBib29sIGZsYWcg
PSBmYWxzZTsKKyAgZmFjdG9yeV8tPlNldFBhcmFtZXRlcnMoZmFsc2UsIERlYXRoVGVzdDo6T1ZF
UlNFRV9URVNULCAwLCB0cnVlKTsKKyAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7Cisg
IEVYUEVDVF9GQUxTRShmbGFnKTsKKyAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5Bc3N1bWVSb2xl
Q2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+V2FpdENhbGxzKCkpOworICBFWFBF
Q1RfRVEoMFUsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKKyAgRVhQRUNUX0VRKDBVLCBmYWN0
b3J5Xy0+QWJvcnRDYWxscygpKTsKKyAgRVhQRUNUX0ZBTFNFKGZhY3RvcnlfLT5UZXN0RGVsZXRl
ZCgpKTsKK30KKworLy8gVGVzdCB0aGF0IHRoZSBwYXJlbnQgcHJvY2VzcyBkb2Vzbid0IHJ1biB0
aGUgZGVhdGggdGVzdCBjb2RlLAorLy8gYW5kIHRoYXQgdGhlIFBhc3NlZCBtZXRob2QgcmV0dXJu
cyBmYWxzZSB3aGVuIHRoZSAoc2ltdWxhdGVkKQorLy8gY2hpbGQgcHJvY2VzcyBleGl0cyB3aXRo
IHN0YXR1cyAwOgorVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxkRXhpdHNTdWNjZXNz
ZnVsbHkpIHsKKyAgYm9vbCBmbGFnID0gZmFsc2U7CisgIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJz
KHRydWUsIERlYXRoVGVzdDo6T1ZFUlNFRV9URVNULCAwLCB0cnVlKTsKKyAgRVhQRUNUX0RFQVRI
KGZsYWcgPSB0cnVlLCAiIik7CisgIEVYUEVDVF9GQUxTRShmbGFnKTsKKyAgRVhQRUNUX0VRKDEs
IGZhY3RvcnlfLT5Bc3N1bWVSb2xlQ2FsbHMoKSk7CisgIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+
V2FpdENhbGxzKCkpOworICBBU1NFUlRfRVEoMVUsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsK
KyAgRVhQRUNUX0ZBTFNFKGZhY3RvcnlfLT5QYXNzZWRBcmd1bWVudCgwKSk7CisgIEVYUEVDVF9F
USgwVSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7CisgIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5U
ZXN0RGVsZXRlZCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgUGFzc2VkIG1ldGhvZCB3YXMg
Z2l2ZW4gdGhlIGFyZ3VtZW50ICJ0cnVlIiB3aGVuCisvLyB0aGUgKHNpbXVsYXRlZCkgY2hpbGQg
cHJvY2VzcyBleGl0cyB3aXRoIHN0YXR1cyAxOgorVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3Qs
IENoaWxkRXhpdHNVbnN1Y2Nlc3NmdWxseSkgeworICBib29sIGZsYWcgPSBmYWxzZTsKKyAgZmFj
dG9yeV8tPlNldFBhcmFtZXRlcnModHJ1ZSwgRGVhdGhUZXN0OjpPVkVSU0VFX1RFU1QsIDEsIHRy
dWUpOworICBFWFBFQ1RfREVBVEgoZmxhZyA9IHRydWUsICIiKTsKKyAgRVhQRUNUX0ZBTFNFKGZs
YWcpOworICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKKyAgRVhQ
RUNUX0VRKDEsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7CisgIEFTU0VSVF9FUSgxVSwgZmFjdG9y
eV8tPlBhc3NlZENhbGxzKCkpOworICBFWFBFQ1RfVFJVRShmYWN0b3J5Xy0+UGFzc2VkQXJndW1l
bnQoMCkpOworICBFWFBFQ1RfRVEoMFUsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOworICBFWFBF
Q1RfVFJVRShmYWN0b3J5Xy0+VGVzdERlbGV0ZWQoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhl
IChzaW11bGF0ZWQpIGNoaWxkIHByb2Nlc3MgZXhlY3V0ZXMgdGhlIGRlYXRoIHRlc3QKKy8vIGNv
ZGUsIGFuZCBpcyBhYm9ydGVkIHdpdGggdGhlIGNvcnJlY3QgQWJvcnRSZWFzb24gaWYgaXQKKy8v
IGV4ZWN1dGVzIGEgcmV0dXJuIHN0YXRlbWVudC4KK1RFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0
LCBDaGlsZFBlcmZvcm1zUmV0dXJuKSB7CisgIGJvb2wgZmxhZyA9IGZhbHNlOworICBmYWN0b3J5
Xy0+U2V0UGFyYW1ldGVycyh0cnVlLCBEZWF0aFRlc3Q6OkVYRUNVVEVfVEVTVCwgMCwgdHJ1ZSk7
CisgIFJ1blJldHVybmluZ0RlYXRoVGVzdCgmZmxhZyk7CisgIEVYUEVDVF9UUlVFKGZsYWcpOwor
ICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKKyAgRVhQRUNUX0VR
KDAsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPlBh
c3NlZENhbGxzKCkpOworICBFWFBFQ1RfRVEoMVUsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOwor
ICBFWFBFQ1RfRVEoRGVhdGhUZXN0OjpURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQs
CisgICAgICAgICAgICBmYWN0b3J5Xy0+QWJvcnRBcmd1bWVudCgwKSk7CisgIEVYUEVDVF9UUlVF
KGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgKHNpbXVs
YXRlZCkgY2hpbGQgcHJvY2VzcyBpcyBhYm9ydGVkIHdpdGggdGhlCisvLyBjb3JyZWN0IEFib3J0
UmVhc29uIGlmIGl0IGRvZXMgbm90IGRpZS4KK1RFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBD
aGlsZERvZXNOb3REaWUpIHsKKyAgYm9vbCBmbGFnID0gZmFsc2U7CisgIGZhY3RvcnlfLT5TZXRQ
YXJhbWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6RVhFQ1VURV9URVNULCAwLCB0cnVlKTsKKyAgRVhQ
RUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7CisgIEVYUEVDVF9UUlVFKGZsYWcpOworICBFWFBF
Q1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKKyAgRVhQRUNUX0VRKDAsIGZh
Y3RvcnlfLT5XYWl0Q2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPlBhc3NlZENh
bGxzKCkpOworICAvLyBUaGlzIHRpbWUgdGhlcmUgYXJlIHR3byBjYWxscyB0byBBYm9ydDogb25l
IHNpbmNlIHRoZSB0ZXN0IGRpZG4ndAorICAvLyBkaWUsIGFuZCBhbm90aGVyIGZyb20gdGhlIFJl
dHVyblNlbnRpbmVsIHdoZW4gaXQncyBkZXN0cm95ZWQuICBUaGUKKyAgLy8gc2VudGluZWwgbm9y
bWFsbHkgaXNuJ3QgZGVzdHJveWVkIGlmIGEgdGVzdCBkb2Vzbid0IGRpZSwgc2luY2UKKyAgLy8g
X2V4aXQoMikgaXMgY2FsbGVkIGluIHRoYXQgY2FzZSBieSBGb3JraW5nRGVhdGhUZXN0LCBidXQg
bm90IGJ5CisgIC8vIG91ciBNb2NrRGVhdGhUZXN0LgorICBBU1NFUlRfRVEoMlUsIGZhY3Rvcnlf
LT5BYm9ydENhbGxzKCkpOworICBFWFBFQ1RfRVEoRGVhdGhUZXN0OjpURVNUX0RJRF9OT1RfRElF
LAorICAgICAgICAgICAgZmFjdG9yeV8tPkFib3J0QXJndW1lbnQoMCkpOworICBFWFBFQ1RfRVEo
RGVhdGhUZXN0OjpURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQsCisgICAgICAgICAg
ICBmYWN0b3J5Xy0+QWJvcnRBcmd1bWVudCgxKSk7CisgIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5U
ZXN0RGVsZXRlZCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIHN1Y2Nlc3NmdWwgZGVhdGggdGVz
dCBkb2VzIG5vdCByZWdpc3RlciBhIHN1Y2Nlc3NmdWwKKy8vIHRlc3QgcGFydC4KK1RFU1QoU3Vj
Y2Vzc1JlZ2lzdHJhdGlvbkRlYXRoVGVzdCwgTm9TdWNjZXNzUGFydCkgeworICBFWFBFQ1RfREVB
VEgoX2V4aXQoMSksICIiKTsKKyAgRVhQRUNUX0VRKDAsIEdldFVuaXRUZXN0SW1wbCgpLT5jdXJy
ZW50X3Rlc3RfcmVzdWx0KCktPnRvdGFsX3BhcnRfY291bnQoKSk7Cit9CisKK1RFU1QoU3RyZWFt
aW5nQXNzZXJ0aW9uc0RlYXRoVGVzdCwgRGVhdGhUZXN0KSB7CisgIEVYUEVDVF9ERUFUSChfZXhp
dCgxKSwgIiIpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOworICBBU1NFUlRfREVBVEgoX2V4aXQo
MSksICIiKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX0RFQVRIKF9leGl0KDApLCAiIikgPDwgImV4cGVj
dGVkIGZhaWx1cmUiOworICB9LCAiZXhwZWN0ZWQgZmFpbHVyZSIpOworICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfREVBVEgoX2V4aXQoMCksICIiKSA8PCAi
ZXhwZWN0ZWQgZmFpbHVyZSI7CisgIH0sICJleHBlY3RlZCBmYWlsdXJlIik7Cit9CisKKy8vIFRl
c3RzIHRoYXQgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24gcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcg
d2hlbiB0aGUKKy8vIGxhc3QgZXJyb3IgaXMgMCBhbmQgbm9uLWVtcHR5IHN0cmluZyB3aGVuIGl0
IGlzIG5vbi16ZXJvLgorVEVTVChHZXRMYXN0RXJybm9EZXNjcmlwdGlvbiwgR2V0TGFzdEVycm5v
RGVzY3JpcHRpb25Xb3JrcykgeworICBlcnJubyA9IEVOT0VOVDsKKyAgRVhQRUNUX1NUUk5FKCIi
LCBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpLmNfc3RyKCkpOworICBlcnJubyA9IDA7CisgIEVY
UEVDVF9TVFJFUSgiIiwgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKS5jX3N0cigpKTsKK30KKwor
IyBpZiBHVEVTVF9PU19XSU5ET1dTCitURVNUKEF1dG9IYW5kbGVUZXN0LCBBdXRvSGFuZGxlV29y
a3MpIHsKKyAgSEFORExFIGhhbmRsZSA9IDo6Q3JlYXRlRXZlbnQoTlVMTCwgRkFMU0UsIEZBTFNF
LCBOVUxMKTsKKyAgQVNTRVJUX05FKElOVkFMSURfSEFORExFX1ZBTFVFLCBoYW5kbGUpOworCisg
IC8vIFRlc3RzIHRoYXQgdGhlIEF1dG9IYW5kbGUgaXMgY29ycmVjdGx5IGluaXRpYWxpemVkIHdp
dGggYSBoYW5kbGUuCisgIHRlc3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxlIGF1dG9faGFuZGxl
KGhhbmRsZSk7CisgIEVYUEVDVF9FUShoYW5kbGUsIGF1dG9faGFuZGxlLkdldCgpKTsKKworICAv
LyBUZXN0cyB0aGF0IFJlc2V0IGFzc2lnbnMgSU5WQUxJRF9IQU5ETEVfVkFMVUUuCisgIC8vIE5v
dGUgdGhhdCB0aGlzIGNhbm5vdCB2ZXJpZnkgd2hldGhlciB0aGUgb3JpZ2luYWwgaGFuZGxlIGlz
IGNsb3NlZC4KKyAgYXV0b19oYW5kbGUuUmVzZXQoKTsKKyAgRVhQRUNUX0VRKElOVkFMSURfSEFO
RExFX1ZBTFVFLCBhdXRvX2hhbmRsZS5HZXQoKSk7CisKKyAgLy8gVGVzdHMgdGhhdCBSZXNldCBh
c3NpZ25zIHRoZSBuZXcgaGFuZGxlLgorICAvLyBOb3RlIHRoYXQgdGhpcyBjYW5ub3QgdmVyaWZ5
IHdoZXRoZXIgdGhlIG9yaWdpbmFsIGhhbmRsZSBpcyBjbG9zZWQuCisgIGhhbmRsZSA9IDo6Q3Jl
YXRlRXZlbnQoTlVMTCwgRkFMU0UsIEZBTFNFLCBOVUxMKTsKKyAgQVNTRVJUX05FKElOVkFMSURf
SEFORExFX1ZBTFVFLCBoYW5kbGUpOworICBhdXRvX2hhbmRsZS5SZXNldChoYW5kbGUpOworICBF
WFBFQ1RfRVEoaGFuZGxlLCBhdXRvX2hhbmRsZS5HZXQoKSk7CisKKyAgLy8gVGVzdHMgdGhhdCBB
dXRvSGFuZGxlIGNvbnRhaW5zIElOVkFMSURfSEFORExFX1ZBTFVFIGJ5IGRlZmF1bHQuCisgIHRl
c3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxlIGF1dG9faGFuZGxlMjsKKyAgRVhQRUNUX0VRKElO
VkFMSURfSEFORExFX1ZBTFVFLCBhdXRvX2hhbmRsZTIuR2V0KCkpOworfQorIyBlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUworCisjIGlmIEdURVNUX09TX1dJTkRPV1MKK3R5cGVkZWYgdW5zaWdu
ZWQgX19pbnQ2NCBCaWdnZXN0UGFyc2FibGU7Cit0eXBlZGVmIHNpZ25lZCBfX2ludDY0IEJpZ2dl
c3RTaWduZWRQYXJzYWJsZTsKKyMgZWxzZQordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgQmln
Z2VzdFBhcnNhYmxlOwordHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIEJpZ2dlc3RTaWduZWRQYXJz
YWJsZTsKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworLy8gV2UgY2Fubm90IHVzZSBz
dGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSBhcyBpdCBjbGFzaGVzIHdpdGggdGhlCisvLyBt
YXgoKSBtYWNybyBkZWZpbmVkIGJ5IDx3aW5kb3dzLmg+LgorY29uc3QgQmlnZ2VzdFBhcnNhYmxl
IGtCaWdnZXN0UGFyc2FibGVNYXggPSBVTExPTkdfTUFYOworY29uc3QgQmlnZ2VzdFNpZ25lZFBh
cnNhYmxlIGtCaWdnZXN0U2lnbmVkUGFyc2FibGVNYXggPSBMTE9OR19NQVg7CisKK1RFU1QoUGFy
c2VOYXR1cmFsTnVtYmVyVGVzdCwgUmVqZWN0c0ludmFsaWRGb3JtYXQpIHsKKyAgQmlnZ2VzdFBh
cnNhYmxlIHJlc3VsdCA9IDA7CisKKyAgLy8gUmVqZWN0cyBub24tbnVtYmVycy4KKyAgRVhQRUNU
X0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcigibm9uLW51bWJlciBzdHJpbmciLCAmcmVzdWx0KSk7
CisKKyAgLy8gUmVqZWN0cyBudW1iZXJzIHdpdGggd2hpdGVzcGFjZSBwcmVmaXguCisgIEVYUEVD
VF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoIiAxMjMiLCAmcmVzdWx0KSk7CisKKyAgLy8gUmVq
ZWN0cyBuZWdhdGl2ZSBudW1iZXJzLgorICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVy
KCItMTIzIiwgJnJlc3VsdCkpOworCisgIC8vIFJlamVjdHMgbnVtYmVycyBzdGFydGluZyB3aXRo
IGEgcGx1cyBzaWduLgorICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCIrMTIzIiwg
JnJlc3VsdCkpOworICBlcnJubyA9IDA7Cit9CisKK1RFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVz
dCwgUmVqZWN0c092ZXJmbG93bk51bWJlcnMpIHsKKyAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9
IDA7CisKKyAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcigiOTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTkiLCAmcmVzdWx0KSk7CisKKyAgc2lnbmVkIGNoYXIgY2hhcl9yZXN1bHQgPSAwOwor
ICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCIyMDAiLCAmY2hhcl9yZXN1bHQpKTsK
KyAgZXJybm8gPSAwOworfQorCitURVNUKFBhcnNlTmF0dXJhbE51bWJlclRlc3QsIEFjY2VwdHNW
YWxpZE51bWJlcnMpIHsKKyAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7CisKKyAgcmVzdWx0
ID0gMDsKKyAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKCIxMjMiLCAmcmVzdWx0KSk7
CisgIEVYUEVDVF9FUSgxMjNVLCByZXN1bHQpOworCisgIC8vIENoZWNrIDAgYXMgYW4gZWRnZSBj
YXNlLgorICByZXN1bHQgPSAxOworICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjAi
LCAmcmVzdWx0KSk7CisgIEVYUEVDVF9FUSgwVSwgcmVzdWx0KTsKKworICByZXN1bHQgPSAxOwor
ICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjAwMDAwIiwgJnJlc3VsdCkpOworICBF
WFBFQ1RfRVEoMFUsIHJlc3VsdCk7Cit9CisKK1RFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwg
QWNjZXB0c1R5cGVMaW1pdHMpIHsKKyAgTWVzc2FnZSBtc2c7CisgIG1zZyA8PCBrQmlnZ2VzdFBh
cnNhYmxlTWF4OworCisgIEJpZ2dlc3RQYXJzYWJsZSByZXN1bHQgPSAwOworICBFWFBFQ1RfVFJV
RShQYXJzZU5hdHVyYWxOdW1iZXIobXNnLkdldFN0cmluZygpLCAmcmVzdWx0KSk7CisgIEVYUEVD
VF9FUShrQmlnZ2VzdFBhcnNhYmxlTWF4LCByZXN1bHQpOworCisgIE1lc3NhZ2UgbXNnMjsKKyAg
bXNnMiA8PCBrQmlnZ2VzdFNpZ25lZFBhcnNhYmxlTWF4OworCisgIEJpZ2dlc3RTaWduZWRQYXJz
YWJsZSBzaWduZWRfcmVzdWx0ID0gMDsKKyAgRVhQRUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVy
KG1zZzIuR2V0U3RyaW5nKCksICZzaWduZWRfcmVzdWx0KSk7CisgIEVYUEVDVF9FUShrQmlnZ2Vz
dFNpZ25lZFBhcnNhYmxlTWF4LCBzaWduZWRfcmVzdWx0KTsKKworICBNZXNzYWdlIG1zZzM7Cisg
IG1zZzMgPDwgSU5UX01BWDsKKworICBpbnQgaW50X3Jlc3VsdCA9IDA7CisgIEVYUEVDVF9UUlVF
KFBhcnNlTmF0dXJhbE51bWJlcihtc2czLkdldFN0cmluZygpLCAmaW50X3Jlc3VsdCkpOworICBF
WFBFQ1RfRVEoSU5UX01BWCwgaW50X3Jlc3VsdCk7CisKKyAgTWVzc2FnZSBtc2c0OworICBtc2c0
IDw8IFVJTlRfTUFYOworCisgIHVuc2lnbmVkIGludCB1aW50X3Jlc3VsdCA9IDA7CisgIEVYUEVD
VF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihtc2c0LkdldFN0cmluZygpLCAmdWludF9yZXN1bHQp
KTsKKyAgRVhQRUNUX0VRKFVJTlRfTUFYLCB1aW50X3Jlc3VsdCk7Cit9CisKK1RFU1QoUGFyc2VO
YXR1cmFsTnVtYmVyVGVzdCwgV29ya3NGb3JTaG9ydGVySW50ZWdlcnMpIHsKKyAgc2hvcnQgc2hv
cnRfcmVzdWx0ID0gMDsKKyAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKCIxMjMiLCAm
c2hvcnRfcmVzdWx0KSk7CisgIEVYUEVDVF9FUSgxMjMsIHNob3J0X3Jlc3VsdCk7CisKKyAgc2ln
bmVkIGNoYXIgY2hhcl9yZXN1bHQgPSAwOworICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1i
ZXIoIjEyMyIsICZjaGFyX3Jlc3VsdCkpOworICBFWFBFQ1RfRVEoMTIzLCBjaGFyX3Jlc3VsdCk7
Cit9CisKKyMgaWYgR1RFU1RfT1NfV0lORE9XUworVEVTVChFbnZpcm9ubWVudFRlc3QsIEhhbmRs
ZUZpdHNJbnRvU2l6ZVQpIHsKKyAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHRlc3QgYWZ0ZXIgdGhp
cyBjb25kaXRpb24gaXMgdmVyaWZpZWQKKyAgLy8gaW4gYSBzdGF0aWMgYXNzZXJ0aW9uIGluIGd0
ZXN0LWRlYXRoLXRlc3QuY2MgaW4gdGhlIGZ1bmN0aW9uCisgIC8vIEdldFN0YXR1c0ZpbGVEZXNj
cmlwdG9yLgorICBBU1NFUlRfVFJVRShzaXplb2YoSEFORExFKSA8PSBzaXplb2Yoc2l6ZV90KSk7
Cit9CisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKy8vIFRlc3RzIHRoYXQgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRC9BU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEIHRyaWdnZXIKKy8v
IGZhaWx1cmVzIHdoZW4gZGVhdGggdGVzdHMgYXJlIGF2YWlsYWJsZSBvbiB0aGUgc3lzdGVtLgor
VEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zRGVhdGhUZXN0LCBFeHBlY3RzRGVhdGhXaGVuRGVh
dGhUZXN0c0F2YWlsYWJsZSkgeworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKERpZUluc2lk
ZSgiQ29uZERlYXRoVGVzdEV4cGVjdE1hY3JvIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImRlYXRoIGluc2lkZSBDb25kRGVhdGhUZXN0RXhwZWN0TWFjcm8iKTsKKyAgQVNTRVJUX0RF
QVRIX0lGX1NVUFBPUlRFRChEaWVJbnNpZGUoIkNvbmREZWF0aFRlc3RBc3NlcnRNYWNybyIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWF0aCBpbnNpZGUgQ29uZERlYXRoVGVzdEFz
c2VydE1hY3JvIik7CisKKyAgLy8gRW1wdHkgc3RhdGVtZW50IHdpbGwgbm90IGNyYXNoLCB3aGlj
aCBtdXN0IHRyaWdnZXIgYSBmYWlsdXJlLgorICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBF
Q1RfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKSwgIiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RShBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKSwgIiIpOworfQorCitURVNUKEluRGVh
dGhUZXN0Q2hpbGREZWF0aFRlc3QsIFJlcG9ydHNEZWF0aFRlc3RDb3JyZWN0bHlJbkZhc3RTdHls
ZSkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOwor
ICBFWFBFQ1RfRkFMU0UoSW5EZWF0aFRlc3RDaGlsZCgpKTsKKyAgRVhQRUNUX0RFQVRIKHsKKyAg
ICBmcHJpbnRmKHN0ZGVyciwgSW5EZWF0aFRlc3RDaGlsZCgpID8gIkluc2lkZSIgOiAiT3V0c2lk
ZSIpOworICAgIGZmbHVzaChzdGRlcnIpOworICAgIF9leGl0KDEpOworICB9LCAiSW5zaWRlIik7
Cit9CisKK1RFU1QoSW5EZWF0aFRlc3RDaGlsZERlYXRoVGVzdCwgUmVwb3J0c0RlYXRoVGVzdENv
cnJlY3RseUluVGhyZWFkU2FmZVN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhf
dGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7CisgIEVYUEVDVF9GQUxTRShJbkRlYXRoVGVzdENo
aWxkKCkpOworICBFWFBFQ1RfREVBVEgoeworICAgIGZwcmludGYoc3RkZXJyLCBJbkRlYXRoVGVz
dENoaWxkKCkgPyAiSW5zaWRlIiA6ICJPdXRzaWRlIik7CisgICAgZmZsdXNoKHN0ZGVycik7Cisg
ICAgX2V4aXQoMSk7CisgIH0sICJJbnNpZGUiKTsKK30KKworI2Vsc2UgIC8vICFHVEVTVF9IQVNf
REVBVEhfVEVTVCBmb2xsb3dzCisKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpDYXB0dXJlU3Rk
ZXJyOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldENhcHR1cmVkU3RkZXJyOworCisvLyBU
ZXN0cyB0aGF0IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQvQVNTRVJUX0RFQVRIX0lGX1NVUFBP
UlRFRCBhcmUgc3RpbGwKKy8vIGRlZmluZWQgYnV0IGRvIG5vdCB0cmlnZ2VyIGZhaWx1cmVzIHdo
ZW4gZGVhdGggdGVzdHMgYXJlIG5vdCBhdmFpbGFibGUgb24KKy8vIHRoZSBzeXN0ZW0uCitURVNU
KENvbmRpdGlvbmFsRGVhdGhNYWNyb3NUZXN0LCBXYXJuc1doZW5EZWF0aFRlc3RzTm90QXZhaWxh
YmxlKSB7CisgIC8vIEVtcHR5IHN0YXRlbWVudCB3aWxsIG5vdCBjcmFzaCwgYnV0IHRoYXQgc2hv
dWxkIG5vdCB0cmlnZ2VyIGEgZmFpbHVyZQorICAvLyB3aGVuIGRlYXRoIHRlc3RzIGFyZSBub3Qg
c3VwcG9ydGVkLgorICBDYXB0dXJlU3RkZXJyKCk7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JU
RUQoOywgIiIpOworICBzdGQ6OnN0cmluZyBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVycigpOwor
ICBBU1NFUlRfVFJVRShOVUxMICE9IHN0cnN0cihvdXRwdXQuY19zdHIoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMg
cGxhdGZvcm0iKSk7CisgIEFTU0VSVF9UUlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5jX3N0cigp
LCAiOyIpKTsKKworICAvLyBUaGUgc3RyZWFtZWQgbWVzc2FnZSBzaG91bGQgbm90IGJlIHByaW50
ZWQgYXMgdGhlcmUgaXMgbm8gdGVzdCBmYWlsdXJlLgorICBDYXB0dXJlU3RkZXJyKCk7CisgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIpIDw8ICJzdHJlYW1lZCBtZXNzYWdlIjsKKyAg
b3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKKyAgQVNTRVJUX1RSVUUoTlVMTCA9PSBzdHJz
dHIob3V0cHV0LmNfc3RyKCksICJzdHJlYW1lZCBtZXNzYWdlIikpOworCisgIENhcHR1cmVTdGRl
cnIoKTsKKyAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIik7ICAvLyBOT0xJTlQKKyAg
b3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKKyAgQVNTRVJUX1RSVUUoTlVMTCAhPSBzdHJz
dHIob3V0cHV0LmNfc3RyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWF0aCB0
ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikpOworICBBU1NFUlRfVFJV
RShOVUxMICE9IHN0cnN0cihvdXRwdXQuY19zdHIoKSwgIjsiKSk7CisKKyAgQ2FwdHVyZVN0ZGVy
cigpOworICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKSA8PCAic3RyZWFtZWQgbWVz
c2FnZSI7ICAvLyBOT0xJTlQKKyAgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKKyAgQVNT
RVJUX1RSVUUoTlVMTCA9PSBzdHJzdHIob3V0cHV0LmNfc3RyKCksICJzdHJlYW1lZCBtZXNzYWdl
IikpOworfQorCit2b2lkIEZ1bmNXaXRoQXNzZXJ0KGludCogbikgeworICBBU1NFUlRfREVBVEhf
SUZfU1VQUE9SVEVEKHJldHVybjssICIiKTsKKyAgKCpuKSsrOworfQorCisvLyBUZXN0cyB0aGF0
IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgZG9lcyBub3QgcmV0dXJuIGZyb20gdGhlIGN1cnJl
bnQKKy8vIGZ1bmN0aW9uIChhcyBBU1NFUlRfREVBVEggZG9lcykgaWYgZGVhdGggdGVzdHMgYXJl
IG5vdCBzdXBwb3J0ZWQuCitURVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NUZXN0LCBBc3NlcnRE
ZWF0RG9lc05vdFJldHVybmhJZlVuc3VwcG9ydGVkKSB7CisgIGludCBuID0gMDsKKyAgRnVuY1dp
dGhBc3NlcnQoJm4pOworICBFWFBFQ1RfRVEoMSwgbik7Cit9CisKKyNlbmRpZiAgLy8gIUdURVNU
X0hBU19ERUFUSF9URVNUCisKKy8vIFRlc3RzIHRoYXQgdGhlIGRlYXRoIHRlc3QgbWFjcm9zIGV4
cGFuZCB0byBjb2RlIHdoaWNoIG1heSBvciBtYXkgbm90CisvLyBiZSBmb2xsb3dlZCBieSBvcGVy
YXRvcjw8LCBhbmQgdGhhdCBpbiBlaXRoZXIgY2FzZSB0aGUgY29tcGxldGUgdGV4dAorLy8gY29t
cHJpc2VzIG9ubHkgYSBzaW5nbGUgQysrIHN0YXRlbWVudC4KKy8vCisvLyBUaGUgc3ludGF4IHNo
b3VsZCB3b3JrIHdoZXRoZXIgZGVhdGggdGVzdHMgYXJlIGF2YWlsYWJsZSBvciBub3QuCitURVNU
KENvbmRpdGlvbmFsRGVhdGhNYWNyb3NTeW50YXhEZWF0aFRlc3QsIFNpbmdsZVN0YXRlbWVudCkg
eworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICAvLyBUaGlzIHdvdWxkIGZhaWwgaWYgZXhlY3V0
ZWQ7IHRoaXMgaXMgYSBjb21waWxhdGlvbiB0ZXN0IG9ubHkKKyAgICBBU1NFUlRfREVBVEhfSUZf
U1VQUE9SVEVEKHJldHVybiwgIiIpOworCisgIGlmIChBbHdheXNUcnVlKCkpCisgICAgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRChfZXhpdCgxKSwgIiIpOworICBlbHNlCisgICAgLy8gVGhpcyBl
bXB0eSAiZWxzZSIgYnJhbmNoIGlzIG1lYW50IHRvIGVuc3VyZSB0aGF0IEVYUEVDVF9ERUFUSAor
ICAgIC8vIGRvZXNuJ3QgZXhwYW5kIGludG8gYW4gImlmIiBzdGF0ZW1lbnQgd2l0aG91dCBhbiAi
ZWxzZSIKKyAgICA7ICAvLyBOT0xJTlQKKworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICBBU1NF
UlRfREVBVEhfSUZfU1VQUE9SVEVEKHJldHVybiwgIiIpIDw8ICJkaWQgbm90IGRpZSI7CisKKyAg
aWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgOyAgLy8gTk9MSU5UCisgIGVsc2UKKyAgICBFWFBFQ1Rf
REVBVEhfSUZfU1VQUE9SVEVEKF9leGl0KDEpLCAiIikgPDwgMSA8PCAyIDw8IDM7Cit9CisKKy8v
IFRlc3RzIHRoYXQgY29uZGl0aW9uYWwgZGVhdGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUg
d2hpY2ggaW50ZXJhY3RzCisvLyB3ZWxsIHdpdGggc3dpdGNoIHN0YXRlbWVudHMuCitURVNUKENv
bmRpdGlvbmFsRGVhdGhNYWNyb3NTeW50YXhEZWF0aFRlc3QsIFN3aXRjaFN0YXRlbWVudCkgewor
ICAvLyBNaWNyb3NvZnQgY29tcGlsZXIgdXN1YWxseSBjb21wbGFpbnMgYWJvdXQgc3dpdGNoIHN0
YXRlbWVudHMgd2l0aG91dAorICAvLyBjYXNlIGxhYmVscy4gV2Ugc3VwcHJlc3MgdGhhdCB3YXJu
aW5nIGZvciB0aGlzIHRlc3QuCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQw
NjUpCisKKyAgc3dpdGNoICgwKQorICAgIGRlZmF1bHQ6CisgICAgICBBU1NFUlRfREVBVEhfSUZf
U1VQUE9SVEVEKF9leGl0KDEpLCAiIikKKyAgICAgICAgICA8PCAiZXhpdCBpbiBkZWZhdWx0IHN3
aXRjaCBoYW5kbGVyIjsKKworICBzd2l0Y2ggKDApCisgICAgY2FzZSAwOgorICAgICAgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRChfZXhpdCgxKSwgIiIpIDw8ICJleGl0IGluIHN3aXRjaCBjYXNl
IjsKKworICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKK30KKworLy8gVGVzdHMg
dGhhdCBhIHRlc3QgY2FzZSB3aG9zZSBuYW1lIGVuZHMgd2l0aCAiRGVhdGhUZXN0IiB3b3JrcyBm
aW5lCisvLyBvbiBXaW5kb3dzLgorVEVTVChOb3RBRGVhdGhUZXN0LCBUZXN0KSB7CisgIFNVQ0NF
RUQoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xl
dGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4Yjk0NzBmYzg4
YWQxN2FhZWI2NjRkNDdjMjcwY2ZjYWE3MzFiZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNjCkBA
IC0wLDAgKzEsOTIgQEAKKy8vIENvcHlyaWdodCAyMDEwLCBHb29nbGUgSW5jLgorLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworLy8KKy8vIFRlc3RzIHRoYXQgdmVyaWZ5IGludGVyYWN0aW9uIG9mIGV4Y2VwdGlvbnMg
YW5kIGRlYXRoIHRlc3RzLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisj
IGlmIEdURVNUX0hBU19TRUgKKyMgIGluY2x1ZGUgPHdpbmRvd3MuaD4gICAgICAgICAgLy8gRm9y
IFJhaXNlRXhjZXB0aW9uKCkuCisjIGVuZGlmCisKKyMgaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3Bp
LmgiCisKKyMgaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworIyAgaW5jbHVkZSA8ZXhjZXB0aW9u
PiAgLy8gRm9yIHN0ZDo6ZXhjZXB0aW9uLgorCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHJl
cG9ydCB0aHJvd24gZXhjZXB0aW9ucyBhcyBmYWlsdXJlcyBhbmQgdGhhdCB0aGUKKy8vIGV4Y2Vw
dGlvbnMgZG8gbm90IGVzY2FwZSBkZWF0aCB0ZXN0IG1hY3Jvcy4KK1RFU1QoQ3h4RXhjZXB0aW9u
RGVhdGhUZXN0LCBFeGNlcHRpb25Jc0ZhaWx1cmUpIHsKKyAgdHJ5IHsKKyAgICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgodGhyb3cgMSwgIiIpLCAidGhyZXcgYW4gZXhjZXB0
aW9uIik7CisgIH0gY2F0Y2ggKC4uLikgeyAgLy8gTk9MSU5UCisgICAgRkFJTCgpIDw8ICJBbiBl
eGNlcHRpb24gZXNjYXBlZCBhIGRlYXRoIHRlc3QgbWFjcm8gaW52b2NhdGlvbiAiCisgICAgICAg
ICAgIDw8ICJ3aXRoIGNhdGNoX2V4Y2VwdGlvbnMgIgorICAgICAgICAgICA8PCAodGVzdGluZzo6
R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpOwor
ICB9Cit9CisKK2NsYXNzIFRlc3RFeGNlcHRpb24gOiBwdWJsaWMgc3RkOjpleGNlcHRpb24gewor
IHB1YmxpYzoKKyAgdmlydHVhbCBjb25zdCBjaGFyKiB3aGF0KCkgY29uc3QgdGhyb3coKSB7IHJl
dHVybiAiZXhjZXB0aW9uYWwgbWVzc2FnZSI7IH0KK307CisKK1RFU1QoQ3h4RXhjZXB0aW9uRGVh
dGhUZXN0LCBQcmludHNNZXNzYWdlRm9yU3RkRXhjZXB0aW9ucykgeworICAvLyBWZXJpZmllcyB0
aGF0IHRoZSBleGNlcHRpb24gbWVzc2FnZSBpcyBxdW90ZWQgaW4gdGhlIGZhaWx1cmUgdGV4dC4K
KyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKHRocm93IFRlc3RFeGNlcHRp
b24oKSwgIiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0aW9uYWwgbWVzc2Fn
ZSIpOworICAvLyBWZXJpZmllcyB0aGF0IHRoZSBsb2NhdGlvbiBpcyBtZW50aW9uZWQgaW4gdGhl
IGZhaWx1cmUgdGV4dC4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKHRo
cm93IFRlc3RFeGNlcHRpb24oKSwgIiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZ29v
Z2xldGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MiKTsKK30KKyMgZW5kaWYgIC8vIEdURVNUX0hB
U19FWENFUFRJT05TCisKKyMgaWYgR1RFU1RfSEFTX1NFSAorLy8gVGVzdHMgdGhhdCBlbmFibGlu
ZyBpbnRlcmNlcHRpb24gb2YgU0VIIGV4Y2VwdGlvbnMgd2l0aCB0aGUKKy8vIGNhdGNoX2V4Y2Vw
dGlvbnMgZmxhZyBkb2VzIG5vdCBpbnRlcmZlcmUgd2l0aCBTRUggZXhjZXB0aW9ucyBiZWluZwor
Ly8gdHJlYXRlZCBhcyBkZWF0aCBieSBkZWF0aCB0ZXN0cy4KK1RFU1QoU2VoRXhjZXB0aW9uRGVh
c1Rlc3QsIENhdGNoRXhjZXB0aW9uc0RvZXNOb3RJbnRlcmZlcmUpIHsKKyAgRVhQRUNUX0RFQVRI
KFJhaXNlRXhjZXB0aW9uKDQyLCAweDAsIDAsIE5VTEwpLCAiIikKKyAgICAgIDw8ICJ3aXRoIGNh
dGNoX2V4Y2VwdGlvbnMgIgorICAgICAgPDwgKHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hfZXhj
ZXB0aW9ucykgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKK30KKyMgZW5kaWYKKworI2VuZGlm
ICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFy
Z3YpIHsKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICB0ZXN0aW5n
OjpHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpID0gR1RFU1RfRU5BQkxFX0NBVENIX0VYQ0VQ
VElPTlNfICE9IDA7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0LnB5IGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWVudi12YXItdGVzdC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMWVmZWVlMWVhYjhjNmRhY2I1ZDI5MjZmNGI1YzkwODA5MzhkYjEzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWVu
di12YXItdGVzdC5weQpAQCAtMCwwICsxLDExNyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
CisjIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworIiIiVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCBjb3JyZWN0
bHkgcGFyc2VzIGVudmlyb25tZW50IHZhcmlhYmxlcy4iIiIKKworaW1wb3J0IG9zCitpbXBvcnQg
Z3Rlc3RfdGVzdF91dGlscworCisKK0lTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdudCcKK0lTX0xJ
TlVYID0gb3MubmFtZSA9PSAncG9zaXgnIGFuZCBvcy51bmFtZSgpWzBdID09ICdMaW51eCcKKwor
Q09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdnb29nbGV0
ZXN0LWVudi12YXItdGVzdF8nKQorCitlbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkKKworCitk
ZWYgQXNzZXJ0RXEoZXhwZWN0ZWQsIGFjdHVhbCk6CisgIGlmIGV4cGVjdGVkICE9IGFjdHVhbDoK
KyAgICBwcmludCAnRXhwZWN0ZWQ6ICVzJyAlIChleHBlY3RlZCwpCisgICAgcHJpbnQgJyAgQWN0
dWFsOiAlcycgJSAoYWN0dWFsLCkKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCisKK2RlZiBT
ZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgorICAiIiJTZXRzIHRoZSBlbnYgdmFyaWFibGUgdG8g
J3ZhbHVlJzsgdW5zZXRzIGl0IHdoZW4gJ3ZhbHVlJyBpcyBOb25lLiIiIgorCisgIGlmIHZhbHVl
IGlzIG5vdCBOb25lOgorICAgIGVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQorICBlbGlmIGVudl92
YXIgaW4gZW52aXJvbjoKKyAgICBkZWwgZW52aXJvbltlbnZfdmFyXQorCisKK2RlZiBHZXRGbGFn
KGZsYWcpOgorICAiIiJSdW5zIGdvb2dsZXRlc3QtZW52LXZhci10ZXN0XyBhbmQgcmV0dXJucyBp
dHMgb3V0cHV0LiIiIgorCisgIGFyZ3MgPSBbQ09NTUFORF0KKyAgaWYgZmxhZyBpcyBub3QgTm9u
ZToKKyAgICBhcmdzICs9IFtmbGFnXQorICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9j
ZXNzKGFyZ3MsIGVudj1lbnZpcm9uKS5vdXRwdXQKKworCitkZWYgVGVzdEZsYWcoZmxhZywgdGVz
dF92YWwsIGRlZmF1bHRfdmFsKToKKyAgIiIiVmVyaWZpZXMgdGhhdCB0aGUgZ2l2ZW4gZmxhZyBp
cyBhZmZlY3RlZCBieSB0aGUgY29ycmVzcG9uZGluZyBlbnYgdmFyLiIiIgorCisgIGVudl92YXIg
PSAnR1RFU1RfJyArIGZsYWcudXBwZXIoKQorICBTZXRFbnZWYXIoZW52X3ZhciwgdGVzdF92YWwp
CisgIEFzc2VydEVxKHRlc3RfdmFsLCBHZXRGbGFnKGZsYWcpKQorICBTZXRFbnZWYXIoZW52X3Zh
ciwgTm9uZSkKKyAgQXNzZXJ0RXEoZGVmYXVsdF92YWwsIEdldEZsYWcoZmxhZykpCisKKworY2xh
c3MgR1Rlc3RFbnZWYXJUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorCisgIGRlZiB0
ZXN0RW52VmFyQWZmZWN0c0ZsYWcoc2VsZik6CisgICAgIiIiVGVzdHMgdGhhdCBlbnZpcm9ubWVu
dCB2YXJpYWJsZSBzaG91bGQgYWZmZWN0IHRoZSBjb3JyZXNwb25kaW5nIGZsYWcuIiIiCisKKyAg
ICBUZXN0RmxhZygnYnJlYWtfb25fZmFpbHVyZScsICcxJywgJzAnKQorICAgIFRlc3RGbGFnKCdj
b2xvcicsICd5ZXMnLCAnYXV0bycpCisgICAgVGVzdEZsYWcoJ2ZpbHRlcicsICdGb29UZXN0LkJh
cicsICcqJykKKyAgICBTZXRFbnZWYXIoJ1hNTF9PVVRQVVRfRklMRScsIE5vbmUpICAjIEZvciAn
b3V0cHV0JyB0ZXN0CisgICAgVGVzdEZsYWcoJ291dHB1dCcsICd4bWw6dG1wL2Zvby54bWwnLCAn
JykKKyAgICBUZXN0RmxhZygncHJpbnRfdGltZScsICcwJywgJzEnKQorICAgIFRlc3RGbGFnKCdy
ZXBlYXQnLCAnOTk5JywgJzEnKQorICAgIFRlc3RGbGFnKCd0aHJvd19vbl9mYWlsdXJlJywgJzEn
LCAnMCcpCisgICAgVGVzdEZsYWcoJ2RlYXRoX3Rlc3Rfc3R5bGUnLCAndGhyZWFkc2FmZScsICdm
YXN0JykKKyAgICBUZXN0RmxhZygnY2F0Y2hfZXhjZXB0aW9ucycsICcwJywgJzEnKQorCisgICAg
aWYgSVNfTElOVVg6CisgICAgICBUZXN0RmxhZygnZGVhdGhfdGVzdF91c2VfZm9yaycsICcxJywg
JzAnKQorICAgICAgVGVzdEZsYWcoJ3N0YWNrX3RyYWNlX2RlcHRoJywgJzAnLCAnMTAwJykKKwor
CisgIGRlZiB0ZXN0WG1sT3V0cHV0RmlsZShzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0ICRYTUxf
T1VUUFVUX0ZJTEUgYWZmZWN0cyB0aGUgb3V0cHV0IGZsYWcuIiIiCisKKyAgICBTZXRFbnZWYXIo
J0dURVNUX09VVFBVVCcsIE5vbmUpCisgICAgU2V0RW52VmFyKCdYTUxfT1VUUFVUX0ZJTEUnLCAn
dG1wL2Jhci54bWwnKQorICAgIEFzc2VydEVxKCd4bWw6dG1wL2Jhci54bWwnLCBHZXRGbGFnKCdv
dXRwdXQnKSkKKworICBkZWYgdGVzdFhtbE91dHB1dEZpbGVPdmVycmlkZShzZWxmKToKKyAgICAi
IiJUZXN0cyB0aGF0ICRYTUxfT1VUUFVUX0ZJTEUgaXMgb3ZlcnJpZGRlbiBieSAkR1RFU1RfT1VU
UFVULiIiIgorCisgICAgU2V0RW52VmFyKCdHVEVTVF9PVVRQVVQnLCAneG1sOnRtcC9mb28ueG1s
JykKKyAgICBTZXRFbnZWYXIoJ1hNTF9PVVRQVVRfRklMRScsICd0bXAvYmFyLnhtbCcpCisgICAg
QXNzZXJ0RXEoJ3htbDp0bXAvZm9vLnhtbCcsIEdldEZsYWcoJ291dHB1dCcpKQorCitpZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWVudi12YXItdGVzdF8u
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0
Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mZDJhYTgyZjc0ZmFhMjEyMDFlNzlhZTBlNWMzYjU2ODU1M2RmMzM3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LWVudi12YXItdGVzdF8uY2MKQEAgLTAsMCArMSwxMjIgQEAKKy8vIENvcHlyaWdodCAyMDA4
LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBBIGhlbHBlciBwcm9ncmFtIGZvciB0
ZXN0aW5nIHRoYXQgR29vZ2xlIFRlc3QgcGFyc2VzIHRoZSBlbnZpcm9ubWVudAorLy8gdmFyaWFi
bGVzIGNvcnJlY3RseS4KKworI2luY2x1ZGUgPGlvc3RyZWFtPgorCisjaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3QuaCIKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCisKK3VzaW5nIDo6
c3RkOjpjb3V0OworCituYW1lc3BhY2UgdGVzdGluZyB7CisKKy8vIFRoZSBwdXJwb3NlIG9mIHRo
aXMgaXMgdG8gbWFrZSB0aGUgdGVzdCBtb3JlIHJlYWxpc3RpYyBieSBlbnN1cmluZworLy8gdGhh
dCB0aGUgVW5pdFRlc3Qgc2luZ2xldG9uIGlzIGNyZWF0ZWQgYmVmb3JlIG1haW4oKSBpcyBlbnRl
cmVkLgorLy8gV2UgZG9uJ3QgYWN0dWFsIHJ1biB0aGUgVEVTVCBpdHNlbGYuCitURVNUKEdUZXN0
RW52VmFyVGVzdCwgRHVtbXkpIHsKK30KKwordm9pZCBQcmludEZsYWcoY29uc3QgY2hhciogZmxh
ZykgeworICBpZiAoc3RyY21wKGZsYWcsICJicmVha19vbl9mYWlsdXJlIikgPT0gMCkgeworICAg
IGNvdXQgPDwgR1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJlKTsKKyAgICByZXR1cm47CisgIH0K
KworICBpZiAoc3RyY21wKGZsYWcsICJjYXRjaF9leGNlcHRpb25zIikgPT0gMCkgeworICAgIGNv
dXQgPDwgR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKTsKKyAgICByZXR1cm47CisgIH0KKwor
ICBpZiAoc3RyY21wKGZsYWcsICJjb2xvciIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZM
QUcoY29sb3IpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgImRlYXRo
X3Rlc3Rfc3R5bGUiKSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rf
c3R5bGUpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgImRlYXRoX3Rl
c3RfdXNlX2ZvcmsiKSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rf
dXNlX2ZvcmspOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgImZpbHRl
ciIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZMQUcoZmlsdGVyKTsKKyAgICByZXR1cm47
CisgIH0KKworICBpZiAoc3RyY21wKGZsYWcsICJvdXRwdXQiKSA9PSAwKSB7CisgICAgY291dCA8
PCBHVEVTVF9GTEFHKG91dHB1dCk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChm
bGFnLCAicHJpbnRfdGltZSIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZMQUcocHJpbnRf
dGltZSk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChmbGFnLCAicmVwZWF0Iikg
PT0gMCkgeworICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhyZXBlYXQpOworICAgIHJldHVybjsKKyAg
fQorCisgIGlmIChzdHJjbXAoZmxhZywgInN0YWNrX3RyYWNlX2RlcHRoIikgPT0gMCkgeworICAg
IGNvdXQgPDwgR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCk7CisgICAgcmV0dXJuOworICB9
CisKKyAgaWYgKHN0cmNtcChmbGFnLCAidGhyb3dfb25fZmFpbHVyZSIpID09IDApIHsKKyAgICBj
b3V0IDw8IEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSk7CisgICAgcmV0dXJuOworICB9CisK
KyAgY291dCA8PCAiSW52YWxpZCBmbGFnIG5hbWUgIiA8PCBmbGFnCisgICAgICAgPDwgIi4gIFZh
bGlkIG5hbWVzIGFyZSBicmVha19vbl9mYWlsdXJlLCBjb2xvciwgZmlsdGVyLCBldGMuXG4iOwor
ICBleGl0KDEpOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFy
Z3YpOworCisgIGlmIChhcmdjICE9IDIpIHsKKyAgICBjb3V0IDw8ICJVc2FnZTogZ29vZ2xldGVz
dC1lbnYtdmFyLXRlc3RfIE5BTUVfT0ZfRkxBR1xuIjsKKyAgICByZXR1cm4gMTsKKyAgfQorCisg
IHRlc3Rpbmc6OlByaW50RmxhZyhhcmd2WzFdKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZmlsZXBhdGgtdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1maWxlcGF0aC10ZXN0
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM3ZjAyZmI0YmQ3Nzk3ZDE0ZDM4M2EwNWZhMTk3YzM2YjMxODI1ZjIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtZmlsZXBhdGgtdGVzdC5jYwpAQCAtMCwwICsxLDY1MSBAQAorLy8gQ29weXJpZ2h0IDIwMDgs
IEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEdvb2dsZSBUZXN0IGZpbGVwYXRoIHV0
aWxpdGllcworLy8KKy8vIFRoaXMgZmlsZSB0ZXN0cyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdXNl
ZCBpbnRlcm5hbGx5IGJ5CisvLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hh
bmdlIHdpdGhvdXQgbm90aWNlLgorLy8KKy8vIFRoaXMgZmlsZSBpcyAjaW5jbHVkZWQgZnJvbSBn
dGVzdC1pbnRlcm5hbC5oLgorLy8gRG8gbm90ICNpbmNsdWRlIHRoaXMgZmlsZSBhbnl3aGVyZSBl
bHNlIQorCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCIKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIK
KworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGluY2x1ZGUgPHdpbmRvd3MuaD4gIC8v
IE5PTElOVAorI2VsaWYgR1RFU1RfT1NfV0lORE9XUworIyBpbmNsdWRlIDxkaXJlY3QuaD4gIC8v
IE5PTElOVAorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCituYW1lc3BhY2Ug
dGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKworI2lmIEdURVNU
X09TX1dJTkRPV1NfTU9CSUxFCisvLyBGSVhNRTogTW92ZSB0aGVzZSB0byB0aGUgUE9TSVggYWRh
cHRlciBzZWN0aW9uIGluCisvLyBndGVzdC1wb3J0LmguCisKKy8vIFdpbmRvd3MgQ0UgZG9lc24n
dCBoYXZlIHRoZSByZW1vdmUgQyBmdW5jdGlvbi4KK2ludCByZW1vdmUoY29uc3QgY2hhciogcGF0
aCkgeworICBMUENXU1RSIHdwYXRoID0gU3RyaW5nOjpBbnNpVG9VdGYxNihwYXRoKTsKKyAgaW50
IHJldCA9IERlbGV0ZUZpbGUod3BhdGgpID8gMCA6IC0xOworICBkZWxldGUgW10gd3BhdGg7Cisg
IHJldHVybiByZXQ7Cit9CisvLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSB0aGUgX3JtZGlyIEMg
ZnVuY3Rpb24uCitpbnQgX3JtZGlyKGNvbnN0IGNoYXIqIHBhdGgpIHsKKyAgRmlsZVBhdGggZmls
ZXBhdGgocGF0aCk7CisgIExQQ1dTVFIgd3BhdGggPSBTdHJpbmc6OkFuc2lUb1V0ZjE2KAorICAg
ICAgZmlsZXBhdGguUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7CisgIGlu
dCByZXQgPSBSZW1vdmVEaXJlY3Rvcnkod3BhdGgpID8gMCA6IC0xOworICBkZWxldGUgW10gd3Bh
dGg7CisgIHJldHVybiByZXQ7Cit9CisKKyNlbHNlCisKK1RFU1QoR2V0Q3VycmVudERpclRlc3Qs
IFJldHVybnNDdXJyZW50RGlyKSB7CisgIGNvbnN0IEZpbGVQYXRoIG9yaWdpbmFsX2RpciA9IEZp
bGVQYXRoOjpHZXRDdXJyZW50RGlyKCk7CisgIEVYUEVDVF9GQUxTRShvcmlnaW5hbF9kaXIuSXNF
bXB0eSgpKTsKKworICBwb3NpeDo6Q2hEaXIoR1RFU1RfUEFUSF9TRVBfKTsKKyAgY29uc3QgRmls
ZVBhdGggY3dkID0gRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKTsKKyAgcG9zaXg6OkNoRGlyKG9y
aWdpbmFsX2Rpci5jX3N0cigpKTsKKworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisKKyAgLy8gU2tp
cHMgdGhlICI6Ii4KKyAgY29uc3QgY2hhciogY29uc3QgY3dkX3dpdGhvdXRfZHJpdmUgPSBzdHJj
aHIoY3dkLmNfc3RyKCksICc6Jyk7CisgIEFTU0VSVF9UUlVFKGN3ZF93aXRob3V0X2RyaXZlICE9
IE5VTEwpOworICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLCBjd2Rfd2l0aG91dF9kcml2
ZSArIDEpOworCisjIGVsc2UKKworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfLCBjd2Quc3Ry
aW5nKCkpOworCisjIGVuZGlmCit9CisKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKKworVEVTVChJc0VtcHR5VGVzdCwgUmV0dXJuc1RydWVGb3JFbXB0eVBhdGgpIHsKKyAgRVhQ
RUNUX1RSVUUoRmlsZVBhdGgoIiIpLklzRW1wdHkoKSk7Cit9CisKK1RFU1QoSXNFbXB0eVRlc3Qs
IFJldHVybnNGYWxzZUZvck5vbkVtcHR5UGF0aCkgeworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgo
ImEiKS5Jc0VtcHR5KCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIi4iKS5Jc0VtcHR5KCkp
OworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImEvYiIpLklzRW1wdHkoKSk7CisgIEVYUEVDVF9G
QUxTRShGaWxlUGF0aCgiYVxcYlxcIikuSXNFbXB0eSgpKTsKK30KKworLy8gUmVtb3ZlRGlyZWN0
b3J5TmFtZSAiIiAtPiAiIgorVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgV2hlbkVtcHR5
TmFtZSkgeworICBFWFBFQ1RfRVEoIiIsIEZpbGVQYXRoKCIiKS5SZW1vdmVEaXJlY3RvcnlOYW1l
KCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZmlsZSIgLT4gImFm
aWxlIgorVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgQnV0Tm9EaXJlY3RvcnkpIHsKKyAg
RVhQRUNUX0VRKCJhZmlsZSIsCisgICAgICBGaWxlUGF0aCgiYWZpbGUiKS5SZW1vdmVEaXJlY3Rv
cnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lICIvYWZpbGUi
IC0+ICJhZmlsZSIKK1RFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFJvb3RGaWxlU2hvdWxk
R2l2ZUZpbGVOYW1lKSB7CisgIEVYUEVDVF9FUSgiYWZpbGUiLAorICAgICAgRmlsZVBhdGgoR1RF
U1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9
CisKKy8vIFJlbW92ZURpcmVjdG9yeU5hbWUgImFkaXIvIiAtPiAiIgorVEVTVChSZW1vdmVEaXJl
Y3RvcnlOYW1lVGVzdCwgV2hlcmVUaGVyZUlzTm9GaWxlTmFtZSkgeworICBFWFBFQ1RfRVEoIiIs
CisgICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfKS5SZW1vdmVEaXJlY3RvcnlO
YW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZGlyL2FmaWxl
IiAtPiAiYWZpbGUiCitURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRHaXZlRmls
ZU5hbWUpIHsKKyAgRVhQRUNUX0VRKCJhZmlsZSIsCisgICAgICBGaWxlUGF0aCgiYWRpciIgR1RF
U1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9
CisKKy8vIFJlbW92ZURpcmVjdG9yeU5hbWUgImFkaXIvc3ViZGlyL2FmaWxlIiAtPiAiYWZpbGUi
CitURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRBbHNvR2l2ZUZpbGVOYW1lKSB7
CisgIEVYUEVDVF9FUSgiYWZpbGUiLAorICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhf
U0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikKKyAgICAgIC5SZW1vdmVEaXJl
Y3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisjaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8K
KworLy8gVGVzdHMgdGhhdCBSZW1vdmVEaXJlY3RvcnlOYW1lKCkgd29ya3Mgd2l0aCB0aGUgYWx0
ZXJuYXRlIHNlcGFyYXRvcgorLy8gb24gV2luZG93cy4KKworLy8gUmVtb3ZlRGlyZWN0b3J5TmFt
ZSgiL2FmaWxlIikgLT4gImFmaWxlIgorVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgUm9v
dEZpbGVTaG91bGRHaXZlRmlsZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNU
X0VRKCJhZmlsZSIsIEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3Ry
aW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCJhZGlyLyIpIC0+ICIiCitURVNU
KFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBXaGVyZVRoZXJlSXNOb0ZpbGVOYW1lRm9yQWx0ZXJu
YXRlU2VwYXJhdG9yKSB7CisgIEVYUEVDVF9FUSgiIiwgRmlsZVBhdGgoImFkaXIvIikuUmVtb3Zl
RGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgi
YWRpci9hZmlsZSIpIC0+ICJhZmlsZSIKK1RFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNo
b3VsZEdpdmVGaWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEoImFm
aWxlIiwgRmlsZVBhdGgoImFkaXIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5n
KCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCJhZGlyL3N1YmRpci9hZmlsZSIpIC0+
ICJhZmlsZSIKK1RFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEFsc29HaXZlRmls
ZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNUX0VRKCJhZmlsZSIsCisgICAg
ICAgICAgICBGaWxlUGF0aCgiYWRpci9zdWJkaXIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1l
KCkuc3RyaW5nKCkpOworfQorCisjZW5kaWYKKworLy8gUmVtb3ZlRmlsZU5hbWUgIiIgLT4gIi4v
IgorVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEVtcHR5TmFtZSkgeworI2lmIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCisgIC8vIE9uIFdpbmRvd3MgQ0UsIHdlIHVzZSB0aGUgcm9vdCBhcyB0aGUg
Y3VycmVudCBkaXJlY3RvcnkuCisgIEVYUEVDVF9FUShHVEVTVF9QQVRIX1NFUF8sIEZpbGVQYXRo
KCIiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKKyNlbHNlCisgIEVYUEVDVF9FUSgiLiIg
R1RFU1RfUEFUSF9TRVBfLCBGaWxlUGF0aCgiIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7
CisjZW5kaWYKK30KKworLy8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvIiAtPiAiYWRpci8iCitURVNU
KFJlbW92ZUZpbGVOYW1lVGVzdCwgQnV0Tm9GaWxlKSB7CisgIEVYUEVDVF9FUSgiYWRpciIgR1RF
U1RfUEFUSF9TRVBfLAorICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXykuUmVt
b3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZUZpbGVOYW1lICJhZGlyL2Fm
aWxlIiAtPiAiYWRpci8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNEaXJOYW1lKSB7
CisgIEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBh
dGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmlu
ZygpKTsKK30KKworLy8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvc3ViZGlyL2FmaWxlIiAtPiAiYWRp
ci9zdWJkaXIvIgorVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzRGlyQW5kU3ViRGlyTmFt
ZSkgeworICBFWFBFQ1RfRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9Q
QVRIX1NFUF8sCisgICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIi
IEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKQorICAgICAgLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5n
KCkpOworfQorCisvLyBSZW1vdmVGaWxlTmFtZSAiL2FmaWxlIiAtPiAiLyIKK1RFU1QoUmVtb3Zl
RmlsZU5hbWVUZXN0LCBHaXZlc1Jvb3REaXIpIHsKKyAgRVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQ
XywKKyAgICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1vdmVGaWxlTmFt
ZSgpLnN0cmluZygpKTsKK30KKworI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCisKKy8vIFRl
c3RzIHRoYXQgUmVtb3ZlRmlsZU5hbWUoKSB3b3JrcyB3aXRoIHRoZSBhbHRlcm5hdGUgc2VwYXJh
dG9yIG9uCisvLyBXaW5kb3dzLgorCisvLyBSZW1vdmVGaWxlTmFtZSgiYWRpci8iKSAtPiAiYWRp
ci8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgQnV0Tm9GaWxlRm9yQWx0ZXJuYXRlU2VwYXJh
dG9yKSB7CisgIEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAg
RmlsZVBhdGgoImFkaXIvIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJl
bW92ZUZpbGVOYW1lKCJhZGlyL2FmaWxlIikgLT4gImFkaXIvIgorVEVTVChSZW1vdmVGaWxlTmFt
ZVRlc3QsIEdpdmVzRGlyTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEo
ImFkaXIiIEdURVNUX1BBVEhfU0VQXywKKyAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL2FmaWxl
IikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZUZpbGVOYW1lKCJh
ZGlyL3N1YmRpci9hZmlsZSIpIC0+ICJhZGlyL3N1YmRpci8iCitURVNUKFJlbW92ZUZpbGVOYW1l
VGVzdCwgR2l2ZXNEaXJBbmRTdWJEaXJOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7CisgIEVY
UEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXywK
KyAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL3N1YmRpci9hZmlsZSIpLlJlbW92ZUZpbGVOYW1l
KCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVGaWxlTmFtZSgiL2FmaWxlIikgLT4gIlwiCitU
RVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNSb290RGlyRm9yQWx0ZXJuYXRlU2VwYXJhdG9y
KSB7CisgIEVYUEVDVF9FUShHVEVTVF9QQVRIX1NFUF8sIEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1v
dmVGaWxlTmFtZSgpLnN0cmluZygpKTsKK30KKworI2VuZGlmCisKK1RFU1QoTWFrZUZpbGVOYW1l
VGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVySXNaZXJvKSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZp
bGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoImZvbyIpLCBGaWxlUGF0aCgiYmFyIiksCisg
ICAgICAwLCAieG1sIik7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54
bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVy
YXRlRmlsZU5hbWVOdW1iZXJHdFplcm8pIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6
Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiksIEZpbGVQYXRoKCJiYXIiKSwKKyAgICAgIDEy
LCAieG1sIik7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhcl8xMi54bWwi
LCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRl
RmlsZU5hbWVXaXRoU2xhc2hOdW1iZXJJc1plcm8pIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmls
ZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAorICAg
ICAgRmlsZVBhdGgoImJhciIpLCAwLCAieG1sIik7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKE1ha2VGaWxl
TmFtZVRlc3QsIEdlbmVyYXRlRmlsZU5hbWVXaXRoU2xhc2hOdW1iZXJHdFplcm8pIHsKKyAgRmls
ZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiBHVEVT
VF9QQVRIX1NFUF8pLAorICAgICAgRmlsZVBhdGgoImJhciIpLCAxMiwgInhtbCIpOworICBFWFBF
Q1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXJfMTIueG1sIiwgYWN0dWFsLnN0cmluZygp
KTsKK30KKworVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZVdoZW5OdW1iZXJJc1plcm9B
bmREaXJJc0VtcHR5KSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5h
bWUoRmlsZVBhdGgoIiIpLCBGaWxlUGF0aCgiYmFyIiksCisgICAgICAwLCAieG1sIik7CisgIEVY
UEVDVF9FUSgiYmFyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoTWFrZUZpbGVO
YW1lVGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVySXNOb3RaZXJvQW5kRGlySXNFbXB0eSkgeworICBG
aWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCIiKSwgRmls
ZVBhdGgoImJhciIpLAorICAgICAgMTQsICJ4bWwiKTsKKyAgRVhQRUNUX0VRKCJiYXJfMTQueG1s
IiwgYWN0dWFsLnN0cmluZygpKTsKK30KKworVEVTVChDb25jYXRQYXRoc1Rlc3QsIFdvcmtzV2hl
bkRpckRvZXNOb3RFbmRXaXRoUGF0aFNlcCkgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0
aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJhci54bWwiKSk7CisgIEVYUEVDVF9FUSgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNU
KENvbmNhdFBhdGhzVGVzdCwgV29ya3NXaGVuUGF0aDFFbmRzV2l0aFBhdGhTZXApIHsKKyAgRmls
ZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iIEdURVNU
X1BBVEhfU0VQXyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
aWxlUGF0aCgiYmFyLnhtbCIpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAi
YmFyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoQ29uY2F0UGF0aHNUZXN0LCBQ
YXRoMUJlaW5nRW1wdHkpIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBh
dGhzKEZpbGVQYXRoKCIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZpbGVQYXRoKCJiYXIueG1sIikpOworICBFWFBFQ1RfRVEoImJhci54bWwiLCBhY3R1YWwu
c3RyaW5nKCkpOworfQorCitURVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDJCZWluZ0VtcHR5KSB7
CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9v
IiksIEZpbGVQYXRoKCIiKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sIGFj
dHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoQ29uY2F0UGF0aHNUZXN0LCBCb3RoUGF0aEJlaW5n
RW1wdHkpIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQ
YXRoKCIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQ
YXRoKCIiKSk7CisgIEVYUEVDVF9FUSgiIiwgYWN0dWFsLnN0cmluZygpKTsKK30KKworVEVTVChD
b25jYXRQYXRoc1Rlc3QsIFBhdGgxQ29udGFpbnNQYXRoU2VwKSB7CisgIEZpbGVQYXRoIGFjdHVh
bCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8g
ImJhciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBh
dGgoImZvb2Jhci54bWwiKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJh
ciIgR1RFU1RfUEFUSF9TRVBfICJmb29iYXIueG1sIiwKKyAgICAgICAgICAgIGFjdHVhbC5zdHJp
bmcoKSk7Cit9CisKK1RFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMkNvbnRhaW5zUGF0aFNlcCkg
eworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoCisgICAgICBGaWxl
UGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAorICAgICAgRmlsZVBhdGgoImJhciIgR1RFU1Rf
UEFUSF9TRVBfICJiYXIueG1sIikpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBf
ICJiYXIiIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsCisgICAgICAgICAgICBhY3R1YWwuc3Ry
aW5nKCkpOworfQorCitURVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDJFbmRzV2l0aFBhdGhTZXAp
IHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJm
b28iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRo
KCJiYXIiIEdURVNUX1BBVEhfU0VQXykpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9T
RVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXywgYWN0dWFsLnN0cmluZygpKTsKK30KKworLy8gUmVt
b3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICIiIC0+ICIiCitURVNUKFJlbW92ZVRyYWlsaW5nUGF0
aFNlcGFyYXRvclRlc3QsIEVtcHR5U3RyaW5nKSB7CisgIEVYUEVDVF9FUSgiIiwgRmlsZVBhdGgo
IiIpLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKK30KKworLy8gUmVt
b3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28iIC0+ICJmb28iCitURVNUKFJlbW92ZVRyYWls
aW5nUGF0aFNlcGFyYXRvclRlc3QsIEZpbGVOb1NsYXNoU3RyaW5nKSB7CisgIEVYUEVDVF9FUSgi
Zm9vIiwgRmlsZVBhdGgoImZvbyIpLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmlu
ZygpKTsKK30KKworLy8gUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28vIiAtPiAiZm9v
IgorVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBTaG91bGRSZW1vdmVUcmFp
bGluZ1NlcGFyYXRvcikgeworICBFWFBFQ1RfRVEoImZvbyIsCisgICAgICBGaWxlUGF0aCgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8pLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygp
KTsKKyNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXworICBFWFBFQ1RfRVEoImZvbyIsIEZpbGVQ
YXRoKCJmb28vIikuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuc3RyaW5nKCkpOworI2Vu
ZGlmCit9CisKKy8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiZm9vL2Jhci8iIC0+ICJm
b28vYmFyLyIKK1RFU1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgU2hvdWxkUmVt
b3ZlTGFzdFNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJi
YXIiLAorICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdU
RVNUX1BBVEhfU0VQXykKKyAgICAgICAgICAgICAgICAuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJh
dG9yKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IgImZv
by9iYXIiIC0+ICJmb28vYmFyIgorVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0
LCBTaG91bGRSZXR1cm5Vbm1vZGlmaWVkKSB7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRI
X1NFUF8gImJhciIsCisgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8g
ImJhciIpCisgICAgICAgICAgICAgICAgLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0
cmluZygpKTsKK30KKworVEVTVChEaXJlY3RvcnlUZXN0LCBSb290RGlyZWN0b3J5RXhpc3RzKSB7
CisjaWYgR1RFU1RfT1NfV0lORE9XUyAgLy8gV2UgYXJlIG9uIFdpbmRvd3MuCisgIGNoYXIgY3Vy
cmVudF9kcml2ZVtfTUFYX1BBVEhdOyAgLy8gTk9MSU5UCisgIGN1cnJlbnRfZHJpdmVbMF0gPSBz
dGF0aWNfY2FzdDxjaGFyPihfZ2V0ZHJpdmUoKSArICdBJyAtIDEpOworICBjdXJyZW50X2RyaXZl
WzFdID0gJzonOworICBjdXJyZW50X2RyaXZlWzJdID0gJ1xcJzsKKyAgY3VycmVudF9kcml2ZVsz
XSA9ICdcMCc7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKGN1cnJlbnRfZHJpdmUpLkRpcmVjdG9y
eUV4aXN0cygpKTsKKyNlbHNlCisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIvIikuRGlyZWN0b3J5
RXhpc3RzKCkpOworI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCit9CisKKyNpZiBHVEVTVF9P
U19XSU5ET1dTCitURVNUKERpcmVjdG9yeVRlc3QsIFJvb3RPZldyb25nRHJpdmVEb2VzTm90RXhp
c3RzKSB7CisgIGNvbnN0IGludCBzYXZlZF9kcml2ZV8gPSBfZ2V0ZHJpdmUoKTsKKyAgLy8gRmlu
ZCBhIGRyaXZlIHRoYXQgZG9lc24ndCBleGlzdC4gU3RhcnQgd2l0aCAnWicgdG8gYXZvaWQgY29t
bW9uIG9uZXMuCisgIGZvciAoY2hhciBkcml2ZSA9ICdaJzsgZHJpdmUgPj0gJ0EnOyBkcml2ZS0t
KQorICAgIGlmIChfY2hkcml2ZShkcml2ZSAtICdBJyArIDEpID09IC0xKSB7CisgICAgICBjaGFy
IG5vbl9kcml2ZVtfTUFYX1BBVEhdOyAgLy8gTk9MSU5UCisgICAgICBub25fZHJpdmVbMF0gPSBk
cml2ZTsKKyAgICAgIG5vbl9kcml2ZVsxXSA9ICc6JzsKKyAgICAgIG5vbl9kcml2ZVsyXSA9ICdc
XCc7CisgICAgICBub25fZHJpdmVbM10gPSAnXDAnOworICAgICAgRVhQRUNUX0ZBTFNFKEZpbGVQ
YXRoKG5vbl9kcml2ZSkuRGlyZWN0b3J5RXhpc3RzKCkpOworICAgICAgYnJlYWs7CisgICAgfQor
ICBfY2hkcml2ZShzYXZlZF9kcml2ZV8pOworfQorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dT
CisKKyNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKy8vIFdpbmRvd3MgQ0UgX2RvZXNfIGNv
bnNpZGVyIGFuIGVtcHR5IGRpcmVjdG9yeSB0byBleGlzdC4KK1RFU1QoRGlyZWN0b3J5VGVzdCwg
RW1wdHlQYXRoRGlyZWN0b3J5RG9lc05vdEV4aXN0KSB7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0
aCgiIikuRGlyZWN0b3J5RXhpc3RzKCkpOworfQorI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKKworVEVTVChEaXJlY3RvcnlUZXN0LCBDdXJyZW50RGlyZWN0b3J5RXhpc3RzKSB7
CisjaWYgR1RFU1RfT1NfV0lORE9XUyAgLy8gV2UgYXJlIG9uIFdpbmRvd3MuCisjIGlmbmRlZiBf
V0lOMzJfQ0UgIC8vIFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlIGEgY3VycmVudCBkaXJlY3Rvcnku
CisKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi4iKS5EaXJlY3RvcnlFeGlzdHMoKSk7CisgIEVY
UEVDVF9UUlVFKEZpbGVQYXRoKCIuXFwiKS5EaXJlY3RvcnlFeGlzdHMoKSk7CisKKyMgZW5kaWYg
IC8vIF9XSU4zMl9DRQorI2Vsc2UKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi4iKS5EaXJlY3Rv
cnlFeGlzdHMoKSk7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIuLyIpLkRpcmVjdG9yeUV4aXN0
cygpKTsKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworfQorCisvLyAiZm9vL2JhciIgPT0g
Zm9vLy9iYXIiID09ICJmb28vLy9iYXIiCitURVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRpcGxlQ29u
c2VjdXRpdmVTZXBhcGFyYXRvcnNJbk1pZHN0cmluZykgeworICBFWFBFQ1RfRVEoImZvbyIgR1RF
U1RfUEFUSF9TRVBfICJiYXIiLAorICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFU
SF9TRVBfICJiYXIiKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8gImJhciIsCisgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RF
U1RfUEFUSF9TRVBfICJiYXIiKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8gImJhciIsCisgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8gR1RFU1RfUEFUSF9TRVBfCisgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8g
ImJhciIpLnN0cmluZygpKTsKK30KKworLy8gIi9iYXIiID09IC8vYmFyIiA9PSAiLy8vYmFyIgor
VEVTVChOb3JtYWxpemVUZXN0LCBNdWx0aXBsZUNvbnNlY3V0aXZlU2VwYXBhcmF0b3JzQXRTdHJp
bmdTdGFydCkgeworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgIEZpbGVQ
YXRoKEdURVNUX1BBVEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoR1RFU1Rf
UEFUSF9TRVBfICJiYXIiLAorICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRI
X1NFUF8gImJhciIpLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQXyAiYmFy
IiwKKyAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BB
VEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOworfQorCisvLyAiZm9vLyIgPT0gZm9vLy8iID09ICJm
b28vLy8iCitURVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRpcGxlQ29uc2VjdXRpdmVTZXBhcGFyYXRv
cnNBdFN0cmluZ0VuZCkgeworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAg
IEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXykuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEo
ImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQ
XyBHVEVTVF9QQVRIX1NFUF8pLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BB
VEhfU0VQXywKKyAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9T
RVBfIEdURVNUX1BBVEhfU0VQXykuc3RyaW5nKCkpOworfQorCisjaWYgR1RFU1RfSEFTX0FMVF9Q
QVRIX1NFUF8KKworLy8gVGVzdHMgdGhhdCBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0
cmluZyBhcmUgbm9ybWFsaXplZAorLy8gcmVnYXJkbGVzcyBvZiB0aGVpciBjb21iaW5hdGlvbiAo
ZS5nLiAiZm9vXCIgPT0iZm9vL1wiID09CisvLyAiZm9vXFwvIikuCitURVNUKE5vcm1hbGl6ZVRl
c3QsIE1peEFsdGVybmF0ZVNlcGFyYXRvckF0U3RyaW5nRW5kKSB7CisgIEVYUEVDVF9FUSgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8sCisgICAgICAgICAgICBGaWxlUGF0aCgiZm9vLyIpLnN0cmluZygp
KTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKKyAgICAgICAgICAgIEZpbGVQ
YXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiLyIpLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJm
b28iIEdURVNUX1BBVEhfU0VQXywKKyAgICAgICAgICAgIEZpbGVQYXRoKCJmb28vLyIgR1RFU1Rf
UEFUSF9TRVBfKS5zdHJpbmcoKSk7Cit9CisKKyNlbmRpZgorCitURVNUKEFzc2lnbm1lbnRPcGVy
YXRvclRlc3QsIERlZmF1bHRBc3NpZ25lZFRvTm9uRGVmYXVsdCkgeworICBGaWxlUGF0aCBkZWZh
dWx0X3BhdGg7CisgIEZpbGVQYXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgiKTsKKyAgbm9uX2Rl
ZmF1bHRfcGF0aCA9IGRlZmF1bHRfcGF0aDsKKyAgRVhQRUNUX0VRKCIiLCBub25fZGVmYXVsdF9w
YXRoLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCIiLCBkZWZhdWx0X3BhdGguc3RyaW5nKCkpOyAg
Ly8gUkhTIHZhciBpcyB1bmNoYW5nZWQuCit9CisKK1RFU1QoQXNzaWdubWVudE9wZXJhdG9yVGVz
dCwgTm9uRGVmYXVsdEFzc2lnbmVkVG9EZWZhdWx0KSB7CisgIEZpbGVQYXRoIG5vbl9kZWZhdWx0
X3BhdGgoInBhdGgiKTsKKyAgRmlsZVBhdGggZGVmYXVsdF9wYXRoOworICBkZWZhdWx0X3BhdGgg
PSBub25fZGVmYXVsdF9wYXRoOworICBFWFBFQ1RfRVEoInBhdGgiLCBkZWZhdWx0X3BhdGguc3Ry
aW5nKCkpOworICBFWFBFQ1RfRVEoInBhdGgiLCBub25fZGVmYXVsdF9wYXRoLnN0cmluZygpKTsg
IC8vIFJIUyB2YXIgaXMgdW5jaGFuZ2VkLgorfQorCitURVNUKEFzc2lnbm1lbnRPcGVyYXRvclRl
c3QsIENvbnN0QXNzaWduZWRUb05vbkNvbnN0KSB7CisgIGNvbnN0IEZpbGVQYXRoIGNvbnN0X2Rl
ZmF1bHRfcGF0aCgiY29uc3RfcGF0aCIpOworICBGaWxlUGF0aCBub25fZGVmYXVsdF9wYXRoKCJw
YXRoIik7CisgIG5vbl9kZWZhdWx0X3BhdGggPSBjb25zdF9kZWZhdWx0X3BhdGg7CisgIEVYUEVD
VF9FUSgiY29uc3RfcGF0aCIsIG5vbl9kZWZhdWx0X3BhdGguc3RyaW5nKCkpOworfQorCitjbGFz
cyBEaXJlY3RvcnlDcmVhdGlvblRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgorICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgdGVzdGRhdGFfcGF0aF8uU2V0KEZpbGVQYXRoKAor
ICAgICAgICBUZW1wRGlyKCkgKyBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmcoKSAr
CisgICAgICAgICJfZGlyZWN0b3J5X2NyZWF0aW9uIiBHVEVTVF9QQVRIX1NFUF8gInRlc3QiIEdU
RVNUX1BBVEhfU0VQXykpOworICAgIHRlc3RkYXRhX2ZpbGVfLlNldCh0ZXN0ZGF0YV9wYXRoXy5S
ZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKSk7CisKKyAgICB1bmlxdWVfZmlsZTBfLlNldChG
aWxlUGF0aDo6TWFrZUZpbGVOYW1lKHRlc3RkYXRhX3BhdGhfLCBGaWxlUGF0aCgidW5pcXVlIiks
CisgICAgICAgIDAsICJ0eHQiKSk7CisgICAgdW5pcXVlX2ZpbGUxXy5TZXQoRmlsZVBhdGg6Ok1h
a2VGaWxlTmFtZSh0ZXN0ZGF0YV9wYXRoXywgRmlsZVBhdGgoInVuaXF1ZSIpLAorICAgICAgICAx
LCAidHh0IikpOworCisgICAgcmVtb3ZlKHRlc3RkYXRhX2ZpbGVfLmNfc3RyKCkpOworICAgIHJl
bW92ZSh1bmlxdWVfZmlsZTBfLmNfc3RyKCkpOworICAgIHJlbW92ZSh1bmlxdWVfZmlsZTFfLmNf
c3RyKCkpOworICAgIHBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKKyAgfQor
CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICByZW1vdmUodGVzdGRhdGFfZmlsZV8u
Y19zdHIoKSk7CisgICAgcmVtb3ZlKHVuaXF1ZV9maWxlMF8uY19zdHIoKSk7CisgICAgcmVtb3Zl
KHVuaXF1ZV9maWxlMV8uY19zdHIoKSk7CisgICAgcG9zaXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhf
LmNfc3RyKCkpOworICB9CisKKyAgdm9pZCBDcmVhdGVUZXh0RmlsZShjb25zdCBjaGFyKiBmaWxl
bmFtZSkgeworICAgIEZJTEUqIGYgPSBwb3NpeDo6Rk9wZW4oZmlsZW5hbWUsICJ3Iik7CisgICAg
ZnByaW50ZihmLCAidGV4dFxuIik7CisgICAgZmNsb3NlKGYpOworICB9CisKKyAgLy8gU3RyaW5n
cyByZXByZXNlbnRpbmcgYSBkaXJlY3RvcnkgYW5kIGEgZmlsZSwgd2l0aCBpZGVudGljYWwgcGF0
aHMKKyAgLy8gZXhjZXB0IGZvciB0aGUgdHJhaWxpbmcgc2VwYXJhdG9yIGNoYXJhY3RlciB0aGF0
IGRpc3RpbnF1aXNoZXMKKyAgLy8gYSBkaXJlY3RvcnkgbmFtZWQgJ3Rlc3QnIGZyb20gYSBmaWxl
IG5hbWVkICd0ZXN0Jy4gRXhhbXBsZSBuYW1lczoKKyAgRmlsZVBhdGggdGVzdGRhdGFfcGF0aF87
ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRpb24vdGVzdC8iCisgIEZpbGVQYXRoIHRlc3RkYXRh
X2ZpbGVfOyAgLy8gIi90bXAvZGlyZWN0b3J5X2NyZWF0aW9uL3Rlc3QiCisgIEZpbGVQYXRoIHVu
aXF1ZV9maWxlMF87ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRpb24vdGVzdC91bmlxdWUudHh0
IgorICBGaWxlUGF0aCB1bmlxdWVfZmlsZTFfOyAgLy8gIi90bXAvZGlyZWN0b3J5X2NyZWF0aW9u
L3Rlc3QvdW5pcXVlXzEudHh0IgorfTsKKworVEVTVF9GKERpcmVjdG9yeUNyZWF0aW9uVGVzdCwg
Q3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSkgeworICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFf
cGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkpIDw8IHRlc3RkYXRhX3BhdGhfLnN0cmluZygpOworICBF
WFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkp
OworICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlzdHMoKSk7Cit9CisK
K1RFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURpcmVjdG9yaWVzRm9yQWxyZWFk
eUV4aXN0aW5nUGF0aCkgeworICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfcGF0aF8uRGlyZWN0b3J5
RXhpc3RzKCkpIDw8IHRlc3RkYXRhX3BhdGhfLnN0cmluZygpOworICBFWFBFQ1RfVFJVRSh0ZXN0
ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOworICAvLyBDYWxsICdj
cmVhdGUnIGFnYWluLi4uIHNob3VsZCBzdGlsbCBzdWNjZWVkLgorICBFWFBFQ1RfVFJVRSh0ZXN0
ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOworfQorCitURVNUX0Yo
RGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0FuZFVuaXF1ZUZpbGVuYW1l
KSB7CisgIEZpbGVQYXRoIGZpbGVfcGF0aChGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFt
ZSh0ZXN0ZGF0YV9wYXRoXywKKyAgICAgIEZpbGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIpKTsKKyAg
RVhQRUNUX0VRKHVuaXF1ZV9maWxlMF8uc3RyaW5nKCksIGZpbGVfcGF0aC5zdHJpbmcoKSk7Cisg
IEVYUEVDVF9GQUxTRShmaWxlX3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8gZmls
ZSBub3QgdGhlcmUKKworICB0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2
ZWx5KCk7CisgIEVYUEVDVF9GQUxTRShmaWxlX3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkp
OyAgLy8gZmlsZSBzdGlsbCBub3QgdGhlcmUKKyAgQ3JlYXRlVGV4dEZpbGUoZmlsZV9wYXRoLmNf
c3RyKCkpOworICBFWFBFQ1RfVFJVRShmaWxlX3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkp
OworCisgIEZpbGVQYXRoIGZpbGVfcGF0aDIoRmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5h
bWUodGVzdGRhdGFfcGF0aF8sCisgICAgICBGaWxlUGF0aCgidW5pcXVlIiksICJ0eHQiKSk7Cisg
IEVYUEVDVF9FUSh1bmlxdWVfZmlsZTFfLnN0cmluZygpLCBmaWxlX3BhdGgyLnN0cmluZygpKTsK
KyAgRVhQRUNUX0ZBTFNFKGZpbGVfcGF0aDIuRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8g
ZmlsZSBub3QgdGhlcmUKKyAgQ3JlYXRlVGV4dEZpbGUoZmlsZV9wYXRoMi5jX3N0cigpKTsKKyAg
RVhQRUNUX1RSVUUoZmlsZV9wYXRoMi5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7Cit9CisKK1RF
U1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURpcmVjdG9yaWVzRmFpbCkgeworICAv
LyBmb3JjZSBhIGZhaWx1cmUgYnkgcHV0dGluZyBhIGZpbGUgd2hlcmUgd2Ugd2lsbCB0cnkgdG8g
Y3JlYXRlIGEgZGlyZWN0b3J5LgorICBDcmVhdGVUZXh0RmlsZSh0ZXN0ZGF0YV9maWxlXy5jX3N0
cigpKTsKKyAgRVhQRUNUX1RSVUUodGVzdGRhdGFfZmlsZV8uRmlsZU9yRGlyZWN0b3J5RXhpc3Rz
KCkpOworICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfZmlsZV8uRGlyZWN0b3J5RXhpc3RzKCkpOwor
ICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfZmlsZV8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVs
eSgpKTsKK30KKworVEVTVChOb0RpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlTm9EaXJlY3Rv
cmllc0ZvckRlZmF1bHRYbWxGaWxlKSB7CisgIGNvbnN0IEZpbGVQYXRoIHRlc3RfZGV0YWlsX3ht
bCgidGVzdF9kZXRhaWwueG1sIik7CisgIEVYUEVDVF9GQUxTRSh0ZXN0X2RldGFpbF94bWwuQ3Jl
YXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKTsKK30KKworVEVTVChGaWxlUGF0aFRlc3QsIERl
ZmF1bHRDb25zdHJ1Y3RvcikgeworICBGaWxlUGF0aCBmcDsKKyAgRVhQRUNUX0VRKCIiLCBmcC5z
dHJpbmcoKSk7Cit9CisKK1RFU1QoRmlsZVBhdGhUZXN0LCBDaGFyQW5kQ29weUNvbnN0cnVjdG9y
cykgeworICBjb25zdCBGaWxlUGF0aCBmcCgic3BpY3kiKTsKKyAgRVhQRUNUX0VRKCJzcGljeSIs
IGZwLnN0cmluZygpKTsKKworICBjb25zdCBGaWxlUGF0aCBmcF9jb3B5KGZwKTsKKyAgRVhQRUNU
X0VRKCJzcGljeSIsIGZwX2NvcHkuc3RyaW5nKCkpOworfQorCitURVNUKEZpbGVQYXRoVGVzdCwg
U3RyaW5nQ29uc3RydWN0b3IpIHsKKyAgY29uc3QgRmlsZVBhdGggZnAoc3RkOjpzdHJpbmcoImNp
ZGVyIikpOworICBFWFBFQ1RfRVEoImNpZGVyIiwgZnAuc3RyaW5nKCkpOworfQorCitURVNUKEZp
bGVQYXRoVGVzdCwgU2V0KSB7CisgIGNvbnN0IEZpbGVQYXRoIGFwcGxlKCJhcHBsZSIpOworICBG
aWxlUGF0aCBtYWMoIm1hYyIpOworICBtYWMuU2V0KGFwcGxlKTsgIC8vIEltcGxlbWVudCBTZXQo
KSBzaW5jZSBvdmVybG9hZGluZyBvcGVyYXRvcj0gaXMgZm9yYmlkZGVuLgorICBFWFBFQ1RfRVEo
ImFwcGxlIiwgbWFjLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJhcHBsZSIsIGFwcGxlLnN0cmlu
ZygpKTsKK30KKworVEVTVChGaWxlUGF0aFRlc3QsIFRvU3RyaW5nKSB7CisgIGNvbnN0IEZpbGVQ
YXRoIGZpbGUoImRyaW5rIik7CisgIEVYUEVDVF9FUSgiZHJpbmsiLCBmaWxlLnN0cmluZygpKTsK
K30KKworVEVTVChGaWxlUGF0aFRlc3QsIFJlbW92ZUV4dGVuc2lvbikgeworICBFWFBFQ1RfRVEo
ImFwcCIsIEZpbGVQYXRoKCJhcHAuY2MiKS5SZW1vdmVFeHRlbnNpb24oImNjIikuc3RyaW5nKCkp
OworICBFWFBFQ1RfRVEoImFwcCIsIEZpbGVQYXRoKCJhcHAuZXhlIikuUmVtb3ZlRXh0ZW5zaW9u
KCJleGUiKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiQVBQIiwgRmlsZVBhdGgoIkFQUC5FWEUi
KS5SZW1vdmVFeHRlbnNpb24oImV4ZSIpLnN0cmluZygpKTsKK30KKworVEVTVChGaWxlUGF0aFRl
c3QsIFJlbW92ZUV4dGVuc2lvbldoZW5UaGVyZUlzTm9FeHRlbnNpb24pIHsKKyAgRVhQRUNUX0VR
KCJhcHAiLCBGaWxlUGF0aCgiYXBwIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5zdHJpbmcoKSk7
Cit9CisKK1RFU1QoRmlsZVBhdGhUZXN0LCBJc0RpcmVjdG9yeSkgeworICBFWFBFQ1RfRkFMU0Uo
RmlsZVBhdGgoImNvbGEiKS5Jc0RpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgo
ImtvYWxhIiBHVEVTVF9QQVRIX1NFUF8pLklzRGlyZWN0b3J5KCkpOworI2lmIEdURVNUX0hBU19B
TFRfUEFUSF9TRVBfCisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJrb2FsYS8iKS5Jc0RpcmVjdG9y
eSgpKTsKKyNlbmRpZgorfQorCitURVNUKEZpbGVQYXRoVGVzdCwgSXNBYnNvbHV0ZVBhdGgpIHsK
KyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJpcyIgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIp
LklzQWJzb2x1dGVQYXRoKCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIiIpLklzQWJzb2x1
dGVQYXRoKCkpOworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgo
ImM6XFwiIEdURVNUX1BBVEhfU0VQXyAiaXNfbm90IgorICAgICAgICAgICAgICAgICAgICAgICBH
VEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIikuSXNBYnNvbHV0ZVBhdGgoKSk7CisgIEVYUEVDVF9G
QUxTRShGaWxlUGF0aCgiYzpmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuSXNBYnNvbHV0ZVBh
dGgoKSk7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJjOi8iIEdURVNUX1BBVEhfU0VQXyAiaXNf
bm90IgorICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIiku
SXNBYnNvbHV0ZVBhdGgoKSk7CisjZWxzZQorICBFWFBFQ1RfVFJVRShGaWxlUGF0aChHVEVTVF9Q
QVRIX1NFUF8gImlzX25vdCIgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIpCisgICAgICAgICAg
ICAgIC5Jc0Fic29sdXRlUGF0aCgpKTsKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworfQor
CitURVNUKEZpbGVQYXRoVGVzdCwgSXNSb290RGlyZWN0b3J5KSB7CisjaWYgR1RFU1RfT1NfV0lO
RE9XUworICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiYTpcXCIpLklzUm9vdERpcmVjdG9yeSgpKTsK
KyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIlo6LyIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQ
RUNUX1RSVUUoRmlsZVBhdGgoImU6Ly8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9G
QUxTRShGaWxlUGF0aCgiIikuSXNSb290RGlyZWN0b3J5KCkpOworICBFWFBFQ1RfRkFMU0UoRmls
ZVBhdGgoImI6IikuSXNSb290RGlyZWN0b3J5KCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgo
ImI6YSIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCI4Oi8i
KS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiY3wvIikuSXNS
b290RGlyZWN0b3J5KCkpOworI2Vsc2UKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi8iKS5Jc1Jv
b3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIvLyIpLklzUm9vdERpcmVj
dG9yeSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7
CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiXFwiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVY
UEVDVF9GQUxTRShGaWxlUGF0aCgiL3giKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisjZW5kaWYKK30K
KworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK30gIC8vIG5hbWVz
cGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9nb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzBiNWJkOWE1Y2Zj
NWJmZThjNjhhZjFiNjQ3ODk5ZTFmZWJkYTY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdC5weQpAQCAtMCww
ICsxLDYzNiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA1IEdv
b2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJV
bml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0IHRlc3QgZmlsdGVycy4KKworQSB1c2VyIGNhbiBzcGVj
aWZ5IHdoaWNoIHRlc3QocykgaW4gYSBHb29nbGUgVGVzdCBwcm9ncmFtIHRvIHJ1biB2aWEgZWl0
aGVyCit0aGUgR1RFU1RfRklMVEVSIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZSAtLWd0ZXN0
X2ZpbHRlciBmbGFnLgorVGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5IGJ5IGlu
dm9raW5nCitnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8gKGEgcHJvZ3JhbSB3cml0dGVuIHdp
dGggR29vZ2xlIFRlc3QpIHdpdGggZGlmZmVyZW50CitlbnZpcm9ubWVudHMgYW5kIGNvbW1hbmQg
bGluZSBmbGFncy4KKworTm90ZSB0aGF0IHRlc3Qgc2hhcmRpbmcgbWF5IGFsc28gaW5mbHVlbmNl
IHdoaWNoIHRlc3RzIGFyZSBmaWx0ZXJlZC4gVGhlcmVmb3JlLAord2UgdGVzdCB0aGF0IGhlcmUg
YWxzby4KKyIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHNldHMKK2ltcG9ydCBz
eXMKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKKyMgQ29uc3RhbnRzLgorCisjIENoZWNrcyBp
ZiB0aGlzIHBsYXRmb3JtIGNhbiBwYXNzIGVtcHR5IGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBj
aGlsZAorIyBwcm9jZXNzZXMuICBXZSBzZXQgYW4gZW52IHZhcmlhYmxlIHRvIGFuIGVtcHR5IHN0
cmluZyBhbmQgaW52b2tlIGEgcHl0aG9uCisjIHNjcmlwdCBpbiBhIHN1YnByb2Nlc3MgdG8gcHJp
bnQgd2hldGhlciB0aGUgdmFyaWFibGUgaXMgU1RJTEwgaW4KKyMgb3MuZW52aXJvbi4gIFdlIHRo
ZW4gdXNlICdldmFsJyB0byBwYXJzZSB0aGUgY2hpbGQncyBvdXRwdXQgc28gdGhhdCBhbgorIyBl
eGNlcHRpb24gaXMgdGhyb3duIGlmIHRoZSBpbnB1dCBpcyBhbnl0aGluZyBvdGhlciB0aGFuICdU
cnVlJyBub3IgJ0ZhbHNlJy4KK0NBTl9QQVNTX0VNUFRZX0VOViA9IEZhbHNlCitpZiBzeXMuZXhl
Y3V0YWJsZToKKyAgb3MuZW52aXJvblsnRU1QVFlfVkFSJ10gPSAnJworICBjaGlsZCA9IGd0ZXN0
X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKKyAgICAgIFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgJ2lt
cG9ydCBvczsgcHJpbnQgXCdFTVBUWV9WQVJcJyBpbiBvcy5lbnZpcm9uJ10pCisgIENBTl9QQVNT
X0VNUFRZX0VOViA9IGV2YWwoY2hpbGQub3V0cHV0KQorCisKKyMgQ2hlY2sgaWYgdGhpcyBwbGF0
Zm9ybSBjYW4gdW5zZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluIGNoaWxkIHByb2Nlc3Nlcy4K
KyMgV2Ugc2V0IGFuIGVudiB2YXJpYWJsZSB0byBhIG5vbi1lbXB0eSBzdHJpbmcsIHVuc2V0IGl0
LCBhbmQgaW52b2tlCisjIGEgcHl0aG9uIHNjcmlwdCBpbiBhIHN1YnByb2Nlc3MgdG8gcHJpbnQg
d2hldGhlciB0aGUgdmFyaWFibGUKKyMgaXMgTk8gTE9OR0VSIGluIG9zLmVudmlyb24uCisjIFdl
IHVzZSAnZXZhbCcgdG8gcGFyc2UgdGhlIGNoaWxkJ3Mgb3V0cHV0IHNvIHRoYXQgYW4gZXhjZXB0
aW9uCisjIGlzIHRocm93biBpZiB0aGUgaW5wdXQgaXMgbmVpdGhlciAnVHJ1ZScgbm9yICdGYWxz
ZScuCitDQU5fVU5TRVRfRU5WID0gRmFsc2UKK2lmIHN5cy5leGVjdXRhYmxlOgorICBvcy5lbnZp
cm9uWydVTlNFVF9WQVInXSA9ICdYJworICBkZWwgb3MuZW52aXJvblsnVU5TRVRfVkFSJ10KKyAg
Y2hpbGQgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgICBbc3lzLmV4ZWN1dGFi
bGUsICctYycsICdpbXBvcnQgb3M7IHByaW50IFwnVU5TRVRfVkFSXCcgbm90IGluIG9zLmVudmly
b24nCisgICAgICBdKQorICBDQU5fVU5TRVRfRU5WID0gZXZhbChjaGlsZC5vdXRwdXQpCisKKwor
IyBDaGVja3MgaWYgd2Ugc2hvdWxkIHRlc3Qgd2l0aCBhbiBlbXB0eSBmaWx0ZXIuIFRoaXMgZG9l
c24ndAorIyBtYWtlIHNlbnNlIG9uIHBsYXRmb3JtcyB0aGF0IGNhbm5vdCBwYXNzIGVtcHR5IGVu
diB2YXJpYWJsZXMgKFdpbjMyKQorIyBhbmQgb24gcGxhdGZvcm1zIHRoYXQgY2Fubm90IHVuc2V0
IHZhcmlhYmxlcyAoc2luY2Ugd2UgY2Fubm90IHRlbGwKKyMgdGhlIGRpZmZlcmVuY2UgYmV0d2Vl
biAiIiBhbmQgTlVMTCAtLSBCb3JsYW5kIGFuZCBTb2xhcmlzIDwgNS4xMCkKK0NBTl9URVNUX0VN
UFRZX0ZJTFRFUiA9IChDQU5fUEFTU19FTVBUWV9FTlYgYW5kIENBTl9VTlNFVF9FTlYpCisKKwor
IyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIHNwZWNpZnlpbmcgdGhlIHRlc3QgZmlsdGVy
cy4KK0ZJTFRFUl9FTlZfVkFSID0gJ0dURVNUX0ZJTFRFUicKKworIyBUaGUgZW52aXJvbm1lbnQg
dmFyaWFibGVzIGZvciB0ZXN0IHNoYXJkaW5nLgorVE9UQUxfU0hBUkRTX0VOVl9WQVIgPSAnR1RF
U1RfVE9UQUxfU0hBUkRTJworU0hBUkRfSU5ERVhfRU5WX1ZBUiA9ICdHVEVTVF9TSEFSRF9JTkRF
WCcKK1NIQVJEX1NUQVRVU19GSUxFX0VOVl9WQVIgPSAnR1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEUn
CisKKyMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciBzcGVjaWZ5aW5nIHRoZSB0ZXN0IGZpbHRl
cnMuCitGSUxURVJfRkxBRyA9ICdndGVzdF9maWx0ZXInCisKKyMgVGhlIGNvbW1hbmQgbGluZSBm
bGFnIGZvciBpbmNsdWRpbmcgZGlzYWJsZWQgdGVzdHMuCitBTFNPX1JVTl9ESVNBQkxFRF9URVNU
U19GTEFHID0gJ2d0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzJworCisjIENvbW1hbmQgdG8g
cnVuIHRoZSBnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8gcHJvZ3JhbS4KK0NPTU1BTkQgPSBn
dGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ29vZ2xldGVzdC1maWx0ZXIt
dW5pdHRlc3RfJykKKworIyBSZWdleCBmb3IgZGV0ZXJtaW5pbmcgd2hldGhlciBwYXJhbWV0ZXJp
emVkIHRlc3RzIGFyZSBlbmFibGVkIGluIHRoZSBiaW5hcnkuCitQQVJBTV9URVNUX1JFR0VYID0g
cmUuY29tcGlsZShyJy9QYXJhbVRlc3QnKQorCisjIFJlZ2V4IGZvciBwYXJzaW5nIHRlc3QgY2Fz
ZSBuYW1lcyBmcm9tIEdvb2dsZSBUZXN0J3Mgb3V0cHV0LgorVEVTVF9DQVNFX1JFR0VYID0gcmUu
Y29tcGlsZShyJ15cW1wtK1xdIFxkKyB0ZXN0cz8gZnJvbSAoXHcrKC9cdyspPyknKQorCisjIFJl
Z2V4IGZvciBwYXJzaW5nIHRlc3QgbmFtZXMgZnJvbSBHb29nbGUgVGVzdCdzIG91dHB1dC4KK1RF
U1RfUkVHRVggPSByZS5jb21waWxlKHInXlxbXHMqUlVOXHMqXF0uKlwuKFx3KygvXHcrKT8pJykK
KworIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgdG8gdGVsbCBHb29nbGUgVGVzdCB0byBvdXRwdXQg
dGhlIGxpc3Qgb2YgdGVzdHMgaXQKKyMgd2lsbCBydW4uCitMSVNUX1RFU1RTX0ZMQUcgPSAnLS1n
dGVzdF9saXN0X3Rlc3RzJworCisjIEluZGljYXRlcyB3aGV0aGVyIEdvb2dsZSBUZXN0IHN1cHBv
cnRzIGRlYXRoIHRlc3RzLgorU1VQUE9SVFNfREVBVEhfVEVTVFMgPSAnSGFzRGVhdGhUZXN0JyBp
biBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgW0NPTU1BTkQsIExJU1RfVEVTVFNf
RkxBR10pLm91dHB1dAorCisjIEZ1bGwgbmFtZXMgb2YgYWxsIHRlc3RzIGluIGdvb2dsZXRlc3Qt
ZmlsdGVyLXVuaXR0ZXN0c18uCitQQVJBTV9URVNUUyA9IFsKKyAgICAnU2VxUC9QYXJhbVRlc3Qu
VGVzdFgvMCcsCisgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzEnLAorICAgICdTZXFQL1BhcmFt
VGVzdC5UZXN0WS8wJywKKyAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMScsCisgICAgJ1NlcVEv
UGFyYW1UZXN0LlRlc3RYLzAnLAorICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WC8xJywKKyAgICAn
U2VxUS9QYXJhbVRlc3QuVGVzdFkvMCcsCisgICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RZLzEnLAor
ICAgIF0KKworRElTQUJMRURfVEVTVFMgPSBbCisgICAgJ0JhclRlc3QuRElTQUJMRURfVGVzdEZv
dXInLAorICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rlc3RGaXZlJywKKyAgICAnQmF6VGVzdC5ESVNB
QkxFRF9UZXN0QycsCisgICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnLAorICAgICdESVNB
QkxFRF9Gb29iYXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywKKyAgICAnRElTQUJMRURfRm9vYmFyYmF6
VGVzdC5UZXN0QScsCisgICAgXQorCitpZiBTVVBQT1JUU19ERUFUSF9URVNUUzoKKyAgREVBVEhf
VEVTVFMgPSBbCisgICAgJ0hhc0RlYXRoVGVzdC5UZXN0MScsCisgICAgJ0hhc0RlYXRoVGVzdC5U
ZXN0MicsCisgICAgXQorZWxzZToKKyAgREVBVEhfVEVTVFMgPSBbXQorCisjIEFsbCB0aGUgbm9u
LWRpc2FibGVkIHRlc3RzLgorQUNUSVZFX1RFU1RTID0gWworICAgICdGb29UZXN0LkFiYycsCisg
ICAgJ0Zvb1Rlc3QuWHl6JywKKworICAgICdCYXJUZXN0LlRlc3RPbmUnLAorICAgICdCYXJUZXN0
LlRlc3RUd28nLAorICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCisKKyAgICAnQmF6VGVzdC5UZXN0
T25lJywKKyAgICAnQmF6VGVzdC5UZXN0QScsCisgICAgJ0JhelRlc3QuVGVzdEInLAorICAgIF0g
KyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTCisKK3BhcmFtX3Rlc3RzX3ByZXNlbnQgPSBOb25l
CisKKyMgVXRpbGl0aWVzLgorCitlbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkKKworCitkZWYg
U2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToKKyAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxlIHRv
ICd2YWx1ZSc7IHVuc2V0cyBpdCB3aGVuICd2YWx1ZScgaXMgTm9uZS4iIiIKKworICBpZiB2YWx1
ZSBpcyBub3QgTm9uZToKKyAgICBlbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKKyAgZWxpZiBlbnZf
dmFyIGluIGVudmlyb246CisgICAgZGVsIGVudmlyb25bZW52X3Zhcl0KKworCitkZWYgUnVuQW5k
UmV0dXJuT3V0cHV0KGFyZ3MgPSBOb25lKToKKyAgIiIiUnVucyB0aGUgdGVzdCBwcm9ncmFtIGFu
ZCByZXR1cm5zIGl0cyBvdXRwdXQuIiIiCisKKyAgcmV0dXJuIGd0ZXN0X3Rlc3RfdXRpbHMuU3Vi
cHJvY2VzcyhbQ09NTUFORF0gKyAoYXJncyBvciBbXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW52PWVudmlyb24pLm91dHB1dAorCisKK2RlZiBSdW5BbmRFeHRyYWN0
VGVzdExpc3QoYXJncyA9IE5vbmUpOgorICAiIiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0gYW5kIHJl
dHVybnMgaXRzIGV4aXQgY29kZSBhbmQgYSBsaXN0IG9mIHRlc3RzIHJ1bi4iIiIKKworICBwID0g
Z3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtDT01NQU5EXSArIChhcmdzIG9yIFtdKSwgZW52
PWVudmlyb24pCisgIHRlc3RzX3J1biA9IFtdCisgIHRlc3RfY2FzZSA9ICcnCisgIHRlc3QgPSAn
JworICBmb3IgbGluZSBpbiBwLm91dHB1dC5zcGxpdCgnXG4nKToKKyAgICBtYXRjaCA9IFRFU1Rf
Q0FTRV9SRUdFWC5tYXRjaChsaW5lKQorICAgIGlmIG1hdGNoIGlzIG5vdCBOb25lOgorICAgICAg
dGVzdF9jYXNlID0gbWF0Y2guZ3JvdXAoMSkKKyAgICBlbHNlOgorICAgICAgbWF0Y2ggPSBURVNU
X1JFR0VYLm1hdGNoKGxpbmUpCisgICAgICBpZiBtYXRjaCBpcyBub3QgTm9uZToKKyAgICAgICAg
dGVzdCA9IG1hdGNoLmdyb3VwKDEpCisgICAgICAgIHRlc3RzX3J1bi5hcHBlbmQodGVzdF9jYXNl
ICsgJy4nICsgdGVzdCkKKyAgcmV0dXJuICh0ZXN0c19ydW4sIHAuZXhpdF9jb2RlKQorCisKK2Rl
ZiBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LCBmdW5jdGlvbiwgKmFyZ3MsICoqa3dh
cmdzKToKKyAgIiIiUnVucyB0aGUgZ2l2ZW4gZnVuY3Rpb24gYW5kIGFyZ3VtZW50cyBpbiBhIG1v
ZGlmaWVkIGVudmlyb25tZW50LiIiIgorICB0cnk6CisgICAgb3JpZ2luYWxfZW52ID0gZW52aXJv
bi5jb3B5KCkKKyAgICBlbnZpcm9uLnVwZGF0ZShleHRyYV9lbnYpCisgICAgcmV0dXJuIGZ1bmN0
aW9uKCphcmdzLCAqKmt3YXJncykKKyAgZmluYWxseToKKyAgICBlbnZpcm9uLmNsZWFyKCkKKyAg
ICBlbnZpcm9uLnVwZGF0ZShvcmlnaW5hbF9lbnYpCisKKworZGVmIFJ1bldpdGhTaGFyZGluZyh0
b3RhbF9zaGFyZHMsIHNoYXJkX2luZGV4LCBjb21tYW5kKToKKyAgIiIiUnVucyBhIHRlc3QgcHJv
Z3JhbSBzaGFyZCBhbmQgcmV0dXJucyBleGl0IGNvZGUgYW5kIGEgbGlzdCBvZiB0ZXN0cyBydW4u
IiIiCisKKyAgZXh0cmFfZW52ID0ge1NIQVJEX0lOREVYX0VOVl9WQVI6IHN0cihzaGFyZF9pbmRl
eCksCisgICAgICAgICAgICAgICBUT1RBTF9TSEFSRFNfRU5WX1ZBUjogc3RyKHRvdGFsX3NoYXJk
cyl9CisgIHJldHVybiBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LCBSdW5BbmRFeHRy
YWN0VGVzdExpc3QsIGNvbW1hbmQpCisKKyMgVGhlIHVuaXQgdGVzdC4KKworCitjbGFzcyBHVGVz
dEZpbHRlclVuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJUZXN0cyB0
aGUgZW52IHZhcmlhYmxlIG9yIHRoZSBjb21tYW5kIGxpbmUgZmxhZyB0byBmaWx0ZXIgdGVzdHMu
IiIiCisKKyAgIyBVdGlsaXRpZXMuCisKKyAgZGVmIEFzc2VydFNldEVxdWFsKHNlbGYsIGxocywg
cmhzKToKKyAgICAiIiJBc3NlcnRzIHRoYXQgdHdvIHNldHMgYXJlIGVxdWFsLiIiIgorCisgICAg
Zm9yIGVsZW0gaW4gbGhzOgorICAgICAgc2VsZi5hc3NlcnRfKGVsZW0gaW4gcmhzLCAnJXMgaW4g
JXMnICUgKGVsZW0sIHJocykpCisKKyAgICBmb3IgZWxlbSBpbiByaHM6CisgICAgICBzZWxmLmFz
c2VydF8oZWxlbSBpbiBsaHMsICclcyBpbiAlcycgJSAoZWxlbSwgbGhzKSkKKworICBkZWYgQXNz
ZXJ0UGFydGl0aW9uSXNWYWxpZChzZWxmLCBzZXRfdmFyLCBsaXN0X29mX3NldHMpOgorICAgICIi
IkFzc2VydHMgdGhhdCBsaXN0X29mX3NldHMgaXMgYSB2YWxpZCBwYXJ0aXRpb24gb2Ygc2V0X3Zh
ci4iIiIKKworICAgIGZ1bGxfcGFydGl0aW9uID0gW10KKyAgICBmb3Igc2xpY2VfdmFyIGluIGxp
c3Rfb2Zfc2V0czoKKyAgICAgIGZ1bGxfcGFydGl0aW9uLmV4dGVuZChzbGljZV92YXIpCisgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oc2V0X3ZhciksIGxlbihmdWxsX3BhcnRpdGlvbikpCisgICAg
c2VsZi5hc3NlcnRFcXVhbChzZXRzLlNldChzZXRfdmFyKSwgc2V0cy5TZXQoZnVsbF9wYXJ0aXRp
b24pKQorCisgIGRlZiBBZGp1c3RGb3JQYXJhbWV0ZXJpemVkVGVzdHMoc2VsZiwgdGVzdHNfdG9f
cnVuKToKKyAgICAiIiJBZGp1c3QgdGVzdHNfdG9fcnVuIGluIGNhc2UgdmFsdWUgcGFyYW1ldGVy
aXplZCB0ZXN0cyBhcmUgZGlzYWJsZWQuIiIiCisKKyAgICBnbG9iYWwgcGFyYW1fdGVzdHNfcHJl
c2VudAorICAgIGlmIG5vdCBwYXJhbV90ZXN0c19wcmVzZW50OgorICAgICAgcmV0dXJuIGxpc3Qo
c2V0cy5TZXQodGVzdHNfdG9fcnVuKSAtIHNldHMuU2V0KFBBUkFNX1RFU1RTKSkKKyAgICBlbHNl
OgorICAgICAgcmV0dXJuIHRlc3RzX3RvX3J1bgorCisgIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwg
Z3Rlc3RfZmlsdGVyLCB0ZXN0c190b19ydW4pOgorICAgICIiIkNoZWNrcyB0aGF0IHRoZSBiaW5h
cnkgcnVucyBjb3JyZWN0IHNldCBvZiB0ZXN0cyBmb3IgYSBnaXZlbiBmaWx0ZXIuIiIiCisKKyAg
ICB0ZXN0c190b19ydW4gPSBzZWxmLkFkanVzdEZvclBhcmFtZXRlcml6ZWRUZXN0cyh0ZXN0c190
b19ydW4pCisKKyAgICAjIEZpcnN0LCB0ZXN0cyB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFi
bGUuCisKKyAgICAjIFdpbmRvd3MgcmVtb3ZlcyBlbXB0eSB2YXJpYWJsZXMgZnJvbSB0aGUgZW52
aXJvbm1lbnQgd2hlbiBwYXNzaW5nIGl0CisgICAgIyB0byBhIG5ldyBwcm9jZXNzLiAgVGhpcyBt
ZWFucyBpdCBpcyBpbXBvc3NpYmxlIHRvIHBhc3MgYW4gZW1wdHkgZmlsdGVyCisgICAgIyBpbnRv
IGEgcHJvY2VzcyB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuICBIb3dldmVyLCB3ZSBj
YW4gc3RpbGwKKyAgICAjIHRlc3QgdGhlIGNhc2Ugd2hlbiB0aGUgdmFyaWFibGUgaXMgbm90IHN1
cHBsaWVkIChpLmUuLCBndGVzdF9maWx0ZXIgaXMKKyAgICAjIE5vbmUpLgorICAgICMgcHlsaW50
OiBkaXNhYmxlLW1zZz1DNjQwMworICAgIGlmIENBTl9URVNUX0VNUFRZX0ZJTFRFUiBvciBndGVz
dF9maWx0ZXIgIT0gJyc6CisgICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIGd0ZXN0X2Zp
bHRlcikKKyAgICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0TGlzdCgpWzBdCisgICAg
ICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIE5vbmUpCisgICAgICBzZWxmLkFzc2VydFNldEVx
dWFsKHRlc3RzX3J1biwgdGVzdHNfdG9fcnVuKQorICAgICMgcHlsaW50OiBlbmFibGUtbXNnPUM2
NDAzCisKKyAgICAjIE5leHQsIHRlc3RzIHVzaW5nIHRoZSBjb21tYW5kIGxpbmUgZmxhZy4KKwor
ICAgIGlmIGd0ZXN0X2ZpbHRlciBpcyBOb25lOgorICAgICAgYXJncyA9IFtdCisgICAgZWxzZToK
KyAgICAgIGFyZ3MgPSBbJy0tJXM9JXMnICUgKEZJTFRFUl9GTEFHLCBndGVzdF9maWx0ZXIpXQor
CisgICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KGFyZ3MpWzBdCisgICAgc2Vs
Zi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIHRlc3RzX3RvX3J1bikKKworICBkZWYgUnVuQW5k
VmVyaWZ5V2l0aFNoYXJkaW5nKHNlbGYsIGd0ZXN0X2ZpbHRlciwgdG90YWxfc2hhcmRzLCB0ZXN0
c190b19ydW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz1Ob25lLCBjaGVj
a19leGl0XzA9RmFsc2UpOgorICAgICIiIkNoZWNrcyB0aGF0IGJpbmFyeSBydW5zIGNvcnJlY3Qg
dGVzdHMgZm9yIHRoZSBnaXZlbiBmaWx0ZXIgYW5kIHNoYXJkLgorCisgICAgUnVucyBhbGwgc2hh
cmRzIG9mIGdvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0XyB3aXRoIHRoZSBnaXZlbiBmaWx0ZXIs
IGFuZAorICAgIHZlcmlmaWVzIHRoYXQgdGhlIHJpZ2h0IHNldCBvZiB0ZXN0cyB3ZXJlIHJ1bi4g
VGhlIHVuaW9uIG9mIHRlc3RzIHJ1bgorICAgIG9uIGVhY2ggc2hhcmQgc2hvdWxkIGJlIGlkZW50
aWNhbCB0byB0ZXN0c190b19ydW4sIHdpdGhvdXQgZHVwbGljYXRlcy4KKyAgICBJZiBjaGVja19l
eGl0XzAsIC4KKworICAgIEFyZ3M6CisgICAgICBndGVzdF9maWx0ZXI6IEEgZmlsdGVyIHRvIGFw
cGx5IHRvIHRoZSB0ZXN0cy4KKyAgICAgIHRvdGFsX3NoYXJkczogQSB0b3RhbCBudW1iZXIgb2Yg
c2hhcmRzIHRvIHNwbGl0IHRlc3QgcnVuIGludG8uCisgICAgICB0ZXN0c190b19ydW46IEEgc2V0
IG9mIHRlc3RzIGV4cGVjdGVkIHRvIHJ1bi4KKyAgICAgIGFyZ3MgICA6ICAgICAgQXJndW1lbnRz
IHRvIHBhc3MgdG8gdGhlIHRvIHRoZSB0ZXN0IGJpbmFyeS4KKyAgICAgIGNoZWNrX2V4aXRfMDog
V2hlbiBzZXQgdG8gYSB0cnVlIHZhbHVlLCBtYWtlIHN1cmUgdGhhdCBhbGwgc2hhcmRzCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAwLgorICAgICIiIgorCisgICAgdGVzdHNfdG9fcnVuID0g
c2VsZi5BZGp1c3RGb3JQYXJhbWV0ZXJpemVkVGVzdHModGVzdHNfdG9fcnVuKQorCisgICAgIyBX
aW5kb3dzIHJlbW92ZXMgZW1wdHkgdmFyaWFibGVzIGZyb20gdGhlIGVudmlyb25tZW50IHdoZW4g
cGFzc2luZyBpdAorICAgICMgdG8gYSBuZXcgcHJvY2Vzcy4gIFRoaXMgbWVhbnMgaXQgaXMgaW1w
b3NzaWJsZSB0byBwYXNzIGFuIGVtcHR5IGZpbHRlcgorICAgICMgaW50byBhIHByb2Nlc3MgdXNp
bmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLiAgSG93ZXZlciwgd2UgY2FuIHN0aWxsCisgICAg
IyB0ZXN0IHRoZSBjYXNlIHdoZW4gdGhlIHZhcmlhYmxlIGlzIG5vdCBzdXBwbGllZCAoaS5lLiwg
Z3Rlc3RfZmlsdGVyIGlzCisgICAgIyBOb25lKS4KKyAgICAjIHB5bGludDogZGlzYWJsZS1tc2c9
QzY0MDMKKyAgICBpZiBDQU5fVEVTVF9FTVBUWV9GSUxURVIgb3IgZ3Rlc3RfZmlsdGVyICE9ICcn
OgorICAgICAgU2V0RW52VmFyKEZJTFRFUl9FTlZfVkFSLCBndGVzdF9maWx0ZXIpCisgICAgICBw
YXJ0aXRpb24gPSBbXQorICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgdG90YWxfc2hhcmRzKToKKyAg
ICAgICAgKHRlc3RzX3J1biwgZXhpdF9jb2RlKSA9IFJ1bldpdGhTaGFyZGluZyh0b3RhbF9zaGFy
ZHMsIGksIGFyZ3MpCisgICAgICAgIGlmIGNoZWNrX2V4aXRfMDoKKyAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDAsIGV4aXRfY29kZSkKKyAgICAgICAgcGFydGl0aW9uLmFwcGVuZCh0ZXN0c19y
dW4pCisKKyAgICAgIHNlbGYuQXNzZXJ0UGFydGl0aW9uSXNWYWxpZCh0ZXN0c190b19ydW4sIHBh
cnRpdGlvbikKKyAgICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgTm9uZSkKKyAgICAjIHB5
bGludDogZW5hYmxlLW1zZz1DNjQwMworCisgIGRlZiBSdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2Fi
bGVkKHNlbGYsIGd0ZXN0X2ZpbHRlciwgdGVzdHNfdG9fcnVuKToKKyAgICAiIiJDaGVja3MgdGhh
dCB0aGUgYmluYXJ5IHJ1bnMgY29ycmVjdCBzZXQgb2YgdGVzdHMgZm9yIHRoZSBnaXZlbiBmaWx0
ZXIuCisKKyAgICBSdW5zIGdvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0XyB3aXRoIHRoZSBnaXZl
biBmaWx0ZXIsIGFuZCBlbmFibGVzCisgICAgZGlzYWJsZWQgdGVzdHMuIFZlcmlmaWVzIHRoYXQg
dGhlIHJpZ2h0IHNldCBvZiB0ZXN0cyB3ZXJlIHJ1bi4KKworICAgIEFyZ3M6CisgICAgICBndGVz
dF9maWx0ZXI6IEEgZmlsdGVyIHRvIGFwcGx5IHRvIHRoZSB0ZXN0cy4KKyAgICAgIHRlc3RzX3Rv
X3J1bjogQSBzZXQgb2YgdGVzdHMgZXhwZWN0ZWQgdG8gcnVuLgorICAgICIiIgorCisgICAgdGVz
dHNfdG9fcnVuID0gc2VsZi5BZGp1c3RGb3JQYXJhbWV0ZXJpemVkVGVzdHModGVzdHNfdG9fcnVu
KQorCisgICAgIyBDb25zdHJ1Y3QgdGhlIGNvbW1hbmQgbGluZS4KKyAgICBhcmdzID0gWyctLSVz
JyAlIEFMU09fUlVOX0RJU0FCTEVEX1RFU1RTX0ZMQUddCisgICAgaWYgZ3Rlc3RfZmlsdGVyIGlz
IG5vdCBOb25lOgorICAgICAgYXJncy5hcHBlbmQoJy0tJXM9JXMnICUgKEZJTFRFUl9GTEFHLCBn
dGVzdF9maWx0ZXIpKQorCisgICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KGFy
Z3MpWzBdCisgICAgc2VsZi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIHRlc3RzX3RvX3J1bikK
KworICBkZWYgc2V0VXAoc2VsZik6CisgICAgIiIiU2V0cyB1cCB0ZXN0IGNhc2UuCisKKyAgICBE
ZXRlcm1pbmVzIHdoZXRoZXIgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZW5hYmxlZCBp
biB0aGUgYmluYXJ5IGFuZAorICAgIHNldHMgdGhlIGZsYWdzIGFjY29yZGluZ2x5LgorICAgICIi
IgorCisgICAgZ2xvYmFsIHBhcmFtX3Rlc3RzX3ByZXNlbnQKKyAgICBpZiBwYXJhbV90ZXN0c19w
cmVzZW50IGlzIE5vbmU6CisgICAgICBwYXJhbV90ZXN0c19wcmVzZW50ID0gUEFSQU1fVEVTVF9S
RUdFWC5zZWFyY2goCisgICAgICAgICAgUnVuQW5kUmV0dXJuT3V0cHV0KCkpIGlzIG5vdCBOb25l
CisKKyAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3Ioc2VsZik6CisgICAgIiIiVGVzdHMgdGhlIGJl
aGF2aW9yIG9mIG5vdCBzcGVjaWZ5aW5nIHRoZSBmaWx0ZXIuIiIiCisKKyAgICBzZWxmLlJ1bkFu
ZFZlcmlmeShOb25lLCBBQ1RJVkVfVEVTVFMpCisKKyAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3JX
aXRoU2hhcmRzKHNlbGYpOgorICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciB3aXRob3V0IHRoZSBm
aWx0ZXIsIHdpdGggc2hhcmRpbmcgZW5hYmxlZC4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5
V2l0aFNoYXJkaW5nKE5vbmUsIDEsIEFDVElWRV9URVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlm
eVdpdGhTaGFyZGluZyhOb25lLCAyLCBBQ1RJVkVfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRWZXJp
ZnlXaXRoU2hhcmRpbmcoTm9uZSwgbGVuKEFDVElWRV9URVNUUykgLSAxLCBBQ1RJVkVfVEVTVFMp
CisgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgbGVuKEFDVElWRV9URVNU
UyksIEFDVElWRV9URVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhOb25l
LCBsZW4oQUNUSVZFX1RFU1RTKSArIDEsIEFDVElWRV9URVNUUykKKworICBkZWYgdGVzdEVtcHR5
RmlsdGVyKHNlbGYpOgorICAgICIiIlRlc3RzIGFuIGVtcHR5IGZpbHRlci4iIiIKKworICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KCcnLCBbXSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGlu
ZygnJywgMSwgW10pCisgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJycsIDIsIFtd
KQorCisgIGRlZiB0ZXN0QmFkRmlsdGVyKHNlbGYpOgorICAgICIiIlRlc3RzIGEgZmlsdGVyIHRo
YXQgbWF0Y2hlcyBub3RoaW5nLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0JhZEZpbHRl
cicsIFtdKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnQmFkRmlsdGVy
JywgW10pCisKKyAgZGVmIHRlc3RGdWxsTmFtZShzZWxmKToKKyAgICAiIiJUZXN0cyBmaWx0ZXJp
bmcgYnkgZnVsbCBuYW1lLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0Zvb1Rlc3QuWHl6
JywgWydGb29UZXN0Llh5eiddKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxl
ZCgnRm9vVGVzdC5YeXonLCBbJ0Zvb1Rlc3QuWHl6J10pCisgICAgc2VsZi5SdW5BbmRWZXJpZnlX
aXRoU2hhcmRpbmcoJ0Zvb1Rlc3QuWHl6JywgNSwgWydGb29UZXN0Llh5eiddKQorCisgIGRlZiB0
ZXN0VW5pdmVyc2FsRmlsdGVycyhzZWxmKToKKyAgICAiIiJUZXN0cyBmaWx0ZXJzIHRoYXQgbWF0
Y2ggZXZlcnl0aGluZy4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqJywgQUNUSVZFX1RF
U1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLionLCBBQ1RJVkVfVEVTVFMpCisgICAgc2Vs
Zi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJyouKicsIGxlbihBQ1RJVkVfVEVTVFMpIC0gMywg
QUNUSVZFX1RFU1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnKics
IEFDVElWRV9URVNUUyArIERJU0FCTEVEX1RFU1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxs
b3dpbmdEaXNhYmxlZCgnKi4qJywgQUNUSVZFX1RFU1RTICsgRElTQUJMRURfVEVTVFMpCisKKyAg
ZGVmIHRlc3RGaWx0ZXJCeVRlc3RDYXNlKHNlbGYpOgorICAgICIiIlRlc3RzIGZpbHRlcmluZyBi
eSB0ZXN0IGNhc2UgbmFtZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdGb29UZXN0Lion
LCBbJ0Zvb1Rlc3QuQWJjJywgJ0Zvb1Rlc3QuWHl6J10pCisKKyAgICBCQVpfVEVTVFMgPSBbJ0Jh
elRlc3QuVGVzdE9uZScsICdCYXpUZXN0LlRlc3RBJywgJ0JhelRlc3QuVGVzdEInXQorICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KCdCYXpUZXN0LionLCBCQVpfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRW
ZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdCYXpUZXN0LionLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCQVpfVEVTVFMgKyBbJ0JhelRlc3QuRElTQUJMRURfVGVzdEMnXSkK
KworICBkZWYgdGVzdEZpbHRlckJ5VGVzdChzZWxmKToKKyAgICAiIiJUZXN0cyBmaWx0ZXJpbmcg
YnkgdGVzdCBuYW1lLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyouVGVzdE9uZScsIFsn
QmFyVGVzdC5UZXN0T25lJywgJ0JhelRlc3QuVGVzdE9uZSddKQorCisgIGRlZiB0ZXN0RmlsdGVy
RGlzYWJsZWRUZXN0cyhzZWxmKToKKyAgICAiIiJTZWxlY3Qgb25seSB0aGUgZGlzYWJsZWQgdGVz
dHMgdG8gcnVuLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0RJU0FCTEVEX0Zvb2JhclRl
c3QuVGVzdDEnLCBbXSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0RJ
U0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnXSkKKworICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KCcqRElTQUJMRURfKicsIFtdKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdE
aXNhYmxlZCgnKkRJU0FCTEVEXyonLCBESVNBQkxFRF9URVNUUykKKworICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KCcqLkRJU0FCTEVEXyonLCBbXSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5n
RGlzYWJsZWQoJyouRElTQUJMRURfKicsIFsKKyAgICAgICAgJ0JhclRlc3QuRElTQUJMRURfVGVz
dEZvdXInLAorICAgICAgICAnQmFyVGVzdC5ESVNBQkxFRF9UZXN0Rml2ZScsCisgICAgICAgICdC
YXpUZXN0LkRJU0FCTEVEX1Rlc3RDJywKKyAgICAgICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuRElT
QUJMRURfVGVzdDInLAorICAgICAgICBdKQorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0RJU0FC
TEVEXyonLCBbXSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0RJU0FC
TEVEXyonLCBbCisgICAgICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LlRlc3QxJywKKyAgICAgICAg
J0RJU0FCTEVEX0Zvb2JhclRlc3QuRElTQUJMRURfVGVzdDInLAorICAgICAgICAnRElTQUJMRURf
Rm9vYmFyYmF6VGVzdC5UZXN0QScsCisgICAgICAgIF0pCisKKyAgZGVmIHRlc3RXaWxkY2FyZElu
VGVzdENhc2VOYW1lKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5nIHdpbGRjYXJkIGluIHRoZSB0
ZXN0IGNhc2UgbmFtZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqYSouKicsIFsKKyAg
ICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCisgICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAorICAg
ICAgICAnQmFyVGVzdC5UZXN0VGhyZWUnLAorCisgICAgICAgICdCYXpUZXN0LlRlc3RPbmUnLAor
ICAgICAgICAnQmF6VGVzdC5UZXN0QScsCisgICAgICAgICdCYXpUZXN0LlRlc3RCJywgXSArIERF
QVRIX1RFU1RTICsgUEFSQU1fVEVTVFMpCisKKyAgZGVmIHRlc3RXaWxkY2FyZEluVGVzdE5hbWUo
c2VsZik6CisgICAgIiIiVGVzdHMgdXNpbmcgd2lsZGNhcmQgaW4gdGhlIHRlc3QgbmFtZS4iIiIK
KworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLipBKicsIFsnRm9vVGVzdC5BYmMnLCAnQmF6VGVz
dC5UZXN0QSddKQorCisgIGRlZiB0ZXN0RmlsdGVyV2l0aG91dERvdChzZWxmKToKKyAgICAiIiJU
ZXN0cyBhIGZpbHRlciB0aGF0IGhhcyBubyAnLicgaW4gaXQuIiIiCisKKyAgICBzZWxmLlJ1bkFu
ZFZlcmlmeSgnKnoqJywgWworICAgICAgICAnRm9vVGVzdC5YeXonLAorCisgICAgICAgICdCYXpU
ZXN0LlRlc3RPbmUnLAorICAgICAgICAnQmF6VGVzdC5UZXN0QScsCisgICAgICAgICdCYXpUZXN0
LlRlc3RCJywKKyAgICAgICAgXSkKKworICBkZWYgdGVzdFR3b1BhdHRlcm5zKHNlbGYpOgorICAg
ICIiIlRlc3RzIGZpbHRlcnMgdGhhdCBjb25zaXN0IG9mIHR3byBwYXR0ZXJucy4iIiIKKworICAg
IHNlbGYuUnVuQW5kVmVyaWZ5KCdGb28qLio6KkEqJywgWworICAgICAgICAnRm9vVGVzdC5BYmMn
LAorICAgICAgICAnRm9vVGVzdC5YeXonLAorCisgICAgICAgICdCYXpUZXN0LlRlc3RBJywKKyAg
ICAgICAgXSkKKworICAgICMgQW4gZW1wdHkgcGF0dGVybiArIGEgbm9uLWVtcHR5IG9uZQorICAg
IHNlbGYuUnVuQW5kVmVyaWZ5KCc6KkEqJywgWydGb29UZXN0LkFiYycsICdCYXpUZXN0LlRlc3RB
J10pCisKKyAgZGVmIHRlc3RUaHJlZVBhdHRlcm5zKHNlbGYpOgorICAgICIiIlRlc3RzIGZpbHRl
cnMgdGhhdCBjb25zaXN0IG9mIHRocmVlIHBhdHRlcm5zLiIiIgorCisgICAgc2VsZi5SdW5BbmRW
ZXJpZnkoJypvbyo6KkEqOipPbmUnLCBbCisgICAgICAgICdGb29UZXN0LkFiYycsCisgICAgICAg
ICdGb29UZXN0Llh5eicsCisKKyAgICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCisKKyAgICAgICAg
J0JhelRlc3QuVGVzdE9uZScsCisgICAgICAgICdCYXpUZXN0LlRlc3RBJywKKyAgICAgICAgXSkK
KworICAgICMgVGhlIDJuZCBwYXR0ZXJuIGlzIGVtcHR5LgorICAgIHNlbGYuUnVuQW5kVmVyaWZ5
KCcqb28qOjoqT25lJywgWworICAgICAgICAnRm9vVGVzdC5BYmMnLAorICAgICAgICAnRm9vVGVz
dC5YeXonLAorCisgICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAorCisgICAgICAgICdCYXpUZXN0
LlRlc3RPbmUnLAorICAgICAgICBdKQorCisgICAgIyBUaGUgbGFzdCAyIHBhdHRlcm5zIGFyZSBl
bXB0eS4KKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKm9vKjo6JywgWworICAgICAgICAnRm9vVGVz
dC5BYmMnLAorICAgICAgICAnRm9vVGVzdC5YeXonLAorICAgICAgICBdKQorCisgIGRlZiB0ZXN0
TmVnYXRpdmVGaWx0ZXJzKHNlbGYpOgorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLUJhelRlc3Qu
VGVzdE9uZScsIFsKKyAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKKyAgICAgICAgJ0Zvb1Rlc3QuWHl6
JywKKworICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKKyAgICAgICAgJ0JhclRlc3QuVGVzdFR3
bycsCisgICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCisKKyAgICAgICAgJ0JhelRlc3QuVGVz
dEEnLAorICAgICAgICAnQmF6VGVzdC5UZXN0QicsCisgICAgICAgIF0gKyBERUFUSF9URVNUUyAr
IFBBUkFNX1RFU1RTKQorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyotRm9vVGVzdC5BYmM6QmF6
VGVzdC4qJywgWworICAgICAgICAnRm9vVGVzdC5YeXonLAorCisgICAgICAgICdCYXJUZXN0LlRl
c3RPbmUnLAorICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKKyAgICAgICAgJ0JhclRlc3QuVGVz
dFRocmVlJywKKyAgICAgICAgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMpCisKKyAgICBz
ZWxmLlJ1bkFuZFZlcmlmeSgnQmFyVGVzdC4qLUJhclRlc3QuVGVzdE9uZScsIFsKKyAgICAgICAg
J0JhclRlc3QuVGVzdFR3bycsCisgICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCisgICAgICAg
IF0pCisKKyAgICAjIFRlc3RzIHdpdGhvdXQgbGVhZGluZyAnKicuCisgICAgc2VsZi5SdW5BbmRW
ZXJpZnkoJy1Gb29UZXN0LkFiYzpGb29UZXN0Llh5ejpCYXpUZXN0LionLCBbCisgICAgICAgICdC
YXJUZXN0LlRlc3RPbmUnLAorICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKKyAgICAgICAgJ0Jh
clRlc3QuVGVzdFRocmVlJywKKyAgICAgICAgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMp
CisKKyAgICAjIFZhbHVlIHBhcmFtZXRlcml6ZWQgdGVzdHMuCisgICAgc2VsZi5SdW5BbmRWZXJp
ZnkoJyovKicsIFBBUkFNX1RFU1RTKQorCisgICAgIyBWYWx1ZSBwYXJhbWV0ZXJpemVkIHRlc3Rz
IGZpbHRlcmluZyBieSB0aGUgc2VxdWVuY2UgbmFtZS4KKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgn
U2VxUC8qJywgWworICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMCcsCisgICAgICAgICdT
ZXFQL1BhcmFtVGVzdC5UZXN0WC8xJywKKyAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzAn
LAorICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMScsCisgICAgICAgIF0pCisKKyAgICAj
IFZhbHVlIHBhcmFtZXRlcml6ZWQgdGVzdHMgZmlsdGVyaW5nIGJ5IHRoZSB0ZXN0IG5hbWUuCisg
ICAgc2VsZi5SdW5BbmRWZXJpZnkoJyovMCcsIFsKKyAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRl
c3RYLzAnLAorICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMCcsCisgICAgICAgICdTZXFR
L1BhcmFtVGVzdC5UZXN0WC8wJywKKyAgICAgICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RZLzAnLAor
ICAgICAgICBdKQorCisgIGRlZiB0ZXN0RmxhZ092ZXJyaWRlc0VudlZhcihzZWxmKToKKyAgICAi
IiJUZXN0cyB0aGF0IHRoZSBmaWx0ZXIgZmxhZyBvdmVycmlkZXMgdGhlIGZpbHRlcmluZyBlbnYu
IHZhcmlhYmxlLiIiIgorCisgICAgU2V0RW52VmFyKEZJTFRFUl9FTlZfVkFSLCAnRm9vKicpCisg
ICAgYXJncyA9IFsnLS0lcz0lcycgJSAoRklMVEVSX0ZMQUcsICcqT25lJyldCisgICAgdGVzdHNf
cnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KGFyZ3MpWzBdCisgICAgU2V0RW52VmFyKEZJTFRF
Ul9FTlZfVkFSLCBOb25lKQorCisgICAgc2VsZi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIFsn
QmFyVGVzdC5UZXN0T25lJywgJ0JhelRlc3QuVGVzdE9uZSddKQorCisgIGRlZiB0ZXN0U2hhcmRT
dGF0dXNGaWxlSXNDcmVhdGVkKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgdGhlIHNoYXJkIGZp
bGUgaXMgY3JlYXRlZCBpZiBzcGVjaWZpZWQgaW4gdGhlIGVudmlyb25tZW50LiIiIgorCisgICAg
c2hhcmRfc3RhdHVzX2ZpbGUgPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1w
RGlyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYXJkX3N0YXR1
c19maWxlJykKKyAgICBzZWxmLmFzc2VydF8obm90IG9zLnBhdGguZXhpc3RzKHNoYXJkX3N0YXR1
c19maWxlKSkKKworICAgIGV4dHJhX2VudiA9IHtTSEFSRF9TVEFUVVNfRklMRV9FTlZfVkFSOiBz
aGFyZF9zdGF0dXNfZmlsZX0KKyAgICB0cnk6CisgICAgICBJbnZva2VXaXRoTW9kaWZpZWRFbnYo
ZXh0cmFfZW52LCBSdW5BbmRSZXR1cm5PdXRwdXQpCisgICAgZmluYWxseToKKyAgICAgIHNlbGYu
YXNzZXJ0Xyhvcy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkpCisgICAgICBvcy5yZW1v
dmUoc2hhcmRfc3RhdHVzX2ZpbGUpCisKKyAgZGVmIHRlc3RTaGFyZFN0YXR1c0ZpbGVJc0NyZWF0
ZWRXaXRoTGlzdFRlc3RzKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgdGhlIHNoYXJkIGZpbGUg
aXMgY3JlYXRlZCB3aXRoIHRoZSAibGlzdF90ZXN0cyIgZmxhZy4iIiIKKworICAgIHNoYXJkX3N0
YXR1c19maWxlID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGFyZF9zdGF0dXNfZmlsZTIn
KQorICAgIHNlbGYuYXNzZXJ0Xyhub3Qgb3MucGF0aC5leGlzdHMoc2hhcmRfc3RhdHVzX2ZpbGUp
KQorCisgICAgZXh0cmFfZW52ID0ge1NIQVJEX1NUQVRVU19GSUxFX0VOVl9WQVI6IHNoYXJkX3N0
YXR1c19maWxlfQorICAgIHRyeToKKyAgICAgIG91dHB1dCA9IEludm9rZVdpdGhNb2RpZmllZEVu
dihleHRyYV9lbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVuQW5k
UmV0dXJuT3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtMSVNU
X1RFU1RTX0ZMQUddKQorICAgIGZpbmFsbHk6CisgICAgICAjIFRoaXMgYXNzZXJ0aW9uIGVuc3Vy
ZXMgdGhhdCBHb29nbGUgVGVzdCBlbnVtZXJhdGVkIHRoZSB0ZXN0cyBhcworICAgICAgIyBvcHBv
c2VkIHRvIHJ1bm5pbmcgdGhlbS4KKyAgICAgIHNlbGYuYXNzZXJ0XygnWz09PT09PT09PT1dJyBu
b3QgaW4gb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIG91dHB1dCBkdXJp
bmcgdGVzdCBlbnVtZXJhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAnUGxlYXNlIGVuc3Vy
ZSB0aGF0IExJU1RfVEVTVFNfRkxBRyBpcyBhc3NpZ25lZCB0aGVcbicKKyAgICAgICAgICAgICAg
ICAgICAnY29ycmVjdCBmbGFnIHZhbHVlIGZvciBsaXN0aW5nIEdvb2dsZSBUZXN0IHRlc3RzLicp
CisKKyAgICAgIHNlbGYuYXNzZXJ0Xyhvcy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkp
CisgICAgICBvcy5yZW1vdmUoc2hhcmRfc3RhdHVzX2ZpbGUpCisKKyAgaWYgU1VQUE9SVFNfREVB
VEhfVEVTVFM6CisgICAgZGVmIHRlc3RTaGFyZGluZ1dvcmtzV2l0aERlYXRoVGVzdHMoc2VsZik6
CisgICAgICAiIiJUZXN0cyBpbnRlZ3JhdGlvbiB3aXRoIGRlYXRoIHRlc3RzIGFuZCBzaGFyZGlu
Zy4iIiIKKworICAgICAgZ3Rlc3RfZmlsdGVyID0gJ0hhc0RlYXRoVGVzdC4qOlNlcVAvKicKKyAg
ICAgIGV4cGVjdGVkX3Rlc3RzID0gWworICAgICAgICAgICdIYXNEZWF0aFRlc3QuVGVzdDEnLAor
ICAgICAgICAgICdIYXNEZWF0aFRlc3QuVGVzdDInLAorCisgICAgICAgICAgJ1NlcVAvUGFyYW1U
ZXN0LlRlc3RYLzAnLAorICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8xJywKKyAgICAg
ICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMCcsCisgICAgICAgICAgJ1NlcVAvUGFyYW1UZXN0
LlRlc3RZLzEnLAorICAgICAgICAgIF0KKworICAgICAgZm9yIGZsYWcgaW4gWyctLWd0ZXN0X2Rl
YXRoX3Rlc3Rfc3R5bGU9dGhyZWFkc2FmZScsCisgICAgICAgICAgICAgICAgICAgJy0tZ3Rlc3Rf
ZGVhdGhfdGVzdF9zdHlsZT1mYXN0J106CisgICAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNo
YXJkaW5nKGd0ZXN0X2ZpbHRlciwgMywgZXhwZWN0ZWRfdGVzdHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2V4aXRfMD1UcnVlLCBhcmdzPVtmbGFnXSkKKyAg
ICAgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoZ3Rlc3RfZmlsdGVyLCA1LCBleHBl
Y3RlZF90ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tf
ZXhpdF8wPVRydWUsIGFyZ3M9W2ZsYWddKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgor
ICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0Xy5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kMzM1YjYwMzkxZDFkNDY4YTQxMTYxYjM4YzE0ZWNjYmYxZDEzODA1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWZpbHRlci11bml0
dGVzdF8uY2MKQEAgLTAsMCArMSwxMzcgQEAKKy8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5j
LgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworCisvLyBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0IHRlc3QgZmls
dGVycy4KKy8vCisvLyBBIHVzZXIgY2FuIHNwZWNpZnkgd2hpY2ggdGVzdChzKSBpbiBhIEdvb2ds
ZSBUZXN0IHByb2dyYW0gdG8gcnVuIHZpYQorLy8gZWl0aGVyIHRoZSBHVEVTVF9GSUxURVIgZW52
aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlIC0tZ3Rlc3RfZmlsdGVyCisvLyBmbGFnLiAgVGhpcyBp
cyB1c2VkIGZvciB0ZXN0aW5nIHN1Y2ggZnVuY3Rpb25hbGl0eS4KKy8vCisvLyBUaGUgcHJvZ3Jh
bSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRlc3QuICBEb24ndCBydW4gaXQK
Ky8vIGRpcmVjdGx5LgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsK
KworLy8gVGVzdCBjYXNlIEZvb1Rlc3QuCisKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7Cit9OworCitURVNUX0YoRm9vVGVzdCwgQWJjKSB7Cit9CisKK1RFU1RfRihGb29U
ZXN0LCBYeXopIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKKy8vIFRl
c3QgY2FzZSBCYXJUZXN0LgorCitURVNUKEJhclRlc3QsIFRlc3RPbmUpIHsKK30KKworVEVTVChC
YXJUZXN0LCBUZXN0VHdvKSB7Cit9CisKK1RFU1QoQmFyVGVzdCwgVGVzdFRocmVlKSB7Cit9CisK
K1RFU1QoQmFyVGVzdCwgRElTQUJMRURfVGVzdEZvdXIpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3Rl
ZCBmYWlsdXJlLiI7Cit9CisKK1RFU1QoQmFyVGVzdCwgRElTQUJMRURfVGVzdEZpdmUpIHsKKyAg
RkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKKy8vIFRlc3QgY2FzZSBCYXpUZXN0
LgorCitURVNUKEJhelRlc3QsIFRlc3RPbmUpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWls
dXJlLiI7Cit9CisKK1RFU1QoQmF6VGVzdCwgVGVzdEEpIHsKK30KKworVEVTVChCYXpUZXN0LCBU
ZXN0QikgeworfQorCitURVNUKEJhelRlc3QsIERJU0FCTEVEX1Rlc3RDKSB7CisgIEZBSUwoKSA8
PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOworfQorCisvLyBUZXN0IGNhc2UgSGFzRGVhdGhUZXN0CisK
K1RFU1QoSGFzRGVhdGhUZXN0LCBUZXN0MSkgeworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVE
KGV4aXQoMSksICIuKiIpOworfQorCisvLyBXZSBuZWVkIGF0IGxlYXN0IHR3byBkZWF0aCB0ZXN0
cyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgYWxsIGRlYXRoIHRlc3RzCisvLyBhcmVuJ3Qgb24gdGhl
IGZpcnN0IHNoYXJkLgorVEVTVChIYXNEZWF0aFRlc3QsIFRlc3QyKSB7CisgIEVYUEVDVF9ERUFU
SF9JRl9TVVBQT1JURUQoZXhpdCgxKSwgIi4qIik7Cit9CisKKy8vIFRlc3QgY2FzZSBGb29iYXJU
ZXN0CisKK1RFU1QoRElTQUJMRURfRm9vYmFyVGVzdCwgVGVzdDEpIHsKKyAgRkFJTCgpIDw8ICJF
eHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKK1RFU1QoRElTQUJMRURfRm9vYmFyVGVzdCwgRElTQUJM
RURfVGVzdDIpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKKy8vIFRl
c3QgY2FzZSBGb29iYXJiYXpUZXN0CisKK1RFU1QoRElTQUJMRURfRm9vYmFyYmF6VGVzdCwgVGVz
dEEpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKK2NsYXNzIFBhcmFt
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4geworfTsKKworVEVTVF9Q
KFBhcmFtVGVzdCwgVGVzdFgpIHsKK30KKworVEVTVF9QKFBhcmFtVGVzdCwgVGVzdFkpIHsKK30K
KworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxUCwgUGFyYW1UZXN0LCB0ZXN0aW5nOjpWYWx1
ZXMoMSwgMikpOworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxUSwgUGFyYW1UZXN0LCB0ZXN0
aW5nOjpWYWx1ZXMoNSwgNikpOworCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIgKiphcmd2KSB7CisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFy
Z3YpOworCisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtanNvbi1vdXRmaWxlcy10ZXN0LnB5IGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWpzb24tb3V0ZmlsZXMtdGVz
dC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jOTliZTQ4ZThhYzM2NTA5ZWQzMmVhMmZiOGU0ZmExZWE3ZmM4MzY0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LWpzb24tb3V0ZmlsZXMtdGVzdC5weQpAQCAtMCwwICsxLDE2MiBAQAorIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCisjIENvcHlyaWdodCAyMDE4LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVW5pdCB0ZXN0IGZvciB0aGUgZ3Rlc3Rf
anNvbl9vdXRwdXQgbW9kdWxlLiIiIgorCitpbXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQg
Z3Rlc3RfanNvbl90ZXN0X3V0aWxzCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitHVEVTVF9P
VVRQVVRfU1VCRElSID0gJ2pzb25fb3V0ZmlsZXMnCitHVEVTVF9PVVRQVVRfMV9URVNUID0gJ2d0
ZXN0X3htbF9vdXRmaWxlMV90ZXN0XycKK0dURVNUX09VVFBVVF8yX1RFU1QgPSAnZ3Rlc3RfeG1s
X291dGZpbGUyX3Rlc3RfJworCitFWFBFQ1RFRF8xID0geworICAgIHUndGVzdHMnOiAxLAorICAg
IHUnZmFpbHVyZXMnOiAwLAorICAgIHUnZGlzYWJsZWQnOiAwLAorICAgIHUnZXJyb3JzJzogMCwK
KyAgICB1J3RpbWUnOiB1JyonLAorICAgIHUndGltZXN0YW1wJzogdScqJywKKyAgICB1J25hbWUn
OiB1J0FsbFRlc3RzJywKKyAgICB1J3Rlc3RzdWl0ZXMnOiBbeworICAgICAgICB1J25hbWUnOiB1
J1Byb3BlcnR5T25lJywKKyAgICAgICAgdSd0ZXN0cyc6IDEsCisgICAgICAgIHUnZmFpbHVyZXMn
OiAwLAorICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgdSdlcnJvcnMnOiAwLAorICAg
ICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICB1J3Rlc3RzdWl0ZSc6IFt7CisgICAgICAgICAg
ICB1J25hbWUnOiB1J1Rlc3RTb21lUHJvcGVydGllcycsCisgICAgICAgICAgICB1J3N0YXR1cyc6
IHUnUlVOJywKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J2NsYXNz
bmFtZSc6IHUnUHJvcGVydHlPbmUnLAorICAgICAgICAgICAgdSdTZXRVcFByb3AnOiB1JzEnLAor
ICAgICAgICAgICAgdSdUZXN0U29tZVByb3BlcnR5JzogdScxJywKKyAgICAgICAgICAgIHUnVGVh
ckRvd25Qcm9wJzogdScxJywKKyAgICAgICAgfV0sCisgICAgfV0sCit9CisKK0VYUEVDVEVEXzIg
PSB7CisgICAgdSd0ZXN0cyc6IDEsCisgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgdSdkaXNhYmxl
ZCc6IDAsCisgICAgdSdlcnJvcnMnOiAwLAorICAgIHUndGltZSc6IHUnKicsCisgICAgdSd0aW1l
c3RhbXAnOiB1JyonLAorICAgIHUnbmFtZSc6IHUnQWxsVGVzdHMnLAorICAgIHUndGVzdHN1aXRl
cyc6IFt7CisgICAgICAgIHUnbmFtZSc6IHUnUHJvcGVydHlUd28nLAorICAgICAgICB1J3Rlc3Rz
JzogMSwKKyAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgIHUnZGlzYWJsZWQnOiAwLAor
ICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgIHUn
dGVzdHN1aXRlJzogW3sKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnVGVzdFNvbWVQcm9wZXJ0aWVz
JywKKyAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgdSd0aW1lJzog
dScqJywKKyAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdQcm9wZXJ0eVR3bycsCisgICAgICAg
ICAgICB1J1NldFVwUHJvcCc6IHUnMicsCisgICAgICAgICAgICB1J1Rlc3RTb21lUHJvcGVydHkn
OiB1JzInLAorICAgICAgICAgICAgdSdUZWFyRG93blByb3AnOiB1JzInLAorICAgICAgICB9XSwK
KyAgICB9XSwKK30KKworCitjbGFzcyBHVGVzdEpzb25PdXRGaWxlc1Rlc3QoZ3Rlc3RfdGVzdF91
dGlscy5UZXN0Q2FzZSk6CisgICIiIlVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyBKU09OIG91
dHB1dCBmdW5jdGlvbmFsaXR5LiIiIgorCisgIGRlZiBzZXRVcChzZWxmKToKKyAgICAjIFdlIHdh
bnQgdGhlIHRyYWlsaW5nICcvJyB0aGF0IHRoZSBsYXN0ICIiIHByb3ZpZGVzIGluIG9zLnBhdGgu
am9pbiwgZm9yCisgICAgIyB0ZWxsaW5nIEdvb2dsZSBUZXN0IHRvIGNyZWF0ZSBhbiBvdXRwdXQg
ZGlyZWN0b3J5IGluc3RlYWQgb2YgYSBzaW5nbGUgZmlsZQorICAgICMgZm9yIHhtbCBvdXRwdXQu
CisgICAgc2VsZi5vdXRwdXRfZGlyXyA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdl
dFRlbXBEaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX09V
VFBVVF9TVUJESVIsICcnKQorICAgIHNlbGYuRGVsZXRlRmlsZXNBbmREaXIoKQorCisgIGRlZiB0
ZWFyRG93bihzZWxmKToKKyAgICBzZWxmLkRlbGV0ZUZpbGVzQW5kRGlyKCkKKworICBkZWYgRGVs
ZXRlRmlsZXNBbmREaXIoc2VsZik6CisgICAgdHJ5OgorICAgICAgb3MucmVtb3ZlKG9zLnBhdGgu
am9pbihzZWxmLm91dHB1dF9kaXJfLCBHVEVTVF9PVVRQVVRfMV9URVNUICsgJy5qc29uJykpCisg
ICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgcGFzcworICAgIHRyeToKKyAgICAgIG9zLnJlbW92
ZShvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGlyXywgR1RFU1RfT1VUUFVUXzJfVEVTVCArICcu
anNvbicpKQorICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgIHBhc3MKKyAgICB0cnk6CisgICAg
ICBvcy5ybWRpcihzZWxmLm91dHB1dF9kaXJfKQorICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAg
IHBhc3MKKworICBkZWYgdGVzdE91dGZpbGUxKHNlbGYpOgorICAgIHNlbGYuX1Rlc3RPdXRGaWxl
KEdURVNUX09VVFBVVF8xX1RFU1QsIEVYUEVDVEVEXzEpCisKKyAgZGVmIHRlc3RPdXRmaWxlMihz
ZWxmKToKKyAgICBzZWxmLl9UZXN0T3V0RmlsZShHVEVTVF9PVVRQVVRfMl9URVNULCBFWFBFQ1RF
RF8yKQorCisgIGRlZiBfVGVzdE91dEZpbGUoc2VsZiwgdGVzdF9uYW1lLCBleHBlY3RlZCk6Cisg
ICAgZ3Rlc3RfcHJvZ19wYXRoID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBh
dGgodGVzdF9uYW1lKQorICAgIGNvbW1hbmQgPSBbZ3Rlc3RfcHJvZ19wYXRoLCAnLS1ndGVzdF9v
dXRwdXQ9anNvbjolcycgJSBzZWxmLm91dHB1dF9kaXJfXQorICAgIHAgPSBndGVzdF90ZXN0X3V0
aWxzLlN1YnByb2Nlc3MoY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdvcmtpbmdfZGlyPWd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpKQorICAgIHNlbGYu
YXNzZXJ0XyhwLmV4aXRlZCkKKyAgICBzZWxmLmFzc2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkK
KworICAgICMgRklYTUU6IGxpYnRvb2wgY2F1c2VzIHRoZSBidWlsdCB0ZXN0IGJpbmFyeSB0byBi
ZQorICAgICMgICBuYW1lZCBsdC1ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8gaW5zdGVhZCBvZgor
ICAgICMgICBndGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8uICBUbyBhY2NvdW50IGZvciB0aGlzIHBv
c3NpYmlsaXR5LCB3ZQorICAgICMgICBhbGxvdyBib3RoIG5hbWVzIGluIHRoZSBmb2xsb3dpbmcg
Y29kZS4gIFdlIHNob3VsZCByZW1vdmUgdGhpcworICAgICMgICB3aGVuIGxpYnRvb2wgcmVwbGFj
ZW1lbnQgdG9vbCBpcyByZWFkeS4KKyAgICBvdXRwdXRfZmlsZV9uYW1lMSA9IHRlc3RfbmFtZSAr
ICcuanNvbicKKyAgICBvdXRwdXRfZmlsZTEgPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGly
Xywgb3V0cHV0X2ZpbGVfbmFtZTEpCisgICAgb3V0cHV0X2ZpbGVfbmFtZTIgPSAnbHQtJyArIG91
dHB1dF9maWxlX25hbWUxCisgICAgb3V0cHV0X2ZpbGUyID0gb3MucGF0aC5qb2luKHNlbGYub3V0
cHV0X2Rpcl8sIG91dHB1dF9maWxlX25hbWUyKQorICAgIHNlbGYuYXNzZXJ0Xyhvcy5wYXRoLmlz
ZmlsZShvdXRwdXRfZmlsZTEpIG9yIG9zLnBhdGguaXNmaWxlKG91dHB1dF9maWxlMiksCisgICAg
ICAgICAgICAgICAgIG91dHB1dF9maWxlMSkKKworICAgIGlmIG9zLnBhdGguaXNmaWxlKG91dHB1
dF9maWxlMSk6CisgICAgICB3aXRoIG9wZW4ob3V0cHV0X2ZpbGUxKSBhcyBmOgorICAgICAgICBh
Y3R1YWwgPSBqc29uLmxvYWQoZikKKyAgICBlbHNlOgorICAgICAgd2l0aCBvcGVuKG91dHB1dF9m
aWxlMikgYXMgZjoKKyAgICAgICAgYWN0dWFsID0ganNvbi5sb2FkKGYpCisgICAgc2VsZi5hc3Nl
cnRFcXVhbChleHBlY3RlZCwgZ3Rlc3RfanNvbl90ZXN0X3V0aWxzLm5vcm1hbGl6ZShhY3R1YWwp
KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIG9zLmVudmlyb25bJ0dURVNUX1NU
QUNLX1RSQUNFX0RFUFRIJ10gPSAnMCcKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1qc29uLW91dHB1
dC11bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1q
c29uLW91dHB1dC11bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2RjZDVmYTFjNDYzOWYxNTJmYjU0
ZTUwZmI5YzA1OThhMGU0NmEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWpzb24tb3V0cHV0LXVuaXR0ZXN0LnB5CkBAIC0wLDAgKzEs
NjE4IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IDIwMTgsIEdvb2dsZSBJ
bmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJVbml0
IHRlc3QgZm9yIHRoZSBndGVzdF9qc29uX291dHB1dCBtb2R1bGUuIiIiCisKK2ltcG9ydCBkYXRl
dGltZQoraW1wb3J0IGVycm5vCitpbXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2lt
cG9ydCBzeXMKKworaW1wb3J0IGd0ZXN0X2pzb25fdGVzdF91dGlscworaW1wb3J0IGd0ZXN0X3Rl
c3RfdXRpbHMKKworR1RFU1RfRklMVEVSX0ZMQUcgPSAnLS1ndGVzdF9maWx0ZXInCitHVEVTVF9M
SVNUX1RFU1RTX0ZMQUcgPSAnLS1ndGVzdF9saXN0X3Rlc3RzJworR1RFU1RfT1VUUFVUX0ZMQUcg
PSAnLS1ndGVzdF9vdXRwdXQnCitHVEVTVF9ERUZBVUxUX09VVFBVVF9GSUxFID0gJ3Rlc3RfZGV0
YWlsLmpzb24nCitHVEVTVF9QUk9HUkFNX05BTUUgPSAnZ3Rlc3RfeG1sX291dHB1dF91bml0dGVz
dF8nCisKKyMgVGhlIGZsYWcgaW5kaWNhdGluZyBzdGFja3RyYWNlcyBhcmUgbm90IHN1cHBvcnRl
ZAorTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZMQUcgPSAnLS1ub19zdGFja3RyYWNlX3N1cHBvcnQn
CisKK1NVUFBPUlRTX1NUQUNLX1RSQUNFUyA9IE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFHIG5v
dCBpbiBzeXMuYXJndgorCitpZiBTVVBQT1JUU19TVEFDS19UUkFDRVM6CisgIFNUQUNLX1RSQUNF
X1RFTVBMQVRFID0gJ1xuU3RhY2sgdHJhY2U6XG4qJworZWxzZToKKyAgU1RBQ0tfVFJBQ0VfVEVN
UExBVEUgPSAnJworCitFWFBFQ1RFRF9OT05fRU1QVFkgPSB7CisgICAgdSd0ZXN0cyc6IDIzLAor
ICAgIHUnZmFpbHVyZXMnOiA0LAorICAgIHUnZGlzYWJsZWQnOiAyLAorICAgIHUnZXJyb3JzJzog
MCwKKyAgICB1J3RpbWVzdGFtcCc6IHUnKicsCisgICAgdSd0aW1lJzogdScqJywKKyAgICB1J2Fk
X2hvY19wcm9wZXJ0eSc6IHUnNDInLAorICAgIHUnbmFtZSc6IHUnQWxsVGVzdHMnLAorICAgIHUn
dGVzdHN1aXRlcyc6IFsKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdTdWNjZXNz
ZnVsVGVzdCcsCisgICAgICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVy
ZXMnOiAwLAorICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9y
cyc6IDAsCisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3Vp
dGUnOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1
J1N1Y2NlZWRzJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAg
ICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xh
c3NuYW1lJzogdSdTdWNjZXNzZnVsVGVzdCcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnRmFpbGVk
VGVzdCcsCisgICAgICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMn
OiAxLAorICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6
IDAsCisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUn
OiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0Zh
aWxzJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAg
ICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1l
JzogdSdGYWlsZWRUZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdmYWlsdXJlcyc6IFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2Zh
aWx1cmUnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2d0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3RfLmNjOipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdF
eHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4nCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHUnICAxXG4gIDInICsgU1RBQ0tfVFJBQ0VfVEVNUExBVEUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdSd0eXBlJzogdScnCisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnRGlzYWJs
ZWRUZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJl
cyc6IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMSwKKyAgICAgICAgICAgIHUnZXJyb3Jz
JzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0
ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUn
RElTQUJMRURfdGVzdF9ub3RfcnVuJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1
J05PVFJVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAg
ICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdEaXNhYmxlZFRlc3QnCisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1J25h
bWUnOiB1J01peGVkUmVzdWx0VGVzdCcsCisgICAgICAgICAgICB1J3Rlc3RzJzogMywKKyAgICAg
ICAgICAgIHUnZmFpbHVyZXMnOiAxLAorICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDEsCisgICAg
ICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAg
ICAgICAgdSd0ZXN0c3VpdGUnOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICB1J25hbWUnOiB1J1N1Y2NlZWRzJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMn
OiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAg
ICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdNaXhlZFJlc3VsdFRlc3QnCisgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUn
RmFpbHMnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAg
ICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25h
bWUnOiB1J01peGVkUmVzdWx0VGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUnZmFpbHVyZXMn
OiBbCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdSdmYWlsdXJlJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdndGVzdF94
bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHUnRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuJworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1JyAgMVxuICAyJyArIFNUQUNLX1RSQUNFX1RFTVBMQVRFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUndHlwZSc6IHUnJworICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1J2ZhaWx1cmUnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
J2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOipcbicKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdSdFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4nCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnICAyXG4gIDMnICsgU1RBQ0tfVFJBQ0VfVEVN
UExBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSd0eXBlJzogdScnCisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdE
SVNBQkxFRF90ZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J05PVFJVTics
CisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAg
IHUnY2xhc3NuYW1lJzogdSdNaXhlZFJlc3VsdFRlc3QnCisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1
J1htbFF1b3RpbmdUZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAg
dSdmYWlsdXJlcyc6IDEsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAg
IHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1
J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUn
bmFtZSc6IHUnT3V0cHV0c0NEYXRhJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1
J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAg
ICAgICAgIHUnY2xhc3NuYW1lJzogdSdYbWxRdW90aW5nVGVzdCcsCisgICAgICAgICAgICAgICAg
ICAgIHUnZmFpbHVyZXMnOiBbCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdSdmYWlsdXJlJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdSdndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqXG4nCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHUnRmFpbGVkXG5YTUwgb3V0cHV0OiA8P3htbCBlbmNvZGluZz0i
dXRmLTgiPicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSc8dG9wPjwhW0NEQVRB
W2NkYXRhIHRleHRdXT48L3RvcD4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U1RBQ0tfVFJBQ0VfVEVNUExBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSd0eXBl
JzogdScnCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIHUnbmFtZSc6IHUnSW52YWxpZENoYXJhY3RlcnNUZXN0JywKKyAgICAgICAg
ICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDEsCisgICAgICAgICAg
ICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAg
IHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnSW52YWxpZENoYXJhY3RlcnNJ
bk1lc3NhZ2UnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAg
ICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFz
c25hbWUnOiB1J0ludmFsaWRDaGFyYWN0ZXJzVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUn
ZmFpbHVyZXMnOiBbCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdSdmYWlsdXJlJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dSdndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqXG4nCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHUnRmFpbGVkXG5JbnZhbGlkIGNoYXJhY3RlcnMgaW4gYnJhY2tldHMnCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnIFtceDAxXHgwMl0nICsgU1RBQ0tfVFJB
Q0VfVEVNUExBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSd0eXBlJzogdScnCisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHUnbmFtZSc6IHUnUHJvcGVydHlSZWNvcmRpbmdUZXN0JywKKyAgICAgICAgICAgIHUndGVz
dHMnOiA0LAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgICAgICB1J2Rpc2Fi
bGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6
IHUnKicsCisgICAgICAgICAgICB1J1NldFVwVGVzdENhc2UnOiB1J3llcycsCisgICAgICAgICAg
ICB1J1RlYXJEb3duVGVzdENhc2UnOiB1J2F5ZScsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6
IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnT25l
UHJvcGVydHknLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAg
ICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFz
c25hbWUnOiB1J1Byb3BlcnR5UmVjb3JkaW5nVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUn
a2V5XzEnOiB1JzEnCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnSW50VmFsdWVkUHJvcGVydHknLAorICAgICAgICAg
ICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1l
JzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1Byb3BlcnR5UmVj
b3JkaW5nVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUna2V5X2ludCc6IHUnMScKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSdu
YW1lJzogdSdUaHJlZVByb3BlcnRpZXMnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6
IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAg
ICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1Byb3BlcnR5UmVjb3JkaW5nVGVzdCcsCisgICAgICAg
ICAgICAgICAgICAgIHUna2V5XzEnOiB1JzEnLAorICAgICAgICAgICAgICAgICAgICB1J2tleV8y
JzogdScyJywKKyAgICAgICAgICAgICAgICAgICAgdSdrZXlfMyc6IHUnMycKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzog
dSdUd29WYWx1ZXNGb3JPbmVLZXlVc2VzTGFzdFZhbHVlJywKKyAgICAgICAgICAgICAgICAgICAg
dSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisg
ICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdQcm9wZXJ0eVJlY29yZGluZ1Rlc3Qn
LAorICAgICAgICAgICAgICAgICAgICB1J2tleV8xJzogdScyJworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1l
JzogdSdOb0ZpeHR1cmVUZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiAzLAorICAgICAgICAg
ICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAg
ICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAg
ICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHUnbmFtZSc6IHUnUmVjb3JkUHJvcGVydHknLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1
cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAg
ICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J05vRml4dHVyZVRlc3QnLAorICAgICAgICAgICAg
ICAgICAgICB1J2tleSc6IHUnMScKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdFeHRlcm5hbFV0aWxpdHlUaGF0Q2Fs
bHNSZWNvcmRJbnRWYWx1ZWRQcm9wZXJ0eScsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVz
JzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAg
ICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnTm9GaXh0dXJlVGVzdCcsCisgICAgICAgICAgICAg
ICAgICAgIHUna2V5X2Zvcl91dGlsaXR5X2ludCc6IHUnMScKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHUnRXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkU3RyaW5nVmFs
dWVkUHJvcGVydHknLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAg
ICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdj
bGFzc25hbWUnOiB1J05vRml4dHVyZVRlc3QnLAorICAgICAgICAgICAgICAgICAgICB1J2tleV9m
b3JfdXRpbGl0eV9zdHJpbmcnOiB1JzEnCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
XQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1J1R5cGVkVGVz
dC8wJywKKyAgICAgICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6
IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzog
MCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6
IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnSGFz
VHlwZVBhcmFtQXR0cmlidXRlJywKKyAgICAgICAgICAgICAgICAgICAgdSd0eXBlX3BhcmFtJzog
dSdpbnQnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAg
ICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25h
bWUnOiB1J1R5cGVkVGVzdC8wJworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdUeXBlZFRlc3QvMScs
CisgICAgICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAwLAor
ICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6IDAsCisg
ICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBbCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0hhc1R5cGVQ
YXJhbUF0dHJpYnV0ZScsCisgICAgICAgICAgICAgICAgICAgIHUndHlwZV9wYXJhbSc6IHUnbG9u
ZycsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAg
ICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6
IHUnVHlwZWRUZXN0LzEnCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAg
ICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1J1NpbmdsZS9UeXBlUGFyYW1l
dGVyaXplZFRlc3RDYXNlLzAnLAorICAgICAgICAgICAgdSd0ZXN0cyc6IDEsCisgICAgICAgICAg
ICB1J2ZhaWx1cmVzJzogMCwKKyAgICAgICAgICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAgICAg
ICAgdSdlcnJvcnMnOiAwLAorICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAg
IHUndGVzdHN1aXRlJzogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
dSduYW1lJzogdSdIYXNUeXBlUGFyYW1BdHRyaWJ1dGUnLAorICAgICAgICAgICAgICAgICAgICB1
J3R5cGVfcGFyYW0nOiB1J2ludCcsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdS
VU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAg
ICAgICB1J2NsYXNzbmFtZSc6IHUnU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMCcK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIHUnbmFtZSc6IHUnU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2Uv
MScsCisgICAgICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAw
LAorICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6IDAs
CisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBb
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0hhc1R5
cGVQYXJhbUF0dHJpYnV0ZScsCisgICAgICAgICAgICAgICAgICAgIHUndHlwZV9wYXJhbSc6IHUn
bG9uZycsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAg
ICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFt
ZSc6IHUnU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMScKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUn
bmFtZSc6IHUnU2luZ2xlL1ZhbHVlUGFyYW1UZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiA0
LAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzog
MCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKics
CisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHUnbmFtZSc6IHUnSGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8wJywKKyAgICAg
ICAgICAgICAgICAgICAgdSd2YWx1ZV9wYXJhbSc6IHUnMzMnLAorICAgICAgICAgICAgICAgICAg
ICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywK
KyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1NpbmdsZS9WYWx1ZVBhcmFtVGVz
dCcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgdSduYW1lJzogdSdIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzEnLAorICAgICAgICAgICAg
ICAgICAgICB1J3ZhbHVlX3BhcmFtJzogdSc0MicsCisgICAgICAgICAgICAgICAgICAgIHUnc3Rh
dHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAg
ICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnU2luZ2xlL1ZhbHVlUGFyYW1UZXN0JworICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1
J25hbWUnOiB1J0Fub3RoZXJUZXN0VGhhdEhhc1ZhbHVlUGFyYW1BdHRyaWJ1dGUvMCcsCisgICAg
ICAgICAgICAgICAgICAgIHUndmFsdWVfcGFyYW0nOiB1JzMzJywKKyAgICAgICAgICAgICAgICAg
ICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKics
CisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdTaW5nbGUvVmFsdWVQYXJhbVRl
c3QnCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHUnbmFtZSc6IHUnQW5vdGhlclRlc3RUaGF0SGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8x
JywKKyAgICAgICAgICAgICAgICAgICAgdSd2YWx1ZV9wYXJhbSc6IHUnNDInLAorICAgICAgICAg
ICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1l
JzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1NpbmdsZS9WYWx1
ZVBhcmFtVGVzdCcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0K
KyAgICBdCit9CisKK0VYUEVDVEVEX0ZJTFRFUkVEID0geworICAgIHUndGVzdHMnOiAxLAorICAg
IHUnZmFpbHVyZXMnOiAwLAorICAgIHUnZGlzYWJsZWQnOiAwLAorICAgIHUnZXJyb3JzJzogMCwK
KyAgICB1J3RpbWUnOiB1JyonLAorICAgIHUndGltZXN0YW1wJzogdScqJywKKyAgICB1J25hbWUn
OiB1J0FsbFRlc3RzJywKKyAgICB1J2FkX2hvY19wcm9wZXJ0eSc6IHUnNDInLAorICAgIHUndGVz
dHN1aXRlcyc6IFt7CisgICAgICAgIHUnbmFtZSc6IHUnU3VjY2Vzc2Z1bFRlc3QnLAorICAgICAg
ICB1J3Rlc3RzJzogMSwKKyAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgIHUnZGlzYWJs
ZWQnOiAwLAorICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgIHUndGltZSc6IHUnKicsCisg
ICAgICAgIHUndGVzdHN1aXRlJzogW3sKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnU3VjY2VlZHMn
LAorICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICB1J3RpbWUnOiB1
JyonLAorICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1N1Y2Nlc3NmdWxUZXN0JywKKyAgICAg
ICAgfV0KKyAgICB9XSwKK30KKworRVhQRUNURURfRU1QVFkgPSB7CisgICAgdSd0ZXN0cyc6IDAs
CisgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgdSdlcnJvcnMn
OiAwLAorICAgIHUndGltZSc6IHUnKicsCisgICAgdSd0aW1lc3RhbXAnOiB1JyonLAorICAgIHUn
bmFtZSc6IHUnQWxsVGVzdHMnLAorICAgIHUndGVzdHN1aXRlcyc6IFtdLAorfQorCitHVEVTVF9Q
Uk9HUkFNX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aChHVEVT
VF9QUk9HUkFNX05BTUUpCisKK1NVUFBPUlRTX1RZUEVEX1RFU1RTID0gJ1R5cGVkVGVzdCcgaW4g
Z3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAorICAgIFtHVEVTVF9QUk9HUkFNX1BBVEgsIEdU
RVNUX0xJU1RfVEVTVFNfRkxBR10sIGNhcHR1cmVfc3RkZXJyPUZhbHNlKS5vdXRwdXQKKworCitj
bGFzcyBHVGVzdEpzb25PdXRwdXRVbml0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToK
KyAgIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIEpTT04gb3V0cHV0IGZ1bmN0aW9uYWxp
dHkuCisgICIiIgorCisgICMgVGhpcyB0ZXN0IGN1cnJlbnRseSBicmVha3Mgb24gcGxhdGZvcm1z
IHRoYXQgZG8gbm90IHN1cHBvcnQgdHlwZWQgYW5kCisgICMgdHlwZS1wYXJhbWV0ZXJpemVkIHRl
c3RzLCBzbyB3ZSBkb24ndCBydW4gaXQgdW5kZXIgdGhlbS4KKyAgaWYgU1VQUE9SVFNfVFlQRURf
VEVTVFM6CisKKyAgICBkZWYgdGVzdE5vbkVtcHR5SnNvbk91dHB1dChzZWxmKToKKyAgICAgICIi
IlZlcmlmaWVzIEpTT04gb3V0cHV0IGZvciBhIEdvb2dsZSBUZXN0IGJpbmFyeSB3aXRoIG5vbi1l
bXB0eSBvdXRwdXQuCisKKyAgICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMg
YSBub24tZW1wdHkgSlNPTiBvdXRwdXQsIGFuZAorICAgICAgdGVzdHMgdGhhdCB0aGUgSlNPTiBv
dXRwdXQgaXMgZXhwZWN0ZWQuCisgICAgICAiIiIKKyAgICAgIHNlbGYuX1Rlc3RKc29uT3V0cHV0
KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQRUNURURfTk9OX0VNUFRZLCAxKQorCisgIGRlZiB0ZXN0
RW1wdHlKc29uT3V0cHV0KHNlbGYpOgorICAgICIiIlZlcmlmaWVzIEpTT04gb3V0cHV0IGZvciBh
IEdvb2dsZSBUZXN0IGJpbmFyeSB3aXRob3V0IGFjdHVhbCB0ZXN0cy4KKworICAgIFJ1bnMgYSB0
ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkgSlNPTiBvdXRwdXQsIGFuZAorICAg
IHRlc3RzIHRoYXQgdGhlIEpTT04gb3V0cHV0IGlzIGV4cGVjdGVkLgorICAgICIiIgorCisgICAg
c2VsZi5fVGVzdEpzb25PdXRwdXQoJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnLCBFWFBFQ1RFRF9F
TVBUWSwgMCkKKworICBkZWYgdGVzdFRpbWVzdGFtcFZhbHVlKHNlbGYpOgorICAgICIiIkNoZWNr
cyB3aGV0aGVyIHRoZSB0aW1lc3RhbXAgYXR0cmlidXRlIGluIHRoZSBKU09OIG91dHB1dCBpcyB2
YWxpZC4KKworICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkg
SlNPTiBvdXRwdXQsIGFuZCBjaGVja3MgaWYKKyAgICB0aGUgdGltZXN0YW1wIGF0dHJpYnV0ZSBp
biB0aGUgdGVzdHN1aXRlcyB0YWcgaXMgdmFsaWQuCisgICAgIiIiCisgICAgYWN0dWFsID0gc2Vs
Zi5fR2V0SnNvbk91dHB1dCgnZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCcsIFtdLCAwKQorICAgIGRh
dGVfdGltZV9zdHIgPSBhY3R1YWxbJ3RpbWVzdGFtcCddCisgICAgIyBkYXRldGltZS5zdHJwdGlt
ZSgpIGlzIG9ubHkgYXZhaWxhYmxlIGluIFB5dGhvbiAyLjUrIHNvIHdlIGhhdmUgdG8KKyAgICAj
IHBhcnNlIHRoZSBleHBlY3RlZCBkYXRldGltZSBtYW51YWxseS4KKyAgICBtYXRjaCA9IHJlLm1h
dGNoKHInKFxkKyktKFxkXGQpLShcZFxkKVQoXGRcZCk6KFxkXGQpOihcZFxkKScsIGRhdGVfdGlt
ZV9zdHIpCisgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICByZS5tYXRjaCwKKyAgICAgICAg
J0pTT04gZGF0ZXR0aW1lIHN0cmluZyAlcyBoYXMgaW5jb3JyZWN0IGZvcm1hdCcgJSBkYXRlX3Rp
bWVfc3RyKQorICAgIGRhdGVfdGltZV9mcm9tX2pzb24gPSBkYXRldGltZS5kYXRldGltZSgKKyAg
ICAgICAgeWVhcj1pbnQobWF0Y2guZ3JvdXAoMSkpLCBtb250aD1pbnQobWF0Y2guZ3JvdXAoMikp
LAorICAgICAgICBkYXk9aW50KG1hdGNoLmdyb3VwKDMpKSwgaG91cj1pbnQobWF0Y2guZ3JvdXAo
NCkpLAorICAgICAgICBtaW51dGU9aW50KG1hdGNoLmdyb3VwKDUpKSwgc2Vjb25kPWludChtYXRj
aC5ncm91cCg2KSkpCisKKyAgICB0aW1lX2RlbHRhID0gYWJzKGRhdGV0aW1lLmRhdGV0aW1lLm5v
dygpIC0gZGF0ZV90aW1lX2Zyb21fanNvbikKKyAgICAjIHRpbWVzdGFtcCB2YWx1ZSBzaG91bGQg
YmUgbmVhciB0aGUgY3VycmVudCBsb2NhbCB0aW1lCisgICAgc2VsZi5hc3NlcnRUcnVlKHRpbWVf
ZGVsdGEgPCBkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz02MDApLAorICAgICAgICAgICAgICAg
ICAgICAndGltZV9kZWx0YSBpcyAlcycgJSB0aW1lX2RlbHRhKQorCisgIGRlZiB0ZXN0RGVmYXVs
dE91dHB1dEZpbGUoc2VsZik6CisgICAgIiIiVmVyaWZpZXMgdGhlIGRlZmF1bHQgb3V0cHV0IGZp
bGUgbmFtZS4KKworICAgIENvbmZpcm1zIHRoYXQgR29vZ2xlIFRlc3QgcHJvZHVjZXMgYW4gSlNP
TiBvdXRwdXQgZmlsZSB3aXRoIHRoZSBleHBlY3RlZAorICAgIGRlZmF1bHQgbmFtZSBpZiBubyBu
YW1lIGlzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLgorICAgICIiIgorICAgIG91dHB1dF9maWxlID0g
b3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdURVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUpCisgICAgZ3Rlc3Rf
cHJvZ19wYXRoID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisgICAg
ICAgICdndGVzdF9ub190ZXN0X3VuaXR0ZXN0JykKKyAgICB0cnk6CisgICAgICBvcy5yZW1vdmUo
b3V0cHV0X2ZpbGUpCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICBlID0gc3lzLmV4Y19pbmZv
KClbMV0KKyAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgorICAgICAgICByYWlzZQor
CisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKKyAgICAgICAgW2d0ZXN0X3By
b2dfcGF0aCwgJyVzPWpzb24nICUgR1RFU1RfT1VUUFVUX0ZMQUddLAorICAgICAgICB3b3JraW5n
X2Rpcj1ndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSkKKyAgICBzZWxmLmFzc2VydF8ocC5l
eGl0ZWQpCisgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwgcC5leGl0X2NvZGUpCisgICAgc2VsZi5h
c3NlcnRfKG9zLnBhdGguaXNmaWxlKG91dHB1dF9maWxlKSkKKworICBkZWYgdGVzdFN1cHByZXNz
ZWRKc29uT3V0cHV0KHNlbGYpOgorICAgICIiIlZlcmlmaWVzIHRoYXQgbm8gSlNPTiBvdXRwdXQg
aXMgZ2VuZXJhdGVkLgorCisgICAgVGVzdHMgdGhhdCBubyBKU09OIGZpbGUgaXMgZ2VuZXJhdGVk
IGlmIHRoZSBkZWZhdWx0IEpTT04gbGlzdGVuZXIgaXMKKyAgICBzaHV0IGRvd24gYmVmb3JlIFJV
Tl9BTExfVEVTVFMgaXMgaW52b2tlZC4KKyAgICAiIiIKKworICAgIGpzb25fcGF0aCA9IG9zLnBh
dGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR1RFU1RfUFJPR1JBTV9OQU1FICsgJ291dC5qc29uJykKKyAgICBpZiBvcy5w
YXRoLmlzZmlsZShqc29uX3BhdGgpOgorICAgICAgb3MucmVtb3ZlKGpzb25fcGF0aCkKKworICAg
IGNvbW1hbmQgPSBbR1RFU1RfUFJPR1JBTV9QQVRILAorICAgICAgICAgICAgICAgJyVzPWpzb246
JXMnICUgKEdURVNUX09VVFBVVF9GTEFHLCBqc29uX3BhdGgpLAorICAgICAgICAgICAgICAgJy0t
c2h1dF9kb3duX3htbCddCisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21t
YW5kKQorICAgIGlmIHAudGVybWluYXRlZF9ieV9zaWduYWw6CisgICAgICAjIHAuc2lnbmFsIGlz
IGF2YWlsYWJsZSBvbmx5IGlmIHAudGVybWluYXRlZF9ieV9zaWduYWwgaXMgVHJ1ZS4KKyAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoCisgICAgICAgICAgcC50ZXJtaW5hdGVkX2J5X3NpZ25hbCwKKyAg
ICAgICAgICAnJXMgd2FzIGtpbGxlZCBieSBzaWduYWwgJWQnICUgKEdURVNUX1BST0dSQU1fTkFN
RSwgcC5zaWduYWwpKQorICAgIGVsc2U6CisgICAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCisg
ICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBwLmV4aXRfY29kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICInJXMnIGV4aXRlZCB3aXRoIGNvZGUgJXMsIHdoaWNoIGRvZXNuJ3QgbWF0Y2ggIgor
ICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBleHBlY3RlZCBleGl0IGNvZGUgJXMuJworICAg
ICAgICAgICAgICAgICAgICAgICAgJSAoY29tbWFuZCwgcC5leGl0X2NvZGUsIDEpKQorCisgICAg
c2VsZi5hc3NlcnRfKG5vdCBvcy5wYXRoLmlzZmlsZShqc29uX3BhdGgpKQorCisgIGRlZiB0ZXN0
RmlsdGVyZWRUZXN0SnNvbk91dHB1dChzZWxmKToKKyAgICAiIiJWZXJpZmllcyBKU09OIG91dHB1
dCB3aGVuIGEgZmlsdGVyIGlzIGFwcGxpZWQuCisKKyAgICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRo
YXQgZXhlY3V0ZXMgb25seSBzb21lIHRlc3RzIGFuZCB2ZXJpZmllcyB0aGF0CisgICAgbm9uLXNl
bGVjdGVkIHRlc3RzIGRvIG5vdCBzaG93IHVwIGluIHRoZSBKU09OIG91dHB1dC4KKyAgICAiIiIK
KworICAgIHNlbGYuX1Rlc3RKc29uT3V0cHV0KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQRUNURURf
RklMVEVSRUQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfYXJncz1bJyVzPVN1
Y2Nlc3NmdWxUZXN0LionICUgR1RFU1RfRklMVEVSX0ZMQUddKQorCisgIGRlZiBfR2V0SnNvbk91
dHB1dChzZWxmLCBndGVzdF9wcm9nX25hbWUsIGV4dHJhX2FyZ3MsIGV4cGVjdGVkX2V4aXRfY29k
ZSk6CisgICAgIiIiUmV0dXJucyB0aGUgSlNPTiBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcg
dGhlIHByb2dyYW0gZ3Rlc3RfcHJvZ19uYW1lLgorCisgICAgRnVydGhlcm1vcmUsIHRoZSBwcm9n
cmFtJ3MgZXhpdCBjb2RlIG11c3QgYmUgZXhwZWN0ZWRfZXhpdF9jb2RlLgorCisgICAgQXJnczoK
KyAgICAgIGd0ZXN0X3Byb2dfbmFtZTogR29vZ2xlIFRlc3QgYmluYXJ5IG5hbWUuCisgICAgICBl
eHRyYV9hcmdzOiBleHRyYSBhcmd1bWVudHMgdG8gYmluYXJ5IGludm9jYXRpb24uCisgICAgICBl
eHBlY3RlZF9leGl0X2NvZGU6IHByb2dyYW0ncyBleGl0IGNvZGUuCisgICAgIiIiCisgICAganNv
bl9wYXRoID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBndGVzdF9wcm9nX25hbWUgKyAnb3V0Lmpzb24nKQor
ICAgIGd0ZXN0X3Byb2dfcGF0aCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQ
YXRoKGd0ZXN0X3Byb2dfbmFtZSkKKworICAgIGNvbW1hbmQgPSAoCisgICAgICAgIFtndGVzdF9w
cm9nX3BhdGgsICclcz1qc29uOiVzJyAlIChHVEVTVF9PVVRQVVRfRkxBRywganNvbl9wYXRoKV0g
KworICAgICAgICBleHRyYV9hcmdzCisgICAgKQorICAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1
YnByb2Nlc3MoY29tbWFuZCkKKyAgICBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsOgorICAgICAg
c2VsZi5hc3NlcnRfKEZhbHNlLAorICAgICAgICAgICAgICAgICAgICclcyB3YXMga2lsbGVkIGJ5
IHNpZ25hbCAlZCcgJSAoZ3Rlc3RfcHJvZ19uYW1lLCBwLnNpZ25hbCkpCisgICAgZWxzZToKKyAg
ICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVj
dGVkX2V4aXRfY29kZSwgcC5leGl0X2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAiJyVz
JyBleGl0ZWQgd2l0aCBjb2RlICVzLCB3aGljaCBkb2Vzbid0IG1hdGNoICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICd0aGUgZXhwZWN0ZWQgZXhpdCBjb2RlICVzLicKKyAgICAgICAgICAgICAg
ICAgICAgICAgICUgKGNvbW1hbmQsIHAuZXhpdF9jb2RlLCBleHBlY3RlZF9leGl0X2NvZGUpKQor
ICAgIHdpdGggb3Blbihqc29uX3BhdGgpIGFzIGY6CisgICAgICBhY3R1YWwgPSBqc29uLmxvYWQo
ZikKKyAgICByZXR1cm4gYWN0dWFsCisKKyAgZGVmIF9UZXN0SnNvbk91dHB1dChzZWxmLCBndGVz
dF9wcm9nX25hbWUsIGV4cGVjdGVkLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V4
aXRfY29kZSwgZXh0cmFfYXJncz1Ob25lKToKKyAgICAiIiJDaGVja3MgdGhlIEpTT04gb3V0cHV0
IGdlbmVyYXRlZCBieSB0aGUgR29vZ2xlIFRlc3QgYmluYXJ5LgorCisgICAgQXNzZXJ0cyB0aGF0
IHRoZSBKU09OIGRvY3VtZW50IGdlbmVyYXRlZCBieSBydW5uaW5nIHRoZSBwcm9ncmFtCisgICAg
Z3Rlc3RfcHJvZ19uYW1lIG1hdGNoZXMgZXhwZWN0ZWRfanNvbiwgYSBzdHJpbmcgY29udGFpbmlu
ZyBhbm90aGVyCisgICAgSlNPTiBkb2N1bWVudC4gIEZ1cnRoZXJtb3JlLCB0aGUgcHJvZ3JhbSdz
IGV4aXQgY29kZSBtdXN0IGJlCisgICAgZXhwZWN0ZWRfZXhpdF9jb2RlLgorCisgICAgQXJnczoK
KyAgICAgIGd0ZXN0X3Byb2dfbmFtZTogR29vZ2xlIFRlc3QgYmluYXJ5IG5hbWUuCisgICAgICBl
eHBlY3RlZDogZXhwZWN0ZWQgb3V0cHV0LgorICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlOiBwcm9n
cmFtJ3MgZXhpdCBjb2RlLgorICAgICAgZXh0cmFfYXJnczogZXh0cmEgYXJndW1lbnRzIHRvIGJp
bmFyeSBpbnZvY2F0aW9uLgorICAgICIiIgorCisgICAgYWN0dWFsID0gc2VsZi5fR2V0SnNvbk91
dHB1dChndGVzdF9wcm9nX25hbWUsIGV4dHJhX2FyZ3Mgb3IgW10sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGUpCisgICAgc2VsZi5hc3NlcnRFcXVh
bChleHBlY3RlZCwgZ3Rlc3RfanNvbl90ZXN0X3V0aWxzLm5vcm1hbGl6ZShhY3R1YWwpKQorCisK
K2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGlmIE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9G
TEFHIGluIHN5cy5hcmd2OgorICAgICMgdW5pdHRlc3QubWFpbigpIGNhbid0IGhhbmRsZSB1bmtu
b3duIGZsYWdzCisgICAgc3lzLmFyZ3YucmVtb3ZlKE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFH
KQorCisgIG9zLmVudmlyb25bJ0dURVNUX1NUQUNLX1RSQUNFX0RFUFRIJ10gPSAnMScKKyAgZ3Rl
c3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1saW5rZWQtcHRyLXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlua2VkLXB0ci10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMDBm
MzQyOTZiZDU3OTRjMTY0NDc5ZjIyYTg4ZGQ0ZjczNjAwMWQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlua2VkLXB0ci10ZXN0LmNj
CkBAIC0wLDAgKzEsMTUxIEBACisvLyBDb3B5cmlnaHQgMjAwMywgR29vZ2xlIEluYy4KKy8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisv
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2luY2x1ZGUgImd0ZXN0L2ludGVybmFs
L2d0ZXN0LWxpbmtlZF9wdHIuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3Bh
Y2UgeworCit1c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OmxpbmtlZF9wdHI7CisKK2ludCBudW07CitNZXNzYWdlKiBoaXN0b3J5ID0gTlVMTDsKKworLy8g
Q2xhc3Mgd2hpY2ggdHJhY2tzIGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uCitjbGFzcyBBIHsKKyBw
dWJsaWM6CisgIEEoKTogbXludW0obnVtKyspIHsgKmhpc3RvcnkgPDwgIkEiIDw8IG15bnVtIDw8
ICIgY3RvclxuIjsgfQorICB2aXJ0dWFsIH5BKCkgeyAqaGlzdG9yeSA8PCAiQSIgPDwgbXludW0g
PDwgIiBkdG9yXG4iOyB9CisgIHZpcnR1YWwgdm9pZCBVc2UoKSB7ICpoaXN0b3J5IDw8ICJBIiA8
PCBteW51bSA8PCAiIHVzZVxuIjsgfQorIHByb3RlY3RlZDoKKyAgaW50IG15bnVtOworfTsKKwor
Ly8gU3ViY2xhc3MKK2NsYXNzIEIgOiBwdWJsaWMgQSB7CisgcHVibGljOgorICBCKCkgeyAqaGlz
dG9yeSA8PCAiQiIgPDwgbXludW0gPDwgIiBjdG9yXG4iOyB9CisgIH5CKCkgeyAqaGlzdG9yeSA8
PCAiQiIgPDwgbXludW0gPDwgIiBkdG9yXG4iOyB9CisgIHZpcnR1YWwgdm9pZCBVc2UoKSB7ICpo
aXN0b3J5IDw8ICJCIiA8PCBteW51bSA8PCAiIHVzZVxuIjsgfQorfTsKKworY2xhc3MgTGlua2Vk
UHRyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwdWJsaWM6CisgIExpbmtlZFB0clRl
c3QoKSB7CisgICAgbnVtID0gMDsKKyAgICBoaXN0b3J5ID0gbmV3IE1lc3NhZ2U7CisgIH0KKwor
ICB2aXJ0dWFsIH5MaW5rZWRQdHJUZXN0KCkgeworICAgIGRlbGV0ZSBoaXN0b3J5OworICAgIGhp
c3RvcnkgPSBOVUxMOworICB9Cit9OworCitURVNUX0YoTGlua2VkUHRyVGVzdCwgR2VuZXJhbFRl
c3QpIHsKKyAgeworICAgIGxpbmtlZF9wdHI8QT4gYTAsIGExLCBhMjsKKyAgICAvLyBVc2UgZXhw
bGljaXQgZnVuY3Rpb24gY2FsbCBub3RhdGlvbiBoZXJlIHRvIHN1cHByZXNzIHNlbGYtYXNzaWdu
IHdhcm5pbmcuCisgICAgYTAub3BlcmF0b3I9KGEwKTsKKyAgICBhMSA9IGEyOworICAgIEFTU0VS
VF9FUShhMC5nZXQoKSwgc3RhdGljX2Nhc3Q8QSo+KE5VTEwpKTsKKyAgICBBU1NFUlRfRVEoYTEu
Z2V0KCksIHN0YXRpY19jYXN0PEEqPihOVUxMKSk7CisgICAgQVNTRVJUX0VRKGEyLmdldCgpLCBz
dGF0aWNfY2FzdDxBKj4oTlVMTCkpOworICAgIEFTU0VSVF9UUlVFKGEwID09IE5VTEwpOworICAg
IEFTU0VSVF9UUlVFKGExID09IE5VTEwpOworICAgIEFTU0VSVF9UUlVFKGEyID09IE5VTEwpOwor
CisgICAgeworICAgICAgbGlua2VkX3B0cjxBPiBhMyhuZXcgQSk7CisgICAgICBhMCA9IGEzOwor
ICAgICAgQVNTRVJUX1RSVUUoYTAgPT0gYTMpOworICAgICAgQVNTRVJUX1RSVUUoYTAgIT0gTlVM
TCk7CisgICAgICBBU1NFUlRfVFJVRShhMC5nZXQoKSA9PSBhMyk7CisgICAgICBBU1NFUlRfVFJV
RShhMCA9PSBhMy5nZXQoKSk7CisgICAgICBsaW5rZWRfcHRyPEE+IGE0KGEwKTsKKyAgICAgIGEx
ID0gYTQ7CisgICAgICBsaW5rZWRfcHRyPEE+IGE1KG5ldyBBKTsKKyAgICAgIEFTU0VSVF9UUlVF
KGE1LmdldCgpICE9IGEzKTsKKyAgICAgIEFTU0VSVF9UUlVFKGE1ICE9IGEzLmdldCgpKTsKKyAg
ICAgIGEyID0gYTU7CisgICAgICBsaW5rZWRfcHRyPEI+IGIwKG5ldyBCKTsKKyAgICAgIGxpbmtl
ZF9wdHI8QT4gYTYoYjApOworICAgICAgQVNTRVJUX1RSVUUoYjAgPT0gYTYpOworICAgICAgQVNT
RVJUX1RSVUUoYTYgPT0gYjApOworICAgICAgQVNTRVJUX1RSVUUoYjAgIT0gTlVMTCk7CisgICAg
ICBhNSA9IGIwOworICAgICAgYTUgPSBiMDsKKyAgICAgIGEzLT5Vc2UoKTsKKyAgICAgIGE0LT5V
c2UoKTsKKyAgICAgIGE1LT5Vc2UoKTsKKyAgICAgIGE2LT5Vc2UoKTsKKyAgICAgIGIwLT5Vc2Uo
KTsKKyAgICAgICgqYjApLlVzZSgpOworICAgICAgYjAuZ2V0KCktPlVzZSgpOworICAgIH0KKwor
ICAgIGEwLT5Vc2UoKTsKKyAgICBhMS0+VXNlKCk7CisgICAgYTItPlVzZSgpOworCisgICAgYTEg
PSBhMjsKKyAgICBhMi5yZXNldChuZXcgQSk7CisgICAgYTAucmVzZXQoKTsKKworICAgIGxpbmtl
ZF9wdHI8QT4gYTc7CisgIH0KKworICBBU1NFUlRfU1RSRVEoCisgICAgIkEwIGN0b3JcbiIKKyAg
ICAiQTEgY3RvclxuIgorICAgICJBMiBjdG9yXG4iCisgICAgIkIyIGN0b3JcbiIKKyAgICAiQTAg
dXNlXG4iCisgICAgIkEwIHVzZVxuIgorICAgICJCMiB1c2VcbiIKKyAgICAiQjIgdXNlXG4iCisg
ICAgIkIyIHVzZVxuIgorICAgICJCMiB1c2VcbiIKKyAgICAiQjIgdXNlXG4iCisgICAgIkIyIGR0
b3JcbiIKKyAgICAiQTIgZHRvclxuIgorICAgICJBMCB1c2VcbiIKKyAgICAiQTAgdXNlXG4iCisg
ICAgIkExIHVzZVxuIgorICAgICJBMyBjdG9yXG4iCisgICAgIkEwIGR0b3JcbiIKKyAgICAiQTMg
ZHRvclxuIgorICAgICJBMSBkdG9yXG4iLAorICAgIGhpc3RvcnktPkdldFN0cmluZygpLmNfc3Ry
KCkpOworfQorCit9ICAvLyBVbm5hbWVkIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3QucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVz
dC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44MTQyM2EzMzllOGZkMjhhYTJiNDI1MzAxM2IzYzIzY2UzNTMzNzQ5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3QucHkKQEAgLTAsMCArMSwyMDUgQEAKKyMhL3Vzci9iaW4v
ZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIwor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisj
IGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisj
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVzdCBmb3IgR29vZ2xl
IFRlc3QncyAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4KKworQSB1c2VyIGNhbiBhc2sgR29vZ2xl
IFRlc3QgdG8gbGlzdCBhbGwgdGVzdHMgYnkgc3BlY2lmeWluZyB0aGUKKy0tZ3Rlc3RfbGlzdF90
ZXN0cyBmbGFnLiAgVGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5CitieSBpbnZv
a2luZyBnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfIChhIHByb2dyYW0gd3JpdHRlbiB3
aXRoCitHb29nbGUgVGVzdCkgdGhlIGNvbW1hbmQgbGluZSBmbGFncy4KKyIiIgorCitpbXBvcnQg
cmUKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKKyMgQ29uc3RhbnRzLgorCisjIFRoZSBjb21t
YW5kIGxpbmUgZmxhZyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIGxpc3RpbmcgYWxsIHRlc3RzLgor
TElTVF9URVNUU19GTEFHID0gJ2d0ZXN0X2xpc3RfdGVzdHMnCisKKyMgUGF0aCB0byB0aGUgZ29v
Z2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0XyBwcm9ncmFtLgorRVhFX1BBVEggPSBndGVzdF90
ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVu
aXR0ZXN0XycpCisKKyMgVGhlIGV4cGVjdGVkIG91dHB1dCB3aGVuIHJ1bm5pbmcgZ29vZ2xldGVz
dC1saXN0LXRlc3RzLXVuaXR0ZXN0XyB3aXRoCisjIC0tZ3Rlc3RfbGlzdF90ZXN0cworRVhQRUNU
RURfT1VUUFVUX05PX0ZJTFRFUl9SRSA9IHJlLmNvbXBpbGUociIiIkZvb0RlYXRoVGVzdFwuCisg
IFRlc3QxCitGb29cLgorICBCYXIxCisgIEJhcjIKKyAgRElTQUJMRURfQmFyMworQWJjXC4KKyAg
WHl6CisgIERlZgorRm9vQmFyXC4KKyAgQmF6CitGb29UZXN0XC4KKyAgVGVzdDEKKyAgRElTQUJM
RURfVGVzdDIKKyAgVGVzdDMKK1R5cGVkVGVzdC8wXC4gICMgVHlwZVBhcmFtID0gKFZlcnlMb3sy
NDV9fGNsYXNzIFZlcnlMb3syMzl9KVwuXC5cLgorICBUZXN0QQorICBUZXN0QgorVHlwZWRUZXN0
LzFcLiAgIyBUeXBlUGFyYW0gPSBpbnRccypcKiggX19wdHI2NCk/CisgIFRlc3RBCisgIFRlc3RC
CitUeXBlZFRlc3QvMlwuICAjIFR5cGVQYXJhbSA9IC4qTXlBcnJheTxib29sLFxzKjQyPgorICBU
ZXN0QQorICBUZXN0QgorTXkvVHlwZVBhcmFtVGVzdC8wXC4gICMgVHlwZVBhcmFtID0gKFZlcnlM
b3syNDV9fGNsYXNzIFZlcnlMb3syMzl9KVwuXC5cLgorICBUZXN0QQorICBUZXN0QgorTXkvVHlw
ZVBhcmFtVGVzdC8xXC4gICMgVHlwZVBhcmFtID0gaW50XHMqXCooIF9fcHRyNjQpPworICBUZXN0
QQorICBUZXN0QgorTXkvVHlwZVBhcmFtVGVzdC8yXC4gICMgVHlwZVBhcmFtID0gLipNeUFycmF5
PGJvb2wsXHMqNDI+CisgIFRlc3RBCisgIFRlc3RCCitNeUluc3RhbnRpYXRpb24vVmFsdWVQYXJh
bVRlc3RcLgorICBUZXN0QS8wICAjIEdldFBhcmFtXChcKSA9IG9uZSBsaW5lCisgIFRlc3RBLzEg
ICMgR2V0UGFyYW1cKFwpID0gdHdvXFxubGluZXMKKyAgVGVzdEEvMiAgIyBHZXRQYXJhbVwoXCkg
PSBhIHZlcnlcXG5sb3syNDF9XC5cLlwuCisgIFRlc3RCLzAgICMgR2V0UGFyYW1cKFwpID0gb25l
IGxpbmUKKyAgVGVzdEIvMSAgIyBHZXRQYXJhbVwoXCkgPSB0d29cXG5saW5lcworICBUZXN0Qi8y
ICAjIEdldFBhcmFtXChcKSA9IGEgdmVyeVxcbmxvezI0MX1cLlwuXC4KKyIiIikKKworIyBUaGUg
ZXhwZWN0ZWQgb3V0cHV0IHdoZW4gcnVubmluZyBnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRl
c3RfIHdpdGgKKyMgLS1ndGVzdF9saXN0X3Rlc3RzIGFuZCAtLWd0ZXN0X2ZpbHRlcj1Gb28qLgor
RVhQRUNURURfT1VUUFVUX0ZJTFRFUl9GT09fUkUgPSByZS5jb21waWxlKHIiIiJGb29EZWF0aFRl
c3RcLgorICBUZXN0MQorRm9vXC4KKyAgQmFyMQorICBCYXIyCisgIERJU0FCTEVEX0JhcjMKK0Zv
b0JhclwuCisgIEJhegorRm9vVGVzdFwuCisgIFRlc3QxCisgIERJU0FCTEVEX1Rlc3QyCisgIFRl
c3QzCisiIiIpCisKKyMgVXRpbGl0aWVzLgorCisKK2RlZiBSdW4oYXJncyk6CisgICIiIlJ1bnMg
Z29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0XyBhbmQgcmV0dXJucyB0aGUgbGlzdCBvZiB0
ZXN0cyBwcmludGVkLiIiIgorCisgIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3Mo
W0VYRV9QQVRIXSArIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2FwdHVyZV9zdGRlcnI9RmFsc2UpLm91dHB1dAorCisKKyMgVGhlIHVuaXQgdGVzdC4KKworCitj
bGFzcyBHVGVzdExpc3RUZXN0c1VuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgor
ICAiIiJUZXN0cyB1c2luZyB0aGUgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcgdG8gbGlzdCBhbGwg
dGVzdHMuIiIiCisKKyAgZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBmbGFnX3ZhbHVlLCBleHBlY3Rl
ZF9vdXRwdXRfcmUsIG90aGVyX2ZsYWcpOgorICAgICIiIlJ1bnMgZ29vZ2xldGVzdC1saXN0LXRl
c3RzLXVuaXR0ZXN0XyBhbmQgdmVyaWZpZXMgdGhhdCBpdCBwcmludHMKKyAgICB0aGUgY29ycmVj
dCB0ZXN0cy4KKworICAgIEFyZ3M6CisgICAgICBmbGFnX3ZhbHVlOiAgICAgICAgIHZhbHVlIG9m
IHRoZSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
Tm9uZSBpZiB0aGUgZmxhZyBzaG91bGQgbm90IGJlIHByZXNlbnQuCisgICAgICBleHBlY3RlZF9v
dXRwdXRfcmU6IHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG1hdGNoZXMgdGhlIGV4cGVjdGVkCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCBhZnRlciBydW5uaW5nIGNvbW1hbmQ7Cisg
ICAgICBvdGhlcl9mbGFnOiAgICAgICAgIGEgZGlmZmVyZW50IGZsYWcgdG8gYmUgcGFzc2VkIHRv
IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWxvbmcgd2l0aCBndGVzdF9saXN0
X3Rlc3RzOworICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3Vs
ZCBub3QgYmUgcHJlc2VudC4KKyAgICAiIiIKKworICAgIGlmIGZsYWdfdmFsdWUgaXMgTm9uZToK
KyAgICAgIGZsYWcgPSAnJworICAgICAgZmxhZ19leHByZXNzaW9uID0gJ25vdCBzZXQnCisgICAg
ZWxpZiBmbGFnX3ZhbHVlID09ICcwJzoKKyAgICAgIGZsYWcgPSAnLS0lcz0wJyAlIExJU1RfVEVT
VFNfRkxBRworICAgICAgZmxhZ19leHByZXNzaW9uID0gJzAnCisgICAgZWxzZToKKyAgICAgIGZs
YWcgPSAnLS0lcycgJSBMSVNUX1RFU1RTX0ZMQUcKKyAgICAgIGZsYWdfZXhwcmVzc2lvbiA9ICcx
JworCisgICAgYXJncyA9IFtmbGFnXQorCisgICAgaWYgb3RoZXJfZmxhZyBpcyBub3QgTm9uZToK
KyAgICAgIGFyZ3MgKz0gW290aGVyX2ZsYWddCisKKyAgICBvdXRwdXQgPSBSdW4oYXJncykKKwor
ICAgIGlmIGV4cGVjdGVkX291dHB1dF9yZToKKyAgICAgIHNlbGYuYXNzZXJ0XygKKyAgICAgICAg
ICBleHBlY3RlZF9vdXRwdXRfcmUubWF0Y2gob3V0cHV0KSwKKyAgICAgICAgICAoJ3doZW4gJXMg
aXMgJXMsIHRoZSBvdXRwdXQgb2YgIiVzIiBpcyAiJXMiLFxuJworICAgICAgICAgICAnd2hpY2gg
ZG9lcyBub3QgbWF0Y2ggcmVnZXggIiVzIicgJQorICAgICAgICAgICAoTElTVF9URVNUU19GTEFH
LCBmbGFnX2V4cHJlc3Npb24sICcgJy5qb2luKGFyZ3MpLCBvdXRwdXQsCisgICAgICAgICAgICBl
eHBlY3RlZF9vdXRwdXRfcmUucGF0dGVybikpKQorICAgIGVsc2U6CisgICAgICBzZWxmLmFzc2Vy
dF8oCisgICAgICAgICAgbm90IEVYUEVDVEVEX09VVFBVVF9OT19GSUxURVJfUkUubWF0Y2gob3V0
cHV0KSwKKyAgICAgICAgICAoJ3doZW4gJXMgaXMgJXMsIHRoZSBvdXRwdXQgb2YgIiVzIiBpcyAi
JXMiJyUKKyAgICAgICAgICAgKExJU1RfVEVTVFNfRkxBRywgZmxhZ19leHByZXNzaW9uLCAnICcu
am9pbihhcmdzKSwgb3V0cHV0KSkpCisKKyAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3Ioc2VsZik6
CisgICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0IG1vZGUuIiIiCisKKyAg
ICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfb3V0cHV0X3JlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgb3RoZXJf
ZmxhZz1Ob25lKQorCisgIGRlZiB0ZXN0RmxhZyhzZWxmKToKKyAgICAiIiJUZXN0cyB1c2luZyB0
aGUgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShm
bGFnX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9
Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPU5vbmUpCisgICAgc2VsZi5S
dW5BbmRWZXJpZnkoZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRfb3V0cHV0X3JlPUVYUEVDVEVEX09VVFBVVF9OT19GSUxURVJfUkUsCisgICAgICAgICAgICAg
ICAgICAgICAgb3RoZXJfZmxhZz1Ob25lKQorCisgIGRlZiB0ZXN0T3ZlcnJpZGVOb25GaWx0ZXJG
bGFncyhzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0IC0tZ3Rlc3RfbGlzdF90ZXN0cyBvdmVycmlk
ZXMgdGhlIG5vbi1maWx0ZXIgZmxhZ3MuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFn
X3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9RVhQ
RUNURURfT1VUUFVUX05PX0ZJTFRFUl9SRSwKKyAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9m
bGFnPSctLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUnKQorCisgIGRlZiB0ZXN0V2l0aEZpbHRlckZs
YWdzKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgLS1ndGVzdF9saXN0X3Rlc3RzIHRha2VzIGlu
dG8gYWNjb3VudCB0aGUKKyAgICAtLWd0ZXN0X2ZpbHRlciBmbGFnLiIiIgorCisgICAgc2VsZi5S
dW5BbmRWZXJpZnkoZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRfb3V0cHV0X3JlPUVYUEVDVEVEX09VVFBVVF9GSUxURVJfRk9PX1JFLAorICAgICAgICAgICAg
ICAgICAgICAgIG90aGVyX2ZsYWc9Jy0tZ3Rlc3RfZmlsdGVyPUZvbyonKQorCisKK2lmIF9fbmFt
ZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0
dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlzdC10
ZXN0cy11bml0dGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ3M2M3ZDFhNDVmMWYxOTZiMTM3NDgzYjA1
M2NhNTk4MDA3ZDI4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0Xy5jYwpAQCAtMCwwICsxLDE1NiBA
QAorLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisv
LyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIFVu
aXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4KKy8vCisv
LyBBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBsaXN0IGFsbCB0ZXN0cyB0aGF0IHdpbGwg
cnVuCisvLyBzbyB0aGF0IHdoZW4gdXNpbmcgYSBmaWx0ZXIsIGEgdXNlciB3aWxsIGtub3cgd2hh
dAorLy8gdGVzdHMgdG8gbG9vayBmb3IuIFRoZSB0ZXN0cyB3aWxsIG5vdCBiZSBydW4gYWZ0ZXIg
bGlzdGluZy4KKy8vCisvLyBUaGlzIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRo
b24gdW5pdCB0ZXN0LgorLy8gRG9uJ3QgcnVuIGl0IGRpcmVjdGx5LgorCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKKworLy8gU2V2ZXJhbCBkaWZmZXJlbnQgdGVzdCBjYXNlcyBhbmQgdGVzdHMg
dGhhdCB3aWxsIGJlIGxpc3RlZC4KK1RFU1QoRm9vLCBCYXIxKSB7Cit9CisKK1RFU1QoRm9vLCBC
YXIyKSB7Cit9CisKK1RFU1QoRm9vLCBESVNBQkxFRF9CYXIzKSB7Cit9CisKK1RFU1QoQWJjLCBY
eXopIHsKK30KKworVEVTVChBYmMsIERlZikgeworfQorCitURVNUKEZvb0JhciwgQmF6KSB7Cit9
CisKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitURVNUX0Yo
Rm9vVGVzdCwgVGVzdDEpIHsKK30KKworVEVTVF9GKEZvb1Rlc3QsIERJU0FCTEVEX1Rlc3QyKSB7
Cit9CisKK1RFU1RfRihGb29UZXN0LCBUZXN0MykgeworfQorCitURVNUKEZvb0RlYXRoVGVzdCwg
VGVzdDEpIHsKK30KKworLy8gQSBncm91cCBvZiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgor
CitjbGFzcyBNeVR5cGUgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgTXlUeXBlKGNvbnN0IHN0ZDo6
c3RyaW5nJiBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7fQorCisgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQorCisgcHJpdmF0ZToKKyAgc3Rk
OjpzdHJpbmcgdmFsdWVfOworfTsKKworLy8gVGVhY2hlcyBHb29nbGUgVGVzdCBob3cgdG8gcHJp
bnQgYSBNeVR5cGUuCit2b2lkIFByaW50VG8oY29uc3QgTXlUeXBlJiB4LCBzdGQ6Om9zdHJlYW0q
IG9zKSB7CisgICpvcyA8PCB4LnZhbHVlKCk7Cit9CisKK2NsYXNzIFZhbHVlUGFyYW1UZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08TXlUeXBlPiB7Cit9OworCitURVNUX1AoVmFs
dWVQYXJhbVRlc3QsIFRlc3RBKSB7Cit9CisKK1RFU1RfUChWYWx1ZVBhcmFtVGVzdCwgVGVzdEIp
IHsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoCisgICAgTXlJbnN0YW50aWF0aW9uLCBW
YWx1ZVBhcmFtVGVzdCwKKyAgICB0ZXN0aW5nOjpWYWx1ZXMoTXlUeXBlKCJvbmUgbGluZSIpLAor
ICAgICAgICAgICAgICAgICAgICBNeVR5cGUoInR3b1xubGluZXMiKSwKKyAgICAgICAgICAgICAg
ICAgICAgTXlUeXBlKCJhIHZlcnlcbmxvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vbmcgbGluZSIpKSk7
ICAvLyBOT0xJTlQKKworLy8gQSBncm91cCBvZiB0eXBlZCB0ZXN0cy4KKworLy8gQSBkZWxpYmVy
YXRlbHkgbG9uZyB0eXBlIG5hbWUgZm9yIHRlc3RpbmcgdGhlIGxpbmUtdHJ1bmNhdGluZworLy8g
YmVoYXZpb3Igd2hlbiBwcmludGluZyBhIHR5cGUgcGFyYW1ldGVyLgorY2xhc3MgVmVyeUxvb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vZ05hbWUgeyAgLy8gTk9MSU5UCit9OworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2NsYXNzIFR5cGVkVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBULCBpbnQga1NpemU+CitjbGFzcyBNeUFycmF5IHsKK307CisK
K3R5cGVkZWYgdGVzdGluZzo6VHlwZXM8VmVyeUxvb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vZ05hbWUs
ICAvLyBOT0xJTlQKKyAgICAgICAgICAgICAgICAgICAgICAgaW50KiwgTXlBcnJheTxib29sLCA0
Mj4gPiBNeVR5cGVzOworCitUWVBFRF9URVNUX0NBU0UoVHlwZWRUZXN0LCBNeVR5cGVzKTsKKwor
VFlQRURfVEVTVChUeXBlZFRlc3QsIFRlc3RBKSB7Cit9CisKK1RZUEVEX1RFU1QoVHlwZWRUZXN0
LCBUZXN0QikgeworfQorCisvLyBBIGdyb3VwIG9mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlUGFyYW1UZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgeworfTsKKworVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtVGVzdCk7CisK
K1RZUEVEX1RFU1RfUChUeXBlUGFyYW1UZXN0LCBUZXN0QSkgeworfQorCitUWVBFRF9URVNUX1Ao
VHlwZVBhcmFtVGVzdCwgVGVzdEIpIHsKK30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1Ao
VHlwZVBhcmFtVGVzdCwgVGVzdEEsIFRlc3RCKTsKKworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9D
QVNFX1AoTXksIFR5cGVQYXJhbVRlc3QsIE15VHlwZXMpOworCitpbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqKmFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7
CisKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1saXN0ZW5lci10ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWxpc3RlbmVyLXRlc3QuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODM1NTU5NzE1MWQwOWQ2YzMxNTY3MWY0MmRiNjZjYzRiZDQ4NTBmZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1saXN0ZW5lci10
ZXN0LmNjCkBAIC0wLDAgKzEsMzExIEBACisvLyBDb3B5cmlnaHQgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
Ly8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
Ky8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisvLworLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFt
ZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8KKy8vIFRoaXMgZmlsZSB2ZXJpZmllcyBHb29nbGUgVGVz
dCBldmVudCBsaXN0ZW5lcnMgcmVjZWl2ZSBldmVudHMgYXQgdGhlCisvLyByaWdodCB0aW1lcy4K
KworI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK3VzaW5n
IDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50OwordXNpbmcgOjp0ZXN0aW5nOjpF
bnZpcm9ubWVudDsKK3VzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7Cit1c2luZyA6OnRl
c3Rpbmc6OlRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3RDYXNlOwordXNpbmcgOjp0ZXN0aW5n
OjpUZXN0RXZlbnRMaXN0ZW5lcjsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdEluZm87Cit1c2luZyA6
OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OwordXNpbmcgOjp0ZXN0aW5nOjpVbml0VGVzdDsKKwor
Ly8gVXNlZCBieSB0ZXN0cyB0byByZWdpc3RlciB0aGVpciBldmVudHMuCitzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4qIGdfZXZlbnRzID0gTlVMTDsKKworbmFtZXNwYWNlIHRlc3RpbmcgeworbmFt
ZXNwYWNlIGludGVybmFsIHsKKworY2xhc3MgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lciA6IHB1Ymxp
YyBUZXN0RXZlbnRMaXN0ZW5lciB7CisgcHVibGljOgorICBleHBsaWNpdCBFdmVudFJlY29yZGlu
Z0xpc3RlbmVyKGNvbnN0IGNoYXIqIG5hbWUpIDogbmFtZV8obmFtZSkge30KKworIHByb3RlY3Rl
ZDoKKyAgdmlydHVhbCB2b2lkIE9uVGVzdFByb2dyYW1TdGFydChjb25zdCBVbml0VGVzdCYgLyp1
bml0X3Rlc3QqLykgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUo
Ik9uVGVzdFByb2dyYW1TdGFydCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVy
YXRpb25TdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBpdGVyYXRpb24pIHsKKyAgICBNZXNzYWdlIG1lc3Nh
Z2U7CisgICAgbWVzc2FnZSA8PCBHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0SXRlcmF0aW9uU3Rh
cnQiKQorICAgICAgICAgICAgPDwgIigiIDw8IGl0ZXJhdGlvbiA8PCAiKSI7CisgICAgZ19ldmVu
dHMtPnB1c2hfYmFjayhtZXNzYWdlLkdldFN0cmluZygpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9p
ZCBPbkVudmlyb25tZW50c1NldFVwU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8p
IHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPbkVudmlyb25t
ZW50c1NldFVwU3RhcnQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNT
ZXRVcEVuZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgeworICAgIGdfZXZlbnRzLT5w
dXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiKSk7Cisg
IH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0Q2FzZVN0YXJ0KGNvbnN0IFRlc3RDYXNlJiAvKnRl
c3RfY2FzZSovKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgi
T25UZXN0Q2FzZVN0YXJ0IikpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdFN0YXJ0KGNv
bnN0IFRlc3RJbmZvJiAvKnRlc3RfaW5mbyovKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhH
ZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0U3RhcnQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQg
T25UZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgLyp0ZXN0X3BhcnRfcmVzdWx0
Ki8pIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RQ
YXJ0UmVzdWx0IikpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdEVuZChjb25zdCBUZXN0
SW5mbyYgLyp0ZXN0X2luZm8qLykgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1l
dGhvZE5hbWUoIk9uVGVzdEVuZCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPblRlc3RDYXNl
RW5kKGNvbnN0IFRlc3RDYXNlJiAvKnRlc3RfY2FzZSovKSB7CisgICAgZ19ldmVudHMtPnB1c2hf
YmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0Q2FzZUVuZCIpKTsKKyAgfQorCisgIHZpcnR1
YWwgdm9pZCBPbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5p
dF90ZXN0Ki8pIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJP
bkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25F
bnZpcm9ubWVudHNUZWFyRG93bkVuZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewor
ICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRz
VGVhckRvd25FbmQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uRW5k
KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpdGVyYXRpb24pIHsKKyAgICBNZXNzYWdlIG1lc3NhZ2U7CisgICAgbWVz
c2FnZSA8PCBHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0SXRlcmF0aW9uRW5kIikKKyAgICAgICAg
ICAgIDw8ICIoIiAgPDwgaXRlcmF0aW9uIDw8ICIpIjsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNr
KG1lc3NhZ2UuR2V0U3RyaW5nKCkpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdFByb2dy
YW1FbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKKyAgICBnX2V2ZW50cy0+cHVz
aF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RQcm9ncmFtRW5kIikpOworICB9CisKKyBw
cml2YXRlOgorICBzdGQ6OnN0cmluZyBHZXRGdWxsTWV0aG9kTmFtZShjb25zdCBjaGFyKiBuYW1l
KSB7CisgICAgcmV0dXJuIG5hbWVfICsgIi4iICsgbmFtZTsKKyAgfQorCisgIHN0ZDo6c3RyaW5n
IG5hbWVfOworfTsKKworY2xhc3MgRW52aXJvbm1lbnRJbnZvY2F0aW9uQ2F0Y2hlciA6IHB1Ymxp
YyBFbnZpcm9ubWVudCB7CisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Cisg
ICAgZ19ldmVudHMtPnB1c2hfYmFjaygiRW52aXJvbm1lbnQ6OlNldFVwIik7CisgIH0KKworICB2
aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjaygiRW52aXJv
bm1lbnQ6OlRlYXJEb3duIik7CisgIH0KK307CisKK2NsYXNzIExpc3RlbmVyVGVzdCA6IHB1Ymxp
YyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7Cisg
ICAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0OjpTZXRVcFRlc3RDYXNlIik7Cisg
IH0KKworICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIGdfZXZlbnRzLT5w
dXNoX2JhY2soIkxpc3RlbmVyVGVzdDo6VGVhckRvd25UZXN0Q2FzZSIpOworICB9CisKKyAgdmly
dHVhbCB2b2lkIFNldFVwKCkgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVyVGVz
dDo6U2V0VXAiKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBnX2V2
ZW50cy0+cHVzaF9iYWNrKCJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duIik7CisgIH0KK307CisKK1RF
U1RfRihMaXN0ZW5lclRlc3QsIERvZXNGb28pIHsKKyAgLy8gVGVzdCBleGVjdXRpb24gb3JkZXIg
d2l0aGluIGEgdGVzdCBjYXNlIGlzIG5vdCBndWFyYW50ZWVkIHNvIHdlIGFyZSBub3QKKyAgLy8g
cmVjb3JkaW5nIHRoZSB0ZXN0IG5hbWUuCisgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVy
VGVzdDo6KiBUZXN0IEJvZHkiKTsKKyAgU1VDQ0VFRCgpOyAgLy8gVHJpZ2dlcnMgT25UZXN0UGFy
dFJlc3VsdC4KK30KKworVEVTVF9GKExpc3RlbmVyVGVzdCwgRG9lc0JhcikgeworICBnX2V2ZW50
cy0+cHVzaF9iYWNrKCJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5Iik7CisgIFNVQ0NFRUQoKTsg
IC8vIFRyaWdnZXJzIE9uVGVzdFBhcnRSZXN1bHQuCit9CisKK30gIC8vIG5hbWVzcGFjZSBpbnRl
cm5hbAorCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCit1c2luZyA6OnRlc3Rpbmc6OmludGVy
bmFsOjpFbnZpcm9ubWVudEludm9jYXRpb25DYXRjaGVyOwordXNpbmcgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6RXZlbnRSZWNvcmRpbmdMaXN0ZW5lcjsKKwordm9pZCBWZXJpZnlSZXN1bHRzKGNvbnN0
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgZGF0YSwKKyAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBjb25zdCogZXhwZWN0ZWRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZXhwZWN0ZWRfZGF0YV9zaXplKSB7CisgIGNvbnN0IHNpemVfdCBhY3R1YWxfc2l6ZSA9IGRhdGEu
c2l6ZSgpOworICAvLyBJZiB0aGUgZm9sbG93aW5nIGFzc2VydGlvbiBmYWlscywgYSBuZXcgZW50
cnkgd2lsbCBiZSBhcHBlbmRlZCB0bworICAvLyBkYXRhLiAgSGVuY2Ugd2Ugc2F2ZSBkYXRhLnNp
emUoKSBmaXJzdC4KKyAgRVhQRUNUX0VRKGV4cGVjdGVkX2RhdGFfc2l6ZSwgYWN0dWFsX3NpemUp
OworCisgIC8vIENvbXBhcmVzIHRoZSBjb21tb24gcHJlZml4LgorICBjb25zdCBzaXplX3Qgc2hv
cnRlcl9zaXplID0gZXhwZWN0ZWRfZGF0YV9zaXplIDw9IGFjdHVhbF9zaXplID8KKyAgICAgIGV4
cGVjdGVkX2RhdGFfc2l6ZSA6IGFjdHVhbF9zaXplOworICBzaXplX3QgaSA9IDA7CisgIGZvciAo
OyBpIDwgc2hvcnRlcl9zaXplOyArK2kpIHsKKyAgICBBU1NFUlRfU1RSRVEoZXhwZWN0ZWRfZGF0
YVtpXSwgZGF0YVtpXS5jX3N0cigpKQorICAgICAgICA8PCAiYXQgcG9zaXRpb24gIiA8PCBpOwor
ICB9CisKKyAgLy8gUHJpbnRzIGV4dHJhIGVsZW1lbnRzIGluIHRoZSBhY3R1YWwgZGF0YS4KKyAg
Zm9yICg7IGkgPCBhY3R1YWxfc2l6ZTsgKytpKSB7CisgICAgcHJpbnRmKCIgIEFjdHVhbCBldmVu
dCAjJWx1OiAlc1xuIiwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaSksIGRh
dGFbaV0uY19zdHIoKSk7CisgIH0KK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2
KSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBldmVudHM7CisgIGdfZXZlbnRzID0gJmV2
ZW50czsKKyAgSW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIFVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5saXN0ZW5lcnMoKS5BcHBlbmQoCisgICAgICBuZXcgRXZlbnRSZWNvcmRpbmdM
aXN0ZW5lcigiMXN0IikpOworICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCku
QXBwZW5kKAorICAgICAgbmV3IEV2ZW50UmVjb3JkaW5nTGlzdGVuZXIoIjJuZCIpKTsKKworICBB
ZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEVudmlyb25tZW50SW52b2NhdGlvbkNhdGNoZXIp
OworCisgIEdURVNUX0NIRUNLXyhldmVudHMuc2l6ZSgpID09IDApCisgICAgICA8PCAiQWRkR2xv
YmFsVGVzdEVudmlyb25tZW50IHNob3VsZCBub3QgZ2VuZXJhdGUgYW55IGV2ZW50cyBpdHNlbGYu
IjsKKworICA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcocmVwZWF0KSA9IDI7CisgIGludCByZXRfdmFs
ID0gUlVOX0FMTF9URVNUUygpOworCisgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkX2V2ZW50
c1tdID0geworICAgICIxc3QuT25UZXN0UHJvZ3JhbVN0YXJ0IiwKKyAgICAiMm5kLk9uVGVzdFBy
b2dyYW1TdGFydCIsCisgICAgIjFzdC5PblRlc3RJdGVyYXRpb25TdGFydCgwKSIsCisgICAgIjJu
ZC5PblRlc3RJdGVyYXRpb25TdGFydCgwKSIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVw
U3RhcnQiLAorICAgICIybmQuT25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0IiwKKyAgICAiRW52aXJv
bm1lbnQ6OlNldFVwIiwKKyAgICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiLAorICAgICIx
c3QuT25FbnZpcm9ubWVudHNTZXRVcEVuZCIsCisgICAgIjFzdC5PblRlc3RDYXNlU3RhcnQiLAor
ICAgICIybmQuT25UZXN0Q2FzZVN0YXJ0IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcFRlc3RD
YXNlIiwKKyAgICAiMXN0Lk9uVGVzdFN0YXJ0IiwKKyAgICAiMm5kLk9uVGVzdFN0YXJ0IiwKKyAg
ICAiTGlzdGVuZXJUZXN0OjpTZXRVcCIsCisgICAgIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHki
LAorICAgICIxc3QuT25UZXN0UGFydFJlc3VsdCIsCisgICAgIjJuZC5PblRlc3RQYXJ0UmVzdWx0
IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93biIsCisgICAgIjJuZC5PblRlc3RFbmQiLAor
ICAgICIxc3QuT25UZXN0RW5kIiwKKyAgICAiMXN0Lk9uVGVzdFN0YXJ0IiwKKyAgICAiMm5kLk9u
VGVzdFN0YXJ0IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcCIsCisgICAgIkxpc3RlbmVyVGVz
dDo6KiBUZXN0IEJvZHkiLAorICAgICIxc3QuT25UZXN0UGFydFJlc3VsdCIsCisgICAgIjJuZC5P
blRlc3RQYXJ0UmVzdWx0IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93biIsCisgICAgIjJu
ZC5PblRlc3RFbmQiLAorICAgICIxc3QuT25UZXN0RW5kIiwKKyAgICAiTGlzdGVuZXJUZXN0OjpU
ZWFyRG93blRlc3RDYXNlIiwKKyAgICAiMm5kLk9uVGVzdENhc2VFbmQiLAorICAgICIxc3QuT25U
ZXN0Q2FzZUVuZCIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiLAorICAg
ICIybmQuT25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0IiwKKyAgICAiRW52aXJvbm1lbnQ6OlRl
YXJEb3duIiwKKyAgICAiMm5kLk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiLAorICAgICIxc3Qu
T25FbnZpcm9ubWVudHNUZWFyRG93bkVuZCIsCisgICAgIjJuZC5PblRlc3RJdGVyYXRpb25FbmQo
MCkiLAorICAgICIxc3QuT25UZXN0SXRlcmF0aW9uRW5kKDApIiwKKyAgICAiMXN0Lk9uVGVzdEl0
ZXJhdGlvblN0YXJ0KDEpIiwKKyAgICAiMm5kLk9uVGVzdEl0ZXJhdGlvblN0YXJ0KDEpIiwKKyAg
ICAiMXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIsCisgICAgIjJuZC5PbkVudmlyb25tZW50
c1NldFVwU3RhcnQiLAorICAgICJFbnZpcm9ubWVudDo6U2V0VXAiLAorICAgICIybmQuT25FbnZp
cm9ubWVudHNTZXRVcEVuZCIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVwRW5kIiwKKyAg
ICAiMXN0Lk9uVGVzdENhc2VTdGFydCIsCisgICAgIjJuZC5PblRlc3RDYXNlU3RhcnQiLAorICAg
ICJMaXN0ZW5lclRlc3Q6OlNldFVwVGVzdENhc2UiLAorICAgICIxc3QuT25UZXN0U3RhcnQiLAor
ICAgICIybmQuT25UZXN0U3RhcnQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwKKyAgICAi
TGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCisgICAgIjFzdC5PblRlc3RQYXJ0UmVzdWx0IiwK
KyAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3du
IiwKKyAgICAiMm5kLk9uVGVzdEVuZCIsCisgICAgIjFzdC5PblRlc3RFbmQiLAorICAgICIxc3Qu
T25UZXN0U3RhcnQiLAorICAgICIybmQuT25UZXN0U3RhcnQiLAorICAgICJMaXN0ZW5lclRlc3Q6
OlNldFVwIiwKKyAgICAiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCisgICAgIjFzdC5PblRl
c3RQYXJ0UmVzdWx0IiwKKyAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAorICAgICJMaXN0ZW5l
clRlc3Q6OlRlYXJEb3duIiwKKyAgICAiMm5kLk9uVGVzdEVuZCIsCisgICAgIjFzdC5PblRlc3RF
bmQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duVGVzdENhc2UiLAorICAgICIybmQuT25U
ZXN0Q2FzZUVuZCIsCisgICAgIjFzdC5PblRlc3RDYXNlRW5kIiwKKyAgICAiMXN0Lk9uRW52aXJv
bm1lbnRzVGVhckRvd25TdGFydCIsCisgICAgIjJuZC5PbkVudmlyb25tZW50c1RlYXJEb3duU3Rh
cnQiLAorICAgICJFbnZpcm9ubWVudDo6VGVhckRvd24iLAorICAgICIybmQuT25FbnZpcm9ubWVu
dHNUZWFyRG93bkVuZCIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5kIiwKKyAg
ICAiMm5kLk9uVGVzdEl0ZXJhdGlvbkVuZCgxKSIsCisgICAgIjFzdC5PblRlc3RJdGVyYXRpb25F
bmQoMSkiLAorICAgICIybmQuT25UZXN0UHJvZ3JhbUVuZCIsCisgICAgIjFzdC5PblRlc3RQcm9n
cmFtRW5kIgorICB9OworICBWZXJpZnlSZXN1bHRzKGV2ZW50cywKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZF9ldmVudHMsCisgICAgICAgICAgICAgICAgc2l6ZW9mKGV4cGVjdGVkX2V2ZW50cykv
c2l6ZW9mKGV4cGVjdGVkX2V2ZW50c1swXSkpOworCisgIC8vIFdlIG5lZWQgdG8gY2hlY2sgbWFu
dWFsbHkgZm9yIGFkIGhvYyB0ZXN0IGZhaWx1cmVzIHRoYXQgaGFwcGVuIGFmdGVyCisgIC8vIFJV
Tl9BTExfVEVTVFMgZmluaXNoZXMuCisgIGlmIChVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+RmFp
bGVkKCkpCisgICAgcmV0X3ZhbCA9IDE7CisKKyAgcmV0dXJuIHJldF92YWw7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbWVzc2FnZS10ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW1lc3NhZ2UtdGVz
dC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNjQ0NTg1M2U0MzNkM2MxNDM0NTI1NzM5MWE2Yjk4OGE5ZDM4MGVm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LW1lc3NhZ2UtdGVzdC5jYwpAQCAtMCwwICsxLDE1OCBAQAorLy8gQ29weXJpZ2h0IDIwMDUs
IEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gVGVzdHMgZm9yIHRoZSBNZXNzYWdl
IGNsYXNzLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgorCisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsKKwordXNpbmcgOjp0ZXN0aW5nOjpNZXNzYWdl
OworCisvLyBUZXN0cyB0aGUgdGVzdGluZzo6TWVzc2FnZSBjbGFzcworCisvLyBUZXN0cyB0aGUg
ZGVmYXVsdCBjb25zdHJ1Y3Rvci4KK1RFU1QoTWVzc2FnZVRlc3QsIERlZmF1bHRDb25zdHJ1Y3Rv
cikgeworICBjb25zdCBNZXNzYWdlIG1zZzsKKyAgRVhQRUNUX0VRKCIiLCBtc2cuR2V0U3RyaW5n
KCkpOworfQorCisvLyBUZXN0cyB0aGUgY29weSBjb25zdHJ1Y3Rvci4KK1RFU1QoTWVzc2FnZVRl
c3QsIENvcHlDb25zdHJ1Y3RvcikgeworICBjb25zdCBNZXNzYWdlIG1zZzEoIkhlbGxvIik7Cisg
IGNvbnN0IE1lc3NhZ2UgbXNnMihtc2cxKTsKKyAgRVhQRUNUX0VRKCJIZWxsbyIsIG1zZzIuR2V0
U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSBNZXNzYWdlIGZyb20gYSBD
LXN0cmluZy4KK1RFU1QoTWVzc2FnZVRlc3QsIENvbnN0cnVjdHNGcm9tQ1N0cmluZykgeworICBN
ZXNzYWdlIG1zZygiSGVsbG8iKTsKKyAgRVhQRUNUX0VRKCJIZWxsbyIsIG1zZy5HZXRTdHJpbmco
KSk7Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIGZsb2F0LgorVEVTVChNZXNzYWdlVGVzdCwg
U3RyZWFtc0Zsb2F0KSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHMgPSAoTWVzc2FnZSgpIDw8IDEu
MjM0NTZGIDw8ICIgIiA8PCAyLjM0NTY3RikuR2V0U3RyaW5nKCk7CisgIC8vIEJvdGggbnVtYmVy
cyBzaG91bGQgYmUgcHJpbnRlZCB3aXRoIGVub3VnaCBwcmVjaXNpb24uCisgIEVYUEVDVF9QUkVE
X0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIxLjIzNDU2MCIsIHMuY19zdHIoKSk7Cisg
IEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIgMi4zNDU2NjkiLCBz
LmNfc3RyKCkpOworfQorCisvLyBUZXN0cyBzdHJlYW1pbmcgYSBkb3VibGUuCitURVNUKE1lc3Nh
Z2VUZXN0LCBTdHJlYW1zRG91YmxlKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHMgPSAoTWVzc2Fn
ZSgpIDw8IDEyNjA1NzA4ODAuNDU1NTQ5NyA8PCAiICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAxMjYwNTcyMjY1LjE5NTQ1MzQpLkdldFN0cmluZygpOworICAvLyBCb3Ro
IG51bWJlcnMgc2hvdWxkIGJlIHByaW50ZWQgd2l0aCBlbm91Z2ggcHJlY2lzaW9uLgorICBFWFBF
Q1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6OklzU3Vic3RyaW5nLCAiMTI2MDU3MDg4MC40NSIsIHMu
Y19zdHIoKSk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIg
MTI2MDU3MjI2NS4xOSIsIHMuY19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIG5v
bi1jaGFyIHBvaW50ZXIuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zUG9pbnRlcikgeworICBp
bnQgbiA9IDA7CisgIGludCogcCA9ICZuOworICBFWFBFQ1RfTkUoIihudWxsKSIsIChNZXNzYWdl
KCkgPDwgcCkuR2V0U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyBzdHJlYW1pbmcgYSBOVUxMIG5v
bi1jaGFyIHBvaW50ZXIuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zTnVsbFBvaW50ZXIpIHsK
KyAgaW50KiBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCIobnVsbCkiLCAoTWVzc2FnZSgpIDw8IHAp
LkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGEgQyBzdHJpbmcuCitURVNU
KE1lc3NhZ2VUZXN0LCBTdHJlYW1zQ1N0cmluZykgeworICBFWFBFQ1RfRVEoIkZvbyIsIChNZXNz
YWdlKCkgPDwgIkZvbyIpLkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGEg
TlVMTCBDIHN0cmluZy4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNOdWxsQ1N0cmluZykgewor
ICBjaGFyKiBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCIobnVsbCkiLCAoTWVzc2FnZSgpIDw8IHAp
LkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIHN0ZDo6c3RyaW5nLgorVEVT
VChNZXNzYWdlVGVzdCwgU3RyZWFtc1N0cmluZykgeworICBjb25zdCA6OnN0ZDo6c3RyaW5nIHN0
cigiSGVsbG8iKTsKKyAgRVhQRUNUX0VRKCJIZWxsbyIsIChNZXNzYWdlKCkgPDwgc3RyKS5HZXRT
dHJpbmcoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgd2UgY2FuIG91dHB1dCBzdHJpbmdzIGNvbnRh
aW5pbmcgZW1iZWRkZWQgTlVMcy4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNTdHJpbmdXaXRo
RW1iZWRkZWROVUwpIHsKKyAgY29uc3QgY2hhciBjaGFyX2FycmF5X3dpdGhfbnVsW10gPQorICAg
ICAgIkhlcmUncyBhIE5VTFwwIGFuZCBzb21lIG1vcmUgc3RyaW5nIjsKKyAgY29uc3QgOjpzdGQ6
OnN0cmluZyBzdHJpbmdfd2l0aF9udWwoY2hhcl9hcnJheV93aXRoX251bCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGNoYXJfYXJyYXlfd2l0aF9udWwpIC0g
MSk7CisgIEVYUEVDVF9FUSgiSGVyZSdzIGEgTlVMXFwwIGFuZCBzb21lIG1vcmUgc3RyaW5nIiwK
KyAgICAgICAgICAgIChNZXNzYWdlKCkgPDwgc3RyaW5nX3dpdGhfbnVsKS5HZXRTdHJpbmcoKSk7
Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIE5VTCBjaGFyLgorVEVTVChNZXNzYWdlVGVzdCwg
U3RyZWFtc05VTENoYXIpIHsKKyAgRVhQRUNUX0VRKCJcXDAiLCAoTWVzc2FnZSgpIDw8ICdcMCcp
LkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGludC4KK1RFU1QoTWVzc2Fn
ZVRlc3QsIFN0cmVhbXNJbnQpIHsKKyAgRVhQRUNUX0VRKCIxMjMiLCAoTWVzc2FnZSgpIDw8IDEy
MykuR2V0U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyB0aGF0IGJhc2ljIElPIG1hbmlwdWxhdG9y
cyAoZW5kbCwgZW5kcywgYW5kIGZsdXNoKSBjYW4gYmUKKy8vIHN0cmVhbWVkIHRvIE1lc3NhZ2Uu
CitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zQmFzaWNJb01hbmlwKSB7CisgIEVYUEVDVF9FUSgi
TGluZSAxLlxuQSBOVUwgY2hhciBcXDAgaW4gbGluZSAyLiIsCisgICAgICAgICAgICAgICAoTWVz
c2FnZSgpIDw8ICJMaW5lIDEuIiA8PCBzdGQ6OmVuZGwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCAiQSBOVUwgY2hhciAiIDw8IHN0ZDo6ZW5kcyA8PCBzdGQ6OmZsdXNoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgIiBpbiBsaW5lIDIuIikuR2V0U3RyaW5nKCkpOworfQorCisvLyBU
ZXN0cyBNZXNzYWdlOjpHZXRTdHJpbmcoKQorVEVTVChNZXNzYWdlVGVzdCwgR2V0U3RyaW5nKSB7
CisgIE1lc3NhZ2UgbXNnOworICBtc2cgPDwgMSA8PCAiIGxhbWIiOworICBFWFBFQ1RfRVEoIjEg
bGFtYiIsIG1zZy5HZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIE1lc3Nh
Z2Ugb2JqZWN0IHRvIGFuIG9zdHJlYW0uCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zVG9PU3Ry
ZWFtKSB7CisgIE1lc3NhZ2UgbXNnKCJIZWxsbyIpOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNz
OworICBzcyA8PCBtc2c7CisgIEVYUEVDVF9FUSgiSGVsbG8iLCB0ZXN0aW5nOjppbnRlcm5hbDo6
U3RyaW5nU3RyZWFtVG9TdHJpbmcoJnNzKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBNZXNzYWdl
IG9iamVjdCBkb2Vzbid0IHRha2UgdXAgdG9vIG11Y2ggc3RhY2sgc3BhY2UuCitURVNUKE1lc3Nh
Z2VUZXN0LCBEb2VzTm90VGFrZVVwTXVjaFN0YWNrU3BhY2UpIHsKKyAgRVhQRUNUX0xFKHNpemVv
ZihNZXNzYWdlKSwgMTZVKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3B0aW9ucy10ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW9wdGlvbnMtdGVzdC5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lZGQ0ZWJhM2JkMzEwOTU5NTBhOGQ5OGNmM2RhZjZmMzRkNjQ5NjlmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW9wdGlv
bnMtdGVzdC5jYwpAQCAtMCwwICsxLDIxMSBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJ
bmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEdvb2dsZSBUZXN0IFVuaXRUZXN0T3B0aW9ucyB0ZXN0
cworLy8KKy8vIFRoaXMgZmlsZSB0ZXN0cyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRl
cm5hbGx5IGJ5CisvLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdp
dGhvdXQgbm90aWNlLgorLy8KKy8vIFRoaXMgZmlsZSBpcyAjaW5jbHVkZWQgZnJvbSBndGVzdC5j
YywgdG8gYXZvaWQgY2hhbmdpbmcgYnVpbGQgb3IKKy8vIG1ha2UtZmlsZXMgb24gV2luZG93cyBh
bmQgb3RoZXIgcGxhdGZvcm1zLiBEbyBub3QgI2luY2x1ZGUgdGhpcyBmaWxlCisvLyBhbnl3aGVy
ZSBlbHNlIQorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lmIEdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCisjIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbGlmIEdURVNUX09TX1dJTkRPV1MK
KyMgaW5jbHVkZSA8ZGlyZWN0Lmg+CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxF
CisKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCisKK25hbWVzcGFjZSB0ZXN0
aW5nIHsKK25hbWVzcGFjZSBpbnRlcm5hbCB7CituYW1lc3BhY2UgeworCisvLyBUdXJucyB0aGUg
Z2l2ZW4gcmVsYXRpdmUgcGF0aCBpbnRvIGFuIGFic29sdXRlIHBhdGguCitGaWxlUGF0aCBHZXRB
YnNvbHV0ZVBhdGhPZihjb25zdCBGaWxlUGF0aCYgcmVsYXRpdmVfcGF0aCkgeworICByZXR1cm4g
RmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCksIHJlbGF0aXZl
X3BhdGgpOworfQorCisvLyBUZXN0aW5nIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0
L0dldE91dHB1dEZpbGUuCisKK1RFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0Rm9ybWF0RGVm
YXVsdCkgeworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAiIjsKKyAgRVhQRUNUX1NUUkVRKCIiLCBV
bml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdCgpLmNfc3RyKCkpOworfQorCitURVNUKFht
bE91dHB1dFRlc3QsIEdldE91dHB1dEZvcm1hdCkgeworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAi
eG1sOmZpbGVuYW1lIjsKKyAgRVhQRUNUX1NUUkVRKCJ4bWwiLCBVbml0VGVzdE9wdGlvbnM6Okdl
dE91dHB1dEZvcm1hdCgpLmNfc3RyKCkpOworfQorCitURVNUKFhtbE91dHB1dFRlc3QsIEdldE91
dHB1dEZpbGVEZWZhdWx0KSB7CisgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICIiOworICBFWFBFQ1Rf
RVEoR2V0QWJzb2x1dGVQYXRoT2YoRmlsZVBhdGgoInRlc3RfZGV0YWlsLnhtbCIpKS5zdHJpbmco
KSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRG
aWxlKCkpOworfQorCitURVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZpbGVTaW5nbGVGaWxl
KSB7CisgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6ZmlsZW5hbWUuYWJjIjsKKyAgRVhQRUNU
X0VRKEdldEFic29sdXRlUGF0aE9mKEZpbGVQYXRoKCJmaWxlbmFtZS5hYmMiKSkuc3RyaW5nKCks
CisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0Rmls
ZSgpKTsKK30KKworVEVTVChYbWxPdXRwdXRUZXN0LCBHZXRPdXRwdXRGaWxlRnJvbURpcmVjdG9y
eVBhdGgpIHsKKyAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbDpwYXRoIiBHVEVTVF9QQVRIX1NF
UF87CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdGVkX291dHB1dF9maWxlID0KKyAgICAgIEdl
dEFic29sdXRlUGF0aE9mKAorICAgICAgICAgIEZpbGVQYXRoKHN0ZDo6c3RyaW5nKCJwYXRoIikg
KyBHVEVTVF9QQVRIX1NFUF8gKworICAgICAgICAgICAgICAgICAgIEdldEN1cnJlbnRFeGVjdXRh
YmxlTmFtZSgpLnN0cmluZygpICsgIi54bWwiKSkuc3RyaW5nKCk7CisgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBvdXRwdXRfZmlsZSA9CisgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0
aFRvT3V0cHV0RmlsZSgpOworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgRVhQRUNUX1NUUkNBU0VF
UShleHBlY3RlZF9vdXRwdXRfZmlsZS5jX3N0cigpLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKKyNl
bHNlCisgIEVYUEVDVF9FUShleHBlY3RlZF9vdXRwdXRfZmlsZSwgb3V0cHV0X2ZpbGUuY19zdHIo
KSk7CisjZW5kaWYKK30KKworVEVTVChPdXRwdXRGaWxlSGVscGVyc1Rlc3QsIEdldEN1cnJlbnRF
eGVjdXRhYmxlTmFtZSkgeworICBjb25zdCBzdGQ6OnN0cmluZyBleGVfc3RyID0gR2V0Q3VycmVu
dEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCk7CisjaWYgR1RFU1RfT1NfV0lORE9XUworICBjb25z
dCBib29sIHN1Y2Nlc3MgPQorICAgICAgX3N0cmNtcGkoImdvb2dsZXRlc3Qtb3B0aW9ucy10ZXN0
IiwgZXhlX3N0ci5jX3N0cigpKSA9PSAwIHx8CisgICAgICBfc3RyY21waSgiZ3Rlc3Qtb3B0aW9u
cy1leF90ZXN0IiwgZXhlX3N0ci5jX3N0cigpKSA9PSAwIHx8CisgICAgICBfc3RyY21waSgiZ3Rl
c3RfYWxsX3Rlc3QiLCBleGVfc3RyLmNfc3RyKCkpID09IDAgfHwKKyAgICAgIF9zdHJjbXBpKCJn
dGVzdF9kbGxfdGVzdCIsIGV4ZV9zdHIuY19zdHIoKSkgPT0gMDsKKyNlbGlmIEdURVNUX09TX0ZV
Q0hTSUEKKyAgY29uc3QgYm9vbCBzdWNjZXNzID0gZXhlX3N0ciA9PSAiYXBwIjsKKyNlbHNlCisg
IC8vIEZJWE1FOiByZW1vdmUgdGhlIGhhcmQtY29kZWQgImx0LSIgcHJlZml4IHdoZW4gbGlidG9v
bCByZXBsYWNlbWVudCBpcyByZWFkeQorICBjb25zdCBib29sIHN1Y2Nlc3MgPQorICAgICAgZXhl
X3N0ciA9PSAiZ29vZ2xldGVzdC1vcHRpb25zLXRlc3QiIHx8CisgICAgICBleGVfc3RyID09ICJn
dGVzdF9hbGxfdGVzdCIgfHwKKyAgICAgIGV4ZV9zdHIgPT0gImx0LWd0ZXN0X2FsbF90ZXN0IiB8
fAorICAgICAgZXhlX3N0ciA9PSAiZ3Rlc3RfZGxsX3Rlc3QiOworI2VuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCisgIGlmICghc3VjY2VzcykKKyAgICBGQUlMKCkgPDwgIkdldEN1cnJlbnRFeGVj
dXRhYmxlTmFtZSgpIHJldHVybnMgIiA8PCBleGVfc3RyOworfQorCisjaWYgIUdURVNUX09TX0ZV
Q0hTSUEKKworY2xhc3MgWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBw
cm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBvcmlnaW5hbF93b3JraW5n
X2Rpcl8gPSBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpOworICAgIHBvc2l4OjpDaERpcigiLi4i
KTsKKyAgICAvLyBUaGlzIHdpbGwgbWFrZSB0aGUgdGVzdCBmYWlsIGlmIHJ1biBmcm9tIHRoZSBy
b290IGRpcmVjdG9yeS4KKyAgICBFWFBFQ1RfTkUob3JpZ2luYWxfd29ya2luZ19kaXJfLnN0cmlu
ZygpLAorICAgICAgICAgICAgICBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpLnN0cmluZygpKTsK
KyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBwb3NpeDo6Q2hEaXIob3Jp
Z2luYWxfd29ya2luZ19kaXJfLnN0cmluZygpLmNfc3RyKCkpOworICB9CisKKyAgRmlsZVBhdGgg
b3JpZ2luYWxfd29ya2luZ19kaXJfOworfTsKKworVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRl
c3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aERlZmF1bHQpIHsKKyAgR1RFU1RfRkxB
RyhvdXRwdXQpID0gIiI7CisgIEVYUEVDVF9FUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2lu
YWxfd29ya2luZ19kaXJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQ
YXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuc3RyaW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9w
dGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKK30KKworVEVTVF9GKFhtbE91
dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aERlZmF1bHRY
TUwpIHsKKyAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbCI7CisgIEVYUEVDVF9FUShGaWxlUGF0
aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuc3RyaW5nKCksCisg
ICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgp
KTsKK30KKworVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxX
b3JraW5nRGlyV2l0aFJlbGF0aXZlRmlsZSkgeworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1s
OmZpbGVuYW1lLmFiYyI7CisgIEVYUEVDVF9FUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2lu
YWxfd29ya2luZ19kaXJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQ
YXRoKCJmaWxlbmFtZS5hYmMiKSkuc3RyaW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9wdGlv
bnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKK30KKworVEVTVF9GKFhtbE91dHB1
dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aFJlbGF0aXZlUGF0
aCkgeworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOnBhdGgiIEdURVNUX1BBVEhfU0VQXzsK
KyAgY29uc3Qgc3RkOjpzdHJpbmcgZXhwZWN0ZWRfb3V0cHV0X2ZpbGUgPQorICAgICAgRmlsZVBh
dGg6OkNvbmNhdFBhdGhzKAorICAgICAgICAgIG9yaWdpbmFsX3dvcmtpbmdfZGlyXywKKyAgICAg
ICAgICBGaWxlUGF0aChzdGQ6OnN0cmluZygicGF0aCIpICsgR1RFU1RfUEFUSF9TRVBfICsKKyAg
ICAgICAgICAgICAgICAgICBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmcoKSArICIu
eG1sIikpLnN0cmluZygpOworICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2ZpbGUgPQorICAg
ICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKTsKKyNpZiBH
VEVTVF9PU19XSU5ET1dTCisgIEVYUEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUu
Y19zdHIoKSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7CisjZWxzZQorICBFWFBFQ1RfRVEoZXhwZWN0
ZWRfb3V0cHV0X2ZpbGUsIG91dHB1dF9maWxlLmNfc3RyKCkpOworI2VuZGlmCit9CisKK1RFU1Rf
RihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhB
YnNvbHV0ZUZpbGUpIHsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIEdURVNUX0ZMQUcob3V0cHV0
KSA9ICJ4bWw6YzpcXHRtcFxcZmlsZW5hbWUuYWJjIjsKKyAgRVhQRUNUX0VRKEZpbGVQYXRoKCJj
OlxcdG1wXFxmaWxlbmFtZS5hYmMiKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0
aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOworI2Vsc2UKKyAgR1RFU1RfRkxB
RyhvdXRwdXQpID0ieG1sOi90bXAvZmlsZW5hbWUuYWJjIjsKKyAgRVhQRUNUX0VRKEZpbGVQYXRo
KCIvdG1wL2ZpbGVuYW1lLmFiYyIpLnN0cmluZygpLAorICAgICAgICAgICAgVW5pdFRlc3RPcHRp
b25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSk7CisjZW5kaWYKK30KKworVEVTVF9G
KFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aEFi
c29sdXRlUGF0aCkgeworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgY29uc3Qgc3RkOjpzdHJpbmcg
cGF0aCA9ICJjOlxcdG1wXFwiOworI2Vsc2UKKyAgY29uc3Qgc3RkOjpzdHJpbmcgcGF0aCA9ICIv
dG1wLyI7CisjZW5kaWYKKworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOiIgKyBwYXRoOwor
ICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3RlZF9vdXRwdXRfZmlsZSA9CisgICAgICBwYXRoICsg
R2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKyAiLnhtbCI7CisgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBvdXRwdXRfZmlsZSA9CisgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29s
dXRlUGF0aFRvT3V0cHV0RmlsZSgpOworCisjaWYgR1RFU1RfT1NfV0lORE9XUworICBFWFBFQ1Rf
U1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxlLmNfc3RyKCksIG91dHB1dF9maWxlLmNfc3Ry
KCkpOworI2Vsc2UKKyAgRVhQRUNUX0VRKGV4cGVjdGVkX291dHB1dF9maWxlLCBvdXRwdXRfZmls
ZS5jX3N0cigpKTsKKyNlbmRpZgorfQorCisjZW5kaWYgIC8vICFHVEVTVF9PU19GVUNIU0lBCisK
K30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCit9ICAvLyBuYW1lc3Bh
Y2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LW91dHB1dC10ZXN0LWdvbGRlbi1saW4udHh0IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0LWdvbGRlbi1saW4udHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg2ZGE4NDViN2QwNGVhMWYyYjU1MzQ2MDRlZTljMGQyYjVmODU5MTYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Qt
Z29sZGVuLWxpbi50eHQKQEAgLTAsMCArMSwxMDQ3IEBACitUaGUgbm9uLXRlc3QgcGFydCBvZiB0
aGUgY29kZSBpcyBleHBlY3RlZCB0byBoYXZlIDIgZmFpbHVyZXMuCisKK2dvb2dsZXRlc3Qtb3V0
cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK1ZhbHVlIG9mOiBmYWxzZQorICBBY3R1YWw6IGZhbHNl
CitFeHBlY3RlZDogdHJ1ZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91
dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1
ZXM6CisgIDIKKyAgMworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzJtWz09PT09PT09
PT1dIBtbbVJ1bm5pbmcgNzYgdGVzdHMgZnJvbSAzNCB0ZXN0IGNhc2VzLgorG1swOzMybVstLS0t
LS0tLS0tXSAbW21HbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCitGb29FbnZpcm9ubWVu
dDo6U2V0VXAoKSBjYWxsZWQuCitCYXJFbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuCisbWzA7
MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEFEZWF0aFRlc3QKKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttQURlYXRoVGVzdC5TaG91bGRSdW5GaXJzdAorG1swOzMybVsgICAgICAgT0sgXSAb
W21BRGVhdGhUZXN0LlNob3VsZFJ1bkZpcnN0CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVz
dCBmcm9tIEFUeXBlZERlYXRoVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDszMm1b
IFJVTiAgICAgIF0gG1ttQVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1b
ICAgICAgIE9LIF0gG1ttQVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1b
LS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gQVR5cGVkRGVhdGhUZXN0LzEsIHdoZXJlIFR5cGVQ
YXJhbSA9IGRvdWJsZQorG1swOzMybVsgUlVOICAgICAgXSAbW21BVHlwZWREZWF0aFRlc3QvMS5T
aG91bGRSdW5GaXJzdAorG1swOzMybVsgICAgICAgT0sgXSAbW21BVHlwZWREZWF0aFRlc3QvMS5T
aG91bGRSdW5GaXJzdAorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBNeS9BVHlw
ZVBhcmFtRGVhdGhUZXN0LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGludAorG1swOzMybVsgUlVOICAg
ICAgXSAbW21NeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1b
ICAgICAgIE9LIF0gG1ttTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Cisb
WzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIE15L0FUeXBlUGFyYW1EZWF0aFRlc3Qv
MSwgd2hlcmUgVHlwZVBhcmFtID0gZG91YmxlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbU15L0FU
eXBlUGFyYW1EZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAorG1swOzMybVsgICAgICAgT0sgXSAb
W21NeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1bLS0tLS0t
LS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFBhc3NpbmdUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtb
bVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MQorG1swOzMybVsgICAgICAgT0sgXSAbW21QYXNzaW5n
VGVzdC5QYXNzaW5nVGVzdDEKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttUGFzc2luZ1Rlc3QuUGFz
c2luZ1Rlc3QyCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0
MgorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gTm9uZmF0YWxGYWlsdXJlVGVz
dAorG1swOzMybVsgUlVOICAgICAgXSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkVzY2FwZXNTdHJp
bmdPcGVyYW5kcworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0
ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICBrR29sZGVuU3RyaW5nCisgICAgV2hpY2gg
aXM6ICJcIkxpbmUiCisgIGFjdHVhbAorICAgIFdoaWNoIGlzOiAiYWN0dWFsIFwic3RyaW5nXCIi
CitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6
IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgZ29sZGVuCisg
ICAgV2hpY2ggaXM6ICJcIkxpbmUiCisgIGFjdHVhbAorICAgIFdoaWNoIGlzOiAiYWN0dWFsIFwi
c3RyaW5nXCIiCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0g
G1ttTm9uZmF0YWxGYWlsdXJlVGVzdC5Fc2NhcGVzU3RyaW5nT3BlcmFuZHMKKxtbMDszMm1bIFJV
TiAgICAgIF0gG1ttTm9uZmF0YWxGYWlsdXJlVGVzdC5EaWZmRm9yTG9uZ1N0cmluZ3MKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRo
ZXNlIHZhbHVlczoKKyAgZ29sZGVuX3N0cgorICAgIFdoaWNoIGlzOiAiXCJMaW5lXDAgMVwiXG5M
aW5lIDIiCisgICJMaW5lIDIiCitXaXRoIGRpZmY6CitAQCAtMSwyIEBACistXCJMaW5lXDAgMVwi
CisgTGluZSAyCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkRpZmZGb3JMb25nU3RyaW5ncworG1swOzMybVstLS0t
LS0tLS0tXSAbW20zIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdAorG1swOzMybVsgUlVOICAg
ICAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQorKGV4cGVj
dGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVz
dF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAx
CisgIHgKKyAgICBXaGljaCBpczogMgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFt
WyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5l
CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5O
ZXN0ZWRTdWJyb3V0aW5lCisoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEp
Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0
eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAgeAorICAgIFdoaWNoIGlzOiAyCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5G
YXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRmF0
YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKKyhleHBlY3RpbmcgYSBm
YWlsdXJlIG9uIGZhbHNlKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQor
VmFsdWUgb2Y6IGZhbHNlCisgIEFjdHVhbDogZmFsc2UKK0V4cGVjdGVkOiB0cnVlCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVz
dC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0
ZXN0IGZyb20gTG9nZ2luZ1Rlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttTG9nZ2luZ1Rlc3Qu
SW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKKyhleHBlY3RpbmcgMiBmYWlsdXJlcyBv
biAoMykgPj0gKGFbaV0pKQoraSA9PSAwCitpID09IDEKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgOQor
U3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitpID09IDIKK2kgPT0gMworZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDog
MyB2cyA2CitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
TG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKKxtbMDszMm1bLS0t
LS0tLS0tLV0gG1ttNyB0ZXN0cyBmcm9tIFNDT1BFRF9UUkFDRVRlc3QKKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5BY2NlcHRlZFZhbHVlcworZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitKdXN0IGNoZWNraW5nIHRoYXQgYWxsIHRo
ZXNlIHZhbHVlcyB3b3JrIGZpbmUuCitHb29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0
cHV0LXRlc3RfLmNjOiM6IChudWxsKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogMTMz
NworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izogc3RkOjpzdHJpbmcKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IGxpdGVyYWwgc3RyaW5nCitTdGFjayB0cmFjZTogKG9taXR0ZWQp
CisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5BY2NlcHRlZFZhbHVl
cworG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lk9iZXlzU2NvcGVzCiso
ZXhwZWN0ZWQgdG8gZmFpbCkKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUK
K0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkbid0IGhhdmUgYSB0
cmFjZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8u
Y2M6IzogRmFpbHVyZQorRmFpbGVkCitUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91
bGQgaGF2ZSBhIHRyYWNlLgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBFeHBlY3RlZCB0cmFjZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29n
bGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK1RoaXMgZmFpbHVyZSBp
cyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5PYmV5c1Nj
b3BlcworG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29w
CisoZXhwZWN0ZWQgdG8gZmFpbCkKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1
cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMgorICBuCisgICAgV2hp
Y2ggaXM6IDEKK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6
IzogaSA9IDEKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVz
dF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAx
CisgIG4KKyAgICBXaGljaCBpczogMgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91
dHB1dC10ZXN0Xy5jYzojOiBpID0gMgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFt
WyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJbkxvb3AKKxtbMDszMm1bIFJV
TiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGluZQorKGV4cGVjdGVk
IHRvIGZhaWwpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3Rl
ZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDIKKyAgbgorICAgIFdoaWNoIGlzOiAxCitH
b29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IG4gPSAxCitT
dGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZh
aWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICBuCisgICAg
V2hpY2ggaXM6IDIKK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8u
Y2M6IzogbiA9IDIKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJyb3V0aW5lCisbWzA7MzJtWyBSVU4gICAg
ICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKKyhleHBlY3RlZCB0byBmYWlsKQor
Z29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkg
b2YgdGhlc2UgdmFsdWVzOgorICAxCisgIG4KKyAgICBXaGljaCBpczogMgorR29vZ2xlIFRlc3Qg
dHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBuID0gMgorZ29vZ2xldGVzdC1v
dXRwdXQtdGVzdF8uY2M6IzogCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZU5lc3RlZAorG1swOzMybVsgUlVOICAg
ICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKKyhleHBlY3RlZCB0byBmYWls
KQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitUaGlzIGZh
aWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLgorR29v
Z2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBBCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUK
K0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJh
Y2UgcG9pbnQgQSBhbmQgQi4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQt
dGVzdF8uY2M6IzogQgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogQQorU3RhY2sgdHJh
Y2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitG
YWlsZWQKK1RoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNl
IHBvaW50IEEsIEIsIGFuZCBDLgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1
dC10ZXN0Xy5jYzojOiBDCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBCCitnb29nbGV0
ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBBCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEQuCitH
b29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEQKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEIKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6
IEEKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09Q
RURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttU0NPUEVE
X1RSQUNFVGVzdC5Xb3Jrc0NvbmN1cnJlbnRseQorKGV4cGVjdGluZyA2IGZhaWx1cmVzKQorZ29v
Z2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWls
dXJlICMxIChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBCIGFsaXZlKS4KK0dvb2dsZSBUZXN0IHRy
YWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogVHJhY2UgQgorU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWls
ZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzIgKGluIHRocmVhZCBBLCB0cmFjZSBBICYgQiBib3RoIGFs
aXZlKS4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izog
VHJhY2UgQQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0
Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzMgKGluIHRocmVhZCBC
LCB0cmFjZSBBICYgQiBib3RoIGFsaXZlKS4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogVHJhY2UgQgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitn
b29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZh
aWx1cmUgIzQgKGluIHRocmVhZCBCLCBvbmx5IHRyYWNlIEEgYWxpdmUpLgorU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWls
ZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzUgKGluIHRocmVhZCBBLCBvbmx5IHRyYWNlIEEgYWxpdmUp
LgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBUcmFj
ZSBBCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNj
OiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjNiAoaW4gdGhyZWFkIEEsIG5v
IHRyYWNlIGFsaXZlKS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzQ29uY3VycmVudGx5CisbWzA7MzJtWy0tLS0t
LS0tLS1dIBtbbTEgdGVzdCBmcm9tIFNjb3BlZFRyYWNlVGVzdAorG1swOzMybVsgUlVOICAgICAg
XSAbW21TY29wZWRUcmFjZVRlc3QuV2l0aEV4cGxpY2l0RmlsZUFuZExpbmUKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorQ2hlY2sgdGhhdCB0aGUgdHJhY2Ug
aXMgYXR0YWNoZWQgdG8gYSBwYXJ0aWN1bGFyIGxvY2F0aW9uLgorR29vZ2xlIFRlc3QgdHJhY2U6
CitleHBsaWNpdF9maWxlLmNjOjEyMzogZXhwZWN0ZWQgdHJhY2UgbWVzc2FnZQorU3RhY2sgdHJh
Y2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNjb3BlZFRyYWNlVGVzdC5X
aXRoRXhwbGljaXRGaWxlQW5kTGluZQorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJv
bSBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QKKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJ
bkNvbnN0cnVjdG9yCisoZXhwZWN0aW5nIDUgZmFpbHVyZXMpCitnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0
ZXN0IGZpeHR1cmUgYyd0b3IuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMiwg
aW4gU2V0VXAoKS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQt
dGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUg
dGVzdCBib2R5LgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzQsIGluIFRlYXJE
b3duLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5j
YzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzUsIGluIHRoZSB0ZXN0IGZp
eHR1cmUgZCd0b3IuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQg
IF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNv
bnN0cnVjdG9yCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEZhdGFsRmFpbHVy
ZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZh
aWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKKyhleHBl
Y3RpbmcgMiBmYWlsdXJlcykKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUK
K0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4K
K1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izog
RmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJl
IGQndG9yLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3Rv
cgorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBOb25GYXRhbEZhaWx1cmVJblNl
dFVwVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21Ob25GYXRhbEZhaWx1cmVJblNldFVwVGVz
dC5GYWlsdXJlSW5TZXRVcAorKGV4cGVjdGluZyA0IGZhaWx1cmVzKQorZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBT
ZXRVcCgpLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0
Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0
IGZ1bmN0aW9uLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzMsIGluIFRlYXJE
b3duKCkuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gdGhlIHRlc3Qg
Zml4dHVyZSBkJ3Rvci4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAorG1swOzMy
bVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBGYXRhbEZhaWx1cmVJblNldFVwVGVzdAorG1sw
OzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRV
cAorKGV4cGVjdGluZyAzIGZhaWx1cmVzKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izog
RmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLgorU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJl
CitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRlYXJEb3duKCkuCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0Zh
aWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KK1N0
YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1
cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRl
c3QgZnJvbSBBZGRGYWlsdXJlQXRUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUFkZEZhaWx1
cmVBdFRlc3QuTWVzc2FnZUNvbnRhaW5zU3BlY2lmaWVkRmlsZUFuZExpbmVOdW1iZXIKK2Zvby5j
Yzo0MjogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlIGluIGZvby5jYworU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUFkZEZhaWx1cmVBdFRl
c3QuTWVzc2FnZUNvbnRhaW5zU3BlY2lmaWVkRmlsZUFuZExpbmVOdW1iZXIKKxtbMDszMm1bLS0t
LS0tLS0tLV0gG1ttNCB0ZXN0cyBmcm9tIE1peGVkVXBUZXN0Q2FzZVRlc3QKKxtbMDszMm1bIFJV
TiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5GaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9v
CisbWzA7MzJtWyAgICAgICBPSyBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuRmlyc3RUZXN0RnJv
bU5hbWVzcGFjZUZvbworG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0
LlNlY29uZFRlc3RGcm9tTmFtZXNwYWNlRm9vCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbU1peGVk
VXBUZXN0Q2FzZVRlc3QuU2Vjb25kVGVzdEZyb21OYW1lc3BhY2VGb28KKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbAorZ3Rlc3QuY2M6Izog
RmFpbHVyZQorRmFpbGVkCitBbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNl
IHRoZSBzYW1lIHRlc3QgZml4dHVyZQorY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4
ZWRVcFRlc3RDYXNlVGVzdCwKK3lvdSBkZWZpbmVkIHRlc3QgRmlyc3RUZXN0RnJvbU5hbWVzcGFj
ZUZvbyBhbmQgdGVzdCBUaGlzU2hvdWxkRmFpbAordXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZp
eHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBlbiBpZgordGhlIHR3byBjbGFzc2VzIGFyZSBm
cm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCit1bml0cyBhbmQgaGF2ZSB0
aGUgc2FtZSBuYW1lLiAgWW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25lCitvZiB0aGUgY2xh
c3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMuCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNl
VGVzdC5UaGlzU2hvdWxkRmFpbAorG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENh
c2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCitndGVzdC5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0Fs
bCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0
dXJlCitjbGFzcy4gIEhvd2V2ZXIsIGluIHRlc3QgY2FzZSBNaXhlZFVwVGVzdENhc2VUZXN0LAor
eW91IGRlZmluZWQgdGVzdCBGaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vIGFuZCB0ZXN0IFRoaXNT
aG91bGRGYWlsVG9vCit1c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAg
VGhpcyBjYW4gaGFwcGVuIGlmCit0aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5h
bWVzcGFjZXMgb3IgdHJhbnNsYXRpb24KK3VuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZ
b3Ugc2hvdWxkIHByb2JhYmx5IHJlbmFtZSBvbmUKK29mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUg
dGVzdHMgaW50byBkaWZmZXJlbnQgdGVzdCBjYXNlcy4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkK
KworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRG
YWlsVG9vCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBNaXhlZFVwVGVzdENh
c2VXaXRoU2FtZVRlc3ROYW1lVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVz
dENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxk
RmFpbAorG1swOzMybVsgICAgICAgT0sgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3RO
YW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAorG1swOzMybVsgUlVO
ICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRU
ZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRmFpbGVkCitB
bGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4
dHVyZQorY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlV2l0aFNh
bWVUZXN0TmFtZVRlc3QsCit5b3UgZGVmaW5lZCB0ZXN0IFRoZVNlY29uZFRlc3RXaXRoVGhpc05h
bWVTaG91bGRGYWlsIGFuZCB0ZXN0IFRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWls
Cit1c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAgVGhpcyBjYW4gaGFw
cGVuIGlmCit0aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMgb3Ig
dHJhbnNsYXRpb24KK3VuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZb3Ugc2hvdWxkIHBy
b2JhYmx5IHJlbmFtZSBvbmUKK29mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50byBk
aWZmZXJlbnQgdGVzdCBjYXNlcy4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNv
bmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRl
c3RzIGZyb20gVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlCisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVk
VXNpbmdURVNUX0YKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2lu
X3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRgorG1swOzMybVsgUlVOICAgICAgXSAb
W21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFu
ZFNob3VsZEZhaWwKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorQWxsIHRlc3RzIGluIHRo
ZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKK2NsYXNzLCBz
byBtaXhpbmcgVEVTVF9GIGFuZCBURVNUIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBpcworaWxsZWdh
bC4gIEluIHRlc3QgY2FzZSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UsCit0
ZXN0IERlZmluZWRVc2luZ1RFU1RfRiBpcyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKK3Rlc3Qg
RGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwgaXMgZGVmaW5lZCB1c2luZyBURVNULiAgWW91
IHByb2JhYmx5Cit3YW50IHRvIGNoYW5nZSB0aGUgVEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0
byBhbm90aGVyIHRlc3QKK2Nhc2UuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmlu
ZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMg
ZnJvbSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UKKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2lu
Z1RFU1QKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVf
dGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVEVTVF9i
ZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3Vs
ZEZhaWwKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorQWxsIHRlc3RzIGluIHRoZSBzYW1l
IHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKK2NsYXNzLCBzbyBtaXhp
bmcgVEVTVF9GIGFuZCBURVNUIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBpcworaWxsZWdhbC4gIElu
IHRlc3QgY2FzZSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UsCit0ZXN0IERl
ZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwgaXMgZGVmaW5lZCB1c2luZyBURVNUX0YgYnV0
Cit0ZXN0IERlZmluZWRVc2luZ1RFU1QgaXMgZGVmaW5lZCB1c2luZyBURVNULiAgWW91IHByb2Jh
Ymx5Cit3YW50IHRvIGNoYW5nZSB0aGUgVEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0byBhbm90
aGVyIHRlc3QKK2Nhc2UuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlM
RUQgIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2lu
Z1RFU1RfRkFuZFNob3VsZEZhaWwKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttOCB0ZXN0cyBmcm9t
IEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKKxtbMDszMm1b
ICAgICAgIE9LIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9i
YWxWYXJpYWJsZXMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJl
VGVzdC5DYW5SZWZlcmVuY2VMb2NhbFZhcmlhYmxlcworG1swOzMybVsgICAgICAgT0sgXSAbW21F
eHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVzCisbWzA7
MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVu
VGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQorG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUK
KxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1do
ZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3Qu
Y2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAw
IGZhaWx1cmVzCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZh
aWx1cmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5G
YWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKKyhleHBlY3RpbmcgYSBmYWlsdXJl
KQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAg
QWN0dWFsOiAyIGZhaWx1cmVzCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0
YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMS4KK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24t
ZmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMi4KK1N0
YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVy
ZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCisoZXhwZWN0
aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRh
bCBmYWlsdXJlCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhdGFs
IGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFs
RmFpbHVyZQorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3Qu
Y2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAw
IGZhaWx1cmVzCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCisb
WzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVu
U3RhdGVtZW50VGhyb3dzCisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1
cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCisgIEFjdHVhbDogMCBmYWlsdXJlcwor
U3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCisbWzA7MzJtWy0tLS0t
LS0tLS1dIBtbbTggdGVzdHMgZnJvbSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0CisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFy
aWFibGVzCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2Fu
UmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZh
dGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxTdGF0aWNWYXJpYWJsZXMKKxtbMDszMm1b
ICAgICAgIE9LIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFN0
YXRpY1ZhcmlhYmxlcworG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKKxtbMDszMm1bICAgICAgIE9L
IF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1doZW5UaGVyZUlzT25lRmF0YWxG
YWlsdXJlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFp
bHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlCisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0
LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZh
aWx1cmVzCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
RXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKKxtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVy
ZUFyZVR3b0ZhdGFsRmFpbHVyZXMKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6Izog
RmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDIgZmFpbHVyZXMK
K2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4
cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQg
ZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVz
dC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMKKxtbMDszMm1bIFJVTiAgICAgIF0g
G1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWls
dXJlCisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVk
OiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6
IzogTm9uLWZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
LgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKwor
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRo
ZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCisoZXhwZWN0aW5nIGEgZmFp
bHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKKyAg
QWN0dWFsOiAwIGZhaWx1cmVzCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1
cm5zCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNX
aGVuU3RhdGVtZW50VGhyb3dzCisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZh
aWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZhaWx1cmVzCitT
dGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKKxtbMDszMm1bLS0tLS0tLS0t
LV0gG1ttMiB0ZXN0cyBmcm9tIFR5cGVkVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtb
MDszMm1bIFJVTiAgICAgIF0gG1ttVHlwZWRUZXN0LzAuU3VjY2VzcworG1swOzMybVsgICAgICAg
T0sgXSAbW21UeXBlZFRlc3QvMC5TdWNjZXNzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVR5cGVk
VGVzdC8wLkZhaWx1cmUKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4
cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICBUeXBlUGFyYW0oKQorICAg
IFdoaWNoIGlzOiAwCitFeHBlY3RlZCBmYWlsdXJlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVHlwZWRUZXN0LzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBh
cmFtID0gaW50CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBUeXBlZFRlc3RX
aXRoTmFtZXMvY2hhcjAsIHdoZXJlIFR5cGVQYXJhbSA9IGNoYXIKKxtbMDszMm1bIFJVTiAgICAg
IF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVzL2NoYXIwLlN1Y2Nlc3MKKxtbMDszMm1bICAgICAgIE9L
IF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVzL2NoYXIwLlN1Y2Nlc3MKKxtbMDszMm1bIFJVTiAgICAg
IF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVzL2NoYXIwLkZhaWx1cmUKK2dvb2dsZXRlc3Qtb3V0cHV0
LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisb
WzA7MzFtWyAgRkFJTEVEICBdIBtbbVR5cGVkVGVzdFdpdGhOYW1lcy9jaGFyMC5GYWlsdXJlLCB3
aGVyZSBUeXBlUGFyYW0gPSBjaGFyCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJv
bSBUeXBlZFRlc3RXaXRoTmFtZXMvaW50MSwgd2hlcmUgVHlwZVBhcmFtID0gaW50CisbWzA7MzJt
WyBSVU4gICAgICBdIBtbbVR5cGVkVGVzdFdpdGhOYW1lcy9pbnQxLlN1Y2Nlc3MKKxtbMDszMm1b
ICAgICAgIE9LIF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVzL2ludDEuU3VjY2VzcworG1swOzMybVsg
UlVOICAgICAgXSAbW21UeXBlZFRlc3RXaXRoTmFtZXMvaW50MS5GYWlsdXJlCitnb29nbGV0ZXN0
LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK1N0YWNrIHRyYWNlOiAob21pdHRl
ZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3RXaXRoTmFtZXMvaW50MS5GYWls
dXJlLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0
cyBmcm9tIFVuc2lnbmVkL1R5cGVkVGVzdFAvMCwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQg
Y2hhcgorG1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuU3VjY2Vz
cworG1swOzMybVsgICAgICAgT0sgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuU3VjY2Vzcwor
G1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZQorZ29v
Z2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2Yg
dGhlc2UgdmFsdWVzOgorICAxVQorICAgIFdoaWNoIGlzOiAxCisgIFR5cGVQYXJhbSgpCisgICAg
V2hpY2ggaXM6ICdcMCcKK0V4cGVjdGVkIGZhaWx1cmUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkK
KworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZSwg
d2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgorG1swOzMybVstLS0tLS0tLS0tXSAbW20y
IHRlc3RzIGZyb20gVW5zaWduZWQvVHlwZWRUZXN0UC8xLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNp
Z25lZCBpbnQKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1
Y2Nlc3MKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1Y2Nl
c3MKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUK
K2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5
IG9mIHRoZXNlIHZhbHVlczoKKyAgMVUKKyAgICBXaGljaCBpczogMQorICBUeXBlUGFyYW0oKQor
ICAgIFdoaWNoIGlzOiAwCitFeHBlY3RlZCBmYWlsdXJlCitTdGFjayB0cmFjZTogKG9taXR0ZWQp
CisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUs
IHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAorG1swOzMybVstLS0tLS0tLS0tXSAbW20y
IHRlc3RzIGZyb20gVW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRDaGFyMCwg
d2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgorG1swOzMybVsgUlVOICAgICAgXSAbW21V
bnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZENoYXIwLlN1Y2Nlc3MKKxtbMDsz
Mm1bICAgICAgIE9LIF0gG1ttVW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRD
aGFyMC5TdWNjZXNzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9U
eXBlZFRlc3RQL3Vuc2lnbmVkQ2hhcjAuRmFpbHVyZQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8u
Y2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxVQor
ICAgIFdoaWNoIGlzOiAxCisgIFR5cGVQYXJhbSgpCisgICAgV2hpY2ggaXM6ICdcMCcKK0V4cGVj
dGVkIGZhaWx1cmUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21VbnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZENoYXIwLkZhaWx1cmUs
IHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1tt
MiB0ZXN0cyBmcm9tIFVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkSW50MSwg
d2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVu
c2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkSW50MS5TdWNjZXNzCisbWzA7MzJt
WyAgICAgICBPSyBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkSW50
MS5TdWNjZXNzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBl
ZFRlc3RQL3Vuc2lnbmVkSW50MS5GYWlsdXJlCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzoj
OiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDFVCisgICAg
V2hpY2ggaXM6IDEKKyAgVHlwZVBhcmFtKCkKKyAgICBXaGljaCBpczogMAorRXhwZWN0ZWQgZmFp
bHVyZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVVu
c2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkSW50MS5GYWlsdXJlLCB3aGVyZSBU
eXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttNCB0ZXN0cyBm
cm9tIEV4cGVjdEZhaWx1cmVUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1
cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5j
YzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCisgIEFjdHVhbDoKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IFN1Y2Nlc3M6CitTdWNjZWVkZWQKK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKyhleHBlY3RpbmcgMSBm
YWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQor
ICBBY3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVy
ZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisoZXhwZWN0aW5nIDEgZmFpbHVy
ZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUgY29udGFp
bmluZyAiU29tZSBvdGhlciBmYXRhbCBmYWlsdXJlIGV4cGVjdGVkLiIKKyAgQWN0dWFsOgorZ29v
Z2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0
ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3Qu
RXhwZWN0RmF0YWxGYWlsdXJlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVU
ZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5j
YzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6Citn
b29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBTdWNjZXNzOgorU3VjY2VlZGVkCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisoZXhwZWN0aW5n
IDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBm
YWlsdXJlCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhdGFsIGZh
aWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisoZXhwZWN0aW5nIDEgZmFpbHVy
ZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlIGNv
bnRhaW5pbmcgIlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1cmUuIgorICBBY3R1YWw6Citnb29n
bGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhw
ZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworU3Rh
Y2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1
cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBl
Y3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKKyhleHBlY3Rpbmcg
MSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVy
ZQorICBBY3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBTdWNjZXNzOgorU3Vj
Y2VlZGVkCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVk
KQorCisoZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVk
OiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6
IzogTm9uLWZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
LgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKwor
KGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBm
YXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBlY3Rl
ZC4iCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhdGFsIGZhaWx1
cmU6CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0
ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcworG1swOzMy
bVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVP
bkFsbFRocmVhZHMKKyhleHBlY3RpbmcgMSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQor
RXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogU3VjY2VzczoKK1N1Y2NlZWRlZAorU3RhY2sgdHJhY2U6IChvbWl0dGVk
KQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworKGV4cGVjdGluZyAxIGZhaWx1cmUpCitn
dGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1
YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgorRmFpbGVk
CitFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0
YWNrIHRyYWNlOiAob21pdHRlZCkKKworKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzoj
OiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21l
IG90aGVyIG5vbi1mYXRhbCBmYWlsdXJlLiIKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQt
dGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRh
bCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21p
dHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RO
b25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0
cyBmcm9tIEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0g
G1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKKyhleHBl
Y3RpbmcgMiBmYWlsdXJlcykKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUK
K0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkK
KworZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1
YWw6IDAgZmFpbHVyZXMKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQor
G1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVj
dE5vbkZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyAyIGZhaWx1cmVzKQorZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVy
ZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0
ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZhaWx1cmVzCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhU
aHJlYWRzVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1tt
MSB0ZXN0IGZyb20gU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0CisbWzA7MzJt
WyBSVU4gICAgICBdIBtbbVNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdC5JbnRl
cmNlcHRPbmx5Q3VycmVudFRocmVhZAorKGV4cGVjdGluZyAyIGZhaWx1cmVzKQorZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYXRhbCBmYWls
dXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5j
YzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgorU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNjb3BlZEZha2VUZXN0
UGFydFJlc3VsdFJlcG9ydGVyVGVzdC5JbnRlcmNlcHRPbmx5Q3VycmVudFRocmVhZAorG1swOzMy
bVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBQcmludGluZ0ZhaWxpbmdQYXJhbXMvRmFpbGlu
Z1BhcmFtVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21QcmludGluZ0ZhaWxpbmdQYXJhbXMv
RmFpbGluZ1BhcmFtVGVzdC5GYWlscy8wCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBG
YWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAgR2V0UGFy
YW0oKQorICAgIFdoaWNoIGlzOiAyCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttUHJpbnRpbmdGYWlsaW5nUGFyYW1zL0ZhaWxpbmdQYXJhbVRlc3QuRmFp
bHMvMCwgd2hlcmUgR2V0UGFyYW0oKSA9IDIKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0
cyBmcm9tIFByaW50aW5nU3RyaW5ncy9QYXJhbVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1tt
UHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5TdWNjZXNzL2EKKxtbMDszMm1bICAgICAgIE9LIF0g
G1ttUHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5TdWNjZXNzL2EKKxtbMDszMm1bIFJVTiAgICAg
IF0gG1ttUHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5GYWlsdXJlL2EKK2dvb2dsZXRlc3Qtb3V0
cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVl
czoKKyAgImIiCisgIEdldFBhcmFtKCkKKyAgICBXaGljaCBpczogImEiCitFeHBlY3RlZCBmYWls
dXJlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttUHJp
bnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5GYWlsdXJlL2EsIHdoZXJlIEdldFBhcmFtKCkgPSAiYSIK
KxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3du
CitCYXJFbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuCitnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgor
U3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitGb29FbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxs
ZWQuCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVj
dGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMm1bPT09
PT09PT09PV0gG1ttNzYgdGVzdHMgZnJvbSAzNCB0ZXN0IGNhc2VzIHJhbi4KKxtbMDszMm1bICBQ
QVNTRUQgIF0gG1ttMjYgdGVzdHMuCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbTUwIHRlc3RzLCBs
aXN0ZWQgYmVsb3c6CisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbmZhdGFsRmFpbHVyZVRlc3Qu
RXNjYXBlc1N0cmluZ09wZXJhbmRzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbmZhdGFsRmFp
bHVyZVRlc3QuRGlmZkZvckxvbmdTdHJpbmdzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFs
RmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCisbWzA7MzFtWyAgRkFJTEVEICBd
IBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJy
b3V0aW5lCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUxvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xv
Z2dpbmdBbmRBc3NlcnRpb25zCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRl
c3QuQWNjZXB0ZWRWYWx1ZXMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVz
dC5PYmV5c1Njb3BlcworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lldv
cmtzSW5Mb29wCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJ
blN1YnJvdXRpbmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5C
ZU5lc3RlZAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlUmVw
ZWF0ZWQKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0NvbmN1
cnJlbnRseQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TY29wZWRUcmFjZVRlc3QuV2l0aEV4cGxp
Y2l0RmlsZUFuZExpbmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5G
aXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCisbWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5D
b25zdHJ1Y3RvcgorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJblNldFVw
VGVzdC5GYWlsdXJlSW5TZXRVcAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVJ
blNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21BZGRGYWls
dXJlQXRUZXN0Lk1lc3NhZ2VDb250YWluc1NwZWNpZmllZEZpbGVBbmRMaW5lTnVtYmVyCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwKKxtb
MDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbFRv
bworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1l
VGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAorG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5n
VEVTVEFuZFNob3VsZEZhaWwKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVEVTVF9iZWZvcmVfVEVT
VF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwKKxtb
MDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5U
aGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKKxtb
MDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5U
aGVyZUlzT25lRmF0YWxGYWlsdXJlCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZh
dGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucworG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93
cworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hl
blRoZXJlSXNOb0ZhdGFsRmFpbHVyZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRh
bEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcworG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVO
b25mYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4
cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbVR5cGVkVGVzdC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IGludAor
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3RXaXRoTmFtZXMvY2hhcjAuRmFpbHVyZSwg
d2hlcmUgVHlwZVBhcmFtID0gY2hhcgorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3RX
aXRoTmFtZXMvaW50MS5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJh
bSA9IHVuc2lnbmVkIGNoYXIKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRU
ZXN0UC8xLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAorG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21VbnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZENoYXIw
LkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKKxtbMDszMW1bICBGQUlM
RUQgIF0gG1ttVW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRJbnQxLkZhaWx1
cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAorG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQg
IF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhy
ZWFkcworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25G
YXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFp
bHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQg
IF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJU
ZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVBy
aW50aW5nRmFpbGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1UZXN0LkZhaWxzLzAsIHdoZXJlIEdldFBh
cmFtKCkgPSAyCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVByaW50aW5nU3RyaW5ncy9QYXJhbVRl
c3QuRmFpbHVyZS9hLCB3aGVyZSBHZXRQYXJhbSgpID0gImEiCisKKzUwIEZBSUxFRCBURVNUUwor
G1swOzMzbSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNUCisKKxtbbU5vdGU6IEdvb2dsZSBUZXN0
IGZpbHRlciA9IEZhdGFsRmFpbHVyZVRlc3QuKjpMb2dnaW5nVGVzdC4qCitbPT09PT09PT09PV0g
UnVubmluZyA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2VzLgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0
ZXN0IGVudmlyb25tZW50IHNldC11cC4KK1stLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0YWxG
YWlsdXJlVGVzdAorWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5T
dWJyb3V0aW5lCisoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCitnb29n
bGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0
aGVzZSB2YWx1ZXM6CisgIDEKKyAgeAorICAgIFdoaWNoIGlzOiAyCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vi
cm91dGluZSAoPyBtcykKK1sgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVy
ZUluTmVzdGVkU3Vicm91dGluZQorKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBi
ZSAxKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1
YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxCisgIHgKKyAgICBXaGljaCBpczogMgorU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCitbICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZh
aWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUgKD8gbXMpCitbIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJl
VGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKKyhleHBlY3RpbmcgYSBmYWlsdXJlIG9u
IGZhbHNlKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorVmFsdWUgb2Y6
IGZhbHNlCisgIEFjdHVhbDogZmFsc2UKK0V4cGVjdGVkOiB0cnVlCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUlu
U3Vicm91dGluZSAoPyBtcykKK1stLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJl
VGVzdCAoPyBtcyB0b3RhbCkKKworWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExvZ2dpbmdUZXN0
CitbIFJVTiAgICAgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlv
bnMKKyhleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKQoraSA9PSAwCitpID09
IDEKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAoMykg
Pj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgOQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitpID09
IDIKK2kgPT0gMworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0
ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA2CitTdGFjayB0cmFjZTogKG9taXR0ZWQp
CisKK1sgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0
aW9ucyAoPyBtcykKK1stLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBMb2dnaW5nVGVzdCAoPyBtcyB0
b3RhbCkKKworWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgor
Wz09PT09PT09PT1dIDQgdGVzdHMgZnJvbSAyIHRlc3QgY2FzZXMgcmFuLiAoPyBtcyB0b3RhbCkK
K1sgIFBBU1NFRCAgXSAwIHRlc3RzLgorWyAgRkFJTEVEICBdIDQgdGVzdHMsIGxpc3RlZCBiZWxv
dzoKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGlu
ZQorWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJy
b3V0aW5lCitbICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1
YnJvdXRpbmUKK1sgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5k
QXNzZXJ0aW9ucworCisgNCBGQUlMRUQgVEVTVFMKK05vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9
ICpESVNBQkxFRF8qCitbPT09PT09PT09PV0gUnVubmluZyAxIHRlc3QgZnJvbSAxIHRlc3QgY2Fz
ZS4KK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCitbLS0tLS0t
LS0tLV0gMSB0ZXN0IGZyb20gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0CitbIFJVTiAgICAgIF0g
RGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0LkRJU0FCTEVEX0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxh
Z1N1cHByZXNzZXNXYXJuaW5nCitbICAgICAgIE9LIF0gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0
LkRJU0FCTEVEX0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZ1N1cHByZXNzZXNXYXJuaW5nCitbLS0t
LS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCitbPT09PT09PT09PV0g
MSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UgcmFuLgorWyAgUEFTU0VEICBdIDEgdGVzdC4KK05vdGU6
IEdvb2dsZSBUZXN0IGZpbHRlciA9IFBhc3NpbmdUZXN0LioKK05vdGU6IFRoaXMgaXMgdGVzdCBz
aGFyZCAyIG9mIDIuCitbPT09PT09PT09PV0gUnVubmluZyAxIHRlc3QgZnJvbSAxIHRlc3QgY2Fz
ZS4KK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCitbLS0tLS0t
LS0tLV0gMSB0ZXN0IGZyb20gUGFzc2luZ1Rlc3QKK1sgUlVOICAgICAgXSBQYXNzaW5nVGVzdC5Q
YXNzaW5nVGVzdDIKK1sgICAgICAgT0sgXSBQYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDIKK1stLS0t
LS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KK1s9PT09PT09PT09XSAx
IHRlc3QgZnJvbSAxIHRlc3QgY2FzZSByYW4uCitbICBQQVNTRUQgIF0gMSB0ZXN0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0
LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJkNjllMzUzYTE5ZTM2OTQ2NTMzYmY1ZjdlMGEyYzkyNDZmN2RjZTcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3Qtb3V0cHV0LXRlc3QucHkKQEAgLTAsMCArMSwzNDcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorIworIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlRlc3RzIHRoZSB0ZXh0IG91dHB1dCBvZiBHb29n
bGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrLgorCitUbyB1cGRhdGUgdGhlIGdv
bGRlbiBmaWxlOgorZ29vZ2xldGVzdF9vdXRwdXRfdGVzdC5weSAtLWJ1aWxkX2Rpcj1CVUlMRC9E
SVIgLS1nZW5nb2xkZW4KK3doZXJlIEJVSUxEL0RJUiBjb250YWlucyB0aGUgYnVpbHQgZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8gZmlsZS4KK2dvb2dsZXRlc3Rfb3V0cHV0X3Rlc3QucHkgLS1nZW5n
b2xkZW4KK2dvb2dsZXRlc3Rfb3V0cHV0X3Rlc3QucHkKKyIiIgorCitpbXBvcnQgZGlmZmxpYgor
aW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxz
CisKKworIyBUaGUgZmxhZyBmb3IgZ2VuZXJhdGluZyB0aGUgZ29sZGVuIGZpbGUKK0dFTkdPTERF
Tl9GTEFHID0gJy0tZ2VuZ29sZGVuJworQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSX05BTUUgPSAn
R1RFU1RfQ0FUQ0hfRVhDRVBUSU9OUycKKworIyBUaGUgZmxhZyBpbmRpY2F0aW5nIHN0YWNrdHJh
Y2VzIGFyZSBub3Qgc3VwcG9ydGVkCitOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRyA9ICctLW5v
X3N0YWNrdHJhY2Vfc3VwcG9ydCcKKworSVNfTElOVVggPSBvcy5uYW1lID09ICdwb3NpeCcgYW5k
IG9zLnVuYW1lKClbMF0gPT0gJ0xpbnV4JworSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250Jwor
CisjIEZJWE1FOiByZW1vdmUgdGhlIF9saW4gc3VmZml4LgorR09MREVOX05BTUUgPSAnZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdC1nb2xkZW4tbGluLnR4dCcKKworUFJPR1JBTV9QQVRIID0gZ3Rlc3Rf
dGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
JykKKworIyBBdCBsZWFzdCBvbmUgY29tbWFuZCB3ZSBleGVyY2lzZSBtdXN0IG5vdCBoYXZlIHRo
ZQorIyAnaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzJyBhcmd1bWVu
dC4KK0NPTU1BTkRfTElTVF9URVNUUyA9ICh7fSwgW1BST0dSQU1fUEFUSCwgJy0tZ3Rlc3RfbGlz
dF90ZXN0cyddKQorQ09NTUFORF9XSVRIX0NPTE9SID0gKHt9LCBbUFJPR1JBTV9QQVRILCAnLS1n
dGVzdF9jb2xvcj15ZXMnXSkKK0NPTU1BTkRfV0lUSF9USU1FID0gKHt9LCBbUFJPR1JBTV9QQVRI
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ndGVzdF9wcmludF90aW1lJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hv
Y190ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICctLWd0ZXN0X2ZpbHRlcj1GYXRh
bEZhaWx1cmVUZXN0Lio6TG9nZ2luZ1Rlc3QuKiddKQorQ09NTUFORF9XSVRIX0RJU0FCTEVEID0g
KAorICAgIHt9LCBbUFJPR1JBTV9QQVRILAorICAgICAgICAgJy0tZ3Rlc3RfYWxzb19ydW5fZGlz
YWJsZWRfdGVzdHMnLAorICAgICAgICAgJ2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2Fk
X2hvY190ZXN0cycsCisgICAgICAgICAnLS1ndGVzdF9maWx0ZXI9KkRJU0FCTEVEXyonXSkKK0NP
TU1BTkRfV0lUSF9TSEFSRElORyA9ICgKKyAgICB7J0dURVNUX1NIQVJEX0lOREVYJzogJzEnLCAn
R1RFU1RfVE9UQUxfU0hBUkRTJzogJzInfSwKKyAgICBbUFJPR1JBTV9QQVRILAorICAgICAnaW50
ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzJywKKyAgICAgJy0tZ3Rlc3Rf
ZmlsdGVyPVBhc3NpbmdUZXN0LionXSkKKworR09MREVOX1BBVEggPSBvcy5wYXRoLmpvaW4oZ3Rl
c3RfdGVzdF91dGlscy5HZXRTb3VyY2VEaXIoKSwgR09MREVOX05BTUUpCisKKworZGVmIFRvVW5p
eExpbmVFbmRpbmcocyk6CisgICIiIkNoYW5nZXMgYWxsIFdpbmRvd3MvTWFjIGxpbmUgZW5kaW5n
cyBpbiBzIHRvIFVOSVggbGluZSBlbmRpbmdzLiIiIgorCisgIHJldHVybiBzLnJlcGxhY2UoJ1xy
XG4nLCAnXG4nKS5yZXBsYWNlKCdccicsICdcbicpCisKKworZGVmIFJlbW92ZUxvY2F0aW9ucyh0
ZXN0X291dHB1dCk6CisgICIiIlJlbW92ZXMgYWxsIGZpbGUgbG9jYXRpb24gaW5mbyBmcm9tIGEg
R29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4KKworICBBcmdzOgorICAgICAgIHRlc3Rfb3V0
cHV0OiAgdGhlIG91dHB1dCBvZiBhIEdvb2dsZSBUZXN0IHByb2dyYW0uCisKKyAgUmV0dXJuczoK
KyAgICAgICBvdXRwdXQgd2l0aCBhbGwgZmlsZSBsb2NhdGlvbiBpbmZvIChpbiB0aGUgZm9ybSBv
ZgorICAgICAgICdESVJFQ1RPUlkvRklMRV9OQU1FOkxJTkVfTlVNQkVSOiAnb3IKKyAgICAgICAn
RElSRUNUT1JZXFxGSUxFX05BTUUoTElORV9OVU1CRVIpOiAnKSByZXBsYWNlZCBieQorICAgICAg
ICdGSUxFX05BTUU6IzogJy4KKyAgIiIiCisKKyAgcmV0dXJuIHJlLnN1YihyJy4qWy9cXF0oKGdv
b2dsZXRlc3Qtb3V0cHV0LXRlc3RffGd0ZXN0KS5jYykoXDpcZCt8XChcZCtcKSlcOiAnLAorICAg
ICAgICAgICAgICAgIHInXDE6IzogJywgdGVzdF9vdXRwdXQpCisKKworZGVmIFJlbW92ZVN0YWNr
VHJhY2VEZXRhaWxzKG91dHB1dCk6CisgICIiIlJlbW92ZXMgYWxsIHN0YWNrIHRyYWNlcyBmcm9t
IGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4iIiIKKworICAjICo/IG1lYW5zICJmaW5k
IHRoZSBzaG9ydGVzdCBzdHJpbmcgdGhhdCBtYXRjaGVzIi4KKyAgcmV0dXJuIHJlLnN1YihyJ1N0
YWNrIHRyYWNlOigufFxuKSo/XG5cbicsCisgICAgICAgICAgICAgICAgJ1N0YWNrIHRyYWNlOiAo
b21pdHRlZClcblxuJywgb3V0cHV0KQorCisKK2RlZiBSZW1vdmVTdGFja1RyYWNlcyhvdXRwdXQp
OgorICAiIiJSZW1vdmVzIGFsbCB0cmFjZXMgb2Ygc3RhY2sgdHJhY2VzIGZyb20gYSBHb29nbGUg
VGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgorCisgICMgKj8gbWVhbnMgImZpbmQgdGhlIHNob3J0
ZXN0IHN0cmluZyB0aGF0IG1hdGNoZXMiLgorICByZXR1cm4gcmUuc3ViKHInU3RhY2sgdHJhY2U6
KC58XG4pKj9cblxuJywgJycsIG91dHB1dCkKKworCitkZWYgUmVtb3ZlVGltZShvdXRwdXQpOgor
ICAiIiJSZW1vdmVzIGFsbCB0aW1lIGluZm9ybWF0aW9uIGZyb20gYSBHb29nbGUgVGVzdCBwcm9n
cmFtJ3Mgb3V0cHV0LiIiIgorCisgIHJldHVybiByZS5zdWIocidcKFxkKyBtcycsICcoPyBtcycs
IG91dHB1dCkKKworCitkZWYgUmVtb3ZlVHlwZUluZm9EZXRhaWxzKHRlc3Rfb3V0cHV0KToKKyAg
IiIiUmVtb3ZlcyBjb21waWxlci1zcGVjaWZpYyB0eXBlIGluZm8gZnJvbSBHb29nbGUgVGVzdCBw
cm9ncmFtJ3Mgb3V0cHV0LgorCisgIEFyZ3M6CisgICAgICAgdGVzdF9vdXRwdXQ6ICB0aGUgb3V0
cHV0IG9mIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbS4KKworICBSZXR1cm5zOgorICAgICAgIG91dHB1
dCB3aXRoIHR5cGUgaW5mb3JtYXRpb24gbm9ybWFsaXplZCB0byBjYW5vbmljYWwgZm9ybS4KKyAg
IiIiCisKKyAgIyBzb21lIGNvbXBpbGVycyBvdXRwdXQgdGhlIG5hbWUgb2YgdHlwZSAndW5zaWdu
ZWQgaW50JyBhcyAndW5zaWduZWQnCisgIHJldHVybiByZS5zdWIocid1bnNpZ25lZCBpbnQnLCAn
dW5zaWduZWQnLCB0ZXN0X291dHB1dCkKKworCitkZWYgTm9ybWFsaXplVG9DdXJyZW50UGxhdGZv
cm0odGVzdF9vdXRwdXQpOgorICAiIiJOb3JtYWxpemVzIHBsYXRmb3JtIHNwZWNpZmljIG91dHB1
dCBkZXRhaWxzIGZvciBlYXNpZXIgY29tcGFyaXNvbi4iIiIKKworICBpZiBJU19XSU5ET1dTOgor
ICAgICMgUmVtb3ZlcyB0aGUgY29sb3IgaW5mb3JtYXRpb24gdGhhdCBpcyBub3QgcHJlc2VudCBv
biBXaW5kb3dzLgorICAgIHRlc3Rfb3V0cHV0ID0gcmUuc3ViKCdceDFiXFxbKDA7M1xkKT9tJywg
JycsIHRlc3Rfb3V0cHV0KQorICAgICMgQ2hhbmdlcyBmYWlsdXJlIG1lc3NhZ2UgaGVhZGVycyBp
bnRvIHRoZSBXaW5kb3dzIGZvcm1hdC4KKyAgICB0ZXN0X291dHB1dCA9IHJlLnN1YihyJzogRmFp
bHVyZVxuJywgcic6IGVycm9yOiAnLCB0ZXN0X291dHB1dCkKKyAgICAjIENoYW5nZXMgZmlsZShs
aW5lX251bWJlcikgdG8gZmlsZTpsaW5lX251bWJlci4KKyAgICB0ZXN0X291dHB1dCA9IHJlLnN1
YihyJygoXHd8XC4pKylcKChcZCspXCk6JywgcidcMTpcMzonLCB0ZXN0X291dHB1dCkKKworICBy
ZXR1cm4gdGVzdF9vdXRwdXQKKworCitkZWYgUmVtb3ZlVGVzdENvdW50cyhvdXRwdXQpOgorICAi
IiJSZW1vdmVzIHRlc3QgY291bnRzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0
LiIiIgorCisgIG91dHB1dCA9IHJlLnN1YihyJ1xkKyB0ZXN0cz8sIGxpc3RlZCBiZWxvdycsCisg
ICAgICAgICAgICAgICAgICAnPyB0ZXN0cywgbGlzdGVkIGJlbG93Jywgb3V0cHV0KQorICBvdXRw
dXQgPSByZS5zdWIocidcZCsgRkFJTEVEIFRFU1RTJywKKyAgICAgICAgICAgICAgICAgICc/IEZB
SUxFRCBURVNUUycsIG91dHB1dCkKKyAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIHRlc3RzPyBmcm9t
IFxkKyB0ZXN0IGNhc2VzPycsCisgICAgICAgICAgICAgICAgICAnPyB0ZXN0cyBmcm9tID8gdGVz
dCBjYXNlcycsIG91dHB1dCkKKyAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIHRlc3RzPyBmcm9tIChb
YS16QS1aX10pJywKKyAgICAgICAgICAgICAgICAgIHInPyB0ZXN0cyBmcm9tIFwxJywgb3V0cHV0
KQorICByZXR1cm4gcmUuc3ViKHInXGQrIHRlc3RzP1wuJywgJz8gdGVzdHMuJywgb3V0cHV0KQor
CisKK2RlZiBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCBwYXR0ZXJuKToKKyAgIiIi
UmVtb3ZlcyBvdXRwdXQgb2Ygc3BlY2lmaWVkIHRlc3RzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9n
cmFtJ3Mgb3V0cHV0LgorCisgIFRoaXMgZnVuY3Rpb24gc3RyaXBzIG5vdCBvbmx5IHRoZSBiZWdp
bm5pbmcgYW5kIHRoZSBlbmQgb2YgYSB0ZXN0IGJ1dCBhbHNvCisgIGFsbCBvdXRwdXQgaW4gYmV0
d2Vlbi4KKworICBBcmdzOgorICAgIHRlc3Rfb3V0cHV0OiAgICAgICBBIHN0cmluZyBjb250YWlu
aW5nIHRoZSB0ZXN0IG91dHB1dC4KKyAgICBwYXR0ZXJuOiAgICAgICAgICAgQSByZWdleCBzdHJp
bmcgdGhhdCBtYXRjaGVzIG5hbWVzIG9mIHRlc3QgY2FzZXMgb3IKKyAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdHMgdG8gcmVtb3ZlLgorCisgIFJldHVybnM6CisgICAgQ29udGVudHMgb2YgdGVz
dF9vdXRwdXQgd2l0aCB0ZXN0cyB3aG9zZSBuYW1lcyBtYXRjaCBwYXR0ZXJuIHJlbW92ZWQuCisg
ICIiIgorCisgIHRlc3Rfb3V0cHV0ID0gcmUuc3ViKAorICAgICAgcicuKlxbIFJVTiAgICAgIFxd
IC4qJXMoLnxcbikqP1xbKCAgRkFJTEVEICB8ICAgICAgIE9LIClcXSAuKiVzLipcbicgJSAoCisg
ICAgICAgICAgcGF0dGVybiwgcGF0dGVybiksCisgICAgICAnJywKKyAgICAgIHRlc3Rfb3V0cHV0
KQorICByZXR1cm4gcmUuc3ViKHInLiolcy4qXG4nICUgcGF0dGVybiwgJycsIHRlc3Rfb3V0cHV0
KQorCisKK2RlZiBOb3JtYWxpemVPdXRwdXQob3V0cHV0KToKKyAgIiIiTm9ybWFsaXplcyBvdXRw
dXQgKHRoZSBvdXRwdXQgb2YgZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uZXhlKS4iIiIKKworICBv
dXRwdXQgPSBUb1VuaXhMaW5lRW5kaW5nKG91dHB1dCkKKyAgb3V0cHV0ID0gUmVtb3ZlTG9jYXRp
b25zKG91dHB1dCkKKyAgb3V0cHV0ID0gUmVtb3ZlU3RhY2tUcmFjZURldGFpbHMob3V0cHV0KQor
ICBvdXRwdXQgPSBSZW1vdmVUaW1lKG91dHB1dCkKKyAgcmV0dXJuIG91dHB1dAorCisKK2RlZiBH
ZXRTaGVsbENvbW1hbmRPdXRwdXQoZW52X2NtZCk6CisgICIiIlJ1bnMgYSBjb21tYW5kIGluIGEg
c3ViLXByb2Nlc3MsIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQgaW4gYSBzdHJpbmcuCisKKyAgQXJn
czoKKyAgICBlbnZfY21kOiBUaGUgc2hlbGwgY29tbWFuZC4gQSAyLXR1cGxlIHdoZXJlIGVsZW1l
bnQgMCBpcyBhIGRpY3Qgb2YgZXh0cmEKKyAgICAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJs
ZXMgdG8gc2V0LCBhbmQgZWxlbWVudCAxIGlzIGEgc3RyaW5nIHdpdGgKKyAgICAgICAgICAgICB0
aGUgY29tbWFuZCBhbmQgYW55IGZsYWdzLgorCisgIFJldHVybnM6CisgICAgQSBzdHJpbmcgd2l0
aCB0aGUgY29tbWFuZCdzIGNvbWJpbmVkIHN0YW5kYXJkIGFuZCBkaWFnbm9zdGljIG91dHB1dC4K
KyAgIiIiCisKKyAgIyBTcGF3bnMgY21kIGluIGEgc3ViLXByb2Nlc3MsIGFuZCBnZXRzIGl0cyBz
dGFuZGFyZCBJL08gZmlsZSBvYmplY3RzLgorICAjIFNldCBhbmQgc2F2ZSB0aGUgZW52aXJvbm1l
bnQgcHJvcGVybHkuCisgIGVudmlyb24gPSBvcy5lbnZpcm9uLmNvcHkoKQorICBlbnZpcm9uLnVw
ZGF0ZShlbnZfY21kWzBdKQorICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGVudl9j
bWRbMV0sIGVudj1lbnZpcm9uKQorCisgIHJldHVybiBwLm91dHB1dAorCisKK2RlZiBHZXRDb21t
YW5kT3V0cHV0KGVudl9jbWQpOgorICAiIiJSdW5zIGEgY29tbWFuZCBhbmQgcmV0dXJucyBpdHMg
b3V0cHV0IHdpdGggYWxsIGZpbGUgbG9jYXRpb24KKyAgaW5mbyBzdHJpcHBlZCBvZmYuCisKKyAg
QXJnczoKKyAgICBlbnZfY21kOiAgVGhlIHNoZWxsIGNvbW1hbmQuIEEgMi10dXBsZSB3aGVyZSBl
bGVtZW50IDAgaXMgYSBkaWN0IG9mIGV4dHJhCisgICAgICAgICAgICAgIGVudmlyb25tZW50IHZh
cmlhYmxlcyB0byBzZXQsIGFuZCBlbGVtZW50IDEgaXMgYSBzdHJpbmcgd2l0aAorICAgICAgICAg
ICAgICB0aGUgY29tbWFuZCBhbmQgYW55IGZsYWdzLgorICAiIiIKKworICAjIERpc2FibGVzIGV4
Y2VwdGlvbiBwb3AtdXBzIG9uIFdpbmRvd3MuCisgIGVudmlyb24sIGNtZGxpbmUgPSBlbnZfY21k
CisgIGVudmlyb24gPSBkaWN0KGVudmlyb24pICAjIEVuc3VyZXMgd2UgYXJlIG1vZGlmeWluZyBh
IGNvcHkuCisgIGVudmlyb25bQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSX05BTUVdID0gJzEnCisg
IHJldHVybiBOb3JtYWxpemVPdXRwdXQoR2V0U2hlbGxDb21tYW5kT3V0cHV0KChlbnZpcm9uLCBj
bWRsaW5lKSkpCisKKworZGVmIEdldE91dHB1dE9mQWxsQ29tbWFuZHMoKToKKyAgIiIiUmV0dXJu
cyBjb25jYXRlbmF0ZWQgb3V0cHV0IGZyb20gc2V2ZXJhbCByZXByZXNlbnRhdGl2ZSBjb21tYW5k
cy4iIiIKKworICByZXR1cm4gKEdldENvbW1hbmRPdXRwdXQoQ09NTUFORF9XSVRIX0NPTE9SKSAr
CisgICAgICAgICAgR2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJVEhfVElNRSkgKworICAgICAg
ICAgIEdldENvbW1hbmRPdXRwdXQoQ09NTUFORF9XSVRIX0RJU0FCTEVEKSArCisgICAgICAgICAg
R2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJVEhfU0hBUkRJTkcpKQorCisKK3Rlc3RfbGlzdCA9
IEdldFNoZWxsQ29tbWFuZE91dHB1dChDT01NQU5EX0xJU1RfVEVTVFMpCitTVVBQT1JUU19ERUFU
SF9URVNUUyA9ICdEZWF0aFRlc3QnIGluIHRlc3RfbGlzdAorU1VQUE9SVFNfVFlQRURfVEVTVFMg
PSAnVHlwZWRUZXN0JyBpbiB0ZXN0X2xpc3QKK1NVUFBPUlRTX1RIUkVBRFMgPSAnRXhwZWN0RmFp
bHVyZVdpdGhUaHJlYWRzVGVzdCcgaW4gdGVzdF9saXN0CitTVVBQT1JUU19TVEFDS19UUkFDRVMg
PSBOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRyBub3QgaW4gc3lzLmFyZ3YKKworQ0FOX0dFTkVS
QVRFX0dPTERFTl9GSUxFID0gKFNVUFBPUlRTX0RFQVRIX1RFU1RTIGFuZAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNVUFBPUlRTX1RZUEVEX1RFU1RTIGFuZAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNVUFBPUlRTX1RIUkVBRFMgYW5kCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU1VQUE9SVFNfU1RBQ0tfVFJBQ0VTKQorCitjbGFzcyBHVGVzdE91dHB1dFRlc3QoZ3Rl
c3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgIGRlZiBSZW1vdmVVbnN1cHBvcnRlZFRlc3RzKHNl
bGYsIHRlc3Rfb3V0cHV0KToKKyAgICBpZiBub3QgU1VQUE9SVFNfREVBVEhfVEVTVFM6CisgICAg
ICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdEZWF0aFRl
c3QnKQorICAgIGlmIG5vdCBTVVBQT1JUU19UWVBFRF9URVNUUzoKKyAgICAgIHRlc3Rfb3V0cHV0
ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwgJ1R5cGVkVGVzdCcpCisgICAgICB0
ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdUeXBlZERlYXRo
VGVzdCcpCisgICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRw
dXQsICdUeXBlUGFyYW1EZWF0aFRlc3QnKQorICAgIGlmIG5vdCBTVVBQT1JUU19USFJFQURTOgor
ICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFeHBlY3RGYWlsdXJlV2l0aFRo
cmVhZHNUZXN0JykKKyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0
X291dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU2NvcGVk
RmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0JykKKyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVt
b3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnV29ya3NDb25jdXJyZW50bHknKQorICAgIGlmIG5vdCBTVVBQT1JUU19T
VEFDS19UUkFDRVM6CisgICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZVN0YWNrVHJhY2VzKHRlc3Rf
b3V0cHV0KQorCisgICAgcmV0dXJuIHRlc3Rfb3V0cHV0CisKKyAgZGVmIHRlc3RPdXRwdXQoc2Vs
Zik6CisgICAgb3V0cHV0ID0gR2V0T3V0cHV0T2ZBbGxDb21tYW5kcygpCisKKyAgICBnb2xkZW5f
ZmlsZSA9IG9wZW4oR09MREVOX1BBVEgsICdyYicpCisgICAgIyBBIG1pcy1jb25maWd1cmVkIHNv
dXJjZSBjb250cm9sIHN5c3RlbSBjYW4gY2F1c2UgXHIgYXBwZWFyIGluIEVPTAorICAgICMgc2Vx
dWVuY2VzIHdoZW4gd2UgcmVhZCB0aGUgZ29sZGVuIGZpbGUgaXJyZXNwZWN0aXZlIG9mIGFuIG9w
ZXJhdGluZworICAgICMgc3lzdGVtIHVzZWQuIFRoZXJlZm9yZSwgd2UgbmVlZCB0byBzdHJpcCB0
aG9zZSBccidzIGZyb20gbmV3bGluZXMKKyAgICAjIHVuY29uZGl0aW9uYWxseS4KKyAgICBnb2xk
ZW4gPSBUb1VuaXhMaW5lRW5kaW5nKGdvbGRlbl9maWxlLnJlYWQoKSkKKyAgICBnb2xkZW5fZmls
ZS5jbG9zZSgpCisKKyAgICAjIFdlIHdhbnQgdGhlIHRlc3QgdG8gcGFzcyByZWdhcmRsZXNzIG9m
IGNlcnRhaW4gZmVhdHVyZXMgYmVpbmcKKyAgICAjIHN1cHBvcnRlZCBvciBub3QuCisKKyAgICAj
IFdlIHN0aWxsIGhhdmUgdG8gcmVtb3ZlIHR5cGUgbmFtZSBzcGVjaWZpY3MgaW4gYWxsIGNhc2Vz
LgorICAgIG5vcm1hbGl6ZWRfYWN0dWFsID0gUmVtb3ZlVHlwZUluZm9EZXRhaWxzKG91dHB1dCkK
KyAgICBub3JtYWxpemVkX2dvbGRlbiA9IFJlbW92ZVR5cGVJbmZvRGV0YWlscyhnb2xkZW4pCisK
KyAgICBpZiBDQU5fR0VORVJBVEVfR09MREVOX0ZJTEU6CisgICAgICBzZWxmLmFzc2VydEVxdWFs
KG5vcm1hbGl6ZWRfZ29sZGVuLCBub3JtYWxpemVkX2FjdHVhbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgJ1xuJy5qb2luKGRpZmZsaWIudW5pZmllZF9kaWZmKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbm9ybWFsaXplZF9nb2xkZW4uc3BsaXQoJ1xuJyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub3JtYWxpemVkX2FjdHVhbC5zcGxpdCgnXG4nKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdnb2xkZW4nLCAnYWN0dWFsJykpKQorICAgIGVsc2U6CisgICAgICBub3Jt
YWxpemVkX2FjdHVhbCA9IE5vcm1hbGl6ZVRvQ3VycmVudFBsYXRmb3JtKAorICAgICAgICAgIFJl
bW92ZVRlc3RDb3VudHMobm9ybWFsaXplZF9hY3R1YWwpKQorICAgICAgbm9ybWFsaXplZF9nb2xk
ZW4gPSBOb3JtYWxpemVUb0N1cnJlbnRQbGF0Zm9ybSgKKyAgICAgICAgICBSZW1vdmVUZXN0Q291
bnRzKHNlbGYuUmVtb3ZlVW5zdXBwb3J0ZWRUZXN0cyhub3JtYWxpemVkX2dvbGRlbikpKQorCisg
ICAgICAjIFRoaXMgY29kZSBpcyB2ZXJ5IGhhbmR5IHdoZW4gZGVidWdnaW5nIGdvbGRlbiBmaWxl
IGRpZmZlcmVuY2VzOgorICAgICAgaWYgb3MuZ2V0ZW52KCdERUJVR19HVEVTVF9PVVRQVVRfVEVT
VCcpOgorICAgICAgICBvcGVuKG9zLnBhdGguam9pbigKKyAgICAgICAgICAgIGd0ZXN0X3Rlc3Rf
dXRpbHMuR2V0U291cmNlRGlyKCksCisgICAgICAgICAgICAnX2dvb2dsZXRlc3Qtb3V0cHV0LXRl
c3Rfbm9ybWFsaXplZF9hY3R1YWwudHh0JyksICd3YicpLndyaXRlKAorICAgICAgICAgICAgICAg
IG5vcm1hbGl6ZWRfYWN0dWFsKQorICAgICAgICBvcGVuKG9zLnBhdGguam9pbigKKyAgICAgICAg
ICAgIGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNlRGlyKCksCisgICAgICAgICAgICAnX2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3Rfbm9ybWFsaXplZF9nb2xkZW4udHh0JyksICd3YicpLndyaXRlKAor
ICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRfZ29sZGVuKQorCisgICAgICBzZWxmLmFzc2VydEVx
dWFsKG5vcm1hbGl6ZWRfZ29sZGVuLCBub3JtYWxpemVkX2FjdHVhbCkKKworCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICBpZiBOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRyBpbiBzeXMu
YXJndjoKKyAgICAjIHVuaXR0ZXN0Lm1haW4oKSBjYW4ndCBoYW5kbGUgdW5rbm93biBmbGFncwor
ICAgIHN5cy5hcmd2LnJlbW92ZShOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRykKKworICBpZiBH
RU5HT0xERU5fRkxBRyBpbiBzeXMuYXJndjoKKyAgICBpZiBDQU5fR0VORVJBVEVfR09MREVOX0ZJ
TEU6CisgICAgICBvdXRwdXQgPSBHZXRPdXRwdXRPZkFsbENvbW1hbmRzKCkKKyAgICAgIGdvbGRl
bl9maWxlID0gb3BlbihHT0xERU5fUEFUSCwgJ3diJykKKyAgICAgIGdvbGRlbl9maWxlLndyaXRl
KG91dHB1dCkKKyAgICAgIGdvbGRlbl9maWxlLmNsb3NlKCkKKyAgICBlbHNlOgorICAgICAgbWVz
c2FnZSA9ICgKKyAgICAgICAgICAiIiJVbmFibGUgdG8gd3JpdGUgYSBnb2xkZW4gZmlsZSB3aGVu
IGNvbXBpbGVkIGluIGFuIGVudmlyb25tZW50Cit0aGF0IGRvZXMgbm90IHN1cHBvcnQgYWxsIHRo
ZSByZXF1aXJlZCBmZWF0dXJlcyAoZGVhdGggdGVzdHMsCit0eXBlZCB0ZXN0cywgc3RhY2sgdHJh
Y2VzLCBhbmQgbXVsdGlwbGUgdGhyZWFkcykuCitQbGVhc2UgYnVpbGQgdGhpcyB0ZXN0IGFuZCBn
ZW5lcmF0ZSB0aGUgZ29sZGVuIGZpbGUgdXNpbmcgQmxhemUgb24gTGludXguIiIiKQorCisgICAg
ICBzeXMuc3RkZXJyLndyaXRlKG1lc3NhZ2UpCisgICAgICBzeXMuZXhpdCgxKQorICBlbHNlOgor
ICAgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjUy
NWVjOTcwZGU1NDIxZTBlMzNiNmZmNmQyY2M2YzhkMDUxNjQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYwpA
QCAtMCwwICsxLDExMDkgQEAKKy8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgorLy8gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8v
IG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisv
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKy8vCisvLyBUaGUgcHVycG9zZSBvZiB0aGlzIGZpbGUgaXMgdG8gZ2VuZXJhdGUgR29v
Z2xlIFRlc3Qgb3V0cHV0IHVuZGVyCisvLyB2YXJpb3VzIGNvbmRpdGlvbnMuICBUaGUgb3V0cHV0
IHdpbGwgdGhlbiBiZSB2ZXJpZmllZCBieQorLy8gZ29vZ2xldGVzdC1vdXRwdXQtdGVzdC5weSB0
byBlbnN1cmUgdGhhdCBHb29nbGUgVGVzdCBnZW5lcmF0ZXMgdGhlCisvLyBkZXNpcmVkIG1lc3Nh
Z2VzLiAgVGhlcmVmb3JlLCBtb3N0IHRlc3RzIGluIHRoaXMgZmlsZSBhcmUgTUVBTlQgVE8KKy8v
IEZBSUwuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKyNpbmNsdWRlICJndGVzdC9n
dGVzdC5oIgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKworI2luY2x1ZGUg
PHN0ZGxpYi5oPgorCisjaWYgX01TQ19WRVIKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BV
U0hfKDQxMjcgLyogY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudCAqLykKKyNlbmRp
ZiAgLy8gIF9NU0NfVkVSCisKKyNpZiBHVEVTVF9JU19USFJFQURTQUZFCit1c2luZyB0ZXN0aW5n
OjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjsKK3VzaW5nIHRlc3Rpbmc6OlRlc3RQ
YXJ0UmVzdWx0QXJyYXk7CisKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpOb3RpZmljYXRpb247
Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkV2l0aFBhcmFtOworI2VuZGlmCisKK25h
bWVzcGFjZSBwb3NpeCA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OworCisvLyBUZXN0cyBj
YXRjaGluZyBmYXRhbCBmYWlsdXJlcy4KKworLy8gQSBzdWJyb3V0aW5lIHVzZWQgYnkgdGhlIGZv
bGxvd2luZyB0ZXN0Lgordm9pZCBUZXN0RXExKGludCB4KSB7CisgIEFTU0VSVF9FUSgxLCB4KTsK
K30KKworLy8gVGhpcyBmdW5jdGlvbiBjYWxscyBhIHRlc3Qgc3Vicm91dGluZSwgY2F0Y2hlcyB0
aGUgZmF0YWwgZmFpbHVyZSBpdAorLy8gZ2VuZXJhdGVzLCBhbmQgdGhlbiByZXR1cm5zIGVhcmx5
Lgordm9pZCBUcnlUZXN0U3Vicm91dGluZSgpIHsKKyAgLy8gQ2FsbHMgYSBzdWJyb3VudGluZSB0
aGF0IHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUuCisgIFRlc3RFcTEoMik7CisKKyAgLy8gQ2F0Y2hl
cyB0aGUgZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSB0ZXN0LgorICAvLworICAvLyBUaGUg
dGVzdGluZzo6VGVzdDo6IHByZWZpeCBpcyBuZWNlc3Nhcnkgd2hlbiBjYWxsaW5nCisgIC8vIEhh
c0ZhdGFsRmFpbHVyZSgpIG91dHNpZGUgb2YgYSBURVNULCBURVNUX0YsIG9yIHRlc3QgZml4dHVy
ZS4KKyAgaWYgKHRlc3Rpbmc6OlRlc3Q6Okhhc0ZhdGFsRmFpbHVyZSgpKSByZXR1cm47CisKKyAg
Ly8gSWYgd2UgZ2V0IGhlcmUsIHNvbWV0aGluZyBpcyB3cm9uZy4KKyAgRkFJTCgpIDw8ICJUaGlz
IHNob3VsZCBuZXZlciBiZSByZWFjaGVkLiI7Cit9CisKK1RFU1QoUGFzc2luZ1Rlc3QsIFBhc3Np
bmdUZXN0MSkgeworfQorCitURVNUKFBhc3NpbmdUZXN0LCBQYXNzaW5nVGVzdDIpIHsKK30KKwor
Ly8gVGVzdHMgdGhhdCBwYXJhbWV0ZXJzIG9mIGZhaWxpbmcgcGFyYW1ldGVyaXplZCB0ZXN0cyBh
cmUgcHJpbnRlZCBpbiB0aGUKKy8vIGZhaWxpbmcgdGVzdCBzdW1tYXJ5LgorY2xhc3MgRmFpbGlu
Z1BhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4ge307CisKK1RF
U1RfUChGYWlsaW5nUGFyYW1UZXN0LCBGYWlscykgeworICBFWFBFQ1RfRVEoMSwgR2V0UGFyYW0o
KSk7Cit9CisKKy8vIFRoaXMgZ2VuZXJhdGVzIGEgdGVzdCB3aGljaCB3aWxsIGZhaWwuIEdvb2ds
ZSBUZXN0IGlzIGV4cGVjdGVkIHRvIHByaW50CisvLyBpdHMgcGFyYW1ldGVyIHdoZW4gaXQgb3V0
cHV0cyB0aGUgbGlzdCBvZiBhbGwgZmFpbGVkIHRlc3RzLgorSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoUHJpbnRpbmdGYWlsaW5nUGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgRmFpbGlu
Z1BhcmFtVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlcygyKSk7
CisKK3N0YXRpYyBjb25zdCBjaGFyIGtHb2xkZW5TdHJpbmdbXSA9ICJcIkxpbmVcMCAxXCJcbkxp
bmUgMiI7CisKK1RFU1QoTm9uZmF0YWxGYWlsdXJlVGVzdCwgRXNjYXBlc1N0cmluZ09wZXJhbmRz
KSB7CisgIHN0ZDo6c3RyaW5nIGFjdHVhbCA9ICJhY3R1YWwgXCJzdHJpbmdcIiI7CisgIEVYUEVD
VF9FUShrR29sZGVuU3RyaW5nLCBhY3R1YWwpOworCisgIGNvbnN0IGNoYXIqIGdvbGRlbiA9IGtH
b2xkZW5TdHJpbmc7CisgIEVYUEVDVF9FUShnb2xkZW4sIGFjdHVhbCk7Cit9CisKK1RFU1QoTm9u
ZmF0YWxGYWlsdXJlVGVzdCwgRGlmZkZvckxvbmdTdHJpbmdzKSB7CisgIHN0ZDo6c3RyaW5nIGdv
bGRlbl9zdHIoa0dvbGRlblN0cmluZywgc2l6ZW9mKGtHb2xkZW5TdHJpbmcpIC0gMSk7CisgIEVY
UEVDVF9FUShnb2xkZW5fc3RyLCAiTGluZSAyIik7Cit9CisKKy8vIFRlc3RzIGNhdGNoaW5nIGEg
ZmF0YWwgZmFpbHVyZSBpbiBhIHN1YnJvdXRpbmUuCitURVNUKEZhdGFsRmFpbHVyZVRlc3QsIEZh
dGFsRmFpbHVyZUluU3Vicm91dGluZSkgeworICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJl
IHRoYXQgeCBzaG91bGQgYmUgMSlcbiIpOworCisgIFRyeVRlc3RTdWJyb3V0aW5lKCk7Cit9CisK
Ky8vIFRlc3RzIGNhdGNoaW5nIGEgZmF0YWwgZmFpbHVyZSBpbiBhIG5lc3RlZCBzdWJyb3V0aW5l
LgorVEVTVChGYXRhbEZhaWx1cmVUZXN0LCBGYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUp
IHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpXG4i
KTsKKworICAvLyBDYWxscyBhIHN1YnJvdW50aW5lIHRoYXQgeWllbGRzIGEgZmF0YWwgZmFpbHVy
ZS4KKyAgVHJ5VGVzdFN1YnJvdXRpbmUoKTsKKworICAvLyBDYXRjaGVzIHRoZSBmYXRhbCBmYWls
dXJlIGFuZCBhYm9ydHMgdGhlIHRlc3QuCisgIC8vCisgIC8vIFdoZW4gY2FsbGluZyBIYXNGYXRh
bEZhaWx1cmUoKSBpbnNpZGUgYSBURVNULCBURVNUX0YsIG9yIHRlc3QKKyAgLy8gZml4dHVyZSwg
dGhlIHRlc3Rpbmc6OlRlc3Q6OiBwcmVmaXggaXMgbm90IG5lZWRlZC4KKyAgaWYgKEhhc0ZhdGFs
RmFpbHVyZSgpKSByZXR1cm47CisKKyAgLy8gSWYgd2UgZ2V0IGhlcmUsIHNvbWV0aGluZyBpcyB3
cm9uZy4KKyAgRkFJTCgpIDw8ICJUaGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkLiI7Cit9CisK
Ky8vIFRlc3RzIEhhc0ZhdGFsRmFpbHVyZSgpIGFmdGVyIGEgZmFpbGVkIEVYUEVDVCBjaGVjay4K
K1RFU1QoRmF0YWxGYWlsdXJlVGVzdCwgTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lKSB7Cisg
IHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUgb24gZmFsc2UpXG4iKTsKKyAgRVhQRUNUX1RS
VUUoZmFsc2UpOyAgLy8gR2VuZXJhdGVzIGEgbm9uZmF0YWwgZmFpbHVyZQorICBBU1NFUlRfRkFM
U0UoSGFzRmF0YWxGYWlsdXJlKCkpOyAgLy8gVGhpcyBzaG91bGQgc3VjY2VlZC4KK30KKworLy8g
VGVzdHMgaW50ZXJsZWF2aW5nIHVzZXIgbG9nZ2luZyBhbmQgR29vZ2xlIFRlc3QgYXNzZXJ0aW9u
cy4KK1RFU1QoTG9nZ2luZ1Rlc3QsIEludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zKSB7
CisgIHN0YXRpYyBjb25zdCBpbnQgYVs0XSA9IHsKKyAgICAzLCA5LCAyLCA2CisgIH07CisKKyAg
cHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24gKDMpID49IChhW2ldKSlcbiIpOworICBm
b3IgKGludCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKGEpL3NpemVvZigqYSkp
OyBpKyspIHsKKyAgICBwcmludGYoImkgPT0gJWRcbiIsIGkpOworICAgIEVYUEVDVF9HRSgzLCBh
W2ldKTsKKyAgfQorfQorCisvLyBUZXN0cyB0aGUgU0NPUEVEX1RSQUNFIG1hY3JvLgorCisvLyBB
IGhlbHBlciBmdW5jdGlvbiBmb3IgdGVzdGluZyBTQ09QRURfVFJBQ0UuCit2b2lkIFN1YldpdGhv
dXRUcmFjZShpbnQgbikgeworICBFWFBFQ1RfRVEoMSwgbik7CisgIEFTU0VSVF9FUSgyLCBuKTsK
K30KKworLy8gQW5vdGhlciBoZWxwZXIgZnVuY3Rpb24gZm9yIHRlc3RpbmcgU0NPUEVEX1RSQUNF
Lgordm9pZCBTdWJXaXRoVHJhY2UoaW50IG4pIHsKKyAgU0NPUEVEX1RSQUNFKHRlc3Rpbmc6Ok1l
c3NhZ2UoKSA8PCAibiA9ICIgPDwgbik7CisKKyAgU3ViV2l0aG91dFRyYWNlKG4pOworfQorCitU
RVNUKFNDT1BFRF9UUkFDRVRlc3QsIEFjY2VwdGVkVmFsdWVzKSB7CisgIFNDT1BFRF9UUkFDRSgi
bGl0ZXJhbCBzdHJpbmciKTsKKyAgU0NPUEVEX1RSQUNFKHN0ZDo6c3RyaW5nKCJzdGQ6OnN0cmlu
ZyIpKTsKKyAgU0NPUEVEX1RSQUNFKDEzMzcpOyAgLy8gc3RyZWFtYWJsZSB0eXBlCisgIGNvbnN0
IGNoYXIqIG51bGxfdmFsdWUgPSBOVUxMOworICBTQ09QRURfVFJBQ0UobnVsbF92YWx1ZSk7CisK
KyAgQUREX0ZBSUxVUkUoKSA8PCAiSnVzdCBjaGVja2luZyB0aGF0IGFsbCB0aGVzZSB2YWx1ZXMg
d29yayBmaW5lLiI7Cit9CisKKy8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFKCkgb2JleXMgbGV4
aWNhbCBzY29wZXMuCitURVNUKFNDT1BFRF9UUkFDRVRlc3QsIE9iZXlzU2NvcGVzKSB7CisgIHBy
aW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKKworICAvLyBUaGVyZSBzaG91bGQgYmUgbm8g
dHJhY2UgYmVmb3JlIFNDT1BFRF9UUkFDRSgpIGlzIGludm9rZWQuCisgIEFERF9GQUlMVVJFKCkg
PDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2Uu
IjsKKworICB7CisgICAgU0NPUEVEX1RSQUNFKCJFeHBlY3RlZCB0cmFjZSIpOworICAgIC8vIEFm
dGVyIFNDT1BFRF9UUkFDRSgpLCBhIGZhaWx1cmUgaW4gdGhlIGN1cnJlbnQgc2NvcGUgc2hvdWxk
IGNvbnRhaW4KKyAgICAvLyB0aGUgdHJhY2UuCisgICAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBm
YWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGhhdmUgYSB0cmFjZS4iOworICB9CisKKyAg
Ly8gT25jZSB0aGUgY29udHJvbCBsZWF2ZXMgdGhlIHNjb3BlIG9mIHRoZSBTQ09QRURfVFJBQ0Uo
KSwgdGhlcmUKKyAgLy8gc2hvdWxkIGJlIG5vIHRyYWNlIGFnYWluLgorICBBRERfRkFJTFVSRSgp
IDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNl
LiI7Cit9CisKKy8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFIHdvcmtzIGluc2lkZSBhIGxvb3Au
CitURVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtzSW5Mb29wKSB7CisgIHByaW50ZigiKGV4cGVj
dGVkIHRvIGZhaWwpXG4iKTsKKworICBmb3IgKGludCBpID0gMTsgaSA8PSAyOyBpKyspIHsKKyAg
ICBTQ09QRURfVFJBQ0UodGVzdGluZzo6TWVzc2FnZSgpIDw8ICJpID0gIiA8PCBpKTsKKworICAg
IFN1YldpdGhvdXRUcmFjZShpKTsKKyAgfQorfQorCisvLyBUZXN0cyB0aGF0IFNDT1BFRF9UUkFD
RSB3b3JrcyBpbiBhIHN1YnJvdXRpbmUuCitURVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtzSW5T
dWJyb3V0aW5lKSB7CisgIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKKworICBTdWJX
aXRoVHJhY2UoMSk7CisgIFN1YldpdGhUcmFjZSgyKTsKK30KKworLy8gVGVzdHMgdGhhdCBTQ09Q
RURfVFJBQ0UgY2FuIGJlIG5lc3RlZC4KK1RFU1QoU0NPUEVEX1RSQUNFVGVzdCwgQ2FuQmVOZXN0
ZWQpIHsKKyAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIpOworCisgIFNDT1BFRF9UUkFD
RSgiIik7ICAvLyBBIHRyYWNlIHdpdGhvdXQgYSBtZXNzYWdlLgorCisgIFN1YldpdGhUcmFjZSgy
KTsKK30KKworLy8gVGVzdHMgdGhhdCBtdWx0aXBsZSBTQ09QRURfVFJBQ0VzIGNhbiBiZSB1c2Vk
IGluIHRoZSBzYW1lIHNjb3BlLgorVEVTVChTQ09QRURfVFJBQ0VUZXN0LCBDYW5CZVJlcGVhdGVk
KSB7CisgIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKKworICBTQ09QRURfVFJBQ0Uo
IkEiKTsKKyAgQUREX0ZBSUxVUkUoKQorICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEuIjsKKworICBTQ09QRURfVFJBQ0Uo
IkIiKTsKKyAgQUREX0ZBSUxVUkUoKQorICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEgYW5kIEIuIjsKKworICB7CisgICAg
U0NPUEVEX1RSQUNFKCJDIik7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkLCBhbmQgc2hvdWxkICIKKyAgICAgICAgICAgICAgICAgIDw8ICJjb250YWluIHRy
YWNlIHBvaW50IEEsIEIsIGFuZCBDLiI7CisgIH0KKworICBTQ09QRURfVFJBQ0UoIkQiKTsKKyAg
QUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkICIK
KyAgICAgICAgICAgICAgICA8PCAiY29udGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQgRC4iOwor
fQorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorLy8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0Uo
KXMgY2FuIGJlIHVzZWQgY29uY3VycmVudGx5IGZyb20gbXVsdGlwbGUKKy8vIHRocmVhZHMuICBO
YW1lbHksIGFuIGFzc2VydGlvbiBzaG91bGQgYmUgYWZmZWN0ZWQgYnkKKy8vIFNDT1BFRF9UUkFD
RSgpcyBpbiBpdHMgb3duIHRocmVhZCBvbmx5LgorCisvLyBIZXJlJ3MgdGhlIHNlcXVlbmNlIG9m
IGFjdGlvbnMgdGhhdCBoYXBwZW4gaW4gdGhlIHRlc3Q6CisvLworLy8gICBUaHJlYWQgQSAobWFp
bikgICAgICAgICAgICAgICAgfCBUaHJlYWQgQiAoc3Bhd25lZCkKKy8vICAgPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PXw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8g
ICBzcGF3bnMgdGhyZWFkIEIgICAgICAgICAgICAgICAgfAorLy8gICAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIHdh
aXRzIGZvciBuMSAgICAgICAgICAgICAgICAgICB8IFNDT1BFRF9UUkFDRSgiVHJhY2UgQiIpOwor
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnZW5lcmF0ZXMgZmFpbHVyZSAj
MQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBub3RpZmllcyBuMQorLy8g
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLyAgIFNDT1BFRF9UUkFDRSgiVHJhY2UgQSIpOyAgICAgICB8IHdhaXRzIGZv
ciBuMgorLy8gICBnZW5lcmF0ZXMgZmFpbHVyZSAjMiAgICAgICAgICAgfAorLy8gICBub3RpZmll
cyBuMiAgICAgICAgICAgICAgICAgICAgfAorLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIHdhaXRzIGZvciBu
MyAgICAgICAgICAgICAgICAgICB8IGdlbmVyYXRlcyBmYWlsdXJlICMzCisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8IHRyYWNlIEIgZGllcworLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCBnZW5lcmF0ZXMgZmFpbHVyZSAjNAorLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCBub3RpZmllcyBuMworLy8gICAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIGdl
bmVyYXRlcyBmYWlsdXJlICM1ICAgICAgICAgICB8IGZpbmlzaGVzCisvLyAgIHRyYWNlIEEgZGll
cyAgICAgICAgICAgICAgICAgICB8CisvLyAgIGdlbmVyYXRlcyBmYWlsdXJlICM2ICAgICAgICAg
ICB8CisvLyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgd2FpdHMgZm9yIHRocmVhZCBCIHRvIGZpbmlzaCAgIHwK
Kworc3RydWN0IENoZWNrUG9pbnRzIHsKKyAgTm90aWZpY2F0aW9uIG4xOworICBOb3RpZmljYXRp
b24gbjI7CisgIE5vdGlmaWNhdGlvbiBuMzsKK307CisKK3N0YXRpYyB2b2lkIFRocmVhZFdpdGhT
Y29wZWRUcmFjZShDaGVja1BvaW50cyogY2hlY2tfcG9pbnRzKSB7CisgIHsKKyAgICBTQ09QRURf
VFJBQ0UoIlRyYWNlIEIiKTsKKyAgICBBRERfRkFJTFVSRSgpCisgICAgICAgIDw8ICJFeHBlY3Rl
ZCBmYWlsdXJlICMxIChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBCIGFsaXZlKS4iOworICAgIGNo
ZWNrX3BvaW50cy0+bjEuTm90aWZ5KCk7CisgICAgY2hlY2tfcG9pbnRzLT5uMi5XYWl0Rm9yTm90
aWZpY2F0aW9uKCk7CisKKyAgICBBRERfRkFJTFVSRSgpCisgICAgICAgIDw8ICJFeHBlY3RlZCBm
YWlsdXJlICMzIChpbiB0aHJlYWQgQiwgdHJhY2UgQSAmIEIgYm90aCBhbGl2ZSkuIjsKKyAgfSAg
Ly8gVHJhY2UgQiBkaWVzIGhlcmUuCisgIEFERF9GQUlMVVJFKCkKKyAgICAgIDw8ICJFeHBlY3Rl
ZCBmYWlsdXJlICM0IChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBBIGFsaXZlKS4iOworICBjaGVj
a19wb2ludHMtPm4zLk5vdGlmeSgpOworfQorCitURVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtz
Q29uY3VycmVudGx5KSB7CisgIHByaW50ZigiKGV4cGVjdGluZyA2IGZhaWx1cmVzKVxuIik7CisK
KyAgQ2hlY2tQb2ludHMgY2hlY2tfcG9pbnRzOworICBUaHJlYWRXaXRoUGFyYW08Q2hlY2tQb2lu
dHMqPiB0aHJlYWQoJlRocmVhZFdpdGhTY29wZWRUcmFjZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZjaGVja19wb2ludHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgY2hlY2tfcG9pbnRzLm4xLldhaXRGb3JOb3RpZmlj
YXRpb24oKTsKKworICB7CisgICAgU0NPUEVEX1RSQUNFKCJUcmFjZSBBIik7CisgICAgQUREX0ZB
SUxVUkUoKQorICAgICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiAoaW4gdGhyZWFkIEEsIHRy
YWNlIEEgJiBCIGJvdGggYWxpdmUpLiI7CisgICAgY2hlY2tfcG9pbnRzLm4yLk5vdGlmeSgpOwor
ICAgIGNoZWNrX3BvaW50cy5uMy5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7CisKKyAgICBBRERfRkFJ
TFVSRSgpCisgICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM1IChpbiB0aHJlYWQgQSwgb25s
eSB0cmFjZSBBIGFsaXZlKS4iOworICB9ICAvLyBUcmFjZSBBIGRpZXMgaGVyZS4KKyAgQUREX0ZB
SUxVUkUoKQorICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzYgKGluIHRocmVhZCBBLCBubyB0
cmFjZSBhbGl2ZSkuIjsKKyAgdGhyZWFkLkpvaW4oKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSVNf
VEhSRUFEU0FGRQorCisvLyBUZXN0cyBiYXNpYyBmdW5jdGlvbmFsaXR5IG9mIHRoZSBTY29wZWRU
cmFjZSB1dGlsaXR5IChtb3N0IG9mIGl0cyBmZWF0dXJlcworLy8gYXJlIGFscmVhZHkgdGVzdGVk
IGluIFNDT1BFRF9UUkFDRVRlc3QpLgorVEVTVChTY29wZWRUcmFjZVRlc3QsIFdpdGhFeHBsaWNp
dEZpbGVBbmRMaW5lKSB7CisgIHRlc3Rpbmc6OlNjb3BlZFRyYWNlIHRyYWNlKCJleHBsaWNpdF9m
aWxlLmNjIiwgMTIzLCAiZXhwZWN0ZWQgdHJhY2UgbWVzc2FnZSIpOworICBBRERfRkFJTFVSRSgp
IDw8ICJDaGVjayB0aGF0IHRoZSB0cmFjZSBpcyBhdHRhY2hlZCB0byBhIHBhcnRpY3VsYXIgbG9j
YXRpb24uIjsKK30KKworVEVTVChEaXNhYmxlZFRlc3RzV2FybmluZ1Rlc3QsCisgICAgIERJU0FC
TEVEX0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZ1N1cHByZXNzZXNXYXJuaW5nKSB7CisgIC8vIFRo
aXMgdGVzdCBib2R5IGlzIGludGVudGlvbmFsbHkgZW1wdHkuICBJdHMgc29sZSBwdXJwb3NlIGlz
IGZvcgorICAvLyB2ZXJpZnlpbmcgdGhhdCB0aGUgLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90
ZXN0cyBmbGFnCisgIC8vIHN1cHByZXNzZXMgdGhlICJZT1UgSEFWRSAxMiBESVNBQkxFRCBURVNU
UyIgd2FybmluZyBhdCB0aGUgZW5kIG9mCisgIC8vIHRoZSB0ZXN0IG91dHB1dC4KK30KKworLy8g
VGVzdHMgdXNpbmcgYXNzZXJ0aW9ucyBvdXRzaWRlIG9mIFRFU1QgYW5kIFRFU1RfRi4KKy8vCisv
LyBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgdHdvIGZhaWx1cmVzIGludGVudGlvbmFsbHkuCit2b2lk
IEFkSG9jVGVzdCgpIHsKKyAgcHJpbnRmKCJUaGUgbm9uLXRlc3QgcGFydCBvZiB0aGUgY29kZSBp
cyBleHBlY3RlZCB0byBoYXZlIDIgZmFpbHVyZXMuXG5cbiIpOworICBFWFBFQ1RfVFJVRShmYWxz
ZSk7CisgIEVYUEVDVF9FUSgyLCAzKTsKK30KKworLy8gUnVucyBhbGwgVEVTVHMsIGFsbCBURVNU
X0ZzLCBhbmQgdGhlIGFkIGhvYyB0ZXN0LgoraW50IFJ1bkFsbFRlc3RzKCkgeworICBBZEhvY1Rl
c3QoKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KKworLy8gVGVzdHMgbm9uLWZhdGFs
IGZhaWx1cmVzIGluIHRoZSBmaXh0dXJlIGNvbnN0cnVjdG9yLgorY2xhc3MgTm9uRmF0YWxGYWls
dXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHBy
b3RlY3RlZDoKKyAgTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0KCkgewor
ICAgIHByaW50ZigiKGV4cGVjdGluZyA1IGZhaWx1cmVzKVxuIik7CisgICAgQUREX0ZBSUxVUkUo
KSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4iOwor
ICB9CisKKyAgfk5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCgpIHsKKyAg
ICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM1LCBpbiB0aGUgdGVzdCBmaXh0
dXJlIGQndG9yLiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgQUREX0ZB
SUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gU2V0VXAoKS4iOworICB9CisKKyAg
dmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVk
IGZhaWx1cmUgIzQsIGluIFRlYXJEb3duLiI7CisgIH0KK307CisKK1RFU1RfRihOb25GYXRhbEZh
aWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QsIEZhaWx1cmVJbkNvbnN0cnVjdG9yKSB7Cisg
IEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGJvZHku
IjsKK30KKworLy8gVGVzdHMgZmF0YWwgZmFpbHVyZXMgaW4gdGhlIGZpeHR1cmUgY29uc3RydWN0
b3IuCitjbGFzcyBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25z
dHJ1Y3RvclRlc3QoKSB7CisgICAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMpXG4iKTsK
KyAgICBJbml0KCk7CisgIH0KKworICB+RmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JU
ZXN0KCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRo
ZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsK
KyAgICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gU2V0VXAoKS4gICIK
KyAgICAgICAgICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0
ZXN0IGZpeHR1cmUgYyd0b3IgIgorICAgICAgICAgICAgICAgICAgPDwgImhhZCBhIGZhdGFsIGZh
aWx1cmUuIjsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBBRERfRkFJ
TFVSRSgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gVGVhckRvd24oKS4gICIKKyAgICAgICAg
ICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1
cmUgYyd0b3IgIgorICAgICAgICAgICAgICAgICAgPDwgImhhZCBhIGZhdGFsIGZhaWx1cmUuIjsK
KyAgfQorCisgcHJpdmF0ZToKKyAgdm9pZCBJbml0KCkgeworICAgIEZBSUwoKSA8PCAiRXhwZWN0
ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4iOworICB9Cit9OworCitU
RVNUX0YoRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LCBGYWlsdXJlSW5Db25z
dHJ1Y3RvcikgeworICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gdGhl
IHRlc3QgYm9keS4gICIKKyAgICAgICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBo
ZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yICIKKyAgICAgICAgICAgICAgICA8PCAiaGFk
IGEgZmF0YWwgZmFpbHVyZS4iOworfQorCisvLyBUZXN0cyBub24tZmF0YWwgZmFpbHVyZXMgaW4g
U2V0VXAoKS4KK2NsYXNzIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB+Tm9uRmF0YWxGYWlsdXJlSW5TZXRV
cFRlc3QoKSB7CisgICAgRGVpbml0KCk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7
CisgICAgcHJpbnRmKCIoZXhwZWN0aW5nIDQgZmFpbHVyZXMpXG4iKTsKKyAgICBBRERfRkFJTFVS
RSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLiI7CisgIH0KKworICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMz
LCBpbiBUZWFyRG93bigpLiI7CisgIH0KKyBwcml2YXRlOgorICB2b2lkIERlaW5pdCgpIHsKKyAg
ICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0
b3IuIjsKKyAgfQorfTsKKworVEVTVF9GKE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LCBGYWls
dXJlSW5TZXRVcCkgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0
ZXN0IGZ1bmN0aW9uLiI7Cit9CisKKy8vIFRlc3RzIGZhdGFsIGZhaWx1cmVzIGluIFNldFVwKCku
CitjbGFzcyBGYXRhbEZhaWx1cmVJblNldFVwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
KyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgfkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0KCkgeworICAg
IERlaW5pdCgpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIHByaW50Zigi
KGV4cGVjdGluZyAzIGZhaWx1cmVzKVxuIik7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWls
dXJlICMxLCBpbiBTZXRVcCgpLiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7
CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLiI7Cisg
IH0KKyBwcml2YXRlOgorICB2b2lkIERlaW5pdCgpIHsKKyAgICBGQUlMKCkgPDwgIkV4cGVjdGVk
IGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKKyAgfQorfTsKKworVEVT
VF9GKEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LCBGYWlsdXJlSW5TZXRVcCkgeworICBGQUlMKCkg
PDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBmdW5jdGlvbi4gICIKKyAgICAgICAg
IDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIFNldFVwKCkgZmFpbGVkLiI7Cit9CisK
K1RFU1QoQWRkRmFpbHVyZUF0VGVzdCwgTWVzc2FnZUNvbnRhaW5zU3BlY2lmaWVkRmlsZUFuZExp
bmVOdW1iZXIpIHsKKyAgQUREX0ZBSUxVUkVfQVQoImZvby5jYyIsIDQyKSA8PCAiRXhwZWN0ZWQg
ZmFpbHVyZSBpbiBmb28uY2MiOworfQorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorCisvLyBB
IHVuYXJ5IGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KK3ZvaWQgRGllSWYoYm9vbCBzaG91bGRfZGll
KSB7CisgIEdURVNUX0NIRUNLXyghc2hvdWxkX2RpZSkgPDwgIiAtIGRlYXRoIGluc2lkZSBEaWVJ
ZigpLiI7Cit9CisKKy8vIFRlc3RzIHJ1bm5pbmcgZGVhdGggdGVzdHMgaW4gYSBtdWx0aS10aHJl
YWRlZCBjb250ZXh0LgorCisvLyBVc2VkIGZvciBjb29yZGluYXRpb24gYmV0d2VlbiB0aGUgbWFp
biBhbmQgdGhlIHNwYXduIHRocmVhZC4KK3N0cnVjdCBTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMg
eworICBTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMoKSB7fQorCisgIE5vdGlmaWNhdGlvbiBzcGF3
bl90aHJlYWRfc3RhcnRlZDsKKyAgTm90aWZpY2F0aW9uIHNwYXduX3RocmVhZF9va190b190ZXJt
aW5hdGU7CisKKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNw
YXduVGhyZWFkTm90aWZpY2F0aW9ucyk7Cit9OworCisvLyBUaGUgZnVuY3Rpb24gdG8gYmUgZXhl
Y3V0ZWQgaW4gdGhlIHRocmVhZCBzcGF3biBieSB0aGUKKy8vIE11bHRpcGxlVGhyZWFkcyB0ZXN0
IChiZWxvdykuCitzdGF0aWMgdm9pZCBUaHJlYWRSb3V0aW5lKFNwYXduVGhyZWFkTm90aWZpY2F0
aW9ucyogbm90aWZpY2F0aW9ucykgeworICAvLyBTaWduYWxzIHRoZSBtYWluIHRocmVhZCB0aGF0
IHRoaXMgdGhyZWFkIGhhcyBzdGFydGVkLgorICBub3RpZmljYXRpb25zLT5zcGF3bl90aHJlYWRf
c3RhcnRlZC5Ob3RpZnkoKTsKKworICAvLyBXYWl0cyBmb3IgcGVybWlzc2lvbiB0byBmaW5pc2gg
ZnJvbSB0aGUgbWFpbiB0aHJlYWQuCisgIG5vdGlmaWNhdGlvbnMtPnNwYXduX3RocmVhZF9va190
b190ZXJtaW5hdGUuV2FpdEZvck5vdGlmaWNhdGlvbigpOworfQorCisvLyBUaGlzIGlzIGEgZGVh
dGgtdGVzdCB0ZXN0LCBidXQgaXQncyBub3QgbmFtZWQgd2l0aCBhIERlYXRoVGVzdAorLy8gc3Vm
Zml4LiAgSXQgc3RhcnRzIHRocmVhZHMgd2hpY2ggbWlnaHQgaW50ZXJmZXJlIHdpdGggbGF0ZXIK
Ky8vIGRlYXRoIHRlc3RzLCBzbyBpdCBtdXN0IHJ1biBhZnRlciBhbGwgb3RoZXIgZGVhdGggdGVz
dHMuCitjbGFzcyBEZWF0aFRlc3RBbmRNdWx0aVRocmVhZHNUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLy8gU3RhcnRzIGEgdGhyZWFkIGFuZCB3YWl0cyBmb3Ig
aXQgdG8gYmVnaW4uCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICB0aHJlYWRfLnJlc2V0
KG5ldyBUaHJlYWRXaXRoUGFyYW08U3Bhd25UaHJlYWROb3RpZmljYXRpb25zKj4oCisgICAgICAg
ICZUaHJlYWRSb3V0aW5lLCAmbm90aWZpY2F0aW9uc18sIE5VTEwpKTsKKyAgICBub3RpZmljYXRp
b25zXy5zcGF3bl90aHJlYWRfc3RhcnRlZC5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7CisgIH0KKyAg
Ly8gVGVsbHMgdGhlIHRocmVhZCB0byBmaW5pc2gsIGFuZCByZWFwcyBpdC4KKyAgLy8gRGVwZW5k
aW5nIG9uIHRoZSB2ZXJzaW9uIG9mIHRoZSB0aHJlYWQgbGlicmFyeSBpbiB1c2UsCisgIC8vIGEg
bWFuYWdlciB0aHJlYWQgbWlnaHQgc3RpbGwgYmUgbGVmdCBydW5uaW5nIHRoYXQgd2lsbCBpbnRl
cmZlcmUKKyAgLy8gd2l0aCBsYXRlciBkZWF0aCB0ZXN0cy4gIFRoaXMgaXMgdW5mb3J0dW5hdGUs
IGJ1dCB0aGlzIGNsYXNzCisgIC8vIGNsZWFucyB1cCBhZnRlciBpdHNlbGYgYXMgYmVzdCBpdCBj
YW4uCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBub3RpZmljYXRpb25zXy5zcGF3
bl90aHJlYWRfb2tfdG9fdGVybWluYXRlLk5vdGlmeSgpOworICB9CisKKyBwcml2YXRlOgorICBT
cGF3blRocmVhZE5vdGlmaWNhdGlvbnMgbm90aWZpY2F0aW9uc187CisgIHRlc3Rpbmc6OmludGVy
bmFsOjpzY29wZWRfcHRyPFRocmVhZFdpdGhQYXJhbTxTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMq
PiA+CisgICAgICB0aHJlYWRfOworfTsKKworI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZF
CisKKy8vIFRoZSBNaXhlZFVwVGVzdENhc2VUZXN0IHRlc3QgY2FzZSB2ZXJpZmllcyB0aGF0IEdv
b2dsZSBUZXN0IHdpbGwgZmFpbCBhCisvLyB0ZXN0IGlmIGl0IHVzZXMgYSBkaWZmZXJlbnQgZml4
dHVyZSBjbGFzcyB0aGFuIHdoYXQgb3RoZXIgdGVzdHMgaW4KKy8vIHRoZSBzYW1lIHRlc3QgY2Fz
ZSB1c2UuICBJdCBkZWxpYmVyYXRlbHkgY29udGFpbnMgdHdvIGZpeHR1cmUKKy8vIGNsYXNzZXMg
d2l0aCB0aGUgc2FtZSBuYW1lIGJ1dCBkZWZpbmVkIGluIGRpZmZlcmVudCBuYW1lc3BhY2VzLgor
CisvLyBUaGUgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QgdGVzdCBjYXNlIHZl
cmlmaWVzIHRoYXQKKy8vIHdoZW4gdGhlIHVzZXIgZGVmaW5lcyB0d28gdGVzdHMgd2l0aCB0aGUg
c2FtZSB0ZXN0IGNhc2UgbmFtZSBBTkQKKy8vIHNhbWUgdGVzdCBuYW1lIChidXQgaW4gZGlmZmVy
ZW50IG5hbWVzcGFjZXMpLCB0aGUgc2Vjb25kIHRlc3Qgd2lsbAorLy8gZmFpbC4KKworbmFtZXNw
YWNlIGZvbyB7CisKK2NsYXNzIE1peGVkVXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Cit9OworCitURVNUX0YoTWl4ZWRVcFRlc3RDYXNlVGVzdCwgRmlyc3RUZXN0RnJvbU5h
bWVzcGFjZUZvbykge30KK1RFU1RfRihNaXhlZFVwVGVzdENhc2VUZXN0LCBTZWNvbmRUZXN0RnJv
bU5hbWVzcGFjZUZvbykge30KKworY2xhc3MgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFt
ZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitURVNUX0YoTWl4ZWRVcFRlc3RD
YXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCisgICAgICAgVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFt
ZVNob3VsZEZhaWwpIHt9CisKK30gIC8vIG5hbWVzcGFjZSBmb28KKworbmFtZXNwYWNlIGJhciB7
CisKK2NsYXNzIE1peGVkVXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9
OworCisvLyBUaGUgZm9sbG93aW5nIHR3byB0ZXN0cyBhcmUgZXhwZWN0ZWQgdG8gZmFpbC4gIFdl
IHJlbHkgb24gdGhlCisvLyBnb2xkZW4gZmlsZSB0byBjaGVjayB0aGF0IEdvb2dsZSBUZXN0IGdl
bmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KK1RFU1RfRihNaXhlZFVwVGVzdENhc2VU
ZXN0LCBUaGlzU2hvdWxkRmFpbCkge30KK1RFU1RfRihNaXhlZFVwVGVzdENhc2VUZXN0LCBUaGlz
U2hvdWxkRmFpbFRvbykge30KKworY2xhc3MgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFt
ZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCisvLyBFeHBlY3RlZCB0byBmYWls
LiAgV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gY2hlY2sgdGhhdCBHb29nbGUgVGVzdAor
Ly8gZ2VuZXJhdGVzIHRoZSByaWdodCBlcnJvciBtZXNzYWdlLgorVEVTVF9GKE1peGVkVXBUZXN0
Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAorICAgICAgIFRoZVNlY29uZFRlc3RXaXRoVGhpc05h
bWVTaG91bGRGYWlsKSB7fQorCit9ICAvLyBuYW1lc3BhY2UgYmFyCisKKy8vIFRoZSBmb2xsb3dp
bmcgdHdvIHRlc3QgY2FzZXMgdmVyaWZ5IHRoYXQgR29vZ2xlIFRlc3QgY2F0Y2hlcyB0aGUgdXNl
cgorLy8gZXJyb3Igb2YgbWl4aW5nIFRFU1QgYW5kIFRFU1RfRiBpbiB0aGUgc2FtZSB0ZXN0IGNh
c2UuICBUaGUgZmlyc3QKKy8vIHRlc3QgY2FzZSBjaGVja3MgdGhlIHNjZW5hcmlvIHdoZXJlIFRF
U1RfRiBhcHBlYXJzIGJlZm9yZSBURVNULCBhbmQKKy8vIHRoZSBzZWNvbmQgb25lIGNoZWNrcyB3
aGVyZSBURVNUIGFwcGVhcnMgYmVmb3JlIFRFU1RfRi4KKworY2xhc3MgVEVTVF9GX2JlZm9yZV9U
RVNUX2luX3NhbWVfdGVzdF9jYXNlIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKworVEVT
VF9GKFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSwgRGVmaW5lZFVzaW5nVEVT
VF9GKSB7fQorCisvLyBFeHBlY3RlZCB0byBmYWlsLiAgV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZp
bGUgdG8gY2hlY2sgdGhhdCBHb29nbGUgVGVzdAorLy8gZ2VuZXJhdGVzIHRoZSByaWdodCBlcnJv
ciBtZXNzYWdlLgorVEVTVChURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UsIERl
ZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsKSB7fQorCitjbGFzcyBURVNUX2JlZm9yZV9URVNU
X0ZfaW5fc2FtZV90ZXN0X2Nhc2UgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitURVNU
KFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZSwgRGVmaW5lZFVzaW5nVEVTVCkg
e30KKworLy8gRXhwZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRv
IGNoZWNrIHRoYXQgR29vZ2xlIFRlc3QKKy8vIGdlbmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVz
c2FnZS4KK1RFU1RfRihURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UsIERlZmlu
ZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwpIHsKK30KKworLy8gVXNlZCBmb3IgdGVzdGluZyBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGFuZCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpLgoraW50
IGdsb2JhbF9pbnRlZ2VyID0gMDsKKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSgpIGNhbiByZWZlcmVuY2UgZ2xvYmFsIHZhcmlhYmxlcy4KK1RFU1QoRXhwZWN0Tm9uZmF0
YWxGYWlsdXJlVGVzdCwgQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzKSB7CisgIGdsb2JhbF9p
bnRlZ2VyID0gMDsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIEVYUEVDVF9FUSgx
LCBnbG9iYWxfaW50ZWdlcikgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7CisgIH0s
ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVuY2UgbG9jYWwgdmFyaWFibGVzCisvLyAo
c3RhdGljIG9yIG5vdCkuCitURVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIENhblJlZmVy
ZW5jZUxvY2FsVmFyaWFibGVzKSB7CisgIGludCBtID0gMDsKKyAgc3RhdGljIGludCBuOworICBu
ID0gMTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIEVYUEVDVF9FUShtLCBuKSA8
PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKKyAgfSwgIkV4cGVjdGVkIG5vbi1mYXRh
bCBmYWlsdXJlLiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KCkgc3VjY2VlZHMgd2hlbiB0aGVyZSBpcyBleGFjdGx5CisvLyBvbmUgbm9uLWZhdGFsIGZhaWx1
cmUgYW5kIG5vIGZhdGFsIGZhaWx1cmUuCitURVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qs
IFN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUpIHsKKyAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBm
YWlsdXJlLiI7CisgIH0sICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKK30KKworLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgaXMg
bm8KKy8vIG5vbi1mYXRhbCBmYWlsdXJlLgorVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LCBGYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUpIHsKKyAgcHJpbnRmKCIoZXhwZWN0
aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgIH0sICIi
KTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdo
ZW4gdGhlcmUgYXJlIHR3bworLy8gbm9uLWZhdGFsIGZhaWx1cmVzLgorVEVTVChFeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMpIHsK
KyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRSh7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUgMS4iOworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
IDIuIjsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBvbmUgZmF0YWwKKy8vIGZhaWx1cmUuCitURVNUKEV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUp
IHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSh7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7Cisg
IH0sICIiKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZh
aWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWluZworLy8gdGVzdGVkIHJldHVybnMuCitURVNUKEV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblN0YXRlbWVudFJldHVybnMpIHsKKyAg
cHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSh7CisgICAgcmV0dXJuOworICB9LCAiIik7Cit9CisKKyNpZiBHVEVTVF9IQVNfRVhDRVBU
SU9OUworCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hl
biB0aGUgc3RhdGVtZW50IGJlaW5nCisvLyB0ZXN0ZWQgdGhyb3dzLgorVEVTVChFeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MpIHsKKyAgcHJpbnRmKCIo
ZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICB0cnkgeworICAgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKHsKKyAgICAgIHRocm93IDA7CisgICAgfSwgIiIpOworICB9IGNhdGNoKGludCkgeyAg
Ly8gTk9MSU5UCisgIH0KK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisv
LyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgY2FuIHJlZmVyZW5jZSBnbG9iYWwg
dmFyaWFibGVzLgorVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBDYW5SZWZlcmVuY2VHbG9i
YWxWYXJpYWJsZXMpIHsKKyAgZ2xvYmFsX2ludGVnZXIgPSAwOworICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRSh7CisgICAgQVNTRVJUX0VRKDEsIGdsb2JhbF9pbnRlZ2VyKSA8PCAiRXhwZWN0ZWQgZmF0
YWwgZmFpbHVyZS4iOworICB9LCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKK30KKworLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVuY2UgbG9jYWwgc3Rh
dGljCisvLyB2YXJpYWJsZXMuCitURVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIENhblJlZmVy
ZW5jZUxvY2FsU3RhdGljVmFyaWFibGVzKSB7CisgIHN0YXRpYyBpbnQgbjsKKyAgbiA9IDE7Cisg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKKyAgICBBU1NFUlRfRVEoMCwgbikgPDwgIkV4cGVjdGVk
IGZhdGFsIGZhaWx1cmUuIjsKKyAgfSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Cit9CisK
Ky8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBzdWNjZWVkcyB3aGVuIHRoZXJl
IGlzIGV4YWN0bHkKKy8vIG9uZSBmYXRhbCBmYWlsdXJlIGFuZCBubyBub24tZmF0YWwgZmFpbHVy
ZS4KK1RFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgU3VjY2VlZHNXaGVuVGhlcmVJc09uZUZh
dGFsRmFpbHVyZSkgeworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CisgICAgRkFJTCgpIDw8ICJF
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7CisgIH0sICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIp
OworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0
aGVyZSBpcyBubyBmYXRhbAorLy8gZmFpbHVyZS4KK1RFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVz
dCwgRmFpbHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlKSB7CisgIHByaW50ZigiKGV4cGVjdGlu
ZyBhIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeworICB9LCAiIik7Cit9
CisKKy8vIEEgaGVscGVyIGZvciBnZW5lcmF0aW5nIGEgZmF0YWwgZmFpbHVyZS4KK3ZvaWQgRmF0
YWxGYWlsdXJlKCkgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKK30K
KworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUg
YXJlIHR3bworLy8gZmF0YWwgZmFpbHVyZXMuCitURVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qs
IEZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcykgeworICBwcmludGYoIihleHBlY3Rp
bmcgYSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKKyAgICBGYXRhbEZh
aWx1cmUoKTsKKyAgICBGYXRhbEZhaWx1cmUoKTsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyB0
aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBvbmUgbm9uLWZh
dGFsCisvLyBmYWlsdXJlLgorVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5U
aGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlKSB7CisgIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1
cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeworICAgIEFERF9GQUlMVVJFKCkgPDwg
IkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMg
dGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWlu
ZworLy8gdGVzdGVkIHJldHVybnMuCitURVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEZhaWxz
V2hlblN0YXRlbWVudFJldHVybnMpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlc
biIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CisgICAgcmV0dXJuOworICB9LCAiIik7Cit9
CisKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRB
TF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGUgc3RhdGVtZW50IGJlaW5nCisvLyB0ZXN0ZWQgdGhy
b3dzLgorVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRUaHJv
d3MpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICB0cnkgeworICAg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKKyAgICAgIHRocm93IDA7CisgICAgfSwgIiIpOworICB9
IGNhdGNoKGludCkgeyAgLy8gTk9MSU5UCisgIH0KK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNf
RVhDRVBUSU9OUworCisvLyBUaGlzICNpZmRlZiBibG9jayB0ZXN0cyB0aGUgb3V0cHV0IG9mIHZh
bHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCisKK3N0ZDo6c3RyaW5nIFBhcmFtTmFtZUZ1bmMoY29u
c3QgdGVzdGluZzo6VGVzdFBhcmFtSW5mbzxzdGQ6OnN0cmluZz4mIGluZm8pIHsKKyAgcmV0dXJu
IGluZm8ucGFyYW07Cit9CisKK2NsYXNzIFBhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
V2l0aFBhcmFtPHN0ZDo6c3RyaW5nPiB7Cit9OworCitURVNUX1AoUGFyYW1UZXN0LCBTdWNjZXNz
KSB7CisgIEVYUEVDVF9FUSgiYSIsIEdldFBhcmFtKCkpOworfQorCitURVNUX1AoUGFyYW1UZXN0
LCBGYWlsdXJlKSB7CisgIEVYUEVDVF9FUSgiYiIsIEdldFBhcmFtKCkpIDw8ICJFeHBlY3RlZCBm
YWlsdXJlIjsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoUHJpbnRpbmdTdHJpbmdzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1UZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdGluZzo6VmFsdWVzKHN0ZDo6c3RyaW5nKCJhIikpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgUGFyYW1OYW1lRnVuYyk7CisKKy8vIFRoaXMgI2lmZGVmIGJsb2NrIHRlc3RzIHRoZSBv
dXRwdXQgb2YgdHlwZWQgdGVzdHMuCisjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlZFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
Cit9OworCitUWVBFRF9URVNUX0NBU0UoVHlwZWRUZXN0LCB0ZXN0aW5nOjpUeXBlczxpbnQ+KTsK
KworVFlQRURfVEVTVChUeXBlZFRlc3QsIFN1Y2Nlc3MpIHsKKyAgRVhQRUNUX0VRKDAsIFR5cGVQ
YXJhbSgpKTsKK30KKworVFlQRURfVEVTVChUeXBlZFRlc3QsIEZhaWx1cmUpIHsKKyAgRVhQRUNU
X0VRKDEsIFR5cGVQYXJhbSgpKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7Cit9CisKK3R5cGVkZWYg
dGVzdGluZzo6VHlwZXM8Y2hhciwgaW50PiBUeXBlc0ZvclRlc3RXaXRoTmFtZXM7CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZWRUZXN0V2l0aE5hbWVzIDogcHVibGljIHRlc3Rp
bmc6OlRlc3Qge307CisKK2NsYXNzIFR5cGVkVGVzdE5hbWVzIHsKKyBwdWJsaWM6CisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICBzdGF0aWMgc3RkOjpzdHJpbmcgR2V0TmFtZShpbnQgaSkgewor
ICAgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFQsIGNoYXI+Ojp2YWx1ZSkKKyAgICAg
IHJldHVybiBzdGQ6OnN0cmluZygiY2hhciIpICsgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGkp
OworICAgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFQsIGludD46OnZhbHVlKQorICAg
ICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCJpbnQiKSArIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhp
KTsKKyAgfQorfTsKKworVFlQRURfVEVTVF9DQVNFKFR5cGVkVGVzdFdpdGhOYW1lcywgVHlwZXNG
b3JUZXN0V2l0aE5hbWVzLCBUeXBlZFRlc3ROYW1lcyk7CisKK1RZUEVEX1RFU1QoVHlwZWRUZXN0
V2l0aE5hbWVzLCBTdWNjZXNzKSB7fQorCitUWVBFRF9URVNUKFR5cGVkVGVzdFdpdGhOYW1lcywg
RmFpbHVyZSkgeyBGQUlMKCk7IH0KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAor
CisvLyBUaGlzICNpZmRlZiBibG9jayB0ZXN0cyB0aGUgb3V0cHV0IG9mIHR5cGUtcGFyYW1ldGVy
aXplZCB0ZXN0cy4KKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgorY2xhc3MgVHlwZWRUZXN0UCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisK
K1RZUEVEX1RFU1RfQ0FTRV9QKFR5cGVkVGVzdFApOworCitUWVBFRF9URVNUX1AoVHlwZWRUZXN0
UCwgU3VjY2VzcykgeworICBFWFBFQ1RfRVEoMFUsIFR5cGVQYXJhbSgpKTsKK30KKworVFlQRURf
VEVTVF9QKFR5cGVkVGVzdFAsIEZhaWx1cmUpIHsKKyAgRVhQRUNUX0VRKDFVLCBUeXBlUGFyYW0o
KSkgPDwgIkV4cGVjdGVkIGZhaWx1cmUiOworfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0Vf
UChUeXBlZFRlc3RQLCBTdWNjZXNzLCBGYWlsdXJlKTsKKwordHlwZWRlZiB0ZXN0aW5nOjpUeXBl
czx1bnNpZ25lZCBjaGFyLCB1bnNpZ25lZCBpbnQ+IFVuc2lnbmVkVHlwZXM7CitJTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUChVbnNpZ25lZCwgVHlwZWRUZXN0UCwgVW5zaWduZWRUeXBlcyk7
CisKK2NsYXNzIFR5cGVkVGVzdFBOYW1lcyB7CisgcHVibGljOgorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldE5hbWUoaW50IGkpIHsKKyAgICBpZiAodGVz
dGluZzo6aW50ZXJuYWw6OklzU2FtZTxULCB1bnNpZ25lZCBjaGFyPjo6dmFsdWUpIHsKKyAgICAg
IHJldHVybiBzdGQ6OnN0cmluZygidW5zaWduZWRDaGFyIikgKyA6OnRlc3Rpbmc6OlByaW50VG9T
dHJpbmcoaSk7CisgICAgfQorICAgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFQsIHVu
c2lnbmVkIGludD46OnZhbHVlKSB7CisgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoInVuc2lnbmVk
SW50IikgKyA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoaSk7CisgICAgfQorICB9Cit9OworCitJ
TlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChVbnNpZ25lZEN1c3RvbU5hbWUsIFR5cGVkVGVz
dFAsIFVuc2lnbmVkVHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlZFRl
c3RQTmFtZXMpOworCisjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUX1AKKworI2lmIEdU
RVNUX0hBU19ERUFUSF9URVNUCisKKy8vIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIHZl
cmlmeSB0aGF0IHRlc3RzIHdob3NlIHRlc3QgY2FzZQorLy8gbmFtZSBlbmRzIHdpdGggRGVhdGhU
ZXN0IGFyZSBydW4gZmlyc3QuCisKK1RFU1QoQURlYXRoVGVzdCwgU2hvdWxkUnVuRmlyc3QpIHsK
K30KKworIyBpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAorCisvLyBXZSByZWx5IG9uIHRoZSBnb2xk
ZW4gZmlsZSB0byB2ZXJpZnkgdGhhdCB0eXBlZCB0ZXN0cyB3aG9zZSB0ZXN0CisvLyBjYXNlIG5h
bWUgZW5kcyB3aXRoIERlYXRoVGVzdCBhcmUgcnVuIGZpcnN0LgorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK2NsYXNzIEFUeXBlZERlYXRoVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307
CisKK3R5cGVkZWYgdGVzdGluZzo6VHlwZXM8aW50LCBkb3VibGU+IE51bWVyaWNUeXBlczsKK1RZ
UEVEX1RFU1RfQ0FTRShBVHlwZWREZWF0aFRlc3QsIE51bWVyaWNUeXBlcyk7CisKK1RZUEVEX1RF
U1QoQVR5cGVkRGVhdGhUZXN0LCBTaG91bGRSdW5GaXJzdCkgeworfQorCisjIGVuZGlmICAvLyBH
VEVTVF9IQVNfVFlQRURfVEVTVAorCisjIGlmIEdURVNUX0hBU19UWVBFRF9URVNUX1AKKworCisv
LyBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmlsZSB0byB2ZXJpZnkgdGhhdCB0eXBlLXBhcmFtZXRl
cml6ZWQgdGVzdHMKKy8vIHdob3NlIHRlc3QgY2FzZSBuYW1lIGVuZHMgd2l0aCBEZWF0aFRlc3Qg
YXJlIHJ1biBmaXJzdC4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBBVHlwZVBhcmFt
RGVhdGhUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKworVFlQRURfVEVTVF9DQVNF
X1AoQVR5cGVQYXJhbURlYXRoVGVzdCk7CisKK1RZUEVEX1RFU1RfUChBVHlwZVBhcmFtRGVhdGhU
ZXN0LCBTaG91bGRSdW5GaXJzdCkgeworfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChB
VHlwZVBhcmFtRGVhdGhUZXN0LCBTaG91bGRSdW5GaXJzdCk7CisKK0lOU1RBTlRJQVRFX1RZUEVE
X1RFU1RfQ0FTRV9QKE15LCBBVHlwZVBhcmFtRGVhdGhUZXN0LCBOdW1lcmljVHlwZXMpOworCisj
IGVuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisKKyNlbmRpZiAgLy8gR1RFU1RfSEFT
X0RFQVRIX1RFU1QKKworLy8gVGVzdHMgdmFyaW91cyBmYWlsdXJlIGNvbmRpdGlvbnMgb2YKKy8v
IEVYUEVDVF97LE5PTn1GQVRBTF9GQUlMVVJFeyxfT05fQUxMX1RIUkVBRFN9LgorY2xhc3MgRXhw
ZWN0RmFpbHVyZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHVibGljOiAgLy8gTXVz
dCBiZSBwdWJsaWMgYW5kIG5vdCBwcm90ZWN0ZWQgZHVlIHRvIGEgYnVnIGluIGcrKyAzLjQuMi4K
KyAgZW51bSBGYWlsdXJlTW9kZSB7CisgICAgRkFUQUxfRkFJTFVSRSwKKyAgICBOT05GQVRBTF9G
QUlMVVJFCisgIH07CisgIHN0YXRpYyB2b2lkIEFkZEZhaWx1cmUoRmFpbHVyZU1vZGUgZmFpbHVy
ZSkgeworICAgIGlmIChmYWlsdXJlID09IEZBVEFMX0ZBSUxVUkUpIHsKKyAgICAgIEZBSUwoKSA8
PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOworICAgIH0gZWxzZSB7CisgICAgICBBRERfRkFJ
TFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOworICAgIH0KKyAgfQorfTsK
KworVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3RGYXRhbEZhaWx1cmUpIHsKKyAgLy8g
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0IHN1Y2NlZWRzLgorICBwcmludGYoIihleHBlY3Rp
bmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKFNVQ0NFRUQoKSwgIkV4
cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7CisgIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1
dCBnb3QgYSBub24tZmF0YWwgZmFpbHVyZS4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVy
ZSlcbiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxV
UkUpLCAiRXhwZWN0ZWQgbm9uLWZhdGFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgImZhaWx1
cmUuIik7CisgIC8vIFdyb25nIG1lc3NhZ2UuCisgIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1
cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJF
KSwgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSAiCisgICAgICAgICAgICAgICAgICAgICAgICJl
eHBlY3RlZC4iKTsKK30KKworVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3ROb25GYXRh
bEZhaWx1cmUpIHsKKyAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVk
cy4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShTVUNDRUVEKCksICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKKyAg
Ly8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBmYXRhbCBmYWlsdXJlLgor
ICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJl
LiIpOworICAvLyBXcm9uZyBtZXNzYWdlLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJl
KVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJ
TFVSRSksICJTb21lIG90aGVyIG5vbi1mYXRhbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJmYWlsdXJlLiIpOworfQorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorCitjbGFzcyBFeHBl
Y3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0IDogcHVibGljIEV4cGVjdEZhaWx1cmVUZXN0IHsKKyBw
cm90ZWN0ZWQ6CisgIHN0YXRpYyB2b2lkIEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZhaWx1cmVN
b2RlIGZhaWx1cmUpIHsKKyAgICBUaHJlYWRXaXRoUGFyYW08RmFpbHVyZU1vZGU+IHRocmVhZCgm
QWRkRmFpbHVyZSwgZmFpbHVyZSwgTlVMTCk7CisgICAgdGhyZWFkLkpvaW4oKTsKKyAgfQorfTsK
KworVEVTVF9GKEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QsIEV4cGVjdEZhdGFsRmFpbHVy
ZSkgeworICAvLyBXZSBvbmx5IGludGVyY2VwdCB0aGUgY3VycmVudCB0aHJlYWQuCisgIHByaW50
ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFk
ZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZBVEFMX0ZBSUxVUkUpLAorICAgICAgICAgICAgICAgICAg
ICAgICAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKK30KKworVEVTVF9GKEV4cGVjdEZhaWx1
cmVXaXRoVGhyZWFkc1Rlc3QsIEV4cGVjdE5vbkZhdGFsRmFpbHVyZSkgeworICAvLyBXZSBvbmx5
IGludGVyY2VwdCB0aGUgY3VycmVudCB0aHJlYWQuCisgIHByaW50ZigiKGV4cGVjdGluZyAyIGZh
aWx1cmVzKVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmVJbk90aGVy
VGhyZWFkKE5PTkZBVEFMX0ZBSUxVUkUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhw
ZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7Cit9CisKK3R5cGVkZWYgRXhwZWN0RmFpbHVyZVdp
dGhUaHJlYWRzVGVzdCBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3Q7CisKKy8v
IFRlc3RzIHRoYXQgdGhlIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyIG9ubHkgY2F0
Y2hlcyBmYWlsdXJlcyBmcm9tCisvLyB0aGUgY3VycmVudCB0aHJlYWQgaWYgaXQgaXMgaW5zdGFu
dGlhdGVkIHdpdGggSU5URVJDRVBUX09OTFlfQ1VSUkVOVF9USFJFQUQuCitURVNUX0YoU2NvcGVk
RmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LCBJbnRlcmNlcHRPbmx5Q3VycmVudFRocmVh
ZCkgeworICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOworICBUZXN0UGFydFJl
c3VsdEFycmF5IHJlc3VsdHM7CisgIHsKKyAgICBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBv
cnRlciByZXBvcnRlcigKKyAgICAgICAgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6
OklOVEVSQ0VQVF9PTkxZX0NVUlJFTlRfVEhSRUFELAorICAgICAgICAmcmVzdWx0cyk7CisgICAg
QWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoRkFUQUxfRkFJTFVSRSk7CisgICAgQWRkRmFpbHVyZUlu
T3RoZXJUaHJlYWQoTk9ORkFUQUxfRkFJTFVSRSk7CisgIH0KKyAgLy8gVGhlIHR3byBmYWlsdXJl
cyBzaG91bGQgbm90IGhhdmUgYmVlbiBpbnRlcmNlcHRlZC4KKyAgRVhQRUNUX0VRKDAsIHJlc3Vs
dHMuc2l6ZSgpKSA8PCAiVGhpcyBzaG91bGRuJ3QgZmFpbC4iOworfQorCisjZW5kaWYgIC8vIEdU
RVNUX0lTX1RIUkVBRFNBRkUKKworVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3RGYXRh
bEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKKyAgLy8gRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0
IHN1Y2NlZWRzLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVD
VF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKFNVQ0NFRUQoKSwgIkV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuIik7CisgIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBub24t
ZmF0YWwgZmFpbHVyZS4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlKE5PTkZBVEFMX0ZB
SUxVUkUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQg
bm9uLWZhdGFsIGZhaWx1cmUuIik7CisgIC8vIFdyb25nIG1lc3NhZ2UuCisgIHByaW50ZigiKGV4
cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RI
UkVBRFMoQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJFKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBlY3RlZC4iKTsKK30K
KworVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRo
cmVhZHMpIHsKKyAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4K
KyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRV9PTl9BTExfVEhSRUFEUyhTVUNDRUVEKCksICJFeHBlY3RlZCBub24tZmF0YWwgIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbHVyZS4iKTsKKyAg
Ly8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBmYXRhbCBmYWlsdXJlLgor
ICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJl
LiIpOworICAvLyBXcm9uZyBtZXNzYWdlLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJl
KVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1
cmUoTk9ORkFUQUxfRkFJTFVSRSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJTb21lIG90aGVyIG5vbi1mYXRhbCBmYWlsdXJlLiIpOworfQorCisKKy8vIFR3byB0
ZXN0IGVudmlyb25tZW50cyBmb3IgdGVzdGluZyB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJv
bm1lbnQoKS4KKworY2xhc3MgRm9vRW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6RW52aXJv
bm1lbnQgeworIHB1YmxpYzoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIHByaW50Zigi
JXMiLCAiRm9vRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLlxuIik7CisgIH0KKworICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgcHJpbnRmKCIlcyIsICJGb29FbnZpcm9ubWVudDo6
VGVhckRvd24oKSBjYWxsZWQuXG4iKTsKKyAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZh
aWx1cmUuIjsKKyAgfQorfTsKKworY2xhc3MgQmFyRW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGlu
Zzo6RW52aXJvbm1lbnQgeworIHB1YmxpYzoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAg
IHByaW50ZigiJXMiLCAiQmFyRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLlxuIik7CisgIH0K
KworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgcHJpbnRmKCIlcyIsICJCYXJFbnZp
cm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuXG4iKTsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJF
eHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOworICB9Cit9OworCisvLyBUaGUgbWFpbiBmdW5j
dGlvbi4KKy8vCisvLyBUaGUgaWRlYSBpcyB0byB1c2UgR29vZ2xlIFRlc3QgdG8gcnVuIGFsbCB0
aGUgdGVzdHMgd2UgaGF2ZSBkZWZpbmVkIChzb21lCisvLyBvZiB0aGVtIGFyZSBpbnRlbmRlZCB0
byBmYWlsKSwgYW5kIHRoZW4gY29tcGFyZSB0aGUgdGVzdCByZXN1bHRzCisvLyB3aXRoIHRoZSAi
Z29sZGVuIiBmaWxlLgoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIHRlc3Rp
bmc6OkdURVNUX0ZMQUcocHJpbnRfdGltZSkgPSBmYWxzZTsKKworICAvLyBXZSBqdXN0IHJ1biB0
aGUgdGVzdHMsIGtub3dpbmcgc29tZSBvZiB0aGVtIGFyZSBpbnRlbmRlZCB0byBmYWlsLgorICAv
LyBXZSB3aWxsIHVzZSBhIHNlcGFyYXRlIFB5dGhvbiBzY3JpcHQgdG8gY29tcGFyZSB0aGUgb3V0
cHV0IG9mCisgIC8vIHRoaXMgcHJvZ3JhbSB3aXRoIHRoZSBnb2xkZW4gZmlsZS4KKworICAvLyBJ
dCdzIGhhcmQgdG8gdGVzdCBJbml0R29vZ2xlVGVzdCgpIGRpcmVjdGx5LCBhcyBpdCBoYXMgbWFu
eQorICAvLyBnbG9iYWwgc2lkZSBlZmZlY3RzLiAgVGhlIGZvbGxvd2luZyBsaW5lIHNlcnZlcyBh
cyBhIHNhbml0eSB0ZXN0CisgIC8vIGZvciBpdC4KKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3Qo
JmFyZ2MsIGFyZ3YpOworICBib29sIGludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hv
Y190ZXN0cyA9CisgICAgICBzdGQ6OmNvdW50KGFyZ3YsIGFyZ3YgKyBhcmdjLAorICAgICAgICAg
ICAgICAgICBzdGQ6OnN0cmluZygiaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9j
X3Rlc3RzIikpID4gMDsKKworI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCisgIGlmICh0ZXN0aW5n
OjppbnRlcm5hbDo6R1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkgIT0gIiIpIHsK
KyAgICAvLyBTa2lwIHRoZSB1c3VhbCBvdXRwdXQgY2FwdHVyaW5nIGlmIHdlJ3JlIHJ1bm5pbmcg
YXMgdGhlIGNoaWxkCisgICAgLy8gcHJvY2VzcyBvZiBhbiB0aHJlYWRzYWZlLXN0eWxlIGRlYXRo
IHRlc3QuCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKyAgICBwb3NpeDo6RlJlb3BlbigibnVsOiIs
ICJ3Iiwgc3Rkb3V0KTsKKyMgZWxzZQorICAgIHBvc2l4OjpGUmVvcGVuKCIvZGV2L251bGwiLCAi
dyIsIHN0ZG91dCk7CisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisgICAgcmV0dXJuIFJV
Tl9BTExfVEVTVFMoKTsKKyAgfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisg
IGlmIChpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMpCisgICAgcmV0
dXJuIFJVTl9BTExfVEVTVFMoKTsKKworICAvLyBSZWdpc3RlcnMgdHdvIGdsb2JhbCB0ZXN0IGVu
dmlyb25tZW50cy4KKyAgLy8gVGhlIGdvbGRlbiBmaWxlIHZlcmlmaWVzIHRoYXQgdGhleSBhcmUg
c2V0IHVwIGluIHRoZSBvcmRlciB0aGV5CisgIC8vIGFyZSByZWdpc3RlcmVkLCBhbmQgdG9ybiBk
b3duIGluIHRoZSByZXZlcnNlIG9yZGVyLgorICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJv
bm1lbnQobmV3IEZvb0Vudmlyb25tZW50KTsKKyAgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmly
b25tZW50KG5ldyBCYXJFbnZpcm9ubWVudCk7CisjaWYgX01TQ19WRVIKK0dURVNUX0RJU0FCTEVf
TVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQxMjcKKyNlbmRpZiAgLy8gIF9NU0NfVkVSCisgIHJl
dHVybiBSdW5BbGxUZXN0cygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMS10ZXN0LnB5IGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1u
YW1lMS10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhMDg0NzdhNzdlYmRmMGFhNTVmMjM0NDRhYmQ2Yjgz
OWQ5MGJhNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3QucHkKQEAgLTAsMCArMSw2
MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJWZXJpZmll
cyB0aGF0IEdvb2dsZSBUZXN0IHdhcm5zIHRoZSB1c2VyIHdoZW4gbm90IGluaXRpYWxpemVkIHBy
b3Blcmx5LiIiIgorCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitiaW5hcnlfbmFtZSA9ICdn
b29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMS10ZXN0XycKK0NPTU1BTkQgPSBndGVz
dF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aChiaW5hcnlfbmFtZSkKKworCitkZWYg
QXNzZXJ0KGNvbmRpdGlvbik6CisgIGlmIG5vdCBjb25kaXRpb246CisgICAgcmFpc2UgQXNzZXJ0
aW9uRXJyb3IKKworCitkZWYgVGVzdEV4aXRDb2RlQW5kT3V0cHV0KGNvbW1hbmQpOgorICAiIiJS
dW5zIHRoZSBnaXZlbiBjb21tYW5kIGFuZCB2ZXJpZmllcyBpdHMgZXhpdCBjb2RlIGFuZCBvdXRw
dXQuIiIiCisKKyAgZXJyID0gKCdQYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSBcJyJJbnZhbGlkV2l0
aFF1b3RlcyJcJyBpcyBpbnZhbGlkJykKKworICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9j
ZXNzKGNvbW1hbmQpCisgIEFzc2VydChwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsKQorCisgICMgVmVy
aWZ5IHRoZSBvdXRwdXQgbWVzc2FnZSBjb250YWlucyBhcHByb3ByaWF0ZSBvdXRwdXQKKyAgQXNz
ZXJ0KGVyciBpbiBwLm91dHB1dCkKKworCitjbGFzcyBHVGVzdFBhcmFtVGVzdEludmFsaWROYW1l
MVRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisKKyAgZGVmIHRlc3RFeGl0Q29kZUFu
ZE91dHB1dChzZWxmKToKKyAgICBUZXN0RXhpdENvZGVBbmRPdXRwdXQoQ09NTUFORCkKKworCitp
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRl
c3QtaW52YWxpZC1uYW1lMS10ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdF8uY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWE5NTE1NWIyM2E3ODcxZGI1ZDI1NDlhMGU5ZjkwNTA3NWE5Mzk5NAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWlu
dmFsaWQtbmFtZTEtdGVzdF8uY2MKQEAgLTAsMCArMSw1MCBAQAorLy8gQ29weXJpZ2h0IDIwMTUs
IEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgor
CituYW1lc3BhY2UgeworY2xhc3MgRHVtbXlUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdp
dGhQYXJhbTxjb25zdCBjaGFyICo+IHt9OworCitURVNUX1AoRHVtbXlUZXN0LCBEdW1teSkgewor
fQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChJbnZhbGlkVGVzdE5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICBEdW1teVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rp
bmc6OlZhbHVlcygiSW52YWxpZFdpdGhRdW90ZXMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgpKTsKKworfSAgLy8gbmFtZXNwYWNl
CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAgdGVzdGluZzo6SW5pdEdv
b2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0t
dGVzdC1pbnZhbGlkLW5hbWUyLXRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRlc3QucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YWI4MzhmNDYzMjI5MWQxY2I3OGU0YTExZWMzYWIwYzc3M2I5NGQ1YwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWlu
dmFsaWQtbmFtZTItdGVzdC5weQpAQCAtMCwwICsxLDYyIEBACisjIS91c3IvYmluL2VudiBweXRo
b24KKyMKKyMgQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3Qgd2FybnMg
dGhlIHVzZXIgd2hlbiBub3QgaW5pdGlhbGl6ZWQgcHJvcGVybHkuIiIiCisKK2ltcG9ydCBndGVz
dF90ZXN0X3V0aWxzCisKK2JpbmFyeV9uYW1lID0gJ2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZh
bGlkLW5hbWUyLXRlc3RfJworQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1
dGFibGVQYXRoKGJpbmFyeV9uYW1lKQorCisKK2RlZiBBc3NlcnQoY29uZGl0aW9uKToKKyAgaWYg
bm90IGNvbmRpdGlvbjoKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCisKK2RlZiBUZXN0RXhp
dENvZGVBbmRPdXRwdXQoY29tbWFuZCk6CisgICIiIlJ1bnMgdGhlIGdpdmVuIGNvbW1hbmQgYW5k
IHZlcmlmaWVzIGl0cyBleGl0IGNvZGUgYW5kIG91dHB1dC4iIiIKKworICBlcnIgPSAoJ0R1cGxp
Y2F0ZSBwYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSBcJ2FcJycpCisKKyAgcCA9IGd0ZXN0X3Rlc3Rf
dXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kKQorICBBc3NlcnQocC50ZXJtaW5hdGVkX2J5X3NpZ25h
bCkKKworICAjIENoZWNrIGZvciBhcHByb3ByaWF0ZSBvdXRwdXQKKyAgQXNzZXJ0KGVyciBpbiBw
Lm91dHB1dCkKKworCitjbGFzcyBHVGVzdFBhcmFtVGVzdEludmFsaWROYW1lMlRlc3QoZ3Rlc3Rf
dGVzdF91dGlscy5UZXN0Q2FzZSk6CisKKyAgZGVmIHRlc3RFeGl0Q29kZUFuZE91dHB1dChzZWxm
KToKKyAgICBUZXN0RXhpdENvZGVBbmRPdXRwdXQoQ09NTUFORCkKKworaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFt
ZTItdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFy
YW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmMDkzNDkwZTlkYTJm
MDJlZDI4YTJkMDcxMjQ0NWUyNDE3Y2JkYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRl
c3RfLmNjCkBAIC0wLDAgKzEsNTUgQEAKKy8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgor
Ly8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsK
K2NsYXNzIER1bW15VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08Y29uc3Qg
Y2hhciAqPiB7fTsKKworc3RkOjpzdHJpbmcgU3RyaW5nUGFyYW1UZXN0U3VmZml4KAorICAgIGNv
bnN0IHRlc3Rpbmc6OlRlc3RQYXJhbUluZm88Y29uc3QgY2hhcio+JiBpbmZvKSB7CisgIHJldHVy
biBzdGQ6OnN0cmluZyhpbmZvLnBhcmFtKTsKK30KKworVEVTVF9QKER1bW15VGVzdCwgRHVtbXkp
IHsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoRHVwbGljYXRlVGVzdE5hbWVzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgRHVtbXlUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
Ojp0ZXN0aW5nOjpWYWx1ZXMoImEiLCAiYiIsICJhIiwgImMiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFN0cmluZ1BhcmFtVGVzdFN1ZmZpeCk7Cit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgm
YXJnYywgYXJndik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CisKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0
LXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc4OWNhYjI3MDc0MTRjNDY0ODQ5NmQ3YjlmYmFiNGZlNTMx
ZjBiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MKQEAgLTAsMCArMSwxMTA5IEBACisvLyBDb3B5cmln
aHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8v
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlv
bi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vCisvLyBUZXN0cyBmb3IgR29v
Z2xlIFRlc3QgaXRzZWxmLiBUaGlzIGZpbGUgdmVyaWZpZXMgdGhhdCB0aGUgcGFyYW1ldGVyCisv
LyBnZW5lcmF0b3JzIG9iamVjdHMgcHJvZHVjZSBjb3JyZWN0IHBhcmFtZXRlciBzZXF1ZW5jZXMg
YW5kIHRoYXQKKy8vIEdvb2dsZSBUZXN0IHJ1bnRpbWUgaW5zdGFudGlhdGVzIGNvcnJlY3QgdGVz
dHMgZnJvbSB0aG9zZSBzZXF1ZW5jZXMuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisj
IGluY2x1ZGUgPGFsZ29yaXRobT4KKyMgaW5jbHVkZSA8aW9zdHJlYW0+CisjIGluY2x1ZGUgPGxp
c3Q+CisjIGluY2x1ZGUgPHNzdHJlYW0+CisjIGluY2x1ZGUgPHN0cmluZz4KKyMgaW5jbHVkZSA8
dmVjdG9yPgorCisjIGluY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIgIC8vIGZvciBV
bml0VGVzdE9wdGlvbnMKKyMgaW5jbHVkZSAidGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVz
dC5oIgorCit1c2luZyA6OnN0ZDo6dmVjdG9yOwordXNpbmcgOjpzdGQ6OnNvcnQ7CisKK3VzaW5n
IDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50OwordXNpbmcgOjp0ZXN0aW5nOjpC
b29sOwordXNpbmcgOjp0ZXN0aW5nOjpNZXNzYWdlOwordXNpbmcgOjp0ZXN0aW5nOjpSYW5nZTsK
K3VzaW5nIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTsKK3VzaW5nIDo6dGVzdGluZzo6VmFsdWVz
OwordXNpbmcgOjp0ZXN0aW5nOjpWYWx1ZXNJbjsKKworIyBpZiBHVEVTVF9IQVNfQ09NQklORQor
dXNpbmcgOjp0ZXN0aW5nOjpDb21iaW5lOwordXNpbmcgOjp0ZXN0aW5nOjpnZXQ7Cit1c2luZyA6
OnRlc3Rpbmc6Om1ha2VfdHVwbGU7Cit1c2luZyA6OnRlc3Rpbmc6OnR1cGxlOworIyBlbmRpZiAg
Ly8gR1RFU1RfSEFTX0NPTUJJTkUKKwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1H
ZW5lcmF0b3I7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml0VGVzdE9wdGlvbnM7CisK
Ky8vIFByaW50cyBhIHZhbHVlIHRvIGEgc3RyaW5nLgorLy8KKy8vIEZJWE1FOiByZW1vdmUgUHJp
bnRWYWx1ZSgpIHdoZW4gd2UgbW92ZSBtYXRjaGVycyBhbmQKKy8vIEVYUEVDVF9USEFUKCkgZnJv
bSBHb29nbGUgTW9jayB0byBHb29nbGUgVGVzdC4gIEF0IHRoYXQgdGltZSwgd2UKKy8vIGNhbiB3
cml0ZSBFWFBFQ1RfVEhBVCh4LCBFcSh5KSkgdG8gY29tcGFyZSB0d28gdHVwbGVzIHggYW5kIHks
IGFzCisvLyBFWFBFQ1RfVEhBVCgpIGFuZCB0aGUgbWF0Y2hlcnMga25vdyBob3cgdG8gcHJpbnQg
dHVwbGVzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cis6OnN0ZDo6c3RyaW5nIFByaW50VmFsdWUo
Y29uc3QgVCYgdmFsdWUpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07CisgIHN0cmVh
bSA8PCB2YWx1ZTsKKyAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKK30KKworIyBpZiBHVEVTVF9IQVNf
Q09NQklORQorCisvLyBUaGVzZSBvdmVybG9hZHMgYWxsb3cgcHJpbnRpbmcgdHVwbGVzIGluIG91
ciB0ZXN0cy4gIFdlIGNhbm5vdAorLy8gZGVmaW5lIGFuIG9wZXJhdG9yPDwgZm9yIHR1cGxlcywg
YXMgdGhhdCBkZWZpbml0aW9uIG5lZWRzIHRvIGJlIGluCisvLyB0aGUgc3RkIG5hbWVzcGFjZSBp
biBvcmRlciB0byBiZSBwaWNrZWQgdXAgYnkgR29vZ2xlIFRlc3QgdmlhCisvLyBBcmd1bWVudC1E
ZXBlbmRlbnQgTG9va3VwLCB5ZXQgZGVmaW5pbmcgYW55dGhpbmcgaW4gdGhlIHN0ZAorLy8gbmFt
ZXNwYWNlIGluIG5vbi1TVEwgY29kZSBpcyB1bmRlZmluZWQgYmVoYXZpb3IuCisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cis6OnN0ZDo6c3RyaW5nIFByaW50VmFsdWUoY29u
c3QgdHVwbGU8VDEsIFQyPiYgdmFsdWUpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07
CisgIHN0cmVhbSA8PCAiKCIgPDwgZ2V0PDA+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDwxPih2YWx1
ZSkgPDwgIikiOworICByZXR1cm4gc3RyZWFtLnN0cigpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KKzo6c3RkOjpzdHJpbmcgUHJpbnRWYWx1
ZShjb25zdCB0dXBsZTxUMSwgVDIsIFQzPiYgdmFsdWUpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVh
bSBzdHJlYW07CisgIHN0cmVhbSA8PCAiKCIgPDwgZ2V0PDA+KHZhbHVlKSA8PCAiLCAiIDw8IGdl
dDwxPih2YWx1ZSkKKyAgICAgICAgIDw8ICIsICI8PCBnZXQ8Mj4odmFsdWUpIDw8ICIpIjsKKyAg
cmV0dXJuIHN0cmVhbS5zdHIoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0
eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5h
bWUgVDEwPgorOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKAorICAgIGNvbnN0IHR1cGxlPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD4mIHZhbHVlKSB7CisgIDo6c3RkOjpz
dHJpbmdzdHJlYW0gc3RyZWFtOworICBzdHJlYW0gPDwgIigiIDw8IGdldDwwPih2YWx1ZSkgPDwg
IiwgIiA8PCBnZXQ8MT4odmFsdWUpCisgICAgICAgICA8PCAiLCAiPDwgZ2V0PDI+KHZhbHVlKSA8
PCAiLCAiIDw8IGdldDwzPih2YWx1ZSkKKyAgICAgICAgIDw8ICIsICI8PCBnZXQ8ND4odmFsdWUp
IDw8ICIsICIgPDwgZ2V0PDU+KHZhbHVlKQorICAgICAgICAgPDwgIiwgIjw8IGdldDw2Pih2YWx1
ZSkgPDwgIiwgIiA8PCBnZXQ8Nz4odmFsdWUpCisgICAgICAgICA8PCAiLCAiPDwgZ2V0PDg+KHZh
bHVlKSA8PCAiLCAiIDw8IGdldDw5Pih2YWx1ZSkgPDwgIikiOworICByZXR1cm4gc3RyZWFtLnN0
cigpOworfQorCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQorCisvLyBWZXJpZmllcyB0
aGF0IGEgc2VxdWVuY2UgZ2VuZXJhdGVkIGJ5IHRoZSBnZW5lcmF0b3IgYW5kIGFjY2Vzc2VkCisv
LyB2aWEgdGhlIGl0ZXJhdG9yIG9iamVjdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBvbmUgdXNpbmcg
R29vZ2xlIFRlc3QKKy8vIGFzc2VydGlvbnMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90
IE4+Cit2b2lkIFZlcmlmeUdlbmVyYXRvcihjb25zdCBQYXJhbUdlbmVyYXRvcjxUPiYgZ2VuZXJh
dG9yLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCAoJmV4cGVjdGVkX3ZhbHVlcylbTl0p
IHsKKyAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VD46Oml0ZXJhdG9yIGl0ID0gZ2VuZXJhdG9y
LmJlZ2luKCk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgTjsgKytpKSB7CisgICAgQVNTRVJU
X0ZBTFNFKGl0ID09IGdlbmVyYXRvci5lbmQoKSkKKyAgICAgICAgPDwgIkF0IGVsZW1lbnQgIiA8
PCBpIDw8ICIgd2hlbiBhY2Nlc3NpbmcgdmlhIGFuIGl0ZXJhdG9yICIKKyAgICAgICAgPDwgImNy
ZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rvci5cbiI7CisgICAgLy8gV2UgY2Fubm90IHVz
ZSBFWFBFQ1RfRVEoKSBoZXJlIGFzIHRoZSB2YWx1ZXMgbWF5IGJlIHR1cGxlcywKKyAgICAvLyB3
aGljaCBkb24ndCBzdXBwb3J0IDw8LgorICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkX3ZhbHVlc1tp
XSA9PSAqaXQpCisgICAgICAgIDw8ICJ3aGVyZSBpIGlzICIgPDwgaQorICAgICAgICA8PCAiLCBl
eHBlY3RlZF92YWx1ZXNbaV0gaXMgIiA8PCBQcmludFZhbHVlKGV4cGVjdGVkX3ZhbHVlc1tpXSkK
KyAgICAgICAgPDwgIiwgKml0IGlzICIgPDwgUHJpbnRWYWx1ZSgqaXQpCisgICAgICAgIDw8ICIs
IGFuZCAnaXQnIGlzIGFuIGl0ZXJhdG9yIGNyZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rv
ci5cbiI7CisgICAgKytpdDsKKyAgfQorICBFWFBFQ1RfVFJVRShpdCA9PSBnZW5lcmF0b3IuZW5k
KCkpCisgICAgICAgIDw8ICJBdCB0aGUgcHJlc3VtZWQgZW5kIG9mIHNlcXVlbmNlIHdoZW4gYWNj
ZXNzaW5nIHZpYSBhbiBpdGVyYXRvciAiCisgICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhlIGNv
cHkgY29uc3RydWN0b3IuXG4iOworCisgIC8vIFRlc3QgdGhlIGl0ZXJhdG9yIGFzc2lnbm1lbnQu
IFRoZSBmb2xsb3dpbmcgbGluZXMgdmVyaWZ5IHRoYXQKKyAgLy8gdGhlIHNlcXVlbmNlIGFjY2Vz
c2VkIHZpYSBhbiBpdGVyYXRvciBpbml0aWFsaXplZCB2aWEgdGhlCisgIC8vIGFzc2lnbm1lbnQg
b3BlcmF0b3IgKGFzIG9wcG9zZWQgdG8gYSBjb3B5IGNvbnN0cnVjdG9yKSBtYXRjaGVzCisgIC8v
IGp1c3QgdGhlIHNhbWUuCisgIGl0ID0gZ2VuZXJhdG9yLmJlZ2luKCk7CisgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgTjsgKytpKSB7CisgICAgQVNTRVJUX0ZBTFNFKGl0ID09IGdlbmVyYXRvci5l
bmQoKSkKKyAgICAgICAgPDwgIkF0IGVsZW1lbnQgIiA8PCBpIDw8ICIgd2hlbiBhY2Nlc3Npbmcg
dmlhIGFuIGl0ZXJhdG9yICIKKyAgICAgICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUgYXNzaWdubWVu
dCBvcGVyYXRvci5cbiI7CisgICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWRfdmFsdWVzW2ldID09ICpp
dCkKKyAgICAgICAgPDwgIndoZXJlIGkgaXMgIiA8PCBpCisgICAgICAgIDw8ICIsIGV4cGVjdGVk
X3ZhbHVlc1tpXSBpcyAiIDw8IFByaW50VmFsdWUoZXhwZWN0ZWRfdmFsdWVzW2ldKQorICAgICAg
ICA8PCAiLCAqaXQgaXMgIiA8PCBQcmludFZhbHVlKCppdCkKKyAgICAgICAgPDwgIiwgYW5kICdp
dCcgaXMgYW4gaXRlcmF0b3IgY3JlYXRlZCB3aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9yLlxuIjsK
KyAgICArK2l0OworICB9CisgIEVYUEVDVF9UUlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSkKKyAg
ICAgICAgPDwgIkF0IHRoZSBwcmVzdW1lZCBlbmQgb2Ygc2VxdWVuY2Ugd2hlbiBhY2Nlc3Npbmcg
dmlhIGFuIGl0ZXJhdG9yICIKKyAgICAgICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUgYXNzaWdubWVu
dCBvcGVyYXRvci5cbiI7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBWZXJpZnlH
ZW5lcmF0b3JJc0VtcHR5KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ+JiBnZW5lcmF0b3IpIHsKKyAg
dHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VD46Oml0ZXJhdG9yIGl0ID0gZ2VuZXJhdG9yLmJlZ2lu
KCk7CisgIEVYUEVDVF9UUlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSk7CisKKyAgaXQgPSBnZW5l
cmF0b3IuYmVnaW4oKTsKKyAgRVhQRUNUX1RSVUUoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKTsKK30K
KworLy8gR2VuZXJhdG9yIHRlc3RzLiBUaGV5IHRlc3QgdGhhdCBlYWNoIG9mIHRoZSBwcm92aWRl
ZCBnZW5lcmF0b3IgZnVuY3Rpb25zCisvLyBnZW5lcmF0ZXMgYW4gZXhwZWN0ZWQgc2VxdWVuY2Ug
b2YgdmFsdWVzLiBUaGUgZ2VuZXJhbCB0ZXN0IHBhdHRlcm4KKy8vIGluc3RhbnRpYXRlcyBhIGdl
bmVyYXRvciB1c2luZyBvbmUgb2YgdGhlIGdlbmVyYXRvciBmdW5jdGlvbnMsCisvLyBjaGVja3Mg
dGhlIHNlcXVlbmNlIHByb2R1Y2VkIGJ5IHRoZSBnZW5lcmF0b3IgdXNpbmcgaXRzIGl0ZXJhdG9y
IEFQSSwKKy8vIGFuZCB0aGVuIHJlc2V0cyB0aGUgaXRlcmF0b3IgYmFjayB0byB0aGUgYmVnaW5u
aW5nIG9mIHRoZSBzZXF1ZW5jZQorLy8gYW5kIGNoZWNrcyB0aGUgc2VxdWVuY2UgYWdhaW4uCisK
Ky8vIFRlc3RzIHRoYXQgaXRlcmF0b3JzIHByb2R1Y2VkIGJ5IGdlbmVyYXRvciBmdW5jdGlvbnMg
Y29uZm9ybSB0byB0aGUKKy8vIEZvcndhcmRJdGVyYXRvciBjb25jZXB0LgorVEVTVChJdGVyYXRv
clRlc3QsIFBhcmFtSXRlcmF0b3JDb25mb3Jtc1RvRm9yd2FyZEl0ZXJhdG9yQ29uY2VwdCkgewor
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDEwKTsKKyAgUGFyYW1H
ZW5lcmF0b3I8aW50Pjo6aXRlcmF0b3IgaXQgPSBnZW4uYmVnaW4oKTsKKworICAvLyBWZXJpZmll
cyB0aGF0IGl0ZXJhdG9yIGluaXRpYWxpemF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkLgorICBQYXJh
bUdlbmVyYXRvcjxpbnQ+OjppdGVyYXRvciBpdDIgPSBpdDsKKyAgRVhQRUNUX1RSVUUoKml0ID09
ICppdDIpIDw8ICJJbml0aWFsaXplZCBpdGVyYXRvcnMgbXVzdCBwb2ludCB0byB0aGUgIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgImVsZW1lbnQgc2FtZSBhcyBpdHMgc291cmNlIHBv
aW50cyB0byI7CisKKyAgLy8gVmVyaWZpZXMgdGhhdCBpdGVyYXRvciBhc3NpZ25tZW50IHdvcmtz
IGFzIGV4cGVjdGVkLgorICArK2l0OworICBFWFBFQ1RfRkFMU0UoKml0ID09ICppdDIpOworICBp
dDIgPSBpdDsKKyAgRVhQRUNUX1RSVUUoKml0ID09ICppdDIpIDw8ICJBc3NpZ25lZCBpdGVyYXRv
cnMgbXVzdCBwb2ludCB0byB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgImVs
ZW1lbnQgc2FtZSBhcyBpdHMgc291cmNlIHBvaW50cyB0byI7CisKKyAgLy8gVmVyaWZpZXMgdGhh
dCBwcmVmaXggb3BlcmF0b3IrKygpIHJldHVybnMgKnRoaXMuCisgIEVYUEVDVF9FUSgmaXQsICYo
KytpdCkpIDw8ICJSZXN1bHQgb2YgdGhlIHByZWZpeCBvcGVyYXRvcisrIG11c3QgYmUgIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAicmVmZXIgdG8gdGhlIG9yaWdpbmFsIG9iamVjdCI7
CisKKyAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgcmVzdWx0IG9mIHRoZSBwb3N0Zml4IG9wZXJhdG9y
KysgcG9pbnRzIHRvIHRoZSB2YWx1ZQorICAvLyBwb2ludGVkIHRvIGJ5IHRoZSBvcmlnaW5hbCBp
dGVyYXRvci4KKyAgaW50IG9yaWdpbmFsX3ZhbHVlID0gKml0OyAgLy8gSGF2ZSB0byBjb21wdXRl
IGl0IG91dHNpZGUgb2YgbWFjcm8gY2FsbCB0byBiZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyB1bmFmZmVjdGVkIGJ5IHRoZSBwYXJhbWV0ZXIgZXZhbHVhdGlvbiBvcmRlci4KKyAg
RVhQRUNUX0VRKG9yaWdpbmFsX3ZhbHVlLCAqKGl0KyspKTsKKworICAvLyBWZXJpZmllcyB0aGF0
IHByZWZpeCBhbmQgcG9zdGZpeCBvcGVyYXRvcisrKCkgYWR2YW5jZSBhbiBpdGVyYXRvcgorICAv
LyBhbGwgdGhlIHNhbWUuCisgIGl0MiA9IGl0OworICArK2l0OworICArK2l0MjsKKyAgRVhQRUNU
X1RSVUUoKml0ID09ICppdDIpOworfQorCisvLyBUZXN0cyB0aGF0IFJhbmdlKCkgZ2VuZXJhdGVz
IHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZVdpdGhEZWZh
dWx0U3RlcCkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDMp
OworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MCwgMSwgMn07CisgIFZlcmlmeUdl
bmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIEVkZ2UgY2FzZS4gVGVzdHMg
dGhhdCBSYW5nZSgpIGdlbmVyYXRlcyB0aGUgc2luZ2xlIGVsZW1lbnQgc2VxdWVuY2UKKy8vIGFz
IGV4cGVjdGVkIHdoZW4gcHJvdmlkZWQgd2l0aCByYW5nZSBsaW1pdHMgdGhhdCBhcmUgZXF1YWwu
CitURVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VTaW5nbGVWYWx1ZSkgeworICBjb25zdCBQYXJhbUdl
bmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDEpOworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFs
dWVzW10gPSB7MH07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9
CisKKy8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBSYW5nZSgpIHdpdGggZ2VuZXJhdGVzIGVtcHR5
IHNlcXVlbmNlIHdoZW4KKy8vIHN1cHBsaWVkIHdpdGggYW4gZW1wdHkgcmFuZ2UuCitURVNUKFJh
bmdlVGVzdCwgSW50UmFuZ2VFbXB0eSkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdl
biA9IFJhbmdlKDAsIDApOworICBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7Cit9CisKKy8v
IFRlc3RzIHRoYXQgUmFuZ2UoKSB3aXRoIGN1c3RvbSBzdGVwIChncmVhdGVyIHRoZW4gb25lKSBn
ZW5lcmF0ZXMKKy8vIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoUmFuZ2VUZXN0LCBJbnRS
YW5nZVdpdGhDdXN0b21TdGVwKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0g
UmFuZ2UoMCwgOSwgMyk7CisgIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHswLCAzLCA2
fTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gVGVz
dHMgdGhhdCBSYW5nZSgpIHdpdGggY3VzdG9tIHN0ZXAgKGdyZWF0ZXIgdGhlbiBvbmUpIGdlbmVy
YXRlcworLy8gdGhlIGV4cGVjdGVkIHNlcXVlbmNlIHdoZW4gdGhlIGxhc3QgZWxlbWVudCBkb2Vz
IG5vdCBmYWxsIG9uIHRoZQorLy8gdXBwZXIgcmFuZ2UgbGltaXQuIFNlcXVlbmNlcyBnZW5lcmF0
ZWQgYnkgUmFuZ2UoKSBtdXN0IG5vdCBoYXZlCisvLyBlbGVtZW50cyBiZXlvbmQgdGhlIHJhbmdl
IGxpbWl0cy4KK1RFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZVdpdGhDdXN0b21TdGVwT3ZlclVwcGVy
Qm91bmQpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCA0LCAz
KTsKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezAsIDN9OworICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBWZXJpZmllcyB0aGF0IFJhbmdl
IHdvcmtzIHdpdGggdXNlci1kZWZpbmVkIHR5cGVzIHRoYXQgZGVmaW5lCisvLyBjb3B5IGNvbnN0
cnVjdG9yLCBvcGVyYXRvcj0oKSwgb3BlcmF0b3IrKCksIGFuZCBvcGVyYXRvcjwoKS4KK2NsYXNz
IERvZ0FkZGVyIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IERvZ0FkZGVyKGNvbnN0IGNoYXIqIGFf
dmFsdWUpIDogdmFsdWVfKGFfdmFsdWUpIHt9CisgIERvZ0FkZGVyKGNvbnN0IERvZ0FkZGVyJiBv
dGhlcikgOiB2YWx1ZV8ob3RoZXIudmFsdWVfLmNfc3RyKCkpIHt9CisKKyAgRG9nQWRkZXIgb3Bl
cmF0b3I9KGNvbnN0IERvZ0FkZGVyJiBvdGhlcikgeworICAgIGlmICh0aGlzICE9ICZvdGhlcikK
KyAgICAgIHZhbHVlXyA9IG90aGVyLnZhbHVlXzsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKyAg
RG9nQWRkZXIgb3BlcmF0b3IrKGNvbnN0IERvZ0FkZGVyJiBvdGhlcikgY29uc3QgeworICAgIE1l
c3NhZ2UgbXNnOworICAgIG1zZyA8PCB2YWx1ZV8uY19zdHIoKSA8PCBvdGhlci52YWx1ZV8uY19z
dHIoKTsKKyAgICByZXR1cm4gRG9nQWRkZXIobXNnLkdldFN0cmluZygpLmNfc3RyKCkpOworICB9
CisgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IERvZ0FkZGVyJiBvdGhlcikgY29uc3QgeworICAgIHJl
dHVybiB2YWx1ZV8gPCBvdGhlci52YWx1ZV87CisgIH0KKyAgY29uc3Qgc3RkOjpzdHJpbmcmIHZh
bHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CisKKyBwcml2YXRlOgorICBzdGQ6OnN0cmlu
ZyB2YWx1ZV87Cit9OworCitURVNUKFJhbmdlVGVzdCwgV29ya3NXaXRoQUN1c3RvbVR5cGUpIHsK
KyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8RG9nQWRkZXI+IGdlbiA9CisgICAgICBSYW5nZShEb2dB
ZGRlcigiY2F0IiksIERvZ0FkZGVyKCJjYXRkb2dkb2ciKSwgRG9nQWRkZXIoImRvZyIpKTsKKyAg
UGFyYW1HZW5lcmF0b3I8RG9nQWRkZXI+OjppdGVyYXRvciBpdCA9IGdlbi5iZWdpbigpOworCisg
IEFTU0VSVF9GQUxTRShpdCA9PSBnZW4uZW5kKCkpOworICBFWFBFQ1RfU1RSRVEoImNhdCIsIGl0
LT52YWx1ZSgpLmNfc3RyKCkpOworCisgIEFTU0VSVF9GQUxTRSgrK2l0ID09IGdlbi5lbmQoKSk7
CisgIEVYUEVDVF9TVFJFUSgiY2F0ZG9nIiwgaXQtPnZhbHVlKCkuY19zdHIoKSk7CisKKyAgRVhQ
RUNUX1RSVUUoKytpdCA9PSBnZW4uZW5kKCkpOworfQorCitjbGFzcyBJbnRXcmFwcGVyIHsKKyBw
dWJsaWM6CisgIGV4cGxpY2l0IEludFdyYXBwZXIoaW50IGFfdmFsdWUpIDogdmFsdWVfKGFfdmFs
dWUpIHt9CisgIEludFdyYXBwZXIoY29uc3QgSW50V3JhcHBlciYgb3RoZXIpIDogdmFsdWVfKG90
aGVyLnZhbHVlXykge30KKworICBJbnRXcmFwcGVyIG9wZXJhdG9yPShjb25zdCBJbnRXcmFwcGVy
JiBvdGhlcikgeworICAgIHZhbHVlXyA9IG90aGVyLnZhbHVlXzsKKyAgICByZXR1cm4gKnRoaXM7
CisgIH0KKyAgLy8gb3BlcmF0b3IrKCkgYWRkcyBhIGRpZmZlcmVudCB0eXBlLgorICBJbnRXcmFw
cGVyIG9wZXJhdG9yKyhpbnQgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIEludFdyYXBwZXIodmFsdWVf
ICsgb3RoZXIpOyB9CisgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEludFdyYXBwZXImIG90aGVyKSBj
b25zdCB7CisgICAgcmV0dXJuIHZhbHVlXyA8IG90aGVyLnZhbHVlXzsKKyAgfQorICBpbnQgdmFs
dWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KKworIHByaXZhdGU6CisgIGludCB2YWx1ZV87
Cit9OworCitURVNUKFJhbmdlVGVzdCwgV29ya3NXaXRoQUN1c3RvbVR5cGVXaXRoRGlmZmVyZW50
SW5jcmVtZW50VHlwZSkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxJbnRXcmFwcGVyPiBnZW4g
PSBSYW5nZShJbnRXcmFwcGVyKDApLCBJbnRXcmFwcGVyKDIpKTsKKyAgUGFyYW1HZW5lcmF0b3I8
SW50V3JhcHBlcj46Oml0ZXJhdG9yIGl0ID0gZ2VuLmJlZ2luKCk7CisKKyAgQVNTRVJUX0ZBTFNF
KGl0ID09IGdlbi5lbmQoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+dmFsdWUoKSk7CisKKyAgQVNT
RVJUX0ZBTFNFKCsraXQgPT0gZ2VuLmVuZCgpKTsKKyAgRVhQRUNUX0VRKDEsIGl0LT52YWx1ZSgp
KTsKKworICBFWFBFQ1RfVFJVRSgrK2l0ID09IGdlbi5lbmQoKSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgVmFsdWVzSW4oKSB3aXRoIGFuIGFycmF5IHBhcmFtZXRlciBnZW5lcmF0ZXMKKy8vIHRoZSBl
eHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJbkFycmF5KSB7Cisg
IGludCBhcnJheVtdID0gezMsIDUsIDh9OworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdl
biA9IFZhbHVlc0luKGFycmF5KTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgYXJyYXkpOworfQor
CisvLyBUZXN0cyB0aGF0IFZhbHVlc0luKCkgd2l0aCBhIGNvbnN0IGFycmF5IHBhcmFtZXRlciBn
ZW5lcmF0ZXMKKy8vIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoVmFsdWVzSW5UZXN0LCBW
YWx1ZXNJbkNvbnN0QXJyYXkpIHsKKyAgY29uc3QgaW50IGFycmF5W10gPSB7MywgNSwgOH07Cisg
IGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4oYXJyYXkpOworICBWZXJp
ZnlHZW5lcmF0b3IoZ2VuLCBhcnJheSk7Cit9CisKKy8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBW
YWx1ZXNJbigpIHdpdGggYW4gYXJyYXkgcGFyYW1ldGVyIGNvbnRhaW5pbmcgYQorLy8gc2luZ2xl
IGVsZW1lbnQgZ2VuZXJhdGVzIHRoZSBzaW5nbGUgZWxlbWVudCBzZXF1ZW5jZS4KK1RFU1QoVmFs
dWVzSW5UZXN0LCBWYWx1ZXNJblNpbmdsZUVsZW1lbnRBcnJheSkgeworICBpbnQgYXJyYXlbXSA9
IHs0Mn07CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4oYXJyYXkp
OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBhcnJheSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgVmFs
dWVzSW4oKSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlIGZvciBhbiBTVEwKKy8vIGNv
bnRhaW5lciAodmVjdG9yKS4KK1RFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJblZlY3Rvcikgewor
ICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8aW50PiBDb250YWluZXJUeXBlOworICBDb250YWluZXJU
eXBlIHZhbHVlczsKKyAgdmFsdWVzLnB1c2hfYmFjaygzKTsKKyAgdmFsdWVzLnB1c2hfYmFjayg1
KTsKKyAgdmFsdWVzLnB1c2hfYmFjayg4KTsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBn
ZW4gPSBWYWx1ZXNJbih2YWx1ZXMpOworCisgIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9
IHszLCA1LCA4fTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30K
KworLy8gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVu
Y2UuCitURVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5JdGVyYXRvclJhbmdlKSB7CisgIHR5cGVk
ZWYgOjpzdGQ6OnZlY3RvcjxpbnQ+IENvbnRhaW5lclR5cGU7CisgIENvbnRhaW5lclR5cGUgdmFs
dWVzOworICB2YWx1ZXMucHVzaF9iYWNrKDMpOworICB2YWx1ZXMucHVzaF9iYWNrKDUpOworICB2
YWx1ZXMucHVzaF9iYWNrKDgpOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZh
bHVlc0luKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworCisgIGNvbnN0IGludCBleHBl
Y3RlZF92YWx1ZXNbXSA9IHszLCA1LCA4fTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0
ZWRfdmFsdWVzKTsKK30KKworLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFZhbHVlc0luKCkgcHJv
dmlkZWQgd2l0aCBhbiBpdGVyYXRvciByYW5nZSBzcGVjaWZ5aW5nIGEKKy8vIHNpbmdsZSB2YWx1
ZSBnZW5lcmF0ZXMgYSBzaW5nbGUtZWxlbWVudCBzZXF1ZW5jZS4KK1RFU1QoVmFsdWVzSW5UZXN0
LCBWYWx1ZXNJblNpbmdsZUVsZW1lbnRJdGVyYXRvclJhbmdlKSB7CisgIHR5cGVkZWYgOjpzdGQ6
OnZlY3RvcjxpbnQ+IENvbnRhaW5lclR5cGU7CisgIENvbnRhaW5lclR5cGUgdmFsdWVzOworICB2
YWx1ZXMucHVzaF9iYWNrKDQyKTsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBW
YWx1ZXNJbih2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKworICBjb25zdCBpbnQgZXhw
ZWN0ZWRfdmFsdWVzW10gPSB7NDJ9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92
YWx1ZXMpOworfQorCisvLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSBwcm92aWRl
ZCB3aXRoIGFuIGVtcHR5IGl0ZXJhdG9yIHJhbmdlCisvLyBnZW5lcmF0ZXMgYW4gZW1wdHkgc2Vx
dWVuY2UuCitURVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5FbXB0eUl0ZXJhdG9yUmFuZ2UpIHsK
KyAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGludD4gQ29udGFpbmVyVHlwZTsKKyAgQ29udGFpbmVy
VHlwZSB2YWx1ZXM7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4o
dmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7CisKKyAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0
eShnZW4pOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBWYWx1ZXMoKSBnZW5lcmF0ZXMgdGhlIGV4
cGVjdGVkIHNlcXVlbmNlLgorVEVTVChWYWx1ZXNUZXN0LCBWYWx1ZXNXb3JrcykgeworICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlcygzLCA1LCA4KTsKKworICBjb25zdCBp
bnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MywgNSwgOH07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4s
IGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgVmFsdWVzKCkgZ2VuZXJhdGVz
IHRoZSBleHBlY3RlZCBzZXF1ZW5jZXMgZnJvbSBlbGVtZW50cyBvZgorLy8gZGlmZmVyZW50IHR5
cGVzIGNvbnZlcnRpYmxlIHRvIFBhcmFtR2VuZXJhdG9yJ3MgcGFyYW1ldGVyIHR5cGUuCitURVNU
KFZhbHVlc1Rlc3QsIFZhbHVlc1dvcmtzRm9yVmFsdWVzT2ZDb21wYXRpYmxlVHlwZXMpIHsKKyAg
Y29uc3QgUGFyYW1HZW5lcmF0b3I8ZG91YmxlPiBnZW4gPSBWYWx1ZXMoMywgNS4wZiwgOC4wKTsK
KworICBjb25zdCBkb3VibGUgZXhwZWN0ZWRfdmFsdWVzW10gPSB7My4wLCA1LjAsIDguMH07Cisg
IFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKK1RFU1QoVmFsdWVz
VGVzdCwgVmFsdWVzV29ya3NGb3JNYXhMZW5ndGhMaXN0KSB7CisgIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPGludD4gZ2VuID0gVmFsdWVzKAorICAgICAgMTAsIDIwLCAzMCwgNDAsIDUwLCA2MCwgNzAs
IDgwLCA5MCwgMTAwLAorICAgICAgMTEwLCAxMjAsIDEzMCwgMTQwLCAxNTAsIDE2MCwgMTcwLCAx
ODAsIDE5MCwgMjAwLAorICAgICAgMjEwLCAyMjAsIDIzMCwgMjQwLCAyNTAsIDI2MCwgMjcwLCAy
ODAsIDI5MCwgMzAwLAorICAgICAgMzEwLCAzMjAsIDMzMCwgMzQwLCAzNTAsIDM2MCwgMzcwLCAz
ODAsIDM5MCwgNDAwLAorICAgICAgNDEwLCA0MjAsIDQzMCwgNDQwLCA0NTAsIDQ2MCwgNDcwLCA0
ODAsIDQ5MCwgNTAwKTsKKworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7CisgICAg
ICAxMCwgMjAsIDMwLCA0MCwgNTAsIDYwLCA3MCwgODAsIDkwLCAxMDAsCisgICAgICAxMTAsIDEy
MCwgMTMwLCAxNDAsIDE1MCwgMTYwLCAxNzAsIDE4MCwgMTkwLCAyMDAsCisgICAgICAyMTAsIDIy
MCwgMjMwLCAyNDAsIDI1MCwgMjYwLCAyNzAsIDI4MCwgMjkwLCAzMDAsCisgICAgICAzMTAsIDMy
MCwgMzMwLCAzNDAsIDM1MCwgMzYwLCAzNzAsIDM4MCwgMzkwLCA0MDAsCisgICAgICA0MTAsIDQy
MCwgNDMwLCA0NDAsIDQ1MCwgNDYwLCA0NzAsIDQ4MCwgNDkwLCA1MDB9OworICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBFZGdlIGNhc2UgdGVzdC4gVGVz
dHMgdGhhdCBzaW5nbGUtcGFyYW1ldGVyIFZhbHVlcygpIGdlbmVyYXRlcyB0aGUgc2VxdWVuY2UK
Ky8vIHdpdGggdGhlIHNpbmdsZSB2YWx1ZS4KK1RFU1QoVmFsdWVzVGVzdCwgVmFsdWVzV2l0aFNp
bmdsZVBhcmFtZXRlcikgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVl
cyg0Mik7CisKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezQyfTsKKyAgVmVyaWZ5
R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gVGVzdHMgdGhhdCBCb29s
KCkgZ2VuZXJhdGVzIHNlcXVlbmNlIChmYWxzZSwgdHJ1ZSkuCitURVNUKEJvb2xUZXN0LCBCb29s
V29ya3MpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8Ym9vbD4gZ2VuID0gQm9vbCgpOworCisg
IGNvbnN0IGJvb2wgZXhwZWN0ZWRfdmFsdWVzW10gPSB7ZmFsc2UsIHRydWV9OworICBWZXJpZnlH
ZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisjIGlmIEdURVNUX0hBU19DT01C
SU5FCisKKy8vIFRlc3RzIHRoYXQgQ29tYmluZSgpIHdpdGggdHdvIHBhcmFtZXRlcnMgZ2VuZXJh
dGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRo
VHdvUGFyYW1ldGVycykgeworICBjb25zdCBjaGFyKiBmb28gPSAiZm9vIjsKKyAgY29uc3QgY2hh
ciogYmFyID0gImJhciI7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGNvbnN0IGNoYXIq
LCBpbnQ+ID4gZ2VuID0KKyAgICAgIENvbWJpbmUoVmFsdWVzKGZvbywgYmFyKSwgVmFsdWVzKDMs
IDQpKTsKKworICB0dXBsZTxjb25zdCBjaGFyKiwgaW50PiBleHBlY3RlZF92YWx1ZXNbXSA9IHsK
KyAgICBtYWtlX3R1cGxlKGZvbywgMyksIG1ha2VfdHVwbGUoZm9vLCA0KSwKKyAgICBtYWtlX3R1
cGxlKGJhciwgMyksIG1ha2VfdHVwbGUoYmFyLCA0KX07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4s
IGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQ29tYmluZSgpIHdpdGggdGhy
ZWUgcGFyYW1ldGVycyBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgorVEVTVChDb21i
aW5lVGVzdCwgQ29tYmluZVdpdGhUaHJlZVBhcmFtZXRlcnMpIHsKKyAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8dHVwbGU8aW50LCBpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcygwLCAxKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcygzLCA0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg1LCA2KSk7CisgIHR1cGxlPGludCwgaW50LCBp
bnQ+IGV4cGVjdGVkX3ZhbHVlc1tdID0geworICAgIG1ha2VfdHVwbGUoMCwgMywgNSksIG1ha2Vf
dHVwbGUoMCwgMywgNiksCisgICAgbWFrZV90dXBsZSgwLCA0LCA1KSwgbWFrZV90dXBsZSgwLCA0
LCA2KSwKKyAgICBtYWtlX3R1cGxlKDEsIDMsIDUpLCBtYWtlX3R1cGxlKDEsIDMsIDYpLAorICAg
IG1ha2VfdHVwbGUoMSwgNCwgNSksIG1ha2VfdHVwbGUoMSwgNCwgNil9OworICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBDb21i
aW5lKCkgd2l0aCB0aGUgZmlyc3QgcGFyYW1ldGVyIGdlbmVyYXRpbmcgYSBzaW5nbGUgdmFsdWUK
Ky8vIHNlcXVlbmNlIGdlbmVyYXRlcyBhIHNlcXVlbmNlIHdpdGggdGhlIG51bWJlciBvZiBlbGVt
ZW50cyBlcXVhbCB0byB0aGUKKy8vIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgc2VxdWVuY2Ug
Z2VuZXJhdGVkIGJ5IHRoZSBzZWNvbmQgcGFyYW1ldGVyLgorVEVTVChDb21iaW5lVGVzdCwgQ29t
YmluZVdpdGhGaXJzdFBhcmFtZXRlclNpbmdsZVZhbHVlKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPHR1cGxlPGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUoVmFsdWVzKDQyKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMCwg
MSkpOworCisgIHR1cGxlPGludCwgaW50PiBleHBlY3RlZF92YWx1ZXNbXSA9IHttYWtlX3R1cGxl
KDQyLCAwKSwgbWFrZV90dXBsZSg0MiwgMSl9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBl
Y3RlZF92YWx1ZXMpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBDb21iaW5lKCkgd2l0aCB0aGUg
c2Vjb25kIHBhcmFtZXRlciBnZW5lcmF0aW5nIGEgc2luZ2xlIHZhbHVlCisvLyBzZXF1ZW5jZSBn
ZW5lcmF0ZXMgYSBzZXF1ZW5jZSB3aXRoIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZXF1YWwgdG8g
dGhlCisvLyBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHNlcXVlbmNlIGdlbmVyYXRlZCBieSB0
aGUgZmlyc3QgcGFyYW1ldGVyLgorVEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdpdGhTZWNvbmRQ
YXJhbWV0ZXJTaW5nbGVWYWx1ZSkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQs
IGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcygwLCAxKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNDIpKTsKKworICB0dXBs
ZTxpbnQsIGludD4gZXhwZWN0ZWRfdmFsdWVzW10gPSB7bWFrZV90dXBsZSgwLCA0MiksIG1ha2Vf
dHVwbGUoMSwgNDIpfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsK
K30KKworLy8gVGVzdHMgdGhhdCB3aGVuIHRoZSBmaXJzdCBwYXJhbWV0ZXIgcHJvZHVjZXMgYW4g
ZW1wdHkgc2VxdWVuY2UsCisvLyBDb21iaW5lKCkgcHJvZHVjZXMgYW4gZW1wdHkgc2VxdWVuY2Us
IHRvby4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoRmlyc3RQYXJhbWV0ZXJFbXB0eVJh
bmdlKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50PiA+IGdlbiA9IENv
bWJpbmUoUmFuZ2UoMCwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsdWVzKDAsIDEpKTsKKyAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0
eShnZW4pOworfQorCisvLyBUZXN0cyB0aGF0IHdoZW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIgcHJv
ZHVjZXMgYW4gZW1wdHkgc2VxdWVuY2UsCisvLyBDb21iaW5lKCkgcHJvZHVjZXMgYW4gZW1wdHkg
c2VxdWVuY2UsIHRvby4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoU2Vjb25kUGFyYW1l
dGVyRW1wdHlSYW5nZSkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludD4g
PiBnZW4gPSBDb21iaW5lKFZhbHVlcygwLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5nZSgxLCAxKSk7CisgIFZlcmlmeUdlbmVy
YXRvcklzRW1wdHkoZ2VuKTsKK30KKworLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IGNvbWJpbmUg
d29ya3Mgd2l0aCB0aGUgbWF4aW11bSBudW1iZXIKKy8vIG9mIHBhcmFtZXRlcnMgc3VwcG9ydGVk
IGJ5IEdvb2dsZSBUZXN0IChjdXJyZW50bHkgMTApLgorVEVTVChDb21iaW5lVGVzdCwgQ29tYmlu
ZVdpdGhNYXhOdW1iZXJPZlBhcmFtZXRlcnMpIHsKKyAgY29uc3QgY2hhciogZm9vID0gImZvbyI7
CisgIGNvbnN0IGNoYXIqIGJhciA9ICJiYXIiOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBs
ZTxjb25zdCBjaGFyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcyhm
b28sIGJhciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsdWVzKDEpLCBWYWx1ZXMoMiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDMpLCBWYWx1ZXMoNCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVz
KDUpLCBWYWx1ZXMoNiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsdWVzKDcpLCBWYWx1ZXMoOCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDkpKTsKKworICB0dXBs
ZTxjb25zdCBjaGFyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dD4KKyAgICAgIGV4cGVjdGVkX3ZhbHVlc1tdID0ge21ha2VfdHVwbGUoZm9vLCAxLCAyLCAzLCA0
LCA1LCA2LCA3LCA4LCA5KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VfdHVwbGUo
YmFyLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5KX07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4s
IGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisKK2NsYXNzIE5v
bkRlZmF1bHRDb25zdHJ1Y3RBc3NpZ25TdHJpbmcgeworIHB1YmxpYzoKKyAgTm9uRGVmYXVsdENv
bnN0cnVjdEFzc2lnblN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgcykgOiBzdHJfKHMpIHt9CisK
KyAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cigpIGNvbnN0IHsgcmV0dXJuIHN0cl87IH0KKworIHBy
aXZhdGU6CisgIHN0ZDo6c3RyaW5nIHN0cl87CisKKyAgLy8gTm90IGRlZmF1bHQgY29uc3RydWN0
aWJsZQorICBOb25EZWZhdWx0Q29uc3RydWN0QXNzaWduU3RyaW5nKCk7CisgIC8vIE5vdCBhc3Np
Z25hYmxlCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IE5vbkRlZmF1bHRDb25zdHJ1Y3RBc3NpZ25T
dHJpbmcmKTsKK307CisKK1RFU1QoQ29tYmluZVRlc3QsIE5vbkRlZmF1bHRDb25zdHJ1Y3RBc3Np
Z24pIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBOb25EZWZhdWx0Q29uc3Ry
dWN0QXNzaWduU3RyaW5nPiA+IGdlbiA9CisgICAgICBDb21iaW5lKFZhbHVlcygwLCAxKSwgVmFs
dWVzKE5vbkRlZmF1bHRDb25zdHJ1Y3RBc3NpZ25TdHJpbmcoIkEiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTm9uRGVmYXVsdENvbnN0cnVjdEFzc2lnblN0cmluZygiQiIp
KSk7CisKKyAgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBOb25EZWZhdWx0Q29uc3RydWN0QXNz
aWduU3RyaW5nPiA+OjppdGVyYXRvciBpdCA9CisgICAgICBnZW4uYmVnaW4oKTsKKworICBFWFBF
Q1RfRVEoMCwgc3RkOjpnZXQ8MD4oKml0KSk7CisgIEVYUEVDVF9FUSgiQSIsIHN0ZDo6Z2V0PDE+
KCppdCkuc3RyKCkpOworICArK2l0OworCisgIEVYUEVDVF9FUSgwLCBzdGQ6OmdldDwwPigqaXQp
KTsKKyAgRVhQRUNUX0VRKCJCIiwgc3RkOjpnZXQ8MT4oKml0KS5zdHIoKSk7CisgICsraXQ7CisK
KyAgRVhQRUNUX0VRKDEsIHN0ZDo6Z2V0PDA+KCppdCkpOworICBFWFBFQ1RfRVEoIkEiLCBzdGQ6
OmdldDwxPigqaXQpLnN0cigpKTsKKyAgKytpdDsKKworICBFWFBFQ1RfRVEoMSwgc3RkOjpnZXQ8
MD4oKml0KSk7CisgIEVYUEVDVF9FUSgiQiIsIHN0ZDo6Z2V0PDE+KCppdCkuc3RyKCkpOworICAr
K2l0OworCisgIEVYUEVDVF9UUlVFKGl0ID09IGdlbi5lbmQoKSk7Cit9CisKKyNlbmRpZiAgIC8v
IEdURVNUX0xBTkdfQ1hYMTEKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCisKKy8vIFRl
c3RzIHRoYXQgYW4gZ2VuZXJhdG9yIHByb2R1Y2VzIGNvcnJlY3Qgc2VxdWVuY2UgYWZ0ZXIgYmVp
bmcKKy8vIGFzc2lnbmVkIGZyb20gYW5vdGhlciBnZW5lcmF0b3IuCitURVNUKFBhcmFtR2VuZXJh
dG9yVGVzdCwgQXNzaWdubWVudFdvcmtzKSB7CisgIFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0g
VmFsdWVzKDEsIDIpOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbjIgPSBWYWx1ZXMo
MywgNCk7CisgIGdlbiA9IGdlbjI7CisKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0g
ezMsIDR9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisv
LyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgdGVzdHMgYXJlIGV4cGFuZGVkIGFuZCBydW4g
YXMgc3BlY2lmaWVkOgorLy8gb25lIHRlc3QgcGVyIGVsZW1lbnQgZnJvbSB0aGUgc2VxdWVuY2Ug
cHJvZHVjZWQgYnkgdGhlIGdlbmVyYXRvcgorLy8gc3BlY2lmaWVkIGluIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QLiBJdCBhbHNvIHZlcmlmaWVzIHRoYXQgdGhlIHRlc3QncworLy8gZml4dHVyZSBj
b25zdHJ1Y3RvciwgU2V0VXAoKSwgYW5kIFRlYXJEb3duKCkgaGF2ZSBydW4gYW5kIGhhdmUgYmVl
bgorLy8gc3VwcGxpZWQgd2l0aCB0aGUgY29ycmVjdCBwYXJhbWV0ZXJzLgorCisvLyBUaGUgdXNl
IG9mIGVudmlyb25tZW50IG9iamVjdCBhbGxvd3MgZGV0ZWN0aW9uIG9mIHRoZSBjYXNlIHdoZXJl
IG5vIHRlc3QKKy8vIGNhc2UgZnVuY3Rpb25hbGl0eSBpcyBydW4gYXQgYWxsLiBJbiB0aGlzIGNh
c2UgVGVzdENhc2VUZWFyRG93biB3aWxsIG5vdAorLy8gYmUgYWJsZSB0byBkZXRlY3QgbWlzc2lu
ZyB0ZXN0cywgbmF0dXJhbGx5LgordGVtcGxhdGUgPGludCBrRXhwZWN0ZWRDYWxscz4KK2NsYXNz
IFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQgOiBwdWJsaWMgOjp0ZXN0aW5nOjpFbnZpcm9ubWVu
dCB7CisgcHVibGljOgorICBzdGF0aWMgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudCogSW5zdGFu
Y2UoKSB7CisgICAgc3RhdGljIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQqIGluc3RhbmNlID0g
bmV3IFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQ7CisgICAgcmV0dXJuIGluc3RhbmNlOworICB9
CisKKyAgdm9pZCBGaXh0dXJlQ29uc3RydWN0b3JFeGVjdXRlZCgpIHsgZml4dHVyZV9jb25zdHJ1
Y3Rvcl9jb3VudF8rKzsgfQorICB2b2lkIFNldFVwRXhlY3V0ZWQoKSB7IHNldF91cF9jb3VudF8r
KzsgfQorICB2b2lkIFRlYXJEb3duRXhlY3V0ZWQoKSB7IHRlYXJfZG93bl9jb3VudF8rKzsgfQor
ICB2b2lkIFRlc3RCb2R5RXhlY3V0ZWQoKSB7IHRlc3RfYm9keV9jb3VudF8rKzsgfQorCisgIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICAvLyBJZiBhbGwgTXVsdGlwbGVUZXN0R2VuZXJh
dGlvblRlc3QgdGVzdHMgaGF2ZSBiZWVuIGRlLXNlbGVjdGVkCisgICAgLy8gYnkgdGhlIGZpbHRl
ciBmbGFnLCB0aGUgZm9sbG93aW5nIGNoZWNrcyBtYWtlIG5vIHNlbnNlLgorICAgIGJvb2wgcGVy
Zm9ybV9jaGVjayA9IGZhbHNlOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrRXhwZWN0ZWRD
YWxsczsgKytpKSB7CisgICAgICBNZXNzYWdlIG1zZzsKKyAgICAgIG1zZyA8PCAiVGVzdHNFeHBh
bmRlZEFuZFJ1bi8iIDw8IGk7CisgICAgICBpZiAoVW5pdFRlc3RPcHRpb25zOjpGaWx0ZXJNYXRj
aGVzVGVzdCgKKyAgICAgICAgICAgICAiVGVzdEV4cGFuc2lvbk1vZHVsZS9NdWx0aXBsZVRlc3RH
ZW5lcmF0aW9uVGVzdCIsCisgICAgICAgICAgICAgIG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKSkg
eworICAgICAgICBwZXJmb3JtX2NoZWNrID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9CisgICAgaWYg
KHBlcmZvcm1fY2hlY2spIHsKKyAgICAgIEVYUEVDVF9FUShrRXhwZWN0ZWRDYWxscywgZml4dHVy
ZV9jb25zdHJ1Y3Rvcl9jb3VudF8pCisgICAgICAgICAgPDwgIkZpeHR1cmUgY29uc3RydWN0b3Ig
b2YgUGFyYW1UZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlICIKKyAgICAgICAgICA8PCAiaGFz
IG5vdCBiZWVuIHJ1biBhcyBleHBlY3RlZC4iOworICAgICAgRVhQRUNUX0VRKGtFeHBlY3RlZENh
bGxzLCBzZXRfdXBfY291bnRfKQorICAgICAgICAgIDw8ICJGaXh0dXJlIFNldFVwIG1ldGhvZCBv
ZiBQYXJhbVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgorICAgICAgICAgIDw8ICJoYXMg
bm90IGJlZW4gcnVuIGFzIGV4cGVjdGVkLiI7CisgICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2Fs
bHMsIHRlYXJfZG93bl9jb3VudF8pCisgICAgICAgICAgPDwgIkZpeHR1cmUgVGVhckRvd24gbWV0
aG9kIG9mIFBhcmFtVGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZSAiCisgICAgICAgICAgPDwg
ImhhcyBub3QgYmVlbiBydW4gYXMgZXhwZWN0ZWQuIjsKKyAgICAgIEVYUEVDVF9FUShrRXhwZWN0
ZWRDYWxscywgdGVzdF9ib2R5X2NvdW50XykKKyAgICAgICAgICA8PCAiVGVzdCBpbiBQYXJhbVRl
c3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgorICAgICAgICAgIDw8ICJoYXMgbm90IGJlZW4g
cnVuIGFzIGV4cGVjdGVkLiI7CisgICAgfQorICB9CisKKyBwcml2YXRlOgorICBUZXN0R2VuZXJh
dGlvbkVudmlyb25tZW50KCkgOiBmaXh0dXJlX2NvbnN0cnVjdG9yX2NvdW50XygwKSwgc2V0X3Vw
X2NvdW50XygwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVhcl9kb3duX2Nv
dW50XygwKSwgdGVzdF9ib2R5X2NvdW50XygwKSB7fQorCisgIGludCBmaXh0dXJlX2NvbnN0cnVj
dG9yX2NvdW50XzsKKyAgaW50IHNldF91cF9jb3VudF87CisgIGludCB0ZWFyX2Rvd25fY291bnRf
OworICBpbnQgdGVzdF9ib2R5X2NvdW50XzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQpOworfTsKKworY29uc3QgaW50IHRlc3Rf
Z2VuZXJhdGlvbl9wYXJhbXNbXSA9IHszNiwgNDIsIDcyfTsKKworY2xhc3MgVGVzdEdlbmVyYXRp
b25UZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7CisgcHVibGljOgorICBlbnVtIHsK
KyAgICBQQVJBTUVURVJfQ09VTlQgPQorICAgICAgICBzaXplb2YodGVzdF9nZW5lcmF0aW9uX3Bh
cmFtcykvc2l6ZW9mKHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXNbMF0pCisgIH07CisKKyAgdHlwZWRl
ZiBUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50PFBBUkFNRVRFUl9DT1VOVD4gRW52aXJvbm1lbnQ7
CisKKyAgVGVzdEdlbmVyYXRpb25UZXN0KCkgeworICAgIEVudmlyb25tZW50OjpJbnN0YW5jZSgp
LT5GaXh0dXJlQ29uc3RydWN0b3JFeGVjdXRlZCgpOworICAgIGN1cnJlbnRfcGFyYW1ldGVyXyA9
IEdldFBhcmFtKCk7CisgIH0KKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIEVudmlyb25t
ZW50OjpJbnN0YW5jZSgpLT5TZXRVcEV4ZWN1dGVkKCk7CisgICAgRVhQRUNUX0VRKGN1cnJlbnRf
cGFyYW1ldGVyXywgR2V0UGFyYW0oKSk7CisgIH0KKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkg
eworICAgIEVudmlyb25tZW50OjpJbnN0YW5jZSgpLT5UZWFyRG93bkV4ZWN1dGVkKCk7CisgICAg
RVhQRUNUX0VRKGN1cnJlbnRfcGFyYW1ldGVyXywgR2V0UGFyYW0oKSk7CisgIH0KKworICBzdGF0
aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgeworICAgIGJvb2wgYWxsX3Rlc3RzX2luX3Rlc3RfY2Fz
ZV9zZWxlY3RlZCA9IHRydWU7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IFBBUkFNRVRFUl9D
T1VOVDsgKytpKSB7CisgICAgICBNZXNzYWdlIHRlc3RfbmFtZTsKKyAgICAgIHRlc3RfbmFtZSA8
PCAiVGVzdHNFeHBhbmRlZEFuZFJ1bi8iIDw8IGk7CisgICAgICBpZiAoICFVbml0VGVzdE9wdGlv
bnM6OkZpbHRlck1hdGNoZXNUZXN0KAorICAgICAgICAgICAgICAgICJUZXN0RXhwYW5zaW9uTW9k
dWxlL011bHRpcGxlVGVzdEdlbmVyYXRpb25UZXN0IiwKKyAgICAgICAgICAgICAgICB0ZXN0X25h
bWUuR2V0U3RyaW5nKCkpKSB7CisgICAgICAgIGFsbF90ZXN0c19pbl90ZXN0X2Nhc2Vfc2VsZWN0
ZWQgPSBmYWxzZTsKKyAgICAgIH0KKyAgICB9CisgICAgRVhQRUNUX1RSVUUoYWxsX3Rlc3RzX2lu
X3Rlc3RfY2FzZV9zZWxlY3RlZCkKKyAgICAgICAgPDwgIldoZW4gcnVubmluZyB0aGUgVGVzdEdl
bmVyYXRpb25UZXN0IHRlc3QgY2FzZSBhbGwgb2YgaXRzIHRlc3RzXG4iCisgICAgICAgIDw8ICJt
dXN0IGJlIHNlbGVjdGVkIGJ5IHRoZSBmaWx0ZXIgZmxhZyBmb3IgdGhlIHRlc3QgY2FzZSB0byBw
YXNzLlxuIgorICAgICAgICA8PCAiSWYgbm90IGFsbCBvZiB0aGVtIGFyZSBlbmFibGVkLCB3ZSBj
YW4ndCByZWxpYWJseSBjb25jbHVkZVxuIgorICAgICAgICA8PCAidGhhdCB0aGUgY29ycmVjdCBu
dW1iZXIgb2YgdGVzdHMgaGF2ZSBiZWVuIGdlbmVyYXRlZC4iOworCisgICAgY29sbGVjdGVkX3Bh
cmFtZXRlcnNfLmNsZWFyKCk7CisgIH0KKworICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNl
KCkgeworICAgIHZlY3RvcjxpbnQ+IGV4cGVjdGVkX3ZhbHVlcyh0ZXN0X2dlbmVyYXRpb25fcGFy
YW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2dlbmVyYXRpb25fcGFy
YW1zICsgUEFSQU1FVEVSX0NPVU5UKTsKKyAgICAvLyBUZXN0IGV4ZWN1dGlvbiBvcmRlciBpcyBu
b3QgZ3VhcmFudGVlZCBieSBHb29nbGUgVGVzdCwKKyAgICAvLyBzbyB0aGUgb3JkZXIgb2YgdmFs
dWVzIGluIGNvbGxlY3RlZF9wYXJhbWV0ZXJzXyBjYW4gYmUKKyAgICAvLyBkaWZmZXJlbnQgYW5k
IHdlIGhhdmUgdG8gc29ydCB0byBjb21wYXJlLgorICAgIHNvcnQoZXhwZWN0ZWRfdmFsdWVzLmJl
Z2luKCksIGV4cGVjdGVkX3ZhbHVlcy5lbmQoKSk7CisgICAgc29ydChjb2xsZWN0ZWRfcGFyYW1l
dGVyc18uYmVnaW4oKSwgY29sbGVjdGVkX3BhcmFtZXRlcnNfLmVuZCgpKTsKKworICAgIEVYUEVD
VF9UUlVFKGNvbGxlY3RlZF9wYXJhbWV0ZXJzXyA9PSBleHBlY3RlZF92YWx1ZXMpOworICB9CisK
KyBwcm90ZWN0ZWQ6CisgIGludCBjdXJyZW50X3BhcmFtZXRlcl87CisgIHN0YXRpYyB2ZWN0b3I8
aW50PiBjb2xsZWN0ZWRfcGFyYW1ldGVyc187CisKKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExP
V19DT1BZX0FORF9BU1NJR05fKFRlc3RHZW5lcmF0aW9uVGVzdCk7Cit9OwordmVjdG9yPGludD4g
VGVzdEdlbmVyYXRpb25UZXN0Ojpjb2xsZWN0ZWRfcGFyYW1ldGVyc187CisKK1RFU1RfUChUZXN0
R2VuZXJhdGlvblRlc3QsIFRlc3RzRXhwYW5kZWRBbmRSdW4pIHsKKyAgRW52aXJvbm1lbnQ6Oklu
c3RhbmNlKCktPlRlc3RCb2R5RXhlY3V0ZWQoKTsKKyAgRVhQRUNUX0VRKGN1cnJlbnRfcGFyYW1l
dGVyXywgR2V0UGFyYW0oKSk7CisgIGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5wdXNoX2JhY2soR2V0
UGFyYW0oKSk7Cit9CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChUZXN0RXhwYW5zaW9uTW9kdWxl
LCBUZXN0R2VuZXJhdGlvblRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXNJbih0
ZXN0X2dlbmVyYXRpb25fcGFyYW1zKSk7CisKKy8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRo
ZSBlbGVtZW50IHNlcXVlbmNlICh0aGlyZCBwYXJhbWV0ZXIgb2YKKy8vIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKSBpcyBldmFsdWF0ZWQgaW4gSW5pdEdvb2dsZVRlc3QoKSBhbmQgbmVpdGhlciBh
dAorLy8gdGhlIGNhbGwgc2l0ZSBvZiBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBub3IgaW4gUlVO
X0FMTF9URVNUUygpLiAgRm9yCisvLyB0aGF0LCB3ZSBkZWNsYXJlIHBhcmFtX3ZhbHVlXyB0byBi
ZSBhIHN0YXRpYyBtZW1iZXIgb2YKKy8vIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0IGFuZCBpbml0
aWFsaXplIGl0IHRvIDAuICBXZSBzZXQgaXQgdG8gMSBpbgorLy8gbWFpbigpLCBqdXN0IGJlZm9y
ZSBpbnZvY2F0aW9uIG9mIEluaXRHb29nbGVUZXN0KCkuICBBZnRlciBjYWxsaW5nCisvLyBJbml0
R29vZ2xlVGVzdCgpLCB3ZSBzZXQgdGhlIHZhbHVlIHRvIDIuICBJZiB0aGUgc2VxdWVuY2UgaXMg
ZXZhbHVhdGVkCisvLyBiZWZvcmUgb3IgYWZ0ZXIgSW5pdEdvb2dsZVRlc3QsIElOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QIHdpbGwgY3JlYXRlIGEKKy8vIHRlc3Qgd2l0aCBwYXJhbWV0ZXIgb3RoZXIg
dGhhbiAxLCBhbmQgdGhlIHRlc3QgYm9keSB3aWxsIGZhaWwgdGhlCisvLyBhc3NlcnRpb24uCitj
bGFzcyBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4g
eworIHB1YmxpYzoKKyAgc3RhdGljIGludCBwYXJhbV92YWx1ZSgpIHsgcmV0dXJuIHBhcmFtX3Zh
bHVlXzsgfQorICBzdGF0aWMgdm9pZCBzZXRfcGFyYW1fdmFsdWUoaW50IHBhcmFtX3ZhbHVlKSB7
IHBhcmFtX3ZhbHVlXyA9IHBhcmFtX3ZhbHVlOyB9CisKKyBwcml2YXRlOgorICBzdGF0aWMgaW50
IHBhcmFtX3ZhbHVlXzsKK307CitpbnQgR2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnBhcmFtX3Zh
bHVlXyA9IDA7CisKK1RFU1RfUChHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCwgR2VuZXJhdG9yc0V2
YWx1YXRlZEluTWFpbikgeworICBFWFBFQ1RfRVEoMSwgR2V0UGFyYW0oKSk7Cit9CitJTlNUQU5U
SUFURV9URVNUX0NBU0VfUChHZW5FdmFsTW9kdWxlLAorICAgICAgICAgICAgICAgICAgICAgICAg
R2VuZXJhdG9yRXZhbHVhdGlvblRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMo
R2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnBhcmFtX3ZhbHVlKCkpKTsKKworLy8gVGVzdHMgdGhh
dCBnZW5lcmF0b3JzIGRlZmluZWQgaW4gYSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdCBhcmUK
Ky8vIGZ1bmN0aW9uYWwuIEdlbmVyYXRvciBleHRlcm5fZ2VuIGlzIGRlZmluZWQgaW4gZ3Rlc3Qt
cGFyYW0tdGVzdF90ZXN0Mi5jYy4KK2V4dGVybiBQYXJhbUdlbmVyYXRvcjxpbnQ+IGV4dGVybl9n
ZW47CitjbGFzcyBFeHRlcm5hbEdlbmVyYXRvclRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxp
bnQ+IHt9OworVEVTVF9QKEV4dGVybmFsR2VuZXJhdG9yVGVzdCwgRXh0ZXJuYWxHZW5lcmF0b3Ip
IHsKKyAgLy8gU2VxdWVuY2UgcHJvZHVjZWQgYnkgZXh0ZXJuX2dlbiBjb250YWlucyBvbmx5IGEg
c2luZ2xlIHZhbHVlCisgIC8vIHdoaWNoIHdlIHZlcmlmeSBoZXJlLgorICBFWFBFQ1RfRVEoR2V0
UGFyYW0oKSwgMzMpOworfQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoRXh0ZXJuYWxHZW5lcmF0
b3JNb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICBFeHRlcm5hbEdlbmVyYXRvclRlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5fZ2VuKTsKKworLy8gVGVzdHMgdGhhdCBh
IHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBkZWZpbmVkIGluIG9uZSB0cmFuc2xhdGlv
bgorLy8gdW5pdCBhbmQgaW5zdGFudGlhdGVkIGluIGFub3RoZXIuIFRoaXMgdGVzdCB3aWxsIGJl
IGluc3RhbnRpYXRlZCBpbgorLy8gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0Mi5jYy4gRXh0ZXJuYWxJ
bnN0YW50aWF0aW9uVGVzdCBmaXh0dXJlIGNsYXNzIGlzCisvLyBkZWZpbmVkIGluIGd0ZXN0LXBh
cmFtLXRlc3RfdGVzdC5oLgorVEVTVF9QKEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3QsIElzTXVs
dGlwbGVPZjMzKSB7CisgIEVYUEVDVF9FUSgwLCBHZXRQYXJhbSgpICUgMzMpOworfQorCisvLyBU
ZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGluc3RhbnRpYXRlZCB3
aXRoIG11bHRpcGxlCisvLyBnZW5lcmF0b3JzLgorY2xhc3MgTXVsdGlwbGVJbnN0YW50aWF0aW9u
VGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4ge307CitURVNUX1AoTXVsdGlwbGVJbnN0
YW50aWF0aW9uVGVzdCwgQWxsb3dzTXVsdGlwbGVJbnN0YW5jZXMpIHsKK30KK0lOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKFNlcXVlbmNlMSwgTXVsdGlwbGVJbnN0YW50aWF0aW9uVGVzdCwgVmFsdWVz
KDEsIDIpKTsKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMiwgTXVsdGlwbGVJbnN0
YW50aWF0aW9uVGVzdCwgUmFuZ2UoMywgNSkpOworCisvLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVy
aXplZCB0ZXN0IGNhc2UgY2FuIGJlIGluc3RhbnRpYXRlZAorLy8gaW4gbXVsdGlwbGUgdHJhbnNs
YXRpb24gdW5pdHMuIFRoaXMgdGVzdCB3aWxsIGJlIGluc3RhbnRpYXRlZAorLy8gaGVyZSBhbmQg
aW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0Mi5jYy4KKy8vIEluc3RhbnRpYXRpb25Jbk11bHRpcGxl
VHJhbnNsYXRpb25Vbml0c1Rlc3QgZml4dHVyZSBjbGFzcworLy8gaXMgZGVmaW5lZCBpbiBndGVz
dC1wYXJhbS10ZXN0X3Rlc3QuaC4KK1RFU1RfUChJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5z
bGFpb25Vbml0c1Rlc3QsIElzTXVsdGlwbGVPZjQyKSB7CisgIEVYUEVDVF9FUSgwLCBHZXRQYXJh
bSgpICUgNDIpOworfQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2UxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNU
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDQyLCA0MioyKSk7CisKKy8vIFRl
c3RzIHRoYXQgZWFjaCBpdGVyYXRpb24gb2YgcGFyYW1ldGVyaXplZCB0ZXN0IHJ1bnMgaW4gYSBz
ZXBhcmF0ZSB0ZXN0CisvLyBvYmplY3QuCitjbGFzcyBTZXBhcmF0ZUluc3RhbmNlVGVzdCA6IHB1
YmxpYyBUZXN0V2l0aFBhcmFtPGludD4geworIHB1YmxpYzoKKyAgU2VwYXJhdGVJbnN0YW5jZVRl
c3QoKSA6IGNvdW50XygwKSB7fQorCisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7
CisgICAgRVhQRUNUX0dFKGdsb2JhbF9jb3VudF8sIDIpCisgICAgICAgIDw8ICJJZiBzb21lIChi
dXQgbm90IGFsbCkgU2VwYXJhdGVJbnN0YW5jZVRlc3QgdGVzdHMgaGF2ZSBiZWVuICIKKyAgICAg
ICAgPDwgImZpbHRlcmVkIG91dCB0aGlzIHRlc3Qgd2lsbCBmYWlsLiBNYWtlIHN1cmUgdGhhdCBh
bGwgIgorICAgICAgICA8PCAiR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QgYXJlIHNlbGVjdGVkIG9y
IGRlLXNlbGVjdGVkIHRvZ2V0aGVyICIKKyAgICAgICAgPDwgImJ5IHRoZSB0ZXN0IGZpbHRlci4i
OworICB9CisKKyBwcm90ZWN0ZWQ6CisgIGludCBjb3VudF87CisgIHN0YXRpYyBpbnQgZ2xvYmFs
X2NvdW50XzsKK307CitpbnQgU2VwYXJhdGVJbnN0YW5jZVRlc3Q6Omdsb2JhbF9jb3VudF8gPSAw
OworCitURVNUX1AoU2VwYXJhdGVJbnN0YW5jZVRlc3QsIFRlc3RzUnVuSW5TZXBhcmF0ZUluc3Rh
bmNlcykgeworICBFWFBFQ1RfRVEoMCwgY291bnRfKyspOworICBnbG9iYWxfY291bnRfKys7Cit9
CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChGb3VyRWxlbVNlcXVlbmNlLCBTZXBhcmF0ZUluc3Rh
bmNlVGVzdCwgUmFuZ2UoMSwgNCkpOworCisvLyBUZXN0cyB0aGF0IGFsbCBpbnN0YW50aWF0aW9u
cyBvZiBhIHRlc3QgaGF2ZSBuYW1lZCBhcHByb3ByaWF0ZWx5LiBUZXN0CisvLyBkZWZpbmVkIHdp
dGggVEVTVF9QKFRlc3RDYXNlTmFtZSwgVGVzdE5hbWUpIGFuZCBpbnN0YW50aWF0ZWQgd2l0aAor
Ly8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2VOYW1lLCBUZXN0Q2FzZU5hbWUsIGdl
bmVyYXRvcikgbXVzdCBiZSBuYW1lZAorLy8gU2VxdWVuY2VOYW1lL1Rlc3RDYXNlTmFtZS5UZXN0
TmFtZS9pLCB3aGVyZSBpIGlzIHRoZSAwLWJhc2VkIGluZGV4IG9mIHRoZQorLy8gc2VxdWVuY2Ug
ZWxlbWVudCB1c2VkIHRvIGluc3RhbnRpYXRlIHRoZSB0ZXN0LgorY2xhc3MgTmFtaW5nVGVzdCA6
IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4ge307CisKK1RFU1RfUChOYW1pbmdUZXN0LCBUZXN0
c1JlcG9ydENvcnJlY3ROYW1lc0FuZFBhcmFtZXRlcnMpIHsKKyAgY29uc3QgOjp0ZXN0aW5nOjpU
ZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0
SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKworICBFWFBFQ1RfU1RSRVEoIlplcm9U
b0ZpdmVTZXF1ZW5jZS9OYW1pbmdUZXN0IiwgdGVzdF9pbmZvLT50ZXN0X2Nhc2VfbmFtZSgpKTsK
KworICBNZXNzYWdlIGluZGV4X3N0cmVhbTsKKyAgaW5kZXhfc3RyZWFtIDw8ICJUZXN0c1JlcG9y
dENvcnJlY3ROYW1lc0FuZFBhcmFtZXRlcnMvIiA8PCBHZXRQYXJhbSgpOworICBFWFBFQ1RfU1RS
RVEoaW5kZXhfc3RyZWFtLkdldFN0cmluZygpLmNfc3RyKCksIHRlc3RfaW5mby0+bmFtZSgpKTsK
KworICBFWFBFQ1RfRVEoOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKEdldFBhcmFtKCkpLCB0ZXN0
X2luZm8tPnZhbHVlX3BhcmFtKCkpOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChaZXJv
VG9GaXZlU2VxdWVuY2UsIE5hbWluZ1Rlc3QsIFJhbmdlKDAsIDUpKTsKKworLy8gVGVzdHMgdGhh
dCBtYWNyb3MgaW4gdGVzdCBuYW1lcyBhcmUgZXhwYW5kZWQgY29ycmVjdGx5LgorY2xhc3MgTWFj
cm9OYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7fTsKKworI2RlZmluZSBQ
UkVGSVhfV0lUSF9GT08odGVzdF9uYW1lKSBGb28jI3Rlc3RfbmFtZQorI2RlZmluZSBQUkVGSVhf
V0lUSF9NQUNSTyh0ZXN0X25hbWUpIE1hY3JvIyN0ZXN0X25hbWUKKworVEVTVF9QKFBSRUZJWF9X
SVRIX01BQ1JPKE5hbWluZ1Rlc3QpLCBQUkVGSVhfV0lUSF9GT08oU29tZVRlc3ROYW1lKSkgewor
ICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQorICAgICA6OnRl
c3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOworCisg
IEVYUEVDVF9TVFJFUSgiRm9ydHlUd28vTWFjcm9OYW1pbmdUZXN0IiwgdGVzdF9pbmZvLT50ZXN0
X2Nhc2VfbmFtZSgpKTsKKyAgRVhQRUNUX1NUUkVRKCJGb29Tb21lVGVzdE5hbWUiLCB0ZXN0X2lu
Zm8tPm5hbWUoKSk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEZvcnR5VHdvLCBNYWNy
b05hbWluZ1Rlc3QsIFZhbHVlcyg0MikpOworCisvLyBUZXN0cyB0aGUgc2FtZSB0aGluZyBmb3Ig
bm9uLXBhcmFtZXRyaXplZCB0ZXN0cy4KK2NsYXNzIE1hY3JvTmFtaW5nVGVzdE5vblBhcmFtZXRy
aXplZCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK1RFU1RfRihQUkVGSVhfV0lUSF9N
QUNSTyhOYW1pbmdUZXN0Tm9uUGFyYW1ldHJpemVkKSwKKyAgICAgICBQUkVGSVhfV0lUSF9GT08o
U29tZVRlc3ROYW1lKSkgeworICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0
X2luZm8gPQorICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50
X3Rlc3RfaW5mbygpOworCisgIEVYUEVDVF9TVFJFUSgiTWFjcm9OYW1pbmdUZXN0Tm9uUGFyYW1l
dHJpemVkIiwgdGVzdF9pbmZvLT50ZXN0X2Nhc2VfbmFtZSgpKTsKKyAgRVhQRUNUX1NUUkVRKCJG
b29Tb21lVGVzdE5hbWUiLCB0ZXN0X2luZm8tPm5hbWUoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQg
dXNlciBzdXBwbGllZCBjdXN0b20gcGFyYW1ldGVyIG5hbWVzIGFyZSB3b3JraW5nIGNvcnJlY3Rs
eS4KKy8vIFJ1bnMgdGhlIHRlc3Qgd2l0aCBhIGJ1aWx0aW4gaGVscGVyIG1ldGhvZCB3aGljaCB1
c2VzIFByaW50VG9TdHJpbmcsCisvLyBhcyB3ZWxsIGFzIGEgY3VzdG9tIGZ1bmN0aW9uIGFuZCBj
dXN0b20gZnVuY3RvciB0byBlbnN1cmUgYWxsIHBvc3NpYmxlCisvLyB1c2VzIHdvcmsgY29ycmVj
dGx5LgorY2xhc3MgQ3VzdG9tRnVuY3Rvck5hbWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJh
bTxzdGQ6OnN0cmluZz4ge307CitURVNUX1AoQ3VzdG9tRnVuY3Rvck5hbWluZ1Rlc3QsIEN1c3Rv
bVRlc3ROYW1lcykge30KKworc3RydWN0IEN1c3RvbVBhcmFtTmFtZUZ1bmN0b3IgeworICBzdGQ6
OnN0cmluZyBvcGVyYXRvcigpKGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzxzdGQ6OnN0
cmluZz4mIGluZikgeworICAgIHJldHVybiBpbmYucGFyYW07CisgIH0KK307CisKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKEN1c3RvbVBhcmFtTmFtZUZ1bmN0b3IsCisgICAgICAgICAgICAgICAg
ICAgICAgICBDdXN0b21GdW5jdG9yTmFtaW5nVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IFZhbHVlcyhzdGQ6OnN0cmluZygiRnVuY3Rvck5hbWUiKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICBDdXN0b21QYXJhbU5hbWVGdW5jdG9yKCkpOworCitJTlNUQU5USUFURV9URVNUX0NBU0Vf
UChBbGxBbGxvd2VkQ2hhcmFjdGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZ1
bmN0b3JOYW1pbmdUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKCJhYmNkZWZn
aGlqa2xtbm9wcXJzdHV2d3h5eiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFC
Q0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiMDEyMzQ1Njc4OTBfIiksCisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21QYXJhbU5h
bWVGdW5jdG9yKCkpOworCitpbmxpbmUgc3RkOjpzdHJpbmcgQ3VzdG9tUGFyYW1OYW1lRnVuY3Rp
b24oCisgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHN0ZDo6c3RyaW5nPiYgaW5m
KSB7CisgIHJldHVybiBpbmYucGFyYW07Cit9CisKK2NsYXNzIEN1c3RvbUZ1bmN0aW9uTmFtaW5n
VGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPHN0ZDo6c3RyaW5nPiB7fTsKK1RFU1RfUChDdXN0
b21GdW5jdGlvbk5hbWluZ1Rlc3QsIEN1c3RvbVRlc3ROYW1lcykge30KKworSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoQ3VzdG9tUGFyYW1OYW1lRnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICBDdXN0b21GdW5jdGlvbk5hbWluZ1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBW
YWx1ZXMoc3RkOjpzdHJpbmcoIkZ1bmN0aW9uTmFtZSIpKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEN1c3RvbVBhcmFtTmFtZUZ1bmN0aW9uKTsKKworI2lmIEdURVNUX0xBTkdfQ1hYMTEKKwor
Ly8gVGVzdCBjdXN0b20gbmFtaW5nIHdpdGggYSBsYW1iZGEKKworY2xhc3MgQ3VzdG9tTGFtYmRh
TmFtaW5nVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPHN0ZDo6c3RyaW5nPiB7fTsKK1RFU1Rf
UChDdXN0b21MYW1iZGFOYW1pbmdUZXN0LCBDdXN0b21UZXN0TmFtZXMpIHt9CisKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKEN1c3RvbVBhcmFtTmFtZUxhbWJkYSwgQ3VzdG9tTGFtYmRhTmFtaW5n
VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhzdGQ6OnN0cmluZygiTGFtYmRh
TmFtZSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtdKGNvbnN0IDo6dGVzdGluZzo6VGVz
dFBhcmFtSW5mbzxzdGQ6OnN0cmluZz4mIGluZikgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gaW5mLnBhcmFtOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisKKyNlbmRp
ZiAgLy8gR1RFU1RfTEFOR19DWFgxMQorCitURVNUKEN1c3RvbU5hbWluZ1Rlc3QsIENoZWNrTmFt
ZVJlZ2lzdHJ5KSB7CisgIDo6dGVzdGluZzo6VW5pdFRlc3QqIHVuaXRfdGVzdCA9IDo6dGVzdGlu
Zzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCk7CisgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiB0ZXN0
X25hbWVzOworICBmb3IgKGludCBjYXNlX251bSA9IDA7CisgICAgICAgY2FzZV9udW0gPCB1bml0
X3Rlc3QtPnRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpOworICAgICAgICsrY2FzZV9udW0pIHsKKyAg
ICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RDYXNlKiB0ZXN0X2Nhc2UgPSB1bml0X3Rlc3QtPkdldFRl
c3RDYXNlKGNhc2VfbnVtKTsKKyAgICBmb3IgKGludCB0ZXN0X251bSA9IDA7CisgICAgICAgICB0
ZXN0X251bSA8IHRlc3RfY2FzZS0+dG90YWxfdGVzdF9jb3VudCgpOworICAgICAgICAgKyt0ZXN0
X251bSkgeworICAgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogdGVzdF9pbmZvID0gdGVz
dF9jYXNlLT5HZXRUZXN0SW5mbyh0ZXN0X251bSk7CisgICAgICB0ZXN0X25hbWVzLmluc2VydChz
dGQ6OnN0cmluZyh0ZXN0X2luZm8tPm5hbWUoKSkpOworICAgIH0KKyAgfQorICBFWFBFQ1RfRVEo
MXUsIHRlc3RfbmFtZXMuY291bnQoIkN1c3RvbVRlc3ROYW1lcy9GdW5jdG9yTmFtZSIpKTsKKyAg
RVhQRUNUX0VRKDF1LCB0ZXN0X25hbWVzLmNvdW50KCJDdXN0b21UZXN0TmFtZXMvRnVuY3Rpb25O
YW1lIikpOworI2lmIEdURVNUX0xBTkdfQ1hYMTEKKyAgRVhQRUNUX0VRKDF1LCB0ZXN0X25hbWVz
LmNvdW50KCJDdXN0b21UZXN0TmFtZXMvTGFtYmRhTmFtZSIpKTsKKyNlbmRpZiAgLy8gR1RFU1Rf
TEFOR19DWFgxMQorfQorCisvLyBUZXN0IGEgbnVtZXJpYyBuYW1lIHRvIGVuc3VyZSBQcmludFRv
U3RyaW5nUGFyYW1OYW1lIHdvcmtzIGNvcnJlY3RseS4KKworY2xhc3MgQ3VzdG9tSW50ZWdlck5h
bWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHt9OworCitURVNUX1AoQ3VzdG9t
SW50ZWdlck5hbWluZ1Rlc3QsIFRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzKSB7CisgIGNvbnN0IDo6
dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGluZzo6VW5p
dFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisgIE1lc3NhZ2UgdGVz
dF9uYW1lX3N0cmVhbTsKKyAgdGVzdF9uYW1lX3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3JyZWN0
TmFtZXMvIiA8PCBHZXRQYXJhbSgpOworICBFWFBFQ1RfU1RSRVEodGVzdF9uYW1lX3N0cmVhbS5H
ZXRTdHJpbmcoKS5jX3N0cigpLCB0ZXN0X2luZm8tPm5hbWUoKSk7Cit9CisKK0lOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKFByaW50VG9TdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0
b21JbnRlZ2VyTmFtaW5nVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlKDAsIDUp
LAorICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1O
YW1lKCkpOworCisvLyBUZXN0IGEgY3VzdG9tIHN0cnVjdCB3aXRoIFByaW50VG9TdHJpbmcuCisK
K3N0cnVjdCBDdXN0b21TdHJ1Y3QgeworICBleHBsaWNpdCBDdXN0b21TdHJ1Y3QoaW50IHZhbHVl
KSA6IHgodmFsdWUpIHt9CisgIGludCB4OworfTsKKworc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8
KHN0ZDo6b3N0cmVhbSYgc3RyZWFtLCBjb25zdCBDdXN0b21TdHJ1Y3QmIHZhbCkgeworICBzdHJl
YW0gPDwgdmFsLng7CisgIHJldHVybiBzdHJlYW07Cit9CisKK2NsYXNzIEN1c3RvbVN0cnVjdE5h
bWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxDdXN0b21TdHJ1Y3Q+IHt9OworCitURVNU
X1AoQ3VzdG9tU3RydWN0TmFtaW5nVGVzdCwgVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMpIHsKKyAg
Y29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0
aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKyAgTWVz
c2FnZSB0ZXN0X25hbWVfc3RyZWFtOworICB0ZXN0X25hbWVfc3RyZWFtIDw8ICJUZXN0c1JlcG9y
dENvcnJlY3ROYW1lcy8iIDw8IEdldFBhcmFtKCk7CisgIEVYUEVDVF9TVFJFUSh0ZXN0X25hbWVf
c3RyZWFtLkdldFN0cmluZygpLmNfc3RyKCksIHRlc3RfaW5mby0+bmFtZSgpKTsKK30KKworSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoUHJpbnRUb1N0cmluZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEN1c3RvbVN0cnVjdE5hbWluZ1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1
ZXMoQ3VzdG9tU3RydWN0KDApLCBDdXN0b21TdHJ1Y3QoMSkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1OYW1lKCkpOworCisvLyBUZXN0IHRo
YXQgdXNpbmcgYSBzdGF0ZWZ1bCBwYXJhbWV0ZXIgbmFtaW5nIGZ1bmN0aW9uIHdvcmtzIGFzIGV4
cGVjdGVkLgorCitzdHJ1Y3QgU3RhdGVmdWxOYW1pbmdGdW5jdG9yIHsKKyAgU3RhdGVmdWxOYW1p
bmdGdW5jdG9yKCkgOiBzdW0oMCkge30KKyAgc3RkOjpzdHJpbmcgb3BlcmF0b3IoKShjb25zdCA6
OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88aW50PiYgaW5mbykgeworICAgIGludCB2YWx1ZSA9IGlu
Zm8ucGFyYW0gKyBzdW07CisgICAgc3VtICs9IGluZm8ucGFyYW07CisgICAgcmV0dXJuIDo6dGVz
dGluZzo6UHJpbnRUb1N0cmluZyh2YWx1ZSk7CisgIH0KKyAgaW50IHN1bTsKK307CisKK2NsYXNz
IFN0YXRlZnVsTmFtaW5nVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50
PiB7CisgcHJvdGVjdGVkOgorICBTdGF0ZWZ1bE5hbWluZ1Rlc3QoKSA6IHN1bV8oMCkge30KKyAg
aW50IHN1bV87Cit9OworCitURVNUX1AoU3RhdGVmdWxOYW1pbmdUZXN0LCBUZXN0c1JlcG9ydENv
cnJlY3ROYW1lcykgeworICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2lu
Zm8gPQorICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rl
c3RfaW5mbygpOworICBzdW1fICs9IEdldFBhcmFtKCk7CisgIE1lc3NhZ2UgdGVzdF9uYW1lX3N0
cmVhbTsKKyAgdGVzdF9uYW1lX3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMvIiA8
PCBzdW1fOworICBFWFBFQ1RfU1RSRVEodGVzdF9uYW1lX3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0
cigpLCB0ZXN0X2luZm8tPm5hbWUoKSk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFN0
YXRlZnVsTmFtaW5nRnVuY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlZnVsTmFt
aW5nVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlKDAsIDUpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgU3RhdGVmdWxOYW1pbmdGdW5jdG9yKCkpOworCisvLyBDbGFzcyB0aGF0
IGNhbm5vdCBiZSBzdHJlYW1lZCBpbnRvIGFuIG9zdHJlYW0uICBJdCBuZWVkcyB0byBiZSBjb3B5
YWJsZQorLy8gKGFuZCwgaW4gY2FzZSBvZiBNU1ZDLCBhbHNvIGFzc2lnbmFibGUpIGluIG9yZGVy
IHRvIGJlIGEgdGVzdCBwYXJhbWV0ZXIKKy8vIHR5cGUuICBJdHMgZGVmYXVsdCBjb3B5IGNvbnN0
cnVjdG9yIGFuZCBhc3NpZ25tZW50IG9wZXJhdG9yIGRvIGV4YWN0bHkKKy8vIHdoYXQgd2UgbmVl
ZC4KK2NsYXNzIFVuc3RyZWFtYWJsZSB7CisgcHVibGljOgorICBleHBsaWNpdCBVbnN0cmVhbWFi
bGUoaW50IHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KKworIHByaXZhdGU6CisgIGludCB2YWx1
ZV87Cit9OworCitjbGFzcyBDb21tZW50VGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPFVuc3Ry
ZWFtYWJsZT4ge307CisKK1RFU1RfUChDb21tZW50VGVzdCwgVGVzdHNDb3JyZWN0bHlSZXBvcnRV
bnN0cmVhbWFibGVQYXJhbXMpIHsKKyAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3Qg
dGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3Vy
cmVudF90ZXN0X2luZm8oKTsKKworICBFWFBFQ1RfRVEoOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5n
KEdldFBhcmFtKCkpLCB0ZXN0X2luZm8tPnZhbHVlX3BhcmFtKCkpOworfQorCitJTlNUQU5USUFU
RV9URVNUX0NBU0VfUChJbnN0YW50aWF0aW9uV2l0aENvbW1lbnRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgQ29tbWVudFRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoVW5z
dHJlYW1hYmxlKDEpKSk7CisKKy8vIFZlcmlmeSB0aGF0IHdlIGNhbiBjcmVhdGUgYSBoaWVyYXJj
aHkgb2YgdGVzdCBmaXh0dXJlcywgd2hlcmUgdGhlIGJhc2UKKy8vIGNsYXNzIGZpeHR1cmUgaXMg
bm90IHBhcmFtZXRlcml6ZWQgYW5kIHRoZSBkZXJpdmVkIGNsYXNzIGlzLiBJbiB0aGlzIGNhc2UK
Ky8vIFBhcmFtZXRlcml6ZWREZXJpdmVkVGVzdCBpbmhlcml0cyBmcm9tIE5vblBhcmFtZXRlcml6
ZWRCYXNlVGVzdC4gIFdlCisvLyBwZXJmb3JtIHNpbXBsZSB0ZXN0cyBvbiBib3RoLgorY2xhc3Mg
Tm9uUGFyYW1ldGVyaXplZEJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHVi
bGljOgorICBOb25QYXJhbWV0ZXJpemVkQmFzZVRlc3QoKSA6IG5fKDE3KSB7IH0KKyBwcm90ZWN0
ZWQ6CisgIGludCBuXzsKK307CisKK2NsYXNzIFBhcmFtZXRlcml6ZWREZXJpdmVkVGVzdCA6IHB1
YmxpYyBOb25QYXJhbWV0ZXJpemVkQmFzZVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8aW50PiB7CisgcHJv
dGVjdGVkOgorICBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3QoKSA6IGNvdW50XygwKSB7IH0KKyAg
aW50IGNvdW50XzsKKyAgc3RhdGljIGludCBnbG9iYWxfY291bnRfOworfTsKKworaW50IFBhcmFt
ZXRlcml6ZWREZXJpdmVkVGVzdDo6Z2xvYmFsX2NvdW50XyA9IDA7CisKK1RFU1RfRihOb25QYXJh
bWV0ZXJpemVkQmFzZVRlc3QsIEZpeHR1cmVJc0luaXRpYWxpemVkKSB7CisgIEVYUEVDVF9FUSgx
Nywgbl8pOworfQorCitURVNUX1AoUGFyYW1ldGVyaXplZERlcml2ZWRUZXN0LCBTZWVzU2VxdWVu
Y2UpIHsKKyAgRVhQRUNUX0VRKDE3LCBuXyk7CisgIEVYUEVDVF9FUSgwLCBjb3VudF8rKyk7Cisg
IEVYUEVDVF9FUShHZXRQYXJhbSgpLCBnbG9iYWxfY291bnRfKyspOworfQorCitjbGFzcyBQYXJh
bWV0ZXJpemVkRGVhdGhUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+
IHsgfTsKKworVEVTVF9GKFBhcmFtZXRlcml6ZWREZWF0aFRlc3QsIEdldFBhcmFtRGllc0Zyb21U
ZXN0RikgeworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKEdldFBhcmFtKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIi4qIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdCAuKiIpOwor
fQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChSYW5nZVplcm9Ub0ZpdmUsIFBhcmFtZXRlcml6
ZWREZXJpdmVkVGVzdCwgUmFuZ2UoMCwgNSkpOworCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFy
ICoqYXJndikgeworICAvLyBVc2VkIGluIFRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UuCisg
IEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChUZXN0R2VuZXJhdGlvblRlc3Q6OkVudmlyb25tZW50
OjpJbnN0YW5jZSgpKTsKKyAgLy8gVXNlZCBpbiBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCB0ZXN0
IGNhc2UuIFRlc3RzIHRoYXQgdGhlIHVwZGF0ZWQgdmFsdWUKKyAgLy8gd2lsbCBiZSBwaWNrZWQg
dXAgZm9yIGluc3RhbnRpYXRpbmcgdGVzdHMgaW4gR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QuCisg
IEdlbmVyYXRvckV2YWx1YXRpb25UZXN0OjpzZXRfcGFyYW1fdmFsdWUoMSk7CisKKyAgOjp0ZXN0
aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgLy8gVXNlZCBpbiBHZW5lcmF0
b3JFdmFsdWF0aW9uVGVzdCB0ZXN0IGNhc2UuIFRlc3RzIHRoYXQgdmFsdWUgdXBkYXRlZAorICAv
LyBoZXJlIHdpbGwgTk9UIGJlIHVzZWQgZm9yIGluc3RhbnRpYXRpbmcgdGVzdHMgaW4KKyAgLy8g
R2VuZXJhdG9yRXZhbHVhdGlvblRlc3QuCisgIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0OjpzZXRf
cGFyYW1fdmFsdWUoMik7CisKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRl
c3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0
LXRlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42MzJhNjFmNDkyNmJhOTIyNTE1OWRiNDY5ODEwZTQxY2FjMGQy
MGM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8vIENvcHlyaWdodCAy
MDA4LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgor
Ly8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0
aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLworLy8gVGhpcyBoZWFk
ZXIgZmlsZSBwcm92aWRlcyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5Cisv
LyBmb3IgdGVzdGluZyBHb29nbGUgVGVzdCBpdHNlbGYuCisKKyNpZm5kZWYgR1RFU1RfVEVTVF9H
VEVTVF9QQVJBTV9URVNUX1RFU1RfSF8KKyNkZWZpbmUgR1RFU1RfVEVTVF9HVEVTVF9QQVJBTV9U
RVNUX1RFU1RfSF8KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKy8vIFRlc3QgZml4dHVy
ZSBmb3IgdGVzdGluZyBkZWZpbml0aW9uIGFuZCBpbnN0YW50aWF0aW9uIG9mIGEgdGVzdAorLy8g
aW4gc2VwYXJhdGUgdHJhbnNsYXRpb24gdW5pdHMuCitjbGFzcyBFeHRlcm5hbEluc3RhbnRpYXRp
b25UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHsKK307CisKKy8v
IFRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyBpbnN0YW50aWF0aW9uIG9mIGEgdGVzdCBpbiBtdWx0
aXBsZQorLy8gdHJhbnNsYXRpb24gdW5pdHMuCitjbGFzcyBJbnN0YW50aWF0aW9uSW5NdWx0aXBs
ZVRyYW5zbGFpb25Vbml0c1Rlc3QKKyAgICA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08aW50PiB7Cit9OworCisjZW5kaWYgIC8vIEdURVNUX1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9U
RVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtcGFyYW0tdGVzdDItdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC1wYXJhbS10ZXN0Mi10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1YmI5NDVjMmY4ZWQyOWZk
OTA4NTZiMjNlMDNjMDFlMmE4NDMwNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdDItdGVzdC5jYwpAQCAtMCwwICsx
LDYxIEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLwor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8v
CisvLyBUZXN0cyBmb3IgR29vZ2xlIFRlc3QgaXRzZWxmLiAgVGhpcyB2ZXJpZmllcyB0aGF0IHRo
ZSBiYXNpYyBjb25zdHJ1Y3RzIG9mCisvLyBHb29nbGUgVGVzdCB3b3JrLgorCisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJ0ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0
LmgiCisKK3VzaW5nIDo6dGVzdGluZzo6VmFsdWVzOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6UGFyYW1HZW5lcmF0b3I7CisKKy8vIFRlc3RzIHRoYXQgZ2VuZXJhdG9ycyBkZWZpbmVkIGlu
IGEgZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXQKKy8vIGFyZSBmdW5jdGlvbmFsLiBUaGUgdGVz
dCB1c2luZyBleHRlcm5fZ2VuIGlzIGRlZmluZWQKKy8vIGluIGdvb2dsZXRlc3QtcGFyYW0tdGVz
dC10ZXN0LmNjLgorUGFyYW1HZW5lcmF0b3I8aW50PiBleHRlcm5fZ2VuID0gVmFsdWVzKDMzKTsK
KworLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBkZWZpbmVk
IGluIG9uZSB0cmFuc2xhdGlvbiB1bml0CisvLyBhbmQgaW5zdGFudGlhdGVkIGluIGFub3RoZXIu
IFRoZSB0ZXN0IGlzIGRlZmluZWQgaW4KKy8vIGdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmNj
IGFuZCBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0IGZpeHR1cmUgY2xhc3MgaXMKKy8vIGRlZmlu
ZWQgaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmguCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChN
dWx0aXBsZXNPZjMzLAorICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxJbnN0YW50aWF0
aW9uVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygzMywgNjYpKTsKKworLy8g
VGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBpbnN0YW50aWF0ZWQK
Ky8vIGluIG11bHRpcGxlIHRyYW5zbGF0aW9uIHVuaXRzLiBBbm90aGVyIGluc3RhbnRpYXRpb24g
aXMgZGVmaW5lZAorLy8gaW4gZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MgYW5kCisvLyBJ
bnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QgZml4dHVyZSBpcyBkZWZp
bmVkIGluCisvLyBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaAorSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoU2VxdWVuY2UyLAorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbkluTXVs
dGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVz
KDQyKjMsIDQyKjQsIDQyKjUpKTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LXBvcnQtdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1wb3J0LXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk5MzE2Zjk1YjYzN2Fj
YTkyZmI1YTE1NDRlYzdmYzI3YzJlZmIyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wb3J0LXRlc3QuY2MKQEAgLTAsMCArMSwxMzAw
IEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
Ky8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8g
VGhpcyBmaWxlIHRlc3RzIHRoZSBpbnRlcm5hbCBjcm9zcy1wbGF0Zm9ybSBzdXBwb3J0IHV0aWxp
dGllcy4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oIgorCisjaWYgR1RFU1RfT1NfTUFDCisjIGluY2x1ZGUgPHRpbWUuaD4KKyNlbmRp
ZiAgLy8gR1RFU1RfT1NfTUFDCisKKyNpbmNsdWRlIDxsaXN0PgorI2luY2x1ZGUgPHV0aWxpdHk+
ICAvLyBGb3Igc3RkOjpwYWlyIGFuZCBzdGQ6Om1ha2VfcGFpci4KKyNpbmNsdWRlIDx2ZWN0b3I+
CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5o
IgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKwordXNpbmcgc3RkOjptYWtl
X3BhaXI7Cit1c2luZyBzdGQ6OnBhaXI7CisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFj
ZSBpbnRlcm5hbCB7CisKK1RFU1QoSXNYRGlnaXRUZXN0LCBXb3Jrc0Zvck5hcnJvd0FzY2lpKSB7
CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KCcwJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgn
OScpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoJ0EnKSk7CisgIEVYUEVDVF9UUlVFKElzWERp
Z2l0KCdGJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgnYScpKTsKKyAgRVhQRUNUX1RSVUUo
SXNYRGlnaXQoJ2YnKSk7CisKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KCctJykpOworICBFWFBF
Q1RfRkFMU0UoSXNYRGlnaXQoJ2cnKSk7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdCgnRycpKTsK
K30KKworVEVTVChJc1hEaWdpdFRlc3QsIFJldHVybnNGYWxzZUZvck5hcnJvd05vbkFzY2lpKSB7
CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdChzdGF0aWNfY2FzdDxjaGFyPignXHg4MCcpKSk7Cisg
IEVYUEVDVF9GQUxTRShJc1hEaWdpdChzdGF0aWNfY2FzdDxjaGFyPignMCcgfCAnXHg4MCcpKSk7
Cit9CisKK1RFU1QoSXNYRGlnaXRUZXN0LCBXb3Jrc0ZvcldpZGVBc2NpaSkgeworICBFWFBFQ1Rf
VFJVRShJc1hEaWdpdChMJzAnKSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnOScpKTsKKyAg
RVhQRUNUX1RSVUUoSXNYRGlnaXQoTCdBJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdChMJ0Yn
KSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnYScpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGln
aXQoTCdmJykpOworCisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdChMJy0nKSk7CisgIEVYUEVDVF9G
QUxTRShJc1hEaWdpdChMJ2cnKSk7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdChMJ0cnKSk7Cit9
CisKK1RFU1QoSXNYRGlnaXRUZXN0LCBSZXR1cm5zRmFsc2VGb3JXaWRlTm9uQXNjaWkpIHsKKyAg
RVhQRUNUX0ZBTFNFKElzWERpZ2l0KHN0YXRpY19jYXN0PHdjaGFyX3Q+KDB4ODApKSk7CisgIEVY
UEVDVF9GQUxTRShJc1hEaWdpdChzdGF0aWNfY2FzdDx3Y2hhcl90PihMJzAnIHwgMHg4MCkpKTsK
KyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KHN0YXRpY19jYXN0PHdjaGFyX3Q+KEwnMCcgfCAweDEw
MCkpKTsKK30KKworY2xhc3MgQmFzZSB7CisgcHVibGljOgorICAvLyBDb3B5IGNvbnN0cnVjdG9y
IGFuZCBhc3NpZ25tZW50IG9wZXJhdG9yIGRvIGV4YWN0bHkgd2hhdCB3ZSBuZWVkLCBzbyB3ZQor
ICAvLyB1c2UgdGhlbS4KKyAgQmFzZSgpIDogbWVtYmVyXygwKSB7fQorICBleHBsaWNpdCBCYXNl
KGludCBuKSA6IG1lbWJlcl8obikge30KKyAgdmlydHVhbCB+QmFzZSgpIHt9CisgIGludCBtZW1i
ZXIoKSB7IHJldHVybiBtZW1iZXJfOyB9CisKKyBwcml2YXRlOgorICBpbnQgbWVtYmVyXzsKK307
CisKK2NsYXNzIERlcml2ZWQgOiBwdWJsaWMgQmFzZSB7CisgcHVibGljOgorICBleHBsaWNpdCBE
ZXJpdmVkKGludCBuKSA6IEJhc2Uobikge30KK307CisKK1RFU1QoSW1wbGljaXRDYXN0VGVzdCwg
Q29udmVydHNQb2ludGVycykgeworICBEZXJpdmVkIGRlcml2ZWQoMCk7CisgIEVYUEVDVF9UUlVF
KCZkZXJpdmVkID09IDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88QmFzZSo+KCZk
ZXJpdmVkKSk7Cit9CisKK1RFU1QoSW1wbGljaXRDYXN0VGVzdCwgQ2FuVXNlSW5oZXJpdGFuY2Up
IHsKKyAgRGVyaXZlZCBkZXJpdmVkKDEpOworICBCYXNlIGJhc2UgPSA6OnRlc3Rpbmc6OmludGVy
bmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+KGRlcml2ZWQpOworICBFWFBFQ1RfRVEoZGVyaXZlZC5t
ZW1iZXIoKSwgYmFzZS5tZW1iZXIoKSk7Cit9CisKK2NsYXNzIENhc3RhYmxlIHsKKyBwdWJsaWM6
CisgIGV4cGxpY2l0IENhc3RhYmxlKGJvb2wqIGNvbnZlcnRlZCkgOiBjb252ZXJ0ZWRfKGNvbnZl
cnRlZCkge30KKyAgb3BlcmF0b3IgQmFzZSgpIHsKKyAgICAqY29udmVydGVkXyA9IHRydWU7Cisg
ICAgcmV0dXJuIEJhc2UoKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgYm9vbCogY29udmVydGVkXzsK
K307CisKK1RFU1QoSW1wbGljaXRDYXN0VGVzdCwgQ2FuVXNlTm9uQ29uc3RDYXN0T3BlcmF0b3Ip
IHsKKyAgYm9vbCBjb252ZXJ0ZWQgPSBmYWxzZTsKKyAgQ2FzdGFibGUgY2FzdGFibGUoJmNvbnZl
cnRlZCk7CisgIEJhc2UgYmFzZSA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88
QmFzZT4oY2FzdGFibGUpOworICBFWFBFQ1RfVFJVRShjb252ZXJ0ZWQpOworfQorCitjbGFzcyBD
b25zdENhc3RhYmxlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IENvbnN0Q2FzdGFibGUoYm9vbCog
Y29udmVydGVkKSA6IGNvbnZlcnRlZF8oY29udmVydGVkKSB7fQorICBvcGVyYXRvciBCYXNlKCkg
Y29uc3QgeworICAgICpjb252ZXJ0ZWRfID0gdHJ1ZTsKKyAgICByZXR1cm4gQmFzZSgpOworICB9
CisKKyBwcml2YXRlOgorICBib29sKiBjb252ZXJ0ZWRfOworfTsKKworVEVTVChJbXBsaWNpdENh
c3RUZXN0LCBDYW5Vc2VDb25zdENhc3RPcGVyYXRvck9uQ29uc3RWYWx1ZXMpIHsKKyAgYm9vbCBj
b252ZXJ0ZWQgPSBmYWxzZTsKKyAgY29uc3QgQ29uc3RDYXN0YWJsZSBjb25zdF9jYXN0YWJsZSgm
Y29udmVydGVkKTsKKyAgQmFzZSBiYXNlID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRD
YXN0XzxCYXNlPihjb25zdF9jYXN0YWJsZSk7CisgIEVYUEVDVF9UUlVFKGNvbnZlcnRlZCk7Cit9
CisKK2NsYXNzIENvbnN0QW5kTm9uQ29uc3RDYXN0YWJsZSB7CisgcHVibGljOgorICBDb25zdEFu
ZE5vbkNvbnN0Q2FzdGFibGUoYm9vbCogY29udmVydGVkLCBib29sKiBjb25zdF9jb252ZXJ0ZWQp
CisgICAgICA6IGNvbnZlcnRlZF8oY29udmVydGVkKSwgY29uc3RfY29udmVydGVkXyhjb25zdF9j
b252ZXJ0ZWQpIHt9CisgIG9wZXJhdG9yIEJhc2UoKSB7CisgICAgKmNvbnZlcnRlZF8gPSB0cnVl
OworICAgIHJldHVybiBCYXNlKCk7CisgIH0KKyAgb3BlcmF0b3IgQmFzZSgpIGNvbnN0IHsKKyAg
ICAqY29uc3RfY29udmVydGVkXyA9IHRydWU7CisgICAgcmV0dXJuIEJhc2UoKTsKKyAgfQorCisg
cHJpdmF0ZToKKyAgYm9vbCogY29udmVydGVkXzsKKyAgYm9vbCogY29uc3RfY29udmVydGVkXzsK
K307CisKK1RFU1QoSW1wbGljaXRDYXN0VGVzdCwgQ2FuU2VsZWN0QmV0d2VlbkNvbnN0QW5kTm9u
Q29uc3RDYXNyQXBwcm9wcmlhdGVseSkgeworICBib29sIGNvbnZlcnRlZCA9IGZhbHNlOworICBi
b29sIGNvbnN0X2NvbnZlcnRlZCA9IGZhbHNlOworICBDb25zdEFuZE5vbkNvbnN0Q2FzdGFibGUg
Y2FzdGFibGUoJmNvbnZlcnRlZCwgJmNvbnN0X2NvbnZlcnRlZCk7CisgIEJhc2UgYmFzZSA9IDo6
dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88QmFzZT4oY2FzdGFibGUpOworICBFWFBF
Q1RfVFJVRShjb252ZXJ0ZWQpOworICBFWFBFQ1RfRkFMU0UoY29uc3RfY29udmVydGVkKTsKKwor
ICBjb252ZXJ0ZWQgPSBmYWxzZTsKKyAgY29uc3RfY29udmVydGVkID0gZmFsc2U7CisgIGNvbnN0
IENvbnN0QW5kTm9uQ29uc3RDYXN0YWJsZSBjb25zdF9jYXN0YWJsZSgmY29udmVydGVkLCAmY29u
c3RfY29udmVydGVkKTsKKyAgYmFzZSA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2Fz
dF88QmFzZT4oY29uc3RfY2FzdGFibGUpOworICBFWFBFQ1RfRkFMU0UoY29udmVydGVkKTsKKyAg
RVhQRUNUX1RSVUUoY29uc3RfY29udmVydGVkKTsKK30KKworY2xhc3MgVG8geworIHB1YmxpYzoK
KyAgVG8oYm9vbCogY29udmVydGVkKSB7ICpjb252ZXJ0ZWQgPSB0cnVlOyB9ICAvLyBOT0xJTlQK
K307CisKK1RFU1QoSW1wbGljaXRDYXN0VGVzdCwgQ2FuVXNlSW1wbGljaXRDb25zdHJ1Y3Rvcikg
eworICBib29sIGNvbnZlcnRlZCA9IGZhbHNlOworICBUbyB0byA9IDo6dGVzdGluZzo6aW50ZXJu
YWw6OkltcGxpY2l0Q2FzdF88VG8+KCZjb252ZXJ0ZWQpOworICAodm9pZCl0bzsKKyAgRVhQRUNU
X1RSVUUoY29udmVydGVkKTsKK30KKworVEVTVChJdGVyYXRvclRyYWl0c1Rlc3QsIFdvcmtzRm9y
U1RMQ29udGFpbmVySXRlcmF0b3JzKSB7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsCisgICAg
ICBJdGVyYXRvclRyYWl0czwgOjpzdGQ6OnZlY3RvcjxpbnQ+Ojpjb25zdF9pdGVyYXRvcj46OnZh
bHVlX3R5cGU+KCk7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxib29sLAorICAgICAgSXRlcmF0b3JU
cmFpdHM8IDo6c3RkOjpsaXN0PGJvb2w+OjppdGVyYXRvcj46OnZhbHVlX3R5cGU+KCk7Cit9CisK
K1RFU1QoSXRlcmF0b3JUcmFpdHNUZXN0LCBXb3Jrc0ZvclBvaW50ZXJUb05vbkNvbnN0KSB7Cisg
IFN0YXRpY0Fzc2VydFR5cGVFcTxjaGFyLCBJdGVyYXRvclRyYWl0czxjaGFyKj46OnZhbHVlX3R5
cGU+KCk7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCB2b2lkKiwgSXRlcmF0b3JUcmFpdHM8
Y29uc3Qgdm9pZCoqPjo6dmFsdWVfdHlwZT4oKTsKK30KKworVEVTVChJdGVyYXRvclRyYWl0c1Rl
c3QsIFdvcmtzRm9yUG9pbnRlclRvQ29uc3QpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGNoYXIs
IEl0ZXJhdG9yVHJhaXRzPGNvbnN0IGNoYXIqPjo6dmFsdWVfdHlwZT4oKTsKKyAgU3RhdGljQXNz
ZXJ0VHlwZUVxPGNvbnN0IHZvaWQqLAorICAgICAgSXRlcmF0b3JUcmFpdHM8Y29uc3Qgdm9pZCog
Y29uc3QqPjo6dmFsdWVfdHlwZT4oKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgZWxlbWVudF90
eXBlIHR5cGVkZWYgaXMgYXZhaWxhYmxlIGluIHNjb3BlZF9wdHIgYW5kIHJlZmVycworLy8gdG8g
dGhlIHBhcmFtZXRlciB0eXBlLgorVEVTVChTY29wZWRQdHJUZXN0LCBEZWZpbmVzRWxlbWVudFR5
cGUpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c2Nv
cGVkX3B0cjxpbnQ+OjplbGVtZW50X3R5cGU+KCk7Cit9CisKKy8vIEZJWE1FOiBJbXBsZW1lbnQg
VEhFIFJFU1Qgb2Ygc2NvcGVkX3B0ciB0ZXN0cy4KKworVEVTVChHdGVzdENoZWNrU3ludGF4VGVz
dCwgQmVoYXZlc0xpa2VBU2luZ2xlU3RhdGVtZW50KSB7CisgIGlmIChBbHdheXNGYWxzZSgpKQor
ICAgIEdURVNUX0NIRUNLXyhmYWxzZSkgPDwgIlRoaXMgc2hvdWxkIG5ldmVyIGJlIGV4ZWN1dGVk
OyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiSXQncyBhIGNvbXBpbGF0aW9uIHRlc3Qg
b25seS4iOworCisgIGlmIChBbHdheXNUcnVlKCkpCisgICAgR1RFU1RfQ0hFQ0tfKHRydWUpOwor
ICBlbHNlCisgICAgOyAgLy8gTk9MSU5UCisKKyAgaWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgOyAg
Ly8gTk9MSU5UCisgIGVsc2UKKyAgICBHVEVTVF9DSEVDS18odHJ1ZSkgPDwgIiI7Cit9CisKK1RF
U1QoR3Rlc3RDaGVja1N5bnRheFRlc3QsIFdvcmtzV2l0aFN3aXRjaCkgeworICBzd2l0Y2ggKDAp
IHsKKyAgICBjYXNlIDE6CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgR1RFU1Rf
Q0hFQ0tfKHRydWUpOworICB9CisKKyAgc3dpdGNoICgwKQorICAgIGNhc2UgMDoKKyAgICAgIEdU
RVNUX0NIRUNLXyh0cnVlKSA8PCAiQ2hlY2sgZmFpbGVkIGluIHN3aXRjaCBjYXNlIjsKK30KKwor
Ly8gVmVyaWZpZXMgYmVoYXZpb3Igb2YgRm9ybWF0RmlsZUxvY2F0aW9uLgorVEVTVChGb3JtYXRG
aWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzRmlsZUxvY2F0aW9uKSB7CisgIEVYUEVDVF9QUkVEX0ZP
Uk1BVDIoSXNTdWJzdHJpbmcsICJmb28uY2MiLCBGb3JtYXRGaWxlTG9jYXRpb24oImZvby5jYyIs
IDQyKSk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICI0MiIsIEZvcm1hdEZp
bGVMb2NhdGlvbigiZm9vLmNjIiwgNDIpKTsKK30KKworVEVTVChGb3JtYXRGaWxlTG9jYXRpb25U
ZXN0LCBGb3JtYXRzVW5rbm93bkZpbGUpIHsKKyAgRVhQRUNUX1BSRURfRk9STUFUMigKKyAgICAg
IElzU3Vic3RyaW5nLCAidW5rbm93biBmaWxlIiwgRm9ybWF0RmlsZUxvY2F0aW9uKE5VTEwsIDQy
KSk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICI0MiIsIEZvcm1hdEZpbGVM
b2NhdGlvbihOVUxMLCA0MikpOworfQorCitURVNUKEZvcm1hdEZpbGVMb2NhdGlvblRlc3QsIEZv
cm1hdHNVa25vd25MaW5lKSB7CisgIEVYUEVDVF9FUSgiZm9vLmNjOiIsIEZvcm1hdEZpbGVMb2Nh
dGlvbigiZm9vLmNjIiwgLTEpKTsKK30KKworVEVTVChGb3JtYXRGaWxlTG9jYXRpb25UZXN0LCBG
b3JtYXRzVWtub3duRmlsZUFuZExpbmUpIHsKKyAgRVhQRUNUX0VRKCJ1bmtub3duIGZpbGU6Iiwg
Rm9ybWF0RmlsZUxvY2F0aW9uKE5VTEwsIC0xKSk7Cit9CisKKy8vIFZlcmlmaWVzIGJlaGF2aW9y
IG9mIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24uCitURVNUKEZvcm1hdENv
bXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzRmlsZUxvY2F0aW9uKSB7
CisgIEVYUEVDVF9FUSgiZm9vLmNjOjQyIiwgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVM
b2NhdGlvbigiZm9vLmNjIiwgNDIpKTsKK30KKworVEVTVChGb3JtYXRDb21waWxlckluZGVwZW5k
ZW50RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c1Vrbm93bkZpbGUpIHsKKyAgRVhQRUNUX0VRKCJ1
bmtub3duIGZpbGU6NDIiLAorICAgICAgICAgICAgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZp
bGVMb2NhdGlvbihOVUxMLCA0MikpOworfQorCitURVNUKEZvcm1hdENvbXBpbGVySW5kZXBlbmRl
bnRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzVWtub3duTGluZSkgeworICBFWFBFQ1RfRVEoImZv
by5jYyIsIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oImZvby5jYyIsIC0x
KSk7Cit9CisKK1RFU1QoRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvblRlc3Qs
IEZvcm1hdHNVa25vd25GaWxlQW5kTGluZSkgeworICBFWFBFQ1RfRVEoInVua25vd24gZmlsZSIs
IEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oTlVMTCwgLTEpKTsKK30KKwor
I2lmIEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19RTlggfHwgR1RF
U1RfT1NfRlVDSFNJQQordm9pZCogVGhyZWFkRnVuYyh2b2lkKiBkYXRhKSB7CisgIGludGVybmFs
OjpNdXRleCogbXV0ZXggPSBzdGF0aWNfY2FzdDxpbnRlcm5hbDo6TXV0ZXgqPihkYXRhKTsKKyAg
bXV0ZXgtPkxvY2soKTsKKyAgbXV0ZXgtPlVubG9jaygpOworICByZXR1cm4gTlVMTDsKK30KKwor
VEVTVChHZXRUaHJlYWRDb3VudFRlc3QsIFJldHVybnNDb3JyZWN0VmFsdWUpIHsKKyAgY29uc3Qg
c2l6ZV90IHN0YXJ0aW5nX2NvdW50ID0gR2V0VGhyZWFkQ291bnQoKTsKKyAgcHRocmVhZF90ICAg
ICAgIHRocmVhZF9pZDsKKworICBpbnRlcm5hbDo6TXV0ZXggbXV0ZXg7CisgIHsKKyAgICBpbnRl
cm5hbDo6TXV0ZXhMb2NrIGxvY2soJm11dGV4KTsKKyAgICBwdGhyZWFkX2F0dHJfdCAgYXR0cjsK
KyAgICBBU1NFUlRfRVEoMCwgcHRocmVhZF9hdHRyX2luaXQoJmF0dHIpKTsKKyAgICBBU1NFUlRf
RVEoMCwgcHRocmVhZF9hdHRyX3NldGRldGFjaHN0YXRlKCZhdHRyLCBQVEhSRUFEX0NSRUFURV9K
T0lOQUJMRSkpOworCisgICAgY29uc3QgaW50IHN0YXR1cyA9IHB0aHJlYWRfY3JlYXRlKCZ0aHJl
YWRfaWQsICZhdHRyLCAmVGhyZWFkRnVuYywgJm11dGV4KTsKKyAgICBBU1NFUlRfRVEoMCwgcHRo
cmVhZF9hdHRyX2Rlc3Ryb3koJmF0dHIpKTsKKyAgICBBU1NFUlRfRVEoMCwgc3RhdHVzKTsKKyAg
ICBFWFBFQ1RfRVEoc3RhcnRpbmdfY291bnQgKyAxLCBHZXRUaHJlYWRDb3VudCgpKTsKKyAgfQor
CisgIHZvaWQqIGR1bW15OworICBBU1NFUlRfRVEoMCwgcHRocmVhZF9qb2luKHRocmVhZF9pZCwg
JmR1bW15KSk7CisKKyAgLy8gVGhlIE9TIG1heSBub3QgaW1tZWRpYXRlbHkgcmVwb3J0IHRoZSB1
cGRhdGVkIHRocmVhZCBjb3VudCBhZnRlcgorICAvLyBqb2luaW5nIGEgdGhyZWFkLCBjYXVzaW5n
IGZsYWtpbmVzcyBpbiB0aGlzIHRlc3QuIFRvIGNvdW50ZXIgdGhhdCwgd2UKKyAgLy8gd2FpdCBm
b3IgdXAgdG8gLjUgc2Vjb25kcyBmb3IgdGhlIE9TIHRvIHJlcG9ydCB0aGUgY29ycmVjdCB2YWx1
ZS4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyArK2kpIHsKKyAgICBpZiAoR2V0VGhyZWFkQ291
bnQoKSA9PSBzdGFydGluZ19jb3VudCkKKyAgICAgIGJyZWFrOworCisgICAgU2xlZXBNaWxsaXNl
Y29uZHMoMTAwKTsKKyAgfQorCisgIEVYUEVDVF9FUShzdGFydGluZ19jb3VudCwgR2V0VGhyZWFk
Q291bnQoKSk7Cit9CisjZWxzZQorVEVTVChHZXRUaHJlYWRDb3VudFRlc3QsIFJldHVybnNaZXJv
V2hlblVuYWJsZVRvQ291bnRUaHJlYWRzKSB7CisgIEVYUEVDVF9FUSgwVSwgR2V0VGhyZWFkQ291
bnQoKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fCBH
VEVTVF9PU19RTlggfHwgR1RFU1RfT1NfRlVDSFNJQQorCitURVNUKEd0ZXN0Q2hlY2tEZWF0aFRl
c3QsIERpZXNXaXRoQ29ycmVjdE91dHB1dE9uRmFpbHVyZSkgeworICBjb25zdCBib29sIGFfZmFs
c2VfY29uZGl0aW9uID0gZmFsc2U7CisgIGNvbnN0IGNoYXIgcmVnZXhbXSA9CisjaWZkZWYgX01T
Q19WRVIKKyAgICAgImdvb2dsZXRlc3QtcG9ydC10ZXN0XFwuY2NcXChcXGQrXFwpOiIKKyNlbGlm
IEdURVNUX1VTRVNfUE9TSVhfUkUKKyAgICAgImdvb2dsZXRlc3QtcG9ydC10ZXN0XFwuY2M6WzAt
OV0rIgorI2Vsc2UKKyAgICAgImdvb2dsZXRlc3QtcG9ydC10ZXN0XFwuY2M6XFxkKyIKKyNlbmRp
ZiAgLy8gX01TQ19WRVIKKyAgICAgIi4qYV9mYWxzZV9jb25kaXRpb24uKkV4dHJhIGluZm8uKiI7
CisKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChHVEVTVF9DSEVDS18oYV9mYWxzZV9jb25k
aXRpb24pIDw8ICJFeHRyYSBpbmZvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdl
eCk7Cit9CisKKyNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorCitURVNUKEd0ZXN0Q2hlY2tEZWF0
aFRlc3QsIExpdmVzU2lsZW50bHlPblN1Y2Nlc3MpIHsKKyAgRVhQRUNUX0VYSVQoeworICAgICAg
R1RFU1RfQ0hFQ0tfKHRydWUpIDw8ICJFeHRyYSBpbmZvIjsKKyAgICAgIDo6c3RkOjpjZXJyIDw8
ICJTdWNjZXNzXG4iOworICAgICAgZXhpdCgwKTsgfSwKKyAgICAgIDo6dGVzdGluZzo6RXhpdGVk
V2l0aENvZGUoMCksICJTdWNjZXNzIik7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRI
X1RFU1QKKworLy8gVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCBjaG9vc2UgcmVndWxhciBleHBy
ZXNzaW9uIGVuZ2luZSBhcHByb3ByaWF0ZSB0bworLy8gdGhlIHBsYXRmb3JtLiBUaGUgdGVzdCB3
aWxsIHByb2R1Y2UgY29tcGlsZXIgZXJyb3JzIGluIGNhc2Ugb2YgZmFpbHVyZS4KKy8vIEZvciBz
aW1wbGljaXR5LCB3ZSBvbmx5IGNvdmVyIHRoZSBtb3N0IGltcG9ydGFudCBwbGF0Zm9ybXMgaGVy
ZS4KK1RFU1QoUmVnZXhFbmdpbmVTZWxlY3Rpb25UZXN0LCBTZWxlY3RzQ29ycmVjdFJlZ2V4RW5n
aW5lKSB7CisjaWYgIUdURVNUX1VTRVNfUENSRQorIyBpZiBHVEVTVF9IQVNfUE9TSVhfUkUKKwor
ICBFWFBFQ1RfVFJVRShHVEVTVF9VU0VTX1BPU0lYX1JFKTsKKworIyBlbHNlCisKKyAgRVhQRUNU
X1RSVUUoR1RFU1RfVVNFU19TSU1QTEVfUkUpOworCisjIGVuZGlmCisjZW5kaWYgIC8vICFHVEVT
VF9VU0VTX1BDUkUKK30KKworI2lmIEdURVNUX1VTRVNfUE9TSVhfUkUKKworIyBpZiBHVEVTVF9I
QVNfVFlQRURfVEVTVAorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyPgorY2xhc3MgUkVUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKworLy8gRGVmaW5lcyBTdHJpbmdUeXBlcyBhcyB0
aGUgbGlzdCBvZiBhbGwgc3RyaW5nIHR5cGVzIHRoYXQgY2xhc3MgUkUKKy8vIHN1cHBvcnRzLgor
dHlwZWRlZiB0ZXN0aW5nOjpUeXBlczwKKyAgICA6OnN0ZDo6c3RyaW5nLAorIyAgaWYgR1RFU1Rf
SEFTX0dMT0JBTF9TVFJJTkcKKyAgICA6OnN0cmluZywKKyMgIGVuZGlmICAvLyBHVEVTVF9IQVNf
R0xPQkFMX1NUUklORworICAgIGNvbnN0IGNoYXIqPiBTdHJpbmdUeXBlczsKKworVFlQRURfVEVT
VF9DQVNFKFJFVGVzdCwgU3RyaW5nVHlwZXMpOworCisvLyBUZXN0cyBSRSdzIGltcGxpY2l0IGNv
bnN0cnVjdG9ycy4KK1RZUEVEX1RFU1QoUkVUZXN0LCBJbXBsaWNpdENvbnN0cnVjdG9yV29ya3Mp
IHsKKyAgY29uc3QgUkUgZW1wdHkoVHlwZVBhcmFtKCIiKSk7CisgIEVYUEVDVF9TVFJFUSgiIiwg
ZW1wdHkucGF0dGVybigpKTsKKworICBjb25zdCBSRSBzaW1wbGUoVHlwZVBhcmFtKCJoZWxsbyIp
KTsKKyAgRVhQRUNUX1NUUkVRKCJoZWxsbyIsIHNpbXBsZS5wYXR0ZXJuKCkpOworCisgIGNvbnN0
IFJFIG5vcm1hbChUeXBlUGFyYW0oIi4qKFxcdyspIikpOworICBFWFBFQ1RfU1RSRVEoIi4qKFxc
dyspIiwgbm9ybWFsLnBhdHRlcm4oKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUkUncyBjb25zdHJ1
Y3RvcnMgcmVqZWN0IGludmFsaWQgcmVndWxhciBleHByZXNzaW9ucy4KK1RZUEVEX1RFU1QoUkVU
ZXN0LCBSZWplY3RzSW52YWxpZFJlZ2V4KSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsK
KyAgICBjb25zdCBSRSBpbnZhbGlkKFR5cGVQYXJhbSgiPyIpKTsKKyAgfSwgIlwiP1wiIGlzIG5v
dCBhIHZhbGlkIFBPU0lYIEV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbi4iKTsKK30KKworLy8g
VGVzdHMgUkU6OkZ1bGxNYXRjaCgpLgorVFlQRURfVEVTVChSRVRlc3QsIEZ1bGxNYXRjaFdvcmtz
KSB7CisgIGNvbnN0IFJFIGVtcHR5KFR5cGVQYXJhbSgiIikpOworICBFWFBFQ1RfVFJVRShSRTo6
RnVsbE1hdGNoKFR5cGVQYXJhbSgiIiksIGVtcHR5KSk7CisgIEVYUEVDVF9GQUxTRShSRTo6RnVs
bE1hdGNoKFR5cGVQYXJhbSgiYSIpLCBlbXB0eSkpOworCisgIGNvbnN0IFJFIHJlKFR5cGVQYXJh
bSgiYS4qeiIpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oImF6Iiks
IHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJheHl6IiksIHJl
KSk7CisgIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYmF6IiksIHJlKSk7
CisgIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYXp5IiksIHJlKSk7Cit9
CisKKy8vIFRlc3RzIFJFOjpQYXJ0aWFsTWF0Y2goKS4KK1RZUEVEX1RFU1QoUkVUZXN0LCBQYXJ0
aWFsTWF0Y2hXb3JrcykgeworICBjb25zdCBSRSBlbXB0eShUeXBlUGFyYW0oIiIpKTsKKyAgRVhQ
RUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oIiIpLCBlbXB0eSkpOworICBFWFBF
Q1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiYSIpLCBlbXB0eSkpOworCisgIGNv
bnN0IFJFIHJlKFR5cGVQYXJhbSgiYS4qeiIpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxN
YXRjaChUeXBlUGFyYW0oImF6IiksIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0
Y2goVHlwZVBhcmFtKCJheHl6IiksIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0
Y2goVHlwZVBhcmFtKCJiYXoiKSwgcmUpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRj
aChUeXBlUGFyYW0oImF6eSIpLCByZSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OlBhcnRpYWxNYXRj
aChUeXBlUGFyYW0oInp6YSIpLCByZSkpOworfQorCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfVFlQ
RURfVEVTVAorCisjZWxpZiBHVEVTVF9VU0VTX1NJTVBMRV9SRQorCitURVNUKElzSW5TZXRUZXN0
LCBOdWxDaGFySXNOb3RJbkFueVNldCkgeworICBFWFBFQ1RfRkFMU0UoSXNJblNldCgnXDAnLCAi
IikpOworICBFWFBFQ1RfRkFMU0UoSXNJblNldCgnXDAnLCAiXDAiKSk7CisgIEVYUEVDVF9GQUxT
RShJc0luU2V0KCdcMCcsICJhIikpOworfQorCitURVNUKElzSW5TZXRUZXN0LCBXb3Jrc0Zvck5v
bk51bENoYXJzKSB7CisgIEVYUEVDVF9GQUxTRShJc0luU2V0KCdhJywgIkFiIikpOworICBFWFBF
Q1RfRkFMU0UoSXNJblNldCgnYycsICIiKSk7CisKKyAgRVhQRUNUX1RSVUUoSXNJblNldCgnYics
ICJiY2QiKSk7CisgIEVYUEVDVF9UUlVFKElzSW5TZXQoJ2InLCAiYWIiKSk7Cit9CisKK1RFU1Qo
SXNBc2NpaURpZ2l0VGVzdCwgSXNGYWxzZUZvck5vbkRpZ2l0KSB7CisgIEVYUEVDVF9GQUxTRShJ
c0FzY2lpRGlnaXQoJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaURpZ2l0KCcgJykpOwor
ICBFWFBFQ1RfRkFMU0UoSXNBc2NpaURpZ2l0KCcrJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2Np
aURpZ2l0KCctJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaURpZ2l0KCcuJykpOworICBFWFBF
Q1RfRkFMU0UoSXNBc2NpaURpZ2l0KCdhJykpOworfQorCitURVNUKElzQXNjaWlEaWdpdFRlc3Qs
IElzVHJ1ZUZvckRpZ2l0KSB7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlEaWdpdCgnMCcpKTsKKyAg
RVhQRUNUX1RSVUUoSXNBc2NpaURpZ2l0KCcxJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpRGln
aXQoJzUnKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlEaWdpdCgnOScpKTsKK30KKworVEVTVChJ
c0FzY2lpUHVuY3RUZXN0LCBJc0ZhbHNlRm9yTm9uUHVuY3QpIHsKKyAgRVhQRUNUX0ZBTFNFKElz
QXNjaWlQdW5jdCgnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3QoJyAnKSk7Cisg
IEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3QoJ1xuJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2Np
aVB1bmN0KCdhJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVB1bmN0KCcwJykpOworfQorCitU
RVNUKElzQXNjaWlQdW5jdFRlc3QsIElzVHJ1ZUZvclB1bmN0KSB7CisgIGZvciAoY29uc3QgY2hh
ciogcCA9ICJeLSFcIiMkJSYnKCkqKywuLzo7PD0+P0BbXFxdX2B7fH1+IjsgKnA7IHArKykgewor
ICAgIEVYUEVDVF9QUkVEMShJc0FzY2lpUHVuY3QsICpwKTsKKyAgfQorfQorCitURVNUKElzUmVw
ZWF0VGVzdCwgSXNGYWxzZUZvck5vblJlcGVhdENoYXIpIHsKKyAgRVhQRUNUX0ZBTFNFKElzUmVw
ZWF0KCdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCcgJykpOworICBFWFBFQ1RfRkFM
U0UoSXNSZXBlYXQoJ2EnKSk7CisgIEVYUEVDVF9GQUxTRShJc1JlcGVhdCgnMScpKTsKKyAgRVhQ
RUNUX0ZBTFNFKElzUmVwZWF0KCctJykpOworfQorCitURVNUKElzUmVwZWF0VGVzdCwgSXNUcnVl
Rm9yUmVwZWF0Q2hhcikgeworICBFWFBFQ1RfVFJVRShJc1JlcGVhdCgnPycpKTsKKyAgRVhQRUNU
X1RSVUUoSXNSZXBlYXQoJyonKSk7CisgIEVYUEVDVF9UUlVFKElzUmVwZWF0KCcrJykpOworfQor
CitURVNUKElzQXNjaWlXaGl0ZVNwYWNlVGVzdCwgSXNGYWxzZUZvck5vbldoaXRlU3BhY2UpIHsK
KyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXaGl0ZVNwYWNlKCdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNF
KElzQXNjaWlXaGl0ZVNwYWNlKCdhJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdoaXRlU3Bh
Y2UoJzEnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV2hpdGVTcGFjZSgnKycpKTsKKyAgRVhQ
RUNUX0ZBTFNFKElzQXNjaWlXaGl0ZVNwYWNlKCdfJykpOworfQorCitURVNUKElzQXNjaWlXaGl0
ZVNwYWNlVGVzdCwgSXNUcnVlRm9yV2hpdGVTcGFjZSkgeworICBFWFBFQ1RfVFJVRShJc0FzY2lp
V2hpdGVTcGFjZSgnICcpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdoaXRlU3BhY2UoJ1xuJykp
OworICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnXHInKSk7CisgIEVYUEVDVF9UUlVF
KElzQXNjaWlXaGl0ZVNwYWNlKCdcdCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdoaXRlU3Bh
Y2UoJ1x2JykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnXGYnKSk7Cit9CisK
K1RFU1QoSXNBc2NpaVdvcmRDaGFyVGVzdCwgSXNGYWxzZUZvck5vbldvcmRDaGFyKSB7CisgIEVY
UEVDVF9GQUxTRShJc0FzY2lpV29yZENoYXIoJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2Np
aVdvcmRDaGFyKCcrJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdvcmRDaGFyKCcuJykpOwor
ICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdvcmRDaGFyKCcgJykpOworICBFWFBFQ1RfRkFMU0UoSXNB
c2NpaVdvcmRDaGFyKCdcbicpKTsKK30KKworVEVTVChJc0FzY2lpV29yZENoYXJUZXN0LCBJc1Ry
dWVGb3JMZXR0ZXIpIHsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCdhJykpOworICBF
WFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJ2InKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlX
b3JkQ2hhcignQScpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCdaJykpOworfQor
CitURVNUKElzQXNjaWlXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvckRpZ2l0KSB7CisgIEVYUEVDVF9U
UlVFKElzQXNjaWlXb3JkQ2hhcignMCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFy
KCcxJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJzcnKSk7CisgIEVYUEVDVF9U
UlVFKElzQXNjaWlXb3JkQ2hhcignOScpKTsKK30KKworVEVTVChJc0FzY2lpV29yZENoYXJUZXN0
LCBJc1RydWVGb3JVbmRlcnNjb3JlKSB7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcign
XycpKTsKK30KKworVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZvck5vblByaW50YWJs
ZSkgeworICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnXDAnKSk7CisgIEVYUEVDVF9GQUxT
RShJc1ZhbGlkRXNjYXBlKCdcMDA3JykpOworfQorCitURVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJ
c0ZhbHNlRm9yRGlnaXQpIHsKKyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJzAnKSk7Cisg
IEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCc5JykpOworfQorCitURVNUKElzVmFsaWRFc2Nh
cGVUZXN0LCBJc0ZhbHNlRm9yV2hpdGVTcGFjZSkgeworICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVz
Y2FwZSgnICcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJ1xuJykpOworfQorCitU
RVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc0ZhbHNlRm9yU29tZUxldHRlcikgeworICBFWFBFQ1Rf
RkFMU0UoSXNWYWxpZEVzY2FwZSgnYScpKTsKKyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUo
J1onKSk7Cit9CisKK1RFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzVHJ1ZUZvclB1bmN0KSB7Cisg
IEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJy4nKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRF
c2NhcGUoJy0nKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ14nKSk7CisgIEVYUEVD
VF9UUlVFKElzVmFsaWRFc2NhcGUoJyQnKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUo
JygnKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ10nKSk7CisgIEVYUEVDVF9UUlVF
KElzVmFsaWRFc2NhcGUoJ3snKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ3wnKSk7
Cit9CisKK1RFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzVHJ1ZUZvclNvbWVMZXR0ZXIpIHsKKyAg
RVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnZCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVz
Y2FwZSgnRCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgncycpKTsKKyAgRVhQRUNU
X1RSVUUoSXNWYWxpZEVzY2FwZSgnUycpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgn
dycpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnVycpKTsKK30KKworVEVTVChBdG9t
TWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkUHVuY3QpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAnXFwnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ1xcJywgJyAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ18nLCAnLicpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnLics
ICdhJykpOworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXFwnLCAnXFwn
KSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXycsICdfJykpOworICBF
WFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJysnLCAnKycpKTsKKyAgRVhQRUNUX1RS
VUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICcuJywgJy4nKSk7Cit9CisKK1RFU1QoQXRvbU1hdGNo
ZXNDaGFyVGVzdCwgRXNjYXBlZF9kKSB7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ2QnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwg
J2QnLCAnYScpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICcu
JykpOworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICcwJykpOwor
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnOScpKTsKK30KKworVEVT
VChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX0QpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAnRCcsICcwJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICdEJywgJzknKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICdEJywgJ1wwJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0Qn
LCAnYScpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJy0nKSk7
Cit9CisKK1RFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF9zKSB7CisgIEVYUEVDVF9G
QUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShB
dG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnYScpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAncycsICcuJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFy
KHRydWUsICdzJywgJzknKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICdzJywgJyAnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICdc
bicpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJ1x0JykpOwor
fQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfUykgeworICBFWFBFQ1RfRkFM
U0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdTJywgJyAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnXHInKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNo
ZXNDaGFyKHRydWUsICdTJywgJ1wwJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ1MnLCAnYScpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdT
JywgJzknKSk7Cit9CisKK1RFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF93KSB7Cisg
IEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnXDAnKSk7CisgIEVYUEVD
VF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnKycpKTsKKyAgRVhQRUNUX0ZBTFNF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICcgJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICd3JywgJ1xuJykpOworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAndycsICcwJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ3cnLCAnYicpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3Jywg
J0MnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdfJykpOwor
fQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfVykgeworICBFWFBFQ1RfRkFM
U0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJ0EnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnYicpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAnVycsICc5JykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICdXJywgJ18nKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdX
JywgJ1wwJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnKicp
KTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJ1xuJykpOworfQor
CitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRXaGl0ZVNwYWNlKSB7CisgIEVYUEVD
VF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2YnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxT
RShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2YnLCAnXG4nKSk7CisgIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ24nLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ24nLCAnXHInKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ3InLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwg
J3InLCAnYScpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndCcsICdc
MCcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndCcsICd0JykpOwor
ICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd2JywgJ1wwJykpOworICBFWFBF
Q1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd2JywgJ1xmJykpOworCisgIEVYUEVDVF9U
UlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZicsICdcZicpKTsKKyAgRVhQRUNUX1RSVUUoQXRv
bU1hdGNoZXNDaGFyKHRydWUsICduJywgJ1xuJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ3InLCAnXHInKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAndCcsICdcdCcpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd2
JywgJ1x2JykpOworfQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIFVuZXNjYXBlZERvdCkg
eworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnLicsICdcbicpKTsKKwor
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICcuJywgJ1wwJykpOworICBFWFBF
Q1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICcuJywgJy4nKSk7CisgIEVYUEVDVF9UUlVF
KEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4nLCAnYScpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1h
dGNoZXNDaGFyKGZhbHNlLCAnLicsICcgJykpOworfQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRl
c3QsIFVuZXNjYXBlZENoYXIpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcihmYWxz
ZSwgJ2EnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICdh
JywgJ2InKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICckJywgJ2En
KSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnJCcsICckJykpOwor
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICc1JywgJzUnKSk7CisgIEVYUEVD
VF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJ1onLCAnWicpKTsKK30KKworVEVTVChWYWxp
ZGF0ZVJlZ2V4VGVzdCwgR2VuZXJhdGVzRmFpbHVyZUFuZFJldHVybnNGYWxzZUZvckludmFsaWQp
IHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgo
TlVMTCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiTlVMTCBpcyBub3QgYSB2YWxpZCBz
aW1wbGUgcmVndWxhciBleHByZXNzaW9uIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAor
ICAgICAgQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImFcXCIpKSwKKyAgICAgICJTeW50YXgg
ZXJyb3IgYXQgaW5kZXggMSBpbiBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uIFwiYVxcXCI6ICIp
OworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgi
YVxcIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJ1xcJyBjYW5ub3QgYXBwZWFyIGF0
IHRoZSBlbmQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlk
YXRlUmVnZXgoIlxcblxcIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJ1xcJyBjYW5u
b3QgYXBwZWFyIGF0IHRoZSBlbmQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJU
X0ZBTFNFKFZhbGlkYXRlUmVnZXgoIlxcc1xcaGIiKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICJpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBcIlxcaFwiIik7CisgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJeXiIpKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIideJyBjYW4gb25seSBhcHBlYXIgYXQgdGhlIGJlZ2lubmluZyIpOwor
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiLipe
YiIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIideJyBjYW4gb25seSBhcHBlYXIgYXQg
dGhlIGJlZ2lubmluZyIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0Uo
VmFsaWRhdGVSZWdleCgiJCQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICInJCcgY2Fu
IG9ubHkgYXBwZWFyIGF0IHRoZSBlbmQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNT
RVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIl4kYSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIickJyBjYW4gb25seSBhcHBlYXIgYXQgdGhlIGVuZCIpOworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiYShiIikpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiJygnIGlzIHVuc3VwcG9ydGVkIik7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJhYikiKSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICInKScgaXMgdW5zdXBwb3J0ZWQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIlthYiIpKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIidbJyBpcyB1bnN1cHBvcnRlZCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiYXsyIikpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAiJ3snIGlzIHVuc3VwcG9ydGVkIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCI/IikpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAiJz8nIGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVhdGFibGUgdG9rZW4iKTsKKyAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIl4qIikpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAiJyonIGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVhdGFi
bGUgdG9rZW4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlk
YXRlUmVnZXgoIjUqKyIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIicrJyBjYW4gb25s
eSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2VuIik7Cit9CisKK1RFU1QoVmFsaWRhdGVSZWdleFRl
c3QsIFJldHVybnNUcnVlRm9yVmFsaWQpIHsKKyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgi
IikpOworICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCJhIikpOworICBFWFBFQ1RfVFJVRShW
YWxpZGF0ZVJlZ2V4KCIuKiIpKTsKKyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiXmFfKyIp
KTsKKyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiXmFcXHRcXCY/IikpOworICBFWFBFQ1Rf
VFJVRShWYWxpZGF0ZVJlZ2V4KCIwOSokIikpOworICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4
KCJeWiQiKSk7CisgIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoImFcXF5aXFwkXFwoXFwpXFx8
XFxbXFxdXFx7XFx9IikpOworfQorCitURVNUKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFk
VGVzdCwgV29ya3NGb3JaZXJvT3JPbmUpIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlv
bkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImEiLCAiYmEiKSk7CisgIC8vIFJlcGVh
dGluZyBtb3JlIHRoYW4gb25jZS4KKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlvbkFuZFJl
Z2V4QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImIiLCAiYWFiIikpOworCisgIC8vIFJlcGVhdGlu
ZyB6ZXJvIHRpbWVzLgorICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVh
ZChmYWxzZSwgJ2EnLCAnPycsICJiIiwgImJhIikpOworICAvLyBSZXBlYXRpbmcgb25jZS4KKyAg
RVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICdhJywgJz8n
LCAiYiIsICJhYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhl
YWQoZmFsc2UsICcjJywgJz8nLCAiLiIsICIjIyIpKTsKK30KKworVEVTVChNYXRjaFJlcGV0aXRp
b25BbmRSZWdleEF0SGVhZFRlc3QsIFdvcmtzRm9yWmVyb09yTWFueSkgeworICBFWFBFQ1RfRkFM
U0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJyonLCAiYSQiLCAi
YmFhYiIpKTsKKworICAvLyBSZXBlYXRpbmcgemVybyB0aW1lcy4KKyAgRVhQRUNUX1RSVUUoTWF0
Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJyonLCAiYiIsICJiYyIpKTsK
KyAgLy8gUmVwZWF0aW5nIG9uY2UuCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJl
Z2V4QXRIZWFkKGZhbHNlLCAnLicsICcqJywgImIiLCAiYWJjIikpOworICAvLyBSZXBlYXRpbmcg
bW9yZSB0aGFuIG9uY2UuCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRI
ZWFkKHRydWUsICd3JywgJyonLCAiLSIsICJhYl8xLWciKSk7Cit9CisKK1RFU1QoTWF0Y2hSZXBl
dGl0aW9uQW5kUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc0Zvck9uZU9yTWFueSkgeworICBFWFBFQ1Rf
RkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJysnLCAiYSQi
LCAiYmFhYiIpKTsKKyAgLy8gUmVwZWF0aW5nIHplcm8gdGltZXMuCisgIEVYUEVDVF9GQUxTRShN
YXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKycsICJiIiwgImJjIikp
OworCisgIC8vIFJlcGVhdGluZyBvbmNlLgorICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25B
bmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKycsICJiIiwgImFiYyIpKTsKKyAgLy8gUmVwZWF0
aW5nIG1vcmUgdGhhbiBvbmNlLgorICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdl
eEF0SGVhZCh0cnVlLCAndycsICcrJywgIi0iLCAiYWJfMS1nIikpOworfQorCitURVNUKE1hdGNo
UmVnZXhBdEhlYWRUZXN0LCBSZXR1cm5zVHJ1ZUZvckVtcHR5UmVnZXgpIHsKKyAgRVhQRUNUX1RS
VUUoTWF0Y2hSZWdleEF0SGVhZCgiIiwgIiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0
SGVhZCgiIiwgImFiIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc1do
ZW5Eb2xsYXJJc0luUmVnZXgpIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIiQi
LCAiYSIpKTsKKworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCIkIiwgIiIpKTsKKyAg
RVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiYSQiLCAiYSIpKTsKK30KKworVEVTVChNYXRj
aFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NXaGVuUmVnZXhTdGFydHNXaXRoRXNjYXBlU2VxdWVuY2Up
IHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIlxcdyIsICIrIikpOworICBFWFBF
Q1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiXFxXIiwgImFiIikpOworCisgIEVYUEVDVF9UUlVF
KE1hdGNoUmVnZXhBdEhlYWQoIlxcc2EiLCAiXG5hYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hS
ZWdleEF0SGVhZCgiXFxkIiwgIjFhIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0
LCBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhSZXBldGl0aW9uKSB7CisgIEVYUEVDVF9GQUxTRShN
YXRjaFJlZ2V4QXRIZWFkKCIuK2EiLCAiYWJjIikpOworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdl
eEF0SGVhZCgiYT9iIiwgImFhYiIpKTsKKworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFk
KCIuKmEiLCAiYmMxMi1hYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiYT9i
IiwgImIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoImE/YiIsICJhYiIpKTsK
K30KKworVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwKKyAgICAgV29ya3NXaGVuUmVnZXhTdGFy
dHNXaXRoUmVwZXRpb25PZkVzY2FwZVNlcXVlbmNlKSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJl
Z2V4QXRIZWFkKCJcXC4rYSIsICJhYmMiKSk7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRI
ZWFkKCJcXHM/YiIsICIgIGIiKSk7CisKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgi
XFwoKmEiLCAiKCgoKGFiIikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXF4/
YiIsICJeYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxcXD9iIiwgImIi
KSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcXFw/YiIsICJcXGIiKSk7Cit9
CisKK1RFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIE1hdGNoZXNTZXF1ZW50aWFsbHkpIHsKKyAg
RVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoImFiLipjIiwgImFjYWJjIikpOworCisgIEVY
UEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoImFiLipjIiwgImFiLWZzYyIpKTsKK30KKworVEVT
VChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5zRmFsc2VXaGVuU3RyaW5nSXNOdWxsKSB7
CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoIiIsIE5VTEwpKTsKK30KKworVEVT
VChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhDYXJldCkg
eworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJlKCJeYSIsICJiYSIpKTsKKyAgRVhQ
RUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXiQiLCAiYSIpKTsKKworICBFWFBFQ1RfVFJV
RShNYXRjaFJlZ2V4QW55d2hlcmUoIl5hIiwgImFiIikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJl
Z2V4QW55d2hlcmUoIl4iLCAiYWIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVy
ZSgiXiQiLCAiIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFJldHVybnNG
YWxzZVdoZW5Ob01hdGNoKSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoImEi
LCAiYmNkZTEyMyIpKTsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiYS4rYSIs
ICItLWFhODg4ODg4ODgiKSk7Cit9CisKK1RFU1QoTWF0Y2hSZWdleEFueXdoZXJlVGVzdCwgUmV0
dXJuc1RydWVXaGVuTWF0Y2hpbmdQcmVmaXgpIHsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFu
eXdoZXJlKCJcXHcrIiwgImFiMV8gLSA1IikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55
d2hlcmUoIi4qPSIsICI9IikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIngu
KmFiPy4qYmMiLCAieGFhYWJjIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3Qs
IFJldHVybnNUcnVlV2hlbk1hdGNoaW5nTm9uUHJlZml4KSB7CisgIEVYUEVDVF9UUlVFKE1hdGNo
UmVnZXhBbnl3aGVyZSgiXFx3KyIsICIkJCQgYWIxXyAtIDUiKSk7CisgIEVYUEVDVF9UUlVFKE1h
dGNoUmVnZXhBbnl3aGVyZSgiXFwuKz0iLCAiPSAgLi4uPSIpKTsKK30KKworLy8gVGVzdHMgUkUn
cyBpbXBsaWNpdCBjb25zdHJ1Y3RvcnMuCitURVNUKFJFVGVzdCwgSW1wbGljaXRDb25zdHJ1Y3Rv
cldvcmtzKSB7CisgIGNvbnN0IFJFIGVtcHR5KCIiKTsKKyAgRVhQRUNUX1NUUkVRKCIiLCBlbXB0
eS5wYXR0ZXJuKCkpOworCisgIGNvbnN0IFJFIHNpbXBsZSgiaGVsbG8iKTsKKyAgRVhQRUNUX1NU
UkVRKCJoZWxsbyIsIHNpbXBsZS5wYXR0ZXJuKCkpOworfQorCisvLyBUZXN0cyB0aGF0IFJFJ3Mg
Y29uc3RydWN0b3JzIHJlamVjdCBpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCitURVNUKFJF
VGVzdCwgUmVqZWN0c0ludmFsaWRSZWdleCkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7
CisgICAgY29uc3QgUkUgbm9ybWFsKE5VTEwpOworICB9LCAiTlVMTCBpcyBub3QgYSB2YWxpZCBz
aW1wbGUgcmVndWxhciBleHByZXNzaW9uIik7CisKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
eworICAgIGNvbnN0IFJFIG5vcm1hbCgiLiooXFx3KyIpOworICB9LCAiJygnIGlzIHVuc3VwcG9y
dGVkIik7CisKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIGNvbnN0IFJFIGludmFs
aWQoIl4/Iik7CisgIH0sICInPycgY2FuIG9ubHkgZm9sbG93IGEgcmVwZWF0YWJsZSB0b2tlbiIp
OworfQorCisvLyBUZXN0cyBSRTo6RnVsbE1hdGNoKCkuCitURVNUKFJFVGVzdCwgRnVsbE1hdGNo
V29ya3MpIHsKKyAgY29uc3QgUkUgZW1wdHkoIiIpOworICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1h
dGNoKCIiLCBlbXB0eSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaCgiYSIsIGVtcHR5
KSk7CisKKyAgY29uc3QgUkUgcmUxKCJhIik7CisgIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2go
ImEiLCByZTEpKTsKKworICBjb25zdCBSRSByZSgiYS4qeiIpOworICBFWFBFQ1RfVFJVRShSRTo6
RnVsbE1hdGNoKCJheiIsIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goImF4eXoi
LCByZSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaCgiYmF6IiwgcmUpKTsKKyAgRVhQ
RUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goImF6eSIsIHJlKSk7Cit9CisKKy8vIFRlc3RzIFJFOjpQ
YXJ0aWFsTWF0Y2goKS4KK1RFU1QoUkVUZXN0LCBQYXJ0aWFsTWF0Y2hXb3JrcykgeworICBjb25z
dCBSRSBlbXB0eSgiIik7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goIiIsIGVtcHR5
KSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImEiLCBlbXB0eSkpOworCisgIGNv
bnN0IFJFIHJlKCJhLip6Iik7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImF6Iiwg
cmUpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiYXh5eiIsIHJlKSk7CisgIEVY
UEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImJheiIsIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJF
OjpQYXJ0aWFsTWF0Y2goImF6eSIsIHJlKSk7CisgIEVYUEVDVF9GQUxTRShSRTo6UGFydGlhbE1h
dGNoKCJ6emEiLCByZSkpOworfQorCisjZW5kaWYgIC8vIEdURVNUX1VTRVNfUE9TSVhfUkUKKwor
I2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCitURVNUKENhcHR1cmVUZXN0LCBDYXB0dXJl
c1N0ZG91dCkgeworICBDYXB0dXJlU3Rkb3V0KCk7CisgIGZwcmludGYoc3Rkb3V0LCAiYWJjIik7
CisgIEVYUEVDVF9TVFJFUSgiYWJjIiwgR2V0Q2FwdHVyZWRTdGRvdXQoKS5jX3N0cigpKTsKKwor
ICBDYXB0dXJlU3Rkb3V0KCk7CisgIGZwcmludGYoc3Rkb3V0LCAiZGVmJWNnaGkiLCAnXDAnKTsK
KyAgRVhQRUNUX0VRKDo6c3RkOjpzdHJpbmcoImRlZlwwZ2hpIiwgNyksIDo6c3RkOjpzdHJpbmco
R2V0Q2FwdHVyZWRTdGRvdXQoKSkpOworfQorCitURVNUKENhcHR1cmVUZXN0LCBDYXB0dXJlc1N0
ZGVycikgeworICBDYXB0dXJlU3RkZXJyKCk7CisgIGZwcmludGYoc3RkZXJyLCAiamtsIik7Cisg
IEVYUEVDVF9TVFJFUSgiamtsIiwgR2V0Q2FwdHVyZWRTdGRlcnIoKS5jX3N0cigpKTsKKworICBD
YXB0dXJlU3RkZXJyKCk7CisgIGZwcmludGYoc3RkZXJyLCAiamtsJWNtbm8iLCAnXDAnKTsKKyAg
RVhQRUNUX0VRKDo6c3RkOjpzdHJpbmcoImprbFwwbW5vIiwgNyksIDo6c3RkOjpzdHJpbmcoR2V0
Q2FwdHVyZWRTdGRlcnIoKSkpOworfQorCisvLyBUZXN0cyB0aGF0IHN0ZG91dCBhbmQgc3RkZXJy
IGNhcHR1cmUgZG9uJ3QgaW50ZXJmZXJlIHdpdGggZWFjaCBvdGhlci4KK1RFU1QoQ2FwdHVyZVRl
c3QsIENhcHR1cmVzU3Rkb3V0QW5kU3RkZXJyKSB7CisgIENhcHR1cmVTdGRvdXQoKTsKKyAgQ2Fw
dHVyZVN0ZGVycigpOworICBmcHJpbnRmKHN0ZG91dCwgInBxciIpOworICBmcHJpbnRmKHN0ZGVy
ciwgInN0dSIpOworICBFWFBFQ1RfU1RSRVEoInBxciIsIEdldENhcHR1cmVkU3Rkb3V0KCkuY19z
dHIoKSk7CisgIEVYUEVDVF9TVFJFUSgic3R1IiwgR2V0Q2FwdHVyZWRTdGRlcnIoKS5jX3N0cigp
KTsKK30KKworVEVTVChDYXB0dXJlRGVhdGhUZXN0LCBDYW5ub3RSZWVudGVyU3Rkb3V0Q2FwdHVy
ZSkgeworICBDYXB0dXJlU3Rkb3V0KCk7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoQ2Fw
dHVyZVN0ZG91dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPbmx5IG9uZSBzdGRv
dXQgY2FwdHVyZXIgY2FuIGV4aXN0IGF0IGEgdGltZSIpOworICBHZXRDYXB0dXJlZFN0ZG91dCgp
OworCisgIC8vIFdlIGNhbm5vdCB0ZXN0IHN0ZGVyciBjYXB0dXJpbmcgdXNpbmcgZGVhdGggdGVz
dHMgYXMgdGhleSB1c2UgaXQKKyAgLy8gdGhlbXNlbHZlcy4KK30KKworI2VuZGlmICAvLyAhR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKKworVEVTVChUaHJlYWRMb2NhbFRlc3QsIERlZmF1bHRDb25z
dHJ1Y3RvckluaXRpYWxpemVzVG9EZWZhdWx0VmFsdWVzKSB7CisgIFRocmVhZExvY2FsPGludD4g
dDE7CisgIEVYUEVDVF9FUSgwLCB0MS5nZXQoKSk7CisKKyAgVGhyZWFkTG9jYWw8dm9pZCo+IHQy
OworICBFWFBFQ1RfVFJVRSh0Mi5nZXQoKSA9PSBOVUxMKTsKK30KKworVEVTVChUaHJlYWRMb2Nh
bFRlc3QsIFNpbmdsZVBhcmFtQ29uc3RydWN0b3JJbml0aWFsaXplc1RvUGFyYW0pIHsKKyAgVGhy
ZWFkTG9jYWw8aW50PiB0MSgxMjMpOworICBFWFBFQ1RfRVEoMTIzLCB0MS5nZXQoKSk7CisKKyAg
aW50IGkgPSAwOworICBUaHJlYWRMb2NhbDxpbnQqPiB0MigmaSk7CisgIEVYUEVDVF9FUSgmaSwg
dDIuZ2V0KCkpOworfQorCitjbGFzcyBOb0RlZmF1bHRDb250cnVjdG9yIHsKKyBwdWJsaWM6Cisg
IGV4cGxpY2l0IE5vRGVmYXVsdENvbnRydWN0b3IoY29uc3QgY2hhciopIHt9CisgIE5vRGVmYXVs
dENvbnRydWN0b3IoY29uc3QgTm9EZWZhdWx0Q29udHJ1Y3RvciYpIHt9Cit9OworCitURVNUKFRo
cmVhZExvY2FsVGVzdCwgVmFsdWVEZWZhdWx0Q29udHJ1Y3RvcklzTm90UmVxdWlyZWRGb3JQYXJh
bVZlcnNpb24pIHsKKyAgVGhyZWFkTG9jYWw8Tm9EZWZhdWx0Q29udHJ1Y3Rvcj4gYmFyKE5vRGVm
YXVsdENvbnRydWN0b3IoImZvbyIpKTsKKyAgYmFyLnBvaW50ZXIoKTsKK30KKworVEVTVChUaHJl
YWRMb2NhbFRlc3QsIEdldEFuZFBvaW50ZXJSZXR1cm5TYW1lVmFsdWUpIHsKKyAgVGhyZWFkTG9j
YWw8c3RkOjpzdHJpbmc+IHRocmVhZF9sb2NhbF9zdHJpbmc7CisKKyAgRVhQRUNUX0VRKHRocmVh
ZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpLCAmKHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkpKTsK
KworICAvLyBWZXJpZmllcyB0aGUgY29uZGl0aW9uIHN0aWxsIGhvbGRzIGFmdGVyIGNhbGxpbmcg
c2V0LgorICB0aHJlYWRfbG9jYWxfc3RyaW5nLnNldCgiZm9vIik7CisgIEVYUEVDVF9FUSh0aHJl
YWRfbG9jYWxfc3RyaW5nLnBvaW50ZXIoKSwgJih0aHJlYWRfbG9jYWxfc3RyaW5nLmdldCgpKSk7
Cit9CisKK1RFU1QoVGhyZWFkTG9jYWxUZXN0LCBQb2ludGVyQW5kQ29uc3RQb2ludGVyUmV0dXJu
U2FtZVZhbHVlKSB7CisgIFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiB0aHJlYWRfbG9jYWxfc3Ry
aW5nOworICBjb25zdCBUaHJlYWRMb2NhbDxzdGQ6OnN0cmluZz4mIGNvbnN0X3RocmVhZF9sb2Nh
bF9zdHJpbmcgPQorICAgICAgdGhyZWFkX2xvY2FsX3N0cmluZzsKKworICBFWFBFQ1RfRVEodGhy
ZWFkX2xvY2FsX3N0cmluZy5wb2ludGVyKCksIGNvbnN0X3RocmVhZF9sb2NhbF9zdHJpbmcucG9p
bnRlcigpKTsKKworICB0aHJlYWRfbG9jYWxfc3RyaW5nLnNldCgiZm9vIik7CisgIEVYUEVDVF9F
USh0aHJlYWRfbG9jYWxfc3RyaW5nLnBvaW50ZXIoKSwgY29uc3RfdGhyZWFkX2xvY2FsX3N0cmlu
Zy5wb2ludGVyKCkpOworfQorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorCit2b2lkIEFkZFR3
byhpbnQqIHBhcmFtKSB7ICpwYXJhbSArPSAyOyB9CisKK1RFU1QoVGhyZWFkV2l0aFBhcmFtVGVz
dCwgQ29uc3RydWN0b3JFeGVjdXRlc1RocmVhZEZ1bmMpIHsKKyAgaW50IGkgPSA0MDsKKyAgVGhy
ZWFkV2l0aFBhcmFtPGludCo+IHRocmVhZCgmQWRkVHdvLCAmaSwgTlVMTCk7CisgIHRocmVhZC5K
b2luKCk7CisgIEVYUEVDVF9FUSg0MiwgaSk7Cit9CisKK1RFU1QoTXV0ZXhEZWF0aFRlc3QsIEFz
c2VydEhlbGRTaG91bGRBc3NlcnRXaGVuTm90TG9ja2VkKSB7CisgIC8vIEFzc2VydEhlbGQoKSBp
cyBmbGFreSBvbmx5IGluIHRoZSBwcmVzZW5jZSBvZiBtdWx0aXBsZSB0aHJlYWRzIGFjY2Vzc2lu
ZworICAvLyB0aGUgbG9jay4gSW4gdGhpcyBjYXNlLCB0aGUgdGVzdCBpcyByb2J1c3QuCisgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoeworICAgIE11dGV4IG07CisgICAgeyBNdXRleExvY2sg
bG9jaygmbSk7IH0KKyAgICBtLkFzc2VydEhlbGQoKTsKKyAgfSwKKyAgInRocmVhZCAuKmhvbGQi
KTsKK30KKworVEVTVChNdXRleFRlc3QsIEFzc2VydEhlbGRTaG91bGROb3RBc3NlcnRXaGVuTG9j
a2VkKSB7CisgIE11dGV4IG07CisgIE11dGV4TG9jayBsb2NrKCZtKTsKKyAgbS5Bc3NlcnRIZWxk
KCk7Cit9CisKK2NsYXNzIEF0b21pY0NvdW50ZXJXaXRoTXV0ZXggeworIHB1YmxpYzoKKyAgZXhw
bGljaXQgQXRvbWljQ291bnRlcldpdGhNdXRleChNdXRleCogbXV0ZXgpIDoKKyAgICB2YWx1ZV8o
MCksIG11dGV4XyhtdXRleCksIHJhbmRvbV8oNDIpIHt9CisKKyAgdm9pZCBJbmNyZW1lbnQoKSB7
CisgICAgTXV0ZXhMb2NrIGxvY2sobXV0ZXhfKTsKKyAgICBpbnQgdGVtcCA9IHZhbHVlXzsKKyAg
ICB7CisgICAgICAvLyBXZSBuZWVkIHRvIHB1dCB1cCBhIG1lbW9yeSBiYXJyaWVyIHRvIHByZXZl
bnQgcmVhZHMgYW5kIHdyaXRlcyB0bworICAgICAgLy8gdmFsdWVfIHJlYXJyYW5nZWQgd2l0aCB0
aGUgY2FsbCB0byBTbGVlcE1pbGxpc2Vjb25kcyB3aGVuIG9ic2VydmVkCisgICAgICAvLyBmcm9t
IG90aGVyIHRocmVhZHMuCisjaWYgR1RFU1RfSEFTX1BUSFJFQUQKKyAgICAgIC8vIE9uIFBPU0lY
LCBsb2NraW5nIGEgbXV0ZXggcHV0cyB1cCBhIG1lbW9yeSBiYXJyaWVyLiAgV2UgY2Fubm90IHVz
ZQorICAgICAgLy8gTXV0ZXggYW5kIE11dGV4TG9jayBoZXJlIG9yIHJlbHkgb24gdGhlaXIgbWVt
b3J5IGJhcnJpZXIKKyAgICAgIC8vIGZ1bmN0aW9uYWxpdHkgYXMgd2UgYXJlIHRlc3RpbmcgdGhl
bSBoZXJlLgorICAgICAgcHRocmVhZF9tdXRleF90IG1lbW9yeV9iYXJyaWVyX211dGV4OworICAg
ICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18oCisgICAgICAgICAgcHRocmVhZF9tdXRleF9p
bml0KCZtZW1vcnlfYmFycmllcl9tdXRleCwgTlVMTCkpOworICAgICAgR1RFU1RfQ0hFQ0tfUE9T
SVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9sb2NrKCZtZW1vcnlfYmFycmllcl9tdXRleCkpOwor
CisgICAgICBTbGVlcE1pbGxpc2Vjb25kcyhyYW5kb21fLkdlbmVyYXRlKDMwKSk7CisKKyAgICAg
IEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtZW1vcnlf
YmFycmllcl9tdXRleCkpOworICAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVh
ZF9tdXRleF9kZXN0cm95KCZtZW1vcnlfYmFycmllcl9tdXRleCkpOworI2VsaWYgR1RFU1RfT1Nf
V0lORE9XUworICAgICAgLy8gT24gV2luZG93cywgcGVyZm9ybWluZyBhbiBpbnRlcmxvY2tlZCBh
Y2Nlc3MgcHV0cyB1cCBhIG1lbW9yeSBiYXJyaWVyLgorICAgICAgdm9sYXRpbGUgTE9ORyBkdW1t
eSA9IDA7CisgICAgICA6OkludGVybG9ja2VkSW5jcmVtZW50KCZkdW1teSk7CisgICAgICBTbGVl
cE1pbGxpc2Vjb25kcyhyYW5kb21fLkdlbmVyYXRlKDMwKSk7CisgICAgICA6OkludGVybG9ja2Vk
SW5jcmVtZW50KCZkdW1teSk7CisjZWxzZQorIyBlcnJvciAiTWVtb3J5IGJhcnJpZXIgbm90IGlt
cGxlbWVudGVkIG9uIHRoaXMgcGxhdGZvcm0uIgorI2VuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVB
RAorICAgIH0KKyAgICB2YWx1ZV8gPSB0ZW1wICsgMTsKKyAgfQorICBpbnQgdmFsdWUoKSBjb25z
dCB7IHJldHVybiB2YWx1ZV87IH0KKworIHByaXZhdGU6CisgIHZvbGF0aWxlIGludCB2YWx1ZV87
CisgIE11dGV4KiBjb25zdCBtdXRleF87ICAvLyBQcm90ZWN0cyB2YWx1ZV8uCisgIFJhbmRvbSAg
ICAgICByYW5kb21fOworfTsKKwordm9pZCBDb3VudGluZ1RocmVhZEZ1bmMocGFpcjxBdG9taWND
b3VudGVyV2l0aE11dGV4KiwgaW50PiBwYXJhbSkgeworICBmb3IgKGludCBpID0gMDsgaSA8IHBh
cmFtLnNlY29uZDsgKytpKQorICAgICAgcGFyYW0uZmlyc3QtPkluY3JlbWVudCgpOworfQorCisv
LyBUZXN0cyB0aGF0IHRoZSBtdXRleCBvbmx5IGxldHMgb25lIHRocmVhZCBhdCBhIHRpbWUgdG8g
bG9jayBpdC4KK1RFU1QoTXV0ZXhUZXN0LCBPbmx5T25lVGhyZWFkQ2FuTG9ja0F0QVRpbWUpIHsK
KyAgTXV0ZXggbXV0ZXg7CisgIEF0b21pY0NvdW50ZXJXaXRoTXV0ZXggbG9ja2VkX2NvdW50ZXIo
Jm11dGV4KTsKKworICB0eXBlZGVmIFRocmVhZFdpdGhQYXJhbTxwYWlyPEF0b21pY0NvdW50ZXJX
aXRoTXV0ZXgqLCBpbnQ+ID4gVGhyZWFkVHlwZTsKKyAgY29uc3QgaW50IGtDeWNsZUNvdW50ID0g
MjA7CisgIGNvbnN0IGludCBrVGhyZWFkQ291bnQgPSA3OworICBzY29wZWRfcHRyPFRocmVhZFR5
cGU+IGNvdW50aW5nX3RocmVhZHNba1RocmVhZENvdW50XTsKKyAgTm90aWZpY2F0aW9uIHRocmVh
ZHNfY2FuX3N0YXJ0OworICAvLyBDcmVhdGVzIGFuZCBydW5zIGtUaHJlYWRDb3VudCB0aHJlYWRz
IHRoYXQgaW5jcmVtZW50IGxvY2tlZF9jb3VudGVyCisgIC8vIGtDeWNsZUNvdW50IHRpbWVzIGVh
Y2guCisgIGZvciAoaW50IGkgPSAwOyBpIDwga1RocmVhZENvdW50OyArK2kpIHsKKyAgICBjb3Vu
dGluZ190aHJlYWRzW2ldLnJlc2V0KG5ldyBUaHJlYWRUeXBlKCZDb3VudGluZ1RocmVhZEZ1bmMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3BhaXIo
JmxvY2tlZF9jb3VudGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtDeWNsZUNvdW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZ0aHJlYWRzX2Nhbl9zdGFydCkpOworICB9CisgIHRocmVhZHNf
Y2FuX3N0YXJ0Lk5vdGlmeSgpOworICBmb3IgKGludCBpID0gMDsgaSA8IGtUaHJlYWRDb3VudDsg
KytpKQorICAgIGNvdW50aW5nX3RocmVhZHNbaV0tPkpvaW4oKTsKKworICAvLyBJZiB0aGUgbXV0
ZXggbGV0cyBtb3JlIHRoYW4gb25lIHRocmVhZCB0byBpbmNyZW1lbnQgdGhlIGNvdW50ZXIgYXQg
YQorICAvLyB0aW1lLCB0aGV5IGFyZSBsaWtlbHkgdG8gZW5jb3VudGVyIGEgcmFjZSBjb25kaXRp
b24gYW5kIGhhdmUgc29tZQorICAvLyBpbmNyZW1lbnRzIG92ZXJ3cml0dGVuLCByZXN1bHRpbmcg
aW4gdGhlIGxvd2VyIHRoZW4gZXhwZWN0ZWQgY291bnRlcgorICAvLyB2YWx1ZS4KKyAgRVhQRUNU
X0VRKGtDeWNsZUNvdW50ICoga1RocmVhZENvdW50LCBsb2NrZWRfY291bnRlci52YWx1ZSgpKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFJ1bkZyb21UaHJlYWQodm9pZCAoZnVu
YykoVCksIFQgcGFyYW0pIHsKKyAgVGhyZWFkV2l0aFBhcmFtPFQ+IHRocmVhZChmdW5jLCBwYXJh
bSwgTlVMTCk7CisgIHRocmVhZC5Kb2luKCk7Cit9CisKK3ZvaWQgUmV0cmlldmVUaHJlYWRMb2Nh
bFZhbHVlKAorICAgIHBhaXI8VGhyZWFkTG9jYWw8c3RkOjpzdHJpbmc+Kiwgc3RkOjpzdHJpbmcq
PiBwYXJhbSkgeworICAqcGFyYW0uc2Vjb25kID0gcGFyYW0uZmlyc3QtPmdldCgpOworfQorCitU
RVNUKFRocmVhZExvY2FsVGVzdCwgUGFyYW1ldGVyaXplZENvbnN0cnVjdG9yU2V0c0RlZmF1bHQp
IHsKKyAgVGhyZWFkTG9jYWw8c3RkOjpzdHJpbmc+IHRocmVhZF9sb2NhbF9zdHJpbmcoImZvbyIp
OworICBFWFBFQ1RfU1RSRVEoImZvbyIsIHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkuY19zdHIo
KSk7CisKKyAgdGhyZWFkX2xvY2FsX3N0cmluZy5zZXQoImJhciIpOworICBFWFBFQ1RfU1RSRVEo
ImJhciIsIHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkuY19zdHIoKSk7CisKKyAgc3RkOjpzdHJp
bmcgcmVzdWx0OworICBSdW5Gcm9tVGhyZWFkKCZSZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUsCisg
ICAgICAgICAgICAgICAgbWFrZV9wYWlyKCZ0aHJlYWRfbG9jYWxfc3RyaW5nLCAmcmVzdWx0KSk7
CisgIEVYUEVDVF9TVFJFUSgiZm9vIiwgcmVzdWx0LmNfc3RyKCkpOworfQorCisvLyBLZWVwcyB0
cmFjayBvZiB3aGV0aGVyIG9mIGRlc3RydWN0b3JzIGJlaW5nIGNhbGxlZCBvbiBpbnN0YW5jZXMg
b2YKKy8vIERlc3RydWN0b3JUcmFja2VyLiAgT24gV2luZG93cywgd2FpdHMgZm9yIHRoZSBkZXN0
cnVjdG9yIGNhbGwgcmVwb3J0cy4KK2NsYXNzIERlc3RydWN0b3JDYWxsIHsKKyBwdWJsaWM6Cisg
IERlc3RydWN0b3JDYWxsKCkgeworICAgIGludm9rZWRfID0gZmFsc2U7CisjaWYgR1RFU1RfT1Nf
V0lORE9XUworICAgIHdhaXRfZXZlbnRfLlJlc2V0KDo6Q3JlYXRlRXZlbnQoTlVMTCwgVFJVRSwg
RkFMU0UsIE5VTEwpKTsKKyAgICBHVEVTVF9DSEVDS18od2FpdF9ldmVudF8uR2V0KCkgIT0gTlVM
TCk7CisjZW5kaWYKKyAgfQorCisgIGJvb2wgQ2hlY2tEZXN0cm95ZWQoKSBjb25zdCB7CisjaWYg
R1RFU1RfT1NfV0lORE9XUworICAgIGlmICg6OldhaXRGb3JTaW5nbGVPYmplY3Qod2FpdF9ldmVu
dF8uR2V0KCksIDEwMDApICE9IFdBSVRfT0JKRUNUXzApCisgICAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKKyAgICByZXR1cm4gaW52b2tlZF87CisgIH0KKworICB2b2lkIFJlcG9ydERlc3Ryb3ll
ZCgpIHsKKyAgICBpbnZva2VkXyA9IHRydWU7CisjaWYgR1RFU1RfT1NfV0lORE9XUworICAgIDo6
U2V0RXZlbnQod2FpdF9ldmVudF8uR2V0KCkpOworI2VuZGlmCisgIH0KKworICBzdGF0aWMgc3Rk
Ojp2ZWN0b3I8RGVzdHJ1Y3RvckNhbGwqPiYgTGlzdCgpIHsgcmV0dXJuICpsaXN0XzsgfQorCisg
IHN0YXRpYyB2b2lkIFJlc2V0TGlzdCgpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxp
c3RfLT5zaXplKCk7ICsraSkgeworICAgICAgZGVsZXRlIGxpc3RfLT5hdChpKTsKKyAgICB9Cisg
ICAgbGlzdF8tPmNsZWFyKCk7CisgIH0KKworIHByaXZhdGU6CisgIGJvb2wgaW52b2tlZF87Cisj
aWYgR1RFU1RfT1NfV0lORE9XUworICBBdXRvSGFuZGxlIHdhaXRfZXZlbnRfOworI2VuZGlmCisg
IHN0YXRpYyBzdGQ6OnZlY3RvcjxEZXN0cnVjdG9yQ2FsbCo+KiBjb25zdCBsaXN0XzsKKworICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKERlc3RydWN0b3JDYWxsKTsKK307CisKK3N0
ZDo6dmVjdG9yPERlc3RydWN0b3JDYWxsKj4qIGNvbnN0IERlc3RydWN0b3JDYWxsOjpsaXN0XyA9
CisgICAgbmV3IHN0ZDo6dmVjdG9yPERlc3RydWN0b3JDYWxsKj47CisKKy8vIERlc3RydWN0b3JU
cmFja2VyIGtlZXBzIHRyYWNrIG9mIHdoZXRoZXIgaXRzIGluc3RhbmNlcyBoYXZlIGJlZW4KKy8v
IGRlc3Ryb3llZC4KK2NsYXNzIERlc3RydWN0b3JUcmFja2VyIHsKKyBwdWJsaWM6CisgIERlc3Ry
dWN0b3JUcmFja2VyKCkgOiBpbmRleF8oR2V0TmV3SW5kZXgoKSkge30KKyAgRGVzdHJ1Y3RvclRy
YWNrZXIoY29uc3QgRGVzdHJ1Y3RvclRyYWNrZXImIC8qIHJocyAqLykKKyAgICAgIDogaW5kZXhf
KEdldE5ld0luZGV4KCkpIHt9CisgIH5EZXN0cnVjdG9yVHJhY2tlcigpIHsKKyAgICAvLyBXZSBu
ZXZlciBhY2Nlc3MgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKSBjb25jdXJyZW50bHksIHNvIHdlIGRv
bid0IG5lZWQKKyAgICAvLyB0byBwcm90ZWN0IHRoaXMgYWNjZXNzIHdpdGggYSBtdXRleC4KKyAg
ICBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpW2luZGV4X10tPlJlcG9ydERlc3Ryb3llZCgpOworICB9
CisKKyBwcml2YXRlOgorICBzdGF0aWMgc2l6ZV90IEdldE5ld0luZGV4KCkgeworICAgIERlc3Ry
dWN0b3JDYWxsOjpMaXN0KCkucHVzaF9iYWNrKG5ldyBEZXN0cnVjdG9yQ2FsbCk7CisgICAgcmV0
dXJuIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpIC0gMTsKKyAgfQorICBjb25zdCBzaXpl
X3QgaW5kZXhfOworCisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oRGVzdHJ1Y3RvclRyYWNrZXIp
OworfTsKKwordHlwZWRlZiBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4qIFRocmVhZFBh
cmFtOworCit2b2lkIENhbGxUaHJlYWRMb2NhbEdldChUaHJlYWRQYXJhbSB0aHJlYWRfbG9jYWxf
cGFyYW0pIHsKKyAgdGhyZWFkX2xvY2FsX3BhcmFtLT5nZXQoKTsKK30KKworLy8gVGVzdHMgdGhh
dCB3aGVuIGEgVGhyZWFkTG9jYWwgb2JqZWN0IGRpZXMgaW4gYSB0aHJlYWQsIGl0IGRlc3Ryb3lz
CisvLyB0aGUgbWFuYWdlZCBvYmplY3QgZm9yIHRoYXQgdGhyZWFkLgorVEVTVChUaHJlYWRMb2Nh
bFRlc3QsIERlc3Ryb3lzTWFuYWdlZE9iamVjdEZvck93blRocmVhZFdoZW5EeWluZykgeworICBE
ZXN0cnVjdG9yQ2FsbDo6UmVzZXRMaXN0KCk7CisKKyAgeworICAgIFRocmVhZExvY2FsPERlc3Ry
dWN0b3JUcmFja2VyPiB0aHJlYWRfbG9jYWxfdHJhY2tlcjsKKyAgICBBU1NFUlRfRVEoMFUsIERl
c3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpKTsKKworICAgIC8vIFRoaXMgY3JlYXRlcyBhbm90
aGVyIERlc3RydWN0b3JUcmFja2VyIG9iamVjdCBmb3IgdGhlIG1haW4gdGhyZWFkLgorICAgIHRo
cmVhZF9sb2NhbF90cmFja2VyLmdldCgpOworICAgIEFTU0VSVF9FUSgxVSwgRGVzdHJ1Y3RvckNh
bGw6Okxpc3QoKS5zaXplKCkpOworICAgIEFTU0VSVF9GQUxTRShEZXN0cnVjdG9yQ2FsbDo6TGlz
dCgpWzBdLT5DaGVja0Rlc3Ryb3llZCgpKTsKKyAgfQorCisgIC8vIE5vdyB0aHJlYWRfbG9jYWxf
dHJhY2tlciBoYXMgZGllZC4KKyAgQVNTRVJUX0VRKDFVLCBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgp
LnNpemUoKSk7CisgIEVYUEVDVF9UUlVFKERlc3RydWN0b3JDYWxsOjpMaXN0KClbMF0tPkNoZWNr
RGVzdHJveWVkKCkpOworCisgIERlc3RydWN0b3JDYWxsOjpSZXNldExpc3QoKTsKK30KKworLy8g
VGVzdHMgdGhhdCB3aGVuIGEgdGhyZWFkIGV4aXRzLCB0aGUgdGhyZWFkLWxvY2FsIG9iamVjdCBm
b3IgdGhhdAorLy8gdGhyZWFkIGlzIGRlc3Ryb3llZC4KK1RFU1QoVGhyZWFkTG9jYWxUZXN0LCBE
ZXN0cm95c01hbmFnZWRPYmplY3RBdFRocmVhZEV4aXQpIHsKKyAgRGVzdHJ1Y3RvckNhbGw6OlJl
c2V0TGlzdCgpOworCisgIHsKKyAgICBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4gdGhy
ZWFkX2xvY2FsX3RyYWNrZXI7CisgICAgQVNTRVJUX0VRKDBVLCBEZXN0cnVjdG9yQ2FsbDo6TGlz
dCgpLnNpemUoKSk7CisKKyAgICAvLyBUaGlzIGNyZWF0ZXMgYW5vdGhlciBEZXN0cnVjdG9yVHJh
Y2tlciBvYmplY3QgaW4gdGhlIG5ldyB0aHJlYWQuCisgICAgVGhyZWFkV2l0aFBhcmFtPFRocmVh
ZFBhcmFtPiB0aHJlYWQoCisgICAgICAgICZDYWxsVGhyZWFkTG9jYWxHZXQsICZ0aHJlYWRfbG9j
YWxfdHJhY2tlciwgTlVMTCk7CisgICAgdGhyZWFkLkpvaW4oKTsKKworICAgIC8vIFRoZSB0aHJl
YWQgaGFzIGV4aXRlZCwgYW5kIHdlIHNob3VsZCBoYXZlIGEgRGVzdHJveWVkVHJhY2tlcgorICAg
IC8vIGluc3RhbmNlIGNyZWF0ZWQgZm9yIGl0LiBCdXQgaXQgbWF5IG5vdCBoYXZlIGJlZW4gZGVz
dHJveWVkIHlldC4KKyAgICBBU1NFUlRfRVEoMVUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6
ZSgpKTsKKyAgfQorCisgIC8vIFRoZSB0aHJlYWQgaGFzIGV4aXRlZCBhbmQgdGhyZWFkX2xvY2Fs
X3RyYWNrZXIgaGFzIGRpZWQuCisgIEFTU0VSVF9FUSgxVSwgRGVzdHJ1Y3RvckNhbGw6Okxpc3Qo
KS5zaXplKCkpOworICBFWFBFQ1RfVFJVRShEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpWzBdLT5DaGVj
a0Rlc3Ryb3llZCgpKTsKKworICBEZXN0cnVjdG9yQ2FsbDo6UmVzZXRMaXN0KCk7Cit9CisKK1RF
U1QoVGhyZWFkTG9jYWxUZXN0LCBUaHJlYWRMb2NhbE11dGF0aW9uc0FmZmVjdE9ubHlDdXJyZW50
VGhyZWFkKSB7CisgIFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiB0aHJlYWRfbG9jYWxfc3RyaW5n
OworICB0aHJlYWRfbG9jYWxfc3RyaW5nLnNldCgiRm9vIik7CisgIEVYUEVDVF9TVFJFUSgiRm9v
IiwgdGhyZWFkX2xvY2FsX3N0cmluZy5nZXQoKS5jX3N0cigpKTsKKworICBzdGQ6OnN0cmluZyBy
ZXN1bHQ7CisgIFJ1bkZyb21UaHJlYWQoJlJldHJpZXZlVGhyZWFkTG9jYWxWYWx1ZSwKKyAgICAg
ICAgICAgICAgICBtYWtlX3BhaXIoJnRocmVhZF9sb2NhbF9zdHJpbmcsICZyZXN1bHQpKTsKKyAg
RVhQRUNUX1RSVUUocmVzdWx0LmVtcHR5KCkpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0lTX1RI
UkVBRFNBRkUKKworI2lmIEdURVNUX09TX1dJTkRPV1MKK1RFU1QoV2luZG93c1R5cGVzVGVzdCwg
SEFORExFSXNWb2lkU3RhcikgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8SEFORExFLCB2b2lkKj4o
KTsKK30KKworI2lmIEdURVNUX09TX1dJTkRPV1NfTUlOR1cgJiYgIWRlZmluZWQoX19NSU5HVzY0
X1ZFUlNJT05fTUFKT1IpCitURVNUKFdpbmRvd3NUeXBlc1Rlc3QsIF9DUklUSUNBTF9TRUNUSU9O
SXNfQ1JJVElDQUxfU0VDVElPTikgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8Q1JJVElDQUxfU0VD
VElPTiwgX0NSSVRJQ0FMX1NFQ1RJT04+KCk7Cit9CisjZWxzZQorVEVTVChXaW5kb3dzVHlwZXNU
ZXN0LCBDUklUSUNBTF9TRUNUSU9OSXNfUlRMX0NSSVRJQ0FMX1NFQ1RJT04pIHsKKyAgU3RhdGlj
QXNzZXJ0VHlwZUVxPENSSVRJQ0FMX1NFQ1RJT04sIF9SVExfQ1JJVElDQUxfU0VDVElPTj4oKTsK
K30KKyNlbmRpZgorCisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworfSAgLy8gbmFtZXNw
YWNlIGludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXByaW50ZXJzLXRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcHJpbnRlcnMtdGVzdC5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lYTgzNjlkMjdlNTA0NzBmMWVhYmUzYWYyODA0ZDM0NTQ5M2FkZWQ5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXByaW50
ZXJzLXRlc3QuY2MKQEAgLTAsMCArMSwxNzQ4IEBACisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xl
IEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
Ky8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gR29vZ2xlIFRlc3QgLSBUaGUgR29vZ2xlIEMrKyBU
ZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yaworLy8KKy8vIFRoaXMgZmlsZSB0ZXN0cyB0aGUg
dW5pdmVyc2FsIHZhbHVlIHByaW50ZXIuCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUg
PGxpbWl0cy5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNp
bmNsdWRlIDxkZXF1ZT4KKyNpbmNsdWRlIDxsaXN0PgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRl
IDxzZXQ+CisjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8
dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1wcmlu
dGVycy5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpZiBHVEVTVF9IQVNfVU5PUkRF
UkVEX01BUF8KKyMgaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4gIC8vIE5PTElOVAorI2VuZGlmICAv
LyBHVEVTVF9IQVNfVU5PUkRFUkVEX01BUF8KKworI2lmIEdURVNUX0hBU19VTk9SREVSRURfU0VU
XworIyBpbmNsdWRlIDx1bm9yZGVyZWRfc2V0PiAgLy8gTk9MSU5UCisjZW5kaWYgIC8vIEdURVNU
X0hBU19VTk9SREVSRURfU0VUXworCisjaWYgR1RFU1RfSEFTX1NURF9GT1JXQVJEX0xJU1RfCisj
IGluY2x1ZGUgPGZvcndhcmRfbGlzdD4gLy8gTk9MSU5UCisjZW5kaWYgIC8vIEdURVNUX0hBU19T
VERfRk9SV0FSRF9MSVNUXworCisvLyBTb21lIHVzZXItZGVmaW5lZCB0eXBlcyBmb3IgdGVzdGlu
ZyB0aGUgdW5pdmVyc2FsIHZhbHVlIHByaW50ZXIuCisKKy8vIEFuIGFub255bW91cyBlbnVtIHR5
cGUuCitlbnVtIEFub255bW91c0VudW0geworICBrQUUxID0gLTEsCisgIGtBRTIgPSAxCit9Owor
CisvLyBBbiBlbnVtIHdpdGhvdXQgYSB1c2VyLWRlZmluZWQgcHJpbnRlci4KK2VudW0gRW51bVdp
dGhvdXRQcmludGVyIHsKKyAga0VXUDEgPSAtMiwKKyAga0VXUDIgPSA0MgorfTsKKworLy8gQW4g
ZW51bSB3aXRoIGEgPDwgb3BlcmF0b3IuCitlbnVtIEVudW1XaXRoU3RyZWFtaW5nIHsKKyAga0VX
UzEgPSAxMAorfTsKKworc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3Ms
IEVudW1XaXRoU3RyZWFtaW5nIGUpIHsKKyAgcmV0dXJuIG9zIDw8IChlID09IGtFV1MxID8gImtF
V1MxIiA6ICJpbnZhbGlkIik7Cit9CisKKy8vIEFuIGVudW0gd2l0aCBhIFByaW50VG8oKSBmdW5j
dGlvbi4KK2VudW0gRW51bVdpdGhQcmludFRvIHsKKyAga0VXUFQxID0gMQorfTsKKwordm9pZCBQ
cmludFRvKEVudW1XaXRoUHJpbnRUbyBlLCBzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCAo
ZSA9PSBrRVdQVDEgPyAia0VXUFQxIiA6ICJpbnZhbGlkIik7Cit9CisKKy8vIEEgY2xhc3MgaW1w
bGljaXRseSBjb252ZXJ0aWJsZSB0byBCaWdnZXN0SW50LgorY2xhc3MgQmlnZ2VzdEludENvbnZl
cnRpYmxlIHsKKyBwdWJsaWM6CisgIG9wZXJhdG9yIDo6dGVzdGluZzo6aW50ZXJuYWw6OkJpZ2dl
c3RJbnQoKSBjb25zdCB7IHJldHVybiA0MjsgfQorfTsKKworLy8gQSB1c2VyLWRlZmluZWQgdW5w
cmludGFibGUgY2xhc3MgdGVtcGxhdGUgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFVucHJpbnRhYmxlVGVtcGxhdGVJbkdsb2JhbCB7CisgcHVi
bGljOgorICBVbnByaW50YWJsZVRlbXBsYXRlSW5HbG9iYWwoKSA6IHZhbHVlXygpIHt9CisgcHJp
dmF0ZToKKyAgVCB2YWx1ZV87Cit9OworCisvLyBBIHVzZXItZGVmaW5lZCBzdHJlYW1hYmxlIHR5
cGUgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCitjbGFzcyBTdHJlYW1hYmxlSW5HbG9iYWwgewor
IHB1YmxpYzoKKyAgdmlydHVhbCB+U3RyZWFtYWJsZUluR2xvYmFsKCkge30KK307CisKK2lubGlu
ZSB2b2lkIG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBTdHJlYW1hYmxlSW5H
bG9iYWwmIC8qIHggKi8pIHsKKyAgb3MgPDwgIlN0cmVhbWFibGVJbkdsb2JhbCI7Cit9CisKK3Zv
aWQgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFN0cmVhbWFibGVJbkdsb2Jh
bCogLyogeCAqLykgeworICBvcyA8PCAiU3RyZWFtYWJsZUluR2xvYmFsKiI7Cit9CisKK25hbWVz
cGFjZSBmb28geworCisvLyBBIHVzZXItZGVmaW5lZCB1bnByaW50YWJsZSB0eXBlIGluIGEgdXNl
ciBuYW1lc3BhY2UuCitjbGFzcyBVbnByaW50YWJsZUluRm9vIHsKKyBwdWJsaWM6CisgIFVucHJp
bnRhYmxlSW5Gb28oKSA6IHpfKDApIHsgbWVtY3B5KHh5XywgIlx4RUZceDEyXHgwXHgwXHgzNFx4
QUJceDBceDAiLCA4KTsgfQorICBkb3VibGUgeigpIGNvbnN0IHsgcmV0dXJuIHpfOyB9CisgcHJp
dmF0ZToKKyAgY2hhciB4eV9bOF07CisgIGRvdWJsZSB6XzsKK307CisKKy8vIEEgdXNlci1kZWZp
bmVkIHByaW50YWJsZSB0eXBlIGluIGEgdXNlci1jaG9zZW4gbmFtZXNwYWNlLgorc3RydWN0IFBy
aW50YWJsZVZpYVByaW50VG8geworICBQcmludGFibGVWaWFQcmludFRvKCkgOiB2YWx1ZSgpIHt9
CisgIGludCB2YWx1ZTsKK307CisKK3ZvaWQgUHJpbnRUbyhjb25zdCBQcmludGFibGVWaWFQcmlu
dFRvJiB4LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8ICJQcmludGFibGVWaWFQcmlu
dFRvOiAiIDw8IHgudmFsdWU7Cit9CisKKy8vIEEgdHlwZSB3aXRoIGEgdXNlci1kZWZpbmVkIDw8
IGZvciBwcmludGluZyBpdHMgcG9pbnRlci4KK3N0cnVjdCBQb2ludGVyUHJpbnRhYmxlIHsKK307
CisKKzo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBvcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBvaW50ZXJQcmludGFibGUqIC8qIHggKi8pIHsK
KyAgcmV0dXJuIG9zIDw8ICJQb2ludGVyUHJpbnRhYmxlKiI7Cit9CisKKy8vIEEgdXNlci1kZWZp
bmVkIHByaW50YWJsZSBjbGFzcyB0ZW1wbGF0ZSBpbiBhIHVzZXItY2hvc2VuIG5hbWVzcGFjZS4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgUHJpbnRhYmxlVmlhUHJpbnRUb1RlbXBsYXRl
IHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFByaW50YWJsZVZpYVByaW50VG9UZW1wbGF0ZShjb25z
dCBUJiBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7fQorCisgIGNvbnN0IFQmIHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CisgcHJpdmF0ZToKKyAgVCB2YWx1ZV87Cit9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgUHJpbnRUbyhjb25zdCBQcmludGFibGVWaWFQcmlu
dFRvVGVtcGxhdGU8VD4mIHgsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAqb3MgPDwgIlByaW50
YWJsZVZpYVByaW50VG9UZW1wbGF0ZTogIiA8PCB4LnZhbHVlKCk7Cit9CisKKy8vIEEgdXNlci1k
ZWZpbmVkIHN0cmVhbWFibGUgY2xhc3MgdGVtcGxhdGUgaW4gYSB1c2VyIG5hbWVzcGFjZS4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgU3RyZWFtYWJsZVRlbXBsYXRlSW5Gb28geworIHB1
YmxpYzoKKyAgU3RyZWFtYWJsZVRlbXBsYXRlSW5Gb28oKSA6IHZhbHVlXygpIHt9CisKKyAgY29u
c3QgVCYgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KKyBwcml2YXRlOgorICBUIHZh
bHVlXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIDo6c3RkOjpvc3RyZWFt
JiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBvcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTdHJlYW1hYmxlVGVtcGxhdGVJbkZvbzxUPiYgeCkgeworICByZXR1
cm4gb3MgPDwgIlN0cmVhbWFibGVUZW1wbGF0ZUluRm9vOiAiIDw8IHgudmFsdWUoKTsKK30KKwor
Ly8gQSB1c2VyLWRlZmluZWQgc3RyZWFtYWJsZSBidXQgcmVjdXJzaXZseS1kZWZpbmVkIGNvbnRh
aW5lciB0eXBlIGluCisvLyBhIHVzZXIgbmFtZXNwYWNlLCBpdCBtaW1pY3MgdGhlcmVmb3JlIHN0
ZDo6ZmlsZXN5c3RlbTo6cGF0aCBvcgorLy8gYm9vc3Q6OmZpbGVzeXN0ZW06OnBhdGguCitjbGFz
cyBQYXRoTGlrZSB7CisgcHVibGljOgorICBzdHJ1Y3QgaXRlcmF0b3IgeworICAgIHR5cGVkZWYg
UGF0aExpa2UgdmFsdWVfdHlwZTsKKyAgfTsKKworICBQYXRoTGlrZSgpIHt9CisKKyAgaXRlcmF0
b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBpdGVyYXRvcigpOyB9CisgIGl0ZXJhdG9yIGVuZCgp
IGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCk7IH0KKworICBmcmllbmQgOjpzdGQ6Om9zdHJlYW0m
IG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBQYXRoTGlrZSYpIHsKKyAgICBy
ZXR1cm4gb3MgPDwgIlN0cmVhbWFibGUtUGF0aExpa2UiOworICB9Cit9OworCit9ICAvLyBuYW1l
c3BhY2UgZm9vCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFjZSBndGVzdF9wcmludGVy
c190ZXN0IHsKKwordXNpbmcgOjpzdGQ6OmRlcXVlOwordXNpbmcgOjpzdGQ6Omxpc3Q7Cit1c2lu
ZyA6OnN0ZDo6bWFrZV9wYWlyOwordXNpbmcgOjpzdGQ6Om1hcDsKK3VzaW5nIDo6c3RkOjptdWx0
aW1hcDsKK3VzaW5nIDo6c3RkOjptdWx0aXNldDsKK3VzaW5nIDo6c3RkOjpwYWlyOwordXNpbmcg
OjpzdGQ6OnNldDsKK3VzaW5nIDo6c3RkOjp2ZWN0b3I7Cit1c2luZyA6OnRlc3Rpbmc6OlByaW50
VG9TdHJpbmc7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRGb3JDb21wYXJpc29u
RmFpbHVyZU1lc3NhZ2U7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3Rf
OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TmF0aXZlQXJyYXk7Cit1c2luZyA6OnRlc3Rp
bmc6OmludGVybmFsOjpSRTsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlJlbGF0aW9uVG9T
b3VyY2VSZWZlcmVuY2U7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmdzOwordXNp
bmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnQ7Cit1c2luZyA6OnRlc3Rpbmc6
OmludGVybmFsOjpVbml2ZXJzYWxQcmludGVyOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
VW5pdmVyc2FsVGVyc2VQcmludDsKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFIHx8IEdURVNUX0hB
U19TVERfVFVQTEVfCit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJzZVBy
aW50VHVwbGVGaWVsZHNUb1N0cmluZ3M7CisjZW5kaWYKKworLy8gUHJpbnRzIGEgdmFsdWUgdG8g
YSBzdHJpbmcgdXNpbmcgdGhlIHVuaXZlcnNhbCB2YWx1ZSBwcmludGVyLiAgVGhpcworLy8gaXMg
YSBoZWxwZXIgZm9yIHRlc3RpbmcgVW5pdmVyc2FsUHJpbnRlcjxUPjo6UHJpbnQoKSBmb3IgdmFy
aW91cyB0eXBlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RkOjpzdHJpbmcgUHJpbnQoY29u
c3QgVCYgdmFsdWUpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2FsUHJp
bnRlcjxUPjo6UHJpbnQodmFsdWUsICZzcyk7CisgIHJldHVybiBzcy5zdHIoKTsKK30KKworLy8g
UHJpbnRzIGEgdmFsdWUgcGFzc2VkIGJ5IHJlZmVyZW5jZSB0byBhIHN0cmluZywgdXNpbmcgdGhl
IHVuaXZlcnNhbAorLy8gdmFsdWUgcHJpbnRlci4gIFRoaXMgaXMgYSBoZWxwZXIgZm9yIHRlc3Rp
bmcKKy8vIFVuaXZlcnNhbFByaW50ZXI8VCY+OjpQcmludCgpIGZvciB2YXJpb3VzIHR5cGVzLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGQ6OnN0cmluZyBQcmludEJ5UmVmKGNvbnN0IFQmIHZh
bHVlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIFVuaXZlcnNhbFByaW50ZXI8VCY+
OjpQcmludCh2YWx1ZSwgJnNzKTsKKyAgcmV0dXJuIHNzLnN0cigpOworfQorCisvLyBUZXN0cyBw
cmludGluZyB2YXJpb3VzIGVudW0gdHlwZXMuCisKK1RFU1QoUHJpbnRFbnVtVGVzdCwgQW5vbnlt
b3VzRW51bSkgeworICBFWFBFQ1RfRVEoIi0xIiwgUHJpbnQoa0FFMSkpOworICBFWFBFQ1RfRVEo
IjEiLCBQcmludChrQUUyKSk7Cit9CisKK1RFU1QoUHJpbnRFbnVtVGVzdCwgRW51bVdpdGhvdXRQ
cmludGVyKSB7CisgIEVYUEVDVF9FUSgiLTIiLCBQcmludChrRVdQMSkpOworICBFWFBFQ1RfRVEo
IjQyIiwgUHJpbnQoa0VXUDIpKTsKK30KKworVEVTVChQcmludEVudW1UZXN0LCBFbnVtV2l0aFN0
cmVhbWluZykgeworICBFWFBFQ1RfRVEoImtFV1MxIiwgUHJpbnQoa0VXUzEpKTsKKyAgRVhQRUNU
X0VRKCJpbnZhbGlkIiwgUHJpbnQoc3RhdGljX2Nhc3Q8RW51bVdpdGhTdHJlYW1pbmc+KDApKSk7
Cit9CisKK1RFU1QoUHJpbnRFbnVtVGVzdCwgRW51bVdpdGhQcmludFRvKSB7CisgIEVYUEVDVF9F
USgia0VXUFQxIiwgUHJpbnQoa0VXUFQxKSk7CisgIEVYUEVDVF9FUSgiaW52YWxpZCIsIFByaW50
KHN0YXRpY19jYXN0PEVudW1XaXRoUHJpbnRUbz4oMCkpKTsKK30KKworLy8gVGVzdHMgcHJpbnRp
bmcgYSBjbGFzcyBpbXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRvIEJpZ2dlc3RJbnQuCisKK1RFU1Qo
UHJpbnRDbGFzc1Rlc3QsIEJpZ2dlc3RJbnRDb252ZXJ0aWJsZSkgeworICBFWFBFQ1RfRVEoIjQy
IiwgUHJpbnQoQmlnZ2VzdEludENvbnZlcnRpYmxlKCkpKTsKK30KKworLy8gVGVzdHMgcHJpbnRp
bmcgdmFyaW91cyBjaGFyIHR5cGVzLgorCisvLyBjaGFyLgorVEVTVChQcmludENoYXJUZXN0LCBQ
bGFpbkNoYXIpIHsKKyAgRVhQRUNUX0VRKCInXFwwJyIsIFByaW50KCdcMCcpKTsKKyAgRVhQRUNU
X0VRKCInXFwnJyAoMzksIDB4MjcpIiwgUHJpbnQoJ1wnJykpOworICBFWFBFQ1RfRVEoIidcIicg
KDM0LCAweDIyKSIsIFByaW50KCciJykpOworICBFWFBFQ1RfRVEoIic/JyAoNjMsIDB4M0YpIiwg
UHJpbnQoJz8nKSk7CisgIEVYUEVDVF9FUSgiJ1xcXFwnICg5MiwgMHg1QykiLCBQcmludCgnXFwn
KSk7CisgIEVYUEVDVF9FUSgiJ1xcYScgKDcpIiwgUHJpbnQoJ1xhJykpOworICBFWFBFQ1RfRVEo
IidcXGInICg4KSIsIFByaW50KCdcYicpKTsKKyAgRVhQRUNUX0VRKCInXFxmJyAoMTIsIDB4Qyki
LCBQcmludCgnXGYnKSk7CisgIEVYUEVDVF9FUSgiJ1xcbicgKDEwLCAweEEpIiwgUHJpbnQoJ1xu
JykpOworICBFWFBFQ1RfRVEoIidcXHInICgxMywgMHhEKSIsIFByaW50KCdccicpKTsKKyAgRVhQ
RUNUX0VRKCInXFx0JyAoOSkiLCBQcmludCgnXHQnKSk7CisgIEVYUEVDVF9FUSgiJ1xcdicgKDEx
LCAweEIpIiwgUHJpbnQoJ1x2JykpOworICBFWFBFQ1RfRVEoIidcXHg3RicgKDEyNykiLCBQcmlu
dCgnXHg3RicpKTsKKyAgRVhQRUNUX0VRKCInXFx4RkYnICgyNTUpIiwgUHJpbnQoJ1x4RkYnKSk7
CisgIEVYUEVDVF9FUSgiJyAnICgzMiwgMHgyMCkiLCBQcmludCgnICcpKTsKKyAgRVhQRUNUX0VR
KCInYScgKDk3LCAweDYxKSIsIFByaW50KCdhJykpOworfQorCisvLyBzaWduZWQgY2hhci4KK1RF
U1QoUHJpbnRDaGFyVGVzdCwgU2lnbmVkQ2hhcikgeworICBFWFBFQ1RfRVEoIidcXDAnIiwgUHJp
bnQoc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+KCdcMCcpKSk7CisgIEVYUEVDVF9FUSgiJ1xceENF
JyAoLTUwKSIsCisgICAgICAgICAgICBQcmludChzdGF0aWNfY2FzdDxzaWduZWQgY2hhcj4oLTUw
KSkpOworfQorCisvLyB1bnNpZ25lZCBjaGFyLgorVEVTVChQcmludENoYXJUZXN0LCBVbnNpZ25l
ZENoYXIpIHsKKyAgRVhQRUNUX0VRKCInXFwwJyIsIFByaW50KHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KCdcMCcpKSk7CisgIEVYUEVDVF9FUSgiJ2InICg5OCwgMHg2MikiLAorICAgICAgICAg
ICAgUHJpbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oJ2InKSkpOworfQorCisvLyBUZXN0
cyBwcmludGluZyBvdGhlciBzaW1wbGUsIGJ1aWx0LWluIHR5cGVzLgorCisvLyBib29sLgorVEVT
VChQcmludEJ1aWx0SW5UeXBlVGVzdCwgQm9vbCkgeworICBFWFBFQ1RfRVEoImZhbHNlIiwgUHJp
bnQoZmFsc2UpKTsKKyAgRVhQRUNUX0VRKCJ0cnVlIiwgUHJpbnQodHJ1ZSkpOworfQorCisvLyB3
Y2hhcl90LgorVEVTVChQcmludEJ1aWx0SW5UeXBlVGVzdCwgV2NoYXJfdCkgeworICBFWFBFQ1Rf
RVEoIkwnXFwwJyIsIFByaW50KEwnXDAnKSk7CisgIEVYUEVDVF9FUSgiTCdcXCcnICgzOSwgMHgy
NykiLCBQcmludChMJ1wnJykpOworICBFWFBFQ1RfRVEoIkwnXCInICgzNCwgMHgyMikiLCBQcmlu
dChMJyInKSk7CisgIEVYUEVDVF9FUSgiTCc/JyAoNjMsIDB4M0YpIiwgUHJpbnQoTCc/JykpOwor
ICBFWFBFQ1RfRVEoIkwnXFxcXCcgKDkyLCAweDVDKSIsIFByaW50KEwnXFwnKSk7CisgIEVYUEVD
VF9FUSgiTCdcXGEnICg3KSIsIFByaW50KEwnXGEnKSk7CisgIEVYUEVDVF9FUSgiTCdcXGInICg4
KSIsIFByaW50KEwnXGInKSk7CisgIEVYUEVDVF9FUSgiTCdcXGYnICgxMiwgMHhDKSIsIFByaW50
KEwnXGYnKSk7CisgIEVYUEVDVF9FUSgiTCdcXG4nICgxMCwgMHhBKSIsIFByaW50KEwnXG4nKSk7
CisgIEVYUEVDVF9FUSgiTCdcXHInICgxMywgMHhEKSIsIFByaW50KEwnXHInKSk7CisgIEVYUEVD
VF9FUSgiTCdcXHQnICg5KSIsIFByaW50KEwnXHQnKSk7CisgIEVYUEVDVF9FUSgiTCdcXHYnICgx
MSwgMHhCKSIsIFByaW50KEwnXHYnKSk7CisgIEVYUEVDVF9FUSgiTCdcXHg3RicgKDEyNykiLCBQ
cmludChMJ1x4N0YnKSk7CisgIEVYUEVDVF9FUSgiTCdcXHhGRicgKDI1NSkiLCBQcmludChMJ1x4
RkYnKSk7CisgIEVYUEVDVF9FUSgiTCcgJyAoMzIsIDB4MjApIiwgUHJpbnQoTCcgJykpOworICBF
WFBFQ1RfRVEoIkwnYScgKDk3LCAweDYxKSIsIFByaW50KEwnYScpKTsKKyAgRVhQRUNUX0VRKCJM
J1xceDU3NicgKDEzOTgpIiwgUHJpbnQoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHg1NzYpKSk7Cisg
IEVYUEVDVF9FUSgiTCdcXHhDNzREJyAoNTEwMjEpIiwgUHJpbnQoc3RhdGljX2Nhc3Q8d2NoYXJf
dD4oMHhDNzREKSkpOworfQorCisvLyBUZXN0IHRoYXQgSW50NjQgcHJvdmlkZXMgbW9yZSBzdG9y
YWdlIHRoYW4gd2NoYXJfdC4KK1RFU1QoUHJpbnRUeXBlU2l6ZVRlc3QsIFdjaGFyX3QpIHsKKyAg
RVhQRUNUX0xUKHNpemVvZih3Y2hhcl90KSwgc2l6ZW9mKHRlc3Rpbmc6OmludGVybmFsOjpJbnQ2
NCkpOworfQorCisvLyBWYXJpb3VzIGludGVnZXIgdHlwZXMuCitURVNUKFByaW50QnVpbHRJblR5
cGVUZXN0LCBJbnRlZ2VyKSB7CisgIEVYUEVDVF9FUSgiJ1xceEZGJyAoMjU1KSIsIFByaW50KHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSkpKTsgIC8vIHVpbnQ4CisgIEVYUEVDVF9FUSgi
J1xceDgwJyAoLTEyOCkiLCBQcmludChzdGF0aWNfY2FzdDxzaWduZWQgY2hhcj4oLTEyOCkpKTsg
IC8vIGludDgKKyAgRVhQRUNUX0VRKCI2NTUzNSIsIFByaW50KFVTSFJUX01BWCkpOyAgLy8gdWlu
dDE2CisgIEVYUEVDVF9FUSgiLTMyNzY4IiwgUHJpbnQoU0hSVF9NSU4pKTsgIC8vIGludDE2Cisg
IEVYUEVDVF9FUSgiNDI5NDk2NzI5NSIsIFByaW50KFVJTlRfTUFYKSk7ICAvLyB1aW50MzIKKyAg
RVhQRUNUX0VRKCItMjE0NzQ4MzY0OCIsIFByaW50KElOVF9NSU4pKTsgIC8vIGludDMyCisgIEVY
UEVDVF9FUSgiMTg0NDY3NDQwNzM3MDk1NTE2MTUiLAorICAgICAgICAgICAgUHJpbnQoc3RhdGlj
X2Nhc3Q8dGVzdGluZzo6aW50ZXJuYWw6OlVJbnQ2ND4oLTEpKSk7ICAvLyB1aW50NjQKKyAgRVhQ
RUNUX0VRKCItOTIyMzM3MjAzNjg1NDc3NTgwOCIsCisgICAgICAgICAgICBQcmludChzdGF0aWNf
Y2FzdDx0ZXN0aW5nOjppbnRlcm5hbDo6SW50NjQ+KDEpIDw8IDYzKSk7ICAvLyBpbnQ2NAorfQor
CisvLyBTaXplIHR5cGVzLgorVEVTVChQcmludEJ1aWx0SW5UeXBlVGVzdCwgU2l6ZV90KSB7Cisg
IEVYUEVDVF9FUSgiMSIsIFByaW50KHNpemVvZignYScpKSk7ICAvLyBzaXplX3QuCisjaWYgIUdU
RVNUX09TX1dJTkRPV1MKKyAgLy8gV2luZG93cyBoYXMgbm8gc3NpemVfdCB0eXBlLgorICBFWFBF
Q1RfRVEoIi0yIiwgUHJpbnQoc3RhdGljX2Nhc3Q8c3NpemVfdD4oLTIpKSk7ICAvLyBzc2l6ZV90
LgorI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUworfQorCisvLyBGbG9hdGluZy1wb2ludHMu
CitURVNUKFByaW50QnVpbHRJblR5cGVUZXN0LCBGbG9hdGluZ1BvaW50cykgeworICBFWFBFQ1Rf
RVEoIjEuNSIsIFByaW50KDEuNWYpKTsgICAvLyBmbG9hdAorICBFWFBFQ1RfRVEoIi0yLjUiLCBQ
cmludCgtMi41KSk7ICAvLyBkb3VibGUKK30KKworLy8gU2luY2UgOjpzdGQ6OnN0cmluZ3N0cmVh
bTo6b3BlcmF0b3I8PChjb25zdCB2b2lkICopIGZvcm1hdHMgdGhlIHBvaW50ZXIKKy8vIG91dHB1
dCBkaWZmZXJlbnRseSB3aXRoIGRpZmZlcmVudCBjb21waWxlcnMsIHdlIGhhdmUgdG8gY3JlYXRl
IHRoZSBleHBlY3RlZAorLy8gb3V0cHV0IGZpcnN0IGFuZCB1c2UgaXQgYXMgb3VyIGV4cGVjdGF0
aW9uLgorc3RhdGljIHN0ZDo6c3RyaW5nIFByaW50UG9pbnRlcihjb25zdCB2b2lkKiBwKSB7Cisg
IDo6c3RkOjpzdHJpbmdzdHJlYW0gZXhwZWN0ZWRfcmVzdWx0X3N0cmVhbTsKKyAgZXhwZWN0ZWRf
cmVzdWx0X3N0cmVhbSA8PCBwOworICByZXR1cm4gZXhwZWN0ZWRfcmVzdWx0X3N0cmVhbS5zdHIo
KTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgQyBzdHJpbmdzLgorCisvLyBjb25zdCBjaGFyKi4K
K1RFU1QoUHJpbnRDU3RyaW5nVGVzdCwgQ29uc3QpIHsKKyAgY29uc3QgY2hhciogcCA9ICJXb3Js
ZCI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCkgKyAiIHBvaW50aW5nIHRvIFwiV29ybGRc
IiIsIFByaW50KHApKTsKK30KKworLy8gY2hhciouCitURVNUKFByaW50Q1N0cmluZ1Rlc3QsIE5v
bkNvbnN0KSB7CisgIGNoYXIgcFtdID0gIkhpIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihw
KSArICIgcG9pbnRpbmcgdG8gXCJIaVwiIiwKKyAgICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0
PGNoYXIqPihwKSkpOworfQorCisvLyBOVUxMIEMgc3RyaW5nLgorVEVTVChQcmludENTdHJpbmdU
ZXN0LCBOdWxsKSB7CisgIGNvbnN0IGNoYXIqIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwi
LCBQcmludChwKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQyBzdHJpbmdzIGFyZSBlc2NhcGVkIHBy
b3Blcmx5LgorVEVTVChQcmludENTdHJpbmdUZXN0LCBFc2NhcGVzUHJvcGVybHkpIHsKKyAgY29u
c3QgY2hhciogcCA9ICInXCI/XFxcYVxiXGZcblxyXHRcdlx4N0ZceEZGIGEiOworICBFWFBFQ1Rf
RVEoUHJpbnRQb2ludGVyKHApICsgIiBwb2ludGluZyB0byBcIidcXFwiP1xcXFxcXGFcXGJcXGYi
CisgICAgICAgICAgICAiXFxuXFxyXFx0XFx2XFx4N0ZcXHhGRiBhXCIiLAorICAgICAgICAgICAg
UHJpbnQocCkpOworfQorCisvLyBNU1ZDIGNvbXBpbGVyIGNhbiBiZSBjb25maWd1cmVkIHRvIGRl
ZmluZSB3aGFyX3QgYXMgYSB0eXBlZGVmCisvLyBvZiB1bnNpZ25lZCBzaG9ydC4gRGVmaW5pbmcg
YW4gb3ZlcmxvYWQgZm9yIGNvbnN0IHdjaGFyX3QqIGluIHRoYXQgY2FzZQorLy8gd291bGQgY2F1
c2UgcG9pbnRlcnMgdG8gdW5zaWduZWQgc2hvcnRzIGJlIHByaW50ZWQgYXMgd2lkZSBzdHJpbmdz
LAorLy8gcG9zc2libHkgYWNjZXNzaW5nIG1vcmUgbWVtb3J5IHRoYW4gaW50ZW5kZWQgYW5kIGNh
dXNpbmcgaW52YWxpZAorLy8gbWVtb3J5IGFjY2Vzc2VzLiBNU1ZDIGRlZmluZXMgX05BVElWRV9X
Q0hBUl9UX0RFRklORUQgc3ltYm9sIHdoZW4KKy8vIHdjaGFyX3QgaXMgaW1wbGVtZW50ZWQgYXMg
YSBuYXRpdmUgdHlwZS4KKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfTkFUSVZF
X1dDSEFSX1RfREVGSU5FRCkKKworLy8gY29uc3Qgd2NoYXJfdCouCitURVNUKFByaW50V2lkZUNT
dHJpbmdUZXN0LCBDb25zdCkgeworICBjb25zdCB3Y2hhcl90KiBwID0gTCJXb3JsZCI7CisgIEVY
UEVDVF9FUShQcmludFBvaW50ZXIocCkgKyAiIHBvaW50aW5nIHRvIExcIldvcmxkXCIiLCBQcmlu
dChwKSk7Cit9CisKKy8vIHdjaGFyX3QqLgorVEVTVChQcmludFdpZGVDU3RyaW5nVGVzdCwgTm9u
Q29uc3QpIHsKKyAgd2NoYXJfdCBwW10gPSBMIkhpIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRl
cihwKSArICIgcG9pbnRpbmcgdG8gTFwiSGlcIiIsCisgICAgICAgICAgICBQcmludChzdGF0aWNf
Y2FzdDx3Y2hhcl90Kj4ocCkpKTsKK30KKworLy8gTlVMTCB3aWRlIEMgc3RyaW5nLgorVEVTVChQ
cmludFdpZGVDU3RyaW5nVGVzdCwgTnVsbCkgeworICBjb25zdCB3Y2hhcl90KiBwID0gTlVMTDsK
KyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBUZXN0cyB0aGF0IHdpZGUg
QyBzdHJpbmdzIGFyZSBlc2NhcGVkIHByb3Blcmx5LgorVEVTVChQcmludFdpZGVDU3RyaW5nVGVz
dCwgRXNjYXBlc1Byb3Blcmx5KSB7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0geydcJycsICciJywg
Jz8nLCAnXFwnLCAnXGEnLCAnXGInLCAnXGYnLCAnXG4nLCAnXHInLAorICAgICAgICAgICAgICAg
ICAgICAgICAnXHQnLCAnXHYnLCAweEQzLCAweDU3NiwgMHg4RDMsIDB4Qzc0RCwgJyAnLCAnYScs
ICdcMCd9OworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHMpICsgIiBwb2ludGluZyB0byBMXCIn
XFxcIj9cXFxcXFxhXFxiXFxmIgorICAgICAgICAgICAgIlxcblxcclxcdFxcdlxceEQzXFx4NTc2
XFx4OEQzXFx4Qzc0RCBhXCIiLAorICAgICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8Y29uc3Qg
d2NoYXJfdCo+KHMpKSk7Cit9CisjZW5kaWYgIC8vIG5hdGl2ZSB3Y2hhcl90CisKKy8vIFRlc3Rz
IHByaW50aW5nIHBvaW50ZXJzIHRvIG90aGVyIGNoYXIgdHlwZXMuCisKKy8vIHNpZ25lZCBjaGFy
Ki4KK1RFU1QoUHJpbnRDaGFyUG9pbnRlclRlc3QsIFNpZ25lZENoYXIpIHsKKyAgc2lnbmVkIGNo
YXIqIHAgPSByZWludGVycHJldF9jYXN0PHNpZ25lZCBjaGFyKj4oMHgxMjM0KTsKKyAgRVhQRUNU
X0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VR
KCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBjb25zdCBzaWduZWQgY2hhciouCitURVNUKFBy
aW50Q2hhclBvaW50ZXJUZXN0LCBDb25zdFNpZ25lZENoYXIpIHsKKyAgc2lnbmVkIGNoYXIqIHAg
PSByZWludGVycHJldF9jYXN0PHNpZ25lZCBjaGFyKj4oMHgxMjM0KTsKKyAgRVhQRUNUX0VRKFBy
aW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxM
IiwgUHJpbnQocCkpOworfQorCisvLyB1bnNpZ25lZCBjaGFyKi4KK1RFU1QoUHJpbnRDaGFyUG9p
bnRlclRlc3QsIFVuc2lnbmVkQ2hhcikgeworICB1bnNpZ25lZCBjaGFyKiBwID0gcmVpbnRlcnBy
ZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oMHgxMjM0KTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRl
cihwKSwgUHJpbnQocCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQo
cCkpOworfQorCisvLyBjb25zdCB1bnNpZ25lZCBjaGFyKi4KK1RFU1QoUHJpbnRDaGFyUG9pbnRl
clRlc3QsIENvbnN0VW5zaWduZWRDaGFyKSB7CisgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHAgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPigweDEyMzQpOworICBFWFBFQ1Rf
RVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7CisgIHAgPSBOVUxMOworICBFWFBFQ1RfRVEo
Ik5VTEwiLCBQcmludChwKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIHBvaW50ZXJzIHRvIHNp
bXBsZSwgYnVpbHQtaW4gdHlwZXMuCisKKy8vIGJvb2wqLgorVEVTVChQcmludFBvaW50ZXJUb0J1
aWx0SW5UeXBlVGVzdCwgQm9vbCkgeworICBib29sKiBwID0gcmVpbnRlcnByZXRfY2FzdDxib29s
Kj4oMHhBQkNEKTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBw
ID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyB2b2lkKi4K
K1RFU1QoUHJpbnRQb2ludGVyVG9CdWlsdEluVHlwZVRlc3QsIFZvaWQpIHsKKyAgdm9pZCogcCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4QUJDRCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50
ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50
KHApKTsKK30KKworLy8gY29uc3Qgdm9pZCouCitURVNUKFByaW50UG9pbnRlclRvQnVpbHRJblR5
cGVUZXN0LCBDb25zdFZvaWQpIHsKKyAgY29uc3Qgdm9pZCogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgdm9pZCo+KDB4QUJDRCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50
KHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKwor
Ly8gVGVzdHMgcHJpbnRpbmcgcG9pbnRlcnMgdG8gcG9pbnRlcnMuCitURVNUKFByaW50UG9pbnRl
clRvUG9pbnRlclRlc3QsIEludFBvaW50ZXJQb2ludGVyKSB7CisgIGludCoqIHAgPSByZWludGVy
cHJldF9jYXN0PGludCoqPigweEFCQ0QpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQ
cmludChwKSk7CisgIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9
CisKKy8vIFRlc3RzIHByaW50aW5nIChub24tbWVtYmVyKSBmdW5jdGlvbiBwb2ludGVycy4KKwor
dm9pZCBNeUZ1bmN0aW9uKGludCAvKiBuICovKSB7fQorCitURVNUKFByaW50UG9pbnRlclRlc3Qs
IE5vbk1lbWJlckZ1bmN0aW9uUG9pbnRlcikgeworICAvLyBXZSBjYW5ub3QgZGlyZWN0bHkgY2Fz
dCAmTXlGdW5jdGlvbiB0byBjb25zdCB2b2lkKiBiZWNhdXNlIHRoZQorICAvLyBzdGFuZGFyZCBk
aXNhbGxvd3MgY2FzdGluZyBiZXR3ZWVuIHBvaW50ZXJzIHRvIGZ1bmN0aW9ucyBhbmQKKyAgLy8g
cG9pbnRlcnMgdG8gb2JqZWN0cywgYW5kIHNvbWUgY29tcGlsZXJzIChlLmcuIEdDQyAzLjQpIGVu
Zm9yY2UKKyAgLy8gdGhpcyBsaW1pdGF0aW9uLgorICBFWFBFQ1RfRVEoCisgICAgICBQcmludFBv
aW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oCisgICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxpbnRlcm5hbDo6QmlnZ2VzdEludD4oJk15RnVuY3Rpb24pKSksCisgICAgICBQcmlu
dCgmTXlGdW5jdGlvbikpOworICBpbnQgKCpwKShib29sKSA9IE5VTEw7ICAvLyBOT0xJTlQKKyAg
RVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBBbiBhc3NlcnRpb24gcHJlZGlj
YXRlIGRldGVybWluaW5nIHdoZXRoZXIgYSBvbmUgc3RyaW5nIGlzIGEgcHJlZml4IGZvcgorLy8g
YW5vdGhlci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBTdHJpbmdUeXBlPgorQXNzZXJ0aW9uUmVzdWx0
IEhhc1ByZWZpeChjb25zdCBTdHJpbmdUeXBlJiBzdHIsIGNvbnN0IFN0cmluZ1R5cGUmIHByZWZp
eCkgeworICBpZiAoc3RyLmZpbmQocHJlZml4LCAwKSA9PSAwKQorICAgIHJldHVybiBBc3NlcnRp
b25TdWNjZXNzKCk7CisKKyAgY29uc3QgYm9vbCBpc193aWRlX3N0cmluZyA9IHNpemVvZihwcmVm
aXhbMF0pID4gMTsKKyAgY29uc3QgY2hhciogY29uc3QgYmVnaW5fc3RyaW5nX3F1b3RlID0gaXNf
d2lkZV9zdHJpbmcgPyAiTFwiIiA6ICJcIiI7CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkK
KyAgICAgIDw8IGJlZ2luX3N0cmluZ19xdW90ZSA8PCBwcmVmaXggPDwgIlwiIGlzIG5vdCBhIHBy
ZWZpeCBvZiAiCisgICAgICA8PCBiZWdpbl9zdHJpbmdfcXVvdGUgPDwgc3RyIDw8ICJcIlxuIjsK
K30KKworLy8gVGVzdHMgcHJpbnRpbmcgbWVtYmVyIHZhcmlhYmxlIHBvaW50ZXJzLiAgQWx0aG91
Z2ggdGhleSBhcmUgY2FsbGVkCisvLyBwb2ludGVycywgdGhleSBkb24ndCBwb2ludCB0byBhIGxv
Y2F0aW9uIGluIHRoZSBhZGRyZXNzIHNwYWNlLgorLy8gVGhlaXIgcmVwcmVzZW50YXRpb24gaXMg
aW1wbGVtZW50YXRpb24tZGVmaW5lZC4gIFRodXMgdGhleSB3aWxsIGJlCisvLyBwcmludGVkIGFz
IHJhdyBieXRlcy4KKworc3RydWN0IEZvbyB7CisgcHVibGljOgorICB2aXJ0dWFsIH5Gb28oKSB7
fQorICBpbnQgTXlNZXRob2QoY2hhciB4KSB7IHJldHVybiB4ICsgMTsgfQorICB2aXJ0dWFsIGNo
YXIgTXlWaXJ0dWFsTWV0aG9kKGludCAvKiBuICovKSB7IHJldHVybiAnYSc7IH0KKworICBpbnQg
dmFsdWU7Cit9OworCitURVNUKFByaW50UG9pbnRlclRlc3QsIE1lbWJlclZhcmlhYmxlUG9pbnRl
cikgeworICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoUHJpbnQoJkZvbzo6dmFsdWUpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgUHJpbnQoc2l6ZW9mKCZGb286OnZhbHVlKSkgKyAiLWJ5dGUgb2Jq
ZWN0ICIpKTsKKyAgaW50IEZvbzo6KnAgPSBOVUxMOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9UUlVF
KEhhc1ByZWZpeChQcmludChwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFByaW50KHNpemVv
ZihwKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgbWVtYmVy
IGZ1bmN0aW9uIHBvaW50ZXJzLiAgQWx0aG91Z2ggdGhleSBhcmUgY2FsbGVkCisvLyBwb2ludGVy
cywgdGhleSBkb24ndCBwb2ludCB0byBhIGxvY2F0aW9uIGluIHRoZSBhZGRyZXNzIHNwYWNlLgor
Ly8gVGhlaXIgcmVwcmVzZW50YXRpb24gaXMgaW1wbGVtZW50YXRpb24tZGVmaW5lZC4gIFRodXMg
dGhleSB3aWxsIGJlCisvLyBwcmludGVkIGFzIHJhdyBieXRlcy4KK1RFU1QoUHJpbnRQb2ludGVy
VGVzdCwgTWVtYmVyRnVuY3Rpb25Qb2ludGVyKSB7CisgIEVYUEVDVF9UUlVFKEhhc1ByZWZpeChQ
cmludCgmRm9vOjpNeU1ldGhvZCksCisgICAgICAgICAgICAgICAgICAgICAgICBQcmludChzaXpl
b2YoJkZvbzo6TXlNZXRob2QpKSArICItYnl0ZSBvYmplY3QgIikpOworICBFWFBFQ1RfVFJVRSgK
KyAgICAgIEhhc1ByZWZpeChQcmludCgmRm9vOjpNeVZpcnR1YWxNZXRob2QpLAorICAgICAgICAg
ICAgICAgIFByaW50KHNpemVvZigoJkZvbzo6TXlWaXJ0dWFsTWV0aG9kKSkpICsgIi1ieXRlIG9i
amVjdCAiKSk7CisgIGludCAoRm9vOjoqcCkoY2hhcikgPSBOVUxMOyAgLy8gTk9MSU5UCisgIEVY
UEVDVF9UUlVFKEhhc1ByZWZpeChQcmludChwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBy
aW50KHNpemVvZihwKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKK30KKworLy8gVGVzdHMgcHJpbnRp
bmcgQyBhcnJheXMuCisKKy8vIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBhbmQgUHJpbnQo
KSBpcyB0aGF0IGl0IGVuc3VyZXMgdGhhdCB0aGUKKy8vIGFyZ3VtZW50IGlzIGEgcmVmZXJlbmNl
IHRvIGFuIGFycmF5LgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgorc3RkOjpzdHJp
bmcgUHJpbnRBcnJheUhlbHBlcihUICgmYSlbTl0pIHsKKyAgcmV0dXJuIFByaW50KGEpOworfQor
CisvLyBPbmUtZGltZW5zaW9uYWwgYXJyYXkuCitURVNUKFByaW50QXJyYXlUZXN0LCBPbmVEaW1l
bnNpb25hbEFycmF5KSB7CisgIGludCBhWzVdID0geyAxLCAyLCAzLCA0LCA1IH07CisgIEVYUEVD
VF9FUSgieyAxLCAyLCAzLCA0LCA1IH0iLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8g
VHdvLWRpbWVuc2lvbmFsIGFycmF5LgorVEVTVChQcmludEFycmF5VGVzdCwgVHdvRGltZW5zaW9u
YWxBcnJheSkgeworICBpbnQgYVsyXVs1XSA9IHsKKyAgICB7IDEsIDIsIDMsIDQsIDUgfSwKKyAg
ICB7IDYsIDcsIDgsIDksIDAgfQorICB9OworICBFWFBFQ1RfRVEoInsgeyAxLCAyLCAzLCA0LCA1
IH0sIHsgNiwgNywgOCwgOSwgMCB9IH0iLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8g
QXJyYXkgb2YgY29uc3QgZWxlbWVudHMuCitURVNUKFByaW50QXJyYXlUZXN0LCBDb25zdEFycmF5
KSB7CisgIGNvbnN0IGJvb2wgYVsxXSA9IHsgZmFsc2UgfTsKKyAgRVhQRUNUX0VRKCJ7IGZhbHNl
IH0iLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8gY2hhciBhcnJheSB3aXRob3V0IHRl
cm1pbmF0aW5nIE5VTC4KK1RFU1QoUHJpbnRBcnJheVRlc3QsIENoYXJBcnJheVdpdGhOb1Rlcm1p
bmF0aW5nTnVsKSB7CisgIC8vIEFycmF5IGEgY29udGFpbnMgJ1wwJyBpbiB0aGUgbWlkZGxlIGFu
ZCBkb2Vzbid0IGVuZCB3aXRoICdcMCcuCisgIGNoYXIgYVtdID0geyAnSCcsICdcMCcsICdpJyB9
OworICBFWFBFQ1RfRVEoIlwiSFxcMGlcIiAobm8gdGVybWluYXRpbmcgTlVMKSIsIFByaW50QXJy
YXlIZWxwZXIoYSkpOworfQorCisvLyBjb25zdCBjaGFyIGFycmF5IHdpdGggdGVybWluYXRpbmcg
TlVMLgorVEVTVChQcmludEFycmF5VGVzdCwgQ29uc3RDaGFyQXJyYXlXaXRoVGVybWluYXRpbmdO
dWwpIHsKKyAgY29uc3QgY2hhciBhW10gPSAiXDBIaSI7CisgIEVYUEVDVF9FUSgiXCJcXDBIaVwi
IiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIGNvbnN0IHdjaGFyX3QgYXJyYXkgd2l0
aG91dCB0ZXJtaW5hdGluZyBOVUwuCitURVNUKFByaW50QXJyYXlUZXN0LCBXQ2hhckFycmF5V2l0
aE5vVGVybWluYXRpbmdOdWwpIHsKKyAgLy8gQXJyYXkgYSBjb250YWlucyAnXDAnIGluIHRoZSBt
aWRkbGUgYW5kIGRvZXNuJ3QgZW5kIHdpdGggJ1wwJy4KKyAgY29uc3Qgd2NoYXJfdCBhW10gPSB7
IEwnSCcsIEwnXDAnLCBMJ2knIH07CisgIEVYUEVDVF9FUSgiTFwiSFxcMGlcIiAobm8gdGVybWlu
YXRpbmcgTlVMKSIsIFByaW50QXJyYXlIZWxwZXIoYSkpOworfQorCisvLyB3Y2hhcl90IGFycmF5
IHdpdGggdGVybWluYXRpbmcgTlVMLgorVEVTVChQcmludEFycmF5VGVzdCwgV0NvbnN0Q2hhckFy
cmF5V2l0aFRlcm1pbmF0aW5nTnVsKSB7CisgIGNvbnN0IHdjaGFyX3QgYVtdID0gTCJcMEhpIjsK
KyAgRVhQRUNUX0VRKCJMXCJcXDBIaVwiIiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8v
IEFycmF5IG9mIG9iamVjdHMuCitURVNUKFByaW50QXJyYXlUZXN0LCBPYmplY3RBcnJheSkgewor
ICBzdGQ6OnN0cmluZyBhWzNdID0geyJIaSIsICJIZWxsbyIsICJOaSBoYW8ifTsKKyAgRVhQRUNU
X0VRKCJ7IFwiSGlcIiwgXCJIZWxsb1wiLCBcIk5pIGhhb1wiIH0iLCBQcmludEFycmF5SGVscGVy
KGEpKTsKK30KKworLy8gQXJyYXkgd2l0aCBtYW55IGVsZW1lbnRzLgorVEVTVChQcmludEFycmF5
VGVzdCwgQmlnQXJyYXkpIHsKKyAgaW50IGFbMTAwXSA9IHsgMSwgMiwgMyB9OworICBFWFBFQ1Rf
RVEoInsgMSwgMiwgMywgMCwgMCwgMCwgMCwgMCwgLi4uLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
IH0iLAorICAgICAgICAgICAgUHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIFRlc3RzIHBy
aW50aW5nIDo6c3RyaW5nIGFuZCA6OnN0ZDo6c3RyaW5nLgorCisjaWYgR1RFU1RfSEFTX0dMT0JB
TF9TVFJJTkcKKy8vIDo6c3RyaW5nLgorVEVTVChQcmludFN0cmluZ1Rlc3QsIFN0cmluZ0luR2xv
YmFsTmFtZXNwYWNlKSB7CisgIGNvbnN0IGNoYXIgc1tdID0gIidcIj9cXFxhXGJcZlxuXDBcclx0
XHZceDdGXHhGRiBhIjsKKyAgY29uc3QgOjpzdHJpbmcgc3RyKHMsIHNpemVvZihzKSk7CisgIEVY
UEVDVF9FUSgiXCInXFxcIj9cXFxcXFxhXFxiXFxmXFxuXFwwXFxyXFx0XFx2XFx4N0ZcXHhGRiBh
XFwwXCIiLAorICAgICAgICAgICAgUHJpbnQoc3RyKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hB
U19HTE9CQUxfU1RSSU5HCisKKy8vIDo6c3RkOjpzdHJpbmcuCitURVNUKFByaW50U3RyaW5nVGVz
dCwgU3RyaW5nSW5TdGROYW1lc3BhY2UpIHsKKyAgY29uc3QgY2hhciBzW10gPSAiJ1wiP1xcXGFc
YlxmXG5cMFxyXHRcdlx4N0ZceEZGIGEiOworICBjb25zdCA6OnN0ZDo6c3RyaW5nIHN0cihzLCBz
aXplb2YocykpOworICBFWFBFQ1RfRVEoIlwiJ1xcXCI/XFxcXFxcYVxcYlxcZlxcblxcMFxcclxc
dFxcdlxceDdGXFx4RkYgYVxcMFwiIiwKKyAgICAgICAgICAgIFByaW50KHN0cikpOworfQorCitU
RVNUKFByaW50U3RyaW5nVGVzdCwgU3RyaW5nQW1iaWd1b3VzSGV4KSB7CisgIC8vICJceDZCQU5B
TkEiIGlzIGFtYmlndW91cywgaXQgY2FuIGJlIGludGVycHJldGVkIGFzIHN0YXJ0aW5nIHdpdGgg
ZWl0aGVyIG9mOgorICAvLyAnXHg2JywgJ1x4NkInLCBvciAnXHg2QkEnLgorCisgIC8vIGEgaGV4
IGVzY2FwaW5nIHNlcXVlbmNlIGZvbGxvd2luZyBieSBhIGRlY2ltYWwgZGlnaXQKKyAgRVhQRUNU
X0VRKCJcIjBcXHgxMlwiIFwiM1wiIiwgUHJpbnQoOjpzdGQ6OnN0cmluZygiMFx4MTIiICIzIikp
KTsKKyAgLy8gYSBoZXggZXNjYXBpbmcgc2VxdWVuY2UgZm9sbG93aW5nIGJ5IGEgaGV4IGRpZ2l0
IChsb3dlci1jYXNlKQorICBFWFBFQ1RfRVEoIlwibW1cXHg2XCIgXCJiYW5hbmFzXCIiLCBQcmlu
dCg6OnN0ZDo6c3RyaW5nKCJtbVx4NiIgImJhbmFuYXMiKSkpOworICAvLyBhIGhleCBlc2NhcGlu
ZyBzZXF1ZW5jZSBmb2xsb3dpbmcgYnkgYSBoZXggZGlnaXQgKHVwcGVyLWNhc2UpCisgIEVYUEVD
VF9FUSgiXCJOT01cXHg2XCIgXCJCQU5BTkFcIiIsIFByaW50KDo6c3RkOjpzdHJpbmcoIk5PTVx4
NiIgIkJBTkFOQSIpKSk7CisgIC8vIGEgaGV4IGVzY2FwaW5nIHNlcXVlbmNlIGZvbGxvd2luZyBi
eSBhIG5vbi14ZGlnaXQKKyAgRVhQRUNUX0VRKCJcIiFcXHg1LSFcIiIsIFByaW50KDo6c3RkOjpz
dHJpbmcoIiFceDUtISIpKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIDo6d3N0cmluZyBhbmQg
OjpzdGQ6OndzdHJpbmcuCisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKKy8vIDo6d3N0
cmluZy4KK1RFU1QoUHJpbnRXaWRlU3RyaW5nVGVzdCwgU3RyaW5nSW5HbG9iYWxOYW1lc3BhY2Up
IHsKKyAgY29uc3Qgd2NoYXJfdCBzW10gPSBMIidcIj9cXFxhXGJcZlxuXDBcclx0XHZceEQzXHg1
NzZceDhEM1x4Qzc0RCBhIjsKKyAgY29uc3QgOjp3c3RyaW5nIHN0cihzLCBzaXplb2Yocykvc2l6
ZW9mKHdjaGFyX3QpKTsKKyAgRVhQRUNUX0VRKCJMXCInXFxcIj9cXFxcXFxhXFxiXFxmXFxuXFww
XFxyXFx0XFx2IgorICAgICAgICAgICAgIlxceEQzXFx4NTc2XFx4OEQzXFx4Qzc0RCBhXFwwXCIi
LAorICAgICAgICAgICAgUHJpbnQoc3RyKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9C
QUxfV1NUUklORworCisjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCisvLyA6OnN0ZDo6d3N0cmlu
Zy4KK1RFU1QoUHJpbnRXaWRlU3RyaW5nVGVzdCwgU3RyaW5nSW5TdGROYW1lc3BhY2UpIHsKKyAg
Y29uc3Qgd2NoYXJfdCBzW10gPSBMIidcIj9cXFxhXGJcZlxuXDBcclx0XHZceEQzXHg1NzZceDhE
M1x4Qzc0RCBhIjsKKyAgY29uc3QgOjpzdGQ6OndzdHJpbmcgc3RyKHMsIHNpemVvZihzKS9zaXpl
b2Yod2NoYXJfdCkpOworICBFWFBFQ1RfRVEoIkxcIidcXFwiP1xcXFxcXGFcXGJcXGZcXG5cXDBc
XHJcXHRcXHYiCisgICAgICAgICAgICAiXFx4RDNcXHg1NzZcXHg4RDNcXHhDNzREIGFcXDBcIiIs
CisgICAgICAgICAgICBQcmludChzdHIpKTsKK30KKworVEVTVChQcmludFdpZGVTdHJpbmdUZXN0
LCBTdHJpbmdBbWJpZ3VvdXNIZXgpIHsKKyAgLy8gc2FtZSBmb3Igd2lkZSBzdHJpbmdzLgorICBF
WFBFQ1RfRVEoIkxcIjBcXHgxMlwiIExcIjNcIiIsIFByaW50KDo6c3RkOjp3c3RyaW5nKEwiMFx4
MTIiIEwiMyIpKSk7CisgIEVYUEVDVF9FUSgiTFwibW1cXHg2XCIgTFwiYmFuYW5hc1wiIiwKKyAg
ICAgICAgICAgIFByaW50KDo6c3RkOjp3c3RyaW5nKEwibW1ceDYiIEwiYmFuYW5hcyIpKSk7Cisg
IEVYUEVDVF9FUSgiTFwiTk9NXFx4NlwiIExcIkJBTkFOQVwiIiwKKyAgICAgICAgICAgIFByaW50
KDo6c3RkOjp3c3RyaW5nKEwiTk9NXHg2IiBMIkJBTkFOQSIpKSk7CisgIEVYUEVDVF9FUSgiTFwi
IVxceDUtIVwiIiwgUHJpbnQoOjpzdGQ6OndzdHJpbmcoTCIhXHg1LSEiKSkpOworfQorI2VuZGlm
ICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKKworLy8gVGVzdHMgcHJpbnRpbmcgdHlwZXMgdGhh
dCBzdXBwb3J0IGdlbmVyaWMgc3RyZWFtaW5nIChpLmUuIHN0cmVhbWluZworLy8gdG8gc3RkOjpi
YXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+IGZvciBhbnkgdmFsaWQgQ2hhciBhbmQKKy8v
IENoYXJUcmFpdHMgdHlwZXMpLgorCisvLyBUZXN0cyBwcmludGluZyBhIG5vbi10ZW1wbGF0ZSB0
eXBlIHRoYXQgc3VwcG9ydHMgZ2VuZXJpYyBzdHJlYW1pbmcuCisKK2NsYXNzIEFsbG93c0dlbmVy
aWNTdHJlYW1pbmcge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyLCB0eXBlbmFtZSBDaGFy
VHJhaXRzPgorc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcGVyYXRvcjw8
KAorICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYgb3MsCisgICAgY29u
c3QgQWxsb3dzR2VuZXJpY1N0cmVhbWluZyYgLyogYSAqLykgeworICByZXR1cm4gb3MgPDwgIkFs
bG93c0dlbmVyaWNTdHJlYW1pbmciOworfQorCitURVNUKFByaW50VHlwZVdpdGhHZW5lcmljU3Ry
ZWFtaW5nVGVzdCwgTm9uVGVtcGxhdGVUeXBlKSB7CisgIEFsbG93c0dlbmVyaWNTdHJlYW1pbmcg
YTsKKyAgRVhQRUNUX0VRKCJBbGxvd3NHZW5lcmljU3RyZWFtaW5nIiwgUHJpbnQoYSkpOworfQor
CisvLyBUZXN0cyBwcmludGluZyBhIHRlbXBsYXRlIHR5cGUgdGhhdCBzdXBwb3J0cyBnZW5lcmlj
IHN0cmVhbWluZy4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBBbGxvd3NHZW5lcmlj
U3RyZWFtaW5nVGVtcGxhdGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyLCB0eXBlbmFt
ZSBDaGFyVHJhaXRzLCB0eXBlbmFtZSBUPgorc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJU
cmFpdHM+JiBvcGVyYXRvcjw8KAorICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJh
aXRzPiYgb3MsCisgICAgY29uc3QgQWxsb3dzR2VuZXJpY1N0cmVhbWluZ1RlbXBsYXRlPFQ+JiAv
KiBhICovKSB7CisgIHJldHVybiBvcyA8PCAiQWxsb3dzR2VuZXJpY1N0cmVhbWluZ1RlbXBsYXRl
IjsKK30KKworVEVTVChQcmludFR5cGVXaXRoR2VuZXJpY1N0cmVhbWluZ1Rlc3QsIFRlbXBsYXRl
VHlwZSkgeworICBBbGxvd3NHZW5lcmljU3RyZWFtaW5nVGVtcGxhdGU8aW50PiBhOworICBFWFBF
Q1RfRVEoIkFsbG93c0dlbmVyaWNTdHJlYW1pbmdUZW1wbGF0ZSIsIFByaW50KGEpKTsKK30KKwor
Ly8gVGVzdHMgcHJpbnRpbmcgYSB0eXBlIHRoYXQgc3VwcG9ydHMgZ2VuZXJpYyBzdHJlYW1pbmcg
YW5kIGNhbiBiZQorLy8gaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYW5vdGhlciBwcmludGFibGUg
dHlwZS4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBBbGxvd3NHZW5lcmljU3RyZWFt
aW5nQW5kSW1wbGljaXRDb252ZXJzaW9uVGVtcGxhdGUgeworIHB1YmxpYzoKKyAgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhciwgdHlwZW5hbWUgQ2hhclRyYWl0cywgdHlwZW5hbWUgVD4KK3N0ZDo6YmFzaWNfb3N0cmVh
bTxDaGFyLCBDaGFyVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICBzdGQ6OmJhc2ljX29zdHJlYW08
Q2hhciwgQ2hhclRyYWl0cz4mIG9zLAorICAgIGNvbnN0IEFsbG93c0dlbmVyaWNTdHJlYW1pbmdB
bmRJbXBsaWNpdENvbnZlcnNpb25UZW1wbGF0ZTxUPiYgLyogYSAqLykgeworICByZXR1cm4gb3Mg
PDwgIkFsbG93c0dlbmVyaWNTdHJlYW1pbmdBbmRJbXBsaWNpdENvbnZlcnNpb25UZW1wbGF0ZSI7
Cit9CisKK1RFU1QoUHJpbnRUeXBlV2l0aEdlbmVyaWNTdHJlYW1pbmdUZXN0LCBUeXBlSW1wbGlj
aXRseUNvbnZlcnRpYmxlKSB7CisgIEFsbG93c0dlbmVyaWNTdHJlYW1pbmdBbmRJbXBsaWNpdENv
bnZlcnNpb25UZW1wbGF0ZTxpbnQ+IGE7CisgIEVYUEVDVF9FUSgiQWxsb3dzR2VuZXJpY1N0cmVh
bWluZ0FuZEltcGxpY2l0Q29udmVyc2lvblRlbXBsYXRlIiwgUHJpbnQoYSkpOworfQorCisjaWYg
R1RFU1RfSEFTX0FCU0wKKworLy8gVGVzdHMgcHJpbnRpbmcgOjphYnNsOjpzdHJpbmdfdmlldy4K
KworVEVTVChQcmludFN0cmluZ1ZpZXdUZXN0LCBTaW1wbGVTdHJpbmdWaWV3KSB7CisgIGNvbnN0
IDo6YWJzbDo6c3RyaW5nX3ZpZXcgc3AgPSAiSGVsbG8iOworICBFWFBFQ1RfRVEoIlwiSGVsbG9c
IiIsIFByaW50KHNwKSk7Cit9CisKK1RFU1QoUHJpbnRTdHJpbmdWaWV3VGVzdCwgVW5wcmludGFi
bGVDaGFyYWN0ZXJzKSB7CisgIGNvbnN0IGNoYXIgc3RyW10gPSAiTlVMIChcMCkgYW5kIFxyXHQi
OworICBjb25zdCA6OmFic2w6OnN0cmluZ192aWV3IHNwKHN0ciwgc2l6ZW9mKHN0cikgLSAxKTsK
KyAgRVhQRUNUX0VRKCJcIk5VTCAoXFwwKSBhbmQgXFxyXFx0XCIiLCBQcmludChzcCkpOworfQor
CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCisKKy8vIFRlc3RzIHByaW50aW5nIFNUTCBjb250
YWluZXJzLgorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgRW1wdHlEZXF1ZSkgeworICBk
ZXF1ZTxjaGFyPiBlbXB0eTsKKyAgRVhQRUNUX0VRKCJ7fSIsIFByaW50KGVtcHR5KSk7Cit9CisK
K1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBOb25FbXB0eURlcXVlKSB7CisgIGRlcXVlPGlu
dD4gbm9uX2VtcHR5OworICBub25fZW1wdHkucHVzaF9iYWNrKDEpOworICBub25fZW1wdHkucHVz
aF9iYWNrKDMpOworICBFWFBFQ1RfRVEoInsgMSwgMyB9IiwgUHJpbnQobm9uX2VtcHR5KSk7Cit9
CisKKyNpZiBHVEVTVF9IQVNfVU5PUkRFUkVEX01BUF8KKworVEVTVChQcmludFN0bENvbnRhaW5l
clRlc3QsIE9uZUVsZW1lbnRIYXNoTWFwKSB7CisgIDo6c3RkOjp1bm9yZGVyZWRfbWFwPGludCwg
Y2hhcj4gbWFwMTsKKyAgbWFwMVsxXSA9ICdhJzsKKyAgRVhQRUNUX0VRKCJ7ICgxLCAnYScgKDk3
LCAweDYxKSkgfSIsIFByaW50KG1hcDEpKTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRl
c3QsIEhhc2hNdWx0aU1hcCkgeworICA6OnN0ZDo6dW5vcmRlcmVkX211bHRpbWFwPGludCwgYm9v
bD4gbWFwMTsKKyAgbWFwMS5pbnNlcnQobWFrZV9wYWlyKDUsIHRydWUpKTsKKyAgbWFwMS5pbnNl
cnQobWFrZV9wYWlyKDUsIGZhbHNlKSk7CisKKyAgLy8gRWxlbWVudHMgb2YgaGFzaF9tdWx0aW1h
cCBjYW4gYmUgcHJpbnRlZCBpbiBhbnkgb3JkZXIuCisgIGNvbnN0IHN0ZDo6c3RyaW5nIHJlc3Vs
dCA9IFByaW50KG1hcDEpOworICBFWFBFQ1RfVFJVRShyZXN1bHQgPT0gInsgKDUsIHRydWUpLCAo
NSwgZmFsc2UpIH0iIHx8CisgICAgICAgICAgICAgIHJlc3VsdCA9PSAieyAoNSwgZmFsc2UpLCAo
NSwgdHJ1ZSkgfSIpCisgICAgICAgICAgICAgICAgICA8PCAiIHdoZXJlIFByaW50KG1hcDEpIHJl
dHVybnMgXCIiIDw8IHJlc3VsdCA8PCAiXCIuIjsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNf
VU5PUkRFUkVEX01BUF8KKworI2lmIEdURVNUX0hBU19VTk9SREVSRURfU0VUXworCitURVNUKFBy
aW50U3RsQ29udGFpbmVyVGVzdCwgSGFzaFNldCkgeworICA6OnN0ZDo6dW5vcmRlcmVkX3NldDxp
bnQ+IHNldDE7CisgIHNldDEuaW5zZXJ0KDEpOworICBFWFBFQ1RfRVEoInsgMSB9IiwgUHJpbnQo
c2V0MSkpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgSGFzaE11bHRpU2V0KSB7
CisgIGNvbnN0IGludCBrU2l6ZSA9IDU7CisgIGludCBhW2tTaXplXSA9IHsgMSwgMSwgMiwgNSwg
MSB9OworICA6OnN0ZDo6dW5vcmRlcmVkX211bHRpc2V0PGludD4gc2V0MShhLCBhICsga1NpemUp
OworCisgIC8vIEVsZW1lbnRzIG9mIGhhc2hfbXVsdGlzZXQgY2FuIGJlIHByaW50ZWQgaW4gYW55
IG9yZGVyLgorICBjb25zdCBzdGQ6OnN0cmluZyByZXN1bHQgPSBQcmludChzZXQxKTsKKyAgY29u
c3Qgc3RkOjpzdHJpbmcgZXhwZWN0ZWRfcGF0dGVybiA9ICJ7IGQsIGQsIGQsIGQsIGQgfSI7ICAv
LyBkIG1lYW5zIGEgZGlnaXQuCisKKyAgLy8gVmVyaWZpZXMgdGhlIHJlc3VsdCBtYXRjaGVzIHRo
ZSBleHBlY3RlZCBwYXR0ZXJuOyBhbHNvIGV4dHJhY3RzCisgIC8vIHRoZSBudW1iZXJzIGluIHRo
ZSByZXN1bHQuCisgIEFTU0VSVF9FUShleHBlY3RlZF9wYXR0ZXJuLmxlbmd0aCgpLCByZXN1bHQu
bGVuZ3RoKCkpOworICBzdGQ6OnZlY3RvcjxpbnQ+IG51bWJlcnM7CisgIGZvciAoc2l6ZV90IGkg
PSAwOyBpICE9IHJlc3VsdC5sZW5ndGgoKTsgaSsrKSB7CisgICAgaWYgKGV4cGVjdGVkX3BhdHRl
cm5baV0gPT0gJ2QnKSB7CisgICAgICBBU1NFUlRfTkUoaXNkaWdpdChzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyPihyZXN1bHRbaV0pKSwgMCk7CisgICAgICBudW1iZXJzLnB1c2hfYmFjayhyZXN1
bHRbaV0gLSAnMCcpOworICAgIH0gZWxzZSB7CisgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfcGF0
dGVybltpXSwgcmVzdWx0W2ldKSA8PCAiIHdoZXJlIHJlc3VsdCBpcyAiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCByZXN1bHQ7CisgICAgfQorICB9
CisKKyAgLy8gTWFrZXMgc3VyZSB0aGUgcmVzdWx0IGNvbnRhaW5zIHRoZSByaWdodCBudW1iZXJz
LgorICBzdGQ6OnNvcnQobnVtYmVycy5iZWdpbigpLCBudW1iZXJzLmVuZCgpKTsKKyAgc3RkOjpz
b3J0KGEsIGEgKyBrU2l6ZSk7CisgIEVYUEVDVF9UUlVFKHN0ZDo6ZXF1YWwoYSwgYSArIGtTaXpl
LCBudW1iZXJzLmJlZ2luKCkpKTsKK30KKworI2VuZGlmICAvLyAgR1RFU1RfSEFTX1VOT1JERVJF
RF9TRVRfCisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBMaXN0KSB7CisgIGNvbnN0IHN0
ZDo6c3RyaW5nIGFbXSA9IHsiaGVsbG8iLCAid29ybGQifTsKKyAgY29uc3QgbGlzdDxzdGQ6OnN0
cmluZz4gc3RyaW5ncyhhLCBhICsgMik7CisgIEVYUEVDVF9FUSgieyBcImhlbGxvXCIsIFwid29y
bGRcIiB9IiwgUHJpbnQoc3RyaW5ncykpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVz
dCwgTWFwKSB7CisgIG1hcDxpbnQsIGJvb2w+IG1hcDE7CisgIG1hcDFbMV0gPSB0cnVlOworICBt
YXAxWzVdID0gZmFsc2U7CisgIG1hcDFbM10gPSB0cnVlOworICBFWFBFQ1RfRVEoInsgKDEsIHRy
dWUpLCAoMywgdHJ1ZSksICg1LCBmYWxzZSkgfSIsIFByaW50KG1hcDEpKTsKK30KKworVEVTVChQ
cmludFN0bENvbnRhaW5lclRlc3QsIE11bHRpTWFwKSB7CisgIG11bHRpbWFwPGJvb2wsIGludD4g
bWFwMTsKKyAgLy8gVGhlIG1ha2VfcGFpciB0ZW1wbGF0ZSBmdW5jdGlvbiB3b3VsZCBkZWR1Y2Ug
dGhlIHR5cGUgYXMKKyAgLy8gcGFpcjxib29sLCBpbnQ+IGhlcmUsIGFuZCBzaW5jZSB0aGUga2V5
IHBhcnQgaW4gYSBtdWx0aW1hcCBoYXMgdG8KKyAgLy8gYmUgY29uc3RhbnQsIHdpdGhvdXQgYSB0
ZW1wbGF0ZWQgY3RvciBpbiB0aGUgcGFpciBjbGFzcyAoYXMgaW4KKyAgLy8gbGliQ3N0ZCBvbiBT
b2xhcmlzKSwgbWFrZV9wYWlyIGNhbGwgd291bGQgZmFpbCB0byBjb21waWxlIGFzIG5vCisgIC8v
IGltcGxpY2l0IGNvbnZlcnNpb24gaXMgZm91bmQuICBUaHVzIGV4cGxpY2l0IHR5cGVuYW1lIGlz
IHVzZWQKKyAgLy8gaGVyZSBpbnN0ZWFkLgorICBtYXAxLmluc2VydChwYWlyPGNvbnN0IGJvb2ws
IGludD4odHJ1ZSwgMCkpOworICBtYXAxLmluc2VydChwYWlyPGNvbnN0IGJvb2wsIGludD4odHJ1
ZSwgMSkpOworICBtYXAxLmluc2VydChwYWlyPGNvbnN0IGJvb2wsIGludD4oZmFsc2UsIDIpKTsK
KyAgRVhQRUNUX0VRKCJ7IChmYWxzZSwgMiksICh0cnVlLCAwKSwgKHRydWUsIDEpIH0iLCBQcmlu
dChtYXAxKSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBTZXQpIHsKKyAgY29u
c3QgdW5zaWduZWQgaW50IGFbXSA9IHsgMywgMCwgNSB9OworICBzZXQ8dW5zaWduZWQgaW50PiBz
ZXQxKGEsIGEgKyAzKTsKKyAgRVhQRUNUX0VRKCJ7IDAsIDMsIDUgfSIsIFByaW50KHNldDEpKTsK
K30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIE11bHRpU2V0KSB7CisgIGNvbnN0IGlu
dCBhW10gPSB7IDEsIDEsIDIsIDUsIDEgfTsKKyAgbXVsdGlzZXQ8aW50PiBzZXQxKGEsIGEgKyA1
KTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDEsIDEsIDIsIDUgfSIsIFByaW50KHNldDEpKTsKK30KKwor
I2lmIEdURVNUX0hBU19TVERfRk9SV0FSRF9MSVNUXworCitURVNUKFByaW50U3RsQ29udGFpbmVy
VGVzdCwgU2luZ2x5TGlua2VkTGlzdCkgeworICBpbnQgYVtdID0geyA5LCAyLCA4IH07CisgIGNv
bnN0IHN0ZDo6Zm9yd2FyZF9saXN0PGludD4gaW50cyhhLCBhICsgMyk7CisgIEVYUEVDVF9FUSgi
eyA5LCAyLCA4IH0iLCBQcmludChpbnRzKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERf
Rk9SV0FSRF9MSVNUXworCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgUGFpcikgeworICBw
YWlyPGNvbnN0IGJvb2wsIGludD4gcCh0cnVlLCA1KTsKKyAgRVhQRUNUX0VRKCIodHJ1ZSwgNSki
LCBQcmludChwKSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBWZWN0b3IpIHsK
KyAgdmVjdG9yPGludD4gdjsKKyAgdi5wdXNoX2JhY2soMSk7CisgIHYucHVzaF9iYWNrKDIpOwor
ICBFWFBFQ1RfRVEoInsgMSwgMiB9IiwgUHJpbnQodikpOworfQorCitURVNUKFByaW50U3RsQ29u
dGFpbmVyVGVzdCwgTG9uZ1NlcXVlbmNlKSB7CisgIGNvbnN0IGludCBhWzEwMF0gPSB7IDEsIDIs
IDMgfTsKKyAgY29uc3QgdmVjdG9yPGludD4gdihhLCBhICsgMTAwKTsKKyAgRVhQRUNUX0VRKCJ7
IDEsIDIsIDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsICIKKyAg
ICAgICAgICAgICIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAu
Li4gfSIsIFByaW50KHYpKTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIE5lc3Rl
ZENvbnRhaW5lcikgeworICBjb25zdCBpbnQgYTFbXSA9IHsgMSwgMiB9OworICBjb25zdCBpbnQg
YTJbXSA9IHsgMywgNCwgNSB9OworICBjb25zdCBsaXN0PGludD4gbDEoYTEsIGExICsgMik7Cisg
IGNvbnN0IGxpc3Q8aW50PiBsMihhMiwgYTIgKyAzKTsKKworICB2ZWN0b3I8bGlzdDxpbnQ+ID4g
djsKKyAgdi5wdXNoX2JhY2sobDEpOworICB2LnB1c2hfYmFjayhsMik7CisgIEVYUEVDVF9FUSgi
eyB7IDEsIDIgfSwgeyAzLCA0LCA1IH0gfSIsIFByaW50KHYpKTsKK30KKworVEVTVChQcmludFN0
bENvbnRhaW5lclRlc3QsIE9uZURpbWVuc2lvbmFsTmF0aXZlQXJyYXkpIHsKKyAgY29uc3QgaW50
IGFbM10gPSB7IDEsIDIsIDMgfTsKKyAgTmF0aXZlQXJyYXk8aW50PiBiKGEsIDMsIFJlbGF0aW9u
VG9Tb3VyY2VSZWZlcmVuY2UoKSk7CisgIEVYUEVDVF9FUSgieyAxLCAyLCAzIH0iLCBQcmludChi
KSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBUd29EaW1lbnNpb25hbE5hdGl2
ZUFycmF5KSB7CisgIGNvbnN0IGludCBhWzJdWzNdID0geyB7IDEsIDIsIDMgfSwgeyA0LCA1LCA2
IH0gfTsKKyAgTmF0aXZlQXJyYXk8aW50WzNdPiBiKGEsIDIsIFJlbGF0aW9uVG9Tb3VyY2VSZWZl
cmVuY2UoKSk7CisgIEVYUEVDVF9FUSgieyB7IDEsIDIsIDMgfSwgeyA0LCA1LCA2IH0gfSIsIFBy
aW50KGIpKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIGNsYXNzIG5hbWVkIGl0ZXJhdG9yIGlzbid0
IHRyZWF0ZWQgYXMgYSBjb250YWluZXIuCisKK3N0cnVjdCBpdGVyYXRvciB7CisgIGNoYXIgeDsK
K307CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBJdGVyYXRvcikgeworICBpdGVyYXRv
ciBpdCA9IHt9OworICBFWFBFQ1RfRVEoIjEtYnl0ZSBvYmplY3QgPDAwPiIsIFByaW50KGl0KSk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBjbGFzcyBuYW1lZCBjb25zdF9pdGVyYXRvciBpc24ndCB0
cmVhdGVkIGFzIGEgY29udGFpbmVyLgorCitzdHJ1Y3QgY29uc3RfaXRlcmF0b3IgeworICBjaGFy
IHg7Cit9OworCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgQ29uc3RJdGVyYXRvcikgewor
ICBjb25zdF9pdGVyYXRvciBpdCA9IHt9OworICBFWFBFQ1RfRVEoIjEtYnl0ZSBvYmplY3QgPDAw
PiIsIFByaW50KGl0KSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCisvLyBUZXN0cyBw
cmludGluZyA6OnN0ZDo6dHIxOjp0dXBsZXMuCisKKy8vIFR1cGxlcyBvZiB2YXJpb3VzIGFyaXRp
ZXMuCitURVNUKFByaW50VHIxVHVwbGVUZXN0LCBWYXJpb3VzU2l6ZXMpIHsKKyAgOjpzdGQ6OnRy
MTo6dHVwbGU8PiB0MDsKKyAgRVhQRUNUX0VRKCIoKSIsIFByaW50KHQwKSk7CisKKyAgOjpzdGQ6
OnRyMTo6dHVwbGU8aW50PiB0MSg1KTsKKyAgRVhQRUNUX0VRKCIoNSkiLCBQcmludCh0MSkpOwor
CisgIDo6c3RkOjp0cjE6OnR1cGxlPGNoYXIsIGJvb2w+IHQyKCdhJywgdHJ1ZSk7CisgIEVYUEVD
VF9FUSgiKCdhJyAoOTcsIDB4NjEpLCB0cnVlKSIsIFByaW50KHQyKSk7CisKKyAgOjpzdGQ6OnRy
MTo6dHVwbGU8Ym9vbCwgaW50LCBpbnQ+IHQzKGZhbHNlLCAyLCAzKTsKKyAgRVhQRUNUX0VRKCIo
ZmFsc2UsIDIsIDMpIiwgUHJpbnQodDMpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBp
bnQsIGludCwgaW50PiB0NChmYWxzZSwgMiwgMywgNCk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAy
LCAzLCA0KSIsIFByaW50KHQ0KSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBp
bnQsIGludCwgYm9vbD4gdDUoZmFsc2UsIDIsIDMsIDQsIHRydWUpOworICBFWFBFQ1RfRVEoIihm
YWxzZSwgMiwgMywgNCwgdHJ1ZSkiLCBQcmludCh0NSkpOworCisgIDo6c3RkOjp0cjE6OnR1cGxl
PGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludD4gdDYoZmFsc2UsIDIsIDMsIDQsIHRydWUs
IDYpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNikiLCBQcmludCh0Nikp
OworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludCwg
aW50PiB0NygKKyAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3KTsKKyAgRVhQRUNUX0VR
KCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcpIiwgUHJpbnQodDcpKTsKKworICA6OnN0ZDo6
dHIxOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgYm9vbD4gdDgo
CisgICAgICBmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSk7CisgIEVYUEVDVF9FUSgi
KGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlKSIsIFByaW50KHQ4KSk7CisKKyAgOjpz
dGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGJvb2ws
IGludD4gdDkoCisgICAgICBmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSwgOSk7Cisg
IEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlLCA5KSIsIFByaW50
KHQ5KSk7CisKKyAgY29uc3QgY2hhciogY29uc3Qgc3RyID0gIjgiOworICAvLyBWQysrIDIwMTAn
cyBpbXBsZW1lbnRhdGlvbiBvZiB0dXBsZSBvZiBDKysweCBpcyBkZWZpY2llbnQsIHJlcXVpcmlu
ZworICAvLyBhbiBleHBsaWNpdCB0eXBlIGNhc3Qgb2YgTlVMTCB0byBiZSB1c2VkLgorICA6OnN0
ZDo6dHIxOjp0dXBsZTxib29sLCBjaGFyLCBzaG9ydCwgdGVzdGluZzo6aW50ZXJuYWw6OkludDMy
LCAgLy8gTk9MSU5UCisgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OmludGVybmFsOjpJbnQ2
NCwgZmxvYXQsIGRvdWJsZSwgY29uc3QgY2hhciosIHZvaWQqLAorICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnN0cmluZz4KKyAgICAgIHQxMChmYWxzZSwgJ2EnLCBzdGF0aWNfY2FzdDxzaG9ydD4o
MyksIDQsIDUsIDEuNUYsIC0yLjUsIHN0ciwgIC8vIE5PTElOVAorICAgICAgICAgIEltcGxpY2l0
Q2FzdF88dm9pZCo+KE5VTEwpLCAiMTAiKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsICdhJyAoOTcs
IDB4NjEpLCAzLCA0LCA1LCAxLjUsIC0yLjUsICIgKyBQcmludFBvaW50ZXIoc3RyKSArCisgICAg
ICAgICAgICAiIHBvaW50aW5nIHRvIFwiOFwiLCBOVUxMLCBcIjEwXCIpIiwKKyAgICAgICAgICAg
IFByaW50KHQxMCkpOworfQorCisvLyBOZXN0ZWQgdHVwbGVzLgorVEVTVChQcmludFRyMVR1cGxl
VGVzdCwgTmVzdGVkVHVwbGUpIHsKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8IDo6c3RkOjp0cjE6OnR1
cGxlPGludCwgYm9vbD4sIGNoYXI+IG5lc3RlZCgKKyAgICAgIDo6c3RkOjp0cjE6Om1ha2VfdHVw
bGUoNSwgdHJ1ZSksICdhJyk7CisgIEVYUEVDVF9FUSgiKCg1LCB0cnVlKSwgJ2EnICg5NywgMHg2
MSkpIiwgUHJpbnQobmVzdGVkKSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBM
RQorCisjaWYgR1RFU1RfSEFTX1NURF9UVVBMRV8KKy8vIFRlc3RzIHByaW50aW5nIDo6c3RkOjp0
dXBsZXMuCisKKy8vIFR1cGxlcyBvZiB2YXJpb3VzIGFyaXRpZXMuCitURVNUKFByaW50U3RkVHVw
bGVUZXN0LCBWYXJpb3VzU2l6ZXMpIHsKKyAgOjpzdGQ6OnR1cGxlPD4gdDA7CisgIEVYUEVDVF9F
USgiKCkiLCBQcmludCh0MCkpOworCisgIDo6c3RkOjp0dXBsZTxpbnQ+IHQxKDUpOworICBFWFBF
Q1RfRVEoIig1KSIsIFByaW50KHQxKSk7CisKKyAgOjpzdGQ6OnR1cGxlPGNoYXIsIGJvb2w+IHQy
KCdhJywgdHJ1ZSk7CisgIEVYUEVDVF9FUSgiKCdhJyAoOTcsIDB4NjEpLCB0cnVlKSIsIFByaW50
KHQyKSk7CisKKyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwgaW50PiB0MyhmYWxzZSwgMiwgMyk7
CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzKSIsIFByaW50KHQzKSk7CisKKyAgOjpzdGQ6OnR1
cGxlPGJvb2wsIGludCwgaW50LCBpbnQ+IHQ0KGZhbHNlLCAyLCAzLCA0KTsKKyAgRVhQRUNUX0VR
KCIoZmFsc2UsIDIsIDMsIDQpIiwgUHJpbnQodDQpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwg
aW50LCBpbnQsIGludCwgYm9vbD4gdDUoZmFsc2UsIDIsIDMsIDQsIHRydWUpOworICBFWFBFQ1Rf
RVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSkiLCBQcmludCh0NSkpOworCisgIDo6c3RkOjp0dXBs
ZTxib29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQ+IHQ2KGZhbHNlLCAyLCAzLCA0LCB0cnVl
LCA2KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYpIiwgUHJpbnQodDYp
KTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQ+
IHQ3KAorICAgICAgZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcpOworICBFWFBFQ1RfRVEoIihm
YWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNykiLCBQcmludCh0NykpOworCisgIDo6c3RkOjp0dXBs
ZTxib29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgYm9vbD4gdDgoCisgICAgICBm
YWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAy
LCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlKSIsIFByaW50KHQ4KSk7CisKKyAgOjpzdGQ6OnR1cGxl
PGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBib29sLCBpbnQ+IHQ5KAorICAg
ICAgZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUsIDkpOworICBFWFBFQ1RfRVEoIihm
YWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSwgOSkiLCBQcmludCh0OSkpOworCisgIGNv
bnN0IGNoYXIqIGNvbnN0IHN0ciA9ICI4IjsKKyAgLy8gVkMrKyAyMDEwJ3MgaW1wbGVtZW50YXRp
b24gb2YgdHVwbGUgb2YgQysrMHggaXMgZGVmaWNpZW50LCByZXF1aXJpbmcKKyAgLy8gYW4gZXhw
bGljaXQgdHlwZSBjYXN0IG9mIE5VTEwgdG8gYmUgdXNlZC4KKyAgOjpzdGQ6OnR1cGxlPGJvb2ws
IGNoYXIsIHNob3J0LCB0ZXN0aW5nOjppbnRlcm5hbDo6SW50MzIsICAvLyBOT0xJTlQKKyAgICAg
ICAgICAgICAgIHRlc3Rpbmc6OmludGVybmFsOjpJbnQ2NCwgZmxvYXQsIGRvdWJsZSwgY29uc3Qg
Y2hhciosIHZvaWQqLAorICAgICAgICAgICAgICAgc3RkOjpzdHJpbmc+CisgICAgICB0MTAoZmFs
c2UsICdhJywgc3RhdGljX2Nhc3Q8c2hvcnQ+KDMpLCA0LCA1LCAxLjVGLCAtMi41LCBzdHIsICAv
LyBOT0xJTlQKKyAgICAgICAgICBJbXBsaWNpdENhc3RfPHZvaWQqPihOVUxMKSwgIjEwIik7Cisg
IEVYUEVDVF9FUSgiKGZhbHNlLCAnYScgKDk3LCAweDYxKSwgMywgNCwgNSwgMS41LCAtMi41LCAi
ICsgUHJpbnRQb2ludGVyKHN0cikgKworICAgICAgICAgICAgIiBwb2ludGluZyB0byBcIjhcIiwg
TlVMTCwgXCIxMFwiKSIsCisgICAgICAgICAgICBQcmludCh0MTApKTsKK30KKworLy8gTmVzdGVk
IHR1cGxlcy4KK1RFU1QoUHJpbnRTdGRUdXBsZVRlc3QsIE5lc3RlZFR1cGxlKSB7CisgIDo6c3Rk
Ojp0dXBsZTwgOjpzdGQ6OnR1cGxlPGludCwgYm9vbD4sIGNoYXI+IG5lc3RlZCgKKyAgICAgIDo6
c3RkOjptYWtlX3R1cGxlKDUsIHRydWUpLCAnYScpOworICBFWFBFQ1RfRVEoIigoNSwgdHJ1ZSks
ICdhJyAoOTcsIDB4NjEpKSIsIFByaW50KG5lc3RlZCkpOworfQorCisjZW5kaWYgIC8vIEdURVNU
X0xBTkdfQ1hYMTEKKworI2lmIEdURVNUX0xBTkdfQ1hYMTEKK1RFU1QoUHJpbnROdWxscHRyVCwg
QmFzaWMpIHsKKyAgRVhQRUNUX0VRKCIobnVsbHB0cikiLCBQcmludChudWxscHRyKSk7Cit9Cisj
ZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKworLy8gVGVzdHMgcHJpbnRpbmcgdXNlci1kZWZp
bmVkIHVucHJpbnRhYmxlIHR5cGVzLgorCisvLyBVbnByaW50YWJsZSB0eXBlcyBpbiB0aGUgZ2xv
YmFsIG5hbWVzcGFjZS4KK1RFU1QoUHJpbnRVbnByaW50YWJsZVR5cGVUZXN0LCBJbkdsb2JhbE5h
bWVzcGFjZSkgeworICBFWFBFQ1RfRVEoIjEtYnl0ZSBvYmplY3QgPDAwPiIsCisgICAgICAgICAg
ICBQcmludChVbnByaW50YWJsZVRlbXBsYXRlSW5HbG9iYWw8Y2hhcj4oKSkpOworfQorCisvLyBV
bnByaW50YWJsZSB0eXBlcyBpbiBhIHVzZXIgbmFtZXNwYWNlLgorVEVTVChQcmludFVucHJpbnRh
YmxlVHlwZVRlc3QsIEluVXNlck5hbWVzcGFjZSkgeworICBFWFBFQ1RfRVEoIjE2LWJ5dGUgb2Jq
ZWN0IDxFRi0xMiAwMC0wMCAzNC1BQiAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMD4iLAor
ICAgICAgICAgICAgUHJpbnQoOjpmb286OlVucHJpbnRhYmxlSW5Gb28oKSkpOworfQorCisvLyBV
bnByaW50YWJsZSB0eXBlcyBhcmUgdGhhdCB0b28gYmlnIHRvIGJlIHByaW50ZWQgY29tcGxldGVs
eS4KKworc3RydWN0IEJpZyB7CisgIEJpZygpIHsgbWVtc2V0KGFycmF5LCAwLCBzaXplb2YoYXJy
YXkpKTsgfQorICBjaGFyIGFycmF5WzI1N107Cit9OworCitURVNUKFByaW50VW5wcml0YWJsZVR5
cGVUZXN0LCBCaWdPYmplY3QpIHsKKyAgRVhQRUNUX0VRKCIyNTctYnl0ZSBvYmplY3QgPDAwLTAw
IDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwICIKKyAgICAgICAgICAgICIwMC0wMCAwMC0w
MCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAiCisgICAg
ICAgICAgICAiMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAg
MDAtMDAgMDAtMDAgIgorICAgICAgICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAw
IDAwLTAwIC4uLiAwMC0wMCAwMC0wMCAwMC0wMCAiCisgICAgICAgICAgICAiMDAtMDAgMDAtMDAg
MDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgIgorICAgICAg
ICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAw
LTAwIDAwLTAwICIKKyAgICAgICAgICAgICIwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAw
MC0wMCAwMC0wMCAwMC0wMCAwMD4iLAorICAgICAgICAgICAgUHJpbnQoQmlnKCkpKTsKK30KKwor
Ly8gVGVzdHMgcHJpbnRpbmcgdXNlci1kZWZpbmVkIHN0cmVhbWFibGUgdHlwZXMuCisKKy8vIFN0
cmVhbWFibGUgdHlwZXMgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCitURVNUKFByaW50U3RyZWFt
YWJsZVR5cGVUZXN0LCBJbkdsb2JhbE5hbWVzcGFjZSkgeworICBTdHJlYW1hYmxlSW5HbG9iYWwg
eDsKKyAgRVhQRUNUX0VRKCJTdHJlYW1hYmxlSW5HbG9iYWwiLCBQcmludCh4KSk7CisgIEVYUEVD
VF9FUSgiU3RyZWFtYWJsZUluR2xvYmFsKiIsIFByaW50KCZ4KSk7Cit9CisKKy8vIFByaW50YWJs
ZSB0ZW1wbGF0ZSB0eXBlcyBpbiBhIHVzZXIgbmFtZXNwYWNlLgorVEVTVChQcmludFN0cmVhbWFi
bGVUeXBlVGVzdCwgVGVtcGxhdGVUeXBlSW5Vc2VyTmFtZXNwYWNlKSB7CisgIEVYUEVDVF9FUSgi
U3RyZWFtYWJsZVRlbXBsYXRlSW5Gb286IDAiLAorICAgICAgICAgICAgUHJpbnQoOjpmb286OlN0
cmVhbWFibGVUZW1wbGF0ZUluRm9vPGludD4oKSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyBh
IHVzZXItZGVmaW5lZCByZWN1cnNpdmUgY29udGFpbmVyIHR5cGUgdGhhdCBoYXMgYSA8PAorLy8g
b3BlcmF0b3IuCitURVNUKFByaW50U3RyZWFtYWJsZVR5cGVUZXN0LCBQYXRoTGlrZUluVXNlck5h
bWVzcGFjZSkgeworICA6OmZvbzo6UGF0aExpa2UgeDsKKyAgRVhQRUNUX0VRKCJTdHJlYW1hYmxl
LVBhdGhMaWtlIiwgUHJpbnQoeCkpOworICBjb25zdCA6OmZvbzo6UGF0aExpa2UgY3g7CisgIEVY
UEVDVF9FUSgiU3RyZWFtYWJsZS1QYXRoTGlrZSIsIFByaW50KGN4KSk7Cit9CisKKy8vIFRlc3Rz
IHByaW50aW5nIHVzZXItZGVmaW5lZCB0eXBlcyB0aGF0IGhhdmUgYSBQcmludFRvKCkgZnVuY3Rp
b24uCitURVNUKFByaW50UHJpbnRhYmxlVHlwZVRlc3QsIEluVXNlck5hbWVzcGFjZSkgeworICBF
WFBFQ1RfRVEoIlByaW50YWJsZVZpYVByaW50VG86IDAiLAorICAgICAgICAgICAgUHJpbnQoOjpm
b286OlByaW50YWJsZVZpYVByaW50VG8oKSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyBhIHBv
aW50ZXIgdG8gYSB1c2VyLWRlZmluZWQgdHlwZSB0aGF0IGhhcyBhIDw8CisvLyBvcGVyYXRvciBm
b3IgaXRzIHBvaW50ZXIuCitURVNUKFByaW50UHJpbnRhYmxlVHlwZVRlc3QsIFBvaW50ZXJJblVz
ZXJOYW1lc3BhY2UpIHsKKyAgOjpmb286OlBvaW50ZXJQcmludGFibGUgeDsKKyAgRVhQRUNUX0VR
KCJQb2ludGVyUHJpbnRhYmxlKiIsIFByaW50KCZ4KSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5n
IHVzZXItZGVmaW5lZCBjbGFzcyB0ZW1wbGF0ZSB0aGF0IGhhdmUgYSBQcmludFRvKCkgZnVuY3Rp
b24uCitURVNUKFByaW50UHJpbnRhYmxlVHlwZVRlc3QsIFRlbXBsYXRlSW5Vc2VyTmFtZXNwYWNl
KSB7CisgIEVYUEVDVF9FUSgiUHJpbnRhYmxlVmlhUHJpbnRUb1RlbXBsYXRlOiA1IiwKKyAgICAg
ICAgICAgIFByaW50KDo6Zm9vOjpQcmludGFibGVWaWFQcmludFRvVGVtcGxhdGU8aW50Pig1KSkp
OworfQorCisvLyBUZXN0cyB0aGF0IHRoZSB1bml2ZXJzYWwgcHJpbnRlciBwcmludHMgYm90aCB0
aGUgYWRkcmVzcyBhbmQgdGhlCisvLyB2YWx1ZSBvZiBhIHJlZmVyZW5jZS4KK1RFU1QoUHJpbnRS
ZWZlcmVuY2VUZXN0LCBQcmludHNBZGRyZXNzQW5kVmFsdWUpIHsKKyAgaW50IG4gPSA1OworICBF
WFBFQ1RfRVEoIkAiICsgUHJpbnRQb2ludGVyKCZuKSArICIgNSIsIFByaW50QnlSZWYobikpOwor
CisgIGludCBhWzJdWzNdID0geworICAgIHsgMCwgMSwgMiB9LAorICAgIHsgMywgNCwgNSB9Cisg
IH07CisgIEVYUEVDVF9FUSgiQCIgKyBQcmludFBvaW50ZXIoYSkgKyAiIHsgeyAwLCAxLCAyIH0s
IHsgMywgNCwgNSB9IH0iLAorICAgICAgICAgICAgUHJpbnRCeVJlZihhKSk7CisKKyAgY29uc3Qg
Ojpmb286OlVucHJpbnRhYmxlSW5Gb28geDsKKyAgRVhQRUNUX0VRKCJAIiArIFByaW50UG9pbnRl
cigmeCkgKyAiIDE2LWJ5dGUgb2JqZWN0ICIKKyAgICAgICAgICAgICI8RUYtMTIgMDAtMDAgMzQt
QUIgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDA+IiwKKyAgICAgICAgICAgIFByaW50QnlS
ZWYoeCkpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSB1bml2ZXJzYWwgcHJpbnRlciBwcmludHMg
YSBmdW5jdGlvbiBwb2ludGVyIHBhc3NlZCBieQorLy8gcmVmZXJlbmNlLgorVEVTVChQcmludFJl
ZmVyZW5jZVRlc3QsIEhhbmRsZXNGdW5jdGlvblBvaW50ZXIpIHsKKyAgdm9pZCAoKmZwKShpbnQg
bikgPSAmTXlGdW5jdGlvbjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZnBfcG9pbnRlcl9zdHJpbmcg
PQorICAgICAgUHJpbnRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KCZmcCkp
OworICAvLyBXZSBjYW5ub3QgZGlyZWN0bHkgY2FzdCAmTXlGdW5jdGlvbiB0byBjb25zdCB2b2lk
KiBiZWNhdXNlIHRoZQorICAvLyBzdGFuZGFyZCBkaXNhbGxvd3MgY2FzdGluZyBiZXR3ZWVuIHBv
aW50ZXJzIHRvIGZ1bmN0aW9ucyBhbmQKKyAgLy8gcG9pbnRlcnMgdG8gb2JqZWN0cywgYW5kIHNv
bWUgY29tcGlsZXJzIChlLmcuIEdDQyAzLjQpIGVuZm9yY2UKKyAgLy8gdGhpcyBsaW1pdGF0aW9u
LgorICBjb25zdCBzdGQ6OnN0cmluZyBmcF9zdHJpbmcgPSBQcmludFBvaW50ZXIocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB2b2lkKj4oCisgICAgICByZWludGVycHJldF9jYXN0PGludGVybmFsOjpC
aWdnZXN0SW50PihmcCkpKTsKKyAgRVhQRUNUX0VRKCJAIiArIGZwX3BvaW50ZXJfc3RyaW5nICsg
IiAiICsgZnBfc3RyaW5nLAorICAgICAgICAgICAgUHJpbnRCeVJlZihmcCkpOworfQorCisvLyBU
ZXN0cyB0aGF0IHRoZSB1bml2ZXJzYWwgcHJpbnRlciBwcmludHMgYSBtZW1iZXIgZnVuY3Rpb24g
cG9pbnRlcgorLy8gcGFzc2VkIGJ5IHJlZmVyZW5jZS4KK1RFU1QoUHJpbnRSZWZlcmVuY2VUZXN0
LCBIYW5kbGVzTWVtYmVyRnVuY3Rpb25Qb2ludGVyKSB7CisgIGludCAoRm9vOjoqcCkoY2hhciBj
aCkgPSAmRm9vOjpNeU1ldGhvZDsKKyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KAorICAgICAgUHJp
bnRCeVJlZihwKSwKKyAgICAgICJAIiArIFByaW50UG9pbnRlcihyZWludGVycHJldF9jYXN0PGNv
bnN0IHZvaWQqPigmcCkpICsgIiAiICsKKyAgICAgICAgICBQcmludChzaXplb2YocCkpICsgIi1i
eXRlIG9iamVjdCAiKSk7CisKKyAgY2hhciAoRm9vOjoqcDIpKGludCBuKSA9ICZGb286Ok15Vmly
dHVhbE1ldGhvZDsKKyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KAorICAgICAgUHJpbnRCeVJlZihw
MiksCisgICAgICAiQCIgKyBQcmludFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4oJnAyKSkgKyAiICIgKworICAgICAgICAgIFByaW50KHNpemVvZihwMikpICsgIi1ieXRlIG9i
amVjdCAiKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIHVuaXZlcnNhbCBwcmludGVyIHByaW50
cyBhIG1lbWJlciB2YXJpYWJsZSBwb2ludGVyCisvLyBwYXNzZWQgYnkgcmVmZXJlbmNlLgorVEVT
VChQcmludFJlZmVyZW5jZVRlc3QsIEhhbmRsZXNNZW1iZXJWYXJpYWJsZVBvaW50ZXIpIHsKKyAg
aW50IEZvbzo6KnAgPSAmRm9vOjp2YWx1ZTsgIC8vIE5PTElOVAorICBFWFBFQ1RfVFJVRShIYXNQ
cmVmaXgoCisgICAgICBQcmludEJ5UmVmKHApLAorICAgICAgIkAiICsgUHJpbnRQb2ludGVyKCZw
KSArICIgIiArIFByaW50KHNpemVvZihwKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKK30KKworLy8g
VGVzdHMgdGhhdCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoKSwgd2hpY2ggaXMg
dXNlZCB0byBwcmludAorLy8gYW4gb3BlcmFuZCBpbiBhIGNvbXBhcmlzb24gYXNzZXJ0aW9uIChl
LmcuIEFTU0VSVF9FUSkgd2hlbiB0aGUgYXNzZXJ0aW9uCisvLyBmYWlscywgZm9ybWF0cyB0aGUg
b3BlcmFuZCBpbiB0aGUgZGVzaXJlZCB3YXkuCisKKy8vIHNjYWxhcgorVEVTVChGb3JtYXRGb3JD
b21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvclNjYWxhcikgeworICBFWFBFQ1Rf
U1RSRVEoIjEyMyIsCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2UoMTIzLCAxMjQpLmNfc3RyKCkpOworfQorCisvLyBub24tY2hhciBwb2ludGVyCitURVNU
KEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yTm9uQ2hhclBv
aW50ZXIpIHsKKyAgaW50IG4gPSAwOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKCZuKSwKKyAg
ICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSgmbiwgJm4pLmNfc3Ry
KCkpOworfQorCisvLyBub24tY2hhciBhcnJheQorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFp
bHVyZU1lc3NhZ2VUZXN0LCBGb3JtYXRzTm9uQ2hhckFycmF5QXNQb2ludGVyKSB7CisgIC8vIElu
IGV4cHJlc3Npb24gJ2FycmF5ID09IHgnLCAnYXJyYXknIGlzIGNvbXBhcmVkIGJ5IHBvaW50ZXIu
CisgIC8vIFRoZXJlZm9yZSB3ZSB3YW50IHRvIHByaW50IGFuIGFycmF5IG9wZXJhbmQgYXMgYSBw
b2ludGVyLgorICBpbnQgbltdID0geyAxLCAyLCAzIH07CisgIEVYUEVDVF9FUShQcmludFBvaW50
ZXIobiksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uobiwg
bikuY19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIGZvcm1hdHRpbmcgYSBjaGFyIHBvaW50ZXIgd2hl
biBpdCdzIGNvbXBhcmVkIHdpdGggYW5vdGhlciBwb2ludGVyLgorLy8gSW4gdGhpcyBjYXNlIHdl
IHdhbnQgdG8gcHJpbnQgaXQgYXMgYSByYXcgcG9pbnRlciwgYXMgdGhlIGNvbXBhcmlzb24gaXMg
YnkKKy8vIHBvaW50ZXIuCisKKy8vIGNoYXIgcG9pbnRlciB2cyBwb2ludGVyCitURVNUKEZvcm1h
dEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhclBvaW50ZXJWc1Bv
aW50ZXIpIHsKKyAgLy8gSW4gZXhwcmVzc2lvbiAncCA9PSB4Jywgd2hlcmUgJ3AnIGFuZCAneCcg
YXJlIChjb25zdCBvciBub3QpIGNoYXIKKyAgLy8gcG9pbnRlcnMsIHRoZSBvcGVyYW5kcyBhcmUg
Y29tcGFyZWQgYnkgcG9pbnRlci4gIFRoZXJlZm9yZSB3ZQorICAvLyB3YW50IHRvIHByaW50ICdw
JyBhcyBhIHBvaW50ZXIgaW5zdGVhZCBvZiBhIEMgc3RyaW5nICh3ZSBkb24ndAorICAvLyBldmVu
IGtub3cgaWYgaXQncyBzdXBwb3NlZCB0byBwb2ludCB0byBhIHZhbGlkIEMgc3RyaW5nKS4KKwor
ICAvLyBjb25zdCBjaGFyKgorICBjb25zdCBjaGFyKiBzID0gImhlbGxvIjsKKyAgRVhQRUNUX0VR
KFByaW50UG9pbnRlcihzKSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJl
TWVzc2FnZShzLCBzKS5jX3N0cigpKTsKKworICAvLyBjaGFyKgorICBjaGFyIGNoID0gJ2EnOwor
ICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKCZjaCksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21w
YXJpc29uRmFpbHVyZU1lc3NhZ2UoJmNoLCAmY2gpLmNfc3RyKCkpOworfQorCisvLyB3Y2hhcl90
IHBvaW50ZXIgdnMgcG9pbnRlcgorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2VUZXN0LCBXb3Jrc0ZvcldDaGFyUG9pbnRlclZzUG9pbnRlcikgeworICAvLyBJbiBleHByZXNz
aW9uICdwID09IHgnLCB3aGVyZSAncCcgYW5kICd4JyBhcmUgKGNvbnN0IG9yIG5vdCkgY2hhcgor
ICAvLyBwb2ludGVycywgdGhlIG9wZXJhbmRzIGFyZSBjb21wYXJlZCBieSBwb2ludGVyLiAgVGhl
cmVmb3JlIHdlCisgIC8vIHdhbnQgdG8gcHJpbnQgJ3AnIGFzIGEgcG9pbnRlciBpbnN0ZWFkIG9m
IGEgd2lkZSBDIHN0cmluZyAod2UgZG9uJ3QKKyAgLy8gZXZlbiBrbm93IGlmIGl0J3Mgc3VwcG9z
ZWQgdG8gcG9pbnQgdG8gYSB2YWxpZCB3aWRlIEMgc3RyaW5nKS4KKworICAvLyBjb25zdCB3Y2hh
cl90KgorICBjb25zdCB3Y2hhcl90KiBzID0gTCJoZWxsbyI7CisgIEVYUEVDVF9FUShQcmludFBv
aW50ZXIocyksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uo
cywgcykuY19zdHIoKSk7CisKKyAgLy8gd2NoYXJfdCoKKyAgd2NoYXJfdCBjaCA9IEwnYSc7Cisg
IEVYUEVDVF9FUShQcmludFBvaW50ZXIoJmNoKSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBh
cmlzb25GYWlsdXJlTWVzc2FnZSgmY2gsICZjaCkuY19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIGZv
cm1hdHRpbmcgYSBjaGFyIHBvaW50ZXIgd2hlbiBpdCdzIGNvbXBhcmVkIHRvIGEgc3RyaW5nIG9i
amVjdC4KKy8vIEluIHRoaXMgY2FzZSB3ZSB3YW50IHRvIHByaW50IHRoZSBjaGFyIHBvaW50ZXIg
YXMgYSBDIHN0cmluZy4KKworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisvLyBjaGFyIHBv
aW50ZXIgdnMgOjpzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdl
VGVzdCwgV29ya3NGb3JDaGFyUG9pbnRlclZzU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIqIHMgPSAi
aGVsbG8gXCJ3b3JsZCI7CisgIEVYUEVDVF9TVFJFUSgiXCJoZWxsbyBcXFwid29ybGRcIiIsICAv
LyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgOjpzdHJpbmcoKSkuY19zdHIoKSk7
CisKKyAgLy8gY2hhcioKKyAgY2hhciBzdHJbXSA9ICJoaVwxIjsKKyAgY2hhciogcCA9IHN0cjsK
KyAgRVhQRUNUX1NUUkVRKCJcImhpXFx4MVwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91
bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJl
TWVzc2FnZShwLCA6OnN0cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisvLyBjaGFyIHBv
aW50ZXIgdnMgc3RkOjpzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNz
YWdlVGVzdCwgV29ya3NGb3JDaGFyUG9pbnRlclZzU3RkU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIq
IHMgPSAiaGVsbG8gXCJ3b3JsZCI7CisgIEVYUEVDVF9TVFJFUSgiXCJoZWxsbyBcXFwid29ybGRc
IiIsICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAg
ICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgOjpzdGQ6OnN0cmluZygp
KS5jX3N0cigpKTsKKworICAvLyBjaGFyKgorICBjaGFyIHN0cltdID0gImhpXDEiOworICBjaGFy
KiBwID0gc3RyOworICBFWFBFQ1RfU1RSRVEoIlwiaGlcXHgxXCIiLCAgLy8gVGhlIHN0cmluZyBj
b250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlKHAsIDo6c3RkOjpzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisKKyNp
ZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKKy8vIHdjaGFyX3QgcG9pbnRlciB2cyA6OndzdHJp
bmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JX
Q2hhclBvaW50ZXJWc1dTdHJpbmcpIHsKKyAgY29uc3Qgd2NoYXJfdCogcyA9IEwiaGkgXCJ3b3Js
ZCI7CisgIEVYUEVDVF9TVFJFUSgiTFwiaGkgXFxcIndvcmxkXCIiLCAgLy8gVGhlIHN0cmluZyBj
b250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlKHMsIDo6d3N0cmluZygpKS5jX3N0cigpKTsKKworICAvLyB3Y2hh
cl90KgorICB3Y2hhcl90IHN0cltdID0gTCJoaVwxIjsKKyAgd2NoYXJfdCogcCA9IHN0cjsKKyAg
RVhQRUNUX1NUUkVRKCJMXCJoaVxceDFcIiIsICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxk
IGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2UocCwgOjp3c3RyaW5nKCkpLmNfc3RyKCkpOworfQorI2VuZGlmCisKKyNpZiBHVEVTVF9I
QVNfU1REX1dTVFJJTkcKKy8vIHdjaGFyX3QgcG9pbnRlciB2cyBzdGQ6OndzdHJpbmcKK1RFU1Qo
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhclBvaW50
ZXJWc1N0ZFdTdHJpbmcpIHsKKyAgY29uc3Qgd2NoYXJfdCogcyA9IEwiaGkgXCJ3b3JsZCI7Cisg
IEVYUEVDVF9TVFJFUSgiTFwiaGkgXFxcIndvcmxkXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50
IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZh
aWx1cmVNZXNzYWdlKHMsIDo6c3RkOjp3c3RyaW5nKCkpLmNfc3RyKCkpOworCisgIC8vIHdjaGFy
X3QqCisgIHdjaGFyX3Qgc3RyW10gPSBMImhpXDEiOworICB3Y2hhcl90KiBwID0gc3RyOworICBF
WFBFQ1RfU1RSRVEoIkxcImhpXFx4MVwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQg
YmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVz
c2FnZShwLCA6OnN0ZDo6d3N0cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisvLyBUZXN0
cyBmb3JtYXR0aW5nIGEgY2hhciBhcnJheSB3aGVuIGl0J3MgY29tcGFyZWQgd2l0aCBhIHBvaW50
ZXIgb3IgYXJyYXkuCisvLyBJbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBwcmludCB0aGUgYXJyYXkg
YXMgYSByb3cgcG9pbnRlciwgYXMgdGhlIGNvbXBhcmlzb24KKy8vIGlzIGJ5IHBvaW50ZXIuCisK
Ky8vIGNoYXIgYXJyYXkgdnMgcG9pbnRlcgorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVy
ZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVZzUG9pbnRlcikgeworICBjaGFyIHN0cltd
ID0gImhpIFwid29ybGRcIiI7CisgIGNoYXIqIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoUHJpbnRQ
b2ludGVyKHN0ciksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2Uoc3RyLCBwKS5jX3N0cigpKTsKK30KKworLy8gY2hhciBhcnJheSB2cyBjaGFyIGFycmF5CitU
RVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhckFy
cmF5VnNDaGFyQXJyYXkpIHsKKyAgY29uc3QgY2hhciBzdHJbXSA9ICJoaSBcIndvcmxkXCIiOwor
ICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHN0ciksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21w
YXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCBzdHIpLmNfc3RyKCkpOworfQorCisvLyB3Y2hhcl90
IGFycmF5IHZzIHBvaW50ZXIKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdl
VGVzdCwgV29ya3NGb3JXQ2hhckFycmF5VnNQb2ludGVyKSB7CisgIHdjaGFyX3Qgc3RyW10gPSBM
ImhpIFwid29ybGRcIiI7CisgIHdjaGFyX3QqIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoUHJpbnRQ
b2ludGVyKHN0ciksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2Uoc3RyLCBwKS5jX3N0cigpKTsKK30KKworLy8gd2NoYXJfdCBhcnJheSB2cyB3Y2hhcl90IGFy
cmF5CitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9y
V0NoYXJBcnJheVZzV0NoYXJBcnJheSkgeworICBjb25zdCB3Y2hhcl90IHN0cltdID0gTCJoaSBc
IndvcmxkXCIiOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHN0ciksCisgICAgICAgICAgICBG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCBzdHIpLmNfc3RyKCkpOworfQor
CisvLyBUZXN0cyBmb3JtYXR0aW5nIGEgY2hhciBhcnJheSB3aGVuIGl0J3MgY29tcGFyZWQgd2l0
aCBhIHN0cmluZyBvYmplY3QuCisvLyBJbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBwcmludCB0aGUg
YXJyYXkgYXMgYSBDIHN0cmluZy4KKworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisvLyBj
aGFyIGFycmF5IHZzIHN0cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2VUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVZzU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIgc3RyW10g
PSAiaGkgXCJ3XDBybGRcIiI7CisgIEVYUEVDVF9TVFJFUSgiXCJoaSBcXFwid1wiIiwgIC8vIFRo
ZSBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBFbWJlZGRlZCBOVUwgdGVybWluYXRlcyB0aGUgc3RyaW5nLgorICAgICAgICAgICAg
ICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgOjpzdHJpbmcoKSkuY19z
dHIoKSk7Cit9CisjZW5kaWYKKworLy8gY2hhciBhcnJheSB2cyBzdGQ6OnN0cmluZworVEVTVChG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVZz
U3RkU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIgc3RyW10gPSAiaGkgXCJ3b3JsZFwiIjsKKyAgRVhQ
RUNUX1NUUkVRKCJcImhpIFxcXCJ3b3JsZFxcXCJcIiIsICAvLyBUaGUgY29udGVudCBzaG91bGQg
YmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVz
c2FnZShzdHIsIDo6c3RkOjpzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNf
R0xPQkFMX1dTVFJJTkcKKy8vIHdjaGFyX3QgYXJyYXkgdnMgd3N0cmluZworVEVTVChGb3JtYXRG
b3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvcldDaGFyQXJyYXlWc1dTdHJp
bmcpIHsKKyAgY29uc3Qgd2NoYXJfdCBzdHJbXSA9IEwiaGkgXCJ3b3JsZFwiIjsKKyAgRVhQRUNU
X1NUUkVRKCJMXCJoaSBcXFwid29ybGRcXFwiXCIiLCAgLy8gVGhlIGNvbnRlbnQgc2hvdWxkIGJl
IGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2Uoc3RyLCA6OndzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisjZW5kaWYKKworI2lmIEdURVNUX0hB
U19TVERfV1NUUklORworLy8gd2NoYXJfdCBhcnJheSB2cyBzdGQ6OndzdHJpbmcKK1RFU1QoRm9y
bWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhckFycmF5VnNT
dGRXU3RyaW5nKSB7CisgIGNvbnN0IHdjaGFyX3Qgc3RyW10gPSBMImhpIFwid1wwcmxkXCIiOwor
ICBFWFBFQ1RfU1RSRVEoCisgICAgICAiTFwiaGkgXFxcIndcIiIsICAvLyBUaGUgY29udGVudCBz
aG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVtYmVkZGVkIE5V
TCB0ZXJtaW5hdGVzIHRoZSBzdHJpbmcuCisgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVy
ZU1lc3NhZ2Uoc3RyLCA6OnN0ZDo6d3N0cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisv
LyBVc2VmdWwgZm9yIHRlc3RpbmcgUHJpbnRUb1N0cmluZygpLiAgV2UgY2Fubm90IHVzZSBFWFBF
Q1RfRVEoKQorLy8gdGhlcmUgYXMgaXRzIGltcGxlbWVudGF0aW9uIHVzZXMgUHJpbnRUb1N0cmlu
ZygpLiAgVGhlIGNhbGxlciBtdXN0CisvLyBlbnN1cmUgdGhhdCAndmFsdWUnIGhhcyBubyBzaWRl
IGVmZmVjdC4KKyNkZWZpbmUgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18odmFsdWUsIGV4cGVjdGVk
X3N0cmluZykgICAgICAgICBcCisgIEVYUEVDVF9UUlVFKFByaW50VG9TdHJpbmcodmFsdWUpID09
IChleHBlY3RlZF9zdHJpbmcpKSAgICAgICAgXAorICAgICAgPDwgIiB3aGVyZSAiICN2YWx1ZSAi
IHByaW50cyBhcyAiIDw8IChQcmludFRvU3RyaW5nKHZhbHVlKSkKKworVEVTVChQcmludFRvU3Ry
aW5nVGVzdCwgV29ya3NGb3JTY2FsYXIpIHsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18oMTIz
LCAiMTIzIik7Cit9CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIFdvcmtzRm9yUG9pbnRlclRv
Q29uc3RDaGFyKSB7CisgIGNvbnN0IGNoYXIqIHAgPSAiaGVsbG8iOworICBFWFBFQ1RfUFJJTlRf
VE9fU1RSSU5HXyhwLCAiXCJoZWxsb1wiIik7Cit9CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3Qs
IFdvcmtzRm9yUG9pbnRlclRvTm9uQ29uc3RDaGFyKSB7CisgIGNoYXIgc1tdID0gImhlbGxvIjsK
KyAgY2hhciogcCA9IHM7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKHAsICJcImhlbGxvXCIi
KTsKK30KKworVEVTVChQcmludFRvU3RyaW5nVGVzdCwgRXNjYXBlc0ZvclBvaW50ZXJUb0NvbnN0
Q2hhcikgeworICBjb25zdCBjaGFyKiBwID0gImhlbGxvXG4iOworICBFWFBFQ1RfUFJJTlRfVE9f
U1RSSU5HXyhwLCAiXCJoZWxsb1xcblwiIik7Cit9CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3Qs
IEVzY2FwZXNGb3JQb2ludGVyVG9Ob25Db25zdENoYXIpIHsKKyAgY2hhciBzW10gPSAiaGVsbG9c
MSI7CisgIGNoYXIqIHAgPSBzOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhwLCAiXCJoZWxs
b1xceDFcIiIpOworfQorCitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvckFycmF5KSB7
CisgIGludCBuWzNdID0geyAxLCAyLCAzIH07CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKG4s
ICJ7IDEsIDIsIDMgfSIpOworfQorCitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvckNo
YXJBcnJheSkgeworICBjaGFyIHNbXSA9ICJoZWxsbyI7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJ
TkdfKHMsICJcImhlbGxvXCIiKTsKK30KKworVEVTVChQcmludFRvU3RyaW5nVGVzdCwgV29ya3NG
b3JDaGFyQXJyYXlXaXRoRW1iZWRkZWROdWwpIHsKKyAgY29uc3QgY2hhciBzdHJfd2l0aF9udWxb
XSA9ICJoZWxsb1wwIHdvcmxkIjsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18oc3RyX3dpdGhf
bnVsLCAiXCJoZWxsb1xcMCB3b3JsZFwiIik7CisKKyAgY2hhciBtdXRhYmxlX3N0cl93aXRoX251
bFtdID0gImhlbGxvXDAgd29ybGQiOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhtdXRhYmxl
X3N0cl93aXRoX251bCwgIlwiaGVsbG9cXDAgd29ybGRcIiIpOworfQorCisgIFRFU1QoUHJpbnRU
b1N0cmluZ1Rlc3QsIENvbnRhaW5zTm9uTGF0aW4pIHsKKyAgLy8gU2FuaXR5IHRlc3Qgd2l0aCB2
YWxpZCBVVEYtOC4gUHJpbnRzIGJvdGggaW4gaGV4IGFuZCBhcyB0ZXh0LgorICBzdGQ6OnN0cmlu
ZyBub25fYXNjaWlfc3RyID0gOjpzdGQ6OnN0cmluZygi7Jik7KCEIDQ6MzAiKTsKKyAgRVhQRUNU
X1BSSU5UX1RPX1NUUklOR18obm9uX2FzY2lpX3N0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlwiXFx4RUNcXHg5OFxceEE0XFx4RUNcXHhBMFxceDg0IDQ6MzBcIlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIEFzIFRleHQ6IFwi7Jik7KCEIDQ6MzBcIiIpOworICBub25f
YXNjaWlfc3RyID0gOjpzdGQ6OnN0cmluZygiRnJvbSDDpCDigJQg4bqRIik7CisgIEVYUEVDVF9Q
UklOVF9UT19TVFJJTkdfKG5vbl9hc2NpaV9zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJcIkZyb20gXFx4QzNcXHhBNCBcXHhFMlxceDgwXFx4OTQgXFx4RTFcXHhCQVxceDkxXCIiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICJcbiAgICBBcyBUZXh0OiBcIkZyb20gw6Qg4oCUIOG6
kVwiIik7Cit9CisKK1RFU1QoSXNWYWxpZFVURjhUZXN0LCBJbGxGb3JtZWRVVEY4KSB7CisgIC8v
IFRoZSBmb2xsb3dpbmcgdGVzdCBzdHJpbmdzIGFyZSBpbGwtZm9ybWVkIFVURi04IGFuZCBhcmUg
cHJpbnRlZAorICAvLyBhcyBoZXggb25seSAob3IgQVNDSUksIGluIGNhc2Ugb2YgQVNDSUkgYnl0
ZXMpIGJlY2F1c2UgSXNWYWxpZFVURjgoKSBpcworICAvLyBleHBlY3RlZCB0byBmYWlsLCB0aHVz
IG91dHB1dCBkb2VzIG5vdCBjb250YWluICJBcyBUZXh0OiIuCisKKyAgc3RhdGljIGNvbnN0IGNo
YXIgKmNvbnN0IGtUZXN0ZGF0YVtdWzJdID0geworICAgIC8vIDItYnl0ZSBsZWFkIGJ5dGUgZm9s
bG93ZWQgYnkgYSBzaW5nbGUtYnl0ZSBjaGFyYWN0ZXIuCisgICAgeyJceEMzXHg3NCIsICJcIlxc
eEMzdFwiIn0sCisgICAgLy8gVmFsaWQgMi1ieXRlIGNoYXJhY3RlciBmb2xsb3dlZCBieSBhbiBv
cnBoYW4gdHJhaWwgYnl0ZS4KKyAgICB7Ilx4QzNceDg0XHhBNCIsICJcIlxceEMzXFx4ODRcXHhB
NFwiIn0sCisgICAgLy8gTGVhZCBieXRlIHdpdGhvdXQgdHJhaWwgYnl0ZS4KKyAgICB7ImFiY1x4
QzMiLCAiXCJhYmNcXHhDM1wiIn0sCisgICAgLy8gMy1ieXRlIGxlYWQgYnl0ZSwgc2luZ2xlLWJ5
dGUgY2hhcmFjdGVyLCBvcnBoYW4gdHJhaWwgYnl0ZS4KKyAgICB7InhceEUyXHg3MFx4OTQiLCAi
XCJ4XFx4RTJwXFx4OTRcIiJ9LAorICAgIC8vIFRydW5jYXRlZCAzLWJ5dGUgY2hhcmFjdGVyLgor
ICAgIHsiXHhFMlx4ODAiLCAiXCJcXHhFMlxceDgwXCIifSwKKyAgICAvLyBUcnVuY2F0ZWQgMy1i
eXRlIGNoYXJhY3RlciBmb2xsb3dlZCBieSB2YWxpZCAyLWJ5dGUgY2hhci4KKyAgICB7Ilx4RTJc
eDgwXHhDM1x4ODQiLCAiXCJcXHhFMlxceDgwXFx4QzNcXHg4NFwiIn0sCisgICAgLy8gVHJ1bmNh
dGVkIDMtYnl0ZSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkgYSBzaW5nbGUtYnl0ZSBjaGFyYWN0ZXIu
CisgICAgeyJceEUyXHg4MFx4N0EiLCAiXCJcXHhFMlxceDgwelwiIn0sCisgICAgLy8gMy1ieXRl
IGxlYWQgYnl0ZSBmb2xsb3dlZCBieSB2YWxpZCAzLWJ5dGUgY2hhcmFjdGVyLgorICAgIHsiXHhF
Mlx4RTJceDgwXHg5NCIsICJcIlxceEUyXFx4RTJcXHg4MFxceDk0XCIifSwKKyAgICAvLyA0LWJ5
dGUgbGVhZCBieXRlIGZvbGxvd2VkIGJ5IHZhbGlkIDMtYnl0ZSBjaGFyYWN0ZXIuCisgICAgeyJc
eEYwXHhFMlx4ODBceDk0IiwgIlwiXFx4RjBcXHhFMlxceDgwXFx4OTRcIiJ9LAorICAgIC8vIFRy
dW5jYXRlZCA0LWJ5dGUgY2hhcmFjdGVyLgorICAgIHsiXHhGMFx4RTJceDgwIiwgIlwiXFx4RjBc
XHhFMlxceDgwXCIifSwKKyAgICAgLy8gSW52YWxpZCBVVEYtOCBieXRlIHNlcXVlbmNlcyBlbWJl
ZGRlZCBpbiBvdGhlciBjaGFycy4KKyAgICB7ImFiY1x4RTJceDgwXHg5NFx4QzNceDc0eHljIiwg
IlwiYWJjXFx4RTJcXHg4MFxceDk0XFx4QzN0eHljXCIifSwKKyAgICB7ImFiY1x4QzNceDg0XHhF
Mlx4ODBceEMzXHg4NHh5eiIsCisgICAgICJcImFiY1xceEMzXFx4ODRcXHhFMlxceDgwXFx4QzNc
XHg4NHh5elwiIn0sCisgICAgLy8gTm9uLXNob3J0ZXN0IFVURi04IGJ5dGUgc2VxdWVuY2VzIGFy
ZSBhbHNvIGlsbC1mb3JtZWQuCisgICAgLy8gVGhlIGNsYXNzaWNzOiB4QzAsIHhDMSBsZWFkIGJ5
dGUuCisgICAgeyJceEMwXHg4MCIsICJcIlxceEMwXFx4ODBcIiJ9LAorICAgIHsiXHhDMVx4ODEi
LCAiXCJcXHhDMVxceDgxXCIifSwKKyAgICAvLyBOb24tc2hvcnRlc3Qgc2VxdWVuY2VzLgorICAg
IHsiXHhFMFx4ODBceDgwIiwgIlwiXFx4RTBcXHg4MFxceDgwXCIifSwKKyAgICB7Ilx4ZjBceDgw
XHg4MFx4ODAiLCAiXCJcXHhGMFxceDgwXFx4ODBcXHg4MFwiIn0sCisgICAgLy8gTGFzdCB2YWxp
ZCBjb2RlIHBvaW50IGJlZm9yZSBzdXJyb2dhdGUgcmFuZ2UsIHNob3VsZCBiZSBwcmludGVkIGFz
IHRleHQsCisgICAgLy8gdG9vLgorICAgIHsiXHhFRFx4OUZceEJGIiwgIlwiXFx4RURcXHg5Rlxc
eEJGXCJcbiAgICBBcyBUZXh0OiBcIu2fv1wiIn0sCisgICAgLy8gU3RhcnQgb2Ygc3Vycm9nYXRl
IGxlYWQuIFN1cnJvZ2F0ZXMgYXJlIG5vdCBwcmludGVkIGFzIHRleHQuCisgICAgeyJceEVEXHhB
MFx4ODAiLCAiXCJcXHhFRFxceEEwXFx4ODBcIiJ9LAorICAgIC8vIExhc3Qgbm9uLXByaXZhdGUg
c3Vycm9nYXRlIGxlYWQuCisgICAgeyJceEVEXHhBRFx4QkYiLCAiXCJcXHhFRFxceEFEXFx4QkZc
IiJ9LAorICAgIC8vIEZpcnN0IHByaXZhdGUtdXNlIHN1cnJvZ2F0ZSBsZWFkLgorICAgIHsiXHhF
RFx4QUVceDgwIiwgIlwiXFx4RURcXHhBRVxceDgwXCIifSwKKyAgICAvLyBMYXN0IHByaXZhdGUt
dXNlIHN1cnJvZ2F0ZSBsZWFkLgorICAgIHsiXHhFRFx4QUZceEJGIiwgIlwiXFx4RURcXHhBRlxc
eEJGXCIifSwKKyAgICAvLyBNaWQtcG9pbnQgb2Ygc3Vycm9nYXRlIHRyYWlsLgorICAgIHsiXHhF
RFx4QjNceEJGIiwgIlwiXFx4RURcXHhCM1xceEJGXCIifSwKKyAgICAvLyBGaXJzdCB2YWxpZCBj
b2RlIHBvaW50IGFmdGVyIHN1cnJvZ2F0ZSByYW5nZSwgc2hvdWxkIGJlIHByaW50ZWQgYXMgdGV4
dCwKKyAgICAvLyB0b28uCisgICAgeyJceEVFXHg4MFx4ODAiLCAiXCJcXHhFRVxceDgwXFx4ODBc
IlxuICAgIEFzIFRleHQ6IFwi7oCAXCIifQorICB9OworCisgIGZvciAoaW50IGkgPSAwOyBpIDwg
aW50KHNpemVvZihrVGVzdGRhdGEpL3NpemVvZihrVGVzdGRhdGFbMF0pKTsgKytpKSB7CisgICAg
RVhQRUNUX1BSSU5UX1RPX1NUUklOR18oa1Rlc3RkYXRhW2ldWzBdLCBrVGVzdGRhdGFbaV1bMV0p
OworICB9Cit9CisKKyN1bmRlZiBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXworCitURVNUKFVuaXZl
cnNhbFRlcnNlUHJpbnRUZXN0LCBXb3Jrc0Zvck5vblJlZmVyZW5jZSkgeworICA6OnN0ZDo6c3Ry
aW5nc3RyZWFtIHNzOworICBVbml2ZXJzYWxUZXJzZVByaW50KDEyMywgJnNzKTsKKyAgRVhQRUNU
X0VRKCIxMjMiLCBzcy5zdHIoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFRlc3Qs
IFdvcmtzRm9yUmVmZXJlbmNlKSB7CisgIGNvbnN0IGludCYgbiA9IDEyMzsKKyAgOjpzdGQ6OnN0
cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2FsVGVyc2VQcmludChuLCAmc3MpOworICBFWFBFQ1Rf
RVEoIjEyMyIsIHNzLnN0cigpKTsKK30KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VGVzdCwg
V29ya3NGb3JDU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIqIHMxID0gImFiYyI7CisgIDo6c3RkOjpz
dHJpbmdzdHJlYW0gc3MxOworICBVbml2ZXJzYWxUZXJzZVByaW50KHMxLCAmc3MxKTsKKyAgRVhQ
RUNUX0VRKCJcImFiY1wiIiwgc3MxLnN0cigpKTsKKworICBjaGFyKiBzMiA9IGNvbnN0X2Nhc3Q8
Y2hhcio+KHMxKTsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczI7CisgIFVuaXZlcnNhbFRlcnNl
UHJpbnQoczIsICZzczIpOworICBFWFBFQ1RfRVEoIlwiYWJjXCIiLCBzczIuc3RyKCkpOworCisg
IGNvbnN0IGNoYXIqIHMzID0gTlVMTDsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczM7CisgIFVu
aXZlcnNhbFRlcnNlUHJpbnQoczMsICZzczMpOworICBFWFBFQ1RfRVEoIk5VTEwiLCBzczMuc3Ry
KCkpOworfQorCitURVNUKFVuaXZlcnNhbFByaW50VGVzdCwgV29ya3NGb3JOb25SZWZlcmVuY2Up
IHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2FsUHJpbnQoMTIzLCAmc3Mp
OworICBFWFBFQ1RfRVEoIjEyMyIsIHNzLnN0cigpKTsKK30KKworVEVTVChVbml2ZXJzYWxQcmlu
dFRlc3QsIFdvcmtzRm9yUmVmZXJlbmNlKSB7CisgIGNvbnN0IGludCYgbiA9IDEyMzsKKyAgOjpz
dGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2FsUHJpbnQobiwgJnNzKTsKKyAgRVhQRUNU
X0VRKCIxMjMiLCBzcy5zdHIoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsUHJpbnRUZXN0LCBXb3Jr
c0ZvckNTdHJpbmcpIHsKKyAgY29uc3QgY2hhciogczEgPSAiYWJjIjsKKyAgOjpzdGQ6OnN0cmlu
Z3N0cmVhbSBzczE7CisgIFVuaXZlcnNhbFByaW50KHMxLCAmc3MxKTsKKyAgRVhQRUNUX0VRKFBy
aW50UG9pbnRlcihzMSkgKyAiIHBvaW50aW5nIHRvIFwiYWJjXCIiLCBzdGQ6OnN0cmluZyhzczEu
c3RyKCkpKTsKKworICBjaGFyKiBzMiA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHMxKTsKKyAgOjpzdGQ6
OnN0cmluZ3N0cmVhbSBzczI7CisgIFVuaXZlcnNhbFByaW50KHMyLCAmc3MyKTsKKyAgRVhQRUNU
X0VRKFByaW50UG9pbnRlcihzMikgKyAiIHBvaW50aW5nIHRvIFwiYWJjXCIiLCBzdGQ6OnN0cmlu
ZyhzczIuc3RyKCkpKTsKKworICBjb25zdCBjaGFyKiBzMyA9IE5VTEw7CisgIDo6c3RkOjpzdHJp
bmdzdHJlYW0gc3MzOworICBVbml2ZXJzYWxQcmludChzMywgJnNzMyk7CisgIEVYUEVDVF9FUSgi
TlVMTCIsIHNzMy5zdHIoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsUHJpbnRUZXN0LCBXb3Jrc0Zv
ckNoYXJBcnJheSkgeworICBjb25zdCBjaGFyIHN0cltdID0gIlwiTGluZVwwIDFcIlxuTGluZSAy
IjsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczE7CisgIFVuaXZlcnNhbFByaW50KHN0ciwgJnNz
MSk7CisgIEVYUEVDVF9FUSgiXCJcXFwiTGluZVxcMCAxXFxcIlxcbkxpbmUgMlwiIiwgc3MxLnN0
cigpKTsKKworICBjb25zdCBjaGFyIG11dGFibGVfc3RyW10gPSAiXCJMaW5lXDAgMVwiXG5MaW5l
IDIiOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMjsKKyAgVW5pdmVyc2FsUHJpbnQobXV0YWJs
ZV9zdHIsICZzczIpOworICBFWFBFQ1RfRVEoIlwiXFxcIkxpbmVcXDAgMVxcXCJcXG5MaW5lIDJc
IiIsIHNzMi5zdHIoKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCisKK1RFU1QoVW5p
dmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhUcjEsIFByaW50c0Vt
cHR5VHVwbGUpIHsKKyAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVG
aWVsZHNUb1N0cmluZ3MoCisgICAgICA6OnN0ZDo6dHIxOjptYWtlX3R1cGxlKCkpOworICBFWFBF
Q1RfRVEoMHUsIHJlc3VsdC5zaXplKCkpOworfQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRU
dXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmludHNPbmVUdXBsZSkgeworICBTdHJp
bmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKKyAg
ICAgIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGUoMSkpOworICBBU1NFUlRfRVEoMXUsIHJlc3VsdC5z
aXplKCkpOworICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRbMF0pOworfQorCitURVNUKFVuaXZlcnNh
bFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmludHNUd29UdXBs
ZSkgeworICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1Rv
U3RyaW5ncygKKyAgICAgIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGUoMSwgJ2EnKSk7CisgIEFTU0VS
VF9FUSgydSwgcmVzdWx0LnNpemUoKSk7CisgIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7Cisg
IEVYUEVDVF9FUSgiJ2EnICg5NywgMHg2MSkiLCByZXN1bHRbMV0pOworfQorCitURVNUKFVuaXZl
cnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmludHNUZXJz
ZWx5KSB7CisgIGNvbnN0IGludCBuID0gMTsKKyAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxU
ZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoCisgICAgICA6OnN0ZDo6dHIxOjp0dXBsZTxj
b25zdCBpbnQmLCBjb25zdCBjaGFyKj4obiwgImEiKSk7CisgIEFTU0VSVF9FUSgydSwgcmVzdWx0
LnNpemUoKSk7CisgIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7CisgIEVYUEVDVF9FUSgiXCJh
XCIiLCByZXN1bHRbMV0pOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUKKwor
I2lmIEdURVNUX0hBU19TVERfVFVQTEVfCisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxl
RmllbGRzVG9TdHJpbmdzVGVzdFdpdGhTdGQsIFByaW50c0VtcHR5VHVwbGUpIHsKKyAgU3RyaW5n
cyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoOjpzdGQ6
Om1ha2VfdHVwbGUoKSk7CisgIEVYUEVDVF9FUSgwdSwgcmVzdWx0LnNpemUoKSk7Cit9CisKK1RF
U1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhTdGQsIFBy
aW50c09uZVR1cGxlKSB7CisgIFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1
cGxlRmllbGRzVG9TdHJpbmdzKAorICAgICAgOjpzdGQ6Om1ha2VfdHVwbGUoMSkpOworICBBU1NF
UlRfRVEoMXUsIHJlc3VsdC5zaXplKCkpOworICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRbMF0pOwor
fQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRo
U3RkLCBQcmludHNUd29UdXBsZSkgeworICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNl
UHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKKyAgICAgIDo6c3RkOjptYWtlX3R1cGxlKDEsICdh
JykpOworICBBU1NFUlRfRVEoMnUsIHJlc3VsdC5zaXplKCkpOworICBFWFBFQ1RfRVEoIjEiLCBy
ZXN1bHRbMF0pOworICBFWFBFQ1RfRVEoIidhJyAoOTcsIDB4NjEpIiwgcmVzdWx0WzFdKTsKK30K
KworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0aFN0
ZCwgUHJpbnRzVGVyc2VseSkgeworICBjb25zdCBpbnQgbiA9IDE7CisgIFN0cmluZ3MgcmVzdWx0
ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAorICAgICAgOjpzdGQ6
OnR1cGxlPGNvbnN0IGludCYsIGNvbnN0IGNoYXIqPihuLCAiYSIpKTsKKyAgQVNTRVJUX0VRKDJ1
LCByZXN1bHQuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKCIxIiwgcmVzdWx0WzBdKTsKKyAgRVhQRUNU
X0VRKCJcImFcIiIsIHJlc3VsdFsxXSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9U
VVBMRV8KKworI2lmIEdURVNUX0hBU19BQlNMCisKK1RFU1QoUHJpbnRPcHRpb25hbFRlc3QsIEJh
c2ljKSB7CisgIGFic2w6Om9wdGlvbmFsPGludD4gdmFsdWU7CisgIEVYUEVDVF9FUSgiKG51bGxv
cHQpIiwgUHJpbnRUb1N0cmluZyh2YWx1ZSkpOworICB2YWx1ZSA9IHs3fTsKKyAgRVhQRUNUX0VR
KCIoNykiLCBQcmludFRvU3RyaW5nKHZhbHVlKSk7CisgIEVYUEVDVF9FUSgiKDEuMSkiLCBQcmlu
dFRvU3RyaW5nKGFic2w6Om9wdGlvbmFsPGRvdWJsZT57MS4xfSkpOworICBFWFBFQ1RfRVEoIihc
IkFcIikiLCBQcmludFRvU3RyaW5nKGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPnsiQSJ9KSk7
Cit9CisKK3N0cnVjdCBOb25QcmludGFibGUgeworICB1bnNpZ25lZCBjaGFyIGNvbnRlbnRzID0g
MTc7Cit9OworCitURVNUKFByaW50T25lb2ZUZXN0LCBCYXNpYykgeworICB1c2luZyBUeXBlID0g
YWJzbDo6dmFyaWFudDxpbnQsIFN0cmVhbWFibGVJbkdsb2JhbCwgTm9uUHJpbnRhYmxlPjsKKyAg
RVhQRUNUX0VRKCIoJ2ludCcgd2l0aCB2YWx1ZSA3KSIsIFByaW50VG9TdHJpbmcoVHlwZSg3KSkp
OworICBFWFBFQ1RfRVEoIignU3RyZWFtYWJsZUluR2xvYmFsJyB3aXRoIHZhbHVlIFN0cmVhbWFi
bGVJbkdsb2JhbCkiLAorICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhUeXBlKFN0cmVhbWFibGVJ
bkdsb2JhbHt9KSkpOworICBFWFBFQ1RfRVEoCisgICAgICAiKCd0ZXN0aW5nOjpndGVzdF9wcmlu
dGVyc190ZXN0OjpOb25QcmludGFibGUnIHdpdGggdmFsdWUgMS1ieXRlIG9iamVjdCAiCisgICAg
ICAiPDExPikiLAorICAgICAgUHJpbnRUb1N0cmluZyhUeXBlKE5vblByaW50YWJsZXt9KSkpOwor
fQorI2VuZGlmICAvLyBHVEVTVF9IQVNfQUJTTAorCit9ICAvLyBuYW1lc3BhY2UgZ3Rlc3RfcHJp
bnRlcnNfdGVzdAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3QucHkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0LnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU3M2NjNWVjYTNmY2U0NThhYTNhYzNlMzk4NTBmNDdiYjM4MmU1NWIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtc2h1ZmZsZS10
ZXN0LnB5CkBAIC0wLDAgKzEsMzIzIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29w
eXJpZ2h0IDIwMDkgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyIiIlZlcmlmaWVzIHRoYXQgdGVzdCBzaHVmZmxpbmcgd29ya3MuIiIiCisKK2lt
cG9ydCBvcworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworIyBDb21tYW5kIHRvIHJ1biB0aGUg
Z29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfIHByb2dyYW0uCitDT01NQU5EID0gZ3Rlc3RfdGVzdF91
dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2dvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0XycpCisK
KyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBzaGFyZGluZy4KK1RPVEFMX1NI
QVJEU19FTlZfVkFSID0gJ0dURVNUX1RPVEFMX1NIQVJEUycKK1NIQVJEX0lOREVYX0VOVl9WQVIg
PSAnR1RFU1RfU0hBUkRfSU5ERVgnCisKK1RFU1RfRklMVEVSID0gJ0EqLkE6QSouQjpDKicKKwor
QUxMX1RFU1RTID0gW10KK0FDVElWRV9URVNUUyA9IFtdCitGSUxURVJFRF9URVNUUyA9IFtdCitT
SEFSREVEX1RFU1RTID0gW10KKworU0hVRkZMRURfQUxMX1RFU1RTID0gW10KK1NIVUZGTEVEX0FD
VElWRV9URVNUUyA9IFtdCitTSFVGRkxFRF9GSUxURVJFRF9URVNUUyA9IFtdCitTSFVGRkxFRF9T
SEFSREVEX1RFU1RTID0gW10KKworCitkZWYgQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKCk6Cisg
IHJldHVybiAnLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cycKKworCitkZWYgRmlsdGVy
RmxhZyh0ZXN0X2ZpbHRlcik6CisgIHJldHVybiAnLS1ndGVzdF9maWx0ZXI9JXMnICUgKHRlc3Rf
ZmlsdGVyLCkKKworCitkZWYgUmVwZWF0RmxhZyhuKToKKyAgcmV0dXJuICctLWd0ZXN0X3JlcGVh
dD0lcycgJSAobiwpCisKKworZGVmIFNodWZmbGVGbGFnKCk6CisgIHJldHVybiAnLS1ndGVzdF9z
aHVmZmxlJworCisKK2RlZiBSYW5kb21TZWVkRmxhZyhuKToKKyAgcmV0dXJuICctLWd0ZXN0X3Jh
bmRvbV9zZWVkPSVzJyAlIChuLCkKKworCitkZWYgUnVuQW5kUmV0dXJuT3V0cHV0KGV4dHJhX2Vu
diwgYXJncyk6CisgICIiIlJ1bnMgdGhlIHRlc3QgcHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgb3V0
cHV0LiIiIgorCisgIGVudmlyb25fY29weSA9IG9zLmVudmlyb24uY29weSgpCisgIGVudmlyb25f
Y29weS51cGRhdGUoZXh0cmFfZW52KQorCisgIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnBy
b2Nlc3MoW0NPTU1BTkRdICsgYXJncywgZW52PWVudmlyb25fY29weSkub3V0cHV0CisKKworZGVm
IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyhleHRyYV9lbnYsIGFyZ3MpOgorICAiIiJSdW5zIHRo
ZSB0ZXN0IHByb2dyYW0gYW5kIHJldHVybnMgYSBsaXN0IG9mIHRlc3QgbGlzdHMuCisKKyAgQXJn
czoKKyAgICBleHRyYV9lbnY6IGEgbWFwIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHRo
ZWlyIHZhbHVlcworICAgIGFyZ3M6IGNvbW1hbmQgbGluZSBmbGFncyB0byBwYXNzIHRvIGdvb2ds
ZXRlc3Qtc2h1ZmZsZS10ZXN0XworCisgIFJldHVybnM6CisgICAgQSBsaXN0IHdoZXJlIHRoZSBp
LXRoIGVsZW1lbnQgaXMgdGhlIGxpc3Qgb2YgdGVzdHMgcnVuIGluIHRoZSBpLXRoCisgICAgdGVz
dCBpdGVyYXRpb24uCisgICIiIgorCisgIHRlc3RfaXRlcmF0aW9ucyA9IFtdCisgIGZvciBsaW5l
IGluIFJ1bkFuZFJldHVybk91dHB1dChleHRyYV9lbnYsIGFyZ3MpLnNwbGl0KCdcbicpOgorICAg
IGlmIGxpbmUuc3RhcnRzd2l0aCgnLS0tLScpOgorICAgICAgdGVzdHMgPSBbXQorICAgICAgdGVz
dF9pdGVyYXRpb25zLmFwcGVuZCh0ZXN0cykKKyAgICBlbGlmIGxpbmUuc3RyaXAoKToKKyAgICAg
IHRlc3RzLmFwcGVuZChsaW5lLnN0cmlwKCkpICAjICdUZXN0Q2FzZU5hbWUuVGVzdE5hbWUnCisK
KyAgcmV0dXJuIHRlc3RfaXRlcmF0aW9ucworCisKK2RlZiBHZXRUZXN0Q2FzZXModGVzdHMpOgor
ICAiIiJSZXR1cm5zIGEgbGlzdCBvZiB0ZXN0IGNhc2VzIGluIHRoZSBnaXZlbiBmdWxsIHRlc3Qg
bmFtZXMuCisKKyAgQXJnczoKKyAgICB0ZXN0czogYSBsaXN0IG9mIGZ1bGwgdGVzdCBuYW1lcwor
CisgIFJldHVybnM6CisgICAgQSBsaXN0IG9mIHRlc3QgY2FzZXMgZnJvbSAndGVzdHMnLCBpbiB0
aGVpciBvcmlnaW5hbCBvcmRlci4KKyAgICBDb25zZWN1dGl2ZSBkdXBsaWNhdGVzIGFyZSByZW1v
dmVkLgorICAiIiIKKworICB0ZXN0X2Nhc2VzID0gW10KKyAgZm9yIHRlc3QgaW4gdGVzdHM6Cisg
ICAgdGVzdF9jYXNlID0gdGVzdC5zcGxpdCgnLicpWzBdCisgICAgaWYgbm90IHRlc3RfY2FzZSBp
biB0ZXN0X2Nhc2VzOgorICAgICAgdGVzdF9jYXNlcy5hcHBlbmQodGVzdF9jYXNlKQorCisgIHJl
dHVybiB0ZXN0X2Nhc2VzCisKKworZGVmIENhbGN1bGF0ZVRlc3RMaXN0cygpOgorICAiIiJDYWxj
dWxhdGVzIHRoZSBsaXN0IG9mIHRlc3RzIHJ1biB1bmRlciBkaWZmZXJlbnQgZmxhZ3MuIiIiCisK
KyAgaWYgbm90IEFMTF9URVNUUzoKKyAgICBBTExfVEVTVFMuZXh0ZW5kKAorICAgICAgICBHZXRU
ZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe30sIFtBbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcoKV0pWzBd
KQorCisgIGlmIG5vdCBBQ1RJVkVfVEVTVFM6CisgICAgQUNUSVZFX1RFU1RTLmV4dGVuZChHZXRU
ZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe30sIFtdKVswXSkKKworICBpZiBub3QgRklMVEVSRURfVEVT
VFM6CisgICAgRklMVEVSRURfVEVTVFMuZXh0ZW5kKAorICAgICAgICBHZXRUZXN0c0ZvckFsbEl0
ZXJhdGlvbnMoe30sIFtGaWx0ZXJGbGFnKFRFU1RfRklMVEVSKV0pWzBdKQorCisgIGlmIG5vdCBT
SEFSREVEX1RFU1RTOgorICAgIFNIQVJERURfVEVTVFMuZXh0ZW5kKAorICAgICAgICBHZXRUZXN0
c0ZvckFsbEl0ZXJhdGlvbnMoe1RPVEFMX1NIQVJEU19FTlZfVkFSOiAnMycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU0hBUkRfSU5ERVhfRU5WX1ZBUjogJzEnfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKVswXSkKKworICBpZiBub3QgU0hVRkZMRURf
QUxMX1RFU1RTOgorICAgIFNIVUZGTEVEX0FMTF9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJ
dGVyYXRpb25zKAorICAgICAgICB7fSwgW0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZygpLCBTaHVm
ZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0pWzBdKQorCisgIGlmIG5vdCBTSFVGRkxFRF9B
Q1RJVkVfVEVTVFM6CisgICAgU0hVRkZMRURfQUNUSVZFX1RFU1RTLmV4dGVuZChHZXRUZXN0c0Zv
ckFsbEl0ZXJhdGlvbnMoCisgICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZs
YWcoMSldKVswXSkKKworICBpZiBub3QgU0hVRkZMRURfRklMVEVSRURfVEVTVFM6CisgICAgU0hV
RkZMRURfRklMVEVSRURfVEVTVFMuZXh0ZW5kKEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKKyAg
ICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKSwgRmlsdGVyRmxhZyhU
RVNUX0ZJTFRFUildKVswXSkKKworICBpZiBub3QgU0hVRkZMRURfU0hBUkRFRF9URVNUUzoKKyAg
ICBTSFVGRkxFRF9TSEFSREVEX1RFU1RTLmV4dGVuZCgKKyAgICAgICAgR2V0VGVzdHNGb3JBbGxJ
dGVyYXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcxJ30sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSldKVsw
XSkKKworCitjbGFzcyBHVGVzdFNodWZmbGVVbml0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RD
YXNlKToKKyAgIiIiVGVzdHMgdGVzdCBzaHVmZmxpbmcuIiIiCisKKyAgZGVmIHNldFVwKHNlbGYp
OgorICAgIENhbGN1bGF0ZVRlc3RMaXN0cygpCisKKyAgZGVmIHRlc3RTaHVmZmxlUHJlc2VydmVz
TnVtYmVyT2ZUZXN0cyhzZWxmKToKKyAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihBTExfVEVTVFMp
LCBsZW4oU0hVRkZMRURfQUxMX1RFU1RTKSkKKyAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihBQ1RJ
VkVfVEVTVFMpLCBsZW4oU0hVRkZMRURfQUNUSVZFX1RFU1RTKSkKKyAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbihGSUxURVJFRF9URVNUUyksIGxlbihTSFVGRkxFRF9GSUxURVJFRF9URVNUUykpCisg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oU0hBUkRFRF9URVNUUyksIGxlbihTSFVGRkxFRF9TSEFS
REVEX1RFU1RTKSkKKworICBkZWYgdGVzdFNodWZmbGVDaGFuZ2VzVGVzdE9yZGVyKHNlbGYpOgor
ICAgIHNlbGYuYXNzZXJ0XyhTSFVGRkxFRF9BTExfVEVTVFMgIT0gQUxMX1RFU1RTLCBTSFVGRkxF
RF9BTExfVEVTVFMpCisgICAgc2VsZi5hc3NlcnRfKFNIVUZGTEVEX0FDVElWRV9URVNUUyAhPSBB
Q1RJVkVfVEVTVFMsIFNIVUZGTEVEX0FDVElWRV9URVNUUykKKyAgICBzZWxmLmFzc2VydF8oU0hV
RkZMRURfRklMVEVSRURfVEVTVFMgIT0gRklMVEVSRURfVEVTVFMsCisgICAgICAgICAgICAgICAg
IFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTKQorICAgIHNlbGYuYXNzZXJ0XyhTSFVGRkxFRF9TSEFS
REVEX1RFU1RTICE9IFNIQVJERURfVEVTVFMsCisgICAgICAgICAgICAgICAgIFNIVUZGTEVEX1NI
QVJERURfVEVTVFMpCisKKyAgZGVmIHRlc3RTaHVmZmxlQ2hhbmdlc1Rlc3RDYXNlT3JkZXIoc2Vs
Zik6CisgICAgc2VsZi5hc3NlcnRfKEdldFRlc3RDYXNlcyhTSFVGRkxFRF9BTExfVEVTVFMpICE9
IEdldFRlc3RDYXNlcyhBTExfVEVTVFMpLAorICAgICAgICAgICAgICAgICBHZXRUZXN0Q2FzZXMo
U0hVRkZMRURfQUxMX1RFU1RTKSkKKyAgICBzZWxmLmFzc2VydF8oCisgICAgICAgIEdldFRlc3RD
YXNlcyhTSFVGRkxFRF9BQ1RJVkVfVEVTVFMpICE9IEdldFRlc3RDYXNlcyhBQ1RJVkVfVEVTVFMp
LAorICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfQUNUSVZFX1RFU1RTKSkKKyAgICBzZWxm
LmFzc2VydF8oCisgICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9GSUxURVJFRF9URVNUUykg
IT0gR2V0VGVzdENhc2VzKEZJTFRFUkVEX1RFU1RTKSwKKyAgICAgICAgR2V0VGVzdENhc2VzKFNI
VUZGTEVEX0ZJTFRFUkVEX1RFU1RTKSkKKyAgICBzZWxmLmFzc2VydF8oCisgICAgICAgIEdldFRl
c3RDYXNlcyhTSFVGRkxFRF9TSEFSREVEX1RFU1RTKSAhPSBHZXRUZXN0Q2FzZXMoU0hBUkRFRF9U
RVNUUyksCisgICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9TSEFSREVEX1RFU1RTKSkKKwor
ICBkZWYgdGVzdFNodWZmbGVEb2VzTm90UmVwZWF0VGVzdChzZWxmKToKKyAgICBmb3IgdGVzdCBp
biBTSFVGRkxFRF9BTExfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIFNIVUZGTEVE
X0FMTF9URVNUUy5jb3VudCh0ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVh
cnMgbW9yZSB0aGFuIG9uY2UnICUgKHRlc3QsKSkKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9B
Q1RJVkVfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIFNIVUZGTEVEX0FDVElWRV9U
RVNUUy5jb3VudCh0ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgbW9y
ZSB0aGFuIG9uY2UnICUgKHRlc3QsKSkKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9GSUxURVJF
RF9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgU0hVRkZMRURfRklMVEVSRURfVEVT
VFMuY291bnQodGVzdCksCisgICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUg
dGhhbiBvbmNlJyAlICh0ZXN0LCkpCisgICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfU0hBUkRFRF9U
RVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgU0hVRkZMRURfU0hBUkRFRF9URVNUUy5j
b3VudCh0ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgbW9yZSB0aGFu
IG9uY2UnICUgKHRlc3QsKSkKKworICBkZWYgdGVzdFNodWZmbGVEb2VzTm90Q3JlYXRlTmV3VGVz
dChzZWxmKToKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9BTExfVEVTVFM6CisgICAgICBzZWxm
LmFzc2VydF8odGVzdCBpbiBBTExfVEVTVFMsICclcyBpcyBhbiBpbnZhbGlkIHRlc3QnICUgKHRl
c3QsKSkKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9BQ1RJVkVfVEVTVFM6CisgICAgICBzZWxm
LmFzc2VydF8odGVzdCBpbiBBQ1RJVkVfVEVTVFMsICclcyBpcyBhbiBpbnZhbGlkIHRlc3QnICUg
KHRlc3QsKSkKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9GSUxURVJFRF9URVNUUzoKKyAgICAg
IHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIEZJTFRFUkVEX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0
ZXN0JyAlICh0ZXN0LCkpCisgICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfU0hBUkRFRF9URVNUUzoK
KyAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIQVJERURfVEVTVFMsICclcyBpcyBhbiBpbnZh
bGlkIHRlc3QnICUgKHRlc3QsKSkKKworICBkZWYgdGVzdFNodWZmbGVJbmNsdWRlc0FsbFRlc3Rz
KHNlbGYpOgorICAgIGZvciB0ZXN0IGluIEFMTF9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyh0
ZXN0IGluIFNIVUZGTEVEX0FMTF9URVNUUywgJyVzIGlzIG1pc3NpbmcnICUgKHRlc3QsKSkKKyAg
ICBmb3IgdGVzdCBpbiBBQ1RJVkVfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBT
SFVGRkxFRF9BQ1RJVkVfVEVTVFMsICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCisgICAgZm9y
IHRlc3QgaW4gRklMVEVSRURfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVG
RkxFRF9GSUxURVJFRF9URVNUUywgJyVzIGlzIG1pc3NpbmcnICUgKHRlc3QsKSkKKyAgICBmb3Ig
dGVzdCBpbiBTSEFSREVEX1RFU1RTOgorICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZM
RURfU0hBUkRFRF9URVNUUywgJyVzIGlzIG1pc3NpbmcnICUgKHRlc3QsKSkKKworICBkZWYgdGVz
dFNodWZmbGVMZWF2ZXNEZWF0aFRlc3RzQXRGcm9udChzZWxmKToKKyAgICBub25fZGVhdGhfdGVz
dF9mb3VuZCA9IEZhbHNlCisgICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTOgor
ICAgICAgaWYgJ0RlYXRoVGVzdC4nIGluIHRlc3Q6CisgICAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qg
bm9uX2RlYXRoX3Rlc3RfZm91bmQsCisgICAgICAgICAgICAgICAgICAgICAnJXMgYXBwZWFycyBh
ZnRlciBhIG5vbi1kZWF0aCB0ZXN0JyAlICh0ZXN0LCkpCisgICAgICBlbHNlOgorICAgICAgICBu
b25fZGVhdGhfdGVzdF9mb3VuZCA9IFRydWUKKworICBkZWYgX1ZlcmlmeVRlc3RDYXNlc0RvTm90
SW50ZXJsZWF2ZShzZWxmLCB0ZXN0cyk6CisgICAgdGVzdF9jYXNlcyA9IFtdCisgICAgZm9yIHRl
c3QgaW4gdGVzdHM6CisgICAgICBbdGVzdF9jYXNlLCBfXSA9IHRlc3Quc3BsaXQoJy4nKQorICAg
ICAgaWYgdGVzdF9jYXNlcyBhbmQgdGVzdF9jYXNlc1stMV0gIT0gdGVzdF9jYXNlOgorICAgICAg
ICB0ZXN0X2Nhc2VzLmFwcGVuZCh0ZXN0X2Nhc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MSwgdGVzdF9jYXNlcy5jb3VudCh0ZXN0X2Nhc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICdUZXN0IGNhc2UgJXMgaXMgbm90IGdyb3VwZWQgdG9nZXRoZXIgaW4gJXMnICUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAodGVzdF9jYXNlLCB0ZXN0cykpCisKKyAgZGVmIHRlc3RTaHVmZmxl
RG9lc05vdEludGVybGVhdmVUZXN0Q2FzZXMoc2VsZik6CisgICAgc2VsZi5fVmVyaWZ5VGVzdENh
c2VzRG9Ob3RJbnRlcmxlYXZlKFNIVUZGTEVEX0FMTF9URVNUUykKKyAgICBzZWxmLl9WZXJpZnlU
ZXN0Q2FzZXNEb05vdEludGVybGVhdmUoU0hVRkZMRURfQUNUSVZFX1RFU1RTKQorICAgIHNlbGYu
X1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50ZXJsZWF2ZShTSFVGRkxFRF9GSUxURVJFRF9URVNUUykK
KyAgICBzZWxmLl9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUoU0hVRkZMRURfU0hBUkRF
RF9URVNUUykKKworICBkZWYgdGVzdFNodWZmbGVSZXN0b3Jlc09yZGVyQWZ0ZXJFYWNoSXRlcmF0
aW9uKHNlbGYpOgorICAgICMgR2V0IHRoZSB0ZXN0IGxpc3RzIGluIGFsbCAzIGl0ZXJhdGlvbnMs
IHVzaW5nIHJhbmRvbSBzZWVkIDEsIDIsCisgICAgIyBhbmQgMyByZXNwZWN0aXZlbHkuICBHb29n
bGUgVGVzdCBwaWNrcyBhIGRpZmZlcmVudCBzZWVkIGluIGVhY2gKKyAgICAjIGl0ZXJhdGlvbiwg
YW5kIHRoaXMgdGVzdCBkZXBlbmRzIG9uIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uCisgICAg
IyBwaWNraW5nIHN1Y2Nlc3NpdmUgbnVtYmVycy4gIFRoaXMgZGVwZW5kZW5jeSBpcyBub3QgaWRl
YWwsIGJ1dAorICAgICMgbWFrZXMgdGhlIHRlc3QgbXVjaCBlYXNpZXIgdG8gd3JpdGUuCisgICAg
W3Rlc3RzX2luX2l0ZXJhdGlvbjEsIHRlc3RzX2luX2l0ZXJhdGlvbjIsIHRlc3RzX2luX2l0ZXJh
dGlvbjNdID0gKAorICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisgICAgICAgICAg
ICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpLCBSZXBlYXRGbGFnKDMpXSkp
CisKKyAgICAjIE1ha2Ugc3VyZSBydW5uaW5nIHRoZSB0ZXN0cyB3aXRoIHJhbmRvbSBzZWVkIDEg
Z2V0cyB0aGUgc2FtZQorICAgICMgb3JkZXIgYXMgaW4gaXRlcmF0aW9uIDEgYWJvdmUuCisgICAg
W3Rlc3RzX3dpdGhfc2VlZDFdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICB7
fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSkKKyAgICBzZWxmLmFzc2VydEVx
dWFsKHRlc3RzX2luX2l0ZXJhdGlvbjEsIHRlc3RzX3dpdGhfc2VlZDEpCisKKyAgICAjIE1ha2Ug
c3VyZSBydW5uaW5nIHRoZSB0ZXN0cyB3aXRoIHJhbmRvbSBzZWVkIDIgZ2V0cyB0aGUgc2FtZQor
ICAgICMgb3JkZXIgYXMgaW4gaXRlcmF0aW9uIDIgYWJvdmUuICBTdWNjZXNzIG1lYW5zIHRoYXQg
R29vZ2xlIFRlc3QKKyAgICAjIGNvcnJlY3RseSByZXN0b3JlcyB0aGUgdGVzdCBvcmRlciBiZWZv
cmUgcmUtc2h1ZmZsaW5nIGF0IHRoZQorICAgICMgYmVnaW5uaW5nIG9mIGl0ZXJhdGlvbiAyLgor
ICAgIFt0ZXN0c193aXRoX3NlZWQyXSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKKyAgICAg
ICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygyKV0pCisgICAgc2VsZi5hc3Nl
cnRFcXVhbCh0ZXN0c19pbl9pdGVyYXRpb24yLCB0ZXN0c193aXRoX3NlZWQyKQorCisgICAgIyBN
YWtlIHN1cmUgcnVubmluZyB0aGUgdGVzdHMgd2l0aCByYW5kb20gc2VlZCAzIGdldHMgdGhlIHNh
bWUKKyAgICAjIG9yZGVyIGFzIGluIGl0ZXJhdGlvbiAzIGFib3ZlLiAgU3VjY2VzcyBtZWFucyB0
aGF0IEdvb2dsZSBUZXN0CisgICAgIyBjb3JyZWN0bHkgcmVzdG9yZXMgdGhlIHRlc3Qgb3JkZXIg
YmVmb3JlIHJlLXNodWZmbGluZyBhdCB0aGUKKyAgICAjIGJlZ2lubmluZyBvZiBpdGVyYXRpb24g
My4KKyAgICBbdGVzdHNfd2l0aF9zZWVkM10gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisg
ICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMyldKQorICAgIHNlbGYu
YXNzZXJ0RXF1YWwodGVzdHNfaW5faXRlcmF0aW9uMywgdGVzdHNfd2l0aF9zZWVkMykKKworICBk
ZWYgdGVzdFNodWZmbGVHZW5lcmF0ZXNOZXdPcmRlckluRWFjaEl0ZXJhdGlvbihzZWxmKToKKyAg
ICBbdGVzdHNfaW5faXRlcmF0aW9uMSwgdGVzdHNfaW5faXRlcmF0aW9uMiwgdGVzdHNfaW5faXRl
cmF0aW9uM10gPSAoCisgICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKKyAgICAgICAg
ICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSksIFJlcGVhdEZsYWcoMyld
KSkKKworICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0c19pbl9pdGVyYXRpb24xICE9IHRlc3RzX2luX2l0
ZXJhdGlvbjIsCisgICAgICAgICAgICAgICAgIHRlc3RzX2luX2l0ZXJhdGlvbjEpCisgICAgc2Vs
Zi5hc3NlcnRfKHRlc3RzX2luX2l0ZXJhdGlvbjEgIT0gdGVzdHNfaW5faXRlcmF0aW9uMywKKyAg
ICAgICAgICAgICAgICAgdGVzdHNfaW5faXRlcmF0aW9uMSkKKyAgICBzZWxmLmFzc2VydF8odGVz
dHNfaW5faXRlcmF0aW9uMiAhPSB0ZXN0c19pbl9pdGVyYXRpb24zLAorICAgICAgICAgICAgICAg
ICB0ZXN0c19pbl9pdGVyYXRpb24yKQorCisgIGRlZiB0ZXN0U2h1ZmZsZVNoYXJkZWRUZXN0c1By
ZXNlcnZlc1BhcnRpdGlvbihzZWxmKToKKyAgICAjIElmIHdlIHJ1biBNIHRlc3RzIG9uIE4gc2hh
cmRzLCB0aGUgc2FtZSBNIHRlc3RzIHNob3VsZCBiZSBydW4gaW4KKyAgICAjIHRvdGFsLCByZWdh
cmRsZXNzIG9mIHRoZSByYW5kb20gc2VlZHMgdXNlZCBieSB0aGUgc2hhcmRzLgorICAgIFt0ZXN0
czFdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRF9JTkRFWF9F
TlZfVkFSOiAnMCd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtT
aHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0pCisgICAgW3Rlc3RzMl0gPSBHZXRUZXN0
c0ZvckFsbEl0ZXJhdGlvbnMoe1RPVEFMX1NIQVJEU19FTlZfVkFSOiAnMycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcxJ30s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NodWZmbGVGbGFnKCks
IFJhbmRvbVNlZWRGbGFnKDIwKV0pCisgICAgW3Rlc3RzM10gPSBHZXRUZXN0c0ZvckFsbEl0ZXJh
dGlvbnMoe1RPVEFMX1NIQVJEU19FTlZfVkFSOiAnMycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcyJ30sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRG
bGFnKDI1KV0pCisgICAgc29ydGVkX3NoYXJkZWRfdGVzdHMgPSB0ZXN0czEgKyB0ZXN0czIgKyB0
ZXN0czMKKyAgICBzb3J0ZWRfc2hhcmRlZF90ZXN0cy5zb3J0KCkKKyAgICBzb3J0ZWRfYWN0aXZl
X3Rlc3RzID0gW10KKyAgICBzb3J0ZWRfYWN0aXZlX3Rlc3RzLmV4dGVuZChBQ1RJVkVfVEVTVFMp
CisgICAgc29ydGVkX2FjdGl2ZV90ZXN0cy5zb3J0KCkKKyAgICBzZWxmLmFzc2VydEVxdWFsKHNv
cnRlZF9hY3RpdmVfdGVzdHMsIHNvcnRlZF9zaGFyZGVkX3Rlc3RzKQorCitpZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8uY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0Xy5jYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xZmU1ZjZhYmEyYTVlMGZmY2FiOTE1ZTQ2MzhkMjNmNThjZjQ4ZmYwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXNo
dWZmbGUtdGVzdF8uY2MKQEAgLTAsMCArMSwxMDIgQEAKKy8vIENvcHlyaWdodCAyMDA5LCBHb29n
bGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBWZXJpZmllcyB0aGF0IHRlc3Qgc2h1ZmZsaW5n
IHdvcmtzLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsKKwordXNp
bmcgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyOwordXNpbmcgOjp0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6TWVzc2FnZTsKK3VzaW5nIDo6dGVzdGlu
Zzo6VGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzOwordXNpbmcgOjp0
ZXN0aW5nOjpUZXN0SW5mbzsKK3VzaW5nIDo6dGVzdGluZzo6VW5pdFRlc3Q7Cit1c2luZyA6OnRl
c3Rpbmc6OmludGVybmFsOjpzY29wZWRfcHRyOworCisvLyBUaGUgdGVzdCBtZXRob2RzIGFyZSBl
bXB0eSwgYXMgdGhlIHNvbGUgcHVycG9zZSBvZiB0aGlzIHByb2dyYW0gaXMKKy8vIHRvIHByaW50
IHRoZSB0ZXN0IG5hbWVzIGJlZm9yZS9hZnRlciBzaHVmZmxpbmcuCisKK2NsYXNzIEEgOiBwdWJs
aWMgVGVzdCB7fTsKK1RFU1RfRihBLCBBKSB7fQorVEVTVF9GKEEsIEIpIHt9CisKK1RFU1QoQURl
YXRoVGVzdCwgQSkge30KK1RFU1QoQURlYXRoVGVzdCwgQikge30KK1RFU1QoQURlYXRoVGVzdCwg
Qykge30KKworVEVTVChCLCBBKSB7fQorVEVTVChCLCBCKSB7fQorVEVTVChCLCBDKSB7fQorVEVT
VChCLCBESVNBQkxFRF9EKSB7fQorVEVTVChCLCBESVNBQkxFRF9FKSB7fQorCitURVNUKEJEZWF0
aFRlc3QsIEEpIHt9CitURVNUKEJEZWF0aFRlc3QsIEIpIHt9CisKK1RFU1QoQywgQSkge30KK1RF
U1QoQywgQikge30KK1RFU1QoQywgQykge30KK1RFU1QoQywgRElTQUJMRURfRCkge30KKworVEVT
VChDRGVhdGhUZXN0LCBBKSB7fQorCitURVNUKERJU0FCTEVEX0QsIEEpIHt9CitURVNUKERJU0FC
TEVEX0QsIERJU0FCTEVEX0IpIHt9CisKKy8vIFRoaXMgcHJpbnRlciBwcmludHMgdGhlIGZ1bGwg
dGVzdCBuYW1lcyBvbmx5LCBzdGFydGluZyBlYWNoIHRlc3QKKy8vIGl0ZXJhdGlvbiB3aXRoIGEg
Ii0tLS0iIG1hcmtlci4KK2NsYXNzIFRlc3ROYW1lUHJpbnRlciA6IHB1YmxpYyBFbXB0eVRlc3RF
dmVudExpc3RlbmVyIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25T
dGFydChjb25zdCBVbml0VGVzdCYgLyogdW5pdF90ZXN0ICovLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IC8qIGl0ZXJhdGlvbiAqLykgeworICAgIHByaW50ZigiLS0t
LVxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8m
IHRlc3RfaW5mbykgeworICAgIHByaW50ZigiJXMuJXNcbiIsIHRlc3RfaW5mby50ZXN0X2Nhc2Vf
bmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgfQorfTsKKworfSAgLy8gbmFtZXNwYWNlCisK
K2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICBJbml0R29vZ2xlVGVzdCgmYXJn
YywgYXJndik7CisKKyAgLy8gUmVwbGFjZXMgdGhlIGRlZmF1bHQgcHJpbnRlciB3aXRoIFRlc3RO
YW1lUHJpbnRlciwgd2hpY2ggcHJpbnRzCisgIC8vIHRoZSB0ZXN0IG5hbWUgb25seS4KKyAgVGVz
dEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMgPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlz
dGVuZXJzKCk7CisgIGRlbGV0ZSBsaXN0ZW5lcnMuUmVsZWFzZShsaXN0ZW5lcnMuZGVmYXVsdF9y
ZXN1bHRfcHJpbnRlcigpKTsKKyAgbGlzdGVuZXJzLkFwcGVuZChuZXcgVGVzdE5hbWVQcmludGVy
KTsKKworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRlc3QtcGFydC10ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRlc3QtcGFydC10ZXN0LmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNkMmQ2ZjllODU4ZjUyNzliYTVhMTZhNWQxYTZlMzdhZmZlOTEwYWQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdGVzdC1w
YXJ0LXRlc3QuY2MKQEAgLTAsMCArMSwyMDUgQEAKKy8vIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJ
bmMuCisvLyBBbGwgUmlnaHRzIFJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgiCisK
KyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCit1c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwordXNp
bmcgdGVzdGluZzo6VGVzdDsKK3VzaW5nIHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OwordXNpbmcg
dGVzdGluZzo6VGVzdFBhcnRSZXN1bHRBcnJheTsKKworbmFtZXNwYWNlIHsKKworLy8gVGVzdHMg
dGhlIFRlc3RQYXJ0UmVzdWx0IGNsYXNzLgorCisvLyBUaGUgdGVzdCBmaXh0dXJlIGZvciB0ZXN0
aW5nIFRlc3RQYXJ0UmVzdWx0LgorY2xhc3MgVGVzdFBhcnRSZXN1bHRUZXN0IDogcHVibGljIFRl
c3QgeworIHByb3RlY3RlZDoKKyAgVGVzdFBhcnRSZXN1bHRUZXN0KCkKKyAgICAgIDogcjFfKFRl
c3RQYXJ0UmVzdWx0OjprU3VjY2VzcywgImZvby9iYXIuY2MiLCAxMCwgIlN1Y2Nlc3MhIiksCisg
ICAgICAgIHIyXyhUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwgImZvby9iYXIuY2Mi
LCAtMSwgIkZhaWx1cmUhIiksCisgICAgICAgIHIzXyhUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFp
bHVyZSwgTlVMTCwgLTEsICJGYWlsdXJlISIpIHt9CisKKyAgVGVzdFBhcnRSZXN1bHQgcjFfLCBy
Ml8sIHIzXzsKK307CisKKworVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgQ29uc3RydWN0b3JX
b3JrcykgeworICBNZXNzYWdlIG1lc3NhZ2U7CisgIG1lc3NhZ2UgPDwgInNvbWV0aGluZyBpcyB0
ZXJyaWJseSB3cm9uZyI7CisgIG1lc3NhZ2UgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHRl
c3Rpbmc6OmludGVybmFsOjprU3RhY2tUcmFjZU1hcmtlcik7CisgIG1lc3NhZ2UgPDwgInNvbWUg
dW5pbXBvcnRhbnQgc3RhY2sgdHJhY2UiOworCisgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IHJlc3Vs
dChUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJzb21lX2ZpbGUuY2MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLkdldFN0cmluZygpLmNf
c3RyKCkpOworCisgIEVYUEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwg
cmVzdWx0LnR5cGUoKSk7CisgIEVYUEVDVF9TVFJFUSgic29tZV9maWxlLmNjIiwgcmVzdWx0LmZp
bGVfbmFtZSgpKTsKKyAgRVhQRUNUX0VRKDQyLCByZXN1bHQubGluZV9udW1iZXIoKSk7CisgIEVY
UEVDVF9TVFJFUShtZXNzYWdlLkdldFN0cmluZygpLmNfc3RyKCksIHJlc3VsdC5tZXNzYWdlKCkp
OworICBFWFBFQ1RfU1RSRVEoInNvbWV0aGluZyBpcyB0ZXJyaWJseSB3cm9uZyIsIHJlc3VsdC5z
dW1tYXJ5KCkpOworfQorCitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBSZXN1bHRBY2Nlc3Nv
cnNXb3JrKSB7CisgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IHN1Y2Nlc3MoVGVzdFBhcnRSZXN1bHQ6
OmtTdWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlLmNjIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAibWVzc2FnZSIpOworICBFWFBFQ1RfVFJVRShzdWNjZXNzLnBhc3NlZCgpKTsKKyAg
RVhQRUNUX0ZBTFNFKHN1Y2Nlc3MuZmFpbGVkKCkpOworICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcy5u
b25mYXRhbGx5X2ZhaWxlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MuZmF0YWxseV9mYWls
ZWQoKSk7CisKKyAgY29uc3QgVGVzdFBhcnRSZXN1bHQgbm9uZmF0YWxfZmFpbHVyZShUZXN0UGFy
dFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZmlsZS5jYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3Nh
Z2UiKTsKKyAgRVhQRUNUX0ZBTFNFKG5vbmZhdGFsX2ZhaWx1cmUucGFzc2VkKCkpOworICBFWFBF
Q1RfVFJVRShub25mYXRhbF9mYWlsdXJlLmZhaWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUobm9uZmF0
YWxfZmFpbHVyZS5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKG5vbmZhdGFs
X2ZhaWx1cmUuZmF0YWxseV9mYWlsZWQoKSk7CisKKyAgY29uc3QgVGVzdFBhcnRSZXN1bHQgZmF0
YWxfZmFpbHVyZShUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5jYyIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Im1lc3NhZ2UiKTsKKyAgRVhQRUNUX0ZBTFNFKGZhdGFsX2ZhaWx1cmUucGFzc2VkKCkpOworICBF
WFBFQ1RfVFJVRShmYXRhbF9mYWlsdXJlLmZhaWxlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKGZhdGFs
X2ZhaWx1cmUubm9uZmF0YWxseV9mYWlsZWQoKSk7CisgIEVYUEVDVF9UUlVFKGZhdGFsX2ZhaWx1
cmUuZmF0YWxseV9mYWlsZWQoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0Ojp0eXBl
KCkuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCB0eXBlKSB7CisgIEVYUEVDVF9FUShUZXN0
UGFydFJlc3VsdDo6a1N1Y2Nlc3MsIHIxXy50eXBlKCkpOworICBFWFBFQ1RfRVEoVGVzdFBhcnRS
ZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsIHIyXy50eXBlKCkpOworICBFWFBFQ1RfRVEoVGVzdFBh
cnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsIHIzXy50eXBlKCkpOworfQorCisvLyBUZXN0cyBUZXN0
UGFydFJlc3VsdDo6ZmlsZV9uYW1lKCkuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBmaWxl
X25hbWUpIHsKKyAgRVhQRUNUX1NUUkVRKCJmb28vYmFyLmNjIiwgcjFfLmZpbGVfbmFtZSgpKTsK
KyAgRVhQRUNUX1NUUkVRKE5VTEwsIHIzXy5maWxlX25hbWUoKSk7Cit9CisKKy8vIFRlc3RzIFRl
c3RQYXJ0UmVzdWx0OjpsaW5lX251bWJlcigpLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwg
bGluZV9udW1iZXIpIHsKKyAgRVhQRUNUX0VRKDEwLCByMV8ubGluZV9udW1iZXIoKSk7CisgIEVY
UEVDVF9FUSgtMSwgcjJfLmxpbmVfbnVtYmVyKCkpOworfQorCisvLyBUZXN0cyBUZXN0UGFydFJl
c3VsdDo6bWVzc2FnZSgpLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgbWVzc2FnZSkgewor
ICBFWFBFQ1RfU1RSRVEoIlN1Y2Nlc3MhIiwgcjFfLm1lc3NhZ2UoKSk7Cit9CisKKy8vIFRlc3Rz
IFRlc3RQYXJ0UmVzdWx0OjpwYXNzZWQoKS4KK1RFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIFBh
c3NlZCkgeworICBFWFBFQ1RfVFJVRShyMV8ucGFzc2VkKCkpOworICBFWFBFQ1RfRkFMU0UocjJf
LnBhc3NlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHIzXy5wYXNzZWQoKSk7Cit9CisKKy8vIFRlc3Rz
IFRlc3RQYXJ0UmVzdWx0OjpmYWlsZWQoKS4KK1RFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIEZh
aWxlZCkgeworICBFWFBFQ1RfRkFMU0UocjFfLmZhaWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUocjJf
LmZhaWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUocjNfLmZhaWxlZCgpKTsKK30KKworLy8gVGVzdHMg
VGVzdFBhcnRSZXN1bHQ6OmZhdGFsbHlfZmFpbGVkKCkuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRU
ZXN0LCBGYXRhbGx5RmFpbGVkKSB7CisgIEVYUEVDVF9GQUxTRShyMV8uZmF0YWxseV9mYWlsZWQo
KSk7CisgIEVYUEVDVF9GQUxTRShyMl8uZmF0YWxseV9mYWlsZWQoKSk7CisgIEVYUEVDVF9UUlVF
KHIzXy5mYXRhbGx5X2ZhaWxlZCgpKTsKK30KKworLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6Om5v
bmZhdGFsbHlfZmFpbGVkKCkuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBOb25mYXRhbGx5
RmFpbGVkKSB7CisgIEVYUEVDVF9GQUxTRShyMV8ubm9uZmF0YWxseV9mYWlsZWQoKSk7CisgIEVY
UEVDVF9UUlVFKHIyXy5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHIzXy5u
b25mYXRhbGx5X2ZhaWxlZCgpKTsKK30KKworLy8gVGVzdHMgdGhlIFRlc3RQYXJ0UmVzdWx0QXJy
YXkgY2xhc3MuCisKK2NsYXNzIFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0IDogcHVibGljIFRlc3Qg
eworIHByb3RlY3RlZDoKKyAgVGVzdFBhcnRSZXN1bHRBcnJheVRlc3QoKQorICAgICAgOiByMV8o
VGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsICJmb28vYmFyLmNjIiwgLTEsICJGYWls
dXJlIDEiKSwKKyAgICAgICAgcjJfKFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLCAiZm9v
L2Jhci5jYyIsIC0xLCAiRmFpbHVyZSAyIikge30KKworICBjb25zdCBUZXN0UGFydFJlc3VsdCBy
MV8sIHIyXzsKK307CisKKy8vIFRlc3RzIHRoYXQgVGVzdFBhcnRSZXN1bHRBcnJheSBpbml0aWFs
bHkgaGFzIHNpemUgMC4KK1RFU1RfRihUZXN0UGFydFJlc3VsdEFycmF5VGVzdCwgSW5pdGlhbFNp
emVJc1plcm8pIHsKKyAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOworICBFWFBFQ1RfRVEo
MCwgcmVzdWx0cy5zaXplKCkpOworfQorCisvLyBUZXN0cyB0aGF0IFRlc3RQYXJ0UmVzdWx0QXJy
YXkgY29udGFpbnMgdGhlIGdpdmVuIFRlc3RQYXJ0UmVzdWx0CisvLyBhZnRlciBvbmUgQXBwZW5k
KCkgb3BlcmF0aW9uLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0LCBDb250YWluc0dp
dmVuUmVzdWx0QWZ0ZXJBcHBlbmQpIHsKKyAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOwor
ICByZXN1bHRzLkFwcGVuZChyMV8pOworICBFWFBFQ1RfRVEoMSwgcmVzdWx0cy5zaXplKCkpOwor
ICBFWFBFQ1RfU1RSRVEoIkZhaWx1cmUgMSIsIHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMCku
bWVzc2FnZSgpKTsKK30KKworLy8gVGVzdHMgdGhhdCBUZXN0UGFydFJlc3VsdEFycmF5IGNvbnRh
aW5zIHRoZSBnaXZlbiBUZXN0UGFydFJlc3VsdHMKKy8vIGFmdGVyIHR3byBBcHBlbmQoKSBvcGVy
YXRpb25zLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0LCBDb250YWluc0dpdmVuUmVz
dWx0c0FmdGVyVHdvQXBwZW5kcykgeworICBUZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7Cisg
IHJlc3VsdHMuQXBwZW5kKHIxXyk7CisgIHJlc3VsdHMuQXBwZW5kKHIyXyk7CisgIEVYUEVDVF9F
USgyLCByZXN1bHRzLnNpemUoKSk7CisgIEVYUEVDVF9TVFJFUSgiRmFpbHVyZSAxIiwgcmVzdWx0
cy5HZXRUZXN0UGFydFJlc3VsdCgwKS5tZXNzYWdlKCkpOworICBFWFBFQ1RfU1RSRVEoIkZhaWx1
cmUgMiIsIHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMSkubWVzc2FnZSgpKTsKK30KKwordHlw
ZWRlZiBUZXN0UGFydFJlc3VsdEFycmF5VGVzdCBUZXN0UGFydFJlc3VsdEFycmF5RGVhdGhUZXN0
OworCisvLyBUZXN0cyB0aGF0IHRoZSBwcm9ncmFtIGRpZXMgd2hlbiBHZXRUZXN0UGFydFJlc3Vs
dCgpIGlzIGNhbGxlZCB3aXRoCisvLyBhbiBpbnZhbGlkIGluZGV4LgorVEVTVF9GKFRlc3RQYXJ0
UmVzdWx0QXJyYXlEZWF0aFRlc3QsIERpZXNXaGVuSW5kZXhJc091dE9mQm91bmQpIHsKKyAgVGVz
dFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOworICByZXN1bHRzLkFwcGVuZChyMV8pOworCisgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQocmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgtMSksICIi
KTsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChyZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0
KDEpLCAiIik7Cit9CisKKy8vIEZJWE1FOiBBZGQgYSB0ZXN0IGZvciB0aGUgY2xhc3MgSGFzTmV3
RmF0YWxGYWlsdXJlSGVscGVyLgorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10ZXN0Ml90ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRlc3QyX3Rlc3QuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzJmOThkYzdkMWMzZTkwOTc1OGJhNjA3NzJlOTc3NDk4Y2U4MWZmMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10ZXN0Ml90ZXN0
LmNjCkBAIC0wLDAgKzEsNjEgQEAKKy8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
Ky8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
Ky8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworLy8KKy8vIFRlc3RzIGZvciBHb29nbGUgVGVzdCBpdHNlbGYuICBUaGlzIHZl
cmlmaWVzIHRoYXQgdGhlIGJhc2ljIGNvbnN0cnVjdHMgb2YKKy8vIEdvb2dsZSBUZXN0IHdvcmsu
CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImdvb2dsZXRlc3QtcGFyYW0t
dGVzdC10ZXN0LmgiCisKK3VzaW5nIDo6dGVzdGluZzo6VmFsdWVzOwordXNpbmcgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I7CisKKy8vIFRlc3RzIHRoYXQgZ2VuZXJhdG9ycyBk
ZWZpbmVkIGluIGEgZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXQKKy8vIGFyZSBmdW5jdGlvbmFs
LiBUaGUgdGVzdCB1c2luZyBleHRlcm5fZ2VuXzIgaXMgZGVmaW5lZAorLy8gaW4gZ29vZ2xldGVz
dC1wYXJhbS10ZXN0LXRlc3QuY2MuCitQYXJhbUdlbmVyYXRvcjxpbnQ+IGV4dGVybl9nZW5fMiA9
IFZhbHVlcygzMyk7CisKKy8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBj
YW4gYmUgZGVmaW5lZCBpbiBvbmUgdHJhbnNsYXRpb24gdW5pdAorLy8gYW5kIGluc3RhbnRpYXRl
ZCBpbiBhbm90aGVyLiBUaGUgdGVzdCBpcyBkZWZpbmVkIGluCisvLyBnb29nbGV0ZXN0LXBhcmFt
LXRlc3QtdGVzdC5jYyBhbmQgRXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCBmaXh0dXJlIGNsYXNz
IGlzCisvLyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oLgorSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoTXVsdGlwbGVzT2YzMywKKyAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVy
bmFsSW5zdGFudGlhdGlvblRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMzMs
IDY2KSk7CisKKy8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUg
aW5zdGFudGlhdGVkCisvLyBpbiBtdWx0aXBsZSB0cmFuc2xhdGlvbiB1bml0cy4gQW5vdGhlciBp
bnN0YW50aWF0aW9uIGlzIGRlZmluZWQKKy8vIGluIGdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0
LmNjIGFuZAorLy8gSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0IGZp
eHR1cmUgaXMgZGVmaW5lZCBpbgorLy8gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmgKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3Rh
bnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbHVlcyg0MiozLCA0Mio0LCA0Mio1KSk7CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3QucHkg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVy
ZS10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2Y2I5ZjZkYTMxZGVhZGZkN2VlZmQyMzVlOWIzN2RmMjlm
YjNiYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0LnB5CkBAIC0wLDAgKzEsMTY5IEBACisjIS91
c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJUZXN0cyBHb29nbGUg
VGVzdCdzIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQuCisK
K1RoaXMgc2NyaXB0IGludm9rZXMgZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfIChh
IHByb2dyYW0gd3JpdHRlbiB3aXRoCitHb29nbGUgVGVzdCkgd2l0aCBkaWZmZXJlbnQgZW52aXJv
bm1lbnRzIGFuZCBjb21tYW5kIGxpbmUgZmxhZ3MuCisiIiIKKworaW1wb3J0IG9zCitpbXBvcnQg
Z3Rlc3RfdGVzdF91dGlscworCisKKyMgQ29uc3RhbnRzLgorCisjIFRoZSBjb21tYW5kIGxpbmUg
ZmxhZyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUuCitU
SFJPV19PTl9GQUlMVVJFID0gJ2d0ZXN0X3Rocm93X29uX2ZhaWx1cmUnCisKKyMgUGF0aCB0byB0
aGUgZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfIHByb2dyYW0sIGNvbXBpbGVkIHdp
dGgKKyMgZXhjZXB0aW9ucyBkaXNhYmxlZC4KK0VYRV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5H
ZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisgICAgJ2dvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10
ZXN0XycpCisKKworIyBVdGlsaXRpZXMuCisKKworZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1
ZSk6CisgICIiIlNldHMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSBnaXZlbiB2YWx1ZTsg
dW5zZXRzIGl0IHdoZW4gdGhlCisgIGdpdmVuIHZhbHVlIGlzIE5vbmUuCisgICIiIgorCisgIGVu
dl92YXIgPSBlbnZfdmFyLnVwcGVyKCkKKyAgaWYgdmFsdWUgaXMgbm90IE5vbmU6CisgICAgb3Mu
ZW52aXJvbltlbnZfdmFyXSA9IHZhbHVlCisgIGVsaWYgZW52X3ZhciBpbiBvcy5lbnZpcm9uOgor
ICAgIGRlbCBvcy5lbnZpcm9uW2Vudl92YXJdCisKKworZGVmIFJ1bihjb21tYW5kKToKKyAgIiIi
UnVucyBhIGNvbW1hbmQ7IHJldHVybnMgVHJ1ZS9GYWxzZSBpZiBpdHMgZXhpdCBjb2RlIGlzL2lz
bid0IDAuIiIiCisKKyAgcHJpbnQgJ1J1bm5pbmcgIiVzIi4gLiAuJyAlICcgJy5qb2luKGNvbW1h
bmQpCisgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKKyAgcmV0dXJu
IHAuZXhpdGVkIGFuZCBwLmV4aXRfY29kZSA9PSAwCisKKworIyBUaGUgdGVzdHMuICBGSVhNRTog
cmVmYWN0b3IgdGhlIGNsYXNzIHRvIHNoYXJlIGNvbW1vbgorIyBsb2dpYyB3aXRoIGNvZGUgaW4g
Z29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0LnB5LgorY2xhc3MgVGhyb3dPbkZh
aWx1cmVUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJUZXN0cyB0aGUgdGhy
b3ctb24tZmFpbHVyZSBtb2RlLiIiIgorCisgIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwgZW52X3Zh
cl92YWx1ZSwgZmxhZ192YWx1ZSwgc2hvdWxkX2ZhaWwpOgorICAgICIiIlJ1bnMgZ29vZ2xldGVz
dC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfIGFuZCB2ZXJpZmllcyB0aGF0IGl0IGRvZXMKKyAgICAo
b3IgZG9lcyBub3QpIGV4aXQgd2l0aCBhIG5vbi16ZXJvIGNvZGUuCisKKyAgICBBcmdzOgorICAg
ICAgZW52X3Zhcl92YWx1ZTogICAgdmFsdWUgb2YgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUg
ZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlOyBOb25lIGlmIHRo
ZSB2YXJpYWJsZSBzaG91bGQgYmUgdW5zZXQuCisgICAgICBmbGFnX3ZhbHVlOiAgICAgICB2YWx1
ZSBvZiB0aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWc7CisgICAgICAgICAgICAgICAg
ICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBub3QgYmUgcHJlc2VudC4KKyAgICAgIHNo
b3VsZF9mYWlsOiAgICAgIFRydWUgaWZmIHRoZSBwcm9ncmFtIGlzIGV4cGVjdGVkIHRvIGZhaWwu
CisgICAgIiIiCisKKyAgICBTZXRFbnZWYXIoVEhST1dfT05fRkFJTFVSRSwgZW52X3Zhcl92YWx1
ZSkKKworICAgIGlmIGVudl92YXJfdmFsdWUgaXMgTm9uZToKKyAgICAgIGVudl92YXJfdmFsdWVf
bXNnID0gJyBpcyBub3Qgc2V0JworICAgIGVsc2U6CisgICAgICBlbnZfdmFyX3ZhbHVlX21zZyA9
ICc9JyArIGVudl92YXJfdmFsdWUKKworICAgIGlmIGZsYWdfdmFsdWUgaXMgTm9uZToKKyAgICAg
IGZsYWcgPSAnJworICAgIGVsaWYgZmxhZ192YWx1ZSA9PSAnMCc6CisgICAgICBmbGFnID0gJy0t
JXM9MCcgJSBUSFJPV19PTl9GQUlMVVJFCisgICAgZWxzZToKKyAgICAgIGZsYWcgPSAnLS0lcycg
JSBUSFJPV19PTl9GQUlMVVJFCisKKyAgICBjb21tYW5kID0gW0VYRV9QQVRIXQorICAgIGlmIGZs
YWc6CisgICAgICBjb21tYW5kLmFwcGVuZChmbGFnKQorCisgICAgaWYgc2hvdWxkX2ZhaWw6Cisg
ICAgICBzaG91bGRfb3Jfbm90ID0gJ3Nob3VsZCcKKyAgICBlbHNlOgorICAgICAgc2hvdWxkX29y
X25vdCA9ICdzaG91bGQgbm90JworCisgICAgZmFpbGVkID0gbm90IFJ1bihjb21tYW5kKQorCisg
ICAgU2V0RW52VmFyKFRIUk9XX09OX0ZBSUxVUkUsIE5vbmUpCisKKyAgICBtc2cgPSAoJ3doZW4g
JXMlcywgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4gIiVzIiAlcyBjYXVzZSBhIG5vbi16ZXJvICcK
KyAgICAgICAgICAgJ2V4aXQgY29kZS4nICUKKyAgICAgICAgICAgKFRIUk9XX09OX0ZBSUxVUkUs
IGVudl92YXJfdmFsdWVfbXNnLCAnICcuam9pbihjb21tYW5kKSwKKyAgICAgICAgICAgIHNob3Vs
ZF9vcl9ub3QpKQorICAgIHNlbGYuYXNzZXJ0XyhmYWlsZWQgPT0gc2hvdWxkX2ZhaWwsIG1zZykK
KworICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcihzZWxmKToKKyAgICAiIiJUZXN0cyB0aGUgYmVo
YXZpb3Igb2YgdGhlIGRlZmF1bHQgbW9kZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVu
dl92YXJfdmFsdWU9Tm9uZSwgZmxhZ192YWx1ZT1Ob25lLCBzaG91bGRfZmFpbD1GYWxzZSkKKwor
ICBkZWYgdGVzdFRocm93T25GYWlsdXJlRW52VmFyKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5n
IHRoZSBHVEVTVF9USFJPV19PTl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlhYmxlLiIiIgorCisg
ICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ192YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWls
PUZhbHNlKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAorICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBz
aG91bGRfZmFpbD1UcnVlKQorCisgIGRlZiB0ZXN0VGhyb3dPbkZhaWx1cmVGbGFnKHNlbGYpOgor
ICAgICIiIlRlc3RzIHVzaW5nIHRoZSAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmUgZmxhZy4iIiIK
KworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAg
ICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBzaG91bGRf
ZmFpbD1GYWxzZSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCisg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkX2ZhaWw9VHJ1ZSkKKworICBkZWYgdGVzdFRocm93T25GYWlsdXJlRmxhZ092ZXJy
aWRlc0VudlZhcihzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0IC0tZ3Rlc3RfdGhyb3dfb25fZmFp
bHVyZSBvdmVycmlkZXMgR1RFU1RfVEhST1dfT05fRkFJTFVSRS4iIiIKKworICAgIHNlbGYuUnVu
QW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdf
dmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPUZhbHNlKQorICAg
IHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAg
ICAgIGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPVRy
dWUpCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCisgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAgc2hvdWxk
X2ZhaWw9RmFsc2UpCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCisg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkX2ZhaWw9VHJ1ZSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBn
dGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8uY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0Xy5jYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mOWEyYzY0NDhhMjljYTI5NjQ5YTEyNDgwNTlhOTg1YTUxYWY4NjM2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRo
cm93LW9uLWZhaWx1cmUtdGVzdF8uY2MKQEAgLTAsMCArMSw3MSBAQAorLy8gQ29weXJpZ2h0IDIw
MDksIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisv
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIFRlc3RzIEdvb2dsZSBUZXN0J3Mg
dGhyb3ctb24tZmFpbHVyZSBtb2RlIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4KKy8vCisvLyBU
aGlzIHByb2dyYW0gbXVzdCBiZSBjb21waWxlZCB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQuICBJ
dCB3aWxsIGJlCisvLyBpbnZva2VkIGJ5IGdvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0
LnB5LCBhbmQgaXMgZXhwZWN0ZWQgdG8gZXhpdAorLy8gd2l0aCBub24temVybyBpbiB0aGUgdGhy
b3ctb24tZmFpbHVyZSBtb2RlIG9yIDAgb3RoZXJ3aXNlLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+ICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBm
Zmx1c2gsIGZwcmludGYsIE5VTEwsIGV0Yy4KKyNpbmNsdWRlIDxzdGRsaWIuaD4gICAgICAgICAg
ICAgICAgICAgICAvLyBmb3IgZXhpdAorI2luY2x1ZGUgPGV4Y2VwdGlvbj4gICAgICAgICAgICAg
ICAgICAgIC8vIGZvciBzZXRfdGVybWluYXRlCisKKy8vIFRoaXMgdGVybWluYXRlIGhhbmRsZXIg
YWJvcnRzIHRoZSBwcm9ncmFtIHVzaW5nIGV4aXQoKSByYXRoZXIgdGhhbiBhYm9ydCgpLgorLy8g
VGhpcyBhdm9pZHMgc2hvd2luZyBwb3AtdXBzIG9uIFdpbmRvd3Mgc3lzdGVtcyBhbmQgY29yZSBk
dW1wcyBvbiBVbml4LWxpa2UKKy8vIG9uZXMuCit2b2lkIFRlcm1pbmF0ZUhhbmRsZXIoKSB7Cisg
IGZwcmludGYoc3RkZXJyLCAiJXNcbiIsICJVbmhhbmRsZWQgQysrIGV4Y2VwdGlvbiB0ZXJtaW5h
dGluZyB0aGUgcHJvZ3JhbS4iKTsKKyAgZmZsdXNoKE5VTEwpOworICBleGl0KDEpOworfQorCitp
bnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9O
UworICBzdGQ6OnNldF90ZXJtaW5hdGUoJlRlcm1pbmF0ZUhhbmRsZXIpOworI2VuZGlmCisgIHRl
c3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICAvLyBXZSB3YW50IHRvIGVu
c3VyZSB0aGF0IHBlb3BsZSBjYW4gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW4KKyAgLy8g
b3RoZXIgdGVzdGluZyBmcmFtZXdvcmtzLCBhcyBsb25nIGFzIHRoZXkgaW5pdGlhbGl6ZSBHb29n
bGUgVGVzdAorICAvLyBwcm9wZXJseSBhbmQgc2V0IHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUu
ICBUaGVyZWZvcmUsIHdlIGRvbid0CisgIC8vIHVzZSBHb29nbGUgVGVzdCdzIGNvbnN0cnVjdHMg
Zm9yIGRlZmluaW5nIGFuZCBydW5uaW5nIHRlc3RzCisgIC8vIChlLmcuIFRFU1QgYW5kIFJVTl9B
TExfVEVTVFMpIGhlcmUuCisKKyAgLy8gSW4gdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRo
IGV4Y2VwdGlvbnMgZGlzYWJsZWQsIHRoaXMKKyAgLy8gYXNzZXJ0aW9uIHdpbGwgY2F1c2UgdGhl
IHByb2dyYW0gdG8gZXhpdCB3aXRoIGEgbm9uLXplcm8gY29kZS4KKyAgRVhQRUNUX0VRKDIsIDMp
OworCisgIC8vIFdoZW4gbm90IGluIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUsIHRoZSBjb250
cm9sIHdpbGwgcmVhY2gKKyAgLy8gaGVyZS4KKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdHVwbGUtdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10dXBsZS10ZXN0LmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRkODJjMTYwZjE3N2Q2ZjNiYWRkNzcwNjRhYjhjN2U5OGJkMjk3NjcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdHVwbGUt
dGVzdC5jYwpAQCAtMCwwICsxLDMxOSBAQAorLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMu
CisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5o
IgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNw
YWNlIHsKKwordXNpbmcgOjpzdGQ6OnRyMTo6Z2V0OwordXNpbmcgOjpzdGQ6OnRyMTo6bWFrZV90
dXBsZTsKK3VzaW5nIDo6c3RkOjp0cjE6OnR1cGxlOwordXNpbmcgOjpzdGQ6OnRyMTo6dHVwbGVf
ZWxlbWVudDsKK3VzaW5nIDo6c3RkOjp0cjE6OnR1cGxlX3NpemU7Cit1c2luZyA6OnRlc3Rpbmc6
OlN0YXRpY0Fzc2VydFR5cGVFcTsKKworLy8gVGVzdHMgdGhhdCB0dXBsZV9lbGVtZW50PEssIHR1
cGxlPFQwLCBUMSwgLi4uLCBUTj4gPjo6dHlwZSByZXR1cm5zIFRLLgorVEVTVCh0dXBsZV9lbGVt
ZW50X1Rlc3QsIFJldHVybnNFbGVtZW50VHlwZSkgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50
LCB0dXBsZV9lbGVtZW50PDAsIHR1cGxlPGludCwgY2hhcj4gPjo6dHlwZT4oKTsKKyAgU3RhdGlj
QXNzZXJ0VHlwZUVxPGludCYsIHR1cGxlX2VsZW1lbnQ8MSwgdHVwbGU8ZG91YmxlLCBpbnQmPiA+
Ojp0eXBlPigpOworICBTdGF0aWNBc3NlcnRUeXBlRXE8Ym9vbCwgdHVwbGVfZWxlbWVudDwyLCB0
dXBsZTxkb3VibGUsIGludCwgYm9vbD4gPjo6dHlwZT4oKTsKK30KKworLy8gVGVzdHMgdGhhdCB0
dXBsZV9zaXplPFQ+Ojp2YWx1ZSBnaXZlcyB0aGUgbnVtYmVyIG9mIGZpZWxkcyBpbiB0dXBsZQor
Ly8gdHlwZSBULgorVEVTVCh0dXBsZV9zaXplX1Rlc3QsIFJldHVybnNOdW1iZXJPZkZpZWxkcykg
eworICBFWFBFQ1RfRVEoMCwgK3R1cGxlX3NpemU8dHVwbGU8PiA+Ojp2YWx1ZSk7CisgIEVYUEVD
VF9FUSgxLCArdHVwbGVfc2l6ZTx0dXBsZTx2b2lkKj4gPjo6dmFsdWUpOworICBFWFBFQ1RfRVEo
MSwgK3R1cGxlX3NpemU8dHVwbGU8Y2hhcj4gPjo6dmFsdWUpOworICBFWFBFQ1RfRVEoMSwgKyh0
dXBsZV9zaXplPHR1cGxlPHR1cGxlPGludCwgZG91YmxlPiA+ID46OnZhbHVlKSk7CisgIEVYUEVD
VF9FUSgyLCArKHR1cGxlX3NpemU8dHVwbGU8aW50JiwgY29uc3QgY2hhcj4gPjo6dmFsdWUpKTsK
KyAgRVhQRUNUX0VRKDMsICsodHVwbGVfc2l6ZTx0dXBsZTxjaGFyKiwgdm9pZCwgY29uc3QgYm9v
bCY+ID46OnZhbHVlKSk7Cit9CisKKy8vIFRlc3RzIGNvbXBhcmluZyBhIHR1cGxlIHdpdGggaXRz
ZWxmLgorVEVTVChDb21wYXJpc29uVGVzdCwgQ29tcGFyZXNXaXRoU2VsZikgeworICBjb25zdCB0
dXBsZTxpbnQsIGNoYXIsIGJvb2w+IGEoNSwgJ2EnLCBmYWxzZSk7CisKKyAgRVhQRUNUX1RSVUUo
YSA9PSBhKTsKKyAgRVhQRUNUX0ZBTFNFKGEgIT0gYSk7Cit9CisKKy8vIFRlc3RzIGNvbXBhcmlu
ZyB0d28gdHVwbGVzIHdpdGggdGhlIHNhbWUgdmFsdWUuCitURVNUKENvbXBhcmlzb25UZXN0LCBD
b21wYXJlc0VxdWFsVHVwbGVzKSB7CisgIGNvbnN0IHR1cGxlPGludCwgYm9vbD4gYSg1LCB0cnVl
KSwgYig1LCB0cnVlKTsKKworICBFWFBFQ1RfVFJVRShhID09IGIpOworICBFWFBFQ1RfRkFMU0Uo
YSAhPSBiKTsKK30KKworLy8gVGVzdHMgY29tcGFyaW5nIHR3byBkaWZmZXJlbnQgdHVwbGVzIHRo
YXQgaGF2ZSBubyByZWZlcmVuY2UgZmllbGRzLgorVEVTVChDb21wYXJpc29uVGVzdCwgQ29tcGFy
ZXNVbmVxdWFsVHVwbGVzV2l0aG91dFJlZmVyZW5jZUZpZWxkcykgeworICB0eXBlZGVmIHR1cGxl
PGNvbnN0IGludCwgY2hhcj4gRm9vVHVwbGU7CisKKyAgY29uc3QgRm9vVHVwbGUgYSgwLCAneCcp
OworICBjb25zdCBGb29UdXBsZSBiKDEsICdhJyk7CisKKyAgRVhQRUNUX1RSVUUoYSAhPSBiKTsK
KyAgRVhQRUNUX0ZBTFNFKGEgPT0gYik7CisKKyAgY29uc3QgRm9vVHVwbGUgYygxLCAnYicpOwor
CisgIEVYUEVDVF9UUlVFKGIgIT0gYyk7CisgIEVYUEVDVF9GQUxTRShiID09IGMpOworfQorCisv
LyBUZXN0cyBjb21wYXJpbmcgdHdvIGRpZmZlcmVudCB0dXBsZXMgdGhhdCBoYXZlIHJlZmVyZW5j
ZSBmaWVsZHMuCitURVNUKENvbXBhcmlzb25UZXN0LCBDb21wYXJlc1VuZXF1YWxUdXBsZXNXaXRo
UmVmZXJlbmNlRmllbGRzKSB7CisgIHR5cGVkZWYgdHVwbGU8aW50JiwgY29uc3QgY2hhciY+IEZv
b1R1cGxlOworCisgIGludCBpID0gNTsKKyAgY29uc3QgY2hhciBjaCA9ICdhJzsKKyAgY29uc3Qg
Rm9vVHVwbGUgYShpLCBjaCk7CisKKyAgaW50IGogPSA2OworICBjb25zdCBGb29UdXBsZSBiKGos
IGNoKTsKKworICBFWFBFQ1RfVFJVRShhICE9IGIpOworICBFWFBFQ1RfRkFMU0UoYSA9PSBiKTsK
KworICBqID0gNTsKKyAgY29uc3QgY2hhciBjaDIgPSAnYic7CisgIGNvbnN0IEZvb1R1cGxlIGMo
aiwgY2gyKTsKKworICBFWFBFQ1RfVFJVRShiICE9IGMpOworICBFWFBFQ1RfRkFMU0UoYiA9PSBj
KTsKK30KKworLy8gVGVzdHMgdGhhdCBhIHR1cGxlIGZpZWxkIHdpdGggYSByZWZlcmVuY2UgdHlw
ZSBpcyBhbiBhbGlhcyBvZiB0aGUKKy8vIHZhcmlhYmxlIGl0J3Mgc3VwcG9zZWQgdG8gcmVmZXJl
bmNlLgorVEVTVChSZWZlcmVuY2VGaWVsZFRlc3QsIElzQWxpYXNPZlJlZmVyZW5jZWRWYXJpYWJs
ZSkgeworICBpbnQgbiA9IDA7CisgIHR1cGxlPGJvb2wsIGludCY+IHQodHJ1ZSwgbik7CisKKyAg
biA9IDE7CisgIEVYUEVDVF9FUShuLCBnZXQ8MT4odCkpCisgICAgICA8PCAiQ2hhbmdpbmcgYSB1
bmRlcmx5aW5nIHZhcmlhYmxlIHNob3VsZCB1cGRhdGUgdGhlIHJlZmVyZW5jZSBmaWVsZC4iOwor
CisgIC8vIE1ha2VzIHN1cmUgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gZG9lc24ndCBkbyBhbnl0
aGluZyBmdW5ueSB3aXRoCisgIC8vIHRoZSAmIG9wZXJhdG9yIGZvciB0aGUgcmV0dXJuIHR5cGUg
b2YgZ2V0PD4oKS4KKyAgRVhQRUNUX0VRKCZuLCAmKGdldDwxPih0KSkpCisgICAgICA8PCAiVGhl
IGFkZHJlc3Mgb2YgYSByZWZlcmVuY2UgZmllbGQgc2hvdWxkIGVxdWFsIHRoZSBhZGRyZXNzIG9m
ICIKKyAgICAgIDw8ICJ0aGUgdW5kZXJseWluZyB2YXJpYWJsZS4iOworCisgIGdldDwxPih0KSA9
IDI7CisgIEVYUEVDVF9FUSgyLCBuKQorICAgICAgPDwgIkNoYW5naW5nIGEgcmVmZXJlbmNlIGZp
ZWxkIHNob3VsZCB1cGRhdGUgdGhlIHVuZGVybHlpbmcgdmFyaWFibGUuIjsKK30KKworLy8gVGVz
dHMgdGhhdCB0dXBsZSdzIGRlZmF1bHQgY29uc3RydWN0b3IgZGVmYXVsdCBpbml0aWFsaXplcyBl
YWNoIGZpZWxkLgorLy8gVGhpcyB0ZXN0IG5lZWRzIHRvIGNvbXBpbGUgd2l0aG91dCBnZW5lcmF0
aW5nIHdhcm5pbmdzLgorVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgRGVmYXVsdENvbnN0cnVj
dG9yRGVmYXVsdEluaXRpYWxpemVzRWFjaEZpZWxkKSB7CisgIC8vIFRoZSBUUjEgcmVwb3J0IHJl
cXVpcmVzIHRoYXQgdHVwbGUncyBkZWZhdWx0IGNvbnN0cnVjdG9yIGRlZmF1bHQKKyAgLy8gaW5p
dGlhbGl6ZXMgZWFjaCBmaWVsZCwgZXZlbiBpZiBpdCdzIGEgcHJpbWl0aXZlIHR5cGUuICBJZiB0
aGUKKyAgLy8gaW1wbGVtZW50YXRpb24gZm9yZ2V0cyB0byBkbyB0aGlzLCB0aGlzIHRlc3Qgd2ls
bCBjYXRjaCBpdCBieQorICAvLyBnZW5lcmF0aW5nIHdhcm5pbmdzIGFib3V0IHVzaW5nIHVuaW5p
dGlhbGl6ZWQgdmFyaWFibGVzIChhc3N1bWluZworICAvLyBhIGRlY2VudCBjb21waWxlcikuCisK
KyAgdHVwbGU8PiBlbXB0eTsKKworICB0dXBsZTxpbnQ+IGExLCBiMTsKKyAgYjEgPSBhMTsKKyAg
RVhQRUNUX0VRKDAsIGdldDwwPihiMSkpOworCisgIHR1cGxlPGludCwgZG91YmxlPiBhMiwgYjI7
CisgIGIyID0gYTI7CisgIEVYUEVDVF9FUSgwLCBnZXQ8MD4oYjIpKTsKKyAgRVhQRUNUX0VRKDAu
MCwgZ2V0PDE+KGIyKSk7CisKKyAgdHVwbGU8ZG91YmxlLCBjaGFyLCBib29sKj4gYTMsIGIzOwor
ICBiMyA9IGEzOworICBFWFBFQ1RfRVEoMC4wLCBnZXQ8MD4oYjMpKTsKKyAgRVhQRUNUX0VRKCdc
MCcsIGdldDwxPihiMykpOworICBFWFBFQ1RfVFJVRShnZXQ8Mj4oYjMpID09IE5VTEwpOworCisg
IHR1cGxlPGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludD4g
YTEwLCBiMTA7CisgIGIxMCA9IGExMDsKKyAgRVhQRUNUX0VRKDAsIGdldDwwPihiMTApKTsKKyAg
RVhQRUNUX0VRKDAsIGdldDwxPihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDwyPihiMTApKTsK
KyAgRVhQRUNUX0VRKDAsIGdldDwzPihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDw0PihiMTAp
KTsKKyAgRVhQRUNUX0VRKDAsIGdldDw1PihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDw2Pihi
MTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDw3PihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDw4
PihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDw5PihiMTApKTsKK30KKworLy8gVGVzdHMgY29u
c3RydWN0aW5nIGEgdHVwbGUgZnJvbSBpdHMgZmllbGRzLgorVEVTVChUdXBsZUNvbnN0cnVjdG9y
VGVzdCwgQ29uc3RydWN0c0Zyb21GaWVsZHMpIHsKKyAgaW50IG4gPSAxOworICAvLyBSZWZlcmVu
Y2UgZmllbGQuCisgIHR1cGxlPGludCY+IGEobik7CisgIEVYUEVDVF9FUSgmbiwgJihnZXQ8MD4o
YSkpKTsKKworICAvLyBOb24tcmVmZXJlbmNlIGZpZWxkcy4KKyAgdHVwbGU8aW50LCBjaGFyPiBi
KDUsICdhJyk7CisgIEVYUEVDVF9FUSg1LCBnZXQ8MD4oYikpOworICBFWFBFQ1RfRVEoJ2EnLCBn
ZXQ8MT4oYikpOworCisgIC8vIENvbnN0IHJlZmVyZW5jZSBmaWVsZC4KKyAgY29uc3QgaW50IG0g
PSAyOworICB0dXBsZTxib29sLCBjb25zdCBpbnQmPiBjKHRydWUsIG0pOworICBFWFBFQ1RfVFJV
RShnZXQ8MD4oYykpOworICBFWFBFQ1RfRVEoJm0sICYoZ2V0PDE+KGMpKSk7Cit9CisKKy8vIFRl
c3RzIHR1cGxlJ3MgY29weSBjb25zdHJ1Y3Rvci4KK1RFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3Qs
IENvcHlDb25zdHJ1Y3RvcikgeworICB0dXBsZTxkb3VibGUsIGJvb2w+IGEoMC4wLCB0cnVlKTsK
KyAgdHVwbGU8ZG91YmxlLCBib29sPiBiKGEpOworCisgIEVYUEVDVF9ET1VCTEVfRVEoMC4wLCBn
ZXQ8MD4oYikpOworICBFWFBFQ1RfVFJVRShnZXQ8MT4oYikpOworfQorCisvLyBUZXN0cyBjb25z
dHJ1Y3RpbmcgYSB0dXBsZSBmcm9tIGFub3RoZXIgdHVwbGUgdGhhdCBoYXMgYSBjb21wYXRpYmxl
CisvLyBidXQgZGlmZmVyZW50IHR5cGUuCitURVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBDb25z
dHJ1Y3RzRnJvbURpZmZlcmVudFR1cGxlVHlwZSkgeworICB0dXBsZTxpbnQsIGludCwgY2hhcj4g
YSgwLCAxLCAnYScpOworICB0dXBsZTxkb3VibGUsIGxvbmcsIGludD4gYihhKTsKKworICBFWFBF
Q1RfRE9VQkxFX0VRKDAuMCwgZ2V0PDA+KGIpKTsKKyAgRVhQRUNUX0VRKDEsIGdldDwxPihiKSk7
CisgIEVYUEVDVF9FUSgnYScsIGdldDwyPihiKSk7Cit9CisKKy8vIFRlc3RzIGNvbnN0cnVjdGlu
ZyBhIDItdHVwbGUgZnJvbSBhbiBzdGQ6OnBhaXIuCitURVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0
LCBDb25zdHJ1Y3RzRnJvbVBhaXIpIHsKKyAgOjpzdGQ6OnBhaXI8aW50LCBjaGFyPiBhKDEsICdh
Jyk7CisgIHR1cGxlPGludCwgY2hhcj4gYihhKTsKKyAgdHVwbGU8aW50LCBjb25zdCBjaGFyJj4g
YyhhKTsKK30KKworLy8gVGVzdHMgYXNzaWduaW5nIGEgdHVwbGUgdG8gYW5vdGhlciB0dXBsZSB3
aXRoIHRoZSBzYW1lIHR5cGUuCitURVNUKFR1cGxlQXNzaWdubWVudFRlc3QsIEFzc2lnbnNUb1Nh
bWVUdXBsZVR5cGUpIHsKKyAgY29uc3QgdHVwbGU8aW50LCBsb25nPiBhKDUsIDdMKTsKKyAgdHVw
bGU8aW50LCBsb25nPiBiOworICBiID0gYTsKKyAgRVhQRUNUX0VRKDUsIGdldDwwPihiKSk7Cisg
IEVYUEVDVF9FUSg3TCwgZ2V0PDE+KGIpKTsKK30KKworLy8gVGVzdHMgYXNzaWduaW5nIGEgdHVw
bGUgdG8gYW5vdGhlciB0dXBsZSB3aXRoIGEgZGlmZmVyZW50IGJ1dAorLy8gY29tcGF0aWJsZSB0
eXBlLgorVEVTVChUdXBsZUFzc2lnbm1lbnRUZXN0LCBBc3NpZ25zVG9EaWZmZXJlbnRUdXBsZVR5
cGUpIHsKKyAgY29uc3QgdHVwbGU8aW50LCBsb25nLCBib29sPiBhKDEsIDdMLCB0cnVlKTsKKyAg
dHVwbGU8bG9uZywgaW50LCBib29sPiBiOworICBiID0gYTsKKyAgRVhQRUNUX0VRKDFMLCBnZXQ8
MD4oYikpOworICBFWFBFQ1RfRVEoNywgZ2V0PDE+KGIpKTsKKyAgRVhQRUNUX1RSVUUoZ2V0PDI+
KGIpKTsKK30KKworLy8gVGVzdHMgYXNzaWduaW5nIGFuIHN0ZDo6cGFpciB0byBhIDItdHVwbGUu
CitURVNUKFR1cGxlQXNzaWdubWVudFRlc3QsIEFzc2lnbnNGcm9tUGFpcikgeworICBjb25zdCA6
OnN0ZDo6cGFpcjxpbnQsIGJvb2w+IGEoNSwgdHJ1ZSk7CisgIHR1cGxlPGludCwgYm9vbD4gYjsK
KyAgYiA9IGE7CisgIEVYUEVDVF9FUSg1LCBnZXQ8MD4oYikpOworICBFWFBFQ1RfVFJVRShnZXQ8
MT4oYikpOworCisgIHR1cGxlPGxvbmcsIGJvb2w+IGM7CisgIGMgPSBhOworICBFWFBFQ1RfRVEo
NUwsIGdldDwwPihjKSk7CisgIEVYUEVDVF9UUlVFKGdldDwxPihjKSk7Cit9CisKKy8vIEEgZml4
dHVyZSBmb3IgdGVzdGluZyBiaWcgdHVwbGVzLgorY2xhc3MgQmlnVHVwbGVUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdHlwZWRlZiB0dXBsZTxpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQ+IEJpZ1R1cGxlOworCisgIEJp
Z1R1cGxlVGVzdCgpIDoKKyAgICAgIGFfKDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIpLAor
ICAgICAgYl8oMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMykge30KKworICBCaWdUdXBsZSBh
XywgYl87Cit9OworCisvLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYmlnIHR1cGxlcy4KK1RFU1RfRihC
aWdUdXBsZVRlc3QsIENvbnN0cnVjdGlvbikgeworICBCaWdUdXBsZSBhOworICBCaWdUdXBsZSBi
KGJfKTsKK30KKworLy8gVGVzdHMgdGhhdCBnZXQ8Tj4odCkgcmV0dXJucyB0aGUgTi10aCAoMC1i
YXNlZCkgZmllbGQgb2YgdHVwbGUgdC4KK1RFU1RfRihCaWdUdXBsZVRlc3QsIGdldCkgeworICBF
WFBFQ1RfRVEoMSwgZ2V0PDA+KGFfKSk7CisgIEVYUEVDVF9FUSgyLCBnZXQ8OT4oYV8pKTsKKwor
ICAvLyBUZXN0cyB0aGF0IGdldCgpIHdvcmtzIG9uIGEgY29uc3QgdHVwbGUgdG9vLgorICBjb25z
dCBCaWdUdXBsZSBhKGFfKTsKKyAgRVhQRUNUX0VRKDEsIGdldDwwPihhKSk7CisgIEVYUEVDVF9F
USgyLCBnZXQ8OT4oYSkpOworfQorCisvLyBUZXN0cyBjb21wYXJpbmcgYmlnIHR1cGxlcy4KK1RF
U1RfRihCaWdUdXBsZVRlc3QsIENvbXBhcmlzb25zKSB7CisgIEVYUEVDVF9UUlVFKGFfID09IGFf
KTsKKyAgRVhQRUNUX0ZBTFNFKGFfICE9IGFfKTsKKworICBFWFBFQ1RfVFJVRShhXyAhPSBiXyk7
CisgIEVYUEVDVF9GQUxTRShhXyA9PSBiXyk7Cit9CisKK1RFU1QoTWFrZVR1cGxlVGVzdCwgV29y
a3NGb3JTY2FsYXJUeXBlcykgeworICB0dXBsZTxib29sLCBpbnQ+IGE7CisgIGEgPSBtYWtlX3R1
cGxlKHRydWUsIDUpOworICBFWFBFQ1RfVFJVRShnZXQ8MD4oYSkpOworICBFWFBFQ1RfRVEoNSwg
Z2V0PDE+KGEpKTsKKworICB0dXBsZTxjaGFyLCBpbnQsIGxvbmc+IGI7CisgIGIgPSBtYWtlX3R1
cGxlKCdhJywgJ2InLCA1KTsKKyAgRVhQRUNUX0VRKCdhJywgZ2V0PDA+KGIpKTsKKyAgRVhQRUNU
X0VRKCdiJywgZ2V0PDE+KGIpKTsKKyAgRVhQRUNUX0VRKDUsIGdldDwyPihiKSk7Cit9CisKK1RF
U1QoTWFrZVR1cGxlVGVzdCwgV29ya3NGb3JQb2ludGVycykgeworICBpbnQgYVtdID0geyAxLCAy
LCAzLCA0IH07CisgIGNvbnN0IGNoYXIqIGNvbnN0IHN0ciA9ICJoaSI7CisgIGludCogY29uc3Qg
cCA9IGE7CisKKyAgdHVwbGU8Y29uc3QgY2hhciosIGludCo+IHQ7CisgIHQgPSBtYWtlX3R1cGxl
KHN0ciwgcCk7CisgIEVYUEVDVF9FUShzdHIsIGdldDwwPih0KSk7CisgIEVYUEVDVF9FUShwLCBn
ZXQ8MT4odCkpOworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3QucHkgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0LnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjViN2QxZTc0ZjY3ZmNiMDBjYjg0ODU1Nzk2N2RlZjRmNmE1NmNjOGYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qt
dW5pbml0aWFsaXplZC10ZXN0LnB5CkBAIC0wLDAgKzEsNjcgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorIworIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3Qg
d2FybnMgdGhlIHVzZXIgd2hlbiBub3QgaW5pdGlhbGl6ZWQgcHJvcGVybHkuIiIiCisKK2ltcG9y
dCBndGVzdF90ZXN0X3V0aWxzCisKK0NPTU1BTkQgPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RF
eGVjdXRhYmxlUGF0aCgnZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3RfJykKKworCitkZWYg
QXNzZXJ0KGNvbmRpdGlvbik6CisgIGlmIG5vdCBjb25kaXRpb246CisgICAgcmFpc2UgQXNzZXJ0
aW9uRXJyb3IKKworCitkZWYgQXNzZXJ0RXEoZXhwZWN0ZWQsIGFjdHVhbCk6CisgIGlmIGV4cGVj
dGVkICE9IGFjdHVhbDoKKyAgICBwcmludCAnRXhwZWN0ZWQ6ICVzJyAlIChleHBlY3RlZCwpCisg
ICAgcHJpbnQgJyAgQWN0dWFsOiAlcycgJSAoYWN0dWFsLCkKKyAgICByYWlzZSBBc3NlcnRpb25F
cnJvcgorCisKK2RlZiBUZXN0RXhpdENvZGVBbmRPdXRwdXQoY29tbWFuZCk6CisgICIiIlJ1bnMg
dGhlIGdpdmVuIGNvbW1hbmQgYW5kIHZlcmlmaWVzIGl0cyBleGl0IGNvZGUgYW5kIG91dHB1dC4i
IiIKKworICAjIFZlcmlmaWVzIHRoYXQgJ2NvbW1hbmQnIGV4aXRzIHdpdGggY29kZSAxLgorICBw
ID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCisgIGlmIHAuZXhpdGVkIGFu
ZCBwLmV4aXRfY29kZSA9PSAwOgorICAgIEFzc2VydCgnSU1QT1JUQU5UIE5PVElDRScgaW4gcC5v
dXRwdXQpOworICBBc3NlcnQoJ0luaXRHb29nbGVUZXN0JyBpbiBwLm91dHB1dCkKKworCitjbGFz
cyBHVGVzdFVuaW5pdGlhbGl6ZWRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICBk
ZWYgdGVzdEV4aXRDb2RlQW5kT3V0cHV0KHNlbGYpOgorICAgIFRlc3RFeGl0Q29kZUFuZE91dHB1
dChDT01NQU5EKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3Rf
dXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0NDM0
ZDUxZWViZmQ4NzI2YmQzZjA0YzJkMDQyNmJiYTk2MDI5OGMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0
Xy5jYwpAQCAtMCwwICsxLDQyIEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8v
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK1RFU1QoRHVtbXlUZXN0
LCBEdW1teSkgeworICAvLyBUaGlzIHRlc3QgZG9lc24ndCB2ZXJpZnkgYW55dGhpbmcuICBXZSBq
dXN0IG5lZWQgaXQgdG8gY3JlYXRlIGEKKyAgLy8gcmVhbGlzdGljIHN0YWdlIGZvciB0ZXN0aW5n
IHRoZSBiZWhhdmlvciBvZiBHb29nbGUgVGVzdCB3aGVuCisgIC8vIFJVTl9BTExfVEVTVFMoKSBp
cyBjYWxsZWQgd2l0aG91dAorICAvLyB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpIGJlaW5nIGNh
bGxlZCBmaXJzdC4KK30KKworaW50IG1haW4oKSB7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWRlYXRo
LXRlc3RfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtZGVhdGgt
dGVzdF90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDViNTNiNzFhZjJm
Nzk1NjBkNzE3MmFhNjdjYzc0MGJhNzA0MDExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtZGVh
dGgtdGVzdF90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTIzMCArMCwwIEBACi0vLyBDb3B5
cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1
dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRlc3RzIGZvciBkZWF0aCB0ZXN0cy4K
LQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9n
dGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmg+Ci0KLXVz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZTsKLXVzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpBbHdheXNUcnVlOwotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotI2lmIEdURVNU
X09TX1dJTkRPV1MKLSNpbmNsdWRlIDxkaXJlY3QuaD4gICAgICAgICAgLy8gRm9yIGNoZGlyKCku
Ci0jZWxzZQotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPHN5cy93YWl0Lmg+ICAgICAg
ICAvLyBGb3Igd2FpdHBpZC4KLSNpbmNsdWRlIDxsaW1pdHM+ICAgICAgICAgICAgLy8gRm9yIHN0
ZDo6bnVtZXJpY19saW1pdHMuCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotI2luY2x1
ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHNpZ25hbC5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0K
LSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGkuaD4KLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0
cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRp
b24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNs
dWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0
bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWlu
dGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJ
T05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1Rf
SU1QTEVNRU5UQVRJT05fCi0KLW5hbWVzcGFjZSBwb3NpeCA9IDo6dGVzdGluZzo6aW50ZXJuYWw6
OnBvc2l4OwotCi11c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwotdXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OkRlYXRoVGVzdDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3RGYWN0b3J5
OwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZpbGVQYXRoOwotdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OkdldExhc3RFcnJub0Rlc2NyaXB0aW9uOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OkdldFVuaXRUZXN0SW1wbDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpQYXJzZU5hdHVyYWxO
dW1iZXI7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOwotCi1uYW1lc3BhY2UgdGVz
dGluZyB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBBIGhlbHBlciBjbGFzcyB3aG9zZSBv
YmplY3RzIHJlcGxhY2UgdGhlIGRlYXRoIHRlc3QgZmFjdG9yeSBmb3IgYQotLy8gc2luZ2xlIFVu
aXRUZXN0IG9iamVjdCBkdXJpbmcgdGhlaXIgbGlmZXRpbWVzLgotY2xhc3MgUmVwbGFjZURlYXRo
VGVzdEZhY3RvcnkgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgUmVwbGFjZURlYXRoVGVzdEZhY3Rv
cnkoRGVhdGhUZXN0RmFjdG9yeSogbmV3X2ZhY3RvcnkpCi0gICAgICA6IHVuaXRfdGVzdF9pbXBs
XyhHZXRVbml0VGVzdEltcGwoKSkgewotICAgIG9sZF9mYWN0b3J5XyA9IHVuaXRfdGVzdF9pbXBs
Xy0+ZGVhdGhfdGVzdF9mYWN0b3J5Xy5yZWxlYXNlKCk7Ci0gICAgdW5pdF90ZXN0X2ltcGxfLT5k
ZWF0aF90ZXN0X2ZhY3RvcnlfLnJlc2V0KG5ld19mYWN0b3J5KTsKLSAgfQotCi0gIH5SZXBsYWNl
RGVhdGhUZXN0RmFjdG9yeSgpIHsKLSAgICB1bml0X3Rlc3RfaW1wbF8tPmRlYXRoX3Rlc3RfZmFj
dG9yeV8ucmVsZWFzZSgpOwotICAgIHVuaXRfdGVzdF9pbXBsXy0+ZGVhdGhfdGVzdF9mYWN0b3J5
Xy5yZXNldChvbGRfZmFjdG9yeV8pOwotICB9Ci0gcHJpdmF0ZToKLSAgLy8gUHJldmVudHMgY29w
eWluZyBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSBvYmplY3RzLgotICBSZXBsYWNlRGVhdGhUZXN0
RmFjdG9yeShjb25zdCBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSYpOwotICB2b2lkIG9wZXJhdG9y
PShjb25zdCBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSYpOwotCi0gIFVuaXRUZXN0SW1wbCogdW5p
dF90ZXN0X2ltcGxfOwotICBEZWF0aFRlc3RGYWN0b3J5KiBvbGRfZmFjdG9yeV87Ci19OwotCi19
ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLXZvaWQg
RGllSW5zaWRlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uKSB7Ci0gIGZwcmludGYoc3RkZXJyLCAiZGVh
dGggaW5zaWRlICVzKCkuIiwgZnVuY3Rpb24pOwotICBmZmx1c2goc3RkZXJyKTsKLSAgLy8gV2Ug
Y2FsbCBfZXhpdCgpIGluc3RlYWQgb2YgZXhpdCgpLCBhcyB0aGUgZm9ybWVyIGlzIGEgZGlyZWN0
Ci0gIC8vIHN5c3RlbSBjYWxsIGFuZCB0aHVzIHNhZmVyIGluIHRoZSBwcmVzZW5jZSBvZiB0aHJl
YWRzLiAgZXhpdCgpCi0gIC8vIHdpbGwgaW52b2tlIHVzZXItZGVmaW5lZCBleGl0LWhvb2tzLCB3
aGljaCBtYXkgZG8gZGFuZ2Vyb3VzCi0gIC8vIHRoaW5ncyB0aGF0IGNvbmZsaWN0IHdpdGggZGVh
dGggdGVzdHMuCi0gIC8vCi0gIC8vIFNvbWUgY29tcGlsZXJzIGNhbiByZWNvZ25pemUgdGhhdCBf
ZXhpdCgpIG5ldmVyIHJldHVybnMgYW5kIGlzc3VlIHRoZQotICAvLyAndW5yZWFjaGFibGUgY29k
ZScgd2FybmluZyBmb3IgY29kZSBmb2xsb3dpbmcgdGhpcyBmdW5jdGlvbiwgdW5sZXNzCi0gIC8v
IGZvb2xlZCBieSBhIGZha2UgY29uZGl0aW9uLgotICBpZiAoQWx3YXlzVHJ1ZSgpKQotICAgIF9l
eGl0KDEpOwotfQotCi0vLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHdvcmsuCi0KLWNsYXNzIFRl
c3RGb3JEZWF0aFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICBU
ZXN0Rm9yRGVhdGhUZXN0KCkgOiBvcmlnaW5hbF9kaXJfKEZpbGVQYXRoOjpHZXRDdXJyZW50RGly
KCkpIHt9Ci0KLSAgdmlydHVhbCB+VGVzdEZvckRlYXRoVGVzdCgpIHsKLSAgICBwb3NpeDo6Q2hE
aXIob3JpZ2luYWxfZGlyXy5jX3N0cigpKTsKLSAgfQotCi0gIC8vIEEgc3RhdGljIG1lbWJlciBm
dW5jdGlvbiB0aGF0J3MgZXhwZWN0ZWQgdG8gZGllLgotICBzdGF0aWMgdm9pZCBTdGF0aWNNZW1i
ZXJGdW5jdGlvbigpIHsgRGllSW5zaWRlKCJTdGF0aWNNZW1iZXJGdW5jdGlvbiIpOyB9Ci0KLSAg
Ly8gQSBtZXRob2Qgb2YgdGhlIHRlc3QgZml4dHVyZSB0aGF0IG1heSBkaWUuCi0gIHZvaWQgTWVt
YmVyRnVuY3Rpb24oKSB7Ci0gICAgaWYgKHNob3VsZF9kaWVfKQotICAgICAgRGllSW5zaWRlKCJN
ZW1iZXJGdW5jdGlvbiIpOwotICB9Ci0KLSAgLy8gVHJ1ZSBpZmYgTWVtYmVyRnVuY3Rpb24oKSBz
aG91bGQgZGllLgotICBib29sIHNob3VsZF9kaWVfOwotICBjb25zdCBGaWxlUGF0aCBvcmlnaW5h
bF9kaXJfOwotfTsKLQotLy8gQSBjbGFzcyB3aXRoIGEgbWVtYmVyIGZ1bmN0aW9uIHRoYXQgbWF5
IGRpZS4KLWNsYXNzIE1heURpZSB7Ci0gcHVibGljOgotICBleHBsaWNpdCBNYXlEaWUoYm9vbCBz
aG91bGRfZGllKSA6IHNob3VsZF9kaWVfKHNob3VsZF9kaWUpIHt9Ci0KLSAgLy8gQSBtZW1iZXIg
ZnVuY3Rpb24gdGhhdCBtYXkgZGllLgotICB2b2lkIE1lbWJlckZ1bmN0aW9uKCkgY29uc3Qgewot
ICAgIGlmIChzaG91bGRfZGllXykKLSAgICAgIERpZUluc2lkZSgiTWF5RGllOjpNZW1iZXJGdW5j
dGlvbiIpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBUcnVlIGlmZiBNZW1iZXJGdW5jdGlvbigp
IHNob3VsZCBkaWUuCi0gIGJvb2wgc2hvdWxkX2RpZV87Ci19OwotCi0vLyBBIGdsb2JhbCBmdW5j
dGlvbiB0aGF0J3MgZXhwZWN0ZWQgdG8gZGllLgotdm9pZCBHbG9iYWxGdW5jdGlvbigpIHsgRGll
SW5zaWRlKCJHbG9iYWxGdW5jdGlvbiIpOyB9Ci0KLS8vIEEgbm9uLXZvaWQgZnVuY3Rpb24gdGhh
dCdzIGV4cGVjdGVkIHRvIGRpZS4KLWludCBOb25Wb2lkRnVuY3Rpb24oKSB7Ci0gIERpZUluc2lk
ZSgiTm9uVm9pZEZ1bmN0aW9uIik7Ci0gIHJldHVybiAxOwotfQotCi0vLyBBIHVuYXJ5IGZ1bmN0
aW9uIHRoYXQgbWF5IGRpZS4KLXZvaWQgRGllSWYoYm9vbCBzaG91bGRfZGllKSB7Ci0gIGlmIChz
aG91bGRfZGllKQotICAgIERpZUluc2lkZSgiRGllSWYiKTsKLX0KLQotLy8gQSBiaW5hcnkgZnVu
Y3Rpb24gdGhhdCBtYXkgZGllLgotYm9vbCBEaWVJZkxlc3NUaGFuKGludCB4LCBpbnQgeSkgewot
ICBpZiAoeCA8IHkpIHsKLSAgICBEaWVJbnNpZGUoIkRpZUlmTGVzc1RoYW4iKTsKLSAgfQotICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVBVEggY2FuIGJlIHVzZWQg
b3V0c2lkZSBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdCBmaXh0dXJlLgotdm9pZCBEZWF0aFRlc3RT
dWJyb3V0aW5lKCkgewotICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgImRlYXRoLipH
bG9iYWxGdW5jdGlvbiIpOwotICBBU1NFUlRfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgImRlYXRo
LipHbG9iYWxGdW5jdGlvbiIpOwotfQotCi0vLyBEZWF0aCBpbiBkYmcsIG5vdCBvcHQuCi1pbnQg
RGllSW5EZWJ1Z0Vsc2UxMihpbnQqIHNpZGVlZmZlY3QpIHsKLSAgaWYgKHNpZGVlZmZlY3QpICpz
aWRlZWZmZWN0ID0gMTI7Ci0jaWZuZGVmIE5ERUJVRwotICBEaWVJbnNpZGUoIkRpZUluRGVidWdF
bHNlMTIiKTsKLSNlbmRpZiAgLy8gTkRFQlVHCi0gIHJldHVybiAxMjsKLX0KLQotI2lmIEdURVNU
X09TX1dJTkRPV1MKLQotLy8gVGVzdHMgdGhlIEV4aXRlZFdpdGhDb2RlIHByZWRpY2F0ZS4KLVRF
U1QoRXhpdFN0YXR1c1ByZWRpY2F0ZVRlc3QsIEV4aXRlZFdpdGhDb2RlKSB7Ci0gIC8vIE9uIFdp
bmRvd3MsIHRoZSBwcm9jZXNzJ3MgZXhpdCBjb2RlIGlzIHRoZSBzYW1lIGFzIGl0cyBleGl0IHN0
YXR1cywKLSAgLy8gc28gdGhlIHByZWRpY2F0ZSBqdXN0IGNvbXBhcmVzIHRoZSBpdHMgaW5wdXQg
d2l0aCBpdHMgcGFyYW1ldGVyLgotICBFWFBFQ1RfVFJVRSh0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29k
ZSgwKSgwKSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEpKDEpKTsK
LSAgRVhQRUNUX1RSVUUodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoNDIpKDQyKSk7Ci0gIEVYUEVD
VF9GQUxTRSh0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgwKSgxKSk7Ci0gIEVYUEVDVF9GQUxTRSh0
ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSgwKSk7Ci19Ci0KLSNlbHNlCi0KLS8vIFJldHVybnMg
dGhlIGV4aXQgc3RhdHVzIG9mIGEgcHJvY2VzcyB0aGF0IGNhbGxzIF9leGl0KDIpIHdpdGggYQot
Ly8gZ2l2ZW4gZXhpdCBjb2RlLiAgVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgdGhlCi0v
LyBFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCB0ZXN0IHN1aXRlLgotc3RhdGljIGludCBOb3JtYWxF
eGl0U3RhdHVzKGludCBleGl0X2NvZGUpIHsKLSAgcGlkX3QgY2hpbGRfcGlkID0gZm9yaygpOwot
ICBpZiAoY2hpbGRfcGlkID09IDApIHsKLSAgICBfZXhpdChleGl0X2NvZGUpOwotICB9Ci0gIGlu
dCBzdGF0dXM7Ci0gIHdhaXRwaWQoY2hpbGRfcGlkLCAmc3RhdHVzLCAwKTsKLSAgcmV0dXJuIHN0
YXR1czsKLX0KLQotLy8gUmV0dXJucyB0aGUgZXhpdCBzdGF0dXMgb2YgYSBwcm9jZXNzIHRoYXQg
cmFpc2VzIGEgZ2l2ZW4gc2lnbmFsLgotLy8gSWYgdGhlIHNpZ25hbCBkb2VzIG5vdCBjYXVzZSB0
aGUgcHJvY2VzcyB0byBkaWUsIHRoZW4gaXQgcmV0dXJucwotLy8gaW5zdGVhZCB0aGUgZXhpdCBz
dGF0dXMgb2YgYSBwcm9jZXNzIHRoYXQgZXhpdHMgbm9ybWFsbHkgd2l0aCBleGl0Ci0vLyBjb2Rl
IDEuICBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGUgRXhpdFN0YXR1c1ByZWRpY2F0
ZVRlc3QKLS8vIHRlc3Qgc3VpdGUuCi1zdGF0aWMgaW50IEtpbGxlZEV4aXRTdGF0dXMoaW50IHNp
Z251bSkgewotICBwaWRfdCBjaGlsZF9waWQgPSBmb3JrKCk7Ci0gIGlmIChjaGlsZF9waWQgPT0g
MCkgewotICAgIHJhaXNlKHNpZ251bSk7Ci0gICAgX2V4aXQoMSk7Ci0gIH0KLSAgaW50IHN0YXR1
czsKLSAgd2FpdHBpZChjaGlsZF9waWQsICZzdGF0dXMsIDApOwotICByZXR1cm4gc3RhdHVzOwot
fQotCi0vLyBUZXN0cyB0aGUgRXhpdGVkV2l0aENvZGUgcHJlZGljYXRlLgotVEVTVChFeGl0U3Rh
dHVzUHJlZGljYXRlVGVzdCwgRXhpdGVkV2l0aENvZGUpIHsKLSAgY29uc3QgaW50IHN0YXR1czAg
ID0gTm9ybWFsRXhpdFN0YXR1cygwKTsKLSAgY29uc3QgaW50IHN0YXR1czEgID0gTm9ybWFsRXhp
dFN0YXR1cygxKTsKLSAgY29uc3QgaW50IHN0YXR1czQyID0gTm9ybWFsRXhpdFN0YXR1cyg0Mik7
Ci0gIGNvbnN0IHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlIHByZWQwKDApOwotICBjb25zdCB0ZXN0
aW5nOjpFeGl0ZWRXaXRoQ29kZSBwcmVkMSgxKTsKLSAgY29uc3QgdGVzdGluZzo6RXhpdGVkV2l0
aENvZGUgcHJlZDQyKDQyKTsKLSAgRVhQRUNUX1BSRUQxKHByZWQwLCAgc3RhdHVzMCk7Ci0gIEVY
UEVDVF9QUkVEMShwcmVkMSwgIHN0YXR1czEpOwotICBFWFBFQ1RfUFJFRDEocHJlZDQyLCBzdGF0
dXM0Mik7Ci0gIEVYUEVDVF9GQUxTRShwcmVkMChzdGF0dXMxKSk7Ci0gIEVYUEVDVF9GQUxTRShw
cmVkNDIoc3RhdHVzMCkpOwotICBFWFBFQ1RfRkFMU0UocHJlZDEoc3RhdHVzNDIpKTsKLX0KLQot
Ly8gVGVzdHMgdGhlIEtpbGxlZEJ5U2lnbmFsIHByZWRpY2F0ZS4KLVRFU1QoRXhpdFN0YXR1c1By
ZWRpY2F0ZVRlc3QsIEtpbGxlZEJ5U2lnbmFsKSB7Ci0gIGNvbnN0IGludCBzdGF0dXNfc2VndiA9
IEtpbGxlZEV4aXRTdGF0dXMoU0lHU0VHVik7Ci0gIGNvbnN0IGludCBzdGF0dXNfa2lsbCA9IEtp
bGxlZEV4aXRTdGF0dXMoU0lHS0lMTCk7Ci0gIGNvbnN0IHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFs
IHByZWRfc2VndihTSUdTRUdWKTsKLSAgY29uc3QgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwgcHJl
ZF9raWxsKFNJR0tJTEwpOwotICBFWFBFQ1RfUFJFRDEocHJlZF9zZWd2LCBzdGF0dXNfc2Vndik7
Ci0gIEVYUEVDVF9QUkVEMShwcmVkX2tpbGwsIHN0YXR1c19raWxsKTsKLSAgRVhQRUNUX0ZBTFNF
KHByZWRfc2VndihzdGF0dXNfa2lsbCkpOwotICBFWFBFQ1RfRkFMU0UocHJlZF9raWxsKHN0YXR1
c19zZWd2KSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0vLyBUZXN0cyB0
aGF0IHRoZSBkZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29kZSB3aGljaCBtYXkgb3IgbWF5
IG5vdAotLy8gYmUgZm9sbG93ZWQgYnkgb3BlcmF0b3I8PCwgYW5kIHRoYXQgaW4gZWl0aGVyIGNh
c2UgdGhlIGNvbXBsZXRlIHRleHQKLS8vIGNvbXByaXNlcyBvbmx5IGEgc2luZ2xlIEMrKyBzdGF0
ZW1lbnQuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU2luZ2xlU3RhdGVtZW50KSB7Ci0gIGlm
IChBbHdheXNGYWxzZSgpKQotICAgIC8vIFRoaXMgd291bGQgZmFpbCBpZiBleGVjdXRlZDsgdGhp
cyBpcyBhIGNvbXBpbGF0aW9uIHRlc3Qgb25seQotICAgIEFTU0VSVF9ERUFUSChyZXR1cm4sICIi
KTsKLQotICBpZiAoQWx3YXlzVHJ1ZSgpKQotICAgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIp
OwotICBlbHNlCi0gICAgLy8gVGhpcyBlbXB0eSAiZWxzZSIgYnJhbmNoIGlzIG1lYW50IHRvIGVu
c3VyZSB0aGF0IEVYUEVDVF9ERUFUSAotICAgIC8vIGRvZXNuJ3QgZXhwYW5kIGludG8gYW4gImlm
IiBzdGF0ZW1lbnQgd2l0aG91dCBhbiAiZWxzZSIKLSAgICA7Ci0KLSAgaWYgKEFsd2F5c0ZhbHNl
KCkpCi0gICAgQVNTRVJUX0RFQVRIKHJldHVybiwgIiIpIDw8ICJkaWQgbm90IGRpZSI7Ci0KLSAg
aWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgOwotICBlbHNlCi0gICAgRVhQRUNUX0RFQVRIKF9leGl0
KDEpLCAiIikgPDwgMSA8PCAyIDw8IDM7Ci19Ci0KLXZvaWQgRGllV2l0aEVtYmVkZGVkTnVsKCkg
ewotICBmcHJpbnRmKHN0ZGVyciwgIkhlbGxvJWNteSBudWxsIHdvcmxkLlxuIiwgJ1wwJyk7Ci0g
IGZmbHVzaChzdGRlcnIpOwotICBfZXhpdCgxKTsKLX0KLQotI2lmIEdURVNUX1VTRVNfUENSRQot
Ly8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEggYW5kIEFTU0VSVF9ERUFUSCB3b3JrIHdoZW4gdGhl
IGVycm9yCi0vLyBtZXNzYWdlIGhhcyBhIE5VTCBjaGFyYWN0ZXIgaW4gaXQuCi1URVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgRW1iZWRkZWROdWxJbk1lc3NhZ2UpIHsKLSAgLy8gVE9ETyh3YW5AZ29v
Z2xlLmNvbSk6IDxyZWdleC5oPiBkb2Vzbid0IHN1cHBvcnQgbWF0Y2hpbmcgc3RyaW5ncwotICAv
LyB3aXRoIGVtYmVkZGVkIE5VTCBjaGFyYWN0ZXJzIC0gZmluZCBhIHdheSB0byB3b3JrYXJvdW5k
IGl0LgotICBFWFBFQ1RfREVBVEgoRGllV2l0aEVtYmVkZGVkTnVsKCksICJteSBudWxsIHdvcmxk
Iik7Ci0gIEFTU0VSVF9ERUFUSChEaWVXaXRoRW1iZWRkZWROdWwoKSwgIm15IG51bGwgd29ybGQi
KTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfVVNFU19QQ1JFCi0KLS8vIFRlc3RzIHRoYXQgZGVhdGgg
dGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUgd2hpY2ggaW50ZXJhY3RzIHdlbGwgd2l0aCBzd2l0
Y2gKLS8vIHN0YXRlbWVudHMuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU3dpdGNoU3RhdGVt
ZW50KSB7Ci0vLyBNaWNyb3NvZnQgY29tcGlsZXIgdXN1YWxseSBjb21wbGFpbnMgYWJvdXQgc3dp
dGNoIHN0YXRlbWVudHMgd2l0aG91dAotLy8gY2FzZSBsYWJlbHMuIFdlIHN1cHByZXNzIHRoYXQg
d2FybmluZyBmb3IgdGhpcyB0ZXN0LgotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmco
cHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MDY1KQotI2VuZGlmICAvLyBfTVNDX1ZF
UgotCi0gIHN3aXRjaCAoMCkKLSAgICBkZWZhdWx0OgotICAgICAgQVNTRVJUX0RFQVRIKF9leGl0
KDEpLCAiIikgPDwgImV4aXQgaW4gZGVmYXVsdCBzd2l0Y2ggaGFuZGxlciI7Ci0KLSAgc3dpdGNo
ICgwKQotICAgIGNhc2UgMDoKLSAgICAgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8ICJl
eGl0IGluIHN3aXRjaCBjYXNlIjsKLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmco
cG9wKQotI2VuZGlmICAvLyBfTVNDX1ZFUgotfQotCi0vLyBUZXN0cyB0aGF0IGEgc3RhdGljIG1l
bWJlciBmdW5jdGlvbiBjYW4gYmUgdXNlZCBpbiBhICJmYXN0IiBzdHlsZQotLy8gZGVhdGggdGVz
dC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTdGF0aWNNZW1iZXJGdW5jdGlvbkZhc3RTdHls
ZSkgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOwot
ICBBU1NFUlRfREVBVEgoU3RhdGljTWVtYmVyRnVuY3Rpb24oKSwgImRlYXRoLipTdGF0aWNNZW1i
ZXIiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNh
biBiZSB1c2VkIGluIGEgImZhc3QiCi0vLyBzdHlsZSBkZWF0aCB0ZXN0LgotVEVTVF9GKFRlc3RG
b3JEZWF0aFRlc3QsIE1lbWJlckZ1bmN0aW9uRmFzdFN0eWxlKSB7Ci0gIHRlc3Rpbmc6OkdURVNU
X0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7Ci0gIHNob3VsZF9kaWVfID0gdHJ1ZTsK
LSAgRVhQRUNUX0RFQVRIKE1lbWJlckZ1bmN0aW9uKCksICJpbnNpZGUuKk1lbWJlckZ1bmN0aW9u
Iik7Ci19Ci0KLXZvaWQgQ2hhbmdlVG9Sb290RGlyKCkgeyBwb3NpeDo6Q2hEaXIoR1RFU1RfUEFU
SF9TRVBfKTsgfQotCi0vLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHdvcmsgZXZlbiBpZiB0aGUg
Y3VycmVudCBkaXJlY3RvcnkgaGFzIGJlZW4KLS8vIGNoYW5nZWQuCi1URVNUX0YoVGVzdEZvckRl
YXRoVGVzdCwgRmFzdERlYXRoVGVzdEluQ2hhbmdlZERpcikgewotICB0ZXN0aW5nOjpHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOwotCi0gIENoYW5nZVRvUm9vdERpcigpOwot
ICBFWFBFQ1RfRVhJVChfZXhpdCgxKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSksICIiKTsK
LQotICBDaGFuZ2VUb1Jvb3REaXIoKTsKLSAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci19
Ci0KLS8vIFJlcGVhdHMgYSByZXByZXNlbnRhdGl2ZSBzYW1wbGUgb2YgZGVhdGggdGVzdHMgaW4g
dGhlICJ0aHJlYWRzYWZlIiBzdHlsZToKLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFN0YXRp
Y01lbWJlckZ1bmN0aW9uVGhyZWFkc2FmZVN0eWxlKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUco
ZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7Ci0gIEFTU0VSVF9ERUFUSChTdGF0aWNN
ZW1iZXJGdW5jdGlvbigpLCAiZGVhdGguKlN0YXRpY01lbWJlciIpOwotfQotCi1URVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgTWVtYmVyRnVuY3Rpb25UaHJlYWRzYWZlU3R5bGUpIHsKLSAgdGVzdGlu
Zzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKLSAgc2hvdWxk
X2RpZV8gPSB0cnVlOwotICBFWFBFQ1RfREVBVEgoTWVtYmVyRnVuY3Rpb24oKSwgImluc2lkZS4q
TWVtYmVyRnVuY3Rpb24iKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRocmVhZHNh
ZmVEZWF0aFRlc3RJbkxvb3ApIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0
eWxlKSA9ICJ0aHJlYWRzYWZlIjsKLQotICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkKLSAg
ICBFWFBFQ1RfRVhJVChfZXhpdChpKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoaSksICIiKSA8
PCAiOiBpID0gIiA8PCBpOwotfQotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgVGhyZWFkc2Fm
ZURlYXRoVGVzdEluQ2hhbmdlZERpcikgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rl
c3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOwotCi0gIENoYW5nZVRvUm9vdERpcigpOwotICBFWFBF
Q1RfRVhJVChfZXhpdCgxKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSksICIiKTsKLQotICBD
aGFuZ2VUb1Jvb3REaXIoKTsKLSAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci19Ci0KLVRF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNaXhlZFN0eWxlcykgewotICB0ZXN0aW5nOjpHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOwotICBFWFBFQ1RfREVBVEgoX2V4
aXQoMSksICIiKTsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJm
YXN0IjsKLSAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci19Ci0KLW5hbWVzcGFjZSB7Ci0K
LWJvb2wgcHRocmVhZF9mbGFnOwotCi12b2lkIFNldFB0aHJlYWRGbGFnKCkgewotICBwdGhyZWFk
X2ZsYWcgPSB0cnVlOwotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotI2lmIEdURVNUX0hBU19DTE9O
RSAmJiBHVEVTVF9IQVNfUFRIUkVBRAotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRG9lc05v
dEV4ZWN1dGVBdGZvcmtIb29rcykgewotICBpZiAoIXRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhf
dGVzdF91c2VfZm9yaykpIHsKLSAgICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5
bGUpID0gInRocmVhZHNhZmUiOwotICAgIHB0aHJlYWRfZmxhZyA9IGZhbHNlOwotICAgIEFTU0VS
VF9FUSgwLCBwdGhyZWFkX2F0Zm9yaygmU2V0UHRocmVhZEZsYWcsIE5VTEwsIE5VTEwpKTsKLSAg
ICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIiKTsKLSAgICBBU1NFUlRfRkFMU0UocHRocmVhZF9m
bGFnKTsKLSAgfQotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORSAmJiBHVEVTVF9IQVNf
UFRIUkVBRAotCi0vLyBUZXN0cyB0aGF0IGEgbWV0aG9kIG9mIGFub3RoZXIgY2xhc3MgY2FuIGJl
IHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE1ldGhvZE9m
QW5vdGhlckNsYXNzKSB7Ci0gIGNvbnN0IE1heURpZSB4KHRydWUpOwotICBBU1NFUlRfREVBVEgo
eC5NZW1iZXJGdW5jdGlvbigpLCAiTWF5RGllXFw6XFw6TWVtYmVyRnVuY3Rpb24iKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBhIGdsb2JhbCBmdW5jdGlvbiBjYW4gYmUgdXNlZCBpbiBhIGRlYXRoIHRl
c3QuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgR2xvYmFsRnVuY3Rpb24pIHsKLSAgRVhQRUNU
X0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksICJHbG9iYWxGdW5jdGlvbiIpOwotfQotCi0vLyBUZXN0
cyB0aGF0IGFueSB2YWx1ZSBjb252ZXJ0aWJsZSB0byBhbiBSRSB3b3JrcyBhcyBhIHNlY29uZAot
Ly8gYXJndW1lbnQgdG8gRVhQRUNUX0RFQVRILgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFj
Y2VwdHNBbnl0aGluZ0NvbnZlcnRpYmxlVG9SRSkgewotICBzdGF0aWMgY29uc3QgY2hhciByZWdl
eF9jX3N0cltdID0gIkdsb2JhbEZ1bmN0aW9uIjsKLSAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0
aW9uKCksIHJlZ2V4X2Nfc3RyKTsKLQotICBjb25zdCB0ZXN0aW5nOjppbnRlcm5hbDo6UkUgcmVn
ZXgocmVnZXhfY19zdHIpOwotICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXgp
OwotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLSAgY29uc3Qgc3RyaW5nIHJlZ2V4X3N0
cihyZWdleF9jX3N0cik7Ci0gIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleF9z
dHIpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotCi0gIGNvbnN0IDo6c3Rk
OjpzdHJpbmcgcmVnZXhfc3RkX3N0cihyZWdleF9jX3N0cik7Ci0gIEVYUEVDVF9ERUFUSChHbG9i
YWxGdW5jdGlvbigpLCByZWdleF9zdGRfc3RyKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIG5vbi12
b2lkIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KLVRFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBOb25Wb2lkRnVuY3Rpb24pIHsKLSAgQVNTRVJUX0RFQVRIKE5vblZvaWRGdW5j
dGlvbigpLCAiTm9uVm9pZEZ1bmN0aW9uIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgZnVuY3Rpb25z
IHRoYXQgdGFrZSBwYXJhbWV0ZXIocykgY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgotVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIEZ1bmN0aW9uV2l0aFBhcmFtZXRlcikgewotICBFWFBFQ1Rf
REVBVEgoRGllSWYodHJ1ZSksICJEaWVJZlxcKFxcKSIpOwotICBFWFBFQ1RfREVBVEgoRGllSWZM
ZXNzVGhhbigyLCAzKSwgIkRpZUlmTGVzc1RoYW4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBU1NF
UlRfREVBVEggY2FuIGJlIHVzZWQgb3V0c2lkZSBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdCBmaXh0
dXJlLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE91dHNpZGVGaXh0dXJlKSB7Ci0gIERlYXRo
VGVzdFN1YnJvdXRpbmUoKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyBjYW4gYmUg
ZG9uZSBpbnNpZGUgYSBsb29wLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEluc2lkZUxvb3Ap
IHsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKLSAgICBFWFBFQ1RfREVBVEgoRGll
SWZMZXNzVGhhbigtMSwgaSksICJEaWVJZkxlc3NUaGFuIikgPDwgIndoZXJlIGkgPT0gIiA8PCBp
OwotICB9Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBjb21wb3VuZCBzdGF0ZW1lbnQgY2FuIGJlIHVz
ZWQgaW4gYSBkZWF0aCB0ZXN0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIENvbXBvdW5kU3Rh
dGVtZW50KSB7Ci0gIEVYUEVDVF9ERUFUSCh7ICAvLyBOT0xJTlQKLSAgICBjb25zdCBpbnQgeCA9
IDI7Ci0gICAgY29uc3QgaW50IHkgPSB4ICsgMTsKLSAgICBEaWVJZkxlc3NUaGFuKHgsIHkpOwot
ICB9LAotICAiRGllSWZMZXNzVGhhbiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IGNvZGUgdGhhdCBk
b2Vzbid0IGRpZSBjYXVzZXMgYSBkZWF0aCB0ZXN0IHRvIGZhaWwuCi1URVNUX0YoVGVzdEZvckRl
YXRoVGVzdCwgRG9lc05vdERpZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1Rf
REVBVEgoRGllSWYoZmFsc2UpLCAiRGllSWYiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ImZhaWxlZCB0byBkaWUiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIGRlYXRoIHRlc3QgZmFpbHMg
d2hlbiB0aGUgZXJyb3IgbWVzc2FnZSBpc24ndCBleHBlY3RlZC4KLVRFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBFcnJvck1lc3NhZ2VNaXNtYXRjaCkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfREVBVEgoRGllSWYodHJ1ZSksICJEaWVJZkxlc3NU
aGFuIikgPDwgIkVuZCBvZiBkZWF0aCB0ZXN0IG1lc3NhZ2UuIjsKLSAgfSwgImRpZWQgYnV0IG5v
dCB3aXRoIGV4cGVjdGVkIGVycm9yIik7Ci19Ci0KLS8vIE9uIGV4aXQsICphYm9ydGVkIHdpbGwg
YmUgdHJ1ZSBpZmYgdGhlIEVYUEVDVF9ERUFUSCgpIHN0YXRlbWVudAotLy8gYWJvcnRlZCB0aGUg
ZnVuY3Rpb24uCi12b2lkIEV4cGVjdERlYXRoVGVzdEhlbHBlcihib29sKiBhYm9ydGVkKSB7Ci0g
ICphYm9ydGVkID0gdHJ1ZTsKLSAgRVhQRUNUX0RFQVRIKERpZUlmKGZhbHNlKSwgIkRpZUlmIik7
ICAvLyBUaGlzIGFzc2VydGlvbiBzaG91bGQgZmFpbC4KLSAgKmFib3J0ZWQgPSBmYWxzZTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEggZG9lc24ndCBhYm9ydCB0aGUgdGVzdCBvbiBm
YWlsdXJlLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEVYUEVDVF9ERUFUSCkgewotICBib29s
IGFib3J0ZWQgPSB0cnVlOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFeHBlY3REZWF0aFRl
c3RIZWxwZXIoJmFib3J0ZWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRv
IGRpZSIpOwotICBFWFBFQ1RfRkFMU0UoYWJvcnRlZCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQVNT
RVJUX0RFQVRIIGRvZXMgYWJvcnQgdGhlIHRlc3Qgb24gZmFpbHVyZS4KLVRFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBBU1NFUlRfREVBVEgpIHsKLSAgc3RhdGljIGJvb2wgYWJvcnRlZDsKLSAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgYWJvcnRlZCA9IHRydWU7Ci0gICAg
QVNTRVJUX0RFQVRIKERpZUlmKGZhbHNlKSwgIkRpZUlmIik7ICAvLyBUaGlzIGFzc2VydGlvbiBz
aG91bGQgZmFpbC4KLSAgICBhYm9ydGVkID0gZmFsc2U7Ci0gIH0sICJmYWlsZWQgdG8gZGllIik7
Ci0gIEVYUEVDVF9UUlVFKGFib3J0ZWQpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFU
SCBldmFsdWF0ZXMgdGhlIGFyZ3VtZW50cyBleGFjdGx5IG9uY2UuCi1URVNUX0YoVGVzdEZvckRl
YXRoVGVzdCwgU2luZ2xlRXZhbHVhdGlvbikgewotICBpbnQgeCA9IDM7Ci0gIEVYUEVDVF9ERUFU
SChEaWVJZigoKyt4KSA9PSA0KSwgIkRpZUlmIik7Ci0KLSAgY29uc3QgY2hhciogcmVnZXggPSAi
RGllSWYiOwotICBjb25zdCBjaGFyKiByZWdleF9zYXZlID0gcmVnZXg7Ci0gIEVYUEVDVF9ERUFU
SChEaWVJZkxlc3NUaGFuKDMsIDQpLCByZWdleCsrKTsKLSAgRVhQRUNUX0VRKHJlZ2V4X3NhdmUg
KyAxLCByZWdleCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgcnVuLWF3YXkgZGVhdGggdGVzdHMgYXJl
IHJlcG9ydGVkIGFzIGZhaWx1cmVzLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFJ1bmF3YXkp
IHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKHN0YXRpY19jYXN0PHZv
aWQ+KDApLCAiRm9vIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZGll
LiIpOwotCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9ERUFUSChyZXR1cm4sICJCYXIi
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgImlsbGVnYWwgcmV0dXJuIGluIHRlc3Qgc3RhdGVt
ZW50LiIpOwotfQotCi0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQlVHX0RFQVRIIHdvcmtzIGFz
IGV4cGVjdGVkLAotLy8gdGhhdCBpcywgaW4gZGVidWcgbW9kZSwgaXQ6Ci0vLyAxLiBBc3NlcnRz
IG9uIGRlYXRoLgotLy8gMi4gSGFzIG5vIHNpZGUgZWZmZWN0LgotLy8KLS8vIEFuZCBpbiBvcHQg
bW9kZSwgaXQ6Ci0vLyAxLiAgSGFzIHNpZGUgZWZmZWN0cyBidXQgZG9lcyBub3QgYXNzZXJ0Lgot
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRlc3RFeHBlY3REZWJ1Z0RlYXRoKSB7Ci0gIGludCBz
aWRlZWZmZWN0ID0gMDsKLQotICBFWFBFQ1RfREVCVUdfREVBVEgoRGllSW5EZWJ1Z0Vsc2UxMigm
c2lkZWVmZmVjdCksCi0gICAgICAgICAgICAgICAgICAgICAiZGVhdGguKkRpZUluRGVidWdFbHNl
MTIiKTsKLQotI2lmZGVmIE5ERUJVRwotICAvLyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBv
Y2N1cnMgaW4gb3B0IG1vZGUgKHNpZGVlZmZlY3QpLgotICBFWFBFQ1RfRVEoMTIsIHNpZGVlZmZl
Y3QpOwotI2Vsc2UKLSAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgZG9lcyBub3Qgb2Nj
dXIgaW4gZGJnIG1vZGUgKG5vIHNpZGVlZmZlY3QpLgotICBFWFBFQ1RfRVEoMCwgc2lkZWVmZmVj
dCk7Ci0jZW5kaWYKLX0KLQotLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVCVUdfREVBVEggd29ya3Mg
YXMgZXhwZWN0ZWQKLS8vIEluIGRlYnVnIG1vZGU6Ci0vLyAxLiBBc3NlcnRzIG9uIGRlYnVnIGRl
YXRoLgotLy8gMi4gSGFzIG5vIHNpZGUgZWZmZWN0LgotLy8KLS8vIEluIG9wdCBtb2RlOgotLy8g
MS4gSGFzIHNpZGUgZWZmZWN0cyBhbmQgcmV0dXJucyB0aGUgZXhwZWN0ZWQgdmFsdWUgKDEyKS4K
LVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUZXN0QXNzZXJ0RGVidWdEZWF0aCkgewotICBpbnQg
c2lkZWVmZmVjdCA9IDA7Ci0KLSAgQVNTRVJUX0RFQlVHX0RFQVRIKHsgIC8vIE5PTElOVAotICAg
IC8vIFRlc3RzIHRoYXQgdGhlIHJldHVybiB2YWx1ZSBpcyAxMiBpbiBvcHQgbW9kZS4KLSAgICBF
WFBFQ1RfRVEoMTIsIERpZUluRGVidWdFbHNlMTIoJnNpZGVlZmZlY3QpKTsKLSAgICAvLyBUZXN0
cyB0aGF0IHRoZSBzaWRlIGVmZmVjdCBvY2N1cnJlZCBpbiBvcHQgbW9kZS4KLSAgICBFWFBFQ1Rf
RVEoMTIsIHNpZGVlZmZlY3QpOwotICB9LCAiZGVhdGguKkRpZUluRGVidWdFbHNlMTIiKTsKLQot
I2lmZGVmIE5ERUJVRwotICAvLyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBvY2N1cnMgaW4g
b3B0IG1vZGUgKHNpZGVlZmZlY3QpLgotICBFWFBFQ1RfRVEoMTIsIHNpZGVlZmZlY3QpOwotI2Vs
c2UKLSAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgZG9lcyBub3Qgb2NjdXIgaW4gZGJn
IG1vZGUgKG5vIHNpZGVlZmZlY3QpLgotICBFWFBFQ1RfRVEoMCwgc2lkZWVmZmVjdCk7Ci0jZW5k
aWYKLX0KLQotI2lmbmRlZiBOREVCVUcKLQotdm9pZCBFeHBlY3REZWJ1Z0RlYXRoSGVscGVyKGJv
b2wqIGFib3J0ZWQpIHsKLSAgKmFib3J0ZWQgPSB0cnVlOwotICBFWFBFQ1RfREVCVUdfREVBVEgo
cmV0dXJuLCAiIikgPDwgIlRoaXMgaXMgZXhwZWN0ZWQgdG8gZmFpbC4iOwotICAqYWJvcnRlZCA9
IGZhbHNlOwotfQotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotVEVTVChQb3BVcERlYXRoVGVzdCwg
RG9lc05vdFNob3dQb3BVcE9uQWJvcnQpIHsKLSAgcHJpbnRmKCJUaGlzIHRlc3Qgc2hvdWxkIGJl
IGNvbnNpZGVyZWQgZmFpbGluZyBpZiBpdCBzaG93cyAiCi0gICAgICAgICAiYW55IHBvcC11cCBk
aWFsb2dzLlxuIik7Ci0gIGZmbHVzaChzdGRvdXQpOwotCi0gIEVYUEVDVF9ERUFUSCh7Ci0gICAg
dGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA9IGZhbHNlOwotICAgIGFib3J0
KCk7Ci0gIH0sICIiKTsKLX0KLQotVEVTVChQb3BVcERlYXRoVGVzdCwgRG9lc05vdFNob3dQb3BV
cE9uVGhyb3cpIHsKLSAgcHJpbnRmKCJUaGlzIHRlc3Qgc2hvdWxkIGJlIGNvbnNpZGVyZWQgZmFp
bGluZyBpZiBpdCBzaG93cyAiCi0gICAgICAgICAiYW55IHBvcC11cCBkaWFsb2dzLlxuIik7Ci0g
IGZmbHVzaChzdGRvdXQpOwotCi0gIEVYUEVDVF9ERUFUSCh7Ci0gICAgdGVzdGluZzo6R1RFU1Rf
RkxBRyhjYXRjaF9leGNlcHRpb25zKSA9IGZhbHNlOwotICAgIHRocm93IDE7Ci0gIH0sICIiKTsK
LX0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9E
RUJVR19ERUFUSCBpbiBkZWJ1ZyBtb2RlIGRvZXMgbm90IGFib3J0Ci0vLyB0aGUgZnVuY3Rpb24u
Ci1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRXhwZWN0RGVidWdEZWF0aERvZXNOb3RBYm9ydCkg
ewotICBib29sIGFib3J0ZWQgPSB0cnVlOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFeHBl
Y3REZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwgIiIpOwotICBFWFBFQ1RfRkFMU0UoYWJvcnRl
ZCk7Ci19Ci0KLXZvaWQgQXNzZXJ0RGVidWdEZWF0aEhlbHBlcihib29sKiBhYm9ydGVkKSB7Ci0g
ICphYm9ydGVkID0gdHJ1ZTsKLSAgQVNTRVJUX0RFQlVHX0RFQVRIKHJldHVybiwgIiIpIDw8ICJU
aGlzIGlzIGV4cGVjdGVkIHRvIGZhaWwuIjsKLSAgKmFib3J0ZWQgPSBmYWxzZTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBBU1NFUlRfREVCVUdfREVBVEggaW4gZGVidWcgbW9kZSBhYm9ydHMgdGhlIGZ1
bmN0aW9uIG9uCi0vLyBmYWlsdXJlLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERl
YnVnRGVhdGhBYm9ydHMpIHsKLSAgc3RhdGljIGJvb2wgYWJvcnRlZDsKLSAgYWJvcnRlZCA9IGZh
bHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9y
dGVkKSwgIiIpOwotICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKLX0KLQotI2VuZGlmICAvLyBfTkRF
QlVHCi0KLS8vIFRlc3RzIHRoZSAqX0VYSVQgZmFtaWx5IG9mIG1hY3JvcywgdXNpbmcgYSB2YXJp
ZXR5IG9mIHByZWRpY2F0ZXMuCi1zdGF0aWMgdm9pZCBUZXN0RXhpdE1hY3JvcygpIHsKLSAgRVhQ
RUNUX0VYSVQoX2V4aXQoMSksICB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSwgICIiKTsKLSAg
QVNTRVJUX0VYSVQoX2V4aXQoNDIpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSg0MiksICIiKTsK
LQotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgLy8gT2YgYWxsIHNpZ25hbHMgZWZmZWN0cyBvbiB0
aGUgcHJvY2VzcyBleGl0IGNvZGUsIG9ubHkgdGhvc2Ugb2YgU0lHQUJSVAotICAvLyBhcmUgZG9j
dW1lbnRlZCBvbiBXaW5kb3dzLgotICAvLyBTZWUgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9l
bi11cy9saWJyYXJ5L2R3d3prdDRjKFZTLjcxKS5hc3B4LgotICBFWFBFQ1RfRVhJVChyYWlzZShT
SUdBQlJUKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMyksICIiKTsKLSNlbHNlCi0gIEVYUEVD
VF9FWElUKHJhaXNlKFNJR0tJTEwpLCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChTSUdLSUxMKSwg
IiIpIDw8ICJmb28iOwotICBBU1NFUlRfRVhJVChyYWlzZShTSUdVU1IyKSwgdGVzdGluZzo6S2ls
bGVkQnlTaWduYWwoU0lHVVNSMiksICIiKSA8PCAiYmFyIjsKLQotICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfRVhJVChfZXhpdCgwKSwgdGVzdGluZzo6S2ls
bGVkQnlTaWduYWwoU0lHU0VHViksICIiKQotICAgICAgICA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4
cGVjdGVkLCB0b28uIjsKLSAgfSwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgdG9vLiIpOwot
I2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX0VYSVQocmFpc2UoU0lHU0VHViksIHRlc3Rpbmc6OkV4
aXRlZFdpdGhDb2RlKDApLCAiIikKLSAgICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZC4iOwotICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOwotfQotCi1URVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgRXhpdE1hY3JvcykgewotICBUZXN0RXhpdE1hY3JvcygpOwotfQotCi1U
RVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRXhpdE1hY3Jvc1VzaW5nRm9yaykgewotICB0ZXN0aW5n
OjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspID0gdHJ1ZTsKLSAgVGVzdEV4aXRNYWNy
b3MoKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEludmFsaWRTdHlsZSkgewotICB0
ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInJvY29jbyI7Ci0gIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9ERUFUSChfZXhpdCgw
KSwgIiIpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIjsKLSAgfSwgIlRoaXMgZmFpbHVy
ZSBpcyBleHBlY3RlZC4iKTsKLX0KLQotLy8gQSBEZWF0aFRlc3RGYWN0b3J5IHRoYXQgcmV0dXJu
cyBNb2NrRGVhdGhUZXN0cy4KLWNsYXNzIE1vY2tEZWF0aFRlc3RGYWN0b3J5IDogcHVibGljIERl
YXRoVGVzdEZhY3RvcnkgewotIHB1YmxpYzoKLSAgTW9ja0RlYXRoVGVzdEZhY3RvcnkoKTsKLSAg
dmlydHVhbCBib29sIENyZWF0ZShjb25zdCBjaGFyKiBzdGF0ZW1lbnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UkUqIHJlZ2V4LAotICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBEZWF0aFRlc3QqKiB0ZXN0
KTsKLQotICAvLyBTZXRzIHRoZSBwYXJhbWV0ZXJzIGZvciBzdWJzZXF1ZW50IGNhbGxzIHRvIENy
ZWF0ZS4KLSAgdm9pZCBTZXRQYXJhbWV0ZXJzKGJvb2wgY3JlYXRlLCBEZWF0aFRlc3Q6OlRlc3RS
b2xlIHJvbGUsCi0gICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdHVzLCBib29sIHBhc3NlZCk7
Ci0KLSAgLy8gQWNjZXNzb3JzLgotICBpbnQgQXNzdW1lUm9sZUNhbGxzKCkgY29uc3QgeyByZXR1
cm4gYXNzdW1lX3JvbGVfY2FsbHNfOyB9Ci0gIGludCBXYWl0Q2FsbHMoKSBjb25zdCB7IHJldHVy
biB3YWl0X2NhbGxzXzsgfQotICBpbnQgUGFzc2VkQ2FsbHMoKSBjb25zdCB7IHJldHVybiBwYXNz
ZWRfYXJnc18uc2l6ZSgpOyB9Ci0gIGJvb2wgUGFzc2VkQXJndW1lbnQoaW50IG4pIGNvbnN0IHsg
cmV0dXJuIHBhc3NlZF9hcmdzX1tuXTsgfQotICBpbnQgQWJvcnRDYWxscygpIGNvbnN0IHsgcmV0
dXJuIGFib3J0X2FyZ3NfLnNpemUoKTsgfQotICBEZWF0aFRlc3Q6OkFib3J0UmVhc29uIEFib3J0
QXJndW1lbnQoaW50IG4pIGNvbnN0IHsKLSAgICByZXR1cm4gYWJvcnRfYXJnc19bbl07Ci0gIH0K
LSAgYm9vbCBUZXN0RGVsZXRlZCgpIGNvbnN0IHsgcmV0dXJuIHRlc3RfZGVsZXRlZF87IH0KLQot
IHByaXZhdGU6Ci0gIGZyaWVuZCBjbGFzcyBNb2NrRGVhdGhUZXN0OwotICAvLyBJZiB0cnVlLCBD
cmVhdGUgd2lsbCByZXR1cm4gYSBNb2NrRGVhdGhUZXN0OyBvdGhlcndpc2UgaXQgcmV0dXJucwot
ICAvLyBOVUxMLgotICBib29sIGNyZWF0ZV87Ci0gIC8vIFRoZSB2YWx1ZSBhIE1vY2tEZWF0aFRl
c3Qgd2lsbCByZXR1cm4gZnJvbSBpdHMgQXNzdW1lUm9sZSBtZXRob2QuCi0gIERlYXRoVGVzdDo6
VGVzdFJvbGUgcm9sZV87Ci0gIC8vIFRoZSB2YWx1ZSBhIE1vY2tEZWF0aFRlc3Qgd2lsbCByZXR1
cm4gZnJvbSBpdHMgV2FpdCBtZXRob2QuCi0gIGludCBzdGF0dXNfOwotICAvLyBUaGUgdmFsdWUg
YSBNb2NrRGVhdGhUZXN0IHdpbGwgcmV0dXJuIGZyb20gaXRzIFBhc3NlZCBtZXRob2QuCi0gIGJv
b2wgcGFzc2VkXzsKLQotICAvLyBOdW1iZXIgb2YgdGltZXMgQXNzdW1lUm9sZSB3YXMgY2FsbGVk
LgotICBpbnQgYXNzdW1lX3JvbGVfY2FsbHNfOwotICAvLyBOdW1iZXIgb2YgdGltZXMgV2FpdCB3
YXMgY2FsbGVkLgotICBpbnQgd2FpdF9jYWxsc187Ci0gIC8vIFRoZSBhcmd1bWVudHMgdG8gdGhl
IGNhbGxzIHRvIFBhc3NlZCBzaW5jZSB0aGUgbGFzdCBjYWxsIHRvCi0gIC8vIFNldFBhcmFtZXRl
cnMuCi0gIHN0ZDo6dmVjdG9yPGJvb2w+IHBhc3NlZF9hcmdzXzsKLSAgLy8gVGhlIGFyZ3VtZW50
cyB0byB0aGUgY2FsbHMgdG8gQWJvcnQgc2luY2UgdGhlIGxhc3QgY2FsbCB0bwotICAvLyBTZXRQ
YXJhbWV0ZXJzLgotICBzdGQ6OnZlY3RvcjxEZWF0aFRlc3Q6OkFib3J0UmVhc29uPiBhYm9ydF9h
cmdzXzsKLSAgLy8gVHJ1ZSBpZiB0aGUgbGFzdCBNb2NrRGVhdGhUZXN0IHJldHVybmVkIGJ5IENy
ZWF0ZSBoYXMgYmVlbgotICAvLyBkZWxldGVkLgotICBib29sIHRlc3RfZGVsZXRlZF87Ci19Owot
Ci0KLS8vIEEgRGVhdGhUZXN0IGltcGxlbWVudGF0aW9uIHVzZWZ1bCBpbiB0ZXN0aW5nLiAgSXQg
cmV0dXJucyB2YWx1ZXMgc2V0Ci0vLyBhdCBpdHMgY3JlYXRpb24gZnJvbSBpdHMgdmFyaW91cyBp
bmhlcml0ZWQgRGVhdGhUZXN0IG1ldGhvZHMsIGFuZAotLy8gcmVwb3J0cyBjYWxscyB0byB0aG9z
ZSBtZXRob2RzIHRvIGl0cyBwYXJlbnQgTW9ja0RlYXRoVGVzdEZhY3RvcnkKLS8vIG9iamVjdC4K
LWNsYXNzIE1vY2tEZWF0aFRlc3QgOiBwdWJsaWMgRGVhdGhUZXN0IHsKLSBwdWJsaWM6Ci0gIE1v
Y2tEZWF0aFRlc3QoTW9ja0RlYXRoVGVzdEZhY3RvcnkgKnBhcmVudCwKLSAgICAgICAgICAgICAg
ICBUZXN0Um9sZSByb2xlLCBpbnQgc3RhdHVzLCBib29sIHBhc3NlZCkgOgotICAgICAgcGFyZW50
XyhwYXJlbnQpLCByb2xlXyhyb2xlKSwgc3RhdHVzXyhzdGF0dXMpLCBwYXNzZWRfKHBhc3NlZCkg
ewotICB9Ci0gIHZpcnR1YWwgfk1vY2tEZWF0aFRlc3QoKSB7Ci0gICAgcGFyZW50Xy0+dGVzdF9k
ZWxldGVkXyA9IHRydWU7Ci0gIH0KLSAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCkgewot
ICAgICsrcGFyZW50Xy0+YXNzdW1lX3JvbGVfY2FsbHNfOwotICAgIHJldHVybiByb2xlXzsKLSAg
fQotICB2aXJ0dWFsIGludCBXYWl0KCkgewotICAgICsrcGFyZW50Xy0+d2FpdF9jYWxsc187Ci0g
ICAgcmV0dXJuIHN0YXR1c187Ci0gIH0KLSAgdmlydHVhbCBib29sIFBhc3NlZChib29sIGV4aXRf
c3RhdHVzX29rKSB7Ci0gICAgcGFyZW50Xy0+cGFzc2VkX2FyZ3NfLnB1c2hfYmFjayhleGl0X3N0
YXR1c19vayk7Ci0gICAgcmV0dXJuIHBhc3NlZF87Ci0gIH0KLSAgdmlydHVhbCB2b2lkIEFib3J0
KEFib3J0UmVhc29uIHJlYXNvbikgewotICAgIHBhcmVudF8tPmFib3J0X2FyZ3NfLnB1c2hfYmFj
ayhyZWFzb24pOwotICB9Ci0gcHJpdmF0ZToKLSAgTW9ja0RlYXRoVGVzdEZhY3RvcnkqIGNvbnN0
IHBhcmVudF87Ci0gIGNvbnN0IFRlc3RSb2xlIHJvbGVfOwotICBjb25zdCBpbnQgc3RhdHVzXzsK
LSAgY29uc3QgYm9vbCBwYXNzZWRfOwotfTsKLQotCi0vLyBNb2NrRGVhdGhUZXN0RmFjdG9yeSBj
b25zdHJ1Y3Rvci4KLU1vY2tEZWF0aFRlc3RGYWN0b3J5OjpNb2NrRGVhdGhUZXN0RmFjdG9yeSgp
Ci0gICAgOiBjcmVhdGVfKHRydWUpLAotICAgICAgcm9sZV8oRGVhdGhUZXN0OjpPVkVSU0VFX1RF
U1QpLAotICAgICAgc3RhdHVzXygwKSwKLSAgICAgIHBhc3NlZF8odHJ1ZSksCi0gICAgICBhc3N1
bWVfcm9sZV9jYWxsc18oMCksCi0gICAgICB3YWl0X2NhbGxzXygwKSwKLSAgICAgIHBhc3NlZF9h
cmdzXygpLAotICAgICAgYWJvcnRfYXJnc18oKSB7Ci19Ci0KLQotLy8gU2V0cyB0aGUgcGFyYW1l
dGVycyBmb3Igc3Vic2VxdWVudCBjYWxscyB0byBDcmVhdGUuCi12b2lkIE1vY2tEZWF0aFRlc3RG
YWN0b3J5OjpTZXRQYXJhbWV0ZXJzKGJvb2wgY3JlYXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEZWF0aFRlc3Q6OlRlc3RSb2xlIHJvbGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0dXMsIGJvb2wgcGFzc2VkKSB7
Ci0gIGNyZWF0ZV8gPSBjcmVhdGU7Ci0gIHJvbGVfID0gcm9sZTsKLSAgc3RhdHVzXyA9IHN0YXR1
czsKLSAgcGFzc2VkXyA9IHBhc3NlZDsKLQotICBhc3N1bWVfcm9sZV9jYWxsc18gPSAwOwotICB3
YWl0X2NhbGxzXyA9IDA7Ci0gIHBhc3NlZF9hcmdzXy5jbGVhcigpOwotICBhYm9ydF9hcmdzXy5j
bGVhcigpOwotfQotCi0KLS8vIFNldHMgdGVzdCB0byBOVUxMIChpZiBjcmVhdGVfIGlzIGZhbHNl
KSBvciB0byB0aGUgYWRkcmVzcyBvZiBhIG5ldwotLy8gTW9ja0RlYXRoVGVzdCBvYmplY3Qgd2l0
aCBwYXJhbWV0ZXJzIHRha2VuIGZyb20gdGhlIGxhc3QgY2FsbAotLy8gdG8gU2V0UGFyYW1ldGVy
cyAoaWYgY3JlYXRlXyBpcyB0cnVlKS4gIEFsd2F5cyByZXR1cm5zIHRydWUuCi1ib29sIE1vY2tE
ZWF0aFRlc3RGYWN0b3J5OjpDcmVhdGUoY29uc3QgY2hhciogLypzdGF0ZW1lbnQqLywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpS
RSogLypyZWdleCovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIC8qZmlsZSovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKmxp
bmUqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWF0aFRlc3QqKiB0ZXN0
KSB7Ci0gIHRlc3RfZGVsZXRlZF8gPSBmYWxzZTsKLSAgaWYgKGNyZWF0ZV8pIHsKLSAgICAqdGVz
dCA9IG5ldyBNb2NrRGVhdGhUZXN0KHRoaXMsIHJvbGVfLCBzdGF0dXNfLCBwYXNzZWRfKTsKLSAg
fSBlbHNlIHsKLSAgICAqdGVzdCA9IE5VTEw7Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLS8v
IEEgdGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIHRoZSBsb2dpYyBvZiB0aGUgR1RFU1RfREVBVEhf
VEVTVF8gbWFjcm8uCi0vLyBJdCBpbnN0YWxscyBhIE1vY2tEZWF0aFRlc3RGYWN0b3J5IHRoYXQg
aXMgdXNlZCBmb3IgdGhlIGR1cmF0aW9uCi0vLyBvZiB0aGUgdGVzdCBjYXNlLgotY2xhc3MgTWFj
cm9Mb2dpY0RlYXRoVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0g
IHN0YXRpYyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVwbGFjZURlYXRoVGVzdEZhY3RvcnkqIHJlcGxh
Y2VyXzsKLSAgc3RhdGljIE1vY2tEZWF0aFRlc3RGYWN0b3J5KiBmYWN0b3J5XzsKLQotICBzdGF0
aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgewotICAgIGZhY3RvcnlfID0gbmV3IE1vY2tEZWF0aFRl
c3RGYWN0b3J5OwotICAgIHJlcGxhY2VyXyA9IG5ldyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVwbGFj
ZURlYXRoVGVzdEZhY3RvcnkoZmFjdG9yeV8pOwotICB9Ci0KLSAgc3RhdGljIHZvaWQgVGVhckRv
d25UZXN0Q2FzZSgpIHsKLSAgICBkZWxldGUgcmVwbGFjZXJfOwotICAgIHJlcGxhY2VyXyA9IE5V
TEw7Ci0gICAgZGVsZXRlIGZhY3RvcnlfOwotICAgIGZhY3RvcnlfID0gTlVMTDsKLSAgfQotCi0g
IC8vIFJ1bnMgYSBkZWF0aCB0ZXN0IHRoYXQgYnJlYWtzIHRoZSBydWxlcyBieSByZXR1cm5pbmcu
ICBTdWNoIGEgZGVhdGgKLSAgLy8gdGVzdCBjYW5ub3QgYmUgcnVuIGRpcmVjdGx5IGZyb20gYSB0
ZXN0IHJvdXRpbmUgdGhhdCB1c2VzIGEKLSAgLy8gTW9ja0RlYXRoVGVzdCwgb3IgdGhlIHJlbWFp
bmRlciBvZiB0aGUgcm91dGluZSB3aWxsIG5vdCBiZSBleGVjdXRlZC4KLSAgc3RhdGljIHZvaWQg
UnVuUmV0dXJuaW5nRGVhdGhUZXN0KGJvb2wqIGZsYWcpIHsKLSAgICBBU1NFUlRfREVBVEgoeyAg
Ly8gTk9MSU5UCi0gICAgICAqZmxhZyA9IHRydWU7Ci0gICAgICByZXR1cm47Ci0gICAgfSwgIiIp
OwotICB9Ci19OwotCi10ZXN0aW5nOjppbnRlcm5hbDo6UmVwbGFjZURlYXRoVGVzdEZhY3Rvcnkq
IE1hY3JvTG9naWNEZWF0aFRlc3Q6OnJlcGxhY2VyXwotICAgID0gTlVMTDsKLU1vY2tEZWF0aFRl
c3RGYWN0b3J5KiBNYWNyb0xvZ2ljRGVhdGhUZXN0OjpmYWN0b3J5XyA9IE5VTEw7Ci0KLQotLy8g
VGVzdCB0aGF0IG5vdGhpbmcgaGFwcGVucyB3aGVuIHRoZSBmYWN0b3J5IGRvZXNuJ3QgcmV0dXJu
IGEgRGVhdGhUZXN0OgotVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIE5vdGhpbmdIYXBwZW5z
KSB7Ci0gIGJvb2wgZmxhZyA9IGZhbHNlOwotICBmYWN0b3J5Xy0+U2V0UGFyYW1ldGVycyhmYWxz
ZSwgRGVhdGhUZXN0OjpPVkVSU0VFX1RFU1QsIDAsIHRydWUpOwotICBFWFBFQ1RfREVBVEgoZmxh
ZyA9IHRydWUsICIiKTsKLSAgRVhQRUNUX0ZBTFNFKGZsYWcpOwotICBFWFBFQ1RfRVEoMCwgZmFj
dG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5XYWl0
Q2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7Ci0gIEVY
UEVDVF9FUSgwLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKLSAgRVhQRUNUX0ZBTFNFKGZhY3Rv
cnlfLT5UZXN0RGVsZXRlZCgpKTsKLX0KLQotLy8gVGVzdCB0aGF0IHRoZSBwYXJlbnQgcHJvY2Vz
cyBkb2Vzbid0IHJ1biB0aGUgZGVhdGggdGVzdCBjb2RlLAotLy8gYW5kIHRoYXQgdGhlIFBhc3Nl
ZCBtZXRob2QgcmV0dXJucyBmYWxzZSB3aGVuIHRoZSAoc2ltdWxhdGVkKQotLy8gY2hpbGQgcHJv
Y2VzcyBleGl0cyB3aXRoIHN0YXR1cyAwOgotVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENo
aWxkRXhpdHNTdWNjZXNzZnVsbHkpIHsKLSAgYm9vbCBmbGFnID0gZmFsc2U7Ci0gIGZhY3Rvcnlf
LT5TZXRQYXJhbWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6T1ZFUlNFRV9URVNULCAwLCB0cnVlKTsK
LSAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7Ci0gIEVYUEVDVF9GQUxTRShmbGFnKTsK
LSAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5Bc3N1bWVSb2xlQ2FsbHMoKSk7Ci0gIEVYUEVDVF9F
USgxLCBmYWN0b3J5Xy0+V2FpdENhbGxzKCkpOwotICBBU1NFUlRfRVEoMSwgZmFjdG9yeV8tPlBh
c3NlZENhbGxzKCkpOwotICBFWFBFQ1RfRkFMU0UoZmFjdG9yeV8tPlBhc3NlZEFyZ3VtZW50KDAp
KTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOwotICBFWFBFQ1RfVFJV
RShmYWN0b3J5Xy0+VGVzdERlbGV0ZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIFBhc3Nl
ZCBtZXRob2Qgd2FzIGdpdmVuIHRoZSBhcmd1bWVudCAidHJ1ZSIgd2hlbgotLy8gdGhlIChzaW11
bGF0ZWQpIGNoaWxkIHByb2Nlc3MgZXhpdHMgd2l0aCBzdGF0dXMgMToKLVRFU1RfRihNYWNyb0xv
Z2ljRGVhdGhUZXN0LCBDaGlsZEV4aXRzVW5zdWNjZXNzZnVsbHkpIHsKLSAgYm9vbCBmbGFnID0g
ZmFsc2U7Ci0gIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6T1ZFUlNF
RV9URVNULCAxLCB0cnVlKTsKLSAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7Ci0gIEVY
UEVDVF9GQUxTRShmbGFnKTsKLSAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5Bc3N1bWVSb2xlQ2Fs
bHMoKSk7Ci0gIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+V2FpdENhbGxzKCkpOwotICBBU1NFUlRf
RVEoMSwgZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOwotICBFWFBFQ1RfVFJVRShmYWN0b3J5Xy0+
UGFzc2VkQXJndW1lbnQoMCkpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPkFib3J0Q2FsbHMo
KSk7Ci0gIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCB0aGUgKHNpbXVsYXRlZCkgY2hpbGQgcHJvY2VzcyBleGVjdXRlcyB0aGUgZGVhdGgg
dGVzdAotLy8gY29kZSwgYW5kIGlzIGFib3J0ZWQgd2l0aCB0aGUgY29ycmVjdCBBYm9ydFJlYXNv
biBpZiBpdAotLy8gZXhlY3V0ZXMgYSByZXR1cm4gc3RhdGVtZW50LgotVEVTVF9GKE1hY3JvTG9n
aWNEZWF0aFRlc3QsIENoaWxkUGVyZm9ybXNSZXR1cm4pIHsKLSAgYm9vbCBmbGFnID0gZmFsc2U7
Ci0gIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6RVhFQ1VURV9URVNU
LCAwLCB0cnVlKTsKLSAgUnVuUmV0dXJuaW5nRGVhdGhUZXN0KCZmbGFnKTsKLSAgRVhQRUNUX1RS
VUUoZmxhZyk7Ci0gIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOwot
ICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPldhaXRDYWxscygpKTsKLSAgRVhQRUNUX0VRKDAsIGZh
Y3RvcnlfLT5QYXNzZWRDYWxscygpKTsKLSAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5BYm9ydENh
bGxzKCkpOwotICBFWFBFQ1RfRVEoRGVhdGhUZXN0OjpURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9T
VEFURU1FTlQsCi0gICAgICAgICAgICBmYWN0b3J5Xy0+QWJvcnRBcmd1bWVudCgwKSk7Ci0gIEVY
UEVDVF9UUlVFKGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0
aGUgKHNpbXVsYXRlZCkgY2hpbGQgcHJvY2VzcyBpcyBhYm9ydGVkIHdpdGggdGhlCi0vLyBjb3Jy
ZWN0IEFib3J0UmVhc29uIGlmIGl0IGRvZXMgbm90IGRpZS4KLVRFU1RfRihNYWNyb0xvZ2ljRGVh
dGhUZXN0LCBDaGlsZERvZXNOb3REaWUpIHsKLSAgYm9vbCBmbGFnID0gZmFsc2U7Ci0gIGZhY3Rv
cnlfLT5TZXRQYXJhbWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6RVhFQ1VURV9URVNULCAwLCB0cnVl
KTsKLSAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7Ci0gIEVYUEVDVF9UUlVFKGZsYWcp
OwotICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKLSAgRVhQRUNU
X0VRKDAsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+
UGFzc2VkQ2FsbHMoKSk7Ci0gIC8vIFRoaXMgdGltZSB0aGVyZSBhcmUgdHdvIGNhbGxzIHRvIEFi
b3J0OiBvbmUgc2luY2UgdGhlIHRlc3QgZGlkbid0Ci0gIC8vIGRpZSwgYW5kIGFub3RoZXIgZnJv
bSB0aGUgUmV0dXJuU2VudGluZWwgd2hlbiBpdCdzIGRlc3Ryb3llZC4gIFRoZQotICAvLyBzZW50
aW5lbCBub3JtYWxseSBpc24ndCBkZXN0cm95ZWQgaWYgYSB0ZXN0IGRvZXNuJ3QgZGllLCBzaW5j
ZQotICAvLyBfZXhpdCgyKSBpcyBjYWxsZWQgaW4gdGhhdCBjYXNlIGJ5IEZvcmtpbmdEZWF0aFRl
c3QsIGJ1dCBub3QgYnkKLSAgLy8gb3VyIE1vY2tEZWF0aFRlc3QuCi0gIEFTU0VSVF9FUSgyLCBm
YWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKLSAgRVhQRUNUX0VRKERlYXRoVGVzdDo6VEVTVF9ESURf
Tk9UX0RJRSwKLSAgICAgICAgICAgIGZhY3RvcnlfLT5BYm9ydEFyZ3VtZW50KDApKTsKLSAgRVhQ
RUNUX0VRKERlYXRoVGVzdDo6VEVTVF9FTkNPVU5URVJFRF9SRVRVUk5fU1RBVEVNRU5ULAotICAg
ICAgICAgICAgZmFjdG9yeV8tPkFib3J0QXJndW1lbnQoMSkpOwotICBFWFBFQ1RfVFJVRShmYWN0
b3J5Xy0+VGVzdERlbGV0ZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBzdWNjZXNzZnVsIGRl
YXRoIHRlc3QgZG9lcyBub3QgcmVnaXN0ZXIgYSBzdWNjZXNzZnVsCi0vLyB0ZXN0IHBhcnQuCi1U
RVNUKFN1Y2Nlc3NSZWdpc3RyYXRpb25EZWF0aFRlc3QsIE5vU3VjY2Vzc1BhcnQpIHsKLSAgRVhQ
RUNUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci0gIEVYUEVDVF9FUSgwLCBHZXRVbml0VGVzdEltcGwo
KS0+Y3VycmVudF90ZXN0X3Jlc3VsdCgpLT50b3RhbF9wYXJ0X2NvdW50KCkpOwotfQotCi1URVNU
KFN0cmVhbWluZ0Fzc2VydGlvbnNEZWF0aFRlc3QsIERlYXRoVGVzdCkgewotICBFWFBFQ1RfREVB
VEgoX2V4aXQoMSksICIiKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKLSAgQVNTRVJUX0RFQVRI
KF9leGl0KDEpLCAiIikgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9ERUFUSChfZXhpdCgwKSwgIiIpIDw8
ICJleHBlY3RlZCBmYWlsdXJlIjsKLSAgfSwgImV4cGVjdGVkIGZhaWx1cmUiKTsKLSAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNTRVJUX0RFQVRIKF9leGl0KDApLCAi
IikgPDwgImV4cGVjdGVkIGZhaWx1cmUiOwotICB9LCAiZXhwZWN0ZWQgZmFpbHVyZSIpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IEdldExhc3RFcnJub0Rlc2NyaXB0aW9uIHJldHVybnMgYW4gZW1wdHkg
c3RyaW5nIHdoZW4gdGhlCi0vLyBsYXN0IGVycm9yIGlzIDAgYW5kIG5vbi1lbXB0eSBzdHJpbmcg
d2hlbiBpdCBpcyBub24temVyby4KLVRFU1QoR2V0TGFzdEVycm5vRGVzY3JpcHRpb24sIEdldExh
c3RFcnJub0Rlc2NyaXB0aW9uV29ya3MpIHsKLSAgZXJybm8gPSBFTk9FTlQ7Ci0gIEVYUEVDVF9T
VFJORSgiIiwgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKS5jX3N0cigpKTsKLSAgZXJybm8gPSAw
OwotICBFWFBFQ1RfU1RSRVEoIiIsIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkuY19zdHIoKSk7
Ci19Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi1URVNUKEF1dG9IYW5kbGVUZXN0LCBBdXRvSGFu
ZGxlV29ya3MpIHsKLSAgSEFORExFIGhhbmRsZSA9IDo6Q3JlYXRlRXZlbnQoTlVMTCwgRkFMU0Us
IEZBTFNFLCBOVUxMKTsKLSAgQVNTRVJUX05FKElOVkFMSURfSEFORExFX1ZBTFVFLCBoYW5kbGUp
OwotCi0gIC8vIFRlc3RzIHRoYXQgdGhlIEF1dG9IYW5kbGUgaXMgY29ycmVjdGx5IGluaXRpYWxp
emVkIHdpdGggYSBoYW5kbGUuCi0gIHRlc3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxlIGF1dG9f
aGFuZGxlKGhhbmRsZSk7Ci0gIEVYUEVDVF9FUShoYW5kbGUsIGF1dG9faGFuZGxlLkdldCgpKTsK
LQotICAvLyBUZXN0cyB0aGF0IFJlc2V0IGFzc2lnbnMgSU5WQUxJRF9IQU5ETEVfVkFMVUUuCi0g
IC8vIE5vdGUgdGhhdCB0aGlzIGNhbm5vdCB2ZXJpZnkgd2hldGhlciB0aGUgb3JpZ2luYWwgaGFu
ZGxlIGlzIGNsb3NlZC4KLSAgYXV0b19oYW5kbGUuUmVzZXQoKTsKLSAgRVhQRUNUX0VRKElOVkFM
SURfSEFORExFX1ZBTFVFLCBhdXRvX2hhbmRsZS5HZXQoKSk7Ci0KLSAgLy8gVGVzdHMgdGhhdCBS
ZXNldCBhc3NpZ25zIHRoZSBuZXcgaGFuZGxlLgotICAvLyBOb3RlIHRoYXQgdGhpcyBjYW5ub3Qg
dmVyaWZ5IHdoZXRoZXIgdGhlIG9yaWdpbmFsIGhhbmRsZSBpcyBjbG9zZWQuCi0gIGhhbmRsZSA9
IDo6Q3JlYXRlRXZlbnQoTlVMTCwgRkFMU0UsIEZBTFNFLCBOVUxMKTsKLSAgQVNTRVJUX05FKElO
VkFMSURfSEFORExFX1ZBTFVFLCBoYW5kbGUpOwotICBhdXRvX2hhbmRsZS5SZXNldChoYW5kbGUp
OwotICBFWFBFQ1RfRVEoaGFuZGxlLCBhdXRvX2hhbmRsZS5HZXQoKSk7Ci0KLSAgLy8gVGVzdHMg
dGhhdCBBdXRvSGFuZGxlIGNvbnRhaW5zIElOVkFMSURfSEFORExFX1ZBTFVFIGJ5IGRlZmF1bHQu
Ci0gIHRlc3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxlIGF1dG9faGFuZGxlMjsKLSAgRVhQRUNU
X0VRKElOVkFMSURfSEFORExFX1ZBTFVFLCBhdXRvX2hhbmRsZTIuR2V0KCkpOwotfQotI2VuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi10eXBlZGVmIHVu
c2lnbmVkIF9faW50NjQgQmlnZ2VzdFBhcnNhYmxlOwotdHlwZWRlZiBzaWduZWQgX19pbnQ2NCBC
aWdnZXN0U2lnbmVkUGFyc2FibGU7Ci1jb25zdCBCaWdnZXN0UGFyc2FibGUga0JpZ2dlc3RQYXJz
YWJsZU1heCA9IFVMTE9OR19NQVg7Ci1jb25zdCBCaWdnZXN0UGFyc2FibGUga0JpZ2dlc3RTaWdu
ZWRQYXJzYWJsZU1heCA9IExMT05HX01BWDsKLSNlbHNlCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcg
bG9uZyBCaWdnZXN0UGFyc2FibGU7Ci10eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgQmlnZ2VzdFNp
Z25lZFBhcnNhYmxlOwotY29uc3QgQmlnZ2VzdFBhcnNhYmxlIGtCaWdnZXN0UGFyc2FibGVNYXgg
PQotICAgIDo6c3RkOjpudW1lcmljX2xpbWl0czxCaWdnZXN0UGFyc2FibGU+OjptYXgoKTsKLWNv
bnN0IEJpZ2dlc3RTaWduZWRQYXJzYWJsZSBrQmlnZ2VzdFNpZ25lZFBhcnNhYmxlTWF4ID0KLSAg
ICA6OnN0ZDo6bnVtZXJpY19saW1pdHM8QmlnZ2VzdFNpZ25lZFBhcnNhYmxlPjo6bWF4KCk7Ci0j
ZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0
LCBSZWplY3RzSW52YWxpZEZvcm1hdCkgewotICBCaWdnZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsK
LQotICAvLyBSZWplY3RzIG5vbi1udW1iZXJzLgotICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFs
TnVtYmVyKFN0cmluZygibm9uLW51bWJlciBzdHJpbmciKSwgJnJlc3VsdCkpOwotCi0gIC8vIFJl
amVjdHMgbnVtYmVycyB3aXRoIHdoaXRlc3BhY2UgcHJlZml4LgotICBFWFBFQ1RfRkFMU0UoUGFy
c2VOYXR1cmFsTnVtYmVyKFN0cmluZygiIDEyMyIpLCAmcmVzdWx0KSk7Ci0KLSAgLy8gUmVqZWN0
cyBuZWdhdGl2ZSBudW1iZXJzLgotICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKFN0
cmluZygiLTEyMyIpLCAmcmVzdWx0KSk7Ci0KLSAgLy8gUmVqZWN0cyBudW1iZXJzIHN0YXJ0aW5n
IHdpdGggYSBwbHVzIHNpZ24uCi0gIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoU3Ry
aW5nKCIrMTIzIiksICZyZXN1bHQpKTsKLSAgZXJybm8gPSAwOwotfQotCi1URVNUKFBhcnNlTmF0
dXJhbE51bWJlclRlc3QsIFJlamVjdHNPdmVyZmxvd25OdW1iZXJzKSB7Ci0gIEJpZ2dlc3RQYXJz
YWJsZSByZXN1bHQgPSAwOwotCi0gIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoU3Ry
aW5nKCI5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSIpLCAmcmVzdWx0KSk7Ci0KLSAgc2lnbmVkIGNo
YXIgY2hhcl9yZXN1bHQgPSAwOwotICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKFN0
cmluZygiMjAwIiksICZjaGFyX3Jlc3VsdCkpOwotICBlcnJubyA9IDA7Ci19Ci0KLVRFU1QoUGFy
c2VOYXR1cmFsTnVtYmVyVGVzdCwgQWNjZXB0c1ZhbGlkTnVtYmVycykgewotICBCaWdnZXN0UGFy
c2FibGUgcmVzdWx0ID0gMDsKLQotICByZXN1bHQgPSAwOwotICBBU1NFUlRfVFJVRShQYXJzZU5h
dHVyYWxOdW1iZXIoU3RyaW5nKCIxMjMiKSwgJnJlc3VsdCkpOwotICBFWFBFQ1RfRVEoMTIzVSwg
cmVzdWx0KTsKLQotICAvLyBDaGVjayAwIGFzIGFuIGVkZ2UgY2FzZS4KLSAgcmVzdWx0ID0gMTsK
LSAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygiMCIpLCAmcmVzdWx0KSk7
Ci0gIEVYUEVDVF9FUSgwVSwgcmVzdWx0KTsKLQotICByZXN1bHQgPSAxOwotICBBU1NFUlRfVFJV
RShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCIwMDAwMCIpLCAmcmVzdWx0KSk7Ci0gIEVYUEVD
VF9FUSgwVSwgcmVzdWx0KTsKLX0KLQotVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBBY2Nl
cHRzVHlwZUxpbWl0cykgewotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGtCaWdnZXN0UGFyc2Fi
bGVNYXg7Ci0KLSAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7Ci0gIEVYUEVDVF9UUlVFKFBh
cnNlTmF0dXJhbE51bWJlcihtc2cuR2V0U3RyaW5nKCksICZyZXN1bHQpKTsKLSAgRVhQRUNUX0VR
KGtCaWdnZXN0UGFyc2FibGVNYXgsIHJlc3VsdCk7Ci0KLSAgTWVzc2FnZSBtc2cyOwotICBtc2cy
IDw8IGtCaWdnZXN0U2lnbmVkUGFyc2FibGVNYXg7Ci0KLSAgQmlnZ2VzdFNpZ25lZFBhcnNhYmxl
IHNpZ25lZF9yZXN1bHQgPSAwOwotICBFWFBFQ1RfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIobXNn
Mi5HZXRTdHJpbmcoKSwgJnNpZ25lZF9yZXN1bHQpKTsKLSAgRVhQRUNUX0VRKGtCaWdnZXN0U2ln
bmVkUGFyc2FibGVNYXgsIHNpZ25lZF9yZXN1bHQpOwotCi0gIE1lc3NhZ2UgbXNnMzsKLSAgbXNn
MyA8PCBJTlRfTUFYOwotCi0gIGludCBpbnRfcmVzdWx0ID0gMDsKLSAgRVhQRUNUX1RSVUUoUGFy
c2VOYXR1cmFsTnVtYmVyKG1zZzMuR2V0U3RyaW5nKCksICZpbnRfcmVzdWx0KSk7Ci0gIEVYUEVD
VF9FUShJTlRfTUFYLCBpbnRfcmVzdWx0KTsKLQotICBNZXNzYWdlIG1zZzQ7Ci0gIG1zZzQgPDwg
VUlOVF9NQVg7Ci0KLSAgdW5zaWduZWQgaW50IHVpbnRfcmVzdWx0ID0gMDsKLSAgRVhQRUNUX1RS
VUUoUGFyc2VOYXR1cmFsTnVtYmVyKG1zZzQuR2V0U3RyaW5nKCksICZ1aW50X3Jlc3VsdCkpOwot
ICBFWFBFQ1RfRVEoVUlOVF9NQVgsIHVpbnRfcmVzdWx0KTsKLX0KLQotVEVTVChQYXJzZU5hdHVy
YWxOdW1iZXJUZXN0LCBXb3Jrc0ZvclNob3J0ZXJJbnRlZ2VycykgewotICBzaG9ydCBzaG9ydF9y
ZXN1bHQgPSAwOwotICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCIxMjMi
KSwgJnNob3J0X3Jlc3VsdCkpOwotICBFWFBFQ1RfRVEoMTIzLCBzaG9ydF9yZXN1bHQpOwotCi0g
IHNpZ25lZCBjaGFyIGNoYXJfcmVzdWx0ID0gMDsKLSAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFs
TnVtYmVyKFN0cmluZygiMTIzIiksICZjaGFyX3Jlc3VsdCkpOwotICBFWFBFQ1RfRVEoMTIzLCBj
aGFyX3Jlc3VsdCk7Ci19Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi1URVNUKEVudmlyb25tZW50
VGVzdCwgSGFuZGxlRml0c0ludG9TaXplVCkgewotICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20p
OiBSZW1vdmUgdGhpcyB0ZXN0IGFmdGVyIHRoaXMgY29uZGl0aW9uIGlzIHZlcmlmaWVkCi0gIC8v
IGluIGEgc3RhdGljIGFzc2VydGlvbiBpbiBndGVzdC1kZWF0aC10ZXN0LmNjIGluIHRoZSBmdW5j
dGlvbgotICAvLyBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvci4KLSAgQVNTRVJUX1RSVUUoc2l6ZW9m
KEhBTkRMRSkgPD0gc2l6ZW9mKHNpemVfdCkpOwotfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5E
T1dTCi0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRC9BU1NFUlRfREVB
VEhfSUZfU1VQUE9SVEVEIHRyaWdnZXIKLS8vIGZhaWx1cmVzIHdoZW4gZGVhdGggdGVzdHMgYXJl
IGF2YWlsYWJsZSBvbiB0aGUgc3lzdGVtLgotVEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zRGVh
dGhUZXN0LCBFeHBlY3RzRGVhdGhXaGVuRGVhdGhUZXN0c0F2YWlsYWJsZSkgewotICBFWFBFQ1Rf
REVBVEhfSUZfU1VQUE9SVEVEKERpZUluc2lkZSgiQ29uZERlYXRoVGVzdEV4cGVjdE1hY3JvIiks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlYXRoIGluc2lkZSBDb25kRGVhdGhUZXN0
RXhwZWN0TWFjcm8iKTsKLSAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChEaWVJbnNpZGUoIkNv
bmREZWF0aFRlc3RBc3NlcnRNYWNybyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk
ZWF0aCBpbnNpZGUgQ29uZERlYXRoVGVzdEFzc2VydE1hY3JvIik7Ci0KLSAgLy8gRW1wdHkgc3Rh
dGVtZW50IHdpbGwgbm90IGNyYXNoLCB3aGljaCBtdXN0IHRyaWdnZXIgYSBmYWlsdXJlLgotICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKSwg
IiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKDss
ICIiKSwgIiIpOwotfQotCi0jZWxzZQotCi11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q2FwdHVy
ZVN0ZGVycjsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRDYXB0dXJlZFN0ZGVycjsKLXVz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmc7Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RF
QVRIX0lGX1NVUFBPUlRFRC9BU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEIGFyZSBzdGlsbAotLy8g
ZGVmaW5lZCBidXQgZG8gbm90IHRyaWdnZXIgZmFpbHVyZXMgd2hlbiBkZWF0aCB0ZXN0cyBhcmUg
bm90IGF2YWlsYWJsZSBvbgotLy8gdGhlIHN5c3RlbS4KLVRFU1QoQ29uZGl0aW9uYWxEZWF0aE1h
Y3Jvc1Rlc3QsIFdhcm5zV2hlbkRlYXRoVGVzdHNOb3RBdmFpbGFibGUpIHsKLSAgLy8gRW1wdHkg
c3RhdGVtZW50IHdpbGwgbm90IGNyYXNoLCBidXQgdGhhdCBzaG91bGQgbm90IHRyaWdnZXIgYSBm
YWlsdXJlCi0gIC8vIHdoZW4gZGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQuCi0gIENhcHR1
cmVTdGRlcnIoKTsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIik7Ci0gIFN0cmlu
ZyBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVycigpOwotICBBU1NFUlRfVFJVRShOVUxMICE9IHN0
cnN0cihvdXRwdXQuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlYXRo
IHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKSk7Ci0gIEFTU0VSVF9U
UlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLCAiOyIpKTsKLQotICAvLyBUaGUgc3Ry
ZWFtZWQgbWVzc2FnZSBzaG91bGQgbm90IGJlIHByaW50ZWQgYXMgdGhlcmUgaXMgbm8gdGVzdCBm
YWlsdXJlLgotICBDYXB0dXJlU3RkZXJyKCk7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQo
OywgIiIpIDw8ICJzdHJlYW1lZCBtZXNzYWdlIjsKLSAgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRl
cnIoKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCA9PSBzdHJzdHIob3V0cHV0LmNfc3RyKCksICJzdHJl
YW1lZCBtZXNzYWdlIikpOwotCi0gIENhcHR1cmVTdGRlcnIoKTsKLSAgQVNTRVJUX0RFQVRIX0lG
X1NVUFBPUlRFRCg7LCAiIik7ICAvLyBOT0xJTlQKLSAgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRl
cnIoKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCAhPSBzdHJzdHIob3V0cHV0LmNfc3RyKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJEZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCBv
biB0aGlzIHBsYXRmb3JtIikpOwotICBBU1NFUlRfVFJVRShOVUxMICE9IHN0cnN0cihvdXRwdXQu
Y19zdHIoKSwgIjsiKSk7Ci0KLSAgQ2FwdHVyZVN0ZGVycigpOwotICBBU1NFUlRfREVBVEhfSUZf
U1VQUE9SVEVEKDssICIiKSA8PCAic3RyZWFtZWQgbWVzc2FnZSI7ICAvLyBOT0xJTlQKLSAgb3V0
cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCA9PSBzdHJzdHIo
b3V0cHV0LmNfc3RyKCksICJzdHJlYW1lZCBtZXNzYWdlIikpOwotfQotCi12b2lkIEZ1bmNXaXRo
QXNzZXJ0KGludCogbikgewotICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHJldHVybjssICIi
KTsKLSAgKCpuKSsrOwotfQotCi0vLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JU
RUQgZG9lcyBub3QgcmV0dXJuIGZyb20gdGhlIGN1cnJlbnQKLS8vIGZ1bmN0aW9uIChhcyBBU1NF
UlRfREVBVEggZG9lcykgaWYgZGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQuCi1URVNUKENv
bmRpdGlvbmFsRGVhdGhNYWNyb3NUZXN0LCBBc3NlcnREZWF0RG9lc05vdFJldHVybmhJZlVuc3Vw
cG9ydGVkKSB7Ci0gIGludCBuID0gMDsKLSAgRnVuY1dpdGhBc3NlcnQoJm4pOwotICBFWFBFQ1Rf
RVEoMSwgbik7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLS8vIFRlc3Rz
IHRoYXQgdGhlIGRlYXRoIHRlc3QgbWFjcm9zIGV4cGFuZCB0byBjb2RlIHdoaWNoIG1heSBvciBt
YXkgbm90Ci0vLyBiZSBmb2xsb3dlZCBieSBvcGVyYXRvcjw8LCBhbmQgdGhhdCBpbiBlaXRoZXIg
Y2FzZSB0aGUgY29tcGxldGUgdGV4dAotLy8gY29tcHJpc2VzIG9ubHkgYSBzaW5nbGUgQysrIHN0
YXRlbWVudC4KLS8vCi0vLyBUaGUgc3ludGF4IHNob3VsZCB3b3JrIHdoZXRoZXIgZGVhdGggdGVz
dHMgYXJlIGF2YWlsYWJsZSBvciBub3QuCi1URVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NTeW50
YXhEZWF0aFRlc3QsIFNpbmdsZVN0YXRlbWVudCkgewotICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAg
ICAvLyBUaGlzIHdvdWxkIGZhaWwgaWYgZXhlY3V0ZWQ7IHRoaXMgaXMgYSBjb21waWxhdGlvbiB0
ZXN0IG9ubHkKLSAgICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHJldHVybiwgIiIpOwotCi0g
IGlmIChBbHdheXNUcnVlKCkpCi0gICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChfZXhpdCgx
KSwgIiIpOwotICBlbHNlCi0gICAgLy8gVGhpcyBlbXB0eSAiZWxzZSIgYnJhbmNoIGlzIG1lYW50
IHRvIGVuc3VyZSB0aGF0IEVYUEVDVF9ERUFUSAotICAgIC8vIGRvZXNuJ3QgZXhwYW5kIGludG8g
YW4gImlmIiBzdGF0ZW1lbnQgd2l0aG91dCBhbiAiZWxzZSIKLSAgICA7ICAvLyBOT0xJTlQKLQot
ICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAgICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHJldHVy
biwgIiIpIDw8ICJkaWQgbm90IGRpZSI7Ci0KLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgOyAg
Ly8gTk9MSU5UCi0gIGVsc2UKLSAgICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKF9leGl0KDEp
LCAiIikgPDwgMSA8PCAyIDw8IDM7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgY29uZGl0aW9uYWwgZGVh
dGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUgd2hpY2ggaW50ZXJhY3RzCi0vLyB3ZWxsIHdp
dGggc3dpdGNoIHN0YXRlbWVudHMuCi1URVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NTeW50YXhE
ZWF0aFRlc3QsIFN3aXRjaFN0YXRlbWVudCkgewotLy8gTWljcm9zb2Z0IGNvbXBpbGVyIHVzdWFs
bHkgY29tcGxhaW5zIGFib3V0IHN3aXRjaCBzdGF0ZW1lbnRzIHdpdGhvdXQKLS8vIGNhc2UgbGFi
ZWxzLiBXZSBzdXBwcmVzcyB0aGF0IHdhcm5pbmcgZm9yIHRoaXMgdGVzdC4KLSNpZmRlZiBfTVND
X1ZFUgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDA2
NSkKLSNlbmRpZiAgLy8gX01TQ19WRVIKLQotICBzd2l0Y2ggKDApCi0gICAgZGVmYXVsdDoKLSAg
ICAgIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQoMSksICIiKQotICAgICAgICAgIDw8
ICJleGl0IGluIGRlZmF1bHQgc3dpdGNoIGhhbmRsZXIiOwotCi0gIHN3aXRjaCAoMCkKLSAgICBj
YXNlIDA6Ci0gICAgICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKF9leGl0KDEpLCAiIikgPDwg
ImV4aXQgaW4gc3dpdGNoIGNhc2UiOwotCi0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgd2Fybmlu
Zyhwb3ApCi0jZW5kaWYgIC8vIF9NU0NfVkVSCi19Ci0KLS8vIFRlc3RzIHRoYXQgYSB0ZXN0IGNh
c2Ugd2hvc2UgbmFtZSBlbmRzIHdpdGggIkRlYXRoVGVzdCIgd29ya3MgZmluZQotLy8gb24gV2lu
ZG93cy4KLVRFU1QoTm90QURlYXRoVGVzdCwgVGVzdCkgewotICBTVUNDRUVEKCk7Ci19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3QuY2MK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyNTAyODI3NThkZmIzYzkzZjQ3ZjA5MWM1
MmEyZGJmOTJjYWNlZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1maWxlcGF0aF90ZXN0LmNj
CisrKyAvZGV2L251bGwKQEAgLTEsNjkwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29n
bGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3JzOiBrZWl0aC5yYXlAZ21haWwuY29t
IChLZWl0aCBSYXkpCi0vLwotLy8gR29vZ2xlIFRlc3QgZmlsZXBhdGggdXRpbGl0aWVzCi0vLwot
Ly8gVGhpcyBmaWxlIHRlc3RzIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkg
YnkKLS8vIEdvb2dsZSBUZXN0LiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBu
b3RpY2UuCi0vLwotLy8gVGhpcyBmaWxlIGlzICNpbmNsdWRlZCBmcm9tIGd0ZXN0X3VuaXR0ZXN0
LmNjLCB0byBhdm9pZCBjaGFuZ2luZwotLy8gYnVpbGQgb3IgbWFrZS1maWxlcyBmb3Igc29tZSBl
eGlzdGluZyBHb29nbGUgVGVzdCBjbGllbnRzLiBEbyBub3QKLS8vICNpbmNsdWRlIHRoaXMgZmls
ZSBhbnl3aGVyZSBlbHNlIQotCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBh
dGguaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlz
IHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRh
dGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGlu
Y2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlz
IHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3Qt
aW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRB
VElPTl8gMQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVT
VF9JTVBMRU1FTlRBVElPTl8KLQotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0jaW5jbHVk
ZSA8d2luZG93cy5oPiAgLy8gTk9MSU5UCi0jZWxpZiBHVEVTVF9PU19XSU5ET1dTCi0jaW5jbHVk
ZSA8ZGlyZWN0Lmg+ICAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVybmFsIHsKLW5hbWVzcGFj
ZSB7Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotLy8gVE9ETyh3YW5AZ29vZ2xlLmNv
bSk6IE1vdmUgdGhlc2UgdG8gdGhlIFBPU0lYIGFkYXB0ZXIgc2VjdGlvbiBpbgotLy8gZ3Rlc3Qt
cG9ydC5oLgotCi0vLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSB0aGUgcmVtb3ZlIEMgZnVuY3Rp
b24uCi1pbnQgcmVtb3ZlKGNvbnN0IGNoYXIqIHBhdGgpIHsKLSAgTFBDV1NUUiB3cGF0aCA9IFN0
cmluZzo6QW5zaVRvVXRmMTYocGF0aCk7Ci0gIGludCByZXQgPSBEZWxldGVGaWxlKHdwYXRoKSA/
IDAgOiAtMTsKLSAgZGVsZXRlIFtdIHdwYXRoOwotICByZXR1cm4gcmV0OwotfQotLy8gV2luZG93
cyBDRSBkb2Vzbid0IGhhdmUgdGhlIF9ybWRpciBDIGZ1bmN0aW9uLgotaW50IF9ybWRpcihjb25z
dCBjaGFyKiBwYXRoKSB7Ci0gIEZpbGVQYXRoIGZpbGVwYXRoKHBhdGgpOwotICBMUENXU1RSIHdw
YXRoID0gU3RyaW5nOjpBbnNpVG9VdGYxNigKLSAgICAgIGZpbGVwYXRoLlJlbW92ZVRyYWlsaW5n
UGF0aFNlcGFyYXRvcigpLmNfc3RyKCkpOwotICBpbnQgcmV0ID0gUmVtb3ZlRGlyZWN0b3J5KHdw
YXRoKSA/IDAgOiAtMTsKLSAgZGVsZXRlIFtdIHdwYXRoOwotICByZXR1cm4gcmV0OwotfQotCi0j
ZWxzZQotCi1URVNUKEdldEN1cnJlbnREaXJUZXN0LCBSZXR1cm5zQ3VycmVudERpcikgewotICBj
b25zdCBGaWxlUGF0aCBvcmlnaW5hbF9kaXIgPSBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpOwot
ICBFWFBFQ1RfRkFMU0Uob3JpZ2luYWxfZGlyLklzRW1wdHkoKSk7Ci0KLSAgcG9zaXg6OkNoRGly
KEdURVNUX1BBVEhfU0VQXyk7Ci0gIGNvbnN0IEZpbGVQYXRoIGN3ZCA9IEZpbGVQYXRoOjpHZXRD
dXJyZW50RGlyKCk7Ci0gIHBvc2l4OjpDaERpcihvcmlnaW5hbF9kaXIuY19zdHIoKSk7Ci0KLSNp
ZiBHVEVTVF9PU19XSU5ET1dTCi0gIC8vIFNraXBzIHRoZSAiOiIuCi0gIGNvbnN0IGNoYXIqIGNv
bnN0IGN3ZF93aXRob3V0X2RyaXZlID0gc3RyY2hyKGN3ZC5jX3N0cigpLCAnOicpOwotICBBU1NF
UlRfVFJVRShjd2Rfd2l0aG91dF9kcml2ZSAhPSBOVUxMKTsKLSAgRVhQRUNUX1NUUkVRKEdURVNU
X1BBVEhfU0VQXywgY3dkX3dpdGhvdXRfZHJpdmUgKyAxKTsKLSNlbHNlCi0gIEVYUEVDVF9TVFJF
UShHVEVTVF9QQVRIX1NFUF8sIGN3ZC5jX3N0cigpKTsKLSNlbmRpZgotfQotCi0jZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLVRFU1QoSXNFbXB0eVRlc3QsIFJldHVybnNUcnVl
Rm9yRW1wdHlQYXRoKSB7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIiKS5Jc0VtcHR5KCkpOwot
ICBFWFBFQ1RfVFJVRShGaWxlUGF0aChOVUxMKS5Jc0VtcHR5KCkpOwotfQotCi1URVNUKElzRW1w
dHlUZXN0LCBSZXR1cm5zRmFsc2VGb3JOb25FbXB0eVBhdGgpIHsKLSAgRVhQRUNUX0ZBTFNFKEZp
bGVQYXRoKCJhIikuSXNFbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIuIikuSXNF
bXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJhL2IiKS5Jc0VtcHR5KCkpOwotICBF
WFBFQ1RfRkFMU0UoRmlsZVBhdGgoImFcXGJcXCIpLklzRW1wdHkoKSk7Ci19Ci0KLS8vIFJlbW92
ZURpcmVjdG9yeU5hbWUgIiIgLT4gIiIKLVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFdo
ZW5FbXB0eU5hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCIiLCBGaWxlUGF0aCgiIikuUmVtb3ZlRGly
ZWN0b3J5TmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZmls
ZSIgLT4gImFmaWxlIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgQnV0Tm9EaXJlY3Rv
cnkpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAgICBGaWxlUGF0aCgiYWZpbGUiKS5S
ZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5h
bWUgIi9hZmlsZSIgLT4gImFmaWxlIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgUm9v
dEZpbGVTaG91bGRHaXZlRmlsZU5hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAg
ICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgp
LmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZGlyLyIgLT4gIiIKLVRF
U1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFdoZXJlVGhlcmVJc05vRmlsZU5hbWUpIHsKLSAg
RVhQRUNUX1NUUkVRKCIiLAotICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyku
UmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlO
YW1lICJhZGlyL2FmaWxlIiAtPiAiYWZpbGUiCi1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0
LCBTaG91bGRHaXZlRmlsZU5hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAgICBG
aWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5h
bWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiYWRpci9zdWJkaXIv
YWZpbGUiIC0+ICJhZmlsZSIKLVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEFs
c29HaXZlRmlsZU5hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAgICBGaWxlUGF0
aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUi
KQotICAgICAgLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0cigpKTsKLX0KLQotI2lmIEdURVNU
X0hBU19BTFRfUEFUSF9TRVBfCi0KLS8vIFRlc3RzIHRoYXQgUmVtb3ZlRGlyZWN0b3J5TmFtZSgp
IHdvcmtzIHdpdGggdGhlIGFsdGVybmF0ZSBzZXBhcmF0b3IKLS8vIG9uIFdpbmRvd3MuCi0KLS8v
IFJlbW92ZURpcmVjdG9yeU5hbWUoIi9hZmlsZSIpIC0+ICJhZmlsZSIKLVRFU1QoUmVtb3ZlRGly
ZWN0b3J5TmFtZVRlc3QsIFJvb3RGaWxlU2hvdWxkR2l2ZUZpbGVOYW1lRm9yQWx0ZXJuYXRlU2Vw
YXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWZpbGUiLAotICAgICAgICAgICAgICAgRmlsZVBh
dGgoIi9hZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVt
b3ZlRGlyZWN0b3J5TmFtZSgiYWRpci8iKSAtPiAiIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1l
VGVzdCwgV2hlcmVUaGVyZUlzTm9GaWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBF
WFBFQ1RfU1RSRVEoIiIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci8iKS5SZW1vdmVE
aXJlY3RvcnlOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5hbWUoImFk
aXIvYWZpbGUiKSAtPiAiYWZpbGUiCi1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91
bGRHaXZlRmlsZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCJh
ZmlsZSIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci9hZmlsZSIpLlJlbW92ZURpcmVj
dG9yeU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgiYWRpci9z
dWJkaXIvYWZpbGUiKSAtPiAiYWZpbGUiCi1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBT
aG91bGRBbHNvR2l2ZUZpbGVOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9T
VFJFUSgiYWZpbGUiLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvc3ViZGlyL2FmaWxl
IikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOwotfQotCi0jZW5kaWYKLQotLy8gUmVt
b3ZlRmlsZU5hbWUgIiIgLT4gIi4vIgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEVtcHR5TmFt
ZSkgewotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0gIC8vIE9uIFdpbmRvd3MgQ0UsIHdl
IHVzZSB0aGUgcm9vdCBhcyB0aGUgY3VycmVudCBkaXJlY3RvcnkuCi0gIEVYUEVDVF9TVFJFUShH
VEVTVF9QQVRIX1NFUF8sCi0gICAgICBGaWxlUGF0aCgiIikuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0
cigpKTsKLSNlbHNlCi0gIEVYUEVDVF9TVFJFUSgiLiIgR1RFU1RfUEFUSF9TRVBfLAotICAgICAg
RmlsZVBhdGgoIiIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci0jZW5kaWYKLX0KLQotLy8g
UmVtb3ZlRmlsZU5hbWUgImFkaXIvIiAtPiAiYWRpci8iCi1URVNUKFJlbW92ZUZpbGVOYW1lVGVz
dCwgQnV0Tm9GaWxlKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAot
ICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXykuUmVtb3ZlRmlsZU5hbWUoKS5j
X3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvYWZpbGUiIC0+ICJhZGlyLyIK
LVRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc0Rpck5hbWUpIHsKLSAgRVhQRUNUX1NUUkVR
KCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFU
SF9TRVBfICJhZmlsZSIpCi0gICAgICAuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKLX0KLQot
Ly8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvc3ViZGlyL2FmaWxlIiAtPiAiYWRpci9zdWJkaXIvIgot
VEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzRGlyQW5kU3ViRGlyTmFtZSkgewotICBFWFBF
Q1RfU1RSRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8s
Ci0gICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BB
VEhfU0VQXyAiYWZpbGUiKQotICAgICAgLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci19Ci0K
LS8vIFJlbW92ZUZpbGVOYW1lICIvYWZpbGUiIC0+ICIvIgotVEVTVChSZW1vdmVGaWxlTmFtZVRl
c3QsIEdpdmVzUm9vdERpcikgewotICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLAotICAg
ICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuY19z
dHIoKSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXwotCi0vLyBUZXN0cyB0aGF0
IFJlbW92ZUZpbGVOYW1lKCkgd29ya3Mgd2l0aCB0aGUgYWx0ZXJuYXRlIHNlcGFyYXRvciBvbgot
Ly8gV2luZG93cy4KLQotLy8gUmVtb3ZlRmlsZU5hbWUoImFkaXIvIikgLT4gImFkaXIvIgotVEVT
VChSZW1vdmVGaWxlTmFtZVRlc3QsIEJ1dE5vRmlsZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewot
ICBFWFBFQ1RfU1RSRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZp
bGVQYXRoKCJhZGlyLyIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92
ZUZpbGVOYW1lKCJhZGlyL2FmaWxlIikgLT4gImFkaXIvIgotVEVTVChSZW1vdmVGaWxlTmFtZVRl
c3QsIEdpdmVzRGlyTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEo
ImFkaXIiIEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL2Fm
aWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRmlsZU5hbWUo
ImFkaXIvc3ViZGlyL2FmaWxlIikgLT4gImFkaXIvc3ViZGlyLyIKLVRFU1QoUmVtb3ZlRmlsZU5h
bWVUZXN0LCBHaXZlc0RpckFuZFN1YkRpck5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAg
RVhQRUNUX1NUUkVRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9T
RVBfLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvc3ViZGlyL2FmaWxlIikuUmVtb3Zl
RmlsZU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRmlsZU5hbWUoIi9hZmlsZSIpIC0+
ICJcIgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzUm9vdERpckZvckFsdGVybmF0ZVNl
cGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLAotICAgICAgICAgICAg
ICAgRmlsZVBhdGgoIi9hZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLSNl
bmRpZgotCi1URVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlV2hlbk51bWJlcklzWmVybykg
ewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCJm
b28iKSwgRmlsZVBhdGgoImJhciIpLAotICAgICAgMCwgInhtbCIpOwotICBFWFBFQ1RfU1RSRVEo
ImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1U
RVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlRmlsZU5hbWVOdW1iZXJHdFplcm8pIHsKLSAg
RmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiks
IEZpbGVQYXRoKCJiYXIiKSwKLSAgICAgIDEyLCAieG1sIik7Ci0gIEVYUEVDVF9TVFJFUSgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8gImJhcl8xMi54bWwiLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRF
U1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVGaWxlTmFtZVdpdGhTbGFzaE51bWJlcklzWmVy
bykgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRo
KCJmb28iIEdURVNUX1BBVEhfU0VQXyksCi0gICAgICBGaWxlUGF0aCgiYmFyIiksIDAsICJ4bWwi
KTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVh
bC5jX3N0cigpKTsKLX0KLQotVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZUZpbGVOYW1l
V2l0aFNsYXNoTnVtYmVyR3RaZXJvKSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpN
YWtlRmlsZU5hbWUoRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKSwKLSAgICAgIEZpbGVQ
YXRoKCJiYXIiKSwgMTIsICJ4bWwiKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhf
U0VQXyAiYmFyXzEyLnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChNYWtlRmlsZU5h
bWVUZXN0LCBHZW5lcmF0ZVdoZW5OdW1iZXJJc1plcm9BbmREaXJJc0VtcHR5KSB7Ci0gIEZpbGVQ
YXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoIiIpLCBGaWxlUGF0
aCgiYmFyIiksCi0gICAgICAwLCAieG1sIik7Ci0gIEVYUEVDVF9TVFJFUSgiYmFyLnhtbCIsIGFj
dHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZVdoZW5O
dW1iZXJJc05vdFplcm9BbmREaXJJc0VtcHR5KSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQ
YXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoIiIpLCBGaWxlUGF0aCgiYmFyIiksCi0gICAgICAx
NCwgInhtbCIpOwotICBFWFBFQ1RfU1RSRVEoImJhcl8xNC54bWwiLCBhY3R1YWwuY19zdHIoKSk7
Ci19Ci0KLVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBXb3Jrc1doZW5EaXJEb2VzTm90RW5kV2l0aFBh
dGhTZXApIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQ
YXRoKCJmb28iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZp
bGVQYXRoKCJiYXIueG1sIikpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBf
ICJiYXIueG1sIiwgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNUKENvbmNhdFBhdGhzVGVzdCwg
V29ya3NXaGVuUGF0aDFFbmRzV2l0aFBhdGhTZXApIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmls
ZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiYmFyLnhtbCIp
KTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVh
bC5jX3N0cigpKTsKLX0KLQotVEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgxQmVpbmdFbXB0eSkg
ewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoIiIp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJh
ci54bWwiKSk7Ci0gIEVYUEVDVF9TVFJFUSgiYmFyLnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKLX0K
LQotVEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgyQmVpbmdFbXB0eSkgewotICBGaWxlUGF0aCBh
Y3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoIiIpKTsKLSAgRVhQRUNU
X1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXywgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNU
KENvbmNhdFBhdGhzVGVzdCwgQm90aFBhdGhCZWluZ0VtcHR5KSB7Ci0gIEZpbGVQYXRoIGFjdHVh
bCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiIiksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiIikpOwotICBFWFBFQ1RfU1RSRVEo
IiIsIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgxQ29u
dGFpbnNQYXRoU2VwKSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRo
cyhGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvb2Jhci54bWwiKSk7Ci0gIEVY
UEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBfICJm
b29iYXIueG1sIiwKLSAgICAgICAgICAgICAgIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChD
b25jYXRQYXRoc1Rlc3QsIFBhdGgyQ29udGFpbnNQYXRoU2VwKSB7Ci0gIEZpbGVQYXRoIGFjdHVh
bCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocygKLSAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BB
VEhfU0VQXyksCi0gICAgICBGaWxlUGF0aCgiYmFyIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwi
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1RfUEFU
SF9TRVBfICJiYXIueG1sIiwKLSAgICAgICAgICAgICAgIGFjdHVhbC5jX3N0cigpKTsKLX0KLQot
VEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgyRW5kc1dpdGhQYXRoU2VwKSB7Ci0gIEZpbGVQYXRo
IGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiYmFyIiBHVEVTVF9Q
QVRIX1NFUF8pKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBH
VEVTVF9QQVRIX1NFUF8sIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlVHJhaWxpbmdQ
YXRoU2VwYXJhdG9yICIiIC0+ICIiCi1URVNUKFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvclRl
c3QsIEVtcHR5U3RyaW5nKSB7Ci0gIEVYUEVDVF9TVFJFUSgiIiwKLSAgICAgIEZpbGVQYXRoKCIi
KS5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3Zl
VHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28iIC0+ICJmb28iCi1URVNUKFJlbW92ZVRyYWlsaW5n
UGF0aFNlcGFyYXRvclRlc3QsIEZpbGVOb1NsYXNoU3RyaW5nKSB7Ci0gIEVYUEVDVF9TVFJFUSgi
Zm9vIiwKLSAgICAgIEZpbGVQYXRoKCJmb28iKS5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3Io
KS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28vIiAt
PiAiZm9vIgotVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBTaG91bGRSZW1v
dmVUcmFpbGluZ1NlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoCi0gICAgICAiZm9vIiwKLSAg
ICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXykuUmVtb3ZlVHJhaWxpbmdQYXRoU2Vw
YXJhdG9yKCkuY19zdHIoKSk7Ci0jaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KLSAgRVhQRUNU
X1NUUkVRKCJmb28iLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvby8iKS5SZW1vdmVUcmFp
bGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKLSNlbmRpZgotfQotCi0vLyBSZW1vdmVUcmFp
bGluZ1BhdGhTZXBhcmF0b3IgImZvby9iYXIvIiAtPiAiZm9vL2Jhci8iCi1URVNUKFJlbW92ZVRy
YWlsaW5nUGF0aFNlcGFyYXRvclRlc3QsIFNob3VsZFJlbW92ZUxhc3RTZXBhcmF0b3IpIHsKLSAg
RVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICAgICAgICAgICAg
IEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBHVEVTVF9QQVRIX1NFUF8pCi0g
ICAgICAgICAgICAgICAuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7Ci19
Ci0KLS8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiZm9vL2JhciIgLT4gImZvby9iYXIi
Ci1URVNUKFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvclRlc3QsIFNob3VsZFJldHVyblVubW9k
aWZpZWQpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAg
ICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIikKLSAgICAg
ICAgICAgICAgIC5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKLX0KLQot
VEVTVChEaXJlY3RvcnlUZXN0LCBSb290RGlyZWN0b3J5RXhpc3RzKSB7Ci0jaWYgR1RFU1RfT1Nf
V0lORE9XUyAgLy8gV2UgYXJlIG9uIFdpbmRvd3MuCi0gIGNoYXIgY3VycmVudF9kcml2ZVtfTUFY
X1BBVEhdOyAgLy8gTk9MSU5UCi0gIGN1cnJlbnRfZHJpdmVbMF0gPSBzdGF0aWNfY2FzdDxjaGFy
PihfZ2V0ZHJpdmUoKSArICdBJyAtIDEpOwotICBjdXJyZW50X2RyaXZlWzFdID0gJzonOwotICBj
dXJyZW50X2RyaXZlWzJdID0gJ1xcJzsKLSAgY3VycmVudF9kcml2ZVszXSA9ICdcMCc7Ci0gIEVY
UEVDVF9UUlVFKEZpbGVQYXRoKGN1cnJlbnRfZHJpdmUpLkRpcmVjdG9yeUV4aXN0cygpKTsKLSNl
bHNlCi0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIvIikuRGlyZWN0b3J5RXhpc3RzKCkpOwotI2Vu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi19Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi1URVNU
KERpcmVjdG9yeVRlc3QsIFJvb3RPZldyb25nRHJpdmVEb2VzTm90RXhpc3RzKSB7Ci0gIGNvbnN0
IGludCBzYXZlZF9kcml2ZV8gPSBfZ2V0ZHJpdmUoKTsKLSAgLy8gRmluZCBhIGRyaXZlIHRoYXQg
ZG9lc24ndCBleGlzdC4gU3RhcnQgd2l0aCAnWicgdG8gYXZvaWQgY29tbW9uIG9uZXMuCi0gIGZv
ciAoY2hhciBkcml2ZSA9ICdaJzsgZHJpdmUgPj0gJ0EnOyBkcml2ZS0tKQotICAgIGlmIChfY2hk
cml2ZShkcml2ZSAtICdBJyArIDEpID09IC0xKSB7Ci0gICAgICBjaGFyIG5vbl9kcml2ZVtfTUFY
X1BBVEhdOyAgLy8gTk9MSU5UCi0gICAgICBub25fZHJpdmVbMF0gPSBkcml2ZTsKLSAgICAgIG5v
bl9kcml2ZVsxXSA9ICc6JzsKLSAgICAgIG5vbl9kcml2ZVsyXSA9ICdcXCc7Ci0gICAgICBub25f
ZHJpdmVbM10gPSAnXDAnOwotICAgICAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKG5vbl9kcml2ZSku
RGlyZWN0b3J5RXhpc3RzKCkpOwotICAgICAgYnJlYWs7Ci0gICAgfQotICBfY2hkcml2ZShzYXZl
ZF9kcml2ZV8pOwotfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSNpZiAhR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKLS8vIFdpbmRvd3MgQ0UgX2RvZXNfIGNvbnNpZGVyIGFuIGVtcHR5
IGRpcmVjdG9yeSB0byBleGlzdC4KLVRFU1QoRGlyZWN0b3J5VGVzdCwgRW1wdHlQYXRoRGlyZWN0
b3J5RG9lc05vdEV4aXN0KSB7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiIikuRGlyZWN0b3J5
RXhpc3RzKCkpOwotfQotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLQotVEVT
VChEaXJlY3RvcnlUZXN0LCBDdXJyZW50RGlyZWN0b3J5RXhpc3RzKSB7Ci0jaWYgR1RFU1RfT1Nf
V0lORE9XUyAgLy8gV2UgYXJlIG9uIFdpbmRvd3MuCi0jaWZuZGVmIF9XSU4zMl9DRSAgLy8gV2lu
ZG93cyBDRSBkb2Vzbid0IGhhdmUgYSBjdXJyZW50IGRpcmVjdG9yeS4KLSAgRVhQRUNUX1RSVUUo
RmlsZVBhdGgoIi4iKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRo
KCIuXFwiKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0jZW5kaWYgIC8vIF9XSU4zMl9DRQotI2Vsc2UK
LSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi4iKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0gIEVYUEVD
VF9UUlVFKEZpbGVQYXRoKCIuLyIpLkRpcmVjdG9yeUV4aXN0cygpKTsKLSNlbmRpZiAgLy8gR1RF
U1RfT1NfV0lORE9XUwotfQotCi1URVNUKE5vcm1hbGl6ZVRlc3QsIE51bGxTdHJpbmdzRXF1YWxF
bXB0eURpcmVjdG9yeSkgewotICBFWFBFQ1RfU1RSRVEoIiIsIEZpbGVQYXRoKE5VTEwpLmNfc3Ry
KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIEZpbGVQYXRoKFN0cmluZyhOVUxMKSkuY19zdHIoKSk7
Ci19Ci0KLS8vICJmb28vYmFyIiA9PSBmb28vL2JhciIgPT0gImZvby8vL2JhciIKLVRFU1QoTm9y
bWFsaXplVGVzdCwgTXVsdGlwbGVDb25zZWN1dGl2ZVNlcGFwYXJhdG9yc0luTWlkc3RyaW5nKSB7
Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAgICAgICAg
ICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIpLmNfc3RyKCkpOwotICBF
WFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgICAgICAgICAgICAg
RmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuY19z
dHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAg
ICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBf
Ci0gICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8gImJhciIpLmNfc3RyKCkp
OwotfQotCi0vLyAiL2JhciIgPT0gLy9iYXIiID09ICIvLy9iYXIiCi1URVNUKE5vcm1hbGl6ZVRl
c3QsIE11bHRpcGxlQ29uc2VjdXRpdmVTZXBhcGFyYXRvcnNBdFN0cmluZ1N0YXJ0KSB7Ci0gIEVY
UEVDVF9TVFJFUShHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAgRmlsZVBhdGgoR1RFU1RfUEFU
SF9TRVBfICJiYXIiKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKEdURVNUX1BBVEhfU0VQXyAi
YmFyIiwKLSAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfICJiYXIi
KS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICBG
aWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAi
YmFyIikuY19zdHIoKSk7Ci19Ci0KLS8vICJmb28vIiA9PSBmb28vLyIgPT0gImZvby8vLyIKLVRF
U1QoTm9ybWFsaXplVGVzdCwgTXVsdGlwbGVDb25zZWN1dGl2ZVNlcGFwYXJhdG9yc0F0U3RyaW5n
RW5kKSB7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgRmlsZVBh
dGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28i
IEdURVNUX1BBVEhfU0VQXywKLSAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RF
U1RfUEFUSF9TRVBfKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhf
U0VQXywKLSAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBf
IEdURVNUX1BBVEhfU0VQXykuY19zdHIoKSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfQUxUX1BBVEhf
U0VQXwotCi0vLyBUZXN0cyB0aGF0IHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5n
IGFyZSBub3JtYWxpemVkCi0vLyByZWdhcmRsZXNzIG9mIHRoZWlyIGNvbWJpbmF0aW9uIChlLmcu
ICJmb29cIiA9PSJmb28vXCIgPT0KLS8vICJmb29cXC8iKS4KLVRFU1QoTm9ybWFsaXplVGVzdCwg
TWl4QWx0ZXJuYXRlU2VwYXJhdG9yQXRTdHJpbmdFbmQpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28i
IEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28vIikuY19zdHIo
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICAgICAgICAg
ICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gIi8iKS5jX3N0cigpKTsKLSAgRVhQRUNU
X1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJm
b28vLyIgR1RFU1RfUEFUSF9TRVBfKS5jX3N0cigpKTsKLX0KLQotI2VuZGlmCi0KLVRFU1QoQXNz
aWdubWVudE9wZXJhdG9yVGVzdCwgRGVmYXVsdEFzc2lnbmVkVG9Ob25EZWZhdWx0KSB7Ci0gIEZp
bGVQYXRoIGRlZmF1bHRfcGF0aDsKLSAgRmlsZVBhdGggbm9uX2RlZmF1bHRfcGF0aCgicGF0aCIp
OwotICBub25fZGVmYXVsdF9wYXRoID0gZGVmYXVsdF9wYXRoOwotICBFWFBFQ1RfU1RSRVEoIiIs
IG5vbl9kZWZhdWx0X3BhdGguY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgZGVmYXVsdF9w
YXRoLmNfc3RyKCkpOyAgLy8gUkhTIHZhciBpcyB1bmNoYW5nZWQuCi19Ci0KLVRFU1QoQXNzaWdu
bWVudE9wZXJhdG9yVGVzdCwgTm9uRGVmYXVsdEFzc2lnbmVkVG9EZWZhdWx0KSB7Ci0gIEZpbGVQ
YXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgiKTsKLSAgRmlsZVBhdGggZGVmYXVsdF9wYXRoOwot
ICBkZWZhdWx0X3BhdGggPSBub25fZGVmYXVsdF9wYXRoOwotICBFWFBFQ1RfU1RSRVEoInBhdGgi
LCBkZWZhdWx0X3BhdGguY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgicGF0aCIsIG5vbl9kZWZh
dWx0X3BhdGguY19zdHIoKSk7ICAvLyBSSFMgdmFyIGlzIHVuY2hhbmdlZC4KLX0KLQotVEVTVChB
c3NpZ25tZW50T3BlcmF0b3JUZXN0LCBDb25zdEFzc2lnbmVkVG9Ob25Db25zdCkgewotICBjb25z
dCBGaWxlUGF0aCBjb25zdF9kZWZhdWx0X3BhdGgoImNvbnN0X3BhdGgiKTsKLSAgRmlsZVBhdGgg
bm9uX2RlZmF1bHRfcGF0aCgicGF0aCIpOwotICBub25fZGVmYXVsdF9wYXRoID0gY29uc3RfZGVm
YXVsdF9wYXRoOwotICBFWFBFQ1RfU1RSRVEoImNvbnN0X3BhdGgiLCBub25fZGVmYXVsdF9wYXRo
LmNfc3RyKCkpOwotfQotCi1jbGFzcyBEaXJlY3RvcnlDcmVhdGlvblRlc3QgOiBwdWJsaWMgVGVz
dCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgdGVzdGRhdGFf
cGF0aF8uU2V0KEZpbGVQYXRoKFN0cmluZzo6Rm9ybWF0KCIlcyVzJXMiLAotICAgICAgICBUZW1w
RGlyKCkuY19zdHIoKSwgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuY19zdHIoKSwKLSAgICAg
ICAgIl9kaXJlY3RvcnlfY3JlYXRpb24iIEdURVNUX1BBVEhfU0VQXyAidGVzdCIgR1RFU1RfUEFU
SF9TRVBfKSkpOwotICAgIHRlc3RkYXRhX2ZpbGVfLlNldCh0ZXN0ZGF0YV9wYXRoXy5SZW1vdmVU
cmFpbGluZ1BhdGhTZXBhcmF0b3IoKSk7Ci0KLSAgICB1bmlxdWVfZmlsZTBfLlNldChGaWxlUGF0
aDo6TWFrZUZpbGVOYW1lKHRlc3RkYXRhX3BhdGhfLCBGaWxlUGF0aCgidW5pcXVlIiksCi0gICAg
ICAgIDAsICJ0eHQiKSk7Ci0gICAgdW5pcXVlX2ZpbGUxXy5TZXQoRmlsZVBhdGg6Ok1ha2VGaWxl
TmFtZSh0ZXN0ZGF0YV9wYXRoXywgRmlsZVBhdGgoInVuaXF1ZSIpLAotICAgICAgICAxLCAidHh0
IikpOwotCi0gICAgcmVtb3ZlKHRlc3RkYXRhX2ZpbGVfLmNfc3RyKCkpOwotICAgIHJlbW92ZSh1
bmlxdWVfZmlsZTBfLmNfc3RyKCkpOwotICAgIHJlbW92ZSh1bmlxdWVfZmlsZTFfLmNfc3RyKCkp
OwotICAgIHBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKLSAgfQotCi0gIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICByZW1vdmUodGVzdGRhdGFfZmlsZV8uY19zdHIo
KSk7Ci0gICAgcmVtb3ZlKHVuaXF1ZV9maWxlMF8uY19zdHIoKSk7Ci0gICAgcmVtb3ZlKHVuaXF1
ZV9maWxlMV8uY19zdHIoKSk7Ci0gICAgcG9zaXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhfLmNfc3Ry
KCkpOwotICB9Ci0KLSAgU3RyaW5nIFRlbXBEaXIoKSBjb25zdCB7Ci0jaWYgR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUKLSAgICByZXR1cm4gU3RyaW5nKCJcXHRlbXBcXCIpOwotI2VsaWYgR1RFU1Rf
T1NfV0lORE9XUwotICAgIGNvbnN0IGNoYXIqIHRlbXBfZGlyID0gcG9zaXg6OkdldEVudigiVEVN
UCIpOwotICAgIGlmICh0ZW1wX2RpciA9PSBOVUxMIHx8IHRlbXBfZGlyWzBdID09ICdcMCcpCi0g
ICAgICByZXR1cm4gU3RyaW5nKCJcXHRlbXBcXCIpOwotICAgIGVsc2UgaWYgKFN0cmluZyh0ZW1w
X2RpcikuRW5kc1dpdGgoIlxcIikpCi0gICAgICByZXR1cm4gU3RyaW5nKHRlbXBfZGlyKTsKLSAg
ICBlbHNlCi0gICAgICByZXR1cm4gU3RyaW5nOjpGb3JtYXQoIiVzXFwiLCB0ZW1wX2Rpcik7Ci0j
ZWxzZQotICAgIHJldHVybiBTdHJpbmcoIi90bXAvIik7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCi0gIH0KLQotICB2b2lkIENyZWF0ZVRleHRGaWxlKGNvbnN0IGNoYXIqIGZp
bGVuYW1lKSB7Ci0gICAgRklMRSogZiA9IHBvc2l4OjpGT3BlbihmaWxlbmFtZSwgInciKTsKLSAg
ICBmcHJpbnRmKGYsICJ0ZXh0XG4iKTsKLSAgICBmY2xvc2UoZik7Ci0gIH0KLQotICAvLyBTdHJp
bmdzIHJlcHJlc2VudGluZyBhIGRpcmVjdG9yeSBhbmQgYSBmaWxlLCB3aXRoIGlkZW50aWNhbCBw
YXRocwotICAvLyBleGNlcHQgZm9yIHRoZSB0cmFpbGluZyBzZXBhcmF0b3IgY2hhcmFjdGVyIHRo
YXQgZGlzdGlucXVpc2hlcwotICAvLyBhIGRpcmVjdG9yeSBuYW1lZCAndGVzdCcgZnJvbSBhIGZp
bGUgbmFtZWQgJ3Rlc3QnLiBFeGFtcGxlIG5hbWVzOgotICBGaWxlUGF0aCB0ZXN0ZGF0YV9wYXRo
XzsgIC8vICIvdG1wL2RpcmVjdG9yeV9jcmVhdGlvbi90ZXN0LyIKLSAgRmlsZVBhdGggdGVzdGRh
dGFfZmlsZV87ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRpb24vdGVzdCIKLSAgRmlsZVBhdGgg
dW5pcXVlX2ZpbGUwXzsgIC8vICIvdG1wL2RpcmVjdG9yeV9jcmVhdGlvbi90ZXN0L3VuaXF1ZS50
eHQiCi0gIEZpbGVQYXRoIHVuaXF1ZV9maWxlMV87ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRp
b24vdGVzdC91bmlxdWVfMS50eHQiCi19OwotCi1URVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25UZXN0
LCBDcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KSB7Ci0gIEVYUEVDVF9GQUxTRSh0ZXN0ZGF0
YV9wYXRoXy5EaXJlY3RvcnlFeGlzdHMoKSkgPDwgdGVzdGRhdGFfcGF0aF8uY19zdHIoKTsKLSAg
RVhQRUNUX1RSVUUodGVzdGRhdGFfcGF0aF8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgp
KTsKLSAgRVhQRUNUX1RSVUUodGVzdGRhdGFfcGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkpOwotfQot
Ci1URVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0ZvckFscmVh
ZHlFeGlzdGluZ1BhdGgpIHsKLSAgRVhQRUNUX0ZBTFNFKHRlc3RkYXRhX3BhdGhfLkRpcmVjdG9y
eUV4aXN0cygpKSA8PCB0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpOwotICBFWFBFQ1RfVFJVRSh0ZXN0
ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOwotICAvLyBDYWxsICdj
cmVhdGUnIGFnYWluLi4uIHNob3VsZCBzdGlsbCBzdWNjZWVkLgotICBFWFBFQ1RfVFJVRSh0ZXN0
ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOwotfQotCi1URVNUX0Yo
RGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0FuZFVuaXF1ZUZpbGVuYW1l
KSB7Ci0gIEZpbGVQYXRoIGZpbGVfcGF0aChGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFt
ZSh0ZXN0ZGF0YV9wYXRoXywKLSAgICAgIEZpbGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIpKTsKLSAg
RVhQRUNUX1NUUkVRKHVuaXF1ZV9maWxlMF8uY19zdHIoKSwgZmlsZV9wYXRoLmNfc3RyKCkpOwot
ICBFWFBFQ1RfRkFMU0UoZmlsZV9wYXRoLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsgIC8vIGZp
bGUgbm90IHRoZXJlCi0KLSAgdGVzdGRhdGFfcGF0aF8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNp
dmVseSgpOwotICBFWFBFQ1RfRkFMU0UoZmlsZV9wYXRoLkZpbGVPckRpcmVjdG9yeUV4aXN0cygp
KTsgIC8vIGZpbGUgc3RpbGwgbm90IHRoZXJlCi0gIENyZWF0ZVRleHRGaWxlKGZpbGVfcGF0aC5j
X3N0cigpKTsKLSAgRVhQRUNUX1RSVUUoZmlsZV9wYXRoLkZpbGVPckRpcmVjdG9yeUV4aXN0cygp
KTsKLQotICBGaWxlUGF0aCBmaWxlX3BhdGgyKEZpbGVQYXRoOjpHZW5lcmF0ZVVuaXF1ZUZpbGVO
YW1lKHRlc3RkYXRhX3BhdGhfLAotICAgICAgRmlsZVBhdGgoInVuaXF1ZSIpLCAidHh0IikpOwot
ICBFWFBFQ1RfU1RSRVEodW5pcXVlX2ZpbGUxXy5jX3N0cigpLCBmaWxlX3BhdGgyLmNfc3RyKCkp
OwotICBFWFBFQ1RfRkFMU0UoZmlsZV9wYXRoMi5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAv
LyBmaWxlIG5vdCB0aGVyZQotICBDcmVhdGVUZXh0RmlsZShmaWxlX3BhdGgyLmNfc3RyKCkpOwot
ICBFWFBFQ1RfVFJVRShmaWxlX3BhdGgyLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsKLX0KLQot
VEVTVF9GKERpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlRGlyZWN0b3JpZXNGYWlsKSB7Ci0g
IC8vIGZvcmNlIGEgZmFpbHVyZSBieSBwdXR0aW5nIGEgZmlsZSB3aGVyZSB3ZSB3aWxsIHRyeSB0
byBjcmVhdGUgYSBkaXJlY3RvcnkuCi0gIENyZWF0ZVRleHRGaWxlKHRlc3RkYXRhX2ZpbGVfLmNf
c3RyKCkpOwotICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9maWxlXy5GaWxlT3JEaXJlY3RvcnlFeGlz
dHMoKSk7Ci0gIEVYUEVDVF9GQUxTRSh0ZXN0ZGF0YV9maWxlXy5EaXJlY3RvcnlFeGlzdHMoKSk7
Ci0gIEVYUEVDVF9GQUxTRSh0ZXN0ZGF0YV9maWxlXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2
ZWx5KCkpOwotfQotCi1URVNUKE5vRGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVOb0RpcmVj
dG9yaWVzRm9yRGVmYXVsdFhtbEZpbGUpIHsKLSAgY29uc3QgRmlsZVBhdGggdGVzdF9kZXRhaWxf
eG1sKCJ0ZXN0X2RldGFpbC54bWwiKTsKLSAgRVhQRUNUX0ZBTFNFKHRlc3RfZGV0YWlsX3htbC5D
cmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwg
RGVmYXVsdENvbnN0cnVjdG9yKSB7Ci0gIEZpbGVQYXRoIGZwOwotICBFWFBFQ1RfU1RSRVEoIiIs
IGZwLmNfc3RyKCkpOwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgQ2hhckFuZENvcHlDb25zdHJ1
Y3RvcnMpIHsKLSAgY29uc3QgRmlsZVBhdGggZnAoInNwaWN5Iik7Ci0gIEVYUEVDVF9TVFJFUSgi
c3BpY3kiLCBmcC5jX3N0cigpKTsKLQotICBjb25zdCBGaWxlUGF0aCBmcF9jb3B5KGZwKTsKLSAg
RVhQRUNUX1NUUkVRKCJzcGljeSIsIGZwX2NvcHkuY19zdHIoKSk7Ci19Ci0KLVRFU1QoRmlsZVBh
dGhUZXN0LCBTdHJpbmdDb25zdHJ1Y3RvcikgewotICBjb25zdCBGaWxlUGF0aCBmcChTdHJpbmco
ImNpZGVyIikpOwotICBFWFBFQ1RfU1RSRVEoImNpZGVyIiwgZnAuY19zdHIoKSk7Ci19Ci0KLVRF
U1QoRmlsZVBhdGhUZXN0LCBTZXQpIHsKLSAgY29uc3QgRmlsZVBhdGggYXBwbGUoImFwcGxlIik7
Ci0gIEZpbGVQYXRoIG1hYygibWFjIik7Ci0gIG1hYy5TZXQoYXBwbGUpOyAgLy8gSW1wbGVtZW50
IFNldCgpIHNpbmNlIG92ZXJsb2FkaW5nIG9wZXJhdG9yPSBpcyBmb3JiaWRkZW4uCi0gIEVYUEVD
VF9TVFJFUSgiYXBwbGUiLCBtYWMuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiYXBwbGUiLCBh
cHBsZS5jX3N0cigpKTsKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIFRvU3RyaW5nKSB7Ci0gIGNv
bnN0IEZpbGVQYXRoIGZpbGUoImRyaW5rIik7Ci0gIFN0cmluZyBzdHIoZmlsZS5Ub1N0cmluZygp
KTsKLSAgRVhQRUNUX1NUUkVRKCJkcmluayIsIHN0ci5jX3N0cigpKTsKLX0KLQotVEVTVChGaWxl
UGF0aFRlc3QsIFJlbW92ZUV4dGVuc2lvbikgewotICBFWFBFQ1RfU1RSRVEoImFwcCIsIEZpbGVQ
YXRoKCJhcHAuZXhlIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5jX3N0cigpKTsKLSAgRVhQRUNU
X1NUUkVRKCJBUFAiLCBGaWxlUGF0aCgiQVBQLkVYRSIpLlJlbW92ZUV4dGVuc2lvbigiZXhlIiku
Y19zdHIoKSk7Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0LCBSZW1vdmVFeHRlbnNpb25XaGVuVGhl
cmVJc05vRXh0ZW5zaW9uKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYXBwIiwgRmlsZVBhdGgoImFwcCIp
LlJlbW92ZUV4dGVuc2lvbigiZXhlIikuY19zdHIoKSk7Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0
LCBJc0RpcmVjdG9yeSkgewotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImNvbGEiKS5Jc0RpcmVj
dG9yeSgpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImtvYWxhIiBHVEVTVF9QQVRIX1NFUF8p
LklzRGlyZWN0b3J5KCkpOwotI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCi0gIEVYUEVDVF9U
UlVFKEZpbGVQYXRoKCJrb2FsYS8iKS5Jc0RpcmVjdG9yeSgpKTsKLSNlbmRpZgotfQotCi1URVNU
KEZpbGVQYXRoVGVzdCwgSXNBYnNvbHV0ZVBhdGgpIHsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRo
KCJpcyIgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIpLklzQWJzb2x1dGVQYXRoKCkpOwotICBF
WFBFQ1RfRkFMU0UoRmlsZVBhdGgoIiIpLklzQWJzb2x1dGVQYXRoKCkpOwotI2lmIEdURVNUX09T
X1dJTkRPV1MKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImM6XFwiIEdURVNUX1BBVEhfU0VQXyAi
aXNfbm90IgotICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8gInJlbGF0aXZl
IikuSXNBYnNvbHV0ZVBhdGgoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYzpmb28iIEdU
RVNUX1BBVEhfU0VQXyAiYmFyIikuSXNBYnNvbHV0ZVBhdGgoKSk7Ci0gIEVYUEVDVF9UUlVFKEZp
bGVQYXRoKCJjOi8iIEdURVNUX1BBVEhfU0VQXyAiaXNfbm90IgotICAgICAgICAgICAgICAgICAg
ICAgICBHVEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIikuSXNBYnNvbHV0ZVBhdGgoKSk7Ci0jZWxz
ZQotICBFWFBFQ1RfVFJVRShGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gImlzX25vdCIgR1RFU1Rf
UEFUSF9TRVBfICJyZWxhdGl2ZSIpCi0gICAgICAgICAgICAgIC5Jc0Fic29sdXRlUGF0aCgpKTsK
LSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgSXNS
b290RGlyZWN0b3J5KSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICBFWFBFQ1RfVFJVRShGaWxl
UGF0aCgiYTpcXCIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgo
Ilo6LyIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImU6Ly8i
KS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiIikuSXNSb290
RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImI6IikuSXNSb290RGlyZWN0
b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImI6YSIpLklzUm9vdERpcmVjdG9yeSgp
KTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCI4Oi8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0g
IEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiY3wvIikuSXNSb290RGlyZWN0b3J5KCkpOwotI2Vsc2UK
LSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVD
VF9UUlVFKEZpbGVQYXRoKCIvLyIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX0ZBTFNF
KEZpbGVQYXRoKCIiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0
aCgiXFwiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiL3gi
KS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0jZW5kaWYKLX0KLQotfSAgLy8gbmFtZXNwYWNlCi19ICAv
LyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNjCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWU4MjI5NmM5MjFmMGFmZTQyZmMyMzM1NzQ5
NzBlZTc3MDllNWJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNj
CisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDAzLCBHb29n
bGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3JzOiBEYW4gRWdub3IgKGVnbm9yQGdv
b2dsZS5jb20pCi0vLyBQb3J0ZWQgdG8gV2luZG93czogVmFkaW0gQmVybWFuICh2YWRpbWJAZ29v
Z2xlLmNvbSkKLQotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaD4K
LQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLW5hbWVz
cGFjZSB7Ci0KLXVzaW5nIHRlc3Rpbmc6Ok1lc3NhZ2U7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6bGlua2VkX3B0cjsKLQotaW50IG51bTsKLU1lc3NhZ2UqIGhpc3RvcnkgPSBOVUxMOwotCi0v
LyBDbGFzcyB3aGljaCB0cmFja3MgYWxsb2NhdGlvbi9kZWFsbG9jYXRpb24KLWNsYXNzIEEgewot
IHB1YmxpYzoKLSAgQSgpOiBteW51bShudW0rKykgeyAqaGlzdG9yeSA8PCAiQSIgPDwgbXludW0g
PDwgIiBjdG9yXG4iOyB9Ci0gIHZpcnR1YWwgfkEoKSB7ICpoaXN0b3J5IDw8ICJBIiA8PCBteW51
bSA8PCAiIGR0b3JcbiI7IH0KLSAgdmlydHVhbCB2b2lkIFVzZSgpIHsgKmhpc3RvcnkgPDwgIkEi
IDw8IG15bnVtIDw8ICIgdXNlXG4iOyB9Ci0gcHJvdGVjdGVkOgotICBpbnQgbXludW07Ci19Owot
Ci0vLyBTdWJjbGFzcwotY2xhc3MgQiA6IHB1YmxpYyBBIHsKLSBwdWJsaWM6Ci0gIEIoKSB7ICpo
aXN0b3J5IDw8ICJCIiA8PCBteW51bSA8PCAiIGN0b3JcbiI7IH0KLSAgfkIoKSB7ICpoaXN0b3J5
IDw8ICJCIiA8PCBteW51bSA8PCAiIGR0b3JcbiI7IH0KLSAgdmlydHVhbCB2b2lkIFVzZSgpIHsg
Kmhpc3RvcnkgPDwgIkIiIDw8IG15bnVtIDw8ICIgdXNlXG4iOyB9Ci19OwotCi1jbGFzcyBMaW5r
ZWRQdHJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHB1YmxpYzoKLSAgTGlua2VkUHRy
VGVzdCgpIHsKLSAgICBudW0gPSAwOwotICAgIGhpc3RvcnkgPSBuZXcgTWVzc2FnZTsKLSAgfQot
Ci0gIHZpcnR1YWwgfkxpbmtlZFB0clRlc3QoKSB7Ci0gICAgZGVsZXRlIGhpc3Rvcnk7Ci0gICAg
aGlzdG9yeSA9IE5VTEw7Ci0gIH0KLX07Ci0KLVRFU1RfRihMaW5rZWRQdHJUZXN0LCBHZW5lcmFs
VGVzdCkgewotICB7Ci0gICAgbGlua2VkX3B0cjxBPiBhMCwgYTEsIGEyOwotICAgIGEwID0gYTA7
Ci0gICAgYTEgPSBhMjsKLSAgICBBU1NFUlRfRVEoYTAuZ2V0KCksIHN0YXRpY19jYXN0PEEqPihO
VUxMKSk7Ci0gICAgQVNTRVJUX0VRKGExLmdldCgpLCBzdGF0aWNfY2FzdDxBKj4oTlVMTCkpOwot
ICAgIEFTU0VSVF9FUShhMi5nZXQoKSwgc3RhdGljX2Nhc3Q8QSo+KE5VTEwpKTsKLSAgICBBU1NF
UlRfVFJVRShhMCA9PSBOVUxMKTsKLSAgICBBU1NFUlRfVFJVRShhMSA9PSBOVUxMKTsKLSAgICBB
U1NFUlRfVFJVRShhMiA9PSBOVUxMKTsKLQotICAgIHsKLSAgICAgIGxpbmtlZF9wdHI8QT4gYTMo
bmV3IEEpOwotICAgICAgYTAgPSBhMzsKLSAgICAgIEFTU0VSVF9UUlVFKGEwID09IGEzKTsKLSAg
ICAgIEFTU0VSVF9UUlVFKGEwICE9IE5VTEwpOwotICAgICAgQVNTRVJUX1RSVUUoYTAuZ2V0KCkg
PT0gYTMpOwotICAgICAgQVNTRVJUX1RSVUUoYTAgPT0gYTMuZ2V0KCkpOwotICAgICAgbGlua2Vk
X3B0cjxBPiBhNChhMCk7Ci0gICAgICBhMSA9IGE0OwotICAgICAgbGlua2VkX3B0cjxBPiBhNShu
ZXcgQSk7Ci0gICAgICBBU1NFUlRfVFJVRShhNS5nZXQoKSAhPSBhMyk7Ci0gICAgICBBU1NFUlRf
VFJVRShhNSAhPSBhMy5nZXQoKSk7Ci0gICAgICBhMiA9IGE1OwotICAgICAgbGlua2VkX3B0cjxC
PiBiMChuZXcgQik7Ci0gICAgICBsaW5rZWRfcHRyPEE+IGE2KGIwKTsKLSAgICAgIEFTU0VSVF9U
UlVFKGIwID09IGE2KTsKLSAgICAgIEFTU0VSVF9UUlVFKGE2ID09IGIwKTsKLSAgICAgIEFTU0VS
VF9UUlVFKGIwICE9IE5VTEwpOwotICAgICAgYTUgPSBiMDsKLSAgICAgIGE1ID0gYjA7Ci0gICAg
ICBhMy0+VXNlKCk7Ci0gICAgICBhNC0+VXNlKCk7Ci0gICAgICBhNS0+VXNlKCk7Ci0gICAgICBh
Ni0+VXNlKCk7Ci0gICAgICBiMC0+VXNlKCk7Ci0gICAgICAoKmIwKS5Vc2UoKTsKLSAgICAgIGIw
LmdldCgpLT5Vc2UoKTsKLSAgICB9Ci0KLSAgICBhMC0+VXNlKCk7Ci0gICAgYTEtPlVzZSgpOwot
ICAgIGEyLT5Vc2UoKTsKLQotICAgIGExID0gYTI7Ci0gICAgYTIucmVzZXQobmV3IEEpOwotICAg
IGEwLnJlc2V0KCk7Ci0KLSAgICBsaW5rZWRfcHRyPEE+IGE3OwotICB9Ci0KLSAgQVNTRVJUX1NU
UkVRKAotICAgICJBMCBjdG9yXG4iCi0gICAgIkExIGN0b3JcbiIKLSAgICAiQTIgY3RvclxuIgot
ICAgICJCMiBjdG9yXG4iCi0gICAgIkEwIHVzZVxuIgotICAgICJBMCB1c2VcbiIKLSAgICAiQjIg
dXNlXG4iCi0gICAgIkIyIHVzZVxuIgotICAgICJCMiB1c2VcbiIKLSAgICAiQjIgdXNlXG4iCi0g
ICAgIkIyIHVzZVxuIgotICAgICJCMiBkdG9yXG4iCi0gICAgIkEyIGR0b3JcbiIKLSAgICAiQTAg
dXNlXG4iCi0gICAgIkEwIHVzZVxuIgotICAgICJBMSB1c2VcbiIKLSAgICAiQTMgY3RvclxuIgot
ICAgICJBMCBkdG9yXG4iCi0gICAgIkEzIGR0b3JcbiIKLSAgICAiQTEgZHRvclxuIiwKLSAgICBo
aXN0b3J5LT5HZXRTdHJpbmcoKS5jX3N0cigpCi0gICk7Ci19Ci0KLX0gIC8vIFVubmFtZWQgbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWxp
c3RlbmVyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWxpc3Rl
bmVyX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YmUzOWE4N2U4OGQ4
OTYwMWI5YmM5MzcyYTE0ZWRhYWY2MTI5NDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saXN0
ZW5lcl90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMzEzICswLDAgQEAKLS8vIENvcHlyaWdo
dCAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUu
Y29tIChWbGFkIExvc2V2KQotLy8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3Jr
IChHb29nbGUgVGVzdCkKLS8vCi0vLyBUaGlzIGZpbGUgdmVyaWZpZXMgR29vZ2xlIFRlc3QgZXZl
bnQgbGlzdGVuZXJzIHJlY2VpdmUgZXZlbnRzIGF0IHRoZQotLy8gcmlnaHQgdGltZXMuCi0KLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotdXNpbmcgOjp0ZXN0
aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQ7Ci11c2luZyA6OnRlc3Rpbmc6OkVudmlyb25t
ZW50OwotdXNpbmcgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6
VGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdENhc2U7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RF
dmVudExpc3RlbmVyOwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0SW5mbzsKLXVzaW5nIDo6dGVzdGlu
Zzo6VGVzdFBhcnRSZXN1bHQ7Ci11c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OwotdXNpbmcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOwotCi0vLyBVc2VkIGJ5IHRlc3RzIHRvIHJlZ2lzdGVy
IHRoZWlyIGV2ZW50cy4KLXN0ZDo6dmVjdG9yPFN0cmluZz4qIGdfZXZlbnRzID0gTlVMTDsKLQot
bmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVybmFsIHsKLQotY2xhc3MgRXZlbnRS
ZWNvcmRpbmdMaXN0ZW5lciA6IHB1YmxpYyBUZXN0RXZlbnRMaXN0ZW5lciB7Ci0gcHVibGljOgot
ICBFdmVudFJlY29yZGluZ0xpc3RlbmVyKGNvbnN0IGNoYXIqIG5hbWUpIDogbmFtZV8obmFtZSkg
e30KLQotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIE9uVGVzdFByb2dyYW1TdGFydChjb25z
dCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0
RnVsbE1ldGhvZE5hbWUoIk9uVGVzdFByb2dyYW1TdGFydCIpKTsKLSAgfQotCi0gIHZpcnR1YWwg
dm9pZCBPblRlc3RJdGVyYXRpb25TdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpdGVyYXRpb24pIHsKLSAg
ICBNZXNzYWdlIG1lc3NhZ2U7Ci0gICAgbWVzc2FnZSA8PCBHZXRGdWxsTWV0aG9kTmFtZSgiT25U
ZXN0SXRlcmF0aW9uU3RhcnQiKQotICAgICAgICAgICAgPDwgIigiIDw8IGl0ZXJhdGlvbiA8PCAi
KSI7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhtZXNzYWdlLkdldFN0cmluZygpKTsKLSAgfQot
Ci0gIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1NldFVwU3RhcnQoY29uc3QgVW5pdFRlc3Qm
IC8qdW5pdF90ZXN0Ki8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2RO
YW1lKCJPbkVudmlyb25tZW50c1NldFVwU3RhcnQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQg
T25FbnZpcm9ubWVudHNTZXRVcEVuZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewot
ICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRz
U2V0VXBFbmQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0Q2FzZVN0YXJ0KGNvbnN0
IFRlc3RDYXNlJiAvKnRlc3RfY2FzZSovKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRG
dWxsTWV0aG9kTmFtZSgiT25UZXN0Q2FzZVN0YXJ0IikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lk
IE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZvJiAvKnRlc3RfaW5mbyovKSB7Ci0gICAgZ19ldmVu
dHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0U3RhcnQiKSk7Ci0gIH0KLQot
ICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgLyp0
ZXN0X3BhcnRfcmVzdWx0Ki8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRo
b2ROYW1lKCJPblRlc3RQYXJ0UmVzdWx0IikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVz
dEVuZChjb25zdCBUZXN0SW5mbyYgLyp0ZXN0X2luZm8qLykgewotICAgIGdfZXZlbnRzLT5wdXNo
X2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdEVuZCIpKTsKLSAgfQotCi0gIHZpcnR1YWwg
dm9pZCBPblRlc3RDYXNlRW5kKGNvbnN0IFRlc3RDYXNlJiAvKnRlc3RfY2FzZSovKSB7Ci0gICAg
Z19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0Q2FzZUVuZCIpKTsK
LSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQoY29uc3Qg
VW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1
bGxNZXRob2ROYW1lKCJPbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiKSk7Ci0gIH0KLQotICB2
aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNUZWFyRG93bkVuZChjb25zdCBVbml0VGVzdCYgLyp1
bml0X3Rlc3QqLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUo
Ik9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25U
ZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpdGVyYXRpb24pIHsKLSAgICBNZXNzYWdlIG1l
c3NhZ2U7Ci0gICAgbWVzc2FnZSA8PCBHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0SXRlcmF0aW9u
RW5kIikKLSAgICAgICAgICAgIDw8ICIoIiAgPDwgaXRlcmF0aW9uIDw8ICIpIjsKLSAgICBnX2V2
ZW50cy0+cHVzaF9iYWNrKG1lc3NhZ2UuR2V0U3RyaW5nKCkpOwotICB9Ci0KLSAgdmlydHVhbCB2
b2lkIE9uVGVzdFByb2dyYW1FbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKLSAg
ICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RQcm9ncmFtRW5k
IikpOwotICB9Ci0KLSBwcml2YXRlOgotICBTdHJpbmcgR2V0RnVsbE1ldGhvZE5hbWUoY29uc3Qg
Y2hhciogbmFtZSkgewotICAgIE1lc3NhZ2UgbWVzc2FnZTsKLSAgICBtZXNzYWdlIDw8IG5hbWVf
IDw8ICIuIiA8PCBuYW1lOwotICAgIHJldHVybiBtZXNzYWdlLkdldFN0cmluZygpOwotICB9Ci0K
LSAgU3RyaW5nIG5hbWVfOwotfTsKLQotY2xhc3MgRW52aXJvbm1lbnRJbnZvY2F0aW9uQ2F0Y2hl
ciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0
VXAoKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkVudmlyb25tZW50OjpTZXRV
cCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBnX2V2ZW50cy0+
cHVzaF9iYWNrKFN0cmluZygiRW52aXJvbm1lbnQ6OlRlYXJEb3duIikpOwotICB9Ci19OwotCi1j
bGFzcyBMaXN0ZW5lclRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHJvdGVjdGVkOgotICBzdGF0aWMg
dm9pZCBTZXRVcFRlc3RDYXNlKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJM
aXN0ZW5lclRlc3Q6OlNldFVwVGVzdENhc2UiKSk7Ci0gIH0KLQotICBzdGF0aWMgdm9pZCBUZWFy
RG93blRlc3RDYXNlKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJMaXN0ZW5l
clRlc3Q6OlRlYXJEb3duVGVzdENhc2UiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAo
KSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6U2V0VXAi
KSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgZ19ldmVudHMtPnB1
c2hfYmFjayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6VGVhckRvd24iKSk7Ci0gIH0KLX07Ci0KLVRF
U1RfRihMaXN0ZW5lclRlc3QsIERvZXNGb28pIHsKLSAgLy8gVGVzdCBleGVjdXRpb24gb3JkZXIg
d2l0aGluIGEgdGVzdCBjYXNlIGlzIG5vdCBndWFyYW50ZWVkIHNvIHdlIGFyZSBub3QKLSAgLy8g
cmVjb3JkaW5nIHRoZSB0ZXN0IG5hbWUuCi0gIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJM
aXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5IikpOwotICBTVUNDRUVEKCk7ICAvLyBUcmlnZ2VycyBP
blRlc3RQYXJ0UmVzdWx0LgotfQotCi1URVNUX0YoTGlzdGVuZXJUZXN0LCBEb2VzQmFyKSB7Ci0g
IGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5Iikp
OwotICBTVUNDRUVEKCk7ICAvLyBUcmlnZ2VycyBPblRlc3RQYXJ0UmVzdWx0LgotfQotCi19ICAv
LyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotdXNpbmcg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6RW52aXJvbm1lbnRJbnZvY2F0aW9uQ2F0Y2hlcjsKLXVzaW5n
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkV2ZW50UmVjb3JkaW5nTGlzdGVuZXI7Ci0KLXZvaWQgVmVy
aWZ5UmVzdWx0cyhjb25zdCBzdGQ6OnZlY3RvcjxTdHJpbmc+JiBkYXRhLAotICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0KiBleHBlY3RlZF9kYXRhLAotICAgICAgICAgICAgICAg
ICAgIGludCBleHBlY3RlZF9kYXRhX3NpemUpIHsKLSAgY29uc3QgaW50IGFjdHVhbF9zaXplID0g
ZGF0YS5zaXplKCk7Ci0gIC8vIElmIHRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9uIGZhaWxzLCBhIG5l
dyBlbnRyeSB3aWxsIGJlIGFwcGVuZGVkIHRvCi0gIC8vIGRhdGEuICBIZW5jZSB3ZSBzYXZlIGRh
dGEuc2l6ZSgpIGZpcnN0LgotICBFWFBFQ1RfRVEoZXhwZWN0ZWRfZGF0YV9zaXplLCBhY3R1YWxf
c2l6ZSk7Ci0KLSAgLy8gQ29tcGFyZXMgdGhlIGNvbW1vbiBwcmVmaXguCi0gIGNvbnN0IGludCBz
aG9ydGVyX3NpemUgPSBleHBlY3RlZF9kYXRhX3NpemUgPD0gYWN0dWFsX3NpemUgPwotICAgICAg
ZXhwZWN0ZWRfZGF0YV9zaXplIDogYWN0dWFsX3NpemU7Ci0gIGludCBpID0gMDsKLSAgZm9yICg7
IGkgPCBzaG9ydGVyX3NpemU7ICsraSkgewotICAgIEFTU0VSVF9TVFJFUShleHBlY3RlZF9kYXRh
W2ldLCBkYXRhW2ldLmNfc3RyKCkpCi0gICAgICAgIDw8ICJhdCBwb3NpdGlvbiAiIDw8IGk7Ci0g
IH0KLQotICAvLyBQcmludHMgZXh0cmEgZWxlbWVudHMgaW4gdGhlIGFjdHVhbCBkYXRhLgotICBm
b3IgKDsgaSA8IGFjdHVhbF9zaXplOyArK2kpIHsKLSAgICBwcmludGYoIiAgQWN0dWFsIGV2ZW50
ICMlZDogJXNcbiIsIGksIGRhdGFbaV0uY19zdHIoKSk7Ci0gIH0KLX0KLQotaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIgKiphcmd2KSB7Ci0gIHN0ZDo6dmVjdG9yPFN0cmluZz4gZXZlbnRzOwotICBn
X2V2ZW50cyA9ICZldmVudHM7Ci0gIEluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICBV
bml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCkuQXBwZW5kKAotICAgICAgbmV3IEV2
ZW50UmVjb3JkaW5nTGlzdGVuZXIoIjFzdCIpKTsKLSAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkt
Pmxpc3RlbmVycygpLkFwcGVuZCgKLSAgICAgIG5ldyBFdmVudFJlY29yZGluZ0xpc3RlbmVyKCIy
bmQiKSk7Ci0KLSAgQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBFbnZpcm9ubWVudEludm9j
YXRpb25DYXRjaGVyKTsKLQotICBHVEVTVF9DSEVDS18oZXZlbnRzLnNpemUoKSA9PSAwKQotICAg
ICAgPDwgIkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCBzaG91bGQgbm90IGdlbmVyYXRlIGFueSBl
dmVudHMgaXRzZWxmLiI7Ci0KLSAgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHJlcGVhdCkgPSAyOwot
ICBpbnQgcmV0X3ZhbCA9IFJVTl9BTExfVEVTVFMoKTsKLQotICBjb25zdCBjaGFyKiBjb25zdCBl
eHBlY3RlZF9ldmVudHNbXSA9IHsKLSAgICAiMXN0Lk9uVGVzdFByb2dyYW1TdGFydCIsCi0gICAg
IjJuZC5PblRlc3RQcm9ncmFtU3RhcnQiLAotICAgICIxc3QuT25UZXN0SXRlcmF0aW9uU3RhcnQo
MCkiLAotICAgICIybmQuT25UZXN0SXRlcmF0aW9uU3RhcnQoMCkiLAotICAgICIxc3QuT25FbnZp
cm9ubWVudHNTZXRVcFN0YXJ0IiwKLSAgICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIs
Ci0gICAgIkVudmlyb25tZW50OjpTZXRVcCIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50c1NldFVw
RW5kIiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiLAotICAgICIxc3QuT25UZXN0
Q2FzZVN0YXJ0IiwKLSAgICAiMm5kLk9uVGVzdENhc2VTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVz
dDo6U2V0VXBUZXN0Q2FzZSIsCi0gICAgIjFzdC5PblRlc3RTdGFydCIsCi0gICAgIjJuZC5PblRl
c3RTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6U2V0VXAiLAotICAgICJMaXN0ZW5lclRlc3Q6
OiogVGVzdCBCb2R5IiwKLSAgICAiMXN0Lk9uVGVzdFBhcnRSZXN1bHQiLAotICAgICIybmQuT25U
ZXN0UGFydFJlc3VsdCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6VGVhckRvd24iLAotICAgICIybmQu
T25UZXN0RW5kIiwKLSAgICAiMXN0Lk9uVGVzdEVuZCIsCi0gICAgIjFzdC5PblRlc3RTdGFydCIs
Ci0gICAgIjJuZC5PblRlc3RTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6U2V0VXAiLAotICAg
ICJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5IiwKLSAgICAiMXN0Lk9uVGVzdFBhcnRSZXN1bHQi
LAotICAgICIybmQuT25UZXN0UGFydFJlc3VsdCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6VGVhckRv
d24iLAotICAgICIybmQuT25UZXN0RW5kIiwKLSAgICAiMXN0Lk9uVGVzdEVuZCIsCi0gICAgIkxp
c3RlbmVyVGVzdDo6VGVhckRvd25UZXN0Q2FzZSIsCi0gICAgIjJuZC5PblRlc3RDYXNlRW5kIiwK
LSAgICAiMXN0Lk9uVGVzdENhc2VFbmQiLAotICAgICIxc3QuT25FbnZpcm9ubWVudHNUZWFyRG93
blN0YXJ0IiwKLSAgICAiMm5kLk9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydCIsCi0gICAgIkVu
dmlyb25tZW50OjpUZWFyRG93biIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5k
IiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiLAotICAgICIybmQuT25UZXN0
SXRlcmF0aW9uRW5kKDApIiwKLSAgICAiMXN0Lk9uVGVzdEl0ZXJhdGlvbkVuZCgwKSIsCi0gICAg
IjFzdC5PblRlc3RJdGVyYXRpb25TdGFydCgxKSIsCi0gICAgIjJuZC5PblRlc3RJdGVyYXRpb25T
dGFydCgxKSIsCi0gICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVwU3RhcnQiLAotICAgICIybmQu
T25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0IiwKLSAgICAiRW52aXJvbm1lbnQ6OlNldFVwIiwKLSAg
ICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiLAotICAgICIxc3QuT25FbnZpcm9ubWVudHNT
ZXRVcEVuZCIsCi0gICAgIjFzdC5PblRlc3RDYXNlU3RhcnQiLAotICAgICIybmQuT25UZXN0Q2Fz
ZVN0YXJ0IiwKLSAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcFRlc3RDYXNlIiwKLSAgICAiMXN0Lk9u
VGVzdFN0YXJ0IiwKLSAgICAiMm5kLk9uVGVzdFN0YXJ0IiwKLSAgICAiTGlzdGVuZXJUZXN0OjpT
ZXRVcCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHkiLAotICAgICIxc3QuT25UZXN0
UGFydFJlc3VsdCIsCi0gICAgIjJuZC5PblRlc3RQYXJ0UmVzdWx0IiwKLSAgICAiTGlzdGVuZXJU
ZXN0OjpUZWFyRG93biIsCi0gICAgIjJuZC5PblRlc3RFbmQiLAotICAgICIxc3QuT25UZXN0RW5k
IiwKLSAgICAiMXN0Lk9uVGVzdFN0YXJ0IiwKLSAgICAiMm5kLk9uVGVzdFN0YXJ0IiwKLSAgICAi
TGlzdGVuZXJUZXN0OjpTZXRVcCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHkiLAot
ICAgICIxc3QuT25UZXN0UGFydFJlc3VsdCIsCi0gICAgIjJuZC5PblRlc3RQYXJ0UmVzdWx0IiwK
LSAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93biIsCi0gICAgIjJuZC5PblRlc3RFbmQiLAotICAg
ICIxc3QuT25UZXN0RW5kIiwKLSAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93blRlc3RDYXNlIiwK
LSAgICAiMm5kLk9uVGVzdENhc2VFbmQiLAotICAgICIxc3QuT25UZXN0Q2FzZUVuZCIsCi0gICAg
IjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiLAotICAgICIybmQuT25FbnZpcm9ubWVu
dHNUZWFyRG93blN0YXJ0IiwKLSAgICAiRW52aXJvbm1lbnQ6OlRlYXJEb3duIiwKLSAgICAiMm5k
Lk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiLAotICAgICIxc3QuT25FbnZpcm9ubWVudHNUZWFy
RG93bkVuZCIsCi0gICAgIjJuZC5PblRlc3RJdGVyYXRpb25FbmQoMSkiLAotICAgICIxc3QuT25U
ZXN0SXRlcmF0aW9uRW5kKDEpIiwKLSAgICAiMm5kLk9uVGVzdFByb2dyYW1FbmQiLAotICAgICIx
c3QuT25UZXN0UHJvZ3JhbUVuZCIKLSAgfTsKLSAgVmVyaWZ5UmVzdWx0cyhldmVudHMsCi0gICAg
ICAgICAgICAgICAgZXhwZWN0ZWRfZXZlbnRzLAotICAgICAgICAgICAgICAgIHNpemVvZihleHBl
Y3RlZF9ldmVudHMpL3NpemVvZihleHBlY3RlZF9ldmVudHNbMF0pKTsKLQotICAvLyBXZSBuZWVk
IHRvIGNoZWNrIG1hbnVhbGx5IGZvciBhZCBob2MgdGVzdCBmYWlsdXJlcyB0aGF0IGhhcHBlbiBh
ZnRlcgotICAvLyBSVU5fQUxMX1RFU1RTIGZpbmlzaGVzLgotICBpZiAoVW5pdFRlc3Q6OkdldElu
c3RhbmNlKCktPkZhaWxlZCgpKQotICAgIHJldF92YWwgPSAxOwotCi0gIHJldHVybiByZXRfdmFs
OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1tZXNz
YWdlX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LW1lc3NhZ2Vf
dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQyYjAzNDQ3ODcyZTNlOGYw
N2E5YTRhZGQyYmU1ZGQ0Njk4MGI1NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LW1lc3NhZ2Vf
dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDE2NyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAw
NSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNv
bSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRlc3RzIGZvciB0aGUgTWVzc2FnZSBjbGFzcy4KLQot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaD4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+Ci0KLW5hbWVzcGFjZSB7Ci0KLXVzaW5nIDo6dGVzdGluZzo6TWVzc2FnZTsKLXVzaW5nIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlN0clN0cmVhbTsKLQotLy8gQSBoZWxwZXIgZnVuY3Rpb24gdGhh
dCB0dXJucyBhIE1lc3NhZ2UgaW50byBhIEMgc3RyaW5nLgotY29uc3QgY2hhciogVG9DU3RyaW5n
KGNvbnN0IE1lc3NhZ2UmIG1zZykgewotICBzdGF0aWMgdGVzdGluZzo6aW50ZXJuYWw6OlN0cmlu
ZyByZXN1bHQ7Ci0gIHJlc3VsdCA9IG1zZy5HZXRTdHJpbmcoKTsKLSAgcmV0dXJuIHJlc3VsdC5j
X3N0cigpOwotfQotCi0vLyBUZXN0cyB0aGUgdGVzdGluZzo6TWVzc2FnZSBjbGFzcwotCi0vLyBU
ZXN0cyB0aGUgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KLVRFU1QoTWVzc2FnZVRlc3QsIERlZmF1bHRD
b25zdHJ1Y3RvcikgewotICBjb25zdCBNZXNzYWdlIG1zZzsKLSAgRVhQRUNUX1NUUkVRKCIiLCBU
b0NTdHJpbmcobXNnKSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBjb3B5IGNvbnN0cnVjdG9yLgotVEVT
VChNZXNzYWdlVGVzdCwgQ29weUNvbnN0cnVjdG9yKSB7Ci0gIGNvbnN0IE1lc3NhZ2UgbXNnMSgi
SGVsbG8iKTsKLSAgY29uc3QgTWVzc2FnZSBtc2cyKG1zZzEpOwotICBFWFBFQ1RfU1RSRVEoIkhl
bGxvIiwgVG9DU3RyaW5nKG1zZzIpKTsKLX0KLQotLy8gVGVzdHMgY29uc3RydWN0aW5nIGEgTWVz
c2FnZSBmcm9tIGEgQy1zdHJpbmcuCi1URVNUKE1lc3NhZ2VUZXN0LCBDb25zdHJ1Y3RzRnJvbUNT
dHJpbmcpIHsKLSAgTWVzc2FnZSBtc2coIkhlbGxvIik7Ci0gIEVYUEVDVF9TVFJFUSgiSGVsbG8i
LCBUb0NTdHJpbmcobXNnKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBhIGZsb2F0LgotVEVT
VChNZXNzYWdlVGVzdCwgU3RyZWFtc0Zsb2F0KSB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IHMgPSBU
b0NTdHJpbmcoTWVzc2FnZSgpIDw8IDEuMjM0NTZGIDw8ICIgIiA8PCAyLjM0NTY3Rik7Ci0gIC8v
IEJvdGggbnVtYmVycyBzaG91bGQgYmUgcHJpbnRlZCB3aXRoIGVub3VnaCBwcmVjaXNpb24uCi0g
IEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIxLjIzNDU2MCIsIHMp
OwotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6OklzU3Vic3RyaW5nLCAiIDIuMzQ1NjY5
Iiwgcyk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBhIGRvdWJsZS4KLVRFU1QoTWVzc2FnZVRl
c3QsIFN0cmVhbXNEb3VibGUpIHsKLSAgY29uc3QgY2hhciogY29uc3QgcyA9IFRvQ1N0cmluZyhN
ZXNzYWdlKCkgPDwgMTI2MDU3MDg4MC40NTU1NDk3IDw8ICIgIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8IDEyNjA1NzIyNjUuMTk1NDUzNCk7Ci0gIC8vIEJvdGggbnVtYmVy
cyBzaG91bGQgYmUgcHJpbnRlZCB3aXRoIGVub3VnaCBwcmVjaXNpb24uCi0gIEVYUEVDVF9QUkVE
X0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIxMjYwNTcwODgwLjQ1Iiwgcyk7Ci0gIEVY
UEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIgMTI2MDU3MjI2NS4xOSIs
IHMpOwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcgYSBub24tY2hhciBwb2ludGVyLgotVEVTVChN
ZXNzYWdlVGVzdCwgU3RyZWFtc1BvaW50ZXIpIHsKLSAgaW50IG4gPSAwOwotICBpbnQqIHAgPSAm
bjsKLSAgRVhQRUNUX1NUUk5FKCIobnVsbCkiLCBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8IHApKTsK
LX0KLQotLy8gVGVzdHMgc3RyZWFtaW5nIGEgTlVMTCBub24tY2hhciBwb2ludGVyLgotVEVTVChN
ZXNzYWdlVGVzdCwgU3RyZWFtc051bGxQb2ludGVyKSB7Ci0gIGludCogcCA9IE5VTEw7Ci0gIEVY
UEVDVF9TVFJFUSgiKG51bGwpIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCBwKSk7Ci19Ci0KLS8v
IFRlc3RzIHN0cmVhbWluZyBhIEMgc3RyaW5nLgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc0NT
dHJpbmcpIHsKLSAgRVhQRUNUX1NUUkVRKCJGb28iLCBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8ICJG
b28iKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBhIE5VTEwgQyBzdHJpbmcuCi1URVNUKE1l
c3NhZ2VUZXN0LCBTdHJlYW1zTnVsbENTdHJpbmcpIHsKLSAgY2hhciogcCA9IE5VTEw7Ci0gIEVY
UEVDVF9TVFJFUSgiKG51bGwpIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCBwKSk7Ci19Ci0KLS8v
IFRlc3RzIHN0cmVhbWluZyBzdGQ6OnN0cmluZy4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNT
dHJpbmcpIHsKLSAgY29uc3QgOjpzdGQ6OnN0cmluZyBzdHIoIkhlbGxvIik7Ci0gIEVYUEVDVF9T
VFJFUSgiSGVsbG8iLCBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8IHN0cikpOwotfQotCi0vLyBUZXN0
cyB0aGF0IHdlIGNhbiBvdXRwdXQgc3RyaW5ncyBjb250YWluaW5nIGVtYmVkZGVkIE5VTHMuCi1U
RVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zU3RyaW5nV2l0aEVtYmVkZGVkTlVMKSB7Ci0gIGNvbnN0
IGNoYXIgY2hhcl9hcnJheV93aXRoX251bFtdID0KLSAgICAgICJIZXJlJ3MgYSBOVUxcMCBhbmQg
c29tZSBtb3JlIHN0cmluZyI7Ci0gIGNvbnN0IDo6c3RkOjpzdHJpbmcgc3RyaW5nX3dpdGhfbnVs
KGNoYXJfYXJyYXlfd2l0aF9udWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVvZihjaGFyX2FycmF5X3dpdGhfbnVsKSAtIDEpOwotICBFWFBFQ1RfU1RSRVEoIkhl
cmUncyBhIE5VTFxcMCBhbmQgc29tZSBtb3JlIHN0cmluZyIsCi0gICAgICAgICAgICAgICBUb0NT
dHJpbmcoTWVzc2FnZSgpIDw8IHN0cmluZ193aXRoX251bCkpOwotfQotCi0vLyBUZXN0cyBzdHJl
YW1pbmcgYSBOVUwgY2hhci4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNOVUxDaGFyKSB7Ci0g
IEVYUEVDVF9TVFJFUSgiXFwwIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCAnXDAnKSk7Ci19Ci0K
LS8vIFRlc3RzIHN0cmVhbWluZyBpbnQuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zSW50KSB7
Ci0gIEVYUEVDVF9TVFJFUSgiMTIzIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCAxMjMpKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBiYXNpYyBJTyBtYW5pcHVsYXRvcnMgKGVuZGwsIGVuZHMsIGFuZCBm
bHVzaCkgY2FuIGJlCi0vLyBzdHJlYW1lZCB0byBNZXNzYWdlLgotVEVTVChNZXNzYWdlVGVzdCwg
U3RyZWFtc0Jhc2ljSW9NYW5pcCkgewotICBFWFBFQ1RfU1RSRVEoIkxpbmUgMS5cbkEgTlVMIGNo
YXIgXFwwIGluIGxpbmUgMi4iLAotICAgICAgICAgICAgICAgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8
PCAiTGluZSAxLiIgPDwgc3RkOjplbmRsCi0gICAgICAgICAgICAgICAgICAgICAgICAgPDwgIkEg
TlVMIGNoYXIgIiA8PCBzdGQ6OmVuZHMgPDwgc3RkOjpmbHVzaAotICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICIgaW4gbGluZSAyLiIpKTsKLX0KLQotLy8gVGVzdHMgTWVzc2FnZTo6R2V0U3Ry
aW5nKCkKLVRFU1QoTWVzc2FnZVRlc3QsIEdldFN0cmluZykgewotICBNZXNzYWdlIG1zZzsKLSAg
bXNnIDw8IDEgPDwgIiBsYW1iIjsKLSAgRVhQRUNUX1NUUkVRKCIxIGxhbWIiLCBtc2cuR2V0U3Ry
aW5nKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBhIE1lc3NhZ2Ugb2JqZWN0
IHRvIGFuIG9zdHJlYW0uCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zVG9PU3RyZWFtKSB7Ci0g
IE1lc3NhZ2UgbXNnKCJIZWxsbyIpOwotICBTdHJTdHJlYW0gc3M7Ci0gIHNzIDw8IG1zZzsKLSAg
RVhQRUNUX1NUUkVRKCJIZWxsbyIsIHRlc3Rpbmc6OmludGVybmFsOjpTdHJTdHJlYW1Ub1N0cmlu
Zygmc3MpLmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgTWVzc2FnZSBvYmplY3QgZG9l
c24ndCB0YWtlIHVwIHRvbyBtdWNoIHN0YWNrIHNwYWNlLgotVEVTVChNZXNzYWdlVGVzdCwgRG9l
c05vdFRha2VVcE11Y2hTdGFja1NwYWNlKSB7Ci0gIEVYUEVDVF9MRShzaXplb2YoTWVzc2FnZSks
IDE2VSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdC1vcHRpb25zX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0LW9wdGlvbnNfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMmUyY2JjOTJlNWUwMjhjNzRjODJmMDc1MGZkZDhiZGZiNGU4ODMxZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0LW9wdGlvbnNfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDIxMiAr
MCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwot
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0v
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwot
Ly8gQXV0aG9yczoga2VpdGgucmF5QGdtYWlsLmNvbSAoS2VpdGggUmF5KQotLy8KLS8vIEdvb2ds
ZSBUZXN0IFVuaXRUZXN0T3B0aW9ucyB0ZXN0cwotLy8KLS8vIFRoaXMgZmlsZSB0ZXN0cyBjbGFz
c2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5IGJ5Ci0vLyBHb29nbGUgVGVzdC4gIFRo
ZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotLy8KLS8vIFRoaXMgZmls
ZSBpcyAjaW5jbHVkZWQgZnJvbSBndGVzdC5jYywgdG8gYXZvaWQgY2hhbmdpbmcgYnVpbGQgb3IK
LS8vIG1ha2UtZmlsZXMgb24gV2luZG93cyBhbmQgb3RoZXIgcGxhdGZvcm1zLiBEbyBub3QgI2lu
Y2x1ZGUgdGhpcyBmaWxlCi0vLyBhbnl3aGVyZSBlbHNlIQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KLQotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0jaW5jbHVkZSA8d2luZG93cy5o
PgotI2VsaWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1ZGUgPGRpcmVjdC5oPgotI2VuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5z
bGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4g
IEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVk
LCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0v
LyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJu
YWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8g
MQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBM
RU1FTlRBVElPTl8KLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVybmFsIHsK
LW5hbWVzcGFjZSB7Ci0KLS8vIFR1cm5zIHRoZSBnaXZlbiByZWxhdGl2ZSBwYXRoIGludG8gYW4g
YWJzb2x1dGUgcGF0aC4KLUZpbGVQYXRoIEdldEFic29sdXRlUGF0aE9mKGNvbnN0IEZpbGVQYXRo
JiByZWxhdGl2ZV9wYXRoKSB7Ci0gIHJldHVybiBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBh
dGg6OkdldEN1cnJlbnREaXIoKSwgcmVsYXRpdmVfcGF0aCk7Ci19Ci0KLS8vIFRlc3RpbmcgVW5p
dFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQvR2V0T3V0cHV0RmlsZS4KLQotVEVTVChYbWxP
dXRwdXRUZXN0LCBHZXRPdXRwdXRGb3JtYXREZWZhdWx0KSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0
KSA9ICIiOwotICBFWFBFQ1RfU1RSRVEoIiIsIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9y
bWF0KCkuY19zdHIoKSk7Ci19Ci0KLVRFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0Rm9ybWF0
KSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6ZmlsZW5hbWUiOwotICBFWFBFQ1RfU1RS
RVEoInhtbCIsIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCkuY19zdHIoKSk7Ci19
Ci0KLVRFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0RmlsZURlZmF1bHQpIHsKLSAgR1RFU1Rf
RkxBRyhvdXRwdXQpID0gIiI7Ci0gIEVYUEVDVF9TVFJFUShHZXRBYnNvbHV0ZVBhdGhPZihGaWxl
UGF0aCgidGVzdF9kZXRhaWwueG1sIikpLmNfc3RyKCksCi0gICAgICAgICAgICAgICBVbml0VGVz
dE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOwotfQotCi1U
RVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZpbGVTaW5nbGVGaWxlKSB7Ci0gIEdURVNUX0ZM
QUcob3V0cHV0KSA9ICJ4bWw6ZmlsZW5hbWUuYWJjIjsKLSAgRVhQRUNUX1NUUkVRKEdldEFic29s
dXRlUGF0aE9mKEZpbGVQYXRoKCJmaWxlbmFtZS5hYmMiKSkuY19zdHIoKSwKLSAgICAgICAgICAg
ICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIo
KSk7Ci19Ci0KLVRFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0RmlsZUZyb21EaXJlY3RvcnlQ
YXRoKSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6cGF0aCIgR1RFU1RfUEFUSF9TRVBf
OwotICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3RlZF9vdXRwdXRfZmlsZSA9Ci0gICAgICBHZXRB
YnNvbHV0ZVBhdGhPZigKLSAgICAgICAgICBGaWxlUGF0aChzdGQ6OnN0cmluZygicGF0aCIpICsg
R1RFU1RfUEFUSF9TRVBfICsKLSAgICAgICAgICAgICAgICAgICBHZXRDdXJyZW50RXhlY3V0YWJs
ZU5hbWUoKS5jX3N0cigpICsgIi54bWwiKSkuY19zdHIoKTsKLSAgY29uc3QgU3RyaW5nJiBvdXRw
dXRfZmlsZSA9IFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7
Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICBFWFBFQ1RfU1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1
dF9maWxlLmNfc3RyKCksIG91dHB1dF9maWxlLmNfc3RyKCkpOwotI2Vsc2UKLSAgRVhQRUNUX0VR
KGV4cGVjdGVkX291dHB1dF9maWxlLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKLSNlbmRpZgotfQot
Ci1URVNUKE91dHB1dEZpbGVIZWxwZXJzVGVzdCwgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKSB7
Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGV4ZV9zdHIgPSBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUo
KS5jX3N0cigpOwotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgY29uc3QgYm9vbCBzdWNjZXNzID0K
LSAgICAgIF9zdHJjbXBpKCJndGVzdC1vcHRpb25zX3Rlc3QiLCBleGVfc3RyLmNfc3RyKCkpID09
IDAgfHwKLSAgICAgIF9zdHJjbXBpKCJndGVzdC1vcHRpb25zLWV4X3Rlc3QiLCBleGVfc3RyLmNf
c3RyKCkpID09IDAgfHwKLSAgICAgIF9zdHJjbXBpKCJndGVzdF9hbGxfdGVzdCIsIGV4ZV9zdHIu
Y19zdHIoKSkgPT0gMCB8fAotICAgICAgX3N0cmNtcGkoImd0ZXN0X2RsbF90ZXN0IiwgZXhlX3N0
ci5jX3N0cigpKSA9PSAwOwotI2Vsc2UKLSAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHJlbW92
ZSB0aGUgaGFyZC1jb2RlZCAibHQtIiBwcmVmaXggd2hlbgotICAvLyAgIENoYW5kbGVyIENhcnJ1
dGgncyBsaWJ0b29sIHJlcGxhY2VtZW50IGlzIHJlYWR5LgotICBjb25zdCBib29sIHN1Y2Nlc3Mg
PQotICAgICAgZXhlX3N0ciA9PSAiZ3Rlc3Qtb3B0aW9uc190ZXN0IiB8fAotICAgICAgZXhlX3N0
ciA9PSAiZ3Rlc3RfYWxsX3Rlc3QiIHx8Ci0gICAgICBleGVfc3RyID09ICJsdC1ndGVzdF9hbGxf
dGVzdCIgfHwKLSAgICAgIGV4ZV9zdHIgPT0gImd0ZXN0X2RsbF90ZXN0IjsKLSNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUwotICBpZiAoIXN1Y2Nlc3MpCi0gICAgRkFJTCgpIDw8ICJHZXRDdXJy
ZW50RXhlY3V0YWJsZU5hbWUoKSByZXR1cm5zICIgPDwgZXhlX3N0cjsKLX0KLQotY2xhc3MgWG1s
T3V0cHV0Q2hhbmdlRGlyVGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBvcmlnaW5hbF93b3JraW5nX2Rpcl8gPSBGaWxlUGF0aDo6
R2V0Q3VycmVudERpcigpOwotICAgIHBvc2l4OjpDaERpcigiLi4iKTsKLSAgICAvLyBUaGlzIHdp
bGwgbWFrZSB0aGUgdGVzdCBmYWlsIGlmIHJ1biBmcm9tIHRoZSByb290IGRpcmVjdG9yeS4KLSAg
ICBFWFBFQ1RfU1RSTkUob3JpZ2luYWxfd29ya2luZ19kaXJfLmNfc3RyKCksCi0gICAgICAgICAg
ICAgICAgIEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkuY19zdHIoKSk7Ci0gIH0KLQotICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgcG9zaXg6OkNoRGlyKG9yaWdpbmFsX3dvcmtpbmdf
ZGlyXy5jX3N0cigpKTsKLSAgfQotCi0gIEZpbGVQYXRoIG9yaWdpbmFsX3dvcmtpbmdfZGlyXzsK
LX07Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29y
a2luZ0RpcldpdGhEZWZhdWx0KSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICIiOwotICBFWFBF
Q1RfU1RSRVEoRmlsZVBhdGg6OkNvbmNhdFBhdGhzKG9yaWdpbmFsX3dvcmtpbmdfZGlyXywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgidGVzdF9kZXRhaWwu
eG1sIikpLmNfc3RyKCksCi0gICAgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29s
dXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOwotfQotCi1URVNUX0YoWG1sT3V0cHV0Q2hh
bmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoRGVmYXVsdFhNTCkgewot
ICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sIjsKLSAgRVhQRUNUX1NUUkVRKEZpbGVQYXRoOjpD
b25jYXRQYXRocyhvcmlnaW5hbF93b3JraW5nX2Rpcl8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRmlsZVBhdGgoInRlc3RfZGV0YWlsLnhtbCIpKS5jX3N0cigpLAotICAg
ICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUo
KS5jX3N0cigpKTsKLX0KLQotVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZl
T3JpZ2luYWxXb3JraW5nRGlyV2l0aFJlbGF0aXZlRmlsZSkgewotICBHVEVTVF9GTEFHKG91dHB1
dCkgPSAieG1sOmZpbGVuYW1lLmFiYyI7Ci0gIEVYUEVDVF9TVFJFUShGaWxlUGF0aDo6Q29uY2F0
UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZpbGVQYXRoKCJmaWxlbmFtZS5hYmMiKSkuY19zdHIoKSwKLSAgICAgICAgICAg
ICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIo
KSk7Ci19Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFs
V29ya2luZ0RpcldpdGhSZWxhdGl2ZVBhdGgpIHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInht
bDpwYXRoIiBHVEVTVF9QQVRIX1NFUF87Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdGVkX291
dHB1dF9maWxlID0KLSAgICAgIEZpbGVQYXRoOjpDb25jYXRQYXRocygKLSAgICAgICAgICBvcmln
aW5hbF93b3JraW5nX2Rpcl8sCi0gICAgICAgICAgRmlsZVBhdGgoc3RkOjpzdHJpbmcoInBhdGgi
KSArIEdURVNUX1BBVEhfU0VQXyArCi0gICAgICAgICAgICAgICAgICAgR2V0Q3VycmVudEV4ZWN1
dGFibGVOYW1lKCkuY19zdHIoKSArICIueG1sIikpLmNfc3RyKCk7Ci0gIGNvbnN0IFN0cmluZyYg
b3V0cHV0X2ZpbGUgPSBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0Rmls
ZSgpOwotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgRVhQRUNUX1NUUkNBU0VFUShleHBlY3RlZF9v
dXRwdXRfZmlsZS5jX3N0cigpLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKLSNlbHNlCi0gIEVYUEVD
VF9FUShleHBlY3RlZF9vdXRwdXRfZmlsZSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7Ci0jZW5kaWYK
LX0KLQotVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3Jr
aW5nRGlyV2l0aEFic29sdXRlRmlsZSkgewotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgR1RFU1Rf
RkxBRyhvdXRwdXQpID0gInhtbDpjOlxcdG1wXFxmaWxlbmFtZS5hYmMiOwotICBFWFBFQ1RfU1RS
RVEoRmlsZVBhdGgoImM6XFx0bXBcXGZpbGVuYW1lLmFiYyIpLmNfc3RyKCksCi0gICAgICAgICAg
ICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3Ry
KCkpOwotI2Vsc2UKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0ieG1sOi90bXAvZmlsZW5hbWUuYWJj
IjsKLSAgRVhQRUNUX1NUUkVRKEZpbGVQYXRoKCIvdG1wL2ZpbGVuYW1lLmFiYyIpLmNfc3RyKCks
Ci0gICAgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0
RmlsZSgpLmNfc3RyKCkpOwotI2VuZGlmCi19Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJU
ZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhBYnNvbHV0ZVBhdGgpIHsKLSNpZiBH
VEVTVF9PU19XSU5ET1dTCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIHBhdGggPSAiYzpcXHRtcFxcIjsK
LSNlbHNlCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIHBhdGggPSAiL3RtcC8iOwotI2VuZGlmCi0KLSAg
R1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbDoiICsgcGF0aDsKLSAgY29uc3Qgc3RkOjpzdHJpbmcg
ZXhwZWN0ZWRfb3V0cHV0X2ZpbGUgPQotICAgICAgcGF0aCArIEdldEN1cnJlbnRFeGVjdXRhYmxl
TmFtZSgpLmNfc3RyKCkgKyAiLnhtbCI7Ci0gIGNvbnN0IFN0cmluZyYgb3V0cHV0X2ZpbGUgPSBV
bml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpOwotCi0jaWYgR1RF
U1RfT1NfV0lORE9XUwotICBFWFBFQ1RfU1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxlLmNf
c3RyKCksIG91dHB1dF9maWxlLmNfc3RyKCkpOwotI2Vsc2UKLSAgRVhQRUNUX0VRKGV4cGVjdGVk
X291dHB1dF9maWxlLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKLSNlbmRpZgotfQotCi19ICAvLyBu
YW1lc3BhY2UKLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIHRlc3Rp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0t
dGVzdDJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0t
dGVzdDJfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NiNmNmYWM5ZTc2
YjgyN2YxN2FlMTE4MjllMjM2ZDZmOTdlZTY0Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBh
cmFtLXRlc3QyX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vLyBDb3B5
cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1
dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2bGFk
bEBnb29nbGUuY29tIChWbGFkIExvc2V2KQotLy8KLS8vIFRlc3RzIGZvciBHb29nbGUgVGVzdCBp
dHNlbGYuICBUaGlzIHZlcmlmaWVzIHRoYXQgdGhlIGJhc2ljIGNvbnN0cnVjdHMgb2YKLS8vIEdv
b2dsZSBUZXN0IHdvcmsuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0jaW5jbHVkZSAi
dGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaCIKLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNU
Ci0KLXVzaW5nIDo6dGVzdGluZzo6VmFsdWVzOwotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
UGFyYW1HZW5lcmF0b3I7Ci0KLS8vIFRlc3RzIHRoYXQgZ2VuZXJhdG9ycyBkZWZpbmVkIGluIGEg
ZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXQKLS8vIGFyZSBmdW5jdGlvbmFsLiBUaGUgdGVzdCB1
c2luZyBleHRlcm5fZ2VuIGlzIGRlZmluZWQKLS8vIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5j
Yy4KLVBhcmFtR2VuZXJhdG9yPGludD4gZXh0ZXJuX2dlbiA9IFZhbHVlcygzMyk7Ci0KLS8vIFRl
c3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUg
dHJhbnNsYXRpb24gdW5pdAotLy8gYW5kIGluc3RhbnRpYXRlZCBpbiBhbm90aGVyLiBUaGUgdGVz
dCBpcyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYwotLy8gYW5kIEV4dGVybmFs
SW5zdGFudGlhdGlvblRlc3QgZml4dHVyZSBjbGFzcyBpcyBkZWZpbmVkIGluCi0vLyBndGVzdC1w
YXJhbS10ZXN0X3Rlc3QuaC4KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKE11bHRpcGxlc09mMzMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDMzLCA2NikpOwotCi0vLyBUZXN0cyB0aGF0IGEg
cGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGluc3RhbnRpYXRlZAotLy8gaW4gbXVsdGlw
bGUgdHJhbnNsYXRpb24gdW5pdHMuIEFub3RoZXIgaW5zdGFudGlhdGlvbiBpcyBkZWZpbmVkCi0v
LyBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MgYW5kIEluc3RhbnRpYXRpb25Jbk11bHRpcGxl
VHJhbnNsYWlvblVuaXRzVGVzdAotLy8gZml4dHVyZSBpcyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFt
LXRlc3RfdGVzdC5oCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5jZTIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rl
c3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNDIqMywgNDIqNCwgNDIqNSkpOwot
Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkMGEwZTczNWMwYjk4OGVmMWEyMmI3ZDdhZTY5MDI3MDE4YmRiOGNi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmNjCisrKyAvZGV2L251
bGwKQEAgLTEsODM1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0v
LwotLy8gVGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZi4gVGhpcyBmaWxlIHZlcmlmaWVzIHRo
YXQgdGhlIHBhcmFtZXRlcgotLy8gZ2VuZXJhdG9ycyBvYmplY3RzIHByb2R1Y2UgY29ycmVjdCBw
YXJhbWV0ZXIgc2VxdWVuY2VzIGFuZCB0aGF0Ci0vLyBHb29nbGUgVGVzdCBydW50aW1lIGluc3Rh
bnRpYXRlcyBjb3JyZWN0IHRlc3RzIGZyb20gdGhvc2Ugc2VxdWVuY2VzLgotCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLSNpbmNsdWRlIDxh
bGdvcml0aG0+Ci0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8bGlzdD4KLSNpbmNsdWRl
IDxzc3RyZWFtPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLS8vIFRv
IGluY2x1ZGUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmguCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFU
SU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIiAgLy8gZm9yIFVuaXRU
ZXN0T3B0aW9ucwotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi0jaW5jbHVkZSAidGVz
dC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaCIKLQotdXNpbmcgOjpzdGQ6OnZlY3RvcjsKLXVzaW5n
IDo6c3RkOjpzb3J0OwotCi11c2luZyA6OnRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVu
dDsKLXVzaW5nIDo6dGVzdGluZzo6Qm9vbDsKLXVzaW5nIDo6dGVzdGluZzo6TWVzc2FnZTsKLXVz
aW5nIDo6dGVzdGluZzo6UmFuZ2U7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW07Ci11
c2luZyA6OnRlc3Rpbmc6OlZhbHVlczsKLXVzaW5nIDo6dGVzdGluZzo6VmFsdWVzSW47Ci0KLSNp
ZiBHVEVTVF9IQVNfQ09NQklORQotdXNpbmcgOjp0ZXN0aW5nOjpDb21iaW5lOwotdXNpbmcgOjpz
dGQ6OnRyMTo6Z2V0OwotdXNpbmcgOjpzdGQ6OnRyMTo6bWFrZV90dXBsZTsKLXVzaW5nIDo6c3Rk
Ojp0cjE6OnR1cGxlOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQotCi11c2luZyA6OnRl
c3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVyYXRvcjsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJu
YWw6OlVuaXRUZXN0T3B0aW9uczsKLQotLy8gUHJpbnRzIGEgdmFsdWUgdG8gYSBzdHJpbmcuCi0v
LwotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHJlbW92ZSBQcmludFZhbHVlKCkgd2hlbiB3ZSBt
b3ZlIG1hdGNoZXJzIGFuZAotLy8gRVhQRUNUX1RIQVQoKSBmcm9tIEdvb2dsZSBNb2NrIHRvIEdv
b2dsZSBUZXN0LiAgQXQgdGhhdCB0aW1lLCB3ZQotLy8gY2FuIHdyaXRlIEVYUEVDVF9USEFUKHgs
IEVxKHkpKSB0byBjb21wYXJlIHR3byB0dXBsZXMgeCBhbmQgeSwgYXMKLS8vIEVYUEVDVF9USEFU
KCkgYW5kIHRoZSBtYXRjaGVycyBrbm93IGhvdyB0byBwcmludCB0dXBsZXMuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLTo6c3RkOjpzdHJpbmcgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSkgewot
ICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKLSAgc3RyZWFtIDw8IHZhbHVlOwotICByZXR1
cm4gc3RyZWFtLnN0cigpOwotfQotCi0jaWYgR1RFU1RfSEFTX0NPTUJJTkUKLQotLy8gVGhlc2Ug
b3ZlcmxvYWRzIGFsbG93IHByaW50aW5nIHR1cGxlcyBpbiBvdXIgdGVzdHMuICBXZSBjYW5ub3QK
LS8vIGRlZmluZSBhbiBvcGVyYXRvcjw8IGZvciB0dXBsZXMsIGFzIHRoYXQgZGVmaW5pdGlvbiBu
ZWVkcyB0byBiZSBpbgotLy8gdGhlIHN0ZCBuYW1lc3BhY2UgaW4gb3JkZXIgdG8gYmUgcGlja2Vk
IHVwIGJ5IEdvb2dsZSBUZXN0IHZpYQotLy8gQXJndW1lbnQtRGVwZW5kZW50IExvb2t1cCwgeWV0
IGRlZmluaW5nIGFueXRoaW5nIGluIHRoZSBzdGQKLS8vIG5hbWVzcGFjZSBpbiBub24tU1RMIGNv
ZGUgaXMgdW5kZWZpbmVkIGJlaGF2aW9yLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyPgotOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKGNvbnN0IHR1cGxlPFQxLCBUMj4mIHZh
bHVlKSB7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOwotICBzdHJlYW0gPDwgIigiIDw8
IGdldDwwPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8MT4odmFsdWUpIDw8ICIpIjsKLSAgcmV0dXJu
IHN0cmVhbS5zdHIoKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDM+Ci06OnN0ZDo6c3RyaW5nIFByaW50VmFsdWUoY29uc3QgdHVwbGU8VDEsIFQy
LCBUMz4mIHZhbHVlKSB7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOwotICBzdHJlYW0g
PDwgIigiIDw8IGdldDwwPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8MT4odmFsdWUpCi0gICAgICAg
ICA8PCAiLCAiPDwgZ2V0PDI+KHZhbHVlKSA8PCAiKSI7Ci0gIHJldHVybiBzdHJlYW0uc3RyKCk7
Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0
eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1l
IFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMD4KLTo6c3RkOjpzdHJp
bmcgUHJpbnRWYWx1ZSgKLSAgICBjb25zdCB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTA+JiB2YWx1ZSkgewotICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsK
LSAgc3RyZWFtIDw8ICIoIiA8PCBnZXQ8MD4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDE+KHZhbHVl
KQotICAgICAgICAgPDwgIiwgIjw8IGdldDwyPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8Mz4odmFs
dWUpCi0gICAgICAgICA8PCAiLCAiPDwgZ2V0PDQ+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDw1Pih2
YWx1ZSkKLSAgICAgICAgIDw8ICIsICI8PCBnZXQ8Nj4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDc+
KHZhbHVlKQotICAgICAgICAgPDwgIiwgIjw8IGdldDw4Pih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8
OT4odmFsdWUpIDw8ICIpIjsKLSAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKLX0KLQotI2VuZGlmICAv
LyBHVEVTVF9IQVNfQ09NQklORQotCi0vLyBWZXJpZmllcyB0aGF0IGEgc2VxdWVuY2UgZ2VuZXJh
dGVkIGJ5IHRoZSBnZW5lcmF0b3IgYW5kIGFjY2Vzc2VkCi0vLyB2aWEgdGhlIGl0ZXJhdG9yIG9i
amVjdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBvbmUgdXNpbmcgR29vZ2xlIFRlc3QKLS8vIGFzc2Vy
dGlvbnMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+Ci12b2lkIFZlcmlmeUdlbmVy
YXRvcihjb25zdCBQYXJhbUdlbmVyYXRvcjxUPiYgZ2VuZXJhdG9yLAotICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVCAoJmV4cGVjdGVkX3ZhbHVlcylbTl0pIHsKLSAgdHlwZW5hbWUgUGFyYW1H
ZW5lcmF0b3I8VD46Oml0ZXJhdG9yIGl0ID0gZ2VuZXJhdG9yLmJlZ2luKCk7Ci0gIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgTjsgKytpKSB7Ci0gICAgQVNTRVJUX0ZBTFNFKGl0ID09IGdlbmVyYXRv
ci5lbmQoKSkKLSAgICAgICAgPDwgIkF0IGVsZW1lbnQgIiA8PCBpIDw8ICIgd2hlbiBhY2Nlc3Np
bmcgdmlhIGFuIGl0ZXJhdG9yICIKLSAgICAgICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUgY29weSBj
b25zdHJ1Y3Rvci5cbiI7Ci0gICAgLy8gV2UgY2Fubm90IHVzZSBFWFBFQ1RfRVEoKSBoZXJlIGFz
IHRoZSB2YWx1ZXMgbWF5IGJlIHR1cGxlcywKLSAgICAvLyB3aGljaCBkb24ndCBzdXBwb3J0IDw8
LgotICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkX3ZhbHVlc1tpXSA9PSAqaXQpCi0gICAgICAgIDw8
ICJ3aGVyZSBpIGlzICIgPDwgaQotICAgICAgICA8PCAiLCBleHBlY3RlZF92YWx1ZXNbaV0gaXMg
IiA8PCBQcmludFZhbHVlKGV4cGVjdGVkX3ZhbHVlc1tpXSkKLSAgICAgICAgPDwgIiwgKml0IGlz
ICIgPDwgUHJpbnRWYWx1ZSgqaXQpCi0gICAgICAgIDw8ICIsIGFuZCAnaXQnIGlzIGFuIGl0ZXJh
dG9yIGNyZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rvci5cbiI7Ci0gICAgaXQrKzsKLSAg
fQotICBFWFBFQ1RfVFJVRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpCi0gICAgICAgIDw8ICJBdCB0
aGUgcHJlc3VtZWQgZW5kIG9mIHNlcXVlbmNlIHdoZW4gYWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRv
ciAiCi0gICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhlIGNvcHkgY29uc3RydWN0b3IuXG4iOwot
Ci0gIC8vIFRlc3QgdGhlIGl0ZXJhdG9yIGFzc2lnbm1lbnQuIFRoZSBmb2xsb3dpbmcgbGluZXMg
dmVyaWZ5IHRoYXQKLSAgLy8gdGhlIHNlcXVlbmNlIGFjY2Vzc2VkIHZpYSBhbiBpdGVyYXRvciBp
bml0aWFsaXplZCB2aWEgdGhlCi0gIC8vIGFzc2lnbm1lbnQgb3BlcmF0b3IgKGFzIG9wcG9zZWQg
dG8gYSBjb3B5IGNvbnN0cnVjdG9yKSBtYXRjaGVzCi0gIC8vIGp1c3QgdGhlIHNhbWUuCi0gIGl0
ID0gZ2VuZXJhdG9yLmJlZ2luKCk7Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgTjsgKytpKSB7
Ci0gICAgQVNTRVJUX0ZBTFNFKGl0ID09IGdlbmVyYXRvci5lbmQoKSkKLSAgICAgICAgPDwgIkF0
IGVsZW1lbnQgIiA8PCBpIDw8ICIgd2hlbiBhY2Nlc3NpbmcgdmlhIGFuIGl0ZXJhdG9yICIKLSAg
ICAgICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUgYXNzaWdubWVudCBvcGVyYXRvci5cbiI7Ci0gICAg
RVhQRUNUX1RSVUUoZXhwZWN0ZWRfdmFsdWVzW2ldID09ICppdCkKLSAgICAgICAgPDwgIndoZXJl
IGkgaXMgIiA8PCBpCi0gICAgICAgIDw8ICIsIGV4cGVjdGVkX3ZhbHVlc1tpXSBpcyAiIDw8IFBy
aW50VmFsdWUoZXhwZWN0ZWRfdmFsdWVzW2ldKQotICAgICAgICA8PCAiLCAqaXQgaXMgIiA8PCBQ
cmludFZhbHVlKCppdCkKLSAgICAgICAgPDwgIiwgYW5kICdpdCcgaXMgYW4gaXRlcmF0b3IgY3Jl
YXRlZCB3aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9yLlxuIjsKLSAgICBpdCsrOwotICB9Ci0gIEVY
UEVDVF9UUlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSkKLSAgICAgICAgPDwgIkF0IHRoZSBwcmVz
dW1lZCBlbmQgb2Ygc2VxdWVuY2Ugd2hlbiBhY2Nlc3NpbmcgdmlhIGFuIGl0ZXJhdG9yICIKLSAg
ICAgICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUgYXNzaWdubWVudCBvcGVyYXRvci5cbiI7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQ+JiBnZW5lcmF0b3IpIHsKLSAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0
b3I8VD46Oml0ZXJhdG9yIGl0ID0gZ2VuZXJhdG9yLmJlZ2luKCk7Ci0gIEVYUEVDVF9UUlVFKGl0
ID09IGdlbmVyYXRvci5lbmQoKSk7Ci0KLSAgaXQgPSBnZW5lcmF0b3IuYmVnaW4oKTsKLSAgRVhQ
RUNUX1RSVUUoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKTsKLX0KLQotLy8gR2VuZXJhdG9yIHRlc3Rz
LiBUaGV5IHRlc3QgdGhhdCBlYWNoIG9mIHRoZSBwcm92aWRlZCBnZW5lcmF0b3IgZnVuY3Rpb25z
Ci0vLyBnZW5lcmF0ZXMgYW4gZXhwZWN0ZWQgc2VxdWVuY2Ugb2YgdmFsdWVzLiBUaGUgZ2VuZXJh
bCB0ZXN0IHBhdHRlcm4KLS8vIGluc3RhbnRpYXRlcyBhIGdlbmVyYXRvciB1c2luZyBvbmUgb2Yg
dGhlIGdlbmVyYXRvciBmdW5jdGlvbnMsCi0vLyBjaGVja3MgdGhlIHNlcXVlbmNlIHByb2R1Y2Vk
IGJ5IHRoZSBnZW5lcmF0b3IgdXNpbmcgaXRzIGl0ZXJhdG9yIEFQSSwKLS8vIGFuZCB0aGVuIHJl
c2V0cyB0aGUgaXRlcmF0b3IgYmFjayB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZXF1ZW5jZQot
Ly8gYW5kIGNoZWNrcyB0aGUgc2VxdWVuY2UgYWdhaW4uCi0KLS8vIFRlc3RzIHRoYXQgaXRlcmF0
b3JzIHByb2R1Y2VkIGJ5IGdlbmVyYXRvciBmdW5jdGlvbnMgY29uZm9ybSB0byB0aGUKLS8vIEZv
cndhcmRJdGVyYXRvciBjb25jZXB0LgotVEVTVChJdGVyYXRvclRlc3QsIFBhcmFtSXRlcmF0b3JD
b25mb3Jtc1RvRm9yd2FyZEl0ZXJhdG9yQ29uY2VwdCkgewotICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDEwKTsKLSAgUGFyYW1HZW5lcmF0b3I8aW50Pjo6aXRlcmF0
b3IgaXQgPSBnZW4uYmVnaW4oKTsKLQotICAvLyBWZXJpZmllcyB0aGF0IGl0ZXJhdG9yIGluaXRp
YWxpemF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkLgotICBQYXJhbUdlbmVyYXRvcjxpbnQ+OjppdGVy
YXRvciBpdDIgPSBpdDsKLSAgRVhQRUNUX1RSVUUoKml0ID09ICppdDIpIDw8ICJJbml0aWFsaXpl
ZCBpdGVyYXRvcnMgbXVzdCBwb2ludCB0byB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgImVsZW1lbnQgc2FtZSBhcyBpdHMgc291cmNlIHBvaW50cyB0byI7Ci0KLSAgLy8gVmVy
aWZpZXMgdGhhdCBpdGVyYXRvciBhc3NpZ25tZW50IHdvcmtzIGFzIGV4cGVjdGVkLgotICBpdCsr
OwotICBFWFBFQ1RfRkFMU0UoKml0ID09ICppdDIpOwotICBpdDIgPSBpdDsKLSAgRVhQRUNUX1RS
VUUoKml0ID09ICppdDIpIDw8ICJBc3NpZ25lZCBpdGVyYXRvcnMgbXVzdCBwb2ludCB0byB0aGUg
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgImVsZW1lbnQgc2FtZSBhcyBpdHMgc291
cmNlIHBvaW50cyB0byI7Ci0KLSAgLy8gVmVyaWZpZXMgdGhhdCBwcmVmaXggb3BlcmF0b3IrKygp
IHJldHVybnMgKnRoaXMuCi0gIEVYUEVDVF9FUSgmaXQsICYoKytpdCkpIDw8ICJSZXN1bHQgb2Yg
dGhlIHByZWZpeCBvcGVyYXRvcisrIG11c3QgYmUgIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCAicmVmZXIgdG8gdGhlIG9yaWdpbmFsIG9iamVjdCI7Ci0KLSAgLy8gVmVyaWZpZXMgdGhh
dCB0aGUgcmVzdWx0IG9mIHRoZSBwb3N0Zml4IG9wZXJhdG9yKysgcG9pbnRzIHRvIHRoZSB2YWx1
ZQotICAvLyBwb2ludGVkIHRvIGJ5IHRoZSBvcmlnaW5hbCBpdGVyYXRvci4KLSAgaW50IG9yaWdp
bmFsX3ZhbHVlID0gKml0OyAgLy8gSGF2ZSB0byBjb21wdXRlIGl0IG91dHNpZGUgb2YgbWFjcm8g
Y2FsbCB0byBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1bmFmZmVjdGVkIGJ5
IHRoZSBwYXJhbWV0ZXIgZXZhbHVhdGlvbiBvcmRlci4KLSAgRVhQRUNUX0VRKG9yaWdpbmFsX3Zh
bHVlLCAqKGl0KyspKTsKLQotICAvLyBWZXJpZmllcyB0aGF0IHByZWZpeCBhbmQgcG9zdGZpeCBv
cGVyYXRvcisrKCkgYWR2YW5jZSBhbiBpdGVyYXRvcgotICAvLyBhbGwgdGhlIHNhbWUuCi0gIGl0
MiA9IGl0OwotICBpdCsrOwotICArK2l0MjsKLSAgRVhQRUNUX1RSVUUoKml0ID09ICppdDIpOwot
fQotCi0vLyBUZXN0cyB0aGF0IFJhbmdlKCkgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5j
ZS4KLVRFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZVdpdGhEZWZhdWx0U3RlcCkgewotICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDMpOwotICBjb25zdCBpbnQgZXhwZWN0
ZWRfdmFsdWVzW10gPSB7MCwgMSwgMn07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVk
X3ZhbHVlcyk7Ci19Ci0KLS8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBSYW5nZSgpIGdlbmVyYXRl
cyB0aGUgc2luZ2xlIGVsZW1lbnQgc2VxdWVuY2UKLS8vIGFzIGV4cGVjdGVkIHdoZW4gcHJvdmlk
ZWQgd2l0aCByYW5nZSBsaW1pdHMgdGhhdCBhcmUgZXF1YWwuCi1URVNUKFJhbmdlVGVzdCwgSW50
UmFuZ2VTaW5nbGVWYWx1ZSkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJh
bmdlKDAsIDEpOwotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MH07Ci0gIFZlcmlm
eUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIEVkZ2UgY2FzZS4gVGVz
dHMgdGhhdCBSYW5nZSgpIHdpdGggZ2VuZXJhdGVzIGVtcHR5IHNlcXVlbmNlIHdoZW4KLS8vIHN1
cHBsaWVkIHdpdGggYW4gZW1wdHkgcmFuZ2UuCi1URVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VFbXB0
eSkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDApOwotICBW
ZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUmFuZ2UoKSB3
aXRoIGN1c3RvbSBzdGVwIChncmVhdGVyIHRoZW4gb25lKSBnZW5lcmF0ZXMKLS8vIHRoZSBleHBl
Y3RlZCBzZXF1ZW5jZS4KLVRFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZVdpdGhDdXN0b21TdGVwKSB7
Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgOSwgMyk7Ci0gIGNv
bnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHswLCAzLCA2fTsKLSAgVmVyaWZ5R2VuZXJhdG9y
KGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBSYW5nZSgpIHdpdGgg
Y3VzdG9tIHN0ZXAgKGdyZWF0ZXIgdGhlbiBvbmUpIGdlbmVyYXRlcwotLy8gdGhlIGV4cGVjdGVk
IHNlcXVlbmNlIHdoZW4gdGhlIGxhc3QgZWxlbWVudCBkb2VzIG5vdCBmYWxsIG9uIHRoZQotLy8g
dXBwZXIgcmFuZ2UgbGltaXQuIFNlcXVlbmNlcyBnZW5lcmF0ZWQgYnkgUmFuZ2UoKSBtdXN0IG5v
dCBoYXZlCi0vLyBlbGVtZW50cyBiZXlvbmQgdGhlIHJhbmdlIGxpbWl0cy4KLVRFU1QoUmFuZ2VU
ZXN0LCBJbnRSYW5nZVdpdGhDdXN0b21TdGVwT3ZlclVwcGVyQm91bmQpIHsKLSAgY29uc3QgUGFy
YW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCA0LCAzKTsKLSAgY29uc3QgaW50IGV4cGVj
dGVkX3ZhbHVlc1tdID0gezAsIDN9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92
YWx1ZXMpOwotfQotCi0vLyBWZXJpZmllcyB0aGF0IFJhbmdlIHdvcmtzIHdpdGggdXNlci1kZWZp
bmVkIHR5cGVzIHRoYXQgZGVmaW5lCi0vLyBjb3B5IGNvbnN0cnVjdG9yLCBvcGVyYXRvcj0oKSwg
b3BlcmF0b3IrKCksIGFuZCBvcGVyYXRvcjwoKS4KLWNsYXNzIERvZ0FkZGVyIHsKLSBwdWJsaWM6
Ci0gIGV4cGxpY2l0IERvZ0FkZGVyKGNvbnN0IGNoYXIqIGFfdmFsdWUpIDogdmFsdWVfKGFfdmFs
dWUpIHt9Ci0gIERvZ0FkZGVyKGNvbnN0IERvZ0FkZGVyJiBvdGhlcikgOiB2YWx1ZV8ob3RoZXIu
dmFsdWVfLmNfc3RyKCkpIHt9Ci0KLSAgRG9nQWRkZXIgb3BlcmF0b3I9KGNvbnN0IERvZ0FkZGVy
JiBvdGhlcikgewotICAgIGlmICh0aGlzICE9ICZvdGhlcikKLSAgICAgIHZhbHVlXyA9IG90aGVy
LnZhbHVlXzsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLSAgRG9nQWRkZXIgb3BlcmF0b3IrKGNv
bnN0IERvZ0FkZGVyJiBvdGhlcikgY29uc3QgewotICAgIE1lc3NhZ2UgbXNnOwotICAgIG1zZyA8
PCB2YWx1ZV8uY19zdHIoKSA8PCBvdGhlci52YWx1ZV8uY19zdHIoKTsKLSAgICByZXR1cm4gRG9n
QWRkZXIobXNnLkdldFN0cmluZygpLmNfc3RyKCkpOwotICB9Ci0gIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IERvZ0FkZGVyJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiB2YWx1ZV8gPCBvdGhlci52
YWx1ZV87Ci0gIH0KLSAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nJiB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQotCi0gcHJpdmF0ZToKLSAgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6U3RyaW5nIHZhbHVlXzsKLX07Ci0KLVRFU1QoUmFuZ2VUZXN0LCBXb3Jrc1dpdGhBQ3Vz
dG9tVHlwZSkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxEb2dBZGRlcj4gZ2VuID0KLSAgICAg
IFJhbmdlKERvZ0FkZGVyKCJjYXQiKSwgRG9nQWRkZXIoImNhdGRvZ2RvZyIpLCBEb2dBZGRlcigi
ZG9nIikpOwotICBQYXJhbUdlbmVyYXRvcjxEb2dBZGRlcj46Oml0ZXJhdG9yIGl0ID0gZ2VuLmJl
Z2luKCk7Ci0KLSAgQVNTRVJUX0ZBTFNFKGl0ID09IGdlbi5lbmQoKSk7Ci0gIEVYUEVDVF9TVFJF
USgiY2F0IiwgaXQtPnZhbHVlKCkuY19zdHIoKSk7Ci0KLSAgQVNTRVJUX0ZBTFNFKCsraXQgPT0g
Z2VuLmVuZCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJjYXRkb2ciLCBpdC0+dmFsdWUoKS5jX3N0cigp
KTsKLQotICBFWFBFQ1RfVFJVRSgrK2l0ID09IGdlbi5lbmQoKSk7Ci19Ci0KLWNsYXNzIEludFdy
YXBwZXIgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgSW50V3JhcHBlcihpbnQgYV92YWx1ZSkgOiB2
YWx1ZV8oYV92YWx1ZSkge30KLSAgSW50V3JhcHBlcihjb25zdCBJbnRXcmFwcGVyJiBvdGhlcikg
OiB2YWx1ZV8ob3RoZXIudmFsdWVfKSB7fQotCi0gIEludFdyYXBwZXIgb3BlcmF0b3I9KGNvbnN0
IEludFdyYXBwZXImIG90aGVyKSB7Ci0gICAgdmFsdWVfID0gb3RoZXIudmFsdWVfOwotICAgIHJl
dHVybiAqdGhpczsKLSAgfQotICAvLyBvcGVyYXRvcisoKSBhZGRzIGEgZGlmZmVyZW50IHR5cGUu
Ci0gIEludFdyYXBwZXIgb3BlcmF0b3IrKGludCBvdGhlcikgY29uc3QgeyByZXR1cm4gSW50V3Jh
cHBlcih2YWx1ZV8gKyBvdGhlcik7IH0KLSAgYm9vbCBvcGVyYXRvcjwoY29uc3QgSW50V3JhcHBl
ciYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gdmFsdWVfIDwgb3RoZXIudmFsdWVfOwotICB9
Ci0gIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQotCi0gcHJpdmF0ZToKLSAg
aW50IHZhbHVlXzsKLX07Ci0KLVRFU1QoUmFuZ2VUZXN0LCBXb3Jrc1dpdGhBQ3VzdG9tVHlwZVdp
dGhEaWZmZXJlbnRJbmNyZW1lbnRUeXBlKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPEludFdy
YXBwZXI+IGdlbiA9IFJhbmdlKEludFdyYXBwZXIoMCksIEludFdyYXBwZXIoMikpOwotICBQYXJh
bUdlbmVyYXRvcjxJbnRXcmFwcGVyPjo6aXRlcmF0b3IgaXQgPSBnZW4uYmVnaW4oKTsKLQotICBB
U1NFUlRfRkFMU0UoaXQgPT0gZ2VuLmVuZCgpKTsKLSAgRVhQRUNUX0VRKDAsIGl0LT52YWx1ZSgp
KTsKLQotICBBU1NFUlRfRkFMU0UoKytpdCA9PSBnZW4uZW5kKCkpOwotICBFWFBFQ1RfRVEoMSwg
aXQtPnZhbHVlKCkpOwotCi0gIEVYUEVDVF9UUlVFKCsraXQgPT0gZ2VuLmVuZCgpKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIHdpdGggYW4gYXJyYXkgcGFyYW1ldGVyIGdlbmVyYXRl
cwotLy8gdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgotVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0lu
QXJyYXkpIHsKLSAgaW50IGFycmF5W10gPSB7MywgNSwgOH07Ci0gIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPGludD4gZ2VuID0gVmFsdWVzSW4oYXJyYXkpOwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBh
cnJheSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSB3aXRoIGEgY29uc3QgYXJyYXkg
cGFyYW1ldGVyIGdlbmVyYXRlcwotLy8gdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgotVEVTVChWYWx1
ZXNJblRlc3QsIFZhbHVlc0luQ29uc3RBcnJheSkgewotICBjb25zdCBpbnQgYXJyYXlbXSA9IHsz
LCA1LCA4fTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbihhcnJh
eSk7Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGFycmF5KTsKLX0KLQotLy8gRWRnZSBjYXNlLiBU
ZXN0cyB0aGF0IFZhbHVlc0luKCkgd2l0aCBhbiBhcnJheSBwYXJhbWV0ZXIgY29udGFpbmluZyBh
Ci0vLyBzaW5nbGUgZWxlbWVudCBnZW5lcmF0ZXMgdGhlIHNpbmdsZSBlbGVtZW50IHNlcXVlbmNl
LgotVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luU2luZ2xlRWxlbWVudEFycmF5KSB7Ci0gIGlu
dCBhcnJheVtdID0gezQyfTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1
ZXNJbihhcnJheSk7Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGFycmF5KTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBWYWx1ZXNJbigpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UgZm9yIGFu
IFNUTAotLy8gY29udGFpbmVyICh2ZWN0b3IpLgotVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0lu
VmVjdG9yKSB7Ci0gIHR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxpbnQ+IENvbnRhaW5lclR5cGU7Ci0g
IENvbnRhaW5lclR5cGUgdmFsdWVzOwotICB2YWx1ZXMucHVzaF9iYWNrKDMpOwotICB2YWx1ZXMu
cHVzaF9iYWNrKDUpOwotICB2YWx1ZXMucHVzaF9iYWNrKDgpOwotICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVlcyk7Ci0KLSAgY29uc3QgaW50IGV4cGVjdGVk
X3ZhbHVlc1tdID0gezMsIDUsIDh9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92
YWx1ZXMpOwotfQotCi0vLyBUZXN0cyB0aGF0IFZhbHVlc0luKCkgZ2VuZXJhdGVzIHRoZSBleHBl
Y3RlZCBzZXF1ZW5jZS4KLVRFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJbkl0ZXJhdG9yUmFuZ2Up
IHsKLSAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGludD4gQ29udGFpbmVyVHlwZTsKLSAgQ29udGFp
bmVyVHlwZSB2YWx1ZXM7Ci0gIHZhbHVlcy5wdXNoX2JhY2soMyk7Ci0gIHZhbHVlcy5wdXNoX2Jh
Y2soNSk7Ci0gIHZhbHVlcy5wdXNoX2JhY2soOCk7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGlu
dD4gZ2VuID0gVmFsdWVzSW4odmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7Ci0KLSAgY29u
c3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezMsIDUsIDh9OwotICBWZXJpZnlHZW5lcmF0b3Io
Z2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgVmFs
dWVzSW4oKSBwcm92aWRlZCB3aXRoIGFuIGl0ZXJhdG9yIHJhbmdlIHNwZWNpZnlpbmcgYQotLy8g
c2luZ2xlIHZhbHVlIGdlbmVyYXRlcyBhIHNpbmdsZS1lbGVtZW50IHNlcXVlbmNlLgotVEVTVChW
YWx1ZXNJblRlc3QsIFZhbHVlc0luU2luZ2xlRWxlbWVudEl0ZXJhdG9yUmFuZ2UpIHsKLSAgdHlw
ZWRlZiA6OnN0ZDo6dmVjdG9yPGludD4gQ29udGFpbmVyVHlwZTsKLSAgQ29udGFpbmVyVHlwZSB2
YWx1ZXM7Ci0gIHZhbHVlcy5wdXNoX2JhY2soNDIpOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxp
bnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOwotCi0gIGNv
bnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHs0Mn07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4s
IGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBWYWx1ZXNJ
bigpIHByb3ZpZGVkIHdpdGggYW4gZW1wdHkgaXRlcmF0b3IgcmFuZ2UKLS8vIGdlbmVyYXRlcyBh
biBlbXB0eSBzZXF1ZW5jZS4KLVRFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJbkVtcHR5SXRlcmF0
b3JSYW5nZSkgewotICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8aW50PiBDb250YWluZXJUeXBlOwot
ICBDb250YWluZXJUeXBlIHZhbHVlczsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4g
PSBWYWx1ZXNJbih2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKLQotICBWZXJpZnlHZW5l
cmF0b3JJc0VtcHR5KGdlbik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIFZhbHVlcygpIGdlbmVy
YXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCi1URVNUKFZhbHVlc1Rlc3QsIFZhbHVlc1dvcmtz
KSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzKDMsIDUsIDgpOwot
Ci0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHszLCA1LCA4fTsKLSAgVmVyaWZ5R2Vu
ZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBWYWx1ZXMo
KSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlcyBmcm9tIGVsZW1lbnRzIG9mCi0vLyBk
aWZmZXJlbnQgdHlwZXMgY29udmVydGlibGUgdG8gUGFyYW1HZW5lcmF0b3IncyBwYXJhbWV0ZXIg
dHlwZS4KLVRFU1QoVmFsdWVzVGVzdCwgVmFsdWVzV29ya3NGb3JWYWx1ZXNPZkNvbXBhdGlibGVU
eXBlcykgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxkb3VibGU+IGdlbiA9IFZhbHVlcygzLCA1
LjBmLCA4LjApOwotCi0gIGNvbnN0IGRvdWJsZSBleHBlY3RlZF92YWx1ZXNbXSA9IHszLjAsIDUu
MCwgOC4wfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQot
VEVTVChWYWx1ZXNUZXN0LCBWYWx1ZXNXb3Jrc0Zvck1heExlbmd0aExpc3QpIHsKLSAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXMoCi0gICAgICAxMCwgMjAsIDMwLCA0MCwg
NTAsIDYwLCA3MCwgODAsIDkwLCAxMDAsCi0gICAgICAxMTAsIDEyMCwgMTMwLCAxNDAsIDE1MCwg
MTYwLCAxNzAsIDE4MCwgMTkwLCAyMDAsCi0gICAgICAyMTAsIDIyMCwgMjMwLCAyNDAsIDI1MCwg
MjYwLCAyNzAsIDI4MCwgMjkwLCAzMDAsCi0gICAgICAzMTAsIDMyMCwgMzMwLCAzNDAsIDM1MCwg
MzYwLCAzNzAsIDM4MCwgMzkwLCA0MDAsCi0gICAgICA0MTAsIDQyMCwgNDMwLCA0NDAsIDQ1MCwg
NDYwLCA0NzAsIDQ4MCwgNDkwLCA1MDApOwotCi0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNb
XSA9IHsKLSAgICAgIDEwLCAyMCwgMzAsIDQwLCA1MCwgNjAsIDcwLCA4MCwgOTAsIDEwMCwKLSAg
ICAgIDExMCwgMTIwLCAxMzAsIDE0MCwgMTUwLCAxNjAsIDE3MCwgMTgwLCAxOTAsIDIwMCwKLSAg
ICAgIDIxMCwgMjIwLCAyMzAsIDI0MCwgMjUwLCAyNjAsIDI3MCwgMjgwLCAyOTAsIDMwMCwKLSAg
ICAgIDMxMCwgMzIwLCAzMzAsIDM0MCwgMzUwLCAzNjAsIDM3MCwgMzgwLCAzOTAsIDQwMCwKLSAg
ICAgIDQxMCwgNDIwLCA0MzAsIDQ0MCwgNDUwLCA0NjAsIDQ3MCwgNDgwLCA0OTAsIDUwMH07Ci0g
IFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIEVkZ2UgY2Fz
ZSB0ZXN0LiBUZXN0cyB0aGF0IHNpbmdsZS1wYXJhbWV0ZXIgVmFsdWVzKCkgZ2VuZXJhdGVzIHRo
ZSBzZXF1ZW5jZQotLy8gd2l0aCB0aGUgc2luZ2xlIHZhbHVlLgotVEVTVChWYWx1ZXNUZXN0LCBW
YWx1ZXNXaXRoU2luZ2xlUGFyYW1ldGVyKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4g
Z2VuID0gVmFsdWVzKDQyKTsKLQotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7NDJ9
OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBUZXN0
cyB0aGF0IEJvb2woKSBnZW5lcmF0ZXMgc2VxdWVuY2UgKGZhbHNlLCB0cnVlKS4KLVRFU1QoQm9v
bFRlc3QsIEJvb2xXb3JrcykgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxib29sPiBnZW4gPSBC
b29sKCk7Ci0KLSAgY29uc3QgYm9vbCBleHBlY3RlZF92YWx1ZXNbXSA9IHtmYWxzZSwgdHJ1ZX07
Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLSNpZiBHVEVT
VF9IQVNfQ09NQklORQotCi0vLyBUZXN0cyB0aGF0IENvbWJpbmUoKSB3aXRoIHR3byBwYXJhbWV0
ZXJzIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCi1URVNUKENvbWJpbmVUZXN0LCBD
b21iaW5lV2l0aFR3b1BhcmFtZXRlcnMpIHsKLSAgY29uc3QgY2hhciogZm9vID0gImZvbyI7Ci0g
IGNvbnN0IGNoYXIqIGJhciA9ICJiYXIiOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxj
b25zdCBjaGFyKiwgaW50PiA+IGdlbiA9Ci0gICAgICBDb21iaW5lKFZhbHVlcyhmb28sIGJhciks
IFZhbHVlcygzLCA0KSk7Ci0KLSAgdHVwbGU8Y29uc3QgY2hhciosIGludD4gZXhwZWN0ZWRfdmFs
dWVzW10gPSB7Ci0gICAgbWFrZV90dXBsZShmb28sIDMpLCBtYWtlX3R1cGxlKGZvbywgNCksCi0g
ICAgbWFrZV90dXBsZShiYXIsIDMpLCBtYWtlX3R1cGxlKGJhciwgNCl9OwotICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBUZXN0cyB0aGF0IENvbWJpbmUo
KSB3aXRoIHRocmVlIHBhcmFtZXRlcnMgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4K
LVRFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoVGhyZWVQYXJhbWV0ZXJzKSB7Ci0gIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1
ZXMoMCwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWx1ZXMoMywgNCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNSwgNikpOwotICB0dXBsZTxp
bnQsIGludCwgaW50PiBleHBlY3RlZF92YWx1ZXNbXSA9IHsKLSAgICBtYWtlX3R1cGxlKDAsIDMs
IDUpLCBtYWtlX3R1cGxlKDAsIDMsIDYpLAotICAgIG1ha2VfdHVwbGUoMCwgNCwgNSksIG1ha2Vf
dHVwbGUoMCwgNCwgNiksCi0gICAgbWFrZV90dXBsZSgxLCAzLCA1KSwgbWFrZV90dXBsZSgxLCAz
LCA2KSwKLSAgICBtYWtlX3R1cGxlKDEsIDQsIDUpLCBtYWtlX3R1cGxlKDEsIDQsIDYpfTsKLSAg
VmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCB0aGUgQ29tYmluZSgpIHdpdGggdGhlIGZpcnN0IHBhcmFtZXRlciBnZW5lcmF0aW5nIGEgc2lu
Z2xlIHZhbHVlCi0vLyBzZXF1ZW5jZSBnZW5lcmF0ZXMgYSBzZXF1ZW5jZSB3aXRoIHRoZSBudW1i
ZXIgb2YgZWxlbWVudHMgZXF1YWwgdG8gdGhlCi0vLyBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhl
IHNlcXVlbmNlIGdlbmVyYXRlZCBieSB0aGUgc2Vjb25kIHBhcmFtZXRlci4KLVRFU1QoQ29tYmlu
ZVRlc3QsIENvbWJpbmVXaXRoRmlyc3RQYXJhbWV0ZXJTaW5nbGVWYWx1ZSkgewotICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcyg0Miks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsdWVzKDAsIDEpKTsKLQotICB0dXBsZTxpbnQsIGludD4gZXhwZWN0ZWRfdmFsdWVzW10gPSB7
bWFrZV90dXBsZSg0MiwgMCksIG1ha2VfdHVwbGUoNDIsIDEpfTsKLSAgVmVyaWZ5R2VuZXJhdG9y
KGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgQ29tYmluZSgp
IHdpdGggdGhlIHNlY29uZCBwYXJhbWV0ZXIgZ2VuZXJhdGluZyBhIHNpbmdsZSB2YWx1ZQotLy8g
c2VxdWVuY2UgZ2VuZXJhdGVzIGEgc2VxdWVuY2Ugd2l0aCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRz
IGVxdWFsIHRvIHRoZQotLy8gbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBzZXF1ZW5jZSBnZW5l
cmF0ZWQgYnkgdGhlIGZpcnN0IHBhcmFtZXRlci4KLVRFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVX
aXRoU2Vjb25kUGFyYW1ldGVyU2luZ2xlVmFsdWUpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8
dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoMCwgMSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDQyKSk7
Ci0KLSAgdHVwbGU8aW50LCBpbnQ+IGV4cGVjdGVkX3ZhbHVlc1tdID0ge21ha2VfdHVwbGUoMCwg
NDIpLCBtYWtlX3R1cGxlKDEsIDQyKX07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVk
X3ZhbHVlcyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgd2hlbiB0aGUgZmlyc3QgcGFyYW1ldGVyIHBy
b2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLAotLy8gQ29tYmluZSgpIHByb2R1Y2VzIGFuIGVtcHR5
IHNlcXVlbmNlLCB0b28uCi1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aEZpcnN0UGFyYW1l
dGVyRW1wdHlSYW5nZSkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludD4g
PiBnZW4gPSBDb21iaW5lKFJhbmdlKDAsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygwLCAxKSk7Ci0gIFZlcmlmeUdlbmVy
YXRvcklzRW1wdHkoZ2VuKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB3aGVuIHRoZSBzZWNvbmQgcGFy
YW1ldGVyIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLAotLy8gQ29tYmluZSgpIHByb2R1Y2Vz
IGFuIGVtcHR5IHNlcXVlbmNlLCB0b28uCi1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFNl
Y29uZFBhcmFtZXRlckVtcHR5UmFuZ2UpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8
aW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoMCwgMSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2UoMSwgMSkpOwotICBW
ZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7Ci19Ci0KLS8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhh
dCBjb21iaW5lIHdvcmtzIHdpdGggdGhlIG1heGltdW0gbnVtYmVyCi0vLyBvZiBwYXJhbWV0ZXJz
IHN1cHBvcnRlZCBieSBHb29nbGUgVGVzdCAoY3VycmVudGx5IDEwKS4KLVRFU1QoQ29tYmluZVRl
c3QsIENvbWJpbmVXaXRoTWF4TnVtYmVyT2ZQYXJhbWV0ZXJzKSB7Ci0gIGNvbnN0IGNoYXIqIGZv
byA9ICJmb28iOwotICBjb25zdCBjaGFyKiBiYXIgPSAiYmFyIjsKLSAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8dHVwbGU8Y29uc3QgY2hhciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBpbnQ+ID4gZ2VuID0gQ29tYmlu
ZShWYWx1ZXMoZm9vLCBiYXIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbHVlcygxKSwgVmFsdWVzKDIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygzKSwgVmFsdWVz
KDQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcyg1KSwgVmFsdWVzKDYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg3KSwgVmFsdWVzKDgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg5KSk7
Ci0KLSAgdHVwbGU8Y29uc3QgY2hhciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQ+Ci0gICAgICBleHBlY3RlZF92YWx1ZXNbXSA9IHttYWtlX3R1cGxlKGZvbywg
MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBt
YWtlX3R1cGxlKGJhciwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSl9OwotICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19D
T01CSU5FCi0KLS8vIFRlc3RzIHRoYXQgYW4gZ2VuZXJhdG9yIHByb2R1Y2VzIGNvcnJlY3Qgc2Vx
dWVuY2UgYWZ0ZXIgYmVpbmcKLS8vIGFzc2lnbmVkIGZyb20gYW5vdGhlciBnZW5lcmF0b3IuCi1U
RVNUKFBhcmFtR2VuZXJhdG9yVGVzdCwgQXNzaWdubWVudFdvcmtzKSB7Ci0gIFBhcmFtR2VuZXJh
dG9yPGludD4gZ2VuID0gVmFsdWVzKDEsIDIpOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+
IGdlbjIgPSBWYWx1ZXMoMywgNCk7Ci0gIGdlbiA9IGdlbjI7Ci0KLSAgY29uc3QgaW50IGV4cGVj
dGVkX3ZhbHVlc1tdID0gezMsIDR9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92
YWx1ZXMpOwotfQotCi0vLyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgdGVzdHMgYXJlIGV4
cGFuZGVkIGFuZCBydW4gYXMgc3BlY2lmaWVkOgotLy8gb25lIHRlc3QgcGVyIGVsZW1lbnQgZnJv
bSB0aGUgc2VxdWVuY2UgcHJvZHVjZWQgYnkgdGhlIGdlbmVyYXRvcgotLy8gc3BlY2lmaWVkIGlu
IElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QLiBJdCBhbHNvIHZlcmlmaWVzIHRoYXQgdGhlIHRlc3Qn
cwotLy8gZml4dHVyZSBjb25zdHJ1Y3RvciwgU2V0VXAoKSwgYW5kIFRlYXJEb3duKCkgaGF2ZSBy
dW4gYW5kIGhhdmUgYmVlbgotLy8gc3VwcGxpZWQgd2l0aCB0aGUgY29ycmVjdCBwYXJhbWV0ZXJz
LgotCi0vLyBUaGUgdXNlIG9mIGVudmlyb25tZW50IG9iamVjdCBhbGxvd3MgZGV0ZWN0aW9uIG9m
IHRoZSBjYXNlIHdoZXJlIG5vIHRlc3QKLS8vIGNhc2UgZnVuY3Rpb25hbGl0eSBpcyBydW4gYXQg
YWxsLiBJbiB0aGlzIGNhc2UgVGVzdENhc2VUZWFyRG93biB3aWxsIG5vdAotLy8gYmUgYWJsZSB0
byBkZXRlY3QgbWlzc2luZyB0ZXN0cywgbmF0dXJhbGx5LgotdGVtcGxhdGUgPGludCBrRXhwZWN0
ZWRDYWxscz4KLWNsYXNzIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpFbnZpcm9ubWVudCB7Ci0gcHVibGljOgotICBzdGF0aWMgVGVzdEdlbmVyYXRpb25FbnZp
cm9ubWVudCogSW5zdGFuY2UoKSB7Ci0gICAgc3RhdGljIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1l
bnQqIGluc3RhbmNlID0gbmV3IFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQ7Ci0gICAgcmV0dXJu
IGluc3RhbmNlOwotICB9Ci0KLSAgdm9pZCBGaXh0dXJlQ29uc3RydWN0b3JFeGVjdXRlZCgpIHsg
Zml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3VudF8rKzsgfQotICB2b2lkIFNldFVwRXhlY3V0ZWQoKSB7
IHNldF91cF9jb3VudF8rKzsgfQotICB2b2lkIFRlYXJEb3duRXhlY3V0ZWQoKSB7IHRlYXJfZG93
bl9jb3VudF8rKzsgfQotICB2b2lkIFRlc3RCb2R5RXhlY3V0ZWQoKSB7IHRlc3RfYm9keV9jb3Vu
dF8rKzsgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICAvLyBJZiBhbGwgTXVs
dGlwbGVUZXN0R2VuZXJhdGlvblRlc3QgdGVzdHMgaGF2ZSBiZWVuIGRlLXNlbGVjdGVkCi0gICAg
Ly8gYnkgdGhlIGZpbHRlciBmbGFnLCB0aGUgZm9sbG93aW5nIGNoZWNrcyBtYWtlIG5vIHNlbnNl
LgotICAgIGJvb2wgcGVyZm9ybV9jaGVjayA9IGZhbHNlOwotCi0gICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBrRXhwZWN0ZWRDYWxsczsgKytpKSB7Ci0gICAgICBNZXNzYWdlIG1zZzsKLSAgICAgIG1z
ZyA8PCAiVGVzdHNFeHBhbmRlZEFuZFJ1bi8iIDw8IGk7Ci0gICAgICBpZiAoVW5pdFRlc3RPcHRp
b25zOjpGaWx0ZXJNYXRjaGVzVGVzdCgKLSAgICAgICAgICAgICAiVGVzdEV4cGFuc2lvbk1vZHVs
ZS9NdWx0aXBsZVRlc3RHZW5lcmF0aW9uVGVzdCIsCi0gICAgICAgICAgICAgIG1zZy5HZXRTdHJp
bmcoKS5jX3N0cigpKSkgewotICAgICAgICBwZXJmb3JtX2NoZWNrID0gdHJ1ZTsKLSAgICAgIH0K
LSAgICB9Ci0gICAgaWYgKHBlcmZvcm1fY2hlY2spIHsKLSAgICAgIEVYUEVDVF9FUShrRXhwZWN0
ZWRDYWxscywgZml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3VudF8pCi0gICAgICAgICAgPDwgIkZpeHR1
cmUgY29uc3RydWN0b3Igb2YgUGFyYW1UZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlICIKLSAg
ICAgICAgICA8PCAiaGFzIG5vdCBiZWVuIHJ1biBhcyBleHBlY3RlZC4iOwotICAgICAgRVhQRUNU
X0VRKGtFeHBlY3RlZENhbGxzLCBzZXRfdXBfY291bnRfKQotICAgICAgICAgIDw8ICJGaXh0dXJl
IFNldFVwIG1ldGhvZCBvZiBQYXJhbVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgotICAg
ICAgICAgIDw8ICJoYXMgbm90IGJlZW4gcnVuIGFzIGV4cGVjdGVkLiI7Ci0gICAgICBFWFBFQ1Rf
RVEoa0V4cGVjdGVkQ2FsbHMsIHRlYXJfZG93bl9jb3VudF8pCi0gICAgICAgICAgPDwgIkZpeHR1
cmUgVGVhckRvd24gbWV0aG9kIG9mIFBhcmFtVGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZSAi
Ci0gICAgICAgICAgPDwgImhhcyBub3QgYmVlbiBydW4gYXMgZXhwZWN0ZWQuIjsKLSAgICAgIEVY
UEVDVF9FUShrRXhwZWN0ZWRDYWxscywgdGVzdF9ib2R5X2NvdW50XykKLSAgICAgICAgICA8PCAi
VGVzdCBpbiBQYXJhbVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgotICAgICAgICAgIDw8
ICJoYXMgbm90IGJlZW4gcnVuIGFzIGV4cGVjdGVkLiI7Ci0gICAgfQotICB9Ci0gcHJpdmF0ZToK
LSAgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudCgpIDogZml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3Vu
dF8oMCksIHNldF91cF9jb3VudF8oMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlYXJfZG93bl9jb3VudF8oMCksIHRlc3RfYm9keV9jb3VudF8oMCkge30KLQotICBpbnQgZml4
dHVyZV9jb25zdHJ1Y3Rvcl9jb3VudF87Ci0gIGludCBzZXRfdXBfY291bnRfOwotICBpbnQgdGVh
cl9kb3duX2NvdW50XzsKLSAgaW50IHRlc3RfYm9keV9jb3VudF87Ci0KLSAgR1RFU1RfRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50KTsKLX07Ci0KLWNv
bnN0IGludCB0ZXN0X2dlbmVyYXRpb25fcGFyYW1zW10gPSB7MzYsIDQyLCA3Mn07Ci0KLWNsYXNz
IFRlc3RHZW5lcmF0aW9uVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4gewotIHB1Ymxp
YzoKLSAgZW51bSB7Ci0gICAgUEFSQU1FVEVSX0NPVU5UID0KLSAgICAgICAgc2l6ZW9mKHRlc3Rf
Z2VuZXJhdGlvbl9wYXJhbXMpL3NpemVvZih0ZXN0X2dlbmVyYXRpb25fcGFyYW1zWzBdKQotICB9
OwotCi0gIHR5cGVkZWYgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudDxQQVJBTUVURVJfQ09VTlQ+
IEVudmlyb25tZW50OwotCi0gIFRlc3RHZW5lcmF0aW9uVGVzdCgpIHsKLSAgICBFbnZpcm9ubWVu
dDo6SW5zdGFuY2UoKS0+Rml4dHVyZUNvbnN0cnVjdG9yRXhlY3V0ZWQoKTsKLSAgICBjdXJyZW50
X3BhcmFtZXRlcl8gPSBHZXRQYXJhbSgpOwotICB9Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsK
LSAgICBFbnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+U2V0VXBFeGVjdXRlZCgpOwotICAgIEVYUEVD
VF9FUShjdXJyZW50X3BhcmFtZXRlcl8sIEdldFBhcmFtKCkpOwotICB9Ci0gIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsKLSAgICBFbnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+VGVhckRvd25FeGVj
dXRlZCgpOwotICAgIEVYUEVDVF9FUShjdXJyZW50X3BhcmFtZXRlcl8sIEdldFBhcmFtKCkpOwot
ICB9Ci0KLSAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKLSAgICBib29sIGFsbF90ZXN0
c19pbl90ZXN0X2Nhc2Vfc2VsZWN0ZWQgPSB0cnVlOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBQQVJBTUVURVJfQ09VTlQ7ICsraSkgewotICAgICAgTWVzc2FnZSB0ZXN0X25hbWU7Ci0gICAg
ICB0ZXN0X25hbWUgPDwgIlRlc3RzRXhwYW5kZWRBbmRSdW4vIiA8PCBpOwotICAgICAgaWYgKCAh
VW5pdFRlc3RPcHRpb25zOjpGaWx0ZXJNYXRjaGVzVGVzdCgKLSAgICAgICAgICAgICAgICAiVGVz
dEV4cGFuc2lvbk1vZHVsZS9NdWx0aXBsZVRlc3RHZW5lcmF0aW9uVGVzdCIsCi0gICAgICAgICAg
ICAgICAgdGVzdF9uYW1lLkdldFN0cmluZygpKSkgewotICAgICAgICBhbGxfdGVzdHNfaW5fdGVz
dF9jYXNlX3NlbGVjdGVkID0gZmFsc2U7Ci0gICAgICB9Ci0gICAgfQotICAgIEVYUEVDVF9UUlVF
KGFsbF90ZXN0c19pbl90ZXN0X2Nhc2Vfc2VsZWN0ZWQpCi0gICAgICAgIDw8ICJXaGVuIHJ1bm5p
bmcgdGhlIFRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgYWxsIG9mIGl0cyB0ZXN0c1xuIgot
ICAgICAgICA8PCAibXVzdCBiZSBzZWxlY3RlZCBieSB0aGUgZmlsdGVyIGZsYWcgZm9yIHRoZSB0
ZXN0IGNhc2UgdG8gcGFzcy5cbiIKLSAgICAgICAgPDwgIklmIG5vdCBhbGwgb2YgdGhlbSBhcmUg
ZW5hYmxlZCwgd2UgY2FuJ3QgcmVsaWFibHkgY29uY2x1ZGVcbiIKLSAgICAgICAgPDwgInRoYXQg
dGhlIGNvcnJlY3QgbnVtYmVyIG9mIHRlc3RzIGhhdmUgYmVlbiBnZW5lcmF0ZWQuIjsKLQotICAg
IGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5jbGVhcigpOwotICB9Ci0KLSAgc3RhdGljIHZvaWQgVGVh
ckRvd25UZXN0Q2FzZSgpIHsKLSAgICB2ZWN0b3I8aW50PiBleHBlY3RlZF92YWx1ZXModGVzdF9n
ZW5lcmF0aW9uX3BhcmFtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9n
ZW5lcmF0aW9uX3BhcmFtcyArIFBBUkFNRVRFUl9DT1VOVCk7Ci0gICAgLy8gVGVzdCBleGVjdXRp
b24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQgYnkgR29vZ2xlIFRlc3QsCi0gICAgLy8gc28gdGhl
IG9yZGVyIG9mIHZhbHVlcyBpbiBjb2xsZWN0ZWRfcGFyYW1ldGVyc18gY2FuIGJlCi0gICAgLy8g
ZGlmZmVyZW50IGFuZCB3ZSBoYXZlIHRvIHNvcnQgdG8gY29tcGFyZS4KLSAgICBzb3J0KGV4cGVj
dGVkX3ZhbHVlcy5iZWdpbigpLCBleHBlY3RlZF92YWx1ZXMuZW5kKCkpOwotICAgIHNvcnQoY29s
bGVjdGVkX3BhcmFtZXRlcnNfLmJlZ2luKCksIGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5lbmQoKSk7
Ci0KLSAgICBFWFBFQ1RfVFJVRShjb2xsZWN0ZWRfcGFyYW1ldGVyc18gPT0gZXhwZWN0ZWRfdmFs
dWVzKTsKLSAgfQotIHByb3RlY3RlZDoKLSAgaW50IGN1cnJlbnRfcGFyYW1ldGVyXzsKLSAgc3Rh
dGljIHZlY3RvcjxpbnQ+IGNvbGxlY3RlZF9wYXJhbWV0ZXJzXzsKLQotIHByaXZhdGU6Ci0gIEdU
RVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdEdlbmVyYXRpb25UZXN0KTsKLX07Ci12
ZWN0b3I8aW50PiBUZXN0R2VuZXJhdGlvblRlc3Q6OmNvbGxlY3RlZF9wYXJhbWV0ZXJzXzsKLQot
VEVTVF9QKFRlc3RHZW5lcmF0aW9uVGVzdCwgVGVzdHNFeHBhbmRlZEFuZFJ1bikgewotICBFbnZp
cm9ubWVudDo6SW5zdGFuY2UoKS0+VGVzdEJvZHlFeGVjdXRlZCgpOwotICBFWFBFQ1RfRVEoY3Vy
cmVudF9wYXJhbWV0ZXJfLCBHZXRQYXJhbSgpKTsKLSAgY29sbGVjdGVkX3BhcmFtZXRlcnNfLnB1
c2hfYmFjayhHZXRQYXJhbSgpKTsKLX0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFRlc3RFeHBh
bnNpb25Nb2R1bGUsIFRlc3RHZW5lcmF0aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IFZhbHVlc0luKHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMpKTsKLQotLy8gVGhpcyB0ZXN0IHZlcmlm
aWVzIHRoYXQgdGhlIGVsZW1lbnQgc2VxdWVuY2UgKHRoaXJkIHBhcmFtZXRlciBvZgotLy8gSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1ApIGlzIGV2YWx1YXRlZCBpbiBJbml0R29vZ2xlVGVzdCgpIGFu
ZCBuZWl0aGVyIGF0Ci0vLyB0aGUgY2FsbCBzaXRlIG9mIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
IG5vciBpbiBSVU5fQUxMX1RFU1RTKCkuICBGb3IKLS8vIHRoYXQsIHdlIGRlY2xhcmUgcGFyYW1f
dmFsdWVfIHRvIGJlIGEgc3RhdGljIG1lbWJlciBvZgotLy8gR2VuZXJhdG9yRXZhbHVhdGlvblRl
c3QgYW5kIGluaXRpYWxpemUgaXQgdG8gMC4gIFdlIHNldCBpdCB0byAxIGluCi0vLyBtYWluKCks
IGp1c3QgYmVmb3JlIGludm9jYXRpb24gb2YgSW5pdEdvb2dsZVRlc3QoKS4gIEFmdGVyIGNhbGxp
bmcKLS8vIEluaXRHb29nbGVUZXN0KCksIHdlIHNldCB0aGUgdmFsdWUgdG8gMi4gIElmIHRoZSBz
ZXF1ZW5jZSBpcyBldmFsdWF0ZWQKLS8vIGJlZm9yZSBvciBhZnRlciBJbml0R29vZ2xlVGVzdCwg
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1Agd2lsbCBjcmVhdGUgYQotLy8gdGVzdCB3aXRoIHBhcmFt
ZXRlciBvdGhlciB0aGFuIDEsIGFuZCB0aGUgdGVzdCBib2R5IHdpbGwgZmFpbCB0aGUKLS8vIGFz
c2VydGlvbi4KLWNsYXNzIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0IDogcHVibGljIFRlc3RXaXRo
UGFyYW08aW50PiB7Ci0gcHVibGljOgotICBzdGF0aWMgaW50IHBhcmFtX3ZhbHVlKCkgeyByZXR1
cm4gcGFyYW1fdmFsdWVfOyB9Ci0gIHN0YXRpYyB2b2lkIHNldF9wYXJhbV92YWx1ZShpbnQgcGFy
YW1fdmFsdWUpIHsgcGFyYW1fdmFsdWVfID0gcGFyYW1fdmFsdWU7IH0KLQotIHByaXZhdGU6Ci0g
IHN0YXRpYyBpbnQgcGFyYW1fdmFsdWVfOwotfTsKLWludCBHZW5lcmF0b3JFdmFsdWF0aW9uVGVz
dDo6cGFyYW1fdmFsdWVfID0gMDsKLQotVEVTVF9QKEdlbmVyYXRvckV2YWx1YXRpb25UZXN0LCBH
ZW5lcmF0b3JzRXZhbHVhdGVkSW5NYWluKSB7Ci0gIEVYUEVDVF9FUSgxLCBHZXRQYXJhbSgpKTsK
LX0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEdlbkV2YWxNb2R1bGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcyhHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6cGFyYW1fdmFsdWUoKSkpOwotCi0v
LyBUZXN0cyB0aGF0IGdlbmVyYXRvcnMgZGVmaW5lZCBpbiBhIGRpZmZlcmVudCB0cmFuc2xhdGlv
biB1bml0IGFyZQotLy8gZnVuY3Rpb25hbC4gR2VuZXJhdG9yIGV4dGVybl9nZW4gaXMgZGVmaW5l
ZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QyLmNjLgotZXh0ZXJuIFBhcmFtR2VuZXJhdG9yPGlu
dD4gZXh0ZXJuX2dlbjsKLWNsYXNzIEV4dGVybmFsR2VuZXJhdG9yVGVzdCA6IHB1YmxpYyBUZXN0
V2l0aFBhcmFtPGludD4ge307Ci1URVNUX1AoRXh0ZXJuYWxHZW5lcmF0b3JUZXN0LCBFeHRlcm5h
bEdlbmVyYXRvcikgewotICAvLyBTZXF1ZW5jZSBwcm9kdWNlZCBieSBleHRlcm5fZ2VuIGNvbnRh
aW5zIG9ubHkgYSBzaW5nbGUgdmFsdWUKLSAgLy8gd2hpY2ggd2UgdmVyaWZ5IGhlcmUuCi0gIEVY
UEVDVF9FUShHZXRQYXJhbSgpLCAzMyk7Ci19Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUChFeHRl
cm5hbEdlbmVyYXRvck1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVybmFsR2Vu
ZXJhdG9yVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybl9nZW4pOwotCi0vLyBU
ZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGRlZmluZWQgaW4gb25l
IHRyYW5zbGF0aW9uCi0vLyB1bml0IGFuZCBpbnN0YW50aWF0ZWQgaW4gYW5vdGhlci4gVGhpcyB0
ZXN0IHdpbGwgYmUgaW5zdGFudGlhdGVkIGluCi0vLyBndGVzdC1wYXJhbS10ZXN0X3Rlc3QyLmNj
LiBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0IGZpeHR1cmUgY2xhc3MgaXMKLS8vIGRlZmluZWQg
aW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmguCi1URVNUX1AoRXh0ZXJuYWxJbnN0YW50aWF0aW9u
VGVzdCwgSXNNdWx0aXBsZU9mMzMpIHsKLSAgRVhQRUNUX0VRKDAsIEdldFBhcmFtKCkgJSAzMyk7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgaW5z
dGFudGlhdGVkIHdpdGggbXVsdGlwbGUKLS8vIGdlbmVyYXRvcnMuCi1jbGFzcyBNdWx0aXBsZUlu
c3RhbnRpYXRpb25UZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7fTsKLVRFU1RfUChN
dWx0aXBsZUluc3RhbnRpYXRpb25UZXN0LCBBbGxvd3NNdWx0aXBsZUluc3RhbmNlcykgewotfQot
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2UxLCBNdWx0aXBsZUluc3RhbnRpYXRpb25U
ZXN0LCBWYWx1ZXMoMSwgMikpOwotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2UyLCBN
dWx0aXBsZUluc3RhbnRpYXRpb25UZXN0LCBSYW5nZSgzLCA1KSk7Ci0KLS8vIFRlc3RzIHRoYXQg
YSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgaW5zdGFudGlhdGVkCi0vLyBpbiBtdWx0
aXBsZSB0cmFuc2xhdGlvbiB1bml0cy4gVGhpcyB0ZXN0IHdpbGwgYmUgaW5zdGFudGlhdGVkCi0v
LyBoZXJlIGFuZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QyLmNjLgotLy8gSW5zdGFudGlhdGlv
bkluTXVsdGlwbGVUcmFuc2xhdGlvblVuaXRzVGVzdCBmaXh0dXJlIGNsYXNzCi0vLyBpcyBkZWZp
bmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oLgotVEVTVF9QKEluc3RhbnRpYXRpb25Jbk11
bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCwgSXNNdWx0aXBsZU9mNDIpIHsKLSAgRVhQRUNUX0VR
KDAsIEdldFBhcmFtKCkgJSA0Mik7Ci19Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5j
ZTEsCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5z
bGFpb25Vbml0c1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNDIsIDQyKjIp
KTsKLQotLy8gVGVzdHMgdGhhdCBlYWNoIGl0ZXJhdGlvbiBvZiBwYXJhbWV0ZXJpemVkIHRlc3Qg
cnVucyBpbiBhIHNlcGFyYXRlIHRlc3QKLS8vIG9iamVjdC4KLWNsYXNzIFNlcGFyYXRlSW5zdGFu
Y2VUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7Ci0gcHVibGljOgotICBTZXBhcmF0
ZUluc3RhbmNlVGVzdCgpIDogY291bnRfKDApIHt9Ci0KLSAgc3RhdGljIHZvaWQgVGVhckRvd25U
ZXN0Q2FzZSgpIHsKLSAgICBFWFBFQ1RfR0UoZ2xvYmFsX2NvdW50XywgMikKLSAgICAgICAgPDwg
IklmIHNvbWUgKGJ1dCBub3QgYWxsKSBTZXBhcmF0ZUluc3RhbmNlVGVzdCB0ZXN0cyBoYXZlIGJl
ZW4gIgotICAgICAgICA8PCAiZmlsdGVyZWQgb3V0IHRoaXMgdGVzdCB3aWxsIGZhaWwuIE1ha2Ug
c3VyZSB0aGF0IGFsbCAiCi0gICAgICAgIDw8ICJHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCBhcmUg
c2VsZWN0ZWQgb3IgZGUtc2VsZWN0ZWQgdG9nZXRoZXIgIgotICAgICAgICA8PCAiYnkgdGhlIHRl
c3QgZmlsdGVyLiI7Ci0gIH0KLQotIHByb3RlY3RlZDoKLSAgaW50IGNvdW50XzsKLSAgc3RhdGlj
IGludCBnbG9iYWxfY291bnRfOwotfTsKLWludCBTZXBhcmF0ZUluc3RhbmNlVGVzdDo6Z2xvYmFs
X2NvdW50XyA9IDA7Ci0KLVRFU1RfUChTZXBhcmF0ZUluc3RhbmNlVGVzdCwgVGVzdHNSdW5JblNl
cGFyYXRlSW5zdGFuY2VzKSB7Ci0gIEVYUEVDVF9FUSgwLCBjb3VudF8rKyk7Ci0gIGdsb2JhbF9j
b3VudF8rKzsKLX0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEZvdXJFbGVtU2VxdWVuY2UsIFNl
cGFyYXRlSW5zdGFuY2VUZXN0LCBSYW5nZSgxLCA0KSk7Ci0KLS8vIFRlc3RzIHRoYXQgYWxsIGlu
c3RhbnRpYXRpb25zIG9mIGEgdGVzdCBoYXZlIG5hbWVkIGFwcHJvcHJpYXRlbHkuIFRlc3QKLS8v
IGRlZmluZWQgd2l0aCBURVNUX1AoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSkgYW5kIGluc3RhbnRp
YXRlZCB3aXRoCi0vLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5jZU5hbWUsIFRlc3RD
YXNlTmFtZSwgZ2VuZXJhdG9yKSBtdXN0IGJlIG5hbWVkCi0vLyBTZXF1ZW5jZU5hbWUvVGVzdENh
c2VOYW1lLlRlc3ROYW1lL2ksIHdoZXJlIGkgaXMgdGhlIDAtYmFzZWQgaW5kZXggb2YgdGhlCi0v
LyBzZXF1ZW5jZSBlbGVtZW50IHVzZWQgdG8gaW5zdGFudGlhdGUgdGhlIHRlc3QuCi1jbGFzcyBO
YW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7fTsKLQotVEVTVF9QKE5hbWlu
Z1Rlc3QsIFRlc3RzQXJlTmFtZWRBcHByb3ByaWF0ZWx5KSB7Ci0gIGNvbnN0IDo6dGVzdGluZzo6
VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9Ci0gICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6Okdl
dEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7Ci0KLSAgRVhQRUNUX1NUUkVRKCJaZXJv
VG9GaXZlU2VxdWVuY2UvTmFtaW5nVGVzdCIsIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7
Ci0KLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCAiVGVzdHNBcmVOYW1lZEFwcHJvcHJpYXRlbHkv
IiA8PCBHZXRQYXJhbSgpOwotICBFWFBFQ1RfU1RSRVEobXNnLkdldFN0cmluZygpLmNfc3RyKCks
IHRlc3RfaW5mby0+bmFtZSgpKTsKLX0KLQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoWmVyb1Rv
Rml2ZVNlcXVlbmNlLCBOYW1pbmdUZXN0LCBSYW5nZSgwLCA1KSk7Ci0KLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX1BBUkFNX1RFU1QKLQotVEVTVChDb21waWxlVGVzdCwgQ29tYmluZUlzRGVmaW5lZE9u
bHlXaGVuR3Rlc3RIYXNQYXJhbVRlc3RJc0RlZmluZWQpIHsKLSNpZiBHVEVTVF9IQVNfQ09NQklO
RSAmJiAhR1RFU1RfSEFTX1BBUkFNX1RFU1QKLSAgRkFJTCgpIDw8ICJHVEVTVF9IQVNfQ09NQklO
RSBpcyBkZWZpbmVkIHdoaWxlIEdURVNUX0hBU19QQVJBTV9URVNUIGlzIG5vdFxuIgotI2VuZGlm
Ci19Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotI2lmIEdURVNUX0hBU19Q
QVJBTV9URVNUCi0gIC8vIFVzZWQgaW4gVGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZS4KLSAg
QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KFRlc3RHZW5lcmF0aW9uVGVzdDo6RW52aXJvbm1lbnQ6
Okluc3RhbmNlKCkpOwotICAvLyBVc2VkIGluIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0IHRlc3Qg
Y2FzZS4gVGVzdHMgdGhhdCB0aGUgdXBkYXRlZCB2YWx1ZQotICAvLyB3aWxsIGJlIHBpY2tlZCB1
cCBmb3IgaW5zdGFudGlhdGluZyB0ZXN0cyBpbiBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdC4KLSAg
R2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnNldF9wYXJhbV92YWx1ZSgxKTsKLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdj
LCBhcmd2KTsKLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0gIC8vIFVzZWQgaW4gR2VuZXJh
dG9yRXZhbHVhdGlvblRlc3QgdGVzdCBjYXNlLiBUZXN0cyB0aGF0IHZhbHVlIHVwZGF0ZWQKLSAg
Ly8gaGVyZSB3aWxsIE5PVCBiZSB1c2VkIGZvciBpbnN0YW50aWF0aW5nIHRlc3RzIGluCi0gIC8v
IEdlbmVyYXRvckV2YWx1YXRpb25UZXN0LgotICBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6c2V0
X3BhcmFtX3ZhbHVlKDIpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi0gIHJl
dHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYjdmOTQ5MzYxMzdkZmM1ZjNmMmQ1N2ZhNDBkY2FmN2ExNWNiNmI1ZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTUg
KzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
Ly8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8K
LS8vIEF1dGhvcnM6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0vLwotLy8gVGhlIEdv
b2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQotLy8KLS8vIFRoaXMgaGVh
ZGVyIGZpbGUgcHJvdmlkZXMgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIHVzZWQgaW50ZXJuYWxseQot
Ly8gZm9yIHRlc3RpbmcgR29vZ2xlIFRlc3QgaXRzZWxmLgotCi0jaWZuZGVmIEdURVNUX1RFU1Rf
R1RFU1RfUEFSQU1fVEVTVF9URVNUX0hfCi0jZGVmaW5lIEdURVNUX1RFU1RfR1RFU1RfUEFSQU1f
VEVTVF9URVNUX0hfCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0jaWYgR1RFU1RfSEFT
X1BBUkFNX1RFU1QKLQotLy8gVGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIGRlZmluaXRpb24gYW5k
IGluc3RhbnRpYXRpb24gb2YgYSB0ZXN0Ci0vLyBpbiBzZXBhcmF0ZSB0cmFuc2xhdGlvbiB1bml0
cy4KLWNsYXNzIEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0V2l0aFBhcmFtPGludD4ge307Ci0KLS8vIFRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyBpbnN0
YW50aWF0aW9uIG9mIGEgdGVzdCBpbiBtdWx0aXBsZQotLy8gdHJhbnNsYXRpb24gdW5pdHMuCi1j
bGFzcyBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QKLSAgICA6IHB1
YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7fTsKLQotI2VuZGlmICAvLyBHVEVT
VF9IQVNfUEFSQU1fVEVTVAotCi0jZW5kaWYgIC8vIEdURVNUX1RFU1RfR1RFU1RfUEFSQU1fVEVT
VF9URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
LXBvcnRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcG9ydF90
ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzI1ODYwMmZhNWNmNWE3Nzk5
NDdjZDQyN2UyMGU5MDlmYzkyNThkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcG9ydF90ZXN0
LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTAxOCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwg
R29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0v
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczogdmxhZGxAZ29vZ2xlLmNv
bSAoVmxhZCBMb3NldiksIHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGhp
cyBmaWxlIHRlc3RzIHRoZSBpbnRlcm5hbCBjcm9zcy1wbGF0Zm9ybSBzdXBwb3J0IHV0aWxpdGll
cy4KLQotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLQotI2luY2x1ZGUg
PHN0ZGlvLmg+Ci0KLSNpZiBHVEVTVF9PU19NQUMKLSNpbmNsdWRlIDx0aW1lLmg+Ci0jZW5kaWYg
IC8vIEdURVNUX09TX01BQwotCi0jaW5jbHVkZSA8dXRpbGl0eT4gIC8vIEZvciBzdGQ6OnBhaXIg
YW5kIHN0ZDo6bWFrZV9wYWlyLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC1zcGkuaD4KLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlv
biB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBt
dXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3Ig
dGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJl
dmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlu
bC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNp
bmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5U
QVRJT05fCi0KLXVzaW5nIHN0ZDo6bWFrZV9wYWlyOwotdXNpbmcgc3RkOjpwYWlyOwotCi1uYW1l
c3BhY2UgdGVzdGluZyB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBUZXN0cyB0aGF0IHRo
ZSBlbGVtZW50X3R5cGUgdHlwZWRlZiBpcyBhdmFpbGFibGUgaW4gc2NvcGVkX3B0ciBhbmQgcmVm
ZXJzCi0vLyB0byB0aGUgcGFyYW1ldGVyIHR5cGUuCi1URVNUKFNjb3BlZFB0clRlc3QsIERlZmlu
ZXNFbGVtZW50VHlwZSkgewotICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50LCA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpzY29wZWRfcHRyPGludD46OmVsZW1lbnRfdHlwZT4oKTsKLX0KLQotLy8gVE9ETyh2
bGFkbEBnb29nbGUuY29tKTogSW1wbGVtZW50IFRIRSBSRVNUIG9mIHNjb3BlZF9wdHIgdGVzdHMu
Ci0KLVRFU1QoR3Rlc3RDaGVja1N5bnRheFRlc3QsIEJlaGF2ZXNMaWtlQVNpbmdsZVN0YXRlbWVu
dCkgewotICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAgICBHVEVTVF9DSEVDS18oZmFsc2UpIDw8ICJU
aGlzIHNob3VsZCBuZXZlciBiZSBleGVjdXRlZDsgIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkl0J3MgYSBjb21waWxhdGlvbiB0ZXN0IG9ubHkuIjsKLQotICBpZiAoQWx3YXlzVHJ1ZSgp
KQotICAgIEdURVNUX0NIRUNLXyh0cnVlKTsKLSAgZWxzZQotICAgIDsgIC8vIE5PTElOVAotCi0g
IGlmIChBbHdheXNGYWxzZSgpKQotICAgIDsgIC8vIE5PTElOVAotICBlbHNlCi0gICAgR1RFU1Rf
Q0hFQ0tfKHRydWUpIDw8ICIiOwotfQotCi1URVNUKEd0ZXN0Q2hlY2tTeW50YXhUZXN0LCBXb3Jr
c1dpdGhTd2l0Y2gpIHsKLSAgc3dpdGNoICgwKSB7Ci0gICAgY2FzZSAxOgotICAgICAgYnJlYWs7
Ci0gICAgZGVmYXVsdDoKLSAgICAgIEdURVNUX0NIRUNLXyh0cnVlKTsKLSAgfQotCi0gIHN3aXRj
aCgwKQotICAgIGNhc2UgMDoKLSAgICAgIEdURVNUX0NIRUNLXyh0cnVlKSA8PCAiQ2hlY2sgZmFp
bGVkIGluIHN3aXRjaCBjYXNlIjsKLX0KLQotI2lmIEdURVNUX09TX01BQwotdm9pZCogVGhyZWFk
RnVuYyh2b2lkKiBkYXRhKSB7Ci0gIHB0aHJlYWRfbXV0ZXhfdCogbXV0ZXggPSBzdGF0aWNfY2Fz
dDxwdGhyZWFkX211dGV4X3QqPihkYXRhKTsKLSAgcHRocmVhZF9tdXRleF9sb2NrKG11dGV4KTsK
LSAgcHRocmVhZF9tdXRleF91bmxvY2sobXV0ZXgpOwotICByZXR1cm4gTlVMTDsKLX0KLQotVEVT
VChHZXRUaHJlYWRDb3VudFRlc3QsIFJldHVybnNDb3JyZWN0VmFsdWUpIHsKLSAgRVhQRUNUX0VR
KDFVLCBHZXRUaHJlYWRDb3VudCgpKTsKLSAgcHRocmVhZF9tdXRleF90IG11dGV4OwotICBwdGhy
ZWFkX2F0dHJfdCAgYXR0cjsKLSAgcHRocmVhZF90ICAgICAgIHRocmVhZF9pZDsKLQotICAvLyBU
T0RPKHZsYWRsQGdvb2dsZS5jb20pOiB0dXJuIG11dGV4IGludG8gaW50ZXJuYWw6Ok11dGV4IGZv
ciBhdXRvbWF0aWMKLSAgLy8gZGVzdHJ1Y3Rpb24uCi0gIHB0aHJlYWRfbXV0ZXhfaW5pdCgmbXV0
ZXgsIE5VTEwpOwotICBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4KTsKLSAgQVNTRVJUX0VRKDAs
IHB0aHJlYWRfYXR0cl9pbml0KCZhdHRyKSk7Ci0gIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0dHJf
c2V0ZGV0YWNoc3RhdGUoJmF0dHIsIFBUSFJFQURfQ1JFQVRFX0pPSU5BQkxFKSk7Ci0KLSAgY29u
c3QgaW50IHN0YXR1cyA9IHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRfaWQsICZhdHRyLCAmVGhyZWFk
RnVuYywgJm11dGV4KTsKLSAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXR0cl9kZXN0cm95KCZhdHRy
KSk7Ci0gIEFTU0VSVF9FUSgwLCBzdGF0dXMpOwotICBFWFBFQ1RfRVEoMlUsIEdldFRocmVhZENv
dW50KCkpOwotICBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXgpOwotCi0gIHZvaWQqIGR1bW15
OwotICBBU1NFUlRfRVEoMCwgcHRocmVhZF9qb2luKHRocmVhZF9pZCwgJmR1bW15KSk7Ci0KLSAg
Ly8gTWFjT1MgWCBtYXkgbm90IGltbWVkaWF0ZWx5IHJlcG9ydCB0aGUgdXBkYXRlZCB0aHJlYWQg
Y291bnQgYWZ0ZXIKLSAgLy8gam9pbmluZyBhIHRocmVhZCwgY2F1c2luZyBmbGFraW5lc3MgaW4g
dGhpcyB0ZXN0LiBUbyBjb3VudGVyIHRoYXQsIHdlCi0gIC8vIHdhaXQgZm9yIHVwIHRvIC41IHNl
Y29uZHMgZm9yIHRoZSBPUyB0byByZXBvcnQgdGhlIGNvcnJlY3QgdmFsdWUuCi0gIGZvciAoaW50
IGkgPSAwOyBpIDwgNTsgKytpKSB7Ci0gICAgaWYgKEdldFRocmVhZENvdW50KCkgPT0gMSkKLSAg
ICAgIGJyZWFrOwotCi0gICAgU2xlZXBNaWxsaXNlY29uZHMoMTAwKTsKLSAgfQotICBFWFBFQ1Rf
RVEoMVUsIEdldFRocmVhZENvdW50KCkpOwotICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm11dGV4
KTsKLX0KLSNlbHNlCi1URVNUKEdldFRocmVhZENvdW50VGVzdCwgUmV0dXJuc1plcm9XaGVuVW5h
YmxlVG9Db3VudFRocmVhZHMpIHsKLSAgRVhQRUNUX0VRKDBVLCBHZXRUaHJlYWRDb3VudCgpKTsK
LX0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfTUFDCi0KLVRFU1QoR3Rlc3RDaGVja0RlYXRoVGVzdCwg
RGllc1dpdGhDb3JyZWN0T3V0cHV0T25GYWlsdXJlKSB7Ci0gIGNvbnN0IGJvb2wgYV9mYWxzZV9j
b25kaXRpb24gPSBmYWxzZTsKLSAgY29uc3QgY2hhciByZWdleFtdID0KLSNpZmRlZiBfTVNDX1ZF
UgotICAgICAiZ3Rlc3QtcG9ydF90ZXN0XFwuY2NcXChcXGQrXFwpOiIKLSNlbHNlCi0gICAgICJn
dGVzdC1wb3J0X3Rlc3RcXC5jYzpbMC05XSsiCi0jZW5kaWYgIC8vIF9NU0NfVkVSCi0gICAgICIu
KmFfZmFsc2VfY29uZGl0aW9uLipFeHRyYSBpbmZvLioiOwotCi0gIEVYUEVDVF9ERUFUSF9JRl9T
VVBQT1JURUQoR1RFU1RfQ0hFQ0tfKGFfZmFsc2VfY29uZGl0aW9uKSA8PCAiRXh0cmEgaW5mbyIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXgpOwotfQotCi0jaWYgR1RFU1RfSEFT
X0RFQVRIX1RFU1QKLQotVEVTVChHdGVzdENoZWNrRGVhdGhUZXN0LCBMaXZlc1NpbGVudGx5T25T
dWNjZXNzKSB7Ci0gIEVYUEVDVF9FWElUKHsKLSAgICAgIEdURVNUX0NIRUNLXyh0cnVlKSA8PCAi
RXh0cmEgaW5mbyI7Ci0gICAgICA6OnN0ZDo6Y2VyciA8PCAiU3VjY2Vzc1xuIjsKLSAgICAgIGV4
aXQoMCk7IH0sCi0gICAgICA6OnRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApLCAiU3VjY2VzcyIp
OwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLSNpZiBHVEVTVF9VU0VT
X1BPU0lYX1JFCi0KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgU3RyPgotY2xhc3MgUkVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKLQotLy8g
RGVmaW5lcyBTdHJpbmdUeXBlcyBhcyB0aGUgbGlzdCBvZiBhbGwgc3RyaW5nIHR5cGVzIHRoYXQg
Y2xhc3MgUkUKLS8vIHN1cHBvcnRzLgotdHlwZWRlZiB0ZXN0aW5nOjpUeXBlczwKLSAgICA6OnN0
ZDo6c3RyaW5nLAotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0gICAgOjpzdHJpbmcsCi0j
ZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0gICAgY29uc3QgY2hhcio+IFN0cmlu
Z1R5cGVzOwotCi1UWVBFRF9URVNUX0NBU0UoUkVUZXN0LCBTdHJpbmdUeXBlcyk7Ci0KLS8vIFRl
c3RzIFJFJ3MgaW1wbGljaXQgY29uc3RydWN0b3JzLgotVFlQRURfVEVTVChSRVRlc3QsIEltcGxp
Y2l0Q29uc3RydWN0b3JXb3JrcykgewotICBjb25zdCBSRSBlbXB0eShUeXBlUGFyYW0oIiIpKTsK
LSAgRVhQRUNUX1NUUkVRKCIiLCBlbXB0eS5wYXR0ZXJuKCkpOwotCi0gIGNvbnN0IFJFIHNpbXBs
ZShUeXBlUGFyYW0oImhlbGxvIikpOwotICBFWFBFQ1RfU1RSRVEoImhlbGxvIiwgc2ltcGxlLnBh
dHRlcm4oKSk7Ci0KLSAgY29uc3QgUkUgbm9ybWFsKFR5cGVQYXJhbSgiLiooXFx3KykiKSk7Ci0g
IEVYUEVDVF9TVFJFUSgiLiooXFx3KykiLCBub3JtYWwucGF0dGVybigpKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBSRSdzIGNvbnN0cnVjdG9ycyByZWplY3QgaW52YWxpZCByZWd1bGFyIGV4cHJlc3Np
b25zLgotVFlQRURfVEVTVChSRVRlc3QsIFJlamVjdHNJbnZhbGlkUmVnZXgpIHsKLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoewotICAgIGNvbnN0IFJFIGludmFsaWQoVHlwZVBhcmFtKCI/Iikp
OwotICB9LCAiXCI/XCIgaXMgbm90IGEgdmFsaWQgUE9TSVggRXh0ZW5kZWQgcmVndWxhciBleHBy
ZXNzaW9uLiIpOwotfQotCi0vLyBUZXN0cyBSRTo6RnVsbE1hdGNoKCkuCi1UWVBFRF9URVNUKFJF
VGVzdCwgRnVsbE1hdGNoV29ya3MpIHsKLSAgY29uc3QgUkUgZW1wdHkoVHlwZVBhcmFtKCIiKSk7
Ci0gIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCIiKSwgZW1wdHkpKTsKLSAg
RVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJhIiksIGVtcHR5KSk7Ci0KLSAg
Y29uc3QgUkUgcmUoVHlwZVBhcmFtKCJhLip6IikpOwotICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1h
dGNoKFR5cGVQYXJhbSgiYXoiKSwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaChU
eXBlUGFyYW0oImF4eXoiKSwgcmUpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goVHlw
ZVBhcmFtKCJiYXoiKSwgcmUpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goVHlwZVBh
cmFtKCJhenkiKSwgcmUpKTsKLX0KLQotLy8gVGVzdHMgUkU6OlBhcnRpYWxNYXRjaCgpLgotVFlQ
RURfVEVTVChSRVRlc3QsIFBhcnRpYWxNYXRjaFdvcmtzKSB7Ci0gIGNvbnN0IFJFIGVtcHR5KFR5
cGVQYXJhbSgiIikpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgi
IiksIGVtcHR5KSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCJh
IiksIGVtcHR5KSk7Ci0KLSAgY29uc3QgUkUgcmUoVHlwZVBhcmFtKCJhLip6IikpOwotICBFWFBF
Q1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiYXoiKSwgcmUpKTsKLSAgRVhQRUNU
X1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oImF4eXoiKSwgcmUpKTsKLSAgRVhQRUNU
X1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oImJheiIpLCByZSkpOwotICBFWFBFQ1Rf
VFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiYXp5IiksIHJlKSk7Ci0gIEVYUEVDVF9G
QUxTRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgienphIiksIHJlKSk7Ci19Ci0KLSNlbmRp
ZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QKLQotI2VsaWYgR1RFU1RfVVNFU19TSU1QTEVfUkUK
LQotVEVTVChJc0luU2V0VGVzdCwgTnVsQ2hhcklzTm90SW5BbnlTZXQpIHsKLSAgRVhQRUNUX0ZB
TFNFKElzSW5TZXQoJ1wwJywgIiIpKTsKLSAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ1wwJywgIlww
IikpOwotICBFWFBFQ1RfRkFMU0UoSXNJblNldCgnXDAnLCAiYSIpKTsKLX0KLQotVEVTVChJc0lu
U2V0VGVzdCwgV29ya3NGb3JOb25OdWxDaGFycykgewotICBFWFBFQ1RfRkFMU0UoSXNJblNldCgn
YScsICJBYiIpKTsKLSAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ2MnLCAiIikpOwotCi0gIEVYUEVD
VF9UUlVFKElzSW5TZXQoJ2InLCAiYmNkIikpOwotICBFWFBFQ1RfVFJVRShJc0luU2V0KCdiJywg
ImFiIikpOwotfQotCi1URVNUKElzRGlnaXRUZXN0LCBJc0ZhbHNlRm9yTm9uRGlnaXQpIHsKLSAg
RVhQRUNUX0ZBTFNFKElzRGlnaXQoJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNEaWdpdCgnICcp
KTsKLSAgRVhQRUNUX0ZBTFNFKElzRGlnaXQoJysnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0RpZ2l0
KCctJykpOwotICBFWFBFQ1RfRkFMU0UoSXNEaWdpdCgnLicpKTsKLSAgRVhQRUNUX0ZBTFNFKElz
RGlnaXQoJ2EnKSk7Ci19Ci0KLVRFU1QoSXNEaWdpdFRlc3QsIElzVHJ1ZUZvckRpZ2l0KSB7Ci0g
IEVYUEVDVF9UUlVFKElzRGlnaXQoJzAnKSk7Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQoJzEnKSk7
Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQoJzUnKSk7Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQoJzkn
KSk7Ci19Ci0KLVRFU1QoSXNQdW5jdFRlc3QsIElzRmFsc2VGb3JOb25QdW5jdCkgewotICBFWFBF
Q1RfRkFMU0UoSXNQdW5jdCgnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1B1bmN0KCcgJykpOwot
ICBFWFBFQ1RfRkFMU0UoSXNQdW5jdCgnXG4nKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1B1bmN0KCdh
JykpOwotICBFWFBFQ1RfRkFMU0UoSXNQdW5jdCgnMCcpKTsKLX0KLQotVEVTVChJc1B1bmN0VGVz
dCwgSXNUcnVlRm9yUHVuY3QpIHsKLSAgZm9yIChjb25zdCBjaGFyKiBwID0gIl4tIVwiIyQlJico
KSorLC4vOjs8PT4/QFtcXF1fYHt8fX4iOyAqcDsgcCsrKSB7Ci0gICAgRVhQRUNUX1BSRUQxKElz
UHVuY3QsICpwKTsKLSAgfQotfQotCi1URVNUKElzUmVwZWF0VGVzdCwgSXNGYWxzZUZvck5vblJl
cGVhdENoYXIpIHsKLSAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCdcMCcpKTsKLSAgRVhQRUNUX0ZB
TFNFKElzUmVwZWF0KCcgJykpOwotICBFWFBFQ1RfRkFMU0UoSXNSZXBlYXQoJ2EnKSk7Ci0gIEVY
UEVDVF9GQUxTRShJc1JlcGVhdCgnMScpKTsKLSAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCctJykp
OwotfQotCi1URVNUKElzUmVwZWF0VGVzdCwgSXNUcnVlRm9yUmVwZWF0Q2hhcikgewotICBFWFBF
Q1RfVFJVRShJc1JlcGVhdCgnPycpKTsKLSAgRVhQRUNUX1RSVUUoSXNSZXBlYXQoJyonKSk7Ci0g
IEVYUEVDVF9UUlVFKElzUmVwZWF0KCcrJykpOwotfQotCi1URVNUKElzV2hpdGVTcGFjZVRlc3Qs
IElzRmFsc2VGb3JOb25XaGl0ZVNwYWNlKSB7Ci0gIEVYUEVDVF9GQUxTRShJc1doaXRlU3BhY2Uo
J1wwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNXaGl0ZVNwYWNlKCdhJykpOwotICBFWFBFQ1RfRkFM
U0UoSXNXaGl0ZVNwYWNlKCcxJykpOwotICBFWFBFQ1RfRkFMU0UoSXNXaGl0ZVNwYWNlKCcrJykp
OwotICBFWFBFQ1RfRkFMU0UoSXNXaGl0ZVNwYWNlKCdfJykpOwotfQotCi1URVNUKElzV2hpdGVT
cGFjZVRlc3QsIElzVHJ1ZUZvcldoaXRlU3BhY2UpIHsKLSAgRVhQRUNUX1RSVUUoSXNXaGl0ZVNw
YWNlKCcgJykpOwotICBFWFBFQ1RfVFJVRShJc1doaXRlU3BhY2UoJ1xuJykpOwotICBFWFBFQ1Rf
VFJVRShJc1doaXRlU3BhY2UoJ1xyJykpOwotICBFWFBFQ1RfVFJVRShJc1doaXRlU3BhY2UoJ1x0
JykpOwotICBFWFBFQ1RfVFJVRShJc1doaXRlU3BhY2UoJ1x2JykpOwotICBFWFBFQ1RfVFJVRShJ
c1doaXRlU3BhY2UoJ1xmJykpOwotfQotCi1URVNUKElzV29yZENoYXJUZXN0LCBJc0ZhbHNlRm9y
Tm9uV29yZENoYXIpIHsKLSAgRVhQRUNUX0ZBTFNFKElzV29yZENoYXIoJ1wwJykpOwotICBFWFBF
Q1RfRkFMU0UoSXNXb3JkQ2hhcignKycpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV29yZENoYXIoJy4n
KSk7Ci0gIEVYUEVDVF9GQUxTRShJc1dvcmRDaGFyKCcgJykpOwotICBFWFBFQ1RfRkFMU0UoSXNX
b3JkQ2hhcignXG4nKSk7Ci19Ci0KLVRFU1QoSXNXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvckxldHRl
cikgewotICBFWFBFQ1RfVFJVRShJc1dvcmRDaGFyKCdhJykpOwotICBFWFBFQ1RfVFJVRShJc1dv
cmRDaGFyKCdiJykpOwotICBFWFBFQ1RfVFJVRShJc1dvcmRDaGFyKCdBJykpOwotICBFWFBFQ1Rf
VFJVRShJc1dvcmRDaGFyKCdaJykpOwotfQotCi1URVNUKElzV29yZENoYXJUZXN0LCBJc1RydWVG
b3JEaWdpdCkgewotICBFWFBFQ1RfVFJVRShJc1dvcmRDaGFyKCcwJykpOwotICBFWFBFQ1RfVFJV
RShJc1dvcmRDaGFyKCcxJykpOwotICBFWFBFQ1RfVFJVRShJc1dvcmRDaGFyKCc3JykpOwotICBF
WFBFQ1RfVFJVRShJc1dvcmRDaGFyKCc5JykpOwotfQotCi1URVNUKElzV29yZENoYXJUZXN0LCBJ
c1RydWVGb3JVbmRlcnNjb3JlKSB7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJ18nKSk7Ci19
Ci0KLVRFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzRmFsc2VGb3JOb25QcmludGFibGUpIHsKLSAg
RVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNWYWxp
ZEVzY2FwZSgnXDAwNycpKTsKLX0KLQotVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZv
ckRpZ2l0KSB7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCcwJykpOwotICBFWFBFQ1Rf
RkFMU0UoSXNWYWxpZEVzY2FwZSgnOScpKTsKLX0KLQotVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwg
SXNGYWxzZUZvcldoaXRlU3BhY2UpIHsKLSAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJyAn
KSk7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdcbicpKTsKLX0KLQotVEVTVChJc1Zh
bGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZvclNvbWVMZXR0ZXIpIHsKLSAgRVhQRUNUX0ZBTFNFKElz
VmFsaWRFc2NhcGUoJ2EnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdaJykpOwot
fQotCi1URVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc1RydWVGb3JQdW5jdCkgewotICBFWFBFQ1Rf
VFJVRShJc1ZhbGlkRXNjYXBlKCcuJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCct
JykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdeJykpOwotICBFWFBFQ1RfVFJVRShJ
c1ZhbGlkRXNjYXBlKCckJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCcoJykpOwot
ICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCddJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlk
RXNjYXBlKCd7JykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCd8JykpOwotfQotCi1U
RVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc1RydWVGb3JTb21lTGV0dGVyKSB7Ci0gIEVYUEVDVF9U
UlVFKElzVmFsaWRFc2NhcGUoJ2QnKSk7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ0Qn
KSk7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ3MnKSk7Ci0gIEVYUEVDVF9UUlVFKElz
VmFsaWRFc2NhcGUoJ1MnKSk7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ3cnKSk7Ci0g
IEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ1cnKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXND
aGFyVGVzdCwgRXNjYXBlZFB1bmN0KSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ1xcJywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICdcXCcsICcgJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdfJywg
Jy4nKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJy4nLCAnYScpKTsK
LQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1xcJywgJ1xcJykpOwotICBF
WFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ18nLCAnXycpKTsKLSAgRVhQRUNUX1RS
VUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICcrJywgJysnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAnLicsICcuJykpOwotfQotCi1URVNUKEF0b21NYXRjaGVzQ2hhclRl
c3QsIEVzY2FwZWRfZCkgewotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdk
JywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywgJ2En
KSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnLicpKTsKLQot
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnMCcpKTsKLSAgRVhQRUNU
X1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywgJzknKSk7Ci19Ci0KLVRFU1QoQXRvbU1h
dGNoZXNDaGFyVGVzdCwgRXNjYXBlZF9EKSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ0QnLCAnMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVl
LCAnRCcsICc5JykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcs
ICdcMCcpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJ2EnKSk7
Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcsICctJykpOwotfQotCi1U
RVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfcykgewotICBFWFBFQ1RfRkFMU0UoQXRv
bU1hdGNoZXNDaGFyKHRydWUsICdzJywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNo
ZXNDaGFyKHRydWUsICdzJywgJ2EnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ3MnLCAnLicpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
cycsICc5JykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICcg
JykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnXG4nKSk7Ci0g
IEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICdcdCcpKTsKLX0KLQotVEVT
VChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX1MpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAnUycsICcgJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICdTJywgJ1xyJykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAnUycsICdcMCcpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdT
JywgJ2EnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICc5Jykp
OwotfQotCi1URVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfdykgewotICBFWFBFQ1Rf
RkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0Uo
QXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJysnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0
Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnICcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hh
cih0cnVlLCAndycsICdcbicpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ3cnLCAnMCcpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3Jywg
J2InKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdDJykpOwot
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnXycpKTsKLX0KLQotVEVT
VChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX1cpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAnVycsICdBJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICdXJywgJ2InKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ1cnLCAnOScpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycs
ICdfJykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICdcMCcp
KTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJyonKSk7Ci0gIEVY
UEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICdcbicpKTsKLX0KLQotVEVTVChB
dG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkV2hpdGVTcGFjZSkgewotICBFWFBFQ1RfRkFMU0Uo
QXRvbU1hdGNoZXNDaGFyKHRydWUsICdmJywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICdmJywgJ1xuJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICduJywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICduJywgJ1xyJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdy
JywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdyJywgJ2En
KSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3QnLCAnXDAnKSk7Ci0g
IEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3QnLCAndCcpKTsKLSAgRVhQRUNU
X0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndicsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndicsICdcZicpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ2YnLCAnXGYnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAnbicsICdcbicpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICdyJywgJ1xyJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3Qn
LCAnXHQnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndicsICdcdicp
KTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBVbmVzY2FwZWREb3QpIHsKLSAgRVhQ
RUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4nLCAnXG4nKSk7Ci0KLSAgRVhQRUNU
X1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnLicsICdcMCcpKTsKLSAgRVhQRUNUX1RSVUUo
QXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnLicsICcuJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0
Y2hlc0NoYXIoZmFsc2UsICcuJywgJ2EnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hh
cihmYWxzZSwgJy4nLCAnICcpKTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBVbmVz
Y2FwZWRDaGFyKSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICdhJywg
J1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnYScsICdiJykp
OwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnJCcsICdhJykpOwotCi0g
IEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJyQnLCAnJCcpKTsKLSAgRVhQRUNU
X1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnNScsICc1JykpOwotICBFWFBFQ1RfVFJVRShB
dG9tTWF0Y2hlc0NoYXIoZmFsc2UsICdaJywgJ1onKSk7Ci19Ci0KLVRFU1QoVmFsaWRhdGVSZWdl
eFRlc3QsIEdlbmVyYXRlc0ZhaWx1cmVBbmRSZXR1cm5zRmFsc2VGb3JJbnZhbGlkKSB7Ci0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KE5VTEwpKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIk5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxlIHJl
Z3VsYXIgZXhwcmVzc2lvbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKLSAgICAgIEFT
U0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJhXFwiKSksCi0gICAgICAiU3ludGF4IGVycm9yIGF0
IGluZGV4IDEgaW4gc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiBcImFcXFwiOiAiKTsKLSAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImFcXCIpKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIidcXCcgY2Fubm90IGFwcGVhciBhdCB0aGUgZW5k
Iik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4
KCJcXG5cXCIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIidcXCcgY2Fubm90IGFwcGVh
ciBhdCB0aGUgZW5kIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShW
YWxpZGF0ZVJlZ2V4KCJcXHNcXGhiIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52
YWxpZCBlc2NhcGUgc2VxdWVuY2UgXCJcXGhcIiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiXl4iKSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICInXicgY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBiZWdpbm5pbmciKTsKLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIi4qXmIiKSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICInXicgY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBiZWdp
bm5pbmciKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRl
UmVnZXgoIiQkIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJyQnIGNhbiBvbmx5IGFw
cGVhciBhdCB0aGUgZW5kIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxT
RShWYWxpZGF0ZVJlZ2V4KCJeJGEiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInJCcg
Y2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBlbmQiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
QVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImEoYiIpKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIicoJyBpcyB1bnN1cHBvcnRlZCIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShB
U1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiYWIpIikpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAiJyknIGlzIHVuc3VwcG9ydGVkIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFT
U0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJbYWIiKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICInWycgaXMgdW5zdXBwb3J0ZWQiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNT
RVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImF7MiIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIid7JyBpcyB1bnN1cHBvcnRlZCIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NF
UlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiPyIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
Iic/JyBjYW4gb25seSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2VuIik7Ci0gIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJeKiIpKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIicqJyBjYW4gb25seSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2Vu
Iik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4
KCI1KisiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInKycgY2FuIG9ubHkgZm9sbG93
IGEgcmVwZWF0YWJsZSB0b2tlbiIpOwotfQotCi1URVNUKFZhbGlkYXRlUmVnZXhUZXN0LCBSZXR1
cm5zVHJ1ZUZvclZhbGlkKSB7Ci0gIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIiIpKTsKLSAg
RVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiYSIpKTsKLSAgRVhQRUNUX1RSVUUoVmFsaWRhdGVS
ZWdleCgiLioiKSk7Ci0gIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIl5hXysiKSk7Ci0gIEVY
UEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIl5hXFx0XFwmPyIpKTsKLSAgRVhQRUNUX1RSVUUoVmFs
aWRhdGVSZWdleCgiMDkqJCIpKTsKLSAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiXlokIikp
OwotICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCJhXFxeWlxcJFxcKFxcKVxcfFxcW1xcXVxc
e1xcfSIpKTsKLX0KLQotVEVTVChNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZFRlc3QsIFdv
cmtzRm9yWmVyb09yT25lKSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdl
eEF0SGVhZChmYWxzZSwgJ2EnLCAnPycsICJhIiwgImJhIikpOwotICAvLyBSZXBlYXRpbmcgbW9y
ZSB0aGFuIG9uY2UuCi0gIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVh
ZChmYWxzZSwgJ2EnLCAnPycsICJiIiwgImFhYiIpKTsKLQotICAvLyBSZXBlYXRpbmcgemVybyB0
aW1lcy4KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2Us
ICdhJywgJz8nLCAiYiIsICJiYSIpKTsKLSAgLy8gUmVwZWF0aW5nIG9uY2UuCi0gIEVYUEVDVF9U
UlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImIiLCAi
YWIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNl
LCAnIycsICc/JywgIi4iLCAiIyMiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZXBldGl0aW9uQW5kUmVn
ZXhBdEhlYWRUZXN0LCBXb3Jrc0Zvclplcm9Pck1hbnkpIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNo
UmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcqJywgImEkIiwgImJhYWIiKSk7
Ci0KLSAgLy8gUmVwZWF0aW5nIHplcm8gdGltZXMuCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRp
dGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcqJywgImIiLCAiYmMiKSk7Ci0gIC8vIFJl
cGVhdGluZyBvbmNlLgotICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVh
ZChmYWxzZSwgJy4nLCAnKicsICJiIiwgImFiYyIpKTsKLSAgLy8gUmVwZWF0aW5nIG1vcmUgdGhh
biBvbmNlLgotICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZCh0cnVl
LCAndycsICcqJywgIi0iLCAiYWJfMS1nIikpOwotfQotCi1URVNUKE1hdGNoUmVwZXRpdGlvbkFu
ZFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NGb3JPbmVPck1hbnkpIHsKLSAgRVhQRUNUX0ZBTFNFKE1h
dGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcrJywgImEkIiwgImJhYWIi
KSk7Ci0gIC8vIFJlcGVhdGluZyB6ZXJvIHRpbWVzLgotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZXBl
dGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJysnLCAiYiIsICJiYyIpKTsKLQotICAv
LyBSZXBlYXRpbmcgb25jZS4KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhB
dEhlYWQoZmFsc2UsICcuJywgJysnLCAiYiIsICJhYmMiKSk7Ci0gIC8vIFJlcGVhdGluZyBtb3Jl
IHRoYW4gb25jZS4KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQo
dHJ1ZSwgJ3cnLCAnKycsICItIiwgImFiXzEtZyIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QXRI
ZWFkVGVzdCwgUmV0dXJuc1RydWVGb3JFbXB0eVJlZ2V4KSB7Ci0gIEVYUEVDVF9UUlVFKE1hdGNo
UmVnZXhBdEhlYWQoIiIsICIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIiIs
ICJhYiIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NXaGVuRG9sbGFy
SXNJblJlZ2V4KSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCIkIiwgImEiKSk7
Ci0KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiJCIsICIiKSk7Ci0gIEVYUEVDVF9U
UlVFKE1hdGNoUmVnZXhBdEhlYWQoImEkIiwgImEiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEF0
SGVhZFRlc3QsIFdvcmtzV2hlblJlZ2V4U3RhcnRzV2l0aEVzY2FwZVNlcXVlbmNlKSB7Ci0gIEVY
UEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJcXHciLCAiKyIpKTsKLSAgRVhQRUNUX0ZBTFNF
KE1hdGNoUmVnZXhBdEhlYWQoIlxcVyIsICJhYiIpKTsKLQotICBFWFBFQ1RfVFJVRShNYXRjaFJl
Z2V4QXRIZWFkKCJcXHNhIiwgIlxuYWIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhl
YWQoIlxcZCIsICIxYSIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NX
aGVuUmVnZXhTdGFydHNXaXRoUmVwZXRpdGlvbikgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdl
eEF0SGVhZCgiLithIiwgImFiYyIpKTsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQo
ImE/YiIsICJhYWIiKSk7Ci0KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiLiphIiwg
ImJjMTItYWIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoImE/YiIsICJiIikp
OwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJhP2IiLCAiYWIiKSk7Ci19Ci0KLVRF
U1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsCi0gICAgIFdvcmtzV2hlblJlZ2V4U3RhcnRzV2l0aFJl
cGV0aW9uT2ZFc2NhcGVTZXF1ZW5jZSkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVh
ZCgiXFwuK2EiLCAiYWJjIikpOwotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiXFxz
P2IiLCAiICBiIikpOwotCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcKCphIiwg
IigoKChhYiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxeP2IiLCAiXmIi
KSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcXFw/YiIsICJiIikpOwotICBF
WFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXFxcP2IiLCAiXFxiIikpOwotfQotCi1URVNU
KE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBNYXRjaGVzU2VxdWVudGlhbGx5KSB7Ci0gIEVYUEVDVF9G
QUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJhYi4qYyIsICJhY2FiYyIpKTsKLQotICBFWFBFQ1RfVFJV
RShNYXRjaFJlZ2V4QXRIZWFkKCJhYi4qYyIsICJhYi1mc2MiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hS
ZWdleEFueXdoZXJlVGVzdCwgUmV0dXJuc0ZhbHNlV2hlblN0cmluZ0lzTnVsbCkgewotICBFWFBF
Q1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJlKCIiLCBOVUxMKSk7Ci19Ci0KLVRFU1QoTWF0Y2hS
ZWdleEFueXdoZXJlVGVzdCwgV29ya3NXaGVuUmVnZXhTdGFydHNXaXRoQ2FyZXQpIHsKLSAgRVhQ
RUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXmEiLCAiYmEiKSk7Ci0gIEVYUEVDVF9GQUxT
RShNYXRjaFJlZ2V4QW55d2hlcmUoIl4kIiwgImEiKSk7Ci0KLSAgRVhQRUNUX1RSVUUoTWF0Y2hS
ZWdleEFueXdoZXJlKCJeYSIsICJhYiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdo
ZXJlKCJeIiwgImFiIikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIl4kIiwg
IiIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5zRmFsc2VXaGVu
Tm9NYXRjaCkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJlKCJhIiwgImJjZGUx
MjMiKSk7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoImEuK2EiLCAiLS1hYTg4
ODg4ODg4IikpOwotfQotCi1URVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFJldHVybnNUcnVl
V2hlbk1hdGNoaW5nUHJlZml4KSB7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgi
XFx3KyIsICJhYjFfIC0gNSIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCIu
Kj0iLCAiPSIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJ4LiphYj8uKmJj
IiwgInhhYWFiYyIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5z
VHJ1ZVdoZW5NYXRjaGluZ05vblByZWZpeCkgewotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55
d2hlcmUoIlxcdysiLCAiJCQkIGFiMV8gLSA1IikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4
QW55d2hlcmUoIlxcLis9IiwgIj0gIC4uLj0iKSk7Ci19Ci0KLS8vIFRlc3RzIFJFJ3MgaW1wbGlj
aXQgY29uc3RydWN0b3JzLgotVEVTVChSRVRlc3QsIEltcGxpY2l0Q29uc3RydWN0b3JXb3Jrcykg
ewotICBjb25zdCBSRSBlbXB0eSgiIik7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgZW1wdHkucGF0dGVy
bigpKTsKLQotICBjb25zdCBSRSBzaW1wbGUoImhlbGxvIik7Ci0gIEVYUEVDVF9TVFJFUSgiaGVs
bG8iLCBzaW1wbGUucGF0dGVybigpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBSRSdzIGNvbnN0cnVj
dG9ycyByZWplY3QgaW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb25zLgotVEVTVChSRVRlc3QsIFJl
amVjdHNJbnZhbGlkUmVnZXgpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIGNv
bnN0IFJFIG5vcm1hbChOVUxMKTsKLSAgfSwgIk5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxlIHJl
Z3VsYXIgZXhwcmVzc2lvbiIpOwotCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBj
b25zdCBSRSBub3JtYWwoIi4qKFxcdysiKTsKLSAgfSwgIicoJyBpcyB1bnN1cHBvcnRlZCIpOwot
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBjb25zdCBSRSBpbnZhbGlkKCJePyIp
OwotICB9LCAiJz8nIGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVhdGFibGUgdG9rZW4iKTsKLX0KLQot
Ly8gVGVzdHMgUkU6OkZ1bGxNYXRjaCgpLgotVEVTVChSRVRlc3QsIEZ1bGxNYXRjaFdvcmtzKSB7
Ci0gIGNvbnN0IFJFIGVtcHR5KCIiKTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaCgiIiwg
ZW1wdHkpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goImEiLCBlbXB0eSkpOwotCi0g
IGNvbnN0IFJFIHJlMSgiYSIpOwotICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKCJhIiwgcmUx
KSk7Ci0KLSAgY29uc3QgUkUgcmUoImEuKnoiKTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRj
aCgiYXoiLCByZSkpOwotICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKCJheHl6IiwgcmUpKTsK
LSAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goImJheiIsIHJlKSk7Ci0gIEVYUEVDVF9GQUxT
RShSRTo6RnVsbE1hdGNoKCJhenkiLCByZSkpOwotfQotCi0vLyBUZXN0cyBSRTo6UGFydGlhbE1h
dGNoKCkuCi1URVNUKFJFVGVzdCwgUGFydGlhbE1hdGNoV29ya3MpIHsKLSAgY29uc3QgUkUgZW1w
dHkoIiIpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCIiLCBlbXB0eSkpOwotICBF
WFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCJhIiwgZW1wdHkpKTsKLQotICBjb25zdCBSRSBy
ZSgiYS4qeiIpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCJheiIsIHJlKSk7Ci0g
IEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImF4eXoiLCByZSkpOwotICBFWFBFQ1RfVFJV
RShSRTo6UGFydGlhbE1hdGNoKCJiYXoiLCByZSkpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlh
bE1hdGNoKCJhenkiLCByZSkpOwotICBFWFBFQ1RfRkFMU0UoUkU6OlBhcnRpYWxNYXRjaCgienph
IiwgcmUpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9VU0VTX1BPU0lYX1JFCi0KLSNpZiAhR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKLQotVEVTVChDYXB0dXJlVGVzdCwgQ2FwdHVyZXNTdGRvdXQp
IHsKLSAgQ2FwdHVyZVN0ZG91dCgpOwotICBmcHJpbnRmKHN0ZG91dCwgImFiYyIpOwotICBFWFBF
Q1RfU1RSRVEoImFiYyIsIEdldENhcHR1cmVkU3Rkb3V0KCkuY19zdHIoKSk7Ci0KLSAgQ2FwdHVy
ZVN0ZG91dCgpOwotICBmcHJpbnRmKHN0ZG91dCwgImRlZiVjZ2hpIiwgJ1wwJyk7Ci0gIEVYUEVD
VF9FUSg6OnN0ZDo6c3RyaW5nKCJkZWZcMGdoaSIsIDcpLCA6OnN0ZDo6c3RyaW5nKEdldENhcHR1
cmVkU3Rkb3V0KCkpKTsKLX0KLQotVEVTVChDYXB0dXJlVGVzdCwgQ2FwdHVyZXNTdGRlcnIpIHsK
LSAgQ2FwdHVyZVN0ZGVycigpOwotICBmcHJpbnRmKHN0ZGVyciwgImprbCIpOwotICBFWFBFQ1Rf
U1RSRVEoImprbCIsIEdldENhcHR1cmVkU3RkZXJyKCkuY19zdHIoKSk7Ci0KLSAgQ2FwdHVyZVN0
ZGVycigpOwotICBmcHJpbnRmKHN0ZGVyciwgImprbCVjbW5vIiwgJ1wwJyk7Ci0gIEVYUEVDVF9F
USg6OnN0ZDo6c3RyaW5nKCJqa2xcMG1ubyIsIDcpLCA6OnN0ZDo6c3RyaW5nKEdldENhcHR1cmVk
U3RkZXJyKCkpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBzdGRvdXQgYW5kIHN0ZGVyciBjYXB0dXJl
IGRvbid0IGludGVyZmVyZSB3aXRoIGVhY2ggb3RoZXIuCi1URVNUKENhcHR1cmVUZXN0LCBDYXB0
dXJlc1N0ZG91dEFuZFN0ZGVycikgewotICBDYXB0dXJlU3Rkb3V0KCk7Ci0gIENhcHR1cmVTdGRl
cnIoKTsKLSAgZnByaW50ZihzdGRvdXQsICJwcXIiKTsKLSAgZnByaW50ZihzdGRlcnIsICJzdHUi
KTsKLSAgRVhQRUNUX1NUUkVRKCJwcXIiLCBHZXRDYXB0dXJlZFN0ZG91dCgpLmNfc3RyKCkpOwot
ICBFWFBFQ1RfU1RSRVEoInN0dSIsIEdldENhcHR1cmVkU3RkZXJyKCkuY19zdHIoKSk7Ci19Ci0K
LVRFU1QoQ2FwdHVyZURlYXRoVGVzdCwgQ2Fubm90UmVlbnRlclN0ZG91dENhcHR1cmUpIHsKLSAg
Q2FwdHVyZVN0ZG91dCgpOwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKENhcHR1cmVTdGRv
dXQoKTssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9ubHkgb25lIHN0ZG91dCBjYXB0
dXJlciBjYW4gZXhpc3QgYXQgYSB0aW1lIik7Ci0gIEdldENhcHR1cmVkU3Rkb3V0KCk7Ci0KLSAg
Ly8gV2UgY2Fubm90IHRlc3Qgc3RkZXJyIGNhcHR1cmluZyB1c2luZyBkZWF0aCB0ZXN0cyBhcyB0
aGV5IHVzZSBpdAotICAvLyB0aGVtc2VsdmVzLgotfQotCi0jZW5kaWYgIC8vICFHVEVTVF9PU19X
SU5ET1dTX01PQklMRQotCi1URVNUKFRocmVhZExvY2FsVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9y
SW5pdGlhbGl6ZXNUb0RlZmF1bHRWYWx1ZXMpIHsKLSAgVGhyZWFkTG9jYWw8aW50PiB0MTsKLSAg
RVhQRUNUX0VRKDAsIHQxLmdldCgpKTsKLQotICBUaHJlYWRMb2NhbDx2b2lkKj4gdDI7Ci0gIEVY
UEVDVF9UUlVFKHQyLmdldCgpID09IE5VTEwpOwotfQotCi1URVNUKFRocmVhZExvY2FsVGVzdCwg
U2luZ2xlUGFyYW1Db25zdHJ1Y3RvckluaXRpYWxpemVzVG9QYXJhbSkgewotICBUaHJlYWRMb2Nh
bDxpbnQ+IHQxKDEyMyk7Ci0gIEVYUEVDVF9FUSgxMjMsIHQxLmdldCgpKTsKLQotICBpbnQgaSA9
IDA7Ci0gIFRocmVhZExvY2FsPGludCo+IHQyKCZpKTsKLSAgRVhQRUNUX0VRKCZpLCB0Mi5nZXQo
KSk7Ci19Ci0KLWNsYXNzIE5vRGVmYXVsdENvbnRydWN0b3IgewotIHB1YmxpYzoKLSAgZXhwbGlj
aXQgTm9EZWZhdWx0Q29udHJ1Y3Rvcihjb25zdCBjaGFyKikge30KLSAgTm9EZWZhdWx0Q29udHJ1
Y3Rvcihjb25zdCBOb0RlZmF1bHRDb250cnVjdG9yJikge30KLX07Ci0KLVRFU1QoVGhyZWFkTG9j
YWxUZXN0LCBWYWx1ZURlZmF1bHRDb250cnVjdG9ySXNOb3RSZXF1aXJlZEZvclBhcmFtVmVyc2lv
bikgewotICBUaHJlYWRMb2NhbDxOb0RlZmF1bHRDb250cnVjdG9yPiBiYXIoTm9EZWZhdWx0Q29u
dHJ1Y3RvcigiZm9vIikpOwotICBiYXIucG9pbnRlcigpOwotfQotCi1URVNUKFRocmVhZExvY2Fs
VGVzdCwgR2V0QW5kUG9pbnRlclJldHVyblNhbWVWYWx1ZSkgewotICBUaHJlYWRMb2NhbDxTdHJp
bmc+IHRocmVhZF9sb2NhbDsKLQotICBFWFBFQ1RfRVEodGhyZWFkX2xvY2FsLnBvaW50ZXIoKSwg
Jih0aHJlYWRfbG9jYWwuZ2V0KCkpKTsKLQotICAvLyBWZXJpZmllcyB0aGUgY29uZGl0aW9uIHN0
aWxsIGhvbGRzIGFmdGVyIGNhbGxpbmcgc2V0LgotICB0aHJlYWRfbG9jYWwuc2V0KCJmb28iKTsK
LSAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbC5wb2ludGVyKCksICYodGhyZWFkX2xvY2FsLmdldCgp
KSk7Ci19Ci0KLVRFU1QoVGhyZWFkTG9jYWxUZXN0LCBQb2ludGVyQW5kQ29uc3RQb2ludGVyUmV0
dXJuU2FtZVZhbHVlKSB7Ci0gIFRocmVhZExvY2FsPFN0cmluZz4gdGhyZWFkX2xvY2FsOwotICBj
b25zdCBUaHJlYWRMb2NhbDxTdHJpbmc+JiBjb25zdF90aHJlYWRfbG9jYWwgPSB0aHJlYWRfbG9j
YWw7Ci0KLSAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbC5wb2ludGVyKCksIGNvbnN0X3RocmVhZF9s
b2NhbC5wb2ludGVyKCkpOwotCi0gIHRocmVhZF9sb2NhbC5zZXQoImZvbyIpOwotICBFWFBFQ1Rf
RVEodGhyZWFkX2xvY2FsLnBvaW50ZXIoKSwgY29uc3RfdGhyZWFkX2xvY2FsLnBvaW50ZXIoKSk7
Ci19Ci0KLSNpZiBHVEVTVF9JU19USFJFQURTQUZFCi0KLXZvaWQgQWRkVHdvKGludCogcGFyYW0p
IHsgKnBhcmFtICs9IDI7IH0KLQotVEVTVChUaHJlYWRXaXRoUGFyYW1UZXN0LCBDb25zdHJ1Y3Rv
ckV4ZWN1dGVzVGhyZWFkRnVuYykgewotICBpbnQgaSA9IDQwOwotICBUaHJlYWRXaXRoUGFyYW08
aW50Kj4gdGhyZWFkKCZBZGRUd28sICZpLCBOVUxMKTsKLSAgdGhyZWFkLkpvaW4oKTsKLSAgRVhQ
RUNUX0VRKDQyLCBpKTsKLX0KLQotVEVTVChNdXRleERlYXRoVGVzdCwgQXNzZXJ0SGVsZFNob3Vs
ZEFzc2VydFdoZW5Ob3RMb2NrZWQpIHsKLSAgLy8gQXNzZXJ0SGVsZCgpIGlzIGZsYWt5IG9ubHkg
aW4gdGhlIHByZXNlbmNlIG9mIG11bHRpcGxlIHRocmVhZHMgYWNjZXNzaW5nCi0gIC8vIHRoZSBs
b2NrLiBJbiB0aGlzIGNhc2UsIHRoZSB0ZXN0IGlzIHJvYnVzdC4KLSAgRVhQRUNUX0RFQVRIX0lG
X1NVUFBPUlRFRCh7Ci0gICAgTXV0ZXggbTsKLSAgICB7IE11dGV4TG9jayBsb2NrKCZtKTsgfQot
ICAgIG0uQXNzZXJ0SGVsZCgpOwotICB9LAotICAidGhyZWFkIC4qaG9sZCIpOwotfQotCi1URVNU
KE11dGV4VGVzdCwgQXNzZXJ0SGVsZFNob3VsZE5vdEFzc2VydFdoZW5Mb2NrZWQpIHsKLSAgTXV0
ZXggbTsKLSAgTXV0ZXhMb2NrIGxvY2soJm0pOwotICBtLkFzc2VydEhlbGQoKTsKLX0KLQotY2xh
c3MgQXRvbWljQ291bnRlcldpdGhNdXRleCB7Ci0gcHVibGljOgotICBleHBsaWNpdCBBdG9taWND
b3VudGVyV2l0aE11dGV4KE11dGV4KiBtdXRleCkgOgotICAgIHZhbHVlXygwKSwgbXV0ZXhfKG11
dGV4KSwgcmFuZG9tXyg0Mikge30KLQotICB2b2lkIEluY3JlbWVudCgpIHsKLSAgICBNdXRleExv
Y2sgbG9jayhtdXRleF8pOwotICAgIGludCB0ZW1wID0gdmFsdWVfOwotICAgIHsKLSAgICAgIC8v
IExvY2tpbmcgYSBtdXRleCBwdXRzIHVwIGEgbWVtb3J5IGJhcnJpZXIsIHByZXZlbnRpbmcgcmVh
ZHMgYW5kCi0gICAgICAvLyB3cml0ZXMgdG8gdmFsdWVfIHJlYXJyYW5nZWQgd2hlbiBvYnNlcnZl
ZCBmcm9tIG90aGVyIHRocmVhZHMuCi0gICAgICAvLwotICAgICAgLy8gV2UgY2Fubm90IHVzZSBN
dXRleCBhbmQgTXV0ZXhMb2NrIGhlcmUgb3IgcmVseSBvbiB0aGVpciBtZW1vcnkKLSAgICAgIC8v
IGJhcnJpZXIgZnVuY3Rpb25hbGl0eSBhcyB3ZSBhcmUgdGVzdGluZyB0aGVtIGhlcmUuCi0gICAg
ICBwdGhyZWFkX211dGV4X3QgbWVtb3J5X2JhcnJpZXJfbXV0ZXg7Ci0gICAgICBHVEVTVF9DSEVD
S19QT1NJWF9TVUNDRVNTXygKLSAgICAgICAgICBwdGhyZWFkX211dGV4X2luaXQoJm1lbW9yeV9i
YXJyaWVyX211dGV4LCBOVUxMKSk7Ci0gICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhw
dGhyZWFkX211dGV4X2xvY2soJm1lbW9yeV9iYXJyaWVyX211dGV4KSk7Ci0KLSAgICAgIFNsZWVw
TWlsbGlzZWNvbmRzKHJhbmRvbV8uR2VuZXJhdGUoMzApKTsKLQotICAgICAgR1RFU1RfQ0hFQ0tf
UE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF91bmxvY2soJm1lbW9yeV9iYXJyaWVyX211dGV4
KSk7Ci0gICAgfQotICAgIHZhbHVlXyA9IHRlbXAgKyAxOwotICB9Ci0gIGludCB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIHZhbHVlXzsgfQotCi0gcHJpdmF0ZToKLSAgdm9sYXRpbGUgaW50IHZhbHVl
XzsKLSAgTXV0ZXgqIGNvbnN0IG11dGV4XzsgIC8vIFByb3RlY3RzIHZhbHVlXy4KLSAgUmFuZG9t
ICAgICAgIHJhbmRvbV87Ci19OwotCi12b2lkIENvdW50aW5nVGhyZWFkRnVuYyhwYWlyPEF0b21p
Y0NvdW50ZXJXaXRoTXV0ZXgqLCBpbnQ+IHBhcmFtKSB7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwg
cGFyYW0uc2Vjb25kOyArK2kpCi0gICAgICBwYXJhbS5maXJzdC0+SW5jcmVtZW50KCk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgdGhlIG11dGV4IG9ubHkgbGV0cyBvbmUgdGhyZWFkIGF0IGEgdGltZSB0
byBsb2NrIGl0LgotVEVTVChNdXRleFRlc3QsIE9ubHlPbmVUaHJlYWRDYW5Mb2NrQXRBVGltZSkg
ewotICBNdXRleCBtdXRleDsKLSAgQXRvbWljQ291bnRlcldpdGhNdXRleCBsb2NrZWRfY291bnRl
cigmbXV0ZXgpOwotCi0gIHR5cGVkZWYgVGhyZWFkV2l0aFBhcmFtPHBhaXI8QXRvbWljQ291bnRl
cldpdGhNdXRleCosIGludD4gPiBUaHJlYWRUeXBlOwotICBjb25zdCBpbnQga0N5Y2xlQ291bnQg
PSAyMDsKLSAgY29uc3QgaW50IGtUaHJlYWRDb3VudCA9IDc7Ci0gIHNjb3BlZF9wdHI8VGhyZWFk
VHlwZT4gY291bnRpbmdfdGhyZWFkc1trVGhyZWFkQ291bnRdOwotICBOb3RpZmljYXRpb24gdGhy
ZWFkc19jYW5fc3RhcnQ7Ci0gIC8vIENyZWF0ZXMgYW5kIHJ1bnMga1RocmVhZENvdW50IHRocmVh
ZHMgdGhhdCBpbmNyZW1lbnQgbG9ja2VkX2NvdW50ZXIKLSAgLy8ga0N5Y2xlQ291bnQgdGltZXMg
ZWFjaC4KLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVGhyZWFkQ291bnQ7ICsraSkgewotICAgIGNv
dW50aW5nX3RocmVhZHNbaV0ucmVzZXQobmV3IFRocmVhZFR5cGUoJkNvdW50aW5nVGhyZWFkRnVu
YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VfcGFp
cigmbG9ja2VkX2NvdW50ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga0N5Y2xlQ291bnQpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnRocmVhZHNfY2FuX3N0YXJ0KSk7Ci0gIH0KLSAgdGhyZWFk
c19jYW5fc3RhcnQuTm90aWZ5KCk7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwga1RocmVhZENvdW50
OyArK2kpCi0gICAgY291bnRpbmdfdGhyZWFkc1tpXS0+Sm9pbigpOwotCi0gIC8vIElmIHRoZSBt
dXRleCBsZXRzIG1vcmUgdGhhbiBvbmUgdGhyZWFkIHRvIGluY3JlbWVudCB0aGUgY291bnRlciBh
dCBhCi0gIC8vIHRpbWUsIHRoZXkgYXJlIGxpa2VseSB0byBlbmNvdW50ZXIgYSByYWNlIGNvbmRp
dGlvbiBhbmQgaGF2ZSBzb21lCi0gIC8vIGluY3JlbWVudHMgb3ZlcndyaXR0ZW4sIHJlc3VsdGlu
ZyBpbiB0aGUgbG93ZXIgdGhlbiBleHBlY3RlZCBjb3VudGVyCi0gIC8vIHZhbHVlLgotICBFWFBF
Q1RfRVEoa0N5Y2xlQ291bnQgKiBrVGhyZWFkQ291bnQsIGxvY2tlZF9jb3VudGVyLnZhbHVlKCkp
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgUnVuRnJvbVRocmVhZCh2b2lkIChm
dW5jKShUKSwgVCBwYXJhbSkgewotICBUaHJlYWRXaXRoUGFyYW08VD4gdGhyZWFkKGZ1bmMsIHBh
cmFtLCBOVUxMKTsKLSAgdGhyZWFkLkpvaW4oKTsKLX0KLQotdm9pZCBSZXRyaWV2ZVRocmVhZExv
Y2FsVmFsdWUocGFpcjxUaHJlYWRMb2NhbDxTdHJpbmc+KiwgU3RyaW5nKj4gcGFyYW0pIHsKLSAg
KnBhcmFtLnNlY29uZCA9IHBhcmFtLmZpcnN0LT5nZXQoKTsKLX0KLQotVEVTVChUaHJlYWRMb2Nh
bFRlc3QsIFBhcmFtZXRlcml6ZWRDb25zdHJ1Y3RvclNldHNEZWZhdWx0KSB7Ci0gIFRocmVhZExv
Y2FsPFN0cmluZz4gdGhyZWFkX2xvY2FsKCJmb28iKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iLCB0
aHJlYWRfbG9jYWwuZ2V0KCkuY19zdHIoKSk7Ci0KLSAgdGhyZWFkX2xvY2FsLnNldCgiYmFyIik7
Ci0gIEVYUEVDVF9TVFJFUSgiYmFyIiwgdGhyZWFkX2xvY2FsLmdldCgpLmNfc3RyKCkpOwotCi0g
IFN0cmluZyByZXN1bHQ7Ci0gIFJ1bkZyb21UaHJlYWQoJlJldHJpZXZlVGhyZWFkTG9jYWxWYWx1
ZSwgbWFrZV9wYWlyKCZ0aHJlYWRfbG9jYWwsICZyZXN1bHQpKTsKLSAgRVhQRUNUX1NUUkVRKCJm
b28iLCByZXN1bHQuY19zdHIoKSk7Ci19Ci0KLS8vIERlc3RydWN0b3JUcmFja2VyIGtlZXBzIHRy
YWNrIG9mIHdoZXRoZXIgaXRzIGluc3RhbmNlcyBoYXZlIGJlZW4KLS8vIGRlc3Ryb3llZC4KLXN0
YXRpYyBzdGQ6OnZlY3Rvcjxib29sPiBnX2Rlc3Ryb3llZDsKLQotY2xhc3MgRGVzdHJ1Y3RvclRy
YWNrZXIgewotIHB1YmxpYzoKLSAgRGVzdHJ1Y3RvclRyYWNrZXIoKSA6IGluZGV4XyhHZXROZXdJ
bmRleCgpKSB7fQotICBEZXN0cnVjdG9yVHJhY2tlcihjb25zdCBEZXN0cnVjdG9yVHJhY2tlciYg
LyogcmhzICovKQotICAgICAgOiBpbmRleF8oR2V0TmV3SW5kZXgoKSkge30KLSAgfkRlc3RydWN0
b3JUcmFja2VyKCkgewotICAgIC8vIFdlIG5ldmVyIGFjY2VzcyBnX2Rlc3Ryb3llZCBjb25jdXJy
ZW50bHksIHNvIHdlIGRvbid0IG5lZWQgdG8KLSAgICAvLyBwcm90ZWN0IHRoZSB3cml0ZSBvcGVy
YXRpb24gdW5kZXIgYSBtdXRleC4KLSAgICBnX2Rlc3Ryb3llZFtpbmRleF9dID0gdHJ1ZTsKLSAg
fQotCi0gcHJpdmF0ZToKLSAgc3RhdGljIGludCBHZXROZXdJbmRleCgpIHsKLSAgICBnX2Rlc3Ry
b3llZC5wdXNoX2JhY2soZmFsc2UpOwotICAgIHJldHVybiBnX2Rlc3Ryb3llZC5zaXplKCkgLSAx
OwotICB9Ci0gIGNvbnN0IGludCBpbmRleF87Ci19OwotCi10eXBlZGVmIFRocmVhZExvY2FsPERl
c3RydWN0b3JUcmFja2VyPiogVGhyZWFkUGFyYW07Ci0KLXZvaWQgQ2FsbFRocmVhZExvY2FsR2V0
KFRocmVhZFBhcmFtIHRocmVhZF9sb2NhbCkgewotICB0aHJlYWRfbG9jYWwtPmdldCgpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IHdoZW4gYSBUaHJlYWRMb2NhbCBvYmplY3QgZGllcyBpbiBhIHRocmVh
ZCwgaXQgZGVzdHJveXMKLS8vIHRoZSBtYW5hZ2VkIG9iamVjdCBmb3IgdGhhdCB0aHJlYWQuCi1U
RVNUKFRocmVhZExvY2FsVGVzdCwgRGVzdHJveXNNYW5hZ2VkT2JqZWN0Rm9yT3duVGhyZWFkV2hl
bkR5aW5nKSB7Ci0gIGdfZGVzdHJveWVkLmNsZWFyKCk7Ci0KLSAgewotICAgIC8vIFRoZSBuZXh0
IGxpbmUgZGVmYXVsdCBjb25zdHJ1Y3RzIGEgRGVzdHJ1Y3RvclRyYWNrZXIgb2JqZWN0IGFzCi0g
ICAgLy8gdGhlIGRlZmF1bHQgdmFsdWUgb2Ygb2JqZWN0cyBtYW5hZ2VkIGJ5IHRocmVhZF9sb2Nh
bC4KLSAgICBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4gdGhyZWFkX2xvY2FsOwotICAg
IEFTU0VSVF9FUSgxVSwgZ19kZXN0cm95ZWQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRkFMU0UoZ19k
ZXN0cm95ZWRbMF0pOwotCi0gICAgLy8gVGhpcyBjcmVhdGVzIGFub3RoZXIgRGVzdHJ1Y3RvclRy
YWNrZXIgb2JqZWN0IGZvciB0aGUgbWFpbiB0aHJlYWQuCi0gICAgdGhyZWFkX2xvY2FsLmdldCgp
OwotICAgIEFTU0VSVF9FUSgyVSwgZ19kZXN0cm95ZWQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRkFM
U0UoZ19kZXN0cm95ZWRbMF0pOwotICAgIEFTU0VSVF9GQUxTRShnX2Rlc3Ryb3llZFsxXSk7Ci0g
IH0KLQotICAvLyBOb3cgdGhyZWFkX2xvY2FsIGhhcyBkaWVkLiAgSXQgc2hvdWxkIGhhdmUgZGVz
dHJveWVkIGJvdGggdGhlCi0gIC8vIGRlZmF1bHQgdmFsdWUgc2hhcmVkIGJ5IGFsbCB0aHJlYWRz
IGFuZCB0aGUgdmFsdWUgZm9yIHRoZSBtYWluCi0gIC8vIHRocmVhZC4KLSAgQVNTRVJUX0VRKDJV
LCBnX2Rlc3Ryb3llZC5zaXplKCkpOwotICBFWFBFQ1RfVFJVRShnX2Rlc3Ryb3llZFswXSk7Ci0g
IEVYUEVDVF9UUlVFKGdfZGVzdHJveWVkWzFdKTsKLQotICBnX2Rlc3Ryb3llZC5jbGVhcigpOwot
fQotCi0vLyBUZXN0cyB0aGF0IHdoZW4gYSB0aHJlYWQgZXhpdHMsIHRoZSB0aHJlYWQtbG9jYWwg
b2JqZWN0IGZvciB0aGF0Ci0vLyB0aHJlYWQgaXMgZGVzdHJveWVkLgotVEVTVChUaHJlYWRMb2Nh
bFRlc3QsIERlc3Ryb3lzTWFuYWdlZE9iamVjdEF0VGhyZWFkRXhpdCkgewotICBnX2Rlc3Ryb3ll
ZC5jbGVhcigpOwotCi0gIHsKLSAgICAvLyBUaGUgbmV4dCBsaW5lIGRlZmF1bHQgY29uc3RydWN0
cyBhIERlc3RydWN0b3JUcmFja2VyIG9iamVjdCBhcwotICAgIC8vIHRoZSBkZWZhdWx0IHZhbHVl
IG9mIG9iamVjdHMgbWFuYWdlZCBieSB0aHJlYWRfbG9jYWwuCi0gICAgVGhyZWFkTG9jYWw8RGVz
dHJ1Y3RvclRyYWNrZXI+IHRocmVhZF9sb2NhbDsKLSAgICBBU1NFUlRfRVEoMVUsIGdfZGVzdHJv
eWVkLnNpemUoKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdfZGVzdHJveWVkWzBdKTsKLQotICAgIC8v
IFRoaXMgY3JlYXRlcyBhbm90aGVyIERlc3RydWN0b3JUcmFja2VyIG9iamVjdCBpbiB0aGUgbmV3
IHRocmVhZC4KLSAgICBUaHJlYWRXaXRoUGFyYW08VGhyZWFkUGFyYW0+IHRocmVhZCgKLSAgICAg
ICAgJkNhbGxUaHJlYWRMb2NhbEdldCwgJnRocmVhZF9sb2NhbCwgTlVMTCk7Ci0gICAgdGhyZWFk
LkpvaW4oKTsKLQotICAgIC8vIE5vdyB0aGUgbmV3IHRocmVhZCBoYXMgZXhpdGVkLiAgVGhlIHBl
ci10aHJlYWQgb2JqZWN0IGZvciBpdAotICAgIC8vIHNob3VsZCBoYXZlIGJlZW4gZGVzdHJveWVk
LgotICAgIEFTU0VSVF9FUSgyVSwgZ19kZXN0cm95ZWQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRkFM
U0UoZ19kZXN0cm95ZWRbMF0pOwotICAgIEFTU0VSVF9UUlVFKGdfZGVzdHJveWVkWzFdKTsKLSAg
fQotCi0gIC8vIE5vdyB0aHJlYWRfbG9jYWwgaGFzIGRpZWQuICBUaGUgZGVmYXVsdCB2YWx1ZSBz
aG91bGQgaGF2ZSBiZWVuCi0gIC8vIGRlc3Ryb3llZCB0b28uCi0gIEFTU0VSVF9FUSgyVSwgZ19k
ZXN0cm95ZWQuc2l6ZSgpKTsKLSAgRVhQRUNUX1RSVUUoZ19kZXN0cm95ZWRbMF0pOwotICBFWFBF
Q1RfVFJVRShnX2Rlc3Ryb3llZFsxXSk7Ci0KLSAgZ19kZXN0cm95ZWQuY2xlYXIoKTsKLX0KLQot
VEVTVChUaHJlYWRMb2NhbFRlc3QsIFRocmVhZExvY2FsTXV0YXRpb25zQWZmZWN0T25seUN1cnJl
bnRUaHJlYWQpIHsKLSAgVGhyZWFkTG9jYWw8U3RyaW5nPiB0aHJlYWRfbG9jYWw7Ci0gIHRocmVh
ZF9sb2NhbC5zZXQoIkZvbyIpOwotICBFWFBFQ1RfU1RSRVEoIkZvbyIsIHRocmVhZF9sb2NhbC5n
ZXQoKS5jX3N0cigpKTsKLQotICBTdHJpbmcgcmVzdWx0OwotICBSdW5Gcm9tVGhyZWFkKCZSZXRy
aWV2ZVRocmVhZExvY2FsVmFsdWUsIG1ha2VfcGFpcigmdGhyZWFkX2xvY2FsLCAmcmVzdWx0KSk7
Ci0gIEVYUEVDVF9UUlVFKHJlc3VsdC5jX3N0cigpID09IE5VTEwpOwotfQotCi0jZW5kaWYgIC8v
IEdURVNUX0lTX1RIUkVBRFNBRkUKLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi19ICAvLyBu
YW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVh
M2U5MTk2YWI5NmU0MTNmZWYzMzA3NTI0YjE4YzkyZjVlZGFkYjAuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDIwOCArMCwwIEBA
Ci0vLyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLgotLy8gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8g
ZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRo
b3I6IG1oZXVsZUBnb29nbGUuY29tIChNYXJrdXMgSGV1bGUpCi0vLwotCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QtdGVzdC1wYXJ0Lmg+Ci0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi11c2lu
ZyB0ZXN0aW5nOjpNZXNzYWdlOwotdXNpbmcgdGVzdGluZzo6VGVzdDsKLXVzaW5nIHRlc3Rpbmc6
OlRlc3RQYXJ0UmVzdWx0OwotdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHRBcnJheTsKLQot
bmFtZXNwYWNlIHsKLQotLy8gVGVzdHMgdGhlIFRlc3RQYXJ0UmVzdWx0IGNsYXNzLgotCi0vLyBU
aGUgdGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIFRlc3RQYXJ0UmVzdWx0LgotY2xhc3MgVGVzdFBh
cnRSZXN1bHRUZXN0IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgVGVzdFBhcnRSZXN1
bHRUZXN0KCkKLSAgICAgIDogcjFfKFRlc3RQYXJ0UmVzdWx0OjprU3VjY2VzcywgImZvby9iYXIu
Y2MiLCAxMCwgIlN1Y2Nlc3MhIiksCi0gICAgICAgIHIyXyhUZXN0UGFydFJlc3VsdDo6a05vbkZh
dGFsRmFpbHVyZSwgImZvby9iYXIuY2MiLCAtMSwgIkZhaWx1cmUhIiksCi0gICAgICAgIHIzXyhU
ZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwgTlVMTCwgLTEsICJGYWlsdXJlISIpIHt9Ci0K
LSAgVGVzdFBhcnRSZXN1bHQgcjFfLCByMl8sIHIzXzsKLX07Ci0KLQotVEVTVF9GKFRlc3RQYXJ0
UmVzdWx0VGVzdCwgQ29uc3RydWN0b3JXb3JrcykgewotICBNZXNzYWdlIG1lc3NhZ2U7Ci0gIG1l
c3NhZ2UgPDwgInNvbWV0aGluZyBpcyB0ZXJyaWJseSB3cm9uZyI7Ci0gIG1lc3NhZ2UgPDwgc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KHRlc3Rpbmc6OmludGVybmFsOjprU3RhY2tUcmFjZU1hcmtl
cik7Ci0gIG1lc3NhZ2UgPDwgInNvbWUgdW5pbXBvcnRhbnQgc3RhY2sgdHJhY2UiOwotCi0gIGNv
bnN0IFRlc3RQYXJ0UmVzdWx0IHJlc3VsdChUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVy
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb21lX2ZpbGUuY2MiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZXNzYWdlLkdldFN0cmluZygpLmNfc3RyKCkpOwotCi0gIEVYUEVDVF9FUShUZXN0UGFydFJl
c3VsdDo6a05vbkZhdGFsRmFpbHVyZSwgcmVzdWx0LnR5cGUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgi
c29tZV9maWxlLmNjIiwgcmVzdWx0LmZpbGVfbmFtZSgpKTsKLSAgRVhQRUNUX0VRKDQyLCByZXN1
bHQubGluZV9udW1iZXIoKSk7Ci0gIEVYUEVDVF9TVFJFUShtZXNzYWdlLkdldFN0cmluZygpLmNf
c3RyKCksIHJlc3VsdC5tZXNzYWdlKCkpOwotICBFWFBFQ1RfU1RSRVEoInNvbWV0aGluZyBpcyB0
ZXJyaWJseSB3cm9uZyIsIHJlc3VsdC5zdW1tYXJ5KCkpOwotfQotCi1URVNUX0YoVGVzdFBhcnRS
ZXN1bHRUZXN0LCBSZXN1bHRBY2Nlc3NvcnNXb3JrKSB7Ci0gIGNvbnN0IFRlc3RQYXJ0UmVzdWx0
IHN1Y2Nlc3MoVGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJmaWxlLmNjIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSIpOwotICBFWFBFQ1RfVFJV
RShzdWNjZXNzLnBhc3NlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MuZmFpbGVkKCkpOwot
ICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcy5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKLSAgRVhQRUNUX0ZB
TFNFKHN1Y2Nlc3MuZmF0YWxseV9mYWlsZWQoKSk7Ci0KLSAgY29uc3QgVGVzdFBhcnRSZXN1bHQg
bm9uZmF0YWxfZmFpbHVyZShUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5jYyIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UiKTsKLSAgRVhQRUNUX0ZBTFNFKG5vbmZhdGFsX2Zh
aWx1cmUucGFzc2VkKCkpOwotICBFWFBFQ1RfVFJVRShub25mYXRhbF9mYWlsdXJlLmZhaWxlZCgp
KTsKLSAgRVhQRUNUX1RSVUUobm9uZmF0YWxfZmFpbHVyZS5ub25mYXRhbGx5X2ZhaWxlZCgpKTsK
LSAgRVhQRUNUX0ZBTFNFKG5vbmZhdGFsX2ZhaWx1cmUuZmF0YWxseV9mYWlsZWQoKSk7Ci0KLSAg
Y29uc3QgVGVzdFBhcnRSZXN1bHQgZmF0YWxfZmFpbHVyZShUZXN0UGFydFJlc3VsdDo6a0ZhdGFs
RmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5jYyIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UiKTsKLSAgRVhQRUNUX0ZBTFNFKGZhdGFs
X2ZhaWx1cmUucGFzc2VkKCkpOwotICBFWFBFQ1RfVFJVRShmYXRhbF9mYWlsdXJlLmZhaWxlZCgp
KTsKLSAgRVhQRUNUX0ZBTFNFKGZhdGFsX2ZhaWx1cmUubm9uZmF0YWxseV9mYWlsZWQoKSk7Ci0g
IEVYUEVDVF9UUlVFKGZhdGFsX2ZhaWx1cmUuZmF0YWxseV9mYWlsZWQoKSk7Ci19Ci0KLS8vIFRl
c3RzIFRlc3RQYXJ0UmVzdWx0Ojp0eXBlKCkuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCB0
eXBlKSB7Ci0gIEVYUEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a1N1Y2Nlc3MsIHIxXy50eXBlKCkp
OwotICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsIHIyXy50eXBl
KCkpOwotICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsIHIzXy50eXBl
KCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6ZmlsZV9uYW1lKCkuCi1URVNUX0Yo
VGVzdFBhcnRSZXN1bHRUZXN0LCBmaWxlX25hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28vYmFy
LmNjIiwgcjFfLmZpbGVfbmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKE5VTEwsIHIzXy5maWxlX25h
bWUoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpsaW5lX251bWJlcigpLgotVEVT
VF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgbGluZV9udW1iZXIpIHsKLSAgRVhQRUNUX0VRKDEwLCBy
MV8ubGluZV9udW1iZXIoKSk7Ci0gIEVYUEVDVF9FUSgtMSwgcjJfLmxpbmVfbnVtYmVyKCkpOwot
fQotCi0vLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6bWVzc2FnZSgpLgotVEVTVF9GKFRlc3RQYXJ0
UmVzdWx0VGVzdCwgbWVzc2FnZSkgewotICBFWFBFQ1RfU1RSRVEoIlN1Y2Nlc3MhIiwgcjFfLm1l
c3NhZ2UoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpwYXNzZWQoKS4KLVRFU1Rf
RihUZXN0UGFydFJlc3VsdFRlc3QsIFBhc3NlZCkgewotICBFWFBFQ1RfVFJVRShyMV8ucGFzc2Vk
KCkpOwotICBFWFBFQ1RfRkFMU0UocjJfLnBhc3NlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKHIzXy5w
YXNzZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpmYWlsZWQoKS4KLVRFU1Rf
RihUZXN0UGFydFJlc3VsdFRlc3QsIEZhaWxlZCkgewotICBFWFBFQ1RfRkFMU0UocjFfLmZhaWxl
ZCgpKTsKLSAgRVhQRUNUX1RSVUUocjJfLmZhaWxlZCgpKTsKLSAgRVhQRUNUX1RSVUUocjNfLmZh
aWxlZCgpKTsKLX0KLQotLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6OmZhdGFsbHlfZmFpbGVkKCku
Ci1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBGYXRhbGx5RmFpbGVkKSB7Ci0gIEVYUEVDVF9G
QUxTRShyMV8uZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShyMl8uZmF0YWxseV9m
YWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHIzXy5mYXRhbGx5X2ZhaWxlZCgpKTsKLX0KLQotLy8g
VGVzdHMgVGVzdFBhcnRSZXN1bHQ6Om5vbmZhdGFsbHlfZmFpbGVkKCkuCi1URVNUX0YoVGVzdFBh
cnRSZXN1bHRUZXN0LCBOb25mYXRhbGx5RmFpbGVkKSB7Ci0gIEVYUEVDVF9GQUxTRShyMV8ubm9u
ZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHIyXy5ub25mYXRhbGx5X2ZhaWxlZCgp
KTsKLSAgRVhQRUNUX0ZBTFNFKHIzXy5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKLX0KLQotLy8gVGVz
dHMgdGhlIFRlc3RQYXJ0UmVzdWx0QXJyYXkgY2xhc3MuCi0KLWNsYXNzIFRlc3RQYXJ0UmVzdWx0
QXJyYXlUZXN0IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgVGVzdFBhcnRSZXN1bHRB
cnJheVRlc3QoKQotICAgICAgOiByMV8oVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUs
ICJmb28vYmFyLmNjIiwgLTEsICJGYWlsdXJlIDEiKSwKLSAgICAgICAgcjJfKFRlc3RQYXJ0UmVz
dWx0OjprRmF0YWxGYWlsdXJlLCAiZm9vL2Jhci5jYyIsIC0xLCAiRmFpbHVyZSAyIikge30KLQot
ICBjb25zdCBUZXN0UGFydFJlc3VsdCByMV8sIHIyXzsKLX07Ci0KLS8vIFRlc3RzIHRoYXQgVGVz
dFBhcnRSZXN1bHRBcnJheSBpbml0aWFsbHkgaGFzIHNpemUgMC4KLVRFU1RfRihUZXN0UGFydFJl
c3VsdEFycmF5VGVzdCwgSW5pdGlhbFNpemVJc1plcm8pIHsKLSAgVGVzdFBhcnRSZXN1bHRBcnJh
eSByZXN1bHRzOwotICBFWFBFQ1RfRVEoMCwgcmVzdWx0cy5zaXplKCkpOwotfQotCi0vLyBUZXN0
cyB0aGF0IFRlc3RQYXJ0UmVzdWx0QXJyYXkgY29udGFpbnMgdGhlIGdpdmVuIFRlc3RQYXJ0UmVz
dWx0Ci0vLyBhZnRlciBvbmUgQXBwZW5kKCkgb3BlcmF0aW9uLgotVEVTVF9GKFRlc3RQYXJ0UmVz
dWx0QXJyYXlUZXN0LCBDb250YWluc0dpdmVuUmVzdWx0QWZ0ZXJBcHBlbmQpIHsKLSAgVGVzdFBh
cnRSZXN1bHRBcnJheSByZXN1bHRzOwotICByZXN1bHRzLkFwcGVuZChyMV8pOwotICBFWFBFQ1Rf
RVEoMSwgcmVzdWx0cy5zaXplKCkpOwotICBFWFBFQ1RfU1RSRVEoIkZhaWx1cmUgMSIsIHJlc3Vs
dHMuR2V0VGVzdFBhcnRSZXN1bHQoMCkubWVzc2FnZSgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBU
ZXN0UGFydFJlc3VsdEFycmF5IGNvbnRhaW5zIHRoZSBnaXZlbiBUZXN0UGFydFJlc3VsdHMKLS8v
IGFmdGVyIHR3byBBcHBlbmQoKSBvcGVyYXRpb25zLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0QXJy
YXlUZXN0LCBDb250YWluc0dpdmVuUmVzdWx0c0FmdGVyVHdvQXBwZW5kcykgewotICBUZXN0UGFy
dFJlc3VsdEFycmF5IHJlc3VsdHM7Ci0gIHJlc3VsdHMuQXBwZW5kKHIxXyk7Ci0gIHJlc3VsdHMu
QXBwZW5kKHIyXyk7Ci0gIEVYUEVDVF9FUSgyLCByZXN1bHRzLnNpemUoKSk7Ci0gIEVYUEVDVF9T
VFJFUSgiRmFpbHVyZSAxIiwgcmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgwKS5tZXNzYWdlKCkp
OwotICBFWFBFQ1RfU1RSRVEoIkZhaWx1cmUgMiIsIHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQo
MSkubWVzc2FnZSgpKTsKLX0KLQotdHlwZWRlZiBUZXN0UGFydFJlc3VsdEFycmF5VGVzdCBUZXN0
UGFydFJlc3VsdEFycmF5RGVhdGhUZXN0OwotCi0vLyBUZXN0cyB0aGF0IHRoZSBwcm9ncmFtIGRp
ZXMgd2hlbiBHZXRUZXN0UGFydFJlc3VsdCgpIGlzIGNhbGxlZCB3aXRoCi0vLyBhbiBpbnZhbGlk
IGluZGV4LgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0QXJyYXlEZWF0aFRlc3QsIERpZXNXaGVuSW5k
ZXhJc091dE9mQm91bmQpIHsKLSAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOwotICByZXN1
bHRzLkFwcGVuZChyMV8pOwotCi0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQocmVzdWx0cy5H
ZXRUZXN0UGFydFJlc3VsdCgtMSksICIiKTsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChy
ZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDEpLCAiIik7Ci19Ci0KLS8vIFRPRE8obWhldWxlQGdv
b2dsZS5jb20pOiBBZGQgYSB0ZXN0IGZvciB0aGUgY2xhc3MgSGFzTmV3RmF0YWxGYWlsdXJlSGVs
cGVyLgotCi19ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3QtdHVwbGVfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3QtdHVwbGVfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTMy
ZjcwYjNkNGU5MDcwZjQ1OTY4NjI1YjNmZjk3YzM5ODQ3NTdkNy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0LXR1cGxlX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwzMjAgKzAsMCBAQAotLy8g
Q29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8K
LS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0
cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0v
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFs
L2d0ZXN0LXR1cGxlLmg+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgotCi1uYW1lc3BhY2UgewotCi11c2luZyA6OnN0ZDo6dHIxOjpnZXQ7Ci11c2luZyA6OnN0
ZDo6dHIxOjptYWtlX3R1cGxlOwotdXNpbmcgOjpzdGQ6OnRyMTo6dHVwbGU7Ci11c2luZyA6OnN0
ZDo6dHIxOjp0dXBsZV9lbGVtZW50OwotdXNpbmcgOjpzdGQ6OnRyMTo6dHVwbGVfc2l6ZTsKLXVz
aW5nIDo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxOwotCi0vLyBUZXN0cyB0aGF0IHR1cGxl
X2VsZW1lbnQ8SywgdHVwbGU8VDAsIFQxLCAuLi4sIFROPiA+Ojp0eXBlIHJldHVybnMgVEsuCi1U
RVNUKHR1cGxlX2VsZW1lbnRfVGVzdCwgUmV0dXJuc0VsZW1lbnRUeXBlKSB7Ci0gIFN0YXRpY0Fz
c2VydFR5cGVFcTxpbnQsIHR1cGxlX2VsZW1lbnQ8MCwgdHVwbGU8aW50LCBjaGFyPiA+Ojp0eXBl
PigpOwotICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50JiwgdHVwbGVfZWxlbWVudDwxLCB0dXBsZTxk
b3VibGUsIGludCY+ID46OnR5cGU+KCk7Ci0gIFN0YXRpY0Fzc2VydFR5cGVFcTxib29sLCB0dXBs
ZV9lbGVtZW50PDIsIHR1cGxlPGRvdWJsZSwgaW50LCBib29sPiA+Ojp0eXBlPigpOwotfQotCi0v
LyBUZXN0cyB0aGF0IHR1cGxlX3NpemU8VD46OnZhbHVlIGdpdmVzIHRoZSBudW1iZXIgb2YgZmll
bGRzIGluIHR1cGxlCi0vLyB0eXBlIFQuCi1URVNUKHR1cGxlX3NpemVfVGVzdCwgUmV0dXJuc051
bWJlck9mRmllbGRzKSB7Ci0gIEVYUEVDVF9FUSgwLCArdHVwbGVfc2l6ZTx0dXBsZTw+ID46OnZh
bHVlKTsKLSAgRVhQRUNUX0VRKDEsICt0dXBsZV9zaXplPHR1cGxlPHZvaWQqPiA+Ojp2YWx1ZSk7
Ci0gIEVYUEVDVF9FUSgxLCArdHVwbGVfc2l6ZTx0dXBsZTxjaGFyPiA+Ojp2YWx1ZSk7Ci0gIEVY
UEVDVF9FUSgxLCArKHR1cGxlX3NpemU8dHVwbGU8dHVwbGU8aW50LCBkb3VibGU+ID4gPjo6dmFs
dWUpKTsKLSAgRVhQRUNUX0VRKDIsICsodHVwbGVfc2l6ZTx0dXBsZTxpbnQmLCBjb25zdCBjaGFy
PiA+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfRVEoMywgKyh0dXBsZV9zaXplPHR1cGxlPGNoYXIqLCB2
b2lkLCBjb25zdCBib29sJj4gPjo6dmFsdWUpKTsKLX0KLQotLy8gVGVzdHMgY29tcGFyaW5nIGEg
dHVwbGUgd2l0aCBpdHNlbGYuCi1URVNUKENvbXBhcmlzb25UZXN0LCBDb21wYXJlc1dpdGhTZWxm
KSB7Ci0gIGNvbnN0IHR1cGxlPGludCwgY2hhciwgYm9vbD4gYSg1LCAnYScsIGZhbHNlKTsKLQot
ICBFWFBFQ1RfVFJVRShhID09IGEpOwotICBFWFBFQ1RfRkFMU0UoYSAhPSBhKTsKLX0KLQotLy8g
VGVzdHMgY29tcGFyaW5nIHR3byB0dXBsZXMgd2l0aCB0aGUgc2FtZSB2YWx1ZS4KLVRFU1QoQ29t
cGFyaXNvblRlc3QsIENvbXBhcmVzRXF1YWxUdXBsZXMpIHsKLSAgY29uc3QgdHVwbGU8aW50LCBi
b29sPiBhKDUsIHRydWUpLCBiKDUsIHRydWUpOwotCi0gIEVYUEVDVF9UUlVFKGEgPT0gYik7Ci0g
IEVYUEVDVF9GQUxTRShhICE9IGIpOwotfQotCi0vLyBUZXN0cyBjb21wYXJpbmcgdHdvIGRpZmZl
cmVudCB0dXBsZXMgdGhhdCBoYXZlIG5vIHJlZmVyZW5jZSBmaWVsZHMuCi1URVNUKENvbXBhcmlz
b25UZXN0LCBDb21wYXJlc1VuZXF1YWxUdXBsZXNXaXRob3V0UmVmZXJlbmNlRmllbGRzKSB7Ci0g
IHR5cGVkZWYgdHVwbGU8Y29uc3QgaW50LCBjaGFyPiBGb29UdXBsZTsKLQotICBjb25zdCBGb29U
dXBsZSBhKDAsICd4Jyk7Ci0gIGNvbnN0IEZvb1R1cGxlIGIoMSwgJ2EnKTsKLQotICBFWFBFQ1Rf
VFJVRShhICE9IGIpOwotICBFWFBFQ1RfRkFMU0UoYSA9PSBiKTsKLQotICBjb25zdCBGb29UdXBs
ZSBjKDEsICdiJyk7Ci0KLSAgRVhQRUNUX1RSVUUoYiAhPSBjKTsKLSAgRVhQRUNUX0ZBTFNFKGIg
PT0gYyk7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyB0d28gZGlmZmVyZW50IHR1cGxlcyB0aGF0
IGhhdmUgcmVmZXJlbmNlIGZpZWxkcy4KLVRFU1QoQ29tcGFyaXNvblRlc3QsIENvbXBhcmVzVW5l
cXVhbFR1cGxlc1dpdGhSZWZlcmVuY2VGaWVsZHMpIHsKLSAgdHlwZWRlZiB0dXBsZTxpbnQmLCBj
b25zdCBjaGFyJj4gRm9vVHVwbGU7Ci0KLSAgaW50IGkgPSA1OwotICBjb25zdCBjaGFyIGNoID0g
J2EnOwotICBjb25zdCBGb29UdXBsZSBhKGksIGNoKTsKLQotICBpbnQgaiA9IDY7Ci0gIGNvbnN0
IEZvb1R1cGxlIGIoaiwgY2gpOwotCi0gIEVYUEVDVF9UUlVFKGEgIT0gYik7Ci0gIEVYUEVDVF9G
QUxTRShhID09IGIpOwotCi0gIGogPSA1OwotICBjb25zdCBjaGFyIGNoMiA9ICdiJzsKLSAgY29u
c3QgRm9vVHVwbGUgYyhqLCBjaDIpOwotCi0gIEVYUEVDVF9UUlVFKGIgIT0gYyk7Ci0gIEVYUEVD
VF9GQUxTRShiID09IGMpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgdHVwbGUgZmllbGQgd2l0aCBh
IHJlZmVyZW5jZSB0eXBlIGlzIGFuIGFsaWFzIG9mIHRoZQotLy8gdmFyaWFibGUgaXQncyBzdXBw
b3NlZCB0byByZWZlcmVuY2UuCi1URVNUKFJlZmVyZW5jZUZpZWxkVGVzdCwgSXNBbGlhc09mUmVm
ZXJlbmNlZFZhcmlhYmxlKSB7Ci0gIGludCBuID0gMDsKLSAgdHVwbGU8Ym9vbCwgaW50Jj4gdCh0
cnVlLCBuKTsKLQotICBuID0gMTsKLSAgRVhQRUNUX0VRKG4sIGdldDwxPih0KSkKLSAgICAgIDw8
ICJDaGFuZ2luZyBhIHVuZGVybHlpbmcgdmFyaWFibGUgc2hvdWxkIHVwZGF0ZSB0aGUgcmVmZXJl
bmNlIGZpZWxkLiI7Ci0KLSAgLy8gTWFrZXMgc3VyZSB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBk
b2Vzbid0IGRvIGFueXRoaW5nIGZ1bm55IHdpdGgKLSAgLy8gdGhlICYgb3BlcmF0b3IgZm9yIHRo
ZSByZXR1cm4gdHlwZSBvZiBnZXQ8PigpLgotICBFWFBFQ1RfRVEoJm4sICYoZ2V0PDE+KHQpKSkK
LSAgICAgIDw8ICJUaGUgYWRkcmVzcyBvZiBhIHJlZmVyZW5jZSBmaWVsZCBzaG91bGQgZXF1YWwg
dGhlIGFkZHJlc3Mgb2YgIgotICAgICAgPDwgInRoZSB1bmRlcmx5aW5nIHZhcmlhYmxlLiI7Ci0K
LSAgZ2V0PDE+KHQpID0gMjsKLSAgRVhQRUNUX0VRKDIsIG4pCi0gICAgICA8PCAiQ2hhbmdpbmcg
YSByZWZlcmVuY2UgZmllbGQgc2hvdWxkIHVwZGF0ZSB0aGUgdW5kZXJseWluZyB2YXJpYWJsZS4i
OwotfQotCi0vLyBUZXN0cyB0aGF0IHR1cGxlJ3MgZGVmYXVsdCBjb25zdHJ1Y3RvciBkZWZhdWx0
IGluaXRpYWxpemVzIGVhY2ggZmllbGQuCi0vLyBUaGlzIHRlc3QgbmVlZHMgdG8gY29tcGlsZSB3
aXRob3V0IGdlbmVyYXRpbmcgd2FybmluZ3MuCi1URVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBE
ZWZhdWx0Q29uc3RydWN0b3JEZWZhdWx0SW5pdGlhbGl6ZXNFYWNoRmllbGQpIHsKLSAgLy8gVGhl
IFRSMSByZXBvcnQgcmVxdWlyZXMgdGhhdCB0dXBsZSdzIGRlZmF1bHQgY29uc3RydWN0b3IgZGVm
YXVsdAotICAvLyBpbml0aWFsaXplcyBlYWNoIGZpZWxkLCBldmVuIGlmIGl0J3MgYSBwcmltaXRp
dmUgdHlwZS4gIElmIHRoZQotICAvLyBpbXBsZW1lbnRhdGlvbiBmb3JnZXRzIHRvIGRvIHRoaXMs
IHRoaXMgdGVzdCB3aWxsIGNhdGNoIGl0IGJ5Ci0gIC8vIGdlbmVyYXRpbmcgd2FybmluZ3MgYWJv
dXQgdXNpbmcgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgKGFzc3VtaW5nCi0gIC8vIGEgZGVjZW50
IGNvbXBpbGVyKS4KLQotICB0dXBsZTw+IGVtcHR5OwotCi0gIHR1cGxlPGludD4gYTEsIGIxOwot
ICBiMSA9IGExOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDA+KGIxKSk7Ci0KLSAgdHVwbGU8aW50LCBk
b3VibGU+IGEyLCBiMjsKLSAgYjIgPSBhMjsKLSAgRVhQRUNUX0VRKDAsIGdldDwwPihiMikpOwot
ICBFWFBFQ1RfRVEoMC4wLCBnZXQ8MT4oYjIpKTsKLQotICB0dXBsZTxkb3VibGUsIGNoYXIsIGJv
b2wqPiBhMywgYjM7Ci0gIGIzID0gYTM7Ci0gIEVYUEVDVF9FUSgwLjAsIGdldDwwPihiMykpOwot
ICBFWFBFQ1RfRVEoJ1wwJywgZ2V0PDE+KGIzKSk7Ci0gIEVYUEVDVF9UUlVFKGdldDwyPihiMykg
PT0gTlVMTCk7Ci0KLSAgdHVwbGU8aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50PiBhMTAsIGIxMDsKLSAgYjEwID0gYTEwOwotICBFWFBFQ1RfRVEoMCwgZ2V0
PDA+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDE+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwg
Z2V0PDI+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDM+KGIxMCkpOwotICBFWFBFQ1RfRVEo
MCwgZ2V0PDQ+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDU+KGIxMCkpOwotICBFWFBFQ1Rf
RVEoMCwgZ2V0PDY+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDc+KGIxMCkpOwotICBFWFBF
Q1RfRVEoMCwgZ2V0PDg+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDk+KGIxMCkpOwotfQot
Ci0vLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSB0dXBsZSBmcm9tIGl0cyBmaWVsZHMuCi1URVNUKFR1
cGxlQ29uc3RydWN0b3JUZXN0LCBDb25zdHJ1Y3RzRnJvbUZpZWxkcykgewotICBpbnQgbiA9IDE7
Ci0gIC8vIFJlZmVyZW5jZSBmaWVsZC4KLSAgdHVwbGU8aW50Jj4gYShuKTsKLSAgRVhQRUNUX0VR
KCZuLCAmKGdldDwwPihhKSkpOwotCi0gIC8vIE5vbi1yZWZlcmVuY2UgZmllbGRzLgotICB0dXBs
ZTxpbnQsIGNoYXI+IGIoNSwgJ2EnKTsKLSAgRVhQRUNUX0VRKDUsIGdldDwwPihiKSk7Ci0gIEVY
UEVDVF9FUSgnYScsIGdldDwxPihiKSk7Ci0KLSAgLy8gQ29uc3QgcmVmZXJlbmNlIGZpZWxkLgot
ICBjb25zdCBpbnQgbSA9IDI7Ci0gIHR1cGxlPGJvb2wsIGNvbnN0IGludCY+IGModHJ1ZSwgbSk7
Ci0gIEVYUEVDVF9UUlVFKGdldDwwPihjKSk7Ci0gIEVYUEVDVF9FUSgmbSwgJihnZXQ8MT4oYykp
KTsKLX0KLQotLy8gVGVzdHMgdHVwbGUncyBjb3B5IGNvbnN0cnVjdG9yLgotVEVTVChUdXBsZUNv
bnN0cnVjdG9yVGVzdCwgQ29weUNvbnN0cnVjdG9yKSB7Ci0gIHR1cGxlPGRvdWJsZSwgYm9vbD4g
YSgwLjAsIHRydWUpOwotICB0dXBsZTxkb3VibGUsIGJvb2w+IGIoYSk7Ci0KLSAgRVhQRUNUX0RP
VUJMRV9FUSgwLjAsIGdldDwwPihiKSk7Ci0gIEVYUEVDVF9UUlVFKGdldDwxPihiKSk7Ci19Ci0K
LS8vIFRlc3RzIGNvbnN0cnVjdGluZyBhIHR1cGxlIGZyb20gYW5vdGhlciB0dXBsZSB0aGF0IGhh
cyBhIGNvbXBhdGlibGUKLS8vIGJ1dCBkaWZmZXJlbnQgdHlwZS4KLVRFU1QoVHVwbGVDb25zdHJ1
Y3RvclRlc3QsIENvbnN0cnVjdHNGcm9tRGlmZmVyZW50VHVwbGVUeXBlKSB7Ci0gIHR1cGxlPGlu
dCwgaW50LCBjaGFyPiBhKDAsIDEsICdhJyk7Ci0gIHR1cGxlPGRvdWJsZSwgbG9uZywgaW50PiBi
KGEpOwotCi0gIEVYUEVDVF9ET1VCTEVfRVEoMC4wLCBnZXQ8MD4oYikpOwotICBFWFBFQ1RfRVEo
MSwgZ2V0PDE+KGIpKTsKLSAgRVhQRUNUX0VRKCdhJywgZ2V0PDI+KGIpKTsKLX0KLQotLy8gVGVz
dHMgY29uc3RydWN0aW5nIGEgMi10dXBsZSBmcm9tIGFuIHN0ZDo6cGFpci4KLVRFU1QoVHVwbGVD
b25zdHJ1Y3RvclRlc3QsIENvbnN0cnVjdHNGcm9tUGFpcikgewotICA6OnN0ZDo6cGFpcjxpbnQs
IGNoYXI+IGEoMSwgJ2EnKTsKLSAgdHVwbGU8aW50LCBjaGFyPiBiKGEpOwotICB0dXBsZTxpbnQs
IGNvbnN0IGNoYXImPiBjKGEpOwotfQotCi0vLyBUZXN0cyBhc3NpZ25pbmcgYSB0dXBsZSB0byBh
bm90aGVyIHR1cGxlIHdpdGggdGhlIHNhbWUgdHlwZS4KLVRFU1QoVHVwbGVBc3NpZ25tZW50VGVz
dCwgQXNzaWduc1RvU2FtZVR1cGxlVHlwZSkgewotICBjb25zdCB0dXBsZTxpbnQsIGxvbmc+IGEo
NSwgN0wpOwotICB0dXBsZTxpbnQsIGxvbmc+IGI7Ci0gIGIgPSBhOwotICBFWFBFQ1RfRVEoNSwg
Z2V0PDA+KGIpKTsKLSAgRVhQRUNUX0VRKDdMLCBnZXQ8MT4oYikpOwotfQotCi0vLyBUZXN0cyBh
c3NpZ25pbmcgYSB0dXBsZSB0byBhbm90aGVyIHR1cGxlIHdpdGggYSBkaWZmZXJlbnQgYnV0Ci0v
LyBjb21wYXRpYmxlIHR5cGUuCi1URVNUKFR1cGxlQXNzaWdubWVudFRlc3QsIEFzc2lnbnNUb0Rp
ZmZlcmVudFR1cGxlVHlwZSkgewotICBjb25zdCB0dXBsZTxpbnQsIGxvbmcsIGJvb2w+IGEoMSwg
N0wsIHRydWUpOwotICB0dXBsZTxsb25nLCBpbnQsIGJvb2w+IGI7Ci0gIGIgPSBhOwotICBFWFBF
Q1RfRVEoMUwsIGdldDwwPihiKSk7Ci0gIEVYUEVDVF9FUSg3LCBnZXQ8MT4oYikpOwotICBFWFBF
Q1RfVFJVRShnZXQ8Mj4oYikpOwotfQotCi0vLyBUZXN0cyBhc3NpZ25pbmcgYW4gc3RkOjpwYWly
IHRvIGEgMi10dXBsZS4KLVRFU1QoVHVwbGVBc3NpZ25tZW50VGVzdCwgQXNzaWduc0Zyb21QYWly
KSB7Ci0gIGNvbnN0IDo6c3RkOjpwYWlyPGludCwgYm9vbD4gYSg1LCB0cnVlKTsKLSAgdHVwbGU8
aW50LCBib29sPiBiOwotICBiID0gYTsKLSAgRVhQRUNUX0VRKDUsIGdldDwwPihiKSk7Ci0gIEVY
UEVDVF9UUlVFKGdldDwxPihiKSk7Ci0KLSAgdHVwbGU8bG9uZywgYm9vbD4gYzsKLSAgYyA9IGE7
Ci0gIEVYUEVDVF9FUSg1TCwgZ2V0PDA+KGMpKTsKLSAgRVhQRUNUX1RSVUUoZ2V0PDE+KGMpKTsK
LX0KLQotLy8gQSBmaXh0dXJlIGZvciB0ZXN0aW5nIGJpZyB0dXBsZXMuCi1jbGFzcyBCaWdUdXBs
ZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB0eXBlZGVmIHR1
cGxlPGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludD4gQmln
VHVwbGU7Ci0KLSAgQmlnVHVwbGVUZXN0KCkgOgotICAgICAgYV8oMSwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMiksCi0gICAgICBiXygxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzKSB7fQot
Ci0gIEJpZ1R1cGxlIGFfLCBiXzsKLX07Ci0KLS8vIFRlc3RzIGNvbnN0cnVjdGluZyBiaWcgdHVw
bGVzLgotVEVTVF9GKEJpZ1R1cGxlVGVzdCwgQ29uc3RydWN0aW9uKSB7Ci0gIEJpZ1R1cGxlIGE7
Ci0gIEJpZ1R1cGxlIGIoYl8pOwotfQotCi0vLyBUZXN0cyB0aGF0IGdldDxOPih0KSByZXR1cm5z
IHRoZSBOLXRoICgwLWJhc2VkKSBmaWVsZCBvZiB0dXBsZSB0LgotVEVTVF9GKEJpZ1R1cGxlVGVz
dCwgZ2V0KSB7Ci0gIEVYUEVDVF9FUSgxLCBnZXQ8MD4oYV8pKTsKLSAgRVhQRUNUX0VRKDIsIGdl
dDw5PihhXykpOwotCi0gIC8vIFRlc3RzIHRoYXQgZ2V0KCkgd29ya3Mgb24gYSBjb25zdCB0dXBs
ZSB0b28uCi0gIGNvbnN0IEJpZ1R1cGxlIGEoYV8pOwotICBFWFBFQ1RfRVEoMSwgZ2V0PDA+KGEp
KTsKLSAgRVhQRUNUX0VRKDIsIGdldDw5PihhKSk7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyBi
aWcgdHVwbGVzLgotVEVTVF9GKEJpZ1R1cGxlVGVzdCwgQ29tcGFyaXNvbnMpIHsKLSAgRVhQRUNU
X1RSVUUoYV8gPT0gYV8pOwotICBFWFBFQ1RfRkFMU0UoYV8gIT0gYV8pOwotCi0gIEVYUEVDVF9U
UlVFKGFfICE9IGJfKTsKLSAgRVhQRUNUX0ZBTFNFKGFfID09IGJfKTsKLX0KLQotVEVTVChNYWtl
VHVwbGVUZXN0LCBXb3Jrc0ZvclNjYWxhclR5cGVzKSB7Ci0gIHR1cGxlPGJvb2wsIGludD4gYTsK
LSAgYSA9IG1ha2VfdHVwbGUodHJ1ZSwgNSk7Ci0gIEVYUEVDVF9UUlVFKGdldDwwPihhKSk7Ci0g
IEVYUEVDVF9FUSg1LCBnZXQ8MT4oYSkpOwotCi0gIHR1cGxlPGNoYXIsIGludCwgbG9uZz4gYjsK
LSAgYiA9IG1ha2VfdHVwbGUoJ2EnLCAnYicsIDUpOwotICBFWFBFQ1RfRVEoJ2EnLCBnZXQ8MD4o
YikpOwotICBFWFBFQ1RfRVEoJ2InLCBnZXQ8MT4oYikpOwotICBFWFBFQ1RfRVEoNSwgZ2V0PDI+
KGIpKTsKLX0KLQotVEVTVChNYWtlVHVwbGVUZXN0LCBXb3Jrc0ZvclBvaW50ZXJzKSB7Ci0gIGlu
dCBhW10gPSB7IDEsIDIsIDMsIDQgfTsKLSAgY29uc3QgY2hhciogY29uc3Qgc3RyID0gImhpIjsK
LSAgaW50KiBjb25zdCBwID0gYTsKLQotICB0dXBsZTxjb25zdCBjaGFyKiwgaW50Kj4gdDsKLSAg
dCA9IG1ha2VfdHVwbGUoc3RyLCBwKTsKLSAgRVhQRUNUX0VRKHN0ciwgZ2V0PDA+KHQpKTsKLSAg
RVhQRUNUX0VRKHAsIGdldDwxPih0KSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0Ml90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0Ml90ZXN0LmNj
CmluZGV4IDc5YThhODdkY2ZkYmRlNTNjMWUwZDhjNmQxMWE5ODY5MjJiMDJmZjguLmVkOTY0MjFj
NjdjYThhMmZiMzhmM2Q4ODk2MDIzMWVmMjJiZWE2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MKQEAgLTI2LDEz
ICsyNiwxMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAjaW5j
bHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAidGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuaCIK
LSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKICNp
ZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MKaW5kZXggZjJjMzk3MjMxMDE3Nzll
NzcxODQ3ZDU5MmQ5ZmFiYjU2ZjNiNDVjNi4uNGUzOTg2OTdkNmQ4MDliMTJlOGM5NWU2NzQyMGMy
YzU2OGRkYTZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dC10eXBlZC10ZXN0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MKQEAgLTI2LDE0ICsyNiwxOCBAQAogLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdv
b2dsZS5jb20gKFpoYW55b25nIFdhbikKKworCisjaW5jbHVkZSAidGVzdC9ndGVzdC10eXBlZC10
ZXN0X3Rlc3QuaCIKIAogI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNs
dWRlICJ0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oIgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lmIF9NU0NfVkVSCitHVEVTVF9ESVNB
QkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MTI3IC8qIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMg
Y29uc3RhbnQgKi8pCisjZW5kaWYgIC8vICBfTVNDX1ZFUgogCiB1c2luZyB0ZXN0aW5nOjpUZXN0
OwogCkBAIC0xNjUsNiArMTY5LDQwIEBAIFRZUEVEX1RFU1QoTnVtZXJpY1Rlc3QsIERlZmF1bHRJ
c1plcm8pIHsKIAogfSAgLy8gbmFtZXNwYWNlIGxpYnJhcnkxCiAKKy8vIFRlc3RzIHRoYXQgY3Vz
dG9tIG5hbWVzIHdvcmsuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVkVGVzdFdp
dGhOYW1lcyA6IHB1YmxpYyBUZXN0IHt9OworCitjbGFzcyBUeXBlZFRlc3ROYW1lcyB7CisgcHVi
bGljOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldE5h
bWUoaW50IGkpIHsKKyAgICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxULCBjaGFyPjo6
dmFsdWUpIHsKKyAgICAgIHJldHVybiBzdGQ6OnN0cmluZygiY2hhciIpICsgOjp0ZXN0aW5nOjpQ
cmludFRvU3RyaW5nKGkpOworICAgIH0KKyAgICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2Ft
ZTxULCBpbnQ+Ojp2YWx1ZSkgeworICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCJpbnQiKSArIDo6
dGVzdGluZzo6UHJpbnRUb1N0cmluZyhpKTsKKyAgICB9CisgIH0KK307CisKK1RZUEVEX1RFU1Rf
Q0FTRShUeXBlZFRlc3RXaXRoTmFtZXMsIFR3b1R5cGVzLCBUeXBlZFRlc3ROYW1lcyk7CisKK1RZ
UEVEX1RFU1QoVHlwZWRUZXN0V2l0aE5hbWVzLCBUZXN0Q2FzZU5hbWUpIHsKKyAgaWYgKHRlc3Rp
bmc6OmludGVybmFsOjpJc1NhbWU8VHlwZVBhcmFtLCBjaGFyPjo6dmFsdWUpIHsKKyAgICBFWFBF
Q1RfU1RSRVEoOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKQorICAgICAgICAgICAg
ICAgICAgICAgLT5jdXJyZW50X3Rlc3RfaW5mbygpCisgICAgICAgICAgICAgICAgICAgICAtPnRl
c3RfY2FzZV9uYW1lKCksCisgICAgICAgICAgICAgICAgICJUeXBlZFRlc3RXaXRoTmFtZXMvY2hh
cjAiKTsKKyAgfQorICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxUeXBlUGFyYW0sIGlu
dD46OnZhbHVlKSB7CisgICAgRVhQRUNUX1NUUkVRKDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldElu
c3RhbmNlKCkKKyAgICAgICAgICAgICAgICAgICAgIC0+Y3VycmVudF90ZXN0X2luZm8oKQorICAg
ICAgICAgICAgICAgICAgICAgLT50ZXN0X2Nhc2VfbmFtZSgpLAorICAgICAgICAgICAgICAgICAi
VHlwZWRUZXN0V2l0aE5hbWVzL2ludDEiKTsKKyAgfQorfQorCiAjZW5kaWYgIC8vIEdURVNUX0hB
U19UWVBFRF9URVNUCiAKIC8vIFRoaXMgI2lmZGVmIGJsb2NrIHRlc3RzIHR5cGUtcGFyYW1ldGVy
aXplZCB0ZXN0cy4KQEAgLTI2NSw2ICszMDMsNDYgQEAgUkVHSVNURVJfVFlQRURfVEVTVF9DQVNF
X1AoRGVyaXZlZFRlc3QsCiB0eXBlZGVmIFR5cGVzPHNob3J0LCBsb25nPiBNeVR3b1R5cGVzOwog
SU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIERlcml2ZWRUZXN0LCBNeVR3b1R5cGVz
KTsKIAorLy8gVGVzdHMgdGhhdCBjdXN0b20gbmFtZXMgd29yayB3aXRoIHR5cGUgcGFyYW1ldHJp
emVkIHRlc3RzLiBXZSByZXVzZSB0aGUKKy8vIFR3b1R5cGVzIGZyb20gYWJvdmUgaGVyZS4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRoTmFtZXMg
OiBwdWJsaWMgVGVzdCB7fTsKKworVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtZXRyaXplZFRl
c3RXaXRoTmFtZXMpOworCitUWVBFRF9URVNUX1AoVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRoTmFt
ZXMsIFRlc3RDYXNlTmFtZSkgeworICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxUeXBl
UGFyYW0sIGNoYXI+Ojp2YWx1ZSkgeworICAgIEVYUEVDVF9TVFJFUSg6OnRlc3Rpbmc6OlVuaXRU
ZXN0OjpHZXRJbnN0YW5jZSgpCisgICAgICAgICAgICAgICAgICAgICAtPmN1cnJlbnRfdGVzdF9p
bmZvKCkKKyAgICAgICAgICAgICAgICAgICAgIC0+dGVzdF9jYXNlX25hbWUoKSwKKyAgICAgICAg
ICAgICAgICAgIkN1c3RvbU5hbWUvVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRoTmFtZXMvcGFyQ2hh
cjAiKTsKKyAgfQorICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxUeXBlUGFyYW0sIGlu
dD46OnZhbHVlKSB7CisgICAgRVhQRUNUX1NUUkVRKDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldElu
c3RhbmNlKCkKKyAgICAgICAgICAgICAgICAgICAgIC0+Y3VycmVudF90ZXN0X2luZm8oKQorICAg
ICAgICAgICAgICAgICAgICAgLT50ZXN0X2Nhc2VfbmFtZSgpLAorICAgICAgICAgICAgICAgICAi
Q3VzdG9tTmFtZS9UeXBlUGFyYW1ldHJpemVkVGVzdFdpdGhOYW1lcy9wYXJJbnQxIik7CisgIH0K
K30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRo
TmFtZXMsIFRlc3RDYXNlTmFtZSk7CisKK2NsYXNzIFR5cGVQYXJhbWV0cml6ZWRUZXN0TmFtZXMg
eworIHB1YmxpYzoKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRpYyBzdGQ6OnN0cmlu
ZyBHZXROYW1lKGludCBpKSB7CisgICAgaWYgKHRlc3Rpbmc6OmludGVybmFsOjpJc1NhbWU8VCwg
Y2hhcj46OnZhbHVlKSB7CisgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoInBhckNoYXIiKSArIDo6
dGVzdGluZzo6UHJpbnRUb1N0cmluZyhpKTsKKyAgICB9CisgICAgaWYgKHRlc3Rpbmc6OmludGVy
bmFsOjpJc1NhbWU8VCwgaW50Pjo6dmFsdWUpIHsKKyAgICAgIHJldHVybiBzdGQ6OnN0cmluZygi
cGFySW50IikgKyA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoaSk7CisgICAgfQorICB9Cit9Owor
CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChDdXN0b21OYW1lLCBUeXBlUGFyYW1ldHJp
emVkVGVzdFdpdGhOYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR3b1R5cGVz
LCBUeXBlUGFyYW1ldHJpemVkVGVzdE5hbWVzKTsKKwogLy8gVGVzdHMgdGhhdCBtdWx0aXBsZSBU
WVBFRF9URVNUX0NBU0VfUCdzIGNhbiBiZSBkZWZpbmVkIGluIHRoZSBzYW1lCiAvLyB0cmFuc2xh
dGlvbiB1bml0LgogCkBAIC0zNDMsNiArNDIxLDI1IEBAIFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FT
RV9QKE51bWVyaWNUZXN0LAogdHlwZWRlZiBUeXBlczxpbnQsIGRvdWJsZT4gTnVtZXJpY1R5cGVz
OwogSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIE51bWVyaWNUZXN0LCBOdW1lcmlj
VHlwZXMpOwogCitzdGF0aWMgY29uc3QgY2hhciogR2V0VGVzdE5hbWUoKSB7CisgIHJldHVybiB0
ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKS0+bmFt
ZSgpOworfQorLy8gVGVzdCB0aGUgc3RyaXBwaW5nIG9mIHNwYWNlIGZyb20gdGVzdCBuYW1lcwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFRyaW1tZWRUZXN0IDogcHVibGljIFRlc3QgeyB9
OworVFlQRURfVEVTVF9DQVNFX1AoVHJpbW1lZFRlc3QpOworVFlQRURfVEVTVF9QKFRyaW1tZWRU
ZXN0LCBUZXN0MSkgeyBFWFBFQ1RfU1RSRVEoIlRlc3QxIiwgR2V0VGVzdE5hbWUoKSk7IH0KK1RZ
UEVEX1RFU1RfUChUcmltbWVkVGVzdCwgVGVzdDIpIHsgRVhQRUNUX1NUUkVRKCJUZXN0MiIsIEdl
dFRlc3ROYW1lKCkpOyB9CitUWVBFRF9URVNUX1AoVHJpbW1lZFRlc3QsIFRlc3QzKSB7IEVYUEVD
VF9TVFJFUSgiVGVzdDMiLCBHZXRUZXN0TmFtZSgpKTsgfQorVFlQRURfVEVTVF9QKFRyaW1tZWRU
ZXN0LCBUZXN0NCkgeyBFWFBFQ1RfU1RSRVEoIlRlc3Q0IiwgR2V0VGVzdE5hbWUoKSk7IH0KK1RZ
UEVEX1RFU1RfUChUcmltbWVkVGVzdCwgVGVzdDUpIHsgRVhQRUNUX1NUUkVRKCJUZXN0NSIsIEdl
dFRlc3ROYW1lKCkpOyB9CitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUCgKKyAgICBUcmltbWVk
VGVzdCwKKyAgICBUZXN0MSwgVGVzdDIsVGVzdDMgLCBUZXN0NCAsVGVzdDUgKTsgIC8vIE5PTElO
VAordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4gc3RydWN0IE15UGFpciB7fTsK
Ky8vIEJlIHN1cmUgdG8gdHJ5IGEgdHlwZSB3aXRoIGEgY29tbWEgaW4gaXRzIG5hbWUganVzdCBp
biBjYXNlIGl0IG1hdHRlcnMuCit0eXBlZGVmIFR5cGVzPGludCwgZG91YmxlLCBNeVBhaXI8aW50
LCBpbnQ+ID4gVHJpbVR5cGVzOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIFRy
aW1tZWRUZXN0LCBUcmltVHlwZXMpOworCiB9ICAvLyBuYW1lc3BhY2UgbGlicmFyeTIKIAogI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCkBAIC0zNTcsNCArNDU0LDggQEAgSU5TVEFO
VElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIE51bWVyaWNUZXN0LCBOdW1lcmljVHlwZXMpOwog
Ly8gbXVzdCBiZSBkZWZpbmVkKS4gVGhpcyBkdW1teSB0ZXN0IGtlZXBzIGd0ZXN0X21haW4gbGlu
a2VkIGluLgogVEVTVChEdW1teVRlc3QsIFR5cGVkVGVzdHNBcmVOb3RTdXBwb3J0ZWRPblRoaXNQ
bGF0Zm9ybSkge30KIAorI2lmIF9NU0NfVkVSCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19Q
T1BfKCkgIC8vICA0MTI3CisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICBf
TVNDX1ZFUgorCiAjZW5kaWYgIC8vICNpZiAhZGVmaW5lZChHVEVTVF9IQVNfVFlQRURfVEVTVCkg
JiYgIWRlZmluZWQoR1RFU1RfSEFTX1RZUEVEX1RFU1RfUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oCmluZGV4IDQwZGZlYWM2
ZTAxZDk3ZWNmN2ZlYmI4NjVmY2U2Njg0OGJhOGU4ZGIuLjJjY2U2N2M4MjVhNmNhYmRiOWE1NGI5
MTkyOWMwMGM5OTJhMGQ0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuaApAQCAtMjYsMTMgKzI2LDEyIEBACiAvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCiAKICNpZm5kZWYgR1RFU1RfVEVTVF9HVEVT
VF9UWVBFRF9URVNUX1RFU1RfSF8KICNkZWZpbmUgR1RFU1RfVEVTVF9HVEVTVF9UWVBFRF9URVNU
X1RFU1RfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKIAogI2lmIEdURVNUX0hBU19UWVBFRF9URVNUX1AKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2MKaW5kZXgg
N2UwZjhmODA0NWQ3MWMwMTVkMTI5NGZmZWY0Y2E1NDVkZGM1NTFmOS4uZjNlYTAzYTU5NmQwZjk5
YTM5MTI1MjYzMGRjYTEwNjIyOTMxMTJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjCkBAIC0yNSwxNSArMjUs
MTQgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwog
Ly8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCi0vLyBUaGUg
R29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBUaGUgR29vZ2xl
IEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8g
VGhpcyBmaWxlIGNvbnRhaW5zIHRlc3RzIHZlcmlmeWluZyBjb3JyZWN0bmVzcyBvZiBkYXRhIHBy
b3ZpZGVkIHZpYQogLy8gVW5pdFRlc3QncyBwdWJsaWMgbWV0aG9kcy4KIAotI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2luY2x1ZGUgPHN0cmlu
Zy5oPiAgLy8gRm9yIHN0cmNtcC4KICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC01NCw3ICs1Myw3
IEBAIGNsYXNzIFVuaXRUZXN0SGVscGVyIHsKICBwdWJsaWM6CiAgIC8vIFJldHVybnMgdGhlIGFy
cmF5IG9mIHBvaW50ZXJzIHRvIGFsbCB0ZXN0IGNhc2VzIHNvcnRlZCBieSB0aGUgdGVzdCBjYXNl
CiAgIC8vIG5hbWUuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUg
YXJyYXkuCi0gIHN0YXRpYyBUZXN0Q2FzZSBjb25zdCoqIGNvbnN0IEdldFNvcnRlZFRlc3RDYXNl
cygpIHsKKyAgc3RhdGljIFRlc3RDYXNlIGNvbnN0KiogR2V0U29ydGVkVGVzdENhc2VzKCkgewog
ICAgIFVuaXRUZXN0JiB1bml0X3Rlc3QgPSAqVW5pdFRlc3Q6OkdldEluc3RhbmNlKCk7CiAgICAg
VGVzdENhc2UgY29uc3QqKiBjb25zdCB0ZXN0X2Nhc2VzID0KICAgICAgICAgbmV3IGNvbnN0IFRl
c3RDYXNlKlt1bml0X3Rlc3QudG90YWxfdGVzdF9jYXNlX2NvdW50KCldOwpAQCAtODMsNyArODIs
NyBAQCBjbGFzcyBVbml0VGVzdEhlbHBlciB7CiAgIC8vIFJldHVybnMgdGhlIGFycmF5IG9mIHBv
aW50ZXJzIHRvIGFsbCB0ZXN0cyBpbiBhIHBhcnRpY3VsYXIgdGVzdCBjYXNlCiAgIC8vIHNvcnRl
ZCBieSB0aGUgdGVzdCBuYW1lLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRp
bmcgdGhlCiAgIC8vIGFycmF5LgotICBzdGF0aWMgVGVzdEluZm8gY29uc3QqKiBjb25zdCBHZXRT
b3J0ZWRUZXN0cyhjb25zdCBUZXN0Q2FzZSogdGVzdF9jYXNlKSB7CisgIHN0YXRpYyBUZXN0SW5m
byBjb25zdCoqIEdldFNvcnRlZFRlc3RzKGNvbnN0IFRlc3RDYXNlKiB0ZXN0X2Nhc2UpIHsKICAg
ICBUZXN0SW5mbyBjb25zdCoqIGNvbnN0IHRlc3RzID0KICAgICAgICAgbmV3IGNvbnN0IFRlc3RJ
bmZvKlt0ZXN0X2Nhc2UtPnRvdGFsX3Rlc3RfY291bnQoKV07CiAKQEAgLTEwMywxMiArMTAyLDYg
QEAgVFlQRURfVEVTVChUZXN0Q2FzZVdpdGhDb21tZW50VGVzdCwgRHVtbXkpIHt9CiAKIGNvbnN0
IGludCBrVHlwZWRUZXN0Q2FzZXMgPSAxOwogY29uc3QgaW50IGtUeXBlZFRlc3RzID0gMTsKLQot
U3RyaW5nIEdldEV4cGVjdGVkVGVzdENhc2VDb21tZW50KCkgewotICBNZXNzYWdlIGNvbW1lbnQ7
Ci0gIGNvbW1lbnQgPDwgIlR5cGVQYXJhbSA9ICIgPDwgR2V0VHlwZU5hbWU8aW50PigpLmNfc3Ry
KCk7Ci0gIHJldHVybiBjb21tZW50LkdldFN0cmluZygpOwotfQogI2Vsc2UKIGNvbnN0IGludCBr
VHlwZWRUZXN0Q2FzZXMgPSAwOwogY29uc3QgaW50IGtUeXBlZFRlc3RzID0gMDsKQEAgLTE0Mywx
MiArMTM2LDE5IEBAIFRFU1QoQXBpVGVzdCwgVW5pdFRlc3RJbW11dGFibGVBY2Nlc3NvcnNXb3Jr
KSB7CiAgIFJlY29yZFByb3BlcnR5KCJrZXkiLCAidmFsdWUiKTsKIH0KIAorQXNzZXJ0aW9uUmVz
dWx0IElzTnVsbChjb25zdCBjaGFyKiBzdHIpIHsKKyAgaWYgKHN0ciAhPSBOVUxMKSB7CisgICAg
cmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCAiYXJndW1lbnQgaXMgIiA8PCBz
dHI7CisgIH0KKyAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKK30KKwogVEVTVChBcGlUZXN0
LCBUZXN0Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dvcmspIHsKICAgY29uc3QgVGVzdENhc2UqIHRl
c3RfY2FzZSA9IFVuaXRUZXN0SGVscGVyOjpGaW5kVGVzdENhc2UoIkFwaVRlc3QiKTsKICAgQVNT
RVJUX1RSVUUodGVzdF9jYXNlICE9IE5VTEwpOwogCiAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIs
IHRlc3RfY2FzZS0+bmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0X2Nhc2UtPmNvbW1l
bnQoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0X2Nhc2UtPnR5cGVfcGFyYW0oKSkpOwog
ICBFWFBFQ1RfVFJVRSh0ZXN0X2Nhc2UtPnNob3VsZF9ydW4oKSk7CiAgIEVYUEVDVF9FUSgxLCB0
ZXN0X2Nhc2UtPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgIEVYUEVDVF9FUSgzLCB0ZXN0X2Nh
c2UtPnRlc3RfdG9fcnVuX2NvdW50KCkpOwpAQCAtMTU4LDI2ICsxNTgsMjYgQEAgVEVTVChBcGlU
ZXN0LCBUZXN0Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dvcmspIHsKIAogICBFWFBFQ1RfU1RSRVEo
IkRJU0FCTEVEX0R1bW15MSIsIHRlc3RzWzBdLT5uYW1lKCkpOwogICBFWFBFQ1RfU1RSRVEoIkFw
aVRlc3QiLCB0ZXN0c1swXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwg
dGVzdHNbMF0tPmNvbW1lbnQoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMF0tPnRlc3Rf
Y2FzZV9jb21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMF0tPnZhbHVlX3Bh
cmFtKCkpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzBdLT50eXBlX3BhcmFtKCkpKTsK
ICAgRVhQRUNUX0ZBTFNFKHRlc3RzWzBdLT5zaG91bGRfcnVuKCkpOwogCiAgIEVYUEVDVF9TVFJF
USgiVGVzdENhc2VEaXNhYmxlZEFjY2Vzc29yc1dvcmsiLCB0ZXN0c1sxXS0+bmFtZSgpKTsKICAg
RVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbMV0tPnRlc3RfY2FzZV9uYW1lKCkpOwotICBF
WFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzFdLT5jb21tZW50KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIs
IHRlc3RzWzFdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRl
c3RzWzFdLT52YWx1ZV9wYXJhbSgpKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1sxXS0+
dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVDVF9UUlVFKHRlc3RzWzFdLT5zaG91bGRfcnVuKCkpOwog
CiAgIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VJbW11dGFibGVBY2Nlc3NvcnNXb3JrIiwgdGVzdHNb
Ml0tPm5hbWUoKSk7CiAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzJdLT50ZXN0X2Nh
c2VfbmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1syXS0+Y29tbWVudCgpKTsKLSAg
RVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1syXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgIEVYUEVD
VF9UUlVFKElzTnVsbCh0ZXN0c1syXS0+dmFsdWVfcGFyYW0oKSkpOworICBFWFBFQ1RfVFJVRShJ
c051bGwodGVzdHNbMl0tPnR5cGVfcGFyYW0oKSkpOwogICBFWFBFQ1RfVFJVRSh0ZXN0c1syXS0+
c2hvdWxkX3J1bigpKTsKIAogICBFWFBFQ1RfU1RSRVEoIlVuaXRUZXN0SW1tdXRhYmxlQWNjZXNz
b3JzV29yayIsIHRlc3RzWzNdLT5uYW1lKCkpOwogICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0
ZXN0c1szXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbM10t
PmNvbW1lbnQoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbM10tPnRlc3RfY2FzZV9jb21t
ZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbM10tPnZhbHVlX3BhcmFtKCkpKTsK
KyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzNdLT50eXBlX3BhcmFtKCkpKTsKICAgRVhQRUNU
X1RSVUUodGVzdHNbM10tPnNob3VsZF9ydW4oKSk7CiAKICAgZGVsZXRlW10gdGVzdHM7CkBAIC0x
ODgsNyArMTg4LDcgQEAgVEVTVChBcGlUZXN0LCBUZXN0Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dv
cmspIHsKICAgQVNTRVJUX1RSVUUodGVzdF9jYXNlICE9IE5VTEwpOwogCiAgIEVYUEVDVF9TVFJF
USgiVGVzdENhc2VXaXRoQ29tbWVudFRlc3QvMCIsIHRlc3RfY2FzZS0+bmFtZSgpKTsKLSAgRVhQ
RUNUX1NUUkVRKEdldEV4cGVjdGVkVGVzdENhc2VDb21tZW50KCkuY19zdHIoKSwgdGVzdF9jYXNl
LT5jb21tZW50KCkpOworICBFWFBFQ1RfU1RSRVEoR2V0VHlwZU5hbWU8aW50PigpLmNfc3RyKCks
IHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgpKTsKICAgRVhQRUNUX1RSVUUodGVzdF9jYXNlLT5zaG91
bGRfcnVuKCkpOwogICBFWFBFQ1RfRVEoMCwgdGVzdF9jYXNlLT5kaXNhYmxlZF90ZXN0X2NvdW50
KCkpOwogICBFWFBFQ1RfRVEoMSwgdGVzdF9jYXNlLT50ZXN0X3RvX3J1bl9jb3VudCgpKTsKQEAg
LTE5OCw5ICsxOTgsOCBAQCBURVNUKEFwaVRlc3QsIFRlc3RDYXNlSW1tdXRhYmxlQWNjZXNzb3Jz
V29yaykgewogCiAgIEVYUEVDVF9TVFJFUSgiRHVtbXkiLCB0ZXN0c1swXS0+bmFtZSgpKTsKICAg
RVhQRUNUX1NUUkVRKCJUZXN0Q2FzZVdpdGhDb21tZW50VGVzdC8wIiwgdGVzdHNbMF0tPnRlc3Rf
Y2FzZV9uYW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzBdLT5jb21tZW50KCkpOwot
ICBFWFBFQ1RfU1RSRVEoR2V0RXhwZWN0ZWRUZXN0Q2FzZUNvbW1lbnQoKS5jX3N0cigpLAotICAg
ICAgICAgICAgICAgdGVzdHNbMF0tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICBFWFBFQ1RfVFJV
RShJc051bGwodGVzdHNbMF0tPnZhbHVlX3BhcmFtKCkpKTsKKyAgRVhQRUNUX1NUUkVRKEdldFR5
cGVOYW1lPGludD4oKS5jX3N0cigpLCB0ZXN0c1swXS0+dHlwZV9wYXJhbSgpKTsKICAgRVhQRUNU
X1RSVUUodGVzdHNbMF0tPnNob3VsZF9ydW4oKSk7CiAKICAgZGVsZXRlW10gdGVzdHM7CkBAIC0y
MTIsNyArMjExLDcgQEAgVEVTVChBcGlUZXN0LCBUZXN0Q2FzZURpc2FibGVkQWNjZXNzb3JzV29y
aykgewogICBBU1NFUlRfVFJVRSh0ZXN0X2Nhc2UgIT0gTlVMTCk7CiAKICAgRVhQRUNUX1NUUkVR
KCJESVNBQkxFRF9UZXN0IiwgdGVzdF9jYXNlLT5uYW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIs
IHRlc3RfY2FzZS0+Y29tbWVudCgpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfY2FzZS0+
dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVDVF9GQUxTRSh0ZXN0X2Nhc2UtPnNob3VsZF9ydW4oKSk7
CiAgIEVYUEVDVF9FUSgxLCB0ZXN0X2Nhc2UtPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgIEVY
UEVDVF9FUSgwLCB0ZXN0X2Nhc2UtPnRlc3RfdG9fcnVuX2NvdW50KCkpOwpAQCAtMjIxLDggKzIy
MCw4IEBAIFRFU1QoQXBpVGVzdCwgVGVzdENhc2VEaXNhYmxlZEFjY2Vzc29yc1dvcmspIHsKICAg
Y29uc3QgVGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9IHRlc3RfY2FzZS0+R2V0VGVzdEluZm8o
MCk7CiAgIEVYUEVDVF9TVFJFUSgiRHVtbXkyIiwgdGVzdF9pbmZvLT5uYW1lKCkpOwogICBFWFBF
Q1RfU1RSRVEoIkRJU0FCTEVEX1Rlc3QiLCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOwot
ICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RfaW5mby0+Y29tbWVudCgpKTsKLSAgRVhQRUNUX1NUUkVR
KCIiLCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051
bGwodGVzdF9pbmZvLT52YWx1ZV9wYXJhbSgpKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0
X2luZm8tPnR5cGVfcGFyYW0oKSkpOwogICBFWFBFQ1RfRkFMU0UodGVzdF9pbmZvLT5zaG91bGRf
cnVuKCkpOwogfQogCkBAIC0yNDcsNyArMjQ2LDcgQEAgY2xhc3MgRmluYWxTdWNjZXNzQ2hlY2tl
ciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7CiAgICAgY29uc3QgVGVzdENhc2UqKiBjb25zdCB0ZXN0
X2Nhc2VzID0gVW5pdFRlc3RIZWxwZXI6OkdldFNvcnRlZFRlc3RDYXNlcygpOwogCiAgICAgRVhQ
RUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdF9jYXNlc1swXS0+bmFtZSgpKTsKLSAgICBFWFBFQ1Rf
U1RSRVEoIiIsIHRlc3RfY2FzZXNbMF0tPmNvbW1lbnQoKSk7CisgICAgRVhQRUNUX1RSVUUoSXNO
dWxsKHRlc3RfY2FzZXNbMF0tPnR5cGVfcGFyYW0oKSkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3Rf
Y2FzZXNbMF0tPnNob3VsZF9ydW4oKSk7CiAgICAgRVhQRUNUX0VRKDEsIHRlc3RfY2FzZXNbMF0t
PmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgICAgQVNTRVJUX0VRKDQsIHRlc3RfY2FzZXNbMF0t
PnRvdGFsX3Rlc3RfY291bnQoKSk7CkBAIC0yNTcsNyArMjU2LDcgQEAgY2xhc3MgRmluYWxTdWNj
ZXNzQ2hlY2tlciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7CiAgICAgRVhQRUNUX0ZBTFNFKHRlc3Rf
Y2FzZXNbMF0tPkZhaWxlZCgpKTsKIAogICAgIEVYUEVDVF9TVFJFUSgiRElTQUJMRURfVGVzdCIs
IHRlc3RfY2FzZXNbMV0tPm5hbWUoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0X2Nhc2Vz
WzFdLT5jb21tZW50KCkpOworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0X2Nhc2VzWzFdLT50
eXBlX3BhcmFtKCkpKTsKICAgICBFWFBFQ1RfRkFMU0UodGVzdF9jYXNlc1sxXS0+c2hvdWxkX3J1
bigpKTsKICAgICBFWFBFQ1RfRVEoMSwgdGVzdF9jYXNlc1sxXS0+ZGlzYWJsZWRfdGVzdF9jb3Vu
dCgpKTsKICAgICBBU1NFUlRfRVEoMSwgdGVzdF9jYXNlc1sxXS0+dG90YWxfdGVzdF9jb3VudCgp
KTsKQEAgLTI2Niw4ICsyNjUsNyBAQCBjbGFzcyBGaW5hbFN1Y2Nlc3NDaGVja2VyIDogcHVibGlj
IEVudmlyb25tZW50IHsKIAogI2lmIEdURVNUX0hBU19UWVBFRF9URVNUCiAgICAgRVhQRUNUX1NU
UkVRKCJUZXN0Q2FzZVdpdGhDb21tZW50VGVzdC8wIiwgdGVzdF9jYXNlc1syXS0+bmFtZSgpKTsK
LSAgICBFWFBFQ1RfU1RSRVEoR2V0RXhwZWN0ZWRUZXN0Q2FzZUNvbW1lbnQoKS5jX3N0cigpLAot
ICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2VzWzJdLT5jb21tZW50KCkpOworICAgIEVYUEVDVF9T
VFJFUShHZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIoKSwgdGVzdF9jYXNlc1syXS0+dHlwZV9wYXJh
bSgpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0X2Nhc2VzWzJdLT5zaG91bGRfcnVuKCkpOwogICAg
IEVYUEVDVF9FUSgwLCB0ZXN0X2Nhc2VzWzJdLT5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOwogICAg
IEFTU0VSVF9FUSgxLCB0ZXN0X2Nhc2VzWzJdLT50b3RhbF90ZXN0X2NvdW50KCkpOwpAQCAtMjg1
LDI0ICsyODMsMjQgQEAgY2xhc3MgRmluYWxTdWNjZXNzQ2hlY2tlciA6IHB1YmxpYyBFbnZpcm9u
bWVudCB7CiAKICAgICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlRGlzYWJsZWRBY2Nlc3NvcnNXb3Jr
IiwgdGVzdHNbMV0tPm5hbWUoKSk7CiAgICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNb
MV0tPnRlc3RfY2FzZV9uYW1lKCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMV0tPmNv
bW1lbnQoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1sxXS0+dGVzdF9jYXNlX2NvbW1l
bnQoKSk7CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzFdLT52YWx1ZV9wYXJhbSgpKSk7
CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzFdLT50eXBlX3BhcmFtKCkpKTsKICAgICBF
WFBFQ1RfVFJVRSh0ZXN0c1sxXS0+c2hvdWxkX3J1bigpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0
c1sxXS0+cmVzdWx0KCktPlBhc3NlZCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgdGVzdHNbMV0tPnJl
c3VsdCgpLT50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwogCiAgICAgRVhQRUNUX1NUUkVRKCJUZXN0
Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dvcmsiLCB0ZXN0c1syXS0+bmFtZSgpKTsKICAgICBFWFBF
Q1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1syXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gICAgRVhQ
RUNUX1NUUkVRKCIiLCB0ZXN0c1syXS0+Y29tbWVudCgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIs
IHRlc3RzWzJdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwo
dGVzdHNbMl0tPnZhbHVlX3BhcmFtKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNb
Ml0tPnR5cGVfcGFyYW0oKSkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzJdLT5zaG91bGRfcnVu
KCkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzJdLT5yZXN1bHQoKS0+UGFzc2VkKCkpOwogICAg
IEVYUEVDVF9FUSgwLCB0ZXN0c1syXS0+cmVzdWx0KCktPnRlc3RfcHJvcGVydHlfY291bnQoKSk7
CiAKICAgICBFWFBFQ1RfU1RSRVEoIlVuaXRUZXN0SW1tdXRhYmxlQWNjZXNzb3JzV29yayIsIHRl
c3RzWzNdLT5uYW1lKCkpOwogICAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzNdLT50
ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzNdLT5jb21tZW50
KCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbM10tPnRlc3RfY2FzZV9jb21tZW50KCkp
OworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1szXS0+dmFsdWVfcGFyYW0oKSkpOworICAg
IEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1szXS0+dHlwZV9wYXJhbSgpKSk7CiAgICAgRVhQRUNU
X1RSVUUodGVzdHNbM10tPnNob3VsZF9ydW4oKSk7CiAgICAgRVhQRUNUX1RSVUUodGVzdHNbM10t
PnJlc3VsdCgpLT5QYXNzZWQoKSk7CiAgICAgRVhQRUNUX0VRKDEsIHRlc3RzWzNdLT5yZXN1bHQo
KS0+dGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKQEAgLTMxOCw5ICszMTYsOCBAQCBjbGFzcyBGaW5h
bFN1Y2Nlc3NDaGVja2VyIDogcHVibGljIEVudmlyb25tZW50IHsKIAogICAgIEVYUEVDVF9TVFJF
USgiRHVtbXkiLCB0ZXN0c1swXS0+bmFtZSgpKTsKICAgICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNl
V2l0aENvbW1lbnRUZXN0LzAiLCB0ZXN0c1swXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gICAgRVhQ
RUNUX1NUUkVRKCIiLCB0ZXN0c1swXS0+Y29tbWVudCgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoR2V0
RXhwZWN0ZWRUZXN0Q2FzZUNvbW1lbnQoKS5jX3N0cigpLAotICAgICAgICAgICAgICAgICB0ZXN0
c1swXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3Rz
WzBdLT52YWx1ZV9wYXJhbSgpKSk7CisgICAgRVhQRUNUX1NUUkVRKEdldFR5cGVOYW1lPGludD4o
KS5jX3N0cigpLCB0ZXN0c1swXS0+dHlwZV9wYXJhbSgpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0
c1swXS0+c2hvdWxkX3J1bigpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0c1swXS0+cmVzdWx0KCkt
PlBhc3NlZCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgdGVzdHNbMF0tPnJlc3VsdCgpLT50ZXN0X3By
b3BlcnR5X2NvdW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF9hbGxfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
YWxsX3Rlc3QuY2MKaW5kZXggZTFlZGIwOGUzM2ExOGMyMzkxMTVkYWQ1ZTRhMGQ2ZmI2MzJkYmIx
Ny4uZTYxZTM2YjFkZmU4ZGEwMzAxNmFmNTc4NTViMmM3ODFlZTdkOTFlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9hbGxfdGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2FsbF90ZXN0LmNjCkBAIC0yNiwyMyArMjYs
MjEgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwog
Ly8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBUZXN0
cyBmb3IgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBUZXN0
cyBmb3IgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRl
c3QpCiAvLwogLy8gU29tZXRpbWVzIGl0J3MgZGVzaXJhYmxlIHRvIGJ1aWxkIG1vc3Qgb2YgR29v
Z2xlIFRlc3QncyBvd24gdGVzdHMKIC8vIGJ5IGNvbXBpbGluZyBhIHNpbmdsZSBmaWxlLiAgVGhp
cyBmaWxlIHNlcnZlcyB0aGlzIHB1cnBvc2UuCi0jaW5jbHVkZSAidGVzdC9ndGVzdC1maWxlcGF0
aF90ZXN0LmNjIgotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNjIgotI2lu
Y2x1ZGUgInRlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjIgotI2luY2x1ZGUgInRlc3QvZ3Rlc3Qt
b3B0aW9uc190ZXN0LmNjIgotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtcG9ydF90ZXN0LmNjIgorI2lu
Y2x1ZGUgInRlc3QvZ29vZ2xldGVzdC1maWxlcGF0aC10ZXN0LmNjIgorI2luY2x1ZGUgInRlc3Qv
Z29vZ2xldGVzdC1saW5rZWQtcHRyLXRlc3QuY2MiCisjaW5jbHVkZSAidGVzdC9nb29nbGV0ZXN0
LW1lc3NhZ2UtdGVzdC5jYyIKKyNpbmNsdWRlICJ0ZXN0L2dvb2dsZXRlc3Qtb3B0aW9ucy10ZXN0
LmNjIgorI2luY2x1ZGUgInRlc3QvZ29vZ2xldGVzdC1wb3J0LXRlc3QuY2MiCiAjaW5jbHVkZSAi
dGVzdC9ndGVzdF9wcmVkX2ltcGxfdW5pdHRlc3QuY2MiCiAjaW5jbHVkZSAidGVzdC9ndGVzdF9w
cm9kX3Rlc3QuY2MiCi0jaW5jbHVkZSAidGVzdC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYyIKKyNp
bmNsdWRlICJ0ZXN0L2dvb2dsZXRlc3QtdGVzdC1wYXJ0LXRlc3QuY2MiCiAjaW5jbHVkZSAidGVz
dC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC10eXBlZC10
ZXN0Ml90ZXN0LmNjIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MiCiAjaW5jbHVk
ZSAidGVzdC9wcm9kdWN0aW9uLmNjIgotI2luY2x1ZGUgInNyYy9ndGVzdF9tYWluLmNjIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9hc3NlcnRfYnlfZXhj
ZXB0aW9uX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Fzc2Vy
dF9ieV9leGNlcHRpb25fdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZWFlODU3NWYzZmVlMzBiYWM2NDJi
YTE1ODlmZjIzNGQwN2Y5NDU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9hc3NlcnRfYnlfZXhjZXB0aW9uX3Rlc3QuY2MKQEAgLTAsMCArMSwx
MTggQEAKKy8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisv
LyBUZXN0cyBHb29nbGUgVGVzdCdzIGFzc2VydC1ieS1leGNlcHRpb24gbW9kZSB3aXRoIGV4Y2Vw
dGlvbnMgZW5hYmxlZC4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpbmNsdWRlIDxz
dGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1
ZGUgPHN0ZGV4Y2VwdD4KKworY2xhc3MgVGhyb3dMaXN0ZW5lciA6IHB1YmxpYyB0ZXN0aW5nOjpF
bXB0eVRlc3RFdmVudExpc3RlbmVyIHsKKyAgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IHRl
c3Rpbmc6OlRlc3RQYXJ0UmVzdWx0JiByZXN1bHQpIG92ZXJyaWRlIHsKKyAgICBpZiAocmVzdWx0
LnR5cGUoKSA9PSB0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSkgeworICAg
ICAgdGhyb3cgdGVzdGluZzo6QXNzZXJ0aW9uRXhjZXB0aW9uKHJlc3VsdCk7CisgICAgfQorICB9
Cit9OworCisvLyBQcmludHMgdGhlIGdpdmVuIGZhaWx1cmUgbWVzc2FnZSBhbmQgZXhpdHMgdGhl
IHByb2dyYW0gd2l0aAorLy8gbm9uLXplcm8uICBXZSB1c2UgdGhpcyBpbnN0ZWFkIG9mIGEgR29v
Z2xlIFRlc3QgYXNzZXJ0aW9uIHRvCisvLyBpbmRpY2F0ZSBhIGZhaWx1cmUsIGFzIHRoZSBsYXR0
ZXIgaXMgYmVlbiB0ZXN0ZWQgYW5kIGNhbm5vdCBiZQorLy8gcmVsaWVkIG9uLgordm9pZCBGYWls
KGNvbnN0IGNoYXIqIG1zZykgeworICBwcmludGYoIkZBSUxVUkU6ICVzXG4iLCBtc2cpOworICBm
Zmx1c2goc3Rkb3V0KTsKKyAgZXhpdCgxKTsKK30KKworc3RhdGljIHZvaWQgQXNzZXJ0RmFsc2Uo
KSB7CisgIEFTU0VSVF9FUSgyLCAzKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7Cit9CisKKy8vIFRl
c3RzIHRoYXQgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgdGhyb3dzIGEgc3ViY2xhc3Mgb2YKKy8vIHN0
ZDo6cnVudGltZV9lcnJvci4KK1RFU1QoVGVzdCwgVGVzdCkgeworICAvLyBBIHN1Y2Nlc3NmdWwg
YXNzZXJ0aW9uIHNob3VsZG4ndCB0aHJvdy4KKyAgdHJ5IHsKKyAgICBFWFBFQ1RfRVEoMywgMyk7
CisgIH0gY2F0Y2goLi4uKSB7CisgICAgRmFpbCgiQSBzdWNjZXNzZnVsIGFzc2VydGlvbiB3cm9u
Z2Z1bGx5IHRocmV3LiIpOworICB9CisKKyAgLy8gQSBzdWNjZXNzZnVsIGFzc2VydGlvbiBzaG91
bGRuJ3QgdGhyb3cuCisgIHRyeSB7CisgICAgRVhQRUNUX0VRKDMsIDQpOworICB9IGNhdGNoKC4u
LikgeworICAgIEZhaWwoIkEgZmFpbGVkIG5vbi1mYXRhbCBhc3NlcnRpb24gd3JvbmdmdWxseSB0
aHJldy4iKTsKKyAgfQorCisgIC8vIEEgZmFpbGVkIGFzc2VydGlvbiBzaG91bGQgdGhyb3cuCisg
IHRyeSB7CisgICAgQXNzZXJ0RmFsc2UoKTsKKyAgfSBjYXRjaChjb25zdCB0ZXN0aW5nOjpBc3Nl
cnRpb25FeGNlcHRpb24mIGUpIHsKKyAgICBpZiAoc3Ryc3RyKGUud2hhdCgpLCAiRXhwZWN0ZWQg
ZmFpbHVyZSIpICE9IE5VTEwpCisgICAgICB0aHJvdzsKKworICAgIHByaW50ZigiJXMiLAorICAg
ICAgICAgICAiQSBmYWlsZWQgYXNzZXJ0aW9uIGRpZCB0aHJvdyBhbiBleGNlcHRpb24gb2YgdGhl
IHJpZ2h0IHR5cGUsICIKKyAgICAgICAgICAgImJ1dCB0aGUgbWVzc2FnZSBpcyBpbmNvcnJlY3Qu
ICBJbnN0ZWFkIG9mIGNvbnRhaW5pbmcgXCJFeHBlY3RlZCAiCisgICAgICAgICAgICJmYWlsdXJl
XCIsIGl0IGlzOlxuIik7CisgICAgRmFpbChlLndoYXQoKSk7CisgIH0gY2F0Y2goLi4uKSB7Cisg
ICAgRmFpbCgiQSBmYWlsZWQgYXNzZXJ0aW9uIHRocmV3IHRoZSB3cm9uZyB0eXBlIG9mIGV4Y2Vw
dGlvbi4iKTsKKyAgfQorICBGYWlsKCJBIGZhaWxlZCBhc3NlcnRpb24gc2hvdWxkJ3ZlIHRocm93
biBidXQgZGlkbid0LiIpOworfQorCitpbnQga1Rlc3RGb3JDb250aW51aW5nVGVzdCA9IDA7CisK
K1RFU1QoVGVzdCwgVGVzdDIpIHsKKyAgLy8gRklYTUU6IGhvdyB0byBmb3JjZSBUZXN0MiB0byBi
ZSBhZnRlciBUZXN0PworICBrVGVzdEZvckNvbnRpbnVpbmdUZXN0ID0gMTsKK30KKworaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZh
cmdjLCBhcmd2KTsKKyAgdGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVy
cygpLkFwcGVuZChuZXcgVGhyb3dMaXN0ZW5lcik7CisKKyAgaW50IHJlc3VsdCA9IFJVTl9BTExf
VEVTVFMoKTsKKyAgaWYgKHJlc3VsdCA9PSAwKSB7CisgICAgcHJpbnRmKCJSVU5fQUxMX1RFU1RT
IHJldHVybmVkICVkXG4iLCByZXN1bHQpOworICAgIEZhaWwoIkV4cGVjdGVkIGZhaWx1cmUgaW5z
dGVhZC4iKTsKKyAgfQorCisgIGlmIChrVGVzdEZvckNvbnRpbnVpbmdUZXN0ID09IDApIHsKKyAg
ICBGYWlsKCJTaG91bGQgaGF2ZSBjb250aW51ZWQgd2l0aCBvdGhlciB0ZXN0cywgYnV0IGRpZCBu
b3QuIik7CisgIH0KKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGM4MTkxODMzMTIyNzVkZWNhMDVjNzYzMTg2
MDQwNDcxYmZmNDlmMzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9icmVha19vbl9mYWlsdXJl
X3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjE4ICswLDAgQEAKLSMhL3Vzci9iaW4v
ZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0j
IGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0j
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlVuaXQgdGVzdCBmb3IgR29vZ2xl
IFRlc3QncyBicmVhay1vbi1mYWlsdXJlIG1vZGUuCi0KLUEgdXNlciBjYW4gYXNrIEdvb2dsZSBU
ZXN0IHRvIHNlZy1mYXVsdCB3aGVuIGFuIGFzc2VydGlvbiBmYWlscywgdXNpbmcKLWVpdGhlciB0
aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUKLS0t
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnLiAgVGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5j
dGlvbmFsaXR5Ci1ieSBpbnZva2luZyBndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0XyAo
YSBwcm9ncmFtIHdyaXR0ZW4gd2l0aAotR29vZ2xlIFRlc3QpIHdpdGggZGlmZmVyZW50IGVudmly
b25tZW50cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdzLgotIiIiCi0KLV9fYXV0aG9yX18gPSAnd2Fu
QGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi1p
bXBvcnQgb3MKLWltcG9ydCBzeXMKLQotCi0jIENvbnN0YW50cy4KLQotSVNfV0lORE9XUyA9IG9z
Lm5hbWUgPT0gJ250JwotCi0jIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgZW5hYmxpbmcv
ZGlzYWJsaW5nIHRoZSBicmVhay1vbi1mYWlsdXJlIG1vZGUuCi1CUkVBS19PTl9GQUlMVVJFX0VO
Vl9WQVIgPSAnR1RFU1RfQlJFQUtfT05fRkFJTFVSRScKLQotIyBUaGUgY29tbWFuZCBsaW5lIGZs
YWcgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgYnJlYWstb24tZmFpbHVyZSBtb2RlLgotQlJF
QUtfT05fRkFJTFVSRV9GTEFHID0gJ2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmUnCi0KLSMgVGhlIGVu
dmlyb25tZW50IHZhcmlhYmxlIGZvciBlbmFibGluZy9kaXNhYmxpbmcgdGhlIHRocm93LW9uLWZh
aWx1cmUgbW9kZS4KLVRIUk9XX09OX0ZBSUxVUkVfRU5WX1ZBUiA9ICdHVEVTVF9USFJPV19PTl9G
QUlMVVJFJwotCi0jIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgZW5hYmxpbmcvZGlzYWJs
aW5nIHRoZSBjYXRjaC1leGNlcHRpb25zIG1vZGUuCi1DQVRDSF9FWENFUFRJT05TX0VOVl9WQVIg
PSAnR1RFU1RfQ0FUQ0hfRVhDRVBUSU9OUycKLQotIyBQYXRoIHRvIHRoZSBndGVzdF9icmVha19v
bl9mYWlsdXJlX3VuaXR0ZXN0XyBwcm9ncmFtLgotRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxz
LkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKLSAgICAnZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0
dGVzdF8nKQotCi0KLSMgVXRpbGl0aWVzLgotCi0KLWVudmlyb24gPSBvcy5lbnZpcm9uLmNvcHko
KQotCi0KLWRlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgotICAiIiJTZXRzIGFuIGVudmly
b25tZW50IHZhcmlhYmxlIHRvIGEgZ2l2ZW4gdmFsdWU7IHVuc2V0cyBpdCB3aGVuIHRoZQotICBn
aXZlbiB2YWx1ZSBpcyBOb25lLgotICAiIiIKLQotICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAg
ICBlbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKLSAgZWxpZiBlbnZfdmFyIGluIGVudmlyb246Ci0g
ICAgZGVsIGVudmlyb25bZW52X3Zhcl0KLQotCi1kZWYgUnVuKGNvbW1hbmQpOgotICAiIiJSdW5z
IGEgY29tbWFuZDsgcmV0dXJucyAxIGlmIGl0IHdhcyBraWxsZWQgYnkgYSBzaWduYWwsIG9yIDAg
b3RoZXJ3aXNlLiIiIgotCi0gIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFu
ZCwgZW52PWVudmlyb24pCi0gIGlmIHAudGVybWluYXRlZF9ieV9zaWduYWw6Ci0gICAgcmV0dXJu
IDEKLSAgZWxzZToKLSAgICByZXR1cm4gMAotCi0KLSMgVGhlIHRlc3RzLgotCi0KLWNsYXNzIEdU
ZXN0QnJlYWtPbkZhaWx1cmVVbml0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAg
IiIiVGVzdHMgdXNpbmcgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFy
aWFibGUgb3IKLSAgdGhlIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnIHRvIHR1cm4gYXNz
ZXJ0aW9uIGZhaWx1cmVzIGludG8KLSAgc2VnbWVudGF0aW9uIGZhdWx0cy4KLSAgIiIiCi0KLSAg
ZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBlbnZfdmFyX3ZhbHVlLCBmbGFnX3ZhbHVlLCBleHBlY3Rf
c2VnX2ZhdWx0KToKLSAgICAiIiJSdW5zIGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3Rf
IGFuZCB2ZXJpZmllcyB0aGF0IGl0IGRvZXMKLSAgICAob3IgZG9lcyBub3QpIGhhdmUgYSBzZWct
ZmF1bHQuCi0KLSAgICBBcmdzOgotICAgICAgZW52X3Zhcl92YWx1ZTogICAgdmFsdWUgb2YgdGhl
IEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHZhcmlhYmxlOyBOb25lIGlmIHRoZSB2YXJpYWJsZSBzaG91bGQgYmUgdW5zZXQuCi0gICAg
ICBmbGFnX3ZhbHVlOiAgICAgICB2YWx1ZSBvZiB0aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJl
IGZsYWc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBu
b3QgYmUgcHJlc2VudC4KLSAgICAgIGV4cGVjdF9zZWdfZmF1bHQ6IDEgaWYgdGhlIHByb2dyYW0g
aXMgZXhwZWN0ZWQgdG8gZ2VuZXJhdGUgYSBzZWctZmF1bHQ7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAwIG90aGVyd2lzZS4KLSAgICAiIiIKLQotICAgIFNldEVudlZhcihCUkVBS19PTl9GQUlM
VVJFX0VOVl9WQVIsIGVudl92YXJfdmFsdWUpCi0KLSAgICBpZiBlbnZfdmFyX3ZhbHVlIGlzIE5v
bmU6Ci0gICAgICBlbnZfdmFyX3ZhbHVlX21zZyA9ICcgaXMgbm90IHNldCcKLSAgICBlbHNlOgot
ICAgICAgZW52X3Zhcl92YWx1ZV9tc2cgPSAnPScgKyBlbnZfdmFyX3ZhbHVlCi0KLSAgICBpZiBm
bGFnX3ZhbHVlIGlzIE5vbmU6Ci0gICAgICBmbGFnID0gJycKLSAgICBlbGlmIGZsYWdfdmFsdWUg
PT0gJzAnOgotICAgICAgZmxhZyA9ICctLSVzPTAnICUgQlJFQUtfT05fRkFJTFVSRV9GTEFHCi0g
ICAgZWxzZToKLSAgICAgIGZsYWcgPSAnLS0lcycgJSBCUkVBS19PTl9GQUlMVVJFX0ZMQUcKLQot
ICAgIGNvbW1hbmQgPSBbRVhFX1BBVEhdCi0gICAgaWYgZmxhZzoKLSAgICAgIGNvbW1hbmQuYXBw
ZW5kKGZsYWcpCi0KLSAgICBpZiBleHBlY3Rfc2VnX2ZhdWx0OgotICAgICAgc2hvdWxkX29yX25v
dCA9ICdzaG91bGQnCi0gICAgZWxzZToKLSAgICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxkIG5v
dCcKLQotICAgIGhhc19zZWdfZmF1bHQgPSBSdW4oY29tbWFuZCkKLQotICAgIFNldEVudlZhcihC
UkVBS19PTl9GQUlMVVJFX0VOVl9WQVIsIE5vbmUpCi0KLSAgICBtc2cgPSAoJ3doZW4gJXMlcywg
YW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4gIiVzIiAlcyBjYXVzZSBhIHNlZy1mYXVsdC4nICUKLSAg
ICAgICAgICAgKEJSRUFLX09OX0ZBSUxVUkVfRU5WX1ZBUiwgZW52X3Zhcl92YWx1ZV9tc2csICcg
Jy5qb2luKGNvbW1hbmQpLAotICAgICAgICAgICAgc2hvdWxkX29yX25vdCkpCi0gICAgc2VsZi5h
c3NlcnRfKGhhc19zZWdfZmF1bHQgPT0gZXhwZWN0X3NlZ19mYXVsdCwgbXNnKQotCi0gIGRlZiB0
ZXN0RGVmYXVsdEJlaGF2aW9yKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiB0
aGUgZGVmYXVsdCBtb2RlLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1
ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKLSAgICAgICAg
ICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCi0KLSAgZGVmIHRlc3RFbnZWYXIoc2Vs
Zik6Ci0gICAgIiIiVGVzdHMgdXNpbmcgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJv
bm1lbnQgdmFyaWFibGUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVl
PScwJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCi0gICAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0wKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVu
dl92YXJfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwK
LSAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCi0KLSAgZGVmIHRlc3RG
bGFnKHNlbGYpOgotICAgICIiIlRlc3RzIHVzaW5nIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1
cmUgZmxhZy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwK
LSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAg
ICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92
YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAotICAgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKLQotICBkZWYgdGVzdEZsYWdPdmVy
cmlkZXNFbnZWYXIoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCB0aGUgZmxhZyBvdmVycmlkZXMg
dGhlIGVudmlyb25tZW50IHZhcmlhYmxlLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52
X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0wKQotICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFs
dWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKLSAgICBz
ZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAg
ICBmbGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0
PTApCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0gICAgICAgICAg
ICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
X3NlZ19mYXVsdD0xKQotCi0gIGRlZiB0ZXN0QnJlYWtPbkZhaWx1cmVPdmVycmlkZXNUaHJvd09u
RmFpbHVyZShzZWxmKToKLSAgICAiIiJUZXN0cyB0aGF0IGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUg
b3ZlcnJpZGVzIGd0ZXN0X3Rocm93X29uX2ZhaWx1cmUuIiIiCi0KLSAgICBTZXRFbnZWYXIoVEhS
T1dfT05fRkFJTFVSRV9FTlZfVkFSLCAnMScpCi0gICAgdHJ5OgotICAgICAgc2VsZi5SdW5BbmRW
ZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ192
YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCi0g
ICAgZmluYWxseToKLSAgICAgIFNldEVudlZhcihUSFJPV19PTl9GQUlMVVJFX0VOVl9WQVIsIE5v
bmUpCi0KLSAgaWYgSVNfV0lORE9XUzoKLSAgICBkZWYgdGVzdENhdGNoRXhjZXB0aW9uc0RvZXNO
b3RJbnRlcmZlcmUoc2VsZik6Ci0gICAgICAiIiJUZXN0cyB0aGF0IGd0ZXN0X2NhdGNoX2V4Y2Vw
dGlvbnMgZG9lc24ndCBpbnRlcmZlcmUuIiIiCi0KLSAgICAgIFNldEVudlZhcihDQVRDSF9FWENF
UFRJT05TX0VOVl9WQVIsICcxJykKLSAgICAgIHRyeToKLSAgICAgICAgc2VsZi5SdW5BbmRWZXJp
ZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFs
dWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCi0g
ICAgICBmaW5hbGx5OgotICAgICAgICBTZXRFbnZWYXIoQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFS
LCBOb25lKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rlc3RfdXRp
bHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZDI4ZDFkM2RhZDQ2YjhmZGYzYzM0MDk2N2RiZmNhODUyZjU5ZTRhMS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfLmNjCisr
KyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJ
bmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0v
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25n
IFdhbikKLQotLy8gVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIGJyZWFrLW9uLWZhaWx1cmUg
bW9kZS4KLS8vCi0vLyBBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBzZWctZmF1bHQgd2hl
biBhbiBhc3NlcnRpb24gZmFpbHMsIHVzaW5nCi0vLyBlaXRoZXIgdGhlIEdURVNUX0JSRUFLX09O
X0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCi0vLyAtLWd0ZXN0X2JyZWFrX29u
X2ZhaWx1cmUgZmxhZy4gIFRoaXMgZmlsZSBpcyB1c2VkIGZvciB0ZXN0aW5nIHN1Y2gKLS8vIGZ1
bmN0aW9uYWxpdHkuCi0vLwotLy8gVGhpcyBwcm9ncmFtIHdpbGwgYmUgaW52b2tlZCBmcm9tIGEg
UHl0aG9uIHVuaXQgdGVzdC4gIEl0IGlzCi0vLyBleHBlY3RlZCB0byBmYWlsLiAgRG9uJ3QgcnVu
IGl0IGRpcmVjdGx5LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2lmIEdURVNUX09T
X1dJTkRPV1MKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jZW5k
aWYKLQotbmFtZXNwYWNlIHsKLQotLy8gQSB0ZXN0IHRoYXQncyBleHBlY3RlZCB0byBmYWlsLgot
VEVTVChGb28sIEJhcikgewotICBFWFBFQ1RfRVEoMiwgMyk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNf
U0VIICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotLy8gT24gV2luZG93cyBNb2JpbGUgZ2xv
YmFsIGV4Y2VwdGlvbiBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZC4KLUxPTkcgV0lOQVBJIEV4
aXRXaXRoRXhjZXB0aW9uQ29kZSgKLSAgICBzdHJ1Y3QgX0VYQ0VQVElPTl9QT0lOVEVSUyogZXhj
ZXB0aW9uX3BvaW50ZXJzKSB7Ci0gIGV4aXQoZXhjZXB0aW9uX3BvaW50ZXJzLT5FeGNlcHRpb25S
ZWNvcmQtPkV4Y2VwdGlvbkNvZGUpOwotfQotI2VuZGlmCi0KLX0gIC8vIG5hbWVzcGFjZQotCi1p
bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0g
IC8vIFN1cHByZXNzZXMgZGlzcGxheSBvZiB0aGUgV2luZG93cyBlcnJvciBkaWFsb2cgdXBvbiBl
bmNvdW50ZXJpbmcKLSAgLy8gYSBnZW5lcmFsIHByb3RlY3Rpb24gZmF1bHQgKHNlZ21lbnQgdmlv
bGF0aW9uKS4KLSAgU2V0RXJyb3JNb2RlKFNFTV9OT0dQRkFVTFRFUlJPUkJPWCB8IFNFTV9GQUlM
Q1JJVElDQUxFUlJPUlMpOwotCi0jaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0gIC8vIFRo
ZSBkZWZhdWx0IHVuaGFuZGxlZCBleGNlcHRpb24gZmlsdGVyIGRvZXMgbm90IGFsd2F5cyBleGl0
Ci0gIC8vIHdpdGggdGhlIGV4Y2VwdGlvbiBjb2RlIGFzIGV4aXQgY29kZSAtIGZvciBleGFtcGxl
IGl0IGV4aXRzIHdpdGgKLSAgLy8gMCBmb3IgRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT04gYW5k
IDEgZm9yIEVYQ0VQVElPTl9CUkVBS1BPSU5UCi0gIC8vIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBj
b21waWxlZCBpbiBkZWJ1ZyBtb2RlLiBUaHVzIHdlIHVzZSBvdXIgb3duCi0gIC8vIGZpbHRlciB3
aGljaCBhbHdheXMgZXhpdHMgd2l0aCB0aGUgZXhjZXB0aW9uIGNvZGUgZm9yIHVuaGFuZGxlZAot
ICAvLyBleGNlcHRpb25zLgotICBTZXRVbmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIoRXhpdFdpdGhF
eGNlcHRpb25Db2RlKTsKLSNlbmRpZgotI2VuZGlmCi0KLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRl
c3QoJmFyZ2MsIGFyZ3YpOwotCi0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IGQwMmE1M2VkODU3Yzc0YzgwMGJjY2Q2N2JjNDE4YTUxYTA5
ZDY5MzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5CisrKyAvZGV2L251
bGwKQEAgLTEsMTMwICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmln
aHQgMjAwOCwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLSIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3QgY29ycmVjdGx5IGRldGVybWlu
ZXMgd2hldGhlciB0byB1c2UgY29sb3JzLiIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUu
Y29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWltcG9ydCBndGVzdF90ZXN0X3V0aWxz
Ci0KLQotSVNfV0lORE9XUyA9IG9zLm5hbWUgPSAnbnQnCi0KLUNPTE9SX0VOVl9WQVIgPSAnR1RF
U1RfQ09MT1InCi1DT0xPUl9GTEFHID0gJ2d0ZXN0X2NvbG9yJwotQ09NTUFORCA9IGd0ZXN0X3Rl
c3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9jb2xvcl90ZXN0XycpCi0KLQot
ZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6Ci0gICIiIlNldHMgdGhlIGVudiB2YXJpYWJs
ZSB0byAndmFsdWUnOyB1bnNldHMgaXQgd2hlbiAndmFsdWUnIGlzIE5vbmUuIiIiCi0KLSAgaWYg
dmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgb3MuZW52aXJvbltlbnZfdmFyXSA9IHZhbHVlCi0gIGVs
aWYgZW52X3ZhciBpbiBvcy5lbnZpcm9uOgotICAgIGRlbCBvcy5lbnZpcm9uW2Vudl92YXJdCi0K
LQotZGVmIFVzZXNDb2xvcih0ZXJtLCBjb2xvcl9lbnZfdmFyLCBjb2xvcl9mbGFnKToKLSAgIiIi
UnVucyBndGVzdF9jb2xvcl90ZXN0XyBhbmQgcmV0dXJucyBpdHMgZXhpdCBjb2RlLiIiIgotCi0g
IFNldEVudlZhcignVEVSTScsIHRlcm0pCi0gIFNldEVudlZhcihDT0xPUl9FTlZfVkFSLCBjb2xv
cl9lbnZfdmFyKQotCi0gIGlmIGNvbG9yX2ZsYWcgaXMgTm9uZToKLSAgICBhcmdzID0gW10KLSAg
ZWxzZToKLSAgICBhcmdzID0gWyctLSVzPSVzJyAlIChDT0xPUl9GTEFHLCBjb2xvcl9mbGFnKV0K
LSAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhbQ09NTUFORF0gKyBhcmdzKQotICBy
ZXR1cm4gbm90IHAuZXhpdGVkIG9yIHAuZXhpdF9jb2RlCi0KLQotY2xhc3MgR1Rlc3RDb2xvclRl
c3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gIGRlZiB0ZXN0Tm9FbnZWYXJOb0ZsYWco
c2VsZik6Ci0gICAgIiIiVGVzdHMgdGhlIGNhc2Ugd2hlbiB0aGVyZSdzIG5laXRoZXIgR1RFU1Rf
Q09MT1Igbm9yIC0tZ3Rlc3RfY29sb3IuIiIiCi0KLSAgICBpZiBub3QgSVNfV0lORE9XUzoKLSAg
ICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgTm9uZSkpCi0gICAg
ICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcignZW1hY3MnLCBOb25lLCBOb25lKSkKLSAgICAg
IHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybS1tb25vJywgTm9uZSwgTm9uZSkpCi0g
ICAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigndW5rbm93bicsIE5vbmUsIE5vbmUpKQot
ICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoTm9uZSwgTm9uZSwgTm9uZSkpCi0gICAg
c2VsZi5hc3NlcnRfKFVzZXNDb2xvcignbGludXgnLCBOb25lLCBOb25lKSkKLSAgICBzZWxmLmFz
c2VydF8oVXNlc0NvbG9yKCdjeWd3aW4nLCBOb25lLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8o
VXNlc0NvbG9yKCd4dGVybScsIE5vbmUsIE5vbmUpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29s
b3IoJ3h0ZXJtLWNvbG9yJywgTm9uZSwgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xv
cigneHRlcm0tMjU2Y29sb3InLCBOb25lLCBOb25lKSkKLQotICBkZWYgdGVzdEZsYWdPbmx5KHNl
bGYpOgotICAgICIiIlRlc3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUncyAtLWd0ZXN0X2NvbG9yIGJ1
dCBub3QgR1RFU1RfQ09MT1IuIiIiCi0KLSAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcign
ZHVtYicsIE5vbmUsICdubycpKQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVy
bS1jb2xvcicsIE5vbmUsICdubycpKQotICAgIGlmIG5vdCBJU19XSU5ET1dTOgotICAgICAgc2Vs
Zi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ2VtYWNzJywgTm9uZSwgJ2F1dG8nKSkKLSAgICBzZWxm
LmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybScsIE5vbmUsICdhdXRvJykpCi0gICAgc2VsZi5hc3Nl
cnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUsICd5ZXMnKSkKLSAgICBzZWxmLmFzc2VydF8oVXNl
c0NvbG9yKCd4dGVybScsIE5vbmUsICd5ZXMnKSkKLQotICBkZWYgdGVzdEVudlZhck9ubHkoc2Vs
Zik6Ci0gICAgIiIiVGVzdHMgdGhlIGNhc2Ugd2hlbiB0aGVyZSdzIEdURVNUX0NPTE9SIGJ1dCBu
b3QgLS1ndGVzdF9jb2xvci4iIiIKLQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdk
dW1iJywgJ25vJywgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJt
LWNvbG9yJywgJ25vJywgTm9uZSkpCi0gICAgaWYgbm90IElTX1dJTkRPV1M6Ci0gICAgICBzZWxm
LmFzc2VydF8obm90IFVzZXNDb2xvcignZHVtYicsICdhdXRvJywgTm9uZSkpCi0gICAgc2VsZi5h
c3NlcnRfKFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAnYXV0bycsIE5vbmUpKQotICAgIHNlbGYu
YXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCAneWVzJywgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRf
KFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAneWVzJywgTm9uZSkpCi0KLSAgZGVmIHRlc3RFbnZW
YXJBbmRGbGFnKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUgYXJlIGJv
dGggR1RFU1RfQ09MT1IgYW5kIC0tZ3Rlc3RfY29sb3IuIiIiCi0KLSAgICBzZWxmLmFzc2VydF8o
bm90IFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAnbm8nLCAnbm8nKSkKLSAgICBzZWxmLmFzc2Vy
dF8oVXNlc0NvbG9yKCdkdW1iJywgJ25vJywgJ3llcycpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2Vz
Q29sb3IoJ3h0ZXJtLWNvbG9yJywgJ25vJywgJ2F1dG8nKSkKLQotICBkZWYgdGVzdEFsaWFzZXNP
Zlllc0FuZE5vKHNlbGYpOgotICAgICIiIlRlc3RzIHVzaW5nIGFsaWFzZXMgaW4gc3BlY2lmeWlu
ZyAtLWd0ZXN0X2NvbG9yLiIiIgotCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYics
IE5vbmUsICd0cnVlJykpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUs
ICdZRVMnKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ1QnKSkK
LSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJzEnKSkKLQotICAgIHNl
bGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybScsIE5vbmUsICdmJykpCi0gICAgc2VsZi5h
c3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwgJ2ZhbHNlJykpCi0gICAgc2VsZi5h
c3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwgJzAnKSkKLSAgICBzZWxmLmFzc2Vy
dF8obm90IFVzZXNDb2xvcigneHRlcm0nLCBOb25lLCAndW5rbm93bicpKQotCi0KLWlmIF9fbmFt
ZV9fID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0Xy5jYwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNThkMzc3YzliMmFmMGJmZTgxOTVjYTJjMGE5MDIxMzlkOTEx
MDY0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjCisrKyAvZGV2L251
bGwKQEAgLTEsNzEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
Ly8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQot
Ly8gQSBoZWxwZXIgcHJvZ3JhbSBmb3IgdGVzdGluZyBob3cgR29vZ2xlIFRlc3QgZGV0ZXJtaW5l
cyB3aGV0aGVyIHRvIHVzZQotLy8gY29sb3JzIGluIHRoZSBvdXRwdXQuICBJdCBwcmludHMgIllF
UyIgYW5kIHJldHVybnMgMSBpZiBHb29nbGUgVGVzdAotLy8gZGVjaWRlcyB0byB1c2UgY29sb3Jz
LCBhbmQgcHJpbnRzICJOTyIgYW5kIHJldHVybnMgMCBvdGhlcndpc2UuCi0KLSNpbmNsdWRlIDxz
dGRpby5oPgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotLy8gSW5kaWNhdGVzIHRoYXQg
dGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVt
ZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0v
LyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmlj
ayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0
ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVN
RU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYg
R1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaG91bGRV
c2VDb2xvcjsKLQotLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUg
VW5pdFRlc3Qgc2luZ2xldG9uIGlzCi0vLyBjcmVhdGVkIGJlZm9yZSBtYWluKCkgaXMgZW50ZXJl
ZCwgYW5kIHRodXMgdGhhdCBTaG91bGRVc2VDb2xvcigpCi0vLyB3b3JrcyB0aGUgc2FtZSB3YXkg
YXMgaW4gYSByZWFsIEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QuICBXZSBkb24ndCBhY3R1YWwKLS8v
IHJ1biB0aGUgVEVTVCBpdHNlbGYuCi1URVNUKEdUZXN0Q29sb3JUZXN0LCBEdW1teSkgewotfQot
Ci1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgdGVzdGluZzo6SW5pdEdvb2ds
ZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIGlmIChTaG91bGRVc2VDb2xvcih0cnVlKSkgewotICAg
IC8vIEdvb2dsZSBUZXN0IGRlY2lkZXMgdG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0IChhc3N1
bWluZyBpdAotICAgIC8vIGdvZXMgdG8gYSBUVFkpLgotICAgIHByaW50ZigiWUVTXG4iKTsKLSAg
ICByZXR1cm4gMTsKLSAgfSBlbHNlIHsKLSAgICAvLyBHb29nbGUgVGVzdCBkZWNpZGVzIG5vdCB0
byB1c2UgY29sb3JzIGluIHRoZSBvdXRwdXQuCi0gICAgcHJpbnRmKCJOT1xuIik7Ci0gICAgcmV0
dXJuIDA7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfZW52X3Zhcl90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9lbnZfdmFyX3Rlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGJjYzBiZmQ1
NTMyOTcyNjgwNzYxNTc3MzZjODNlNGE4NGNhZTA1NmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9lbnZfdmFyX3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotIyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6
Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVmVyaWZpZXMgdGhhdCBH
b29nbGUgVGVzdCBjb3JyZWN0bHkgcGFyc2VzIGVudmlyb25tZW50IHZhcmlhYmxlcy4iIiIKLQot
X19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IG9z
Ci1pbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwotCi0KLUlTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdu
dCcKLUlTX0xJTlVYID0gb3MubmFtZSA9PSAncG9zaXgnIGFuZCBvcy51bmFtZSgpWzBdID09ICdM
aW51eCcKLQotQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRo
KCdndGVzdF9lbnZfdmFyX3Rlc3RfJykKLQotZW52aXJvbiA9IG9zLmVudmlyb24uY29weSgpCi0K
LQotZGVmIEFzc2VydEVxKGV4cGVjdGVkLCBhY3R1YWwpOgotICBpZiBleHBlY3RlZCAhPSBhY3R1
YWw6Ci0gICAgcHJpbnQgJ0V4cGVjdGVkOiAlcycgJSAoZXhwZWN0ZWQsKQotICAgIHByaW50ICcg
IEFjdHVhbDogJXMnICUgKGFjdHVhbCwpCi0gICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKLQotCi1k
ZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToKLSAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxl
IHRvICd2YWx1ZSc7IHVuc2V0cyBpdCB3aGVuICd2YWx1ZScgaXMgTm9uZS4iIiIKLQotICBpZiB2
YWx1ZSBpcyBub3QgTm9uZToKLSAgICBlbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKLSAgZWxpZiBl
bnZfdmFyIGluIGVudmlyb246Ci0gICAgZGVsIGVudmlyb25bZW52X3Zhcl0KLQotCi1kZWYgR2V0
RmxhZyhmbGFnKToKLSAgIiIiUnVucyBndGVzdF9lbnZfdmFyX3Rlc3RfIGFuZCByZXR1cm5zIGl0
cyBvdXRwdXQuIiIiCi0KLSAgYXJncyA9IFtDT01NQU5EXQotICBpZiBmbGFnIGlzIG5vdCBOb25l
OgotICAgIGFyZ3MgKz0gW2ZsYWddCi0gIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nl
c3MoYXJncywgZW52PWVudmlyb24pLm91dHB1dAotCi0KLWRlZiBUZXN0RmxhZyhmbGFnLCB0ZXN0
X3ZhbCwgZGVmYXVsdF92YWwpOgotICAiIiJWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBmbGFnIGlz
IGFmZmVjdGVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGVudiB2YXIuIiIiCi0KLSAgZW52X3ZhciA9
ICdHVEVTVF8nICsgZmxhZy51cHBlcigpCi0gIFNldEVudlZhcihlbnZfdmFyLCB0ZXN0X3ZhbCkK
LSAgQXNzZXJ0RXEodGVzdF92YWwsIEdldEZsYWcoZmxhZykpCi0gIFNldEVudlZhcihlbnZfdmFy
LCBOb25lKQotICBBc3NlcnRFcShkZWZhdWx0X3ZhbCwgR2V0RmxhZyhmbGFnKSkKLQotCi1jbGFz
cyBHVGVzdEVudlZhclRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gIGRlZiB0ZXN0
RW52VmFyQWZmZWN0c0ZsYWcoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCBlbnZpcm9ubWVudCB2
YXJpYWJsZSBzaG91bGQgYWZmZWN0IHRoZSBjb3JyZXNwb25kaW5nIGZsYWcuIiIiCi0KLSAgICBU
ZXN0RmxhZygnYnJlYWtfb25fZmFpbHVyZScsICcxJywgJzAnKQotICAgIFRlc3RGbGFnKCdjb2xv
cicsICd5ZXMnLCAnYXV0bycpCi0gICAgVGVzdEZsYWcoJ2ZpbHRlcicsICdGb29UZXN0LkJhcics
ICcqJykKLSAgICBUZXN0RmxhZygnb3V0cHV0JywgJ3htbDp0bXAvZm9vLnhtbCcsICcnKQotICAg
IFRlc3RGbGFnKCdwcmludF90aW1lJywgJzAnLCAnMScpCi0gICAgVGVzdEZsYWcoJ3JlcGVhdCcs
ICc5OTknLCAnMScpCi0gICAgVGVzdEZsYWcoJ3Rocm93X29uX2ZhaWx1cmUnLCAnMScsICcwJykK
LSAgICBUZXN0RmxhZygnZGVhdGhfdGVzdF9zdHlsZScsICd0aHJlYWRzYWZlJywgJ2Zhc3QnKQot
Ci0gICAgaWYgSVNfV0lORE9XUzoKLSAgICAgIFRlc3RGbGFnKCdjYXRjaF9leGNlcHRpb25zJywg
JzEnLCAnMCcpCi0KLSAgICBpZiBJU19MSU5VWDoKLSAgICAgIFRlc3RGbGFnKCdkZWF0aF90ZXN0
X3VzZV9mb3JrJywgJzEnLCAnMCcpCi0gICAgICBUZXN0RmxhZygnc3RhY2tfdHJhY2VfZGVwdGgn
LCAnMCcsICcxMDAnKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rl
c3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X2Vudl92YXJfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X2Vudl92YXJfdGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3Yzc4
ZmNmMzA1MzEyYTY2YzI2NWIxODEwYTY5MTA3N2RiNzcxZjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9lbnZfdmFyX3Rlc3RfLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTI2ICswLDAgQEAKLS8v
IENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8v
Ci0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlz
dHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
Ly8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6
IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEEgaGVscGVyIHByb2dyYW0gZm9y
IHRlc3RpbmcgdGhhdCBHb29nbGUgVGVzdCBwYXJzZXMgdGhlIGVudmlyb25tZW50Ci0vLyB2YXJp
YWJsZXMgY29ycmVjdGx5LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2luY2x1ZGUg
PGlvc3RyZWFtPgotCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAi
c3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwot
Ci11c2luZyA6OnN0ZDo6Y291dDsKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotCi0vLyBUaGUgcHVy
cG9zZSBvZiB0aGlzIGlzIHRvIG1ha2UgdGhlIHRlc3QgbW9yZSByZWFsaXN0aWMgYnkgZW5zdXJp
bmcKLS8vIHRoYXQgdGhlIFVuaXRUZXN0IHNpbmdsZXRvbiBpcyBjcmVhdGVkIGJlZm9yZSBtYWlu
KCkgaXMgZW50ZXJlZC4KLS8vIFdlIGRvbid0IGFjdHVhbCBydW4gdGhlIFRFU1QgaXRzZWxmLgot
VEVTVChHVGVzdEVudlZhclRlc3QsIER1bW15KSB7Ci19Ci0KLXZvaWQgUHJpbnRGbGFnKGNvbnN0
IGNoYXIqIGZsYWcpIHsKLSAgaWYgKHN0cmNtcChmbGFnLCAiYnJlYWtfb25fZmFpbHVyZSIpID09
IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSk7Ci0gICAgcmV0
dXJuOwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAiY2F0Y2hfZXhjZXB0aW9ucyIpID09IDAp
IHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucyk7Ci0gICAgcmV0dXJu
OwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAiY29sb3IiKSA9PSAwKSB7Ci0gICAgY291dCA8
PCBHVEVTVF9GTEFHKGNvbG9yKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZs
YWcsICJkZWF0aF90ZXN0X3N0eWxlIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhk
ZWF0aF90ZXN0X3N0eWxlKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcs
ICJkZWF0aF90ZXN0X3VzZV9mb3JrIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhk
ZWF0aF90ZXN0X3VzZV9mb3JrKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZs
YWcsICJmaWx0ZXIiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKGZpbHRlcik7Ci0g
ICAgcmV0dXJuOwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAib3V0cHV0IikgPT0gMCkgewot
ICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhvdXRwdXQpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlm
IChzdHJjbXAoZmxhZywgInByaW50X3RpbWUiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9G
TEFHKHByaW50X3RpbWUpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywg
InJlcGVhdCIpID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcocmVwZWF0KTsKLSAgICBy
ZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcsICJzdGFja190cmFjZV9kZXB0aCIpID09
IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpOwotICAgIHJl
dHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywgInRocm93X29uX2ZhaWx1cmUiKSA9PSAw
KSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpOwotICAgIHJldHVy
bjsKLSAgfQotCi0gIGNvdXQgPDwgIkludmFsaWQgZmxhZyBuYW1lICIgPDwgZmxhZwotICAgICAg
IDw8ICIuICBWYWxpZCBuYW1lcyBhcmUgYnJlYWtfb25fZmFpbHVyZSwgY29sb3IsIGZpbHRlciwg
ZXRjLlxuIjsKLSAgZXhpdCgxKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0
KCZhcmdjLCBhcmd2KTsKLQotICBpZiAoYXJnYyAhPSAyKSB7Ci0gICAgY291dCA8PCAiVXNhZ2U6
IGd0ZXN0X2Vudl92YXJfdGVzdF8gTkFNRV9PRl9GTEFHXG4iOwotICAgIHJldHVybiAxOwotICB9
Ci0KLSAgdGVzdGluZzo6UHJpbnRGbGFnKGFyZ3ZbMV0pOwotICByZXR1cm4gMDsKLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVz
dC5jYwppbmRleCBjOTM5MjYxNGQ3NGQ3ZmMyMzJlODZiMmMzZDZjZGIxYjFlMmI2MTMxLi5iYzk1
MjRkNjYzNzNlNzE5NTFjYWNjZDkwNmMwNjZlZjRhZjk0YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudmlyb25tZW50X3Rlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjCkBAIC0y
NiwxNCArMjYsMTQgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIC8v
CiAvLyBUZXN0cyB1c2luZyBnbG9iYWwgdGVzdCBlbnZpcm9ubWVudHMuCiAKICNpbmNsdWRlIDxz
dGRsaWIuaD4KICNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Cisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5s
LmgiCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhmaWx0ZXIp
OwpAQCAtOTIsNiArOTIsNyBAQCBjbGFzcyBNeUVudmlyb25tZW50IDogcHVibGljIHRlc3Rpbmc6
OkVudmlyb25tZW50IHsKIAogICAvLyBXYXMgVGVhckRvd24oKSBydW4/CiAgIGJvb2wgdGVhcl9k
b3duX3dhc19ydW4oKSBjb25zdCB7IHJldHVybiB0ZWFyX2Rvd25fd2FzX3J1bl87IH0KKwogIHBy
aXZhdGU6CiAgIEZhaWx1cmVUeXBlIGZhaWx1cmVfaW5fc2V0X3VwXzsKICAgYm9vbCBzZXRfdXBf
d2FzX3J1bl87CkBAIC0xMTEsNyArMTEyLDcgQEAgVEVTVChGb29UZXN0LCBCYXIpIHsKIHZvaWQg
Q2hlY2soYm9vbCBjb25kaXRpb24sIGNvbnN0IGNoYXIqIG1zZykgewogICBpZiAoIWNvbmRpdGlv
bikgewogICAgIHByaW50ZigiRkFJTEVEOiAlc1xuIiwgbXNnKTsKLSAgICBhYm9ydCgpOworICAg
IHRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6QWJvcnQoKTsKICAgfQogfQogCkBAIC0xMjMsNiAr
MTI0LDcgQEAgaW50IFJ1bkFsbFRlc3RzKE15RW52aXJvbm1lbnQqIGVudiwgRmFpbHVyZVR5cGUg
ZmFpbHVyZSkgewogICBlbnYtPlJlc2V0KCk7CiAgIGVudi0+c2V0X2ZhaWx1cmVfaW5fc2V0X3Vw
KGZhaWx1cmUpOwogICB0ZXN0X3dhc19ydW4gPSBmYWxzZTsKKyAgdGVzdGluZzo6aW50ZXJuYWw6
OkdldFVuaXRUZXN0SW1wbCgpLT5DbGVhckFkSG9jVGVzdFJlc3VsdCgpOwogICByZXR1cm4gUlVO
X0FMTF9URVNUUygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X2ZpbHRlcl91bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCAwZDFhNzcwMDU4Y2NiOTAxMTU0NjgwOTI0Y2JkM2M2NGQ4YzhkMTc5Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjMzICsw
LDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNSBHb29nbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0j
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVW5pdCB0
ZXN0IGZvciBHb29nbGUgVGVzdCB0ZXN0IGZpbHRlcnMuCi0KLUEgdXNlciBjYW4gc3BlY2lmeSB3
aGljaCB0ZXN0KHMpIGluIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSB0byBydW4gdmlhIGVpdGhlcgot
dGhlIEdURVNUX0ZJTFRFUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUgLS1ndGVzdF9maWx0
ZXIgZmxhZy4KLVRoaXMgc2NyaXB0IHRlc3RzIHN1Y2ggZnVuY3Rpb25hbGl0eSBieSBpbnZva2lu
ZwotZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aCBHb29nbGUg
VGVzdCkgd2l0aCBkaWZmZXJlbnQKLWVudmlyb25tZW50cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdz
LgotCi1Ob3RlIHRoYXQgdGVzdCBzaGFyZGluZyBtYXkgYWxzbyBpbmZsdWVuY2Ugd2hpY2ggdGVz
dHMgYXJlIGZpbHRlcmVkLiBUaGVyZWZvcmUsCi13ZSB0ZXN0IHRoYXQgaGVyZSBhbHNvLgotIiIi
Ci0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9y
dCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2V0cwotaW1wb3J0IHN5cwotCi1pbXBvcnQgZ3Rlc3Rf
dGVzdF91dGlscwotCi0jIENvbnN0YW50cy4KLQotIyBDaGVja3MgaWYgdGhpcyBwbGF0Zm9ybSBj
YW4gcGFzcyBlbXB0eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gY2hpbGQKLSMgcHJvY2Vzc2Vz
LiAgV2Ugc2V0IGFuIGVudiB2YXJpYWJsZSB0byBhbiBlbXB0eSBzdHJpbmcgYW5kIGludm9rZSBh
IHB5dGhvbgotIyBzY3JpcHQgaW4gYSBzdWJwcm9jZXNzIHRvIHByaW50IHdoZXRoZXIgdGhlIHZh
cmlhYmxlIGlzIFNUSUxMIGluCi0jIG9zLmVudmlyb24uICBXZSB0aGVuIHVzZSAnZXZhbCcgdG8g
cGFyc2UgdGhlIGNoaWxkJ3Mgb3V0cHV0IHNvIHRoYXQgYW4KLSMgZXhjZXB0aW9uIGlzIHRocm93
biBpZiB0aGUgaW5wdXQgaXMgYW55dGhpbmcgb3RoZXIgdGhhbiAnVHJ1ZScgbm9yICdGYWxzZScu
Ci1vcy5lbnZpcm9uWydFTVBUWV9WQVInXSA9ICcnCi1jaGlsZCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
U3VicHJvY2VzcygKLSAgICBbc3lzLmV4ZWN1dGFibGUsICctYycsICdpbXBvcnQgb3M7IHByaW50
IFwnRU1QVFlfVkFSXCcgaW4gb3MuZW52aXJvbiddKQotQ0FOX1BBU1NfRU1QVFlfRU5WID0gZXZh
bChjaGlsZC5vdXRwdXQpCi0KLQotIyBDaGVjayBpZiB0aGlzIHBsYXRmb3JtIGNhbiB1bnNldCBl
bnZpcm9ubWVudCB2YXJpYWJsZXMgaW4gY2hpbGQgcHJvY2Vzc2VzLgotIyBXZSBzZXQgYW4gZW52
IHZhcmlhYmxlIHRvIGEgbm9uLWVtcHR5IHN0cmluZywgdW5zZXQgaXQsIGFuZCBpbnZva2UKLSMg
YSBweXRob24gc2NyaXB0IGluIGEgc3VicHJvY2VzcyB0byBwcmludCB3aGV0aGVyIHRoZSB2YXJp
YWJsZQotIyBpcyBOTyBMT05HRVIgaW4gb3MuZW52aXJvbi4KLSMgV2UgdXNlICdldmFsJyB0byBw
YXJzZSB0aGUgY2hpbGQncyBvdXRwdXQgc28gdGhhdCBhbiBleGNlcHRpb24KLSMgaXMgdGhyb3du
IGlmIHRoZSBpbnB1dCBpcyBuZWl0aGVyICdUcnVlJyBub3IgJ0ZhbHNlJy4KLW9zLmVudmlyb25b
J1VOU0VUX1ZBUiddID0gJ1gnCi1kZWwgb3MuZW52aXJvblsnVU5TRVRfVkFSJ10KLWNoaWxkID0g
Z3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAotICAgIFtzeXMuZXhlY3V0YWJsZSwgJy1jJywg
J2ltcG9ydCBvczsgcHJpbnQgXCdVTlNFVF9WQVJcJyBub3QgaW4gb3MuZW52aXJvbiddKQotQ0FO
X1VOU0VUX0VOViA9IGV2YWwoY2hpbGQub3V0cHV0KQotCi0KLSMgQ2hlY2tzIGlmIHdlIHNob3Vs
ZCB0ZXN0IHdpdGggYW4gZW1wdHkgZmlsdGVyLiBUaGlzIGRvZXNuJ3QKLSMgbWFrZSBzZW5zZSBv
biBwbGF0Zm9ybXMgdGhhdCBjYW5ub3QgcGFzcyBlbXB0eSBlbnYgdmFyaWFibGVzIChXaW4zMikK
LSMgYW5kIG9uIHBsYXRmb3JtcyB0aGF0IGNhbm5vdCB1bnNldCB2YXJpYWJsZXMgKHNpbmNlIHdl
IGNhbm5vdCB0ZWxsCi0jIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gIiIgYW5kIE5VTEwgLS0gQm9y
bGFuZCBhbmQgU29sYXJpcyA8IDUuMTApCi1DQU5fVEVTVF9FTVBUWV9GSUxURVIgPSAoQ0FOX1BB
U1NfRU1QVFlfRU5WIGFuZCBDQU5fVU5TRVRfRU5WKQotCi0KLSMgVGhlIGVudmlyb25tZW50IHZh
cmlhYmxlIGZvciBzcGVjaWZ5aW5nIHRoZSB0ZXN0IGZpbHRlcnMuCi1GSUxURVJfRU5WX1ZBUiA9
ICdHVEVTVF9GSUxURVInCi0KLSMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBz
aGFyZGluZy4KLVRPVEFMX1NIQVJEU19FTlZfVkFSID0gJ0dURVNUX1RPVEFMX1NIQVJEUycKLVNI
QVJEX0lOREVYX0VOVl9WQVIgPSAnR1RFU1RfU0hBUkRfSU5ERVgnCi1TSEFSRF9TVEFUVVNfRklM
RV9FTlZfVkFSID0gJ0dURVNUX1NIQVJEX1NUQVRVU19GSUxFJwotCi0jIFRoZSBjb21tYW5kIGxp
bmUgZmxhZyBmb3Igc3BlY2lmeWluZyB0aGUgdGVzdCBmaWx0ZXJzLgotRklMVEVSX0ZMQUcgPSAn
Z3Rlc3RfZmlsdGVyJwotCi0jIFRoZSBjb21tYW5kIGxpbmUgZmxhZyBmb3IgaW5jbHVkaW5nIGRp
c2FibGVkIHRlc3RzLgotQUxTT19SVU5fRElTQUJFRF9URVNUU19GTEFHID0gJ2d0ZXN0X2Fsc29f
cnVuX2Rpc2FibGVkX3Rlc3RzJwotCi0jIENvbW1hbmQgdG8gcnVuIHRoZSBndGVzdF9maWx0ZXJf
dW5pdHRlc3RfIHByb2dyYW0uCi1DT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhl
Y3V0YWJsZVBhdGgoJ2d0ZXN0X2ZpbHRlcl91bml0dGVzdF8nKQotCi0jIFJlZ2V4IGZvciBkZXRl
cm1pbmluZyB3aGV0aGVyIHBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQgaW4gdGhlIGJp
bmFyeS4KLVBBUkFNX1RFU1RfUkVHRVggPSByZS5jb21waWxlKHInL1BhcmFtVGVzdCcpCi0KLSMg
UmVnZXggZm9yIHBhcnNpbmcgdGVzdCBjYXNlIG5hbWVzIGZyb20gR29vZ2xlIFRlc3QncyBvdXRw
dXQuCi1URVNUX0NBU0VfUkVHRVggPSByZS5jb21waWxlKHInXlxbXC0rXF0gXGQrIHRlc3RzPyBm
cm9tIChcdysoL1x3Kyk/KScpCi0KLSMgUmVnZXggZm9yIHBhcnNpbmcgdGVzdCBuYW1lcyBmcm9t
IEdvb2dsZSBUZXN0J3Mgb3V0cHV0LgotVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocideXFtccypS
VU5ccypcXS4qXC4oXHcrKC9cdyspPyknKQotCi0jIFRoZSBjb21tYW5kIGxpbmUgZmxhZyB0byB0
ZWxsIEdvb2dsZSBUZXN0IHRvIG91dHB1dCB0aGUgbGlzdCBvZiB0ZXN0cyBpdAotIyB3aWxsIHJ1
bi4KLUxJU1RfVEVTVFNfRkxBRyA9ICctLWd0ZXN0X2xpc3RfdGVzdHMnCi0KLSMgSW5kaWNhdGVz
IHdoZXRoZXIgR29vZ2xlIFRlc3Qgc3VwcG9ydHMgZGVhdGggdGVzdHMuCi1TVVBQT1JUU19ERUFU
SF9URVNUUyA9ICdIYXNEZWF0aFRlc3QnIGluIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygK
LSAgICBbQ09NTUFORCwgTElTVF9URVNUU19GTEFHXSkub3V0cHV0Ci0KLSMgRnVsbCBuYW1lcyBv
ZiBhbGwgdGVzdHMgaW4gZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0c18uCi1QQVJBTV9URVNUUyA9IFsK
LSAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMCcsCi0gICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RY
LzEnLAotICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAnU2VxUC9QYXJhbVRlc3Qu
VGVzdFkvMScsCi0gICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RYLzAnLAotICAgICdTZXFRL1BhcmFt
VGVzdC5UZXN0WC8xJywKLSAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFkvMCcsCi0gICAgJ1NlcVEv
UGFyYW1UZXN0LlRlc3RZLzEnLAotICAgIF0KLQotRElTQUJMRURfVEVTVFMgPSBbCi0gICAgJ0Jh
clRlc3QuRElTQUJMRURfVGVzdEZvdXInLAotICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rlc3RGaXZl
JywKLSAgICAnQmF6VGVzdC5ESVNBQkxFRF9UZXN0QycsCi0gICAgJ0RJU0FCTEVEX0Zvb2JhclRl
c3QuVGVzdDEnLAotICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywKLSAg
ICAnRElTQUJMRURfRm9vYmFyYmF6VGVzdC5UZXN0QScsCi0gICAgXQotCi1pZiBTVVBQT1JUU19E
RUFUSF9URVNUUzoKLSAgREVBVEhfVEVTVFMgPSBbCi0gICAgJ0hhc0RlYXRoVGVzdC5UZXN0MScs
Ci0gICAgJ0hhc0RlYXRoVGVzdC5UZXN0MicsCi0gICAgXQotZWxzZToKLSAgREVBVEhfVEVTVFMg
PSBbXQotCi0jIEFsbCB0aGUgbm9uLWRpc2FibGVkIHRlc3RzLgotQUNUSVZFX1RFU1RTID0gWwot
ICAgICdGb29UZXN0LkFiYycsCi0gICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICdCYXJUZXN0LlRl
c3RPbmUnLAotICAgICdCYXJUZXN0LlRlc3RUd28nLAotICAgICdCYXJUZXN0LlRlc3RUaHJlZScs
Ci0KLSAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAgICAnQmF6VGVzdC5UZXN0QScsCi0gICAgJ0Jh
elRlc3QuVGVzdEInLAotICAgIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTCi0KLXBhcmFt
X3Rlc3RzX3ByZXNlbnQgPSBOb25lCi0KLSMgVXRpbGl0aWVzLgotCi1lbnZpcm9uID0gb3MuZW52
aXJvbi5jb3B5KCkKLQotCi1kZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToKLSAgIiIiU2V0
cyB0aGUgZW52IHZhcmlhYmxlIHRvICd2YWx1ZSc7IHVuc2V0cyBpdCB3aGVuICd2YWx1ZScgaXMg
Tm9uZS4iIiIKLQotICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICBlbnZpcm9uW2Vudl92YXJd
ID0gdmFsdWUKLSAgZWxpZiBlbnZfdmFyIGluIGVudmlyb246Ci0gICAgZGVsIGVudmlyb25bZW52
X3Zhcl0KLQotCi1kZWYgUnVuQW5kUmV0dXJuT3V0cHV0KGFyZ3MgPSBOb25lKToKLSAgIiIiUnVu
cyB0aGUgdGVzdCBwcm9ncmFtIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQuIiIiCi0KLSAgcmV0dXJu
IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhbQ09NTUFORF0gKyAoYXJncyBvciBbXSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudmlyb24pLm91dHB1dAot
Ci0KLWRlZiBSdW5BbmRFeHRyYWN0VGVzdExpc3QoYXJncyA9IE5vbmUpOgotICAiIiJSdW5zIHRo
ZSB0ZXN0IHByb2dyYW0gYW5kIHJldHVybnMgaXRzIGV4aXQgY29kZSBhbmQgYSBsaXN0IG9mIHRl
c3RzIHJ1bi4iIiIKLQotICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtDT01NQU5E
XSArIChhcmdzIG9yIFtdKSwgZW52PWVudmlyb24pCi0gIHRlc3RzX3J1biA9IFtdCi0gIHRlc3Rf
Y2FzZSA9ICcnCi0gIHRlc3QgPSAnJwotICBmb3IgbGluZSBpbiBwLm91dHB1dC5zcGxpdCgnXG4n
KToKLSAgICBtYXRjaCA9IFRFU1RfQ0FTRV9SRUdFWC5tYXRjaChsaW5lKQotICAgIGlmIG1hdGNo
IGlzIG5vdCBOb25lOgotICAgICAgdGVzdF9jYXNlID0gbWF0Y2guZ3JvdXAoMSkKLSAgICBlbHNl
OgotICAgICAgbWF0Y2ggPSBURVNUX1JFR0VYLm1hdGNoKGxpbmUpCi0gICAgICBpZiBtYXRjaCBp
cyBub3QgTm9uZToKLSAgICAgICAgdGVzdCA9IG1hdGNoLmdyb3VwKDEpCi0gICAgICAgIHRlc3Rz
X3J1bi5hcHBlbmQodGVzdF9jYXNlICsgJy4nICsgdGVzdCkKLSAgcmV0dXJuICh0ZXN0c19ydW4s
IHAuZXhpdF9jb2RlKQotCi0KLWRlZiBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LCBm
dW5jdGlvbiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgIiIiUnVucyB0aGUgZ2l2ZW4gZnVuY3Rpb24g
YW5kIGFyZ3VtZW50cyBpbiBhIG1vZGlmaWVkIGVudmlyb25tZW50LiIiIgotICB0cnk6Ci0gICAg
b3JpZ2luYWxfZW52ID0gZW52aXJvbi5jb3B5KCkKLSAgICBlbnZpcm9uLnVwZGF0ZShleHRyYV9l
bnYpCi0gICAgcmV0dXJuIGZ1bmN0aW9uKCphcmdzLCAqKmt3YXJncykKLSAgZmluYWxseToKLSAg
ICBlbnZpcm9uLmNsZWFyKCkKLSAgICBlbnZpcm9uLnVwZGF0ZShvcmlnaW5hbF9lbnYpCi0KLQot
ZGVmIFJ1bldpdGhTaGFyZGluZyh0b3RhbF9zaGFyZHMsIHNoYXJkX2luZGV4LCBjb21tYW5kKToK
LSAgIiIiUnVucyBhIHRlc3QgcHJvZ3JhbSBzaGFyZCBhbmQgcmV0dXJucyBleGl0IGNvZGUgYW5k
IGEgbGlzdCBvZiB0ZXN0cyBydW4uIiIiCi0KLSAgZXh0cmFfZW52ID0ge1NIQVJEX0lOREVYX0VO
Vl9WQVI6IHN0cihzaGFyZF9pbmRleCksCi0gICAgICAgICAgICAgICBUT1RBTF9TSEFSRFNfRU5W
X1ZBUjogc3RyKHRvdGFsX3NoYXJkcyl9Ci0gIHJldHVybiBJbnZva2VXaXRoTW9kaWZpZWRFbnYo
ZXh0cmFfZW52LCBSdW5BbmRFeHRyYWN0VGVzdExpc3QsIGNvbW1hbmQpCi0KLSMgVGhlIHVuaXQg
dGVzdC4KLQotCi1jbGFzcyBHVGVzdEZpbHRlclVuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVz
dENhc2UpOgotICAiIiJUZXN0cyB0aGUgZW52IHZhcmlhYmxlIG9yIHRoZSBjb21tYW5kIGxpbmUg
ZmxhZyB0byBmaWx0ZXIgdGVzdHMuIiIiCi0KLSAgIyBVdGlsaXRpZXMuCi0KLSAgZGVmIEFzc2Vy
dFNldEVxdWFsKHNlbGYsIGxocywgcmhzKToKLSAgICAiIiJBc3NlcnRzIHRoYXQgdHdvIHNldHMg
YXJlIGVxdWFsLiIiIgotCi0gICAgZm9yIGVsZW0gaW4gbGhzOgotICAgICAgc2VsZi5hc3NlcnRf
KGVsZW0gaW4gcmhzLCAnJXMgaW4gJXMnICUgKGVsZW0sIHJocykpCi0KLSAgICBmb3IgZWxlbSBp
biByaHM6Ci0gICAgICBzZWxmLmFzc2VydF8oZWxlbSBpbiBsaHMsICclcyBpbiAlcycgJSAoZWxl
bSwgbGhzKSkKLQotICBkZWYgQXNzZXJ0UGFydGl0aW9uSXNWYWxpZChzZWxmLCBzZXRfdmFyLCBs
aXN0X29mX3NldHMpOgotICAgICIiIkFzc2VydHMgdGhhdCBsaXN0X29mX3NldHMgaXMgYSB2YWxp
ZCBwYXJ0aXRpb24gb2Ygc2V0X3Zhci4iIiIKLQotICAgIGZ1bGxfcGFydGl0aW9uID0gW10KLSAg
ICBmb3Igc2xpY2VfdmFyIGluIGxpc3Rfb2Zfc2V0czoKLSAgICAgIGZ1bGxfcGFydGl0aW9uLmV4
dGVuZChzbGljZV92YXIpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2V0X3ZhciksIGxlbihm
dWxsX3BhcnRpdGlvbikpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzZXRzLlNldChzZXRfdmFyKSwg
c2V0cy5TZXQoZnVsbF9wYXJ0aXRpb24pKQotCi0gIGRlZiBBZGp1c3RGb3JQYXJhbWV0ZXJpemVk
VGVzdHMoc2VsZiwgdGVzdHNfdG9fcnVuKToKLSAgICAiIiJBZGp1c3QgdGVzdHNfdG9fcnVuIGlu
IGNhc2UgdmFsdWUgcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZGlzYWJsZWQuIiIiCi0KLSAgICBn
bG9iYWwgcGFyYW1fdGVzdHNfcHJlc2VudAotICAgIGlmIG5vdCBwYXJhbV90ZXN0c19wcmVzZW50
OgotICAgICAgcmV0dXJuIGxpc3Qoc2V0cy5TZXQodGVzdHNfdG9fcnVuKSAtIHNldHMuU2V0KFBB
UkFNX1RFU1RTKSkKLSAgICBlbHNlOgotICAgICAgcmV0dXJuIHRlc3RzX3RvX3J1bgotCi0gIGRl
ZiBSdW5BbmRWZXJpZnkoc2VsZiwgZ3Rlc3RfZmlsdGVyLCB0ZXN0c190b19ydW4pOgotICAgICIi
IkNoZWNrcyB0aGF0IHRoZSBiaW5hcnkgcnVucyBjb3JyZWN0IHNldCBvZiB0ZXN0cyBmb3IgYSBn
aXZlbiBmaWx0ZXIuIiIiCi0KLSAgICB0ZXN0c190b19ydW4gPSBzZWxmLkFkanVzdEZvclBhcmFt
ZXRlcml6ZWRUZXN0cyh0ZXN0c190b19ydW4pCi0KLSAgICAjIEZpcnN0LCB0ZXN0cyB1c2luZyB0
aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0KLSAgICAjIFdpbmRvd3MgcmVtb3ZlcyBlbXB0eSB2
YXJpYWJsZXMgZnJvbSB0aGUgZW52aXJvbm1lbnQgd2hlbiBwYXNzaW5nIGl0Ci0gICAgIyB0byBh
IG5ldyBwcm9jZXNzLiAgVGhpcyBtZWFucyBpdCBpcyBpbXBvc3NpYmxlIHRvIHBhc3MgYW4gZW1w
dHkgZmlsdGVyCi0gICAgIyBpbnRvIGEgcHJvY2VzcyB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFy
aWFibGUuICBIb3dldmVyLCB3ZSBjYW4gc3RpbGwKLSAgICAjIHRlc3QgdGhlIGNhc2Ugd2hlbiB0
aGUgdmFyaWFibGUgaXMgbm90IHN1cHBsaWVkIChpLmUuLCBndGVzdF9maWx0ZXIgaXMKLSAgICAj
IE5vbmUpLgotICAgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwMwotICAgIGlmIENBTl9URVNU
X0VNUFRZX0ZJTFRFUiBvciBndGVzdF9maWx0ZXIgIT0gJyc6Ci0gICAgICBTZXRFbnZWYXIoRklM
VEVSX0VOVl9WQVIsIGd0ZXN0X2ZpbHRlcikKLSAgICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4dHJh
Y3RUZXN0TGlzdCgpWzBdCi0gICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIE5vbmUpCi0g
ICAgICBzZWxmLkFzc2VydFNldEVxdWFsKHRlc3RzX3J1biwgdGVzdHNfdG9fcnVuKQotICAgICMg
cHlsaW50OiBlbmFibGUtbXNnPUM2NDAzCi0KLSAgICAjIE5leHQsIHRlc3RzIHVzaW5nIHRoZSBj
b21tYW5kIGxpbmUgZmxhZy4KLQotICAgIGlmIGd0ZXN0X2ZpbHRlciBpcyBOb25lOgotICAgICAg
YXJncyA9IFtdCi0gICAgZWxzZToKLSAgICAgIGFyZ3MgPSBbJy0tJXM9JXMnICUgKEZJTFRFUl9G
TEFHLCBndGVzdF9maWx0ZXIpXQotCi0gICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RM
aXN0KGFyZ3MpWzBdCi0gICAgc2VsZi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIHRlc3RzX3Rv
X3J1bikKLQotICBkZWYgUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKHNlbGYsIGd0ZXN0X2ZpbHRl
ciwgdG90YWxfc2hhcmRzLCB0ZXN0c190b19ydW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJncz1Ob25lLCBjaGVja19leGl0XzA9RmFsc2UpOgotICAgICIiIkNoZWNrcyB0aGF0
IGJpbmFyeSBydW5zIGNvcnJlY3QgdGVzdHMgZm9yIHRoZSBnaXZlbiBmaWx0ZXIgYW5kIHNoYXJk
LgotCi0gICAgUnVucyBhbGwgc2hhcmRzIG9mIGd0ZXN0X2ZpbHRlcl91bml0dGVzdF8gd2l0aCB0
aGUgZ2l2ZW4gZmlsdGVyLCBhbmQKLSAgICB2ZXJpZmllcyB0aGF0IHRoZSByaWdodCBzZXQgb2Yg
dGVzdHMgd2VyZSBydW4uIFRoZSB1bmlvbiBvZiB0ZXN0cyBydW4KLSAgICBvbiBlYWNoIHNoYXJk
IHNob3VsZCBiZSBpZGVudGljYWwgdG8gdGVzdHNfdG9fcnVuLCB3aXRob3V0IGR1cGxpY2F0ZXMu
Ci0KLSAgICBBcmdzOgotICAgICAgZ3Rlc3RfZmlsdGVyOiBBIGZpbHRlciB0byBhcHBseSB0byB0
aGUgdGVzdHMuCi0gICAgICB0b3RhbF9zaGFyZHM6IEEgdG90YWwgbnVtYmVyIG9mIHNoYXJkcyB0
byBzcGxpdCB0ZXN0IHJ1biBpbnRvLgotICAgICAgdGVzdHNfdG9fcnVuOiBBIHNldCBvZiB0ZXN0
cyBleHBlY3RlZCB0byBydW4uCi0gICAgICBhcmdzICAgOiAgICAgIEFyZ3VtZW50cyB0byBwYXNz
IHRvIHRoZSB0byB0aGUgdGVzdCBiaW5hcnkuCi0gICAgICBjaGVja19leGl0XzA6IFdoZW4gc2V0
IHRvIGEgdHJ1ZSB2YWx1ZSwgbWFrZSBzdXJlIHRoYXQgYWxsIHNoYXJkcwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMC4KLSAgICAiIiIKLQotICAgIHRlc3RzX3RvX3J1biA9IHNlbGYuQWRq
dXN0Rm9yUGFyYW1ldGVyaXplZFRlc3RzKHRlc3RzX3RvX3J1bikKLQotICAgICMgV2luZG93cyBy
ZW1vdmVzIGVtcHR5IHZhcmlhYmxlcyBmcm9tIHRoZSBlbnZpcm9ubWVudCB3aGVuIHBhc3Npbmcg
aXQKLSAgICAjIHRvIGEgbmV3IHByb2Nlc3MuICBUaGlzIG1lYW5zIGl0IGlzIGltcG9zc2libGUg
dG8gcGFzcyBhbiBlbXB0eSBmaWx0ZXIKLSAgICAjIGludG8gYSBwcm9jZXNzIHVzaW5nIHRoZSBl
bnZpcm9ubWVudCB2YXJpYWJsZS4gIEhvd2V2ZXIsIHdlIGNhbiBzdGlsbAotICAgICMgdGVzdCB0
aGUgY2FzZSB3aGVuIHRoZSB2YXJpYWJsZSBpcyBub3Qgc3VwcGxpZWQgKGkuZS4sIGd0ZXN0X2Zp
bHRlciBpcwotICAgICMgTm9uZSkuCi0gICAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2NDAzCi0g
ICAgaWYgQ0FOX1RFU1RfRU1QVFlfRklMVEVSIG9yIGd0ZXN0X2ZpbHRlciAhPSAnJzoKLSAgICAg
IFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgZ3Rlc3RfZmlsdGVyKQotICAgICAgcGFydGl0aW9u
ID0gW10KLSAgICAgIGZvciBpIGluIHJhbmdlKDAsIHRvdGFsX3NoYXJkcyk6Ci0gICAgICAgICh0
ZXN0c19ydW4sIGV4aXRfY29kZSkgPSBSdW5XaXRoU2hhcmRpbmcodG90YWxfc2hhcmRzLCBpLCBh
cmdzKQotICAgICAgICBpZiBjaGVja19leGl0XzA6Ci0gICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgwLCBleGl0X2NvZGUpCi0gICAgICAgIHBhcnRpdGlvbi5hcHBlbmQodGVzdHNfcnVuKQotCi0g
ICAgICBzZWxmLkFzc2VydFBhcnRpdGlvbklzVmFsaWQodGVzdHNfdG9fcnVuLCBwYXJ0aXRpb24p
Ci0gICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIE5vbmUpCi0gICAgIyBweWxpbnQ6IGVu
YWJsZS1tc2c9QzY0MDMKLQotICBkZWYgUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZChzZWxm
LCBndGVzdF9maWx0ZXIsIHRlc3RzX3RvX3J1bik6Ci0gICAgIiIiQ2hlY2tzIHRoYXQgdGhlIGJp
bmFyeSBydW5zIGNvcnJlY3Qgc2V0IG9mIHRlc3RzIGZvciB0aGUgZ2l2ZW4gZmlsdGVyLgotCi0g
ICAgUnVucyBndGVzdF9maWx0ZXJfdW5pdHRlc3RfIHdpdGggdGhlIGdpdmVuIGZpbHRlciwgYW5k
IGVuYWJsZXMKLSAgICBkaXNhYmxlZCB0ZXN0cy4gVmVyaWZpZXMgdGhhdCB0aGUgcmlnaHQgc2V0
IG9mIHRlc3RzIHdlcmUgcnVuLgotCi0gICAgQXJnczoKLSAgICAgIGd0ZXN0X2ZpbHRlcjogQSBm
aWx0ZXIgdG8gYXBwbHkgdG8gdGhlIHRlc3RzLgotICAgICAgdGVzdHNfdG9fcnVuOiBBIHNldCBv
ZiB0ZXN0cyBleHBlY3RlZCB0byBydW4uCi0gICAgIiIiCi0KLSAgICB0ZXN0c190b19ydW4gPSBz
ZWxmLkFkanVzdEZvclBhcmFtZXRlcml6ZWRUZXN0cyh0ZXN0c190b19ydW4pCi0KLSAgICAjIENv
bnN0cnVjdCB0aGUgY29tbWFuZCBsaW5lLgotICAgIGFyZ3MgPSBbJy0tJXMnICUgQUxTT19SVU5f
RElTQUJFRF9URVNUU19GTEFHXQotICAgIGlmIGd0ZXN0X2ZpbHRlciBpcyBub3QgTm9uZToKLSAg
ICAgIGFyZ3MuYXBwZW5kKCctLSVzPSVzJyAlIChGSUxURVJfRkxBRywgZ3Rlc3RfZmlsdGVyKSkK
LQotICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0TGlzdChhcmdzKVswXQotICAgIHNl
bGYuQXNzZXJ0U2V0RXF1YWwodGVzdHNfcnVuLCB0ZXN0c190b19ydW4pCi0KLSAgZGVmIHNldFVw
KHNlbGYpOgotICAgICIiIlNldHMgdXAgdGVzdCBjYXNlLgotCi0gICAgRGV0ZXJtaW5lcyB3aGV0
aGVyIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQgaW4gdGhlIGJpbmFyeSBh
bmQKLSAgICBzZXRzIHRoZSBmbGFncyBhY2NvcmRpbmdseS4KLSAgICAiIiIKLQotICAgIGdsb2Jh
bCBwYXJhbV90ZXN0c19wcmVzZW50Ci0gICAgaWYgcGFyYW1fdGVzdHNfcHJlc2VudCBpcyBOb25l
OgotICAgICAgcGFyYW1fdGVzdHNfcHJlc2VudCA9IFBBUkFNX1RFU1RfUkVHRVguc2VhcmNoKAot
ICAgICAgICAgIFJ1bkFuZFJldHVybk91dHB1dCgpKSBpcyBub3QgTm9uZQotCi0gIGRlZiB0ZXN0
RGVmYXVsdEJlaGF2aW9yKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiBub3Qg
c3BlY2lmeWluZyB0aGUgZmlsdGVyLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoTm9uZSwg
QUNUSVZFX1RFU1RTKQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9yV2l0aFNoYXJkcyhzZWxm
KToKLSAgICAiIiJUZXN0cyB0aGUgYmVoYXZpb3Igd2l0aG91dCB0aGUgZmlsdGVyLCB3aXRoIHNo
YXJkaW5nIGVuYWJsZWQuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhO
b25lLCAxLCBBQ1RJVkVfVEVTVFMpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmco
Tm9uZSwgMiwgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5n
KE5vbmUsIGxlbihBQ1RJVkVfVEVTVFMpIC0gMSwgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVu
QW5kVmVyaWZ5V2l0aFNoYXJkaW5nKE5vbmUsIGxlbihBQ1RJVkVfVEVTVFMpLCBBQ1RJVkVfVEVT
VFMpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgbGVuKEFDVElWRV9U
RVNUUykgKyAxLCBBQ1RJVkVfVEVTVFMpCi0KLSAgZGVmIHRlc3RFbXB0eUZpbHRlcihzZWxmKToK
LSAgICAiIiJUZXN0cyBhbiBlbXB0eSBmaWx0ZXIuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlm
eSgnJywgW10pCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJycsIDEsIFtdKQot
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKCcnLCAyLCBbXSkKLQotICBkZWYgdGVz
dEJhZEZpbHRlcihzZWxmKToKLSAgICAiIiJUZXN0cyBhIGZpbHRlciB0aGF0IG1hdGNoZXMgbm90
aGluZy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdCYWRGaWx0ZXInLCBbXSkKLSAgICBz
ZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0JhZEZpbHRlcicsIFtdKQotCi0gIGRl
ZiB0ZXN0RnVsbE5hbWUoc2VsZik6Ci0gICAgIiIiVGVzdHMgZmlsdGVyaW5nIGJ5IGZ1bGwgbmFt
ZS4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdGb29UZXN0Llh5eicsIFsnRm9vVGVzdC5Y
eXonXSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0Zvb1Rlc3QuWHl6
JywgWydGb29UZXN0Llh5eiddKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKCdG
b29UZXN0Llh5eicsIDUsIFsnRm9vVGVzdC5YeXonXSkKLQotICBkZWYgdGVzdFVuaXZlcnNhbEZp
bHRlcnMoc2VsZik6Ci0gICAgIiIiVGVzdHMgZmlsdGVycyB0aGF0IG1hdGNoIGV2ZXJ5dGhpbmcu
IiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKicsIEFDVElWRV9URVNUUykKLSAgICBzZWxm
LlJ1bkFuZFZlcmlmeSgnKi4qJywgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5
V2l0aFNoYXJkaW5nKCcqLionLCBsZW4oQUNUSVZFX1RFU1RTKSAtIDMsIEFDVElWRV9URVNUUykK
LSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJyonLCBBQ1RJVkVfVEVTVFMg
KyBESVNBQkxFRF9URVNUUykKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQo
JyouKicsIEFDVElWRV9URVNUUyArIERJU0FCTEVEX1RFU1RTKQotCi0gIGRlZiB0ZXN0RmlsdGVy
QnlUZXN0Q2FzZShzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0ZXJpbmcgYnkgdGVzdCBjYXNlIG5h
bWUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnRm9vVGVzdC4qJywgWydGb29UZXN0LkFi
YycsICdGb29UZXN0Llh5eiddKQotCi0gICAgQkFaX1RFU1RTID0gWydCYXpUZXN0LlRlc3RPbmUn
LCAnQmF6VGVzdC5UZXN0QScsICdCYXpUZXN0LlRlc3RCJ10KLSAgICBzZWxmLlJ1bkFuZFZlcmlm
eSgnQmF6VGVzdC4qJywgQkFaX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdE
aXNhYmxlZCgnQmF6VGVzdC4qJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQkFaX1RFU1RTICsgWydCYXpUZXN0LkRJU0FCTEVEX1Rlc3RDJ10pCi0KLSAgZGVmIHRlc3RG
aWx0ZXJCeVRlc3Qoc2VsZik6Ci0gICAgIiIiVGVzdHMgZmlsdGVyaW5nIGJ5IHRlc3QgbmFtZS4i
IiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLlRlc3RPbmUnLCBbJ0JhclRlc3QuVGVzdE9u
ZScsICdCYXpUZXN0LlRlc3RPbmUnXSkKLQotICBkZWYgdGVzdEZpbHRlckRpc2FibGVkVGVzdHMo
c2VsZik6Ci0gICAgIiIiU2VsZWN0IG9ubHkgdGhlIGRpc2FibGVkIHRlc3RzIHRvIHJ1bi4iIiIK
LQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdESVNBQkxFRF9Gb29iYXJUZXN0LlRlc3QxJywgW10p
Ci0gICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdESVNBQkxFRF9Gb29iYXJU
ZXN0LlRlc3QxJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydESVNB
QkxFRF9Gb29iYXJUZXN0LlRlc3QxJ10pCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKkRJU0FC
TEVEXyonLCBbXSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJypESVNB
QkxFRF8qJywgRElTQUJMRURfVEVTVFMpCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi5ESVNB
QkxFRF8qJywgW10pCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCcqLkRJ
U0FCTEVEXyonLCBbCi0gICAgICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rlc3RGb3VyJywKLSAgICAg
ICAgJ0JhclRlc3QuRElTQUJMRURfVGVzdEZpdmUnLAotICAgICAgICAnQmF6VGVzdC5ESVNBQkxF
RF9UZXN0QycsCi0gICAgICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywK
LSAgICAgICAgXSkKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdESVNBQkxFRF8qJywgW10pCi0g
ICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdESVNBQkxFRF8qJywgWwotICAg
ICAgICAnRElTQUJMRURfRm9vYmFyVGVzdC5UZXN0MScsCi0gICAgICAgICdESVNBQkxFRF9Gb29i
YXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywKLSAgICAgICAgJ0RJU0FCTEVEX0Zvb2JhcmJhelRlc3Qu
VGVzdEEnLAotICAgICAgICBdKQotCi0gIGRlZiB0ZXN0V2lsZGNhcmRJblRlc3RDYXNlTmFtZShz
ZWxmKToKLSAgICAiIiJUZXN0cyB1c2luZyB3aWxkY2FyZCBpbiB0aGUgdGVzdCBjYXNlIG5hbWUu
IiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKmEqLionLCBbCi0gICAgICAgICdCYXJUZXN0
LlRlc3RPbmUnLAotICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKLSAgICAgICAgJ0JhclRlc3Qu
VGVzdFRocmVlJywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAgICAgICAgJ0JhelRl
c3QuVGVzdEEnLAotICAgICAgICAnQmF6VGVzdC5UZXN0QicsIF0gKyBERUFUSF9URVNUUyArIFBB
UkFNX1RFU1RTKQotCi0gIGRlZiB0ZXN0V2lsZGNhcmRJblRlc3ROYW1lKHNlbGYpOgotICAgICIi
IlRlc3RzIHVzaW5nIHdpbGRjYXJkIGluIHRoZSB0ZXN0IG5hbWUuIiIiCi0KLSAgICBzZWxmLlJ1
bkFuZFZlcmlmeSgnKi4qQSonLCBbJ0Zvb1Rlc3QuQWJjJywgJ0JhelRlc3QuVGVzdEEnXSkKLQot
ICBkZWYgdGVzdEZpbHRlcldpdGhvdXREb3Qoc2VsZik6Ci0gICAgIiIiVGVzdHMgYSBmaWx0ZXIg
dGhhdCBoYXMgbm8gJy4nIGluIGl0LiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJyp6Kics
IFsKLSAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywK
LSAgICAgICAgJ0JhelRlc3QuVGVzdEEnLAotICAgICAgICAnQmF6VGVzdC5UZXN0QicsCi0gICAg
ICAgIF0pCi0KLSAgZGVmIHRlc3RUd29QYXR0ZXJucyhzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0
ZXJzIHRoYXQgY29uc2lzdCBvZiB0d28gcGF0dGVybnMuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeSgnRm9vKi4qOipBKicsIFsKLSAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAgICAgJ0Zv
b1Rlc3QuWHl6JywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0QScsCi0gICAgICAgIF0pCi0KLSAg
ICAjIEFuIGVtcHR5IHBhdHRlcm4gKyBhIG5vbi1lbXB0eSBvbmUKLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeSgnOipBKicsIFsnRm9vVGVzdC5BYmMnLCAnQmF6VGVzdC5UZXN0QSddKQotCi0gIGRlZiB0
ZXN0VGhyZWVQYXR0ZXJucyhzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0ZXJzIHRoYXQgY29uc2lz
dCBvZiB0aHJlZSBwYXR0ZXJucy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqb28qOipB
KjoqT25lJywgWwotICAgICAgICAnRm9vVGVzdC5BYmMnLAotICAgICAgICAnRm9vVGVzdC5YeXon
LAotCi0gICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RP
bmUnLAotICAgICAgICAnQmF6VGVzdC5UZXN0QScsCi0gICAgICAgIF0pCi0KLSAgICAjIFRoZSAy
bmQgcGF0dGVybiBpcyBlbXB0eS4KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKm9vKjo6Kk9uZScs
IFsKLSAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAg
ICAgICAnQmFyVGVzdC5UZXN0T25lJywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAg
ICAgICAgXSkKLQotICAgICMgVGhlIGxhc3QgMiBwYXR0ZXJucyBhcmUgZW1wdHkuCi0gICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoJypvbyo6OicsIFsKLSAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAg
ICAgJ0Zvb1Rlc3QuWHl6JywKLSAgICAgICAgXSkKLQotICBkZWYgdGVzdE5lZ2F0aXZlRmlsdGVy
cyhzZWxmKToKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi1CYXpUZXN0LlRlc3RPbmUnLCBbCi0g
ICAgICAgICdGb29UZXN0LkFiYycsCi0gICAgICAgICdGb29UZXN0Llh5eicsCi0KLSAgICAgICAg
J0JhclRlc3QuVGVzdE9uZScsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAotICAgICAgICAn
QmFyVGVzdC5UZXN0VGhyZWUnLAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RBJywKLSAgICAgICAg
J0JhelRlc3QuVGVzdEInLAotICAgICAgICBdICsgREVBVEhfVEVTVFMgKyBQQVJBTV9URVNUUykK
LQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLUZvb1Rlc3QuQWJjOkJhelRlc3QuKicsIFsKLSAg
ICAgICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKLSAgICAg
ICAgJ0JhclRlc3QuVGVzdFR3bycsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCi0gICAg
ICAgIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTKQotCi0gICAgc2VsZi5SdW5BbmRWZXJp
ZnkoJ0JhclRlc3QuKi1CYXJUZXN0LlRlc3RPbmUnLCBbCi0gICAgICAgICdCYXJUZXN0LlRlc3RU
d28nLAotICAgICAgICAnQmFyVGVzdC5UZXN0VGhyZWUnLAotICAgICAgICBdKQotCi0gICAgIyBU
ZXN0cyB3aXRob3V0IGxlYWRpbmcgJyonLgotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCctRm9vVGVz
dC5BYmM6Rm9vVGVzdC5YeXo6QmF6VGVzdC4qJywgWwotICAgICAgICAnQmFyVGVzdC5UZXN0T25l
JywKLSAgICAgICAgJ0JhclRlc3QuVGVzdFR3bycsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUaHJl
ZScsCi0gICAgICAgIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTKQotCi0gICAgIyBWYWx1
ZSBwYXJhbWV0ZXJpemVkIHRlc3RzLgotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLyonLCBQQVJB
TV9URVNUUykKLQotICAgICMgVmFsdWUgcGFyYW1ldGVyaXplZCB0ZXN0cyBmaWx0ZXJpbmcgYnkg
dGhlIHNlcXVlbmNlIG5hbWUuCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJ1NlcVAvKicsIFsKLSAg
ICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzAnLAotICAgICAgICAnU2VxUC9QYXJhbVRlc3Qu
VGVzdFgvMScsCi0gICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAgICAgJ1Nl
cVAvUGFyYW1UZXN0LlRlc3RZLzEnLAotICAgICAgICBdKQotCi0gICAgIyBWYWx1ZSBwYXJhbWV0
ZXJpemVkIHRlc3RzIGZpbHRlcmluZyBieSB0aGUgdGVzdCBuYW1lLgotICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KCcqLzAnLCBbCi0gICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywKLSAgICAg
ICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzAnLAotICAgICAgICAnU2VxUS9QYXJhbVRlc3QuVGVz
dFgvMCcsCi0gICAgICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAgICAgXSkKLQot
ICBkZWYgdGVzdEZsYWdPdmVycmlkZXNFbnZWYXIoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCB0
aGUgZmlsdGVyIGZsYWcgb3ZlcnJpZGVzIHRoZSBmaWx0ZXJpbmcgZW52LiB2YXJpYWJsZS4iIiIK
LQotICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgJ0ZvbyonKQotICAgIGFyZ3MgPSBbJy0t
JXM9JXMnICUgKEZJTFRFUl9GTEFHLCAnKk9uZScpXQotICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4
dHJhY3RUZXN0TGlzdChhcmdzKVswXQotICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgTm9u
ZSkKLQotICAgIHNlbGYuQXNzZXJ0U2V0RXF1YWwodGVzdHNfcnVuLCBbJ0JhclRlc3QuVGVzdE9u
ZScsICdCYXpUZXN0LlRlc3RPbmUnXSkKLQotICBkZWYgdGVzdFNoYXJkU3RhdHVzRmlsZUlzQ3Jl
YXRlZChzZWxmKToKLSAgICAiIiJUZXN0cyB0aGF0IHRoZSBzaGFyZCBmaWxlIGlzIGNyZWF0ZWQg
aWYgc3BlY2lmaWVkIGluIHRoZSBlbnZpcm9ubWVudC4iIiIKLQotICAgIHNoYXJkX3N0YXR1c19m
aWxlID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGFyZF9zdGF0dXNfZmlsZScpCi0gICAg
c2VsZi5hc3NlcnRfKG5vdCBvcy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkpCi0KLSAg
ICBleHRyYV9lbnYgPSB7U0hBUkRfU1RBVFVTX0ZJTEVfRU5WX1ZBUjogc2hhcmRfc3RhdHVzX2Zp
bGV9Ci0gICAgdHJ5OgotICAgICAgSW52b2tlV2l0aE1vZGlmaWVkRW52KGV4dHJhX2VudiwgUnVu
QW5kUmV0dXJuT3V0cHV0KQotICAgIGZpbmFsbHk6Ci0gICAgICBzZWxmLmFzc2VydF8ob3MucGF0
aC5leGlzdHMoc2hhcmRfc3RhdHVzX2ZpbGUpKQotICAgICAgb3MucmVtb3ZlKHNoYXJkX3N0YXR1
c19maWxlKQotCi0gIGRlZiB0ZXN0U2hhcmRTdGF0dXNGaWxlSXNDcmVhdGVkV2l0aExpc3RUZXN0
cyhzZWxmKToKLSAgICAiIiJUZXN0cyB0aGF0IHRoZSBzaGFyZCBmaWxlIGlzIGNyZWF0ZWQgd2l0
aCB0aGUgImxpc3RfdGVzdHMiIGZsYWcuIiIiCi0KLSAgICBzaGFyZF9zdGF0dXNfZmlsZSA9IG9z
LnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnc2hhcmRfc3RhdHVzX2ZpbGUyJykKLSAgICBzZWxmLmFz
c2VydF8obm90IG9zLnBhdGguZXhpc3RzKHNoYXJkX3N0YXR1c19maWxlKSkKLQotICAgIGV4dHJh
X2VudiA9IHtTSEFSRF9TVEFUVVNfRklMRV9FTlZfVkFSOiBzaGFyZF9zdGF0dXNfZmlsZX0KLSAg
ICB0cnk6Ci0gICAgICBvdXRwdXQgPSBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bkFuZFJldHVybk91dHB1dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbTElTVF9URVNUU19GTEFHXSkK
LSAgICBmaW5hbGx5OgotICAgICAgIyBUaGlzIGFzc2VydGlvbiBlbnN1cmVzIHRoYXQgR29vZ2xl
IFRlc3QgZW51bWVyYXRlZCB0aGUgdGVzdHMgYXMKLSAgICAgICMgb3Bwb3NlZCB0byBydW5uaW5n
IHRoZW0uCi0gICAgICBzZWxmLmFzc2VydF8oJ1s9PT09PT09PT09XScgbm90IGluIG91dHB1dCwK
LSAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBvdXRwdXQgZHVyaW5nIHRlc3QgZW51bWVy
YXRpb24uXG4nCi0gICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBlbnN1cmUgdGhhdCBMSVNUX1RF
U1RTX0ZMQUcgaXMgYXNzaWduZWQgdGhlXG4nCi0gICAgICAgICAgICAgICAgICAgJ2NvcnJlY3Qg
ZmxhZyB2YWx1ZSBmb3IgbGlzdGluZyBHb29nbGUgVGVzdCB0ZXN0cy4nKQotCi0gICAgICBzZWxm
LmFzc2VydF8ob3MucGF0aC5leGlzdHMoc2hhcmRfc3RhdHVzX2ZpbGUpKQotICAgICAgb3MucmVt
b3ZlKHNoYXJkX3N0YXR1c19maWxlKQotCi0gIGlmIFNVUFBPUlRTX0RFQVRIX1RFU1RTOgotICAg
IGRlZiB0ZXN0U2hhcmRpbmdXb3Jrc1dpdGhEZWF0aFRlc3RzKHNlbGYpOgotICAgICAgIiIiVGVz
dHMgaW50ZWdyYXRpb24gd2l0aCBkZWF0aCB0ZXN0cyBhbmQgc2hhcmRpbmcuIiIiCi0KLSAgICAg
IGd0ZXN0X2ZpbHRlciA9ICdIYXNEZWF0aFRlc3QuKjpTZXFQLyonCi0gICAgICBleHBlY3RlZF90
ZXN0cyA9IFsKLSAgICAgICAgICAnSGFzRGVhdGhUZXN0LlRlc3QxJywKLSAgICAgICAgICAnSGFz
RGVhdGhUZXN0LlRlc3QyJywKLQotICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywK
LSAgICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMScsCi0gICAgICAgICAgJ1NlcVAvUGFy
YW1UZXN0LlRlc3RZLzAnLAotICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8xJywKLSAg
ICAgICAgICBdCi0KLSAgICAgIGZvciBmbGFnIGluIFsnLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxl
PXRocmVhZHNhZmUnLAotICAgICAgICAgICAgICAgICAgICctLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5
bGU9ZmFzdCddOgotICAgICAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhndGVzdF9m
aWx0ZXIsIDMsIGV4cGVjdGVkX3Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGVja19leGl0XzA9VHJ1ZSwgYXJncz1bZmxhZ10pCi0gICAgICAgIHNlbGYuUnVu
QW5kVmVyaWZ5V2l0aFNoYXJkaW5nKGd0ZXN0X2ZpbHRlciwgNSwgZXhwZWN0ZWRfdGVzdHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2V4aXRfMD1UcnVlLCBh
cmdzPVtmbGFnXSkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91
dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfZmlsdGVyX3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfZmlsdGVyX3VuaXR0ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI1
NTA0ZmU5NGFmYzE3N2M0NmNiYzEzNWZlYzY3NWM1NTRkMmUwZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X2ZpbHRlcl91bml0dGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBA
QAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0v
LyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gVW5pdCB0ZXN0IGZvciBH
b29nbGUgVGVzdCB0ZXN0IGZpbHRlcnMuCi0vLwotLy8gQSB1c2VyIGNhbiBzcGVjaWZ5IHdoaWNo
IHRlc3QocykgaW4gYSBHb29nbGUgVGVzdCBwcm9ncmFtIHRvIHJ1biB2aWEKLS8vIGVpdGhlciB0
aGUgR1RFU1RfRklMVEVSIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZSAtLWd0ZXN0X2ZpbHRl
cgotLy8gZmxhZy4gIFRoaXMgaXMgdXNlZCBmb3IgdGVzdGluZyBzdWNoIGZ1bmN0aW9uYWxpdHku
Ci0vLwotLy8gVGhlIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRob24gdW5pdCB0
ZXN0LiAgRG9uJ3QgcnVuIGl0Ci0vLyBkaXJlY3RseS4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIFRlc3QgY2FzZSBGb29UZXN0LgotCi1jbGFzcyBGb29U
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVEVTVF9GKEZvb1Rlc3QsIEFiYykg
ewotfQotCi1URVNUX0YoRm9vVGVzdCwgWHl6KSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFp
bHVyZS4iOwotfQotCi0vLyBUZXN0IGNhc2UgQmFyVGVzdC4KLQotVEVTVChCYXJUZXN0LCBUZXN0
T25lKSB7Ci19Ci0KLVRFU1QoQmFyVGVzdCwgVGVzdFR3bykgewotfQotCi1URVNUKEJhclRlc3Qs
IFRlc3RUaHJlZSkgewotfQotCi1URVNUKEJhclRlc3QsIERJU0FCTEVEX1Rlc3RGb3VyKSB7Ci0g
IEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi1URVNUKEJhclRlc3QsIERJU0FC
TEVEX1Rlc3RGaXZlKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi0v
LyBUZXN0IGNhc2UgQmF6VGVzdC4KLQotVEVTVChCYXpUZXN0LCBUZXN0T25lKSB7Ci0gIEZBSUwo
KSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi1URVNUKEJhelRlc3QsIFRlc3RBKSB7Ci19
Ci0KLVRFU1QoQmF6VGVzdCwgVGVzdEIpIHsKLX0KLQotVEVTVChCYXpUZXN0LCBESVNBQkxFRF9U
ZXN0QykgewotICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKLX0KLQotLy8gVGVzdCBj
YXNlIEhhc0RlYXRoVGVzdAotCi1URVNUKEhhc0RlYXRoVGVzdCwgVGVzdDEpIHsKLSAgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRChleGl0KDEpLCAiLioiKTsKLX0KLQotLy8gV2UgbmVlZCBhdCBs
ZWFzdCB0d28gZGVhdGggdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGFsbCBkZWF0aCB0ZXN0
cwotLy8gYXJlbid0IG9uIHRoZSBmaXJzdCBzaGFyZC4KLVRFU1QoSGFzRGVhdGhUZXN0LCBUZXN0
MikgewotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKGV4aXQoMSksICIuKiIpOwotfQotCi0v
LyBUZXN0IGNhc2UgRm9vYmFyVGVzdAotCi1URVNUKERJU0FCTEVEX0Zvb2JhclRlc3QsIFRlc3Qx
KSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi1URVNUKERJU0FCTEVE
X0Zvb2JhclRlc3QsIERJU0FCTEVEX1Rlc3QyKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFp
bHVyZS4iOwotfQotCi0vLyBUZXN0IGNhc2UgRm9vYmFyYmF6VGVzdAotCi1URVNUKERJU0FCTEVE
X0Zvb2JhcmJhelRlc3QsIFRlc3RBKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4i
OwotfQotCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLWNsYXNzIFBhcmFtVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4gewotfTsKLQotVEVTVF9QKFBhcmFtVGVzdCwg
VGVzdFgpIHsKLX0KLQotVEVTVF9QKFBhcmFtVGVzdCwgVGVzdFkpIHsKLX0KLQotSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoU2VxUCwgUGFyYW1UZXN0LCB0ZXN0aW5nOjpWYWx1ZXMoMSwgMikpOwot
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxUSwgUGFyYW1UZXN0LCB0ZXN0aW5nOjpWYWx1ZXMo
NSwgNikpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi19ICAvLyBuYW1lc3Bh
Y2UKLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7Ci0gIDo6dGVzdGluZzo6SW5p
dEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVz
dC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5Cmlu
ZGV4IDNjYjRjNDhlMGI0NjI4ZDlhYTdjNmYzMjA3YWI3ZWUxMGNkMjJiYTMuLjU4MmQyNGMyZGNj
ZTg5NDUzOGFhNjNjY2JkNjEyMGJkZDRiMzUwYTAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5CkBAIC0yOSwyNyArMjksMjYgQEAKICMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSIiIlRlc3RzIHRoZSAtLWhlbHAgZmxhZyBvZiBH
b29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrLgorIiIiVGVzdHMgdGhlIC0taGVscCBmbGFnIG9m
IEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsuCiAKIFNZTk9QU0lTCi0g
ICAgICAgZ3Rlc3RfaGVscF90ZXN0LnB5IC0tZ3Rlc3RfYnVpbGRfZGlyPUJVSUxEL0RJUgorICAg
ICAgIGd0ZXN0X2hlbHBfdGVzdC5weSAtLWJ1aWxkX2Rpcj1CVUlMRC9ESVIKICAgICAgICAgICMg
d2hlcmUgQlVJTEQvRElSIGNvbnRhaW5zIHRoZSBidWlsdCBndGVzdF9oZWxwX3Rlc3RfIGZpbGUu
CiAgICAgICAgZ3Rlc3RfaGVscF90ZXN0LnB5CiAiIiIKIAotX19hdXRob3JfXyA9ICd3YW5AZ29v
Z2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBn
dGVzdF90ZXN0X3V0aWxzCiAKIAorSVNfTElOVVggPSBvcy5uYW1lID09ICdwb3NpeCcgYW5kIG9z
LnVuYW1lKClbMF0gPT0gJ0xpbnV4JwogSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250JwogCiBQ
Uk9HUkFNX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ3Rl
c3RfaGVscF90ZXN0XycpCiBGTEFHX1BSRUZJWCA9ICctLWd0ZXN0XycKLUNBVENIX0VYQ0VQVElP
TlNfRkxBRyA9IEZMQUdfUFJFRklYICsgJ2NhdGNoX2V4Y2VwdGlvbnMnCiBERUFUSF9URVNUX1NU
WUxFX0ZMQUcgPSBGTEFHX1BSRUZJWCArICdkZWF0aF90ZXN0X3N0eWxlJworU1RSRUFNX1JFU1VM
VF9UT19GTEFHID0gRkxBR19QUkVGSVggKyAnc3RyZWFtX3Jlc3VsdF90bycKIFVOS05PV05fRkxB
RyA9IEZMQUdfUFJFRklYICsgJ3Vua25vd25fZmxhZ19mb3JfdGVzdGluZycKIExJU1RfVEVTVFNf
RkxBRyA9IEZMQUdfUFJFRklYICsgJ2xpc3RfdGVzdHMnCiBJTkNPUlJFQ1RfRkxBR19WQVJJQU5U
UyA9IFtyZS5zdWIoJ14tLScsICctJywgTElTVF9URVNUU19GTEFHKSwKQEAgLTcyLDcgKzcxLDgg
QEAgSEVMUF9SRUdFWCA9IHJlLmNvbXBpbGUoCiAgICAgRkxBR19QUkVGSVggKyByJ3ByaW50X3Rp
bWUuKicgKwogICAgIEZMQUdfUFJFRklYICsgcidvdXRwdXQ9LionICsKICAgICBGTEFHX1BSRUZJ
WCArIHInYnJlYWtfb25fZmFpbHVyZS4qJyArCi0gICAgRkxBR19QUkVGSVggKyByJ3Rocm93X29u
X2ZhaWx1cmUuKicsCisgICAgRkxBR19QUkVGSVggKyByJ3Rocm93X29uX2ZhaWx1cmUuKicgKwor
ICAgIEZMQUdfUFJFRklYICsgcidjYXRjaF9leGNlcHRpb25zPTAuKicsCiAgICAgcmUuRE9UQUxM
KQogCiAKQEAgLTEwOSwxMCArMTA5LDExIEBAIGNsYXNzIEdUZXN0SGVscFRlc3QoZ3Rlc3RfdGVz
dF91dGlscy5UZXN0Q2FzZSk6CiAgICAgZXhpdF9jb2RlLCBvdXRwdXQgPSBSdW5XaXRoRmxhZyhm
bGFnKQogICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIGV4aXRfY29kZSkKICAgICBzZWxmLmFzc2Vy
dF8oSEVMUF9SRUdFWC5zZWFyY2gob3V0cHV0KSwgb3V0cHV0KQotICAgIGlmIElTX1dJTkRPV1M6
Ci0gICAgICBzZWxmLmFzc2VydF8oQ0FUQ0hfRVhDRVBUSU9OU19GTEFHIGluIG91dHB1dCwgb3V0
cHV0KQorCisgICAgaWYgSVNfTElOVVg6CisgICAgICBzZWxmLmFzc2VydF8oU1RSRUFNX1JFU1VM
VF9UT19GTEFHIGluIG91dHB1dCwgb3V0cHV0KQogICAgIGVsc2U6Ci0gICAgICBzZWxmLmFzc2Vy
dF8oQ0FUQ0hfRVhDRVBUSU9OU19GTEFHIG5vdCBpbiBvdXRwdXQsIG91dHB1dCkKKyAgICAgIHNl
bGYuYXNzZXJ0XyhTVFJFQU1fUkVTVUxUX1RPX0ZMQUcgbm90IGluIG91dHB1dCwgb3V0cHV0KQog
CiAgICAgaWYgU1VQUE9SVFNfREVBVEhfVEVTVFMgYW5kIG5vdCBJU19XSU5ET1dTOgogICAgICAg
c2VsZi5hc3NlcnRfKERFQVRIX1RFU1RfU1RZTEVfRkxBRyBpbiBvdXRwdXQsIG91dHB1dCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0Xy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0Xy5jYwppbmRl
eCBhYWQwZDcyZDc2NzUzNWUxYjdhNzIyMjQ3NzU0MzAxMDMzZTcxMDZmLi43NTBhZTZjZTk1ZmNi
Y2IzMzhlZDVkYjJiNTg4ZjE1Y2RkNWMyZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVzdF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3RfLmNjCkBAIC0yNiwxMyArMjYsMTIgQEAKIC8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6
IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogLy8gVGhpcyBwcm9ncmFtIGlzIG1l
YW50IHRvIGJlIHJ1biBieSBndGVzdF9oZWxwX3Rlc3QucHkuICBEbyBub3QgcnVuCiAvLyBpdCBk
aXJlY3RseS4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKIAogLy8gV2hlbiBhIGhlbHAgZmxhZyBpcyBzcGVjaWZpZWQsIHRoaXMgcHJvZ3JhbSBz
aG91bGQgc2tpcCB0aGUgdGVzdHMKIC8vIGFuZCBleGl0IHdpdGggMDsgb3RoZXJ3aXNlIHRoZSBm
b2xsb3dpbmcgdGVzdCB3aWxsIGJlIGV4ZWN1dGVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9qc29uX3Rlc3RfdXRpbHMucHkgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2pzb25fdGVzdF91dGlscy5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmJi
ZmMyODhmODJiMzg3Y2Q4MzQ0NmMwYTA1YmExNjdiMWFhNzU0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9qc29uX3Rlc3RfdXRpbHMucHkKQEAg
LTAsMCArMSw2MCBAQAorIyBDb3B5cmlnaHQgMjAxOCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIwor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisj
IGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisj
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVzdCB1dGlsaXRpZXMg
Zm9yIGd0ZXN0X2pzb25fb3V0cHV0LiIiIgorCitpbXBvcnQgcmUKKworCitkZWYgbm9ybWFsaXpl
KG9iaik6CisgICIiIk5vcm1hbGl6ZSBvdXRwdXQgb2JqZWN0LgorCisgIEFyZ3M6CisgICAgIG9i
ajogR29vZ2xlIFRlc3QncyBKU09OIG91dHB1dCBvYmplY3QgdG8gbm9ybWFsaXplLgorCisgIFJl
dHVybnM6CisgICAgIE5vcm1hbGl6ZWQgb3V0cHV0IHdpdGhvdXQgYW55IHJlZmVyZW5jZXMgdG8g
dHJhbnNpZW50IGluZm9ybWF0aW9uIHRoYXQgbWF5CisgICAgIGNoYW5nZSBmcm9tIHJ1biB0byBy
dW4uCisgICIiIgorICBkZWYgX25vcm1hbGl6ZShrZXksIHZhbHVlKToKKyAgICBpZiBrZXkgPT0g
J3RpbWUnOgorICAgICAgcmV0dXJuIHJlLnN1YihyJ15cZCsoXC5cZCspP3MkJywgJyonLCB2YWx1
ZSkKKyAgICBlbGlmIGtleSA9PSAndGltZXN0YW1wJzoKKyAgICAgIHJldHVybiByZS5zdWIocide
XGR7NH0tXGRcZC1cZFxkVFxkXGQ6XGRcZDpcZFxkWiQnLCAnKicsIHZhbHVlKQorICAgIGVsaWYg
a2V5ID09ICdmYWlsdXJlJzoKKyAgICAgIHZhbHVlID0gcmUuc3ViKHInXi4qWy9cXF0oLio6KVxk
K1xuJywgJ1xcMSpcbicsIHZhbHVlKQorICAgICAgcmV0dXJuIHJlLnN1YihyJ1N0YWNrIHRyYWNl
OlxuKC58XG4pKicsICdTdGFjayB0cmFjZTpcbionLCB2YWx1ZSkKKyAgICBlbHNlOgorICAgICAg
cmV0dXJuIG5vcm1hbGl6ZSh2YWx1ZSkKKyAgaWYgaXNpbnN0YW5jZShvYmosIGRpY3QpOgorICAg
IHJldHVybiB7azogX25vcm1hbGl6ZShrLCB2KSBmb3IgaywgdiBpbiBvYmouaXRlbXMoKX0KKyAg
aWYgaXNpbnN0YW5jZShvYmosIGxpc3QpOgorICAgIHJldHVybiBbbm9ybWFsaXplKHgpIGZvciB4
IGluIG9ial0KKyAgZWxzZToKKyAgICByZXR1cm4gb2JqCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0LnB5IGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X291dHB1dF91bml0dGVzdC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zYmJhN2VhMmNmZDM3Y2FkNTUwOWY0MGY4ZThiMDAyMjcwNmJlNzg0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X291dHB1
dF91bml0dGVzdC5weQpAQCAtMCwwICsxLDE0MSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
CisjIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyIiIlVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0ZXN0
X2xpc3RfdGVzdHMgZmxhZy4KKworQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gbGlzdCBh
bGwgdGVzdHMgYnkgc3BlY2lmeWluZyB0aGUKKy0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLiBJZiBv
dXRwdXQgaXMgcmVxdWVzdGVkLCB2aWEgLS1ndGVzdF9vdXRwdXQ9eG1sCitvciAtLWd0ZXN0X291
dHB1dD1qc29uLCB0aGUgdGVzdHMgYXJlIGxpc3RlZCwgd2l0aCBleHRyYSBpbmZvcm1hdGlvbiBp
biB0aGUKK291dHB1dCBmaWxlLgorVGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5
IGJ5IGludm9raW5nIGd0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0XworIChhIHByb2dyYW0gd3Jp
dHRlbiB3aXRoIEdvb2dsZSBUZXN0KSB0aGUgY29tbWFuZCBsaW5lIGZsYWdzLgorIiIiCisKK2lt
cG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitHVEVTVF9MSVNU
X1RFU1RTX0ZMQUcgPSAnLS1ndGVzdF9saXN0X3Rlc3RzJworR1RFU1RfT1VUUFVUX0ZMQUcgPSAn
LS1ndGVzdF9vdXRwdXQnCisKK0VYUEVDVEVEX1hNTCA9ICIiIjxcP3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJVVEYtOCJcPz4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIyIiBuYW1lPSJBbGxUZXN0
cyI+CisgIDx0ZXN0c3VpdGUgbmFtZT0iRm9vVGVzdCIgdGVzdHM9IjIiPgorICAgIDx0ZXN0Y2Fz
ZSBuYW1lPSJUZXN0MSIgZmlsZT0iLipndGVzdF9saXN0X291dHB1dF91bml0dGVzdF8uY2MiIGxp
bmU9IjQzIiAvPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJUZXN0MiIgZmlsZT0iLipndGVzdF9saXN0
X291dHB1dF91bml0dGVzdF8uY2MiIGxpbmU9IjQ1IiAvPgorICA8L3Rlc3RzdWl0ZT4KKzwvdGVz
dHN1aXRlcz4KKyIiIgorCitFWFBFQ1RFRF9KU09OID0gIiIieworICAidGVzdHMiOiAyLAorICAi
bmFtZSI6ICJBbGxUZXN0cyIsCisgICJ0ZXN0c3VpdGVzIjogXFsKKyAgICB7CisgICAgICAibmFt
ZSI6ICJGb29UZXN0IiwKKyAgICAgICJ0ZXN0cyI6IDIsCisgICAgICAidGVzdHN1aXRlIjogXFsK
KyAgICAgICAgeworICAgICAgICAgICJuYW1lIjogIlRlc3QxIiwKKyAgICAgICAgICAiZmlsZSI6
ICIuKmd0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0Xy5jYyIsCisgICAgICAgICAgImxpbmUiOiA0
MworICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgIm5hbWUiOiAiVGVzdDIiLAorICAg
ICAgICAgICJmaWxlIjogIi4qZ3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3RfLmNjIiwKKyAgICAg
ICAgICAibGluZSI6IDQ1CisgICAgICAgIH0KKyAgICAgIFxdCisgICAgfQorICBcXQorfQorIiIi
CisKKworY2xhc3MgR1Rlc3RMaXN0VGVzdHNPdXRwdXRVbml0VGVzdChndGVzdF90ZXN0X3V0aWxz
LlRlc3RDYXNlKToKKyAgIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIGxpc3QgdGVzdHMg
d2l0aCBvdXRwdXQgdG8gZmlsZSBmdW5jdGlvbmFsaXR5LgorICAiIiIKKworICBkZWYgdGVzdFht
bChzZWxmKToKKyAgICAiIiJWZXJpZmllcyBYTUwgb3V0cHV0IGZvciBsaXN0aW5nIHRlc3RzIGlu
IGEgR29vZ2xlIFRlc3QgYmluYXJ5LgorCisgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdl
bmVyYXRlcyBhbiBlbXB0eSBYTUwgb3V0cHV0LCBhbmQKKyAgICB0ZXN0cyB0aGF0IHRoZSBYTUwg
b3V0cHV0IGlzIGV4cGVjdGVkLgorICAgICIiIgorICAgIHNlbGYuX1Rlc3RPdXRwdXQoJ3htbCcs
IEVYUEVDVEVEX1hNTCkKKworICBkZWYgdGVzdEpTT04oc2VsZik6CisgICAgIiIiVmVyaWZpZXMg
WE1MIG91dHB1dCBmb3IgbGlzdGluZyB0ZXN0cyBpbiBhIEdvb2dsZSBUZXN0IGJpbmFyeS4KKwor
ICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkgWE1MIG91dHB1
dCwgYW5kCisgICAgdGVzdHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBleHBlY3RlZC4KKyAgICAi
IiIKKyAgICBzZWxmLl9UZXN0T3V0cHV0KCdqc29uJywgRVhQRUNURURfSlNPTikKKworICBkZWYg
X0dldE91dHB1dChzZWxmLCBvdXRfZm9ybWF0KToKKyAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpv
aW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICd0ZXN0X291dC4nICsgb3V0X2Zvcm1hdCkKKyAgICBndGVzdF9wcm9nX3BhdGggPSBn
dGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKKyAgICAgICAgJ2d0ZXN0X2xp
c3Rfb3V0cHV0X3VuaXR0ZXN0XycpCisKKyAgICBjb21tYW5kID0gKFsKKyAgICAgICAgZ3Rlc3Rf
cHJvZ19wYXRoLAorICAgICAgICAnJXM9JXM6JXMnICUgKEdURVNUX09VVFBVVF9GTEFHLCBvdXRf
Zm9ybWF0LCBmaWxlX3BhdGgpLAorICAgICAgICAnLS1ndGVzdF9saXN0X3Rlc3RzJworICAgIF0p
CisgICAgZW52aXJvbl9jb3B5ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgICBwID0gZ3Rlc3RfdGVz
dF91dGlscy5TdWJwcm9jZXNzKAorICAgICAgICBjb21tYW5kLCBlbnY9ZW52aXJvbl9jb3B5LCB3
b3JraW5nX2Rpcj1ndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSkKKworICAgIHNlbGYuYXNz
ZXJ0XyhwLmV4aXRlZCkKKyAgICBzZWxmLmFzc2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkKKyAg
ICB3aXRoIG9wZW4oZmlsZV9wYXRoKSBhcyBmOgorICAgICAgcmVzdWx0ID0gZi5yZWFkKCkKKyAg
ICByZXR1cm4gcmVzdWx0CisKKyAgZGVmIF9UZXN0T3V0cHV0KHNlbGYsIHRlc3RfZm9ybWF0LCBl
eHBlY3RlZF9vdXRwdXQpOgorICAgIGFjdHVhbCA9IHNlbGYuX0dldE91dHB1dCh0ZXN0X2Zvcm1h
dCkKKyAgICBhY3R1YWxfbGluZXMgPSBhY3R1YWwuc3BsaXRsaW5lcygpCisgICAgZXhwZWN0ZWRf
bGluZXMgPSBleHBlY3RlZF9vdXRwdXQuc3BsaXRsaW5lcygpCisgICAgbGluZV9jb3VudCA9IDAK
KyAgICBmb3IgYWN0dWFsX2xpbmUgaW4gYWN0dWFsX2xpbmVzOgorICAgICAgZXhwZWN0ZWRfbGlu
ZSA9IGV4cGVjdGVkX2xpbmVzW2xpbmVfY291bnRdCisgICAgICBleHBlY3RlZF9saW5lX3JlID0g
cmUuY29tcGlsZShleHBlY3RlZF9saW5lLnN0cmlwKCkpCisgICAgICBzZWxmLmFzc2VydF8oCisg
ICAgICAgICAgZXhwZWN0ZWRfbGluZV9yZS5tYXRjaChhY3R1YWxfbGluZS5zdHJpcCgpKSwKKyAg
ICAgICAgICAoJ2FjdHVhbCBvdXRwdXQgb2YgIiVzIixcbicKKyAgICAgICAgICAgJ3doaWNoIGRv
ZXMgbm90IG1hdGNoIGV4cGVjdGVkIHJlZ2V4IG9mICIlcyJcbicKKyAgICAgICAgICAgJ29uIGxp
bmUgJWQnICUgKGFjdHVhbCwgZXhwZWN0ZWRfb3V0cHV0LCBsaW5lX2NvdW50KSkpCisgICAgICBs
aW5lX2NvdW50ID0gbGluZV9jb3VudCArIDEKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgorICBvcy5lbnZpcm9uWydHVEVTVF9TVEFDS19UUkFDRV9ERVBUSCddID0gJzEnCisgIGd0ZXN0
X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxYzdi
NGRlMzQ2MWZjMTY0NWY0MTFiNzFmOWUzN2Y4MjI0ZmQ4YTYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0Xy5j
YwpAQCAtMCwwICsxLDUxIEBACisvLyBDb3B5cmlnaHQgMjAxOCwgR29vZ2xlIEluYy4KKy8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisv
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisvLworLy8gQXV0aG9yOiBkYXZpZC5zY2h1bGRlbmZyZWlAZ21haWwuY29tIChEYXZp
ZCBTY2h1bGRlbmZyZWkpCisKKy8vIFVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0ZXN0
X2xpc3RfdGVzdHMgYW5kIC0tZ3Rlc3Rfb3V0cHV0IGZsYWcuCisvLworLy8gQSB1c2VyIGNhbiBh
c2sgR29vZ2xlIFRlc3QgdG8gbGlzdCBhbGwgdGVzdHMgdGhhdCB3aWxsIHJ1biwKKy8vIGFuZCBo
YXZlIHRoZSBvdXRwdXQgc2F2ZWQgaW4gYSBKc29uL1htbCBmaWxlLgorLy8gVGhlIHRlc3RzIHdp
bGwgbm90IGJlIHJ1biBhZnRlciBsaXN0aW5nLgorLy8KKy8vIFRoaXMgcHJvZ3JhbSB3aWxsIGJl
IGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRlc3QuCisvLyBEb24ndCBydW4gaXQgZGlyZWN0
bHkuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCitURVNUKEZvb1Rlc3QsIFRlc3QxKSB7
fQorCitURVNUKEZvb1Rlc3QsIFRlc3QyKSB7fQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
KmFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAg
cmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdC5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggY2U4YzNlZjA1ZjY2MDBlODcyMTRhNmQ0MDE2MjhlZDkyM2ExNTJk
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3QucHkKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENv
cHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIC0tZ3Rlc3RfbGlz
dF90ZXN0cyBmbGFnLgotCi1BIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBsaXN0IGFsbCB0
ZXN0cyBieSBzcGVjaWZ5aW5nIHRoZQotLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuICBUaGlzIHNj
cmlwdCB0ZXN0cyBzdWNoIGZ1bmN0aW9uYWxpdHkKLWJ5IGludm9raW5nIGd0ZXN0X2xpc3RfdGVz
dHNfdW5pdHRlc3RfIChhIHByb2dyYW0gd3JpdHRlbiB3aXRoCi1Hb29nbGUgVGVzdCkgdGhlIGNv
bW1hbmQgbGluZSBmbGFncy4KLSIiIgotCi1fX2F1dGhvcl9fID0gJ3BoYW5uYUBnb29nbGUuY29t
IChQYXRyaWNrIEhhbm5hKScKLQotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLQotCi0jIENvbnN0
YW50cy4KLQotIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBs
aXN0aW5nIGFsbCB0ZXN0cy4KLUxJU1RfVEVTVFNfRkxBRyA9ICdndGVzdF9saXN0X3Rlc3RzJwot
Ci0jIFBhdGggdG8gdGhlIGd0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfIHByb2dyYW0uCi1FWEVf
UEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9saXN0
X3Rlc3RzX3VuaXR0ZXN0XycpCi0KLSMgVGhlIGV4cGVjdGVkIG91dHB1dCB3aGVuIHJ1bm5pbmcg
Z3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8gd2l0aAotIyAtLWd0ZXN0X2xpc3RfdGVzdHMKLUVY
UEVDVEVEX09VVFBVVF9OT19GSUxURVIgPSAiIiJGb29EZWF0aFRlc3QuCi0gIFRlc3QxCi1Gb28u
Ci0gIEJhcjEKLSAgQmFyMgotICBESVNBQkxFRF9CYXIzCi1BYmMuCi0gIFh5egotICBEZWYKLUZv
b0Jhci4KLSAgQmF6Ci1Gb29UZXN0LgotICBUZXN0MQotICBESVNBQkxFRF9UZXN0MgotICBUZXN0
MwotIiIiCi0KLSMgVGhlIGV4cGVjdGVkIG91dHB1dCB3aGVuIHJ1bm5pbmcgZ3Rlc3RfbGlzdF90
ZXN0c191bml0dGVzdF8gd2l0aAotIyAtLWd0ZXN0X2xpc3RfdGVzdHMgYW5kIC0tZ3Rlc3RfZmls
dGVyPUZvbyouCi1FWFBFQ1RFRF9PVVRQVVRfRklMVEVSX0ZPTyA9ICIiIkZvb0RlYXRoVGVzdC4K
LSAgVGVzdDEKLUZvby4KLSAgQmFyMQotICBCYXIyCi0gIERJU0FCTEVEX0JhcjMKLUZvb0Jhci4K
LSAgQmF6Ci1Gb29UZXN0LgotICBUZXN0MQotICBESVNBQkxFRF9UZXN0MgotICBUZXN0MwotIiIi
Ci0KLSMgVXRpbGl0aWVzLgotCi0KLWRlZiBSdW4oYXJncyk6Ci0gICIiIlJ1bnMgZ3Rlc3RfbGlz
dF90ZXN0c191bml0dGVzdF8gYW5kIHJldHVybnMgdGhlIGxpc3Qgb2YgdGVzdHMgcHJpbnRlZC4i
IiIKLQotICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtFWEVfUEFUSF0gKyBh
cmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVfc3RkZXJy
PUZhbHNlKS5vdXRwdXQKLQotCi0jIFRoZSB1bml0IHRlc3QuCi0KLWNsYXNzIEdUZXN0TGlzdFRl
c3RzVW5pdFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gICIiIlRlc3RzIHVzaW5n
IHRoZSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZyB0byBsaXN0IGFsbCB0ZXN0cy4iIiIKLQotICBk
ZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGZsYWdfdmFsdWUsIGV4cGVjdGVkX291dHB1dCwgb3RoZXJf
ZmxhZyk6Ci0gICAgIiIiUnVucyBndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0XyBhbmQgdmVyaWZp
ZXMgdGhhdCBpdCBwcmludHMKLSAgICB0aGUgY29ycmVjdCB0ZXN0cy4KLQotICAgIEFyZ3M6Ci0g
ICAgICBmbGFnX3ZhbHVlOiAgICAgICB2YWx1ZSBvZiB0aGUgLS1ndGVzdF9saXN0X3Rlc3RzIGZs
YWc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBub3Qg
YmUgcHJlc2VudC4KLQotICAgICAgZXhwZWN0ZWRfb3V0cHV0OiAgdGhlIGV4cGVjdGVkIG91dHB1
dCBhZnRlciBydW5uaW5nIGNvbW1hbmQ7Ci0KLSAgICAgIG90aGVyX2ZsYWc6ICAgICAgIGEgZGlm
ZmVyZW50IGZsYWcgdG8gYmUgcGFzc2VkIHRvIGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGFsb25nIHdpdGggZ3Rlc3RfbGlzdF90ZXN0czsKLSAgICAgICAgICAgICAgICAgICAgICAg
IE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgotICAgICIiIgotCi0gICAg
aWYgZmxhZ192YWx1ZSBpcyBOb25lOgotICAgICAgZmxhZyA9ICcnCi0gICAgICBmbGFnX2V4cHJl
c3Npb24gPSAnbm90IHNldCcKLSAgICBlbGlmIGZsYWdfdmFsdWUgPT0gJzAnOgotICAgICAgZmxh
ZyA9ICctLSVzPTAnICUgTElTVF9URVNUU19GTEFHCi0gICAgICBmbGFnX2V4cHJlc3Npb24gPSAn
MCcKLSAgICBlbHNlOgotICAgICAgZmxhZyA9ICctLSVzJyAlIExJU1RfVEVTVFNfRkxBRwotICAg
ICAgZmxhZ19leHByZXNzaW9uID0gJzEnCi0KLSAgICBhcmdzID0gW2ZsYWddCi0KLSAgICBpZiBv
dGhlcl9mbGFnIGlzIG5vdCBOb25lOgotICAgICAgYXJncyArPSBbb3RoZXJfZmxhZ10KLQotICAg
IG91dHB1dCA9IFJ1bihhcmdzKQotCi0gICAgbXNnID0gKCd3aGVuICVzIGlzICVzLCB0aGUgb3V0
cHV0IG9mICIlcyIgaXMgIiVzIi4nICUKLSAgICAgICAgICAgKExJU1RfVEVTVFNfRkxBRywgZmxh
Z19leHByZXNzaW9uLCAnICcuam9pbihhcmdzKSwgb3V0cHV0KSkKLQotICAgIGlmIGV4cGVjdGVk
X291dHB1dCBpcyBub3QgTm9uZToKLSAgICAgIHNlbGYuYXNzZXJ0XyhvdXRwdXQgPT0gZXhwZWN0
ZWRfb3V0cHV0LCBtc2cpCi0gICAgZWxzZToKLSAgICAgIHNlbGYuYXNzZXJ0XyhvdXRwdXQgIT0g
RVhQRUNURURfT1VUUFVUX05PX0ZJTFRFUiwgbXNnKQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJlaGF2
aW9yKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBtb2Rl
LiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZmxhZ192YWx1ZT1Ob25lLAotICAgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAg
IG90aGVyX2ZsYWc9Tm9uZSkKLQotICBkZWYgdGVzdEZsYWcoc2VsZik6Ci0gICAgIiIiVGVzdHMg
dXNpbmcgdGhlIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLiIiIgotCi0gICAgc2VsZi5SdW5BbmRW
ZXJpZnkoZmxhZ192YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0
cHV0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz1Ob25lKQotICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGV4
cGVjdGVkX291dHB1dD1FWFBFQ1RFRF9PVVRQVVRfTk9fRklMVEVSLAotICAgICAgICAgICAgICAg
ICAgICAgIG90aGVyX2ZsYWc9Tm9uZSkKLQotICBkZWYgdGVzdE92ZXJyaWRlTm9uRmlsdGVyRmxh
Z3Moc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCAtLWd0ZXN0X2xpc3RfdGVzdHMgb3ZlcnJpZGVz
IHRoZSBub24tZmlsdGVyIGZsYWdzLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZmxhZ192
YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0PUVYUEVDVEVE
X09VVFBVVF9OT19GSUxURVIsCi0gICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz0nLS1n
dGVzdF9icmVha19vbl9mYWlsdXJlJykKLQotICBkZWYgdGVzdFdpdGhGaWx0ZXJGbGFncyhzZWxm
KToKLSAgICAiIiJUZXN0cyB0aGF0IC0tZ3Rlc3RfbGlzdF90ZXN0cyB0YWtlcyBpbnRvIGFjY291
bnQgdGhlCi0gICAgLS1ndGVzdF9maWx0ZXIgZmxhZy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVy
aWZ5KGZsYWdfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1
dD1FWFBFQ1RFRF9PVVRQVVRfRklMVEVSX0ZPTywKLSAgICAgICAgICAgICAgICAgICAgICBvdGhl
cl9mbGFnPSctLWd0ZXN0X2ZpbHRlcj1Gb28qJykKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgotICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8uY2MKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwZWQwODI1YjVkODg5NjkyMzAxYzVhNGQ0ZjBlYjc1
YmFiYzViYzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5j
YworKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA2LCBHb29n
bGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHBoYW5uYUBnb29nbGUuY29tIChQ
YXRyaWNrIEhhbm5hKQotCi0vLyBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgLS1ndGVzdF9s
aXN0X3Rlc3RzIGZsYWcuCi0vLwotLy8gQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gbGlz
dCBhbGwgdGVzdHMgdGhhdCB3aWxsIHJ1bgotLy8gc28gdGhhdCB3aGVuIHVzaW5nIGEgZmlsdGVy
LCBhIHVzZXIgd2lsbCBrbm93IHdoYXQKLS8vIHRlc3RzIHRvIGxvb2sgZm9yLiBUaGUgdGVzdHMg
d2lsbCBub3QgYmUgcnVuIGFmdGVyIGxpc3RpbmcuCi0vLwotLy8gVGhpcyBwcm9ncmFtIHdpbGwg
YmUgaW52b2tlZCBmcm9tIGEgUHl0aG9uIHVuaXQgdGVzdC4KLS8vIERvbid0IHJ1biBpdCBkaXJl
Y3RseS4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIFNl
dmVyYWwgZGlmZmVyZW50IHRlc3QgY2FzZXMgYW5kIHRlc3RzIHRoYXQgd2lsbCBiZSBsaXN0ZWQu
Ci1URVNUKEZvbywgQmFyMSkgewotfQotCi1URVNUKEZvbywgQmFyMikgewotfQotCi1URVNUKEZv
bywgRElTQUJMRURfQmFyMykgewotfQotCi1URVNUKEFiYywgWHl6KSB7Ci19Ci0KLVRFU1QoQWJj
LCBEZWYpIHsKLX0KLQotVEVTVChGb29CYXIsIEJheikgewotfQotCi1jbGFzcyBGb29UZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7Ci19
Ci0KLVRFU1RfRihGb29UZXN0LCBESVNBQkxFRF9UZXN0MikgewotfQotCi1URVNUX0YoRm9vVGVz
dCwgVGVzdDMpIHsKLX0KLQotVEVTVChGb29EZWF0aFRlc3QsIFRlc3QxKSB7Ci19Ci0KLX0gIC8v
IG5hbWVzcGFjZQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgOjp0ZXN0
aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgcmV0dXJuIFJVTl9BTExfVEVT
VFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
bWFpbl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbWFp
bl91bml0dGVzdC5jYwppbmRleCA3YTNmMGFkZmFkZjZkN2U1YzE5NWIzMTk0NDcxNGQ1YWM0MWJi
OGUzLi5lZGRlZGVhYmU4ZjNiYjA4M2RhYmNhNjAwZTcyZjQ1MWI4ZDk0Y2RiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X21haW5fdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9tYWluX3VuaXR0ZXN0LmNjCkBA
IC0yNiwxMCArMjYsOSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAv
LyBUZXN0cyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gZGVmaW5lIG1haW4oKSB3aGVuIHdlIGxpbmsg
dG8KIC8vIGd0ZXN0X21haW4gaW5zdGVhZCBvZiBndGVzdC4KQEAgLTQxLDUgKzQwLDUgQEAgVEVT
VChHVGVzdE1haW5UZXN0LCBTaG91bGRTdWNjZWVkKSB7CiAKIH0gIC8vIG5hbWVzcGFjZQogCi0v
LyBXZSBhcmUgdXNpbmcgdGhlIG1haW4oKSBmdW5jdGlvbiBkZWZpbmVkIGluIHNyYy9ndGVzdF9t
YWluLmNjLCBzbwotLy8gd2UgZG9uJ3QgZGVmaW5lIGl0IGhlcmUuCisvLyBXZSBhcmUgdXNpbmcg
dGhlIG1haW4oKSBmdW5jdGlvbiBkZWZpbmVkIGluIGd0ZXN0X21haW4uY2MsIHNvIHdlCisvLyBk
b24ndCBkZWZpbmUgaXQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfbmMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X25j
LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2I1ZGI2ZDQxODMwOWE0N2EyM2Rm
ZjE4MDA1M2I3NWQzMjAxMjRmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbmMuY2MKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMzQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMu
Ci0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0v
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdh
bikKLQotLy8gVGhpcyBmaWxlIGlzIHRoZSBpbnB1dCB0byBhIG5lZ2F0aXZlLWNvbXBpbGF0aW9u
IHRlc3QgZm9yIEdvb2dsZQotLy8gVGVzdC4gIENvZGUgaGVyZSBpcyBOT1Qgc3VwcG9zZWQgdG8g
Y29tcGlsZS4gIEl0cyBwdXJwb3NlIGlzIHRvCi0vLyB2ZXJpZnkgdGhhdCBjZXJ0YWluIGluY29y
cmVjdCB1c2FnZXMgb2YgdGhlIEdvb2dsZSBUZXN0IEFQSSBhcmUKLS8vIGluZGVlZCByZWplY3Rl
ZCBieSB0aGUgY29tcGlsZXIuCi0vLwotLy8gV2Ugc3RpbGwgbmVlZCB0byB3cml0ZSB0aGUgbmVn
YXRpdmUtY29tcGlsYXRpb24gdGVzdCBpdHNlbGYsIHdoaWNoCi0vLyB3aWxsIGJlIHRpZ2h0bHkg
Y291cGxlZCB3aXRoIHRoZSBidWlsZCBlbnZpcm9ubWVudC4KLS8vCi0vLyBUT0RPKHdhbkBnb29n
bGUuY29tKTogZmluaXNoIHRoZSBuZWdhdGl2ZS1jb21waWxhdGlvbiB0ZXN0LgotCi0jaWZkZWYg
VEVTVF9DQU5OT1RfSUdOT1JFX1JVTl9BTExfVEVTVFNfUkVTVUxUCi0vLyBUZXN0cyB0aGF0IHRo
ZSByZXN1bHQgb2YgUlVOX0FMTF9URVNUUygpIGNhbm5vdCBiZSBpZ25vcmVkLgotCi0jaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0g
IHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLSAgUlVOX0FMTF9URVNUUygp
OyAgLy8gVGhpcyBsaW5lIHNob3VsZG4ndCBjb21waWxlLgotfQotCi0jZWxpZiBkZWZpbmVkKFRF
U1RfVVNFUl9DQU5OT1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9JTkxfSCkKLS8vIFRlc3RzIHRo
YXQgYSB1c2VyIGNhbm5vdCBpbmNsdWRlIGd0ZXN0LWludGVybmFsLWlubC5oIGluIGhpcyBjb2Rl
LgotCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotCi0jZWxpZiBkZWZpbmVk
KFRFU1RfQ0FUQ0hFU19ERUNMQVJJTkdfU0VUVVBfSU5fVEVTVF9GSVhUVVJFX1dJVEhfVFlQTykK
LS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgdGhlIHR5cG8gd2hlbiBhIHVzZXIg
ZGVjbGFyZXMgYQotLy8gU2V0dXAoKSBtZXRob2QgaW4gYSB0ZXN0IGZpeHR1cmUuCi0KLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgotCi1jbGFzcyBNeVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7Ci0gcHJvdGVjdGVkOgotICB2b2lkIFNldHVwKCkge30KLX07Ci0KLSNlbGlmIGRlZmluZWQo
VEVTVF9DQVRDSEVTX0NBTExJTkdfU0VUVVBfSU5fVEVTVF9XSVRIX1RZUE8pCi0vLyBUZXN0cyB0
aGF0IHRoZSBjb21waWxlciBjYXRjaGVzIHRoZSB0eXBvIHdoZW4gYSB1c2VyIGNhbGxzIFNldHVw
KCkKLS8vIGZyb20gYSB0ZXN0IGZpeHR1cmUuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgot
Ci1jbGFzcyBNeVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgdGVzdGluZzo6VGVzdDo6U2V0dXAoKTsgIC8vIFRy
aWVzIHRvIGNhbGwgU2V0VXAoKSBpbiB0aGUgcGFyZW50IGNsYXNzLgotICB9Ci19OwotCi0jZWxp
ZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19ERUNMQVJJTkdfU0VUVVBfSU5fRU5WSVJPTk1FTlRfV0lU
SF9UWVBPKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0Y2hlcyB0aGUgdHlwbyB3aGVu
IGEgdXNlciBkZWNsYXJlcyBhCi0vLyBTZXR1cCgpIG1ldGhvZCBpbiBhIHN1YmNsYXNzIG9mIEVu
dmlyb25tZW50LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotY2xhc3MgTXlFbnZpcm9u
bWVudCA6IHB1YmxpYyB0ZXN0aW5nOjpFbnZpcm9ubWVudCB7Ci0gcHVibGljOgotICB2b2lkIFNl
dHVwKCkge30KLX07Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRDSEVTX0NBTExJTkdfU0VUVVBf
SU5fRU5WSVJPTk1FTlRfV0lUSF9UWVBPKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0
Y2hlcyB0aGUgdHlwbyB3aGVuIGEgdXNlciBjYWxscyBTZXR1cCgpCi0vLyBpbiBhbiBFbnZpcm9u
bWVudC4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLWNsYXNzIE15RW52aXJvbm1lbnQg
OiBwdWJsaWMgdGVzdGluZzo6RW52aXJvbm1lbnQgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2
b2lkIFNldFVwKCkgewotICAgIC8vIFRyaWVzIHRvIGNhbGwgU2V0VXAoKSBpbiB0aGUgcGFyZW50
IGNsYXNzLgotICAgIHRlc3Rpbmc6OkVudmlyb25tZW50OjpTZXR1cCgpOwotICB9Ci19OwotCi0j
ZWxpZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19XUk9OR19DQVNFX0lOX1RZUEVEX1RFU1RfUCkKLS8v
IFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgdXNpbmcgdGhlIHdyb25nIHRlc3QgY2Fz
ZSBuYW1lIGluCi0vLyBUWVBFRF9URVNUX1AuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEJhclRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0KTsKLVRZ
UEVEX1RFU1RfUChCYXJUZXN0LCBBKSB7fSAgLy8gV3JvbmcgdGVzdCBjYXNlIG5hbWUuCi1SRUdJ
U1RFUl9UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0LCBBKTsKLUlOU1RBTlRJQVRFX1RZUEVEX1RF
U1RfQ0FTRV9QKE15LCBGb29UZXN0LCB0ZXN0aW5nOjpUeXBlczxpbnQ+KTsKLQotI2VsaWYgZGVm
aW5lZChURVNUX0NBVENIRVNfV1JPTkdfQ0FTRV9JTl9SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0Vf
UCkKLS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgdXNpbmcgdGhlIHdyb25nIHRl
c3QgY2FzZSBuYW1lIGluCi0vLyBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUC4KLQotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgRm9vVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
Y2xhc3MgQmFyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1Rf
Q0FTRV9QKEZvb1Rlc3QpOwotVFlQRURfVEVTVF9QKEZvb1Rlc3QsIEEpIHt9Ci1SRUdJU1RFUl9U
WVBFRF9URVNUX0NBU0VfUChCYXJUZXN0LCBBKTsgIC8vIFdyb25nIHRlc3QgY2FzZSBuYW1lLgot
SU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIHRlc3Rpbmc6OlR5cGVz
PGludD4pOwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19XUk9OR19DQVNFX0lOX0lOU1RB
TlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0
Y2hlcyB1c2luZyB0aGUgd3JvbmcgdGVzdCBjYXNlIG5hbWUgaW4KLS8vIElOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBCYXJUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgewotfTsKLQotVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7Ci1UWVBFRF9URVNUX1Ao
Rm9vVGVzdCwgQSkge30KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsIEEpOwot
Ci0vLyBXcm9uZyB0ZXN0IGNhc2UgbmFtZS4KLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9Q
KE15LCBCYXJUZXN0LCB0ZXN0aW5nOjpUeXBlczxpbnQ+KTsKLQotI2VsaWYgZGVmaW5lZChURVNU
X0NBVENIRVNfSU5TVEFOVElBVEVfVFlQRURfVEVTRVRfQ0FTRV9QX1dJVEhfU0FNRV9OQU1FX1BS
RUZJWCkKLS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgaW5zdGFudGlhdGluZyBU
WVBFRF9URVNUX0NBU0VfUAotLy8gdHdpY2Ugd2l0aCB0aGUgc2FtZSBuYW1lIHByZWZpeC4KLQot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3Mg
Rm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRV9Q
KEZvb1Rlc3QpOwotVFlQRURfVEVTVF9QKEZvb1Rlc3QsIEEpIHt9Ci1SRUdJU1RFUl9UWVBFRF9U
RVNUX0NBU0VfUChGb29UZXN0LCBBKTsKLQotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1Ao
TXksIEZvb1Rlc3QsIHRlc3Rpbmc6OlR5cGVzPGludD4pOwotCi0vLyBXcm9uZyBuYW1lIHByZWZp
eDogIk15IiBoYXMgYmVlbiB1c2VkLgotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXks
IEZvb1Rlc3QsIHRlc3Rpbmc6OlR5cGVzPGRvdWJsZT4pOwotCi0jZWxpZiBkZWZpbmVkKFRFU1Rf
U1RBVElDX0FTU0VSVF9UWVBFX0VRX0lTX05PVF9BX1RZUEUpCi0KLSNpbmNsdWRlIDxndGVzdC9n
dGVzdC5oPgotCi0vLyBUZXN0cyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+IGNhbm5v
dCBiZSB1c2VkIGFzIGEgdHlwZS4KLXRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIGlu
dD4gZHVtbXk7Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9TVEFUSUNfQVNTRVJUX1RZUEVfRVFfV09S
S1NfSU5fTkFNRVNQQUNFKQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotLy8gVGVzdHMg
dGhhdCBTdGF0aWNBc3NlcnRUeXBlRXE8VDEsIFQyPiB3b3JrcyBpbiBhIG5hbWVzcGFjZSBzY29w
ZS4KLXN0YXRpYyBib29sIGR1bW15ID0gdGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGludCwg
Y29uc3QgaW50PigpOwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfU1RBVElDX0FTU0VSVF9UWVBFX0VR
X1dPUktTX0lOX0NMQVNTKQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBIZWxwZXIgewotIHB1YmxpYzoKLSAgLy8gVGVzdHMgdGhhdCBT
dGF0aWNBc3NlcnRUeXBlRXE8VDEsIFQyPiB3b3JrcyBpbiBhIGNsYXNzLgotICBIZWxwZXIoKSB7
IHRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIFQ+KCk7IH0KLQotICB2b2lkIERvU29t
ZXRoaW5nKCkge30KLX07Ci0KLXZvaWQgVGVzdCgpIHsKLSAgSGVscGVyPGJvb2w+IGg7Ci0gIGgu
RG9Tb21ldGhpbmcoKTsgIC8vIFRvIGF2b2lkIHRoZSAidW51c2VkIHZhcmlhYmxlIiB3YXJuaW5n
LgotfQotCi0jZWxpZiBkZWZpbmVkKFRFU1RfU1RBVElDX0FTU0VSVF9UWVBFX0VRX1dPUktTX0lO
X0ZVTkNUSU9OKQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdm9pZCBUZXN0KCkgewot
ICAvLyBUZXN0cyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+IHdvcmtzIGluc2lkZSBh
IGZ1bmN0aW9uLgotICB0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgaW50LCBpbnQ+
KCk7Ci19Ci0KLSNlbHNlCi0vLyBBIHNhbml0eSB0ZXN0LiAgVGhpcyBzaG91bGQgY29tcGlsZS4K
LQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLWludCBtYWluKCkgewotICByZXR1cm4gUlVO
X0FMTF9URVNUUygpOwotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfbmNfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfbmNfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDZmZmIz
ZjgwMzhmMGE1Nzk2ZTRiNmQ2MjlkMDJlODA1NjVhMjQzOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X25jX3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotIyBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0j
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiTmVnYXRpdmUgY29tcGlsYXRp
b24gdGVzdCBmb3IgR29vZ2xlIFRlc3QuIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0
ZXN0Ci0KLQotSVNfTElOVVggPSBvcy5uYW1lID09ICdwb3NpeCcgYW5kIG9zLnVuYW1lKClbMF0g
PT0gJ0xpbnV4JwotaWYgbm90IElTX0xJTlVYOgotICBzeXMuZXhpdCgwKSAgIyBOZWdhdGl2ZSBj
b21waWxhdGlvbiB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzICYgTWFjLgotCi0K
LWNsYXNzIEdUZXN0TkNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgIiIiTmVnYXRpdmUgY29t
cGlsYXRpb24gdGVzdCBmb3IgR29vZ2xlIFRlc3QuIiIiCi0KLSAgZGVmIHRlc3RDb21waWxlckVy
cm9yKHNlbGYpOgotICAgICIiIlZlcmlmaWVzIHRoYXQgZXJyb25lb3VzIGNvZGUgbGVhZHMgdG8g
ZXhwZWN0ZWQgY29tcGlsZXIKLSAgICBtZXNzYWdlcy4iIiIKLQotICAgICMgRGVmaW5lcyBhIGxp
c3Qgb2YgdGVzdCBzcGVjcywgd2hlcmUgZWFjaCBlbGVtZW50IGlzIGEgdHVwbGUKLSAgICAjICh0
ZXN0IG5hbWUsIGxpc3Qgb2YgcmVnZXhlcyBmb3IgbWF0Y2hpbmcgdGhlIGNvbXBpbGVyIGVycm9y
cykuCi0gICAgdGVzdF9zcGVjcyA9IFsKLSAgICAgICgnQ0FOTk9UX0lHTk9SRV9SVU5fQUxMX1RF
U1RTX1JFU1VMVCcsCi0gICAgICAgW3InaWdub3JpbmcgcmV0dXJuIHZhbHVlJ10pLAotCi0gICAg
ICAoJ1VTRVJfQ0FOTk9UX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfSU5MX0gnLAotICAgICAgIFty
J211c3Qgbm90IGJlIGluY2x1ZGVkIGV4Y2VwdCBieSBHb29nbGUgVGVzdCBpdHNlbGYnXSksCi0K
LSAgICAgICgnQ0FUQ0hFU19ERUNMQVJJTkdfU0VUVVBfSU5fVEVTVF9GSVhUVVJFX1dJVEhfVFlQ
TycsCi0gICAgICAgW3InU2V0dXBfc2hvdWxkX2JlX3NwZWxsZWRfU2V0VXAnXSksCi0KLSAgICAg
ICgnQ0FUQ0hFU19DQUxMSU5HX1NFVFVQX0lOX1RFU1RfV0lUSF9UWVBPJywKLSAgICAgICBbcidT
ZXR1cF9zaG91bGRfYmVfc3BlbGxlZF9TZXRVcCddKSwKLQotICAgICAgKCdDQVRDSEVTX0RFQ0xB
UklOR19TRVRVUF9JTl9FTlZJUk9OTUVOVF9XSVRIX1RZUE8nLAotICAgICAgIFtyJ1NldHVwX3No
b3VsZF9iZV9zcGVsbGVkX1NldFVwJ10pLAotCi0gICAgICAoJ0NBVENIRVNfQ0FMTElOR19TRVRV
UF9JTl9FTlZJUk9OTUVOVF9XSVRIX1RZUE8nLAotICAgICAgIFtyJ1NldHVwX3Nob3VsZF9iZV9z
cGVsbGVkX1NldFVwJ10pLAotCi0gICAgICAoJ0NBVENIRVNfV1JPTkdfQ0FTRV9JTl9UWVBFRF9U
RVNUX1AnLAotICAgICAgIFtyJ0JhclRlc3QuKndhcyBub3QgZGVjbGFyZWQnXSksCi0KLSAgICAg
ICgnQ0FUQ0hFU19XUk9OR19DQVNFX0lOX1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QJywKLSAg
ICAgICBbcidCYXJUZXN0Lip3YXMgbm90IGRlY2xhcmVkJ10pLAotCi0gICAgICAoJ0NBVENIRVNf
V1JPTkdfQ0FTRV9JTl9JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUCcsCi0gICAgICAgW3In
QmFyVGVzdC4qbm90IGRlY2xhcmVkJ10pLAotCi0gICAgICAoJ0NBVENIRVNfSU5TVEFOVElBVEVf
VFlQRURfVEVTRVRfQ0FTRV9QX1dJVEhfU0FNRV9OQU1FX1BSRUZJWCcsCi0gICAgICAgW3IncmVk
ZWZpbml0aW9uIG9mLipNeS4qRm9vVGVzdCddKSwKLQotICAgICAgKCdTVEFUSUNfQVNTRVJUX1RZ
UEVfRVFfSVNfTk9UX0FfVFlQRScsCi0gICAgICAgW3InU3RhdGljQXNzZXJ0VHlwZUVxLiogZG9l
cyBub3QgbmFtZSBhIHR5cGUnXSksCi0KLSAgICAgICgnU1RBVElDX0FTU0VSVF9UWVBFX0VRX1dP
UktTX0lOX05BTUVTUEFDRScsCi0gICAgICAgW3InU3RhdGljQXNzZXJ0VHlwZUVxLippbnQuKmNv
bnN0IGludCddKSwKLQotICAgICAgKCdTVEFUSUNfQVNTRVJUX1RZUEVfRVFfV09SS1NfSU5fQ0xB
U1MnLAotICAgICAgIFtyJ1N0YXRpY0Fzc2VydFR5cGVFcS4qaW50Lipib29sJ10pLAotCi0gICAg
ICAoJ1NUQVRJQ19BU1NFUlRfVFlQRV9FUV9XT1JLU19JTl9GVU5DVElPTicsCi0gICAgICAgW3In
U3RhdGljQXNzZXJ0VHlwZUVxLipjb25zdCBpbnQuKmludCddKSwKLQotICAgICAgKCdTQU5JVFkn
LAotICAgICAgIE5vbmUpCi0gICAgICBdCi0KLSAgICAjIFRPRE8od2FuQGdvb2dsZS5jb20pOiB2
ZXJpZnkgdGhhdCB0aGUgdGVzdCBzcGVjcyBhcmUgc2F0aXNmaWVkLgotCi0KLWlmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6Ci0gIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9ub190ZXN0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9ub190ZXN0X3VuaXR0ZXN0LmNjCmluZGV4IGFmZTJk
YzBjOTJmZTQzYWU5MzViMjJjZWYzMTc3ZTUxODRiN2ZmYTEuLmQ0Zjg4ZGJmZGZhNjhlNmEwYzQw
YmI5OWZhYzZlNGRiY2NmZjhmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QuY2MKQEAgLTI5LDI2ICsyOSwyNiBAQAog
CiAvLyBUZXN0cyB0aGF0IGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSB0aGF0IGhhcyBubyB0ZXN0IGRl
ZmluZWQgY2FuIHJ1bgogLy8gc3VjY2Vzc2Z1bGx5LgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbikKLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsK
ICAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwogCiAgIC8vIEFuIGFkLWhv
YyBhc3NlcnRpb24gb3V0c2lkZSBvZiBhbGwgdGVzdHMuCiAgIC8vCi0gIC8vIFRoaXMgc2VydmVz
IHR3byBwdXJwb3NlczoKKyAgLy8gVGhpcyBzZXJ2ZXMgdGhyZWUgcHVycG9zZXM6CiAgIC8vCiAg
IC8vIDEuIEl0IHZlcmlmaWVzIHRoYXQgYW4gYWQtaG9jIGFzc2VydGlvbiBjYW4gYmUgZXhlY3V0
ZWQgZXZlbiBpZgogICAvLyAgICBubyB0ZXN0IGlzIGRlZmluZWQuCi0gIC8vIDIuIFdlIGhhZCBh
IGJ1ZyB3aGVyZSB0aGUgWE1MIG91dHB1dCB3b24ndCBiZSBnZW5lcmF0ZWQgaWYgYW4KKyAgLy8g
Mi4gSXQgdmVyaWZpZXMgdGhhdCBhIGZhaWxlZCBhZC1ob2MgYXNzZXJ0aW9uIGNhdXNlcyB0aGUg
dGVzdAorICAvLyAgICBwcm9ncmFtIHRvIGZhaWwuCisgIC8vIDMuIFdlIGhhZCBhIGJ1ZyB3aGVy
ZSB0aGUgWE1MIG91dHB1dCB3b24ndCBiZSBnZW5lcmF0ZWQgaWYgYW4KICAgLy8gICAgYXNzZXJ0
aW9uIGlzIGV4ZWN1dGVkIGJlZm9yZSBSVU5fQUxMX1RFU1RTKCkgaXMgY2FsbGVkLCBldmVuCiAg
IC8vICAgIHRob3VnaCAtLWd0ZXN0X291dHB1dD14bWwgaXMgc3BlY2lmaWVkLiAgVGhpcyBtYWtl
cyBzdXJlIHRoZQogICAvLyAgICBidWcgaXMgZml4ZWQgYW5kIGRvZXNuJ3QgcmVncmVzcy4KLSAg
RVhQRUNUX0VRKDEsIDEpOworICBFWFBFQ1RfRVEoMSwgMik7CiAKLSAgcmV0dXJuIFJVTl9BTExf
VEVTVFMoKTsKKyAgLy8gVGhlIGFib3ZlIEVYUEVDVF9FUSgpIHNob3VsZCBjYXVzZSBSVU5fQUxM
X1RFU1RTKCkgdG8gcmV0dXJuIG5vbi16ZXJvLgorICByZXR1cm4gUlVOX0FMTF9URVNUUygpID8g
MCA6IDE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X291dHB1dF90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRw
dXRfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMTkyMDMwYTIwMjBiZmQ0
MWU5NGM0ZTQ5MTRjYWJhMzhkYjc0ZjJmYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1
dF90ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzI3ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52
IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRp
c3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlRlc3RzIHRoZSB0ZXh0IG91dHB1dCBv
ZiBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrLgotCi1TWU5PUFNJUwotICAgICAgIGd0ZXN0
X291dHB1dF90ZXN0LnB5IC0tZ3Rlc3RfYnVpbGRfZGlyPUJVSUxEL0RJUiAtLWdlbmdvbGRlbgot
ICAgICAgICAgIyB3aGVyZSBCVUlMRC9ESVIgY29udGFpbnMgdGhlIGJ1aWx0IGd0ZXN0X291dHB1
dF90ZXN0XyBmaWxlLgotICAgICAgIGd0ZXN0X291dHB1dF90ZXN0LnB5IC0tZ2VuZ29sZGVuCi0g
ICAgICAgZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkKLSIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHN5
cwotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLQotCi0jIFRoZSBmbGFnIGZvciBnZW5lcmF0aW5n
IHRoZSBnb2xkZW4gZmlsZQotR0VOR09MREVOX0ZMQUcgPSAnLS1nZW5nb2xkZW4nCi1DQVRDSF9F
WENFUFRJT05TX0VOVl9WQVJfTkFNRSA9ICdHVEVTVF9DQVRDSF9FWENFUFRJT05TJwotCi1JU19X
SU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCi0KLWlmIElTX1dJTkRPV1M6Ci0gIEdPTERFTl9OQU1F
ID0gJ2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl93aW4udHh0JwotZWxzZToKLSAgR09MREVOX05B
TUUgPSAnZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQnCi0KLVBST0dSQU1fUEFUSCA9
IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9vdXRwdXRfdGVz
dF8nKQotCi0jIEF0IGxlYXN0IG9uZSBjb21tYW5kIHdlIGV4ZXJjaXNlIG11c3Qgbm90IGhhdmUg
dGhlCi0jIC0tZ3Rlc3RfaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3Rz
IGZsYWcuCi1DT01NQU5EX0xJU1RfVEVTVFMgPSAoe30sIFtQUk9HUkFNX1BBVEgsICctLWd0ZXN0
X2xpc3RfdGVzdHMnXSkKLUNPTU1BTkRfV0lUSF9DT0xPUiA9ICh7fSwgW1BST0dSQU1fUEFUSCwg
Jy0tZ3Rlc3RfY29sb3I9eWVzJ10pCi1DT01NQU5EX1dJVEhfVElNRSA9ICh7fSwgW1BST0dSQU1f
UEFUSCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZ3Rlc3RfcHJpbnRfdGltZScsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICctLWd0ZXN0X2ludGVybmFsX3NraXBfZW52aXJvbm1l
bnRfYW5kX2FkX2hvY190ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICctLWd0ZXN0
X2ZpbHRlcj1GYXRhbEZhaWx1cmVUZXN0Lio6TG9nZ2luZ1Rlc3QuKiddKQotQ09NTUFORF9XSVRI
X0RJU0FCTEVEID0gKAotICAgIHt9LCBbUFJPR1JBTV9QQVRILAotICAgICAgICAgJy0tZ3Rlc3Rf
YWxzb19ydW5fZGlzYWJsZWRfdGVzdHMnLAotICAgICAgICAgJy0tZ3Rlc3RfaW50ZXJuYWxfc2tp
cF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzJywKLSAgICAgICAgICctLWd0ZXN0X2ZpbHRl
cj0qRElTQUJMRURfKiddKQotQ09NTUFORF9XSVRIX1NIQVJESU5HID0gKAotICAgIHsnR1RFU1Rf
U0hBUkRfSU5ERVgnOiAnMScsICdHVEVTVF9UT1RBTF9TSEFSRFMnOiAnMid9LAotICAgIFtQUk9H
UkFNX1BBVEgsCi0gICAgICctLWd0ZXN0X2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2Fk
X2hvY190ZXN0cycsCi0gICAgICctLWd0ZXN0X2ZpbHRlcj1QYXNzaW5nVGVzdC4qJ10pCi0KLUdP
TERFTl9QQVRIID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNlRGlyKCks
IEdPTERFTl9OQU1FKQotCi0KLWRlZiBUb1VuaXhMaW5lRW5kaW5nKHMpOgotICAiIiJDaGFuZ2Vz
IGFsbCBXaW5kb3dzL01hYyBsaW5lIGVuZGluZ3MgaW4gcyB0byBVTklYIGxpbmUgZW5kaW5ncy4i
IiIKLQotICByZXR1cm4gcy5yZXBsYWNlKCdcclxuJywgJ1xuJykucmVwbGFjZSgnXHInLCAnXG4n
KQotCi0KLWRlZiBSZW1vdmVMb2NhdGlvbnModGVzdF9vdXRwdXQpOgotICAiIiJSZW1vdmVzIGFs
bCBmaWxlIGxvY2F0aW9uIGluZm8gZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQu
Ci0KLSAgQXJnczoKLSAgICAgICB0ZXN0X291dHB1dDogIHRoZSBvdXRwdXQgb2YgYSBHb29nbGUg
VGVzdCBwcm9ncmFtLgotCi0gIFJldHVybnM6Ci0gICAgICAgb3V0cHV0IHdpdGggYWxsIGZpbGUg
bG9jYXRpb24gaW5mbyAoaW4gdGhlIGZvcm0gb2YKLSAgICAgICAnRElSRUNUT1JZL0ZJTEVfTkFN
RTpMSU5FX05VTUJFUjogJ29yCi0gICAgICAgJ0RJUkVDVE9SWVxcRklMRV9OQU1FKExJTkVfTlVN
QkVSKTogJykgcmVwbGFjZWQgYnkKLSAgICAgICAnRklMRV9OQU1FOiM6ICcuCi0gICIiIgotCi0g
IHJldHVybiByZS5zdWIocicuKlsvXFxdKC4rKShcOlxkK3xcKFxkK1wpKVw6ICcsIHInXDE6Izog
JywgdGVzdF9vdXRwdXQpCi0KLQotZGVmIFJlbW92ZVN0YWNrVHJhY2VEZXRhaWxzKG91dHB1dCk6
Ci0gICIiIlJlbW92ZXMgYWxsIHN0YWNrIHRyYWNlcyBmcm9tIGEgR29vZ2xlIFRlc3QgcHJvZ3Jh
bSdzIG91dHB1dC4iIiIKLQotICAjICo/IG1lYW5zICJmaW5kIHRoZSBzaG9ydGVzdCBzdHJpbmcg
dGhhdCBtYXRjaGVzIi4KLSAgcmV0dXJuIHJlLnN1YihyJ1N0YWNrIHRyYWNlOigufFxuKSo/XG5c
bicsCi0gICAgICAgICAgICAgICAgJ1N0YWNrIHRyYWNlOiAob21pdHRlZClcblxuJywgb3V0cHV0
KQotCi0KLWRlZiBSZW1vdmVTdGFja1RyYWNlcyhvdXRwdXQpOgotICAiIiJSZW1vdmVzIGFsbCB0
cmFjZXMgb2Ygc3RhY2sgdHJhY2VzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0
LiIiIgotCi0gICMgKj8gbWVhbnMgImZpbmQgdGhlIHNob3J0ZXN0IHN0cmluZyB0aGF0IG1hdGNo
ZXMiLgotICByZXR1cm4gcmUuc3ViKHInU3RhY2sgdHJhY2U6KC58XG4pKj9cblxuJywgJycsIG91
dHB1dCkKLQotCi1kZWYgUmVtb3ZlVGltZShvdXRwdXQpOgotICAiIiJSZW1vdmVzIGFsbCB0aW1l
IGluZm9ybWF0aW9uIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgotCi0g
IHJldHVybiByZS5zdWIocidcKFxkKyBtcycsICcoPyBtcycsIG91dHB1dCkKLQotCi1kZWYgUmVt
b3ZlVHlwZUluZm9EZXRhaWxzKHRlc3Rfb3V0cHV0KToKLSAgIiIiUmVtb3ZlcyBjb21waWxlci1z
cGVjaWZpYyB0eXBlIGluZm8gZnJvbSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LgotCi0g
IEFyZ3M6Ci0gICAgICAgdGVzdF9vdXRwdXQ6ICB0aGUgb3V0cHV0IG9mIGEgR29vZ2xlIFRlc3Qg
cHJvZ3JhbS4KLQotICBSZXR1cm5zOgotICAgICAgIG91dHB1dCB3aXRoIHR5cGUgaW5mb3JtYXRp
b24gbm9ybWFsaXplZCB0byBjYW5vbmljYWwgZm9ybS4KLSAgIiIiCi0KLSAgIyBzb21lIGNvbXBp
bGVycyBvdXRwdXQgdGhlIG5hbWUgb2YgdHlwZSAndW5zaWduZWQgaW50JyBhcyAndW5zaWduZWQn
Ci0gIHJldHVybiByZS5zdWIocid1bnNpZ25lZCBpbnQnLCAndW5zaWduZWQnLCB0ZXN0X291dHB1
dCkKLQotCi1kZWYgUmVtb3ZlVGVzdENvdW50cyhvdXRwdXQpOgotICAiIiJSZW1vdmVzIHRlc3Qg
Y291bnRzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgotCi0gIG91dHB1
dCA9IHJlLnN1YihyJ1xkKyB0ZXN0cz8sIGxpc3RlZCBiZWxvdycsCi0gICAgICAgICAgICAgICAg
ICAnPyB0ZXN0cywgbGlzdGVkIGJlbG93Jywgb3V0cHV0KQotICBvdXRwdXQgPSByZS5zdWIocidc
ZCsgRkFJTEVEIFRFU1RTJywKLSAgICAgICAgICAgICAgICAgICc/IEZBSUxFRCBURVNUUycsIG91
dHB1dCkKLSAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIHRlc3RzPyBmcm9tIFxkKyB0ZXN0IGNhc2Vz
PycsCi0gICAgICAgICAgICAgICAgICAnPyB0ZXN0cyBmcm9tID8gdGVzdCBjYXNlcycsIG91dHB1
dCkKLSAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIHRlc3RzPyBmcm9tIChbYS16QS1aX10pJywKLSAg
ICAgICAgICAgICAgICAgIHInPyB0ZXN0cyBmcm9tIFwxJywgb3V0cHV0KQotICByZXR1cm4gcmUu
c3ViKHInXGQrIHRlc3RzP1wuJywgJz8gdGVzdHMuJywgb3V0cHV0KQotCi0KLWRlZiBSZW1vdmVN
YXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCBwYXR0ZXJuKToKLSAgIiIiUmVtb3ZlcyBvdXRwdXQg
b2Ygc3BlY2lmaWVkIHRlc3RzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0Lgot
Ci0gIFRoaXMgZnVuY3Rpb24gc3RyaXBzIG5vdCBvbmx5IHRoZSBiZWdpbm5pbmcgYW5kIHRoZSBl
bmQgb2YgYSB0ZXN0IGJ1dCBhbHNvCi0gIGFsbCBvdXRwdXQgaW4gYmV0d2Vlbi4KLQotICBBcmdz
OgotICAgIHRlc3Rfb3V0cHV0OiAgICAgICBBIHN0cmluZyBjb250YWluaW5nIHRoZSB0ZXN0IG91
dHB1dC4KLSAgICBwYXR0ZXJuOiAgICAgICAgICAgQSByZWdleCBzdHJpbmcgdGhhdCBtYXRjaGVz
IG5hbWVzIG9mIHRlc3QgY2FzZXMgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMgdG8g
cmVtb3ZlLgotCi0gIFJldHVybnM6Ci0gICAgQ29udGVudHMgb2YgdGVzdF9vdXRwdXQgd2l0aCB0
ZXN0cyB3aG9zZSBuYW1lcyBtYXRjaCBwYXR0ZXJuIHJlbW92ZWQuCi0gICIiIgotCi0gIHRlc3Rf
b3V0cHV0ID0gcmUuc3ViKAotICAgICAgcicuKlxbIFJVTiAgICAgIFxdIC4qJXMoLnxcbikqP1xb
KCAgRkFJTEVEICB8ICAgICAgIE9LIClcXSAuKiVzLipcbicgJSAoCi0gICAgICAgICAgcGF0dGVy
biwgcGF0dGVybiksCi0gICAgICAnJywKLSAgICAgIHRlc3Rfb3V0cHV0KQotICByZXR1cm4gcmUu
c3ViKHInLiolcy4qXG4nICUgcGF0dGVybiwgJycsIHRlc3Rfb3V0cHV0KQotCi0KLWRlZiBOb3Jt
YWxpemVPdXRwdXQob3V0cHV0KToKLSAgIiIiTm9ybWFsaXplcyBvdXRwdXQgKHRoZSBvdXRwdXQg
b2YgZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmV4ZSkuIiIiCi0KLSAgb3V0cHV0ID0gVG9Vbml4TGluZUVu
ZGluZyhvdXRwdXQpCi0gIG91dHB1dCA9IFJlbW92ZUxvY2F0aW9ucyhvdXRwdXQpCi0gIG91dHB1
dCA9IFJlbW92ZVN0YWNrVHJhY2VEZXRhaWxzKG91dHB1dCkKLSAgb3V0cHV0ID0gUmVtb3ZlVGlt
ZShvdXRwdXQpCi0gIHJldHVybiBvdXRwdXQKLQotCi1kZWYgR2V0U2hlbGxDb21tYW5kT3V0cHV0
KGVudl9jbWQpOgotICAiIiJSdW5zIGEgY29tbWFuZCBpbiBhIHN1Yi1wcm9jZXNzLCBhbmQgcmV0
dXJucyBpdHMgb3V0cHV0IGluIGEgc3RyaW5nLgotCi0gIEFyZ3M6Ci0gICAgZW52X2NtZDogVGhl
IHNoZWxsIGNvbW1hbmQuIEEgMi10dXBsZSB3aGVyZSBlbGVtZW50IDAgaXMgYSBkaWN0IG9mIGV4
dHJhCi0gICAgICAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCwgYW5kIGVsZW1l
bnQgMSBpcyBhIHN0cmluZyB3aXRoCi0gICAgICAgICAgICAgdGhlIGNvbW1hbmQgYW5kIGFueSBm
bGFncy4KLQotICBSZXR1cm5zOgotICAgIEEgc3RyaW5nIHdpdGggdGhlIGNvbW1hbmQncyBjb21i
aW5lZCBzdGFuZGFyZCBhbmQgZGlhZ25vc3RpYyBvdXRwdXQuCi0gICIiIgotCi0gICMgU3Bhd25z
IGNtZCBpbiBhIHN1Yi1wcm9jZXNzLCBhbmQgZ2V0cyBpdHMgc3RhbmRhcmQgSS9PIGZpbGUgb2Jq
ZWN0cy4KLSAgIyBTZXQgYW5kIHNhdmUgdGhlIGVudmlyb25tZW50IHByb3Blcmx5LgotICBlbnZp
cm9uID0gb3MuZW52aXJvbi5jb3B5KCkKLSAgZW52aXJvbi51cGRhdGUoZW52X2NtZFswXSkKLSAg
cCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhlbnZfY21kWzFdLCBlbnY9ZW52aXJvbikK
LQotICByZXR1cm4gcC5vdXRwdXQKLQotCi1kZWYgR2V0Q29tbWFuZE91dHB1dChlbnZfY21kKToK
LSAgIiIiUnVucyBhIGNvbW1hbmQgYW5kIHJldHVybnMgaXRzIG91dHB1dCB3aXRoIGFsbCBmaWxl
IGxvY2F0aW9uCi0gIGluZm8gc3RyaXBwZWQgb2ZmLgotCi0gIEFyZ3M6Ci0gICAgZW52X2NtZDog
IFRoZSBzaGVsbCBjb21tYW5kLiBBIDItdHVwbGUgd2hlcmUgZWxlbWVudCAwIGlzIGEgZGljdCBv
ZiBleHRyYQotICAgICAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0LCBhbmQg
ZWxlbWVudCAxIGlzIGEgc3RyaW5nIHdpdGgKLSAgICAgICAgICAgICAgdGhlIGNvbW1hbmQgYW5k
IGFueSBmbGFncy4KLSAgIiIiCi0KLSAgIyBEaXNhYmxlcyBleGNlcHRpb24gcG9wLXVwcyBvbiBX
aW5kb3dzLgotICBlbnZpcm9uLCBjbWRsaW5lID0gZW52X2NtZAotICBlbnZpcm9uID0gZGljdChl
bnZpcm9uKSAgIyBFbnN1cmVzIHdlIGFyZSBtb2RpZnlpbmcgYSBjb3B5LgotICBlbnZpcm9uW0NB
VENIX0VYQ0VQVElPTlNfRU5WX1ZBUl9OQU1FXSA9ICcxJwotICByZXR1cm4gTm9ybWFsaXplT3V0
cHV0KEdldFNoZWxsQ29tbWFuZE91dHB1dCgoZW52aXJvbiwgY21kbGluZSkpKQotCi0KLWRlZiBH
ZXRPdXRwdXRPZkFsbENvbW1hbmRzKCk6Ci0gICIiIlJldHVybnMgY29uY2F0ZW5hdGVkIG91dHB1
dCBmcm9tIHNldmVyYWwgcmVwcmVzZW50YXRpdmUgY29tbWFuZHMuIiIiCi0KLSAgcmV0dXJuIChH
ZXRDb21tYW5kT3V0cHV0KENPTU1BTkRfV0lUSF9DT0xPUikgKwotICAgICAgICAgIEdldENvbW1h
bmRPdXRwdXQoQ09NTUFORF9XSVRIX1RJTUUpICsKLSAgICAgICAgICBHZXRDb21tYW5kT3V0cHV0
KENPTU1BTkRfV0lUSF9ESVNBQkxFRCkgKwotICAgICAgICAgIEdldENvbW1hbmRPdXRwdXQoQ09N
TUFORF9XSVRIX1NIQVJESU5HKSkKLQotCi10ZXN0X2xpc3QgPSBHZXRTaGVsbENvbW1hbmRPdXRw
dXQoQ09NTUFORF9MSVNUX1RFU1RTKQotU1VQUE9SVFNfREVBVEhfVEVTVFMgPSAnRGVhdGhUZXN0
JyBpbiB0ZXN0X2xpc3QKLVNVUFBPUlRTX1RZUEVEX1RFU1RTID0gJ1R5cGVkVGVzdCcgaW4gdGVz
dF9saXN0Ci1TVVBQT1JUU19USFJFQURTID0gJ0V4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3Qn
IGluIHRlc3RfbGlzdAotU1VQUE9SVFNfU1RBQ0tfVFJBQ0VTID0gRmFsc2UKLQotQ0FOX0dFTkVS
QVRFX0dPTERFTl9GSUxFID0gKFNVUFBPUlRTX0RFQVRIX1RFU1RTIGFuZAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNVUFBPUlRTX1RZUEVEX1RFU1RTIGFuZAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNVUFBPUlRTX1RIUkVBRFMpCi0KLQotY2xhc3MgR1Rlc3RPdXRwdXRUZXN0
KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgotICBkZWYgUmVtb3ZlVW5zdXBwb3J0ZWRUZXN0
cyhzZWxmLCB0ZXN0X291dHB1dCk6Ci0gICAgaWYgbm90IFNVUFBPUlRTX0RFQVRIX1RFU1RTOgot
ICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCAnRGVh
dGhUZXN0JykKLSAgICBpZiBub3QgU1VQUE9SVFNfVFlQRURfVEVTVFM6Ci0gICAgICB0ZXN0X291
dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdUeXBlZFRlc3QnKQotICAg
ICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCAnVHlwZWRE
ZWF0aFRlc3QnKQotICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rf
b3V0cHV0LCAnVHlwZVBhcmFtRGVhdGhUZXN0JykKLSAgICBpZiBub3QgU1VQUE9SVFNfVEhSRUFE
UzoKLSAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRXhwZWN0RmFpbHVyZVdp
dGhUaHJlYWRzVGVzdCcpCi0gICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHMo
dGVzdF9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Nj
b3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdCcpCi0gICAgICB0ZXN0X291dHB1dCA9
IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ1dvcmtzQ29uY3VycmVudGx5JykKLSAgICBpZiBub3QgU1VQUE9S
VFNfU1RBQ0tfVFJBQ0VTOgotICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVTdGFja1RyYWNlcyh0
ZXN0X291dHB1dCkKLQotICAgIHJldHVybiB0ZXN0X291dHB1dAotCi0gIGRlZiB0ZXN0T3V0cHV0
KHNlbGYpOgotICAgIG91dHB1dCA9IEdldE91dHB1dE9mQWxsQ29tbWFuZHMoKQotCi0gICAgZ29s
ZGVuX2ZpbGUgPSBvcGVuKEdPTERFTl9QQVRILCAncmInKQotICAgICMgQSBtaXMtY29uZmlndXJl
ZCBzb3VyY2UgY29udHJvbCBzeXN0ZW0gY2FuIGNhdXNlIFxyIGFwcGVhciBpbiBFT0wKLSAgICAj
IHNlcXVlbmNlcyB3aGVuIHdlIHJlYWQgdGhlIGdvbGRlbiBmaWxlIGlycmVzcGVjdGl2ZSBvZiBh
biBvcGVyYXRpbmcKLSAgICAjIHN5c3RlbSB1c2VkLiBUaGVyZWZvcmUsIHdlIG5lZWQgdG8gc3Ry
aXAgdGhvc2UgXHIncyBmcm9tIG5ld2xpbmVzCi0gICAgIyB1bmNvbmRpdGlvbmFsbHkuCi0gICAg
Z29sZGVuID0gVG9Vbml4TGluZUVuZGluZyhnb2xkZW5fZmlsZS5yZWFkKCkpCi0gICAgZ29sZGVu
X2ZpbGUuY2xvc2UoKQotCi0gICAgIyBXZSB3YW50IHRoZSB0ZXN0IHRvIHBhc3MgcmVnYXJkbGVz
cyBvZiBjZXJ0YWluIGZlYXR1cmVzIGJlaW5nCi0gICAgIyBzdXBwb3J0ZWQgb3Igbm90LgotCi0g
ICAgIyBXZSBzdGlsbCBoYXZlIHRvIHJlbW92ZSB0eXBlIG5hbWUgc3BlY2lmaWNzIGluIGFsbCBj
YXNlcy4KLSAgICBub3JtYWxpemVkX2FjdHVhbCA9IFJlbW92ZVR5cGVJbmZvRGV0YWlscyhvdXRw
dXQpCi0gICAgbm9ybWFsaXplZF9nb2xkZW4gPSBSZW1vdmVUeXBlSW5mb0RldGFpbHMoZ29sZGVu
KQotCi0gICAgaWYgQ0FOX0dFTkVSQVRFX0dPTERFTl9GSUxFOgotICAgICAgc2VsZi5hc3NlcnRF
cXVhbChub3JtYWxpemVkX2dvbGRlbiwgbm9ybWFsaXplZF9hY3R1YWwpCi0gICAgZWxzZToKLSAg
ICAgIG5vcm1hbGl6ZWRfYWN0dWFsID0gUmVtb3ZlVGVzdENvdW50cyhub3JtYWxpemVkX2FjdHVh
bCkKLSAgICAgIG5vcm1hbGl6ZWRfZ29sZGVuID0gUmVtb3ZlVGVzdENvdW50cyhzZWxmLlJlbW92
ZVVuc3VwcG9ydGVkVGVzdHMoCi0gICAgICAgICAgbm9ybWFsaXplZF9nb2xkZW4pKQotCi0gICAg
ICAjIFRoaXMgY29kZSBpcyB2ZXJ5IGhhbmR5IHdoZW4gZGVidWdnaW5nIGdvbGRlbiBmaWxlIGRp
ZmZlcmVuY2VzOgotICAgICAgaWYgb3MuZ2V0ZW52KCdERUJVR19HVEVTVF9PVVRQVVRfVEVTVCcp
OgotICAgICAgICBvcGVuKG9zLnBhdGguam9pbigKLSAgICAgICAgICAgIGd0ZXN0X3Rlc3RfdXRp
bHMuR2V0U291cmNlRGlyKCksCi0gICAgICAgICAgICAnX2d0ZXN0X291dHB1dF90ZXN0X25vcm1h
bGl6ZWRfYWN0dWFsLnR4dCcpLCAnd2InKS53cml0ZSgKLSAgICAgICAgICAgICAgICBub3JtYWxp
emVkX2FjdHVhbCkKLSAgICAgICAgb3Blbihvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICBndGVz
dF90ZXN0X3V0aWxzLkdldFNvdXJjZURpcigpLAotICAgICAgICAgICAgJ19ndGVzdF9vdXRwdXRf
dGVzdF9ub3JtYWxpemVkX2dvbGRlbi50eHQnKSwgJ3diJykud3JpdGUoCi0gICAgICAgICAgICAg
ICAgbm9ybWFsaXplZF9nb2xkZW4pCi0KLSAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWFsaXpl
ZF9nb2xkZW4sIG5vcm1hbGl6ZWRfYWN0dWFsKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5f
Xyc6Ci0gIGlmIHN5cy5hcmd2WzE6XSA9PSBbR0VOR09MREVOX0ZMQUddOgotICAgIGlmIENBTl9H
RU5FUkFURV9HT0xERU5fRklMRToKLSAgICAgIG91dHB1dCA9IEdldE91dHB1dE9mQWxsQ29tbWFu
ZHMoKQotICAgICAgZ29sZGVuX2ZpbGUgPSBvcGVuKEdPTERFTl9QQVRILCAnd2InKQotICAgICAg
Z29sZGVuX2ZpbGUud3JpdGUob3V0cHV0KQotICAgICAgZ29sZGVuX2ZpbGUuY2xvc2UoKQotICAg
IGVsc2U6Ci0gICAgICBtZXNzYWdlID0gKAotICAgICAgICAgICIiIlVuYWJsZSB0byB3cml0ZSBh
IGdvbGRlbiBmaWxlIHdoZW4gY29tcGlsZWQgaW4gYW4gZW52aXJvbm1lbnQKLXRoYXQgZG9lcyBu
b3Qgc3VwcG9ydCBhbGwgdGhlIHJlcXVpcmVkIGZlYXR1cmVzIChkZWF0aCB0ZXN0cyIiIikKLSAg
ICAgIGlmIElTX1dJTkRPV1M6Ci0gICAgICAgIG1lc3NhZ2UgKz0gKAotICAgICAgICAgICAgIiIi
XG5hbmQgdHlwZWQgdGVzdHMpLiBQbGVhc2UgY2hlY2sgdGhhdCB5b3UgYXJlIHVzaW5nIFZDKysg
OC4wIFNQMQotb3IgaGlnaGVyIGFzIHlvdXIgY29tcGlsZXIuIiIiKQotICAgICAgZWxzZToKLSAg
ICAgICAgbWVzc2FnZSArPSAiIiJcbnR5cGVkIHRlc3RzLCBhbmQgdGhyZWFkcykuICBQbGVhc2Ug
Z2VuZXJhdGUgdGhlCi1nb2xkZW4gZmlsZSB1c2luZyBhIGJpbmFyeSBidWlsdCB3aXRoIHRob3Nl
IGZlYXR1cmVzIGVuYWJsZWQuIiIiCi0KLSAgICAgIHN5cy5zdGRlcnIud3JpdGUobWVzc2FnZSkK
LSAgICAgIHN5cy5leGl0KDEpCi0gIGVsc2U6Ci0gICAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF8u
Y2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3M2U4ZTkzZWIwNTlmNWRiNjkzN2M4
YzdkNzc3NjZmODc4MDUyNzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF8u
Y2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMTM1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1LCBH
b29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
Ly8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBIHVuaXQgdGVzdCBmb3IgR29vZ2xlIFRl
c3QgaXRzZWxmLiAgVGhpcyB2ZXJpZmllcyB0aGF0IHRoZSBiYXNpYwotLy8gY29uc3RydWN0cyBv
ZiBHb29nbGUgVGVzdCB3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+Ci0KLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBw
YXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJl
Zm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwg
YmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2Vy
IGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8g
aGlzIGNvZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAic3Jj
L2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi0j
aW5jbHVkZSA8c3RkbGliLmg+Ci0KLSNpZiBHVEVTVF9JU19USFJFQURTQUZFCi11c2luZyB0ZXN0
aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjsKLXVzaW5nIHRlc3Rpbmc6OlRl
c3RQYXJ0UmVzdWx0QXJyYXk7Ci0KLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpOb3RpZmljYXRp
b247Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkV2l0aFBhcmFtOwotI2VuZGlmCi0K
LW5hbWVzcGFjZSBwb3NpeCA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OwotdXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OlN0cmluZzsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpzY29wZWRf
cHRyOwotCi0vLyBUZXN0cyBjYXRjaGluZyBmYXRhbCBmYWlsdXJlcy4KLQotLy8gQSBzdWJyb3V0
aW5lIHVzZWQgYnkgdGhlIGZvbGxvd2luZyB0ZXN0Lgotdm9pZCBUZXN0RXExKGludCB4KSB7Ci0g
IEFTU0VSVF9FUSgxLCB4KTsKLX0KLQotLy8gVGhpcyBmdW5jdGlvbiBjYWxscyBhIHRlc3Qgc3Vi
cm91dGluZSwgY2F0Y2hlcyB0aGUgZmF0YWwgZmFpbHVyZSBpdAotLy8gZ2VuZXJhdGVzLCBhbmQg
dGhlbiByZXR1cm5zIGVhcmx5Lgotdm9pZCBUcnlUZXN0U3Vicm91dGluZSgpIHsKLSAgLy8gQ2Fs
bHMgYSBzdWJyb3VudGluZSB0aGF0IHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUuCi0gIFRlc3RFcTEo
Mik7Ci0KLSAgLy8gQ2F0Y2hlcyB0aGUgZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSB0ZXN0
LgotICAvLwotICAvLyBUaGUgdGVzdGluZzo6VGVzdDo6IHByZWZpeCBpcyBuZWNlc3Nhcnkgd2hl
biBjYWxsaW5nCi0gIC8vIEhhc0ZhdGFsRmFpbHVyZSgpIG91dHNpZGUgb2YgYSBURVNULCBURVNU
X0YsIG9yIHRlc3QgZml4dHVyZS4KLSAgaWYgKHRlc3Rpbmc6OlRlc3Q6Okhhc0ZhdGFsRmFpbHVy
ZSgpKSByZXR1cm47Ci0KLSAgLy8gSWYgd2UgZ2V0IGhlcmUsIHNvbWV0aGluZyBpcyB3cm9uZy4K
LSAgRkFJTCgpIDw8ICJUaGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkLiI7Ci19Ci0KLVRFU1Qo
UGFzc2luZ1Rlc3QsIFBhc3NpbmdUZXN0MSkgewotfQotCi1URVNUKFBhc3NpbmdUZXN0LCBQYXNz
aW5nVGVzdDIpIHsKLX0KLQotLy8gVGVzdHMgY2F0Y2hpbmcgYSBmYXRhbCBmYWlsdXJlIGluIGEg
c3Vicm91dGluZS4KLVRFU1QoRmF0YWxGYWlsdXJlVGVzdCwgRmF0YWxGYWlsdXJlSW5TdWJyb3V0
aW5lKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAx
KVxuIik7Ci0KLSAgVHJ5VGVzdFN1YnJvdXRpbmUoKTsKLX0KLQotLy8gVGVzdHMgY2F0Y2hpbmcg
YSBmYXRhbCBmYWlsdXJlIGluIGEgbmVzdGVkIHN1YnJvdXRpbmUuCi1URVNUKEZhdGFsRmFpbHVy
ZVRlc3QsIEZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZSkgewotICBwcmludGYoIihleHBl
Y3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSlcbiIpOwotCi0gIC8vIENhbGxzIGEg
c3Vicm91bnRpbmUgdGhhdCB5aWVsZHMgYSBmYXRhbCBmYWlsdXJlLgotICBUcnlUZXN0U3Vicm91
dGluZSgpOwotCi0gIC8vIENhdGNoZXMgdGhlIGZhdGFsIGZhaWx1cmUgYW5kIGFib3J0cyB0aGUg
dGVzdC4KLSAgLy8KLSAgLy8gV2hlbiBjYWxsaW5nIEhhc0ZhdGFsRmFpbHVyZSgpIGluc2lkZSBh
IFRFU1QsIFRFU1RfRiwgb3IgdGVzdAotICAvLyBmaXh0dXJlLCB0aGUgdGVzdGluZzo6VGVzdDo6
IHByZWZpeCBpcyBub3QgbmVlZGVkLgotICBpZiAoSGFzRmF0YWxGYWlsdXJlKCkpIHJldHVybjsK
LQotICAvLyBJZiB3ZSBnZXQgaGVyZSwgc29tZXRoaW5nIGlzIHdyb25nLgotICBGQUlMKCkgPDwg
IlRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQuIjsKLX0KLQotLy8gVGVzdHMgSGFzRmF0YWxG
YWlsdXJlKCkgYWZ0ZXIgYSBmYWlsZWQgRVhQRUNUIGNoZWNrLgotVEVTVChGYXRhbEZhaWx1cmVU
ZXN0LCBOb25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5n
IGEgZmFpbHVyZSBvbiBmYWxzZSlcbiIpOwotICBFWFBFQ1RfVFJVRShmYWxzZSk7ICAvLyBHZW5l
cmF0ZXMgYSBub25mYXRhbCBmYWlsdXJlCi0gIEFTU0VSVF9GQUxTRShIYXNGYXRhbEZhaWx1cmUo
KSk7ICAvLyBUaGlzIHNob3VsZCBzdWNjZWVkLgotfQotCi0vLyBUZXN0cyBpbnRlcmxlYXZpbmcg
dXNlciBsb2dnaW5nIGFuZCBHb29nbGUgVGVzdCBhc3NlcnRpb25zLgotVEVTVChMb2dnaW5nVGVz
dCwgSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMpIHsKLSAgc3RhdGljIGNvbnN0IGlu
dCBhWzRdID0gewotICAgIDMsIDksIDIsIDYKLSAgfTsKLQotICBwcmludGYoIihleHBlY3Rpbmcg
MiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKVxuIik7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwg
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoYSkvc2l6ZW9mKCphKSk7IGkrKykgewotICAgIHByaW50
ZigiaSA9PSAlZFxuIiwgaSk7Ci0gICAgRVhQRUNUX0dFKDMsIGFbaV0pOwotICB9Ci19Ci0KLS8v
IFRlc3RzIHRoZSBTQ09QRURfVFJBQ0UgbWFjcm8uCi0KLS8vIEEgaGVscGVyIGZ1bmN0aW9uIGZv
ciB0ZXN0aW5nIFNDT1BFRF9UUkFDRS4KLXZvaWQgU3ViV2l0aG91dFRyYWNlKGludCBuKSB7Ci0g
IEVYUEVDVF9FUSgxLCBuKTsKLSAgQVNTRVJUX0VRKDIsIG4pOwotfQotCi0vLyBBbm90aGVyIGhl
bHBlciBmdW5jdGlvbiBmb3IgdGVzdGluZyBTQ09QRURfVFJBQ0UuCi12b2lkIFN1YldpdGhUcmFj
ZShpbnQgbikgewotICBTQ09QRURfVFJBQ0UodGVzdGluZzo6TWVzc2FnZSgpIDw8ICJuID0gIiA8
PCBuKTsKLQotICBTdWJXaXRob3V0VHJhY2Uobik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgU0NPUEVE
X1RSQUNFKCkgb2JleXMgbGV4aWNhbCBzY29wZXMuCi1URVNUKFNDT1BFRF9UUkFDRVRlc3QsIE9i
ZXlzU2NvcGVzKSB7Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKLQotICAvLyBU
aGVyZSBzaG91bGQgYmUgbm8gdHJhY2UgYmVmb3JlIFNDT1BFRF9UUkFDRSgpIGlzIGludm9rZWQu
Ci0gIEFERF9GQUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3Vs
ZG4ndCBoYXZlIGEgdHJhY2UuIjsKLQotICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJFeHBlY3RlZCB0
cmFjZSIpOwotICAgIC8vIEFmdGVyIFNDT1BFRF9UUkFDRSgpLCBhIGZhaWx1cmUgaW4gdGhlIGN1
cnJlbnQgc2NvcGUgc2hvdWxkIGNvbnRhaW4KLSAgICAvLyB0aGUgdHJhY2UuCi0gICAgQUREX0ZB
SUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGhhdmUgYSB0
cmFjZS4iOwotICB9Ci0KLSAgLy8gT25jZSB0aGUgY29udHJvbCBsZWF2ZXMgdGhlIHNjb3BlIG9m
IHRoZSBTQ09QRURfVFJBQ0UoKSwgdGhlcmUKLSAgLy8gc2hvdWxkIGJlIG5vIHRyYWNlIGFnYWlu
LgotICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91
bGRuJ3QgaGF2ZSBhIHRyYWNlLiI7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFIHdv
cmtzIGluc2lkZSBhIGxvb3AuCi1URVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtzSW5Mb29wKSB7
Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKLQotICBmb3IgKGludCBpID0gMTsg
aSA8PSAyOyBpKyspIHsKLSAgICBTQ09QRURfVFJBQ0UodGVzdGluZzo6TWVzc2FnZSgpIDw8ICJp
ID0gIiA8PCBpKTsKLQotICAgIFN1YldpdGhvdXRUcmFjZShpKTsKLSAgfQotfQotCi0vLyBUZXN0
cyB0aGF0IFNDT1BFRF9UUkFDRSB3b3JrcyBpbiBhIHN1YnJvdXRpbmUuCi1URVNUKFNDT1BFRF9U
UkFDRVRlc3QsIFdvcmtzSW5TdWJyb3V0aW5lKSB7Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZh
aWwpXG4iKTsKLQotICBTdWJXaXRoVHJhY2UoMSk7Ci0gIFN1YldpdGhUcmFjZSgyKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0UgY2FuIGJlIG5lc3RlZC4KLVRFU1QoU0NPUEVEX1RS
QUNFVGVzdCwgQ2FuQmVOZXN0ZWQpIHsKLSAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIp
OwotCi0gIFNDT1BFRF9UUkFDRSgiIik7ICAvLyBBIHRyYWNlIHdpdGhvdXQgYSBtZXNzYWdlLgot
Ci0gIFN1YldpdGhUcmFjZSgyKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBtdWx0aXBsZSBTQ09QRURf
VFJBQ0VzIGNhbiBiZSB1c2VkIGluIHRoZSBzYW1lIHNjb3BlLgotVEVTVChTQ09QRURfVFJBQ0VU
ZXN0LCBDYW5CZVJlcGVhdGVkKSB7Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsK
LQotICBTQ09QRURfVFJBQ0UoIkEiKTsKLSAgQUREX0ZBSUxVUkUoKQotICAgICAgPDwgIlRoaXMg
ZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEuIjsK
LQotICBTQ09QRURfVFJBQ0UoIkIiKTsKLSAgQUREX0ZBSUxVUkUoKQotICAgICAgPDwgIlRoaXMg
ZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEgYW5k
IEIuIjsKLQotICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJDIik7Ci0gICAgQUREX0ZBSUxVUkUoKSA8
PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gIgotICAgICAg
ICAgICAgICAgICAgPDwgInRyYWNlIHBvaW50IEEsIEIsIGFuZCBDLiI7Ci0gIH0KLQotICBTQ09Q
RURfVFJBQ0UoIkQiKTsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVj
dGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gIgotICAgICAgICAgICAgICAgIDw8ICJ0cmFjZSBwb2lu
dCBBLCBCLCBhbmQgRC4iOwotfQotCi0jaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQotLy8gVGVzdHMg
dGhhdCBTQ09QRURfVFJBQ0UoKXMgY2FuIGJlIHVzZWQgY29uY3VycmVudGx5IGZyb20gbXVsdGlw
bGUKLS8vIHRocmVhZHMuICBOYW1lbHksIGFuIGFzc2VydGlvbiBzaG91bGQgYmUgYWZmZWN0ZWQg
YnkKLS8vIFNDT1BFRF9UUkFDRSgpcyBpbiBpdHMgb3duIHRocmVhZCBvbmx5LgotCi0vLyBIZXJl
J3MgdGhlIHNlcXVlbmNlIG9mIGFjdGlvbnMgdGhhdCBoYXBwZW4gaW4gdGhlIHRlc3Q6Ci0vLwot
Ly8gICBUaHJlYWQgQSAobWFpbikgICAgICAgICAgICAgICAgfCBUaHJlYWQgQiAoc3Bhd25lZCkK
LS8vICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PXw9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLy8gICBzcGF3bnMgdGhyZWFkIEIgICAgICAgICAgICAgICAgfAotLy8g
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyAgIHdhaXRzIGZvciBuMSAgICAgICAgICAgICAgICAgICB8IFNDT1BFRF9U
UkFDRSgiVHJhY2UgQiIpOwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBn
ZW5lcmF0ZXMgZmFpbHVyZSAjMQotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCBub3RpZmllcyBuMQotLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgIFNDT1BFRF9UUkFDRSgiVHJhY2UgQSIp
OyAgICAgICB8IHdhaXRzIGZvciBuMgotLy8gICBnZW5lcmF0ZXMgZmFpbHVyZSAjMiAgICAgICAg
ICAgfAotLy8gICBub3RpZmllcyBuMiAgICAgICAgICAgICAgICAgICAgfAotLy8gICAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyAgIHdhaXRzIGZvciBuMyAgICAgICAgICAgICAgICAgICB8IGdlbmVyYXRlcyBmYWlsdXJl
ICMzCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRyYWNlIEIgZGllcwot
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnZW5lcmF0ZXMgZmFpbHVyZSAj
NAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBub3RpZmllcyBuMwotLy8g
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyAgIGdlbmVyYXRlcyBmYWlsdXJlICM1ICAgICAgICAgICB8IGZpbmlzaGVz
Ci0vLyAgIHRyYWNlIEEgZGllcyAgICAgICAgICAgICAgICAgICB8Ci0vLyAgIGdlbmVyYXRlcyBm
YWlsdXJlICM2ICAgICAgICAgICB8Ci0vLyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vICAgd2FpdHMgZm9yIHRocmVh
ZCBCIHRvIGZpbmlzaCAgIHwKLQotc3RydWN0IENoZWNrUG9pbnRzIHsKLSAgTm90aWZpY2F0aW9u
IG4xOwotICBOb3RpZmljYXRpb24gbjI7Ci0gIE5vdGlmaWNhdGlvbiBuMzsKLX07Ci0KLXN0YXRp
YyB2b2lkIFRocmVhZFdpdGhTY29wZWRUcmFjZShDaGVja1BvaW50cyogY2hlY2tfcG9pbnRzKSB7
Ci0gIHsKLSAgICBTQ09QRURfVFJBQ0UoIlRyYWNlIEIiKTsKLSAgICBBRERfRkFJTFVSRSgpCi0g
ICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxIChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBC
IGFsaXZlKS4iOwotICAgIGNoZWNrX3BvaW50cy0+bjEuTm90aWZ5KCk7Ci0gICAgY2hlY2tfcG9p
bnRzLT5uMi5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7Ci0KLSAgICBBRERfRkFJTFVSRSgpCi0gICAg
ICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzIChpbiB0aHJlYWQgQiwgdHJhY2UgQSAmIEIgYm90
aCBhbGl2ZSkuIjsKLSAgfSAgLy8gVHJhY2UgQiBkaWVzIGhlcmUuCi0gIEFERF9GQUlMVVJFKCkK
LSAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM0IChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBB
IGFsaXZlKS4iOwotICBjaGVja19wb2ludHMtPm4zLk5vdGlmeSgpOwotfQotCi1URVNUKFNDT1BF
RF9UUkFDRVRlc3QsIFdvcmtzQ29uY3VycmVudGx5KSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyA2
IGZhaWx1cmVzKVxuIik7Ci0KLSAgQ2hlY2tQb2ludHMgY2hlY2tfcG9pbnRzOwotICBUaHJlYWRX
aXRoUGFyYW08Q2hlY2tQb2ludHMqPiB0aHJlYWQoJlRocmVhZFdpdGhTY29wZWRUcmFjZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaGVja19wb2ludHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgY2hlY2tfcG9pbnRz
Lm4xLldhaXRGb3JOb3RpZmljYXRpb24oKTsKLQotICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJUcmFj
ZSBBIik7Ci0gICAgQUREX0ZBSUxVUkUoKQotICAgICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAj
MiAoaW4gdGhyZWFkIEEsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLiI7Ci0gICAgY2hlY2tfcG9p
bnRzLm4yLk5vdGlmeSgpOwotICAgIGNoZWNrX3BvaW50cy5uMy5XYWl0Rm9yTm90aWZpY2F0aW9u
KCk7Ci0KLSAgICBBRERfRkFJTFVSRSgpCi0gICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM1
IChpbiB0aHJlYWQgQSwgb25seSB0cmFjZSBBIGFsaXZlKS4iOwotICB9ICAvLyBUcmFjZSBBIGRp
ZXMgaGVyZS4KLSAgQUREX0ZBSUxVUkUoKQotICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzYg
KGluIHRocmVhZCBBLCBubyB0cmFjZSBhbGl2ZSkuIjsKLSAgdGhyZWFkLkpvaW4oKTsKLX0KLSNl
bmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFEU0FGRQotCi1URVNUKERpc2FibGVkVGVzdHNXYXJuaW5n
VGVzdCwKLSAgICAgRElTQUJMRURfQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnU3VwcHJlc3Nlc1dh
cm5pbmcpIHsKLSAgLy8gVGhpcyB0ZXN0IGJvZHkgaXMgaW50ZW50aW9uYWxseSBlbXB0eS4gIEl0
cyBzb2xlIHB1cnBvc2UgaXMgZm9yCi0gIC8vIHZlcmlmeWluZyB0aGF0IHRoZSAtLWd0ZXN0X2Fs
c29fcnVuX2Rpc2FibGVkX3Rlc3RzIGZsYWcKLSAgLy8gc3VwcHJlc3NlcyB0aGUgIllPVSBIQVZF
IDEyIERJU0FCTEVEIFRFU1RTIiB3YXJuaW5nIGF0IHRoZSBlbmQgb2YKLSAgLy8gdGhlIHRlc3Qg
b3V0cHV0LgotfQotCi0vLyBUZXN0cyB1c2luZyBhc3NlcnRpb25zIG91dHNpZGUgb2YgVEVTVCBh
bmQgVEVTVF9GLgotLy8KLS8vIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyB0d28gZmFpbHVyZXMgaW50
ZW50aW9uYWxseS4KLXZvaWQgQWRIb2NUZXN0KCkgewotICBwcmludGYoIlRoZSBub24tdGVzdCBw
YXJ0IG9mIHRoZSBjb2RlIGlzIGV4cGVjdGVkIHRvIGhhdmUgMiBmYWlsdXJlcy5cblxuIik7Ci0g
IEVYUEVDVF9UUlVFKGZhbHNlKTsKLSAgRVhQRUNUX0VRKDIsIDMpOwotfQotCi0vLyBSdW5zIGFs
bCBURVNUcywgYWxsIFRFU1RfRnMsIGFuZCB0aGUgYWQgaG9jIHRlc3QuCi1pbnQgUnVuQWxsVGVz
dHMoKSB7Ci0gIEFkSG9jVGVzdCgpOwotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQotCi0v
LyBUZXN0cyBub24tZmF0YWwgZmFpbHVyZXMgaW4gdGhlIGZpeHR1cmUgY29uc3RydWN0b3IuCi1j
bGFzcyBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25z
dHJ1Y3RvclRlc3QoKSB7Ci0gICAgcHJpbnRmKCIoZXhwZWN0aW5nIDUgZmFpbHVyZXMpXG4iKTsK
LSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBm
aXh0dXJlIGMndG9yLiI7Ci0gIH0KLQotICB+Tm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3Ry
dWN0b3JUZXN0KCkgewotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzUs
IGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBTZXRV
cCgpIHsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBTZXRV
cCgpLiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgQUREX0ZBSUxV
UkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gVGVhckRvd24uIjsKLSAgfQotfTsKLQot
VEVTVF9GKE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCwgRmFpbHVyZUlu
Q29uc3RydWN0b3IpIHsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMywg
aW4gdGhlIHRlc3QgYm9keS4iOwotfQotCi0vLyBUZXN0cyBmYXRhbCBmYWlsdXJlcyBpbiB0aGUg
Zml4dHVyZSBjb25zdHJ1Y3Rvci4KLWNsYXNzIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVj
dG9yVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIEZhdGFsRmFp
bHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCgpIHsKLSAgICBwcmludGYoIihleHBlY3Rpbmcg
MiBmYWlsdXJlcylcbiIpOwotICAgIEluaXQoKTsKLSAgfQotCi0gIH5GYXRhbEZhaWx1cmVJbkZp
eHR1cmVDb25zdHJ1Y3RvclRlc3QoKSB7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQg
ZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4iOwotICB9Ci0KLSAgdmlydHVh
bCB2b2lkIFNldFVwKCkgewotICAgIEFERF9GQUlMVVJFKCkgPDwgIlVORVhQRUNURUQgZmFpbHVy
ZSBpbiBTZXRVcCgpLiAgIgotICAgICAgICAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBn
ZXQgaGVyZSwgYXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciAiCi0gICAgICAgICAgICAgICAgICA8
PCAiaGFkIGEgZmF0YWwgZmFpbHVyZS4iOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3du
KCkgewotICAgIEFERF9GQUlMVVJFKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiBUZWFyRG93
bigpLiAgIgotICAgICAgICAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwg
YXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciAiCi0gICAgICAgICAgICAgICAgICA8PCAiaGFkIGEg
ZmF0YWwgZmFpbHVyZS4iOwotICB9Ci0gcHJpdmF0ZToKLSAgdm9pZCBJbml0KCkgewotICAgIEZB
SUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4i
OwotICB9Ci19OwotCi1URVNUX0YoRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0
LCBGYWlsdXJlSW5Db25zdHJ1Y3RvcikgewotICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVDVEVE
IGZhaWx1cmUgaW4gdGhlIHRlc3QgYm9keS4gICIKLSAgICAgICAgICAgICAgICA8PCAiV2Ugc2hv
dWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yICIKLSAgICAgICAg
ICAgICAgICA8PCAiaGFkIGEgZmF0YWwgZmFpbHVyZS4iOwotfQotCi0vLyBUZXN0cyBub24tZmF0
YWwgZmFpbHVyZXMgaW4gU2V0VXAoKS4KLWNsYXNzIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB+Tm9uRmF0
YWxGYWlsdXJlSW5TZXRVcFRlc3QoKSB7Ci0gICAgRGVpbml0KCk7Ci0gIH0KLQotICB2aXJ0dWFs
IHZvaWQgU2V0VXAoKSB7Ci0gICAgcHJpbnRmKCIoZXhwZWN0aW5nIDQgZmFpbHVyZXMpXG4iKTsK
LSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLiI7
Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBl
Y3RlZCBmYWlsdXJlICMzLCBpbiBUZWFyRG93bigpLiI7Ci0gIH0KLSBwcml2YXRlOgotICB2b2lk
IERlaW5pdCgpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRoZSB0
ZXN0IGZpeHR1cmUgZCd0b3IuIjsKLSAgfQotfTsKLQotVEVTVF9GKE5vbkZhdGFsRmFpbHVyZUlu
U2V0VXBUZXN0LCBGYWlsdXJlSW5TZXRVcCkgewotICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1
cmUgIzIsIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLiI7Ci19Ci0KLS8vIFRlc3RzIGZhdGFsIGZhaWx1
cmVzIGluIFNldFVwKCkuCi1jbGFzcyBGYXRhbEZhaWx1cmVJblNldFVwVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgfkZhdGFsRmFpbHVyZUluU2V0
VXBUZXN0KCkgewotICAgIERlaW5pdCgpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkg
ewotICAgIHByaW50ZigiKGV4cGVjdGluZyAzIGZhaWx1cmVzKVxuIik7Ci0gICAgRkFJTCgpIDw8
ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZv
aWQgVGVhckRvd24oKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBU
ZWFyRG93bigpLiI7Ci0gIH0KLSBwcml2YXRlOgotICB2b2lkIERlaW5pdCgpIHsKLSAgICBGQUlM
KCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsK
LSAgfQotfTsKLQotVEVTVF9GKEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LCBGYWlsdXJlSW5TZXRV
cCkgewotICBGQUlMKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBmdW5jdGlv
bi4gICIKLSAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIFNldFVwKCkg
ZmFpbGVkLiI7Ci19Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0KLS8vIFRoaXMgZ3JvdXAgb2Yg
dGVzdHMgdmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCBoYW5kbGVzIFNFSCBhbmQgQysrCi0vLyBl
eGNlcHRpb25zIGNvcnJlY3RseS4KLQotLy8gQSBmdW5jdGlvbiB0aGF0IHRocm93cyBhbiBTRUgg
ZXhjZXB0aW9uLgotc3RhdGljIHZvaWQgVGhyb3dTRUgoKSB7Ci0gIGludCogcCA9IE5VTEw7Ci0g
ICpwID0gMDsgIC8vIFJhaXNlcyBhbiBhY2Nlc3MgdmlvbGF0aW9uLgotfQotCi0vLyBUZXN0cyBl
eGNlcHRpb25zIHRocm93biBpbiB0aGUgdGVzdCBmaXh0dXJlIGNvbnN0cnVjdG9yLgotY2xhc3Mg
RXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJv
dGVjdGVkOgotICBFeGNlcHRpb25JbkZpeHR1cmVDdG9yVGVzdCgpIHsKLSAgICBwcmludGYoIihl
eHBlY3RpbmcgYSBmYWlsdXJlIG9uIHRocm93biBleGNlcHRpb24gIgotICAgICAgICAgICAiaW4g
dGhlIHRlc3QgZml4dHVyZSdzIGNvbnN0cnVjdG9yKVxuIik7Ci0KLSAgICBUaHJvd1NFSCgpOwot
ICB9Ci0KLSAgdmlydHVhbCB+RXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3QoKSB7Ci0gICAgRGVp
bml0KCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgRkFJTCgpIDw8ICJV
TkVYUEVDVEVEIGZhaWx1cmUgaW4gU2V0VXAoKS4gICIKLSAgICAgICAgICAgPDwgIldlIHNob3Vs
ZCBuZXZlciBnZXQgaGVyZSwgYXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciB0aHJldy4iOwotICB9
Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIEZBSUwoKSA8PCAiVU5FWFBFQ1RF
RCBmYWlsdXJlIGluIFRlYXJEb3duKCkuICAiCi0gICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2
ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgdGhyZXcuIjsKLSAgfQotIHBy
aXZhdGU6Ci0gIHZvaWQgRGVpbml0KCkgewotICAgIEZBSUwoKSA8PCAiVU5FWFBFQ1RFRCBmYWls
dXJlIGluIHRoZSBkJ3Rvci4gICIKLSAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQg
aGVyZSwgYXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciB0aHJldy4iOwotICB9Ci19OwotCi1URVNU
X0YoRXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3QsIEV4Y2VwdGlvbkluRml4dHVyZUN0b3IpIHsK
LSAgRkFJTCgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gdGhlIHRlc3QgZnVuY3Rpb24uICAi
Ci0gICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0
dXJlIGMndG9yIHRocmV3LiI7Ci19Ci0KLS8vIFRlc3RzIGV4Y2VwdGlvbnMgdGhyb3duIGluIFNl
dFVwKCkuCi1jbGFzcyBFeGNlcHRpb25JblNldFVwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgfkV4Y2VwdGlvbkluU2V0VXBUZXN0KCkgewotICAg
IERlaW5pdCgpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIHByaW50Zigi
KGV4cGVjdGluZyAzIGZhaWx1cmVzKVxuIik7Ci0KLSAgICBUaHJvd1NFSCgpOwotICB9Ci0KLSAg
dmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVy
ZSAjMiwgaW4gVGVhckRvd24oKS4iOwotICB9Ci0gcHJpdmF0ZToKLSAgdm9pZCBEZWluaXQoKSB7
Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJl
IGQndG9yLiI7Ci0gIH0KLX07Ci0KLVRFU1RfRihFeGNlcHRpb25JblNldFVwVGVzdCwgRXhjZXB0
aW9uSW5TZXRVcCkgewotICBGQUlMKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgdGVz
dCBmdW5jdGlvbi4gICIKLSAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFz
IFNldFVwKCkgdGhyZXcuIjsKLX0KLQotLy8gVGVzdHMgdGhhdCBUZWFyRG93bigpIGFuZCB0aGUg
dGVzdCBmaXh0dXJlIGQndG9yIGFyZSBhbHdheXMgY2FsbGVkLAotLy8gZXZlbiB3aGVuIHRoZSB0
ZXN0IGZ1bmN0aW9uIHRocm93cyBhbiBleGNlcHRpb24uCi1jbGFzcyBFeGNlcHRpb25JblRlc3RG
dW5jdGlvblRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0
dWFsIH5FeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QoKSB7Ci0gICAgRGVpbml0KCk7Ci0gIH0K
LQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBm
YWlsdXJlICMyLCBpbiBUZWFyRG93bigpLiI7Ci0gIH0KLSBwcml2YXRlOgotICB2b2lkIERlaW5p
dCgpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZp
eHR1cmUgZCd0b3IuIjsKLSAgfQotfTsKLQotLy8gVGVzdHMgdGhhdCB0aGUgdGVzdCBmaXh0dXJl
IGQndG9yIGlzIGFsd2F5cyBjYWxsZWQsIGV2ZW4gd2hlbiB0aGUKLS8vIHRlc3QgZnVuY3Rpb24g
dGhyb3dzIGFuIFNFSCBleGNlcHRpb24uCi1URVNUX0YoRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25U
ZXN0LCBTRUgpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDMgZmFpbHVyZXMpXG4iKTsKLQotICBU
aHJvd1NFSCgpOwotfQotCi0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gVGVzdHMgdGhh
dCB0aGUgdGVzdCBmaXh0dXJlIGQndG9yIGlzIGFsd2F5cyBjYWxsZWQsIGV2ZW4gd2hlbiB0aGUK
LS8vIHRlc3QgZnVuY3Rpb24gdGhyb3dzIGEgQysrIGV4Y2VwdGlvbi4gIFdlIGRvIHRoaXMgb25s
eSB3aGVuCi0vLyBHVEVTVF9IQVNfRVhDRVBUSU9OUyBpcyBub24temVybywgaS5lLiBDKysgZXhj
ZXB0aW9ucyBhcmUgZW5hYmxlZC4KLVRFU1RfRihFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3Qs
IENwcEV4Y2VwdGlvbikgewotICB0aHJvdyAxOwotfQotCi0vLyBUZXN0cyBleGNlcHRpb25zIHRo
cm93biBpbiBUZWFyRG93bigpLgotY2xhc3MgRXhjZXB0aW9uSW5UZWFyRG93blRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIH5FeGNlcHRpb25JblRl
YXJEb3duVGVzdCgpIHsKLSAgICBEZWluaXQoKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpIHsKLSAgICB0aHJvdyAxOwotICB9Ci0gcHJpdmF0ZToKLSAgdm9pZCBEZWluaXQoKSB7
Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJl
IGQndG9yLiI7Ci0gIH0KLX07Ci0KLVRFU1RfRihFeGNlcHRpb25JblRlYXJEb3duVGVzdCwgRXhj
ZXB0aW9uSW5UZWFyRG93bikgewotICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIp
OwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCi0KLSNlbmRpZiAgLy8gR1RF
U1RfT1NfV0lORE9XUwotCi0jaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQotCi0vLyBBIHVuYXJ5IGZ1
bmN0aW9uIHRoYXQgbWF5IGRpZS4KLXZvaWQgRGllSWYoYm9vbCBzaG91bGRfZGllKSB7Ci0gIEdU
RVNUX0NIRUNLXyghc2hvdWxkX2RpZSkgPDwgIiAtIGRlYXRoIGluc2lkZSBEaWVJZigpLiI7Ci19
Ci0KLS8vIFRlc3RzIHJ1bm5pbmcgZGVhdGggdGVzdHMgaW4gYSBtdWx0aS10aHJlYWRlZCBjb250
ZXh0LgotCi0vLyBVc2VkIGZvciBjb29yZGluYXRpb24gYmV0d2VlbiB0aGUgbWFpbiBhbmQgdGhl
IHNwYXduIHRocmVhZC4KLXN0cnVjdCBTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMgewotICBTcGF3
blRocmVhZE5vdGlmaWNhdGlvbnMoKSB7fQotCi0gIE5vdGlmaWNhdGlvbiBzcGF3bl90aHJlYWRf
c3RhcnRlZDsKLSAgTm90aWZpY2F0aW9uIHNwYXduX3RocmVhZF9va190b190ZXJtaW5hdGU7Ci0K
LSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNwYXduVGhyZWFk
Tm90aWZpY2F0aW9ucyk7Ci19OwotCi0vLyBUaGUgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgaW4g
dGhlIHRocmVhZCBzcGF3biBieSB0aGUKLS8vIE11bHRpcGxlVGhyZWFkcyB0ZXN0IChiZWxvdyku
Ci1zdGF0aWMgdm9pZCBUaHJlYWRSb3V0aW5lKFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyogbm90
aWZpY2F0aW9ucykgewotICAvLyBTaWduYWxzIHRoZSBtYWluIHRocmVhZCB0aGF0IHRoaXMgdGhy
ZWFkIGhhcyBzdGFydGVkLgotICBub3RpZmljYXRpb25zLT5zcGF3bl90aHJlYWRfc3RhcnRlZC5O
b3RpZnkoKTsKLQotICAvLyBXYWl0cyBmb3IgcGVybWlzc2lvbiB0byBmaW5pc2ggZnJvbSB0aGUg
bWFpbiB0aHJlYWQuCi0gIG5vdGlmaWNhdGlvbnMtPnNwYXduX3RocmVhZF9va190b190ZXJtaW5h
dGUuV2FpdEZvck5vdGlmaWNhdGlvbigpOwotfQotCi0vLyBUaGlzIGlzIGEgZGVhdGgtdGVzdCB0
ZXN0LCBidXQgaXQncyBub3QgbmFtZWQgd2l0aCBhIERlYXRoVGVzdAotLy8gc3VmZml4LiAgSXQg
c3RhcnRzIHRocmVhZHMgd2hpY2ggbWlnaHQgaW50ZXJmZXJlIHdpdGggbGF0ZXIKLS8vIGRlYXRo
IHRlc3RzLCBzbyBpdCBtdXN0IHJ1biBhZnRlciBhbGwgb3RoZXIgZGVhdGggdGVzdHMuCi1jbGFz
cyBEZWF0aFRlc3RBbmRNdWx0aVRocmVhZHNUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewot
IHByb3RlY3RlZDoKLSAgLy8gU3RhcnRzIGEgdGhyZWFkIGFuZCB3YWl0cyBmb3IgaXQgdG8gYmVn
aW4uCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICB0aHJlYWRfLnJlc2V0KG5ldyBUaHJl
YWRXaXRoUGFyYW08U3Bhd25UaHJlYWROb3RpZmljYXRpb25zKj4oCi0gICAgICAgICZUaHJlYWRS
b3V0aW5lLCAmbm90aWZpY2F0aW9uc18sIE5VTEwpKTsKLSAgICBub3RpZmljYXRpb25zXy5zcGF3
bl90aHJlYWRfc3RhcnRlZC5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7Ci0gIH0KLSAgLy8gVGVsbHMg
dGhlIHRocmVhZCB0byBmaW5pc2gsIGFuZCByZWFwcyBpdC4KLSAgLy8gRGVwZW5kaW5nIG9uIHRo
ZSB2ZXJzaW9uIG9mIHRoZSB0aHJlYWQgbGlicmFyeSBpbiB1c2UsCi0gIC8vIGEgbWFuYWdlciB0
aHJlYWQgbWlnaHQgc3RpbGwgYmUgbGVmdCBydW5uaW5nIHRoYXQgd2lsbCBpbnRlcmZlcmUKLSAg
Ly8gd2l0aCBsYXRlciBkZWF0aCB0ZXN0cy4gIFRoaXMgaXMgdW5mb3J0dW5hdGUsIGJ1dCB0aGlz
IGNsYXNzCi0gIC8vIGNsZWFucyB1cCBhZnRlciBpdHNlbGYgYXMgYmVzdCBpdCBjYW4uCi0gIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBub3RpZmljYXRpb25zXy5zcGF3bl90aHJlYWRf
b2tfdG9fdGVybWluYXRlLk5vdGlmeSgpOwotICB9Ci0KLSBwcml2YXRlOgotICBTcGF3blRocmVh
ZE5vdGlmaWNhdGlvbnMgbm90aWZpY2F0aW9uc187Ci0gIHNjb3BlZF9wdHI8VGhyZWFkV2l0aFBh
cmFtPFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyo+ID4gdGhyZWFkXzsKLX07Ci0KLSNlbmRpZiAg
Ly8gR1RFU1RfSVNfVEhSRUFEU0FGRQotCi0vLyBUaGUgTWl4ZWRVcFRlc3RDYXNlVGVzdCB0ZXN0
IGNhc2UgdmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCB3aWxsIGZhaWwgYQotLy8gdGVzdCBpZiBp
dCB1c2VzIGEgZGlmZmVyZW50IGZpeHR1cmUgY2xhc3MgdGhhbiB3aGF0IG90aGVyIHRlc3RzIGlu
Ci0vLyB0aGUgc2FtZSB0ZXN0IGNhc2UgdXNlLiAgSXQgZGVsaWJlcmF0ZWx5IGNvbnRhaW5zIHR3
byBmaXh0dXJlCi0vLyBjbGFzc2VzIHdpdGggdGhlIHNhbWUgbmFtZSBidXQgZGVmaW5lZCBpbiBk
aWZmZXJlbnQgbmFtZXNwYWNlcy4KLQotLy8gVGhlIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVz
dE5hbWVUZXN0IHRlc3QgY2FzZSB2ZXJpZmllcyB0aGF0Ci0vLyB3aGVuIHRoZSB1c2VyIGRlZmlu
ZXMgdHdvIHRlc3RzIHdpdGggdGhlIHNhbWUgdGVzdCBjYXNlIG5hbWUgQU5ECi0vLyBzYW1lIHRl
c3QgbmFtZSAoYnV0IGluIGRpZmZlcmVudCBuYW1lc3BhY2VzKSwgdGhlIHNlY29uZCB0ZXN0IHdp
bGwKLS8vIGZhaWwuCi0KLW5hbWVzcGFjZSBmb28gewotCi1jbGFzcyBNaXhlZFVwVGVzdENhc2VU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVEVTVF9GKE1peGVkVXBUZXN0Q2Fz
ZVRlc3QsIEZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28pIHt9Ci1URVNUX0YoTWl4ZWRVcFRlc3RD
YXNlVGVzdCwgU2Vjb25kVGVzdEZyb21OYW1lc3BhY2VGb28pIHt9Ci0KLWNsYXNzIE1peGVkVXBU
ZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsK
LQotVEVTVF9GKE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAotICAgICAgIFRo
ZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsKSB7fQotCi19ICAvLyBuYW1lc3BhY2Ug
Zm9vCi0KLW5hbWVzcGFjZSBiYXIgewotCi1jbGFzcyBNaXhlZFVwVGVzdENhc2VUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotLy8gVGhlIGZvbGxvd2luZyB0d28gdGVzdHMgYXJl
IGV4cGVjdGVkIHRvIGZhaWwuICBXZSByZWx5IG9uIHRoZQotLy8gZ29sZGVuIGZpbGUgdG8gY2hl
Y2sgdGhhdCBHb29nbGUgVGVzdCBnZW5lcmF0ZXMgdGhlIHJpZ2h0IGVycm9yIG1lc3NhZ2UuCi1U
RVNUX0YoTWl4ZWRVcFRlc3RDYXNlVGVzdCwgVGhpc1Nob3VsZEZhaWwpIHt9Ci1URVNUX0YoTWl4
ZWRVcFRlc3RDYXNlVGVzdCwgVGhpc1Nob3VsZEZhaWxUb28pIHt9Ci0KLWNsYXNzIE1peGVkVXBU
ZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsK
LQotLy8gRXhwZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIGNo
ZWNrIHRoYXQgR29vZ2xlIFRlc3QKLS8vIGdlbmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVzc2Fn
ZS4KLVRFU1RfRihNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdCwKLSAgICAgICBU
aGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbCkge30KLQotfSAgLy8gbmFtZXNwYWNl
IGJhcgotCi0vLyBUaGUgZm9sbG93aW5nIHR3byB0ZXN0IGNhc2VzIHZlcmlmeSB0aGF0IEdvb2ds
ZSBUZXN0IGNhdGNoZXMgdGhlIHVzZXIKLS8vIGVycm9yIG9mIG1peGluZyBURVNUIGFuZCBURVNU
X0YgaW4gdGhlIHNhbWUgdGVzdCBjYXNlLiAgVGhlIGZpcnN0Ci0vLyB0ZXN0IGNhc2UgY2hlY2tz
IHRoZSBzY2VuYXJpbyB3aGVyZSBURVNUX0YgYXBwZWFycyBiZWZvcmUgVEVTVCwgYW5kCi0vLyB0
aGUgc2Vjb25kIG9uZSBjaGVja3Mgd2hlcmUgVEVTVCBhcHBlYXJzIGJlZm9yZSBURVNUX0YuCi0K
LWNsYXNzIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKLX07Ci0KLVRFU1RfRihURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0
X2Nhc2UsIERlZmluZWRVc2luZ1RFU1RfRikge30KLQotLy8gRXhwZWN0ZWQgdG8gZmFpbC4gIFdl
IHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIGNoZWNrIHRoYXQgR29vZ2xlIFRlc3QKLS8vIGdl
bmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KLVRFU1QoVEVTVF9GX2JlZm9yZV9URVNU
X2luX3NhbWVfdGVzdF9jYXNlLCBEZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxkRmFpbCkge30KLQot
Y2xhc3MgVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlIDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgewotfTsKLQotVEVTVChURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nh
c2UsIERlZmluZWRVc2luZ1RFU1QpIHt9Ci0KLS8vIEV4cGVjdGVkIHRvIGZhaWwuICBXZSByZWx5
IG9uIHRoZSBnb2xkZW4gZmlsZSB0byBjaGVjayB0aGF0IEdvb2dsZSBUZXN0Ci0vLyBnZW5lcmF0
ZXMgdGhlIHJpZ2h0IGVycm9yIG1lc3NhZ2UuCi1URVNUX0YoVEVTVF9iZWZvcmVfVEVTVF9GX2lu
X3NhbWVfdGVzdF9jYXNlLCBEZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsKSB7Ci19Ci0K
LS8vIFVzZWQgZm9yIHRlc3RpbmcgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBhbmQgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoKS4KLWludCBnbG9iYWxfaW50ZWdlciA9IDA7Ci0KLS8vIFRlc3RzIHRo
YXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBjYW4gcmVmZXJlbmNlIGdsb2JhbCB2YXJpYWJs
ZXMuCi1URVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIENhblJlZmVyZW5jZUdsb2JhbFZh
cmlhYmxlcykgewotICBnbG9iYWxfaW50ZWdlciA9IDA7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKHsKLSAgICBFWFBFQ1RfRVEoMSwgZ2xvYmFsX2ludGVnZXIpIDw8ICJFeHBlY3RlZCBub24t
ZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBjYW4gcmVmZXJlbmNl
IGxvY2FsIHZhcmlhYmxlcwotLy8gKHN0YXRpYyBvciBub3QpLgotVEVTVChFeHBlY3ROb25mYXRh
bEZhaWx1cmVUZXN0LCBDYW5SZWZlcmVuY2VMb2NhbFZhcmlhYmxlcykgewotICBpbnQgbSA9IDA7
Ci0gIHN0YXRpYyBpbnQgbjsKLSAgbiA9IDE7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsK
LSAgICBFWFBFQ1RfRVEobSwgbikgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7Ci0g
IH0sICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIHN1Y2NlZWRzIHdoZW4gdGhlcmUgaXMgZXhhY3RseQot
Ly8gb25lIG5vbi1mYXRhbCBmYWlsdXJlIGFuZCBubyBmYXRhbCBmYWlsdXJlLgotVEVTVChFeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LCBTdWNjZWVkc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWls
dXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBBRERfRkFJTFVSRSgpIDw8
ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiRXhwZWN0ZWQgbm9uLWZhdGFs
IGZhaWx1cmUuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
KSBmYWlscyB3aGVuIHRoZXJlIGlzIG5vCi0vLyBub24tZmF0YWwgZmFpbHVyZS4KLVRFU1QoRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJl
KSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoewotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZXJlIGFyZSB0d28KLS8vIG5vbi1mYXRhbCBmYWls
dXJlcy4KLVRFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVBcmVU
d29Ob25mYXRhbEZhaWx1cmVzKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4i
KTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4
cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDEuIjsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBl
Y3RlZCBub24tZmF0YWwgZmFpbHVyZSAyLiI7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgaXMgb25lIGZhdGFs
Ci0vLyBmYWlsdXJlLgotVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5U
aGVyZUlzT25lRmF0YWxGYWlsdXJlKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUp
XG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIEZBSUwoKSA8PCAiRXhwZWN0
ZWQgZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZSBzdGF0ZW1lbnQgYmVpbmcKLS8vIHRl
c3RlZCByZXR1cm5zLgotVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5T
dGF0ZW1lbnRSZXR1cm5zKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsK
LSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIHJldHVybjsKLSAgfSwgIiIpOwotfQot
Ci0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWluZwotLy8gdGVzdGVkIHRo
cm93cy4KLVRFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuU3RhdGVtZW50
VGhyb3dzKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgdHJ5IHsK
LSAgICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAgICB0aHJvdyAwOwotICAgIH0sICIi
KTsKLSAgfSBjYXRjaChpbnQpIHsgIC8vIE5PTElOVAotICB9Ci19Ci0KLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgp
IGNhbiByZWZlcmVuY2UgZ2xvYmFsIHZhcmlhYmxlcy4KLVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdCwgQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzKSB7Ci0gIGdsb2JhbF9pbnRlZ2VyID0g
MDsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICAgIEFTU0VSVF9FUSgxLCBnbG9iYWxfaW50
ZWdlcikgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKLSAgfSwgIkV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBj
YW4gcmVmZXJlbmNlIGxvY2FsIHN0YXRpYwotLy8gdmFyaWFibGVzLgotVEVTVChFeHBlY3RGYXRh
bEZhaWx1cmVUZXN0LCBDYW5SZWZlcmVuY2VMb2NhbFN0YXRpY1ZhcmlhYmxlcykgewotICBzdGF0
aWMgaW50IG47Ci0gIG4gPSAxOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0gICAgQVNTRVJU
X0VRKDAsIG4pIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7Ci0gIH0sICJFeHBlY3RlZCBm
YXRhbCBmYWlsdXJlLiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJF
KCkgc3VjY2VlZHMgd2hlbiB0aGVyZSBpcyBleGFjdGx5Ci0vLyBvbmUgZmF0YWwgZmFpbHVyZSBh
bmQgbm8gbm9uLWZhdGFsIGZhaWx1cmUuCi1URVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIFN1
Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUpIHsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiRXhw
ZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxf
RkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgaXMgbm8gZmF0YWwKLS8vIGZhaWx1cmUuCi1URVNU
KEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZSkg
ewotICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKHsKLSAgfSwgIiIpOwotfQotCi0vLyBBIGhlbHBlciBmb3IgZ2VuZXJhdGluZyBhIGZh
dGFsIGZhaWx1cmUuCi12b2lkIEZhdGFsRmFpbHVyZSgpIHsKLSAgRkFJTCgpIDw8ICJFeHBlY3Rl
ZCBmYXRhbCBmYWlsdXJlLiI7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoKSBmYWlscyB3aGVuIHRoZXJlIGFyZSB0d28KLS8vIGZhdGFsIGZhaWx1cmVzLgotVEVTVChF
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMp
IHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRSh7Ci0gICAgRmF0YWxGYWlsdXJlKCk7Ci0gICAgRmF0YWxGYWlsdXJlKCk7Ci0gIH0s
ICIiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdo
ZW4gdGhlcmUgaXMgb25lIG5vbi1mYXRhbAotLy8gZmFpbHVyZS4KLVRFU1QoRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZSkgewotICBwcmlu
dGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsK
LSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOwotICB9
LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3
aGVuIHRoZSBzdGF0ZW1lbnQgYmVpbmcKLS8vIHRlc3RlZCByZXR1cm5zLgotVEVTVChFeHBlY3RG
YXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zKSB7Ci0gIHByaW50Zigi
KGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICAg
IHJldHVybjsKLSAgfSwgIiIpOwotfQotCi0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVu
dCBiZWluZwotLy8gdGVzdGVkIHRocm93cy4KLVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwg
RmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1
cmUpXG4iKTsKLSAgdHJ5IHsKLSAgICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0gICAgICB0aHJv
dyAwOwotICAgIH0sICIiKTsKLSAgfSBjYXRjaChpbnQpIHsgIC8vIE5PTElOVAotICB9Ci19Ci0K
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gVGhpcyAjaWZkZWYgYmxvY2sg
dGVzdHMgdGhlIG91dHB1dCBvZiB0eXBlZCB0ZXN0cy4KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVT
VAotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFR5cGVkVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRShUeXBlZFRlc3QsIHRlc3Rpbmc6OlR5
cGVzPGludD4pOwotCi1UWVBFRF9URVNUKFR5cGVkVGVzdCwgU3VjY2VzcykgewotICBFWFBFQ1Rf
RVEoMCwgVHlwZVBhcmFtKCkpOwotfQotCi1UWVBFRF9URVNUKFR5cGVkVGVzdCwgRmFpbHVyZSkg
ewotICBFWFBFQ1RfRVEoMSwgVHlwZVBhcmFtKCkpIDw8ICJFeHBlY3RlZCBmYWlsdXJlIjsKLX0K
LQotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAotCi0vLyBUaGlzICNpZmRlZiBibG9j
ayB0ZXN0cyB0aGUgb3V0cHV0IG9mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KLSNpZiBHVEVT
VF9IQVNfVFlQRURfVEVTVF9QCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgVHlwZWRU
ZXN0UCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRV9QKFR5
cGVkVGVzdFApOwotCi1UWVBFRF9URVNUX1AoVHlwZWRUZXN0UCwgU3VjY2VzcykgewotICBFWFBF
Q1RfRVEoMFUsIFR5cGVQYXJhbSgpKTsKLX0KLQotVFlQRURfVEVTVF9QKFR5cGVkVGVzdFAsIEZh
aWx1cmUpIHsKLSAgRVhQRUNUX0VRKDFVLCBUeXBlUGFyYW0oKSkgPDwgIkV4cGVjdGVkIGZhaWx1
cmUiOwotfQotCi1SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChUeXBlZFRlc3RQLCBTdWNjZXNz
LCBGYWlsdXJlKTsKLQotdHlwZWRlZiB0ZXN0aW5nOjpUeXBlczx1bnNpZ25lZCBjaGFyLCB1bnNp
Z25lZCBpbnQ+IFVuc2lnbmVkVHlwZXM7Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChV
bnNpZ25lZCwgVHlwZWRUZXN0UCwgVW5zaWduZWRUeXBlcyk7Ci0KLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1RZUEVEX1RFU1RfUAotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotLy8gV2UgcmVs
eSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gdmVyaWZ5IHRoYXQgdGVzdHMgd2hvc2UgdGVzdCBjYXNl
Ci0vLyBuYW1lIGVuZHMgd2l0aCBEZWF0aFRlc3QgYXJlIHJ1biBmaXJzdC4KLQotVEVTVChBRGVh
dGhUZXN0LCBTaG91bGRSdW5GaXJzdCkgewotfQotCi0jaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QK
LQotLy8gV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gdmVyaWZ5IHRoYXQgdHlwZWQgdGVz
dHMgd2hvc2UgdGVzdAotLy8gY2FzZSBuYW1lIGVuZHMgd2l0aCBEZWF0aFRlc3QgYXJlIHJ1biBm
aXJzdC4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBBVHlwZWREZWF0aFRlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi10eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPGludCwg
ZG91YmxlPiBOdW1lcmljVHlwZXM7Ci1UWVBFRF9URVNUX0NBU0UoQVR5cGVkRGVhdGhUZXN0LCBO
dW1lcmljVHlwZXMpOwotCi1UWVBFRF9URVNUKEFUeXBlZERlYXRoVGVzdCwgU2hvdWxkUnVuRmly
c3QpIHsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAotCi0jaWYgR1RFU1Rf
SEFTX1RZUEVEX1RFU1RfUAotCi0KLS8vIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIHZl
cmlmeSB0aGF0IHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cwotLy8gd2hvc2UgdGVzdCBjYXNlIG5h
bWUgZW5kcyB3aXRoIERlYXRoVGVzdCBhcmUgcnVuIGZpcnN0LgotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLWNsYXNzIEFUeXBlUGFyYW1EZWF0aFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChBVHlwZVBhcmFtRGVhdGhUZXN0KTsKLQotVFlQRURf
VEVTVF9QKEFUeXBlUGFyYW1EZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0KSB7Ci19Ci0KLVJFR0lT
VEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEFUeXBlUGFyYW1EZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0
KTsKLQotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEFUeXBlUGFyYW1EZWF0aFRl
c3QsIE51bWVyaWNUeXBlcyk7Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAot
Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLS8vIFRlc3RzIHZhcmlvdXMgZmFp
bHVyZSBjb25kaXRpb25zIG9mCi0vLyBFWFBFQ1RfeyxOT059RkFUQUxfRkFJTFVSRXssX09OX0FM
TF9USFJFQURTfS4KLWNsYXNzIEV4cGVjdEZhaWx1cmVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewotIHB1YmxpYzogIC8vIE11c3QgYmUgcHVibGljIGFuZCBub3QgcHJvdGVjdGVkIGR1ZSB0
byBhIGJ1ZyBpbiBnKysgMy40LjIuCi0gIGVudW0gRmFpbHVyZU1vZGUgewotICAgIEZBVEFMX0ZB
SUxVUkUsCi0gICAgTk9ORkFUQUxfRkFJTFVSRQotICB9OwotICBzdGF0aWMgdm9pZCBBZGRGYWls
dXJlKEZhaWx1cmVNb2RlIGZhaWx1cmUpIHsKLSAgICBpZiAoZmFpbHVyZSA9PSBGQVRBTF9GQUlM
VVJFKSB7Ci0gICAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKLSAgICB9
IGVsc2UgewotICAgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUuIjsKLSAgICB9Ci0gIH0KLX07Ci0KLVRFU1RfRihFeHBlY3RGYWlsdXJlVGVzdCwgRXhwZWN0
RmF0YWxGYWlsdXJlKSB7Ci0gIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVk
cy4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShTVUNDRUVEKCksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOwotICAvLyBFeHBl
Y3RlZCBmYXRhbCBmYWlsdXJlLCBidXQgZ290IGEgbm9uLWZhdGFsIGZhaWx1cmUuCi0gIHByaW50
ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRk
RmFpbHVyZShOT05GQVRBTF9GQUlMVVJFKSwgIkV4cGVjdGVkIG5vbi1mYXRhbCAiCi0gICAgICAg
ICAgICAgICAgICAgICAgICJmYWlsdXJlLiIpOwotICAvLyBXcm9uZyBtZXNzYWdlLgotICBwcmlu
dGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFk
ZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUgIgotICAg
ICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQuIik7Ci19Ci0KLVRFU1RfRihFeHBlY3RGYWls
dXJlVGVzdCwgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlKSB7Ci0gIC8vIEV4cGVjdGVkIG5vbi1mYXRh
bCBmYWlsdXJlLCBidXQgc3VjY2VlZHMuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUp
XG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoU1VDQ0VFRCgpLCAiRXhwZWN0ZWQgbm9u
LWZhdGFsIGZhaWx1cmUuIik7Ci0gIC8vIEV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLCBidXQg
Z290IGEgZmF0YWwgZmFpbHVyZS4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIp
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlKEZBVEFMX0ZBSUxVUkUpLCAi
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKLSAgLy8gV3JvbmcgbWVzc2FnZS4KLSAgcHJpbnRm
KCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShB
ZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpLCAiU29tZSBvdGhlciBub24tZmF0YWwgIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZmFpbHVyZS4iKTsKLX0KLQotI2lmIEdURVNUX0lTX1RI
UkVBRFNBRkUKLQotY2xhc3MgRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCA6IHB1YmxpYyBF
eHBlY3RGYWlsdXJlVGVzdCB7Ci0gcHJvdGVjdGVkOgotICBzdGF0aWMgdm9pZCBBZGRGYWlsdXJl
SW5PdGhlclRocmVhZChGYWlsdXJlTW9kZSBmYWlsdXJlKSB7Ci0gICAgVGhyZWFkV2l0aFBhcmFt
PEZhaWx1cmVNb2RlPiB0aHJlYWQoJkFkZEZhaWx1cmUsIGZhaWx1cmUsIE5VTEwpOwotICAgIHRo
cmVhZC5Kb2luKCk7Ci0gIH0KLX07Ci0KLVRFU1RfRihFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNU
ZXN0LCBFeHBlY3RGYXRhbEZhaWx1cmUpIHsKLSAgLy8gV2Ugb25seSBpbnRlcmNlcHQgdGhlIGN1
cnJlbnQgdGhyZWFkLgotICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOwotICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlSW5PdGhlclRocmVhZChGQVRBTF9GQUlMVVJF
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Ci19
Ci0KLVRFU1RfRihFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LCBFeHBlY3ROb25GYXRhbEZh
aWx1cmUpIHsKLSAgLy8gV2Ugb25seSBpbnRlcmNlcHQgdGhlIGN1cnJlbnQgdGhyZWFkLgotICBw
cmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShBZGRGYWlsdXJlSW5PdGhlclRocmVhZChOT05GQVRBTF9GQUlMVVJFKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwotfQotCi10
eXBlZGVmIEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QgU2NvcGVkRmFrZVRlc3RQYXJ0UmVz
dWx0UmVwb3J0ZXJUZXN0OwotCi0vLyBUZXN0cyB0aGF0IHRoZSBTY29wZWRGYWtlVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlciBvbmx5IGNhdGNoZXMgZmFpbHVyZXMgZnJvbQotLy8gdGhlIGN1cnJlbnQg
dGhyZWFkIGlmIGl0IGlzIGluc3RhbnRpYXRlZCB3aXRoIElOVEVSQ0VQVF9PTkxZX0NVUlJFTlRf
VEhSRUFELgotVEVTVF9GKFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdCwgSW50
ZXJjZXB0T25seUN1cnJlbnRUaHJlYWQpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVy
ZXMpXG4iKTsKLSAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOwotICB7Ci0gICAgU2NvcGVk
RmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIgcmVwb3J0ZXIoCi0gICAgICAgIFNjb3BlZEZha2VU
ZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpJTlRFUkNFUFRfT05MWV9DVVJSRU5UX1RIUkVBRCwKLSAg
ICAgICAgJnJlc3VsdHMpOwotICAgIEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZBVEFMX0ZBSUxV
UkUpOwotICAgIEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKE5PTkZBVEFMX0ZBSUxVUkUpOwotICB9
Ci0gIC8vIFRoZSB0d28gZmFpbHVyZXMgc2hvdWxkIG5vdCBoYXZlIGJlZW4gaW50ZXJjZXB0ZWQu
Ci0gIEVYUEVDVF9FUSgwLCByZXN1bHRzLnNpemUoKSkgPDwgIlRoaXMgc2hvdWxkbid0IGZhaWwu
IjsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCi0KLVRFU1RfRihFeHBlY3RG
YWlsdXJlVGVzdCwgRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzKSB7Ci0gIC8vIEV4cGVj
dGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEg
ZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhTVUND
RUVEKCksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOwotICAvLyBFeHBlY3RlZCBmYXRhbCBm
YWlsdXJlLCBidXQgZ290IGEgbm9uLWZhdGFsIGZhaWx1cmUuCi0gIHByaW50ZigiKGV4cGVjdGlu
ZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMo
QWRkRmFpbHVyZShOT05GQVRBTF9GQUlMVVJFKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwotICAvLyBXcm9uZyBt
ZXNzYWdlLgotICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9G
QVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb21lIG90aGVyIGZhdGFsIGZh
aWx1cmUgZXhwZWN0ZWQuIik7Ci19Ci0KLVRFU1RfRihFeHBlY3RGYWlsdXJlVGVzdCwgRXhwZWN0
Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzKSB7Ci0gIC8vIEV4cGVjdGVkIG5vbi1mYXRhbCBm
YWlsdXJlLCBidXQgc3VjY2VlZHMuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4i
KTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoU1VDQ0VFRCgpLCAi
RXhwZWN0ZWQgbm9uLWZhdGFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImZhaWx1cmUuIik7Ci0gIC8vIEV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLCBidXQg
Z290IGEgZmF0YWwgZmFpbHVyZS4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIp
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlKEZB
VEFMX0ZBSUxVUkUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKLSAgLy8gV3JvbmcgbWVzc2FnZS4KLSAgcHJpbnRm
KCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9P
Tl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU29tZSBvdGhlciBub24tZmF0YWwgZmFpbHVy
ZS4iKTsKLX0KLQotCi0vLyBUd28gdGVzdCBlbnZpcm9ubWVudHMgZm9yIHRlc3RpbmcgdGVzdGlu
Zzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KCkuCi0KLWNsYXNzIEZvb0Vudmlyb25tZW50IDog
cHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgdm9pZCBT
ZXRVcCgpIHsKLSAgICBwcmludGYoIiVzIiwgIkZvb0Vudmlyb25tZW50OjpTZXRVcCgpIGNhbGxl
ZC5cbiIpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIHByaW50Zigi
JXMiLCAiRm9vRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLlxuIik7Ci0gICAgRkFJTCgp
IDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7Ci0gIH0KLX07Ci0KLWNsYXNzIEJhckVudmly
b25tZW50IDogcHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50IHsKLSBwdWJsaWM6Ci0gIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBwcmludGYoIiVzIiwgIkJhckVudmlyb25tZW50OjpTZXRV
cCgpIGNhbGxlZC5cbiIpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAg
IHByaW50ZigiJXMiLCAiQmFyRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLlxuIik7Ci0g
ICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKLSAgfQot
fTsKLQotR1RFU1RfREVGSU5FX2Jvb2xfKGludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2Fk
X2hvY190ZXN0cywgZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIlRoaXMgZmxhZyBjYXVzZXMg
dGhlIHByb2dyYW0gdG8gc2tpcCB0ZXN0IGVudmlyb25tZW50ICIKLSAgICAgICAgICAgICAgICAg
ICAidGVzdHMgYW5kIGFkIGhvYyB0ZXN0cy4iKTsKLQotLy8gVGhlIG1haW4gZnVuY3Rpb24uCi0v
LwotLy8gVGhlIGlkZWEgaXMgdG8gdXNlIEdvb2dsZSBUZXN0IHRvIHJ1biBhbGwgdGhlIHRlc3Rz
IHdlIGhhdmUgZGVmaW5lZCAoc29tZQotLy8gb2YgdGhlbSBhcmUgaW50ZW5kZWQgdG8gZmFpbCks
IGFuZCB0aGVuIGNvbXBhcmUgdGhlIHRlc3QgcmVzdWx0cwotLy8gd2l0aCB0aGUgImdvbGRlbiIg
ZmlsZS4KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotICB0ZXN0aW5nOjpHVEVT
VF9GTEFHKHByaW50X3RpbWUpID0gZmFsc2U7Ci0KLSAgLy8gV2UganVzdCBydW4gdGhlIHRlc3Rz
LCBrbm93aW5nIHNvbWUgb2YgdGhlbSBhcmUgaW50ZW5kZWQgdG8gZmFpbC4KLSAgLy8gV2Ugd2ls
bCB1c2UgYSBzZXBhcmF0ZSBQeXRob24gc2NyaXB0IHRvIGNvbXBhcmUgdGhlIG91dHB1dCBvZgot
ICAvLyB0aGlzIHByb2dyYW0gd2l0aCB0aGUgZ29sZGVuIGZpbGUuCi0KLSAgLy8gSXQncyBoYXJk
IHRvIHRlc3QgSW5pdEdvb2dsZVRlc3QoKSBkaXJlY3RseSwgYXMgaXQgaGFzIG1hbnkKLSAgLy8g
Z2xvYmFsIHNpZGUgZWZmZWN0cy4gIFRoZSBmb2xsb3dpbmcgbGluZSBzZXJ2ZXMgYXMgYSBzYW5p
dHkgdGVzdAotICAvLyBmb3IgaXQuCi0gIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBh
cmd2KTsKLSAgaWYgKGFyZ2MgPj0gMiAmJgotICAgICAgU3RyaW5nKGFyZ3ZbMV0pID09ICItLWd0
ZXN0X2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cyIpCi0gICAgR1RF
U1RfRkxBRyhpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMpID0gdHJ1
ZTsKLQotI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCi0gIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6
R1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkgIT0gIiIpIHsKLSAgICAvLyBTa2lw
IHRoZSB1c3VhbCBvdXRwdXQgY2FwdHVyaW5nIGlmIHdlJ3JlIHJ1bm5pbmcgYXMgdGhlIGNoaWxk
Ci0gICAgLy8gcHJvY2VzcyBvZiBhbiB0aHJlYWRzYWZlLXN0eWxlIGRlYXRoIHRlc3QuCi0jaWYg
R1RFU1RfT1NfV0lORE9XUwotICAgIHBvc2l4OjpGUmVvcGVuKCJudWw6IiwgInciLCBzdGRvdXQp
OwotI2Vsc2UKLSAgICBwb3NpeDo6RlJlb3BlbigiL2Rldi9udWxsIiwgInciLCBzdGRvdXQpOwot
I2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0gICAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsK
LSAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi0gIGlmIChHVEVTVF9GTEFH
KGludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cykpCi0gICAgcmV0dXJu
IFJVTl9BTExfVEVTVFMoKTsKLQotICAvLyBSZWdpc3RlcnMgdHdvIGdsb2JhbCB0ZXN0IGVudmly
b25tZW50cy4KLSAgLy8gVGhlIGdvbGRlbiBmaWxlIHZlcmlmaWVzIHRoYXQgdGhleSBhcmUgc2V0
IHVwIGluIHRoZSBvcmRlciB0aGV5Ci0gIC8vIGFyZSByZWdpc3RlcmVkLCBhbmQgdG9ybiBkb3du
IGluIHRoZSByZXZlcnNlIG9yZGVyLgotICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1l
bnQobmV3IEZvb0Vudmlyb25tZW50KTsKLSAgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25t
ZW50KG5ldyBCYXJFbnZpcm9ubWVudCk7Ci0KLSAgcmV0dXJuIFJ1bkFsbFRlc3RzKCk7Ci19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0
X2dvbGRlbl9saW4udHh0IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRw
dXRfdGVzdF9nb2xkZW5fbGluLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM2
MDQzN2FjYWE3NjQwZGZiZjNkYjI4M2NmMWQxNTAzNGMwNjIyZS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0CisrKyAvZGV2L251bGwKQEAgLTEsNjk2
ICswLDAgQEAKLVRoZSBub24tdGVzdCBwYXJ0IG9mIHRoZSBjb2RlIGlzIGV4cGVjdGVkIHRvIGhh
dmUgMiBmYWlsdXJlcy4KLQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVl
IG9mOiBmYWxzZQotICBBY3R1YWw6IGZhbHNlCi1FeHBlY3RlZDogdHJ1ZQotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiAzCi1FeHBlY3RlZDogMgotG1swOzMybVs9
PT09PT09PT09XSAbW21SdW5uaW5nIDYwIHRlc3RzIGZyb20gMjUgdGVzdCBjYXNlcy4KLRtbMDsz
Mm1bLS0tLS0tLS0tLV0gG1ttR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotRm9vRW52
aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLgotQmFyRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVk
LgotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBBRGVhdGhUZXN0Ci0bWzA7MzJt
WyBSVU4gICAgICBdIBtbbUFEZWF0aFRlc3QuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAg
IE9LIF0gG1ttQURlYXRoVGVzdC5TaG91bGRSdW5GaXJzdAotG1swOzMybVstLS0tLS0tLS0tXSAb
W20xIHRlc3QgZnJvbSBBVHlwZWREZWF0aFRlc3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbUFUeXBlZERlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0b
WzA7MzJtWyAgICAgICBPSyBdIBtbbUFUeXBlZERlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0b
WzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEFUeXBlZERlYXRoVGVzdC8xLCB3aGVy
ZSBUeXBlUGFyYW0gPSBkb3VibGUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttQVR5cGVkRGVhdGhU
ZXN0LzEuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttQVR5cGVkRGVhdGhU
ZXN0LzEuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20g
TXkvQVR5cGVQYXJhbURlYXRoVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLRtbMDszMm1b
IFJVTiAgICAgIF0gG1ttTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0b
WzA7MzJtWyAgICAgICBPSyBdIBtbbU15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMC5TaG91bGRSdW5G
aXJzdAotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBNeS9BVHlwZVBhcmFtRGVh
dGhUZXN0LzEsIHdoZXJlIFR5cGVQYXJhbSA9IGRvdWJsZQotG1swOzMybVsgUlVOICAgICAgXSAb
W21NeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAg
IE9LIF0gG1ttTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJt
Wy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBQYXNzaW5nVGVzdAotG1swOzMybVsgUlVOICAg
ICAgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDEKLRtbMDszMm1bICAgICAgIE9LIF0gG1tt
UGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QxCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVBhc3NpbmdU
ZXN0LlBhc3NpbmdUZXN0MgotG1swOzMybVsgICAgICAgT0sgXSAbW21QYXNzaW5nVGVzdC5QYXNz
aW5nVGVzdDIKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMyB0ZXN0cyBmcm9tIEZhdGFsRmFpbHVy
ZVRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1
cmVJblN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogeAotICBBY3R1YWw6
IDIKLUV4cGVjdGVkOiAxCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3Qu
RmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFp
bHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFp
bHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVy
ZQotVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQot
G1swOzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUlu
U3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgb24gZmFsc2UpCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IGZhbHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4
cGVjdGVkOiB0cnVlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuTm9u
ZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBm
cm9tIExvZ2dpbmdUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUxvZ2dpbmdUZXN0LkludGVy
bGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24gKDMp
ID49IChhW2ldKSkKLWkgPT0gMAotaSA9PSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFp
bHVyZQotRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA5Ci1pID09IDIKLWkg
PT0gMwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAoMykgPj0g
KGFbaV0pLCBhY3R1YWw6IDMgdnMgNgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Mb2dnaW5nVGVz
dC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotG1swOzMybVstLS0tLS0tLS0tXSAb
W202IHRlc3RzIGZyb20gU0NPUEVEX1RSQUNFVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21T
Q09QRURfVFJBQ0VUZXN0Lk9iZXlzU2NvcGVzCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmFpbHVyZQotRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgaGF2
ZSBhIHRyYWNlLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RXhwZWN0ZWQgdHJhY2UKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQK
LVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuCi0b
WzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMKLRtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAotKGV4cGVjdGVk
IHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IG4K
LSAgQWN0dWFsOiAxCi1FeHBlY3RlZDogMgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogaSA9IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1W
YWx1ZSBvZjogbgotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1Hb29nbGUgVGVzdCB0cmFjZToK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBpID0gMgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21T
Q09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BF
RF9UUkFDRVRlc3QuV29ya3NJblN1YnJvdXRpbmUKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMQotRXhw
ZWN0ZWQ6IDIKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4g
PSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IG4KLSAgQWN0
dWFsOiAyCi1FeHBlY3RlZDogMQotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogbiA9IDIKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5X
b3Jrc0luU3Vicm91dGluZQotG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0
LkNhbkJlTmVzdGVkCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBGYWlsdXJlCi1WYWx1ZSBvZjogbgotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1Hb29nbGUg
VGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBuID0gMgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNh
bkJlTmVzdGVkCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVS
ZXBlYXRlZAotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFp
bHVyZQotRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFp
biB0cmFjZSBwb2ludCBBLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogQQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotVGhpcyBm
YWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSBhbmQg
Qi4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEIKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBBCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQot
RmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFj
ZSBwb2ludCBBLCBCLCBhbmQgQy4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IEMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBCCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogQQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotVGhp
cyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSwg
QiwgYW5kIEQuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBE
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEEK
LRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZVJlcGVhdGVkCi0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NDb25jdXJyZW50bHkK
LShleHBlY3RpbmcgNiBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEgKGluIHRocmVhZCBCLCBvbmx5IHRyYWNlIEIg
YWxpdmUpLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogVHJh
Y2UgQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQg
ZmFpbHVyZSAjMiAoaW4gdGhyZWFkIEEsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLgotR29vZ2xl
IFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogVHJhY2UgQQotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMyAoaW4g
dGhyZWFkIEIsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogVHJhY2UgQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjNCAoaW4gdGhyZWFkIEIsIG9ubHkg
dHJhY2UgQSBhbGl2ZSkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVk
Ci1FeHBlY3RlZCBmYWlsdXJlICM1IChpbiB0aHJlYWQgQSwgb25seSB0cmFjZSBBIGFsaXZlKS4K
LUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFRyYWNlIEEKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUg
IzYgKGluIHRocmVhZCBBLCBubyB0cmFjZSBhbGl2ZSkuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtb
bVNDT1BFRF9UUkFDRVRlc3QuV29ya3NDb25jdXJyZW50bHkKLRtbMDszMm1bLS0tLS0tLS0tLV0g
G1ttMSB0ZXN0IGZyb20gTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0Ci0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9y
VGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotKGV4cGVjdGluZyA1IGZhaWx1cmVzKQotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwg
aW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWls
dXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFNldFVwKCkuCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0
aGUgdGVzdCBib2R5LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAot
RXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gVGVhckRvd24uCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICM1LCBpbiB0aGUgdGVzdCBmaXh0
dXJlIGQndG9yLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJbkZpeHR1
cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKLRtbMDszMm1bLS0tLS0tLS0t
LV0gG1ttMSB0ZXN0IGZyb20gRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0Ci0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVz
dC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotKGV4cGVjdGluZyAyIGZhaWx1cmVzKQotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4g
dGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3Iu
Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9y
VGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3Qg
ZnJvbSBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21O
b25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotKGV4cGVjdGluZyA0IGZh
aWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0
ZWQgZmFpbHVyZSAjMSwgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWls
dXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVy
ZSAjMywgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1G
YWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi0b
WzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJ
blNldFVwCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEZhdGFsRmFpbHVyZUlu
U2V0VXBUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZUluU2V0VXBUZXN0
LkZhaWx1cmVJblNldFVwCi0oZXhwZWN0aW5nIDMgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgp
LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFp
bHVyZSAjMiwgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3Iu
Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJ
blNldFVwCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTQgdGVzdHMgZnJvbSBNaXhlZFVwVGVzdENh
c2VUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuRmlyc3RU
ZXN0RnJvbU5hbWVzcGFjZUZvbwotG1swOzMybVsgICAgICAgT0sgXSAbW21NaXhlZFVwVGVzdENh
c2VUZXN0LkZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28KLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
TWl4ZWRVcFRlc3RDYXNlVGVzdC5TZWNvbmRUZXN0RnJvbU5hbWVzcGFjZUZvbwotG1swOzMybVsg
ICAgICAgT0sgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlNlY29uZFRlc3RGcm9tTmFtZXNwYWNl
Rm9vCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3Vs
ZEZhaWwKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1l
IHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAgSG93ZXZl
ciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0IEZp
cnN0VGVzdEZyb21OYW1lc3BhY2VGb28gYW5kIHRlc3QgVGhpc1Nob3VsZEZhaWwKLXVzaW5nIHR3
byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKLXRo
ZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlv
bgotdW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVu
YW1lIG9uZQotb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0
ZXN0IGNhc2VzLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRo
aXNTaG91bGRGYWlsCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3Qu
VGhpc1Nob3VsZEZhaWxUb28KLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotQWxsIHRlc3Rz
IGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNs
YXNzLiAgSG93ZXZlciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVRlc3QsCi15b3UgZGVm
aW5lZCB0ZXN0IEZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28gYW5kIHRlc3QgVGhpc1Nob3VsZEZh
aWxUb28KLXVzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNh
biBoYXBwZW4gaWYKLXRoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNl
cyBvciB0cmFuc2xhdGlvbgotdW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91
bGQgcHJvYmFibHkgcmVuYW1lIG9uZQotb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBp
bnRvIGRpZmZlcmVudCB0ZXN0IGNhc2VzLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVw
VGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIg
dGVzdHMgZnJvbSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdAotG1swOzMybVsg
UlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNv
bmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotG1swOzMybVsgICAgICAgT0sgXSAbW21NaXhl
ZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1l
U2hvdWxkRmFpbAotG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2Ft
ZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotZ3Rlc3Qu
Y2M6IzogRmFpbHVyZQotRmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11
c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNh
c2UgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0
IFRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsIGFuZCB0ZXN0IFRoZVNlY29uZFRl
c3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCi11c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVy
ZSBjbGFzc2VzLiAgVGhpcyBjYW4gaGFwcGVuIGlmCi10aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20g
ZGlmZmVyZW50IG5hbWVzcGFjZXMgb3IgdHJhbnNsYXRpb24KLXVuaXRzIGFuZCBoYXZlIHRoZSBz
YW1lIG5hbWUuICBZb3Ugc2hvdWxkIHByb2JhYmx5IHJlbmFtZSBvbmUKLW9mIHRoZSBjbGFzc2Vz
IHRvIHB1dCB0aGUgdGVzdHMgaW50byBkaWZmZXJlbnQgdGVzdCBjYXNlcy4KLRtbMDszMW1bICBG
QUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25k
VGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0
cyBmcm9tIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZQotG1swOzMybVsgUlVO
ICAgICAgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVz
aW5nVEVTVF9GCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9z
YW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0YKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
VEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RBbmRT
aG91bGRGYWlsCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUg
c2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcywgc28g
bWl4aW5nIFRFU1RfRiBhbmQgVEVTVCBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgaXMKLWlsbGVnYWwu
ICBJbiB0ZXN0IGNhc2UgVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLAotdGVz
dCBEZWZpbmVkVXNpbmdURVNUX0YgaXMgZGVmaW5lZCB1c2luZyBURVNUX0YgYnV0Ci10ZXN0IERl
ZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsIGlzIGRlZmluZWQgdXNpbmcgVEVTVC4gIFlvdSBw
cm9iYWJseQotd2FudCB0byBjaGFuZ2UgdGhlIFRFU1QgdG8gVEVTVF9GIG9yIG1vdmUgaXQgdG8g
YW5vdGhlciB0ZXN0Ci1jYXNlLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21URVNUX0ZfYmVmb3Jl
X1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwKLRtb
MDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9z
YW1lX3Rlc3RfY2FzZQotG1swOzMybVsgUlVOICAgICAgXSAbW21URVNUX2JlZm9yZV9URVNUX0Zf
aW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVAotG1swOzMybVsgICAgICAgT0sgXSAb
W21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVAot
G1swOzMybVsgUlVOICAgICAgXSAbW21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nh
c2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogRmFpbHVyZQot
RmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1l
IHRlc3QgZml4dHVyZQotY2xhc3MsIHNvIG1peGluZyBURVNUX0YgYW5kIFRFU1QgaW4gdGhlIHNh
bWUgdGVzdCBjYXNlIGlzCi1pbGxlZ2FsLiAgSW4gdGVzdCBjYXNlIFRFU1RfYmVmb3JlX1RFU1Rf
Rl9pbl9zYW1lX3Rlc3RfY2FzZSwKLXRlc3QgRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFp
bCBpcyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKLXRlc3QgRGVmaW5lZFVzaW5nVEVTVCBpcyBk
ZWZpbmVkIHVzaW5nIFRFU1QuICBZb3UgcHJvYmFibHkKLXdhbnQgdG8gY2hhbmdlIHRoZSBURVNU
IHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRvIGFub3RoZXIgdGVzdAotY2FzZS4KLRtbMDszMW1bICBG
QUlMRUQgIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRV
c2luZ1RFU1RfRkFuZFNob3VsZEZhaWwKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttOCB0ZXN0cyBm
cm9tIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLRtbMDsz
Mm1bICAgICAgIE9LIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VH
bG9iYWxWYXJpYWJsZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWls
dXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFZhcmlhYmxlcwotG1swOzMybVsgICAgICAgT0sgXSAb
W21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVzCi0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNX
aGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1
cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWls
c1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rl
c3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFs
OiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVy
ZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJlCi0bWzA7MzJtWyBSVU4gICAg
ICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25m
YXRhbEZhaWx1cmVzCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUK
LUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMiBmYWlsdXJlcwotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3Rl
ZCBub24tZmF0YWwgZmFpbHVyZSAxLgotCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZh
dGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDIuCi0KLRtb
MDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5U
aGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi0oZXhw
ZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1m
YXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBm
YWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZh
dGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVU
ZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rl
c3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFs
OiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVy
ZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotG1swOzMybVsgUlVOICAgICAgXSAbW21F
eHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotKGV4cGVj
dGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0
YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1tt
RXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLRtbMDsz
Mm1bLS0tLS0tLS0tLV0gG1ttOCB0ZXN0cyBmcm9tIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QKLRtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VH
bG9iYWxWYXJpYWJsZXMKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
RXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFN0YXRpY1ZhcmlhYmxlcwot
G1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5j
ZUxvY2FsU3RhdGljVmFyaWFibGVzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFs
RmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotG1swOzMybVsg
ICAgICAgT0sgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNP
bmVGYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJl
KQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1
YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAgIF0g
G1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVy
ZXMKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6
IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDIgZmFpbHVyZXMKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgot
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0
ZWQgZmF0YWwgZmFpbHVyZS4KLQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcwotG1swOzMybVsgUlVO
ICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVOb25m
YXRhbEZhaWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQot
RXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWls
dXJlLgotCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFp
bHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAgICAgXSAbW21F
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLShleHBlY3Rp
bmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFp
bHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi0bWzA7MzJtWyBSVU4g
ICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dz
Ci0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAx
IGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBd
IBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi0bWzA7
MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBUeXBlZFRlc3QvMCwgd2hlcmUgVHlwZVBh
cmFtID0gaW50Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVR5cGVkVGVzdC8wLlN1Y2Nlc3MKLRtb
MDszMm1bICAgICAgIE9LIF0gG1ttVHlwZWRUZXN0LzAuU3VjY2VzcwotG1swOzMybVsgUlVOICAg
ICAgXSAbW21UeXBlZFRlc3QvMC5GYWlsdXJlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFp
bHVyZQotVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogMAotRXhwZWN0ZWQ6IDEKLUV4
cGVjdGVkIGZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVHlwZWRUZXN0LzAuRmFpbHVy
ZQotG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVW5zaWduZWQvVHlwZWRUZXN0
UC8wLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBjaGFyCi0bWzA7MzJtWyBSVU4gICAgICBd
IBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5TdWNjZXNzCi0bWzA7MzJtWyAgICAgICBPSyBdIBtb
bVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5TdWNjZXNzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVVu
c2lnbmVkL1R5cGVkVGVzdFAvMC5GYWlsdXJlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFp
bHVyZQotVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogXDAKLUV4cGVjdGVkOiAxVQot
V2hpY2ggaXM6IDEKLUV4cGVjdGVkIGZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5z
aWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0
cyBmcm9tIFVuc2lnbmVkL1R5cGVkVGVzdFAvMSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQg
aW50Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNz
Ci0bWzA7MzJtWyAgICAgICBPSyBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNzCi0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFj
dHVhbDogMAotRXhwZWN0ZWQ6IDFVCi1XaGljaCBpczogMQotRXhwZWN0ZWQgZmFpbHVyZQotG1sw
OzMxbVsgIEZBSUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZQotG1swOzMy
bVstLS0tLS0tLS0tXSAbW200IHRlc3RzIGZyb20gRXhwZWN0RmFpbHVyZVRlc3QKLRtbMDszMm1b
IFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCi0oZXhw
ZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFs
IGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1T
dWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1F
eHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUuCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0
ZWQ6IDEgZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUg
ZXhwZWN0ZWQuIgotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFp
bHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJV
TiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0oZXhw
ZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1m
YXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBTdWNjZXNz
OgotU3VjY2VlZGVkCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVy
ZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1
cmUuCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0
ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBub24tZmF0YWwg
ZmFpbHVyZS4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwg
ZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVy
ZU9uQWxsVGhyZWFkcwotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJl
Ci1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBTdWNjZXNzOgotU3VjY2VlZGVkCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rl
c3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVj
dGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNj
OiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBv
dGhlciBmYXRhbCBmYWlsdXJlIGV4cGVjdGVkLiIKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUu
Ci0KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxG
YWlsdXJlT25BbGxUaHJlYWRzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVU
ZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotKGV4cGVjdGluZyAxIGZhaWx1
cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQot
ICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2NlZWRlZAot
Ci0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAx
IG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBG
YXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0
aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRh
bCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1cmUuIgotICBB
Y3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWls
ZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtb
bUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotG1sw
OzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRz
VGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0
LkV4cGVjdEZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyAyIGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLWd0
ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAw
IGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFk
c1Rlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZh
aWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIDIg
ZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBl
Y3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAx
IG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVy
ZQotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBTY29wZWRGYWtlVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlclRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttU2NvcGVkRmFrZVRlc3RQ
YXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCi0oZXhwZWN0
aW5nIDIgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVk
Ci1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1
cmUKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0bWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbVNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdC5JbnRlcmNlcHRPbmx5
Q3VycmVudFRocmVhZAotG1swOzMybVstLS0tLS0tLS0tXSAbW21HbG9iYWwgdGVzdCBlbnZpcm9u
bWVudCB0ZWFyLWRvd24KLUJhckVudmlyb25tZW50OjpUZWFyRG93bigpIGNhbGxlZC4KLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBm
YWlsdXJlLgotRm9vRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLRtb
MDszMm1bPT09PT09PT09PV0gG1ttNjAgdGVzdHMgZnJvbSAyNSB0ZXN0IGNhc2VzIHJhbi4KLRtb
MDszMm1bICBQQVNTRUQgIF0gG1ttMjEgdGVzdHMuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbTM5
IHRlc3RzLCBsaXN0ZWQgYmVsb3c6Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVy
ZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZh
dGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi0bWzA7MzFtWyAg
RkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5l
Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUxvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdB
bmRBc3NlcnRpb25zCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuT2Jl
eXNTY29wZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0lu
TG9vcAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJy
b3V0aW5lCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0
ZWQKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZVJlcGVhdGVk
Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NDb25jdXJyZW50
bHkKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3Ry
dWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZh
dGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3Rvcgot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJl
SW5TZXRVcAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5G
YWlsdXJlSW5TZXRVcAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0
LlRoaXNTaG91bGRGYWlsCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRl
c3QuVGhpc1Nob3VsZEZhaWxUb28KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RD
YXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZh
aWwKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVz
dF9jYXNlLkRlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsCi0bWzA7MzFtWyAgRkFJTEVEICBd
IBtbbVRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNU
X0ZBbmRTaG91bGRGYWlsCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFp
bHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29O
b25mYXRhbEZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFp
bHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVy
bnMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWls
c1doZW5TdGF0ZW1lbnRUaHJvd3MKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlM
RUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFs
RmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5G
YWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtb
bUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVu
dFRocm93cwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3QvMC5GYWlsdXJlLCB3aGVy
ZSBUeXBlUGFyYW0gPSBpbnQKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRU
ZXN0UC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUsIHdoZXJlIFR5cGVQ
YXJhbSA9IHVuc2lnbmVkIGludAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJl
VGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFp
bHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4
cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFs
bFRocmVhZHMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRz
VGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFp
bHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlM
RUQgIF0gG1ttU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9u
bHlDdXJyZW50VGhyZWFkCi0KLTM5IEZBSUxFRCBURVNUUwotG1swOzMzbSAgWU9VIEhBVkUgMSBE
SVNBQkxFRCBURVNUCi0KLRtbbU5vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9IEZhdGFsRmFpbHVy
ZVRlc3QuKjpMb2dnaW5nVGVzdC4qCi1bPT09PT09PT09PV0gUnVubmluZyA0IHRlc3RzIGZyb20g
MiB0ZXN0IGNhc2VzLgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11
cC4KLVstLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdAotWyBSVU4gICAg
ICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5n
IGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmFpbHVyZQotVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotWyAgRkFJTEVE
ICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lICg/IG1zKQotWyBS
VU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5l
Ci0oZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDog
MQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJy
b3V0aW5lICg/IG1zKQotWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWls
dXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiBmYWxzZSkKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogZmFsc2UKLSAgQWN0dWFsOiBmYWxz
ZQotRXhwZWN0ZWQ6IHRydWUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFs
RmFpbHVyZUluU3Vicm91dGluZSAoPyBtcykKLVstLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0
YWxGYWlsdXJlVGVzdCAoPyBtcyB0b3RhbCkKLQotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExv
Z2dpbmdUZXN0Ci1bIFJVTiAgICAgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0Fu
ZEFzc2VydGlvbnMKLShleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKQotaSA9
PSAwCi1pID09IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDog
KDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDkKLWkgPT0gMgotaSA9PSAzCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDog
MyB2cyA2Ci1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFz
c2VydGlvbnMgKD8gbXMpCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTG9nZ2luZ1Rlc3QgKD8g
bXMgdG90YWwpCi0KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRv
d24KLVs9PT09PT09PT09XSA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2VzIHJhbi4gKD8gbXMgdG90
YWwpCi1bICBQQVNTRUQgIF0gMCB0ZXN0cy4KLVsgIEZBSUxFRCAgXSA0IHRlc3RzLCBsaXN0ZWQg
YmVsb3c6Ci1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJv
dXRpbmUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVk
U3Vicm91dGluZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJl
SW5TdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2lu
Z0FuZEFzc2VydGlvbnMKLQotIDQgRkFJTEVEIFRFU1RTCi0gIFlPVSBIQVZFIDEgRElTQUJMRUQg
VEVTVAotCi1Ob3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSAqRElTQUJMRURfKgotWz09PT09PT09
PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0tLS0tLS0tLV0gR2xvYmFs
IHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIERpc2Fi
bGVkVGVzdHNXYXJuaW5nVGVzdAotWyBSVU4gICAgICBdIERpc2FibGVkVGVzdHNXYXJuaW5nVGVz
dC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2FybmluZwotWyAg
ICAgICBPSyBdIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJs
ZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2FybmluZwotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVu
dmlyb25tZW50IHRlYXItZG93bgotWz09PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNl
IHJhbi4KLVsgIFBBU1NFRCAgXSAxIHRlc3QuCi1Ob3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSBQ
YXNzaW5nVGVzdC4qCi1Ob3RlOiBUaGlzIGlzIHRlc3Qgc2hhcmQgMSBvZiAyLgotWz09PT09PT09
PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0tLS0tLS0tLV0gR2xvYmFs
IHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIFBhc3Np
bmdUZXN0Ci1bIFJVTiAgICAgIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi1bICAgICAgIE9L
IF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52
aXJvbm1lbnQgdGVhci1kb3duCi1bPT09PT09PT09PV0gMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2Ug
cmFuLgotWyAgUEFTU0VEICBdIDEgdGVzdC4KLQotICBZT1UgSEFWRSAxIERJU0FCTEVEIFRFU1QK
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRf
dGVzdF9nb2xkZW5fd2luLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
b3V0cHV0X3Rlc3RfZ29sZGVuX3dpbi50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDMxM2MzYWFmYzMxZjVmMTAwNWM3NzQyODNlMDBiZGIwOWRlODFmNjkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fd2luLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDYwNSArMCwwIEBACi1UaGUgbm9uLXRlc3QgcGFydCBvZiB0aGUgY29kZSBpcyBleHBlY3RlZCB0
byBoYXZlIDIgZmFpbHVyZXMuCi0KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFs
dWUgb2Y6IGZhbHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4cGVjdGVkOiB0cnVlCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiAzCi1FeHBlY3RlZDogMgotWz09PT09PT09
PT1dIFJ1bm5pbmcgNjEgdGVzdHMgZnJvbSAyNyB0ZXN0IGNhc2VzLgotWy0tLS0tLS0tLS1dIEds
b2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KLUZvb0Vudmlyb25tZW50OjpTZXRVcCgpIGNh
bGxlZC4KLUJhckVudmlyb25tZW50OjpTZXRVcCgpIGNhbGxlZC4KLVstLS0tLS0tLS0tXSAxIHRl
c3QgZnJvbSBBRGVhdGhUZXN0Ci1bIFJVTiAgICAgIF0gQURlYXRoVGVzdC5TaG91bGRSdW5GaXJz
dAotWyAgICAgICBPSyBdIEFEZWF0aFRlc3QuU2hvdWxkUnVuRmlyc3QKLVstLS0tLS0tLS0tXSAx
IHRlc3QgZnJvbSBBVHlwZWREZWF0aFRlc3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci1bIFJV
TiAgICAgIF0gQVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLVsgICAgICAgT0sgXSBB
VHlwZWREZWF0aFRlc3QvMC5TaG91bGRSdW5GaXJzdAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9t
IEFUeXBlZERlYXRoVGVzdC8xLCB3aGVyZSBUeXBlUGFyYW0gPSBkb3VibGUKLVsgUlVOICAgICAg
XSBBVHlwZWREZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAotWyAgICAgICBPSyBdIEFUeXBlZERl
YXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0Ci1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTXkvQVR5
cGVQYXJhbURlYXRoVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLVsgUlVOICAgICAgXSBN
eS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLVsgICAgICAgT0sgXSBNeS9B
VHlwZVBhcmFtRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLVstLS0tLS0tLS0tXSAxIHRlc3Qg
ZnJvbSBNeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEsIHdoZXJlIFR5cGVQYXJhbSA9IGRvdWJsZQot
WyBSVU4gICAgICBdIE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAotWyAg
ICAgICBPSyBdIE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAotWy0tLS0t
LS0tLS1dIDIgdGVzdHMgZnJvbSBQYXNzaW5nVGVzdAotWyBSVU4gICAgICBdIFBhc3NpbmdUZXN0
LlBhc3NpbmdUZXN0MQotWyAgICAgICBPSyBdIFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MQotWyBS
VU4gICAgICBdIFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgotWyAgICAgICBPSyBdIFBhc3NpbmdU
ZXN0LlBhc3NpbmdUZXN0MgotWy0tLS0tLS0tLS1dIDMgdGVzdHMgZnJvbSBGYXRhbEZhaWx1cmVU
ZXN0Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRp
bmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDog
MQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5l
Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJv
dXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3Rl
ZDogMQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRT
dWJyb3V0aW5lCi1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJ
blN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIG9uIGZhbHNlKQotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogZmFsc2UKLSAgQWN0dWFsOiBmYWxzZQotRXhw
ZWN0ZWQ6IHRydWUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVy
ZUluU3Vicm91dGluZQotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExvZ2dpbmdUZXN0Ci1bIFJV
TiAgICAgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLShl
eHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKQotaSA9PSAwCi1pID09IDEKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFj
dHVhbDogMyB2cyA5Ci1pID09IDIKLWkgPT0gMwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVy
cm9yOiBFeHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDYKLVsgIEZBSUxFRCAg
XSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotWy0tLS0tLS0t
LS1dIDUgdGVzdHMgZnJvbSBTQ09QRURfVFJBQ0VUZXN0Ci1bIFJVTiAgICAgIF0gU0NPUEVEX1RS
QUNFVGVzdC5PYmV5c1Njb3BlcwotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogZXJyb3I6IEZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hv
dWxkbid0IGhhdmUgYSB0cmFjZS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFp
bGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgaGF2ZSBhIHRyYWNlLgot
R29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRXhwZWN0ZWQgdHJh
Y2UKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1UaGlzIGZhaWx1cmUg
aXMgZXhwZWN0ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNlLgotWyAgRkFJTEVEICBdIFND
T1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMKLVsgUlVOICAgICAgXSBTQ09QRURfVFJBQ0VUZXN0
LldvcmtzSW5Mb29wCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAxCi1FeHBlY3RlZDogMgotR29vZ2xlIFRl
c3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogaSA9IDEKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQot
R29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogaSA9IDIKLVsgIEZB
SUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCi1bIFJVTiAgICAgIF0gU0NPUEVE
X1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGluZQotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMQotRXhwZWN0
ZWQ6IDIKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4gPSAx
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBuCi0gIEFjdHVhbDog
MgotRXhwZWN0ZWQ6IDEKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IG4gPSAyCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGlu
ZQotWyBSVU4gICAgICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLShleHBlY3RlZCB0
byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogbgotICBB
Y3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBuID0gMgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IAotWyAgRkFJTEVEICBd
IFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLVsgUlVOICAgICAgXSBTQ09QRURfVFJBQ0VU
ZXN0LkNhbkJlUmVwZWF0ZWQKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IGVycm9yOiBGYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3Vs
ZCBjb250YWluIHRyYWNlIHBvaW50IEEuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBBCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAot
VGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQg
QSBhbmQgQi4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEIK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBBCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJy
b3I6IEZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4g
dHJhY2UgcG9pbnQgQSwgQiwgYW5kIEMuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBDCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1U
aGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBB
LCBCLCBhbmQgRC4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IEQKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBCCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
QQotWyAgRkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVSZXBlYXRlZAotWy0tLS0tLS0t
LS1dIDEgdGVzdCBmcm9tIE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdAot
WyBSVU4gICAgICBdIE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWls
dXJlSW5Db25zdHJ1Y3RvcgotKGV4cGVjdGluZyA1IGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0
IGZpeHR1cmUgYyd0b3IuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAot
RXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBib2R5Lgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUg
IzQsIGluIFRlYXJEb3duLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQK
LUV4cGVjdGVkIGZhaWx1cmUgIzUsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi1bICBGQUlM
RUQgIF0gTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNv
bnN0cnVjdG9yCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRmF0YWxGYWlsdXJlSW5GaXh0dXJl
Q29uc3RydWN0b3JUZXN0Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3Ry
dWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMpCi1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAj
MSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBl
cnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQn
dG9yLgotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5G
YWlsdXJlSW5Db25zdHJ1Y3RvcgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIE5vbkZhdGFsRmFp
bHVyZUluU2V0VXBUZXN0Ci1bIFJVTiAgICAgIF0gTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3Qu
RmFpbHVyZUluU2V0VXAKLShleHBlY3RpbmcgNCBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUg
IzIsIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9y
OiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIFRlYXJEb3duKCkuCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gdGhl
IHRlc3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAgXSBOb25GYXRhbEZhaWx1cmVJblNldFVw
VGVzdC5GYWlsdXJlSW5TZXRVcAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIEZhdGFsRmFpbHVy
ZUluU2V0VXBUZXN0Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVy
ZUluU2V0VXAKLShleHBlY3RpbmcgMyBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLgotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGlu
IFRlYXJEb3duKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhw
ZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAg
XSBGYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotWy0tLS0tLS0tLS1dIDEg
dGVzdCBmcm9tIEV4Y2VwdGlvbkluRml4dHVyZUN0b3JUZXN0Ci1bIFJVTiAgICAgIF0gRXhjZXB0
aW9uSW5GaXh0dXJlQ3RvclRlc3QuRXhjZXB0aW9uSW5GaXh0dXJlQ3RvcgotKGV4cGVjdGluZyBh
IGZhaWx1cmUgb24gdGhyb3duIGV4Y2VwdGlvbiBpbiB0aGUgdGVzdCBmaXh0dXJlJ3MgY29uc3Ry
dWN0b3IpCi11bmtub3duIGZpbGU6IGVycm9yOiBFeGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAw
eGMwMDAwMDA1IGluIHRoZSB0ZXN0IGZpeHR1cmUncyBjb25zdHJ1Y3Rvci4KLVstLS0tLS0tLS0t
XSAxIHRlc3QgZnJvbSBFeGNlcHRpb25JblNldFVwVGVzdAotWyBSVU4gICAgICBdIEV4Y2VwdGlv
bkluU2V0VXBUZXN0LkV4Y2VwdGlvbkluU2V0VXAKLShleHBlY3RpbmcgMyBmYWlsdXJlcykKLXVu
a25vd24gZmlsZTogZXJyb3I6IEV4Y2VwdGlvbiB0aHJvd24gd2l0aCBjb2RlIDB4YzAwMDAwMDUg
aW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBl
Y3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUg
ZCd0b3IuCi1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5TZXRVcFRlc3QuRXhjZXB0aW9uSW5TZXRV
cAotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QK
LVsgUlVOICAgICAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QuU0VICi0oZXhwZWN0aW5n
IDMgZmFpbHVyZXMpCi11bmtub3duIGZpbGU6IGVycm9yOiBFeGNlcHRpb24gdGhyb3duIHdpdGgg
Y29kZSAweGMwMDAwMDA1IGluIHRoZSB0ZXN0IGJvZHkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4KLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMz
LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIEV4Y2VwdGlvbkluVGVz
dEZ1bmN0aW9uVGVzdC5TRUgKLVsgUlVOICAgICAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRl
c3QuQ3BwRXhjZXB0aW9uCi11bmtub3duIGZpbGU6IGVycm9yOiBFeGNlcHRpb24gdGhyb3duIHdp
dGggY29kZSAweGUwNmQ3MzYzIGluIHRoZSB0ZXN0IGJvZHkuCi1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4K
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJl
ICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIEV4Y2VwdGlvbklu
VGVzdEZ1bmN0aW9uVGVzdC5DcHBFeGNlcHRpb24KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBF
eGNlcHRpb25JblRlYXJEb3duVGVzdAotWyBSVU4gICAgICBdIEV4Y2VwdGlvbkluVGVhckRvd25U
ZXN0LkV4Y2VwdGlvbkluVGVhckRvd24KLShleHBlY3RpbmcgMiBmYWlsdXJlcykKLXVua25vd24g
ZmlsZTogZXJyb3I6IEV4Y2VwdGlvbiB0aHJvd24gd2l0aCBjb2RlIDB4ZTA2ZDczNjMgaW4gVGVh
ckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3Rl
ZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIEV4
Y2VwdGlvbkluVGVhckRvd25UZXN0LkV4Y2VwdGlvbkluVGVhckRvd24KLVstLS0tLS0tLS0tXSA0
IHRlc3RzIGZyb20gTWl4ZWRVcFRlc3RDYXNlVGVzdAotWyBSVU4gICAgICBdIE1peGVkVXBUZXN0
Q2FzZVRlc3QuRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbwotWyAgICAgICBPSyBdIE1peGVkVXBU
ZXN0Q2FzZVRlc3QuRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbwotWyBSVU4gICAgICBdIE1peGVk
VXBUZXN0Q2FzZVRlc3QuU2Vjb25kVGVzdEZyb21OYW1lc3BhY2VGb28KLVsgICAgICAgT0sgXSBN
aXhlZFVwVGVzdENhc2VUZXN0LlNlY29uZFRlc3RGcm9tTmFtZXNwYWNlRm9vCi1bIFJVTiAgICAg
IF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogZXJyb3I6
IEZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2Ft
ZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAgSG93ZXZlciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0
Q2FzZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0IEZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28gYW5k
IHRlc3QgVGhpc1Nob3VsZEZhaWwKLXVzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNs
YXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKLXRoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZm
ZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlvbgotdW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUg
bmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVuYW1lIG9uZQotb2YgdGhlIGNsYXNzZXMgdG8g
cHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0ZXN0IGNhc2VzLgotWyAgRkFJTEVEICBdIE1p
eGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwKLVsgUlVOICAgICAgXSBNaXhlZFVwVGVz
dENhc2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCi1ndGVzdC5jYzojOiBlcnJvcjogRmFpbGVkCi1B
bGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4
dHVyZQotY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlVGVzdCwK
LXlvdSBkZWZpbmVkIHRlc3QgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbyBhbmQgdGVzdCBUaGlz
U2hvdWxkRmFpbFRvbwotdXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4g
IFRoaXMgY2FuIGhhcHBlbiBpZgotdGhlIHR3byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVudCBu
YW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCi11bml0cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAg
WW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25lCi1vZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhl
IHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMuCi1bICBGQUlMRUQgIF0gTWl4ZWRVcFRl
c3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbFRvbwotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBN
aXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdAotWyBSVU4gICAgICBdIE1peGVkVXBU
ZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91
bGRGYWlsCi1bICAgICAgIE9LIF0gTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3Qu
VGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLVsgUlVOICAgICAgXSBNaXhlZFVw
VGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hv
dWxkRmFpbAotZ3Rlc3QuY2M6IzogZXJyb3I6IEZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1l
IHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAgSG93ZXZl
ciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAoteW91
IGRlZmluZWQgdGVzdCBUaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbCBhbmQgdGVz
dCBUaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotdXNpbmcgdHdvIGRpZmZlcmVu
dCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBlbiBpZgotdGhlIHR3byBjbGFz
c2VzIGFyZSBmcm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCi11bml0cyBh
bmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAgWW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25lCi1v
ZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMu
Ci1bICBGQUlMRUQgIF0gTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vj
b25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLVstLS0tLS0tLS0tXSAyIHRlc3RzIGZyb20g
VEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlCi1bIFJVTiAgICAgIF0gVEVTVF9G
X2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRgotWyAgICAg
ICBPSyBdIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdU
RVNUX0YKLVsgUlVOICAgICAgXSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2Uu
RGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwKLWd0ZXN0LmNjOiM6IGVycm9yOiBGYWlsZWQK
LUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBm
aXh0dXJlCi1jbGFzcywgc28gbWl4aW5nIFRFU1RfRiBhbmQgVEVTVCBpbiB0aGUgc2FtZSB0ZXN0
IGNhc2UgaXMKLWlsbGVnYWwuICBJbiB0ZXN0IGNhc2UgVEVTVF9GX2JlZm9yZV9URVNUX2luX3Nh
bWVfdGVzdF9jYXNlLAotdGVzdCBEZWZpbmVkVXNpbmdURVNUX0YgaXMgZGVmaW5lZCB1c2luZyBU
RVNUX0YgYnV0Ci10ZXN0IERlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsIGlzIGRlZmluZWQg
dXNpbmcgVEVTVC4gIFlvdSBwcm9iYWJseQotd2FudCB0byBjaGFuZ2UgdGhlIFRFU1QgdG8gVEVT
VF9GIG9yIG1vdmUgaXQgdG8gYW5vdGhlciB0ZXN0Ci1jYXNlLgotWyAgRkFJTEVEICBdIFRFU1Rf
Rl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxk
RmFpbAotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2Ft
ZV90ZXN0X2Nhc2UKLVsgUlVOICAgICAgXSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0
X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVAotWyAgICAgICBPSyBdIFRFU1RfYmVmb3JlX1RFU1RfRl9p
bl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUCi1bIFJVTiAgICAgIF0gVEVTVF9iZWZv
cmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZh
aWwKLWd0ZXN0LmNjOiM6IGVycm9yOiBGYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0
IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcywgc28gbWl4aW5nIFRF
U1RfRiBhbmQgVEVTVCBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgaXMKLWlsbGVnYWwuICBJbiB0ZXN0
IGNhc2UgVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLAotdGVzdCBEZWZpbmVk
VXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsIGlzIGRlZmluZWQgdXNpbmcgVEVTVF9GIGJ1dAotdGVz
dCBEZWZpbmVkVXNpbmdURVNUIGlzIGRlZmluZWQgdXNpbmcgVEVTVC4gIFlvdSBwcm9iYWJseQot
d2FudCB0byBjaGFuZ2UgdGhlIFRFU1QgdG8gVEVTVF9GIG9yIG1vdmUgaXQgdG8gYW5vdGhlciB0
ZXN0Ci1jYXNlLgotWyAgRkFJTEVEICBdIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3Rf
Y2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsCi1bLS0tLS0tLS0tLV0gOCB0ZXN0
cyBmcm9tIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QKLVsgUlVOICAgICAgXSBFeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotWyAgICAgICBPSyBd
IEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCi1b
IFJVTiAgICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFZh
cmlhYmxlcwotWyAgICAgICBPSyBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJl
bmNlTG9jYWxWYXJpYWJsZXMKLVsgUlVOICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKLVsgICAgICAgT0sgXSBFeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1
cmUKLVsgUlVOICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJl
SXNOb05vbmZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBl
cnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVz
Ci1bICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlz
Tm9Ob25mYXRhbEZhaWx1cmUKLVsgUlVOICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LkZhaWxzV2hlblRoZXJlQXJlVHdvTm9uZmF0YWxGYWlsdXJlcwotKGV4cGVjdGluZyBhIGZhaWx1
cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAg
QWN0dWFsOiAyIGZhaWx1cmVzCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZh
aWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDEuCi0KLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9u
LWZhdGFsIGZhaWx1cmUgMi4KLQotWyAgRkFJTEVEICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRl
c3QuRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1cmVzCi1bIFJVTiAgICAgIF0gRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi0o
ZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24t
ZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwg
ZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotWyAgRkFJTEVEICBd
IEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVy
ZQotWyBSVU4gICAgICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVt
ZW50UmV0dXJucwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhw
ZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi1bICBGQUlM
RUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5z
Ci1bIFJVTiAgICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1l
bnRUaHJvd3MKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVj
dGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotWyAgRkFJTEVE
ICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi1b
LS0tLS0tLS0tLV0gOCB0ZXN0cyBmcm9tIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QKLVsgUlVOICAg
ICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwot
WyAgICAgICBPSyBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFy
aWFibGVzCi1bIFJVTiAgICAgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VM
b2NhbFN0YXRpY1ZhcmlhYmxlcwotWyAgICAgICBPSyBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qu
Q2FuUmVmZXJlbmNlTG9jYWxTdGF0aWNWYXJpYWJsZXMKLVsgUlVOICAgICAgXSBFeHBlY3RGYXRh
bEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLVsgICAgICAg
T0sgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZh
aWx1cmUKLVsgUlVOICAgICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJl
SXNOb0ZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJv
cjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsgIEZB
SUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFp
bHVyZQotWyBSVU4gICAgICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVB
cmVUd29GYXRhbEZhaWx1cmVzCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVy
cm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMiBmYWlsdXJlcwotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZh
dGFsIGZhaWx1cmUuCi0KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgot
RmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQgIF0gRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMKLVsgUlVOICAg
ICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZh
aWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVk
OiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5v
bi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQot
WyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZU5v
bmZhdGFsRmFpbHVyZQotWyBSVU4gICAgICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNX
aGVuU3RhdGVtZW50UmV0dXJucwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBl
cnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsg
IEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVy
bnMKLVsgUlVOICAgICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVu
dFRocm93cwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0
ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBF
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotWy0tLS0tLS0t
LS1dIDIgdGVzdHMgZnJvbSBUeXBlZFRlc3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci1bIFJV
TiAgICAgIF0gVHlwZWRUZXN0LzAuU3VjY2VzcwotWyAgICAgICBPSyBdIFR5cGVkVGVzdC8wLlN1
Y2Nlc3MKLVsgUlVOICAgICAgXSBUeXBlZFRlc3QvMC5GYWlsdXJlCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBUeXBlUGFyYW0oKQotICBBY3R1YWw6IDAKLUV4cGVj
dGVkOiAxCi1FeHBlY3RlZCBmYWlsdXJlCi1bICBGQUlMRUQgIF0gVHlwZWRUZXN0LzAuRmFpbHVy
ZQotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAsIHdoZXJl
IFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKLVsgUlVOICAgICAgXSBVbnNpZ25lZC9UeXBlZFRl
c3RQLzAuU3VjY2VzcwotWyAgICAgICBPSyBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMC5TdWNjZXNz
Ci1bIFJVTiAgICAgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogXDAK
LUV4cGVjdGVkOiAxVQotV2hpY2ggaXM6IDEKLUV4cGVjdGVkIGZhaWx1cmUKLVsgIEZBSUxFRCAg
XSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZQotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJv
bSBVbnNpZ25lZC9UeXBlZFRlc3RQLzEsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAot
WyBSVU4gICAgICBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNzCi1bICAgICAgIE9LIF0g
VW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1Y2Nlc3MKLVsgUlVOICAgICAgXSBVbnNpZ25lZC9UeXBl
ZFRlc3RQLzEuRmFpbHVyZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBv
ZjogVHlwZVBhcmFtKCkKLSAgQWN0dWFsOiAwCi1FeHBlY3RlZDogMVUKLVdoaWNoIGlzOiAxCi1F
eHBlY3RlZCBmYWlsdXJlCi1bICBGQUlMRUQgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1
cmUKLVstLS0tLS0tLS0tXSA0IHRlc3RzIGZyb20gRXhwZWN0RmFpbHVyZVRlc3QKLVsgUlVOICAg
ICAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgMSBm
YWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAg
QWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1TdWNjZWVkZWQKLQot
KGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0
YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFs
IGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0
aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWls
dXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBlY3RlZC4iCi0gIEFj
dHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1F
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQgIF0gRXhwZWN0RmFpbHVyZVRlc3Qu
RXhwZWN0RmF0YWxGYWlsdXJlCi1bIFJVTiAgICAgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0
Tm9uRmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9y
OiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2NlZWRlZAotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkK
LWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1
YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhw
ZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzoj
OiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBv
dGhlciBub24tZmF0YWwgZmFpbHVyZS4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUuCi0KLVsgIEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1
cmUKLVsgUlVOICAgICAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFs
bFRocmVhZHMKLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVj
dGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IFN1Y2Nlc3M6Ci1TdWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzoj
OiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1m
YXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9y
OiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwg
ZmFpbHVyZSBleHBlY3RlZC4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBG
YXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi1bICBGQUlM
RUQgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi1b
IFJVTiAgICAgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxU
aHJlYWRzCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3Rl
ZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogU3VjY2VzczoKLVN1Y2NlZWRlZAotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNj
OiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0
YWwgZmFpbHVyZS4KLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjog
RXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBub24t
ZmF0YWwgZmFpbHVyZS4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24t
ZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLVsg
IEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRo
cmVhZHMKLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KLUJh
ckVudmlyb25tZW50OjpUZWFyRG93bigpIGNhbGxlZC4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLUZvb0Vudmlyb25t
ZW50OjpUZWFyRG93bigpIGNhbGxlZC4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjog
RmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotWz09PT09PT09PT1dIDYxIHRlc3RzIGZy
b20gMjcgdGVzdCBjYXNlcyByYW4uCi1bICBQQVNTRUQgIF0gMjEgdGVzdHMuCi1bICBGQUlMRUQg
IF0gNDAgdGVzdHMsIGxpc3RlZCBiZWxvdzoKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0
LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3Qu
RmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJl
VGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBMb2dnaW5nVGVz
dC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotWyAgRkFJTEVEICBdIFNDT1BFRF9U
UkFDRVRlc3QuT2JleXNTY29wZXMKLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0Lldvcmtz
SW5Mb29wCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGluZQot
WyAgRkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLVsgIEZBSUxFRCAgXSBT
Q09QRURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKLVsgIEZBSUxFRCAgXSBOb25GYXRhbEZhaWx1
cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKLVsgIEZBSUxF
RCAgXSBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3Ry
dWN0b3IKLVsgIEZBSUxFRCAgXSBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5T
ZXRVcAotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVw
Ci1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3QuRXhjZXB0aW9uSW5GaXh0
dXJlQ3RvcgotWyAgRkFJTEVEICBdIEV4Y2VwdGlvbkluU2V0VXBUZXN0LkV4Y2VwdGlvbkluU2V0
VXAKLVsgIEZBSUxFRCAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QuU0VICi1bICBGQUlM
RUQgIF0gRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0LkNwcEV4Y2VwdGlvbgotWyAgRkFJTEVE
ICBdIEV4Y2VwdGlvbkluVGVhckRvd25UZXN0LkV4Y2VwdGlvbkluVGVhckRvd24KLVsgIEZBSUxF
RCAgXSBNaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsCi1bICBGQUlMRUQgIF0gTWl4
ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbFRvbwotWyAgRkFJTEVEICBdIE1peGVkVXBU
ZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91
bGRGYWlsCi1bICBGQUlMRUQgIF0gVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNl
LkRlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsCi1bICBGQUlMRUQgIF0gVEVTVF9iZWZvcmVf
VEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwK
LVsgIEZBSUxFRCAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNO
b05vbmZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qu
RmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi1bICBG
QUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1
cm5zCi1bICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0
ZW1lbnRUaHJvd3MKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hl
blRoZXJlSXNOb0ZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRl
c3QuRmFpbHNXaGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi1bICBG
QUlMRUQgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5z
Ci1bICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRU
aHJvd3MKLVsgIEZBSUxFRCAgXSBUeXBlZFRlc3QvMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0g
PSBpbnQKLVsgIEZBSUxFRCAgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZSwgd2hlcmUg
VHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgotWyAgRkFJTEVEICBdIFVuc2lnbmVkL1R5cGVkVGVz
dFAvMS5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKLVsgIEZBSUxFRCAg
XSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLVsgIEZBSUxFRCAgXSBFeHBl
Y3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLVsgIEZBSUxFRCAgXSBFeHBlY3RG
YWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLVsgIEZBSUxFRCAgXSBF
eHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLQotNDAg
RkFJTEVEIFRFU1RTCi0gIFlPVSBIQVZFIDEgRElTQUJMRUQgVEVTVAotCi1Ob3RlOiBHb29nbGUg
VGVzdCBmaWx0ZXIgPSBGYXRhbEZhaWx1cmVUZXN0Lio6TG9nZ2luZ1Rlc3QuKgotWz09PT09PT09
PT1dIFJ1bm5pbmcgNCB0ZXN0cyBmcm9tIDIgdGVzdCBjYXNlcy4KLVstLS0tLS0tLS0tXSBHbG9i
YWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCi1bLS0tLS0tLS0tLV0gMyB0ZXN0cyBmcm9tIEZh
dGFsRmFpbHVyZVRlc3QKLVsgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVy
ZUluU3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogeAotICBBY3R1YWw6IDIK
LUV4cGVjdGVkOiAxCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJ
blN1YnJvdXRpbmUgKD8gbXMpCi1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZh
aWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91
bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IHgKLSAg
QWN0dWFsOiAyCi1FeHBlY3RlZDogMQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0
YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lICg/IG1zKQotWyBSVU4gICAgICBdIEZhdGFsRmFp
bHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVy
ZSBvbiBmYWxzZSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IGZh
bHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4cGVjdGVkOiB0cnVlCi1bICBGQUlMRUQgIF0gRmF0YWxG
YWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUgKD8gbXMpCi1bLS0tLS0tLS0t
LV0gMyB0ZXN0cyBmcm9tIEZhdGFsRmFpbHVyZVRlc3QgKD8gbXMgdG90YWwpCi0KLVstLS0tLS0t
LS0tXSAxIHRlc3QgZnJvbSBMb2dnaW5nVGVzdAotWyBSVU4gICAgICBdIExvZ2dpbmdUZXN0Lklu
dGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24g
KDMpID49IChhW2ldKSkKLWkgPT0gMAotaSA9PSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
ZXJyb3I6IEV4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgOQotaSA9PSAyCi1p
ID09IDMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6ICgzKSA+PSAo
YVtpXSksIGFjdHVhbDogMyB2cyA2Ci1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2
aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMgKD8gbXMpCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20g
TG9nZ2luZ1Rlc3QgKD8gbXMgdG90YWwpCi0KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZp
cm9ubWVudCB0ZWFyLWRvd24KLVs9PT09PT09PT09XSA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2Vz
IHJhbi4gKD8gbXMgdG90YWwpCi1bICBQQVNTRUQgIF0gMCB0ZXN0cy4KLVsgIEZBSUxFRCAgXSA0
IHRlc3RzLCBsaXN0ZWQgYmVsb3c6Ci1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRh
bEZhaWx1cmVJblN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFs
RmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3Qu
Tm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50
ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLQotIDQgRkFJTEVEIFRFU1RTCi0gIFlPVSBI
QVZFIDEgRElTQUJMRUQgVEVTVAotCi1Ob3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSAqRElTQUJM
RURfKgotWz09PT09PT09PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0t
LS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDEg
dGVzdCBmcm9tIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdAotWyBSVU4gICAgICBdIERpc2FibGVk
VGVzdHNXYXJuaW5nVGVzdC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVz
c2VzV2FybmluZwotWyAgICAgICBPSyBdIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdC5ESVNBQkxF
RF9BbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2FybmluZwotWy0tLS0tLS0tLS1d
IEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgotWz09PT09PT09PT1dIDEgdGVzdCBm
cm9tIDEgdGVzdCBjYXNlIHJhbi4KLVsgIFBBU1NFRCAgXSAxIHRlc3QuCi1Ob3RlOiBHb29nbGUg
VGVzdCBmaWx0ZXIgPSBQYXNzaW5nVGVzdC4qCi1Ob3RlOiBUaGlzIGlzIHRlc3Qgc2hhcmQgMSBv
ZiAyLgotWz09PT09PT09PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0t
LS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDEg
dGVzdCBmcm9tIFBhc3NpbmdUZXN0Ci1bIFJVTiAgICAgIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rl
c3QyCi1bICAgICAgIE9LIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi1bLS0tLS0tLS0tLV0g
R2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCi1bPT09PT09PT09PV0gMSB0ZXN0IGZy
b20gMSB0ZXN0IGNhc2UgcmFuLgotWyAgUEFTU0VEICBdIDEgdGVzdC4KLQotICBZT1UgSEFWRSAx
IERJU0FCTEVEIFRFU1QKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF9wcmVkX2ltcGxfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X3ByZWRfaW1wbF91bml0dGVzdC5jYwppbmRleCBlN2VlNTRiNTZkODZiOWVhNTRi
NzE2MTI1ODY5YWEyODdkMTI2YmU3Li5iNDY2YzE1MGFlZGM0M2ZkYjEwMzczYjdhODAyY2NiZTc3
NTc5MGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3By
ZWRfaW1wbF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X3ByZWRfaW1wbF91bml0dGVzdC5jYwpAQCAtMjcsNyArMjcsNyBAQAogLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogCi0vLyBUaGlzIGZpbGUgaXMgQVVUT01BVElDQUxMWSBHRU5F
UkFURUQgb24gMTAvMDIvMjAwOCBieSBjb21tYW5kCisvLyBUaGlzIGZpbGUgaXMgQVVUT01BVElD
QUxMWSBHRU5FUkFURUQgb24gMDEvMDIvMjAxOCBieSBjb21tYW5kCiAvLyAnZ2VuX2d0ZXN0X3By
ZWRfaW1wbC5weSA1Jy4gIERPIE5PVCBFRElUIEJZIEhBTkQhCiAKIC8vIFJlZ3Jlc3Npb24gdGVz
dCBmb3IgZ3Rlc3RfcHJlZF9pbXBsLmgKQEAgLTQ5LDggKzQ5LDggQEAKIAogI2luY2x1ZGUgPGlv
c3RyZWFtPgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC1zcGkuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LXNwaS5oIgogCiAvLyBBIHVzZXItZGVmaW5lZCBkYXRhIHR5cGUuCiBzdHJ1Y3QgQm9vbCB7CkBA
IC0xMDMsMTEgKzEwMywxMCBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1
bmN0aW9uMShjb25zdCBjaGFyKiBlMSwKICAgaWYgKFByZWRGdW5jdGlvbjEodjEpKQogICAgIHJl
dHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgdGVzdGluZzo6TWVzc2FnZSBt
c2c7Ci0gIG1zZyA8PCBlMQorICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisg
ICAgICA8PCBlMQogICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBiZSBwb3NpdGl2ZSwgYnV0IGV2
YWx1YXRlcyB0byAiCiAgICAgICA8PCB2MSA8PCAiLiI7Ci0gIHJldHVybiB0ZXN0aW5nOjpBc3Nl
cnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIC8vIEEgdW5hcnkgcHJlZGljYXRlLWZvcm1hdHRlciBm
dW5jdG9yLgpAQCAtNDk0LDExICs0OTMsMTAgQEAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFBy
ZWRGb3JtYXRGdW5jdGlvbjIoY29uc3QgY2hhciogZTEsCiAgIGlmIChQcmVkRnVuY3Rpb24yKHYx
LCB2MikpCiAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0
aW5nOjpNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGUxIDw8ICIgKyAiIDw8IGUyCisgIHJldHVybiB0
ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IGUxIDw8ICIgKyAiIDw8IGUyCiAg
ICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIK
ICAgICAgIDw8IHYxICsgdjIgPDwgIi4iOwotICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFp
bHVyZShtc2cpOwogfQogCiAvLyBBIGJpbmFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3Iu
CkBAIC05MjcsMTEgKzkyNSwxMCBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1h
dEZ1bmN0aW9uMyhjb25zdCBjaGFyKiBlMSwKICAgaWYgKFByZWRGdW5jdGlvbjModjEsIHYyLCB2
MykpCiAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5n
OjpNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUz
CisgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IGUxIDw8ICIg
KyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUzCiAgICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJlIHBv
c2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKICAgICAgIDw8IHYxICsgdjIgKyB2MyA8PCAiLiI7
Ci0gIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIC8vIEEgdGVy
bmFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3IuCkBAIC0xNDAyLDExICsxMzk5LDEwIEBA
IHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rpb240KGNvbnN0IGNoYXIq
IGUxLAogICBpZiAoUHJlZEZ1bmN0aW9uNCh2MSwgdjIsIHYzLCB2NCkpCiAgICAgcmV0dXJuIHRl
c3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5nOjpNZXNzYWdlIG1zZzsKLSAg
bXNnIDw8IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUzIDw8ICIgKyAiIDw8IGU0Cisg
IHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IGUxIDw8ICIgKyAi
IDw8IGUyIDw8ICIgKyAiIDw8IGUzIDw8ICIgKyAiIDw8IGU0CiAgICAgICA8PCAiIGlzIGV4cGVj
dGVkIHRvIGJlIHBvc2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKICAgICAgIDw8IHYxICsgdjIg
KyB2MyArIHY0IDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNn
KTsKIH0KIAogLy8gQSA0LWFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3IuCkBAIC0xOTE5
LDExICsxOTE1LDEwIEBAIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rp
b241KGNvbnN0IGNoYXIqIGUxLAogICBpZiAoUHJlZEZ1bmN0aW9uNSh2MSwgdjIsIHYzLCB2NCwg
djUpKQogICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgdGVzdGlu
Zzo6TWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBl
MyA8PCAiICsgIiA8PCBlNCA8PCAiICsgIiA8PCBlNQorICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0
aW9uRmFpbHVyZSgpCisgICAgICA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBlMyA8
PCAiICsgIiA8PCBlNCA8PCAiICsgIiA8PCBlNQogICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBi
ZSBwb3NpdGl2ZSwgYnV0IGV2YWx1YXRlcyB0byAiCiAgICAgICA8PCB2MSArIHYyICsgdjMgKyB2
NCArIHY1IDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNnKTsK
IH0KIAogLy8gQSA1LWFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3IuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZW1hdHVyZV9leGl0X3Rlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZW1hdHVyZV9leGl0X3Rl
c3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzFlOTMwNTZkOGI1NjJjNTlmZWJhODI3OGUyMGMyOWRmMTNlMTkx
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
cHJlbWF0dXJlX2V4aXRfdGVzdC5jYwpAQCAtMCwwICsxLDEyNiBAQAorLy8gQ29weXJpZ2h0IDIw
MTMsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisv
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gVGVzdHMgdGhhdCBHb29nbGUg
VGVzdCBtYW5pcHVsYXRlcyB0aGUgcHJlbWF0dXJlLWV4aXQtZGV0ZWN0aW9uCisvLyBmaWxlIGNv
cnJlY3RseS4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgorCit1c2luZyA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0OwordXNpbmcgOjp0ZXN0aW5nOjpU
ZXN0OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OkdldEVudjsKK3VzaW5nIDo6
dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpTdGF0OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6cG9zaXg6OlN0YXRTdHJ1Y3Q7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIFByZW1hdHVyZUV4
aXRUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0
aGUgZ2l2ZW4gZmlsZSBleGlzdHMuCisgIHN0YXRpYyBib29sIEZpbGVFeGlzdHMoY29uc3QgY2hh
ciogZmlsZXBhdGgpIHsKKyAgICBTdGF0U3RydWN0IHN0YXQ7CisgICAgcmV0dXJuIFN0YXQoZmls
ZXBhdGgsICZzdGF0KSA9PSAwOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIFByZW1hdHVyZUV4aXRU
ZXN0KCkgeworICAgIHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8gPSBHZXRFbnYoIlRFU1RfUFJF
TUFUVVJFX0VYSVRfRklMRSIpOworCisgICAgLy8gTm9ybWFsaXplIE5VTEwgdG8gIiIgZm9yIGVh
c2Ugb2YgaGFuZGxpbmcuCisgICAgaWYgKHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8gPT0gTlVM
TCkgeworICAgICAgcHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXyA9ICIiOworICAgIH0KKyAgfQor
CisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHByZW1hdHVyZS1leGl0IGZpbGUgZXhpc3RzLgor
ICBib29sIFByZW1hdHVyZUV4aXRGaWxlRXhpc3RzKCkgY29uc3QgeworICAgIHJldHVybiBGaWxl
RXhpc3RzKHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8pOworICB9CisKKyAgY29uc3QgY2hhciog
cHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXzsKK307CisKK3R5cGVkZWYgUHJlbWF0dXJlRXhpdFRl
c3QgUHJlbWF0dXJlRXhpdERlYXRoVGVzdDsKKworLy8gVGVzdHMgdGhhdDoKKy8vICAgLSB0aGUg
cHJlbWF0dXJlLWV4aXQgZmlsZSBleGlzdHMgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgYQorLy8g
ICAgIGRlYXRoIHRlc3QgKEVYUEVDVF9ERUFUSCopLCBhbmQKKy8vICAgLSBhIGRlYXRoIHRlc3Qg
ZG9lc24ndCBpbnRlcmZlcmUgd2l0aCB0aGUgbWFpbiB0ZXN0IHByb2Nlc3MncworLy8gICAgIGhh
bmRsaW5nIG9mIHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlLgorVEVTVF9GKFByZW1hdHVyZUV4aXRE
ZWF0aFRlc3QsIEZpbGVFeGlzdHNEdXJpbmdFeGVjdXRpb25PZkRlYXRoVGVzdCkgeworICBpZiAo
KnByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8gPT0gJ1wwJykgeworICAgIHJldHVybjsKKyAgfQor
CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoeworICAgICAgLy8gSWYgdGhlIGZpbGUgZXhp
c3RzLCBjcmFzaCB0aGUgcHJvY2VzcyBzdWNoIHRoYXQgdGhlIG1haW4gdGVzdAorICAgICAgLy8g
cHJvY2VzcyB3aWxsIGNhdGNoIHRoZSAoZXhwZWN0ZWQpIGNyYXNoIGFuZCByZXBvcnQgYSBzdWNj
ZXNzOworICAgICAgLy8gb3RoZXJ3aXNlIGRvbid0IGNyYXNoLCB3aGljaCB3aWxsIGNhdXNlIHRo
ZSBtYWluIHRlc3QgcHJvY2VzcworICAgICAgLy8gdG8gcmVwb3J0IHRoYXQgdGhlIGRlYXRoIHRl
c3QgaGFzIGZhaWxlZC4KKyAgICAgIGlmIChQcmVtYXR1cmVFeGl0RmlsZUV4aXN0cygpKSB7Cisg
ICAgICAgIGV4aXQoMSk7CisgICAgICB9CisgICAgfSwgIiIpOworfQorCisvLyBUZXN0cyB0aGF0
IHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlIGV4aXN0cyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiBh
CisvLyBub3JtYWwgKG5vbi1kZWF0aCkgdGVzdC4KK1RFU1RfRihQcmVtYXR1cmVFeGl0VGVzdCwg
UHJlbWF0dXJlRXhpdEZpbGVFeGlzdHNEdXJpbmdUZXN0RXhlY3V0aW9uKSB7CisgIGlmICgqcHJl
bWF0dXJlX2V4aXRfZmlsZV9wYXRoXyA9PSAnXDAnKSB7CisgICAgcmV0dXJuOworICB9CisKKyAg
RVhQRUNUX1RSVUUoUHJlbWF0dXJlRXhpdEZpbGVFeGlzdHMoKSkKKyAgICAgIDw8ICIgZmlsZSAi
IDw8IHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8KKyAgICAgIDw8ICIgc2hvdWxkIGV4aXN0IGR1
cmluZyB0ZXN0IGV4ZWN1dGlvbiwgYnV0IGRvZXNuJ3QuIjsKK30KKworfSAgLy8gbmFtZXNwYWNl
CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICBJbml0R29vZ2xlVGVzdCgm
YXJnYywgYXJndik7CisgIGNvbnN0IGludCBleGl0X2NvZGUgPSBSVU5fQUxMX1RFU1RTKCk7CisK
KyAgLy8gVGVzdCB0aGF0IHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlIGlzIGRlbGV0ZWQgdXBvbiBy
ZXR1cm4gZnJvbQorICAvLyBSVU5fQUxMX1RFU1RTKCkuCisgIGNvbnN0IGNoYXIqIGNvbnN0IGZp
bGVwYXRoID0gR2V0RW52KCJURVNUX1BSRU1BVFVSRV9FWElUX0ZJTEUiKTsKKyAgaWYgKGZpbGVw
YXRoICE9IE5VTEwgJiYgKmZpbGVwYXRoICE9ICdcMCcpIHsKKyAgICBpZiAoUHJlbWF0dXJlRXhp
dFRlc3Q6OkZpbGVFeGlzdHMoZmlsZXBhdGgpKSB7CisgICAgICBwcmludGYoCisgICAgICAgICAg
IkZpbGUgJXMgc2hvdWxkbid0IGV4aXN0IGFmdGVyIHRoZSB0ZXN0IHByb2dyYW0gZmluaXNoZXMs
IGJ1dCBkb2VzLiIsCisgICAgICAgICAgZmlsZXBhdGgpOworICAgICAgcmV0dXJuIDE7CisgICAg
fQorICB9CisKKyAgcmV0dXJuIGV4aXRfY29kZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJvZF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2MKaW5kZXggYmMzMjAxZDBmMjRhZTk4ZWQwNjJj
N2I4YzlmNDRkN2RmZTZkN2M5Ni4uZWRlODFhMGQxN2EwMmM4NTNlZDIyMzRlYzg4ZmU4Mjc3MTgw
YTM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcm9k
X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcm9kX3Rl
c3QuY2MKQEAgLTI2LDEzICsyNiwxMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlv
bmcgV2FuKQotLy8KLS8vIFVuaXQgdGVzdCBmb3IgaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmgu
CisvLyBVbml0IHRlc3QgZm9yIGd0ZXN0X3Byb2QuaC4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+Ci0jaW5jbHVkZSAidGVzdC9wcm9kdWN0aW9uLmgiCisjaW5jbHVkZSAicHJvZHVjdGlvbi5o
IgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIC8vIFRlc3RzIHRoYXQgcHJpdmF0ZSBtZW1i
ZXJzIGNhbiBiZSBhY2Nlc3NlZCBmcm9tIGEgVEVTVCBkZWNsYXJlZCBhcwogLy8gYSBmcmllbmQg
b2YgdGhlIGNsYXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9yZXBlYXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
cmVwZWF0X3Rlc3QuY2MKaW5kZXggZGY2ODY4YjgzMDI5NjEyNWEyN2M3ZjM3ZjkzMTZjZWQ0ZWQ4
MmQ1NC4uMWU4ZjQ5OWJiOWRlM2QxNGJjYjNiYjFhNjQxYzA2ZDdhMTI1MGFkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9yZXBlYXRfdGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3JlcGVhdF90ZXN0LmNjCkBAIC0y
NiwyMyArMjYsMTQgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIAog
Ly8gVGVzdHMgdGhlIC0tZ3Rlc3RfcmVwZWF0PW51bWJlciBmbGFnLgogCiAjaW5jbHVkZSA8c3Rk
bGliLmg+CiAjaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQot
Ly8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xl
IFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWlu
dGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVy
IGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVu
dGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNk
ZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgog
I2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1F
TlRBVElPTl8KIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC02OSwxMyArNjAsMTMgQEAgbmFt
ZXNwYWNlIHsKICAgICAgICAgICAgICAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBhY3R1YWxfdmFs
IDw8ICJcbiJcCiAgICAgICAgICAgICAgICAgICA8PCAiRXhwZWN0ZWQ6ICIgI2V4cGVjdGVkICJc
biJcCiAgICAgICAgICAgICAgICAgICA8PCAiV2hpY2ggaXM6ICIgPDwgZXhwZWN0ZWRfdmFsIDw8
ICJcbiI7XAotICAgICAgYWJvcnQoKTtcCisgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3Np
eDo6QWJvcnQoKTtcCiAgICAgfVwKLSAgfSB3aGlsZSg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdh
eXNGYWxzZSgpKQorICB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgp
KQogCiAKIC8vIFVzZWQgZm9yIHZlcmlmeWluZyB0aGF0IGdsb2JhbCBlbnZpcm9ubWVudCBzZXQt
dXAgYW5kIHRlYXItZG93biBhcmUKLS8vIGluc2lkZSB0aGUgZ3Rlc3RfcmVwZWF0IGxvb3AuCisv
LyBpbnNpZGUgdGhlIC0tZ3Rlc3RfcmVwZWF0IGxvb3AuCiAKIGludCBnX2Vudmlyb25tZW50X3Nl
dF91cF9jb3VudCA9IDA7CiBpbnQgZ19lbnZpcm9ubWVudF90ZWFyX2Rvd25fY291bnQgPSAwOwpA
QCAtMTEzLDEzICsxMDQsMTIgQEAgVEVTVChCYXJEZWF0aFRlc3QsIFRocmVhZFNhZmVBbmRGYXN0
KSB7CiAgIGdfZGVhdGhfdGVzdF9jb3VudCsrOwogCiAgIEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9z
dHlsZSkgPSAidGhyZWFkc2FmZSI7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoYWJvcnQo
KSwgIiIpOworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDo6dGVzdGluZzo6aW50ZXJuYWw6
OnBvc2l4OjpBYm9ydCgpLCAiIik7CiAKICAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9
ICJmYXN0IjsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChhYm9ydCgpLCAiIik7CisgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OkFib3J0
KCksICIiKTsKIH0KIAotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiBpbnQgZ19wYXJhbV90ZXN0
X2NvdW50ID0gMDsKIAogY29uc3QgaW50IGtOdW1iZXJPZlBhcmFtVGVzdHMgPSAxMDsKQEAgLTEy
NywxNSArMTE3LDEzIEBAIGNvbnN0IGludCBrTnVtYmVyT2ZQYXJhbVRlc3RzID0gMTA7CiBjbGFz
cyBNeVBhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4ge307CiAK
IFRFU1RfUChNeVBhcmFtVGVzdCwgU2hvdWxkUGFzcykgewotICAvLyBUT0RPKHZsYWRsQGdvb2ds
ZS5jb20pOiBNYWtlIHBhcmFtZXRlciB2YWx1ZSBjaGVja2luZyByb2J1c3QKLSAgLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgV1JUIG9yZGVyIG9mIHRlc3RzLgorICAvLyBGSVhNRTogTWFrZSBw
YXJhbWV0ZXIgdmFsdWUgY2hlY2tpbmcgcm9idXN0IFdSVCBvcmRlciBvZiB0ZXN0cy4KICAgR1RF
U1RfQ0hFQ0tfSU5UX0VRXyhnX3BhcmFtX3Rlc3RfY291bnQgJSBrTnVtYmVyT2ZQYXJhbVRlc3Rz
LCBHZXRQYXJhbSgpKTsKICAgZ19wYXJhbV90ZXN0X2NvdW50Kys7CiB9CiBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUChNeVBhcmFtU2VxdWVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBNeVBh
cmFtVGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlJhbmdlKDAsIGtOdW1i
ZXJPZlBhcmFtVGVzdHMpKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIAogLy8g
UmVzZXRzIHRoZSBjb3VudCBmb3IgZWFjaCB0ZXN0Lgogdm9pZCBSZXNldENvdW50cygpIHsKQEAg
LTE0NCw5ICsxMzIsNyBAQCB2b2lkIFJlc2V0Q291bnRzKCkgewogICBnX3Nob3VsZF9mYWlsX2Nv
dW50ID0gMDsKICAgZ19zaG91bGRfcGFzc19jb3VudCA9IDA7CiAgIGdfZGVhdGhfdGVzdF9jb3Vu
dCA9IDA7Ci0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgZ19wYXJhbV90ZXN0X2NvdW50ID0g
MDsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIH0KIAogLy8gQ2hlY2tzIHRoYXQg
dGhlIGNvdW50IGZvciBlYWNoIHRlc3QgaXMgZXhwZWN0ZWQuCkBAIC0xNTYsOSArMTQyLDcgQEAg
dm9pZCBDaGVja0NvdW50cyhpbnQgZXhwZWN0ZWQpIHsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhl
eHBlY3RlZCwgZ19zaG91bGRfZmFpbF9jb3VudCk7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8oZXhw
ZWN0ZWQsIGdfc2hvdWxkX3Bhc3NfY291bnQpOwogICBHVEVTVF9DSEVDS19JTlRfRVFfKGV4cGVj
dGVkLCBnX2RlYXRoX3Rlc3RfY291bnQpOwotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiAgIEdU
RVNUX0NIRUNLX0lOVF9FUV8oZXhwZWN0ZWQgKiBrTnVtYmVyT2ZQYXJhbVRlc3RzLCBnX3BhcmFt
X3Rlc3RfY291bnQpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogfQogCiAvLyBU
ZXN0cyB0aGUgYmVoYXZpb3Igb2YgR29vZ2xlIFRlc3Qgd2hlbiAtLWd0ZXN0X3JlcGVhdCBpcyBu
b3Qgc3BlY2lmaWVkLgpAQCAtMjAxLDkgKzE4NSw3IEBAIHZvaWQgVGVzdFJlcGVhdFdpdGhGaWx0
ZXJGb3JTdWNjZXNzZnVsVGVzdHMoaW50IHJlcGVhdCkgewogICBHVEVTVF9DSEVDS19JTlRfRVFf
KDAsIGdfc2hvdWxkX2ZhaWxfY291bnQpOwogICBHVEVTVF9DSEVDS19JTlRfRVFfKHJlcGVhdCwg
Z19zaG91bGRfcGFzc19jb3VudCk7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0LCBnX2Rl
YXRoX3Rlc3RfY291bnQpOwotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiAgIEdURVNUX0NIRUNL
X0lOVF9FUV8ocmVwZWF0ICoga051bWJlck9mUGFyYW1UZXN0cywgZ19wYXJhbV90ZXN0X2NvdW50
KTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIH0KIAogLy8gVGVzdHMgdXNpbmcg
LS1ndGVzdF9yZXBlYXQgd2hlbiAtLWd0ZXN0X2ZpbHRlciBzcGVjaWZpZXMgYSBzZXQgb2YKQEAg
LTIxOSwxNSArMjAxLDE0IEBAIHZvaWQgVGVzdFJlcGVhdFdpdGhGaWx0ZXJGb3JGYWlsZWRUZXN0
cyhpbnQgcmVwZWF0KSB7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0LCBnX3Nob3VsZF9m
YWlsX2NvdW50KTsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXygwLCBnX3Nob3VsZF9wYXNzX2NvdW50
KTsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXygwLCBnX2RlYXRoX3Rlc3RfY291bnQpOwotI2lmIEdU
RVNUX0hBU19QQVJBTV9URVNUCiAgIEdURVNUX0NIRUNLX0lOVF9FUV8oMCwgZ19wYXJhbV90ZXN0
X2NvdW50KTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIH0KIAogfSAgLy8gbmFt
ZXNwYWNlCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewogICB0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKICAgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVu
dmlyb25tZW50KG5ldyBNeUVudmlyb25tZW50KTsKIAogICBUZXN0UmVwZWF0VW5zcGVjaWZpZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZs
ZV90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rl
c3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDMwZDAzMDNkMTkzNTU0YTVmZDBi
OWIxZjZhNTFlZjdkMDlmMzA2MTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rl
c3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMjUgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCi0jCi0jIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRp
b24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJWZXJpZmllcyB0aGF0IHRlc3Qgc2h1ZmZsaW5nIHdv
cmtzLiIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwot
Ci1pbXBvcnQgb3MKLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi0KLSMgQ29tbWFuZCB0byBydW4g
dGhlIGd0ZXN0X3NodWZmbGVfdGVzdF8gcHJvZ3JhbS4KLUNPTU1BTkQgPSBndGVzdF90ZXN0X3V0
aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ3Rlc3Rfc2h1ZmZsZV90ZXN0XycpCi0KLSMgVGhl
IGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBzaGFyZGluZy4KLVRPVEFMX1NIQVJEU19F
TlZfVkFSID0gJ0dURVNUX1RPVEFMX1NIQVJEUycKLVNIQVJEX0lOREVYX0VOVl9WQVIgPSAnR1RF
U1RfU0hBUkRfSU5ERVgnCi0KLVRFU1RfRklMVEVSID0gJ0EqLkE6QSouQjpDKicKLQotQUxMX1RF
U1RTID0gW10KLUFDVElWRV9URVNUUyA9IFtdCi1GSUxURVJFRF9URVNUUyA9IFtdCi1TSEFSREVE
X1RFU1RTID0gW10KLQotU0hVRkZMRURfQUxMX1RFU1RTID0gW10KLVNIVUZGTEVEX0FDVElWRV9U
RVNUUyA9IFtdCi1TSFVGRkxFRF9GSUxURVJFRF9URVNUUyA9IFtdCi1TSFVGRkxFRF9TSEFSREVE
X1RFU1RTID0gW10KLQotCi1kZWYgQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKCk6Ci0gIHJldHVy
biAnLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cycKLQotCi1kZWYgRmlsdGVyRmxhZyh0
ZXN0X2ZpbHRlcik6Ci0gIHJldHVybiAnLS1ndGVzdF9maWx0ZXI9JXMnICUgKHRlc3RfZmlsdGVy
LCkKLQotCi1kZWYgUmVwZWF0RmxhZyhuKToKLSAgcmV0dXJuICctLWd0ZXN0X3JlcGVhdD0lcycg
JSAobiwpCi0KLQotZGVmIFNodWZmbGVGbGFnKCk6Ci0gIHJldHVybiAnLS1ndGVzdF9zaHVmZmxl
JwotCi0KLWRlZiBSYW5kb21TZWVkRmxhZyhuKToKLSAgcmV0dXJuICctLWd0ZXN0X3JhbmRvbV9z
ZWVkPSVzJyAlIChuLCkKLQotCi1kZWYgUnVuQW5kUmV0dXJuT3V0cHV0KGV4dHJhX2VudiwgYXJn
cyk6Ci0gICIiIlJ1bnMgdGhlIHRlc3QgcHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgb3V0cHV0LiIi
IgotCi0gIGVudmlyb25fY29weSA9IG9zLmVudmlyb24uY29weSgpCi0gIGVudmlyb25fY29weS51
cGRhdGUoZXh0cmFfZW52KQotCi0gIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3Mo
W0NPTU1BTkRdICsgYXJncywgZW52PWVudmlyb25fY29weSkub3V0cHV0Ci0KLQotZGVmIEdldFRl
c3RzRm9yQWxsSXRlcmF0aW9ucyhleHRyYV9lbnYsIGFyZ3MpOgotICAiIiJSdW5zIHRoZSB0ZXN0
IHByb2dyYW0gYW5kIHJldHVybnMgYSBsaXN0IG9mIHRlc3QgbGlzdHMuCi0KLSAgQXJnczoKLSAg
ICBleHRyYV9lbnY6IGEgbWFwIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHRoZWlyIHZh
bHVlcwotICAgIGFyZ3M6IGNvbW1hbmQgbGluZSBmbGFncyB0byBwYXNzIHRvIGd0ZXN0X3NodWZm
bGVfdGVzdF8KLQotICBSZXR1cm5zOgotICAgIEEgbGlzdCB3aGVyZSB0aGUgaS10aCBlbGVtZW50
IGlzIHRoZSBsaXN0IG9mIHRlc3RzIHJ1biBpbiB0aGUgaS10aAotICAgIHRlc3QgaXRlcmF0aW9u
LgotICAiIiIKLQotICB0ZXN0X2l0ZXJhdGlvbnMgPSBbXQotICBmb3IgbGluZSBpbiBSdW5BbmRS
ZXR1cm5PdXRwdXQoZXh0cmFfZW52LCBhcmdzKS5zcGxpdCgnXG4nKToKLSAgICBpZiBsaW5lLnN0
YXJ0c3dpdGgoJy0tLS0nKToKLSAgICAgIHRlc3RzID0gW10KLSAgICAgIHRlc3RfaXRlcmF0aW9u
cy5hcHBlbmQodGVzdHMpCi0gICAgZWxpZiBsaW5lLnN0cmlwKCk6Ci0gICAgICB0ZXN0cy5hcHBl
bmQobGluZS5zdHJpcCgpKSAgIyAnVGVzdENhc2VOYW1lLlRlc3ROYW1lJwotCi0gIHJldHVybiB0
ZXN0X2l0ZXJhdGlvbnMKLQotCi1kZWYgR2V0VGVzdENhc2VzKHRlc3RzKToKLSAgIiIiUmV0dXJu
cyBhIGxpc3Qgb2YgdGVzdCBjYXNlcyBpbiB0aGUgZ2l2ZW4gZnVsbCB0ZXN0IG5hbWVzLgotCi0g
IEFyZ3M6Ci0gICAgdGVzdHM6IGEgbGlzdCBvZiBmdWxsIHRlc3QgbmFtZXMKLQotICBSZXR1cm5z
OgotICAgIEEgbGlzdCBvZiB0ZXN0IGNhc2VzIGZyb20gJ3Rlc3RzJywgaW4gdGhlaXIgb3JpZ2lu
YWwgb3JkZXIuCi0gICAgQ29uc2VjdXRpdmUgZHVwbGljYXRlcyBhcmUgcmVtb3ZlZC4KLSAgIiIi
Ci0KLSAgdGVzdF9jYXNlcyA9IFtdCi0gIGZvciB0ZXN0IGluIHRlc3RzOgotICAgIHRlc3RfY2Fz
ZSA9IHRlc3Quc3BsaXQoJy4nKVswXQotICAgIGlmIG5vdCB0ZXN0X2Nhc2UgaW4gdGVzdF9jYXNl
czoKLSAgICAgIHRlc3RfY2FzZXMuYXBwZW5kKHRlc3RfY2FzZSkKLQotICByZXR1cm4gdGVzdF9j
YXNlcwotCi0KLWRlZiBDYWxjdWxhdGVUZXN0TGlzdHMoKToKLSAgIiIiQ2FsY3VsYXRlcyB0aGUg
bGlzdCBvZiB0ZXN0cyBydW4gdW5kZXIgZGlmZmVyZW50IGZsYWdzLiIiIgotCi0gIGlmIG5vdCBB
TExfVEVTVFM6Ci0gICAgQUxMX1RFU1RTLmV4dGVuZCgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJ
dGVyYXRpb25zKHt9LCBbQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKCldKVswXSkKLQotICBpZiBu
b3QgQUNUSVZFX1RFU1RTOgotICAgIEFDVElWRV9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJ
dGVyYXRpb25zKHt9LCBbXSlbMF0pCi0KLSAgaWYgbm90IEZJTFRFUkVEX1RFU1RTOgotICAgIEZJ
TFRFUkVEX1RFU1RTLmV4dGVuZCgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHt9
LCBbRmlsdGVyRmxhZyhURVNUX0ZJTFRFUildKVswXSkKLQotICBpZiBub3QgU0hBUkRFRF9URVNU
UzoKLSAgICBTSEFSREVEX1RFU1RTLmV4dGVuZCgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVy
YXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcxJ30sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbXSlbMF0pCi0KLSAgaWYgbm90IFNIVUZGTEVEX0FMTF9URVNUUzoK
LSAgICBTSFVGRkxFRF9BTExfVEVTVFMuZXh0ZW5kKEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygK
LSAgICAgICAge30sIFtBbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcoKSwgU2h1ZmZsZUZsYWcoKSwg
UmFuZG9tU2VlZEZsYWcoMSldKVswXSkKLQotICBpZiBub3QgU0hVRkZMRURfQUNUSVZFX1RFU1RT
OgotICAgIFNIVUZGTEVEX0FDVElWRV9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRp
b25zKAotICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSlbMF0p
Ci0KLSAgaWYgbm90IFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTOgotICAgIFNIVUZGTEVEX0ZJTFRF
UkVEX1RFU1RTLmV4dGVuZChHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBb
U2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSksIEZpbHRlckZsYWcoVEVTVF9GSUxURVIp
XSlbMF0pCi0KLSAgaWYgbm90IFNIVUZGTEVEX1NIQVJERURfVEVTVFM6Ci0gICAgU0hVRkZMRURf
U0hBUkRFRF9URVNUUy5leHRlbmQoCi0gICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7
VE9UQUxfU0hBUkRTX0VOVl9WQVI6ICczJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMSd9LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSlbMF0pCi0KLQotY2xh
c3MgR1Rlc3RTaHVmZmxlVW5pdFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gICIi
IlRlc3RzIHRlc3Qgc2h1ZmZsaW5nLiIiIgotCi0gIGRlZiBzZXRVcChzZWxmKToKLSAgICBDYWxj
dWxhdGVUZXN0TGlzdHMoKQotCi0gIGRlZiB0ZXN0U2h1ZmZsZVByZXNlcnZlc051bWJlck9mVGVz
dHMoc2VsZik6Ci0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oQUxMX1RFU1RTKSwgbGVuKFNIVUZG
TEVEX0FMTF9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oQUNUSVZFX1RFU1RTKSwg
bGVuKFNIVUZGTEVEX0FDVElWRV9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oRklM
VEVSRURfVEVTVFMpLCBsZW4oU0hVRkZMRURfRklMVEVSRURfVEVTVFMpKQotICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKFNIQVJERURfVEVTVFMpLCBsZW4oU0hVRkZMRURfU0hBUkRFRF9URVNUUykp
Ci0KLSAgZGVmIHRlc3RTaHVmZmxlQ2hhbmdlc1Rlc3RPcmRlcihzZWxmKToKLSAgICBzZWxmLmFz
c2VydF8oU0hVRkZMRURfQUxMX1RFU1RTICE9IEFMTF9URVNUUywgU0hVRkZMRURfQUxMX1RFU1RT
KQotICAgIHNlbGYuYXNzZXJ0XyhTSFVGRkxFRF9BQ1RJVkVfVEVTVFMgIT0gQUNUSVZFX1RFU1RT
LCBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMpCi0gICAgc2VsZi5hc3NlcnRfKFNIVUZGTEVEX0ZJTFRF
UkVEX1RFU1RTICE9IEZJTFRFUkVEX1RFU1RTLAotICAgICAgICAgICAgICAgICBTSFVGRkxFRF9G
SUxURVJFRF9URVNUUykKLSAgICBzZWxmLmFzc2VydF8oU0hVRkZMRURfU0hBUkRFRF9URVNUUyAh
PSBTSEFSREVEX1RFU1RTLAotICAgICAgICAgICAgICAgICBTSFVGRkxFRF9TSEFSREVEX1RFU1RT
KQotCi0gIGRlZiB0ZXN0U2h1ZmZsZUNoYW5nZXNUZXN0Q2FzZU9yZGVyKHNlbGYpOgotICAgIHNl
bGYuYXNzZXJ0XyhHZXRUZXN0Q2FzZXMoU0hVRkZMRURfQUxMX1RFU1RTKSAhPSBHZXRUZXN0Q2Fz
ZXMoQUxMX1RFU1RTKSwKLSAgICAgICAgICAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX0FM
TF9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRfKAotICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZM
RURfQUNUSVZFX1RFU1RTKSAhPSBHZXRUZXN0Q2FzZXMoQUNUSVZFX1RFU1RTKSwKLSAgICAgICAg
R2V0VGVzdENhc2VzKFNIVUZGTEVEX0FDVElWRV9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRfKAot
ICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfRklMVEVSRURfVEVTVFMpICE9IEdldFRlc3RD
YXNlcyhGSUxURVJFRF9URVNUUyksCi0gICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9GSUxU
RVJFRF9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRfKAotICAgICAgICBHZXRUZXN0Q2FzZXMoU0hV
RkZMRURfU0hBUkRFRF9URVNUUykgIT0gR2V0VGVzdENhc2VzKFNIQVJERURfVEVTVFMpLAotICAg
ICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfU0hBUkRFRF9URVNUUykpCi0KLSAgZGVmIHRlc3RT
aHVmZmxlRG9lc05vdFJlcGVhdFRlc3Qoc2VsZik6Ci0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURf
QUxMX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9BTExfVEVTVFMu
Y291bnQodGVzdCksCi0gICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhh
biBvbmNlJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RT
OgotICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMuY291bnQo
dGVzdCksCi0gICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNl
JyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFM6Ci0g
ICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTLmNvdW50KHRl
c3QpLAotICAgICAgICAgICAgICAgICAgICAgICAnJXMgYXBwZWFycyBtb3JlIHRoYW4gb25jZScg
JSAodGVzdCwpKQotICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFM6Ci0gICAg
ICBzZWxmLmFzc2VydEVxdWFsKDEsIFNIVUZGTEVEX1NIQVJERURfVEVTVFMuY291bnQodGVzdCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0
ZXN0LCkpCi0KLSAgZGVmIHRlc3RTaHVmZmxlRG9lc05vdENyZWF0ZU5ld1Rlc3Qoc2VsZik6Ci0g
ICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUxMX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRl
c3QgaW4gQUxMX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCi0gICAg
Zm9yIHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRl
c3QgaW4gQUNUSVZFX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCi0g
ICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2Vy
dF8odGVzdCBpbiBGSUxURVJFRF9URVNUUywgJyVzIGlzIGFuIGludmFsaWQgdGVzdCcgJSAodGVz
dCwpKQotICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFM6Ci0gICAgICBzZWxm
LmFzc2VydF8odGVzdCBpbiBTSEFSREVEX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAl
ICh0ZXN0LCkpCi0KLSAgZGVmIHRlc3RTaHVmZmxlSW5jbHVkZXNBbGxUZXN0cyhzZWxmKToKLSAg
ICBmb3IgdGVzdCBpbiBBTExfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVG
RkxFRF9BTExfVEVTVFMsICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3Qg
aW4gQUNUSVZFX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfQUNU
SVZFX1RFU1RTLCAnJXMgaXMgbWlzc2luZycgJSAodGVzdCwpKQotICAgIGZvciB0ZXN0IGluIEZJ
TFRFUkVEX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfRklMVEVS
RURfVEVTVFMsICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hB
UkRFRF9URVNUUzoKLSAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURf
VEVTVFMsICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCi0KLSAgZGVmIHRlc3RTaHVmZmxlTGVh
dmVzRGVhdGhUZXN0c0F0RnJvbnQoc2VsZik6Ci0gICAgbm9uX2RlYXRoX3Rlc3RfZm91bmQgPSBG
YWxzZQotICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX0FDVElWRV9URVNUUzoKLSAgICAgIGlmICdE
ZWF0aFRlc3QuJyBpbiB0ZXN0OgotICAgICAgICBzZWxmLmFzc2VydF8obm90IG5vbl9kZWF0aF90
ZXN0X2ZvdW5kLAotICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgYWZ0ZXIgYSBub24t
ZGVhdGggdGVzdCcgJSAodGVzdCwpKQotICAgICAgZWxzZToKLSAgICAgICAgbm9uX2RlYXRoX3Rl
c3RfZm91bmQgPSBUcnVlCi0KLSAgZGVmIF9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUo
c2VsZiwgdGVzdHMpOgotICAgIHRlc3RfY2FzZXMgPSBbXQotICAgIGZvciB0ZXN0IGluIHRlc3Rz
OgotICAgICAgW3Rlc3RfY2FzZSwgX10gPSB0ZXN0LnNwbGl0KCcuJykKLSAgICAgIGlmIHRlc3Rf
Y2FzZXMgYW5kIHRlc3RfY2FzZXNbLTFdICE9IHRlc3RfY2FzZToKLSAgICAgICAgdGVzdF9jYXNl
cy5hcHBlbmQodGVzdF9jYXNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHRlc3RfY2Fz
ZXMuY291bnQodGVzdF9jYXNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnVGVzdCBjYXNl
ICVzIGlzIG5vdCBncm91cGVkIHRvZ2V0aGVyIGluICVzJyAlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgKHRlc3RfY2FzZSwgdGVzdHMpKQotCi0gIGRlZiB0ZXN0U2h1ZmZsZURvZXNOb3RJbnRl
cmxlYXZlVGVzdENhc2VzKHNlbGYpOgotICAgIHNlbGYuX1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50
ZXJsZWF2ZShTSFVGRkxFRF9BTExfVEVTVFMpCi0gICAgc2VsZi5fVmVyaWZ5VGVzdENhc2VzRG9O
b3RJbnRlcmxlYXZlKFNIVUZGTEVEX0FDVElWRV9URVNUUykKLSAgICBzZWxmLl9WZXJpZnlUZXN0
Q2FzZXNEb05vdEludGVybGVhdmUoU0hVRkZMRURfRklMVEVSRURfVEVTVFMpCi0gICAgc2VsZi5f
VmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRlcmxlYXZlKFNIVUZGTEVEX1NIQVJERURfVEVTVFMpCi0K
LSAgZGVmIHRlc3RTaHVmZmxlUmVzdG9yZXNPcmRlckFmdGVyRWFjaEl0ZXJhdGlvbihzZWxmKToK
LSAgICAjIEdldCB0aGUgdGVzdCBsaXN0cyBpbiBhbGwgMyBpdGVyYXRpb25zLCB1c2luZyByYW5k
b20gc2VlZCAxLCAyLAotICAgICMgYW5kIDMgcmVzcGVjdGl2ZWx5LiAgR29vZ2xlIFRlc3QgcGlj
a3MgYSBkaWZmZXJlbnQgc2VlZCBpbiBlYWNoCi0gICAgIyBpdGVyYXRpb24sIGFuZCB0aGlzIHRl
c3QgZGVwZW5kcyBvbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbgotICAgICMgcGlja2luZyBz
dWNjZXNzaXZlIG51bWJlcnMuICBUaGlzIGRlcGVuZGVuY3kgaXMgbm90IGlkZWFsLCBidXQKLSAg
ICAjIG1ha2VzIHRoZSB0ZXN0IG11Y2ggZWFzaWVyIHRvIHdyaXRlLgotICAgIFt0ZXN0c19pbl9p
dGVyYXRpb24xLCB0ZXN0c19pbl9pdGVyYXRpb24yLCB0ZXN0c19pbl9pdGVyYXRpb24zXSA9ICgK
LSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAotICAgICAgICAgICAge30sIFtTaHVm
ZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKSwgUmVwZWF0RmxhZygzKV0pKQotCi0gICAgIyBN
YWtlIHN1cmUgcnVubmluZyB0aGUgdGVzdHMgd2l0aCByYW5kb20gc2VlZCAxIGdldHMgdGhlIHNh
bWUKLSAgICAjIG9yZGVyIGFzIGluIGl0ZXJhdGlvbiAxIGFib3ZlLgotICAgIFt0ZXN0c193aXRo
X3NlZWQxXSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKLSAgICAgICAge30sIFtTaHVmZmxl
RmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0pCi0gICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0c19p
bl9pdGVyYXRpb24xLCB0ZXN0c193aXRoX3NlZWQxKQotCi0gICAgIyBNYWtlIHN1cmUgcnVubmlu
ZyB0aGUgdGVzdHMgd2l0aCByYW5kb20gc2VlZCAyIGdldHMgdGhlIHNhbWUKLSAgICAjIG9yZGVy
IGFzIGluIGl0ZXJhdGlvbiAyIGFib3ZlLiAgU3VjY2VzcyBtZWFucyB0aGF0IEdvb2dsZSBUZXN0
Ci0gICAgIyBjb3JyZWN0bHkgcmVzdG9yZXMgdGhlIHRlc3Qgb3JkZXIgYmVmb3JlIHJlLXNodWZm
bGluZyBhdCB0aGUKLSAgICAjIGJlZ2lubmluZyBvZiBpdGVyYXRpb24gMi4KLSAgICBbdGVzdHNf
d2l0aF9zZWVkMl0gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBbU2h1
ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMildKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVz
dHNfaW5faXRlcmF0aW9uMiwgdGVzdHNfd2l0aF9zZWVkMikKLQotICAgICMgTWFrZSBzdXJlIHJ1
bm5pbmcgdGhlIHRlc3RzIHdpdGggcmFuZG9tIHNlZWQgMyBnZXRzIHRoZSBzYW1lCi0gICAgIyBv
cmRlciBhcyBpbiBpdGVyYXRpb24gMyBhYm92ZS4gIFN1Y2Nlc3MgbWVhbnMgdGhhdCBHb29nbGUg
VGVzdAotICAgICMgY29ycmVjdGx5IHJlc3RvcmVzIHRoZSB0ZXN0IG9yZGVyIGJlZm9yZSByZS1z
aHVmZmxpbmcgYXQgdGhlCi0gICAgIyBiZWdpbm5pbmcgb2YgaXRlcmF0aW9uIDMuCi0gICAgW3Rl
c3RzX3dpdGhfc2VlZDNdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAotICAgICAgICB7fSwg
W1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDMpXSkKLSAgICBzZWxmLmFzc2VydEVxdWFs
KHRlc3RzX2luX2l0ZXJhdGlvbjMsIHRlc3RzX3dpdGhfc2VlZDMpCi0KLSAgZGVmIHRlc3RTaHVm
ZmxlR2VuZXJhdGVzTmV3T3JkZXJJbkVhY2hJdGVyYXRpb24oc2VsZik6Ci0gICAgW3Rlc3RzX2lu
X2l0ZXJhdGlvbjEsIHRlc3RzX2luX2l0ZXJhdGlvbjIsIHRlc3RzX2luX2l0ZXJhdGlvbjNdID0g
KAotICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgICAgICB7fSwgW1No
dWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpLCBSZXBlYXRGbGFnKDMpXSkpCi0KLSAgICBz
ZWxmLmFzc2VydF8odGVzdHNfaW5faXRlcmF0aW9uMSAhPSB0ZXN0c19pbl9pdGVyYXRpb24yLAot
ICAgICAgICAgICAgICAgICB0ZXN0c19pbl9pdGVyYXRpb24xKQotICAgIHNlbGYuYXNzZXJ0Xyh0
ZXN0c19pbl9pdGVyYXRpb24xICE9IHRlc3RzX2luX2l0ZXJhdGlvbjMsCi0gICAgICAgICAgICAg
ICAgIHRlc3RzX2luX2l0ZXJhdGlvbjEpCi0gICAgc2VsZi5hc3NlcnRfKHRlc3RzX2luX2l0ZXJh
dGlvbjIgIT0gdGVzdHNfaW5faXRlcmF0aW9uMywKLSAgICAgICAgICAgICAgICAgdGVzdHNfaW5f
aXRlcmF0aW9uMikKLQotICBkZWYgdGVzdFNodWZmbGVTaGFyZGVkVGVzdHNQcmVzZXJ2ZXNQYXJ0
aXRpb24oc2VsZik6Ci0gICAgIyBJZiB3ZSBydW4gTSB0ZXN0cyBvbiBOIHNoYXJkcywgdGhlIHNh
bWUgTSB0ZXN0cyBzaG91bGQgYmUgcnVuIGluCi0gICAgIyB0b3RhbCwgcmVnYXJkbGVzcyBvZiB0
aGUgcmFuZG9tIHNlZWRzIHVzZWQgYnkgdGhlIHNoYXJkcy4KLSAgICBbdGVzdHMxXSA9IEdldFRl
c3RzRm9yQWxsSXRlcmF0aW9ucyh7VE9UQUxfU0hBUkRTX0VOVl9WQVI6ICczJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBUkRfSU5ERVhfRU5WX1ZBUjogJzAn
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU2h1ZmZsZUZsYWco
KSwgUmFuZG9tU2VlZEZsYWcoMSldKQotICAgIFt0ZXN0czJdID0gR2V0VGVzdHNGb3JBbGxJdGVy
YXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMSd9LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVk
RmxhZygyMCldKQotICAgIFt0ZXN0czNdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RB
TF9TSEFSRFNfRU5WX1ZBUjogJzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMid9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygyNSldKQot
ICAgIHNvcnRlZF9zaGFyZGVkX3Rlc3RzID0gdGVzdHMxICsgdGVzdHMyICsgdGVzdHMzCi0gICAg
c29ydGVkX3NoYXJkZWRfdGVzdHMuc29ydCgpCi0gICAgc29ydGVkX2FjdGl2ZV90ZXN0cyA9IFtd
Ci0gICAgc29ydGVkX2FjdGl2ZV90ZXN0cy5leHRlbmQoQUNUSVZFX1RFU1RTKQotICAgIHNvcnRl
ZF9hY3RpdmVfdGVzdHMuc29ydCgpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWRfYWN0aXZl
X3Rlc3RzLCBzb3J0ZWRfc2hhcmRlZF90ZXN0cykKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9f
JzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTNlY2Y3NzcwYTE0MTE3NjY4YjRhZGVhNmZiNmY1MDI2NjcxN2RlNy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwx
MDQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0Ogot
Ly8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0v
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0v
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ly8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gVmVyaWZp
ZXMgdGhhdCB0ZXN0IHNodWZmbGluZyB3b3Jrcy4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
Ci0KLW5hbWVzcGFjZSB7Ci0KLXVzaW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5l
cjsKLXVzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6Ok1l
c3NhZ2U7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RFdmVu
dExpc3RlbmVyczsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdEluZm87Ci11c2luZyA6OnRlc3Rpbmc6
OlVuaXRUZXN0OwotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOwotdXNpbmcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVkX3B0cjsKLQotLy8gVGhlIHRlc3QgbWV0aG9kcyBhcmUg
ZW1wdHksIGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgdGhpcyBwcm9ncmFtIGlzCi0vLyB0byBwcmlu
dCB0aGUgdGVzdCBuYW1lcyBiZWZvcmUvYWZ0ZXIgc2h1ZmZsaW5nLgotCi1jbGFzcyBBIDogcHVi
bGljIFRlc3Qge307Ci1URVNUX0YoQSwgQSkge30KLVRFU1RfRihBLCBCKSB7fQotCi1URVNUKEFE
ZWF0aFRlc3QsIEEpIHt9Ci1URVNUKEFEZWF0aFRlc3QsIEIpIHt9Ci1URVNUKEFEZWF0aFRlc3Qs
IEMpIHt9Ci0KLVRFU1QoQiwgQSkge30KLVRFU1QoQiwgQikge30KLVRFU1QoQiwgQykge30KLVRF
U1QoQiwgRElTQUJMRURfRCkge30KLVRFU1QoQiwgRElTQUJMRURfRSkge30KLQotVEVTVChCRGVh
dGhUZXN0LCBBKSB7fQotVEVTVChCRGVhdGhUZXN0LCBCKSB7fQotCi1URVNUKEMsIEEpIHt9Ci1U
RVNUKEMsIEIpIHt9Ci1URVNUKEMsIEMpIHt9Ci1URVNUKEMsIERJU0FCTEVEX0QpIHt9Ci0KLVRF
U1QoQ0RlYXRoVGVzdCwgQSkge30KLQotVEVTVChESVNBQkxFRF9ELCBBKSB7fQotVEVTVChESVNB
QkxFRF9ELCBESVNBQkxFRF9CKSB7fQotCi0vLyBUaGlzIHByaW50ZXIgcHJpbnRzIHRoZSBmdWxs
IHRlc3QgbmFtZXMgb25seSwgc3RhcnRpbmcgZWFjaCB0ZXN0Ci0vLyBpdGVyYXRpb24gd2l0aCBh
ICItLS0tIiBtYXJrZXIuCi1jbGFzcyBUZXN0TmFtZVByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0
RXZlbnRMaXN0ZW5lciB7Ci0gcHVibGljOgotICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9u
U3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qIHVuaXRfdGVzdCAqLywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCAvKiBpdGVyYXRpb24gKi8pIHsKLSAgICBwcmludGYoIi0t
LS1cbiIpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZv
JiB0ZXN0X2luZm8pIHsKLSAgICBwcmludGYoIiVzLiVzXG4iLCB0ZXN0X2luZm8udGVzdF9jYXNl
X25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7Ci0gIH0KLX07Ci0KLX0gIC8vIG5hbWVzcGFjZQot
Ci1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgSW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOwotCi0gIC8vIFJlcGxhY2VzIHRoZSBkZWZhdWx0IHByaW50ZXIgd2l0aCBUZXN0
TmFtZVByaW50ZXIsIHdoaWNoIHByaW50cwotICAvLyB0aGUgdGVzdCBuYW1lIG9ubHkuCi0gIFRl
c3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxp
c3RlbmVycygpOwotICBkZWxldGUgbGlzdGVuZXJzLlJlbGVhc2UobGlzdGVuZXJzLmRlZmF1bHRf
cmVzdWx0X3ByaW50ZXIoKSk7Ci0gIGxpc3RlbmVycy5BcHBlbmQobmV3IFRlc3ROYW1lUHJpbnRl
cik7Ci0KLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYwppbmRleCBkZTkx
ZTgwMGY1YTEzODI5OTlmYzIwMWY1Y2YzY2UwNDY0Y2FhMWNlLi4xZDk0YWM2YjNhZDlmOWY3ZGJh
ZGJmYjJiZjc0OWI4MjcxNTYwZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X3NvbGVfaGVhZGVyX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9zb2xlX2hlYWRlcl90ZXN0LmNjCkBAIC0yNiwxMyArMjYsMTIgQEAK
IC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBB
dXRob3I6IG1oZXVsZUBnb29nbGUuY29tIChNYXJrdXMgSGV1bGUpCisKIC8vCiAvLyBUaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCBpdCdzIHBvc3NpYmxlIHRvIHVzZSBHb29nbGUgVGVzdCBieSBpbmNs
dWRpbmcKIC8vIHRoZSBndGVzdC5oIGhlYWRlciBmaWxlIGFsb25lLgogCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2UgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3N0cmVzc190ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zdHJlc3NfdGVzdC5jYwpp
bmRleCBmNWFmNzhjYzZkM2YzOTVhMDBkNGQxY2U4NTk5ZmE1ZjFkZmE3NjI2Li45NWFkYTM5YzMz
N2QwZDRlY2U2ZmY1YjMyMzJkZTk2YzNkNTk4NmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3N0cmVzc190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc3RyZXNzX3Rlc3QuY2MKQEAgLTI2LDIzICsyNiwxNiBAQAog
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUZXN0cyB0aGF0IFND
T1BFRF9UUkFDRSgpIGFuZCB2YXJpb3VzIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgY2FuIGJlCiAv
LyB1c2VkIGluIGEgbGFyZ2UgbnVtYmVyIG9mIHRocmVhZHMgY29uY3VycmVudGx5LgogCi0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCi0jaW5jbHVk
ZSA8aW9zdHJlYW0+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0vLyBXZSBtdXN0IGRlZmluZSB0aGlz
IG1hY3JvIGluIG9yZGVyIHRvICNpbmNsdWRlCi0vLyBndGVzdC1pbnRlcm5hbC1pbmwuaC4gIFRo
aXMgaXMgaG93IEdvb2dsZSBUZXN0IHByZXZlbnRzIGEgdXNlciBmcm9tCi0vLyBhY2NpZGVudGFs
bHkgZGVwZW5kaW5nIG9uIGl0cyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4KLSNkZWZpbmUgR1RF
U1RfSU1QTEVNRU5UQVRJT05fIDEKICNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgi
Ci0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCiAKICNpZiBHVEVTVF9JU19USFJFQURTQUZF
CiAKQEAgLTUwLDcgKzQzLDYgQEAgbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIHsKIAog
dXNpbmcgaW50ZXJuYWw6Ok5vdGlmaWNhdGlvbjsKLXVzaW5nIGludGVybmFsOjpTdHJpbmc7CiB1
c2luZyBpbnRlcm5hbDo6VGVzdFByb3BlcnR5S2V5SXM7CiB1c2luZyBpbnRlcm5hbDo6VGhyZWFk
V2l0aFBhcmFtOwogdXNpbmcgaW50ZXJuYWw6OnNjb3BlZF9wdHI7CkBAIC02MiwxMyArNTQsMTMg
QEAgdXNpbmcgaW50ZXJuYWw6OnNjb3BlZF9wdHI7CiAvLyBIb3cgbWFueSB0aHJlYWRzIHRvIGNy
ZWF0ZT8KIGNvbnN0IGludCBrVGhyZWFkQ291bnQgPSA1MDsKIAotU3RyaW5nIElkVG9LZXkoaW50
IGlkLCBjb25zdCBjaGFyKiBzdWZmaXgpIHsKK3N0ZDo6c3RyaW5nIElkVG9LZXkoaW50IGlkLCBj
b25zdCBjaGFyKiBzdWZmaXgpIHsKICAgTWVzc2FnZSBrZXk7CiAgIGtleSA8PCAia2V5XyIgPDwg
aWQgPDwgIl8iIDw8IHN1ZmZpeDsKICAgcmV0dXJuIGtleS5HZXRTdHJpbmcoKTsKIH0KIAotU3Ry
aW5nIElkVG9TdHJpbmcoaW50IGlkKSB7CitzdGQ6OnN0cmluZyBJZFRvU3RyaW5nKGludCBpZCkg
ewogICBNZXNzYWdlIGlkX21lc3NhZ2U7CiAgIGlkX21lc3NhZ2UgPDwgaWQ7CiAgIHJldHVybiBp
ZF9tZXNzYWdlLkdldFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF90ZXN0X21hY3JvX3N0YWNrX2Zvb3RwcmludF90ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0X21hY3JvX3N0YWNrX2Zvb3RwcmludF90
ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE0OGRiMDUwMTJjYzMwZTBlZGY0YTEzNTRmZjM5MmM5MmQwMDBi
ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X3Rlc3RfbWFjcm9fc3RhY2tfZm9vdHByaW50X3Rlc3QuY2MKQEAgLTAsMCArMSw4OSBAQAorLy8g
Q29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0
cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisv
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gRWFjaCBU
RVNUKCkgZXhwYW5kcyB0byBzb21lIHN0YXRpYyByZWdpc3RyYXRpb24gbG9naWMuICBHQ0MgcHV0
cyBhbGwKKy8vIHN1Y2ggc3RhdGljIGluaXRpYWxpemF0aW9uIGxvZ2ljIGZvciBhIHRyYW5zbGF0
aW9uIHVuaXQgaW4gYSBjb21tb24sCisvLyBpbnRlcm5hbCBmdW5jdGlvbi4gIFNpbmNlIEdvb2ds
ZSdzIGJ1aWxkIHN5c3RlbSByZXN0cmljdHMgaG93IG11Y2gKKy8vIHN0YWNrIHNwYWNlIGEgZnVu
Y3Rpb24gY2FuIHVzZSwgdGhlcmUncyBhIGxpbWl0IG9uIGhvdyBtYW55IFRFU1QoKXMKKy8vIG9u
ZSBjYW4gcHV0IGluIGEgc2luZ2xlIEMrKyB0ZXN0IGZpbGUuICBUaGlzIHRlc3QgZW5zdXJlcyB0
aGF0IGEgbGFyZ2UKKy8vIG51bWJlciBvZiBURVNUKClzIGNhbiBiZSBkZWZpbmVkIGluIHRoZSBz
YW1lIHRyYW5zbGF0aW9uIHVuaXQuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisvLyBU
aGlzIG1hY3JvIGRlZmluZXMgMTAgZHVtbXkgdGVzdHMuCisjZGVmaW5lIFRFTl9URVNUU18odGVz
dF9jYXNlX25hbWUpIFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDApIHt9IFwKKyAgVEVTVCh0
ZXN0X2Nhc2VfbmFtZSwgVDEpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDIpIHt9IFwK
KyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDMpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwg
VDQpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDUpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nh
c2VfbmFtZSwgVDYpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDcpIHt9IFwKKyAgVEVT
VCh0ZXN0X2Nhc2VfbmFtZSwgVDgpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDkpIHt9
CisKKy8vIFRoaXMgbWFjcm8gZGVmaW5lcyAxMDAgZHVtbXkgdGVzdHMuCisjZGVmaW5lIEhVTkRS
RURfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCkgXAorICBURU5fVEVTVFNfKHRlc3RfY2Fz
ZV9uYW1lX3ByZWZpeCAjIyAwKSBcCisgIFRFTl9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4
ICMjIDEpIFwKKyAgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgMikgXAorICBU
RU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyAzKSBcCisgIFRFTl9URVNUU18odGVz
dF9jYXNlX25hbWVfcHJlZml4ICMjIDQpIFwKKyAgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9w
cmVmaXggIyMgNSkgXAorICBURU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyA2KSBc
CisgIFRFTl9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDcpIFwKKyAgVEVOX1RFU1RT
Xyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgOCkgXAorICBURU5fVEVTVFNfKHRlc3RfY2FzZV9u
YW1lX3ByZWZpeCAjIyA5KQorCisvLyBUaGlzIG1hY3JvIGRlZmluZXMgMTAwMCBkdW1teSB0ZXN0
cy4KKyNkZWZpbmUgVEhPVVNBTkRfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCkgXAorICBI
VU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgMCkgXAorICBIVU5EUkVEX1RF
U1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgMSkgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0
X2Nhc2VfbmFtZV9wcmVmaXggIyMgMikgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFt
ZV9wcmVmaXggIyMgMykgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXgg
IyMgNCkgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgNSkgXAor
ICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgNikgXAorICBIVU5EUkVE
X1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgNykgXAorICBIVU5EUkVEX1RFU1RTXyh0
ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgOCkgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2Vf
bmFtZV9wcmVmaXggIyMgOSkKKworLy8gRW5zdXJlcyB0aGF0IHdlIGNhbiBkZWZpbmUgMTAwMCBU
RVNUKClzIGluIHRoZSBzYW1lIHRyYW5zbGF0aW9uCisvLyB1bml0LgorVEhPVVNBTkRfVEVTVFNf
KFQpCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICB0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgLy8gV2UgZG9uJ3QgYWN0dWFsbHkgbmVlZCB0
byBydW4gdGhlIGR1bW15IHRlc3RzIC0gdGhlIHB1cnBvc2UgaXMgdG8KKyAgLy8gZW5zdXJlIHRo
YXQgdGhleSBjb21waWxlLgorICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGVzdF91dGlscy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGVzdF91dGlscy5weQppbmRleCBlMGY1OTczZTdlYTZmODFlNjY2
YzMxMjFjM2M4ZmE4NDNmNDM0ZjYxLi40M2NiYThmNGNkNjFkZmZmM2ExYTUyMTAxYmVkM2U3MzRh
NWUxYjU0IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rl
c3RfdXRpbHMucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0
X3V0aWxzLnB5CkBAIC0xLDUgKzEsMyBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCiAjIENv
cHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgogIyBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwpAQCAt
MjksMjAgKzI3LDIxIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0iIiJVbml0
IHRlc3QgdXRpbGl0aWVzIGZvciBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrLiIiIgorIiIi
VW5pdCB0ZXN0IHV0aWxpdGllcyBmb3IgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZy
YW1ld29yay4iIiIKKyMgU3VwcHJlc3NlcyB0aGUgJ0ltcG9ydCBub3QgYXQgdGhlIHRvcCBvZiB0
aGUgZmlsZScgbGludCBjb21wbGFpbnQuCisjIHB5bGludDogZGlzYWJsZS1tc2c9QzYyMDQKKwor
aW1wb3J0IG9zCitpbXBvcnQgc3lzCiAKLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbiknCitJU19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCitJU19DWUdXSU4gPSBv
cy5uYW1lID09ICdwb3NpeCcgYW5kICdDWUdXSU4nIGluIG9zLnVuYW1lKClbMF0KIAogaW1wb3J0
IGF0ZXhpdAotaW1wb3J0IG9zCiBpbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3lzCiBpbXBvcnQgdGVt
cGZpbGUKLWltcG9ydCB1bml0dGVzdAotX3Rlc3RfbW9kdWxlID0gdW5pdHRlc3QKK2ltcG9ydCB1
bml0dGVzdCBhcyBfdGVzdF9tb2R1bGUKIAotIyBTdXBwcmVzc2VzIHRoZSAnSW1wb3J0IG5vdCBh
dCB0aGUgdG9wIG9mIHRoZSBmaWxlJyBsaW50IGNvbXBsYWludC4KLSMgcHlsaW50OiBkaXNhYmxl
LW1zZz1DNjIwNAogdHJ5OgogICBpbXBvcnQgc3VicHJvY2VzcwogICBfU1VCUFJPQ0VTU19NT0RV
TEVfQVZBSUxBQkxFID0gVHJ1ZQpAQCAtNTMsMTggKzUyLDMwIEBAIGV4Y2VwdDoKIAogR1RFU1Rf
T1VUUFVUX1ZBUl9OQU1FID0gJ0dURVNUX09VVFBVVCcKIAotSVNfV0lORE9XUyA9IG9zLm5hbWUg
PT0gJ250JwotSVNfQ1lHV0lOID0gb3MubmFtZSA9PSAncG9zaXgnIGFuZCAnQ1lHV0lOJyBpbiBv
cy51bmFtZSgpWzBdCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3Igc3BlY2lmeWluZyB0
aGUgcGF0aCB0byB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZS4KK1BSRU1BVFVSRV9FWElUX0ZJTEVf
RU5WX1ZBUiA9ICdURVNUX1BSRU1BVFVSRV9FWElUX0ZJTEUnCisKK2Vudmlyb24gPSBvcy5lbnZp
cm9uLmNvcHkoKQorCisKK2RlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgorICAiIiJTZXRz
L3Vuc2V0cyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIGdpdmVuIHZhbHVlLiIiIgorCisg
IGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAgIGVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQorICBl
bGlmIGVudl92YXIgaW4gZW52aXJvbjoKKyAgICBkZWwgZW52aXJvbltlbnZfdmFyXQorCiAKICMg
SGVyZSB3ZSBleHBvc2UgYSBjbGFzcyBmcm9tIGEgcGFydGljdWxhciBtb2R1bGUsIGRlcGVuZGlu
ZyBvbiB0aGUKICMgZW52aXJvbm1lbnQuIFRoZSBjb21tZW50IHN1cHByZXNzZXMgdGhlICdJbnZh
bGlkIHZhcmlhYmxlIG5hbWUnIGxpbnQKICMgY29tcGxhaW50LgotVGVzdENhc2UgPSBfdGVzdF9t
b2R1bGUuVGVzdENhc2UgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwOQorVGVzdENhc2UgPSBf
dGVzdF9tb2R1bGUuVGVzdENhc2UgICMgcHlsaW50OiBkaXNhYmxlPUM2NDA5CiAKICMgSW5pdGlh
bGx5IG1hcHMgYSBmbGFnIHRvIGl0cyBkZWZhdWx0IHZhbHVlLiBBZnRlcgogIyBfUGFyc2VBbmRT
dHJpcEdUZXN0RmxhZ3MoKSBpcyBjYWxsZWQsIG1hcHMgYSBmbGFnIHRvIGl0cyBhY3R1YWwgdmFs
dWUuCi1fZmxhZ19tYXAgPSB7J2d0ZXN0X3NvdXJjZV9kaXInOiBvcy5wYXRoLmRpcm5hbWUoc3lz
LmFyZ3ZbMF0pLAotICAgICAgICAgICAgICdndGVzdF9idWlsZF9kaXInOiBvcy5wYXRoLmRpcm5h
bWUoc3lzLmFyZ3ZbMF0pfQorX2ZsYWdfbWFwID0geydzb3VyY2VfZGlyJzogb3MucGF0aC5kaXJu
YW1lKHN5cy5hcmd2WzBdKSwKKyAgICAgICAgICAgICAnYnVpbGRfZGlyJzogb3MucGF0aC5kaXJu
YW1lKHN5cy5hcmd2WzBdKX0KIF9ndGVzdF9mbGFnc19hcmVfcGFyc2VkID0gRmFsc2UKIAogCkBA
IC03Myw3ICs4NCw3IEBAIGRlZiBfUGFyc2VBbmRTdHJpcEdUZXN0RmxhZ3MoYXJndik6CiAKICAg
IyBTdXBwcmVzc2VzIHRoZSBsaW50IGNvbXBsYWludCBhYm91dCBhIGdsb2JhbCB2YXJpYWJsZSBz
aW5jZSB3ZSBuZWVkIGl0CiAgICMgaGVyZSB0byBtYWludGFpbiBtb2R1bGUtd2lkZSBzdGF0ZS4K
LSAgZ2xvYmFsIF9ndGVzdF9mbGFnc19hcmVfcGFyc2VkICAjIHB5bGludDogZGlzYWJsZS1tc2c9
VzA2MDMKKyAgZ2xvYmFsIF9ndGVzdF9mbGFnc19hcmVfcGFyc2VkICAjIHB5bGludDogZGlzYWJs
ZT1XMDYwMwogICBpZiBfZ3Rlc3RfZmxhZ3NfYXJlX3BhcnNlZDoKICAgICByZXR1cm4KIApAQCAt
MTExLDEzICsxMjIsMTMgQEAgZGVmIEdldEZsYWcoZmxhZyk6CiBkZWYgR2V0U291cmNlRGlyKCk6
CiAgICIiIlJldHVybnMgdGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGRpcmVjdG9yeSB3aGVyZSB0
aGUgLnB5IGZpbGVzIGFyZS4iIiIKIAotICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKEdldEZsYWco
J2d0ZXN0X3NvdXJjZV9kaXInKSkKKyAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChHZXRGbGFnKCdz
b3VyY2VfZGlyJykpCiAKIAogZGVmIEdldEJ1aWxkRGlyKCk6CiAgICIiIlJldHVybnMgdGhlIGFi
c29sdXRlIHBhdGggb2YgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgdGVzdCBiaW5hcmllcyBhcmUu
IiIiCiAKLSAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChHZXRGbGFnKCdndGVzdF9idWlsZF9kaXIn
KSkKKyAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChHZXRGbGFnKCdidWlsZF9kaXInKSkKIAogCiBf
dGVtcF9kaXIgPSBOb25lCkBAIC0xMzAsOCArMTQxLDYgQEAgYXRleGl0LnJlZ2lzdGVyKF9SZW1v
dmVUZW1wRGlyKQogCiAKIGRlZiBHZXRUZW1wRGlyKCk6Ci0gICIiIlJldHVybnMgYSBkaXJlY3Rv
cnkgZm9yIHRlbXBvcmFyeSBmaWxlcy4iIiIKLQogICBnbG9iYWwgX3RlbXBfZGlyCiAgIGlmIG5v
dCBfdGVtcF9kaXI6CiAgICAgX3RlbXBfZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCkBAIC0xNjAs
MTMgKzE2OSw5IEBAIGRlZiBHZXRUZXN0RXhlY3V0YWJsZVBhdGgoZXhlY3V0YWJsZV9uYW1lLCBi
dWlsZF9kaXI9Tm9uZSk6CiAKICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgpOgogICAgIG1l
c3NhZ2UgPSAoCi0gICAgICAgICdVbmFibGUgdG8gZmluZCB0aGUgdGVzdCBiaW5hcnkuIFBsZWFz
ZSBtYWtlIHN1cmUgdG8gcHJvdmlkZSBwYXRoXG4nCi0gICAgICAgICd0byB0aGUgYmluYXJ5IHZp
YSB0aGUgLS1ndGVzdF9idWlsZF9kaXIgZmxhZyBvciB0aGUgR1RFU1RfQlVJTERfRElSXG4nCi0g
ICAgICAgICdlbnZpcm9ubWVudCB2YXJpYWJsZS4gRm9yIGNvbnZlbmllbnQgdXNlLCBpbnZva2Ug
dGhpcyBzY3JpcHQgdmlhXG4nCi0gICAgICAgICdta190ZXN0LnB5LlxuJwotICAgICAgICAjIFRP
RE8odmxhZGxAZ29vZ2xlLmNvbSk6IGNoYW5nZSBta190ZXN0LnB5IHRvIHRlc3QucHkgYWZ0ZXIg
cmVuYW1pbmcKLSAgICAgICAgIyB0aGUgZmlsZS4KLSAgICAgICAgJ1BsZWFzZSBydW4gbWtfdGVz
dC5weSAtaCBmb3IgaGVscC4nKQorICAgICAgICAnVW5hYmxlIHRvIGZpbmQgdGhlIHRlc3QgYmlu
YXJ5ICIlcyIuIFBsZWFzZSBtYWtlIHN1cmUgdG8gcHJvdmlkZVxuJworICAgICAgICAnYSBwYXRo
IHRvIHRoZSBiaW5hcnkgdmlhIHRoZSAtLWJ1aWxkX2RpciBmbGFnIG9yIHRoZSBCVUlMRF9ESVJc
bicKKyAgICAgICAgJ2Vudmlyb25tZW50IHZhcmlhYmxlLicgJSBwYXRoKQogICAgIHByaW50ID4+
IHN5cy5zdGRlcnIsIG1lc3NhZ2UKICAgICBzeXMuZXhpdCgxKQogCkBAIC0yMzQsNyArMjM5LDcg
QEAgY2xhc3MgU3VicHJvY2VzczoKICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNvbW1hbmQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRl
cnI9c3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPXdvcmtpbmdfZGlyLCB1
bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwgZW52PWVudikKLSAgICAgICMgY29tbXVuaWNhdGUgcmV0
dXJucyBhIHR1cGxlIHdpdGggdGhlIGZpbGUgb2JlY3QgZm9yIHRoZSBjaGlsZCdzCisgICAgICAj
IGNvbW11bmljYXRlIHJldHVybnMgYSB0dXBsZSB3aXRoIHRoZSBmaWxlIG9iamVjdCBmb3IgdGhl
IGNoaWxkJ3MKICAgICAgICMgb3V0cHV0LgogICAgICAgc2VsZi5vdXRwdXQgPSBwLmNvbW11bmlj
YXRlKClbMF0KICAgICAgIHNlbGYuX3JldHVybl9jb2RlID0gcC5yZXR1cm5jb2RlCkBAIC0yNDUs
NyArMjUwLDcgQEAgY2xhc3MgU3VicHJvY2VzczoKICAgICAgICAgIyBDaGFuZ2VzIG1hZGUgYnkg
b3MuZW52aXJvbi5jbGVhciBhcmUgbm90IGluaGVyaXRhYmxlIGJ5IGNoaWxkCiAgICAgICAgICMg
cHJvY2Vzc2VzIHVudGlsIFB5dGhvbiAyLjYuIFRvIHByb2R1Y2UgaW5oZXJpdGFibGUgY2hhbmdl
cyB3ZSBoYXZlCiAgICAgICAgICMgdG8gZGVsZXRlIGVudmlyb25tZW50IGl0ZW1zIHdpdGggdGhl
IGRlbCBzdGF0ZW1lbnQuCi0gICAgICAgIGZvciBrZXkgaW4gZGVzdDoKKyAgICAgICAgZm9yIGtl
eSBpbiBkZXN0LmtleXMoKToKICAgICAgICAgICBkZWwgZGVzdFtrZXldCiAgICAgICAgIGRlc3Qu
dXBkYXRlKHNyYykKIApAQCAtMzAxLDcgKzMwNiw3IEBAIGRlZiBNYWluKCk6CiAgIF9QYXJzZUFu
ZFN0cmlwR1Rlc3RGbGFncyhzeXMuYXJndikKICAgIyBUaGUgdGVzdGVkIGJpbmFyaWVzIHNob3Vs
ZCBub3QgYmUgd3JpdGluZyBYTUwgb3V0cHV0IGZpbGVzIHVubGVzcyB0aGUKICAgIyBzY3JpcHQg
ZXhwbGljaXRseSBpbnN0cnVjdHMgdGhlbSB0by4KLSAgIyBUT0RPKHZsYWRsQGdvb2dsZS5jb20p
OiBNb3ZlIHRoaXMgaW50byBTdWJwcm9jZXNzIHdoZW4gd2UgaW1wbGVtZW50CisgICMgRklYTUU6
IE1vdmUgdGhpcyBpbnRvIFN1YnByb2Nlc3Mgd2hlbiB3ZSBpbXBsZW1lbnQKICAgIyBwYXNzaW5n
IGVudmlyb25tZW50IGludG8gaXQgYXMgYSBwYXJhbWV0ZXIuCiAgIGlmIEdURVNUX09VVFBVVF9W
QVJfTkFNRSBpbiBvcy5lbnZpcm9uOgogICAgIGRlbCBvcy5lbnZpcm9uW0dURVNUX09VVFBVVF9W
QVJfTkFNRV0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
dGVzdGJyaWRnZV90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90
ZXN0YnJpZGdlX3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdmZmFkNzNkNDAwNjUyOThmMzA1MDBkZTgy
NGQ4MDhiNjU3MWQ4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfdGVzdGJyaWRnZV90ZXN0LnB5CkBAIC0wLDAgKzEsNjMgQEAKKyMhL3Vzci9i
aW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxOCBHb29nbGUgTExDLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMg
ZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRl
c3QgdXNlcyBmaWx0ZXIgcHJvdmlkZWQgdmlhIHRlc3RicmlkZ2UuIiIiCisKK2ltcG9ydCBvcwor
CitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitiaW5hcnlfbmFtZSA9ICdndGVzdF90ZXN0YnJp
ZGdlX3Rlc3RfJworQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQ
YXRoKGJpbmFyeV9uYW1lKQorVEVTVEJSSURHRV9OQU1FID0gJ1RFU1RCUklER0VfVEVTVF9PTkxZ
JworCisKK2RlZiBBc3NlcnQoY29uZGl0aW9uKToKKyAgaWYgbm90IGNvbmRpdGlvbjoKKyAgICBy
YWlzZSBBc3NlcnRpb25FcnJvcgorCisKK2NsYXNzIEdUZXN0VGVzdEZpbHRlclRlc3QoZ3Rlc3Rf
dGVzdF91dGlscy5UZXN0Q2FzZSk6CisKKyAgZGVmIHRlc3RUZXN0RXhlY3V0aW9uSXNGaWx0ZXJl
ZChzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0IHRoZSB0ZXN0IGZpbHRlciBpcyBwaWNrZWQgdXAg
ZnJvbSB0aGUgdGVzdGJyaWRnZSBlbnYgdmFyLiIiIgorICAgIHN1YnByb2Nlc3NfZW52ID0gb3Mu
ZW52aXJvbi5jb3B5KCkKKworICAgIHN1YnByb2Nlc3NfZW52W1RFU1RCUklER0VfTkFNRV0gPSAn
Ki5UZXN0VGhhdFN1Y2NlZWRzJworICAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3Mo
Q09NTUFORCwgZW52PXN1YnByb2Nlc3NfZW52KQorCisgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwg
cC5leGl0X2NvZGUpCisKKyAgICBBc3NlcnQoJ2ZpbHRlciA9ICouVGVzdFRoYXRTdWNjZWVkcycg
aW4gcC5vdXRwdXQpCisgICAgQXNzZXJ0KCdbICAgICAgIE9LIF0gVGVzdEZpbHRlclRlc3QuVGVz
dFRoYXRTdWNjZWVkcycgaW4gcC5vdXRwdXQpCisgICAgQXNzZXJ0KCdbICBQQVNTRUQgIF0gMSB0
ZXN0LicgaW4gcC5vdXRwdXQpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rl
c3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfdGVzdGJyaWRnZV90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfdGVzdGJyaWRnZV90ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDYxN2IyMDllMTBh
OWQxNzk4MzY4ZTI2NDY1YWFhNjI3MTVmMGVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0YnJpZGdlX3Rlc3RfLmNjCkBAIC0wLDAgKzEs
NDMgQEAKKy8vIENvcHlyaWdodCAyMDE4LCBHb29nbGUgTExDLgorLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisv
LyBUaGlzIHByb2dyYW0gaXMgbWVhbnQgdG8gYmUgcnVuIGJ5IGd0ZXN0X3Rlc3RfZmlsdGVyX3Rl
c3QucHkuICBEbyBub3QgcnVuCisvLyBpdCBkaXJlY3RseS4KKworI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCisKKy8vIFRoZXNlIHRlc3RzIGFyZSB1c2VkIHRvIGRldGVjdCBpZiBmaWx0ZXJpbmcg
aXMgd29ya2luZy4gT25seQorLy8gJ1Rlc3RUaGF0U3VjY2VlZHMnIHNob3VsZCBldmVyIHJ1bi4K
KworVEVTVChUZXN0RmlsdGVyVGVzdCwgVGVzdFRoYXRTdWNjZWVkcykge30KKworVEVTVChUZXN0
RmlsdGVyVGVzdCwgVGVzdFRoYXRGYWlscykgeworICBBU1NFUlRfVFJVRShmYWxzZSkgPDwgIlRo
aXMgdGVzdCBzaG91bGQgbmV2ZXIgYmUgcnVuLiI7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfZXhfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9leF90ZXN0
LmNjCmluZGV4IDhiZjlkYzkwNWI1ZmY4M2FjMDIxMDQxMzQzNTgwZjkwOTc1NDgzY2UuLjkzZjU5
ZDQ5Y2ZkYjk0NzRkY2E2MjJjMTdhMmM5NjRhYjBiZDU4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9leF90ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9l
eF90ZXN0LmNjCkBAIC0yNiwxMiArMjYsMTEgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFu
eW9uZyBXYW4pCisKIAogLy8gVGVzdHMgR29vZ2xlIFRlc3QncyB0aHJvdy1vbi1mYWlsdXJlIG1v
ZGUgd2l0aCBleGNlcHRpb25zIGVuYWJsZWQuCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRl
IDxzdGRpby5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF90aHJvd19vbl9mYWlsdXJlX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggNTY3OGZmZWFmNmZhNjFlZjdkY2I0NWI4ZjM0YTAzNDExOTFhYmY2ZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdC5weQorKysgL2Rldi9udWxsCkBA
IC0xLDE3MSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIw
MDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0j
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi0iIiJUZXN0cyBHb29nbGUgVGVzdCdzIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRoIGV4
Y2VwdGlvbnMgZGlzYWJsZWQuCi0KLVRoaXMgc2NyaXB0IGludm9rZXMgZ3Rlc3RfdGhyb3dfb25f
ZmFpbHVyZV90ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aAotR29vZ2xlIFRlc3QpIHdpdGgg
ZGlmZmVyZW50IGVudmlyb25tZW50cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdzLgotIiIiCi0KLV9f
YXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBvcwot
aW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLQotCi0jIENvbnN0YW50cy4KLQotIyBUaGUgY29tbWFu
ZCBsaW5lIGZsYWcgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgdGhyb3ctb24tZmFpbHVyZSBt
b2RlLgotVEhST1dfT05fRkFJTFVSRSA9ICdndGVzdF90aHJvd19vbl9mYWlsdXJlJwotCi0jIFBh
dGggdG8gdGhlIGd0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8gcHJvZ3JhbSwgY29tcGlsZWQg
d2l0aAotIyBleGNlcHRpb25zIGRpc2FibGVkLgotRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxz
LkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKLSAgICAnZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0
XycpCi0KLQotIyBVdGlsaXRpZXMuCi0KLQotZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6
Ci0gICIiIlNldHMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSBnaXZlbiB2YWx1ZTsgdW5z
ZXRzIGl0IHdoZW4gdGhlCi0gIGdpdmVuIHZhbHVlIGlzIE5vbmUuCi0gICIiIgotCi0gIGVudl92
YXIgPSBlbnZfdmFyLnVwcGVyKCkKLSAgaWYgdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgb3MuZW52
aXJvbltlbnZfdmFyXSA9IHZhbHVlCi0gIGVsaWYgZW52X3ZhciBpbiBvcy5lbnZpcm9uOgotICAg
IGRlbCBvcy5lbnZpcm9uW2Vudl92YXJdCi0KLQotZGVmIFJ1bihjb21tYW5kKToKLSAgIiIiUnVu
cyBhIGNvbW1hbmQ7IHJldHVybnMgVHJ1ZS9GYWxzZSBpZiBpdHMgZXhpdCBjb2RlIGlzL2lzbid0
IDAuIiIiCi0KLSAgcHJpbnQgJ1J1bm5pbmcgIiVzIi4gLiAuJyAlICcgJy5qb2luKGNvbW1hbmQp
Ci0gIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKLSAgcmV0dXJuIHAu
ZXhpdGVkIGFuZCBwLmV4aXRfY29kZSA9PSAwCi0KLQotIyBUaGUgdGVzdHMuICBUT0RPKHdhbkBn
b29nbGUuY29tKTogcmVmYWN0b3IgdGhlIGNsYXNzIHRvIHNoYXJlIGNvbW1vbgotIyBsb2dpYyB3
aXRoIGNvZGUgaW4gZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdC5weS4KLWNsYXNzIFRo
cm93T25GYWlsdXJlVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAgIiIiVGVzdHMg
dGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZS4iIiIKLQotICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYs
IGVudl92YXJfdmFsdWUsIGZsYWdfdmFsdWUsIHNob3VsZF9mYWlsKToKLSAgICAiIiJSdW5zIGd0
ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8gYW5kIHZlcmlmaWVzIHRoYXQgaXQgZG9lcwotICAg
IChvciBkb2VzIG5vdCkgZXhpdCB3aXRoIGEgbm9uLXplcm8gY29kZS4KLQotICAgIEFyZ3M6Ci0g
ICAgICBlbnZfdmFyX3ZhbHVlOiAgICB2YWx1ZSBvZiB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVS
RSBlbnZpcm9ubWVudAotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGU7IE5vbmUgaWYg
dGhlIHZhcmlhYmxlIHNob3VsZCBiZSB1bnNldC4KLSAgICAgIGZsYWdfdmFsdWU6ICAgICAgIHZh
bHVlIG9mIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZzsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgotICAgICAg
c2hvdWxkX2ZhaWw6ICAgICAgVHJ1ZSBpZmYgdGhlIHByb2dyYW0gaXMgZXhwZWN0ZWQgdG8gZmFp
bC4KLSAgICAiIiIKLQotICAgIFNldEVudlZhcihUSFJPV19PTl9GQUlMVVJFLCBlbnZfdmFyX3Zh
bHVlKQotCi0gICAgaWYgZW52X3Zhcl92YWx1ZSBpcyBOb25lOgotICAgICAgZW52X3Zhcl92YWx1
ZV9tc2cgPSAnIGlzIG5vdCBzZXQnCi0gICAgZWxzZToKLSAgICAgIGVudl92YXJfdmFsdWVfbXNn
ID0gJz0nICsgZW52X3Zhcl92YWx1ZQotCi0gICAgaWYgZmxhZ192YWx1ZSBpcyBOb25lOgotICAg
ICAgZmxhZyA9ICcnCi0gICAgZWxpZiBmbGFnX3ZhbHVlID09ICcwJzoKLSAgICAgIGZsYWcgPSAn
LS0lcz0wJyAlIFRIUk9XX09OX0ZBSUxVUkUKLSAgICBlbHNlOgotICAgICAgZmxhZyA9ICctLSVz
JyAlIFRIUk9XX09OX0ZBSUxVUkUKLQotICAgIGNvbW1hbmQgPSBbRVhFX1BBVEhdCi0gICAgaWYg
ZmxhZzoKLSAgICAgIGNvbW1hbmQuYXBwZW5kKGZsYWcpCi0KLSAgICBpZiBzaG91bGRfZmFpbDoK
LSAgICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxkJwotICAgIGVsc2U6Ci0gICAgICBzaG91bGRf
b3Jfbm90ID0gJ3Nob3VsZCBub3QnCi0KLSAgICBmYWlsZWQgPSBub3QgUnVuKGNvbW1hbmQpCi0K
LSAgICBTZXRFbnZWYXIoVEhST1dfT05fRkFJTFVSRSwgTm9uZSkKLQotICAgIG1zZyA9ICgnd2hl
biAlcyVzLCBhbiBhc3NlcnRpb24gZmFpbHVyZSBpbiAiJXMiICVzIGNhdXNlIGEgbm9uLXplcm8g
JwotICAgICAgICAgICAnZXhpdCBjb2RlLicgJQotICAgICAgICAgICAoVEhST1dfT05fRkFJTFVS
RSwgZW52X3Zhcl92YWx1ZV9tc2csICcgJy5qb2luKGNvbW1hbmQpLAotICAgICAgICAgICAgc2hv
dWxkX29yX25vdCkpCi0gICAgc2VsZi5hc3NlcnRfKGZhaWxlZCA9PSBzaG91bGRfZmFpbCwgbXNn
KQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9yKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBi
ZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBtb2RlLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnko
ZW52X3Zhcl92YWx1ZT1Ob25lLCBmbGFnX3ZhbHVlPU5vbmUsIHNob3VsZF9mYWlsPUZhbHNlKQot
Ci0gIGRlZiB0ZXN0VGhyb3dPbkZhaWx1cmVFbnZWYXIoc2VsZik6Ci0gICAgIiIiVGVzdHMgdXNp
bmcgdGhlIEdURVNUX1RIUk9XX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFyaWFibGUuIiIiCi0K
LSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAg
ICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2Zh
aWw9RmFsc2UpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0gICAg
ICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAg
IHNob3VsZF9mYWlsPVRydWUpCi0KLSAgZGVmIHRlc3RUaHJvd09uRmFpbHVyZUZsYWcoc2VsZik6
Ci0gICAgIiIiVGVzdHMgdXNpbmcgdGhlIC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZSBmbGFnLiIi
IgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAotICAgICAgICAg
ICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIHNob3Vs
ZF9mYWlsPUZhbHNlKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwK
LSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAg
ICAgICBzaG91bGRfZmFpbD1UcnVlKQotCi0gIGRlZiB0ZXN0VGhyb3dPbkZhaWx1cmVGbGFnT3Zl
cnJpZGVzRW52VmFyKHNlbGYpOgotICAgICIiIlRlc3RzIHRoYXQgLS1ndGVzdF90aHJvd19vbl9m
YWlsdXJlIG92ZXJyaWRlcyBHVEVTVF9USFJPV19PTl9GQUlMVVJFLiIiIgotCi0gICAgc2VsZi5S
dW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZmxh
Z192YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9RmFsc2UpCi0g
ICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9
VHJ1ZSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAg
ICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBzaG91
bGRfZmFpbD1GYWxzZSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywK
LSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAg
ICAgICBzaG91bGRfZmFpbD1UcnVlKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0g
IGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2MKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4ZmJkNWE3NmRjOTIwNmY0YTAyOTUxNGI4NzZkYzAxNDFl
MzZiZmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3RfLmNj
CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDksIEdvb2ds
ZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKLQotLy8gVGVzdHMgR29vZ2xlIFRlc3QncyB0aHJvdy1vbi1mYWlsdXJlIG1vZGUg
d2l0aCBleGNlcHRpb25zIGRpc2FibGVkLgotLy8KLS8vIFRoaXMgcHJvZ3JhbSBtdXN0IGJlIGNv
bXBpbGVkIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4gIEl0IHdpbGwgYmUKLS8vIGludm9rZWQg
YnkgZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0LnB5LCBhbmQgaXMgZXhwZWN0ZWQgdG8gZXhp
dAotLy8gd2l0aCBub24temVybyBpbiB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlIG9yIDAgb3Ro
ZXJ3aXNlLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KSB7Ci0gIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsK
LQotICAvLyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IHBlb3BsZSBjYW4gdXNlIEdvb2dsZSBUZXN0
IGFzc2VydGlvbnMgaW4KLSAgLy8gb3RoZXIgdGVzdGluZyBmcmFtZXdvcmtzLCBhcyBsb25nIGFz
IHRoZXkgaW5pdGlhbGl6ZSBHb29nbGUgVGVzdAotICAvLyBwcm9wZXJseSBhbmQgc2V0IHRoZSB0
aHJvd24tb24tZmFpbHVyZSBtb2RlLiAgVGhlcmVmb3JlLCB3ZSBkb24ndAotICAvLyB1c2UgR29v
Z2xlIFRlc3QncyBjb25zdHJ1Y3RzIGZvciBkZWZpbmluZyBhbmQgcnVubmluZyB0ZXN0cwotICAv
LyAoZS5nLiBURVNUIGFuZCBSVU5fQUxMX1RFU1RTKSBoZXJlLgotCi0gIC8vIEluIHRoZSB0aHJv
dy1vbi1mYWlsdXJlIG1vZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLCB0aGlzCi0gIC8vIGFz
c2VydGlvbiB3aWxsIGNhdXNlIHRoZSBwcm9ncmFtIHRvIGV4aXQgd2l0aCBhIG5vbi16ZXJvIGNv
ZGUuCi0gIEVYUEVDVF9FUSgyLCAzKTsKLQotICAvLyBXaGVuIG5vdCBpbiB0aGUgdGhyb3ctb24t
ZmFpbHVyZSBtb2RlLCB0aGUgY29udHJvbCB3aWxsIHJlYWNoCi0gIC8vIGhlcmUuCi0gIHJldHVy
biAwOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91
bmluaXRpYWxpemVkX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X3VuaW5pdGlhbGl6ZWRfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNmFl
NTdlZWVkYWZjZjA3NTA0ZGQ4ZDVkN2E4YjVhN2Y4MzgxM2YyNy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAg
QEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlZlcmlm
aWVzIHRoYXQgR29vZ2xlIFRlc3Qgd2FybnMgdGhlIHVzZXIgd2hlbiBub3QgaW5pdGlhbGl6ZWQg
cHJvcGVybHkuIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdh
biknCi0KLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi0KLQotQ09NTUFORCA9IGd0ZXN0X3Rlc3Rf
dXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF91bmluaXRpYWxpemVkX3Rlc3RfJykK
LQotCi1kZWYgQXNzZXJ0KGNvbmRpdGlvbik6Ci0gIGlmIG5vdCBjb25kaXRpb246Ci0gICAgcmFp
c2UgQXNzZXJ0aW9uRXJyb3IKLQotCi1kZWYgQXNzZXJ0RXEoZXhwZWN0ZWQsIGFjdHVhbCk6Ci0g
IGlmIGV4cGVjdGVkICE9IGFjdHVhbDoKLSAgICBwcmludCAnRXhwZWN0ZWQ6ICVzJyAlIChleHBl
Y3RlZCwpCi0gICAgcHJpbnQgJyAgQWN0dWFsOiAlcycgJSAoYWN0dWFsLCkKLSAgICByYWlzZSBB
c3NlcnRpb25FcnJvcgotCi0KLWRlZiBUZXN0RXhpdENvZGVBbmRPdXRwdXQoY29tbWFuZCk6Ci0g
ICIiIlJ1bnMgdGhlIGdpdmVuIGNvbW1hbmQgYW5kIHZlcmlmaWVzIGl0cyBleGl0IGNvZGUgYW5k
IG91dHB1dC4iIiIKLQotICAjIFZlcmlmaWVzIHRoYXQgJ2NvbW1hbmQnIGV4aXRzIHdpdGggY29k
ZSAxLgotICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCi0gIEFzc2Vy
dChwLmV4aXRlZCkKLSAgQXNzZXJ0RXEoMSwgcC5leGl0X2NvZGUpCi0gIEFzc2VydCgnSW5pdEdv
b2dsZVRlc3QnIGluIHAub3V0cHV0KQotCi0KLWNsYXNzIEdUZXN0VW5pbml0aWFsaXplZFRlc3Qo
Z3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gIGRlZiB0ZXN0RXhpdENvZGVBbmRPdXRwdXQo
c2VsZik6Ci0gICAgVGVzdEV4aXRDb2RlQW5kT3V0cHV0KENPTU1BTkQpCi0KLQotaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0Xy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0
Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThiMmFhODFkZDU0ZDljNjQzYTU4
ZGU1ZTQ0ZDZjY2I1MjBhNzc2NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6
ZWRfdGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vLyBDb3B5cmlnaHQg
MjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4K
LS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0v
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotVEVTVChE
dW1teVRlc3QsIER1bW15KSB7Ci0gIC8vIFRoaXMgdGVzdCBkb2Vzbid0IHZlcmlmeSBhbnl0aGlu
Zy4gIFdlIGp1c3QgbmVlZCBpdCB0byBjcmVhdGUgYQotICAvLyByZWFsaXN0aWMgc3RhZ2UgZm9y
IHRlc3RpbmcgdGhlIGJlaGF2aW9yIG9mIEdvb2dsZSBUZXN0IHdoZW4KLSAgLy8gUlVOX0FMTF9U
RVNUUygpIGlzIGNhbGxlZCB3aXRob3V0IHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCkgYmVpbmcK
LSAgLy8gY2FsbGVkIGZpcnN0LgotfQotCi1pbnQgbWFpbigpIHsKLSAgcmV0dXJuIFJVTl9BTExf
VEVTVFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaXR0
ZXN0LmNjCmluZGV4IGExNGYwNjVhMmNjZDg2Mzc5YTAxNDlhMzNmYzU2NDVjMGVjOGIxODEuLmY3
MjEzZmJmM2U1ZTg3MjA4OWJmYjk4NTUxYWMzYmEzZTNhNjdiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91bml0dGVzdC5jYwpAQCAtMjYsMTggKzI2LDE2IEBA
CiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCiAvLwogLy8gVGVzdHMgZm9y
IEdvb2dsZSBUZXN0IGl0c2VsZi4gIFRoaXMgdmVyaWZpZXMgdGhhdCB0aGUgYmFzaWMgY29uc3Ry
dWN0cyBvZgogLy8gR29vZ2xlIFRlc3Qgd29yay4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
Ci0jaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKLS8vIFZlcmlm
aWVzIHRoYXQgdGhlIGNvbW1hbmQgbGluZSBmbGFnIHZhcmlhYmxlcyBjYW4gYmUgYWNjZXNzZWQK
LS8vIGluIGNvZGUgb25jZSA8Z3Rlc3QvZ3Rlc3QuaD4gaGFzIGJlZW4gI2luY2x1ZGVkLgotLy8g
RG8gbm90IG1vdmUgaXQgYWZ0ZXIgb3RoZXIgI2luY2x1ZGVzLgorLy8gVmVyaWZpZXMgdGhhdCB0
aGUgY29tbWFuZCBsaW5lIGZsYWcgdmFyaWFibGVzIGNhbiBiZSBhY2Nlc3NlZCBpbgorLy8gY29k
ZSBvbmNlICJndGVzdC5oIiBoYXMgYmVlbiAjaW5jbHVkZWQuCisvLyBEbyBub3QgbW92ZSBpdCBh
ZnRlciBvdGhlciBndGVzdCAjaW5jbHVkZXMuCiBURVNUKENvbW1hbmRMaW5lRmxhZ3NUZXN0LCBD
YW5CZUFjY2Vzc2VkSW5Db2RlT25jZUdUZXN0SElzSW5jbHVkZWQpIHsKICAgYm9vbCBkdW1teSA9
IHRlc3Rpbmc6OkdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpCiAgICAgICB8fCB0
ZXN0aW5nOjpHVEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpCkBAIC01MiwzMCArNTAsMTA1IEBA
IFRFU1QoQ29tbWFuZExpbmVGbGFnc1Rlc3QsIENhbkJlQWNjZXNzZWRJbkNvZGVPbmNlR1Rlc3RI
SXNJbmNsdWRlZCkgewogICAgICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyhzaG93X2ludGVybmFs
X3N0YWNrX2ZyYW1lcykKICAgICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcoc2h1ZmZsZSkKICAg
ICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpID4gMAorICAgICAg
fHwgdGVzdGluZzo6R1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSAhPSAidW5rbm93biIKICAg
ICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSk7CiAgIEVYUEVDVF9U
UlVFKGR1bW15IHx8ICFkdW1teSk7ICAvLyBTdXBwcmVzc2VzIHdhcm5pbmcgdGhhdCBkdW1teSBp
cyB1bnVzZWQuCiB9CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGkuaD4KLQotLy8gSW5kaWNh
dGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3Qncwot
Ly8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlu
bC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAg
VGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5j
bHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RF
U1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgi
Ci0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KICNpbmNsdWRlIDxsaW1pdHMuaD4gIC8v
IEZvciBJTlRfTUFYLgogI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgog
I2luY2x1ZGUgPHRpbWUuaD4KIAogI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDx2ZWN0b3I+Cisj
aW5jbHVkZSA8b3N0cmVhbT4KKyNpZiBHVEVTVF9MQU5HX0NYWDExCisjaW5jbHVkZSA8dW5vcmRl
cmVkX3NldD4KKyNlbmRpZiAgLy8gR1RFU1RfTEFOR19DWFgxMQorCisjaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3Qtc3BpLmgiCisjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgogCiBuYW1l
c3BhY2UgdGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCisjaWYgR1RFU1RfQ0FOX1NU
UkVBTV9SRVNVTFRTXworCitjbGFzcyBTdHJlYW1pbmdMaXN0ZW5lclRlc3QgOiBwdWJsaWMgVGVz
dCB7CisgcHVibGljOgorICBjbGFzcyBGYWtlU29ja2V0V3JpdGVyIDogcHVibGljIFN0cmVhbWlu
Z0xpc3RlbmVyOjpBYnN0cmFjdFNvY2tldFdyaXRlciB7CisgICBwdWJsaWM6CisgICAgLy8gU2Vu
ZHMgYSBzdHJpbmcgdG8gdGhlIHNvY2tldC4KKyAgICB2aXJ0dWFsIHZvaWQgU2VuZChjb25zdCBz
dGQ6OnN0cmluZyYgbWVzc2FnZSkgeyBvdXRwdXRfICs9IG1lc3NhZ2U7IH0KKworICAgIHN0ZDo6
c3RyaW5nIG91dHB1dF87CisgIH07CisKKyAgU3RyZWFtaW5nTGlzdGVuZXJUZXN0KCkKKyAgICAg
IDogZmFrZV9zb2NrX3dyaXRlcl8obmV3IEZha2VTb2NrZXRXcml0ZXIpLAorICAgICAgICBzdHJl
YW1lcl8oZmFrZV9zb2NrX3dyaXRlcl8pLAorICAgICAgICB0ZXN0X2luZm9fb2JqXygiRm9vVGVz
dCIsICJCYXIiLCBOVUxMLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRp
b24oX19GSUxFX18sIF9fTElORV9fKSwgMCwgTlVMTCkge30KKworIHByb3RlY3RlZDoKKyAgc3Rk
OjpzdHJpbmcqIG91dHB1dCgpIHsgcmV0dXJuICYoZmFrZV9zb2NrX3dyaXRlcl8tPm91dHB1dF8p
OyB9CisKKyAgRmFrZVNvY2tldFdyaXRlciogY29uc3QgZmFrZV9zb2NrX3dyaXRlcl87CisgIFN0
cmVhbWluZ0xpc3RlbmVyIHN0cmVhbWVyXzsKKyAgVW5pdFRlc3QgdW5pdF90ZXN0XzsKKyAgVGVz
dEluZm8gdGVzdF9pbmZvX29ial87ICAvLyBUaGUgbmFtZSB0ZXN0X2luZm9fIHdhcyB0YWtlbiBi
eSB0ZXN0aW5nOjpUZXN0LgorfTsKKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25U
ZXN0UHJvZ3JhbUVuZCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdFBy
b2dyYW1FbmQodW5pdF90ZXN0Xyk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdFByb2dyYW1FbmQm
cGFzc2VkPTFcbiIsICpvdXRwdXQoKSk7Cit9CisKK1RFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRl
c3QsIE9uVGVzdEl0ZXJhdGlvbkVuZCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJf
Lk9uVGVzdEl0ZXJhdGlvbkVuZCh1bml0X3Rlc3RfLCA0Mik7CisgIEVYUEVDVF9FUSgiZXZlbnQ9
VGVzdEl0ZXJhdGlvbkVuZCZwYXNzZWQ9MSZlbGFwc2VkX3RpbWU9MG1zXG4iLCAqb3V0cHV0KCkp
OworfQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RDYXNlU3RhcnQpIHsK
KyAgKm91dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RDYXNlU3RhcnQoVGVzdENhc2Uo
IkZvb1Rlc3QiLCAiQmFyIiwgTlVMTCwgTlVMTCkpOworICBFWFBFQ1RfRVEoImV2ZW50PVRlc3RD
YXNlU3RhcnQmbmFtZT1Gb29UZXN0XG4iLCAqb3V0cHV0KCkpOworfQorCitURVNUX0YoU3RyZWFt
aW5nTGlzdGVuZXJUZXN0LCBPblRlc3RDYXNlRW5kKSB7CisgICpvdXRwdXQoKSA9ICIiOworICBz
dHJlYW1lcl8uT25UZXN0Q2FzZUVuZChUZXN0Q2FzZSgiRm9vVGVzdCIsICJCYXIiLCBOVUxMLCBO
VUxMKSk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdENhc2VFbmQmcGFzc2VkPTEmZWxhcHNlZF90
aW1lPTBtc1xuIiwgKm91dHB1dCgpKTsKK30KKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVz
dCwgT25UZXN0U3RhcnQpIHsKKyAgKm91dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RT
dGFydCh0ZXN0X2luZm9fb2JqXyk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdFN0YXJ0Jm5hbWU9
QmFyXG4iLCAqb3V0cHV0KCkpOworfQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBP
blRlc3RFbmQpIHsKKyAgKm91dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RFbmQodGVz
dF9pbmZvX29ial8pOworICBFWFBFQ1RfRVEoImV2ZW50PVRlc3RFbmQmcGFzc2VkPTEmZWxhcHNl
ZF90aW1lPTBtc1xuIiwgKm91dHB1dCgpKTsKK30KKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVy
VGVzdCwgT25UZXN0UGFydFJlc3VsdCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJf
Lk9uVGVzdFBhcnRSZXN1bHQoVGVzdFBhcnRSZXN1bHQoCisgICAgICBUZXN0UGFydFJlc3VsdDo6
a0ZhdGFsRmFpbHVyZSwgImZvby5jYyIsIDQyLCAiZmFpbGVkPVxuJiUiKSk7CisKKyAgLy8gTWV0
YSBjaGFyYWN0ZXJzIGluIHRoZSBmYWlsdXJlIG1lc3NhZ2Ugc2hvdWxkIGJlIHByb3Blcmx5IGVz
Y2FwZWQuCisgIEVYUEVDVF9FUSgKKyAgICAgICJldmVudD1UZXN0UGFydFJlc3VsdCZmaWxlPWZv
by5jYyZsaW5lPTQyJm1lc3NhZ2U9ZmFpbGVkJTNEJTBBJTI2JTI1XG4iLAorICAgICAgKm91dHB1
dCgpKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKIC8vIFBy
b3ZpZGVzIGFjY2VzcyB0byBvdGhlcndpc2UgcHJpdmF0ZSBwYXJ0cyBvZiB0aGUgVGVzdEV2ZW50
TGlzdGVuZXJzIGNsYXNzCiAvLyB0aGF0IGFyZSBuZWVkZWQgdG8gdGVzdCBpdC4KIGNsYXNzIFRl
c3RFdmVudExpc3RlbmVyc0FjY2Vzc29yIHsKQEAgLTEwMiw2ICsxNzUsMTggQEAgY2xhc3MgVGVz
dEV2ZW50TGlzdGVuZXJzQWNjZXNzb3IgewogICB9CiB9OwogCitjbGFzcyBVbml0VGVzdFJlY29y
ZFByb3BlcnR5VGVzdEhlbHBlciA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIFVuaXRU
ZXN0UmVjb3JkUHJvcGVydHlUZXN0SGVscGVyKCkge30KKworICAvLyBGb3J3YXJkcyB0byBVbml0
VGVzdDo6UmVjb3JkUHJvcGVydHkoKSB0byBieXBhc3MgYWNjZXNzIGNvbnRyb2xzLgorICB2b2lk
IFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBjb25zdCBzdGQ6OnN0cmlu
ZyYgdmFsdWUpIHsKKyAgICB1bml0X3Rlc3RfLlJlY29yZFByb3BlcnR5KGtleSwgdmFsdWUpOwor
ICB9CisKKyAgVW5pdFRlc3QgdW5pdF90ZXN0XzsKK307CisKIH0gIC8vIG5hbWVzcGFjZSBpbnRl
cm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIApAQCAtMTEwLDYgKzE5NSw3IEBAIHVzaW5n
IHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdDsKIHVzaW5nIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nl
c3M7CiB1c2luZyB0ZXN0aW5nOjpEb3VibGVMRTsKIHVzaW5nIHRlc3Rpbmc6OkVtcHR5VGVzdEV2
ZW50TGlzdGVuZXI7Cit1c2luZyB0ZXN0aW5nOjpFbnZpcm9ubWVudDsKIHVzaW5nIHRlc3Rpbmc6
OkZsb2F0TEU7CiB1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rl
c3RzKTsKIHVzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSk7CkBAIC0x
MjUsNiArMjExLDcgQEAgdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhyZXBlYXQpOwogdXNpbmcg
dGVzdGluZzo6R1RFU1RfRkxBRyhzaG93X2ludGVybmFsX3N0YWNrX2ZyYW1lcyk7CiB1c2luZyB0
ZXN0aW5nOjpHVEVTVF9GTEFHKHNodWZmbGUpOwogdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhz
dGFja190cmFjZV9kZXB0aCk7Cit1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHN0cmVhbV9yZXN1
bHRfdG8pOwogdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKIHVz
aW5nIHRlc3Rpbmc6OklzTm90U3Vic3RyaW5nOwogdXNpbmcgdGVzdGluZzo6SXNTdWJzdHJpbmc7
CkBAIC0xMzIsNTMgKzIxOSw3OCBAQCB1c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwogdXNpbmcgdGVz
dGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI7CiB1c2luZyB0ZXN0aW5nOjpT
dGF0aWNBc3NlcnRUeXBlRXE7CiB1c2luZyB0ZXN0aW5nOjpUZXN0OwotdXNpbmcgdGVzdGluZzo6
VGVzdEV2ZW50TGlzdGVuZXJzOwogdXNpbmcgdGVzdGluZzo6VGVzdENhc2U7Cit1c2luZyB0ZXN0
aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7Cit1c2luZyB0ZXN0aW5nOjpUZXN0SW5mbzsKIHVzaW5n
IHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OwogdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHRB
cnJheTsKIHVzaW5nIHRlc3Rpbmc6OlRlc3RQcm9wZXJ0eTsKIHVzaW5nIHRlc3Rpbmc6OlRlc3RS
ZXN1bHQ7Cit1c2luZyB0ZXN0aW5nOjpUaW1lSW5NaWxsaXM7CiB1c2luZyB0ZXN0aW5nOjpVbml0
VGVzdDsKLXVzaW5nIHRlc3Rpbmc6OmtNYXhTdGFja1RyYWNlRGVwdGg7Cit1c2luZyB0ZXN0aW5n
OjppbnRlcm5hbDo6QWRkUmVmZXJlbmNlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5
c0ZhbHNlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWU7CiB1c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6QXBwZW5kVXNlck1lc3NhZ2U7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6QXJyYXlBd2FyZUZpbmQ7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QXJyYXlFcTsKIHVz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpDb2RlUG9pbnRUb1V0Zjg7Cit1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6Q29tcGlsZUFzc2VydFR5cGVzRXF1YWw7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6Q29weUFycmF5OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkNvdW50SWY7CiB1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6RXFGYWlsdXJlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZs
b2F0aW5nUG9pbnQ7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0VGltZUluTWlsbGlz
QXNTZWNvbmRzOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZvckVhY2g7Cit1c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6Rm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDE7Cit1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzOwogdXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OkdUZXN0RmxhZ1NhdmVyOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OkdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3A7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6R2V0RWxlbWVudE9yOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldE5leHRSYW5kb21T
ZWVkOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldFJhbmRvbVNlZWRGcm9tRmxhZzsKIHVz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRUZXN0VHlwZUlkOwordXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OkdldFRpbWVJbk1pbGxpczsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRUeXBl
SWQ7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsOwordXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTsKIHVzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpJbnQzMjsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJbnQzMkZyb21FbnZPckRp
ZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJc0FQcm90b2NvbE1lc3NhZ2U7Cit1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6SXNDb250YWluZXI7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6
SXNDb250YWluZXJUZXN0OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OklzTm90Q29udGFpbmVy
OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6Ok5hdGl2ZUFycmF5OwordXNpbmcgdGVzdGluZzo6
aW50ZXJuYWw6Ok9zU3RhY2tUcmFjZUdldHRlcjsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpP
c1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2U7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UGFy
c2VJbnQzMkZsYWc7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVsYXRpb25Ub1NvdXJjZUNv
cHk7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZTsK
K3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpSZW1vdmVDb25zdDsKK3VzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpSZW1vdmVSZWZlcmVuY2U7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxk
UnVuVGVzdE9uU2hhcmQ7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxkU2hhcmQ7CiB1
c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxkVXNlQ29sb3I7CiB1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6U2h1ZmZsZTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaHVmZmxlUmFuZ2U7
Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2tpcFByZWZpeDsKIHVzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmc7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U3Ry
aW5nOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29y
OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlRlc3RSZXN1bHRBY2Nlc3NvcjsKIHVzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpVSW50MzI7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdFRl
c3RJbXBsOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OldpZGVTdHJpbmdUb1V0Zjg7Cit1c2lu
ZyB0ZXN0aW5nOjppbnRlcm5hbDo6ZWRpdF9kaXN0YW5jZTo6Q2FsY3VsYXRlT3B0aW1hbEVkaXRz
OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmVkaXRfZGlzdGFuY2U6OkNyZWF0ZVVuaWZpZWRE
aWZmOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmVkaXRfZGlzdGFuY2U6OkVkaXRUeXBlOwog
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmtNYXhSYW5kb21TZWVkOwogdXNpbmcgdGVzdGluZzo6
aW50ZXJuYWw6OmtUZXN0VHlwZUlkSW5Hb29nbGVUZXN0OwotdXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OnNjb3BlZF9wdHI7Cit1c2luZyB0ZXN0aW5nOjprTWF4U3RhY2tUcmFjZURlcHRoOwogCi0j
aWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNpZiBHVEVTVF9IQVNfU1RSRUFNX1JF
RElSRUNUSU9OCiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q2FwdHVyZVN0ZG91dDsKIHVzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjpHZXRDYXB0dXJlZFN0ZG91dDsKLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNlbmRpZgogCiAjaWYgR1RFU1RfSVNfVEhSRUFEU0FG
RQogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlRocmVhZFdpdGhQYXJhbTsKQEAgLTI2Nyw2ICsz
NzksMzEgQEAgVEVTVChHZXRUZXN0VHlwZUlkVGVzdCwgUmV0dXJuc1RoZVNhbWVWYWx1ZUluc2lk
ZU9yT3V0c2lkZU9mR29vZ2xlVGVzdCkgewogICBFWFBFQ1RfRVEoa1Rlc3RUeXBlSWRJbkdvb2ds
ZVRlc3QsIEdldFRlc3RUeXBlSWQoKSk7CiB9CiAKKy8vIFRlc3RzIENhbm9uaWNhbGl6ZUZvclN0
ZExpYlZlcnNpb25pbmcuCisKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNhbm9uaWNhbGl6
ZUZvclN0ZExpYlZlcnNpb25pbmc7CisKK1RFU1QoQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lv
bmluZywgTGVhdmVzVW52ZXJzaW9uZWROYW1lc1VuY2hhbmdlZCkgeworICBFWFBFQ1RfRVEoInN0
ZDo6YmluZCIsIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoInN0ZDo6YmluZCIpKTsK
KyAgRVhQRUNUX0VRKCJzdGQ6Ol8iLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJz
dGQ6Ol8iKSk7CisgIEVYUEVDVF9FUSgic3RkOjpfX2ZvbyIsIENhbm9uaWNhbGl6ZUZvclN0ZExp
YlZlcnNpb25pbmcoInN0ZDo6X19mb28iKSk7CisgIEVYUEVDVF9FUSgiZ3RsOjpfXzE6OngiLCBD
YW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJndGw6Ol9fMTo6eCIpKTsKKyAgRVhQRUNU
X0VRKCJfXzE6OngiLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJfXzE6OngiKSk7
CisgIEVYUEVDVF9FUSgiOjpfXzE6OngiLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5n
KCI6Ol9fMTo6eCIpKTsKK30KKworVEVTVChDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5n
LCBFbGlkZXNEb3VibGVVbmRlck5hbWVzKSB7CisgIEVYUEVDVF9FUSgic3RkOjpiaW5kIiwgQ2Fu
b25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZygic3RkOjpfXzE6OmJpbmQiKSk7CisgIEVYUEVD
VF9FUSgic3RkOjpfIiwgQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZygic3RkOjpfXzE6
Ol8iKSk7CisKKyAgRVhQRUNUX0VRKCJzdGQ6OmJpbmQiLCBDYW5vbmljYWxpemVGb3JTdGRMaWJW
ZXJzaW9uaW5nKCJzdGQ6Ol9fZzo6YmluZCIpKTsKKyAgRVhQRUNUX0VRKCJzdGQ6Ol8iLCBDYW5v
bmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJzdGQ6Ol9fZzo6XyIpKTsKKworICBFWFBFQ1Rf
RVEoInN0ZDo6YmluZCIsCisgICAgICAgICAgICBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9u
aW5nKCJzdGQ6Ol9fZ29vZ2xlOjpiaW5kIikpOworICBFWFBFQ1RfRVEoInN0ZDo6XyIsIENhbm9u
aWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoInN0ZDo6X19nb29nbGU6Ol8iKSk7Cit9CisKIC8v
IFRlc3RzIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcygpLgogCiBURVNUKEZvcm1hdFRpbWVJ
bk1pbGxpc0FzU2Vjb25kc1Rlc3QsIEZvcm1hdHNaZXJvKSB7CkBAIC0yODksMTIgKzQyNiw5OSBA
QCBURVNUKEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kc1Rlc3QsIEZvcm1hdHNOZWdhdGl2ZU51
bWJlcikgewogICBFWFBFQ1RfRVEoIi0zIiwgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKC0z
MDAwKSk7CiB9CiAKKy8vIFRlc3RzIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKCku
ICBUaGUgY29ycmVjdG5lc3Mgb2YgY29udmVyc2lvbgorLy8gZm9yIHBhcnRpY3VsYXIgZGF0ZXMg
YmVsb3cgd2FzIHZlcmlmaWVkIGluIFB5dGhvbiB1c2luZworLy8gZGF0ZXRpbWUuZGF0ZXRpbWUu
ZnJvbXV0Y3RpbWVzdGFtcCg8dGltZXRhbXA+LzEwMDApLgorCisvLyBGb3JtYXRFcG9jaFRpbWVJ
bk1pbGxpc0FzSXNvODYwMSBkZXBlbmRzIG9uIHRoZSBjdXJyZW50IHRpbWV6b25lLCBzbyB3ZQor
Ly8gaGF2ZSB0byBzZXQgdXAgYSBwYXJ0aWN1bGFyIHRpbWV6b25lIHRvIG9idGFpbiBwcmVkaWN0
YWJsZSByZXN1bHRzLgorY2xhc3MgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0
IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgLy8gT24gQ3lnd2luLCBHQ0MgZG9lc24ndCBh
bGxvdyB1bnF1YWxpZmllZCBpbnRlZ2VyIGxpdGVyYWxzIHRvIGV4Y2VlZAorICAvLyAzMiBiaXRz
LCBldmVuIHdoZW4gNjQtYml0IGludGVnZXIgdHlwZXMgYXJlIGF2YWlsYWJsZS4gIFdlIGhhdmUg
dG8KKyAgLy8gZm9yY2UgdGhlIGNvbnN0YW50cyB0byBoYXZlIGEgNjQtYml0IHR5cGUgaGVyZS4K
KyAgc3RhdGljIGNvbnN0IFRpbWVJbk1pbGxpcyBrTWlsbGlzUGVyU2VjID0gMTAwMDsKKworIHBy
aXZhdGU6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBzYXZlZF90el8gPSBOVUxMOwor
CisgICAgR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRFRF9QVVNIXygvKiBnZXRlbnYsIHN0cmR1
cDogZGVwcmVjYXRlZCAqLykKKyAgICBpZiAoZ2V0ZW52KCJUWiIpKQorICAgICAgc2F2ZWRfdHpf
ID0gc3RyZHVwKGdldGVudigiVFoiKSk7CisgICAgR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRF
RF9QT1BfKCkKKworICAgIC8vIFNldCB1cCB0aGUgdGltZSB6b25lIGZvciBGb3JtYXRFcG9jaFRp
bWVJbk1pbGxpc0FzSXNvODYwMSB0byB1c2UuICBXZQorICAgIC8vIGNhbm5vdCB1c2UgdGhlIGxv
Y2FsIHRpbWUgem9uZSBiZWNhdXNlIHRoZSBmdW5jdGlvbidzIG91dHB1dCBkZXBlbmRzCisgICAg
Ly8gb24gdGhlIHRpbWUgem9uZS4KKyAgICBTZXRUaW1lWm9uZSgiVVRDKzAwIik7CisgIH0KKwor
ICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgU2V0VGltZVpvbmUoc2F2ZWRfdHpfKTsK
KyAgICBmcmVlKGNvbnN0X2Nhc3Q8Y2hhcio+KHNhdmVkX3R6XykpOworICAgIHNhdmVkX3R6XyA9
IE5VTEw7CisgIH0KKworICBzdGF0aWMgdm9pZCBTZXRUaW1lWm9uZShjb25zdCBjaGFyKiB0aW1l
X3pvbmUpIHsKKyAgICAvLyB0enNldCgpIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiB0aGUgVFogdmFy
aWFibGUgYmVpbmcgcHJlc2VudCBhbmQgZW1wdHkKKyAgICAvLyBhbmQgbm90IGJlaW5nIHByZXNl
bnQsIHNvIHdlIGhhdmUgdG8gY29uc2lkZXIgdGhlIGNhc2Ugb2YgdGltZV96b25lCisgICAgLy8g
YmVpbmcgTlVMTC4KKyNpZiBfTVNDX1ZFUiB8fCBHVEVTVF9PU19XSU5ET1dTX01JTkdXCisgICAg
Ly8gLi4uVW5sZXNzIGl0J3MgTVNWQywgd2hvc2Ugc3RhbmRhcmQgbGlicmFyeSdzIF9wdXRlbnYg
ZG9lc24ndAorICAgIC8vIGRpc3Rpbmd1aXNoIGJldHdlZW4gYW4gZW1wdHkgYW5kIGEgbWlzc2lu
ZyB2YXJpYWJsZS4KKyAgICBjb25zdCBzdGQ6OnN0cmluZyBlbnZfdmFyID0KKyAgICAgICAgc3Rk
OjpzdHJpbmcoIlRaPSIpICsgKHRpbWVfem9uZSA/IHRpbWVfem9uZSA6ICIiKTsKKyAgICBfcHV0
ZW52KGVudl92YXIuY19zdHIoKSk7CisgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVT
SF8oNDk5NiAvKiBkZXByZWNhdGVkIGZ1bmN0aW9uICovKQorICAgIHR6c2V0KCk7CisgICAgR1RF
U1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCisjZWxzZQorICAgIGlmICh0aW1lX3pvbmUp
IHsKKyAgICAgIHNldGVudigoIlRaIiksIHRpbWVfem9uZSwgMSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIHVuc2V0ZW52KCJUWiIpOworICAgIH0KKyAgICB0enNldCgpOworI2VuZGlmCisgIH0KKwor
ICBjb25zdCBjaGFyKiBzYXZlZF90el87Cit9OworCitjb25zdCBUaW1lSW5NaWxsaXMgRm9ybWF0
RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0OjprTWlsbGlzUGVyU2VjOworCitURVNUX0Yo
Rm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBQcmludHNUd29EaWdpdFNlZ21l
bnRzKSB7CisgIEVYUEVDVF9FUSgiMjAxMS0xMC0zMVQxODo1Mjo0MiIsCisgICAgICAgICAgICBG
b3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSgxMzIwMDg3MTYyICoga01pbGxpc1BlclNl
YykpOworfQorCitURVNUX0YoRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBN
aWxsaXNlY29uZHNEb05vdEFmZmVjdFJlc3VsdCkgeworICBFWFBFQ1RfRVEoCisgICAgICAiMjAx
MS0xMC0zMVQxODo1Mjo0MiIsCisgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYw
MSgxMzIwMDg3MTYyICoga01pbGxpc1BlclNlYyArIDIzNCkpOworfQorCitURVNUX0YoRm9ybWF0
RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBQcmludHNMZWFkaW5nWmVyb2VzKSB7Cisg
IEVYUEVDVF9FUSgiMjAxMS0wOS0wM1QwNTowNzowMiIsCisgICAgICAgICAgICBGb3JtYXRFcG9j
aFRpbWVJbk1pbGxpc0FzSXNvODYwMSgxMzE1MDI2NDIyICoga01pbGxpc1BlclNlYykpOworfQor
CitURVNUX0YoRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBQcmludHMyNEhv
dXJUaW1lKSB7CisgIEVYUEVDVF9FUSgiMjAxMS0wOS0yOFQxNzowODoyMiIsCisgICAgICAgICAg
ICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSgxMzE3MjI5NzAyICoga01pbGxpc1Bl
clNlYykpOworfQorCitURVNUX0YoRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0
LCBQcmludHNFcG9jaFN0YXJ0KSB7CisgIEVYUEVDVF9FUSgiMTk3MC0wMS0wMVQwMDowMDowMCIs
IEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKDApKTsKK30KKwogI2lmIEdURVNUX0NB
Tl9DT01QQVJFX05VTEwKIAotI2lmZGVmIF9fQk9STEFORENfXworIyBpZmRlZiBfX0JPUkxBTkRD
X18KIC8vIFNpbGVuY2VzIHdhcm5pbmdzOiAiQ29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlIiwgIlVu
cmVhY2hhYmxlIGNvZGUiCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gKLSNlbmRp
ZgorIyAgcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gKKyMgZW5kaWYKIAogLy8gVGVz
dHMgdGhhdCBHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHgpIGlzIHRydWUgd2hlbiB4IGlzIGEgbnVs
bAogLy8gcG9pbnRlciBsaXRlcmFsLgpAQCAtMzAzLDE0ICs1MjcsNiBAQCBURVNUKE51bGxMaXRl
cmFsVGVzdCwgSXNUcnVlRm9yTnVsbExpdGVyYWxzKSB7CiAgIEVYUEVDVF9UUlVFKEdURVNUX0lT
X05VTExfTElURVJBTF8oMCkpOwogICBFWFBFQ1RfVFJVRShHVEVTVF9JU19OVUxMX0xJVEVSQUxf
KDBVKSk7CiAgIEVYUEVDVF9UUlVFKEdURVNUX0lTX05VTExfTElURVJBTF8oMEwpKTsKLSAgRVhQ
RUNUX1RSVUUoR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyhmYWxzZSkpOwotI2lmbmRlZiBfX0JPUkxB
TkRDX18KLSAgLy8gU29tZSBjb21waWxlcnMgbWF5IGZhaWwgdG8gZGV0ZWN0IHNvbWUgbnVsbCBw
b2ludGVyIGxpdGVyYWxzOwotICAvLyBhcyBsb25nIGFzIHVzZXJzIG9mIHRoZSBmcmFtZXdvcmsg
ZG9uJ3QgdXNlIHN1Y2ggbGl0ZXJhbHMsIHRoaXMKLSAgLy8gaXMgaGFybWxlc3MuCi0gIEVYUEVD
VF9UUlVFKEdURVNUX0lTX05VTExfTElURVJBTF8oMSAtIDEpKTsKLSAgRVhQRUNUX1RSVUUoR1RF
U1RfSVNfTlVMTF9MSVRFUkFMXyh0cnVlICYmIGZhbHNlKSk7Ci0jZW5kaWYKIH0KIAogLy8gVGVz
dHMgdGhhdCBHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHgpIGlzIGZhbHNlIHdoZW4geCBpcyBub3Qg
YSBudWxsCkBAIC0zMjIsMTAgKzUzOCwxMCBAQCBURVNUKE51bGxMaXRlcmFsVGVzdCwgSXNGYWxz
ZUZvck5vbk51bGxMaXRlcmFscykgewogICBFWFBFQ1RfRkFMU0UoR1RFU1RfSVNfTlVMTF9MSVRF
UkFMXyhzdGF0aWNfY2FzdDx2b2lkKj4oTlVMTCkpKTsKIH0KIAotI2lmZGVmIF9fQk9STEFORENf
XworIyBpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZp
b3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXBwcmVzc2VkIHRoZW0uCi0jcHJhZ21hIG9wdGlv
biBwb3AKLSNlbmRpZgorIyAgcHJhZ21hIG9wdGlvbiBwb3AKKyMgZW5kaWYKIAogI2VuZGlmICAv
LyBHVEVTVF9DQU5fQ09NUEFSRV9OVUxMCiAvLwpAQCAtMzMzLDM5ICs1NDksNDEgQEAgVEVTVChO
dWxsTGl0ZXJhbFRlc3QsIElzRmFsc2VGb3JOb25OdWxsTGl0ZXJhbHMpIHsKIAogLy8gVGVzdHMg
dGhhdCB0aGUgTlVMIGNoYXJhY3RlciBMJ1wwJyBpcyBlbmNvZGVkIGNvcnJlY3RseS4KIFRFU1Qo
Q29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2RlTnVsKSB7Ci0gIGNoYXIgYnVmZmVyWzMyXTsK
LSAgRVhQRUNUX1NUUkVRKCIiLCBDb2RlUG9pbnRUb1V0ZjgoTCdcMCcsIGJ1ZmZlcikpOworICBF
WFBFQ1RfRVEoIiIsIENvZGVQb2ludFRvVXRmOChMJ1wwJykpOwogfQogCiAvLyBUZXN0cyB0aGF0
IEFTQ0lJIGNoYXJhY3RlcnMgYXJlIGVuY29kZWQgY29ycmVjdGx5LgogVEVTVChDb2RlUG9pbnRU
b1V0ZjhUZXN0LCBDYW5FbmNvZGVBc2NpaSkgewotICBjaGFyIGJ1ZmZlclszMl07Ci0gIEVYUEVD
VF9TVFJFUSgiYSIsIENvZGVQb2ludFRvVXRmOChMJ2EnLCBidWZmZXIpKTsKLSAgRVhQRUNUX1NU
UkVRKCJaIiwgQ29kZVBvaW50VG9VdGY4KEwnWicsIGJ1ZmZlcikpOwotICBFWFBFQ1RfU1RSRVEo
IiYiLCBDb2RlUG9pbnRUb1V0ZjgoTCcmJywgYnVmZmVyKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHg3
RiIsIENvZGVQb2ludFRvVXRmOChMJ1x4N0YnLCBidWZmZXIpKTsKKyAgRVhQRUNUX0VRKCJhIiwg
Q29kZVBvaW50VG9VdGY4KEwnYScpKTsKKyAgRVhQRUNUX0VRKCJaIiwgQ29kZVBvaW50VG9VdGY4
KEwnWicpKTsKKyAgRVhQRUNUX0VRKCImIiwgQ29kZVBvaW50VG9VdGY4KEwnJicpKTsKKyAgRVhQ
RUNUX0VRKCJceDdGIiwgQ29kZVBvaW50VG9VdGY4KEwnXHg3RicpKTsKIH0KIAogLy8gVGVzdHMg
dGhhdCBVbmljb2RlIGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSA4IHRvIDExIGJpdHMgYXJlIGVuY29k
ZWQKIC8vIGFzIDExMHh4eHh4IDEweHh4eHh4LgogVEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBD
YW5FbmNvZGU4VG8xMUJpdHMpIHsKLSAgY2hhciBidWZmZXJbMzJdOwogICAvLyAwMDAgMTEwMSAw
MDExID0+IDExMC0wMDAxMSAxMC0wMTAwMTEKLSAgRVhQRUNUX1NUUkVRKCJceEMzXHg5MyIsIENv
ZGVQb2ludFRvVXRmOChMJ1x4RDMnLCBidWZmZXIpKTsKKyAgRVhQRUNUX0VRKCJceEMzXHg5MyIs
IENvZGVQb2ludFRvVXRmOChMJ1x4RDMnKSk7CiAKICAgLy8gMTAxIDAxMTEgMDExMCA9PiAxMTAt
MTAxMDEgMTAtMTEwMTEwCi0gIEVYUEVDVF9TVFJFUSgiXHhENVx4QjYiLCBDb2RlUG9pbnRUb1V0
ZjgoTCdceDU3NicsIGJ1ZmZlcikpOworICAvLyBTb21lIGNvbXBpbGVycyAoZS5nLiwgR0NDIG9u
IE1pbkdXKSBjYW5ub3QgaGFuZGxlIG5vbi1BU0NJSSBjb2RlcG9pbnRzCisgIC8vIGluIHdpZGUg
c3RyaW5ncyBhbmQgd2lkZSBjaGFycy4gSW4gb3JkZXIgdG8gYWNjb21tb2RhdGUgdGhlbSwgd2Ug
aGF2ZSB0bworICAvLyBpbnRyb2R1Y2Ugc3VjaCBjaGFyYWN0ZXIgY29uc3RhbnRzIGFzIGludGVn
ZXJzLgorICBFWFBFQ1RfRVEoIlx4RDVceEI2IiwKKyAgICAgICAgICAgIENvZGVQb2ludFRvVXRm
OChzdGF0aWNfY2FzdDx3Y2hhcl90PigweDU3NikpKTsKIH0KIAogLy8gVGVzdHMgdGhhdCBVbmlj
b2RlIGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSAxMiB0byAxNiBiaXRzIGFyZSBlbmNvZGVkCiAvLyBh
cyAxMTEweHh4eCAxMHh4eHh4eCAxMHh4eHh4eC4KIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwg
Q2FuRW5jb2RlMTJUbzE2Qml0cykgewotICBjaGFyIGJ1ZmZlclszMl07CiAgIC8vIDAwMDAgMTAw
MCAxMTAxIDAwMTEgPT4gMTExMC0wMDAwIDEwLTEwMDAxMSAxMC0wMTAwMTEKLSAgRVhQRUNUX1NU
UkVRKCJceEUwXHhBM1x4OTMiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDhEMycsIGJ1ZmZlcikpOwor
ICBFWFBFQ1RfRVEoIlx4RTBceEEzXHg5MyIsCisgICAgICAgICAgICBDb2RlUG9pbnRUb1V0Zjgo
c3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHg4RDMpKSk7CiAKICAgLy8gMTEwMCAwMTExIDAxMDAgMTEw
MSA9PiAxMTEwLTExMDAgMTAtMDExMTAxIDEwLTAwMTEwMQotICBFWFBFQ1RfU1RSRVEoIlx4RUNc
eDlEXHg4RCIsIENvZGVQb2ludFRvVXRmOChMJ1x4Qzc0RCcsIGJ1ZmZlcikpOworICBFWFBFQ1Rf
RVEoIlx4RUNceDlEXHg4RCIsCisgICAgICAgICAgICBDb2RlUG9pbnRUb1V0Zjgoc3RhdGljX2Nh
c3Q8d2NoYXJfdD4oMHhDNzREKSkpOwogfQogCiAjaWYgIUdURVNUX1dJREVfU1RSSU5HX1VTRVNf
VVRGMTZfCkBAIC0zNzYsMjIgKzU5NCwxOSBAQCBURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENh
bkVuY29kZTEyVG8xNkJpdHMpIHsKIC8vIFRlc3RzIHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0
aGF0IGhhdmUgMTcgdG8gMjEgYml0cyBhcmUgZW5jb2RlZAogLy8gYXMgMTExMTB4eHggMTB4eHh4
eHggMTB4eHh4eHggMTB4eHh4eHguCiBURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29k
ZTE3VG8yMUJpdHMpIHsKLSAgY2hhciBidWZmZXJbMzJdOwogICAvLyAwIDAwMDEgMDAwMCAxMDAw
IDExMDEgMDAxMSA9PiAxMTExMC0wMDAgMTAtMDEwMDAwIDEwLTEwMDAxMSAxMC0wMTAwMTEKLSAg
RVhQRUNUX1NUUkVRKCJceEYwXHg5MFx4QTNceDkzIiwgQ29kZVBvaW50VG9VdGY4KEwnXHgxMDhE
MycsIGJ1ZmZlcikpOworICBFWFBFQ1RfRVEoIlx4RjBceDkwXHhBM1x4OTMiLCBDb2RlUG9pbnRU
b1V0ZjgoTCdceDEwOEQzJykpOwogCiAgIC8vIDAgMDAwMSAwMDAwIDAxMDAgMDAwMCAwMDAwID0+
IDExMTEwLTAwMCAxMC0wMTAwMDAgMTAtMDEwMDAwIDEwLTAwMDAwMAotICBFWFBFQ1RfU1RSRVEo
Ilx4RjBceDkwXHg5MFx4ODAiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDEwNDAwJywgYnVmZmVyKSk7
CisgIEVYUEVDVF9FUSgiXHhGMFx4OTBceDkwXHg4MCIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA0
MDAnKSk7CiAKICAgLy8gMSAwMDAwIDEwMDAgMDExMCAwMDExIDAxMDAgPT4gMTExMTAtMTAwIDEw
LTAwMTAwMCAxMC0wMTEwMDAgMTAtMTEwMTAwCi0gIEVYUEVDVF9TVFJFUSgiXHhGNFx4ODhceDk4
XHhCNCIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA4NjM0JywgYnVmZmVyKSk7CisgIEVYUEVDVF9F
USgiXHhGNFx4ODhceDk4XHhCNCIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA4NjM0JykpOwogfQog
CiAvLyBUZXN0cyB0aGF0IGVuY29kaW5nIGFuIGludmFsaWQgY29kZS1wb2ludCBnZW5lcmF0ZXMg
dGhlIGV4cGVjdGVkIHJlc3VsdC4KIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2Rl
SW52YWxpZENvZGVQb2ludCkgewotICBjaGFyIGJ1ZmZlclszMl07Ci0gIEVYUEVDVF9TVFJFUSgi
KEludmFsaWQgVW5pY29kZSAweDEyMzRBQkNEKSIsCi0gICAgICAgICAgICAgICBDb2RlUG9pbnRU
b1V0ZjgoTCdceDEyMzRBQkNEJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiKEludmFsaWQgVW5p
Y29kZSAweDEyMzRBQkNEKSIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTIzNEFCQ0QnKSk7CiB9CiAK
ICNlbmRpZiAgLy8gIUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCkBAIC00MjAsMjAgKzYz
NSwyMyBAQCBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGU4VG8xMUJpdHMpIHsK
ICAgRVhQRUNUX1NUUkVRKCJceEMzXHg5MyIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEQzIiwgLTEp
LmNfc3RyKCkpOwogCiAgIC8vIDEwMSAwMTExIDAxMTAgPT4gMTEwLTEwMTAxIDEwLTExMDExMAot
ICBFWFBFQ1RfU1RSRVEoIlx4RDVceEI2IiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4NTc2IiwgMSku
Y19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHhENVx4QjYiLCBXaWRlU3RyaW5nVG9VdGY4KEwi
XHg1NzYiLCAtMSkuY19zdHIoKSk7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0geyAweDU3NiwgJ1ww
JyB9OworICBFWFBFQ1RfU1RSRVEoIlx4RDVceEI2IiwgV2lkZVN0cmluZ1RvVXRmOChzLCAxKS5j
X3N0cigpKTsKKyAgRVhQRUNUX1NUUkVRKCJceEQ1XHhCNiIsIFdpZGVTdHJpbmdUb1V0Zjgocywg
LTEpLmNfc3RyKCkpOwogfQogCiAvLyBUZXN0cyB0aGF0IFVuaWNvZGUgY29kZS1wb2ludHMgdGhh
dCBoYXZlIDEyIHRvIDE2IGJpdHMgYXJlIGVuY29kZWQKIC8vIGFzIDExMTB4eHh4IDEweHh4eHh4
IDEweHh4eHh4LgogVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgQ2FuRW5jb2RlMTJUbzE2Qml0
cykgewogICAvLyAwMDAwIDEwMDAgMTEwMSAwMDExID0+IDExMTAtMDAwMCAxMC0xMDAwMTEgMTAt
MDEwMDExCi0gIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lkZVN0cmluZ1RvVXRmOChM
Ilx4OEQzIiwgMSkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lk
ZVN0cmluZ1RvVXRmOChMIlx4OEQzIiwgLTEpLmNfc3RyKCkpOworICBjb25zdCB3Y2hhcl90IHMx
W10gPSB7IDB4OEQzLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lk
ZVN0cmluZ1RvVXRmOChzMSwgMSkuY19zdHIoKSk7CisgIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNc
eDkzIiwgV2lkZVN0cmluZ1RvVXRmOChzMSwgLTEpLmNfc3RyKCkpOwogCiAgIC8vIDExMDAgMDEx
MSAwMTAwIDExMDEgPT4gMTExMC0xMTAwIDEwLTAxMTEwMSAxMC0wMDExMDEKLSAgRVhQRUNUX1NU
UkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhDNzREIiwgMSkuY19zdHIo
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHhFQ1x4OURceDhEIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4
Qzc0RCIsIC0xKS5jX3N0cigpKTsKKyAgY29uc3Qgd2NoYXJfdCBzMltdID0geyAweEM3NEQsICdc
MCcgfTsKKyAgRVhQRUNUX1NUUkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5nVG9VdGY4KHMy
LCAxKS5jX3N0cigpKTsKKyAgRVhQRUNUX1NUUkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5n
VG9VdGY4KHMyLCAtMSkuY19zdHIoKSk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgdGhlIGNvbnZlcnNp
b24gc3RvcHMgd2hlbiB0aGUgZnVuY3Rpb24gZW5jb3VudGVycyBcMCBjaGFyYWN0ZXIuCkBAIC00
NDcsNyArNjY1LDYgQEAgVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgU3RvcHNXaGVuTGVuZ3Ro
TGltaXRSZWFjaGVkKSB7CiAgIEVYUEVDVF9TVFJFUSgiQUJDIiwgV2lkZVN0cmluZ1RvVXRmOChM
IkFCQ0RFRiIsIDMpLmNfc3RyKCkpOwogfQogCi0KICNpZiAhR1RFU1RfV0lERV9TVFJJTkdfVVNF
U19VVEYxNl8KIC8vIFRlc3RzIHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0aGF0IGhhdmUgMTcg
dG8gMjEgYml0cyBhcmUgZW5jb2RlZAogLy8gYXMgMTExMTB4eHggMTB4eHh4eHggMTB4eHh4eHgg
MTB4eHh4eHguIFRoaXMgY29kZSBtYXkgbm90IGNvbXBpbGUKQEAgLTQ3MSwyNSArNjg4LDI5IEBA
IFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENhbkVuY29kZUludmFsaWRDb2RlUG9pbnQpIHsK
IC8vIFRlc3RzIHRoYXQgc3Vycm9nYXRlIHBhaXJzIGFyZSBlbmNvZGVkIGNvcnJlY3RseSBvbiB0
aGUgc3lzdGVtcyB1c2luZwogLy8gVVRGLTE2IGVuY29kaW5nIGluIHRoZSB3aWRlIHN0cmluZ3Mu
CiBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGVWYWxpZFV0ZjE2U1Vycm9nYXRl
UGFpcnMpIHsKLSAgRVhQRUNUX1NUUkVRKCJceEYwXHg5MFx4OTBceDgwIiwKLSAgICAgICAgICAg
ICAgIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEQ4MDFceERDMDAiLCAtMSkuY19zdHIoKSk7CisgIGNv
bnN0IHdjaGFyX3Qgc1tdID0geyAweEQ4MDEsIDB4REMwMCwgJ1wwJyB9OworICBFWFBFQ1RfU1RS
RVEoIlx4RjBceDkwXHg5MFx4ODAiLCBXaWRlU3RyaW5nVG9VdGY4KHMsIC0xKS5jX3N0cigpKTsK
IH0KIAogLy8gVGVzdHMgdGhhdCBlbmNvZGluZyBhbiBpbnZhbGlkIFVURi0xNiBzdXJyb2dhdGUg
cGFpcgogLy8gZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCByZXN1bHQuCiBURVNUKFdpZGVTdHJpbmdU
b1V0ZjhUZXN0LCBDYW5FbmNvZGVJbnZhbGlkVXRmMTZTdXJyb2dhdGVQYWlyKSB7CiAgIC8vIExl
YWRpbmcgc3Vycm9nYXRlIGlzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZy4KLSAgRVhQRUNUX1NU
UkVRKCJceEVEXHhBMFx4ODAiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhEODAwIiwgLTEpLmNfc3Ry
KCkpOworICBjb25zdCB3Y2hhcl90IHMxW10gPSB7IDB4RDgwMCwgJ1wwJyB9OworICBFWFBFQ1Rf
U1RSRVEoIlx4RURceEEwXHg4MCIsIFdpZGVTdHJpbmdUb1V0ZjgoczEsIC0xKS5jX3N0cigpKTsK
ICAgLy8gTGVhZGluZyBzdXJyb2dhdGUgaXMgbm90IGZvbGxvd2VkIGJ5IHRoZSB0cmFpbGluZyBz
dXJyb2dhdGUuCi0gIEVYUEVDVF9TVFJFUSgiXHhFRFx4QTBceDgwJCIsIFdpZGVTdHJpbmdUb1V0
ZjgoTCJceEQ4MDAkIiwgLTEpLmNfc3RyKCkpOworICBjb25zdCB3Y2hhcl90IHMyW10gPSB7IDB4
RDgwMCwgJ00nLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhFRFx4QTBceDgwTSIsIFdpZGVT
dHJpbmdUb1V0ZjgoczIsIC0xKS5jX3N0cigpKTsKICAgLy8gVHJhaWxpbmcgc3Vycm9nYXRlIGFw
cGVhcmFzIHdpdGhvdXQgYSBsZWFkaW5nIHN1cnJvZ2F0ZS4KLSAgRVhQRUNUX1NUUkVRKCJceEVE
XHhCMFx4ODBQUVIiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhEQzAwUFFSIiwgLTEpLmNfc3RyKCkp
OworICBjb25zdCB3Y2hhcl90IHMzW10gPSB7IDB4REMwMCwgJ1AnLCAnUScsICdSJywgJ1wwJyB9
OworICBFWFBFQ1RfU1RSRVEoIlx4RURceEIwXHg4MFBRUiIsIFdpZGVTdHJpbmdUb1V0ZjgoczMs
IC0xKS5jX3N0cigpKTsKIH0KICNlbmRpZiAgLy8gIUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRG
MTZfCiAKIC8vIFRlc3RzIHRoYXQgY29kZXBvaW50IGNvbmNhdGVuYXRpb24gd29ya3MgY29ycmVj
dGx5LgogI2lmICFHVEVTVF9XSURFX1NUUklOR19VU0VTX1VURjE2XwogVEVTVChXaWRlU3RyaW5n
VG9VdGY4VGVzdCwgQ29uY2F0ZW5hdGVzQ29kZXBvaW50c0NvcnJlY3RseSkgeworICBjb25zdCB3
Y2hhcl90IHNbXSA9IHsgMHgxMDg2MzQsIDB4Qzc0RCwgJ1xuJywgMHg1NzYsIDB4OEQzLCAweDEw
ODYzNCwgJ1wwJ307CiAgIEVYUEVDVF9TVFJFUSgKICAgICAgICJceEY0XHg4OFx4OThceEI0Igog
ICAgICAgICAgICJceEVDXHg5RFx4OEQiCkBAIC00OTcsMTMgKzcxOCwxNCBAQCBURVNUKFdpZGVT
dHJpbmdUb1V0ZjhUZXN0LCBDb25jYXRlbmF0ZXNDb2RlcG9pbnRzQ29ycmVjdGx5KSB7CiAgICAg
ICAgICAgIlx4RDVceEI2IgogICAgICAgICAgICJceEUwXHhBM1x4OTMiCiAgICAgICAgICAgIlx4
RjRceDg4XHg5OFx4QjQiLAotICAgICAgV2lkZVN0cmluZ1RvVXRmOChMIlx4MTA4NjM0XHhDNzRE
XG5ceDU3Nlx4OEQzXHgxMDg2MzQiLCAtMSkuY19zdHIoKSk7CisgICAgICBXaWRlU3RyaW5nVG9V
dGY4KHMsIC0xKS5jX3N0cigpKTsKIH0KICNlbHNlCiBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0
LCBDb25jYXRlbmF0ZXNDb2RlcG9pbnRzQ29ycmVjdGx5KSB7CisgIGNvbnN0IHdjaGFyX3Qgc1td
ID0geyAweEM3NEQsICdcbicsIDB4NTc2LCAweDhEMywgJ1wwJ307CiAgIEVYUEVDVF9TVFJFUSgK
ICAgICAgICJceEVDXHg5RFx4OEQiICJcbiIgIlx4RDVceEI2IiAiXHhFMFx4QTNceDkzIiwKLSAg
ICAgIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEM3NERcblx4NTc2XHg4RDMiLCAtMSkuY19zdHIoKSk7
CisgICAgICBXaWRlU3RyaW5nVG9VdGY4KHMsIC0xKS5jX3N0cigpKTsKIH0KICNlbmRpZiAgLy8g
IUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCiAKQEAgLTc5NywyNjkgKzEwMTksMTYgQEAg
VEVTVChBc3NlcnRIZWxwZXJUZXN0LCBBc3NlcnRIZWxwZXJJc1NtYWxsKSB7CiAgIEVYUEVDVF9M
RShzaXplb2YodGVzdGluZzo6aW50ZXJuYWw6OkFzc2VydEhlbHBlciksIHNpemVvZih2b2lkKikp
OwogfQogCi0vLyBUZXN0cyB0aGUgU3RyaW5nIGNsYXNzLgotCi0vLyBUZXN0cyBTdHJpbmcncyBj
b25zdHJ1Y3RvcnMuCi1URVNUKFN0cmluZ1Rlc3QsIENvbnN0cnVjdG9ycykgewotICAvLyBEZWZh
dWx0IGN0b3IuCi0gIFN0cmluZyBzMTsKLSAgLy8gV2UgYXJlbid0IHVzaW5nIEVYUEVDVF9FUShO
VUxMLCBzMS5jX3N0cigpKSBiZWNhdXNlIGNvbXBhcmluZwotICAvLyBwb2ludGVycyB3aXRoIE5V
TEwgaXNuJ3Qgc3VwcG9ydGVkIG9uIGFsbCBwbGF0Zm9ybXMuCi0gIEVYUEVDVF9FUSgwVSwgczEu
bGVuZ3RoKCkpOwotICBFWFBFQ1RfVFJVRShOVUxMID09IHMxLmNfc3RyKCkpOwotCi0gIC8vIElt
cGxpY2l0bHkgY29uc3RydWN0cyBmcm9tIGEgQy1zdHJpbmcuCi0gIFN0cmluZyBzMiA9ICJIaSI7
Ci0gIEVYUEVDVF9FUSgyVSwgczIubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoIkhpIiwgczIu
Y19zdHIoKSk7Ci0KLSAgLy8gQ29uc3RydWN0cyBmcm9tIGEgQy1zdHJpbmcgYW5kIGEgbGVuZ3Ro
LgotICBTdHJpbmcgczMoImhlbGxvIiwgMyk7Ci0gIEVYUEVDVF9FUSgzVSwgczMubGVuZ3RoKCkp
OwotICBFWFBFQ1RfU1RSRVEoImhlbCIsIHMzLmNfc3RyKCkpOwotCi0gIC8vIFRoZSBlbXB0eSBT
dHJpbmcgc2hvdWxkIGJlIGNyZWF0ZWQgd2hlbiBTdHJpbmcgaXMgY29uc3RydWN0ZWQgd2l0aAot
ICAvLyBhIE5VTEwgcG9pbnRlciBhbmQgbGVuZ3RoIDAuCi0gIEVYUEVDVF9FUSgwVSwgU3RyaW5n
KE5VTEwsIDApLmxlbmd0aCgpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZyhOVUxMLCAwKS5jX3N0
cigpID09IE5VTEwpOwotCi0gIC8vIENvbnN0cnVjdHMgYSBTdHJpbmcgdGhhdCBjb250YWlucyAn
XDAnLgotICBTdHJpbmcgczQoImFcMGJjZCIsIDQpOwotICBFWFBFQ1RfRVEoNFUsIHM0Lmxlbmd0
aCgpKTsKLSAgRVhQRUNUX0VRKCdhJywgczQuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgnXDAn
LCBzNC5jX3N0cigpWzFdKTsKLSAgRVhQRUNUX0VRKCdiJywgczQuY19zdHIoKVsyXSk7Ci0gIEVY
UEVDVF9FUSgnYycsIHM0LmNfc3RyKClbM10pOwotCi0gIC8vIENvcHkgY3RvciB3aGVyZSB0aGUg
c291cmNlIGlzIE5VTEwuCi0gIGNvbnN0IFN0cmluZyBudWxsX3N0cjsKLSAgU3RyaW5nIHM1ID0g
bnVsbF9zdHI7Ci0gIEVYUEVDVF9UUlVFKHM1LmNfc3RyKCkgPT0gTlVMTCk7Ci0KLSAgLy8gQ29w
eSBjdG9yIHdoZXJlIHRoZSBzb3VyY2UgaXNuJ3QgTlVMTC4KLSAgU3RyaW5nIHM2ID0gczM7Ci0g
IEVYUEVDVF9FUSgzVSwgczYubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoImhlbCIsIHM2LmNf
c3RyKCkpOwotCi0gIC8vIENvcHkgY3RvciB3aGVyZSB0aGUgc291cmNlIGNvbnRhaW5zICdcMCcu
Ci0gIFN0cmluZyBzNyA9IHM0OwotICBFWFBFQ1RfRVEoNFUsIHM3Lmxlbmd0aCgpKTsKLSAgRVhQ
RUNUX0VRKCdhJywgczcuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgnXDAnLCBzNy5jX3N0cigp
WzFdKTsKLSAgRVhQRUNUX0VRKCdiJywgczcuY19zdHIoKVsyXSk7Ci0gIEVYUEVDVF9FUSgnYycs
IHM3LmNfc3RyKClbM10pOwotfQotCi1URVNUKFN0cmluZ1Rlc3QsIENvbnZlcnRzRnJvbVN0ZFN0
cmluZykgewotICAvLyBBbiBlbXB0eSBzdGQ6OnN0cmluZy4KLSAgY29uc3Qgc3RkOjpzdHJpbmcg
c3JjMSgiIik7Ci0gIGNvbnN0IFN0cmluZyBkZXN0MSA9IHNyYzE7Ci0gIEVYUEVDVF9FUSgwVSwg
ZGVzdDEubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIGRlc3QxLmNfc3RyKCkpOwotCi0g
IC8vIEEgbm9ybWFsIHN0ZDo6c3RyaW5nLgotICBjb25zdCBzdGQ6OnN0cmluZyBzcmMyKCJIaSIp
OwotICBjb25zdCBTdHJpbmcgZGVzdDIgPSBzcmMyOwotICBFWFBFQ1RfRVEoMlUsIGRlc3QyLmxl
bmd0aCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJIaSIsIGRlc3QyLmNfc3RyKCkpOwotCi0gIC8vIEFu
IHN0ZDo6c3RyaW5nIHdpdGggYW4gZW1iZWRkZWQgTlVMIGNoYXJhY3Rlci4KLSAgY29uc3QgY2hh
ciBzcmMzW10gPSAiYVwwYiI7Ci0gIGNvbnN0IFN0cmluZyBkZXN0MyA9IHN0ZDo6c3RyaW5nKHNy
YzMsIHNpemVvZihzcmMzKSk7Ci0gIEVYUEVDVF9FUShzaXplb2Yoc3JjMyksIGRlc3QzLmxlbmd0
aCgpKTsKLSAgRVhQRUNUX0VRKCdhJywgZGVzdDMuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgn
XDAnLCBkZXN0My5jX3N0cigpWzFdKTsKLSAgRVhQRUNUX0VRKCdiJywgZGVzdDMuY19zdHIoKVsy
XSk7Ci19Ci0KLVRFU1QoU3RyaW5nVGVzdCwgQ29udmVydHNUb1N0ZFN0cmluZykgewotICAvLyBB
biBlbXB0eSBTdHJpbmcuCi0gIGNvbnN0IFN0cmluZyBzcmMxKCIiKTsKLSAgY29uc3Qgc3RkOjpz
dHJpbmcgZGVzdDEgPSBzcmMxOwotICBFWFBFQ1RfRVEoIiIsIGRlc3QxKTsKLQotICAvLyBBIG5v
cm1hbCBTdHJpbmcuCi0gIGNvbnN0IFN0cmluZyBzcmMyKCJIaSIpOwotICBjb25zdCBzdGQ6OnN0
cmluZyBkZXN0MiA9IHNyYzI7Ci0gIEVYUEVDVF9FUSgiSGkiLCBkZXN0Mik7Ci0KLSAgLy8gQSBT
dHJpbmcgY29udGFpbmluZyBhICdcMCcuCi0gIGNvbnN0IFN0cmluZyBzcmMzKCJ4XDB5IiwgMyk7
Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGRlc3QzID0gc3JjMzsKLSAgRVhQRUNUX0VRKHN0ZDo6c3Ry
aW5nKCJ4XDB5IiwgMyksIGRlc3QzKTsKLX0KLQotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5H
Ci0KLVRFU1QoU3RyaW5nVGVzdCwgQ29udmVydHNGcm9tR2xvYmFsU3RyaW5nKSB7Ci0gIC8vIEFu
IGVtcHR5IDo6c3RyaW5nLgotICBjb25zdCA6OnN0cmluZyBzcmMxKCIiKTsKLSAgY29uc3QgU3Ry
aW5nIGRlc3QxID0gc3JjMTsKLSAgRVhQRUNUX0VRKDBVLCBkZXN0MS5sZW5ndGgoKSk7Ci0gIEVY
UEVDVF9TVFJFUSgiIiwgZGVzdDEuY19zdHIoKSk7Ci0KLSAgLy8gQSBub3JtYWwgOjpzdHJpbmcu
Ci0gIGNvbnN0IDo6c3RyaW5nIHNyYzIoIkhpIik7Ci0gIGNvbnN0IFN0cmluZyBkZXN0MiA9IHNy
YzI7Ci0gIEVYUEVDVF9FUSgyVSwgZGVzdDIubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoIkhp
IiwgZGVzdDIuY19zdHIoKSk7Ci0KLSAgLy8gQW4gOjpzdHJpbmcgd2l0aCBhbiBlbWJlZGRlZCBO
VUwgY2hhcmFjdGVyLgotICBjb25zdCBjaGFyIHNyYzNbXSA9ICJ4XDB5IjsKLSAgY29uc3QgU3Ry
aW5nIGRlc3QzID0gOjpzdHJpbmcoc3JjMywgc2l6ZW9mKHNyYzMpKTsKLSAgRVhQRUNUX0VRKHNp
emVvZihzcmMzKSwgZGVzdDMubGVuZ3RoKCkpOwotICBFWFBFQ1RfRVEoJ3gnLCBkZXN0My5jX3N0
cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdcMCcsIGRlc3QzLmNfc3RyKClbMV0pOwotICBFWFBFQ1Rf
RVEoJ3knLCBkZXN0My5jX3N0cigpWzJdKTsKLX0KLQotVEVTVChTdHJpbmdUZXN0LCBDb252ZXJ0
c1RvR2xvYmFsU3RyaW5nKSB7Ci0gIC8vIEFuIGVtcHR5IFN0cmluZy4KLSAgY29uc3QgU3RyaW5n
IHNyYzEoIiIpOwotICBjb25zdCA6OnN0cmluZyBkZXN0MSA9IHNyYzE7Ci0gIEVYUEVDVF9FUSgi
IiwgZGVzdDEpOwotCi0gIC8vIEEgbm9ybWFsIFN0cmluZy4KLSAgY29uc3QgU3RyaW5nIHNyYzIo
IkhpIik7Ci0gIGNvbnN0IDo6c3RyaW5nIGRlc3QyID0gc3JjMjsKLSAgRVhQRUNUX0VRKCJIaSIs
IGRlc3QyKTsKLQotICBjb25zdCBTdHJpbmcgc3JjMygieFwweSIsIDMpOwotICBjb25zdCA6OnN0
cmluZyBkZXN0MyA9IHNyYzM7Ci0gIEVYUEVDVF9FUSg6OnN0cmluZygieFwweSIsIDMpLCBkZXN0
Myk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLQotLy8gVGVzdHMg
U3RyaW5nOjpTaG93Q1N0cmluZ1F1b3RlZCgpLgotVEVTVChTdHJpbmdUZXN0LCBTaG93Q1N0cmlu
Z1F1b3RlZCkgewotICBFWFBFQ1RfU1RSRVEoIihudWxsKSIsCi0gICAgICAgICAgICAgICBTdHJp
bmc6OlNob3dDU3RyaW5nUXVvdGVkKE5VTEwpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIlwi
XCIiLAotICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93Q1N0cmluZ1F1b3RlZCgiIikuY19zdHIo
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiXCJmb29cIiIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OlNo
b3dDU3RyaW5nUXVvdGVkKCJmb28iKS5jX3N0cigpKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpl
bXB0eSgpLgotVEVTVChTdHJpbmdUZXN0LCBFbXB0eSkgewotICBFWFBFQ1RfVFJVRShTdHJpbmco
IiIpLmVtcHR5KCkpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCkuZW1wdHkoKSk7Ci0gIEVYUEVD
VF9GQUxTRShTdHJpbmcoTlVMTCkuZW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShTdHJpbmcoImEi
KS5lbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiXDAiLCAxKS5lbXB0eSgpKTsKLX0K
LQotLy8gVGVzdHMgU3RyaW5nOjpDb21wYXJlKCkuCi1URVNUKFN0cmluZ1Rlc3QsIENvbXBhcmUp
IHsKLSAgLy8gTlVMTCB2cyBOVUxMLgotICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCkuQ29tcGFyZShT
dHJpbmcoKSkpOwotCi0gIC8vIE5VTEwgdnMgbm9uLU5VTEwuCi0gIEVYUEVDVF9FUSgtMSwgU3Ry
aW5nKCkuQ29tcGFyZShTdHJpbmcoIiIpKSk7Ci0KLSAgLy8gTm9uLU5VTEwgdnMgTlVMTC4KLSAg
RVhQRUNUX0VRKDEsIFN0cmluZygiIikuQ29tcGFyZShTdHJpbmcoKSkpOwotCi0gIC8vIFRoZSBm
b2xsb3dpbmcgY292ZXJzIG5vbi1OVUxMIHZzIG5vbi1OVUxMLgotCi0gIC8vICIiIHZzICIiLgot
ICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCIiKS5Db21wYXJlKFN0cmluZygiIikpKTsKLQotICAvLyAi
IiB2cyBub24tIiIuCi0gIEVYUEVDVF9FUSgtMSwgU3RyaW5nKCIiKS5Db21wYXJlKFN0cmluZygi
XDAiLCAxKSkpOwotICBFWFBFQ1RfRVEoLTEsIFN0cmluZygiIikuQ29tcGFyZSgiICIpKTsKLQot
ICAvLyBOb24tIiIgdnMgIiIuCi0gIEVYUEVDVF9FUSgxLCBTdHJpbmcoImEiKS5Db21wYXJlKFN0
cmluZygiIikpKTsKLQotICAvLyBUaGUgZm9sbG93aW5nIGNvdmVycyBub24tIiIgdnMgbm9uLSIi
LgotCi0gIC8vIFNhbWUgbGVuZ3RoIGFuZCBlcXVhbC4KLSAgRVhQRUNUX0VRKDAsIFN0cmluZygi
YSIpLkNvbXBhcmUoU3RyaW5nKCJhIikpKTsKLQotICAvLyBTYW1lIGxlbmd0aCBhbmQgZGlmZmVy
ZW50LgotICBFWFBFQ1RfRVEoLTEsIFN0cmluZygiYVwwYiIsIDMpLkNvbXBhcmUoU3RyaW5nKCJh
XDBjIiwgMykpKTsKLSAgRVhQRUNUX0VRKDEsIFN0cmluZygiYiIpLkNvbXBhcmUoU3RyaW5nKCJh
IikpKTsKLQotICAvLyBEaWZmZXJlbnQgbGVuZ3Rocy4KLSAgRVhQRUNUX0VRKC0xLCBTdHJpbmco
ImEiKS5Db21wYXJlKFN0cmluZygiYWIiKSkpOwotICBFWFBFQ1RfRVEoLTEsIFN0cmluZygiYSIp
LkNvbXBhcmUoU3RyaW5nKCJhXDAiLCAyKSkpOwotICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCJhYmMi
KS5Db21wYXJlKFN0cmluZygiYWFjZCIpKSk7Ci19Ci0KLS8vIFRlc3RzIFN0cmluZzo6b3BlcmF0
b3I9PSgpLgotVEVTVChTdHJpbmdUZXN0LCBFcXVhbHMpIHsKLSAgY29uc3QgU3RyaW5nIG51bGwo
TlVMTCk7Ci0gIEVYUEVDVF9UUlVFKG51bGwgPT0gTlVMTCk7ICAvLyBOT0xJTlQKLSAgRVhQRUNU
X0ZBTFNFKG51bGwgPT0gIiIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShudWxsID09ICJi
YXIiKTsgIC8vIE5PTElOVAotCi0gIGNvbnN0IFN0cmluZyBlbXB0eSgiIik7Ci0gIEVYUEVDVF9G
QUxTRShlbXB0eSA9PSBOVUxMKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShlbXB0eSA9PSAi
Iik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKGVtcHR5ID09ICJiYXIiKTsgIC8vIE5PTElO
VAotCi0gIGNvbnN0IFN0cmluZyBmb28oImZvbyIpOwotICBFWFBFQ1RfRkFMU0UoZm9vID09IE5V
TEwpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShmb28gPT0gIiIpOyAgLy8gTk9MSU5UCi0g
IEVYUEVDVF9GQUxTRShmb28gPT0gImJhciIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKGZv
byA9PSAiZm9vIik7ICAvLyBOT0xJTlQKLQotICBjb25zdCBTdHJpbmcgYmFyKCJ4XDB5IiwgMyk7
Ci0gIEVYUEVDVF9GQUxTRShiYXIgPT0gIngiKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpvcGVy
YXRvciE9KCkuCi1URVNUKFN0cmluZ1Rlc3QsIE5vdEVxdWFscykgewotICBjb25zdCBTdHJpbmcg
bnVsbChOVUxMKTsKLSAgRVhQRUNUX0ZBTFNFKG51bGwgIT0gTlVMTCk7ICAvLyBOT0xJTlQKLSAg
RVhQRUNUX1RSVUUobnVsbCAhPSAiIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUobnVsbCAh
PSAiYmFyIik7ICAvLyBOT0xJTlQKLQotICBjb25zdCBTdHJpbmcgZW1wdHkoIiIpOwotICBFWFBF
Q1RfVFJVRShlbXB0eSAhPSBOVUxMKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRkFMU0UoZW1wdHkg
IT0gIiIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKGVtcHR5ICE9ICJiYXIiKTsgIC8vIE5P
TElOVAotCi0gIGNvbnN0IFN0cmluZyBmb28oImZvbyIpOwotICBFWFBFQ1RfVFJVRShmb28gIT0g
TlVMTCk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUoZm9vICE9ICIiKTsgIC8vIE5PTElOVAot
ICBFWFBFQ1RfVFJVRShmb28gIT0gImJhciIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShm
b28gIT0gImZvbyIpOyAgLy8gTk9MSU5UCi0KLSAgY29uc3QgU3RyaW5nIGJhcigieFwweSIsIDMp
OwotICBFWFBFQ1RfVFJVRShiYXIgIT0gIngiKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpsZW5n
dGgoKS4KLVRFU1QoU3RyaW5nVGVzdCwgTGVuZ3RoKSB7Ci0gIEVYUEVDVF9FUSgwVSwgU3RyaW5n
KCkubGVuZ3RoKCkpOwotICBFWFBFQ1RfRVEoMFUsIFN0cmluZygiIikubGVuZ3RoKCkpOwotICBF
WFBFQ1RfRVEoMlUsIFN0cmluZygiYWIiKS5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgzVSwgU3Ry
aW5nKCJhXDBiIiwgMykubGVuZ3RoKCkpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6OkVuZHNXaXRo
KCkuCi1URVNUKFN0cmluZ1Rlc3QsIEVuZHNXaXRoKSB7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygi
Zm9vYmFyIikuRW5kc1dpdGgoImJhciIpKTsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCJmb29iYXIi
KS5FbmRzV2l0aCgiIikpOwotICBFWFBFQ1RfVFJVRShTdHJpbmcoIiIpLkVuZHNXaXRoKCIiKSk7
Ci0KLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiZm9vYmFyIikuRW5kc1dpdGgoImZvbyIpKTsKLSAg
RVhQRUNUX0ZBTFNFKFN0cmluZygiIikuRW5kc1dpdGgoImZvbyIpKTsKLX0KLQogLy8gVGVzdHMg
U3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgpLgogVEVTVChTdHJpbmdUZXN0LCBFbmRz
V2l0aENhc2VJbnNlbnNpdGl2ZSkgewotICBFWFBFQ1RfVFJVRShTdHJpbmcoImZvb2JhciIpLkVu
ZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCJCQVIiKSk7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiZm9v
YmFSIikuRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImJhciIpKTsKLSAgRVhQRUNUX1RSVUUoU3Ry
aW5nKCJmb29iYXIiKS5FbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiIikpOwotICBFWFBFQ1RfVFJV
RShTdHJpbmcoIiIpLkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCIiKSk7CisgIEVYUEVDVF9UUlVF
KFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImZvb2JhciIsICJCQVIiKSk7CisgIEVY
UEVDVF9UUlVFKFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImZvb2JhUiIsICJiYXIi
KSk7CisgIEVYUEVDVF9UUlVFKFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImZvb2Jh
ciIsICIiKSk7CisgIEVYUEVDVF9UUlVFKFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUo
IiIsICIiKSk7CiAKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiRm9vYmFyIikuRW5kc1dpdGhDYXNl
SW5zZW5zaXRpdmUoImZvbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiZm9vYmFyIikuRW5k
c1dpdGhDYXNlSW5zZW5zaXRpdmUoIkZvbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiIiku
RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImZvbyIpKTsKKyAgRVhQRUNUX0ZBTFNFKFN0cmluZzo6
RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoIkZvb2JhciIsICJmb28iKSk7CisgIEVYUEVDVF9GQUxT
RShTdHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCJmb29iYXIiLCAiRm9vIikpOworICBF
WFBFQ1RfRkFMU0UoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiIiwgImZvbyIpKTsK
IH0KIAogLy8gQysrQnVpbGRlcidzIHByZXByb2Nlc3NvciBpcyBidWdneTsgaXQgZmFpbHMgdG8g
ZXhwYW5kIG1hY3JvcyB0aGF0CkBAIC0xMDc5LDg3ICsxMDQ4LDYgQEAgVEVTVChTdHJpbmdUZXN0
LCBDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscykgewogICBFWFBFQ1RfVFJVRShTdHJp
bmc6OkNhc2VJbnNlbnNpdGl2ZVdpZGVDU3RyaW5nRXF1YWxzKEwiRk9PQkFSIiwgTCJmb29iYXIi
KSk7CiB9CiAKLS8vIFRlc3RzIHRoYXQgTlVMTCBjYW4gYmUgYXNzaWduZWQgdG8gYSBTdHJpbmcu
Ci1URVNUKFN0cmluZ1Rlc3QsIENhbkJlQXNzaWduZWROVUxMKSB7Ci0gIGNvbnN0IFN0cmluZyBz
cmMoTlVMTCk7Ci0gIFN0cmluZyBkZXN0OwotCi0gIGRlc3QgPSBzcmM7Ci0gIEVYUEVDVF9TVFJF
UShOVUxMLCBkZXN0LmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBlbXB0eSBzdHJp
bmcgIiIgY2FuIGJlIGFzc2lnbmVkIHRvIGEgU3RyaW5nLgotVEVTVChTdHJpbmdUZXN0LCBDYW5C
ZUFzc2lnbmVkRW1wdHkpIHsKLSAgY29uc3QgU3RyaW5nIHNyYygiIik7Ci0gIFN0cmluZyBkZXN0
OwotCi0gIGRlc3QgPSBzcmM7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgZGVzdC5jX3N0cigpKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBhIG5vbi1lbXB0eSBzdHJpbmcgY2FuIGJlIGFzc2lnbmVkIHRvIGEg
U3RyaW5nLgotVEVTVChTdHJpbmdUZXN0LCBDYW5CZUFzc2lnbmVkTm9uRW1wdHkpIHsKLSAgY29u
c3QgU3RyaW5nIHNyYygiaGVsbG8iKTsKLSAgU3RyaW5nIGRlc3Q7Ci0gIGRlc3QgPSBzcmM7Ci0g
IEVYUEVDVF9FUSg1VSwgZGVzdC5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiaGVsbG8iLCBk
ZXN0LmNfc3RyKCkpOwotCi0gIGNvbnN0IFN0cmluZyBzcmMyKCJ4XDB5IiwgMyk7Ci0gIFN0cmlu
ZyBkZXN0MjsKLSAgZGVzdDIgPSBzcmMyOwotICBFWFBFQ1RfRVEoM1UsIGRlc3QyLmxlbmd0aCgp
KTsKLSAgRVhQRUNUX0VRKCd4JywgZGVzdDIuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgnXDAn
LCBkZXN0Mi5jX3N0cigpWzFdKTsKLSAgRVhQRUNUX0VRKCd5JywgZGVzdDIuY19zdHIoKVsyXSk7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBTdHJpbmcgY2FuIGJlIGFzc2lnbmVkIHRvIGl0c2VsZi4K
LVRFU1QoU3RyaW5nVGVzdCwgQ2FuQmVBc3NpZ25lZFNlbGYpIHsKLSAgU3RyaW5nIGRlc3QoImhl
bGxvIik7Ci0KLSAgZGVzdCA9IGRlc3Q7Ci0gIEVYUEVDVF9TVFJFUSgiaGVsbG8iLCBkZXN0LmNf
c3RyKCkpOwotfQotCi0vLyBTdW4gU3R1ZGlvIDwgMTIgaW5jb3JyZWN0bHkgcmVqZWN0cyB0aGlz
IGNvZGUgZHVlIHRvIGFuIG92ZXJsb2FkaW5nCi0vLyBhbWJpZ3VpdHkuCi0jaWYgIShkZWZpbmVk
KF9fU1VOUFJPX0NDKSAmJiBfX1NVTlBST19DQyA8IDB4NTkwKQotLy8gVGVzdHMgc3RyZWFtaW5n
IGEgU3RyaW5nLgotVEVTVChTdHJpbmdUZXN0LCBTdHJlYW1zKSB7Ci0gIEVYUEVDVF9FUShTdHJl
YW1hYmxlVG9TdHJpbmcoU3RyaW5nKCkpLCAiKG51bGwpIik7Ci0gIEVYUEVDVF9FUShTdHJlYW1h
YmxlVG9TdHJpbmcoU3RyaW5nKCIiKSksICIiKTsKLSAgRVhQRUNUX0VRKFN0cmVhbWFibGVUb1N0
cmluZyhTdHJpbmcoImFcMGIiLCAzKSksICJhXFwwYiIpOwotfQotI2VuZGlmCi0KLS8vIFRlc3Rz
IHRoYXQgU3RyaW5nOjpGb3JtYXQoKSB3b3Jrcy4KLVRFU1QoU3RyaW5nVGVzdCwgRm9ybWF0V29y
a3MpIHsKLSAgLy8gTm9ybWFsIGNhc2U6IHRoZSBmb3JtYXQgc3BlYyBpcyB2YWxpZCwgdGhlIGFy
Z3VtZW50cyBtYXRjaCB0aGUKLSAgLy8gc3BlYywgYW5kIHRoZSByZXN1bHQgaXMgPCA0MDk1IGNo
YXJhY3RlcnMuCi0gIEVYUEVDVF9TVFJFUSgiSGVsbG8sIDQyIiwgU3RyaW5nOjpGb3JtYXQoIiVz
LCAlZCIsICJIZWxsbyIsIDQyKS5jX3N0cigpKTsKLQotICAvLyBFZGdlIGNhc2U6IHRoZSByZXN1
bHQgaXMgNDA5NSBjaGFyYWN0ZXJzLgotICBjaGFyIGJ1ZmZlcls0MDk2XTsKLSAgY29uc3Qgc2l6
ZV90IGtTaXplID0gc2l6ZW9mKGJ1ZmZlcik7Ci0gIG1lbXNldChidWZmZXIsICdhJywga1NpemUg
LSAxKTsKLSAgYnVmZmVyW2tTaXplIC0gMV0gPSAnXDAnOwotICBFWFBFQ1RfU1RSRVEoYnVmZmVy
LCBTdHJpbmc6OkZvcm1hdCgiJXMiLCBidWZmZXIpLmNfc3RyKCkpOwotCi0gIC8vIFRoZSByZXN1
bHQgbmVlZHMgdG8gYmUgNDA5NiBjaGFyYWN0ZXJzLCBleGNlZWRpbmcgRm9ybWF0KCkncyBsaW1p
dC4KLSAgRVhQRUNUX1NUUkVRKCI8Zm9ybWF0dGluZyBlcnJvciBvciBidWZmZXIgZXhjZWVkZWQ+
IiwKLSAgICAgICAgICAgICAgIFN0cmluZzo6Rm9ybWF0KCJ4JXMiLCBidWZmZXIpLmNfc3RyKCkp
OwotCi0jaWYgR1RFU1RfT1NfTElOVVgKLSAgLy8gT24gTGludXgsIGludmFsaWQgZm9ybWF0IHNw
ZWMgc2hvdWxkIGxlYWQgdG8gYW4gZXJyb3IgbWVzc2FnZS4KLSAgLy8gSW4gb3RoZXIgZW52aXJv
bm1lbnQgKGUuZy4gTVNWQyBvbiBXaW5kb3dzKSwgU3RyaW5nOjpGb3JtYXQoKSBtYXkKLSAgLy8g
c2ltcGx5IGlnbm9yZSBhIGJhZCBmb3JtYXQgc3BlYywgc28gdGhpcyBhc3NlcnRpb24gaXMgcnVu
IG9uCi0gIC8vIExpbnV4IG9ubHkuCi0gIEVYUEVDVF9TVFJFUSgiPGZvcm1hdHRpbmcgZXJyb3Ig
b3IgYnVmZmVyIGV4Y2VlZGVkPiIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OkZvcm1hdCgiJSIp
LmNfc3RyKCkpOwotI2VuZGlmCi19Ci0KICNpZiBHVEVTVF9PU19XSU5ET1dTCiAKIC8vIFRlc3Rz
IFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKCkuCkBAIC0xMTcwLDE3ICsxMDU4LDcgQEAgVEVTVChT
dHJpbmdUZXN0LCBTaG93V2lkZUNTdHJpbmcpIHsKICAgRVhQRUNUX1NUUkVRKCJmb28iLCBTdHJp
bmc6OlNob3dXaWRlQ1N0cmluZyhMImZvbyIpLmNfc3RyKCkpOwogfQogCi0vLyBUZXN0cyBTdHJp
bmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZCgpLgotVEVTVChTdHJpbmdUZXN0LCBTaG93V2lkZUNT
dHJpbmdRdW90ZWQpIHsKLSAgRVhQRUNUX1NUUkVRKCIobnVsbCkiLAotICAgICAgICAgICAgICAg
U3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoTlVMTCkuY19zdHIoKSk7Ci0gIEVYUEVDVF9T
VFJFUSgiTFwiXCIiLAotICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90
ZWQoTCIiKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJMXCJmb29cIiIsCi0gICAgICAgICAg
ICAgICBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChMImZvbyIpLmNfc3RyKCkpOwotfQot
Ci0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKIFRFU1QoU3RyaW5nVGVzdCwgQW5zaUFuZFV0ZjE2TnVsbCkgewogICBFWFBFQ1RfRVEoTlVM
TCwgU3RyaW5nOjpBbnNpVG9VdGYxNihOVUxMKSk7CiAgIEVYUEVDVF9FUShOVUxMLCBTdHJpbmc6
OlV0ZjE2VG9BbnNpKE5VTEwpKTsKQEAgLTEyMDMsNyArMTA4MSw3IEBAIFRFU1QoU3RyaW5nVGVz
dCwgQW5zaUFuZFV0ZjE2Q29udmVydFBhdGhDaGFycykgewogICBFWFBFQ1RfRVEoMCwgd2NzbmNt
cChMIi46XFwgXCIqPyIsIHV0ZjE2LCAzKSk7CiAgIGRlbGV0ZSBbXSB1dGYxNjsKIH0KLSNlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCiAKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCkBAIC0xMzE3LDYgKzEx
OTUsMTcgQEAgVEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIENhdGNoZXNGYXRhbEZhbGl1
cmUpIHsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmF0YWxGYWlsdXJlKCksICJFeHBlY3Rl
ZCBmYXRhbCBmYWlsdXJlLiIpOwogfQogCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK1RF
U1RfRihFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBBY2NlcHRzU3RyaW5nT2JqZWN0KSB7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKEFkZEZhdGFsRmFpbHVyZSgpLCA6OnN0cmluZygiRXhwZWN0ZWQg
ZmF0YWwgZmFpbHVyZS4iKSk7Cit9CisjZW5kaWYKKworVEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVy
ZVRlc3QsIEFjY2VwdHNTdGRTdHJpbmdPYmplY3QpIHsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
QWRkRmF0YWxGYWlsdXJlKCksCisgICAgICAgICAgICAgICAgICAgICAgIDo6c3RkOjpzdHJpbmco
IkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIikpOworfQorCiBURVNUX0YoRXhwZWN0RmF0YWxGYWls
dXJlVGVzdCwgQ2F0Y2hlc0ZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcykgewogICAvLyBXZSBoYXZl
IGFub3RoZXIgdGVzdCBiZWxvdyB0byB2ZXJpZnkgdGhhdCB0aGUgbWFjcm8gY2F0Y2hlcyBmYXRh
bAogICAvLyBmYWlsdXJlcyBnZW5lcmF0ZWQgb24gYW5vdGhlciB0aHJlYWQuCkBAIC0xMzI2LDcg
KzEyMTUsNyBAQCBURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc0ZhdGFsRmFp
bHVyZU9uQWxsVGhyZWFkcykgewogCiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBTaWxlbmNlcyB3
YXJuaW5nczogIkNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZSIKLSNwcmFnbWEgb3B0aW9uIHB1c2gg
LXctY2NjCisjIHByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MKICNlbmRpZgogCiAvLyBUZXN0cyB0
aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgY2FuIGJlIHVzZWQgaW4gYSBub24tdm9pZApAQCAt
MTM1NCw3ICsxMjQzLDcgQEAgdm9pZCBEb2VzTm90QWJvcnRIZWxwZXIoYm9vbCogYWJvcnRlZCkg
ewogCiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2
aW91cyAiI3ByYWdtYSBvcHRpb24gcHVzaCIgc3VwcHJlc3NlZCB0aGVtLgotI3ByYWdtYSBvcHRp
b24gcG9wCisjIHByYWdtYSBvcHRpb24gcG9wCiAjZW5kaWYKIAogVEVTVF9GKEV4cGVjdEZhdGFs
RmFpbHVyZVRlc3QsIERvZXNOb3RBYm9ydCkgewpAQCAtMTM3MSw4ICsxMjYwLDggQEAgc3RhdGlj
IGludCBnbG9iYWxfdmFyID0gMDsKICNkZWZpbmUgR1RFU1RfVVNFX1VOUFJPVEVDVEVEX0NPTU1B
XyBnbG9iYWxfdmFyKyssIGdsb2JhbF92YXIrKwogCiBURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdCwgQWNjZXB0c01hY3JvVGhhdEV4cGFuZHNUb1VucHJvdGVjdGVkQ29tbWEpIHsKLSNpZiAh
ZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IF9fQk9STEFORENfXyA+PSAweDYwMAotICAvLyBJQ0Un
cyBpbiBDKytCdWlsZGVyIDIwMDcuCisjaWZuZGVmIF9fQk9STEFORENfXworICAvLyBJQ0UncyBp
biBDKytCdWlsZGVyLgogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CiAgICAgR1RFU1RfVVNFX1VO
UFJPVEVDVEVEX0NPTU1BXzsKICAgICBBZGRGYXRhbEZhaWx1cmUoKTsKQEAgLTEzOTQsNiArMTI4
MywxOCBAQCBURVNUX0YoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc05vbmZhdGFs
RmFpbHVyZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgbm9uLWZhdGFs
IGZhaWx1cmUuIik7CiB9CiAKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworVEVTVF9GKEV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEFjY2VwdHNTdHJpbmdPYmplY3QpIHsKKyAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoQWRkTm9uZmF0YWxGYWlsdXJlKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIDo6c3RyaW5nKCJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKSk7Cit9Cisj
ZW5kaWYKKworVEVTVF9GKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEFjY2VwdHNTdGRTdHJp
bmdPYmplY3QpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQWRkTm9uZmF0YWxGYWlsdXJl
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIDo6c3RkOjpzdHJpbmcoIkV4cGVjdGVkIG5v
bi1mYXRhbCBmYWlsdXJlLiIpKTsKK30KKwogVEVTVF9GKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRl
c3QsIENhdGNoZXNOb25mYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKICAgLy8gV2UgaGF2ZSBh
bm90aGVyIHRlc3QgYmVsb3cgdG8gdmVyaWZ5IHRoYXQgdGhlIG1hY3JvIGNhdGNoZXMKICAgLy8g
bm9uLWZhdGFsIGZhaWx1cmVzIGdlbmVyYXRlZCBvbiBhbm90aGVyIHRocmVhZC4KQEAgLTE0ODMs
OCArMTM4NCw3IEBAIGNsYXNzIFRlc3RSZXN1bHRUZXN0IDogcHVibGljIFRlc3QgewogICAgIC8v
IEluIG9yZGVyIHRvIHRlc3QgVGVzdFJlc3VsdCwgd2UgbmVlZCB0byBtb2RpZnkgaXRzIGludGVy
bmFsCiAgICAgLy8gc3RhdGUsIGluIHBhcnRpY3VsYXIgdGhlIFRlc3RQYXJ0UmVzdWx0IHZlY3Rv
ciBpdCBob2xkcy4KICAgICAvLyB0ZXN0X3BhcnRfcmVzdWx0cygpIHJldHVybnMgYSBjb25zdCBy
ZWZlcmVuY2UgdG8gdGhpcyB2ZWN0b3IuCi0gICAgLy8gV2UgY2FzdCBpdCB0byBhIG5vbi1jb25z
dCBvYmplY3Qgcy50LiBpdCBjYW4gYmUgbW9kaWZpZWQgKHllcywKLSAgICAvLyB0aGlzIGlzIGEg
aGFjaykuCisgICAgLy8gV2UgY2FzdCBpdCB0byBhIG5vbi1jb25zdCBvYmplY3Qgcy50LiBpdCBj
YW4gYmUgbW9kaWZpZWQKICAgICBUUFJWZWN0b3IqIHJlc3VsdHMxID0gY29uc3RfY2FzdDxUUFJW
ZWN0b3IqPigKICAgICAgICAgJlRlc3RSZXN1bHRBY2Nlc3Nvcjo6dGVzdF9wYXJ0X3Jlc3VsdHMo
KnIxKSk7CiAgICAgVFBSVmVjdG9yKiByZXN1bHRzMiA9IGNvbnN0X2Nhc3Q8VFBSVmVjdG9yKj4o
CkBAIC0xNTA5LDcgKzE0MDksNyBAQCBjbGFzcyBUZXN0UmVzdWx0VGVzdCA6IHB1YmxpYyBUZXN0
IHsKICAgICBkZWxldGUgcjI7CiAgIH0KIAotICAvLyBIZWxwZXIgdGhhdCBjb21wYXJlcyB0d28g
dHdvIFRlc3RQYXJ0UmVzdWx0cy4KKyAgLy8gSGVscGVyIHRoYXQgY29tcGFyZXMgdHdvIFRlc3RQ
YXJ0UmVzdWx0cy4KICAgc3RhdGljIHZvaWQgQ29tcGFyZVRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRl
c3RQYXJ0UmVzdWx0JiBleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBhY3R1YWwpIHsKICAgICBFWFBFQ1RfRVEoZXhwZWN0
ZWQudHlwZSgpLCBhY3R1YWwudHlwZSgpKTsKQEAgLTE1NjYsNyArMTQ2Niw3IEBAIFRFU1QoVGVz
dFJlc3VsdFByb3BlcnR5VGVzdCwgTm9Qcm9wZXJ0aWVzRm91bmRXaGVuTm9uZUFyZUFkZGVkKSB7
CiBURVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIE9uZVByb3BlcnR5Rm91bmRXaGVuQWRkZWQp
IHsKICAgVGVzdFJlc3VsdCB0ZXN0X3Jlc3VsdDsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5KCJr
ZXlfMSIsICIxIik7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3Rf
cmVzdWx0LCBwcm9wZXJ0eSk7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHko
JnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eSk7CiAgIEFTU0VSVF9FUSgxLCB0ZXN0
X3Jlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwogICBjb25zdCBUZXN0UHJvcGVydHkmIGFj
dHVhbF9wcm9wZXJ0eSA9IHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgwKTsKICAgRVhQRUNU
X1NUUkVRKCJrZXlfMSIsIGFjdHVhbF9wcm9wZXJ0eS5rZXkoKSk7CkBAIC0xNTc4LDggKzE0Nzgs
OCBAQCBURVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIE11bHRpcGxlUHJvcGVydGllc0ZvdW5k
V2hlbkFkZGVkKSB7CiAgIFRlc3RSZXN1bHQgdGVzdF9yZXN1bHQ7CiAgIFRlc3RQcm9wZXJ0eSBw
cm9wZXJ0eV8xKCJrZXlfMSIsICIxIik7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8yKCJrZXlf
MiIsICIyIik7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVz
dWx0LCBwcm9wZXJ0eV8xKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgm
dGVzdF9yZXN1bHQsIHByb3BlcnR5XzIpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFBy
b3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMSk7CisgIFRlc3RSZXN1
bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9w
ZXJ0eV8yKTsKICAgQVNTRVJUX0VRKDIsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQo
KSk7CiAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgYWN0dWFsX3Byb3BlcnR5XzEgPSB0ZXN0X3Jlc3Vs
dC5HZXRUZXN0UHJvcGVydHkoMCk7CiAgIEVYUEVDVF9TVFJFUSgia2V5XzEiLCBhY3R1YWxfcHJv
cGVydHlfMS5rZXkoKSk7CkBAIC0xNTk3LDEwICsxNDk3LDEwIEBAIFRFU1QoVGVzdFJlc3VsdFBy
b3BlcnR5VGVzdCwgT3ZlcnJpZGVzVmFsdWVzRm9yRHVwbGljYXRlS2V5cykgewogICBUZXN0UHJv
cGVydHkgcHJvcGVydHlfMl8xKCJrZXlfMiIsICIyIik7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0
eV8xXzIoImtleV8xIiwgIjEyIik7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8yXzIoImtleV8y
IiwgIjIyIik7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVz
dWx0LCBwcm9wZXJ0eV8xXzEpOwotICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5
KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMl8xKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNv
cmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzFfMik7Ci0gIFRlc3RSZXN1bHRBY2Nl
c3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9wZXJ0eV8yXzIpOworICBUZXN0
UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwg
cHJvcGVydHlfMV8xKTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVz
dF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzJfMSk7CisgIFRlc3RSZXN1bHRBY2Nlc3Nv
cjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8xXzIp
OworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRl
c3RjYXNlIiwgcHJvcGVydHlfMl8yKTsKIAogICBBU1NFUlRfRVEoMiwgdGVzdF9yZXN1bHQudGVz
dF9wcm9wZXJ0eV9jb3VudCgpKTsKICAgY29uc3QgVGVzdFByb3BlcnR5JiBhY3R1YWxfcHJvcGVy
dHlfMSA9IHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgwKTsKQEAgLTE2MTMsMTQgKzE1MTMs
MTQgQEAgVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBPdmVycmlkZXNWYWx1ZXNGb3JEdXBs
aWNhdGVLZXlzKSB7CiB9CiAKIC8vIFRlc3RzIFRlc3RSZXN1bHQ6OkdldFRlc3RQcm9wZXJ0eSgp
LgotVEVTVChUZXN0UmVzdWx0UHJvcGVydHlEZWF0aFRlc3QsIEdldFRlc3RQcm9wZXJ0eSkgewor
VEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBHZXRUZXN0UHJvcGVydHkpIHsKICAgVGVzdFJl
c3VsdCB0ZXN0X3Jlc3VsdDsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzEoImtleV8xIiwgIjEi
KTsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzIoImtleV8yIiwgIjIiKTsKICAgVGVzdFByb3Bl
cnR5IHByb3BlcnR5XzMoImtleV8zIiwgIjMiKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNv
cmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzEpOwotICBUZXN0UmVzdWx0QWNjZXNz
b3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMik7Ci0gIFRlc3RSZXN1
bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9wZXJ0eV8zKTsKKyAg
VGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2Fz
ZSIsIHByb3BlcnR5XzEpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0
ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMik7CisgIFRlc3RSZXN1bHRBY2Nlc3Nv
cjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8zKTsK
IAogICBjb25zdCBUZXN0UHJvcGVydHkmIGZldGNoZWRfcHJvcGVydHlfMSA9IHRlc3RfcmVzdWx0
LkdldFRlc3RQcm9wZXJ0eSgwKTsKICAgY29uc3QgVGVzdFByb3BlcnR5JiBmZXRjaGVkX3Byb3Bl
cnR5XzIgPSB0ZXN0X3Jlc3VsdC5HZXRUZXN0UHJvcGVydHkoMSk7CkBAIC0xNjM5LDQxICsxNTM5
LDE1IEBAIFRFU1QoVGVzdFJlc3VsdFByb3BlcnR5RGVhdGhUZXN0LCBHZXRUZXN0UHJvcGVydHkp
IHsKICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh0ZXN0X3Jlc3VsdC5HZXRUZXN0UHJvcGVy
dHkoLTEpLCAiIik7CiB9CiAKLS8vIFdoZW4gYSBwcm9wZXJ0eSB1c2luZyBhIHJlc2VydmVkIGtl
eSBpcyBzdXBwbGllZCB0byB0aGlzIGZ1bmN0aW9uLCBpdCB0ZXN0cwotLy8gdGhhdCBhIG5vbi1m
YXRhbCBmYWlsdXJlIGlzIGFkZGVkLCBhIGZhdGFsIGZhaWx1cmUgaXMgbm90IGFkZGVkLCBhbmQg
dGhhdCB0aGUKLS8vIHByb3BlcnR5IGlzIG5vdCByZWNvcmRlZC4KLXZvaWQgRXhwZWN0Tm9uRmF0
YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoY29uc3QgY2hhcioga2V5
KSB7Ci0gIFRlc3RSZXN1bHQgdGVzdF9yZXN1bHQ7Ci0gIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eShr
ZXksICIxIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAotICAgICAgVGVzdFJlc3VsdEFj
Y2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5KSwKLSAgICAgICJS
ZXNlcnZlZCBrZXkiKTsKLSAgQVNTRVJUX0VRKDAsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlf
Y291bnQoKSkgPDwgIk5vdCByZWNvcmRlZCI7Ci19Ci0KLS8vIEF0dGVtcHRpbmcgdG8gcmVjb3Jk
aW5nIGEgcHJvcGVydHkgd2l0aCB0aGUgUmVzZXJ2ZWQgbGl0ZXJhbCAibmFtZSIKLS8vIHNob3Vs
ZCBhZGQgYSBub24tZmF0YWwgZmFpbHVyZSBhbmQgdGhlIHByb3BlcnR5IHNob3VsZCBub3QgYmUg
cmVjb3JkZWQuCi1URVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIEFkZEZhaWx1cmVXaGVuVXNp
bmdSZXNlcnZlZEtleUNhbGxlZE5hbWUpIHsKLSAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3Jk
aW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoIm5hbWUiKTsKLX0KLQotLy8gQXR0ZW1wdGluZyB0
byByZWNvcmRpbmcgYSBwcm9wZXJ0eSB3aXRoIHRoZSBSZXNlcnZlZCBsaXRlcmFsICJzdGF0dXMi
Ci0vLyBzaG91bGQgYWRkIGEgbm9uLWZhdGFsIGZhaWx1cmUgYW5kIHRoZSBwcm9wZXJ0eSBzaG91
bGQgbm90IGJlIHJlY29yZGVkLgotVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBBZGRGYWls
dXJlV2hlblVzaW5nUmVzZXJ2ZWRLZXlDYWxsZWRTdGF0dXMpIHsKLSAgRXhwZWN0Tm9uRmF0YWxG
YWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoInN0YXR1cyIpOwotfQotCi0v
LyBBdHRlbXB0aW5nIHRvIHJlY29yZGluZyBhIHByb3BlcnR5IHdpdGggdGhlIFJlc2VydmVkIGxp
dGVyYWwgInRpbWUiCi0vLyBzaG91bGQgYWRkIGEgbm9uLWZhdGFsIGZhaWx1cmUgYW5kIHRoZSBw
cm9wZXJ0eSBzaG91bGQgbm90IGJlIHJlY29yZGVkLgotVEVTVChUZXN0UmVzdWx0UHJvcGVydHlU
ZXN0LCBBZGRGYWlsdXJlV2hlblVzaW5nUmVzZXJ2ZWRLZXlDYWxsZWRUaW1lKSB7Ci0gIEV4cGVj
dE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5KCJ0aW1lIik7
Ci19Ci0KLS8vIEF0dGVtcHRpbmcgdG8gcmVjb3JkaW5nIGEgcHJvcGVydHkgd2l0aCB0aGUgUmVz
ZXJ2ZWQgbGl0ZXJhbCAiY2xhc3NuYW1lIgotLy8gc2hvdWxkIGFkZCBhIG5vbi1mYXRhbCBmYWls
dXJlIGFuZCB0aGUgcHJvcGVydHkgc2hvdWxkIG5vdCBiZSByZWNvcmRlZC4KLVRFU1QoVGVzdFJl
c3VsdFByb3BlcnR5VGVzdCwgQWRkRmFpbHVyZVdoZW5Vc2luZ1Jlc2VydmVkS2V5Q2FsbGVkQ2xh
c3NuYW1lKSB7Ci0gIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJl
c2VydmVkS2V5KCJjbGFzc25hbWUiKTsKLX0KKy8vIFRlc3RzIHRoZSBUZXN0IGNsYXNzLgorLy8K
Ky8vIEl0J3MgZGlmZmljdWx0IHRvIHRlc3QgZXZlcnkgcHVibGljIG1ldGhvZCBvZiB0aGlzIGNs
YXNzICh3ZSBhcmUKKy8vIGFscmVhZHkgc3RyZXRjaGluZyB0aGUgbGltaXQgb2YgR29vZ2xlIFRl
c3QgYnkgdXNpbmcgaXQgdG8gdGVzdCBpdHNlbGYhKS4KKy8vIEZvcnR1bmF0ZWx5LCB3ZSBkb24n
dCBoYXZlIHRvIGRvIHRoYXQsIGFzIHdlIGFyZSBhbHJlYWR5IHRlc3RpbmcKKy8vIHRoZSBmdW5j
dGlvbmFsaXRpZXMgb2YgdGhlIFRlc3QgY2xhc3MgZXh0ZW5zaXZlbHkgYnkgdXNpbmcgR29vZ2xl
IFRlc3QKKy8vIGFsb25lLgorLy8KKy8vIFRoZXJlZm9yZSwgdGhpcyBzZWN0aW9uIG9ubHkgY29u
dGFpbnMgb25lIHRlc3QuCiAKIC8vIFRlc3RzIHRoYXQgR1Rlc3RGbGFnU2F2ZXIgd29ya3Mgb24g
V2luZG93cyBhbmQgTWFjLgogCkBAIC0xNjk4LDYgKzE1NzIsNyBAQCBjbGFzcyBHVGVzdEZsYWdT
YXZlclRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgR1RFU1RfRkxBRyhyZXBlYXQpID0gMTsKICAg
ICBHVEVTVF9GTEFHKHNodWZmbGUpID0gZmFsc2U7CiAgICAgR1RFU1RfRkxBRyhzdGFja190cmFj
ZV9kZXB0aCkgPSBrTWF4U3RhY2tUcmFjZURlcHRoOworICAgIEdURVNUX0ZMQUcoc3RyZWFtX3Jl
c3VsdF90bykgPSAiIjsKICAgICBHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gZmFsc2U7
CiAgIH0KIApAQCAtMTcyNCw2ICsxNTk5LDcgQEAgY2xhc3MgR1Rlc3RGbGFnU2F2ZXJUZXN0IDog
cHVibGljIFRlc3QgewogICAgIEVYUEVDVF9FUSgxLCBHVEVTVF9GTEFHKHJlcGVhdCkpOwogICAg
IEVYUEVDVF9GQUxTRShHVEVTVF9GTEFHKHNodWZmbGUpKTsKICAgICBFWFBFQ1RfRVEoa01heFN0
YWNrVHJhY2VEZXB0aCwgR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkpOworICAgIEVYUEVD
VF9TVFJFUSgiIiwgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKS5jX3N0cigpKTsKICAgICBF
WFBFQ1RfRkFMU0UoR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSk7CiAKICAgICBHVEVTVF9G
TEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzKSA9IHRydWU7CkBAIC0xNzM5LDggKzE2MTUsMTAg
QEAgY2xhc3MgR1Rlc3RGbGFnU2F2ZXJUZXN0IDogcHVibGljIFRlc3QgewogICAgIEdURVNUX0ZM
QUcocmVwZWF0KSA9IDEwMDsKICAgICBHVEVTVF9GTEFHKHNodWZmbGUpID0gdHJ1ZTsKICAgICBH
VEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSA9IDE7CisgICAgR1RFU1RfRkxBRyhzdHJlYW1f
cmVzdWx0X3RvKSA9ICJsb2NhbGhvc3Q6MTIzNCI7CiAgICAgR1RFU1RfRkxBRyh0aHJvd19vbl9m
YWlsdXJlKSA9IHRydWU7CiAgIH0KKwogIHByaXZhdGU6CiAgIC8vIEZvciBzYXZpbmcgR29vZ2xl
IFRlc3QgZmxhZ3MgZHVyaW5nIHRoaXMgdGVzdCBjYXNlLgogICBzdGF0aWMgR1Rlc3RGbGFnU2F2
ZXIqIHNhdmVyXzsKQEAgLTE3NzMsMTUgKzE2NTEsMTYgQEAgc3RhdGljIHZvaWQgU2V0RW52KGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHZhbHVlKSB7CiAgIC8vIEMrK0J1aWxkZXIncyBw
dXRlbnYgb25seSBzdG9yZXMgYSBwb2ludGVyIHRvIGl0cyBwYXJhbWV0ZXI7IHdlIGhhdmUgdG8K
ICAgLy8gZW5zdXJlIHRoYXQgdGhlIHN0cmluZyByZW1haW5zIHZhbGlkIGFzIGxvbmcgYXMgaXQg
bWlnaHQgYmUgbmVlZGVkLgogICAvLyBXZSB1c2UgYW4gc3RkOjptYXAgdG8gZG8gc28uCi0gIHN0
YXRpYyBzdGQ6Om1hcDxTdHJpbmcsIFN0cmluZyo+IGFkZGVkX2VudjsKKyAgc3RhdGljIHN0ZDo6
bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZyo+IGFkZGVkX2VudjsKIAogICAvLyBCZWNhdXNl
IHB1dGVudiBzdG9yZXMgYSBwb2ludGVyIHRvIHRoZSBzdHJpbmcgYnVmZmVyLCB3ZSBjYW4ndCBk
ZWxldGUgdGhlCiAgIC8vIHByZXZpb3VzIHN0cmluZyAoaWYgcHJlc2VudCkgdW50aWwgYWZ0ZXIg
aXQncyByZXBsYWNlZC4KLSAgU3RyaW5nICpwcmV2X2VudiA9IE5VTEw7CisgIHN0ZDo6c3RyaW5n
ICpwcmV2X2VudiA9IE5VTEw7CiAgIGlmIChhZGRlZF9lbnYuZmluZChuYW1lKSAhPSBhZGRlZF9l
bnYuZW5kKCkpIHsKICAgICBwcmV2X2VudiA9IGFkZGVkX2VudltuYW1lXTsKICAgfQotICBhZGRl
ZF9lbnZbbmFtZV0gPSBuZXcgU3RyaW5nKChNZXNzYWdlKCkgPDwgbmFtZSA8PCAiPSIgPDwgdmFs
dWUpLkdldFN0cmluZygpKTsKKyAgYWRkZWRfZW52W25hbWVdID0gbmV3IHN0ZDo6c3RyaW5nKAor
ICAgICAgKE1lc3NhZ2UoKSA8PCBuYW1lIDw8ICI9IiA8PCB2YWx1ZSkuR2V0U3RyaW5nKCkpOwog
CiAgIC8vIFRoZSBzdGFuZGFyZCBzaWduYXR1cmUgb2YgcHV0ZW52IGFjY2VwdHMgYSAnY2hhcion
IGFyZ3VtZW50LiBPdGhlcgogICAvLyBpbXBsZW1lbnRhdGlvbnMsIGxpa2UgQysrQnVpbGRlcidz
LCBhY2NlcHQgYSAnY29uc3QgY2hhcionLgpAQCAtMTgxMyw2ICsxNjkyLDggQEAgVEVTVChJbnQz
MkZyb21HVGVzdEVudlRlc3QsIFJldHVybnNEZWZhdWx0V2hlblZhcmlhYmxlSXNOb3RTZXQpIHsK
ICAgRVhQRUNUX0VRKDEwLCBJbnQzMkZyb21HVGVzdEVudigidGVtcCIsIDEwKSk7CiB9CiAKKyMg
aWYgIWRlZmluZWQoR1RFU1RfR0VUX0lOVDMyX0ZST01fRU5WXykKKwogLy8gVGVzdHMgdGhhdCBJ
bnQzMkZyb21HVGVzdEVudigpIHJldHVybnMgdGhlIGRlZmF1bHQgdmFsdWUgd2hlbiB0aGUKIC8v
IGVudmlyb25tZW50IHZhcmlhYmxlIG92ZXJmbG93cyBhcyBhbiBJbnQzMi4KIFRFU1QoSW50MzJG
cm9tR1Rlc3RFbnZUZXN0LCBSZXR1cm5zRGVmYXVsdFdoZW5WYWx1ZU92ZXJmbG93cykgewpAQCAt
MTgzNyw2ICsxNzE4LDggQEAgVEVTVChJbnQzMkZyb21HVGVzdEVudlRlc3QsIFJldHVybnNEZWZh
dWx0V2hlblZhbHVlSXNJbnZhbGlkKSB7CiAgIEVYUEVDVF9FUSg1MCwgSW50MzJGcm9tR1Rlc3RF
bnYoInRlbXAiLCA1MCkpOwogfQogCisjIGVuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9HRVRfSU5U
MzJfRlJPTV9FTlZfKQorCiAvLyBUZXN0cyB0aGF0IEludDMyRnJvbUdUZXN0RW52KCkgcGFyc2Vz
IGFuZCByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUKIC8vIGVudmlyb25tZW50IHZhcmlhYmxlIHdo
ZW4gaXQgcmVwcmVzZW50cyBhIHZhbGlkIGRlY2ltYWwgaW50ZWdlciBpbgogLy8gdGhlIHJhbmdl
IG9mIGFuIEludDMyLgpAQCAtMTkyNSw3ICsxODA4LDcgQEAgVEVTVChJbnQzMkZyb21FbnZPckRp
ZURlYXRoVGVzdCwgQWJvcnRzT25GYWlsdXJlKSB7CiB9CiAKIC8vIFRlc3RzIHRoYXQgSW50MzJG
cm9tRW52T3JEaWUoKSBhYm9ydHMgd2l0aCBhbiBlcnJvciBtZXNzYWdlCi0vLyBpZiB0aGUgdmFy
aWFibGUgY2Fubm90IGJlIHJlcHJlc250ZWQgYnkgYW4gSW50MzIuCisvLyBpZiB0aGUgdmFyaWFi
bGUgY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IGFuIEludDMyLgogVEVTVChJbnQzMkZyb21FbnZP
ckRpZURlYXRoVGVzdCwgQWJvcnRzT25JbnQzMk92ZXJmbG93KSB7CiAgIFNldEVudihHVEVTVF9G
TEFHX1BSRUZJWF9VUFBFUl8gIlZBUiIsICIxMjM0NTY3ODkxMjM0NTY3ODkxMjM0Iik7CiAgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoCkBAIC0yMDcwLDYgKzE5NTMsMTczIEBAIFRFU1QoVW5p
dFRlc3RUZXN0LCBDYW5HZXRPcmlnaW5hbFdvcmtpbmdEaXIpIHsKICAgRVhQRUNUX1NUUk5FKFVu
aXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5nX2RpcigpLCAiIik7CiB9CiAK
K1RFU1QoVW5pdFRlc3RUZXN0LCBSZXR1cm5zUGxhdXNpYmxlVGltZXN0YW1wKSB7CisgIEVYUEVD
VF9MVCgwLCBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+c3RhcnRfdGltZXN0YW1wKCkpOworICBF
WFBFQ1RfTEUoVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnN0YXJ0X3RpbWVzdGFtcCgpLCBHZXRU
aW1lSW5NaWxsaXMoKSk7Cit9CisKKy8vIFdoZW4gYSBwcm9wZXJ0eSB1c2luZyBhIHJlc2VydmVk
IGtleSBpcyBzdXBwbGllZCB0byB0aGlzIGZ1bmN0aW9uLCBpdAorLy8gdGVzdHMgdGhhdCBhIG5v
bi1mYXRhbCBmYWlsdXJlIGlzIGFkZGVkLCBhIGZhdGFsIGZhaWx1cmUgaXMgbm90IGFkZGVkLAor
Ly8gYW5kIHRoYXQgdGhlIHByb3BlcnR5IGlzIG5vdCByZWNvcmRlZC4KK3ZvaWQgRXhwZWN0Tm9u
RmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoCisgICAgY29uc3Qg
VGVzdFJlc3VsdCYgdGVzdF9yZXN1bHQsIGNvbnN0IGNoYXIqIGtleSkgeworICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShUZXN0OjpSZWNvcmRQcm9wZXJ0eShrZXksICIxIiksICJSZXNlcnZlZCBr
ZXkiKTsKKyAgQVNTRVJUX0VRKDAsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKSkg
PDwgIlByb3BlcnR5IGZvciBrZXkgJyIgPDwga2V5CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICInIHJlY29yZGVkIHVuZXhwZWN0ZWRseS4iOwor
fQorCit2b2lkIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2Vy
dmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgY29uc3QgY2hhcioga2V5KSB7CisgIGNvbnN0IFRl
c3RJbmZvKiB0ZXN0X2luZm8gPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0
X2luZm8oKTsKKyAgQVNTRVJUX1RSVUUodGVzdF9pbmZvICE9IE5VTEwpOworICBFeHBlY3ROb25G
YXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgqdGVzdF9pbmZvLT5y
ZXN1bHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga2V5KTsKK30KKwordm9pZCBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQ
cm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICBjb25zdCBjaGFy
KiBrZXkpIHsKKyAgY29uc3QgVGVzdENhc2UqIHRlc3RfY2FzZSA9IFVuaXRUZXN0OjpHZXRJbnN0
YW5jZSgpLT5jdXJyZW50X3Rlc3RfY2FzZSgpOworICBBU1NFUlRfVFJVRSh0ZXN0X2Nhc2UgIT0g
TlVMTCk7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2Vy
dmVkS2V5KAorICAgICAgdGVzdF9jYXNlLT5hZF9ob2NfdGVzdF9yZXN1bHQoKSwga2V5KTsKK30K
Kwordm9pZCBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZl
ZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgIGNvbnN0IGNoYXIqIGtleSkgeworICBFeHBlY3RO
b25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgKKyAgICAgIFVu
aXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5hZF9ob2NfdGVzdF9yZXN1bHQoKSwga2V5KTsKK30KKwor
Ly8gVGVzdHMgdGhhdCBwcm9wZXJ0eSByZWNvcmRpbmcgZnVuY3Rpb25zIGluIFVuaXRUZXN0IG91
dHNpZGUgb2YgdGVzdHMKKy8vIGZ1bmN0aW9ucyBjb3JyZWNseS4gIENyZWF0aW5nIGEgc2VwYXJh
dGUgaW5zdGFuY2Ugb2YgVW5pdFRlc3QgZW5zdXJlcyBpdAorLy8gaXMgaW4gYSBzdGF0ZSBzaW1p
bGFyIHRvIHRoZSBVbml0VGVzdCdzIHNpbmdsZXRvbidzIGJldHdlZW4gdGVzdHMuCitjbGFzcyBV
bml0VGVzdFJlY29yZFByb3BlcnR5VGVzdCA6CisgICAgcHVibGljIHRlc3Rpbmc6OmludGVybmFs
OjpVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdEhlbHBlciB7CisgcHVibGljOgorICBzdGF0aWMg
dm9pZCBTZXRVcFRlc3RDYXNlKCkgeworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGlu
Z1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAorICAgICAgICAiZGlz
YWJsZWQiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhS
ZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICAgICAgImVycm9ycyIpOworICAgIEV4
cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3Vy
cmVudFRlc3RDYXNlKAorICAgICAgICAiZmFpbHVyZXMiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZh
aWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgK
KyAgICAgICAgIm5hbWUiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9w
ZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICAgICAgInRlc3RzIik7
CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRL
ZXlGb3JDdXJyZW50VGVzdENhc2UoCisgICAgICAgICJ0aW1lIik7CisKKyAgICBUZXN0OjpSZWNv
cmRQcm9wZXJ0eSgidGVzdF9jYXNlX2tleV8xIiwgIjEiKTsKKyAgICBjb25zdCBUZXN0Q2FzZSog
dGVzdF9jYXNlID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9jYXNlKCk7
CisgICAgQVNTRVJUX1RSVUUodGVzdF9jYXNlICE9IE5VTEwpOworCisgICAgQVNTRVJUX0VRKDEs
IHRlc3RfY2FzZS0+YWRfaG9jX3Rlc3RfcmVzdWx0KCkudGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsK
KyAgICBFWFBFQ1RfU1RSRVEoInRlc3RfY2FzZV9rZXlfMSIsCisgICAgICAgICAgICAgICAgIHRl
c3RfY2FzZS0+YWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLmtleSgpKTsK
KyAgICBFWFBFQ1RfU1RSRVEoIjEiLAorICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2UtPmFkX2hv
Y190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKKyAgfQorfTsKKwor
Ly8gVGVzdHMgVGVzdFJlc3VsdCBoYXMgdGhlIGV4cGVjdGVkIHByb3BlcnR5IHdoZW4gYWRkZWQu
CitURVNUX0YoVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3QsIE9uZVByb3BlcnR5Rm91bmRXaGVu
QWRkZWQpIHsKKyAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzEiLCAiMSIpOworCisgIEFT
U0VSVF9FUSgxLCB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLnRlc3RfcHJvcGVydHlf
Y291bnQoKSk7CisKKyAgRVhQRUNUX1NUUkVRKCJrZXlfMSIsCisgICAgICAgICAgICAgICB1bml0
X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS5rZXkoKSk7Cisg
IEVYUEVDVF9TVFJFUSgiMSIsCisgICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0
X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKK30KKworLy8gVGVzdHMgVGVz
dFJlc3VsdCBoYXMgbXVsdGlwbGUgcHJvcGVydGllcyB3aGVuIGFkZGVkLgorVEVTVF9GKFVuaXRU
ZXN0UmVjb3JkUHJvcGVydHlUZXN0LCBNdWx0aXBsZVByb3BlcnRpZXNGb3VuZFdoZW5BZGRlZCkg
eworICBVbml0VGVzdFJlY29yZFByb3BlcnR5KCJrZXlfMSIsICIxIik7CisgIFVuaXRUZXN0UmVj
b3JkUHJvcGVydHkoImtleV8yIiwgIjIiKTsKKworICBBU1NFUlRfRVEoMiwgdW5pdF90ZXN0Xy5h
ZF9ob2NfdGVzdF9yZXN1bHQoKS50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOworCisgIEVYUEVDVF9T
VFJFUSgia2V5XzEiLAorICAgICAgICAgICAgICAgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1
bHQoKS5HZXRUZXN0UHJvcGVydHkoMCkua2V5KCkpOworICBFWFBFQ1RfU1RSRVEoIjEiLCB1bml0
X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsK
KworICBFWFBFQ1RfU1RSRVEoImtleV8yIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRf
aG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDEpLmtleSgpKTsKKyAgRVhQRUNUX1NU
UkVRKCIyIiwgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHko
MSkudmFsdWUoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RSZXN1bHQ6OlJlY29yZFByb3BlcnR5KCkg
b3ZlcnJpZGVzIHZhbHVlcyBmb3IgZHVwbGljYXRlIGtleXMuCitURVNUX0YoVW5pdFRlc3RSZWNv
cmRQcm9wZXJ0eVRlc3QsIE92ZXJyaWRlc1ZhbHVlc0ZvckR1cGxpY2F0ZUtleXMpIHsKKyAgVW5p
dFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzEiLCAiMSIpOworICBVbml0VGVzdFJlY29yZFByb3Bl
cnR5KCJrZXlfMiIsICIyIik7CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8xIiwgIjEy
Iik7CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8yIiwgIjIyIik7CisKKyAgQVNTRVJU
X0VRKDIsIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkudGVzdF9wcm9wZXJ0eV9jb3Vu
dCgpKTsKKworICBFWFBFQ1RfU1RSRVEoImtleV8xIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVz
dF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLmtleSgpKTsKKyAgRVhQ
RUNUX1NUUkVRKCIxMiIsCisgICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jl
c3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKKworICBFWFBFQ1RfU1RSRVEoImtl
eV8yIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0
VGVzdFByb3BlcnR5KDEpLmtleSgpKTsKKyAgRVhQRUNUX1NUUkVRKCIyMiIsCisgICAgICAgICAg
ICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgxKS52
YWx1ZSgpKTsKK30KKworVEVTVF9GKFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0LAorICAgICAg
IEFkZEZhaWx1cmVJbnNpZGVUZXN0c1doZW5Vc2luZ1Rlc3RDYXNlUmVzZXJ2ZWRLZXlzKSB7Cisg
IEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9y
Q3VycmVudFRlc3QoCisgICAgICAibmFtZSIpOworICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNv
cmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0KAorICAgICAgInZhbHVl
X3BhcmFtIik7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJl
c2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgICAidHlwZV9wYXJhbSIpOworICBFeHBlY3RO
b25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRU
ZXN0KAorICAgICAgInN0YXR1cyIpOworICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQ
cm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0KAorICAgICAgInRpbWUiKTsKKyAg
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JD
dXJyZW50VGVzdCgKKyAgICAgICJjbGFzc25hbWUiKTsKK30KKworVEVTVF9GKFVuaXRUZXN0UmVj
b3JkUHJvcGVydHlUZXN0LAorICAgICAgIEFkZFJlY29yZFdpdGhSZXNlcnZlZEtleXNHZW5lcmF0
ZXNDb3JyZWN0UHJvcGVydHlMaXN0KSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAorICAg
ICAgVGVzdDo6UmVjb3JkUHJvcGVydHkoIm5hbWUiLCAiMSIpLAorICAgICAgIidjbGFzc25hbWUn
LCAnbmFtZScsICdzdGF0dXMnLCAndGltZScsICd0eXBlX3BhcmFtJywgJ3ZhbHVlX3BhcmFtJywi
CisgICAgICAiICdmaWxlJywgYW5kICdsaW5lJyBhcmUgcmVzZXJ2ZWQiKTsKK30KKworY2xhc3Mg
VW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3RFbnZpcm9ubWVudCA6IHB1YmxpYyBFbnZpcm9ubWVu
dCB7CisgcHVibGljOgorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgRXhwZWN0Tm9u
RmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0
Q2FzZSgKKyAgICAgICAgInRlc3RzIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3Jk
aW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgImZh
aWx1cmVzIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRo
UmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgImRpc2FibGVkIik7CisgICAg
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRz
aWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgImVycm9ycyIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFp
bHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCisg
ICAgICAgICJuYW1lIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVy
dHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgInRpbWVzdGFtcCIp
OworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVk
S2V5T3V0c2lkZU9mVGVzdENhc2UoCisgICAgICAgICJ0aW1lIik7CisgICAgRXhwZWN0Tm9uRmF0
YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2Fz
ZSgKKyAgICAgICAgInJhbmRvbV9zZWVkIik7CisgIH0KK307CisKKy8vIFRoaXMgd2lsbCB0ZXN0
IHByb3BlcnR5IHJlY29yZGluZyBvdXRzaWRlIG9mIGFueSB0ZXN0IG9yIHRlc3QgY2FzZS4KK3N0
YXRpYyBFbnZpcm9ubWVudCogcmVjb3JkX3Byb3BlcnR5X2VudiA9CisgICAgQWRkR2xvYmFsVGVz
dEVudmlyb25tZW50KG5ldyBVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdEVudmlyb25tZW50KTsK
KwogLy8gVGhpcyBncm91cCBvZiB0ZXN0cyBpcyBmb3IgcHJlZGljYXRlIGFzc2VydGlvbnMgKEFT
U0VSVF9QUkVEKiwgZXRjKQogLy8gb2YgdmFyaW91cyBhcml0aWVzLiAgVGhleSBkbyBub3QgYXR0
ZW1wdCB0byBiZSBleGhhdXN0aXZlLiAgUmF0aGVyLAogLy8gdmlldyB0aGVtIGFzIHNtb2tlIHRl
c3RzIHRoYXQgY2FuIGJlIGVhc2lseSByZXZpZXdlZCBhbmQgdmVyaWZpZWQuCkBAIC0yNDAxLDcg
KzI0NTEsNyBAQCBURVNUKFN0cmluZ0Fzc2VydGlvblRlc3QsIEFTU0VSVF9TVFJFUSkgewogICBB
U1NFUlRfU1RSRVEocDEsIHAyKTsKIAogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfU1RS
RVEoImJhZCIsICJnb29kIiksCi0gICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogXCJi
YWRcIiIpOworICAgICAgICAgICAgICAgICAgICAgICAiICBcImJhZFwiXG4gIFwiZ29vZFwiIik7
CiB9CiAKIC8vIFRlc3RzIEFTU0VSVF9TVFJFUSB3aXRoIE5VTEwgYXJndW1lbnRzLgpAQCAtMjQz
Nyw3ICsyNDg3LDcgQEAgVEVTVChTdHJpbmdBc3NlcnRpb25UZXN0LCBBU1NFUlRfU1RSQ0FTRUVR
KSB7CiAKICAgQVNTRVJUX1NUUkNBU0VFUSgiIiwgIiIpOwogICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RShBU1NFUlRfU1RSQ0FTRUVRKCJIaSIsICJoaTIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IihpZ25vcmluZyBjYXNlKSIpOworICAgICAgICAgICAgICAgICAgICAgICAiSWdub3JpbmcgY2Fz
ZSIpOwogfQogCiAvLyBUZXN0cyBBU1NFUlRfU1RSQ0FTRU5FLgpAQCAtMjQ3NSw2ICsyNTI1LDEx
IEBAIFRFU1QoU3RyaW5nQXNzZXJ0aW9uVGVzdCwgU1RSRVFfV2lkZSkgewogICAvLyBTdHJpbmdz
IGNvbnRhaW5pbmcgd2lkZSBjaGFyYWN0ZXJzLgogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShF
WFBFQ1RfU1RSRVEoTCJhYmNceDgxMTkiLCBMImFiY1x4ODEyMCIpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAiYWJjIik7CisKKyAgLy8gVGhlIHN0cmVhbWluZyB2YXJpYXRpb24uCisgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9TVFJFUShMImFi
Y1x4ODExOSIsIEwiYWJjXHg4MTIxIikgPDwgIkV4cGVjdGVkIGZhaWx1cmUiOworICB9LCAiRXhw
ZWN0ZWQgZmFpbHVyZSIpOwogfQogCiAvLyBUZXN0cyAqX1NUUk5FIG9uIHdpZGUgc3RyaW5ncy4K
QEAgLTI1MDEsNiArMjU1Niw5IEBAIFRFU1QoU3RyaW5nQXNzZXJ0aW9uVGVzdCwgU1RSTkVfV2lk
ZSkgewogICAvLyBTdHJpbmdzIGNvbnRhaW5pbmcgd2lkZSBjaGFyYWN0ZXJzLgogICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSTkUoTCJhYmNceDgxMTkiLCBMImFiY1x4ODExOSIp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjIik7CisKKyAgLy8gVGhlIHN0cmVhbWlu
ZyB2YXJpYXRpb24uCisgIEFTU0VSVF9TVFJORShMImFiY1x4ODExOSIsIEwiYWJjXHg4MTIwIikg
PDwgIlRoaXMgc2hvdWxkbid0IGhhcHBlbiI7CiB9CiAKIC8vIFRlc3RzIGZvciA6OnRlc3Rpbmc6
OklzU3Vic3RyaW5nKCkuCkBAIC0yNjMxLDcgKzI2ODksNiBAQCBURVNUKElzTm90U3Vic3RyaW5n
VGVzdCwgUmV0dXJuc0NvcnJlY3RSZXN1bHRGb3JTdGRXc3RyaW5nKSB7CiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgUmF3VHlwZT4KIGNsYXNzIEZsb2F0aW5nUG9pbnRUZXN0IDogcHVibGljIFRlc3Qgewog
IHByb3RlY3RlZDoKLQogICAvLyBQcmUtY2FsY3VsYXRlZCBudW1iZXJzIHRvIGJlIHVzZWQgYnkg
dGhlIHRlc3RzLgogICBzdHJ1Y3QgVGVzdFZhbHVlcyB7CiAgICAgUmF3VHlwZSBjbG9zZV90b19w
b3NpdGl2ZV96ZXJvOwpAQCAtMzA3OSwxMyArMzEzNiwxMyBAQCBURVNUKERJU0FCTEVEX1Rlc3RD
YXNlLCBESVNBQkxFRF9UZXN0U2hvdWxkTm90UnVuKSB7CiAgIEZBSUwoKSA8PCAiVW5leHBlY3Rl
ZCBmYWlsdXJlOiBUZXN0IGluIGRpc2FibGVkIHRlc3QgY2FzZSBzaG91bGQgbm90IGJlIHJ1bi4i
OwogfQogCi0vLyBDaGVjayB0aGF0IHdoZW4gYWxsIHRlc3RzIGluIGEgdGVzdCBjYXNlIGFyZSBk
aXNhYmxlZCwgU2V0dXBUZXN0Q2FzZSgpIGFuZAorLy8gQ2hlY2sgdGhhdCB3aGVuIGFsbCB0ZXN0
cyBpbiBhIHRlc3QgY2FzZSBhcmUgZGlzYWJsZWQsIFNldFVwVGVzdENhc2UoKSBhbmQKIC8vIFRl
YXJEb3duVGVzdENhc2UoKSBhcmUgbm90IGNhbGxlZC4KIGNsYXNzIERpc2FibGVkVGVzdHNUZXN0
IDogcHVibGljIFRlc3QgewogIHByb3RlY3RlZDoKICAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2Fz
ZSgpIHsKICAgICBGQUlMKCkgPDwgIlVuZXhwZWN0ZWQgZmFpbHVyZTogQWxsIHRlc3RzIGRpc2Fi
bGVkIGluIHRlc3QgY2FzZS4gIgotICAgICAgICAgICAgICAiU2V0dXBUZXN0Q2FzZSgpIHNob3Vs
ZCBub3QgYmUgY2FsbGVkLiI7CisgICAgICAgICAgICAgICJTZXRVcFRlc3RDYXNlKCkgc2hvdWxk
IG5vdCBiZSBjYWxsZWQuIjsKICAgfQogCiAgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2Uo
KSB7CkBAIC0zMjI0LDcgKzMyODEsNyBAQCBURVNUX0YoU2luZ2xlRXZhbHVhdGlvblRlc3QsIEFT
U0VSVF9TVFIpIHsKIAogICAvLyBmYWlsZWQgRVhQRUNUX1NUUkNBU0VFUQogICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSQ0FTRUVRKHAxXysrLCBwMl8rKyksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICJpZ25vcmluZyBjYXNlIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICJJZ25vcmluZyBjYXNlIik7CiAgIEVYUEVDVF9FUShzMV8gKyAyLCBwMV8pOwogICBFWFBF
Q1RfRVEoczJfICsgMiwgcDJfKTsKIH0KQEAgLTMzMzIsNyArMzM4OSw3IEBAIGNsYXNzIE5vRmF0
YWxGYWlsdXJlVGVzdCA6IHB1YmxpYyBUZXN0IHsKIAogICB2b2lkIERvQXNzZXJ0Tm9GYXRhbEZh
aWx1cmVPbkZhaWxzKCkgewogICAgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEZhaWxzKCkpOwot
ICAgIEFERF9GQUlMVVJFKCkgPDwgInNob2xkIG5vdCByZWFjaCBoZXJlLiI7CisgICAgQUREX0ZB
SUxVUkUoKSA8PCAic2hvdWxkIG5vdCByZWFjaCBoZXJlLiI7CiAgIH0KIAogICB2b2lkIERvRXhw
ZWN0Tm9GYXRhbEZhaWx1cmVPbkZhaWxzKCkgewpAQCAtMzQxMiw1OSArMzQ2OSwxNTcgQEAgVEVT
VF9GKE5vRmF0YWxGYWlsdXJlVGVzdCwgTWVzc2FnZUlzU3RyZWFtYWJsZSkgewogCiAvLyBUZXN0
cyBub24tc3RyaW5nIGFzc2VydGlvbnMuCiAKK3N0ZDo6c3RyaW5nIEVkaXRzVG9TdHJpbmcoY29u
c3Qgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+JiBlZGl0cykgeworICBzdGQ6OnN0cmluZyBvdXQ7Cisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWRpdHMuc2l6ZSgpOyArK2kpIHsKKyAgICBzdGF0aWMg
Y29uc3QgY2hhciBrRWRpdHNbXSA9ICIgKy0vIjsKKyAgICBvdXQuYXBwZW5kKDEsIGtFZGl0c1tl
ZGl0c1tpXV0pOworICB9CisgIHJldHVybiBvdXQ7Cit9CisKK3N0ZDo6dmVjdG9yPHNpemVfdD4g
Q2hhcnNUb0luZGljZXMoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgeworICBzdGQ6OnZlY3Rvcjxz
aXplX3Q+IG91dDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHIuc2l6ZSgpOyArK2kpIHsK
KyAgICBvdXQucHVzaF9iYWNrKHN0cltpXSk7CisgIH0KKyAgcmV0dXJuIG91dDsKK30KKworc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+IENoYXJzVG9MaW5lcyhjb25zdCBzdGQ6OnN0cmluZyYgc3Ry
KSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBvdXQ7CisgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc3RyLnNpemUoKTsgKytpKSB7CisgICAgb3V0LnB1c2hfYmFjayhzdHIuc3Vic3RyKGks
IDEpKTsKKyAgfQorICByZXR1cm4gb3V0OworfQorCitURVNUKEVkaXREaXN0YW5jZSwgVGVzdENh
c2VzKSB7CisgIHN0cnVjdCBDYXNlIHsKKyAgICBpbnQgbGluZTsKKyAgICBjb25zdCBjaGFyKiBs
ZWZ0OworICAgIGNvbnN0IGNoYXIqIHJpZ2h0OworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkX2Vk
aXRzOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkX2RpZmY7CisgIH07CisgIHN0YXRpYyBjb25z
dCBDYXNlIGtDYXNlc1tdID0geworICAgICAgLy8gTm8gY2hhbmdlLgorICAgICAge19fTElORV9f
LCAiQSIsICJBIiwgIiAiLCAiIn0sCisgICAgICB7X19MSU5FX18sICJBQkNERSIsICJBQkNERSIs
ICIgICAgICIsICIifSwKKyAgICAgIC8vIFNpbXBsZSBhZGRzLgorICAgICAge19fTElORV9fLCAi
WCIsICJYQSIsICIgKyIsICJAQCArMSwyIEBAXG4gWFxuK0FcbiJ9LAorICAgICAge19fTElORV9f
LCAiWCIsICJYQUJDRCIsICIgKysrKyIsICJAQCArMSw1IEBAXG4gWFxuK0FcbitCXG4rQ1xuK0Rc
biJ9LAorICAgICAgLy8gU2ltcGxlIHJlbW92ZXMuCisgICAgICB7X19MSU5FX18sICJYQSIsICJY
IiwgIiAtIiwgIkBAIC0xLDIgQEBcbiBYXG4tQVxuIn0sCisgICAgICB7X19MSU5FX18sICJYQUJD
RCIsICJYIiwgIiAtLS0tIiwgIkBAIC0xLDUgQEBcbiBYXG4tQVxuLUJcbi1DXG4tRFxuIn0sCisg
ICAgICAvLyBTaW1wbGUgcmVwbGFjZXMuCisgICAgICB7X19MSU5FX18sICJBIiwgImEiLCAiLyIs
ICJAQCAtMSwxICsxLDEgQEBcbi1BXG4rYVxuIn0sCisgICAgICB7X19MSU5FX18sICJBQkNEIiwg
ImFiY2QiLCAiLy8vLyIsCisgICAgICAgIkBAIC0xLDQgKzEsNCBAQFxuLUFcbi1CXG4tQ1xuLURc
bithXG4rYlxuK2NcbitkXG4ifSwKKyAgICAgIC8vIFBhdGggZmluZGluZy4KKyAgICAgIHtfX0xJ
TkVfXywgIkFCQ0RFRkdIIiwgIkFCWEVHSDEiLCAiICAtLyAtICArIiwKKyAgICAgICAiQEAgLTEs
OCArMSw3IEBAXG4gQVxuIEJcbi1DXG4tRFxuK1hcbiBFXG4tRlxuIEdcbiBIXG4rMVxuIn0sCisg
ICAgICB7X19MSU5FX18sICJBQUFBQkNDQ0MiLCAiQUJBQkNEQ0RDIiwgIi0gLyAgICsgLyAiLAor
ICAgICAgICJAQCAtMSw5ICsxLDkgQEBcbi1BXG4gQVxuLUFcbitCXG4gQVxuIEJcbiBDXG4rRFxu
IENcbi1DXG4rRFxuIENcbiJ9LAorICAgICAge19fTElORV9fLCAiQUJDREUiLCAiQkNEQ0QiLCAi
LSAgICsvIiwKKyAgICAgICAiQEAgLTEsNSArMSw1IEBAXG4tQVxuIEJcbiBDXG4gRFxuLUVcbitD
XG4rRFxuIn0sCisgICAgICB7X19MSU5FX18sICJBQkNERUZHSElKS0wiLCAiQkNEQ0RFRkdKS0xK
SyIsICItICsrICAgICAtLSAgICsrIiwKKyAgICAgICAiQEAgLTEsNCArMSw1IEBAXG4tQVxuIEJc
bitDXG4rRFxuIENcbiBEXG4iCisgICAgICAgIkBAIC02LDcgKzcsNyBAQFxuIEZcbiBHXG4tSFxu
LUlcbiBKXG4gS1xuIExcbitKXG4rS1xuIn0sCisgICAgICB7fX07CisgIGZvciAoY29uc3QgQ2Fz
ZSogYyA9IGtDYXNlczsgYy0+bGVmdDsgKytjKSB7CisgICAgRVhQRUNUX1RSVUUoYy0+ZXhwZWN0
ZWRfZWRpdHMgPT0KKyAgICAgICAgICAgICAgICBFZGl0c1RvU3RyaW5nKENhbGN1bGF0ZU9wdGlt
YWxFZGl0cyhDaGFyc1RvSW5kaWNlcyhjLT5sZWZ0KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyc1RvSW5kaWNlcyhjLT5yaWdodCkpKSkK
KyAgICAgICAgPDwgIkxlZnQgPCIgPDwgYy0+bGVmdCA8PCAiPiBSaWdodCA8IiA8PCBjLT5yaWdo
dCA8PCAiPiBFZGl0cyA8IgorICAgICAgICA8PCBFZGl0c1RvU3RyaW5nKENhbGN1bGF0ZU9wdGlt
YWxFZGl0cygKKyAgICAgICAgICAgICAgIENoYXJzVG9JbmRpY2VzKGMtPmxlZnQpLCBDaGFyc1Rv
SW5kaWNlcyhjLT5yaWdodCkpKSA8PCAiPiI7CisgICAgRVhQRUNUX1RSVUUoYy0+ZXhwZWN0ZWRf
ZGlmZiA9PSBDcmVhdGVVbmlmaWVkRGlmZihDaGFyc1RvTGluZXMoYy0+bGVmdCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyc1RvTGlu
ZXMoYy0+cmlnaHQpKSkKKyAgICAgICAgPDwgIkxlZnQgPCIgPDwgYy0+bGVmdCA8PCAiPiBSaWdo
dCA8IiA8PCBjLT5yaWdodCA8PCAiPiBEaWZmIDwiCisgICAgICAgIDw8IENyZWF0ZVVuaWZpZWRE
aWZmKENoYXJzVG9MaW5lcyhjLT5sZWZ0KSwgQ2hhcnNUb0xpbmVzKGMtPnJpZ2h0KSkKKyAgICAg
ICAgPDwgIj4iOworICB9Cit9CisKIC8vIFRlc3RzIEVxRmFpbHVyZSgpLCB1c2VkIGZvciBpbXBs
ZW1lbnRpbmcgKkVRKiBhc3NlcnRpb25zLgogVEVTVChBc3NlcnRpb25UZXN0LCBFcUZhaWx1cmUp
IHsKLSAgY29uc3QgU3RyaW5nIGZvb192YWwoIjUiKSwgYmFyX3ZhbCgiNiIpOwotICBjb25zdCBT
dHJpbmcgbXNnMSgKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZm9vX3ZhbCgiNSIpLCBiYXJfdmFsKCI2
Iik7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG1zZzEoCiAgICAgICBFcUZhaWx1cmUoImZvbyIsICJi
YXIiLCBmb29fdmFsLCBiYXJfdmFsLCBmYWxzZSkKICAgICAgIC5mYWlsdXJlX21lc3NhZ2UoKSk7
CiAgIEVYUEVDVF9TVFJFUSgKLSAgICAgICJWYWx1ZSBvZjogYmFyXG4iCi0gICAgICAiICBBY3R1
YWw6IDZcbiIKLSAgICAgICJFeHBlY3RlZDogZm9vXG4iCi0gICAgICAiV2hpY2ggaXM6IDUiLAor
ICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICIgIGZv
b1xuIgorICAgICAgIiAgICBXaGljaCBpczogNVxuIgorICAgICAgIiAgYmFyXG4iCisgICAgICAi
ICAgIFdoaWNoIGlzOiA2IiwKICAgICAgIG1zZzEuY19zdHIoKSk7CiAKLSAgY29uc3QgU3RyaW5n
IG1zZzIoCisgIGNvbnN0IHN0ZDo6c3RyaW5nIG1zZzIoCiAgICAgICBFcUZhaWx1cmUoImZvbyIs
ICI2IiwgZm9vX3ZhbCwgYmFyX3ZhbCwgZmFsc2UpCiAgICAgICAuZmFpbHVyZV9tZXNzYWdlKCkp
OwogICBFWFBFQ1RfU1RSRVEoCi0gICAgICAiVmFsdWUgb2Y6IDZcbiIKLSAgICAgICJFeHBlY3Rl
ZDogZm9vXG4iCi0gICAgICAiV2hpY2ggaXM6IDUiLAorICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5
IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICIgIGZvb1xuIgorICAgICAgIiAgICBXaGljaCBp
czogNVxuIgorICAgICAgIiAgNiIsCiAgICAgICBtc2cyLmNfc3RyKCkpOwogCi0gIGNvbnN0IFN0
cmluZyBtc2czKAorICBjb25zdCBzdGQ6OnN0cmluZyBtc2czKAogICAgICAgRXFGYWlsdXJlKCI1
IiwgImJhciIsIGZvb192YWwsIGJhcl92YWwsIGZhbHNlKQogICAgICAgLmZhaWx1cmVfbWVzc2Fn
ZSgpKTsKICAgRVhQRUNUX1NUUkVRKAotICAgICAgIlZhbHVlIG9mOiBiYXJcbiIKLSAgICAgICIg
IEFjdHVhbDogNlxuIgotICAgICAgIkV4cGVjdGVkOiA1IiwKKyAgICAgICJFeHBlY3RlZCBlcXVh
bGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4iCisgICAgICAiICA1XG4iCisgICAgICAiICBiYXJcbiIK
KyAgICAgICIgICAgV2hpY2ggaXM6IDYiLAogICAgICAgbXNnMy5jX3N0cigpKTsKIAotICBjb25z
dCBTdHJpbmcgbXNnNCgKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbXNnNCgKICAgICAgIEVxRmFpbHVy
ZSgiNSIsICI2IiwgZm9vX3ZhbCwgYmFyX3ZhbCwgZmFsc2UpLmZhaWx1cmVfbWVzc2FnZSgpKTsK
ICAgRVhQRUNUX1NUUkVRKAotICAgICAgIlZhbHVlIG9mOiA2XG4iCi0gICAgICAiRXhwZWN0ZWQ6
IDUiLAorICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAg
ICIgIDVcbiIKKyAgICAgICIgIDYiLAogICAgICAgbXNnNC5jX3N0cigpKTsKIAotICBjb25zdCBT
dHJpbmcgbXNnNSgKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbXNnNSgKICAgICAgIEVxRmFpbHVyZSgi
Zm9vIiwgImJhciIsCi0gICAgICAgICAgICAgICAgU3RyaW5nKCJcInhcIiIpLCBTdHJpbmcoIlwi
eVwiIiksCisgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoIlwieFwiIiksIHN0ZDo6c3RyaW5n
KCJcInlcIiIpLAogICAgICAgICAgICAgICAgIHRydWUpLmZhaWx1cmVfbWVzc2FnZSgpKTsKICAg
RVhQRUNUX1NUUkVRKAotICAgICAgIlZhbHVlIG9mOiBiYXJcbiIKLSAgICAgICIgIEFjdHVhbDog
XCJ5XCJcbiIKLSAgICAgICJFeHBlY3RlZDogZm9vIChpZ25vcmluZyBjYXNlKVxuIgotICAgICAg
IldoaWNoIGlzOiBcInhcIiIsCisgICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFs
dWVzOlxuIgorICAgICAgIiAgZm9vXG4iCisgICAgICAiICAgIFdoaWNoIGlzOiBcInhcIlxuIgor
ICAgICAgIiAgYmFyXG4iCisgICAgICAiICAgIFdoaWNoIGlzOiBcInlcIlxuIgorICAgICAgIkln
bm9yaW5nIGNhc2UiLAogICAgICAgbXNnNS5jX3N0cigpKTsKIH0KIAorVEVTVChBc3NlcnRpb25U
ZXN0LCBFcUZhaWx1cmVXaXRoRGlmZikgeworICBjb25zdCBzdGQ6OnN0cmluZyBsZWZ0KAorICAg
ICAgIjFcXG4yWFhYXFxuM1xcbjVcXG42XFxuN1xcbjhcXG45XFxuMTBcXG4xMVxcbjEyWFhYXFxu
MTNcXG4xNFxcbjE1Iik7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHJpZ2h0KAorICAgICAgIjFcXG4y
XFxuM1xcbjRcXG41XFxuNlxcbjdcXG44XFxuOVxcbjExXFxuMTJcXG4xM1xcbjE0Iik7CisgIGNv
bnN0IHN0ZDo6c3RyaW5nIG1zZzEoCisgICAgICBFcUZhaWx1cmUoImxlZnQiLCAicmlnaHQiLCBs
ZWZ0LCByaWdodCwgZmFsc2UpLmZhaWx1cmVfbWVzc2FnZSgpKTsKKyAgRVhQRUNUX1NUUkVRKAor
ICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICIgIGxl
ZnRcbiIKKyAgICAgICIgICAgV2hpY2ggaXM6ICIKKyAgICAgICIxXFxuMlhYWFxcbjNcXG41XFxu
NlxcbjdcXG44XFxuOVxcbjEwXFxuMTFcXG4xMlhYWFxcbjEzXFxuMTRcXG4xNVxuIgorICAgICAg
IiAgcmlnaHRcbiIKKyAgICAgICIgICAgV2hpY2ggaXM6IDFcXG4yXFxuM1xcbjRcXG41XFxuNlxc
bjdcXG44XFxuOVxcbjExXFxuMTJcXG4xM1xcbjE0XG4iCisgICAgICAiV2l0aCBkaWZmOlxuQEAg
LTEsNSArMSw2IEBAXG4gMVxuLTJYWFhcbisyXG4gM1xuKzRcbiA1XG4gNlxuIgorICAgICAgIkBA
IC03LDggKzgsNiBAQFxuIDhcbiA5XG4tMTBcbiAxMVxuLTEyWFhYXG4rMTJcbiAxM1xuIDE0XG4t
MTVcbiIsCisgICAgICBtc2cxLmNfc3RyKCkpOworfQorCiAvLyBUZXN0cyBBcHBlbmRVc2VyTWVz
c2FnZSgpLCB1c2VkIGZvciBpbXBsZW1lbnRpbmcgdGhlICpFUSogbWFjcm9zLgogVEVTVChBc3Nl
cnRpb25UZXN0LCBBcHBlbmRVc2VyTWVzc2FnZSkgewotICBjb25zdCBTdHJpbmcgZm9vKCJmb28i
KTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZm9vKCJmb28iKTsKIAogICBNZXNzYWdlIG1zZzsKICAg
RVhQRUNUX1NUUkVRKCJmb28iLApAQCAtMzQ3Nyw3ICszNjMyLDcgQEAgVEVTVChBc3NlcnRpb25U
ZXN0LCBBcHBlbmRVc2VyTWVzc2FnZSkgewogCiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBTaWxl
bmNlcyB3YXJuaW5nczogIkNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZSIsICJVbnJlYWNoYWJsZSBj
b2RlIgotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCisjIHByYWdtYSBvcHRpb24g
cHVzaCAtdy1jY2MgLXctcmNoCiAjZW5kaWYKIAogLy8gVGVzdHMgQVNTRVJUX1RSVUUuCkBAIC0z
NDkwLDggKzM2NDUsOCBAQCBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9UUlVFKSB7CiAvLyBU
ZXN0cyBBU1NFUlRfVFJVRShwcmVkaWNhdGUpIGZvciBwcmVkaWNhdGVzIHJldHVybmluZyBBc3Nl
cnRpb25SZXN1bHQuCiBURVNUKEFzc2VydGlvblRlc3QsIEFzc2VydFRydWVXaXRoQXNzZXJ0aW9u
UmVzdWx0KSB7CiAgIEFTU0VSVF9UUlVFKFJlc3VsdElzRXZlbigyKSk7Ci0jaWYgIWRlZmluZWQo
X19CT1JMQU5EQ19fKSB8fCBfX0JPUkxBTkRDX18gPj0gMHg2MDAKLSAgLy8gSUNFJ3MgaW4gQysr
QnVpbGRlciAyMDA3LgorI2lmbmRlZiBfX0JPUkxBTkRDX18KKyAgLy8gSUNFJ3MgaW4gQysrQnVp
bGRlci4KICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1RSVUUoUmVzdWx0SXNFdmVuKDMp
KSwKICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBSZXN1bHRJc0V2ZW4oMylcbiIK
ICAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBmYWxzZSAoMyBpcyBvZGQpXG4iCkBA
IC0zNTE2LDggKzM2NzEsOCBAQCBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9GQUxTRSkgewog
Ly8gVGVzdHMgQVNTRVJUX0ZBTFNFKHByZWRpY2F0ZSkgZm9yIHByZWRpY2F0ZXMgcmV0dXJuaW5n
IEFzc2VydGlvblJlc3VsdC4KIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0RmFsc2VXaXRoQXNz
ZXJ0aW9uUmVzdWx0KSB7CiAgIEFTU0VSVF9GQUxTRShSZXN1bHRJc0V2ZW4oMykpOwotI2lmICFk
ZWZpbmVkKF9fQk9STEFORENfXykgfHwgX19CT1JMQU5EQ19fID49IDB4NjAwCi0gIC8vIElDRSdz
IGluIEMrK0J1aWxkZXIgMjAwNy4KKyNpZm5kZWYgX19CT1JMQU5EQ19fCisgIC8vIElDRSdzIGlu
IEMrK0J1aWxkZXIuCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShSZXN1bHRJ
c0V2ZW4oMikpLAogICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IFJlc3VsdElzRXZl
bigyKVxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IHRydWUgKDIgaXMgZXZl
bilcbiIKQEAgLTM1MzEsOCArMzY4Niw4IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0RmFs
c2VXaXRoQXNzZXJ0aW9uUmVzdWx0KSB7CiB9CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KLS8vIFJl
c3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXBy
ZXNzZWQgdGhlbQotI3ByYWdtYSBvcHRpb24gcG9wCisvLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRl
ciBwcmV2aW91cyAiI3ByYWdtYSBvcHRpb24gcHVzaCIgc3VwcHJlc3NlZCB0aGVtCisjIHByYWdt
YSBvcHRpb24gcG9wCiAjZW5kaWYKIAogLy8gVGVzdHMgdXNpbmcgQVNTRVJUX0VRIG9uIGRvdWJs
ZSB2YWx1ZXMuICBUaGUgcHVycG9zZSBpcyB0byBtYWtlCkBAIC0zNTUxLDkgKzM3MDYsMTAgQEAg
VEVTVChFeHBlY3RUZXN0LCBBU1NFUlRfRVFfRG91YmxlKSB7CiBURVNUKEFzc2VydGlvblRlc3Qs
IEFTU0VSVF9FUSkgewogICBBU1NFUlRfRVEoNSwgMiArIDMpOwogICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShBU1NFUlRfRVEoNSwgMiozKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9m
OiAyKjNcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiA2XG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgICJFeHBlY3RlZDogNSIpOworICAgICAgICAgICAgICAgICAgICAgICAi
RXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAiICA1XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgIDIqM1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICAiICAgIFdoaWNoIGlzOiA2Iik7CiB9CiAKIC8vIFRlc3RzIEFTU0VSVF9F
UShOVUxMLCBwb2ludGVyKS4KQEAgLTM1NjEsNyArMzcxNyw3IEBAIFRFU1QoQXNzZXJ0aW9uVGVz
dCwgQVNTRVJUX0VRKSB7CiBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9FUV9OVUxMKSB7CiAg
IC8vIEEgc3VjY2Vzcy4KICAgY29uc3QgY2hhciogcCA9IE5VTEw7Ci0gIC8vIFNvbWUgb2xkZXIg
R0NDIHZlcnNpb25zIG1heSBpc3N1ZSBhIHNwdXJpb3VzIHdhcmluZyBpbiB0aGlzIG9yIHRoZSBu
ZXh0CisgIC8vIFNvbWUgb2xkZXIgR0NDIHZlcnNpb25zIG1heSBpc3N1ZSBhIHNwdXJpb3VzIHdh
cm5pbmcgaW4gdGhpcyBvciB0aGUgbmV4dAogICAvLyBhc3NlcnRpb24gc3RhdGVtZW50LiBUaGlz
IHdhcm5pbmcgc2hvdWxkIG5vdCBiZSBzdXBwcmVzc2VkIHdpdGgKICAgLy8gc3RhdGljX2Nhc3Qg
c2luY2UgdGhlIHRlc3QgdmVyaWZpZXMgdGhlIGFiaWxpdHkgdG8gdXNlIGJhcmUgTlVMTCBhcyB0
aGUKICAgLy8gZXhwZWN0ZWQgcGFyYW1ldGVyIHRvIHRoZSBtYWNyby4KQEAgLTM1NzAsNyArMzcy
Niw3IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0VRX05VTEwpIHsKICAgLy8gQSBmYWls
dXJlLgogICBzdGF0aWMgaW50IG4gPSAwOwogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRf
RVEoTlVMTCwgJm4pLAotICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6ICZuXG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIiAgJm5cbiAgICBXaGljaCBpczoiKTsKIH0KICNlbmRp
ZiAgLy8gR1RFU1RfQ0FOX0NPTVBBUkVfTlVMTAogCkBAIC0zNTg2LDcgKzM3NDIsNyBAQCBURVNU
KEV4cGVjdFRlc3QsIEFTU0VSVF9FUV8wKSB7CiAKICAgLy8gQSBmYWlsdXJlLgogICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoMCwgNS42KSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IkV4cGVjdGVkOiAwIik7CisgICAgICAgICAgICAgICAgICAgICAgICIgIDBcbiAgNS42Iik7CiB9
CiAKIC8vIFRlc3RzIEFTU0VSVF9ORS4KQEAgLTM2MzUsMTMgKzM3OTEsMTQgQEAgdm9pZCBUaHJv
d05vdGhpbmcoKSB7fQogVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfVEhST1cpIHsKICAgQVNT
RVJUX1RIUk9XKFRocm93QW5JbnRlZ2VyKCksIGludCk7CiAKLSNpZm5kZWYgX19CT1JMQU5EQ19f
CisjIGlmbmRlZiBfX0JPUkxBTkRDX18KKwogICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcg
YW5kIDIwMDkuCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKAogICAgICAgQVNTRVJUX1RIUk9XKFRo
cm93QW5JbnRlZ2VyKCksIGJvb2wpLAogICAgICAgIkV4cGVjdGVkOiBUaHJvd0FuSW50ZWdlcigp
IHRocm93cyBhbiBleGNlcHRpb24gb2YgdHlwZSBib29sLlxuIgogICAgICAgIiAgQWN0dWFsOiBp
dCB0aHJvd3MgYSBkaWZmZXJlbnQgdHlwZS4iKTsKLSNlbmRpZgorIyBlbmRpZgogCiAgIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKAogICAgICAgQVNTRVJUX1RIUk9XKFRocm93Tm90aGluZygpLCBib29s
KSwKQEAgLTM2NzIsNyArMzgyOSw4IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0FOWV9U
SFJPVykgewogLy8gY29tcGlsZS4KIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0UHJlY2VkZW5j
ZSkgewogICBBU1NFUlRfRVEoMSA8IDIsIHRydWUpOwotICBBU1NFUlRfRVEodHJ1ZSAmJiBmYWxz
ZSwgZmFsc2UpOworICBib29sIGZhbHNlX3ZhbHVlID0gZmFsc2U7CisgIEFTU0VSVF9FUSh0cnVl
ICYmIGZhbHNlX3ZhbHVlLCBmYWxzZSk7CiB9CiAKIC8vIEEgc3Vicm91dGluZSB1c2VkIGJ5IHRo
ZSBmb2xsb3dpbmcgdGVzdC4KQEAgLTM2ODMsNyArMzg0MSw3IEBAIHZvaWQgVGVzdEVxMShpbnQg
eCkgewogLy8gVGVzdHMgY2FsbGluZyBhIHRlc3Qgc3Vicm91dGluZSB0aGF0J3Mgbm90IHBhcnQg
b2YgYSBmaXh0dXJlLgogVEVTVChBc3NlcnRpb25UZXN0LCBOb25GaXh0dXJlU3Vicm91dGluZSkg
ewogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShUZXN0RXExKDIpLAotICAgICAgICAgICAgICAgICAg
ICAgICAiVmFsdWUgb2Y6IHgiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgeFxuICAgIFdo
aWNoIGlzOiAyIik7CiB9CiAKIC8vIEFuIHVuY29weWFibGUgY2xhc3MuCkBAIC0zNzMyLDcgKzM4
OTAsOCBAQCBURVNUKEFzc2VydGlvblRlc3QsIEFzc2VydFdvcmtzV2l0aFVuY29weWFibGVPYmpl
Y3QpIHsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoVGVzdEFzc2VydE5vblBvc2l0aXZlKCksCiAg
ICAgIklzUG9zaXRpdmVVbmNvcHlhYmxlKHkpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmVcbnkg
ZXZhbHVhdGVzIHRvIC0xIik7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKFRlc3RBc3NlcnRFcXVh
bHNVbmNvcHlhYmxlKCksCi0gICAgIlZhbHVlIG9mOiB5XG4gIEFjdHVhbDogLTFcbkV4cGVjdGVk
OiB4XG5XaGljaCBpczogNSIpOworICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZXF1
YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAiICB4XG4g
ICAgV2hpY2ggaXM6IDVcbiAgeVxuICAgIFdoaWNoIGlzOiAtMSIpOwogfQogCiAvLyBUZXN0cyB0
aGF0IHVuY29weWFibGUgb2JqZWN0cyBjYW4gYmUgdXNlZCBpbiBleHBlY3RzLgpAQCAtMzc0NCw1
NyArMzkwMyw5MCBAQCBURVNUKEFzc2VydGlvblRlc3QsIEV4cGVjdFdvcmtzV2l0aFVuY29weWFi
bGVPYmplY3QpIHsKICAgICAiSXNQb3NpdGl2ZVVuY29weWFibGUoeSkgZXZhbHVhdGVzIHRvIGZh
bHNlLCB3aGVyZVxueSBldmFsdWF0ZXMgdG8gLTEiKTsKICAgRVhQRUNUX0VRKHgsIHgpOwogICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoeCwgeSksCi0gICAgIlZhbHVlIG9mOiB5
XG4gIEFjdHVhbDogLTFcbkV4cGVjdGVkOiB4XG5XaGljaCBpczogNSIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAiICB4XG4gICAgV2hpY2ggaXM6IDVcbiAgeVxuICAgIFdo
aWNoIGlzOiAtMSIpOwogfQogCitlbnVtIE5hbWVkRW51bSB7CisgIGtFMSA9IDAsCisgIGtFMiA9
IDEKK307CisKK1RFU1QoQXNzZXJ0aW9uVGVzdCwgTmFtZWRFbnVtKSB7CisgIEVYUEVDVF9FUShr
RTEsIGtFMSk7CisgIEVYUEVDVF9MVChrRTEsIGtFMik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEVYUEVDVF9FUShrRTEsIGtFMiksICJXaGljaCBpczogMCIpOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfRVEoa0UxLCBrRTIpLCAiV2hpY2ggaXM6IDEiKTsKK30KIAogLy8g
VGhlIHZlcnNpb24gb2YgZ2NjIHVzZWQgaW4gWENvZGUgMi4yIGhhcyBhIGJ1ZyBhbmQgZG9lc24n
dCBhbGxvdwogLy8gYW5vbnltb3VzIGVudW1zIGluIGFzc2VydGlvbnMuICBUaGVyZWZvcmUgdGhl
IGZvbGxvd2luZyB0ZXN0IGlzIG5vdAogLy8gZG9uZSBvbiBNYWMuCi0vLyBTdW4gU3R1ZGlvIGFs
c28gcmVqZWN0cyB0aGlzIGNvZGUuCi0jaWYgIUdURVNUX09TX01BQyAmJiAhZGVmaW5lZChfX1NV
TlBST19DQykKKy8vIFN1biBTdHVkaW8gYW5kIEhQIGFDQyBhbHNvIHJlamVjdCB0aGlzIGNvZGUu
CisjaWYgIUdURVNUX09TX01BQyAmJiAhZGVmaW5lZChfX1NVTlBST19DQykgJiYgIWRlZmluZWQo
X19IUF9hQ0MpCiAKIC8vIFRlc3RzIHVzaW5nIGFzc2VydGlvbnMgd2l0aCBhbm9ueW1vdXMgZW51
bXMuCiBlbnVtIHsKLSAgQ0FTRV9BID0gLTEsCi0jaWYgR1RFU1RfT1NfTElOVVgKKyAga0Nhc2VB
ID0gLTEsCisKKyMgaWYgR1RFU1RfT1NfTElOVVgKKwogICAvLyBXZSB3YW50IHRvIHRlc3QgdGhl
IGNhc2Ugd2hlcmUgdGhlIHNpemUgb2YgdGhlIGFub255bW91cyBlbnVtIGlzCiAgIC8vIGxhcmdl
ciB0aGFuIHNpemVvZihpbnQpLCB0byBtYWtlIHN1cmUgb3VyIGltcGxlbWVudGF0aW9uIG9mIHRo
ZQogICAvLyBhc3NlcnRpb25zIGRvZXNuJ3QgdHJ1bmNhdGUgdGhlIGVudW1zLiAgSG93ZXZlciwg
TVNWQwogICAvLyAoaW5jb3JyZWN0bHkpIGRvZXNuJ3QgYWxsb3cgYW4gZW51bSB2YWx1ZSB0byBl
eGNlZWQgdGhlIHJhbmdlIG9mCiAgIC8vIGFuIGludCwgc28gdGhpcyBoYXMgdG8gYmUgY29uZGl0
aW9uYWxseSBjb21waWxlZC4KICAgLy8KLSAgLy8gT24gTGludXgsIENBU0VfQiBhbmQgQ0FTRV9B
IGhhdmUgdGhlIHNhbWUgdmFsdWUgd2hlbiB0cnVuY2F0ZWQgdG8KKyAgLy8gT24gTGludXgsIGtD
YXNlQiBhbmQga0Nhc2VBIGhhdmUgdGhlIHNhbWUgdmFsdWUgd2hlbiB0cnVuY2F0ZWQgdG8KICAg
Ly8gaW50IHNpemUuICBXZSB3YW50IHRvIHRlc3Qgd2hldGhlciB0aGlzIHdpbGwgY29uZnVzZSB0
aGUKICAgLy8gYXNzZXJ0aW9ucy4KLSAgQ0FTRV9CID0gdGVzdGluZzo6aW50ZXJuYWw6OmtNYXhC
aWdnZXN0SW50LAotI2Vsc2UKLSAgQ0FTRV9CID0gSU5UX01BWCwKLSNlbmRpZiAgLy8gR1RFU1Rf
T1NfTElOVVgKKyAga0Nhc2VCID0gdGVzdGluZzo6aW50ZXJuYWw6OmtNYXhCaWdnZXN0SW50LAor
CisjIGVsc2UKKworICBrQ2FzZUIgPSBJTlRfTUFYLAorCisjIGVuZGlmICAvLyBHVEVTVF9PU19M
SU5VWAorCisgIGtDYXNlQyA9IDQyCiB9OwogCiBURVNUKEFzc2VydGlvblRlc3QsIEFub255bW91
c0VudW0pIHsKLSNpZiBHVEVTVF9PU19MSU5VWAotICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50
PihDQVNFX0EpLCBzdGF0aWNfY2FzdDxpbnQ+KENBU0VfQikpOwotI2VuZGlmICAvLyBHVEVTVF9P
U19MSU5VWAotCi0gIEVYUEVDVF9FUShDQVNFX0EsIENBU0VfQSk7Ci0gIEVYUEVDVF9ORShDQVNF
X0EsIENBU0VfQik7Ci0gIEVYUEVDVF9MVChDQVNFX0EsIENBU0VfQik7Ci0gIEVYUEVDVF9MRShD
QVNFX0EsIENBU0VfQik7Ci0gIEVYUEVDVF9HVChDQVNFX0IsIENBU0VfQSk7Ci0gIEVYUEVDVF9H
RShDQVNFX0EsIENBU0VfQSk7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HRShD
QVNFX0EsIENBU0VfQiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoQ0FTRV9BKSA+PSAo
Q0FTRV9CKSIpOwotCi0gIEFTU0VSVF9FUShDQVNFX0EsIENBU0VfQSk7Ci0gIEFTU0VSVF9ORShD
QVNFX0EsIENBU0VfQik7Ci0gIEFTU0VSVF9MVChDQVNFX0EsIENBU0VfQik7Ci0gIEFTU0VSVF9M
RShDQVNFX0EsIENBU0VfQik7Ci0gIEFTU0VSVF9HVChDQVNFX0IsIENBU0VfQSk7Ci0gIEFTU0VS
VF9HRShDQVNFX0EsIENBU0VfQSk7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShD
QVNFX0EsIENBU0VfQiksCi0gICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogQ0FTRV9C
Iik7CisjIGlmIEdURVNUX09TX0xJTlVYCisKKyAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGludD4o
a0Nhc2VBKSwgc3RhdGljX2Nhc3Q8aW50PihrQ2FzZUIpKTsKKworIyBlbmRpZiAgLy8gR1RFU1Rf
T1NfTElOVVgKKworICBFWFBFQ1RfRVEoa0Nhc2VBLCBrQ2FzZUEpOworICBFWFBFQ1RfTkUoa0Nh
c2VBLCBrQ2FzZUIpOworICBFWFBFQ1RfTFQoa0Nhc2VBLCBrQ2FzZUIpOworICBFWFBFQ1RfTEUo
a0Nhc2VBLCBrQ2FzZUIpOworICBFWFBFQ1RfR1Qoa0Nhc2VCLCBrQ2FzZUEpOworICBFWFBFQ1Rf
R0Uoa0Nhc2VBLCBrQ2FzZUEpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR0Uo
a0Nhc2VBLCBrQ2FzZUIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiKGtDYXNlQSkgPj0g
KGtDYXNlQikiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dFKGtDYXNlQSwg
a0Nhc2VDKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIi0xIHZzIDQyIik7CisKKyAgQVNT
RVJUX0VRKGtDYXNlQSwga0Nhc2VBKTsKKyAgQVNTRVJUX05FKGtDYXNlQSwga0Nhc2VCKTsKKyAg
QVNTRVJUX0xUKGtDYXNlQSwga0Nhc2VCKTsKKyAgQVNTRVJUX0xFKGtDYXNlQSwga0Nhc2VCKTsK
KyAgQVNTRVJUX0dUKGtDYXNlQiwga0Nhc2VBKTsKKyAgQVNTRVJUX0dFKGtDYXNlQSwga0Nhc2VB
KTsKKworIyBpZm5kZWYgX19CT1JMQU5EQ19fCisKKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4K
KyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKGtDYXNlQSwga0Nhc2VCKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIiAga0Nhc2VCXG4gICAgV2hpY2ggaXM6ICIpOworICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoa0Nhc2VBLCBrQ2FzZUMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAiXG4gICAgV2hpY2ggaXM6IDQyIik7CisjIGVuZGlmCisKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoQVNTRVJUX0VRKGtDYXNlQSwga0Nhc2VDKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIlxuICAgIFdoaWNoIGlzOiAtMSIpOwogfQogCiAjZW5kaWYgIC8vICFHVEVTVF9PU19NQUMg
JiYgIWRlZmluZWQoX19TVU5QUk9fQ0MpCkBAIC0zODQwLDI0ICs0MDMyLDI2IEBAIFRFU1QoSFJF
U1VMVEFzc2VydGlvblRlc3QsIEVYUEVDVF9IUkVTVUxUX0ZBSUxFRCkgewogCiAgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChPa0hSRVNVTFRTdWNjZXNzKCkp
LAogICAgICJFeHBlY3RlZDogKE9rSFJFU1VMVFN1Y2Nlc3MoKSkgZmFpbHMuXG4iCi0gICAgIiAg
QWN0dWFsOiAweDAwMDAwMDAwIik7CisgICAgIiAgQWN0dWFsOiAweDAiKTsKICAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0hSRVNVTFRfRkFJTEVEKEZhbHNlSFJFU1VMVFN1Y2Nlc3Mo
KSksCiAgICAgIkV4cGVjdGVkOiAoRmFsc2VIUkVTVUxUU3VjY2VzcygpKSBmYWlscy5cbiIKLSAg
ICAiICBBY3R1YWw6IDB4MDAwMDAwMDEiKTsKKyAgICAiICBBY3R1YWw6IDB4MSIpOwogfQogCiBU
RVNUKEhSRVNVTFRBc3NlcnRpb25UZXN0LCBBU1NFUlRfSFJFU1VMVF9GQUlMRUQpIHsKICAgQVNT
RVJUX0hSRVNVTFRfRkFJTEVEKEVfVU5FWFBFQ1RFRCk7CiAKLSNpZm5kZWYgX19CT1JMQU5EQ19f
CisjIGlmbmRlZiBfX0JPUkxBTkRDX18KKwogICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcg
YW5kIDIwMDkuCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChP
a0hSRVNVTFRTdWNjZXNzKCkpLAogICAgICJFeHBlY3RlZDogKE9rSFJFU1VMVFN1Y2Nlc3MoKSkg
ZmFpbHMuXG4iCi0gICAgIiAgQWN0dWFsOiAweDAwMDAwMDAwIik7Ci0jZW5kaWYKKyAgICAiICBB
Y3R1YWw6IDB4MCIpOworIyBlbmRpZgorCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9I
UkVTVUxUX0ZBSUxFRChGYWxzZUhSRVNVTFRTdWNjZXNzKCkpLAogICAgICJFeHBlY3RlZDogKEZh
bHNlSFJFU1VMVFN1Y2Nlc3MoKSkgZmFpbHMuXG4iCi0gICAgIiAgQWN0dWFsOiAweDAwMDAwMDAx
Iik7CisgICAgIiAgQWN0dWFsOiAweDEiKTsKIH0KIAogLy8gVGVzdHMgdGhhdCBzdHJlYW1pbmcg
dG8gdGhlIEhSRVNVTFQgbWFjcm9zIHdvcmtzLgpAQCAtMzg3MSwxMiArNDA2NSwxMyBAQCBURVNU
KEhSRVNVTFRBc3NlcnRpb25UZXN0LCBTdHJlYW1pbmcpIHsKICAgICAgIEVYUEVDVF9IUkVTVUxU
X1NVQ0NFRURFRChFX1VORVhQRUNURUQpIDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKICAgICAgICJl
eHBlY3RlZCBmYWlsdXJlIik7CiAKLSNpZm5kZWYgX19CT1JMQU5EQ19fCisjIGlmbmRlZiBfX0JP
UkxBTkRDX18KKwogICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcgYW5kIDIwMDkuCiAgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKAogICAgICAgQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKEVfVU5F
WFBFQ1RFRCkgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAogICAgICAgImV4cGVjdGVkIGZhaWx1cmUi
KTsKLSNlbmRpZgorIyBlbmRpZgogCiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAogICAgICAg
RVhQRUNUX0hSRVNVTFRfRkFJTEVEKFNfT0spIDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKQEAgLTM4
OTEsNyArNDA4Niw3IEBAIFRFU1QoSFJFU1VMVEFzc2VydGlvblRlc3QsIFN0cmVhbWluZykgewog
CiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBTaWxlbmNlcyB3YXJuaW5nczogIkNvbmRpdGlvbiBp
cyBhbHdheXMgdHJ1ZSIsICJVbnJlYWNoYWJsZSBjb2RlIgotI3ByYWdtYSBvcHRpb24gcHVzaCAt
dy1jY2MgLXctcmNoCisjIHByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCiAjZW5kaWYK
IAogLy8gVGVzdHMgdGhhdCB0aGUgYXNzZXJ0aW9uIG1hY3JvcyBiZWhhdmUgbGlrZSBzaW5nbGUg
c3RhdGVtZW50cy4KQEAgLTQwMDgsNyArNDIwMyw3IEBAIFRFU1QoQXNzZXJ0aW9uU3ludGF4VGVz
dCwgV29ya3NXaXRoU3dpdGNoKSB7CiAjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKIAogdm9pZCBU
aHJvd0FTdHJpbmcoKSB7Ci0gICAgdGhyb3cgIlN0cmluZyI7CisgICAgdGhyb3cgInN0ZDo6c3Ry
aW5nIjsKIH0KIAogLy8gVGVzdCB0aGF0IHRoZSBleGNlcHRpb24gYXNzZXJ0aW9uIG1hY3JvcyBj
b21waWxlIGFuZCB3b3JrIHdpdGggY29uc3QKQEAgLTQwNjAsOCArNDI1NSwxMDkgQEAgVEVTVChT
dWNjZXNzZnVsQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1NUUikgewogCiBuYW1lc3BhY2UgewogCisv
LyBUZXN0cyB0aGUgbWVzc2FnZSBzdHJlYW1pbmcgdmFyaWF0aW9uIG9mIGFzc2VydGlvbnMuCisK
K1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBFWFBFQ1QpIHsKKyAgRVhQRUNUX0VRKDEs
IDEpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEVYUEVDVF9ORSgxLCAxKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMS4iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZSAjMSIpOworICBFWFBFQ1RfTEUoMSwgMikg
PDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX0xUKDEsIDApIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJlICMyLiIpOworICBFWFBFQ1RfR0UoMSwgMCkgPDwg
IlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNU
X0dUKDEsIDIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzLiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJFeHBlY3RlZCBmYWlsdXJlICMzLiIpOworCisgIEVYUEVDVF9TVFJFUSgiMSIsICIx
IikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX1NUUk5FKCIxIiwgIjEiKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNC4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZSAjNC4iKTsKKyAgRVhQRUNUX1NU
UkNBU0VFUSgiYSIsICJBIikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1NUUkNBU0VORSgiYSIsICJBIikgPDwgIkV4cGVjdGVkIGZh
aWx1cmUgIzUuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1cmUg
IzUuIik7CisKKyAgRVhQRUNUX0ZMT0FUX0VRKDEsIDEpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVk
LiI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ET1VCTEVfRVEoMSwgMS4yKSA8
PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhw
ZWN0ZWQgZmFpbHVyZSAjNi4iKTsKKyAgRVhQRUNUX05FQVIoMSwgMS4xLCAwLjIpIDw8ICJUaGlz
IHNob3VsZCBzdWNjZWVkLiI7Cit9CisKK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBB
U1NFUlQpIHsKKyAgQVNTRVJUX0VRKDEsIDEpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7Cisg
IEFTU0VSVF9ORSgxLCAyKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfTEUo
MSwgMikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJUX0xUKDEsIDIpIDw8ICJU
aGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9HRSgxLCAwKSA8PCAiVGhpcyBzaG91bGQg
c3VjY2VlZC4iOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfR1QoMSwgMikgPDwgIkV4
cGVjdGVkIGZhaWx1cmUuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1
cmUuIik7Cit9CisKK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBBU1NFUlRfU1RSKSB7
CisgIEFTU0VSVF9TVFJFUSgiMSIsICIxIikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAg
QVNTRVJUX1NUUk5FKCIxIiwgIjIiKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NF
UlRfU1RSQ0FTRUVRKCJhIiwgIkEiKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfU1RSQ0FTRU5FKCJhIiwgIkEiKSA8PCAiRXhwZWN0ZWQg
ZmFpbHVyZS4iLAorICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZS4iKTsK
K30KKworVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVF9GTE9BVElORykgewor
ICBBU1NFUlRfRkxPQVRfRVEoMSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNT
RVJUX0RPVUJMRV9FUSgxLCAxKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShBU1NFUlRfTkVBUigxLDEuMiwgMC4xKSA8PCAiRXhwZWN0IGZhaWx1cmUu
IiwgIC8vIE5PTElOVAorICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0IGZhaWx1cmUuIik7
CisgIC8vIFRvIHdvcmsgYXJvdW5kIGEgYnVnIGluIGdjYyAyLjk1LjAsIHRoZXJlIGlzIGludGVu
dGlvbmFsbHkgbm8KKyAgLy8gc3BhY2UgYWZ0ZXIgdGhlIGZpcnN0IGNvbW1hIGluIHRoZSBwcmV2
aW91cyBzdGF0ZW1lbnQuCit9CisKKy8vIFRlc3RzIHVzaW5nIEFTU0VSVF9GQUxTRSB3aXRoIGEg
c3RyZWFtZWQgbWVzc2FnZS4KK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBBU1NFUlRf
RkFMU0UpIHsKKyAgQVNTRVJUX0ZBTFNFKGZhbHNlKSA8PCAiVGhpcyBzaG91bGRuJ3QgZmFpbC4i
OworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfRkFMU0Uo
dHJ1ZSkgPDwgIkV4cGVjdGVkIGZhaWx1cmU6ICIgPDwgMiA8PCAiID4gIiA8PCAxCisgICAgICAg
ICAgICAgICAgICAgICAgIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdHJ1ZTsKKyAgfSwgIkV4cGVj
dGVkIGZhaWx1cmUiKTsKK30KKworLy8gVGVzdHMgdXNpbmcgRkFJTCB3aXRoIGEgc3RyZWFtZWQg
bWVzc2FnZS4KK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBGQUlMKSB7CisgIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKEZBSUwoKSA8PCAwLAorICAgICAgICAgICAgICAgICAgICAgICAiMCIp
OworfQorCisvLyBUZXN0cyB1c2luZyBTVUNDRUVEIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgor
VEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIFNVQ0NFRUQpIHsKKyAgU1VDQ0VFRCgpIDw8
ICJTdWNjZXNzID09ICIgPDwgMTsKK30KKworLy8gVGVzdHMgdXNpbmcgQVNTRVJUX1RSVUUgd2l0
aCBhIHN0cmVhbWVkIG1lc3NhZ2UuCitURVNUKEFzc2VydGlvbldpdGhNZXNzYWdlVGVzdCwgQVNT
RVJUX1RSVUUpIHsKKyAgQVNTRVJUX1RSVUUodHJ1ZSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQu
IjsKKyAgQVNTRVJUX1RSVUUodHJ1ZSkgPDwgdHJ1ZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX1RSVUUoZmFsc2UpIDw8IHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIgKj4oTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8Y2hh
ciAqPihOVUxMKTsKKyAgfSwgIihudWxsKShudWxsKSIpOworfQorCisjaWYgR1RFU1RfT1NfV0lO
RE9XUworLy8gVGVzdHMgdXNpbmcgd2lkZSBzdHJpbmdzIGluIGFzc2VydGlvbiBtZXNzYWdlcy4K
K1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBXaWRlU3RyaW5nTWVzc2FnZSkgeworICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfVFJVRShmYWxz
ZSkgPDwgTCJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuXHg4MTE5IjsKKyAgfSwgIlRoaXMgZmFp
bHVyZSBpcyBleHBlY3RlZC4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
CisgICAgQVNTRVJUX0VRKDEsIDIpIDw8ICJUaGlzIGZhaWx1cmUgaXMgIgorICAgICAgICAgICAg
ICAgICAgICA8PCBMImV4cGVjdGVkIHRvby5ceDgxMjAiOworICB9LCAiVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkIHRvby4iKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCiAvLyBU
ZXN0cyBFWFBFQ1RfVFJVRS4KIFRFU1QoRXhwZWN0VGVzdCwgRVhQRUNUX1RSVUUpIHsKKyAgRVhQ
RUNUX1RSVUUodHJ1ZSkgPDwgIkludGVudGlvbmFsIHN1Y2Nlc3MiOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfVFJVRShmYWxzZSkgPDwgIkludGVudGlvbmFsIGZhaWx1cmUgIzEu
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkludGVudGlvbmFsIGZhaWx1cmUgIzEuIik7
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9UUlVFKGZhbHNlKSA8PCAiSW50ZW50
aW9uYWwgZmFpbHVyZSAjMi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9u
YWwgZmFpbHVyZSAjMi4iKTsKICAgRVhQRUNUX1RSVUUoMiA+IDEpOyAgLy8gTk9MSU5UCiAgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9UUlVFKDIgPCAxKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlZhbHVlIG9mOiAyIDwgMVxuIgpAQCAtNDA4NSw5ICs0MzgxLDE0IEBAIFRF
U1QoRXhwZWN0VGVzdCwgRXhwZWN0VHJ1ZVdpdGhBc3NlcnRpb25SZXN1bHQpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiB0cnVlIik7CiB9CiAKLS8vIFRlc3RzIEVYUEVD
VF9GQUxTRS4KKy8vIFRlc3RzIEVYUEVDVF9GQUxTRSB3aXRoIGEgc3RyZWFtZWQgbWVzc2FnZS4K
IFRFU1QoRXhwZWN0VGVzdCwgRVhQRUNUX0ZBTFNFKSB7CiAgIEVYUEVDVF9GQUxTRSgyIDwgMSk7
ICAvLyBOT0xJTlQKKyAgRVhQRUNUX0ZBTFNFKGZhbHNlKSA8PCAiSW50ZW50aW9uYWwgc3VjY2Vz
cyI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GQUxTRSh0cnVlKSA8PCAiSW50
ZW50aW9uYWwgZmFpbHVyZSAjMS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50
aW9uYWwgZmFpbHVyZSAjMS4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0ZB
TFNFKHRydWUpIDw8ICJJbnRlbnRpb25hbCBmYWlsdXJlICMyLiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICJJbnRlbnRpb25hbCBmYWlsdXJlICMyLiIpOwogICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShFWFBFQ1RfRkFMU0UoMiA+IDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAi
VmFsdWUgb2Y6IDIgPiAxXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDog
dHJ1ZVxuIgpAQCAtNDExMSwxNyArNDQxMiwxOCBAQCBURVNUKEV4cGVjdFRlc3QsIEV4cGVjdEZh
bHNlV2l0aEFzc2VydGlvblJlc3VsdCkgewogfQogCiAjaWZkZWYgX19CT1JMQU5EQ19fCi0vLyBS
ZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2aW91cyAiI3ByYWdtYSBvcHRpb24gcHVzaCIgc3Vw
cmVzc2VkIHRoZW0KLSNwcmFnbWEgb3B0aW9uIHBvcAorLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0
ZXIgcHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHByZXNzZWQgdGhlbQorIyBwcmFn
bWEgb3B0aW9uIHBvcAogI2VuZGlmCiAKIC8vIFRlc3RzIEVYUEVDVF9FUS4KIFRFU1QoRXhwZWN0
VGVzdCwgRVhQRUNUX0VRKSB7CiAgIEVYUEVDVF9FUSg1LCAyICsgMyk7CiAgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9FUSg1LCAyKjMpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAiVmFsdWUgb2Y6IDIqM1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6
IDZcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiA1Iik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgIDVcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgMiozXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgV2hpY2ggaXM6
IDYiKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDUsIDIgLSAzKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIjIgLSAzIik7CiB9CkBAIC00MTQzLDcgKzQ0NDUsNyBA
QCBURVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9FUV9Eb3VibGUpIHsKIFRFU1QoRXhwZWN0VGVzdCwg
RVhQRUNUX0VRX05VTEwpIHsKICAgLy8gQSBzdWNjZXNzLgogICBjb25zdCBjaGFyKiBwID0gTlVM
TDsKLSAgLy8gU29tZSBvbGRlciBHQ0MgdmVyc2lvbnMgbWF5IGlzc3VlIGEgc3B1cmlvdXMgd2Fy
aW5nIGluIHRoaXMgb3IgdGhlIG5leHQKKyAgLy8gU29tZSBvbGRlciBHQ0MgdmVyc2lvbnMgbWF5
IGlzc3VlIGEgc3B1cmlvdXMgd2FybmluZyBpbiB0aGlzIG9yIHRoZSBuZXh0CiAgIC8vIGFzc2Vy
dGlvbiBzdGF0ZW1lbnQuIFRoaXMgd2FybmluZyBzaG91bGQgbm90IGJlIHN1cHByZXNzZWQgd2l0
aAogICAvLyBzdGF0aWNfY2FzdCBzaW5jZSB0aGUgdGVzdCB2ZXJpZmllcyB0aGUgYWJpbGl0eSB0
byB1c2UgYmFyZSBOVUxMIGFzIHRoZQogICAvLyBleHBlY3RlZCBwYXJhbWV0ZXIgdG8gdGhlIG1h
Y3JvLgpAQCAtNDE1Miw3ICs0NDU0LDcgQEAgVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVFfTlVM
TCkgewogICAvLyBBIGZhaWx1cmUuCiAgIGludCBuID0gMDsKICAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoRVhQRUNUX0VRKE5VTEwsICZuKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlZh
bHVlIG9mOiAmblxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgICZuXG4gICAgV2hp
Y2ggaXM6Iik7CiB9CiAjZW5kaWYgIC8vIEdURVNUX0NBTl9DT01QQVJFX05VTEwKIApAQCAtNDE2
OCw3ICs0NDcwLDcgQEAgVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVFfMCkgewogCiAgIC8vIEEg
ZmFpbHVyZS4KICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDAsIDUuNiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogMCIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICAwXG4gIDUuNiIpOwogfQogCiAvLyBUZXN0cyBFWFBFQ1RfTkUuCkBAIC00
MjY4LDcgKzQ1NzAsNyBAQCBURVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9BTllfVEhST1cpIHsKIFRF
U1QoRXhwZWN0VGVzdCwgRXhwZWN0UHJlY2VkZW5jZSkgewogICBFWFBFQ1RfRVEoMSA8IDIsIHRy
dWUpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEodHJ1ZSwgdHJ1ZSAmJiBm
YWxzZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogdHJ1ZSAmJiBmYWxz
ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiICB0cnVlICYmIGZhbHNlXG4gICAgV2hp
Y2ggaXM6IGZhbHNlIik7CiB9CiAKIApAQCAtNDM2MSw3ICs0NjYzLDcgQEAgVEVTVChTdHJlYW1h
YmxlVGVzdCwgQmFzaWNJb01hbmlwKSB7CiAKIHZvaWQgQWRkRmFpbHVyZUhlbHBlcihib29sKiBh
Ym9ydGVkKSB7CiAgICphYm9ydGVkID0gdHJ1ZTsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiRmFpbHVy
ZSI7CisgIEFERF9GQUlMVVJFKCkgPDwgIkludGVudGlvbmFsIGZhaWx1cmUuIjsKICAgKmFib3J0
ZWQgPSBmYWxzZTsKIH0KIApAQCAtNDM2OSwxMCArNDY3MSwyNSBAQCB2b2lkIEFkZEZhaWx1cmVI
ZWxwZXIoYm9vbCogYWJvcnRlZCkgewogVEVTVChNYWNyb1Rlc3QsIEFERF9GQUlMVVJFKSB7CiAg
IGJvb2wgYWJvcnRlZCA9IHRydWU7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1
cmVIZWxwZXIoJmFib3J0ZWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbHVyZSIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9uYWwgZmFpbHVyZS4iKTsKICAg
RVhQRUNUX0ZBTFNFKGFib3J0ZWQpOwogfQogCisvLyBUZXN0cyBBRERfRkFJTFVSRV9BVC4KK1RF
U1QoTWFjcm9UZXN0LCBBRERfRkFJTFVSRV9BVCkgeworICAvLyBWZXJpZmllcyB0aGF0IEFERF9G
QUlMVVJFX0FUIGRvZXMgZ2VuZXJhdGUgYSBub25mYXRhbCBmYWlsdXJlIGFuZAorICAvLyB0aGUg
ZmFpbHVyZSBtZXNzYWdlIGNvbnRhaW5zIHRoZSB1c2VyLXN0cmVhbWVkIHBhcnQuCisgIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKEFERF9GQUlMVVJFX0FUKCJmb28uY2MiLCA0MikgPDwgIldyb25n
ISIsICJXcm9uZyEiKTsKKworICAvLyBWZXJpZmllcyB0aGF0IHRoZSB1c2VyLXN0cmVhbWVkIHBh
cnQgaXMgb3B0aW9uYWwuCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFERF9GQUlMVVJFX0FU
KCJmb28uY2MiLCA0MiksICJGYWlsZWQiKTsKKworICAvLyBVbmZvcnR1bmF0ZWx5LCB3ZSBjYW5u
b3QgdmVyaWZ5IHRoYXQgdGhlIGZhaWx1cmUgbWVzc2FnZSBjb250YWlucworICAvLyB0aGUgcmln
aHQgZmlsZSBwYXRoIGFuZCBsaW5lIG51bWJlciB0aGUgc2FtZSB3YXksIGFzCisgIC8vIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKCkgZG9lc24ndCBnZXQgdG8gc2VlIHRoZSBmaWxlIHBhdGggYW5k
CisgIC8vIGxpbmUgbnVtYmVyLiAgSW5zdGVhZCwgd2UgZG8gdGhhdCBpbiBnb29nbGV0ZXN0LW91
dHB1dC10ZXN0Xy5jYy4KK30KKwogLy8gVGVzdHMgRkFJTC4KIFRFU1QoTWFjcm9UZXN0LCBGQUlM
KSB7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEZBSUwoKSwKQEAgLTQzODcsNyArNDcwNCw2IEBA
IFRFU1QoTWFjcm9UZXN0LCBTVUNDRUVEKSB7CiAgIFNVQ0NFRUQoKSA8PCAiRXhwbGljaXQgc3Vj
Y2Vzcy4iOwogfQogCi0KIC8vIFRlc3RzIGZvciBFWFBFQ1RfRVEoKSBhbmQgQVNTRVJUX0VRKCku
CiAvLwogLy8gVGhlc2UgdGVzdHMgZmFpbCAqaW50ZW50aW9uYWxseSosIHMudC4gdGhlIGZhaWx1
cmUgbWVzc2FnZXMgY2FuIGJlCkBAIC00Mzk4LDE1ICs0NzE0LDE3IEBAIFRFU1QoTWFjcm9UZXN0
LCBTVUNDRUVEKSB7CiAvLyBUZXN0cyB1c2luZyBib29sIHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VS
VH1fRVEuCiBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgQm9vbCkgewogICBFWFBFQ1RfRVEodHJ1ZSwg
IHRydWUpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoZmFsc2UsIHRydWUpLAot
ICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IHRydWUiKTsKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoeworICAgICAgYm9vbCBmYWxzZV92YWx1ZSA9IGZhbHNlOworICAgICAgQVNTRVJU
X0VRKGZhbHNlX3ZhbHVlLCB0cnVlKTsKKyAgICB9LCAiICBmYWxzZV92YWx1ZVxuICAgIFdoaWNo
IGlzOiBmYWxzZVxuICB0cnVlIik7CiB9CiAKIC8vIFRlc3RzIHVzaW5nIGludCB2YWx1ZXMgaW4g
e0VYUEVDVHxBU1NFUlR9X0VRLgogVEVTVChFcUFzc2VydGlvblRlc3QsIEludCkgewogICBBU1NF
UlRfRVEoMzIsIDMyKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDMyLCAz
MyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIzMyIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICAzMlxuICAzMyIpOwogfQogCiAvLyBUZXN0cyB1c2luZyB0aW1lX3QgdmFsdWVz
IGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4KQEAgLTQ0MjMsOSArNDc0MSw5IEBAIFRFU1QoRXFBc3Nl
cnRpb25UZXN0LCBDaGFyKSB7CiAgIEFTU0VSVF9FUSgneicsICd6Jyk7CiAgIGNvbnN0IGNoYXIg
Y2ggPSAnYic7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSgnXDAnLCBjaCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICJjaCIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICBjaFxuICAgIFdoaWNoIGlzOiAnYiciKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoRVhQRUNUX0VRKCdhJywgY2gpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiY2giKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgY2hcbiAgICBXaGljaCBpczogJ2InIik7CiB9
CiAKIC8vIFRlc3RzIHVzaW5nIHdjaGFyX3QgdmFsdWVzIGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4K
QEAgLTQ0MzMsMTggKzQ3NTEsMTkgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIFdpZGVDaGFyKSB7
CiAgIEVYUEVDVF9FUShMJ2InLCBMJ2InKTsKIAogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShF
WFBFQ1RfRVEoTCdcMCcsIEwneCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUg
b2Y6IEwneCdcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBMJ3gnICgx
MjAsIDB4NzgpXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogTCdcMCdc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIldoaWNoIGlzOiBMJ1wwJyAoMCwgMHgwKSIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2Ug
dmFsdWVzOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiICBMJ1wwJ1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiICAgIFdoaWNoIGlzOiBMJ1wwJyAoMCwgMHgwKVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAiICBMJ3gnXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICIgICAgV2hpY2ggaXM6IEwneCcgKDEyMCwgMHg3OCkiKTsKIAogICBzdGF0aWMgd2NoYXJf
dCB3Y2hhcjsKICAgd2NoYXIgPSBMJ2InOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBF
Q1RfRVEoTCdhJywgd2NoYXIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAid2NoYXIiKTsK
LSAgd2NoYXIgPSBMJ1x4ODExOSc7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShM
J1x4ODEyMCcsIHdjaGFyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiB3Y2hh
ciIpOworICB3Y2hhciA9IDB4ODExOTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VR
KHN0YXRpY19jYXN0PHdjaGFyX3Q+KDB4ODEyMCksIHdjaGFyKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIiAgd2NoYXJcbiAgICBXaGljaCBpczogTCciKTsKIH0KIAogLy8gVGVzdHMgdXNpbmcg
OjpzdGQ6OnN0cmluZyB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgpAQCAtNDQ2MSw3ICs0
NzgwLDcgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIFN0ZFN0cmluZykgewogICAvLyBDb21wYXJl
cyBhIGNvbnN0IGNoYXIqIHRvIGFuIHN0ZDo6c3RyaW5nIHRoYXQgaGFzIGRpZmZlcmVudAogICAv
LyBjb250ZW50CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSgiVGVzdCIsIDo6
c3RkOjpzdHJpbmcoInRlc3QiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICI6OnN0ZDo6
c3RyaW5nKFwidGVzdFwiKSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiXCJ0ZXN0XCIi
KTsKIAogICAvLyBDb21wYXJlcyBhbiBzdGQ6OnN0cmluZyB0byBhIGNoYXIqIHRoYXQgaGFzIGRp
ZmZlcmVudCBjb250ZW50LgogICBjaGFyKiBjb25zdCBwMSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KCJm
b28iKTsKQEAgLTQ0NzMsMjggKzQ3OTIsMjkgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIFN0ZFN0
cmluZykgewogICBzdGF0aWMgOjpzdGQ6OnN0cmluZyBzdHIzKHN0cjEpOwogICBzdHIzLmF0KDIp
ID0gJ1wwJzsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKHN0cjEsIHN0cjMpLAot
ICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IHN0cjNcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgIiAgQWN0dWFsOiBcIkEgXFwwIGluIHRoZSBtaWRkbGVcIiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAiICBzdHIzXG4gICAgV2hpY2ggaXM6IFwiQSBcXDAgaW4gdGhlIG1pZGRs
ZVwiIik7CiB9CiAKICNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKIAogLy8gVGVzdHMgdXNpbmcg
OjpzdGQ6OndzdHJpbmcgdmFsdWVzIGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4KIFRFU1QoRXFBc3Nl
cnRpb25UZXN0LCBTdGRXaWRlU3RyaW5nKSB7Ci0gIC8vIENvbXBhcmVzIGFuIHN0ZDo6d3N0cmlu
ZyB0byBhIGNvbnN0IHdjaGFyX3QqIHRoYXQgaGFzIGlkZW50aWNhbAotICAvLyBjb250ZW50Lgot
ICBFWFBFQ1RfRVEoOjpzdGQ6OndzdHJpbmcoTCJUZXN0XHg4MTE5IiksIEwiVGVzdFx4ODExOSIp
OwotCiAgIC8vIENvbXBhcmVzIHR3byBpZGVudGljYWwgc3RkOjp3c3RyaW5ncy4KICAgY29uc3Qg
OjpzdGQ6OndzdHJpbmcgd3N0cjEoTCJBICogaW4gdGhlIG1pZGRsZSIpOwogICBjb25zdCA6OnN0
ZDo6d3N0cmluZyB3c3RyMih3c3RyMSk7CiAgIEFTU0VSVF9FUSh3c3RyMSwgd3N0cjIpOwogCisg
IC8vIENvbXBhcmVzIGFuIHN0ZDo6d3N0cmluZyB0byBhIGNvbnN0IHdjaGFyX3QqIHRoYXQgaGFz
IGlkZW50aWNhbAorICAvLyBjb250ZW50LgorICBjb25zdCB3Y2hhcl90IGtUZXN0WDgxMTlbXSA9
IHsgJ1QnLCAnZScsICdzJywgJ3QnLCAweDgxMTksICdcMCcgfTsKKyAgRVhQRUNUX0VRKDo6c3Rk
Ojp3c3RyaW5nKGtUZXN0WDgxMTkpLCBrVGVzdFg4MTE5KTsKKwogICAvLyBDb21wYXJlcyBhbiBz
dGQ6OndzdHJpbmcgdG8gYSBjb25zdCB3Y2hhcl90KiB0aGF0IGhhcyBkaWZmZXJlbnQKICAgLy8g
Y29udGVudC4KKyAgY29uc3Qgd2NoYXJfdCBrVGVzdFg4MTIwW10gPSB7ICdUJywgJ2UnLCAncycs
ICd0JywgMHg4MTIwLCAnXDAnIH07CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5P
TElOVAotICAgIEVYUEVDVF9FUSg6OnN0ZDo6d3N0cmluZyhMIlRlc3RceDgxMTkiKSwgTCJUZXN0
XHg4MTIwIik7Ci0gIH0sICJMXCJUZXN0XFx4ODEyMFwiIik7CisgICAgRVhQRUNUX0VRKDo6c3Rk
Ojp3c3RyaW5nKGtUZXN0WDgxMTkpLCBrVGVzdFg4MTIwKTsKKyAgfSwgImtUZXN0WDgxMjAiKTsK
IAogICAvLyBDb21wYXJlcyB0d28gc3RkOjp3c3RyaW5ncyB0aGF0IGhhdmUgZGlmZmVyZW50IGNv
bnRlbnRzLCBvbmUgb2YKICAgLy8gd2hpY2ggaGF2aW5nIGEgTlVMIGNoYXJhY3RlciBpbiB0aGUg
bWlkZGxlLgpAQCAtNDU0NiwxOCArNDg2NiwyMCBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgR2xv
YmFsU3RyaW5nKSB7CiAKIC8vIFRlc3RzIHVzaW5nIDo6d3N0cmluZyB2YWx1ZXMgaW4ge0VYUEVD
VHxBU1NFUlR9X0VRLgogVEVTVChFcUFzc2VydGlvblRlc3QsIEdsb2JhbFdpZGVTdHJpbmcpIHsK
LSAgLy8gQ29tcGFyZXMgYSBjb25zdCB3Y2hhcl90KiB0byBhIDo6d3N0cmluZyB0aGF0IGhhcyBp
ZGVudGljYWwgY29udGVudC4KLSAgQVNTRVJUX0VRKEwiVGVzdFx4ODExOSIsIDo6d3N0cmluZyhM
IlRlc3RceDgxMTkiKSk7Ci0KICAgLy8gQ29tcGFyZXMgdHdvIGlkZW50aWNhbCA6OndzdHJpbmdz
LgogICBzdGF0aWMgY29uc3QgOjp3c3RyaW5nIHdzdHIxKEwiQSAqIGluIHRoZSBtaWRkbGUiKTsK
ICAgc3RhdGljIGNvbnN0IDo6d3N0cmluZyB3c3RyMih3c3RyMSk7CiAgIEVYUEVDVF9FUSh3c3Ry
MSwgd3N0cjIpOwogCisgIC8vIENvbXBhcmVzIGEgY29uc3Qgd2NoYXJfdCogdG8gYSA6OndzdHJp
bmcgdGhhdCBoYXMgaWRlbnRpY2FsIGNvbnRlbnQuCisgIGNvbnN0IHdjaGFyX3Qga1Rlc3RYODEx
OVtdID0geyAnVCcsICdlJywgJ3MnLCAndCcsIDB4ODExOSwgJ1wwJyB9OworICBBU1NFUlRfRVEo
a1Rlc3RYODExOSwgOjp3c3RyaW5nKGtUZXN0WDgxMTkpKTsKKwogICAvLyBDb21wYXJlcyBhIGNv
bnN0IHdjaGFyX3QqIHRvIGEgOjp3c3RyaW5nIHRoYXQgaGFzIGRpZmZlcmVudAogICAvLyBjb250
ZW50LgorICBjb25zdCB3Y2hhcl90IGtUZXN0WDgxMjBbXSA9IHsgJ1QnLCAnZScsICdzJywgJ3Qn
LCAweDgxMjAsICdcMCcgfTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
Ci0gICAgRVhQRUNUX0VRKEwiVGVzdFx4ODEyMCIsIDo6d3N0cmluZyhMIlRlc3RceDgxMTkiKSk7
CisgICAgRVhQRUNUX0VRKGtUZXN0WDgxMjAsIDo6d3N0cmluZyhrVGVzdFg4MTE5KSk7CiAgIH0s
ICJUZXN0XFx4ODExOSIpOwogCiAgIC8vIENvbXBhcmVzIGEgd2NoYXJfdCogdG8gYSA6OndzdHJp
bmcgdGhhdCBoYXMgZGlmZmVyZW50IGNvbnRlbnQuCkBAIC00NTkwLDkgKzQ5MTIsOSBAQCBURVNU
KEVxQXNzZXJ0aW9uVGVzdCwgQ2hhclBvaW50ZXIpIHsKICAgQVNTRVJUX0VRKHAxLCBwMSk7CiAK
ICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHAwLCBwMiksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogcDIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiAgcDJcbiAgICBXaGljaCBpczoiKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX0VRKHAxLCBwMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJwMiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAiICBwMlxuICAgIFdoaWNoIGlzOiIpOwogICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShBU1NFUlRfRVEocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oMHgxMjM0KSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KDB4
QUJDMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAiQUJDMCIpOwpAQCAtNDYxMiw5ICs0OTM0
LDkgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIFdpZGVDaGFyUG9pbnRlcikgewogICBFWFBFQ1Rf
RVEocDAsIHAwKTsKIAogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEocDAsIHAy
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBwMiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICBwMlxuICAgIFdoaWNoIGlzOiIpOwogICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfRVEocDEsIHAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
InAyIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgIHAyXG4gICAgV2hpY2ggaXM6Iik7
CiAgIHZvaWQqIHB2MyA9ICh2b2lkKikweDEyMzQ7ICAvLyBOT0xJTlQKICAgdm9pZCogcHY0ID0g
KHZvaWQqKTB4QUJDMDsgIC8vIE5PTElOVAogICBjb25zdCB3Y2hhcl90KiBwMyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3Qgd2NoYXJfdCo+KHB2Myk7CkBAIC00NjMyLDYgKzQ5NTQsNjggQEAgVEVT
VChFcUFzc2VydGlvblRlc3QsIE90aGVyUG9pbnRlcikgewogICAgICAgICAgICAgICAgICAgICAg
ICAiMHgxMjM0Iik7CiB9CiAKKy8vIEEgY2xhc3MgdGhhdCBzdXBwb3J0cyBiaW5hcnkgY29tcGFy
aXNvbiBvcGVyYXRvcnMgYnV0IG5vdCBzdHJlYW1pbmcuCitjbGFzcyBVbnByaW50YWJsZUNoYXIg
eworIHB1YmxpYzoKKyAgZXhwbGljaXQgVW5wcmludGFibGVDaGFyKGNoYXIgY2gpIDogY2hhcl8o
Y2gpIHt9CisKKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBj
b25zdCB7CisgICAgcmV0dXJuIGNoYXJfID09IHJocy5jaGFyXzsKKyAgfQorICBib29sIG9wZXJh
dG9yIT0oY29uc3QgVW5wcmludGFibGVDaGFyJiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gY2hh
cl8gIT0gcmhzLmNoYXJfOworICB9CisgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFVucHJpbnRhYmxl
Q2hhciYgcmhzKSBjb25zdCB7CisgICAgcmV0dXJuIGNoYXJfIDwgcmhzLmNoYXJfOworICB9Cisg
IGJvb2wgb3BlcmF0b3I8PShjb25zdCBVbnByaW50YWJsZUNoYXImIHJocykgY29uc3QgeworICAg
IHJldHVybiBjaGFyXyA8PSByaHMuY2hhcl87CisgIH0KKyAgYm9vbCBvcGVyYXRvcj4oY29uc3Qg
VW5wcmludGFibGVDaGFyJiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gY2hhcl8gPiByaHMuY2hh
cl87CisgIH0KKyAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBj
b25zdCB7CisgICAgcmV0dXJuIGNoYXJfID49IHJocy5jaGFyXzsKKyAgfQorCisgcHJpdmF0ZToK
KyAgY2hhciBjaGFyXzsKK307CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0VRKCkgYW5kIGZyaWVu
ZHMgZG9uJ3QgcmVxdWlyZSB0aGUgYXJndW1lbnRzIHRvCisvLyBiZSBwcmludGFibGUuCitURVNU
KENvbXBhcmlzb25Bc3NlcnRpb25UZXN0LCBBY2NlcHRzVW5wcmludGFibGVBcmdzKSB7CisgIGNv
bnN0IFVucHJpbnRhYmxlQ2hhciB4KCd4JyksIHkoJ3knKTsKKyAgQVNTRVJUX0VRKHgsIHgpOwor
ICBFWFBFQ1RfTkUoeCwgeSk7CisgIEFTU0VSVF9MVCh4LCB5KTsKKyAgRVhQRUNUX0xFKHgsIHkp
OworICBBU1NFUlRfR1QoeSwgeCk7CisgIEVYUEVDVF9HRSh4LCB4KTsKKworICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoeCwgeSksICIxLWJ5dGUgb2JqZWN0IDw3OD4iKTsKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHgsIHkpLCAiMS1ieXRlIG9iamVjdCA8
Nzk+Iik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9MVCh5LCB5KSwgIjEtYnl0
ZSBvYmplY3QgPDc5PiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR1QoeCwg
eSksICIxLWJ5dGUgb2JqZWN0IDw3OD4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX0dUKHgsIHkpLCAiMS1ieXRlIG9iamVjdCA8Nzk+Iik7CisKKyAgLy8gQ29kZSB0ZXN0ZWQg
YnkgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUgY2Fubm90IHJlZmVyZW5jZSBsb2NhbAorICAvLyB2YXJp
YWJsZXMsIHNvIHdlIGhhdmUgdG8gd3JpdGUgVW5wcmludGFibGVDaGFyKCd4JykgaW5zdGVhZCBv
ZiB4LgorI2lmbmRlZiBfX0JPUkxBTkRDX18KKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4KKyAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX05FKFVucHJpbnRhYmxlQ2hhcigneCcpLCBVbnBy
aW50YWJsZUNoYXIoJ3gnKSksCisgICAgICAgICAgICAgICAgICAgICAgICIxLWJ5dGUgb2JqZWN0
IDw3OD4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0xFKFVucHJpbnRhYmxlQ2hh
cigneScpLCBVbnByaW50YWJsZUNoYXIoJ3gnKSksCisgICAgICAgICAgICAgICAgICAgICAgICIx
LWJ5dGUgb2JqZWN0IDw3OD4iKTsKKyNlbmRpZgorICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NF
UlRfTEUoVW5wcmludGFibGVDaGFyKCd5JyksIFVucHJpbnRhYmxlQ2hhcigneCcpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3QgPDc5PiIpOworICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShBU1NFUlRfR0UoVW5wcmludGFibGVDaGFyKCd4JyksIFVucHJpbnRhYmxlQ2hhcign
eScpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3QgPDc4PiIpOworICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfR0UoVW5wcmludGFibGVDaGFyKCd4JyksIFVucHJp
bnRhYmxlQ2hhcigneScpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3Qg
PDc5PiIpOworfQorCiAvLyBUZXN0cyB0aGUgRlJJRU5EX1RFU1QgbWFjcm8uCiAKIC8vIFRoaXMg
Y2xhc3MgaGFzIGEgcHJpdmF0ZSBtZW1iZXIgd2Ugd2FudCB0byB0ZXN0LiAgV2Ugd2lsbCB0ZXN0
IGl0CkBAIC00NzQ5LDcgKzUxMzMsNyBAQCBURVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIENvbnN0
cnVjdGlvbldvcmtzKSB7CiAgIEVYUEVDVF9TVFJFUSgiZ2hpIiwgcjUubWVzc2FnZSgpKTsKIH0K
IAotLy8gVGVzdHMgdGhhdCB0aGUgbmVnYXRpb24gZmlwcyB0aGUgcHJlZGljYXRlIHJlc3VsdCBi
dXQga2VlcHMgdGhlIG1lc3NhZ2UuCisvLyBUZXN0cyB0aGF0IHRoZSBuZWdhdGlvbiBmbGlwcyB0
aGUgcHJlZGljYXRlIHJlc3VsdCBidXQga2VlcHMgdGhlIG1lc3NhZ2UuCiBURVNUKEFzc2VydGlv
blJlc3VsdFRlc3QsIE5lZ2F0aW9uV29ya3MpIHsKICAgQXNzZXJ0aW9uUmVzdWx0IHIxID0gQXNz
ZXJ0aW9uU3VjY2VzcygpIDw8ICJhYmMiOwogICBFWFBFQ1RfRkFMU0UoIXIxKTsKQEAgLTQ3NjYs
NiArNTE1MCwzNyBAQCBURVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIFN0cmVhbWluZ1dvcmtzKSB7
CiAgIEVYUEVDVF9TVFJFUSgiYWJjZDB0cnVlIiwgci5tZXNzYWdlKCkpOwogfQogCitURVNUKEFz
c2VydGlvblJlc3VsdFRlc3QsIENhblN0cmVhbU9zdHJlYW1NYW5pcHVsYXRvcnMpIHsKKyAgQXNz
ZXJ0aW9uUmVzdWx0IHIgPSBBc3NlcnRpb25TdWNjZXNzKCk7CisgIHIgPDwgIkRhdGEiIDw8IHN0
ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoIDw8IHN0ZDo6ZW5kcyA8PCAiV2lsbCBiZSB2aXNpYmxlIjsK
KyAgRVhQRUNUX1NUUkVRKCJEYXRhXG5cXDBXaWxsIGJlIHZpc2libGUiLCByLm1lc3NhZ2UoKSk7
Cit9CisKKy8vIFRoZSBuZXh0IHRlc3QgdXNlcyBleHBsaWNpdCBjb252ZXJzaW9uIG9wZXJhdG9y
cyAtLSBhIEMrKzExIGZlYXR1cmUuCisjaWYgR1RFU1RfTEFOR19DWFgxMQorCitURVNUKEFzc2Vy
dGlvblJlc3VsdFRlc3QsIENvbnN0cnVjdGlibGVGcm9tQ29udGV4dHVhbGx5Q29udmVydGlibGVU
b0Jvb2wpIHsKKyAgc3RydWN0IEV4cGxpY2l0bHlDb252ZXJ0aWJsZVRvQm9vbCB7CisgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlOyB9CisgICAgYm9vbCB2
YWx1ZTsKKyAgfTsKKyAgRXhwbGljaXRseUNvbnZlcnRpYmxlVG9Cb29sIHYxID0ge2ZhbHNlfTsK
KyAgRXhwbGljaXRseUNvbnZlcnRpYmxlVG9Cb29sIHYyID0ge3RydWV9OworICBFWFBFQ1RfRkFM
U0UodjEpOworICBFWFBFQ1RfVFJVRSh2Mik7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfTEFOR19D
WFgxMQorCitzdHJ1Y3QgQ29udmVydGlibGVUb0Fzc2VydGlvblJlc3VsdCB7CisgIG9wZXJhdG9y
IEFzc2VydGlvblJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIEFzc2VydGlvblJlc3VsdCh0cnVlKTsg
fQorfTsKKworVEVTVChBc3NlcnRpb25SZXN1bHRUZXN0LCBDb25zdHJ1Y3RpYmxlRnJvbUltcGxp
Y2l0bHlDb252ZXJ0aWJsZSkgeworICBDb252ZXJ0aWJsZVRvQXNzZXJ0aW9uUmVzdWx0IG9iajsK
KyAgRVhQRUNUX1RSVUUob2JqKTsKK30KKwogLy8gVGVzdHMgc3RyZWFtaW5nIGEgdXNlciB0eXBl
IHdob3NlIGRlZmluaXRpb24gYW5kIG9wZXJhdG9yIDw8IGFyZQogLy8gYm90aCBpbiB0aGUgZ2xv
YmFsIG5hbWVzcGFjZS4KIGNsYXNzIEJhc2UgewpAQCAtNDk1MCw2ICs1MzY1LDU5IEBAIFRFU1Rf
RihUZXN0SW5mb1Rlc3QsIHJlc3VsdCkgewogICBBU1NFUlRfRVEoMCwgR2V0VGVzdFJlc3VsdCh0
ZXN0X2luZm8pLT50b3RhbF9wYXJ0X2NvdW50KCkpOwogfQogCisjZGVmaW5lIFZFUklGWV9DT0RF
X0xPQ0FUSU9OIFwKKyAgY29uc3QgaW50IGV4cGVjdGVkX2xpbmUgPSBfX0xJTkVfXyAtIDE7IFwK
KyAgY29uc3QgVGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9IEdldFVuaXRUZXN0SW1wbCgpLT5j
dXJyZW50X3Rlc3RfaW5mbygpOyBcCisgIEFTU0VSVF9UUlVFKHRlc3RfaW5mbyk7IFwKKyAgRVhQ
RUNUX1NUUkVRKF9fRklMRV9fLCB0ZXN0X2luZm8tPmZpbGUoKSk7IFwKKyAgRVhQRUNUX0VRKGV4
cGVjdGVkX2xpbmUsIHRlc3RfaW5mby0+bGluZSgpKQorCitURVNUKENvZGVMb2NhdGlvbkZvclRF
U1QsIFZlcmlmeSkgeworICBWRVJJRllfQ09ERV9MT0NBVElPTjsKK30KKworY2xhc3MgQ29kZUxv
Y2F0aW9uRm9yVEVTVEYgOiBwdWJsaWMgVGVzdCB7Cit9OworCitURVNUX0YoQ29kZUxvY2F0aW9u
Rm9yVEVTVEYsIFZlcmlmeSkgeworICBWRVJJRllfQ09ERV9MT0NBVElPTjsKK30KKworY2xhc3Mg
Q29kZUxvY2F0aW9uRm9yVEVTVFAgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsKK307CisK
K1RFU1RfUChDb2RlTG9jYXRpb25Gb3JURVNUUCwgVmVyaWZ5KSB7CisgIFZFUklGWV9DT0RFX0xP
Q0FUSU9OOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUCgsIENvZGVMb2NhdGlvbkZvclRF
U1RQLCBWYWx1ZXMoMCkpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIENvZGVMb2Nh
dGlvbkZvclRZUEVEVEVTVCA6IHB1YmxpYyBUZXN0IHsKK307CisKK1RZUEVEX1RFU1RfQ0FTRShD
b2RlTG9jYXRpb25Gb3JUWVBFRFRFU1QsIGludCk7CisKK1RZUEVEX1RFU1QoQ29kZUxvY2F0aW9u
Rm9yVFlQRURURVNULCBWZXJpZnkpIHsKKyAgVkVSSUZZX0NPREVfTE9DQVRJT047Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCA6IHB1
YmxpYyBUZXN0IHsKK307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKENvZGVMb2NhdGlvbkZvclRZUEVE
VEVTVFApOworCitUWVBFRF9URVNUX1AoQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCwgVmVyaWZ5
KSB7CisgIFZFUklGWV9DT0RFX0xPQ0FUSU9OOworfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NB
U0VfUChDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1RQLCBWZXJpZnkpOworCitJTlNUQU5USUFURV9U
WVBFRF9URVNUX0NBU0VfUChNeSwgQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCwgaW50KTsKKwor
I3VuZGVmIFZFUklGWV9DT0RFX0xPQ0FUSU9OCisKIC8vIFRlc3RzIHNldHRpbmcgdXAgYW5kIHRl
YXJpbmcgZG93biBhIHRlc3QgY2FzZS4KIAogY2xhc3MgU2V0VXBUZXN0Q2FzZVRlc3QgOiBwdWJs
aWMgVGVzdCB7CkBAIC01MDEzLDcgKzU0ODEsOCBAQCBURVNUX0YoU2V0VXBUZXN0Q2FzZVRlc3Qs
IFRlc3QyKSB7CiAgIEVYUEVDVF9TVFJFUSgiMTIzIiwgc2hhcmVkX3Jlc291cmNlXyk7CiB9CiAK
LS8vIFRoZSBJbml0R29vZ2xlVGVzdFRlc3QgdGVzdCBjYXNlIHRlc3RzIHRlc3Rpbmc6OkluaXRH
b29nbGVUZXN0KCkuCisKKy8vIFRoZSBQYXJzZUZsYWdzVGVzdCB0ZXN0IGNhc2UgdGVzdHMgUGFy
c2VHb29nbGVUZXN0RmxhZ3NPbmx5LgogCiAvLyBUaGUgRmxhZ3Mgc3RydWN0IHN0b3JlcyBhIGNv
cHkgb2YgYWxsIEdvb2dsZSBUZXN0IGZsYWdzLgogc3RydWN0IEZsYWdzIHsKQEAgLTUwMzAsNiAr
NTQ5OSw3IEBAIHN0cnVjdCBGbGFncyB7CiAgICAgICAgICAgICByZXBlYXQoMSksCiAgICAgICAg
ICAgICBzaHVmZmxlKGZhbHNlKSwKICAgICAgICAgICAgIHN0YWNrX3RyYWNlX2RlcHRoKGtNYXhT
dGFja1RyYWNlRGVwdGgpLAorICAgICAgICAgICAgc3RyZWFtX3Jlc3VsdF90bygiIiksCiAgICAg
ICAgICAgICB0aHJvd19vbl9mYWlsdXJlKGZhbHNlKSB7fQogCiAgIC8vIEZhY3RvcnkgbWV0aG9k
cy4KQEAgLTUwOTgsOCArNTU2OCw4IEBAIHN0cnVjdCBGbGFncyB7CiAgICAgcmV0dXJuIGZsYWdz
OwogICB9CiAKLSAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3RfcmFu
ZG9tX3NlZWQgZmxhZyBoYXMKLSAgLy8gdGhlIGdpdmVuIHZhbHVlLgorICAvLyBDcmVhdGVzIGEg
RmxhZ3Mgc3RydWN0IHdoZXJlIHRoZSBndGVzdF9yYW5kb21fc2VlZCBmbGFnIGhhcyB0aGUgZ2l2
ZW4KKyAgLy8gdmFsdWUuCiAgIHN0YXRpYyBGbGFncyBSYW5kb21TZWVkKEludDMyIHJhbmRvbV9z
ZWVkKSB7CiAgICAgRmxhZ3MgZmxhZ3M7CiAgICAgZmxhZ3MucmFuZG9tX3NlZWQgPSByYW5kb21f
c2VlZDsKQEAgLTUxMTQsOCArNTU4NCw4IEBAIHN0cnVjdCBGbGFncyB7CiAgICAgcmV0dXJuIGZs
YWdzOwogICB9CiAKLSAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3Rf
c2h1ZmZsZSBmbGFnIGhhcwotICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCisgIC8vIENyZWF0ZXMgYSBG
bGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIGd0ZXN0X3NodWZmbGUgZmxhZyBoYXMgdGhlIGdpdmVuCisg
IC8vIHZhbHVlLgogICBzdGF0aWMgRmxhZ3MgU2h1ZmZsZShib29sIHNodWZmbGUpIHsKICAgICBG
bGFncyBmbGFnczsKICAgICBmbGFncy5zaHVmZmxlID0gc2h1ZmZsZTsKQEAgLTUxMzAsNiArNTYw
MCwxNCBAQCBzdHJ1Y3QgRmxhZ3MgewogICAgIHJldHVybiBmbGFnczsKICAgfQogCisgIC8vIENy
ZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90
bykgZmxhZyBoYXMKKyAgLy8gdGhlIGdpdmVuIHZhbHVlLgorICBzdGF0aWMgRmxhZ3MgU3RyZWFt
UmVzdWx0VG8oY29uc3QgY2hhciogc3RyZWFtX3Jlc3VsdF90bykgeworICAgIEZsYWdzIGZsYWdz
OworICAgIGZsYWdzLnN0cmVhbV9yZXN1bHRfdG8gPSBzdHJlYW1fcmVzdWx0X3RvOworICAgIHJl
dHVybiBmbGFnczsKKyAgfQorCiAgIC8vIENyZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hlcmUgdGhl
IGd0ZXN0X3Rocm93X29uX2ZhaWx1cmUgZmxhZyBoYXMKICAgLy8gdGhlIGdpdmVuIHZhbHVlLgog
ICBzdGF0aWMgRmxhZ3MgVGhyb3dPbkZhaWx1cmUoYm9vbCB0aHJvd19vbl9mYWlsdXJlKSB7CkBA
IC01MTUxLDExICs1NjI5LDEyIEBAIHN0cnVjdCBGbGFncyB7CiAgIEludDMyIHJlcGVhdDsKICAg
Ym9vbCBzaHVmZmxlOwogICBJbnQzMiBzdGFja190cmFjZV9kZXB0aDsKKyAgY29uc3QgY2hhciog
c3RyZWFtX3Jlc3VsdF90bzsKICAgYm9vbCB0aHJvd19vbl9mYWlsdXJlOwogfTsKIAotLy8gRml4
dHVyZSBmb3IgdGVzdGluZyBJbml0R29vZ2xlVGVzdCgpLgotY2xhc3MgSW5pdEdvb2dsZVRlc3RU
ZXN0IDogcHVibGljIFRlc3QgeworLy8gRml4dHVyZSBmb3IgdGVzdGluZyBQYXJzZUdvb2dsZVRl
c3RGbGFnc09ubHkoKS4KK2NsYXNzIFBhcnNlRmxhZ3NUZXN0IDogcHVibGljIFRlc3QgewogIHBy
b3RlY3RlZDoKICAgLy8gQ2xlYXJzIHRoZSBmbGFncyBiZWZvcmUgZWFjaCB0ZXN0LgogICB2aXJ0
dWFsIHZvaWQgU2V0VXAoKSB7CkBAIC01MTcxLDYgKzU2NTAsNyBAQCBjbGFzcyBJbml0R29vZ2xl
VGVzdFRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgR1RFU1RfRkxBRyhyZXBlYXQpID0gMTsKICAg
ICBHVEVTVF9GTEFHKHNodWZmbGUpID0gZmFsc2U7CiAgICAgR1RFU1RfRkxBRyhzdGFja190cmFj
ZV9kZXB0aCkgPSBrTWF4U3RhY2tUcmFjZURlcHRoOworICAgIEdURVNUX0ZMQUcoc3RyZWFtX3Jl
c3VsdF90bykgPSAiIjsKICAgICBHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gZmFsc2U7
CiAgIH0KIApAQCAtNTE5OSw4ICs1Njc5LDEwIEBAIGNsYXNzIEluaXRHb29nbGVUZXN0VGVzdCA6
IHB1YmxpYyBUZXN0IHsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQucmFuZG9tX3NlZWQsIEdURVNU
X0ZMQUcocmFuZG9tX3NlZWQpKTsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQucmVwZWF0LCBHVEVT
VF9GTEFHKHJlcGVhdCkpOwogICAgIEVYUEVDVF9FUShleHBlY3RlZC5zaHVmZmxlLCBHVEVTVF9G
TEFHKHNodWZmbGUpKTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQudGhyb3dfb25fZmFpbHVyZSwg
R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSk7CiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkLnN0
YWNrX3RyYWNlX2RlcHRoLCBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSk7CisgICAgRVhQ
RUNUX1NUUkVRKGV4cGVjdGVkLnN0cmVhbV9yZXN1bHRfdG8sCisgICAgICAgICAgICAgICAgIEdU
RVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykuY19zdHIoKSk7CisgICAgRVhQRUNUX0VRKGV4cGVj
dGVkLnRocm93X29uX2ZhaWx1cmUsIEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkpOwogICB9
CiAKICAgLy8gUGFyc2VzIGEgY29tbWFuZCBsaW5lIChzcGVjaWZpZWQgYnkgYXJnYzEgYW5kIGFy
Z3YxKSwgdGhlbgpAQCAtNTIxMywxNiArNTY5NSwxNiBAQCBjbGFzcyBJbml0R29vZ2xlVGVzdFRl
c3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgY29uc3QgYm9vbCBzYXZlZF9oZWxwX2ZsYWcgPSA6OnRl
c3Rpbmc6OmludGVybmFsOjpnX2hlbHBfZmxhZzsKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpn
X2hlbHBfZmxhZyA9IGZhbHNlOwogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8K
KyMgaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgogICAgIENhcHR1cmVTdGRvdXQoKTsK
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyMgZW5kaWYKIAogICAg
IC8vIFBhcnNlcyB0aGUgY29tbWFuZCBsaW5lLgogICAgIGludGVybmFsOjpQYXJzZUdvb2dsZVRl
c3RGbGFnc09ubHkoJmFyZ2MxLCBjb25zdF9jYXN0PENoYXJUeXBlKio+KGFyZ3YxKSk7CiAKLSNp
ZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXwotICAgIGNvbnN0IFN0cmluZyBjYXB0dXJl
ZF9zdGRvdXQgPSBHZXRDYXB0dXJlZFN0ZG91dCgpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RS
RUFNX1JFRElSRUNUSU9OXworIyBpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgY2FwdHVyZWRfc3Rkb3V0ID0gR2V0Q2FwdHVyZWRTdGRvdXQoKTsK
KyMgZW5kaWYKIAogICAgIC8vIFZlcmlmaWVzIHRoZSBmbGFnIHZhbHVlcy4KICAgICBDaGVja0Zs
YWdzKGV4cGVjdGVkKTsKQEAgLTUyMzUsNyArNTcxNyw3IEBAIGNsYXNzIEluaXRHb29nbGVUZXN0
VGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICAvLyBoZWxwIG1lc3NhZ2UgZm9yIHRoZSBmbGFncyBp
dCByZWNvZ25pemVzLgogICAgIEVYUEVDVF9FUShzaG91bGRfcHJpbnRfaGVscCwgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6Z19oZWxwX2ZsYWcpOwogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVD
VElPTl8KKyMgaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgogICAgIGNvbnN0IGNoYXIq
IGNvbnN0IGV4cGVjdGVkX2hlbHBfZnJhZ21lbnQgPQogICAgICAgICAiVGhpcyBwcm9ncmFtIGNv
bnRhaW5zIHRlc3RzIHdyaXR0ZW4gdXNpbmciOwogICAgIGlmIChzaG91bGRfcHJpbnRfaGVscCkg
ewpAQCAtNTI0NCwyMSArNTcyNiwyMiBAQCBjbGFzcyBJbml0R29vZ2xlVGVzdFRlc3QgOiBwdWJs
aWMgVGVzdCB7CiAgICAgICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzTm90U3Vic3RyaW5nLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9oZWxwX2ZyYWdtZW50LCBjYXB0dXJlZF9z
dGRvdXQpOwogICAgIH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8K
KyMgZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KIAogICAgIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OmdfaGVscF9mbGFnID0gc2F2ZWRfaGVscF9mbGFnOwogICB9CiAKICAgLy8g
VGhpcyBtYWNybyB3cmFwcyBUZXN0UGFyc2luZ0ZsYWdzIHMudC4gdGhlIHVzZXIgZG9lc24ndCBu
ZWVkCiAgIC8vIHRvIHNwZWNpZnkgdGhlIGFycmF5IHNpemVzLgotI2RlZmluZSBHVEVTVF9URVNU
X1BBUlNJTkdfRkxBR1NfKGFyZ3YxLCBhcmd2MiwgZXhwZWN0ZWQsIHNob3VsZF9wcmludF9oZWxw
KSBcCisKKyMgZGVmaW5lIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndjEsIGFyZ3YyLCBl
eHBlY3RlZCwgc2hvdWxkX3ByaW50X2hlbHApIFwKICAgVGVzdFBhcnNpbmdGbGFncyhzaXplb2Yo
YXJndjEpL3NpemVvZigqYXJndjEpIC0gMSwgYXJndjEsIFwKICAgICAgICAgICAgICAgICAgICBz
aXplb2YoYXJndjIpL3NpemVvZigqYXJndjIpIC0gMSwgYXJndjIsIFwKICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZCwgc2hvdWxkX3ByaW50X2hlbHApCiB9OwogCiAvLyBUZXN0cyBwYXJzaW5n
IGFuIGVtcHR5IGNvbW1hbmQgbGluZS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEVtcHR5
KSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEVtcHR5KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3Zb
XSA9IHsKICAgICBOVUxMCiAgIH07CkBAIC01MjcxLDcgKzU3NTQsNyBAQCBURVNUX0YoSW5pdEdv
b2dsZVRlc3RUZXN0LCBFbXB0eSkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIGEgY29tbWFuZCBs
aW5lIHRoYXQgaGFzIG5vIGZsYWcuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBOb0ZsYWcp
IHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgTm9GbGFnKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3Zb
XSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgTlVMTApAQCAtNTI4Niw3ICs1NzY5LDcgQEAgVEVT
VF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTm9GbGFnKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcg
YSBiYWQgLS1ndGVzdF9maWx0ZXIgZmxhZy4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEZp
bHRlckJhZCkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBGaWx0ZXJCYWQpIHsKICAgY29uc3Qg
Y2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9maWx0ZXIiLApA
QCAtNTMwMyw3ICs1Nzg2LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRmlsdGVyQmFk
KSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgYW4gZW1wdHkgLS1ndGVzdF9maWx0ZXIgZmxhZy4K
LVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEZpbHRlckVtcHR5KSB7CitURVNUX0YoUGFyc2VG
bGFnc1Rlc3QsIEZpbHRlckVtcHR5KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAi
Zm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfZmlsdGVyPSIsCkBAIC01MzE5LDcgKzU4MDIsNyBAQCBU
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBGaWx0ZXJFbXB0eSkgewogfQogCiAvLyBUZXN0cyBw
YXJzaW5nIGEgbm9uLWVtcHR5IC0tZ3Rlc3RfZmlsdGVyIGZsYWcuCi1URVNUX0YoSW5pdEdvb2ds
ZVRlc3RUZXN0LCBGaWx0ZXJOb25FbXB0eSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBGaWx0
ZXJOb25FbXB0eSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAog
ICAgICItLWd0ZXN0X2ZpbHRlcj1hYmMiLApAQCAtNTMzNSw3ICs1ODE4LDcgQEAgVEVTVF9GKElu
aXRHb29nbGVUZXN0VGVzdCwgRmlsdGVyTm9uRW1wdHkpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2lu
ZyAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBC
cmVha09uRmFpbHVyZVdpdGhvdXRWYWx1ZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBCcmVh
a09uRmFpbHVyZVdpdGhvdXRWYWx1ZSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAg
ImZvby5leGUiLAogICAgICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUiLApAQCAtNTM1MSw3ICs1
ODM0LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVXaXRob3V0
VmFsdWUpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9
MC4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlRmFsc2VfMCkgewor
VEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBCcmVha09uRmFpbHVyZUZhbHNlXzApIHsKICAgY29uc3Qg
Y2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9icmVha19vbl9m
YWlsdXJlPTAiLApAQCAtNTM2Nyw3ICs1ODUwLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVz
dCwgQnJlYWtPbkZhaWx1cmVGYWxzZV8wKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVz
dF9icmVha19vbl9mYWlsdXJlPWYuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09u
RmFpbHVyZUZhbHNlX2YpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgQnJlYWtPbkZhaWx1cmVG
YWxzZV9mKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAg
Ii0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZT1mIiwKQEAgLTUzODMsNyArNTg2Niw3IEBAIFRFU1Rf
RihJbml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlRmFsc2VfZikgewogfQogCiAvLyBU
ZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZT1GLgotVEVTVF9GKEluaXRHb29n
bGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVGYWxzZV9GKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rl
c3QsIEJyZWFrT25GYWlsdXJlRmFsc2VfRikgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAg
ICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9RiIsCkBAIC01NDAw
LDcgKzU4ODMsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVyZUZh
bHNlX0YpIHsKIAogLy8gVGVzdHMgcGFyc2luZyBhIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBm
bGFnIHRoYXQgaGFzIGEgInRydWUiCiAvLyBkZWZpbml0aW9uLgotVEVTVF9GKEluaXRHb29nbGVU
ZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVUcnVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEJy
ZWFrT25GYWlsdXJlVHJ1ZSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5l
eGUiLAogICAgICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9MSIsCkBAIC01NDE2LDcgKzU4OTks
NyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVyZVRydWUpIHsKIH0K
IAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnMuCi1URVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBDYXRjaEV4Y2VwdGlvbnMpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVz
dCwgQ2F0Y2hFeGNlcHRpb25zKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9v
LmV4ZSIsCiAgICAgIi0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucyIsCkBAIC01NDMyLDcgKzU5MTUs
NyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBDYXRjaEV4Y2VwdGlvbnMpIHsKIH0KIAog
Ly8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2RlYXRoX3Rlc3RfdXNlX2ZvcmsuCi1URVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBEZWF0aFRlc3RVc2VGb3JrKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rl
c3QsIERlYXRoVGVzdFVzZUZvcmspIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJm
b28uZXhlIiwKICAgICAiLS1ndGVzdF9kZWF0aF90ZXN0X3VzZV9mb3JrIiwKQEAgLTU0NDksNyAr
NTkzMiw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIERlYXRoVGVzdFVzZUZvcmspIHsK
IAogLy8gVGVzdHMgaGF2aW5nIHRoZSBzYW1lIGZsYWcgdHdpY2Ugd2l0aCBkaWZmZXJlbnQgdmFs
dWVzLiAgVGhlCiAvLyBleHBlY3RlZCBiZWhhdmlvciBpcyB0aGF0IHRoZSBvbmUgY29taW5nIGxh
c3QgdGFrZXMgcHJlY2VkZW5jZS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIER1cGxpY2F0
ZWRGbGFncykgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBEdXBsaWNhdGVkRmxhZ3MpIHsKICAg
Y29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9maWx0
ZXI9YSIsCkBAIC01NDY2LDcgKzU5NDksNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBE
dXBsaWNhdGVkRmxhZ3MpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5nIGFuIHVucmVjb2duaXplZCBm
bGFnIG9uIHRoZSBjb21tYW5kIGxpbmUuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBVbnJl
Y29nbml6ZWRGbGFnKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFVucmVjb2duaXplZEZsYWcp
IHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVz
dF9icmVha19vbl9mYWlsdXJlIiwKQEAgLTU0ODgsNyArNTk3MSw3IEBAIFRFU1RfRihJbml0R29v
Z2xlVGVzdFRlc3QsIFVucmVjb2duaXplZEZsYWcpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5nIGEg
LS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIExpc3RU
ZXN0c0ZsYWcpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgTGlzdFRlc3RzRmxhZykgewogICAg
IGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICItLWd0ZXN0
X2xpc3RfdGVzdHMiLApAQCAtNTUwNCw3ICs1OTg3LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0
VGVzdCwgTGlzdFRlc3RzRmxhZykgewogfQogCiAvLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X2xp
c3RfdGVzdHMgZmxhZyB3aXRoIGEgInRydWUiIHZhbHVlCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RU
ZXN0LCBMaXN0VGVzdHNUcnVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIExpc3RUZXN0c1Ry
dWUpIHsKICAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAiZm9vLmV4ZSIsCiAgICAg
ICAiLS1ndGVzdF9saXN0X3Rlc3RzPTEiLApAQCAtNTUyMCw3ICs2MDAzLDcgQEAgVEVTVF9GKElu
aXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzVHJ1ZSkgewogfQogCiAvLyBUZXN0cyBoYXZpbmcg
YSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZyB3aXRoIGEgImZhbHNlIiB2YWx1ZQotVEVTVF9GKElu
aXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzRmFsc2UpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVz
dCwgTGlzdFRlc3RzRmFsc2UpIHsKICAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAi
Zm9vLmV4ZSIsCiAgICAgICAiLS1ndGVzdF9saXN0X3Rlc3RzPTAiLApAQCAtNTUzNiw3ICs2MDE5
LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzRmFsc2UpIHsKIH0KIAog
Ly8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2xpc3RfdGVzdHM9Zi4KLVRFU1RfRihJbml0R29vZ2xl
VGVzdFRlc3QsIExpc3RUZXN0c0ZhbHNlX2YpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgTGlz
dFRlc3RzRmFsc2VfZikgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUi
LAogICAgICItLWd0ZXN0X2xpc3RfdGVzdHM9ZiIsCkBAIC01NTUyLDcgKzYwMzUsNyBAQCBURVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0VGVzdHNGYWxzZV9mKSB7CiB9CiAKIC8vIFRlc3Rz
IHBhcnNpbmcgLS1ndGVzdF9saXN0X3Rlc3RzPUYuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0
LCBMaXN0VGVzdHNGYWxzZV9GKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIExpc3RUZXN0c0Zh
bHNlX0YpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAi
LS1ndGVzdF9saXN0X3Rlc3RzPUYiLApAQCAtNTU2OCw3ICs2MDUxLDcgQEAgVEVTVF9GKEluaXRH
b29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzRmFsc2VfRikgewogfQogCiAvLyBUZXN0cyBwYXJzaW5n
IC0tZ3Rlc3Rfb3V0cHV0IChpbnZhbGlkKS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91
dHB1dEVtcHR5KSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIE91dHB1dEVtcHR5KSB7CiAgIGNv
bnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfb3V0cHV0
IiwKQEAgLTU1ODUsNyArNjA2OCw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91dHB1
dEVtcHR5KSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9vdXRwdXQ9eG1sCi1URVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBPdXRwdXRYbWwpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVz
dCwgT3V0cHV0WG1sKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIs
CiAgICAgIi0tZ3Rlc3Rfb3V0cHV0PXhtbCIsCkBAIC01NjAxLDcgKzYwODQsNyBAQCBURVNUX0Yo
SW5pdEdvb2dsZVRlc3RUZXN0LCBPdXRwdXRYbWwpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAt
LWd0ZXN0X291dHB1dD14bWw6ZmlsZQotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgT3V0cHV0
WG1sRmlsZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBPdXRwdXRYbWxGaWxlKSB7CiAgIGNv
bnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfb3V0cHV0
PXhtbDpmaWxlIiwKQEAgLTU2MTcsNyArNjEwMCw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRl
c3QsIE91dHB1dFhtbEZpbGUpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X291dHB1
dD14bWw6ZGlyZWN0b3J5L3BhdGgvCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBPdXRwdXRY
bWxEaXJlY3RvcnkpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgT3V0cHV0WG1sRGlyZWN0b3J5
KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rl
c3Rfb3V0cHV0PXhtbDpkaXJlY3RvcnkvcGF0aC8iLApAQCAtNTYzNCw3ICs2MTE3LDcgQEAgVEVT
VF9GKEluaXRHb29nbGVUZXN0VGVzdCwgT3V0cHV0WG1sRGlyZWN0b3J5KSB7CiB9CiAKIC8vIFRl
c3RzIGhhdmluZyBhIC0tZ3Rlc3RfcHJpbnRfdGltZSBmbGFnCi1URVNUX0YoSW5pdEdvb2dsZVRl
c3RUZXN0LCBQcmludFRpbWVGbGFnKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFByaW50VGlt
ZUZsYWcpIHsKICAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAiZm9vLmV4ZSIsCiAg
ICAgICAiLS1ndGVzdF9wcmludF90aW1lIiwKQEAgLTU2NTAsNyArNjEzMyw3IEBAIFRFU1RfRihJ
bml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZsYWcpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5n
IGEgLS1ndGVzdF9wcmludF90aW1lIGZsYWcgd2l0aCBhICJ0cnVlIiB2YWx1ZQotVEVTVF9GKElu
aXRHb29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lVHJ1ZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0
LCBQcmludFRpbWVUcnVlKSB7CiAgICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICAgImZv
by5leGUiLAogICAgICAgIi0tZ3Rlc3RfcHJpbnRfdGltZT0xIiwKQEAgLTU2NjYsNyArNjE0OSw3
IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZVRydWUpIHsKIH0KIAogLy8g
VGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9wcmludF90aW1lIGZsYWcgd2l0aCBhICJmYWxzZSIgdmFs
dWUKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZhbHNlKSB7CitURVNUX0Yo
UGFyc2VGbGFnc1Rlc3QsIFByaW50VGltZUZhbHNlKSB7CiAgICAgY29uc3QgY2hhciogYXJndltd
ID0gewogICAgICAgImZvby5leGUiLAogICAgICAgIi0tZ3Rlc3RfcHJpbnRfdGltZT0wIiwKQEAg
LTU2ODIsNyArNjE2NSw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZh
bHNlKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9wcmludF90aW1lPWYuCi1URVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBQcmludFRpbWVGYWxzZV9mKSB7CitURVNUX0YoUGFyc2VG
bGFnc1Rlc3QsIFByaW50VGltZUZhbHNlX2YpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewog
ICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9wcmludF90aW1lPWYiLApAQCAtNTY5OCw3ICs2
MTgxLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lRmFsc2VfZikgewog
fQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfcHJpbnRfdGltZT1GLgotVEVTVF9GKEluaXRH
b29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lRmFsc2VfRikgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0
LCBQcmludFRpbWVGYWxzZV9GKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9v
LmV4ZSIsCiAgICAgIi0tZ3Rlc3RfcHJpbnRfdGltZT1GIiwKQEAgLTU3MTQsNyArNjE5Nyw3IEBA
IFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZhbHNlX0YpIHsKIH0KIAogLy8g
VGVzdHMgcGFyc2luZyAtLWd0ZXN0X3JhbmRvbV9zZWVkPW51bWJlcgotVEVTVF9GKEluaXRHb29n
bGVUZXN0VGVzdCwgUmFuZG9tU2VlZCkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBSYW5kb21T
ZWVkKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0t
Z3Rlc3RfcmFuZG9tX3NlZWQ9MTAwMCIsCkBAIC01NzMwLDcgKzYyMTMsNyBAQCBURVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBSYW5kb21TZWVkKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1n
dGVzdF9yZXBlYXQ9bnVtYmVyCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBSZXBlYXQpIHsK
K1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgUmVwZWF0KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9
IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfcmVwZWF0PTEwMDAiLApAQCAtNTc0Niw3
ICs2MjI5LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUmVwZWF0KSB7CiB9CiAKIC8v
IFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxhZwotVEVT
VF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKSB7CitURVNU
X0YoUGFyc2VGbGFnc1Rlc3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzRmxhZykgewogICAgIGNvbnN0
IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICItLWd0ZXN0X2Fsc29f
cnVuX2Rpc2FibGVkX3Rlc3RzIiwKQEAgLTU3NjMsNyArNjI0Niw3IEBAIFRFU1RfRihJbml0R29v
Z2xlVGVzdFRlc3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzRmxhZykgewogfQogCiAvLyBUZXN0cyBo
YXZpbmcgYSAtLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIGZsYWcgd2l0aCBhICJ0cnVl
IiB2YWx1ZQotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNU
cnVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzVHJ1ZSkg
ewogICAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICIt
LWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzPTEiLApAQCAtNTc4MCw3ICs2MjYzLDcgQEAg
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNUcnVlKSB7CiB9
CiAKIC8vIFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxh
ZyB3aXRoIGEgImZhbHNlIiB2YWx1ZQotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQWxzb1J1
bkRpc2FibGVkVGVzdHNGYWxzZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBBbHNvUnVuRGlz
YWJsZWRUZXN0c0ZhbHNlKSB7CiAgICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICAgImZv
by5leGUiLAogICAgICAgIi0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHM9MCIsCkBAIC01
Nzk3LDcgKzYyODAsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBBbHNvUnVuRGlzYWJs
ZWRUZXN0c0ZhbHNlKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9zaHVmZmxlLgot
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU2h1ZmZsZVdpdGhvdXRWYWx1ZSkgeworVEVTVF9G
KFBhcnNlRmxhZ3NUZXN0LCBTaHVmZmxlV2l0aG91dFZhbHVlKSB7CiAgIGNvbnN0IGNoYXIqIGFy
Z3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfc2h1ZmZsZSIsCkBAIC01ODEz
LDcgKzYyOTYsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBTaHVmZmxlV2l0aG91dFZh
bHVlKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9zaHVmZmxlPTAuCi1URVNUX0Yo
SW5pdEdvb2dsZVRlc3RUZXN0LCBTaHVmZmxlRmFsc2VfMCkgeworVEVTVF9GKFBhcnNlRmxhZ3NU
ZXN0LCBTaHVmZmxlRmFsc2VfMCkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZv
by5leGUiLAogICAgICItLWd0ZXN0X3NodWZmbGU9MCIsCkBAIC01ODI4LDkgKzYzMTEsOCBAQCBU
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBTaHVmZmxlRmFsc2VfMCkgewogICBHVEVTVF9URVNU
X1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6U2h1ZmZsZShmYWxzZSksIGZhbHNl
KTsKIH0KIAotLy8gVGVzdHMgcGFyc2luZyBhIC0tZ3Rlc3Rfc2h1ZmZsZSBmbGFnIHRoYXQgaGFz
IGEgInRydWUiCi0vLyBkZWZpbml0aW9uLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU2h1
ZmZsZVRydWUpIHsKKy8vIFRlc3RzIHBhcnNpbmcgYSAtLWd0ZXN0X3NodWZmbGUgZmxhZyB0aGF0
IGhhcyBhICJ0cnVlIiBkZWZpbml0aW9uLgorVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBTaHVmZmxl
VHJ1ZSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICIt
LWd0ZXN0X3NodWZmbGU9MSIsCkBAIC01ODQ2LDcgKzYzMjgsNyBAQCBURVNUX0YoSW5pdEdvb2ds
ZVRlc3RUZXN0LCBTaHVmZmxlVHJ1ZSkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3Rf
c3RhY2tfdHJhY2VfZGVwdGg9bnVtYmVyLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU3Rh
Y2tUcmFjZURlcHRoKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFN0YWNrVHJhY2VEZXB0aCkg
ewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0
X3N0YWNrX3RyYWNlX2RlcHRoPTUiLApAQCAtNTg2MSw4ICs2MzQzLDI0IEBAIFRFU1RfRihJbml0
R29vZ2xlVGVzdFRlc3QsIFN0YWNrVHJhY2VEZXB0aCkgewogICBHVEVTVF9URVNUX1BBUlNJTkdf
RkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6U3RhY2tUcmFjZURlcHRoKDUpLCBmYWxzZSk7CiB9
CiAKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgU3RyZWFtUmVzdWx0VG8pIHsKKyAgY29uc3QgY2hh
ciogYXJndltdID0geworICAgICJmb28uZXhlIiwKKyAgICAiLS1ndGVzdF9zdHJlYW1fcmVzdWx0
X3RvPWxvY2FsaG9zdDoxMjM0IiwKKyAgICBOVUxMCisgIH07CisKKyAgY29uc3QgY2hhciogYXJn
djJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAorICB9OworCisgIEdURVNUX1RFU1Rf
UEFSU0lOR19GTEFHU18oCisgICAgICBhcmd2LCBhcmd2MiwgRmxhZ3M6OlN0cmVhbVJlc3VsdFRv
KCJsb2NhbGhvc3Q6MTIzNCIpLCBmYWxzZSk7Cit9CisKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVz
dF90aHJvd19vbl9mYWlsdXJlLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgVGhyb3dPbkZh
aWx1cmVXaXRob3V0VmFsdWUpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgVGhyb3dPbkZhaWx1
cmVXaXRob3V0VmFsdWUpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhl
IiwKICAgICAiLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlIiwKQEAgLTU4NzgsNyArNjM3Niw3IEBA
IFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFRocm93T25GYWlsdXJlV2l0aG91dFZhbHVlKSB7
CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlPTAuCi1URVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBUaHJvd09uRmFpbHVyZUZhbHNlXzApIHsKK1RFU1RfRihQ
YXJzZUZsYWdzVGVzdCwgVGhyb3dPbkZhaWx1cmVGYWxzZV8wKSB7CiAgIGNvbnN0IGNoYXIqIGFy
Z3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZT0w
IiwKQEAgLTU4OTUsNyArNjM5Myw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFRocm93
T25GYWlsdXJlRmFsc2VfMCkgewogCiAvLyBUZXN0cyBwYXJzaW5nIGEgLS1ndGVzdF90aHJvd19v
bl9mYWlsdXJlIGZsYWcgdGhhdCBoYXMgYSAidHJ1ZSIKIC8vIGRlZmluaXRpb24uCi1URVNUX0Yo
SW5pdEdvb2dsZVRlc3RUZXN0LCBUaHJvd09uRmFpbHVyZVRydWUpIHsKK1RFU1RfRihQYXJzZUZs
YWdzVGVzdCwgVGhyb3dPbkZhaWx1cmVUcnVlKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsK
ICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZT0xIiwKQEAgLTU5
MTAsOSArNjQwOCw5IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFRocm93T25GYWlsdXJl
VHJ1ZSkgewogICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6
VGhyb3dPbkZhaWx1cmUodHJ1ZSksIGZhbHNlKTsKIH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MK
KyMgaWYgR1RFU1RfT1NfV0lORE9XUwogLy8gVGVzdHMgcGFyc2luZyB3aWRlIHN0cmluZ3MuCi1U
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBXaWRlU3RyaW5ncykgeworVEVTVF9GKFBhcnNlRmxh
Z3NUZXN0LCBXaWRlU3RyaW5ncykgewogICBjb25zdCB3Y2hhcl90KiBhcmd2W10gPSB7CiAgICAg
TCJmb28uZXhlIiwKICAgICBMIi0tZ3Rlc3RfZmlsdGVyPUZvbyoiLApAQCAtNTkzNSw3ICs2NDMz
LDEwOCBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBXaWRlU3RyaW5ncykgewogCiAgIEdU
RVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIGV4cGVjdGVkX2ZsYWdzLCBmYWxz
ZSk7CiB9Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKKworI2lmIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KK2NsYXNzIEZsYWdm
aWxlVGVzdCA6IHB1YmxpYyBQYXJzZUZsYWdzVGVzdCB7CisgcHVibGljOgorICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKSB7CisgICAgUGFyc2VGbGFnc1Rlc3Q6OlNldFVwKCk7CisKKyAgICB0ZXN0ZGF0
YV9wYXRoXy5TZXQoaW50ZXJuYWw6OkZpbGVQYXRoKAorICAgICAgICB0ZXN0aW5nOjpUZW1wRGly
KCkgKyBpbnRlcm5hbDo6R2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKworICAg
ICAgICAiX2ZsYWdmaWxlX3Rlc3QiKSk7CisgICAgdGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpS
bURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9w
YXRoXy5DcmVhdGVGb2xkZXIoKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7
CisgICAgdGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0
cigpKTsKKyAgICBQYXJzZUZsYWdzVGVzdDo6VGVhckRvd24oKTsKKyAgfQorCisgIGludGVybmFs
OjpGaWxlUGF0aCBDcmVhdGVGbGFnZmlsZShjb25zdCBjaGFyKiBjb250ZW50cykgeworICAgIGlu
dGVybmFsOjpGaWxlUGF0aCBmaWxlX3BhdGgoaW50ZXJuYWw6OkZpbGVQYXRoOjpHZW5lcmF0ZVVu
aXF1ZUZpbGVOYW1lKAorICAgICAgICB0ZXN0ZGF0YV9wYXRoXywgaW50ZXJuYWw6OkZpbGVQYXRo
KCJ1bmlxdWUiKSwgInR4dCIpKTsKKyAgICBGSUxFKiBmID0gdGVzdGluZzo6aW50ZXJuYWw6OnBv
c2l4OjpGT3BlbihmaWxlX3BhdGguY19zdHIoKSwgInciKTsKKyAgICBmcHJpbnRmKGYsICIlcyIs
IGNvbnRlbnRzKTsKKyAgICBmY2xvc2UoZik7CisgICAgcmV0dXJuIGZpbGVfcGF0aDsKKyAgfQor
CisgcHJpdmF0ZToKKyAgaW50ZXJuYWw6OkZpbGVQYXRoIHRlc3RkYXRhX3BhdGhfOworfTsKKwor
Ly8gVGVzdHMgYW4gZW1wdHkgZmxhZ2ZpbGUuCitURVNUX0YoRmxhZ2ZpbGVUZXN0LCBFbXB0eSkg
eworICBpbnRlcm5hbDo6RmlsZVBhdGggZmxhZ2ZpbGVfcGF0aChDcmVhdGVGbGFnZmlsZSgiIikp
OworICBzdGQ6OnN0cmluZyBmbGFnZmlsZV9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIg
R1RFU1RfRkxBR19QUkVGSVhfICJmbGFnZmlsZT0iKSArIGZsYWdmaWxlX3BhdGguY19zdHIoKTsK
KworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgImZvby5leGUiLAorICAgIGZsYWdmaWxl
X2ZsYWcuY19zdHIoKSwKKyAgICBOVUxMCisgIH07CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9
IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAorICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lO
R19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzKCksIGZhbHNlKTsKK30KKworLy8gVGVzdHMgcGFz
c2luZyBhIG5vbi1lbXB0eSAtLWd0ZXN0X2ZpbHRlciBmbGFnIHZpYSAtLWd0ZXN0X2ZsYWdmaWxl
LgorVEVTVF9GKEZsYWdmaWxlVGVzdCwgRmlsdGVyTm9uRW1wdHkpIHsKKyAgaW50ZXJuYWw6OkZp
bGVQYXRoIGZsYWdmaWxlX3BhdGgoQ3JlYXRlRmxhZ2ZpbGUoCisgICAgICAiLS0iICBHVEVTVF9G
TEFHX1BSRUZJWF8gICJmaWx0ZXI9YWJjIikpOworICBzdGQ6OnN0cmluZyBmbGFnZmlsZV9mbGFn
ID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIgR1RFU1RfRkxBR19QUkVGSVhfICJmbGFnZmlsZT0i
KSArIGZsYWdmaWxlX3BhdGguY19zdHIoKTsKKworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Cisg
ICAgImZvby5leGUiLAorICAgIGZsYWdmaWxlX2ZsYWcuY19zdHIoKSwKKyAgICBOVUxMCisgIH07
CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAor
ICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpG
aWx0ZXIoImFiYyIpLCBmYWxzZSk7Cit9CisKKy8vIFRlc3RzIHBhc3Npbmcgc2V2ZXJhbCBmbGFn
cyB2aWEgLS1ndGVzdF9mbGFnZmlsZS4KK1RFU1RfRihGbGFnZmlsZVRlc3QsIFNldmVyYWxGbGFn
cykgeworICBpbnRlcm5hbDo6RmlsZVBhdGggZmxhZ2ZpbGVfcGF0aChDcmVhdGVGbGFnZmlsZSgK
KyAgICAgICItLSIgIEdURVNUX0ZMQUdfUFJFRklYXyAgImZpbHRlcj1hYmNcbiIKKyAgICAgICIt
LSIgIEdURVNUX0ZMQUdfUFJFRklYXyAgImJyZWFrX29uX2ZhaWx1cmVcbiIKKyAgICAgICItLSIg
IEdURVNUX0ZMQUdfUFJFRklYXyAgImxpc3RfdGVzdHMiKSk7CisgIHN0ZDo6c3RyaW5nIGZsYWdm
aWxlX2ZsYWcgPQorICAgICAgc3RkOjpzdHJpbmcoIi0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImZs
YWdmaWxlPSIpICsgZmxhZ2ZpbGVfcGF0aC5jX3N0cigpOworCisgIGNvbnN0IGNoYXIqIGFyZ3Zb
XSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgZmxhZ2ZpbGVfZmxhZy5jX3N0cigpLAorICAgIE5V
TEwKKyAgfTsKKworICBjb25zdCBjaGFyKiBhcmd2MltdID0geworICAgICJmb28uZXhlIiwKKyAg
ICBOVUxMCisgIH07CisKKyAgRmxhZ3MgZXhwZWN0ZWRfZmxhZ3M7CisgIGV4cGVjdGVkX2ZsYWdz
LmJyZWFrX29uX2ZhaWx1cmUgPSB0cnVlOworICBleHBlY3RlZF9mbGFncy5maWx0ZXIgPSAiYWJj
IjsKKyAgZXhwZWN0ZWRfZmxhZ3MubGlzdF90ZXN0cyA9IHRydWU7CisKKyAgR1RFU1RfVEVTVF9Q
QVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgZXhwZWN0ZWRfZmxhZ3MsIGZhbHNlKTsKK30KKyNl
bmRpZiAgLy8gR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXwogCiAvLyBUZXN0cyBjdXJyZW50
X3Rlc3RfaW5mbygpIGluIFVuaXRUZXN0LgogY2xhc3MgQ3VycmVudFRlc3RJbmZvVGVzdCA6IHB1
YmxpYyBUZXN0IHsKQEAgLTU5OTAsNiArNjU4OSw3IEBAIFRFU1RfRihDdXJyZW50VGVzdEluZm9U
ZXN0LCBXb3Jrc0ZvclNlY29uZFRlc3RJbkFUZXN0Q2FzZSkgewogCiB9ICAvLyBuYW1lc3BhY2Ug
dGVzdGluZwogCisKIC8vIFRoZXNlIHR3byBsaW5lcyB0ZXN0IHRoYXQgd2UgY2FuIGRlZmluZSB0
ZXN0cyBpbiBhIG5hbWVzcGFjZSB0aGF0CiAvLyBoYXMgdGhlIG5hbWUgInRlc3RpbmciIGFuZCBp
cyBuZXN0ZWQgaW4gYW5vdGhlciBuYW1lc3BhY2UuCiBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlIHsK
QEAgLTYwNDgsNyArNjY0OCw3IEBAIFRFU1QoU3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIFVuY29u
ZGl0aW9uYWwpIHsKIAogI2lmZGVmIF9fQk9STEFORENfXwogLy8gU2lsZW5jZXMgd2FybmluZ3M6
ICJDb25kaXRpb24gaXMgYWx3YXlzIHRydWUiLCAiVW5yZWFjaGFibGUgY29kZSIKLSNwcmFnbWEg
b3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAorIyBwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjIC13
LXJjaAogI2VuZGlmCiAKIFRFU1QoU3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIFRydXRoKSB7CkBA
IC02MDcwLDggKzY2NzAsOCBAQCBURVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBUcnV0aDIp
IHsKIH0KIAogI2lmZGVmIF9fQk9STEFORENfXwotLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0ZXIg
cHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHJlc3NlZCB0aGVtCi0jcHJhZ21hIG9w
dGlvbiBwb3AKKy8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9w
dGlvbiBwdXNoIiBzdXBwcmVzc2VkIHRoZW0KKyMgcHJhZ21hIG9wdGlvbiBwb3AKICNlbmRpZgog
CiBURVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBJbnRlZ2VyRXF1YWxzKSB7CkBAIC02MjY0
LDE1ICs2ODY0LDQwIEBAIFRFU1QoQ29sb3JlZE91dHB1dFRlc3QsIFVzZXNDb2xvcnNXaGVuVGVy
bVN1cHBvcnRzQ29sb3JzKSB7CiAgIFNldEVudigiVEVSTSIsICJ4dGVybS1jb2xvciIpOyAgLy8g
VEVSTSBzdXBwb3J0cyBjb2xvcnMuCiAgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUp
KTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KIAorICBTZXRFbnYoIlRFUk0iLCAieHRlcm0tMjU2Y29s
b3IiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VD
b2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInNj
cmVlbiIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVz
ZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAi
c2NyZWVuLTI1NmNvbG9yIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RS
VUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgorCisgIFNldEVu
digiVEVSTSIsICJ0bXV4Iik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RS
VUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgorCisgIFNldEVu
digiVEVSTSIsICJ0bXV4LTI1NmNvbG9yIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAg
RVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgor
CisgIFNldEVudigiVEVSTSIsICJyeHZ0LXVuaWNvZGUiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29s
b3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMg
YSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInJ4dnQtdW5pY29kZS0yNTZjb2xvciIpOyAgLy8g
VEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUp
KTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKwogICBTZXRFbnYoIlRFUk0iLCAibGludXgiKTsgIC8v
IFRFUk0gc3VwcG9ydHMgY29sb3JzLgogICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVl
KSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgImN5Z3dpbiIpOyAg
Ly8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRy
dWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwog
fQogCiAvLyBWZXJpZmllcyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcSB3b3JrcyBpbiBhIG5hbWVz
cGFjZSBzY29wZS4KIAotc3RhdGljIGJvb2wgZHVtbXkxID0gU3RhdGljQXNzZXJ0VHlwZUVxPGJv
b2wsIGJvb2w+KCk7Ci1zdGF0aWMgYm9vbCBkdW1teTIgPSBTdGF0aWNBc3NlcnRUeXBlRXE8Y29u
c3QgaW50LCBjb25zdCBpbnQ+KCk7CitzdGF0aWMgYm9vbCBkdW1teTEgR1RFU1RfQVRUUklCVVRF
X1VOVVNFRF8gPSBTdGF0aWNBc3NlcnRUeXBlRXE8Ym9vbCwgYm9vbD4oKTsKK3N0YXRpYyBib29s
IGR1bW15MiBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9CisgICAgU3RhdGljQXNzZXJ0VHlwZUVx
PGNvbnN0IGludCwgY29uc3QgaW50PigpOwogCiAvLyBWZXJpZmllcyB0aGF0IFN0YXRpY0Fzc2Vy
dFR5cGVFcSB3b3JrcyBpbiBhIGNsYXNzLgogCkBAIC02Mjk1LDE0ICs2OTIwLDYgQEAgVEVTVChT
dGF0aWNBc3NlcnRUeXBlRXFUZXN0LCBDb21waWxlc0ZvckVxdWFsVHlwZXMpIHsKICAgU3RhdGlj
QXNzZXJ0VHlwZUVxPGludCosIEludEFsaWFzKj4oKTsKIH0KIAotVEVTVChHZXRDdXJyZW50T3NT
dGFja1RyYWNlRXhjZXB0VG9wVGVzdCwgUmV0dXJuc1RoZVN0YWNrVHJhY2UpIHsKLSAgdGVzdGlu
Zzo6VW5pdFRlc3QqIGNvbnN0IHVuaXRfdGVzdCA9IHRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0
YW5jZSgpOwotCi0gIC8vIFdlIGRvbid0IGhhdmUgYSBzdGFjayB3YWxrZXIgaW4gR29vZ2xlIFRl
c3QgeWV0LgotICBFWFBFQ1RfU1RSRVEoIiIsIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRU
b3AodW5pdF90ZXN0LCAwKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCBHZXRDdXJyZW50
T3NTdGFja1RyYWNlRXhjZXB0VG9wKHVuaXRfdGVzdCwgMSkuY19zdHIoKSk7Ci19Ci0KIFRFU1Qo
SGFzTm9uZmF0YWxGYWlsdXJlVGVzdCwgUmV0dXJuc0ZhbHNlV2hlblRoZXJlSXNOb0ZhaWx1cmUp
IHsKICAgRVhQRUNUX0ZBTFNFKEhhc05vbmZhdGFsRmFpbHVyZSgpKTsKIH0KQEAgLTY0NjYsNyAr
NzA4Myw3IEBAIFRFU1QoVGVzdEV2ZW50TGlzdGVuZXJzVGVzdCwgQXBwZW5kKSB7CiAvLyBvcmRl
ci4KIGNsYXNzIFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50
TGlzdGVuZXIgewogIHB1YmxpYzoKLSAgU2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIoc3RkOjp2ZWN0
b3I8U3RyaW5nPiogdmVjdG9yLCBjb25zdCBjaGFyKiBpZCkKKyAgU2VxdWVuY2VUZXN0aW5nTGlz
dGVuZXIoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiB2ZWN0b3IsIGNvbnN0IGNoYXIqIGlkKQog
ICAgICAgOiB2ZWN0b3JfKHZlY3RvciksIGlkXyhpZCkge30KIAogIHByb3RlY3RlZDoKQEAgLTY0
ODksMjAgKzcxMDYsMjAgQEAgY2xhc3MgU2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIgOiBwdWJsaWMg
RW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CiAgIH0KIAogIHByaXZhdGU6Ci0gIFN0cmluZyBHZXRF
dmVudERlc2NyaXB0aW9uKGNvbnN0IGNoYXIqIG1ldGhvZCkgeworICBzdGQ6OnN0cmluZyBHZXRF
dmVudERlc2NyaXB0aW9uKGNvbnN0IGNoYXIqIG1ldGhvZCkgewogICAgIE1lc3NhZ2UgbWVzc2Fn
ZTsKICAgICBtZXNzYWdlIDw8IGlkXyA8PCAiLiIgPDwgbWV0aG9kOwogICAgIHJldHVybiBtZXNz
YWdlLkdldFN0cmluZygpOwogICB9CiAKLSAgc3RkOjp2ZWN0b3I8U3RyaW5nPiogdmVjdG9yXzsK
KyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiB2ZWN0b3JfOwogICBjb25zdCBjaGFyKiBjb25z
dCBpZF87CiAKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTZXF1ZW5jZVRlc3Rp
bmdMaXN0ZW5lcik7CiB9OwogCiBURVNUKEV2ZW50TGlzdGVuZXJUZXN0LCBBcHBlbmRLZWVwc09y
ZGVyKSB7Ci0gIHN0ZDo6dmVjdG9yPFN0cmluZz4gdmVjOworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4gdmVjOwogICBUZXN0RXZlbnRMaXN0ZW5lcnMgbGlzdGVuZXJzOwogICBsaXN0ZW5lcnMu
QXBwZW5kKG5ldyBTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lcigmdmVjLCAiMXN0IikpOwogICBsaXN0
ZW5lcnMuQXBwZW5kKG5ldyBTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lcigmdmVjLCAiMm5kIikpOwpA
QCAtNjcxNSw0ICs3MzMyLDQ2NCBAQCBHVEVTVF9URVNUKEFsdGVybmF0aXZlTmFtZVRlc3QsIFdv
cmtzKSB7ICAvLyBHVEVTVF9URVNUIGlzIHRoZSBzYW1lIGFzIFRFU1QuCiAgIC8vIEdURVNUX0ZB
SUwgaXMgdGhlIHNhbWUgYXMgRkFJTC4KICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfRkFJ
TCgpIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIkFu
IGV4cGVjdGVkIGZhaWx1cmUiKTsKKworICAvLyBHVEVTVF9BU1NFUlRfWFkgaXMgdGhlIHNhbWUg
YXMgQVNTRVJUX1hZLgorCisgIEdURVNUX0FTU0VSVF9FUSgwLCAwKTsKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0VRKDAsIDEpIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKyAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0VRKDEsIDApIDw8ICJBbiBleHBlY3RlZCBmYWls
dXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKwor
ICBHVEVTVF9BU1NFUlRfTkUoMCwgMSk7CisgIEdURVNUX0FTU0VSVF9ORSgxLCAwKTsKKyAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX05FKDAsIDApIDw8ICJBbiBleHBlY3RlZCBm
YWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsK
KworICBHVEVTVF9BU1NFUlRfTEUoMCwgMCk7CisgIEdURVNUX0FTU0VSVF9MRSgwLCAxKTsKKyAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0xFKDEsIDApIDw8ICJBbiBleHBlY3Rl
ZCBmYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUi
KTsKKworICBHVEVTVF9BU1NFUlRfTFQoMCwgMSk7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdU
RVNUX0FTU0VSVF9MVCgwLCAwKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEdURVNUX0FTU0VSVF9MVCgxLCAwKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisKKyAgR1RFU1RfQVNT
RVJUX0dFKDAsIDApOworICBHVEVTVF9BU1NFUlRfR0UoMSwgMCk7CisgIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKEdURVNUX0FTU0VSVF9HRSgwLCAxKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisKKyAgR1RFU1Rf
QVNTRVJUX0dUKDEsIDApOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfR1Qo
MCwgMSkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAi
QW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NF
UlRfR1QoMSwgMSkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAg
ICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworfQorCisvLyBUZXN0cyBmb3IgaW50ZXJuYWwg
dXRpbGl0aWVzIG5lY2Vzc2FyeSBmb3IgaW1wbGVtZW50YXRpb24gb2YgdGhlIHVuaXZlcnNhbAor
Ly8gcHJpbnRpbmcuCisvLyBGSVhNRTogRmluZCBhIGJldHRlciBob21lIGZvciB0aGVtLgorCitj
bGFzcyBDb252ZXJzaW9uSGVscGVyQmFzZSB7fTsKK2NsYXNzIENvbnZlcnNpb25IZWxwZXJEZXJp
dmVkIDogcHVibGljIENvbnZlcnNpb25IZWxwZXJCYXNlIHt9OworCisvLyBUZXN0cyB0aGF0IElz
QVByb3RvY29sTWVzc2FnZTxUPjo6dmFsdWUgaXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuCitU
RVNUKElzQVByb3RvY29sTWVzc2FnZVRlc3QsIFZhbHVlSXNDb21waWxlVGltZUNvbnN0YW50KSB7
CisgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhJc0FQcm90b2NvbE1lc3NhZ2U8UHJvdG9jb2xNZXNz
YWdlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF90cnVlKTsKKyAgR1RF
U1RfQ09NUElMRV9BU1NFUlRfKCFJc0FQcm90b2NvbE1lc3NhZ2U8aW50Pjo6dmFsdWUsIGNvbnN0
X2ZhbHNlKTsKK30KKworLy8gVGVzdHMgdGhhdCBJc0FQcm90b2NvbE1lc3NhZ2U8VD46OnZhbHVl
IGlzIHRydWUgd2hlbiBUIGlzCisvLyBwcm90bzI6Ok1lc3NhZ2Ugb3IgYSBzdWItY2xhc3Mgb2Yg
aXQuCitURVNUKElzQVByb3RvY29sTWVzc2FnZVRlc3QsIFZhbHVlSXNUcnVlV2hlblR5cGVJc0FQ
cm90b2NvbE1lc3NhZ2UpIHsKKyAgRVhQRUNUX1RSVUUoSXNBUHJvdG9jb2xNZXNzYWdlPCA6OnBy
b3RvMjo6TWVzc2FnZT46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoSXNBUHJvdG9jb2xNZXNzYWdl
PFByb3RvY29sTWVzc2FnZT46OnZhbHVlKTsKK30KKworLy8gVGVzdHMgdGhhdCBJc0FQcm90b2Nv
bE1lc3NhZ2U8VD46OnZhbHVlIGlzIGZhbHNlIHdoZW4gVCBpcyBuZWl0aGVyCisvLyBQcm90b2Nv
bE1lc3NhZ2Ugbm9yIGEgc3ViLWNsYXNzIG9mIGl0LgorVEVTVChJc0FQcm90b2NvbE1lc3NhZ2VU
ZXN0LCBWYWx1ZUlzRmFsc2VXaGVuVHlwZUlzTm90QVByb3RvY29sTWVzc2FnZSkgeworICBFWFBF
Q1RfRkFMU0UoSXNBUHJvdG9jb2xNZXNzYWdlPGludD46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNF
KElzQVByb3RvY29sTWVzc2FnZTxjb25zdCBDb252ZXJzaW9uSGVscGVyQmFzZT46OnZhbHVlKTsK
K30KKworLy8gVGVzdHMgdGhhdCBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbCBjb21waWxlcyB3aGVu
IHRoZSB0eXBlIGFyZ3VtZW50cyBhcmUKKy8vIGVxdWFsLgorVEVTVChDb21waWxlQXNzZXJ0VHlw
ZXNFcXVhbCwgQ29tcGlsZXNXaGVuVHlwZXNBcmVFcXVhbCkgeworICBDb21waWxlQXNzZXJ0VHlw
ZXNFcXVhbDx2b2lkLCB2b2lkPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQqLCBp
bnQqPigpOworfQorCisvLyBUZXN0cyB0aGF0IFJlbW92ZVJlZmVyZW5jZSBkb2VzIG5vdCBhZmZl
Y3Qgbm9uLXJlZmVyZW5jZSB0eXBlcy4KK1RFU1QoUmVtb3ZlUmVmZXJlbmNlVGVzdCwgRG9lc05v
dEFmZmVjdE5vblJlZmVyZW5jZVR5cGUpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50
LCBSZW1vdmVSZWZlcmVuY2U8aW50Pjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1
YWw8Y29uc3QgY2hhciwgUmVtb3ZlUmVmZXJlbmNlPGNvbnN0IGNoYXI+Ojp0eXBlPigpOworfQor
CisvLyBUZXN0cyB0aGF0IFJlbW92ZVJlZmVyZW5jZSByZW1vdmVzIHJlZmVyZW5jZSBmcm9tIHJl
ZmVyZW5jZSB0eXBlcy4KK1RFU1QoUmVtb3ZlUmVmZXJlbmNlVGVzdCwgUmVtb3Zlc1JlZmVyZW5j
ZSkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQsIFJlbW92ZVJlZmVyZW5jZTxpbnQm
Pjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y29uc3QgY2hhciwgUmVtb3Zl
UmVmZXJlbmNlPGNvbnN0IGNoYXImPjo6dHlwZT4oKTsKK30KKworLy8gVGVzdHMgR1RFU1RfUkVN
T1ZFX1JFRkVSRU5DRV8uCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2
b2lkIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZSgpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1
YWw8VDEsIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfKFQyKT4oKTsKK30KKworVEVTVChSZW1vdmVS
ZWZlcmVuY2VUZXN0LCBNYWNyb1ZlcnNpb24pIHsKKyAgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNl
PGludCwgaW50PigpOworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2U8Y29uc3QgY2hhciwgY29u
c3QgY2hhciY+KCk7Cit9CisKKworLy8gVGVzdHMgdGhhdCBSZW1vdmVDb25zdCBkb2VzIG5vdCBh
ZmZlY3Qgbm9uLWNvbnN0IHR5cGVzLgorVEVTVChSZW1vdmVDb25zdFRlc3QsIERvZXNOb3RBZmZl
Y3ROb25Db25zdFR5cGUpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50LCBSZW1vdmVD
b25zdDxpbnQ+Ojp0eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjaGFyJiwgUmVt
b3ZlQ29uc3Q8Y2hhciY+Ojp0eXBlPigpOworfQorCisvLyBUZXN0cyB0aGF0IFJlbW92ZUNvbnN0
IHJlbW92ZXMgY29uc3QgZnJvbSBjb25zdCB0eXBlcy4KK1RFU1QoUmVtb3ZlQ29uc3RUZXN0LCBS
ZW1vdmVzQ29uc3QpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50LCBSZW1vdmVDb25z
dDxjb25zdCBpbnQ+Ojp0eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjaGFyWzJd
LCBSZW1vdmVDb25zdDxjb25zdCBjaGFyWzJdPjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5
cGVzRXF1YWw8Y2hhclsyXVszXSwgUmVtb3ZlQ29uc3Q8Y29uc3QgY2hhclsyXVszXT46OnR5cGU+
KCk7Cit9CisKKy8vIFRlc3RzIEdURVNUX1JFTU9WRV9DT05TVF8uCisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lkIFRlc3RHVGVzdFJlbW92ZUNvbnN0KCkgeworICBD
b21waWxlQXNzZXJ0VHlwZXNFcXVhbDxUMSwgR1RFU1RfUkVNT1ZFX0NPTlNUXyhUMik+KCk7Cit9
CisKK1RFU1QoUmVtb3ZlQ29uc3RUZXN0LCBNYWNyb1ZlcnNpb24pIHsKKyAgVGVzdEdUZXN0UmVt
b3ZlQ29uc3Q8aW50LCBpbnQ+KCk7CisgIFRlc3RHVGVzdFJlbW92ZUNvbnN0PGRvdWJsZSYsIGRv
dWJsZSY+KCk7CisgIFRlc3RHVGVzdFJlbW92ZUNvbnN0PGNoYXIsIGNvbnN0IGNoYXI+KCk7Cit9
CisKKy8vIFRlc3RzIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXy4KKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgVGVzdEdUZXN0UmVtb3ZlUmVmZXJl
bmNlQW5kQ29uc3QoKSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBHVEVTVF9SRU1P
VkVfUkVGRVJFTkNFX0FORF9DT05TVF8oVDIpPigpOworfQorCitURVNUKFJlbW92ZVJlZmVyZW5j
ZVRvQ29uc3RUZXN0LCBXb3JrcykgeworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25z
dDxpbnQsIGludD4oKTsKKyAgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8ZG91Ymxl
LCBkb3VibGUmPigpOworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxjaGFyLCBj
b25zdCBjaGFyPigpOworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxjaGFyLCBj
b25zdCBjaGFyJj4oKTsKKyAgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8Y29uc3Qg
Y2hhciosIGNvbnN0IGNoYXIqPigpOworfQorCisvLyBUZXN0cyB0aGF0IEFkZFJlZmVyZW5jZSBk
b2VzIG5vdCBhZmZlY3QgcmVmZXJlbmNlIHR5cGVzLgorVEVTVChBZGRSZWZlcmVuY2VUZXN0LCBE
b2VzTm90QWZmZWN0UmVmZXJlbmNlVHlwZSkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxp
bnQmLCBBZGRSZWZlcmVuY2U8aW50Jj46OnR5cGU+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0Vx
dWFsPGNvbnN0IGNoYXImLCBBZGRSZWZlcmVuY2U8Y29uc3QgY2hhciY+Ojp0eXBlPigpOworfQor
CisvLyBUZXN0cyB0aGF0IEFkZFJlZmVyZW5jZSBhZGRzIHJlZmVyZW5jZSB0byBub24tcmVmZXJl
bmNlIHR5cGVzLgorVEVTVChBZGRSZWZlcmVuY2VUZXN0LCBBZGRzUmVmZXJlbmNlKSB7CisgIENv
bXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCYsIEFkZFJlZmVyZW5jZTxpbnQ+Ojp0eXBlPigpOwor
ICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjb25zdCBjaGFyJiwgQWRkUmVmZXJlbmNlPGNvbnN0
IGNoYXI+Ojp0eXBlPigpOworfQorCisvLyBUZXN0cyBHVEVTVF9BRERfUkVGRVJFTkNFXy4KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgVGVzdEdUZXN0QWRkUmVm
ZXJlbmNlKCkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxUMSwgR1RFU1RfQUREX1JFRkVS
RU5DRV8oVDIpPigpOworfQorCitURVNUKEFkZFJlZmVyZW5jZVRlc3QsIE1hY3JvVmVyc2lvbikg
eworICBUZXN0R1Rlc3RBZGRSZWZlcmVuY2U8aW50JiwgaW50PigpOworICBUZXN0R1Rlc3RBZGRS
ZWZlcmVuY2U8Y29uc3QgY2hhciYsIGNvbnN0IGNoYXImPigpOworfQorCisvLyBUZXN0cyBHVEVT
VF9SRUZFUkVOQ0VfVE9fQ09OU1RfLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyPgordm9pZCBUZXN0R1Rlc3RSZWZlcmVuY2VUb0NvbnN0KCkgeworICBDb21waWxlQXNzZXJ0
VHlwZXNFcXVhbDxUMSwgR1RFU1RfUkVGRVJFTkNFX1RPX0NPTlNUXyhUMik+KCk7Cit9CisKK1RF
U1QoR1Rlc3RSZWZlcmVuY2VUb0NvbnN0VGVzdCwgV29ya3MpIHsKKyAgVGVzdEdUZXN0UmVmZXJl
bmNlVG9Db25zdDxjb25zdCBjaGFyJiwgY2hhcj4oKTsKKyAgVGVzdEdUZXN0UmVmZXJlbmNlVG9D
b25zdDxjb25zdCBpbnQmLCBjb25zdCBpbnQ+KCk7CisgIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29u
c3Q8Y29uc3QgZG91YmxlJiwgZG91YmxlPigpOworICBUZXN0R1Rlc3RSZWZlcmVuY2VUb0NvbnN0
PGNvbnN0IHN0ZDo6c3RyaW5nJiwgY29uc3Qgc3RkOjpzdHJpbmcmPigpOworfQorCisvLyBUZXN0
cyB0aGF0IEltcGxpY2l0bHlDb252ZXJ0aWJsZTxUMSwgVDI+Ojp2YWx1ZSBpcyBhIGNvbXBpbGUt
dGltZSBjb25zdGFudC4KK1RFU1QoSW1wbGljaXRseUNvbnZlcnRpYmxlVGVzdCwgVmFsdWVJc0Nv
bXBpbGVUaW1lQ29uc3RhbnQpIHsKKyAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKChJbXBsaWNpdGx5
Q29udmVydGlibGU8aW50LCBpbnQ+Ojp2YWx1ZSksIGNvbnN0X3RydWUpOworICBHVEVTVF9DT01Q
SUxFX0FTU0VSVF8oKCFJbXBsaWNpdGx5Q29udmVydGlibGU8dm9pZCosIGludCo+Ojp2YWx1ZSks
CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9mYWxzZSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgSW1wbGljaXRseUNvbnZlcnRpYmxlPFQxLCBUMj46OnZhbHVlIGlzIHRydWUgd2hlbiBUMSBj
YW4KKy8vIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIFQyLgorVEVTVChJbXBsaWNpdGx5Q29u
dmVydGlibGVUZXN0LCBWYWx1ZUlzVHJ1ZVdoZW5Db252ZXJ0aWJsZSkgeworICBFWFBFQ1RfVFJV
RSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPGludCwgZG91YmxlPjo6dmFsdWUpKTsKKyAgRVhQRUNU
X1RSVUUoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxkb3VibGUsIGludD46OnZhbHVlKSk7CisgIEVY
UEVDVF9UUlVFKChJbXBsaWNpdGx5Q29udmVydGlibGU8aW50Kiwgdm9pZCo+Ojp2YWx1ZSkpOwor
ICBFWFBFQ1RfVFJVRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPGludCosIGNvbnN0IGludCo+Ojp2
YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPENvbnZlcnNpb25I
ZWxwZXJEZXJpdmVkJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBDb252ZXJzaW9uSGVscGVyQmFzZSY+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoSW1wbGlj
aXRseUNvbnZlcnRpYmxlPGNvbnN0IENvbnZlcnNpb25IZWxwZXJCYXNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnNpb25IZWxwZXJCYXNlPjo6dmFsdWUpKTsK
K30KKworLy8gVGVzdHMgdGhhdCBJbXBsaWNpdGx5Q29udmVydGlibGU8VDEsIFQyPjo6dmFsdWUg
aXMgZmFsc2Ugd2hlbiBUMQorLy8gY2Fubm90IGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIFQy
LgorVEVTVChJbXBsaWNpdGx5Q29udmVydGlibGVUZXN0LCBWYWx1ZUlzRmFsc2VXaGVuTm90Q29u
dmVydGlibGUpIHsKKyAgRVhQRUNUX0ZBTFNFKChJbXBsaWNpdGx5Q29udmVydGlibGU8ZG91Ymxl
LCBpbnQqPjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKChJbXBsaWNpdGx5Q29udmVydGlibGU8
dm9pZCosIGludCo+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoKEltcGxpY2l0bHlDb252ZXJ0
aWJsZTxjb25zdCBpbnQqLCBpbnQqPjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKChJbXBsaWNp
dGx5Q29udmVydGlibGU8Q29udmVyc2lvbkhlbHBlckJhc2UmLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uSGVscGVyRGVyaXZlZCY+Ojp2YWx1ZSkpOwor
fQorCisvLyBUZXN0cyBJc0NvbnRhaW5lclRlc3QuCisKK2NsYXNzIE5vbkNvbnRhaW5lciB7fTsK
KworVEVTVChJc0NvbnRhaW5lclRlc3RUZXN0LCBXb3Jrc0Zvck5vbkNvbnRhaW5lcikgeworICBF
WFBFQ1RfRVEoc2l6ZW9mKElzTm90Q29udGFpbmVyKSwgc2l6ZW9mKElzQ29udGFpbmVyVGVzdDxp
bnQ+KDApKSk7CisgIEVYUEVDVF9FUShzaXplb2YoSXNOb3RDb250YWluZXIpLCBzaXplb2YoSXND
b250YWluZXJUZXN0PGNoYXJbNV0+KDApKSk7CisgIEVYUEVDVF9FUShzaXplb2YoSXNOb3RDb250
YWluZXIpLCBzaXplb2YoSXNDb250YWluZXJUZXN0PE5vbkNvbnRhaW5lcj4oMCkpKTsKK30KKwor
VEVTVChJc0NvbnRhaW5lclRlc3RUZXN0LCBXb3Jrc0ZvckNvbnRhaW5lcikgeworICBFWFBFQ1Rf
RVEoc2l6ZW9mKElzQ29udGFpbmVyKSwKKyAgICAgICAgICAgIHNpemVvZihJc0NvbnRhaW5lclRl
c3Q8c3RkOjp2ZWN0b3I8Ym9vbD4gPigwKSkpOworICBFWFBFQ1RfRVEoc2l6ZW9mKElzQ29udGFp
bmVyKSwKKyAgICAgICAgICAgIHNpemVvZihJc0NvbnRhaW5lclRlc3Q8c3RkOjptYXA8aW50LCBk
b3VibGU+ID4oMCkpKTsKK30KKworI2lmIEdURVNUX0xBTkdfQ1hYMTEKK3N0cnVjdCBDb25zdE9u
bHlDb250YWluZXJXaXRoUG9pbnRlckl0ZXJhdG9yIHsKKyAgdXNpbmcgY29uc3RfaXRlcmF0b3Ig
PSBpbnQqOworICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0OworICBjb25zdF9pdGVyYXRv
ciBlbmQoKSBjb25zdDsKK307CisKK3N0cnVjdCBDb25zdE9ubHlDb250YWluZXJXaXRoQ2xhc3NJ
dGVyYXRvciB7CisgIHN0cnVjdCBjb25zdF9pdGVyYXRvciB7CisgICAgY29uc3QgaW50JiBvcGVy
YXRvciooKSBjb25zdDsKKyAgICBjb25zdF9pdGVyYXRvciYgb3BlcmF0b3IrKygvKiBwcmUtaW5j
cmVtZW50ICovKTsKKyAgfTsKKyAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKKyAgY29u
c3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7Cit9OworCitURVNUKElzQ29udGFpbmVyVGVzdFRlc3Qs
IENvbnN0T25seUNvbnRhaW5lcikgeworICBFWFBFQ1RfRVEoc2l6ZW9mKElzQ29udGFpbmVyKSwK
KyAgICAgICAgICAgIHNpemVvZihJc0NvbnRhaW5lclRlc3Q8Q29uc3RPbmx5Q29udGFpbmVyV2l0
aFBvaW50ZXJJdGVyYXRvcj4oMCkpKTsKKyAgRVhQRUNUX0VRKHNpemVvZihJc0NvbnRhaW5lciks
CisgICAgICAgICAgICBzaXplb2YoSXNDb250YWluZXJUZXN0PENvbnN0T25seUNvbnRhaW5lcldp
dGhDbGFzc0l0ZXJhdG9yPigwKSkpOworfQorI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisK
Ky8vIFRlc3RzIElzSGFzaFRhYmxlLgorc3RydWN0IEFIYXNoVGFibGUgeworICB0eXBlZGVmIHZv
aWQgaGFzaGVyOworfTsKK3N0cnVjdCBOb3RSZWFsbHlBSGFzaFRhYmxlIHsKKyAgdHlwZWRlZiB2
b2lkIGhhc2hlcjsKKyAgdHlwZWRlZiB2b2lkIHJldmVyc2VfaXRlcmF0b3I7Cit9OworVEVTVChJ
c0hhc2hUYWJsZSwgQmFzaWMpIHsKKyAgRVhQRUNUX1RSVUUodGVzdGluZzo6aW50ZXJuYWw6Oklz
SGFzaFRhYmxlPEFIYXNoVGFibGU+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRSh0ZXN0aW5nOjpp
bnRlcm5hbDo6SXNIYXNoVGFibGU8Tm90UmVhbGx5QUhhc2hUYWJsZT46OnZhbHVlKTsKKyNpZiBH
VEVTVF9MQU5HX0NYWDExCisgIEVYUEVDVF9GQUxTRSh0ZXN0aW5nOjppbnRlcm5hbDo6SXNIYXNo
VGFibGU8c3RkOjp2ZWN0b3I8aW50Pj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUodGVzdGluZzo6
aW50ZXJuYWw6OklzSGFzaFRhYmxlPHN0ZDo6dW5vcmRlcmVkX3NldDxpbnQ+Pjo6dmFsdWUpOwor
I2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisjaWYgR1RFU1RfSEFTX0hBU0hfU0VUXworICBF
WFBFQ1RfVFJVRSh0ZXN0aW5nOjppbnRlcm5hbDo6SXNIYXNoVGFibGU8X19nbnVfY3h4OjpoYXNo
X3NldDxpbnQ+Pjo6dmFsdWUpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfSEFTSF9TRVRfCit9CisK
Ky8vIFRlc3RzIEFycmF5RXEoKS4KKworVEVTVChBcnJheUVxVGVzdCwgV29ya3NGb3JEZWdlbmVy
YXRlZEFycmF5cykgeworICBFWFBFQ1RfVFJVRShBcnJheUVxKDUsIDVMKSk7CisgIEVYUEVDVF9G
QUxTRShBcnJheUVxKCdhJywgMCkpOworfQorCitURVNUKEFycmF5RXFUZXN0LCBXb3Jrc0Zvck9u
ZURpbWVuc2lvbmFsQXJyYXlzKSB7CisgIC8vIE5vdGUgdGhhdCBhIGFuZCBiIGFyZSBkaXN0aW5j
dCBidXQgY29tcGF0aWJsZSB0eXBlcy4KKyAgY29uc3QgaW50IGFbXSA9IHsgMCwgMSB9OworICBs
b25nIGJbXSA9IHsgMCwgMSB9OworICBFWFBFQ1RfVFJVRShBcnJheUVxKGEsIGIpKTsKKyAgRVhQ
RUNUX1RSVUUoQXJyYXlFcShhLCAyLCBiKSk7CisKKyAgYlswXSA9IDI7CisgIEVYUEVDVF9GQUxT
RShBcnJheUVxKGEsIGIpKTsKKyAgRVhQRUNUX0ZBTFNFKEFycmF5RXEoYSwgMSwgYikpOworfQor
CitURVNUKEFycmF5RXFUZXN0LCBXb3Jrc0ZvclR3b0RpbWVuc2lvbmFsQXJyYXlzKSB7CisgIGNv
bnN0IGNoYXIgYVtdWzNdID0geyAiaGkiLCAibG8iIH07CisgIGNvbnN0IGNoYXIgYltdWzNdID0g
eyAiaGkiLCAibG8iIH07CisgIGNvbnN0IGNoYXIgY1tdWzNdID0geyAiaGkiLCAibGkiIH07CisK
KyAgRVhQRUNUX1RSVUUoQXJyYXlFcShhLCBiKSk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwg
MiwgYikpOworCisgIEVYUEVDVF9GQUxTRShBcnJheUVxKGEsIGMpKTsKKyAgRVhQRUNUX0ZBTFNF
KEFycmF5RXEoYSwgMiwgYykpOworfQorCisvLyBUZXN0cyBBcnJheUF3YXJlRmluZCgpLgorCitU
RVNUKEFycmF5QXdhcmVGaW5kVGVzdCwgV29ya3NGb3JPbmVEaW1lbnNpb25hbEFycmF5KSB7Cisg
IGNvbnN0IGNoYXIgYVtdID0gImhlbGxvIjsKKyAgRVhQRUNUX0VRKGEgKyA0LCBBcnJheUF3YXJl
RmluZChhLCBhICsgNSwgJ28nKSk7CisgIEVYUEVDVF9FUShhICsgNSwgQXJyYXlBd2FyZUZpbmQo
YSwgYSArIDUsICd4JykpOworfQorCitURVNUKEFycmF5QXdhcmVGaW5kVGVzdCwgV29ya3NGb3JU
d29EaW1lbnNpb25hbEFycmF5KSB7CisgIGludCBhW11bMl0gPSB7IHsgMCwgMSB9LCB7IDIsIDMg
fSwgeyA0LCA1IH0gfTsKKyAgY29uc3QgaW50IGJbMl0gPSB7IDIsIDMgfTsKKyAgRVhQRUNUX0VR
KGEgKyAxLCBBcnJheUF3YXJlRmluZChhLCBhICsgMywgYikpOworCisgIGNvbnN0IGludCBjWzJd
ID0geyA2LCA3IH07CisgIEVYUEVDVF9FUShhICsgMywgQXJyYXlBd2FyZUZpbmQoYSwgYSArIDMs
IGMpKTsKK30KKworLy8gVGVzdHMgQ29weUFycmF5KCkuCisKK1RFU1QoQ29weUFycmF5VGVzdCwg
V29ya3NGb3JEZWdlbmVyYXRlZEFycmF5cykgeworICBpbnQgbiA9IDA7CisgIENvcHlBcnJheSgn
YScsICZuKTsKKyAgRVhQRUNUX0VRKCdhJywgbik7Cit9CisKK1RFU1QoQ29weUFycmF5VGVzdCwg
V29ya3NGb3JPbmVEaW1lbnNpb25hbEFycmF5cykgeworICBjb25zdCBjaGFyIGFbM10gPSAiaGki
OworICBpbnQgYlszXTsKKyNpZm5kZWYgX19CT1JMQU5EQ19fICAvLyBDKytCdWlsZGVyIGNhbm5v
dCBjb21waWxlIHNvbWUgYXJyYXkgc2l6ZSBkZWR1Y3Rpb25zLgorICBDb3B5QXJyYXkoYSwgJmIp
OworICBFWFBFQ1RfVFJVRShBcnJheUVxKGEsIGIpKTsKKyNlbmRpZgorCisgIGludCBjWzNdOwor
ICBDb3B5QXJyYXkoYSwgMywgYyk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYykpOworfQor
CitURVNUKENvcHlBcnJheVRlc3QsIFdvcmtzRm9yVHdvRGltZW5zaW9uYWxBcnJheXMpIHsKKyAg
Y29uc3QgaW50IGFbMl1bM10gPSB7IHsgMCwgMSwgMiB9LCB7IDMsIDQsIDUgfSB9OworICBpbnQg
YlsyXVszXTsKKyNpZm5kZWYgX19CT1JMQU5EQ19fICAvLyBDKytCdWlsZGVyIGNhbm5vdCBjb21w
aWxlIHNvbWUgYXJyYXkgc2l6ZSBkZWR1Y3Rpb25zLgorICBDb3B5QXJyYXkoYSwgJmIpOworICBF
WFBFQ1RfVFJVRShBcnJheUVxKGEsIGIpKTsKKyNlbmRpZgorCisgIGludCBjWzJdWzNdOworICBD
b3B5QXJyYXkoYSwgMiwgYyk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYykpOworfQorCisv
LyBUZXN0cyBOYXRpdmVBcnJheS4KKworVEVTVChOYXRpdmVBcnJheVRlc3QsIENvbnN0cnVjdG9y
RnJvbUFycmF5V29ya3MpIHsKKyAgY29uc3QgaW50IGFbM10gPSB7IDAsIDEsIDIgfTsKKyAgTmF0
aXZlQXJyYXk8aW50PiBuYShhLCAzLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOworICBF
WFBFQ1RfRVEoM1UsIG5hLnNpemUoKSk7CisgIEVYUEVDVF9FUShhLCBuYS5iZWdpbigpKTsKK30K
KworVEVTVChOYXRpdmVBcnJheVRlc3QsIENyZWF0ZXNBbmREZWxldGVzQ29weU9mQXJyYXlXaGVu
QXNrZWRUbykgeworICB0eXBlZGVmIGludCBBcnJheVsyXTsKKyAgQXJyYXkqIGEgPSBuZXcgQXJy
YXlbMV07CisgICgqYSlbMF0gPSAwOworICAoKmEpWzFdID0gMTsKKyAgTmF0aXZlQXJyYXk8aW50
PiBuYSgqYSwgMiwgUmVsYXRpb25Ub1NvdXJjZUNvcHkoKSk7CisgIEVYUEVDVF9ORSgqYSwgbmEu
YmVnaW4oKSk7CisgIGRlbGV0ZVtdIGE7CisgIEVYUEVDVF9FUSgwLCBuYS5iZWdpbigpWzBdKTsK
KyAgRVhQRUNUX0VRKDEsIG5hLmJlZ2luKClbMV0pOworCisgIC8vIFdlIHJlbHkgb24gdGhlIGhl
YXAgY2hlY2tlciB0byB2ZXJpZnkgdGhhdCBuYSBkZWxldGVzIHRoZSBjb3B5IG9mCisgIC8vIGFy
cmF5LgorfQorCitURVNUKE5hdGl2ZUFycmF5VGVzdCwgVHlwZU1lbWJlcnNBcmVDb3JyZWN0KSB7
CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxjaGFyLCBOYXRpdmVBcnJheTxjaGFyPjo6dmFsdWVfdHlw
ZT4oKTsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGludFsyXSwgTmF0aXZlQXJyYXk8aW50WzJdPjo6
dmFsdWVfdHlwZT4oKTsKKworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgY2hhciosIE5hdGl2
ZUFycmF5PGNoYXI+Ojpjb25zdF9pdGVyYXRvcj4oKTsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGNv
bnN0IGJvb2woKilbMl0sIE5hdGl2ZUFycmF5PGJvb2xbMl0+Ojpjb25zdF9pdGVyYXRvcj4oKTsK
K30KKworVEVTVChOYXRpdmVBcnJheVRlc3QsIE1ldGhvZHNXb3JrKSB7CisgIGNvbnN0IGludCBh
WzNdID0geyAwLCAxLCAyIH07CisgIE5hdGl2ZUFycmF5PGludD4gbmEoYSwgMywgUmVsYXRpb25U
b1NvdXJjZUNvcHkoKSk7CisgIEFTU0VSVF9FUSgzVSwgbmEuc2l6ZSgpKTsKKyAgRVhQRUNUX0VR
KDMsIG5hLmVuZCgpIC0gbmEuYmVnaW4oKSk7CisKKyAgTmF0aXZlQXJyYXk8aW50Pjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBuYS5iZWdpbigpOworICBFWFBFQ1RfRVEoMCwgKml0KTsKKyAgKytpdDsK
KyAgRVhQRUNUX0VRKDEsICppdCk7CisgIGl0Kys7CisgIEVYUEVDVF9FUSgyLCAqaXQpOworICAr
K2l0OworICBFWFBFQ1RfRVEobmEuZW5kKCksIGl0KTsKKworICBFWFBFQ1RfVFJVRShuYSA9PSBu
YSk7CisKKyAgTmF0aXZlQXJyYXk8aW50PiBuYTIoYSwgMywgUmVsYXRpb25Ub1NvdXJjZVJlZmVy
ZW5jZSgpKTsKKyAgRVhQRUNUX1RSVUUobmEgPT0gbmEyKTsKKworICBjb25zdCBpbnQgYjFbM10g
PSB7IDAsIDEsIDEgfTsKKyAgY29uc3QgaW50IGIyWzRdID0geyAwLCAxLCAyLCAzIH07CisgIEVY
UEVDVF9GQUxTRShuYSA9PSBOYXRpdmVBcnJheTxpbnQ+KGIxLCAzLCBSZWxhdGlvblRvU291cmNl
UmVmZXJlbmNlKCkpKTsKKyAgRVhQRUNUX0ZBTFNFKG5hID09IE5hdGl2ZUFycmF5PGludD4oYjIs
IDQsIFJlbGF0aW9uVG9Tb3VyY2VDb3B5KCkpKTsKK30KKworVEVTVChOYXRpdmVBcnJheVRlc3Qs
IFdvcmtzRm9yVHdvRGltZW5zaW9uYWxBcnJheSkgeworICBjb25zdCBjaGFyIGFbMl1bM10gPSB7
ICJoaSIsICJsbyIgfTsKKyAgTmF0aXZlQXJyYXk8Y2hhclszXT4gbmEoYSwgMiwgUmVsYXRpb25U
b1NvdXJjZVJlZmVyZW5jZSgpKTsKKyAgQVNTRVJUX0VRKDJVLCBuYS5zaXplKCkpOworICBFWFBF
Q1RfRVEoYSwgbmEuYmVnaW4oKSk7Cit9CisKKy8vIFRlc3RzIFNraXBQcmVmaXgoKS4KKworVEVT
VChTa2lwUHJlZml4VGVzdCwgU2tpcHNXaGVuUHJlZml4TWF0Y2hlcykgeworICBjb25zdCBjaGFy
KiBjb25zdCBzdHIgPSAiaGVsbG8iOworCisgIGNvbnN0IGNoYXIqIHAgPSBzdHI7CisgIEVYUEVD
VF9UUlVFKFNraXBQcmVmaXgoIiIsICZwKSk7CisgIEVYUEVDVF9FUShzdHIsIHApOworCisgIHAg
PSBzdHI7CisgIEVYUEVDVF9UUlVFKFNraXBQcmVmaXgoImhlbGwiLCAmcCkpOworICBFWFBFQ1Rf
RVEoc3RyICsgNCwgcCk7Cit9CisKK1RFU1QoU2tpcFByZWZpeFRlc3QsIERvZXNOb3RTa2lwV2hl
blByZWZpeERvZXNOb3RNYXRjaCkgeworICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAid29ybGQi
OworCisgIGNvbnN0IGNoYXIqIHAgPSBzdHI7CisgIEVYUEVDVF9GQUxTRShTa2lwUHJlZml4KCJX
IiwgJnApKTsKKyAgRVhQRUNUX0VRKHN0ciwgcCk7CisKKyAgcCA9IHN0cjsKKyAgRVhQRUNUX0ZB
TFNFKFNraXBQcmVmaXgoIndvcmxkISIsICZwKSk7CisgIEVYUEVDVF9FUShzdHIsIHApOworfQor
CisvLyBUZXN0cyBhZF9ob2NfdGVzdF9yZXN1bHQoKS4KKworY2xhc3MgQWRIb2NUZXN0UmVzdWx0
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHN0YXRpYyB2b2lk
IFNldFVwVGVzdENhc2UoKSB7CisgICAgRkFJTCgpIDw8ICJBIGZhaWx1cmUgaGFwcGVuZWQgaW5z
aWRlIFNldFVwVGVzdENhc2UoKS4iOworICB9Cit9OworCitURVNUX0YoQWRIb2NUZXN0UmVzdWx0
VGVzdCwgQWRIb2NUZXN0UmVzdWx0Rm9yVGVzdENhc2VTaG93c0ZhaWx1cmUpIHsKKyAgY29uc3Qg
dGVzdGluZzo6VGVzdFJlc3VsdCYgdGVzdF9yZXN1bHQgPSB0ZXN0aW5nOjpVbml0VGVzdDo6R2V0
SW5zdGFuY2UoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtPmN1cnJlbnRfdGVzdF9jYXNlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLT5hZF9ob2NfdGVzdF9yZXN1bHQoKTsKKyAgRVhQRUNUX1RSVUUodGVz
dF9yZXN1bHQuRmFpbGVkKCkpOworfQorCitURVNUX0YoQWRIb2NUZXN0UmVzdWx0VGVzdCwgQWRI
b2NUZXN0UmVzdWx0VGVzdEZvclVuaXRUZXN0RG9lc05vdFNob3dGYWlsdXJlKSB7CisgIGNvbnN0
IHRlc3Rpbmc6OlRlc3RSZXN1bHQmIHRlc3RfcmVzdWx0ID0KKyAgICAgIHRlc3Rpbmc6OlVuaXRU
ZXN0OjpHZXRJbnN0YW5jZSgpLT5hZF9ob2NfdGVzdF9yZXN1bHQoKTsKKyAgRVhQRUNUX0ZBTFNF
KHRlc3RfcmVzdWx0LkZhaWxlZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MKaW5kZXggNjY0YmFhZDJh
Yjg3M2JhMzg4MTkzYTY1ZDJiNzlmZDgzZGIyZTc3NS4uYTM4ZWJhYzgzOWY3YjRmY2Y3MTA5MzUx
YzRkM2ZlY2RlMjcxNWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MKQEAgLTI3LDEyICsyNywxMCBAQAog
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogLy8KLS8vIEF1dGhvcjoga2VpdGgucmF5
QGdtYWlsLmNvbSAoS2VpdGggUmF5KQotLy8KIC8vIGd0ZXN0X3htbF9vdXRmaWxlMV90ZXN0XyB3
cml0ZXMgc29tZSB4bWwgdmlhIFRlc3RQcm9wZXJ0eSB1c2VkIGJ5CiAvLyBndGVzdF94bWxfb3V0
ZmlsZXNfdGVzdC5weQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgogCiBjbGFzcyBQcm9wZXJ0eU9uZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
ICBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X3htbF9vdXRmaWxlMl90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfLmNjCmluZGV4IDM0MTFhM2QzOGI4NjEwNGM2YTYwYzYw
ZDExMzFjYjY2YWE1NGMxOTIuLmFmYWYxNWE1ZGMzMjMxNWQ1MWFjN2EwYTU1NWY4M2NhYjQxZWY3
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291
dGZpbGUyX3Rlc3RfLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
eG1sX291dGZpbGUyX3Rlc3RfLmNjCkBAIC0yNywxMiArMjcsMTAgQEAKIC8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRob3I6IGtlaXRoLnJheUBnbWFpbC5jb20gKEtl
aXRoIFJheSkKLS8vCiAvLyBndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8gd3JpdGVzIHNvbWUgeG1s
IHZpYSBUZXN0UHJvcGVydHkgdXNlZCBieQogLy8gZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkK
IAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAog
Y2xhc3MgUHJvcGVydHlUd28gOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgcHJvdGVjdGVkOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0Zmls
ZXNfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZp
bGVzX3Rlc3QucHkKaW5kZXggMGZlOTQ3ZjA4NGM4ZjU2ZjRhZGY1ZDBjOWZhMDI2Y2UyOTk3NWQy
Yy4uMmMwMzFmZjhkYmE1MTJjMmUwNGUyNzA1MzRlMjlmY2ViZTg4NmNmOSAxMDA3NTUKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weQor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlc190ZXN0
LnB5CkBAIC0zMSwzMSArMzEsMzkgQEAKIAogIiIiVW5pdCB0ZXN0IGZvciB0aGUgZ3Rlc3RfeG1s
X291dHB1dCBtb2R1bGUuIiIiCiAKLV9fYXV0aG9yX18gPSAia2VpdGgucmF5QGdtYWlsLmNvbSAo
S2VpdGggUmF5KSIKLQogaW1wb3J0IG9zCiBmcm9tIHhtbC5kb20gaW1wb3J0IG1pbmlkb20sIE5v
ZGUKLQogaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKIGltcG9ydCBndGVzdF94bWxfdGVzdF91dGls
cwogCi0KIEdURVNUX09VVFBVVF9TVUJESVIgPSAieG1sX291dGZpbGVzIgogR1RFU1RfT1VUUFVU
XzFfVEVTVCA9ICJndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8iCiBHVEVTVF9PVVRQVVRfMl9URVNU
ID0gImd0ZXN0X3htbF9vdXRmaWxlMl90ZXN0XyIKIAogRVhQRUNURURfWE1MXzEgPSAiIiI8P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMgdGVzdHM9IjEi
IGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiBuYW1lPSJBbGxU
ZXN0cyI+Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBl
cnJvcnM9IjAiIHRpbWU9IioiIHRpbWVzdGFtcD0iKiIgbmFtZT0iQWxsVGVzdHMiPgogICA8dGVz
dHN1aXRlIG5hbWU9IlByb3BlcnR5T25lIiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVk
PSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJUZXN0U29tZVBy
b3BlcnRpZXMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlByb3BlcnR5T25lIiBT
ZXRVcFByb3A9IjEiIFRlc3RTb21lUHJvcGVydHk9IjEiIFRlYXJEb3duUHJvcD0iMSIgLz4KKyAg
ICA8dGVzdGNhc2UgbmFtZT0iVGVzdFNvbWVQcm9wZXJ0aWVzIiBzdGF0dXM9InJ1biIgdGltZT0i
KiIgY2xhc3NuYW1lPSJQcm9wZXJ0eU9uZSI+CisgICAgICA8cHJvcGVydGllcz4KKyAgICAgICAg
PHByb3BlcnR5IG5hbWU9IlNldFVwUHJvcCIgdmFsdWU9IjEiLz4KKyAgICAgICAgPHByb3BlcnR5
IG5hbWU9IlRlc3RTb21lUHJvcGVydHkiIHZhbHVlPSIxIi8+CisgICAgICAgIDxwcm9wZXJ0eSBu
YW1lPSJUZWFyRG93blByb3AiIHZhbHVlPSIxIi8+CisgICAgICA8L3Byb3BlcnRpZXM+CisgICAg
PC90ZXN0Y2FzZT4KICAgPC90ZXN0c3VpdGU+CiA8L3Rlc3RzdWl0ZXM+CiAiIiIKIAogRVhQRUNU
RURfWE1MXzIgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHRl
c3RzdWl0ZXMgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0
aW1lPSIqIiBuYW1lPSJBbGxUZXN0cyI+Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMSIgZmFpbHVyZXM9
IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiIHRpbWVzdGFtcD0iKiIgbmFtZT0i
QWxsVGVzdHMiPgogICA8dGVzdHN1aXRlIG5hbWU9IlByb3BlcnR5VHdvIiB0ZXN0cz0iMSIgZmFp
bHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgotICAgIDx0ZXN0Y2Fz
ZSBuYW1lPSJUZXN0U29tZVByb3BlcnRpZXMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25h
bWU9IlByb3BlcnR5VHdvIiBTZXRVcFByb3A9IjIiIFRlc3RTb21lUHJvcGVydHk9IjIiIFRlYXJE
b3duUHJvcD0iMiIgLz4KKyAgICA8dGVzdGNhc2UgbmFtZT0iVGVzdFNvbWVQcm9wZXJ0aWVzIiBz
dGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVR3byI+CisgICAgICA8cHJv
cGVydGllcz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9IlNldFVwUHJvcCIgdmFsdWU9IjIiLz4K
KyAgICAgICAgPHByb3BlcnR5IG5hbWU9IlRlc3RTb21lUHJvcGVydHkiIHZhbHVlPSIyIi8+Cisg
ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJUZWFyRG93blByb3AiIHZhbHVlPSIyIi8+CisgICAgICA8
L3Byb3BlcnRpZXM+CisgICAgPC90ZXN0Y2FzZT4KICAgPC90ZXN0c3VpdGU+CiA8L3Rlc3RzdWl0
ZXM+CiAiIiIKQEAgLTEwMywxMSArMTExLDExIEBAIGNsYXNzIEdUZXN0WE1MT3V0RmlsZXNUZXN0
KGd0ZXN0X3htbF90ZXN0X3V0aWxzLkdUZXN0WE1MVGVzdENhc2UpOgogICAgIHNlbGYuYXNzZXJ0
XyhwLmV4aXRlZCkKICAgICBzZWxmLmFzc2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkKIAotICAg
ICMgVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IGxpYnRvb2wgY2F1c2VzIHRoZSBidWlsdCB0ZXN0IGJp
bmFyeSB0byBiZQorICAgICMgRklYTUU6IGxpYnRvb2wgY2F1c2VzIHRoZSBidWlsdCB0ZXN0IGJp
bmFyeSB0byBiZQogICAgICMgICBuYW1lZCBsdC1ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8gaW5z
dGVhZCBvZgotICAgICMgICBndGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8uICBUbyBhY2NvdW50IGZv
ciB0aGlzIHBvc3NpYmlsbGl0eSwgd2UKKyAgICAjICAgZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3Rf
LiAgVG8gYWNjb3VudCBmb3IgdGhpcyBwb3NzaWJpbGl0eSwgd2UKICAgICAjICAgYWxsb3cgYm90
aCBuYW1lcyBpbiB0aGUgZm9sbG93aW5nIGNvZGUuICBXZSBzaG91bGQgcmVtb3ZlIHRoaXMKLSAg
ICAjICAgaGFjayB3aGVuIENoYW5kbGVyIENhcnJ1dGgncyBsaWJ0b29sIHJlcGxhY2VtZW50IHRv
b2wgaXMgcmVhZHkuCisgICAgIyAgIHdoZW4gbGlidG9vbCByZXBsYWNlbWVudCB0b29sIGlzIHJl
YWR5LgogICAgIG91dHB1dF9maWxlX25hbWUxID0gdGVzdF9uYW1lICsgIi54bWwiCiAgICAgb3V0
cHV0X2ZpbGUxID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2Rpcl8sIG91dHB1dF9maWxlX25h
bWUxKQogICAgIG91dHB1dF9maWxlX25hbWUyID0gJ2x0LScgKyBvdXRwdXRfZmlsZV9uYW1lMQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0
X3VuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0
cHV0X3VuaXR0ZXN0LnB5CmluZGV4IDZkNDQ5MjljYWNhMDNlYzZmYWU0NDcxZWQxYmExZDQxNmE1
ZGZjZTAuLmZhZWRkNGU2Y2U3MmRhYmVmNzg2YTMxMmVmNGFlY2E1YzVkMjliZmEgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVz
dC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRf
dW5pdHRlc3QucHkKQEAgLTMxLDYyICszMSw3NiBAQAogCiAiIiJVbml0IHRlc3QgZm9yIHRoZSBn
dGVzdF94bWxfb3V0cHV0IG1vZHVsZSIiIgogCi1fX2F1dGhvcl9fID0gJ2VlZmFjbUBnbWFpbC5j
b20gKFNlYW4gTWNhZmVlKScKLQoraW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgZXJybm8KIGltcG9y
dCBvcworaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBmcm9tIHhtbC5kb20gaW1wb3J0IG1pbmlkb20s
IE5vZGUKIAogaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKIGltcG9ydCBndGVzdF94bWxfdGVzdF91
dGlscwogCitHVEVTVF9GSUxURVJfRkxBRyA9ICctLWd0ZXN0X2ZpbHRlcicKK0dURVNUX0xJU1Rf
VEVTVFNfRkxBRyA9ICctLWd0ZXN0X2xpc3RfdGVzdHMnCitHVEVTVF9PVVRQVVRfRkxBRyA9ICct
LWd0ZXN0X291dHB1dCcKK0dURVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUgPSAndGVzdF9kZXRhaWwu
eG1sJworR1RFU1RfUFJPR1JBTV9OQU1FID0gJ2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfJwor
CisjIFRoZSBmbGFnIGluZGljYXRpbmcgc3RhY2t0cmFjZXMgYXJlIG5vdCBzdXBwb3J0ZWQKK05P
X1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFHID0gJy0tbm9fc3RhY2t0cmFjZV9zdXBwb3J0JwogCi1H
VEVTVF9PVVRQVVRfRkxBRyAgICAgICAgID0gIi0tZ3Rlc3Rfb3V0cHV0IgotR1RFU1RfREVGQVVM
VF9PVVRQVVRfRklMRSA9ICJ0ZXN0X2RldGFpbC54bWwiCi1HVEVTVF9QUk9HUkFNX05BTUUgPSAi
Z3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8iCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMg
Zm9yIHRlc3Qgc2hhcmRpbmcuCitUT1RBTF9TSEFSRFNfRU5WX1ZBUiA9ICdHVEVTVF9UT1RBTF9T
SEFSRFMnCitTSEFSRF9JTkRFWF9FTlZfVkFSID0gJ0dURVNUX1NIQVJEX0lOREVYJworU0hBUkRf
U1RBVFVTX0ZJTEVfRU5WX1ZBUiA9ICdHVEVTVF9TSEFSRF9TVEFUVVNfRklMRScKIAotU1VQUE9S
VFNfU1RBQ0tfVFJBQ0VTID0gRmFsc2UKK1NVUFBPUlRTX1NUQUNLX1RSQUNFUyA9IE5PX1NUQUNL
VFJBQ0VfU1VQUE9SVF9GTEFHIG5vdCBpbiBzeXMuYXJndgogCiBpZiBTVVBQT1JUU19TVEFDS19U
UkFDRVM6Ci0gIFNUQUNLX1RSQUNFX1RFTVBMQVRFID0gIlxuU3RhY2sgdHJhY2U6XG4qIgorICBT
VEFDS19UUkFDRV9URU1QTEFURSA9ICdcblN0YWNrIHRyYWNlOlxuKicKIGVsc2U6Ci0gIFNUQUNL
X1RSQUNFX1RFTVBMQVRFID0gIiIKKyAgU1RBQ0tfVFJBQ0VfVEVNUExBVEUgPSAnJworICAjIHVu
aXR0ZXN0Lm1haW4oKSBjYW4ndCBoYW5kbGUgdW5rbm93biBmbGFncworICBzeXMuYXJndi5yZW1v
dmUoTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZMQUcpCiAKIEVYUEVDVEVEX05PTl9FTVBUWV9YTUwg
PSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMg
dGVzdHM9IjE1IiBmYWlsdXJlcz0iNCIgZGlzYWJsZWQ9IjIiIGVycm9ycz0iMCIgdGltZT0iKiIg
bmFtZT0iQWxsVGVzdHMiPgorPHRlc3RzdWl0ZXMgdGVzdHM9IjIzIiBmYWlsdXJlcz0iNCIgZGlz
YWJsZWQ9IjIiIGVycm9ycz0iMCIgdGltZT0iKiIgdGltZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0
cyIgYWRfaG9jX3Byb3BlcnR5PSI0MiI+CiAgIDx0ZXN0c3VpdGUgbmFtZT0iU3VjY2Vzc2Z1bFRl
c3QiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0i
KiI+CiAgICAgPHRlc3RjYXNlIG5hbWU9IlN1Y2NlZWRzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIg
Y2xhc3NuYW1lPSJTdWNjZXNzZnVsVGVzdCIvPgogICA8L3Rlc3RzdWl0ZT4KICAgPHRlc3RzdWl0
ZSBuYW1lPSJGYWlsZWRUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjEiIGRpc2FibGVkPSIwIiBl
cnJvcnM9IjAiIHRpbWU9IioiPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJGYWlscyIgc3RhdHVzPSJy
dW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iRmFpbGVkVGVzdCI+Ci0gICAgICA8ZmFpbHVyZSBtZXNz
YWdlPSJWYWx1ZSBvZjogMiYjeDBBO0V4cGVjdGVkOiAxIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0
X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioKLVZhbHVlIG9mOiAyCi1FeHBlY3RlZDogMSUoc3Rh
Y2spc11dPjwvZmFpbHVyZT4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Imd0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3RfLmNjOiomI3gwQTtFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6
JiN4MEE7ICAxJiN4MEE7ICAyIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5p
dHRlc3RfLmNjOioKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICAy
JShzdGFjaylzXV0+PC9mYWlsdXJlPgogICAgIDwvdGVzdGNhc2U+CiAgIDwvdGVzdHN1aXRlPgog
ICA8dGVzdHN1aXRlIG5hbWU9Ik1peGVkUmVzdWx0VGVzdCIgdGVzdHM9IjMiIGZhaWx1cmVzPSIx
IiBkaXNhYmxlZD0iMSIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAgICA8dGVzdGNhc2UgbmFtZT0i
U3VjY2VlZHMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ik1peGVkUmVzdWx0VGVz
dCIvPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJGYWlscyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNs
YXNzbmFtZT0iTWl4ZWRSZXN1bHRUZXN0Ij4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IlZhbHVl
IG9mOiAyJiN4MEE7RXhwZWN0ZWQ6IDEiIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1
dF91bml0dGVzdF8uY2M6KgotVmFsdWUgb2Y6IDIKLUV4cGVjdGVkOiAxJShzdGFjaylzXV0+PC9m
YWlsdXJlPgotICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IDMmI3gwQTtFeHBlY3Rl
ZDogMiIgdHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCi1W
YWx1ZSBvZjogMwotRXhwZWN0ZWQ6IDIlKHN0YWNrKXNdXT48L2ZhaWx1cmU+CisgICAgICA8ZmFp
bHVyZSBtZXNzYWdlPSJndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqJiN4MEE7RXhwZWN0
ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOiYjeDBBOyAgMSYjeDBBOyAgMiIgdHlwZT0iIj48
IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCitFeHBlY3RlZCBlcXVhbGl0
eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAgMiUoc3RhY2spc11dPjwvZmFpbHVyZT4KKyAgICAg
IDxmYWlsdXJlIG1lc3NhZ2U9Imd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOiomI3gwQTtF
eHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6JiN4MEE7ICAyJiN4MEE7ICAzIiB0eXBl
PSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioKK0V4cGVjdGVkIGVx
dWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMgorICAzJShzdGFjaylzXV0+PC9mYWlsdXJlPgog
ICAgIDwvdGVzdGNhc2U+CiAgICAgPHRlc3RjYXNlIG5hbWU9IkRJU0FCTEVEX3Rlc3QiIHN0YXR1
cz0ibm90cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ik1peGVkUmVzdWx0VGVzdCIvPgogICA8L3Rl
c3RzdWl0ZT4KICAgPHRlc3RzdWl0ZSBuYW1lPSJYbWxRdW90aW5nVGVzdCIgdGVzdHM9IjEiIGZh
aWx1cmVzPSIxIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAgICA8dGVzdGNh
c2UgbmFtZT0iT3V0cHV0c0NEYXRhIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJY
bWxRdW90aW5nVGVzdCI+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJGYWlsZWQmI3gwQTtYTUwg
b3V0cHV0OiAmbHQ7P3htbCBlbmNvZGluZz0mcXVvdDt1dGYtOCZxdW90OyZndDsmbHQ7dG9wJmd0
OyZsdDshW0NEQVRBW2NkYXRhIHRleHRdXSZndDsmbHQ7L3RvcCZndDsiIHR5cGU9IiI+PCFbQ0RB
VEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgorICAgICAgPGZhaWx1cmUgbWVzc2Fn
ZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBBO0ZhaWxlZCYjeDBBO1hNTCBv
dXRwdXQ6ICZsdDs/eG1sIGVuY29kaW5nPSZxdW90O3V0Zi04JnF1b3Q7Jmd0OyZsdDt0b3AmZ3Q7
Jmx0OyFbQ0RBVEFbY2RhdGEgdGV4dF1dJmd0OyZsdDsvdG9wJmd0OyIgdHlwZT0iIj48IVtDREFU
QVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCiBGYWlsZWQKIFhNTCBvdXRwdXQ6IDw/
eG1sIGVuY29kaW5nPSJ1dGYtOCI+PHRvcD48IVtDREFUQVtjZGF0YSB0ZXh0XV0+XV0mZ3Q7PCFb
Q0RBVEFbPC90b3A+JShzdGFjaylzXV0+PC9mYWlsdXJlPgogICAgIDwvdGVzdGNhc2U+CiAgIDwv
dGVzdHN1aXRlPgogICA8dGVzdHN1aXRlIG5hbWU9IkludmFsaWRDaGFyYWN0ZXJzVGVzdCIgdGVz
dHM9IjEiIGZhaWx1cmVzPSIxIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAg
ICA8dGVzdGNhc2UgbmFtZT0iSW52YWxpZENoYXJhY3RlcnNJbk1lc3NhZ2UiIHN0YXR1cz0icnVu
IiB0aW1lPSIqIiBjbGFzc25hbWU9IkludmFsaWRDaGFyYWN0ZXJzVGVzdCI+Ci0gICAgICA8ZmFp
bHVyZSBtZXNzYWdlPSJGYWlsZWQmI3gwQTtJbnZhbGlkIGNoYXJhY3RlcnMgaW4gYnJhY2tldHMg
W10iIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgorICAg
ICAgPGZhaWx1cmUgbWVzc2FnZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBB
O0ZhaWxlZCYjeDBBO0ludmFsaWQgY2hhcmFjdGVycyBpbiBicmFja2V0cyBbXSIgdHlwZT0iIj48
IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCiBGYWlsZWQKIEludmFsaWQg
Y2hhcmFjdGVycyBpbiBicmFja2V0cyBbXSUoc3RhY2spc11dPjwvZmFpbHVyZT4KICAgICA8L3Rl
c3RjYXNlPgpAQCAtOTQsNDUgKzEwOCwxNTIgQEAgSW52YWxpZCBjaGFyYWN0ZXJzIGluIGJyYWNr
ZXRzIFtdJShzdGFjaylzXV0+PC9mYWlsdXJlPgogICA8dGVzdHN1aXRlIG5hbWU9IkRpc2FibGVk
VGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMSIgZXJyb3JzPSIwIiB0aW1l
PSIqIj4KICAgICA8dGVzdGNhc2UgbmFtZT0iRElTQUJMRURfdGVzdF9ub3RfcnVuIiBzdGF0dXM9
Im5vdHJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJEaXNhYmxlZFRlc3QiLz4KICAgPC90ZXN0c3Vp
dGU+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0IiB0ZXN0cz0iNCIg
ZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgotICAgIDx0ZXN0
Y2FzZSBuYW1lPSJPbmVQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0i
UHJvcGVydHlSZWNvcmRpbmdUZXN0IiBrZXlfMT0iMSIvPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJJ
bnRWYWx1ZWRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVy
dHlSZWNvcmRpbmdUZXN0IiBrZXlfaW50PSIxIi8+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IlRocmVl
UHJvcGVydGllcyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNv
cmRpbmdUZXN0IiBrZXlfMT0iMSIga2V5XzI9IjIiIGtleV8zPSIzIi8+Ci0gICAgPHRlc3RjYXNl
IG5hbWU9IlR3b1ZhbHVlc0Zvck9uZUtleVVzZXNMYXN0VmFsdWUiIHN0YXR1cz0icnVuIiB0aW1l
PSIqIiBjbGFzc25hbWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCIga2V5XzE9IjIiLz4KKyAgPHRl
c3RzdWl0ZSBuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiIHRlc3RzPSI0IiBmYWlsdXJlcz0i
MCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIgU2V0VXBUZXN0Q2FzZT0ieWVzIiBU
ZWFyRG93blRlc3RDYXNlPSJheWUiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJPbmVQcm9wZXJ0eSIg
c3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0Ij4K
KyAgICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ia2V5XzEiIHZhbHVl
PSIxIi8+CisgICAgICA8L3Byb3BlcnRpZXM+CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8dGVzdGNh
c2UgbmFtZT0iSW50VmFsdWVkUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25h
bWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCI+CisgICAgICA8cHJvcGVydGllcz4KKyAgICAgICAg
PHByb3BlcnR5IG5hbWU9ImtleV9pbnQiIHZhbHVlPSIxIi8+CisgICAgICA8L3Byb3BlcnRpZXM+
CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8dGVzdGNhc2UgbmFtZT0iVGhyZWVQcm9wZXJ0aWVzIiBz
dGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiPgor
ICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJrZXlfMSIgdmFsdWU9
IjEiLz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImtleV8yIiB2YWx1ZT0iMiIvPgorICAgICAg
ICA8cHJvcGVydHkgbmFtZT0ia2V5XzMiIHZhbHVlPSIzIi8+CisgICAgICA8L3Byb3BlcnRpZXM+
CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8dGVzdGNhc2UgbmFtZT0iVHdvVmFsdWVzRm9yT25lS2V5
VXNlc0xhc3RWYWx1ZSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlS
ZWNvcmRpbmdUZXN0Ij4KKyAgICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICA8cHJvcGVydHkgbmFt
ZT0ia2V5XzEiIHZhbHVlPSIyIi8+CisgICAgICA8L3Byb3BlcnRpZXM+CisgICAgPC90ZXN0Y2Fz
ZT4KICAgPC90ZXN0c3VpdGU+CiAgIDx0ZXN0c3VpdGUgbmFtZT0iTm9GaXh0dXJlVGVzdCIgdGVz
dHM9IjMiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KLSAg
ICAgPHRlc3RjYXNlIG5hbWU9IlJlY29yZFByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIg
Y2xhc3NuYW1lPSJOb0ZpeHR1cmVUZXN0IiBrZXk9IjEiLz4KLSAgICAgPHRlc3RjYXNlIG5hbWU9
IkV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZEludFZhbHVlZFByb3BlcnR5IiBzdGF0dXM9
InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJOb0ZpeHR1cmVUZXN0IiBrZXlfZm9yX3V0aWxpdHlf
aW50PSIxIi8+Ci0gICAgIDx0ZXN0Y2FzZSBuYW1lPSJFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNS
ZWNvcmRTdHJpbmdWYWx1ZWRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFt
ZT0iTm9GaXh0dXJlVGVzdCIga2V5X2Zvcl91dGlsaXR5X3N0cmluZz0iMSIvPgorICAgICA8dGVz
dGNhc2UgbmFtZT0iUmVjb3JkUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25h
bWU9Ik5vRml4dHVyZVRlc3QiPgorICAgICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICAgPHByb3Bl
cnR5IG5hbWU9ImtleSIgdmFsdWU9IjEiLz4KKyAgICAgICA8L3Byb3BlcnRpZXM+CisgICAgIDwv
dGVzdGNhc2U+CisgICAgIDx0ZXN0Y2FzZSBuYW1lPSJFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNS
ZWNvcmRJbnRWYWx1ZWRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0i
Tm9GaXh0dXJlVGVzdCI+CisgICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgICA8cHJvcGVydHkg
bmFtZT0ia2V5X2Zvcl91dGlsaXR5X2ludCIgdmFsdWU9IjEiLz4KKyAgICAgICA8L3Byb3BlcnRp
ZXM+CisgICAgIDwvdGVzdGNhc2U+CisgICAgIDx0ZXN0Y2FzZSBuYW1lPSJFeHRlcm5hbFV0aWxp
dHlUaGF0Q2FsbHNSZWNvcmRTdHJpbmdWYWx1ZWRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9
IioiIGNsYXNzbmFtZT0iTm9GaXh0dXJlVGVzdCI+CisgICAgICAgPHByb3BlcnRpZXM+CisgICAg
ICAgICA8cHJvcGVydHkgbmFtZT0ia2V5X2Zvcl91dGlsaXR5X3N0cmluZyIgdmFsdWU9IjEiLz4K
KyAgICAgICA8L3Byb3BlcnRpZXM+CisgICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgor
ICA8dGVzdHN1aXRlIG5hbWU9IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIgdGVzdHM9IjQiIGZhaWx1
cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2Ug
bmFtZT0iSGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8wIiB2YWx1ZV9wYXJhbT0iMzMiIHN0YXR1cz0i
cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIgLz4KKyAgICA8
dGVzdGNhc2UgbmFtZT0iSGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8xIiB2YWx1ZV9wYXJhbT0iNDIi
IHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIg
Lz4KKyAgICA8dGVzdGNhc2UgbmFtZT0iQW5vdGhlclRlc3RUaGF0SGFzVmFsdWVQYXJhbUF0dHJp
YnV0ZS8wIiB2YWx1ZV9wYXJhbT0iMzMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9
IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIgLz4KKyAgICA8dGVzdGNhc2UgbmFtZT0iQW5vdGhlclRl
c3RUaGF0SGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8xIiB2YWx1ZV9wYXJhbT0iNDIiIHN0YXR1cz0i
cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIgLz4KKyAgPC90
ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iVHlwZWRUZXN0LzAiIHRlc3RzPSIxIiBmYWls
dXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNl
IG5hbWU9Ikhhc1R5cGVQYXJhbUF0dHJpYnV0ZSIgdHlwZV9wYXJhbT0iKiIgc3RhdHVzPSJydW4i
IHRpbWU9IioiIGNsYXNzbmFtZT0iVHlwZWRUZXN0LzAiIC8+CisgIDwvdGVzdHN1aXRlPgorICA8
dGVzdHN1aXRlIG5hbWU9IlR5cGVkVGVzdC8xIiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2Fi
bGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNUeXBl
UGFyYW1BdHRyaWJ1dGUiIHR5cGVfcGFyYW09IioiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFz
c25hbWU9IlR5cGVkVGVzdC8xIiAvPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1l
PSJTaW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8wIiB0ZXN0cz0iMSIgZmFpbHVyZXM9
IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1l
PSJIYXNUeXBlUGFyYW1BdHRyaWJ1dGUiIHR5cGVfcGFyYW09IioiIHN0YXR1cz0icnVuIiB0aW1l
PSIqIiBjbGFzc25hbWU9IlNpbmdsZS9UeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLzAiIC8+Cisg
IDwvdGVzdHN1aXRlPgorICA8dGVzdHN1aXRlIG5hbWU9IlNpbmdsZS9UeXBlUGFyYW1ldGVyaXpl
ZFRlc3RDYXNlLzEiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0i
MCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNlIG5hbWU9Ikhhc1R5cGVQYXJhbUF0dHJpYnV0ZSIg
dHlwZV9wYXJhbT0iKiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1R5
cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMSIgLz4KICAgPC90ZXN0c3VpdGU+CiA8L3Rlc3RzdWl0
ZXM+IiIiICUgeydzdGFjayc6IFNUQUNLX1RSQUNFX1RFTVBMQVRFfQogCitFWFBFQ1RFRF9GSUxU
RVJFRF9URVNUX1hNTCA9ICIiIjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+
Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9
IjAiIHRpbWU9IioiCisgICAgICAgICAgICB0aW1lc3RhbXA9IioiIG5hbWU9IkFsbFRlc3RzIiBh
ZF9ob2NfcHJvcGVydHk9IjQyIj4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJTdWNjZXNzZnVsVGVzdCIg
dGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIKKyAgICAgICAgICAgICBlcnJvcnM9
IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJTdWNjZWVkcyIgc3RhdHVzPSJydW4i
IHRpbWU9IioiIGNsYXNzbmFtZT0iU3VjY2Vzc2Z1bFRlc3QiLz4KKyAgPC90ZXN0c3VpdGU+Cis8
L3Rlc3RzdWl0ZXM+IiIiCisKK0VYUEVDVEVEX1NIQVJERURfVEVTVF9YTUwgPSAiIiI8P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHRlc3RzdWl0ZXMgdGVzdHM9IjMiIGZh
aWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiB0aW1lc3RhbXA9Iioi
IG5hbWU9IkFsbFRlc3RzIiBhZF9ob2NfcHJvcGVydHk9IjQyIj4KKyAgPHRlc3RzdWl0ZSBuYW1l
PSJTdWNjZXNzZnVsVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJy
b3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iU3VjY2VlZHMiIHN0YXR1cz0i
cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlN1Y2Nlc3NmdWxUZXN0Ii8+CisgIDwvdGVzdHN1aXRl
PgorICA8dGVzdHN1aXRlIG5hbWU9Ik5vRml4dHVyZVRlc3QiIHRlc3RzPSIxIiBmYWlsdXJlcz0i
MCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgIDx0ZXN0Y2FzZSBuYW1l
PSJSZWNvcmRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTm9GaXh0
dXJlVGVzdCI+CisgICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgICA8cHJvcGVydHkgbmFtZT0i
a2V5IiB2YWx1ZT0iMSIvPgorICAgICAgIDwvcHJvcGVydGllcz4KKyAgICAgPC90ZXN0Y2FzZT4K
KyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0
IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9Iioi
PgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJBbm90aGVyVGVzdFRoYXRIYXNWYWx1ZVBhcmFtQXR0cmli
dXRlLzEiIHZhbHVlX3BhcmFtPSI0MiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0i
U2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiAvPgorICA8L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1aXRlcz4i
IiIKIAogRVhQRUNURURfRU1QVFlfWE1MID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0iVVRGLTgiPz4KLTx0ZXN0c3VpdGVzIHRlc3RzPSIwIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9
IjAiIGVycm9ycz0iMCIgdGltZT0iKiIgbmFtZT0iQWxsVGVzdHMiPgorPHRlc3RzdWl0ZXMgdGVz
dHM9IjAiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIgorICAg
ICAgICAgICAgdGltZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0cyI+CiA8L3Rlc3RzdWl0ZXM+IiIi
CiAKK0dURVNUX1BST0dSQU1fUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFi
bGVQYXRoKEdURVNUX1BST0dSQU1fTkFNRSkKKworU1VQUE9SVFNfVFlQRURfVEVTVFMgPSAnVHlw
ZWRUZXN0JyBpbiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgW0dURVNUX1BST0dS
QU1fUEFUSCwgR1RFU1RfTElTVF9URVNUU19GTEFHXSwgY2FwdHVyZV9zdGRlcnI9RmFsc2UpLm91
dHB1dAorCiAKIGNsYXNzIEdUZXN0WE1MT3V0cHV0VW5pdFRlc3QoZ3Rlc3RfeG1sX3Rlc3RfdXRp
bHMuR1Rlc3RYTUxUZXN0Q2FzZSk6CiAgICIiIgogICBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0
J3MgWE1MIG91dHB1dCBmdW5jdGlvbmFsaXR5LgogICAiIiIKIAotICBkZWYgdGVzdE5vbkVtcHR5
WG1sT3V0cHV0KHNlbGYpOgotICAgICIiIgotICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBn
ZW5lcmF0ZXMgYSBub24tZW1wdHkgWE1MIG91dHB1dCwgYW5kCi0gICAgdGVzdHMgdGhhdCB0aGUg
WE1MIG91dHB1dCBpcyBleHBlY3RlZC4KLSAgICAiIiIKLSAgICBzZWxmLl9UZXN0WG1sT3V0cHV0
KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQRUNURURfTk9OX0VNUFRZX1hNTCwgMSkKKyAgIyBUaGlz
IHRlc3QgY3VycmVudGx5IGJyZWFrcyBvbiBwbGF0Zm9ybXMgdGhhdCBkbyBub3Qgc3VwcG9ydCB0
eXBlZCBhbmQKKyAgIyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIHNvIHdlIGRvbid0IHJ1biBp
dCB1bmRlciB0aGVtLgorICBpZiBTVVBQT1JUU19UWVBFRF9URVNUUzoKKyAgICBkZWYgdGVzdE5v
bkVtcHR5WG1sT3V0cHV0KHNlbGYpOgorICAgICAgIiIiCisgICAgICBSdW5zIGEgdGVzdCBwcm9n
cmFtIHRoYXQgZ2VuZXJhdGVzIGEgbm9uLWVtcHR5IFhNTCBvdXRwdXQsIGFuZAorICAgICAgdGVz
dHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBleHBlY3RlZC4KKyAgICAgICIiIgorICAgICAgc2Vs
Zi5fVGVzdFhtbE91dHB1dChHVEVTVF9QUk9HUkFNX05BTUUsIEVYUEVDVEVEX05PTl9FTVBUWV9Y
TUwsIDEpCiAKICAgZGVmIHRlc3RFbXB0eVhtbE91dHB1dChzZWxmKToKLSAgICAiIiIKKyAgICAi
IiJWZXJpZmllcyBYTUwgb3V0cHV0IGZvciBhIEdvb2dsZSBUZXN0IGJpbmFyeSB3aXRob3V0IGFj
dHVhbCB0ZXN0cy4KKwogICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4g
ZW1wdHkgWE1MIG91dHB1dCwgYW5kCiAgICAgdGVzdHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBl
eHBlY3RlZC4KICAgICAiIiIKIAotICAgIHNlbGYuX1Rlc3RYbWxPdXRwdXQoImd0ZXN0X25vX3Rl
c3RfdW5pdHRlc3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNURURfRU1QVFlfWE1M
LCAwKQorICAgIHNlbGYuX1Rlc3RYbWxPdXRwdXQoJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnLCBF
WFBFQ1RFRF9FTVBUWV9YTUwsIDApCisKKyAgZGVmIHRlc3RUaW1lc3RhbXBWYWx1ZShzZWxmKToK
KyAgICAiIiJDaGVja3Mgd2hldGhlciB0aGUgdGltZXN0YW1wIGF0dHJpYnV0ZSBpbiB0aGUgWE1M
IG91dHB1dCBpcyB2YWxpZC4KKworICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0
ZXMgYW4gZW1wdHkgWE1MIG91dHB1dCwgYW5kIGNoZWNrcyBpZgorICAgIHRoZSB0aW1lc3RhbXAg
YXR0cmlidXRlIGluIHRoZSB0ZXN0c3VpdGVzIHRhZyBpcyB2YWxpZC4KKyAgICAiIiIKKyAgICBh
Y3R1YWwgPSBzZWxmLl9HZXRYbWxPdXRwdXQoJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnLCBbXSwg
e30sIDApCisgICAgZGF0ZV90aW1lX3N0ciA9IGFjdHVhbC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0
cmlidXRlTm9kZSgndGltZXN0YW1wJykudmFsdWUKKyAgICAjIGRhdGV0aW1lLnN0cnB0aW1lKCkg
aXMgb25seSBhdmFpbGFibGUgaW4gUHl0aG9uIDIuNSsgc28gd2UgaGF2ZSB0bworICAgICMgcGFy
c2UgdGhlIGV4cGVjdGVkIGRhdGV0aW1lIG1hbnVhbGx5LgorICAgIG1hdGNoID0gcmUubWF0Y2go
cicoXGQrKS0oXGRcZCktKFxkXGQpVChcZFxkKTooXGRcZCk6KFxkXGQpJywgZGF0ZV90aW1lX3N0
cikKKyAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgIHJlLm1hdGNoLAorICAgICAgICAnWE1M
IGRhdGV0dGltZSBzdHJpbmcgJXMgaGFzIGluY29ycmVjdCBmb3JtYXQnICUgZGF0ZV90aW1lX3N0
cikKKyAgICBkYXRlX3RpbWVfZnJvbV94bWwgPSBkYXRldGltZS5kYXRldGltZSgKKyAgICAgICAg
eWVhcj1pbnQobWF0Y2guZ3JvdXAoMSkpLCBtb250aD1pbnQobWF0Y2guZ3JvdXAoMikpLAorICAg
ICAgICBkYXk9aW50KG1hdGNoLmdyb3VwKDMpKSwgaG91cj1pbnQobWF0Y2guZ3JvdXAoNCkpLAor
ICAgICAgICBtaW51dGU9aW50KG1hdGNoLmdyb3VwKDUpKSwgc2Vjb25kPWludChtYXRjaC5ncm91
cCg2KSkpCisKKyAgICB0aW1lX2RlbHRhID0gYWJzKGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpIC0g
ZGF0ZV90aW1lX2Zyb21feG1sKQorICAgICMgdGltZXN0YW1wIHZhbHVlIHNob3VsZCBiZSBuZWFy
IHRoZSBjdXJyZW50IGxvY2FsIHRpbWUKKyAgICBzZWxmLmFzc2VydFRydWUodGltZV9kZWx0YSA8
IGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPTYwMCksCisgICAgICAgICAgICAgICAgICAgICd0
aW1lX2RlbHRhIGlzICVzJyAlIHRpbWVfZGVsdGEpCisgICAgYWN0dWFsLnVubGluaygpCiAKICAg
ZGVmIHRlc3REZWZhdWx0T3V0cHV0RmlsZShzZWxmKToKICAgICAiIiIKQEAgLTE0Miw3ICsyNjMs
NyBAQCBjbGFzcyBHVGVzdFhNTE91dHB1dFVuaXRUZXN0KGd0ZXN0X3htbF90ZXN0X3V0aWxzLkdU
ZXN0WE1MVGVzdENhc2UpOgogICAgIG91dHB1dF9maWxlID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rl
c3RfdXRpbHMuR2V0VGVtcERpcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdU
RVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUpCiAgICAgZ3Rlc3RfcHJvZ19wYXRoID0gZ3Rlc3RfdGVz
dF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCi0gICAgICAgICJndGVzdF9ub190ZXN0X3Vu
aXR0ZXN0IikKKyAgICAgICAgJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnKQogICAgIHRyeToKICAg
ICAgIG9zLnJlbW92ZShvdXRwdXRfZmlsZSkKICAgICBleGNlcHQgT1NFcnJvciwgZToKQEAgLTE1
MCw3ICsyNzEsNyBAQCBjbGFzcyBHVGVzdFhNTE91dHB1dFVuaXRUZXN0KGd0ZXN0X3htbF90ZXN0
X3V0aWxzLkdUZXN0WE1MVGVzdENhc2UpOgogICAgICAgICByYWlzZQogCiAgICAgcCA9IGd0ZXN0
X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKLSAgICAgICAgW2d0ZXN0X3Byb2dfcGF0aCwgIiVzPXht
bCIgJSBHVEVTVF9PVVRQVVRfRkxBR10sCisgICAgICAgIFtndGVzdF9wcm9nX3BhdGgsICclcz14
bWwnICUgR1RFU1RfT1VUUFVUX0ZMQUddLAogICAgICAgICB3b3JraW5nX2Rpcj1ndGVzdF90ZXN0
X3V0aWxzLkdldFRlbXBEaXIoKSkKICAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCiAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoMCwgcC5leGl0X2NvZGUpCkBAIC0xNjMsNjAgKzI4NCw5OCBAQCBjbGFz
cyBHVGVzdFhNTE91dHB1dFVuaXRUZXN0KGd0ZXN0X3htbF90ZXN0X3V0aWxzLkdUZXN0WE1MVGVz
dENhc2UpOgogICAgICIiIgogCiAgICAgeG1sX3BhdGggPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVz
dF91dGlscy5HZXRUZW1wRGlyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1Rf
UFJPR1JBTV9OQU1FICsgIm91dC54bWwiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdU
RVNUX1BST0dSQU1fTkFNRSArICdvdXQueG1sJykKICAgICBpZiBvcy5wYXRoLmlzZmlsZSh4bWxf
cGF0aCk6CiAgICAgICBvcy5yZW1vdmUoeG1sX3BhdGgpCiAKLSAgICBndGVzdF9wcm9nX3BhdGgg
PSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aChHVEVTVF9QUk9HUkFNX05B
TUUpCi0KLSAgICBjb21tYW5kID0gW2d0ZXN0X3Byb2dfcGF0aCwKLSAgICAgICAgICAgICAgICIl
cz14bWw6JXMiICUgKEdURVNUX09VVFBVVF9GTEFHLCB4bWxfcGF0aCksCi0gICAgICAgICAgICAg
ICAiLS1zaHV0X2Rvd25feG1sIl0KKyAgICBjb21tYW5kID0gW0dURVNUX1BST0dSQU1fUEFUSCwK
KyAgICAgICAgICAgICAgICclcz14bWw6JXMnICUgKEdURVNUX09VVFBVVF9GTEFHLCB4bWxfcGF0
aCksCisgICAgICAgICAgICAgICAnLS1zaHV0X2Rvd25feG1sJ10KICAgICBwID0gZ3Rlc3RfdGVz
dF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCiAgICAgaWYgcC50ZXJtaW5hdGVkX2J5X3NpZ25h
bDoKLSAgICAgIHNlbGYuYXNzZXJ0XyhGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAiJXMgd2Fz
IGtpbGxlZCBieSBzaWduYWwgJWQiICUgKGd0ZXN0X3Byb2dfbmFtZSwgcC5zaWduYWwpKQorICAg
ICAgIyBwLnNpZ25hbCBpcyBhdmFpbGFibGUgb25seSBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFs
IGlzIFRydWUuCisgICAgICBzZWxmLmFzc2VydEZhbHNlKAorICAgICAgICAgIHAudGVybWluYXRl
ZF9ieV9zaWduYWwsCisgICAgICAgICAgJyVzIHdhcyBraWxsZWQgYnkgc2lnbmFsICVkJyAlIChH
VEVTVF9QUk9HUkFNX05BTUUsIHAuc2lnbmFsKSkKICAgICBlbHNlOgogICAgICAgc2VsZi5hc3Nl
cnRfKHAuZXhpdGVkKQogICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwgcC5leGl0X2NvZGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyBleGl0ZWQgd2l0aCBjb2RlICVzLCB3aGljaCBk
b2Vzbid0IG1hdGNoICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZXhwZWN0ZWQgZXhp
dCBjb2RlICVzLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgZXhwZWN0ZWQgZXhpdCBj
b2RlICVzLicKICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvbW1hbmQsIHAuZXhpdF9jb2Rl
LCAxKSkKIAogICAgIHNlbGYuYXNzZXJ0Xyhub3Qgb3MucGF0aC5pc2ZpbGUoeG1sX3BhdGgpKQog
CisgIGRlZiB0ZXN0RmlsdGVyZWRUZXN0WG1sT3V0cHV0KHNlbGYpOgorICAgICIiIlZlcmlmaWVz
IFhNTCBvdXRwdXQgd2hlbiBhIGZpbHRlciBpcyBhcHBsaWVkLgogCi0gIGRlZiBfVGVzdFhtbE91
dHB1dChzZWxmLCBndGVzdF9wcm9nX25hbWUsIGV4cGVjdGVkX3htbCwgZXhwZWN0ZWRfZXhpdF9j
b2RlKToKKyAgICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRoYXQgZXhlY3V0ZXMgb25seSBzb21lIHRl
c3RzIGFuZCB2ZXJpZmllcyB0aGF0CisgICAgbm9uLXNlbGVjdGVkIHRlc3RzIGRvIG5vdCBzaG93
IHVwIGluIHRoZSBYTUwgb3V0cHV0LgogICAgICIiIgotICAgIEFzc2VydHMgdGhhdCB0aGUgWE1M
IGRvY3VtZW50IGdlbmVyYXRlZCBieSBydW5uaW5nIHRoZSBwcm9ncmFtCi0gICAgZ3Rlc3RfcHJv
Z19uYW1lIG1hdGNoZXMgZXhwZWN0ZWRfeG1sLCBhIHN0cmluZyBjb250YWluaW5nIGFub3RoZXIK
LSAgICBYTUwgZG9jdW1lbnQuICBGdXJ0aGVybW9yZSwgdGhlIHByb2dyYW0ncyBleGl0IGNvZGUg
bXVzdCBiZQotICAgIGV4cGVjdGVkX2V4aXRfY29kZS4KKworICAgIHNlbGYuX1Rlc3RYbWxPdXRw
dXQoR1RFU1RfUFJPR1JBTV9OQU1FLCBFWFBFQ1RFRF9GSUxURVJFRF9URVNUX1hNTCwgMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2FyZ3M9Wyclcz1TdWNjZXNzZnVsVGVzdC4qJyAl
IEdURVNUX0ZJTFRFUl9GTEFHXSkKKworICBkZWYgdGVzdFNoYXJkZWRUZXN0WG1sT3V0cHV0KHNl
bGYpOgorICAgICIiIlZlcmlmaWVzIFhNTCBvdXRwdXQgd2hlbiBydW4gdXNpbmcgbXVsdGlwbGUg
c2hhcmRzLgorCisgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGV4ZWN1dGVzIG9ubHkgb25l
IHNoYXJkIGFuZCB2ZXJpZmllcyB0aGF0IHRlc3RzCisgICAgZnJvbSBvdGhlciBzaGFyZHMgZG8g
bm90IHNob3cgdXAgaW4gdGhlIFhNTCBvdXRwdXQuCisgICAgIiIiCisKKyAgICBzZWxmLl9UZXN0
WG1sT3V0cHV0KAorICAgICAgICBHVEVTVF9QUk9HUkFNX05BTUUsCisgICAgICAgIEVYUEVDVEVE
X1NIQVJERURfVEVTVF9YTUwsCisgICAgICAgIDAsCisgICAgICAgIGV4dHJhX2Vudj17U0hBUkRf
SU5ERVhfRU5WX1ZBUjogJzAnLAorICAgICAgICAgICAgICAgICAgIFRPVEFMX1NIQVJEU19FTlZf
VkFSOiAnMTAnfSkKKworICBkZWYgX0dldFhtbE91dHB1dChzZWxmLCBndGVzdF9wcm9nX25hbWUs
IGV4dHJhX2FyZ3MsIGV4dHJhX2VudiwKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXhp
dF9jb2RlKToKKyAgICAiIiIKKyAgICBSZXR1cm5zIHRoZSB4bWwgb3V0cHV0IGdlbmVyYXRlZCBi
eSBydW5uaW5nIHRoZSBwcm9ncmFtIGd0ZXN0X3Byb2dfbmFtZS4KKyAgICBGdXJ0aGVybW9yZSwg
dGhlIHByb2dyYW0ncyBleGl0IGNvZGUgbXVzdCBiZSBleHBlY3RlZF9leGl0X2NvZGUuCiAgICAg
IiIiCiAgICAgeG1sX3BhdGggPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1w
RGlyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Rlc3RfcHJvZ19uYW1lICsgIm91
dC54bWwiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0ZXN0X3Byb2dfbmFtZSArICdv
dXQueG1sJykKICAgICBndGVzdF9wcm9nX3BhdGggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RF
eGVjdXRhYmxlUGF0aChndGVzdF9wcm9nX25hbWUpCiAKLSAgICBjb21tYW5kID0gW2d0ZXN0X3By
b2dfcGF0aCwgIiVzPXhtbDolcyIgJSAoR1RFU1RfT1VUUFVUX0ZMQUcsIHhtbF9wYXRoKV0KLSAg
ICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCisgICAgY29tbWFuZCA9
IChbZ3Rlc3RfcHJvZ19wYXRoLCAnJXM9eG1sOiVzJyAlIChHVEVTVF9PVVRQVVRfRkxBRywgeG1s
X3BhdGgpXSArCisgICAgICAgICAgICAgICBleHRyYV9hcmdzKQorICAgIGVudmlyb25fY29weSA9
IG9zLmVudmlyb24uY29weSgpCisgICAgaWYgZXh0cmFfZW52OgorICAgICAgZW52aXJvbl9jb3B5
LnVwZGF0ZShleHRyYV9lbnYpCisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhj
b21tYW5kLCBlbnY9ZW52aXJvbl9jb3B5KQorCiAgICAgaWYgcC50ZXJtaW5hdGVkX2J5X3NpZ25h
bDoKICAgICAgIHNlbGYuYXNzZXJ0XyhGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAiJXMgd2Fz
IGtpbGxlZCBieSBzaWduYWwgJWQiICUgKGd0ZXN0X3Byb2dfbmFtZSwgcC5zaWduYWwpKQorICAg
ICAgICAgICAgICAgICAgICclcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAlZCcgJSAoZ3Rlc3RfcHJv
Z19uYW1lLCBwLnNpZ25hbCkpCiAgICAgZWxzZToKICAgICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRl
ZCkKICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX2V4aXRfY29kZSwgcC5leGl0X2Nv
ZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyBleGl0ZWQgd2l0aCBjb2RlICVzLCB3
aGljaCBkb2Vzbid0IG1hdGNoICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZXhwZWN0
ZWQgZXhpdCBjb2RlICVzLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgZXhwZWN0ZWQg
ZXhpdCBjb2RlICVzLicKICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvbW1hbmQsIHAuZXhp
dF9jb2RlLCBleHBlY3RlZF9leGl0X2NvZGUpKQorICAgIGFjdHVhbCA9IG1pbmlkb20ucGFyc2Uo
eG1sX3BhdGgpCisgICAgcmV0dXJuIGFjdHVhbAogCisgIGRlZiBfVGVzdFhtbE91dHB1dChzZWxm
LCBndGVzdF9wcm9nX25hbWUsIGV4cGVjdGVkX3htbCwKKyAgICAgICAgICAgICAgICAgICAgIGV4
cGVjdGVkX2V4aXRfY29kZSwgZXh0cmFfYXJncz1Ob25lLCBleHRyYV9lbnY9Tm9uZSk6CisgICAg
IiIiCisgICAgQXNzZXJ0cyB0aGF0IHRoZSBYTUwgZG9jdW1lbnQgZ2VuZXJhdGVkIGJ5IHJ1bm5p
bmcgdGhlIHByb2dyYW0KKyAgICBndGVzdF9wcm9nX25hbWUgbWF0Y2hlcyBleHBlY3RlZF94bWws
IGEgc3RyaW5nIGNvbnRhaW5pbmcgYW5vdGhlcgorICAgIFhNTCBkb2N1bWVudC4gIEZ1cnRoZXJt
b3JlLCB0aGUgcHJvZ3JhbSdzIGV4aXQgY29kZSBtdXN0IGJlCisgICAgZXhwZWN0ZWRfZXhpdF9j
b2RlLgorICAgICIiIgorCisgICAgYWN0dWFsID0gc2VsZi5fR2V0WG1sT3V0cHV0KGd0ZXN0X3By
b2dfbmFtZSwgZXh0cmFfYXJncyBvciBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXh0cmFfZW52IG9yIHt9LCBleHBlY3RlZF9leGl0X2NvZGUpCiAgICAgZXhwZWN0ZWQgPSBt
aW5pZG9tLnBhcnNlU3RyaW5nKGV4cGVjdGVkX3htbCkKLSAgICBhY3R1YWwgICA9IG1pbmlkb20u
cGFyc2UoeG1sX3BhdGgpCiAgICAgc2VsZi5Ob3JtYWxpemVYbWwoYWN0dWFsLmRvY3VtZW50RWxl
bWVudCkKICAgICBzZWxmLkFzc2VydEVxdWl2YWxlbnROb2RlcyhleHBlY3RlZC5kb2N1bWVudEVs
ZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsLmRvY3VtZW50RWxl
bWVudCkKICAgICBleHBlY3RlZC51bmxpbmsoKQotICAgIGFjdHVhbCAgLnVubGluaygpCi0KKyAg
ICBhY3R1YWwudW5saW5rKCkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0
ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91
bml0dGVzdF8uY2MKaW5kZXggZmMwN2VmNDZiZDY2N2FhOTJlNWRhZjdmMjAyZWZjZDc2MzY2YmY4
YS4uMmVlODgzODAwNWVlZWMyMzU3MWJhZTM4OWM3OTI2OThjMzBjNGQ1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5p
dHRlc3RfLmNjCkBAIC0yNyw4ICsyNyw2IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKLS8vIEF1dGhvcjogZWVmYWNtQGdtYWlsLmNvbSAoU2VhbiBNY2FmZWUpCi0KIC8vIFVu
aXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QgWE1MIG91dHB1dC4KIC8vCiAvLyBBIHVzZXIgY2FuIHNw
ZWNpZnkgWE1MIG91dHB1dCBpbiBhIEdvb2dsZSBUZXN0IHByb2dyYW0gdG8gcnVuIHZpYQpAQCAt
MzgsMTMgKzM2LDE2IEBACiAvLyBUaGlzIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQ
eXRob24gdW5pdCB0ZXN0LiAgRG9uJ3QgcnVuIGl0CiAvLyBkaXJlY3RseS4KIAotI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogdXNpbmcgOjp0ZXN0
aW5nOjpJbml0R29vZ2xlVGVzdDsKIHVzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJz
OwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtOwogdXNpbmcgOjp0ZXN0aW5nOjpVbml0
VGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6VmFsdWVzOwog
Ci1jbGFzcyBTdWNjZXNzZnVsVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIFN1
Y2Nlc3NmdWxUZXN0IDogcHVibGljIFRlc3QgewogfTsKIAogVEVTVF9GKFN1Y2Nlc3NmdWxUZXN0
LCBTdWNjZWVkcykgewpAQCAtNTIsMTQgKzUzLDE0IEBAIFRFU1RfRihTdWNjZXNzZnVsVGVzdCwg
U3VjY2VlZHMpIHsKICAgQVNTRVJUX0VRKDEsIDEpOwogfQogCi1jbGFzcyBGYWlsZWRUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgRmFpbGVkVGVzdCA6IHB1YmxpYyBUZXN0IHsK
IH07CiAKIFRFU1RfRihGYWlsZWRUZXN0LCBGYWlscykgewogICBBU1NFUlRfRVEoMSwgMik7CiB9
CiAKLWNsYXNzIERpc2FibGVkVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIERp
c2FibGVkVGVzdCA6IHB1YmxpYyBUZXN0IHsKIH07CiAKIFRFU1RfRihEaXNhYmxlZFRlc3QsIERJ
U0FCTEVEX3Rlc3Rfbm90X3J1bikgewpAQCAtOTEsNyArOTIsMTAgQEAgVEVTVChJbnZhbGlkQ2hh
cmFjdGVyc1Rlc3QsIEludmFsaWRDaGFyYWN0ZXJzSW5NZXNzYWdlKSB7CiAgIEZBSUwoKSA8PCAi
SW52YWxpZCBjaGFyYWN0ZXJzIGluIGJyYWNrZXRzIFtceDFceDJdIjsKIH0KIAotY2xhc3MgUHJv
cGVydHlSZWNvcmRpbmdUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgUHJvcGVy
dHlSZWNvcmRpbmdUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQg
U2V0VXBUZXN0Q2FzZSgpIHsgUmVjb3JkUHJvcGVydHkoIlNldFVwVGVzdENhc2UiLCAieWVzIik7
IH0KKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsgUmVjb3JkUHJvcGVydHkoIlRl
YXJEb3duVGVzdENhc2UiLCAiYXllIik7IH0KIH07CiAKIFRFU1RfRihQcm9wZXJ0eVJlY29yZGlu
Z1Rlc3QsIE9uZVByb3BlcnR5KSB7CkBAIC0xMTcsMTIgKzEyMSwxMiBAQCBURVNUKE5vRml4dHVy
ZVRlc3QsIFJlY29yZFByb3BlcnR5KSB7CiAgIFJlY29yZFByb3BlcnR5KCJrZXkiLCAiMSIpOwog
fQogCi12b2lkIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFByb3BlcnR5KGNvbnN0IGNo
YXIqIGtleSwgaW50IHZhbHVlKSB7Cit2b2lkIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29y
ZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGludCB2YWx1ZSkgewogICB0ZXN0aW5n
OjpUZXN0OjpSZWNvcmRQcm9wZXJ0eShrZXksIHZhbHVlKTsKIH0KIAotdm9pZCBFeHRlcm5hbFV0
aWxpdHlUaGF0Q2FsbHNSZWNvcmRQcm9wZXJ0eShjb25zdCBjaGFyKiBrZXksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHZhbHVlKSB7Cit2
b2lkIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3Ry
aW5nJiBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkgewogICB0ZXN0aW5nOjpUZXN0OjpSZWNvcmRQcm9wZXJ0
eShrZXksIHZhbHVlKTsKIH0KIApAQCAtMTM0LDYgKzEzOCwzNSBAQCBURVNUKE5vRml4dHVyZVRl
c3QsIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFN0cmluZ1ZhbHVlZFByb3BlcnR5KSB7
CiAgIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFByb3BlcnR5KCJrZXlfZm9yX3V0aWxp
dHlfc3RyaW5nIiwgIjEiKTsKIH0KIAorLy8gVmVyaWZpZXMgdGhhdCB0aGUgdGVzdCBwYXJhbWV0
ZXIgdmFsdWUgaXMgb3V0cHV0IGluIHRoZSAndmFsdWVfcGFyYW0nCisvLyBYTUwgYXR0cmlidXRl
IGZvciB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorY2xhc3MgVmFsdWVQYXJhbVRlc3QgOiBw
dWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHt9OworVEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBIYXNW
YWx1ZVBhcmFtQXR0cmlidXRlKSB7fQorVEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBBbm90aGVyVGVz
dFRoYXRIYXNWYWx1ZVBhcmFtQXR0cmlidXRlKSB7fQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ao
U2luZ2xlLCBWYWx1ZVBhcmFtVGVzdCwgVmFsdWVzKDMzLCA0MikpOworCisjaWYgR1RFU1RfSEFT
X1RZUEVEX1RFU1QKKy8vIFZlcmlmaWVzIHRoYXQgdGhlIHR5cGUgcGFyYW1ldGVyIG5hbWUgaXMg
b3V0cHV0IGluIHRoZSAndHlwZV9wYXJhbScKKy8vIFhNTCBhdHRyaWJ1dGUgZm9yIHR5cGVkIHRl
c3RzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFR5cGVkVGVzdCA6IHB1YmxpYyBUZXN0
IHt9OwordHlwZWRlZiB0ZXN0aW5nOjpUeXBlczxpbnQsIGxvbmc+IFR5cGVkVGVzdFR5cGVzOwor
VFlQRURfVEVTVF9DQVNFKFR5cGVkVGVzdCwgVHlwZWRUZXN0VHlwZXMpOworVFlQRURfVEVTVChU
eXBlZFRlc3QsIEhhc1R5cGVQYXJhbUF0dHJpYnV0ZSkge30KKyNlbmRpZgorCisjaWYgR1RFU1Rf
SEFTX1RZUEVEX1RFU1RfUAorLy8gVmVyaWZpZXMgdGhhdCB0aGUgdHlwZSBwYXJhbWV0ZXIgbmFt
ZSBpcyBvdXRwdXQgaW4gdGhlICd0eXBlX3BhcmFtJworLy8gWE1MIGF0dHJpYnV0ZSBmb3IgdHlw
ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFR5cGVQ
YXJhbWV0ZXJpemVkVGVzdENhc2UgOiBwdWJsaWMgVGVzdCB7fTsKK1RZUEVEX1RFU1RfQ0FTRV9Q
KFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UpOworVFlQRURfVEVTVF9QKFR5cGVQYXJhbWV0ZXJp
emVkVGVzdENhc2UsIEhhc1R5cGVQYXJhbUF0dHJpYnV0ZSkge30KK1JFR0lTVEVSX1RZUEVEX1RF
U1RfQ0FTRV9QKFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UsIEhhc1R5cGVQYXJhbUF0dHJpYnV0
ZSk7Cit0eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPGludCwgbG9uZz4gVHlwZVBhcmFtZXRlcml6ZWRU
ZXN0Q2FzZVR5cGVzOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoU2luZ2xlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2VUeXBl
cyk7CisjZW5kaWYKKwogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CiAgIEluaXRH
b29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKIApAQCAtMTQxLDUgKzE3NCw2IEBAIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyKiogYXJndikgewogICAgIFRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJz
ID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpOwogICAgIGRlbGV0ZSBsaXN0
ZW5lcnMuUmVsZWFzZShsaXN0ZW5lcnMuZGVmYXVsdF94bWxfZ2VuZXJhdG9yKCkpOwogICB9Cisg
IHRlc3Rpbmc6OlRlc3Q6OlJlY29yZFByb3BlcnR5KCJhZF9ob2NfcHJvcGVydHkiLCAiNDIiKTsK
ICAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF90ZXN0X3V0aWxzLnB5CmluZGV4IGM4M2MzYjdlYTc5YjJk
NzYyZWVkNjY1ZTJkNjFkZjhiOWVhMDg0NDMuLjFlMDM1ODU5MmZiMDA4NGYwYTg5YzM0MzZmZjc1
MTc0ODY4MjdhY2QgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfeG1sX3Rlc3RfdXRpbHMucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF94bWxfdGVzdF91dGlscy5weQpAQCAtMSw1ICsxLDMgQEAKLSMhL3Vzci9iaW4vZW52IHB5
dGhvbgotIwogIyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KICMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICMKQEAgLTMxLDE2ICsyOSwxMSBAQAogCiAiIiJVbml0IHRlc3QgdXRpbGl0aWVzIGZv
ciBndGVzdF94bWxfb3V0cHV0IiIiCiAKLV9fYXV0aG9yX18gPSAnZWVmYWNtQGdtYWlsLmNvbSAo
U2VhbiBNY2FmZWUpJwotCiBpbXBvcnQgcmUKIGZyb20geG1sLmRvbSBpbXBvcnQgbWluaWRvbSwg
Tm9kZQotCiBpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwogCi0KLUdURVNUX09VVFBVVF9GTEFHICAg
ICAgICAgPSAiLS1ndGVzdF9vdXRwdXQiCi1HVEVTVF9ERUZBVUxUX09VVFBVVF9GSUxFID0gInRl
c3RfZGV0YWlsLnhtbCIKK0dURVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUgPSAndGVzdF9kZXRhaWwu
eG1sJwogCiBjbGFzcyBHVGVzdFhNTFRlc3RDYXNlKGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2Up
OgogICAiIiIKQEAgLTU4LDggKzUxLDkgQEAgY2xhc3MgR1Rlc3RYTUxUZXN0Q2FzZShndGVzdF90
ZXN0X3V0aWxzLlRlc3RDYXNlKToKICAgICAqICBJdCBoYXMgdGhlIHNhbWUgdGFnIG5hbWUgYXMg
ZXhwZWN0ZWRfbm9kZS4KICAgICAqICBJdCBoYXMgdGhlIHNhbWUgc2V0IG9mIGF0dHJpYnV0ZXMg
YXMgZXhwZWN0ZWRfbm9kZSwgZWFjaCB3aXRoCiAgICAgICAgdGhlIHNhbWUgdmFsdWUgYXMgdGhl
IGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIG9mIGV4cGVjdGVkX25vZGUuCi0gICAgICAgQW4gZXhj
ZXB0aW9uIGlzIGFueSBhdHRyaWJ1dGUgbmFtZWQgInRpbWUiLCB3aGljaCBuZWVkcyBvbmx5IGJl
Ci0gICAgICAgY29udmVydGlibGUgdG8gYSBmbG9hdGluZy1wb2ludCBudW1iZXIuCisgICAgICAg
RXhjZXB0aW9ucyBhcmUgYW55IGF0dHJpYnV0ZSBuYW1lZCAidGltZSIsIHdoaWNoIG5lZWRzIG9u
bHkgYmUKKyAgICAgICBjb252ZXJ0aWJsZSB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBhbmQg
YW55IGF0dHJpYnV0ZSBuYW1lZAorICAgICAgICJ0eXBlX3BhcmFtIiB3aGljaCBvbmx5IGhhcyB0
byBiZSBub24tZW1wdHkuCiAgICAgKiAgSXQgaGFzIGFuIGVxdWl2YWxlbnQgc2V0IG9mIGNoaWxk
IG5vZGVzIChpbmNsdWRpbmcgZWxlbWVudHMgYW5kCiAgICAgICAgQ0RBVEEgc2VjdGlvbnMpIGFz
IGV4cGVjdGVkX25vZGUuICBOb3RlIHRoYXQgd2UgaWdub3JlIHRoZQogICAgICAgIG9yZGVyIG9m
IHRoZSBjaGlsZHJlbiBhcyB0aGV5IGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSBpbiBhbnkKQEAg
LTc5LDIzICs3MywyNyBAQCBjbGFzcyBHVGVzdFhNTFRlc3RDYXNlKGd0ZXN0X3Rlc3RfdXRpbHMu
VGVzdENhc2UpOgogICAgIGFjdHVhbF9hdHRyaWJ1dGVzICAgPSBhY3R1YWxfbm9kZSAgLmF0dHJp
YnV0ZXMKICAgICBzZWxmLmFzc2VydEVxdWFscygKICAgICAgICAgZXhwZWN0ZWRfYXR0cmlidXRl
cy5sZW5ndGgsIGFjdHVhbF9hdHRyaWJ1dGVzLmxlbmd0aCwKLSAgICAgICAgImF0dHJpYnV0ZSBu
dW1iZXJzIGRpZmZlciBpbiBlbGVtZW50ICIgKyBhY3R1YWxfbm9kZS50YWdOYW1lKQorICAgICAg
ICAnYXR0cmlidXRlIG51bWJlcnMgZGlmZmVyIGluIGVsZW1lbnQgJXM6XG5FeHBlY3RlZDogJXJc
bkFjdHVhbDogJXInICUgKAorICAgICAgICAgICAgYWN0dWFsX25vZGUudGFnTmFtZSwgZXhwZWN0
ZWRfYXR0cmlidXRlcy5rZXlzKCksCisgICAgICAgICAgICBhY3R1YWxfYXR0cmlidXRlcy5rZXlz
KCkpKQogICAgIGZvciBpIGluIHJhbmdlKGV4cGVjdGVkX2F0dHJpYnV0ZXMubGVuZ3RoKToKICAg
ICAgIGV4cGVjdGVkX2F0dHIgPSBleHBlY3RlZF9hdHRyaWJ1dGVzLml0ZW0oaSkKICAgICAgIGFj
dHVhbF9hdHRyICAgPSBhY3R1YWxfYXR0cmlidXRlcy5nZXQoZXhwZWN0ZWRfYXR0ci5uYW1lKQog
ICAgICAgc2VsZi5hc3NlcnRfKAogICAgICAgICAgIGFjdHVhbF9hdHRyIGlzIG5vdCBOb25lLAot
ICAgICAgICAgICJleHBlY3RlZCBhdHRyaWJ1dGUgJXMgbm90IGZvdW5kIGluIGVsZW1lbnQgJXMi
ICUKKyAgICAgICAgICAnZXhwZWN0ZWQgYXR0cmlidXRlICVzIG5vdCBmb3VuZCBpbiBlbGVtZW50
ICVzJyAlCiAgICAgICAgICAgKGV4cGVjdGVkX2F0dHIubmFtZSwgYWN0dWFsX25vZGUudGFnTmFt
ZSkpCi0gICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZF9hdHRyLnZhbHVlLCBhY3R1YWxf
YXR0ci52YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICIgdmFsdWVzIG9mIGF0dHJpYnV0
ZSAlcyBpbiBlbGVtZW50ICVzIGRpZmZlciIgJQotICAgICAgICAgICAgICAgICAgICAgICAgKGV4
cGVjdGVkX2F0dHIubmFtZSwgYWN0dWFsX25vZGUudGFnTmFtZSkpCisgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygKKyAgICAgICAgICBleHBlY3RlZF9hdHRyLnZhbHVlLCBhY3R1YWxfYXR0ci52YWx1
ZSwKKyAgICAgICAgICAnIHZhbHVlcyBvZiBhdHRyaWJ1dGUgJXMgaW4gZWxlbWVudCAlcyBkaWZm
ZXI6ICVzIHZzICVzJyAlCisgICAgICAgICAgKGV4cGVjdGVkX2F0dHIubmFtZSwgYWN0dWFsX25v
ZGUudGFnTmFtZSwKKyAgICAgICAgICAgZXhwZWN0ZWRfYXR0ci52YWx1ZSwgYWN0dWFsX2F0dHIu
dmFsdWUpKQogCiAgICAgZXhwZWN0ZWRfY2hpbGRyZW4gPSBzZWxmLl9HZXRDaGlsZHJlbihleHBl
Y3RlZF9ub2RlKQogICAgIGFjdHVhbF9jaGlsZHJlbiA9IHNlbGYuX0dldENoaWxkcmVuKGFjdHVh
bF9ub2RlKQogICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAogICAgICAgICBsZW4oZXhwZWN0ZWRfY2hp
bGRyZW4pLCBsZW4oYWN0dWFsX2NoaWxkcmVuKSwKLSAgICAgICAgIm51bWJlciBvZiBjaGlsZCBl
bGVtZW50cyBkaWZmZXIgaW4gZWxlbWVudCAiICsgYWN0dWFsX25vZGUudGFnTmFtZSkKKyAgICAg
ICAgJ251bWJlciBvZiBjaGlsZCBlbGVtZW50cyBkaWZmZXIgaW4gZWxlbWVudCAnICsgYWN0dWFs
X25vZGUudGFnTmFtZSkKICAgICBmb3IgY2hpbGRfaWQsIGNoaWxkIGluIGV4cGVjdGVkX2NoaWxk
cmVuLml0ZXJpdGVtcygpOgogICAgICAgc2VsZi5hc3NlcnRfKGNoaWxkX2lkIGluIGFjdHVhbF9j
aGlsZHJlbiwKICAgICAgICAgICAgICAgICAgICAnPCVzPiBpcyBub3QgaW4gPCVzPiAoaW4gZWxl
bWVudCAlcyknICUKQEAgLTEwMywxOSArMTAxLDIyIEBAIGNsYXNzIEdUZXN0WE1MVGVzdENhc2Uo
Z3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CiAgICAgICBzZWxmLkFzc2VydEVxdWl2YWxlbnRO
b2RlcyhjaGlsZCwgYWN0dWFsX2NoaWxkcmVuW2NoaWxkX2lkXSkKIAogICBpZGVudGlmeWluZ19h
dHRyaWJ1dGUgPSB7Ci0gICAgInRlc3RzdWl0ZXMiOiAibmFtZSIsCi0gICAgInRlc3RzdWl0ZSI6
ICJuYW1lIiwKLSAgICAidGVzdGNhc2UiOiAgIm5hbWUiLAotICAgICJmYWlsdXJlIjogICAibWVz
c2FnZSIsCi0gICAgfQorICAgICAgJ3Rlc3RzdWl0ZXMnOiAnbmFtZScsCisgICAgICAndGVzdHN1
aXRlJzogJ25hbWUnLAorICAgICAgJ3Rlc3RjYXNlJzogJ25hbWUnLAorICAgICAgJ2ZhaWx1cmUn
OiAnbWVzc2FnZScsCisgICAgICAncHJvcGVydHknOiAnbmFtZScsCisgIH0KIAogICBkZWYgX0dl
dENoaWxkcmVuKHNlbGYsIGVsZW1lbnQpOgogICAgICIiIgogICAgIEZldGNoZXMgYWxsIG9mIHRo
ZSBjaGlsZCBub2RlcyBvZiBlbGVtZW50LCBhIERPTSBFbGVtZW50IG9iamVjdC4KICAgICBSZXR1
cm5zIHRoZW0gYXMgdGhlIHZhbHVlcyBvZiBhIGRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIElEcyBv
ZiB0aGUKLSAgICBjaGlsZHJlbi4gIEZvciA8dGVzdHN1aXRlcz4sIDx0ZXN0c3VpdGU+IGFuZCA8
dGVzdGNhc2U+IGVsZW1lbnRzLCB0aGUgSUQKLSAgICBpcyB0aGUgdmFsdWUgb2YgdGhlaXIgIm5h
bWUiIGF0dHJpYnV0ZTsgZm9yIDxmYWlsdXJlPiBlbGVtZW50cywgaXQgaXMKLSAgICB0aGUgdmFs
dWUgb2YgdGhlICJtZXNzYWdlIiBhdHRyaWJ1dGU7IENEQVRBIHNlY3Rpb25zIGFuZCBub24td2hp
dGVzcGFjZQorICAgIGNoaWxkcmVuLiAgRm9yIDx0ZXN0c3VpdGVzPiwgPHRlc3RzdWl0ZT4sIDx0
ZXN0Y2FzZT4sIGFuZCA8cHJvcGVydHk+CisgICAgZWxlbWVudHMsIHRoZSBJRCBpcyB0aGUgdmFs
dWUgb2YgdGhlaXIgIm5hbWUiIGF0dHJpYnV0ZTsgZm9yIDxmYWlsdXJlPgorICAgIGVsZW1lbnRz
LCBpdCBpcyB0aGUgdmFsdWUgb2YgdGhlICJtZXNzYWdlIiBhdHRyaWJ1dGU7IGZvciA8cHJvcGVy
dGllcz4KKyAgICBlbGVtZW50cywgaXQgaXMgdGhlIHZhbHVlIG9mIHRoZWlyIHBhcmVudCdzICJu
YW1lIiBhdHRyaWJ1dGUgcGx1cyB0aGUKKyAgICBsaXRlcmFsIHN0cmluZyAicHJvcGVydGllcyI7
IENEQVRBIHNlY3Rpb25zIGFuZCBub24td2hpdGVzcGFjZQogICAgIHRleHQgbm9kZXMgYXJlIGNv
bmNhdGVuYXRlZCBpbnRvIGEgc2luZ2xlIENEQVRBIHNlY3Rpb24gd2l0aCBJRAogICAgICJkZXRh
aWwiLiAgQW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiBhbnkgZWxlbWVudCBvdGhlciB0aGFuIHRo
ZSBhYm92ZQogICAgIGZvdXIgaXMgZW5jb3VudGVyZWQsIGlmIHR3byBjaGlsZCBlbGVtZW50cyB3
aXRoIHRoZSBzYW1lIGlkZW50aWZ5aW5nCkBAIC0xMjUsMjEgKzEyNiwyNyBAQCBjbGFzcyBHVGVz
dFhNTFRlc3RDYXNlKGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgogICAgIGNoaWxkcmVuID0g
e30KICAgICBmb3IgY2hpbGQgaW4gZWxlbWVudC5jaGlsZE5vZGVzOgogICAgICAgaWYgY2hpbGQu
bm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05PREU6Ci0gICAgICAgIHNlbGYuYXNzZXJ0XyhjaGls
ZC50YWdOYW1lIGluIHNlbGYuaWRlbnRpZnlpbmdfYXR0cmlidXRlLAotICAgICAgICAgICAgICAg
ICAgICAgIkVuY291bnRlcmVkIHVua25vd24gZWxlbWVudCA8JXM+IiAlIGNoaWxkLnRhZ05hbWUp
Ci0gICAgICAgIGNoaWxkSUQgPSBjaGlsZC5nZXRBdHRyaWJ1dGUoc2VsZi5pZGVudGlmeWluZ19h
dHRyaWJ1dGVbY2hpbGQudGFnTmFtZV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0XyhjaGlsZElEIG5v
dCBpbiBjaGlsZHJlbikKLSAgICAgICAgY2hpbGRyZW5bY2hpbGRJRF0gPSBjaGlsZAorICAgICAg
ICBpZiBjaGlsZC50YWdOYW1lID09ICdwcm9wZXJ0aWVzJzoKKyAgICAgICAgICBzZWxmLmFzc2Vy
dF8oY2hpbGQucGFyZW50Tm9kZSBpcyBub3QgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
J0VuY291bnRlcmVkIDxwcm9wZXJ0aWVzPiBlbGVtZW50IHdpdGhvdXQgYSBwYXJlbnQnKQorICAg
ICAgICAgIGNoaWxkX2lkID0gY2hpbGQucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoJ25hbWUnKSAr
ICctcHJvcGVydGllcycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICBzZWxmLmFzc2VydF8oY2hp
bGQudGFnTmFtZSBpbiBzZWxmLmlkZW50aWZ5aW5nX2F0dHJpYnV0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgJ0VuY291bnRlcmVkIHVua25vd24gZWxlbWVudCA8JXM+JyAlIGNoaWxkLnRhZ05h
bWUpCisgICAgICAgICAgY2hpbGRfaWQgPSBjaGlsZC5nZXRBdHRyaWJ1dGUoCisgICAgICAgICAg
ICAgIHNlbGYuaWRlbnRpZnlpbmdfYXR0cmlidXRlW2NoaWxkLnRhZ05hbWVdKQorICAgICAgICBz
ZWxmLmFzc2VydF8oY2hpbGRfaWQgbm90IGluIGNoaWxkcmVuKQorICAgICAgICBjaGlsZHJlbltj
aGlsZF9pZF0gPSBjaGlsZAogICAgICAgZWxpZiBjaGlsZC5ub2RlVHlwZSBpbiBbTm9kZS5URVhU
X05PREUsIE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFXToKLSAgICAgICAgaWYgImRldGFpbCIgbm90
IGluIGNoaWxkcmVuOgorICAgICAgICBpZiAnZGV0YWlsJyBub3QgaW4gY2hpbGRyZW46CiAgICAg
ICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlID09IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFIG9yCiAg
ICAgICAgICAgICAgIG5vdCBjaGlsZC5ub2RlVmFsdWUuaXNzcGFjZSgpKToKLSAgICAgICAgICAg
IGNoaWxkcmVuWyJkZXRhaWwiXSA9IGNoaWxkLm93bmVyRG9jdW1lbnQuY3JlYXRlQ0RBVEFTZWN0
aW9uKAorICAgICAgICAgICAgY2hpbGRyZW5bJ2RldGFpbCddID0gY2hpbGQub3duZXJEb2N1bWVu
dC5jcmVhdGVDREFUQVNlY3Rpb24oCiAgICAgICAgICAgICAgICAgY2hpbGQubm9kZVZhbHVlKQog
ICAgICAgICBlbHNlOgotICAgICAgICAgIGNoaWxkcmVuWyJkZXRhaWwiXS5ub2RlVmFsdWUgKz0g
Y2hpbGQubm9kZVZhbHVlCisgICAgICAgICAgY2hpbGRyZW5bJ2RldGFpbCddLm5vZGVWYWx1ZSAr
PSBjaGlsZC5ub2RlVmFsdWUKICAgICAgIGVsc2U6Ci0gICAgICAgIHNlbGYuZmFpbCgiRW5jb3Vu
dGVyZWQgdW5leHBlY3RlZCBub2RlIHR5cGUgJWQiICUgY2hpbGQubm9kZVR5cGUpCisgICAgICAg
IHNlbGYuZmFpbCgnRW5jb3VudGVyZWQgdW5leHBlY3RlZCBub2RlIHR5cGUgJWQnICUgY2hpbGQu
bm9kZVR5cGUpCiAgICAgcmV0dXJuIGNoaWxkcmVuCiAKICAgZGVmIE5vcm1hbGl6ZVhtbChzZWxm
LCBlbGVtZW50KToKQEAgLTE1MCwyMyArMTU3LDQwIEBAIGNsYXNzIEdUZXN0WE1MVGVzdENhc2Uo
Z3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CiAgICAgKiAgVGhlICJ0aW1lIiBhdHRyaWJ1dGUg
b2YgPHRlc3RzdWl0ZXM+LCA8dGVzdHN1aXRlPiBhbmQgPHRlc3RjYXNlPgogICAgICAgIGVsZW1l
bnRzIGlzIHJlcGxhY2VkIHdpdGggYSBzaW5nbGUgYXN0ZXJpc2ssIGlmIGl0IGNvbnRhaW5zCiAg
ICAgICAgb25seSBkaWdpdCBjaGFyYWN0ZXJzLgotICAgICogIFRoZSBsaW5lIG51bWJlciByZXBv
cnRlZCBpbiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgIm1lc3NhZ2UiCi0gICAgICAgYXR0cmlidXRl
IG9mIDxmYWlsdXJlPiBlbGVtZW50cyBpcyByZXBsYWNlZCB3aXRoIGEgc2luZ2xlIGFzdGVyaXNr
LgorICAgICogIFRoZSAidGltZXN0YW1wIiBhdHRyaWJ1dGUgb2YgPHRlc3RzdWl0ZXM+IGVsZW1l
bnRzIGlzIHJlcGxhY2VkIHdpdGggYQorICAgICAgIHNpbmdsZSBhc3RlcmlzaywgaWYgaXQgY29u
dGFpbnMgYSB2YWxpZCBJU084NjAxIGRhdGV0aW1lIHZhbHVlLgorICAgICogIFRoZSAidHlwZV9w
YXJhbSIgYXR0cmlidXRlIG9mIDx0ZXN0Y2FzZT4gZWxlbWVudHMgaXMgcmVwbGFjZWQgd2l0aCBh
CisgICAgICAgc2luZ2xlIGFzdGVyaXNrIChpZiBpdCBzbiBub24tZW1wdHkpIGFzIGl0IGlzIHRo
ZSB0eXBlIG5hbWUgcmV0dXJuZWQKKyAgICAgICBieSB0aGUgY29tcGlsZXIgYW5kIGlzIHBsYXRm
b3JtIGRlcGVuZGVudC4KKyAgICAqICBUaGUgbGluZSBpbmZvIHJlcG9ydGVkIGluIHRoZSBmaXJz
dCBsaW5lIG9mIHRoZSAibWVzc2FnZSIKKyAgICAgICBhdHRyaWJ1dGUgYW5kIENEQVRBIHNlY3Rp
b24gb2YgPGZhaWx1cmU+IGVsZW1lbnRzIGlzIHJlcGxhY2VkIHdpdGggdGhlCisgICAgICAgZmls
ZSdzIGJhc2VuYW1lIGFuZCBhIHNpbmdsZSBhc3RlcmlzayBmb3IgdGhlIGxpbmUgbnVtYmVyLgog
ICAgICogIFRoZSBkaXJlY3RvcnkgbmFtZXMgaW4gZmlsZSBwYXRocyBhcmUgcmVtb3ZlZC4KICAg
ICAqICBUaGUgc3RhY2sgdHJhY2VzIGFyZSByZW1vdmVkLgogICAgICIiIgogCi0gICAgaWYgZWxl
bWVudC50YWdOYW1lIGluICgidGVzdHN1aXRlcyIsICJ0ZXN0c3VpdGUiLCAidGVzdGNhc2UiKToK
LSAgICAgIHRpbWUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoInRpbWUiKQotICAgICAgdGlt
ZS52YWx1ZSA9IHJlLnN1YihyIl5cZCsoXC5cZCspPyQiLCAiKiIsIHRpbWUudmFsdWUpCi0gICAg
ZWxpZiBlbGVtZW50LnRhZ05hbWUgPT0gImZhaWx1cmUiOgorICAgIGlmIGVsZW1lbnQudGFnTmFt
ZSA9PSAndGVzdHN1aXRlcyc6CisgICAgICB0aW1lc3RhbXAgPSBlbGVtZW50LmdldEF0dHJpYnV0
ZU5vZGUoJ3RpbWVzdGFtcCcpCisgICAgICB0aW1lc3RhbXAudmFsdWUgPSByZS5zdWIocideXGR7
NH0tXGRcZC1cZFxkVFxkXGQ6XGRcZDpcZFxkJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyonLCB0aW1lc3RhbXAudmFsdWUpCisgICAgaWYgZWxlbWVudC50YWdOYW1lIGluICgn
dGVzdHN1aXRlcycsICd0ZXN0c3VpdGUnLCAndGVzdGNhc2UnKToKKyAgICAgIHRpbWUgPSBlbGVt
ZW50LmdldEF0dHJpYnV0ZU5vZGUoJ3RpbWUnKQorICAgICAgdGltZS52YWx1ZSA9IHJlLnN1Yihy
J15cZCsoXC5cZCspPyQnLCAnKicsIHRpbWUudmFsdWUpCisgICAgICB0eXBlX3BhcmFtID0gZWxl
bWVudC5nZXRBdHRyaWJ1dGVOb2RlKCd0eXBlX3BhcmFtJykKKyAgICAgIGlmIHR5cGVfcGFyYW0g
YW5kIHR5cGVfcGFyYW0udmFsdWU6CisgICAgICAgIHR5cGVfcGFyYW0udmFsdWUgPSAnKicKKyAg
ICBlbGlmIGVsZW1lbnQudGFnTmFtZSA9PSAnZmFpbHVyZSc6CisgICAgICBzb3VyY2VfbGluZV9w
YXQgPSByJ14uKlsvXFxdKC4qOilcZCtcbicKKyAgICAgICMgUmVwbGFjZXMgdGhlIHNvdXJjZSBs
aW5lIGluZm9ybWF0aW9uIHdpdGggYSBub3JtYWxpemVkIGZvcm0uCisgICAgICBtZXNzYWdlID0g
ZWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKCdtZXNzYWdlJykKKyAgICAgIG1lc3NhZ2UudmFsdWUg
PSByZS5zdWIoc291cmNlX2xpbmVfcGF0LCAnXFwxKlxuJywgbWVzc2FnZS52YWx1ZSkKICAgICAg
IGZvciBjaGlsZCBpbiBlbGVtZW50LmNoaWxkTm9kZXM6CiAgICAgICAgIGlmIGNoaWxkLm5vZGVU
eXBlID09IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFOgotICAgICAgICAgICMgUmVtb3ZlcyB0aGUg
c291cmNlIGxpbmUgbnVtYmVyLgotICAgICAgICAgIGNkYXRhID0gcmUuc3ViKHIiXi4qWy9cXF0o
Lio6KVxkK1xuIiwgIlxcMSpcbiIsIGNoaWxkLm5vZGVWYWx1ZSkKKyAgICAgICAgICAjIFJlcGxh
Y2VzIHRoZSBzb3VyY2UgbGluZSBpbmZvcm1hdGlvbiB3aXRoIGEgbm9ybWFsaXplZCBmb3JtLgor
ICAgICAgICAgIGNkYXRhID0gcmUuc3ViKHNvdXJjZV9saW5lX3BhdCwgJ1xcMSpcbicsIGNoaWxk
Lm5vZGVWYWx1ZSkKICAgICAgICAgICAjIFJlbW92ZXMgdGhlIGFjdHVhbCBzdGFjayB0cmFjZS4K
LSAgICAgICAgICBjaGlsZC5ub2RlVmFsdWUgPSByZS5zdWIociJcblN0YWNrIHRyYWNlOlxuKC58
XG4pKiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiLCBjZGF0YSkKKyAg
ICAgICAgICBjaGlsZC5ub2RlVmFsdWUgPSByZS5zdWIocidTdGFjayB0cmFjZTpcbigufFxuKSon
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU3RhY2sgdHJhY2U6XG4qJywg
Y2RhdGEpCiAgICAgZm9yIGNoaWxkIGluIGVsZW1lbnQuY2hpbGROb2RlczoKICAgICAgIGlmIGNo
aWxkLm5vZGVUeXBlID09IE5vZGUuRUxFTUVOVF9OT0RFOgogICAgICAgICBzZWxmLk5vcm1hbGl6
ZVhtbChjaGlsZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJv
ZHVjdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5jYwpp
bmRleCA4YjhhNDBiNDRlOWI0MWY0YzI5ZDc1NTI2OTA4NTY4YWYyMzc5MTJkLi4wZjY5ZjZkYmQy
ZTI2YTNhOWJkZjc1NmI0ODA3MzdhNGVmNDIxOGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L3Byb2R1Y3Rpb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9wcm9kdWN0aW9uLmNjCkBAIC0yNiwxMCArMjYsOSBAQAogLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAog
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29v
Z2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRoaXMgaXMgcGFydCBvZiB0aGUgdW5pdCB0
ZXN0IGZvciBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaC4KKy8vIFRoaXMgaXMgcGFydCBvZiB0
aGUgdW5pdCB0ZXN0IGZvciBndGVzdF9wcm9kLmguCiAKICNpbmNsdWRlICJwcm9kdWN0aW9uLmgi
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5o
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9kdWN0aW9uLmgKaW5kZXggOGYxNmZm
ZmEyNDE2YzU3MTUzZmFiM2UwOTdkMTM0YWYxZmI0YTliYy4uNTQyNzIzYjcwODczODdkNGZiNTI5
ZmMwN2E2ODhiYzFjOGQ3OGIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9wcm9kdWN0aW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9k
dWN0aW9uLmgKQEAgLTI2LDE1ICsyNiwxNCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhh
bnlvbmcgV2FuKQotLy8KLS8vIFRoaXMgaXMgcGFydCBvZiB0aGUgdW5pdCB0ZXN0IGZvciBpbmNs
dWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaC4KKy8vIFRoaXMgaXMgcGFydCBvZiB0aGUgdW5pdCB0ZXN0
IGZvciBndGVzdF9wcm9kLmguCiAKICNpZm5kZWYgR1RFU1RfVEVTVF9QUk9EVUNUSU9OX0hfCiAj
ZGVmaW5lIEdURVNUX1RFU1RfUFJPRFVDVElPTl9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Rf
cHJvZC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0X3Byb2QuaCIKIAogY2xhc3MgUHJpdmF0ZUNv
ZGUgewogIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
cnVuX3Rlc3RzX3V0aWwucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0
c191dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5ZTU3OTMxZWJhMmM2MTFl
MGExZjYwZmZmNGYwOTUzOWUxMDc2N2FkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3RzX3V0
aWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0NjYgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOCBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0j
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIi
UHJvdmlkZXMgZmFjaWxpdGllcyBmb3IgcnVubmluZyBTQ29ucy1idWlsdCBHb29nbGUgVGVzdC9N
b2NrIHRlc3RzLiIiIgotCi0KLWltcG9ydCBvcHRwYXJzZQotaW1wb3J0IG9zCi1pbXBvcnQgcmUK
LWltcG9ydCBzZXRzCi1pbXBvcnQgc3lzCi0KLXRyeToKLSAgIyBzdWJyb2Nlc3MgbW9kdWxlIGlz
IGEgcHJlZmVyYWJsZSB3YXkgdG8gaW52b2tlIHN1YnByb2Nlc3NlcyBidXQgaXQgbWF5Ci0gICMg
bm90IGJlIGF2YWlsYWJsZSBvbiBNYWNPUyBYIDEwLjQuCi0gICMgU3VwcHJlc3NlcyB0aGUgJ0lt
cG9ydCBub3QgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZScgbGludCBjb21wbGFpbnQuCi0gICMgcHls
aW50OiBkaXNhYmxlLW1zZz1DNjIwNAotICBpbXBvcnQgc3VicHJvY2VzcwotZXhjZXB0IEltcG9y
dEVycm9yOgotICBzdWJwcm9jZXNzID0gTm9uZQotCi1IRUxQX01TRyA9ICIiIlJ1bnMgdGhlIHNw
ZWNpZmllZCB0ZXN0cyBmb3IgJShwcm9qKXMuCi0KLVNZTk9QU0lTCi0gICAgICAgcnVuX3Rlc3Rz
LnB5IFtPUFRJT05dLi4uIFtCVUlMRF9ESVJdLi4uIFtURVNUXS4uLgotCi1ERVNDUklQVElPTgot
ICAgICAgIFJ1bnMgdGhlIHNwZWNpZmllZCB0ZXN0cyAoZWl0aGVyIGJpbmFyeSBvciBQeXRob24p
LCBhbmQgcHJpbnRzIGEKLSAgICAgICBzdW1tYXJ5IG9mIHRoZSByZXN1bHRzLiBCVUlMRF9ESVJT
IHdpbGwgYmUgdXNlZCB0byBzZWFyY2ggZm9yIHRoZQotICAgICAgIGJpbmFyaWVzLiBJZiBubyBU
RVNUcyBhcmUgc3BlY2lmaWVkLCBhbGwgYmluYXJ5IHRlc3RzIGZvdW5kIGluCi0gICAgICAgQlVJ
TERfRElScyBhbmQgYWxsIFB5dGhvbiB0ZXN0cyBmb3VuZCBpbiB0aGUgZGlyZWN0b3J5IHRlc3Qv
IChpbiB0aGUKLSAgICAgICAlKHByb2opcyByb290KSBhcmUgcnVuLgotCi0gICAgICAgVEVTVCBp
cyBhIG5hbWUgb2YgZWl0aGVyIGEgYmluYXJ5IG9yIGEgUHl0aG9uIHRlc3QuIEEgYmluYXJ5IHRl
c3QgaXMKLSAgICAgICBhbiBleGVjdXRhYmxlIGZpbGUgbmFtZWQgKl90ZXN0IG9yICpfdW5pdHRl
c3QgKHdpdGggdGhlIC5leGUKLSAgICAgICBleHRlbnNpb24gb24gV2luZG93cykgQSBQeXRob24g
dGVzdCBpcyBhIHNjcmlwdCBuYW1lZCAqX3Rlc3QucHkgb3IKLSAgICAgICAqX3VuaXR0ZXN0LnB5
LgotCi1PUFRJT05TCi0gICAgICAgLWgsIC0taGVscAotICAgICAgICAgICAgICBQcmludCB0aGlz
IGhlbHAgbWVzc2FnZS4KLSAgICAgICAtYyBDT05GSUdVUkFUSU9OUwotICAgICAgICAgICAgICBT
cGVjaWZ5IGJ1aWxkIGRpcmVjdG9yaWVzIHZpYSBidWlsZCBjb25maWd1cmF0aW9ucy4KLSAgICAg
ICAgICAgICAgQ09ORklHVVJBVElPTlMgaXMgZWl0aGVyIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qg
b2YgYnVpbGQKLSAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgb3IgJ2FsbCcuIEVhY2ggY29u
ZmlndXJhdGlvbiBpcyBlcXVpdmFsZW50IHRvCi0gICAgICAgICAgICAgIGFkZGluZyAnc2NvbnMv
YnVpbGQvPGNvbmZpZ3VyYXRpb24+LyUocHJvailzL3Njb25zJyB0byBCVUlMRF9ESVJzLgotICAg
ICAgICAgICAgICBTcGVjaWZ5aW5nIC1jPWFsbCBpcyBlcXVpdmFsZW50IHRvIHByb3ZpZGluZyBh
bGwgZGlyZWN0b3JpZXMKLSAgICAgICAgICAgICAgbGlzdGVkIGluIEtOT1dOIEJVSUxEIERJUkVD
VE9SSUVTIHNlY3Rpb24gYmVsb3cuCi0gICAgICAgLWEKLSAgICAgICAgICAgICAgRXF1aXZhbGVu
dCB0byAtYz1hbGwKLSAgICAgICAtYgotICAgICAgICAgICAgICBFcXVpdmFsZW50IHRvIC1jPWFs
bCB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCB0aGUgc2NyaXB0IHdpbGwgbm90Ci0gICAgICAgICAg
ICAgIGZhaWwgaWYgc29tZSBvZiB0aGUgS05PV04gQlVJTEQgRElSRUNUT1JJRVMgZG8gbm90IGV4
aXN0czsgdGhlCi0gICAgICAgICAgICAgIHNjcmlwdCB3aWxsIHNpbXBseSBub3QgcnVuIHRoZSB0
ZXN0cyB0aGVyZS4gJ2InIHN0YW5kcyBmb3IKLSAgICAgICAgICAgICAgJ2J1aWx0IGRpcmVjdG9y
aWVzJy4KLQotUkVUVVJOIFZBTFVFCi0gICAgICAgUmV0dXJucyAwIGlmIGFsbCB0ZXN0cyBhcmUg
c3VjY2Vzc2Z1bDsgb3RoZXJ3aXNlIHJldHVybnMgMS4KLQotRVhBTVBMRVMKLSAgICAgICBydW5f
dGVzdHMucHkKLSAgICAgICAgICAgICAgUnVucyBhbGwgdGVzdHMgZm9yIHRoZSBkZWZhdWx0IGJ1
aWxkIGNvbmZpZ3VyYXRpb24uCi0gICAgICAgcnVuX3Rlc3RzLnB5IC1hCi0gICAgICAgICAgICAg
IFJ1bnMgYWxsIHRlc3RzIHdpdGggYmluYXJpZXMgaW4gS05PV04gQlVJTEQgRElSRUNUT1JJRVMu
Ci0gICAgICAgcnVuX3Rlc3RzLnB5IC1iCi0gICAgICAgICAgICAgIFJ1bnMgYWxsIHRlc3RzIGlu
IEtOT1dOIEJVSUxEIERJUkVDVE9SSUVTIHRoYXQgaGF2ZSBiZWVuCi0gICAgICAgICAgICAgIGJ1
aWx0LgotICAgICAgIHJ1bl90ZXN0cy5weSBmb28vCi0gICAgICAgICAgICAgIFJ1bnMgYWxsIHRl
c3RzIGluIHRoZSBmb28vIGRpcmVjdG9yeSBhbmQgYWxsIFB5dGhvbiB0ZXN0cyBpbgotICAgICAg
ICAgICAgICB0aGUgZGlyZWN0b3J5IHRlc3QuIFRoZSBQeXRob24gdGVzdHMgYXJlIGluc3RydWN0
ZWQgdG8gbG9vawotICAgICAgICAgICAgICBmb3IgYmluYXJpZXMgaW4gZm9vLy4KLSAgICAgICBy
dW5fdGVzdHMucHkgYmFyX3Rlc3QuZXhlIHRlc3QvYmF6X3Rlc3QuZXhlIGZvby8gYmFyLwotICAg
ICAgICAgICAgICBSdW5zIGZvby9iYXJfdGVzdC5leGUsIGJhci9iYXJfdGVzdC5leGUsIGZvby9i
YXpfdGVzdC5leGUsIGFuZAotICAgICAgICAgICAgICBiYXIvYmF6X3Rlc3QuZXhlLgotICAgICAg
IHJ1bl90ZXN0cy5weSBmb28gYmFyIHRlc3QvZm9vX3Rlc3QucHkKLSAgICAgICAgICAgICAgUnVu
cyB0ZXN0L2Zvb190ZXN0LnB5IHR3aWNlIGluc3RydWN0aW5nIGl0IHRvIGxvb2sgZm9yIGl0cwot
ICAgICAgICAgICAgICB0ZXN0IGJpbmFyaWVzIGluIHRoZSBkaXJlY3RvcmllcyBmb28gYW5kIGJh
ciwKLSAgICAgICAgICAgICAgY29ycmVzcG9uZGluZ2x5LgotCi1LTk9XTiBCVUlMRCBESVJFQ1RP
UklFUwotICAgICAgcnVuX3Rlc3RzLnB5IGtub3dzIGFib3V0IGRpcmVjdG9yaWVzIHdoZXJlIHRo
ZSBTQ29ucyBidWlsZCBzY3JpcHQKLSAgICAgIGRlcG9zaXRzIGl0cyBwcm9kdWN0cy4gVGhlc2Ug
YXJlIHRoZSBkaXJlY3RvcmllcyB3aGVyZSBydW5fdGVzdHMucHkKLSAgICAgIHdpbGwgYmUgbG9v
a2luZyBmb3IgaXRzIGJpbmFyaWVzLiBDdXJyZW50bHksICUocHJvailzJ3MgU0NvbnN0cnVjdCBm
aWxlCi0gICAgICBkZWZpbmVzIHRoZW0gYXMgZm9sbG93cyAodGhlIGRlZmF1bHQgYnVpbGQgZGly
ZWN0b3J5IGlzIHRoZSBmaXJzdCBvbmUKLSAgICAgIGxpc3RlZCBpbiBlYWNoIGdyb3VwKToKLSAg
ICAgIE9uIFdpbmRvd3M6Ci0gICAgICAgICAgICAgIDwlKHByb2opcyByb290Pi9zY29ucy9idWls
ZC93aW4tZGJnOC8lKHByb2opcy9zY29ucy8KLSAgICAgICAgICAgICAgPCUocHJvailzIHJvb3Q+
L3Njb25zL2J1aWxkL3dpbi1vcHQ4LyUocHJvailzL3Njb25zLwotICAgICAgT24gTWFjOgotICAg
ICAgICAgICAgICA8JShwcm9qKXMgcm9vdD4vc2NvbnMvYnVpbGQvbWFjLWRiZy8lKHByb2opcy9z
Y29ucy8KLSAgICAgICAgICAgICAgPCUocHJvailzIHJvb3Q+L3Njb25zL2J1aWxkL21hYy1vcHQv
JShwcm9qKXMvc2NvbnMvCi0gICAgICBPbiBvdGhlciBwbGF0Zm9ybXM6Ci0gICAgICAgICAgICAg
IDwlKHByb2opcyByb290Pi9zY29ucy9idWlsZC9kYmcvJShwcm9qKXMvc2NvbnMvCi0gICAgICAg
ICAgICAgIDwlKHByb2opcyByb290Pi9zY29ucy9idWlsZC9vcHQvJShwcm9qKXMvc2NvbnMvIiIi
Ci0KLUlTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdudCcKLUlTX01BQyA9IG9zLm5hbWUgPT0gJ3Bv
c2l4JyBhbmQgb3MudW5hbWUoKVswXSA9PSAnRGFyd2luJwotSVNfQ1lHV0lOID0gb3MubmFtZSA9
PSAncG9zaXgnIGFuZCAnQ1lHV0lOJyBpbiBvcy51bmFtZSgpWzBdCi0KLSMgRGVmaW5pdGlvbiBv
ZiBDT05GSUdTIG11c3QgbWF0Y2ggdGhhdCBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5IG5hbWVzIGlu
IHRoZQotIyBTQ29uc3RydWN0IHNjcmlwdC4gVGhlIGZpcnN0IGxpc3QgaXRlbSBpcyB0aGUgZGVm
YXVsdCBidWlsZCBjb25maWd1cmF0aW9uLgotaWYgSVNfV0lORE9XUzoKLSAgQ09ORklHUyA9ICgn
d2luLWRiZzgnLCAnd2luLW9wdDgnKQotZWxpZiBJU19NQUM6Ci0gIENPTkZJR1MgPSAoJ21hYy1k
YmcnLCAnbWFjLW9wdCcpCi1lbHNlOgotICBDT05GSUdTID0gKCdkYmcnLCAnb3B0JykKLQotaWYg
SVNfV0lORE9XUyBvciBJU19DWUdXSU46Ci0gIFBZVEhPTl9URVNUX1JFR0VYID0gcmUuY29tcGls
ZShyJ18odW5pdCk/dGVzdFwucHkkJywgcmUuSUdOT1JFQ0FTRSkKLSAgQklOQVJZX1RFU1RfUkVH
RVggPSByZS5jb21waWxlKHInXyh1bml0KT90ZXN0KFwuZXhlKT8kJywgcmUuSUdOT1JFQ0FTRSkK
LSAgQklOQVJZX1RFU1RfU0VBUkNIX1JFR0VYID0gcmUuY29tcGlsZShyJ18odW5pdCk/dGVzdFwu
ZXhlJCcsIHJlLklHTk9SRUNBU0UpCi1lbHNlOgotICBQWVRIT05fVEVTVF9SRUdFWCA9IHJlLmNv
bXBpbGUocidfKHVuaXQpP3Rlc3RcLnB5JCcpCi0gIEJJTkFSWV9URVNUX1JFR0VYID0gcmUuY29t
cGlsZShyJ18odW5pdCk/dGVzdCQnKQotICBCSU5BUllfVEVTVF9TRUFSQ0hfUkVHRVggPSBCSU5B
UllfVEVTVF9SRUdFWAotCi0KLWRlZiBfR2V0R3Rlc3RCdWlsZERpcihpbmplY3RlZF9vcywgc2Ny
aXB0X2RpciwgY29uZmlnKToKLSAgIiIiQ2FsY3VsYXRlcyBwYXRoIHRvIHRoZSBHb29nbGUgVGVz
dCBTQ29ucyBidWlsZCBkaXJlY3RvcnkuIiIiCi0KLSAgcmV0dXJuIGluamVjdGVkX29zLnBhdGgu
bm9ybXBhdGgoaW5qZWN0ZWRfb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NvbnMvYnVpbGQn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2d0ZXN0L3Njb25zJykpCi0KLQotZGVmIF9HZXRDb25maWdGcm9tQnVpbGRE
aXIoYnVpbGRfZGlyKToKLSAgIiIiRXh0cmFjdHMgdGhlIGNvbmZpZ3VyYXRpb24gbmFtZSBmcm9t
IHRoZSBidWlsZCBkaXJlY3RvcnkuIiIiCi0KLSAgIyBXZSBkb24ndCB3YW50IHRvIGRlcGVuZCBv
biBidWlsZF9kaXIgY29udGFpbmluZyB0aGUgY29ycmVjdCBwYXRoCi0gICMgc2VwYXJhdG9ycy4K
LSAgbSA9IHJlLm1hdGNoKHInLipbXFwvXShbXlxcL10rKVtcXC9dW15cXC9dK1tcXC9dc2NvbnNb
XFwvXT8kJywgYnVpbGRfZGlyKQotICBpZiBtOgotICAgIHJldHVybiBtLmdyb3VwKDEpCi0gIGVs
c2U6Ci0gICAgcHJpbnQgPj5zeXMuc3RkZXJyLCAoJyVzIGlzIGFuIGludmFsaWQgYnVpbGQgZGly
ZWN0b3J5IHRoYXQgZG9lcyBub3QgJwotICAgICAgICAgICAgICAgICAgICAgICAgICdjb3JyZXNw
b25kIHRvIGFueSBjb25maWd1cmF0aW9uLicgJSAoYnVpbGRfZGlyLCkpCi0gICAgcmV0dXJuICcn
Ci0KLQotIyBBbGwgcGF0aHMgaW4gdGhpcyBzY3JpcHQgYXJlIGVpdGhlciBhYnNvbHV0ZSBvciBy
ZWxhdGl2ZSB0byB0aGUgY3VycmVudAotIyB3b3JraW5nIGRpcmVjdG9yeSwgdW5sZXNzIG90aGVy
d2lzZSBzcGVjaWZpZWQuCi1jbGFzcyBUZXN0UnVubmVyKG9iamVjdCk6Ci0gICIiIlByb3ZpZGVz
IGZhY2lsaXRpZXMgZm9yIHJ1bm5pbmcgUHl0aG9uIGFuZCBiaW5hcnkgdGVzdHMgZm9yIEdvb2ds
ZSBUZXN0LiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLAotICAgICAgICAgICAgICAgc2NyaXB0
X2RpciwKLSAgICAgICAgICAgICAgIGJ1aWxkX2Rpcl92YXJfbmFtZT0nR1RFU1RfQlVJTERfRElS
JywKLSAgICAgICAgICAgICAgIGluamVjdGVkX29zPW9zLAotICAgICAgICAgICAgICAgaW5qZWN0
ZWRfc3VicHJvY2Vzcz1zdWJwcm9jZXNzLAotICAgICAgICAgICAgICAgaW5qZWN0ZWRfYnVpbGRf
ZGlyX2ZpbmRlcj1fR2V0R3Rlc3RCdWlsZERpcik6Ci0gICAgIiIiSW5pdGlhbGl6ZXMgYSBUZXN0
UnVubmVyIGluc3RhbmNlLgotCi0gICAgQXJnczoKLSAgICAgIHNjcmlwdF9kaXI6ICAgICAgICAg
ICAgICAgIEZpbGUgcGF0aCB0byB0aGUgY2FsbGluZyBzY3JpcHQuCi0gICAgICBidWlsZF9kaXJf
dmFyX25hbWU6ICAgICAgICBOYW1lIG9mIHRoZSBlbnYgdmFyaWFibGUgdXNlZCB0byBwYXNzIHRo
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIGRpcmVjdG9yeSBw
YXRoIHRvIHRoZSBpbnZva2VkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
cy4KLSAgICAgIGluamVjdGVkX29zOiAgICAgICAgICAgICAgIHN0YW5kYXJkIG9zIG1vZHVsZSBv
ciBhIG1vY2svc3R1YiBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rp
bmcuCi0gICAgICBpbmplY3RlZF9zdWJwcm9jZXNzOiAgICAgICBzdGFuZGFyZCBzdWJwcm9jZXNz
IG1vZHVsZSBvciBhIG1vY2svc3R1YgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yIHRlc3RpbmcKLSAgICAgIGluamVjdGVkX2J1aWxkX2Rpcl9maW5kZXI6IGZ1bmN0aW9uIHRo
YXQgZGV0ZXJtaW5lcyB0aGUgcGF0aCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KLSAgICAiIiIKLQotICAgIHNlbGYub3MgPSBpbmplY3Rl
ZF9vcwotICAgIHNlbGYuc3VicHJvY2VzcyA9IGluamVjdGVkX3N1YnByb2Nlc3MKLSAgICBzZWxm
LmJ1aWxkX2Rpcl9maW5kZXIgPSBpbmplY3RlZF9idWlsZF9kaXJfZmluZGVyCi0gICAgc2VsZi5i
dWlsZF9kaXJfdmFyX25hbWUgPSBidWlsZF9kaXJfdmFyX25hbWUKLSAgICBzZWxmLnNjcmlwdF9k
aXIgPSBzY3JpcHRfZGlyCi0KLSAgZGVmIF9HZXRCdWlsZERpckZvckNvbmZpZyhzZWxmLCBjb25m
aWcpOgotICAgICIiIlJldHVybnMgdGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgYSBnaXZlbiBjb25m
aWd1cmF0aW9uLiIiIgotCi0gICAgcmV0dXJuIHNlbGYuYnVpbGRfZGlyX2ZpbmRlcihzZWxmLm9z
LCBzZWxmLnNjcmlwdF9kaXIsIGNvbmZpZykKLQotICBkZWYgX1J1bihzZWxmLCBhcmdzKToKLSAg
ICAiIiJSdW5zIHRoZSBleGVjdXRhYmxlIHdpdGggZ2l2ZW4gYXJncyAoYXJnc1swXSBpcyB0aGUg
ZXhlY3V0YWJsZSBuYW1lKS4KLQotICAgIEFyZ3M6Ci0gICAgICBhcmdzOiBDb21tYW5kIGxpbmUg
YXJndW1lbnRzIGZvciB0aGUgcHJvY2Vzcy4KLQotICAgIFJldHVybnM6Ci0gICAgICBQcm9jZXNz
J3MgZXhpdCBjb2RlIGlmIGl0IGV4aXRzIG5vcm1hbGx5LCBvciAtc2lnbmFsIGlmIHRoZSBwcm9j
ZXNzIGlzCi0gICAgICBraWxsZWQgYnkgYSBzaWduYWwuCi0gICAgIiIiCi0KLSAgICBpZiBzZWxm
LnN1YnByb2Nlc3M6Ci0gICAgICByZXR1cm4gc2VsZi5zdWJwcm9jZXNzLlBvcGVuKGFyZ3MpLndh
aXQoKQotICAgIGVsc2U6Ci0gICAgICByZXR1cm4gc2VsZi5vcy5zcGF3bnYoc2VsZi5vcy5QX1dB
SVQsIGFyZ3NbMF0sIGFyZ3MpCi0KLSAgZGVmIF9SdW5CaW5hcnlUZXN0KHNlbGYsIHRlc3QpOgot
ICAgICIiIlJ1bnMgdGhlIGJpbmFyeSB0ZXN0IGdpdmVuIGl0cyBwYXRoLgotCi0gICAgQXJnczoK
LSAgICAgIHRlc3Q6IFBhdGggdG8gdGhlIHRlc3QgYmluYXJ5LgotCi0gICAgUmV0dXJuczoKLSAg
ICAgIFByb2Nlc3MncyBleGl0IGNvZGUgaWYgaXQgZXhpdHMgbm9ybWFsbHksIG9yIC1zaWduYWwg
aWYgdGhlIHByb2Nlc3MgaXMKLSAgICAgIGtpbGxlZCBieSBhIHNpZ25hbC4KLSAgICAiIiIKLQot
ICAgIHJldHVybiBzZWxmLl9SdW4oW3Rlc3RdKQotCi0gIGRlZiBfUnVuUHl0aG9uVGVzdChzZWxm
LCB0ZXN0LCBidWlsZF9kaXIpOgotICAgICIiIlJ1bnMgdGhlIFB5dGhvbiB0ZXN0IHNjcmlwdCB3
aXRoIHRoZSBzcGVjaWZpZWQgYnVpbGQgZGlyZWN0b3J5LgotCi0gICAgQXJnczoKLSAgICAgIHRl
c3Q6IFBhdGggdG8gdGhlIHRlc3QncyBQeXRob24gc2NyaXB0LgotICAgICAgYnVpbGRfZGlyOiBQ
YXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHRlc3QgYmluYXJ5IGlzIHRvIGJlIGZvdW5k
LgotCi0gICAgUmV0dXJuczoKLSAgICAgIFByb2Nlc3MncyBleGl0IGNvZGUgaWYgaXQgZXhpdHMg
bm9ybWFsbHksIG9yIC1zaWduYWwgaWYgdGhlIHByb2Nlc3MgaXMKLSAgICAgIGtpbGxlZCBieSBh
IHNpZ25hbC4KLSAgICAiIiIKLQotICAgIG9sZF9idWlsZF9kaXIgPSBzZWxmLm9zLmVudmlyb24u
Z2V0KHNlbGYuYnVpbGRfZGlyX3Zhcl9uYW1lKQotCi0gICAgdHJ5OgotICAgICAgc2VsZi5vcy5l
bnZpcm9uW3NlbGYuYnVpbGRfZGlyX3Zhcl9uYW1lXSA9IGJ1aWxkX2RpcgotCi0gICAgICAjIElm
IHRoaXMgc2NyaXB0IGlzIHJ1biBvbiBhIFdpbmRvd3MgbWFjaGluZSB0aGF0IGhhcyBubyBhc3Nv
Y2lhdGlvbgotICAgICAgIyBiZXR3ZWVuIHRoZSAucHkgZXh0ZW5zaW9uIGFuZCBhIHB5dGhvbiBp
bnRlcnByZXRlciwgc2ltcGx5IHBhc3NpbmcKLSAgICAgICMgdGhlIHNjcmlwdCBuYW1lIGludG8g
c3VicHJvY2Vzcy5Qb3Blbi9vcy5zcGF3biB3aWxsIG5vdCB3b3JrLgotICAgICAgcHJpbnQgJ1J1
bm5pbmcgJXMgLiAuIC4nICUgKHRlc3QsKQotICAgICAgcmV0dXJuIHNlbGYuX1J1bihbc3lzLmV4
ZWN1dGFibGUsIHRlc3RdKQotCi0gICAgZmluYWxseToKLSAgICAgIGlmIG9sZF9idWlsZF9kaXIg
aXMgTm9uZToKLSAgICAgICAgZGVsIHNlbGYub3MuZW52aXJvbltzZWxmLmJ1aWxkX2Rpcl92YXJf
bmFtZV0KLSAgICAgIGVsc2U6Ci0gICAgICAgIHNlbGYub3MuZW52aXJvbltzZWxmLmJ1aWxkX2Rp
cl92YXJfbmFtZV0gPSBvbGRfYnVpbGRfZGlyCi0KLSAgZGVmIF9GaW5kRmlsZXNCeVJlZ2V4KHNl
bGYsIGRpcmVjdG9yeSwgcmVnZXgpOgotICAgICIiIlJldHVybnMgZmlsZXMgaW4gYSBkaXJlY3Rv
cnkgd2hvc2UgbmFtZXMgbWF0Y2ggYSByZWd1bGFyIGV4cHJlc3Npb24uCi0KLSAgICBBcmdzOgot
ICAgICAgZGlyZWN0b3J5OiBQYXRoIHRvIHRoZSBkaXJlY3RvcnkgdG8gc2VhcmNoIGZvciBmaWxl
cy4KLSAgICAgIHJlZ2V4OiBSZWd1bGFyIGV4cHJlc3Npb24gdG8gZmlsdGVyIGZpbGUgbmFtZXMu
Ci0KLSAgICBSZXR1cm5zOgotICAgICAgVGhlIGxpc3Qgb2YgdGhlIHBhdGhzIHRvIHRoZSBmaWxl
cyBpbiB0aGUgZGlyZWN0b3J5LgotICAgICIiIgotCi0gICAgcmV0dXJuIFtzZWxmLm9zLnBhdGgu
am9pbihkaXJlY3RvcnksIGZpbGVfbmFtZSkKLSAgICAgICAgICAgIGZvciBmaWxlX25hbWUgaW4g
c2VsZi5vcy5saXN0ZGlyKGRpcmVjdG9yeSkKLSAgICAgICAgICAgIGlmIHJlLnNlYXJjaChyZWdl
eCwgZmlsZV9uYW1lKV0KLQotICAjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEltcGxlbWVudCBw
YXJzaW5nIG9mIHNjb25zL1NDb25zY3JpcHQgdG8gcnVuIGFsbAotICAjIHRlc3RzIGRlZmluZWQg
dGhlcmUgd2hlbiBubyB0ZXN0cyBhcmUgc3BlY2lmaWVkLgotICAjIFRPRE8odmxhZGxAZ29vZ2xl
LmNvbSk6IFVwZGF0ZSB0aGUgZG9jc3RyaW5nIGFmdGVyIHRoZSBjb2RlIGlzIGNoYW5nZWQgdG8K
LSAgIyB0cnkgdG8gdGVzdCBhbGwgYnVpbGRzIGRlZmluZWQgaW4gc2NvbnMvU0NvbnNjcmlwdC4K
LSAgZGVmIEdldFRlc3RzVG9SdW4oc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgYXJncywKLSAg
ICAgICAgICAgICAgICAgICAgbmFtZWRfY29uZmlndXJhdGlvbnMsCi0gICAgICAgICAgICAgICAg
ICAgIGJ1aWx0X2NvbmZpZ3VyYXRpb25zLAotICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVf
Y29uZmlndXJhdGlvbnM9Q09ORklHUywKLSAgICAgICAgICAgICAgICAgICAgcHl0aG9uX3Rlc3Rz
X3RvX3NraXA9Tm9uZSk6Ci0gICAgIiIiRGV0ZXJtaW5lcyB3aGF0IHRlc3RzIHNob3VsZCBiZSBy
dW4uCi0KLSAgICBBcmdzOgotICAgICAgYXJnczogVGhlIGxpc3Qgb2Ygbm9uLW9wdGlvbiBhcmd1
bWVudHMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgotICAgICAgbmFtZWRfY29uZmlndXJhdGlvbnM6
IFRoZSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIHNwZWNpZmllZCB2aWEgLWMgb3IgLWEuCi0gICAg
ICBidWlsdF9jb25maWd1cmF0aW9uczogVHJ1ZSBpZiAtYiBoYXMgYmVlbiBzcGVjaWZpZWQuCi0g
ICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM6IGEgbGlzdCBvZiBjb25maWd1cmF0aW9ucyBh
dmFpbGFibGUgb24gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCBwbGF0
Zm9ybSwgaW5qZWN0YWJsZSBmb3IgdGVzdGluZy4KLSAgICAgIHB5dGhvbl90ZXN0c190b19za2lw
OiBhIGNvbGxlY3Rpb24gb2YgKGNvbmZpZ3VyYXRpb24sIHB5dGhvbiB0ZXN0IG5hbWUpcwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgbmVlZCB0byBiZSBza2lwcGVkLgotCi0gICAg
UmV0dXJuczoKLSAgICAgIEEgdHVwbGUgd2l0aCAyIGVsZW1lbnRzOiB0aGUgbGlzdCBvZiBQeXRo
b24gdGVzdHMgdG8gcnVuIGFuZCB0aGUgbGlzdCBvZgotICAgICAgYmluYXJ5IHRlc3RzIHRvIHJ1
bi4KLSAgICAiIiIKLQotICAgIGlmIG5hbWVkX2NvbmZpZ3VyYXRpb25zID09ICdhbGwnOgotICAg
ICAgbmFtZWRfY29uZmlndXJhdGlvbnMgPSAnLCcuam9pbihhdmFpbGFibGVfY29uZmlndXJhdGlv
bnMpCi0KLSAgICBub3JtYWxpemVkX2FyZ3MgPSBbc2VsZi5vcy5wYXRoLm5vcm1wYXRoKGFyZykg
Zm9yIGFyZyBpbiBhcmdzXQotCi0gICAgIyBBIGZpbmFsIGxpc3Qgb2YgYnVpbGQgZGlyZWN0b3Jp
ZXMgd2hpY2ggd2lsbCBiZSBzZWFyY2hlZCBmb3IgdGhlIHRlc3QKLSAgICAjIGJpbmFyaWVzLiBG
aXJzdCwgYWRkIGRpcmVjdG9yaWVzIHNwZWNpZmllZCBkaXJlY3RseSBvbiB0aGUgY29tbWFuZAot
ICAgICMgbGluZS4KLSAgICBidWlsZF9kaXJzID0gZmlsdGVyKHNlbGYub3MucGF0aC5pc2Rpciwg
bm9ybWFsaXplZF9hcmdzKQotCi0gICAgIyBBZGRzIGJ1aWxkIGRpcmVjdG9yaWVzIHNwZWNpZmll
ZCB2aWEgdGhlaXIgYnVpbGQgY29uZmlndXJhdGlvbnMgdXNpbmcKLSAgICAjIHRoZSAtYyBvciAt
YSBvcHRpb25zLgotICAgIGlmIG5hbWVkX2NvbmZpZ3VyYXRpb25zOgotICAgICAgYnVpbGRfZGly
cyArPSBbc2VsZi5fR2V0QnVpbGREaXJGb3JDb25maWcoY29uZmlnKQotICAgICAgICAgICAgICAg
ICAgICAgZm9yIGNvbmZpZyBpbiBuYW1lZF9jb25maWd1cmF0aW9ucy5zcGxpdCgnLCcpXQotCi0g
ICAgIyBBZGRzIEtOT1dOIEJVSUxEIERJUkVDVE9SSUVTIGlmIC1iIGlzIHNwZWNpZmllZC4KLSAg
ICBpZiBidWlsdF9jb25maWd1cmF0aW9uczoKLSAgICAgIGJ1aWxkX2RpcnMgKz0gW3NlbGYuX0dl
dEJ1aWxkRGlyRm9yQ29uZmlnKGNvbmZpZykKLSAgICAgICAgICAgICAgICAgICAgIGZvciBjb25m
aWcgaW4gYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zCi0gICAgICAgICAgICAgICAgICAgICBpZiBz
ZWxmLm9zLnBhdGguaXNkaXIoc2VsZi5fR2V0QnVpbGREaXJGb3JDb25maWcoY29uZmlnKSldCi0K
LSAgICAjIElmIG5vIGRpcmVjdG9yaWVzIHdlcmUgc3BlY2lmaWVkIGVpdGhlciB2aWEgLWEsIC1i
LCAtYywgb3IgZGlyZWN0bHksIHVzZQotICAgICMgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbi4K
LSAgICBlbGlmIG5vdCBidWlsZF9kaXJzOgotICAgICAgYnVpbGRfZGlycyA9IFtzZWxmLl9HZXRC
dWlsZERpckZvckNvbmZpZyhhdmFpbGFibGVfY29uZmlndXJhdGlvbnNbMF0pXQotCi0gICAgIyBN
YWtlcyBzdXJlIHRoZXJlIGFyZSBubyBkdXBsaWNhdGlvbnMuCi0gICAgYnVpbGRfZGlycyA9IHNl
dHMuU2V0KGJ1aWxkX2RpcnMpCi0KLSAgICBlcnJvcnNfZm91bmQgPSBGYWxzZQotICAgIGxpc3Rl
ZF9weXRob25fdGVzdHMgPSBbXSAgIyBBbGwgUHl0aG9uIHRlc3RzIGxpc3RlZCBvbiB0aGUgY29t
bWFuZCBsaW5lLgotICAgIGxpc3RlZF9iaW5hcnlfdGVzdHMgPSBbXSAgIyBBbGwgYmluYXJ5IHRl
c3RzIGxpc3RlZCBvbiB0aGUgY29tbWFuZCBsaW5lLgotCi0gICAgdGVzdF9kaXIgPSBzZWxmLm9z
LnBhdGgubm9ybXBhdGgoc2VsZi5vcy5wYXRoLmpvaW4oc2VsZi5zY3JpcHRfZGlyLCAndGVzdCcp
KQotCi0gICAgIyBTaWZ0cyB0aHJvdWdoIG5vbi1kaXJlY3RvcnkgYXJndW1lbnRzIGZpc2hpbmcg
Zm9yIGFueSBQeXRob24gb3IgYmluYXJ5Ci0gICAgIyB0ZXN0cyBhbmQgZGV0ZWN0aW5nIGVycm9y
cy4KLSAgICBmb3IgYXJndW1lbnQgaW4gc2V0cy5TZXQobm9ybWFsaXplZF9hcmdzKSAtIGJ1aWxk
X2RpcnM6Ci0gICAgICBpZiByZS5zZWFyY2goUFlUSE9OX1RFU1RfUkVHRVgsIGFyZ3VtZW50KToK
LSAgICAgICAgcHl0aG9uX3BhdGggPSBzZWxmLm9zLnBhdGguam9pbih0ZXN0X2RpciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9zLnBhdGguYmFzZW5hbWUo
YXJndW1lbnQpKQotICAgICAgICBpZiBzZWxmLm9zLnBhdGguaXNmaWxlKHB5dGhvbl9wYXRoKToK
LSAgICAgICAgICBsaXN0ZWRfcHl0aG9uX3Rlc3RzLmFwcGVuZChweXRob25fcGF0aCkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdVbmFibGUgdG8gZmluZCBQeXRo
b24gdGVzdCAlcycgJSBhcmd1bWVudCkKLSAgICAgICAgICBlcnJvcnNfZm91bmQgPSBUcnVlCi0g
ICAgICBlbGlmIHJlLnNlYXJjaChCSU5BUllfVEVTVF9SRUdFWCwgYXJndW1lbnQpOgotICAgICAg
ICAjIFRoaXMgc2NyaXB0IGFsc28gYWNjZXB0cyBiaW5hcnkgdGVzdCBuYW1lcyBwcmVmaXhlZCB3
aXRoIHRlc3QvIGZvcgotICAgICAgICAjIHRoZSBjb252ZW5pZW5jZSBvZiB0eXBpbmcgdGhlbSAo
Y2FuIHVzZSBwYXRoIGNvbXBsZXRpb25zIGluIHRoZQotICAgICAgICAjIHNoZWxsKS4gIFN0cmlw
cyB0ZXN0LyBwcmVmaXggZnJvbSB0aGUgYmluYXJ5IHRlc3QgbmFtZXMuCi0gICAgICAgIGxpc3Rl
ZF9iaW5hcnlfdGVzdHMuYXBwZW5kKHNlbGYub3MucGF0aC5iYXNlbmFtZShhcmd1bWVudCkpCi0g
ICAgICBlbHNlOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCclcyBpcyBuZWl0aGVyIHRlc3Qg
bm9yIGJ1aWxkIGRpcmVjdG9yeScgJSBhcmd1bWVudCkKLSAgICAgICAgZXJyb3JzX2ZvdW5kID0g
VHJ1ZQotCi0gICAgaWYgZXJyb3JzX2ZvdW5kOgotICAgICAgcmV0dXJuIE5vbmUKLQotICAgIHVz
ZXJfaGFzX2xpc3RlZF90ZXN0cyA9IGxpc3RlZF9weXRob25fdGVzdHMgb3IgbGlzdGVkX2JpbmFy
eV90ZXN0cwotCi0gICAgaWYgdXNlcl9oYXNfbGlzdGVkX3Rlc3RzOgotICAgICAgc2VsZWN0ZWRf
cHl0aG9uX3Rlc3RzID0gbGlzdGVkX3B5dGhvbl90ZXN0cwotICAgIGVsc2U6Ci0gICAgICBzZWxl
Y3RlZF9weXRob25fdGVzdHMgPSBzZWxmLl9GaW5kRmlsZXNCeVJlZ2V4KHRlc3RfZGlyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWVRIT05f
VEVTVF9SRUdFWCkKLQotICAgICMgVE9ETyh2bGFkbEBnb29nbGUuY29tKTogc2tpcCB1bmJ1aWx0
IFB5dGhvbiB0ZXN0cyB3aGVuIC1iIGlzIHNwZWNpZmllZC4KLSAgICBweXRob25fdGVzdF9wYWly
cyA9IFtdCi0gICAgZm9yIGRpcmVjdG9yeSBpbiBidWlsZF9kaXJzOgotICAgICAgZm9yIHRlc3Qg
aW4gc2VsZWN0ZWRfcHl0aG9uX3Rlc3RzOgotICAgICAgICBjb25maWcgPSBfR2V0Q29uZmlnRnJv
bUJ1aWxkRGlyKGRpcmVjdG9yeSkKLSAgICAgICAgZmlsZV9uYW1lID0gb3MucGF0aC5iYXNlbmFt
ZSh0ZXN0KQotICAgICAgICBpZiBweXRob25fdGVzdHNfdG9fc2tpcCBhbmQgKGNvbmZpZywgZmls
ZV9uYW1lKSBpbiBweXRob25fdGVzdHNfdG9fc2tpcDoKLSAgICAgICAgICBwcmludCAoJ05PVEU6
ICVzIGlzIHNraXBwZWQgZm9yIGNvbmZpZ3VyYXRpb24gJXMsIGFzIGl0IGRvZXMgbm90ICcKLSAg
ICAgICAgICAgICAgICAgJ3dvcmsgdGhlcmUuJyAlIChmaWxlX25hbWUsIGNvbmZpZykpCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgcHl0aG9uX3Rlc3RfcGFpcnMuYXBwZW5kKChkaXJlY3Rvcnks
IHRlc3QpKQotCi0gICAgYmluYXJ5X3Rlc3RfcGFpcnMgPSBbXQotICAgIGZvciBkaXJlY3Rvcnkg
aW4gYnVpbGRfZGlyczoKLSAgICAgIGlmIHVzZXJfaGFzX2xpc3RlZF90ZXN0czoKLSAgICAgICAg
YmluYXJ5X3Rlc3RfcGFpcnMuZXh0ZW5kKAotICAgICAgICAgICAgWyhkaXJlY3RvcnksIHNlbGYu
b3MucGF0aC5qb2luKGRpcmVjdG9yeSwgdGVzdCkpCi0gICAgICAgICAgICAgZm9yIHRlc3QgaW4g
bGlzdGVkX2JpbmFyeV90ZXN0c10pCi0gICAgICBlbHNlOgotICAgICAgICB0ZXN0cyA9IHNlbGYu
X0ZpbmRGaWxlc0J5UmVnZXgoZGlyZWN0b3J5LCBCSU5BUllfVEVTVF9TRUFSQ0hfUkVHRVgpCi0g
ICAgICAgIGJpbmFyeV90ZXN0X3BhaXJzLmV4dGVuZChbKGRpcmVjdG9yeSwgdGVzdCkgZm9yIHRl
c3QgaW4gdGVzdHNdKQotCi0gICAgcmV0dXJuIChweXRob25fdGVzdF9wYWlycywgYmluYXJ5X3Rl
c3RfcGFpcnMpCi0KLSAgZGVmIFJ1blRlc3RzKHNlbGYsIHB5dGhvbl90ZXN0cywgYmluYXJ5X3Rl
c3RzKToKLSAgICAiIiJSdW5zIFB5dGhvbiBhbmQgYmluYXJ5IHRlc3RzIGFuZCByZXBvcnRzIHJl
c3VsdHMgdG8gdGhlIHN0YW5kYXJkIG91dHB1dC4KLQotICAgIEFyZ3M6Ci0gICAgICBweXRob25f
dGVzdHM6IExpc3Qgb2YgUHl0aG9uIHRlc3RzIHRvIHJ1biBpbiB0aGUgZm9ybSBvZiB0dXBsZXMK
LSAgICAgICAgICAgICAgICAgICAgKGJ1aWxkIGRpcmVjdG9yeSwgUHl0aG9uIHRlc3Qgc2NyaXB0
KS4KLSAgICAgIGJpbmFyeV90ZXN0czogTGlzdCBvZiBiaW5hcnkgdGVzdHMgdG8gcnVuIGluIHRo
ZSBmb3JtIG9mIHR1cGxlcwotICAgICAgICAgICAgICAgICAgICAoYnVpbGQgZGlyZWN0b3J5LCBi
aW5hcnkgZmlsZSkuCi0KLSAgICBSZXR1cm5zOgotICAgICAgVGhlIGV4aXQgY29kZSB0aGUgcHJv
Z3JhbSBzaG91bGQgcGFzcyBpbnRvIHN5cy5leGl0KCkuCi0gICAgIiIiCi0KLSAgICBpZiBweXRo
b25fdGVzdHMgb3IgYmluYXJ5X3Rlc3RzOgotICAgICAgcmVzdWx0cyA9IFtdCi0gICAgICBmb3Ig
ZGlyZWN0b3J5LCB0ZXN0IGluIHB5dGhvbl90ZXN0czoKLSAgICAgICAgcmVzdWx0cy5hcHBlbmQo
KGRpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9SdW5QeXRob25UZXN0KHRlc3QsIGRpcmVjdG9yeSkgPT0gMCkpCi0g
ICAgICBmb3IgZGlyZWN0b3J5LCB0ZXN0IGluIGJpbmFyeV90ZXN0czoKLSAgICAgICAgcmVzdWx0
cy5hcHBlbmQoKGRpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub3MucGF0
aC5iYXNlbmFtZSh0ZXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX1J1bkJpbmFy
eVRlc3QodGVzdCkgPT0gMCkpCi0KLSAgICAgIGZhaWxlZCA9IFsoZGlyZWN0b3J5LCB0ZXN0KQot
ICAgICAgICAgICAgICAgIGZvciAoZGlyZWN0b3J5LCB0ZXN0LCBzdWNjZXNzKSBpbiByZXN1bHRz
Ci0gICAgICAgICAgICAgICAgaWYgbm90IHN1Y2Nlc3NdCi0gICAgICBwcmludAotICAgICAgcHJp
bnQgJyVkIHRlc3RzIHJ1bi4nICUgbGVuKHJlc3VsdHMpCi0gICAgICBpZiBmYWlsZWQ6Ci0gICAg
ICAgIHByaW50ICdUaGUgZm9sbG93aW5nICVkIHRlc3RzIGZhaWxlZDonICUgbGVuKGZhaWxlZCkK
LSAgICAgICAgZm9yIChkaXJlY3RvcnksIHRlc3QpIGluIGZhaWxlZDoKLSAgICAgICAgICBwcmlu
dCAnJXMgaW4gJXMnICUgKHRlc3QsIGRpcmVjdG9yeSkKLSAgICAgICAgcmV0dXJuIDEKLSAgICAg
IGVsc2U6Ci0gICAgICAgIHByaW50ICdBbGwgdGVzdHMgcGFzc2VkIScKLSAgICBlbHNlOiAgIyBO
byB0ZXN0cyBkZWZpbmVkCi0gICAgICBwcmludCAnTm90aGluZyB0byB0ZXN0IC0gbm8gdGVzdHMg
c3BlY2lmaWVkIScKLQotICAgIHJldHVybiAwCi0KLQotZGVmIFBhcnNlQXJncyhwcm9qZWN0X25h
bWUsIGFyZ3Y9Tm9uZSwgaGVscF9jYWxsYmFjaz1Ob25lKToKLSAgIiIiUGFyc2VzIHRoZSBvcHRp
b25zIHJ1bl90ZXN0cy5weSB1c2VzLiIiIgotCi0gICMgU3VwcHJlc3NlcyBsaW50IHdhcm5pbmcg
b24gdW51c2VkIGFyZ3VtZW50cy4gIFRoZXNlIGFyZ3VtZW50cyBhcmUKLSAgIyByZXF1aXJlZCBi
eSBvcHRwYXJzZSwgZXZlbiB0aG91Z2ggdGhleSBhcmUgdW51c2VkLgotICAjIHB5bGludDogZGlz
YWJsZS1tc2c9VzA2MTMKLSAgZGVmIFByaW50SGVscChvcHRpb24sIG9wdCwgdmFsdWUsIHBhcnNl
cik6Ci0gICAgcHJpbnQgSEVMUF9NU0cgJSB7J3Byb2onOiBwcm9qZWN0X25hbWV9Ci0gICAgc3lz
LmV4aXQoMSkKLQotICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQotICBwYXJzZXIu
YWRkX29wdGlvbignLWMnLAotICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlJywKLSAg
ICAgICAgICAgICAgICAgICAgZGVzdD0nY29uZmlndXJhdGlvbnMnLAotICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PU5vbmUpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctYScsCi0gICAgICAgICAg
ICAgICAgICAgIGFjdGlvbj0nc3RvcmVfY29uc3QnLAotICAgICAgICAgICAgICAgICAgICBkZXN0
PSdjb25maWd1cmF0aW9ucycsCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAg
ICAgICAgICAgICAgICAgICAgY29uc3Q9J2FsbCcpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctYics
Ci0gICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfY29uc3QnLAotICAgICAgICAgICAg
ICAgICAgICBkZXN0PSdidWlsdF9jb25maWd1cmF0aW9ucycsCi0gICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0PVRydWUpCi0gICMgUmVw
bGFjZXMgdGhlIGJ1aWx0LWluIGhlbHAgd2l0aCBvdXJzLgotICBwYXJzZXIucmVtb3ZlX29wdGlv
bignLWgnKQotICBwYXJzZXIuYWRkX29wdGlvbignLWgnLCAnLS1oZWxwJywKLSAgICAgICAgICAg
ICAgICAgICAgYWN0aW9uPSdjYWxsYmFjaycsCi0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr
PWhlbHBfY2FsbGJhY2sgb3IgUHJpbnRIZWxwKQotICByZXR1cm4gcGFyc2VyLnBhcnNlX2FyZ3Mo
YXJndikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3Rz
X3V0aWxfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3RzX3V0
aWxfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOWM1NTcyNmZkNTBiMmEw
YzI1MDY4MTQxZDdlNjY5NDNmMGI2ZGU3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0c191
dGlsX3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2NzYgKzAsMCBAQAotIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0
cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJUZXN0cyBmb3IgcnVuX3Rlc3RzX3V0aWwu
cHkgdGVzdCBydW5uZXIgc2NyaXB0LiIiIgotCi1fX2F1dGhvcl9fID0gJ3ZsYWRsQGdvb2dsZS5j
b20gKFZsYWQgTG9zZXYpJwotCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNldHMKLWlt
cG9ydCB1bml0dGVzdAotCi1pbXBvcnQgcnVuX3Rlc3RzX3V0aWwKLQotCi1HVEVTVF9EQkdfRElS
ID0gJ3Njb25zL2J1aWxkL2RiZy9ndGVzdC9zY29ucycKLUdURVNUX09QVF9ESVIgPSAnc2NvbnMv
YnVpbGQvb3B0L2d0ZXN0L3Njb25zJwotR1RFU1RfT1RIRVJfRElSID0gJ3Njb25zL2J1aWxkL290
aGVyL2d0ZXN0L3Njb25zJwotCi0KLWRlZiBBZGRFeGVFeHRlbnNpb24ocGF0aCk6Ci0gICIiIkFw
cGVuZHMgLmV4ZSB0byB0aGUgcGF0aCBvbiBXaW5kb3dzIG9yIEN5Z3dpbi4iIiIKLQotICBpZiBy
dW5fdGVzdHNfdXRpbC5JU19XSU5ET1dTIG9yIHJ1bl90ZXN0c191dGlsLklTX0NZR1dJTjoKLSAg
ICByZXR1cm4gcGF0aCArICcuZXhlJwotICBlbHNlOgotICAgIHJldHVybiBwYXRoCi0KLQotY2xh
c3MgRmFrZVBhdGgob2JqZWN0KToKLSAgIiIiQSBmYWtlIG9zLnBhdGggbW9kdWxlIGZvciB0ZXN0
aW5nLiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBjdXJyZW50X2Rpcj1vcy5nZXRjd2QoKSwg
a25vd25fcGF0aHM9Tm9uZSk6Ci0gICAgc2VsZi5jdXJyZW50X2RpciA9IGN1cnJlbnRfZGlyCi0g
ICAgc2VsZi50cmVlID0ge30KLSAgICBzZWxmLnBhdGhfc2VwYXJhdG9yID0gb3Muc2VwCi0KLSAg
ICAjIGtub3duX3BhdGhzIGNvbnRhaW5zIGVpdGhlciBhYnNvbHV0ZSBvciByZWxhdGl2ZSBwYXRo
cy4gUmVsYXRpdmUgcGF0aHMKLSAgICAjIGFyZSBhYnNvbHV0aXplZCB3aXRoIHNlbGYuY3VycmVu
dF9kaXIuCi0gICAgaWYga25vd25fcGF0aHM6Ci0gICAgICBzZWxmLl9BZGRQYXRocyhrbm93bl9w
YXRocykKLQotICBkZWYgX0FkZFBhdGgoc2VsZiwgcGF0aCk6Ci0gICAgZW5kc193aXRoX3NsYXNo
ID0gcGF0aC5lbmRzd2l0aCgnLycpCi0gICAgcGF0aCA9IHNlbGYuYWJzcGF0aChwYXRoKQotICAg
IGlmIGVuZHNfd2l0aF9zbGFzaDoKLSAgICAgIHBhdGggKz0gc2VsZi5wYXRoX3NlcGFyYXRvcgot
ICAgIG5hbWVfbGlzdCA9IHBhdGguc3BsaXQoc2VsZi5wYXRoX3NlcGFyYXRvcikKLSAgICB0cmVl
ID0gc2VsZi50cmVlCi0gICAgZm9yIG5hbWUgaW4gbmFtZV9saXN0WzotMV06Ci0gICAgICBpZiBu
b3QgbmFtZToKLSAgICAgICAgY29udGludWUKLSAgICAgIGlmIG5hbWUgaW4gdHJlZToKLSAgICAg
ICAgdHJlZSA9IHRyZWVbbmFtZV0KLSAgICAgIGVsc2U6Ci0gICAgICAgIHRyZWVbbmFtZV0gPSB7
fQotICAgICAgICB0cmVlID0gdHJlZVtuYW1lXQotCi0gICAgbmFtZSA9IG5hbWVfbGlzdFstMV0K
LSAgICBpZiBuYW1lOgotICAgICAgaWYgbmFtZSBpbiB0cmVlOgotICAgICAgICBhc3NlcnQgdHJl
ZVtuYW1lXSA9PSAxCi0gICAgICBlbHNlOgotICAgICAgICB0cmVlW25hbWVdID0gMQotCi0gIGRl
ZiBfQWRkUGF0aHMoc2VsZiwgcGF0aHMpOgotICAgIGZvciBwYXRoIGluIHBhdGhzOgotICAgICAg
c2VsZi5fQWRkUGF0aChwYXRoKQotCi0gIGRlZiBQYXRoRWxlbWVudChzZWxmLCBwYXRoKToKLSAg
ICAiIiJSZXR1cm5zIGFuIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGRpcmVjdG9yeSB0cmVl
IGVudHJ5IGZvciBwYXRoLiIiIgotICAgIHRyZWUgPSBzZWxmLnRyZWUKLSAgICBuYW1lX2xpc3Qg
PSBzZWxmLmFic3BhdGgocGF0aCkuc3BsaXQoc2VsZi5wYXRoX3NlcGFyYXRvcikKLSAgICBmb3Ig
bmFtZSBpbiBuYW1lX2xpc3Q6Ci0gICAgICBpZiBub3QgbmFtZToKLSAgICAgICAgY29udGludWUK
LSAgICAgIHRyZWUgPSB0cmVlLmdldChuYW1lLCBOb25lKQotICAgICAgaWYgdHJlZSBpcyBOb25l
OgotICAgICAgICBicmVhawotCi0gICAgcmV0dXJuIHRyZWUKLQotICAjIFNpbGVuY2VzIHB5bGlu
dCB3YXJuaW5nIGFib3V0IHVzaW5nIHN0YW5kYXJkIG5hbWVzLgotICAjIHB5bGludDogZGlzYWJs
ZS1tc2c9QzY0MDkKLSAgZGVmIG5vcm1wYXRoKHNlbGYsIHBhdGgpOgotICAgIHJldHVybiBvcy5w
YXRoLm5vcm1wYXRoKHBhdGgpCi0KLSAgZGVmIGFic3BhdGgoc2VsZiwgcGF0aCk6Ci0gICAgcmV0
dXJuIHNlbGYubm9ybXBhdGgob3MucGF0aC5qb2luKHNlbGYuY3VycmVudF9kaXIsIHBhdGgpKQot
Ci0gIGRlZiBpc2ZpbGUoc2VsZiwgcGF0aCk6Ci0gICAgcmV0dXJuIHNlbGYuUGF0aEVsZW1lbnQo
c2VsZi5hYnNwYXRoKHBhdGgpKSA9PSAxCi0KLSAgZGVmIGlzZGlyKHNlbGYsIHBhdGgpOgotICAg
IHJldHVybiB0eXBlKHNlbGYuUGF0aEVsZW1lbnQoc2VsZi5hYnNwYXRoKHBhdGgpKSkgPT0gdHlw
ZShkaWN0KCkpCi0KLSAgZGVmIGJhc2VuYW1lKHNlbGYsIHBhdGgpOgotICAgIHJldHVybiBvcy5w
YXRoLmJhc2VuYW1lKHBhdGgpCi0KLSAgZGVmIGRpcm5hbWUoc2VsZiwgcGF0aCk6Ci0gICAgcmV0
dXJuIG9zLnBhdGguZGlybmFtZShwYXRoKQotCi0gIGRlZiBqb2luKHNlbGYsICprYXJncyk6Ci0g
ICAgcmV0dXJuIG9zLnBhdGguam9pbigqa2FyZ3MpCi0KLQotY2xhc3MgRmFrZU9zKG9iamVjdCk6
Ci0gICIiIkEgZmFrZSBvcyBtb2R1bGUgZm9yIHRlc3RpbmcuIiIiCi0gIFBfV0FJVCA9IG9zLlBf
V0FJVAotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBmYWtlX3BhdGhfbW9kdWxlKToKLSAgICBzZWxm
LnBhdGggPSBmYWtlX3BhdGhfbW9kdWxlCi0KLSAgICAjIFNvbWUgbWV0aG9kcy9hdHRyaWJ1dGVz
IGFyZSBkZWxlZ2F0ZWQgdG8gdGhlIHJlYWwgb3MgbW9kdWxlLgotICAgIHNlbGYuZW52aXJvbiA9
IG9zLmVudmlyb24KLQotICAjIHB5bGludDogZGlzYWJsZS1tc2c9QzY0MDkKLSAgZGVmIGxpc3Rk
aXIoc2VsZiwgcGF0aCk6Ci0gICAgYXNzZXJ0IHNlbGYucGF0aC5pc2RpcihwYXRoKQotICAgIHJl
dHVybiBzZWxmLnBhdGguUGF0aEVsZW1lbnQocGF0aCkuaXRlcmtleXMoKQotCi0gIGRlZiBzcGF3
bnYoc2VsZiwgd2FpdCwgZXhlY3V0YWJsZSwgKmthcmdzKToKLSAgICBhc3NlcnQgd2FpdCA9PSBG
YWtlT3MuUF9XQUlUCi0gICAgcmV0dXJuIHNlbGYuc3Bhd25faW1wbChleGVjdXRhYmxlLCBrYXJn
cykKLQotCi1jbGFzcyBHZXRUZXN0c1RvUnVuVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICIi
IkV4ZXJjaXNlcyBUZXN0UnVubmVyLkdldFRlc3RzVG9SdW4uIiIiCi0KLSAgZGVmIE5vcm1hbGl6
ZUdldFRlc3RzVG9SdW5SZXN1bHRzKHNlbGYsIHJlc3VsdHMpOgotICAgICIiIk5vcm1hbGl6ZXMg
cGF0aCBkYXRhIHJldHVybmVkIGZyb20gR2V0VGVzdHNUb1J1biBmb3IgY29tcGFyaXNvbi4iIiIK
LQotICAgIGRlZiBOb3JtYWxpemVQeXRob25UZXN0UGFpcihwYWlyKToKLSAgICAgICIiIk5vcm1h
bGl6ZXMgcGF0aCBkYXRhIGluIHRoZSAoZGlyZWN0b3J5LCBweXRob25fc2NyaXB0KSBwYWlyLiIi
IgotCi0gICAgICByZXR1cm4gKG9zLnBhdGgubm9ybXBhdGgocGFpclswXSksIG9zLnBhdGgubm9y
bXBhdGgocGFpclsxXSkpCi0KLSAgICBkZWYgTm9ybWFsaXplQmluYXJ5VGVzdFBhaXIocGFpcik6
Ci0gICAgICAiIiJOb3JtYWxpemVzIHBhdGggZGF0YSBpbiB0aGUgKGRpcmVjdG9yeSwgYmluYXJ5
X2V4ZWN1dGFibGUpIHBhaXIuIiIiCi0KLSAgICAgIGRpcmVjdG9yeSwgZXhlY3V0YWJsZSA9IG1h
cChvcy5wYXRoLm5vcm1wYXRoLCBwYWlyKQotCi0gICAgICAjIE9uIFdpbmRvd3MgYW5kIEN5Z3dp
biwgdGhlIHRlc3QgZmlsZSBuYW1lcyBoYXZlIHRoZSAuZXhlIGV4dGVuc2lvbiwgYnV0Ci0gICAg
ICAjIHRoZXkgY2FuIGJlIGludm9rZWQgZWl0aGVyIGJ5IG5hbWUgb3IgYnkgbmFtZStleHRlbnNp
b24uIE91ciB0ZXN0IG11c3QKLSAgICAgICMgYWNjb21tb2RhdGUgYm90aCBzaXR1YXRpb25zLgot
ICAgICAgaWYgcnVuX3Rlc3RzX3V0aWwuSVNfV0lORE9XUyBvciBydW5fdGVzdHNfdXRpbC5JU19D
WUdXSU46Ci0gICAgICAgIGV4ZWN1dGFibGUgPSByZS5zdWIocidcLmV4ZSQnLCAnJywgZXhlY3V0
YWJsZSkKLSAgICAgIHJldHVybiAoZGlyZWN0b3J5LCBleGVjdXRhYmxlKQotCi0gICAgcHl0aG9u
X3Rlc3RzID0gc2V0cy5TZXQobWFwKE5vcm1hbGl6ZVB5dGhvblRlc3RQYWlyLCByZXN1bHRzWzBd
KSkKLSAgICBiaW5hcnlfdGVzdHMgPSBzZXRzLlNldChtYXAoTm9ybWFsaXplQmluYXJ5VGVzdFBh
aXIsIHJlc3VsdHNbMV0pKQotICAgIHJldHVybiAocHl0aG9uX3Rlc3RzLCBiaW5hcnlfdGVzdHMp
Ci0KLSAgZGVmIEFzc2VydFJlc3VsdHNFcXVhbChzZWxmLCByZXN1bHRzLCBleHBlY3RlZCk6Ci0g
ICAgIiIiQXNzZXJ0cyByZXN1bHRzIHJldHVybmVkIGJ5IEdldFRlc3RzVG9SdW4gZXF1YWwgdG8g
ZXhwZWN0ZWQgcmVzdWx0cy4iIiIKLQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5Ob3JtYWxp
emVHZXRUZXN0c1RvUnVuUmVzdWx0cyhyZXN1bHRzKSwKLSAgICAgICAgICAgICAgICAgICAgIHNl
bGYuTm9ybWFsaXplR2V0VGVzdHNUb1J1blJlc3VsdHMoZXhwZWN0ZWQpLAotICAgICAgICAgICAg
ICAgICAgICAgJ0luY29ycmVjdCBzZXQgb2YgdGVzdHMgcmV0dXJuZWQ6XG4lc1xuZXhwZWN0ZWQ6
XG4lcycgJQotICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdHMsIGV4cGVjdGVkKSkKLQotICBk
ZWYgc2V0VXAoc2VsZik6Ci0gICAgc2VsZi5mYWtlX29zID0gRmFrZU9zKEZha2VQYXRoKAotICAg
ICAgICBjdXJyZW50X2Rpcj1vcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKHJ1bl90ZXN0
c191dGlsLl9fZmlsZV9fKSksCi0gICAgICAgIGtub3duX3BhdGhzPVtBZGRFeGVFeHRlbnNpb24o
R1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAgICAgICAgICAg
IEFkZEV4ZUV4dGVuc2lvbihHVEVTVF9PUFRfRElSICsgJy9ndGVzdF91bml0dGVzdCcpLAotICAg
ICAgICAgICAgICAgICAgICAgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weSddKSkKLSAgICBzZWxm
LmZha2VfY29uZmlndXJhdGlvbnMgPSBbJ2RiZycsICdvcHQnXQotICAgIHNlbGYudGVzdF9ydW5u
ZXIgPSBydW5fdGVzdHNfdXRpbC5UZXN0UnVubmVyKHNjcmlwdF9kaXI9Jy4nLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluamVjdGVkX29zPXNlbGYu
ZmFrZV9vcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmplY3RlZF9zdWJwcm9jZXNzPU5vbmUpCi0KLSAgZGVmIHRlc3RCaW5hcnlUZXN0c09ubHko
c2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3RzVG9SdW4gd2l0aCBwYXJhbWV0ZXJzIGRl
c2lnbmF0aW5nIGJpbmFyeSB0ZXN0cyBvbmx5LiIiIgotCi0gICAgIyBBIGRlZmF1bHQgYnVpbGQu
Ci0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIu
R2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAg
ICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmln
dXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFtdLAotICAgICAg
ICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkp
Ci0KLSAgICAjIEFuIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGRpcmVjdG9yeS4KLSAgICBzZWxmLkFz
c2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVu
KAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIsICdndGVzdF91bml0dGVzdCddLAotICAgICAg
ICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25m
aWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAg
ICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0Jyld
KSkKLQotICAgICMgQSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24uCi0gICAgc2VsZi5Bc3NlcnRS
ZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAg
ICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICdvdGhlcicsCi0gICAg
ICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxm
LmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX09U
SEVSX0RJUiwgR1RFU1RfT1RIRVJfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAj
IEFsbCBhdmFpbGFibGUgY29uZmlndXJhdGlvbnMKLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVh
bCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAg
WydndGVzdF91bml0dGVzdCddLAotICAgICAgICAgICAgJ2FsbCcsCi0gICAgICAgICAgICBGYWxz
ZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmln
dXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNU
X0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIs
IEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgQWxsIGJ1aWx0
IGNvbmZpZ3VyYXRpb25zICh1bmJ1aWx0IGRvbid0IGNhdXNlIGZhaWx1cmUpLgotICAgIHNlbGYu
QXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9S
dW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAnJywKLSAg
ICAgICAgICAgIFRydWUsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2Vs
Zi5mYWtlX2NvbmZpZ3VyYXRpb25zICsgWyd1bmJ1aWx0J10pLAotICAgICAgICAoW10sCi0gICAg
ICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0Jyks
Ci0gICAgICAgICAgKEdURVNUX09QVF9ESVIsIEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0
ZXN0JyldKSkKLQotICAgICMgQSBjb21iaW5hdGlvbiBvZiBhbiBleHBsaWNpdCBkaXJlY3Rvcnkg
YW5kIGEgY29uZmlndXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAg
ICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgW0dURVNUX0RC
R19ESVIsICdndGVzdF91bml0dGVzdCddLAotICAgICAgICAgICAgJ29wdCcsCi0gICAgICAgICAg
ICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2Vf
Y29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIs
IEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgKEdURVNUX09Q
VF9ESVIsIEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgU2Ft
ZSB0ZXN0IHNwZWNpZmllZCBpbiBhbiBleHBsaWNpdCBkaXJlY3RvcnkgYW5kIHZpYSBhIGNvbmZp
Z3VyYXRpb24uCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVz
dF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rl
c3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICdkYmcnLAotICAgICAgICAgICAgRmFsc2UsCi0g
ICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRp
b25zKSwKLSAgICAgICAgKFtdLAotICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdf
RElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIEFsbCBidWlsdCBjb25maWd1cmF0
aW9ucyArIGV4cGxpY2l0IGRpcmVjdG9yeSArIGV4cGxpY2l0IGNvbmZpZ3VyYXRpb24uCi0gICAg
c2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVz
dHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rlc3RfdW5pdHRlc3QnXSwK
LSAgICAgICAgICAgICdvcHQnLAotICAgICAgICAgICAgVHJ1ZSwKLSAgICAgICAgICAgIGF2YWls
YWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAo
W10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3Vu
aXR0ZXN0JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIsIEdURVNUX09QVF9ESVIgKyAnL2d0
ZXN0X3VuaXR0ZXN0JyldKSkKLQotICBkZWYgdGVzdFB5dGhvblRlc3RzT25seShzZWxmKToKLSAg
ICAiIiJFeGVyY2lzZXMgR2V0VGVzdHNUb1J1biB3aXRoIHBhcmFtZXRlcnMgZGVzaWduYXRpbmcg
UHl0aG9uIHRlc3RzIG9ubHkuIiIiCi0KLSAgICAjIEEgZGVmYXVsdCBidWlsZC4KLSAgICBzZWxm
LkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1Rv
UnVuKAotICAgICAgICAgICAgWydndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAn
JywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRp
b25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIs
ICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEFu
IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGRpcmVjdG9yeS4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNF
cXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAg
ICAgW0dURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAg
ICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmln
dXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJH
X0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAg
ICMgQSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24uCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1
YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAg
IFsnZ3Rlc3RfY29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJ290aGVyJywKLSAgICAgICAg
ICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFr
ZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbKEdURVNUX09USEVSX0RJUiwgJ3Rlc3QvZ3Rl
c3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAgICMgQWxsIGF2YWlsYWJs
ZSBjb25maWd1cmF0aW9ucwotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBz
ZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ3Rlc3QvZ3Rlc3Rf
Y29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJ2FsbCcsCi0gICAgICAgICAgICBGYWxzZSwK
LSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJh
dGlvbnMpLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0
LnB5JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Qu
cHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEFsbCBidWlsdCBjb25maWd1cmF0aW9ucyAo
dW5idWlsdCBkb24ndCBjYXVzZSBmYWlsdXJlKS4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVh
bCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAg
WydndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIFRy
dWUsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZp
Z3VyYXRpb25zICsgWyd1bmJ1aWx0J10pLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVz
dC9ndGVzdF9jb2xvcl90ZXN0LnB5JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIsICd0ZXN0
L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEEgY29tYmlu
YXRpb24gb2YgYW4gZXhwbGljaXQgZGlyZWN0b3J5IGFuZCBhIGNvbmZpZ3VyYXRpb24uCi0gICAg
c2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVz
dHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rlc3RfY29sb3JfdGVzdC5w
eSddLAotICAgICAgICAgICAgJ29wdCcsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAg
IGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAg
ICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyksCi0gICAg
ICAgICAgKEdURVNUX09QVF9ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAg
ICAgICBbXSkpCi0KLSAgICAjIFNhbWUgdGVzdCBzcGVjaWZpZWQgaW4gYW4gZXhwbGljaXQgZGly
ZWN0b3J5IGFuZCB2aWEgYSBjb25maWd1cmF0aW9uLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0Vx
dWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAg
ICBbR1RFU1RfREJHX0RJUiwgJ2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICdk
YmcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJh
dGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJ
UiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAgICMg
QWxsIGJ1aWx0IGNvbmZpZ3VyYXRpb25zICsgZXhwbGljaXQgZGlyZWN0b3J5ICsgZXhwbGljaXQg
Y29uZmlndXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2Vs
Zi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIs
ICdndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnb3B0JywKLSAgICAgICAgICAg
IFRydWUsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2Nv
bmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29s
b3JfdGVzdC5weScpLAotICAgICAgICAgIChHVEVTVF9PUFRfRElSLCAndGVzdC9ndGVzdF9jb2xv
cl90ZXN0LnB5JyldLAotICAgICAgICAgW10pKQotCi0gIGRlZiB0ZXN0Q29tYmluYXRpb25PZkJp
bmFyeUFuZFB5dGhvblRlc3RzKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBHZXRUZXN0c1RvUnVu
IHdpdGggbWl4ZWQgYmluYXJ5L1B5dGhvbiB0ZXN0cy4iIiIKLQotICAgICMgVXNlIG9ubHkgZGVm
YXVsdCBjb25maWd1cmF0aW9uIGZvciB0aGlzIHRlc3QuCi0KLSAgICAjIE5laXRoZXIgYmluYXJ5
IG5vciBQeXRob24gdGVzdHMgYXJlIHNwZWNpZmllZCBzbyBmaW5kIGFsbC4KLSAgICBzZWxmLkFz
c2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVu
KAotICAgICAgICAgICAgW10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAot
ICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0
aW9ucyksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Qu
cHknKV0sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0
X3VuaXR0ZXN0JyldKSkKLQotICAgICMgU3BlY2lmeWluZyBib3RoIGJpbmFyeSBhbmQgUHl0aG9u
IHRlc3RzLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3Rf
cnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X3VuaXR0ZXN0JywgJ2d0
ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFsc2Us
Ci0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3Vy
YXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVz
dC5weScpXSwKLSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rl
c3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBTcGVjaWZ5aW5nIGJpbmFyeSB0ZXN0cyBzdXBwcmVz
c2VzIFB5dGhvbiB0ZXN0cy4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAg
c2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF91bml0
dGVzdCddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAg
IGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAg
ICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0
ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgIyBTcGVjaWZ5aW5nIFB5dGhvbiB0ZXN0cyBzdXBwcmVz
c2VzIGJpbmFyeSB0ZXN0cy4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAg
c2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF9jb2xv
cl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAg
ICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyks
Ci0gICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0s
Ci0gICAgICAgICBbXSkpCi0KLSAgZGVmIHRlc3RJZ25vcmVzTm9uVGVzdEZpbGVzKHNlbGYpOgot
ICAgICIiIlZlcmlmaWVzIHRoYXQgR2V0VGVzdHNUb1J1biBpZ25vcmVzIG5vbi10ZXN0IGZpbGVz
IGluIHRoZSBmaWxlc3lzdGVtLiIiIgotCi0gICAgc2VsZi5mYWtlX29zID0gRmFrZU9zKEZha2VQ
YXRoKAotICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1l
KHJ1bl90ZXN0c191dGlsLl9fZmlsZV9fKSksCi0gICAgICAgIGtub3duX3BhdGhzPVtBZGRFeGVF
eHRlbnNpb24oR1RFU1RfREJHX0RJUiArICcvZ3Rlc3Rfbm9udGVzdCcpLAotICAgICAgICAgICAg
ICAgICAgICAgJ3Rlc3QvJ10pKQotICAgIHNlbGYudGVzdF9ydW5uZXIgPSBydW5fdGVzdHNfdXRp
bC5UZXN0UnVubmVyKHNjcmlwdF9kaXI9Jy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluamVjdGVkX29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3RlZF9zdWJwcm9j
ZXNzPU5vbmUpCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVz
dF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgJycs
Ci0gICAgICAgICAgICBUcnVlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25z
PXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbXSwgW10pKQotCi0gIGRlZiB0
ZXN0V29ya3NGcm9tRGlmZmVyZW50RGlyKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBHZXRUZXN0
c1RvUnVuIGZyb20gYSBkaXJlY3RvcnkgZGlmZmVyZW50IGZyb20gcnVuX3Rlc3QucHkncy4iIiIK
LQotICAgICMgSGVyZSB3ZSBzaW11bGF0ZSBhbiB0ZXN0IHNjcmlwdCBpbiBkaXJlY3RvcnkgL2Qv
IGNhbGxlZCBmcm9tIHRoZQotICAgICMgZGlyZWN0b3J5IC9hL2IvYy8uCi0gICAgc2VsZi5mYWtl
X29zID0gRmFrZU9zKEZha2VQYXRoKAotICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRoLmFic3Bh
dGgoJy9hL2IvYycpLAotICAgICAgICBrbm93bl9wYXRocz1bCi0gICAgICAgICAgICAnL2EvYi9j
LycsCi0gICAgICAgICAgICBBZGRFeGVFeHRlbnNpb24oJy9kLycgKyBHVEVTVF9EQkdfRElSICsg
Jy9ndGVzdF91bml0dGVzdCcpLAotICAgICAgICAgICAgQWRkRXhlRXh0ZW5zaW9uKCcvZC8nICsg
R1RFU1RfT1BUX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAgICcvZC90ZXN0
L2d0ZXN0X2NvbG9yX3Rlc3QucHknXSkpCi0gICAgc2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zID0g
WydkYmcnLCAnb3B0J10KLSAgICBzZWxmLnRlc3RfcnVubmVyID0gcnVuX3Rlc3RzX3V0aWwuVGVz
dFJ1bm5lcihzY3JpcHRfZGlyPScvZC8nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluamVjdGVkX29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3RlZF9zdWJwcm9jZXNz
PU5vbmUpCi0gICAgIyBBIGJpbmFyeSB0ZXN0LgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFs
KAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBb
J2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAot
ICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0
aW9ucyksCi0gICAgICAgIChbXSwKLSAgICAgICAgIFsoJy9kLycgKyBHVEVTVF9EQkdfRElSLCAn
L2QvJyArIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgQSBQ
eXRob24gdGVzdC4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50
ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF9jb2xvcl90ZXN0
LnB5J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAg
YXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAg
ICAgIChbKCcvZC8nICsgR1RFU1RfREJHX0RJUiwgJy9kL3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5w
eScpXSwgW10pKQotCi0gIGRlZiB0ZXN0Tm9uVGVzdEJpbmFyeShzZWxmKToKLSAgICAiIiJFeGVy
Y2lzZXMgR2V0VGVzdHNUb1J1biB3aXRoIGEgbm9uLXRlc3QgcGFyYW1ldGVyLiIiIgotCi0gICAg
c2VsZi5hc3NlcnRfKAotICAgICAgICBub3Qgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVu
KAotICAgICAgICAgICAgWydndGVzdF91bml0dGVzdF9ub3RfcmVhbGx5J10sCi0gICAgICAgICAg
ICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3Vy
YXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucykpCi0KLSAgZGVmIHRlc3ROb25FeGlzdGlu
Z1B5dGhvblRlc3Qoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3RzVG9SdW4gd2l0aCBh
IG5vbi1leGlzdGVudCBQeXRob24gdGVzdCBwYXJhbWV0ZXIuIiIiCi0KLSAgICBzZWxmLmFzc2Vy
dF8oCi0gICAgICAgIG5vdCBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAg
ICAgICBbJ25vbmV4aXN0ZW50X3Rlc3QucHknXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAg
ICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtl
X2NvbmZpZ3VyYXRpb25zKSkKLQotICBpZiBydW5fdGVzdHNfdXRpbC5JU19XSU5ET1dTIG9yIHJ1
bl90ZXN0c191dGlsLklTX0NZR1dJTjoKLQotICAgIGRlZiB0ZXN0RG9lc05vdFBpY2tOb25FeGVG
aWxlc09uV2luZG93cyhzZWxmKToKLSAgICAgICIiIlZlcmlmaWVzIHRoYXQgR2V0VGVzdHNUb1J1
biBkb2VzIG5vdCBmaW5kIF90ZXN0IGZpbGVzIG9uIFdpbmRvd3MuIiIiCi0KLSAgICAgIHNlbGYu
ZmFrZV9vcyA9IEZha2VPcyhGYWtlUGF0aCgKLSAgICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRo
LmFic3BhdGgob3MucGF0aC5kaXJuYW1lKHJ1bl90ZXN0c191dGlsLl9fZmlsZV9fKSksCi0gICAg
ICAgICAga25vd25fcGF0aHM9WycvZC8nICsgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdGVzdCcs
ICd0ZXN0LyddKSkKLSAgICAgIHNlbGYudGVzdF9ydW5uZXIgPSBydW5fdGVzdHNfdXRpbC5UZXN0
UnVubmVyKHNjcmlwdF9kaXI9Jy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5qZWN0ZWRfb3M9c2VsZi5mYWtlX29zLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5qZWN0ZWRfc3VicHJvY2Vz
cz1Ob25lKQotICAgICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgICAgc2VsZi50
ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgICBbXSwKLSAgICAgICAgICAg
ICAgJycsCi0gICAgICAgICAgICAgIFRydWUsCi0gICAgICAgICAgICAgIGF2YWlsYWJsZV9jb25m
aWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAgIChbXSwgW10p
KQotCi0KLWNsYXNzIFJ1blRlc3RzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICIiIkV4ZXJj
aXNlcyBUZXN0UnVubmVyLlJ1blRlc3RzLiIiIgotCi0gIGRlZiBTcGF3blN1Y2Nlc3Moc2VsZiwg
dW51c2VkX2V4ZWN1dGFibGUsIHVudXNlZF9hcmd2KToKLSAgICAiIiJGYWtlcyB0ZXN0IHN1Y2Nl
c3MgYnkgcmV0dXJuaW5nIDAgYXMgYW4gZXhpdCBjb2RlLiIiIgotCi0gICAgc2VsZi5udW1fc3Bh
d25fY2FsbHMgKz0gMQotICAgIHJldHVybiAwCi0KLSAgZGVmIFNwYXduRmFpbHVyZShzZWxmLCB1
bnVzZWRfZXhlY3V0YWJsZSwgdW51c2VkX2FyZ3YpOgotICAgICIiIkZha2VzIHRlc3Qgc3VjY2Vz
cyBieSByZXR1cm5pbmcgMSBhcyBhbiBleGl0IGNvZGUuIiIiCi0KLSAgICBzZWxmLm51bV9zcGF3
bl9jYWxscyArPSAxCi0gICAgcmV0dXJuIDEKLQotICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgc2Vs
Zi5mYWtlX29zID0gRmFrZU9zKEZha2VQYXRoKAotICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRo
LmFic3BhdGgob3MucGF0aC5kaXJuYW1lKHJ1bl90ZXN0c191dGlsLl9fZmlsZV9fKSksCi0gICAg
ICAgIGtub3duX3BhdGhzPVsKLSAgICAgICAgICAgIEFkZEV4ZUV4dGVuc2lvbihHVEVTVF9EQkdf
RElSICsgJy9ndGVzdF91bml0dGVzdCcpLAotICAgICAgICAgICAgQWRkRXhlRXh0ZW5zaW9uKEdU
RVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgICAndGVzdC9ndGVz
dF9jb2xvcl90ZXN0LnB5J10pKQotICAgIHNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyA9IFsnZGJn
JywgJ29wdCddCi0gICAgc2VsZi50ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5u
ZXIoCi0gICAgICAgIHNjcmlwdF9kaXI9b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSBvciAnLics
Ci0gICAgICAgIGluamVjdGVkX29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAgaW5qZWN0ZWRfc3Vi
cHJvY2Vzcz1Ob25lKQotICAgIHNlbGYubnVtX3NwYXduX2NhbGxzID0gMCAgIyBBIG51bWJlciBv
ZiBjYWxscyB0byBzcGF3bi4KLQotICBkZWYgdGVzdFJ1blB5dGhvblRlc3RTdWNjZXNzKHNlbGYp
OgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0cyB0byBoYW5kbGUgYSBQeXRob24gdGVzdCBzdWNj
ZXNzLiIiIgotCi0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxmLlNwYXduU3VjY2Vz
cwotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuUnVuVGVz
dHMoCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Qu
cHknKV0sCi0gICAgICAgICAgICBbXSksCi0gICAgICAgIDApCi0gICAgc2VsZi5hc3NlcnRFcXVh
bChzZWxmLm51bV9zcGF3bl9jYWxscywgMSkKLQotICBkZWYgdGVzdFJ1bkJpbmFyeVRlc3RTdWNj
ZXNzKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0cyB0byBoYW5kbGUgYSBiaW5hcnkg
dGVzdCBzdWNjZXNzLiIiIgotCi0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxmLlNw
YXduU3VjY2VzcwotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5u
ZXIuUnVuVGVzdHMoCi0gICAgICAgICAgICBbXSwKLSAgICAgICAgICAgIFsoR1RFU1RfREJHX0RJ
UiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pLAotICAgICAgICAwKQotICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5udW1fc3Bhd25fY2FsbHMsIDEpCi0KLSAgZGVmIHRlc3RS
dW5QeXRob25UZXN0RmF1aWx1cmUoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIFJ1blRlc3RzIHRv
IGhhbmRsZSBhIFB5dGhvbiB0ZXN0IGZhaWx1cmUuIiIiCi0KLSAgICBzZWxmLmZha2Vfb3Muc3Bh
d25faW1wbCA9IHNlbGYuU3Bhd25GYWlsdXJlCi0gICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAg
ICAgc2VsZi50ZXN0X3J1bm5lci5SdW5UZXN0cygKLSAgICAgICAgICAgIFsoR1RFU1RfREJHX0RJ
UiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgICAgIFtdKSwKLSAgICAg
ICAgMSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnVtX3NwYXduX2NhbGxzLCAxKQotCi0g
IGRlZiB0ZXN0UnVuQmluYXJ5VGVzdEZhaWx1cmUoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIFJ1
blRlc3RzIHRvIGhhbmRsZSBhIGJpbmFyeSB0ZXN0IGZhaWx1cmUuIiIiCi0KLSAgICBzZWxmLmZh
a2Vfb3Muc3Bhd25faW1wbCA9IHNlbGYuU3Bhd25GYWlsdXJlCi0gICAgc2VsZi5hc3NlcnRFcXVh
bCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5SdW5UZXN0cygKLSAgICAgICAgICAgIFtdLAot
ICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0
dGVzdCcpXSksCi0gICAgICAgIDEpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm51bV9zcGF3
bl9jYWxscywgMSkKLQotICBkZWYgdGVzdENvbWJpbmVkVGVzdFN1Y2Nlc3Moc2VsZik6Ci0gICAg
IiIiRXhlcmNpc2VzIFJ1blRlc3RzIHRvIGhhbmRsZSBhIHN1Y2Nlc3Mgb2YgYm90aCBQeXRob24g
YW5kIGJpbmFyeSB0ZXN0LiIiIgotCi0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxm
LlNwYXduU3VjY2VzcwotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9y
dW5uZXIuUnVuVGVzdHMoCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19E
SVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldLAotICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBH
VEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSksCi0gICAgICAgIDApCi0gICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZWxmLm51bV9zcGF3bl9jYWxscywgMikKLQotICBkZWYgdGVzdENvbWJp
bmVkVGVzdFN1Y2Nlc3NBbmRGYWlsdXJlKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0
cyB0byBoYW5kbGUgYSBzdWNjZXNzIG9mIGJvdGggUHl0aG9uIGFuZCBiaW5hcnkgdGVzdC4iIiIK
LQotICAgIGRlZiBTcGF3bkltcGwoZXhlY3V0YWJsZSwgYXJndik6Ci0gICAgICBzZWxmLm51bV9z
cGF3bl9jYWxscyArPSAxCi0gICAgICAjIFNpbXVsYXRlcyBmYWlsdXJlIG9mIGEgUHl0aG9uIHRl
c3QgYW5kIHN1Y2Nlc3Mgb2YgYSBiaW5hcnkgdGVzdC4KLSAgICAgIGlmICcucHknIGluIGV4ZWN1
dGFibGUgb3IgJy5weScgaW4gYXJndlswXToKLSAgICAgICAgcmV0dXJuIDEKLSAgICAgIGVsc2U6
Ci0gICAgICAgIHJldHVybiAwCi0KLSAgICBzZWxmLmZha2Vfb3Muc3Bhd25faW1wbCA9IFNwYXdu
SW1wbAotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuUnVu
VGVzdHMoCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0
ZXN0X3VuaXR0ZXN0JyldLAotICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdf
RElSICsgJy9ndGVzdF91bml0dGVzdCcpXSksCi0gICAgICAgIDApCi0gICAgc2VsZi5hc3NlcnRF
cXVhbChzZWxmLm51bV9zcGF3bl9jYWxscywgMikKLQotCi1jbGFzcyBQYXJzZUFyZ3NUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKLSAgIiIiRXhlcmNpc2VzIFBhcnNlQXJncy4iIiIKLQotICBkZWYg
dGVzdE5vT3B0aW9ucyhzZWxmKToKLSAgICBvcHRpb25zLCBhcmdzID0gcnVuX3Rlc3RzX3V0aWwu
UGFyc2VBcmdzKCdndGVzdCcsIGFyZ3Y9WydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydEVx
dWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRfKG9wdGlvbnMuY29uZmln
dXJhdGlvbnMgaXMgTm9uZSkKLSAgICBzZWxmLmFzc2VydEZhbHNlKG9wdGlvbnMuYnVpbHRfY29u
ZmlndXJhdGlvbnMpCi0KLSAgZGVmIHRlc3RPcHRpb25DKHNlbGYpOgotICAgIG9wdGlvbnMsIGFy
Z3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoCi0gICAgICAgICdndGVzdCcsIGFyZ3Y9Wydz
Y3JpcHQucHknLCAnLWMnLCAnZGJnJ10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBbJ3Nj
cmlwdC5weSddKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5jb25maWd1cmF0aW9ucywg
J2RiZycpCi0gICAgc2VsZi5hc3NlcnRGYWxzZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRpb25z
KQotCi0gIGRlZiB0ZXN0T3B0aW9uQShzZWxmKToKLSAgICBvcHRpb25zLCBhcmdzID0gcnVuX3Rl
c3RzX3V0aWwuUGFyc2VBcmdzKCdndGVzdCcsIGFyZ3Y9WydzY3JpcHQucHknLCAnLWEnXSkKLSAg
ICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRF
cXVhbChvcHRpb25zLmNvbmZpZ3VyYXRpb25zLCAnYWxsJykKLSAgICBzZWxmLmFzc2VydEZhbHNl
KG9wdGlvbnMuYnVpbHRfY29uZmlndXJhdGlvbnMpCi0KLSAgZGVmIHRlc3RPcHRpb25CKHNlbGYp
OgotICAgIG9wdGlvbnMsIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoJ2d0ZXN0Jywg
YXJndj1bJ3NjcmlwdC5weScsICctYiddKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgWydz
Y3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydF8ob3B0aW9ucy5jb25maWd1cmF0aW9ucyBpcyBO
b25lKQotICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRpb25zKQot
Ci0gIGRlZiB0ZXN0T3B0aW9uQ0FuZE9wdGlvbkIoc2VsZik6Ci0gICAgb3B0aW9ucywgYXJncyA9
IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygKLSAgICAgICAgJ2d0ZXN0JywgYXJndj1bJ3Njcmlw
dC5weScsICctYycsICdkYmcnLCAnLWInXSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsn
c2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLmNvbmZpZ3VyYXRpb25z
LCAnZGJnJykKLSAgICBzZWxmLmFzc2VydFRydWUob3B0aW9ucy5idWlsdF9jb25maWd1cmF0aW9u
cykKLQotICBkZWYgdGVzdE9wdGlvbkgoc2VsZik6Ci0gICAgaGVscF9jYWxsZWQgPSBbRmFsc2Vd
Ci0KLSAgICAjIFN1cHByZXNzZXMgbGludCB3YXJuaW5nIG9uIHVudXNlZCBhcmd1bWVudHMuICBU
aGVzZSBhcmd1bWVudHMgYXJlCi0gICAgIyByZXF1aXJlZCBieSBvcHRwYXJzZSwgZXZlbiB0aG91
Z2ggdGhleSBhcmUgdW51c2VkLgotICAgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1XMDYxMwotICAg
IGRlZiBWZXJpZnlIZWxwKG9wdGlvbiwgb3B0LCB2YWx1ZSwgcGFyc2VyKToKLSAgICAgIGhlbHBf
Y2FsbGVkWzBdID0gVHJ1ZQotCi0gICAgIyBWZXJpZmllcyB0aGF0IC1oIGNhdXNlcyB0aGUgaGVs
cCBjYWxsYmFjayB0byBiZSBjYWxsZWQuCi0gICAgaGVscF9jYWxsZWRbMF0gPSBGYWxzZQotICAg
IF8sIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoCi0gICAgICAgICdndGVzdCcsIGFy
Z3Y9WydzY3JpcHQucHknLCAnLWgnXSwgaGVscF9jYWxsYmFjaz1WZXJpZnlIZWxwKQotICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYXJncywgWydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydFRydWUo
aGVscF9jYWxsZWRbMF0pCi0KLSAgICAjIFZlcmlmaWVzIHRoYXQgLS1oZWxwIGNhdXNlcyB0aGUg
aGVscCBjYWxsYmFjayB0byBiZSBjYWxsZWQuCi0gICAgaGVscF9jYWxsZWRbMF0gPSBGYWxzZQot
ICAgIF8sIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoCi0gICAgICAgICdndGVzdCcs
IGFyZ3Y9WydzY3JpcHQucHknLCAnLS1oZWxwJ10sIGhlbHBfY2FsbGJhY2s9VmVyaWZ5SGVscCkK
LSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3Nl
cnRUcnVlKGhlbHBfY2FsbGVkWzBdKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0g
IHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNv
ZGUvQ29uZmlnL0RlYnVnUHJvamVjdC54Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3hjb2RlL0NvbmZpZy9EZWJ1Z1Byb2plY3QueGNjb25maWcKaW5kZXggNTc2ZjNkOWJmMGUyNGY2
ZWU5ODkxODEzZTRlMThlNGYxYzFiZTQ2Mi4uNzZmM2FiMjk1YTkxMDY3OGM1NWM1MGZhN2Y4YWM3
NGU3NzMwMmY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29u
ZmlnL0RlYnVnUHJvamVjdC54Y2NvbmZpZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94
Y29kZS9Db25maWcvRGVidWdQcm9qZWN0LnhjY29uZmlnCkBAIC01LDcgKzUsNyBAQAogLy8gIGV4
YW1wbGVzLiBJdCBpcyBzZXQgaW4gdGhlICJCYXNlZCBPbjoiIGRyb3Bkb3duIGluIHRoZSAiUHJv
amVjdCIgaW5mbwogLy8gIGRpYWxvZy4KIC8vICBUaGlzIGZpbGUgaXMgYmFzZWQgb24gdGhlIFhj
b2RlIENvbmZpZ3VyYXRpb24gZmlsZXMgaW46Ci0vLyAgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L2dvb2dsZS10b29sYm94LWZvci1tYWMvCisvLyAgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9n
b29nbGUtdG9vbGJveC1mb3ItbWFjCiAvLyAKIAogI2luY2x1ZGUgIkdlbmVyYWwueGNjb25maWci
CkBAIC0yOSw5ICsyOSw2IEBAIE9USEVSX0NGTEFHUyA9ICQoT1RIRVJfQ0ZMQUdTKSAtRERFQlVH
PTEKIC8vIC8vIFR1cm5zIG9uIHNwZWNpYWwgQysrIFNUTCBjaGVja3MgdG8gImVuY291cmFnZSIg
Z29vZCBTVEwgdXNlCiAvLyBHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChHQ0NfUFJF
UFJPQ0VTU09SX0RFRklOSVRJT05TKSBfR0xJQkNYWF9ERUJVR19QRURBTlRJQyBfR0xJQkNYWF9E
RUJVRyBfR0xJQkNQUF9DT05DRVBUX0NIRUNLUwogCi0vLyBVc2VkIGJ5IEhFQURFUl9TRUFSQ0hf
UEFUSFMgaW4gR2VuZXJhbC54Y2NvbmZpZwotV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSID0g
JChCVUlMVF9QUk9EVUNUU19ESVIpL1dlYkNvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwot
CiBPTkxZX0FDVElWRV9BUkNIID0gWUVTCiAKIFNES1JPT1QgPSAkKFNES1JPT1RfJChVU0VfSU5U
RVJOQUxfU0RLKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9D
b25maWcvRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
eGNvZGUvQ29uZmlnL0ZyYW1ld29ya1RhcmdldC54Y2NvbmZpZwppbmRleCBmNGRhOWQyMzk5MTYz
NWFiZGNkYTgyYjZhMDZlYWMzZmM4NTg5MGFkLi43ZDAyNGNkMjk0ODY3YzE1NzMyYmUyZTg5Yzc5
Yjg3ZWJhZWRhZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9D
b25maWcvRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3hjb2RlL0NvbmZpZy9GcmFtZXdvcmtUYXJnZXQueGNjb25maWcKQEAgLTQsNyArNCw3IEBA
CiAvLyAgVGhlc2UgYXJlIEZyYW1ld29yayB0YXJnZXQgc2V0dGluZ3MgZm9yIHRoZSBndGVzdCBm
cmFtZXdvcmsgYW5kIGV4YW1wbGVzLiBJdAogLy8gIGlzIHNldCBpbiB0aGUgIkJhc2VkIE9uOiIg
ZHJvcGRvd24gaW4gdGhlICJUYXJnZXQiIGluZm8gZGlhbG9nLgogLy8gIFRoaXMgZmlsZSBpcyBi
YXNlZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBpbjoKLS8vICBodHRwOi8vY29k
ZS5nb29nbGUuY29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8KKy8vICBodHRwczovL2dpdGh1
Yi5jb20vZ29vZ2xlL2dvb2dsZS10b29sYm94LWZvci1tYWMKIC8vIAogCiAvLyBEeW5hbWljIGxp
YnMgbmVlZCB0byBiZSBwb3NpdGlvbiBpbmRlcGVuZGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0dlbmVyYWwueGNjb25maWcgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvR2VuZXJhbC54Y2NvbmZpZwppbmRleCAzYmQyYTU4
NmE1NzA1ZmNmNjZlYzJkOTU5MmFmYWMzZDhkNmQ3ZGUwLi41M2UwM2RlNTFjYzJmOWI3MTU2YmQ1
Njc0YTE3M2EwZjNhM2ZhNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94
Y29kZS9Db25maWcvR2VuZXJhbC54Y2NvbmZpZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC94Y29kZS9Db25maWcvR2VuZXJhbC54Y2NvbmZpZwpAQCAtMTgsNyArMTgsNyBAQCBHQ0NfVkVS
U0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CiAKIEFSQ0hTID0gJChB
UkNIU19TVEFOREFSRF8zMl82NF9CSVQpOwogCi1IRUFERVJfU0VBUkNIX1BBVEhTID0gJChCVUlM
VF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlICIkKFdFQkNPUkVfUFJJVkFURV9IRUFE
RVJTX0RJUikvRm9yd2FyZGluZ0hlYWRlcnMiIC4uLyAuLi9pbmNsdWRlLworSEVBREVSX1NFQVJD
SF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZSAuLi8gLi4v
aW5jbHVkZS8KIAogLy8gWmVyb2xpbmsgcHJldmVudHMgbGluayB3YXJuaW5ncyBzbyB0dXJuIGl0
IG9mZgogWkVST19MSU5LID0gTk8KQEAgLTU5LDggKzU5LDYgQEAgQUxXQVlTX1NFQVJDSF9VU0VS
X1BBVEhTID0gTk8KIC8vIFR1cm4gb24gcG9zaXRpb24gZGVwZW5kZW50IGNvZGUgZm9yIG1vc3Qg
Y2FzZXMgKG92ZXJyaWRkZW4gd2hlcmUgYXBwcm9wcmlhdGUpCiBHQ0NfRFlOQU1JQ19OT19QSUMg
PSBZRVMKIAotR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoR0NDX1BSRVBST0NFU1NP
Ul9ERUZJTklUSU9OUykgR1RFU1RfSEFTX1RSMV9UVVBMRT0wIEdURVNUX0hBU19SVFRJPTA7Ci0K
IENMQU5HX0NYWF9MSUJSQVJZID0gbGliYysrOwogCiBUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9N
QUpPUiA9ICQoTUFDX09TX1hfVkVSU0lPTl9NQUpPUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvUHJvZHVjdGlvblByb2plY3QueGNjb25maWcgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvUHJvZHVjdGlvblByb2plY3QueGNj
b25maWcKaW5kZXggMDE2YzY4NzhlOTc2MTAxODhkYWE4NjI5ZDM1MjFhYjk0Nzc2YmFjNi4uZDky
NzVmMDJmODU3MmEwMTgzNWM4NTA3OTdhZGFiY2I1MDQ1NjE5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1Byb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmln
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9Qcm9kdWN0aW9uUHJv
amVjdC54Y2NvbmZpZwpAQCAtMTAsMjUgKzEwLDYgQEAKIAogI2luY2x1ZGUgIlJlbGVhc2VQcm9q
ZWN0LnhjY29uZmlnIgogCi0vLyBVc2VkIGJ5IEhFQURFUl9TRUFSQ0hfUEFUSFMgaW4gR2VuZXJh
bC54Y2NvbmZpZwotV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSID0gJChXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVJfJChXS19VU0VfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVIpKTsKLVdFQkNP
UkVfUFJJVkFURV9IRUFERVJTX0RJUl9OTyA9ICQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdv
cmtzL1dlYktpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL1dlYkNvcmUuZnJhbWV3
b3JrL1ByaXZhdGVIZWFkZXJzOwotV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSX1lFUyA9ICQo
V0tfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVIpL1dlYkNvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFk
ZXJzOwotCi1GUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gJChXS19RVU9URURfT1ZFUlJJREVfRlJB
TUVXT1JLU19ESVIpICQoaW5oZXJpdGVkKTsKLQogT05MWV9BQ1RJVkVfQVJDSCA9IE5PCiAKIFNE
S1JPT1QgPSBtYWNvc3guaW50ZXJuYWw7Ci0KLVdLX0VNUFRZXyA9IFlFUzsKLVdLX05PVF8gPSBZ
RVM7Ci1XS19OT1RfWUVTID0gTk87Ci0KLVdLX1VTRV9PVkVSUklERV9GUkFNRVdPUktTX0RJUltz
ZGs9bWFjb3N4Kl0gPSAkKFdLX05PVF8kKFdLX0VNUFRZXyQoV0tfT1ZFUlJJREVfRlJBTUVXT1JL
U19ESVIpKSk7Ci0KLVdLX09WRVJSSURFX0ZSQU1FV09SS1NfRElSID0gJChXS19PVkVSUklERV9G
UkFNRVdPUktTX0RJUl9VU0VfU1RBR0lOR19JTlNUQUxMX1BBVEhfJChVU0VfU1RBR0lOR19JTlNU
QUxMX1BBVEgpKTsKLVdLX09WRVJSSURFX0ZSQU1FV09SS1NfRElSX1VTRV9TVEFHSU5HX0lOU1RB
TExfUEFUSF9ZRVMgPSAkKFNZU1RFTV9MSUJSQVJZX0RJUikvU3RhZ2VkRnJhbWV3b3Jrcy9TYWZh
cmk7Ci0KLVdLX1FVT1RFRF9PVkVSUklERV9GUkFNRVdPUktTX0RJUiA9ICQoV0tfUVVPVEVEX09W
RVJSSURFX0ZSQU1FV09SS1NfRElSXyQoV0tfVVNFX09WRVJSSURFX0ZSQU1FV09SS1NfRElSKSk7
Ci1XS19RVU9URURfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVJfWUVTID0gIiQoV0tfT1ZFUlJJREVf
RlJBTUVXT1JLU19ESVIpIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hj
b2RlL0NvbmZpZy9SZWxlYXNlUHJvamVjdC54Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3hjb2RlL0NvbmZpZy9SZWxlYXNlUHJvamVjdC54Y2NvbmZpZwppbmRleCAxM2U5MTdmYmZh
MmRkZjJkM2VlNTMxNTk4ZGMwZmIwZjJiNWJmODc2Li5lMGRkYmU5NjRkOWIwMDY3YWM5MWI2NjNl
YzQwZWVhZjA4OTM0Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29k
ZS9Db25maWcvUmVsZWFzZVByb2plY3QueGNjb25maWcKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QveGNvZGUvQ29uZmlnL1JlbGVhc2VQcm9qZWN0LnhjY29uZmlnCkBAIC01LDcgKzUsNyBA
QAogLy8gIGFuZCBleGFtcGxlcy4gSXQgaXMgc2V0IGluIHRoZSAiQmFzZWQgT246IiBkcm9wZG93
biBpbiB0aGUgIlByb2plY3QiIGluZm8KIC8vICBkaWFsb2cuCiAvLyAgVGhpcyBmaWxlIGlzIGJh
c2VkIG9uIHRoZSBYY29kZSBDb25maWd1cmF0aW9uIGZpbGVzIGluOgotLy8gIGh0dHA6Ly9jb2Rl
Lmdvb2dsZS5jb20vcC9nb29nbGUtdG9vbGJveC1mb3ItbWFjLworLy8gIGh0dHBzOi8vZ2l0aHVi
LmNvbS9nb29nbGUvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYwogLy8gCiAKICNpbmNsdWRlICJHZW5l
cmFsLnhjY29uZmlnIgpAQCAtMzEsOSArMzEsNiBAQCBPVEhFUl9DRkxBR1MgPSAkKE9USEVSX0NG
TEFHUykgLUROREVCVUc9MSAtV25vLXVudXNlZC12YXJpYWJsZQogLy8gV2hlbiB3ZSBzdHJpcCB3
ZSB3YW50IHRvIHN0cmlwIGFsbCBzeW1ib2xzIGluIHJlbGVhc2UsIGJ1dCBzYXZlIGV4dGVybmFs
cy4KIFNUUklQX1NUWUxFID0gYWxsCiAKLS8vIFVzZWQgYnkgSEVBREVSX1NFQVJDSF9QQVRIUyBp
biBHZW5lcmFsLnhjY29uZmlnCi1XRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIgPSAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvV2ViQ29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnM7Ci0KIE9OTFlf
QUNUSVZFX0FSQ0ggPSBZRVMKIAogU0RLUk9PVCA9ICQoU0RLUk9PVF8kKFVTRV9JTlRFUk5BTF9T
REspKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9T
dGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNv
ZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcKaW5kZXggZGQzMzI1NWE5NDQ3
NzAyMGNmMTFmNzA1NWU0NGFlMjUyOGViOWY5Ny4uMDRiNzNiYzkyZDAxMjFkOTU4ZjVmODY5OWRh
ZjM3N2ViNjk4YzM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUv
Q29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcKQEAgLTQs
NyArNCw3IEBACiAvLyAgVGhlc2UgYXJlIHN0YXRpYyBsaWJyYXJ5IHRhcmdldCBzZXR0aW5ncyBm
b3IgbGliZ3Rlc3QuYS4gSXQKIC8vICBpcyBzZXQgaW4gdGhlICJCYXNlZCBPbjoiIGRyb3Bkb3du
IGluIHRoZSAiVGFyZ2V0IiBpbmZvIGRpYWxvZy4KIC8vICBUaGlzIGZpbGUgaXMgYmFzZWQgb24g
dGhlIFhjb2RlIENvbmZpZ3VyYXRpb24gZmlsZXMgaW46Ci0vLyAgaHR0cDovL2NvZGUuZ29vZ2xl
LmNvbS9wL2dvb2dsZS10b29sYm94LWZvci1tYWMvCisvLyAgaHR0cHM6Ly9naXRodWIuY29tL2dv
b2dsZS9nb29nbGUtdG9vbGJveC1mb3ItbWFjCiAvLyAKIAogLy8gU3RhdGljIGxpYnMgY2FuIGJl
IGluY2x1ZGVkIGluIGJ1bmRsZXMgc28gbWFrZSB0aGVtIHBvc2l0aW9uIGluZGVwZW5kZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29y
a1NhbXBsZS93aWRnZXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL1Nh
bXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjCmluZGV4IDYxYzBkMmZmZDc2ZDE4
MDZhYTM1OTc5ZDhhZTM2NDEwNjQ4YWFhMTUuLjg3MjU5OTQyMTg1MTQwOGU3NmFhYjZjNTYwYjgx
ODkyNDU5YmJkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL1Nh
bXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjCkBA
IC0zNiw3ICszNiw3IEBACiAvLyBUaGlzIGlzIGEgc2ltcGxlIHRlc3QgZmlsZSBmb3IgdGhlIFdp
ZGdldCBjbGFzcyBpbiB0aGUgV2lkZ2V0LmZyYW1ld29yawogCiAjaW5jbHVkZSA8c3RyaW5nPgot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2lu
Y2x1ZGUgPFdpZGdldC93aWRnZXQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QveGNvZGUvU2NyaXB0cy9ydW50ZXN0cy5zaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3hjb2RlL1NjcmlwdHMvcnVudGVzdHMuc2gKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0
NApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2NyaXB0cy92ZXJz
aW9uZ2VuZXJhdGUucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9TY3JpcHRzL3Zl
cnNpb25nZW5lcmF0ZS5weQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDgx
ZGU4Yzk2YWM1ZDg2Y2E2Mzk0NTZjOTBjNDMzMDY3YmRmZDQwZTUuLmJkZDc1NDFhZDc5N2ZhNjcz
ZjY1ZGEzODE2OGUxNTgwZmQ3ZGRlM2EKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNv
ZGUvU2NyaXB0cy92ZXJzaW9uZ2VuZXJhdGUucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QveGNvZGUvU2NyaXB0cy92ZXJzaW9uZ2VuZXJhdGUucHkKQEAgLTI5LDcgKzI5LDcgQEAKICMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSIiIkEgc2NyaXB0IHRvIHByZXBhcmUgdmVy
c2lvbiBpbmZvcm10aW9uIGZvciB1c2UgdGhlIGd0ZXN0IEluZm8ucGxpc3QgZmlsZS4KKyIiIkEg
c2NyaXB0IHRvIHByZXBhcmUgdmVyc2lvbiBpbmZvcm1hdGlvbiBmb3IgdXNlIHRoZSBndGVzdCBJ
bmZvLnBsaXN0IGZpbGUuCiAKICAgVGhpcyBzY3JpcHQgZXh0cmFjdHMgdGhlIHZlcnNpb24gaW5m
b3JtYXRpb24gZnJvbSB0aGUgY29uZmlndXJlLmFjIGZpbGUgYW5kCiAgIHVzZXMgaXQgdG8gZ2Vu
ZXJhdGUgYSBoZWFkZXIgZmlsZSBjb250YWluaW5nIHRoZSBzYW1lIGluZm9ybWF0aW9uLiBUaGUK
QEAgLTQyLDcgKzQyLDcgQEAKICAgICAxLiBUaGUgQUNfSU5JVCBtYWNybyB3aWxsIGJlIGNvbnRh
aW5lZCB3aXRoaW4gdGhlIGZpcnN0IDEwMjQgY2hhcmFjdGVycwogICAgICAgIG9mIGNvbmZpZ3Vy
ZS5hYwogICAgIDIuIFRoZSB2ZXJzaW9uIHN0cmluZyB3aWxsIGJlIDMgaW50ZWdlcnMgc2VwYXJh
dGVkIGJ5IHBlcmlvZHMgYW5kIHdpbGwgYmUKLSAgICAgICBzdXJyb3VuZGVkIGJ5IHNxdXJlIGJy
YWNrZXRzLCAiWyIgYW5kICJdIiAoZS5nLiBbMS4wLjFdKS4gVGhlIGZpcnN0CisgICAgICAgc3Vy
cm91bmRlZCBieSBzcXVhcmUgYnJhY2tldHMsICJbIiBhbmQgIl0iIChlLmcuIFsxLjAuMV0pLiBU
aGUgZmlyc3QKICAgICAgICBzZWdtZW50IHJlcHJlc2VudHMgdGhlIG1ham9yIHZlcnNpb24sIHRo
ZSBzZWNvbmQgcmVwcmVzZW50cyB0aGUgbWlub3IKICAgICAgICB2ZXJzaW9uIGFuZCB0aGUgdGhp
cmQgcmVwcmVzZW50cyB0aGUgZml4IHZlcnNpb24uCiAgICAgMy4gTm8gIikiIGNoYXJhY3RlciBl
eGlzdHMgYmV0d2VlbiB0aGUgb3BlbmluZyAiKCIgYW5kIGNsb3NpbmcgIikiIG9mCkBAIC02OCw3
ICs2OCw3IEBAIGNvbmZpZ19maWxlLmNsb3NlKCkKIAogIyBFeHRyYWN0IHRoZSB2ZXJzaW9uIHN0
cmluZyBmcm9tIHRoZSBBQ19JTklUIG1hY3JvCiAjICAgVGhlIGZvbGxvd2luZyBpbml0X2V4cHJl
c3Npb24gbWVhbnM6Ci0jICAgICBFeHRyYWN0IHRocmVlIGludGVnZXJzIHNlcGFyYXRlZCBieSBw
ZXJpb2RzIGFuZCBzdXJyb3VuZGVkIGJ5IHNxdXJlCisjICAgICBFeHRyYWN0IHRocmVlIGludGVn
ZXJzIHNlcGFyYXRlZCBieSBwZXJpb2RzIGFuZCBzdXJyb3VuZGVkIGJ5IHNxdWFyZQogIyAgICAg
YnJhY2tldHMoZS5nLiAiWzEuMC4xXSIpIGJldHdlZW4gIkFDX0lOSVQoIiBhbmQgIikiLiBEbyBu
b3QgYmUgZ3JlZWR5CiAjICAgICAoKj8gaXMgdGhlIG5vbi1ncmVlZHkgZmxhZykgc2luY2UgdGhh
dCB3b3VsZCBwdWxsIGluIGV2ZXJ5dGhpbmcgYmV0d2VlbgogIyAgICAgdGhlIGZpcnN0ICIoIiBh
bmQgdGhlIGxhc3QgIikiIGluIHRoZSBmaWxlLgpAQCAtODgsNyArODgsNyBAQCBmaWxlX2RhdGEg
PSAiIiIvLwogLy8gaXMgZXhlY3V0ZWQgaW4gYSAiUnVuIFNjcmlwdCIgYnVpbGQgcGhhc2Ugd2hl
biBjcmVhdGluZyBndGVzdC5mcmFtZXdvcmsuIFRoaXMKIC8vIGhlYWRlciBmaWxlIGlzIG5vdCB1
c2VkIGR1cmluZyBjb21waWxhdGlvbiBvZiBDLXNvdXJjZS4gUmF0aGVyLCBpdCBzaW1wbHkKIC8v
IGRlZmluZXMgc29tZSB2ZXJzaW9uIHN0cmluZ3MgZm9yIHN1YnN0aXR1dGlvbiBpbiB0aGUgSW5m
by5wbGlzdC4gQmVjYXVzZSBvZgotLy8gdGhpcywgd2UgYXJlIG5vdCBub3QgcmVzdHJpY3RlZCB0
byBDLXN5bnRheCBub3IgYXJlIHdlIHVzaW5nIGluY2x1ZGUgZ3VhcmRzLgorLy8gdGhpcywgd2Ug
YXJlIG5vdCByZXN0cmljdGVkIHRvIEMtc3ludGF4IG5vciBhcmUgd2UgdXNpbmcgaW5jbHVkZSBn
dWFyZHMuCiAvLwogCiAjZGVmaW5lIEdURVNUX1ZFUlNJT05JTkZPX1NIT1JUICVzLiVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9ndGVzdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvZ3Rlc3QueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZmYzZmJhZmVmYmFhYzNiODM4MjQ4YjE3ZDU2ODc2
YjNkNWY2YmU4Li42YzcwZGI5MTRmMmQ2NGQwMzg4Mzc0ODZiZTI5ODk2ZTc3MjZjOWYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9ndGVzdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL2d0ZXN0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3LDcgKzM3LDYgQEAKIC8qIEVuZCBQQlhBZ2dy
ZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAq
LwotCQkxQTBBNEM0NTE0QjdBM0I1MDA4OTUxMzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3Jr
IGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwQTRD
NDQxNEI3QTNCNTAwODk1MTM1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJ
MjI0QTEyQTMwRTlFQURDQzAwQkQxN0ZEIC8qIGd0ZXN0LXRlc3QtcGFydC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjI0QTEyQTIwRTlFQURDQzAwQkQx
N0ZEIC8qIGd0ZXN0LXRlc3QtcGFydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1
YmxpYywgKTsgfTsgfTsKIAkJM0JGNkYyQTAwRTc5QjVBRDAwMEYyRUVFIC8qIGd0ZXN0LXR5cGUt
dXRpbC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzQkY2RjI5RjBFNzlCNUFEMDAwRjJFRUUgLyogZ3Rlc3QtdHlwZS11dGlsLmgg
Ki87IH07CiAJCTNCRjZGMkE1MEU3OUI2MTYwMDBGMkVFRSAvKiBndGVzdC10eXBlZC10ZXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQkY2RjJBNDBF
NzlCNjE2MDAwRjJFRUUgLyogZ3Rlc3QtdHlwZWQtdGVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKQEAgLTQ3LDcgKzQ2LDcgQEAKIAkJNDA0ODg0M0Iw
RTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNERTBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTQwNDg4NDNDMEUy
Rjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcmVkX2ltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0RGMEUyRjc5OUIwMENGNzY1OCAvKiBndGVz
dF9wcmVkX2ltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07CiAJCTQwNDg4NDNEMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcm9kLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNFMDBFMkY3OTlCMDBD
Rjc2NTggLyogZ3Rlc3RfcHJvZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1Ymxp
YywgKTsgfTsgfTsKLQkJNDA0ODg0NTAwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRSBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRjYwRTJGNzk5
QjAwQ0Y3NjU4IC8qIFJFQURNRSAqLzsgfTsKKwkJNDA0ODg0NTAwRTJGNzk5QjAwQ0Y3NjU4IC8q
IFJFQURNRS5tZCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCAqLzsgfTsKIAkJNDA0ODg0
QTAwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCBpbiBDb3B5
IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0
ODgzRTIwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCAqLzsg
fTsKIAkJNDA0ODg0QTEwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0LWZpbGVwYXRoLmggaW4gQ29w
eSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQw
NDg4M0UzMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1maWxlcGF0aC5oICovOyB9OwogCQk0MDQ4
ODRBMjBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3QtaW50ZXJuYWwuaCBpbiBDb3B5IEhlYWRlcnMg
SW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRTQwRTJG
Nzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWludGVybmFsLmggKi87IH07CkBAIC01NSw3ICs1NCw3IEBA
CiAJCTQwNDg4NEE0MEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1zdHJpbmcuaCBpbiBDb3B5IEhl
YWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgz
RTYwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXN0cmluZy5oICovOyB9OwogCQk0MDQ4ODRBQzBF
MkY3Q0Q5MDBDRjc2NTggLyogQ0hBTkdFUyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDA0ODg0QTkwRTJGN0NEOTAwQ0Y3NjU4IC8qIENIQU5HRVMgKi87
IH07CiAJCTQwNDg4NEFEMEUyRjdDRDkwMENGNzY1OCAvKiBDT05UUklCVVRPUlMgaW4gUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4NEFBMEUyRjdDRDkw
MENGNzY1OCAvKiBDT05UUklCVVRPUlMgKi87IH07Ci0JCTQwNDg4NEFFMEUyRjdDRDkwMENGNzY1
OCAvKiBDT1BZSU5HIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogQ09QWUlORyAqLzsgfTsKKwkJNDA0ODg0
QUUwRTJGN0NEOTAwQ0Y3NjU4IC8qIExJQ0VOU0UgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4NEFCMEUyRjdDRDkwMENGNzY1OCAvKiBMSUNFTlNF
ICovOyB9OwogCQk0MDg5OUYzQTBGRkE3MEQ0MDAwQjI5QUUgLyogZ3Rlc3QtYWxsLmNjIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjI0QTEyQTEwRTlFQURB
NzAwQkQxN0ZEIC8qIGd0ZXN0LWFsbC5jYyAqLzsgfTsKIAkJNDA4OTlGNTAwRkZBNzI4MTAwMEIy
OUFFIC8qIGd0ZXN0LXR1cGxlLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwODk5RjREMEZGQTcyNzEwMDBCMjlBRSAvKiBndGVz
dC10dXBsZS5oICovOyB9OwogCQk0MDg5OUY1MzBGRkE3MkEwMDAwQjI5QUUgLyogZ3Rlc3RfdW5p
dHRlc3QuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
QjIzOEMxMjBFN0ZFMTNDMDA4NDZFMTEgLyogZ3Rlc3RfdW5pdHRlc3QuY2MgKi87IH07CkBAIC03
OSw2ICs3OCwxNCBAQAogCQk0NTM5QzkzODBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtbGlua2Vk
X3B0ci5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NTM5QzkzNTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtbGlua2VkX3B0ci5o
ICovOyB9OwogCQk0NTM5QzkzOTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC1n
ZW5lcmF0ZWQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDUzOUM5MzYwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0
aWwtZ2VuZXJhdGVkLmggKi87IH07CiAJCTQ1MzlDOTNBMEVDMjgwRTIwMEE3MEY0QyAvKiBndGVz
dC1wYXJhbS11dGlsLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MzlDOTM3MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJh
bS11dGlsLmggKi87IH07CisJCTQ1NjdDODE4MTI2NEZGNzEwMDc3NDBCRSAvKiBndGVzdC1wcmlu
dGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDU2
N0M4MTcxMjY0RkY3MTAwNzc0MEJFIC8qIGd0ZXN0LXByaW50ZXJzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlGNjdENEYzRTFDN0Y1RDhCMDAxN0M3
MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNjdENEYzRDFDN0Y1RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNo
LmggKi87IH07CisJCUY2N0Q0RjNGMUM3RjVEQTcwMDE3QzcyOSAvKiBndGVzdC1wb3J0LWFyY2gu
aCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjY3RDRGM0QxQzdGNUQ4QjAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQtYXJjaC5oICovOyB9
OworCQlGNjdENEY0NDFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGNDExQzdGNUREMDAwMTdD
NzI5IC8qIGd0ZXN0LXBvcnQuaCAqLzsgfTsKKwkJRjY3RDRGNDUxQzdGNUREMDAwMTdDNzI5IC8q
IGd0ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNjdENEY0MjFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLzsg
fTsKKwkJRjY3RDRGNDYxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdENEY0MzFDN0Y1REQwMDAxN0M3Mjkg
LyogZ3Rlc3QuaCAqLzsgfTsKKwkJRjY3RDRGNDgxQzdGNUUxNjAwMTdDNzI5IC8qIGd0ZXN0LXBv
cnQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgQ3VzdG9tICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY2N0Q0RjQxMUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC1wb3J0Lmgg
Ki87IH07CisJCUY2N0Q0RjQ5MUM3RjVFMjYwMDE3QzcyOSAvKiBndGVzdC1wcmludGVycy5oIGlu
IENvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20gKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjY3RDRGNDIxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggKi87
IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFp
bmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTE4OCw2ICsxOTUsNyBAQAogCQkJCTQ1MzlDOTM4
MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1saW5rZWRfcHRyLmggaW4gQ29weSBIZWFkZXJzIElu
dGVybmFsICovLAogCQkJCTQ1MzlDOTM5MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11
dGlsLWdlbmVyYXRlZC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKIAkJCQk0NTM5Qzkz
QTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC5oIGluIENvcHkgSGVhZGVycyBJ
bnRlcm5hbCAqLywKKwkJCQlGNjdENEYzRjFDN0Y1REE3MDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1h
cmNoLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLAogCQkJCTQwNDg4NEEzMEUyRjdCRTYw
MENGNzY1OCAvKiBndGVzdC1wb3J0LmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLAogCQkJ
CTQwNDg4NEE0MEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1zdHJpbmcuaCBpbiBDb3B5IEhlYWRl
cnMgSW50ZXJuYWwgKi8sCiAJCQkJNDA4OTlGNTAwRkZBNzI4MTAwMEIyOUFFIC8qIGd0ZXN0LXR1
cGxlLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLApAQCAtMTk2LDEwICsyMDQsMjEgQEAK
IAkJCW5hbWUgPSAiQ29weSBIZWFkZXJzIEludGVybmFsIjsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OworCQlGNjdENEY0NzFDN0Y1REY2MDAxN0M3Mjkg
LyogQ29weSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlG
aWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0
UGF0aCA9IEhlYWRlcnMvaW50ZXJuYWwvY3VzdG9tOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDY7
CisJCQlmaWxlcyA9ICgKKwkJCQlGNjdENEY0ODFDN0Y1RTE2MDAxN0M3MjkgLyogZ3Rlc3QtcG9y
dC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20gKi8sCisJCQkJRjY3RDRGNDkxQzdG
NUUyNjAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFs
IEN1c3RvbSAqLywKKwkJCSk7CisJCQluYW1lID0gIkNvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0
b20iOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAv
KiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZp
bGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCQkxQTBBNEM0NDE0QjdBM0I1MDA4OTUxMzUgLyogSmF2
YVNjcmlwdENvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTIyNEExMkEx
MEU5RUFEQTcwMEJEMTdGRCAvKiBndGVzdC1hbGwuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gImd0ZXN0LWFsbC5jYyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTIyNEExMkEyMEU5RUFEQ0MwMEJEMTdGRCAvKiBndGVzdC10ZXN0LXBhcnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC10ZXN0LXBhcnQuaCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNCMjM4QzEyMEU3RkUxM0MwMDg0NkUxMSAvKiBndGVzdF91
bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGd0ZXN0X3Vu
aXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE4LDExICsyMzcsMTEg
QEAKIAkJNDA0ODgzRTQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWludGVybmFsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1pbnRlcm5hbC5oIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDA0ODgzRTUwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXBv
cnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXBvcnQuaCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwNDg4M0U2MEUyRjc5OUIwMENGNzY1OCAvKiBn
dGVzdC1zdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXN0
cmluZy5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDA0ODgzRjYwRTJGNzk5QjAw
Q0Y3NjU4IC8qIFJFQURNRSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBSRUFETUU7IHBhdGggPSAu
Li9SRUFETUU7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNDA0ODgzRjYwRTJGNzk5
QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBSRUFETUUubWQ7
IHBhdGggPSAuLi9SRUFETUUubWQ7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNDA0
ODg0MEQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X21haW4uY2MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBndGVzdF9tYWluLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MDQ4ODRBOTBFMkY3Q0Q5MDBDRjc2NTggLyogQ0hBTkdFUyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IG5hbWUgPSBDSEFOR0VTOyBwYXRoID0gLi4vQ0hBTkdFUzsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OwogCQk0MDQ4ODRBQTBFMkY3Q0Q5MDBDRjc2NTggLyogQ09OVFJJQlVUT1JTICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgbmFtZSA9IENPTlRSSUJVVE9SUzsgcGF0aCA9IC4uL0NPTlRSSUJVVE9S
Uzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQk0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2
NTggLyogQ09QWUlORyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDT1BZSU5HOyBwYXRoID0gLi4v
Q09QWUlORzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk0MDQ4ODRBQjBFMkY3Q0Q5
MDBDRjc2NTggLyogTElDRU5TRSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBMSUNFTlNFOyBwYXRo
ID0gLi4vTElDRU5TRTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk0MDg5OUY0MzBG
RkE3MTg0MDAwQjI5QUUgLyogZ3Rlc3RfdW5pdHRlc3QtZnJhbWV3b3JrICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1
dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSAiZ3Rlc3RfdW5pdHRlc3QtZnJhbWV3
b3JrIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDA4OTlGNEQwRkZB
NzI3MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9ICJndGVzdC10dXBsZS5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDA4
OTlGQjMwRkZBNzU2NzAwMEIyOUFFIC8qIFN0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZp
Zzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0NSw2ICsyNjQsMTEgQEAKIAkJNDUz
OUM5MzUwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LWxpbmtlZF9wdHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LWxpbmtlZF9wdHIuaCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ1MzlDOTM2MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11
dGlsLWdlbmVyYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3Qt
cGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1
MzlDOTM3MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1wYXJhbS11dGlsLmgiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0NTY3QzgxNzEyNjRGRjcxMDA3NzQwQkUgLyogZ3Rlc3QtcHJpbnRl
cnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXByaW50ZXJzLmgi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNjdENEYzRDFDN0Y1RDhCMDAxN0M3Mjkg
LyogZ3Rlc3QtcG9ydC1hcmNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJn
dGVzdC1wb3J0LWFyY2guaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2N0Q0RjQx
MUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC1wb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9ICJndGVzdC1wb3J0LmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
NjdENEY0MjFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXByaW50ZXJzLmgiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGNjdENEY0MzFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZ3Rlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMjg0LDE0ICszMDgsNiBAQAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwotCQk0
NDREMTE3MjE0QTI2MjhGMDA5RkVDM0YgLyogRnJhbWV3b3JrcyAqLyA9IHsKLQkJCWlzYSA9IFBC
WEZyYW1ld29ya3NCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
LQkJCWZpbGVzID0gKAotCQkJCTFBMEE0QzQ1MTRCN0EzQjUwMDg5NTEzNSAvKiBKYXZhU2NyaXB0
Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKIC8qIEVuZCBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KQEAgLTMx
Niw3ICszMzIsNiBAQAogCQkJCTA4RkI3N0FDRkU4NDE3MDdDMDJBQUMwNyAvKiBTb3VyY2UgKi8s
CiAJCQkJNDBENENGNEUwRTMwRjVFMjAwMjk0ODAxIC8qIFJlc291cmNlcyAqLywKIAkJCQk0MDNF
RTM3QjBFMzc3ODIyMDA0QkQxRTIgLyogU2NyaXB0cyAqLywKLQkJCQkxQTBBNEM0NjE0QjdBM0JD
MDA4OTUxMzUgLyogRnJhbWV3b3JrcyAqLywKIAkJCQkwMzQ3NjhEREZGMzhBNDVBMTFEQjlDOEIg
LyogUHJvZHVjdHMgKi8sCiAJCQkpOwogCQkJbmFtZSA9IGd0ZXN0OwpAQCAtMzI3LDI0ICszNDIs
MTYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTQwNDg4NEE5MEUyRjdDRDkwMENGNzY1OCAvKiBD
SEFOR0VTICovLAogCQkJCTQwNDg4NEFBMEUyRjdDRDkwMENGNzY1OCAvKiBDT05UUklCVVRPUlMg
Ki8sCi0JCQkJNDA0ODg0QUIwRTJGN0NEOTAwQ0Y3NjU4IC8qIENPUFlJTkcgKi8sCiAJCQkJNDA0
ODgzRDkwRTJGNzk5QjAwQ0Y3NjU4IC8qIGluY2x1ZGUgKi8sCi0JCQkJNDA0ODgzRjYwRTJGNzk5
QjAwQ0Y3NjU4IC8qIFJFQURNRSAqLywKKwkJCQk0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyog
TElDRU5TRSAqLywKIAkJCQk0MDg5QTAyRjBGRkFDRjg0MDAwQjI5QUUgLyogc2FtcGxlcyAqLywK
IAkJCQk0MDQ4ODQwNzBFMkY3OTlCMDBDRjc2NTggLyogc3JjICovLAogCQkJCTNCMjM4QkYwMEU3
RkUxM0IwMDg0NkUxMSAvKiB0ZXN0ICovLAorCQkJCTQwNDg4M0Y2MEUyRjc5OUIwMENGNzY1OCAv
KiBSRUFETUUubWQgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFNvdXJjZTsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CiAJCX07Ci0JCTFBMEE0QzQ2MTRCN0EzQkMwMDg5NTEzNSAvKiBGcmFtZXdv
cmtzICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkxQTBB
NEM0NDE0QjdBM0I1MDA4OTUxMzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovLAotCQkJ
KTsKLQkJCW5hbWUgPSBGcmFtZXdvcmtzOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJ
fTsKIAkJM0IyMzhCRjAwRTdGRTEzQjAwODQ2RTExIC8qIHRlc3QgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMzc5LDYgKzM4Niw3IEBACiAJCQkJNDA0ODgz
REIwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRoLXRlc3QuaCAqLywKIAkJCQk0MDQ4ODNE
QzBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtbWVzc2FnZS5oICovLAogCQkJCTQ1MzlDOTMzMEVD
MjgwQUUwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS10ZXN0LmggKi8sCisJCQkJNDU2N0M4MTcxMjY0
RkY3MTAwNzc0MEJFIC8qIGd0ZXN0LXByaW50ZXJzLmggKi8sCiAJCQkJNDA0ODgzREQwRTJGNzk5
QjAwQ0Y3NjU4IC8qIGd0ZXN0LXNwaS5oICovLAogCQkJCTIyNEExMkEyMEU5RUFEQ0MwMEJEMTdG
RCAvKiBndGVzdC10ZXN0LXBhcnQuaCAqLywKIAkJCQkzQkY2RjJBNDBFNzlCNjE2MDAwRjJFRUUg
LyogZ3Rlc3QtdHlwZWQtdGVzdC5oICovLApAQCAtMzkyLDEyICs0MDAsMTQgQEAKIAkJNDA0ODgz
RTEwRTJGNzk5QjAwQ0Y3NjU4IC8qIGludGVybmFsICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlGNjdENEY0MDFDN0Y1REQwMDAxN0M3MjkgLyogY3VzdG9t
ICovLAogCQkJCTQwNDg4M0UyMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1kZWF0aC10ZXN0LWlu
dGVybmFsLmggKi8sCiAJCQkJNDA0ODgzRTMwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWZpbGVw
YXRoLmggKi8sCiAJCQkJNDA0ODgzRTQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWludGVybmFs
LmggKi8sCiAJCQkJNDUzOUM5MzUwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LWxpbmtlZF9wdHIu
aCAqLywKIAkJCQk0NTM5QzkzNjBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC1n
ZW5lcmF0ZWQuaCAqLywKIAkJCQk0NTM5QzkzNzBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFy
YW0tdXRpbC5oICovLAorCQkJCUY2N0Q0RjNEMUM3RjVEOEIwMDE3QzcyOSAvKiBndGVzdC1wb3J0
LWFyY2guaCAqLywKIAkJCQk0MDQ4ODNFNTBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtcG9ydC5o
ICovLAogCQkJCTQwNDg4M0U2MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zdHJpbmcuaCAqLywK
IAkJCQk0MDg5OUY0RDBGRkE3MjcxMDAwQjI5QUUgLyogZ3Rlc3QtdHVwbGUuaCAqLywKQEAgLTQ0
OCw2ICs0NTgsMTYgQEAKIAkJCXBhdGggPSBSZXNvdXJjZXM7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQlGNjdENEY0MDFDN0Y1REQwMDAxN0M3MjkgLyogY3VzdG9tICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlGNjdENEY0MTFDN0Y1
REQwMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oICovLAorCQkJCUY2N0Q0RjQyMUM3RjVERDAwMDE3
QzcyOSAvKiBndGVzdC1wcmludGVycy5oICovLAorCQkJCUY2N0Q0RjQzMUM3RjVERDAwMDE3Qzcy
OSAvKiBndGVzdC5oICovLAorCQkJKTsKKwkJCXBhdGggPSBjdXN0b207CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDU4LDkgKzQ3OCwxNCBAQAog
CQkJCTQwNDg4NDM4MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1kZWF0aC10ZXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MDQ4ODQzOTBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtbWVzc2FnZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDUzOUM5MzQwRUMyODBBRTAwQTcwRjRDIC8qIGd0ZXN0LXBh
cmFtLXRlc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUY2N0Q0RjNFMUM3RjVEOEIwMDE3QzcyOSAv
KiBndGVzdC1wb3J0LWFyY2guaCBpbiBIZWFkZXJzICovLAorCQkJCUY2N0Q0RjQ0MUM3RjVERDAw
MDE3QzcyOSAvKiBndGVzdC1wb3J0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNjdENEY0NTFDN0Y1
REQwMDAxN0M3MjkgLyogZ3Rlc3QtcHJpbnRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ1NjdD
ODE4MTI2NEZGNzEwMDc3NDBCRSAvKiBndGVzdC1wcmludGVycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDA0ODg0M0EwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXNwaS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMjI0QTEyQTMwRTlFQURDQzAwQkQxN0ZEIC8qIGd0ZXN0LXRlc3QtcGFydC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJM0JGNkYyQTUwRTc5QjYxNjAwMEYyRUVFIC8qIGd0ZXN0LXR5cGVkLXRl
c3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUY2N0Q0RjQ2MUM3RjVERDAwMDE3QzcyOSAvKiBndGVz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0M0IwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MDQ4ODQzQzBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Rf
cHJlZF9pbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MDQ4ODQzRDBFMkY3OTlCMDBDRjc2NTgg
LyogZ3Rlc3RfcHJvZC5oIGluIEhlYWRlcnMgKi8sCkBAIC01NzcsOCArNjAyLDggQEAKIAkJCQk4
RDA3RjJDMTA0ODZDQzdBMDA3Q0QxRDAgLyogU291cmNlcyAqLywKIAkJCQk4RDA3RjJCRDA0ODZD
QzdBMDA3Q0QxRDAgLyogSGVhZGVycyAqLywKIAkJCQk0MDQ4ODRBNTBFMkY3QzA0MDBDRjc2NTgg
LyogQ29weSBIZWFkZXJzIEludGVybmFsICovLAorCQkJCUY2N0Q0RjQ3MUM3RjVERjYwMDE3Qzcy
OSAvKiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgQ3VzdG9tICovLAogCQkJCThEMDdGMkJGMDQ4NkND
N0EwMDdDRDFEMCAvKiBSZXNvdXJjZXMgKi8sCi0JCQkJNDQ0RDExNzIxNEEyNjI4RjAwOUZFQzNG
IC8qIEZyYW1ld29ya3MgKi8sCiAJCQkpOwogCQkJYnVpbGRSdWxlcyA9ICgKIAkJCSk7CkBAIC02
MzgsOSArNjYzLDkgQEAKIAkJCWZpbGVzID0gKAogCQkJCTQwNDg4NEFDMEUyRjdDRDkwMENGNzY1
OCAvKiBDSEFOR0VTIGluIFJlc291cmNlcyAqLywKIAkJCQk0MDQ4ODRBRDBFMkY3Q0Q5MDBDRjc2
NTggLyogQ09OVFJJQlVUT1JTIGluIFJlc291cmNlcyAqLywKLQkJCQk0MDQ4ODRBRTBFMkY3Q0Q5
MDBDRjc2NTggLyogQ09QWUlORyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJNDBDODQ5NzgxMDFBMzY1
NDAwODM2NDJBIC8qIGxpYmd0ZXN0X21haW4uYSBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJNDA0ODg0
NTAwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRSBpbiBSZXNvdXJjZXMgKi8sCisJCQkJNDA0ODg0
QUUwRTJGN0NEOTAwQ0Y3NjU4IC8qIExJQ0VOU0UgaW4gUmVzb3VyY2VzICovLAorCQkJCTQwNDg4
NDUwMEUyRjc5OUIwMENGNzY1OCAvKiBSRUFETUUubWQgaW4gUmVzb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtODI0
LDcgKzg0OSw2IEBACiAJCQlidWlsZFNldHRpbmdzID0gewogCQkJCUNPUFlfUEhBU0VfU1RSSVAg
PSBZRVM7CiAJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7
Ci0JCQkJR0NDX0VOQUJMRV9GSVhfQU5EX0NPTlRJTlVFID0gTk87CiAJCQkJUFJPRFVDVF9OQU1F
ID0gQ2hlY2s7CiAJCQkJWkVST19MSU5LID0gTk87CiAJCQl9OwpAQCAtMTAxMCw3ICsxMDM0LDYg
QEAKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CiAJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKIAkJ
CQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKLQkJCQlHQ0Nf
RU5BQkxFX0ZJWF9BTkRfQ09OVElOVUUgPSBOTzsKIAkJCQlQUk9EVUNUX05BTUUgPSBDaGVjazsK
IAkJCQlaRVJPX0xJTksgPSBOTzsKIAkJCX07CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWE0MzNhZWVmNTA2YjZmNDY1NTYwMTNiZmJiNDM2MWJm
MjE5YWMxYS4uMWFjZjMzODQ3ZjI2ODJlMDEzNzg1ZGM3YmE5YWYzZTg3NzUwNDlhMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDE4LTA4LTMwICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4K
KworICAgICAgICBVcGRhdGUgZ29vZ2xldGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvbmZpZy5oOgorICAgICAgICBJ
bnN0ZWFkIG9mIG1vZGlmeWluZyB0aGUgZ3Rlc3Qgc291cmNlLCBhZGQgdGhlIG5lY2Vzc2FyeSBX
VEYgaW5jbHVkZXMgaGVyZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlv
bnMvQmFzZS54Y2NvbmZpZworICAgICAgICBSZW1vdmUgb2Jzb2xldGVkIGRlZmluaXRpb25zIEdU
RVNUX0hBU19UUjFfVFVQTEU9MCBhbmQgR1RFU1RfSEFTX1JUVEk9MC4KKwogMjAxOC0wOS0wMSAg
TWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQ
RV0gMi4yMS45MSBmYWlscyB0byBidWlsZCB3aXRoIEVOQUJMRV9NSU5JQlJPV1NFUgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCmluZGV4IDNj
MmU1OWViNmM1ZDQxYzNiMmYzNDlmZmNjZTUyODQ2OGJjYWEyNWIuLjNmNGJkZmJjOWI2MTRkMjcz
ODEwNzljZTQ2MDJhNjZlNDIyNmM0YmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Q29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZworKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0Nv
bmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKQEAgLTM1LDcgKzM1LDcgQEAgQ0xBTkdfV0FSTl9D
WFgwWF9FWFRFTlNJT05TID0gTk87CiBIRUFERVJfU0VBUkNIX1BBVEhTID0gJHtCVUlMVF9QUk9E
VUNUU19ESVJ9L3Vzci9sb2NhbC9pbmNsdWRlICQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElS
KS9Gb3J3YXJkaW5nSGVhZGVycyAkKEJVSUxUX1BST0RVQ1RTX0RJUikvV2ViQ29yZVRlc3RTdXBw
b3J0OwogCiBHQ0NfTk9fQ09NTU9OX0JMT0NLUyA9IFlFUzsKLUdDQ19QUkVQUk9DRVNTT1JfREVG
SU5JVElPTlMgPSAkKERFQlVHX0RFRklORVMpICQoRkVBVFVSRV9ERUZJTkVTKSBHVEVTVF9IQVNf
VFIxX1RVUExFPTAgR1RFU1RfSEFTX1JUVEk9MCBVX0RJU0FCTEVfUkVOQU1JTkc9MSBVX1NIT1df
Q1BMVVNQTFVTX0FQST0wICQoR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OU18kKFBMQVRGT1JN
X05BTUUpKTsKK0dDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAkKERFQlVHX0RFRklORVMp
ICQoRkVBVFVSRV9ERUZJTkVTKSBVX0RJU0FCTEVfUkVOQU1JTkc9MSBVX1NIT1dfQ1BMVVNQTFVT
X0FQST0wICQoR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OU18kKFBMQVRGT1JNX05BTUUpKTsK
IEdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlNfbWFjb3N4ID0gRU5BQkxFX0RBU0hCT0FSRF9T
VVBQT1JUOwogREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gZHdhcmYtd2l0aC1kc3ltOwogUFJF
QklORElORyA9IE5PCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAppbmRleCBlZGY4YTZmMWY1NmIwYmVkZmZlODRl
NjYwZWU4ZWY1MDRjNGM1MmNhLi4wYzJjNGFlN2JmMGU5Y2U1ZTk4Nzk1OGU1NDg0M2VkNDM3NDYy
MjQ2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKQEAgLTU3LDggKzU3LDE0IEBACiAKICNpZmRlZiBfX2Nw
bHVzcGx1cwogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KKyN1bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgogI2VuZGlmCiAKKyNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5oPgorCiAjaWZkZWYg
X19jbGFuZ19fCiAvLyBGaW5pc2ggd29ya2luZyBhcm91bmQgdGhlIGxlc3Mgc3RyaWN0IGNvZGlu
ZyBzdGFuZGFyZHMgb2YgdGhlIGd0ZXN0IGZyYW1ld29yay4KICNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwb3AK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348745</attachid>
            <date>2018-09-02 12:09:13 -0700</date>
            <delta_ts>2018-09-04 09:56:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175722-20180902120910.patch</filename>
            <type>text/plain</type>
            <size>2569194</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9DaGFuZ2VMb2cKaW5kZXggZmI1MTE0ZTAz
ZmM3ZTUxZjg2N2YzOWFiZjhkYjIwNDA1YWRhOWJiYS4uZTkwNWY4ZjdkMjRmYTBlZWM4YzMwMzJm
YjdhYjlkYTNjZDgzYmU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4
LTA4LTMwICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAg
ICBVcGRhdGUgZ29vZ2xldGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc1NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBndGVzdC86CisgICAgICAgIFVwZGF0ZSB0byAxLjguMS4KKworICAgICAg
ICAqIGd0ZXN0L0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIGd0ZXN0L3hjb2RlLzoKKyAgICAg
ICAgS2VlcCBvdXIgdmVyc2lvbnMgb2YgdGhlc2UgYnVpbGQgZmlsZXMsIG1ha2luZyBhbnkgbmVj
ZXNzYXJ5IGFkZGl0aXZlIHVwZGF0ZXMKKyAgICAgICAgYW5kIHJlbW92aW5nIFdURi9KU0MgZGVw
ZW5kZW5jaWVzIHNvIHRoYXQgd2Ugc3RvcCBmb3JraW5nIHRoaXJkLXBhcnR5IHNvdXJjZS4KKwog
MjAxOC0wNy0xNyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW1dQRV1bR1RLXSBVcGRhdGUgeGRnbWltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvQ0hBTkdFUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NIQU5HRVMK
aW5kZXggZTU3NDQxNWVlNmVkODFjZjQ5MmJlMjk1MzQ2YzQ0NGVlYjEwY2U4OC4uMDU1MjEzMjQy
MTJjOTEyODdkOTI0NGQ0NGJhYjMwNmRiNjY0YmFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvQ0hBTkdFUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DSEFOR0VT
CkBAIC0xLDMgKzEsNjIgQEAKK0NoYW5nZXMgZm9yIDEuNy4wOgorCisqIE5ldyBmZWF0dXJlOiBk
ZWF0aCB0ZXN0cyBhcmUgc3VwcG9ydGVkIG9uIE9wZW5CU0QgYW5kIGluIGlPUworICBzaW11bGF0
b3Igbm93LgorKiBOZXcgZmVhdHVyZTogR29vZ2xlIFRlc3Qgbm93IGltcGxlbWVudHMgYSBwcm90
b2NvbCB0byBhbGxvdworICBhIHRlc3QgcnVubmVyIHRvIGRldGVjdCB0aGF0IGEgdGVzdCBwcm9n
cmFtIGhhcyBleGl0ZWQKKyAgcHJlbWF0dXJlbHkgYW5kIHJlcG9ydCBpdCBhcyBhIGZhaWx1cmUg
KGJlZm9yZSBpdCB3b3VsZCBiZQorICBmYWxzZWx5IHJlcG9ydGVkIGFzIGEgc3VjY2VzcyBpZiB0
aGUgZXhpdCBjb2RlIGlzIDApLgorKiBOZXcgZmVhdHVyZTogVGVzdDo6UmVjb3JkUHJvcGVydHko
KSBjYW4gbm93IGJlIHVzZWQgb3V0c2lkZSBvZiB0aGUKKyAgbGlmZXNwYW4gb2YgYSB0ZXN0IG1l
dGhvZCwgaW4gd2hpY2ggY2FzZSBpdCB3aWxsIGJlIGF0dHJpYnV0ZWQgdG8KKyAgdGhlIGN1cnJl
bnQgdGVzdCBjYXNlIG9yIHRoZSB0ZXN0IHByb2dyYW0gaW4gdGhlIFhNTCByZXBvcnQuCisqIE5l
dyBmZWF0dXJlIChwb3RlbnRpYWxseSBicmVha2luZyk6IC0tZ3Rlc3RfbGlzdF90ZXN0cyBub3cg
cHJpbnRzCisgIHRoZSB0eXBlIHBhcmFtZXRlcnMgYW5kIHZhbHVlIHBhcmFtZXRlcnMgZm9yIGVh
Y2ggdGVzdC4KKyogSW1wcm92ZW1lbnQ6IGNoYXIgcG9pbnRlcnMgYW5kIGNoYXIgYXJyYXlzIGFy
ZSBub3cgZXNjYXBlZCBwcm9wZXJseQorICBpbiBmYWlsdXJlIG1lc3NhZ2VzLgorKiBJbXByb3Zl
bWVudDogZmFpbHVyZSBzdW1tYXJ5IGluIFhNTCByZXBvcnRzIG5vdyBpbmNsdWRlcyBmaWxlIGFu
ZAorICBsaW5lIGluZm9ybWF0aW9uLgorKiBJbXByb3ZlbWVudDogdGhlIDx0ZXN0c3VpdGVzPiBY
TUwgZWxlbWVudCBub3cgaGFzIGEgdGltZXN0YW1wIGF0dHJpYnV0ZS4KKyogSW1wcm92ZW1lbnQ6
IFdoZW4gLS1ndGVzdF9maWx0ZXIgaXMgc3BlY2lmaWVkLCBYTUwgcmVwb3J0IG5vdyBkb2Vzbid0
CisgIGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGVzdHMgdGhhdCBhcmUgZmlsdGVyZWQgb3V0
LgorKiBGaXhlZCB0aGUgYnVnIHdoZXJlIGxvbmcgLS1ndGVzdF9maWx0ZXIgZmxhZyB2YWx1ZXMg
YXJlIHRydW5jYXRlZCBpbgorICBkZWF0aCB0ZXN0cy4KKyogUG90ZW50aWFsbHkgYnJlYWtpbmcg
Y2hhbmdlOiBSVU5fQUxMX1RFU1RTKCkgaXMgbm93IGltcGxlbWVudGVkIGFzIGEKKyAgZnVuY3Rp
b24gaW5zdGVhZCBvZiBhIG1hY3JvIGluIG9yZGVyIHRvIHdvcmsgYmV0dGVyIHdpdGggQ2xhbmcu
CisqIENvbXBhdGliaWxpdHkgZml4ZXMgd2l0aCBDKysgMTEgYW5kIHZhcmlvdXMgcGxhdGZvcm1z
LgorKiBCdWcvd2FybmluZyBmaXhlcy4KKworQ2hhbmdlcyBmb3IgMS42LjA6CisKKyogTmV3IGZl
YXR1cmU6IEFERF9GQUlMVVJFX0FUKCkgZm9yIHJlcG9ydGluZyBhIHRlc3QgZmFpbHVyZSBhdCB0
aGUKKyAgZ2l2ZW4gc291cmNlIGxvY2F0aW9uIC0tIHVzZWZ1bCBmb3Igd3JpdGluZyB0ZXN0aW5n
IHV0aWxpdGllcy4KKyogTmV3IGZlYXR1cmU6IHRoZSB1bml2ZXJzYWwgdmFsdWUgcHJpbnRlciBp
cyBtb3ZlZCBmcm9tIEdvb2dsZSBNb2NrCisgIHRvIEdvb2dsZSBUZXN0LgorKiBOZXcgZmVhdHVy
ZTogdHlwZSBwYXJhbWV0ZXJzIGFuZCB2YWx1ZSBwYXJhbWV0ZXJzIGFyZSByZXBvcnRlZCBpbgor
ICB0aGUgWE1MIHJlcG9ydCBub3cuCisqIEEgZ3Rlc3RfZGlzYWJsZV9wdGhyZWFkcyBDTWFrZSBv
cHRpb24uCisqIENvbG9yZWQgb3V0cHV0IHdvcmtzIGluIEdOVSBTY3JlZW4gc2Vzc2lvbnMgbm93
LgorKiBQYXJhbWV0ZXJzIG9mIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIG5vdyBwcmlu
dGVkIGluIHRoZQorICB0ZXh0dWFsIG91dHB1dC4KKyogRmFpbHVyZXMgZnJvbSBhZCBob2MgdGVz
dCBhc3NlcnRpb25zIHJ1biBiZWZvcmUgUlVOX0FMTF9URVNUUygpIGFyZQorICBub3cgY29ycmVj
dGx5IHJlcG9ydGVkLgorKiBBcmd1bWVudHMgb2YgQVNTRVJUX1hZIGFuZCBFWFBFQ1RfWFkgbm8g
bG9uZ2VyIG5lZWQgdG8gc3VwcG9ydCA8PCB0bworICBvc3RyZWFtLgorKiBNb3JlIGNvbXBsZXRl
IGhhbmRsaW5nIG9mIGV4Y2VwdGlvbnMuCisqIEdURVNUX0FTU0VSVF9YWSBjYW4gYmUgdXNlZCBp
bnN0ZWFkIG9mIEFTU0VSVF9YWSBpbiBjYXNlIHRoZSBsYXR0ZXIKKyAgbmFtZSBpcyBhbHJlYWR5
IHVzZWQgYnkgYW5vdGhlciBsaWJyYXJ5LgorKiAtLWd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnMgaXMg
bm93IHRydWUgYnkgZGVmYXVsdCwgYWxsb3dpbmcgYSB0ZXN0CisgIHByb2dyYW0gdG8gY29udGlu
dWUgYWZ0ZXIgYW4gZXhjZXB0aW9uIGlzIHRocm93bi4KKyogVmFsdWUtcGFyYW1ldGVyaXplZCB0
ZXN0IGZpeHR1cmVzIGNhbiBub3cgZGVyaXZlIGZyb20gVGVzdCBhbmQKKyAgV2l0aFBhcmFtSW50
ZXJmYWNlPFQ+IHNlcGFyYXRlbHksIGVhc2luZyBjb252ZXJzaW9uIG9mIGxlZ2FjeSB0ZXN0cy4K
KyogRGVhdGggdGVzdCBtZXNzYWdlcyBhcmUgY2xlYXJseSBtYXJrZWQgdG8gbWFrZSB0aGVtIG1v
cmUKKyAgZGlzdGluZ3Vpc2hhYmxlIGZyb20gb3RoZXIgbWVzc2FnZXMuCisqIENvbXBhdGliaWxp
dHkgZml4ZXMgZm9yIEFuZHJvaWQsIEdvb2dsZSBOYXRpdmUgQ2xpZW50LCBNaW5HVywgSFAgVVgs
CisgIFBvd2VyUEMsIEx1Y2lkIGF1dG90b29scywgbGliQ1N0ZCwgU3VuIEMrKywgQm9ybGFuZCBD
KysgQnVpbGRlciAoQ29kZSBHZWFyKSwKKyAgSUJNIFhMIEMrKyAoVmlzdWFsIEFnZSBDKyspLCBh
bmQgQysrMHguCisqIEJ1ZyBmaXhlcyBhbmQgaW1wbGVtZW50YXRpb24gY2xlYW4tdXBzLgorKiBQ
b3RlbnRpYWxseSBpbmNvbXBhdGlibGUgY2hhbmdlczogZGlzYWJsZXMgdGhlIGhhcm1mdWwgJ21h
a2UgaW5zdGFsbCcKKyAgY29tbWFuZCBpbiBhdXRvdG9vbHMuCisKIENoYW5nZXMgZm9yIDEuNS4w
OgogCiAgKiBOZXcgZmVhdHVyZTogYXNzZXJ0aW9ucyBjYW4gYmUgc2FmZWx5IGNhbGxlZCBpbiBt
dWx0aXBsZSB0aHJlYWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NNYWtlTGlzdHMudHh0CmluZGV4
IGRkMTAwNWZlNmU1N2M1MjBiZTk3ZjRmODA1MmI0MjZmMGZlMDU2OGYuLjQzMDdiYzhiNzJmZWRl
NmFiODJmMGY5NTM3OTU1ZWJiYjFkZDRkMTMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0NNYWtl
TGlzdHMudHh0CkBAIC0xLDE0ICsxLDEyIEBACiAjIFRoaXMgaXMgYW4gYWx0ZXJuYXRpdmUgQ01h
a2VMaXN0cy50eHQgdG8gdGhlIGV4cGVyaW1lbnRhbCBvbmUKICMgc2hpcHBlZCB3aXRoIHRoZSBv
cmlnaW5hbCBwYWNrYWdlLiBJdCBidWlsZHMgb25seSB0aGUgZXNzZW50aWFsCi0jIGZvciBvdXIg
dGVzdHMuIFRoZSBXZWJLaXQgdmVyc2lvbiBvZiBndGVzdCBuZWVkcyBhY2Nlc3MgdG8gc29tZQot
IyBoZWFkZXJzIGZyb20gV1RGIGFuZCBKU0MgZm9yIGNvbmZpZ3VyYXRpb24uCisjIGZvciBvdXIg
dGVzdHMuCiAKIHNldChHVEVTVF9ESVIgIiR7VEhJUkRQQVJUWV9ESVJ9L2d0ZXN0IikKIAogc2V0
KEdURVNUX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtHVEVTVF9ESVJ9IgogICAgICIke0dU
RVNUX0RJUn0vaW5jbHVkZSIKLSAgICAiJHtGT1JXQVJESU5HX0hFQURFUlNfRElSfSIKICkKIAog
c2V0KEdURVNUX1NPVVJDRVMKQEAgLTE3LDYgKzE1LDcgQEAgc2V0KEdURVNUX1NPVVJDRVMKICAg
ICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LWZpbGVwYXRoLmNjCiAgICAgJHtHVEVTVF9ESVJ9L3Ny
Yy9ndGVzdF9tYWluLmNjCiAgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1wb3J0LmNjCisgICAg
JHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1wcmludGVycy5jYwogICAgICR7R1RFU1RfRElSfS9zcmMv
Z3Rlc3QtdGVzdC1wYXJ0LmNjCiAgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC10eXBlZC10ZXN0
LmNjCiApCkBAIC0zMiwyMyArMzEsMTEgQEAgZWxzZSAoKQogZW5kaWYgKCkKIAogaW5jbHVkZV9k
aXJlY3Rvcmllcygke0dURVNUX0lOQ0xVREVfRElSRUNUT1JJRVN9KQotYWRkX2RlZmluaXRpb25z
KC1ER1RFU1RfSEFTX1JUVEk9MCkKIAogV0VCS0lUX0FERF9UQVJHRVRfQ1hYX0ZMQUdTKGd0ZXN0
IC1Xbm8tdW5kZWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtV25vLXN0cmlu
Z29wLXRydW5jYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtV25vLXN1
Z2dlc3QtYXR0cmlidXRlPWZvcm1hdCkKIAotIyBGSVhNRTogVGhpcyB3b3JrcyBhcm91bmQgY29t
cGF0aWJpbGl0eSBwcm9ibGVtcyBpbiB0aGUgb2xkIHZlcnNpb24gb2YgdGhlIHRoaXJkLXBhcnkK
LSMgZ29vZ2xldGVzdCBzb3VyY2UgY29kZSBjaGVja291dC4gSXQgc2hvdWxkIGJlIHJlbW92ZWQg
b25jZSB3ZSB1cGdyYWRlIHRvIGEgbmV3ZXIgdmVyc2lvbi4KLWlmIChDT01QSUxFUl9JU19DTEFO
RykKLSAgICBhZGRfZGVmaW5pdGlvbnMoLURHVEVTVF9IQVNfVFIxX1RVUExFPTApCi1lbmRpZiAo
KQotCi10YXJnZXRfbGlua19saWJyYXJpZXMoZ3Rlc3QKLSAgICBXVEYKLSkKLWFkZF9kZXBlbmRl
bmNpZXMoZ3Rlc3QgSmF2YVNjcmlwdENvcmVQcml2YXRlRm9yd2FyZGluZ0hlYWRlcnMpCi0KIGlm
IChDTUFLRV9VU0VfUFRIUkVBRFNfSU5JVCkKICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoZ3Rl
c3QgJHtDTUFLRV9USFJFQURfTElCU19JTklUfSkKICAgICBhZGRfZGVmaW5pdGlvbnMoLURHVEVT
VF9IQVNfUFRIUkVBRD0xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09O
VFJJQlVUT1JTIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09OVFJJQlVUT1JTCmluZGV4IDA5
MzRhZTEzMDU5YWZjZGMwNWRmODEyNDdlNjFiOWE4NGEyMzEyZTIuLmZlYWUyZmMwNDQxMGRjMzA4
ZTQ2NGFhMjU2ZmUxZjJkMzFlZGM5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L0NPTlRSSUJVVE9SUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9DT05UUklCVVRP
UlMKQEAgLTIxLDYgKzIxLDcgQEAgTWFudWVsIEtsaW1layA8a2xpbWVrQGdvb2dsZS5jb20+CiBN
YXJrdXMgSGV1bGUgPG1hcmt1cy5oZXVsZUBnbWFpbC5jb20+CiBNaWthIFJhZW50byA8bWlraWVA
aWtpLmZpPgogTWlrbMOzcyBGYXpla2FzIDxtZmF6ZWthc0BzemVtYWZvci5jb20+CitQYXNpIFZh
bG1pbmVuIDxwYXNpLnZhbG1pbmVuQGdtYWlsLmNvbT4KIFBhdHJpY2sgSGFubmEgPHBoYW5uYUBn
b29nbGUuY29tPgogUGF0cmljayBSaWxleSA8cGZyQGdvb2dsZS5jb20+CiBQZXRlciBLYW1pbnNr
aSA8cGlvdHJrQGdvb2dsZS5jb20+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9DT1BZSU5HIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvQ09QWUlORwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTk0MWExMWY4Y2U5NDM4OTE2MGI0NTg5MjdhMjliYTIxNzU0Mjgx
OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9DT1BZSU5HCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAot
Q29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi1BbGwgcmlnaHRzIHJlc2VydmVkLgotCi1SZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQotICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLW5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLWNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLWluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLWRpc3RyaWJ1dGlvbi4KLSAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLWNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi10aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotCi1USElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
TElDRU5TRSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0xJQ0VOU0UKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTk0
MWExMWY4Y2U5NDM4OTE2MGI0NTg5MjdhMjliYTIxNzU0MjgxOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L0xJQ0VOU0UKQEAgLTAsMCArMSwyOCBAQAorQ29weXJp
Z2h0IDIwMDgsIEdvb2dsZSBJbmMuCitBbGwgcmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
K21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKK21ldDoKKworICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKK25vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKK2NvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKK2luIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKK2Rpc3RyaWJ1dGlvbi4KKyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKK2NvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCit0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCitBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCitTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCitMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKK0RBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CitPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvTWFrZWZp
bGUuYW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9NYWtlZmlsZS5hbQppbmRleCA4ZDc1ZTMy
Y2MyMGNkZTgzYzE3NGY0ZTA3OGUyOTkzYTkzMmE5ZDE4Li5iNDRjODQxNmJhMDgwYzJmMDE2ZjE2
NmIxOGI0MmMwZjczZWNlN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9N
YWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9NYWtlZmlsZS5hbQpAQCAt
MSwxMyArMSwxNiBAQAogIyBBdXRvbWFrZSBmaWxlCiAKK0FDTE9DQUxfQU1GTEFHUyA9IC1JIG00
CisKICMgTm9uc3RhbmRhcmQgcGFja2FnZSBmaWxlcyBmb3IgZGlzdHJpYnV0aW9uCiBFWFRSQV9E
SVNUID0gXAogICBDSEFOR0VTIFwKICAgQ09OVFJJQlVUT1JTIFwKKyAgTElDRU5TRSBcCiAgIGlu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1bXAgXAorICBpbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcCBcCiAgIGluY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1wIFwKICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wIFwKLSAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oLnB1bXAgXAogICBtYWtlL01ha2VmaWxlIFwKICAgc2Ny
aXB0cy9mdXNlX2d0ZXN0X2ZpbGVzLnB5IFwKICAgc2NyaXB0cy9nZW5fZ3Rlc3RfcHJlZF9pbXBs
LnB5IFwKQEAgLTE3LDE5ICsyMCwyMSBAQCBFWFRSQV9ESVNUID0gXAogIyBndGVzdCBzb3VyY2Ug
ZmlsZXMgdGhhdCB3ZSBkb24ndCBjb21waWxlIGRpcmVjdGx5LiAgVGhleSBhcmUKICMgI2luY2x1
ZGVkIGJ5IGd0ZXN0LWFsbC5jYy4KIEdURVNUX1NSQyA9IFwKLSAgc3JjL2d0ZXN0LmNjIFwKICAg
c3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MgXAogICBzcmMvZ3Rlc3QtZmlsZXBhdGguY2MgXAogICBz
cmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmggXAogICBzcmMvZ3Rlc3QtcG9ydC5jYyBcCisgIHNyYy9n
dGVzdC1wcmludGVycy5jYyBcCiAgIHNyYy9ndGVzdC10ZXN0LXBhcnQuY2MgXAotICBzcmMvZ3Rl
c3QtdHlwZWQtdGVzdC5jYworICBzcmMvZ3Rlc3QtdHlwZWQtdGVzdC5jYyBcCisgIHNyYy9ndGVz
dC5jYwogCiBFWFRSQV9ESVNUICs9ICQoR1RFU1RfU1JDKQogCiAjIFNhbXBsZSBmaWxlcyB0aGF0
IHdlIGRvbid0IGNvbXBpbGUuCiBFWFRSQV9ESVNUICs9IFwKICAgc2FtcGxlcy9wcmltZV90YWJs
ZXMuaCBcCisgIHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYyBcCiAgIHNhbXBsZXMvc2FtcGxl
Ml91bml0dGVzdC5jYyBcCiAgIHNhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYyBcCiAgIHNhbXBs
ZXMvc2FtcGxlNF91bml0dGVzdC5jYyBcCkBAIC00MSw4OCArNDYsOTEgQEAgRVhUUkFfRElTVCAr
PSBcCiAKICMgQysrIHRlc3QgZmlsZXMgdGhhdCB3ZSBkb24ndCBjb21waWxlIGRpcmVjdGx5Lgog
RVhUUkFfRElTVCArPSBcCisgIHRlc3QvZ3Rlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNjIFwKICAg
dGVzdC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0X2Vudmlyb25tZW50
X3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0
LWxpbmtlZF9wdHJfdGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYyBcCiAg
IHRlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdF9ub190ZXN0X3VuaXR0
ZXN0LmNjIFwKICAgdGVzdC9ndGVzdC1vcHRpb25zX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXBh
cmFtLXRlc3RfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtcGFyYW0tdGVzdDJfdGVzdC5jYyBcCisg
IHRlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0Mi10ZXN0LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0
LXBhcmFtLXRlc3QyLXRlc3QuY2MgXAorICB0ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0
LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5jYyBcCiAgIHRlc3QvZ3Rl
c3QtcGFyYW0tdGVzdF90ZXN0LmggXAogICB0ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYyBcCisgIHRl
c3QvZ3Rlc3RfcHJlbWF0dXJlX2V4aXRfdGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3QtcHJpbnRlcnNf
dGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2MgXAorICB0ZXN0L2dvb2ds
ZXRlc3QtdHVwbGUtdGVzdC5jYyBcCisgIHRlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYyBc
CisgIHRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNjIFwKKyAgdGVzdC9ndGVzdC10eXBlZC10
ZXN0X3Rlc3QuaCBcCisgIHRlc3QvZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2MgXAorICB0ZXN0
L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8uY2MgXAorICB0ZXN0L2dvb2ds
ZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0Xy5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC1jb2xv
ci10ZXN0Xy5jYyBcCisgIHRlc3QvZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3RfLmNjIFwKKyAgdGVz
dC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjIFwKKyAgdGVzdC9nb29nbGV0ZXN0LWZpbHRlci11
bml0dGVzdF8uY2MgXAorICB0ZXN0L2d0ZXN0X2hlbHBfdGVzdF8uY2MgXAorICB0ZXN0L2dvb2ds
ZXRlc3QtbGlzdC10ZXN0cy11bml0dGVzdF8uY2MgXAorICB0ZXN0L2d0ZXN0X21haW5fdW5pdHRl
c3QuY2MgXAorICB0ZXN0L2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QuY2MgXAorICB0ZXN0L2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjIFwKICAgdGVzdC9ndGVzdF9wcmVkX2ltcGxfdW5pdHRlc3Qu
Y2MgXAogICB0ZXN0L2d0ZXN0X3Byb2RfdGVzdC5jYyBcCi0gIHRlc3QvcHJvZHVjdGlvbi5jYyBc
Ci0gIHRlc3QvcHJvZHVjdGlvbi5oIFwKICAgdGVzdC9ndGVzdF9yZXBlYXRfdGVzdC5jYyBcCisg
IHRlc3QvZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfLmNjIFwKICAgdGVzdC9ndGVzdF9zb2xlX2hl
YWRlcl90ZXN0LmNjIFwKICAgdGVzdC9ndGVzdF9zdHJlc3NfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rl
c3QtdGVzdC1wYXJ0X3Rlc3QuY2MgXAogICB0ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfZXhf
dGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNjIFwKLSAgdGVzdC9ndGVz
dC10eXBlZC10ZXN0Ml90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuaCBc
CisgIHRlc3QvZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfLmNjIFwKKyAgdGVzdC9n
b29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdF8uY2MgXAogICB0ZXN0L2d0ZXN0X3VuaXR0ZXN0
LmNjIFwKLSAgdGVzdC9ndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3Qt
bGlzdGVuZXJfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfbWFpbl91bml0dGVzdC5jYyBcCiAgIHRl
c3QvZ3Rlc3RfdW5pdHRlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXR1cGxlX3Rlc3QuY2MgXAotICB0
ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtcGFyYW0tdGVzdDJf
dGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8uY2MgXAot
ICB0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3Rf
LmNjIFwKLSAgdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9o
ZWxwX3Rlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYyBcCi0g
IHRlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3Rf
LmNjIFwKLSAgdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3RfLmNjIFwKLSAgdGVzdC9n
dGVzdF91bmluaXRpYWxpemVkX3Rlc3RfLmNjIFwKICAgdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTFf
dGVzdF8uY2MgXAogICB0ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMl90ZXN0Xy5jYyBcCi0gIHRlc3Qv
Z3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MKKyAgdGVzdC9ndGVzdF94bWxfb3V0cHV0X3Vu
aXR0ZXN0Xy5jYyBcCisgIHRlc3QvcHJvZHVjdGlvbi5jYyBcCisgIHRlc3QvcHJvZHVjdGlvbi5o
CiAKICMgUHl0aG9uIHRlc3RzIHRoYXQgd2UgZG9uJ3QgcnVuLgogRVhUUkFfRElTVCArPSBcCi0g
IHRlc3QvZ3Rlc3RfdGVzdF91dGlscy5weSBcCi0gIHRlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMu
cHkgXAotICB0ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkgXAotICB0ZXN0
L2d0ZXN0X2NvbG9yX3Rlc3QucHkgXAotICB0ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weSBcCi0g
IHRlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LWJyZWFr
LW9uLWZhaWx1cmUtdW5pdHRlc3QucHkgXAorICB0ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0
aW9ucy10ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LWNvbG9yLXRlc3QucHkgXAorICB0ZXN0
L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LWZpbHRlci11
bml0dGVzdC5weSBcCiAgIHRlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF9s
aXN0X3Rlc3RzX3VuaXR0ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF9vdXRwdXRfdGVzdC5weSBcCi0g
IHRlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQgXAotICB0ZXN0L2d0ZXN0X291
dHB1dF90ZXN0X2dvbGRlbl93aW4udHh0IFwKLSAgdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3QucHkg
XAotICB0ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3Rf
dW5pbml0aWFsaXplZF90ZXN0LnB5IFwKKyAgdGVzdC9nb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5p
dHRlc3QucHkgXAorICB0ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3QucHkgXAorICB0ZXN0L2dv
b2dsZXRlc3Qtb3V0cHV0LXRlc3RfZ29sZGVuX2xpbi50eHQgXAorICB0ZXN0L2dvb2dsZXRlc3Qt
c2h1ZmZsZS10ZXN0LnB5IFwKKyAgdGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5IFwKKyAgdGVzdC9n
b29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdC5weSBcCisgIHRlc3QvZ29vZ2xldGVzdC11
bmluaXRpYWxpemVkLXRlc3QucHkgXAogICB0ZXN0L2d0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5
IFwKICAgdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0LnB5IFwKLSAgdGVzdC9ydW5fdGVz
dHNfdXRpbC5weSBcCi0gIHRlc3QvcnVuX3Rlc3RzX3V0aWxfdGVzdC5weQorICB0ZXN0L2d0ZXN0
X3htbF90ZXN0X3V0aWxzLnB5CiAKICMgQ01ha2Ugc2NyaXB0CiBFWFRSQV9ESVNUICs9IFwKLSAg
Q01ha2VMaXN0cy50eHQKKyAgQ01ha2VMaXN0cy50eHQgXAorICBjbWFrZS9pbnRlcm5hbF91dGls
cy5jbWFrZQogCiAjIE1TVkMgcHJvamVjdCBmaWxlcwogRVhUUkFfRElTVCArPSBcCi0gIG1zdmMv
Z3Rlc3QtbWQuc2xuIFwKLSAgbXN2Yy9ndGVzdC5zbG4gXAotICBtc3ZjL2d0ZXN0LW1kLnZjcHJv
aiBcCi0gIG1zdmMvZ3Rlc3QudmNwcm9qIFwKLSAgbXN2Yy9ndGVzdF9tYWluLW1kLnZjcHJvaiBc
Ci0gIG1zdmMvZ3Rlc3RfbWFpbi52Y3Byb2ogXAotICBtc3ZjL2d0ZXN0X3Byb2RfdGVzdC1tZC52
Y3Byb2ogXAotICBtc3ZjL2d0ZXN0X3Byb2RfdGVzdC52Y3Byb2ogXAotICBtc3ZjL2d0ZXN0X3Vu
aXR0ZXN0LW1kLnZjcHJvaiBcCi0gIG1zdmMvZ3Rlc3RfdW5pdHRlc3QudmNwcm9qCisgIG1zdmMv
MjAxMC9ndGVzdC1tZC5zbG4gXAorICBtc3ZjLzIwMTAvZ3Rlc3QtbWQudmN4cHJvaiBcCisgIG1z
dmMvMjAxMC9ndGVzdC5zbG4gXAorICBtc3ZjLzIwMTAvZ3Rlc3QudmN4cHJvaiBcCisgIG1zdmMv
MjAxMC9ndGVzdF9tYWluLW1kLnZjeHByb2ogXAorICBtc3ZjLzIwMTAvZ3Rlc3RfbWFpbi52Y3hw
cm9qIFwKKyAgbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qIFwKKyAgbXN2Yy8y
MDEwL2d0ZXN0X3Byb2RfdGVzdC52Y3hwcm9qIFwKKyAgbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0
LW1kLnZjeHByb2ogXAorICBtc3ZjLzIwMTAvZ3Rlc3RfdW5pdHRlc3QudmN4cHJvagogCiAjIHhj
b2RlIHByb2plY3QgZmlsZXMKIEVYVFJBX0RJU1QgKz0gXApAQCAtMTMzLDMxICsxNDEsMjcgQEAg
RVhUUkFfRElTVCArPSBcCiAgIHhjb2RlL0NvbmZpZy9TdGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29u
ZmlnIFwKICAgeGNvZGUvQ29uZmlnL1Rlc3RUYXJnZXQueGNjb25maWcgXAogICB4Y29kZS9SZXNv
dXJjZXMvSW5mby5wbGlzdCBcCi0gIHhjb2RlL1NjcmlwdHMvdmVyc2lvbmdlbmVyYXRlLnB5IFwK
ICAgeGNvZGUvU2NyaXB0cy9ydW50ZXN0cy5zaCBcCisgIHhjb2RlL1NjcmlwdHMvdmVyc2lvbmdl
bmVyYXRlLnB5IFwKICAgeGNvZGUvZ3Rlc3QueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagogCiAj
IHhjb2RlIHNhbXBsZSBmaWxlcwogRVhUUkFfRElTVCArPSBcCiAgIHhjb2RlL1NhbXBsZXMvRnJh
bWV3b3JrU2FtcGxlL0luZm8ucGxpc3QgXAorICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBs
ZS9XaWRnZXRGcmFtZXdvcmsueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBcCiAgIHhjb2RlL1Nh
bXBsZXMvRnJhbWV3b3JrU2FtcGxlL3J1bnRlc3RzLnNoIFwKLSAgeGNvZGUvU2FtcGxlcy9GcmFt
ZXdvcmtTYW1wbGUvd2lkZ2V0X3Rlc3QuY2MgXAogICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1Nh
bXBsZS93aWRnZXQuY2MgXAogICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS93aWRnZXQu
aCBcCi0gIHhjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL1dpZGdldEZyYW1ld29yay54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisgIHhjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dp
ZGdldF90ZXN0LmNjCiAKICMgQysrQnVpbGRlciBwcm9qZWN0IGZpbGVzCiBFWFRSQV9ESVNUICs9
IFwKKyAgY29kZWdlYXIvZ3Rlc3QuY2Jwcm9qIFwKKyAgY29kZWdlYXIvZ3Rlc3QuZ3JvdXBwcm9q
IFwKICAgY29kZWdlYXIvZ3Rlc3RfYWxsLmNjIFwKICAgY29kZWdlYXIvZ3Rlc3RfbGluay5jYyBc
Ci0gIGNvZGVnZWFyL2d0ZXN0LmNicHJvaiBcCiAgIGNvZGVnZWFyL2d0ZXN0X21haW4uY2Jwcm9q
IFwKLSAgY29kZWdlYXIvZ3Rlc3RfdW5pdHRlc3QuY2Jwcm9qIFwKLSAgY29kZWdlYXIvZ3Rlc3Qu
Z3JvdXBwcm9qCi0KLSMgU2NyaXB0cyBhbmQgdXRpbGl0aWVzCi1iaW5fU0NSSVBUUyA9IHNjcmlw
dHMvZ3Rlc3QtY29uZmlnCi1DTEVBTkZJTEVTID0gJChiaW5fU0NSSVBUUykKKyAgY29kZWdlYXIv
Z3Rlc3RfdW5pdHRlc3QuY2Jwcm9qCiAKICMgRGlzdHJpYnV0ZSBhbmQgaW5zdGFsbCBNNCBtYWNy
bwogbTRkYXRhZGlyID0gJChkYXRhZGlyKS9hY2xvY2FsCkBAIC0xODEsMTUgKzE4NSwxNyBAQCBs
aWJfTFRMSUJSQVJJRVMgPSBsaWIvbGliZ3Rlc3QubGEgbGliL2xpYmd0ZXN0X21haW4ubGEKIAog
bGliX2xpYmd0ZXN0X2xhX1NPVVJDRVMgPSBzcmMvZ3Rlc3QtYWxsLmNjCiAKLXBrZ2luY2x1ZGVf
SEVBREVSUyA9IGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCBcCi0gICAgICAgICAgICAgICAgICAgICBp
bmNsdWRlL2d0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaCBcCi0gICAgICAgICAgICAgICAgICAgICBp
bmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCBcCi0gICAgICAgICAgICAgICAgICAgICBpbmNs
dWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaCBcCi0gICAgICAgICAgICAgICAgICAgICBpbmNs
dWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIFwKLSAgICAgICAgICAgICAgICAgICAgIGluY2x1
ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oIFwKLSAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUvZ3Rl
c3QvZ3Rlc3Qtc3BpLmggXAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS9ndGVzdC9ndGVz
dC10ZXN0LXBhcnQuaCBcCi0gICAgICAgICAgICAgICAgICAgICBpbmNsdWRlL2d0ZXN0L2d0ZXN0
LXR5cGVkLXRlc3QuaAorcGtnaW5jbHVkZV9IRUFERVJTID0gXAorICBpbmNsdWRlL2d0ZXN0L2d0
ZXN0LWRlYXRoLXRlc3QuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIFwKKyAg
aW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0
LXByaW50ZXJzLmggXAorICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXNwaS5oIFwKKyAgaW5jbHVkZS9n
dGVzdC9ndGVzdC10ZXN0LXBhcnQuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVz
dC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdC5oIFwKKyAgaW5jbHVkZS9ndGVzdC9ndGVzdF9w
cmVkX2ltcGwuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oCiAKIHBrZ2luY2x1ZGVf
aW50ZXJuYWxkaXIgPSAkKHBrZ2luY2x1ZGVkaXIpL2ludGVybmFsCiBwa2dpbmNsdWRlX2ludGVy
bmFsX0hFQURFUlMgPSBcCkBAIC0yMDAsNjEgKzIwNiw5NyBAQCBwa2dpbmNsdWRlX2ludGVybmFs
X0hFQURFUlMgPSBcCiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1n
ZW5lcmF0ZWQuaCBcCiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5o
IFwKICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmggXAorICBpbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oIFwKICAgaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC1zdHJpbmcuaCBcCiAgIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUu
aCBcCi0gIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgKKyAgaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCBcCisgIGluY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvY3VzdG9tL2d0ZXN0LmggXAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9n
dGVzdC1wb3J0LmggXAorICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wcmlu
dGVycy5oCiAKIGxpYl9saWJndGVzdF9tYWluX2xhX1NPVVJDRVMgPSBzcmMvZ3Rlc3RfbWFpbi5j
YwogbGliX2xpYmd0ZXN0X21haW5fbGFfTElCQUREID0gbGliL2xpYmd0ZXN0LmxhCiAKLSMgQnVs
aWQgcnVsZXMgZm9yIHNhbXBsZXMgYW5kIHRlc3RzLiBBdXRvbWFrZSdzIG5hbWluZyBmb3Igc29t
ZSBvZgorIyBCdWlsZCBydWxlcyBmb3Igc2FtcGxlcyBhbmQgdGVzdHMuIEF1dG9tYWtlJ3MgbmFt
aW5nIGZvciBzb21lIG9mCiAjIHRoZXNlIHZhcmlhYmxlcyBpc24ndCB0ZXJyaWJseSBvYnZpb3Vz
LCBzbyB0aGlzIGlzIGEgYnJpZWYKICMgcmVmZXJlbmNlOgogIwogIyBURVNUUyAtLSBQcm9ncmFt
cyBydW4gYXV0b21hdGljYWxseSBieSAibWFrZSBjaGVjayIKICMgY2hlY2tfUFJPR1JBTVMgLS0g
UHJvZ3JhbXMgYnVpbHQgYnkgIm1ha2UgY2hlY2siIGJ1dCBub3QgbmVjZXNzYXJpbHkgcnVuCiAK
LW5vaW5zdF9MVExJQlJBUklFUyA9IHNhbXBsZXMvbGlic2FtcGxlcy5sYQotCi1zYW1wbGVzX2xp
YnNhbXBsZXNfbGFfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlMS5jYyBcCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvc2FtcGxlMS5oIFwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2FtcGxlcy9zYW1wbGUyLmNjIFwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2FtcGxlcy9zYW1wbGUyLmggXAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzYW1wbGVzL3NhbXBsZTMtaW5sLmggXAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzYW1wbGVzL3NhbXBsZTQuY2MgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzYW1wbGVzL3NhbXBsZTQuaAotCiBURVNUUz0KIFRFU1RTX0VOVklST05NRU5UID0gR1RF
U1RfU09VUkNFX0RJUj0iJChzcmNkaXIpL3Rlc3QiIFwKICAgICAgICAgICAgICAgICAgICAgR1RF
U1RfQlVJTERfRElSPSIkKHRvcF9idWlsZGRpcikvdGVzdCIKIGNoZWNrX1BST0dSQU1TPQogCiAj
IEEgc2ltcGxlIHNhbXBsZSBvbiB1c2luZyBndGVzdC4KLVRFU1RTICs9IHNhbXBsZXMvc2FtcGxl
MV91bml0dGVzdAotY2hlY2tfUFJPR1JBTVMgKz0gc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0Ci1z
YW1wbGVzX3NhbXBsZTFfdW5pdHRlc3RfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlMV91bml0dGVz
dC5jYworVEVTVFMgKz0gc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3Nh
bXBsZTJfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlM191bml0dGVzdCBcCisgICAgc2Ft
cGxlcy9zYW1wbGU0X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QgXAor
ICAgIHNhbXBsZXMvc2FtcGxlNl91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGU3X3VuaXR0
ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxl
OV91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdAorY2hlY2tfUFJPR1JB
TVMgKz0gc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTJfdW5p
dHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlM191bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1w
bGU0X3VuaXR0ZXN0IFwKKyAgICBzYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QgXAorICAgIHNhbXBs
ZXMvc2FtcGxlNl91bml0dGVzdCBcCisgICAgc2FtcGxlcy9zYW1wbGU3X3VuaXR0ZXN0IFwKKyAg
ICBzYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QgXAorICAgIHNhbXBsZXMvc2FtcGxlOV91bml0dGVz
dCBcCisgICAgc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdAorCitzYW1wbGVzX3NhbXBsZTFfdW5p
dHRlc3RfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYyBzYW1wbGVzL3NhbXBs
ZTEuY2MKIHNhbXBsZXNfc2FtcGxlMV91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWlu
LmxhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvbGlic2FtcGxl
cy5sYQotCi0jIEFub3RoZXIgc2FtcGxlLiAgSXQgYWxzbyB2ZXJpZmllcyB0aGF0IGxpYmd0ZXN0
IHdvcmtzLgotVEVTVFMgKz0gc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdAotY2hlY2tfUFJPR1JB
TVMgKz0gc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBsZTJfdW5pdHRlc3RfU09VUkNF
UyA9IHNhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYyBzYW1wbGVzL3NhbXBsZTIuY2MKK3NhbXBs
ZXNfc2FtcGxlMl91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWluLmxhIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQorc2FtcGxlc19zYW1w
bGUzX3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MKK3NhbXBs
ZXNfc2FtcGxlM191bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdF9tYWluLmxhIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQorc2FtcGxlc19zYW1w
bGU0X3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QuY2Mgc2FtcGxl
cy9zYW1wbGU0LmNjCitzYW1wbGVzX3NhbXBsZTRfdW5pdHRlc3RfTERBREQgPSBsaWIvbGliZ3Rl
c3RfbWFpbi5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWIvbGliZ3Rl
c3QubGEKK3NhbXBsZXNfc2FtcGxlNV91bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGU1
X3VuaXR0ZXN0LmNjIHNhbXBsZXMvc2FtcGxlMS5jYworc2FtcGxlc19zYW1wbGU1X3VuaXR0ZXN0
X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBsZTZfdW5pdHRlc3RfU09VUkNF
UyA9IHNhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYworc2FtcGxlc19zYW1wbGU2X3VuaXR0ZXN0
X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBsZTdfdW5pdHRlc3RfU09VUkNF
UyA9IHNhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYworc2FtcGxlc19zYW1wbGU3X3VuaXR0ZXN0
X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCitzYW1wbGVzX3NhbXBsZThfdW5pdHRlc3RfU09VUkNF
UyA9IHNhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYworc2FtcGxlc19zYW1wbGU4X3VuaXR0ZXN0
X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCisKKyMgQWxzbyB2ZXJpZnkgdGhhdCBsaWJndGVzdCB3
b3JrcyBieSBpdHNlbGYuCitzYW1wbGVzX3NhbXBsZTlfdW5pdHRlc3RfU09VUkNFUyA9IHNhbXBs
ZXMvc2FtcGxlOV91bml0dGVzdC5jYworc2FtcGxlc19zYW1wbGU5X3VuaXR0ZXN0X0xEQUREID0g
bGliL2xpYmd0ZXN0LmxhCiBzYW1wbGVzX3NhbXBsZTEwX3VuaXR0ZXN0X1NPVVJDRVMgPSBzYW1w
bGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjCiBzYW1wbGVzX3NhbXBsZTEwX3VuaXR0ZXN0X0xEQURE
ID0gbGliL2xpYmd0ZXN0LmxhCiAKICMgVGhpcyB0ZXN0cyBtb3N0IGNvbnN0cnVjdHMgb2YgZ3Rl
c3QgYW5kIHZlcmlmaWVzIHRoYXQgbGliZ3Rlc3RfbWFpbgotIyB3b3Jrcy4KKyMgYW5kIGxpYmd0
ZXN0IHdvcmsuCiBURVNUUyArPSB0ZXN0L2d0ZXN0X2FsbF90ZXN0CiBjaGVja19QUk9HUkFNUyAr
PSB0ZXN0L2d0ZXN0X2FsbF90ZXN0CiB0ZXN0X2d0ZXN0X2FsbF90ZXN0X1NPVVJDRVMgPSB0ZXN0
L2d0ZXN0X2FsbF90ZXN0LmNjCi10ZXN0X2d0ZXN0X2FsbF90ZXN0X0xEQUREID0gbGliL2xpYmd0
ZXN0X21haW4ubGEKK3Rlc3RfZ3Rlc3RfYWxsX3Rlc3RfTERBREQgPSBsaWIvbGliZ3Rlc3RfbWFp
bi5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGliL2xpYmd0ZXN0LmxhCiAKICMg
VGVzdHMgdGhhdCBmdXNlZCBndGVzdCBmaWxlcyBjb21waWxlIGFuZCB3b3JrLgogRlVTRURfR1RF
U1RfU1JDID0gXAogICBmdXNlZC1zcmMvZ3Rlc3QvZ3Rlc3QtYWxsLmNjIFwKLSAgZnVzZWQtc3Jj
L2d0ZXN0L2d0ZXN0X21haW4uY2MgXAotICBmdXNlZC1zcmMvZ3Rlc3QvZ3Rlc3QuaAorICBmdXNl
ZC1zcmMvZ3Rlc3QvZ3Rlc3QuaCBcCisgIGZ1c2VkLXNyYy9ndGVzdC9ndGVzdF9tYWluLmNjCiAK
K2lmIEhBVkVfUFlUSE9OCiBURVNUUyArPSB0ZXN0L2Z1c2VkX2d0ZXN0X3Rlc3QKIGNoZWNrX1BS
T0dSQU1TICs9IHRlc3QvZnVzZWRfZ3Rlc3RfdGVzdAogdGVzdF9mdXNlZF9ndGVzdF90ZXN0X1NP
VVJDRVMgPSAkKEZVU0VEX0dURVNUX1NSQykgXApAQCAtMjc4LDcgKzMyMCwyMCBAQCBmdXNlZC1n
dGVzdDogJChwa2dpbmNsdWRlX0hFQURFUlMpICQocGtnaW5jbHVkZV9pbnRlcm5hbF9IRUFERVJT
KSBcCiAKIG1haW50YWluZXItY2xlYW4tbG9jYWw6CiAJcm0gLXJmICIkKHNyY2RpcikvZnVzZWQt
c3JjIgorZW5kaWYKIAogIyBEZWF0aCB0ZXN0cyBtYXkgcHJvZHVjZSBjb3JlIGR1bXBzIGluIHRo
ZSBidWlsZCBkaXJlY3RvcnkuIEluIGNhc2UKICMgdGhpcyBoYXBwZW5zLCBjbGVhbiB0aGVtIHRv
IGtlZXAgZGlzdGNsZWFuY2hlY2sgaGFwcHkuCi1DTEVBTkZJTEVTICs9IGNvcmUKK0NMRUFORklM
RVMgPSBjb3JlCisKKyMgRGlzYWJsZXMgJ21ha2UgaW5zdGFsbCcgYXMgaW5zdGFsbGluZyBhIGNv
bXBpbGVkIHZlcnNpb24gb2YgR29vZ2xlCisjIFRlc3QgY2FuIGxlYWQgdG8gdW5kZWZpbmVkIGJl
aGF2aW9yIGR1ZSB0byB2aW9sYXRpb24gb2YgdGhlCisjIE9uZS1EZWZpbml0aW9uIFJ1bGUuCisK
K2luc3RhbGwtZXhlYy1sb2NhbDoKKwllY2hvICInbWFrZSBpbnN0YWxsJyBpcyBkYW5nZXJvdXMg
YW5kIG5vdCBzdXBwb3J0ZWQuIEluc3RlYWQsIHNlZSBSRUFETUUgZm9yIGhvdyB0byBpbnRlZ3Jh
dGUgR29vZ2xlIFRlc3QgaW50byB5b3VyIGJ1aWxkIHN5c3RlbS4iCisJZmFsc2UKKworaW5zdGFs
bC1kYXRhLWxvY2FsOgorCWVjaG8gIidtYWtlIGluc3RhbGwnIGlzIGRhbmdlcm91cyBhbmQgbm90
IHN1cHBvcnRlZC4gSW5zdGVhZCwgc2VlIFJFQURNRSBmb3IgaG93IHRvIGludGVncmF0ZSBHb29n
bGUgVGVzdCBpbnRvIHlvdXIgYnVpbGQgc3lzdGVtLiIKKwlmYWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVBRE1FIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVB
RE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzYxMTkwMDIwOTkxNTBkNzE1NzQ5
YTE2ZTAzYzJmNTczNjg2YmI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRQorKysgL2Rldi9udWxsCkBA
IC0xLDQxNyArMCwwIEBACi1Hb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrCi09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0KLWh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0
LwotCi1PdmVydmlldwotLS0tLS0tLS0KLQotR29vZ2xlJ3MgZnJhbWV3b3JrIGZvciB3cml0aW5n
IEMrKyB0ZXN0cyBvbiBhIHZhcmlldHkgb2YgcGxhdGZvcm1zCi0oTGludXgsIE1hYyBPUyBYLCBX
aW5kb3dzLCBXaW5kb3dzIENFLCBTeW1iaWFuLCBldGMpLiAgQmFzZWQgb24gdGhlCi14VW5pdCBh
cmNoaXRlY3R1cmUuICBTdXBwb3J0cyBhdXRvbWF0aWMgdGVzdCBkaXNjb3ZlcnksIGEgcmljaCBz
ZXQgb2YKLWFzc2VydGlvbnMsIHVzZXItZGVmaW5lZCBhc3NlcnRpb25zLCBkZWF0aCB0ZXN0cywg
ZmF0YWwgYW5kIG5vbi1mYXRhbAotZmFpbHVyZXMsIHZhcmlvdXMgb3B0aW9ucyBmb3IgcnVubmlu
ZyB0aGUgdGVzdHMsIGFuZCBYTUwgdGVzdCByZXBvcnQKLWdlbmVyYXRpb24uCi0KLVBsZWFzZSBz
ZWUgdGhlIHByb2plY3QgcGFnZSBhYm92ZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhcyB3ZWxsIGFz
IHRoZQotbWFpbGluZyBsaXN0IGZvciBxdWVzdGlvbnMsIGRpc2N1c3Npb25zLCBhbmQgZGV2ZWxv
cG1lbnQuICBUaGVyZSBpcwotYWxzbyBhbiBJUkMgY2hhbm5lbCBvbiBPRlRDIChpcmMub2Z0Yy5u
ZXQpICNndGVzdCBhdmFpbGFibGUuICBQbGVhc2UKLWpvaW4gdXMhCi0KLVJlcXVpcmVtZW50cyBm
b3IgRW5kIFVzZXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Hb29nbGUgVGVzdCBp
cyBkZXNpZ25lZCB0byBoYXZlIGZhaXJseSBtaW5pbWFsIHJlcXVpcmVtZW50cyB0byBidWlsZAot
YW5kIHVzZSB3aXRoIHlvdXIgcHJvamVjdHMsIGJ1dCB0aGVyZSBhcmUgc29tZS4gIEN1cnJlbnRs
eSwgd2Ugc3VwcG9ydAotTGludXgsIFdpbmRvd3MsIE1hYyBPUyBYLCBhbmQgQ3lnd2luLiAgV2Ug
d2lsbCBhbHNvIG1ha2Ugb3VyIGJlc3QKLWVmZm9ydCB0byBzdXBwb3J0IG90aGVyIHBsYXRmb3Jt
cyAoZS5nLiBTb2xhcmlzLCBBSVgsIGFuZCB6L09TKS4KLUhvd2V2ZXIsIHNpbmNlIGNvcmUgbWVt
YmVycyBvZiB0aGUgR29vZ2xlIFRlc3QgcHJvamVjdCBoYXZlIG5vIGFjY2VzcwotdG8gdGhlc2Ug
cGxhdGZvcm1zLCBHb29nbGUgVGVzdCBtYXkgaGF2ZSBvdXRzdGFuZGluZyBpc3N1ZXMgdGhlcmUu
ICBJZgoteW91IG5vdGljZSBhbnkgcHJvYmxlbXMgb24geW91ciBwbGF0Zm9ybSwgcGxlYXNlIG5v
dGlmeQotZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tLiAgUGF0Y2hlcyBmb3Ig
Zml4aW5nIHRoZW0gYXJlCi1ldmVuIG1vcmUgd2VsY29tZSEKLQotIyMjIExpbnV4IFJlcXVpcmVt
ZW50cyAjIyMKLQotVGhlc2UgYXJlIHRoZSBiYXNlIHJlcXVpcmVtZW50cyB0byBidWlsZCBhbmQg
dXNlIEdvb2dsZSBUZXN0IGZyb20gYSBzb3VyY2UKLXBhY2thZ2UgKGFzIGRlc2NyaWJlZCBiZWxv
dyk6Ci0gICogR05VLWNvbXBhdGlibGUgTWFrZSBvciBnbWFrZQotICAqIFBPU0lYLXN0YW5kYXJk
IHNoZWxsCi0gICogUE9TSVgoLTIpIFJlZ3VsYXIgRXhwcmVzc2lvbnMgKHJlZ2V4LmgpCi0gICog
QSBDKys5OC1zdGFuZGFyZC1jb21wbGlhbnQgY29tcGlsZXIKLQotIyMjIFdpbmRvd3MgUmVxdWly
ZW1lbnRzICMjIwotCi0gICogTWljcm9zb2Z0IFZpc3VhbCBDKysgNy4xIG9yIG5ld2VyCi0KLSMj
IyBDeWd3aW4gUmVxdWlyZW1lbnRzICMjIwotCi0gICogQ3lnd2luIDEuNS4yNS0xNCBvciBuZXdl
cgotCi0jIyMgTWFjIE9TIFggUmVxdWlyZW1lbnRzICMjIwotCi0gICogTWFjIE9TIFggMTAuNCBU
aWdlciBvciBuZXdlcgotICAqIERldmVsb3BlciBUb29scyBJbnN0YWxsZWQKLQotQWxzbywgeW91
J2xsIG5lZWQgQ01ha2UgMi42LjQgb3IgaGlnaGVyIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHRoZQot
c2FtcGxlcyB1c2luZyB0aGUgcHJvdmlkZWQgQ01ha2Ugc2NyaXB0LCByZWdhcmRsZXNzIG9mIHRo
ZSBwbGF0Zm9ybS4KLQotUmVxdWlyZW1lbnRzIGZvciBDb250cmlidXRvcnMKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0KLVdlIHdlbGNvbWUgcGF0Y2hlcy4gIElmIHlvdSBwbGFuIHRv
IGNvbnRyaWJ1dGUgYSBwYXRjaCwgeW91IG5lZWQgdG8KLWJ1aWxkIEdvb2dsZSBUZXN0IGFuZCBp
dHMgb3duIHRlc3RzIGZyb20gYW4gU1ZOIGNoZWNrb3V0IChkZXNjcmliZWQKLWJlbG93KSwgd2hp
Y2ggaGFzIGZ1cnRoZXIgcmVxdWlyZW1lbnRzOgotCi0gICogUHl0aG9uIHZlcnNpb24gMi4zIG9y
IG5ld2VyIChmb3IgcnVubmluZyBzb21lIG9mIHRoZSB0ZXN0cyBhbmQKLSAgICByZS1nZW5lcmF0
aW5nIGNlcnRhaW4gc291cmNlIGZpbGVzIGZyb20gdGVtcGxhdGVzKQotICAqIENNYWtlIDIuNi40
IG9yIG5ld2VyCi0KLUdldHRpbmcgdGhlIFNvdXJjZQotLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRo
ZXJlIGFyZSB0d28gcHJpbWFyeSB3YXlzIG9mIGdldHRpbmcgR29vZ2xlIFRlc3QncyBzb3VyY2Ug
Y29kZTogeW91Ci1jYW4gZG93bmxvYWQgYSBzdGFibGUgc291cmNlIHJlbGVhc2UgaW4geW91ciBw
cmVmZXJyZWQgYXJjaGl2ZSBmb3JtYXQsCi1vciBkaXJlY3RseSBjaGVjayBvdXQgdGhlIHNvdXJj
ZSBmcm9tIG91ciBTdWJ2ZXJzaW9uIChTVk4pIHJlcG9zaXRhcnkuCi1UaGUgU1ZOIGNoZWNrb3V0
IHJlcXVpcmVzIGEgZmV3IGV4dHJhIHN0ZXBzIGFuZCBzb21lIGV4dHJhIHNvZnR3YXJlCi1wYWNr
YWdlcyBvbiB5b3VyIHN5c3RlbSwgYnV0IGxldHMgeW91IHRyYWNrIHRoZSBsYXRlc3QgZGV2ZWxv
cG1lbnQgYW5kCi1tYWtlIHBhdGNoZXMgbXVjaCBtb3JlIGVhc2lseSwgc28gd2UgaGlnaGx5IGVu
Y291cmFnZSBpdC4KLQotIyMjIFNvdXJjZSBQYWNrYWdlICMjIwotCi1Hb29nbGUgVGVzdCBpcyBy
ZWxlYXNlZCBpbiB2ZXJzaW9uZWQgc291cmNlIHBhY2thZ2VzIHdoaWNoIGNhbiBiZQotZG93bmxv
YWRlZCBmcm9tIHRoZSBkb3dubG9hZCBwYWdlIFsxXS4gIFNldmVyYWwgZGlmZmVyZW50IGFyY2hp
dmUKLWZvcm1hdHMgYXJlIHByb3ZpZGVkLCBidXQgdGhlIG9ubHkgZGlmZmVyZW5jZSBpcyB0aGUg
dG9vbHMgdXNlZCB0bwotbWFuaXB1bGF0ZSB0aGVtLCBhbmQgdGhlIHNpemUgb2YgdGhlIHJlc3Vs
dGluZyBmaWxlLiAgRG93bmxvYWQKLXdoaWNoZXZlciB5b3UgYXJlIG1vc3QgY29tZm9ydGFibGUg
d2l0aC4KLQotICBbMV0gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3QvZG93bmxv
YWRzL2xpc3QKLQotT25jZSB0aGUgcGFja2FnZSBpcyBkb3dubG9hZGVkLCBleHBhbmQgaXQgdXNp
bmcgd2hpY2hldmVyIHRvb2xzIHlvdQotcHJlZmVyIGZvciB0aGF0IHR5cGUuICBUaGlzIHdpbGwg
cmVzdWx0IGluIGEgbmV3IGRpcmVjdG9yeSB3aXRoIHRoZQotbmFtZSAiZ3Rlc3QtWC5ZLloiIHdo
aWNoIGNvbnRhaW5zIGFsbCBvZiB0aGUgc291cmNlIGNvZGUuICBIZXJlIGFyZQotc29tZSBleGFt
cGxlcyBvbiBMaW51eDoKLQotICB0YXIgLXh2emYgZ3Rlc3QtWC5ZLloudGFyLmd6Ci0gIHRhciAt
eHZqZiBndGVzdC1YLlkuWi50YXIuYnoyCi0gIHVuemlwIGd0ZXN0LVguWS5aLnppcAotCi0jIyMg
U1ZOIENoZWNrb3V0ICMjIwotCi1UbyBjaGVjayBvdXQgdGhlIG1haW4gYnJhbmNoIChhbHNvIGtu
b3duIGFzIHRoZSAidHJ1bmsiKSBvZiBHb29nbGUKLVRlc3QsIHJ1biB0aGUgZm9sbG93aW5nIFN1
YnZlcnNpb24gY29tbWFuZDoKLQotICBzdm4gY2hlY2tvdXQgaHR0cDovL2dvb2dsZXRlc3QuZ29v
Z2xlY29kZS5jb20vc3ZuL3RydW5rLyBndGVzdC1zdm4KLQotU2V0dGluZyB1cCB0aGUgQnVpbGQK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRvIGJ1aWxkIEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRl
c3RzIHRoYXQgdXNlIGl0LCB5b3UgbmVlZCB0byB0ZWxsIHlvdXIKLWJ1aWxkIHN5c3RlbSB3aGVy
ZSB0byBmaW5kIGl0cyBoZWFkZXJzIGFuZCBzb3VyY2UgZmlsZXMuICBUaGUgZXhhY3QKLXdheSB0
byBkbyBpdCBkZXBlbmRzIG9uIHdoaWNoIGJ1aWxkIHN5c3RlbSB5b3UgdXNlLCBhbmQgaXMgdXN1
YWxseQotc3RyYWlnaHRmb3J3YXJkLgotCi0jIyMgR2VuZXJpYyBCdWlsZCBJbnN0cnVjdGlvbnMg
IyMjCi0KLVN1cHBvc2UgeW91IHB1dCBHb29nbGUgVGVzdCBpbiBkaXJlY3RvcnkgJHtHVEVTVF9E
SVJ9LiAgVG8gYnVpbGQgaXQsCi1jcmVhdGUgYSBsaWJyYXJ5IGJ1aWxkIHRhcmdldCAob3IgYSBw
cm9qZWN0IGFzIGNhbGxlZCBieSBWaXN1YWwgU3R1ZGlvCi1hbmQgWGNvZGUpIHRvIGNvbXBpbGUK
LQotICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LWFsbC5jYwotCi13aXRoCi0KLSAgJHtHVEVTVF9E
SVJ9L2luY2x1ZGUgYW5kICR7R1RFU1RfRElSfQotCi1pbiB0aGUgaGVhZGVyIHNlYXJjaCBwYXRo
LiAgQXNzdW1pbmcgYSBMaW51eC1saWtlIHN5c3RlbSBhbmQgZ2NjLAotc29tZXRoaW5nIGxpa2Ug
dGhlIGZvbGxvd2luZyB3aWxsIGRvOgotCi0gIGcrKyAtSSR7R1RFU1RfRElSfS9pbmNsdWRlIC1J
JHtHVEVTVF9ESVJ9IC1jICR7R1RFU1RfRElSfS9zcmMvZ3Rlc3QtYWxsLmNjCi0gIGFyIC1ydiBs
aWJndGVzdC5hIGd0ZXN0LWFsbC5vCi0KLU5leHQsIHlvdSBzaG91bGQgY29tcGlsZSB5b3VyIHRl
c3Qgc291cmNlIGZpbGUgd2l0aAotJHtHVEVTVF9ESVJ9L2luY2x1ZGUgaW4gdGhlIGhlYWRlciBz
ZWFyY2ggcGF0aCwgYW5kIGxpbmsgaXQgd2l0aCBndGVzdAotYW5kIGFueSBvdGhlciBuZWNlc3Nh
cnkgbGlicmFyaWVzOgotCi0gIGcrKyAtSSR7R1RFU1RfRElSfS9pbmNsdWRlIHBhdGgvdG8veW91
cl90ZXN0LmNjIGxpYmd0ZXN0LmEgLW8geW91cl90ZXN0Ci0KLUFzIGFuIGV4YW1wbGUsIHRoZSBt
YWtlLyBkaXJlY3RvcnkgY29udGFpbnMgYSBNYWtlZmlsZSB0aGF0IHlvdSBjYW4KLXVzZSB0byBi
dWlsZCBHb29nbGUgVGVzdCBvbiBzeXN0ZW1zIHdoZXJlIEdOVSBtYWtlIGlzIGF2YWlsYWJsZQot
KGUuZy4gTGludXgsIE1hYyBPUyBYLCBhbmQgQ3lnd2luKS4gIEl0IGRvZXNuJ3QgdHJ5IHRvIGJ1
aWxkIEdvb2dsZQotVGVzdCdzIG93biB0ZXN0cy4gIEluc3RlYWQsIGl0IGp1c3QgYnVpbGRzIHRo
ZSBHb29nbGUgVGVzdCBsaWJyYXJ5IGFuZAotYSBzYW1wbGUgdGVzdC4gIFlvdSBjYW4gdXNlIGl0
IGFzIGEgc3RhcnRpbmcgcG9pbnQgZm9yIHlvdXIgb3duIGJ1aWxkCi1zY3JpcHQuCi0KLUlmIHRo
ZSBkZWZhdWx0IHNldHRpbmdzIGFyZSBjb3JyZWN0IGZvciB5b3VyIGVudmlyb25tZW50LCB0aGUK
LWZvbGxvd2luZyBjb21tYW5kcyBzaG91bGQgc3VjY2VlZDoKLQotICBjZCAke0dURVNUX0RJUn0v
bWFrZQotICBtYWtlCi0gIC4vc2FtcGxlMV91bml0dGVzdAotCi1JZiB5b3Ugc2VlIGVycm9ycywg
dHJ5IHRvIHR3ZWFrIHRoZSBjb250ZW50cyBvZiBtYWtlL01ha2VmaWxlIHRvIG1ha2UKLXRoZW0g
Z28gYXdheS4gIFRoZXJlIGFyZSBpbnN0cnVjdGlvbnMgaW4gbWFrZS9NYWtlZmlsZSBvbiBob3cg
dG8gZG8KLWl0LgotCi0jIyMgVXNpbmcgQ01ha2UgIyMjCi0KLUdvb2dsZSBUZXN0IGNvbWVzIHdp
dGggYSBDTWFrZSBidWlsZCBzY3JpcHQgKENNYWtlTGlzdHMudHh0KSB0aGF0IGNhbgotYmUgdXNl
ZCBvbiBhIHdpZGUgcmFuZ2Ugb2YgcGxhdGZvcm1zICgiQyIgc3RhbmRzIGZvciBjcm9zcy1wbGF0
b2ZybS4pLgotSWYgeW91IGRvbid0IGhhdmUgQ01ha2UgaW5zdGFsbGVkIGFscmVhZHksIHlvdSBj
YW4gZG93bmxvYWQgaXQgZm9yCi1mcmVlIGZyb20gaHR0cDovL3d3dy5jbWFrZS5vcmcvLgotCi1D
TWFrZSB3b3JrcyBieSBnZW5lcmF0aW5nIG5hdGl2ZSBtYWtlZmlsZXMgb3IgYnVpbGQgcHJvamVj
dHMgdGhhdCBjYW4KLWJlIHVzZWQgaW4gdGhlIGNvbXBpbGVyIGVudmlyb25tZW50IG9mIHlvdXIg
Y2hvaWNlLiAgVGhlIHR5cGljYWwKLXdvcmtmbG93IHN0YXJ0cyB3aXRoOgotCi0gIG1rZGlyIG15
YnVpbGQgICAgICAgIyBDcmVhdGUgYSBkaXJlY3RvcnkgdG8gaG9sZCB0aGUgYnVpbGQgb3V0cHV0
LgotICBjZCBteWJ1aWxkCi0gIGNtYWtlICR7R1RFU1RfRElSfSAgIyBHZW5lcmF0ZSBuYXRpdmUg
YnVpbGQgc2NyaXB0cy4KLQotSWYgeW91IHdhbnQgdG8gYnVpbGQgR29vZ2xlIFRlc3QncyBzYW1w
bGVzLCB5b3Ugc2hvdWxkIHJlcGxhY2UgdGhlCi1sYXN0IGNvbW1hbmQgd2l0aAotCi0gIGNtYWtl
IC1EYnVpbGRfZ3Rlc3Rfc2FtcGxlcz1PTiAke0dURVNUX0RJUn0KLQotSWYgeW91IGFyZSBvbiBh
ICpuaXggc3lzdGVtLCB5b3Ugc2hvdWxkIG5vdyBzZWUgYSBNYWtlZmlsZSBpbiB0aGUKLWN1cnJl
bnQgZGlyZWN0b3J5LiAgSnVzdCB0eXBlICdtYWtlJyB0byBidWlsZCBndGVzdC4KLQotSWYgeW91
IHVzZSBXaW5kb3dzIGFuZCBoYXZlIFZpc3R1YWwgU3R1ZGlvIGluc3RhbGxlZCwgYSBndGVzdC5z
bG4gZmlsZQotYW5kIHNldmVyYWwgLnZjcHJvaiBmaWxlcyB3aWxsIGJlIGNyZWF0ZWQuICBZb3Ug
Y2FuIHRoZW4gYnVpbGQgdGhlbQotdXNpbmcgVmlzdWFsIFN0dWRpby4KLQotT24gTWFjIE9TIFgg
d2l0aCBYY29kZSBpbnN0YWxsZWQsIGEgLnhjb2RlcHJvaiBmaWxlIHdpbGwgYmUgZ2VuZXJhdGVk
LgotCi0jIyMgTGVnYWN5IEJ1aWxkIFNjcmlwdHMgIyMjCi0KLUJlZm9yZSBzZXR0bGluZyBvbiBD
TWFrZSwgd2UgaGF2ZSBiZWVuIHByb3ZpZGluZyBoYW5kLW1haW50YWluZWQgYnVpbGQKLXByb2pl
Y3RzL3NjcmlwdHMgZm9yIFZpc3VhbCBTdHVkaW8sIFhjb2RlLCBhbmQgQXV0b3Rvb2xzLiAgV2hp
bGUgd2UKLWNvbnRpbnVlIHRvIHByb3ZpZGUgdGhlbSBmb3IgY29udmVuaWVuY2UsIHRoZXkgYXJl
IG5vdCBhY3RpdmVseQotbWFpbnRhaW5lZCBhbnkgbW9yZS4gIFdlIGhpZ2hseSByZWNvbW1lbmQg
dGhhdCB5b3UgZm9sbG93IHRoZQotaW5zdHJ1Y3Rpb25zIGluIHRoZSBwcmV2aW91cyB0d28gc2Vj
dGlvbnMgdG8gaW50ZWdyYXRlIEdvb2dsZSBUZXN0Ci13aXRoIHlvdXIgZXhpc3RpbmcgYnVpbGQg
c3lzdGVtLgotCi1JZiB5b3Ugc3RpbGwgbmVlZCB0byB1c2UgdGhlIGxlZ2FjeSBidWlsZCBzY3Jp
cHRzLCBoZXJlJ3MgaG93OgotCi1UaGUgbXN2Y1wgZm9sZGVyIGNvbnRhaW5zIHR3byBzb2x1dGlv
bnMgd2l0aCBWaXN1YWwgQysrIHByb2plY3RzLgotT3BlbiB0aGUgZ3Rlc3Quc2xuIG9yIGd0ZXN0
LW1kLnNsbiBmaWxlIHVzaW5nIFZpc3VhbCBTdHVkaW8sIGFuZCB5b3UKLWFyZSByZWFkeSB0byBi
dWlsZCBHb29nbGUgVGVzdCB0aGUgc2FtZSB3YXkgeW91IGJ1aWxkIGFueSBWaXN1YWwKLVN0dWRp
byBwcm9qZWN0LiAgRmlsZXMgdGhhdCBoYXZlIG5hbWVzIGVuZGluZyB3aXRoIC1tZCB1c2UgRExM
Ci12ZXJzaW9ucyBvZiBNaWNyb3NvZnQgcnVudGltZSBsaWJyYXJpZXMgKHRoZSAvTUQgb3IgdGhl
IC9NRGQgY29tcGlsZXIKLW9wdGlvbikuICBGaWxlcyB3aXRob3V0IHRoYXQgc3VmZml4IHVzZSBz
dGF0aWMgdmVyc2lvbnMgb2YgdGhlIHJ1bnRpbWUKLWxpYnJhcmllcyAodGhlIC9NVCBvciB0aGUg
L01UZCBvcHRpb24pLiAgUGxlYXNlIG5vdGUgdGhhdCBvbmUgbXVzdCB1c2UKLXRoZSBzYW1lIG9w
dGlvbiB0byBjb21waWxlIGJvdGggZ3Rlc3QgYW5kIHRoZSB0ZXN0IGNvZGUuICBJZiB5b3UgdXNl
Ci1WaXN1YWwgU3R1ZGlvIDIwMDUgb3IgYWJvdmUsIHdlIHJlY29tbWVuZCB0aGUgLW1kIHZlcnNp
b24gYXMgL01EIGlzCi10aGUgZGVmYXVsdCBmb3IgbmV3IHByb2plY3RzIGluIHRoZXNlIHZlcnNp
b25zIG9mIFZpc3VhbCBTdHVkaW8uCi0KLU9uIE1hYyBPUyBYLCBvcGVuIHRoZSBndGVzdC54Y29k
ZXByb2ogaW4gdGhlIHhjb2RlLyBmb2xkZXIgdXNpbmcKLVhjb2RlLiAgQnVpbGQgdGhlICJndGVz
dCIgdGFyZ2V0LiAgVGhlIHVuaXZlcnNhbCBiaW5hcnkgZnJhbWV3b3JrIHdpbGwKLWVuZCB1cCBp
biB5b3VyIHNlbGVjdGVkIGJ1aWxkIGRpcmVjdG9yeSAoc2VsZWN0ZWQgaW4gdGhlIFhjb2RlCi0i
UHJlZmVyZW5jZXMuLi4iIC0+ICJCdWlsZGluZyIgcGFuZSBhbmQgZGVmYXVsdHMgdG8geGNvZGUv
YnVpbGQpLgotQWx0ZXJuYXRpdmVseSwgYXQgdGhlIGNvbW1hbmQgbGluZSwgZW50ZXI6Ci0KLSAg
eGNvZGVidWlsZAotCi1UaGlzIHdpbGwgYnVpbGQgdGhlICJSZWxlYXNlIiBjb25maWd1cmF0aW9u
IG9mIGd0ZXN0LmZyYW1ld29yayBpbiB5b3VyCi1kZWZhdWx0IGJ1aWxkIGxvY2F0aW9uLiAgU2Vl
IHRoZSAieGNvZGVidWlsZCIgbWFuIHBhZ2UgZm9yIG1vcmUKLWluZm9ybWF0aW9uIGFib3V0IGJ1
aWxkaW5nIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBhbmQgYnVpbGRpbmcgaW4KLWRpZmZlcmVu
dCBsb2NhdGlvbnMuCi0KLVR3ZWFraW5nIEdvb2dsZSBUZXN0Ci0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCi1Hb29nbGUgVGVzdCBjYW4gYmUgdXNlZCBpbiBkaXZlcnNlIGVudmlyb25tZW50cy4gIFRo
ZSBkZWZhdWx0Ci1jb25maWd1cmF0aW9uIG1heSBub3Qgd29yayAob3IgbWF5IG5vdCB3b3JrIHdl
bGwpIG91dCBvZiB0aGUgYm94IGluCi1zb21lIGVudmlyb25tZW50cy4gIEhvd2V2ZXIsIHlvdSBj
YW4gZWFzaWx5IHR3ZWFrIEdvb2dsZSBUZXN0IGJ5Ci1kZWZpbmluZyBjb250cm9sIG1hY3JvcyBv
biB0aGUgY29tcGlsZXIgY29tbWFuZCBsaW5lLiAgR2VuZXJhbGx5LAotdGhlc2UgbWFjcm9zIGFy
ZSBuYW1lZCBsaWtlIEdURVNUX1hZWiBhbmQgeW91IGRlZmluZSB0aGVtIHRvIGVpdGhlciAxCi1v
ciAwIHRvIGVuYWJsZSBvciBkaXNhYmxlIGEgY2VydGFpbiBmZWF0dXJlLgotCi1XZSBsaXN0IHRo
ZSBtb3N0IGZyZXF1ZW50bHkgdXNlZCBtYWNyb3MgYmVsb3cuICBGb3IgYSBjb21wbGV0ZSBsaXN0
LAotc2VlIGZpbGUgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmguCi0KLSMjIyBD
aG9vc2luZyBhIFRSMSBUdXBsZSBMaWJyYXJ5ICMjIwotCi1Tb21lIEdvb2dsZSBUZXN0IGZlYXR1
cmVzIHJlcXVpcmUgdGhlIEMrKyBUZWNobmljYWwgUmVwb3J0IDEgKFRSMSkKLXR1cGxlIGxpYnJh
cnksIHdoaWNoIGlzIG5vdCB5ZXQgYXZhaWxhYmxlIHdpdGggYWxsIGNvbXBpbGVycy4gIFRoZQot
Z29vZCBuZXdzIGlzIHRoYXQgR29vZ2xlIFRlc3QgaW1wbGVtZW50cyBhIHN1YnNldCBvZiBUUjEg
dHVwbGUgdGhhdCdzCi1lbm91Z2ggZm9yIGl0cyBvd24gbmVlZCwgYW5kIHdpbGwgYXV0b21hdGlj
YWxseSB1c2UgdGhpcyB3aGVuIHRoZQotY29tcGlsZXIgZG9lc24ndCBwcm92aWRlIFRSMSB0dXBs
ZS4KLQotVXN1YWxseSB5b3UgZG9uJ3QgbmVlZCB0byBjYXJlIGFib3V0IHdoaWNoIHR1cGxlIGxp
YnJhcnkgR29vZ2xlIFRlc3QKLXVzZXMuICBIb3dldmVyLCBpZiB5b3VyIHByb2plY3QgYWxyZWFk
eSB1c2VzIFRSMSB0dXBsZSwgeW91IG5lZWQgdG8KLXRlbGwgR29vZ2xlIFRlc3QgdG8gdXNlIHRo
ZSBzYW1lIFRSMSB0dXBsZSBsaWJyYXJ5IHRoZSByZXN0IG9mIHlvdXIKLXByb2plY3QgdXNlcywg
b3IgdGhlIHR3byB0dXBsZSBpbXBsZW1lbnRhdGlvbnMgd2lsbCBjbGFzaC4gIFRvIGRvCi10aGF0
LCBhZGQKLQotICAtREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTAKLQotdG8gdGhlIGNvbXBpbGVy
IGZsYWdzIHdoaWxlIGNvbXBpbGluZyBHb29nbGUgVGVzdCBhbmQgeW91ciB0ZXN0cy4gIElmCi15
b3Ugd2FudCB0byBmb3JjZSBHb29nbGUgVGVzdCB0byB1c2UgaXRzIG93biB0dXBsZSBsaWJyYXJ5
LCBqdXN0IGFkZAotCi0gIC1ER1RFU1RfVVNFX09XTl9UUjFfVFVQTEU9MQotCi10byB0aGUgY29t
cGlsZXIgZmxhZ3MgaW5zdGVhZC4KLQotSWYgeW91IGRvbid0IHdhbnQgR29vZ2xlIFRlc3QgdG8g
dXNlIHR1cGxlIGF0IGFsbCwgYWRkCi0KLSAgLURHVEVTVF9IQVNfVFIxX1RVUExFPTAKLQotYW5k
IGFsbCBmZWF0dXJlcyB1c2luZyB0dXBsZSB3aWxsIGJlIGRpc2FibGVkLgotCi0jIyMgTXVsdGkt
dGhyZWFkZWQgVGVzdHMgIyMjCi0KLUdvb2dsZSBUZXN0IGlzIHRocmVhZC1zYWZlIHdoZXJlIHRo
ZSBwdGhyZWFkIGxpYnJhcnkgaXMgYXZhaWxhYmxlLgotQWZ0ZXIgI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0Lmg+LCB5b3UgY2FuIGNoZWNrIHRoZSBHVEVTVF9JU19USFJFQURTQUZFCi1tYWNybyB0byBz
ZWUgd2hldGhlciB0aGlzIGlzIHRoZSBjYXNlICh5ZXMgaWYgdGhlIG1hY3JvIGlzICNkZWZpbmVk
IHRvCi0xLCBubyBpZiBpdCdzIHVuZGVmaW5lZC4pLgotCi1JZiBHb29nbGUgVGVzdCBkb2Vzbid0
IGNvcnJlY3RseSBkZXRlY3Qgd2hldGhlciBwdGhyZWFkIGlzIGF2YWlsYWJsZQotaW4geW91ciBl
bnZpcm9ubWVudCwgeW91IGNhbiBmb3JjZSBpdCB3aXRoCi0KLSAgLURHVEVTVF9IQVNfUFRIUkVB
RD0xCi0KLW9yCi0KLSAgLURHVEVTVF9IQVNfUFRIUkVBRD0wCi0KLVdoZW4gR29vZ2xlIFRlc3Qg
dXNlcyBwdGhyZWFkLCB5b3UgbWF5IG5lZWQgdG8gYWRkIGZsYWdzIHRvIHlvdXIKLWNvbXBpbGVy
IGFuZC9vciBsaW5rZXIgdG8gc2VsZWN0IHRoZSBwdGhyZWFkIGxpYnJhcnksIG9yIHlvdSdsbCBn
ZXQKLWxpbmsgZXJyb3JzLiAgSWYgeW91IHVzZSB0aGUgQ01ha2Ugc2NyaXB0IG9yIHRoZSBkZXBy
ZWNhdGVkIEF1dG90b29scwotc2NyaXB0LCB0aGlzIGlzIHRha2VuIGNhcmUgb2YgZm9yIHlvdS4g
IElmIHlvdSB1c2UgeW91ciBvd24gYnVpbGQKLXNjcmlwdCwgeW91J2xsIG5lZWQgdG8gcmVhZCB5
b3VyIGNvbXBpbGVyIGFuZCBsaW5rZXIncyBtYW51YWwgdG8KLWZpZ3VyZSBvdXQgd2hhdCBmbGFn
cyB0byBhZGQuCi0KLSMjIyBBcyBhIFNoYXJlZCBMaWJyYXJ5IChETEwpICMjIwotCi1Hb29nbGUg
VGVzdCBpcyBjb21wYWN0LCBzbyBtb3N0IHVzZXJzIGNhbiBidWlsZCBhbmQgbGluayBpdCBhcyBh
Ci1zdGF0aWMgbGlicmFyeSBmb3IgdGhlIHNpbXBsaWNpdHkuICBZb3UgY2FuIGNob29zZSB0byB1
c2UgR29vZ2xlIFRlc3QKLWFzIGEgc2hhcmVkIGxpYnJhcnkgKGtub3duIGFzIGEgRExMIG9uIFdp
bmRvd3MpIGlmIHlvdSBwcmVmZXIuCi0KLVRvIGNvbXBpbGUgZ3Rlc3QgYXMgYSBzaGFyZWQgbGli
cmFyeSwgYWRkCi0KLSAgLURHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJBUlk9MQotCi10byB0aGUg
Y29tcGlsZXIgZmxhZ3MuICBZb3UnbGwgYWxzbyBuZWVkIHRvIHRlbGwgdGhlIGxpbmtlciB0byBw
cm9kdWNlCi1hIHNoYXJlZCBsaWJyYXJ5IGluc3RlYWQgLSBjb25zdWx0IHlvdXIgbGlua2VyJ3Mg
bWFudWFsIGZvciBob3cgdG8gZG8KLWl0LgotCi1UbyBjb21waWxlIHlvdXIgdGVzdHMgdGhhdCB1
c2UgdGhlIGd0ZXN0IHNoYXJlZCBsaWJyYXJ5LCBhZGQKLQotICAtREdURVNUX0xJTktFRF9BU19T
SEFSRURfTElCUkFSWT0xCi0KLXRvIHRoZSBjb21waWxlciBmbGFncy4KLQotIyMjIEF2b2lkaW5n
IE1hY3JvIE5hbWUgQ2xhc2hlcyAjIyMKLQotSW4gQysrLCBtYWNyb3MgZG9uJ3Qgb2JleSBuYW1l
c3BhY2VzLiAgVGhlcmVmb3JlIHR3byBsaWJyYXJpZXMgdGhhdAotYm90aCBkZWZpbmUgYSBtYWNy
byBvZiB0aGUgc2FtZSBuYW1lIHdpbGwgY2xhc2ggaWYgeW91ICNpbmNsdWRlIGJvdGgKLWRlZmlu
aXRpb25zLiAgSW4gY2FzZSBhIEdvb2dsZSBUZXN0IG1hY3JvIGNsYXNoZXMgd2l0aCBhbm90aGVy
Ci1saWJyYXJ5LCB5b3UgY2FuIGZvcmNlIEdvb2dsZSBUZXN0IHRvIHJlbmFtZSBpdHMgbWFjcm8g
dG8gYXZvaWQgdGhlCi1jb25mbGljdC4KLQotU3BlY2lmaWNhbGx5LCBpZiBib3RoIEdvb2dsZSBU
ZXN0IGFuZCBzb21lIG90aGVyIGNvZGUgZGVmaW5lIG1hY3JvCi1GT08sIHlvdSBjYW4gYWRkCi0K
LSAgLURHVEVTVF9ET05UX0RFRklORV9GT089MQotCi10byB0aGUgY29tcGlsZXIgZmxhZ3MgdG8g
dGVsbCBHb29nbGUgVGVzdCB0byBjaGFuZ2UgdGhlIG1hY3JvJ3MgbmFtZQotZnJvbSBGT08gdG8g
R1RFU1RfRk9PLiAgQ3VycmVudGx5IEZPTyBjYW4gYmUgRkFJTCwgU1VDQ0VFRCwgb3IgVEVTVC4K
LUZvciBleGFtcGxlLCB3aXRoIC1ER1RFU1RfRE9OVF9ERUZJTkVfVEVTVD0xLCB5b3UnbGwgbmVl
ZCB0byB3cml0ZQotCi0gIEdURVNUX1RFU1QoU29tZVRlc3QsIERvZXNUaGlzKSB7IC4uLiB9Ci0K
LWluc3RlYWQgb2YKLQotICBURVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAuLi4gfQotCi1pbiBv
cmRlciB0byBkZWZpbmUgYSB0ZXN0LgotCi1VcGdyYXRpbmcgZnJvbSBhbiBFYXJsaWVyIFZlcnNp
b24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1XZSBzdHJpdmUgdG8ga2Vl
cCBHb29nbGUgVGVzdCByZWxlYXNlcyBiYWNrd2FyZCBjb21wYXRpYmxlLgotU29tZXRpbWVzLCB0
aG91Z2gsIHdlIGhhdmUgdG8gbWFrZSBzb21lIGJyZWFraW5nIGNoYW5nZXMgZm9yIHRoZQotdXNl
cnMnIGxvbmctdGVybSBiZW5lZml0cy4gIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgd2hhdCB5b3Un
bGwgbmVlZCB0bwotZG8gaWYgeW91IGFyZSB1cGdyYWRpbmcgZnJvbSBhbiBlYXJsaWVyIHZlcnNp
b24gb2YgR29vZ2xlIFRlc3QuCi0KLSMjIyBVcGdyYWRpbmcgZnJvbSAxLjMuMCBvciBFYXJsaWVy
ICMjIwotCi1Zb3UgbWF5IG5lZWQgdG8gZXhwbGljaXRseSBlbmFibGUgb3IgZGlzYWJsZSBHb29n
bGUgVGVzdCdzIG93biBUUjEKLXR1cGxlIGxpYnJhcnkuICBTZWUgdGhlIGluc3RydWN0aW9ucyBp
biBzZWN0aW9uICJDaG9vc2luZyBhIFRSMSBUdXBsZQotTGlicmFyeSIuCi0KLSMjIyBVcGdyYWRp
bmcgZnJvbSAxLjQuMCBvciBFYXJsaWVyICMjIwotCi1UaGUgQXV0b3Rvb2xzIGJ1aWxkIHNjcmlw
dCAoY29uZmlndXJlICsgbWFrZSkgaXMgbm8gbG9uZ2VyIG9mZmljaWFsbHkKLXN1cHBvcnR0ZWQu
ICBZb3UgYXJlIGVuY291cmFnZWQgdG8gbWlncmF0ZSB0byB5b3VyIG93biBidWlsZCBzeXN0ZW0g
b3IKLXVzZSBDTWFrZS4gIElmIHlvdSBzdGlsbCBuZWVkIHRvIHVzZSBBdXRvdG9vbHMsIHlvdSBj
YW4gZmluZAotaW5zdHJ1Y3Rpb25zIGluIHRoZSBSRUFETUUgZmlsZSBmcm9tIEdvb2dsZSBUZXN0
IDEuNC4wLgotCi1PbiBwbGF0Zm9ybXMgd2hlcmUgdGhlIHB0aHJlYWQgbGlicmFyeSBpcyBhdmFp
bGFibGUsIEdvb2dsZSBUZXN0IHVzZXMKLWl0IGluIG9yZGVyIHRvIGJlIHRocmVhZC1zYWZlLiAg
U2VlIHRoZSAiTXVsdGktdGhyZWFkZWQgVGVzdHMiIHNlY3Rpb24KLWZvciB3aGF0IHRoaXMgbWVh
bnMgdG8geW91ciBidWlsZCBzY3JpcHQuCi0KLUlmIHlvdSB1c2UgTWljcm9zb2Z0IFZpc3VhbCBD
KysgNy4xIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZCwgR29vZ2xlCi1UZXN0IHdpbGwgbm8gbG9u
Z2VyIGNvbXBpbGUuICBUaGlzIHNob3VsZCBhZmZlY3QgdmVyeSBmZXcgcGVvcGxlLCBhcyBhCi1s
YXJnZSBwb3J0aW9uIG9mIFNUTCAoaW5jbHVkaW5nIDxzdHJpbmc+KSBkb2Vzbid0IGNvbXBpbGUg
aW4gdGhpcyBtb2RlCi1hbnl3YXkuICBXZSBkZWNpZGVkIHRvIHN0b3Agc3VwcG9ydGluZyBpdCBp
biBvcmRlciB0byBncmVhdGx5IHNpbXBsaWZ5Ci1Hb29nbGUgVGVzdCdzIGltcGxlbWVudGF0aW9u
LgotCi1EZXZlbG9waW5nIEdvb2dsZSBUZXN0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRo
aXMgc2VjdGlvbiBkaXNjdXNzZXMgaG93IHRvIG1ha2UgeW91ciBvd24gY2hhbmdlcyB0byBHb29n
bGUgVGVzdC4KLQotIyMjIFRlc3RpbmcgR29vZ2xlIFRlc3QgSXRzZWxmICMjIwotCi1UbyBtYWtl
IHN1cmUgeW91ciBjaGFuZ2VzIHdvcmsgYXMgaW50ZW5kZWQgYW5kIGRvbid0IGJyZWFrIGV4aXN0
aW5nCi1mdW5jdGlvbmFsaXR5LCB5b3UnbGwgd2FudCB0byBjb21waWxlIGFuZCBydW4gR29vZ2xl
IFRlc3QncyBvd24gdGVzdHMuCi1Gb3IgdGhhdCB5b3UgY2FuIHVzZSBDTWFrZToKLQotICBta2Rp
ciBteWJ1aWxkCi0gIGNkIG15YnVpbGQKLSAgY21ha2UgLURidWlsZF9hbGxfZ3Rlc3RfdGVzdHM9
T04gJHtHVEVTVF9ESVJ9Ci0KLU1ha2Ugc3VyZSB5b3UgaGF2ZSBQeXRob24gaW5zdGFsbGVkLCBh
cyBzb21lIG9mIEdvb2dsZSBUZXN0J3MgdGVzdHMKLWFyZSB3cml0dGVuIGluIFB5dGhvbi4gIElm
IHRoZSBjbWFrZSBjb21tYW5kIGNvbXBsYWlucyBhYm91dCBub3QgYmVpbmcKLWFibGUgdG8gZmlu
ZCBQeXRob24gKCJDb3VsZCBOT1QgZmluZCBQeXRob25JbnRlcnAgKG1pc3Npbmc6Ci1QWVRIT05f
RVhFQ1VUQUJMRSkiKSwgdHJ5IHRlbGxpbmcgaXQgZXhwbGljaXRseSB3aGVyZSB5b3VyIFB5dGhv
bgotZXhlY3V0YWJsZSBjYW4gYmUgZm91bmQ6Ci0KLSAgY21ha2UgLURQWVRIT05fRVhFQ1VUQUJM
RT1wYXRoL3RvL3B5dGhvbiAtRGJ1aWxkX2FsbF9ndGVzdF90ZXN0cz1PTiBcCi0gICAgICAke0dU
RVNUX0RJUn0KLQotTmV4dCwgeW91IGNhbiBidWlsZCBHb29nbGUgVGVzdCBhbmQgYWxsIG9mIGl0
cyBvd24gdGVzdHMuICBPbiAqbml4LAotdGhpcyBpcyB1c3VhbGx5IGRvbmUgYnkgJ21ha2UnLiAg
VG8gcnVuIHRoZSB0ZXN0cywgZG8KLQotICBtYWtlIHRlc3QKLQotQWxsIHRlc3RzIHNob3VsZCBw
YXNzLgotCi0jIyMgUmVnZW5lcmF0aW5nIFNvdXJjZSBGaWxlcyAjIyMKLQotU29tZSBvZiBHb29n
bGUgVGVzdCdzIHNvdXJjZSBmaWxlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGVtcGxhdGVzIChub3QK
LWluIHRoZSBDKysgc2Vuc2UpIHVzaW5nIGEgc2NyaXB0LiAgQSB0ZW1wbGF0ZSBmaWxlIGlzIG5h
bWVkIEZPTy5wdW1wLAotd2hlcmUgRk9PIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGl0IHdpbGwg
Z2VuZXJhdGUuICBGb3IgZXhhbXBsZSwgdGhlCi1maWxlIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtdHlwZS11dGlsLmgucHVtcCBpcyB1c2VkIHRvIGdlbmVyYXRlCi1ndGVzdC10eXBlLXV0
aWwuaCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCi0KLU5vcm1hbGx5IHlvdSBkb24ndCBuZWVkIHRv
IHdvcnJ5IGFib3V0IHJlZ2VuZXJhdGluZyB0aGUgc291cmNlIGZpbGVzLAotdW5sZXNzIHlvdSBu
ZWVkIHRvIG1vZGlmeSB0aGVtLiAgSW4gdGhhdCBjYXNlLCB5b3Ugc2hvdWxkIG1vZGlmeSB0aGUK
LWNvcnJlc3BvbmRpbmcgLnB1bXAgZmlsZXMgaW5zdGVhZCBhbmQgcnVuIHRoZSBwdW1wLnB5IFB5
dGhvbiBzY3JpcHQgdG8KLXJlZ2VuZXJhdGUgdGhlbS4gIFlvdSBjYW4gZmluZCBwdW1wLnB5IGlu
IHRoZSBzY3JpcHRzLyBkaXJlY3RvcnkuCi1SZWFkIHRoZSBQdW1wIG1hbnVhbCBbMl0gZm9yIGhv
dyB0byB1c2UgaXQuCi0KLSAgWzJdIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0
L3dpa2kvUHVtcE1hbnVhbAotCi0jIyMgQ29udHJpYnV0aW5nIGEgUGF0Y2ggIyMjCi0KLVdlIHdl
bGNvbWUgcGF0Y2hlcy4gIFBsZWFzZSByZWFkIHRoZSBHb29nbGUgVGVzdCBkZXZlbG9wZXIncyBn
dWlkZSBbM10KLWZvciBob3cgeW91IGNhbiBjb250cmlidXRlLiAgSW4gcGFydGljdWxhciwgbWFr
ZSBzdXJlIHlvdSBoYXZlIHNpZ25lZAotdGhlIENvbnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVtZW50
LCBvciB3ZSB3b24ndCBiZSBhYmxlIHRvIGFjY2VwdCB0aGUKLXBhdGNoLgotCi0gIFszXSBodHRw
Oi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL0dvb2dsZVRlc3REZXZHdWlkZQot
Ci1IYXBweSB0ZXN0aW5nIQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVB
RE1FLldlYktpdCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L1JFQURNRS5XZWJLaXQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhMzE4ZmY2MmUzMjQ5YzhlNjUzMjA5M2Y0MGUzY2I0
MWMxNWY5YWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVBRE1FLldlYktpdAorKysgL2Rldi9udWxsCkBAIC0x
LDE2ICswLDAgQEAKLUdUZXN0IHYuMS41LjAKLQotaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29k
ZS5jb20vc3ZuL3RhZ3MvcmVsZWFzZS0xLjUuMC8gCi0KLTIwMTYtMDEtMDIgVGluZy1XZWkgTGFu
IChsYW50dzQ0QGdtYWlsLmNvbSkKLSAgICAgIFJlbW92ZSB1c2FnZSBvZiBlbnZpcm9uIGdsb2Jh
bCB2YXJpYWJsZSB0byBmaXggdGhlIGJ1aWxkIG9uIEZyZWVCU0QuCi0KLTIwMTItMDEtMDQgRG1p
dHJ5IExvbW92IChkc2xvbW92QGdvb2dsZS5jb20pICBEYXZpZCBLaWx6ZXIgKGRka2lsemVyQGFw
cGxlLmNvbSkKLSAgICAgIC0gV2ViS2l0IHBvcnQgb2YgZ3Rlc3QgdXNlcyBGYXN0TWFsbG9jICJu
ZXciIGFuZCAiZGVsZXRlIiBvcGVyYXRvcnMgZnJvbSBKYXZhU2NyaXB0Q29yZS4KLSAgICAgIC0g
VGhlIGd0ZXN0LmZyYW1ld29yayB0YXJnZXQgbm93IGxpbmtzIHRvIEphdmFTY3JpcHRDb3JlLmZy
YW1ld29yay4KLQotMjAxMS0xMi0yMiBEYXZpZCBLaWx6ZXIgKGRka2lsemVyQGFwcGxlLmNvbSkK
LSAgICAgIEFkZGVkIFByb2R1Y3Rpb24gY29uZmlndXJhdGlvbiB0byBndGVzdCBYY29kZSBwcm9q
ZWN0LgotCi0yMDExLTA1LTA2IERtaXRyeSBMb21vdiAoZHNsb21vdkBnb29nbGUuY29tKQotICAg
ICAgZ3Rlc3QtbWQudmNwcm9qIHVwZ3JhZGVkIHRvIFZTIDIwMDUgKDguMCkgZm9ybWF0IHRvIG1h
dGNoIHRoZSByZXN0IG9mIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvUkVBRE1FLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvUkVBRE1FLm1kCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUzMGZlODA0NzEyN2JlZTE2ZDJjNzFmMTRiNTA5ZjM3NTcxYWRkNDEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9SRUFETUUubWQKQEAgLTAsMCArMSwzNDEg
QEAKKyMjIyBHZW5lcmljIEJ1aWxkIEluc3RydWN0aW9ucworCisjIyMjIFNldHVwCisKK1RvIGJ1
aWxkIEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRlc3RzIHRoYXQgdXNlIGl0LCB5b3UgbmVlZCB0byB0
ZWxsIHlvdXIgYnVpbGQKK3N5c3RlbSB3aGVyZSB0byBmaW5kIGl0cyBoZWFkZXJzIGFuZCBzb3Vy
Y2UgZmlsZXMuIFRoZSBleGFjdCB3YXkgdG8gZG8gaXQKK2RlcGVuZHMgb24gd2hpY2ggYnVpbGQg
c3lzdGVtIHlvdSB1c2UsIGFuZCBpcyB1c3VhbGx5IHN0cmFpZ2h0Zm9yd2FyZC4KKworIyMjIyBC
dWlsZAorCitTdXBwb3NlIHlvdSBwdXQgR29vZ2xlIFRlc3QgaW4gZGlyZWN0b3J5IGAke0dURVNU
X0RJUn1gLiBUbyBidWlsZCBpdCwgY3JlYXRlIGEKK2xpYnJhcnkgYnVpbGQgdGFyZ2V0IChvciBh
IHByb2plY3QgYXMgY2FsbGVkIGJ5IFZpc3VhbCBTdHVkaW8gYW5kIFhjb2RlKSB0bworY29tcGls
ZQorCisgICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1hbGwuY2MKKword2l0aCBgJHtHVEVTVF9E
SVJ9L2luY2x1ZGVgIGluIHRoZSBzeXN0ZW0gaGVhZGVyIHNlYXJjaCBwYXRoIGFuZCBgJHtHVEVT
VF9ESVJ9YAoraW4gdGhlIG5vcm1hbCBoZWFkZXIgc2VhcmNoIHBhdGguIEFzc3VtaW5nIGEgTGlu
dXgtbGlrZSBzeXN0ZW0gYW5kIGdjYywKK3NvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgd2ls
bCBkbzoKKworICAgIGcrKyAtaXN5c3RlbSAke0dURVNUX0RJUn0vaW5jbHVkZSAtSSR7R1RFU1Rf
RElSfSBcCisgICAgICAgIC1wdGhyZWFkIC1jICR7R1RFU1RfRElSfS9zcmMvZ3Rlc3QtYWxsLmNj
CisgICAgYXIgLXJ2IGxpYmd0ZXN0LmEgZ3Rlc3QtYWxsLm8KKworKFdlIG5lZWQgYC1wdGhyZWFk
YCBhcyBHb29nbGUgVGVzdCB1c2VzIHRocmVhZHMuKQorCitOZXh0LCB5b3Ugc2hvdWxkIGNvbXBp
bGUgeW91ciB0ZXN0IHNvdXJjZSBmaWxlIHdpdGggYCR7R1RFU1RfRElSfS9pbmNsdWRlYCBpbgor
dGhlIHN5c3RlbSBoZWFkZXIgc2VhcmNoIHBhdGgsIGFuZCBsaW5rIGl0IHdpdGggZ3Rlc3QgYW5k
IGFueSBvdGhlciBuZWNlc3NhcnkKK2xpYnJhcmllczoKKworICAgIGcrKyAtaXN5c3RlbSAke0dU
RVNUX0RJUn0vaW5jbHVkZSAtcHRocmVhZCBwYXRoL3RvL3lvdXJfdGVzdC5jYyBsaWJndGVzdC5h
IFwKKyAgICAgICAgLW8geW91cl90ZXN0CisKK0FzIGFuIGV4YW1wbGUsIHRoZSBtYWtlLyBkaXJl
Y3RvcnkgY29udGFpbnMgYSBNYWtlZmlsZSB0aGF0IHlvdSBjYW4gdXNlIHRvIGJ1aWxkCitHb29n
bGUgVGVzdCBvbiBzeXN0ZW1zIHdoZXJlIEdOVSBtYWtlIGlzIGF2YWlsYWJsZSAoZS5nLiBMaW51
eCwgTWFjIE9TIFgsIGFuZAorQ3lnd2luKS4gSXQgZG9lc24ndCB0cnkgdG8gYnVpbGQgR29vZ2xl
IFRlc3QncyBvd24gdGVzdHMuIEluc3RlYWQsIGl0IGp1c3QKK2J1aWxkcyB0aGUgR29vZ2xlIFRl
c3QgbGlicmFyeSBhbmQgYSBzYW1wbGUgdGVzdC4gWW91IGNhbiB1c2UgaXQgYXMgYSBzdGFydGlu
ZworcG9pbnQgZm9yIHlvdXIgb3duIGJ1aWxkIHNjcmlwdC4KKworSWYgdGhlIGRlZmF1bHQgc2V0
dGluZ3MgYXJlIGNvcnJlY3QgZm9yIHlvdXIgZW52aXJvbm1lbnQsIHRoZSBmb2xsb3dpbmcgY29t
bWFuZHMKK3Nob3VsZCBzdWNjZWVkOgorCisgICAgY2QgJHtHVEVTVF9ESVJ9L21ha2UKKyAgICBt
YWtlCisgICAgLi9zYW1wbGUxX3VuaXR0ZXN0CisKK0lmIHlvdSBzZWUgZXJyb3JzLCB0cnkgdG8g
dHdlYWsgdGhlIGNvbnRlbnRzIG9mIGBtYWtlL01ha2VmaWxlYCB0byBtYWtlIHRoZW0gZ28KK2F3
YXkuIFRoZXJlIGFyZSBpbnN0cnVjdGlvbnMgaW4gYG1ha2UvTWFrZWZpbGVgIG9uIGhvdyB0byBk
byBpdC4KKworIyMjIFVzaW5nIENNYWtlCisKK0dvb2dsZSBUZXN0IGNvbWVzIHdpdGggYSBDTWFr
ZSBidWlsZCBzY3JpcHQgKAorW0NNYWtlTGlzdHMudHh0XShodHRwczovL2dpdGh1Yi5jb20vZ29v
Z2xlL2dvb2dsZXRlc3QvYmxvYi9tYXN0ZXIvQ01ha2VMaXN0cy50eHQpKQordGhhdCBjYW4gYmUg
dXNlZCBvbiBhIHdpZGUgcmFuZ2Ugb2YgcGxhdGZvcm1zICgiQyIgc3RhbmRzIGZvciBjcm9zcy1w
bGF0Zm9ybS4pLgorSWYgeW91IGRvbid0IGhhdmUgQ01ha2UgaW5zdGFsbGVkIGFscmVhZHksIHlv
dSBjYW4gZG93bmxvYWQgaXQgZm9yIGZyZWUgZnJvbQorPGh0dHA6Ly93d3cuY21ha2Uub3JnLz4u
CisKK0NNYWtlIHdvcmtzIGJ5IGdlbmVyYXRpbmcgbmF0aXZlIG1ha2VmaWxlcyBvciBidWlsZCBw
cm9qZWN0cyB0aGF0IGNhbiBiZSB1c2VkIGluCit0aGUgY29tcGlsZXIgZW52aXJvbm1lbnQgb2Yg
eW91ciBjaG9pY2UuIFlvdSBjYW4gZWl0aGVyIGJ1aWxkIEdvb2dsZSBUZXN0IGFzIGEKK3N0YW5k
YWxvbmUgcHJvamVjdCBvciBpdCBjYW4gYmUgaW5jb3Jwb3JhdGVkIGludG8gYW4gZXhpc3Rpbmcg
Q01ha2UgYnVpbGQgZm9yCithbm90aGVyIHByb2plY3QuCisKKyMjIyMgU3RhbmRhbG9uZSBDTWFr
ZSBQcm9qZWN0CisKK1doZW4gYnVpbGRpbmcgR29vZ2xlIFRlc3QgYXMgYSBzdGFuZGFsb25lIHBy
b2plY3QsIHRoZSB0eXBpY2FsIHdvcmtmbG93IHN0YXJ0cword2l0aDoKKworICAgIG1rZGlyIG15
YnVpbGQgICAgICAgIyBDcmVhdGUgYSBkaXJlY3RvcnkgdG8gaG9sZCB0aGUgYnVpbGQgb3V0cHV0
LgorICAgIGNkIG15YnVpbGQKKyAgICBjbWFrZSAke0dURVNUX0RJUn0gICMgR2VuZXJhdGUgbmF0
aXZlIGJ1aWxkIHNjcmlwdHMuCisKK0lmIHlvdSB3YW50IHRvIGJ1aWxkIEdvb2dsZSBUZXN0J3Mg
c2FtcGxlcywgeW91IHNob3VsZCByZXBsYWNlIHRoZSBsYXN0IGNvbW1hbmQKK3dpdGgKKworICAg
IGNtYWtlIC1EZ3Rlc3RfYnVpbGRfc2FtcGxlcz1PTiAke0dURVNUX0RJUn0KKworSWYgeW91IGFy
ZSBvbiBhIFwqbml4IHN5c3RlbSwgeW91IHNob3VsZCBub3cgc2VlIGEgTWFrZWZpbGUgaW4gdGhl
IGN1cnJlbnQKK2RpcmVjdG9yeS4gSnVzdCB0eXBlICdtYWtlJyB0byBidWlsZCBndGVzdC4KKwor
SWYgeW91IHVzZSBXaW5kb3dzIGFuZCBoYXZlIFZpc3VhbCBTdHVkaW8gaW5zdGFsbGVkLCBhIGBn
dGVzdC5zbG5gIGZpbGUgYW5kCitzZXZlcmFsIGAudmNwcm9qYCBmaWxlcyB3aWxsIGJlIGNyZWF0
ZWQuIFlvdSBjYW4gdGhlbiBidWlsZCB0aGVtIHVzaW5nIFZpc3VhbAorU3R1ZGlvLgorCitPbiBN
YWMgT1MgWCB3aXRoIFhjb2RlIGluc3RhbGxlZCwgYSBgLnhjb2RlcHJvamAgZmlsZSB3aWxsIGJl
IGdlbmVyYXRlZC4KKworIyMjIyBJbmNvcnBvcmF0aW5nIEludG8gQW4gRXhpc3RpbmcgQ01ha2Ug
UHJvamVjdAorCitJZiB5b3Ugd2FudCB0byB1c2UgZ3Rlc3QgaW4gYSBwcm9qZWN0IHdoaWNoIGFs
cmVhZHkgdXNlcyBDTWFrZSwgdGhlbiBhIG1vcmUKK3JvYnVzdCBhbmQgZmxleGlibGUgYXBwcm9h
Y2ggaXMgdG8gYnVpbGQgZ3Rlc3QgYXMgcGFydCBvZiB0aGF0IHByb2plY3QgZGlyZWN0bHkuCitU
aGlzIGlzIGRvbmUgYnkgbWFraW5nIHRoZSBHb29nbGVUZXN0IHNvdXJjZSBjb2RlIGF2YWlsYWJs
ZSB0byB0aGUgbWFpbiBidWlsZAorYW5kIGFkZGluZyBpdCB1c2luZyBDTWFrZSdzIGBhZGRfc3Vi
ZGlyZWN0b3J5KClgIGNvbW1hbmQuIFRoaXMgaGFzIHRoZQorc2lnbmlmaWNhbnQgYWR2YW50YWdl
IHRoYXQgdGhlIHNhbWUgY29tcGlsZXIgYW5kIGxpbmtlciBzZXR0aW5ncyBhcmUgdXNlZAorYmV0
d2VlbiBndGVzdCBhbmQgdGhlIHJlc3Qgb2YgeW91ciBwcm9qZWN0LCBzbyBpc3N1ZXMgYXNzb2Np
YXRlZCB3aXRoIHVzaW5nCitpbmNvbXBhdGlibGUgbGlicmFyaWVzIChlZyBkZWJ1Zy9yZWxlYXNl
KSwgZXRjLiBhcmUgYXZvaWRlZC4gVGhpcyBpcworcGFydGljdWxhcmx5IHVzZWZ1bCBvbiBXaW5k
b3dzLiBNYWtpbmcgR29vZ2xlVGVzdCdzIHNvdXJjZSBjb2RlIGF2YWlsYWJsZSB0byB0aGUKK21h
aW4gYnVpbGQgY2FuIGJlIGRvbmUgYSBmZXcgZGlmZmVyZW50IHdheXM6CisKKyogICBEb3dubG9h
ZCB0aGUgR29vZ2xlVGVzdCBzb3VyY2UgY29kZSBtYW51YWxseSBhbmQgcGxhY2UgaXQgYXQgYSBr
bm93bgorICAgIGxvY2F0aW9uLiBUaGlzIGlzIHRoZSBsZWFzdCBmbGV4aWJsZSBhcHByb2FjaCBh
bmQgY2FuIG1ha2UgaXQgbW9yZSBkaWZmaWN1bHQKKyAgICB0byB1c2Ugd2l0aCBjb250aW51b3Vz
IGludGVncmF0aW9uIHN5c3RlbXMsIGV0Yy4KKyogICBFbWJlZCB0aGUgR29vZ2xlVGVzdCBzb3Vy
Y2UgY29kZSBhcyBhIGRpcmVjdCBjb3B5IGluIHRoZSBtYWluIHByb2plY3QncworICAgIHNvdXJj
ZSB0cmVlLiBUaGlzIGlzIG9mdGVuIHRoZSBzaW1wbGVzdCBhcHByb2FjaCwgYnV0IGlzIGFsc28g
dGhlIGhhcmRlc3QgdG8KKyAgICBrZWVwIHVwIHRvIGRhdGUuIFNvbWUgb3JnYW5pemF0aW9ucyBt
YXkgbm90IHBlcm1pdCB0aGlzIG1ldGhvZC4KKyogICBBZGQgR29vZ2xlVGVzdCBhcyBhIGdpdCBz
dWJtb2R1bGUgb3IgZXF1aXZhbGVudC4gVGhpcyBtYXkgbm90IGFsd2F5cyBiZQorICAgIHBvc3Np
YmxlIG9yIGFwcHJvcHJpYXRlLiBHaXQgc3VibW9kdWxlcywgZm9yIGV4YW1wbGUsIGhhdmUgdGhl
aXIgb3duIHNldCBvZgorICAgIGFkdmFudGFnZXMgYW5kIGRyYXdiYWNrcy4KKyogICBVc2UgQ01h
a2UgdG8gZG93bmxvYWQgR29vZ2xlVGVzdCBhcyBwYXJ0IG9mIHRoZSBidWlsZCdzIGNvbmZpZ3Vy
ZSBzdGVwLiBUaGlzCisgICAgaXMganVzdCBhIGxpdHRsZSBtb3JlIGNvbXBsZXgsIGJ1dCBkb2Vz
bid0IGhhdmUgdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBvdGhlcgorICAgIG1ldGhvZHMuCisKK1Ro
ZSBsYXN0IG9mIHRoZSBhYm92ZSBtZXRob2RzIGlzIGltcGxlbWVudGVkIHdpdGggYSBzbWFsbCBw
aWVjZSBvZiBDTWFrZSBjb2RlIGluCithIHNlcGFyYXRlIGZpbGUgKGUuZy4gYENNYWtlTGlzdHMu
dHh0LmluYCkgd2hpY2ggaXMgY29waWVkIHRvIHRoZSBidWlsZCBhcmVhIGFuZAordGhlbiBpbnZv
a2VkIGFzIGEgc3ViLWJ1aWxkIF9kdXJpbmcgdGhlIENNYWtlIHN0YWdlXy4gVGhhdCBkaXJlY3Rv
cnkgaXMgdGhlbgorcHVsbGVkIGludG8gdGhlIG1haW4gYnVpbGQgd2l0aCBgYWRkX3N1YmRpcmVj
dG9yeSgpYC4gRm9yIGV4YW1wbGU6CisKK05ldyBmaWxlIGBDTWFrZUxpc3RzLnR4dC5pbmA6CisK
KyAgICBjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMi44LjIpCisKKyAgICBwcm9qZWN0
KGdvb2dsZXRlc3QtZG93bmxvYWQgTk9ORSkKKworICAgIGluY2x1ZGUoRXh0ZXJuYWxQcm9qZWN0
KQorICAgIEV4dGVybmFsUHJvamVjdF9BZGQoZ29vZ2xldGVzdAorICAgICAgR0lUX1JFUE9TSVRP
UlkgICAgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0LmdpdAorICAgICAgR0lU
X1RBRyAgICAgICAgICAgbWFzdGVyCisgICAgICBTT1VSQ0VfRElSICAgICAgICAiJHtDTUFLRV9C
SU5BUllfRElSfS9nb29nbGV0ZXN0LXNyYyIKKyAgICAgIEJJTkFSWV9ESVIgICAgICAgICIke0NN
QUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3QtYnVpbGQiCisgICAgICBDT05GSUdVUkVfQ09NTUFO
RCAiIgorICAgICAgQlVJTERfQ09NTUFORCAgICAgIiIKKyAgICAgIElOU1RBTExfQ09NTUFORCAg
ICIiCisgICAgICBURVNUX0NPTU1BTkQgICAgICAiIgorICAgICkKKworRXhpc3RpbmcgYnVpbGQn
cyBgQ01ha2VMaXN0cy50eHRgOgorCisgICAgIyBEb3dubG9hZCBhbmQgdW5wYWNrIGdvb2dsZXRl
c3QgYXQgY29uZmlndXJlIHRpbWUKKyAgICBjb25maWd1cmVfZmlsZShDTWFrZUxpc3RzLnR4dC5p
biBnb29nbGV0ZXN0LWRvd25sb2FkL0NNYWtlTGlzdHMudHh0KQorICAgIGV4ZWN1dGVfcHJvY2Vz
cyhDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUcgIiR7Q01BS0VfR0VORVJBVE9SfSIgLgorICAg
ICAgUkVTVUxUX1ZBUklBQkxFIHJlc3VsdAorICAgICAgV09SS0lOR19ESVJFQ1RPUlkgJHtDTUFL
RV9CSU5BUllfRElSfS9nb29nbGV0ZXN0LWRvd25sb2FkICkKKyAgICBpZihyZXN1bHQpCisgICAg
ICBtZXNzYWdlKEZBVEFMX0VSUk9SICJDTWFrZSBzdGVwIGZvciBnb29nbGV0ZXN0IGZhaWxlZDog
JHtyZXN1bHR9IikKKyAgICBlbmRpZigpCisgICAgZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgJHtD
TUFLRV9DT01NQU5EfSAtLWJ1aWxkIC4KKyAgICAgIFJFU1VMVF9WQVJJQUJMRSByZXN1bHQKKyAg
ICAgIFdPUktJTkdfRElSRUNUT1JZICR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1kb3du
bG9hZCApCisgICAgaWYocmVzdWx0KQorICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiQnVpbGQg
c3RlcCBmb3IgZ29vZ2xldGVzdCBmYWlsZWQ6ICR7cmVzdWx0fSIpCisgICAgZW5kaWYoKQorCisg
ICAgIyBQcmV2ZW50IG92ZXJyaWRpbmcgdGhlIHBhcmVudCBwcm9qZWN0J3MgY29tcGlsZXIvbGlu
a2VyCisgICAgIyBzZXR0aW5ncyBvbiBXaW5kb3dzCisgICAgc2V0KGd0ZXN0X2ZvcmNlX3NoYXJl
ZF9jcnQgT04gQ0FDSEUgQk9PTCAiIiBGT1JDRSkKKworICAgICMgQWRkIGdvb2dsZXRlc3QgZGly
ZWN0bHkgdG8gb3VyIGJ1aWxkLiBUaGlzIGRlZmluZXMKKyAgICAjIHRoZSBndGVzdCBhbmQgZ3Rl
c3RfbWFpbiB0YXJnZXRzLgorICAgIGFkZF9zdWJkaXJlY3RvcnkoJHtDTUFLRV9CSU5BUllfRElS
fS9nb29nbGV0ZXN0LXNyYworICAgICAgICAgICAgICAgICAgICAgJHtDTUFLRV9CSU5BUllfRElS
fS9nb29nbGV0ZXN0LWJ1aWxkCisgICAgICAgICAgICAgICAgICAgICBFWENMVURFX0ZST01fQUxM
KQorCisgICAgIyBUaGUgZ3Rlc3QvZ3Rlc3RfbWFpbiB0YXJnZXRzIGNhcnJ5IGhlYWRlciBzZWFy
Y2ggcGF0aAorICAgICMgZGVwZW5kZW5jaWVzIGF1dG9tYXRpY2FsbHkgd2hlbiB1c2luZyBDTWFr
ZSAyLjguMTEgb3IKKyAgICAjIGxhdGVyLiBPdGhlcndpc2Ugd2UgaGF2ZSB0byBhZGQgdGhlbSBo
ZXJlIG91cnNlbHZlcy4KKyAgICBpZiAoQ01BS0VfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMi44LjEx
KQorICAgICAgaW5jbHVkZV9kaXJlY3RvcmllcygiJHtndGVzdF9TT1VSQ0VfRElSfS9pbmNsdWRl
IikKKyAgICBlbmRpZigpCisKKyAgICAjIE5vdyBzaW1wbHkgbGluayBhZ2FpbnN0IGd0ZXN0IG9y
IGd0ZXN0X21haW4gYXMgbmVlZGVkLiBFZworICAgIGFkZF9leGVjdXRhYmxlKGV4YW1wbGUgZXhh
bXBsZS5jcHApCisgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGV4YW1wbGUgZ3Rlc3RfbWFpbikK
KyAgICBhZGRfdGVzdChOQU1FIGV4YW1wbGVfdGVzdCBDT01NQU5EIGV4YW1wbGUpCisKK05vdGUg
dGhhdCB0aGlzIGFwcHJvYWNoIHJlcXVpcmVzIENNYWtlIDIuOC4yIG9yIGxhdGVyIGR1ZSB0byBp
dHMgdXNlIG9mIHRoZQorYEV4dGVybmFsUHJvamVjdF9BZGQoKWAgY29tbWFuZC4gVGhlIGFib3Zl
IHRlY2huaXF1ZSBpcyBkaXNjdXNzZWQgaW4gbW9yZSBkZXRhaWwKK2luIFt0aGlzIHNlcGFyYXRl
IGFydGljbGVdKGh0dHA6Ly9jcmFzY2l0LmNvbS8yMDE1LzA3LzI1L2NtYWtlLWd0ZXN0Lykgd2hp
Y2gKK2Fsc28gY29udGFpbnMgYSBsaW5rIHRvIGEgZnVsbHkgZ2VuZXJhbGl6ZWQgaW1wbGVtZW50
YXRpb24gb2YgdGhlIHRlY2huaXF1ZS4KKworIyMjIyMgVmlzdWFsIFN0dWRpbyBEeW5hbWljIHZz
IFN0YXRpYyBSdW50aW1lcworCitCeSBkZWZhdWx0LCBuZXcgVmlzdWFsIFN0dWRpbyBwcm9qZWN0
cyBsaW5rIHRoZSBDIHJ1bnRpbWVzIGR5bmFtaWNhbGx5IGJ1dAorR29vZ2xlIFRlc3QgbGlua3Mg
dGhlbSBzdGF0aWNhbGx5LiBUaGlzIHdpbGwgZ2VuZXJhdGUgYW4gZXJyb3IgdGhhdCBsb29rcwor
c29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZzogZ3Rlc3QubGliKGd0ZXN0LWFsbC5vYmopIDog
ZXJyb3IgTE5LMjAzODogbWlzbWF0Y2gKK2RldGVjdGVkIGZvciAnUnVudGltZUxpYnJhcnknOiB2
YWx1ZSAnTVRkX1N0YXRpY0RlYnVnJyBkb2Vzbid0IG1hdGNoIHZhbHVlCisnTURkX0R5bmFtaWNE
ZWJ1ZycgaW4gbWFpbi5vYmoKKworR29vZ2xlIFRlc3QgYWxyZWFkeSBoYXMgYSBDTWFrZSBvcHRp
b24gZm9yIHRoaXM6IGBndGVzdF9mb3JjZV9zaGFyZWRfY3J0YAorCitFbmFibGluZyB0aGlzIG9w
dGlvbiB3aWxsIG1ha2UgZ3Rlc3QgbGluayB0aGUgcnVudGltZXMgZHluYW1pY2FsbHkgdG9vLCBh
bmQKK21hdGNoIHRoZSBwcm9qZWN0IGluIHdoaWNoIGl0IGlzIGluY2x1ZGVkLgorCisjIyMgTGVn
YWN5IEJ1aWxkIFNjcmlwdHMKKworQmVmb3JlIHNldHRsaW5nIG9uIENNYWtlLCB3ZSBoYXZlIGJl
ZW4gcHJvdmlkaW5nIGhhbmQtbWFpbnRhaW5lZCBidWlsZAorcHJvamVjdHMvc2NyaXB0cyBmb3Ig
VmlzdWFsIFN0dWRpbywgWGNvZGUsIGFuZCBBdXRvdG9vbHMuIFdoaWxlIHdlIGNvbnRpbnVlIHRv
Citwcm92aWRlIHRoZW0gZm9yIGNvbnZlbmllbmNlLCB0aGV5IGFyZSBub3QgYWN0aXZlbHkgbWFp
bnRhaW5lZCBhbnkgbW9yZS4gV2UKK2hpZ2hseSByZWNvbW1lbmQgdGhhdCB5b3UgZm9sbG93IHRo
ZSBpbnN0cnVjdGlvbnMgaW4gdGhlIGFib3ZlIHNlY3Rpb25zIHRvCitpbnRlZ3JhdGUgR29vZ2xl
IFRlc3Qgd2l0aCB5b3VyIGV4aXN0aW5nIGJ1aWxkIHN5c3RlbS4KKworSWYgeW91IHN0aWxsIG5l
ZWQgdG8gdXNlIHRoZSBsZWdhY3kgYnVpbGQgc2NyaXB0cywgaGVyZSdzIGhvdzoKKworVGhlIG1z
dmNcIGZvbGRlciBjb250YWlucyB0d28gc29sdXRpb25zIHdpdGggVmlzdWFsIEMrKyBwcm9qZWN0
cy4gT3BlbiB0aGUKK2BndGVzdC5zbG5gIG9yIGBndGVzdC1tZC5zbG5gIGZpbGUgdXNpbmcgVmlz
dWFsIFN0dWRpbywgYW5kIHlvdSBhcmUgcmVhZHkgdG8KK2J1aWxkIEdvb2dsZSBUZXN0IHRoZSBz
YW1lIHdheSB5b3UgYnVpbGQgYW55IFZpc3VhbCBTdHVkaW8gcHJvamVjdC4gRmlsZXMgdGhhdAor
aGF2ZSBuYW1lcyBlbmRpbmcgd2l0aCAtbWQgdXNlIERMTCB2ZXJzaW9ucyBvZiBNaWNyb3NvZnQg
cnVudGltZSBsaWJyYXJpZXMgKHRoZQorL01EIG9yIHRoZSAvTURkIGNvbXBpbGVyIG9wdGlvbiku
IEZpbGVzIHdpdGhvdXQgdGhhdCBzdWZmaXggdXNlIHN0YXRpYyB2ZXJzaW9ucworb2YgdGhlIHJ1
bnRpbWUgbGlicmFyaWVzICh0aGUgL01UIG9yIHRoZSAvTVRkIG9wdGlvbikuIFBsZWFzZSBub3Rl
IHRoYXQgb25lIG11c3QKK3VzZSB0aGUgc2FtZSBvcHRpb24gdG8gY29tcGlsZSBib3RoIGd0ZXN0
IGFuZCB0aGUgdGVzdCBjb2RlLiBJZiB5b3UgdXNlIFZpc3VhbAorU3R1ZGlvIDIwMDUgb3IgYWJv
dmUsIHdlIHJlY29tbWVuZCB0aGUgLW1kIHZlcnNpb24gYXMgL01EIGlzIHRoZSBkZWZhdWx0IGZv
ciBuZXcKK3Byb2plY3RzIGluIHRoZXNlIHZlcnNpb25zIG9mIFZpc3VhbCBTdHVkaW8uCisKK09u
IE1hYyBPUyBYLCBvcGVuIHRoZSBgZ3Rlc3QueGNvZGVwcm9qYCBpbiB0aGUgYHhjb2RlL2AgZm9s
ZGVyIHVzaW5nIFhjb2RlLgorQnVpbGQgdGhlICJndGVzdCIgdGFyZ2V0LiBUaGUgdW5pdmVyc2Fs
IGJpbmFyeSBmcmFtZXdvcmsgd2lsbCBlbmQgdXAgaW4geW91cgorc2VsZWN0ZWQgYnVpbGQgZGly
ZWN0b3J5IChzZWxlY3RlZCBpbiB0aGUgWGNvZGUgIlByZWZlcmVuY2VzLi4uIiAtPiAiQnVpbGRp
bmciCitwYW5lIGFuZCBkZWZhdWx0cyB0byB4Y29kZS9idWlsZCkuIEFsdGVybmF0aXZlbHksIGF0
IHRoZSBjb21tYW5kIGxpbmUsIGVudGVyOgorCisgICAgeGNvZGVidWlsZAorCitUaGlzIHdpbGwg
YnVpbGQgdGhlICJSZWxlYXNlIiBjb25maWd1cmF0aW9uIG9mIGd0ZXN0LmZyYW1ld29yayBpbiB5
b3VyIGRlZmF1bHQKK2J1aWxkIGxvY2F0aW9uLiBTZWUgdGhlICJ4Y29kZWJ1aWxkIiBtYW4gcGFn
ZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dAorYnVpbGRpbmcgZGlmZmVyZW50IGNvbmZpZ3Vy
YXRpb25zIGFuZCBidWlsZGluZyBpbiBkaWZmZXJlbnQgbG9jYXRpb25zLgorCitJZiB5b3Ugd2lz
aCB0byB1c2UgdGhlIEdvb2dsZSBUZXN0IFhjb2RlIHByb2plY3Qgd2l0aCBYY29kZSA0LnggYW5k
IGFib3ZlLCB5b3UKK25lZWQgdG8gZWl0aGVyOgorCisqICAgdXBkYXRlIHRoZSBTREsgY29uZmln
dXJhdGlvbiBvcHRpb25zIGluIHhjb2RlL0NvbmZpZy9HZW5lcmFsLnhjb25maWcuCisgICAgQ29t
bWVudCBvcHRpb25zIGBTREtST09UYCwgYE1BQ09TX0RFUExPWU1FTlRfVEFSR0VUYCwgYW5kIGBH
Q0NfVkVSU0lPTmAuIElmCisgICAgeW91IGNob29zZSB0aGlzIHJvdXRlIHlvdSBsb3NlIHRoZSBh
YmlsaXR5IHRvIHRhcmdldCBlYXJsaWVyIHZlcnNpb25zIG9mCisgICAgTWFjT1MgWC4KKyogICBJ
bnN0YWxsIGFuIFNESyBmb3IgYW4gZWFybGllciB2ZXJzaW9uLiBUaGlzIGRvZXNuJ3QgYXBwZWFy
IHRvIGJlIHN1cHBvcnRlZAorICAgIGJ5IEFwcGxlLCBidXQgaGFzIGJlZW4gcmVwb3J0ZWQgdG8g
d29yaworICAgIChodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzUzNzg1MTgpLgor
CisjIyMgVHdlYWtpbmcgR29vZ2xlIFRlc3QKKworR29vZ2xlIFRlc3QgY2FuIGJlIHVzZWQgaW4g
ZGl2ZXJzZSBlbnZpcm9ubWVudHMuIFRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gbWF5Citub3Qg
d29yayAob3IgbWF5IG5vdCB3b3JrIHdlbGwpIG91dCBvZiB0aGUgYm94IGluIHNvbWUgZW52aXJv
bm1lbnRzLiBIb3dldmVyLAoreW91IGNhbiBlYXNpbHkgdHdlYWsgR29vZ2xlIFRlc3QgYnkgZGVm
aW5pbmcgY29udHJvbCBtYWNyb3Mgb24gdGhlIGNvbXBpbGVyCitjb21tYW5kIGxpbmUuIEdlbmVy
YWxseSwgdGhlc2UgbWFjcm9zIGFyZSBuYW1lZCBsaWtlIGBHVEVTVF9YWVpgIGFuZCB5b3UgZGVm
aW5lCit0aGVtIHRvIGVpdGhlciAxIG9yIDAgdG8gZW5hYmxlIG9yIGRpc2FibGUgYSBjZXJ0YWlu
IGZlYXR1cmUuCisKK1dlIGxpc3QgdGhlIG1vc3QgZnJlcXVlbnRseSB1c2VkIG1hY3JvcyBiZWxv
dy4gRm9yIGEgY29tcGxldGUgbGlzdCwgc2VlIGZpbGUKK1tpbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXBvcnQuaF0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2Iv
bWFzdGVyL2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oKS4KKworIyMjIENob29z
aW5nIGEgVFIxIFR1cGxlIExpYnJhcnkKKworU29tZSBHb29nbGUgVGVzdCBmZWF0dXJlcyByZXF1
aXJlIHRoZSBDKysgVGVjaG5pY2FsIFJlcG9ydCAxIChUUjEpIHR1cGxlCitsaWJyYXJ5LCB3aGlj
aCBpcyBub3QgeWV0IGF2YWlsYWJsZSB3aXRoIGFsbCBjb21waWxlcnMuIFRoZSBnb29kIG5ld3Mg
aXMgdGhhdAorR29vZ2xlIFRlc3QgaW1wbGVtZW50cyBhIHN1YnNldCBvZiBUUjEgdHVwbGUgdGhh
dCdzIGVub3VnaCBmb3IgaXRzIG93biBuZWVkLCBhbmQKK3dpbGwgYXV0b21hdGljYWxseSB1c2Ug
dGhpcyB3aGVuIHRoZSBjb21waWxlciBkb2Vzbid0IHByb3ZpZGUgVFIxIHR1cGxlLgorCitVc3Vh
bGx5IHlvdSBkb24ndCBuZWVkIHRvIGNhcmUgYWJvdXQgd2hpY2ggdHVwbGUgbGlicmFyeSBHb29n
bGUgVGVzdCB1c2VzLgorSG93ZXZlciwgaWYgeW91ciBwcm9qZWN0IGFscmVhZHkgdXNlcyBUUjEg
dHVwbGUsIHlvdSBuZWVkIHRvIHRlbGwgR29vZ2xlIFRlc3QgdG8KK3VzZSB0aGUgc2FtZSBUUjEg
dHVwbGUgbGlicmFyeSB0aGUgcmVzdCBvZiB5b3VyIHByb2plY3QgdXNlcywgb3IgdGhlIHR3byB0
dXBsZQoraW1wbGVtZW50YXRpb25zIHdpbGwgY2xhc2guIFRvIGRvIHRoYXQsIGFkZAorCisgICAg
LURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0wCisKK3RvIHRoZSBjb21waWxlciBmbGFncyB3aGls
ZSBjb21waWxpbmcgR29vZ2xlIFRlc3QgYW5kIHlvdXIgdGVzdHMuIElmIHlvdSB3YW50IHRvCitm
b3JjZSBHb29nbGUgVGVzdCB0byB1c2UgaXRzIG93biB0dXBsZSBsaWJyYXJ5LCBqdXN0IGFkZAor
CisgICAgLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0xCisKK3RvIHRoZSBjb21waWxlciBmbGFn
cyBpbnN0ZWFkLgorCitJZiB5b3UgZG9uJ3Qgd2FudCBHb29nbGUgVGVzdCB0byB1c2UgdHVwbGUg
YXQgYWxsLCBhZGQKKworICAgIC1ER1RFU1RfSEFTX1RSMV9UVVBMRT0wCisKK2FuZCBhbGwgZmVh
dHVyZXMgdXNpbmcgdHVwbGUgd2lsbCBiZSBkaXNhYmxlZC4KKworIyMjIE11bHRpLXRocmVhZGVk
IFRlc3RzCisKK0dvb2dsZSBUZXN0IGlzIHRocmVhZC1zYWZlIHdoZXJlIHRoZSBwdGhyZWFkIGxp
YnJhcnkgaXMgYXZhaWxhYmxlLiBBZnRlcgorYCNpbmNsdWRlICJndGVzdC9ndGVzdC5oImAsIHlv
dSBjYW4gY2hlY2sgdGhlIGBHVEVTVF9JU19USFJFQURTQUZFYCBtYWNybyB0byBzZWUKK3doZXRo
ZXIgdGhpcyBpcyB0aGUgY2FzZSAoeWVzIGlmIHRoZSBtYWNybyBpcyBgI2RlZmluZWRgIHRvIDEs
IG5vIGlmIGl0J3MKK3VuZGVmaW5lZC4pLgorCitJZiBHb29nbGUgVGVzdCBkb2Vzbid0IGNvcnJl
Y3RseSBkZXRlY3Qgd2hldGhlciBwdGhyZWFkIGlzIGF2YWlsYWJsZSBpbiB5b3VyCitlbnZpcm9u
bWVudCwgeW91IGNhbiBmb3JjZSBpdCB3aXRoCisKKyAgICAtREdURVNUX0hBU19QVEhSRUFEPTEK
Kworb3IKKworICAgIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MAorCitXaGVuIEdvb2dsZSBUZXN0IHVz
ZXMgcHRocmVhZCwgeW91IG1heSBuZWVkIHRvIGFkZCBmbGFncyB0byB5b3VyIGNvbXBpbGVyIGFu
ZC9vcgorbGlua2VyIHRvIHNlbGVjdCB0aGUgcHRocmVhZCBsaWJyYXJ5LCBvciB5b3UnbGwgZ2V0
IGxpbmsgZXJyb3JzLiBJZiB5b3UgdXNlIHRoZQorQ01ha2Ugc2NyaXB0IG9yIHRoZSBkZXByZWNh
dGVkIEF1dG90b29scyBzY3JpcHQsIHRoaXMgaXMgdGFrZW4gY2FyZSBvZiBmb3IgeW91LgorSWYg
eW91IHVzZSB5b3VyIG93biBidWlsZCBzY3JpcHQsIHlvdSdsbCBuZWVkIHRvIHJlYWQgeW91ciBj
b21waWxlciBhbmQgbGlua2VyJ3MKK21hbnVhbCB0byBmaWd1cmUgb3V0IHdoYXQgZmxhZ3MgdG8g
YWRkLgorCisjIyMgQXMgYSBTaGFyZWQgTGlicmFyeSAoRExMKQorCitHb29nbGUgVGVzdCBpcyBj
b21wYWN0LCBzbyBtb3N0IHVzZXJzIGNhbiBidWlsZCBhbmQgbGluayBpdCBhcyBhIHN0YXRpYyBs
aWJyYXJ5Citmb3IgdGhlIHNpbXBsaWNpdHkuIFlvdSBjYW4gY2hvb3NlIHRvIHVzZSBHb29nbGUg
VGVzdCBhcyBhIHNoYXJlZCBsaWJyYXJ5IChrbm93bgorYXMgYSBETEwgb24gV2luZG93cykgaWYg
eW91IHByZWZlci4KKworVG8gY29tcGlsZSAqZ3Rlc3QqIGFzIGEgc2hhcmVkIGxpYnJhcnksIGFk
ZAorCisgICAgLURHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJBUlk9MQorCit0byB0aGUgY29tcGls
ZXIgZmxhZ3MuIFlvdSdsbCBhbHNvIG5lZWQgdG8gdGVsbCB0aGUgbGlua2VyIHRvIHByb2R1Y2Ug
YSBzaGFyZWQKK2xpYnJhcnkgaW5zdGVhZCAtIGNvbnN1bHQgeW91ciBsaW5rZXIncyBtYW51YWwg
Zm9yIGhvdyB0byBkbyBpdC4KKworVG8gY29tcGlsZSB5b3VyICp0ZXN0cyogdGhhdCB1c2UgdGhl
IGd0ZXN0IHNoYXJlZCBsaWJyYXJ5LCBhZGQKKworICAgIC1ER1RFU1RfTElOS0VEX0FTX1NIQVJF
RF9MSUJSQVJZPTEKKwordG8gdGhlIGNvbXBpbGVyIGZsYWdzLgorCitOb3RlOiB3aGlsZSB0aGUg
YWJvdmUgc3RlcHMgYXJlbid0IHRlY2huaWNhbGx5IG5lY2Vzc2FyeSB0b2RheSB3aGVuIHVzaW5n
IHNvbWUKK2NvbXBpbGVycyAoZS5nLiBHQ0MpLCB0aGV5IG1heSBiZWNvbWUgbmVjZXNzYXJ5IGlu
IHRoZSBmdXR1cmUsIGlmIHdlIGRlY2lkZSB0bworaW1wcm92ZSB0aGUgc3BlZWQgb2YgbG9hZGlu
ZyB0aGUgbGlicmFyeSAoc2VlCis8aHR0cDovL2djYy5nbnUub3JnL3dpa2kvVmlzaWJpbGl0eT4g
Zm9yIGRldGFpbHMpLiBUaGVyZWZvcmUgeW91IGFyZSByZWNvbW1lbmRlZAordG8gYWx3YXlzIGFk
ZCB0aGUgYWJvdmUgZmxhZ3Mgd2hlbiB1c2luZyBHb29nbGUgVGVzdCBhcyBhIHNoYXJlZCBsaWJy
YXJ5LgorT3RoZXJ3aXNlIGEgZnV0dXJlIHJlbGVhc2Ugb2YgR29vZ2xlIFRlc3QgbWF5IGJyZWFr
IHlvdXIgYnVpbGQgc2NyaXB0LgorCisjIyMgQXZvaWRpbmcgTWFjcm8gTmFtZSBDbGFzaGVzCisK
K0luIEMrKywgbWFjcm9zIGRvbid0IG9iZXkgbmFtZXNwYWNlcy4gVGhlcmVmb3JlIHR3byBsaWJy
YXJpZXMgdGhhdCBib3RoIGRlZmluZSBhCittYWNybyBvZiB0aGUgc2FtZSBuYW1lIHdpbGwgY2xh
c2ggaWYgeW91IGAjaW5jbHVkZWAgYm90aCBkZWZpbml0aW9ucy4gSW4gY2FzZSBhCitHb29nbGUg
VGVzdCBtYWNybyBjbGFzaGVzIHdpdGggYW5vdGhlciBsaWJyYXJ5LCB5b3UgY2FuIGZvcmNlIEdv
b2dsZSBUZXN0IHRvCityZW5hbWUgaXRzIG1hY3JvIHRvIGF2b2lkIHRoZSBjb25mbGljdC4KKwor
U3BlY2lmaWNhbGx5LCBpZiBib3RoIEdvb2dsZSBUZXN0IGFuZCBzb21lIG90aGVyIGNvZGUgZGVm
aW5lIG1hY3JvIEZPTywgeW91IGNhbgorYWRkCisKKyAgICAtREdURVNUX0RPTlRfREVGSU5FX0ZP
Tz0xCisKK3RvIHRoZSBjb21waWxlciBmbGFncyB0byB0ZWxsIEdvb2dsZSBUZXN0IHRvIGNoYW5n
ZSB0aGUgbWFjcm8ncyBuYW1lIGZyb20gYEZPT2AKK3RvIGBHVEVTVF9GT09gLiBDdXJyZW50bHkg
YEZPT2AgY2FuIGJlIGBGQUlMYCwgYFNVQ0NFRURgLCBvciBgVEVTVGAuIEZvcgorZXhhbXBsZSwg
d2l0aCBgLURHVEVTVF9ET05UX0RFRklORV9URVNUPTFgLCB5b3UnbGwgbmVlZCB0byB3cml0ZQor
CisgICAgR1RFU1RfVEVTVChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KKworaW5zdGVhZCBv
ZgorCisgICAgVEVTVChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KKworaW4gb3JkZXIgdG8g
ZGVmaW5lIGEgdGVzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtl
L0NvbmZpZy5jbWFrZS5pbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL0NvbmZpZy5j
bWFrZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMmJlNDQ5OGIxYTA3OTY4MWExMjllMzFiMTdjNTdlMTgxMjZh
NjNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY21ha2UvQ29u
ZmlnLmNtYWtlLmluCkBAIC0wLDAgKzEsOSBAQAorQFBBQ0tBR0VfSU5JVEAKK2luY2x1ZGUoQ01h
a2VGaW5kRGVwZW5kZW5jeU1hY3JvKQoraWYgKEBHVEVTVF9IQVNfUFRIUkVBREApCisgIHNldChU
SFJFQURTX1BSRUZFUl9QVEhSRUFEX0ZMQUcgQFRIUkVBRFNfUFJFRkVSX1BUSFJFQURfRkxBR0Ap
CisgIGZpbmRfZGVwZW5kZW5jeShUaHJlYWRzKQorZW5kaWYoKQorCitpbmNsdWRlKCIke0NNQUtF
X0NVUlJFTlRfTElTVF9ESVJ9L0B0YXJnZXRzX2V4cG9ydF9uYW1lQC5jbWFrZSIpCitjaGVja19y
ZXF1aXJlZF9jb21wb25lbnRzKCJAcHJvamVjdF9uYW1lQCIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9ndGVzdC5wYy5pbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2NtYWtlL2d0ZXN0LnBjLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3OTY3YWQ1NmZmMmMzMmVkNGJhMDY3
MDNhZWE1MjVkY2FkMmNlN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9jbWFrZS9ndGVzdC5wYy5pbgpAQCAtMCwwICsxLDkgQEAKK2xpYmRpcj1AQ01BS0VfSU5T
VEFMTF9GVUxMX0xJQkRJUkAKK2luY2x1ZGVkaXI9QENNQUtFX0lOU1RBTExfRlVMTF9JTkNMVURF
RElSQAorCitOYW1lOiBndGVzdAorRGVzY3JpcHRpb246IEdvb2dsZVRlc3QgKHdpdGhvdXQgbWFp
bigpIGZ1bmN0aW9uKQorVmVyc2lvbjogQFBST0pFQ1RfVkVSU0lPTkAKK1VSTDogaHR0cHM6Ly9n
aXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0CitMaWJzOiAtTCR7bGliZGlyfSAtbGd0ZXN0IEBD
TUFLRV9USFJFQURfTElCU19JTklUQAorQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gQEdURVNUX0hB
U19QVEhSRUFEX01BQ1JPQCBAQ01BS0VfVEhSRUFEX0xJQlNfSU5JVEAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2d0ZXN0X21haW4ucGMuaW4gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9jbWFrZS9ndGVzdF9tYWluLnBjLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlMjVkOWM3
M2M2ODNiNjQxN2I5OWJiNzAzYzEzYWUxNmJhOGE5NTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9jbWFrZS9ndGVzdF9tYWluLnBjLmluCkBAIC0wLDAgKzEsMTAg
QEAKK2xpYmRpcj1AQ01BS0VfSU5TVEFMTF9GVUxMX0xJQkRJUkAKK2luY2x1ZGVkaXI9QENNQUtF
X0lOU1RBTExfRlVMTF9JTkNMVURFRElSQAorCitOYW1lOiBndGVzdF9tYWluCitEZXNjcmlwdGlv
bjogR29vZ2xlVGVzdCAod2l0aCBtYWluKCkgZnVuY3Rpb24pCitWZXJzaW9uOiBAUFJPSkVDVF9W
RVJTSU9OQAorVVJMOiBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QKK1JlcXVp
cmVzOiBndGVzdAorTGliczogLUwke2xpYmRpcn0gLWxndGVzdF9tYWluIEBDTUFLRV9USFJFQURf
TElCU19JTklUQAorQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gQEdURVNUX0hBU19QVEhSRUFEX01B
Q1JPQCBAQ01BS0VfVEhSRUFEX0xJQlNfSU5JVEAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2NtYWtlL2ludGVybmFsX3V0aWxzLmNtYWtlIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvY21ha2UvaW50ZXJuYWxfdXRpbHMuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGMxZjliYTk5Y2Y1
MDU3NGY2NjlkZDdkZWJhMzI0ZGNlNDA1OTVmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2NtYWtlL2ludGVybmFsX3V0aWxzLmNtYWtlCkBAIC0wLDAgKzEsMzE4
IEBACisjIERlZmluZXMgZnVuY3Rpb25zIGFuZCBtYWNyb3MgdXNlZnVsIGZvciBidWlsZGluZyBH
b29nbGUgVGVzdCBhbmQKKyMgR29vZ2xlIE1vY2suCisjCisjIE5vdGU6CisjCisjIC0gVGhpcyBm
aWxlIHdpbGwgYmUgcnVuIHR3aWNlIHdoZW4gYnVpbGRpbmcgR29vZ2xlIE1vY2sgKG9uY2Ugdmlh
CisjICAgR29vZ2xlIFRlc3QncyBDTWFrZUxpc3RzLnR4dCwgYW5kIG9uY2UgdmlhIEdvb2dsZSBN
b2NrJ3MpLgorIyAgIFRoZXJlZm9yZSBpdCBzaG91bGRuJ3QgaGF2ZSBhbnkgc2lkZSBlZmZlY3Rz
IG90aGVyIHRoYW4gZGVmaW5pbmcKKyMgICB0aGUgZnVuY3Rpb25zIGFuZCBtYWNyb3MuCisjCisj
IC0gVGhlIGZ1bmN0aW9ucy9tYWNyb3MgZGVmaW5lZCBpbiB0aGlzIGZpbGUgbWF5IGRlcGVuZCBv
biBHb29nbGUKKyMgICBUZXN0IGFuZCBHb29nbGUgTW9jaydzIG9wdGlvbigpIGRlZmluaXRpb25z
LCBhbmQgdGh1cyBtdXN0IGJlCisjICAgY2FsbGVkICphZnRlciogdGhlIG9wdGlvbnMgaGF2ZSBi
ZWVuIGRlZmluZWQuCisKKyMgVHdlYWtzIENNYWtlJ3MgZGVmYXVsdCBjb21waWxlci9saW5rZXIg
c2V0dGluZ3MgdG8gc3VpdCBHb29nbGUgVGVzdCdzIG5lZWRzLgorIworIyBUaGlzIG11c3QgYmUg
YSBtYWNybygpLCBhcyBpbnNpZGUgYSBmdW5jdGlvbiBzdHJpbmcoKSBjYW4gb25seQorIyB1cGRh
dGUgdmFyaWFibGVzIGluIHRoZSBmdW5jdGlvbiBzY29wZS4KK21hY3JvKGZpeF9kZWZhdWx0X2Nv
bXBpbGVyX3NldHRpbmdzXykKKyAgaWYgKE1TVkMpCisgICAgIyBGb3IgTVNWQywgQ01ha2Ugc2V0
cyBjZXJ0YWluIGZsYWdzIHRvIGRlZmF1bHRzIHdlIHdhbnQgdG8gb3ZlcnJpZGUuCisgICAgIyBU
aGlzIHJlcGxhY2VtZW50IGNvZGUgaXMgdGFrZW4gZnJvbSBzYW1wbGUgaW4gdGhlIENNYWtlIFdp
a2kgYXQKKyAgICAjIGh0dHBzOi8vZ2l0bGFiLmtpdHdhcmUuY29tL2NtYWtlL2NvbW11bml0eS93
aWtpcy9GQVEjZHluYW1pYy1yZXBsYWNlLgorICAgIGZvcmVhY2ggKGZsYWdfdmFyCisgICAgICAg
ICAgICAgQ01BS0VfQ1hYX0ZMQUdTIENNQUtFX0NYWF9GTEFHU19ERUJVRyBDTUFLRV9DWFhfRkxB
R1NfUkVMRUFTRQorICAgICAgICAgICAgIENNQUtFX0NYWF9GTEFHU19NSU5TSVpFUkVMIENNQUtF
X0NYWF9GTEFHU19SRUxXSVRIREVCSU5GTykKKyAgICAgIGlmIChOT1QgQlVJTERfU0hBUkVEX0xJ
QlMgQU5EIE5PVCBndGVzdF9mb3JjZV9zaGFyZWRfY3J0KQorICAgICAgICAjIFdoZW4gR29vZ2xl
IFRlc3QgaXMgYnVpbHQgYXMgYSBzaGFyZWQgbGlicmFyeSwgaXQgc2hvdWxkIGFsc28gdXNlCisg
ICAgICAgICMgc2hhcmVkIHJ1bnRpbWUgbGlicmFyaWVzLiAgT3RoZXJ3aXNlLCBpdCBtYXkgZW5k
IHVwIHdpdGggbXVsdGlwbGUKKyAgICAgICAgIyBjb3BpZXMgb2YgcnVudGltZSBsaWJyYXJ5IGRh
dGEgaW4gZGlmZmVyZW50IG1vZHVsZXMsIHJlc3VsdGluZyBpbgorICAgICAgICAjIGhhcmQtdG8t
ZmluZCBjcmFzaGVzLiBXaGVuIGl0IGlzIGJ1aWx0IGFzIGEgc3RhdGljIGxpYnJhcnksIGl0IGlz
CisgICAgICAgICMgcHJlZmVyYWJsZSB0byB1c2UgQ1JUIGFzIHN0YXRpYyBsaWJyYXJpZXMsIGFz
IHdlIGRvbid0IGhhdmUgdG8gcmVseQorICAgICAgICAjIG9uIENSVCBETExzIGJlaW5nIGF2YWls
YWJsZS4gQ01ha2UgYWx3YXlzIGRlZmF1bHRzIHRvIHVzaW5nIHNoYXJlZAorICAgICAgICAjIENS
VCBsaWJyYXJpZXMsIHNvIHdlIG92ZXJyaWRlIHRoYXQgZGVmYXVsdCBoZXJlLgorICAgICAgICBz
dHJpbmcoUkVQTEFDRSAiL01EIiAiLU1UIiAke2ZsYWdfdmFyfSAiJHske2ZsYWdfdmFyfX0iKQor
ICAgICAgZW5kaWYoKQorCisgICAgICAjIFdlIHByZWZlciBtb3JlIHN0cmljdCB3YXJuaW5nIGNo
ZWNraW5nIGZvciBidWlsZGluZyBHb29nbGUgVGVzdC4KKyAgICAgICMgUmVwbGFjZXMgL1czIHdp
dGggL1c0IGluIGRlZmF1bHRzLgorICAgICAgc3RyaW5nKFJFUExBQ0UgIi9XMyIgIi9XNCIgJHtm
bGFnX3Zhcn0gIiR7JHtmbGFnX3Zhcn19IikKKworICAgICAgIyBQcmV2ZW50IEQ5MDI1IHdhcm5p
bmcgZm9yIHRhcmdldHMgdGhhdCBoYXZlIGV4Y2VwdGlvbiBoYW5kbGluZworICAgICAgIyB0dXJu
ZWQgb2ZmICgvRUhzLWMtIGZsYWcpLiBXaGVyZSByZXF1aXJlZCwgZXhjZXB0aW9ucyBhcmUgZXhw
bGljaXRseQorICAgICAgIyByZS1lbmFibGVkIHVzaW5nIHRoZSBjeHhfZXhjZXB0aW9uX2ZsYWdz
IHZhcmlhYmxlLgorICAgICAgc3RyaW5nKFJFUExBQ0UgIi9FSHNjIiAiIiAke2ZsYWdfdmFyfSAi
JHske2ZsYWdfdmFyfX0iKQorICAgIGVuZGZvcmVhY2goKQorICBlbmRpZigpCitlbmRtYWNybygp
CisKKyMgRGVmaW5lcyB0aGUgY29tcGlsZXIvbGlua2VyIGZsYWdzIHVzZWQgdG8gYnVpbGQgR29v
Z2xlIFRlc3QgYW5kCisjIEdvb2dsZSBNb2NrLiAgWW91IGNhbiB0d2VhayB0aGVzZSBkZWZpbml0
aW9ucyB0byBzdWl0IHlvdXIgbmVlZC4gIEEKKyMgdmFyaWFibGUncyB2YWx1ZSBpcyBlbXB0eSBi
ZWZvcmUgaXQncyBleHBsaWNpdGx5IGFzc2lnbmVkIHRvLgorbWFjcm8oY29uZmlnX2NvbXBpbGVy
X2FuZF9saW5rZXIpCisgICMgTm90ZTogcHRocmVhZHMgb24gTWluR1cgaXMgbm90IHN1cHBvcnRl
ZCwgZXZlbiBpZiBhdmFpbGFibGUKKyAgIyBpbnN0ZWFkLCB3ZSB1c2Ugd2luZG93cyB0aHJlYWRp
bmcgcHJpbWl0aXZlcworICB1bnNldChHVEVTVF9IQVNfUFRIUkVBRCkKKyAgaWYgKE5PVCBndGVz
dF9kaXNhYmxlX3B0aHJlYWRzIEFORCBOT1QgTUlOR1cpCisgICAgIyBEZWZpbmVzIENNQUtFX1VT
RV9QVEhSRUFEU19JTklUIGFuZCBDTUFLRV9USFJFQURfTElCU19JTklULgorICAgIHNldChUSFJF
QURTX1BSRUZFUl9QVEhSRUFEX0ZMQUcgT04pCisgICAgZmluZF9wYWNrYWdlKFRocmVhZHMpCisg
ICAgaWYgKENNQUtFX1VTRV9QVEhSRUFEU19JTklUKQorICAgICAgc2V0KEdURVNUX0hBU19QVEhS
RUFEIE9OKQorICAgIGVuZGlmKCkKKyAgZW5kaWYoKQorCisgIGZpeF9kZWZhdWx0X2NvbXBpbGVy
X3NldHRpbmdzXygpCisgIGlmIChNU1ZDKQorICAgICMgTmV3bGluZXMgaW5zaWRlIGZsYWdzIHZh
cmlhYmxlcyBicmVhayBDTWFrZSdzIE5NYWtlIGdlbmVyYXRvci4KKyAgICAjIFRPRE8odmxhZGxA
Z29vZ2xlLmNvbSk6IEFkZCAtUlRDcyBhbmQgLVJUQ3UgdG8gZGVidWcgYnVpbGRzLgorICAgIHNl
dChjeHhfYmFzZV9mbGFncyAiLUdTIC1XNCAtV1ggLXdkNDI1MSAtd2Q0Mjc1IC1ub2xvZ28gLUog
LVppIikKKyAgICBpZiAoTVNWQ19WRVJTSU9OIExFU1MgMTQwMCkgICMgMTQwMCBpcyBWaXN1YWwg
U3R1ZGlvIDIwMDUKKyAgICAgICMgU3VwcHJlc3Mgc3B1cmlvdXMgd2FybmluZ3MgTVNWQyA3LjEg
c29tZXRpbWVzIGlzc3Vlcy4KKyAgICAgICMgRm9yY2luZyB2YWx1ZSB0byBib29sLgorICAgICAg
c2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtd2Q0ODAwIikKKyAgICAgICMg
Q29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVyYXRvciBjb3VsZCBub3QgYmUgZ2Vu
ZXJhdGVkLgorICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtd2Q0
NTExIC13ZDQ1MTIiKQorICAgICAgIyBDb21wYXRpYmlsaXR5IHdhcm5pbmdzIG5vdCBhcHBsaWNh
YmxlIHRvIEdvb2dsZSBUZXN0LgorICAgICAgIyBSZXNvbHZlZCBvdmVybG9hZCB3YXMgZm91bmQg
YnkgYXJndW1lbnQtZGVwZW5kZW50IGxvb2t1cC4KKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAi
JHtjeHhfYmFzZV9mbGFnc30gLXdkNDY3NSIpCisgICAgZW5kaWYoKQorICAgIGlmIChNU1ZDX1ZF
UlNJT04gTEVTUyAxNTAwKSAgIyAxNTAwIGlzIFZpc3VhbCBTdHVkaW8gMjAwOAorICAgICAgIyBD
b25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50LgorICAgICAgIyBXaGVuIGNvbXBpbGlu
ZyB3aXRoIC9XNCwgd2UgZ2V0IHNldmVyYWwgaW5zdGFuY2VzIG9mIEM0MTI3CisgICAgICAjIChD
b25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50KS4gSW4gb3VyIGNvZGUsIHdlIGRpc2Fi
bGUgdGhhdAorICAgICAgIyB3YXJuaW5nIG9uIGEgY2FzZS1ieS1jYXNlIGJhc2lzLiBIb3dldmVy
LCBvbiBWaXN1YWwgU3R1ZGlvIDIwMDUsCisgICAgICAjIHRoZSB3YXJuaW5nIGZpcmVzIG9uIHN0
ZDo6bGlzdC4gVGhlcmVmb3JlIG9uIHRoYXQgY29tcGlsZXIgYW5kIGVhcmxpZXIsCisgICAgICAj
IHdlIGRpc2FibGUgdGhlIHdhcm5pbmcgcHJvamVjdC13aWRlLgorICAgICAgc2V0KGN4eF9iYXNl
X2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtd2Q0MTI3IikKKyAgICBlbmRpZigpCisgICAgaWYg
KE5PVCAoTVNWQ19WRVJTSU9OIExFU1MgMTcwMCkpICAjIDE3MDAgaXMgVmlzdWFsIFN0dWRpbyAy
MDEyLgorICAgICAgIyBTdXBwcmVzcyAidW5yZWFjaGFibGUgY29kZSIgd2FybmluZyBvbiBWUyAy
MDEyIGFuZCBsYXRlci4KKyAgICAgICMgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9u
cy8zMjMyNjY5IGV4cGxhaW5zIHRoZSBpc3N1ZS4KKyAgICAgIHNldChjeHhfYmFzZV9mbGFncyAi
JHtjeHhfYmFzZV9mbGFnc30gLXdkNDcwMiIpCisgICAgZW5kaWYoKQorCisgICAgc2V0KGN4eF9i
YXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtRF9VTklDT0RFIC1EVU5JQ09ERSAtRFdJTjMy
IC1EX1dJTjMyIikKKyAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC1E
U1RSSUNUIC1EV0lOMzJfTEVBTl9BTkRfTUVBTiIpCisgICAgc2V0KGN4eF9leGNlcHRpb25fZmxh
Z3MgIi1FSHNjIC1EX0hBU19FWENFUFRJT05TPTEiKQorICAgIHNldChjeHhfbm9fZXhjZXB0aW9u
X2ZsYWdzICItRUhzLWMtIC1EX0hBU19FWENFUFRJT05TPTAiKQorICAgIHNldChjeHhfbm9fcnR0
aV9mbGFncyAiLUdSLSIpCisgIGVsc2VpZiAoQ01BS0VfQ09NUElMRVJfSVNfR05VQ1hYKQorICAg
IHNldChjeHhfYmFzZV9mbGFncyAiLVdhbGwgLVdzaGFkb3cgLVdlcnJvciIpCisgICAgaWYoTk9U
IENNQUtFX0NYWF9DT01QSUxFUl9WRVJTSU9OIFZFUlNJT05fTEVTUyA3LjAuMCkKKyAgICAgIHNl
dChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLVduby1lcnJvcj1kYW5nbGluZy1l
bHNlIikKKyAgICBlbmRpZigpCisgICAgc2V0KGN4eF9leGNlcHRpb25fZmxhZ3MgIi1mZXhjZXB0
aW9ucyIpCisgICAgc2V0KGN4eF9ub19leGNlcHRpb25fZmxhZ3MgIi1mbm8tZXhjZXB0aW9ucyIp
CisgICAgIyBVbnRpbCB2ZXJzaW9uIDQuMy4yLCBHQ0MgZG9lc24ndCBkZWZpbmUgYSBtYWNybyB0
byBpbmRpY2F0ZQorICAgICMgd2hldGhlciBSVFRJIGlzIGVuYWJsZWQuICBUaGVyZWZvcmUgd2Ug
ZGVmaW5lIEdURVNUX0hBU19SVFRJCisgICAgIyBleHBsaWNpdGx5LgorICAgIHNldChjeHhfbm9f
cnR0aV9mbGFncyAiLWZuby1ydHRpIC1ER1RFU1RfSEFTX1JUVEk9MCIpCisgICAgc2V0KGN4eF9z
dHJpY3RfZmxhZ3MKKyAgICAgICItV2V4dHJhIC1Xbm8tdW51c2VkLXBhcmFtZXRlciAtV25vLW1p
c3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIikKKyAgZWxzZWlmIChDTUFLRV9DWFhfQ09NUElMRVJf
SUQgU1RSRVFVQUwgIlN1blBybyIpCisgICAgc2V0KGN4eF9leGNlcHRpb25fZmxhZ3MgIi1mZWF0
dXJlcz1leGNlcHQiKQorICAgICMgU3VuIFBybyBkb2Vzbid0IHByb3ZpZGUgbWFjcm9zIHRvIGlu
ZGljYXRlIHdoZXRoZXIgZXhjZXB0aW9ucyBhbmQKKyAgICAjIFJUVEkgYXJlIGVuYWJsZWQsIHNv
IHdlIGRlZmluZSBHVEVTVF9IQVNfKiBleHBsaWNpdGx5LgorICAgIHNldChjeHhfbm9fZXhjZXB0
aW9uX2ZsYWdzICItZmVhdHVyZXM9bm8lZXhjZXB0IC1ER1RFU1RfSEFTX0VYQ0VQVElPTlM9MCIp
CisgICAgc2V0KGN4eF9ub19ydHRpX2ZsYWdzICItZmVhdHVyZXM9bm8lcnR0aSAtREdURVNUX0hB
U19SVFRJPTAiKQorICBlbHNlaWYgKENNQUtFX0NYWF9DT01QSUxFUl9JRCBTVFJFUVVBTCAiVmlz
dWFsQWdlIiBPUgorICAgICAgQ01BS0VfQ1hYX0NPTVBJTEVSX0lEIFNUUkVRVUFMICJYTCIpCisg
ICAgIyBDTWFrZSAyLjggY2hhbmdlcyBWaXN1YWwgQWdlJ3MgY29tcGlsZXIgSUQgdG8gIlhMIi4K
KyAgICBzZXQoY3h4X2V4Y2VwdGlvbl9mbGFncyAiLXFlaCIpCisgICAgc2V0KGN4eF9ub19leGNl
cHRpb25fZmxhZ3MgIi1xbm9laCIpCisgICAgIyBVbnRpbCB2ZXJzaW9uIDkuMCwgVmlzdWFsIEFn
ZSBkb2Vzbid0IGRlZmluZSBhIG1hY3JvIHRvIGluZGljYXRlCisgICAgIyB3aGV0aGVyIFJUVEkg
aXMgZW5hYmxlZC4gIFRoZXJlZm9yZSB3ZSBkZWZpbmUgR1RFU1RfSEFTX1JUVEkKKyAgICAjIGV4
cGxpY2l0bHkuCisgICAgc2V0KGN4eF9ub19ydHRpX2ZsYWdzICItcW5vcnR0aSAtREdURVNUX0hB
U19SVFRJPTAiKQorICBlbHNlaWYgKENNQUtFX0NYWF9DT01QSUxFUl9JRCBTVFJFUVVBTCAiSFAi
KQorICAgIHNldChjeHhfYmFzZV9mbGFncyAiLUFBIC1tdCIpCisgICAgc2V0KGN4eF9leGNlcHRp
b25fZmxhZ3MgIi1ER1RFU1RfSEFTX0VYQ0VQVElPTlM9MSIpCisgICAgc2V0KGN4eF9ub19leGNl
cHRpb25fZmxhZ3MgIitub2VoIC1ER1RFU1RfSEFTX0VYQ0VQVElPTlM9MCIpCisgICAgIyBSVFRJ
IGNhbiBub3QgYmUgZGlzYWJsZWQgaW4gSFAgYUNDIGNvbXBpbGVyLgorICAgIHNldChjeHhfbm9f
cnR0aV9mbGFncyAiIikKKyAgZW5kaWYoKQorCisgICMgVGhlIHB0aHJlYWRzIGxpYnJhcnkgaXMg
YXZhaWxhYmxlIGFuZCBhbGxvd2VkPworICBpZiAoREVGSU5FRCBHVEVTVF9IQVNfUFRIUkVBRCkK
KyAgICBzZXQoR1RFU1RfSEFTX1BUSFJFQURfTUFDUk8gIi1ER1RFU1RfSEFTX1BUSFJFQUQ9MSIp
CisgIGVsc2UoKQorICAgIHNldChHVEVTVF9IQVNfUFRIUkVBRF9NQUNSTyAiLURHVEVTVF9IQVNf
UFRIUkVBRD0wIikKKyAgZW5kaWYoKQorICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2Vf
ZmxhZ3N9ICR7R1RFU1RfSEFTX1BUSFJFQURfTUFDUk99IikKKworICAjIEZvciBidWlsZGluZyBn
dGVzdCdzIG93biB0ZXN0cyBhbmQgc2FtcGxlcy4KKyAgc2V0KGN4eF9leGNlcHRpb24gIiR7Y3h4
X2Jhc2VfZmxhZ3N9ICR7Y3h4X2V4Y2VwdGlvbl9mbGFnc30iKQorICBzZXQoY3h4X25vX2V4Y2Vw
dGlvbgorICAgICIke0NNQUtFX0NYWF9GTEFHU30gJHtjeHhfYmFzZV9mbGFnc30gJHtjeHhfbm9f
ZXhjZXB0aW9uX2ZsYWdzfSIpCisgIHNldChjeHhfZGVmYXVsdCAiJHtjeHhfZXhjZXB0aW9ufSIp
CisgIHNldChjeHhfbm9fcnR0aSAiJHtjeHhfZGVmYXVsdH0gJHtjeHhfbm9fcnR0aV9mbGFnc30i
KQorICBzZXQoY3h4X3VzZV9vd25fdHVwbGUgIiR7Y3h4X2RlZmF1bHR9IC1ER1RFU1RfVVNFX09X
Tl9UUjFfVFVQTEU9MSIpCisKKyAgIyBGb3IgYnVpbGRpbmcgdGhlIGd0ZXN0IGxpYnJhcmllcy4K
KyAgc2V0KGN4eF9zdHJpY3QgIiR7Y3h4X2RlZmF1bHR9ICR7Y3h4X3N0cmljdF9mbGFnc30iKQor
ZW5kbWFjcm8oKQorCisjIERlZmluZXMgdGhlIGd0ZXN0ICYgZ3Rlc3RfbWFpbiBsaWJyYXJpZXMu
ICBVc2VyIHRlc3RzIHNob3VsZCBsaW5rCisjIHdpdGggb25lIG9mIHRoZW0uCitmdW5jdGlvbihj
eHhfbGlicmFyeV93aXRoX3R5cGUgbmFtZSB0eXBlIGN4eF9mbGFncykKKyAgIyB0eXBlIGNhbiBi
ZSBlaXRoZXIgU1RBVElDIG9yIFNIQVJFRCB0byBkZW5vdGUgYSBzdGF0aWMgb3Igc2hhcmVkIGxp
YnJhcnkuCisgICMgQVJHTiByZWZlcnMgdG8gYWRkaXRpb25hbCBhcmd1bWVudHMgYWZ0ZXIgJ2N4
eF9mbGFncycuCisgIGFkZF9saWJyYXJ5KCR7bmFtZX0gJHt0eXBlfSAke0FSR059KQorICBzZXRf
dGFyZ2V0X3Byb3BlcnRpZXMoJHtuYW1lfQorICAgIFBST1BFUlRJRVMKKyAgICBDT01QSUxFX0ZM
QUdTICIke2N4eF9mbGFnc30iKQorICAjIEdlbmVyYXRlIGRlYnVnIGxpYnJhcnkgbmFtZSB3aXRo
IGEgcG9zdGZpeC4KKyAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7bmFtZX0KKyAgICBQUk9QRVJU
SUVTCisgICAgREVCVUdfUE9TVEZJWCAiZCIpCisgIGlmIChCVUlMRF9TSEFSRURfTElCUyBPUiB0
eXBlIFNUUkVRVUFMICJTSEFSRUQiKQorICAgIHNldF90YXJnZXRfcHJvcGVydGllcygke25hbWV9
CisgICAgICBQUk9QRVJUSUVTCisgICAgICBDT01QSUxFX0RFRklOSVRJT05TICJHVEVTVF9DUkVB
VEVfU0hBUkVEX0xJQlJBUlk9MSIpCisgICAgaWYgKE5PVCAiJHtDTUFLRV9WRVJTSU9OfSIgVkVS
U0lPTl9MRVNTICIyLjguMTEiKQorICAgICAgdGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMoJHtu
YW1lfSBJTlRFUkZBQ0UKKyAgICAgICAgJDxJTlNUQUxMX0lOVEVSRkFDRTpHVEVTVF9MSU5LRURf
QVNfU0hBUkVEX0xJQlJBUlk9MT4pCisgICAgZW5kaWYoKQorICBlbmRpZigpCisgIGlmIChERUZJ
TkVEIEdURVNUX0hBU19QVEhSRUFEKQorICAgIGlmICgiJHtDTUFLRV9WRVJTSU9OfSIgVkVSU0lP
Tl9MRVNTICIzLjEuMCIpCisgICAgICBzZXQodGhyZWFkc19zcGVjICR7Q01BS0VfVEhSRUFEX0xJ
QlNfSU5JVH0pCisgICAgZWxzZSgpCisgICAgICBzZXQodGhyZWFkc19zcGVjIFRocmVhZHM6OlRo
cmVhZHMpCisgICAgZW5kaWYoKQorICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke25hbWV9IFBV
QkxJQyAke3RocmVhZHNfc3BlY30pCisgIGVuZGlmKCkKK2VuZGZ1bmN0aW9uKCkKKworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisjCisjIEhlbHBlciBmdW5jdGlvbnMgZm9yIGNyZWF0aW5nIGJ1aWxkIHRhcmdl
dHMuCisKK2Z1bmN0aW9uKGN4eF9zaGFyZWRfbGlicmFyeSBuYW1lIGN4eF9mbGFncykKKyAgY3h4
X2xpYnJhcnlfd2l0aF90eXBlKCR7bmFtZX0gU0hBUkVEICIke2N4eF9mbGFnc30iICR7QVJHTn0p
CitlbmRmdW5jdGlvbigpCisKK2Z1bmN0aW9uKGN4eF9saWJyYXJ5IG5hbWUgY3h4X2ZsYWdzKQor
ICBjeHhfbGlicmFyeV93aXRoX3R5cGUoJHtuYW1lfSAiIiAiJHtjeHhfZmxhZ3N9IiAke0FSR059
KQorZW5kZnVuY3Rpb24oKQorCisjIGN4eF9leGVjdXRhYmxlX3dpdGhfZmxhZ3MobmFtZSBjeHhf
ZmxhZ3MgbGlicyBzcmNzLi4uKQorIworIyBjcmVhdGVzIGEgbmFtZWQgQysrIGV4ZWN1dGFibGUg
dGhhdCBkZXBlbmRzIG9uIHRoZSBnaXZlbiBsaWJyYXJpZXMgYW5kCisjIGlzIGJ1aWx0IGZyb20g
dGhlIGdpdmVuIHNvdXJjZSBmaWxlcyB3aXRoIHRoZSBnaXZlbiBjb21waWxlciBmbGFncy4KK2Z1
bmN0aW9uKGN4eF9leGVjdXRhYmxlX3dpdGhfZmxhZ3MgbmFtZSBjeHhfZmxhZ3MgbGlicykKKyAg
YWRkX2V4ZWN1dGFibGUoJHtuYW1lfSAke0FSR059KQorICBpZiAoTVNWQyBBTkQgKE5PVCAoTVNW
Q19WRVJTSU9OIExFU1MgMTcwMCkpKSAgIyAxNzAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxMi4KKyAg
ICAjIEJpZ09iaiByZXF1aXJlZCBmb3IgdGVzdHMuCisgICAgc2V0KGN4eF9mbGFncyAiJHtjeHhf
ZmxhZ3N9IC1iaWdvYmoiKQorICBlbmRpZigpCisgIGlmIChjeHhfZmxhZ3MpCisgICAgc2V0X3Rh
cmdldF9wcm9wZXJ0aWVzKCR7bmFtZX0KKyAgICAgIFBST1BFUlRJRVMKKyAgICAgIENPTVBJTEVf
RkxBR1MgIiR7Y3h4X2ZsYWdzfSIpCisgIGVuZGlmKCkKKyAgaWYgKEJVSUxEX1NIQVJFRF9MSUJT
KQorICAgIHNldF90YXJnZXRfcHJvcGVydGllcygke25hbWV9CisgICAgICBQUk9QRVJUSUVTCisg
ICAgICBDT01QSUxFX0RFRklOSVRJT05TICJHVEVTVF9MSU5LRURfQVNfU0hBUkVEX0xJQlJBUlk9
MSIpCisgIGVuZGlmKCkKKyAgIyBUbyBzdXBwb3J0IG1peGluZyBsaW5raW5nIGluIHN0YXRpYyBh
bmQgZHluYW1pYyBsaWJyYXJpZXMsIGxpbmsgZWFjaAorICAjIGxpYnJhcnkgaW4gd2l0aCBhbiBl
eHRyYSBjYWxsIHRvIHRhcmdldF9saW5rX2xpYnJhcmllcy4KKyAgZm9yZWFjaCAobGliICIke2xp
YnN9IikKKyAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtuYW1lfSAke2xpYn0pCisgIGVuZGZv
cmVhY2goKQorZW5kZnVuY3Rpb24oKQorCisjIGN4eF9leGVjdXRhYmxlKG5hbWUgZGlyIGxpYiBz
cmNzLi4uKQorIworIyBjcmVhdGVzIGEgbmFtZWQgdGFyZ2V0IHRoYXQgZGVwZW5kcyBvbiB0aGUg
Z2l2ZW4gbGlicyBhbmQgaXMgYnVpbHQKKyMgZnJvbSB0aGUgZ2l2ZW4gc291cmNlIGZpbGVzLiAg
ZGlyL25hbWUuY2MgaXMgaW1wbGljaXRseSBpbmNsdWRlZCBpbgorIyB0aGUgc291cmNlIGZpbGUg
bGlzdC4KK2Z1bmN0aW9uKGN4eF9leGVjdXRhYmxlIG5hbWUgZGlyIGxpYnMpCisgIGN4eF9leGVj
dXRhYmxlX3dpdGhfZmxhZ3MoCisgICAgJHtuYW1lfSAiJHtjeHhfZGVmYXVsdH0iICIke2xpYnN9
IiAiJHtkaXJ9LyR7bmFtZX0uY2MiICR7QVJHTn0pCitlbmRmdW5jdGlvbigpCisKKyMgU2V0cyBQ
WVRIT05JTlRFUlBfRk9VTkQgYW5kIFBZVEhPTl9FWEVDVVRBQkxFLgorZmluZF9wYWNrYWdlKFB5
dGhvbkludGVycCkKKworIyBjeHhfdGVzdF93aXRoX2ZsYWdzKG5hbWUgY3h4X2ZsYWdzIGxpYnMg
c3Jjcy4uLikKKyMKKyMgY3JlYXRlcyBhIG5hbWVkIEMrKyB0ZXN0IHRoYXQgZGVwZW5kcyBvbiB0
aGUgZ2l2ZW4gbGlicyBhbmQgaXMgYnVpbHQKKyMgZnJvbSB0aGUgZ2l2ZW4gc291cmNlIGZpbGVz
IHdpdGggdGhlIGdpdmVuIGNvbXBpbGVyIGZsYWdzLgorZnVuY3Rpb24oY3h4X3Rlc3Rfd2l0aF9m
bGFncyBuYW1lIGN4eF9mbGFncyBsaWJzKQorICBjeHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzKCR7
bmFtZX0gIiR7Y3h4X2ZsYWdzfSIgIiR7bGlic30iICR7QVJHTn0pCisgIGFkZF90ZXN0KE5BTUUg
JHtuYW1lfSBDT01NQU5EICR7bmFtZX0pCitlbmRmdW5jdGlvbigpCisKKyMgY3h4X3Rlc3QobmFt
ZSBsaWJzIHNyY3MuLi4pCisjCisjIGNyZWF0ZXMgYSBuYW1lZCB0ZXN0IHRhcmdldCB0aGF0IGRl
cGVuZHMgb24gdGhlIGdpdmVuIGxpYnMgYW5kIGlzCisjIGJ1aWx0IGZyb20gdGhlIGdpdmVuIHNv
dXJjZSBmaWxlcy4gIFVubGlrZSBjeHhfdGVzdF93aXRoX2ZsYWdzLAorIyB0ZXN0L25hbWUuY2Mg
aXMgYWxyZWFkeSBpbXBsaWNpdGx5IGluY2x1ZGVkIGluIHRoZSBzb3VyY2UgZmlsZSBsaXN0Lgor
ZnVuY3Rpb24oY3h4X3Rlc3QgbmFtZSBsaWJzKQorICBjeHhfdGVzdF93aXRoX2ZsYWdzKCIke25h
bWV9IiAiJHtjeHhfZGVmYXVsdH0iICIke2xpYnN9IgorICAgICJ0ZXN0LyR7bmFtZX0uY2MiICR7
QVJHTn0pCitlbmRmdW5jdGlvbigpCisKKyMgcHlfdGVzdChuYW1lKQorIworIyBjcmVhdGVzIGEg
UHl0aG9uIHRlc3Qgd2l0aCB0aGUgZ2l2ZW4gbmFtZSB3aG9zZSBtYWluIG1vZHVsZSBpcyBpbgor
IyB0ZXN0L25hbWUucHkuICBJdCBkb2VzIG5vdGhpbmcgaWYgUHl0aG9uIGlzIG5vdCBpbnN0YWxs
ZWQuCitmdW5jdGlvbihweV90ZXN0IG5hbWUpCisgIGlmIChQWVRIT05JTlRFUlBfRk9VTkQpCisg
ICAgaWYgKCR7Q01BS0VfTUFKT1JfVkVSU0lPTn0uJHtDTUFLRV9NSU5PUl9WRVJTSU9OfSBHUkVB
VEVSIDMuMSkKKyAgICAgIGlmIChDTUFLRV9DT05GSUdVUkFUSU9OX1RZUEVTKQorCSMgTXVsdGkt
Y29uZmlndXJhdGlvbiBidWlsZCBnZW5lcmF0b3JzIGFzIGZvciBWaXN1YWwgU3R1ZGlvIHNhdmUK
KwkjIG91dHB1dCBpbiBhIHN1YmRpcmVjdG9yeSBvZiBDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVIg
KERlYnVnLAorCSMgUmVsZWFzZSBldGMuKSwgc28gd2UgaGF2ZSB0byBwcm92aWRlIGl0IGhlcmUu
CisgICAgICAgIGFkZF90ZXN0KAorICAgICAgICAgIE5BTUUgJHtuYW1lfQorICAgICAgICAgIENP
TU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3Rl
c3QvJHtuYW1lfS5weQorICAgICAgICAgICAgICAtLWJ1aWxkX2Rpcj0ke0NNQUtFX0NVUlJFTlRf
QklOQVJZX0RJUn0vJDxDT05GSUc+ICR7QVJHTn0pCisgICAgICBlbHNlIChDTUFLRV9DT05GSUdV
UkFUSU9OX1RZUEVTKQorCSMgU2luZ2xlLWNvbmZpZ3VyYXRpb24gYnVpbGQgZ2VuZXJhdG9ycyBs
aWtlIE1ha2VmaWxlIGdlbmVyYXRvcnMKKwkjIGRvbid0IGhhdmUgc3ViZGlycyBiZWxvdyBDTUFL
RV9DVVJSRU5UX0JJTkFSWV9ESVIuCisgICAgICAgIGFkZF90ZXN0KAorICAgICAgICAgIE5BTUUg
JHtuYW1lfQorICAgICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L3Rlc3QvJHtuYW1lfS5weQorICAgICAgICAgICAgICAtLWJ1aWxk
X2Rpcj0ke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0gJHtBUkdOfSkKKyAgICAgIGVuZGlmIChD
TUFLRV9DT05GSUdVUkFUSU9OX1RZUEVTKQorICAgIGVsc2UgKCR7Q01BS0VfTUFKT1JfVkVSU0lP
Tn0uJHtDTUFLRV9NSU5PUl9WRVJTSU9OfSBHUkVBVEVSIDMuMSkKKyAgICAgICMgJHtDTUFLRV9D
VVJSRU5UX0JJTkFSWV9ESVJ9IGlzIGtub3duIGF0IGNvbmZpZ3VyYXRpb24gdGltZSwgc28gd2Ug
Y2FuCisgICAgICAjIGRpcmVjdGx5IGJpbmQgaXQgZnJvbSBjbWFrZS4gJHtDVEVTVF9DT05GSUdV
UkFUSU9OX1RZUEV9IGlzIGtub3duCisgICAgICAjIG9ubHkgYXQgY3Rlc3QgcnVudGltZSAoYnkg
Y2FsbGluZyBjdGVzdCAtYyA8Q29uZmlndXJhdGlvbj4pLCBzbworICAgICAgIyB3ZSBoYXZlIHRv
IGVzY2FwZSAkIHRvIGRlbGF5IHZhcmlhYmxlIHN1YnN0aXR1dGlvbiBoZXJlLgorICAgICAgYWRk
X3Rlc3QoCisgICAgICAgICR7bmFtZX0KKyAgICAgICAgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3Rlc3QvJHtuYW1lfS5weQorICAgICAgICAgIC0tYnVp
bGRfZGlyPSR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9cJHtDVEVTVF9DT05GSUdVUkFUSU9O
X1RZUEV9ICR7QVJHTn0pCisgICAgZW5kaWYgKCR7Q01BS0VfTUFKT1JfVkVSU0lPTn0uJHtDTUFL
RV9NSU5PUl9WRVJTSU9OfSBHUkVBVEVSIDMuMSkKKyAgZW5kaWYoUFlUSE9OSU5URVJQX0ZPVU5E
KQorZW5kZnVuY3Rpb24oKQorCisjIGluc3RhbGxfcHJvamVjdCh0YXJnZXRzLi4uKQorIworIyBJ
bnN0YWxscyB0aGUgc3BlY2lmaWVkIHRhcmdldHMgYW5kIGNvbmZpZ3VyZXMgdGhlIGFzc29jaWF0
ZWQgcGtnY29uZmlnIGZpbGVzLgorZnVuY3Rpb24oaW5zdGFsbF9wcm9qZWN0KQorICBpZihJTlNU
QUxMX0dURVNUKQorICAgIGluc3RhbGwoRElSRUNUT1JZICIke1BST0pFQ1RfU09VUkNFX0RJUn0v
aW5jbHVkZS8iCisgICAgICBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9
IikKKyAgICAjIEluc3RhbGwgdGhlIHByb2plY3QgdGFyZ2V0cy4KKyAgICBpbnN0YWxsKFRBUkdF
VFMgJHtBUkdOfQorICAgICAgRVhQT1JUICR7dGFyZ2V0c19leHBvcnRfbmFtZX0KKyAgICAgIFJV
TlRJTUUgREVTVElOQVRJT04gIiR7Q01BS0VfSU5TVEFMTF9CSU5ESVJ9IgorICAgICAgQVJDSElW
RSBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0iCisgICAgICBMSUJSQVJZIERF
U1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfTElCRElSfSIpCisgICAgIyBDb25maWd1cmUgYW5k
IGluc3RhbGwgcGtnY29uZmlnIGZpbGVzLgorICAgIGZvcmVhY2godCAke0FSR059KQorICAgICAg
c2V0KGNvbmZpZ3VyZWRfcGMgIiR7Z2VuZXJhdGVkX2Rpcn0vJHt0fS5wYyIpCisgICAgICBjb25m
aWd1cmVfZmlsZSgiJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2NtYWtlLyR7dH0ucGMuaW4iCisgICAg
ICAgICIke2NvbmZpZ3VyZWRfcGN9IiBAT05MWSkKKyAgICAgIGluc3RhbGwoRklMRVMgIiR7Y29u
ZmlndXJlZF9wY30iCisgICAgICAgIERFU1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfTElCRElS
fS9wa2djb25maWciKQorICAgIGVuZGZvcmVhY2goKQorICBlbmRpZigpCitlbmRmdW5jdGlvbigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9hbGwu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9hbGwuY2MKaW5kZXgg
YmE3YWQ2OGFkMWNhYTVmYjIwODM4YzcwMDg5NmE0MTgyYmE1OWQ5Zi4uMTIxYjJkODBlODNlYzdj
ZDBmZGY3ZGM2NzEyNzJkYzU0ZjZlOWYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvY29kZWdlYXIvZ3Rlc3RfYWxsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2NvZGVnZWFyL2d0ZXN0X2FsbC5jYwpAQCAtMSwzOCArMSwzOCBAQAotLy8gQ29weXJpZ2h0IDIw
MDksIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0v
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogSm9zaCBLZWxsZXkg
KGpvc2hrZWxAZ21haWwuY29tKQotLy8KLS8vIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsg
KEdvb2dsZSBUZXN0KQotLy8KLS8vIEMrK0J1aWxkZXIncyBJREUgY2Fubm90IGJ1aWxkIGEgc3Rh
dGljIGxpYnJhcnkgZnJvbSBmaWxlcyB3aXRoIGh5cGhlbnMKLS8vIGluIHRoZWlyIG5hbWUuICBT
ZWUgaHR0cDovL3FjLmNvZGVnZWFyLmNvbS93Yy9xY21haW4uYXNweD9kPTcwOTc3IC4KLS8vIFRo
aXMgZmlsZSBzZXJ2ZXMgYXMgYSB3b3JrYXJvdW5kLgotCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWFs
bC5jYyIKKy8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLg0KKy8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuDQorLy8NCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlDQorLy8gbWV0Og0K
Ky8vDQorLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQNCisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KKy8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXINCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlDQorLy8gZGlzdHJpYnV0aW9uLg0KKy8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCisvLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQ0K
Ky8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uDQorLy8NCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQorLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QNCisvLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IN
CisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVA0KKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KKy8vIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QNCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwNCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkNCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFDQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4NCisvLw0KKy8vIEF1dGhvcjogSm9zaCBLZWxsZXkgKGpvc2hr
ZWxAZ21haWwuY29tKQ0KKy8vDQorLy8gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29v
Z2xlIFRlc3QpDQorLy8NCisvLyBDKytCdWlsZGVyJ3MgSURFIGNhbm5vdCBidWlsZCBhIHN0YXRp
YyBsaWJyYXJ5IGZyb20gZmlsZXMgd2l0aCBoeXBoZW5zDQorLy8gaW4gdGhlaXIgbmFtZS4gIFNl
ZSBodHRwOi8vcWMuY29kZWdlYXIuY29tL3djL3FjbWFpbi5hc3B4P2Q9NzA5NzcgLg0KKy8vIFRo
aXMgZmlsZSBzZXJ2ZXMgYXMgYSB3b3JrYXJvdW5kLg0KKw0KKyNpbmNsdWRlICJzcmMvZ3Rlc3Qt
YWxsLmNjIg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NvZGVnZWFyL2d0
ZXN0X2xpbmsuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9saW5r
LmNjCmluZGV4IGI5NTVlYmYyZjkxMTBlNjM1M2M2ODdjYzM5NDIzNDhkYTc5N2NiNTAuLjkxOGVj
Y2QxOWI3ZGFmYTMyYjUyOTM4MGI3MDkyMzhjOWUzYTM2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2NvZGVnZWFyL2d0ZXN0X2xpbmsuY2MKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvY29kZWdlYXIvZ3Rlc3RfbGluay5jYwpAQCAtMSw0MCArMSw0MCBAQAotLy8g
Q29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8K
LS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0
cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0v
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
Sm9zaCBLZWxsZXkgKGpvc2hrZWxAZ21haWwuY29tKQotLy8KLS8vIEdvb2dsZSBDKysgVGVzdGlu
ZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQotLy8KLS8vIExpbmtzIGd0ZXN0LmxpYiBhbmQgZ3Rl
c3RfbWFpbi5saWIgaW50byB0aGUgY3VycmVudCBwcm9qZWN0IGluIEMrK0J1aWxkZXIuCi0vLyBU
aGlzIG1lYW5zIHRoYXQgdGhlc2UgbGlicmFyaWVzIGNhbid0IGJlIHJlbmFtZWQsIGJ1dCBpdCdz
IHRoZSBvbmx5IHdheSB0bwotLy8gZW5zdXJlIHRoYXQgRGVidWcgdmVyc3VzIFJlbGVhc2UgdGVz
dCBidWlsZHMgYXJlIGxpbmtlZCBhZ2FpbnN0IHRoZQotLy8gYXBwcm9wcmlhdGUgRGVidWcgb3Ig
UmVsZWFzZSBidWlsZCBvZiB0aGUgbGlicmFyaWVzLgotCi0jcHJhZ21hIGxpbmsgImd0ZXN0Lmxp
YiIKLSNwcmFnbWEgbGluayAiZ3Rlc3RfbWFpbi5saWIiCisvLyBDb3B5cmlnaHQgMjAwOSwgR29v
Z2xlIEluYy4NCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vDQorLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQ0KKy8vIG1ldDoNCisvLw0KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorLy8gbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Lg0KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUNCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyDQorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KKy8vIGRpc3RyaWJ1dGlv
bi4NCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzDQorLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKy8vDQorLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0KKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UDQorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwNCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UDQorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQorLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVA0KKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorLy8NCisv
LyBBdXRob3I6IEpvc2ggS2VsbGV5IChqb3Noa2VsQGdtYWlsLmNvbSkNCisvLw0KKy8vIEdvb2ds
ZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQ0KKy8vDQorLy8gTGlua3MgZ3Rl
c3QubGliIGFuZCBndGVzdF9tYWluLmxpYiBpbnRvIHRoZSBjdXJyZW50IHByb2plY3QgaW4gQysr
QnVpbGRlci4NCisvLyBUaGlzIG1lYW5zIHRoYXQgdGhlc2UgbGlicmFyaWVzIGNhbid0IGJlIHJl
bmFtZWQsIGJ1dCBpdCdzIHRoZSBvbmx5IHdheSB0bw0KKy8vIGVuc3VyZSB0aGF0IERlYnVnIHZl
cnN1cyBSZWxlYXNlIHRlc3QgYnVpbGRzIGFyZSBsaW5rZWQgYWdhaW5zdCB0aGUNCisvLyBhcHBy
b3ByaWF0ZSBEZWJ1ZyBvciBSZWxlYXNlIGJ1aWxkIG9mIHRoZSBsaWJyYXJpZXMuDQorDQorI3By
YWdtYSBsaW5rICJndGVzdC5saWIiDQorI3ByYWdtYSBsaW5rICJndGVzdF9tYWluLmxpYiINCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb25maWd1cmUuYWMgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9jb25maWd1cmUuYWMKaW5kZXggMWI5MTIzNzQ2MWUzOWZmNjFiNjMw
ZjNlMDE5YWRmZWVlYjc4M2FlNi4uMjU0YzhjNGIzMTg4NWQyNTcxZmEyMzAwYjYzMWU4YmY5ZDk1
YWUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29uZmlndXJlLmFjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2NvbmZpZ3VyZS5hYwpAQCAtNSwxMyArNSwxNCBA
QCBtNF9pbmNsdWRlKG00L2FjeF9wdGhyZWFkLm00KQogIyAiWzEuMC4xXSIpLiBJdCBhbHNvIGFz
dW1lcyB0aGF0IHRoZXJlIHdvbid0IGJlIGFueSBjbG9zaW5nIHBhcmVudGhlc2lzCiAjIGJldHdl
ZW4gIkFDX0lOSVQoIiBhbmQgdGhlIGNsb3NpbmcgIikiIGluY2x1ZGluZyBjb21tZW50cyBhbmQg
c3RyaW5ncy4KIEFDX0lOSVQoW0dvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmtdLAotICAgICAg
ICBbMS41LjBdLAorICAgICAgICBbMS44LjBdLAogICAgICAgICBbZ29vZ2xldGVzdGZyYW1ld29y
a0Bnb29nbGVncm91cHMuY29tXSwKICAgICAgICAgW2d0ZXN0XSkKIAogIyBQcm92aWRlIHZhcmlv
dXMgb3B0aW9ucyB0byBpbml0aWFsaXplIHRoZSBBdXRvY29uZiBhbmQgY29uZmlndXJlIHByb2Nl
c3Nlcy4KIEFDX1BSRVJFUShbMi41OV0pCi1BQ19DT05GSUdfU1JDRElSKFsuL0NPUFlJTkddKQor
QUNfQ09ORklHX1NSQ0RJUihbLi9MSUNFTlNFXSkKK0FDX0NPTkZJR19NQUNST19ESVIoW200XSkK
IEFDX0NPTkZJR19BVVhfRElSKFtidWlsZC1hdXhdKQogQUNfQ09ORklHX0hFQURFUlMoW2J1aWxk
LWF1eC9jb25maWcuaF0pCiBBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlXSkKQEAgLTU0LDcgKzU1
LDcgQEAgQVNfSUYoW3Rlc3QgIngkd2l0aF9wdGhyZWFkcyIgIT0gInhubyJdLAogICAgICAgICAg
ICAgICAgW0FDX01TR19GQUlMVVJFKAogICAgICAgICAgICAgICAgICBbLS13aXRoLXB0aHJlYWRz
IHdhcyBzcGVjaWZpZWQsIGJ1dCB1bmFibGUgdG8gYmUgdXNlZF0pXSldKQogICAgICAgIGhhdmVf
cHRocmVhZHM9IiRhY3hfcHRocmVhZF9vayJdKQotQU1fQ09ORElUSU9OQUwoW0hBVkVfUFRIUkVB
RFNdLFt0ZXN0ICJ4JGhhdmVfcHRocmVhZHMiID09ICJ4eWVzIl0pCitBTV9DT05ESVRJT05BTChb
SEFWRV9QVEhSRUFEU10sW3Rlc3QgIngkaGF2ZV9wdGhyZWFkcyIgPSAieHllcyJdKQogQUNfU1VC
U1QoUFRIUkVBRF9DRkxBR1MpCiBBQ19TVUJTVChQVEhSRUFEX0xJQlMpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvUGtnY29uZmlnLm1kIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvZG9jcy9Qa2djb25maWcubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc2MTI4OTRkMmEzYzhl
YWRiNDQyYzU1ODc4MDRmYjc3ODVlYWE3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2RvY3MvUGtnY29uZmlnLm1kCkBAIC0wLDAgKzEsMTQ2IEBACisjIyBVc2lu
ZyBHb29nbGVUZXN0IGZyb20gdmFyaW91cyBidWlsZCBzeXN0ZW1zICMjCisKK0dvb2dsZVRlc3Qg
Y29tZXMgd2l0aCBwa2ctY29uZmlnIGZpbGVzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5l
IGFsbAorbmVjZXNzYXJ5IGZsYWdzIGZvciBjb21waWxpbmcgYW5kIGxpbmtpbmcgdG8gR29vZ2xl
VGVzdCAoYW5kIEdvb2dsZU1vY2spLgorUGtnLWNvbmZpZyBpcyBhIHN0YW5kYXJkaXNlZCBwbGFp
bi10ZXh0IGZvcm1hdCBjb250YWluaW5nCisKKyAgKiB0aGUgaW5jbHVkZWRpciAoLUkpIHBhdGgK
KyAgKiBuZWNlc3NhcnkgbWFjcm8gKC1EKSBkZWZpbml0aW9ucworICAqIGZ1cnRoZXIgcmVxdWly
ZWQgZmxhZ3MgKC1wdGhyZWFkKQorICAqIHRoZSBsaWJyYXJ5ICgtTCkgcGF0aAorICAqIHRoZSBs
aWJyYXJ5ICgtbCkgdG8gbGluayB0bworCitBbGwgY3VycmVudCBidWlsZCBzeXN0ZW1zIHN1cHBv
cnQgcGtnLWNvbmZpZyBpbiBvbmUgd2F5IG9yIGFub3RoZXIuIEZvcgorYWxsIGV4YW1wbGVzIGhl
cmUgd2UgYXNzdW1lIHlvdSB3YW50IHRvIGNvbXBpbGUgdGhlIHNhbXBsZQorYHNhbXBsZXMvc2Ft
cGxlM191bml0dGVzdC5jY2AuCisKKworIyMjIENNYWtlICMjIworCitVc2luZyBgcGtnLWNvbmZp
Z2AgaW4gQ01ha2UgaXMgZmFpcmx5IGVhc3k6CisKK2BgYAorY21ha2VfbWluaW11bV9yZXF1aXJl
ZChWRVJTSU9OIDMuMCkKKworY21ha2VfcG9saWN5KFNFVCBDTVAwMDQ4IE5FVykKK3Byb2plY3Qo
bXlfZ3Rlc3RfcGtnY29uZmlnIFZFUlNJT04gMC4wLjEgTEFOR1VBR0VTIENYWCkKKworZmluZF9w
YWNrYWdlKFBrZ0NvbmZpZykKK3BrZ19zZWFyY2hfbW9kdWxlKEdURVNUIFJFUVVJUkVEIGd0ZXN0
X21haW4pCisKK2FkZF9leGVjdXRhYmxlKHRlc3RhcHAgc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0
LmNjKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzKHRlc3RhcHAgJHtHVEVTVF9MREZMQUdTfSkKK3Rh
cmdldF9jb21waWxlX29wdGlvbnModGVzdGFwcCBQVUJMSUMgJHtHVEVTVF9DRkxBR1N9KQorCitp
bmNsdWRlKENUZXN0KQorYWRkX3Rlc3QoZmlyc3RfYW5kX29ubHlfdGVzdCB0ZXN0YXBwKQorYGBg
CisKK0l0IGlzIGdlbmVyYWxseSByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgYHRhcmdldF9jb21w
aWxlX29wdGlvbnNgICsgYF9DRkxBR1NgCitvdmVyIGB0YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmll
c2AgKyBgX0lOQ0xVREVfRElSU2AgYXMgdGhlIGZvcm1lciBpbmNsdWRlcyBub3QKK2p1c3QgLUkg
ZmxhZ3MgKEdvb2dsZVRlc3QgbWlnaHQgcmVxdWlyZSBhIG1hY3JvIGluZGljYXRpbmcgdG8gaW50
ZXJuYWwgaGVhZGVycwordGhhdCBhbGwgbGlicmFyaWVzIGhhdmUgYmVlbiBjb21waWxlZCB3aXRo
IHRocmVhZGluZyBlbmFibGVkLiBJbiBhZGRpdGlvbiwKK0dvb2dsZVRlc3QgbWlnaHQgYWxzbyBy
ZXF1aXJlIGAtcHRocmVhZGAgaW4gdGhlIGNvbXBpbGluZyBzdGVwLCBhbmQgYXMgc3VjaAorc3Bs
aXR0aW5nIHRoZSBwa2ctY29uZmlnIGBDZmxhZ3NgIHZhcmlhYmxlIGludG8gaW5jbHVkZSBkaXJz
IGFuZCBtYWNyb3MgZm9yCitgdGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMoKWAgbWlnaHQgc3Rp
bGwgbWlzcyB0aGlzKS4gVGhlIHNhbWUgcmVjb21tZW5kYXRpb24KK2dvZXMgZm9yIHVzaW5nIGBf
TERGTEFHU2Agb3ZlciB0aGUgbW9yZSBjb21tb25wbGFjZSBgX0xJQlJBUklFU2AsIHdoaWNoCito
YXBwZW5zIHRvIGRpc2NhcmQgYC1MYCBmbGFncyBhbmQgYC1wdGhyZWFkYC4KKworCisjIyMgQXV0
b3Rvb2xzICMjIworCitGaW5kaW5nIEdvb2dsZVRlc3QgaW4gQXV0b2NvbmYgYW5kIHVzaW5nIGl0
IGZyb20gQXV0b21ha2UgaXMgYWxzbyBmYWlybHkgZWFzeToKKworSW4geW91ciBgY29uZmlndXJl
LmFjYDoKKworYGBgCitBQ19QUkVSRVEoWzIuNjldKQorQUNfSU5JVChbbXlfZ3Rlc3RfcGtnY29u
ZmlnXSwgWzAuMC4xXSkKK0FDX0NPTkZJR19TUkNESVIoW3NhbXBsZXMvc2FtcGxlM191bml0dGVz
dC5jY10pCitBQ19QUk9HX0NYWAorCitQS0dfQ0hFQ0tfTU9EVUxFUyhbR1RFU1RdLCBbZ3Rlc3Rf
bWFpbl0pCisKK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ24gc3ViZGlyLW9iamVjdHNdKQorQUNf
Q09ORklHX0ZJTEVTKFtNYWtlZmlsZV0pCitBQ19PVVRQVVQKK2BgYAorCithbmQgaW4geW91ciBg
TWFrZWZpbGUuYW1gOgorCitgYGAKK2NoZWNrX1BST0dSQU1TID0gdGVzdGFwcAorVEVTVFMgPSAk
KGNoZWNrX1BST0dSQU1TKQorCit0ZXN0YXBwX1NPVVJDRVMgPSBzYW1wbGVzL3NhbXBsZTNfdW5p
dHRlc3QuY2MKK3Rlc3RhcHBfQ1hYRkxBR1MgPSAkKEdURVNUX0NGTEFHUykKK3Rlc3RhcHBfTERB
REQgPSAkKEdURVNUX0xJQlMpCitgYGAKKworCisjIyMgTWVzb24gIyMjCisKK01lc29uIG5hdGl2
ZWx5IHVzZXMgcGtnY29uZmlnIHRvIHF1ZXJ5IGRlcGVuZGVuY2llczoKKworYGBgCitwcm9qZWN0
KCdteV9ndGVzdF9wa2djb25maWcnLCAnY3BwJywgdmVyc2lvbiA6ICcwLjAuMScpCisKK2d0ZXN0
X2RlcCA9IGRlcGVuZGVuY3koJ2d0ZXN0X21haW4nKQorCit0ZXN0YXBwID0gZXhlY3V0YWJsZSgK
KyAgJ3Rlc3RhcHAnLAorICBmaWxlcyhbJ3NhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYyddKSwK
KyAgZGVwZW5kZW5jaWVzIDogZ3Rlc3RfZGVwLAorICBpbnN0YWxsIDogZmFsc2UpCisKK3Rlc3Qo
J2ZpcnN0X2FuZF9vbmx5X3Rlc3QnLCB0ZXN0YXBwKQorYGBgCisKKworIyMjIFBsYWluIE1ha2Vm
aWxlcyAjIyMKKworU2luY2UgYHBrZy1jb25maWdgIGlzIGEgc21hbGwgVW5peCBjb21tYW5kLWxp
bmUgdXRpbGl0eSwgaXQgY2FuIGJlIHVzZWQKK2luIGhhbmR3cml0dGVuIGBNYWtlZmlsZWBzIHRv
bzoKKworYGBgCitHVEVTVF9DRkxBR1MgPSBgcGtnLWNvbmZpZyAtLWNmbGFncyBndGVzdF9tYWlu
YAorR1RFU1RfTElCUyA9IGBwa2ctY29uZmlnIC0tbGlicyBndGVzdF9tYWluYAorCisuUEhPTlk6
IHRlc3RzIGFsbAorCit0ZXN0czogYWxsCisJLi90ZXN0YXBwCisKK2FsbDogdGVzdGFwcAorCit0
ZXN0YXBwOiB0ZXN0YXBwLm8KKwkkKENYWCkgJChDWFhGTEFHUykgJChMREZMQUdTKSAkPCAtbyAk
QCAkKEdURVNUX0xJQlMpCisKK3Rlc3RhcHAubzogc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNj
CisJJChDWFgpICQoQ1BQRkxBR1MpICQoQ1hYRkxBR1MpICQ8IC1jIC1vICRAICQoR1RFU1RfQ0ZM
QUdTKQorYGBgCisKKworIyMjIEhlbHAhIHBrZy1jb25maWcgY2FuJ3QgZmluZCBHb29nbGVUZXN0
ISAjIyMKKworTGV0J3Mgc2F5IHlvdSBoYXZlIGEgYENNYWtlTGlzdHMudHh0YCBhbG9uZyB0aGUg
bGluZXMgb2YgdGhlIG9uZSBpbiB0aGlzCit0dXRvcmlhbCBhbmQgeW91IHRyeSB0byBydW4gYGNt
YWtlYC4gSXQgaXMgdmVyeSBwb3NzaWJsZSB0aGF0IHlvdSBnZXQgYQorZmFpbHVyZSBhbG9uZyB0
aGUgbGluZXMgb2Y6CisKK2BgYAorLS0gQ2hlY2tpbmcgZm9yIG9uZSBvZiB0aGUgbW9kdWxlcyAn
Z3Rlc3RfbWFpbicKK0NNYWtlIEVycm9yIGF0IC91c3Ivc2hhcmUvY21ha2UvTW9kdWxlcy9GaW5k
UGtnQ29uZmlnLmNtYWtlOjY0MCAobWVzc2FnZSk6CisgIE5vbmUgb2YgdGhlIHJlcXVpcmVkICdn
dGVzdF9tYWluJyBmb3VuZAorYGBgCisKK1RoZXNlIGZhaWx1cmVzIGFyZSBjb21tb24gaWYgeW91
IGluc3RhbGxlZCBHb29nbGVUZXN0IHlvdXJzZWxmIGFuZCBoYXZlIG5vdAorc291cmNlZCBpdCBm
cm9tIGEgZGlzdHJvIG9yIG90aGVyIHBhY2thZ2UgbWFuYWdlci4gSWYgc28sIHlvdSBuZWVkIHRv
IHRlbGwKK3BrZy1jb25maWcgd2hlcmUgaXQgY2FuIGZpbmQgdGhlIGAucGNgIGZpbGVzIGNvbnRh
aW5pbmcgdGhlIGluZm9ybWF0aW9uLgorU2F5IHlvdSBpbnN0YWxsZWQgR29vZ2xlVGVzdCB0byBg
L3Vzci9sb2NhbGAsIHRoZW4gaXQgbWlnaHQgYmUgdGhhdCB0aGUKK2AucGNgIGZpbGVzIGFyZSBp
bnN0YWxsZWQgdW5kZXIgYC91c3IvbG9jYWwvbGliNjQvcGtnY29uZmlnYC4gSWYgeW91IHNldAor
CitgYGAKK2V4cG9ydCBQS0dfQ09ORklHX1BBVEg9L3Vzci9sb2NhbC9saWI2NC9wa2djb25maWcK
K2BgYAorCitwa2ctY29uZmlnIHdpbGwgYWxzbyB0cnkgdG8gbG9vayBpbiBgUEtHX0NPTkZJR19Q
QVRIYCB0byBmaW5kIGBndGVzdF9tYWluLnBjYC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2RvY3MvUHVtcE1hbnVhbC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2Rv
Y3MvUHVtcE1hbnVhbC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjdiYjI0YjA0MmRjNTQzYWY0YzQwOWFkMDNl
MTQ3ZWE1OTQ5YjdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
ZG9jcy9QdW1wTWFudWFsLm1kCkBAIC0wLDAgKzEsMTc3IEBACisKKworPGI+UDwvYj51bXAgaXMg
PGI+VTwvYj5zZWZ1bCBmb3IgPGI+TTwvYj5ldGEgPGI+UDwvYj5yb2dyYW1taW5nLgorCisjIFRo
ZSBQcm9ibGVtICMKKworVGVtcGxhdGUgYW5kIG1hY3JvIGxpYnJhcmllcyBvZnRlbiBuZWVkIHRv
IGRlZmluZSBtYW55IGNsYXNzZXMsCitmdW5jdGlvbnMsIG9yIG1hY3JvcyB0aGF0IHZhcnkgb25s
eSAob3IgYWxtb3N0IG9ubHkpIGluIHRoZSBudW1iZXIgb2YKK2FyZ3VtZW50cyB0aGV5IHRha2Uu
IEl0J3MgYSBsb3Qgb2YgcmVwZXRpdGl2ZSwgbWVjaGFuaWNhbCwgYW5kCitlcnJvci1wcm9uZSB3
b3JrLgorCitWYXJpYWRpYyB0ZW1wbGF0ZXMgYW5kIHZhcmlhZGljIG1hY3JvcyBjYW4gYWxsZXZp
YXRlIHRoZSBwcm9ibGVtLgorSG93ZXZlciwgd2hpbGUgYm90aCBhcmUgYmVpbmcgY29uc2lkZXJl
ZCBieSB0aGUgQysrIGNvbW1pdHRlZSwgbmVpdGhlcgoraXMgaW4gdGhlIHN0YW5kYXJkIHlldCBv
ciB3aWRlbHkgc3VwcG9ydGVkIGJ5IGNvbXBpbGVycy4gIFRodXMgdGhleQorYXJlIG9mdGVuIG5v
dCBhIGdvb2QgY2hvaWNlLCBlc3BlY2lhbGx5IHdoZW4geW91ciBjb2RlIG5lZWRzIHRvIGJlCitw
b3J0YWJsZS4gQW5kIHRoZWlyIGNhcGFiaWxpdGllcyBhcmUgc3RpbGwgbGltaXRlZC4KKworQXMg
YSByZXN1bHQsIGF1dGhvcnMgb2Ygc3VjaCBsaWJyYXJpZXMgb2Z0ZW4gaGF2ZSB0byB3cml0ZSBz
Y3JpcHRzIHRvCitnZW5lcmF0ZSB0aGVpciBpbXBsZW1lbnRhdGlvbi4gSG93ZXZlciwgb3VyIGV4
cGVyaWVuY2UgaXMgdGhhdCBpdCdzCit0ZWRpb3VzIHRvIHdyaXRlIHN1Y2ggc2NyaXB0cywgd2hp
Y2ggdGVuZCB0byByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YKK3RoZSBnZW5lcmF0ZWQgY29kZSBw
b29ybHkgYW5kIGFyZSBvZnRlbiBoYXJkIHRvIHJlYWQgYW5kIGVkaXQuIEZvcgorZXhhbXBsZSwg
YSBzbWFsbCBjaGFuZ2UgbmVlZGVkIGluIHRoZSBnZW5lcmF0ZWQgY29kZSBtYXkgcmVxdWlyZSBz
b21lCitub24taW50dWl0aXZlLCBub24tdHJpdmlhbCBjaGFuZ2VzIGluIHRoZSBzY3JpcHQuIFRo
aXMgaXMgZXNwZWNpYWxseQorcGFpbmZ1bCB3aGVuIGV4cGVyaW1lbnRpbmcgd2l0aCB0aGUgY29k
ZS4KKworIyBPdXIgU29sdXRpb24gIworCitQdW1wIChmb3IgUHVtcCBpcyBVc2VmdWwgZm9yIE1l
dGEgUHJvZ3JhbW1pbmcsIFByZXR0eSBVc2VmdWwgZm9yIE1ldGEKK1Byb2dyYW1taW5nLCBvciBQ
cmFjdGljYWwgVXRpbGl0eSBmb3IgTWV0YSBQcm9ncmFtbWluZywgd2hpY2hldmVyIHlvdQorcHJl
ZmVyKSBpcyBhIHNpbXBsZSBtZXRhLXByb2dyYW1taW5nIHRvb2wgZm9yIEMrKy4gVGhlIGlkZWEg
aXMgdGhhdCBhCitwcm9ncmFtbWVyIHdyaXRlcyBhIGBmb28ucHVtcGAgZmlsZSB3aGljaCBjb250
YWlucyBDKysgY29kZSBwbHVzIG1ldGEKK2NvZGUgdGhhdCBtYW5pcHVsYXRlcyB0aGUgQysrIGNv
ZGUuIFRoZSBtZXRhIGNvZGUgY2FuIGhhbmRsZQoraXRlcmF0aW9ucyBvdmVyIGEgcmFuZ2UsIG5l
c3RlZCBpdGVyYXRpb25zLCBsb2NhbCBtZXRhIHZhcmlhYmxlCitkZWZpbml0aW9ucywgc2ltcGxl
IGFyaXRobWV0aWMsIGFuZCBjb25kaXRpb25hbCBleHByZXNzaW9ucy4gWW91IGNhbgordmlldyBp
dCBhcyBhIHNtYWxsIERvbWFpbi1TcGVjaWZpYyBMYW5ndWFnZS4gVGhlIG1ldGEgbGFuZ3VhZ2Ug
aXMKK2Rlc2lnbmVkIHRvIGJlIG5vbi1pbnRydXNpdmUgKHMudC4gaXQgd29uJ3QgY29uZnVzZSBF
bWFjcycgQysrIG1vZGUsCitmb3IgZXhhbXBsZSkgYW5kIGNvbmNpc2UsIG1ha2luZyBQdW1wIGNv
ZGUgaW50dWl0aXZlIGFuZCBlYXN5IHRvCittYWludGFpbi4KKworIyMgSGlnaGxpZ2h0cyAjIwor
CisgICogVGhlIGltcGxlbWVudGF0aW9uIGlzIGluIGEgc2luZ2xlIFB5dGhvbiBzY3JpcHQgYW5k
IHRodXMgdWx0cmEgcG9ydGFibGU6IG5vIGJ1aWxkIG9yIGluc3RhbGxhdGlvbiBpcyBuZWVkZWQg
YW5kIGl0IHdvcmtzIGNyb3NzIHBsYXRmb3Jtcy4KKyAgKiBQdW1wIHRyaWVzIHRvIGJlIHNtYXJ0
IHdpdGggcmVzcGVjdCB0byBbR29vZ2xlJ3Mgc3R5bGUgZ3VpZGVdKGh0dHBzOi8vZ2l0aHViLmNv
bS9nb29nbGUvc3R5bGVndWlkZSk6IGl0IGJyZWFrcyBsb25nIGxpbmVzIChlYXN5IHRvIGhhdmUg
d2hlbiB0aGV5IGFyZSBnZW5lcmF0ZWQpIGF0IGFjY2VwdGFibGUgcGxhY2VzIHRvIGZpdCB3aXRo
aW4gODAgY29sdW1ucyBhbmQgaW5kZW50IHRoZSBjb250aW51YXRpb24gbGluZXMgY29ycmVjdGx5
LgorICAqIFRoZSBmb3JtYXQgaXMgaHVtYW4tcmVhZGFibGUgYW5kIG1vcmUgY29uY2lzZSB0aGFu
IFhNTC4KKyAgKiBUaGUgZm9ybWF0IHdvcmtzIHJlbGF0aXZlbHkgd2VsbCB3aXRoIEVtYWNzJyBD
KysgbW9kZS4KKworIyMgRXhhbXBsZXMgIyMKKworVGhlIGZvbGxvd2luZyBQdW1wIGNvZGUgKHdo
ZXJlIG1ldGEga2V5d29yZHMgc3RhcnQgd2l0aCBgJGAsIGBbW2AgYW5kIGBdXWAgYXJlIG1ldGEg
YnJhY2tldHMsIGFuZCBgJCRgIHN0YXJ0cyBhIG1ldGEgY29tbWVudCB0aGF0IGVuZHMgd2l0aCB0
aGUgbGluZSk6CisKK2BgYAorJHZhciBuID0gMyAgICAgJCQgRGVmaW5lcyBhIG1ldGEgdmFyaWFi
bGUgbi4KKyRyYW5nZSBpIDAuLm4gICQkIERlY2xhcmVzIHRoZSByYW5nZSBvZiBtZXRhIGl0ZXJh
dG9yIGkgKGluY2x1c2l2ZSkuCiskZm9yIGkgW1sKKyAgICAgICAgICAgICAgICQkIE1ldGEgbG9v
cC4KKy8vIEZvbyRpIGRvZXMgYmxhaCBmb3IgJGktYXJ5IHByZWRpY2F0ZXMuCiskcmFuZ2UgaiAx
Li5pCit0ZW1wbGF0ZSA8c2l6ZV90IE4gJGZvciBqIFtbLCB0eXBlbmFtZSBBJGpdXT4KK2NsYXNz
IEZvbyRpIHsKKyRpZiBpID09IDAgW1sKKyAgYmxhaCBhOworXV0gJGVsaWYgaSA8PSAyIFtbCisg
IGJsYWggYjsKK11dICRlbHNlIFtbCisgIGJsYWggYzsKK11dCit9OworCitdXQorYGBgCisKK3dp
bGwgYmUgdHJhbnNsYXRlZCBieSB0aGUgUHVtcCBjb21waWxlciB0bzoKKworYGBgCisvLyBGb28w
IGRvZXMgYmxhaCBmb3IgMC1hcnkgcHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTj4KK2Ns
YXNzIEZvbzAgeworICBibGFoIGE7Cit9OworCisvLyBGb28xIGRvZXMgYmxhaCBmb3IgMS1hcnkg
cHJlZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTE+CitjbGFzcyBGb28x
IHsKKyAgYmxhaCBiOworfTsKKworLy8gRm9vMiBkb2VzIGJsYWggZm9yIDItYXJ5IHByZWRpY2F0
ZXMuCit0ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KK2NsYXNz
IEZvbzIgeworICBibGFoIGI7Cit9OworCisvLyBGb28zIGRvZXMgYmxhaCBmb3IgMy1hcnkgcHJl
ZGljYXRlcy4KK3RlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0
eXBlbmFtZSBBMz4KK2NsYXNzIEZvbzMgeworICBibGFoIGM7Cit9OworYGBgCisKK0luIGFub3Ro
ZXIgZXhhbXBsZSwKKworYGBgCiskcmFuZ2UgaSAxLi5uCitGdW5jKCRmb3IgaSArIFtbYSRpXV0p
OworJCQgVGhlIHRleHQgYmV0d2VlbiBpIGFuZCBbWyBpcyB0aGUgc2VwYXJhdG9yIGJldHdlZW4g
aXRlcmF0aW9ucy4KK2BgYAorCit3aWxsIGdlbmVyYXRlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGxp
bmVzICh3aXRob3V0IHRoZSBjb21tZW50cyksIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgYG5g
OgorCitgYGAKK0Z1bmMoKTsgICAgICAgICAgICAgIC8vIElmIG4gaXMgMC4KK0Z1bmMoYTEpOyAg
ICAgICAgICAgIC8vIElmIG4gaXMgMS4KK0Z1bmMoYTEgKyBhMik7ICAgICAgIC8vIElmIG4gaXMg
Mi4KK0Z1bmMoYTEgKyBhMiArIGEzKTsgIC8vIElmIG4gaXMgMy4KKy8vIEFuZCBzbyBvbi4uLgor
YGBgCisKKyMjIENvbnN0cnVjdHMgIyMKKworV2Ugc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGEg
cHJvZ3JhbW1pbmcgY29uc3RydWN0czoKKworfCBgJHZhciBpZCA9IGV4cGAgfCBEZWZpbmVzIGEg
bmFtZWQgY29uc3RhbnQgdmFsdWUuIGAkaWRgIGlzIHZhbGlkIHV0aWwgdGhlIGVuZCBvZiB0aGUg
Y3VycmVudCBtZXRhIGxleGljYWwgYmxvY2suIHwKK3w6LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cit8IGAkcmFuZ2UgaWQgZXhwLi5leHBg
IHwgU2V0cyB0aGUgcmFuZ2Ugb2YgYW4gaXRlcmF0aW9uIHZhcmlhYmxlLCB3aGljaCBjYW4gYmUg
cmV1c2VkIGluIG11bHRpcGxlIGxvb3BzIGxhdGVyLiAgICAgICAgICB8Cit8IGAkZm9yIGlkIHNl
cCBbWyBjb2RlIF1dYCB8IEl0ZXJhdGlvbi4gVGhlIHJhbmdlIG9mIGBpZGAgbXVzdCBoYXZlIGJl
ZW4gZGVmaW5lZCBlYXJsaWVyLiBgJGlkYCBpcyB2YWxpZCBpbiBgY29kZWAuICAgICAgICAgfAor
fCBgJCgkKWAgICAgICAgICAgfCBHZW5lcmF0ZXMgYSBzaW5nbGUgYCRgIGNoYXJhY3Rlci4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKK3wgYCRpZGAgICAgICAgICAgIHwgVmFsdWUgb2YgdGhlIG5hbWVkIGNvbnN0YW50IG9yIGl0
ZXJhdGlvbiB2YXJpYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8Cit8IGAkKGV4cClgICAgICAgICB8IFZhbHVlIG9mIHRoZSBleHByZXNzaW9uLiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorfCBgJGlmIGV4cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNoYCB8IENvbmRpdGlv
bmFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgW1sgY29kZSBdXWAgICAgfCBNZXRh
IGxleGljYWwgYmxvY2suICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYGNwcF9jb2RlYCAgICAgIHwg
UmF3IEMrKyBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGAkJCBjb21tZW50YCAg
ICB8IE1ldGEgY29tbWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCisqKk5vdGU6Kiog
VG8gZ2l2ZSB0aGUgdXNlciBzb21lIGZyZWVkb20gaW4gZm9ybWF0dGluZyB0aGUgUHVtcCBzb3Vy
Y2UKK2NvZGUsIFB1bXAgaWdub3JlcyBhIG5ldy1saW5lIGNoYXJhY3RlciBpZiBpdCdzIHJpZ2h0
IGFmdGVyIGAkZm9yIGZvb2AKK29yIG5leHQgdG8gYFtbYCBvciBgXV1gLiBXaXRob3V0IHRoaXMg
cnVsZSB5b3UnbGwgb2Z0ZW4gYmUgZm9yY2VkIHRvIHdyaXRlCit2ZXJ5IGxvbmcgbGluZXMgdG8g
Z2V0IHRoZSBkZXNpcmVkIG91dHB1dC4gVGhlcmVmb3JlIHNvbWV0aW1lcyB5b3UgbWF5CituZWVk
IHRvIGluc2VydCBhbiBleHRyYSBuZXctbGluZSBpbiBzdWNoIHBsYWNlcyBmb3IgYSBuZXctbGlu
ZSB0byBzaG93Cit1cCBpbiB5b3VyIG91dHB1dC4KKworIyMgR3JhbW1hciAjIworCitgYGAKK2Nv
ZGUgOjo9IGF0b21pY19jb2RlKgorYXRvbWljX2NvZGUgOjo9ICR2YXIgaWQgPSBleHAKKyAgICB8
ICR2YXIgaWQgPSBbWyBjb2RlIF1dCisgICAgfCAkcmFuZ2UgaWQgZXhwLi5leHAKKyAgICB8ICRm
b3IgaWQgc2VwIFtbIGNvZGUgXV0KKyAgICB8ICQoJCkKKyAgICB8ICRpZAorICAgIHwgJChleHAp
CisgICAgfCAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2gKKyAgICB8IFtbIGNvZGUgXV0K
KyAgICB8IGNwcF9jb2RlCitzZXAgOjo9IGNwcF9jb2RlIHwgZW1wdHlfc3RyaW5nCitlbHNlX2Jy
YW5jaCA6Oj0gJGVsc2UgW1sgY29kZSBdXQorICAgIHwgJGVsaWYgZXhwIFtbIGNvZGUgXV0gZWxz
ZV9icmFuY2gKKyAgICB8IGVtcHR5X3N0cmluZworZXhwIDo6PSBzaW1wbGVfZXhwcmVzc2lvbl9p
bl9QeXRob25fc3ludGF4CitgYGAKKworIyMgQ29kZSAjIworCitZb3UgY2FuIGZpbmQgdGhlIHNv
dXJjZSBjb2RlIG9mIFB1bXAgaW4gW3NjcmlwdHMvcHVtcC5weV0oLi4vc2NyaXB0cy9wdW1wLnB5
KS4gSXQgaXMgc3RpbGwKK3ZlcnkgdW5wb2xpc2hlZCBhbmQgbGFja3MgYXV0b21hdGVkIHRlc3Rz
LCBhbHRob3VnaCBpdCBoYXMgYmVlbgorc3VjY2Vzc2Z1bGx5IHVzZWQgbWFueSB0aW1lcy4gSWYg
eW91IGZpbmQgYSBjaGFuY2UgdG8gdXNlIGl0IGluIHlvdXIKK3Byb2plY3QsIHBsZWFzZSBsZXQg
dXMga25vdyB3aGF0IHlvdSB0aGluayEgIFdlIGFsc28gd2VsY29tZSBoZWxwIG9uCitpbXByb3Zp
bmcgUHVtcC4KKworIyMgUmVhbCBFeGFtcGxlcyAjIworCitZb3UgY2FuIGZpbmQgcmVhbC13b3Js
ZCBhcHBsaWNhdGlvbnMgb2YgUHVtcCBpbiBbR29vZ2xlIFRlc3RdKGh0dHBzOi8vZ2l0aHViLmNv
bS9nb29nbGUvZ29vZ2xldGVzdC90cmVlL21hc3Rlci9nb29nbGV0ZXN0KSBhbmQgW0dvb2dsZSBN
b2NrXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvdHJlZS9tYXN0ZXIvZ29v
Z2xlbW9jaykuIFRoZSBzb3VyY2UgZmlsZSBgZm9vLmgucHVtcGAgZ2VuZXJhdGVzIGBmb28uaGAu
CisKKyMjIFRpcHMgIyMKKworICAqIElmIGEgbWV0YSB2YXJpYWJsZSBpcyBmb2xsb3dlZCBieSBh
IGxldHRlciBvciBkaWdpdCwgeW91IGNhbiBzZXBhcmF0ZSB0aGVtIHVzaW5nIGBbW11dYCwgd2hp
Y2ggaW5zZXJ0cyBhbiBlbXB0eSBzdHJpbmcuIEZvciBleGFtcGxlIGBGb28kaltbXV1IZWxwZXJg
IGdlbmVyYXRlIGBGb28xSGVscGVyYCB3aGVuIGBqYCBpcyAxLgorICAqIFRvIGF2b2lkIGV4dHJh
LWxvbmcgUHVtcCBzb3VyY2UgbGluZXMsIHlvdSBjYW4gYnJlYWsgYSBsaW5lIGFueXdoZXJlIHlv
dSB3YW50IGJ5IGluc2VydGluZyBgW1tdXWAgZm9sbG93ZWQgYnkgYSBuZXcgbGluZS4gU2luY2Ug
YW55IG5ldy1saW5lIGNoYXJhY3RlciBuZXh0IHRvIGBbW2Agb3IgYF1dYCBpcyBpZ25vcmVkLCB0
aGUgZ2VuZXJhdGVkIGNvZGUgd29uJ3QgY29udGFpbiB0aGlzIG5ldyBsaW5lLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9YY29kZUd1aWRlLm1kIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvZG9jcy9YY29kZUd1aWRlLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjNjBhMzNkYWQ0
M2JhZjk4MzgxZjdjOWYyMGY2OWI1NThiMmFhZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9kb2NzL1hjb2RlR3VpZGUubWQKQEAgLTAsMCArMSw5MyBAQAorCisK
K1RoaXMgZ3VpZGUgd2lsbCBleHBsYWluIGhvdyB0byB1c2UgdGhlIEdvb2dsZSBUZXN0aW5nIEZy
YW1ld29yayBpbiB5b3VyIFhjb2RlIHByb2plY3RzIG9uIE1hYyBPUyBYLiBUaGlzIHR1dG9yaWFs
IGJlZ2lucyBieSBxdWlja2x5IGV4cGxhaW5pbmcgd2hhdCB0byBkbyBmb3IgZXhwZXJpZW5jZWQg
dXNlcnMuIEFmdGVyIHRoZSBxdWljayBzdGFydCwgdGhlIGd1aWRlIGdvZXMgcHJvdmlkZXMgYWRk
aXRpb25hbCBleHBsYW5hdGlvbiBhYm91dCBlYWNoIHN0ZXAuCisKKyMgUXVpY2sgU3RhcnQgIwor
CitIZXJlIGlzIHRoZSBxdWljayBndWlkZSBmb3IgdXNpbmcgR29vZ2xlIFRlc3QgaW4geW91ciBY
Y29kZSBwcm9qZWN0LgorCisgIDEuIERvd25sb2FkIHRoZSBzb3VyY2UgZnJvbSB0aGUgW3dlYnNp
dGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdCkgdXNpbmcgdGhpcyBjb21t
YW5kOiBgc3ZuIGNoZWNrb3V0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90
cnVuay8gZ29vZ2xldGVzdC1yZWFkLW9ubHlgLgorICAxLiBPcGVuIHVwIHRoZSBgZ3Rlc3QueGNv
ZGVwcm9qYCBpbiB0aGUgYGdvb2dsZXRlc3QtcmVhZC1vbmx5L3hjb2RlL2AgZGlyZWN0b3J5IGFu
ZCBidWlsZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrLgorICAxLiBDcmVhdGUgYSBuZXcgIlNoZWxsIFRv
b2wiIHRhcmdldCBpbiB5b3VyIFhjb2RlIHByb2plY3QgY2FsbGVkIHNvbWV0aGluZyBsaWtlICJV
bml0VGVzdHMiLgorICAxLiBBZGQgdGhlIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyIHByb2plY3Qg
YW5kIGFkZCBpdCB0byB0aGUgIkxpbmsgQmluYXJ5IHdpdGggTGlicmFyaWVzIiBidWlsZCBwaGFz
ZSBvZiAiVW5pdFRlc3RzIi4KKyAgMS4gQWRkIHlvdXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRv
IHRoZSAiQ29tcGlsZSBTb3VyY2VzIiBidWlsZCBwaGFzZSBvZiAiVW5pdFRlc3RzIi4KKyAgMS4g
RWRpdCB0aGUgIlVuaXRUZXN0cyIgZXhlY3V0YWJsZSBhbmQgYWRkIGFuIGVudmlyb25tZW50IHZh
cmlhYmxlIG5hbWVkICJEWUxEXF9GUkFNRVdPUktcX1BBVEgiIHdpdGggYSB2YWx1ZSBlcXVhbCB0
byB0aGUgcGF0aCB0byB0aGUgZnJhbWV3b3JrIGNvbnRhaW5pbmcgdGhlIGd0ZXN0LmZyYW1ld29y
ayByZWxhdGl2ZSB0byB0aGUgY29tcGlsZWQgZXhlY3V0YWJsZS4KKyAgMS4gQnVpbGQgYW5kIEdv
LgorCitUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGZ1cnRoZXIgZXhwbGFpbiBlYWNoIG9mIHRoZSBz
dGVwcyBsaXN0ZWQgYWJvdmUgaW4gZGVwdGgsIGRlc2NyaWJpbmcgaW4gbW9yZSBkZXRhaWwgaG93
IHRvIGNvbXBsZXRlIGl0IGluY2x1ZGluZyBzb21lIHZhcmlhdGlvbnMuCisKKyMgR2V0IHRoZSBT
b3VyY2UgIworCitDdXJyZW50bHksIHRoZSBndGVzdC5mcmFtZXdvcmsgZGlzY3Vzc2VkIGhlcmUg
aXNuJ3QgYXZhaWxhYmxlIGluIGEgdGFnZ2VkIHJlbGVhc2Ugb2YgR29vZ2xlIFRlc3QsIGl0IGlz
IG9ubHkgYXZhaWxhYmxlIGluIHRoZSB0cnVuay4gQXMgZXhwbGFpbmVkIGF0IHRoZSBHb29nbGUg
VGVzdCBbc2l0ZV0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0KSwgeW91IGNh
biBnZXQgdGhlIGNvZGUgZnJvbSBhbm9ueW1vdXMgU1ZOIHdpdGggdGhpcyBjb21tYW5kOgorCitg
YGAKK3N2biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1
bmsvIGdvb2dsZXRlc3QtcmVhZC1vbmx5CitgYGAKKworQWx0ZXJuYXRpdmVseSwgaWYgeW91IGFy
ZSB3b3JraW5nIHdpdGggU3VidmVyc2lvbiBpbiB5b3VyIG93biBjb2RlIGJhc2UsIHlvdSBjYW4g
YWRkIEdvb2dsZSBUZXN0IGFzIGFuIGV4dGVybmFsIGRlcGVuZGVuY3kgdG8geW91ciBvd24gU3Vi
dmVyc2lvbiByZXBvc2l0b3J5LiBCeSBmb2xsb3dpbmcgdGhpcyBhcHByb2FjaCwgZXZlcnlvbmUg
dGhhdCBjaGVja3Mgb3V0IHlvdXIgc3ZuIHJlcG9zaXRvcnkgd2lsbCBhbHNvIHJlY2VpdmUgYSBj
b3B5IG9mIEdvb2dsZSBUZXN0IChhIHNwZWNpZmljIHZlcnNpb24sIGlmIHlvdSB3aXNoKSB3aXRo
b3V0IGhhdmluZyB0byBjaGVjayBpdCBvdXQgZXhwbGljaXRseS4gVGhpcyBtYWtlcyB0aGUgc2V0
IHVwIG9mIHlvdXIgcHJvamVjdCBzaW1wbGVyIGFuZCByZWR1Y2VzIHRoZSBjb3BpZWQgY29kZSBp
biB0aGUgcmVwb3NpdG9yeS4KKworVG8gdXNlIGBzdm46ZXh0ZXJuYWxzYCwgZGVjaWRlIHdoZXJl
IHlvdSB3b3VsZCBsaWtlIHRvIGhhdmUgdGhlIGV4dGVybmFsIHNvdXJjZSByZXNpZGUuIFlvdSBt
aWdodCBjaG9vc2UgdG8gcHV0IHRoZSBleHRlcm5hbCBzb3VyY2UgaW5zaWRlIHRoZSB0cnVuaywg
YmVjYXVzZSB5b3Ugd2FudCBpdCB0byBiZSBwYXJ0IG9mIHRoZSBicmFuY2ggd2hlbiB5b3UgbWFr
ZSBhIHJlbGVhc2UuIEhvd2V2ZXIsIGtlZXBpbmcgaXQgb3V0c2lkZSB0aGUgdHJ1bmsgaW4gYSB2
ZXJzaW9uLXRhZ2dlZCBkaXJlY3RvcnkgY2FsbGVkIHNvbWV0aGluZyBsaWtlIGB0aGlyZC1wYXJ0
eS9nb29nbGV0ZXN0LzEuMC4xYCwgaXMgYW5vdGhlciBvcHRpb24uIE9uY2UgdGhlIGxvY2F0aW9u
IGlzIGVzdGFibGlzaGVkLCB1c2UgYHN2biBwcm9wZWRpdCBzdm46ZXh0ZXJuYWxzIF9kaXJlY3Rv
cnlfYCB0byBzZXQgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgb24gYSBkaXJlY3RvcnkgaW4g
eW91ciByZXBvc2l0b3J5LiBUaGlzIGRpcmVjdG9yeSB3b24ndCBjb250YWluIHRoZSBjb2RlLCBi
dXQgYmUgaXRzIHZlcnNpb25lZCBwYXJlbnQgZGlyZWN0b3J5LgorCitUaGUgY29tbWFuZCBgc3Zu
IHByb3BlZGl0YCB3aWxsIGJyaW5nIHVwIHlvdXIgU3VidmVyc2lvbiBlZGl0b3IsIG1ha2luZyBl
ZGl0aW5nIHRoZSBsb25nLCAocG90ZW50aWFsbHkgbXVsdGktbGluZSkgcHJvcGVydHkgc2ltcGxl
ci4gVGhpcyBzYW1lIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjaGVjayBvdXQgYSB0YWdnZWQgYnJh
bmNoLCBieSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgVVJMIChlLmcuIGBodHRwczovL2dpdGh1Yi5j
b20vZ29vZ2xlL2dvb2dsZXRlc3QvcmVsZWFzZXMvdGFnL3JlbGVhc2UtMS4wLjFgKS4gQWRkaXRp
b25hbGx5LCB0aGUgc3ZuOmV4dGVybmFscyBwcm9wZXJ0eSBhbGxvd3MgdGhlIHNwZWNpZmljYXRp
b24gb2YgYSBwYXJ0aWN1bGFyIHJldmlzaW9uIG9mIHRoZSB0cnVuayB3aXRoIHRoZSBgLXJfIyNf
YCBvcHRpb24gKGUuZy4gYGV4dGVybmFscy9zcmMvZ29vZ2xldGVzdCAtcjYwIGh0dHA6Ly9nb29n
bGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVua2ApLgorCitIZXJlIGlzIGFuIGV4YW1wbGUg
b2YgdXNpbmcgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydGllcyBvbiBhIHRydW5rIChyZWFkIHZp
YSBgc3ZuIHByb3BnZXRgKSBvZiBhIHByb2plY3QuIFRoaXMgdmFsdWUgY2hlY2tzIG91dCBhIGNv
cHkgb2YgR29vZ2xlIFRlc3QgaW50byB0aGUgYHRydW5rL2V4dGVybmFscy9zcmMvZ29vZ2xldGVz
dC9gIGRpcmVjdG9yeS4KKworYGBgCitbQ29tcHV0ZXI6c3ZuXSB1c2VyJCBzdm4gcHJvcGdldCBz
dm46ZXh0ZXJuYWxzIHRydW5rCitleHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QgaHR0cDovL2dvb2ds
ZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rCitgYGAKKworIyBBZGQgdGhlIEZyYW1ld29y
ayB0byBZb3VyIFByb2plY3QgIworCitUaGUgbmV4dCBzdGVwIGlzIHRvIGJ1aWxkIGFuZCBhZGQg
dGhlIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyIG93biBwcm9qZWN0LiBUaGlzIGd1aWRlIGRlc2Ny
aWJlcyB0d28gY29tbW9uIHdheXMgYmVsb3cuCisKKyAgKiAqKk9wdGlvbiAxKiogLS0tIFRoZSBz
aW1wbGVzdCB3YXkgdG8gYWRkIEdvb2dsZSBUZXN0IHRvIHlvdXIgb3duIHByb2plY3QsIGlzIHRv
IG9wZW4gZ3Rlc3QueGNvZGVwcm9qIChmb3VuZCBpbiB0aGUgeGNvZGUvIGRpcmVjdG9yeSBvZiB0
aGUgR29vZ2xlIFRlc3QgdHJ1bmspIGFuZCBidWlsZCB0aGUgZnJhbWV3b3JrIG1hbnVhbGx5LiBU
aGVuLCBhZGQgdGhlIGJ1aWx0IGZyYW1ld29yayBpbnRvIHlvdXIgcHJvamVjdCB1c2luZyB0aGUg
IkFkZC0+RXhpc3RpbmcgRnJhbWV3b3JrLi4uIiBmcm9tIHRoZSBjb250ZXh0IG1lbnUgb3IgIlBy
b2plY3QtPkFkZC4uLiIgZnJvbSB0aGUgbWFpbiBtZW51LiBUaGUgZ3Rlc3QuZnJhbWV3b3JrIGlz
IHJlbG9jYXRhYmxlIGFuZCBjb250YWlucyB0aGUgaGVhZGVycyBhbmQgb2JqZWN0IGNvZGUgdGhh
dCB5b3UnbGwgbmVlZCB0byBtYWtlIHRlc3RzLiBUaGlzIG1ldGhvZCByZXF1aXJlcyByZWJ1aWxk
aW5nIGV2ZXJ5IHRpbWUgeW91IHVwZ3JhZGUgR29vZ2xlIFRlc3QgaW4geW91ciBwcm9qZWN0Lgor
ICAqICoqT3B0aW9uIDIqKiAtLS0gSWYgeW91IGFyZSBnb2luZyB0byBiZSBsaXZpbmcgb2ZmIHRo
ZSB0cnVuayBvZiBHb29nbGUgVGVzdCwgaW5jb3Jwb3JhdGluZyBpdHMgbGF0ZXN0IGZlYXR1cmVz
IGludG8geW91ciB1bml0IHRlc3RzIChvciBhcmUgYSBHb29nbGUgVGVzdCBkZXZlbG9wZXIgeW91
cnNlbGYpLiBZb3UnbGwgd2FudCB0byByZWJ1aWxkIHRoZSBmcmFtZXdvcmsgZXZlcnkgdGltZSB0
aGUgc291cmNlIHVwZGF0ZXMuIHRvIGRvIHRoaXMsIHlvdSdsbCBuZWVkIHRvIGFkZCB0aGUgZ3Rl
c3QueGNvZGVwcm9qIGZpbGUsIG5vdCB0aGUgZnJhbWV3b3JrIGl0c2VsZiwgdG8geW91ciBvd24g
WGNvZGUgcHJvamVjdC4gVGhlbiwgZnJvbSB0aGUgYnVpbGQgcHJvZHVjdHMgdGhhdCBhcmUgcmV2
ZWFsZWQgYnkgdGhlIHByb2plY3QncyBkaXNjbG9zdXJlIHRyaWFuZ2xlLCB5b3UgY2FuIGZpbmQg
dGhlIGd0ZXN0LmZyYW1ld29yaywgd2hpY2ggY2FuIGJlIGFkZGVkIHRvIHlvdXIgdGFyZ2V0cyAo
ZGlzY3Vzc2VkIGJlbG93KS4KKworIyBNYWtlIGEgVGVzdCBUYXJnZXQgIworCitUbyBzdGFydCB3
cml0aW5nIHRlc3RzLCBtYWtlIGEgbmV3ICJTaGVsbCBUb29sIiB0YXJnZXQuIFRoaXMgdGFyZ2V0
IHRlbXBsYXRlIGlzIGF2YWlsYWJsZSB1bmRlciBCU0QsIENvY29hLCBvciBDYXJib24uIEFkZCB5
b3VyIHVuaXQgdGVzdCBzb3VyY2UgY29kZSB0byB0aGUgIkNvbXBpbGUgU291cmNlcyIgYnVpbGQg
cGhhc2Ugb2YgdGhlIHRhcmdldC4KKworTmV4dCwgeW91J2xsIHdhbnQgdG8gYWRkIGd0ZXN0LmZy
YW1ld29yayBpbiB0d28gZGlmZmVyZW50IHdheXMsIGRlcGVuZGluZyB1cG9uIHdoaWNoIG9wdGlv
biB5b3UgY2hvc2UgYWJvdmUuCisKKyAgKiAqKk9wdGlvbiAxKiogLS0tIER1cmluZyBjb21waWxh
dGlvbiwgWGNvZGUgd2lsbCBuZWVkIHRvIGtub3cgdGhhdCB5b3UgYXJlIGxpbmtpbmcgYWdhaW5z
dCB0aGUgZ3Rlc3QuZnJhbWV3b3JrLiBBZGQgdGhlIGd0ZXN0LmZyYW1ld29yayB0byB0aGUgIkxp
bmsgQmluYXJ5IHdpdGggTGlicmFyaWVzIiBidWlsZCBwaGFzZSBvZiB5b3VyIHRlc3QgdGFyZ2V0
LiBUaGlzIHdpbGwgaW5jbHVkZSB0aGUgR29vZ2xlIFRlc3QgaGVhZGVycyBpbiB5b3VyIGhlYWRl
ciBzZWFyY2ggcGF0aCwgYW5kIHdpbGwgdGVsbCB0aGUgbGlua2VyIHdoZXJlIHRvIGZpbmQgdGhl
IGxpYnJhcnkuCisgICogKipPcHRpb24gMioqIC0tLSBJZiB5b3VyIHdvcmtpbmcgb3V0IG9mIHRo
ZSB0cnVuaywgeW91J2xsIGFsc28gd2FudCB0byBhZGQgZ3Rlc3QuZnJhbWV3b3JrIHRvIHlvdXIg
IkxpbmsgQmluYXJ5IHdpdGggTGlicmFyaWVzIiBidWlsZCBwaGFzZSBvZiB5b3VyIHRlc3QgdGFy
Z2V0LiBJbiBhZGRpdGlvbiwgeW91J2xsICB3YW50IHRvIGFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3Jr
IGFzIGEgZGVwZW5kZW5jeSB0byB5b3VyIHVuaXQgdGVzdCB0YXJnZXQuIFRoaXMgd2F5LCBYY29k
ZSB3aWxsIG1ha2Ugc3VyZSB0aGF0IGd0ZXN0LmZyYW1ld29yayBpcyB1cCB0byBkYXRlLCBldmVy
eSB0aW1lIHlvdXIgYnVpbGQgeW91ciB0YXJnZXQuIEZpbmFsbHksIGlmIHlvdSBkb24ndCBzaGFy
ZSBidWlsZCBkaXJlY3RvcmllcyB3aXRoIEdvb2dsZSBUZXN0LCB5b3UnbGwgaGF2ZSB0byBjb3B5
IHRoZSBndGVzdC5mcmFtZXdvcmsgaW50byB5b3VyIG93biBidWlsZCBwcm9kdWN0cyBkaXJlY3Rv
cnkgdXNpbmcgYSAiUnVuIFNjcmlwdCIgYnVpbGQgcGhhc2UuCisKKyMgU2V0IFVwIHRoZSBFeGVj
dXRhYmxlIFJ1biBFbnZpcm9ubWVudCAjCisKK1NpbmNlIHRoZSB1bml0IHRlc3QgZXhlY3V0YWJs
ZSBpcyBhIHNoZWxsIHRvb2wsIGl0IGRvZXNuJ3QgaGF2ZSBhIGJ1bmRsZSB3aXRoIGEgYENvbnRl
bnRzL0ZyYW1ld29ya3NgIGRpcmVjdG9yeSwgaW4gd2hpY2ggdG8gcGxhY2UgZ3Rlc3QuZnJhbWV3
b3JrLiBJbnN0ZWFkLCB0aGUgZHluYW1pYyBsaW5rZXIgbXVzdCBiZSB0b2xkIGF0IHJ1bnRpbWUg
dG8gc2VhcmNoIGZvciB0aGUgZnJhbWV3b3JrIGluIGFub3RoZXIgbG9jYXRpb24uIFRoaXMgY2Fu
IGJlIGFjY29tcGxpc2hlZCBieSBzZXR0aW5nIHRoZSAiRFlMRFxfRlJBTUVXT1JLXF9QQVRIIiBl
bnZpcm9ubWVudCB2YXJpYWJsZSBpbiB0aGUgIkVkaXQgQWN0aXZlIEV4ZWN1dGFibGUgLi4uIiBB
cmd1bWVudHMgdGFiLCB1bmRlciAiVmFyaWFibGVzIHRvIGJlIHNldCBpbiB0aGUgZW52aXJvbm1l
bnQ6Ii4gVGhlIHBhdGggZm9yIHRoaXMgdmFsdWUgaXMgdGhlIHBhdGggKHJlbGF0aXZlIG9yIGFi
c29sdXRlKSBvZiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGd0ZXN0LmZyYW1ld29yay4K
KworSWYgeW91IGhhdmVuJ3Qgc2V0IHVwIHRoZSBEWUxEXF9GUkFNRVdPUktcX1BBVEgsIGNvcnJl
Y3RseSwgeW91IG1pZ2h0IGdldCBhIG1lc3NhZ2UgbGlrZSB0aGlzOgorCitgYGAKK1tTZXNzaW9u
IHN0YXJ0ZWQgYXQgMjAwOC0wOC0xNSAwNjoyMzo1NyAtMDYwMC5dCisgIGR5bGQ6IExpYnJhcnkg
bm90IGxvYWRlZDogQGxvYWRlcl9wYXRoLy4uL0ZyYW1ld29ya3MvZ3Rlc3QuZnJhbWV3b3JrL1Zl
cnNpb25zL0EvZ3Rlc3QKKyAgICBSZWZlcmVuY2VkIGZyb206IC9Vc2Vycy91c2VybmFtZS9Eb2N1
bWVudHMvU2FuZGJveC9ndGVzdFNhbXBsZS9idWlsZC9EZWJ1Zy9XaWRnZXRGcmFtZXdvcmtUZXN0
CisgICAgUmVhc29uOiBpbWFnZSBub3QgZm91bmQKK2BgYAorCitUbyBjb3JyZWN0IHRoaXMgcHJv
YmxlbSwgZ28gdG8gdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBleGVjdXRhYmxlIG5h
bWVkIGluICJSZWZlcmVuY2VkIGZyb206IiB2YWx1ZSBpbiB0aGUgZXJyb3IgbWVzc2FnZSBhYm92
ZS4gVGhlbiwgd2l0aCB0aGUgdGVybWluYWwgaW4gdGhpcyBsb2NhdGlvbiwgZmluZCB0aGUgcmVs
YXRpdmUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGd0ZXN0LmZyYW1ld29y
ay4gVGhhdCBpcyB0aGUgdmFsdWUgeW91J2xsIG5lZWQgdG8gc2V0IGFzIHRoZSBEWUxEXF9GUkFN
RVdPUktcX1BBVEguCisKKyMgQnVpbGQgYW5kIEdvICMKKworTm93LCB3aGVuIHlvdSBjbGljayAi
QnVpbGQgYW5kIEdvIiwgdGhlIHRlc3Qgd2lsbCBiZSBleGVjdXRlZC4gRHVtcGluZyBvdXQgc29t
ZXRoaW5nIGxpa2UgdGhpczoKKworYGBgCitbU2Vzc2lvbiBzdGFydGVkIGF0IDIwMDgtMDgtMDYg
MDY6MzY6MTMgLTA2MDAuXQorWz09PT09PT09PT1dIFJ1bm5pbmcgMiB0ZXN0cyBmcm9tIDEgdGVz
dCBjYXNlLgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KK1st
LS0tLS0tLS0tXSAyIHRlc3RzIGZyb20gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0CitbIFJVTiAgICAg
IF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb25zdHJ1Y3RvcgorWyAgICAgICBPSyBdIFdp
ZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29uc3RydWN0b3IKK1sgUlVOICAgICAgXSBXaWRnZXRJ
bml0aWFsaXplclRlc3QuVGVzdENvbnZlcnNpb24KK1sgICAgICAgT0sgXSBXaWRnZXRJbml0aWFs
aXplclRlc3QuVGVzdENvbnZlcnNpb24KK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9u
bWVudCB0ZWFyLWRvd24KK1s9PT09PT09PT09XSAyIHRlc3RzIGZyb20gMSB0ZXN0IGNhc2UgcmFu
LgorWyAgUEFTU0VEICBdIDIgdGVzdHMuCisKK1RoZSBEZWJ1Z2dlciBoYXMgZXhpdGVkIHdpdGgg
c3RhdHVzIDAuICAKK2BgYAorCisjIFN1bW1hcnkgIworCitVbml0IHRlc3RpbmcgaXMgYSB2YWx1
YWJsZSB3YXkgdG8gZW5zdXJlIHlvdXIgZGF0YSBtb2RlbCBzdGF5cyB2YWxpZCBldmVuIGR1cmlu
ZyByYXBpZCBkZXZlbG9wbWVudCBvciByZWZhY3RvcmluZy4gVGhlIEdvb2dsZSBUZXN0aW5nIEZy
YW1ld29yayBpcyBhIGdyZWF0IHVuaXQgdGVzdGluZyBmcmFtZXdvcmsgZm9yIEMgYW5kIEMrKyB3
aGljaCBpbnRlZ3JhdGVzIHdlbGwgd2l0aCBhbiBYY29kZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVu
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvYWR2YW5jZWQubWQg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL2FkdmFuY2VkLm1kCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgw
NjVkMTk2MjFhOGIzN2ZiNzhjYjVlMGVkMWI4NjE4ZmU3NjI1ZDIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL2FkdmFuY2VkLm1kCkBAIC0wLDAgKzEsMjUy
MCBAQAorIyBBZHZhbmNlZCBnb29nbGV0ZXN0IFRvcGljcworCisKKyMjIEludHJvZHVjdGlvbgor
CitOb3cgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBbZ29vZ2xldGVzdCBQcmltZXJdKHByaW1lci5t
ZCkgYW5kIGxlYXJuZWQgaG93IHRvIHdyaXRlCit0ZXN0cyB1c2luZyBnb29nbGV0ZXN0LCBpdCdz
IHRpbWUgdG8gbGVhcm4gc29tZSBuZXcgdHJpY2tzLiBUaGlzIGRvY3VtZW50IHdpbGwKK3Nob3cg
eW91IG1vcmUgYXNzZXJ0aW9ucyBhcyB3ZWxsIGFzIGhvdyB0byBjb25zdHJ1Y3QgY29tcGxleCBm
YWlsdXJlIG1lc3NhZ2VzLAorcHJvcGFnYXRlIGZhdGFsIGZhaWx1cmVzLCByZXVzZSBhbmQgc3Bl
ZWQgdXAgeW91ciB0ZXN0IGZpeHR1cmVzLCBhbmQgdXNlIHZhcmlvdXMKK2ZsYWdzIHdpdGggeW91
ciB0ZXN0cy4KKworIyMgTW9yZSBBc3NlcnRpb25zCisKK1RoaXMgc2VjdGlvbiBjb3ZlcnMgc29t
ZSBsZXNzIGZyZXF1ZW50bHkgdXNlZCwgYnV0IHN0aWxsIHNpZ25pZmljYW50LAorYXNzZXJ0aW9u
cy4KKworIyMjIEV4cGxpY2l0IFN1Y2Nlc3MgYW5kIEZhaWx1cmUKKworVGhlc2UgdGhyZWUgYXNz
ZXJ0aW9ucyBkbyBub3QgYWN0dWFsbHkgdGVzdCBhIHZhbHVlIG9yIGV4cHJlc3Npb24uIEluc3Rl
YWQsIHRoZXkKK2dlbmVyYXRlIGEgc3VjY2VzcyBvciBmYWlsdXJlIGRpcmVjdGx5LiBMaWtlIHRo
ZSBtYWNyb3MgdGhhdCBhY3R1YWxseSBwZXJmb3JtIGEKK3Rlc3QsIHlvdSBtYXkgc3RyZWFtIGEg
Y3VzdG9tIGZhaWx1cmUgbWVzc2FnZSBpbnRvIHRoZW0uCisKK2BgYGMrKworU1VDQ0VFRCgpOwor
YGBgCisKK0dlbmVyYXRlcyBhIHN1Y2Nlc3MuIFRoaXMgZG9lcyAqKk5PVCoqIG1ha2UgdGhlIG92
ZXJhbGwgdGVzdCBzdWNjZWVkLiBBIHRlc3QgaXMKK2NvbnNpZGVyZWQgc3VjY2Vzc2Z1bCBvbmx5
IGlmIG5vbmUgb2YgaXRzIGFzc2VydGlvbnMgZmFpbCBkdXJpbmcgaXRzIGV4ZWN1dGlvbi4KKwor
Tk9URTogYFNVQ0NFRUQoKWAgaXMgcHVyZWx5IGRvY3VtZW50YXJ5IGFuZCBjdXJyZW50bHkgZG9l
c24ndCBnZW5lcmF0ZSBhbnkKK3VzZXItdmlzaWJsZSBvdXRwdXQuIEhvd2V2ZXIsIHdlIG1heSBh
ZGQgYFNVQ0NFRUQoKWAgbWVzc2FnZXMgdG8gZ29vZ2xldGVzdCdzCitvdXRwdXQgaW4gdGhlIGZ1
dHVyZS4KKworYGBgYysrCitGQUlMKCk7CitBRERfRkFJTFVSRSgpOworQUREX0ZBSUxVUkVfQVQo
ImZpbGVfcGF0aCIsIGxpbmVfbnVtYmVyKTsKK2BgYAorCitgRkFJTCgpYCBnZW5lcmF0ZXMgYSBm
YXRhbCBmYWlsdXJlLCB3aGlsZSBgQUREX0ZBSUxVUkUoKWAgYW5kIGBBRERfRkFJTFVSRV9BVCgp
YAorZ2VuZXJhdGUgYSBub25mYXRhbCBmYWlsdXJlLiBUaGVzZSBhcmUgdXNlZnVsIHdoZW4gY29u
dHJvbCBmbG93LCByYXRoZXIgdGhhbiBhCitCb29sZWFuIGV4cHJlc3Npb24sIGRldGVybWluZXMg
dGhlIHRlc3QncyBzdWNjZXNzIG9yIGZhaWx1cmUuIEZvciBleGFtcGxlLCB5b3UKK21pZ2h0IHdh
bnQgdG8gd3JpdGUgc29tZXRoaW5nIGxpa2U6CisKK2BgYGMrKworc3dpdGNoKGV4cHJlc3Npb24p
IHsKKyAgY2FzZSAxOgorICAgICAuLi4gc29tZSBjaGVja3MgLi4uCisgIGNhc2UgMjoKKyAgICAg
Li4uIHNvbWUgb3RoZXIgY2hlY2tzIC4uLgorICBkZWZhdWx0OgorICAgICBGQUlMKCkgPDwgIldl
IHNob3VsZG4ndCBnZXQgaGVyZS4iOworfQorYGBgCisKK05PVEU6IHlvdSBjYW4gb25seSB1c2Ug
YEZBSUwoKWAgaW4gZnVuY3Rpb25zIHRoYXQgcmV0dXJuIGB2b2lkYC4gU2VlIHRoZQorW0Fzc2Vy
dGlvbiBQbGFjZW1lbnQgc2VjdGlvbl0oI2Fzc2VydGlvbi1wbGFjZW1lbnQpIGZvciBtb3JlIGlu
Zm9ybWF0aW9uLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisj
IyMgRXhjZXB0aW9uIEFzc2VydGlvbnMKKworVGhlc2UgYXJlIGZvciB2ZXJpZnlpbmcgdGhhdCBh
IHBpZWNlIG9mIGNvZGUgdGhyb3dzIChvciBkb2VzIG5vdCB0aHJvdykgYW4KK2V4Y2VwdGlvbiBv
ZiB0aGUgZ2l2ZW4gdHlwZToKKworRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVy
aWZpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tCitgQVNTRVJU
X1RIUk9XKHN0YXRlbWVudCwgZXhjZXB0aW9uX3R5cGUpO2AgfCBgRVhQRUNUX1RIUk9XKHN0YXRl
bWVudCwgZXhjZXB0aW9uX3R5cGUpO2AgfCBgc3RhdGVtZW50YCB0aHJvd3MgYW4gZXhjZXB0aW9u
IG9mIHRoZSBnaXZlbiB0eXBlCitgQVNTRVJUX0FOWV9USFJPVyhzdGF0ZW1lbnQpO2AgICAgICAg
ICAgICAgfCBgRVhQRUNUX0FOWV9USFJPVyhzdGF0ZW1lbnQpO2AgICAgICAgICAgICAgfCBgc3Rh
dGVtZW50YCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIGFueSB0eXBlCitgQVNTRVJUX05PX1RIUk9X
KHN0YXRlbWVudCk7YCAgICAgICAgICAgICAgfCBgRVhQRUNUX05PX1RIUk9XKHN0YXRlbWVudCk7
YCAgICAgICAgICAgICAgfCBgc3RhdGVtZW50YCBkb2Vzbid0IHRocm93IGFueSBleGNlcHRpb24K
KworRXhhbXBsZXM6CisKK2BgYGMrKworQVNTRVJUX1RIUk9XKEZvbyg1KSwgYmFyX2V4Y2VwdGlv
bik7CisKK0VYUEVDVF9OT19USFJPVyh7CisgIGludCBuID0gNTsKKyAgQmFyKCZuKTsKK30pOwor
YGBgCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWM7IHJlcXVpcmVzIGV4
Y2VwdGlvbnMgdG8gYmUgZW5hYmxlZCBpbiB0aGUKK2J1aWxkIGVudmlyb25tZW50IChub3RlIHRo
YXQgYGdvb2dsZTNgICoqZGlzYWJsZXMqKiBleGNlcHRpb25zKS4KKworIyMjIFByZWRpY2F0ZSBB
c3NlcnRpb25zIGZvciBCZXR0ZXIgRXJyb3IgTWVzc2FnZXMKKworRXZlbiB0aG91Z2ggZ29vZ2xl
dGVzdCBoYXMgYSByaWNoIHNldCBvZiBhc3NlcnRpb25zLCB0aGV5IGNhbiBuZXZlciBiZSBjb21w
bGV0ZSwKK2FzIGl0J3MgaW1wb3NzaWJsZSAobm9yIGEgZ29vZCBpZGVhKSB0byBhbnRpY2lwYXRl
IGFsbCBzY2VuYXJpb3MgYSB1c2VyIG1pZ2h0CitydW4gaW50by4gVGhlcmVmb3JlLCBzb21ldGlt
ZXMgYSB1c2VyIGhhcyB0byB1c2UgYEVYUEVDVF9UUlVFKClgIHRvIGNoZWNrIGEKK2NvbXBsZXgg
ZXhwcmVzc2lvbiwgZm9yIGxhY2sgb2YgYSBiZXR0ZXIgbWFjcm8uIFRoaXMgaGFzIHRoZSBwcm9i
bGVtIG9mIG5vdAorc2hvd2luZyB5b3UgdGhlIHZhbHVlcyBvZiB0aGUgcGFydHMgb2YgdGhlIGV4
cHJlc3Npb24sIG1ha2luZyBpdCBoYXJkIHRvCit1bmRlcnN0YW5kIHdoYXQgd2VudCB3cm9uZy4g
QXMgYSB3b3JrYXJvdW5kLCBzb21lIHVzZXJzIGNob29zZSB0byBjb25zdHJ1Y3QgdGhlCitmYWls
dXJlIG1lc3NhZ2UgYnkgdGhlbXNlbHZlcywgc3RyZWFtaW5nIGl0IGludG8gYEVYUEVDVF9UUlVF
KClgLiBIb3dldmVyLCB0aGlzCitpcyBhd2t3YXJkIGVzcGVjaWFsbHkgd2hlbiB0aGUgZXhwcmVz
c2lvbiBoYXMgc2lkZS1lZmZlY3RzIG9yIGlzIGV4cGVuc2l2ZSB0bworZXZhbHVhdGUuCisKK2dv
b2dsZXRlc3QgZ2l2ZXMgeW91IHRocmVlIGRpZmZlcmVudCBvcHRpb25zIHRvIHNvbHZlIHRoaXMg
cHJvYmxlbToKKworIyMjIyBVc2luZyBhbiBFeGlzdGluZyBCb29sZWFuIEZ1bmN0aW9uCisKK0lm
IHlvdSBhbHJlYWR5IGhhdmUgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHRoYXQgcmV0dXJucyBgYm9v
bGAgKG9yIGEgdHlwZSB0aGF0CitjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYGJvb2xg
KSwgeW91IGNhbiB1c2UgaXQgaW4gYSAqcHJlZGljYXRlCithc3NlcnRpb24qIHRvIGdldCB0aGUg
ZnVuY3Rpb24gYXJndW1lbnRzIHByaW50ZWQgZm9yIGZyZWU6CisKK3wgRmF0YWwgYXNzZXJ0aW9u
ICAgICAgICAgICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAg
fCBWZXJpZmllcyAgICAgICAgICAgICAgICAgICAgfAorfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8Cit8IGBBU1NFUlRfUFJFRDEocHJlZDEsIHZhbDEpO2Ag
ICAgICAgfCBgRVhQRUNUX1BSRUQxKHByZWQxLCB2YWwxKTtgICAgICAgIHwgYHByZWQxKHZhbDEp
YCBpcyB0cnVlICAgICAgIHwKK3wgYEFTU0VSVF9QUkVEMihwcmVkMiwgdmFsMSwgdmFsMik7YCB8
IGBFWFBFQ1RfUFJFRDIocHJlZDIsIHZhbDEsIHZhbDIpO2AgfCBgcHJlZDIodmFsMSwgdmFsMilg
IGlzIHRydWUgfAorfCBgLi4uYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYC4uLmAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisKK0luIHRoZSBhYm92ZSwgYHByZWRuYCBpcyBhbiBgbmAtYXJ5IHByZWRpY2F0ZSBmdW5j
dGlvbiBvciBmdW5jdG9yLCB3aGVyZSBgdmFsMWAsCitgdmFsMmAsIC4uLiwgYW5kIGB2YWxuYCBh
cmUgaXRzIGFyZ3VtZW50cy4gVGhlIGFzc2VydGlvbiBzdWNjZWVkcyBpZiB0aGUKK3ByZWRpY2F0
ZSByZXR1cm5zIGB0cnVlYCB3aGVuIGFwcGxpZWQgdG8gdGhlIGdpdmVuIGFyZ3VtZW50cywgYW5k
IGZhaWxzCitvdGhlcndpc2UuIFdoZW4gdGhlIGFzc2VydGlvbiBmYWlscywgaXQgcHJpbnRzIHRo
ZSB2YWx1ZSBvZiBlYWNoIGFyZ3VtZW50LiBJbgorZWl0aGVyIGNhc2UsIHRoZSBhcmd1bWVudHMg
YXJlIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuCisKK0hlcmUncyBhbiBleGFtcGxlLiBHaXZlbgor
CitgYGBjKysKKy8vIFJldHVybnMgdHJ1ZSBpZiBtIGFuZCBuIGhhdmUgbm8gY29tbW9uIGRpdmlz
b3JzIGV4Y2VwdCAxLgorYm9vbCBNdXR1YWxseVByaW1lKGludCBtLCBpbnQgbikgeyAuLi4gfQor
Citjb25zdCBpbnQgYSA9IDM7Citjb25zdCBpbnQgYiA9IDQ7Citjb25zdCBpbnQgYyA9IDEwOwor
YGBgCisKK3RoZSBhc3NlcnRpb24KKworYGBgYysrCisgIEVYUEVDVF9QUkVEMihNdXR1YWxseVBy
aW1lLCBhLCBiKTsKK2BgYAorCit3aWxsIHN1Y2NlZWQsIHdoaWxlIHRoZSBhc3NlcnRpb24KKwor
YGBgYysrCisgIEVYUEVDVF9QUkVEMihNdXR1YWxseVByaW1lLCBiLCBjKTsKK2BgYAorCit3aWxs
IGZhaWwgd2l0aCB0aGUgbWVzc2FnZQorCitgYGBub25lCitNdXR1YWxseVByaW1lKGIsIGMpIGlz
IGZhbHNlLCB3aGVyZQorYiBpcyA0CitjIGlzIDEwCitgYGAKKworPiBOT1RFOgorPgorPiAxLiAg
SWYgeW91IHNlZSBhIGNvbXBpbGVyIGVycm9yICJubyBtYXRjaGluZyBmdW5jdGlvbiB0byBjYWxs
IiB3aGVuIHVzaW5nCis+ICAgICBgQVNTRVJUX1BSRUQqYCBvciBgRVhQRUNUX1BSRUQqYCwgcGxl
YXNlIHNlZQorPiAgICAgW3RoaXNdKGZhcS5tZCNPdmVybG9hZGVkUHJlZGljYXRlKSBmb3IgaG93
IHRvIHJlc29sdmUgaXQuCis+IDEuICBDdXJyZW50bHkgd2Ugb25seSBwcm92aWRlIHByZWRpY2F0
ZSBhc3NlcnRpb25zIG9mIGFyaXR5IDw9IDUuIElmIHlvdSBuZWVkCis+ICAgICBhIGhpZ2hlci1h
cml0eSBhc3NlcnRpb24sIGxldCBbdXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xl
dGVzdC9pc3N1ZXMpIGtub3cuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBN
YWMuCisKKyMjIyMgVXNpbmcgYSBGdW5jdGlvbiBUaGF0IFJldHVybnMgYW4gQXNzZXJ0aW9uUmVz
dWx0CisKK1doaWxlIGBFWFBFQ1RfUFJFRCooKWAgYW5kIGZyaWVuZHMgYXJlIGhhbmR5IGZvciBh
IHF1aWNrIGpvYiwgdGhlIHN5bnRheCBpcyBub3QKK3NhdGlzZmFjdG9yeTogeW91IGhhdmUgdG8g
dXNlIGRpZmZlcmVudCBtYWNyb3MgZm9yIGRpZmZlcmVudCBhcml0aWVzLCBhbmQgaXQKK2ZlZWxz
IG1vcmUgbGlrZSBMaXNwIHRoYW4gQysrLiBUaGUgYDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0
YCBjbGFzcyBzb2x2ZXMKK3RoaXMgcHJvYmxlbS4KKworQW4gYEFzc2VydGlvblJlc3VsdGAgb2Jq
ZWN0IHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBhbiBhc3NlcnRpb24gKHdoZXRoZXIgaXQncwor
YSBzdWNjZXNzIG9yIGEgZmFpbHVyZSwgYW5kIGFuIGFzc29jaWF0ZWQgbWVzc2FnZSkuIFlvdSBj
YW4gY3JlYXRlIGFuCitgQXNzZXJ0aW9uUmVzdWx0YCB1c2luZyBvbmUgb2YgdGhlc2UgZmFjdG9y
eSBmdW5jdGlvbnM6CisKK2BgYGMrKworbmFtZXNwYWNlIHRlc3RpbmcgeworCisvLyBSZXR1cm5z
IGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBhbiBhc3NlcnRpb24g
aGFzCisvLyBzdWNjZWVkZWQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uU3VjY2VzcygpOwor
CisvLyBSZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBh
biBhc3NlcnRpb24gaGFzCisvLyBmYWlsZWQuCitBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uRmFp
bHVyZSgpOworCit9CitgYGAKKworWW91IGNhbiB0aGVuIHVzZSB0aGUgYDw8YCBvcGVyYXRvciB0
byBzdHJlYW0gbWVzc2FnZXMgdG8gdGhlIGBBc3NlcnRpb25SZXN1bHRgCitvYmplY3QuCisKK1Rv
IHByb3ZpZGUgbW9yZSByZWFkYWJsZSBtZXNzYWdlcyBpbiBCb29sZWFuIGFzc2VydGlvbnMgKGUu
Zy4gYEVYUEVDVF9UUlVFKClgKSwKK3dyaXRlIGEgcHJlZGljYXRlIGZ1bmN0aW9uIHRoYXQgcmV0
dXJucyBgQXNzZXJ0aW9uUmVzdWx0YCBpbnN0ZWFkIG9mIGBib29sYC4gRm9yCitleGFtcGxlLCBp
ZiB5b3UgZGVmaW5lIGBJc0V2ZW4oKWAgYXM6CisKK2BgYGMrKworOjp0ZXN0aW5nOjpBc3NlcnRp
b25SZXN1bHQgSXNFdmVuKGludCBuKSB7CisgIGlmICgobiAlIDIpID09IDApCisgICAgIHJldHVy
biA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKKyAgZWxzZQorICAgICByZXR1cm4gOjp0
ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgbiA8PCAiIGlzIG9kZCI7Cit9CitgYGAKKwor
aW5zdGVhZCBvZjoKKworYGBgYysrCitib29sIElzRXZlbihpbnQgbikgeworICByZXR1cm4gKG4g
JSAyKSA9PSAwOworfQorYGBgCisKK3RoZSBmYWlsZWQgYXNzZXJ0aW9uIGBFWFBFQ1RfVFJVRShJ
c0V2ZW4oRmliKDQpKSlgIHdpbGwgcHJpbnQ6CisKK2BgYG5vbmUKK1ZhbHVlIG9mOiBJc0V2ZW4o
RmliKDQpKQorICBBY3R1YWw6IGZhbHNlICgzIGlzIG9kZCkKK0V4cGVjdGVkOiB0cnVlCitgYGAK
KworaW5zdGVhZCBvZiBhIG1vcmUgb3BhcXVlCisKK2BgYG5vbmUKK1ZhbHVlIG9mOiBJc0V2ZW4o
RmliKDQpKQorICBBY3R1YWw6IGZhbHNlCitFeHBlY3RlZDogdHJ1ZQorYGBgCisKK0lmIHlvdSB3
YW50IGluZm9ybWF0aXZlIG1lc3NhZ2VzIGluIGBFWFBFQ1RfRkFMU0VgIGFuZCBgQVNTRVJUX0ZB
TFNFYCBhcyB3ZWxsCisob25lIHRoaXJkIG9mIEJvb2xlYW4gYXNzZXJ0aW9ucyBpbiB0aGUgR29v
Z2xlIGNvZGUgYmFzZSBhcmUgbmVnYXRpdmUgb25lcyksIGFuZAorYXJlIGZpbmUgd2l0aCBtYWtp
bmcgdGhlIHByZWRpY2F0ZSBzbG93ZXIgaW4gdGhlIHN1Y2Nlc3MgY2FzZSwgeW91IGNhbiBzdXBw
bHkgYQorc3VjY2VzcyBtZXNzYWdlOgorCitgYGBjKysKKzo6dGVzdGluZzo6QXNzZXJ0aW9uUmVz
dWx0IElzRXZlbihpbnQgbikgeworICBpZiAoKG4gJSAyKSA9PSAwKQorICAgICByZXR1cm4gOjp0
ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCkgPDwgbiA8PCAiIGlzIGV2ZW4iOworICBlbHNlCisg
ICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2Rk
IjsKK30KK2BgYAorCitUaGVuIHRoZSBzdGF0ZW1lbnQgYEVYUEVDVF9GQUxTRShJc0V2ZW4oRmli
KDYpKSlgIHdpbGwgcHJpbnQKKworYGBgbm9uZQorICBWYWx1ZSBvZjogSXNFdmVuKEZpYig2KSkK
KyAgICAgQWN0dWFsOiB0cnVlICg4IGlzIGV2ZW4pCisgIEV4cGVjdGVkOiBmYWxzZQorYGBgCisK
KyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyMgVXNpbmcgYSBQ
cmVkaWNhdGUtRm9ybWF0dGVyCisKK0lmIHlvdSBmaW5kIHRoZSBkZWZhdWx0IG1lc3NhZ2UgZ2Vu
ZXJhdGVkIGJ5IGAoQVNTRVJUfEVYUEVDVClfUFJFRCpgIGFuZAorYChBU1NFUlR8RVhQRUNUKV8o
VFJVRXxGQUxTRSlgIHVuc2F0aXNmYWN0b3J5LCBvciBzb21lIGFyZ3VtZW50cyB0byB5b3VyCitw
cmVkaWNhdGUgZG8gbm90IHN1cHBvcnQgc3RyZWFtaW5nIHRvIGBvc3RyZWFtYCwgeW91IGNhbiBp
bnN0ZWFkIHVzZSB0aGUKK2ZvbGxvd2luZyAqcHJlZGljYXRlLWZvcm1hdHRlciBhc3NlcnRpb25z
KiB0byAqZnVsbHkqIGN1c3RvbWl6ZSBob3cgdGhlIG1lc3NhZ2UKK2lzIGZvcm1hdHRlZDoKKwor
RmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZmF0
YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyaWZpZXMKKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tCitgQVNT
RVJUX1BSRURfRk9STUFUMShwcmVkX2Zvcm1hdDEsIHZhbDEpO2AgICAgICAgfCBgRVhQRUNUX1BS
RURfRk9STUFUMShwcmVkX2Zvcm1hdDEsIHZhbDEpO2AgICAgICAgfCBgcHJlZF9mb3JtYXQxKHZh
bDEpYCBpcyBzdWNjZXNzZnVsCitgQVNTRVJUX1BSRURfRk9STUFUMihwcmVkX2Zvcm1hdDIsIHZh
bDEsIHZhbDIpO2AgfCBgRVhQRUNUX1BSRURfRk9STUFUMihwcmVkX2Zvcm1hdDIsIHZhbDEsIHZh
bDIpO2AgfCBgcHJlZF9mb3JtYXQyKHZhbDEsIHZhbDIpYCBpcyBzdWNjZXNzZnVsCitgLi4uYCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgLi4uYCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAuLi4KKworVGhlIGRpZmZlcmVu
Y2UgYmV0d2VlbiB0aGlzIGFuZCB0aGUgcHJldmlvdXMgZ3JvdXAgb2YgbWFjcm9zIGlzIHRoYXQg
aW5zdGVhZCBvZgorYSBwcmVkaWNhdGUsIGAoQVNTRVJUfEVYUEVDVClfUFJFRF9GT1JNQVQqYCB0
YWtlIGEgKnByZWRpY2F0ZS1mb3JtYXR0ZXIqCisoYHByZWRfZm9ybWF0bmApLCB3aGljaCBpcyBh
IGZ1bmN0aW9uIG9yIGZ1bmN0b3Igd2l0aCB0aGUgc2lnbmF0dXJlOgorCitgYGBjKysKKzo6dGVz
dGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRpY2F0ZUZvcm1hdHRlcm4oY29uc3QgY2hhciogZXhw
cjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGV4cHIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogZXhwcm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFQxIHZhbDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFQyIHZhbDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUbiB2YWxuKTsKK2BgYAorCit3aGVyZSBgdmFsMWAsIGB2YWwyYCwgLi4uLCBhbmQgYHZh
bG5gIGFyZSB0aGUgdmFsdWVzIG9mIHRoZSBwcmVkaWNhdGUgYXJndW1lbnRzLAorYW5kIGBleHBy
MWAsIGBleHByMmAsIC4uLiwgYW5kIGBleHBybmAgYXJlIHRoZSBjb3JyZXNwb25kaW5nIGV4cHJl
c3Npb25zIGFzIHRoZXkKK2FwcGVhciBpbiB0aGUgc291cmNlIGNvZGUuIFRoZSB0eXBlcyBgVDFg
LCBgVDJgLCAuLi4sIGFuZCBgVG5gIGNhbiBiZSBlaXRoZXIKK3ZhbHVlIHR5cGVzIG9yIHJlZmVy
ZW5jZSB0eXBlcy4gRm9yIGV4YW1wbGUsIGlmIGFuIGFyZ3VtZW50IGhhcyB0eXBlIGBGb29gLCB5
b3UKK2NhbiBkZWNsYXJlIGl0IGFzIGVpdGhlciBgRm9vYCBvciBgY29uc3QgRm9vJmAsIHdoaWNo
ZXZlciBpcyBhcHByb3ByaWF0ZS4KKworQXMgYW4gZXhhbXBsZSwgbGV0J3MgaW1wcm92ZSB0aGUg
ZmFpbHVyZSBtZXNzYWdlIGluIGBNdXR1YWxseVByaW1lKClgLCB3aGljaCB3YXMKK3VzZWQgd2l0
aCBgRVhQRUNUX1BSRUQyKClgOgorCitgYGBjKysKKy8vIFJldHVybnMgdGhlIHNtYWxsZXN0IHBy
aW1lIGNvbW1vbiBkaXZpc29yIG9mIG0gYW5kIG4sCisvLyBvciAxIHdoZW4gbSBhbmQgbiBhcmUg
bXV0dWFsbHkgcHJpbWUuCitpbnQgU21hbGxlc3RQcmltZUNvbW1vbkRpdmlzb3IoaW50IG0sIGlu
dCBuKSB7IC4uLiB9CisKKy8vIEEgcHJlZGljYXRlLWZvcm1hdHRlciBmb3IgYXNzZXJ0aW5nIHRo
YXQgdHdvIGludGVnZXJzIGFyZSBtdXR1YWxseSBwcmltZS4KKzo6dGVzdGluZzo6QXNzZXJ0aW9u
UmVzdWx0IEFzc2VydE11dHVhbGx5UHJpbWUoY29uc3QgY2hhciogbV9leHByLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuX2V4cHIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbikgewor
ICBpZiAoTXV0dWFsbHlQcmltZShtLCBuKSkgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3Vj
Y2VzcygpOworCisgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBtX2V4
cHIgPDwgIiBhbmQgIiA8PCBuX2V4cHIKKyAgICAgIDw8ICIgKCIgPDwgbSA8PCAiIGFuZCAiIDw8
IG4gPDwgIikgYXJlIG5vdCBtdXR1YWxseSBwcmltZSwgIgorICAgICAgPDwgImFzIHRoZXkgaGF2
ZSBhIGNvbW1vbiBkaXZpc29yICIgPDwgU21hbGxlc3RQcmltZUNvbW1vbkRpdmlzb3IobSwgbik7
Cit9CitgYGAKKworV2l0aCB0aGlzIHByZWRpY2F0ZS1mb3JtYXR0ZXIsIHdlIGNhbiB1c2UKKwor
YGBgYysrCisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoQXNzZXJ0TXV0dWFsbHlQcmltZSwgYiwgYyk7
CitgYGAKKwordG8gZ2VuZXJhdGUgdGhlIG1lc3NhZ2UKKworYGBgbm9uZQorYiBhbmQgYyAoNCBh
bmQgMTApIGFyZSBub3QgbXV0dWFsbHkgcHJpbWUsIGFzIHRoZXkgaGF2ZSBhIGNvbW1vbiBkaXZp
c29yIDIuCitgYGAKKworQXMgeW91IG1heSBoYXZlIHJlYWxpemVkLCBtYW55IG9mIHRoZSBidWls
dC1pbiBhc3NlcnRpb25zIHdlIGludHJvZHVjZWQgZWFybGllcgorYXJlIHNwZWNpYWwgY2FzZXMg
b2YgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZPUk1BVCpgLiBJbiBmYWN0LCBtb3N0IG9mIHRoZW0g
YXJlCitpbmRlZWQgZGVmaW5lZCB1c2luZyBgKEVYUEVDVHxBU1NFUlQpX1BSRURfRk9STUFUKmAu
CisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBGbG9hdGlu
Zy1Qb2ludCBDb21wYXJpc29uCisKK0NvbXBhcmluZyBmbG9hdGluZy1wb2ludCBudW1iZXJzIGlz
IHRyaWNreS4gRHVlIHRvIHJvdW5kLW9mZiBlcnJvcnMsIGl0IGlzIHZlcnkKK3VubGlrZWx5IHRo
YXQgdHdvIGZsb2F0aW5nLXBvaW50cyB3aWxsIG1hdGNoIGV4YWN0bHkuIFRoZXJlZm9yZSwgYEFT
U0VSVF9FUWAgJ3MKK25haXZlIGNvbXBhcmlzb24gdXN1YWxseSBkb2Vzbid0IHdvcmsuIEFuZCBz
aW5jZSBmbG9hdGluZy1wb2ludHMgY2FuIGhhdmUgYSB3aWRlCit2YWx1ZSByYW5nZSwgbm8gc2lu
Z2xlIGZpeGVkIGVycm9yIGJvdW5kIHdvcmtzLiBJdCdzIGJldHRlciB0byBjb21wYXJlIGJ5IGEK
K2ZpeGVkIHJlbGF0aXZlIGVycm9yIGJvdW5kLCBleGNlcHQgZm9yIHZhbHVlcyBjbG9zZSB0byAw
IGR1ZSB0byB0aGUgbG9zcyBvZgorcHJlY2lzaW9uIHRoZXJlLgorCitJbiBnZW5lcmFsLCBmb3Ig
ZmxvYXRpbmctcG9pbnQgY29tcGFyaXNvbiB0byBtYWtlIHNlbnNlLCB0aGUgdXNlciBuZWVkcyB0
bworY2FyZWZ1bGx5IGNob29zZSB0aGUgZXJyb3IgYm91bmQuIElmIHRoZXkgZG9uJ3Qgd2FudCBv
ciBjYXJlIHRvLCBjb21wYXJpbmcgaW4KK3Rlcm1zIG9mIFVuaXRzIGluIHRoZSBMYXN0IFBsYWNl
IChVTFBzKSBpcyBhIGdvb2QgZGVmYXVsdCwgYW5kIGdvb2dsZXRlc3QKK3Byb3ZpZGVzIGFzc2Vy
dGlvbnMgdG8gZG8gdGhpcy4gRnVsbCBkZXRhaWxzIGFib3V0IFVMUHMgYXJlIHF1aXRlIGxvbmc7
IGlmIHlvdQord2FudCB0byBsZWFybiBtb3JlLCBzZWUKK1toZXJlXShodHRwczovL3JhbmRvbWFz
Y2lpLndvcmRwcmVzcy5jb20vMjAxMi8wMi8yNS9jb21wYXJpbmctZmxvYXRpbmctcG9pbnQtbnVt
YmVycy0yMDEyLWVkaXRpb24vKS4KKworIyMjIyBGbG9hdGluZy1Qb2ludCBNYWNyb3MKKworfCBG
YXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAg
ICAgICAgIHwgVmVyaWZpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKK3wgYEFT
U0VSVF9GTE9BVF9FUSh2YWwxLCB2YWwyKTtgICB8IGBFWFBFQ1RfRkxPQVRfRVEodmFsMSx2YWwy
KTtgICB8IHRoZSB0d28gYGZsb2F0YCB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbCAgfAorfCBgQVNT
RVJUX0RPVUJMRV9FUSh2YWwxLCB2YWwyKTtgIHwgYEVYUEVDVF9ET1VCTEVfRVEodmFsMSwgdmFs
Mik7YHwgdGhlIHR3byBgZG91YmxlYCB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbCB8CisKK0J5ICJh
bG1vc3QgZXF1YWwiIHdlIG1lYW4gdGhlIHZhbHVlcyBhcmUgd2l0aGluIDQgVUxQJ3MgZnJvbSBl
YWNoIG90aGVyLgorCitOT1RFOiBgQ0hFQ0tfRE9VQkxFX0VRKClgIGluIGBiYXNlL2xvZ2dpbmcu
aGAgdXNlcyBhIGZpeGVkIGFic29sdXRlIGVycm9yIGJvdW5kLAorc28gaXRzIHJlc3VsdCBtYXkg
ZGlmZmVyIGZyb20gdGhhdCBvZiB0aGUgZ29vZ2xldGVzdCBtYWNyb3MuIFRoYXQgbWFjcm8gaXMK
K3Vuc2FmZSBhbmQgaGFzIGJlZW4gZGVwcmVjYXRlZC4gUGxlYXNlIGRvbid0IHVzZSBpdCBhbnkg
bW9yZS4KKworVGhlIGZvbGxvd2luZyBhc3NlcnRpb25zIGFsbG93IHlvdSB0byBjaG9vc2UgdGhl
IGFjY2VwdGFibGUgZXJyb3IgYm91bmQ6CisKK3wgRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAg
ICAgICAgICAgICB8IE5vbmZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgfCBWZXJp
ZmllcyAgICAgICAgICAgICAgICAgIHwKK3wgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIHwKK3wgYEFTU0VSVF9ORUFSKHZhbDEsIHZhbDIsIGFic19lcnJv
cik7YCB8IGBFWFBFQ1RfTkVBUih2YWwxLCB2YWwyLCBhYnNfZXJyb3IpO2AgfCB0aGUgZGlmZmVy
ZW5jZSBiZXR3ZWVuIGB2YWwxYCBhbmQgYHZhbDJgIGRvZXNuJ3QgZXhjZWVkIHRoZSBnaXZlbiBh
YnNvbHV0ZSBlcnJvciB8CisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKKyMjIyMgRmxvYXRpbmctUG9pbnQgUHJlZGljYXRlLUZvcm1hdCBGdW5jdGlvbnMKKworU29t
ZSBmbG9hdGluZy1wb2ludCBvcGVyYXRpb25zIGFyZSB1c2VmdWwsIGJ1dCBub3QgdGhhdCBvZnRl
biB1c2VkLiBJbiBvcmRlciB0bworYXZvaWQgYW4gZXhwbG9zaW9uIG9mIG5ldyBtYWNyb3MsIHdl
IHByb3ZpZGUgdGhlbSBhcyBwcmVkaWNhdGUtZm9ybWF0IGZ1bmN0aW9ucwordGhhdCBjYW4gYmUg
dXNlZCBpbiBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3JvcyAoZS5nLiBgRVhQRUNUX1BSRURfRk9S
TUFUMmAsCitldGMpLgorCitgYGBjKysKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpG
bG9hdExFLCB2YWwxLCB2YWwyKTsKK0VYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpEb3Vi
bGVMRSwgdmFsMSwgdmFsMik7CitgYGAKKworVmVyaWZpZXMgdGhhdCBgdmFsMWAgaXMgbGVzcyB0
aGFuLCBvciBhbG1vc3QgZXF1YWwgdG8sIGB2YWwyYC4gWW91IGNhbiByZXBsYWNlCitgRVhQRUNU
X1BSRURfRk9STUFUMmAgaW4gdGhlIGFib3ZlIHRhYmxlIHdpdGggYEFTU0VSVF9QUkVEX0ZPUk1B
VDJgLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgQXNz
ZXJ0aW5nIFVzaW5nIGdNb2NrIE1hdGNoZXJzCisKK0dvb2dsZS1kZXZlbG9wZWQgQysrIG1vY2tp
bmcgZnJhbWV3b3JrIFtnTW9ja10oLi4vLi4vZ29vZ2xlbW9jaykgY29tZXMgd2l0aCBhCitsaWJy
YXJ5IG9mIG1hdGNoZXJzIGZvciB2YWxpZGF0aW5nIGFyZ3VtZW50cyBwYXNzZWQgdG8gbW9jayBv
YmplY3RzLiBBIGdNb2NrCisqbWF0Y2hlciogaXMgYmFzaWNhbGx5IGEgcHJlZGljYXRlIHRoYXQg
a25vd3MgaG93IHRvIGRlc2NyaWJlIGl0c2VsZi4gSXQgY2FuIGJlCit1c2VkIGluIHRoZXNlIGFz
c2VydGlvbiBtYWNyb3M6CisKK3wgRmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAgIHwgTm9u
ZmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgIHwgVmVyaWZpZXMgICAgICAgICAgICAgIHwKK3wg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKK3wgYEFTU0VSVF9USEFUKHZhbHVlLCBt
YXRjaGVyKTtgIHwgYEVYUEVDVF9USEFUKHZhbHVlLCBtYXRjaGVyKTtgIHwgdmFsdWUgbWF0Y2hl
cyBtYXRjaGVyIHwKKworRm9yIGV4YW1wbGUsIGBTdGFydHNXaXRoKHByZWZpeClgIGlzIGEgbWF0
Y2hlciB0aGF0IG1hdGNoZXMgYSBzdHJpbmcgc3RhcnRpbmcKK3dpdGggYHByZWZpeGAsIGFuZCB5
b3UgY2FuIHdyaXRlOgorCitgYGBjKysKK3VzaW5nIDo6dGVzdGluZzo6U3RhcnRzV2l0aDsKKy4u
LgorICAgIC8vIFZlcmlmaWVzIHRoYXQgRm9vKCkgcmV0dXJucyBhIHN0cmluZyBzdGFydGluZyB3
aXRoICJIZWxsbyIuCisgICAgRVhQRUNUX1RIQVQoRm9vKCksIFN0YXJ0c1dpdGgoIkhlbGxvIikp
OworYGBgCisKK1JlYWQgdGhpcyBbcmVjaXBlXSguLi8uLi9nb29nbGVtb2NrL2RvY3MvQ29va0Jv
b2subWQjdXNpbmctbWF0Y2hlcnMtaW4tZ29vZ2xlLXRlc3QtYXNzZXJ0aW9ucykgaW4KK3RoZSBn
TW9jayBDb29rYm9vayBmb3IgbW9yZSBkZXRhaWxzLgorCitnTW9jayBoYXMgYSByaWNoIHNldCBv
ZiBtYXRjaGVycy4gWW91IGNhbiBkbyBtYW55IHRoaW5ncyBnb29nbGV0ZXN0IGNhbm5vdCBkbwor
YWxvbmUgd2l0aCB0aGVtLiBGb3IgYSBsaXN0IG9mIG1hdGNoZXJzIGdNb2NrIHByb3ZpZGVzLCBy
ZWFkCitbdGhpc10oLi4vLi4vZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3VzaW5nLW1hdGNo
ZXJzKS4gRXNwZWNpYWxseSB1c2VmdWwgYW1vbmcgdGhlbSBhcmUKK3NvbWUgW3Byb3RvY29sIGJ1
ZmZlciBtYXRjaGVyc10oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9udWNsZXVzL2Jsb2IvbWFz
dGVyL251Y2xldXMvdGVzdGluZy9wcm90b2NvbC1idWZmZXItbWF0Y2hlcnMuaCkuIEl0J3MgZWFz
eSB0byB3cml0ZQoreW91ciBbb3duIG1hdGNoZXJzXSguLi8uLi9nb29nbGVtb2NrL2RvY3MvQ29v
a0Jvb2subWQjd3JpdGluZy1uZXctbWF0Y2hlcnMtcXVpY2tseSkgdG9vLgorCitGb3IgZXhhbXBs
ZSwgeW91IGNhbiB1c2UgZ01vY2sncworW0VxdWFsc1Byb3RvXShodHRwczovL2dpdGh1Yi5jb20v
Z29vZ2xlL251Y2xldXMvYmxvYi9tYXN0ZXIvbnVjbGV1cy90ZXN0aW5nL3Byb3RvY29sLWJ1ZmZl
ci1tYXRjaGVycy5oKQordG8gY29tcGFyZSBwcm90b3MgaW4geW91ciB0ZXN0czoKKworYGBgYysr
CisjaW5jbHVkZSAidGVzdGluZy9iYXNlL3B1YmxpYy9nbW9jay5oIgordXNpbmcgOjp0ZXN0aW5n
OjpFcXVhbHNQcm90bzsKKy4uLgorICAgIEVYUEVDVF9USEFUKGFjdHVhbF9wcm90bywgRXF1YWxz
UHJvdG8oImZvbzogMTIzIGJhcjogJ3h5eiciKSk7CisgICAgRVhQRUNUX1RIQVQoKmFjdHVhbF9w
cm90b19wdHIsIEVxdWFsc1Byb3RvKGV4cGVjdGVkX3Byb3RvKSk7CitgYGAKKworZ01vY2sgaXMg
YnVuZGxlZCB3aXRoIGdvb2dsZXRlc3QsIHNvIHlvdSBkb24ndCBuZWVkIHRvIGFkZCBhbnkgYnVp
bGQgZGVwZW5kZW5jeQoraW4gb3JkZXIgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhpcy4gSnVzdCBp
bmNsdWRlIGAidGVzdGluZy9iYXNlL3B1YmxpYy9nbW9jay5oImAKK2FuZCB5b3UncmUgcmVhZHkg
dG8gZ28uCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBhbmQgTWFjLgorCisj
IyMgTW9yZSBTdHJpbmcgQXNzZXJ0aW9ucworCisoUGxlYXNlIHJlYWQgdGhlIFtwcmV2aW91c10o
I0Fzc2VydFRoYXQpIHNlY3Rpb24gZmlyc3QgaWYgeW91IGhhdmVuJ3QuKQorCitZb3UgY2FuIHVz
ZSB0aGUgZ01vY2sgW3N0cmluZyBtYXRjaGVyc10oLi4vLi4vZ29vZ2xlbW9jay9kb2NzL0NoZWF0
U2hlZXQubWQjc3RyaW5nLW1hdGNoZXJzKQord2l0aCBgRVhQRUNUX1RIQVQoKWAgb3IgYEFTU0VS
VF9USEFUKClgIHRvIGRvIG1vcmUgc3RyaW5nIGNvbXBhcmlzb24gdHJpY2tzCisoc3ViLXN0cmlu
ZywgcHJlZml4LCBzdWZmaXgsIHJlZ3VsYXIgZXhwcmVzc2lvbiwgYW5kIGV0YykuIEZvciBleGFt
cGxlLAorCitgYGBjKysKK3VzaW5nIDo6dGVzdGluZzo6SGFzU3Vic3RyOwordXNpbmcgOjp0ZXN0
aW5nOjpNYXRjaGVzUmVnZXg7CisuLi4KKyAgQVNTRVJUX1RIQVQoZm9vX3N0cmluZywgSGFzU3Vi
c3RyKCJuZWVkbGUiKSk7CisgIEVYUEVDVF9USEFUKGJhcl9zdHJpbmcsIE1hdGNoZXNSZWdleCgi
XFx3KlxcZCsiKSk7CitgYGAKKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1h
Yy4KKworSWYgdGhlIHN0cmluZyBjb250YWlucyBhIHdlbGwtZm9ybWVkIEhUTUwgb3IgWE1MIGRv
Y3VtZW50LCB5b3UgY2FuIGNoZWNrIHdoZXRoZXIKK2l0cyBET00gdHJlZSBtYXRjaGVzIGFuIFtY
UGF0aAorZXhwcmVzc2lvbl0oaHR0cDovL3d3dy53My5vcmcvVFIveHBhdGgvI2NvbnRlbnRzKToK
KworYGBgYysrCisvLyBDdXJyZW50bHkgc3RpbGwgaW4gLy90ZW1wbGF0ZS9wcm90b3RlbXBsYXRl
L3Rlc3Rpbmc6eHBhdGhfbWF0Y2hlcgorI2luY2x1ZGUgInRlbXBsYXRlL3Byb3RvdGVtcGxhdGUv
dGVzdGluZy94cGF0aF9tYXRjaGVyLmgiCit1c2luZyBwcm90b3RlbXBsYXRlOjp0ZXN0aW5nOjpN
YXRjaGVzWFBhdGg7CitFWFBFQ1RfVEhBVChodG1sX3N0cmluZywgTWF0Y2hlc1hQYXRoKCIvL2Fb
dGV4dCgpPSdjbGljayBoZXJlJ10iKSk7CitgYGAKKworKipBdmFpbGFiaWxpdHkqKjogTGludXgu
CisKKyMjIyBXaW5kb3dzIEhSRVNVTFQgYXNzZXJ0aW9ucworCitUaGVzZSBhc3NlcnRpb25zIHRl
c3QgZm9yIGBIUkVTVUxUYCBzdWNjZXNzIG9yIGZhaWx1cmUuCisKK0ZhdGFsIGFzc2VydGlvbiAg
ICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgICAgICAgICAg
ICAgICAgfCBWZXJpZmllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
fCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tCitgQVNT
RVJUX0hSRVNVTFRfU1VDQ0VFREVEKGV4cHJlc3Npb24pYCB8IGBFWFBFQ1RfSFJFU1VMVF9TVUND
RUVERUQoZXhwcmVzc2lvbilgIHwgYGV4cHJlc3Npb25gIGlzIGEgc3VjY2VzcyBgSFJFU1VMVGAK
K2BBU1NFUlRfSFJFU1VMVF9GQUlMRUQoZXhwcmVzc2lvbilgICAgIHwgYEVYUEVDVF9IUkVTVUxU
X0ZBSUxFRChleHByZXNzaW9uKWAgICAgfCBgZXhwcmVzc2lvbmAgaXMgYSBmYWlsdXJlIGBIUkVT
VUxUYAorCitUaGUgZ2VuZXJhdGVkIG91dHB1dCBjb250YWlucyB0aGUgaHVtYW4tcmVhZGFibGUg
ZXJyb3IgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGgKK3RoZSBgSFJFU1VMVGAgY29kZSByZXR1cm5l
ZCBieSBgZXhwcmVzc2lvbmAuCisKK1lvdSBtaWdodCB1c2UgdGhlbSBsaWtlIHRoaXM6CisKK2Bg
YGMrKworQ0NvbVB0cjxJU2hlbGxEaXNwYXRjaDI+IHNoZWxsOworQVNTRVJUX0hSRVNVTFRfU1VD
Q0VFREVEKHNoZWxsLkNvQ3JlYXRlSW5zdGFuY2UoTCJTaGVsbC5BcHBsaWNhdGlvbiIpKTsKK0ND
b21WYXJpYW50IGVtcHR5OworQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKHNoZWxsLT5TaGVsbEV4
ZWN1dGUoQ0NvbUJTVFIodXJsKSwgZW1wdHksIGVtcHR5LCBlbXB0eSwgZW1wdHkpKTsKK2BgYAor
CisqKkF2YWlsYWJpbGl0eSoqOiBXaW5kb3dzLgorCisjIyMgVHlwZSBBc3NlcnRpb25zCisKK1lv
dSBjYW4gY2FsbCB0aGUgZnVuY3Rpb24KKworYGBgYysrCis6OnRlc3Rpbmc6OlN0YXRpY0Fzc2Vy
dFR5cGVFcTxUMSwgVDI+KCk7CitgYGAKKwordG8gYXNzZXJ0IHRoYXQgdHlwZXMgYFQxYCBhbmQg
YFQyYCBhcmUgdGhlIHNhbWUuIFRoZSBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgaWYKK3RoZSBhc3Nl
cnRpb24gaXMgc2F0aXNmaWVkLiBJZiB0aGUgdHlwZXMgYXJlIGRpZmZlcmVudCwgdGhlIGZ1bmN0
aW9uIGNhbGwgd2lsbAorZmFpbCB0byBjb21waWxlLCBhbmQgdGhlIGNvbXBpbGVyIGVycm9yIG1l
c3NhZ2Ugd2lsbCBsaWtlbHkgKGRlcGVuZGluZyBvbiB0aGUKK2NvbXBpbGVyKSBzaG93IHlvdSB0
aGUgYWN0dWFsIHZhbHVlcyBvZiBgVDFgIGFuZCBgVDJgLiBUaGlzIGlzIG1haW5seSB1c2VmdWwK
K2luc2lkZSB0ZW1wbGF0ZSBjb2RlLgorCisqKkNhdmVhdCoqOiBXaGVuIHVzZWQgaW5zaWRlIGEg
bWVtYmVyIGZ1bmN0aW9uIG9mIGEgY2xhc3MgdGVtcGxhdGUgb3IgYSBmdW5jdGlvbgordGVtcGxh
dGUsIGBTdGF0aWNBc3NlcnRUeXBlRXE8VDEsIFQyPigpYCBpcyBlZmZlY3RpdmUgb25seSBpZiB0
aGUgZnVuY3Rpb24gaXMKK2luc3RhbnRpYXRlZC4gRm9yIGV4YW1wbGUsIGdpdmVuOgorCitgYGBj
KysKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb28geworIHB1YmxpYzoKKyAgdm9pZCBC
YXIoKSB7IDo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGludCwgVD4oKTsgfQorfTsKK2Bg
YAorCit0aGUgY29kZToKKworYGBgYysrCit2b2lkIFRlc3QxKCkgeyBGb288Ym9vbD4gZm9vOyB9
CitgYGAKKword2lsbCBub3QgZ2VuZXJhdGUgYSBjb21waWxlciBlcnJvciwgYXMgYEZvbzxib29s
Pjo6QmFyKClgIGlzIG5ldmVyIGFjdHVhbGx5CitpbnN0YW50aWF0ZWQuIEluc3RlYWQsIHlvdSBu
ZWVkOgorCitgYGBjKysKK3ZvaWQgVGVzdDIoKSB7IEZvbzxib29sPiBmb287IGZvby5CYXIoKTsg
fQorYGBgCisKK3RvIGNhdXNlIGEgY29tcGlsZXIgZXJyb3IuCisKKyoqQXZhaWxhYmlsaXR5Kio6
IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyBBc3NlcnRpb24gUGxhY2VtZW50CisKK1lvdSBj
YW4gdXNlIGFzc2VydGlvbnMgaW4gYW55IEMrKyBmdW5jdGlvbi4gSW4gcGFydGljdWxhciwgaXQg
ZG9lc24ndCBoYXZlIHRvIGJlCithIG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLiBU
aGUgb25lIGNvbnN0cmFpbnQgaXMgdGhhdCBhc3NlcnRpb25zIHRoYXQKK2dlbmVyYXRlIGEgZmF0
YWwgZmFpbHVyZSAoYEZBSUwqYCBhbmQgYEFTU0VSVF8qYCkgY2FuIG9ubHkgYmUgdXNlZCBpbgor
dm9pZC1yZXR1cm5pbmcgZnVuY3Rpb25zLiBUaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2YgR29vZ2xl
J3Mgbm90IHVzaW5nCitleGNlcHRpb25zLiBCeSBwbGFjaW5nIGl0IGluIGEgbm9uLXZvaWQgZnVu
Y3Rpb24geW91J2xsIGdldCBhIGNvbmZ1c2luZyBjb21waWxlCitlcnJvciBsaWtlIGAiZXJyb3I6
IHZvaWQgdmFsdWUgbm90IGlnbm9yZWQgYXMgaXQgb3VnaHQgdG8gYmUiYCBvciBgImNhbm5vdAor
aW5pdGlhbGl6ZSByZXR1cm4gb2JqZWN0IG9mIHR5cGUgJ2Jvb2wnIHdpdGggYW4gcnZhbHVlIG9m
IHR5cGUgJ3ZvaWQnImAgb3IKK2AiZXJyb3I6IG5vIHZpYWJsZSBjb252ZXJzaW9uIGZyb20gJ3Zv
aWQnIHRvICdzdHJpbmcnImAuCisKK0lmIHlvdSBuZWVkIHRvIHVzZSBmYXRhbCBhc3NlcnRpb25z
IGluIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIG5vbi12b2lkLCBvbmUKK29wdGlvbiBpcyB0byBt
YWtlIHRoZSBmdW5jdGlvbiByZXR1cm4gdGhlIHZhbHVlIGluIGFuIG91dCBwYXJhbWV0ZXIgaW5z
dGVhZC4gRm9yCitleGFtcGxlLCB5b3UgY2FuIHJld3JpdGUgYFQyIEZvbyhUMSB4KWAgdG8gYHZv
aWQgRm9vKFQxIHgsIFQyKiByZXN1bHQpYC4gWW91CituZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGAq
cmVzdWx0YCBjb250YWlucyBzb21lIHNlbnNpYmxlIHZhbHVlIGV2ZW4gd2hlbiB0aGUKK2Z1bmN0
aW9uIHJldHVybnMgcHJlbWF0dXJlbHkuIEFzIHRoZSBmdW5jdGlvbiBub3cgcmV0dXJucyBgdm9p
ZGAsIHlvdSBjYW4gdXNlCithbnkgYXNzZXJ0aW9uIGluc2lkZSBvZiBpdC4KKworSWYgY2hhbmdp
bmcgdGhlIGZ1bmN0aW9uJ3MgdHlwZSBpcyBub3QgYW4gb3B0aW9uLCB5b3Ugc2hvdWxkIGp1c3Qg
dXNlIGFzc2VydGlvbnMKK3RoYXQgZ2VuZXJhdGUgbm9uLWZhdGFsIGZhaWx1cmVzLCBzdWNoIGFz
IGBBRERfRkFJTFVSRSpgIGFuZCBgRVhQRUNUXypgLgorCitOT1RFOiBDb25zdHJ1Y3RvcnMgYW5k
IGRlc3RydWN0b3JzIGFyZSBub3QgY29uc2lkZXJlZCB2b2lkLXJldHVybmluZyBmdW5jdGlvbnMs
CithY2NvcmRpbmcgdG8gdGhlIEMrKyBsYW5ndWFnZSBzcGVjaWZpY2F0aW9uLCBhbmQgc28geW91
IG1heSBub3QgdXNlIGZhdGFsCithc3NlcnRpb25zIGluIHRoZW0uIFlvdSdsbCBnZXQgYSBjb21w
aWxhdGlvbiBlcnJvciBpZiB5b3UgdHJ5LiBBIHNpbXBsZQord29ya2Fyb3VuZCBpcyB0byB0cmFu
c2ZlciB0aGUgZW50aXJlIGJvZHkgb2YgdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IgdG8g
YQorcHJpdmF0ZSB2b2lkLXJldHVybmluZyBtZXRob2QuIEhvd2V2ZXIsIHlvdSBzaG91bGQgYmUg
YXdhcmUgdGhhdCBhIGZhdGFsCithc3NlcnRpb24gZmFpbHVyZSBpbiBhIGNvbnN0cnVjdG9yIGRv
ZXMgbm90IHRlcm1pbmF0ZSB0aGUgY3VycmVudCB0ZXN0LCBhcyB5b3VyCitpbnR1aXRpb24gbWln
aHQgc3VnZ2VzdDsgaXQgbWVyZWx5IHJldHVybnMgZnJvbSB0aGUgY29uc3RydWN0b3IgZWFybHks
IHBvc3NpYmx5CitsZWF2aW5nIHlvdXIgb2JqZWN0IGluIGEgcGFydGlhbGx5LWNvbnN0cnVjdGVk
IHN0YXRlLiBMaWtld2lzZSwgYSBmYXRhbAorYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYSBkZXN0cnVj
dG9yIG1heSBsZWF2ZSB5b3VyIG9iamVjdCBpbiBhCitwYXJ0aWFsbHktZGVzdHJ1Y3RlZCBzdGF0
ZS4gVXNlIGFzc2VydGlvbnMgY2FyZWZ1bGx5IGluIHRoZXNlIHNpdHVhdGlvbnMhCisKKyMjIFRl
YWNoaW5nIGdvb2dsZXRlc3QgSG93IHRvIFByaW50IFlvdXIgVmFsdWVzCisKK1doZW4gYSB0ZXN0
IGFzc2VydGlvbiBzdWNoIGFzIGBFWFBFQ1RfRVFgIGZhaWxzLCBnb29nbGV0ZXN0IHByaW50cyB0
aGUgYXJndW1lbnQKK3ZhbHVlcyB0byBoZWxwIHlvdSBkZWJ1Zy4gSXQgZG9lcyB0aGlzIHVzaW5n
IGEgdXNlci1leHRlbnNpYmxlIHZhbHVlIHByaW50ZXIuCisKK1RoaXMgcHJpbnRlciBrbm93cyBo
b3cgdG8gcHJpbnQgYnVpbHQtaW4gQysrIHR5cGVzLCBuYXRpdmUgYXJyYXlzLCBTVEwKK2NvbnRh
aW5lcnMsIGFuZCBhbnkgdHlwZSB0aGF0IHN1cHBvcnRzIHRoZSBgPDxgIG9wZXJhdG9yLiBGb3Ig
b3RoZXIgdHlwZXMsIGl0CitwcmludHMgdGhlIHJhdyBieXRlcyBpbiB0aGUgdmFsdWUgYW5kIGhv
cGVzIHRoYXQgeW91IHRoZSB1c2VyIGNhbiBmaWd1cmUgaXQgb3V0LgorCitBcyBtZW50aW9uZWQg
ZWFybGllciwgdGhlIHByaW50ZXIgaXMgKmV4dGVuc2libGUqLiBUaGF0IG1lYW5zIHlvdSBjYW4g
dGVhY2ggaXQKK3RvIGRvIGEgYmV0dGVyIGpvYiBhdCBwcmludGluZyB5b3VyIHBhcnRpY3VsYXIg
dHlwZSB0aGFuIHRvIGR1bXAgdGhlIGJ5dGVzLiBUbworZG8gdGhhdCwgZGVmaW5lIGA8PGAgZm9y
IHlvdXIgdHlwZToKKworYGBgYysrCisvLyBTdHJlYW1zIGFyZSBhbGxvd2VkIG9ubHkgZm9yIGxv
Z2dpbmcuICBEb24ndCBpbmNsdWRlIHRoaXMgZm9yCisvLyBhbnkgb3RoZXIgcHVycG9zZS4KKyNp
bmNsdWRlIDxvc3RyZWFtPgorCituYW1lc3BhY2UgZm9vIHsKKworY2xhc3MgQmFyIHsgIC8vIFdl
IHdhbnQgZ29vZ2xldGVzdCB0byBiZSBhYmxlIHRvIHByaW50IGluc3RhbmNlcyBvZiB0aGlzLgor
Li4uCisgIC8vIENyZWF0ZSBhIGZyZWUgaW5saW5lIGZyaWVuZCBmdW5jdGlvbi4KKyAgZnJpZW5k
IHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBCYXImIGJh
cikgeworICAgIHJldHVybiBvcyA8PCBiYXIuRGVidWdTdHJpbmcoKTsgIC8vIHdoYXRldmVyIG5l
ZWRlZCB0byBwcmludCBiYXIgdG8gb3MKKyAgfQorfTsKKworLy8gSWYgeW91IGNhbid0IGRlY2xh
cmUgdGhlIGZ1bmN0aW9uIGluIHRoZSBjbGFzcyBpdCdzIGltcG9ydGFudCB0aGF0IHRoZQorLy8g
PDwgb3BlcmF0b3IgaXMgZGVmaW5lZCBpbiB0aGUgU0FNRSBuYW1lc3BhY2UgdGhhdCBkZWZpbmVz
IEJhci4gIEMrKydzIGxvb2stdXAKKy8vIHJ1bGVzIHJlbHkgb24gdGhhdC4KK3N0ZDo6b3N0cmVh
bSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBCYXImIGJhcikgeworICByZXR1
cm4gb3MgPDwgYmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3aGF0ZXZlciBuZWVkZWQgdG8gcHJpbnQg
YmFyIHRvIG9zCit9CisKK30gIC8vIG5hbWVzcGFjZSBmb28KK2BgYAorCitTb21ldGltZXMsIHRo
aXMgbWlnaHQgbm90IGJlIGFuIG9wdGlvbjogeW91ciB0ZWFtIG1heSBjb25zaWRlciBpdCBiYWQg
c3R5bGUgdG8KK2hhdmUgYSBgPDxgIG9wZXJhdG9yIGZvciBgQmFyYCwgb3IgYEJhcmAgbWF5IGFs
cmVhZHkgaGF2ZSBhIGA8PGAgb3BlcmF0b3IgdGhhdAorZG9lc24ndCBkbyB3aGF0IHlvdSB3YW50
IChhbmQgeW91IGNhbm5vdCBjaGFuZ2UgaXQpLiBJZiBzbywgeW91IGNhbiBpbnN0ZWFkCitkZWZp
bmUgYSBgUHJpbnRUbygpYCBmdW5jdGlvbiBsaWtlIHRoaXM6CisKK2BgYGMrKworLy8gU3RyZWFt
cyBhcmUgYWxsb3dlZCBvbmx5IGZvciBsb2dnaW5nLiAgRG9uJ3QgaW5jbHVkZSB0aGlzIGZvcgor
Ly8gYW55IG90aGVyIHB1cnBvc2UuCisjaW5jbHVkZSA8b3N0cmVhbT4KKworbmFtZXNwYWNlIGZv
byB7CisKK2NsYXNzIEJhciB7CisgIC4uLgorICBmcmllbmQgdm9pZCBQcmludFRvKGNvbnN0IEJh
ciYgYmFyLCBzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgKm9zIDw8IGJhci5EZWJ1Z1N0cmluZygp
OyAgLy8gd2hhdGV2ZXIgbmVlZGVkIHRvIHByaW50IGJhciB0byBvcworICB9Cit9OworCisvLyBJ
ZiB5b3UgY2FuJ3QgZGVjbGFyZSB0aGUgZnVuY3Rpb24gaW4gdGhlIGNsYXNzIGl0J3MgaW1wb3J0
YW50IHRoYXQgUHJpbnRUbygpCisvLyBpcyBkZWZpbmVkIGluIHRoZSBTQU1FIG5hbWVzcGFjZSB0
aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11cCBydWxlcyByZWx5CisvLyBvbiB0aGF0Lgor
dm9pZCBQcmludFRvKGNvbnN0IEJhciYgYmFyLCBzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8
PCBiYXIuRGVidWdTdHJpbmcoKTsgIC8vIHdoYXRldmVyIG5lZWRlZCB0byBwcmludCBiYXIgdG8g
b3MKK30KKworfSAgLy8gbmFtZXNwYWNlIGZvbworYGBgCisKK0lmIHlvdSBoYXZlIGRlZmluZWQg
Ym90aCBgPDxgIGFuZCBgUHJpbnRUbygpYCwgdGhlIGxhdHRlciB3aWxsIGJlIHVzZWQgd2hlbgor
Z29vZ2xldGVzdCBpcyBjb25jZXJuZWQuIFRoaXMgYWxsb3dzIHlvdSB0byBjdXN0b21pemUgaG93
IHRoZSB2YWx1ZSBhcHBlYXJzIGluCitnb29nbGV0ZXN0J3Mgb3V0cHV0IHdpdGhvdXQgYWZmZWN0
aW5nIGNvZGUgdGhhdCByZWxpZXMgb24gdGhlIGJlaGF2aW9yIG9mIGl0cworYDw8YCBvcGVyYXRv
ci4KKworSWYgeW91IHdhbnQgdG8gcHJpbnQgYSB2YWx1ZSBgeGAgdXNpbmcgZ29vZ2xldGVzdCdz
IHZhbHVlIHByaW50ZXIgeW91cnNlbGYsIGp1c3QKK2NhbGwgYDo6dGVzdGluZzo6UHJpbnRUb1N0
cmluZyh4KWAsIHdoaWNoIHJldHVybnMgYW4gYHN0ZDo6c3RyaW5nYDoKKworYGBgYysrCit2ZWN0
b3I8cGFpcjxCYXIsIGludD4gPiBiYXJfaW50cyA9IEdldEJhckludFZlY3RvcigpOworCitFWFBF
Q1RfVFJVRShJc0NvcnJlY3RCYXJJbnRWZWN0b3IoYmFyX2ludHMpKQorICAgIDw8ICJiYXJfaW50
cyA9ICIgPDwgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGJhcl9pbnRzKTsKK2BgYAorCisjIyBE
ZWF0aCBUZXN0cworCitJbiBtYW55IGFwcGxpY2F0aW9ucywgdGhlcmUgYXJlIGFzc2VydGlvbnMg
dGhhdCBjYW4gY2F1c2UgYXBwbGljYXRpb24gZmFpbHVyZSBpZgorYSBjb25kaXRpb24gaXMgbm90
IG1ldC4gVGhlc2Ugc2FuaXR5IGNoZWNrcywgd2hpY2ggZW5zdXJlIHRoYXQgdGhlIHByb2dyYW0g
aXMgaW4KK2Ega25vd24gZ29vZCBzdGF0ZSwgYXJlIHRoZXJlIHRvIGZhaWwgYXQgdGhlIGVhcmxp
ZXN0IHBvc3NpYmxlIHRpbWUgYWZ0ZXIgc29tZQorcHJvZ3JhbSBzdGF0ZSBpcyBjb3JydXB0ZWQu
IElmIHRoZSBhc3NlcnRpb24gY2hlY2tzIHRoZSB3cm9uZyBjb25kaXRpb24sIHRoZW4KK3RoZSBw
cm9ncmFtIG1heSBwcm9jZWVkIGluIGFuIGVycm9uZW91cyBzdGF0ZSwgd2hpY2ggY291bGQgbGVh
ZCB0byBtZW1vcnkKK2NvcnJ1cHRpb24sIHNlY3VyaXR5IGhvbGVzLCBvciB3b3JzZS4gSGVuY2Ug
aXQgaXMgdml0YWxseSBpbXBvcnRhbnQgdG8gdGVzdCB0aGF0CitzdWNoIGFzc2VydGlvbiBzdGF0
ZW1lbnRzIHdvcmsgYXMgZXhwZWN0ZWQuCisKK1NpbmNlIHRoZXNlIHByZWNvbmRpdGlvbiBjaGVj
a3MgY2F1c2UgdGhlIHByb2Nlc3NlcyB0byBkaWUsIHdlIGNhbGwgc3VjaCB0ZXN0cworX2RlYXRo
IHRlc3RzXy4gTW9yZSBnZW5lcmFsbHksIGFueSB0ZXN0IHRoYXQgY2hlY2tzIHRoYXQgYSBwcm9n
cmFtIHRlcm1pbmF0ZXMKKyhleGNlcHQgYnkgdGhyb3dpbmcgYW4gZXhjZXB0aW9uKSBpbiBhbiBl
eHBlY3RlZCBmYXNoaW9uIGlzIGFsc28gYSBkZWF0aCB0ZXN0LgorCisKK05vdGUgdGhhdCBpZiBh
IHBpZWNlIG9mIGNvZGUgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgd2UgZG9uJ3QgY29uc2lkZXIgaXQg
ImRlYXRoIgorZm9yIHRoZSBwdXJwb3NlIG9mIGRlYXRoIHRlc3RzLCBhcyB0aGUgY2FsbGVyIG9m
IHRoZSBjb2RlIGNvdWxkIGNhdGNoIHRoZQorZXhjZXB0aW9uIGFuZCBhdm9pZCB0aGUgY3Jhc2gu
IElmIHlvdSB3YW50IHRvIHZlcmlmeSBleGNlcHRpb25zIHRocm93biBieSB5b3VyCitjb2RlLCBz
ZWUgW0V4Y2VwdGlvbiBBc3NlcnRpb25zXSgjZXhjZXB0aW9uLWFzc2VydGlvbnMpLgorCitJZiB5
b3Ugd2FudCB0byB0ZXN0IGBFWFBFQ1RfKigpL0FTU0VSVF8qKClgIGZhaWx1cmVzIGluIHlvdXIg
dGVzdCBjb2RlLCBzZWUKK0NhdGNoaW5nIEZhaWx1cmVzCisKKyMjIyBIb3cgdG8gV3JpdGUgYSBE
ZWF0aCBUZXN0CisKK2dvb2dsZXRlc3QgaGFzIHRoZSBmb2xsb3dpbmcgbWFjcm9zIHRvIHN1cHBv
cnQgZGVhdGggdGVzdHM6CisKK0ZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgVmVyaWZpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0t
LS0tLS0KK2BBU1NFUlRfREVBVEgoc3RhdGVtZW50LCByZWdleCk7YCAgICAgICAgICAgICAgfCBg
RVhQRUNUX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpO2AgICAgICAgICAgICAgIHwgYHN0YXRlbWVu
dGAgY3Jhc2hlcyB3aXRoIHRoZSBnaXZlbiBlcnJvcgorYEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JU
RUQoc3RhdGVtZW50LCByZWdleCk7YCB8IGBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRl
bWVudCwgcmVnZXgpO2AgfCBpZiBkZWF0aCB0ZXN0cyBhcmUgc3VwcG9ydGVkLCB2ZXJpZmllcyB0
aGF0IGBzdGF0ZW1lbnRgIGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3I7IG90aGVyd2lzZSB2
ZXJpZmllcyBub3RoaW5nCitgQVNTRVJUX0VYSVQoc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4
KTtgICAgIHwgYEVYUEVDVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCk7YCAgICB8
IGBzdGF0ZW1lbnRgIGV4aXRzIHdpdGggdGhlIGdpdmVuIGVycm9yLCBhbmQgaXRzIGV4aXQgY29k
ZSBtYXRjaGVzIGBwcmVkaWNhdGVgCisKK3doZXJlIGBzdGF0ZW1lbnRgIGlzIGEgc3RhdGVtZW50
IHRoYXQgaXMgZXhwZWN0ZWQgdG8gY2F1c2UgdGhlIHByb2Nlc3MgdG8gZGllLAorYHByZWRpY2F0
ZWAgaXMgYSBmdW5jdGlvbiBvciBmdW5jdGlvbiBvYmplY3QgdGhhdCBldmFsdWF0ZXMgYW4gaW50
ZWdlciBleGl0CitzdGF0dXMsIGFuZCBgcmVnZXhgIGlzIGEgKFBlcmwpIHJlZ3VsYXIgZXhwcmVz
c2lvbiB0aGF0IHRoZSBzdGRlcnIgb3V0cHV0IG9mCitgc3RhdGVtZW50YCBpcyBleHBlY3RlZCB0
byBtYXRjaC4gTm90ZSB0aGF0IGBzdGF0ZW1lbnRgIGNhbiBiZSAqYW55IHZhbGlkCitzdGF0ZW1l
bnQqIChpbmNsdWRpbmcgKmNvbXBvdW5kIHN0YXRlbWVudCopIGFuZCBkb2Vzbid0IGhhdmUgdG8g
YmUgYW4KK2V4cHJlc3Npb24uCisKKworQXMgdXN1YWwsIHRoZSBgQVNTRVJUYCB2YXJpYW50cyBh
Ym9ydCB0aGUgY3VycmVudCB0ZXN0IGZ1bmN0aW9uLCB3aGlsZSB0aGUKK2BFWFBFQ1RgIHZhcmlh
bnRzIGRvIG5vdC4KKworPiBOT1RFOiBXZSB1c2UgdGhlIHdvcmQgImNyYXNoIiBoZXJlIHRvIG1l
YW4gdGhhdCB0aGUgcHJvY2VzcyB0ZXJtaW5hdGVzIHdpdGggYQorPiAqbm9uLXplcm8qIGV4aXQg
c3RhdHVzIGNvZGUuIFRoZXJlIGFyZSB0d28gcG9zc2liaWxpdGllczogZWl0aGVyIHRoZSBwcm9j
ZXNzCis+IGhhcyBjYWxsZWQgYGV4aXQoKWAgb3IgYF9leGl0KClgIHdpdGggYSBub24temVybyB2
YWx1ZSwgb3IgaXQgbWF5IGJlIGtpbGxlZCBieQorPiBhIHNpZ25hbC4KKz4KKz4gVGhpcyBtZWFu
cyB0aGF0IGlmIGAqc3RhdGVtZW50KmAgdGVybWluYXRlcyB0aGUgcHJvY2VzcyB3aXRoIGEgMCBl
eGl0IGNvZGUsIGl0Cis+IGlzICpub3QqIGNvbnNpZGVyZWQgYSBjcmFzaCBieSBgRVhQRUNUX0RF
QVRIYC4gVXNlIGBFWFBFQ1RfRVhJVGAgaW5zdGVhZCBpZgorPiB0aGlzIGlzIHRoZSBjYXNlLCBv
ciBpZiB5b3Ugd2FudCB0byByZXN0cmljdCB0aGUgZXhpdCBjb2RlIG1vcmUgcHJlY2lzZWx5Lgor
CitBIHByZWRpY2F0ZSBoZXJlIG11c3QgYWNjZXB0IGFuIGBpbnRgIGFuZCByZXR1cm4gYSBgYm9v
bGAuIFRoZSBkZWF0aCB0ZXN0CitzdWNjZWVkcyBvbmx5IGlmIHRoZSBwcmVkaWNhdGUgcmV0dXJu
cyBgdHJ1ZWAuIGdvb2dsZXRlc3QgZGVmaW5lcyBhIGZldworcHJlZGljYXRlcyB0aGF0IGhhbmRs
ZSB0aGUgbW9zdCBjb21tb24gY2FzZXM6CisKK2BgYGMrKworOjp0ZXN0aW5nOjpFeGl0ZWRXaXRo
Q29kZShleGl0X2NvZGUpCitgYGAKKworVGhpcyBleHByZXNzaW9uIGlzIGB0cnVlYCBpZiB0aGUg
cHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHkgd2l0aCB0aGUgZ2l2ZW4gZXhpdAorY29kZS4KKworYGBg
YysrCis6OnRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKHNpZ25hbF9udW1iZXIpICAvLyBOb3QgYXZh
aWxhYmxlIG9uIFdpbmRvd3MuCitgYGAKKworVGhpcyBleHByZXNzaW9uIGlzIGB0cnVlYCBpZiB0
aGUgcHJvZ3JhbSB3YXMga2lsbGVkIGJ5IHRoZSBnaXZlbiBzaWduYWwuCisKK1RoZSBgKl9ERUFU
SGAgbWFjcm9zIGFyZSBjb252ZW5pZW50IHdyYXBwZXJzIGZvciBgKl9FWElUYCB0aGF0IHVzZSBh
IHByZWRpY2F0ZQordGhhdCB2ZXJpZmllcyB0aGUgcHJvY2VzcycgZXhpdCBjb2RlIGlzIG5vbi16
ZXJvLgorCitOb3RlIHRoYXQgYSBkZWF0aCB0ZXN0IG9ubHkgY2FyZXMgYWJvdXQgdGhyZWUgdGhp
bmdzOgorCisxLiAgZG9lcyBgc3RhdGVtZW50YCBhYm9ydCBvciBleGl0IHRoZSBwcm9jZXNzPwor
Mi4gIChpbiB0aGUgY2FzZSBvZiBgQVNTRVJUX0VYSVRgIGFuZCBgRVhQRUNUX0VYSVRgKSBkb2Vz
IHRoZSBleGl0IHN0YXR1cworICAgIHNhdGlzZnkgYHByZWRpY2F0ZWA/IE9yIChpbiB0aGUgY2Fz
ZSBvZiBgQVNTRVJUX0RFQVRIYCBhbmQgYEVYUEVDVF9ERUFUSGApCisgICAgaXMgdGhlIGV4aXQg
c3RhdHVzIG5vbi16ZXJvPyBBbmQKKzMuICBkb2VzIHRoZSBzdGRlcnIgb3V0cHV0IG1hdGNoIGBy
ZWdleGA/CisKK0luIHBhcnRpY3VsYXIsIGlmIGBzdGF0ZW1lbnRgIGdlbmVyYXRlcyBhbiBgQVNT
RVJUXypgIG9yIGBFWFBFQ1RfKmAgZmFpbHVyZSwgaXQKK3dpbGwgKipub3QqKiBjYXVzZSB0aGUg
ZGVhdGggdGVzdCB0byBmYWlsLCBhcyBnb29nbGV0ZXN0IGFzc2VydGlvbnMgZG9uJ3QgYWJvcnQK
K3RoZSBwcm9jZXNzLgorCitUbyB3cml0ZSBhIGRlYXRoIHRlc3QsIHNpbXBseSB1c2Ugb25lIG9m
IHRoZSBhYm92ZSBtYWNyb3MgaW5zaWRlIHlvdXIgdGVzdAorZnVuY3Rpb24uIEZvciBleGFtcGxl
LAorCitgYGBjKysKK1RFU1QoTXlEZWF0aFRlc3QsIEZvbykgeworICAvLyBUaGlzIGRlYXRoIHRl
c3QgdXNlcyBhIGNvbXBvdW5kIHN0YXRlbWVudC4KKyAgQVNTRVJUX0RFQVRIKHsKKyAgICBpbnQg
biA9IDU7CisgICAgRm9vKCZuKTsKKyAgfSwgIkVycm9yIG9uIGxpbmUgLiogb2YgRm9vKCkiKTsK
K30KKworVEVTVChNeURlYXRoVGVzdCwgTm9ybWFsRXhpdCkgeworICBFWFBFQ1RfRVhJVChOb3Jt
YWxFeGl0KCksIDo6dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCksICJTdWNjZXNzIik7Cit9CisK
K1RFU1QoTXlEZWF0aFRlc3QsIEtpbGxNeXNlbGYpIHsKKyAgRVhQRUNUX0VYSVQoS2lsbE15c2Vs
ZigpLCA6OnRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKFNJR0tJTEwpLAorICAgICAgICAgICAgICAi
U2VuZGluZyBteXNlbGYgdW5ibG9ja2FibGUgc2lnbmFsIik7Cit9CitgYGAKKwordmVyaWZpZXMg
dGhhdDoKKworKiAgIGNhbGxpbmcgYEZvbyg1KWAgY2F1c2VzIHRoZSBwcm9jZXNzIHRvIGRpZSB3
aXRoIHRoZSBnaXZlbiBlcnJvciBtZXNzYWdlLAorKiAgIGNhbGxpbmcgYE5vcm1hbEV4aXQoKWAg
Y2F1c2VzIHRoZSBwcm9jZXNzIHRvIHByaW50IGAiU3VjY2VzcyJgIHRvIHN0ZGVyciBhbmQKKyAg
ICBleGl0IHdpdGggZXhpdCBjb2RlIDAsIGFuZAorKiAgIGNhbGxpbmcgYEtpbGxNeXNlbGYoKWAg
a2lsbHMgdGhlIHByb2Nlc3Mgd2l0aCBzaWduYWwgYFNJR0tJTExgLgorCitUaGUgdGVzdCBmdW5j
dGlvbiBib2R5IG1heSBjb250YWluIG90aGVyIGFzc2VydGlvbnMgYW5kIHN0YXRlbWVudHMgYXMg
d2VsbCwgaWYKK25lY2Vzc2FyeS4KKworIyMjIERlYXRoIFRlc3QgTmFtaW5nCisKK0lNUE9SVEFO
VDogV2Ugc3Ryb25nbHkgcmVjb21tZW5kIHlvdSB0byBmb2xsb3cgdGhlIGNvbnZlbnRpb24gb2Yg
bmFtaW5nIHlvdXIKKyoqdGVzdCBjYXNlKiogKG5vdCB0ZXN0KSBgKkRlYXRoVGVzdGAgd2hlbiBp
dCBjb250YWlucyBhIGRlYXRoIHRlc3QsIGFzCitkZW1vbnN0cmF0ZWQgaW4gdGhlIGFib3ZlIGV4
YW1wbGUuIFRoZSBbRGVhdGggVGVzdHMgQW5kCitUaHJlYWRzXSgjZGVhdGgtdGVzdHMtYW5kLXRo
cmVhZHMpIHNlY3Rpb24gYmVsb3cgZXhwbGFpbnMgd2h5LgorCitJZiBhIHRlc3QgZml4dHVyZSBj
bGFzcyBpcyBzaGFyZWQgYnkgbm9ybWFsIHRlc3RzIGFuZCBkZWF0aCB0ZXN0cywgeW91IGNhbiB1
c2UKK2B1c2luZ2Agb3IgYHR5cGVkZWZgIHRvIGludHJvZHVjZSBhbiBhbGlhcyBmb3IgdGhlIGZp
eHR1cmUgY2xhc3MgYW5kIGF2b2lkCitkdXBsaWNhdGluZyBpdHMgY29kZToKKworYGBgYysrCitj
bGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OworCit1c2luZyBG
b29EZWF0aFRlc3QgPSBGb29UZXN0OworCitURVNUX0YoRm9vVGVzdCwgRG9lc1RoaXMpIHsKKyAg
Ly8gbm9ybWFsIHRlc3QKK30KKworVEVTVF9GKEZvb0RlYXRoVGVzdCwgRG9lc1RoYXQpIHsKKyAg
Ly8gZGVhdGggdGVzdAorfQorYGBgCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dz
IChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIEN5Z3dpbiwgYW5kIE1hYworCisjIyMgUmVn
dWxhciBFeHByZXNzaW9uIFN5bnRheAorCisKK09uIFBPU0lYIHN5c3RlbXMgKGUuZy4gTGludXgs
IEN5Z3dpbiwgYW5kIE1hYyksIGdvb2dsZXRlc3QgdXNlcyB0aGUKK1tQT1NJWCBleHRlbmRlZCBy
ZWd1bGFyIGV4cHJlc3Npb25dKGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAw
OTY5NTM5OS9iYXNlZGVmcy94YmRfY2hhcDA5Lmh0bWwjdGFnXzA5XzA0KQorc3ludGF4LiBUbyBs
ZWFybiBhYm91dCB0aGlzIHN5bnRheCwgeW91IG1heSB3YW50IHRvIHJlYWQgdGhpcworW1dpa2lw
ZWRpYSBlbnRyeV0oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWd1bGFyX2V4cHJlc3Np
b24jUE9TSVhfRXh0ZW5kZWRfUmVndWxhcl9FeHByZXNzaW9ucykuCisKK09uIFdpbmRvd3MsIGdv
b2dsZXRlc3QgdXNlcyBpdHMgb3duIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24gaW1wbGVtZW50
YXRpb24uIEl0CitsYWNrcyBtYW55IGZlYXR1cmVzLiBGb3IgZXhhbXBsZSwgd2UgZG9uJ3Qgc3Vw
cG9ydCB1bmlvbiAoYCJ4fHkiYCksIGdyb3VwaW5nCisoYCIoeHkpImApLCBicmFja2V0cyAoYCJb
eHldImApLCBhbmQgcmVwZXRpdGlvbiBjb3VudCAoYCJ4ezUsN30iYCksIGFtb25nCitvdGhlcnMu
IEJlbG93IGlzIHdoYXQgd2UgZG8gc3VwcG9ydCAoYEFgIGRlbm90ZXMgYSBsaXRlcmFsIGNoYXJh
Y3RlciwgcGVyaW9kCisoYC5gKSwgb3IgYSBzaW5nbGUgYFxcIGAgZXNjYXBlIHNlcXVlbmNlOyBg
eGAgYW5kIGB5YCBkZW5vdGUgcmVndWxhcgorZXhwcmVzc2lvbnMuKToKKworRXhwcmVzc2lvbiB8
IE1lYW5pbmcKKy0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorYGNgICAgICAgICB8IG1hdGNoZXMgYW55IGxp
dGVyYWwgY2hhcmFjdGVyIGBjYAorYFxcZGAgICAgICB8IG1hdGNoZXMgYW55IGRlY2ltYWwgZGln
aXQKK2BcXERgICAgICAgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBhIGRlY2lt
YWwgZGlnaXQKK2BcXGZgICAgICAgfCBtYXRjaGVzIGBcZmAKK2BcXG5gICAgICAgfCBtYXRjaGVz
IGBcbmAKK2BcXHJgICAgICAgfCBtYXRjaGVzIGBccmAKK2BcXHNgICAgICAgfCBtYXRjaGVzIGFu
eSBBU0NJSSB3aGl0ZXNwYWNlLCBpbmNsdWRpbmcgYFxuYAorYFxcU2AgICAgICB8IG1hdGNoZXMg
YW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgd2hpdGVzcGFjZQorYFxcdGAgICAgICB8IG1hdGNo
ZXMgYFx0YAorYFxcdmAgICAgICB8IG1hdGNoZXMgYFx2YAorYFxcd2AgICAgICB8IG1hdGNoZXMg
YW55IGxldHRlciwgYF9gLCBvciBkZWNpbWFsIGRpZ2l0CitgXFxXYCAgICAgIHwgbWF0Y2hlcyBh
bnkgY2hhcmFjdGVyIHRoYXQgYFxcd2AgZG9lc24ndCBtYXRjaAorYFxcY2AgICAgICB8IG1hdGNo
ZXMgYW55IGxpdGVyYWwgY2hhcmFjdGVyIGBjYCwgd2hpY2ggbXVzdCBiZSBhIHB1bmN0dWF0aW9u
CitgLmAgICAgICAgIHwgbWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciBleGNlcHQgYFxuYAor
YEE/YCAgICAgICB8IG1hdGNoZXMgMCBvciAxIG9jY3VycmVuY2VzIG9mIGBBYAorYEEqYCAgICAg
ICB8IG1hdGNoZXMgMCBvciBtYW55IG9jY3VycmVuY2VzIG9mIGBBYAorYEErYCAgICAgICB8IG1h
dGNoZXMgMSBvciBtYW55IG9jY3VycmVuY2VzIG9mIGBBYAorYF5gICAgICAgICB8IG1hdGNoZXMg
dGhlIGJlZ2lubmluZyBvZiBhIHN0cmluZyAobm90IHRoYXQgb2YgZWFjaCBsaW5lKQorYCRgICAg
ICAgICB8IG1hdGNoZXMgdGhlIGVuZCBvZiBhIHN0cmluZyAobm90IHRoYXQgb2YgZWFjaCBsaW5l
KQorYHh5YCAgICAgICB8IG1hdGNoZXMgYHhgIGZvbGxvd2VkIGJ5IGB5YAorCitUbyBoZWxwIHlv
dSBkZXRlcm1pbmUgd2hpY2ggY2FwYWJpbGl0eSBpcyBhdmFpbGFibGUgb24geW91ciBzeXN0ZW0s
IGdvb2dsZXRlc3QKK2RlZmluZXMgbWFjcm9zIHRvIGdvdmVybiB3aGljaCByZWd1bGFyIGV4cHJl
c3Npb24gaXQgaXMgdXNpbmcuIFRoZSBtYWNyb3MgYXJlOgorPCEtLWFic2w6Z29vZ2xlMy1iZWdp
bihnb29nbGUzLW9ubHkpLS0+YEdURVNUX1VTRVNfUENSRT0xYCwgb3IKKzwhLS1hYnNsOmdvb2ds
ZTMtZW5kLS0+IGBHVEVTVF9VU0VTX1NJTVBMRV9SRT0xYCBvciBgR1RFU1RfVVNFU19QT1NJWF9S
RT0xYC4gSWYKK3lvdSB3YW50IHlvdXIgZGVhdGggdGVzdHMgdG8gd29yayBpbiBhbGwgY2FzZXMs
IHlvdSBjYW4gZWl0aGVyIGAjaWZgIG9uIHRoZXNlCittYWNyb3Mgb3IgdXNlIHRoZSBtb3JlIGxp
bWl0ZWQgc3ludGF4IG9ubHkuCisKKyMjIyBIb3cgSXQgV29ya3MKKworVW5kZXIgdGhlIGhvb2Qs
IGBBU1NFUlRfRVhJVCgpYCBzcGF3bnMgYSBuZXcgcHJvY2VzcyBhbmQgZXhlY3V0ZXMgdGhlIGRl
YXRoIHRlc3QKK3N0YXRlbWVudCBpbiB0aGF0IHByb2Nlc3MuIFRoZSBkZXRhaWxzIG9mIGhvdyBw
cmVjaXNlbHkgdGhhdCBoYXBwZW5zIGRlcGVuZCBvbgordGhlIHBsYXRmb3JtIGFuZCB0aGUgdmFy
aWFibGUgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpICh3aGljaCBpcwor
aW5pdGlhbGl6ZWQgZnJvbSB0aGUgY29tbWFuZC1saW5lIGZsYWcgYC0tZ3Rlc3RfZGVhdGhfdGVz
dF9zdHlsZWApLgorCisqICAgT24gUE9TSVggc3lzdGVtcywgYGZvcmsoKWAgKG9yIGBjbG9uZSgp
YCBvbiBMaW51eCkgaXMgdXNlZCB0byBzcGF3biB0aGUKKyAgICBjaGlsZCwgYWZ0ZXIgd2hpY2g6
CisgICAgKiAgIElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlzIGAiZmFzdCJgLCB0aGUgZGVhdGgg
dGVzdCBzdGF0ZW1lbnQgaXMKKyAgICAgICAgaW1tZWRpYXRlbHkgZXhlY3V0ZWQuCisgICAgKiAg
IElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlzIGAidGhyZWFkc2FmZSJgLCB0aGUgY2hpbGQgcHJv
Y2VzcyByZS1leGVjdXRlcworICAgICAgICB0aGUgdW5pdCB0ZXN0IGJpbmFyeSBqdXN0IGFzIGl0
IHdhcyBvcmlnaW5hbGx5IGludm9rZWQsIGJ1dCB3aXRoIHNvbWUKKyAgICAgICAgZXh0cmEgZmxh
Z3MgdG8gY2F1c2UganVzdCB0aGUgc2luZ2xlIGRlYXRoIHRlc3QgdW5kZXIgY29uc2lkZXJhdGlv
biB0bworICAgICAgICBiZSBydW4uCisqICAgT24gV2luZG93cywgdGhlIGNoaWxkIGlzIHNwYXdu
ZWQgdXNpbmcgdGhlIGBDcmVhdGVQcm9jZXNzKClgIEFQSSwgYW5kCisgICAgcmUtZXhlY3V0ZXMg
dGhlIGJpbmFyeSB0byBjYXVzZSBqdXN0IHRoZSBzaW5nbGUgZGVhdGggdGVzdCB1bmRlcgorICAg
IGNvbnNpZGVyYXRpb24gdG8gYmUgcnVuIC0gbXVjaCBsaWtlIHRoZSBgdGhyZWFkc2FmZWAgbW9k
ZSBvbiBQT1NJWC4KKworT3RoZXIgdmFsdWVzIGZvciB0aGUgdmFyaWFibGUgYXJlIGlsbGVnYWwg
YW5kIHdpbGwgY2F1c2UgdGhlIGRlYXRoIHRlc3QgdG8gZmFpbC4KK0N1cnJlbnRseSwgdGhlIGZs
YWcncyBkZWZhdWx0IHZhbHVlIGlzCisiZmFzdCIuIEhvd2V2ZXIsIHdlIHJlc2VydmUKK3RoZSBy
aWdodCB0byBjaGFuZ2UgaXQgaW4gdGhlIGZ1dHVyZS4gVGhlcmVmb3JlLCB5b3VyIHRlc3RzIHNo
b3VsZCBub3QgZGVwZW5kIG9uCit0aGlzLiBJbiBlaXRoZXIgY2FzZSwgdGhlIHBhcmVudCBwcm9j
ZXNzIHdhaXRzIGZvciB0aGUgY2hpbGQgcHJvY2VzcyB0bworY29tcGxldGUsIGFuZCBjaGVja3Mg
dGhhdAorCisxLiAgdGhlIGNoaWxkJ3MgZXhpdCBzdGF0dXMgc2F0aXNmaWVzIHRoZSBwcmVkaWNh
dGUsIGFuZAorMi4gIHRoZSBjaGlsZCdzIHN0ZGVyciBtYXRjaGVzIHRoZSByZWd1bGFyIGV4cHJl
c3Npb24uCisKK0lmIHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudCBydW5zIHRvIGNvbXBsZXRpb24g
d2l0aG91dCBkeWluZywgdGhlIGNoaWxkIHByb2Nlc3MKK3dpbGwgbm9uZXRoZWxlc3MgdGVybWlu
YXRlLCBhbmQgdGhlIGFzc2VydGlvbiBmYWlscy4KKworIyMjIERlYXRoIFRlc3RzIEFuZCBUaHJl
YWRzCisKK1RoZSByZWFzb24gZm9yIHRoZSB0d28gZGVhdGggdGVzdCBzdHlsZXMgaGFzIHRvIGRv
IHdpdGggdGhyZWFkIHNhZmV0eS4gRHVlIHRvCit3ZWxsLWtub3duIHByb2JsZW1zIHdpdGggZm9y
a2luZyBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhyZWFkcywgZGVhdGggdGVzdHMgc2hvdWxkCitiZSBy
dW4gaW4gYSBzaW5nbGUtdGhyZWFkZWQgY29udGV4dC4gU29tZXRpbWVzLCBob3dldmVyLCBpdCBp
c24ndCBmZWFzaWJsZSB0bworYXJyYW5nZSB0aGF0IGtpbmQgb2YgZW52aXJvbm1lbnQuIEZvciBl
eGFtcGxlLCBzdGF0aWNhbGx5LWluaXRpYWxpemVkIG1vZHVsZXMKK21heSBzdGFydCB0aHJlYWRz
IGJlZm9yZSBtYWluIGlzIGV2ZXIgcmVhY2hlZC4gT25jZSB0aHJlYWRzIGhhdmUgYmVlbiBjcmVh
dGVkLAoraXQgbWF5IGJlIGRpZmZpY3VsdCBvciBpbXBvc3NpYmxlIHRvIGNsZWFuIHRoZW0gdXAu
CisKK2dvb2dsZXRlc3QgaGFzIHRocmVlIGZlYXR1cmVzIGludGVuZGVkIHRvIHJhaXNlIGF3YXJl
bmVzcyBvZiB0aHJlYWRpbmcgaXNzdWVzLgorCisxLiAgQSB3YXJuaW5nIGlzIGVtaXR0ZWQgaWYg
bXVsdGlwbGUgdGhyZWFkcyBhcmUgcnVubmluZyB3aGVuIGEgZGVhdGggdGVzdCBpcworICAgIGVu
Y291bnRlcmVkLgorMi4gIFRlc3QgY2FzZXMgd2l0aCBhIG5hbWUgZW5kaW5nIGluICJEZWF0aFRl
c3QiIGFyZSBydW4gYmVmb3JlIGFsbCBvdGhlciB0ZXN0cy4KKzMuICBJdCB1c2VzIGBjbG9uZSgp
YCBpbnN0ZWFkIG9mIGBmb3JrKClgIHRvIHNwYXduIHRoZSBjaGlsZCBwcm9jZXNzIG9uIExpbnV4
CisgICAgKGBjbG9uZSgpYCBpcyBub3QgYXZhaWxhYmxlIG9uIEN5Z3dpbiBhbmQgTWFjKSwgYXMg
YGZvcmsoKWAgaXMgbW9yZSBsaWtlbHkKKyAgICB0byBjYXVzZSB0aGUgY2hpbGQgdG8gaGFuZyB3
aGVuIHRoZSBwYXJlbnQgcHJvY2VzcyBoYXMgbXVsdGlwbGUgdGhyZWFkcy4KKworSXQncyBwZXJm
ZWN0bHkgZmluZSB0byBjcmVhdGUgdGhyZWFkcyBpbnNpZGUgYSBkZWF0aCB0ZXN0IHN0YXRlbWVu
dDsgdGhleSBhcmUKK2V4ZWN1dGVkIGluIGEgc2VwYXJhdGUgcHJvY2VzcyBhbmQgY2Fubm90IGFm
ZmVjdCB0aGUgcGFyZW50LgorCisjIyMgRGVhdGggVGVzdCBTdHlsZXMKKworCitUaGUgInRocmVh
ZHNhZmUiIGRlYXRoIHRlc3Qgc3R5bGUgd2FzIGludHJvZHVjZWQgaW4gb3JkZXIgdG8gaGVscCBt
aXRpZ2F0ZSB0aGUKK3Jpc2tzIG9mIHRlc3RpbmcgaW4gYSBwb3NzaWJseSBtdWx0aXRocmVhZGVk
IGVudmlyb25tZW50LiBJdCB0cmFkZXMgaW5jcmVhc2VkCit0ZXN0IGV4ZWN1dGlvbiB0aW1lIChw
b3RlbnRpYWxseSBkcmFtYXRpY2FsbHkgc28pIGZvciBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5Lgor
CitUaGUgYXV0b21hdGVkIHRlc3RpbmcgZnJhbWV3b3JrIGRvZXMgbm90IHNldCB0aGUgc3R5bGUg
ZmxhZy4gWW91IGNhbiBjaG9vc2UgYQorcGFydGljdWxhciBzdHlsZSBvZiBkZWF0aCB0ZXN0cyBi
eSBzZXR0aW5nIHRoZSBmbGFnIHByb2dyYW1tYXRpY2FsbHk6CisKK2BgYGMrKwordGVzdGluZzo6
RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZT0idGhyZWFkc2FmZSIKK2BgYAorCitZb3UgY2Fu
IGRvIHRoaXMgaW4gYG1haW4oKWAgdG8gc2V0IHRoZSBzdHlsZSBmb3IgYWxsIGRlYXRoIHRlc3Rz
IGluIHRoZSBiaW5hcnksCitvciBpbiBpbmRpdmlkdWFsIHRlc3RzLiBSZWNhbGwgdGhhdCBmbGFn
cyBhcmUgc2F2ZWQgYmVmb3JlIHJ1bm5pbmcgZWFjaCB0ZXN0IGFuZAorcmVzdG9yZWQgYWZ0ZXJ3
YXJkcywgc28geW91IG5lZWQgbm90IGRvIHRoYXQgeW91cnNlbGYuIEZvciBleGFtcGxlOgorCitg
YGBjKysKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworICBJbml0R29vZ2xlKGFy
Z3ZbMF0sICZhcmdjLCAmYXJndiwgdHJ1ZSk7CisgIDo6dGVzdGluZzo6RkxBR1NfZ3Rlc3RfZGVh
dGhfdGVzdF9zdHlsZSA9ICJmYXN0IjsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KKwor
VEVTVChNeURlYXRoVGVzdCwgVGVzdE9uZSkgeworICA6OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2Rl
YXRoX3Rlc3Rfc3R5bGUgPSAidGhyZWFkc2FmZSI7CisgIC8vIFRoaXMgdGVzdCBpcyBydW4gaW4g
dGhlICJ0aHJlYWRzYWZlIiBzdHlsZToKKyAgQVNTRVJUX0RFQVRIKFRoaXNTaG91bGREaWUoKSwg
IiIpOworfQorCitURVNUKE15RGVhdGhUZXN0LCBUZXN0VHdvKSB7CisgIC8vIFRoaXMgdGVzdCBp
cyBydW4gaW4gdGhlICJmYXN0IiBzdHlsZToKKyAgQVNTRVJUX0RFQVRIKFRoaXNTaG91bGREaWUo
KSwgIiIpOworfQorYGBgCisKKworIyMjIENhdmVhdHMKKworVGhlIGBzdGF0ZW1lbnRgIGFyZ3Vt
ZW50IG9mIGBBU1NFUlRfRVhJVCgpYCBjYW4gYmUgYW55IHZhbGlkIEMrKyBzdGF0ZW1lbnQuIElm
CitpdCBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gdmlhIGEgYHJldHVybmAgc3RhdGVtZW50
IG9yIGJ5IHRocm93aW5nIGFuCitleGNlcHRpb24sIHRoZSBkZWF0aCB0ZXN0IGlzIGNvbnNpZGVy
ZWQgdG8gaGF2ZSBmYWlsZWQuIFNvbWUgZ29vZ2xldGVzdCBtYWNyb3MKK21heSByZXR1cm4gZnJv
bSB0aGUgY3VycmVudCBmdW5jdGlvbiAoZS5nLiBgQVNTRVJUX1RSVUUoKWApLCBzbyBiZSBzdXJl
IHRvIGF2b2lkCit0aGVtIGluIGBzdGF0ZW1lbnRgLgorCitTaW5jZSBgc3RhdGVtZW50YCBydW5z
IGluIHRoZSBjaGlsZCBwcm9jZXNzLCBhbnkgaW4tbWVtb3J5IHNpZGUgZWZmZWN0IChlLmcuCitt
b2RpZnlpbmcgYSB2YXJpYWJsZSwgcmVsZWFzaW5nIG1lbW9yeSwgZXRjKSBpdCBjYXVzZXMgd2ls
bCAqbm90KiBiZSBvYnNlcnZhYmxlCitpbiB0aGUgcGFyZW50IHByb2Nlc3MuIEluIHBhcnRpY3Vs
YXIsIGlmIHlvdSByZWxlYXNlIG1lbW9yeSBpbiBhIGRlYXRoIHRlc3QsCit5b3VyIHByb2dyYW0g
d2lsbCBmYWlsIHRoZSBoZWFwIGNoZWNrIGFzIHRoZSBwYXJlbnQgcHJvY2VzcyB3aWxsIG5ldmVy
IHNlZSB0aGUKK21lbW9yeSByZWNsYWltZWQuIFRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgeW91IGNh
bgorCisxLiAgdHJ5IG5vdCB0byBmcmVlIG1lbW9yeSBpbiBhIGRlYXRoIHRlc3Q7CisyLiAgZnJl
ZSB0aGUgbWVtb3J5IGFnYWluIGluIHRoZSBwYXJlbnQgcHJvY2Vzczsgb3IKKzMuICBkbyBub3Qg
dXNlIHRoZSBoZWFwIGNoZWNrZXIgaW4geW91ciBwcm9ncmFtLgorCitEdWUgdG8gYW4gaW1wbGVt
ZW50YXRpb24gZGV0YWlsLCB5b3UgY2Fubm90IHBsYWNlIG11bHRpcGxlIGRlYXRoIHRlc3QgYXNz
ZXJ0aW9ucworb24gdGhlIHNhbWUgbGluZTsgb3RoZXJ3aXNlLCBjb21waWxhdGlvbiB3aWxsIGZh
aWwgd2l0aCBhbiB1bm9idmlvdXMgZXJyb3IKK21lc3NhZ2UuCisKK0Rlc3BpdGUgdGhlIGltcHJv
dmVkIHRocmVhZCBzYWZldHkgYWZmb3JkZWQgYnkgdGhlICJ0aHJlYWRzYWZlIiBzdHlsZSBvZiBk
ZWF0aAordGVzdCwgdGhyZWFkIHByb2JsZW1zIHN1Y2ggYXMgZGVhZGxvY2sgYXJlIHN0aWxsIHBv
c3NpYmxlIGluIHRoZSBwcmVzZW5jZSBvZgoraGFuZGxlcnMgcmVnaXN0ZXJlZCB3aXRoIGBwdGhy
ZWFkX2F0Zm9yaygzKWAuCisKKworIyMgVXNpbmcgQXNzZXJ0aW9ucyBpbiBTdWItcm91dGluZXMK
KworIyMjIEFkZGluZyBUcmFjZXMgdG8gQXNzZXJ0aW9ucworCitJZiBhIHRlc3Qgc3ViLXJvdXRp
bmUgaXMgY2FsbGVkIGZyb20gc2V2ZXJhbCBwbGFjZXMsIHdoZW4gYW4gYXNzZXJ0aW9uIGluc2lk
ZSBpdAorZmFpbHMsIGl0IGNhbiBiZSBoYXJkIHRvIHRlbGwgd2hpY2ggaW52b2NhdGlvbiBvZiB0
aGUgc3ViLXJvdXRpbmUgdGhlIGZhaWx1cmUgaXMKK2Zyb20uIAorWW91IGNhbiBhbGxldmlhdGUg
dGhpcyBwcm9ibGVtIHVzaW5nIGV4dHJhIGxvZ2dpbmcgb3IgY3VzdG9tIGZhaWx1cmUgbWVzc2Fn
ZXMsCitidXQgdGhhdCB1c3VhbGx5IGNsdXR0ZXJzIHVwIHlvdXIgdGVzdHMuIEEgYmV0dGVyIHNv
bHV0aW9uIGlzIHRvIHVzZSB0aGUKK2BTQ09QRURfVFJBQ0VgIG1hY3JvIG9yIHRoZSBgU2NvcGVk
VHJhY2VgIHV0aWxpdHk6CisKK2BgYGMrKworU0NPUEVEX1RSQUNFKG1lc3NhZ2UpOworU2NvcGVk
VHJhY2UgdHJhY2UoImZpbGVfcGF0aCIsIGxpbmVfbnVtYmVyLCBtZXNzYWdlKTsKK2BgYAorCit3
aGVyZSBgbWVzc2FnZWAgY2FuIGJlIGFueXRoaW5nIHN0cmVhbWFibGUgdG8gYHN0ZDo6b3N0cmVh
bWAuIGBTQ09QRURfVFJBQ0VgCittYWNybyB3aWxsIGNhdXNlIHRoZSBjdXJyZW50IGZpbGUgbmFt
ZSwgbGluZSBudW1iZXIsIGFuZCB0aGUgZ2l2ZW4gbWVzc2FnZSB0byBiZQorYWRkZWQgaW4gZXZl
cnkgZmFpbHVyZSBtZXNzYWdlLiBgU2NvcGVkVHJhY2VgIGFjY2VwdHMgZXhwbGljaXQgZmlsZSBu
YW1lIGFuZAorbGluZSBudW1iZXIgaW4gYXJndW1lbnRzLCB3aGljaCBpcyB1c2VmdWwgZm9yIHdy
aXRpbmcgdGVzdCBoZWxwZXJzLiBUaGUgZWZmZWN0Cit3aWxsIGJlIHVuZG9uZSB3aGVuIHRoZSBj
b250cm9sIGxlYXZlcyB0aGUgY3VycmVudCBsZXhpY2FsIHNjb3BlLgorCitGb3IgZXhhbXBsZSwK
KworYGBgYysrCisxMDogdm9pZCBTdWIxKGludCBuKSB7CisxMTogICBFWFBFQ1RfRVEoMSwgQmFy
KG4pKTsKKzEyOiAgIEVYUEVDVF9FUSgyLCBCYXIobiArIDEpKTsKKzEzOiB9CisxNDoKKzE1OiBU
RVNUKEZvb1Rlc3QsIEJhcikgeworMTY6ICAgeworMTc6ICAgICBTQ09QRURfVFJBQ0UoIkEiKTsg
IC8vIFRoaXMgdHJhY2UgcG9pbnQgd2lsbCBiZSBpbmNsdWRlZCBpbgorMTg6ICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGV2ZXJ5IGZhaWx1cmUgaW4gdGhpcyBzY29wZS4KKzE5OiAgICAgU3Vi
MSgxKTsKKzIwOiAgIH0KKzIxOiAgIC8vIE5vdyBpdCB3b24ndC4KKzIyOiAgIFN1YjEoOSk7Cisy
MzogfQorYGBgCisKK2NvdWxkIHJlc3VsdCBpbiBtZXNzYWdlcyBsaWtlIHRoZXNlOgorCitgYGBu
b25lCitwYXRoL3RvL2Zvb190ZXN0LmNjOjExOiBGYWlsdXJlCitWYWx1ZSBvZjogQmFyKG4pCitF
eHBlY3RlZDogMQorICBBY3R1YWw6IDIKKyAgIFRyYWNlOgorcGF0aC90by9mb29fdGVzdC5jYzox
NzogQQorCitwYXRoL3RvL2Zvb190ZXN0LmNjOjEyOiBGYWlsdXJlCitWYWx1ZSBvZjogQmFyKG4g
KyAxKQorRXhwZWN0ZWQ6IDIKKyAgQWN0dWFsOiAzCitgYGAKKworV2l0aG91dCB0aGUgdHJhY2Us
IGl0IHdvdWxkJ3ZlIGJlZW4gZGlmZmljdWx0IHRvIGtub3cgd2hpY2ggaW52b2NhdGlvbiBvZgor
YFN1YjEoKWAgdGhlIHR3byBmYWlsdXJlcyBjb21lIGZyb20gcmVzcGVjdGl2ZWx5LiAoWW91IGNv
dWxkIGFkZAorCithbiBleHRyYSBtZXNzYWdlIHRvIGVhY2ggYXNzZXJ0aW9uIGluIGBTdWIxKClg
IHRvIGluZGljYXRlIHRoZSB2YWx1ZSBvZiBgbmAsIGJ1dAordGhhdCdzIHRlZGlvdXMuKQorCitT
b21lIHRpcHMgb24gdXNpbmcgYFNDT1BFRF9UUkFDRWA6CisKKzEuICBXaXRoIGEgc3VpdGFibGUg
bWVzc2FnZSwgaXQncyBvZnRlbiBlbm91Z2ggdG8gdXNlIGBTQ09QRURfVFJBQ0VgIGF0IHRoZQor
ICAgIGJlZ2lubmluZyBvZiBhIHN1Yi1yb3V0aW5lLCBpbnN0ZWFkIG9mIGF0IGVhY2ggY2FsbCBz
aXRlLgorMi4gIFdoZW4gY2FsbGluZyBzdWItcm91dGluZXMgaW5zaWRlIGEgbG9vcCwgbWFrZSB0
aGUgbG9vcCBpdGVyYXRvciBwYXJ0IG9mIHRoZQorICAgIG1lc3NhZ2UgaW4gYFNDT1BFRF9UUkFD
RWAgc3VjaCB0aGF0IHlvdSBjYW4ga25vdyB3aGljaCBpdGVyYXRpb24gdGhlIGZhaWx1cmUKKyAg
ICBpcyBmcm9tLgorMy4gIFNvbWV0aW1lcyB0aGUgbGluZSBudW1iZXIgb2YgdGhlIHRyYWNlIHBv
aW50IGlzIGVub3VnaCBmb3IgaWRlbnRpZnlpbmcgdGhlCisgICAgcGFydGljdWxhciBpbnZvY2F0
aW9uIG9mIGEgc3ViLXJvdXRpbmUuIEluIHRoaXMgY2FzZSwgeW91IGRvbid0IGhhdmUgdG8KKyAg
ICBjaG9vc2UgYSB1bmlxdWUgbWVzc2FnZSBmb3IgYFNDT1BFRF9UUkFDRWAuIFlvdSBjYW4gc2lt
cGx5IHVzZSBgIiJgLgorNC4gIFlvdSBjYW4gdXNlIGBTQ09QRURfVFJBQ0VgIGluIGFuIGlubmVy
IHNjb3BlIHdoZW4gdGhlcmUgaXMgb25lIGluIHRoZSBvdXRlcgorICAgIHNjb3BlLiBJbiB0aGlz
IGNhc2UsIGFsbCBhY3RpdmUgdHJhY2UgcG9pbnRzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGZh
aWx1cmUKKyAgICBtZXNzYWdlcywgaW4gcmV2ZXJzZSBvcmRlciB0aGV5IGFyZSBlbmNvdW50ZXJl
ZC4KKzUuICBUaGUgdHJhY2UgZHVtcCBpcyBjbGlja2FibGUgaW4gRW1hY3MgLSBoaXQgYHJldHVy
bmAgb24gYSBsaW5lIG51bWJlciBhbmQKKyAgICB5b3UnbGwgYmUgdGFrZW4gdG8gdGhhdCBsaW5l
IGluIHRoZSBzb3VyY2UgZmlsZSEKKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3Ms
IE1hYy4KKworIyMjIFByb3BhZ2F0aW5nIEZhdGFsIEZhaWx1cmVzCisKK0EgY29tbW9uIHBpdGZh
bGwgd2hlbiB1c2luZyBgQVNTRVJUXypgIGFuZCBgRkFJTCpgIGlzIG5vdCB1bmRlcnN0YW5kaW5n
IHRoYXQKK3doZW4gdGhleSBmYWlsIHRoZXkgb25seSBhYm9ydCB0aGUgX2N1cnJlbnQgZnVuY3Rp
b25fLCBub3QgdGhlIGVudGlyZSB0ZXN0LiBGb3IKK2V4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVz
dCB3aWxsIHNlZ2ZhdWx0OgorCitgYGBjKysKK3ZvaWQgU3Vicm91dGluZSgpIHsKKyAgLy8gR2Vu
ZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgor
ICBBU1NFUlRfRVEoMSwgMik7CisKKyAgLy8gVGhlIGZvbGxvd2luZyB3b24ndCBiZSBleGVjdXRl
ZC4KKyAgLi4uCit9CisKK1RFU1QoRm9vVGVzdCwgQmFyKSB7CisgIFN1YnJvdXRpbmUoKTsgIC8v
IFRoZSBpbnRlbmRlZCBiZWhhdmlvciBpcyBmb3IgdGhlIGZhdGFsIGZhaWx1cmUKKyAgICAgICAg
ICAgICAgICAgLy8gaW4gU3Vicm91dGluZSgpIHRvIGFib3J0IHRoZSBlbnRpcmUgdGVzdC4KKwor
ICAvLyBUaGUgYWN0dWFsIGJlaGF2aW9yOiB0aGUgZnVuY3Rpb24gZ29lcyBvbiBhZnRlciBTdWJy
b3V0aW5lKCkgcmV0dXJucy4KKyAgaW50KiBwID0gTlVMTDsKKyAgKnAgPSAzOyAgLy8gU2VnZmF1
bHQhCit9CitgYGAKKworVG8gYWxsZXZpYXRlIHRoaXMsIGdvb2dsZXRlc3QgcHJvdmlkZXMgdGhy
ZWUgZGlmZmVyZW50IHNvbHV0aW9ucy4gWW91IGNvdWxkIHVzZQorZWl0aGVyIGV4Y2VwdGlvbnMs
IHRoZSBgKEFTU0VSVHxFWFBFQ1QpX05PX0ZBVEFMX0ZBSUxVUkVgIGFzc2VydGlvbnMgb3IgdGhl
CitgSGFzRmF0YWxGYWlsdXJlKClgIGZ1bmN0aW9uLiBUaGV5IGFyZSBkZXNjcmliZWQgaW4gdGhl
IGZvbGxvd2luZyB0d28KK3N1YnNlY3Rpb25zLgorCisjIyMjIEFzc2VydGluZyBvbiBTdWJyb3V0
aW5lcyB3aXRoIGFuIGV4Y2VwdGlvbgorCitUaGUgZm9sbG93aW5nIGNvZGUgY2FuIHR1cm4gQVNT
RVJULWZhaWx1cmUgaW50byBhbiBleGNlcHRpb246CisKK2BgYGMrKworY2xhc3MgVGhyb3dMaXN0
ZW5lciA6IHB1YmxpYyB0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKKyAgdm9pZCBP
blRlc3RQYXJ0UmVzdWx0KGNvbnN0IHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0JiByZXN1bHQpIG92
ZXJyaWRlIHsKKyAgICBpZiAocmVzdWx0LnR5cGUoKSA9PSB0ZXN0aW5nOjpUZXN0UGFydFJlc3Vs
dDo6a0ZhdGFsRmFpbHVyZSkgeworICAgICAgdGhyb3cgdGVzdGluZzo6QXNzZXJ0aW9uRXhjZXB0
aW9uKHJlc3VsdCk7CisgICAgfQorICB9Cit9OworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBh
cmd2KSB7CisgIC4uLgorICB0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVu
ZXJzKCkuQXBwZW5kKG5ldyBUaHJvd0xpc3RlbmVyKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMo
KTsKK30KK2BgYAorCitUaGlzIGxpc3RlbmVyIHNob3VsZCBiZSBhZGRlZCBhZnRlciBvdGhlciBs
aXN0ZW5lcnMgaWYgeW91IGhhdmUgYW55LCBvdGhlcndpc2UKK3RoZXkgd29uJ3Qgc2VlIGZhaWxl
ZCBgT25UZXN0UGFydFJlc3VsdGAuCisKKyMjIyMgQXNzZXJ0aW5nIG9uIFN1YnJvdXRpbmVzCisK
K0FzIHNob3duIGFib3ZlLCBpZiB5b3VyIHRlc3QgY2FsbHMgYSBzdWJyb3V0aW5lIHRoYXQgaGFz
IGFuIGBBU1NFUlRfKmAgZmFpbHVyZQoraW4gaXQsIHRoZSB0ZXN0IHdpbGwgY29udGludWUgYWZ0
ZXIgdGhlIHN1YnJvdXRpbmUgcmV0dXJucy4gVGhpcyBtYXkgbm90IGJlIHdoYXQKK3lvdSB3YW50
LgorCitPZnRlbiBwZW9wbGUgd2FudCBmYXRhbCBmYWlsdXJlcyB0byBwcm9wYWdhdGUgbGlrZSBl
eGNlcHRpb25zLiBGb3IgdGhhdAorZ29vZ2xldGVzdCBvZmZlcnMgdGhlIGZvbGxvd2luZyBtYWNy
b3M6CisKK0ZhdGFsIGFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgICAgfCBOb25mYXRhbCBh
c3NlcnRpb24gICAgICAgICAgICAgICAgICAgIHwgVmVyaWZpZXMKKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIHwgLS0tLS0tLS0KK2BBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShzdGF0ZW1lbnQpO2AgfCBg
RVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoc3RhdGVtZW50KTtgIHwgYHN0YXRlbWVudGAgZG9lc24n
dCBnZW5lcmF0ZSBhbnkgbmV3IGZhdGFsIGZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZC4K
KworT25seSBmYWlsdXJlcyBpbiB0aGUgdGhyZWFkIHRoYXQgZXhlY3V0ZXMgdGhlIGFzc2VydGlv
biBhcmUgY2hlY2tlZCB0byBkZXRlcm1pbmUKK3RoZSByZXN1bHQgb2YgdGhpcyB0eXBlIG9mIGFz
c2VydGlvbnMuIElmIGBzdGF0ZW1lbnRgIGNyZWF0ZXMgbmV3IHRocmVhZHMsCitmYWlsdXJlcyBp
biB0aGVzZSB0aHJlYWRzIGFyZSBpZ25vcmVkLgorCitFeGFtcGxlczoKKworYGBgYysrCitBU1NF
UlRfTk9fRkFUQUxfRkFJTFVSRShGb28oKSk7CisKK2ludCBpOworRVhQRUNUX05PX0ZBVEFMX0ZB
SUxVUkUoeworICBpID0gQmFyKCk7Cit9KTsKK2BgYAorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51
eCwgV2luZG93cywgTWFjLiBBc3NlcnRpb25zIGZyb20gbXVsdGlwbGUgdGhyZWFkcyBhcmUKK2N1
cnJlbnRseSBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MuCisKKyMjIyMgQ2hlY2tpbmcgZm9yIEZh
aWx1cmVzIGluIHRoZSBDdXJyZW50IFRlc3QKKworYEhhc0ZhdGFsRmFpbHVyZSgpYCBpbiB0aGUg
YDo6dGVzdGluZzo6VGVzdGAgY2xhc3MgcmV0dXJucyBgdHJ1ZWAgaWYgYW4KK2Fzc2VydGlvbiBp
biB0aGUgY3VycmVudCB0ZXN0IGhhcyBzdWZmZXJlZCBhIGZhdGFsIGZhaWx1cmUuIFRoaXMgYWxs
b3dzCitmdW5jdGlvbnMgdG8gY2F0Y2ggZmF0YWwgZmFpbHVyZXMgaW4gYSBzdWItcm91dGluZSBh
bmQgcmV0dXJuIGVhcmx5LgorCitgYGBjKysKK2NsYXNzIFRlc3QgeworIHB1YmxpYzoKKyAgLi4u
CisgIHN0YXRpYyBib29sIEhhc0ZhdGFsRmFpbHVyZSgpOworfTsKK2BgYAorCitUaGUgdHlwaWNh
bCB1c2FnZSwgd2hpY2ggYmFzaWNhbGx5IHNpbXVsYXRlcyB0aGUgYmVoYXZpb3Igb2YgYSB0aHJv
d24gZXhjZXB0aW9uLAoraXM6CisKK2BgYGMrKworVEVTVChGb29UZXN0LCBCYXIpIHsKKyAgU3Vi
cm91dGluZSgpOworICAvLyBBYm9ydHMgaWYgU3Vicm91dGluZSgpIGhhZCBhIGZhdGFsIGZhaWx1
cmUuCisgIGlmIChIYXNGYXRhbEZhaWx1cmUoKSkgcmV0dXJuOworCisgIC8vIFRoZSBmb2xsb3dp
bmcgd29uJ3QgYmUgZXhlY3V0ZWQuCisgIC4uLgorfQorYGBgCisKK0lmIGBIYXNGYXRhbEZhaWx1
cmUoKWAgaXMgdXNlZCBvdXRzaWRlIG9mIGBURVNUKClgICwgYFRFU1RfRigpYCAsIG9yIGEgdGVz
dAorZml4dHVyZSwgeW91IG11c3QgYWRkIHRoZSBgOjp0ZXN0aW5nOjpUZXN0OjpgIHByZWZpeCwg
YXMgaW46CisKK2BgYGMrKworaWYgKDo6dGVzdGluZzo6VGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkp
IHJldHVybjsKK2BgYAorCitTaW1pbGFybHksIGBIYXNOb25mYXRhbEZhaWx1cmUoKWAgcmV0dXJu
cyBgdHJ1ZWAgaWYgdGhlIGN1cnJlbnQgdGVzdCBoYXMgYXQKK2xlYXN0IG9uZSBub24tZmF0YWwg
ZmFpbHVyZSwgYW5kIGBIYXNGYWlsdXJlKClgIHJldHVybnMgYHRydWVgIGlmIHRoZSBjdXJyZW50
Cit0ZXN0IGhhcyBhdCBsZWFzdCBvbmUgZmFpbHVyZSBvZiBlaXRoZXIga2luZC4KKworKipBdmFp
bGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMgTG9nZ2luZyBBZGRpdGlvbmFs
IEluZm9ybWF0aW9uCisKK0luIHlvdXIgdGVzdCBjb2RlLCB5b3UgY2FuIGNhbGwgYFJlY29yZFBy
b3BlcnR5KCJrZXkiLCB2YWx1ZSlgIHRvIGxvZyBhZGRpdGlvbmFsCitpbmZvcm1hdGlvbiwgd2hl
cmUgYHZhbHVlYCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIGBpbnRgLiBUaGUgKmxhc3Qq
IHZhbHVlCityZWNvcmRlZCBmb3IgYSBrZXkgd2lsbCBiZSBlbWl0dGVkIHRvIHRoZSBbWE1MIG91
dHB1dF0oI2dlbmVyYXRpbmctYW4teG1sLXJlcG9ydCkgaWYgeW91CitzcGVjaWZ5IG9uZS4gRm9y
IGV4YW1wbGUsIHRoZSB0ZXN0CisKK2BgYGMrKworVEVTVF9GKFdpZGdldFVzYWdlVGVzdCwgTWlu
QW5kTWF4V2lkZ2V0cykgeworICBSZWNvcmRQcm9wZXJ0eSgiTWF4aW11bVdpZGdldHMiLCBDb21w
dXRlTWF4VXNhZ2UoKSk7CisgIFJlY29yZFByb3BlcnR5KCJNaW5pbXVtV2lkZ2V0cyIsIENvbXB1
dGVNaW5Vc2FnZSgpKTsKK30KK2BgYAorCit3aWxsIG91dHB1dCBYTUwgbGlrZSB0aGlzOgorCitg
YGB4bWwKKyAgLi4uCisgICAgPHRlc3RjYXNlIG5hbWU9Ik1pbkFuZE1heFdpZGdldHMiIHN0YXR1
cz0icnVuIiB0aW1lPSIwLjAwNiIgY2xhc3NuYW1lPSJXaWRnZXRVc2FnZVRlc3QiIE1heGltdW1X
aWRnZXRzPSIxMiIgTWluaW11bVdpZGdldHM9IjkiIC8+CisgIC4uLgorYGBgCisKKz4gTk9URToK
Kz4KKz4gKiAgIGBSZWNvcmRQcm9wZXJ0eSgpYCBpcyBhIHN0YXRpYyBtZW1iZXIgb2YgdGhlIGBU
ZXN0YCBjbGFzcy4gVGhlcmVmb3JlIGl0Cis+ICAgICBuZWVkcyB0byBiZSBwcmVmaXhlZCB3aXRo
IGA6OnRlc3Rpbmc6OlRlc3Q6OmAgaWYgdXNlZCBvdXRzaWRlIG9mIHRoZQorPiAgICAgYFRFU1Rg
IGJvZHkgYW5kIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuCis+ICogICBgKmtleSpgIG11c3QgYmUg
YSB2YWxpZCBYTUwgYXR0cmlidXRlIG5hbWUsIGFuZCBjYW5ub3QgY29uZmxpY3Qgd2l0aCB0aGUK
Kz4gICAgIG9uZXMgYWxyZWFkeSB1c2VkIGJ5IGdvb2dsZXRlc3QgKGBuYW1lYCwgYHN0YXR1c2As
IGB0aW1lYCwgYGNsYXNzbmFtZWAsCis+ICAgICBgdHlwZV9wYXJhbWAsIGFuZCBgdmFsdWVfcGFy
YW1gKS4KKz4gKiAgIENhbGxpbmcgYFJlY29yZFByb3BlcnR5KClgIG91dHNpZGUgb2YgdGhlIGxp
ZmVzcGFuIG9mIGEgdGVzdCBpcyBhbGxvd2VkLgorPiAgICAgSWYgaXQncyBjYWxsZWQgb3V0c2lk
ZSBvZiBhIHRlc3QgYnV0IGJldHdlZW4gYSB0ZXN0IGNhc2UncworPiAgICAgYFNldFVwVGVzdENh
c2UoKWAgYW5kIGBUZWFyRG93blRlc3RDYXNlKClgIG1ldGhvZHMsIGl0IHdpbGwgYmUgYXR0cmli
dXRlZAorPiAgICAgdG8gdGhlIFhNTCBlbGVtZW50IGZvciB0aGUgdGVzdCBjYXNlLiBJZiBpdCdz
IGNhbGxlZCBvdXRzaWRlIG9mIGFsbCB0ZXN0Cis+ICAgICBjYXNlcyAoZS5nLiBpbiBhIHRlc3Qg
ZW52aXJvbm1lbnQpLCBpdCB3aWxsIGJlIGF0dHJpYnV0ZWQgdG8gdGhlIHRvcC1sZXZlbAorPiAg
ICAgWE1MIGVsZW1lbnQuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMu
CisKKyMjIFNoYXJpbmcgUmVzb3VyY2VzIEJldHdlZW4gVGVzdHMgaW4gdGhlIFNhbWUgVGVzdCBD
YXNlCisKK2dvb2dsZXRlc3QgY3JlYXRlcyBhIG5ldyB0ZXN0IGZpeHR1cmUgb2JqZWN0IGZvciBl
YWNoIHRlc3QgaW4gb3JkZXIgdG8gbWFrZQordGVzdHMgaW5kZXBlbmRlbnQgYW5kIGVhc2llciB0
byBkZWJ1Zy4gSG93ZXZlciwgc29tZXRpbWVzIHRlc3RzIHVzZSByZXNvdXJjZXMKK3RoYXQgYXJl
IGV4cGVuc2l2ZSB0byBzZXQgdXAsIG1ha2luZyB0aGUgb25lLWNvcHktcGVyLXRlc3QgbW9kZWwg
cHJvaGliaXRpdmVseQorZXhwZW5zaXZlLgorCitJZiB0aGUgdGVzdHMgZG9uJ3QgY2hhbmdlIHRo
ZSByZXNvdXJjZSwgdGhlcmUncyBubyBoYXJtIGluIHRoZWlyIHNoYXJpbmcgYQorc2luZ2xlIHJl
c291cmNlIGNvcHkuIFNvLCBpbiBhZGRpdGlvbiB0byBwZXItdGVzdCBzZXQtdXAvdGVhci1kb3du
LCBnb29nbGV0ZXN0CithbHNvIHN1cHBvcnRzIHBlci10ZXN0LWNhc2Ugc2V0LXVwL3RlYXItZG93
bi4gVG8gdXNlIGl0OgorCisxLiAgSW4geW91ciB0ZXN0IGZpeHR1cmUgY2xhc3MgKHNheSBgRm9v
VGVzdGAgKSwgZGVjbGFyZSBhcyBgc3RhdGljYCBzb21lIG1lbWJlcgorICAgIHZhcmlhYmxlcyB0
byBob2xkIHRoZSBzaGFyZWQgcmVzb3VyY2VzLgorMS4gIE91dHNpZGUgeW91ciB0ZXN0IGZpeHR1
cmUgY2xhc3MgKHR5cGljYWxseSBqdXN0IGJlbG93IGl0KSwgZGVmaW5lIHRob3NlCisgICAgbWVt
YmVyIHZhcmlhYmxlcywgb3B0aW9uYWxseSBnaXZpbmcgdGhlbSBpbml0aWFsIHZhbHVlcy4KKzEu
ICBJbiB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUgY2xhc3MsIGRlZmluZSBhIGBzdGF0aWMgdm9pZCBT
ZXRVcFRlc3RDYXNlKClgCisgICAgZnVuY3Rpb24gKHJlbWVtYmVyIG5vdCB0byBzcGVsbCBpdCBh
cyAqKmBTZXR1cFRlc3RDYXNlYCoqIHdpdGggYSBzbWFsbCBgdWAhKQorICAgIHRvIHNldCB1cCB0
aGUgc2hhcmVkIHJlc291cmNlcyBhbmQgYSBgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgp
YAorICAgIGZ1bmN0aW9uIHRvIHRlYXIgdGhlbSBkb3duLgorCitUaGF0J3MgaXQhIGdvb2dsZXRl
c3QgYXV0b21hdGljYWxseSBjYWxscyBgU2V0VXBUZXN0Q2FzZSgpYCBiZWZvcmUgcnVubmluZyB0
aGUKKypmaXJzdCB0ZXN0KiBpbiB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZSAoaS5lLiBiZWZvcmUg
Y3JlYXRpbmcgdGhlIGZpcnN0CitgRm9vVGVzdGAgb2JqZWN0KSwgYW5kIGNhbGxzIGBUZWFyRG93
blRlc3RDYXNlKClgIGFmdGVyIHJ1bm5pbmcgdGhlICpsYXN0IHRlc3QqCitpbiBpdCAoaS5lLiBh
ZnRlciBkZWxldGluZyB0aGUgbGFzdCBgRm9vVGVzdGAgb2JqZWN0KS4gSW4gYmV0d2VlbiwgdGhl
IHRlc3RzIGNhbgordXNlIHRoZSBzaGFyZWQgcmVzb3VyY2VzLgorCitSZW1lbWJlciB0aGF0IHRo
ZSB0ZXN0IG9yZGVyIGlzIHVuZGVmaW5lZCwgc28geW91ciBjb2RlIGNhbid0IGRlcGVuZCBvbiBh
IHRlc3QKK3ByZWNlZGluZyBvciBmb2xsb3dpbmcgYW5vdGhlci4gQWxzbywgdGhlIHRlc3RzIG11
c3QgZWl0aGVyIG5vdCBtb2RpZnkgdGhlIHN0YXRlCitvZiBhbnkgc2hhcmVkIHJlc291cmNlLCBv
ciwgaWYgdGhleSBkbyBtb2RpZnkgdGhlIHN0YXRlLCB0aGV5IG11c3QgcmVzdG9yZSB0aGUKK3N0
YXRlIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZSBiZWZvcmUgcGFzc2luZyBjb250cm9sIHRvIHRoZSBu
ZXh0IHRlc3QuCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIHBlci10ZXN0LWNhc2Ugc2V0LXVwIGFu
ZCB0ZWFyLWRvd246CisKK2BgYGMrKworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLy8gUGVyLXRlc3QtY2FzZSBzZXQtdXAuCisgIC8vIENh
bGxlZCBiZWZvcmUgdGhlIGZpcnN0IHRlc3QgaW4gdGhpcyB0ZXN0IGNhc2UuCisgIC8vIENhbiBi
ZSBvbWl0dGVkIGlmIG5vdCBuZWVkZWQuCisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7
CisgICAgc2hhcmVkX3Jlc291cmNlXyA9IG5ldyAuLi47CisgIH0KKworICAvLyBQZXItdGVzdC1j
YXNlIHRlYXItZG93bi4KKyAgLy8gQ2FsbGVkIGFmdGVyIHRoZSBsYXN0IHRlc3QgaW4gdGhpcyB0
ZXN0IGNhc2UuCisgIC8vIENhbiBiZSBvbWl0dGVkIGlmIG5vdCBuZWVkZWQuCisgIHN0YXRpYyB2
b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7CisgICAgZGVsZXRlIHNoYXJlZF9yZXNvdXJjZV87Cisg
ICAgc2hhcmVkX3Jlc291cmNlXyA9IE5VTEw7CisgIH0KKworICAvLyBZb3UgY2FuIGRlZmluZSBw
ZXItdGVzdCBzZXQtdXAgbG9naWMgYXMgdXN1YWwuCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsg
Li4uIH0KKworICAvLyBZb3UgY2FuIGRlZmluZSBwZXItdGVzdCB0ZWFyLWRvd24gbG9naWMgYXMg
dXN1YWwuCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsgLi4uIH0KKworICAvLyBTb21lIGV4
cGVuc2l2ZSByZXNvdXJjZSBzaGFyZWQgYnkgYWxsIHRlc3RzLgorICBzdGF0aWMgVCogc2hhcmVk
X3Jlc291cmNlXzsKK307CisKK1QqIEZvb1Rlc3Q6OnNoYXJlZF9yZXNvdXJjZV8gPSBOVUxMOwor
CitURVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKKyAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVk
X3Jlc291cmNlXyBoZXJlIC4uLgorfQorCitURVNUX0YoRm9vVGVzdCwgVGVzdDIpIHsKKyAgLi4u
IHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlXyBoZXJlIC4uLgorfQorYGBgCisKK05P
VEU6IFRob3VnaCB0aGUgYWJvdmUgY29kZSBkZWNsYXJlcyBgU2V0VXBUZXN0Q2FzZSgpYCBwcm90
ZWN0ZWQsIGl0IG1heQorc29tZXRpbWVzIGJlIG5lY2Vzc2FyeSB0byBkZWNsYXJlIGl0IHB1Ymxp
Yywgc3VjaCBhcyB3aGVuIHVzaW5nIGl0IHdpdGgKK2BURVNUX1BgLgorCisqKkF2YWlsYWJpbGl0
eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyBHbG9iYWwgU2V0LVVwIGFuZCBUZWFyLURv
d24KKworSnVzdCBhcyB5b3UgY2FuIGRvIHNldC11cCBhbmQgdGVhci1kb3duIGF0IHRoZSB0ZXN0
IGxldmVsIGFuZCB0aGUgdGVzdCBjYXNlCitsZXZlbCwgeW91IGNhbiBhbHNvIGRvIGl0IGF0IHRo
ZSB0ZXN0IHByb2dyYW0gbGV2ZWwuIEhlcmUncyBob3cuCisKK0ZpcnN0LCB5b3Ugc3ViY2xhc3Mg
dGhlIGA6OnRlc3Rpbmc6OkVudmlyb25tZW50YCBjbGFzcyB0byBkZWZpbmUgYSB0ZXN0CitlbnZp
cm9ubWVudCwgd2hpY2gga25vd3MgaG93IHRvIHNldC11cCBhbmQgdGVhci1kb3duOgorCitgYGBj
KysKK2NsYXNzIEVudmlyb25tZW50IHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgfkVudmlyb25tZW50
KCkge30KKworICAvLyBPdmVycmlkZSB0aGlzIHRvIGRlZmluZSBob3cgdG8gc2V0IHVwIHRoZSBl
bnZpcm9ubWVudC4KKyAgdmlydHVhbCB2b2lkIFNldFVwKCkge30KKworICAvLyBPdmVycmlkZSB0
aGlzIHRvIGRlZmluZSBob3cgdG8gdGVhciBkb3duIHRoZSBlbnZpcm9ubWVudC4KKyAgdmlydHVh
bCB2b2lkIFRlYXJEb3duKCkge30KK307CitgYGAKKworVGhlbiwgeW91IHJlZ2lzdGVyIGFuIGlu
c3RhbmNlIG9mIHlvdXIgZW52aXJvbm1lbnQgY2xhc3Mgd2l0aCBnb29nbGV0ZXN0IGJ5CitjYWxs
aW5nIHRoZSBgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgZnVuY3Rpb246
CisKK2BgYGMrKworRW52aXJvbm1lbnQqIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChFbnZpcm9u
bWVudCogZW52KTsKK2BgYAorCitOb3csIHdoZW4gYFJVTl9BTExfVEVTVFMoKWAgaXMgY2FsbGVk
LCBpdCBmaXJzdCBjYWxscyB0aGUgYFNldFVwKClgIG1ldGhvZCBvZgordGhlIGVudmlyb25tZW50
IG9iamVjdCwgdGhlbiBydW5zIHRoZSB0ZXN0cyBpZiB0aGVyZSB3YXMgbm8gZmF0YWwgZmFpbHVy
ZXMsIGFuZAorZmluYWxseSBjYWxscyBgVGVhckRvd24oKWAgb2YgdGhlIGVudmlyb25tZW50IG9i
amVjdC4KKworSXQncyBPSyB0byByZWdpc3RlciBtdWx0aXBsZSBlbnZpcm9ubWVudCBvYmplY3Rz
LiBJbiB0aGlzIGNhc2UsIHRoZWlyIGBTZXRVcCgpYAord2lsbCBiZSBjYWxsZWQgaW4gdGhlIG9y
ZGVyIHRoZXkgYXJlIHJlZ2lzdGVyZWQsIGFuZCB0aGVpciBgVGVhckRvd24oKWAgd2lsbCBiZQor
Y2FsbGVkIGluIHRoZSByZXZlcnNlIG9yZGVyLgorCitOb3RlIHRoYXQgZ29vZ2xldGVzdCB0YWtl
cyBvd25lcnNoaXAgb2YgdGhlIHJlZ2lzdGVyZWQgZW52aXJvbm1lbnQgb2JqZWN0cy4KK1RoZXJl
Zm9yZSAqKmRvIG5vdCBkZWxldGUgdGhlbSoqIGJ5IHlvdXJzZWxmLgorCitZb3Ugc2hvdWxkIGNh
bGwgYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCBiZWZvcmUgYFJVTl9BTExfVEVTVFMoKWAg
aXMgY2FsbGVkLAorcHJvYmFibHkgaW4gYG1haW4oKWAuIElmIHlvdSB1c2UgYGd0ZXN0X21haW5g
LCB5b3UgbmVlZCB0byBjYWxsIHRoaXMgYmVmb3JlCitgbWFpbigpYCBzdGFydHMgZm9yIGl0IHRv
IHRha2UgZWZmZWN0LiBPbmUgd2F5IHRvIGRvIHRoaXMgaXMgdG8gZGVmaW5lIGEgZ2xvYmFsCit2
YXJpYWJsZSBsaWtlIHRoaXM6CisKK2BgYGMrKworOjp0ZXN0aW5nOjpFbnZpcm9ubWVudCogY29u
c3QgZm9vX2VudiA9CisgICAgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3
IEZvb0Vudmlyb25tZW50KTsKK2BgYAorCitIb3dldmVyLCB3ZSBzdHJvbmdseSByZWNvbW1lbmQg
eW91IHRvIHdyaXRlIHlvdXIgb3duIGBtYWluKClgIGFuZCBjYWxsCitgQWRkR2xvYmFsVGVzdEVu
dmlyb25tZW50KClgIHRoZXJlLCBhcyByZWx5aW5nIG9uIGluaXRpYWxpemF0aW9uIG9mIGdsb2Jh
bAordmFyaWFibGVzIG1ha2VzIHRoZSBjb2RlIGhhcmRlciB0byByZWFkIGFuZCBtYXkgY2F1c2Ug
cHJvYmxlbXMgd2hlbiB5b3UgcmVnaXN0ZXIKK211bHRpcGxlIGVudmlyb25tZW50cyBmcm9tIGRp
ZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cyBhbmQgdGhlIGVudmlyb25tZW50cyBoYXZlCitkZXBl
bmRlbmNpZXMgYW1vbmcgdGhlbSAocmVtZW1iZXIgdGhhdCB0aGUgY29tcGlsZXIgZG9lc24ndCBn
dWFyYW50ZWUgdGhlIG9yZGVyCitpbiB3aGljaCBnbG9iYWwgdmFyaWFibGVzIGZyb20gZGlmZmVy
ZW50IHRyYW5zbGF0aW9uIHVuaXRzIGFyZSBpbml0aWFsaXplZCkuCisKKyMjIFZhbHVlLVBhcmFt
ZXRlcml6ZWQgVGVzdHMKKworKlZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMqIGFsbG93IHlvdSB0
byB0ZXN0IHlvdXIgY29kZSB3aXRoIGRpZmZlcmVudAorcGFyYW1ldGVycyB3aXRob3V0IHdyaXRp
bmcgbXVsdGlwbGUgY29waWVzIG9mIHRoZSBzYW1lIHRlc3QuIFRoaXMgaXMgdXNlZnVsIGluIGEK
K251bWJlciBvZiBzaXR1YXRpb25zLCBmb3IgZXhhbXBsZToKKworKiAgIFlvdSBoYXZlIGEgcGll
Y2Ugb2YgY29kZSB3aG9zZSBiZWhhdmlvciBpcyBhZmZlY3RlZCBieSBvbmUgb3IgbW9yZQorICAg
IGNvbW1hbmQtbGluZSBmbGFncy4gWW91IHdhbnQgdG8gbWFrZSBzdXJlIHlvdXIgY29kZSBwZXJm
b3JtcyBjb3JyZWN0bHkgZm9yCisgICAgdmFyaW91cyB2YWx1ZXMgb2YgdGhvc2UgZmxhZ3MuCisq
ICAgWW91IHdhbnQgdG8gdGVzdCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIG9mIGFuIE9PIGlu
dGVyZmFjZS4KKyogICBZb3Ugd2FudCB0byB0ZXN0IHlvdXIgY29kZSBvdmVyIHZhcmlvdXMgaW5w
dXRzIChhLmsuYS4gZGF0YS1kcml2ZW4gdGVzdGluZykuCisgICAgVGhpcyBmZWF0dXJlIGlzIGVh
c3kgdG8gYWJ1c2UsIHNvIHBsZWFzZSBleGVyY2lzZSB5b3VyIGdvb2Qgc2Vuc2Ugd2hlbiBkb2lu
ZworICAgIGl0IQorCisjIyMgSG93IHRvIFdyaXRlIFZhbHVlLVBhcmFtZXRlcml6ZWQgVGVzdHMK
KworVG8gd3JpdGUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cywgZmlyc3QgeW91IHNob3VsZCBk
ZWZpbmUgYSBmaXh0dXJlIGNsYXNzLiBJdAorbXVzdCBiZSBkZXJpdmVkIGZyb20gYm90aCBgOjp0
ZXN0aW5nOjpUZXN0YCBhbmQKK2A6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxUPmAgKHRo
ZSBsYXR0ZXIgaXMgYSBwdXJlIGludGVyZmFjZSksIHdoZXJlIGBUYAoraXMgdGhlIHR5cGUgb2Yg
eW91ciBwYXJhbWV0ZXIgdmFsdWVzLiBGb3IgY29udmVuaWVuY2UsIHlvdSBjYW4ganVzdCBkZXJp
dmUgdGhlCitmaXh0dXJlIGNsYXNzIGZyb20gYDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxUPmAs
IHdoaWNoIGl0c2VsZiBpcyBkZXJpdmVkIGZyb20KK2JvdGggYDo6dGVzdGluZzo6VGVzdGAgYW5k
IGA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxUPmAuIGBUYCBjYW4gYmUgYW55Citjb3B5
YWJsZSB0eXBlLiBJZiBpdCdzIGEgcmF3IHBvaW50ZXIsIHlvdSBhcmUgcmVzcG9uc2libGUgZm9y
IG1hbmFnaW5nIHRoZQorbGlmZXNwYW4gb2YgdGhlIHBvaW50ZWQgdmFsdWVzLgorCitOT1RFOiBJ
ZiB5b3VyIHRlc3QgZml4dHVyZSBkZWZpbmVzIGBTZXRVcFRlc3RDYXNlKClgIG9yIGBUZWFyRG93
blRlc3RDYXNlKClgCit0aGV5IG11c3QgYmUgZGVjbGFyZWQgKipwdWJsaWMqKiByYXRoZXIgdGhh
biAqKnByb3RlY3RlZCoqIGluIG9yZGVyIHRvIHVzZQorYFRFU1RfUGAuCisKK2BgYGMrKworY2xh
c3MgRm9vVGVzdCA6CisgICAgcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBj
aGFyKj4geworICAvLyBZb3UgY2FuIGltcGxlbWVudCBhbGwgdGhlIHVzdWFsIGZpeHR1cmUgY2xh
c3MgbWVtYmVycyBoZXJlLgorICAvLyBUbyBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyLCBjYWxs
IEdldFBhcmFtKCkgZnJvbSBjbGFzcworICAvLyBUZXN0V2l0aFBhcmFtPFQ+LgorfTsKKworLy8g
T3IsIHdoZW4geW91IHdhbnQgdG8gYWRkIHBhcmFtZXRlcnMgdG8gYSBwcmUtZXhpc3RpbmcgZml4
dHVyZSBjbGFzczoKK2NsYXNzIEJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Cisg
IC4uLgorfTsKK2NsYXNzIEJhclRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsCisgICAgICAgICAgICAg
ICAgcHVibGljIDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPGNvbnN0IGNoYXIqPiB7Cisg
IC4uLgorfTsKK2BgYAorCitUaGVuLCB1c2UgdGhlIGBURVNUX1BgIG1hY3JvIHRvIGRlZmluZSBh
cyBtYW55IHRlc3QgcGF0dGVybnMgdXNpbmcgdGhpcyBmaXh0dXJlCithcyB5b3Ugd2FudC4gVGhl
IGBfUGAgc3VmZml4IGlzIGZvciAicGFyYW1ldGVyaXplZCIgb3IgInBhdHRlcm4iLCB3aGljaGV2
ZXIgeW91CitwcmVmZXIgdG8gdGhpbmsuCisKK2BgYGMrKworVEVTVF9QKEZvb1Rlc3QsIERvZXNC
bGFoKSB7CisgIC8vIEluc2lkZSBhIHRlc3QsIGFjY2VzcyB0aGUgdGVzdCBwYXJhbWV0ZXIgd2l0
aCB0aGUgR2V0UGFyYW0oKSBtZXRob2QKKyAgLy8gb2YgdGhlIFRlc3RXaXRoUGFyYW08VD4gY2xh
c3M6CisgIEVYUEVDVF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsKKyAgLi4uCit9CisKK1RF
U1RfUChGb29UZXN0LCBIYXNCbGFoQmxhaCkgeworICAuLi4KK30KK2BgYAorCitGaW5hbGx5LCB5
b3UgY2FuIHVzZSBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIHRvIGluc3RhbnRpYXRlIHRoZSB0
ZXN0IGNhc2Ugd2l0aAorYW55IHNldCBvZiBwYXJhbWV0ZXJzIHlvdSB3YW50LiBnb29nbGV0ZXN0
IGRlZmluZXMgYSBudW1iZXIgb2YgZnVuY3Rpb25zIGZvcgorZ2VuZXJhdGluZyB0ZXN0IHBhcmFt
ZXRlcnMuIFRoZXkgcmV0dXJuIHdoYXQgd2UgY2FsbCAoc3VycHJpc2UhKSAqcGFyYW1ldGVyCitn
ZW5lcmF0b3JzKi4gSGVyZSBpcyBhIHN1bW1hcnkgb2YgdGhlbSwgd2hpY2ggYXJlIGFsbCBpbiB0
aGUgYHRlc3RpbmdgCituYW1lc3BhY2U6CisKK3wgUGFyYW1ldGVyIEdlbmVyYXRvciAgICAgICAg
ICB8IEJlaGF2aW9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSB8Cit8IGBSYW5nZShiZWdpbiwgZW5kIFssIHN0ZXBdKWAgfCBZaWVsZHMg
dmFsdWVzIGB7YmVnaW4sIGJlZ2luK3N0ZXAsIGJlZ2luK3N0ZXArc3RlcCwgLi4ufWAuIFRoZSB2
YWx1ZXMgZG8gbm90IGluY2x1ZGUgYGVuZGAuIGBzdGVwYCBkZWZhdWx0cyB0byAxLiAgICAgIHwK
K3wgYFZhbHVlcyh2MSwgdjIsIC4uLiwgdk4pYCAgICB8IFlpZWxkcyB2YWx1ZXMgYHt2MSwgdjIs
IC4uLiwgdk59YC4gICAgICAgICAgfAorfCBgVmFsdWVzSW4oY29udGFpbmVyKWAgYW5kIGBWYWx1
ZXNJbihiZWdpbixlbmQpYCAgIHwgWWllbGRzIHZhbHVlcyBmcm9tIGEgQy1zdHlsZSBhcnJheSwg
YW4gU1RMLXN0eWxlIGNvbnRhaW5lciwgb3IgYW4gaXRlcmF0b3IgcmFuZ2UgIGBbYmVnaW4sIGVu
ZClgLiB8Cit8IGBCb29sKClgICAgICAgICAgICAgICAgICAgICAgfCBZaWVsZHMgc2VxdWVuY2Ug
YHtmYWxzZSwgdHJ1ZX1gLiAgICAgICAgICAgIHwKK3wgYENvbWJpbmUoZzEsIGcyLCAuLi4sIGdO
KWAgICB8IFlpZWxkcyBhbGwgY29tYmluYXRpb25zIChDYXJ0ZXNpYW4gcHJvZHVjdCkgYXMgc3Rk
XDpcOnR1cGxlcyBvZiB0aGUgdmFsdWVzIGdlbmVyYXRlZCBieSB0aGUgYE5gIGdlbmVyYXRvcnMu
ICAgICAgICAgICAgfAorCitGb3IgbW9yZSBkZXRhaWxzLCBzZWUgdGhlIGNvbW1lbnRzIGF0IHRo
ZSBkZWZpbml0aW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMuCisKK1RoZSBmb2xsb3dpbmcgc3RhdGVt
ZW50IHdpbGwgaW5zdGFudGlhdGUgdGVzdHMgZnJvbSB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZSBl
YWNoCit3aXRoIHBhcmFtZXRlciB2YWx1ZXMgYCJtZWVueSJgLCBgIm1pbnkiYCwgYW5kIGAibW9l
ImAuCisKK2BgYGMrKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSW5zdGFudGlhdGlvbk5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICBGb29UZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgOjp0ZXN0aW5nOjpWYWx1ZXMoIm1lZW55IiwgIm1pbnkiLCAibW9lIikpOworYGBgCisKK05P
VEU6IFRoZSBjb2RlIGFib3ZlIG11c3QgYmUgcGxhY2VkIGF0IGdsb2JhbCBvciBuYW1lc3BhY2Ug
c2NvcGUsIG5vdCBhdAorZnVuY3Rpb24gc2NvcGUuCisKK05PVEU6IERvbid0IGZvcmdldCB0aGlz
IHN0ZXAhIElmIHlvdSBkbyB5b3VyIHRlc3Qgd2lsbCBzaWxlbnRseSBwYXNzLCBidXQgbm9uZQor
b2YgaXRzIGNhc2VzIHdpbGwgZXZlciBydW4hCisKK1RvIGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBp
bnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4gKHllcywgeW91IGNhbiBpbnN0YW50aWF0ZSBpdAorbW9y
ZSB0aGFuIG9uY2UpLCB0aGUgZmlyc3QgYXJndW1lbnQgdG8gYElOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QYCBpcyBhIHByZWZpeAordGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBhY3R1YWwgdGVzdCBj
YXNlIG5hbWUuIFJlbWVtYmVyIHRvIHBpY2sgdW5pcXVlCitwcmVmaXhlcyBmb3IgZGlmZmVyZW50
IGluc3RhbnRpYXRpb25zLiBUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZQor
d2lsbCBoYXZlIHRoZXNlIG5hbWVzOgorCisqICAgYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3Qu
RG9lc0JsYWgvMGAgZm9yIGAibWVlbnkiYAorKiAgIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0
LkRvZXNCbGFoLzFgIGZvciBgIm1pbnkiYAorKiAgIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0
LkRvZXNCbGFoLzJgIGZvciBgIm1vZSJgCisqICAgYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3Qu
SGFzQmxhaEJsYWgvMGAgZm9yIGAibWVlbnkiYAorKiAgIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29U
ZXN0Lkhhc0JsYWhCbGFoLzFgIGZvciBgIm1pbnkiYAorKiAgIGBJbnN0YW50aWF0aW9uTmFtZS9G
b29UZXN0Lkhhc0JsYWhCbGFoLzJgIGZvciBgIm1vZSJgCisKK1lvdSBjYW4gdXNlIHRoZXNlIG5h
bWVzIGluIFtgLS1ndGVzdF9maWx0ZXJgXSgjcnVubmluZy1hLXN1YnNldC1vZi10aGUtdGVzdHMp
LgorCitUaGlzIHN0YXRlbWVudCB3aWxsIGluc3RhbnRpYXRlIGFsbCB0ZXN0cyBmcm9tIGBGb29U
ZXN0YCBhZ2FpbiwgZWFjaCB3aXRoCitwYXJhbWV0ZXIgdmFsdWVzIGAiY2F0ImAgYW5kIGAiZG9n
ImA6CisKK2BgYGMrKworY29uc3QgY2hhciogcGV0c1tdID0geyJjYXQiLCAiZG9nIn07CitJTlNU
QU5USUFURV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFudGlhdGlvbk5hbWUsIEZvb1Rlc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlc0luKHBldHMpKTsKK2BgYAor
CitUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhhdmUgdGhlc2Ug
bmFtZXM6CisKKyogICBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgv
MGAgZm9yIGAiY2F0ImAKKyogICBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9l
c0JsYWgvMWAgZm9yIGAiZG9nImAKKyogICBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rl
c3QuSGFzQmxhaEJsYWgvMGAgZm9yIGAiY2F0ImAKKyogICBgQW5vdGhlckluc3RhbnRpYXRpb25O
YW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMWAgZm9yIGAiZG9nImAKKworUGxlYXNlIG5vdGUgdGhh
dCBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIHdpbGwgaW5zdGFudGlhdGUgKmFsbCogdGVzdHMg
aW4gdGhlCitnaXZlbiB0ZXN0IGNhc2UsIHdoZXRoZXIgdGhlaXIgZGVmaW5pdGlvbnMgY29tZSBi
ZWZvcmUgb3IgKmFmdGVyKiB0aGUKK2BJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgc3RhdGVtZW50
LgorCitZb3UgY2FuIHNlZSBzYW1wbGU3X3VuaXR0ZXN0LmNjIGFuZCBzYW1wbGU4X3VuaXR0ZXN0
LmNjIGZvciBtb3JlIGV4YW1wbGVzLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93
cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBNYWMKKworIyMjIENyZWF0aW5nIFZhbHVl
LVBhcmFtZXRlcml6ZWQgQWJzdHJhY3QgVGVzdHMKKworSW4gdGhlIGFib3ZlLCB3ZSBkZWZpbmUg
YW5kIGluc3RhbnRpYXRlIGBGb29UZXN0YCBpbiB0aGUgKnNhbWUqIHNvdXJjZSBmaWxlLgorU29t
ZXRpbWVzIHlvdSBtYXkgd2FudCB0byBkZWZpbmUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBp
biBhIGxpYnJhcnkgYW5kIGxldAorb3RoZXIgcGVvcGxlIGluc3RhbnRpYXRlIHRoZW0gbGF0ZXIu
IFRoaXMgcGF0dGVybiBpcyBrbm93biBhcyAqYWJzdHJhY3QgdGVzdHMqLgorQXMgYW4gZXhhbXBs
ZSBvZiBpdHMgYXBwbGljYXRpb24sIHdoZW4geW91IGFyZSBkZXNpZ25pbmcgYW4gaW50ZXJmYWNl
IHlvdSBjYW4KK3dyaXRlIGEgc3RhbmRhcmQgc3VpdGUgb2YgYWJzdHJhY3QgdGVzdHMgKHBlcmhh
cHMgdXNpbmcgYSBmYWN0b3J5IGZ1bmN0aW9uIGFzCit0aGUgdGVzdCBwYXJhbWV0ZXIpIHRoYXQg
YWxsIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgaW50ZXJmYWNlIGFyZSBleHBlY3RlZCB0bworcGFz
cy4gV2hlbiBzb21lb25lIGltcGxlbWVudHMgdGhlIGludGVyZmFjZSwgdGhleSBjYW4gaW5zdGFu
dGlhdGUgeW91ciBzdWl0ZSB0bworZ2V0IGFsbCB0aGUgaW50ZXJmYWNlLWNvbmZvcm1hbmNlIHRl
c3RzIGZvciBmcmVlLgorCitUbyBkZWZpbmUgYWJzdHJhY3QgdGVzdHMsIHlvdSBzaG91bGQgb3Jn
YW5pemUgeW91ciBjb2RlIGxpa2UgdGhpczoKKworMS4gIFB1dCB0aGUgZGVmaW5pdGlvbiBvZiB0
aGUgcGFyYW1ldGVyaXplZCB0ZXN0IGZpeHR1cmUgY2xhc3MgKGUuZy4gYEZvb1Rlc3RgKQorICAg
IGluIGEgaGVhZGVyIGZpbGUsIHNheSBgZm9vX3BhcmFtX3Rlc3QuaGAuIFRoaW5rIG9mIHRoaXMg
YXMgKmRlY2xhcmluZyogeW91cgorICAgIGFic3RyYWN0IHRlc3RzLgorMS4gIFB1dCB0aGUgYFRF
U1RfUGAgZGVmaW5pdGlvbnMgaW4gYGZvb19wYXJhbV90ZXN0LmNjYCwgd2hpY2ggaW5jbHVkZXMK
KyAgICBgZm9vX3BhcmFtX3Rlc3QuaGAuIFRoaW5rIG9mIHRoaXMgYXMgKmltcGxlbWVudGluZyog
eW91ciBhYnN0cmFjdCB0ZXN0cy4KKworT25jZSB0aGV5IGFyZSBkZWZpbmVkLCB5b3UgY2FuIGlu
c3RhbnRpYXRlIHRoZW0gYnkgaW5jbHVkaW5nIGBmb29fcGFyYW1fdGVzdC5oYCwKK2ludm9raW5n
IGBJTlNUQU5USUFURV9URVNUX0NBU0VfUCgpYCwgYW5kIGRlcGVuZGluZyBvbiB0aGUgbGlicmFy
eSB0YXJnZXQgdGhhdAorY29udGFpbnMgYGZvb19wYXJhbV90ZXN0LmNjYC4gWW91IGNhbiBpbnN0
YW50aWF0ZSB0aGUgc2FtZSBhYnN0cmFjdCB0ZXN0IGNhc2UKK211bHRpcGxlIHRpbWVzLCBwb3Nz
aWJseSBpbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgorCisjIyMgU3BlY2lmeWluZyBOYW1lcyBm
b3IgVmFsdWUtUGFyYW1ldGVyaXplZCBUZXN0IFBhcmFtZXRlcnMKKworVGhlIG9wdGlvbmFsIGxh
c3QgYXJndW1lbnQgdG8gYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKClgIGFsbG93cyB0aGUgdXNl
ciB0bworc3BlY2lmeSBhIGZ1bmN0aW9uIG9yIGZ1bmN0b3IgdGhhdCBnZW5lcmF0ZXMgY3VzdG9t
IHRlc3QgbmFtZSBzdWZmaXhlcyBiYXNlZCBvbgordGhlIHRlc3QgcGFyYW1ldGVycy4gVGhlIGZ1
bmN0aW9uIHNob3VsZCBhY2NlcHQgb25lIGFyZ3VtZW50IG9mIHR5cGUKK2B0ZXN0aW5nOjpUZXN0
UGFyYW1JbmZvPGNsYXNzIFBhcmFtVHlwZT5gLCBhbmQgcmV0dXJuIGBzdGQ6OnN0cmluZ2AuCisK
K2B0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1OYW1lYCBpcyBhIGJ1aWx0aW4gdGVzdCBzdWZm
aXggZ2VuZXJhdG9yIHRoYXQKK3JldHVybnMgdGhlIHZhbHVlIG9mIGB0ZXN0aW5nOjpQcmludFRv
U3RyaW5nKEdldFBhcmFtKCkpYC4gSXQgZG9lcyBub3Qgd29yayBmb3IKK2BzdGQ6OnN0cmluZ2Ag
b3IgQyBzdHJpbmdzLgorCitOT1RFOiB0ZXN0IG5hbWVzIG11c3QgYmUgbm9uLWVtcHR5LCB1bmlx
dWUsIGFuZCBtYXkgb25seSBjb250YWluIEFTQ0lJCithbHBoYW51bWVyaWMgY2hhcmFjdGVycy4g
SW4gcGFydGljdWxhciwgdGhleSBbc2hvdWxkIG5vdCBjb250YWluCit1bmRlcnNjb3Jlc10oaHR0
cHM6Ly9nM2RvYy5jb3JwLmdvb2dsZS5jb20vdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L2czZG9jL2ZhcS5tZCNuby11bmRlcnNjb3JlcykuCisKK2BgYGMrKworY2xhc3MgTXlUZXN0
Q2FzZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4ge307CisKK1RFU1RfUChN
eVRlc3RDYXNlLCBNeVRlc3QpCit7CisgIHN0ZDo6Y291dCA8PCAiRXhhbXBsZSBUZXN0IFBhcmFt
OiAiIDw8IEdldFBhcmFtKCkgPDwgc3RkOjplbmRsOworfQorCitJTlNUQU5USUFURV9URVNUX0NB
U0VfUChNeUdyb3VwLCBNeVRlc3RDYXNlLCB0ZXN0aW5nOjpSYW5nZSgwLCAxMCksCisgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1OYW1lKCkpOworYGBg
CisKKyMjIFR5cGVkIFRlc3RzPC9pZD4KKworU3VwcG9zZSB5b3UgaGF2ZSBtdWx0aXBsZSBpbXBs
ZW1lbnRhdGlvbnMgb2YgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZCB3YW50IHRvIG1ha2UKK3N1cmUg
dGhhdCBhbGwgb2YgdGhlbSBzYXRpc2Z5IHNvbWUgY29tbW9uIHJlcXVpcmVtZW50cy4gT3IsIHlv
dSBtYXkgaGF2ZSBkZWZpbmVkCitzZXZlcmFsIHR5cGVzIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGNv
bmZvcm0gdG8gdGhlIHNhbWUgImNvbmNlcHQiIGFuZCB5b3Ugd2FudCB0bwordmVyaWZ5IGl0LiBJ
biBib3RoIGNhc2VzLCB5b3Ugd2FudCB0aGUgc2FtZSB0ZXN0IGxvZ2ljIHJlcGVhdGVkIGZvciBk
aWZmZXJlbnQKK3R5cGVzLgorCitXaGlsZSB5b3UgY2FuIHdyaXRlIG9uZSBgVEVTVGAgb3IgYFRF
U1RfRmAgZm9yIGVhY2ggdHlwZSB5b3Ugd2FudCB0byB0ZXN0IChhbmQKK3lvdSBtYXkgZXZlbiBm
YWN0b3IgdGhlIHRlc3QgbG9naWMgaW50byBhIGZ1bmN0aW9uIHRlbXBsYXRlIHRoYXQgeW91IGlu
dm9rZSBmcm9tCit0aGUgYFRFU1RgKSwgaXQncyB0ZWRpb3VzIGFuZCBkb2Vzbid0IHNjYWxlOiBp
ZiB5b3Ugd2FudCBgbWAgdGVzdHMgb3ZlciBgbmAKK3R5cGVzLCB5b3UnbGwgZW5kIHVwIHdyaXRp
bmcgYG0qbmAgYFRFU1Rgcy4KKworKlR5cGVkIHRlc3RzKiBhbGxvdyB5b3UgdG8gcmVwZWF0IHRo
ZSBzYW1lIHRlc3QgbG9naWMgb3ZlciBhIGxpc3Qgb2YgdHlwZXMuIFlvdQorb25seSBuZWVkIHRv
IHdyaXRlIHRoZSB0ZXN0IGxvZ2ljIG9uY2UsIGFsdGhvdWdoIHlvdSBtdXN0IGtub3cgdGhlIHR5
cGUgbGlzdAord2hlbiB3cml0aW5nIHR5cGVkIHRlc3RzLiBIZXJlJ3MgaG93IHlvdSBkbyBpdDoK
KworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUuIEl0IHNob3VsZCBiZSBw
YXJhbWV0ZXJpemVkIGJ5IGEgdHlwZS4KK1JlbWVtYmVyIHRvIGRlcml2ZSBpdCBmcm9tIGA6OnRl
c3Rpbmc6OlRlc3RgOgorCitgYGBjKysKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgRm9v
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHB1YmxpYzoKKyAgLi4uCisgIHR5cGVk
ZWYgc3RkOjpsaXN0PFQ+IExpc3Q7CisgIHN0YXRpYyBUIHNoYXJlZF87CisgIFQgdmFsdWVfOwor
fTsKK2BgYAorCitOZXh0LCBhc3NvY2lhdGUgYSBsaXN0IG9mIHR5cGVzIHdpdGggdGhlIHRlc3Qg
Y2FzZSwgd2hpY2ggd2lsbCBiZSByZXBlYXRlZCBmb3IKK2VhY2ggdHlwZSBpbiB0aGUgbGlzdDoK
KworYGBgYysrCit1c2luZyBNeVR5cGVzID0gOjp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQsIHVu
c2lnbmVkIGludD47CitUWVBFRF9URVNUX0NBU0UoRm9vVGVzdCwgTXlUeXBlcyk7CitgYGAKKwor
VGhlIHR5cGUgYWxpYXMgKGB1c2luZ2Agb3IgYHR5cGVkZWZgKSBpcyBuZWNlc3NhcnkgZm9yIHRo
ZSBgVFlQRURfVEVTVF9DQVNFYAorbWFjcm8gdG8gcGFyc2UgY29ycmVjdGx5LiBPdGhlcndpc2Ug
dGhlIGNvbXBpbGVyIHdpbGwgdGhpbmsgdGhhdCBlYWNoIGNvbW1hIGluCit0aGUgdHlwZSBsaXN0
IGludHJvZHVjZXMgYSBuZXcgbWFjcm8gYXJndW1lbnQuCisKK1RoZW4sIHVzZSBgVFlQRURfVEVT
VCgpYCBpbnN0ZWFkIG9mIGBURVNUX0YoKWAgdG8gZGVmaW5lIGEgdHlwZWQgdGVzdCBmb3IgdGhp
cwordGVzdCBjYXNlLiBZb3UgY2FuIHJlcGVhdCB0aGlzIGFzIG1hbnkgdGltZXMgYXMgeW91IHdh
bnQ6CisKK2BgYGMrKworVFlQRURfVEVTVChGb29UZXN0LCBEb2VzQmxhaCkgeworICAvLyBJbnNp
ZGUgYSB0ZXN0LCByZWZlciB0byB0aGUgc3BlY2lhbCBuYW1lIFR5cGVQYXJhbSB0byBnZXQgdGhl
IHR5cGUKKyAgLy8gcGFyYW1ldGVyLiAgU2luY2Ugd2UgYXJlIGluc2lkZSBhIGRlcml2ZWQgY2xh
c3MgdGVtcGxhdGUsIEMrKyByZXF1aXJlcworICAvLyB1cyB0byB2aXNpdCB0aGUgbWVtYmVycyBv
ZiBGb29UZXN0IHZpYSAndGhpcycuCisgIFR5cGVQYXJhbSBuID0gdGhpcy0+dmFsdWVfOworCisg
IC8vIFRvIHZpc2l0IHN0YXRpYyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlLCBhZGQgdGhlICdUZXN0
Rml4dHVyZTo6JworICAvLyBwcmVmaXguCisgIG4gKz0gVGVzdEZpeHR1cmU6OnNoYXJlZF87CisK
KyAgLy8gVG8gcmVmZXIgdG8gdHlwZWRlZnMgaW4gdGhlIGZpeHR1cmUsIGFkZCB0aGUgJ3R5cGVu
YW1lIFRlc3RGaXh0dXJlOjonCisgIC8vIHByZWZpeC4gIFRoZSAndHlwZW5hbWUnIGlzIHJlcXVp
cmVkIHRvIHNhdGlzZnkgdGhlIGNvbXBpbGVyLgorICB0eXBlbmFtZSBUZXN0Rml4dHVyZTo6TGlz
dCB2YWx1ZXM7CisKKyAgdmFsdWVzLnB1c2hfYmFjayhuKTsKKyAgLi4uCit9CisKK1RZUEVEX1RF
U1QoRm9vVGVzdCwgSGFzUHJvcGVydHlBKSB7IC4uLiB9CitgYGAKKworWW91IGNhbiBzZWUgc2Ft
cGxlNl91bml0dGVzdC5jYworCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cyAocmVx
dWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBNYWMKKworIyMgVHlwZS1QYXJhbWV0ZXJpemVkIFRl
c3RzCisKKypUeXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMqIGFyZSBsaWtlIHR5cGVkIHRlc3RzLCBl
eGNlcHQgdGhhdCB0aGV5IGRvbid0IHJlcXVpcmUKK3lvdSB0byBrbm93IHRoZSBsaXN0IG9mIHR5
cGVzIGFoZWFkIG9mIHRpbWUuIEluc3RlYWQsIHlvdSBjYW4gZGVmaW5lIHRoZSB0ZXN0Citsb2dp
YyBmaXJzdCBhbmQgaW5zdGFudGlhdGUgaXQgd2l0aCBkaWZmZXJlbnQgdHlwZSBsaXN0cyBsYXRl
ci4gWW91IGNhbiBldmVuCitpbnN0YW50aWF0ZSBpdCBtb3JlIHRoYW4gb25jZSBpbiB0aGUgc2Ft
ZSBwcm9ncmFtLgorCitJZiB5b3UgYXJlIGRlc2lnbmluZyBhbiBpbnRlcmZhY2Ugb3IgY29uY2Vw
dCwgeW91IGNhbiBkZWZpbmUgYSBzdWl0ZSBvZgordHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzIHRv
IHZlcmlmeSBwcm9wZXJ0aWVzIHRoYXQgYW55IHZhbGlkIGltcGxlbWVudGF0aW9uIG9mCit0aGUg
aW50ZXJmYWNlL2NvbmNlcHQgc2hvdWxkIGhhdmUuIFRoZW4sIHRoZSBhdXRob3Igb2YgZWFjaCBp
bXBsZW1lbnRhdGlvbiBjYW4KK2p1c3QgaW5zdGFudGlhdGUgdGhlIHRlc3Qgc3VpdGUgd2l0aCB0
aGVpciB0eXBlIHRvIHZlcmlmeSB0aGF0IGl0IGNvbmZvcm1zIHRvCit0aGUgcmVxdWlyZW1lbnRz
LCB3aXRob3V0IGhhdmluZyB0byB3cml0ZSBzaW1pbGFyIHRlc3RzIHJlcGVhdGVkbHkuIEhlcmUn
cyBhbgorZXhhbXBsZToKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUs
IGFzIHdlIGRpZCB3aXRoIHR5cGVkIHRlc3RzOgorCitgYGBjKysKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworICAuLi4KK307
CitgYGAKKworTmV4dCwgZGVjbGFyZSB0aGF0IHlvdSB3aWxsIGRlZmluZSBhIHR5cGUtcGFyYW1l
dGVyaXplZCB0ZXN0IGNhc2U6CisKK2BgYGMrKworVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7
CitgYGAKKworVGhlbiwgdXNlIGBUWVBFRF9URVNUX1AoKWAgdG8gZGVmaW5lIGEgdHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3QuIFlvdSBjYW4gcmVwZWF0Cit0aGlzIGFzIG1hbnkgdGltZXMgYXMgeW91
IHdhbnQ6CisKK2BgYGMrKworVFlQRURfVEVTVF9QKEZvb1Rlc3QsIERvZXNCbGFoKSB7CisgIC8v
IEluc2lkZSBhIHRlc3QsIHJlZmVyIHRvIFR5cGVQYXJhbSB0byBnZXQgdGhlIHR5cGUgcGFyYW1l
dGVyLgorICBUeXBlUGFyYW0gbiA9IDA7CisgIC4uLgorfQorCitUWVBFRF9URVNUX1AoRm9vVGVz
dCwgSGFzUHJvcGVydHlBKSB7IC4uLiB9CitgYGAKKworTm93IHRoZSB0cmlja3kgcGFydDogeW91
IG5lZWQgdG8gcmVnaXN0ZXIgYWxsIHRlc3QgcGF0dGVybnMgdXNpbmcgdGhlCitgUkVHSVNURVJf
VFlQRURfVEVTVF9DQVNFX1BgIG1hY3JvIGJlZm9yZSB5b3UgY2FuIGluc3RhbnRpYXRlIHRoZW0u
IFRoZSBmaXJzdAorYXJndW1lbnQgb2YgdGhlIG1hY3JvIGlzIHRoZSB0ZXN0IGNhc2UgbmFtZTsg
dGhlIHJlc3QgYXJlIHRoZSBuYW1lcyBvZiB0aGUgdGVzdHMKK2luIHRoaXMgdGVzdCBjYXNlOgor
CitgYGBjKysKK1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEb2VzQmxhaCwgSGFzUHJvcGVydHlBKTsKK2BgYAorCitGaW5hbGx5
LCB5b3UgYXJlIGZyZWUgdG8gaW5zdGFudGlhdGUgdGhlIHBhdHRlcm4gd2l0aCB0aGUgdHlwZXMg
eW91IHdhbnQuIElmIHlvdQorcHV0IHRoZSBhYm92ZSBjb2RlIGluIGEgaGVhZGVyIGZpbGUsIHlv
dSBjYW4gYCNpbmNsdWRlYCBpdCBpbiBtdWx0aXBsZSBDKysKK3NvdXJjZSBmaWxlcyBhbmQgaW5z
dGFudGlhdGUgaXQgbXVsdGlwbGUgdGltZXMuCisKK2BgYGMrKwordHlwZWRlZiA6OnRlc3Rpbmc6
OlR5cGVzPGNoYXIsIGludCwgdW5zaWduZWQgaW50PiBNeVR5cGVzOworSU5TVEFOVElBVEVfVFlQ
RURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlwZXMpOworYGBgCisKK1RvIGRpc3Rpbmd1
aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4sIHRoZSBmaXJzdCBhcmd1bWVu
dCB0byB0aGUKK2BJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUGAgbWFjcm8gaXMgYSBwcmVm
aXggdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZQorYWN0dWFsIHRlc3QgY2FzZSBuYW1lLiBSZW1l
bWJlciB0byBwaWNrIHVuaXF1ZSBwcmVmaXhlcyBmb3IgZGlmZmVyZW50IGluc3RhbmNlcy4KKwor
SW4gdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGUgdHlwZSBsaXN0IGNvbnRhaW5zIG9ubHkgb25l
IHR5cGUsIHlvdSBjYW4gd3JpdGUKK3RoYXQgdHlwZSBkaXJlY3RseSB3aXRob3V0IGA6OnRlc3Rp
bmc6OlR5cGVzPC4uLj5gLCBsaWtlIHRoaXM6CisKK2BgYGMrKworSU5TVEFOVElBVEVfVFlQRURf
VEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIGludCk7CitgYGAKKworWW91IGNhbiBzZWUgYHNhbXBs
ZTZfdW5pdHRlc3QuY2NgIGZvciBhIGNvbXBsZXRlIGV4YW1wbGUuCisKKyoqQXZhaWxhYmlsaXR5
Kio6IExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYworCisj
IyBUZXN0aW5nIFByaXZhdGUgQ29kZQorCitJZiB5b3UgY2hhbmdlIHlvdXIgc29mdHdhcmUncyBp
bnRlcm5hbCBpbXBsZW1lbnRhdGlvbiwgeW91ciB0ZXN0cyBzaG91bGQgbm90CiticmVhayBhcyBs
b25nIGFzIHRoZSBjaGFuZ2UgaXMgbm90IG9ic2VydmFibGUgYnkgdXNlcnMuIFRoZXJlZm9yZSwg
KipwZXIgdGhlCitibGFjay1ib3ggdGVzdGluZyBwcmluY2lwbGUsIG1vc3Qgb2YgdGhlIHRpbWUg
eW91IHNob3VsZCB0ZXN0IHlvdXIgY29kZSB0aHJvdWdoCitpdHMgcHVibGljIGludGVyZmFjZXMu
KioKKworKipJZiB5b3Ugc3RpbGwgZmluZCB5b3Vyc2VsZiBuZWVkaW5nIHRvIHRlc3QgaW50ZXJu
YWwgaW1wbGVtZW50YXRpb24gY29kZSwKK2NvbnNpZGVyIGlmIHRoZXJlJ3MgYSBiZXR0ZXIgZGVz
aWduLioqIFRoZSBkZXNpcmUgdG8gdGVzdCBpbnRlcm5hbAoraW1wbGVtZW50YXRpb24gaXMgb2Z0
ZW4gYSBzaWduIHRoYXQgdGhlIGNsYXNzIGlzIGRvaW5nIHRvbyBtdWNoLiBDb25zaWRlcgorZXh0
cmFjdGluZyBhbiBpbXBsZW1lbnRhdGlvbiBjbGFzcywgYW5kIHRlc3RpbmcgaXQuIFRoZW4gdXNl
IHRoYXQgaW1wbGVtZW50YXRpb24KK2NsYXNzIGluIHRoZSBvcmlnaW5hbCBjbGFzcy4KKworSWYg
eW91IGFic29sdXRlbHkgaGF2ZSB0byB0ZXN0IG5vbi1wdWJsaWMgaW50ZXJmYWNlIGNvZGUgdGhv
dWdoLCB5b3UgY2FuLiBUaGVyZQorYXJlIHR3byBjYXNlcyB0byBjb25zaWRlcjoKKworKiAgIFN0
YXRpYyBmdW5jdGlvbnMgKCAqbm90KiB0aGUgc2FtZSBhcyBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9u
cyEpIG9yIHVubmFtZWQKKyAgICBuYW1lc3BhY2VzLCBhbmQKKyogICBQcml2YXRlIG9yIHByb3Rl
Y3RlZCBjbGFzcyBtZW1iZXJzCisKK1RvIHRlc3QgdGhlbSwgd2UgdXNlIHRoZSBmb2xsb3dpbmcg
c3BlY2lhbCB0ZWNobmlxdWVzOgorCisqICAgQm90aCBzdGF0aWMgZnVuY3Rpb25zIGFuZCBkZWZp
bml0aW9ucy9kZWNsYXJhdGlvbnMgaW4gYW4gdW5uYW1lZCBuYW1lc3BhY2UKKyAgICBhcmUgb25s
eSB2aXNpYmxlIHdpdGhpbiB0aGUgc2FtZSB0cmFuc2xhdGlvbiB1bml0LiBUbyB0ZXN0IHRoZW0s
IHlvdSBjYW4KKyAgICBgI2luY2x1ZGVgIHRoZSBlbnRpcmUgYC5jY2AgZmlsZSBiZWluZyB0ZXN0
ZWQgaW4geW91ciBgKl90ZXN0LmNjYCBmaWxlLgorICAgIChpbmNsdWRpbmcgYC5jY2AgZmlsZXMg
aXMgbm90IGEgZ29vZCB3YXkgdG8gcmV1c2UgY29kZSAtIHlvdSBzaG91bGQgbm90IGRvCisgICAg
dGhpcyBpbiBwcm9kdWN0aW9uIGNvZGUhKQorCisgICAgSG93ZXZlciwgYSBiZXR0ZXIgYXBwcm9h
Y2ggaXMgdG8gbW92ZSB0aGUgcHJpdmF0ZSBjb2RlIGludG8gdGhlCisgICAgYGZvbzo6aW50ZXJu
YWxgIG5hbWVzcGFjZSwgd2hlcmUgYGZvb2AgaXMgdGhlIG5hbWVzcGFjZSB5b3VyIHByb2plY3QK
KyAgICBub3JtYWxseSB1c2VzLCBhbmQgcHV0IHRoZSBwcml2YXRlIGRlY2xhcmF0aW9ucyBpbiBh
IGAqLWludGVybmFsLmhgIGZpbGUuCisgICAgWW91ciBwcm9kdWN0aW9uIGAuY2NgIGZpbGVzIGFu
ZCB5b3VyIHRlc3RzIGFyZSBhbGxvd2VkIHRvIGluY2x1ZGUgdGhpcworICAgIGludGVybmFsIGhl
YWRlciwgYnV0IHlvdXIgY2xpZW50cyBhcmUgbm90LiBUaGlzIHdheSwgeW91IGNhbiBmdWxseSB0
ZXN0IHlvdXIKKyAgICBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiB3aXRob3V0IGxlYWtpbmcgaXQg
dG8geW91ciBjbGllbnRzLgorCisqICAgUHJpdmF0ZSBjbGFzcyBtZW1iZXJzIGFyZSBvbmx5IGFj
Y2Vzc2libGUgZnJvbSB3aXRoaW4gdGhlIGNsYXNzIG9yIGJ5CisgICAgZnJpZW5kcy4gVG8gYWNj
ZXNzIGEgY2xhc3MnIHByaXZhdGUgbWVtYmVycywgeW91IGNhbiBkZWNsYXJlIHlvdXIgdGVzdAor
ICAgIGZpeHR1cmUgYXMgYSBmcmllbmQgdG8gdGhlIGNsYXNzIGFuZCBkZWZpbmUgYWNjZXNzb3Jz
IGluIHlvdXIgZml4dHVyZS4gVGVzdHMKKyAgICB1c2luZyB0aGUgZml4dHVyZSBjYW4gdGhlbiBh
Y2Nlc3MgdGhlIHByaXZhdGUgbWVtYmVycyBvZiB5b3VyIHByb2R1Y3Rpb24KKyAgICBjbGFzcyB2
aWEgdGhlIGFjY2Vzc29ycyBpbiB0aGUgZml4dHVyZS4gTm90ZSB0aGF0IGV2ZW4gdGhvdWdoIHlv
dXIgZml4dHVyZQorICAgIGlzIGEgZnJpZW5kIHRvIHlvdXIgcHJvZHVjdGlvbiBjbGFzcywgeW91
ciB0ZXN0cyBhcmUgbm90IGF1dG9tYXRpY2FsbHkKKyAgICBmcmllbmRzIHRvIGl0LCBhcyB0aGV5
IGFyZSB0ZWNobmljYWxseSBkZWZpbmVkIGluIHN1Yi1jbGFzc2VzIG9mIHRoZQorICAgIGZpeHR1
cmUuCisKKyAgICBBbm90aGVyIHdheSB0byB0ZXN0IHByaXZhdGUgbWVtYmVycyBpcyB0byByZWZh
Y3RvciB0aGVtIGludG8gYW4KKyAgICBpbXBsZW1lbnRhdGlvbiBjbGFzcywgd2hpY2ggaXMgdGhl
biBkZWNsYXJlZCBpbiBhIGAqLWludGVybmFsLmhgIGZpbGUuIFlvdXIKKyAgICBjbGllbnRzIGFy
ZW4ndCBhbGxvd2VkIHRvIGluY2x1ZGUgdGhpcyBoZWFkZXIgYnV0IHlvdXIgdGVzdHMgY2FuLiBT
dWNoIGlzCisgICAgY2FsbGVkIHRoZQorICAgIFtQaW1wbF0oaHR0cHM6Ly93d3cuZ2FtZWRldi5u
ZXQvYXJ0aWNsZXMvcHJvZ3JhbW1pbmcvZ2VuZXJhbC1hbmQtZ2FtZXBsYXktcHJvZ3JhbW1pbmcv
dGhlLWMtcGltcGwtcjE3OTQvKQorICAgIChQcml2YXRlIEltcGxlbWVudGF0aW9uKSBpZGlvbS4K
KworICAgIE9yLCB5b3UgY2FuIGRlY2xhcmUgYW4gaW5kaXZpZHVhbCB0ZXN0IGFzIGEgZnJpZW5k
IG9mIHlvdXIgY2xhc3MgYnkgYWRkaW5nCisgICAgdGhpcyBsaW5lIGluIHRoZSBjbGFzcyBib2R5
OgorCisgICAgYGBgYysrCisgICAgICAgIEZSSUVORF9URVNUKFRlc3RDYXNlTmFtZSwgVGVzdE5h
bWUpOworICAgIGBgYAorCisgICAgRm9yIGV4YW1wbGUsCisKKyAgICBgYGBjKysKKyAgICAvLyBm
b28uaAorCisgICAgI2luY2x1ZGUgImd0ZXN0L2d0ZXN0X3Byb2QuaCIKKworICAgIGNsYXNzIEZv
byB7CisgICAgICAuLi4KKyAgICBwcml2YXRlOgorICAgICAgRlJJRU5EX1RFU1QoRm9vVGVzdCwg
QmFyUmV0dXJuc1plcm9Pbk51bGwpOworCisgICAgICBpbnQgQmFyKHZvaWQqIHgpOworICAgIH07
CisKKyAgICAvLyBmb29fdGVzdC5jYworICAgIC4uLgorICAgIFRFU1QoRm9vVGVzdCwgQmFyUmV0
dXJuc1plcm9Pbk51bGwpIHsKKyAgICAgIEZvbyBmb287CisgICAgICBFWFBFQ1RfRVEoMCwgZm9v
LkJhcihOVUxMKSk7ICAvLyBVc2VzIEZvbydzIHByaXZhdGUgbWVtYmVyIEJhcigpLgorICAgIH0K
KyAgICBgYGAKKworICAgIFBheSBzcGVjaWFsIGF0dGVudGlvbiB3aGVuIHlvdXIgY2xhc3MgaXMg
ZGVmaW5lZCBpbiBhIG5hbWVzcGFjZSwgYXMgeW91CisgICAgc2hvdWxkIGRlZmluZSB5b3VyIHRl
c3QgZml4dHVyZXMgYW5kIHRlc3RzIGluIHRoZSBzYW1lIG5hbWVzcGFjZSBpZiB5b3Ugd2FudAor
ICAgIHRoZW0gdG8gYmUgZnJpZW5kcyBvZiB5b3VyIGNsYXNzLiBGb3IgZXhhbXBsZSwgaWYgdGhl
IGNvZGUgdG8gYmUgdGVzdGVkCisgICAgbG9va3MgbGlrZToKKworICAgIGBgYGMrKworICAgIG5h
bWVzcGFjZSBteV9uYW1lc3BhY2UgeworCisgICAgY2xhc3MgRm9vIHsKKyAgICAgIGZyaWVuZCBj
bGFzcyBGb29UZXN0OworICAgICAgRlJJRU5EX1RFU1QoRm9vVGVzdCwgQmFyKTsKKyAgICAgIEZS
SUVORF9URVNUKEZvb1Rlc3QsIEJheik7CisgICAgICAuLi4gZGVmaW5pdGlvbiBvZiB0aGUgY2xh
c3MgRm9vIC4uLgorICAgIH07CisKKyAgICB9ICAvLyBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlCisg
ICAgYGBgCisKKyAgICBZb3VyIHRlc3QgY29kZSBzaG91bGQgYmUgc29tZXRoaW5nIGxpa2U6CisK
KyAgICBgYGBjKysKKyAgICBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlIHsKKworICAgIGNsYXNzIEZv
b1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyAgICAgcHJvdGVjdGVkOgorICAgICAg
Li4uCisgICAgfTsKKworICAgIFRFU1RfRihGb29UZXN0LCBCYXIpIHsgLi4uIH0KKyAgICBURVNU
X0YoRm9vVGVzdCwgQmF6KSB7IC4uLiB9CisKKyAgICB9ICAvLyBuYW1lc3BhY2UgbXlfbmFtZXNw
YWNlCisgICAgYGBgCisKKworIyMgIkNhdGNoaW5nIiBGYWlsdXJlcworCitJZiB5b3UgYXJlIGJ1
aWxkaW5nIGEgdGVzdGluZyB1dGlsaXR5IG9uIHRvcCBvZiBnb29nbGV0ZXN0LCB5b3UnbGwgd2Fu
dCB0byB0ZXN0Cit5b3VyIHV0aWxpdHkuIFdoYXQgZnJhbWV3b3JrIHdvdWxkIHlvdSB1c2UgdG8g
dGVzdCBpdD8gZ29vZ2xldGVzdCwgb2YgY291cnNlLgorCitUaGUgY2hhbGxlbmdlIGlzIHRvIHZl
cmlmeSB0aGF0IHlvdXIgdGVzdGluZyB1dGlsaXR5IHJlcG9ydHMgZmFpbHVyZXMgY29ycmVjdGx5
LgorSW4gZnJhbWV3b3JrcyB0aGF0IHJlcG9ydCBhIGZhaWx1cmUgYnkgdGhyb3dpbmcgYW4gZXhj
ZXB0aW9uLCB5b3UgY291bGQgY2F0Y2gKK3RoZSBleGNlcHRpb24gYW5kIGFzc2VydCBvbiBpdC4g
QnV0IGdvb2dsZXRlc3QgZG9lc24ndCB1c2UgZXhjZXB0aW9ucywgc28gaG93IGRvCit3ZSB0ZXN0
IHRoYXQgYSBwaWVjZSBvZiBjb2RlIGdlbmVyYXRlcyBhbiBleHBlY3RlZCBmYWlsdXJlPworCitn
dW5pdC1zcGkuaCBjb250YWlucyBzb21lIGNvbnN0cnVjdHMgdG8gZG8gdGhpcy4gQWZ0ZXIgI2lu
Y2x1ZGluZyB0aGlzIGhlYWRlciwKK3lvdSBjYW4gdXNlCisKK2BgYGMrKworICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShzdGF0ZW1lbnQsIHN1YnN0cmluZyk7CitgYGAKKwordG8gYXNzZXJ0IHRoYXQg
YHN0YXRlbWVudGAgZ2VuZXJhdGVzIGEgZmF0YWwgKGUuZy4gYEFTU0VSVF8qYCkgZmFpbHVyZSBp
biB0aGUKK2N1cnJlbnQgdGhyZWFkIHdob3NlIG1lc3NhZ2UgY29udGFpbnMgdGhlIGdpdmVuIGBz
dWJzdHJpbmdgLCBvciB1c2UKKworYGBgYysrCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHN0
YXRlbWVudCwgc3Vic3RyaW5nKTsKK2BgYAorCitpZiB5b3UgYXJlIGV4cGVjdGluZyBhIG5vbi1m
YXRhbCAoZS5nLiBgRVhQRUNUXypgKSBmYWlsdXJlLgorCitPbmx5IGZhaWx1cmVzIGluIHRoZSBj
dXJyZW50IHRocmVhZCBhcmUgY2hlY2tlZCB0byBkZXRlcm1pbmUgdGhlIHJlc3VsdCBvZiB0aGlz
Cit0eXBlIG9mIGV4cGVjdGF0aW9ucy4gSWYgYHN0YXRlbWVudGAgY3JlYXRlcyBuZXcgdGhyZWFk
cywgZmFpbHVyZXMgaW4gdGhlc2UKK3RocmVhZHMgYXJlIGFsc28gaWdub3JlZC4gSWYgeW91IHdh
bnQgdG8gY2F0Y2ggZmFpbHVyZXMgaW4gb3RoZXIgdGhyZWFkcyBhcword2VsbCwgdXNlIG9uZSBv
ZiB0aGUgZm9sbG93aW5nIG1hY3JvcyBpbnN0ZWFkOgorCitgYGBjKysKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoc3RhdGVtZW50LCBzdWJzdHJpbmcpOworICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhzdGF0ZW1lbnQsIHN1YnN0cmluZyk7Citg
YGAKKworTk9URTogQXNzZXJ0aW9ucyBmcm9tIG11bHRpcGxlIHRocmVhZHMgYXJlIGN1cnJlbnRs
eSBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MuCisKK0ZvciB0ZWNobmljYWwgcmVhc29ucywgdGhl
cmUgYXJlIHNvbWUgY2F2ZWF0czoKKworMS4gIFlvdSBjYW5ub3Qgc3RyZWFtIGEgZmFpbHVyZSBt
ZXNzYWdlIHRvIGVpdGhlciBtYWNyby4KKworMS4gIGBzdGF0ZW1lbnRgIGluIGBFWFBFQ1RfRkFU
QUxfRkFJTFVSRXtfT05fQUxMX1RIUkVBRFN9KClgIGNhbm5vdCByZWZlcmVuY2UKKyAgICBsb2Nh
bCBub24tc3RhdGljIHZhcmlhYmxlcyBvciBub24tc3RhdGljIG1lbWJlcnMgb2YgYHRoaXNgIG9i
amVjdC4KKworMS4gIGBzdGF0ZW1lbnRgIGluIGBFWFBFQ1RfRkFUQUxfRkFJTFVSRXtfT05fQUxM
X1RIUkVBRFN9KCkoKWAgY2Fubm90IHJldHVybiBhCisgICAgdmFsdWUuCisKKworIyMgR2V0dGlu
ZyB0aGUgQ3VycmVudCBUZXN0J3MgTmFtZQorCitTb21ldGltZXMgYSBmdW5jdGlvbiBtYXkgbmVl
ZCB0byBrbm93IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LgorRm9yIGV4
YW1wbGUsIHlvdSBtYXkgYmUgdXNpbmcgdGhlIGBTZXRVcCgpYCBtZXRob2Qgb2YgeW91ciB0ZXN0
IGZpeHR1cmUgdG8gc2V0Cit0aGUgZ29sZGVuIGZpbGUgbmFtZSBiYXNlZCBvbiB3aGljaCB0ZXN0
IGlzIHJ1bm5pbmcuIFRoZSBgOjp0ZXN0aW5nOjpUZXN0SW5mb2AKK2NsYXNzIGhhcyB0aGlzIGlu
Zm9ybWF0aW9uOgorCitgYGBjKysKK25hbWVzcGFjZSB0ZXN0aW5nIHsKKworY2xhc3MgVGVzdElu
Zm8geworIHB1YmxpYzoKKyAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIG5hbWUgYW5kIHRoZSB0
ZXN0IG5hbWUsIHJlc3BlY3RpdmVseS4KKyAgLy8KKyAgLy8gRG8gTk9UIGRlbGV0ZSBvciBmcmVl
IHRoZSByZXR1cm4gdmFsdWUgLSBpdCdzIG1hbmFnZWQgYnkgdGhlCisgIC8vIFRlc3RJbmZvIGNs
YXNzLgorICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0OworICBjb25zdCBjaGFy
KiBuYW1lKCkgY29uc3Q7Cit9OworCit9CitgYGAKKworVG8gb2J0YWluIGEgYFRlc3RJbmZvYCBv
YmplY3QgZm9yIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LCBjYWxsCitgY3VycmVudF90ZXN0
X2luZm8oKWAgb24gdGhlIGBVbml0VGVzdGAgc2luZ2xldG9uIG9iamVjdDoKKworYGBgYysrCisg
IC8vIEdldHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRlc3QuCisg
IC8vIERvIE5PVCBkZWxldGUgdGhlIHJldHVybmVkIG9iamVjdCAtIGl0J3MgbWFuYWdlZCBieSB0
aGUgVW5pdFRlc3QgY2xhc3MuCisgIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRl
c3RfaW5mbyA9CisgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVu
dF90ZXN0X2luZm8oKTsKKworCisKKyAgcHJpbnRmKCJXZSBhcmUgaW4gdGVzdCAlcyBvZiB0ZXN0
IGNhc2UgJXMuXG4iLAorICAgICAgICAgdGVzdF9pbmZvLT5uYW1lKCksCisgICAgICAgICB0ZXN0
X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOworYGBgCisKK2BjdXJyZW50X3Rlc3RfaW5mbygpYCBy
ZXR1cm5zIGEgbnVsbCBwb2ludGVyIGlmIG5vIHRlc3QgaXMgcnVubmluZy4gSW4KK3BhcnRpY3Vs
YXIsIHlvdSBjYW5ub3QgZmluZCB0aGUgdGVzdCBjYXNlIG5hbWUgaW4gYFRlc3RDYXNlU2V0VXAo
KWAsCitgVGVzdENhc2VUZWFyRG93bigpYCAod2hlcmUgeW91IGtub3cgdGhlIHRlc3QgY2FzZSBu
YW1lIGltcGxpY2l0bHkpLCBvcgorZnVuY3Rpb25zIGNhbGxlZCBmcm9tIHRoZW0uCisKKyoqQXZh
aWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIEV4dGVuZGluZyBnb29nbGV0
ZXN0IGJ5IEhhbmRsaW5nIFRlc3QgRXZlbnRzCisKK2dvb2dsZXRlc3QgcHJvdmlkZXMgYW4gKipl
dmVudCBsaXN0ZW5lciBBUEkqKiB0byBsZXQgeW91IHJlY2VpdmUgbm90aWZpY2F0aW9ucworYWJv
dXQgdGhlIHByb2dyZXNzIG9mIGEgdGVzdCBwcm9ncmFtIGFuZCB0ZXN0IGZhaWx1cmVzLiBUaGUg
ZXZlbnRzIHlvdSBjYW4KK2xpc3RlbiB0byBpbmNsdWRlIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRo
ZSB0ZXN0IHByb2dyYW0sIGEgdGVzdCBjYXNlLCBvciBhIHRlc3QKK21ldGhvZCwgYW1vbmcgb3Ro
ZXJzLiBZb3UgbWF5IHVzZSB0aGlzIEFQSSB0byBhdWdtZW50IG9yIHJlcGxhY2UgdGhlIHN0YW5k
YXJkCitjb25zb2xlIG91dHB1dCwgcmVwbGFjZSB0aGUgWE1MIG91dHB1dCwgb3IgcHJvdmlkZSBh
IGNvbXBsZXRlbHkgZGlmZmVyZW50IGZvcm0KK29mIG91dHB1dCwgc3VjaCBhcyBhIEdVSSBvciBh
IGRhdGFiYXNlLiBZb3UgY2FuIGFsc28gdXNlIHRlc3QgZXZlbnRzIGFzCitjaGVja3BvaW50cyB0
byBpbXBsZW1lbnQgYSByZXNvdXJjZSBsZWFrIGNoZWNrZXIsIGZvciBleGFtcGxlLgorCisqKkF2
YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMgRGVmaW5pbmcgRXZlbnQg
TGlzdGVuZXJzCisKK1RvIGRlZmluZSBhIGV2ZW50IGxpc3RlbmVyLCB5b3Ugc3ViY2xhc3MgZWl0
aGVyIHRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyIG9yCit0ZXN0aW5nOjpFbXB0eVRlc3RFdmVu
dExpc3RlbmVyIFRoZSBmb3JtZXIgaXMgYW4gKGFic3RyYWN0KSBpbnRlcmZhY2UsIHdoZXJlCisq
ZWFjaCBwdXJlIHZpcnR1YWwgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIHRvIGhhbmRsZSBhIHRl
c3QgZXZlbnQqIChGb3IKK2V4YW1wbGUsIHdoZW4gYSB0ZXN0IHN0YXJ0cywgdGhlIGBPblRlc3RT
dGFydCgpYCBtZXRob2Qgd2lsbCBiZSBjYWxsZWQuKS4gVGhlCitsYXR0ZXIgcHJvdmlkZXMgYW4g
ZW1wdHkgaW1wbGVtZW50YXRpb24gb2YgYWxsIG1ldGhvZHMgaW4gdGhlIGludGVyZmFjZSwgc3Vj
aAordGhhdCBhIHN1YmNsYXNzIG9ubHkgbmVlZHMgdG8gb3ZlcnJpZGUgdGhlIG1ldGhvZHMgaXQg
Y2FyZXMgYWJvdXQuCisKK1doZW4gYW4gZXZlbnQgaXMgZmlyZWQsIGl0cyBjb250ZXh0IGlzIHBh
c3NlZCB0byB0aGUgaGFuZGxlciBmdW5jdGlvbiBhcyBhbgorYXJndW1lbnQuIFRoZSBmb2xsb3dp
bmcgYXJndW1lbnQgdHlwZXMgYXJlIHVzZWQ6CisKKyogICBVbml0VGVzdCByZWZsZWN0cyB0aGUg
c3RhdGUgb2YgdGhlIGVudGlyZSB0ZXN0IHByb2dyYW0sCisqICAgVGVzdENhc2UgaGFzIGluZm9y
bWF0aW9uIGFib3V0IGEgdGVzdCBjYXNlLCB3aGljaCBjYW4gY29udGFpbiBvbmUgb3IgbW9yZQor
ICAgIHRlc3RzLAorKiAgIFRlc3RJbmZvIGNvbnRhaW5zIHRoZSBzdGF0ZSBvZiBhIHRlc3QsIGFu
ZAorKiAgIFRlc3RQYXJ0UmVzdWx0IHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBhIHRlc3QgYXNz
ZXJ0aW9uLgorCitBbiBldmVudCBoYW5kbGVyIGZ1bmN0aW9uIGNhbiBleGFtaW5lIHRoZSBhcmd1
bWVudCBpdCByZWNlaXZlcyB0byBmaW5kIG91dAoraW50ZXJlc3RpbmcgaW5mb3JtYXRpb24gYWJv
dXQgdGhlIGV2ZW50IGFuZCB0aGUgdGVzdCBwcm9ncmFtJ3Mgc3RhdGUuCisKK0hlcmUncyBhbiBl
eGFtcGxlOgorCitgYGBjKysKKyAgY2xhc3MgTWluaW1hbGlzdFByaW50ZXIgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKKyAgICAvLyBDYWxsZWQgYmVmb3JlIGEg
dGVzdCBzdGFydHMuCisgICAgdmlydHVhbCB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IDo6dGVzdGlu
Zzo6VGVzdEluZm8mIHRlc3RfaW5mbykgeworICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBz
dGFydGluZy5cbiIsCisgICAgICAgICAgICAgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRl
c3RfaW5mby5uYW1lKCkpOworICAgIH0KKworICAgIC8vIENhbGxlZCBhZnRlciBhIGZhaWxlZCBh
c3NlcnRpb24gb3IgYSBTVUNDRVNTKCkuCisgICAgdmlydHVhbCB2b2lkIE9uVGVzdFBhcnRSZXN1
bHQoY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgewor
ICAgICAgcHJpbnRmKCIlcyBpbiAlczolZFxuJXNcbiIsCisgICAgICAgICAgICAgdGVzdF9wYXJ0
X3Jlc3VsdC5mYWlsZWQoKSA/ICIqKiogRmFpbHVyZSIgOiAiU3VjY2VzcyIsCisgICAgICAgICAg
ICAgdGVzdF9wYXJ0X3Jlc3VsdC5maWxlX25hbWUoKSwKKyAgICAgICAgICAgICB0ZXN0X3BhcnRf
cmVzdWx0LmxpbmVfbnVtYmVyKCksCisgICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5zdW1t
YXJ5KCkpOworICAgIH0KKworICAgIC8vIENhbGxlZCBhZnRlciBhIHRlc3QgZW5kcy4KKyAgICB2
aXJ0dWFsIHZvaWQgT25UZXN0RW5kKGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8mIHRlc3RfaW5m
bykgeworICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBlbmRpbmcuXG4iLAorICAgICAgICAg
ICAgIHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgICB9
CisgIH07CitgYGAKKworIyMjIFVzaW5nIEV2ZW50IExpc3RlbmVycworCitUbyB1c2UgdGhlIGV2
ZW50IGxpc3RlbmVyIHlvdSBoYXZlIGRlZmluZWQsIGFkZCBhbiBpbnN0YW5jZSBvZiBpdCB0byB0
aGUKK2dvb2dsZXRlc3QgZXZlbnQgbGlzdGVuZXIgbGlzdCAocmVwcmVzZW50ZWQgYnkgY2xhc3Mg
VGVzdEV2ZW50TGlzdGVuZXJzIC0gbm90ZQordGhlICJzIiBhdCB0aGUgZW5kIG9mIHRoZSBuYW1l
KSBpbiB5b3VyIGBtYWluKClgIGZ1bmN0aW9uLCBiZWZvcmUgY2FsbGluZworYFJVTl9BTExfVEVT
VFMoKWA6CisKK2BgYGMrKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIDo6
dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICAvLyBHZXRzIGhvbGQgb2Yg
dGhlIGV2ZW50IGxpc3RlbmVyIGxpc3QuCisgIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJz
JiBsaXN0ZW5lcnMgPQorICAgICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgp
LT5saXN0ZW5lcnMoKTsKKyAgLy8gQWRkcyBhIGxpc3RlbmVyIHRvIHRoZSBlbmQuICBnb29nbGV0
ZXN0IHRha2VzIHRoZSBvd25lcnNoaXAuCisgIGxpc3RlbmVycy5BcHBlbmQobmV3IE1pbmltYWxp
c3RQcmludGVyKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KK2BgYAorCitUaGVyZSdz
IG9ubHkgb25lIHByb2JsZW06IHRoZSBkZWZhdWx0IHRlc3QgcmVzdWx0IHByaW50ZXIgaXMgc3Rp
bGwgaW4gZWZmZWN0LCBzbworaXRzIG91dHB1dCB3aWxsIG1pbmdsZSB3aXRoIHRoZSBvdXRwdXQg
ZnJvbSB5b3VyIG1pbmltYWxpc3QgcHJpbnRlci4gVG8gc3VwcHJlc3MKK3RoZSBkZWZhdWx0IHBy
aW50ZXIsIGp1c3QgcmVsZWFzZSBpdCBmcm9tIHRoZSBldmVudCBsaXN0ZW5lciBsaXN0IGFuZCBk
ZWxldGUgaXQuCitZb3UgY2FuIGRvIHNvIGJ5IGFkZGluZyBvbmUgbGluZToKKworYGBgYysrCisg
IC4uLgorICBkZWxldGUgbGlzdGVuZXJzLlJlbGVhc2UobGlzdGVuZXJzLmRlZmF1bHRfcmVzdWx0
X3ByaW50ZXIoKSk7CisgIGxpc3RlbmVycy5BcHBlbmQobmV3IE1pbmltYWxpc3RQcmludGVyKTsK
KyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK2BgYAorCitOb3csIHNpdCBiYWNrIGFuZCBlbmpv
eSBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IG91dHB1dCBmcm9tIHlvdXIgdGVzdHMuIEZvciBtb3Jl
CitkZXRhaWxzLCB5b3UgY2FuIHJlYWQgdGhpcyBzYW1wbGU5X3VuaXR0ZXN0LmNjCisKK1lvdSBt
YXkgYXBwZW5kIG1vcmUgdGhhbiBvbmUgbGlzdGVuZXIgdG8gdGhlIGxpc3QuIFdoZW4gYW4gYE9u
KlN0YXJ0KClgIG9yCitgT25UZXN0UGFydFJlc3VsdCgpYCBldmVudCBpcyBmaXJlZCwgdGhlIGxp
c3RlbmVycyB3aWxsIHJlY2VpdmUgaXQgaW4gdGhlIG9yZGVyCit0aGV5IGFwcGVhciBpbiB0aGUg
bGlzdCAoc2luY2UgbmV3IGxpc3RlbmVycyBhcmUgYWRkZWQgdG8gdGhlIGVuZCBvZiB0aGUgbGlz
dCwKK3RoZSBkZWZhdWx0IHRleHQgcHJpbnRlciBhbmQgdGhlIGRlZmF1bHQgWE1MIGdlbmVyYXRv
ciB3aWxsIHJlY2VpdmUgdGhlIGV2ZW50CitmaXJzdCkuIEFuIGBPbipFbmQoKWAgZXZlbnQgd2ls
bCBiZSByZWNlaXZlZCBieSB0aGUgbGlzdGVuZXJzIGluIHRoZSAqcmV2ZXJzZSoKK29yZGVyLiBU
aGlzIGFsbG93cyBvdXRwdXQgYnkgbGlzdGVuZXJzIGFkZGVkIGxhdGVyIHRvIGJlIGZyYW1lZCBi
eSBvdXRwdXQgZnJvbQorbGlzdGVuZXJzIGFkZGVkIGVhcmxpZXIuCisKKyMjIyBHZW5lcmF0aW5n
IEZhaWx1cmVzIGluIExpc3RlbmVycworCitZb3UgbWF5IHVzZSBmYWlsdXJlLXJhaXNpbmcgbWFj
cm9zIChgRVhQRUNUXyooKWAsIGBBU1NFUlRfKigpYCwgYEZBSUwoKWAsIGV0YykKK3doZW4gcHJv
Y2Vzc2luZyBhbiBldmVudC4gVGhlcmUgYXJlIHNvbWUgcmVzdHJpY3Rpb25zOgorCisxLiAgWW91
IGNhbm5vdCBnZW5lcmF0ZSBhbnkgZmFpbHVyZSBpbiBgT25UZXN0UGFydFJlc3VsdCgpYCAob3Ro
ZXJ3aXNlIGl0IHdpbGwKKyAgICBjYXVzZSBgT25UZXN0UGFydFJlc3VsdCgpYCB0byBiZSBjYWxs
ZWQgcmVjdXJzaXZlbHkpLgorMS4gIEEgbGlzdGVuZXIgdGhhdCBoYW5kbGVzIGBPblRlc3RQYXJ0
UmVzdWx0KClgIGlzIG5vdCBhbGxvd2VkIHRvIGdlbmVyYXRlIGFueQorICAgIGZhaWx1cmUuCisK
K1doZW4geW91IGFkZCBsaXN0ZW5lcnMgdG8gdGhlIGxpc3RlbmVyIGxpc3QsIHlvdSBzaG91bGQg
cHV0IGxpc3RlbmVycyB0aGF0CitoYW5kbGUgYE9uVGVzdFBhcnRSZXN1bHQoKWAgKmJlZm9yZSog
bGlzdGVuZXJzIHRoYXQgY2FuIGdlbmVyYXRlIGZhaWx1cmVzLiBUaGlzCitlbnN1cmVzIHRoYXQg
ZmFpbHVyZXMgZ2VuZXJhdGVkIGJ5IHRoZSBsYXR0ZXIgYXJlIGF0dHJpYnV0ZWQgdG8gdGhlIHJp
Z2h0IHRlc3QKK2J5IHRoZSBmb3JtZXIuCisKK1dlIGhhdmUgYSBzYW1wbGUgb2YgZmFpbHVyZS1y
YWlzaW5nIGxpc3RlbmVyIHNhbXBsZTEwX3VuaXR0ZXN0LmNjCisKKyMjIFJ1bm5pbmcgVGVzdCBQ
cm9ncmFtczogQWR2YW5jZWQgT3B0aW9ucworCitnb29nbGV0ZXN0IHRlc3QgcHJvZ3JhbXMgYXJl
IG9yZGluYXJ5IGV4ZWN1dGFibGVzLiBPbmNlIGJ1aWx0LCB5b3UgY2FuIHJ1biB0aGVtCitkaXJl
Y3RseSBhbmQgYWZmZWN0IHRoZWlyIGJlaGF2aW9yIHZpYSB0aGUgZm9sbG93aW5nIGVudmlyb25t
ZW50IHZhcmlhYmxlcworYW5kL29yIGNvbW1hbmQgbGluZSBmbGFncy4gRm9yIHRoZSBmbGFncyB0
byB3b3JrLCB5b3VyIHByb2dyYW1zIG11c3QgY2FsbAorYDo6dGVzdGluZzo6SW5pdEdvb2dsZVRl
c3QoKWAgYmVmb3JlIGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWAuCisKK1RvIHNlZSBhIGxpc3Qg
b2Ygc3VwcG9ydGVkIGZsYWdzIGFuZCB0aGVpciB1c2FnZSwgcGxlYXNlIHJ1biB5b3VyIHRlc3Qg
cHJvZ3JhbQord2l0aCB0aGUgYC0taGVscGAgZmxhZy4gWW91IGNhbiBhbHNvIHVzZSBgLWhgLCBg
LT9gLCBvciBgLz9gIGZvciBzaG9ydC4KKworSWYgYW4gb3B0aW9uIGlzIHNwZWNpZmllZCBib3Ro
IGJ5IGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGFuZCBieSBhIGZsYWcsIHRoZQorbGF0dGVyIHRh
a2VzIHByZWNlZGVuY2UuCisKKyMjIyBTZWxlY3RpbmcgVGVzdHMKKworIyMjIyBMaXN0aW5nIFRl
c3QgTmFtZXMKKworU29tZXRpbWVzIGl0IGlzIG5lY2Vzc2FyeSB0byBsaXN0IHRoZSBhdmFpbGFi
bGUgdGVzdHMgaW4gYSBwcm9ncmFtIGJlZm9yZQorcnVubmluZyB0aGVtIHNvIHRoYXQgYSBmaWx0
ZXIgbWF5IGJlIGFwcGxpZWQgaWYgbmVlZGVkLiBJbmNsdWRpbmcgdGhlIGZsYWcKK2AtLWd0ZXN0
X2xpc3RfdGVzdHNgIG92ZXJyaWRlcyBhbGwgb3RoZXIgZmxhZ3MgYW5kIGxpc3RzIHRlc3RzIGlu
IHRoZSBmb2xsb3dpbmcKK2Zvcm1hdDoKKworYGBgbm9uZQorVGVzdENhc2UxLgorICBUZXN0TmFt
ZTEKKyAgVGVzdE5hbWUyCitUZXN0Q2FzZTIuCisgIFRlc3ROYW1lCitgYGAKKworTm9uZSBvZiB0
aGUgdGVzdHMgbGlzdGVkIGFyZSBhY3R1YWxseSBydW4gaWYgdGhlIGZsYWcgaXMgcHJvdmlkZWQu
IFRoZXJlIGlzIG5vCitjb3JyZXNwb25kaW5nIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciB0aGlz
IGZsYWcuCisKKyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKKyMjIyMg
UnVubmluZyBhIFN1YnNldCBvZiB0aGUgVGVzdHMKKworQnkgZGVmYXVsdCwgYSBnb29nbGV0ZXN0
IHByb2dyYW0gcnVucyBhbGwgdGVzdHMgdGhlIHVzZXIgaGFzIGRlZmluZWQuIFNvbWV0aW1lcywK
K3lvdSB3YW50IHRvIHJ1biBvbmx5IGEgc3Vic2V0IG9mIHRoZSB0ZXN0cyAoZS5nLiBmb3IgZGVi
dWdnaW5nIG9yIHF1aWNrbHkKK3ZlcmlmeWluZyBhIGNoYW5nZSkuIElmIHlvdSBzZXQgdGhlIGBH
VEVTVF9GSUxURVJgIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQorYC0tZ3Rlc3RfZmlsdGVy
YCBmbGFnIHRvIGEgZmlsdGVyIHN0cmluZywgZ29vZ2xldGVzdCB3aWxsIG9ubHkgcnVuIHRoZSB0
ZXN0cword2hvc2UgZnVsbCBuYW1lcyAoaW4gdGhlIGZvcm0gb2YgYFRlc3RDYXNlTmFtZS5UZXN0
TmFtZWApIG1hdGNoIHRoZSBmaWx0ZXIuCisKK1RoZSBmb3JtYXQgb2YgYSBmaWx0ZXIgaXMgYSAn
YDpgJy1zZXBhcmF0ZWQgbGlzdCBvZiB3aWxkY2FyZCBwYXR0ZXJucyAoY2FsbGVkCit0aGUgKnBv
c2l0aXZlIHBhdHRlcm5zKikgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhICdgLWAnIGFuZCBhbm90
aGVyCisnYDpgJy1zZXBhcmF0ZWQgcGF0dGVybiBsaXN0IChjYWxsZWQgdGhlICpuZWdhdGl2ZSBw
YXR0ZXJucyopLiBBIHRlc3QgbWF0Y2hlcwordGhlIGZpbHRlciBpZiBhbmQgb25seSBpZiBpdCBt
YXRjaGVzIGFueSBvZiB0aGUgcG9zaXRpdmUgcGF0dGVybnMgYnV0IGRvZXMgbm90CittYXRjaCBh
bnkgb2YgdGhlIG5lZ2F0aXZlIHBhdHRlcm5zLgorCitBIHBhdHRlcm4gbWF5IGNvbnRhaW4gYCcq
J2AgKG1hdGNoZXMgYW55IHN0cmluZykgb3IgYCc/J2AgKG1hdGNoZXMgYW55IHNpbmdsZQorY2hh
cmFjdGVyKS4gRm9yIGNvbnZlbmllbmNlLCB0aGUgZmlsdGVyCisKK2AnKi1OZWdhdGl2ZVBhdHRl
cm5zJ2AgY2FuIGJlIGFsc28gd3JpdHRlbiBhcyBgJy1OZWdhdGl2ZVBhdHRlcm5zJ2AuCisKK0Zv
ciBleGFtcGxlOgorCisqICAgYC4vZm9vX3Rlc3RgIEhhcyBubyBmbGFnLCBhbmQgdGh1cyBydW5z
IGFsbCBpdHMgdGVzdHMuCisqICAgYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9KmAgQWxzbyBy
dW5zIGV2ZXJ5dGhpbmcsIGR1ZSB0byB0aGUgc2luZ2xlCisgICAgbWF0Y2gtZXZlcnl0aGluZyBg
KmAgdmFsdWUuCisqICAgYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Rm9vVGVzdC4qYCBSdW5z
IGV2ZXJ5dGhpbmcgaW4gdGVzdCBjYXNlIGBGb29UZXN0YAorICAgIC4KKyogICBgLi9mb29fdGVz
dCAtLWd0ZXN0X2ZpbHRlcj0qTnVsbCo6KkNvbnN0cnVjdG9yKmAgUnVucyBhbnkgdGVzdCB3aG9z
ZSBmdWxsCisgICAgbmFtZSBjb250YWlucyBlaXRoZXIgYCJOdWxsImAgb3IgYCJDb25zdHJ1Y3Rv
ciJgIC4KKyogICBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj0tKkRlYXRoVGVzdC4qYCBSdW5z
IGFsbCBub24tZGVhdGggdGVzdHMuCisqICAgYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Rm9v
VGVzdC4qLUZvb1Rlc3QuQmFyYCBSdW5zIGV2ZXJ5dGhpbmcgaW4gdGVzdAorICAgIGNhc2UgYEZv
b1Rlc3RgIGV4Y2VwdCBgRm9vVGVzdC5CYXJgLgorKiAgIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmls
dGVyPUZvb1Rlc3QuKjpCYXJUZXN0LiotRm9vVGVzdC5CYXI6QmFyVGVzdC5Gb29gIFJ1bnMKKyAg
ICBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBgRm9vVGVzdGAgZXhjZXB0IGBGb29UZXN0LkJhcmAg
YW5kIGV2ZXJ5dGhpbmcgaW4KKyAgICB0ZXN0IGNhc2UgYEJhclRlc3RgIGV4Y2VwdCBgQmFyVGVz
dC5Gb29gLgorICAgIAorIyMjIyBUZW1wb3JhcmlseSBEaXNhYmxpbmcgVGVzdHMKKworSWYgeW91
IGhhdmUgYSBicm9rZW4gdGVzdCB0aGF0IHlvdSBjYW5ub3QgZml4IHJpZ2h0IGF3YXksIHlvdSBj
YW4gYWRkIHRoZQorYERJU0FCTEVEX2AgcHJlZml4IHRvIGl0cyBuYW1lLiBUaGlzIHdpbGwgZXhj
bHVkZSBpdCBmcm9tIGV4ZWN1dGlvbi4gVGhpcyBpcworYmV0dGVyIHRoYW4gY29tbWVudGluZyBv
dXQgdGhlIGNvZGUgb3IgdXNpbmcgYCNpZiAwYCwgYXMgZGlzYWJsZWQgdGVzdHMgYXJlCitzdGls
bCBjb21waWxlZCAoYW5kIHRodXMgd29uJ3Qgcm90KS4KKworSWYgeW91IG5lZWQgdG8gZGlzYWJs
ZSBhbGwgdGVzdHMgaW4gYSB0ZXN0IGNhc2UsIHlvdSBjYW4gZWl0aGVyIGFkZCBgRElTQUJMRURf
YAordG8gdGhlIGZyb250IG9mIHRoZSBuYW1lIG9mIGVhY2ggdGVzdCwgb3IgYWx0ZXJuYXRpdmVs
eSBhZGQgaXQgdG8gdGhlIGZyb250IG9mCit0aGUgdGVzdCBjYXNlIG5hbWUuCisKK0ZvciBleGFt
cGxlLCB0aGUgZm9sbG93aW5nIHRlc3RzIHdvbid0IGJlIHJ1biBieSBnb29nbGV0ZXN0LCBldmVu
IHRob3VnaCB0aGV5Cit3aWxsIHN0aWxsIGJlIGNvbXBpbGVkOgorCitgYGBjKysKKy8vIFRlc3Rz
IHRoYXQgRm9vIGRvZXMgQWJjLgorVEVTVChGb29UZXN0LCBESVNBQkxFRF9Eb2VzQWJjKSB7IC4u
LiB9CisKK2NsYXNzIERJU0FCTEVEX0JhclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsg
Li4uIH07CisKKy8vIFRlc3RzIHRoYXQgQmFyIGRvZXMgWHl6LgorVEVTVF9GKERJU0FCTEVEX0Jh
clRlc3QsIERvZXNYeXopIHsgLi4uIH0KK2BgYAorCitOT1RFOiBUaGlzIGZlYXR1cmUgc2hvdWxk
IG9ubHkgYmUgdXNlZCBmb3IgdGVtcG9yYXJ5IHBhaW4tcmVsaWVmLiBZb3Ugc3RpbGwgaGF2ZQor
dG8gZml4IHRoZSBkaXNhYmxlZCB0ZXN0cyBhdCBhIGxhdGVyIGRhdGUuIEFzIGEgcmVtaW5kZXIs
IGdvb2dsZXRlc3Qgd2lsbCBwcmludAorYSBiYW5uZXIgd2FybmluZyB5b3UgaWYgYSB0ZXN0IHBy
b2dyYW0gY29udGFpbnMgYW55IGRpc2FibGVkIHRlc3RzLgorCitUSVA6IFlvdSBjYW4gZWFzaWx5
IGNvdW50IHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgeW91IGhhdmUgdXNpbmcgYGdzZWFy
Y2hgCithbmQvb3IgYGdyZXBgLiBUaGlzIG51bWJlciBjYW4gYmUgdXNlZCBhcyBhIG1ldHJpYyBm
b3IgaW1wcm92aW5nIHlvdXIgdGVzdAorcXVhbGl0eS4KKworKipBdmFpbGFiaWxpdHkqKjogTGlu
dXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIyBUZW1wb3JhcmlseSBFbmFibGluZyBEaXNhYmxlZCBU
ZXN0cworCitUbyBpbmNsdWRlIGRpc2FibGVkIHRlc3RzIGluIHRlc3QgZXhlY3V0aW9uLCBqdXN0
IGludm9rZSB0aGUgdGVzdCBwcm9ncmFtIHdpdGgKK3RoZSBgLS1ndGVzdF9hbHNvX3J1bl9kaXNh
YmxlZF90ZXN0c2AgZmxhZyBvciBzZXQgdGhlCitgR1RFU1RfQUxTT19SVU5fRElTQUJMRURfVEVT
VFNgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEgdmFsdWUgb3RoZXIgdGhhbiBgMGAuCitZb3Ug
Y2FuIGNvbWJpbmUgdGhpcyB3aXRoIHRoZSBgLS1ndGVzdF9maWx0ZXJgIGZsYWcgdG8gZnVydGhl
ciBzZWxlY3Qgd2hpY2gKK2Rpc2FibGVkIHRlc3RzIHRvIHJ1bi4KKworKipBdmFpbGFiaWxpdHkq
KjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIFJlcGVhdGluZyB0aGUgVGVzdHMKKworT25j
ZSBpbiBhIHdoaWxlIHlvdSdsbCBydW4gaW50byBhIHRlc3Qgd2hvc2UgcmVzdWx0IGlzIGhpdC1v
ci1taXNzLiBQZXJoYXBzIGl0Cit3aWxsIGZhaWwgb25seSAxJSBvZiB0aGUgdGltZSwgbWFraW5n
IGl0IHJhdGhlciBoYXJkIHRvIHJlcHJvZHVjZSB0aGUgYnVnIHVuZGVyCithIGRlYnVnZ2VyLiBU
aGlzIGNhbiBiZSBhIG1ham9yIHNvdXJjZSBvZiBmcnVzdHJhdGlvbi4KKworVGhlIGAtLWd0ZXN0
X3JlcGVhdGAgZmxhZyBhbGxvd3MgeW91IHRvIHJlcGVhdCBhbGwgKG9yIHNlbGVjdGVkKSB0ZXN0
IG1ldGhvZHMgaW4KK2EgcHJvZ3JhbSBtYW55IHRpbWVzLiBIb3BlZnVsbHksIGEgZmxha3kgdGVz
dCB3aWxsIGV2ZW50dWFsbHkgZmFpbCBhbmQgZ2l2ZSB5b3UKK2EgY2hhbmNlIHRvIGRlYnVnLiBI
ZXJlJ3MgaG93IHRvIHVzZSBpdDoKKworYGBgbm9uZQorJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVh
dD0xMDAwCitSZXBlYXQgZm9vX3Rlc3QgMTAwMCB0aW1lcyBhbmQgZG9uJ3Qgc3RvcCBhdCBmYWls
dXJlcy4KKworJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0tMQorQSBuZWdhdGl2ZSBjb3VudCBt
ZWFucyByZXBlYXRpbmcgZm9yZXZlci4KKworJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAw
IC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZQorUmVwZWF0IGZvb190ZXN0IDEwMDAgdGltZXMsIHN0
b3BwaW5nIGF0IHRoZSBmaXJzdCBmYWlsdXJlLiAgVGhpcworaXMgZXNwZWNpYWxseSB1c2VmdWwg
d2hlbiBydW5uaW5nIHVuZGVyIGEgZGVidWdnZXI6IHdoZW4gdGhlIHRlc3QKK2ZhaWxzLCBpdCB3
aWxsIGRyb3AgaW50byB0aGUgZGVidWdnZXIgYW5kIHlvdSBjYW4gdGhlbiBpbnNwZWN0Cit2YXJp
YWJsZXMgYW5kIHN0YWNrcy4KKworJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwIC0tZ3Rl
c3RfZmlsdGVyPUZvb0Jhci4qCitSZXBlYXQgdGhlIHRlc3RzIHdob3NlIG5hbWUgbWF0Y2hlcyB0
aGUgZmlsdGVyIDEwMDAgdGltZXMuCitgYGAKKworSWYgeW91ciB0ZXN0IHByb2dyYW0gY29udGFp
bnMgW2dsb2JhbCBzZXQtdXAvdGVhci1kb3duXSgjZ2xvYmFsLXNldC11cC1hbmQtdGVhci1kb3du
KSBjb2RlLCBpdAord2lsbCBiZSByZXBlYXRlZCBpbiBlYWNoIGl0ZXJhdGlvbiBhcyB3ZWxsLCBh
cyB0aGUgZmxha2luZXNzIG1heSBiZSBpbiBpdC4gWW91CitjYW4gYWxzbyBzcGVjaWZ5IHRoZSBy
ZXBlYXQgY291bnQgYnkgc2V0dGluZyB0aGUgYEdURVNUX1JFUEVBVGAgZW52aXJvbm1lbnQKK3Zh
cmlhYmxlLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisjIyMg
U2h1ZmZsaW5nIHRoZSBUZXN0cworCitZb3UgY2FuIHNwZWNpZnkgdGhlIGAtLWd0ZXN0X3NodWZm
bGVgIGZsYWcgKG9yIHNldCB0aGUgYEdURVNUX1NIVUZGTEVgCitlbnZpcm9ubWVudCB2YXJpYWJs
ZSB0byBgMWApIHRvIHJ1biB0aGUgdGVzdHMgaW4gYSBwcm9ncmFtIGluIGEgcmFuZG9tIG9yZGVy
LgorVGhpcyBoZWxwcyB0byByZXZlYWwgYmFkIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRlc3RzLgor
CitCeSBkZWZhdWx0LCBnb29nbGV0ZXN0IHVzZXMgYSByYW5kb20gc2VlZCBjYWxjdWxhdGVkIGZy
b20gdGhlIGN1cnJlbnQgdGltZS4KK1RoZXJlZm9yZSB5b3UnbGwgZ2V0IGEgZGlmZmVyZW50IG9y
ZGVyIGV2ZXJ5IHRpbWUuIFRoZSBjb25zb2xlIG91dHB1dCBpbmNsdWRlcwordGhlIHJhbmRvbSBz
ZWVkIHZhbHVlLCBzdWNoIHRoYXQgeW91IGNhbiByZXByb2R1Y2UgYW4gb3JkZXItcmVsYXRlZCB0
ZXN0IGZhaWx1cmUKK2xhdGVyLiBUbyBzcGVjaWZ5IHRoZSByYW5kb20gc2VlZCBleHBsaWNpdGx5
LCB1c2UgdGhlIGAtLWd0ZXN0X3JhbmRvbV9zZWVkPVNFRURgCitmbGFnIChvciBzZXQgdGhlIGBH
VEVTVF9SQU5ET01fU0VFRGAgZW52aXJvbm1lbnQgdmFyaWFibGUpLCB3aGVyZSBgU0VFRGAgaXMg
YW4KK2ludGVnZXIgaW4gdGhlIHJhbmdlIFswLCA5OTk5OV0uIFRoZSBzZWVkIHZhbHVlIDAgaXMg
c3BlY2lhbDogaXQgdGVsbHMKK2dvb2dsZXRlc3QgdG8gZG8gdGhlIGRlZmF1bHQgYmVoYXZpb3Ig
b2YgY2FsY3VsYXRpbmcgdGhlIHNlZWQgZnJvbSB0aGUgY3VycmVudAordGltZS4KKworSWYgeW91
IGNvbWJpbmUgdGhpcyB3aXRoIGAtLWd0ZXN0X3JlcGVhdD1OYCwgZ29vZ2xldGVzdCB3aWxsIHBp
Y2sgYSBkaWZmZXJlbnQKK3JhbmRvbSBzZWVkIGFuZCByZS1zaHVmZmxlIHRoZSB0ZXN0cyBpbiBl
YWNoIGl0ZXJhdGlvbi4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4K
KworIyMjIENvbnRyb2xsaW5nIFRlc3QgT3V0cHV0CisKKyMjIyMgQ29sb3JlZCBUZXJtaW5hbCBP
dXRwdXQKKworZ29vZ2xldGVzdCBjYW4gdXNlIGNvbG9ycyBpbiBpdHMgdGVybWluYWwgb3V0cHV0
IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNwb3QgdGhlCitpbXBvcnRhbnQgaW5mb3JtYXRpb246CisK
Ky4uLjxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPlstLS0tLS0tLS0tXTxzcGFuIHN0
eWxlPSJjb2xvcjpibGFjayI+IDEgdGVzdCBmcm9tIEZvb1Rlc3Q8YnIvPgorPHNwYW4gc3R5bGU9
ImNvbG9yOmdyZWVuIj5bIFJVTiAgICAgIF08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiBGb29U
ZXN0LkRvZXNBYmM8YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuIj5bICAgICAgIE9LIF08
c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiBGb29UZXN0LkRvZXNBYmM8YnIvPgorPHNwYW4gc3R5
bGU9ImNvbG9yOmdyZWVuIj5bLS0tLS0tLS0tLV08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiAy
IHRlc3RzIGZyb20gQmFyVGVzdDxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPlsgUlVO
ICAgICAgXTxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+IEJhclRlc3QuSGFzWHl6UHJvcGVydHk8
YnIvPgorPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuIj5bICAgICAgIE9LIF08c3BhbiBzdHlsZT0i
Y29sb3I6YmxhY2siPiBCYXJUZXN0Lkhhc1h5elByb3BlcnR5PGJyLz4KKzxzcGFuIHN0eWxlPSJj
b2xvcjpncmVlbiI+WyBSVU4gICAgICBdPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4gQmFyVGVz
dC5SZXR1cm5zVHJ1ZU9uU3VjY2Vzczxici8+CisuLi4gc29tZSBlcnJvciBtZXNzYWdlcyAuLi48
YnIvPgorPHNwYW4gICBzdHlsZT0iY29sb3I6cmVkIj5bICBGQUlMRUQgIF0gPHNwYW4gc3R5bGU9
ImNvbG9yOmJsYWNrIj5CYXJUZXN0LlJldHVybnNUcnVlT25TdWNjZXNzPGJyLz4KKy4uLjxici8+
Cis8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW4iPls9PT09PT09PT09XTxzcGFuIHN0eWxlPSJjb2xv
cjpibGFjayI+IDMwIHRlc3RzIGZyb20gMTQgdGVzdCBjYXNlcyByYW4uPGJyLz4KKzxzcGFuIHN0
eWxlPSJjb2xvcjpncmVlbiI+WyAgUEFTU0VEICBdPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4g
MjggdGVzdHMuPGJyLz4KKzxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPlsgIEZBSUxFRCAgXTxzcGFu
IHN0eWxlPSJjb2xvcjpibGFjayI+IDIgdGVzdHMsIGxpc3RlZCBiZWxvdzo8YnIvPgorPHNwYW4g
c3R5bGU9ImNvbG9yOnJlZCI+WyAgRkFJTEVEICBdPHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4g
QmFyVGVzdC5SZXR1cm5zVHJ1ZU9uU3VjY2Vzczxici8+Cis8c3BhbiBzdHlsZT0iY29sb3I6cmVk
Ij5bICBGQUlMRUQgIF08c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiBBbm90aGVyVGVzdC5Eb2Vz
WHl6PGJyLz4KKyAgMiBGQUlMRUQgVEVTVFMKKworWW91IGNhbiBzZXQgdGhlIGBHVEVTVF9DT0xP
UmAgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlIGAtLWd0ZXN0X2NvbG9yYAorY29tbWFuZCBs
aW5lIGZsYWcgdG8gYHllc2AsIGBub2AsIG9yIGBhdXRvYCAodGhlIGRlZmF1bHQpIHRvIGVuYWJs
ZSBjb2xvcnMsCitkaXNhYmxlIGNvbG9ycywgb3IgbGV0IGdvb2dsZXRlc3QgZGVjaWRlLiBXaGVu
IHRoZSB2YWx1ZSBpcyBgYXV0b2AsIGdvb2dsZXRlc3QKK3dpbGwgdXNlIGNvbG9ycyBpZiBhbmQg
b25seSBpZiB0aGUgb3V0cHV0IGdvZXMgdG8gYSB0ZXJtaW5hbCBhbmQgKG9uIG5vbi1XaW5kb3dz
CitwbGF0Zm9ybXMpIHRoZSBgVEVSTWAgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0IHRvIGB4
dGVybWAgb3IgYHh0ZXJtLWNvbG9yYC4KKworICoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5k
b3dzLCBNYWMuCisKKyMjIyMgU3VwcHJlc3NpbmcgdGhlIEVsYXBzZWQgVGltZQorCitCeSBkZWZh
dWx0LCBnb29nbGV0ZXN0IHByaW50cyB0aGUgdGltZSBpdCB0YWtlcyB0byBydW4gZWFjaCB0ZXN0
LiBUbyBkaXNhYmxlCit0aGF0LCBydW4gdGhlIHRlc3QgcHJvZ3JhbSB3aXRoIHRoZSBgLS1ndGVz
dF9wcmludF90aW1lPTBgIGNvbW1hbmQgbGluZSBmbGFnLCBvcgorc2V0IHRoZSBHVEVTVF9QUklO
VF9USU1FIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGAwYC4KKworKipBdmFpbGFiaWxpdHkqKjog
TGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIyBTdXBwcmVzc2luZyBVVEYtOCBUZXh0IE91dHB1
dAorCitJbiBjYXNlIG9mIGFzc2VydGlvbiBmYWlsdXJlcywgZ29vZ2xldGVzdCBwcmludHMgZXhw
ZWN0ZWQgYW5kIGFjdHVhbCB2YWx1ZXMgb2YKK3R5cGUgYHN0cmluZ2AgYm90aCBhcyBoZXgtZW5j
b2RlZCBzdHJpbmdzIGFzIHdlbGwgYXMgaW4gcmVhZGFibGUgVVRGLTggdGV4dCBpZgordGhleSBj
b250YWluIHZhbGlkIG5vbi1BU0NJSSBVVEYtOCBjaGFyYWN0ZXJzLiBJZiB5b3Ugd2FudCB0byBz
dXBwcmVzcyB0aGUgVVRGLTgKK3RleHQgYmVjYXVzZSwgZm9yIGV4YW1wbGUsIHlvdSBkb24ndCBo
YXZlIGFuIFVURi04IGNvbXBhdGlibGUgb3V0cHV0IG1lZGl1bSwgcnVuCit0aGUgdGVzdCBwcm9n
cmFtIHdpdGggYC0tZ3Rlc3RfcHJpbnRfdXRmOD0wYCBvciBzZXQgdGhlIGBHVEVTVF9QUklOVF9V
VEY4YAorZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYDBgLgorCisqKkF2YWlsYWJpbGl0eSoqOiBM
aW51eCwgV2luZG93cywgTWFjLgorCisKKyMjIyMgR2VuZXJhdGluZyBhbiBYTUwgUmVwb3J0CisK
K2dvb2dsZXRlc3QgY2FuIGVtaXQgYSBkZXRhaWxlZCBYTUwgcmVwb3J0IHRvIGEgZmlsZSBpbiBh
ZGRpdGlvbiB0byBpdHMgbm9ybWFsCit0ZXh0dWFsIG91dHB1dC4gVGhlIHJlcG9ydCBjb250YWlu
cyB0aGUgZHVyYXRpb24gb2YgZWFjaCB0ZXN0LCBhbmQgdGh1cyBjYW4gaGVscAoreW91IGlkZW50
aWZ5IHNsb3cgdGVzdHMuIFRoZSByZXBvcnQgaXMgYWxzbyB1c2VkIGJ5IHRoZSBodHRwOi8vdW5p
dHRlc3QKK2Rhc2hib2FyZCB0byBzaG93IHBlci10ZXN0LW1ldGhvZCBlcnJvciBtZXNzYWdlcy4K
KworVG8gZ2VuZXJhdGUgdGhlIFhNTCByZXBvcnQsIHNldCB0aGUgYEdURVNUX09VVFBVVGAgZW52
aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCitgLS1ndGVzdF9vdXRwdXRgIGZsYWcgdG8gdGhlIHN0
cmluZyBgInhtbDpwYXRoX3RvX291dHB1dF9maWxlImAsIHdoaWNoIHdpbGwKK2NyZWF0ZSB0aGUg
ZmlsZSBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24uIFlvdSBjYW4gYWxzbyBqdXN0IHVzZSB0aGUgc3Ry
aW5nIGAieG1sImAsCitpbiB3aGljaCBjYXNlIHRoZSBvdXRwdXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBgdGVzdF9kZXRhaWwueG1sYCBmaWxlIGluIHRoZQorY3VycmVudCBkaXJlY3RvcnkuCisKK0lm
IHlvdSBzcGVjaWZ5IGEgZGlyZWN0b3J5IChmb3IgZXhhbXBsZSwgYCJ4bWw6b3V0cHV0L2RpcmVj
dG9yeS8iYCBvbiBMaW51eCBvcgorYCJ4bWw6b3V0cHV0XGRpcmVjdG9yeVwiYCBvbiBXaW5kb3dz
KSwgZ29vZ2xldGVzdCB3aWxsIGNyZWF0ZSB0aGUgWE1MIGZpbGUgaW4KK3RoYXQgZGlyZWN0b3J5
LCBuYW1lZCBhZnRlciB0aGUgdGVzdCBleGVjdXRhYmxlIChlLmcuIGBmb29fdGVzdC54bWxgIGZv
ciB0ZXN0Citwcm9ncmFtIGBmb29fdGVzdGAgb3IgYGZvb190ZXN0LmV4ZWApLiBJZiB0aGUgZmls
ZSBhbHJlYWR5IGV4aXN0cyAocGVyaGFwcyBsZWZ0CitvdmVyIGZyb20gYSBwcmV2aW91cyBydW4p
LCBnb29nbGV0ZXN0IHdpbGwgcGljayBhIGRpZmZlcmVudCBuYW1lIChlLmcuCitgZm9vX3Rlc3Rf
MS54bWxgKSB0byBhdm9pZCBvdmVyd3JpdGluZyBpdC4KKworCitUaGUgcmVwb3J0IGlzIGJhc2Vk
IG9uIHRoZSBganVuaXRyZXBvcnRgIEFudCB0YXNrLiBTaW5jZSB0aGF0IGZvcm1hdCB3YXMKK29y
aWdpbmFsbHkgaW50ZW5kZWQgZm9yIEphdmEsIGEgbGl0dGxlIGludGVycHJldGF0aW9uIGlzIHJl
cXVpcmVkIHRvIG1ha2UgaXQKK2FwcGx5IHRvIGdvb2dsZXRlc3QgdGVzdHMsIGFzIHNob3duIGhl
cmU6CisKK2BgYHhtbAorPHRlc3RzdWl0ZXMgbmFtZT0iQWxsVGVzdHMiIC4uLj4KKyAgPHRlc3Rz
dWl0ZSBuYW1lPSJ0ZXN0X2Nhc2VfbmFtZSIgLi4uPgorICAgIDx0ZXN0Y2FzZSAgICBuYW1lPSJ0
ZXN0X25hbWUiIC4uLj4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiIvPgorICAgICAgPGZh
aWx1cmUgbWVzc2FnZT0iLi4uIi8+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4KKyAg
ICA8L3Rlc3RjYXNlPgorICA8L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1aXRlcz4KK2BgYAorCisqICAg
VGhlIHJvb3QgYDx0ZXN0c3VpdGVzPmAgZWxlbWVudCBjb3JyZXNwb25kcyB0byB0aGUgZW50aXJl
IHRlc3QgcHJvZ3JhbS4KKyogICBgPHRlc3RzdWl0ZT5gIGVsZW1lbnRzIGNvcnJlc3BvbmQgdG8g
Z29vZ2xldGVzdCB0ZXN0IGNhc2VzLgorKiAgIGA8dGVzdGNhc2U+YCBlbGVtZW50cyBjb3JyZXNw
b25kIHRvIGdvb2dsZXRlc3QgdGVzdCBmdW5jdGlvbnMuCisKK0ZvciBpbnN0YW5jZSwgdGhlIGZv
bGxvd2luZyBwcm9ncmFtCisKK2BgYGMrKworVEVTVChNYXRoVGVzdCwgQWRkaXRpb24pIHsgLi4u
IH0KK1RFU1QoTWF0aFRlc3QsIFN1YnRyYWN0aW9uKSB7IC4uLiB9CitURVNUKExvZ2ljVGVzdCwg
Tm9uQ29udHJhZGljdGlvbikgeyAuLi4gfQorYGBgCisKK2NvdWxkIGdlbmVyYXRlIHRoaXMgcmVw
b3J0OgorCitgYGB4bWwKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8
dGVzdHN1aXRlcyB0ZXN0cz0iMyIgZmFpbHVyZXM9IjEiIGVycm9ycz0iMCIgdGltZT0iMC4wMzUi
IHRpbWVzdGFtcD0iMjAxMS0xMC0zMVQxODo1Mjo0MiIgbmFtZT0iQWxsVGVzdHMiPgorICA8dGVz
dHN1aXRlIG5hbWU9Ik1hdGhUZXN0IiB0ZXN0cz0iMiIgZmFpbHVyZXM9IjEiIGVycm9ycz0iMCIg
dGltZT0iMC4wMTUiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJBZGRpdGlvbiIgc3RhdHVzPSJydW4i
IHRpbWU9IjAuMDA3IiBjbGFzc25hbWU9IiI+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1
ZSBvZjogYWRkKDEsIDEpJiN4MEE7ICBBY3R1YWw6IDMmI3gwQTtFeHBlY3RlZDogMiIgdHlwZT0i
Ij4uLi48L2ZhaWx1cmU+CisgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogYWRkKDEs
IC0xKSYjeDBBOyAgQWN0dWFsOiAxJiN4MEE7RXhwZWN0ZWQ6IDAiIHR5cGU9IiI+Li4uPC9mYWls
dXJlPgorICAgIDwvdGVzdGNhc2U+CisgICAgPHRlc3RjYXNlIG5hbWU9IlN1YnRyYWN0aW9uIiBz
dGF0dXM9InJ1biIgdGltZT0iMC4wMDUiIGNsYXNzbmFtZT0iIj4KKyAgICA8L3Rlc3RjYXNlPgor
ICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJMb2dpY1Rlc3QiIHRlc3RzPSIxIiBm
YWlsdXJlcz0iMCIgZXJyb3JzPSIwIiB0aW1lPSIwLjAwNSI+CisgICAgPHRlc3RjYXNlIG5hbWU9
Ik5vbkNvbnRyYWRpY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSIwLjAwNSIgY2xhc3NuYW1lPSIi
PgorICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPgorYGBgCisK
K1RoaW5ncyB0byBub3RlOgorCisqICAgVGhlIGB0ZXN0c2AgYXR0cmlidXRlIG9mIGEgYDx0ZXN0
c3VpdGVzPmAgb3IgYDx0ZXN0c3VpdGU+YCBlbGVtZW50IHRlbGxzIGhvdworICAgIG1hbnkgdGVz
dCBmdW5jdGlvbnMgdGhlIGdvb2dsZXRlc3QgcHJvZ3JhbSBvciB0ZXN0IGNhc2UgY29udGFpbnMs
IHdoaWxlIHRoZQorICAgIGBmYWlsdXJlc2AgYXR0cmlidXRlIHRlbGxzIGhvdyBtYW55IG9mIHRo
ZW0gZmFpbGVkLgorCisqICAgVGhlIGB0aW1lYCBhdHRyaWJ1dGUgZXhwcmVzc2VzIHRoZSBkdXJh
dGlvbiBvZiB0aGUgdGVzdCwgdGVzdCBjYXNlLCBvcgorICAgIGVudGlyZSB0ZXN0IHByb2dyYW0g
aW4gc2Vjb25kcy4KKworKiAgIFRoZSBgdGltZXN0YW1wYCBhdHRyaWJ1dGUgcmVjb3JkcyB0aGUg
bG9jYWwgZGF0ZSBhbmQgdGltZSBvZiB0aGUgdGVzdAorICAgIGV4ZWN1dGlvbi4KKworKiAgIEVh
Y2ggYDxmYWlsdXJlPmAgZWxlbWVudCBjb3JyZXNwb25kcyB0byBhIHNpbmdsZSBmYWlsZWQgZ29v
Z2xldGVzdAorICAgIGFzc2VydGlvbi4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRv
d3MsIE1hYy4KKworIyMjIyBHZW5lcmF0aW5nIGFuIEpTT04gUmVwb3J0CisKK2dvb2dsZXRlc3Qg
Y2FuIGFsc28gZW1pdCBhIEpTT04gcmVwb3J0IGFzIGFuIGFsdGVybmF0aXZlIGZvcm1hdCB0byBY
TUwuIFRvCitnZW5lcmF0ZSB0aGUgSlNPTiByZXBvcnQsIHNldCB0aGUgYEdURVNUX09VVFBVVGAg
ZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCitgLS1ndGVzdF9vdXRwdXRgIGZsYWcgdG8gdGhl
IHN0cmluZyBgImpzb246cGF0aF90b19vdXRwdXRfZmlsZSJgLCB3aGljaCB3aWxsCitjcmVhdGUg
dGhlIGZpbGUgYXQgdGhlIGdpdmVuIGxvY2F0aW9uLiBZb3UgY2FuIGFsc28ganVzdCB1c2UgdGhl
IHN0cmluZworYCJqc29uImAsIGluIHdoaWNoIGNhc2UgdGhlIG91dHB1dCBjYW4gYmUgZm91bmQg
aW4gdGhlIGB0ZXN0X2RldGFpbC5qc29uYCBmaWxlCitpbiB0aGUgY3VycmVudCBkaXJlY3Rvcnku
CisKK1RoZSByZXBvcnQgZm9ybWF0IGNvbmZvcm1zIHRvIHRoZSBmb2xsb3dpbmcgSlNPTiBTY2hl
bWE6CisKK2BgYGpzb24KK3sKKyAgIiRzY2hlbWEiOiAiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9z
Y2hlbWEjIiwKKyAgInR5cGUiOiAib2JqZWN0IiwKKyAgImRlZmluaXRpb25zIjogeworICAgICJU
ZXN0Q2FzZSI6IHsKKyAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAicHJvcGVydGllcyI6
IHsKKyAgICAgICAgIm5hbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgInRlc3Rz
IjogeyAidHlwZSI6ICJpbnRlZ2VyIiB9LAorICAgICAgICAiZmFpbHVyZXMiOiB7ICJ0eXBlIjog
ImludGVnZXIiIH0sCisgICAgICAgICJkaXNhYmxlZCI6IHsgInR5cGUiOiAiaW50ZWdlciIgfSwK
KyAgICAgICAgInRpbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgInRlc3RzdWl0
ZSI6IHsKKyAgICAgICAgICAidHlwZSI6ICJhcnJheSIsCisgICAgICAgICAgIml0ZW1zIjogewor
ICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9UZXN0SW5mbyIKKyAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJUZXN0SW5mbyI6IHsKKyAgICAgICJ0
eXBlIjogIm9iamVjdCIsCisgICAgICAicHJvcGVydGllcyI6IHsKKyAgICAgICAgIm5hbWUiOiB7
ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgInN0YXR1cyI6IHsKKyAgICAgICAgICAidHlw
ZSI6ICJzdHJpbmciLAorICAgICAgICAgICJlbnVtIjogWyJSVU4iLCAiTk9UUlVOIl0KKyAgICAg
ICAgfSwKKyAgICAgICAgInRpbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgImNs
YXNzbmFtZSI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAiZmFpbHVyZXMiOiB7Cisg
ICAgICAgICAgInR5cGUiOiAiYXJyYXkiLAorICAgICAgICAgICJpdGVtcyI6IHsKKyAgICAgICAg
ICAgICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvRmFpbHVyZSIKKyAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICB9LAorICAgICJGYWlsdXJlIjogeworICAgICAgInR5cGUiOiAib2Jq
ZWN0IiwKKyAgICAgICJwcm9wZXJ0aWVzIjogeworICAgICAgICAiZmFpbHVyZXMiOiB7ICJ0eXBl
IjogInN0cmluZyIgfSwKKyAgICAgICAgInR5cGUiOiB7ICJ0eXBlIjogInN0cmluZyIgfQorICAg
ICAgfQorICAgIH0KKyAgfSwKKyAgInByb3BlcnRpZXMiOiB7CisgICAgInRlc3RzIjogeyAidHlw
ZSI6ICJpbnRlZ2VyIiB9LAorICAgICJmYWlsdXJlcyI6IHsgInR5cGUiOiAiaW50ZWdlciIgfSwK
KyAgICAiZGlzYWJsZWQiOiB7ICJ0eXBlIjogImludGVnZXIiIH0sCisgICAgImVycm9ycyI6IHsg
InR5cGUiOiAiaW50ZWdlciIgfSwKKyAgICAidGltZXN0YW1wIjogeworICAgICAgInR5cGUiOiAi
c3RyaW5nIiwKKyAgICAgICJmb3JtYXQiOiAiZGF0ZS10aW1lIgorICAgIH0sCisgICAgInRpbWUi
OiB7ICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAibmFtZSI6IHsgInR5cGUiOiAic3RyaW5nIiB9
LAorICAgICJ0ZXN0c3VpdGVzIjogeworICAgICAgInR5cGUiOiAiYXJyYXkiLAorICAgICAgIml0
ZW1zIjogeworICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL1Rlc3RDYXNlIgorICAgICAg
fQorICAgIH0KKyAgfQorfQorYGBgCisKK1RoZSByZXBvcnQgdXNlcyB0aGUgZm9ybWF0IHRoYXQg
Y29uZm9ybXMgdG8gdGhlIGZvbGxvd2luZyBQcm90bzMgdXNpbmcgdGhlIFtKU09OCitlbmNvZGlu
Z10oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vcHJvdG9jb2wtYnVmZmVycy9kb2NzL3By
b3RvMyNqc29uKToKKworYGBgcHJvdG8KK3N5bnRheCA9ICJwcm90bzMiOworCitwYWNrYWdlIGdv
b2dsZXRlc3Q7CisKK2ltcG9ydCAiZ29vZ2xlL3Byb3RvYnVmL3RpbWVzdGFtcC5wcm90byI7Citp
bXBvcnQgImdvb2dsZS9wcm90b2J1Zi9kdXJhdGlvbi5wcm90byI7CisKK21lc3NhZ2UgVW5pdFRl
c3QgeworICBpbnQzMiB0ZXN0cyA9IDE7CisgIGludDMyIGZhaWx1cmVzID0gMjsKKyAgaW50MzIg
ZGlzYWJsZWQgPSAzOworICBpbnQzMiBlcnJvcnMgPSA0OworICBnb29nbGUucHJvdG9idWYuVGlt
ZXN0YW1wIHRpbWVzdGFtcCA9IDU7CisgIGdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbiB0aW1lID0g
NjsKKyAgc3RyaW5nIG5hbWUgPSA3OworICByZXBlYXRlZCBUZXN0Q2FzZSB0ZXN0c3VpdGVzID0g
ODsKK30KKworbWVzc2FnZSBUZXN0Q2FzZSB7CisgIHN0cmluZyBuYW1lID0gMTsKKyAgaW50MzIg
dGVzdHMgPSAyOworICBpbnQzMiBmYWlsdXJlcyA9IDM7CisgIGludDMyIGRpc2FibGVkID0gNDsK
KyAgaW50MzIgZXJyb3JzID0gNTsKKyAgZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uIHRpbWUgPSA2
OworICByZXBlYXRlZCBUZXN0SW5mbyB0ZXN0c3VpdGUgPSA3OworfQorCittZXNzYWdlIFRlc3RJ
bmZvIHsKKyAgc3RyaW5nIG5hbWUgPSAxOworICBlbnVtIFN0YXR1cyB7CisgICAgUlVOID0gMDsK
KyAgICBOT1RSVU4gPSAxOworICB9CisgIFN0YXR1cyBzdGF0dXMgPSAyOworICBnb29nbGUucHJv
dG9idWYuRHVyYXRpb24gdGltZSA9IDM7CisgIHN0cmluZyBjbGFzc25hbWUgPSA0OworICBtZXNz
YWdlIEZhaWx1cmUgeworICAgIHN0cmluZyBmYWlsdXJlcyA9IDE7CisgICAgc3RyaW5nIHR5cGUg
PSAyOworICB9CisgIHJlcGVhdGVkIEZhaWx1cmUgZmFpbHVyZXMgPSA1OworfQorYGBgCisKK0Zv
ciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBwcm9ncmFtCisKK2BgYGMrKworVEVTVChNYXRoVGVz
dCwgQWRkaXRpb24pIHsgLi4uIH0KK1RFU1QoTWF0aFRlc3QsIFN1YnRyYWN0aW9uKSB7IC4uLiB9
CitURVNUKExvZ2ljVGVzdCwgTm9uQ29udHJhZGljdGlvbikgeyAuLi4gfQorYGBgCisKK2NvdWxk
IGdlbmVyYXRlIHRoaXMgcmVwb3J0OgorCitgYGBqc29uCit7CisgICJ0ZXN0cyI6IDMsCisgICJm
YWlsdXJlcyI6IDEsCisgICJlcnJvcnMiOiAwLAorICAidGltZSI6ICIwLjAzNXMiLAorICAidGlt
ZXN0YW1wIjogIjIwMTEtMTAtMzFUMTg6NTI6NDJaIgorICAibmFtZSI6ICJBbGxUZXN0cyIsCisg
ICJ0ZXN0c3VpdGVzIjogWworICAgIHsKKyAgICAgICJuYW1lIjogIk1hdGhUZXN0IiwKKyAgICAg
ICJ0ZXN0cyI6IDIsCisgICAgICAiZmFpbHVyZXMiOiAxLAorICAgICAgImVycm9ycyI6IDAsCisg
ICAgICAidGltZSI6ICIwLjAxNXMiLAorICAgICAgInRlc3RzdWl0ZSI6IFsKKyAgICAgICAgewor
ICAgICAgICAgICJuYW1lIjogIkFkZGl0aW9uIiwKKyAgICAgICAgICAic3RhdHVzIjogIlJVTiIs
CisgICAgICAgICAgInRpbWUiOiAiMC4wMDdzIiwKKyAgICAgICAgICAiY2xhc3NuYW1lIjogIiIs
CisgICAgICAgICAgImZhaWx1cmVzIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAi
bWVzc2FnZSI6ICJWYWx1ZSBvZjogYWRkKDEsIDEpXHgwQSAgQWN0dWFsOiAzXHgwQUV4cGVjdGVk
OiAyIiwKKyAgICAgICAgICAgICAgInR5cGUiOiAiIgorICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgIm1lc3NhZ2UiOiAiVmFsdWUgb2Y6IGFkZCgxLCAtMSlceDBB
ICBBY3R1YWw6IDFceDBBRXhwZWN0ZWQ6IDAiLAorICAgICAgICAgICAgICAidHlwZSI6ICIiCisg
ICAgICAgICAgICB9CisgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg
ICAgIm5hbWUiOiAiU3VidHJhY3Rpb24iLAorICAgICAgICAgICJzdGF0dXMiOiAiUlVOIiwKKyAg
ICAgICAgICAidGltZSI6ICIwLjAwNXMiLAorICAgICAgICAgICJjbGFzc25hbWUiOiAiIgorICAg
ICAgICB9CisgICAgICBdCisgICAgfQorICAgIHsKKyAgICAgICJuYW1lIjogIkxvZ2ljVGVzdCIs
CisgICAgICAidGVzdHMiOiAxLAorICAgICAgImZhaWx1cmVzIjogMCwKKyAgICAgICJlcnJvcnMi
OiAwLAorICAgICAgInRpbWUiOiAiMC4wMDVzIiwKKyAgICAgICJ0ZXN0c3VpdGUiOiBbCisgICAg
ICAgIHsKKyAgICAgICAgICAibmFtZSI6ICJOb25Db250cmFkaWN0aW9uIiwKKyAgICAgICAgICAi
c3RhdHVzIjogIlJVTiIsCisgICAgICAgICAgInRpbWUiOiAiMC4wMDVzIiwKKyAgICAgICAgICAi
Y2xhc3NuYW1lIjogIiIKKyAgICAgICAgfQorICAgICAgXQorICAgIH0KKyAgXQorfQorYGBgCisK
K0lNUE9SVEFOVDogVGhlIGV4YWN0IGZvcm1hdCBvZiB0aGUgSlNPTiBkb2N1bWVudCBpcyBzdWJq
ZWN0IHRvIGNoYW5nZS4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4K
KworIyMjIENvbnRyb2xsaW5nIEhvdyBGYWlsdXJlcyBBcmUgUmVwb3J0ZWQKKworIyMjIyBUdXJu
aW5nIEFzc2VydGlvbiBGYWlsdXJlcyBpbnRvIEJyZWFrLVBvaW50cworCitXaGVuIHJ1bm5pbmcg
dGVzdCBwcm9ncmFtcyB1bmRlciBhIGRlYnVnZ2VyLCBpdCdzIHZlcnkgY29udmVuaWVudCBpZiB0
aGUKK2RlYnVnZ2VyIGNhbiBjYXRjaCBhbiBhc3NlcnRpb24gZmFpbHVyZSBhbmQgYXV0b21hdGlj
YWxseSBkcm9wIGludG8gaW50ZXJhY3RpdmUKK21vZGUuIGdvb2dsZXRlc3QncyAqYnJlYWstb24t
ZmFpbHVyZSogbW9kZSBzdXBwb3J0cyB0aGlzIGJlaGF2aW9yLgorCitUbyBlbmFibGUgaXQsIHNl
dCB0aGUgYEdURVNUX0JSRUFLX09OX0ZBSUxVUkVgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEg
dmFsdWUKK290aGVyIHRoYW4gYDBgIC4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhlIGAt
LWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVgCitjb21tYW5kIGxpbmUgZmxhZy4KKworKipBdmFpbGFi
aWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworIyMjIyBEaXNhYmxpbmcgQ2F0Y2hpbmcg
VGVzdC1UaHJvd24gRXhjZXB0aW9ucworCitnb29nbGV0ZXN0IGNhbiBiZSB1c2VkIGVpdGhlciB3
aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucyBlbmFibGVkLiBJZiBhIHRlc3QKK3Rocm93cyBhIEMr
KyBleGNlcHRpb24gb3IgKG9uIFdpbmRvd3MpIGEgc3RydWN0dXJlZCBleGNlcHRpb24gKFNFSCks
IGJ5IGRlZmF1bHQKK2dvb2dsZXRlc3QgY2F0Y2hlcyBpdCwgcmVwb3J0cyBpdCBhcyBhIHRlc3Qg
ZmFpbHVyZSwgYW5kIGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0Cit0ZXN0IG1ldGhvZC4gVGhpcyBt
YXhpbWl6ZXMgdGhlIGNvdmVyYWdlIG9mIGEgdGVzdCBydW4uIEFsc28sIG9uIFdpbmRvd3MgYW4K
K3VuY2F1Z2h0IGV4Y2VwdGlvbiB3aWxsIGNhdXNlIGEgcG9wLXVwIHdpbmRvdywgc28gY2F0Y2hp
bmcgdGhlIGV4Y2VwdGlvbnMgYWxsb3dzCit5b3UgdG8gcnVuIHRoZSB0ZXN0cyBhdXRvbWF0aWNh
bGx5LgorCitXaGVuIGRlYnVnZ2luZyB0aGUgdGVzdCBmYWlsdXJlcywgaG93ZXZlciwgeW91IG1h
eSBpbnN0ZWFkIHdhbnQgdGhlIGV4Y2VwdGlvbnMKK3RvIGJlIGhhbmRsZWQgYnkgdGhlIGRlYnVn
Z2VyLCBzdWNoIHRoYXQgeW91IGNhbiBleGFtaW5lIHRoZSBjYWxsIHN0YWNrIHdoZW4gYW4KK2V4
Y2VwdGlvbiBpcyB0aHJvd24uIFRvIGFjaGlldmUgdGhhdCwgc2V0IHRoZSBgR1RFU1RfQ0FUQ0hf
RVhDRVBUSU9OU2AKK2Vudmlyb25tZW50IHZhcmlhYmxlIHRvIGAwYCwgb3IgdXNlIHRoZSBgLS1n
dGVzdF9jYXRjaF9leGNlcHRpb25zPTBgIGZsYWcgd2hlbgorcnVubmluZyB0aGUgdGVzdHMuCisK
KyoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dzLCBNYWMuCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3MvZmFxLm1kIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvZG9jcy9mYXEubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q0MmZmN2RiYWE4ZmFiZDBjYzY1MmZkNzA1Mjc5
ODE4NGU5NWM0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2Rv
Y3MvZmFxLm1kCkBAIC0wLDAgKzEsNzcwIEBACisjIEdvb2dsZXRlc3QgRkFRCisKKworIyMgV2h5
IHNob3VsZCB0ZXN0IGNhc2UgbmFtZXMgYW5kIHRlc3QgbmFtZXMgbm90IGNvbnRhaW4gdW5kZXJz
Y29yZT8KKworVW5kZXJzY29yZSAoYF9gKSBpcyBzcGVjaWFsLCBhcyBDKysgcmVzZXJ2ZXMgdGhl
IGZvbGxvd2luZyB0byBiZSB1c2VkIGJ5IHRoZQorY29tcGlsZXIgYW5kIHRoZSBzdGFuZGFyZCBs
aWJyYXJ5OgorCisxLiAgYW55IGlkZW50aWZpZXIgdGhhdCBzdGFydHMgd2l0aCBhbiBgX2AgZm9s
bG93ZWQgYnkgYW4gdXBwZXItY2FzZSBsZXR0ZXIsIGFuZAorMS4gIGFueSBpZGVudGlmaWVyIHRo
YXQgY29udGFpbnMgdHdvIGNvbnNlY3V0aXZlIHVuZGVyc2NvcmVzIChpLmUuIGBfX2ApCisgICAg
KmFueXdoZXJlKiBpbiBpdHMgbmFtZS4KKworVXNlciBjb2RlIGlzICpwcm9oaWJpdGVkKiBmcm9t
IHVzaW5nIHN1Y2ggaWRlbnRpZmllcnMuCisKK05vdyBsZXQncyBsb29rIGF0IHdoYXQgdGhpcyBt
ZWFucyBmb3IgYFRFU1RgIGFuZCBgVEVTVF9GYC4KKworQ3VycmVudGx5IGBURVNUKFRlc3RDYXNl
TmFtZSwgVGVzdE5hbWUpYCBnZW5lcmF0ZXMgYSBjbGFzcyBuYW1lZAorYFRlc3RDYXNlTmFtZV9U
ZXN0TmFtZV9UZXN0YC4gV2hhdCBoYXBwZW5zIGlmIGBUZXN0Q2FzZU5hbWVgIG9yIGBUZXN0TmFt
ZWAKK2NvbnRhaW5zIGBfYD8KKworMS4gIElmIGBUZXN0Q2FzZU5hbWVgIHN0YXJ0cyB3aXRoIGFu
IGBfYCBmb2xsb3dlZCBieSBhbiB1cHBlci1jYXNlIGxldHRlciAoc2F5LAorICAgIGBfRm9vYCks
IHdlIGVuZCB1cCB3aXRoIGBfRm9vX1Rlc3ROYW1lX1Rlc3RgLCB3aGljaCBpcyByZXNlcnZlZCBh
bmQgdGh1cworICAgIGludmFsaWQuCisxLiAgSWYgYFRlc3RDYXNlTmFtZWAgZW5kcyB3aXRoIGFu
IGBfYCAoc2F5LCBgRm9vX2ApLCB3ZSBnZXQKKyAgICBgRm9vX19UZXN0TmFtZV9UZXN0YCwgd2hp
Y2ggaXMgaW52YWxpZC4KKzEuICBJZiBgVGVzdE5hbWVgIHN0YXJ0cyB3aXRoIGFuIGBfYCAoc2F5
LCBgX0JhcmApLCB3ZSBnZXQKKyAgICBgVGVzdENhc2VOYW1lX19CYXJfVGVzdGAsIHdoaWNoIGlz
IGludmFsaWQuCisxLiAgSWYgYFRlc3ROYW1lYCBlbmRzIHdpdGggYW4gYF9gIChzYXksIGBCYXJf
YCksIHdlIGdldAorICAgIGBUZXN0Q2FzZU5hbWVfQmFyX19UZXN0YCwgd2hpY2ggaXMgaW52YWxp
ZC4KKworU28gY2xlYXJseSBgVGVzdENhc2VOYW1lYCBhbmQgYFRlc3ROYW1lYCBjYW5ub3Qgc3Rh
cnQgb3IgZW5kIHdpdGggYF9gIChBY3R1YWxseSwKK2BUZXN0Q2FzZU5hbWVgIGNhbiBzdGFydCB3
aXRoIGBfYCAtLSBhcyBsb25nIGFzIHRoZSBgX2AgaXNuJ3QgZm9sbG93ZWQgYnkgYW4KK3VwcGVy
LWNhc2UgbGV0dGVyLiBCdXQgdGhhdCdzIGdldHRpbmcgY29tcGxpY2F0ZWQuIFNvIGZvciBzaW1w
bGljaXR5IHdlIGp1c3Qgc2F5Cit0aGF0IGl0IGNhbm5vdCBzdGFydCB3aXRoIGBfYC4pLgorCitJ
dCBtYXkgc2VlbSBmaW5lIGZvciBgVGVzdENhc2VOYW1lYCBhbmQgYFRlc3ROYW1lYCB0byBjb250
YWluIGBfYCBpbiB0aGUgbWlkZGxlLgorSG93ZXZlciwgY29uc2lkZXIgdGhpczoKKworYGBgYysr
CitURVNUKFRpbWUsIEZsaWVzX0xpa2VfQW5fQXJyb3cpIHsgLi4uIH0KK1RFU1QoVGltZV9GbGll
cywgTGlrZV9Bbl9BcnJvdykgeyAuLi4gfQorYGBgCisKK05vdywgdGhlIHR3byBgVEVTVGBzIHdp
bGwgYm90aCBnZW5lcmF0ZSB0aGUgc2FtZSBjbGFzcworKGBUaW1lX0ZsaWVzX0xpa2VfQW5fQXJy
b3dfVGVzdGApLiBUaGF0J3Mgbm90IGdvb2QuCisKK1NvIGZvciBzaW1wbGljaXR5LCB3ZSBqdXN0
IGFzayB0aGUgdXNlcnMgdG8gYXZvaWQgYF9gIGluIGBUZXN0Q2FzZU5hbWVgIGFuZAorYFRlc3RO
YW1lYC4gVGhlIHJ1bGUgaXMgbW9yZSBjb25zdHJhaW5pbmcgdGhhbiBuZWNlc3NhcnksIGJ1dCBp
dCdzIHNpbXBsZSBhbmQKK2Vhc3kgdG8gcmVtZW1iZXIuIEl0IGFsc28gZ2l2ZXMgZ29vZ2xldGVz
dCBzb21lIHdpZ2dsZSByb29tIGluIGNhc2UgaXRzCitpbXBsZW1lbnRhdGlvbiBuZWVkcyB0byBj
aGFuZ2UgaW4gdGhlIGZ1dHVyZS4KKworSWYgeW91IHZpb2xhdGUgdGhlIHJ1bGUsIHRoZXJlIG1h
eSBub3QgYmUgaW1tZWRpYXRlIGNvbnNlcXVlbmNlcywgYnV0IHlvdXIgdGVzdAorbWF5IChqdXN0
IG1heSkgYnJlYWsgd2l0aCBhIG5ldyBjb21waWxlciAob3IgYSBuZXcgdmVyc2lvbiBvZiB0aGUg
Y29tcGlsZXIgeW91CithcmUgdXNpbmcpIG9yIHdpdGggYSBuZXcgdmVyc2lvbiBvZiBnb29nbGV0
ZXN0LiBUaGVyZWZvcmUgaXQncyBiZXN0IHRvIGZvbGxvdwordGhlIHJ1bGUuCisKKyMjIFdoeSBk
b2VzIGdvb2dsZXRlc3Qgc3VwcG9ydCBgRVhQRUNUX0VRKE5VTEwsIHB0cilgIGFuZCBgQVNTRVJU
X0VRKE5VTEwsIHB0cilgIGJ1dCBub3QgYEVYUEVDVF9ORShOVUxMLCBwdHIpYCBhbmQgYEFTU0VS
VF9ORShOVUxMLCBwdHIpYD8KKworRmlyc3Qgb2YgYWxsIHlvdSBjYW4gdXNlIGBFWFBFQ1RfTkUo
bnVsbHB0ciwgcHRyKWAgYW5kIGBBU1NFUlRfTkUobnVsbHB0ciwKK3B0cilgLiBUaGlzIGlzIHRo
ZSBwcmVmZXJyZWQgc3ludGF4IGluIHRoZSBzdHlsZSBndWlkZSBiZWNhdXNlIG51bGxwdHIgZG9l
cyBub3QKK2hhdmUgdGhlIHR5cGUgcHJvYmxlbXMgdGhhdCBOVUxMIGRvZXMuIFdoaWNoIGlzIHdo
eSBOVUxMIGRvZXMgbm90IHdvcmsuCisKK0R1ZSB0byBzb21lIHBlY3VsaWFyaXR5IG9mIEMrKywg
aXQgcmVxdWlyZXMgc29tZSBub24tdHJpdmlhbCB0ZW1wbGF0ZSBtZXRhCitwcm9ncmFtbWluZyB0
cmlja3MgdG8gc3VwcG9ydCB1c2luZyBgTlVMTGAgYXMgYW4gYXJndW1lbnQgb2YgdGhlIGBFWFBF
Q1RfWFgoKWAKK2FuZCBgQVNTRVJUX1hYKClgIG1hY3Jvcy4gVGhlcmVmb3JlIHdlIG9ubHkgZG8g
aXQgd2hlcmUgaXQncyBtb3N0IG5lZWRlZAorKG90aGVyd2lzZSB3ZSBtYWtlIHRoZSBpbXBsZW1l
bnRhdGlvbiBvZiBnb29nbGV0ZXN0IGhhcmRlciB0byBtYWludGFpbiBhbmQgbW9yZQorZXJyb3It
cHJvbmUgdGhhbiBuZWNlc3NhcnkpLgorCitUaGUgYEVYUEVDVF9FUSgpYCBtYWNybyB0YWtlcyB0
aGUgKmV4cGVjdGVkKiB2YWx1ZSBhcyBpdHMgZmlyc3QgYXJndW1lbnQgYW5kIHRoZQorKmFjdHVh
bCogdmFsdWUgYXMgdGhlIHNlY29uZC4gSXQncyByZWFzb25hYmxlIHRoYXQgc29tZW9uZSB3YW50
cyB0byB3cml0ZQorYEVYUEVDVF9FUShOVUxMLCBzb21lX2V4cHJlc3Npb24pYCwgYW5kIHRoaXMg
aW5kZWVkIHdhcyByZXF1ZXN0ZWQgc2V2ZXJhbCB0aW1lcy4KK1RoZXJlZm9yZSB3ZSBpbXBsZW1l
bnRlZCBpdC4KKworVGhlIG5lZWQgZm9yIGBFWFBFQ1RfTkUoTlVMTCwgcHRyKWAgaXNuJ3QgbmVh
cmx5IGFzIHN0cm9uZy4gV2hlbiB0aGUgYXNzZXJ0aW9uCitmYWlscywgeW91IGFscmVhZHkga25v
dyB0aGF0IGBwdHJgIG11c3QgYmUgYE5VTExgLCBzbyBpdCBkb2Vzbid0IGFkZCBhbnkKK2luZm9y
bWF0aW9uIHRvIHByaW50IGBwdHJgIGluIHRoaXMgY2FzZS4gVGhhdCBtZWFucyBgRVhQRUNUX1RS
VUUocHRyICE9IE5VTEwpYAord29ya3MganVzdCBhcyB3ZWxsLgorCitJZiB3ZSB3ZXJlIHRvIHN1
cHBvcnQgYEVYUEVDVF9ORShOVUxMLCBwdHIpYCwgZm9yIGNvbnNpc3RlbmN5IHdlJ2xsIGhhdmUg
dG8KK3N1cHBvcnQgYEVYUEVDVF9ORShwdHIsIE5VTEwpYCBhcyB3ZWxsLCBhcyB1bmxpa2UgYEVY
UEVDVF9FUWAsIHdlIGRvbid0IGhhdmUgYQorY29udmVudGlvbiBvbiB0aGUgb3JkZXIgb2YgdGhl
IHR3byBhcmd1bWVudHMgZm9yIGBFWFBFQ1RfTkVgLiBUaGlzIG1lYW5zIHVzaW5nCit0aGUgdGVt
cGxhdGUgbWV0YSBwcm9ncmFtbWluZyB0cmlja3MgdHdpY2UgaW4gdGhlIGltcGxlbWVudGF0aW9u
LCBtYWtpbmcgaXQgZXZlbgoraGFyZGVyIHRvIHVuZGVyc3RhbmQgYW5kIG1haW50YWluLiBXZSBi
ZWxpZXZlIHRoZSBiZW5lZml0IGRvZXNuJ3QganVzdGlmeSB0aGUKK2Nvc3QuCisKK0ZpbmFsbHks
IHdpdGggdGhlIGdyb3d0aCBvZiB0aGUgZ01vY2sgbWF0Y2hlciBsaWJyYXJ5LCB3ZSBhcmUgZW5j
b3VyYWdpbmcgcGVvcGxlCit0byB1c2UgdGhlIHVuaWZpZWQgYEVYUEVDVF9USEFUKHZhbHVlLCBt
YXRjaGVyKWAgc3ludGF4IG1vcmUgb2Z0ZW4gaW4gdGVzdHMuIE9uZQorc2lnbmlmaWNhbnQgYWR2
YW50YWdlIG9mIHRoZSBtYXRjaGVyIGFwcHJvYWNoIGlzIHRoYXQgbWF0Y2hlcnMgY2FuIGJlIGVh
c2lseQorY29tYmluZWQgdG8gZm9ybSBuZXcgbWF0Y2hlcnMsIHdoaWxlIHRoZSBgRVhQRUNUX05F
YCwgZXRjLCBtYWNyb3MgY2Fubm90IGJlCitlYXNpbHkgY29tYmluZWQuIFRoZXJlZm9yZSB3ZSB3
YW50IHRvIGludmVzdCBtb3JlIGluIHRoZSBtYXRjaGVycyB0aGFuIGluIHRoZQorYEVYUEVDVF9Y
WCgpYCBtYWNyb3MuCisKKyMjIEkgbmVlZCB0byB0ZXN0IHRoYXQgZGlmZmVyZW50IGltcGxlbWVu
dGF0aW9ucyBvZiBhbiBpbnRlcmZhY2Ugc2F0aXNmeSBzb21lIGNvbW1vbiByZXF1aXJlbWVudHMu
IFNob3VsZCBJIHVzZSB0eXBlZCB0ZXN0cyBvciB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzPwor
CitGb3IgdGVzdGluZyB2YXJpb3VzIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgc2FtZSBpbnRlcmZh
Y2UsIGVpdGhlciB0eXBlZCB0ZXN0cyBvcgordmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBjYW4g
Z2V0IGl0IGRvbmUuIEl0J3MgcmVhbGx5IHVwIHRvIHlvdSB0aGUgdXNlciB0bworZGVjaWRlIHdo
aWNoIGlzIG1vcmUgY29udmVuaWVudCBmb3IgeW91LCBkZXBlbmRpbmcgb24geW91ciBwYXJ0aWN1
bGFyIGNhc2UuIFNvbWUKK3JvdWdoIGd1aWRlbGluZXM6CisKKyogICBUeXBlZCB0ZXN0cyBjYW4g
YmUgZWFzaWVyIHRvIHdyaXRlIGlmIGluc3RhbmNlcyBvZiB0aGUgZGlmZmVyZW50CisgICAgaW1w
bGVtZW50YXRpb25zIGNhbiBiZSBjcmVhdGVkIHRoZSBzYW1lIHdheSwgbW9kdWxvIHRoZSB0eXBl
LiBGb3IgZXhhbXBsZSwKKyAgICBpZiBhbGwgdGhlc2UgaW1wbGVtZW50YXRpb25zIGhhdmUgYSBw
dWJsaWMgZGVmYXVsdCBjb25zdHJ1Y3RvciAoc3VjaCB0aGF0CisgICAgeW91IGNhbiB3cml0ZSBg
bmV3IFR5cGVQYXJhbWApLCBvciBpZiB0aGVpciBmYWN0b3J5IGZ1bmN0aW9ucyBoYXZlIHRoZSBz
YW1lCisgICAgZm9ybSAoZS5nLiBgQ3JlYXRlSW5zdGFuY2U8VHlwZVBhcmFtPigpYCkuCisqICAg
VmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBjYW4gYmUgZWFzaWVyIHRvIHdyaXRlIGlmIHlvdSBu
ZWVkIGRpZmZlcmVudCBjb2RlCisgICAgcGF0dGVybnMgdG8gY3JlYXRlIGRpZmZlcmVudCBpbXBs
ZW1lbnRhdGlvbnMnIGluc3RhbmNlcywgZS5nLiBgbmV3IEZvb2AgdnMKKyAgICBgbmV3IEJhcig1
KWAuIFRvIGFjY29tbW9kYXRlIGZvciB0aGUgZGlmZmVyZW5jZXMsIHlvdSBjYW4gd3JpdGUgZmFj
dG9yeQorICAgIGZ1bmN0aW9uIHdyYXBwZXJzIGFuZCBwYXNzIHRoZXNlIGZ1bmN0aW9uIHBvaW50
ZXJzIHRvIHRoZSB0ZXN0cyBhcyB0aGVpcgorICAgIHBhcmFtZXRlcnMuCisqICAgV2hlbiBhIHR5
cGVkIHRlc3QgZmFpbHMsIHRoZSBvdXRwdXQgaW5jbHVkZXMgdGhlIG5hbWUgb2YgdGhlIHR5cGUs
IHdoaWNoIGNhbgorICAgIGhlbHAgeW91IHF1aWNrbHkgaWRlbnRpZnkgd2hpY2ggaW1wbGVtZW50
YXRpb24gaXMgd3JvbmcuIFZhbHVlLXBhcmFtZXRlcml6ZWQKKyAgICB0ZXN0cyBjYW5ub3QgZG8g
dGhpcywgc28gdGhlcmUgeW91J2xsIGhhdmUgdG8gbG9vayBhdCB0aGUgaXRlcmF0aW9uIG51bWJl
cgorICAgIHRvIGtub3cgd2hpY2ggaW1wbGVtZW50YXRpb24gdGhlIGZhaWx1cmUgaXMgZnJvbSwg
d2hpY2ggaXMgbGVzcyBkaXJlY3QuCisqICAgSWYgeW91IG1ha2UgYSBtaXN0YWtlIHdyaXRpbmcg
YSB0eXBlZCB0ZXN0LCB0aGUgY29tcGlsZXIgZXJyb3JzIGNhbiBiZQorICAgIGhhcmRlciB0byBk
aWdlc3QsIGFzIHRoZSBjb2RlIGlzIHRlbXBsYXRpemVkLgorKiAgIFdoZW4gdXNpbmcgdHlwZWQg
dGVzdHMsIHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB5b3UgYXJlIHRlc3RpbmcgYWdhaW5zdCB0aGUK
KyAgICBpbnRlcmZhY2UgdHlwZSwgbm90IHRoZSBjb25jcmV0ZSB0eXBlcyAoaW4gb3RoZXIgd29y
ZHMsIHlvdSB3YW50IHRvIG1ha2UKKyAgICBzdXJlIGBpbXBsaWNpdF9jYXN0PE15SW50ZXJmYWNl
Kj4obXlfY29uY3JldGVfaW1wbClgIHdvcmtzLCBub3QganVzdCB0aGF0CisgICAgYG15X2NvbmNy
ZXRlX2ltcGxgIHdvcmtzKS4gSXQncyBsZXNzIGxpa2VseSB0byBtYWtlIG1pc3Rha2VzIGluIHRo
aXMgYXJlYQorICAgIHdoZW4gdXNpbmcgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KKworSSBo
b3BlIEkgZGlkbid0IGNvbmZ1c2UgeW91IG1vcmUuIDotKSBJZiB5b3UgZG9uJ3QgbWluZCwgSSdk
IHN1Z2dlc3QgeW91IHRvIGdpdmUKK2JvdGggYXBwcm9hY2hlcyBhIHRyeS4gUHJhY3RpY2UgaXMg
YSBtdWNoIGJldHRlciB3YXkgdG8gZ3Jhc3AgdGhlIHN1YnRsZQorZGlmZmVyZW5jZXMgYmV0d2Vl
biB0aGUgdHdvIHRvb2xzLiBPbmNlIHlvdSBoYXZlIHNvbWUgY29uY3JldGUgZXhwZXJpZW5jZSwg
eW91CitjYW4gbXVjaCBtb3JlIGVhc2lseSBkZWNpZGUgd2hpY2ggb25lIHRvIHVzZSB0aGUgbmV4
dCB0aW1lLgorCisjIyBNeSBkZWF0aCB0ZXN0cyBiZWNhbWUgdmVyeSBzbG93IC0gd2hhdCBoYXBw
ZW5lZD8KKworSW4gQXVndXN0IDIwMDggd2UgaGFkIHRvIHN3aXRjaCB0aGUgZGVmYXVsdCBkZWF0
aCB0ZXN0IHN0eWxlIGZyb20gYGZhc3RgIHRvCitgdGhyZWFkc2FmZWAsIGFzIHRoZSBmb3JtZXIg
aXMgbm8gbG9uZ2VyIHNhZmUgbm93IHRoYXQgdGhyZWFkZWQgbG9nZ2luZyBpcyB0aGUKK2RlZmF1
bHQuIFRoaXMgY2F1c2VkIG1hbnkgZGVhdGggdGVzdHMgdG8gc2xvdyBkb3duLiBVbmZvcnR1bmF0
ZWx5IHRoaXMgY2hhbmdlCit3YXMgbmVjZXNzYXJ5LgorCitQbGVhc2UgcmVhZCBbRml4aW5nIEZh
aWxpbmcgRGVhdGggVGVzdHNdKGRlYXRoX3Rlc3Rfc3R5bGVzLm1kKSBmb3Igd2hhdCB5b3UgY2Fu
Citkby4KKworIyMgSSBnb3Qgc29tZSBydW4tdGltZSBlcnJvcnMgYWJvdXQgaW52YWxpZCBwcm90
byBkZXNjcmlwdG9ycyB3aGVuIHVzaW5nIGBQcm90b2NvbE1lc3NhZ2VFcXVhbHNgLiBIZWxwIQor
CisqKk5vdGU6KiogYFByb3RvY29sTWVzc2FnZUVxdWFsc2AgYW5kIGBQcm90b2NvbE1lc3NhZ2VF
cXVpdmAgYXJlICpkZXByZWNhdGVkKgorbm93LiBQbGVhc2UgdXNlIGBFcXVhbHNQcm90b2AsIGV0
YyBpbnN0ZWFkLgorCitgUHJvdG9jb2xNZXNzYWdlRXF1YWxzYCBhbmQgYFByb3RvY29sTWVzc2Fn
ZUVxdWl2YCB3ZXJlIHJlZGVmaW5lZCByZWNlbnRseSBhbmQKK2FyZSBub3cgbGVzcyB0b2xlcmFu
dCBvbiBpbnZhbGlkIHByb3RvY29sIGJ1ZmZlciBkZWZpbml0aW9ucy4gSW4gcGFydGljdWxhciwg
aWYKK3lvdSBoYXZlIGEgYGZvby5wcm90b2AgdGhhdCBkb2Vzbid0IGZ1bGx5IHF1YWxpZnkgdGhl
IHR5cGUgb2YgYSBwcm90b2NvbCBtZXNzYWdlCitpdCByZWZlcmVuY2VzIChlLmcuIGBtZXNzYWdl
PEJhcj5gIHdoZXJlIGl0IHNob3VsZCBiZSBgbWVzc2FnZTxibGFoLkJhcj5gKSwgeW91Cit3aWxs
IG5vdyBnZXQgcnVuLXRpbWUgZXJyb3JzIGxpa2U6CisKK2BgYAorLi4uIGRlc2NyaXB0b3IuY2M6
Li4uXSBJbnZhbGlkIHByb3RvIGRlc2NyaXB0b3IgZm9yIGZpbGUgInBhdGgvdG8vZm9vLnByb3Rv
IjoKKy4uLiBkZXNjcmlwdG9yLmNjOi4uLl0gIGJsYWguTXlNZXNzYWdlLm15X2ZpZWxkOiAiLkJh
ciIgaXMgbm90IGRlZmluZWQuCitgYGAKKworSWYgeW91IHNlZSB0aGlzLCB5b3VyIGAucHJvdG9g
IGZpbGUgaXMgYnJva2VuIGFuZCBuZWVkcyB0byBiZSBmaXhlZCBieSBtYWtpbmcKK3RoZSB0eXBl
cyBmdWxseSBxdWFsaWZpZWQuIFRoZSBuZXcgZGVmaW5pdGlvbiBvZiBgUHJvdG9jb2xNZXNzYWdl
RXF1YWxzYCBhbmQKK2BQcm90b2NvbE1lc3NhZ2VFcXVpdmAganVzdCBoYXBwZW4gdG8gcmV2ZWFs
IHlvdXIgYnVnLgorCisjIyBNeSBkZWF0aCB0ZXN0IG1vZGlmaWVzIHNvbWUgc3RhdGUsIGJ1dCB0
aGUgY2hhbmdlIHNlZW1zIGxvc3QgYWZ0ZXIgdGhlIGRlYXRoIHRlc3QgZmluaXNoZXMuIFdoeT8K
KworRGVhdGggdGVzdHMgKGBFWFBFQ1RfREVBVEhgLCBldGMpIGFyZSBleGVjdXRlZCBpbiBhIHN1
Yi1wcm9jZXNzIHMudC4gdGhlCitleHBlY3RlZCBjcmFzaCB3b24ndCBraWxsIHRoZSB0ZXN0IHBy
b2dyYW0gKGkuZS4gdGhlIHBhcmVudCBwcm9jZXNzKS4gQXMgYQorcmVzdWx0LCBhbnkgaW4tbWVt
b3J5IHNpZGUgZWZmZWN0cyB0aGV5IGluY3VyIGFyZSBvYnNlcnZhYmxlIGluIHRoZWlyIHJlc3Bl
Y3RpdmUKK3N1Yi1wcm9jZXNzZXMsIGJ1dCBub3QgaW4gdGhlIHBhcmVudCBwcm9jZXNzLiBZb3Ug
Y2FuIHRoaW5rIG9mIHRoZW0gYXMgcnVubmluZworaW4gYSBwYXJhbGxlbCB1bml2ZXJzZSwgbW9y
ZSBvciBsZXNzLgorCitJbiBwYXJ0aWN1bGFyLCBpZiB5b3UgdXNlIFtnTW9ja10oLi4vLi4vZ29v
Z2xlbW9jaykgYW5kIHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudAoraW52b2tlcyBzb21lIG1vY2sg
bWV0aG9kcywgdGhlIHBhcmVudCBwcm9jZXNzIHdpbGwgdGhpbmsgdGhlIGNhbGxzIGhhdmUgbmV2
ZXIKK29jY3VycmVkLiBUaGVyZWZvcmUsIHlvdSBtYXkgd2FudCB0byBtb3ZlIHlvdXIgYEVYUEVD
VF9DQUxMYCBzdGF0ZW1lbnRzIGluc2lkZQordGhlIGBFWFBFQ1RfREVBVEhgIG1hY3JvLgorCisj
IyBFWFBFQ1RfRVEoaHRvbmwoYmxhaCksIGJsYWhfYmxhaCkgZ2VuZXJhdGVzIHdlaXJkIGNvbXBp
bGVyIGVycm9ycyBpbiBvcHQgbW9kZS4gSXMgdGhpcyBhIGdvb2dsZXRlc3QgYnVnPworCitBY3R1
YWxseSwgdGhlIGJ1ZyBpcyBpbiBgaHRvbmwoKWAuCisKK0FjY29yZGluZyB0byBgJ21hbiBodG9u
bCdgLCBgaHRvbmwoKWAgaXMgYSAqZnVuY3Rpb24qLCB3aGljaCBtZWFucyBpdCdzIHZhbGlkIHRv
Cit1c2UgYGh0b25sYCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuIEhvd2V2ZXIsIGluIG9wdCBtb2Rl
IGBodG9ubCgpYCBpcyBkZWZpbmVkIGFzCithICptYWNybyosIHdoaWNoIGJyZWFrcyB0aGlzIHVz
YWdlLgorCitXb3JzZSwgdGhlIG1hY3JvIGRlZmluaXRpb24gb2YgYGh0b25sKClgIHVzZXMgYSBg
Z2NjYCBleHRlbnNpb24gYW5kIGlzICpub3QqCitzdGFuZGFyZCBDKysuIFRoYXQgaGFja3kgaW1w
bGVtZW50YXRpb24gaGFzIHNvbWUgYWQgaG9jIGxpbWl0YXRpb25zLiBJbgorcGFydGljdWxhciwg
aXQgcHJldmVudHMgeW91IGZyb20gd3JpdGluZyBgRm9vPHNpemVvZihodG9ubCh4KSk+KClgLCB3
aGVyZSBgRm9vYAoraXMgYSB0ZW1wbGF0ZSB0aGF0IGhhcyBhbiBpbnRlZ3JhbCBhcmd1bWVudC4K
KworVGhlIGltcGxlbWVudGF0aW9uIG9mIGBFWFBFQ1RfRVEoYSwgYilgIHVzZXMgYHNpemVvZigu
Li4gYSAuLi4pYCBpbnNpZGUgYQordGVtcGxhdGUgYXJndW1lbnQsIGFuZCB0aHVzIGRvZXNuJ3Qg
Y29tcGlsZSBpbiBvcHQgbW9kZSB3aGVuIGBhYCBjb250YWlucyBhIGNhbGwKK3RvIGBodG9ubCgp
YC4gSXQgaXMgZGlmZmljdWx0IHRvIG1ha2UgYEVYUEVDVF9FUWAgYnlwYXNzIHRoZSBgaHRvbmwo
KWAgYnVnLCBhcwordGhlIHNvbHV0aW9uIG11c3Qgd29yayB3aXRoIGRpZmZlcmVudCBjb21waWxl
cnMgb24gdmFyaW91cyBwbGF0Zm9ybXMuCisKK2BodG9ubCgpYCBoYXMgc29tZSBvdGhlciBwcm9i
bGVtcyBhcyBkZXNjcmliZWQgaW4gYC8vdXRpbC9lbmRpYW4vZW5kaWFuLmhgLAord2hpY2ggZGVm
aW5lcyBgZ2h0b25sKClgIHRvIHJlcGxhY2UgaXQuIGBnaHRvbmwoKWAgZG9lcyB0aGUgc2FtZSB0
aGluZyBgaHRvbmwoKWAKK2RvZXMsIG9ubHkgd2l0aG91dCBpdHMgcHJvYmxlbXMuIFdlIHN1Z2dl
c3QgeW91IHRvIHVzZSBgZ2h0b25sKClgIGluc3RlYWQgb2YKK2BodG9ubCgpYCwgYm90aCBpbiB5
b3VyIHRlc3RzIGFuZCBwcm9kdWN0aW9uIGNvZGUuCisKK2AvL3V0aWwvZW5kaWFuL2VuZGlhbi5o
YCBhbHNvIGRlZmluZXMgYGdodG9ucygpYCwgd2hpY2ggc29sdmVzIHNpbWlsYXIgcHJvYmxlbXMK
K2luIGBodG9ucygpYC4KKworRG9uJ3QgZm9yZ2V0IHRvIGFkZCBgLy91dGlsL2VuZGlhbmAgdG8g
dGhlIGxpc3Qgb2YgZGVwZW5kZW5jaWVzIGluIHRoZSBgQlVJTERgCitmaWxlIHdoZXJldmVyIGBn
aHRvbmwoKWAgYW5kIGBnaHRvbnMoKWAgYXJlIHVzZWQuIFRoZSBsaWJyYXJ5IGNvbnNpc3RzIG9m
IGEKK3NpbmdsZSBoZWFkZXIgZmlsZSBhbmQgd2lsbCBub3QgYmxvYXQgeW91ciBiaW5hcnkuCisK
KyMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgInVuZGVmaW5lZCByZWZlcmVuY2VzIiB0
byBzb21lIHN0YXRpYyBjb25zdCBtZW1iZXIgdmFyaWFibGVzLCBidXQgSSBkaWQgZGVmaW5lIHRo
ZW0gaW4gdGhlIGNsYXNzIGJvZHkuIFdoYXQncyB3cm9uZz8KKworSWYgeW91ciBjbGFzcyBoYXMg
YSBzdGF0aWMgZGF0YSBtZW1iZXI6CisKK2BgYGMrKworLy8gZm9vLmgKK2NsYXNzIEZvbyB7Cisg
IC4uLgorICBzdGF0aWMgY29uc3QgaW50IGtCYXIgPSAxMDA7Cit9OworYGBgCisKK1lvdSBhbHNv
IG5lZWQgdG8gZGVmaW5lIGl0ICpvdXRzaWRlKiBvZiB0aGUgY2xhc3MgYm9keSBpbiBgZm9vLmNj
YDoKKworYGBgYysrCitjb25zdCBpbnQgRm9vOjprQmFyOyAgLy8gTm8gaW5pdGlhbGl6ZXIgaGVy
ZS4KK2BgYAorCitPdGhlcndpc2UgeW91ciBjb2RlIGlzICoqaW52YWxpZCBDKysqKiwgYW5kIG1h
eSBicmVhayBpbiB1bmV4cGVjdGVkIHdheXMuIEluCitwYXJ0aWN1bGFyLCB1c2luZyBpdCBpbiBn
b29nbGV0ZXN0IGNvbXBhcmlzb24gYXNzZXJ0aW9ucyAoYEVYUEVDVF9FUWAsIGV0Yykgd2lsbAor
Z2VuZXJhdGUgYW4gInVuZGVmaW5lZCByZWZlcmVuY2UiIGxpbmtlciBlcnJvci4gVGhlIGZhY3Qg
dGhhdCAiaXQgdXNlZCB0byB3b3JrIgorZG9lc24ndCBtZWFuIGl0J3MgdmFsaWQuIEl0IGp1c3Qg
bWVhbnMgdGhhdCB5b3Ugd2VyZSBsdWNreS4gOi0pCisKKyMjIENhbiBJIGRlcml2ZSBhIHRlc3Qg
Zml4dHVyZSBmcm9tIGFub3RoZXI/CisKK1llcy4KKworRWFjaCB0ZXN0IGZpeHR1cmUgaGFzIGEg
Y29ycmVzcG9uZGluZyBhbmQgc2FtZSBuYW1lZCB0ZXN0IGNhc2UuIFRoaXMgbWVhbnMgb25seQor
b25lIHRlc3QgY2FzZSBjYW4gdXNlIGEgcGFydGljdWxhciBmaXh0dXJlLiBTb21ldGltZXMsIGhv
d2V2ZXIsIG11bHRpcGxlIHRlc3QKK2Nhc2VzIG1heSB3YW50IHRvIHVzZSB0aGUgc2FtZSBvciBz
bGlnaHRseSBkaWZmZXJlbnQgZml4dHVyZXMuIEZvciBleGFtcGxlLCB5b3UKK21heSB3YW50IHRv
IG1ha2Ugc3VyZSB0aGF0IGFsbCBvZiBhIEdVSSBsaWJyYXJ5J3MgdGVzdCBjYXNlcyBkb24ndCBs
ZWFrCitpbXBvcnRhbnQgc3lzdGVtIHJlc291cmNlcyBsaWtlIGZvbnRzIGFuZCBicnVzaGVzLgor
CitJbiBnb29nbGV0ZXN0LCB5b3Ugc2hhcmUgYSBmaXh0dXJlIGFtb25nIHRlc3QgY2FzZXMgYnkg
cHV0dGluZyB0aGUgc2hhcmVkIGxvZ2ljCitpbiBhIGJhc2UgdGVzdCBmaXh0dXJlLCB0aGVuIGRl
cml2aW5nIGZyb20gdGhhdCBiYXNlIGEgc2VwYXJhdGUgZml4dHVyZSBmb3IgZWFjaAordGVzdCBj
YXNlIHRoYXQgd2FudHMgdG8gdXNlIHRoaXMgY29tbW9uIGxvZ2ljLiBZb3UgdGhlbiB1c2UgYFRF
U1RfRigpYCB0byB3cml0ZQordGVzdHMgdXNpbmcgZWFjaCBkZXJpdmVkIGZpeHR1cmUuCisKK1R5
cGljYWxseSwgeW91ciBjb2RlIGxvb2tzIGxpa2UgdGhpczoKKworYGBgYysrCisvLyBEZWZpbmVz
IGEgYmFzZSB0ZXN0IGZpeHR1cmUuCitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLi4uCit9OworCisvLyBEZXJpdmVzIGEgZml4dHVyZSBG
b29UZXN0IGZyb20gQmFzZVRlc3QuCitjbGFzcyBGb29UZXN0IDogcHVibGljIEJhc2VUZXN0IHsK
KyBwcm90ZWN0ZWQ6CisgIHZvaWQgU2V0VXAoKSBvdmVycmlkZSB7CisgICAgQmFzZVRlc3Q6OlNl
dFVwKCk7ICAvLyBTZXRzIHVwIHRoZSBiYXNlIGZpeHR1cmUgZmlyc3QuCisgICAgLi4uIGFkZGl0
aW9uYWwgc2V0LXVwIHdvcmsgLi4uCisgIH0KKworICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUg
eworICAgIC4uLiBjbGVhbi11cCB3b3JrIGZvciBGb29UZXN0IC4uLgorICAgIEJhc2VUZXN0OjpU
ZWFyRG93bigpOyAgLy8gUmVtZW1iZXIgdG8gdGVhciBkb3duIHRoZSBiYXNlIGZpeHR1cmUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFmdGVyIGNsZWFuaW5nIHVwIEZvb1Rlc3QhCisg
IH0KKworICAuLi4gZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMgZm9yIEZvb1Rlc3QgLi4uCit9Owor
CisvLyBUZXN0cyB0aGF0IHVzZSB0aGUgZml4dHVyZSBGb29UZXN0LgorVEVTVF9GKEZvb1Rlc3Qs
IEJhcikgeyAuLi4gfQorVEVTVF9GKEZvb1Rlc3QsIEJheikgeyAuLi4gfQorCisuLi4gYWRkaXRp
b25hbCBmaXh0dXJlcyBkZXJpdmVkIGZyb20gQmFzZVRlc3QgLi4uCitgYGAKKworSWYgbmVjZXNz
YXJ5LCB5b3UgY2FuIGNvbnRpbnVlIHRvIGRlcml2ZSB0ZXN0IGZpeHR1cmVzIGZyb20gYSBkZXJp
dmVkIGZpeHR1cmUuCitnb29nbGV0ZXN0IGhhcyBubyBsaW1pdCBvbiBob3cgZGVlcCB0aGUgaGll
cmFyY2h5IGNhbiBiZS4KKworRm9yIGEgY29tcGxldGUgZXhhbXBsZSB1c2luZyBkZXJpdmVkIHRl
c3QgZml4dHVyZXMsIHNlZSBbZ29vZ2xldGVzdAorc2FtcGxlXShodHRwczovL2dpdGh1Yi5jb20v
Z29vZ2xlL2dvb2dsZXRlc3QvYmxvYi9tYXN0ZXIvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTVf
dW5pdHRlc3QuY2MpCisKKyMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyAidm9pZCB2YWx1ZSBub3Qg
aWdub3JlZCBhcyBpdCBvdWdodCB0byBiZS4iIFdoYXQgZG9lcyB0aGlzIG1lYW4/CisKK1lvdSdy
ZSBwcm9iYWJseSB1c2luZyBhbiBgQVNTRVJUXyooKWAgaW4gYSBmdW5jdGlvbiB0aGF0IGRvZXNu
J3QgcmV0dXJuIGB2b2lkYC4KK2BBU1NFUlRfKigpYCBjYW4gb25seSBiZSB1c2VkIGluIGB2b2lk
YCBmdW5jdGlvbnMsIGR1ZSB0byBleGNlcHRpb25zIGJlaW5nCitkaXNhYmxlZCBieSBvdXIgYnVp
bGQgc3lzdGVtLiBQbGVhc2Ugc2VlIG1vcmUgZGV0YWlscworW2hlcmVdKGFkdmFuY2VkLm1kI2Fz
c2VydGlvbi1wbGFjZW1lbnQpLgorCisjIyBNeSBkZWF0aCB0ZXN0IGhhbmdzIChvciBzZWctZmF1
bHRzKS4gSG93IGRvIEkgZml4IGl0PworCitJbiBnb29nbGV0ZXN0LCBkZWF0aCB0ZXN0cyBhcmUg
cnVuIGluIGEgY2hpbGQgcHJvY2VzcyBhbmQgdGhlIHdheSB0aGV5IHdvcmsgaXMKK2RlbGljYXRl
LiBUbyB3cml0ZSBkZWF0aCB0ZXN0cyB5b3UgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZCBob3cg
dGhleSB3b3JrLgorUGxlYXNlIG1ha2Ugc3VyZSB5b3UgaGF2ZSByZWFkIFt0aGlzXShhZHZhbmNl
ZC5tZCNob3ctaXQtd29ya3MpLgorCitJbiBwYXJ0aWN1bGFyLCBkZWF0aCB0ZXN0cyBkb24ndCBs
aWtlIGhhdmluZyBtdWx0aXBsZSB0aHJlYWRzIGluIHRoZSBwYXJlbnQKK3Byb2Nlc3MuIFNvIHRo
ZSBmaXJzdCB0aGluZyB5b3UgY2FuIHRyeSBpcyB0byBlbGltaW5hdGUgY3JlYXRpbmcgdGhyZWFk
cyBvdXRzaWRlCitvZiBgRVhQRUNUX0RFQVRIKClgLiBGb3IgZXhhbXBsZSwgeW91IG1heSB3YW50
IHRvIHVzZSBbbW9ja3NdKC4uLy4uL2dvb2dsZW1vY2spCitvciBmYWtlIG9iamVjdHMgaW5zdGVh
ZCBvZiByZWFsIG9uZXMgaW4geW91ciB0ZXN0cy4KKworU29tZXRpbWVzIHRoaXMgaXMgaW1wb3Nz
aWJsZSBhcyBzb21lIGxpYnJhcnkgeW91IG11c3QgdXNlIG1heSBiZSBjcmVhdGluZwordGhyZWFk
cyBiZWZvcmUgYG1haW4oKWAgaXMgZXZlbiByZWFjaGVkLiBJbiB0aGlzIGNhc2UsIHlvdSBjYW4g
dHJ5IHRvIG1pbmltaXplCit0aGUgY2hhbmNlIG9mIGNvbmZsaWN0cyBieSBlaXRoZXIgbW92aW5n
IGFzIG1hbnkgYWN0aXZpdGllcyBhcyBwb3NzaWJsZSBpbnNpZGUKK2BFWFBFQ1RfREVBVEgoKWAg
KGluIHRoZSBleHRyZW1lIGNhc2UsIHlvdSB3YW50IHRvIG1vdmUgZXZlcnl0aGluZyBpbnNpZGUp
LCBvcgorbGVhdmluZyBhcyBmZXcgdGhpbmdzIGFzIHBvc3NpYmxlIGluIGl0LiBBbHNvLCB5b3Ug
Y2FuIHRyeSB0byBzZXQgdGhlIGRlYXRoIHRlc3QKK3N0eWxlIHRvIGAidGhyZWFkc2FmZSJgLCB3
aGljaCBpcyBzYWZlciBidXQgc2xvd2VyLCBhbmQgc2VlIGlmIGl0IGhlbHBzLgorCitJZiB5b3Ug
Z28gd2l0aCB0aHJlYWQtc2FmZSBkZWF0aCB0ZXN0cywgcmVtZW1iZXIgdGhhdCB0aGV5IHJlcnVu
IHRoZSB0ZXN0Citwcm9ncmFtIGZyb20gdGhlIGJlZ2lubmluZyBpbiB0aGUgY2hpbGQgcHJvY2Vz
cy4gVGhlcmVmb3JlIG1ha2Ugc3VyZSB5b3VyCitwcm9ncmFtIGNhbiBydW4gc2lkZS1ieS1zaWRl
IHdpdGggaXRzZWxmIGFuZCBpcyBkZXRlcm1pbmlzdGljLgorCitJbiB0aGUgZW5kLCB0aGlzIGJv
aWxzIGRvd24gdG8gZ29vZCBjb25jdXJyZW50IHByb2dyYW1taW5nLiBZb3UgaGF2ZSB0byBtYWtl
CitzdXJlIHRoYXQgdGhlcmUgaXMgbm8gcmFjZSBjb25kaXRpb25zIG9yIGRlYWQgbG9ja3MgaW4g
eW91ciBwcm9ncmFtLiBObyBzaWx2ZXIKK2J1bGxldCAtIHNvcnJ5IQorCisjIyBTaG91bGQgSSB1
c2UgdGhlIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3Igb2YgdGhlIHRlc3QgZml4dHVyZSBvciBTZXRV
cCgpL1RlYXJEb3duKCk/CisKK1RoZSBmaXJzdCB0aGluZyB0byByZW1lbWJlciBpcyB0aGF0IGdv
b2dsZXRlc3QgZG9lcyAqKm5vdCoqIHJldXNlIHRoZSBzYW1lIHRlc3QKK2ZpeHR1cmUgb2JqZWN0
IGFjcm9zcyBtdWx0aXBsZSB0ZXN0cy4gRm9yIGVhY2ggYFRFU1RfRmAsIGdvb2dsZXRlc3Qgd2ls
bCBjcmVhdGUKK2EgKipmcmVzaCoqIHRlc3QgZml4dHVyZSBvYmplY3QsIGltbWVkaWF0ZWx5IGNh
bGwgYFNldFVwKClgLCBydW4gdGhlIHRlc3QgYm9keSwKK2NhbGwgYFRlYXJEb3duKClgLCBhbmQg
dGhlbiBkZWxldGUgdGhlIHRlc3QgZml4dHVyZSBvYmplY3QuCisKK1doZW4geW91IG5lZWQgdG8g
d3JpdGUgcGVyLXRlc3Qgc2V0LXVwIGFuZCB0ZWFyLWRvd24gbG9naWMsIHlvdSBoYXZlIHRoZSBj
aG9pY2UKK2JldHdlZW4gdXNpbmcgdGhlIHRlc3QgZml4dHVyZSBjb25zdHJ1Y3Rvci9kZXN0cnVj
dG9yIG9yIGBTZXRVcCgpL1RlYXJEb3duKClgLgorVGhlIGZvcm1lciBpcyB1c3VhbGx5IHByZWZl
cnJlZCwgYXMgaXQgaGFzIHRoZSBmb2xsb3dpbmcgYmVuZWZpdHM6CisKKyogICBCeSBpbml0aWFs
aXppbmcgYSBtZW1iZXIgdmFyaWFibGUgaW4gdGhlIGNvbnN0cnVjdG9yLCB3ZSBoYXZlIHRoZSBv
cHRpb24gdG8KKyAgICBtYWtlIGl0IGBjb25zdGAsIHdoaWNoIGhlbHBzIHByZXZlbnQgYWNjaWRl
bnRhbCBjaGFuZ2VzIHRvIGl0cyB2YWx1ZSBhbmQKKyAgICBtYWtlcyB0aGUgdGVzdHMgbW9yZSBv
YnZpb3VzbHkgY29ycmVjdC4KKyogICBJbiBjYXNlIHdlIG5lZWQgdG8gc3ViY2xhc3MgdGhlIHRl
c3QgZml4dHVyZSBjbGFzcywgdGhlIHN1YmNsYXNzJworICAgIGNvbnN0cnVjdG9yIGlzIGd1YXJh
bnRlZWQgdG8gY2FsbCB0aGUgYmFzZSBjbGFzcycgY29uc3RydWN0b3IgKmZpcnN0KiwgYW5kCisg
ICAgdGhlIHN1YmNsYXNzJyBkZXN0cnVjdG9yIGlzIGd1YXJhbnRlZWQgdG8gY2FsbCB0aGUgYmFz
ZSBjbGFzcycgZGVzdHJ1Y3RvcgorICAgICphZnRlcndhcmQqLiBXaXRoIGBTZXRVcCgpL1RlYXJE
b3duKClgLCBhIHN1YmNsYXNzIG1heSBtYWtlIHRoZSBtaXN0YWtlIG9mCisgICAgZm9yZ2V0dGlu
ZyB0byBjYWxsIHRoZSBiYXNlIGNsYXNzJyBgU2V0VXAoKS9UZWFyRG93bigpYCBvciBjYWxsIHRo
ZW0gYXQgdGhlCisgICAgd3JvbmcgdGltZS4KKworWW91IG1heSBzdGlsbCB3YW50IHRvIHVzZSBg
U2V0VXAoKS9UZWFyRG93bigpYCBpbiB0aGUgZm9sbG93aW5nIHJhcmUgY2FzZXM6CisKKyogICBJ
biB0aGUgYm9keSBvZiBhIGNvbnN0cnVjdG9yIChvciBkZXN0cnVjdG9yKSwgaXQncyBub3QgcG9z
c2libGUgdG8gdXNlIHRoZQorICAgIGBBU1NFUlRfeHhgIG1hY3Jvcy4gVGhlcmVmb3JlLCBpZiB0
aGUgc2V0LXVwIG9wZXJhdGlvbiBjb3VsZCBjYXVzZSBhIGZhdGFsCisgICAgdGVzdCBmYWlsdXJl
IHRoYXQgc2hvdWxkIHByZXZlbnQgdGhlIHRlc3QgZnJvbSBydW5uaW5nLCBpdCdzIG5lY2Vzc2Fy
eSB0bworICAgIHVzZSBhIGBDSEVDS2AgbWFjcm8gb3IgdG8gdXNlIGBTZXRVcCgpYCBpbnN0ZWFk
IG9mIGEgY29uc3RydWN0b3IuCisqICAgSWYgdGhlIHRlYXItZG93biBvcGVyYXRpb24gY291bGQg
dGhyb3cgYW4gZXhjZXB0aW9uLCB5b3UgbXVzdCB1c2UKKyAgICBgVGVhckRvd24oKWAgYXMgb3Bw
b3NlZCB0byB0aGUgZGVzdHJ1Y3RvciwgYXMgdGhyb3dpbmcgaW4gYSBkZXN0cnVjdG9yIGxlYWRz
CisgICAgdG8gdW5kZWZpbmVkIGJlaGF2aW9yIGFuZCB1c3VhbGx5IHdpbGwga2lsbCB5b3VyIHBy
b2dyYW0gcmlnaHQgYXdheS4gTm90ZQorICAgIHRoYXQgbWFueSBzdGFuZGFyZCBsaWJyYXJpZXMg
KGxpa2UgU1RMKSBtYXkgdGhyb3cgd2hlbiBleGNlcHRpb25zIGFyZQorICAgIGVuYWJsZWQgaW4g
dGhlIGNvbXBpbGVyLiBUaGVyZWZvcmUgeW91IHNob3VsZCBwcmVmZXIgYFRlYXJEb3duKClgIGlm
IHlvdQorICAgIHdhbnQgdG8gd3JpdGUgcG9ydGFibGUgdGVzdHMgdGhhdCB3b3JrIHdpdGggb3Ig
d2l0aG91dCBleGNlcHRpb25zLgorKiAgIFRoZSBnb29nbGV0ZXN0IHRlYW0gaXMgY29uc2lkZXJp
bmcgbWFraW5nIHRoZSBhc3NlcnRpb24gbWFjcm9zIHRocm93IG9uCisgICAgcGxhdGZvcm1zIHdo
ZXJlIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQgKGUuZy4gV2luZG93cywgTWFjIE9TLCBhbmQgTGlu
dXgKKyAgICBjbGllbnQtc2lkZSksIHdoaWNoIHdpbGwgZWxpbWluYXRlIHRoZSBuZWVkIGZvciB0
aGUgdXNlciB0byBwcm9wYWdhdGUKKyAgICBmYWlsdXJlcyBmcm9tIGEgc3Vicm91dGluZSB0byBp
dHMgY2FsbGVyLiBUaGVyZWZvcmUsIHlvdSBzaG91bGRuJ3QgdXNlCisgICAgZ29vZ2xldGVzdCBh
c3NlcnRpb25zIGluIGEgZGVzdHJ1Y3RvciBpZiB5b3VyIGNvZGUgY291bGQgcnVuIG9uIHN1Y2gg
YQorICAgIHBsYXRmb3JtLgorKiAgIEluIGEgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciwgeW91
IGNhbm5vdCBtYWtlIGEgdmlydHVhbCBmdW5jdGlvbiBjYWxsIG9uCisgICAgdGhpcyBvYmplY3Qu
IChZb3UgY2FuIGNhbGwgYSBtZXRob2QgZGVjbGFyZWQgYXMgdmlydHVhbCwgYnV0IGl0IHdpbGwg
YmUKKyAgICBzdGF0aWNhbGx5IGJvdW5kLikgVGhlcmVmb3JlLCBpZiB5b3UgbmVlZCB0byBjYWxs
IGEgbWV0aG9kIHRoYXQgd2lsbCBiZQorICAgIG92ZXJyaWRkZW4gaW4gYSBkZXJpdmVkIGNsYXNz
LCB5b3UgaGF2ZSB0byB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAuCisKKworIyMgVGhlIGNvbXBp
bGVyIGNvbXBsYWlucyAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gdG8gY2FsbCIgd2hlbiBJIHVzZSBB
U1NFUlRfUFJFRCouIEhvdyBkbyBJIGZpeCBpdD8KKworSWYgdGhlIHByZWRpY2F0ZSBmdW5jdGlv
biB5b3UgdXNlIGluIGBBU1NFUlRfUFJFRCpgIG9yIGBFWFBFQ1RfUFJFRCpgIGlzCitvdmVybG9h
ZGVkIG9yIGEgdGVtcGxhdGUsIHRoZSBjb21waWxlciB3aWxsIGhhdmUgdHJvdWJsZSBmaWd1cmlu
ZyBvdXQgd2hpY2gKK292ZXJsb2FkZWQgdmVyc2lvbiBpdCBzaG91bGQgdXNlLiBgQVNTRVJUX1BS
RURfRk9STUFUKmAgYW5kCitgRVhQRUNUX1BSRURfRk9STUFUKmAgZG9uJ3QgaGF2ZSB0aGlzIHBy
b2JsZW0uCisKK0lmIHlvdSBzZWUgdGhpcyBlcnJvciwgeW91IG1pZ2h0IHdhbnQgdG8gc3dpdGNo
IHRvCitgKEFTU0VSVHxFWFBFQ1QpX1BSRURfRk9STUFUKmAsIHdoaWNoIHdpbGwgYWxzbyBnaXZl
IHlvdSBhIGJldHRlciBmYWlsdXJlCittZXNzYWdlLiBJZiwgaG93ZXZlciwgdGhhdCBpcyBub3Qg
YW4gb3B0aW9uLCB5b3UgY2FuIHJlc29sdmUgdGhlIHByb2JsZW0gYnkKK2V4cGxpY2l0bHkgdGVs
bGluZyB0aGUgY29tcGlsZXIgd2hpY2ggdmVyc2lvbiB0byBwaWNrLgorCitGb3IgZXhhbXBsZSwg
c3VwcG9zZSB5b3UgaGF2ZQorCitgYGBjKysKK2Jvb2wgSXNQb3NpdGl2ZShpbnQgbikgeworICBy
ZXR1cm4gbiA+IDA7Cit9CisKK2Jvb2wgSXNQb3NpdGl2ZShkb3VibGUgeCkgeworICByZXR1cm4g
eCA+IDA7Cit9CitgYGAKKworeW91IHdpbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IgaWYgeW91IHdy
aXRlCisKK2BgYGMrKworRVhQRUNUX1BSRUQxKElzUG9zaXRpdmUsIDUpOworYGBgCisKK0hvd2V2
ZXIsIHRoaXMgd2lsbCB3b3JrOgorCitgYGBjKysKK0VYUEVDVF9QUkVEMShzdGF0aWNfY2FzdDxi
b29sICgqKShpbnQpPihJc1Bvc2l0aXZlKSwgNSk7CitgYGAKKworKFRoZSBzdHVmZiBpbnNpZGUg
dGhlIGFuZ2xlZCBicmFja2V0cyBmb3IgdGhlIGBzdGF0aWNfY2FzdGAgb3BlcmF0b3IgaXMgdGhl
IHR5cGUKK29mIHRoZSBmdW5jdGlvbiBwb2ludGVyIGZvciB0aGUgYGludGAtdmVyc2lvbiBvZiBg
SXNQb3NpdGl2ZSgpYC4pCisKK0FzIGFub3RoZXIgZXhhbXBsZSwgd2hlbiB5b3UgaGF2ZSBhIHRl
bXBsYXRlIGZ1bmN0aW9uCisKK2BgYGMrKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citib29sIElz
TmVnYXRpdmUoVCB4KSB7CisgIHJldHVybiB4IDwgMDsKK30KK2BgYAorCit5b3UgY2FuIHVzZSBp
dCBpbiBhIHByZWRpY2F0ZSBhc3NlcnRpb24gbGlrZSB0aGlzOgorCitgYGBjKysKK0FTU0VSVF9Q
UkVEMShJc05lZ2F0aXZlPGludD4sIC01KTsKK2BgYAorCitUaGluZ3MgYXJlIG1vcmUgaW50ZXJl
c3RpbmcgaWYgeW91ciB0ZW1wbGF0ZSBoYXMgbW9yZSB0aGFuIG9uZSBwYXJhbWV0ZXJzLiBUaGUK
K2ZvbGxvd2luZyB3b24ndCBjb21waWxlOgorCitgYGBjKysKK0FTU0VSVF9QUkVEMihHcmVhdGVy
VGhhbjxpbnQsIGludD4sIDUsIDApOworYGBgCisKK2FzIHRoZSBDKysgcHJlLXByb2Nlc3NvciB0
aGlua3MgeW91IGFyZSBnaXZpbmcgYEFTU0VSVF9QUkVEMmAgNCBhcmd1bWVudHMsIHdoaWNoCitp
cyBvbmUgbW9yZSB0aGFuIGV4cGVjdGVkLiBUaGUgd29ya2Fyb3VuZCBpcyB0byB3cmFwIHRoZSBw
cmVkaWNhdGUgZnVuY3Rpb24gaW4KK3BhcmVudGhlc2VzOgorCitgYGBjKysKK0FTU0VSVF9QUkVE
MigoR3JlYXRlclRoYW48aW50LCBpbnQ+KSwgNSwgMCk7CitgYGAKKworCisjIyBNeSBjb21waWxl
ciBjb21wbGFpbnMgYWJvdXQgImlnbm9yaW5nIHJldHVybiB2YWx1ZSIgd2hlbiBJIGNhbGwgUlVO
X0FMTF9URVNUUygpLiBXaHk/CisKK1NvbWUgcGVvcGxlIGhhZCBiZWVuIGlnbm9yaW5nIHRoZSBy
ZXR1cm4gdmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAuIFRoYXQgaXMsCitpbnN0ZWFkIG9mCisK
K2BgYGMrKworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworYGBgCisKK3RoZXkgd3JpdGUKKwor
YGBgYysrCisgIFJVTl9BTExfVEVTVFMoKTsKK2BgYAorCitUaGlzIGlzICoqd3JvbmcgYW5kIGRh
bmdlcm91cyoqLiBUaGUgdGVzdGluZyBzZXJ2aWNlcyBuZWVkcyB0byBzZWUgdGhlIHJldHVybgor
dmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGlmIGEgdGVz
dCBoYXMgcGFzc2VkLiBJZiB5b3VyCitgbWFpbigpYCBmdW5jdGlvbiBpZ25vcmVzIGl0LCB5b3Vy
IHRlc3Qgd2lsbCBiZSBjb25zaWRlcmVkIHN1Y2Nlc3NmdWwgZXZlbiBpZiBpdAoraGFzIGEgZ29v
Z2xldGVzdCBhc3NlcnRpb24gZmFpbHVyZS4gVmVyeSBiYWQuCisKK1dlIGhhdmUgZGVjaWRlZCB0
byBmaXggdGhpcyAodGhhbmtzIHRvIE1pY2hhZWwgQ2hhc3RhaW4gZm9yIHRoZSBpZGVhKS4gTm93
LCB5b3VyCitjb2RlIHdpbGwgbm8gbG9uZ2VyIGJlIGFibGUgdG8gaWdub3JlIGBSVU5fQUxMX1RF
U1RTKClgIHdoZW4gY29tcGlsZWQgd2l0aAorYGdjY2AuIElmIHlvdSBkbyBzbywgeW91J2xsIGdl
dCBhIGNvbXBpbGVyIGVycm9yLgorCitJZiB5b3Ugc2VlIHRoZSBjb21waWxlciBjb21wbGFpbmlu
ZyBhYm91dCB5b3UgaWdub3JpbmcgdGhlIHJldHVybiB2YWx1ZSBvZgorYFJVTl9BTExfVEVTVFMo
KWAsIHRoZSBmaXggaXMgc2ltcGxlOiBqdXN0IG1ha2Ugc3VyZSBpdHMgdmFsdWUgaXMgdXNlZCBh
cyB0aGUKK3JldHVybiB2YWx1ZSBvZiBgbWFpbigpYC4KKworQnV0IGhvdyBjb3VsZCB3ZSBpbnRy
b2R1Y2UgYSBjaGFuZ2UgdGhhdCBicmVha3MgZXhpc3RpbmcgdGVzdHM/IFdlbGwsIGluIHRoaXMK
K2Nhc2UsIHRoZSBjb2RlIHdhcyBhbHJlYWR5IGJyb2tlbiBpbiB0aGUgZmlyc3QgcGxhY2UsIHNv
IHdlIGRpZG4ndCBicmVhayBpdC4gOi0pCisKKyMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyB0aGF0
IGEgY29uc3RydWN0b3IgKG9yIGRlc3RydWN0b3IpIGNhbm5vdCByZXR1cm4gYSB2YWx1ZS4gV2hh
dCdzIGdvaW5nIG9uPworCitEdWUgdG8gYSBwZWN1bGlhcml0eSBvZiBDKyssIGluIG9yZGVyIHRv
IHN1cHBvcnQgdGhlIHN5bnRheCBmb3Igc3RyZWFtaW5nCittZXNzYWdlcyB0byBhbiBgQVNTRVJU
XypgLCBlLmcuCisKK2BgYGMrKworICBBU1NFUlRfRVEoMSwgRm9vKCkpIDw8ICJibGFoIGJsYWgi
IDw8IGZvbzsKK2BgYAorCit3ZSBoYWQgdG8gZ2l2ZSB1cCB1c2luZyBgQVNTRVJUKmAgYW5kIGBG
QUlMKmAgKGJ1dCBub3QgYEVYUEVDVCpgIGFuZAorYEFERF9GQUlMVVJFKmApIGluIGNvbnN0cnVj
dG9ycyBhbmQgZGVzdHJ1Y3RvcnMuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIG1vdmUgdGhlCitjb250
ZW50IG9mIHlvdXIgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciB0byBhIHByaXZhdGUgdm9pZCBtZW1i
ZXIgZnVuY3Rpb24sIG9yCitzd2l0Y2ggdG8gYEVYUEVDVF8qKClgIGlmIHRoYXQgd29ya3MuIFRo
aXMKK1tzZWN0aW9uXShhZHZhbmNlZC5tZCNhc3NlcnRpb24tcGxhY2VtZW50KSBpbiB0aGUgdXNl
cidzIGd1aWRlIGV4cGxhaW5zIGl0LgorCisjIyBNeSBTZXRVcCgpIGZ1bmN0aW9uIGlzIG5vdCBj
YWxsZWQuIFdoeT8KKworQysrIGlzIGNhc2Utc2Vuc2l0aXZlLiBEaWQgeW91IHNwZWxsIGl0IGFz
IGBTZXR1cCgpYD8KKworU2ltaWxhcmx5LCBzb21ldGltZXMgcGVvcGxlIHNwZWxsIGBTZXRVcFRl
c3RDYXNlKClgIGFzIGBTZXR1cFRlc3RDYXNlKClgIGFuZAord29uZGVyIHdoeSBpdCdzIG5ldmVy
IGNhbGxlZC4KKworIyMgSG93IGRvIEkganVtcCB0byB0aGUgbGluZSBvZiBhIGZhaWx1cmUgaW4g
RW1hY3MgZGlyZWN0bHk/CisKK2dvb2dsZXRlc3QncyBmYWlsdXJlIG1lc3NhZ2UgZm9ybWF0IGlz
IHVuZGVyc3Rvb2QgYnkgRW1hY3MgYW5kIG1hbnkgb3RoZXIgSURFcywKK2xpa2UgYWNtZSBhbmQg
WENvZGUuIElmIGEgZ29vZ2xldGVzdCBtZXNzYWdlIGlzIGluIGEgY29tcGlsYXRpb24gYnVmZmVy
IGluCitFbWFjcywgdGhlbiBpdCdzIGNsaWNrYWJsZS4KKworCisjIyBJIGhhdmUgc2V2ZXJhbCB0
ZXN0IGNhc2VzIHdoaWNoIHNoYXJlIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBsb2dpYywgZG8gSSBo
YXZlIHRvIGRlZmluZSBhIG5ldyB0ZXN0IGZpeHR1cmUgY2xhc3MgZm9yIGVhY2ggb2YgdGhlbT8g
VGhpcyBzZWVtcyBwcmV0dHkgdGVkaW91cy4KKworWW91IGRvbid0IGhhdmUgdG8uIEluc3RlYWQg
b2YKKworYGBgYysrCitjbGFzcyBGb29UZXN0IDogcHVibGljIEJhc2VUZXN0IHt9OworCitURVNU
X0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9CisK
K2NsYXNzIEJhclRlc3QgOiBwdWJsaWMgQmFzZVRlc3Qge307CisKK1RFU1RfRihCYXJUZXN0LCBB
YmMpIHsgLi4uIH0KK1RFU1RfRihCYXJUZXN0LCBEZWYpIHsgLi4uIH0KK2BgYAorCit5b3UgY2Fu
IHNpbXBseSBgdHlwZWRlZmAgdGhlIHRlc3QgZml4dHVyZXM6CisKK2BgYGMrKwordHlwZWRlZiBC
YXNlVGVzdCBGb29UZXN0OworCitURVNUX0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9CitURVNUX0Yo
Rm9vVGVzdCwgRGVmKSB7IC4uLiB9CisKK3R5cGVkZWYgQmFzZVRlc3QgQmFyVGVzdDsKKworVEVT
VF9GKEJhclRlc3QsIEFiYykgeyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIERlZikgeyAuLi4gfQor
YGBgCisKKyMjIGdvb2dsZXRlc3Qgb3V0cHV0IGlzIGJ1cmllZCBpbiBhIHdob2xlIGJ1bmNoIG9m
IExPRyBtZXNzYWdlcy4gV2hhdCBkbyBJIGRvPworCitUaGUgZ29vZ2xldGVzdCBvdXRwdXQgaXMg
bWVhbnQgdG8gYmUgYSBjb25jaXNlIGFuZCBodW1hbi1mcmllbmRseSByZXBvcnQuIElmCit5b3Vy
IHRlc3QgZ2VuZXJhdGVzIHRleHR1YWwgb3V0cHV0IGl0c2VsZiwgaXQgd2lsbCBtaXggd2l0aCB0
aGUgZ29vZ2xldGVzdAorb3V0cHV0LCBtYWtpbmcgaXQgaGFyZCB0byByZWFkLiBIb3dldmVyLCB0
aGVyZSBpcyBhbiBlYXN5IHNvbHV0aW9uIHRvIHRoaXMKK3Byb2JsZW0uCisKK1NpbmNlIGBMT0dg
IG1lc3NhZ2VzIGdvIHRvIHN0ZGVyciwgd2UgZGVjaWRlZCB0byBsZXQgZ29vZ2xldGVzdCBvdXRw
dXQgZ28gdG8KK3N0ZG91dC4gVGhpcyB3YXksIHlvdSBjYW4gZWFzaWx5IHNlcGFyYXRlIHRoZSB0
d28gdXNpbmcgcmVkaXJlY3Rpb24uIEZvcgorZXhhbXBsZToKKworYGBgc2hlbGwKKyQgLi9teV90
ZXN0ID4gZ3Rlc3Rfb3V0cHV0LnR4dAorYGBgCisKKworIyMgV2h5IHNob3VsZCBJIHByZWZlciB0
ZXN0IGZpeHR1cmVzIG92ZXIgZ2xvYmFsIHZhcmlhYmxlcz8KKworVGhlcmUgYXJlIHNldmVyYWwg
Z29vZCByZWFzb25zOgorCisxLiAgSXQncyBsaWtlbHkgeW91ciB0ZXN0IG5lZWRzIHRvIGNoYW5n
ZSB0aGUgc3RhdGVzIG9mIGl0cyBnbG9iYWwgdmFyaWFibGVzLgorICAgIFRoaXMgbWFrZXMgaXQg
ZGlmZmljdWx0IHRvIGtlZXAgc2lkZSBlZmZlY3RzIGZyb20gZXNjYXBpbmcgb25lIHRlc3QgYW5k
CisgICAgY29udGFtaW5hdGluZyBvdGhlcnMsIG1ha2luZyBkZWJ1Z2dpbmcgZGlmZmljdWx0LiBC
eSB1c2luZyBmaXh0dXJlcywgZWFjaAorICAgIHRlc3QgaGFzIGEgZnJlc2ggc2V0IG9mIHZhcmlh
YmxlcyB0aGF0J3MgZGlmZmVyZW50IChidXQgd2l0aCB0aGUgc2FtZQorICAgIG5hbWVzKS4gVGh1
cywgdGVzdHMgYXJlIGtlcHQgaW5kZXBlbmRlbnQgb2YgZWFjaCBvdGhlci4KKzEuICBHbG9iYWwg
dmFyaWFibGVzIHBvbGx1dGUgdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisxLiAgVGVzdCBmaXh0dXJl
cyBjYW4gYmUgcmV1c2VkIHZpYSBzdWJjbGFzc2luZywgd2hpY2ggY2Fubm90IGJlIGRvbmUgZWFz
aWx5CisgICAgd2l0aCBnbG9iYWwgdmFyaWFibGVzLiBUaGlzIGlzIHVzZWZ1bCBpZiBtYW55IHRl
c3QgY2FzZXMgaGF2ZSBzb21ldGhpbmcgaW4KKyAgICBjb21tb24uCisKKworICAgICMjIFdoYXQg
Y2FuIHRoZSBzdGF0ZW1lbnQgYXJndW1lbnQgaW4gQVNTRVJUX0RFQVRIKCkgYmU/CisKK2BBU1NF
UlRfREVBVEgoKnN0YXRlbWVudCosICpyZWdleCopYCAob3IgYW55IGRlYXRoIGFzc2VydGlvbiBt
YWNybykgY2FuIGJlIHVzZWQKK3doZXJldmVyIGAqc3RhdGVtZW50KmAgaXMgdmFsaWQuIFNvIGJh
c2ljYWxseSBgKnN0YXRlbWVudCpgIGNhbiBiZSBhbnkgQysrCitzdGF0ZW1lbnQgdGhhdCBtYWtl
cyBzZW5zZSBpbiB0aGUgY3VycmVudCBjb250ZXh0LiBJbiBwYXJ0aWN1bGFyLCBpdCBjYW4KK3Jl
ZmVyZW5jZSBnbG9iYWwgYW5kL29yIGxvY2FsIHZhcmlhYmxlcywgYW5kIGNhbiBiZToKKworKiAg
IGEgc2ltcGxlIGZ1bmN0aW9uIGNhbGwgKG9mdGVuIHRoZSBjYXNlKSwKKyogICBhIGNvbXBsZXgg
ZXhwcmVzc2lvbiwgb3IKKyogICBhIGNvbXBvdW5kIHN0YXRlbWVudC4KKworU29tZSBleGFtcGxl
cyBhcmUgc2hvd24gaGVyZToKKworYGBgYysrCisvLyBBIGRlYXRoIHRlc3QgY2FuIGJlIGEgc2lt
cGxlIGZ1bmN0aW9uIGNhbGwuCitURVNUKE15RGVhdGhUZXN0LCBGdW5jdGlvbkNhbGwpIHsKKyAg
QVNTRVJUX0RFQVRIKFh5eig1KSwgIlh5eiBmYWlsZWQiKTsKK30KKworLy8gT3IgYSBjb21wbGV4
IGV4cHJlc3Npb24gdGhhdCByZWZlcmVuY2VzIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zLgorVEVT
VChNeURlYXRoVGVzdCwgQ29tcGxleEV4cHJlc3Npb24pIHsKKyAgY29uc3QgYm9vbCBjID0gQ29u
ZGl0aW9uKCk7CisgIEFTU0VSVF9ERUFUSCgoYyA/IEZ1bmMxKDApIDogb2JqZWN0Mi5NZXRob2Qo
InRlc3QiKSksCisgICAgICAgICAgICAgICAiKEZ1bmMxfE1ldGhvZCkgZmFpbGVkIik7Cit9CisK
Ky8vIERlYXRoIGFzc2VydGlvbnMgY2FuIGJlIHVzZWQgYW55IHdoZXJlIGluIGEgZnVuY3Rpb24u
ICBJbgorLy8gcGFydGljdWxhciwgdGhleSBjYW4gYmUgaW5zaWRlIGEgbG9vcC4KK1RFU1QoTXlE
ZWF0aFRlc3QsIEluc2lkZUxvb3ApIHsKKyAgLy8gVmVyaWZpZXMgdGhhdCBGb28oMCksIEZvbygx
KSwgLi4uLCBhbmQgRm9vKDQpIGFsbCBkaWUuCisgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsr
KSB7CisgICAgRVhQRUNUX0RFQVRIX00oRm9vKGkpLCAiRm9vIGhhcyBcXGQrIGVycm9ycyIsCisg
ICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpNZXNzYWdlKCkgPDwgIndoZXJlIGkgaXMgIiA8
PCBpKTsKKyAgfQorfQorCisvLyBBIGRlYXRoIGFzc2VydGlvbiBjYW4gY29udGFpbiBhIGNvbXBv
dW5kIHN0YXRlbWVudC4KK1RFU1QoTXlEZWF0aFRlc3QsIENvbXBvdW5kU3RhdGVtZW50KSB7Cisg
IC8vIFZlcmlmaWVzIHRoYXQgYXQgbGVhc2Ugb25lIG9mIEJhcigwKSwgQmFyKDEpLCAuLi4sIGFu
ZAorICAvLyBCYXIoNCkgZGllcy4KKyAgQVNTRVJUX0RFQVRIKHsKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IDU7IGkrKykgeworICAgICAgQmFyKGkpOworICAgIH0KKyAgfSwKKyAgIkJhciBoYXMg
XFxkKyBlcnJvcnMiKTsKK30KK2BgYAorCitndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2MgY29udGFp
bnMgbW9yZSBleGFtcGxlcyBpZiB5b3UgYXJlIGludGVyZXN0ZWQuCisKKyMjIEkgaGF2ZSBhIGZp
eHR1cmUgY2xhc3MgYEZvb1Rlc3RgLCBidXQgYFRFU1RfRihGb29UZXN0LCBCYXIpYCBnaXZlcyBt
ZSBlcnJvciBgYCJubyBtYXRjaGluZyBmdW5jdGlvbiBmb3IgY2FsbCB0byBgRm9vVGVzdDo6Rm9v
VGVzdCgpJyJgYC4gV2h5PworCitHb29nbGV0ZXN0IG5lZWRzIHRvIGJlIGFibGUgdG8gY3JlYXRl
IG9iamVjdHMgb2YgeW91ciB0ZXN0IGZpeHR1cmUgY2xhc3MsIHNvIGl0CittdXN0IGhhdmUgYSBk
ZWZhdWx0IGNvbnN0cnVjdG9yLiBOb3JtYWxseSB0aGUgY29tcGlsZXIgd2lsbCBkZWZpbmUgb25l
IGZvciB5b3UuCitIb3dldmVyLCB0aGVyZSBhcmUgY2FzZXMgd2hlcmUgeW91IGhhdmUgdG8gZGVm
aW5lIHlvdXIgb3duOgorCisqICAgSWYgeW91IGV4cGxpY2l0bHkgZGVjbGFyZSBhIG5vbi1kZWZh
dWx0IGNvbnN0cnVjdG9yIGZvciBjbGFzcyBgRm9vVGVzdGAKKyAgICAoYERJU0FMTE9XX0VWSUxf
Q09OU1RSVUNUT1JTKClgIGRvZXMgdGhpcyksIHRoZW4geW91IG5lZWQgdG8gZGVmaW5lIGEKKyAg
ICBkZWZhdWx0IGNvbnN0cnVjdG9yLCBldmVuIGlmIGl0IHdvdWxkIGJlIGVtcHR5LgorKiAgIElm
IGBGb29UZXN0YCBoYXMgYSBjb25zdCBub24tc3RhdGljIGRhdGEgbWVtYmVyLCB0aGVuIHlvdSBo
YXZlIHRvIGRlZmluZSB0aGUKKyAgICBkZWZhdWx0IGNvbnN0cnVjdG9yICphbmQqIGluaXRpYWxp
emUgdGhlIGNvbnN0IG1lbWJlciBpbiB0aGUgaW5pdGlhbGl6ZXIKKyAgICBsaXN0IG9mIHRoZSBj
b25zdHJ1Y3Rvci4gKEVhcmx5IHZlcnNpb25zIG9mIGBnY2NgIGRvZXNuJ3QgZm9yY2UgeW91IHRv
CisgICAgaW5pdGlhbGl6ZSB0aGUgY29uc3QgbWVtYmVyLiBJdCdzIGEgYnVnIHRoYXQgaGFzIGJl
ZW4gZml4ZWQgaW4gYGdjYyA0YC4pCisKKyMjIFdoeSBkb2VzIEFTU0VSVF9ERUFUSCBjb21wbGFp
biBhYm91dCBwcmV2aW91cyB0aHJlYWRzIHRoYXQgd2VyZSBhbHJlYWR5IGpvaW5lZD8KKworV2l0
aCB0aGUgTGludXggcHRocmVhZCBsaWJyYXJ5LCB0aGVyZSBpcyBubyB0dXJuaW5nIGJhY2sgb25j
ZSB5b3UgY3Jvc3MgdGhlIGxpbmUKK2Zyb20gc2luZ2xlIHRocmVhZCB0byBtdWx0aXBsZSB0aHJl
YWRzLiBUaGUgZmlyc3QgdGltZSB5b3UgY3JlYXRlIGEgdGhyZWFkLCBhCittYW5hZ2VyIHRocmVh
ZCBpcyBjcmVhdGVkIGluIGFkZGl0aW9uLCBzbyB5b3UgZ2V0IDMsIG5vdCAyLCB0aHJlYWRzLiBM
YXRlciB3aGVuCit0aGUgdGhyZWFkIHlvdSBjcmVhdGUgam9pbnMgdGhlIG1haW4gdGhyZWFkLCB0
aGUgdGhyZWFkIGNvdW50IGRlY3JlbWVudHMgYnkgMSwKK2J1dCB0aGUgbWFuYWdlciB0aHJlYWQg
d2lsbCBuZXZlciBiZSBraWxsZWQsIHNvIHlvdSBzdGlsbCBoYXZlIDIgdGhyZWFkcywgd2hpY2gK
K21lYW5zIHlvdSBjYW5ub3Qgc2FmZWx5IHJ1biBhIGRlYXRoIHRlc3QuCisKK1RoZSBuZXcgTlBU
TCB0aHJlYWQgbGlicmFyeSBkb2Vzbid0IHN1ZmZlciBmcm9tIHRoaXMgcHJvYmxlbSwgYXMgaXQg
ZG9lc24ndAorY3JlYXRlIGEgbWFuYWdlciB0aHJlYWQuIEhvd2V2ZXIsIGlmIHlvdSBkb24ndCBj
b250cm9sIHdoaWNoIG1hY2hpbmUgeW91ciB0ZXN0CitydW5zIG9uLCB5b3Ugc2hvdWxkbid0IGRl
cGVuZCBvbiB0aGlzLgorCisjIyBXaHkgZG9lcyBnb29nbGV0ZXN0IHJlcXVpcmUgdGhlIGVudGly
ZSB0ZXN0IGNhc2UsIGluc3RlYWQgb2YgaW5kaXZpZHVhbCB0ZXN0cywgdG8gYmUgbmFtZWQgKkRl
YXRoVGVzdCB3aGVuIGl0IHVzZXMgQVNTRVJUX0RFQVRIPworCitnb29nbGV0ZXN0IGRvZXMgbm90
IGludGVybGVhdmUgdGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcy4gVGhhdCBpcywgaXQg
cnVucworYWxsIHRlc3RzIGluIG9uZSB0ZXN0IGNhc2UgZmlyc3QsIGFuZCB0aGVuIHJ1bnMgYWxs
IHRlc3RzIGluIHRoZSBuZXh0IHRlc3QgY2FzZSwKK2FuZCBzbyBvbi4gZ29vZ2xldGVzdCBkb2Vz
IHRoaXMgYmVjYXVzZSBpdCBuZWVkcyB0byBzZXQgdXAgYSB0ZXN0IGNhc2UgYmVmb3JlCit0aGUg
Zmlyc3QgdGVzdCBpbiBpdCBpcyBydW4sIGFuZCB0ZWFyIGl0IGRvd24gYWZ0ZXJ3b3Jkcy4gU3Bs
aXR0aW5nIHVwIHRoZSB0ZXN0CitjYXNlIHdvdWxkIHJlcXVpcmUgbXVsdGlwbGUgc2V0LXVwIGFu
ZCB0ZWFyLWRvd24gcHJvY2Vzc2VzLCB3aGljaCBpcyBpbmVmZmljaWVudAorYW5kIG1ha2VzIHRo
ZSBzZW1hbnRpY3MgdW5jbGVhbi4KKworSWYgd2Ugd2VyZSB0byBkZXRlcm1pbmUgdGhlIG9yZGVy
IG9mIHRlc3RzIGJhc2VkIG9uIHRlc3QgbmFtZSBpbnN0ZWFkIG9mIHRlc3QKK2Nhc2UgbmFtZSwg
dGhlbiB3ZSB3b3VsZCBoYXZlIGEgcHJvYmxlbSB3aXRoIHRoZSBmb2xsb3dpbmcgc2l0dWF0aW9u
OgorCitgYGBjKysKK1RFU1RfRihGb29UZXN0LCBBYmNEZWF0aFRlc3QpIHsgLi4uIH0KK1RFU1Rf
RihGb29UZXN0LCBVdncpIHsgLi4uIH0KKworVEVTVF9GKEJhclRlc3QsIERlZkRlYXRoVGVzdCkg
eyAuLi4gfQorVEVTVF9GKEJhclRlc3QsIFh5eikgeyAuLi4gfQorYGBgCisKK1NpbmNlIGBGb29U
ZXN0LkFiY0RlYXRoVGVzdGAgbmVlZHMgdG8gcnVuIGJlZm9yZSBgQmFyVGVzdC5YeXpgLCBhbmQg
d2UgZG9uJ3QKK2ludGVybGVhdmUgdGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcywgd2Ug
bmVlZCB0byBydW4gYWxsIHRlc3RzIGluIHRoZQorYEZvb1Rlc3RgIGNhc2UgYmVmb3JlIHJ1bm5p
bmcgYW55IHRlc3QgaW4gdGhlIGBCYXJUZXN0YCBjYXNlLiBUaGlzIGNvbnRyYWRpY3RzCit3aXRo
IHRoZSByZXF1aXJlbWVudCB0byBydW4gYEJhclRlc3QuRGVmRGVhdGhUZXN0YCBiZWZvcmUgYEZv
b1Rlc3QuVXZ3YC4KKworIyMgQnV0IEkgZG9uJ3QgbGlrZSBjYWxsaW5nIG15IGVudGlyZSB0ZXN0
IGNhc2UgXCpEZWF0aFRlc3Qgd2hlbiBpdCBjb250YWlucyBib3RoIGRlYXRoIHRlc3RzIGFuZCBu
b24tZGVhdGggdGVzdHMuIFdoYXQgZG8gSSBkbz8KKworWW91IGRvbid0IGhhdmUgdG8sIGJ1dCBp
ZiB5b3UgbGlrZSwgeW91IG1heSBzcGxpdCB1cCB0aGUgdGVzdCBjYXNlIGludG8KK2BGb29UZXN0
YCBhbmQgYEZvb0RlYXRoVGVzdGAsIHdoZXJlIHRoZSBuYW1lcyBtYWtlIGl0IGNsZWFyIHRoYXQg
dGhleSBhcmUKK3JlbGF0ZWQ6CisKK2BgYGMrKworY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgeyAuLi4gfTsKKworVEVTVF9GKEZvb1Rlc3QsIEFiYykgeyAuLi4gfQorVEVT
VF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQorCit1c2luZyBGb29EZWF0aFRlc3QgPSBGb29UZXN0
OworCitURVNUX0YoRm9vRGVhdGhUZXN0LCBVdncpIHsgLi4uIEVYUEVDVF9ERUFUSCguLi4pIC4u
LiB9CitURVNUX0YoRm9vRGVhdGhUZXN0LCBYeXopIHsgLi4uIEFTU0VSVF9ERUFUSCguLi4pIC4u
LiB9CitgYGAKKworIyMgZ29vZ2xldGVzdCBwcmludHMgdGhlIExPRyBtZXNzYWdlcyBpbiBhIGRl
YXRoIHRlc3QncyBjaGlsZCBwcm9jZXNzIG9ubHkgd2hlbiB0aGUgdGVzdCBmYWlscy4gSG93IGNh
biBJIHNlZSB0aGUgTE9HIG1lc3NhZ2VzIHdoZW4gdGhlIGRlYXRoIHRlc3Qgc3VjY2VlZHM/CisK
K1ByaW50aW5nIHRoZSBMT0cgbWVzc2FnZXMgZ2VuZXJhdGVkIGJ5IHRoZSBzdGF0ZW1lbnQgaW5z
aWRlIGBFWFBFQ1RfREVBVEgoKWAKK21ha2VzIGl0IGhhcmRlciB0byBzZWFyY2ggZm9yIHJlYWwg
cHJvYmxlbXMgaW4gdGhlIHBhcmVudCdzIGxvZy4gVGhlcmVmb3JlLAorZ29vZ2xldGVzdCBvbmx5
IHByaW50cyB0aGVtIHdoZW4gdGhlIGRlYXRoIHRlc3QgaGFzIGZhaWxlZC4KKworSWYgeW91IHJl
YWxseSBuZWVkIHRvIHNlZSBzdWNoIExPRyBtZXNzYWdlcywgYSB3b3JrYXJvdW5kIGlzIHRvIHRl
bXBvcmFyaWx5CiticmVhayB0aGUgZGVhdGggdGVzdCAoZS5nLiBieSBjaGFuZ2luZyB0aGUgcmVn
ZXggcGF0dGVybiBpdCBpcyBleHBlY3RlZCB0bworbWF0Y2gpLiBBZG1pdHRlZGx5LCB0aGlzIGlz
IGEgaGFjay4gV2UnbGwgY29uc2lkZXIgYSBtb3JlIHBlcm1hbmVudCBzb2x1dGlvbgorYWZ0ZXIg
dGhlIGZvcmstYW5kLWV4ZWMtc3R5bGUgZGVhdGggdGVzdHMgYXJlIGltcGxlbWVudGVkLgorCisj
IyBUaGUgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJubyBtYXRjaCBmb3IgJ29wZXJhdG9yPDwn
IiB3aGVuIEkgdXNlIGFuIGFzc2VydGlvbi4gV2hhdCBnaXZlcz8KKworSWYgeW91IHVzZSBhIHVz
ZXItZGVmaW5lZCB0eXBlIGBGb29UeXBlYCBpbiBhbiBhc3NlcnRpb24sIHlvdSBtdXN0IG1ha2Ug
c3VyZQordGhlcmUgaXMgYW4gYHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0m
LCBjb25zdCBGb29UeXBlJilgIGZ1bmN0aW9uCitkZWZpbmVkIHN1Y2ggdGhhdCB3ZSBjYW4gcHJp
bnQgYSB2YWx1ZSBvZiBgRm9vVHlwZWAuCisKK0luIGFkZGl0aW9uLCBpZiBgRm9vVHlwZWAgaXMg
ZGVjbGFyZWQgaW4gYSBuYW1lIHNwYWNlLCB0aGUgYDw8YCBvcGVyYXRvciBhbHNvCituZWVkcyB0
byBiZSBkZWZpbmVkIGluIHRoZSAqc2FtZSogbmFtZSBzcGFjZS4gU2VlIGdvL3RvdHcvNDkgZm9y
IGRldGFpbHMuCisKKyMjIEhvdyBkbyBJIHN1cHByZXNzIHRoZSBtZW1vcnkgbGVhayBtZXNzYWdl
cyBvbiBXaW5kb3dzPworCitTaW5jZSB0aGUgc3RhdGljYWxseSBpbml0aWFsaXplZCBnb29nbGV0
ZXN0IHNpbmdsZXRvbiByZXF1aXJlcyBhbGxvY2F0aW9ucyBvbgordGhlIGhlYXAsIHRoZSBWaXN1
YWwgQysrIG1lbW9yeSBsZWFrIGRldGVjdG9yIHdpbGwgcmVwb3J0IG1lbW9yeSBsZWFrcyBhdCB0
aGUKK2VuZCBvZiB0aGUgcHJvZ3JhbSBydW4uIFRoZSBlYXNpZXN0IHdheSB0byBhdm9pZCB0aGlz
IGlzIHRvIHVzZSB0aGUKK2BfQ3J0TWVtQ2hlY2twb2ludGAgYW5kIGBfQ3J0TWVtRHVtcEFsbE9i
amVjdHNTaW5jZWAgY2FsbHMgdG8gbm90IHJlcG9ydCBhbnkKK3N0YXRpY2FsbHkgaW5pdGlhbGl6
ZWQgaGVhcCBvYmplY3RzLiBTZWUgTVNETiBmb3IgbW9yZSBkZXRhaWxzIGFuZCBhZGRpdGlvbmFs
CitoZWFwIGNoZWNrL2RlYnVnIHJvdXRpbmVzLgorCisKKyMjIEhvdyBjYW4gbXkgY29kZSBkZXRl
Y3QgaWYgaXQgaXMgcnVubmluZyBpbiBhIHRlc3Q/CisKK0lmIHlvdSB3cml0ZSBjb2RlIHRoYXQg
c25pZmZzIHdoZXRoZXIgaXQncyBydW5uaW5nIGluIGEgdGVzdCBhbmQgZG9lcyBkaWZmZXJlbnQK
K3RoaW5ncyBhY2NvcmRpbmdseSwgeW91IGFyZSBsZWFraW5nIHRlc3Qtb25seSBsb2dpYyBpbnRv
IHByb2R1Y3Rpb24gY29kZSBhbmQKK3RoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIGVuc3VyZSB0aGF0
IHRoZSB0ZXN0LW9ubHkgY29kZSBwYXRocyBhcmVuJ3QgcnVuIGJ5CittaXN0YWtlIGluIHByb2R1
Y3Rpb24uIFN1Y2ggY2xldmVybmVzcyBhbHNvIGxlYWRzIHRvCitbSGVpc2VuYnVnc10oaHR0cHM6
Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVpc2VuYnVnKS4gVGhlcmVmb3JlIHdlIHN0cm9uZ2x5
CithZHZpc2UgYWdhaW5zdCB0aGUgcHJhY3RpY2UsIGFuZCBnb29nbGV0ZXN0IGRvZXNuJ3QgcHJv
dmlkZSBhIHdheSB0byBkbyBpdC4KKworSW4gZ2VuZXJhbCwgdGhlIHJlY29tbWVuZGVkIHdheSB0
byBjYXVzZSB0aGUgY29kZSB0byBiZWhhdmUgZGlmZmVyZW50bHkgdW5kZXIKK3Rlc3QgaXMgW0Rl
cGVuZGVuY3kgSW5qZWN0aW9uXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZXBlbmRl
bmN5X2luamVjdGlvbikuIFlvdSBjYW4gaW5qZWN0CitkaWZmZXJlbnQgZnVuY3Rpb25hbGl0eSBm
cm9tIHRoZSB0ZXN0IGFuZCBmcm9tIHRoZSBwcm9kdWN0aW9uIGNvZGUuIFNpbmNlIHlvdXIKK3By
b2R1Y3Rpb24gY29kZSBkb2Vzbid0IGxpbmsgaW4gdGhlIGZvci10ZXN0IGxvZ2ljIGF0IGFsbCAo
dGhlCitbYHRlc3Rvbmx5YF0oaHR0cHM6Ly9kb2NzLmJhemVsLmJ1aWxkL3ZlcnNpb25zL21hc3Rl
ci9iZS9jb21tb24tZGVmaW5pdGlvbnMuaHRtbCNjb21tb24udGVzdG9ubHkpCithdHRyaWJ1dGUg
Zm9yIEJVSUxEIHRhcmdldHMgaGVscHMgdG8gZW5zdXJlIHRoYXQpLCB0aGVyZSBpcyBubyBkYW5n
ZXIgaW4KK2FjY2lkZW50YWxseSBydW5uaW5nIGl0LgorCitIb3dldmVyLCBpZiB5b3UgKnJlYWxs
eSosICpyZWFsbHkqLCAqcmVhbGx5KiBoYXZlIG5vIGNob2ljZSwgYW5kIGlmIHlvdSBmb2xsb3cK
K3RoZSBydWxlIG9mIGVuZGluZyB5b3VyIHRlc3QgcHJvZ3JhbSBuYW1lcyB3aXRoIGBfdGVzdGAs
IHlvdSBjYW4gdXNlIHRoZQorKmhvcnJpYmxlKiBoYWNrIG9mIHNuaWZmaW5nIHlvdXIgZXhlY3V0
YWJsZSBuYW1lIChgYXJndlswXWAgaW4gYG1haW4oKWApIHRvIGtub3cKK3doZXRoZXIgdGhlIGNv
ZGUgaXMgdW5kZXIgdGVzdC4KKworCisjIyBIb3cgZG8gSSB0ZW1wb3JhcmlseSBkaXNhYmxlIGEg
dGVzdD8KKworSWYgeW91IGhhdmUgYSBicm9rZW4gdGVzdCB0aGF0IHlvdSBjYW5ub3QgZml4IHJp
Z2h0IGF3YXksIHlvdSBjYW4gYWRkIHRoZQorRElTQUJMRURfIHByZWZpeCB0byBpdHMgbmFtZS4g
VGhpcyB3aWxsIGV4Y2x1ZGUgaXQgZnJvbSBleGVjdXRpb24uIFRoaXMgaXMKK2JldHRlciB0aGFu
IGNvbW1lbnRpbmcgb3V0IHRoZSBjb2RlIG9yIHVzaW5nICNpZiAwLCBhcyBkaXNhYmxlZCB0ZXN0
cyBhcmUgc3RpbGwKK2NvbXBpbGVkIChhbmQgdGh1cyB3b24ndCByb3QpLgorCitUbyBpbmNsdWRl
IGRpc2FibGVkIHRlc3RzIGluIHRlc3QgZXhlY3V0aW9uLCBqdXN0IGludm9rZSB0aGUgdGVzdCBw
cm9ncmFtIHdpdGgKK3RoZSAtLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIGZsYWcuCisK
KyMjIElzIGl0IE9LIGlmIEkgaGF2ZSB0d28gc2VwYXJhdGUgYFRFU1QoRm9vLCBCYXIpYCB0ZXN0
IG1ldGhvZHMgZGVmaW5lZCBpbiBkaWZmZXJlbnQgbmFtZXNwYWNlcz8KKworWWVzLgorCitUaGUg
cnVsZSBpcyAqKmFsbCB0ZXN0IG1ldGhvZHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNl
IHRoZSBzYW1lIGZpeHR1cmUKK2NsYXNzLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5n
IGlzICoqYWxsb3dlZCoqIGJlY2F1c2UgYm90aCB0ZXN0cyB1c2UgdGhlCitzYW1lIGZpeHR1cmUg
Y2xhc3MgKGA6OnRlc3Rpbmc6OlRlc3RgKS4KKworYGBgYysrCituYW1lc3BhY2UgZm9vIHsKK1RF
U1QoQ29vbFRlc3QsIERvU29tZXRoaW5nKSB7CisgIFNVQ0NFRUQoKTsKK30KK30gIC8vIG5hbWVz
cGFjZSBmb28KKworbmFtZXNwYWNlIGJhciB7CitURVNUKENvb2xUZXN0LCBEb1NvbWV0aGluZykg
eworICBTVUNDRUVEKCk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgYmFyCitgYGAKKworSG93ZXZlciwg
dGhlIGZvbGxvd2luZyBjb2RlIGlzICoqbm90IGFsbG93ZWQqKiBhbmQgd2lsbCBwcm9kdWNlIGEg
cnVudGltZSBlcnJvcgorZnJvbSBnb29nbGV0ZXN0IGJlY2F1c2UgdGhlIHRlc3QgbWV0aG9kcyBh
cmUgdXNpbmcgZGlmZmVyZW50IHRlc3QgZml4dHVyZQorY2xhc3NlcyB3aXRoIHRoZSBzYW1lIHRl
c3QgY2FzZSBuYW1lLgorCitgYGBjKysKK25hbWVzcGFjZSBmb28geworY2xhc3MgQ29vbFRlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OyAgLy8gRml4dHVyZSBmb286OkNvb2xUZXN0CitU
RVNUX0YoQ29vbFRlc3QsIERvU29tZXRoaW5nKSB7CisgIFNVQ0NFRUQoKTsKK30KK30gIC8vIG5h
bWVzcGFjZSBmb28KKworbmFtZXNwYWNlIGJhciB7CitjbGFzcyBDb29sVGVzdCA6IHB1YmxpYyA6
OnRlc3Rpbmc6OlRlc3Qge307ICAvLyBGaXh0dXJlOiBiYXI6OkNvb2xUZXN0CitURVNUX0YoQ29v
bFRlc3QsIERvU29tZXRoaW5nKSB7CisgIFNVQ0NFRUQoKTsKK30KK30gIC8vIG5hbWVzcGFjZSBi
YXIKK2BgYApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9wcmltZXIu
bWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL3ByaW1lci5tZApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
YThlYThkNzE3YjgzNWJjYmQyM2Y4NGM5ZWEwNWYxNmE4NzhhNWQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvZG9jcy9wcmltZXIubWQKQEAgLTAsMCArMSw1Njkg
QEAKKyMgR29vZ2xldGVzdCBQcmltZXIKKworCisjIyBJbnRyb2R1Y3Rpb246IFdoeSBnb29nbGV0
ZXN0PworCisqZ29vZ2xldGVzdCogaGVscHMgeW91IHdyaXRlIGJldHRlciBDKysgdGVzdHMuCisK
K2dvb2dsZXRlc3QgaXMgYSB0ZXN0aW5nIGZyYW1ld29yayBkZXZlbG9wZWQgYnkgdGhlIFRlc3Rp
bmcKK1RlY2hub2xvZ3kgdGVhbSB3aXRoIEdvb2dsZSdzIHNwZWNpZmljCityZXF1aXJlbWVudHMg
YW5kIGNvbnN0cmFpbnRzIGluIG1pbmQuIE5vIG1hdHRlciB3aGV0aGVyIHlvdSB3b3JrIG9uIExp
bnV4LAorV2luZG93cywgb3IgYSBNYWMsIGlmIHlvdSB3cml0ZSBDKysgY29kZSwgZ29vZ2xldGVz
dCBjYW4gaGVscCB5b3UuIEFuZCBpdAorc3VwcG9ydHMgKmFueSoga2luZCBvZiB0ZXN0cywgbm90
IGp1c3QgdW5pdCB0ZXN0cy4KKworU28gd2hhdCBtYWtlcyBhIGdvb2QgdGVzdCwgYW5kIGhvdyBk
b2VzIGdvb2dsZXRlc3QgZml0IGluPyBXZSBiZWxpZXZlOgorCisxLiAgVGVzdHMgc2hvdWxkIGJl
ICppbmRlcGVuZGVudCogYW5kICpyZXBlYXRhYmxlKi4gSXQncyBhIHBhaW4gdG8gZGVidWcgYSB0
ZXN0CisgICAgdGhhdCBzdWNjZWVkcyBvciBmYWlscyBhcyBhIHJlc3VsdCBvZiBvdGhlciB0ZXN0
cy4gZ29vZ2xldGVzdCBpc29sYXRlcyB0aGUKKyAgICB0ZXN0cyBieSBydW5uaW5nIGVhY2ggb2Yg
dGhlbSBvbiBhIGRpZmZlcmVudCBvYmplY3QuIFdoZW4gYSB0ZXN0IGZhaWxzLAorICAgIGdvb2ds
ZXRlc3QgYWxsb3dzIHlvdSB0byBydW4gaXQgaW4gaXNvbGF0aW9uIGZvciBxdWljayBkZWJ1Z2dp
bmcuCisxLiAgVGVzdHMgc2hvdWxkIGJlIHdlbGwgKm9yZ2FuaXplZCogYW5kIHJlZmxlY3QgdGhl
IHN0cnVjdHVyZSBvZiB0aGUgdGVzdGVkCisgICAgY29kZS4gZ29vZ2xldGVzdCBncm91cHMgcmVs
YXRlZCB0ZXN0cyBpbnRvIHRlc3QgY2FzZXMgdGhhdCBjYW4gc2hhcmUgZGF0YQorICAgIGFuZCBz
dWJyb3V0aW5lcy4gVGhpcyBjb21tb24gcGF0dGVybiBpcyBlYXN5IHRvIHJlY29nbml6ZSBhbmQg
bWFrZXMgdGVzdHMKKyAgICBlYXN5IHRvIG1haW50YWluLiBTdWNoIGNvbnNpc3RlbmN5IGlzIGVz
cGVjaWFsbHkgaGVscGZ1bCB3aGVuIHBlb3BsZSBzd2l0Y2gKKyAgICBwcm9qZWN0cyBhbmQgc3Rh
cnQgdG8gd29yayBvbiBhIG5ldyBjb2RlIGJhc2UuCisxLiAgVGVzdHMgc2hvdWxkIGJlICpwb3J0
YWJsZSogYW5kICpyZXVzYWJsZSouIEdvb2dsZSBoYXMgYSBsb3Qgb2YgY29kZSB0aGF0IGlzCisg
ICAgcGxhdGZvcm0tbmV1dHJhbCwgaXRzIHRlc3RzIHNob3VsZCBhbHNvIGJlIHBsYXRmb3JtLW5l
dXRyYWwuIGdvb2dsZXRlc3QKKyAgICB3b3JrcyBvbiBkaWZmZXJlbnQgT1Nlcywgd2l0aCBkaWZm
ZXJlbnQgY29tcGlsZXJzIChnY2MsIGljYywgYW5kIE1TVkMpLCB3aXRoCisgICAgb3Igd2l0aG91
dCBleGNlcHRpb25zLCBzbyBnb29nbGV0ZXN0IHRlc3RzIGNhbiBlYXNpbHkgd29yayB3aXRoIGEg
dmFyaWV0eSBvZgorICAgIGNvbmZpZ3VyYXRpb25zLgorMS4gIFdoZW4gdGVzdHMgZmFpbCwgdGhl
eSBzaG91bGQgcHJvdmlkZSBhcyBtdWNoICppbmZvcm1hdGlvbiogYWJvdXQgdGhlIHByb2JsZW0K
KyAgICBhcyBwb3NzaWJsZS4gZ29vZ2xldGVzdCBkb2Vzbid0IHN0b3AgYXQgdGhlIGZpcnN0IHRl
c3QgZmFpbHVyZS4gSW5zdGVhZCwgaXQKKyAgICBvbmx5IHN0b3BzIHRoZSBjdXJyZW50IHRlc3Qg
YW5kIGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0LiBZb3UgY2FuIGFsc28gc2V0IHVwCisgICAgdGVz
dHMgdGhhdCByZXBvcnQgbm9uLWZhdGFsIGZhaWx1cmVzIGFmdGVyIHdoaWNoIHRoZSBjdXJyZW50
IHRlc3QgY29udGludWVzLgorICAgIFRodXMsIHlvdSBjYW4gZGV0ZWN0IGFuZCBmaXggbXVsdGlw
bGUgYnVncyBpbiBhIHNpbmdsZSBydW4tZWRpdC1jb21waWxlCisgICAgY3ljbGUuCisxLiAgVGhl
IHRlc3RpbmcgZnJhbWV3b3JrIHNob3VsZCBsaWJlcmF0ZSB0ZXN0IHdyaXRlcnMgZnJvbSBob3Vz
ZWtlZXBpbmcgY2hvcmVzCisgICAgYW5kIGxldCB0aGVtIGZvY3VzIG9uIHRoZSB0ZXN0ICpjb250
ZW50Ki4gZ29vZ2xldGVzdCBhdXRvbWF0aWNhbGx5IGtlZXBzCisgICAgdHJhY2sgb2YgYWxsIHRl
c3RzIGRlZmluZWQsIGFuZCBkb2Vzbid0IHJlcXVpcmUgdGhlIHVzZXIgdG8gZW51bWVyYXRlIHRo
ZW0KKyAgICBpbiBvcmRlciB0byBydW4gdGhlbS4KKzEuICBUZXN0cyBzaG91bGQgYmUgKmZhc3Qq
LiBXaXRoIGdvb2dsZXRlc3QsIHlvdSBjYW4gcmV1c2Ugc2hhcmVkIHJlc291cmNlcworICAgIGFj
cm9zcyB0ZXN0cyBhbmQgcGF5IGZvciB0aGUgc2V0LXVwL3RlYXItZG93biBvbmx5IG9uY2UsIHdp
dGhvdXQgbWFraW5nCisgICAgdGVzdHMgZGVwZW5kIG9uIGVhY2ggb3RoZXIuCisKK1NpbmNlIGdv
b2dsZXRlc3QgaXMgYmFzZWQgb24gdGhlIHBvcHVsYXIgeFVuaXQgYXJjaGl0ZWN0dXJlLCB5b3Un
bGwgZmVlbCByaWdodAorYXQgaG9tZSBpZiB5b3UndmUgdXNlZCBKVW5pdCBvciBQeVVuaXQgYmVm
b3JlLiBJZiBub3QsIGl0IHdpbGwgdGFrZSB5b3UgYWJvdXQgMTAKK21pbnV0ZXMgdG8gbGVhcm4g
dGhlIGJhc2ljcyBhbmQgZ2V0IHN0YXJ0ZWQuIFNvIGxldCdzIGdvIQorCisjIyBCZXdhcmUgb2Yg
dGhlIG5vbWVuY2xhdHVyZQorCitfTm90ZTpfIFRoZXJlIG1pZ2h0IGJlIHNvbWUgY29uZnVzaW9u
IG9mIGlkZWEgZHVlIHRvIGRpZmZlcmVudAorZGVmaW5pdGlvbnMgb2YgdGhlIHRlcm1zIF9UZXN0
XywgX1Rlc3QgQ2FzZV8gYW5kIF9UZXN0IFN1aXRlXywgc28gYmV3YXJlCitvZiBtaXN1bmRlcnN0
YW5kaW5nIHRoZXNlLgorCitIaXN0b3JpY2FsbHksIGdvb2dsZXRlc3Qgc3RhcnRlZCB0byB1c2Ug
dGhlIHRlcm0gX1Rlc3QgQ2FzZV8gZm9yIGdyb3VwaW5nCityZWxhdGVkIHRlc3RzLCB3aGVyZWFz
IGN1cnJlbnQgcHVibGljYXRpb25zIGluY2x1ZGluZyB0aGUgSW50ZXJuYXRpb25hbCBTb2Z0d2Fy
ZQorVGVzdGluZyBRdWFsaWZpY2F0aW9ucyBCb2FyZCAoW0lTVFFCXShodHRwOi8vd3d3LmlzdHFi
Lm9yZy8pKSBhbmQgdmFyaW91cwordGV4dGJvb2tzIG9uIFNvZnR3YXJlIFF1YWxpdHkgdXNlIHRo
ZSB0ZXJtIF9bVGVzdAorU3VpdGVdKGh0dHA6Ly9nbG9zc2FyeS5pc3RxYi5vcmcvc2VhcmNoL3Rl
c3QlMjBzdWl0ZSlfIGZvciB0aGlzLgorCitUaGUgcmVsYXRlZCB0ZXJtIF9UZXN0XywgYXMgaXQg
aXMgdXNlZCBpbiB0aGUgZ29vZ2xldGVzdCwgaXMgY29ycmVzcG9uZGluZyB0bwordGhlIHRlcm0g
X1tUZXN0IENhc2VdKGh0dHA6Ly9nbG9zc2FyeS5pc3RxYi5vcmcvc2VhcmNoL3Rlc3QlMjBjYXNl
KV8gb2YgSVNUUUIKK2FuZCBvdGhlcnMuCisKK1RoZSB0ZXJtIF9UZXN0XyBpcyBjb21tb25seSBv
ZiBicm9hZCBlbm91Z2ggc2Vuc2UsIGluY2x1ZGluZyBJU1RRQidzCitkZWZpbml0aW9uIG9mIF9U
ZXN0IENhc2VfLCBzbyBpdCdzIG5vdCBtdWNoIG9mIGEgcHJvYmxlbSBoZXJlLiBCdXQgdGhlCit0
ZXJtIF9UZXN0IENhc2VfIGFzIHVzZWQgaW4gR29vZ2xlIFRlc3QgaXMgb2YgY29udHJhZGljdG9y
eSBzZW5zZSBhbmQgdGh1cyBjb25mdXNpbmcuCisKK1VuZm9ydHVuYXRlbHkgcmVwbGFjaW5nIHRo
ZSB0ZXJtIF9UZXN0IENhc2VfIGJ5IF9UZXN0IFN1aXRlXyB0aHJvdWdob3V0IHRoZQorZ29vZ2xl
dGVzdCBpcyBub3QgZWFzeSB3aXRob3V0IGJyZWFraW5nIGRlcGVuZGVudCBwcm9qZWN0cywgYXMg
YFRlc3RDYXNlYCBpcworcGFydCBvZiB0aGUgcHVibGljIEFQSSBhdCB2YXJpb3VzIHBsYWNlcy4K
KworU28gZm9yIHRoZSB0aW1lIGJlaW5nLCBwbGVhc2UgYmUgYXdhcmUgb2YgdGhlIGRpZmZlcmVu
dCBkZWZpbml0aW9ucyBvZgordGhlIHRlcm1zOgorCitNZWFuaW5nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCBnb29nbGV0ZXN0IFRlcm0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
W0lTVFFCXShodHRwOi8vd3d3LmlzdHFiLm9yZy8pIFRlcm0KKzotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRXhlcmNpc2UgYSBwYXJ0
aWN1bGFyIHByb2dyYW0gcGF0aCB3aXRoIHNwZWNpZmljIGlucHV0IHZhbHVlcyBhbmQgdmVyaWZ5
IHRoZSByZXN1bHRzIHwgW1RFU1QoKV0oI3NpbXBsZS10ZXN0cykgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IFtUZXN0IENhc2VdKGh0dHA6Ly9nbG9zc2FyeS5pc3RxYi5vcmcvc2VhcmNoL3Rl
c3QlMjBjYXNlKQorQSBzZXQgb2Ygc2V2ZXJhbCB0ZXN0cyByZWxhdGVkIHRvIG9uZSBjb21wb25l
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW1Rlc3RDYXNlXSgjYmFz
aWMtY29uY2VwdHMpIHwgW1Rlc3RTdWl0ZV0oaHR0cDovL2dsb3NzYXJ5LmlzdHFiLm9yZy9zZWFy
Y2gvdGVzdCUyMHN1aXRlKQorCisjIyBCYXNpYyBDb25jZXB0cworCitXaGVuIHVzaW5nIGdvb2ds
ZXRlc3QsIHlvdSBzdGFydCBieSB3cml0aW5nICphc3NlcnRpb25zKiwgd2hpY2ggYXJlIHN0YXRl
bWVudHMKK3RoYXQgY2hlY2sgd2hldGhlciBhIGNvbmRpdGlvbiBpcyB0cnVlLiBBbiBhc3NlcnRp
b24ncyByZXN1bHQgY2FuIGJlICpzdWNjZXNzKiwKKypub25mYXRhbCBmYWlsdXJlKiwgb3IgKmZh
dGFsIGZhaWx1cmUqLiBJZiBhIGZhdGFsIGZhaWx1cmUgb2NjdXJzLCBpdCBhYm9ydHMgdGhlCitj
dXJyZW50IGZ1bmN0aW9uOyBvdGhlcndpc2UgdGhlIHByb2dyYW0gY29udGludWVzIG5vcm1hbGx5
LgorCisqVGVzdHMqIHVzZSBhc3NlcnRpb25zIHRvIHZlcmlmeSB0aGUgdGVzdGVkIGNvZGUncyBi
ZWhhdmlvci4gSWYgYSB0ZXN0IGNyYXNoZXMKK29yIGhhcyBhIGZhaWxlZCBhc3NlcnRpb24sIHRo
ZW4gaXQgKmZhaWxzKjsgb3RoZXJ3aXNlIGl0ICpzdWNjZWVkcyouCisKK0EgKnRlc3QgY2FzZSog
Y29udGFpbnMgb25lIG9yIG1hbnkgdGVzdHMuIFlvdSBzaG91bGQgZ3JvdXAgeW91ciB0ZXN0cyBp
bnRvIHRlc3QKK2Nhc2VzIHRoYXQgcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mIHRoZSB0ZXN0ZWQg
Y29kZS4gV2hlbiBtdWx0aXBsZSB0ZXN0cyBpbiBhCit0ZXN0IGNhc2UgbmVlZCB0byBzaGFyZSBj
b21tb24gb2JqZWN0cyBhbmQgc3Vicm91dGluZXMsIHlvdSBjYW4gcHV0IHRoZW0gaW50byBhCisq
dGVzdCBmaXh0dXJlKiBjbGFzcy4KKworQSAqdGVzdCBwcm9ncmFtKiBjYW4gY29udGFpbiBtdWx0
aXBsZSB0ZXN0IGNhc2VzLgorCitXZSdsbCBub3cgZXhwbGFpbiBob3cgdG8gd3JpdGUgYSB0ZXN0
IHByb2dyYW0sIHN0YXJ0aW5nIGF0IHRoZSBpbmRpdmlkdWFsCithc3NlcnRpb24gbGV2ZWwgYW5k
IGJ1aWxkaW5nIHVwIHRvIHRlc3RzIGFuZCB0ZXN0IGNhc2VzLgorCisjIyBBc3NlcnRpb25zCisK
K2dvb2dsZXRlc3QgYXNzZXJ0aW9ucyBhcmUgbWFjcm9zIHRoYXQgcmVzZW1ibGUgZnVuY3Rpb24g
Y2FsbHMuIFlvdSB0ZXN0IGEgY2xhc3MKK29yIGZ1bmN0aW9uIGJ5IG1ha2luZyBhc3NlcnRpb25z
IGFib3V0IGl0cyBiZWhhdmlvci4gV2hlbiBhbiBhc3NlcnRpb24gZmFpbHMsCitnb29nbGV0ZXN0
IHByaW50cyB0aGUgYXNzZXJ0aW9uJ3Mgc291cmNlIGZpbGUgYW5kIGxpbmUgbnVtYmVyIGxvY2F0
aW9uLCBhbG9uZword2l0aCBhIGZhaWx1cmUgbWVzc2FnZS4gWW91IG1heSBhbHNvIHN1cHBseSBh
IGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2Ugd2hpY2ggd2lsbAorYmUgYXBwZW5kZWQgdG8gZ29vZ2xl
dGVzdCdzIG1lc3NhZ2UuCisKK1RoZSBhc3NlcnRpb25zIGNvbWUgaW4gcGFpcnMgdGhhdCB0ZXN0
IHRoZSBzYW1lIHRoaW5nIGJ1dCBoYXZlIGRpZmZlcmVudCBlZmZlY3RzCitvbiB0aGUgY3VycmVu
dCBmdW5jdGlvbi4gYEFTU0VSVF8qYCB2ZXJzaW9ucyBnZW5lcmF0ZSBmYXRhbCBmYWlsdXJlcyB3
aGVuIHRoZXkKK2ZhaWwsIGFuZCAqKmFib3J0IHRoZSBjdXJyZW50IGZ1bmN0aW9uKiouIGBFWFBF
Q1RfKmAgdmVyc2lvbnMgZ2VuZXJhdGUgbm9uZmF0YWwKK2ZhaWx1cmVzLCB3aGljaCBkb24ndCBh
Ym9ydCB0aGUgY3VycmVudCBmdW5jdGlvbi4gVXN1YWxseSBgRVhQRUNUXypgIGFyZQorcHJlZmVy
cmVkLCBhcyB0aGV5IGFsbG93IG1vcmUgdGhhbiBvbmUgZmFpbHVyZSB0byBiZSByZXBvcnRlZCBp
biBhIHRlc3QuCitIb3dldmVyLCB5b3Ugc2hvdWxkIHVzZSBgQVNTRVJUXypgIGlmIGl0IGRvZXNu
J3QgbWFrZSBzZW5zZSB0byBjb250aW51ZSB3aGVuIHRoZQorYXNzZXJ0aW9uIGluIHF1ZXN0aW9u
IGZhaWxzLgorCitTaW5jZSBhIGZhaWxlZCBgQVNTRVJUXypgIHJldHVybnMgZnJvbSB0aGUgY3Vy
cmVudCBmdW5jdGlvbiBpbW1lZGlhdGVseSwKK3Bvc3NpYmx5IHNraXBwaW5nIGNsZWFuLXVwIGNv
ZGUgdGhhdCBjb21lcyBhZnRlciBpdCwgaXQgbWF5IGNhdXNlIGEgc3BhY2UgbGVhay4KK0RlcGVu
ZGluZyBvbiB0aGUgbmF0dXJlIG9mIHRoZSBsZWFrLCBpdCBtYXkgb3IgbWF5IG5vdCBiZSB3b3J0
aCBmaXhpbmcgLSBzbyBrZWVwCit0aGlzIGluIG1pbmQgaWYgeW91IGdldCBhIGhlYXAgY2hlY2tl
ciBlcnJvciBpbiBhZGRpdGlvbiB0byBhc3NlcnRpb24gZXJyb3JzLgorCitUbyBwcm92aWRlIGEg
Y3VzdG9tIGZhaWx1cmUgbWVzc2FnZSwgc2ltcGx5IHN0cmVhbSBpdCBpbnRvIHRoZSBtYWNybyB1
c2luZyB0aGUKK2A8PGAgb3BlcmF0b3IsIG9yIGEgc2VxdWVuY2Ugb2Ygc3VjaCBvcGVyYXRvcnMu
IEFuIGV4YW1wbGU6CisKK2BgYGMrKworQVNTRVJUX0VRKHguc2l6ZSgpLCB5LnNpemUoKSkgPDwg
IlZlY3RvcnMgeCBhbmQgeSBhcmUgb2YgdW5lcXVhbCBsZW5ndGgiOworCitmb3IgKGludCBpID0g
MDsgaSA8IHguc2l6ZSgpOyArK2kpIHsKKyAgRVhQRUNUX0VRKHhbaV0sIHlbaV0pIDw8ICJWZWN0
b3JzIHggYW5kIHkgZGlmZmVyIGF0IGluZGV4ICIgPDwgaTsKK30KK2BgYAorCitBbnl0aGluZyB0
aGF0IGNhbiBiZSBzdHJlYW1lZCB0byBhbiBgb3N0cmVhbWAgY2FuIGJlIHN0cmVhbWVkIHRvIGFu
IGFzc2VydGlvbgorbWFjcm8tLWluIHBhcnRpY3VsYXIsIEMgc3RyaW5ncyBhbmQgYHN0cmluZ2Ag
b2JqZWN0cy4gSWYgYSB3aWRlIHN0cmluZworKGB3Y2hhcl90KmAsIGBUQ0hBUipgIGluIGBVTklD
T0RFYCBtb2RlIG9uIFdpbmRvd3MsIG9yIGBzdGQ6OndzdHJpbmdgKSBpcworc3RyZWFtZWQgdG8g
YW4gYXNzZXJ0aW9uLCBpdCB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gVVRGLTggd2hlbiBwcmludGVk
LgorCisjIyMgQmFzaWMgQXNzZXJ0aW9ucworCitUaGVzZSBhc3NlcnRpb25zIGRvIGJhc2ljIHRy
dWUvZmFsc2UgY29uZGl0aW9uIHRlc3RpbmcuCisKK0ZhdGFsIGFzc2VydGlvbiAgICAgICAgICAg
IHwgTm9uZmF0YWwgYXNzZXJ0aW9uICAgICAgICAgfCBWZXJpZmllcworLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0t
LS0tLS0tCitgQVNTRVJUX1RSVUUoY29uZGl0aW9uKTtgICB8IGBFWFBFQ1RfVFJVRShjb25kaXRp
b24pO2AgIHwgYGNvbmRpdGlvbmAgaXMgdHJ1ZQorYEFTU0VSVF9GQUxTRShjb25kaXRpb24pO2Ag
fCBgRVhQRUNUX0ZBTFNFKGNvbmRpdGlvbik7YCB8IGBjb25kaXRpb25gIGlzIGZhbHNlCisKK1Jl
bWVtYmVyLCB3aGVuIHRoZXkgZmFpbCwgYEFTU0VSVF8qYCB5aWVsZHMgYSBmYXRhbCBmYWlsdXJl
IGFuZCByZXR1cm5zIGZyb20gdGhlCitjdXJyZW50IGZ1bmN0aW9uLCB3aGlsZSBgRVhQRUNUXypg
IHlpZWxkcyBhIG5vbmZhdGFsIGZhaWx1cmUsIGFsbG93aW5nIHRoZQorZnVuY3Rpb24gdG8gY29u
dGludWUgcnVubmluZy4gSW4gZWl0aGVyIGNhc2UsIGFuIGFzc2VydGlvbiBmYWlsdXJlIG1lYW5z
IGl0cworY29udGFpbmluZyB0ZXN0IGZhaWxzLgorCisqKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwg
V2luZG93cywgTWFjLgorCisjIyMgQmluYXJ5IENvbXBhcmlzb24KKworVGhpcyBzZWN0aW9uIGRl
c2NyaWJlcyBhc3NlcnRpb25zIHRoYXQgY29tcGFyZSB0d28gdmFsdWVzLgorCitGYXRhbCBhc3Nl
cnRpb24gICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAgfCBWZXJpZmllcworLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0t
LS0tLS0tLS0KK2BBU1NFUlRfRVEodmFsMSwgdmFsMik7YCB8IGBFWFBFQ1RfRVEodmFsMSwgdmFs
Mik7YCB8IGB2YWwxID09IHZhbDJgCitgQVNTRVJUX05FKHZhbDEsIHZhbDIpO2AgfCBgRVhQRUNU
X05FKHZhbDEsIHZhbDIpO2AgfCBgdmFsMSAhPSB2YWwyYAorYEFTU0VSVF9MVCh2YWwxLCB2YWwy
KTtgIHwgYEVYUEVDVF9MVCh2YWwxLCB2YWwyKTtgIHwgYHZhbDEgPCB2YWwyYAorYEFTU0VSVF9M
RSh2YWwxLCB2YWwyKTtgIHwgYEVYUEVDVF9MRSh2YWwxLCB2YWwyKTtgIHwgYHZhbDEgPD0gdmFs
MmAKK2BBU1NFUlRfR1QodmFsMSwgdmFsMik7YCB8IGBFWFBFQ1RfR1QodmFsMSwgdmFsMik7YCB8
IGB2YWwxID4gdmFsMmAKK2BBU1NFUlRfR0UodmFsMSwgdmFsMik7YCB8IGBFWFBFQ1RfR0UodmFs
MSwgdmFsMik7YCB8IGB2YWwxID49IHZhbDJgCisKK1ZhbHVlIGFyZ3VtZW50cyBtdXN0IGJlIGNv
bXBhcmFibGUgYnkgdGhlIGFzc2VydGlvbidzIGNvbXBhcmlzb24gb3BlcmF0b3Igb3IKK3lvdSds
bCBnZXQgYSBjb21waWxlciBlcnJvci4gV2UgdXNlZCB0byByZXF1aXJlIHRoZSBhcmd1bWVudHMg
dG8gc3VwcG9ydCB0aGUKK2A8PGAgb3BlcmF0b3IgZm9yIHN0cmVhbWluZyB0byBhbiBgb3N0cmVh
bWAsIGJ1dCBpdCdzIG5vIGxvbmdlciBuZWNlc3NhcnkuIElmCitgPDxgIGlzIHN1cHBvcnRlZCwg
aXQgd2lsbCBiZSBjYWxsZWQgdG8gcHJpbnQgdGhlIGFyZ3VtZW50cyB3aGVuIHRoZSBhc3NlcnRp
b24KK2ZhaWxzOyBvdGhlcndpc2UgZ29vZ2xldGVzdCB3aWxsIGF0dGVtcHQgdG8gcHJpbnQgdGhl
bSBpbiB0aGUgYmVzdCB3YXkgaXQgY2FuLgorRm9yIG1vcmUgZGV0YWlscyBhbmQgaG93IHRvIGN1
c3RvbWl6ZSB0aGUgcHJpbnRpbmcgb2YgdGhlIGFyZ3VtZW50cywgc2VlCitnTW9jayBbcmVjaXBl
XSguLi8uLi9nb29nbGVtb2NrL2RvY3MvQ29va0Jvb2subWQjdGVhY2hpbmctZ29vZ2xlLW1vY2st
aG93LXRvLXByaW50LXlvdXItdmFsdWVzKS4pLgorCitUaGVzZSBhc3NlcnRpb25zIGNhbiB3b3Jr
IHdpdGggYSB1c2VyLWRlZmluZWQgdHlwZSwgYnV0IG9ubHkgaWYgeW91IGRlZmluZSB0aGUKK2Nv
cnJlc3BvbmRpbmcgY29tcGFyaXNvbiBvcGVyYXRvciAoZS5nLiBgPT1gLCBgPGAsIGV0YykuIFNp
bmNlIHRoaXMgaXMKK2Rpc2NvdXJhZ2VkIGJ5IHRoZSBHb29nbGUgW0MrKyBTdHlsZQorR3VpZGVd
KGh0dHBzOi8vZ29vZ2xlLmdpdGh1Yi5pby9zdHlsZWd1aWRlL2NwcGd1aWRlLmh0bWwjT3BlcmF0
b3JfT3ZlcmxvYWRpbmcpLAoreW91IG1heSBuZWVkIHRvIHVzZSBgQVNTRVJUX1RSVUUoKWAgb3Ig
YEVYUEVDVF9UUlVFKClgIHRvIGFzc2VydCB0aGUgZXF1YWxpdHkgb2YKK3R3byBvYmplY3RzIG9m
IGEgdXNlci1kZWZpbmVkIHR5cGUuCisKK0hvd2V2ZXIsIHdoZW4gcG9zc2libGUsIGBBU1NFUlRf
RVEoYWN0dWFsLCBleHBlY3RlZClgIGlzIHByZWZlcnJlZCB0bworYEFTU0VSVF9UUlVFKGFjdHVh
bCA9PSBleHBlY3RlZClgLCBzaW5jZSBpdCB0ZWxscyB5b3UgYGFjdHVhbGAgYW5kIGBleHBlY3Rl
ZGAncwordmFsdWVzIG9uIGZhaWx1cmUuCisKK0FyZ3VtZW50cyBhcmUgYWx3YXlzIGV2YWx1YXRl
ZCBleGFjdGx5IG9uY2UuIFRoZXJlZm9yZSwgaXQncyBPSyBmb3IgdGhlCithcmd1bWVudHMgdG8g
aGF2ZSBzaWRlIGVmZmVjdHMuIEhvd2V2ZXIsIGFzIHdpdGggYW55IG9yZGluYXJ5IEMvQysrIGZ1
bmN0aW9uLAordGhlIGFyZ3VtZW50cycgZXZhbHVhdGlvbiBvcmRlciBpcyB1bmRlZmluZWQgKGku
ZS4gdGhlIGNvbXBpbGVyIGlzIGZyZWUgdG8KK2Nob29zZSBhbnkgb3JkZXIpIGFuZCB5b3VyIGNv
ZGUgc2hvdWxkIG5vdCBkZXBlbmQgb24gYW55IHBhcnRpY3VsYXIgYXJndW1lbnQKK2V2YWx1YXRp
b24gb3JkZXIuCisKK2BBU1NFUlRfRVEoKWAgZG9lcyBwb2ludGVyIGVxdWFsaXR5IG9uIHBvaW50
ZXJzLiBJZiB1c2VkIG9uIHR3byBDIHN0cmluZ3MsIGl0Cit0ZXN0cyBpZiB0aGV5IGFyZSBpbiB0
aGUgc2FtZSBtZW1vcnkgbG9jYXRpb24sIG5vdCBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgdmFsdWUu
CitUaGVyZWZvcmUsIGlmIHlvdSB3YW50IHRvIGNvbXBhcmUgQyBzdHJpbmdzIChlLmcuIGBjb25z
dCBjaGFyKmApIGJ5IHZhbHVlLCB1c2UKK2BBU1NFUlRfU1RSRVEoKWAsIHdoaWNoIHdpbGwgYmUg
ZGVzY3JpYmVkIGxhdGVyIG9uLiBJbiBwYXJ0aWN1bGFyLCB0byBhc3NlcnQKK3RoYXQgYSBDIHN0
cmluZyBpcyBgTlVMTGAsIHVzZSBgQVNTRVJUX1NUUkVRKGNfc3RyaW5nLCBOVUxMKWAuIENvbnNp
ZGVyIHVzZQorYEFTU0VSVF9FUShjX3N0cmluZywgbnVsbHB0cilgIGlmIGMrKzExIGlzIHN1cHBv
cnRlZC4gVG8gY29tcGFyZSB0d28gYHN0cmluZ2AKK29iamVjdHMsIHlvdSBzaG91bGQgdXNlIGBB
U1NFUlRfRVFgLgorCitXaGVuIGRvaW5nIHBvaW50ZXIgY29tcGFyaXNvbnMgdXNlIGAqX0VRKHB0
ciwgbnVsbHB0cilgIGFuZCBgKl9ORShwdHIsIG51bGxwdHIpYAoraW5zdGVhZCBvZiBgKl9FUShw
dHIsIE5VTEwpYCBhbmQgYCpfTkUocHRyLCBOVUxMKWAuIFRoaXMgaXMgYmVjYXVzZSBgbnVsbHB0
cmAgaXMKK3R5cGVkIHdoaWxlIGBOVUxMYCBpcyBub3QuIFNlZSBbRkFRXShmYXEubWQjd2h5LWRv
ZXMtZ29vZ2xlLXRlc3Qtc3VwcG9ydC1leHBlY3RfZXFudWxsLXB0ci1hbmQtYXNzZXJ0X2VxbnVs
bC1wdHItYnV0LW5vdC1leHBlY3RfbmVudWxsLXB0ci1hbmQtYXNzZXJ0X25lbnVsbC1wdHIpCitm
b3IgbW9yZSBkZXRhaWxzLgorCitJZiB5b3UncmUgd29ya2luZyB3aXRoIGZsb2F0aW5nIHBvaW50
IG51bWJlcnMsIHlvdSBtYXkgd2FudCB0byB1c2UgdGhlIGZsb2F0aW5nCitwb2ludCB2YXJpYXRp
b25zIG9mIHNvbWUgb2YgdGhlc2UgbWFjcm9zIGluIG9yZGVyIHRvIGF2b2lkIHByb2JsZW1zIGNh
dXNlZCBieQorcm91bmRpbmcuIFNlZSBbQWR2YW5jZWQgZ29vZ2xldGVzdCBUb3BpY3NdKGFkdmFu
Y2VkLm1kKSBmb3IgZGV0YWlscy4KKworTWFjcm9zIGluIHRoaXMgc2VjdGlvbiB3b3JrIHdpdGgg
Ym90aCBuYXJyb3cgYW5kIHdpZGUgc3RyaW5nIG9iamVjdHMgKGBzdHJpbmdgCithbmQgYHdzdHJp
bmdgKS4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KKworKipIaXN0
b3JpY2FsIG5vdGUqKjogQmVmb3JlIEZlYnJ1YXJ5IDIwMTYgYCpfRVFgIGhhZCBhIGNvbnZlbnRp
b24gb2YgY2FsbGluZyBpdAorYXMgYEFTU0VSVF9FUShleHBlY3RlZCwgYWN0dWFsKWAsIHNvIGxv
dHMgb2YgZXhpc3RpbmcgY29kZSB1c2VzIHRoaXMgb3JkZXIuIE5vdworYCpfRVFgIHRyZWF0cyBi
b3RoIHBhcmFtZXRlcnMgaW4gdGhlIHNhbWUgd2F5LgorCisjIyMgU3RyaW5nIENvbXBhcmlzb24K
KworVGhlIGFzc2VydGlvbnMgaW4gdGhpcyBncm91cCBjb21wYXJlIHR3byAqKkMgc3RyaW5ncyoq
LiBJZiB5b3Ugd2FudCB0byBjb21wYXJlCit0d28gYHN0cmluZ2Agb2JqZWN0cywgdXNlIGBFWFBF
Q1RfRVFgLCBgRVhQRUNUX05FYCwgYW5kIGV0YyBpbnN0ZWFkLgorCit8IEZhdGFsIGFzc2VydGlv
biAgICAgICAgICAgICAgICAgfCBOb25mYXRhbCBhc3NlcnRpb24gICAgICAgICAgICAgIHwgVmVy
aWZpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
fCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIHwKK3wgYEFTU0VSVF9TVFJFUShzdHIxLCBzdHIyKTtgICAgICB8IGBFWFBF
Q1RfU1RSRVEoc3RyMSwgc3RyMik7YCAgICAgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIHRoZSBz
YW1lIGNvbnRlbnQgICAgICAgICAgICAgICAgICB8Cit8IGBBU1NFUlRfU1RSTkUoc3RyMSwgc3Ry
Mik7YCAgICAgfCBgRVhQRUNUX1NUUk5FKHN0cjEsIHN0cjIpO2AgICAgIHwgdGhlIHR3byBDIHN0
cmluZ3MgaGF2ZSBkaWZmZXJlbnQgY29udGVudHMgICAgICAgICAgICAgICAgfAorfCBgQVNTRVJU
X1NUUkNBU0VFUShzdHIxLCBzdHIyKTtgIHwgYEVYUEVDVF9TVFJDQVNFRVEoc3RyMSwgc3RyMik7
YCB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUgdGhlIHNhbWUgY29udGVudCwgaWdub3JpbmcgY2Fz
ZSAgIHwKK3wgYEFTU0VSVF9TVFJDQVNFTkUoc3RyMSwgc3RyMik7YCB8IGBFWFBFQ1RfU1RSQ0FT
RU5FKHN0cjEsIHN0cjIpO2AgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIGRpZmZlcmVudCBjb250
ZW50cywgaWdub3JpbmcgY2FzZSB8CisKK05vdGUgdGhhdCAiQ0FTRSIgaW4gYW4gYXNzZXJ0aW9u
IG5hbWUgbWVhbnMgdGhhdCBjYXNlIGlzIGlnbm9yZWQuIEEgYE5VTExgCitwb2ludGVyIGFuZCBh
biBlbXB0eSBzdHJpbmcgYXJlIGNvbnNpZGVyZWQgKmRpZmZlcmVudCouCisKK2AqU1RSRVEqYCBh
bmQgYCpTVFJORSpgIGFsc28gYWNjZXB0IHdpZGUgQyBzdHJpbmdzIChgd2NoYXJfdCpgKS4gSWYg
YSBjb21wYXJpc29uCitvZiB0d28gd2lkZSBzdHJpbmdzIGZhaWxzLCB0aGVpciB2YWx1ZXMgd2ls
bCBiZSBwcmludGVkIGFzIFVURi04IG5hcnJvdyBzdHJpbmdzLgorCisqKkF2YWlsYWJpbGl0eSoq
OiBMaW51eCwgV2luZG93cywgTWFjLgorCisqKlNlZSBhbHNvKio6IEZvciBtb3JlIHN0cmluZyBj
b21wYXJpc29uIHRyaWNrcyAoc3Vic3RyaW5nLCBwcmVmaXgsIHN1ZmZpeCwgYW5kCityZWd1bGFy
IGV4cHJlc3Npb24gbWF0Y2hpbmcsIGZvciBleGFtcGxlKSwgc2VlCitbdGhpc10oaHR0cHM6Ly9n
aXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2dsZXRlc3QvZG9jcy9h
ZHZhbmNlZC5tZCkKK2luIHRoZSBBZHZhbmNlZCBnb29nbGV0ZXN0IEd1aWRlLgorCisjIyBTaW1w
bGUgVGVzdHMKKworVG8gY3JlYXRlIGEgdGVzdDoKKworMS4gIFVzZSB0aGUgYFRFU1QoKWAgbWFj
cm8gdG8gZGVmaW5lIGFuZCBuYW1lIGEgdGVzdCBmdW5jdGlvbiwgVGhlc2UgYXJlCisgICAgb3Jk
aW5hcnkgQysrIGZ1bmN0aW9ucyB0aGF0IGRvbid0IHJldHVybiBhIHZhbHVlLgorMS4gIEluIHRo
aXMgZnVuY3Rpb24sIGFsb25nIHdpdGggYW55IHZhbGlkIEMrKyBzdGF0ZW1lbnRzIHlvdSB3YW50
IHRvIGluY2x1ZGUsCisgICAgdXNlIHRoZSB2YXJpb3VzIGdvb2dsZXRlc3QgYXNzZXJ0aW9ucyB0
byBjaGVjayB2YWx1ZXMuCisxLiAgVGhlIHRlc3QncyByZXN1bHQgaXMgZGV0ZXJtaW5lZCBieSB0
aGUgYXNzZXJ0aW9uczsgaWYgYW55IGFzc2VydGlvbiBpbiB0aGUKKyAgICB0ZXN0IGZhaWxzIChl
aXRoZXIgZmF0YWxseSBvciBub24tZmF0YWxseSksIG9yIGlmIHRoZSB0ZXN0IGNyYXNoZXMsIHRo
ZQorICAgIGVudGlyZSB0ZXN0IGZhaWxzLiBPdGhlcndpc2UsIGl0IHN1Y2NlZWRzLgorCitgYGBj
KysKK1RFU1QoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSkgeworICAuLi4gdGVzdCBib2R5IC4uLgor
fQorYGBgCisKK2BURVNUKClgIGFyZ3VtZW50cyBnbyBmcm9tIGdlbmVyYWwgdG8gc3BlY2lmaWMu
IFRoZSAqZmlyc3QqIGFyZ3VtZW50IGlzIHRoZSBuYW1lCitvZiB0aGUgdGVzdCBjYXNlLCBhbmQg
dGhlICpzZWNvbmQqIGFyZ3VtZW50IGlzIHRoZSB0ZXN0J3MgbmFtZSB3aXRoaW4gdGhlIHRlc3QK
K2Nhc2UuIEJvdGggbmFtZXMgbXVzdCBiZSB2YWxpZCBDKysgaWRlbnRpZmllcnMsIGFuZCB0aGV5
IHNob3VsZCBub3QgY29udGFpbgordW5kZXJzY29yZSAoYF9gKS4gQSB0ZXN0J3MgKmZ1bGwgbmFt
ZSogY29uc2lzdHMgb2YgaXRzIGNvbnRhaW5pbmcgdGVzdCBjYXNlIGFuZAoraXRzIGluZGl2aWR1
YWwgbmFtZS4gVGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcyBjYW4gaGF2ZSB0aGUgc2Ft
ZQoraW5kaXZpZHVhbCBuYW1lLgorCitGb3IgZXhhbXBsZSwgbGV0J3MgdGFrZSBhIHNpbXBsZSBp
bnRlZ2VyIGZ1bmN0aW9uOgorCitgYGBjKysKK2ludCBGYWN0b3JpYWwoaW50IG4pOyAgLy8gUmV0
dXJucyB0aGUgZmFjdG9yaWFsIG9mIG4KK2BgYAorCitBIHRlc3QgY2FzZSBmb3IgdGhpcyBmdW5j
dGlvbiBtaWdodCBsb29rIGxpa2U6CisKK2BgYGMrKworLy8gVGVzdHMgZmFjdG9yaWFsIG9mIDAu
CitURVNUKEZhY3RvcmlhbFRlc3QsIEhhbmRsZXNaZXJvSW5wdXQpIHsKKyAgRVhQRUNUX0VRKEZh
Y3RvcmlhbCgwKSwgMSk7Cit9CisKKy8vIFRlc3RzIGZhY3RvcmlhbCBvZiBwb3NpdGl2ZSBudW1i
ZXJzLgorVEVTVChGYWN0b3JpYWxUZXN0LCBIYW5kbGVzUG9zaXRpdmVJbnB1dCkgeworICBFWFBF
Q1RfRVEoRmFjdG9yaWFsKDEpLCAxKTsKKyAgRVhQRUNUX0VRKEZhY3RvcmlhbCgyKSwgMik7Cisg
IEVYUEVDVF9FUShGYWN0b3JpYWwoMyksIDYpOworICBFWFBFQ1RfRVEoRmFjdG9yaWFsKDgpLCA0
MDMyMCk7Cit9CitgYGAKKworZ29vZ2xldGVzdCBncm91cHMgdGhlIHRlc3QgcmVzdWx0cyBieSB0
ZXN0IGNhc2VzLCBzbyBsb2dpY2FsbHktcmVsYXRlZCB0ZXN0cworc2hvdWxkIGJlIGluIHRoZSBz
YW1lIHRlc3QgY2FzZTsgaW4gb3RoZXIgd29yZHMsIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGVp
cgorYFRFU1QoKWAgc2hvdWxkIGJlIHRoZSBzYW1lLiBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgd2Ug
aGF2ZSB0d28gdGVzdHMsCitgSGFuZGxlc1plcm9JbnB1dGAgYW5kIGBIYW5kbGVzUG9zaXRpdmVJ
bnB1dGAsIHRoYXQgYmVsb25nIHRvIHRoZSBzYW1lIHRlc3QgY2FzZQorYEZhY3RvcmlhbFRlc3Rg
LgorCitXaGVuIG5hbWluZyB5b3VyIHRlc3QgY2FzZXMgYW5kIHRlc3RzLCB5b3Ugc2hvdWxkIGZv
bGxvdyB0aGUgc2FtZSBjb252ZW50aW9uIGFzCitmb3IgW25hbWluZyBmdW5jdGlvbnMgYW5kCitj
bGFzc2VzXShodHRwczovL2dvb2dsZS5naXRodWIuaW8vc3R5bGVndWlkZS9jcHBndWlkZS5odG1s
I0Z1bmN0aW9uX05hbWVzKS4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1h
Yy4KKworIyMgVGVzdCBGaXh0dXJlczogVXNpbmcgdGhlIFNhbWUgRGF0YSBDb25maWd1cmF0aW9u
IGZvciBNdWx0aXBsZSBUZXN0cworCitJZiB5b3UgZmluZCB5b3Vyc2VsZiB3cml0aW5nIHR3byBv
ciBtb3JlIHRlc3RzIHRoYXQgb3BlcmF0ZSBvbiBzaW1pbGFyIGRhdGEsIHlvdQorY2FuIHVzZSBh
ICp0ZXN0IGZpeHR1cmUqLiBJdCBhbGxvd3MgeW91IHRvIHJldXNlIHRoZSBzYW1lIGNvbmZpZ3Vy
YXRpb24gb2YKK29iamVjdHMgZm9yIHNldmVyYWwgZGlmZmVyZW50IHRlc3RzLgorCitUbyBjcmVh
dGUgYSBmaXh0dXJlOgorCisxLiAgRGVyaXZlIGEgY2xhc3MgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0
YCAuIFN0YXJ0IGl0cyBib2R5IHdpdGggYHByb3RlY3RlZDpgIGFzCisgICAgd2UnbGwgd2FudCB0
byBhY2Nlc3MgZml4dHVyZSBtZW1iZXJzIGZyb20gc3ViLWNsYXNzZXMuCisxLiAgSW5zaWRlIHRo
ZSBjbGFzcywgZGVjbGFyZSBhbnkgb2JqZWN0cyB5b3UgcGxhbiB0byB1c2UuCisxLiAgSWYgbmVj
ZXNzYXJ5LCB3cml0ZSBhIGRlZmF1bHQgY29uc3RydWN0b3Igb3IgYFNldFVwKClgIGZ1bmN0aW9u
IHRvIHByZXBhcmUKKyAgICB0aGUgb2JqZWN0cyBmb3IgZWFjaCB0ZXN0LiBBIGNvbW1vbiBtaXN0
YWtlIGlzIHRvIHNwZWxsIGBTZXRVcCgpYCBhcworICAgICoqYFNldHVwKClgKiogd2l0aCBhIHNt
YWxsIGB1YCAtIFVzZSBgb3ZlcnJpZGVgIGluIEMrKzExIHRvIG1ha2Ugc3VyZSB5b3UKKyAgICBz
cGVsbGVkIGl0IGNvcnJlY3RseQorMS4gIElmIG5lY2Vzc2FyeSwgd3JpdGUgYSBkZXN0cnVjdG9y
IG9yIGBUZWFyRG93bigpYCBmdW5jdGlvbiB0byByZWxlYXNlIGFueQorICAgIHJlc291cmNlcyB5
b3UgYWxsb2NhdGVkIGluIGBTZXRVcCgpYCAuIFRvIGxlYXJuIHdoZW4geW91IHNob3VsZCB1c2Ug
dGhlCisgICAgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBhbmQgd2hlbiB5b3Ugc2hvdWxkIHVzZSBg
U2V0VXAoKS9UZWFyRG93bigpYCwgcmVhZAorICAgIHRoaXMgW0ZBUV0oZmFxLm1kI3Nob3VsZC1p
LXVzZS10aGUtY29uc3RydWN0b3JkZXN0cnVjdG9yLW9mLXRoZS10ZXN0LWZpeHR1cmUtb3Itc2V0
dXB0ZWFyZG93bikgZW50cnkuCisxLiAgSWYgbmVlZGVkLCBkZWZpbmUgc3Vicm91dGluZXMgZm9y
IHlvdXIgdGVzdHMgdG8gc2hhcmUuCisKK1doZW4gdXNpbmcgYSBmaXh0dXJlLCB1c2UgYFRFU1Rf
RigpYCBpbnN0ZWFkIG9mIGBURVNUKClgIGFzIGl0IGFsbG93cyB5b3UgdG8KK2FjY2VzcyBvYmpl
Y3RzIGFuZCBzdWJyb3V0aW5lcyBpbiB0aGUgdGVzdCBmaXh0dXJlOgorCitgYGBjKysKK1RFU1Rf
RihUZXN0Q2FzZU5hbWUsIFRlc3ROYW1lKSB7CisgIC4uLiB0ZXN0IGJvZHkgLi4uCit9CitgYGAK
KworTGlrZSBgVEVTVCgpYCwgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSB0ZXN0IGNhc2UgbmFt
ZSwgYnV0IGZvciBgVEVTVF9GKClgIHRoaXMKK211c3QgYmUgdGhlIG5hbWUgb2YgdGhlIHRlc3Qg
Zml4dHVyZSBjbGFzcy4gWW91J3ZlIHByb2JhYmx5IGd1ZXNzZWQ6IGBfRmAgaXMgZm9yCitmaXh0
dXJlLgorCitVbmZvcnR1bmF0ZWx5LCB0aGUgQysrIG1hY3JvIHN5c3RlbSBkb2VzIG5vdCBhbGxv
dyB1cyB0byBjcmVhdGUgYSBzaW5nbGUgbWFjcm8KK3RoYXQgY2FuIGhhbmRsZSBib3RoIHR5cGVz
IG9mIHRlc3RzLiBVc2luZyB0aGUgd3JvbmcgbWFjcm8gY2F1c2VzIGEgY29tcGlsZXIKK2Vycm9y
LgorCitBbHNvLCB5b3UgbXVzdCBmaXJzdCBkZWZpbmUgYSB0ZXN0IGZpeHR1cmUgY2xhc3MgYmVm
b3JlIHVzaW5nIGl0IGluIGEKK2BURVNUX0YoKWAsIG9yIHlvdSdsbCBnZXQgdGhlIGNvbXBpbGVy
IGVycm9yICJgdmlydHVhbCBvdXRzaWRlIGNsYXNzCitkZWNsYXJhdGlvbmAiLgorCitGb3IgZWFj
aCB0ZXN0IGRlZmluZWQgd2l0aCBgVEVTVF9GKClgICwgZ29vZ2xldGVzdCB3aWxsIGNyZWF0ZSBh
ICpmcmVzaCogdGVzdAorZml4dHVyZSBhdCBydW50aW1lLCBpbW1lZGlhdGVseSBpbml0aWFsaXpl
IGl0IHZpYSBgU2V0VXAoKWAgLCBydW4gdGhlIHRlc3QsCitjbGVhbiB1cCBieSBjYWxsaW5nIGBU
ZWFyRG93bigpYCAsIGFuZCB0aGVuIGRlbGV0ZSB0aGUgdGVzdCBmaXh0dXJlLiBOb3RlIHRoYXQK
K2RpZmZlcmVudCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgaGF2ZSBkaWZmZXJlbnQgdGVz
dCBmaXh0dXJlIG9iamVjdHMsIGFuZAorZ29vZ2xldGVzdCBhbHdheXMgZGVsZXRlcyBhIHRlc3Qg
Zml4dHVyZSBiZWZvcmUgaXQgY3JlYXRlcyB0aGUgbmV4dCBvbmUuCitnb29nbGV0ZXN0IGRvZXMg
Kipub3QqKiByZXVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUgZm9yIG11bHRpcGxlIHRlc3RzLiBB
bnkKK2NoYW5nZXMgb25lIHRlc3QgbWFrZXMgdG8gdGhlIGZpeHR1cmUgZG8gbm90IGFmZmVjdCBv
dGhlciB0ZXN0cy4KKworQXMgYW4gZXhhbXBsZSwgbGV0J3Mgd3JpdGUgdGVzdHMgZm9yIGEgRklG
TyBxdWV1ZSBjbGFzcyBuYW1lZCBgUXVldWVgLCB3aGljaCBoYXMKK3RoZSBmb2xsb3dpbmcgaW50
ZXJmYWNlOgorCitgYGBjKysKK3RlbXBsYXRlIDx0eXBlbmFtZSBFPiAgLy8gRSBpcyB0aGUgZWxl
bWVudCB0eXBlLgorY2xhc3MgUXVldWUgeworIHB1YmxpYzoKKyAgUXVldWUoKTsKKyAgdm9pZCBF
bnF1ZXVlKGNvbnN0IEUmIGVsZW1lbnQpOworICBFKiBEZXF1ZXVlKCk7ICAvLyBSZXR1cm5zIE5V
TEwgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LgorICBzaXplX3Qgc2l6ZSgpIGNvbnN0OworICAuLi4K
K307CitgYGAKKworRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MuIEJ5IGNvbnZlbnRpb24s
IHlvdSBzaG91bGQgZ2l2ZSBpdCB0aGUgbmFtZQorYEZvb1Rlc3RgIHdoZXJlIGBGb29gIGlzIHRo
ZSBjbGFzcyBiZWluZyB0ZXN0ZWQuCisKK2BgYGMrKworY2xhc3MgUXVldWVUZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUg
eworICAgICBxMV8uRW5xdWV1ZSgxKTsKKyAgICAgcTJfLkVucXVldWUoMik7CisgICAgIHEyXy5F
bnF1ZXVlKDMpOworICB9CisKKyAgLy8gdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlIHt9CisKKyAg
UXVldWU8aW50PiBxMF87CisgIFF1ZXVlPGludD4gcTFfOworICBRdWV1ZTxpbnQ+IHEyXzsKK307
CitgYGAKKworSW4gdGhpcyBjYXNlLCBgVGVhckRvd24oKWAgaXMgbm90IG5lZWRlZCBzaW5jZSB3
ZSBkb24ndCBoYXZlIHRvIGNsZWFuIHVwIGFmdGVyCitlYWNoIHRlc3QsIG90aGVyIHRoYW4gd2hh
dCdzIGFscmVhZHkgZG9uZSBieSB0aGUgZGVzdHJ1Y3Rvci4KKworTm93IHdlJ2xsIHdyaXRlIHRl
c3RzIHVzaW5nIGBURVNUX0YoKWAgYW5kIHRoaXMgZml4dHVyZS4KKworYGBgYysrCitURVNUX0Yo
UXVldWVUZXN0LCBJc0VtcHR5SW5pdGlhbGx5KSB7CisgIEVYUEVDVF9FUShxMF8uc2l6ZSgpLCAw
KTsKK30KKworVEVTVF9GKFF1ZXVlVGVzdCwgRGVxdWV1ZVdvcmtzKSB7CisgIGludCogbiA9IHEw
Xy5EZXF1ZXVlKCk7CisgIEVYUEVDVF9FUShuLCBudWxscHRyKTsKKworICBuID0gcTFfLkRlcXVl
dWUoKTsKKyAgQVNTRVJUX05FKG4sIG51bGxwdHIpOworICBFWFBFQ1RfRVEoKm4sIDEpOworICBF
WFBFQ1RfRVEocTFfLnNpemUoKSwgMCk7CisgIGRlbGV0ZSBuOworCisgIG4gPSBxMl8uRGVxdWV1
ZSgpOworICBBU1NFUlRfTkUobiwgbnVsbHB0cik7CisgIEVYUEVDVF9FUSgqbiwgMik7CisgIEVY
UEVDVF9FUShxMl8uc2l6ZSgpLCAxKTsKKyAgZGVsZXRlIG47Cit9CitgYGAKKworVGhlIGFib3Zl
IHVzZXMgYm90aCBgQVNTRVJUXypgIGFuZCBgRVhQRUNUXypgIGFzc2VydGlvbnMuIFRoZSBydWxl
IG9mIHRodW1iIGlzCit0byB1c2UgYEVYUEVDVF8qYCB3aGVuIHlvdSB3YW50IHRoZSB0ZXN0IHRv
IGNvbnRpbnVlIHRvIHJldmVhbCBtb3JlIGVycm9ycyBhZnRlcgordGhlIGFzc2VydGlvbiBmYWls
dXJlLCBhbmQgdXNlIGBBU1NFUlRfKmAgd2hlbiBjb250aW51aW5nIGFmdGVyIGZhaWx1cmUgZG9l
c24ndAorbWFrZSBzZW5zZS4gRm9yIGV4YW1wbGUsIHRoZSBzZWNvbmQgYXNzZXJ0aW9uIGluIHRo
ZSBgRGVxdWV1ZWAgdGVzdCBpcworPUFTU0VSVF9ORShudWxscHRyLCBuKT0sIGFzIHdlIG5lZWQg
dG8gZGVyZWZlcmVuY2UgdGhlIHBvaW50ZXIgYG5gIGxhdGVyLCB3aGljaAord291bGQgbGVhZCB0
byBhIHNlZ2ZhdWx0IHdoZW4gYG5gIGlzIGBOVUxMYC4KKworV2hlbiB0aGVzZSB0ZXN0cyBydW4s
IHRoZSBmb2xsb3dpbmcgaGFwcGVuczoKKworMS4gIGdvb2dsZXRlc3QgY29uc3RydWN0cyBhIGBR
dWV1ZVRlc3RgIG9iamVjdCAobGV0J3MgY2FsbCBpdCBgdDFgICkuCisxLiAgYHQxLlNldFVwKClg
IGluaXRpYWxpemVzIGB0MWAgLgorMS4gIFRoZSBmaXJzdCB0ZXN0ICggYElzRW1wdHlJbml0aWFs
bHlgICkgcnVucyBvbiBgdDFgIC4KKzEuICBgdDEuVGVhckRvd24oKWAgY2xlYW5zIHVwIGFmdGVy
IHRoZSB0ZXN0IGZpbmlzaGVzLgorMS4gIGB0MWAgaXMgZGVzdHJ1Y3RlZC4KKzEuICBUaGUgYWJv
dmUgc3RlcHMgYXJlIHJlcGVhdGVkIG9uIGFub3RoZXIgYFF1ZXVlVGVzdGAgb2JqZWN0LCB0aGlz
IHRpbWUKKyAgICBydW5uaW5nIHRoZSBgRGVxdWV1ZVdvcmtzYCB0ZXN0LgorCisqKkF2YWlsYWJp
bGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgorCisKKyMjIEludm9raW5nIHRoZSBUZXN0cwor
CitgVEVTVCgpYCBhbmQgYFRFU1RfRigpYCBpbXBsaWNpdGx5IHJlZ2lzdGVyIHRoZWlyIHRlc3Rz
IHdpdGggZ29vZ2xldGVzdC4gU28sCit1bmxpa2Ugd2l0aCBtYW55IG90aGVyIEMrKyB0ZXN0aW5n
IGZyYW1ld29ya3MsIHlvdSBkb24ndCBoYXZlIHRvIHJlLWxpc3QgYWxsCit5b3VyIGRlZmluZWQg
dGVzdHMgaW4gb3JkZXIgdG8gcnVuIHRoZW0uCisKK0FmdGVyIGRlZmluaW5nIHlvdXIgdGVzdHMs
IHlvdSBjYW4gcnVuIHRoZW0gd2l0aCBgUlVOX0FMTF9URVNUUygpYCAsIHdoaWNoCityZXR1cm5z
IGAwYCBpZiBhbGwgdGhlIHRlc3RzIGFyZSBzdWNjZXNzZnVsLCBvciBgMWAgb3RoZXJ3aXNlLiBO
b3RlIHRoYXQKK2BSVU5fQUxMX1RFU1RTKClgIHJ1bnMgKmFsbCB0ZXN0cyogaW4geW91ciBsaW5r
IHVuaXQgLS0gdGhleSBjYW4gYmUgZnJvbQorZGlmZmVyZW50IHRlc3QgY2FzZXMsIG9yIGV2ZW4g
ZGlmZmVyZW50IHNvdXJjZSBmaWxlcy4KKworV2hlbiBpbnZva2VkLCB0aGUgYFJVTl9BTExfVEVT
VFMoKWAgbWFjcm86CisKKzEuIFNhdmVzIHRoZSBzdGF0ZSBvZiBhbGwgZ29vZ2xldGVzdCBmbGFn
cworCisqICAgQ3JlYXRlcyBhIHRlc3QgZml4dHVyZSBvYmplY3QgZm9yIHRoZSBmaXJzdCB0ZXN0
LgorCisqICAgSW5pdGlhbGl6ZXMgaXQgdmlhIGBTZXRVcCgpYC4KKworKiAgIFJ1bnMgdGhlIHRl
c3Qgb24gdGhlIGZpeHR1cmUgb2JqZWN0LgorCisqICAgQ2xlYW5zIHVwIHRoZSBmaXh0dXJlIHZp
YSBgVGVhckRvd24oKWAuCisKKyogICBEZWxldGVzIHRoZSBmaXh0dXJlLgorCisqIFJlc3RvcmVz
IHRoZSBzdGF0ZSBvZiBhbGwgZ29vZ2xldGVzdCBmbGFncworCisqICAgUmVwZWF0cyB0aGUgYWJv
dmUgc3RlcHMgZm9yIHRoZSBuZXh0IHRlc3QsIHVudGlsIGFsbCB0ZXN0cyBoYXZlIHJ1bi4KKwor
SWYgYSBmYXRhbCBmYWlsdXJlIGhhcHBlbnMgdGhlIHN1YnNlcXVlbnQgc3RlcHMgd2lsbCBiZSBz
a2lwcGVkLgorCis+IElNUE9SVEFOVDogWW91IG11c3QgKipub3QqKiBpZ25vcmUgdGhlIHJldHVy
biB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYCwgb3IKKz4geW91IHdpbGwgZ2V0IGEgY29tcGls
ZXIgZXJyb3IuIFRoZSByYXRpb25hbGUgZm9yIHRoaXMgZGVzaWduIGlzIHRoYXQgdGhlCis+IGF1
dG9tYXRlZCB0ZXN0aW5nIHNlcnZpY2UgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgdGVzdCBoYXMgcGFz
c2VkIGJhc2VkIG9uIGl0cworPiBleGl0IGNvZGUsIG5vdCBvbiBpdHMgc3Rkb3V0L3N0ZGVyciBv
dXRwdXQ7IHRodXMgeW91ciBgbWFpbigpYCBmdW5jdGlvbiBtdXN0Cis+IHJldHVybiB0aGUgdmFs
dWUgb2YgYFJVTl9BTExfVEVTVFMoKWAuCis+Cis+IEFsc28sIHlvdSBzaG91bGQgY2FsbCBgUlVO
X0FMTF9URVNUUygpYCBvbmx5ICoqb25jZSoqLiBDYWxsaW5nIGl0IG1vcmUgdGhhbgorPiBvbmNl
IGNvbmZsaWN0cyB3aXRoIHNvbWUgYWR2YW5jZWQgZ29vZ2xldGVzdCBmZWF0dXJlcyAoZS5nLiB0
aHJlYWQtc2FmZSBbZGVhdGgKKz4gdGVzdHNdKGFkdmFuY2VkI2RlYXRoLXRlc3RzKSkgYW5kIHRo
dXMgaXMgbm90IHN1cHBvcnRlZC4KKworKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3Ms
IE1hYy4KKworIyMgV3JpdGluZyB0aGUgbWFpbigpIEZ1bmN0aW9uCisKK0luIGBnb29nbGUzYCwg
dGhlIHNpbXBsZXN0IGFwcHJvYWNoIGlzIHRvIHVzZSB0aGUgZGVmYXVsdCBtYWluKCkgZnVuY3Rp
b24KK3Byb3ZpZGVkIGJ5IGxpbmtpbmcgaW4gYCIvL3Rlc3RpbmcvYmFzZS9wdWJsaWM6Z3Rlc3Rf
bWFpbiJgLiBJZiB0aGF0IGRvZXNuJ3QKK2NvdmVyIHdoYXQgeW91IG5lZWQsIHlvdSBzaG91bGQg
d3JpdGUgeW91ciBvd24gbWFpbigpIGZ1bmN0aW9uLCB3aGljaCBzaG91bGQKK3JldHVybiB0aGUg
dmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAuIExpbmsgdG8gYCIvL3Rlc3RpbmcvYmFzZS9wdWJs
aWM6Z3VuaXQiYC4KK1lvdSBjYW4gc3RhcnQgZnJvbSB0aGlzIGJvaWxlcnBsYXRlOgorCitgYGBj
KysKKyNpbmNsdWRlICJ0aGlzL3BhY2thZ2UvZm9vLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKKworbmFtZXNwYWNlIHsKKworLy8gVGhlIGZpeHR1cmUgZm9yIHRlc3RpbmcgY2xhc3MgRm9v
LgorY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoK
KyAgLy8gWW91IGNhbiByZW1vdmUgYW55IG9yIGFsbCBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9u
cyBpZiBpdHMgYm9keQorICAvLyBpcyBlbXB0eS4KKworICBGb29UZXN0KCkgeworICAgICAvLyBZ
b3UgY2FuIGRvIHNldC11cCB3b3JrIGZvciBlYWNoIHRlc3QgaGVyZS4KKyAgfQorCisgIH5Gb29U
ZXN0KCkgb3ZlcnJpZGUgeworICAgICAvLyBZb3UgY2FuIGRvIGNsZWFuLXVwIHdvcmsgdGhhdCBk
b2Vzbid0IHRocm93IGV4Y2VwdGlvbnMgaGVyZS4KKyAgfQorCisgIC8vIElmIHRoZSBjb25zdHJ1
Y3RvciBhbmQgZGVzdHJ1Y3RvciBhcmUgbm90IGVub3VnaCBmb3Igc2V0dGluZyB1cAorICAvLyBh
bmQgY2xlYW5pbmcgdXAgZWFjaCB0ZXN0LCB5b3UgY2FuIGRlZmluZSB0aGUgZm9sbG93aW5nIG1l
dGhvZHM6CisKKyAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIHsKKyAgICAgLy8gQ29kZSBoZXJlIHdp
bGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjb25zdHJ1Y3RvciAocmlnaHQKKyAg
ICAgLy8gYmVmb3JlIGVhY2ggdGVzdCkuCisgIH0KKworICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJp
ZGUgeworICAgICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIg
ZWFjaCB0ZXN0IChyaWdodAorICAgICAvLyBiZWZvcmUgdGhlIGRlc3RydWN0b3IpLgorICB9CisK
KyAgLy8gT2JqZWN0cyBkZWNsYXJlZCBoZXJlIGNhbiBiZSB1c2VkIGJ5IGFsbCB0ZXN0cyBpbiB0
aGUgdGVzdCBjYXNlIGZvciBGb28uCit9OworCisvLyBUZXN0cyB0aGF0IHRoZSBGb286OkJhcigp
IG1ldGhvZCBkb2VzIEFiYy4KK1RFU1RfRihGb29UZXN0LCBNZXRob2RCYXJEb2VzQWJjKSB7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGlucHV0X2ZpbGVwYXRoID0gInRoaXMvcGFja2FnZS90ZXN0ZGF0
YS9teWlucHV0ZmlsZS5kYXQiOworICBjb25zdCBzdGQ6OnN0cmluZyBvdXRwdXRfZmlsZXBhdGgg
PSAidGhpcy9wYWNrYWdlL3Rlc3RkYXRhL215b3V0cHV0ZmlsZS5kYXQiOworICBGb28gZjsKKyAg
RVhQRUNUX0VRKGYuQmFyKGlucHV0X2ZpbGVwYXRoLCBvdXRwdXRfZmlsZXBhdGgpLCAwKTsKK30K
KworLy8gVGVzdHMgdGhhdCBGb28gZG9lcyBYeXouCitURVNUX0YoRm9vVGVzdCwgRG9lc1h5eikg
eworICAvLyBFeGVyY2lzZXMgdGhlIFh5eiBmZWF0dXJlIG9mIEZvby4KK30KKworfSAgLy8gbmFt
ZXNwYWNlCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICA6OnRlc3Rpbmc6
OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsK
K30KK2BgYAorCisKK1RoZSBgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpYCBmdW5jdGlvbiBw
YXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IKK2dvb2dsZXRlc3QgZmxhZ3MsIGFuZCByZW1vdmVz
IGFsbCByZWNvZ25pemVkIGZsYWdzLiBUaGlzIGFsbG93cyB0aGUgdXNlciB0bworY29udHJvbCBh
IHRlc3QgcHJvZ3JhbSdzIGJlaGF2aW9yIHZpYSB2YXJpb3VzIGZsYWdzLCB3aGljaCB3ZSdsbCBj
b3ZlciBpbgorW0FkdmFuY2VkR3VpZGVdKGFkdmFuY2VkLm1kKS4gWW91ICoqbXVzdCoqIGNhbGwg
dGhpcyBmdW5jdGlvbiBiZWZvcmUgY2FsbGluZworYFJVTl9BTExfVEVTVFMoKWAsIG9yIHRoZSBm
bGFncyB3b24ndCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4KKworT24gV2luZG93cywgYEluaXRH
b29nbGVUZXN0KClgIGFsc28gd29ya3Mgd2l0aCB3aWRlIHN0cmluZ3MsIHNvIGl0IGNhbiBiZSB1
c2VkCitpbiBwcm9ncmFtcyBjb21waWxlZCBpbiBgVU5JQ09ERWAgbW9kZSBhcyB3ZWxsLgorCitC
dXQgbWF5YmUgeW91IHRoaW5rIHRoYXQgd3JpdGluZyBhbGwgdGhvc2UgbWFpbigpIGZ1bmN0aW9u
cyBpcyB0b28gbXVjaCB3b3JrPyBXZQorYWdyZWUgd2l0aCB5b3UgY29tcGxldGVseSBhbmQgdGhh
dCdzIHdoeSBHb29nbGUgVGVzdCBwcm92aWRlcyBhIGJhc2ljCitpbXBsZW1lbnRhdGlvbiBvZiBt
YWluKCkuIElmIGl0IGZpdHMgeW91ciBuZWVkcywgdGhlbiBqdXN0IGxpbmsgeW91ciB0ZXN0IHdp
dGgKK2d0ZXN0XF9tYWluIGxpYnJhcnkgYW5kIHlvdSBhcmUgZ29vZCB0byBnby4KKworTk9URTog
YFBhcnNlR1VuaXRGbGFncygpYCBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBJbml0R29vZ2xl
VGVzdCgpYC4KKworCisjIyBLbm93biBMaW1pdGF0aW9ucworCisqICAgR29vZ2xlIFRlc3QgaXMg
ZGVzaWduZWQgdG8gYmUgdGhyZWFkLXNhZmUuIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyB0aHJlYWQt
c2FmZQorICAgIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGBwdGhyZWFkc2AgbGlicmFyeSBpcyBhdmFp
bGFibGUuIEl0IGlzIGN1cnJlbnRseQorICAgIF91bnNhZmVfIHRvIHVzZSBHb29nbGUgVGVzdCBh
c3NlcnRpb25zIGZyb20gdHdvIHRocmVhZHMgY29uY3VycmVudGx5IG9uCisgICAgb3RoZXIgc3lz
dGVtcyAoZS5nLiBXaW5kb3dzKS4gSW4gbW9zdCB0ZXN0cyB0aGlzIGlzIG5vdCBhbiBpc3N1ZSBh
cyB1c3VhbGx5CisgICAgdGhlIGFzc2VydGlvbnMgYXJlIGRvbmUgaW4gdGhlIG1haW4gdGhyZWFk
LiBJZiB5b3Ugd2FudCB0byBoZWxwLCB5b3UgY2FuCisgICAgdm9sdW50ZWVyIHRvIGltcGxlbWVu
dCB0aGUgbmVjZXNzYXJ5IHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGluCisgICAgYGd0ZXN0
LXBvcnQuaGAgZm9yIHlvdXIgcGxhdGZvcm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9kb2NzL3NhbXBsZXMubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9kb2NzL3Nh
bXBsZXMubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMThkY2NhMzgxNDkxZTE5ODIzMzJjNmQ0NDcyY2E4MmQwZDAy
MTcwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2RvY3Mvc2Ft
cGxlcy5tZApAQCAtMCwwICsxLDIyIEBACisjIEdvb2dsZXRlc3QgU2FtcGxlcyB7I3NhbXBsZXN9
CisKK0lmIHlvdSdyZSBsaWtlIHVzLCB5b3UnZCBsaWtlIHRvIGxvb2sgYXQgW2dvb2dsZXRlc3QK
K3NhbXBsZXMuXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvdHJlZS9tYXN0
ZXIvZ29vZ2xldGVzdC9zYW1wbGVzKQorVGhlIHNhbXBsZSBkaXJlY3RvcnkgaGFzIGEgbnVtYmVy
IG9mIHdlbGwtY29tbWVudGVkIHNhbXBsZXMgc2hvd2luZyBob3cgdG8gdXNlIGEKK3ZhcmlldHkg
b2YgZ29vZ2xldGVzdCBmZWF0dXJlcy4KKworKiAgIFNhbXBsZSAjMSBzaG93cyB0aGUgYmFzaWMg
c3RlcHMgb2YgdXNpbmcgZ29vZ2xldGVzdCB0byB0ZXN0IEMrKyBmdW5jdGlvbnMuCisqICAgU2Ft
cGxlICMyIHNob3dzIGEgbW9yZSBjb21wbGV4IHVuaXQgdGVzdCBmb3IgYSBjbGFzcyB3aXRoIG11
bHRpcGxlIG1lbWJlcgorICAgIGZ1bmN0aW9ucy4KKyogICBTYW1wbGUgIzMgdXNlcyBhIHRlc3Qg
Zml4dHVyZS4KKyogICBTYW1wbGUgIzQgdGVhY2hlcyB5b3UgaG93IHRvIHVzZSBnb29nbGV0ZXN0
IGFuZCBgZ29vZ2xldGVzdC5oYCB0b2dldGhlciB0bworICAgIGdldCB0aGUgYmVzdCBvZiBib3Ro
IGxpYnJhcmllcy4KKyogICBTYW1wbGUgIzUgcHV0cyBzaGFyZWQgdGVzdGluZyBsb2dpYyBpbiBh
IGJhc2UgdGVzdCBmaXh0dXJlLCBhbmQgcmV1c2VzIGl0IGluCisgICAgZGVyaXZlZCBmaXh0dXJl
cy4KKyogICBTYW1wbGUgIzYgZGVtb25zdHJhdGVzIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4K
KyogICBTYW1wbGUgIzcgdGVhY2hlcyB0aGUgYmFzaWNzIG9mIHZhbHVlLXBhcmFtZXRlcml6ZWQg
dGVzdHMuCisqICAgU2FtcGxlICM4IHNob3dzIHVzaW5nIGBDb21iaW5lKClgIGluIHZhbHVlLXBh
cmFtZXRlcml6ZWQgdGVzdHMuCisqICAgU2FtcGxlICM5IHNob3dzIHVzZSBvZiB0aGUgbGlzdGVu
ZXIgQVBJIHRvIG1vZGlmeSBHb29nbGUgVGVzdCdzIGNvbnNvbGUKKyAgICBvdXRwdXQgYW5kIHRo
ZSB1c2Ugb2YgaXRzIHJlZmxlY3Rpb24gQVBJIHRvIGluc3BlY3QgdGVzdCByZXN1bHRzLgorKiAg
IFNhbXBsZSAjMTAgc2hvd3MgdXNlIG9mIHRoZSBsaXN0ZW5lciBBUEkgdG8gaW1wbGVtZW50IGEg
cHJpbWl0aXZlIG1lbW9yeQorICAgIGxlYWsgY2hlY2tlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgKaW5kZXgg
MTIxZGMxZmI1YWM1ZDU5YTMzZDUzMDM0MDU4ZWVlOTFjMjEyYTIwOC4uMjBjNTRkODY5NTE5ZjY5
MzBlN2ViZmQyYzA4MDViYWNhNDIyMTZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgKQEAgLTI2LDE5ICsy
NiwxOSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CiAvLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRo
ZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vIFRoZSBHb29n
bGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAv
LyBUaGlzIGhlYWRlciBmaWxlIGRlZmluZXMgdGhlIHB1YmxpYyBBUEkgZm9yIGRlYXRoIHRlc3Rz
LiAgSXQgaXMKIC8vICNpbmNsdWRlZCBieSBndGVzdC5oIHNvIGEgdXNlciBkb2Vzbid0IG5lZWQg
dG8gaW5jbHVkZSB0aGlzCiAvLyBkaXJlY3RseS4KKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5P
VCBERUxFVEUKIAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0RFQVRIX1RFU1Rf
SF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9ERUFUSF9URVNUX0hfCiAKLSNp
bmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmg+CisjaW5j
bHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5oIgogCiBuYW1l
c3BhY2UgdGVzdGluZyB7CiAKQEAgLTUxLDYgKzUxLDE3IEBAIEdURVNUX0RFQ0xBUkVfc3RyaW5n
XyhkZWF0aF90ZXN0X3N0eWxlKTsKIAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCiAKK25hbWVz
cGFjZSBpbnRlcm5hbCB7CisKKy8vIFJldHVybnMgYSBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcg
d2hldGhlciB0aGUgY2FsbGVyIGlzIGN1cnJlbnRseQorLy8gZXhlY3V0aW5nIGluIHRoZSBjb250
ZXh0IG9mIHRoZSBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nlc3MuICBUb29scyBzdWNoIGFzCisvLyBW
YWxncmluZCBoZWFwIGNoZWNrZXJzIG1heSBuZWVkIHRoaXMgdG8gbW9kaWZ5IHRoZWlyIGJlaGF2
aW9yIGluIGRlYXRoCisvLyB0ZXN0cy4gIElNUE9SVEFOVDogVGhpcyBpcyBhbiBpbnRlcm5hbCB1
dGlsaXR5LiAgVXNpbmcgaXQgbWF5IGJyZWFrIHRoZQorLy8gaW1wbGVtZW50YXRpb24gb2YgZGVh
dGggdGVzdHMuICBVc2VyIGNvZGUgTVVTVCBOT1QgdXNlIGl0LgorR1RFU1RfQVBJXyBib29sIElu
RGVhdGhUZXN0Q2hpbGQoKTsKKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCisKIC8vIFRoZSBm
b2xsb3dpbmcgbWFjcm9zIGFyZSB1c2VmdWwgZm9yIHdyaXRpbmcgZGVhdGggdGVzdHMuCiAKIC8v
IEhlcmUncyB3aGF0IGhhcHBlbnMgd2hlbiBhbiBBU1NFUlRfREVBVEgqIG9yIEVYUEVDVF9ERUFU
SCogaXMKQEAgLTc1LDcgKzg2LDcgQEAgR1RFU1RfREVDTEFSRV9zdHJpbmdfKGRlYXRoX3Rlc3Rf
c3R5bGUpOwogLy8gICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgewogLy8gICAgIEVYUEVD
VF9ERUFUSChzZXJ2ZXIuUHJvY2Vzc1JlcXVlc3QoaSksCiAvLyAgICAgICAgICAgICAgICAgICJJ
bnZhbGlkIHJlcXVlc3QgLiogaW4gUHJvY2Vzc1JlcXVlc3QoKSIpCi0vLyAgICAgICAgIDw8ICJG
YWlsZWQgdG8gZGllIG9uIHJlcXVlc3QgIiA8PCBpKTsKKy8vICAgICAgICAgICAgICAgICAgPDwg
IkZhaWxlZCB0byBkaWUgb24gcmVxdWVzdCAiIDw8IGk7CiAvLyAgIH0KIC8vCiAvLyAgIEFTU0VS
VF9FWElUKHNlcnZlci5FeGl0Tm93KCksIDo6dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCksICJF
eGl0aW5nIik7CkBAIC04OCwxMCArOTksMTEgQEAgR1RFU1RfREVDTEFSRV9zdHJpbmdfKGRlYXRo
X3Rlc3Rfc3R5bGUpOwogLy8KIC8vIE9uIHRoZSByZWd1bGFyIGV4cHJlc3Npb25zIHVzZWQgaW4g
ZGVhdGggdGVzdHM6CiAvLworLy8gICBHT09HTEVURVNUX0NNMDAwNSBETyBOT1QgREVMRVRFCiAv
LyAgIE9uIFBPU0lYLWNvbXBsaWFudCBzeXN0ZW1zICgqbml4KSwgd2UgdXNlIHRoZSA8cmVnZXgu
aD4gbGlicmFyeSwKIC8vICAgd2hpY2ggdXNlcyB0aGUgUE9TSVggZXh0ZW5kZWQgcmVnZXggc3lu
dGF4LgogLy8KLS8vICAgT24gb3RoZXIgcGxhdGZvcm1zIChlLmcuIFdpbmRvd3MpLCB3ZSBvbmx5
IHN1cHBvcnQgYSBzaW1wbGUgcmVnZXgKKy8vICAgT24gb3RoZXIgcGxhdGZvcm1zIChlLmcuIFdp
bmRvd3Mgb3IgTWFjKSwgd2Ugb25seSBzdXBwb3J0IGEgc2ltcGxlIHJlZ2V4CiAvLyAgIHN5bnRh
eCBpbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIEdvb2dsZSBUZXN0LiAgVGhpcyBsaW1pdGVkCiAvLyAg
IGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSBlbm91Z2ggbW9zdCBvZiB0aGUgdGltZSB3aGVuIHdy
aXRpbmcKIC8vICAgZGVhdGggdGVzdHM7IHRob3VnaCBpdCBsYWNrcyBtYW55IGZlYXR1cmVzIHlv
dSBjYW4gZmluZCBpbiBQQ1JFCkBAIC0xNDksMjkgKzE2MSwyOSBAQCBHVEVTVF9ERUNMQVJFX3N0
cmluZ18oZGVhdGhfdGVzdF9zdHlsZSk7CiAvLyAgIGlzIHJhcmVseSBhIHByb2JsZW0gYXMgcGVv
cGxlIHVzdWFsbHkgZG9uJ3QgcHV0IHRoZSB0ZXN0IGJpbmFyeQogLy8gICBkaXJlY3RvcnkgaW4g
UEFUSC4KIC8vCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogbWFrZSB0aHJlYWQtc2FmZSBkZWF0
aCB0ZXN0cyBzZWFyY2ggdGhlIFBBVEguCisvLyBGSVhNRTogbWFrZSB0aHJlYWQtc2FmZSBkZWF0
aCB0ZXN0cyBzZWFyY2ggdGhlIFBBVEguCiAKIC8vIEFzc2VydHMgdGhhdCBhIGdpdmVuIHN0YXRl
bWVudCBjYXVzZXMgdGhlIHByb2dyYW0gdG8gZXhpdCwgd2l0aCBhbgogLy8gaW50ZWdlciBleGl0
IHN0YXR1cyB0aGF0IHNhdGlzZmllcyBwcmVkaWNhdGUsIGFuZCBlbWl0dGluZyBlcnJvciBvdXRw
dXQKIC8vIHRoYXQgbWF0Y2hlcyByZWdleC4KLSNkZWZpbmUgQVNTRVJUX0VYSVQoc3RhdGVtZW50
LCBwcmVkaWNhdGUsIHJlZ2V4KSBcCi0gIEdURVNUX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJl
ZGljYXRlLCByZWdleCwgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCisjIGRlZmluZSBBU1NFUlRfRVhJ
VChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpIFwKKyAgICBHVEVTVF9ERUFUSF9URVNUXyhz
dGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIEdURVNUX0ZBVEFMX0ZBSUxVUkVfKQogCiAvLyBM
aWtlIEFTU0VSVF9FWElULCBidXQgY29udGludWVzIG9uIHRvIHN1Y2Nlc3NpdmUgdGVzdHMgaW4g
dGhlCiAvLyB0ZXN0IGNhc2UsIGlmIGFueToKLSNkZWZpbmUgRVhQRUNUX0VYSVQoc3RhdGVtZW50
LCBwcmVkaWNhdGUsIHJlZ2V4KSBcCi0gIEdURVNUX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJl
ZGljYXRlLCByZWdleCwgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8pCisjIGRlZmluZSBFWFBFQ1Rf
RVhJVChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpIFwKKyAgICBHVEVTVF9ERUFUSF9URVNU
XyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVfKQog
CiAvLyBBc3NlcnRzIHRoYXQgYSBnaXZlbiBzdGF0ZW1lbnQgY2F1c2VzIHRoZSBwcm9ncmFtIHRv
IGV4aXQsIGVpdGhlciBieQogLy8gZXhwbGljaXRseSBleGl0aW5nIHdpdGggYSBub256ZXJvIGV4
aXQgY29kZSBvciBiZWluZyBraWxsZWQgYnkgYQogLy8gc2lnbmFsLCBhbmQgZW1pdHRpbmcgZXJy
b3Igb3V0cHV0IHRoYXQgbWF0Y2hlcyByZWdleC4KLSNkZWZpbmUgQVNTRVJUX0RFQVRIKHN0YXRl
bWVudCwgcmVnZXgpIFwKLSAgQVNTRVJUX0VYSVQoc3RhdGVtZW50LCA6OnRlc3Rpbmc6OmludGVy
bmFsOjpFeGl0ZWRVbnN1Y2Nlc3NmdWxseSwgcmVnZXgpCisjIGRlZmluZSBBU1NFUlRfREVBVEgo
c3RhdGVtZW50LCByZWdleCkgXAorICAgIEFTU0VSVF9FWElUKHN0YXRlbWVudCwgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6RXhpdGVkVW5zdWNjZXNzZnVsbHksIHJlZ2V4KQogCiAvLyBMaWtlIEFTU0VS
VF9ERUFUSCwgYnV0IGNvbnRpbnVlcyBvbiB0byBzdWNjZXNzaXZlIHRlc3RzIGluIHRoZQogLy8g
dGVzdCBjYXNlLCBpZiBhbnk6Ci0jZGVmaW5lIEVYUEVDVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4
KSBcCi0gIEVYUEVDVF9FWElUKHN0YXRlbWVudCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RXhpdGVk
VW5zdWNjZXNzZnVsbHksIHJlZ2V4KQorIyBkZWZpbmUgRVhQRUNUX0RFQVRIKHN0YXRlbWVudCwg
cmVnZXgpIFwKKyAgICBFWFBFQ1RfRVhJVChzdGF0ZW1lbnQsIDo6dGVzdGluZzo6aW50ZXJuYWw6
OkV4aXRlZFVuc3VjY2Vzc2Z1bGx5LCByZWdleCkKIAogLy8gVHdvIHByZWRpY2F0ZSBjbGFzc2Vz
IHRoYXQgY2FuIGJlIHVzZWQgaW4ge0FTU0VSVCxFWFBFQ1R9X0VYSVQqOgogCkBAIC0xODcsOSAr
MTk5LDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gRXhpdGVkV2l0aENvZGUgewogICBjb25zdCBpbnQg
ZXhpdF9jb2RlXzsKIH07CiAKLSNpZiAhR1RFU1RfT1NfV0lORE9XUworIyBpZiAhR1RFU1RfT1Nf
V0lORE9XUyAmJiAhR1RFU1RfT1NfRlVDSFNJQQogLy8gVGVzdHMgdGhhdCBhbiBleGl0IGNvZGUg
ZGVzY3JpYmVzIGFuIGV4aXQgZHVlIHRvIHRlcm1pbmF0aW9uIGJ5IGEKIC8vIGdpdmVuIHNpZ25h
bC4KKy8vIEdPT0dMRVRFU1RfQ00wMDA2IERPIE5PVCBERUxFVEUKIGNsYXNzIEdURVNUX0FQSV8g
S2lsbGVkQnlTaWduYWwgewogIHB1YmxpYzoKICAgZXhwbGljaXQgS2lsbGVkQnlTaWduYWwoaW50
IHNpZ251bSk7CkBAIC0xOTcsNyArMjEwLDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBLaWxsZWRCeVNp
Z25hbCB7CiAgcHJpdmF0ZToKICAgY29uc3QgaW50IHNpZ251bV87CiB9OwotI2VuZGlmICAvLyAh
R1RFU1RfT1NfV0lORE9XUworIyBlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1MKIAogLy8gRVhQ
RUNUX0RFQlVHX0RFQVRIIGFzc2VydHMgdGhhdCB0aGUgZ2l2ZW4gc3RhdGVtZW50cyBkaWUgaW4g
ZGVidWcgbW9kZS4KIC8vIFRoZSBkZWF0aCB0ZXN0aW5nIGZyYW1ld29yayBjYXVzZXMgdGhpcyB0
byBoYXZlIGludGVyZXN0aW5nIHNlbWFudGljcywKQEAgLTI0Miw0MCArMjU1LDg4IEBAIGNsYXNz
IEdURVNUX0FQSV8gS2lsbGVkQnlTaWduYWwgewogLy8gICBFWFBFQ1RfRVEoMTIsIERpZUluRGVi
dWdPcjEyKCZzaWRlZWZmZWN0KSk7CiAvLyB9LCAiZGVhdGgiKTsKIC8vCi0jaWZkZWYgTkRFQlVH
CisjIGlmZGVmIE5ERUJVRwogCi0jZGVmaW5lIEVYUEVDVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQs
IHJlZ2V4KSBcCi0gIGRvIHsgc3RhdGVtZW50OyB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFs
OjpBbHdheXNGYWxzZSgpKQorIyAgZGVmaW5lIEVYUEVDVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQs
IHJlZ2V4KSBcCisgIEdURVNUX0VYRUNVVEVfU1RBVEVNRU5UXyhzdGF0ZW1lbnQsIHJlZ2V4KQog
Ci0jZGVmaW5lIEFTU0VSVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCi0gIGRvIHsg
c3RhdGVtZW50OyB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgpKQor
IyAgZGVmaW5lIEFTU0VSVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgIEdURVNU
X0VYRUNVVEVfU1RBVEVNRU5UXyhzdGF0ZW1lbnQsIHJlZ2V4KQogCi0jZWxzZQorIyBlbHNlCiAK
LSNkZWZpbmUgRVhQRUNUX0RFQlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKKyMgIGRlZmlu
ZSBFWFBFQ1RfREVCVUdfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAogICBFWFBFQ1RfREVBVEgo
c3RhdGVtZW50LCByZWdleCkKIAotI2RlZmluZSBBU1NFUlRfREVCVUdfREVBVEgoc3RhdGVtZW50
LCByZWdleCkgXAorIyAgZGVmaW5lIEFTU0VSVF9ERUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4
KSBcCiAgIEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KQogCi0jZW5kaWYgIC8vIE5ERUJV
RyBmb3IgRVhQRUNUX0RFQlVHX0RFQVRICisjIGVuZGlmICAvLyBOREVCVUcgZm9yIEVYUEVDVF9E
RUJVR19ERUFUSAogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCisvLyBUaGlzIG1h
Y3JvIGlzIHVzZWQgZm9yIGltcGxlbWVudGluZyBtYWNyb3Mgc3VjaCBhcworLy8gRVhQRUNUX0RF
QVRIX0lGX1NVUFBPUlRFRCBhbmQgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCBvbiBzeXN0ZW1z
IHdoZXJlCisvLyBkZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZC4gVGhvc2UgbWFjcm9zIG11
c3QgY29tcGlsZSBvbiBzdWNoIHN5c3RlbXMKKy8vIGlmZiBFWFBFQ1RfREVBVEggYW5kIEFTU0VS
VF9ERUFUSCBjb21waWxlIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycyBvbgorLy8gc3lzdGVtcyB0
aGF0IHN1cHBvcnQgZGVhdGggdGVzdHMuIFRoaXMgYWxsb3dzIG9uZSB0byB3cml0ZSBzdWNoIGEg
bWFjcm8KKy8vIG9uIGEgc3lzdGVtIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCBkZWF0aCB0ZXN0cyBh
bmQgYmUgc3VyZSB0aGF0IGl0IHdpbGwKKy8vIGNvbXBpbGUgb24gYSBkZWF0aC10ZXN0IHN1cHBv
cnRpbmcgc3lzdGVtLiBJdCBpcyBleHBvc2VkIHB1YmxpY2x5IHNvIHRoYXQKKy8vIHN5c3RlbXMg
dGhhdCBoYXZlIGRlYXRoLXRlc3RzIHdpdGggc3RyaWN0ZXIgcmVxdWlyZW1lbnRzIHRoYW4KKy8v
IEdURVNUX0hBU19ERUFUSF9URVNUIGNhbiB3cml0ZSB0aGVpciBvd24gZXF1aXZhbGVudCBvZgor
Ly8gRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCBhbmQgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRF
RC4KKy8vCisvLyBQYXJhbWV0ZXJzOgorLy8gICBzdGF0ZW1lbnQgLSAgQSBzdGF0ZW1lbnQgdGhh
dCBhIG1hY3JvIHN1Y2ggYXMgRVhQRUNUX0RFQVRIIHdvdWxkIHRlc3QKKy8vICAgICAgICAgICAg
ICAgIGZvciBwcm9ncmFtIHRlcm1pbmF0aW9uLiBUaGlzIG1hY3JvIGhhcyB0byBtYWtlIHN1cmUg
dGhpcworLy8gICAgICAgICAgICAgICAgc3RhdGVtZW50IGlzIGNvbXBpbGVkIGJ1dCBub3QgZXhl
Y3V0ZWQsIHRvIGVuc3VyZSB0aGF0CisvLyAgICAgICAgICAgICAgICBFWFBFQ1RfREVBVEhfSUZf
U1VQUE9SVEVEIGNvbXBpbGVzIHdpdGggYSBjZXJ0YWluCisvLyAgICAgICAgICAgICAgICBwYXJh
bWV0ZXIgaWZmIEVYUEVDVF9ERUFUSCBjb21waWxlcyB3aXRoIGl0LgorLy8gICByZWdleCAgICAg
LSAgQSByZWdleCB0aGF0IGEgbWFjcm8gc3VjaCBhcyBFWFBFQ1RfREVBVEggd291bGQgdXNlIHRv
IHRlc3QKKy8vICAgICAgICAgICAgICAgIHRoZSBvdXRwdXQgb2Ygc3RhdGVtZW50LiAgVGhpcyBw
YXJhbWV0ZXIgaGFzIHRvIGJlCisvLyAgICAgICAgICAgICAgICBjb21waWxlZCBidXQgbm90IGV2
YWx1YXRlZCBieSB0aGlzIG1hY3JvLCB0byBlbnN1cmUgdGhhdAorLy8gICAgICAgICAgICAgICAg
dGhpcyBtYWNybyBvbmx5IGFjY2VwdHMgZXhwcmVzc2lvbnMgdGhhdCBhIG1hY3JvIHN1Y2ggYXMK
Ky8vICAgICAgICAgICAgICAgIEVYUEVDVF9ERUFUSCB3b3VsZCBhY2NlcHQuCisvLyAgIHRlcm1p
bmF0b3IgLSBNdXN0IGJlIGFuIGVtcHR5IHN0YXRlbWVudCBmb3IgRVhQRUNUX0RFQVRIX0lGX1NV
UFBPUlRFRAorLy8gICAgICAgICAgICAgICAgYW5kIGEgcmV0dXJuIHN0YXRlbWVudCBmb3IgQVNT
RVJUX0RFQVRIX0lGX1NVUFBPUlRFRC4KKy8vICAgICAgICAgICAgICAgIFRoaXMgZW5zdXJlcyB0
aGF0IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgd2lsbCBub3QKKy8vICAgICAgICAgICAgICAg
IGNvbXBpbGUgaW5zaWRlIGZ1bmN0aW9ucyB3aGVyZSBBU1NFUlRfREVBVEggZG9lc24ndAorLy8g
ICAgICAgICAgICAgICAgY29tcGlsZS4KKy8vCisvLyAgVGhlIGJyYW5jaCB0aGF0IGhhcyBhbiBh
bHdheXMgZmFsc2UgY29uZGl0aW9uIGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQKKy8vICBzdGF0ZW1l
bnQgYW5kIHJlZ2V4IGFyZSBjb21waWxlZCAoYW5kIHRodXMgc3ludGFjdGljYWxseSBjb3JyZWN0
KSBidXQKKy8vICBuZXZlciBleGVjdXRlZC4gVGhlIHVucmVhY2hhYmxlIGNvZGUgbWFjcm8gcHJv
dGVjdHMgdGhlIHRlcm1pbmF0b3IKKy8vICBzdGF0ZW1lbnQgZnJvbSBnZW5lcmF0aW5nIGFuICd1
bnJlYWNoYWJsZSBjb2RlJyB3YXJuaW5nIGluIGNhc2UKKy8vICBzdGF0ZW1lbnQgdW5jb25kaXRp
b25hbGx5IHJldHVybnMgb3IgdGhyb3dzLiBUaGUgTWVzc2FnZSBjb25zdHJ1Y3RvciBhdAorLy8g
IHRoZSBlbmQgYWxsb3dzIHRoZSBzeW50YXggb2Ygc3RyZWFtaW5nIGFkZGl0aW9uYWwgbWVzc2Fn
ZXMgaW50byB0aGUKKy8vICBtYWNybywgZm9yIGNvbXBpbGF0aW9uYWwgY29tcGF0aWJpbGl0eSB3
aXRoIEVYUEVDVF9ERUFUSC9BU1NFUlRfREVBVEguCisjIGRlZmluZSBHVEVTVF9VTlNVUFBPUlRF
RF9ERUFUSF9URVNUKHN0YXRlbWVudCwgcmVnZXgsIHRlcm1pbmF0b3IpIFwKKyAgICBHVEVTVF9B
TUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCisgICAgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFs
d2F5c1RydWUoKSkgeyBcCisgICAgICBHVEVTVF9MT0dfKFdBUk5JTkcpIFwKKyAgICAgICAgICA8
PCAiRGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS5cbiIgXAor
ICAgICAgICAgIDw8ICJTdGF0ZW1lbnQgJyIgI3N0YXRlbWVudCAiJyBjYW5ub3QgYmUgdmVyaWZp
ZWQuIjsgXAorICAgIH0gZWxzZSBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2Uo
KSkgeyBcCisgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpSRTo6UGFydGlhbE1hdGNoKCIuKiIs
IChyZWdleCkpOyBcCisgICAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5J
TkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKKyAgICAgIHRlcm1pbmF0b3I7IFwKKyAgICB9IGVsc2Ug
XAorICAgICAgOjp0ZXN0aW5nOjpNZXNzYWdlKCkKKwogLy8gRVhQRUNUX0RFQVRIX0lGX1NVUFBP
UlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBhbmQKIC8vIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQo
c3RhdGVtZW50LCByZWdleCkgZXhwYW5kIHRvIHJlYWwgZGVhdGggdGVzdHMgaWYKIC8vIGRlYXRo
IHRlc3RzIGFyZSBzdXBwb3J0ZWQ7IG90aGVyd2lzZSB0aGV5IGp1c3QgaXNzdWUgYSB3YXJuaW5n
LiAgVGhpcyBpcwogLy8gdXNlZnVsIHdoZW4geW91IGFyZSBjb21iaW5pbmcgZGVhdGggdGVzdCBh
c3NlcnRpb25zIHdpdGggbm9ybWFsIHRlc3QKIC8vIGFzc2VydGlvbnMgaW4gb25lIHRlc3QuCiAj
aWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLSNkZWZpbmUgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRF
RChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisjIGRlZmluZSBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVE
KHN0YXRlbWVudCwgcmVnZXgpIFwKICAgICBFWFBFQ1RfREVBVEgoc3RhdGVtZW50LCByZWdleCkK
LSNkZWZpbmUgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisj
IGRlZmluZSBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKICAg
ICBBU1NFUlRfREVBVEgoc3RhdGVtZW50LCByZWdleCkKICNlbHNlCi0jZGVmaW5lIEVYUEVDVF9E
RUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAotICAgIEdURVNUX1VOU1VQUE9S
VEVEX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcmVnZXgsICkKLSNkZWZpbmUgQVNTRVJUX0RFQVRI
X0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCi0gICAgR1RFU1RfVU5TVVBQT1JURURf
REVBVEhfVEVTVF8oc3RhdGVtZW50LCByZWdleCwgcmV0dXJuKQorIyBkZWZpbmUgRVhQRUNUX0RF
QVRIX0lGX1NVUFBPUlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCisgICAgR1RFU1RfVU5TVVBQT1JU
RURfREVBVEhfVEVTVChzdGF0ZW1lbnQsIHJlZ2V4LCApCisjIGRlZmluZSBBU1NFUlRfREVBVEhf
SUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKKyAgICBHVEVTVF9VTlNVUFBPUlRFRF9E
RUFUSF9URVNUKHN0YXRlbWVudCwgcmVnZXgsIHJldHVybikKICNlbmRpZgogCiB9ICAvLyBuYW1l
c3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaAppbmRleCBmMTM1YjY5NDI3ZmU5ZWJlMjM3YzRjZGE3YTlj
MmYwZDc4ZGQ3NjhlLi41Y2EwNDE2MTRjYjM1NTkyMmYzNTViODkzZjljODRhM2I3ZjUyYzZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LW1l
c3NhZ2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0
LW1lc3NhZ2UuaApAQCAtMjYsMTAgKzI2LDkgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKwogLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbikKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29v
Z2xlIFRlc3QpCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29y
ayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVzIHRoZSBNZXNz
YWdlIGNsYXNzLgogLy8KQEAgLTQzLDEzICs0MiwyMSBAQAogLy8gdG8gQ0hBTkdFIFdJVEhPVVQg
Tk9USUNFLiAgVGhlcmVmb3JlIERPIE5PVCBERVBFTkQgT04gSVQgaW4gYSB1c2VyCiAvLyBwcm9n
cmFtIQogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RF
U1RfSU5DTFVERV9HVEVTVF9HVEVTVF9NRVNTQUdFX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVf
R1RFU1RfR1RFU1RfTUVTU0FHRV9IXwogCiAjaW5jbHVkZSA8bGltaXRzPgogCi0jaW5jbHVkZSA8
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtaW50ZXJuYWwuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmgi
CisKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQyNTEgXAorLyogY2xhc3MgQSBu
ZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBieSBjbGllbnRzIG9mIGNsYXNz
IEIgKi8pCisKKy8vIEVuc3VyZXMgdGhhdCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgb3BlcmF0b3I8
PCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KKy8vIFNlZSBNZXNzYWdlJiBvcGVyYXRvcjw8KC4u
LikgYmVsb3cgZm9yIHdoeS4KK3ZvaWQgb3BlcmF0b3I8PChjb25zdCB0ZXN0aW5nOjppbnRlcm5h
bDo6U2VjcmV0JiwgaW50KTsKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC01OCw3ICs2NSw3
IEBAIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIC8vIFR5cGljYWwgdXNhZ2U6CiAvLwogLy8gICAxLiBZ
b3Ugc3RyZWFtIGEgYnVuY2ggb2YgdmFsdWVzIHRvIGEgTWVzc2FnZSBvYmplY3QuCi0vLyAgICAg
IEl0IHdpbGwgcmVtZW1iZXIgdGhlIHRleHQgaW4gYSBTdHJTdHJlYW0uCisvLyAgICAgIEl0IHdp
bGwgcmVtZW1iZXIgdGhlIHRleHQgaW4gYSBzdHJpbmdzdHJlYW0uCiAvLyAgIDIuIFRoZW4geW91
IHN0cmVhbSB0aGUgTWVzc2FnZSBvYmplY3QgdG8gYW4gb3N0cmVhbS4KIC8vICAgICAgVGhpcyBj
YXVzZXMgdGhlIHRleHQgaW4gdGhlIE1lc3NhZ2UgdG8gYmUgc3RyZWFtZWQKIC8vICAgICAgdG8g
dGhlIG9zdHJlYW0uCkBAIC03NCw3ICs4MSw3IEBAIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIC8vIE1l
c3NhZ2UgaXMgbm90IGludGVuZGVkIHRvIGJlIGluaGVyaXRlZCBmcm9tLiAgSW4gcGFydGljdWxh
ciwgaXRzCiAvLyBkZXN0cnVjdG9yIGlzIG5vdCB2aXJ0dWFsLgogLy8KLS8vIE5vdGUgdGhhdCBT
dHJTdHJlYW0gYmVoYXZlcyBkaWZmZXJlbnRseSBpbiBnY2MgYW5kIGluIE1TVkMuICBZb3UKKy8v
IE5vdGUgdGhhdCBzdHJpbmdzdHJlYW0gYmVoYXZlcyBkaWZmZXJlbnRseSBpbiBnY2MgYW5kIGlu
IE1TVkMuICBZb3UKIC8vIGNhbiBzdHJlYW0gYSBOVUxMIGNoYXIgcG9pbnRlciB0byBpdCBpbiB0
aGUgZm9ybWVyLCBidXQgbm90IGluIHRoZQogLy8gbGF0dGVyIChpdCBjYXVzZXMgYW4gYWNjZXNz
IHZpb2xhdGlvbiBpZiB5b3UgZG8pLiAgVGhlIE1lc3NhZ2UKIC8vIGNsYXNzIGhpZGVzIHRoaXMg
ZGlmZmVyZW5jZSBieSB0cmVhdGluZyBhIE5VTEwgY2hhciBwb2ludGVyIGFzCkBAIC04NywyNyAr
OTQsMTggQEAgY2xhc3MgR1RFU1RfQVBJXyBNZXNzYWdlIHsKIAogIHB1YmxpYzoKICAgLy8gQ29u
c3RydWN0cyBhbiBlbXB0eSBNZXNzYWdlLgotICAvLyBXZSBhbGxvY2F0ZSB0aGUgU3RyU3RyZWFt
IHNlcGFyYXRlbHkgYmVjYXVzZSBpdCBvdGhlcndpc2UgZWFjaCB1c2Ugb2YKLSAgLy8gQVNTRVJU
L0VYUEVDVCBpbiBhIHByb2NlZHVyZSBhZGRzIG92ZXIgMjAwIGJ5dGVzIHRvIHRoZSBwcm9jZWR1
cmUncwotICAvLyBzdGFjayBmcmFtZSBsZWFkaW5nIHRvIGh1Z2Ugc3RhY2sgZnJhbWVzIGluIHNv
bWUgY2FzZXM7IGdjYyBkb2VzIG5vdCByZXVzZQotICAvLyB0aGUgc3RhY2sgc3BhY2UuCi0gIE1l
c3NhZ2UoKSA6IHNzXyhuZXcgaW50ZXJuYWw6OlN0clN0cmVhbSkgewotICAgIC8vIEJ5IGRlZmF1
bHQsIHdlIHdhbnQgdGhlcmUgdG8gYmUgZW5vdWdoIHByZWNpc2lvbiB3aGVuIHByaW50aW5nCi0g
ICAgLy8gYSBkb3VibGUgdG8gYSBNZXNzYWdlLgotICAgICpzc18gPDwgc3RkOjpzZXRwcmVjaXNp
b24oc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpkaWdpdHMxMCArIDIpOwotICB9CisgIE1l
c3NhZ2UoKTsKIAogICAvLyBDb3B5IGNvbnN0cnVjdG9yLgotICBNZXNzYWdlKGNvbnN0IE1lc3Nh
Z2UmIG1zZykgOiBzc18obmV3IGludGVybmFsOjpTdHJTdHJlYW0pIHsgIC8vIE5PTElOVAorICBN
ZXNzYWdlKGNvbnN0IE1lc3NhZ2UmIG1zZykgOiBzc18obmV3IDo6c3RkOjpzdHJpbmdzdHJlYW0p
IHsgIC8vIE5PTElOVAogICAgICpzc18gPDwgbXNnLkdldFN0cmluZygpOwogICB9CiAKICAgLy8g
Q29uc3RydWN0cyBhIE1lc3NhZ2UgZnJvbSBhIEMtc3RyaW5nLgotICBleHBsaWNpdCBNZXNzYWdl
KGNvbnN0IGNoYXIqIHN0cikgOiBzc18obmV3IGludGVybmFsOjpTdHJTdHJlYW0pIHsKKyAgZXhw
bGljaXQgTWVzc2FnZShjb25zdCBjaGFyKiBzdHIpIDogc3NfKG5ldyA6OnN0ZDo6c3RyaW5nc3Ry
ZWFtKSB7CiAgICAgKnNzXyA8PCBzdHI7CiAgIH0KIAotICB+TWVzc2FnZSgpIHsgZGVsZXRlIHNz
XzsgfQogI2lmIEdURVNUX09TX1NZTUJJQU4KICAgLy8gU3RyZWFtcyBhIHZhbHVlIChlaXRoZXIg
YSBwb2ludGVyIG9yIG5vdCkgdG8gdGhpcyBvYmplY3QuCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgpAQCAtMTE5LDcgKzExNywyMiBAQCBjbGFzcyBHVEVTVF9BUElfIE1lc3NhZ2UgewogICAvLyBT
dHJlYW1zIGEgbm9uLXBvaW50ZXIgdmFsdWUgdG8gdGhpcyBvYmplY3QuCiAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogICBpbmxpbmUgTWVzc2FnZSYgb3BlcmF0b3IgPDwoY29uc3QgVCYgdmFsKSB7
Ci0gICAgOjpHVGVzdFN0cmVhbVRvSGVscGVyKHNzXywgdmFsKTsKKyAgICAvLyBTb21lIGxpYnJh
cmllcyBvdmVybG9hZCA8PCBmb3IgU1RMIGNvbnRhaW5lcnMuICBUaGVzZQorICAgIC8vIG92ZXJs
b2FkcyBhcmUgZGVmaW5lZCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZSBpbnN0ZWFkIG9mIDo6c3Rk
LgorICAgIC8vCisgICAgLy8gQysrJ3Mgc3ltYm9sIGxvb2t1cCBydWxlIChpLmUuIEtvZW5pZyBs
b29rdXApIHNheXMgdGhhdCB0aGVzZQorICAgIC8vIG92ZXJsb2FkcyBhcmUgdmlzaWJsZSBpbiBl
aXRoZXIgdGhlIHN0ZCBuYW1lc3BhY2Ugb3IgdGhlIGdsb2JhbAorICAgIC8vIG5hbWVzcGFjZSwg
YnV0IG5vdCBvdGhlciBuYW1lc3BhY2VzLCBpbmNsdWRpbmcgdGhlIHRlc3RpbmcKKyAgICAvLyBu
YW1lc3BhY2Ugd2hpY2ggR29vZ2xlIFRlc3QncyBNZXNzYWdlIGNsYXNzIGlzIGluLgorICAgIC8v
CisgICAgLy8gVG8gYWxsb3cgU1RMIGNvbnRhaW5lcnMgKGFuZCBvdGhlciB0eXBlcyB0aGF0IGhh
cyBhIDw8IG9wZXJhdG9yCisgICAgLy8gZGVmaW5lZCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZSkg
dG8gYmUgdXNlZCBpbiBHb29nbGUgVGVzdAorICAgIC8vIGFzc2VydGlvbnMsIHRlc3Rpbmc6Ok1l
c3NhZ2UgbXVzdCBhY2Nlc3MgdGhlIGN1c3RvbSA8PCBvcGVyYXRvcgorICAgIC8vIGZyb20gdGhl
IGdsb2JhbCBuYW1lc3BhY2UuICBXaXRoIHRoaXMgdXNpbmcgZGVjbGFyYXRpb24sCisgICAgLy8g
b3ZlcmxvYWRzIG9mIDw8IGRlZmluZWQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UgYW5kIHRob3Nl
CisgICAgLy8gdmlzaWJsZSB2aWEgS29lbmlnIGxvb2t1cCBhcmUgYm90aCBleHBvc2VkIGluIHRo
aXMgZnVuY3Rpb24uCisgICAgdXNpbmcgOjpvcGVyYXRvciA8PDsKKyAgICAqc3NfIDw8IHZhbDsK
ICAgICByZXR1cm4gKnRoaXM7CiAgIH0KIApAQCAtMTQxLDcgKzE1NCw3IEBAIGNsYXNzIEdURVNU
X0FQSV8gTWVzc2FnZSB7CiAgICAgaWYgKHBvaW50ZXIgPT0gTlVMTCkgewogICAgICAgKnNzXyA8
PCAiKG51bGwpIjsKICAgICB9IGVsc2UgewotICAgICAgOjpHVGVzdFN0cmVhbVRvSGVscGVyKHNz
XywgcG9pbnRlcik7CisgICAgICAqc3NfIDw8IHBvaW50ZXI7CiAgICAgfQogICAgIHJldHVybiAq
dGhpczsKICAgfQpAQCAtMTY1LDEyICsxNzgsOCBAQCBjbGFzcyBHVEVTVF9BUElfIE1lc3NhZ2Ug
ewogCiAgIC8vIFRoZXNlIHR3byBvdmVybG9hZHMgYWxsb3cgc3RyZWFtaW5nIGEgd2lkZSBDIHN0
cmluZyB0byBhIE1lc3NhZ2UKICAgLy8gdXNpbmcgdGhlIFVURi04IGVuY29kaW5nLgotICBNZXNz
YWdlJiBvcGVyYXRvciA8PChjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKSB7Ci0gICAgcmV0dXJu
ICp0aGlzIDw8IGludGVybmFsOjpTdHJpbmc6OlNob3dXaWRlQ1N0cmluZyh3aWRlX2Nfc3RyKTsK
LSAgfQotICBNZXNzYWdlJiBvcGVyYXRvciA8PCh3Y2hhcl90KiB3aWRlX2Nfc3RyKSB7Ci0gICAg
cmV0dXJuICp0aGlzIDw8IGludGVybmFsOjpTdHJpbmc6OlNob3dXaWRlQ1N0cmluZyh3aWRlX2Nf
c3RyKTsKLSAgfQorICBNZXNzYWdlJiBvcGVyYXRvciA8PChjb25zdCB3Y2hhcl90KiB3aWRlX2Nf
c3RyKTsKKyAgTWVzc2FnZSYgb3BlcmF0b3IgPDwod2NoYXJfdCogd2lkZV9jX3N0cik7CiAKICNp
ZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKICAgLy8gQ29udmVydHMgdGhlIGdpdmVuIHdpZGUgc3Ry
aW5nIHRvIGEgbmFycm93IHN0cmluZyB1c2luZyB0aGUgVVRGLTgKQEAgLTE4NCwxMyArMTkzLDEx
IEBAIGNsYXNzIEdURVNUX0FQSV8gTWVzc2FnZSB7CiAgIE1lc3NhZ2UmIG9wZXJhdG9yIDw8KGNv
bnN0IDo6d3N0cmluZyYgd3N0cik7CiAjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklO
RwogCi0gIC8vIEdldHMgdGhlIHRleHQgc3RyZWFtZWQgdG8gdGhpcyBvYmplY3Qgc28gZmFyIGFz
IGEgU3RyaW5nLgorICAvLyBHZXRzIHRoZSB0ZXh0IHN0cmVhbWVkIHRvIHRoaXMgb2JqZWN0IHNv
IGZhciBhcyBhbiBzdGQ6OnN0cmluZy4KICAgLy8gRWFjaCAnXDAnIGNoYXJhY3RlciBpbiB0aGUg
YnVmZmVyIGlzIHJlcGxhY2VkIHdpdGggIlxcMCIuCiAgIC8vCiAgIC8vIElOVEVSTkFMIElNUExF
TUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KLSAgaW50ZXJuYWw6OlN0
cmluZyBHZXRTdHJpbmcoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGludGVybmFsOjpTdHJTdHJlYW1U
b1N0cmluZyhzc18pOwotICB9CisgIHN0ZDo6c3RyaW5nIEdldFN0cmluZygpIGNvbnN0OwogCiAg
cHJpdmF0ZToKICNpZiBHVEVTVF9PU19TWU1CSUFOCkBAIC0xOTksMjEgKzIwNiwyNSBAQCBjbGFz
cyBHVEVTVF9BUElfIE1lc3NhZ2UgewogICAvLyBkZWNpZGUgYmV0d2VlbiBjbGFzcyB0ZW1wbGF0
ZSBzcGVjaWFsaXphdGlvbnMgZm9yIFQgYW5kIFQqLCBzbyBhCiAgIC8vIHRyMTo6dHlwZV90cmFp
dHMtbGlrZSBpc19wb2ludGVyIHdvcmtzLCBhbmQgd2UgY2FuIG92ZXJsb2FkIG9uIHRoYXQuCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBpbmxpbmUgdm9pZCBTdHJlYW1IZWxwZXIoaW50ZXJu
YWw6OnRydWVfdHlwZSAvKmR1bW15Ki8sIFQqIHBvaW50ZXIpIHsKKyAgaW5saW5lIHZvaWQgU3Ry
ZWFtSGVscGVyKGludGVybmFsOjp0cnVlX3R5cGUgLyppc19wb2ludGVyKi8sIFQqIHBvaW50ZXIp
IHsKICAgICBpZiAocG9pbnRlciA9PSBOVUxMKSB7CiAgICAgICAqc3NfIDw8ICIobnVsbCkiOwog
ICAgIH0gZWxzZSB7Ci0gICAgICA6OkdUZXN0U3RyZWFtVG9IZWxwZXIoc3NfLCBwb2ludGVyKTsK
KyAgICAgICpzc18gPDwgcG9pbnRlcjsKICAgICB9CiAgIH0KICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci0gIGlubGluZSB2b2lkIFN0cmVhbUhlbHBlcihpbnRlcm5hbDo6ZmFsc2VfdHlwZSAvKmR1
bW15Ki8sIGNvbnN0IFQmIHZhbHVlKSB7Ci0gICAgOjpHVGVzdFN0cmVhbVRvSGVscGVyKHNzXywg
dmFsdWUpOworICBpbmxpbmUgdm9pZCBTdHJlYW1IZWxwZXIoaW50ZXJuYWw6OmZhbHNlX3R5cGUg
Lyppc19wb2ludGVyKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiB2YWx1
ZSkgeworICAgIC8vIFNlZSB0aGUgY29tbWVudHMgaW4gTWVzc2FnZSYgb3BlcmF0b3IgPDwoY29u
c3QgVCYpIGFib3ZlIGZvciB3aHkKKyAgICAvLyB3ZSBuZWVkIHRoaXMgdXNpbmcgc3RhdGVtZW50
LgorICAgIHVzaW5nIDo6b3BlcmF0b3IgPDw7CisgICAgKnNzXyA8PCB2YWx1ZTsKICAgfQogI2Vu
ZGlmICAvLyBHVEVTVF9PU19TWU1CSUFOCiAKICAgLy8gV2UnbGwgaG9sZCB0aGUgdGV4dCBzdHJl
YW1lZCB0byB0aGlzIG9iamVjdCBoZXJlLgotICBpbnRlcm5hbDo6U3RyU3RyZWFtKiBjb25zdCBz
c187CisgIGNvbnN0IGludGVybmFsOjpzY29wZWRfcHRyPCA6OnN0ZDo6c3RyaW5nc3RyZWFtPiBz
c187CiAKICAgLy8gV2UgZGVjbGFyZSAoYnV0IGRvbid0IGltcGxlbWVudCkgdGhpcyB0byBwcmV2
ZW50IHRoZSBjb21waWxlcgogICAvLyBmcm9tIGltcGxlbWVudGluZyB0aGUgYXNzaWdubWVudCBv
cGVyYXRvci4KQEAgLTIyNSw2ICsyMzYsMjAgQEAgaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0
b3IgPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgTWVzc2FnZSYgc2IpIHsKICAgcmV0dXJuIG9z
IDw8IHNiLkdldFN0cmluZygpOwogfQogCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBDb252
ZXJ0cyBhIHN0cmVhbWFibGUgdmFsdWUgdG8gYW4gc3RkOjpzdHJpbmcuICBBIE5VTEwgcG9pbnRl
ciBpcworLy8gY29udmVydGVkIHRvICIobnVsbCkiLiAgV2hlbiB0aGUgaW5wdXQgdmFsdWUgaXMg
YSA6OnN0cmluZywKKy8vIDo6c3RkOjpzdHJpbmcsIDo6d3N0cmluZywgb3IgOjpzdGQ6OndzdHJp
bmcgb2JqZWN0LCBlYWNoIE5VTAorLy8gY2hhcmFjdGVyIGluIGl0IGlzIHJlcGxhY2VkIHdpdGgg
IlxcMCIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0ZDo6c3RyaW5nIFN0cmVhbWFibGVUb1N0
cmluZyhjb25zdCBUJiBzdHJlYW1hYmxlKSB7CisgIHJldHVybiAoTWVzc2FnZSgpIDw8IHN0cmVh
bWFibGUpLkdldFN0cmluZygpOworfQorCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8v
IG5hbWVzcGFjZSB0ZXN0aW5nCiAKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAg
Ly8gIDQyNTEKKwogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX01FU1NBR0Vf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rl
c3QtcGFyYW0tdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9n
dGVzdC1wYXJhbS10ZXN0LmgKaW5kZXggODEwMDY5NjQ0ZDIzYWQzNTU5NzNjYjUzZmNlYjBhODU2
YjBhMDA2Yy4uM2U5NWU0MzkwZTAwZTExNjMxMGE0MjM4M2QyZTMwYjU4ZWRhNWYwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10
ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1w
YXJhbS10ZXN0LmgKQEAgLTEsNCArMSw2IEBACi0vLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBi
eSBhIHNjcmlwdC4gIERPIE5PVCBFRElUIEJZIEhBTkQhISEKKy8vIFRoaXMgZmlsZSB3YXMgR0VO
RVJBVEVEIGJ5IGNvbW1hbmQ6CisvLyAgICAgcHVtcC5weSBndGVzdC1wYXJhbS10ZXN0LmgucHVt
cAorLy8gRE8gTk9UIEVESVQgQlkgSEFORCEhIQogCiAvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xl
IEluYy4KIC8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0yOSwxMyArMzEsMTIgQEAKIC8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRob3JzOiB2bGFkbEBnb29nbGUu
Y29tIChWbGFkIExvc2V2KQotLy8KIC8vIE1hY3JvcyBhbmQgZnVuY3Rpb25zIGZvciBpbXBsZW1l
bnRpbmcgcGFyYW1ldGVyaXplZCB0ZXN0cwotLy8gaW4gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1l
d29yayAoR29vZ2xlIFRlc3QpCisvLyBpbiBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcg
RnJhbWV3b3JrIChHb29nbGUgVGVzdCkKIC8vCiAvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5
IGEgU0NSSVBULiAgRE8gTk9UIEVESVQgQlkgSEFORCEKIC8vCisvLyBHT09HTEVURVNUX0NNMDAw
MSBETyBOT1QgREVMRVRFCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUEFSQU1f
VEVTVF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8K
IApAQCAtNDgsMTAgKzQ5LDEyIEBACiAjaWYgMAogCiAvLyBUbyB3cml0ZSB2YWx1ZS1wYXJhbWV0
ZXJpemVkIHRlc3RzLCBmaXJzdCB5b3Ugc2hvdWxkIGRlZmluZSBhIGZpeHR1cmUKLS8vIGNsYXNz
LiBJdCBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPFQ+LCB3aGVy
ZSBUIGlzCi0vLyB0aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuIFRlc3RXaXRoUGFy
YW08VD4gaXMgaXRzZWxmIGRlcml2ZWQKLS8vIGZyb20gdGVzdGluZzo6VGVzdC4gVCBjYW4gYmUg
YW55IGNvcHlhYmxlIHR5cGUuIElmIGl0J3MgYSByYXcgcG9pbnRlciwKLS8vIHlvdSBhcmUgcmVz
cG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBsaWZlc3BhbiBvZiB0aGUgcG9pbnRlZCB2YWx1ZXMu
CisvLyBjbGFzcy4gSXQgaXMgdXN1YWxseSBkZXJpdmVkIGZyb20gdGVzdGluZzo6VGVzdFdpdGhQ
YXJhbTxUPiAoc2VlIGJlbG93IGZvcgorLy8gYW5vdGhlciBpbmhlcml0YW5jZSBzY2hlbWUgdGhh
dCdzIHNvbWV0aW1lcyB1c2VmdWwgaW4gbW9yZSBjb21wbGljYXRlZAorLy8gY2xhc3MgaGllcmFy
Y2hpZXMpLCB3aGVyZSB0aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuCisvLyBUZXN0
V2l0aFBhcmFtPFQ+IGlzIGl0c2VsZiBkZXJpdmVkIGZyb20gdGVzdGluZzo6VGVzdC4gVCBjYW4g
YmUgYW55CisvLyBjb3B5YWJsZSB0eXBlLiBJZiBpdCdzIGEgcmF3IHBvaW50ZXIsIHlvdSBhcmUg
cmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZQorLy8gbGlmZXNwYW4gb2YgdGhlIHBvaW50ZWQg
dmFsdWVzLgogCiBjbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJh
bTxjb25zdCBjaGFyKj4gewogICAvLyBZb3UgY2FuIGltcGxlbWVudCBhbGwgdGhlIHVzdWFsIGNs
YXNzIGZpeHR1cmUgbWVtYmVycyBoZXJlLgpAQCAtNzUsNyArNzgsNyBAQCBURVNUX1AoRm9vVGVz
dCwgSGFzQmxhaEJsYWgpIHsKIC8vIEZpbmFsbHksIHlvdSBjYW4gdXNlIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QIHRvIGluc3RhbnRpYXRlIHRoZSB0ZXN0CiAvLyBjYXNlIHdpdGggYW55IHNldCBv
ZiBwYXJhbWV0ZXJzIHlvdSB3YW50LiBHb29nbGUgVGVzdCBkZWZpbmVzIGEgbnVtYmVyCiAvLyBv
ZiBmdW5jdGlvbnMgZm9yIGdlbmVyYXRpbmcgdGVzdCBwYXJhbWV0ZXJzLiBUaGV5IHJldHVybiB3
aGF0IHdlIGNhbGwKLS8vIChzdXJwcmlzZSEpIHBhcmFtZXRlciBnZW5lcmF0b3JzLiBIZXJlIGlz
IGEgIHN1bW1hcnkgb2YgdGhlbSwgd2hpY2gKKy8vIChzdXJwcmlzZSEpIHBhcmFtZXRlciBnZW5l
cmF0b3JzLiBIZXJlIGlzIGEgc3VtbWFyeSBvZiB0aGVtLCB3aGljaAogLy8gYXJlIGFsbCBpbiB0
aGUgdGVzdGluZyBuYW1lc3BhY2U6CiAvLwogLy8KQEAgLTE0NiwyMyArMTQ5LDQ0IEBAIElOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QKEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwgVmFs
dWVzSW4ocGV0cykpOwogLy8gSW4gdGhlIGZ1dHVyZSwgd2UgcGxhbiB0byBwdWJsaXNoIHRoZSBB
UEkgZm9yIGRlZmluaW5nIG5ldyBwYXJhbWV0ZXIKIC8vIGdlbmVyYXRvcnMuIEJ1dCBmb3Igbm93
IHRoaXMgaW50ZXJmYWNlIHJlbWFpbnMgcGFydCBvZiB0aGUgaW50ZXJuYWwKIC8vIGltcGxlbWVu
dGF0aW9uIGFuZCBpcyBzdWJqZWN0IHRvIGNoYW5nZS4KKy8vCisvLworLy8gQSBwYXJhbWV0ZXJp
emVkIHRlc3QgZml4dHVyZSBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0IGFuZCBm
cm9tCisvLyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD4sIHdoZXJlIFQgaXMgdGhlIHR5
cGUgb2YgdGhlIHBhcmFtZXRlcgorLy8gdmFsdWVzLiBJbmhlcml0aW5nIGZyb20gVGVzdFdpdGhQ
YXJhbTxUPiBzYXRpc2ZpZXMgdGhhdCByZXF1aXJlbWVudCBiZWNhdXNlCisvLyBUZXN0V2l0aFBh
cmFtPFQ+IGluaGVyaXRzIGZyb20gYm90aCBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UuIElu
IG1vcmUKKy8vIGNvbXBsaWNhdGVkIGhpZXJhcmNoaWVzLCBob3dldmVyLCBpdCBpcyBvY2Nhc2lv
bmFsbHkgdXNlZnVsIHRvIGluaGVyaXQKKy8vIHNlcGFyYXRlbHkgZnJvbSBUZXN0IGFuZCBXaXRo
UGFyYW1JbnRlcmZhY2UuIEZvciBleGFtcGxlOgorCitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6
OnRlc3Rpbmc6OlRlc3QgeworICAvLyBZb3UgY2FuIGluaGVyaXQgYWxsIHRoZSB1c3VhbCBtZW1i
ZXJzIGZvciBhIG5vbi1wYXJhbWV0ZXJpemVkIHRlc3QKKyAgLy8gZml4dHVyZSBoZXJlLgorfTsK
KworY2xhc3MgRGVyaXZlZFRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsIHB1YmxpYyA6OnRlc3Rpbmc6
OldpdGhQYXJhbUludGVyZmFjZTxpbnQ+IHsKKyAgLy8gVGhlIHVzdWFsIHRlc3QgZml4dHVyZSBt
ZW1iZXJzIGdvIGhlcmUgdG9vLgorfTsKKworVEVTVF9GKEJhc2VUZXN0LCBIYXNGb28pIHsKKyAg
Ly8gVGhpcyBpcyBhbiBvcmRpbmFyeSBub24tcGFyYW1ldGVyaXplZCB0ZXN0LgorfQorCitURVNU
X1AoRGVyaXZlZFRlc3QsIERvZXNCbGFoKSB7CisgIC8vIEdldFBhcmFtIHdvcmtzIGp1c3QgdGhl
IHNhbWUgaGVyZSBhcyBpZiB5b3UgaW5oZXJpdCBmcm9tIFRlc3RXaXRoUGFyYW0uCisgIEVYUEVD
VF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsKK30KIAogI2VuZGlmICAvLyAwCiAKLSNpbmNs
dWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcG9ydC5oIgogCiAjaWYgIUdURVNUX09TX1NZTUJJQU4KLSNpbmNsdWRlIDx1dGls
aXR5PgorIyBpbmNsdWRlIDx1dGlsaXR5PgogI2VuZGlmCiAKLS8vIHNjcmlwdHMvZnVzZV9ndGVz
dC5weSBkZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKLS8vICp1
bmNvbmRpdGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92
ZWQKLS8vIGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVz
dC1wYXJhbS11dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRp
bC1nZW5lcmF0ZWQuaD4KLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCisjaW5jbHVkZSAiZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9n
dGVzdC1wYXJhbS11dGlsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC1nZW5lcmF0ZWQuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC0yNDMsNyArMjY3
LDcgQEAgaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFJhbmdlKFQgc3RhcnQsIFQgZW5kKSB7
CiAvLyBlYWNoIHdpdGggQy1zdHJpbmcgdmFsdWVzIG9mICJmb28iLCAiYmFyIiwgYW5kICJiYXoi
OgogLy8KIC8vIGNvbnN0IGNoYXIqIHN0cmluZ3NbXSA9IHsiZm9vIiwgImJhciIsICJiYXoifTsK
LS8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFN0cmluZ1NlcXVlbmNlLCBTcnRpbmdUZXN0LCBW
YWx1ZXNJbihzdHJpbmdzKSk7CisvLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChTdHJpbmdTZXF1
ZW5jZSwgU3RyaW5nVGVzdCwgVmFsdWVzSW4oc3RyaW5ncykpOwogLy8KIC8vIFRoaXMgaW5zdGFu
dGlhdGVzIHRlc3RzIGZyb20gdGVzdCBjYXNlIFN0bFN0cmluZ1Rlc3QKIC8vIGVhY2ggd2l0aCBT
VEwgc3RyaW5ncyB3aXRoIHZhbHVlcyAiYSIgYW5kICJiIjoKQEAgLTI3NiwxMSArMzAwLDEwIEBA
IGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxUPiBSYW5nZShUIHN0YXJ0LCBUIGVuZCkgewogLy8K
IHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+CiBpbnRlcm5hbDo6UGFyYW1HZW5l
cmF0b3I8Ci0gICAgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0
b3I+Ojp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKLSAgRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLAotICBG
b3J3YXJkSXRlcmF0b3IgZW5kKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9y
X3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCi0gICAgICBQYXJhbVR5cGU7Cisg
IHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJhaXRzPEZvcndhcmRJdGVy
YXRvcj46OnZhbHVlX3R5cGU+CitWYWx1ZXNJbihGb3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndh
cmRJdGVyYXRvciBlbmQpIHsKKyAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFs
OjpJdGVyYXRvclRyYWl0czxGb3J3YXJkSXRlcmF0b3I+CisgICAgICA6OnZhbHVlX3R5cGUgUGFy
YW1UeXBlOwogICByZXR1cm4gaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT4oCiAg
ICAgICBuZXcgaW50ZXJuYWw6OlZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvcjxQYXJhbVR5
cGU+KGJlZ2luLCBlbmQpKTsKIH0KQEAgLTExOTIsNyArMTIxNSw3IEBAIGlubGluZSBpbnRlcm5h
bDo6UGFyYW1HZW5lcmF0b3I8Ym9vbD4gQm9vbCgpIHsKICAgcmV0dXJuIFZhbHVlcyhmYWxzZSwg
dHJ1ZSk7CiB9CiAKLSNpZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNfQ09NQklO
RQogLy8gQ29tYmluZSgpIGFsbG93cyB0aGUgdXNlciB0byBjb21iaW5lIHR3byBvciBtb3JlIHNl
cXVlbmNlcyB0byBwcm9kdWNlCiAvLyB2YWx1ZXMgb2YgYSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB0
aG9zZSBzZXF1ZW5jZXMnIGVsZW1lbnRzLgogLy8KQEAgLTEyMjgsNyArMTI1MSw3IEBAIGlubGlu
ZSBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ym9vbD4gQm9vbCgpIHsKIC8vIEJvb2xlYW4gZmxh
Z3M6CiAvLwogLy8gY2xhc3MgRmxhZ0RlcGVuZGVudFRlc3QKLS8vICAgICA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0V2l0aFBhcmFtPHR1cGxlKGJvb2wsIGJvb2wpPiA+IHsKKy8vICAgICA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHR1cGxlPGJvb2wsIGJvb2w+ID4gewogLy8gICB2aXJ0
dWFsIHZvaWQgU2V0VXAoKSB7CiAvLyAgICAgLy8gQXNzaWducyBleHRlcm5hbF9mbGFnXzEgYW5k
IGV4dGVybmFsX2ZsYWdfMiB2YWx1ZXMgZnJvbSB0aGUgdHVwbGUuCiAvLyAgICAgdGllKGV4dGVy
bmFsX2ZsYWdfMSwgZXh0ZXJuYWxfZmxhZ18yKSA9IEdldFBhcmFtKCk7CkBAIC0xMzQ0LDExICsx
MzY3LDkgQEAgaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIxMDxHZW5lcmF0b3IxLCBH
ZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAogICAgICAgR2VuZXJhdG9yMTA+KAogICAgICAgZzEsIGcy
LCBnMywgZzQsIGc1LCBnNiwgZzcsIGc4LCBnOSwgZzEwKTsKIH0KLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX0NPTUJJTkUKLQotCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQogCi0jZGVmaW5l
IFRFU1RfUCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBcCisjIGRlZmluZSBURVNUX1AodGVz
dF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXAogICBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVf
KHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIFwKICAgICAgIDogcHVibGljIHRlc3RfY2FzZV9u
YW1lIHsgXAogICAgcHVibGljOiBcCkBAIC0xMzU4LDE0ICsxMzc5LDE3IEBAIGludGVybmFsOjpD
YXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMTA8R2VuZXJhdG9yMSwgR2VuZXJhdG9yMiwgR2VuZXJhdG9y
MywKICAgICBzdGF0aWMgaW50IEFkZFRvUmVnaXN0cnkoKSB7IFwKICAgICAgIDo6dGVzdGluZzo6
VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpLiBc
CiAgICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVyPHRlc3RfY2FzZV9uYW1lPihcCi0g
ICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgX19GSUxFX18sIF9fTElORV9fKS0+QWRkVGVz
dFBhdHRlcm4oXAotICAgICAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCi0gICAgICAg
ICAgICAgICAgICAjdGVzdF9uYW1lLCBcCi0gICAgICAgICAgICAgICAgICBuZXcgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6VGVzdE1ldGFGYWN0b3J5PCBcCi0gICAgICAgICAgICAgICAgICAgICAgR1RF
U1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKT4oKSk7IFwKKyAg
ICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCisgICAgICAgICAgICAgIDo6dGVzdGluZzo6
aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihcCisgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19M
SU5FX18pKS0+QWRkVGVzdFBhdHRlcm4oXAorICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1NU
UklOR0lGWV8odGVzdF9jYXNlX25hbWUpLCBcCisgICAgICAgICAgICAgICAgICAgICAgR1RFU1Rf
U1RSSU5HSUZZXyh0ZXN0X25hbWUpLCBcCisgICAgICAgICAgICAgICAgICAgICAgbmV3IDo6dGVz
dGluZzo6aW50ZXJuYWw6OlRlc3RNZXRhRmFjdG9yeTwgXAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpPigpKTsgXAogICAgICAgcmV0dXJuIDA7IFwK
ICAgICB9IFwKLSAgICBzdGF0aWMgaW50IGd0ZXN0X3JlZ2lzdGVyaW5nX2R1bW15XzsgXAorICAg
IHN0YXRpYyBpbnQgZ3Rlc3RfcmVnaXN0ZXJpbmdfZHVtbXlfIEdURVNUX0FUVFJJQlVURV9VTlVT
RURfOyBcCiAgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhcCiAgICAgICAgIEdU
RVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkpOyBcCiAgIH07
IFwKQEAgLTEzNzQsMTkgKzEzOTgsMzcgQEAgaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xk
ZXIxMDxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAogICAgICAgR1RFU1RfVEVT
VF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKTo6QWRkVG9SZWdpc3RyeSgp
OyBcCiAgIHZvaWQgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9u
YW1lKTo6VGVzdEJvZHkoKQogCi0jZGVmaW5lIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKHByZWZp
eCwgdGVzdF9jYXNlX25hbWUsIGdlbmVyYXRvcikgXAotICA6OnRlc3Rpbmc6OmludGVybmFsOjpQ
YXJhbUdlbmVyYXRvcjx0ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiBcCisvLyBUaGUgb3B0aW9u
YWwgbGFzdCBhcmd1bWVudCB0byBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBhbGxvd3MgdGhlIHVz
ZXIKKy8vIHRvIHNwZWNpZnkgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHRoYXQgZ2VuZXJhdGVzIGN1
c3RvbSB0ZXN0IG5hbWUgc3VmZml4ZXMKKy8vIGJhc2VkIG9uIHRoZSB0ZXN0IHBhcmFtZXRlcnMu
IFRoZSBmdW5jdGlvbiBzaG91bGQgYWNjZXB0IG9uZSBhcmd1bWVudCBvZgorLy8gdHlwZSB0ZXN0
aW5nOjpUZXN0UGFyYW1JbmZvPGNsYXNzIFBhcmFtVHlwZT4sIGFuZCByZXR1cm4gc3RkOjpzdHJp
bmcuCisvLworLy8gdGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSBpcyBhIGJ1aWx0aW4g
dGVzdCBzdWZmaXggZ2VuZXJhdG9yIHRoYXQKKy8vIHJldHVybnMgdGhlIHZhbHVlIG9mIHRlc3Rp
bmc6OlByaW50VG9TdHJpbmcoR2V0UGFyYW0oKSkuCisvLworLy8gTm90ZTogdGVzdCBuYW1lcyBt
dXN0IGJlIG5vbi1lbXB0eSwgdW5pcXVlLCBhbmQgbWF5IG9ubHkgY29udGFpbiBBU0NJSQorLy8g
YWxwaGFudW1lcmljIGNoYXJhY3RlcnMgb3IgdW5kZXJzY29yZS4gQmVjYXVzZSBQcmludFRvU3Ry
aW5nIGFkZHMgcXVvdGVzCisvLyB0byBzdGQ6OnN0cmluZyBhbmQgQyBzdHJpbmdzLCBpdCB3b24n
dCB3b3JrIGZvciB0aGVzZSB0eXBlcy4KKworIyBkZWZpbmUgSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AocHJlZml4LCB0ZXN0X2Nhc2VfbmFtZSwgZ2VuZXJhdG9yLCAuLi4pIFwKKyAgc3RhdGljIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5
cGU+IFwKICAgICAgIGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0
b3JfKCkgeyByZXR1cm4gZ2VuZXJhdG9yOyB9IFwKLSAgaW50IGd0ZXN0XyMjcHJlZml4IyN0ZXN0
X2Nhc2VfbmFtZSMjX2R1bW15XyA9IFwKKyAgc3RhdGljIDo6c3RkOjpzdHJpbmcgZ3Rlc3RfIyNw
cmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRlTmFtZV8oIFwKKyAgICAgIGNvbnN0
IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzx0ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiYgaW5m
bykgeyBcCisgICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkdldFBhcmFtTmFtZUdlbjx0
ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiBcCisgICAgICAgIChfX1ZBX0FSR1NfXykoaW5mbyk7
IFwKKyAgfSBcCisgIHN0YXRpYyBpbnQgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNf
ZHVtbXlfIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gXAogICAgICAgOjp0ZXN0aW5nOjpVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkuIFwKICAg
ICAgICAgICBHZXRUZXN0Q2FzZVBhdHRlcm5Ib2xkZXI8dGVzdF9jYXNlX25hbWU+KFwKLSAgICAg
ICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBfX0ZJTEVfXywgX19MSU5FX18pLT5BZGRUZXN0Q2Fz
ZUluc3RhbnRpYXRpb24oXAotICAgICAgICAgICAgICAgICAgI3ByZWZpeCwgXAotICAgICAgICAg
ICAgICAgICAgJmd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0b3Jf
LCBcCi0gICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pCisgICAgICAgICAgICAg
ICN0ZXN0X2Nhc2VfbmFtZSwgXAorICAgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpD
b2RlTG9jYXRpb24oXAorICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKSktPkFk
ZFRlc3RDYXNlSW5zdGFudGlhdGlvbihcCisgICAgICAgICAgICAgICAgICAgICAgI3ByZWZpeCwg
XAorICAgICAgICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUj
I19FdmFsR2VuZXJhdG9yXywgXAorICAgICAgICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZp
eCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdGVOYW1lXywgXAorICAgICAgICAgICAgICAg
ICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykKIAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAot
I2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xV
REVfR1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1bXAKaW5k
ZXggYTIzMTE4ODI3ZjFkNDgwZmJiYjgyNTJmMzQwZjBlYmVkYTM0NmUyNS4uMjc0ZjJiM2I1Njkz
MzAwMTJlODVlZTNjZjRmZDU3ZWIwYjU0MjFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC5wdW1w
CkBAIC0zMCwxMyArMzAsMTIgQEAgJHZhciBtYXh0dXBsZSA9IDEwICAkJCBNYXhpbXVtIG51bWJl
ciBvZiBDb21iaW5lIGFyZ3VtZW50cyB3ZSB3YW50IHRvIHN1cHBvcnQuCiAvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQXV0aG9yczogdmxhZGxAZ29vZ2xlLmNvbSAoVmxh
ZCBMb3NldikKLS8vCiAvLyBNYWNyb3MgYW5kIGZ1bmN0aW9ucyBmb3IgaW1wbGVtZW50aW5nIHBh
cmFtZXRlcml6ZWQgdGVzdHMKLS8vIGluIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdv
b2dsZSBUZXN0KQorLy8gaW4gR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29y
ayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBhIFNDUklQ
VC4gIERPIE5PVCBFRElUIEJZIEhBTkQhCiAvLworLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9U
IERFTEVURQogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8K
ICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QQVJBTV9URVNUX0hfCiAKQEAgLTQ5
LDEwICs0OCwxMiBAQCAkdmFyIG1heHR1cGxlID0gMTAgICQkIE1heGltdW0gbnVtYmVyIG9mIENv
bWJpbmUgYXJndW1lbnRzIHdlIHdhbnQgdG8gc3VwcG9ydC4KICNpZiAwCiAKIC8vIFRvIHdyaXRl
IHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4
dHVyZQotLy8gY2xhc3MuIEl0IG11c3QgYmUgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3RXaXRo
UGFyYW08VD4sIHdoZXJlIFQgaXMKLS8vIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVl
cy4gVGVzdFdpdGhQYXJhbTxUPiBpcyBpdHNlbGYgZGVyaXZlZAotLy8gZnJvbSB0ZXN0aW5nOjpU
ZXN0LiBUIGNhbiBiZSBhbnkgY29weWFibGUgdHlwZS4gSWYgaXQncyBhIHJhdyBwb2ludGVyLAot
Ly8geW91IGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIGxpZmVzcGFuIG9mIHRoZSBw
b2ludGVkIHZhbHVlcy4KKy8vIGNsYXNzLiBJdCBpcyB1c3VhbGx5IGRlcml2ZWQgZnJvbSB0ZXN0
aW5nOjpUZXN0V2l0aFBhcmFtPFQ+IChzZWUgYmVsb3cgZm9yCisvLyBhbm90aGVyIGluaGVyaXRh
bmNlIHNjaGVtZSB0aGF0J3Mgc29tZXRpbWVzIHVzZWZ1bCBpbiBtb3JlIGNvbXBsaWNhdGVkCisv
LyBjbGFzcyBoaWVyYXJjaGllcyksIHdoZXJlIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZh
bHVlcy4KKy8vIFRlc3RXaXRoUGFyYW08VD4gaXMgaXRzZWxmIGRlcml2ZWQgZnJvbSB0ZXN0aW5n
OjpUZXN0LiBUIGNhbiBiZSBhbnkKKy8vIGNvcHlhYmxlIHR5cGUuIElmIGl0J3MgYSByYXcgcG9p
bnRlciwgeW91IGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlCisvLyBsaWZlc3BhbiBv
ZiB0aGUgcG9pbnRlZCB2YWx1ZXMuCiAKIGNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0V2l0aFBhcmFtPGNvbnN0IGNoYXIqPiB7CiAgIC8vIFlvdSBjYW4gaW1wbGVtZW50IGFs
bCB0aGUgdXN1YWwgY2xhc3MgZml4dHVyZSBtZW1iZXJzIGhlcmUuCkBAIC03Niw3ICs3Nyw3IEBA
IFRFU1RfUChGb29UZXN0LCBIYXNCbGFoQmxhaCkgewogLy8gRmluYWxseSwgeW91IGNhbiB1c2Ug
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgdG8gaW5zdGFudGlhdGUgdGhlIHRlc3QKIC8vIGNhc2Ug
d2l0aCBhbnkgc2V0IG9mIHBhcmFtZXRlcnMgeW91IHdhbnQuIEdvb2dsZSBUZXN0IGRlZmluZXMg
YSBudW1iZXIKIC8vIG9mIGZ1bmN0aW9ucyBmb3IgZ2VuZXJhdGluZyB0ZXN0IHBhcmFtZXRlcnMu
IFRoZXkgcmV0dXJuIHdoYXQgd2UgY2FsbAotLy8gKHN1cnByaXNlISkgcGFyYW1ldGVyIGdlbmVy
YXRvcnMuIEhlcmUgaXMgYSAgc3VtbWFyeSBvZiB0aGVtLCB3aGljaAorLy8gKHN1cnByaXNlISkg
cGFyYW1ldGVyIGdlbmVyYXRvcnMuIEhlcmUgaXMgYSBzdW1tYXJ5IG9mIHRoZW0sIHdoaWNoCiAv
LyBhcmUgYWxsIGluIHRoZSB0ZXN0aW5nIG5hbWVzcGFjZToKIC8vCiAvLwpAQCAtMTM0LDkgKzEz
NSwxMiBAQCBJTlNUQU5USUFURV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFudGlhdGlvbk5hbWUs
IEZvb1Rlc3QsIFZhbHVlc0luKHBldHMpKTsKIC8vIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UsIHdo
ZXRoZXIgdGhlaXIgZGVmaW5pdGlvbnMgY29tZSBiZWZvcmUgb3IKIC8vIEFGVEVSIHRoZSBJTlNU
QU5USUFURV9URVNUX0NBU0VfUCBzdGF0ZW1lbnQuCiAvLwotLy8gUGxlYXNlIGFsc28gbm90ZSB0
aGF0IGdlbmVyYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIGluCi0vLyBSVU5fQUxMX1RF
U1RTKCksIGFmdGVyIG1haW4oKSBoYXMgc3RhcnRlZC4gVGhpcyBhbGxvd3MgZXZhbHVhdGlvbiBv
ZgotLy8gcGFyYW1ldGVyIGxpc3QgYmFzZWQgb24gY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMuCisv
LyBQbGVhc2UgYWxzbyBub3RlIHRoYXQgZ2VuZXJhdG9yIGV4cHJlc3Npb25zIChpbmNsdWRpbmcg
cGFyYW1ldGVycyB0byB0aGUKKy8vIGdlbmVyYXRvcnMpIGFyZSBldmFsdWF0ZWQgaW4gSW5pdEdv
b2dsZVRlc3QoKSwgYWZ0ZXIgbWFpbigpIGhhcyBzdGFydGVkLgorLy8gVGhpcyBhbGxvd3MgdGhl
IHVzZXIgb24gb25lIGhhbmQsIHRvIGFkanVzdCBnZW5lcmF0b3IgcGFyYW1ldGVycyBpbiBvcmRl
cgorLy8gdG8gZHluYW1pY2FsbHkgZGV0ZXJtaW5lIGEgc2V0IG9mIHRlc3RzIHRvIHJ1biBhbmQg
b24gdGhlIG90aGVyIGhhbmQsCisvLyBnaXZlIHRoZSB1c2VyIGEgY2hhbmNlIHRvIGluc3BlY3Qg
dGhlIGdlbmVyYXRlZCB0ZXN0cyB3aXRoIEdvb2dsZSBUZXN0CisvLyByZWZsZWN0aW9uIEFQSSBi
ZWZvcmUgUlVOX0FMTF9URVNUUygpIGlzIGV4ZWN1dGVkLgogLy8KIC8vIFlvdSBjYW4gc2VlIHNh
bXBsZXMvc2FtcGxlN191bml0dGVzdC5jYyBhbmQgc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNj
CiAvLyBmb3IgbW9yZSBleGFtcGxlcy4KQEAgLTE0NCwyMyArMTQ4LDQ0IEBAIElOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwgVmFsdWVzSW4o
cGV0cykpOwogLy8gSW4gdGhlIGZ1dHVyZSwgd2UgcGxhbiB0byBwdWJsaXNoIHRoZSBBUEkgZm9y
IGRlZmluaW5nIG5ldyBwYXJhbWV0ZXIKIC8vIGdlbmVyYXRvcnMuIEJ1dCBmb3Igbm93IHRoaXMg
aW50ZXJmYWNlIHJlbWFpbnMgcGFydCBvZiB0aGUgaW50ZXJuYWwKIC8vIGltcGxlbWVudGF0aW9u
IGFuZCBpcyBzdWJqZWN0IHRvIGNoYW5nZS4KKy8vCisvLworLy8gQSBwYXJhbWV0ZXJpemVkIHRl
c3QgZml4dHVyZSBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0IGFuZCBmcm9tCisv
LyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD4sIHdoZXJlIFQgaXMgdGhlIHR5cGUgb2Yg
dGhlIHBhcmFtZXRlcgorLy8gdmFsdWVzLiBJbmhlcml0aW5nIGZyb20gVGVzdFdpdGhQYXJhbTxU
PiBzYXRpc2ZpZXMgdGhhdCByZXF1aXJlbWVudCBiZWNhdXNlCisvLyBUZXN0V2l0aFBhcmFtPFQ+
IGluaGVyaXRzIGZyb20gYm90aCBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UuIEluIG1vcmUK
Ky8vIGNvbXBsaWNhdGVkIGhpZXJhcmNoaWVzLCBob3dldmVyLCBpdCBpcyBvY2Nhc2lvbmFsbHkg
dXNlZnVsIHRvIGluaGVyaXQKKy8vIHNlcGFyYXRlbHkgZnJvbSBUZXN0IGFuZCBXaXRoUGFyYW1J
bnRlcmZhY2UuIEZvciBleGFtcGxlOgorCitjbGFzcyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3QgeworICAvLyBZb3UgY2FuIGluaGVyaXQgYWxsIHRoZSB1c3VhbCBtZW1iZXJzIGZv
ciBhIG5vbi1wYXJhbWV0ZXJpemVkIHRlc3QKKyAgLy8gZml4dHVyZSBoZXJlLgorfTsKKworY2xh
c3MgRGVyaXZlZFRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQ
YXJhbUludGVyZmFjZTxpbnQ+IHsKKyAgLy8gVGhlIHVzdWFsIHRlc3QgZml4dHVyZSBtZW1iZXJz
IGdvIGhlcmUgdG9vLgorfTsKKworVEVTVF9GKEJhc2VUZXN0LCBIYXNGb28pIHsKKyAgLy8gVGhp
cyBpcyBhbiBvcmRpbmFyeSBub24tcGFyYW1ldGVyaXplZCB0ZXN0LgorfQorCitURVNUX1AoRGVy
aXZlZFRlc3QsIERvZXNCbGFoKSB7CisgIC8vIEdldFBhcmFtIHdvcmtzIGp1c3QgdGhlIHNhbWUg
aGVyZSBhcyBpZiB5b3UgaW5oZXJpdCBmcm9tIFRlc3RXaXRoUGFyYW0uCisgIEVYUEVDVF9UUlVF
KGZvby5CbGFoKEdldFBhcmFtKCkpKTsKK30KIAogI2VuZGlmICAvLyAwCiAKLSNpbmNsdWRlIDxn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oIgogCiAjaWYgIUdURVNUX09TX1NZTUJJQU4KLSNpbmNsdWRlIDx1dGlsaXR5Pgor
IyBpbmNsdWRlIDx1dGlsaXR5PgogI2VuZGlmCiAKLS8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBk
ZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKLS8vICp1bmNvbmRp
dGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKLS8v
IGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJh
bS11dGlsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5l
cmF0ZWQuaD4KLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCisjaW5jbHVkZSAiZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1w
YXJhbS11dGlsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1n
ZW5lcmF0ZWQuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC0yNDEsNyArMjY2LDcgQEAg
aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFJhbmdlKFQgc3RhcnQsIFQgZW5kKSB7CiAvLyBl
YWNoIHdpdGggQy1zdHJpbmcgdmFsdWVzIG9mICJmb28iLCAiYmFyIiwgYW5kICJiYXoiOgogLy8K
IC8vIGNvbnN0IGNoYXIqIHN0cmluZ3NbXSA9IHsiZm9vIiwgImJhciIsICJiYXoifTsKLS8vIElO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFN0cmluZ1NlcXVlbmNlLCBTcnRpbmdUZXN0LCBWYWx1ZXNJ
bihzdHJpbmdzKSk7CisvLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChTdHJpbmdTZXF1ZW5jZSwg
U3RyaW5nVGVzdCwgVmFsdWVzSW4oc3RyaW5ncykpOwogLy8KIC8vIFRoaXMgaW5zdGFudGlhdGVz
IHRlc3RzIGZyb20gdGVzdCBjYXNlIFN0bFN0cmluZ1Rlc3QKIC8vIGVhY2ggd2l0aCBTVEwgc3Ry
aW5ncyB3aXRoIHZhbHVlcyAiYSIgYW5kICJiIjoKQEAgLTI3NCwxMSArMjk5LDEwIEBAIGludGVy
bmFsOjpQYXJhbUdlbmVyYXRvcjxUPiBSYW5nZShUIHN0YXJ0LCBUIGVuZCkgewogLy8KIHRlbXBs
YXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8
Ci0gICAgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2
YWx1ZV90eXBlPiBWYWx1ZXNJbigKLSAgRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLAotICBGb3J3YXJk
SXRlcmF0b3IgZW5kKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgOjpzdGQ6Oml0ZXJhdG9yX3RyYWl0
czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCi0gICAgICBQYXJhbVR5cGU7CisgIHR5cGVu
YW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJhaXRzPEZvcndhcmRJdGVyYXRvcj46
OnZhbHVlX3R5cGU+CitWYWx1ZXNJbihGb3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJdGVy
YXRvciBlbmQpIHsKKyAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVy
YXRvclRyYWl0czxGb3J3YXJkSXRlcmF0b3I+CisgICAgICA6OnZhbHVlX3R5cGUgUGFyYW1UeXBl
OwogICByZXR1cm4gaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT4oCiAgICAgICBu
ZXcgaW50ZXJuYWw6OlZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvcjxQYXJhbVR5cGU+KGJl
Z2luLCBlbmQpKTsKIH0KQEAgLTM0OCw3ICszNzIsNyBAQCBpbmxpbmUgaW50ZXJuYWw6OlBhcmFt
R2VuZXJhdG9yPGJvb2w+IEJvb2woKSB7CiAgIHJldHVybiBWYWx1ZXMoZmFsc2UsIHRydWUpOwog
fQogCi0jaWYgR1RFU1RfSEFTX0NPTUJJTkUKKyMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKIC8vIENv
bWJpbmUoKSBhbGxvd3MgdGhlIHVzZXIgdG8gY29tYmluZSB0d28gb3IgbW9yZSBzZXF1ZW5jZXMg
dG8gcHJvZHVjZQogLy8gdmFsdWVzIG9mIGEgQ2FydGVzaWFuIHByb2R1Y3Qgb2YgdGhvc2Ugc2Vx
dWVuY2VzJyBlbGVtZW50cy4KIC8vCkBAIC0zODQsNyArNDA4LDcgQEAgaW5saW5lIGludGVybmFs
OjpQYXJhbUdlbmVyYXRvcjxib29sPiBCb29sKCkgewogLy8gQm9vbGVhbiBmbGFnczoKIC8vCiAv
LyBjbGFzcyBGbGFnRGVwZW5kZW50VGVzdAotLy8gICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3RX
aXRoUGFyYW08dHVwbGUoYm9vbCwgYm9vbCk+ID4geworLy8gICAgIDogcHVibGljIHRlc3Rpbmc6
OlRlc3RXaXRoUGFyYW08dHVwbGU8Ym9vbCwgYm9vbD4gPiB7CiAvLyAgIHZpcnR1YWwgdm9pZCBT
ZXRVcCgpIHsKIC8vICAgICAvLyBBc3NpZ25zIGV4dGVybmFsX2ZsYWdfMSBhbmQgZXh0ZXJuYWxf
ZmxhZ18yIHZhbHVlcyBmcm9tIHRoZSB0dXBsZS4KIC8vICAgICB0aWUoZXh0ZXJuYWxfZmxhZ18x
LCBleHRlcm5hbF9mbGFnXzIpID0gR2V0UGFyYW0oKTsKQEAgLTQwOSwxMSArNDMzLDkgQEAgaW50
ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIkaTwkZm9yIGosIFtbR2VuZXJhdG9yJGpdXT4g
Q29tYmluZSgKIH0KIAogXV0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKLQotCisjIGVu
ZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQogCi0jZGVmaW5lIFRFU1RfUCh0ZXN0X2Nhc2VfbmFt
ZSwgdGVzdF9uYW1lKSBcCisjIGRlZmluZSBURVNUX1AodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFt
ZSkgXAogICBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0
X25hbWUpIFwKICAgICAgIDogcHVibGljIHRlc3RfY2FzZV9uYW1lIHsgXAogICAgcHVibGljOiBc
CkBAIC00MjMsMTQgKzQ0NSwxNyBAQCBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlciRp
PCRmb3IgaiwgW1tHZW5lcmF0b3Ikal1dPiBDb21iaW5lKAogICAgIHN0YXRpYyBpbnQgQWRkVG9S
ZWdpc3RyeSgpIHsgXAogICAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+
cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkuIFwKICAgICAgICAgICBHZXRUZXN0Q2FzZVBh
dHRlcm5Ib2xkZXI8dGVzdF9jYXNlX25hbWU+KFwKLSAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9u
YW1lLCBfX0ZJTEVfXywgX19MSU5FX18pLT5BZGRUZXN0UGF0dGVybihcCi0gICAgICAgICAgICAg
ICAgICAjdGVzdF9jYXNlX25hbWUsIFwKLSAgICAgICAgICAgICAgICAgICN0ZXN0X25hbWUsIFwK
LSAgICAgICAgICAgICAgICAgIG5ldyA6OnRlc3Rpbmc6OmludGVybmFsOjpUZXN0TWV0YUZhY3Rv
cnk8IFwKLSAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3Rf
Y2FzZV9uYW1lLCB0ZXN0X25hbWUpPigpKTsgXAorICAgICAgICAgICAgICAjdGVzdF9jYXNlX25h
bWUsIFwKKyAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKFwK
KyAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykpLT5BZGRUZXN0UGF0dGVybihc
CisgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfU1RSSU5HSUZZXyh0ZXN0X2Nhc2VfbmFtZSks
IFwKKyAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9TVFJJTkdJRllfKHRlc3RfbmFtZSksIFwK
KyAgICAgICAgICAgICAgICAgICAgICBuZXcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdE1ldGFG
YWN0b3J5PCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFN
RV8oXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jYXNlX25hbWUsIHRlc3Rf
bmFtZSk+KCkpOyBcCiAgICAgICByZXR1cm4gMDsgXAogICAgIH0gXAotICAgIHN0YXRpYyBpbnQg
Z3Rlc3RfcmVnaXN0ZXJpbmdfZHVtbXlfOyBcCisgICAgc3RhdGljIGludCBndGVzdF9yZWdpc3Rl
cmluZ19kdW1teV8gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF87IFwKICAgICBHVEVTVF9ESVNBTExP
V19DT1BZX0FORF9BU1NJR05fKFwKICAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0
X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSk7IFwKICAgfTsgXApAQCAtNDM5LDE5ICs0NjQsMzcgQEAg
aW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIkaTwkZm9yIGosIFtbR2VuZXJhdG9yJGpd
XT4gQ29tYmluZSgKICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUs
IHRlc3RfbmFtZSk6OkFkZFRvUmVnaXN0cnkoKTsgXAogICB2b2lkIEdURVNUX1RFU1RfQ0xBU1Nf
TkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSk6OlRlc3RCb2R5KCkKIAotI2RlZmluZSBJ
TlNUQU5USUFURV9URVNUX0NBU0VfUChwcmVmaXgsIHRlc3RfY2FzZV9uYW1lLCBnZW5lcmF0b3Ip
IFwKLSAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dGVzdF9jYXNlX25hbWU6
OlBhcmFtVHlwZT4gXAorLy8gVGhlIG9wdGlvbmFsIGxhc3QgYXJndW1lbnQgdG8gSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AgYWxsb3dzIHRoZSB1c2VyCisvLyB0byBzcGVjaWZ5IGEgZnVuY3Rpb24g
b3IgZnVuY3RvciB0aGF0IGdlbmVyYXRlcyBjdXN0b20gdGVzdCBuYW1lIHN1ZmZpeGVzCisvLyBi
YXNlZCBvbiB0aGUgdGVzdCBwYXJhbWV0ZXJzLiBUaGUgZnVuY3Rpb24gc2hvdWxkIGFjY2VwdCBv
bmUgYXJndW1lbnQgb2YKKy8vIHR5cGUgdGVzdGluZzo6VGVzdFBhcmFtSW5mbzxjbGFzcyBQYXJh
bVR5cGU+LCBhbmQgcmV0dXJuIHN0ZDo6c3RyaW5nLgorLy8KKy8vIHRlc3Rpbmc6OlByaW50VG9T
dHJpbmdQYXJhbU5hbWUgaXMgYSBidWlsdGluIHRlc3Qgc3VmZml4IGdlbmVyYXRvciB0aGF0Cisv
LyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0ZXN0aW5nOjpQcmludFRvU3RyaW5nKEdldFBhcmFtKCkp
LgorLy8KKy8vIE5vdGU6IHRlc3QgbmFtZXMgbXVzdCBiZSBub24tZW1wdHksIHVuaXF1ZSwgYW5k
IG1heSBvbmx5IGNvbnRhaW4gQVNDSUkKKy8vIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9yIHVu
ZGVyc2NvcmUuIEJlY2F1c2UgUHJpbnRUb1N0cmluZyBhZGRzIHF1b3RlcworLy8gdG8gc3RkOjpz
dHJpbmcgYW5kIEMgc3RyaW5ncywgaXQgd29uJ3Qgd29yayBmb3IgdGhlc2UgdHlwZXMuCisKKyMg
ZGVmaW5lIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKHByZWZpeCwgdGVzdF9jYXNlX25hbWUsIGdl
bmVyYXRvciwgLi4uKSBcCisgIHN0YXRpYyA6OnRlc3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVy
YXRvcjx0ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiBcCiAgICAgICBndGVzdF8jI3ByZWZpeCMj
dGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdG9yXygpIHsgcmV0dXJuIGdlbmVyYXRvcjsgfSBc
Ci0gIGludCBndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19kdW1teV8gPSBcCisgIHN0
YXRpYyA6OnN0ZDo6c3RyaW5nIGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxH
ZW5lcmF0ZU5hbWVfKCBcCisgICAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88dGVz
dF9jYXNlX25hbWU6OlBhcmFtVHlwZT4mIGluZm8pIHsgXAorICAgIHJldHVybiA6OnRlc3Rpbmc6
OmludGVybmFsOjpHZXRQYXJhbU5hbWVHZW48dGVzdF9jYXNlX25hbWU6OlBhcmFtVHlwZT4gXAor
ICAgICAgICAoX19WQV9BUkdTX18pKGluZm8pOyBcCisgIH0gXAorICBzdGF0aWMgaW50IGd0ZXN0
XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX2R1bW15XyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VE
XyA9IFwKICAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRl
cml6ZWRfdGVzdF9yZWdpc3RyeSgpLiBcCiAgICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9s
ZGVyPHRlc3RfY2FzZV9uYW1lPihcCi0gICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgX19G
SUxFX18sIF9fTElORV9fKS0+QWRkVGVzdENhc2VJbnN0YW50aWF0aW9uKFwKLSAgICAgICAgICAg
ICAgICAgICNwcmVmaXgsIFwKLSAgICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVz
dF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdG9yXywgXAotICAgICAgICAgICAgICAgICAgX19GSUxF
X18sIF9fTElORV9fKQorICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIFwKKyAgICAgICAg
ICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKFwKKyAgICAgICAgICAgICAg
ICAgIF9fRklMRV9fLCBfX0xJTkVfXykpLT5BZGRUZXN0Q2FzZUluc3RhbnRpYXRpb24oXAorICAg
ICAgICAgICAgICAgICAgICAgICNwcmVmaXgsIFwKKyAgICAgICAgICAgICAgICAgICAgICAmZ3Rl
c3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRvcl8sIFwKKyAgICAgICAg
ICAgICAgICAgICAgICAmZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVy
YXRlTmFtZV8sIFwKKyAgICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pCiAK
IH0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RF
U1QKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qt
cHJpbnRlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qt
cHJpbnRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTg2NWY4NGU2ZjZmYTNlMGZjZTE5ODcwMGI1YTVkZmU1
ZjY1NTBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9ndGVzdC1wcmludGVycy5oCkBAIC0wLDAgKzEsMTEwNyBAQAorLy8gQ29weXJpZ2h0
IDIwMDcsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24u
CisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIEdvb2dsZSBUZXN0IC0gVGhl
IEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsKKy8vCisvLyBUaGlzIGZp
bGUgaW1wbGVtZW50cyBhIHVuaXZlcnNhbCB2YWx1ZSBwcmludGVyIHRoYXQgY2FuIHByaW50IGEK
Ky8vIHZhbHVlIG9mIGFueSB0eXBlIFQ6CisvLworLy8gICB2b2lkIDo6dGVzdGluZzo6aW50ZXJu
YWw6OlVuaXZlcnNhbFByaW50ZXI8VD46OlByaW50KHZhbHVlLCBvc3RyZWFtX3B0cik7CisvLwor
Ly8gQSB1c2VyIGNhbiB0ZWFjaCB0aGlzIGZ1bmN0aW9uIGhvdyB0byBwcmludCBhIGNsYXNzIHR5
cGUgVCBieQorLy8gZGVmaW5pbmcgZWl0aGVyIG9wZXJhdG9yPDwoKSBvciBQcmludFRvKCkgaW4g
dGhlIG5hbWVzcGFjZSB0aGF0CisvLyBkZWZpbmVzIFQuICBNb3JlIHNwZWNpZmljYWxseSwgdGhl
IEZJUlNUIGRlZmluZWQgZnVuY3Rpb24gaW4gdGhlCisvLyBmb2xsb3dpbmcgbGlzdCB3aWxsIGJl
IHVzZWQgKGFzc3VtaW5nIFQgaXMgZGVmaW5lZCBpbiBuYW1lc3BhY2UKKy8vIGZvbyk6CisvLwor
Ly8gICAxLiBmb286OlByaW50VG8oY29uc3QgVCYsIG9zdHJlYW0qKQorLy8gICAyLiBvcGVyYXRv
cjw8KG9zdHJlYW0mLCBjb25zdCBUJikgZGVmaW5lZCBpbiBlaXRoZXIgZm9vIG9yIHRoZQorLy8g
ICAgICBnbG9iYWwgbmFtZXNwYWNlLgorLy8KKy8vIEhvd2V2ZXIgaWYgVCBpcyBhbiBTVEwtc3R5
bGUgY29udGFpbmVyIHRoZW4gaXQgaXMgcHJpbnRlZCBlbGVtZW50LXdpc2UKKy8vIHVubGVzcyBm
b286OlByaW50VG8oY29uc3QgVCYsIG9zdHJlYW0qKSBpcyBkZWZpbmVkLiBOb3RlIHRoYXQKKy8v
IG9wZXJhdG9yPDwoKSBpcyBpZ25vcmVkIGZvciBjb250YWluZXIgdHlwZXMuCisvLworLy8gSWYg
bm9uZSBvZiB0aGUgYWJvdmUgaXMgZGVmaW5lZCwgaXQgd2lsbCBwcmludCB0aGUgZGVidWcgc3Ry
aW5nIG9mCisvLyB0aGUgdmFsdWUgaWYgaXQgaXMgYSBwcm90b2NvbCBidWZmZXIsIG9yIHByaW50
IHRoZSByYXcgYnl0ZXMgaW4gdGhlCisvLyB2YWx1ZSBvdGhlcndpc2UuCisvLworLy8gVG8gYWlk
IGRlYnVnZ2luZzogd2hlbiBUIGlzIGEgcmVmZXJlbmNlIHR5cGUsIHRoZSBhZGRyZXNzIG9mIHRo
ZQorLy8gdmFsdWUgaXMgYWxzbyBwcmludGVkOyB3aGVuIFQgaXMgYSAoY29uc3QpIGNoYXIgcG9p
bnRlciwgYm90aCB0aGUKKy8vIHBvaW50ZXIgdmFsdWUgYW5kIHRoZSBOVUwtdGVybWluYXRlZCBz
dHJpbmcgaXQgcG9pbnRzIHRvIGFyZQorLy8gcHJpbnRlZC4KKy8vCisvLyBXZSBhbHNvIHByb3Zp
ZGUgc29tZSBjb252ZW5pZW50IHdyYXBwZXJzOgorLy8KKy8vICAgLy8gUHJpbnRzIGEgdmFsdWUg
dG8gYSBzdHJpbmcuICBGb3IgYSAoY29uc3Qgb3Igbm90KSBjaGFyCisvLyAgIC8vIHBvaW50ZXIs
IHRoZSBOVUwtdGVybWluYXRlZCBzdHJpbmcgKGJ1dCBub3QgdGhlIHBvaW50ZXIpIGlzCisvLyAg
IC8vIHByaW50ZWQuCisvLyAgIHN0ZDo6c3RyaW5nIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhj
b25zdCBUJiB2YWx1ZSk7CisvLworLy8gICAvLyBQcmludHMgYSB2YWx1ZSB0ZXJzZWx5OiBmb3Ig
YSByZWZlcmVuY2UgdHlwZSwgdGhlIHJlZmVyZW5jZWQKKy8vICAgLy8gdmFsdWUgKGJ1dCBub3Qg
dGhlIGFkZHJlc3MpIGlzIHByaW50ZWQ7IGZvciBhIChjb25zdCBvciBub3QpIGNoYXIKKy8vICAg
Ly8gcG9pbnRlciwgdGhlIE5VTC10ZXJtaW5hdGVkIHN0cmluZyAoYnV0IG5vdCB0aGUgcG9pbnRl
cikgaXMKKy8vICAgLy8gcHJpbnRlZC4KKy8vICAgdm9pZCA6OnRlc3Rpbmc6OmludGVybmFsOjpV
bml2ZXJzYWxUZXJzZVByaW50KGNvbnN0IFQmIHZhbHVlLCBvc3RyZWFtKik7CisvLworLy8gICAv
LyBQcmludHMgdmFsdWUgdXNpbmcgdGhlIHR5cGUgaW5mZXJyZWQgYnkgdGhlIGNvbXBpbGVyLiAg
VGhlIGRpZmZlcmVuY2UKKy8vICAgLy8gZnJvbSBVbml2ZXJzYWxUZXJzZVByaW50KCkgaXMgdGhh
dCB0aGlzIGZ1bmN0aW9uIHByaW50cyBib3RoIHRoZQorLy8gICAvLyBwb2ludGVyIGFuZCB0aGUg
TlVMLXRlcm1pbmF0ZWQgc3RyaW5nIGZvciBhIChjb25zdCBvciBub3QpIGNoYXIgcG9pbnRlci4K
Ky8vICAgdm9pZCA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxQcmludChjb25zdCBUJiB2
YWx1ZSwgb3N0cmVhbSopOworLy8KKy8vICAgLy8gUHJpbnRzIHRoZSBmaWVsZHMgb2YgYSB0dXBs
ZSB0ZXJzZWx5IHRvIGEgc3RyaW5nIHZlY3Rvciwgb25lCisvLyAgIC8vIGVsZW1lbnQgZm9yIGVh
Y2ggZmllbGQuIFR1cGxlIHN1cHBvcnQgbXVzdCBiZSBlbmFibGVkIGluCisvLyAgIC8vIGd0ZXN0
LXBvcnQuaC4KKy8vICAgc3RkOjp2ZWN0b3I8c3RyaW5nPiBVbml2ZXJzYWxUZXJzZVByaW50VHVw
bGVGaWVsZHNUb1N0cmluZ3MoCisvLyAgICAgICBjb25zdCBUdXBsZSYgdmFsdWUpOworLy8KKy8v
IEtub3duIGxpbWl0YXRpb246CisvLworLy8gVGhlIHByaW50IHByaW1pdGl2ZXMgcHJpbnQgdGhl
IGVsZW1lbnRzIG9mIGFuIFNUTC1zdHlsZSBjb250YWluZXIKKy8vIHVzaW5nIHRoZSBjb21waWxl
ci1pbmZlcnJlZCB0eXBlIG9mICppdGVyIHdoZXJlIGl0ZXIgaXMgYQorLy8gY29uc3RfaXRlcmF0
b3Igb2YgdGhlIGNvbnRhaW5lci4gIFdoZW4gY29uc3RfaXRlcmF0b3IgaXMgYW4gaW5wdXQKKy8v
IGl0ZXJhdG9yIGJ1dCBub3QgYSBmb3J3YXJkIGl0ZXJhdG9yLCB0aGlzIGluZmVycmVkIHR5cGUg
bWF5IG5vdAorLy8gbWF0Y2ggdmFsdWVfdHlwZSwgYW5kIHRoZSBwcmludCBvdXRwdXQgbWF5IGJl
IGluY29ycmVjdC4gIEluCisvLyBwcmFjdGljZSwgdGhpcyBpcyByYXJlbHkgYSBwcm9ibGVtIGFz
IGZvciBtb3N0IGNvbnRhaW5lcnMKKy8vIGNvbnN0X2l0ZXJhdG9yIGlzIGEgZm9yd2FyZCBpdGVy
YXRvci4gIFdlJ2xsIGZpeCB0aGlzIGlmIHRoZXJlJ3MgYW4KKy8vIGFjdHVhbCBuZWVkIGZvciBp
dC4gIE5vdGUgdGhhdCB0aGlzIGZpeCBjYW5ub3QgcmVseSBvbiB2YWx1ZV90eXBlCisvLyBiZWlu
ZyBkZWZpbmVkIGFzIG1hbnkgdXNlci1kZWZpbmVkIGNvbnRhaW5lciB0eXBlcyBkb24ndCBoYXZl
CisvLyB2YWx1ZV90eXBlLgorCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisK
KyNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUklOVEVSU19IXworI2RlZmluZSBH
VEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BSSU5URVJTX0hfCisKKyNpbmNsdWRlIDxvc3RyZWFt
PiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5j
bHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcG9ydC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFs
LmgiCisKKyNpZiBHVEVTVF9IQVNfU1REX1RVUExFXworIyBpbmNsdWRlIDx0dXBsZT4KKyNlbmRp
ZgorCisjaWYgR1RFU1RfSEFTX0FCU0wKKyNpbmNsdWRlICJhYnNsL3N0cmluZ3Mvc3RyaW5nX3Zp
ZXcuaCIKKyNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCisjaW5jbHVkZSAiYWJzbC90
eXBlcy92YXJpYW50LmgiCisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCisKK25hbWVzcGFjZSB0
ZXN0aW5nIHsKKworLy8gRGVmaW5pdGlvbnMgaW4gdGhlICdpbnRlcm5hbCcgYW5kICdpbnRlcm5h
bDInIG5hbWUgc3BhY2VzIGFyZQorLy8gc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2Uu
ICBETyBOT1QgVVNFIFRIRU0gSU4gVVNFUiBDT0RFIQorbmFtZXNwYWNlIGludGVybmFsMiB7CisK
Ky8vIFByaW50cyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBnaXZlbiBvYmplY3Qg
dG8gdGhlIGdpdmVuCisvLyBvc3RyZWFtLgorR1RFU1RfQVBJXyB2b2lkIFByaW50Qnl0ZXNJbk9i
amVjdFRvKGNvbnN0IHVuc2lnbmVkIGNoYXIqIG9ial9ieXRlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKKworLy8gRm9yIHNlbGVjdGluZyB3
aGljaCBwcmludGVyIHRvIHVzZSB3aGVuIGEgZ2l2ZW4gdHlwZSBoYXMgbmVpdGhlciA8PAorLy8g
bm9yIFByaW50VG8oKS4KK2VudW0gVHlwZUtpbmQgeworICBrUHJvdG9idWYsICAgICAgICAgICAg
ICAvLyBhIHByb3RvYnVmIHR5cGUKKyAga0NvbnZlcnRpYmxlVG9JbnRlZ2VyLCAgLy8gYSB0eXBl
IGltcGxpY2l0bHkgY29udmVydGlibGUgdG8gQmlnZ2VzdEludAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyAoZS5nLiBhIG5hbWVkIG9yIHVubmFtZWQgZW51bSB0eXBlKQorI2lmIEdURVNU
X0hBU19BQlNMCisgIGtDb252ZXJ0aWJsZVRvU3RyaW5nVmlldywgIC8vIGEgdHlwZSBpbXBsaWNp
dGx5IGNvbnZlcnRpYmxlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFic2w6
OnN0cmluZ192aWV3CisjZW5kaWYKKyAga090aGVyVHlwZSAgLy8gYW55dGhpbmcgZWxzZQorfTsK
KworLy8gVHlwZVdpdGhvdXRGb3JtYXR0ZXI8VCwga1R5cGVLaW5kPjo6UHJpbnRWYWx1ZSh2YWx1
ZSwgb3MpIGlzIGNhbGxlZAorLy8gYnkgdGhlIHVuaXZlcnNhbCBwcmludGVyIHRvIHByaW50IGEg
dmFsdWUgb2YgdHlwZSBUIHdoZW4gbmVpdGhlcgorLy8gb3BlcmF0b3I8PCBub3IgUHJpbnRUbygp
IGlzIGRlZmluZWQgZm9yIFQsIHdoZXJlIGtUeXBlS2luZCBpcyB0aGUKKy8vICJraW5kIiBvZiBU
IGFzIGRlZmluZWQgYnkgZW51bSBUeXBlS2luZC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBUeXBl
S2luZCBrVHlwZUtpbmQ+CitjbGFzcyBUeXBlV2l0aG91dEZvcm1hdHRlciB7CisgcHVibGljOgor
ICAvLyBUaGlzIGRlZmF1bHQgdmVyc2lvbiBpcyBjYWxsZWQgd2hlbiBrVHlwZUtpbmQgaXMga090
aGVyVHlwZS4KKyAgc3RhdGljIHZvaWQgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7CisgICAgUHJpbnRCeXRlc0luT2JqZWN0VG8oc3RhdGljX2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhcio+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVy
cHJldF9jYXN0PGNvbnN0IHZvaWQqPigmdmFsdWUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplb2YodmFsdWUpLCBvcyk7CisgIH0KK307CisKKy8vIFdlIHByaW50IGEgcHJvdG9idWYg
dXNpbmcgaXRzIFNob3J0RGVidWdTdHJpbmcoKSB3aGVuIHRoZSBzdHJpbmcKKy8vIGRvZXNuJ3Qg
ZXhjZWVkIHRoaXMgbWFueSBjaGFyYWN0ZXJzOyBvdGhlcndpc2Ugd2UgcHJpbnQgaXQgdXNpbmcK
Ky8vIERlYnVnU3RyaW5nKCkgZm9yIGJldHRlciByZWFkYWJpbGl0eS4KK2NvbnN0IHNpemVfdCBr
UHJvdG9idWZPbmVMaW5lck1heExlbmd0aCA9IDUwOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2NsYXNzIFR5cGVXaXRob3V0Rm9ybWF0dGVyPFQsIGtQcm90b2J1Zj4geworIHB1YmxpYzoKKyAg
c3RhdGljIHZvaWQgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9z
KSB7CisgICAgc3RkOjpzdHJpbmcgcHJldHR5X3N0ciA9IHZhbHVlLlNob3J0RGVidWdTdHJpbmco
KTsKKyAgICBpZiAocHJldHR5X3N0ci5sZW5ndGgoKSA+IGtQcm90b2J1Zk9uZUxpbmVyTWF4TGVu
Z3RoKSB7CisgICAgICBwcmV0dHlfc3RyID0gIlxuIiArIHZhbHVlLkRlYnVnU3RyaW5nKCk7Cisg
ICAgfQorICAgICpvcyA8PCAoIjwiICsgcHJldHR5X3N0ciArICI+Iik7CisgIH0KK307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZVdpdGhvdXRGb3JtYXR0ZXI8VCwga0NvbnZl
cnRpYmxlVG9JbnRlZ2VyPiB7CisgcHVibGljOgorICAvLyBTaW5jZSBUIGhhcyBubyA8PCBvcGVy
YXRvciBvciBQcmludFRvKCkgYnV0IGNhbiBiZSBpbXBsaWNpdGx5CisgIC8vIGNvbnZlcnRlZCB0
byBCaWdnZXN0SW50LCB3ZSBwcmludCBpdCBhcyBhIEJpZ2dlc3RJbnQuCisgIC8vCisgIC8vIE1v
c3QgbGlrZWx5IFQgaXMgYW4gZW51bSB0eXBlIChlaXRoZXIgbmFtZWQgb3IgdW5uYW1lZCksIGlu
IHdoaWNoCisgIC8vIGNhc2UgcHJpbnRpbmcgaXQgYXMgYW4gaW50ZWdlciBpcyB0aGUgZGVzaXJl
ZCBiZWhhdmlvci4gIEluIGNhc2UKKyAgLy8gVCBpcyBub3QgYW4gZW51bSwgcHJpbnRpbmcgaXQg
YXMgYW4gaW50ZWdlciBpcyB0aGUgYmVzdCB3ZSBjYW4gZG8KKyAgLy8gZ2l2ZW4gdGhhdCBpdCBo
YXMgbm8gdXNlci1kZWZpbmVkIHByaW50ZXIuCisgIHN0YXRpYyB2b2lkIFByaW50VmFsdWUoY29u
c3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIGNvbnN0IGludGVybmFsOjpC
aWdnZXN0SW50IGtCaWdJbnQgPSB2YWx1ZTsKKyAgICAqb3MgPDwga0JpZ0ludDsKKyAgfQorfTsK
KworI2lmIEdURVNUX0hBU19BQlNMCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVX
aXRob3V0Rm9ybWF0dGVyPFQsIGtDb252ZXJ0aWJsZVRvU3RyaW5nVmlldz4geworIHB1YmxpYzoK
KyAgLy8gU2luY2UgVCBoYXMgbmVpdGhlciBvcGVyYXRvcjw8IG5vciBQcmludFRvKCkgYnV0IGNh
biBiZSBpbXBsaWNpdGx5CisgIC8vIGNvbnZlcnRlZCB0byBhYnNsOjpzdHJpbmdfdmlldywgd2Ug
cHJpbnQgaXQgYXMgYSBhYnNsOjpzdHJpbmdfdmlldy4KKyAgLy8KKyAgLy8gTm90ZTogdGhlIGlt
cGxlbWVudGF0aW9uIGlzIGZ1cnRoZXIgYmVsb3csIGFzIGl0IGRlcGVuZHMgb24KKyAgLy8gaW50
ZXJuYWw6OlByaW50VG8gc3ltYm9sIHdoaWNoIGlzIGRlZmluZWQgbGF0ZXIgaW4gdGhlIGZpbGUu
CisgIHN0YXRpYyB2b2lkIFByaW50VmFsdWUoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFt
KiBvcyk7Cit9OworI2VuZGlmCisKKy8vIFByaW50cyB0aGUgZ2l2ZW4gdmFsdWUgdG8gdGhlIGdp
dmVuIG9zdHJlYW0uICBJZiB0aGUgdmFsdWUgaXMgYQorLy8gcHJvdG9jb2wgbWVzc2FnZSwgaXRz
IGRlYnVnIHN0cmluZyBpcyBwcmludGVkOyBpZiBpdCdzIGFuIGVudW0gb3IKKy8vIG9mIGEgdHlw
ZSBpbXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRvIEJpZ2dlc3RJbnQsIGl0J3MgcHJpbnRlZCBhcyBh
bgorLy8gaW50ZWdlcjsgb3RoZXJ3aXNlIHRoZSBieXRlcyBpbiB0aGUgdmFsdWUgYXJlIHByaW50
ZWQuICBUaGlzIGlzCisvLyB3aGF0IFVuaXZlcnNhbFByaW50ZXI8VD46OlByaW50KCkgZG9lcyB3
aGVuIGl0IGtub3dzIG5vdGhpbmcgYWJvdXQKKy8vIHR5cGUgVCBhbmQgVCBoYXMgbmVpdGhlciA8
PCBvcGVyYXRvciBub3IgUHJpbnRUbygpLgorLy8KKy8vIEEgdXNlciBjYW4gb3ZlcnJpZGUgdGhp
cyBiZWhhdmlvciBmb3IgYSBjbGFzcyB0eXBlIEZvbyBieSBkZWZpbmluZworLy8gYSA8PCBvcGVy
YXRvciBpbiB0aGUgbmFtZXNwYWNlIHdoZXJlIEZvbyBpcyBkZWZpbmVkLgorLy8KKy8vIFdlIHB1
dCB0aGlzIG9wZXJhdG9yIGluIG5hbWVzcGFjZSAnaW50ZXJuYWwyJyBpbnN0ZWFkIG9mICdpbnRl
cm5hbCcKKy8vIHRvIHNpbXBsaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbiwgYXMgbXVjaCBjb2RlIGlu
ICdpbnRlcm5hbCcgbmVlZHMgdG8KKy8vIHVzZSA8PCBpbiBTVEwsIHdoaWNoIHdvdWxkIGNvbmZs
aWN0IHdpdGggb3VyIG93biA8PCB3ZXJlIGl0IGRlZmluZWQKKy8vIGluICdpbnRlcm5hbCcuCisv
LworLy8gTm90ZSB0aGF0IHRoaXMgb3BlcmF0b3I8PCB0YWtlcyBhIGdlbmVyaWMgc3RkOjpiYXNp
Y19vc3RyZWFtPENoYXIsCisvLyBDaGFyVHJhaXRzPiB0eXBlIGluc3RlYWQgb2YgdGhlIG1vcmUg
cmVzdHJpY3RlZCBzdGQ6Om9zdHJlYW0uICBJZgorLy8gd2UgZGVmaW5lIGl0IHRvIHRha2UgYW4g
c3RkOjpvc3RyZWFtIGluc3RlYWQsIHdlJ2xsIGdldCBhbgorLy8gImFtYmlndW91cyBvdmVybG9h
ZHMiIGNvbXBpbGVyIGVycm9yIHdoZW4gdHJ5aW5nIHRvIHByaW50IGEgdHlwZQorLy8gRm9vIHRo
YXQgc3VwcG9ydHMgc3RyZWFtaW5nIHRvIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLAorLy8gQ2hh
clRyYWl0cz4sIGFzIHRoZSBjb21waWxlciBjYW5ub3QgdGVsbCB3aGV0aGVyCisvLyBvcGVyYXRv
cjw8KHN0ZDo6b3N0cmVhbSYsIGNvbnN0IFQmKSBvcgorLy8gb3BlcmF0b3I8PChzdGQ6OmJhc2lj
X3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiwgY29uc3QgRm9vJikgaXMgbW9yZQorLy8gc3BlY2lm
aWMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhciwgdHlwZW5hbWUgQ2hhclRyYWl0cywgdHlwZW5h
bWUgVD4KKzo6c3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcGVyYXRvcjw8
KAorICAgIDo6c3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcywgY29uc3Qg
VCYgeCkgeworICBUeXBlV2l0aG91dEZvcm1hdHRlcjxULCAoaW50ZXJuYWw6OklzQVByb3RvY29s
TWVzc2FnZTxUPjo6dmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGtQcm90
b2J1ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50ZXJuYWw6OkltcGxpY2l0
bHlDb252ZXJ0aWJsZTwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUJiwgaW50ZXJuYWw6OkJpZ2dlc3RJbnQ+Ojp2YWx1ZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID8ga0NvbnZlcnRpYmxlVG9JbnRlZ2VyCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOgorI2lmIEdURVNUX0hBU19BQlNMCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCYsIGFic2w6
OnN0cmluZ192aWV3Pjo6dmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPyBrQ29udmVydGlibGVUb1N0cmluZ1ZpZXcKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOgorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtPdGhlclR5cGUpPjo6UHJpbnRWYWx1ZSh4LCAmb3MpOworICByZXR1cm4g
b3M7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbDIKK30gIC8vIG5hbWVzcGFjZSB0ZXN0
aW5nCisKKy8vIFRoaXMgbmFtZXNwYWNlIE1VU1QgTk9UIEJFIE5FU1RFRCBJTiA6OnRlc3Rpbmcs
IG9yIHRoZSBuYW1lIGxvb2stdXAKKy8vIG1hZ2ljIG5lZWRlZCBmb3IgaW1wbGVtZW50aW5nIFVu
aXZlcnNhbFByaW50ZXIgd29uJ3Qgd29yay4KK25hbWVzcGFjZSB0ZXN0aW5nX2ludGVybmFsIHsK
KworLy8gVXNlZCB0byBwcmludCBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIFNUTC1zdHlsZSBjb250
YWluZXIgd2hlbiB0aGUKKy8vIHVzZXIgZG9lc24ndCBkZWZpbmUgUHJpbnRUbygpIGZvciBpdC4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBEZWZhdWx0UHJpbnROb25Db250YWluZXJUbyhj
b25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIC8vIFdpdGggdGhlIGZvbGxv
d2luZyBzdGF0ZW1lbnQsIGR1cmluZyB1bnF1YWxpZmllZCBuYW1lIGxvb2t1cCwKKyAgLy8gdGVz
dGluZzo6aW50ZXJuYWwyOjpvcGVyYXRvcjw8IGFwcGVhcnMgYXMgaWYgaXQgd2FzIGRlY2xhcmVk
IGluCisgIC8vIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UgdGhhdCBjb250YWlucyBi
b3RoCisgIC8vIDo6dGVzdGluZ19pbnRlcm5hbCBhbmQgOjp0ZXN0aW5nOjppbnRlcm5hbDIsIGku
ZS4gdGhlIGdsb2JhbAorICAvLyBuYW1lc3BhY2UuICBGb3IgbW9yZSBkZXRhaWxzLCByZWZlciB0
byB0aGUgQysrIFN0YW5kYXJkIHNlY3Rpb24KKyAgLy8gNy4zLjQtMSBbbmFtZXNwYWNlLnVkaXJd
LiAgVGhpcyBhbGxvd3MgdXMgdG8gZmFsbCBiYWNrIG9udG8KKyAgLy8gdGVzdGluZzo6aW50ZXJu
YWwyOjpvcGVyYXRvcjw8IGluIGNhc2UgVCBkb2Vzbid0IGNvbWUgd2l0aCBhIDw8CisgIC8vIG9w
ZXJhdG9yLgorICAvLworICAvLyBXZSBjYW5ub3Qgd3JpdGUgJ3VzaW5nIDo6dGVzdGluZzo6aW50
ZXJuYWwyOjpvcGVyYXRvcjw8OycsIHdoaWNoCisgIC8vIGdjYyAzLjMgZmFpbHMgdG8gY29tcGls
ZSBkdWUgdG8gYSBjb21waWxlciBidWcuCisgIHVzaW5nIG5hbWVzcGFjZSA6OnRlc3Rpbmc6Omlu
dGVybmFsMjsgIC8vIE5PTElOVAorCisgIC8vIEFzc3VtaW5nIFQgaXMgZGVmaW5lZCBpbiBuYW1l
c3BhY2UgZm9vLCBpbiB0aGUgbmV4dCBzdGF0ZW1lbnQsCisgIC8vIHRoZSBjb21waWxlciB3aWxs
IGNvbnNpZGVyIGFsbCBvZjoKKyAgLy8KKyAgLy8gICAxLiBmb286Om9wZXJhdG9yPDwgKHRoYW5r
cyB0byBLb2VuaWcgbG9vay11cCksCisgIC8vICAgMi4gOjpvcGVyYXRvcjw8IChhcyB0aGUgY3Vy
cmVudCBuYW1lc3BhY2UgaXMgZW5jbG9zZWQgaW4gOjopLAorICAvLyAgIDMuIHRlc3Rpbmc6Omlu
dGVybmFsMjo6b3BlcmF0b3I8PCAodGhhbmtzIHRvIHRoZSB1c2luZyBzdGF0ZW1lbnQgYWJvdmUp
LgorICAvLworICAvLyBUaGUgb3BlcmF0b3I8PCB3aG9zZSB0eXBlIG1hdGNoZXMgVCBiZXN0IHdp
bGwgYmUgcGlja2VkLgorICAvLworICAvLyBXZSBkZWxpYmVyYXRlbHkgYWxsb3cgIzIgdG8gYmUg
YSBjYW5kaWRhdGUsIGFzIHNvbWV0aW1lcyBpdCdzCisgIC8vIGltcG9zc2libGUgdG8gZGVmaW5l
ICMxIChlLmcuIHdoZW4gZm9vIGlzIDo6c3RkLCBkZWZpbmluZworICAvLyBhbnl0aGluZyBpbiBp
dCBpcyB1bmRlZmluZWQgYmVoYXZpb3IgdW5sZXNzIHlvdSBhcmUgYSBjb21waWxlcgorICAvLyB2
ZW5kb3IuKS4KKyAgKm9zIDw8IHZhbHVlOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZ19p
bnRlcm5hbAorCituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCisv
LyBGb3JtYXRGb3JDb21wYXJpc29uPFRvUHJpbnQsIE90aGVyT3BlcmFuZD46OkZvcm1hdCh2YWx1
ZSkgZm9ybWF0cyBhCisvLyB2YWx1ZSBvZiB0eXBlIFRvUHJpbnQgdGhhdCBpcyBhbiBvcGVyYW5k
IG9mIGEgY29tcGFyaXNvbiBhc3NlcnRpb24KKy8vIChlLmcuIEFTU0VSVF9FUSkuICBPdGhlck9w
ZXJhbmQgaXMgdGhlIHR5cGUgb2YgdGhlIG90aGVyIG9wZXJhbmQgaW4KKy8vIHRoZSBjb21wYXJp
c29uLCBhbmQgaXMgdXNlZCB0byBoZWxwIGRldGVybWluZSB0aGUgYmVzdCB3YXkgdG8KKy8vIGZv
cm1hdCB0aGUgdmFsdWUuICBJbiBwYXJ0aWN1bGFyLCB3aGVuIHRoZSB2YWx1ZSBpcyBhIEMgc3Ry
aW5nCisvLyAoY2hhciBwb2ludGVyKSBhbmQgdGhlIG90aGVyIG9wZXJhbmQgaXMgYW4gU1RMIHN0
cmluZyBvYmplY3QsIHdlCisvLyB3YW50IHRvIGZvcm1hdCB0aGUgQyBzdHJpbmcgYXMgYSBzdHJp
bmcsIHNpbmNlIHdlIGtub3cgaXQgaXMKKy8vIGNvbXBhcmVkIGJ5IHZhbHVlIHdpdGggdGhlIHN0
cmluZyBvYmplY3QuICBJZiB0aGUgdmFsdWUgaXMgYSBjaGFyCisvLyBwb2ludGVyIGJ1dCB0aGUg
b3RoZXIgb3BlcmFuZCBpcyBub3QgYW4gU1RMIHN0cmluZyBvYmplY3QsIHdlIGRvbid0CisvLyBr
bm93IHdoZXRoZXIgdGhlIHBvaW50ZXIgaXMgc3VwcG9zZWQgdG8gcG9pbnQgdG8gYSBOVUwtdGVy
bWluYXRlZAorLy8gc3RyaW5nLCBhbmQgdGh1cyB3YW50IHRvIHByaW50IGl0IGFzIGEgcG9pbnRl
ciB0byBiZSBzYWZlLgorLy8KKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVT
RSBJTiBBIFVTRVIgUFJPR1JBTS4KKworLy8gVGhlIGRlZmF1bHQgY2FzZS4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUb1ByaW50LCB0eXBlbmFtZSBPdGhlck9wZXJhbmQ+CitjbGFzcyBGb3JtYXRGb3JD
b21wYXJpc29uIHsKKyBwdWJsaWM6CisgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1hdChjb25z
dCBUb1ByaW50JiB2YWx1ZSkgeworICAgIHJldHVybiA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmco
dmFsdWUpOworICB9Cit9OworCisvLyBBcnJheS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUb1ByaW50
LCBzaXplX3QgTiwgdHlwZW5hbWUgT3RoZXJPcGVyYW5kPgorY2xhc3MgRm9ybWF0Rm9yQ29tcGFy
aXNvbjxUb1ByaW50W05dLCBPdGhlck9wZXJhbmQ+IHsKKyBwdWJsaWM6CisgIHN0YXRpYyA6OnN0
ZDo6c3RyaW5nIEZvcm1hdChjb25zdCBUb1ByaW50KiB2YWx1ZSkgeworICAgIHJldHVybiBGb3Jt
YXRGb3JDb21wYXJpc29uPGNvbnN0IFRvUHJpbnQqLCBPdGhlck9wZXJhbmQ+OjpGb3JtYXQodmFs
dWUpOworICB9Cit9OworCisvLyBCeSBkZWZhdWx0LCBwcmludCBDIHN0cmluZyBhcyBwb2ludGVy
cyB0byBiZSBzYWZlLCBhcyB3ZSBkb24ndCBrbm93CisvLyB3aGV0aGVyIHRoZXkgYWN0dWFsbHkg
cG9pbnQgdG8gYSBOVUwtdGVybWluYXRlZCBzdHJpbmcuCisKKyNkZWZpbmUgR1RFU1RfSU1QTF9G
T1JNQVRfQ19TVFJJTkdfQVNfUE9JTlRFUl8oQ2hhclR5cGUpICAgICAgICAgICAgICAgIFwKKyAg
dGVtcGxhdGUgPHR5cGVuYW1lIE90aGVyT3BlcmFuZD4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgY2xhc3MgRm9ybWF0Rm9yQ29tcGFyaXNvbjxDaGFyVHlwZSosIE90
aGVyT3BlcmFuZD4geyAgICAgICAgICAgICAgICAgIFwKKyAgIHB1YmxpYzogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBz
dGF0aWMgOjpzdGQ6OnN0cmluZyBGb3JtYXQoQ2hhclR5cGUqIHZhbHVlKSB7ICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgIHJldHVybiA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoc3RhdGlj
X2Nhc3Q8Y29uc3Qgdm9pZCo+KHZhbHVlKSk7IFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCitH
VEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19QT0lOVEVSXyhjaGFyKTsKK0dURVNUX0lNUExf
Rk9STUFUX0NfU1RSSU5HX0FTX1BPSU5URVJfKGNvbnN0IGNoYXIpOworR1RFU1RfSU1QTF9GT1JN
QVRfQ19TVFJJTkdfQVNfUE9JTlRFUl8od2NoYXJfdCk7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NU
UklOR19BU19QT0lOVEVSXyhjb25zdCB3Y2hhcl90KTsKKworI3VuZGVmIEdURVNUX0lNUExfRk9S
TUFUX0NfU1RSSU5HX0FTX1BPSU5URVJfCisKKy8vIElmIGEgQyBzdHJpbmcgaXMgY29tcGFyZWQg
d2l0aCBhbiBTVEwgc3RyaW5nIG9iamVjdCwgd2Uga25vdyBpdCdzIG1lYW50CisvLyB0byBwb2lu
dCB0byBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZywgYW5kIHRodXMgY2FuIHByaW50IGl0IGFzIGEg
c3RyaW5nLgorCisjZGVmaW5lIEdURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18o
Q2hhclR5cGUsIE90aGVyU3RyaW5nVHlwZSkgXAorICB0ZW1wbGF0ZSA8PiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBjbGFzcyBG
b3JtYXRGb3JDb21wYXJpc29uPENoYXJUeXBlKiwgT3RoZXJTdHJpbmdUeXBlPiB7ICAgICAgICAg
ICAgICAgXAorICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1h
dChDaGFyVHlwZSogdmFsdWUpIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgcmV0dXJu
IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyh2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5H
X0FTX1NUUklOR18oY2hhciwgOjpzdGQ6OnN0cmluZyk7CitHVEVTVF9JTVBMX0ZPUk1BVF9DX1NU
UklOR19BU19TVFJJTkdfKGNvbnN0IGNoYXIsIDo6c3RkOjpzdHJpbmcpOworCisjaWYgR1RFU1Rf
SEFTX0dMT0JBTF9TVFJJTkcKK0dURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18o
Y2hhciwgOjpzdHJpbmcpOworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhj
b25zdCBjaGFyLCA6OnN0cmluZyk7CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19HTE9CQUxfV1NU
UklORworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyh3Y2hhcl90LCA6Ondz
dHJpbmcpOworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjb25zdCB3Y2hh
cl90LCA6OndzdHJpbmcpOworI2VuZGlmCisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKK0dU
RVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklOR18od2NoYXJfdCwgOjpzdGQ6OndzdHJp
bmcpOworR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjb25zdCB3Y2hhcl90
LCA6OnN0ZDo6d3N0cmluZyk7CisjZW5kaWYKKworI3VuZGVmIEdURVNUX0lNUExfRk9STUFUX0Nf
U1RSSU5HX0FTX1NUUklOR18KKworLy8gRm9ybWF0cyBhIGNvbXBhcmlzb24gYXNzZXJ0aW9uIChl
LmcuIEFTU0VSVF9FUSwgRVhQRUNUX0xULCBhbmQgZXRjKQorLy8gb3BlcmFuZCB0byBiZSB1c2Vk
IGluIGEgZmFpbHVyZSBtZXNzYWdlLiAgVGhlIHR5cGUgKGJ1dCBub3QgdmFsdWUpCisvLyBvZiB0
aGUgb3RoZXIgb3BlcmFuZCBtYXkgYWZmZWN0IHRoZSBmb3JtYXQuICBUaGlzIGFsbG93cyB1cyB0
bworLy8gcHJpbnQgYSBjaGFyKiBhcyBhIHJhdyBwb2ludGVyIHdoZW4gaXQgaXMgY29tcGFyZWQg
YWdhaW5zdCBhbm90aGVyCisvLyBjaGFyKiBvciB2b2lkKiwgYW5kIHByaW50IGl0IGFzIGEgQyBz
dHJpbmcgd2hlbiBpdCBpcyBjb21wYXJlZAorLy8gYWdhaW5zdCBhbiBzdGQ6OnN0cmluZyBvYmpl
Y3QsIGZvciBleGFtcGxlLgorLy8KKy8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9U
IFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDI+CitzdGQ6OnN0cmluZyBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoCisgICAg
Y29uc3QgVDEmIHZhbHVlLCBjb25zdCBUMiYgLyogb3RoZXJfb3BlcmFuZCAqLykgeworICByZXR1
cm4gRm9ybWF0Rm9yQ29tcGFyaXNvbjxUMSwgVDI+OjpGb3JtYXQodmFsdWUpOworfQorCisvLyBV
bml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCh2YWx1ZSwgb3N0cmVhbV9wdHIpIHByaW50cyB0aGUg
Z2l2ZW4KKy8vIHZhbHVlIHRvIHRoZSBnaXZlbiBvc3RyZWFtLiAgVGhlIGNhbGxlciBtdXN0IGVu
c3VyZSB0aGF0CisvLyAnb3N0cmVhbV9wdHInIGlzIG5vdCBOVUxMLCBvciB0aGUgYmVoYXZpb3Ig
aXMgdW5kZWZpbmVkLgorLy8KKy8vIFdlIGRlZmluZSBVbml2ZXJzYWxQcmludGVyIGFzIGEgY2xh
c3MgdGVtcGxhdGUgKGFzIG9wcG9zZWQgdG8gYQorLy8gZnVuY3Rpb24gdGVtcGxhdGUpLCBhcyB3
ZSBuZWVkIHRvIHBhcnRpYWxseSBzcGVjaWFsaXplIGl0IGZvcgorLy8gcmVmZXJlbmNlIHR5cGVz
LCB3aGljaCBjYW5ub3QgYmUgZG9uZSB3aXRoIGZ1bmN0aW9uIHRlbXBsYXRlcy4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorY2xhc3MgVW5pdmVyc2FsUHJpbnRlcjsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVh
bSogb3MpOworCitlbnVtIERlZmF1bHRQcmludGVyVHlwZSB7CisgIGtQcmludENvbnRhaW5lciwK
KyAga1ByaW50UG9pbnRlciwKKyAga1ByaW50RnVuY3Rpb25Qb2ludGVyLAorICBrUHJpbnRPdGhl
ciwKK307Cit0ZW1wbGF0ZSA8RGVmYXVsdFByaW50ZXJUeXBlIHR5cGU+IHN0cnVjdCBXcmFwUHJp
bnRlclR5cGUge307CisKKy8vIFVzZWQgdG8gcHJpbnQgYW4gU1RMLXN0eWxlIGNvbnRhaW5lciB3
aGVuIHRoZSB1c2VyIGRvZXNuJ3QgZGVmaW5lCisvLyBhIFByaW50VG8oKSBmb3IgaXQuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgQz4KK3ZvaWQgRGVmYXVsdFByaW50VG8oV3JhcFByaW50ZXJUeXBlPGtQ
cmludENvbnRhaW5lcj4gLyogZHVtbXkgKi8sCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEMm
IGNvbnRhaW5lciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIGNvbnN0IHNpemVfdCBrTWF4Q291
bnQgPSAzMjsgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyB0byBwcmludC4KKyAg
Km9zIDw8ICd7JzsKKyAgc2l6ZV90IGNvdW50ID0gMDsKKyAgZm9yICh0eXBlbmFtZSBDOjpjb25z
dF9pdGVyYXRvciBpdCA9IGNvbnRhaW5lci5iZWdpbigpOworICAgICAgIGl0ICE9IGNvbnRhaW5l
ci5lbmQoKTsgKytpdCwgKytjb3VudCkgeworICAgIGlmIChjb3VudCA+IDApIHsKKyAgICAgICpv
cyA8PCAnLCc7CisgICAgICBpZiAoY291bnQgPT0ga01heENvdW50KSB7ICAvLyBFbm91Z2ggaGFz
IGJlZW4gcHJpbnRlZC4KKyAgICAgICAgKm9zIDw8ICIgLi4uIjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICB9CisgICAgfQorICAgICpvcyA8PCAnICc7CisgICAgLy8gV2UgY2Fubm90IGNhbGwgUHJp
bnRUbygqaXQsIG9zKSBoZXJlIGFzIFByaW50VG8oKSBkb2Vzbid0CisgICAgLy8gaGFuZGxlICpp
dCBiZWluZyBhIG5hdGl2ZSBhcnJheS4KKyAgICBpbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnQoKml0
LCBvcyk7CisgIH0KKworICBpZiAoY291bnQgPiAwKSB7CisgICAgKm9zIDw8ICcgJzsKKyAgfQor
ICAqb3MgPDwgJ30nOworfQorCisvLyBVc2VkIHRvIHByaW50IGEgcG9pbnRlciB0aGF0IGlzIG5l
aXRoZXIgYSBjaGFyIHBvaW50ZXIgbm9yIGEgbWVtYmVyCisvLyBwb2ludGVyLCB3aGVuIHRoZSB1
c2VyIGRvZXNuJ3QgZGVmaW5lIFByaW50VG8oKSBmb3IgaXQuICAoQSBtZW1iZXIKKy8vIHZhcmlh
YmxlIHBvaW50ZXIgb3IgbWVtYmVyIGZ1bmN0aW9uIHBvaW50ZXIgZG9lc24ndCByZWFsbHkgcG9p
bnQgdG8KKy8vIGEgbG9jYXRpb24gaW4gdGhlIGFkZHJlc3Mgc3BhY2UuICBUaGVpciByZXByZXNl
bnRhdGlvbiBpcworLy8gaW1wbGVtZW50YXRpb24tZGVmaW5lZC4gIFRoZXJlZm9yZSB0aGV5IHdp
bGwgYmUgcHJpbnRlZCBhcyByYXcKKy8vIGJ5dGVzLikKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
dm9pZCBEZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5cGU8a1ByaW50UG9pbnRlcj4gLyogZHVt
bXkgKi8sCisgICAgICAgICAgICAgICAgICAgIFQqIHAsIDo6c3RkOjpvc3RyZWFtKiBvcykgewor
ICBpZiAocCA9PSBOVUxMKSB7CisgICAgKm9zIDw8ICJOVUxMIjsKKyAgfSBlbHNlIHsKKyAgICAv
LyBUIGlzIG5vdCBhIGZ1bmN0aW9uIHR5cGUuICBXZSBqdXN0IGNhbGwgPDwgdG8gcHJpbnQgcCwK
KyAgICAvLyByZWx5aW5nIG9uIEFETCB0byBwaWNrIHVwIHVzZXItZGVmaW5lZCA8PCBmb3IgdGhl
aXIgcG9pbnRlcgorICAgIC8vIHR5cGVzLCBpZiBhbnkuCisgICAgKm9zIDw8IHA7CisgIH0KK30K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBEZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5
cGU8a1ByaW50RnVuY3Rpb25Qb2ludGVyPiAvKiBkdW1teSAqLywKKyAgICAgICAgICAgICAgICAg
ICAgVCogcCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIGlmIChwID09IE5VTEwpIHsKKyAgICAq
b3MgPDwgIk5VTEwiOworICB9IGVsc2UgeworICAgIC8vIFQgaXMgYSBmdW5jdGlvbiB0eXBlLCBz
byAnKm9zIDw8IHAnIGRvZXNuJ3QgZG8gd2hhdCB3ZSB3YW50CisgICAgLy8gKGl0IGp1c3QgcHJp
bnRzIHAgYXMgYm9vbCkuICBXZSB3YW50IHRvIHByaW50IHAgYXMgYSBjb25zdAorICAgIC8vIHZv
aWQqLgorICAgICpvcyA8PCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihwKTsKKyAgfQor
fQorCisvLyBVc2VkIHRvIHByaW50IGEgbm9uLWNvbnRhaW5lciwgbm9uLXBvaW50ZXIgdmFsdWUg
d2hlbiB0aGUgdXNlcgorLy8gZG9lc24ndCBkZWZpbmUgUHJpbnRUbygpIGZvciBpdC4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgordm9pZCBEZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5cGU8a1By
aW50T3RoZXI+IC8qIGR1bW15ICovLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiB2YWx1
ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIDo6dGVzdGluZ19pbnRlcm5hbDo6RGVmYXVsdFBy
aW50Tm9uQ29udGFpbmVyVG8odmFsdWUsIG9zKTsKK30KKworLy8gUHJpbnRzIHRoZSBnaXZlbiB2
YWx1ZSB1c2luZyB0aGUgPDwgb3BlcmF0b3IgaWYgaXQgaGFzIG9uZTsKKy8vIG90aGVyd2lzZSBw
cmludHMgdGhlIGJ5dGVzIGluIGl0LiAgVGhpcyBpcyB3aGF0CisvLyBVbml2ZXJzYWxQcmludGVy
PFQ+OjpQcmludCgpIGRvZXMgd2hlbiBQcmludFRvKCkgaXMgbm90IHNwZWNpYWxpemVkCisvLyBv
ciBvdmVybG9hZGVkIGZvciB0eXBlIFQuCisvLworLy8gQSB1c2VyIGNhbiBvdmVycmlkZSB0aGlz
IGJlaGF2aW9yIGZvciBhIGNsYXNzIHR5cGUgRm9vIGJ5IGRlZmluaW5nCisvLyBhbiBvdmVybG9h
ZCBvZiBQcmludFRvKCkgaW4gdGhlIG5hbWVzcGFjZSB3aGVyZSBGb28gaXMgZGVmaW5lZC4gIFdl
CisvLyBnaXZlIHRoZSB1c2VyIHRoaXMgb3B0aW9uIGFzIHNvbWV0aW1lcyBkZWZpbmluZyBhIDw8
IG9wZXJhdG9yIGZvcgorLy8gRm9vIGlzIG5vdCBkZXNpcmFibGUgKGUuZy4gdGhlIGNvZGluZyBz
dHlsZSBtYXkgcHJldmVudCBkb2luZyBpdCwKKy8vIG9yIHRoZXJlIGlzIGFscmVhZHkgYSA8PCBv
cGVyYXRvciBidXQgaXQgZG9lc24ndCBkbyB3aGF0IHRoZSB1c2VyCisvLyB3YW50cykuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgUHJpbnRUbyhjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7CisgIC8vIERlZmF1bHRQcmludFRvKCkgaXMgb3ZlcmxvYWRlZC4gIFRoZSB0
eXBlIG9mIGl0cyBmaXJzdCBhcmd1bWVudAorICAvLyBkZXRlcm1pbmVzIHdoaWNoIHZlcnNpb24g
d2lsbCBiZSBwaWNrZWQuCisgIC8vCisgIC8vIE5vdGUgdGhhdCB3ZSBjaGVjayBmb3IgY29udGFp
bmVyIHR5cGVzIGhlcmUsIHByaW9yIHRvIHdlIGNoZWNrCisgIC8vIGZvciBwcm90b2NvbCBtZXNz
YWdlIHR5cGVzIGluIG91ciBvcGVyYXRvcjw8LiAgVGhlIHJhdGlvbmFsZSBpczoKKyAgLy8KKyAg
Ly8gRm9yIHByb3RvY29sIG1lc3NhZ2VzLCB3ZSB3YW50IHRvIGdpdmUgcGVvcGxlIGEgY2hhbmNl
IHRvCisgIC8vIG92ZXJyaWRlIEdvb2dsZSBNb2NrJ3MgZm9ybWF0IGJ5IGRlZmluaW5nIGEgUHJp
bnRUbygpIG9yCisgIC8vIG9wZXJhdG9yPDwuICBGb3IgU1RMIGNvbnRhaW5lcnMsIG90aGVyIGZv
cm1hdHMgY2FuIGJlCisgIC8vIGluY29tcGF0aWJsZSB3aXRoIEdvb2dsZSBNb2NrJ3MgZm9ybWF0
IGZvciB0aGUgY29udGFpbmVyCisgIC8vIGVsZW1lbnRzOyB0aGVyZWZvcmUgd2UgY2hlY2sgZm9y
IGNvbnRhaW5lciB0eXBlcyBoZXJlIHRvIGVuc3VyZQorICAvLyB0aGF0IG91ciBmb3JtYXQgaXMg
dXNlZC4KKyAgLy8KKyAgLy8gTm90ZSB0aGF0IE1TVkMgYW5kIGNsYW5nLWNsIGRvIGFsbG93IGFu
IGltcGxpY2l0IGNvbnZlcnNpb24gZnJvbQorICAvLyBwb2ludGVyLXRvLWZ1bmN0aW9uIHRvIHBv
aW50ZXItdG8tb2JqZWN0LCBidXQgY2xhbmctY2wgd2FybnMgb24gaXQuCisgIC8vIFNvIGRvbid0
IHVzZSBJbXBsaWNpdGx5Q29udmVydGlibGUgaWYgaXQgY2FuIGJlIGhlbHBlZCBzaW5jZSBpdCB3
aWxsCisgIC8vIGNhdXNlIHRoaXMgd2FybmluZywgYW5kIHVzZSBhIHNlcGFyYXRlIG92ZXJsb2Fk
IG9mIERlZmF1bHRQcmludFRvIGZvcgorICAvLyBmdW5jdGlvbiBwb2ludGVycyBzbyB0aGF0IHRo
ZSBgKm9zIDw8IHBgIGluIHRoZSBvYmplY3QgcG9pbnRlciBvdmVybG9hZAorICAvLyBkb2Vzbid0
IGNhdXNlIHRoYXQgd2FybmluZyBlaXRoZXIuCisgIERlZmF1bHRQcmludFRvKAorICAgICAgV3Jh
cFByaW50ZXJUeXBlIDwKKyAgICAgICAgICAgICAgICAgIChzaXplb2YoSXNDb250YWluZXJUZXN0
PFQ+KDApKSA9PSBzaXplb2YoSXNDb250YWluZXIpKSAmJgorICAgICAgICAgICAgICAhSXNSZWN1
cnNpdmVDb250YWluZXI8VD46OnZhbHVlCisgICAgICAgICAgPyBrUHJpbnRDb250YWluZXIKKyAg
ICAgICAgICA6ICFpc19wb2ludGVyPFQ+Ojp2YWx1ZQorICAgICAgICAgICAgICAgID8ga1ByaW50
T3RoZXIKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisgICAgICAgICAgICAgICAgOiBzdGQ6OmlzX2Z1
bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+Ojp2YWx1ZQorI2Vs
c2UKKyAgICAgICAgICAgICAgICA6ICFpbnRlcm5hbDo6SW1wbGljaXRseUNvbnZlcnRpYmxlPFQs
IGNvbnN0IHZvaWQqPjo6dmFsdWUKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgID8ga1By
aW50RnVuY3Rpb25Qb2ludGVyCisgICAgICAgICAgICAgICAgICAgICAgOiBrUHJpbnRQb2ludGVy
ID4gKCksCisgICAgICB2YWx1ZSwgb3MpOworfQorCisvLyBUaGUgZm9sbG93aW5nIGxpc3Qgb2Yg
UHJpbnRUbygpIG92ZXJsb2FkcyB0ZWxscworLy8gVW5pdmVyc2FsUHJpbnRlcjxUPjo6UHJpbnQo
KSBob3cgdG8gcHJpbnQgc3RhbmRhcmQgdHlwZXMgKGJ1aWx0LWluCisvLyB0eXBlcywgc3RyaW5n
cywgcGxhaW4gYXJyYXlzLCBhbmQgcG9pbnRlcnMpLgorCisvLyBPdmVybG9hZHMgZm9yIHZhcmlv
dXMgY2hhciB0eXBlcy4KK0dURVNUX0FQSV8gdm9pZCBQcmludFRvKHVuc2lnbmVkIGNoYXIgYywg
OjpzdGQ6Om9zdHJlYW0qIG9zKTsKK0dURVNUX0FQSV8gdm9pZCBQcmludFRvKHNpZ25lZCBjaGFy
IGMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRvKGNoYXIgYywgOjpz
dGQ6Om9zdHJlYW0qIG9zKSB7CisgIC8vIFdoZW4gcHJpbnRpbmcgYSBwbGFpbiBjaGFyLCB3ZSBh
bHdheXMgdHJlYXQgaXQgYXMgdW5zaWduZWQuICBUaGlzCisgIC8vIHdheSwgdGhlIG91dHB1dCB3
b24ndCBiZSBhZmZlY3RlZCBieSB3aGV0aGVyIHRoZSBjb21waWxlciB0aGlua3MKKyAgLy8gY2hh
ciBpcyBzaWduZWQgb3Igbm90LgorICBQcmludFRvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KGMpLCBvcyk7Cit9CisKKy8vIE92ZXJsb2FkcyBmb3Igb3RoZXIgc2ltcGxlIGJ1aWx0LWluIHR5
cGVzLgoraW5saW5lIHZvaWQgUHJpbnRUbyhib29sIHgsIDo6c3RkOjpvc3RyZWFtKiBvcykgewor
ICAqb3MgPDwgKHggPyAidHJ1ZSIgOiAiZmFsc2UiKTsKK30KKworLy8gT3ZlcmxvYWQgZm9yIHdj
aGFyX3QgdHlwZS4KKy8vIFByaW50cyBhIHdjaGFyX3QgYXMgYSBzeW1ib2wgaWYgaXQgaXMgcHJp
bnRhYmxlIG9yIGFzIGl0cyBpbnRlcm5hbAorLy8gY29kZSBvdGhlcndpc2UgYW5kIGFsc28gYXMg
aXRzIGRlY2ltYWwgY29kZSAoZXhjZXB0IGZvciBMJ1wwJykuCisvLyBUaGUgTCdcMCcgY2hhciBp
cyBwcmludGVkIGFzICJMJ1xcMCciLiBUaGUgZGVjaW1hbCBjb2RlIGlzIHByaW50ZWQKKy8vIGFz
IHNpZ25lZCBpbnRlZ2VyIHdoZW4gd2NoYXJfdCBpcyBpbXBsZW1lbnRlZCBieSB0aGUgY29tcGls
ZXIKKy8vIGFzIGEgc2lnbmVkIHR5cGUgYW5kIGlzIHByaW50ZWQgYXMgYW4gdW5zaWduZWQgaW50
ZWdlciB3aGVuIHdjaGFyX3QKKy8vIGlzIGltcGxlbWVudGVkIGFzIGFuIHVuc2lnbmVkIHR5cGUu
CitHVEVTVF9BUElfIHZvaWQgUHJpbnRUbyh3Y2hhcl90IHdjLCA6OnN0ZDo6b3N0cmVhbSogb3Mp
OworCisvLyBPdmVybG9hZHMgZm9yIEMgc3RyaW5ncy4KK0dURVNUX0FQSV8gdm9pZCBQcmludFRv
KGNvbnN0IGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRv
KGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFRvKEltcGxpY2l0Q2FzdF88
Y29uc3QgY2hhcio+KHMpLCBvcyk7Cit9CisKKy8vIHNpZ25lZC91bnNpZ25lZCBjaGFyIGlzIG9m
dGVuIHVzZWQgZm9yIHJlcHJlc2VudGluZyBiaW5hcnkgZGF0YSwgc28KKy8vIHdlIHByaW50IHBv
aW50ZXJzIHRvIGl0IGFzIHZvaWQqIHRvIGJlIHNhZmUuCitpbmxpbmUgdm9pZCBQcmludFRvKGNv
bnN0IHNpZ25lZCBjaGFyKiBzLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUbyhJbXBs
aWNpdENhc3RfPGNvbnN0IHZvaWQqPihzKSwgb3MpOworfQoraW5saW5lIHZvaWQgUHJpbnRUbyhz
aWduZWQgY2hhciogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGljaXRD
YXN0Xzxjb25zdCB2b2lkKj4ocyksIG9zKTsKK30KK2lubGluZSB2b2lkIFByaW50VG8oY29uc3Qg
dW5zaWduZWQgY2hhciogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGlj
aXRDYXN0Xzxjb25zdCB2b2lkKj4ocyksIG9zKTsKK30KK2lubGluZSB2b2lkIFByaW50VG8odW5z
aWduZWQgY2hhciogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VG8oSW1wbGljaXRD
YXN0Xzxjb25zdCB2b2lkKj4ocyksIG9zKTsKK30KKworLy8gTVNWQyBjYW4gYmUgY29uZmlndXJl
ZCB0byBkZWZpbmUgd2NoYXJfdCBhcyBhIHR5cGVkZWYgb2YgdW5zaWduZWQKKy8vIHNob3J0LiAg
SXQgZGVmaW5lcyBfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCB3aGVuIHdjaGFyX3QgaXMgYSBuYXRp
dmUKKy8vIHR5cGUuICBXaGVuIHdjaGFyX3QgaXMgYSB0eXBlZGVmLCBkZWZpbmluZyBhbiBvdmVy
bG9hZCBmb3IgY29uc3QKKy8vIHdjaGFyX3QqIHdvdWxkIGNhdXNlIHVuc2lnbmVkIHNob3J0KiBi
ZSBwcmludGVkIGFzIGEgd2lkZSBzdHJpbmcsCisvLyBwb3NzaWJseSBjYXVzaW5nIGludmFsaWQg
bWVtb3J5IGFjY2Vzc2VzLgorI2lmICFkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9OQVRJ
VkVfV0NIQVJfVF9ERUZJTkVEKQorLy8gT3ZlcmxvYWRzIGZvciB3aWRlIEMgc3RyaW5ncworR1RF
U1RfQVBJXyB2b2lkIFByaW50VG8oY29uc3Qgd2NoYXJfdCogcywgOjpzdGQ6Om9zdHJlYW0qIG9z
KTsKK2lubGluZSB2b2lkIFByaW50VG8od2NoYXJfdCogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7
CisgIFByaW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB3Y2hhcl90Kj4ocyksIG9zKTsKK30KKyNl
bmRpZgorCisvLyBPdmVybG9hZCBmb3IgQyBhcnJheXMuICBNdWx0aS1kaW1lbnNpb25hbCBhcnJh
eXMgYXJlIHByaW50ZWQKKy8vIHByb3Blcmx5LgorCisvLyBQcmludHMgdGhlIGdpdmVuIG51bWJl
ciBvZiBlbGVtZW50cyBpbiBhbiBhcnJheSwgd2l0aG91dCBwcmludGluZworLy8gdGhlIGN1cmx5
IGJyYWNlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBQcmludFJhd0FycmF5VG8oY29u
c3QgVCBhW10sIHNpemVfdCBjb3VudCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFVuaXZlcnNh
bFByaW50KGFbMF0sIG9zKTsKKyAgZm9yIChzaXplX3QgaSA9IDE7IGkgIT0gY291bnQ7IGkrKykg
eworICAgICpvcyA8PCAiLCAiOworICAgIFVuaXZlcnNhbFByaW50KGFbaV0sIG9zKTsKKyAgfQor
fQorCisvLyBPdmVybG9hZHMgZm9yIDo6c3RyaW5nIGFuZCA6OnN0ZDo6c3RyaW5nLgorI2lmIEdU
RVNUX0hBU19HTE9CQUxfU1RSSU5HCitHVEVTVF9BUElfIHZvaWQgUHJpbnRTdHJpbmdUbyhjb25z
dCA6OnN0cmluZyZzLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhj
b25zdCA6OnN0cmluZyYgcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50U3RyaW5nVG8o
cywgb3MpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCitHVEVTVF9B
UElfIHZvaWQgUHJpbnRTdHJpbmdUbyhjb25zdCA6OnN0ZDo6c3RyaW5nJnMsIDo6c3RkOjpvc3Ry
ZWFtKiBvcyk7CitpbmxpbmUgdm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHMsIDo6
c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFN0cmluZ1RvKHMsIG9zKTsKK30KKworLy8gT3Zl
cmxvYWRzIGZvciA6OndzdHJpbmcgYW5kIDo6c3RkOjp3c3RyaW5nLgorI2lmIEdURVNUX0hBU19H
TE9CQUxfV1NUUklORworR1RFU1RfQVBJXyB2b2lkIFByaW50V2lkZVN0cmluZ1RvKGNvbnN0IDo6
d3N0cmluZyZzLCA6OnN0ZDo6b3N0cmVhbSogb3MpOworaW5saW5lIHZvaWQgUHJpbnRUbyhjb25z
dCA6OndzdHJpbmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmludFdpZGVTdHJpbmdU
byhzLCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORworCisjaWYg
R1RFU1RfSEFTX1NURF9XU1RSSU5HCitHVEVTVF9BUElfIHZvaWQgUHJpbnRXaWRlU3RyaW5nVG8o
Y29uc3QgOjpzdGQ6OndzdHJpbmcmcywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKK2lubGluZSB2b2lk
IFByaW50VG8oY29uc3QgOjpzdGQ6OndzdHJpbmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgewor
ICBQcmludFdpZGVTdHJpbmdUbyhzLCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERf
V1NUUklORworCisjaWYgR1RFU1RfSEFTX0FCU0wKKy8vIE92ZXJsb2FkIGZvciBhYnNsOjpzdHJp
bmdfdmlldy4KK2lubGluZSB2b2lkIFByaW50VG8oYWJzbDo6c3RyaW5nX3ZpZXcgc3AsIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgeworICBQcmludFRvKDo6c3RkOjpzdHJpbmcoc3ApLCBvcyk7Cit9Cisj
ZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCisKKyNpZiBHVEVTVF9MQU5HX0NYWDExCitpbmxpbmUg
dm9pZCBQcmludFRvKHN0ZDo6bnVsbHB0cl90LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsgKm9zIDw8
ICIobnVsbHB0cikiOyB9CisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKworI2lmIEdURVNU
X0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8KKy8vIEhlbHBlciBmdW5jdGlv
biBmb3IgcHJpbnRpbmcgYSB0dXBsZS4gIFQgbXVzdCBiZSBpbnN0YW50aWF0ZWQgd2l0aAorLy8g
YSB0dXBsZSB0eXBlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFByaW50VHVwbGVUbyhj
b25zdCBUJiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfVFIx
X1RVUExFIHx8IEdURVNUX0hBU19TVERfVFVQTEVfCisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExF
CisvLyBPdmVybG9hZCBmb3IgOjpzdGQ6OnRyMTo6dHVwbGUuICBOZWVkZWQgZm9yIHByaW50aW5n
IGZ1bmN0aW9uIGFyZ3VtZW50cywKKy8vIHdoaWNoIGFyZSBwYWNrZWQgYXMgdHVwbGVzLgorCisv
LyBPdmVybG9hZGVkIFByaW50VG8oKSBmb3IgdHVwbGVzIG9mIHZhcmlvdXMgYXJpdGllcy4gIFdl
IHN1cHBvcnQKKy8vIHR1cGxlcyBvZiB1cC10byAxMCBmaWVsZHMuICBUaGUgZm9sbG93aW5nIGlt
cGxlbWVudGF0aW9uIHdvcmtzCisvLyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdHIxOjp0dXBsZSBp
cyBpbXBsZW1lbnRlZCB1c2luZyB0aGUKKy8vIG5vbi1zdGFuZGFyZCB2YXJpYWRpYyB0ZW1wbGF0
ZSBmZWF0dXJlIG9yIG5vdC4KKworaW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIx
Ojp0dXBsZTw+JiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9z
KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3Rk
Ojp0cjE6OnR1cGxlPFQxPiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVU
byh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lk
IFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyPiYgdCwgOjpzdGQ6Om9zdHJl
YW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3Rk
Ojp0cjE6OnR1cGxlPFQxLCBUMiwgVDM+JiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJp
bnRUdXBsZVRvKHQsIG9zKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Pgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0
cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFBy
aW50VHVwbGVUbyh0LCBvcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+Cit2b2lkIFByaW50VG8o
Y29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiYgdCwKKyAgICAgICAg
ICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0eXBlbmFtZSBUNj4KK3ZvaWQgUHJpbnRUbyhj
b25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiYgdCwKKyAgICAg
ICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVu
YW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+
Cit2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDc+JiB0LAorICAgICAgICAgICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBQcmlu
dFR1cGxlVG8odCwgb3MpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAorICAgICAgICAgIHR5cGVu
YW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+Cit2b2lkIFByaW50VG8oY29uc3QgOjpz
dGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiYgdCwKKyAgICAg
ICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVu
YW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcs
IHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOT4KK3ZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIx
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiYgdCwKKyAgICAgICAg
ICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5
cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgordm9pZCBQcmludFRvKAorICAg
IGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksIFQxMD4mIHQsCisgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50VHVwbGVUbyh0
LCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUKKworI2lmIEdURVNUX0hB
U19TVERfVFVQTEVfCit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHlwZXM+Cit2b2lkIFByaW50VG8o
Y29uc3QgOjpzdGQ6OnR1cGxlPFR5cGVzLi4uPiYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Cisg
IFByaW50VHVwbGVUbyh0LCBvcyk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERfVFVQTEVf
CisKKy8vIE92ZXJsb2FkIGZvciBzdGQ6OnBhaXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyPgordm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjpwYWlyPFQxLCBUMj4mIHZhbHVl
LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8ICcoJzsKKyAgLy8gV2UgY2Fubm90IHVz
ZSBVbml2ZXJzYWxQcmludCh2YWx1ZS5maXJzdCwgb3MpIGhlcmUsIGFzIFQxIG1heSBiZQorICAv
LyBhIHJlZmVyZW5jZSB0eXBlLiAgVGhlIHNhbWUgZm9yIHByaW50aW5nIHZhbHVlLnNlY29uZC4K
KyAgVW5pdmVyc2FsUHJpbnRlcjxUMT46OlByaW50KHZhbHVlLmZpcnN0LCBvcyk7CisgICpvcyA8
PCAiLCAiOworICBVbml2ZXJzYWxQcmludGVyPFQyPjo6UHJpbnQodmFsdWUuc2Vjb25kLCBvcyk7
CisgICpvcyA8PCAnKSc7Cit9CisKKy8vIEltcGxlbWVudHMgcHJpbnRpbmcgYSBub24tcmVmZXJl
bmNlIHR5cGUgVCBieSBsZXR0aW5nIHRoZSBjb21waWxlcgorLy8gcGljayB0aGUgcmlnaHQgb3Zl
cmxvYWQgb2YgUHJpbnRUbygpIGZvciBULgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBV
bml2ZXJzYWxQcmludGVyIHsKKyBwdWJsaWM6CisgIC8vIE1TVkMgd2FybnMgYWJvdXQgYWRkaW5n
IGNvbnN0IHRvIGEgZnVuY3Rpb24gdHlwZSwgc28gd2Ugd2FudCB0bworICAvLyBkaXNhYmxlIHRo
ZSB3YXJuaW5nLgorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MTgwKQorCisg
IC8vIE5vdGU6IHdlIGRlbGliZXJhdGVseSBkb24ndCBjYWxsIHRoaXMgUHJpbnRUbygpLCBhcyB0
aGF0IG5hbWUKKyAgLy8gY29uZmxpY3RzIHdpdGggOjp0ZXN0aW5nOjppbnRlcm5hbDo6UHJpbnRU
byBpbiB0aGUgYm9keSBvZiB0aGUKKyAgLy8gZnVuY3Rpb24uCisgIHN0YXRpYyB2b2lkIFByaW50
KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICAvLyBCeSBkZWZhdWx0
LCA6OnRlc3Rpbmc6OmludGVybmFsOjpQcmludFRvKCkgaXMgdXNlZCBmb3IgcHJpbnRpbmcKKyAg
ICAvLyB0aGUgdmFsdWUuCisgICAgLy8KKyAgICAvLyBUaGFua3MgdG8gS29lbmlnIGxvb2stdXAs
IGlmIFQgaXMgYSBjbGFzcyBhbmQgaGFzIGl0cyBvd24KKyAgICAvLyBQcmludFRvKCkgZnVuY3Rp
b24gZGVmaW5lZCBpbiBpdHMgbmFtZXNwYWNlLCB0aGF0IGZ1bmN0aW9uIHdpbGwKKyAgICAvLyBi
ZSB2aXNpYmxlIGhlcmUuICBTaW5jZSBpdCBpcyBtb3JlIHNwZWNpZmljIHRoYW4gdGhlIGdlbmVy
aWMgb25lcworICAgIC8vIGluIDo6dGVzdGluZzo6aW50ZXJuYWwsIGl0IHdpbGwgYmUgcGlja2Vk
IGJ5IHRoZSBjb21waWxlciBpbiB0aGUKKyAgICAvLyBmb2xsb3dpbmcgc3RhdGVtZW50IC0gZXhh
Y3RseSB3aGF0IHdlIHdhbnQuCisgICAgUHJpbnRUbyh2YWx1ZSwgb3MpOworICB9CisKKyAgR1RF
U1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCit9OworCisjaWYgR1RFU1RfSEFTX0FCU0wK
KworLy8gUHJpbnRlciBmb3IgYWJzbDo6b3B0aW9uYWwKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitjbGFzcyBVbml2ZXJzYWxQcmludGVyPDo6YWJzbDo6b3B0aW9uYWw8VD4+IHsKKyBwdWJsaWM6
CisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IDo6YWJzbDo6b3B0aW9uYWw8VD4mIHZhbHVlLCA6
OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICAqb3MgPDwgJygnOworICAgIGlmICghdmFsdWUpIHsK
KyAgICAgICpvcyA8PCAibnVsbG9wdCI7CisgICAgfSBlbHNlIHsKKyAgICAgIFVuaXZlcnNhbFBy
aW50KCp2YWx1ZSwgb3MpOworICAgIH0KKyAgICAqb3MgPDwgJyknOworICB9Cit9OworCisvLyBQ
cmludGVyIGZvciBhYnNsOjp2YXJpYW50CisKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBUPgorY2xh
c3MgVW5pdmVyc2FsUHJpbnRlcjw6OmFic2w6OnZhcmlhbnQ8VC4uLj4+IHsKKyBwdWJsaWM6Cisg
IHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IDo6YWJzbDo6dmFyaWFudDxULi4uPiYgdmFsdWUsIDo6
c3RkOjpvc3RyZWFtKiBvcykgeworICAgICpvcyA8PCAnKCc7CisgICAgYWJzbDo6dmlzaXQoVmlz
aXRvcntvc30sIHZhbHVlKTsKKyAgICAqb3MgPDwgJyknOworICB9CisKKyBwcml2YXRlOgorICBz
dHJ1Y3QgVmlzaXRvciB7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgICAgdm9pZCBvcGVy
YXRvcigpKGNvbnN0IFUmIHUpIGNvbnN0IHsKKyAgICAgICpvcyA8PCAiJyIgPDwgR2V0VHlwZU5h
bWU8VT4oKSA8PCAiJyB3aXRoIHZhbHVlICI7CisgICAgICBVbml2ZXJzYWxQcmludCh1LCBvcyk7
CisgICAgfQorICAgIDo6c3RkOjpvc3RyZWFtKiBvczsKKyAgfTsKK307CisKKyNlbmRpZiAgLy8g
R1RFU1RfSEFTX0FCU0wKKworLy8gVW5pdmVyc2FsUHJpbnRBcnJheShiZWdpbiwgbGVuLCBvcykg
cHJpbnRzIGFuIGFycmF5IG9mICdsZW4nCisvLyBlbGVtZW50cywgc3RhcnRpbmcgYXQgYWRkcmVz
cyAnYmVnaW4nLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFByaW50QXJy
YXkoY29uc3QgVCogYmVnaW4sIHNpemVfdCBsZW4sIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICBp
ZiAobGVuID09IDApIHsKKyAgICAqb3MgPDwgInt9IjsKKyAgfSBlbHNlIHsKKyAgICAqb3MgPDwg
InsgIjsKKyAgICBjb25zdCBzaXplX3Qga1RocmVzaG9sZCA9IDE4OworICAgIGNvbnN0IHNpemVf
dCBrQ2h1bmtTaXplID0gODsKKyAgICAvLyBJZiB0aGUgYXJyYXkgaGFzIG1vcmUgdGhhbiBrVGhy
ZXNob2xkIGVsZW1lbnRzLCB3ZSdsbCBoYXZlIHRvCisgICAgLy8gb21pdCBzb21lIGRldGFpbHMg
YnkgcHJpbnRpbmcgb25seSB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0CisgICAgLy8ga0NodW5rU2l6
ZSBlbGVtZW50cy4KKyAgICAvLyBGSVhNRTogbGV0IHRoZSB1c2VyIGNvbnRyb2wgdGhlIHRocmVz
aG9sZCB1c2luZyBhIGZsYWcuCisgICAgaWYgKGxlbiA8PSBrVGhyZXNob2xkKSB7CisgICAgICBQ
cmludFJhd0FycmF5VG8oYmVnaW4sIGxlbiwgb3MpOworICAgIH0gZWxzZSB7CisgICAgICBQcmlu
dFJhd0FycmF5VG8oYmVnaW4sIGtDaHVua1NpemUsIG9zKTsKKyAgICAgICpvcyA8PCAiLCAuLi4s
ICI7CisgICAgICBQcmludFJhd0FycmF5VG8oYmVnaW4gKyBsZW4gLSBrQ2h1bmtTaXplLCBrQ2h1
bmtTaXplLCBvcyk7CisgICAgfQorICAgICpvcyA8PCAiIH0iOworICB9Cit9CisvLyBUaGlzIG92
ZXJsb2FkIHByaW50cyBhIChjb25zdCkgY2hhciBhcnJheSBjb21wYWN0bHkuCitHVEVTVF9BUElf
IHZvaWQgVW5pdmVyc2FsUHJpbnRBcnJheSgKKyAgICBjb25zdCBjaGFyKiBiZWdpbiwgc2l6ZV90
IGxlbiwgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKKworLy8gVGhpcyBvdmVybG9hZCBwcmludHMgYSAo
Y29uc3QpIHdjaGFyX3QgYXJyYXkgY29tcGFjdGx5LgorR1RFU1RfQVBJXyB2b2lkIFVuaXZlcnNh
bFByaW50QXJyYXkoCisgICAgY29uc3Qgd2NoYXJfdCogYmVnaW4sIHNpemVfdCBsZW4sIDo6c3Rk
Ojpvc3RyZWFtKiBvcyk7CisKKy8vIEltcGxlbWVudHMgcHJpbnRpbmcgYW4gYXJyYXkgdHlwZSBU
W05dLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgorY2xhc3MgVW5pdmVyc2FsUHJp
bnRlcjxUW05dPiB7CisgcHVibGljOgorICAvLyBQcmludHMgdGhlIGdpdmVuIGFycmF5LCBvbWl0
dGluZyBzb21lIGVsZW1lbnRzIHdoZW4gdGhlcmUgYXJlIHRvbworICAvLyBtYW55LgorICBzdGF0
aWMgdm9pZCBQcmludChjb25zdCBUICgmYSlbTl0sIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAg
IFVuaXZlcnNhbFByaW50QXJyYXkoYSwgTiwgb3MpOworICB9Cit9OworCisvLyBJbXBsZW1lbnRz
IHByaW50aW5nIGEgcmVmZXJlbmNlIHR5cGUgVCYuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIFVuaXZlcnNhbFByaW50ZXI8VCY+IHsKKyBwdWJsaWM6CisgIC8vIE1TVkMgd2FybnMgYWJv
dXQgYWRkaW5nIGNvbnN0IHRvIGEgZnVuY3Rpb24gdHlwZSwgc28gd2Ugd2FudCB0bworICAvLyBk
aXNhYmxlIHRoZSB3YXJuaW5nLgorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0
MTgwKQorCisgIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKKyAgICAvLyBQcmludHMgdGhlIGFkZHJlc3Mgb2YgdGhlIHZhbHVlLiAgV2UgdXNl
IHJlaW50ZXJwcmV0X2Nhc3QgaGVyZQorICAgIC8vIGFzIHN0YXRpY19jYXN0IGRvZXNuJ3QgY29t
cGlsZSB3aGVuIFQgaXMgYSBmdW5jdGlvbiB0eXBlLgorICAgICpvcyA8PCAiQCIgPDwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB2b2lkKj4oJnZhbHVlKSA8PCAiICI7CisKKyAgICAvLyBUaGVuIHBy
aW50cyB0aGUgdmFsdWUgaXRzZWxmLgorICAgIFVuaXZlcnNhbFByaW50KHZhbHVlLCBvcyk7Cisg
IH0KKworICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKK307CisKKy8vIFByaW50
cyBhIHZhbHVlIHRlcnNlbHk6IGZvciBhIHJlZmVyZW5jZSB0eXBlLCB0aGUgcmVmZXJlbmNlZCB2
YWx1ZQorLy8gKGJ1dCBub3QgdGhlIGFkZHJlc3MpIGlzIHByaW50ZWQ7IGZvciBhIChjb25zdCkg
Y2hhciBwb2ludGVyLCB0aGUKKy8vIE5VTC10ZXJtaW5hdGVkIHN0cmluZyAoYnV0IG5vdCB0aGUg
cG9pbnRlcikgaXMgcHJpbnRlZC4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVbml2
ZXJzYWxUZXJzZVByaW50ZXIgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3Qg
VCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIFVuaXZlcnNhbFByaW50KHZhbHVl
LCBvcyk7CisgIH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFVuaXZlcnNhbFRl
cnNlUHJpbnRlcjxUJj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCYg
dmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAgIFVuaXZlcnNhbFByaW50KHZhbHVlLCBv
cyk7CisgIH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitjbGFzcyBVbml2
ZXJzYWxUZXJzZVByaW50ZXI8VFtOXT4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQo
Y29uc3QgVCAoJnZhbHVlKVtOXSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgVW5pdmVyc2Fs
UHJpbnRlcjxUW05dPjo6UHJpbnQodmFsdWUsIG9zKTsKKyAgfQorfTsKK3RlbXBsYXRlIDw+Citj
bGFzcyBVbml2ZXJzYWxUZXJzZVByaW50ZXI8Y29uc3QgY2hhcio+IHsKKyBwdWJsaWM6CisgIHN0
YXRpYyB2b2lkIFByaW50KGNvbnN0IGNoYXIqIHN0ciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Cisg
ICAgaWYgKHN0ciA9PSBOVUxMKSB7CisgICAgICAqb3MgPDwgIk5VTEwiOworICAgIH0gZWxzZSB7
CisgICAgICBVbml2ZXJzYWxQcmludChzdGQ6OnN0cmluZyhzdHIpLCBvcyk7CisgICAgfQorICB9
Cit9OwordGVtcGxhdGUgPD4KK2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjaGFyKj4gewor
IHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQoY2hhciogc3RyLCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgICBVbml2ZXJzYWxUZXJzZVByaW50ZXI8Y29uc3QgY2hhcio+OjpQcmludChzdHIs
IG9zKTsKKyAgfQorfTsKKworI2lmIEdURVNUX0hBU19TVERfV1NUUklORwordGVtcGxhdGUgPD4K
K2NsYXNzIFVuaXZlcnNhbFRlcnNlUHJpbnRlcjxjb25zdCB3Y2hhcl90Kj4geworIHB1YmxpYzoK
KyAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3Qgd2NoYXJfdCogc3RyLCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKKyAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICpvcyA8PCAiTlVMTCI7CisgICAg
fSBlbHNlIHsKKyAgICAgIFVuaXZlcnNhbFByaW50KDo6c3RkOjp3c3RyaW5nKHN0ciksIG9zKTsK
KyAgICB9CisgIH0KK307CisjZW5kaWYKKwordGVtcGxhdGUgPD4KK2NsYXNzIFVuaXZlcnNhbFRl
cnNlUHJpbnRlcjx3Y2hhcl90Kj4geworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgUHJpbnQod2No
YXJfdCogc3RyLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgICBVbml2ZXJzYWxUZXJzZVByaW50
ZXI8Y29uc3Qgd2NoYXJfdCo+OjpQcmludChzdHIsIG9zKTsKKyAgfQorfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Cit2b2lkIFVuaXZlcnNhbFRlcnNlUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6
c3RkOjpvc3RyZWFtKiBvcykgeworICBVbml2ZXJzYWxUZXJzZVByaW50ZXI8VD46OlByaW50KHZh
bHVlLCBvcyk7Cit9CisKKy8vIFByaW50cyBhIHZhbHVlIHVzaW5nIHRoZSB0eXBlIGluZmVycmVk
IGJ5IHRoZSBjb21waWxlci4gIFRoZQorLy8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIFVu
aXZlcnNhbFRlcnNlUHJpbnQoKSBpcyB0aGF0IGZvciBhCisvLyAoY29uc3QpIGNoYXIgcG9pbnRl
ciwgdGhpcyBwcmludHMgYm90aCB0aGUgcG9pbnRlciBhbmQgdGhlCisvLyBOVUwtdGVybWluYXRl
ZCBzdHJpbmcuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVW5pdmVyc2FsUHJpbnQoY29u
c3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAvLyBBIHdvcmthcm9uZCBmb3Ig
dGhlIGJ1ZyBpbiBWQysrIDcuMSB0aGF0IHByZXZlbnRzIHVzIGZyb20gaW5zdGFudGlhdGluZwor
ICAvLyBVbml2ZXJzYWxQcmludGVyIHdpdGggVCBkaXJlY3RseS4KKyAgdHlwZWRlZiBUIFQxOwor
ICBVbml2ZXJzYWxQcmludGVyPFQxPjo6UHJpbnQodmFsdWUsIG9zKTsKK30KKwordHlwZWRlZiA6
OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6c3RyaW5nPiBTdHJpbmdzOworCisvLyBUdXBsZVBvbGljeTxU
dXBsZVQ+IG11c3QgcHJvdmlkZToKKy8vIC0gdHVwbGVfc2l6ZQorLy8gICAgIHNpemUgb2YgdHVw
bGUgVHVwbGVULgorLy8gLSBnZXQ8c2l6ZV90IEk+KGNvbnN0IFR1cGxlVCYgdCkKKy8vICAgICBz
dGF0aWMgZnVuY3Rpb24gZXh0cmFjdGluZyBlbGVtZW50IEkgb2YgdHVwbGUgVHVwbGVULgorLy8g
LSB0dXBsZV9lbGVtZW50PHNpemVfdCBJPjo6dHlwZQorLy8gICAgIHR5cGUgb2YgZWxlbWVudCBJ
IG9mIHR1cGxlIFR1cGxlVC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZVQ+CitzdHJ1Y3QgVHVw
bGVQb2xpY3k7CisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VHVwbGVUPgorc3RydWN0IFR1cGxlUG9saWN5IHsKKyAgdHlwZWRlZiBUdXBsZVQgVHVwbGU7Cisg
IHN0YXRpYyBjb25zdCBzaXplX3QgdHVwbGVfc2l6ZSA9IDo6c3RkOjp0cjE6OnR1cGxlX3NpemU8
VHVwbGU+Ojp2YWx1ZTsKKworICB0ZW1wbGF0ZSA8c2l6ZV90IEk+CisgIHN0cnVjdCB0dXBsZV9l
bGVtZW50IDogOjpzdGQ6OnRyMTo6dHVwbGVfZWxlbWVudDxzdGF0aWNfY2FzdDxpbnQ+KEkpLCBU
dXBsZT4geworICB9OworCisgIHRlbXBsYXRlIDxzaXplX3QgST4KKyAgc3RhdGljIHR5cGVuYW1l
IEFkZFJlZmVyZW5jZTxjb25zdCB0eXBlbmFtZSA6OnN0ZDo6dHIxOjp0dXBsZV9lbGVtZW50PAor
ICAgICAgc3RhdGljX2Nhc3Q8aW50PihJKSwgVHVwbGU+Ojp0eXBlPjo6dHlwZQorICBnZXQoY29u
c3QgVHVwbGUmIHR1cGxlKSB7CisgICAgcmV0dXJuIDo6c3RkOjp0cjE6OmdldDxJPih0dXBsZSk7
CisgIH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGVUPgorY29uc3Qgc2l6ZV90IFR1cGxl
UG9saWN5PFR1cGxlVD46OnR1cGxlX3NpemU7CisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQ
TEUKKworI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHlw
ZXM+CitzdHJ1Y3QgVHVwbGVQb2xpY3k8IDo6c3RkOjp0dXBsZTxUeXBlcy4uLj4gPiB7CisgIHR5
cGVkZWYgOjpzdGQ6OnR1cGxlPFR5cGVzLi4uPiBUdXBsZTsKKyAgc3RhdGljIGNvbnN0IHNpemVf
dCB0dXBsZV9zaXplID0gOjpzdGQ6OnR1cGxlX3NpemU8VHVwbGU+Ojp2YWx1ZTsKKworICB0ZW1w
bGF0ZSA8c2l6ZV90IEk+CisgIHN0cnVjdCB0dXBsZV9lbGVtZW50IDogOjpzdGQ6OnR1cGxlX2Vs
ZW1lbnQ8SSwgVHVwbGU+IHt9OworCisgIHRlbXBsYXRlIDxzaXplX3QgST4KKyAgc3RhdGljIGNv
bnN0IHR5cGVuYW1lIDo6c3RkOjp0dXBsZV9lbGVtZW50PEksIFR1cGxlPjo6dHlwZSYgZ2V0KAor
ICAgICAgY29uc3QgVHVwbGUmIHR1cGxlKSB7CisgICAgcmV0dXJuIDo6c3RkOjpnZXQ8ST4odHVw
bGUpOworICB9Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIFR5cGVzPgorY29uc3Qgc2l6ZV90
IFR1cGxlUG9saWN5PCA6OnN0ZDo6dHVwbGU8VHlwZXMuLi4+ID46OnR1cGxlX3NpemU7CisjZW5k
aWYgIC8vIEdURVNUX0hBU19TVERfVFVQTEVfCisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFIHx8
IEdURVNUX0hBU19TVERfVFVQTEVfCisvLyBUaGlzIGhlbHBlciB0ZW1wbGF0ZSBhbGxvd3MgUHJp
bnRUbygpIGZvciB0dXBsZXMgYW5kCisvLyBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNU
b1N0cmluZ3MoKSB0byBiZSBkZWZpbmVkIGJ5CisvLyBpbmR1Y3Rpb24gb24gdGhlIG51bWJlciBv
ZiB0dXBsZSBmaWVsZHMuICBUaGUgaWRlYSBpcyB0aGF0CisvLyBUdXBsZVByZWZpeFByaW50ZXI8
Tj46OlByaW50UHJlZml4VG8odCwgb3MpIHByaW50cyB0aGUgZmlyc3QgTgorLy8gZmllbGRzIGlu
IHR1cGxlIHQsIGFuZCBjYW4gYmUgZGVmaW5lZCBpbiB0ZXJtcyBvZgorLy8gVHVwbGVQcmVmaXhQ
cmludGVyPE4gLSAxPi4KKy8vCisvLyBUaGUgaW5kdWN0aXZlIGNhc2UuCit0ZW1wbGF0ZSA8c2l6
ZV90IE4+CitzdHJ1Y3QgVHVwbGVQcmVmaXhQcmludGVyIHsKKyAgLy8gUHJpbnRzIHRoZSBmaXJz
dCBOIGZpZWxkcyBvZiBhIHR1cGxlLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+CisgIHN0
YXRpYyB2b2lkIFByaW50UHJlZml4VG8oY29uc3QgVHVwbGUmIHQsIDo6c3RkOjpvc3RyZWFtKiBv
cykgeworICAgIFR1cGxlUHJlZml4UHJpbnRlcjxOIC0gMT46OlByaW50UHJlZml4VG8odCwgb3Mp
OworICAgIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUFVTSF8oKQorICAgIGlmIChOID4g
MSkgeworICAgIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUE9QXygpCisgICAgICAqb3Mg
PDwgIiwgIjsKKyAgICB9CisgICAgVW5pdmVyc2FsUHJpbnRlcjwKKyAgICAgICAgdHlwZW5hbWUg
VHVwbGVQb2xpY3k8VHVwbGU+Ojp0ZW1wbGF0ZSB0dXBsZV9lbGVtZW50PE4gLSAxPjo6dHlwZT4K
KyAgICAgICAgOjpQcmludChUdXBsZVBvbGljeTxUdXBsZT46OnRlbXBsYXRlIGdldDxOIC0gMT4o
dCksIG9zKTsKKyAgfQorCisgIC8vIFRlcnNlbHkgcHJpbnRzIHRoZSBmaXJzdCBOIGZpZWxkcyBv
ZiBhIHR1cGxlIHRvIGEgc3RyaW5nIHZlY3RvciwKKyAgLy8gb25lIGVsZW1lbnQgZm9yIGVhY2gg
ZmllbGQuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4KKyAgc3RhdGljIHZvaWQgVGVyc2VQ
cmludFByZWZpeFRvU3RyaW5ncyhjb25zdCBUdXBsZSYgdCwgU3RyaW5ncyogc3RyaW5ncykgewor
ICAgIFR1cGxlUHJlZml4UHJpbnRlcjxOIC0gMT46OlRlcnNlUHJpbnRQcmVmaXhUb1N0cmluZ3Mo
dCwgc3RyaW5ncyk7CisgICAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgICBVbml2ZXJzYWxU
ZXJzZVByaW50KFR1cGxlUG9saWN5PFR1cGxlPjo6dGVtcGxhdGUgZ2V0PE4gLSAxPih0KSwgJnNz
KTsKKyAgICBzdHJpbmdzLT5wdXNoX2JhY2soc3Muc3RyKCkpOworICB9Cit9OworCisvLyBCYXNl
IGNhc2UuCit0ZW1wbGF0ZSA8Pgorc3RydWN0IFR1cGxlUHJlZml4UHJpbnRlcjwwPiB7CisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4KKyAgc3RhdGljIHZvaWQgUHJpbnRQcmVmaXhUbyhjb25z
dCBUdXBsZSYsIDo6c3RkOjpvc3RyZWFtKikge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVw
bGU+CisgIHN0YXRpYyB2b2lkIFRlcnNlUHJpbnRQcmVmaXhUb1N0cmluZ3MoY29uc3QgVHVwbGUm
LCBTdHJpbmdzKikge30KK307CisKKy8vIEhlbHBlciBmdW5jdGlvbiBmb3IgcHJpbnRpbmcgYSB0
dXBsZS4KKy8vIFR1cGxlIG11c3QgYmUgZWl0aGVyIHN0ZDo6dHIxOjp0dXBsZSBvciBzdGQ6OnR1
cGxlIHR5cGUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+Cit2b2lkIFByaW50VHVwbGVUbyhj
b25zdCBUdXBsZSYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCAiKCI7CisgIFR1
cGxlUHJlZml4UHJpbnRlcjxUdXBsZVBvbGljeTxUdXBsZT46OnR1cGxlX3NpemU+OjpQcmludFBy
ZWZpeFRvKHQsIG9zKTsKKyAgKm9zIDw8ICIpIjsKK30KKworLy8gUHJpbnRzIHRoZSBmaWVsZHMg
b2YgYSB0dXBsZSB0ZXJzZWx5IHRvIGEgc3RyaW5nIHZlY3Rvciwgb25lCisvLyBlbGVtZW50IGZv
ciBlYWNoIGZpZWxkLiAgU2VlIHRoZSBjb21tZW50IGJlZm9yZQorLy8gVW5pdmVyc2FsVGVyc2VQ
cmludCgpIGZvciBob3cgd2UgZGVmaW5lICJ0ZXJzZWx5Ii4KK3RlbXBsYXRlIDx0eXBlbmFtZSBU
dXBsZT4KK1N0cmluZ3MgVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKGNv
bnN0IFR1cGxlJiB2YWx1ZSkgeworICBTdHJpbmdzIHJlc3VsdDsKKyAgVHVwbGVQcmVmaXhQcmlu
dGVyPFR1cGxlUG9saWN5PFR1cGxlPjo6dHVwbGVfc2l6ZT46OgorICAgICAgVGVyc2VQcmludFBy
ZWZpeFRvU3RyaW5ncyh2YWx1ZSwgJnJlc3VsdCk7CisgIHJldHVybiByZXN1bHQ7Cit9CisjZW5k
aWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8KKworfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCisKKyNpZiBHVEVTVF9IQVNfQUJTTAorbmFtZXNwYWNlIGlu
dGVybmFsMiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVHlwZVdpdGhvdXRGb3JtYXR0
ZXI8VCwga0NvbnZlcnRpYmxlVG9TdHJpbmdWaWV3Pjo6UHJpbnRWYWx1ZSgKKyAgICBjb25zdCBU
JiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIGludGVybmFsOjpQcmludFRvKGFic2w6
OnN0cmluZ192aWV3KHZhbHVlKSwgb3MpOworfQorfSAgLy8gbmFtZXNwYWNlIGludGVybmFsMgor
I2VuZGlmCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorOjpzdGQ6OnN0cmluZyBQcmludFRvU3Ry
aW5nKGNvbnN0IFQmIHZhbHVlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIGludGVy
bmFsOjpVbml2ZXJzYWxUZXJzZVByaW50ZXI8VD46OlByaW50KHZhbHVlLCAmc3MpOworICByZXR1
cm4gc3Muc3RyKCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKy8vIEluY2x1ZGUg
YW55IGN1c3RvbSBwcmludGVyIGFkZGVkIGJ5IHRoZSBsb2NhbCBpbnN0YWxsYXRpb24uCisvLyBX
ZSBtdXN0IGluY2x1ZGUgdGhpcyBoZWFkZXIgYXQgdGhlIGVuZCB0byBtYWtlIHN1cmUgaXQgY2Fu
IHVzZSB0aGUKKy8vIGRlY2xhcmF0aW9ucyBmcm9tIHRoaXMgZmlsZS4KKyNpbmNsdWRlICJndGVz
dC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcHJpbnRlcnMuaCIKKworI2VuZGlmICAvLyBHVEVTVF9J
TkNMVURFX0dURVNUX0dURVNUX1BSSU5URVJTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXNwaS5oIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1zcGkuaAppbmRleCBjNDFkYTQ4NDQ3NjAzZTk2NWZi
NzcyYWJjYTJmMTQ1ZWU4MmE2MDZmLi4xZTg5ODM5MzhlYTI3OTJjNTI2OTBlYWQyOWIwMGFiNThj
ZGFhZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2d0ZXN0LXNwaS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
Z3Rlc3Qtc3BpLmgKQEAgLTI2LDE2ICsyNiwyMCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbikKKwogLy8KIC8vIFV0aWxpdGllcyBmb3IgdGVzdGluZyBHb29nbGUgVGVzdCBp
dHNlbGYgYW5kIGNvZGUgdGhhdCB1c2VzIEdvb2dsZSBUZXN0CiAvLyAoZS5nLiBmcmFtZXdvcmtz
IGJ1aWx0IG9uIHRvcCBvZiBHb29nbGUgVGVzdCkuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDA0IERP
IE5PVCBERUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1NQSV9IXwog
I2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1NQSV9IXwogCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCitHVEVTVF9ESVNBQkxFX01T
Q19XQVJOSU5HU19QVVNIXyg0MjUxIFwKKy8qIGNsYXNzIEEgbmVlZHMgdG8gaGF2ZSBkbGwtaW50
ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50cyBvZiBjbGFzcyBCICovKQogCiBuYW1lc3BhY2Ug
dGVzdGluZyB7CiAKQEAgLTk3LDEzICsxMDEsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBTaW5nbGVG
YWlsdXJlQ2hlY2tlciB7CiAgcHVibGljOgogICAvLyBUaGUgY29uc3RydWN0b3IgcmVtZW1iZXJz
IHRoZSBhcmd1bWVudHMuCiAgIFNpbmdsZUZhaWx1cmVDaGVja2VyKGNvbnN0IFRlc3RQYXJ0UmVz
dWx0QXJyYXkqIHJlc3VsdHMsCi0gICAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0
OjpUeXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN1YnN0cik7
CisgICAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUsIGNvbnN0
IHN0ZDo6c3RyaW5nJiBzdWJzdHIpOwogICB+U2luZ2xlRmFpbHVyZUNoZWNrZXIoKTsKICBwcml2
YXRlOgogICBjb25zdCBUZXN0UGFydFJlc3VsdEFycmF5KiBjb25zdCByZXN1bHRzXzsKICAgY29u
c3QgVGVzdFBhcnRSZXN1bHQ6OlR5cGUgdHlwZV87Ci0gIGNvbnN0IFN0cmluZyBzdWJzdHJfOwor
ICBjb25zdCBzdGQ6OnN0cmluZyBzdWJzdHJfOwogCiAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8oU2luZ2xlRmFpbHVyZUNoZWNrZXIpOwogfTsKQEAgLTExMiw2ICsxMTUsOCBAQCBj
bGFzcyBHVEVTVF9BUElfIFNpbmdsZUZhaWx1cmVDaGVja2VyIHsKIAogfSAgLy8gbmFtZXNwYWNl
IHRlc3RpbmcKIAorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQor
CiAvLyBBIHNldCBvZiBtYWNyb3MgZm9yIHRlc3RpbmcgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBv
ciBjb2RlIHRoYXQncyBleHBlY3RlZAogLy8gdG8gZ2VuZXJhdGUgR29vZ2xlIFRlc3QgZmF0YWwg
ZmFpbHVyZXMuICBJdCB2ZXJpZmllcyB0aGF0IHRoZSBnaXZlbgogLy8gc3RhdGVtZW50IHdpbGwg
Y2F1c2UgZXhhY3RseSBvbmUgZmF0YWwgR29vZ2xlIFRlc3QgZmFpbHVyZSB3aXRoICdzdWJzdHIn
CkBAIC0yMjMsNyArMjI4LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBTaW5nbGVGYWlsdXJlQ2hlY2tl
ciB7CiAgICAgICAgIChzdWJzdHIpKTtcCiAgICAge1wKICAgICAgIDo6dGVzdGluZzo6U2NvcGVk
RmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIgZ3Rlc3RfcmVwb3J0ZXIoXAotICAgICAgICAgIDo6
dGVzdGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6OklOVEVSQ0VQVF9BTExf
VEhSRUFEUyxcCisgICAgICAgICAgOjp0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRS
ZXBvcnRlcjo6SU5URVJDRVBUX0FMTF9USFJFQURTLCBcCiAgICAgICAgICAgJmd0ZXN0X2ZhaWx1
cmVzKTtcCiAgICAgICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IHN0
YXRlbWVudDsgfVwKICAgICB9XApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBhcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgKaW5kZXggZjcxNDc1OTA2NzYzOWYxZWE0
ZWMwYTEyNjM0N2RlYzEyMDQ4MjQzOS4uMWM3Yjg5ZTA4Nzk2ZDk3MzBmOWY4ZWVhZTQwNjIyNzE3
N2RiYTUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9ndGVzdC10ZXN0LXBhcnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oCkBAIC0yNywxNiArMjcsMTggQEAKIC8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRob3I6IG1oZXVsZUBnb29nbGUuY29tIChN
YXJrdXMgSGV1bGUpCi0vLworLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQogCiAj
aWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfVEVTVF9QQVJUX0hfCiAjZGVmaW5lIEdU
RVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfVEVTVF9QQVJUX0hfCiAKICNpbmNsdWRlIDxpb3Nmd2Q+
CiAjaW5jbHVkZSA8dmVjdG9yPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVy
bmFsLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmg+CisjaW5jbHVk
ZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRl
cm5hbC9ndGVzdC1zdHJpbmcuaCIKKworR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8o
NDI1MSBcCisvKiBjbGFzcyBBIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2Vk
IGJ5IGNsaWVudHMgb2YgY2xhc3MgQiAqLykKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC02
Miw3ICs2NCw3IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFBhcnRSZXN1bHQgewogICAgICAgICAg
ICAgICAgICBpbnQgYV9saW5lX251bWJlciwKICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
YV9tZXNzYWdlKQogICAgICAgOiB0eXBlXyhhX3R5cGUpLAotICAgICAgICBmaWxlX25hbWVfKGFf
ZmlsZV9uYW1lKSwKKyAgICAgICAgZmlsZV9uYW1lXyhhX2ZpbGVfbmFtZSA9PSBOVUxMID8gIiIg
OiBhX2ZpbGVfbmFtZSksCiAgICAgICAgIGxpbmVfbnVtYmVyXyhhX2xpbmVfbnVtYmVyKSwKICAg
ICAgICAgc3VtbWFyeV8oRXh0cmFjdFN1bW1hcnkoYV9tZXNzYWdlKSksCiAgICAgICAgIG1lc3Nh
Z2VfKGFfbWVzc2FnZSkgewpAQCAtNzMsNyArNzUsOSBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RQ
YXJ0UmVzdWx0IHsKIAogICAvLyBHZXRzIHRoZSBuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB3aGVy
ZSB0aGUgdGVzdCBwYXJ0IHRvb2sgcGxhY2UsIG9yCiAgIC8vIE5VTEwgaWYgaXQncyB1bmtub3du
LgotICBjb25zdCBjaGFyKiBmaWxlX25hbWUoKSBjb25zdCB7IHJldHVybiBmaWxlX25hbWVfLmNf
c3RyKCk7IH0KKyAgY29uc3QgY2hhciogZmlsZV9uYW1lKCkgY29uc3QgeworICAgIHJldHVybiBm
aWxlX25hbWVfLmVtcHR5KCkgPyBOVUxMIDogZmlsZV9uYW1lXy5jX3N0cigpOworICB9CiAKICAg
Ly8gR2V0cyB0aGUgbGluZSBpbiB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0
b29rIHBsYWNlLAogICAvLyBvciAtMSBpZiBpdCdzIHVua25vd24uCkBAIC05NiwyMSArMTAwLDIy
IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFBhcnRSZXN1bHQgewogCiAgIC8vIFJldHVybnMgdHJ1
ZSBpZmYgdGhlIHRlc3QgcGFydCBmYXRhbGx5IGZhaWxlZC4KICAgYm9vbCBmYXRhbGx5X2ZhaWxl
ZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGVfID09IGtGYXRhbEZhaWx1cmU7IH0KKwogIHByaXZhdGU6
CiAgIFR5cGUgdHlwZV87CiAKICAgLy8gR2V0cyB0aGUgc3VtbWFyeSBvZiB0aGUgZmFpbHVyZSBt
ZXNzYWdlIGJ5IG9taXR0aW5nIHRoZSBzdGFjawogICAvLyB0cmFjZSBpbiBpdC4KLSAgc3RhdGlj
IGludGVybmFsOjpTdHJpbmcgRXh0cmFjdFN1bW1hcnkoY29uc3QgY2hhciogbWVzc2FnZSk7Cisg
IHN0YXRpYyBzdGQ6OnN0cmluZyBFeHRyYWN0U3VtbWFyeShjb25zdCBjaGFyKiBtZXNzYWdlKTsK
IAogICAvLyBUaGUgbmFtZSBvZiB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0
b29rIHBsYWNlLCBvcgotICAvLyBOVUxMIGlmIHRoZSBzb3VyY2UgZmlsZSBpcyB1bmtub3duLgot
ICBpbnRlcm5hbDo6U3RyaW5nIGZpbGVfbmFtZV87CisgIC8vICIiIGlmIHRoZSBzb3VyY2UgZmls
ZSBpcyB1bmtub3duLgorICBzdGQ6OnN0cmluZyBmaWxlX25hbWVfOwogICAvLyBUaGUgbGluZSBp
biB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0b29rIHBsYWNlLCBvciAtMQog
ICAvLyBpZiB0aGUgbGluZSBudW1iZXIgaXMgdW5rbm93bi4KICAgaW50IGxpbmVfbnVtYmVyXzsK
LSAgaW50ZXJuYWw6OlN0cmluZyBzdW1tYXJ5XzsgIC8vIFRoZSB0ZXN0IGZhaWx1cmUgc3VtbWFy
eS4KLSAgaW50ZXJuYWw6OlN0cmluZyBtZXNzYWdlXzsgIC8vIFRoZSB0ZXN0IGZhaWx1cmUgbWVz
c2FnZS4KKyAgc3RkOjpzdHJpbmcgc3VtbWFyeV87ICAvLyBUaGUgdGVzdCBmYWlsdXJlIHN1bW1h
cnkuCisgIHN0ZDo6c3RyaW5nIG1lc3NhZ2VfOyAgLy8gVGhlIHRlc3QgZmFpbHVyZSBtZXNzYWdl
LgogfTsKIAogLy8gUHJpbnRzIGEgVGVzdFBhcnRSZXN1bHQgb2JqZWN0LgpAQCAtMTQwLDcgKzE0
NSw3IEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdFBhcnRSZXN1bHRBcnJheSB7CiB9OwogCiAvLyBU
aGlzIGludGVyZmFjZSBrbm93cyBob3cgdG8gcmVwb3J0IGEgdGVzdCBwYXJ0IHJlc3VsdC4KLWNs
YXNzIFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2UgeworY2xhc3MgR1RFU1RfQVBJXyBU
ZXN0UGFydFJlc3VsdFJlcG9ydGVySW50ZXJmYWNlIHsKICBwdWJsaWM6CiAgIHZpcnR1YWwgflRl
c3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2UoKSB7fQogCkBAIC0xNzMsNCArMTc4LDYgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBIYXNOZXdGYXRhbEZhaWx1cmVIZWxwZXIKIAogfSAgLy8gbmFtZXNw
YWNlIHRlc3RpbmcKIAorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1
MQorCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfVEVTVF9QQVJUX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXR5
cGVkLXRlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qt
dHlwZWQtdGVzdC5oCmluZGV4IDFlYzhlYjhkMzA5Mzk4ZDUyYmQ0OTYzODRjZjQ3NDgzYWUxMTUy
ZWUuLjc0YmNlNDZiZGM1MGY0YzhjZGUyYzZkNzI2NDkxMWZmNGQ5OWNmMTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQt
dGVzdC5oCkBAIC0yNiw4ICsyNiw5IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
IC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcg
V2FuKQorCisKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxFVEUKIAogI2lmbmRlZiBH
VEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1RZUEVEX1RFU1RfSF8KICNkZWZpbmUgR1RFU1RfSU5D
TFVERV9HVEVTVF9HVEVTVF9UWVBFRF9URVNUX0hfCkBAIC04Miw2ICs4MywyNCBAQCBUWVBFRF9U
RVNUKEZvb1Rlc3QsIERvZXNCbGFoKSB7CiAKIFRZUEVEX1RFU1QoRm9vVGVzdCwgSGFzUHJvcGVy
dHlBKSB7IC4uLiB9CiAKKy8vIFRZUEVEX1RFU1RfQ0FTRSB0YWtlcyBhbiBvcHRpb25hbCB0aGly
ZCBhcmd1bWVudCB3aGljaCBhbGxvd3MgdG8gc3BlY2lmeSBhCisvLyBjbGFzcyB0aGF0IGdlbmVy
YXRlcyBjdXN0b20gdGVzdCBuYW1lIHN1ZmZpeGVzIGJhc2VkIG9uIHRoZSB0eXBlLiBUaGlzIHNo
b3VsZAorLy8gYmUgYSBjbGFzcyB3aGljaCBoYXMgYSBzdGF0aWMgdGVtcGxhdGUgZnVuY3Rpb24g
R2V0TmFtZShpbnQgaW5kZXgpIHJldHVybmluZworLy8gYSBzdHJpbmcgZm9yIGVhY2ggdHlwZS4g
VGhlIHByb3ZpZGVkIGludGVnZXIgaW5kZXggZXF1YWxzIHRoZSBpbmRleCBvZiB0aGUKKy8vIHR5
cGUgaW4gdGhlIHByb3ZpZGVkIHR5cGUgbGlzdC4gSW4gbWFueSBjYXNlcyB0aGUgaW5kZXggY2Fu
IGJlIGlnbm9yZWQuCisvLworLy8gRm9yIGV4YW1wbGU6CisvLyAgIGNsYXNzIE15VHlwZU5hbWVz
IHsKKy8vICAgIHB1YmxpYzoKKy8vICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy8vICAgICBz
dGF0aWMgc3RkOjpzdHJpbmcgR2V0TmFtZShpbnQpIHsKKy8vICAgICAgIGlmIChzdGQ6OmlzX3Nh
bWU8VCwgY2hhcj4oKSkgcmV0dXJuICJjaGFyIjsKKy8vICAgICAgIGlmIChzdGQ6OmlzX3NhbWU8
VCwgaW50PigpKSByZXR1cm4gImludCI7CisvLyAgICAgICBpZiAoc3RkOjppc19zYW1lPFQsIHVu
c2lnbmVkIGludD4oKSkgcmV0dXJuICJ1bnNpZ25lZEludCI7CisvLyAgICAgfQorLy8gICB9Owor
Ly8gICBUWVBFRF9URVNUX0NBU0UoRm9vVGVzdCwgTXlUeXBlcywgTXlUeXBlTmFtZXMpOworCiAj
ZW5kaWYgIC8vIDAKIAogLy8gVHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBhYnN0cmFjdCB0
ZXN0IHBhdHRlcm5zIHBhcmFtZXRlcml6ZWQKQEAgLTE0MywxMSArMTYyLDE2IEBAIElOU1RBTlRJ
QVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsKIC8vIElmIHRoZSB0
eXBlIGxpc3QgY29udGFpbnMgb25seSBvbmUgdHlwZSwgeW91IGNhbiB3cml0ZSB0aGF0IHR5cGUK
IC8vIGRpcmVjdGx5IHdpdGhvdXQgVHlwZXM8Li4uPjoKIC8vICAgSU5TVEFOVElBVEVfVFlQRURf
VEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIGludCk7CisvLworLy8gU2ltaWxhciB0byB0aGUgb3B0
aW9uYWwgYXJndW1lbnQgb2YgVFlQRURfVEVTVF9DQVNFIGFib3ZlLAorLy8gSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AgdGFrZXMgYW4gb3B0aW9uYWwgZm91cnRoIGFyZ3VtZW50IHdoaWNoIGFsbG93
cyB0bworLy8gZ2VuZXJhdGUgY3VzdG9tIG5hbWVzLgorLy8gICBJTlNUQU5USUFURV9UWVBFRF9U
RVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcywgTXlUeXBlTmFtZXMpOwogCiAjZW5kaWYg
IC8vIDAKIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLSNpbmNsdWRl
IDxndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRl
cm5hbC9ndGVzdC1wb3J0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11
dGlsLmgiCiAKIC8vIEltcGxlbWVudHMgdHlwZWQgdGVzdHMuCiAKQEAgLTE1NywzMyArMTgxLDQ4
IEBAIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsK
IC8vCiAvLyBFeHBhbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSB0eXBlZGVmIGZvciB0aGUgdHlwZSBw
YXJhbWV0ZXJzIG9mIHRoZQogLy8gZ2l2ZW4gdGVzdCBjYXNlLgotI2RlZmluZSBHVEVTVF9UWVBF
X1BBUkFNU18oVGVzdENhc2VOYW1lKSBndGVzdF90eXBlX3BhcmFtc18jI1Rlc3RDYXNlTmFtZSMj
XworIyBkZWZpbmUgR1RFU1RfVFlQRV9QQVJBTVNfKFRlc3RDYXNlTmFtZSkgZ3Rlc3RfdHlwZV9w
YXJhbXNfIyNUZXN0Q2FzZU5hbWUjI18KKworLy8gRXhwYW5kcyB0byB0aGUgbmFtZSBvZiB0aGUg
dHlwZWRlZiBmb3IgdGhlIE5hbWVHZW5lcmF0b3IsIHJlc3BvbnNpYmxlIGZvcgorLy8gY3JlYXRp
bmcgdGhlIHN1ZmZpeGVzIG9mIHRoZSBuYW1lLgorI2RlZmluZSBHVEVTVF9OQU1FX0dFTkVSQVRP
Ul8oVGVzdENhc2VOYW1lKSBcCisgIGd0ZXN0X3R5cGVfcGFyYW1zXyMjVGVzdENhc2VOYW1lIyNf
TmFtZUdlbmVyYXRvcgogCiAvLyBUaGUgJ1R5cGVzJyB0ZW1wbGF0ZSBhcmd1bWVudCBiZWxvdyBt
dXN0IGhhdmUgc3BhY2VzIGFyb3VuZCBpdAogLy8gc2luY2Ugc29tZSBjb21waWxlcnMgbWF5IGNo
b2tlIG9uICc+Picgd2hlbiBwYXNzaW5nIGEgdGVtcGxhdGUKIC8vIGluc3RhbmNlIChlLmcuIFR5
cGVzPGludD4pCi0jZGVmaW5lIFRZUEVEX1RFU1RfQ0FTRShDYXNlTmFtZSwgVHlwZXMpIFwKLSAg
dHlwZWRlZiA6OnRlc3Rpbmc6OmludGVybmFsOjpUeXBlTGlzdDwgVHlwZXMgPjo6dHlwZSBcCi0g
ICAgICBHVEVTVF9UWVBFX1BBUkFNU18oQ2FzZU5hbWUpCi0KLSNkZWZpbmUgVFlQRURfVEVTVChD
YXNlTmFtZSwgVGVzdE5hbWUpIFwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIGd0ZXN0X1R5cGVQYXJh
bV8+IFwKLSAgY2xhc3MgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyhDYXNlTmFtZSwgVGVzdE5hbWUp
IFwKLSAgICAgIDogcHVibGljIENhc2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IHsgXAotICAgcHJp
dmF0ZTogXAotICAgIHR5cGVkZWYgQ2FzZU5hbWU8Z3Rlc3RfVHlwZVBhcmFtXz4gVGVzdEZpeHR1
cmU7IFwKLSAgICB0eXBlZGVmIGd0ZXN0X1R5cGVQYXJhbV8gVHlwZVBhcmFtOyBcCi0gICAgdmly
dHVhbCB2b2lkIFRlc3RCb2R5KCk7IFwKLSAgfTsgXAotICBib29sIGd0ZXN0XyMjQ2FzZU5hbWUj
I18jI1Rlc3ROYW1lIyNfcmVnaXN0ZXJlZF8gPSBcCi0gICAgICA6OnRlc3Rpbmc6OmludGVybmFs
OjpUeXBlUGFyYW1ldGVyaXplZFRlc3Q8IFwKLSAgICAgICAgICBDYXNlTmFtZSwgXAotICAgICAg
ICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlRlbXBsYXRlU2VsPCBcCi0gICAgICAgICAgICAgIEdU
RVNUX1RFU1RfQ0xBU1NfTkFNRV8oQ2FzZU5hbWUsIFRlc3ROYW1lKT4sIFwKLSAgICAgICAgICBH
VEVTVF9UWVBFX1BBUkFNU18oQ2FzZU5hbWUpPjo6UmVnaXN0ZXIoXAotICAgICAgICAgICAgICAi
IiwgI0Nhc2VOYW1lLCAjVGVzdE5hbWUsIDApOyBcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBndGVz
dF9UeXBlUGFyYW1fPiBcCi0gIHZvaWQgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyhDYXNlTmFtZSwg
VGVzdE5hbWUpPGd0ZXN0X1R5cGVQYXJhbV8+OjpUZXN0Qm9keSgpCisjIGRlZmluZSBUWVBFRF9U
RVNUX0NBU0UoQ2FzZU5hbWUsIFR5cGVzLCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgIHR5cGVkZWYgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZUxpc3Q8IFR5cGVzID46OnR5
cGUgR1RFU1RfVFlQRV9QQVJBTVNfKCBcCisgICAgICBDYXNlTmFtZSk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHR5cGVkZWYg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6TmFtZUdlbmVyYXRvclNlbGVjdG9yPF9fVkFfQVJHU19fPjo6
dHlwZSAgICBcCisgICAgICBHVEVTVF9OQU1FX0dFTkVSQVRPUl8oQ2FzZU5hbWUpCisKKyMgZGVm
aW5lIFRZUEVEX1RFU1QoQ2FzZU5hbWUsIFRlc3ROYW1lKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIGd0ZXN0X1R5cGVQYXJhbV8+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgY2xhc3MgR1RFU1Rf
VEVTVF9DTEFTU19OQU1FXyhDYXNlTmFtZSwgVGVzdE5hbWUpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgIDogcHVibGljIENhc2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIHByaXZhdGU6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB0eXBlZGVmIENhc2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IFRlc3RGaXh0dXJlOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0eXBlZGVmIGd0ZXN0X1R5cGVQYXJhbV8gVHlw
ZVBhcmFtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2aXJ0
dWFsIHZvaWQgVGVzdEJvZHkoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgc3RhdGljIGJvb2wgZ3Rl
c3RfIyNDYXNlTmFtZSMjXyMjVGVzdE5hbWUjI19yZWdpc3RlcmVkXyAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gPSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6
OlR5cGVQYXJhbWV0ZXJpemVkVGVzdDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICBDYXNlTmFtZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpUZW1w
bGF0ZVNlbDxHVEVTVF9URVNUX0NMQVNTX05BTUVfKENhc2VOYW1lLCAgIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
c3ROYW1lKT4sIFwKKyAgICAgICAgICBHVEVTVF9UWVBFX1BBUkFNU18oICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgQ2FzZU5h
bWUpPjo6UmVnaXN0ZXIoIiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q29kZUxvY2F0aW9uKCAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXyksICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI0Nhc2VOYW1lLCAjVGVzdE5hbWUsIDAsICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6R2VuZXJhdGVOYW1lczwgICAgICAgIFwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX05BTUVfR0VORVJBVE9SXyhDYXNlTmFtZSks
ICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX1RZ
UEVfUEFSQU1TXyhDYXNlTmFtZSk+KCkpOyAgICAgIFwKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIGd0
ZXN0X1R5cGVQYXJhbV8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgdm9pZCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKENhc2VOYW1lLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
c3ROYW1lKTxndGVzdF9UeXBlUGFyYW1fPjo6VGVzdEJvZHkoKQogCiAjZW5kaWYgIC8vIEdURVNU
X0hBU19UWVBFRF9URVNUCiAKQEAgLTE5NiwzMSArMjM1LDMxIEBAIElOU1RBTlRJQVRFX1RZUEVE
X1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsKIC8vIEV4cGFuZHMgdG8gdGhlIG5h
bWVzcGFjZSBuYW1lIHRoYXQgdGhlIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyBmb3IKIC8vIHRo
ZSBnaXZlbiB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGFyZSBkZWZpbmVkIGluLiAgVGhl
IGV4YWN0CiAvLyBuYW1lIG9mIHRoZSBuYW1lc3BhY2UgaXMgc3ViamVjdCB0byBjaGFuZ2Ugd2l0
aG91dCBub3RpY2UuCi0jZGVmaW5lIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhUZXN0Q2FzZU5hbWUp
IFwKKyMgZGVmaW5lIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhUZXN0Q2FzZU5hbWUpIFwKICAgZ3Rl
c3RfY2FzZV8jI1Rlc3RDYXNlTmFtZSMjXwogCiAvLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAt
IERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgogLy8KIC8vIEV4cGFuZHMgdG8gdGhlIG5hbWUgb2Yg
dGhlIHZhcmlhYmxlIHVzZWQgdG8gcmVtZW1iZXIgdGhlIG5hbWVzIG9mCiAvLyB0aGUgZGVmaW5l
ZCB0ZXN0cyBpbiB0aGUgZ2l2ZW4gdGVzdCBjYXNlLgotI2RlZmluZSBHVEVTVF9UWVBFRF9URVNU
X0NBU0VfUF9TVEFURV8oVGVzdENhc2VOYW1lKSBcCisjIGRlZmluZSBHVEVTVF9UWVBFRF9URVNU
X0NBU0VfUF9TVEFURV8oVGVzdENhc2VOYW1lKSBcCiAgIGd0ZXN0X3R5cGVkX3Rlc3RfY2FzZV9w
X3N0YXRlXyMjVGVzdENhc2VOYW1lIyNfCiAKIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0g
RE8gTk9UIFVTRSBJTiBVU0VSIENPREUgRElSRUNUTFkuCiAvLwogLy8gRXhwYW5kcyB0byB0aGUg
bmFtZSBvZiB0aGUgdmFyaWFibGUgdXNlZCB0byByZW1lbWJlciB0aGUgbmFtZXMgb2YKIC8vIHRo
ZSByZWdpc3RlcmVkIHRlc3RzIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UuCi0jZGVmaW5lIEdURVNU
X1JFR0lTVEVSRURfVEVTVF9OQU1FU18oVGVzdENhc2VOYW1lKSBcCisjIGRlZmluZSBHVEVTVF9S
RUdJU1RFUkVEX1RFU1RfTkFNRVNfKFRlc3RDYXNlTmFtZSkgXAogICBndGVzdF9yZWdpc3RlcmVk
X3Rlc3RfbmFtZXNfIyNUZXN0Q2FzZU5hbWUjI18KIAogLy8gVGhlIHZhcmlhYmxlcyBkZWZpbmVk
IGluIHRoZSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBtYWNyb3MgYXJlCiAvLyBzdGF0aWMgYXMg
dHlwaWNhbGx5IHRoZXNlIG1hY3JvcyBhcmUgdXNlZCBpbiBhIC5oIGZpbGUgdGhhdCBjYW4gYmUK
IC8vICNpbmNsdWRlZCBpbiBtdWx0aXBsZSB0cmFuc2xhdGlvbiB1bml0cyBsaW5rZWQgdG9nZXRo
ZXIuCi0jZGVmaW5lIFRZUEVEX1RFU1RfQ0FTRV9QKENhc2VOYW1lKSBcCisjIGRlZmluZSBUWVBF
RF9URVNUX0NBU0VfUChDYXNlTmFtZSkgXAogICBzdGF0aWMgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
VHlwZWRUZXN0Q2FzZVBTdGF0ZSBcCiAgICAgICBHVEVTVF9UWVBFRF9URVNUX0NBU0VfUF9TVEFU
RV8oQ2FzZU5hbWUpCiAKLSNkZWZpbmUgVFlQRURfVEVTVF9QKENhc2VOYW1lLCBUZXN0TmFtZSkg
XAorIyBkZWZpbmUgVFlQRURfVEVTVF9QKENhc2VOYW1lLCBUZXN0TmFtZSkgXAogICBuYW1lc3Bh
Y2UgR1RFU1RfQ0FTRV9OQU1FU1BBQ0VfKENhc2VOYW1lKSB7IFwKICAgdGVtcGxhdGUgPHR5cGVu
YW1lIGd0ZXN0X1R5cGVQYXJhbV8+IFwKICAgY2xhc3MgVGVzdE5hbWUgOiBwdWJsaWMgQ2FzZU5h
bWU8Z3Rlc3RfVHlwZVBhcmFtXz4geyBcCkBAIC0yMjksMzAgKzI2OCwzOCBAQCBJTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcyk7CiAgICAgdHlwZWRlZiBn
dGVzdF9UeXBlUGFyYW1fIFR5cGVQYXJhbTsgXAogICAgIHZpcnR1YWwgdm9pZCBUZXN0Qm9keSgp
OyBcCiAgIH07IFwKLSAgc3RhdGljIGJvb2wgZ3Rlc3RfIyNUZXN0TmFtZSMjX2RlZmluZWRfID0g
XAorICBzdGF0aWMgYm9vbCBndGVzdF8jI1Rlc3ROYW1lIyNfZGVmaW5lZF8gR1RFU1RfQVRUUklC
VVRFX1VOVVNFRF8gPSBcCiAgICAgICBHVEVTVF9UWVBFRF9URVNUX0NBU0VfUF9TVEFURV8oQ2Fz
ZU5hbWUpLkFkZFRlc3ROYW1lKFwKICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sICNDYXNl
TmFtZSwgI1Rlc3ROYW1lKTsgXAogICB9IFwKICAgdGVtcGxhdGUgPHR5cGVuYW1lIGd0ZXN0X1R5
cGVQYXJhbV8+IFwKICAgdm9pZCBHVEVTVF9DQVNFX05BTUVTUEFDRV8oQ2FzZU5hbWUpOjpUZXN0
TmFtZTxndGVzdF9UeXBlUGFyYW1fPjo6VGVzdEJvZHkoKQogCi0jZGVmaW5lIFJFR0lTVEVSX1RZ
UEVEX1RFU1RfQ0FTRV9QKENhc2VOYW1lLCAuLi4pIFwKKyMgZGVmaW5lIFJFR0lTVEVSX1RZUEVE
X1RFU1RfQ0FTRV9QKENhc2VOYW1lLCAuLi4pIFwKICAgbmFtZXNwYWNlIEdURVNUX0NBU0VfTkFN
RVNQQUNFXyhDYXNlTmFtZSkgeyBcCiAgIHR5cGVkZWYgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVt
cGxhdGVzPF9fVkFfQVJHU19fPjo6dHlwZSBndGVzdF9BbGxUZXN0c187IFwKICAgfSBcCi0gIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBHVEVTVF9SRUdJU1RFUkVEX1RFU1RfTkFNRVNfKENhc2VO
YW1lKSA9IFwKLSAgICAgIEdURVNUX1RZUEVEX1RFU1RfQ0FTRV9QX1NUQVRFXyhDYXNlTmFtZSku
VmVyaWZ5UmVnaXN0ZXJlZFRlc3ROYW1lcyhcCi0gICAgICAgICAgX19GSUxFX18sIF9fTElORV9f
LCAjX19WQV9BUkdTX18pCisgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBHVEVTVF9SRUdJU1RF
UkVEX1RFU1RfTkFNRVNfKENhc2VOYW1lKSBcCisgICAgICBHVEVTVF9BVFRSSUJVVEVfVU5VU0VE
XyA9IFwKKyAgICAgICAgICBHVEVTVF9UWVBFRF9URVNUX0NBU0VfUF9TVEFURV8oQ2FzZU5hbWUp
LlZlcmlmeVJlZ2lzdGVyZWRUZXN0TmFtZXMoIFwKKyAgICAgICAgICAgICAgX19GSUxFX18sIF9f
TElORV9fLCAjX19WQV9BUkdTX18pCiAKIC8vIFRoZSAnVHlwZXMnIHRlbXBsYXRlIGFyZ3VtZW50
IGJlbG93IG11c3QgaGF2ZSBzcGFjZXMgYXJvdW5kIGl0CiAvLyBzaW5jZSBzb21lIGNvbXBpbGVy
cyBtYXkgY2hva2Ugb24gJz4+JyB3aGVuIHBhc3NpbmcgYSB0ZW1wbGF0ZQogLy8gaW5zdGFuY2Ug
KGUuZy4gVHlwZXM8aW50PikKLSNkZWZpbmUgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1Ao
UHJlZml4LCBDYXNlTmFtZSwgVHlwZXMpIFwKLSAgYm9vbCBndGVzdF8jI1ByZWZpeCMjXyMjQ2Fz
ZU5hbWUgPSBcCi0gICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpUeXBlUGFyYW1ldGVyaXplZFRl
c3RDYXNlPENhc2VOYW1lLCBcCi0gICAgICAgICAgR1RFU1RfQ0FTRV9OQU1FU1BBQ0VfKENhc2VO
YW1lKTo6Z3Rlc3RfQWxsVGVzdHNfLCBcCi0gICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
VHlwZUxpc3Q8IFR5cGVzID46OnR5cGU+OjpSZWdpc3RlcihcCi0gICAgICAgICAgICAgICNQcmVm
aXgsICNDYXNlTmFtZSwgR1RFU1RfUkVHSVNURVJFRF9URVNUX05BTUVTXyhDYXNlTmFtZSkpCisj
IGRlZmluZSBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChQcmVmaXgsIENhc2VOYW1lLCBU
eXBlcywgLi4uKSAgICAgIFwKKyAgc3RhdGljIGJvb2wgZ3Rlc3RfIyNQcmVmaXgjI18jI0Nhc2VO
YW1lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gICAgICAgXAorICAgICAgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6VHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTwgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgQ2FzZU5hbWUsIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhDYXNlTmFtZSk6Omd0
ZXN0X0FsbFRlc3RzXywgICAgIFwKKyAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpUeXBl
TGlzdDwgVHlwZXMgPjo6dHlwZT46OiAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIFJlZ2lz
dGVyKCNQcmVmaXgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9u
KF9fRklMRV9fLCBfX0xJTkVfXyksIFwKKyAgICAgICAgICAgICAgICAgICAmR1RFU1RfVFlQRURf
VEVTVF9DQVNFX1BfU1RBVEVfKENhc2VOYW1lKSwgI0Nhc2VOYW1lLCAgXAorICAgICAgICAgICAg
ICAgICAgIEdURVNUX1JFR0lTVEVSRURfVEVTVF9OQU1FU18oQ2FzZU5hbWUpLCAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6R2VuZXJhdGVO
YW1lczwgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6TmFtZUdlbmVyYXRvclNlbGVjdG9yPCAgICAgICAgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19WQV9BUkdTX18+Ojp0eXBlLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlR5
cGVMaXN0PCBUeXBlcyA+Ojp0eXBlPigpKQogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9U
RVNUX1AKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9ndGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC5o
CmluZGV4IDkyMWZhZDExZmNjOGYyNGMwZGQyMjM5NGE0ODY3YWIyNGI2ZWEwYzMuLjVkZjRiMGEz
YTcxMjc2OTA0NTVhOTQ1Y2IxNTI4YjZiZDc0NDliNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgKQEAgLTI2LDEwICsyNiw5IEBACiAvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKIC8vCi0vLyBBdXRob3I6
IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGhlIEdvb2dsZSBDKysgVGVz
dGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBh
bmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogLy8KIC8vIFRoaXMgaGVhZGVyIGZp
bGUgZGVmaW5lcyB0aGUgcHVibGljIEFQSSBmb3IgR29vZ2xlIFRlc3QuICBJdCBzaG91bGQgYmUK
IC8vIGluY2x1ZGVkIGJ5IGFueSB0ZXN0IHByb2dyYW0gdGhhdCB1c2VzIEdvb2dsZSBUZXN0LgpA
QCAtNDgsMzggKzQ3LDU0IEBACiAvLyByZWdpc3RyYXRpb24gZnJvbSBCYXJ0aGVsZW15IERhZ2Vu
YWlzJyAoYmFydGhlbGVteUBwcm9sb2dpcXVlLmNvbSkKIC8vIGVhc3lVbml0IGZyYW1ld29yay4K
IAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lO
Q0xVREVfR1RFU1RfR1RFU1RfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9I
XwogCiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPG9zdHJlYW0+CiAjaW5jbHVkZSA8dmVj
dG9yPgogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4KLSNpbmNs
dWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC1kZWF0aC10ZXN0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oPgotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdF9wcm9k
Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QtdHlwZWQtdGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVy
bmFsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgiCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LW1lc3Nh
Z2UuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgiCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QtcHJpbnRlcnMuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdF9wcm9kLmgiCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtdHlw
ZWQtdGVzdC5oIgorCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MjUxIFwKKy8q
IGNsYXNzIEEgbmVlZHMgdG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50
cyBvZiBjbGFzcyBCICovKQogCiAvLyBEZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLCBkaWZmZXJl
bnQgc3RyaW5nIGNsYXNzZXMgYXJlIGF2YWlsYWJsZS4KIC8vIE9uIExpbnV4LCBpbiBhZGRpdGlv
biB0byA6OnN0ZDo6c3RyaW5nLCBHb29nbGUgYWxzbyBtYWtlcyB1c2Ugb2YKIC8vIGNsYXNzIDo6
c3RyaW5nLCB3aGljaCBoYXMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIDo6c3RkOjpzdHJpbmcsIGJ1
dAogLy8gaGFzIGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uLgogLy8KLS8vIFRoZSB1c2VyIGNh
biBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgdG8gMSB0byBpbmRpY2F0ZSB0aGF0Cisv
LyBZb3UgY2FuIGRlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORyB0byAxIHRvIGluZGljYXRl
IHRoYXQKIC8vIDo6c3RyaW5nIGlzIGF2YWlsYWJsZSBBTkQgaXMgYSBkaXN0aW5jdCB0eXBlIHRv
IDo6c3RkOjpzdHJpbmcsIG9yCiAvLyBkZWZpbmUgaXQgdG8gMCB0byBpbmRpY2F0ZSBvdGhlcndp
c2UuCiAvLwotLy8gSWYgdGhlIHVzZXIncyA6OnN0ZDo6c3RyaW5nIGFuZCA6OnN0cmluZyBhcmUg
dGhlIHNhbWUgY2xhc3MgZHVlIHRvCi0vLyBhbGlhc2luZywgaGUgc2hvdWxkIGRlZmluZSBHVEVT
VF9IQVNfR0xPQkFMX1NUUklORyB0byAwLgorLy8gSWYgOjpzdGQ6OnN0cmluZyBhbmQgOjpzdHJp
bmcgYXJlIHRoZSBzYW1lIGNsYXNzIG9uIHlvdXIgcGxhdGZvcm0KKy8vIGR1ZSB0byBhbGlhc2lu
ZywgeW91IHNob3VsZCBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgdG8gMC4KIC8vCi0v
LyBJZiB0aGUgdXNlciBkb2Vzbid0IGRlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORywgaXQg
aXMgZGVmaW5lZAorLy8gSWYgeW91IGRvIG5vdCBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJ
TkcsIGl0IGlzIGRlZmluZWQKIC8vIGhldXJpc3RpY2FsbHkuCiAKIG5hbWVzcGFjZSB0ZXN0aW5n
IHsKIAorLy8gU2lsZW5jZSBDNDEwMCAodW5yZWZlcmVuY2VkIGZvcm1hbCBwYXJhbWV0ZXIpIGFu
ZCA0ODA1CisvLyB1bnNhZmUgbWl4IG9mIHR5cGUgJ2NvbnN0IGludCcgYW5kIHR5cGUgJ2NvbnN0
IGJvb2wnCisjaWZkZWYgX01TQ19WRVIKKyMgcHJhZ21hIHdhcm5pbmcocHVzaCkKKyMgcHJhZ21h
IHdhcm5pbmcoZGlzYWJsZTo0ODA1KQorIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDApCisj
ZW5kaWYKKworCiAvLyBEZWNsYXJlcyB0aGUgZmxhZ3MuCiAKIC8vIFRoaXMgZmxhZyB0ZW1wb3Jh
cnkgZW5hYmxlcyB0aGUgZGlzYWJsZWQgdGVzdHMuCkBAIC0xMDEsNiArMTE2LDEwIEBAIEdURVNU
X0RFQ0xBUkVfc3RyaW5nXyhjb2xvcik7CiAvLyB0aGUgdGVzdHMgdG8gcnVuLiBJZiB0aGUgZmls
dGVyIGlzIG5vdCBnaXZlbiBhbGwgdGVzdHMgYXJlIGV4ZWN1dGVkLgogR1RFU1RfREVDTEFSRV9z
dHJpbmdfKGZpbHRlcik7CiAKKy8vIFRoaXMgZmxhZyBjb250cm9scyB3aGV0aGVyIEdvb2dsZSBU
ZXN0IGluc3RhbGxzIGEgc2lnbmFsIGhhbmRsZXIgdGhhdCBkdW1wcworLy8gZGVidWdnaW5nIGlu
Zm9ybWF0aW9uIHdoZW4gZmF0YWwgc2lnbmFscyBhcmUgcmFpc2VkLgorR1RFU1RfREVDTEFSRV9i
b29sXyhpbnN0YWxsX2ZhaWx1cmVfc2lnbmFsX2hhbmRsZXIpOworCiAvLyBUaGlzIGZsYWcgY2F1
c2VzIHRoZSBHb29nbGUgVGVzdCB0byBsaXN0IHRlc3RzLiBOb25lIG9mIHRoZSB0ZXN0cyBsaXN0
ZWQKIC8vIGFyZSBhY3R1YWxseSBydW4gaWYgdGhlIGZsYWcgaXMgcHJvdmlkZWQuCiBHVEVTVF9E
RUNMQVJFX2Jvb2xfKGxpc3RfdGVzdHMpOwpAQCAtMTEzLDYgKzEzMiw5IEBAIEdURVNUX0RFQ0xB
UkVfc3RyaW5nXyhvdXRwdXQpOwogLy8gdGVzdC4KIEdURVNUX0RFQ0xBUkVfYm9vbF8ocHJpbnRf
dGltZSk7CiAKKy8vIFRoaXMgZmxhZ3MgY29udHJvbCB3aGV0aGVyIEdvb2dsZSBUZXN0IHByaW50
cyBVVEY4IGNoYXJhY3RlcnMgYXMgdGV4dC4KK0dURVNUX0RFQ0xBUkVfYm9vbF8ocHJpbnRfdXRm
OCk7CisKIC8vIFRoaXMgZmxhZyBzcGVjaWZpZXMgdGhlIHJhbmRvbSBudW1iZXIgc2VlZC4KIEdU
RVNUX0RFQ0xBUkVfaW50MzJfKHJhbmRvbV9zZWVkKTsKIApAQCAtMTMzLDkgKzE1NSwxOCBAQCBH
VEVTVF9ERUNMQVJFX2ludDMyXyhzdGFja190cmFjZV9kZXB0aCk7CiAKIC8vIFdoZW4gdGhpcyBm
bGFnIGlzIHNwZWNpZmllZCwgYSBmYWlsZWQgYXNzZXJ0aW9uIHdpbGwgdGhyb3cgYW4KIC8vIGV4
Y2VwdGlvbiBpZiBleGNlcHRpb25zIGFyZSBlbmFibGVkLCBvciBleGl0IHRoZSBwcm9ncmFtIHdp
dGggYQotLy8gbm9uLXplcm8gY29kZSBvdGhlcndpc2UuCisvLyBub24temVybyBjb2RlIG90aGVy
d2lzZS4gRm9yIHVzZSB3aXRoIGFuIGV4dGVybmFsIHRlc3QgZnJhbWV3b3JrLgogR1RFU1RfREVD
TEFSRV9ib29sXyh0aHJvd19vbl9mYWlsdXJlKTsKIAorLy8gV2hlbiB0aGlzIGZsYWcgaXMgc2V0
IHdpdGggYSAiaG9zdDpwb3J0IiBzdHJpbmcsIG9uIHN1cHBvcnRlZAorLy8gcGxhdGZvcm1zIHRl
c3QgcmVzdWx0cyBhcmUgc3RyZWFtZWQgdG8gdGhlIHNwZWNpZmllZCBwb3J0IG9uCisvLyB0aGUg
c3BlY2lmaWVkIGhvc3QgbWFjaGluZS4KK0dURVNUX0RFQ0xBUkVfc3RyaW5nXyhzdHJlYW1fcmVz
dWx0X3RvKTsKKworI2lmIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KK0dURVNUX0RFQ0xB
UkVfc3RyaW5nXyhmbGFnZmlsZSk7CisjZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVf
RkxBR18KKwogLy8gVGhlIHVwcGVyIGxpbWl0IGZvciB2YWxpZCBzdGFjayB0cmFjZSBkZXB0aHMu
CiBjb25zdCBpbnQga01heFN0YWNrVHJhY2VEZXB0aCA9IDEwMDsKIApAQCAtMTQ3LDMxICsxNzgs
MjcgQEAgY2xhc3MgRXhlY0RlYXRoVGVzdDsKIGNsYXNzIE5vRXhlY0RlYXRoVGVzdDsKIGNsYXNz
IEZpbmFsU3VjY2Vzc0NoZWNrZXI7CiBjbGFzcyBHVGVzdEZsYWdTYXZlcjsKLWNsYXNzIFRlc3RJ
bmZvSW1wbDsKK2NsYXNzIFN0cmVhbWluZ0xpc3RlbmVyVGVzdDsKIGNsYXNzIFRlc3RSZXN1bHRB
Y2Nlc3NvcjsKIGNsYXNzIFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOwogY2xhc3MgVGVzdEV2
ZW50UmVwZWF0ZXI7CitjbGFzcyBVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdEhlbHBlcjsKIGNs
YXNzIFdpbmRvd3NEZWF0aFRlc3Q7CitjbGFzcyBGdWNoc2lhRGVhdGhUZXN0OwogY2xhc3MgVW5p
dFRlc3RJbXBsKiBHZXRVbml0VGVzdEltcGwoKTsKIHZvaWQgUmVwb3J0RmFpbHVyZUluVW5rbm93
bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLWNsYXNzIFBy
ZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjsKLWNsYXNzIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRl
cjsKLQotLy8gQ29udmVydHMgYSBzdHJlYW1hYmxlIHZhbHVlIHRvIGEgU3RyaW5nLiAgQSBOVUxM
IHBvaW50ZXIgaXMKLS8vIGNvbnZlcnRlZCB0byAiKG51bGwpIi4gIFdoZW4gdGhlIGlucHV0IHZh
bHVlIGlzIGEgOjpzdHJpbmcsCi0vLyA6OnN0ZDo6c3RyaW5nLCA6OndzdHJpbmcsIG9yIDo6c3Rk
Ojp3c3RyaW5nIG9iamVjdCwgZWFjaCBOVUwKLS8vIGNoYXJhY3RlciBpbiBpdCBpcyByZXBsYWNl
ZCB3aXRoICJcXDAiLgotLy8gRGVjbGFyZWQgaW4gZ3Rlc3QtaW50ZXJuYWwuaCBidXQgZGVmaW5l
ZCBoZXJlLCBzbyB0aGF0IGl0IGhhcyBhY2Nlc3MKLS8vIHRvIHRoZSBkZWZpbml0aW9uIG9mIHRo
ZSBNZXNzYWdlIGNsYXNzLCByZXF1aXJlZCBieSB0aGUgQVJNCi0vLyBjb21waWxlci4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotU3RyaW5nIFN0cmVhbWFibGVUb1N0cmluZyhjb25zdCBUJiBzdHJl
YW1hYmxlKSB7Ci0gIHJldHVybiAoTWVzc2FnZSgpIDw8IHN0cmVhbWFibGUpLkdldFN0cmluZygp
OwotfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIG1lc3NhZ2UpOwogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAorLy8gVGhlIGZyaWVu
ZCByZWxhdGlvbnNoaXAgb2Ygc29tZSBvZiB0aGVzZSBjbGFzc2VzIGlzIGN5Y2xpYy4KKy8vIElm
IHdlIGRvbid0IGZvcndhcmQgZGVjbGFyZSB0aGVtIHRoZSBjb21waWxlciBtaWdodCBjb25mdXNl
IHRoZSBjbGFzc2VzCisvLyBpbiBmcmllbmRzaGlwIGNsYXVzZXMgd2l0aCBzYW1lIG5hbWVkIGNs
YXNzZXMgb24gdGhlIHNjb3BlLgorY2xhc3MgVGVzdDsKK2NsYXNzIFRlc3RDYXNlOworY2xhc3Mg
VGVzdEluZm87CitjbGFzcyBVbml0VGVzdDsKKwogLy8gQSBjbGFzcyBmb3IgaW5kaWNhdGluZyB3
aGV0aGVyIGFuIGFzc2VydGlvbiB3YXMgc3VjY2Vzc2Z1bC4gIFdoZW4KIC8vIHRoZSBhc3NlcnRp
b24gd2Fzbid0IHN1Y2Nlc3NmdWwsIHRoZSBBc3NlcnRpb25SZXN1bHQgb2JqZWN0CiAvLyByZW1l
bWJlcnMgYSBub24tZW1wdHkgbWVzc2FnZSB0aGF0IGRlc2NyaWJlcyBob3cgaXQgZmFpbGVkLgpA
QCAtMjU2LDggKzI4MywzNSBAQCBjbGFzcyBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCB7CiAg
IC8vIENvcHkgY29uc3RydWN0b3IuCiAgIC8vIFVzZWQgaW4gRVhQRUNUX1RSVUUvRkFMU0UoYXNz
ZXJ0aW9uX3Jlc3VsdCkuCiAgIEFzc2VydGlvblJlc3VsdChjb25zdCBBc3NlcnRpb25SZXN1bHQm
IG90aGVyKTsKKworI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSIDwgMTkxMAorICBH
VEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0ODAwIC8qIGZvcmNpbmcgdmFsdWUgdG8g
Ym9vbCAqLykKKyNlbmRpZgorCiAgIC8vIFVzZWQgaW4gdGhlIEVYUEVDVF9UUlVFL0ZBTFNFKGJv
b2xfZXhwcmVzc2lvbikuCi0gIGV4cGxpY2l0IEFzc2VydGlvblJlc3VsdChib29sIHN1Y2Nlc3Mp
IDogc3VjY2Vzc18oc3VjY2Vzcykge30KKyAgLy8KKyAgLy8gVCBtdXN0IGJlIGNvbnRleHR1YWxs
eSBjb252ZXJ0aWJsZSB0byBib29sLgorICAvLworICAvLyBUaGUgc2Vjb25kIHBhcmFtZXRlciBw
cmV2ZW50cyB0aGlzIG92ZXJsb2FkIGZyb20gYmVpbmcgY29uc2lkZXJlZCBpZgorICAvLyB0aGUg
YXJndW1lbnQgaXMgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0byBBc3NlcnRpb25SZXN1bHQuIElu
IHRoYXQgY2FzZQorICAvLyB3ZSB3YW50IEFzc2VydGlvblJlc3VsdCdzIGNvcHkgY29uc3RydWN0
b3IgdG8gYmUgdXNlZC4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIGV4cGxpY2l0IEFzc2Vy
dGlvblJlc3VsdCgKKyAgICAgIGNvbnN0IFQmIHN1Y2Nlc3MsCisgICAgICB0eXBlbmFtZSBpbnRl
cm5hbDo6RW5hYmxlSWY8CisgICAgICAgICAgIWludGVybmFsOjpJbXBsaWNpdGx5Q29udmVydGli
bGU8VCwgQXNzZXJ0aW9uUmVzdWx0Pjo6dmFsdWU+Ojp0eXBlKgorICAgICAgICAgIC8qZW5hYmxl
ciovID0gTlVMTCkKKyAgICAgIDogc3VjY2Vzc18oc3VjY2Vzcykge30KKworI2lmIGRlZmluZWQo
X01TQ19WRVIpICYmIF9NU0NfVkVSIDwgMTkxMAorICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5H
U19QT1BfKCkKKyNlbmRpZgorCisgIC8vIEFzc2lnbm1lbnQgb3BlcmF0b3IuCisgIEFzc2VydGlv
blJlc3VsdCYgb3BlcmF0b3I9KEFzc2VydGlvblJlc3VsdCBvdGhlcikgeworICAgIHN3YXAob3Ro
ZXIpOworICAgIHJldHVybiAqdGhpczsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhl
IGFzc2VydGlvbiBzdWNjZWVkZWQuCiAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBz
dWNjZXNzXzsgfSAgLy8gTk9MSU5UCkBAIC0yNzAsMjAgKzMyNCwzNiBAQCBjbGFzcyBHVEVTVF9B
UElfIEFzc2VydGlvblJlc3VsdCB7CiAgIC8vIGFzc2VydGlvbidzIGV4cGVjdGF0aW9uKS4gV2hl
biBub3RoaW5nIGhhcyBiZWVuIHN0cmVhbWVkIGludG8gdGhlCiAgIC8vIG9iamVjdCwgcmV0dXJu
cyBhbiBlbXB0eSBzdHJpbmcuCiAgIGNvbnN0IGNoYXIqIG1lc3NhZ2UoKSBjb25zdCB7Ci0gICAg
cmV0dXJuIG1lc3NhZ2VfLmdldCgpICE9IE5VTEwgJiYgbWVzc2FnZV8tPmNfc3RyKCkgIT0gTlVM
TCA/Ci0gICAgICAgICAgIG1lc3NhZ2VfLT5jX3N0cigpIDogIiI7CisgICAgcmV0dXJuIG1lc3Nh
Z2VfLmdldCgpICE9IE5VTEwgPyAgbWVzc2FnZV8tPmNfc3RyKCkgOiAiIjsKICAgfQotICAvLyBU
T0RPKHZsYWRsQGdvb2dsZS5jb20pOiBSZW1vdmUgdGhpcyBhZnRlciBtYWtpbmcgc3VyZSBubyBj
bGllbnRzIHVzZSBpdC4KKyAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGFmdGVyIG1ha2luZyBzdXJl
IG5vIGNsaWVudHMgdXNlIGl0LgogICAvLyBEZXByZWNhdGVkOyBwbGVhc2UgdXNlIG1lc3NhZ2Uo
KSBpbnN0ZWFkLgogICBjb25zdCBjaGFyKiBmYWlsdXJlX21lc3NhZ2UoKSBjb25zdCB7IHJldHVy
biBtZXNzYWdlKCk7IH0KIAogICAvLyBTdHJlYW1zIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSBp
bnRvIHRoaXMgb2JqZWN0LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gQXNzZXJ0aW9uUmVzdWx0
JiBvcGVyYXRvcjw8KGNvbnN0IFQmIHZhbHVlKTsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IEFz
c2VydGlvblJlc3VsdCYgb3BlcmF0b3I8PChjb25zdCBUJiB2YWx1ZSkgeworICAgIEFwcGVuZE1l
c3NhZ2UoTWVzc2FnZSgpIDw8IHZhbHVlKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICAv
LyBBbGxvd3Mgc3RyZWFtaW5nIGJhc2ljIG91dHB1dCBtYW5pcHVsYXRvcnMgc3VjaCBhcyBlbmRs
IG9yIGZsdXNoIGludG8KKyAgLy8gdGhpcyBvYmplY3QuCisgIEFzc2VydGlvblJlc3VsdCYgb3Bl
cmF0b3I8PCgKKyAgICAgIDo6c3RkOjpvc3RyZWFtJiAoKmJhc2ljX21hbmlwdWxhdG9yKSg6OnN0
ZDo6b3N0cmVhbSYgc3RyZWFtKSkgeworICAgIEFwcGVuZE1lc3NhZ2UoTWVzc2FnZSgpIDw8IGJh
c2ljX21hbmlwdWxhdG9yKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KIAogIHByaXZhdGU6Ci0g
IC8vIE5vIGltcGxlbWVudGF0aW9uIC0gd2Ugd2FudCBBc3NlcnRpb25SZXN1bHQgdG8gYmUKLSAg
Ly8gY29weS1jb25zdHJ1Y3RpYmxlIGJ1dCBub3QgYXNzaWduYWJsZS4KLSAgdm9pZCBvcGVyYXRv
cj0oY29uc3QgQXNzZXJ0aW9uUmVzdWx0JiBvdGhlcik7CisgIC8vIEFwcGVuZHMgdGhlIGNvbnRl
bnRzIG9mIG1lc3NhZ2UgdG8gbWVzc2FnZV8uCisgIHZvaWQgQXBwZW5kTWVzc2FnZShjb25zdCBN
ZXNzYWdlJiBhX21lc3NhZ2UpIHsKKyAgICBpZiAobWVzc2FnZV8uZ2V0KCkgPT0gTlVMTCkKKyAg
ICAgIG1lc3NhZ2VfLnJlc2V0KG5ldyA6OnN0ZDo6c3RyaW5nKTsKKyAgICBtZXNzYWdlXy0+YXBw
ZW5kKGFfbWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0cigpKTsKKyAgfQorCisgIC8vIFN3YXAgdGhl
IGNvbnRlbnRzIG9mIHRoaXMgQXNzZXJ0aW9uUmVzdWx0IHdpdGggb3RoZXIuCisgIHZvaWQgc3dh
cChBc3NlcnRpb25SZXN1bHQmIG90aGVyKTsKIAogICAvLyBTdG9yZXMgcmVzdWx0IG9mIHRoZSBh
c3NlcnRpb24gcHJlZGljYXRlLgogICBib29sIHN1Y2Nlc3NfOwpAQCAtMjkxLDE5ICszNjEsOCBA
QCBjbGFzcyBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCB7CiAgIC8vIGNvbnN0cnVjdCBpcyBu
b3Qgc2F0aXNmaWVkIHdpdGggdGhlIHByZWRpY2F0ZSdzIG91dGNvbWUuCiAgIC8vIFJlZmVyZW5j
ZWQgdmlhIGEgcG9pbnRlciB0byBhdm9pZCB0YWtpbmcgdG9vIG11Y2ggc3RhY2sgZnJhbWUgc3Bh
Y2UKICAgLy8gd2l0aCB0ZXN0IGFzc2VydGlvbnMuCi0gIGludGVybmFsOjpzY29wZWRfcHRyPGlu
dGVybmFsOjpTdHJpbmc+IG1lc3NhZ2VfOwotfTsgIC8vIGNsYXNzIEFzc2VydGlvblJlc3VsdAot
Ci0vLyBTdHJlYW1zIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSBpbnRvIHRoaXMgb2JqZWN0Lgot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1Bc3NlcnRpb25SZXN1bHQmIEFzc2VydGlvblJlc3VsdDo6
b3BlcmF0b3I8PChjb25zdCBUJiB2YWx1ZSkgewotICBNZXNzYWdlIG1zZzsKLSAgaWYgKG1lc3Nh
Z2VfLmdldCgpICE9IE5VTEwpCi0gICAgbXNnIDw8ICptZXNzYWdlXzsKLSAgbXNnIDw8IHZhbHVl
OwotICBtZXNzYWdlXy5yZXNldChuZXcgaW50ZXJuYWw6OlN0cmluZyhtc2cuR2V0U3RyaW5nKCkp
KTsKLSAgcmV0dXJuICp0aGlzOwotfQorICBpbnRlcm5hbDo6c2NvcGVkX3B0cjwgOjpzdGQ6OnN0
cmluZz4gbWVzc2FnZV87Cit9OwogCiAvLyBNYWtlcyBhIHN1Y2Nlc3NmdWwgYXNzZXJ0aW9uIHJl
c3VsdC4KIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvblN1Y2Nlc3MoKTsKQEAg
LTMxNSw2ICszNzQsMTUgQEAgR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uRmFp
bHVyZSgpOwogLy8gRGVwcmVjYXRlZDsgdXNlIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBtc2cuCiBH
VEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKGNvbnN0IE1lc3NhZ2Um
IG1zZyk7CiAKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKKy8vIEluY2x1ZGVzIHRoZSBhdXRv
LWdlbmVyYXRlZCBoZWFkZXIgdGhhdCBpbXBsZW1lbnRzIGEgZmFtaWx5IG9mIGdlbmVyaWMKKy8v
IHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9zLiBUaGlzIGluY2x1ZGUgY29tZXMgbGF0ZSBiZWNh
dXNlIGl0IHJlbGllcyBvbgorLy8gQVBJcyBkZWNsYXJlZCBhYm92ZS4KKyNpbmNsdWRlICJndGVz
dC9ndGVzdF9wcmVkX2ltcGwuaCIKKworbmFtZXNwYWNlIHRlc3RpbmcgeworCiAvLyBUaGUgYWJz
dHJhY3QgY2xhc3MgdGhhdCBhbGwgdGVzdHMgaW5oZXJpdCBmcm9tLgogLy8KIC8vIEluIEdvb2ds
ZSBUZXN0LCBhIHVuaXQgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIG9uZSBvciBtYW55IFRlc3RDYXNl
cywgYW5kCkBAIC0zMjUsMTIgKzM5MywxMiBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBB
c3NlcnRpb25GYWlsdXJlKGNvbnN0IE1lc3NhZ2UmIG1zZyk7CiAvLyB0aGlzIGZvciB5b3UuCiAv
LwogLy8gVGhlIG9ubHkgdGltZSB5b3UgZGVyaXZlIGZyb20gVGVzdCBpcyB3aGVuIGRlZmluaW5n
IGEgdGVzdCBmaXh0dXJlCi0vLyB0byBiZSB1c2VkIGEgVEVTVF9GLiAgRm9yIGV4YW1wbGU6Cisv
LyB0byBiZSB1c2VkIGluIGEgVEVTVF9GLiAgRm9yIGV4YW1wbGU6CiAvLwogLy8gICBjbGFzcyBG
b29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogLy8gICAgcHJvdGVjdGVkOgotLy8gICAg
IHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsgLi4uIH0KLS8vICAgICB2aXJ0dWFsIHZvaWQgVGVhckRv
d24oKSB7IC4uLiB9CisvLyAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIHsgLi4uIH0KKy8vICAg
ICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUgeyAuLi4gfQogLy8gICAgIC4uLgogLy8gICB9Owog
Ly8KQEAgLTM0MCw3ICs0MDgsNyBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBBc3NlcnRp
b25GYWlsdXJlKGNvbnN0IE1lc3NhZ2UmIG1zZyk7CiAvLyBUZXN0IGlzIG5vdCBjb3B5YWJsZS4K
IGNsYXNzIEdURVNUX0FQSV8gVGVzdCB7CiAgcHVibGljOgotICBmcmllbmQgY2xhc3MgaW50ZXJu
YWw6OlRlc3RJbmZvSW1wbDsKKyAgZnJpZW5kIGNsYXNzIFRlc3RJbmZvOwogCiAgIC8vIERlZmlu
ZXMgdHlwZXMgZm9yIHBvaW50ZXJzIHRvIGZ1bmN0aW9ucyB0aGF0IHNldCB1cCBhbmQgdGVhciBk
b3duCiAgIC8vIGEgdGVzdCBjYXNlLgpAQCAtMzc2LDIwICs0NDQsMjEgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBUZXN0IHsKICAgLy8gbm9uLWZhdGFsKSBmYWlsdXJlLgogICBzdGF0aWMgYm9vbCBIYXNG
YWlsdXJlKCkgeyByZXR1cm4gSGFzRmF0YWxGYWlsdXJlKCkgfHwgSGFzTm9uZmF0YWxGYWlsdXJl
KCk7IH0KIAotICAvLyBMb2dzIGEgcHJvcGVydHkgZm9yIHRoZSBjdXJyZW50IHRlc3QuICBPbmx5
IHRoZSBsYXN0IHZhbHVlIGZvciBhIGdpdmVuCi0gIC8vIGtleSBpcyByZW1lbWJlcmVkLgotICAv
LyBUaGVzZSBhcmUgcHVibGljIHN0YXRpYyBzbyB0aGV5IGNhbiBiZSBjYWxsZWQgZnJvbSB1dGls
aXR5IGZ1bmN0aW9ucwotICAvLyB0aGF0IGFyZSBub3QgbWVtYmVycyBvZiB0aGUgdGVzdCBmaXh0
dXJlLgotICAvLyBUaGUgYXJndW1lbnRzIGFyZSBjb25zdCBjaGFyKiBpbnN0ZWFkIHN0cmluZ3Ms
IGFzIEdvb2dsZSBUZXN0IGlzIHVzZWQKLSAgLy8gb24gcGxhdGZvcm1zIHdoZXJlIHN0cmluZyBk
b2Vzbid0IGNvbXBpbGUuCi0gIC8vCi0gIC8vIE5vdGUgdGhhdCBhIGRyaXZpbmcgY29uc2lkZXJh
dGlvbiBmb3IgdGhlc2UgUmVjb3JkUHJvcGVydHkgbWV0aG9kcwotICAvLyB3YXMgdG8gcHJvZHVj
ZSB4bWwgb3V0cHV0IHN1aXRlZCB0byB0aGUgR3JlZW5zcGFuIGNoYXJ0aW5nIHV0aWxpdHksCi0g
IC8vIHdoaWNoIGF0IHByZXNlbnQgd2lsbCBvbmx5IGNoYXJ0IHZhbHVlcyB0aGF0IGZpdCBpbiBh
IDMyLWJpdCBpbnQuIEl0Ci0gIC8vIGlzIHRoZSB1c2VyJ3MgcmVzcG9uc2liaWxpdHkgdG8gcmVz
dHJpY3QgdGhlaXIgdmFsdWVzIHRvIDMyLWJpdCBpbnRzCi0gIC8vIGlmIHRoZXkgaW50ZW5kIHRo
ZW0gdG8gYmUgdXNlZCB3aXRoIEdyZWVuc3Bhbi4KLSAgc3RhdGljIHZvaWQgUmVjb3JkUHJvcGVy
dHkoY29uc3QgY2hhcioga2V5LCBjb25zdCBjaGFyKiB2YWx1ZSk7Ci0gIHN0YXRpYyB2b2lkIFJl
Y29yZFByb3BlcnR5KGNvbnN0IGNoYXIqIGtleSwgaW50IHZhbHVlKTsKKyAgLy8gTG9ncyBhIHBy
b3BlcnR5IGZvciB0aGUgY3VycmVudCB0ZXN0LCB0ZXN0IGNhc2UsIG9yIGZvciB0aGUgZW50aXJl
CisgIC8vIGludm9jYXRpb24gb2YgdGhlIHRlc3QgcHJvZ3JhbSB3aGVuIHVzZWQgb3V0c2lkZSBv
ZiB0aGUgY29udGV4dCBvZiBhCisgIC8vIHRlc3QgY2FzZS4gIE9ubHkgdGhlIGxhc3QgdmFsdWUg
Zm9yIGEgZ2l2ZW4ga2V5IGlzIHJlbWVtYmVyZWQuICBUaGVzZQorICAvLyBhcmUgcHVibGljIHN0
YXRpYyBzbyB0aGV5IGNhbiBiZSBjYWxsZWQgZnJvbSB1dGlsaXR5IGZ1bmN0aW9ucyB0aGF0IGFy
ZQorICAvLyBub3QgbWVtYmVycyBvZiB0aGUgdGVzdCBmaXh0dXJlLiAgQ2FsbHMgdG8gUmVjb3Jk
UHJvcGVydHkgbWFkZSBkdXJpbmcKKyAgLy8gbGlmZXNwYW4gb2YgdGhlIHRlc3QgKGZyb20gdGhl
IG1vbWVudCBpdHMgY29uc3RydWN0b3Igc3RhcnRzIHRvIHRoZQorICAvLyBtb21lbnQgaXRzIGRl
c3RydWN0b3IgZmluaXNoZXMpIHdpbGwgYmUgb3V0cHV0IGluIFhNTCBhcyBhdHRyaWJ1dGVzIG9m
CisgIC8vIHRoZSA8dGVzdGNhc2U+IGVsZW1lbnQuICBQcm9wZXJ0aWVzIHJlY29yZGVkIGZyb20g
Zml4dHVyZSdzCisgIC8vIFNldFVwVGVzdENhc2Ugb3IgVGVhckRvd25UZXN0Q2FzZSBhcmUgbG9n
Z2VkIGFzIGF0dHJpYnV0ZXMgb2YgdGhlCisgIC8vIGNvcnJlc3BvbmRpbmcgPHRlc3RzdWl0ZT4g
ZWxlbWVudC4gIENhbGxzIHRvIFJlY29yZFByb3BlcnR5IG1hZGUgaW4gdGhlCisgIC8vIGdsb2Jh
bCBjb250ZXh0IChiZWZvcmUgb3IgYWZ0ZXIgaW52b2NhdGlvbiBvZiBSVU5fQUxMX1RFU1RTIGFu
ZCBmcm9tCisgIC8vIFNldFVwL1RlYXJEb3duIG1ldGhvZCBvZiBFbnZpcm9ubWVudCBvYmplY3Rz
IHJlZ2lzdGVyZWQgd2l0aCBHb29nbGUKKyAgLy8gVGVzdCkgd2lsbCBiZSBvdXRwdXQgYXMgYXR0
cmlidXRlcyBvZiB0aGUgPHRlc3RzdWl0ZXM+IGVsZW1lbnQuCisgIHN0YXRpYyB2b2lkIFJlY29y
ZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1
ZSk7CisgIHN0YXRpYyB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXks
IGludCB2YWx1ZSk7CiAKICBwcm90ZWN0ZWQ6CiAgIC8vIENyZWF0ZXMgYSBUZXN0IG9iamVjdC4K
QEAgLTQxNywyMCArNDg2LDIzIEBAIGNsYXNzIEdURVNUX0FQSV8gVGVzdCB7CiAgIC8vIFNldHMg
dXAsIGV4ZWN1dGVzLCBhbmQgdGVhcnMgZG93biB0aGUgdGVzdC4KICAgdm9pZCBSdW4oKTsKIAot
ICAvLyBVc2VzIGEgR1Rlc3RGbGFnU2F2ZXIgdG8gc2F2ZSBhbmQgcmVzdG9yZSBhbGwgR29vZ2xl
IFRlc3QgZmxhZ3MuCi0gIGNvbnN0IGludGVybmFsOjpHVGVzdEZsYWdTYXZlciogY29uc3QgZ3Rl
c3RfZmxhZ19zYXZlcl87CisgIC8vIERlbGV0ZXMgc2VsZi4gIFdlIGRlbGliZXJhdGVseSBwaWNr
IGFuIHVudXN1YWwgbmFtZSBmb3IgdGhpcworICAvLyBpbnRlcm5hbCBtZXRob2QgdG8gYXZvaWQg
Y2xhc2hpbmcgd2l0aCBuYW1lcyB1c2VkIGluIHVzZXIgVEVTVHMuCisgIHZvaWQgRGVsZXRlU2Vs
Zl8oKSB7IGRlbGV0ZSB0aGlzOyB9CisKKyAgY29uc3QgaW50ZXJuYWw6OnNjb3BlZF9wdHI8IEdU
RVNUX0ZMQUdfU0FWRVJfID4gZ3Rlc3RfZmxhZ19zYXZlcl87CiAKLSAgLy8gT2Z0ZW4gYSB1c2Vy
IG1pcy1zcGVsbHMgU2V0VXAoKSBhcyBTZXR1cCgpIGFuZCBzcGVuZHMgYSBsb25nIHRpbWUKKyAg
Ly8gT2Z0ZW4gYSB1c2VyIG1pc3NwZWxscyBTZXRVcCgpIGFzIFNldHVwKCkgYW5kIHNwZW5kcyBh
IGxvbmcgdGltZQogICAvLyB3b25kZXJpbmcgd2h5IGl0IGlzIG5ldmVyIGNhbGxlZCBieSBHb29n
bGUgVGVzdC4gIFRoZSBkZWNsYXJhdGlvbiBvZgogICAvLyB0aGUgZm9sbG93aW5nIG1ldGhvZCBp
cyBzb2xlbHkgZm9yIGNhdGNoaW5nIHN1Y2ggYW4gZXJyb3IgYXQKICAgLy8gY29tcGlsZSB0aW1l
OgogICAvLwogICAvLyAgIC0gVGhlIHJldHVybiB0eXBlIGlzIGRlbGliZXJhdGVseSBjaG9zZW4g
dG8gYmUgbm90IHZvaWQsIHNvIGl0Ci0gIC8vICAgd2lsbCBiZSBhIGNvbmZsaWN0IGlmIGEgdXNl
ciBkZWNsYXJlcyB2b2lkIFNldHVwKCkgaW4gaGlzIHRlc3QKLSAgLy8gICBmaXh0dXJlLgorICAv
LyAgIHdpbGwgYmUgYSBjb25mbGljdCBpZiB2b2lkIFNldHVwKCkgaXMgZGVjbGFyZWQgaW4gdGhl
IHVzZXIncworICAvLyAgIHRlc3QgZml4dHVyZS4KICAgLy8KICAgLy8gICAtIFRoaXMgbWV0aG9k
IGlzIHByaXZhdGUsIHNvIGl0IHdpbGwgYmUgYW5vdGhlciBjb21waWxlciBlcnJvcgotICAvLyAg
IGlmIGEgdXNlciBjYWxscyBpdCBmcm9tIGhpcyB0ZXN0IGZpeHR1cmUuCisgIC8vICAgaWYgdGhl
IG1ldGhvZCBpcyBjYWxsZWQgZnJvbSB0aGUgdXNlcidzIHRlc3QgZml4dHVyZS4KICAgLy8KICAg
Ly8gRE8gTk9UIE9WRVJSSURFIFRISVMgRlVOQ1RJT04uCiAgIC8vCkBAIC00NTQsNyArNTI2LDcg
QEAgY2xhc3MgVGVzdFByb3BlcnR5IHsKICAgLy8gQyd0b3IuICBUZXN0UHJvcGVydHkgZG9lcyBO
T1QgaGF2ZSBhIGRlZmF1bHQgY29uc3RydWN0b3IuCiAgIC8vIEFsd2F5cyB1c2UgdGhpcyBjb25z
dHJ1Y3RvciAod2l0aCBwYXJhbWV0ZXJzKSB0byBjcmVhdGUgYQogICAvLyBUZXN0UHJvcGVydHkg
b2JqZWN0LgotICBUZXN0UHJvcGVydHkoY29uc3QgY2hhciogYV9rZXksIGNvbnN0IGNoYXIqIGFf
dmFsdWUpIDoKKyAgVGVzdFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBhX2tleSwgY29uc3Qg
c3RkOjpzdHJpbmcmIGFfdmFsdWUpIDoKICAgICBrZXlfKGFfa2V5KSwgdmFsdWVfKGFfdmFsdWUp
IHsKICAgfQogCkBAIC00NjksMTUgKzU0MSwxNSBAQCBjbGFzcyBUZXN0UHJvcGVydHkgewogICB9
CiAKICAgLy8gU2V0cyBhIG5ldyB2YWx1ZSwgb3ZlcnJpZGluZyB0aGUgb25lIHN1cHBsaWVkIGlu
IHRoZSBjb25zdHJ1Y3Rvci4KLSAgdm9pZCBTZXRWYWx1ZShjb25zdCBjaGFyKiBuZXdfdmFsdWUp
IHsKKyAgdm9pZCBTZXRWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYgbmV3X3ZhbHVlKSB7CiAgICAg
dmFsdWVfID0gbmV3X3ZhbHVlOwogICB9CiAKICBwcml2YXRlOgogICAvLyBUaGUga2V5IHN1cHBs
aWVkIGJ5IHRoZSB1c2VyLgotICBpbnRlcm5hbDo6U3RyaW5nIGtleV87CisgIHN0ZDo6c3RyaW5n
IGtleV87CiAgIC8vIFRoZSB2YWx1ZSBzdXBwbGllZCBieSB0aGUgdXNlci4KLSAgaW50ZXJuYWw6
OlN0cmluZyB2YWx1ZV87CisgIHN0ZDo6c3RyaW5nIHZhbHVlXzsKIH07CiAKIC8vIFRoZSByZXN1
bHQgb2YgYSBzaW5nbGUgVGVzdC4gIFRoaXMgaW5jbHVkZXMgYSBsaXN0IG9mCkBAIC01MTYsOSAr
NTg4LDggQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0UmVzdWx0IHsKICAgLy8gUmV0dXJucyB0aGUg
ZWxhcHNlZCB0aW1lLCBpbiBtaWxsaXNlY29uZHMuCiAgIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3Rp
bWUoKSBjb25zdCB7IHJldHVybiBlbGFwc2VkX3RpbWVfOyB9CiAKLSAgLy8gUmV0dXJucyB0aGUg
aS10aCB0ZXN0IHBhcnQgcmVzdWx0IGFtb25nIGFsbCB0aGUgcmVzdWx0cy4gaSBjYW4gcmFuZ2UK
LSAgLy8gZnJvbSAwIHRvIHRlc3RfcHJvcGVydHlfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGlu
IHRoYXQgcmFuZ2UsIGFib3J0cwotICAvLyB0aGUgcHJvZ3JhbS4KKyAgLy8gUmV0dXJucyB0aGUg
aS10aCB0ZXN0IHBhcnQgcmVzdWx0IGFtb25nIGFsbCB0aGUgcmVzdWx0cy4gaSBjYW4gcmFuZ2Ug
ZnJvbSAwCisgIC8vIHRvIHRvdGFsX3BhcnRfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRo
YXQgcmFuZ2UsIGFib3J0cyB0aGUgcHJvZ3JhbS4KICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIEdl
dFRlc3RQYXJ0UmVzdWx0KGludCBpKSBjb25zdDsKIAogICAvLyBSZXR1cm5zIHRoZSBpLXRoIHRl
c3QgcHJvcGVydHkuIGkgY2FuIHJhbmdlIGZyb20gMCB0bwpAQCAtNTI4LDEzICs1OTksMTQgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBUZXN0UmVzdWx0IHsKIAogIHByaXZhdGU6CiAgIGZyaWVuZCBjbGFz
cyBUZXN0SW5mbzsKKyAgZnJpZW5kIGNsYXNzIFRlc3RDYXNlOwogICBmcmllbmQgY2xhc3MgVW5p
dFRlc3Q7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6RGVmYXVsdEdsb2JhbFRlc3RQYXJ0UmVz
dWx0UmVwb3J0ZXI7CiAgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6RXhlY0RlYXRoVGVzdDsKLSAg
ZnJpZW5kIGNsYXNzIGludGVybmFsOjpUZXN0SW5mb0ltcGw7CiAgIGZyaWVuZCBjbGFzcyBpbnRl
cm5hbDo6VGVzdFJlc3VsdEFjY2Vzc29yOwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlVuaXRU
ZXN0SW1wbDsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpXaW5kb3dzRGVhdGhUZXN0OworICBm
cmllbmQgY2xhc3MgaW50ZXJuYWw6OkZ1Y2hzaWFEZWF0aFRlc3Q7CiAKICAgLy8gR2V0cyB0aGUg
dmVjdG9yIG9mIFRlc3RQYXJ0UmVzdWx0cy4KICAgY29uc3Qgc3RkOjp2ZWN0b3I8VGVzdFBhcnRS
ZXN1bHQ+JiB0ZXN0X3BhcnRfcmVzdWx0cygpIGNvbnN0IHsKQEAgLTU1MywxMyArNjI1LDE2IEBA
IGNsYXNzIEdURVNUX0FQSV8gVGVzdFJlc3VsdCB7CiAgIC8vIGEgbm9uLWZhdGFsIGZhaWx1cmUg
aWYgaW52YWxpZCAoZS5nLiwgaWYgaXQgY29uZmxpY3RzIHdpdGggcmVzZXJ2ZWQKICAgLy8ga2V5
IG5hbWVzKS4gSWYgYSBwcm9wZXJ0eSBpcyBhbHJlYWR5IHJlY29yZGVkIGZvciB0aGUgc2FtZSBr
ZXksIHRoZQogICAvLyB2YWx1ZSB3aWxsIGJlIHVwZGF0ZWQsIHJhdGhlciB0aGFuIHN0b3Jpbmcg
bXVsdGlwbGUgdmFsdWVzIGZvciB0aGUgc2FtZQotICAvLyBrZXkuCi0gIHZvaWQgUmVjb3JkUHJv
cGVydHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5KTsKKyAgLy8ga2V5LiAgeG1s
X2VsZW1lbnQgc3BlY2lmaWVzIHRoZSBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvcGVydHkgaXMg
YmVpbmcKKyAgLy8gcmVjb3JkZWQgYW5kIGlzIHVzZWQgZm9yIHZhbGlkYXRpb24uCisgIHZvaWQg
UmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50LAorICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSk7CiAKICAgLy8g
QWRkcyBhIGZhaWx1cmUgaWYgdGhlIGtleSBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBvZiBHb29n
bGUgVGVzdAogICAvLyB0ZXN0Y2FzZSB0YWdzLiAgUmV0dXJucyB0cnVlIGlmIHRoZSBwcm9wZXJ0
eSBpcyB2YWxpZC4KLSAgLy8gVE9ETyhydXNzcik6IFZhbGlkYXRlIGF0dHJpYnV0ZSBuYW1lcyBh
cmUgbGVnYWwgYW5kIGh1bWFuIHJlYWRhYmxlLgotICBzdGF0aWMgYm9vbCBWYWxpZGF0ZVRlc3RQ
cm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpOworICAvLyBGSVhNRTog
VmFsaWRhdGUgYXR0cmlidXRlIG5hbWVzIGFyZSBsZWdhbCBhbmQgaHVtYW4gcmVhZGFibGUuCisg
IHN0YXRpYyBib29sIFZhbGlkYXRlVGVzdFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiB4bWxf
ZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFBy
b3BlcnR5JiB0ZXN0X3Byb3BlcnR5KTsKIAogICAvLyBBZGRzIGEgdGVzdCBwYXJ0IHJlc3VsdCB0
byB0aGUgbGlzdC4KICAgdm9pZCBBZGRUZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3Vs
dCYgdGVzdF9wYXJ0X3Jlc3VsdCk7CkBAIC02MTEsMjAgKzY4NiwzOSBAQCBjbGFzcyBHVEVTVF9B
UElfIFRlc3RJbmZvIHsKICAgflRlc3RJbmZvKCk7CiAKICAgLy8gUmV0dXJucyB0aGUgdGVzdCBj
YXNlIG5hbWUuCi0gIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lKCkgY29uc3Q7CisgIGNvbnN0
IGNoYXIqIHRlc3RfY2FzZV9uYW1lKCkgY29uc3QgeyByZXR1cm4gdGVzdF9jYXNlX25hbWVfLmNf
c3RyKCk7IH0KIAogICAvLyBSZXR1cm5zIHRoZSB0ZXN0IG5hbWUuCi0gIGNvbnN0IGNoYXIqIG5h
bWUoKSBjb25zdDsKKyAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG5hbWVfLmNf
c3RyKCk7IH0KKworICAvLyBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdHlwZSwg
b3IgTlVMTCBpZiB0aGlzIGlzIG5vdCBhIHR5cGVkCisgIC8vIG9yIGEgdHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3QuCisgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0oKSBjb25zdCB7CisgICAgaWYgKHR5
cGVfcGFyYW1fLmdldCgpICE9IE5VTEwpCisgICAgICByZXR1cm4gdHlwZV9wYXJhbV8tPmNfc3Ry
KCk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICAvLyBSZXR1cm5zIHRoZSB0ZXh0IHJlcHJl
c2VudGF0aW9uIG9mIHRoZSB2YWx1ZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYgdGhpcworICAvLyBp
cyBub3QgYSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisgIGNvbnN0IGNoYXIqIHZhbHVlX3Bh
cmFtKCkgY29uc3QgeworICAgIGlmICh2YWx1ZV9wYXJhbV8uZ2V0KCkgIT0gTlVMTCkKKyAgICAg
IHJldHVybiB2YWx1ZV9wYXJhbV8tPmNfc3RyKCk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KIAot
ICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNhc2UgY29tbWVudC4KLSAgY29uc3QgY2hhciogdGVzdF9j
YXNlX2NvbW1lbnQoKSBjb25zdDsKKyAgLy8gUmV0dXJucyB0aGUgZmlsZSBuYW1lIHdoZXJlIHRo
aXMgdGVzdCBpcyBkZWZpbmVkLgorICBjb25zdCBjaGFyKiBmaWxlKCkgY29uc3QgeyByZXR1cm4g
bG9jYXRpb25fLmZpbGUuY19zdHIoKTsgfQogCi0gIC8vIFJldHVybnMgdGhlIHRlc3QgY29tbWVu
dC4KLSAgY29uc3QgY2hhciogY29tbWVudCgpIGNvbnN0OworICAvLyBSZXR1cm5zIHRoZSBsaW5l
IHdoZXJlIHRoaXMgdGVzdCBpcyBkZWZpbmVkLgorICBpbnQgbGluZSgpIGNvbnN0IHsgcmV0dXJu
IGxvY2F0aW9uXy5saW5lOyB9CiAKLSAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBzaG91
bGQgcnVuLCB0aGF0IGlzIGlmIHRoZSB0ZXN0IGlzIG5vdCBkaXNhYmxlZAotICAvLyAob3IgaXQg
aXMgZGlzYWJsZWQgYnV0IHRoZSBhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnIGhhcyBiZWVu
IHNwZWNpZmllZCkKLSAgLy8gYW5kIGl0cyBmdWxsIG5hbWUgbWF0Y2hlcyB0aGUgdXNlci1zcGVj
aWZpZWQgZmlsdGVyLgorICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIHRlc3Qgc2hvdWxkIG5vdCBi
ZSBydW4gYmVjYXVzZSBpdCdzIGluIGFub3RoZXIgc2hhcmQuCisgIGJvb2wgaXNfaW5fYW5vdGhl
cl9zaGFyZCgpIGNvbnN0IHsgcmV0dXJuIGlzX2luX2Fub3RoZXJfc2hhcmRfOyB9CisKKyAgLy8g
UmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBzaG91bGQgcnVuLCB0aGF0IGlzIGlmIHRoZSB0ZXN0
IGlzIG5vdAorICAvLyBkaXNhYmxlZCAob3IgaXQgaXMgZGlzYWJsZWQgYnV0IHRoZSBhbHNvX3J1
bl9kaXNhYmxlZF90ZXN0cyBmbGFnIGhhcworICAvLyBiZWVuIHNwZWNpZmllZCkgYW5kIGl0cyBm
dWxsIG5hbWUgbWF0Y2hlcyB0aGUgdXNlci1zcGVjaWZpZWQgZmlsdGVyLgogICAvLwogICAvLyBH
b29nbGUgVGVzdCBhbGxvd3MgdGhlIHVzZXIgdG8gZmlsdGVyIHRoZSB0ZXN0cyBieSB0aGVpciBm
dWxsIG5hbWVzLgogICAvLyBUaGUgZnVsbCBuYW1lIG9mIGEgdGVzdCBCYXIgaW4gdGVzdCBjYXNl
IEZvbyBpcyBkZWZpbmVkIGFzCkBAIC02MzgsMTAgKzczMiwxNyBAQCBjbGFzcyBHVEVTVF9BUElf
IFRlc3RJbmZvIHsKICAgLy8KICAgLy8gRm9yIGV4YW1wbGUsICpBKjpGb28uKiBpcyBhIGZpbHRl
ciB0aGF0IG1hdGNoZXMgYW55IHN0cmluZyB0aGF0CiAgIC8vIGNvbnRhaW5zIHRoZSBjaGFyYWN0
ZXIgJ0EnIG9yIHN0YXJ0cyB3aXRoICJGb28uIi4KLSAgYm9vbCBzaG91bGRfcnVuKCkgY29uc3Q7
CisgIGJvb2wgc2hvdWxkX3J1bigpIGNvbnN0IHsgcmV0dXJuIHNob3VsZF9ydW5fOyB9CisKKyAg
Ly8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIHRlc3Qgd2lsbCBhcHBlYXIgaW4gdGhlIFhNTCByZXBv
cnQuCisgIGJvb2wgaXNfcmVwb3J0YWJsZSgpIGNvbnN0IHsKKyAgICAvLyBUaGUgWE1MIHJlcG9y
dCBpbmNsdWRlcyB0ZXN0cyBtYXRjaGluZyB0aGUgZmlsdGVyLCBleGNsdWRpbmcgdGhvc2UKKyAg
ICAvLyBydW4gaW4gb3RoZXIgc2hhcmRzLgorICAgIHJldHVybiBtYXRjaGVzX2ZpbHRlcl8gJiYg
IWlzX2luX2Fub3RoZXJfc2hhcmRfOworICB9CiAKICAgLy8gUmV0dXJucyB0aGUgcmVzdWx0IG9m
IHRoZSB0ZXN0LgotICBjb25zdCBUZXN0UmVzdWx0KiByZXN1bHQoKSBjb25zdDsKKyAgY29uc3Qg
VGVzdFJlc3VsdCogcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gJnJlc3VsdF87IH0KIAogIHByaXZh
dGU6CiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKQEAgLTY0OSwzNiArNzUwLDY1IEBAIGNsYXNz
IEdURVNUX0FQSV8gVGVzdEluZm8gewogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAog
ICBmcmllbmQgY2xhc3MgVGVzdDsKICAgZnJpZW5kIGNsYXNzIFRlc3RDYXNlOwotICBmcmllbmQg
Y2xhc3MgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbDsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpV
bml0VGVzdEltcGw7CisgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6U3RyZWFtaW5nTGlzdGVuZXJU
ZXN0OwogICBmcmllbmQgVGVzdEluZm8qIGludGVybmFsOjpNYWtlQW5kUmVnaXN0ZXJUZXN0SW5m
bygKLSAgICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLCBjb25zdCBjaGFyKiBuYW1lLAot
ICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX2NvbW1lbnQsIGNvbnN0IGNoYXIqIGNvbW1lbnQs
CisgICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgIGNvbnN0IGNoYXIqIG5h
bWUsCisgICAgICBjb25zdCBjaGFyKiB0eXBlX3BhcmFtLAorICAgICAgY29uc3QgY2hhciogdmFs
dWVfcGFyYW0sCisgICAgICBpbnRlcm5hbDo6Q29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24sCiAg
ICAgICBpbnRlcm5hbDo6VHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCiAgICAgICBUZXN0OjpTZXRV
cFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCiAgICAgICBUZXN0OjpUZWFyRG93blRlc3RDYXNlRnVu
YyB0ZWFyX2Rvd25fdGMsCiAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5
KTsKIAotICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IG1hdGNoZXMgdGhlIHVzZXItc3Bl
Y2lmaWVkIGZpbHRlci4KLSAgYm9vbCBtYXRjaGVzX2ZpbHRlcigpIGNvbnN0OworICAvLyBDb25z
dHJ1Y3RzIGEgVGVzdEluZm8gb2JqZWN0LiBUaGUgbmV3bHkgY29uc3RydWN0ZWQgaW5zdGFuY2Ug
YXNzdW1lcworICAvLyBvd25lcnNoaXAgb2YgdGhlIGZhY3Rvcnkgb2JqZWN0LgorICBUZXN0SW5m
byhjb25zdCBzdGQ6OnN0cmluZyYgdGVzdF9jYXNlX25hbWUsCisgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBuYW1lLAorICAgICAgICAgICBjb25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sICAg
Ly8gTlVMTCBpZiBub3QgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdAorICAgICAgICAgICBjb25z
dCBjaGFyKiBhX3ZhbHVlX3BhcmFtLCAgLy8gTlVMTCBpZiBub3QgYSB2YWx1ZS1wYXJhbWV0ZXJp
emVkIHRlc3QKKyAgICAgICAgICAgaW50ZXJuYWw6OkNvZGVMb2NhdGlvbiBhX2NvZGVfbG9jYXRp
b24sCisgICAgICAgICAgIGludGVybmFsOjpUeXBlSWQgZml4dHVyZV9jbGFzc19pZCwKKyAgICAg
ICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSk7CiAKICAgLy8gSW5jcmVt
ZW50cyB0aGUgbnVtYmVyIG9mIGRlYXRoIHRlc3RzIGVuY291bnRlcmVkIGluIHRoaXMgdGVzdCBz
bwogICAvLyBmYXIuCi0gIGludCBpbmNyZW1lbnRfZGVhdGhfdGVzdF9jb3VudCgpOworICBpbnQg
aW5jcmVtZW50X2RlYXRoX3Rlc3RfY291bnQoKSB7CisgICAgcmV0dXJuIHJlc3VsdF8uaW5jcmVt
ZW50X2RlYXRoX3Rlc3RfY291bnQoKTsKKyAgfQogCi0gIC8vIEFjY2Vzc29ycyBmb3IgdGhlIGlt
cGxlbWVudGF0aW9uIG9iamVjdC4KLSAgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbCogaW1wbCgpIHsg
cmV0dXJuIGltcGxfOyB9Ci0gIGNvbnN0IGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGltcGwoKSBj
b25zdCB7IHJldHVybiBpbXBsXzsgfQorICAvLyBDcmVhdGVzIHRoZSB0ZXN0IG9iamVjdCwgcnVu
cyBpdCwgcmVjb3JkcyBpdHMgcmVzdWx0LCBhbmQgdGhlbgorICAvLyBkZWxldGVzIGl0LgorICB2
b2lkIFJ1bigpOwogCi0gIC8vIENvbnN0cnVjdHMgYSBUZXN0SW5mbyBvYmplY3QuIFRoZSBuZXds
eSBjb25zdHJ1Y3RlZCBpbnN0YW5jZSBhc3N1bWVzCi0gIC8vIG93bmVyc2hpcCBvZiB0aGUgZmFj
dG9yeSBvYmplY3QuCi0gIFRlc3RJbmZvKGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLCBjb25z
dCBjaGFyKiBuYW1lLAotICAgICAgICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfY29tbWVudCwg
Y29uc3QgY2hhciogY29tbWVudCwKLSAgICAgICAgICAgaW50ZXJuYWw6OlR5cGVJZCBmaXh0dXJl
X2NsYXNzX2lkLAotICAgICAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5
KTsKKyAgc3RhdGljIHZvaWQgQ2xlYXJUZXN0UmVzdWx0KFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsK
KyAgICB0ZXN0X2luZm8tPnJlc3VsdF8uQ2xlYXIoKTsKKyAgfQogCi0gIC8vIEFuIG9wYXF1ZSBp
bXBsZW1lbnRhdGlvbiBvYmplY3QuCi0gIGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGltcGxfOwor
ICAvLyBUaGVzZSBmaWVsZHMgYXJlIGltbXV0YWJsZSBwcm9wZXJ0aWVzIG9mIHRoZSB0ZXN0Lgor
ICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0X2Nhc2VfbmFtZV87ICAgICAvLyBUZXN0IGNhc2UgbmFt
ZQorICBjb25zdCBzdGQ6OnN0cmluZyBuYW1lXzsgICAgICAgICAgICAgICAvLyBUZXN0IG5hbWUK
KyAgLy8gTmFtZSBvZiB0aGUgcGFyYW1ldGVyIHR5cGUsIG9yIE5VTEwgaWYgdGhpcyBpcyBub3Qg
YSB0eXBlZCBvciBhCisgIC8vIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LgorICBjb25zdCBpbnRl
cm5hbDo6c2NvcGVkX3B0cjxjb25zdCA6OnN0ZDo6c3RyaW5nPiB0eXBlX3BhcmFtXzsKKyAgLy8g
VGV4dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFsdWUgcGFyYW1ldGVyLCBvciBOVUxMIGlmIHRo
aXMgaXMgbm90IGEKKyAgLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0LgorICBjb25zdCBpbnRl
cm5hbDo6c2NvcGVkX3B0cjxjb25zdCA6OnN0ZDo6c3RyaW5nPiB2YWx1ZV9wYXJhbV87CisgIGlu
dGVybmFsOjpDb2RlTG9jYXRpb24gbG9jYXRpb25fOworICBjb25zdCBpbnRlcm5hbDo6VHlwZUlk
IGZpeHR1cmVfY2xhc3NfaWRfOyAgIC8vIElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKKyAg
Ym9vbCBzaG91bGRfcnVuXzsgICAgICAgICAgICAgICAgIC8vIFRydWUgaWZmIHRoaXMgdGVzdCBz
aG91bGQgcnVuCisgIGJvb2wgaXNfZGlzYWJsZWRfOyAgICAgICAgICAgICAgICAvLyBUcnVlIGlm
ZiB0aGlzIHRlc3QgaXMgZGlzYWJsZWQKKyAgYm9vbCBtYXRjaGVzX2ZpbHRlcl87ICAgICAgICAg
ICAgIC8vIFRydWUgaWYgdGhpcyB0ZXN0IG1hdGNoZXMgdGhlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB1c2VyLXNwZWNpZmllZCBmaWx0ZXIuCisgIGJvb2wgaXNfaW5f
YW5vdGhlcl9zaGFyZF87ICAgICAgICAvLyBXaWxsIGJlIHJ1biBpbiBhbm90aGVyIHNoYXJkLgor
ICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBjb25zdCBmYWN0b3J5XzsgIC8vIFRoZSBmYWN0
b3J5IHRoYXQgY3JlYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHRoZSB0ZXN0IG9iamVjdAorCisgIC8vIFRoaXMgZmllbGQgaXMgbXV0YWJsZSBh
bmQgbmVlZHMgdG8gYmUgcmVzZXQgYmVmb3JlIHJ1bm5pbmcgdGhlCisgIC8vIHRlc3QgZm9yIHRo
ZSBzZWNvbmQgdGltZS4KKyAgVGVzdFJlc3VsdCByZXN1bHRfOwogCiAgIEdURVNUX0RJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTl8oVGVzdEluZm8pOwogfTsKQEAgLTY5Niw5ICs4MjYsMTEgQEAgY2xh
c3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIEFyZ3VtZW50czoKICAgLy8KICAgLy8gICBu
YW1lOiAgICAgICAgIG5hbWUgb2YgdGhlIHRlc3QgY2FzZQorICAvLyAgIGFfdHlwZV9wYXJhbTog
dGhlIG5hbWUgb2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorICAvLyAg
ICAgICAgICAgICAgICAgdGhpcyBpcyBub3QgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KICAg
Ly8gICBzZXRfdXBfdGM6ICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0
aGUgdGVzdCBjYXNlCiAgIC8vICAgdGVhcl9kb3duX3RjOiBwb2ludGVyIHRvIHRoZSBmdW5jdGlv
biB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQotICBUZXN0Q2FzZShjb25zdCBjaGFyKiBu
YW1lLCBjb25zdCBjaGFyKiBjb21tZW50LAorICBUZXN0Q2FzZShjb25zdCBjaGFyKiBuYW1lLCBj
b25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sCiAgICAgICAgICAgIFRlc3Q6OlNldFVwVGVzdENhc2VG
dW5jIHNldF91cF90YywKICAgICAgICAgICAgVGVzdDo6VGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVh
cl9kb3duX3RjKTsKIApAQCAtNzA4LDggKzg0MCwxMyBAQCBjbGFzcyBHVEVTVF9BUElfIFRlc3RD
YXNlIHsKICAgLy8gR2V0cyB0aGUgbmFtZSBvZiB0aGUgVGVzdENhc2UuCiAgIGNvbnN0IGNoYXIq
IG5hbWUoKSBjb25zdCB7IHJldHVybiBuYW1lXy5jX3N0cigpOyB9CiAKLSAgLy8gUmV0dXJucyB0
aGUgdGVzdCBjYXNlIGNvbW1lbnQuCi0gIGNvbnN0IGNoYXIqIGNvbW1lbnQoKSBjb25zdCB7IHJl
dHVybiBjb21tZW50Xy5jX3N0cigpOyB9CisgIC8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHBh
cmFtZXRlciB0eXBlLCBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEKKyAgLy8gdHlwZS1wYXJhbWV0
ZXJpemVkIHRlc3QgY2FzZS4KKyAgY29uc3QgY2hhciogdHlwZV9wYXJhbSgpIGNvbnN0IHsKKyAg
ICBpZiAodHlwZV9wYXJhbV8uZ2V0KCkgIT0gTlVMTCkKKyAgICAgIHJldHVybiB0eXBlX3BhcmFt
Xy0+Y19zdHIoKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiBhbnkgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZSBzaG91bGQgcnVuLgogICBib29sIHNob3VsZF9y
dW4oKSBjb25zdCB7IHJldHVybiBzaG91bGRfcnVuXzsgfQpAQCAtNzIwLDkgKzg1NywxNSBAQCBj
bGFzcyBHVEVTVF9BUElfIFRlc3RDYXNlIHsKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxl
ZCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KICAgaW50IGZhaWxlZF90ZXN0X2NvdW50KCkgY29u
c3Q7CiAKKyAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHRoYXQgd2lsbCBi
ZSByZXBvcnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFibGVfZGlzYWJsZWRf
dGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0
ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KICAgaW50IGRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25z
dDsKIAorICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0aGUg
WE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8v
IEdldCB0aGUgbnVtYmVyIG9mIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlIHRoYXQgc2hvdWxkIHJ1
bi4KICAgaW50IHRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3Q7CiAKQEAgLTc0Miw2ICs4ODUsMTAg
QEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIHRvdGFsX3Rlc3RfY291bnQoKSAt
IDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVMTC4KICAgY29uc3QgVGVz
dEluZm8qIEdldFRlc3RJbmZvKGludCBpKSBjb25zdDsKIAorICAvLyBSZXR1cm5zIHRoZSBUZXN0
UmVzdWx0IHRoYXQgaG9sZHMgdGVzdCBwcm9wZXJ0aWVzIHJlY29yZGVkIGR1cmluZworICAvLyBl
eGVjdXRpb24gb2YgU2V0VXBUZXN0Q2FzZSBhbmQgVGVhckRvd25UZXN0Q2FzZS4KKyAgY29uc3Qg
VGVzdFJlc3VsdCYgYWRfaG9jX3Rlc3RfcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gYWRfaG9jX3Rl
c3RfcmVzdWx0XzsgfQorCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNsYXNzIFRlc3Q7CiAgIGZyaWVu
ZCBjbGFzcyBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsOwpAQCAtNzc2LDE3ICs5MjMsNDQgQEAgY2xh
c3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIC8vIFJ1bnMgZXZlcnkgdGVzdCBpbiB0aGlzIFRl
c3RDYXNlLgogICB2b2lkIFJ1bigpOwogCisgIC8vIFJ1bnMgU2V0VXBUZXN0Q2FzZSgpIGZvciB0
aGlzIFRlc3RDYXNlLiAgVGhpcyB3cmFwcGVyIGlzIG5lZWRlZAorICAvLyBmb3IgY2F0Y2hpbmcg
ZXhjZXB0aW9ucyB0aHJvd24gZnJvbSBTZXRVcFRlc3RDYXNlKCkuCisgIHZvaWQgUnVuU2V0VXBU
ZXN0Q2FzZSgpIHsgKCpzZXRfdXBfdGNfKSgpOyB9CisKKyAgLy8gUnVucyBUZWFyRG93blRlc3RD
YXNlKCkgZm9yIHRoaXMgVGVzdENhc2UuICBUaGlzIHdyYXBwZXIgaXMKKyAgLy8gbmVlZGVkIGZv
ciBjYXRjaGluZyBleGNlcHRpb25zIHRocm93biBmcm9tIFRlYXJEb3duVGVzdENhc2UoKS4KKyAg
dm9pZCBSdW5UZWFyRG93blRlc3RDYXNlKCkgeyAoKnRlYXJfZG93bl90Y18pKCk7IH0KKwogICAv
LyBSZXR1cm5zIHRydWUgaWZmIHRlc3QgcGFzc2VkLgotICBzdGF0aWMgYm9vbCBUZXN0UGFzc2Vk
KGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKTsKKyAgc3RhdGljIGJvb2wgVGVzdFBhc3NlZChj
b25zdCBUZXN0SW5mbyogdGVzdF9pbmZvKSB7CisgICAgcmV0dXJuIHRlc3RfaW5mby0+c2hvdWxk
X3J1bigpICYmIHRlc3RfaW5mby0+cmVzdWx0KCktPlBhc3NlZCgpOworICB9CiAKICAgLy8gUmV0
dXJucyB0cnVlIGlmZiB0ZXN0IGZhaWxlZC4KLSAgc3RhdGljIGJvb2wgVGVzdEZhaWxlZChjb25z
dCBUZXN0SW5mbyAqIHRlc3RfaW5mbyk7CisgIHN0YXRpYyBib29sIFRlc3RGYWlsZWQoY29uc3Qg
VGVzdEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPnNob3VsZF9ydW4o
KSAmJiB0ZXN0X2luZm8tPnJlc3VsdCgpLT5GYWlsZWQoKTsKKyAgfQorCisgIC8vIFJldHVybnMg
dHJ1ZSBpZmYgdGhlIHRlc3QgaXMgZGlzYWJsZWQgYW5kIHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhl
IFhNTAorICAvLyByZXBvcnQuCisgIHN0YXRpYyBib29sIFRlc3RSZXBvcnRhYmxlRGlzYWJsZWQo
Y29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPmlzX3Jl
cG9ydGFibGUoKSAmJiB0ZXN0X2luZm8tPmlzX2Rpc2FibGVkXzsKKyAgfQogCiAgIC8vIFJldHVy
bnMgdHJ1ZSBpZmYgdGVzdCBpcyBkaXNhYmxlZC4KLSAgc3RhdGljIGJvb2wgVGVzdERpc2FibGVk
KGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKTsKKyAgc3RhdGljIGJvb2wgVGVzdERpc2FibGVk
KGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKKyAgICByZXR1cm4gdGVzdF9pbmZvLT5pc19k
aXNhYmxlZF87CisgIH0KKworICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgdGVzdCB3aWxsIGFw
cGVhciBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgc3RhdGljIGJvb2wgVGVzdFJlcG9ydGFibGUoY29u
c3QgVGVzdEluZm8qIHRlc3RfaW5mbykgeworICAgIHJldHVybiB0ZXN0X2luZm8tPmlzX3JlcG9y
dGFibGUoKTsKKyAgfQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdGVzdCBzaG91
bGQgcnVuLgotICBzdGF0aWMgYm9vbCBTaG91bGRSdW5UZXN0KGNvbnN0IFRlc3RJbmZvICp0ZXN0
X2luZm8pOworICBzdGF0aWMgYm9vbCBTaG91bGRSdW5UZXN0KGNvbnN0IFRlc3RJbmZvKiB0ZXN0
X2luZm8pIHsKKyAgICByZXR1cm4gdGVzdF9pbmZvLT5zaG91bGRfcnVuKCk7CisgIH0KIAogICAv
LyBTaHVmZmxlcyB0aGUgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCiAgIHZvaWQgU2h1ZmZsZVRl
c3RzKGludGVybmFsOjpSYW5kb20qIHJhbmRvbSk7CkBAIC03OTUsOSArOTY5LDEwIEBAIGNsYXNz
IEdURVNUX0FQSV8gVGVzdENhc2UgewogICB2b2lkIFVuc2h1ZmZsZVRlc3RzKCk7CiAKICAgLy8g
TmFtZSBvZiB0aGUgdGVzdCBjYXNlLgotICBpbnRlcm5hbDo6U3RyaW5nIG5hbWVfOwotICAvLyBD
b21tZW50IG9uIHRoZSB0ZXN0IGNhc2UuCi0gIGludGVybmFsOjpTdHJpbmcgY29tbWVudF87Cisg
IHN0ZDo6c3RyaW5nIG5hbWVfOworICAvLyBOYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdHlwZSwgb3Ig
TlVMTCBpZiB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEKKyAgLy8gdHlwZS1wYXJhbWV0ZXJpemVk
IHRlc3QuCisgIGNvbnN0IGludGVybmFsOjpzY29wZWRfcHRyPGNvbnN0IDo6c3RkOjpzdHJpbmc+
IHR5cGVfcGFyYW1fOwogICAvLyBUaGUgdmVjdG9yIG9mIFRlc3RJbmZvcyBpbiB0aGVpciBvcmln
aW5hbCBvcmRlci4gIEl0IG93bnMgdGhlCiAgIC8vIGVsZW1lbnRzIGluIHRoZSB2ZWN0b3IuCiAg
IHN0ZDo6dmVjdG9yPFRlc3RJbmZvKj4gdGVzdF9pbmZvX2xpc3RfOwpAQCAtODEzLDEzICs5ODgs
MTYgQEAgY2xhc3MgR1RFU1RfQVBJXyBUZXN0Q2FzZSB7CiAgIGJvb2wgc2hvdWxkX3J1bl87CiAg
IC8vIEVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5NaWxsaXMgZWxhcHNl
ZF90aW1lXzsKKyAgLy8gSG9sZHMgdGVzdCBwcm9wZXJ0aWVzIHJlY29yZGVkIGR1cmluZyBleGVj
dXRpb24gb2YgU2V0VXBUZXN0Q2FzZSBhbmQKKyAgLy8gVGVhckRvd25UZXN0Q2FzZS4KKyAgVGVz
dFJlc3VsdCBhZF9ob2NfdGVzdF9yZXN1bHRfOwogCiAgIC8vIFdlIGRpc2FsbG93IGNvcHlpbmcg
VGVzdENhc2VzLgogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRlc3RDYXNlKTsK
IH07CiAKIC8vIEFuIEVudmlyb25tZW50IG9iamVjdCBpcyBjYXBhYmxlIG9mIHNldHRpbmcgdXAg
YW5kIHRlYXJpbmcgZG93biBhbgotLy8gZW52aXJvbm1lbnQuICBUaGUgdXNlciBzaG91bGQgc3Vi
Y2xhc3MgdGhpcyB0byBkZWZpbmUgaGlzIG93bgorLy8gZW52aXJvbm1lbnQuICBZb3Ugc2hvdWxk
IHN1YmNsYXNzIHRoaXMgdG8gZGVmaW5lIHlvdXIgb3duCiAvLyBlbnZpcm9ubWVudChzKS4KIC8v
CiAvLyBBbiBFbnZpcm9ubWVudCBvYmplY3QgZG9lcyB0aGUgc2V0LXVwIGFuZCB0ZWFyLWRvd24g
aW4gdmlydHVhbApAQCAtODQ5LDYgKzEwMjcsMTggQEAgY2xhc3MgRW52aXJvbm1lbnQgewogICB2
aXJ0dWFsIFNldHVwX3Nob3VsZF9iZV9zcGVsbGVkX1NldFVwKiBTZXR1cCgpIHsgcmV0dXJuIE5V
TEw7IH0KIH07CiAKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBFeGNlcHRpb24gd2hp
Y2ggY2FuIGJlIHRocm93biBmcm9tIFRlc3RFdmVudExpc3RlbmVyOjpPblRlc3RQYXJ0UmVzdWx0
LgorY2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRpb25FeGNlcHRpb24KKyAgICA6IHB1YmxpYyBpbnRl
cm5hbDo6R29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24geworIHB1YmxpYzoKKyAgZXhwbGljaXQg
QXNzZXJ0aW9uRXhjZXB0aW9uKGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiByZXN1bHQpCisgICAgICA6
IEdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uKHJlc3VsdCkge30KK307CisKKyNlbmRpZiAgLy8g
R1RFU1RfSEFTX0VYQ0VQVElPTlMKKwogLy8gVGhlIGludGVyZmFjZSBmb3IgdHJhY2luZyBleGVj
dXRpb24gb2YgdGVzdHMuIFRoZSBtZXRob2RzIGFyZSBvcmdhbml6ZWQgaW4KIC8vIHRoZSBvcmRl
ciB0aGUgY29ycmVzcG9uZGluZyBldmVudHMgYXJlIGZpcmVkLgogY2xhc3MgVGVzdEV2ZW50TGlz
dGVuZXIgewpAQCAtODc2LDcgKzEwNjYsOSBAQCBjbGFzcyBUZXN0RXZlbnRMaXN0ZW5lciB7CiAg
IC8vIEZpcmVkIGJlZm9yZSB0aGUgdGVzdCBzdGFydHMuCiAgIHZpcnR1YWwgdm9pZCBPblRlc3RT
dGFydChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSA9IDA7CiAKLSAgLy8gRmlyZWQgYWZ0ZXIg
YSBmYWlsZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VTUygpLgorICAvLyBGaXJlZCBhZnRlciBhIGZh
aWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRUVEKCkgaW52b2NhdGlvbi4KKyAgLy8gSWYgeW91IHdh
bnQgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIGZyb20gdGhpcyBmdW5jdGlvbiB0byBza2lwIHRvIHRo
ZSBuZXh0CisgIC8vIFRFU1QsIGl0IG11c3QgYmUgQXNzZXJ0aW9uRXhjZXB0aW9uIGRlZmluZWQg
YWJvdmUsIG9yIGluaGVyaXRlZCBmcm9tIGl0LgogICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJl
c3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgPSAwOwogCiAgIC8v
IEZpcmVkIGFmdGVyIHRoZSB0ZXN0IGVuZHMuCkBAIC05NjEsMTAgKzExNTMsMTAgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBUZXN0RXZlbnRMaXN0ZW5lcnMgewogCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNs
YXNzIFRlc3RDYXNlOworICBmcmllbmQgY2xhc3MgVGVzdEluZm87CiAgIGZyaWVuZCBjbGFzcyBp
bnRlcm5hbDo6RGVmYXVsdEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI7CiAgIGZyaWVuZCBj
bGFzcyBpbnRlcm5hbDo6Tm9FeGVjRGVhdGhUZXN0OwogICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6
OlRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOwotICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlRl
c3RJbmZvSW1wbDsKICAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpVbml0VGVzdEltcGw7CiAKICAg
Ly8gUmV0dXJucyByZXBlYXRlciB0aGF0IGJyb2FkY2FzdHMgdGhlIFRlc3RFdmVudExpc3RlbmVy
IGV2ZW50cyB0byBhbGwKQEAgLTEwMzIsMjIgKzEyMjQsMjMgQEAgY2xhc3MgR1RFU1RfQVBJXyBV
bml0VGVzdCB7CiAKICAgLy8gUmV0dXJucyB0aGUgVGVzdENhc2Ugb2JqZWN0IGZvciB0aGUgdGVz
dCB0aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcsCiAgIC8vIG9yIE5VTEwgaWYgbm8gdGVzdCBpcyBy
dW5uaW5nLgotICBjb25zdCBUZXN0Q2FzZSogY3VycmVudF90ZXN0X2Nhc2UoKSBjb25zdDsKKyAg
Y29uc3QgVGVzdENhc2UqIGN1cnJlbnRfdGVzdF9jYXNlKCkgY29uc3QKKyAgICAgIEdURVNUX0xP
Q0tfRVhDTFVERURfKG11dGV4Xyk7CiAKICAgLy8gUmV0dXJucyB0aGUgVGVzdEluZm8gb2JqZWN0
IGZvciB0aGUgdGVzdCB0aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcsCiAgIC8vIG9yIE5VTEwgaWYg
bm8gdGVzdCBpcyBydW5uaW5nLgotICBjb25zdCBUZXN0SW5mbyogY3VycmVudF90ZXN0X2luZm8o
KSBjb25zdDsKKyAgY29uc3QgVGVzdEluZm8qIGN1cnJlbnRfdGVzdF9pbmZvKCkgY29uc3QKKyAg
ICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4Xyk7CiAKICAgLy8gUmV0dXJucyB0aGUgcmFu
ZG9tIHNlZWQgdXNlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQgdGVzdCBydW4uCiAgIGlu
dCByYW5kb21fc2VlZCgpIGNvbnN0OwogCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgLy8g
UmV0dXJucyB0aGUgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgb2JqZWN0IHVzZWQgdG8g
a2VlcCB0cmFjayBvZgogICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFuZCBpbnN0YW50
aWF0ZSBhbmQgcmVnaXN0ZXIgdGhlbS4KICAgLy8KICAgLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJ
T04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotICBpbnRlcm5hbDo6UGFyYW1ldGVy
aXplZFRlc3RDYXNlUmVnaXN0cnkmIHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpOwotI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAorICBpbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRl
c3RDYXNlUmVnaXN0cnkmIHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpCisgICAgICBHVEVT
VF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCiAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBzdWNj
ZXNzZnVsIHRlc3QgY2FzZXMuCiAgIGludCBzdWNjZXNzZnVsX3Rlc3RfY2FzZV9jb3VudCgpIGNv
bnN0OwpAQCAtMTA2OCwxNSArMTI2MSwyNSBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0IHsK
ICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cy4KICAgaW50IGZhaWxlZF90ZXN0
X2NvdW50KCkgY29uc3Q7CiAKKyAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3Rz
IHRoYXQgd2lsbCBiZSByZXBvcnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KKyAgaW50IHJlcG9ydGFi
bGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8vIEdldHMgdGhlIG51bWJlciBv
ZiBkaXNhYmxlZCB0ZXN0cy4KICAgaW50IGRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdDsKIAor
ICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJl
cG9ydC4KKyAgaW50IHJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNvbnN0OworCiAgIC8vIEdldHMg
dGhlIG51bWJlciBvZiBhbGwgdGVzdHMuCiAgIGludCB0b3RhbF90ZXN0X2NvdW50KCkgY29uc3Q7
CiAKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRoYXQgc2hvdWxkIHJ1bi4KICAgaW50
IHRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3Q7CiAKKyAgLy8gR2V0cyB0aGUgdGltZSBvZiB0aGUg
dGVzdCBwcm9ncmFtIHN0YXJ0LCBpbiBtcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUKKyAgLy8gVU5J
WCBlcG9jaC4KKyAgVGltZUluTWlsbGlzIHN0YXJ0X3RpbWVzdGFtcCgpIGNvbnN0OworCiAgIC8v
IEdldHMgdGhlIGVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5NaWxsaXMg
ZWxhcHNlZF90aW1lKCkgY29uc3Q7CiAKQEAgLTEwOTEsNiArMTI5NCwxMCBAQCBjbGFzcyBHVEVT
VF9BUElfIFVuaXRUZXN0IHsKICAgLy8gdG90YWxfdGVzdF9jYXNlX2NvdW50KCkgLSAxLiBJZiBp
IGlzIG5vdCBpbiB0aGF0IHJhbmdlLCByZXR1cm5zIE5VTEwuCiAgIGNvbnN0IFRlc3RDYXNlKiBH
ZXRUZXN0Q2FzZShpbnQgaSkgY29uc3Q7CiAKKyAgLy8gUmV0dXJucyB0aGUgVGVzdFJlc3VsdCBj
b250YWluaW5nIGluZm9ybWF0aW9uIG9uIHRlc3QgZmFpbHVyZXMgYW5kCisgIC8vIHByb3BlcnRp
ZXMgbG9nZ2VkIG91dHNpZGUgb2YgaW5kaXZpZHVhbCB0ZXN0IGNhc2VzLgorICBjb25zdCBUZXN0
UmVzdWx0JiBhZF9ob2NfdGVzdF9yZXN1bHQoKSBjb25zdDsKKwogICAvLyBSZXR1cm5zIHRoZSBs
aXN0IG9mIGV2ZW50IGxpc3RlbmVycyB0aGF0IGNhbiBiZSB1c2VkIHRvIHRyYWNrIGV2ZW50cwog
ICAvLyBpbnNpZGUgR29vZ2xlIFRlc3QuCiAgIFRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJz
KCk7CkBAIC0xMTE0LDEyICsxMzIxLDE2IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3Qgewog
ICB2b2lkIEFkZFRlc3RQYXJ0UmVzdWx0KFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGVfbmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgbGluZV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBpbnRlcm5hbDo6U3RyaW5nJiBvc19zdGFja190cmFjZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9zX3N0YWNrX3RyYWNlKQorICAgICAg
R1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKTsKIAotICAvLyBBZGRzIGEgVGVzdFByb3BlcnR5
IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0LiBJZiB0aGUgcmVzdWx0IGFscmVhZHkK
LSAgLy8gY29udGFpbnMgYSBwcm9wZXJ0eSB3aXRoIHRoZSBzYW1lIGtleSwgdGhlIHZhbHVlIHdp
bGwgYmUgdXBkYXRlZC4KLSAgdm9pZCBSZWNvcmRQcm9wZXJ0eUZvckN1cnJlbnRUZXN0KGNvbnN0
IGNoYXIqIGtleSwgY29uc3QgY2hhciogdmFsdWUpOworICAvLyBBZGRzIGEgVGVzdFByb3BlcnR5
IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0IHdoZW4gaW52b2tlZCBmcm9tCisgIC8v
IGluc2lkZSBhIHRlc3QsIHRvIGN1cnJlbnQgVGVzdENhc2UncyBhZF9ob2NfdGVzdF9yZXN1bHRf
IHdoZW4gaW52b2tlZAorICAvLyBmcm9tIFNldFVwVGVzdENhc2Ugb3IgVGVhckRvd25UZXN0Q2Fz
ZSwgb3IgdG8gdGhlIGdsb2JhbCBwcm9wZXJ0eSBzZXQKKyAgLy8gd2hlbiBpbnZva2VkIGVsc2V3
aGVyZS4gIElmIHRoZSByZXN1bHQgYWxyZWFkeSBjb250YWlucyBhIHByb3BlcnR5IHdpdGgKKyAg
Ly8gdGhlIHNhbWUga2V5LCB0aGUgdmFsdWUgd2lsbCBiZSB1cGRhdGVkLgorICB2b2lkIFJlY29y
ZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1
ZSk7CiAKICAgLy8gR2V0cyB0aGUgaS10aCB0ZXN0IGNhc2UgYW1vbmcgYWxsIHRoZSB0ZXN0IGNh
c2VzLiBpIGNhbiByYW5nZSBmcm9tIDAgdG8KICAgLy8gdG90YWxfdGVzdF9jYXNlX2NvdW50KCkg
LSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCByZXR1cm5zIE5VTEwuCkBAIC0xMTI5LDE2
ICsxMzQwLDE4IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3QgewogICBpbnRlcm5hbDo6VW5p
dFRlc3RJbXBsKiBpbXBsKCkgeyByZXR1cm4gaW1wbF87IH0KICAgY29uc3QgaW50ZXJuYWw6OlVu
aXRUZXN0SW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIGltcGxfOyB9CiAKLSAgLy8gVGhlc2Ug
Y2xhc3NlcyBhbmQgZnVuY2lvbnMgYXJlIGZyaWVuZHMgYXMgdGhleSBuZWVkIHRvIGFjY2VzcyBw
cml2YXRlCisgIC8vIFRoZXNlIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyBhcmUgZnJpZW5kcyBhcyB0
aGV5IG5lZWQgdG8gYWNjZXNzIHByaXZhdGUKICAgLy8gbWVtYmVycyBvZiBVbml0VGVzdC4KKyAg
ZnJpZW5kIGNsYXNzIFNjb3BlZFRyYWNlOwogICBmcmllbmQgY2xhc3MgVGVzdDsKICAgZnJpZW5k
IGNsYXNzIGludGVybmFsOjpBc3NlcnRIZWxwZXI7Ci0gIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6
U2NvcGVkVHJhY2U7CisgIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6U3RyZWFtaW5nTGlzdGVuZXJU
ZXN0OworICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0
SGVscGVyOwogICBmcmllbmQgRW52aXJvbm1lbnQqIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChF
bnZpcm9ubWVudCogZW52KTsKICAgZnJpZW5kIGludGVybmFsOjpVbml0VGVzdEltcGwqIGludGVy
bmFsOjpHZXRVbml0VGVzdEltcGwoKTsKICAgZnJpZW5kIHZvaWQgaW50ZXJuYWw6OlJlcG9ydEZh
aWx1cmVJblVua25vd25Mb2NhdGlvbigKICAgICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3Vs
dF90eXBlLAotICAgICAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyYgbWVzc2FnZSk7CisgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSk7CiAKICAgLy8gQ3JlYXRlcyBhbiBlbXB0eSBVbml0
VGVzdC4KICAgVW5pdFRlc3QoKTsKQEAgLTExNDgsMTAgKzEzNjEsMTIgQEAgY2xhc3MgR1RFU1Rf
QVBJXyBVbml0VGVzdCB7CiAKICAgLy8gUHVzaGVzIGEgdHJhY2UgZGVmaW5lZCBieSBTQ09QRURf
VFJBQ0UoKSBvbiB0byB0aGUgcGVyLXRocmVhZAogICAvLyBHb29nbGUgVGVzdCB0cmFjZSBzdGFj
ay4KLSAgdm9pZCBQdXNoR1Rlc3RUcmFjZShjb25zdCBpbnRlcm5hbDo6VHJhY2VJbmZvJiB0cmFj
ZSk7CisgIHZvaWQgUHVzaEdUZXN0VHJhY2UoY29uc3QgaW50ZXJuYWw6OlRyYWNlSW5mbyYgdHJh
Y2UpCisgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwogCiAgIC8vIFBvcHMgYSB0
cmFjZSBmcm9tIHRoZSBwZXItdGhyZWFkIEdvb2dsZSBUZXN0IHRyYWNlIHN0YWNrLgotICB2b2lk
IFBvcEdUZXN0VHJhY2UoKTsKKyAgdm9pZCBQb3BHVGVzdFRyYWNlKCkKKyAgICAgIEdURVNUX0xP
Q0tfRVhDTFVERURfKG11dGV4Xyk7CiAKICAgLy8gUHJvdGVjdHMgbXV0YWJsZSBzdGF0ZSBpbiAq
aW1wbF8uICBUaGlzIGlzIG11dGFibGUgYXMgc29tZSBjb25zdAogICAvLyBtZXRob2RzIG5lZWQg
dG8gbG9jayBpdCB0b28uCkBAIC0xMjA2LDgyICsxNDIxLDQwIEBAIEdURVNUX0FQSV8gdm9pZCBJ
bml0R29vZ2xlVGVzdChpbnQqIGFyZ2MsIHdjaGFyX3QqKiBhcmd2KTsKIAogbmFtZXNwYWNlIGlu
dGVybmFsIHsKIAotLy8gVGhlc2Ugb3ZlcmxvYWRlZCB2ZXJzaW9ucyBoYW5kbGUgOjpzdGQ6OnN0
cmluZyBhbmQgOjpzdGQ6OndzdHJpbmcuCi1HVEVTVF9BUElfIGlubGluZSBTdHJpbmcgRm9ybWF0
Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyKSB7Ci0gIHJldHVybiAo
TWVzc2FnZSgpIDw8ICciJyA8PCBzdHIgPDwgJyInKS5HZXRTdHJpbmcoKTsKLX0KLQotI2lmIEdU
RVNUX0hBU19TVERfV1NUUklORwotR1RFU1RfQVBJXyBpbmxpbmUgU3RyaW5nIEZvcm1hdEZvckZh
aWx1cmVNZXNzYWdlKGNvbnN0IDo6c3RkOjp3c3RyaW5nJiB3c3RyKSB7Ci0gIHJldHVybiAoTWVz
c2FnZSgpIDw8ICJMXCIiIDw8IHdzdHIgPDwgJyInKS5HZXRTdHJpbmcoKTsKLX0KLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1NURF9XU1RSSU5HCi0KLS8vIFRoZXNlIG92ZXJsb2FkZWQgdmVyc2lvbnMg
aGFuZGxlIDo6c3RyaW5nIGFuZCA6OndzdHJpbmcuCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJ
TkcKLUdURVNUX0FQSV8gaW5saW5lIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjb25z
dCA6OnN0cmluZyYgc3RyKSB7Ci0gIHJldHVybiAoTWVzc2FnZSgpIDw8ICciJyA8PCBzdHIgPDwg
JyInKS5HZXRTdHJpbmcoKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcK
LQotI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotR1RFU1RfQVBJXyBpbmxpbmUgU3RyaW5n
IEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKGNvbnN0IDo6d3N0cmluZyYgd3N0cikgewotICByZXR1
cm4gKE1lc3NhZ2UoKSA8PCAiTFwiIiA8PCB3c3RyIDw8ICciJykuR2V0U3RyaW5nKCk7Ci19Ci0j
ZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotCi0vLyBGb3JtYXRzIGEgY29tcGFy
aXNvbiBhc3NlcnRpb24gKGUuZy4gQVNTRVJUX0VRLCBFWFBFQ1RfTFQsIGFuZCBldGMpCi0vLyBv
cGVyYW5kIHRvIGJlIHVzZWQgaW4gYSBmYWlsdXJlIG1lc3NhZ2UuICBUaGUgdHlwZSAoYnV0IG5v
dCB2YWx1ZSkKLS8vIG9mIHRoZSBvdGhlciBvcGVyYW5kIG1heSBhZmZlY3QgdGhlIGZvcm1hdC4g
IFRoaXMgYWxsb3dzIHVzIHRvCi0vLyBwcmludCBhIGNoYXIqIGFzIGEgcmF3IHBvaW50ZXIgd2hl
biBpdCBpcyBjb21wYXJlZCBhZ2FpbnN0IGFub3RoZXIKLS8vIGNoYXIqLCBhbmQgcHJpbnQgaXQg
YXMgYSBDIHN0cmluZyB3aGVuIGl0IGlzIGNvbXBhcmVkIGFnYWluc3QgYW4KLS8vIHN0ZDo6c3Ry
aW5nIG9iamVjdCwgZm9yIGV4YW1wbGUuCi0vLwotLy8gVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRp
b24gaWdub3JlcyB0aGUgdHlwZSBvZiB0aGUgb3RoZXIgb3BlcmFuZC4KLS8vIFNvbWUgc3BlY2lh
bGl6ZWQgdmVyc2lvbnMgYXJlIHVzZWQgdG8gaGFuZGxlIGZvcm1hdHRpbmcgd2lkZSBvcgotLy8g
bmFycm93IEMgc3RyaW5ncy4KLS8vCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5P
VCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCisvLyBTZXBhcmF0ZSB0aGUgZXJyb3IgZ2VuZXJhdGlu
ZyBjb2RlIGZyb20gdGhlIGNvZGUgcGF0aCB0byByZWR1Y2UgdGhlIHN0YWNrCisvLyBmcmFtZSBz
aXplIG9mIENtcEhlbHBlckVRLiBUaGlzIGhlbHBzIHJlZHVjZSB0aGUgb3ZlcmhlYWQgb2Ygc29t
ZSBzYW5pdGl6ZXJzCisvLyB3aGVuIGNhbGxpbmcgRVhQRUNUXyogaW4gYSB0aWdodCBsb29wLgog
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLVN0cmluZyBGb3JtYXRGb3JDb21w
YXJpc29uRmFpbHVyZU1lc3NhZ2UoY29uc3QgVDEmIHZhbHVlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgLyogb3RoZXJfb3BlcmFuZCAqLykgewot
ICByZXR1cm4gRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UodmFsdWUpOworQXNzZXJ0aW9uUmVzdWx0
IENtcEhlbHBlckVRRmFpbHVyZShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiBsaHMsIGNvbnN0IFQy
JiByaHMpIHsKKyAgcmV0dXJuIEVxRmFpbHVyZShsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21w
YXJpc29uRmFpbHVyZU1lc3NhZ2UobGhzLCByaHMpLAorICAgICAgICAgICAgICAgICAgIEZvcm1h
dEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShyaHMsIGxocyksCisgICAgICAgICAgICAgICAg
ICAgZmFsc2UpOwogfQogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVD
VH1fRVEuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotQXNzZXJ0aW9uUmVz
dWx0IENtcEhlbHBlckVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGV4cGVjdGVkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFQyJiBhY3R1YWwpIHsKLSNpZmRlZiBfTVNDX1ZFUgotI3By
YWdtYSB3YXJuaW5nKHB1c2gpICAgICAgICAgIC8vIFNhdmVzIHRoZSBjdXJyZW50IHdhcm5pbmcg
c3RhdGUuCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0Mzg5KSAgLy8gVGVtcG9yYXJpbHkgZGlz
YWJsZXMgd2FybmluZyBvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpZ25l
ZC91bnNpZ25lZCBtaXNtYXRjaC4KLSNlbmRpZgotCi0gIGlmIChleHBlY3RlZCA9PSBhY3R1YWwp
IHsKK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgbGhzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiByaHMpIHsKKyAgaWYgKGxocyA9PSByaHMpIHsK
ICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9CiAKLSNpZmRlZiBfTVNDX1ZFUgot
I3ByYWdtYSB3YXJuaW5nKHBvcCkgICAgICAgICAgLy8gUmVzdG9yZXMgdGhlIHdhcm5pbmcgc3Rh
dGUuCi0jZW5kaWYKLQotICByZXR1cm4gRXFGYWlsdXJlKGV4cGVjdGVkX2V4cHJlc3Npb24sCi0g
ICAgICAgICAgICAgICAgICAgYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAg
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKGV4cGVjdGVkLCBhY3R1YWwpLAotICAg
ICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShhY3R1YWws
IGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAgICAgICBmYWxzZSk7CisgIHJldHVybiBDbXBIZWxw
ZXJFUUZhaWx1cmUobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7CiB9
CiAKIC8vIFdpdGggdGhpcyBvdmVybG9hZGVkIHZlcnNpb24sIHdlIGFsbG93IGFub255bW91cyBl
bnVtcyB0byBiZSB1c2VkCiAvLyBpbiB7QVNTRVJUfEVYUEVDVH1fRVEgd2hlbiBjb21waWxlZCB3
aXRoIGdjYyA0LCBhcyBhbm9ueW1vdXMgZW51bXMKIC8vIGNhbiBiZSBpbXBsaWNpdGx5IGNhc3Qg
dG8gQmlnZ2VzdEludC4KLUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRKGNv
bnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgZXhwZWN0ZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGFjdHVhbCk7CitHVEVT
VF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVz
c2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QmlnZ2VzdEludCBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
aWdnZXN0SW50IHJocyk7CiAKIC8vIFRoZSBoZWxwZXIgY2xhc3MgZm9yIHtBU1NFUlR8RVhQRUNU
fV9FUS4gIFRoZSB0ZW1wbGF0ZSBhcmd1bWVudAogLy8gbGhzX2lzX251bGxfbGl0ZXJhbCBpcyB0
cnVlIGlmZiB0aGUgZmlyc3QgYXJndW1lbnQgdG8gQVNTRVJUX0VRKCkKQEAgLTEyOTIsMTIgKzE0
NjUsMTEgQEAgY2xhc3MgRXFIZWxwZXIgewogIHB1YmxpYzoKICAgLy8gVGhpcyB0ZW1wbGF0aXpl
ZCB2ZXJzaW9uIGlzIGZvciB0aGUgZ2VuZXJhbCBjYXNlLgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyPgotICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUoY29uc3Qg
Y2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVDEmIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVDImIGFjdHVhbCkgewotICAgIHJldHVybiBDbXBIZWxwZXJFUShleHBl
Y3RlZF9leHByZXNzaW9uLCBhY3R1YWxfZXhwcmVzc2lvbiwgZXhwZWN0ZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgIGFjdHVhbCk7CisgIHN0YXRpYyBBc3NlcnRpb25SZXN1bHQgQ29tcGFyZShj
b25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVDEmIGxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFQyJiByaHMpIHsKKyAgICByZXR1cm4gQ21wSGVscGVyRVEobGhzX2V4cHJlc3Npb24s
IHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7CiAgIH0KIAogICAvLyBXaXRoIHRoaXMgb3Zlcmxv
YWRlZCB2ZXJzaW9uLCB3ZSBhbGxvdyBhbm9ueW1vdXMgZW51bXMgdG8gYmUgdXNlZApAQCAtMTMw
NiwxNyArMTQ3OCwxNiBAQCBjbGFzcyBFcUhlbHBlciB7CiAgIC8vCiAgIC8vIEV2ZW4gdGhvdWdo
IGl0cyBib2R5IGxvb2tzIHRoZSBzYW1lIGFzIHRoZSBhYm92ZSB2ZXJzaW9uLCB3ZQogICAvLyBj
YW5ub3QgbWVyZ2UgdGhlIHR3bywgYXMgaXQgd2lsbCBtYWtlIGFub255bW91cyBlbnVtcyB1bmhh
cHB5LgotICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IENvbXBhcmUoY29uc3QgY2hhciogZXhwZWN0
ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QmlnZ2VzdEludCBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJp
Z2dlc3RJbnQgYWN0dWFsKSB7Ci0gICAgcmV0dXJuIENtcEhlbHBlckVRKGV4cGVjdGVkX2V4cHJl
c3Npb24sIGFjdHVhbF9leHByZXNzaW9uLCBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgYWN0dWFsKTsKKyAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBDb21wYXJlKGNvbnN0IGNoYXIq
IGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
aWdnZXN0SW50IGxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJ
bnQgcmhzKSB7CisgICAgcmV0dXJuIENtcEhlbHBlckVRKGxoc19leHByZXNzaW9uLCByaHNfZXhw
cmVzc2lvbiwgbGhzLCByaHMpOwogICB9CiB9OwogCiAvLyBUaGlzIHNwZWNpYWxpemF0aW9uIGlz
IHVzZWQgd2hlbiB0aGUgZmlyc3QgYXJndW1lbnQgdG8gQVNTRVJUX0VRKCkKLS8vIGlzIGEgbnVs
bCBwb2ludGVyIGxpdGVyYWwuCisvLyBpcyBhIG51bGwgcG9pbnRlciBsaXRlcmFsLCBsaWtlIE5V
TEwsIGZhbHNlLCBvciAwLgogdGVtcGxhdGUgPD4KIGNsYXNzIEVxSGVscGVyPHRydWU+IHsKICBw
dWJsaWM6CkBAIC0xMzI1LDI3ICsxNDk2LDUzIEBAIGNsYXNzIEVxSGVscGVyPHRydWU+IHsKICAg
Ly8gTk9UIGEgcG9pbnRlciwgZS5nLiBBU1NFUlRfRVEoMCwgQW5JbnRGdW5jdGlvbigpKSBvcgog
ICAvLyBFWFBFQ1RfRVEoZmFsc2UsIGFfYm9vbCkuCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDI+Ci0gIHN0YXRpYyBBc3NlcnRpb25SZXN1bHQgQ29tcGFyZShjb25zdCBjaGFy
KiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUMSYgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUMiYgYWN0dWFsKSB7Ci0gICAgcmV0dXJuIENtcEhlbHBlckVRKGV4cGVjdGVk
X2V4cHJlc3Npb24sIGFjdHVhbF9leHByZXNzaW9uLCBleHBlY3RlZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgYWN0dWFsKTsKKyAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBDb21wYXJlKAorICAg
ICAgY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCisgICAgICBjb25zdCBjaGFyKiByaHNfZXhw
cmVzc2lvbiwKKyAgICAgIGNvbnN0IFQxJiBsaHMsCisgICAgICBjb25zdCBUMiYgcmhzLAorICAg
ICAgLy8gVGhlIGZvbGxvd2luZyBsaW5lIHByZXZlbnRzIHRoaXMgb3ZlcmxvYWQgZnJvbSBiZWlu
ZyBjb25zaWRlcmVkIGlmIFQyCisgICAgICAvLyBpcyBub3QgYSBwb2ludGVyIHR5cGUuICBXZSBu
ZWVkIHRoaXMgYmVjYXVzZSBBU1NFUlRfRVEoTlVMTCwgbXlfcHRyKQorICAgICAgLy8gZXhwYW5k
cyB0byBDb21wYXJlKCIiLCAiIiwgTlVMTCwgbXlfcHRyKSwgd2hpY2ggcmVxdWlyZXMgYSBjb252
ZXJzaW9uCisgICAgICAvLyB0byBtYXRjaCB0aGUgU2VjcmV0KiBpbiB0aGUgb3RoZXIgb3Zlcmxv
YWQsIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBtYWtlCisgICAgICAvLyB0aGlzIHRlbXBsYXRlIG1h
dGNoIGJldHRlci4KKyAgICAgIHR5cGVuYW1lIEVuYWJsZUlmPCFpc19wb2ludGVyPFQyPjo6dmFs
dWU+Ojp0eXBlKiA9IDApIHsKKyAgICByZXR1cm4gQ21wSGVscGVyRVEobGhzX2V4cHJlc3Npb24s
IHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7CiAgIH0KIAotICAvLyBUaGlzIHZlcnNpb24gd2ls
bCBiZSBwaWNrZWQgd2hlbiB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvCi0gIC8vIEFTU0VSVF9FUSgp
IGlzIGEgcG9pbnRlciwgZS5nLiBBU1NFUlRfRVEoTlVMTCwgYV9wb2ludGVyKS4KLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBD
b21wYXJlKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiAvKiBleHBlY3RlZCAqLywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQyKiBhY3R1YWwpIHsKLSAgICAvLyBXZSBhbHJl
YWR5IGtub3cgdGhhdCAnZXhwZWN0ZWQnIGlzIGEgbnVsbCBwb2ludGVyLgotICAgIHJldHVybiBD
bXBIZWxwZXJFUShleHBlY3RlZF9leHByZXNzaW9uLCBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VDIqPihOVUxMKSwgYWN0dWFsKTsKKyAgLy8g
VGhpcyB2ZXJzaW9uIHdpbGwgYmUgcGlja2VkIHdoZW4gdGhlIHNlY29uZCBhcmd1bWVudCB0byBB
U1NFUlRfRVEoKSBpcyBhCisgIC8vIHBvaW50ZXIsIGUuZy4gQVNTRVJUX0VRKE5VTEwsIGFfcG9p
bnRlcikuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0
IENvbXBhcmUoCisgICAgICBjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgIGNvbnN0
IGNoYXIqIHJoc19leHByZXNzaW9uLAorICAgICAgLy8gV2UgdXNlZCB0byBoYXZlIGEgc2Vjb25k
IHRlbXBsYXRlIHBhcmFtZXRlciBpbnN0ZWFkIG9mIFNlY3JldCouICBUaGF0CisgICAgICAvLyB0
ZW1wbGF0ZSBwYXJhbWV0ZXIgd291bGQgZGVkdWNlIHRvICdsb25nJywgbWFraW5nIHRoaXMgYSBi
ZXR0ZXIgbWF0Y2gKKyAgICAgIC8vIHRoYW4gdGhlIGZpcnN0IG92ZXJsb2FkIGV2ZW4gd2l0aG91
dCB0aGUgZmlyc3Qgb3ZlcmxvYWQncyBFbmFibGVJZi4KKyAgICAgIC8vIFVuZm9ydHVuYXRlbHks
IGdjYyB3aXRoIC1XY29udmVyc2lvbi1udWxsIHdhcm5zIHdoZW4gInBhc3NpbmcgTlVMTCB0bwor
ICAgICAgLy8gbm9uLXBvaW50ZXIgYXJndW1lbnQiIChldmVuIGEgZGVkdWNlZCBpbnRlZ3JhbCBh
cmd1bWVudCksIHNvIHRoZSBvbGQKKyAgICAgIC8vIGltcGxlbWVudGF0aW9uIGNhdXNlZCB3YXJu
aW5ncyBpbiB1c2VyIGNvZGUuCisgICAgICBTZWNyZXQqIC8qIGxocyAoTlVMTCkgKi8sCisgICAg
ICBUKiByaHMpIHsKKyAgICAvLyBXZSBhbHJlYWR5IGtub3cgdGhhdCAnbGhzJyBpcyBhIG51bGwg
cG9pbnRlci4KKyAgICByZXR1cm4gQ21wSGVscGVyRVEobGhzX2V4cHJlc3Npb24sIHJoc19leHBy
ZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxUKj4oTlVMTCksIHJo
cyk7CiAgIH0KIH07CiAKKy8vIFNlcGFyYXRlIHRoZSBlcnJvciBnZW5lcmF0aW5nIGNvZGUgZnJv
bSB0aGUgY29kZSBwYXRoIHRvIHJlZHVjZSB0aGUgc3RhY2sKKy8vIGZyYW1lIHNpemUgb2YgQ21w
SGVscGVyT1AuIFRoaXMgaGVscHMgcmVkdWNlIHRoZSBvdmVyaGVhZCBvZiBzb21lIHNhbml0aXpl
cnMKKy8vIHdoZW4gY2FsbGluZyBFWFBFQ1RfT1AgaW4gYSB0aWdodCBsb29wLgordGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJPcEZh
aWx1cmUoY29uc3QgY2hhciogZXhwcjEsIGNvbnN0IGNoYXIqIGV4cHIyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgdmFsMSwgY29uc3QgVDImIHZhbDIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG9wKSB7CisgIHJl
dHVybiBBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgICAgIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhw
cjEgPDwgIikgIiA8PCBvcCA8PCAiICgiIDw8IGV4cHIyCisgICAgICAgICA8PCAiKSwgYWN0dWFs
OiAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSh2YWwxLCB2YWwyKQorICAg
ICAgICAgPDwgIiB2cyAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSh2YWwy
LCB2YWwxKTsKK30KKwogLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHRoZSBoZWxwZXIgZnVu
Y3Rpb25zIG5lZWRlZCB0byBpbXBsZW1lbnQKIC8vIEFTU0VSVF8/PyBhbmQgRVhQRUNUXz8/LiAg
SXQgaXMgaGVyZSBqdXN0IHRvIGF2b2lkIGNvcHktYW5kLXBhc3RlCiAvLyBvZiBzaW1pbGFyIGNv
ZGUuCkBAIC0xMzU2LDYgKzE1NTMsNyBAQCBjbGFzcyBFcUhlbHBlcjx0cnVlPiB7CiAvLyB3aXRo
IGdjYyA0LgogLy8KIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBB
IFVTRVIgUFJPR1JBTS4KKwogI2RlZmluZSBHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKG9wX25hbWUs
IG9wKVwKIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+XAogQXNzZXJ0aW9uUmVz
dWx0IENtcEhlbHBlciMjb3BfbmFtZShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhw
cjIsIFwKQEAgLTEzNjMsMTEgKzE1NjEsNyBAQCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyIyNv
cF9uYW1lKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwgXAogICBpZiAodmFs
MSBvcCB2YWwyKSB7XAogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7XAogICB9IGVsc2Ug
e1wKLSAgICBNZXNzYWdlIG1zZztcCi0gICAgbXNnIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEg
PDwgIikgIiAjb3AgIiAoIiA8PCBleHByMlwKLSAgICAgICAgPDwgIiksIGFjdHVhbDogIiA8PCBG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UodmFsMSwgdmFsMilcCi0gICAgICAgIDw8
ICIgdnMgIiA8PCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UodmFsMiwgdmFsMSk7
XAotICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7XAorICAgIHJldHVybiBDbXBIZWxw
ZXJPcEZhaWx1cmUoZXhwcjEsIGV4cHIyLCB2YWwxLCB2YWwyLCAjb3ApO1wKICAgfVwKIH1cCiBH
VEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXIjI29wX25hbWUoXApAQCAtMTM4MCwy
OSArMTU3NCwyOSBAQCBHVEVTVF9JTVBMX0NNUF9IRUxQRVJfKE5FLCAhPSk7CiAvLyBJbXBsZW1l
bnRzIHRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9MRQogR1RFU1RfSU1Q
TF9DTVBfSEVMUEVSXyhMRSwgPD0pOwogLy8gSW1wbGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9u
IGZvciB7QVNTRVJUfEVYUEVDVH1fTFQKLUdURVNUX0lNUExfQ01QX0hFTFBFUl8oTFQsIDwgKTsK
K0dURVNUX0lNUExfQ01QX0hFTFBFUl8oTFQsIDwpOwogLy8gSW1wbGVtZW50cyB0aGUgaGVscGVy
IGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fR0UKIEdURVNUX0lNUExfQ01QX0hFTFBFUl8o
R0UsID49KTsKIC8vIEltcGxlbWVudHMgdGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxF
WFBFQ1R9X0dUCi1HVEVTVF9JTVBMX0NNUF9IRUxQRVJfKEdULCA+ICk7CitHVEVTVF9JTVBMX0NN
UF9IRUxQRVJfKEdULCA+KTsKIAogI3VuZGVmIEdURVNUX0lNUExfQ01QX0hFTFBFUl8KIAogLy8g
VGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NUUkVRLgogLy8KIC8vIElO
VEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KLUdU
RVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGV4cGVj
dGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsKTsKK0dURVNUX0FQ
SV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Np
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBzMl9leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogczEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBzMik7CiAKIC8vIFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NF
UlR8RVhQRUNUfV9TVFJDQVNFRVEuCiAvLwogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBE
TyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQg
Q21wSGVscGVyU1RSQ0FTRUVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0
dWFsX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsKTsKK0dURVNUX0FQSV8gQXNzZXJ0
aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VFUShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHMyX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogczEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogczIpOwogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZv
ciB7QVNTRVJUfEVYUEVDVH1fU1RSTkUuCiAvLwpAQCAtMTQyNCwxMCArMTYxOCwxMCBAQCBHVEVT
VF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJDQVNFTkUoY29uc3QgY2hhciogczFf
ZXhwcmVzc2lvbiwKIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgKl9TVFJFUSBvbiB3aWRlIHN0cmlu
Z3MuCiAvLwogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNF
UiBQUk9HUkFNLgotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29u
c3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogZXhwZWN0ZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90
KiBhY3R1YWwpOworR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29u
c3QgY2hhciogczFfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHMyX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiBzMSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIHMyKTsKIAogLy8gSGVs
cGVyIGZ1bmN0aW9uIGZvciAqX1NUUk5FIG9uIHdpZGUgc3RyaW5ncy4KIC8vCkBAIC0xNDg1LDI4
ICsxNjc5LDI4IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLwogLy8gSU5URVJOQUwgSU1QTEVN
RU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgogdGVtcGxhdGUgPHR5cGVu
YW1lIFJhd1R5cGU+Ci1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRmxvYXRpbmdQb2ludEVRKGNv
bnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdUeXBlIGV4cGVjdGVkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdUeXBlIGFjdHVhbCkgewotICBj
b25zdCBGbG9hdGluZ1BvaW50PFJhd1R5cGU+IGxocyhleHBlY3RlZCksIHJocyhhY3R1YWwpOwor
QXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckZsb2F0aW5nUG9pbnRFUShjb25zdCBjaGFyKiBsaHNf
ZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJhd1R5cGUgbGhzX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSYXdUeXBlIHJoc192YWx1ZSkgeworICBjb25zdCBGbG9hdGluZ1BvaW50
PFJhd1R5cGU+IGxocyhsaHNfdmFsdWUpLCByaHMocmhzX3ZhbHVlKTsKIAogICBpZiAobGhzLkFs
bW9zdEVxdWFscyhyaHMpKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQog
Ci0gIFN0clN0cmVhbSBleHBlY3RlZF9zczsKLSAgZXhwZWN0ZWRfc3MgPDwgc3RkOjpzZXRwcmVj
aXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxSYXdUeXBlPjo6ZGlnaXRzMTAgKyAyKQotICAgICAg
ICAgICAgICA8PCBleHBlY3RlZDsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBsaHNfc3M7CisgIGxo
c19zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+Ojpk
aWdpdHMxMCArIDIpCisgICAgICAgICA8PCBsaHNfdmFsdWU7CiAKLSAgU3RyU3RyZWFtIGFjdHVh
bF9zczsKLSAgYWN0dWFsX3NzIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1p
dHM8UmF3VHlwZT46OmRpZ2l0czEwICsgMikKLSAgICAgICAgICAgIDw8IGFjdHVhbDsKKyAgOjpz
dGQ6OnN0cmluZ3N0cmVhbSByaHNfc3M7CisgIHJoc19zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihz
dGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+OjpkaWdpdHMxMCArIDIpCisgICAgICAgICA8PCBy
aHNfdmFsdWU7CiAKLSAgcmV0dXJuIEVxRmFpbHVyZShleHBlY3RlZF9leHByZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIFN0
clN0cmVhbVRvU3RyaW5nKCZleHBlY3RlZF9zcyksCi0gICAgICAgICAgICAgICAgICAgU3RyU3Ry
ZWFtVG9TdHJpbmcoJmFjdHVhbF9zcyksCisgIHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Np
b24sCisgICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAg
ICAgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJmxoc19zcyksCisgICAgICAgICAgICAgICAgICAgU3Ry
aW5nU3RyZWFtVG9TdHJpbmcoJnJoc19zcyksCiAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwog
fQogCkBAIC0xNTQ4LDkgKzE3NDIsOSBAQCBjbGFzcyBHVEVTVF9BUElfIEFzc2VydEhlbHBlciB7
CiAgICAgICAgIDogdHlwZSh0KSwgZmlsZShzcmNmaWxlKSwgbGluZShsaW5lX251bSksIG1lc3Nh
Z2UobXNnKSB7IH0KIAogICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIGNvbnN0IHR5cGU7Ci0gICAg
Y29uc3QgY2hhciogICAgICAgIGNvbnN0IGZpbGU7Ci0gICAgaW50ICAgICAgICAgICAgICAgIGNv
bnN0IGxpbmU7Ci0gICAgU3RyaW5nICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2U7CisgICAgY29u
c3QgY2hhciogY29uc3QgZmlsZTsKKyAgICBpbnQgY29uc3QgbGluZTsKKyAgICBzdGQ6OnN0cmlu
ZyBjb25zdCBtZXNzYWdlOwogCiAgICBwcml2YXRlOgogICAgIEdURVNUX0RJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTl8oQXNzZXJ0SGVscGVyRGF0YSk7CkBAIC0xNTYzLDEwICsxNzU3LDEzIEBAIGNs
YXNzIEdURVNUX0FQSV8gQXNzZXJ0SGVscGVyIHsKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
CiAKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotLy8gVGhlIGFic3RyYWN0IGJhc2UgY2xhc3Mg
dGhhdCBhbGwgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBpbmhlcml0IGZyb20uCisvLyBUaGUg
cHVyZSBpbnRlcmZhY2UgY2xhc3MgdGhhdCBhbGwgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBp
bmhlcml0IGZyb20uCisvLyBBIHZhbHVlLXBhcmFtZXRlcml6ZWQgY2xhc3MgbXVzdCBpbmhlcml0
IGZyb20gYm90aCA6OnRlc3Rpbmc6OlRlc3QgYW5kCisvLyA6OnRlc3Rpbmc6OldpdGhQYXJhbUlu
dGVyZmFjZS4gSW4gbW9zdCBjYXNlcyB0aGF0IGp1c3QgbWVhbnMgaW5oZXJpdGluZworLy8gZnJv
bSA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW0sIGJ1dCBtb3JlIGNvbXBsaWNhdGVkIHRlc3QgaGll
cmFyY2hpZXMKKy8vIG1heSBuZWVkIHRvIGluaGVyaXQgZnJvbSBUZXN0IGFuZCBXaXRoUGFyYW1J
bnRlcmZhY2UgYXQgZGlmZmVyZW50IGxldmVscy4KIC8vCi0vLyBUaGlzIGNsYXNzIGFkZHMgc3Vw
cG9ydCBmb3IgYWNjZXNzaW5nIHRoZSB0ZXN0IHBhcmFtZXRlciB2YWx1ZSB2aWEKKy8vIFRoaXMg
aW50ZXJmYWNlIGhhcyBzdXBwb3J0IGZvciBhY2Nlc3NpbmcgdGhlIHRlc3QgcGFyYW1ldGVyIHZh
bHVlIHZpYQogLy8gdGhlIEdldFBhcmFtKCkgbWV0aG9kLgogLy8KIC8vIFVzZSBpdCB3aXRoIG9u
ZSBvZiB0aGUgcGFyYW1ldGVyIGdlbmVyYXRvciBkZWZpbmluZyBmdW5jdGlvbnMsIGxpa2UgUmFu
Z2UoKSwKQEAgLTE1OTUsMTMgKzE3OTIsMjIgQEAgY2xhc3MgR1RFU1RfQVBJXyBBc3NlcnRIZWxw
ZXIgewogLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoT25lVG9UZW5SYW5nZSwgRm9vVGVzdCwg
Ojp0ZXN0aW5nOjpSYW5nZSgxLCAxMCkpOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNz
IFRlc3RXaXRoUGFyYW0gOiBwdWJsaWMgVGVzdCB7CitjbGFzcyBXaXRoUGFyYW1JbnRlcmZhY2Ug
ewogIHB1YmxpYzoKICAgdHlwZWRlZiBUIFBhcmFtVHlwZTsKKyAgdmlydHVhbCB+V2l0aFBhcmFt
SW50ZXJmYWNlKCkge30KIAogICAvLyBUaGUgY3VycmVudCBwYXJhbWV0ZXIgdmFsdWUuIElzIGFs
c28gYXZhaWxhYmxlIGluIHRoZSB0ZXN0IGZpeHR1cmUncwotICAvLyBjb25zdHJ1Y3Rvci4KLSAg
Y29uc3QgUGFyYW1UeXBlJiBHZXRQYXJhbSgpIGNvbnN0IHsgcmV0dXJuICpwYXJhbWV0ZXJfOyB9
CisgIC8vIGNvbnN0cnVjdG9yLiBUaGlzIG1lbWJlciBmdW5jdGlvbiBpcyBub24tc3RhdGljLCBl
dmVuIHRob3VnaCBpdCBvbmx5CisgIC8vIHJlZmVyZW5jZXMgc3RhdGljIGRhdGEsIHRvIHJlZHVj
ZSB0aGUgb3Bwb3J0dW5pdHkgZm9yIGluY29ycmVjdCB1c2VzCisgIC8vIGxpa2Ugd3JpdGluZyAn
V2l0aFBhcmFtSW50ZXJmYWNlPGJvb2w+OjpHZXRQYXJhbSgpJyBmb3IgYSB0ZXN0IHRoYXQKKyAg
Ly8gdXNlcyBhIGZpeHR1cmUgd2hvc2UgcGFyYW1ldGVyIHR5cGUgaXMgaW50LgorICBjb25zdCBQ
YXJhbVR5cGUmIEdldFBhcmFtKCkgY29uc3QgeworICAgIEdURVNUX0NIRUNLXyhwYXJhbWV0ZXJf
ICE9IE5VTEwpCisgICAgICAgIDw8ICJHZXRQYXJhbSgpIGNhbiBvbmx5IGJlIGNhbGxlZCBpbnNp
ZGUgYSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QgIgorICAgICAgICA8PCAiLS0gZGlkIHlvdSBp
bnRlbmQgdG8gd3JpdGUgVEVTVF9QIGluc3RlYWQgb2YgVEVTVF9GPyI7CisgICAgcmV0dXJuICpw
YXJhbWV0ZXJfOworICB9CiAKICBwcml2YXRlOgogICAvLyBTZXRzIHBhcmFtZXRlciB2YWx1ZS4g
VGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgbWFraW5nIHN1cmUgdGhlIHZhbHVlCkBAIC0x
NjEzLDE0ICsxODE5LDE5IEBAIGNsYXNzIFRlc3RXaXRoUGFyYW0gOiBwdWJsaWMgVGVzdCB7CiAg
IC8vIFN0YXRpYyB2YWx1ZSB1c2VkIGZvciBhY2Nlc3NpbmcgcGFyYW1ldGVyIGR1cmluZyBhIHRl
c3QgbGlmZXRpbWUuCiAgIHN0YXRpYyBjb25zdCBQYXJhbVR5cGUqIHBhcmFtZXRlcl87CiAKLSAg
Ly8gVGVzdENsYXNzIG11c3QgYmUgYSBzdWJjbGFzcyBvZiBUZXN0V2l0aFBhcmFtPFQ+LgorICAv
LyBUZXN0Q2xhc3MgbXVzdCBiZSBhIHN1YmNsYXNzIG9mIFdpdGhQYXJhbUludGVyZmFjZTxUPiBh
bmQgVGVzdC4KICAgdGVtcGxhdGUgPGNsYXNzIFRlc3RDbGFzcz4gZnJpZW5kIGNsYXNzIGludGVy
bmFsOjpQYXJhbWV0ZXJpemVkVGVzdEZhY3Rvcnk7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLWNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOworY29uc3Qg
VCogV2l0aFBhcmFtSW50ZXJmYWNlPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIAotI2VuZGlmICAv
LyBHVEVTVF9IQVNfUEFSQU1fVEVTVAorLy8gTW9zdCB2YWx1ZS1wYXJhbWV0ZXJpemVkIGNsYXNz
ZXMgY2FuIGlnbm9yZSB0aGUgZXhpc3RlbmNlIG9mCisvLyBXaXRoUGFyYW1JbnRlcmZhY2UsIGFu
ZCBjYW4ganVzdCBpbmhlcml0IGZyb20gOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtLgorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFRlc3RXaXRoUGFyYW0gOiBwdWJsaWMgVGVzdCwgcHVi
bGljIFdpdGhQYXJhbUludGVyZmFjZTxUPiB7Cit9OwogCiAvLyBNYWNyb3MgZm9yIGluZGljYXRp
bmcgc3VjY2Vzcy9mYWlsdXJlIGluIHRlc3QgY29kZS4KIApAQCAtMTY0MCwyMyArMTg1MSwyMyBA
QCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJfID0gTlVMTDsKIC8vIHVzdWFs
bHkgd2FudCB0aGUgZmFpbC1mYXN0IGJlaGF2aW9yIG9mIEZBSUwgYW5kIEFTU0VSVF8qLCBidXQg
dGhvc2UKIC8vIHdyaXRpbmcgZGF0YS1kcml2ZW4gdGVzdHMgb2Z0ZW4gZmluZCB0aGVtc2VsdmVz
IHVzaW5nIEFERF9GQUlMVVJFCiAvLyBhbmQgRVhQRUNUXyogbW9yZS4KLS8vCi0vLyBFeGFtcGxl
czoKLS8vCi0vLyAgIEVYUEVDVF9UUlVFKHNlcnZlci5TdGF0dXNJc09LKCkpOwotLy8gICBBU1NF
UlRfRkFMU0Uoc2VydmVyLkhhc1BlbmRpbmdSZXF1ZXN0KHBvcnQpKQotLy8gICAgICAgPDwgIlRo
ZXJlIGFyZSBzdGlsbCBwZW5kaW5nIHJlcXVlc3RzICIgPDwgIm9uIHBvcnQgIiA8PCBwb3J0Owog
CiAvLyBHZW5lcmF0ZXMgYSBub25mYXRhbCBmYWlsdXJlIHdpdGggYSBnZW5lcmljIG1lc3NhZ2Uu
CiAjZGVmaW5lIEFERF9GQUlMVVJFKCkgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8oIkZhaWxlZCIp
CiAKKy8vIEdlbmVyYXRlcyBhIG5vbmZhdGFsIGZhaWx1cmUgYXQgdGhlIGdpdmVuIHNvdXJjZSBm
aWxlIGxvY2F0aW9uIHdpdGgKKy8vIGEgZ2VuZXJpYyBtZXNzYWdlLgorI2RlZmluZSBBRERfRkFJ
TFVSRV9BVChmaWxlLCBsaW5lKSBcCisgIEdURVNUX01FU1NBR0VfQVRfKGZpbGUsIGxpbmUsICJG
YWlsZWQiLCBcCisgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ6
OmtOb25GYXRhbEZhaWx1cmUpCisKIC8vIEdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUgd2l0aCBh
IGdlbmVyaWMgbWVzc2FnZS4KICNkZWZpbmUgR1RFU1RfRkFJTCgpIEdURVNUX0ZBVEFMX0ZBSUxV
UkVfKCJGYWlsZWQiKQogCiAvLyBEZWZpbmUgdGhpcyBtYWNybyB0byAxIHRvIG9taXQgdGhlIGRl
ZmluaXRpb24gb2YgRkFJTCgpLCB3aGljaCBpcyBhCiAvLyBnZW5lcmljIG5hbWUgYW5kIGNsYXNo
ZXMgd2l0aCBzb21lIG90aGVyIGxpYnJhcmllcy4KICNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfRkFJ
TAotI2RlZmluZSBGQUlMKCkgR1RFU1RfRkFJTCgpCisjIGRlZmluZSBGQUlMKCkgR1RFU1RfRkFJ
TCgpCiAjZW5kaWYKIAogLy8gR2VuZXJhdGVzIGEgc3VjY2VzcyB3aXRoIGEgZ2VuZXJpYyBtZXNz
YWdlLgpAQCAtMTY2NSw3ICsxODc2LDcgQEAgY29uc3QgVCogVGVzdFdpdGhQYXJhbTxUPjo6cGFy
YW1ldGVyXyA9IE5VTEw7CiAvLyBEZWZpbmUgdGhpcyBtYWNybyB0byAxIHRvIG9taXQgdGhlIGRl
ZmluaXRpb24gb2YgU1VDQ0VFRCgpLCB3aGljaAogLy8gaXMgYSBnZW5lcmljIG5hbWUgYW5kIGNs
YXNoZXMgd2l0aCBzb21lIG90aGVyIGxpYnJhcmllcy4KICNpZiAhR1RFU1RfRE9OVF9ERUZJTkVf
U1VDQ0VFRAotI2RlZmluZSBTVUNDRUVEKCkgR1RFU1RfU1VDQ0VFRCgpCisjIGRlZmluZSBTVUND
RUVEKCkgR1RFU1RfU1VDQ0VFRCgpCiAjZW5kaWYKIAogLy8gTWFjcm9zIGZvciB0ZXN0aW5nIGV4
Y2VwdGlvbnMuCkBAIC0xNzA2LDE4ICsxOTE3LDE0IEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08
VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogICBHVEVTVF9URVNUX0JPT0xFQU5fKCEoY29uZGl0aW9u
KSwgI2NvbmRpdGlvbiwgdHJ1ZSwgZmFsc2UsIFwKICAgICAgICAgICAgICAgICAgICAgICBHVEVT
VF9GQVRBTF9GQUlMVVJFXykKIAotLy8gSW5jbHVkZXMgdGhlIGF1dG8tZ2VuZXJhdGVkIGhlYWRl
ciB0aGF0IGltcGxlbWVudHMgYSBmYW1pbHkgb2YKLS8vIGdlbmVyaWMgcHJlZGljYXRlIGFzc2Vy
dGlvbiBtYWNyb3MuCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmg+Ci0KIC8vIE1h
Y3JvcyBmb3IgdGVzdGluZyBlcXVhbGl0aWVzIGFuZCBpbmVxdWFsaXRpZXMuCiAvLwotLy8gICAg
KiB7QVNTRVJUfEVYUEVDVH1fRVEoZXhwZWN0ZWQsIGFjdHVhbCk6IFRlc3RzIHRoYXQgZXhwZWN0
ZWQgPT0gYWN0dWFsCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9ORSh2MSwgdjIpOiAgICAgICAg
ICAgVGVzdHMgdGhhdCB2MSAhPSB2MgotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTFQodjEsIHYy
KTogICAgICAgICAgIFRlc3RzIHRoYXQgdjEgPCB2MgotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1f
TEUodjEsIHYyKTogICAgICAgICAgIFRlc3RzIHRoYXQgdjEgPD0gdjIKLS8vICAgICoge0FTU0VS
VHxFWFBFQ1R9X0dUKHYxLCB2Mik6ICAgICAgICAgICBUZXN0cyB0aGF0IHYxID4gdjIKLS8vICAg
ICoge0FTU0VSVHxFWFBFQ1R9X0dFKHYxLCB2Mik6ICAgICAgICAgICBUZXN0cyB0aGF0IHYxID49
IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9FUSh2MSwgdjIpOiBUZXN0cyB0aGF0IHYxID09
IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9ORSh2MSwgdjIpOiBUZXN0cyB0aGF0IHYxICE9
IHYyCisvLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9MVCh2MSwgdjIpOiBUZXN0cyB0aGF0IHYxIDwg
djIKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0xFKHYxLCB2Mik6IFRlc3RzIHRoYXQgdjEgPD0g
djIKKy8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0dUKHYxLCB2Mik6IFRlc3RzIHRoYXQgdjEgPiB2
MgorLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fR0UodjEsIHYyKTogVGVzdHMgdGhhdCB2MSA+PSB2
MgogLy8KIC8vIFdoZW4gdGhleSBhcmUgbm90LCBHb29nbGUgVGVzdCBwcmludHMgYm90aCB0aGUg
dGVzdGVkIGV4cHJlc3Npb25zIGFuZAogLy8gdGhlaXIgYWN0dWFsIHZhbHVlcy4gIFRoZSB2YWx1
ZXMgbXVzdCBiZSBjb21wYXRpYmxlIGJ1aWx0LWluIHR5cGVzLApAQCAtMTczOSw4ICsxOTQ2LDgg
QEAgY29uc3QgVCogVGVzdFdpdGhQYXJhbTxUPjo6cGFyYW1ldGVyXyA9IE5VTEw7CiAvLyAgIGFy
ZSByZWxhdGVkLCBub3QgaG93IHRoZWlyIGNvbnRlbnQgaXMgcmVsYXRlZC4gIFRvIGNvbXBhcmUg
dHdvIEMKIC8vICAgc3RyaW5ncyBieSBjb250ZW50LCB1c2Uge0FTU0VSVHxFWFBFQ1R9X1NUUioo
KS4KIC8vCi0vLyAgIDMuIHtBU1NFUlR8RVhQRUNUfV9FUShleHBlY3RlZCwgYWN0dWFsKSBpcyBw
cmVmZXJyZWQgdG8KLS8vICAge0FTU0VSVHxFWFBFQ1R9X1RSVUUoZXhwZWN0ZWQgPT0gYWN0dWFs
KSwgYXMgdGhlIGZvcm1lciB0ZWxscyB5b3UKKy8vICAgMy4ge0FTU0VSVHxFWFBFQ1R9X0VRKHYx
LCB2MikgaXMgcHJlZmVycmVkIHRvCisvLyAgIHtBU1NFUlR8RVhQRUNUfV9UUlVFKHYxID09IHYy
KSwgYXMgdGhlIGZvcm1lciB0ZWxscyB5b3UKIC8vICAgd2hhdCB0aGUgYWN0dWFsIHZhbHVlIGlz
IHdoZW4gaXQgZmFpbHMsIGFuZCBzaW1pbGFybHkgZm9yIHRoZQogLy8gICBvdGhlciBjb21wYXJp
c29ucy4KIC8vCkBAIC0xNzUxLDE3ICsxOTU4LDE3IEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08
VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogLy8KIC8vIEV4YW1wbGVzOgogLy8KLS8vICAgRVhQRUNU
X05FKDUsIEZvbygpKTsKLS8vICAgRVhQRUNUX0VRKE5VTEwsIGFfcG9pbnRlcik7CisvLyAgIEVY
UEVDVF9ORShGb28oKSwgNSk7CisvLyAgIEVYUEVDVF9FUShhX3BvaW50ZXIsIE5VTEwpOwogLy8g
ICBBU1NFUlRfTFQoaSwgYXJyYXlfc2l6ZSk7CiAvLyAgIEFTU0VSVF9HVChyZWNvcmRzLnNpemUo
KSwgMCkgPDwgIlRoZXJlIGlzIG5vIHJlY29yZCBsZWZ0LiI7CiAKLSNkZWZpbmUgRVhQRUNUX0VR
KGV4cGVjdGVkLCBhY3R1YWwpIFwKKyNkZWZpbmUgRVhQRUNUX0VRKHZhbDEsIHZhbDIpIFwKICAg
RVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjogXAotICAgICAgICAgICAg
ICAgICAgICAgIEVxSGVscGVyPEdURVNUX0lTX05VTExfTElURVJBTF8oZXhwZWN0ZWQpPjo6Q29t
cGFyZSwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLCBhY3R1YWwpCi0jZGVmaW5l
IEVYUEVDVF9ORShleHBlY3RlZCwgYWN0dWFsKSBcCi0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0
ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyTkUsIGV4cGVjdGVkLCBhY3R1YWwpCisgICAgICAg
ICAgICAgICAgICAgICAgRXFIZWxwZXI8R1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh2YWwxKT46OkNv
bXBhcmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICB2YWwxLCB2YWwyKQorI2RlZmluZSBFWFBF
Q1RfTkUodmFsMSwgdmFsMikgXAorICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkNtcEhlbHBlck5FLCB2YWwxLCB2YWwyKQogI2RlZmluZSBFWFBFQ1RfTEUodmFsMSwg
dmFsMikgXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhl
bHBlckxFLCB2YWwxLCB2YWwyKQogI2RlZmluZSBFWFBFQ1RfTFQodmFsMSwgdmFsMikgXApAQCAt
MTc3MSwyMiArMTk3OCw0OSBAQCBjb25zdCBUKiBUZXN0V2l0aFBhcmFtPFQ+OjpwYXJhbWV0ZXJf
ID0gTlVMTDsKICNkZWZpbmUgRVhQRUNUX0dUKHZhbDEsIHZhbDIpIFwKICAgRVhQRUNUX1BSRURf
Rk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJHVCwgdmFsMSwgdmFsMikKIAot
I2RlZmluZSBBU1NFUlRfRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAorI2RlZmluZSBHVEVTVF9BU1NF
UlRfRVEodmFsMSwgdmFsMikgXAogICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50
ZXJuYWw6OiBcCi0gICAgICAgICAgICAgICAgICAgICAgRXFIZWxwZXI8R1RFU1RfSVNfTlVMTF9M
SVRFUkFMXyhleHBlY3RlZCk+OjpDb21wYXJlLCBcCi0gICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0ZWQsIGFjdHVhbCkKLSNkZWZpbmUgQVNTRVJUX05FKHZhbDEsIHZhbDIpIFwKKyAgICAgICAg
ICAgICAgICAgICAgICBFcUhlbHBlcjxHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHZhbDEpPjo6Q29t
cGFyZSwgXAorICAgICAgICAgICAgICAgICAgICAgIHZhbDEsIHZhbDIpCisjZGVmaW5lIEdURVNU
X0FTU0VSVF9ORSh2YWwxLCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5n
OjppbnRlcm5hbDo6Q21wSGVscGVyTkUsIHZhbDEsIHZhbDIpCi0jZGVmaW5lIEFTU0VSVF9MRSh2
YWwxLCB2YWwyKSBcCisjZGVmaW5lIEdURVNUX0FTU0VSVF9MRSh2YWwxLCB2YWwyKSBcCiAgIEFT
U0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyTEUsIHZhbDEs
IHZhbDIpCi0jZGVmaW5lIEFTU0VSVF9MVCh2YWwxLCB2YWwyKSBcCisjZGVmaW5lIEdURVNUX0FT
U0VSVF9MVCh2YWwxLCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6Q21wSGVscGVyTFQsIHZhbDEsIHZhbDIpCi0jZGVmaW5lIEFTU0VSVF9HRSh2YWwx
LCB2YWwyKSBcCisjZGVmaW5lIEdURVNUX0FTU0VSVF9HRSh2YWwxLCB2YWwyKSBcCiAgIEFTU0VS
VF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyR0UsIHZhbDEsIHZh
bDIpCi0jZGVmaW5lIEFTU0VSVF9HVCh2YWwxLCB2YWwyKSBcCisjZGVmaW5lIEdURVNUX0FTU0VS
VF9HVCh2YWwxLCB2YWwyKSBcCiAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRl
cm5hbDo6Q21wSGVscGVyR1QsIHZhbDEsIHZhbDIpCiAKLS8vIEMgU3RyaW5nIENvbXBhcmlzb25z
LiAgQWxsIHRlc3RzIHRyZWF0IE5VTEwgYW5kIGFueSBub24tTlVMTCBzdHJpbmcKKy8vIERlZmlu
ZSBtYWNybyBHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfWFkgdG8gMSB0byBvbWl0IHRoZSBkZWZp
bml0aW9uIG9mCisvLyBBU1NFUlRfWFkoKSwgd2hpY2ggY2xhc2hlcyB3aXRoIHNvbWUgdXNlcnMn
IG93biBjb2RlLgorCisjaWYgIUdURVNUX0RPTlRfREVGSU5FX0FTU0VSVF9FUQorIyBkZWZpbmUg
QVNTRVJUX0VRKHZhbDEsIHZhbDIpIEdURVNUX0FTU0VSVF9FUSh2YWwxLCB2YWwyKQorI2VuZGlm
CisKKyNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX05FCisjIGRlZmluZSBBU1NFUlRfTkUo
dmFsMSwgdmFsMikgR1RFU1RfQVNTRVJUX05FKHZhbDEsIHZhbDIpCisjZW5kaWYKKworI2lmICFH
VEVTVF9ET05UX0RFRklORV9BU1NFUlRfTEUKKyMgZGVmaW5lIEFTU0VSVF9MRSh2YWwxLCB2YWwy
KSBHVEVTVF9BU1NFUlRfTEUodmFsMSwgdmFsMikKKyNlbmRpZgorCisjaWYgIUdURVNUX0RPTlRf
REVGSU5FX0FTU0VSVF9MVAorIyBkZWZpbmUgQVNTRVJUX0xUKHZhbDEsIHZhbDIpIEdURVNUX0FT
U0VSVF9MVCh2YWwxLCB2YWwyKQorI2VuZGlmCisKKyNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfQVNT
RVJUX0dFCisjIGRlZmluZSBBU1NFUlRfR0UodmFsMSwgdmFsMikgR1RFU1RfQVNTRVJUX0dFKHZh
bDEsIHZhbDIpCisjZW5kaWYKKworI2lmICFHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfR1QKKyMg
ZGVmaW5lIEFTU0VSVF9HVCh2YWwxLCB2YWwyKSBHVEVTVF9BU1NFUlRfR1QodmFsMSwgdmFsMikK
KyNlbmRpZgorCisvLyBDLXN0cmluZyBDb21wYXJpc29ucy4gIEFsbCB0ZXN0cyB0cmVhdCBOVUxM
IGFuZCBhbnkgbm9uLU5VTEwgc3RyaW5nCiAvLyBhcyBkaWZmZXJlbnQuICBUd28gTlVMTHMgYXJl
IGVxdWFsLgogLy8KIC8vICAgICoge0FTU0VSVHxFWFBFQ1R9X1NUUkVRKHMxLCBzMik6ICAgICBU
ZXN0cyB0aGF0IHMxID09IHMyCkBAIC0xODAyLDI5ICsyMDM2LDI5IEBAIGNvbnN0IFQqIFRlc3RX
aXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwogLy8KIC8vIFRoZXNlIG1hY3JvcyBldmFs
dWF0ZSB0aGVpciBhcmd1bWVudHMgZXhhY3RseSBvbmNlLgogCi0jZGVmaW5lIEVYUEVDVF9TVFJF
UShleHBlY3RlZCwgYWN0dWFsKSBcCi0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6Q21wSGVscGVyU1RSRVEsIGV4cGVjdGVkLCBhY3R1YWwpCisjZGVmaW5lIEVYUEVD
VF9TVFJFUShzMSwgczIpIFwKKyAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVy
bmFsOjpDbXBIZWxwZXJTVFJFUSwgczEsIHMyKQogI2RlZmluZSBFWFBFQ1RfU1RSTkUoczEsIHMy
KSBcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVy
U1RSTkUsIHMxLCBzMikKLSNkZWZpbmUgRVhQRUNUX1NUUkNBU0VFUShleHBlY3RlZCwgYWN0dWFs
KSBcCi0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVy
U1RSQ0FTRUVRLCBleHBlY3RlZCwgYWN0dWFsKQorI2RlZmluZSBFWFBFQ1RfU1RSQ0FTRUVRKHMx
LCBzMikgXAorICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhl
bHBlclNUUkNBU0VFUSwgczEsIHMyKQogI2RlZmluZSBFWFBFQ1RfU1RSQ0FTRU5FKHMxLCBzMilc
CiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RS
Q0FTRU5FLCBzMSwgczIpCiAKLSNkZWZpbmUgQVNTRVJUX1NUUkVRKGV4cGVjdGVkLCBhY3R1YWwp
IFwKLSAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJT
VFJFUSwgZXhwZWN0ZWQsIGFjdHVhbCkKKyNkZWZpbmUgQVNTRVJUX1NUUkVRKHMxLCBzMikgXAor
ICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkVR
LCBzMSwgczIpCiAjZGVmaW5lIEFTU0VSVF9TVFJORShzMSwgczIpIFwKICAgQVNTRVJUX1BSRURf
Rk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJORSwgczEsIHMyKQotI2Rl
ZmluZSBBU1NFUlRfU1RSQ0FTRUVRKGV4cGVjdGVkLCBhY3R1YWwpIFwKLSAgQVNTRVJUX1BSRURf
Rk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJDQVNFRVEsIGV4cGVjdGVk
LCBhY3R1YWwpCisjZGVmaW5lIEFTU0VSVF9TVFJDQVNFRVEoczEsIHMyKSBcCisgIEFTU0VSVF9Q
UkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSQ0FTRUVRLCBzMSwg
czIpCiAjZGVmaW5lIEFTU0VSVF9TVFJDQVNFTkUoczEsIHMyKVwKICAgQVNTRVJUX1BSRURfRk9S
TUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJDQVNFTkUsIHMxLCBzMikKIAog
Ly8gTWFjcm9zIGZvciBjb21wYXJpbmcgZmxvYXRpbmctcG9pbnQgbnVtYmVycy4KIC8vCi0vLyAg
ICAqIHtBU1NFUlR8RVhQRUNUfV9GTE9BVF9FUShleHBlY3RlZCwgYWN0dWFsKToKKy8vICAgICog
e0FTU0VSVHxFWFBFQ1R9X0ZMT0FUX0VRKHZhbDEsIHZhbDIpOgogLy8gICAgICAgICBUZXN0cyB0
aGF0IHR3byBmbG9hdCB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbC4KLS8vICAgICoge0FTU0VSVHxF
WFBFQ1R9X0RPVUJMRV9FUShleHBlY3RlZCwgYWN0dWFsKToKKy8vICAgICoge0FTU0VSVHxFWFBF
Q1R9X0RPVUJMRV9FUSh2YWwxLCB2YWwyKToKIC8vICAgICAgICAgVGVzdHMgdGhhdCB0d28gZG91
YmxlIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsLgogLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTkVB
Uih2MSwgdjIsIGFic19lcnJvcik6CiAvLyAgICAgICAgIFRlc3RzIHRoYXQgdjEgYW5kIHYyIGFy
ZSB3aXRoaW4gdGhlIGdpdmVuIGRpc3RhbmNlIHRvIGVhY2ggb3RoZXIuCkBAIC0xODM0LDIxICsy
MDY4LDIxIEBAIGNvbnN0IFQqIFRlc3RXaXRoUGFyYW08VD46OnBhcmFtZXRlcl8gPSBOVUxMOwog
Ly8gRmxvYXRpbmdQb2ludCB0ZW1wbGF0ZSBjbGFzcyBpbiBndGVzdC1pbnRlcm5hbC5oIGlmIHlv
dSBhcmUKIC8vIGludGVyZXN0ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCiAKLSNk
ZWZpbmUgRVhQRUNUX0ZMT0FUX0VRKGV4cGVjdGVkLCBhY3R1YWwpXAorI2RlZmluZSBFWFBFQ1Rf
RkxPQVRfRVEodmFsMSwgdmFsMilcCiAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6Q21wSGVscGVyRmxvYXRpbmdQb2ludEVRPGZsb2F0PiwgXAotICAgICAgICAgICAg
ICAgICAgICAgIGV4cGVjdGVkLCBhY3R1YWwpCisgICAgICAgICAgICAgICAgICAgICAgdmFsMSwg
dmFsMikKIAotI2RlZmluZSBFWFBFQ1RfRE9VQkxFX0VRKGV4cGVjdGVkLCBhY3R1YWwpXAorI2Rl
ZmluZSBFWFBFQ1RfRE9VQkxFX0VRKHZhbDEsIHZhbDIpXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckZsb2F0aW5nUG9pbnRFUTxkb3VibGU+LCBc
Ci0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQsIGFjdHVhbCkKKyAgICAgICAgICAgICAg
ICAgICAgICB2YWwxLCB2YWwyKQogCi0jZGVmaW5lIEFTU0VSVF9GTE9BVF9FUShleHBlY3RlZCwg
YWN0dWFsKVwKKyNkZWZpbmUgQVNTRVJUX0ZMT0FUX0VRKHZhbDEsIHZhbDIpXAogICBBU1NFUlRf
UFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckZsb2F0aW5nUG9pbnRF
UTxmbG9hdD4sIFwKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwgYWN0dWFsKQorICAg
ICAgICAgICAgICAgICAgICAgIHZhbDEsIHZhbDIpCiAKLSNkZWZpbmUgQVNTRVJUX0RPVUJMRV9F
UShleHBlY3RlZCwgYWN0dWFsKVwKKyNkZWZpbmUgQVNTRVJUX0RPVUJMRV9FUSh2YWwxLCB2YWwy
KVwKICAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJG
bG9hdGluZ1BvaW50RVE8ZG91YmxlPiwgXAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
LCBhY3R1YWwpCisgICAgICAgICAgICAgICAgICAgICAgdmFsMSwgdmFsMikKIAogI2RlZmluZSBF
WFBFQ1RfTkVBUih2YWwxLCB2YWwyLCBhYnNfZXJyb3IpXAogICBFWFBFQ1RfUFJFRF9GT1JNQVQz
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkRvdWJsZU5lYXJQcmVkRm9ybWF0LCBcCkBAIC0xODgyLDE2
ICsyMTE2LDE2IEBAIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IERvdWJsZUxFKGNvbnN0IGNo
YXIqIGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwKIC8vIGV4cGVjdGVkIHJlc3VsdCBhbmQgdGhl
IGFjdHVhbCByZXN1bHQgd2l0aCBib3RoIGEgaHVtYW4tcmVhZGFibGUKIC8vIHN0cmluZyByZXBy
ZXNlbnRhdGlvbiBvZiB0aGUgZXJyb3IsIGlmIGF2YWlsYWJsZSwgYXMgd2VsbCBhcyB0aGUKIC8v
IGhleCByZXN1bHQgY29kZS4KLSNkZWZpbmUgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKGV4cHIp
IFwKKyMgZGVmaW5lIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChleHByKSBcCiAgICAgRVhQRUNU
X1BSRURfRk9STUFUMSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hSRVNVTFRTdWNjZXNzLCAoZXhw
cikpCiAKLSNkZWZpbmUgQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKGV4cHIpIFwKKyMgZGVmaW5l
IEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChleHByKSBcCiAgICAgQVNTRVJUX1BSRURfRk9STUFU
MSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hSRVNVTFRTdWNjZXNzLCAoZXhwcikpCiAKLSNkZWZp
bmUgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKGV4cHIpIFwKKyMgZGVmaW5lIEVYUEVDVF9IUkVTVUxU
X0ZBSUxFRChleHByKSBcCiAgICAgRVhQRUNUX1BSRURfRk9STUFUMSg6OnRlc3Rpbmc6OmludGVy
bmFsOjpJc0hSRVNVTFRGYWlsdXJlLCAoZXhwcikpCiAKLSNkZWZpbmUgQVNTRVJUX0hSRVNVTFRf
RkFJTEVEKGV4cHIpIFwKKyMgZGVmaW5lIEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChleHByKSBcCiAg
ICAgQVNTRVJUX1BSRURfRk9STUFUMSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hSRVNVTFRGYWls
dXJlLCAoZXhwcikpCiAKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwpAQCAtMTkxMSw2ICsy
MTQ1LDU3IEBAIEdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IERvdWJsZUxFKGNvbnN0IGNoYXIq
IGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwKICNkZWZpbmUgRVhQRUNUX05PX0ZBVEFMX0ZBSUxV
UkUoc3RhdGVtZW50KSBcCiAgICAgR1RFU1RfVEVTVF9OT19GQVRBTF9GQUlMVVJFXyhzdGF0ZW1l
bnQsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVfKQogCisvLyBDYXVzZXMgYSB0cmFjZSAoaW5jbHVk
aW5nIHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBwYXRoIGFuZCBsaW5lIG51bWJlciwKKy8vIGFuZCB0
aGUgZ2l2ZW4gbWVzc2FnZSkgdG8gYmUgaW5jbHVkZWQgaW4gZXZlcnkgdGVzdCBmYWlsdXJlIG1l
c3NhZ2UgZ2VuZXJhdGVkCisvLyBieSBjb2RlIGluIHRoZSBzY29wZSBvZiB0aGUgbGlmZXRpbWUg
b2YgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy4gVGhlIGVmZmVjdAorLy8gaXMgdW5kb25lIHdp
dGggdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZS4KKy8vCisvLyBUaGUgbWVzc2FnZSBh
cmd1bWVudCBjYW4gYmUgYW55dGhpbmcgc3RyZWFtYWJsZSB0byBzdGQ6Om9zdHJlYW0uCisvLwor
Ly8gRXhhbXBsZToKKy8vICAgdGVzdGluZzo6U2NvcGVkVHJhY2UgdHJhY2UoImZpbGUuY2MiLCAx
MjMsICJtZXNzYWdlIik7CisvLworY2xhc3MgR1RFU1RfQVBJXyBTY29wZWRUcmFjZSB7CisgcHVi
bGljOgorICAvLyBUaGUgYyd0b3IgcHVzaGVzIHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlv
biBhbmQgbWVzc2FnZSBvbnRvCisgIC8vIGEgdHJhY2Ugc3RhY2sgbWFpbnRhaW5lZCBieSBHb29n
bGUgVGVzdC4KKworICAvLyBUZW1wbGF0ZSB2ZXJzaW9uLiBVc2VzIE1lc3NhZ2UoKSB0byBjb252
ZXJ0IHRoZSB2YWx1ZXMgaW50byBzdHJpbmdzLgorICAvLyBTbG93LCBidXQgZmxleGlibGUuCisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBTY29wZWRUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBp
bnQgbGluZSwgY29uc3QgVCYgbWVzc2FnZSkgeworICAgIFB1c2hUcmFjZShmaWxlLCBsaW5lLCAo
TWVzc2FnZSgpIDw8IG1lc3NhZ2UpLkdldFN0cmluZygpKTsKKyAgfQorCisgIC8vIE9wdGltaXpl
IGZvciBzb21lIGtub3duIHR5cGVzLgorICBTY29wZWRUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBp
bnQgbGluZSwgY29uc3QgY2hhciogbWVzc2FnZSkgeworICAgIFB1c2hUcmFjZShmaWxlLCBsaW5l
LCBtZXNzYWdlID8gbWVzc2FnZSA6ICIobnVsbCkiKTsKKyAgfQorCisjaWYgR1RFU1RfSEFTX0dM
T0JBTF9TVFJJTkcKKyAgU2NvcGVkVHJhY2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNv
bnN0IDo6c3RyaW5nJiBtZXNzYWdlKSB7CisgICAgUHVzaFRyYWNlKGZpbGUsIGxpbmUsIG1lc3Nh
Z2UpOworICB9CisjZW5kaWYKKworICBTY29wZWRUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBpbnQg
bGluZSwgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsKKyAgICBQdXNoVHJhY2UoZmlsZSwg
bGluZSwgbWVzc2FnZSk7CisgIH0KKworICAvLyBUaGUgZCd0b3IgcG9wcyB0aGUgaW5mbyBwdXNo
ZWQgYnkgdGhlIGMndG9yLgorICAvLworICAvLyBOb3RlIHRoYXQgdGhlIGQndG9yIGlzIG5vdCB2
aXJ0dWFsIGluIG9yZGVyIHRvIGJlIGVmZmljaWVudC4KKyAgLy8gRG9uJ3QgaW5oZXJpdCBmcm9t
IFNjb3BlZFRyYWNlIQorICB+U2NvcGVkVHJhY2UoKTsKKworIHByaXZhdGU6CisgIHZvaWQgUHVz
aFRyYWNlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBzdGQ6OnN0cmluZyBtZXNzYWdlKTsK
KworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNjb3BlZFRyYWNlKTsKK30gR1RF
U1RfQVRUUklCVVRFX1VOVVNFRF87ICAvLyBBIFNjb3BlZFRyYWNlIG9iamVjdCBkb2VzIGl0cyBq
b2IgaW4gaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYyd0b3IgYW5kIGQndG9y
LiAgVGhlcmVmb3JlIGl0IGRvZXNuJ3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBu
ZWVkIHRvIGJlIHVzZWQgb3RoZXJ3aXNlLgorCiAvLyBDYXVzZXMgYSB0cmFjZSAoaW5jbHVkaW5n
IHRoZSBzb3VyY2UgZmlsZSBwYXRoLCB0aGUgY3VycmVudCBsaW5lCiAvLyBudW1iZXIsIGFuZCB0
aGUgZ2l2ZW4gbWVzc2FnZSkgdG8gYmUgaW5jbHVkZWQgaW4gZXZlcnkgdGVzdCBmYWlsdXJlCiAv
LyBtZXNzYWdlIGdlbmVyYXRlZCBieSBjb2RlIGluIHRoZSBjdXJyZW50IHNjb3BlLiAgVGhlIGVm
ZmVjdCBpcwpAQCAtMTkyMiwyMCArMjIwNywxNCBAQCBHVEVTVF9BUElfIEFzc2VydGlvblJlc3Vs
dCBEb3VibGVMRShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIsCiAvLyBvZiB0
aGUgZHVtbXkgdmFyaWFibGUgbmFtZSwgdGh1cyBhbGxvd2luZyBtdWx0aXBsZSBTQ09QRURfVFJB
Q0UoKXMKIC8vIHRvIGFwcGVhciBpbiB0aGUgc2FtZSBibG9jayAtIGFzIGxvbmcgYXMgdGhleSBh
cmUgb24gZGlmZmVyZW50CiAvLyBsaW5lcy4KKy8vCisvLyBBc3N1bWluZyB0aGF0IGVhY2ggdGhy
ZWFkIG1haW50YWlucyBpdHMgb3duIHN0YWNrIG9mIHRyYWNlcy4KKy8vIFRoZXJlZm9yZSwgYSBT
Q09QRURfVFJBQ0UoKSB3b3VsZCAoY29ycmVjdGx5KSBvbmx5IGFmZmVjdCB0aGUKKy8vIGFzc2Vy
dGlvbnMgaW4gaXRzIG93biB0aHJlYWQuCiAjZGVmaW5lIFNDT1BFRF9UUkFDRShtZXNzYWdlKSBc
Ci0gIDo6dGVzdGluZzo6aW50ZXJuYWw6OlNjb3BlZFRyYWNlIEdURVNUX0NPTkNBVF9UT0tFTl8o
Z3Rlc3RfdHJhY2VfLCBfX0xJTkVfXykoXAotICAgIF9fRklMRV9fLCBfX0xJTkVfXywgOjp0ZXN0
aW5nOjpNZXNzYWdlKCkgPDwgKG1lc3NhZ2UpKQotCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0v
LyBUaGlzIHRlbXBsYXRlIGlzIGRlY2xhcmVkLCBidXQgaW50ZW50aW9uYWxseSB1bmRlZmluZWQu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotc3RydWN0IFN0YXRpY0Fzc2Vy
dFR5cGVFcUhlbHBlcjsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgU3RhdGljQXNz
ZXJ0VHlwZUVxSGVscGVyPFQsIFQ+IHt9OworICA6OnRlc3Rpbmc6OlNjb3BlZFRyYWNlIEdURVNU
X0NPTkNBVF9UT0tFTl8oZ3Rlc3RfdHJhY2VfLCBfX0xJTkVfXykoXAorICAgIF9fRklMRV9fLCBf
X0xJTkVfXywgKG1lc3NhZ2UpKQogCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAogLy8gQ29t
cGlsZS10aW1lIGFzc2VydGlvbiBmb3IgdHlwZSBlcXVhbGl0eS4KIC8vIFN0YXRpY0Fzc2VydFR5
cGVFcTx0eXBlMSwgdHlwZTI+KCkgY29tcGlsZXMgaWZmIHR5cGUxIGFuZCB0eXBlMiBhcmUKQEAg
LTE5NjksNyArMjI0OCw3IEBAIHN0cnVjdCBTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI8VCwgVD4g
e307CiAvLyB0byBjYXVzZSBhIGNvbXBpbGVyIGVycm9yLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMj4KIGJvb2wgU3RhdGljQXNzZXJ0VHlwZUVxKCkgewotICBpbnRlcm5hbDo6
U3RhdGljQXNzZXJ0VHlwZUVxSGVscGVyPFQxLCBUMj4oKTsKKyAgKHZvaWQpaW50ZXJuYWw6OlN0
YXRpY0Fzc2VydFR5cGVFcUhlbHBlcjxUMSwgVDI+KCk7CiAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0xOTgxLDggKzIyNjAsOCBAQCBib29sIFN0YXRpY0Fzc2VydFR5cGVFcSgpIHsKIC8vIFRoZSBj
b252ZW50aW9uIGlzIHRvIGVuZCB0aGUgdGVzdCBjYXNlIG5hbWUgd2l0aCAiVGVzdCIuICBGb3IK
IC8vIGV4YW1wbGUsIGEgdGVzdCBjYXNlIGZvciB0aGUgRm9vIGNsYXNzIGNhbiBiZSBuYW1lZCBG
b29UZXN0LgogLy8KLS8vIFRoZSB1c2VyIHNob3VsZCBwdXQgaGlzIHRlc3QgY29kZSBiZXR3ZWVu
IGJyYWNlcyBhZnRlciB1c2luZyB0aGlzCi0vLyBtYWNyby4gIEV4YW1wbGU6CisvLyBUZXN0IGNv
ZGUgc2hvdWxkIGFwcGVhciBiZXR3ZWVuIGJyYWNlcyBhZnRlciBhbiBpbnZvY2F0aW9uIG9mCisv
LyB0aGlzIG1hY3JvLiAgRXhhbXBsZToKIC8vCiAvLyAgIFRFU1QoRm9vVGVzdCwgSW5pdGlhbGl6
ZXNDb3JyZWN0bHkpIHsKIC8vICAgICBGb28gZm9vOwpAQCAtMjAwNSw3ICsyMjg0LDcgQEAgYm9v
bCBTdGF0aWNBc3NlcnRUeXBlRXEoKSB7CiAvLyBEZWZpbmUgdGhpcyBtYWNybyB0byAxIHRvIG9t
aXQgdGhlIGRlZmluaXRpb24gb2YgVEVTVCgpLCB3aGljaAogLy8gaXMgYSBnZW5lcmljIG5hbWUg
YW5kIGNsYXNoZXMgd2l0aCBzb21lIG90aGVyIGxpYnJhcmllcy4KICNpZiAhR1RFU1RfRE9OVF9E
RUZJTkVfVEVTVAotI2RlZmluZSBURVNUKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIEdURVNU
X1RFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkKKyMgZGVmaW5lIFRFU1QodGVzdF9jYXNl
X25hbWUsIHRlc3RfbmFtZSkgR1RFU1RfVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKQog
I2VuZGlmCiAKIC8vIERlZmluZXMgYSB0ZXN0IHRoYXQgdXNlcyBhIHRlc3QgZml4dHVyZS4KQEAg
LTIwMTUsNyArMjI5NCw3IEBAIGJvb2wgU3RhdGljQXNzZXJ0VHlwZUVxKCkgewogLy8gbmFtZSBv
ZiB0aGUgdGVzdCB3aXRoaW4gdGhlIHRlc3QgY2FzZS4KIC8vCiAvLyBBIHRlc3QgZml4dHVyZSBj
bGFzcyBtdXN0IGJlIGRlY2xhcmVkIGVhcmxpZXIuICBUaGUgdXNlciBzaG91bGQgcHV0Ci0vLyBo
aXMgdGVzdCBjb2RlIGJldHdlZW4gYnJhY2VzIGFmdGVyIHVzaW5nIHRoaXMgbWFjcm8uICBFeGFt
cGxlOgorLy8gdGhlIHRlc3QgY29kZSBiZXR3ZWVuIGJyYWNlcyBhZnRlciB1c2luZyB0aGlzIG1h
Y3JvLiAgRXhhbXBsZToKIC8vCiAvLyAgIGNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7CiAvLyAgICBwcm90ZWN0ZWQ6CkBAIC0yMDMwLDIzICsyMzA5LDM4IEBAIGJvb2wgU3Rh
dGljQXNzZXJ0VHlwZUVxKCkgewogLy8gICB9CiAvLwogLy8gICBURVNUX0YoRm9vVGVzdCwgUmV0
dXJuc0VsZW1lbnRDb3VudENvcnJlY3RseSkgewotLy8gICAgIEVYUEVDVF9FUSgwLCBhXy5zaXpl
KCkpOwotLy8gICAgIEVYUEVDVF9FUSgxLCBiXy5zaXplKCkpOworLy8gICAgIEVYUEVDVF9FUShh
Xy5zaXplKCksIDApOworLy8gICAgIEVYUEVDVF9FUShiXy5zaXplKCksIDEpOwogLy8gICB9CiAK
ICNkZWZpbmUgVEVTVF9GKHRlc3RfZml4dHVyZSwgdGVzdF9uYW1lKVwKICAgR1RFU1RfVEVTVF8o
dGVzdF9maXh0dXJlLCB0ZXN0X25hbWUsIHRlc3RfZml4dHVyZSwgXAogICAgICAgICAgICAgICA6
OnRlc3Rpbmc6OmludGVybmFsOjpHZXRUeXBlSWQ8dGVzdF9maXh0dXJlPigpKQogCi0vLyBVc2Ug
dGhpcyBtYWNybyBpbiBtYWluKCkgdG8gcnVuIGFsbCB0ZXN0cy4gIEl0IHJldHVybnMgMCBpZiBh
bGwKKy8vIFJldHVybnMgYSBwYXRoIHRvIHRlbXBvcmFyeSBkaXJlY3RvcnkuCisvLyBUcmllcyB0
byBkZXRlcm1pbmUgYW4gYXBwcm9wcmlhdGUgZGlyZWN0b3J5IGZvciB0aGUgcGxhdGZvcm0uCitH
VEVTVF9BUElfIHN0ZDo6c3RyaW5nIFRlbXBEaXIoKTsKKworI2lmZGVmIF9NU0NfVkVSCisjICBw
cmFnbWEgd2FybmluZyhwb3ApCisjZW5kaWYKKworfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKKwor
Ly8gVXNlIHRoaXMgZnVuY3Rpb24gaW4gbWFpbigpIHRvIHJ1biBhbGwgdGVzdHMuICBJdCByZXR1
cm5zIDAgaWYgYWxsCiAvLyB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3IgMSBvdGhlcndpc2UuCiAv
LwogLy8gUlVOX0FMTF9URVNUUygpIHNob3VsZCBiZSBpbnZva2VkIGFmdGVyIHRoZSBjb21tYW5k
IGxpbmUgaGFzIGJlZW4KIC8vIHBhcnNlZCBieSBJbml0R29vZ2xlVGVzdCgpLgorLy8KKy8vIFRo
aXMgZnVuY3Rpb24gd2FzIGZvcm1lcmx5IGEgbWFjcm87IHRodXMsIGl0IGlzIGluIHRoZSBnbG9i
YWwKKy8vIG5hbWVzcGFjZSBhbmQgaGFzIGFuIGFsbC1jYXBzIG5hbWUuCitpbnQgUlVOX0FMTF9U
RVNUUygpIEdURVNUX01VU1RfVVNFX1JFU1VMVF87CiAKLSNkZWZpbmUgUlVOX0FMTF9URVNUUygp
XAotICAoOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+UnVuKCkpCitpbmxpbmUg
aW50IFJVTl9BTExfVEVTVFMoKSB7CisgIHJldHVybiA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5SdW4oKTsKK30KIAotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKK0dURVNUX0RJ
U0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQyNTEKIAogI2VuZGlmICAvLyBHVEVTVF9J
TkNMVURFX0dURVNUX0dURVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcmVkX2ltcGwuaAppbmRleCBlMWUyZjhjNGM4ODdhOGRl
ZmNiNzU4Y2EwY2FhYjNiN2NlYjlkNDFhLi4wYzExMDVjYjhlYjJlZjdjMjYxNmU2N2ZmNTU1NmFh
YjI5ZmYyZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0
ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmgKQEAgLTI3LDE4ICsyNywxOSBAQAogLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0vLyBUaGlzIGZpbGUgaXMgQVVUT01BVElDQUxMWSBH
RU5FUkFURUQgb24gMTAvMDIvMjAwOCBieSBjb21tYW5kCisvLyBUaGlzIGZpbGUgaXMgQVVUT01B
VElDQUxMWSBHRU5FUkFURUQgb24gMDEvMDIvMjAxOCBieSBjb21tYW5kCiAvLyAnZ2VuX2d0ZXN0
X3ByZWRfaW1wbC5weSA1Jy4gIERPIE5PVCBFRElUIEJZIEhBTkQhCiAvLwogLy8gSW1wbGVtZW50
cyBhIGZhbWlseSBvZiBnZW5lcmljIHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9zLgogCisvLyBH
T09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9H
VEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVT
VF9QUkVEX0lNUExfSF8KIAotLy8gTWFrZXMgc3VyZSB0aGlzIGhlYWRlciBpcyBub3QgaW5jbHVk
ZWQgYmVmb3JlIGd0ZXN0LmguCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8K
LSNlcnJvciBEbyBub3QgaW5jbHVkZSBndGVzdF9wcmVkX2ltcGwuaCBkaXJlY3RseS4gIEluY2x1
ZGUgZ3Rlc3QuaCBpbnN0ZWFkLgotI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNU
X0hfCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHRlc3RpbmcgewogCiAv
LyBUaGlzIGhlYWRlciBpbXBsZW1lbnRzIGEgZmFtaWx5IG9mIGdlbmVyaWMgcHJlZGljYXRlIGFz
c2VydGlvbgogLy8gbWFjcm9zOgpAQCAtNjYsOCArNjcsNiBAQAogLy8gV2UgYWxzbyBkZWZpbmUg
dGhlIEVYUEVDVF8qIHZhcmlhdGlvbnMuCiAvLwogLy8gRm9yIG5vdyB3ZSBvbmx5IHN1cHBvcnQg
cHJlZGljYXRlcyB3aG9zZSBhcml0eSBpcyBhdCBtb3N0IDUuCi0vLyBQbGVhc2UgZW1haWwgZ29v
Z2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tIGlmIHlvdSBuZWVkCi0vLyBzdXBwb3J0
IGZvciBoaWdoZXIgYXJpdGllcy4KIAogLy8gR1RFU1RfQVNTRVJUXyBpcyB0aGUgYmFzaWMgc3Rh
dGVtZW50IHRvIHdoaWNoIGFsbCBvZiB0aGUgYXNzZXJ0aW9ucwogLy8gaW4gdGhpcyBmaWxlIHJl
ZHVjZS4gIERvbid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KQEAgLTkwLDE3ICs4OSwxNSBAQCBB
c3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDFIZWxwZXIoY29uc3QgY2hhciogcHJlZF90ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiB2MSkgewogICBpZiAo
cHJlZCh2MSkpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0g
IG1zZyA8PCBwcmVkX3RleHQgPDwgIigiCi0gICAgICA8PCBlMSA8PCAiKSBldmFsdWF0ZXMgdG8g
ZmFsc2UsIHdoZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8
IHYxOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9u
RmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCBlMSA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MTsKIH0K
IAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJF
RF9GT1JNQVQxLgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVT
VF9QUkVEX0ZPUk1BVDFfKHByZWRfZm9ybWF0LCB2MSwgb25fZmFpbHVyZSlcCi0gIEdURVNUX0FT
U0VSVF8ocHJlZF9mb3JtYXQoI3YxLCB2MSksXAorICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0
KCN2MSwgdjEpLCBcCiAgICAgICAgICAgICAgICAgb25fZmFpbHVyZSkKIAogLy8gSW50ZXJuYWwg
bWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRDEuICBEb24ndCB1c2UK
QEAgLTEzNiwxOSArMTMzLDE3IEBAIEFzc2VydGlvblJlc3VsdCBBc3NlcnRQcmVkMkhlbHBlcihj
b25zdCBjaGFyKiBwcmVkX3RleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVDImIHYyKSB7CiAgIGlmIChwcmVkKHYxLCB2MikpIHJldHVybiBBc3NlcnRpb25TdWNj
ZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBwcmVkX3RleHQgPDwgIigiCi0gICAg
ICA8PCBlMSA8PCAiLCAiCi0gICAgICA8PCBlMiA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdo
ZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxCi0gICAg
ICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjI7Ci0gIHJldHVybiBBc3Nl
cnRpb25GYWlsdXJlKG1zZyk7CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgcHJlZF90
ZXh0IDw8ICIoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUxIDw8ICIsICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMiA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2Us
IHdoZXJlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBl
dmFsdWF0ZXMgdG8gIiA8PCB2MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIg
PDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MjsKIH0KIAogLy8gSW50ZXJuYWwgbWFjcm8g
Zm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQyLgogLy8gRG9uJ3Qg
dXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDJfKHByZWRf
Zm9ybWF0LCB2MSwgdjIsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0
KCN2MSwgI3YyLCB2MSwgdjIpLFwKKyAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2
MiwgdjEsIHYyKSwgXAogICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVybmFs
IG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQyLiAgRG9uJ3QgdXNl
CkBAIC0xODksMjEgKzE4NCwxOSBAQCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDNIZWxwZXIo
Y29uc3QgY2hhciogcHJlZF90ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFQzJiB2MykgewogICBpZiAocHJlZCh2MSwgdjIsIHYzKSkgcmV0dXJuIEFzc2VydGlv
blN1Y2Nlc3MoKTsKIAotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IHByZWRfdGV4dCA8PCAiKCIK
LSAgICAgIDw8IGUxIDw8ICIsICIKLSAgICAgIDw8IGUyIDw8ICIsICIKLSAgICAgIDw8IGUzIDw8
ICIpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmUiCi0gICAgICA8PCAiXG4iIDw8IGUxIDw8ICIg
ZXZhbHVhdGVzIHRvICIgPDwgdjEKLSAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0ZXMg
dG8gIiA8PCB2MgotICAgICAgPDwgIlxuIiA8PCBlMyA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYz
OwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFp
bHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
PCBlMSA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTIgPDwgIiwgIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUzIDw8ICIpIGV2YWx1YXRlcyB0byBmYWxz
ZSwgd2hlcmUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIiA8PCBlMSA8PCAi
IGV2YWx1YXRlcyB0byAiIDw8IHYxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxu
IiA8PCBlMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYyCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgIlxuIiA8PCBlMyA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYzOwogfQogCiAvLyBJ
bnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEX0ZPUk1B
VDMuCiAvLyBEb24ndCB1c2UgdGhpcyBpbiB5b3VyIGNvZGUuCiAjZGVmaW5lIEdURVNUX1BSRURf
Rk9STUFUM18ocHJlZF9mb3JtYXQsIHYxLCB2MiwgdjMsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9B
U1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAjdjMsIHYxLCB2MiwgdjMpLFwKKyAgR1RFU1Rf
QVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3YzLCB2MSwgdjIsIHYzKSwgXAogICAgICAg
ICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRp
bmcge0VYUEVDVHxBU1NFUlR9X1BSRUQzLiAgRG9uJ3QgdXNlCkBAIC0yNDksMjMgKzI0MiwyMSBA
QCBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDRIZWxwZXIoY29uc3QgY2hhciogcHJlZF90ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQ0JiB2NCkgewogICBp
ZiAocHJlZCh2MSwgdjIsIHYzLCB2NCkpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAg
TWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBwcmVkX3RleHQgPDwgIigiCi0gICAgICA8PCBlMSA8PCAi
LCAiCi0gICAgICA8PCBlMiA8PCAiLCAiCi0gICAgICA8PCBlMyA8PCAiLCAiCi0gICAgICA8PCBl
NCA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8
PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxCi0gICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVh
dGVzIHRvICIgPDwgdjIKLSAgICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8
PCB2MwotICAgICAgPDwgIlxuIiA8PCBlNCA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHY0OwotICBy
ZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgp
IDw8IHByZWRfdGV4dCA8PCAiKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMSA8
PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTIgPDwgIiwgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8IGUzIDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCBlNCA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2
MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0
ZXMgdG8gIiA8PCB2MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTMg
PDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICJcbiIgPDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NDsKIH0KIAogLy8gSW50ZXJuYWwg
bWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQ0LgogLy8g
RG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDRf
KHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCB2NCwgb25fZmFpbHVyZSlcCi0gIEdURVNUX0FTU0VS
VF8ocHJlZF9mb3JtYXQoI3YxLCAjdjIsICN2MywgI3Y0LCB2MSwgdjIsIHYzLCB2NCksXAorICBH
VEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAjdjMsICN2NCwgdjEsIHYyLCB2Mywg
djQpLCBcCiAgICAgICAgICAgICAgICAgb25fZmFpbHVyZSkKIAogLy8gSW50ZXJuYWwgbWFjcm8g
Zm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRDQuICBEb24ndCB1c2UKQEAgLTMx
NiwyNSArMzA3LDIzIEBAIEFzc2VydGlvblJlc3VsdCBBc3NlcnRQcmVkNUhlbHBlcihjb25zdCBj
aGFyKiBwcmVkX3RleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VDUmIHY1KSB7CiAgIGlmIChwcmVkKHYxLCB2MiwgdjMsIHY0LCB2NSkpIHJldHVybiBBc3NlcnRp
b25TdWNjZXNzKCk7CiAKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBwcmVkX3RleHQgPDwgIigi
Ci0gICAgICA8PCBlMSA8PCAiLCAiCi0gICAgICA8PCBlMiA8PCAiLCAiCi0gICAgICA8PCBlMyA8
PCAiLCAiCi0gICAgICA8PCBlNCA8PCAiLCAiCi0gICAgICA8PCBlNSA8PCAiKSBldmFsdWF0ZXMg
dG8gZmFsc2UsIHdoZXJlIgotICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAi
IDw8IHYxCi0gICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjIKLSAg
ICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MwotICAgICAgPDwgIlxu
IiA8PCBlNCA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHY0Ci0gICAgICA8PCAiXG4iIDw8IGU1IDw8
ICIgZXZhbHVhdGVzIHRvICIgPDwgdjU7Ci0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7
CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgcHJlZF90ZXh0IDw8ICIoIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8IGUxIDw8ICIsICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCBlMiA8PCAiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTMg
PDwgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGU0IDw8ICIsICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCBlNSA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdo
ZXJlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFs
dWF0ZXMgdG8gIiA8PCB2MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwg
ZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTUgPDwgIiBldmFsdWF0ZXMgdG8g
IiA8PCB2NTsKIH0KIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNU
fEFTU0VSVH1fUFJFRF9GT1JNQVQ1LgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgog
I2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDVfKHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCB2NCwg
djUsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAj
djMsICN2NCwgI3Y1LCB2MSwgdjIsIHYzLCB2NCwgdjUpLFwKKyAgR1RFU1RfQVNTRVJUXyhwcmVk
X2Zvcm1hdCgjdjEsICN2MiwgI3YzLCAjdjQsICN2NSwgdjEsIHYyLCB2MywgdjQsIHY1KSwgXAog
ICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCiAKIC8vIEludGVybmFsIG1hY3JvIGZvciBpbXBs
ZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQ1LiAgRG9uJ3QgdXNlCkBAIC0zNjUsNCArMzU0
LDYgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQ1SGVscGVyKGNvbnN0IGNoYXIqIHByZWRf
dGV4dCwKIAogCiAKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCisKICNlbmRpZiAgLy8gR1RFU1Rf
SU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmgKaW5kZXggZGE4MGRkYzZjNzBlZTJk
Yzc3M2VkNjc2NWE0Zjg5ZGZhOGNiMzhlOC4uZTY1MTY3MWViZGU4NTlmYzczMWI1NDU5YmRjMDY2
MWFmMDc1N2NiNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdF9wcm9kLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdF9wcm9kLmgKQEAgLTI2LDEwICsyNiwxMCBAQAogLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsg
ZGVmaW5pdGlvbnMgdXNlZnVsIGluIHByb2R1Y3Rpb24gY29kZS4KKy8vIEdvb2dsZSBDKysgVGVz
dGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgZGVmaW5pdGlvbnMgdXNlZnVsIGluIHByb2R1Y3Rp
b24gY29kZS4KKy8vIEdPT0dMRVRFU1RfQ00wMDAzIERPIE5PVCBERUxFVEUKIAogI2lmbmRlZiBH
VEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BST0RfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9H
VEVTVF9HVEVTVF9QUk9EX0hfCkBAIC00MCwxNyArNDAsMjAgQEAKIC8vCiAvLyBjbGFzcyBNeUNs
YXNzIHsKIC8vICBwcml2YXRlOgotLy8gICB2b2lkIE15TWV0aG9kKCk7Ci0vLyAgIEZSSUVORF9U
RVNUKE15Q2xhc3NUZXN0LCBNeU1ldGhvZCk7CisvLyAgIHZvaWQgUHJpdmF0ZU1ldGhvZCgpOwor
Ly8gICBGUklFTkRfVEVTVChNeUNsYXNzVGVzdCwgUHJpdmF0ZU1ldGhvZFdvcmtzKTsKIC8vIH07
CiAvLwogLy8gY2xhc3MgTXlDbGFzc1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAvLyAg
IC8vIC4uLgogLy8gfTsKIC8vCi0vLyBURVNUX0YoTXlDbGFzc1Rlc3QsIE15TWV0aG9kKSB7Ci0v
LyAgIC8vIENhbiBjYWxsIE15Q2xhc3M6Ok15TWV0aG9kKCkgaGVyZS4KKy8vIFRFU1RfRihNeUNs
YXNzVGVzdCwgUHJpdmF0ZU1ldGhvZFdvcmtzKSB7CisvLyAgIC8vIENhbiBjYWxsIE15Q2xhc3M6
OlByaXZhdGVNZXRob2QoKSBoZXJlLgogLy8gfQorLy8KKy8vIE5vdGU6IFRoZSB0ZXN0IGNsYXNz
IG11c3QgYmUgaW4gdGhlIHNhbWUgbmFtZXNwYWNlIGFzIHRoZSBjbGFzcyBiZWluZyB0ZXN0ZWQu
CisvLyBGb3IgZXhhbXBsZSwgcHV0dGluZyBNeUNsYXNzVGVzdCBpbiBhbiBhbm9ueW1vdXMgbmFt
ZXNwYWNlIHdpbGwgbm90IHdvcmsuCiAKICNkZWZpbmUgRlJJRU5EX1RFU1QodGVzdF9jYXNlX25h
bWUsIHRlc3RfbmFtZSlcCiBmcmllbmQgY2xhc3MgdGVzdF9jYXNlX25hbWUjI18jI3Rlc3RfbmFt
ZSMjX1Rlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvY3VzdG9tL1JFQURNRS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjM5MWZi
NGUyYjU3NjVjYWM4YzY5NDMzNTliMTViYmQ1ZjRmMTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vUkVBRE1F
Lm1kCkBAIC0wLDAgKzEsNTYgQEAKKyMgQ3VzdG9taXphdGlvbiBQb2ludHMKKworVGhlIGN1c3Rv
bSBkaXJlY3RvcnkgaXMgYW4gaW5qZWN0aW9uIHBvaW50IGZvciBjdXN0b20gdXNlciBjb25maWd1
cmF0aW9ucy4KKworIyMgSGVhZGVyIGBndGVzdC5oYAorCisjIyMgVGhlIGZvbGxvd2luZyBtYWNy
b3MgY2FuIGJlIGRlZmluZWQ6CisKKyogICBgR1RFU1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVSX2Ag
LSBUaGUgbmFtZSBvZiBhbiBpbXBsZW1lbnRhdGlvbiBvZgorICAgIGBPc1N0YWNrVHJhY2VHZXR0
ZXJJbnRlcmZhY2VgLgorKiAgIGBHVEVTVF9DVVNUT01fVEVNUERJUl9GVU5DVElPTl9gIC0gQW4g
b3ZlcnJpZGUgZm9yIGB0ZXN0aW5nOjpUZW1wRGlyKClgLiBTZWUKKyAgICBgdGVzdGluZzo6VGVt
cERpcmAgZm9yIHNlbWFudGljcyBhbmQgc2lnbmF0dXJlLgorCisjIyBIZWFkZXIgYGd0ZXN0LXBv
cnQuaGAKKworVGhlIGZvbGxvd2luZyBtYWNyb3MgY2FuIGJlIGRlZmluZWQ6CisKKyMjIyBGbGFn
IHJlbGF0ZWQgbWFjcm9zOgorCisqICAgYEdURVNUX0ZMQUcoZmxhZ19uYW1lKWAKKyogICBgR1RF
U1RfVVNFX09XTl9GTEFHRklMRV9GTEFHX2AgLSBEZWZpbmUgdG8gMCB3aGVuIHRoZSBzeXN0ZW0g
cHJvdmlkZXMgaXRzCisgICAgb3duIGZsYWdmaWxlIGZsYWcgcGFyc2luZy4KKyogICBgR1RFU1Rf
REVDTEFSRV9ib29sXyhuYW1lKWAKKyogICBgR1RFU1RfREVDTEFSRV9pbnQzMl8obmFtZSlgCisq
ICAgYEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhuYW1lKWAKKyogICBgR1RFU1RfREVGSU5FX2Jvb2xf
KG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpYAorKiAgIGBHVEVTVF9ERUZJTkVfaW50MzJfKG5hbWUs
IGRlZmF1bHRfdmFsLCBkb2MpYAorKiAgIGBHVEVTVF9ERUZJTkVfc3RyaW5nXyhuYW1lLCBkZWZh
dWx0X3ZhbCwgZG9jKWAKKworIyMjIExvZ2dpbmc6CisKKyogICBgR1RFU1RfTE9HXyhzZXZlcml0
eSlgCisqICAgYEdURVNUX0NIRUNLXyhjb25kaXRpb24pYAorKiAgIEZ1bmN0aW9ucyBgTG9nVG9T
dGRlcnIoKWAgYW5kIGBGbHVzaEluZm9Mb2coKWAgaGF2ZSB0byBiZSBwcm92aWRlZCB0b28uCisK
KyMjIyBUaHJlYWRpbmc6CisKKyogICBgR1RFU1RfSEFTX05PVElGSUNBVElPTl9gIC0gRW5hYmxl
ZCBpZiBOb3RpZmljYXRpb24gaXMgYWxyZWFkeSBwcm92aWRlZC4KKyogICBgR1RFU1RfSEFTX01V
VEVYX0FORF9USFJFQURfTE9DQUxfYCAtIEVuYWJsZWQgaWYgYE11dGV4YCBhbmQgYFRocmVhZExv
Y2FsYAorICAgIGFyZSBhbHJlYWR5IHByb3ZpZGVkLiBNdXN0IGFsc28gcHJvdmlkZSBgR1RFU1Rf
REVDTEFSRV9TVEFUSUNfTVVURVhfKG11dGV4KWAKKyAgICBhbmQgYEdURVNUX0RFRklORV9TVEFU
SUNfTVVURVhfKG11dGV4KWAKKyogICBgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGxv
Y2tzKWAKKyogICBgR1RFU1RfTE9DS19FWENMVURFRF8obG9ja3MpYAorCisjIyMgVW5kZXJseWlu
ZyBsaWJyYXJ5IHN1cHBvcnQgZmVhdHVyZXMKKworKiAgIGBHVEVTVF9IQVNfQ1hYQUJJX0hfYAor
CisjIyMgRXhwb3J0aW5nIEFQSSBzeW1ib2xzOgorCisqICAgYEdURVNUX0FQSV9gIC0gU3BlY2lm
aWVyIGZvciBleHBvcnRlZCBzeW1ib2xzLgorCisjIyBIZWFkZXIgYGd0ZXN0LXByaW50ZXJzLmhg
CisKKyogICBTZWUgZG9jdW1lbnRhdGlvbiBhdCBgZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaGAgZm9y
IGRldGFpbHMgb24gaG93IHRvIGRlZmluZSBhCisgICAgY3VzdG9tIHByaW50ZXIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3Rv
bS9ndGVzdC1wb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q4NWQ5NTZkMmRjMTdiZDUz
N2YyMTQyMzQwYmRmNThmNDczNzExOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXBvcnQuaApAQCAt
MCwwICsxLDM3IEBACisvLyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisvLworLy8gSW5qZWN0aW9uIHBvaW50IGZvciBjdXN0b20gdXNlciBjb25maWd1cmF0aW9ucy4g
U2VlIFJFQURNRSBmb3IgZGV0YWlscworLy8KKy8vICoqIEN1c3RvbSBpbXBsZW1lbnRhdGlvbiBz
dGFydHMgaGVyZSAqKgorCisjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VT
VE9NX0dURVNUX1BPUlRfSF8KKyNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9D
VVNUT01fR1RFU1RfUE9SVF9IXworCisjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5U
RVJOQUxfQ1VTVE9NX0dURVNUX1BPUlRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXByaW50ZXJzLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVz
dC1wcmludGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViNDQ2N2FiY2FiZWE3ZmY3NmY5ZDJkNTI3Mzg3Yzlk
YTgxMDE0OGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wcmludGVycy5oCkBAIC0wLDAgKzEsNDIg
QEAKKy8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
Ly8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBU
aGlzIGZpbGUgcHJvdmlkZXMgYW4gaW5qZWN0aW9uIHBvaW50IGZvciBjdXN0b20gcHJpbnRlcnMg
aW4gYSBsb2NhbAorLy8gaW5zdGFsbGF0aW9uIG9mIGdUZXN0LgorLy8gSXQgd2lsbCBiZSBpbmNs
dWRlZCBmcm9tIGd0ZXN0LXByaW50ZXJzLmggYW5kIHRoZSBvdmVycmlkZXMgaW4gdGhpcyBmaWxl
CisvLyB3aWxsIGJlIHZpc2libGUgdG8gZXZlcnlvbmUuCisvLworLy8gSW5qZWN0aW9uIHBvaW50
IGZvciBjdXN0b20gdXNlciBjb25maWd1cmF0aW9ucy4gU2VlIFJFQURNRSBmb3IgZGV0YWlscwor
Ly8KKy8vICoqIEN1c3RvbSBpbXBsZW1lbnRhdGlvbiBzdGFydHMgaGVyZSAqKgorCisjaWZuZGVm
IEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX1BSSU5URVJTX0hfCisj
ZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX1BSSU5URVJT
X0hfCisKKyNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RF
U1RfUFJJTlRFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjOGUw
N2JlMjNmMWZkNjE1OWFmZWYyZWVmZDc0NDQwMzRkZDA2MDQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVz
dC5oCkBAIC0wLDAgKzEsMzcgQEAKKy8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgorLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
Ky8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
Ky8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKy8vCisvLyBJbmplY3Rpb24gcG9pbnQgZm9yIGN1c3RvbSB1c2VyIGNvbmZpZ3Vy
YXRpb25zLiBTZWUgUkVBRE1FIGZvciBkZXRhaWxzCisvLworLy8gKiogQ3VzdG9tIGltcGxlbWVu
dGF0aW9uIHN0YXJ0cyBoZXJlICoqCisKKyNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRF
Uk5BTF9DVVNUT01fR1RFU1RfSF8KKyNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5B
TF9DVVNUT01fR1RFU1RfSF8KKworI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVS
TkFMX0NVU1RPTV9HVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
aW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRl
c3QtaW50ZXJuYWwuaAppbmRleCBlNDMzMDg0OGQ0ZWFlNTcwZjI4MGRhYzU3Y2YwMGIyOTcyMmM3
ZDBjLi4wYTliNDJjOGE1NzJhODcxOTRjNjUxMDkwM2UyMWVhMjI2MGZhYzVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRl
YXRoLXRlc3QtaW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaApAQCAtMjcsMTcgKzI3
LDE4IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQXV0aG9yczog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiksIGVlZmFjbUBnbWFpbC5jb20gKFNlYW4gTWNh
ZmVlKQotLy8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVz
dCkKKy8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrIChHb29n
bGUgVGVzdCkKIC8vCiAvLyBUaGlzIGhlYWRlciBmaWxlIGRlZmluZXMgaW50ZXJuYWwgdXRpbGl0
aWVzIG5lZWRlZCBmb3IgaW1wbGVtZW50aW5nCiAvLyBkZWF0aCB0ZXN0cy4gIFRoZXkgYXJlIHN1
YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8g
Tk9UIERFTEVURQogCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1Rf
REVBVEhfVEVTVF9JTlRFUk5BTF9IXwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVS
TkFMX0dURVNUX0RFQVRIX1RFU1RfSU5URVJOQUxfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVy
bmFsL2d0ZXN0LWludGVybmFsLmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50
ZXJuYWwuaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+CiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5h
bWVzcGFjZSBpbnRlcm5hbCB7CkBAIC01MSw2ICs1Miw5IEBAIGNvbnN0IGNoYXIga0ludGVybmFs
UnVuRGVhdGhUZXN0RmxhZ1tdID0gImludGVybmFsX3J1bl9kZWF0aF90ZXN0IjsKIAogI2lmIEdU
RVNUX0hBU19ERUFUSF9URVNUCiAKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQy
NTEgXAorLyogY2xhc3MgQSBuZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBi
eSBjbGllbnRzIG9mIGNsYXNzIEIgKi8pCisKIC8vIERlYXRoVGVzdCBpcyBhIGNsYXNzIHRoYXQg
aGlkZXMgbXVjaCBvZiB0aGUgY29tcGxleGl0eSBvZiB0aGUKIC8vIEdURVNUX0RFQVRIX1RFU1Rf
IG1hY3JvLiAgSXQgaXMgYWJzdHJhY3Q7IGl0cyBzdGF0aWMgQ3JlYXRlIG1ldGhvZAogLy8gcmV0
dXJucyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiB0aGUgcHJldmFpbGluZyBkZWF0
aCB0ZXN0CkBAIC05Niw4ICsxMDAsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBEZWF0aFRlc3Qgewog
ICAvLyB0ZXN0LCB0aGVuIHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlLgogICBlbnVtIFRlc3RSb2xl
IHsgT1ZFUlNFRV9URVNULCBFWEVDVVRFX1RFU1QgfTsKIAotICAvLyBBbiBlbnVtZXJhdGlvbiBv
ZiB0aGUgdHdvIHJlYXNvbnMgdGhhdCBhIHRlc3QgbWlnaHQgYmUgYWJvcnRlZC4KLSAgZW51bSBB
Ym9ydFJlYXNvbiB7IFRFU1RfRU5DT1VOVEVSRURfUkVUVVJOX1NUQVRFTUVOVCwgVEVTVF9ESURf
Tk9UX0RJRSB9OworICAvLyBBbiBlbnVtZXJhdGlvbiBvZiB0aGUgdGhyZWUgcmVhc29ucyB0aGF0
IGEgdGVzdCBtaWdodCBiZSBhYm9ydGVkLgorICBlbnVtIEFib3J0UmVhc29uIHsKKyAgICBURVNU
X0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQsCisgICAgVEVTVF9USFJFV19FWENFUFRJT04s
CisgICAgVEVTVF9ESURfTk9UX0RJRQorICB9OwogCiAgIC8vIEFzc3VtZXMgb25lIG9mIHRoZSBh
Ym92ZSByb2xlcy4KICAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCkgPSAwOwpAQCAtMTIx
LDE1ICsxMjksMTcgQEAgY2xhc3MgR1RFU1RfQVBJXyBEZWF0aFRlc3QgewogICAvLyB0aGUgbGFz
dCBkZWF0aCB0ZXN0LgogICBzdGF0aWMgY29uc3QgY2hhciogTGFzdE1lc3NhZ2UoKTsKIAotICBz
dGF0aWMgdm9pZCBzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKKyAgc3RhdGljIHZvaWQgc2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKGNvbnN0IHN0
ZDo6c3RyaW5nJiBtZXNzYWdlKTsKIAogIHByaXZhdGU6CiAgIC8vIEEgc3RyaW5nIGNvbnRhaW5p
bmcgYSBkZXNjcmlwdGlvbiBvZiB0aGUgb3V0Y29tZSBvZiB0aGUgbGFzdCBkZWF0aCB0ZXN0Lgot
ICBzdGF0aWMgU3RyaW5nIGxhc3RfZGVhdGhfdGVzdF9tZXNzYWdlXzsKKyAgc3RhdGljIHN0ZDo6
c3RyaW5nIGxhc3RfZGVhdGhfdGVzdF9tZXNzYWdlXzsKIAogICBHVEVTVF9ESVNBTExPV19DT1BZ
X0FORF9BU1NJR05fKERlYXRoVGVzdCk7CiB9OwogCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5H
U19QT1BfKCkgIC8vICA0MjUxCisKIC8vIEZhY3RvcnkgaW50ZXJmYWNlIGZvciBkZWF0aCB0ZXN0
cy4gIE1heSBiZSBtb2NrZWQgb3V0IGZvciB0ZXN0aW5nLgogY2xhc3MgRGVhdGhUZXN0RmFjdG9y
eSB7CiAgcHVibGljOgpAQCAtMTQ5LDkgKzE1OSwzNCBAQCBjbGFzcyBEZWZhdWx0RGVhdGhUZXN0
RmFjdG9yeSA6IHB1YmxpYyBEZWF0aFRlc3RGYWN0b3J5IHsKIC8vIGJ5IGEgc2lnbmFsLCBvciBl
eGl0ZWQgbm9ybWFsbHkgd2l0aCBhIG5vbnplcm8gZXhpdCBjb2RlLgogR1RFU1RfQVBJXyBib29s
IEV4aXRlZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1cyk7CiAKKy8vIFRyYXBzIEMrKyBl
eGNlcHRpb25zIGVzY2FwaW5nIHN0YXRlbWVudCBhbmQgcmVwb3J0cyB0aGVtIGFzIHRlc3QKKy8v
IGZhaWx1cmVzLiBOb3RlIHRoYXQgdHJhcHBpbmcgU0VIIGV4Y2VwdGlvbnMgaXMgbm90IGltcGxl
bWVudGVkIGhlcmUuCisjIGlmIEdURVNUX0hBU19FWENFUFRJT05TCisjICBkZWZpbmUgR1RFU1Rf
RVhFQ1VURV9ERUFUSF9URVNUX1NUQVRFTUVOVF8oc3RhdGVtZW50LCBkZWF0aF90ZXN0KSBcCisg
IHRyeSB7IFwKKyAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVM
T1dfKHN0YXRlbWVudCk7IFwKKyAgfSBjYXRjaCAoY29uc3QgOjpzdGQ6OmV4Y2VwdGlvbiYgZ3Rl
c3RfZXhjZXB0aW9uKSB7IFwKKyAgICBmcHJpbnRmKFwKKyAgICAgICAgc3RkZXJyLCBcCisgICAg
ICAgICJcbiVzOiBDYXVnaHQgc3RkOjpleGNlcHRpb24tZGVyaXZlZCBleGNlcHRpb24gZXNjYXBp
bmcgdGhlICIgXAorICAgICAgICAiZGVhdGggdGVzdCBzdGF0ZW1lbnQuIEV4Y2VwdGlvbiBtZXNz
YWdlOiAlc1xuIiwgXAorICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRGaWxlTG9j
YXRpb24oX19GSUxFX18sIF9fTElORV9fKS5jX3N0cigpLCBcCisgICAgICAgIGd0ZXN0X2V4Y2Vw
dGlvbi53aGF0KCkpOyBcCisgICAgZmZsdXNoKHN0ZGVycik7IFwKKyAgICBkZWF0aF90ZXN0LT5B
Ym9ydCg6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OlRFU1RfVEhSRVdfRVhDRVBUSU9O
KTsgXAorICB9IGNhdGNoICguLi4pIHsgXAorICAgIGRlYXRoX3Rlc3QtPkFib3J0KDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkRlYXRoVGVzdDo6VEVTVF9USFJFV19FWENFUFRJT04pOyBcCisgIH0KKwor
IyBlbHNlCisjICBkZWZpbmUgR1RFU1RfRVhFQ1VURV9ERUFUSF9URVNUX1NUQVRFTUVOVF8oc3Rh
dGVtZW50LCBkZWF0aF90ZXN0KSBcCisgIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVf
V0FSTklOR19CRUxPV18oc3RhdGVtZW50KQorCisjIGVuZGlmCisKIC8vIFRoaXMgbWFjcm8gaXMg
Zm9yIGltcGxlbWVudGluZyBBU1NFUlRfREVBVEgqLCBFWFBFQ1RfREVBVEgqLAogLy8gQVNTRVJU
X0VYSVQqLCBhbmQgRVhQRUNUX0VYSVQqLgotI2RlZmluZSBHVEVTVF9ERUFUSF9URVNUXyhzdGF0
ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIGZhaWwpIFwKKyMgZGVmaW5lIEdURVNUX0RFQVRIX1RF
U1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgZmFpbCkgXAogICBHVEVTVF9BTUJJR1VP
VVNfRUxTRV9CTE9DS0VSXyBcCiAgIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVl
KCkpIHsgXAogICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6OlJFJiBndGVzdF9yZWdleCA9
IChyZWdleCk7IFwKQEAgLTE3MiwxMCArMjA3LDEyIEBAIEdURVNUX0FQSV8gYm9vbCBFeGl0ZWRV
bnN1Y2Nlc3NmdWxseShpbnQgZXhpdF9zdGF0dXMpOwogICAgICAgICBjYXNlIDo6dGVzdGluZzo6
aW50ZXJuYWw6OkRlYXRoVGVzdDo6RVhFQ1VURV9URVNUOiB7IFwKICAgICAgICAgICA6OnRlc3Rp
bmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OlJldHVyblNlbnRpbmVsIFwKICAgICAgICAgICAgICAg
Z3Rlc3Rfc2VudGluZWwoZ3Rlc3RfZHQpOyBcCi0gICAgICAgICAgR1RFU1RfU1VQUFJFU1NfVU5S
RUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCisgICAgICAgICAgR1RF
U1RfRVhFQ1VURV9ERUFUSF9URVNUX1NUQVRFTUVOVF8oc3RhdGVtZW50LCBndGVzdF9kdCk7IFwK
ICAgICAgICAgICBndGVzdF9kdC0+QWJvcnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0
OjpURVNUX0RJRF9OT1RfRElFKTsgXAogICAgICAgICAgIGJyZWFrOyBcCiAgICAgICAgIH0gXAor
ICAgICAgICBkZWZhdWx0OiBcCisgICAgICAgICAgYnJlYWs7IFwKICAgICAgIH0gXAogICAgIH0g
XAogICB9IGVsc2UgXApAQCAtMTg0LDEyICsyMjEsMjcgQEAgR1RFU1RfQVBJXyBib29sIEV4aXRl
ZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1cyk7CiAvLyBUaGUgc3ltYm9sICJmYWlsIiBo
ZXJlIGV4cGFuZHMgdG8gc29tZXRoaW5nIGludG8gd2hpY2ggYSBtZXNzYWdlCiAvLyBjYW4gYmUg
c3RyZWFtZWQuCiAKKy8vIFRoaXMgbWFjcm8gaXMgZm9yIGltcGxlbWVudGluZyBBU1NFUlQvRVhQ
RUNUX0RFQlVHX0RFQVRIIHdoZW4gY29tcGlsZWQgaW4KKy8vIE5ERUJVRyBtb2RlLiBJbiB0aGlz
IGNhc2Ugd2UgbmVlZCB0aGUgc3RhdGVtZW50cyB0byBiZSBleGVjdXRlZCBhbmQgdGhlIG1hY3Jv
CisvLyBtdXN0IGFjY2VwdCBhIHN0cmVhbWVkIG1lc3NhZ2UgZXZlbiB0aG91Z2ggdGhlIG1lc3Nh
Z2UgaXMgbmV2ZXIgcHJpbnRlZC4KKy8vIFRoZSByZWdleCBvYmplY3QgaXMgbm90IGV2YWx1YXRl
ZCwgYnV0IGl0IGlzIHVzZWQgdG8gcHJldmVudCAidW51c2VkIgorLy8gd2FybmluZ3MgYW5kIHRv
IGF2b2lkIGFuIGV4cHJlc3Npb24gdGhhdCBkb2Vzbid0IGNvbXBpbGUgaW4gZGVidWcgbW9kZS4K
KyNkZWZpbmUgR1RFU1RfRVhFQ1VURV9TVEFURU1FTlRfKHN0YXRlbWVudCwgcmVnZXgpICAgICAg
ICAgICAgIFwKKyAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUo
KSkgeyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJM
RV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKKyAgfSBlbHNlIGlmICghOjp0ZXN0
aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7ICAgICAgICAgICAgIFwKKyAgICBjb25zdCA6
OnRlc3Rpbmc6OmludGVybmFsOjpSRSYgZ3Rlc3RfcmVnZXggPSAocmVnZXgpOyAgICAgIFwKKyAg
ICBzdGF0aWNfY2FzdDx2b2lkPihndGVzdF9yZWdleCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgfSBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICA6OnRlc3Rpbmc6Ok1lc3NhZ2UoKQorCiAvLyBBIGNsYXNzIHJl
cHJlc2VudGluZyB0aGUgcGFyc2VkIGNvbnRlbnRzIG9mIHRoZQogLy8gLS1ndGVzdF9pbnRlcm5h
bF9ydW5fZGVhdGhfdGVzdCBmbGFnLCBhcyBpdCBleGlzdGVkIHdoZW4KIC8vIFJVTl9BTExfVEVT
VFMgd2FzIGNhbGxlZC4KIGNsYXNzIEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyB7CiAgcHVibGlj
OgotICBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoY29uc3QgU3RyaW5nJiBhX2ZpbGUsCisgIElu
dGVybmFsUnVuRGVhdGhUZXN0RmxhZyhjb25zdCBzdGQ6OnN0cmluZyYgYV9maWxlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGFfbGluZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBhbl9pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhX3dyaXRl
X2ZkKQpAQCAtMjAxLDEzICsyNTMsMTMgQEAgY2xhc3MgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFn
IHsKICAgICAgIHBvc2l4OjpDbG9zZSh3cml0ZV9mZF8pOwogICB9CiAKLSAgU3RyaW5nIGZpbGUo
KSBjb25zdCB7IHJldHVybiBmaWxlXzsgfQorICBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZSgpIGNv
bnN0IHsgcmV0dXJuIGZpbGVfOyB9CiAgIGludCBsaW5lKCkgY29uc3QgeyByZXR1cm4gbGluZV87
IH0KICAgaW50IGluZGV4KCkgY29uc3QgeyByZXR1cm4gaW5kZXhfOyB9CiAgIGludCB3cml0ZV9m
ZCgpIGNvbnN0IHsgcmV0dXJuIHdyaXRlX2ZkXzsgfQogCiAgcHJpdmF0ZToKLSAgU3RyaW5nIGZp
bGVfOworICBzdGQ6OnN0cmluZyBmaWxlXzsKICAgaW50IGxpbmVfOwogICBpbnQgaW5kZXhfOwog
ICBpbnQgd3JpdGVfZmRfOwpAQCAtMjIwLDUzICsyNzIsNiBAQCBjbGFzcyBJbnRlcm5hbFJ1bkRl
YXRoVGVzdEZsYWcgewogLy8gdGhlIGZsYWcgaXMgc3BlY2lmaWVkOyBvdGhlcndpc2UgcmV0dXJu
cyBOVUxMLgogSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBQYXJzZUludGVybmFsUnVuRGVhdGhU
ZXN0RmxhZygpOwogCi0jZWxzZSAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotLy8gVGhpcyBt
YWNybyBpcyB1c2VkIGZvciBpbXBsZW1lbnRpbmcgbWFjcm9zIHN1Y2ggYXMKLS8vIEVYUEVDVF9E
RUFUSF9JRl9TVVBQT1JURUQgYW5kIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgb24gc3lzdGVt
cyB3aGVyZQotLy8gZGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQuIFRob3NlIG1hY3JvcyBt
dXN0IGNvbXBpbGUgb24gc3VjaCBzeXN0ZW1zCi0vLyBpZmYgRVhQRUNUX0RFQVRIIGFuZCBBU1NF
UlRfREVBVEggY29tcGlsZSB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMgb24KLS8vIHN5c3RlbXMg
dGhhdCBzdXBwb3J0IGRlYXRoIHRlc3RzLiBUaGlzIGFsbG93cyBvbmUgdG8gd3JpdGUgc3VjaCBh
IG1hY3JvCi0vLyBvbiBhIHN5c3RlbSB0aGF0IGRvZXMgbm90IHN1cHBvcnQgZGVhdGggdGVzdHMg
YW5kIGJlIHN1cmUgdGhhdCBpdCB3aWxsCi0vLyBjb21waWxlIG9uIGEgZGVhdGgtdGVzdCBzdXBw
b3J0aW5nIHN5c3RlbS4KLS8vCi0vLyBQYXJhbWV0ZXJzOgotLy8gICBzdGF0ZW1lbnQgLSAgQSBz
dGF0ZW1lbnQgdGhhdCBhIG1hY3JvIHN1Y2ggYXMgRVhQRUNUX0RFQVRIIHdvdWxkIHRlc3QKLS8v
ICAgICAgICAgICAgICAgIGZvciBwcm9ncmFtIHRlcm1pbmF0aW9uLiBUaGlzIG1hY3JvIGhhcyB0
byBtYWtlIHN1cmUgdGhpcwotLy8gICAgICAgICAgICAgICAgc3RhdGVtZW50IGlzIGNvbXBpbGVk
IGJ1dCBub3QgZXhlY3V0ZWQsIHRvIGVuc3VyZSB0aGF0Ci0vLyAgICAgICAgICAgICAgICBFWFBF
Q1RfREVBVEhfSUZfU1VQUE9SVEVEIGNvbXBpbGVzIHdpdGggYSBjZXJ0YWluCi0vLyAgICAgICAg
ICAgICAgICBwYXJhbWV0ZXIgaWZmIEVYUEVDVF9ERUFUSCBjb21waWxlcyB3aXRoIGl0LgotLy8g
ICByZWdleCAgICAgLSAgQSByZWdleCB0aGF0IGEgbWFjcm8gc3VjaCBhcyBFWFBFQ1RfREVBVEgg
d291bGQgdXNlIHRvIHRlc3QKLS8vICAgICAgICAgICAgICAgIHRoZSBvdXRwdXQgb2Ygc3RhdGVt
ZW50LiAgVGhpcyBwYXJhbWV0ZXIgaGFzIHRvIGJlCi0vLyAgICAgICAgICAgICAgICBjb21waWxl
ZCBidXQgbm90IGV2YWx1YXRlZCBieSB0aGlzIG1hY3JvLCB0byBlbnN1cmUgdGhhdAotLy8gICAg
ICAgICAgICAgICAgdGhpcyBtYWNybyBvbmx5IGFjY2VwdHMgZXhwcmVzc2lvbnMgdGhhdCBhIG1h
Y3JvIHN1Y2ggYXMKLS8vICAgICAgICAgICAgICAgIEVYUEVDVF9ERUFUSCB3b3VsZCBhY2NlcHQu
Ci0vLyAgIHRlcm1pbmF0b3IgLSBNdXN0IGJlIGFuIGVtcHR5IHN0YXRlbWVudCBmb3IgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRAotLy8gICAgICAgICAgICAgICAgYW5kIGEgcmV0dXJuIHN0YXRl
bWVudCBmb3IgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRC4KLS8vICAgICAgICAgICAgICAgIFRo
aXMgZW5zdXJlcyB0aGF0IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgd2lsbCBub3QKLS8vICAg
ICAgICAgICAgICAgIGNvbXBpbGUgaW5zaWRlIGZ1bmN0aW9ucyB3aGVyZSBBU1NFUlRfREVBVEgg
ZG9lc24ndAotLy8gICAgICAgICAgICAgICAgY29tcGlsZS4KLS8vCi0vLyAgVGhlIGJyYW5jaCB0
aGF0IGhhcyBhbiBhbHdheXMgZmFsc2UgY29uZGl0aW9uIGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQK
LS8vICBzdGF0ZW1lbnQgYW5kIHJlZ2V4IGFyZSBjb21waWxlZCAoYW5kIHRodXMgc3ludGFjdGlj
YWxseSBjb3JyZWN0KSBidXQKLS8vICBuZXZlciBleGVjdXRlZC4gVGhlIHVucmVhY2hhYmxlIGNv
ZGUgbWFjcm8gcHJvdGVjdHMgdGhlIHRlcm1pbmF0b3IKLS8vICBzdGF0ZW1lbnQgZnJvbSBnZW5l
cmF0aW5nIGFuICd1bnJlYWNoYWJsZSBjb2RlJyB3YXJuaW5nIGluIGNhc2UKLS8vICBzdGF0ZW1l
bnQgdW5jb25kaXRpb25hbGx5IHJldHVybnMgb3IgdGhyb3dzLiBUaGUgTWVzc2FnZSBjb25zdHJ1
Y3RvciBhdAotLy8gIHRoZSBlbmQgYWxsb3dzIHRoZSBzeW50YXggb2Ygc3RyZWFtaW5nIGFkZGl0
aW9uYWwgbWVzc2FnZXMgaW50byB0aGUKLS8vICBtYWNybywgZm9yIGNvbXBpbGF0aW9uYWwgY29t
cGF0aWJpbGl0eSB3aXRoIEVYUEVDVF9ERUFUSC9BU1NFUlRfREVBVEguCi0jZGVmaW5lIEdURVNU
X1VOU1VQUE9SVEVEX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcmVnZXgsIHRlcm1pbmF0b3IpIFwK
LSAgICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0gICAgaWYgKDo6dGVzdGluZzo6
aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBcCi0gICAgICBHVEVTVF9MT0dfKFdBUk5JTkcpIFwK
LSAgICAgICAgICA8PCAiRGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0
Zm9ybS5cbiIgXAotICAgICAgICAgIDw8ICJTdGF0ZW1lbnQgJyIgI3N0YXRlbWVudCAiJyBjYW5u
b3QgYmUgdmVyaWZpZWQuIjsgXAotICAgIH0gZWxzZSBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
QWx3YXlzRmFsc2UoKSkgeyBcCi0gICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpSRTo6UGFydGlh
bE1hdGNoKCIuKiIsIChyZWdleCkpOyBcCi0gICAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJM
RV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKLSAgICAgIHRlcm1pbmF0b3I7IFwK
LSAgICB9IGVsc2UgXAotICAgICAgOjp0ZXN0aW5nOjpNZXNzYWdlKCkKLQogI2VuZGlmICAvLyBH
VEVTVF9IQVNfREVBVEhfVEVTVAogCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
ZmlsZXBhdGguaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtZmlsZXBhdGguaAppbmRleCA0Yjc2ZDc5NTA2YjAyNmFiYTM3MTY0NzJmYzQzY2Vm
YzFhN2UzODhhLi5hZTM4ZDk1YmY4NDRmYTlkYzIxNzM5Y2Y4MjEyNzZkNWIzNDE3ZTNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LWZpbGVwYXRoLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9ndGVzdC1maWxlcGF0aC5oCkBAIC0yNywyMCArMjcsMjMgQEAKIC8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRob3I6IGtlaXRoLnJheUBnbWFpbC5j
b20gKEtlaXRoIFJheSkKLS8vCiAvLyBHb29nbGUgVGVzdCBmaWxlcGF0aCB1dGlsaXRpZXMKIC8v
CiAvLyBUaGlzIGhlYWRlciBmaWxlIGRlY2xhcmVzIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyB1c2Vk
IGludGVybmFsbHkgYnkKIC8vIEdvb2dsZSBUZXN0LiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFu
Z2Ugd2l0aG91dCBub3RpY2UuCiAvLwotLy8gVGhpcyBmaWxlIGlzICNpbmNsdWRlZCBpbiA8Z3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4uCisvLyBUaGlzIGZpbGUgaXMgI2luY2x1ZGVk
IGluIGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmguCiAvLyBEbyBub3QgaW5jbHVkZSB0
aGlzIGhlYWRlciBmaWxlIHNlcGFyYXRlbHkhCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5P
VCBERUxFVEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0ZJ
TEVQQVRIX0hfCiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfRklM
RVBBVEhfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oPgorI2lu
Y2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgorCitHVEVTVF9ESVNBQkxFX01T
Q19XQVJOSU5HU19QVVNIXyg0MjUxIFwKKy8qIGNsYXNzIEEgbmVlZHMgdG8gaGF2ZSBkbGwtaW50
ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50cyBvZiBjbGFzcyBCICovKQogCiBuYW1lc3BhY2Ug
dGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewpAQCAtNjEsMTEgKzY0LDcgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBGaWxlUGF0aCB7CiAgIEZpbGVQYXRoKCkgOiBwYXRobmFtZV8oIiIpIHsgfQog
ICBGaWxlUGF0aChjb25zdCBGaWxlUGF0aCYgcmhzKSA6IHBhdGhuYW1lXyhyaHMucGF0aG5hbWVf
KSB7IH0KIAotICBleHBsaWNpdCBGaWxlUGF0aChjb25zdCBjaGFyKiBwYXRobmFtZSkgOiBwYXRo
bmFtZV8ocGF0aG5hbWUpIHsKLSAgICBOb3JtYWxpemUoKTsKLSAgfQotCi0gIGV4cGxpY2l0IEZp
bGVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aG5hbWUpIDogcGF0aG5hbWVfKHBhdGhuYW1lKSB7Cisg
IGV4cGxpY2l0IEZpbGVQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRobmFtZSkgOiBwYXRobmFt
ZV8ocGF0aG5hbWUpIHsKICAgICBOb3JtYWxpemUoKTsKICAgfQogCkBAIC03OCw3ICs3Nyw3IEBA
IGNsYXNzIEdURVNUX0FQSV8gRmlsZVBhdGggewogICAgIHBhdGhuYW1lXyA9IHJocy5wYXRobmFt
ZV87CiAgIH0KIAotICBTdHJpbmcgVG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBwYXRobmFtZV87
IH0KKyAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHBhdGhuYW1l
XzsgfQogICBjb25zdCBjaGFyKiBjX3N0cigpIGNvbnN0IHsgcmV0dXJuIHBhdGhuYW1lXy5jX3N0
cigpOyB9CiAKICAgLy8gUmV0dXJucyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSwgb3Ig
IiIgaWYgdW5zdWNjZXNzZnVsLgpAQCAtMTExLDggKzExMCw4IEBAIGNsYXNzIEdURVNUX0FQSV8g
RmlsZVBhdGggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBGaWxlUGF0aCYgYmFzZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBleHRlbnNpb24pOwogCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYg
dGhlIHBhdGggaXMgTlVMTCBvciAiIi4KLSAgYm9vbCBJc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
Y19zdHIoKSA9PSBOVUxMIHx8ICpjX3N0cigpID09ICdcMCc7IH0KKyAgLy8gUmV0dXJucyB0cnVl
IGlmZiB0aGUgcGF0aCBpcyAiIi4KKyAgYm9vbCBJc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gcGF0
aG5hbWVfLmVtcHR5KCk7IH0KIAogICAvLyBJZiBpbnB1dCBuYW1lIGhhcyBhIHRyYWlsaW5nIHNl
cGFyYXRvciBjaGFyYWN0ZXIsIHJlbW92ZXMgaXQgYW5kIHJldHVybnMKICAgLy8gdGhlIG5hbWUs
IG90aGVyd2lzZSByZXR1cm4gdGhlIG5hbWUgc3RyaW5nIHVubW9kaWZpZWQuCkBAIC0yMDEsMTAg
KzIwMCwxMiBAQCBjbGFzcyBHVEVTVF9BUElfIEZpbGVQYXRoIHsKICAgLy8gc2VwYXJhdG9ycy4g
UmV0dXJucyBOVUxMIGlmIG5vIHBhdGggc2VwYXJhdG9yIHdhcyBmb3VuZC4KICAgY29uc3QgY2hh
ciogRmluZExhc3RQYXRoU2VwYXJhdG9yKCkgY29uc3Q7CiAKLSAgU3RyaW5nIHBhdGhuYW1lXzsK
KyAgc3RkOjpzdHJpbmcgcGF0aG5hbWVfOwogfTsgIC8vIGNsYXNzIEZpbGVQYXRoCiAKIH0gIC8v
IG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAorR1RFU1RfRElT
QUJMRV9NU0NfV0FSTklOR1NfUE9QXygpICAvLyAgNDI1MQorCiAjZW5kaWYgIC8vIEdURVNUX0lO
Q0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfRklMRVBBVEhfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
aW50ZXJuYWwuaAppbmRleCAzMWE2NmU5OWQzYzQ4MjE1MWU0MGZjMzVhNDAyNzAwNjkwMzJhMWQ1
Li5iNzYyZjYxZmM1M2MzZGI5Y2ZiNzUzOTQwZDkxYjVkNTRhYjM2MzU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVy
bmFsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC1pbnRlcm5hbC5oCkBAIC0yNywzNCArMjcsNDMgQEAKIC8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRob3JzOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcg
V2FuKSwgZWVmYWNtQGdtYWlsLmNvbSAoU2VhbiBNY2FmZWUpCi0vLwotLy8gVGhlIEdvb2dsZSBD
KysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8gVGhlIEdvb2dsZSBDKysgVGVz
dGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQogLy8KIC8vIFRoaXMgaGVh
ZGVyIGZpbGUgZGVjbGFyZXMgZnVuY3Rpb25zIGFuZCBtYWNyb3MgdXNlZCBpbnRlcm5hbGx5IGJ5
CiAvLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90
aWNlLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RF
U1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9JTlRFUk5BTF9IXwogI2RlZmluZSBHVEVT
VF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0lOVEVSTkFMX0hfCiAKLSNpbmNsdWRlIDxn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oIgogCiAjaWYgR1RFU1RfT1NfTElOVVgKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNp
bmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvd2FpdC5oPgotI2luY2x1ZGUgPHVu
aXN0ZC5oPgorIyBpbmNsdWRlIDxzdGRsaWIuaD4KKyMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cisj
IGluY2x1ZGUgPHN5cy93YWl0Lmg+CisjIGluY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmICAvLyBH
VEVTVF9PU19MSU5VWAogCisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKyMgaW5jbHVkZSA8c3Rk
ZXhjZXB0PgorI2VuZGlmCisKICNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPGZsb2F0Lmg+
CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8aW9tYW5pcD4KICNpbmNsdWRlIDxsaW1p
dHM+CisjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHNldD4KKyNpbmNsdWRlIDxzdHJpbmc+Cisj
aW5jbHVkZSA8dmVjdG9yPgogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaD4KLSNpbmNsdWRl
IDxndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVz
dC1tZXNzYWdlLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCIK
KyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKKyNpbmNsdWRlICJndGVz
dC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCIKIAogLy8gRHVlIHRvIEMrKyBwcmVwcm9jZXNz
b3Igd2VpcmRuZXNzLCB3ZSBuZWVkIGRvdWJsZSBpbmRpcmVjdGlvbiB0bwogLy8gY29uY2F0ZW5h
dGUgdHdvIHRva2VucyB3aGVuIG9uZSBvZiB0aGVtIGlzIF9fTElORV9fLiAgV3JpdGluZwpAQCAt
NjcsMzkgKzc2LDE1IEBACiAjZGVmaW5lIEdURVNUX0NPTkNBVF9UT0tFTl8oZm9vLCBiYXIpIEdU
RVNUX0NPTkNBVF9UT0tFTl9JTVBMXyhmb28sIGJhcikKICNkZWZpbmUgR1RFU1RfQ09OQ0FUX1RP
S0VOX0lNUExfKGZvbywgYmFyKSBmb28gIyMgYmFyCiAKLS8vIEdvb2dsZSBUZXN0IGRlZmluZXMg
dGhlIHRlc3Rpbmc6Ok1lc3NhZ2UgY2xhc3MgdG8gYWxsb3cgY29uc3RydWN0aW9uIG9mCi0vLyB0
ZXN0IG1lc3NhZ2VzIHZpYSB0aGUgPDwgb3BlcmF0b3IuICBUaGUgaWRlYSBpcyB0aGF0IGFueXRo
aW5nCi0vLyBzdHJlYW1hYmxlIHRvIHN0ZDo6b3N0cmVhbSBjYW4gYmUgc3RyZWFtZWQgdG8gYSB0
ZXN0aW5nOjpNZXNzYWdlLgotLy8gVGhpcyBhbGxvd3MgYSB1c2VyIHRvIHVzZSBoaXMgb3duIHR5
cGVzIGluIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgYnkKLS8vIG92ZXJsb2FkaW5nIHRoZSA8PCBv
cGVyYXRvci4KLS8vCi0vLyB1dGlsL2d0bC9zdGxfbG9nZ2luZy1pbmwuaCBvdmVybG9hZHMgPDwg
Zm9yIFNUTCBjb250YWluZXJzLiAgVGhlc2UKLS8vIG92ZXJsb2FkcyBjYW5ub3QgYmUgZGVmaW5l
ZCBpbiB0aGUgc3RkIG5hbWVzcGFjZSwgYXMgdGhhdCB3aWxsIGJlCi0vLyB1bmRlZmluZWQgYmVo
YXZpb3IuICBUaGVyZWZvcmUsIHRoZXkgYXJlIGRlZmluZWQgaW4gdGhlIGdsb2JhbAotLy8gbmFt
ZXNwYWNlIGluc3RlYWQuCi0vLwotLy8gQysrJ3Mgc3ltYm9sIGxvb2t1cCBydWxlIChpLmUuIEtv
ZW5pZyBsb29rdXApIHNheXMgdGhhdCB0aGVzZQotLy8gb3ZlcmxvYWRzIGFyZSB2aXNpYmxlIGlu
IGVpdGhlciB0aGUgc3RkIG5hbWVzcGFjZSBvciB0aGUgZ2xvYmFsCi0vLyBuYW1lc3BhY2UsIGJ1
dCBub3Qgb3RoZXIgbmFtZXNwYWNlcywgaW5jbHVkaW5nIHRoZSB0ZXN0aW5nCi0vLyBuYW1lc3Bh
Y2Ugd2hpY2ggR29vZ2xlIFRlc3QncyBNZXNzYWdlIGNsYXNzIGlzIGluLgotLy8KLS8vIFRvIGFs
bG93IFNUTCBjb250YWluZXJzIChhbmQgb3RoZXIgdHlwZXMgdGhhdCBoYXMgYSA8PCBvcGVyYXRv
cgotLy8gZGVmaW5lZCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZSkgdG8gYmUgdXNlZCBpbiBHb29n
bGUgVGVzdCBhc3NlcnRpb25zLAotLy8gdGVzdGluZzo6TWVzc2FnZSBtdXN0IGFjY2VzcyB0aGUg
Y3VzdG9tIDw8IG9wZXJhdG9yIGZyb20gdGhlIGdsb2JhbAotLy8gbmFtZXNwYWNlLiAgSGVuY2Ug
dGhpcyBoZWxwZXIgZnVuY3Rpb24uCi0vLwotLy8gTm90ZTogSmVmZnJleSBZYXNza2luIHN1Z2dl
c3RlZCBhbiBhbHRlcm5hdGl2ZSBmaXggYnkgInVzaW5nCi0vLyA6Om9wZXJhdG9yPDw7IiBpbiB0
aGUgZGVmaW5pdGlvbiBvZiBNZXNzYWdlJ3Mgb3BlcmF0b3I8PC4gIFRoYXQgZml4Ci0vLyBkb2Vz
bid0IHJlcXVpcmUgYSBoZWxwZXIgZnVuY3Rpb24sIGJ1dCB1bmZvcnR1bmF0ZWx5IGRvZXNuJ3QK
LS8vIGNvbXBpbGUgd2l0aCBNU1ZDLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9p
ZCBHVGVzdFN0cmVhbVRvSGVscGVyKHN0ZDo6b3N0cmVhbSogb3MsIGNvbnN0IFQmIHZhbCkgewot
ICAqb3MgPDwgdmFsOwotfQorLy8gU3RyaW5naWZpZXMgaXRzIGFyZ3VtZW50LgorI2RlZmluZSBH
VEVTVF9TVFJJTkdJRllfKG5hbWUpICNuYW1lCisKK2NsYXNzIFByb3RvY29sTWVzc2FnZTsKK25h
bWVzcGFjZSBwcm90bzIgeyBjbGFzcyBNZXNzYWdlOyB9CiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsK
IAotLy8gRm9yd2FyZCBkZWNsYXJhdGlvbiBvZiBjbGFzc2VzLgorLy8gRm9yd2FyZCBkZWNsYXJh
dGlvbnMuCiAKIGNsYXNzIEFzc2VydGlvblJlc3VsdDsgICAgICAgICAgICAgICAgIC8vIFJlc3Vs
dCBvZiBhbiBhc3NlcnRpb24uCiBjbGFzcyBNZXNzYWdlOyAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBSZXByZXNlbnRzIGEgZmFpbHVyZSBtZXNzYWdlLgpAQCAtMTA4LDI1ICs5MywxOSBAQCBj
bGFzcyBUZXN0SW5mbzsgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbmZvcm1hdGlvbiBhYm91
dCBhIHRlc3QuCiBjbGFzcyBUZXN0UGFydFJlc3VsdDsgICAgICAgICAgICAgICAgICAvLyBSZXN1
bHQgb2YgYSB0ZXN0IHBhcnQuCiBjbGFzcyBVbml0VGVzdDsgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBBIGNvbGxlY3Rpb24gb2YgdGVzdCBjYXNlcy4KIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Cis6OnN0ZDo6c3RyaW5nIFByaW50VG9TdHJpbmcoY29uc3QgVCYgdmFsdWUpOworCiBuYW1lc3Bh
Y2UgaW50ZXJuYWwgewogCiBzdHJ1Y3QgVHJhY2VJbmZvOyAgICAgICAgICAgICAgICAgICAgICAv
LyBJbmZvcm1hdGlvbiBhYm91dCBhIHRyYWNlIHBvaW50LgotY2xhc3MgU2NvcGVkVHJhY2U7ICAg
ICAgICAgICAgICAgICAgICAgLy8gSW1wbGVtZW50cyBzY29wZWQgdHJhY2UuCiBjbGFzcyBUZXN0
SW5mb0ltcGw7ICAgICAgICAgICAgICAgICAgICAvLyBPcGFxdWUgaW1wbGVtZW50YXRpb24gb2Yg
VGVzdEluZm8KIGNsYXNzIFVuaXRUZXN0SW1wbDsgICAgICAgICAgICAgICAgICAgIC8vIE9wYXF1
ZSBpbXBsZW1lbnRhdGlvbiBvZiBVbml0VGVzdAogCi0vLyBIb3cgbWFueSB0aW1lcyBJbml0R29v
Z2xlVGVzdCgpIGhhcyBiZWVuIGNhbGxlZC4KLWV4dGVybiBpbnQgZ19pbml0X2d0ZXN0X2NvdW50
OwotCiAvLyBUaGUgdGV4dCB1c2VkIGluIGZhaWx1cmUgbWVzc2FnZXMgdG8gaW5kaWNhdGUgdGhl
IHN0YXJ0IG9mIHRoZQogLy8gc3RhY2sgdHJhY2UuCiBHVEVTVF9BUElfIGV4dGVybiBjb25zdCBj
aGFyIGtTdGFja1RyYWNlTWFya2VyW107CiAKLS8vIEEgc2VjcmV0IHR5cGUgdGhhdCBHb29nbGUg
VGVzdCB1c2VycyBkb24ndCBrbm93IGFib3V0LiAgSXQgaGFzIG5vCi0vLyBkZWZpbml0aW9uIG9u
IHB1cnBvc2UuICBUaGVyZWZvcmUgaXQncyBpbXBvc3NpYmxlIHRvIGNyZWF0ZSBhCi0vLyBTZWNy
ZXQgb2JqZWN0LCB3aGljaCBpcyB3aGF0IHdlIHdhbnQuCi1jbGFzcyBTZWNyZXQ7Ci0KIC8vIFR3
byBvdmVybG9hZGVkIGhlbHBlcnMgZm9yIGNoZWNraW5nIGF0IGNvbXBpbGUgdGltZSB3aGV0aGVy
IGFuCiAvLyBleHByZXNzaW9uIGlzIGEgbnVsbCBwb2ludGVyIGxpdGVyYWwgKGkuZS4gTlVMTCBv
ciBhbnkgMC12YWx1ZWQKIC8vIGNvbXBpbGUtdGltZSBpbnRlZ3JhbCBjb25zdGFudCkuICBUaGVp
ciByZXR1cm4gdmFsdWVzIGhhdmUKQEAgLTE1MCwxMjcgKzEyOSw2NSBAQCBjaGFyICgmSXNOdWxs
TGl0ZXJhbEhlbHBlciguLi4pKVsyXTsgIC8vIE5PTElOVAogI2lmZGVmIEdURVNUX0VMTElQU0lT
X05FRURTX1BPRF8KIC8vIFdlIGxvc2Ugc3VwcG9ydCBmb3IgTlVMTCBkZXRlY3Rpb24gd2hlcmUg
dGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZQogLy8gcGFzc2luZyBub24tUE9EIGNsYXNzZXMgdGhy
b3VnaCBlbGxpcHNpcyAoLi4uKS4KLSNkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBm
YWxzZQorIyBkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBmYWxzZQogI2Vsc2UKLSNk
ZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBcCisjIGRlZmluZSBHVEVTVF9JU19OVUxM
X0xJVEVSQUxfKHgpIFwKICAgICAoc2l6ZW9mKDo6dGVzdGluZzo6aW50ZXJuYWw6OklzTnVsbExp
dGVyYWxIZWxwZXIoeCkpID09IDEpCiAjZW5kaWYgIC8vIEdURVNUX0VMTElQU0lTX05FRURTX1BP
RF8KIAogLy8gQXBwZW5kcyB0aGUgdXNlci1zdXBwbGllZCBtZXNzYWdlIHRvIHRoZSBHb29nbGUt
VGVzdC1nZW5lcmF0ZWQgbWVzc2FnZS4KLUdURVNUX0FQSV8gU3RyaW5nIEFwcGVuZFVzZXJNZXNz
YWdlKGNvbnN0IFN0cmluZyYgZ3Rlc3RfbXNnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgTWVzc2FnZSYgdXNlcl9tc2cpOwotCi0vLyBBIGhlbHBlciBjbGFzcyBm
b3IgY3JlYXRpbmcgc2NvcGVkIHRyYWNlcyBpbiB1c2VyIHByb2dyYW1zLgotY2xhc3MgR1RFU1Rf
QVBJXyBTY29wZWRUcmFjZSB7Ci0gcHVibGljOgotICAvLyBUaGUgYyd0b3IgcHVzaGVzIHRoZSBn
aXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlvbiBhbmQgbWVzc2FnZSBvbnRvCi0gIC8vIGEgdHJhY2Ug
c3RhY2sgbWFpbnRhaW5lZCBieSBHb29nbGUgVGVzdC4KLSAgU2NvcGVkVHJhY2UoY29uc3QgY2hh
ciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IE1lc3NhZ2UmIG1lc3NhZ2UpOwotCi0gIC8vIFRoZSBk
J3RvciBwb3BzIHRoZSBpbmZvIHB1c2hlZCBieSB0aGUgYyd0b3IuCi0gIC8vCi0gIC8vIE5vdGUg
dGhhdCB0aGUgZCd0b3IgaXMgbm90IHZpcnR1YWwgaW4gb3JkZXIgdG8gYmUgZWZmaWNpZW50Lgot
ICAvLyBEb24ndCBpbmhlcml0IGZyb20gU2NvcGVkVHJhY2UhCi0gIH5TY29wZWRUcmFjZSgpOwot
Ci0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTY29wZWRUcmFj
ZSk7Ci19IEdURVNUX0FUVFJJQlVURV9VTlVTRURfOyAgLy8gQSBTY29wZWRUcmFjZSBvYmplY3Qg
ZG9lcyBpdHMgam9iIGluIGl0cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGMndG9y
IGFuZCBkJ3Rvci4gIFRoZXJlZm9yZSBpdCBkb2Vzbid0Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gbmVlZCB0byBiZSB1c2VkIG90aGVyd2lzZS4KLQotLy8gQ29udmVydHMgYSBzdHJl
YW1hYmxlIHZhbHVlIHRvIGEgU3RyaW5nLiAgQSBOVUxMIHBvaW50ZXIgaXMKLS8vIGNvbnZlcnRl
ZCB0byAiKG51bGwpIi4gIFdoZW4gdGhlIGlucHV0IHZhbHVlIGlzIGEgOjpzdHJpbmcsCi0vLyA6
OnN0ZDo6c3RyaW5nLCA6OndzdHJpbmcsIG9yIDo6c3RkOjp3c3RyaW5nIG9iamVjdCwgZWFjaCBO
VUwKLS8vIGNoYXJhY3RlciBpbiBpdCBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgotLy8gRGVjbGFy
ZWQgaGVyZSBidXQgZGVmaW5lZCBpbiBndGVzdC5oLCBzbyB0aGF0IGl0IGhhcyBhY2Nlc3MKLS8v
IHRvIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBNZXNzYWdlIGNsYXNzLCByZXF1aXJlZCBieSB0aGUg
QVJNCi0vLyBjb21waWxlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotU3RyaW5nIFN0cmVhbWFi
bGVUb1N0cmluZyhjb25zdCBUJiBzdHJlYW1hYmxlKTsKLQotLy8gRm9ybWF0cyBhIHZhbHVlIHRv
IGJlIHVzZWQgaW4gYSBmYWlsdXJlIG1lc3NhZ2UuCi0KLSNpZmRlZiBHVEVTVF9ORUVEU19JU19Q
T0lOVEVSXwotCi0vLyBUaGVzZSBhcmUgbmVlZGVkIGFzIHRoZSBOb2tpYSBTeW1iaWFuIGFuZCBJ
Qk0gWEwgQy9DKysgY29tcGlsZXJzCi0vLyBjYW5ub3QgZGVjaWRlIGJldHdlZW4gY29uc3QgVCYg
YW5kIGNvbnN0IFQqIGluIGEgZnVuY3Rpb24gdGVtcGxhdGUuCi0vLyBUaGVzZSBjb21waWxlcnMg
X2Nhbl8gZGVjaWRlIGJldHdlZW4gY2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zCi0vLyBm
b3IgVCBhbmQgVCosIHNvIGEgdHIxOjp0eXBlX3RyYWl0cy1saWtlIGlzX3BvaW50ZXIgd29ya3Ms
IGFuZCB3ZQotLy8gY2FuIG92ZXJsb2FkIG9uIHRoYXQuCitHVEVTVF9BUElfIHN0ZDo6c3RyaW5n
IEFwcGVuZFVzZXJNZXNzYWdlKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBndGVzdF9tc2csIGNv
bnN0IE1lc3NhZ2UmIHVzZXJfbXNnKTsKIAotLy8gVGhpcyBvdmVybG9hZCBtYWtlcyBzdXJlIHRo
YXQgYWxsIHBvaW50ZXJzIChpbmNsdWRpbmcKLS8vIHRob3NlIHRvIGNoYXIgb3Igd2NoYXJfdCkg
YXJlIHByaW50ZWQgYXMgcmF3IHBvaW50ZXJzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxp
bmUgU3RyaW5nIEZvcm1hdFZhbHVlRm9yRmFpbHVyZU1lc3NhZ2UoaW50ZXJuYWw6OnRydWVfdHlw
ZSAvKmR1bW15Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VCogcG9pbnRlcikgewotICByZXR1cm4gU3RyZWFtYWJsZVRvU3RyaW5nKHN0YXRpY19jYXN0PGNv
bnN0IHZvaWQqPihwb2ludGVyKSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5l
IFN0cmluZyBGb3JtYXRWYWx1ZUZvckZhaWx1cmVNZXNzYWdlKGludGVybmFsOjpmYWxzZV90eXBl
IC8qZHVtbXkqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUJiB2YWx1ZSkgewotICByZXR1cm4gU3RyZWFtYWJsZVRvU3RyaW5nKHZhbHVlKTsKLX0K
KyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGlu
ZSBTdHJpbmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3QgVCYgdmFsdWUpIHsKLSAgcmV0
dXJuIEZvcm1hdFZhbHVlRm9yRmFpbHVyZU1lc3NhZ2UoCi0gICAgICB0eXBlbmFtZSBpbnRlcm5h
bDo6aXNfcG9pbnRlcjxUPjo6dHlwZSgpLCB2YWx1ZSk7Ci19CitHVEVTVF9ESVNBQkxFX01TQ19X
QVJOSU5HU19QVVNIXyg0Mjc1IFwKKy8qIGFuIGV4cG9ydGVkIGNsYXNzIHdhcyBkZXJpdmVkIGZy
b20gYSBjbGFzcyB0aGF0IHdhcyBub3QgZXhwb3J0ZWQgKi8pCiAKLSNlbHNlCisvLyBUaGlzIGV4
Y2VwdGlvbiBpcyB0aHJvd24gYnkgKGFuZCBvbmx5IGJ5KSBhIGZhaWxlZCBHb29nbGUgVGVzdAor
Ly8gYXNzZXJ0aW9uIHdoZW4gR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSBpcyB0cnVlIChp
ZiBleGNlcHRpb25zCisvLyBhcmUgZW5hYmxlZCkuICBXZSBkZXJpdmUgaXQgZnJvbSBzdGQ6OnJ1
bnRpbWVfZXJyb3IsIHdoaWNoIGlzIGZvcgorLy8gZXJyb3JzIHByZXN1bWFibHkgZGV0ZWN0YWJs
ZSBvbmx5IGF0IHJ1biB0aW1lLiAgU2luY2UKKy8vIHN0ZDo6cnVudGltZV9lcnJvciBpbmhlcml0
cyBmcm9tIHN0ZDo6ZXhjZXB0aW9uLCBtYW55IHRlc3RpbmcKKy8vIGZyYW1ld29ya3Mga25vdyBo
b3cgdG8gZXh0cmFjdCBhbmQgcHJpbnQgdGhlIG1lc3NhZ2UgaW5zaWRlIGl0LgorY2xhc3MgR1RF
U1RfQVBJXyBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbiA6IHB1YmxpYyA6OnN0ZDo6cnVudGlt
ZV9lcnJvciB7CisgcHVibGljOgorICBleHBsaWNpdCBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlv
bihjb25zdCBUZXN0UGFydFJlc3VsdCYgZmFpbHVyZSk7Cit9OwogCi0vLyBUaGVzZSBhcmUgbmVl
ZGVkIGFzIHRoZSBhYm92ZSBzb2x1dGlvbiB1c2luZyBpc19wb2ludGVyIGhhcyB0aGUKLS8vIGxp
bWl0YXRpb24gdGhhdCBUIGNhbm5vdCBiZSBhIHR5cGUgd2l0aG91dCBleHRlcm5hbCBsaW5rYWdl
LCB3aGVuCi0vLyBjb21waWxlZCB1c2luZyBNU1ZDLgorR1RFU1RfRElTQUJMRV9NU0NfV0FSTklO
R1NfUE9QXygpICAvLyAgNDI3NQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBTdHJp
bmcgRm9ybWF0Rm9yRmFpbHVyZU1lc3NhZ2UoY29uc3QgVCYgdmFsdWUpIHsKLSAgcmV0dXJuIFN0
cmVhbWFibGVUb1N0cmluZyh2YWx1ZSk7Ci19CisjZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJ
T05TCiAKLS8vIFRoaXMgb3ZlcmxvYWQgbWFrZXMgc3VyZSB0aGF0IGFsbCBwb2ludGVycyAoaW5j
bHVkaW5nCi0vLyB0aG9zZSB0byBjaGFyIG9yIHdjaGFyX3QpIGFyZSBwcmludGVkIGFzIHJhdyBw
b2ludGVycy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFN0cmluZyBGb3JtYXRGb3JG
YWlsdXJlTWVzc2FnZShUKiBwb2ludGVyKSB7Ci0gIHJldHVybiBTdHJlYW1hYmxlVG9TdHJpbmco
c3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHBvaW50ZXIpKTsKLX0KK25hbWVzcGFjZSBlZGl0X2Rp
c3RhbmNlIHsKKy8vIFJldHVybnMgdGhlIG9wdGltYWwgZWRpdHMgdG8gZ28gZnJvbSAnbGVmdCcg
dG8gJ3JpZ2h0Jy4KKy8vIEFsbCBlZGl0cyBjb3N0IHRoZSBzYW1lLCB3aXRoIHJlcGxhY2UgaGF2
aW5nIGxvd2VyIHByaW9yaXR5IHRoYW4KKy8vIGFkZC9yZW1vdmUuCisvLyBTaW1wbGUgaW1wbGVt
ZW50YXRpb24gb2YgdGhlIFdhZ25lci1GaXNjaGVyIGFsZ29yaXRobS4KKy8vIFNlZSBodHRwOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL1dhZ25lci1GaXNjaGVyX2FsZ29yaXRobQorZW51bSBFZGl0
VHlwZSB7IGtNYXRjaCwga0FkZCwga1JlbW92ZSwga1JlcGxhY2UgfTsKK0dURVNUX0FQSV8gc3Rk
Ojp2ZWN0b3I8RWRpdFR5cGU+IENhbGN1bGF0ZU9wdGltYWxFZGl0cygKKyAgICBjb25zdCBzdGQ6
OnZlY3RvcjxzaXplX3Q+JiBsZWZ0LCBjb25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+JiByaWdodCk7
CiAKLSNlbmRpZiAgLy8gR1RFU1RfTkVFRFNfSVNfUE9JTlRFUl8KLQotLy8gVGhlc2Ugb3Zlcmxv
YWRlZCB2ZXJzaW9ucyBoYW5kbGUgbmFycm93IGFuZCB3aWRlIGNoYXJhY3RlcnMuCi1HVEVTVF9B
UElfIFN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjaGFyIGNoKTsKLUdURVNUX0FQSV8g
U3RyaW5nIEZvcm1hdEZvckZhaWx1cmVNZXNzYWdlKHdjaGFyX3Qgd2NoYXIpOwotCi0vLyBXaGVu
IHRoaXMgb3BlcmFuZCBpcyBhIGNvbnN0IGNoYXIqIG9yIGNoYXIqLCBhbmQgdGhlIG90aGVyIG9w
ZXJhbmQKLS8vIGlzIGEgOjpzdGQ6OnN0cmluZyBvciA6OnN0cmluZywgd2UgcHJpbnQgdGhpcyBv
cGVyYW5kIGFzIGEgQyBzdHJpbmcKLS8vIHJhdGhlciB0aGFuIGEgcG9pbnRlci4gIFdlIGRvIHRo
ZSBzYW1lIGZvciB3aWRlIHN0cmluZ3MuCi0KLS8vIFRoaXMgaW50ZXJuYWwgbWFjcm8gaXMgdXNl
ZCB0byBhdm9pZCBkdXBsaWNhdGVkIGNvZGUuCi0jZGVmaW5lIEdURVNUX0ZPUk1BVF9JTVBMXyhv
cGVyYW5kMl90eXBlLCBvcGVyYW5kMV9wcmludGVyKVwKLWlubGluZSBTdHJpbmcgRm9ybWF0Rm9y
Q29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKFwKLSAgICBvcGVyYW5kMl90eXBlOjp2YWx1ZV90eXBl
KiBzdHIsIGNvbnN0IG9wZXJhbmQyX3R5cGUmIC8qb3BlcmFuZDIqLykge1wKLSAgcmV0dXJuIG9w
ZXJhbmQxX3ByaW50ZXIoc3RyKTtcCi19XAotaW5saW5lIFN0cmluZyBGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2UoXAotICAgIGNvbnN0IG9wZXJhbmQyX3R5cGU6OnZhbHVlX3R5cGUq
IHN0ciwgY29uc3Qgb3BlcmFuZDJfdHlwZSYgLypvcGVyYW5kMiovKSB7XAotICByZXR1cm4gb3Bl
cmFuZDFfcHJpbnRlcihzdHIpO1wKLX0KKy8vIFNhbWUgYXMgYWJvdmUsIGJ1dCB0aGUgaW5wdXQg
aXMgcmVwcmVzZW50ZWQgYXMgc3RyaW5ncy4KK0dURVNUX0FQSV8gc3RkOjp2ZWN0b3I8RWRpdFR5
cGU+IENhbGN1bGF0ZU9wdGltYWxFZGl0cygKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4mIGxlZnQsCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiByaWdodCk7
CiAKLUdURVNUX0ZPUk1BVF9JTVBMXyg6OnN0ZDo6c3RyaW5nLCBTdHJpbmc6OlNob3dDU3RyaW5n
UXVvdGVkKQotI2lmIEdURVNUX0hBU19TVERfV1NUUklORwotR1RFU1RfRk9STUFUX0lNUExfKDo6
c3RkOjp3c3RyaW5nLCBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZCkKLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1NURF9XU1RSSU5HCisvLyBDcmVhdGUgYSBkaWZmIG9mIHRoZSBpbnB1dCBzdHJp
bmdzIGluIFVuaWZpZWQgZGlmZiBmb3JtYXQuCitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIENyZWF0
ZVVuaWZpZWREaWZmKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgbGVmdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+JiByaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGNvbnRleHQgPSAyKTsKIAotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi1H
VEVTVF9GT1JNQVRfSU1QTF8oOjpzdHJpbmcsIFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQpCi0j
ZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9X
U1RSSU5HCi1HVEVTVF9GT1JNQVRfSU1QTF8oOjp3c3RyaW5nLCBTdHJpbmc6OlNob3dXaWRlQ1N0
cmluZ1F1b3RlZCkKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCit9ICAvLyBu
YW1lc3BhY2UgZWRpdF9kaXN0YW5jZQogCi0jdW5kZWYgR1RFU1RfRk9STUFUX0lNUExfCisvLyBD
YWxjdWxhdGUgdGhlIGRpZmYgYmV0d2VlbiAnbGVmdCcgYW5kICdyaWdodCcgYW5kIHJldHVybiBp
dCBpbiB1bmlmaWVkIGRpZmYKKy8vIGZvcm1hdC4KKy8vIElmIG5vdCBudWxsLCBzdG9yZXMgaW4g
J3RvdGFsX2xpbmVfY291bnQnIHRoZSB0b3RhbCBudW1iZXIgb2YgbGluZXMgZm91bmQKKy8vIGlu
IGxlZnQgKyByaWdodC4KK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgRGlmZlN0cmluZ3MoY29uc3Qg
c3RkOjpzdHJpbmcmIGxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiByaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90KiB0b3RhbF9saW5lX2NvdW50KTsKIAogLy8gQ29uc3RydWN0cyBhbmQgcmV0dXJu
cyB0aGUgbWVzc2FnZSBmb3IgYW4gZXF1YWxpdHkgYXNzZXJ0aW9uCiAvLyAoZS5nLiBBU1NFUlRf
RVEsIEVYUEVDVF9TVFJFUSwgZXRjKSBmYWlsdXJlLgpAQCAtMjg5LDEyICsyMDYsMTIgQEAgR1RF
U1RfRk9STUFUX0lNUExfKDo6d3N0cmluZywgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQp
CiAvLyBiZSBpbnNlcnRlZCBpbnRvIHRoZSBtZXNzYWdlLgogR1RFU1RfQVBJXyBBc3NlcnRpb25S
ZXN1bHQgRXFGYWlsdXJlKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBl
eHBlY3RlZF92YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBTdHJpbmcmIGFjdHVhbF92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRfdmFsdWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGFjdHVhbF92YWx1ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yaW5nX2Nhc2UpOwog
CiAvLyBDb25zdHJ1Y3RzIGEgZmFpbHVyZSBtZXNzYWdlIGZvciBCb29sZWFuIGFzc2VydGlvbnMg
c3VjaCBhcyBFWFBFQ1RfVFJVRS4KLUdURVNUX0FQSV8gU3RyaW5nIEdldEJvb2xBc3NlcnRpb25G
YWlsdXJlTWVzc2FnZSgKK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgR2V0Qm9vbEFzc2VydGlvbkZh
aWx1cmVNZXNzYWdlKAogICAgIGNvbnN0IEFzc2VydGlvblJlc3VsdCYgYXNzZXJ0aW9uX3Jlc3Vs
dCwKICAgICBjb25zdCBjaGFyKiBleHByZXNzaW9uX3RleHQsCiAgICAgY29uc3QgY2hhciogYWN0
dWFsX3ByZWRpY2F0ZV92YWx1ZSwKQEAgLTM2OSw3ICsyODYsNyBAQCBjbGFzcyBGbG9hdGluZ1Bv
aW50IHsKICAgLy8gYml0cy4gIFRoZXJlZm9yZSwgNCBzaG91bGQgYmUgZW5vdWdoIGZvciBvcmRp
bmFyeSB1c2UuCiAgIC8vCiAgIC8vIFNlZSB0aGUgZm9sbG93aW5nIGFydGljbGUgZm9yIG1vcmUg
ZGV0YWlscyBvbiBVTFA6Ci0gIC8vIGh0dHA6Ly93d3cuY3lnbnVzLXNvZnR3YXJlLmNvbS9wYXBl
cnMvY29tcGFyaW5nZmxvYXRzL2NvbXBhcmluZ2Zsb2F0cy5odG0uCisgIC8vIGh0dHA6Ly9yYW5k
b21hc2NpaS53b3JkcHJlc3MuY29tLzIwMTIvMDIvMjUvY29tcGFyaW5nLWZsb2F0aW5nLXBvaW50
LW51bWJlcnMtMjAxMi1lZGl0aW9uLwogICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtNYXhVbHBzID0g
NDsKIAogICAvLyBDb25zdHJ1Y3RzIGEgRmxvYXRpbmdQb2ludCBmcm9tIGEgcmF3IGZsb2F0aW5n
LXBvaW50IG51bWJlci4KQEAgLTM5Niw2ICszMTMsOSBAQCBjbGFzcyBGbG9hdGluZ1BvaW50IHsK
ICAgICByZXR1cm4gUmVpbnRlcnByZXRCaXRzKGtFeHBvbmVudEJpdE1hc2spOwogICB9CiAKKyAg
Ly8gUmV0dXJucyB0aGUgbWF4aW11bSByZXByZXNlbnRhYmxlIGZpbml0ZSBmbG9hdGluZy1wb2lu
dCBudW1iZXIuCisgIHN0YXRpYyBSYXdUeXBlIE1heCgpOworCiAgIC8vIE5vbi1zdGF0aWMgbWV0
aG9kcwogCiAgIC8vIFJldHVybnMgdGhlIGJpdHMgdGhhdCByZXByZXNlbnRzIHRoaXMgbnVtYmVy
LgpAQCAtNDc2LDYgKzM5NiwxMyBAQCBjbGFzcyBGbG9hdGluZ1BvaW50IHsKICAgRmxvYXRpbmdQ
b2ludFVuaW9uIHVfOwogfTsKIAorLy8gV2UgY2Fubm90IHVzZSBzdGQ6Om51bWVyaWNfbGltaXRz
PFQ+OjptYXgoKSBhcyBpdCBjbGFzaGVzIHdpdGggdGhlIG1heCgpCisvLyBtYWNybyBkZWZpbmVk
IGJ5IDx3aW5kb3dzLmg+LgordGVtcGxhdGUgPD4KK2lubGluZSBmbG9hdCBGbG9hdGluZ1BvaW50
PGZsb2F0Pjo6TWF4KCkgeyByZXR1cm4gRkxUX01BWDsgfQordGVtcGxhdGUgPD4KK2lubGluZSBk
b3VibGUgRmxvYXRpbmdQb2ludDxkb3VibGU+OjpNYXgoKSB7IHJldHVybiBEQkxfTUFYOyB9CisK
IC8vIFR5cGVkZWZzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIEZsb2F0aW5nUG9pbnQgdGVtcGxhdGUg
Y2xhc3MgdGhhdCB3ZQogLy8gY2FyZSB0byB1c2UuCiB0eXBlZGVmIEZsb2F0aW5nUG9pbnQ8Zmxv
YXQ+IEZsb2F0OwpAQCAtNTU4LDI0ICs0ODUsMTggQEAgR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1
bHQgSXNIUkVTVUxURmFpbHVyZShjb25zdCBjaGFyKiBleHByLAogCiAjZW5kaWYgIC8vIEdURVNU
X09TX1dJTkRPV1MKIAotLy8gRm9ybWF0cyBhIHNvdXJjZSBmaWxlIHBhdGggYW5kIGEgbGluZSBu
dW1iZXIgYXMgdGhleSB3b3VsZCBhcHBlYXIKLS8vIGluIGEgY29tcGlsZXIgZXJyb3IgbWVzc2Fn
ZS4KLWlubGluZSBTdHJpbmcgRm9ybWF0RmlsZUxvY2F0aW9uKGNvbnN0IGNoYXIqIGZpbGUsIGlu
dCBsaW5lKSB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IGZpbGVfbmFtZSA9IGZpbGUgPT0gTlVMTCA/
ICJ1bmtub3duIGZpbGUiIDogZmlsZTsKLSAgaWYgKGxpbmUgPCAwKSB7Ci0gICAgcmV0dXJuIFN0
cmluZzo6Rm9ybWF0KCIlczoiLCBmaWxlX25hbWUpOwotICB9Ci0jaWZkZWYgX01TQ19WRVIKLSAg
cmV0dXJuIFN0cmluZzo6Rm9ybWF0KCIlcyglZCk6IiwgZmlsZV9uYW1lLCBsaW5lKTsKLSNlbHNl
Ci0gIHJldHVybiBTdHJpbmc6OkZvcm1hdCgiJXM6JWQ6IiwgZmlsZV9uYW1lLCBsaW5lKTsKLSNl
bmRpZiAgLy8gX01TQ19WRVIKLX0KLQogLy8gVHlwZXMgb2YgU2V0VXBUZXN0Q2FzZSgpIGFuZCBU
ZWFyRG93blRlc3RDYXNlKCkgZnVuY3Rpb25zLgogdHlwZWRlZiB2b2lkICgqU2V0VXBUZXN0Q2Fz
ZUZ1bmMpKCk7CiB0eXBlZGVmIHZvaWQgKCpUZWFyRG93blRlc3RDYXNlRnVuYykoKTsKIAorc3Ry
dWN0IENvZGVMb2NhdGlvbiB7CisgIENvZGVMb2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgYV9m
aWxlLCBpbnQgYV9saW5lKQorICAgICAgOiBmaWxlKGFfZmlsZSksIGxpbmUoYV9saW5lKSB7fQor
CisgIHN0ZDo6c3RyaW5nIGZpbGU7CisgIGludCBsaW5lOworfTsKKwogLy8gQ3JlYXRlcyBhIG5l
dyBUZXN0SW5mbyBvYmplY3QgYW5kIHJlZ2lzdGVycyBpdCB3aXRoIEdvb2dsZSBUZXN0OwogLy8g
cmV0dXJucyB0aGUgY3JlYXRlZCBvYmplY3QuCiAvLwpAQCAtNTgzLDEwICs1MDQsMTEgQEAgdHlw
ZWRlZiB2b2lkICgqVGVhckRvd25UZXN0Q2FzZUZ1bmMpKCk7CiAvLwogLy8gICB0ZXN0X2Nhc2Vf
bmFtZTogICBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UKIC8vICAgbmFtZTogICAgICAgICAgICAgbmFt
ZSBvZiB0aGUgdGVzdAotLy8gICB0ZXN0X2Nhc2VfY29tbWVudDogYSBjb21tZW50IG9uIHRoZSB0
ZXN0IGNhc2UgdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluCi0vLyAgICAgICAgICAgICAgICAgICAg
ICB0aGUgdGVzdCBvdXRwdXQKLS8vICAgY29tbWVudDogICAgICAgICAgYSBjb21tZW50IG9uIHRo
ZSB0ZXN0IHRoYXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKLS8vICAgICAgICAgICAgICAgICAg
ICAgdGVzdCBvdXRwdXQKKy8vICAgdHlwZV9wYXJhbSAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHRl
c3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgorLy8gICAgICAgICAgICAgICAgICAgICB0
aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisvLyAgIHZh
bHVlX3BhcmFtICAgICAgIHRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRlc3QncyB2YWx1ZSBw
YXJhbWV0ZXIsCisvLyAgICAgICAgICAgICAgICAgICAgIG9yIE5VTEwgaWYgdGhpcyBpcyBub3Qg
YSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KKy8vICAgY29kZV9sb2NhdGlvbjogICAgY29kZSBs
b2NhdGlvbiB3aGVyZSB0aGUgdGVzdCBpcyBkZWZpbmVkCiAvLyAgIGZpeHR1cmVfY2xhc3NfaWQ6
IElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKIC8vICAgc2V0X3VwX3RjOiAgICAgICAgcG9p
bnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSB0ZXN0IGNhc2UKIC8vICAgdGVh
cl9kb3duX3RjOiAgICAgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCB0ZWFycyBkb3duIHRo
ZSB0ZXN0IGNhc2UKQEAgLTU5NCw4ICs1MTYsMTEgQEAgdHlwZWRlZiB2b2lkICgqVGVhckRvd25U
ZXN0Q2FzZUZ1bmMpKCk7CiAvLyAgICAgICAgICAgICAgICAgICAgIFRoZSBuZXdseSBjcmVhdGVk
IFRlc3RJbmZvIGluc3RhbmNlIHdpbGwgYXNzdW1lCiAvLyAgICAgICAgICAgICAgICAgICAgIG93
bmVyc2hpcCBvZiB0aGUgZmFjdG9yeSBvYmplY3QuCiBHVEVTVF9BUElfIFRlc3RJbmZvKiBNYWtl
QW5kUmVnaXN0ZXJUZXN0SW5mbygKLSAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwgY29u
c3QgY2hhciogbmFtZSwKLSAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfY29tbWVudCwgY29uc3Qg
Y2hhciogY29tbWVudCwKKyAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICBjb25z
dCBjaGFyKiBuYW1lLAorICAgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0sCisgICAgY29uc3QgY2hh
ciogdmFsdWVfcGFyYW0sCisgICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24sCiAgICAgVHlw
ZUlkIGZpeHR1cmVfY2xhc3NfaWQsCiAgICAgU2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAog
ICAgIFRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YywKQEAgLTYwNCwxMCArNTI5LDEz
IEBAIEdURVNUX0FQSV8gVGVzdEluZm8qIE1ha2VBbmRSZWdpc3RlclRlc3RJbmZvKAogLy8gSWYg
KnBzdHIgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeCwgbW9kaWZpZXMgKnBzdHIgdG8gYmUg
cmlnaHQKIC8vIHBhc3QgdGhlIHByZWZpeCBhbmQgcmV0dXJucyB0cnVlOyBvdGhlcndpc2UgbGVh
dmVzICpwc3RyIHVuY2hhbmdlZAogLy8gYW5kIHJldHVybnMgZmFsc2UuICBOb25lIG9mIHBzdHIs
ICpwc3RyLCBhbmQgcHJlZml4IGNhbiBiZSBOVUxMLgotYm9vbCBTa2lwUHJlZml4KGNvbnN0IGNo
YXIqIHByZWZpeCwgY29uc3QgY2hhcioqIHBzdHIpOworR1RFU1RfQVBJXyBib29sIFNraXBQcmVm
aXgoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiogcHN0cik7CiAKICNpZiBHVEVTVF9I
QVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCiAKK0dURVNUX0RJU0FCTEVf
TVNDX1dBUk5JTkdTX1BVU0hfKDQyNTEgXAorLyogY2xhc3MgQSBuZWVkcyB0byBoYXZlIGRsbC1p
bnRlcmZhY2UgdG8gYmUgdXNlZCBieSBjbGllbnRzIG9mIGNsYXNzIEIgKi8pCisKIC8vIFN0YXRl
IG9mIHRoZSBkZWZpbml0aW9uIG9mIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZS4KIGNs
YXNzIEdURVNUX0FQSV8gVHlwZWRUZXN0Q2FzZVBTdGF0ZSB7CiAgcHVibGljOgpAQCAtNjI1LDEw
ICs1NTMsMjEgQEAgY2xhc3MgR1RFU1RfQVBJXyBUeXBlZFRlc3RDYXNlUFN0YXRlIHsKICAgICAg
IGZmbHVzaChzdGRlcnIpOwogICAgICAgcG9zaXg6OkFib3J0KCk7CiAgICAgfQotICAgIGRlZmlu
ZWRfdGVzdF9uYW1lc18uaW5zZXJ0KHRlc3RfbmFtZSk7CisgICAgcmVnaXN0ZXJlZF90ZXN0c18u
aW5zZXJ0KAorICAgICAgICA6OnN0ZDo6bWFrZV9wYWlyKHRlc3RfbmFtZSwgQ29kZUxvY2F0aW9u
KGZpbGUsIGxpbmUpKSk7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIAorICBib29sIFRlc3RFeGlz
dHMoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RfbmFtZSkgY29uc3QgeworICAgIHJldHVybiByZWdp
c3RlcmVkX3Rlc3RzXy5jb3VudCh0ZXN0X25hbWUpID4gMDsKKyAgfQorCisgIGNvbnN0IENvZGVM
b2NhdGlvbiYgR2V0Q29kZUxvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0X25hbWUpIGNv
bnN0IHsKKyAgICBSZWdpc3RlcmVkVGVzdHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVnaXN0
ZXJlZF90ZXN0c18uZmluZCh0ZXN0X25hbWUpOworICAgIEdURVNUX0NIRUNLXyhpdCAhPSByZWdp
c3RlcmVkX3Rlc3RzXy5lbmQoKSk7CisgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CisgIH0KKwogICAv
LyBWZXJpZmllcyB0aGF0IHJlZ2lzdGVyZWRfdGVzdHMgbWF0Y2ggdGhlIHRlc3QgbmFtZXMgaW4K
ICAgLy8gZGVmaW5lZF90ZXN0X25hbWVzXzsgcmV0dXJucyByZWdpc3RlcmVkX3Rlc3RzIGlmIHN1
Y2Nlc3NmdWwsIG9yCiAgIC8vIGFib3J0cyB0aGUgcHJvZ3JhbSBvdGhlcndpc2UuCkBAIC02MzYs
MTAgKzU3NSwxNCBAQCBjbGFzcyBHVEVTVF9BUElfIFR5cGVkVGVzdENhc2VQU3RhdGUgewogICAg
ICAgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIHJlZ2lzdGVyZWRfdGVz
dHMpOwogCiAgcHJpdmF0ZToKKyAgdHlwZWRlZiA6OnN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBDb2Rl
TG9jYXRpb24+IFJlZ2lzdGVyZWRUZXN0c01hcDsKKwogICBib29sIHJlZ2lzdGVyZWRfOwotICA6
OnN0ZDo6c2V0PGNvbnN0IGNoYXIqPiBkZWZpbmVkX3Rlc3RfbmFtZXNfOworICBSZWdpc3RlcmVk
VGVzdHNNYXAgcmVnaXN0ZXJlZF90ZXN0c187CiB9OwogCitHVEVTVF9ESVNBQkxFX01TQ19XQVJO
SU5HU19QT1BfKCkgIC8vICA0MjUxCisKIC8vIFNraXBzIHRvIHRoZSBmaXJzdCBub24tc3BhY2Ug
Y2hhciBhZnRlciB0aGUgZmlyc3QgY29tbWEgaW4gJ3N0cic7CiAvLyByZXR1cm5zIE5VTEwgaWYg
bm8gY29tbWEgaXMgZm91bmQgaW4gJ3N0cicuCiBpbmxpbmUgY29uc3QgY2hhciogU2tpcENvbW1h
KGNvbnN0IGNoYXIqIHN0cikgewpAQCAtNjQ3LDE1ICs1OTAsNTEgQEAgaW5saW5lIGNvbnN0IGNo
YXIqIFNraXBDb21tYShjb25zdCBjaGFyKiBzdHIpIHsKICAgaWYgKGNvbW1hID09IE5VTEwpIHsK
ICAgICByZXR1cm4gTlVMTDsKICAgfQotICB3aGlsZSAoaXNzcGFjZSgqKCsrY29tbWEpKSkge30K
KyAgd2hpbGUgKElzU3BhY2UoKigrK2NvbW1hKSkpIHt9CiAgIHJldHVybiBjb21tYTsKIH0KIAog
Ly8gUmV0dXJucyB0aGUgcHJlZml4IG9mICdzdHInIGJlZm9yZSB0aGUgZmlyc3QgY29tbWEgaW4g
aXQ7IHJldHVybnMKIC8vIHRoZSBlbnRpcmUgc3RyaW5nIGlmIGl0IGNvbnRhaW5zIG5vIGNvbW1h
LgotaW5saW5lIFN0cmluZyBHZXRQcmVmaXhVbnRpbENvbW1hKGNvbnN0IGNoYXIqIHN0cikgewor
aW5saW5lIHN0ZDo6c3RyaW5nIEdldFByZWZpeFVudGlsQ29tbWEoY29uc3QgY2hhciogc3RyKSB7
CiAgIGNvbnN0IGNoYXIqIGNvbW1hID0gc3RyY2hyKHN0ciwgJywnKTsKLSAgcmV0dXJuIGNvbW1h
ID09IE5VTEwgPyBTdHJpbmcoc3RyKSA6IFN0cmluZyhzdHIsIGNvbW1hIC0gc3RyKTsKKyAgcmV0
dXJuIGNvbW1hID09IE5VTEwgPyBzdHIgOiBzdGQ6OnN0cmluZyhzdHIsIGNvbW1hKTsKK30KKwor
Ly8gU3BsaXRzIGEgZ2l2ZW4gc3RyaW5nIG9uIGEgZ2l2ZW4gZGVsaW1pdGVyLCBwb3B1bGF0aW5n
IGEgZ2l2ZW4KKy8vIHZlY3RvciB3aXRoIHRoZSBmaWVsZHMuCit2b2lkIFNwbGl0U3RyaW5nKGNv
bnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgY2hhciBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAg
IDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpzdHJpbmc+KiBkZXN0KTsKKworLy8gVGhlIGRlZmF1bHQg
YXJndW1lbnQgdG8gdGhlIHRlbXBsYXRlIGJlbG93IGZvciB0aGUgY2FzZSB3aGVuIHRoZSB1c2Vy
IGRvZXMKKy8vIG5vdCBwcm92aWRlIGEgbmFtZSBnZW5lcmF0b3IuCitzdHJ1Y3QgRGVmYXVsdE5h
bWVHZW5lcmF0b3IgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIHN0ZDo6c3Ry
aW5nIEdldE5hbWUoaW50IGkpIHsKKyAgICByZXR1cm4gU3RyZWFtYWJsZVRvU3RyaW5nKGkpOwor
ICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUHJvdmlkZWQgPSBEZWZhdWx0TmFtZUdlbmVy
YXRvcj4KK3N0cnVjdCBOYW1lR2VuZXJhdG9yU2VsZWN0b3IgeworICB0eXBlZGVmIFByb3ZpZGVk
IHR5cGU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTmFtZUdlbmVyYXRvcj4KK3ZvaWQgR2Vu
ZXJhdGVOYW1lc1JlY3Vyc2l2ZWx5KFR5cGVzMCwgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+Kiwg
aW50KSB7fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTmFtZUdlbmVyYXRvciwgdHlwZW5hbWUgVHlw
ZXM+Cit2b2lkIEdlbmVyYXRlTmFtZXNSZWN1cnNpdmVseShUeXBlcywgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+KiByZXN1bHQsIGludCBpKSB7CisgIHJlc3VsdC0+cHVzaF9iYWNrKE5hbWVHZW5l
cmF0b3I6OnRlbXBsYXRlIEdldE5hbWU8dHlwZW5hbWUgVHlwZXM6OkhlYWQ+KGkpKTsKKyAgR2Vu
ZXJhdGVOYW1lc1JlY3Vyc2l2ZWx5PE5hbWVHZW5lcmF0b3I+KHR5cGVuYW1lIFR5cGVzOjpUYWls
KCksIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkg
KyAxKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE5hbWVHZW5lcmF0b3IsIHR5cGVuYW1lIFR5
cGVzPgorc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdlbmVyYXRlTmFtZXMoKSB7CisgIHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiByZXN1bHQ7CisgIEdlbmVyYXRlTmFtZXNSZWN1cnNpdmVseTxO
YW1lR2VuZXJhdG9yPihUeXBlcygpLCAmcmVzdWx0LCAwKTsKKyAgcmV0dXJuIHJlc3VsdDsKIH0K
IAogLy8gVHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIFRlc3RTZWwsIFR5cGVzPjo6UmVn
aXN0ZXIoKQpAQCAtNjcyLDggKzY1MSwxMCBAQCBjbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3Qg
ewogICAvLyBzcGVjaWZpZWQgaW4gSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoUHJlZml4
LCBUZXN0Q2FzZSwKICAgLy8gVHlwZXMpLiAgVmFsaWQgdmFsdWVzIGZvciAnaW5kZXgnIGFyZSBb
MCwgTiAtIDFdIHdoZXJlIE4gaXMgdGhlCiAgIC8vIGxlbmd0aCBvZiBUeXBlcy4KLSAgc3RhdGlj
IGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiBjYXNlX25hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRlc3RfbmFtZXMsIGludCBpbmRl
eCkgeworICBzdGF0aWMgYm9vbCBSZWdpc3Rlcihjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IENv
ZGVMb2NhdGlvbiYgY29kZV9sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogY2FzZV9uYW1lLCBjb25zdCBjaGFyKiB0ZXN0X25hbWVzLCBpbnQgaW5kZXgsCisgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgdHlwZV9u
YW1lcyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU5hbWVzPERlZmF1bHRO
YW1lR2VuZXJhdG9yLCBUeXBlcz4oKSkgewogICAgIHR5cGVkZWYgdHlwZW5hbWUgVHlwZXM6Okhl
YWQgVHlwZTsKICAgICB0eXBlZGVmIEZpeHR1cmU8VHlwZT4gRml4dHVyZUNsYXNzOwogICAgIHR5
cGVkZWYgdHlwZW5hbWUgR1RFU1RfQklORF8oVGVzdFNlbCwgVHlwZSkgVGVzdENsYXNzOwpAQCAt
NjgxLDE5ICs2NjIsMjMgQEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0IHsKICAgICAvLyBG
aXJzdCwgcmVnaXN0ZXJzIHRoZSBmaXJzdCB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBpbiB0aGUg
dHlwZQogICAgIC8vIGxpc3QuCiAgICAgTWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8oCi0gICAgICAg
IFN0cmluZzo6Rm9ybWF0KCIlcyVzJXMvJWQiLCBwcmVmaXgsIHByZWZpeFswXSA9PSAnXDAnID8g
IiIgOiAiLyIsCi0gICAgICAgICAgICAgICAgICAgICAgIGNhc2VfbmFtZSwgaW5kZXgpLmNfc3Ry
KCksCi0gICAgICAgIEdldFByZWZpeFVudGlsQ29tbWEodGVzdF9uYW1lcykuY19zdHIoKSwKLSAg
ICAgICAgU3RyaW5nOjpGb3JtYXQoIlR5cGVQYXJhbSA9ICVzIiwgR2V0VHlwZU5hbWU8VHlwZT4o
KS5jX3N0cigpKS5jX3N0cigpLAotICAgICAgICAiIiwKLSAgICAgICAgR2V0VHlwZUlkPEZpeHR1
cmVDbGFzcz4oKSwKLSAgICAgICAgVGVzdENsYXNzOjpTZXRVcFRlc3RDYXNlLAotICAgICAgICBU
ZXN0Q2xhc3M6OlRlYXJEb3duVGVzdENhc2UsCi0gICAgICAgIG5ldyBUZXN0RmFjdG9yeUltcGw8
VGVzdENsYXNzPik7CisgICAgICAgIChzdGQ6OnN0cmluZyhwcmVmaXgpICsgKHByZWZpeFswXSA9
PSAnXDAnID8gIiIgOiAiLyIpICsgY2FzZV9uYW1lICsKKyAgICAgICAgICIvIiArIHR5cGVfbmFt
ZXNbaW5kZXhdKQorICAgICAgICAgICAgLmNfc3RyKCksCisgICAgICAgIFN0cmlwVHJhaWxpbmdT
cGFjZXMoR2V0UHJlZml4VW50aWxDb21tYSh0ZXN0X25hbWVzKSkuY19zdHIoKSwKKyAgICAgICAg
R2V0VHlwZU5hbWU8VHlwZT4oKS5jX3N0cigpLAorICAgICAgICBOVUxMLCAgLy8gTm8gdmFsdWUg
cGFyYW1ldGVyLgorICAgICAgICBjb2RlX2xvY2F0aW9uLCBHZXRUeXBlSWQ8Rml4dHVyZUNsYXNz
PigpLCBUZXN0Q2xhc3M6OlNldFVwVGVzdENhc2UsCisgICAgICAgIFRlc3RDbGFzczo6VGVhckRv
d25UZXN0Q2FzZSwgbmV3IFRlc3RGYWN0b3J5SW1wbDxUZXN0Q2xhc3M+KTsKIAogICAgIC8vIE5l
eHQsIHJlY3Vyc2VzIChhdCBjb21waWxlIHRpbWUpIHdpdGggdGhlIHRhaWwgb2YgdGhlIHR5cGUg
bGlzdC4KLSAgICByZXR1cm4gVHlwZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIFRlc3RTZWws
IHR5cGVuYW1lIFR5cGVzOjpUYWlsPgotICAgICAgICA6OlJlZ2lzdGVyKHByZWZpeCwgY2FzZV9u
YW1lLCB0ZXN0X25hbWVzLCBpbmRleCArIDEpOworICAgIHJldHVybiBUeXBlUGFyYW1ldGVyaXpl
ZFRlc3Q8Rml4dHVyZSwgVGVzdFNlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHR5cGVuYW1lIFR5cGVzOjpUYWlsPjo6UmVnaXN0ZXIocHJlZml4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlX2xv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbmFtZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluZGV4ICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHlwZV9uYW1lcyk7CiAgIH0KIH07CiAKQEAgLTcwMSw4ICs2
ODYsMTEgQEAgY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0IHsKIHRlbXBsYXRlIDxHVEVTVF9U
RU1QTEFURV8gRml4dHVyZSwgY2xhc3MgVGVzdFNlbD4KIGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVk
VGVzdDxGaXh0dXJlLCBUZXN0U2VsLCBUeXBlczA+IHsKICBwdWJsaWM6Ci0gIHN0YXRpYyBib29s
IFJlZ2lzdGVyKGNvbnN0IGNoYXIqIC8qcHJlZml4Ki8sIGNvbnN0IGNoYXIqIC8qY2FzZV9uYW1l
Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qdGVzdF9uYW1lcyovLCBp
bnQgLyppbmRleCovKSB7CisgIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIqIC8qcHJl
Zml4Ki8sIGNvbnN0IENvZGVMb2NhdGlvbiYsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIC8qY2FzZV9uYW1lKi8sIGNvbnN0IGNoYXIqIC8qdGVzdF9uYW1lcyovLAorICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgLyppbmRleCovLAorICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mID0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPigpIC8qdHlwZV9uYW1lcyovKSB7CiAgICAgcmV0
dXJuIHRydWU7CiAgIH0KIH07CkBAIC03MTQsMTcgKzcwMiwzNSBAQCBjbGFzcyBUeXBlUGFyYW1l
dGVyaXplZFRlc3Q8Rml4dHVyZSwgVGVzdFNlbCwgVHlwZXMwPiB7CiB0ZW1wbGF0ZSA8R1RFU1Rf
VEVNUExBVEVfIEZpeHR1cmUsIHR5cGVuYW1lIFRlc3RzLCB0eXBlbmFtZSBUeXBlcz4KIGNsYXNz
IFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UgewogIHB1YmxpYzoKLSAgc3RhdGljIGJvb2wgUmVn
aXN0ZXIoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiBjYXNlX25hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRlc3RfbmFtZXMpIHsKKyAgc3RhdGljIGJvb2wg
UmVnaXN0ZXIoY29uc3QgY2hhciogcHJlZml4LCBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHlwZWRUZXN0Q2FzZVBTdGF0ZSogc3RhdGUs
IGNvbnN0IGNoYXIqIGNhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogdGVzdF9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+JiB0eXBlX25hbWVzID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdl
bmVyYXRlTmFtZXM8RGVmYXVsdE5hbWVHZW5lcmF0b3IsIFR5cGVzPigpKSB7CisgICAgc3RkOjpz
dHJpbmcgdGVzdF9uYW1lID0gU3RyaXBUcmFpbGluZ1NwYWNlcygKKyAgICAgICAgR2V0UHJlZml4
VW50aWxDb21tYSh0ZXN0X25hbWVzKSk7CisgICAgaWYgKCFzdGF0ZS0+VGVzdEV4aXN0cyh0ZXN0
X25hbWUpKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgY29kZSBsb2Nh
dGlvbiBmb3IgdGVzdCAlcy4lcyBhdCAlcy4iLAorICAgICAgICAgICAgICBjYXNlX25hbWUsIHRl
c3RfbmFtZS5jX3N0cigpLAorICAgICAgICAgICAgICBGb3JtYXRGaWxlTG9jYXRpb24oY29kZV9s
b2NhdGlvbi5maWxlLmNfc3RyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b2RlX2xvY2F0aW9uLmxpbmUpLmNfc3RyKCkpOworICAgICAgZmZsdXNoKHN0ZGVycik7CisgICAg
ICBwb3NpeDo6QWJvcnQoKTsKKyAgICB9CisgICAgY29uc3QgQ29kZUxvY2F0aW9uJiB0ZXN0X2xv
Y2F0aW9uID0gc3RhdGUtPkdldENvZGVMb2NhdGlvbih0ZXN0X25hbWUpOworCiAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBUZXN0czo6SGVhZCBIZWFkOwogCiAgICAgLy8gRmlyc3QsIHJlZ2lzdGVyIHRo
ZSBmaXJzdCB0ZXN0IGluICdUZXN0JyBmb3IgZWFjaCB0eXBlIGluICdUeXBlcycuCiAgICAgVHlw
ZVBhcmFtZXRlcml6ZWRUZXN0PEZpeHR1cmUsIEhlYWQsIFR5cGVzPjo6UmVnaXN0ZXIoCi0gICAg
ICAgIHByZWZpeCwgY2FzZV9uYW1lLCB0ZXN0X25hbWVzLCAwKTsKKyAgICAgICAgcHJlZml4LCB0
ZXN0X2xvY2F0aW9uLCBjYXNlX25hbWUsIHRlc3RfbmFtZXMsIDAsIHR5cGVfbmFtZXMpOwogCiAg
ICAgLy8gTmV4dCwgcmVjdXJzZXMgKGF0IGNvbXBpbGUgdGltZSkgd2l0aCB0aGUgdGFpbCBvZiB0
aGUgdGVzdCBsaXN0LgotICAgIHJldHVybiBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlPEZpeHR1
cmUsIHR5cGVuYW1lIFRlc3RzOjpUYWlsLCBUeXBlcz4KLSAgICAgICAgOjpSZWdpc3RlcihwcmVm
aXgsIGNhc2VfbmFtZSwgU2tpcENvbW1hKHRlc3RfbmFtZXMpKTsKKyAgICByZXR1cm4gVHlwZVBh
cmFtZXRlcml6ZWRUZXN0Q2FzZTxGaXh0dXJlLCB0eXBlbmFtZSBUZXN0czo6VGFpbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlcz46OlJlZ2lzdGVyKHByZWZpeCwg
Y29kZV9sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlLCBjYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa2lwQ29tbWEodGVzdF9uYW1lcyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlX25h
bWVzKTsKICAgfQogfTsKIApAQCAtNzMyLDE1ICs3MzgsMTggQEAgY2xhc3MgVHlwZVBhcmFtZXRl
cml6ZWRUZXN0Q2FzZSB7CiB0ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIEZpeHR1cmUsIHR5cGVu
YW1lIFR5cGVzPgogY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTxGaXh0dXJlLCBUZW1w
bGF0ZXMwLCBUeXBlcz4gewogIHB1YmxpYzoKLSAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3Qg
Y2hhciogLypwcmVmaXgqLywgY29uc3QgY2hhciogLypjYXNlX25hbWUqLywKLSAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogLyp0ZXN0X25hbWVzKi8pIHsKKyAgc3RhdGljIGJvb2wg
UmVnaXN0ZXIoY29uc3QgY2hhciogLypwcmVmaXgqLywgY29uc3QgQ29kZUxvY2F0aW9uJiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHlwZWRUZXN0Q2FzZVBTdGF0ZSogLypzdGF0ZSov
LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKmNhc2VfbmFtZSovLCBjb25z
dCBjaGFyKiAvKnRlc3RfbmFtZXMqLywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+JiA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4oKSAvKnR5cGVfbmFtZXMqLykgewogICAgIHJldHVybiB0cnVl
OwogICB9CiB9OwogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hB
U19UWVBFRF9URVNUX1AKIAotLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBh
cyBhIFN0cmluZy4KKy8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYW4g
c3RkOjpzdHJpbmcuCiAvLwogLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0
byBiZSBpbmNsdWRlZCBpcyBzcGVjaWZpZWQgYnkKIC8vIHRoZSBndGVzdF9zdGFja190cmFjZV9k
ZXB0aCBmbGFnLiAgVGhlIHNraXBfY291bnQgcGFyYW1ldGVyCkBAIC03NTAsOCArNzU5LDggQEAg
Y2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTxGaXh0dXJlLCBUZW1wbGF0ZXMwLCBUeXBl
cz4gewogLy8gRm9yIGV4YW1wbGUsIGlmIEZvbygpIGNhbGxzIEJhcigpLCB3aGljaCBpbiB0dXJu
IGNhbGxzCiAvLyBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKC4uLiwgMSksIEZvbygp
IHdpbGwgYmUgaW5jbHVkZWQgaW4KIC8vIHRoZSB0cmFjZSBidXQgQmFyKCkgYW5kIEdldEN1cnJl
bnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoKSB3b24ndC4KLUdURVNUX0FQSV8gU3RyaW5nIEdldEN1
cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoVW5pdFRlc3QqIHVuaXRfdGVzdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNraXBfY291bnQp
OworR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9w
KAorICAgIFVuaXRUZXN0KiB1bml0X3Rlc3QsIGludCBza2lwX2NvdW50KTsKIAogLy8gSGVscGVy
cyBmb3Igc3VwcHJlc3Npbmcgd2FybmluZ3Mgb24gdW5yZWFjaGFibGUgY29kZSBvciBjb25zdGFu
dAogLy8gY29uZGl0aW9uLgpAQCAtNzYyLDYgKzc3MSwxNSBAQCBHVEVTVF9BUElfIGJvb2wgQWx3
YXlzVHJ1ZSgpOwogLy8gQWx3YXlzIHJldHVybnMgZmFsc2UuCiBpbmxpbmUgYm9vbCBBbHdheXNG
YWxzZSgpIHsgcmV0dXJuICFBbHdheXNUcnVlKCk7IH0KIAorLy8gSGVscGVyIGZvciBzdXBwcmVz
c2luZyBmYWxzZSB3YXJuaW5nIGZyb20gQ2xhbmcgb24gYSBjb25zdCBjaGFyKgorLy8gdmFyaWFi
bGUgZGVjbGFyZWQgaW4gYSBjb25kaXRpb25hbCBleHByZXNzaW9uIGFsd2F5cyBiZWluZyBOVUxM
IGluCisvLyB0aGUgZWxzZSBicmFuY2guCitzdHJ1Y3QgR1RFU1RfQVBJXyBDb25zdENoYXJQdHIg
eworICBDb25zdENoYXJQdHIoY29uc3QgY2hhciogc3RyKSA6IHZhbHVlKHN0cikge30KKyAgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgY29uc3QgY2hhciogdmFsdWU7
Cit9OworCiAvLyBBIHNpbXBsZSBMaW5lYXIgQ29uZ3J1ZW50aWFsIEdlbmVyYXRvciBmb3IgZ2Vu
ZXJhdGluZyByYW5kb20KIC8vIG51bWJlcnMgd2l0aCBhIHVuaWZvcm0gZGlzdHJpYnV0aW9uLiAg
VW5saWtlIHJhbmQoKSBhbmQgc3JhbmQoKSwgaXQKIC8vIGRvZXNuJ3QgdXNlIGdsb2JhbCBzdGF0
ZSAoYW5kIHRoZXJlZm9yZSBjYW4ndCBpbnRlcmZlcmUgd2l0aCB1c2VyCkBAIC03ODQsMTMgKzgw
Miw0MDMgQEAgY2xhc3MgR1RFU1RfQVBJXyBSYW5kb20gewogICBHVEVTVF9ESVNBTExPV19DT1BZ
X0FORF9BU1NJR05fKFJhbmRvbSk7CiB9OwogCisvLyBEZWZpbmluZyBhIHZhcmlhYmxlIG9mIHR5
cGUgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8VDEsIFQyPiB3aWxsIGNhdXNlIGEKKy8vIGNvbXBp
bGVyIGVycm9yIGlmZiBUMSBhbmQgVDIgYXJlIGRpZmZlcmVudCB0eXBlcy4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CitzdHJ1Y3QgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw7
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFs
PFQsIFQ+IHsKK307CisKKy8vIFJlbW92ZXMgdGhlIHJlZmVyZW5jZSBmcm9tIGEgdHlwZSBpZiBp
dCBpcyBhIHJlZmVyZW5jZSB0eXBlLAorLy8gb3RoZXJ3aXNlIGxlYXZlcyBpdCB1bmNoYW5nZWQu
ICBUaGlzIGlzIHRoZSBzYW1lIGFzCisvLyB0cjE6OnJlbW92ZV9yZWZlcmVuY2UsIHdoaWNoIGlz
IG5vdCB3aWRlbHkgYXZhaWxhYmxlIHlldC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0
IFJlbW92ZVJlZmVyZW5jZSB7IHR5cGVkZWYgVCB0eXBlOyB9OyAgLy8gTk9MSU5UCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBSZW1vdmVSZWZlcmVuY2U8VCY+IHsgdHlwZWRlZiBUIHR5
cGU7IH07ICAvLyBOT0xJTlQKKworLy8gQSBoYW5keSB3cmFwcGVyIGFyb3VuZCBSZW1vdmVSZWZl
cmVuY2UgdGhhdCB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudAorLy8gVCBkZXBlbmRzIG9uIHRlbXBs
YXRlIHBhcmFtZXRlcnMuCisjZGVmaW5lIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfKFQpIFwKKyAg
ICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpSZW1vdmVSZWZlcmVuY2U8VD46OnR5cGUK
KworLy8gUmVtb3ZlcyBjb25zdCBmcm9tIGEgdHlwZSBpZiBpdCBpcyBhIGNvbnN0IHR5cGUsIG90
aGVyd2lzZSBsZWF2ZXMKKy8vIGl0IHVuY2hhbmdlZC4gIFRoaXMgaXMgdGhlIHNhbWUgYXMgdHIx
OjpyZW1vdmVfY29uc3QsIHdoaWNoIGlzIG5vdAorLy8gd2lkZWx5IGF2YWlsYWJsZSB5ZXQuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBSZW1vdmVDb25zdCB7IHR5cGVkZWYgVCB0eXBl
OyB9OyAgLy8gTk9MSU5UCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBSZW1vdmVDb25z
dDxjb25zdCBUPiB7IHR5cGVkZWYgVCB0eXBlOyB9OyAgLy8gTk9MSU5UCisKKy8vIE1TVkMgOC4w
LCBTdW4gQysrLCBhbmQgSUJNIFhMIEMrKyBoYXZlIGEgYnVnIHdoaWNoIGNhdXNlcyB0aGUgYWJv
dmUKKy8vIGRlZmluaXRpb24gdG8gZmFpbCB0byByZW1vdmUgdGhlIGNvbnN0IGluICdjb25zdCBp
bnRbM10nIGFuZCAnY29uc3QKKy8vIGNoYXJbM11bNF0nLiAgVGhlIGZvbGxvd2luZyBzcGVjaWFs
aXphdGlvbiB3b3JrcyBhcm91bmQgdGhlIGJ1Zy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXpl
X3QgTj4KK3N0cnVjdCBSZW1vdmVDb25zdDxjb25zdCBUW05dPiB7CisgIHR5cGVkZWYgdHlwZW5h
bWUgUmVtb3ZlQ29uc3Q8VD46OnR5cGUgdHlwZVtOXTsKK307CisKKyNpZiBkZWZpbmVkKF9NU0Nf
VkVSKSAmJiBfTVNDX1ZFUiA8IDE0MDAKKy8vIFRoaXMgaXMgdGhlIG9ubHkgc3BlY2lhbGl6YXRp
b24gdGhhdCBhbGxvd3MgVkMrKyA3LjEgdG8gcmVtb3ZlIGNvbnN0IGluCisvLyAnY29uc3QgaW50
WzNdIGFuZCAnY29uc3QgaW50WzNdWzRdJy4gIEhvd2V2ZXIsIGl0IGNhdXNlcyB0cm91YmxlIHdp
dGggR0NDCisvLyBhbmQgdGh1cyBuZWVkcyB0byBiZSBjb25kaXRpb25hbGx5IGNvbXBpbGVkLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgorc3RydWN0IFJlbW92ZUNvbnN0PFRbTl0+
IHsKKyAgdHlwZWRlZiB0eXBlbmFtZSBSZW1vdmVDb25zdDxUPjo6dHlwZSB0eXBlW05dOworfTsK
KyNlbmRpZgorCisvLyBBIGhhbmR5IHdyYXBwZXIgYXJvdW5kIFJlbW92ZUNvbnN0IHRoYXQgd29y
a3Mgd2hlbiB0aGUgYXJndW1lbnQKKy8vIFQgZGVwZW5kcyBvbiB0ZW1wbGF0ZSBwYXJhbWV0ZXJz
LgorI2RlZmluZSBHVEVTVF9SRU1PVkVfQ09OU1RfKFQpIFwKKyAgICB0eXBlbmFtZSA6OnRlc3Rp
bmc6OmludGVybmFsOjpSZW1vdmVDb25zdDxUPjo6dHlwZQorCisvLyBUdXJucyBjb25zdCBVJiwg
VSYsIGNvbnN0IFUsIGFuZCBVIGFsbCBpbnRvIFUuCisjZGVmaW5lIEdURVNUX1JFTU9WRV9SRUZF
UkVOQ0VfQU5EX0NPTlNUXyhUKSBcCisgICAgR1RFU1RfUkVNT1ZFX0NPTlNUXyhHVEVTVF9SRU1P
VkVfUkVGRVJFTkNFXyhUKSkKKworLy8gSW1wbGljaXRseUNvbnZlcnRpYmxlPEZyb20sIFRvPjo6
dmFsdWUgaXMgYSBjb21waWxlLXRpbWUgYm9vbAorLy8gY29uc3RhbnQgdGhhdCdzIHRydWUgaWZm
IHR5cGUgRnJvbSBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8KKy8vIHR5cGUgVG8uCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+CitjbGFzcyBJbXBsaWNpdGx5Q29u
dmVydGlibGUgeworIHByaXZhdGU6CisgIC8vIFdlIG5lZWQgdGhlIGZvbGxvd2luZyBoZWxwZXIg
ZnVuY3Rpb25zIG9ubHkgZm9yIHRoZWlyIHR5cGVzLgorICAvLyBUaGV5IGhhdmUgbm8gaW1wbGVt
ZW50YXRpb25zLgorCisgIC8vIE1ha2VGcm9tKCkgaXMgYW4gZXhwcmVzc2lvbiB3aG9zZSB0eXBl
IGlzIEZyb20uICBXZSBjYW5ub3Qgc2ltcGx5CisgIC8vIHVzZSBGcm9tKCksIGFzIHRoZSB0eXBl
IEZyb20gbWF5IG5vdCBoYXZlIGEgcHVibGljIGRlZmF1bHQKKyAgLy8gY29uc3RydWN0b3IuCisg
IHN0YXRpYyB0eXBlbmFtZSBBZGRSZWZlcmVuY2U8RnJvbT46OnR5cGUgTWFrZUZyb20oKTsKKwor
ICAvLyBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSBvdmVybG9hZGVkLiAgR2l2ZW4gYW4gZXhwcmVz
c2lvbgorICAvLyBIZWxwZXIoeCksIHRoZSBjb21waWxlciB3aWxsIHBpY2sgdGhlIGZpcnN0IHZl
cnNpb24gaWYgeCBjYW4gYmUKKyAgLy8gaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gdHlwZSBUbzsg
b3RoZXJ3aXNlIGl0IHdpbGwgcGljayB0aGUKKyAgLy8gc2Vjb25kIHZlcnNpb24uCisgIC8vCisg
IC8vIFRoZSBmaXJzdCB2ZXJzaW9uIHJldHVybnMgYSB2YWx1ZSBvZiBzaXplIDEsIGFuZCB0aGUg
c2Vjb25kCisgIC8vIHZlcnNpb24gcmV0dXJucyBhIHZhbHVlIG9mIHNpemUgMi4gIFRoZXJlZm9y
ZSwgYnkgY2hlY2tpbmcgdGhlCisgIC8vIHNpemUgb2YgSGVscGVyKHgpLCB3aGljaCBjYW4gYmUg
ZG9uZSBhdCBjb21waWxlIHRpbWUsIHdlIGNhbiB0ZWxsCisgIC8vIHdoaWNoIHZlcnNpb24gb2Yg
SGVscGVyKCkgaXMgdXNlZCwgYW5kIGhlbmNlIHdoZXRoZXIgeCBjYW4gYmUKKyAgLy8gaW1wbGlj
aXRseSBjb252ZXJ0ZWQgdG8gdHlwZSBUby4KKyAgc3RhdGljIGNoYXIgSGVscGVyKFRvKTsKKyAg
c3RhdGljIGNoYXIgKCZIZWxwZXIoLi4uKSlbMl07ICAvLyBOT0xJTlQKKworICAvLyBXZSBoYXZl
IHRvIHB1dCB0aGUgJ3B1YmxpYycgc2VjdGlvbiBhZnRlciB0aGUgJ3ByaXZhdGUnIHNlY3Rpb24s
CisgIC8vIG9yIE1TVkMgcmVmdXNlcyB0byBjb21waWxlIHRoZSBjb2RlLgorIHB1YmxpYzoKKyNp
ZiBkZWZpbmVkKF9fQk9STEFORENfXykKKyAgLy8gQysrQnVpbGRlciBjYW5ub3QgdXNlIG1lbWJl
ciBvdmVybG9hZCByZXNvbHV0aW9uIGR1cmluZyB0ZW1wbGF0ZQorICAvLyBpbnN0YW50aWF0aW9u
LiAgVGhlIHNpbXBsZXN0IHdvcmthcm91bmQgaXMgdG8gdXNlIGl0cyBDKysweCB0eXBlIHRyYWl0
cworICAvLyBmdW5jdGlvbnMgKEMrK0J1aWxkZXIgMjAwOSBhbmQgYWJvdmUgb25seSkuCisgIHN0
YXRpYyBjb25zdCBib29sIHZhbHVlID0gX19pc19jb252ZXJ0aWJsZShGcm9tLCBUbyk7CisjZWxz
ZQorICAvLyBNU1ZDIHdhcm5zIGFib3V0IGltcGxpY2l0bHkgY29udmVydGluZyBmcm9tIGRvdWJs
ZSB0byBpbnQgZm9yCisgIC8vIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YSwgc28gd2UgbmVlZCB0byB0
ZW1wb3JhcmlseSBkaXNhYmxlIHRoZQorICAvLyB3YXJuaW5nLgorICBHVEVTVF9ESVNBQkxFX01T
Q19XQVJOSU5HU19QVVNIXyg0MjQ0KQorICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9CisgICAg
ICBzaXplb2YoSGVscGVyKEltcGxpY2l0bHlDb252ZXJ0aWJsZTo6TWFrZUZyb20oKSkpID09IDE7
CisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQorI2VuZGlmICAvLyBfX0JPUkxB
TkRDX18KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Citjb25zdCBi
b29sIEltcGxpY2l0bHlDb252ZXJ0aWJsZTxGcm9tLCBUbz46OnZhbHVlOworCisvLyBJc0FQcm90
b2NvbE1lc3NhZ2U8VD46OnZhbHVlIGlzIGEgY29tcGlsZS10aW1lIGJvb2wgY29uc3RhbnQgdGhh
dCdzCisvLyB0cnVlIGlmZiBUIGlzIHR5cGUgUHJvdG9jb2xNZXNzYWdlLCBwcm90bzI6Ok1lc3Nh
Z2UsIG9yIGEgc3ViY2xhc3MKKy8vIG9mIHRob3NlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citz
dHJ1Y3QgSXNBUHJvdG9jb2xNZXNzYWdlCisgICAgOiBwdWJsaWMgYm9vbF9jb25zdGFudDwKKyAg
SW1wbGljaXRseUNvbnZlcnRpYmxlPGNvbnN0IFQqLCBjb25zdCA6OlByb3RvY29sTWVzc2FnZSo+
Ojp2YWx1ZSB8fAorICBJbXBsaWNpdGx5Q29udmVydGlibGU8Y29uc3QgVCosIGNvbnN0IDo6cHJv
dG8yOjpNZXNzYWdlKj46OnZhbHVlPiB7Cit9OworCisvLyBXaGVuIHRoZSBjb21waWxlciBzZWVz
IGV4cHJlc3Npb24gSXNDb250YWluZXJUZXN0PEM+KDApLCBpZiBDIGlzIGFuCisvLyBTVEwtc3R5
bGUgY29udGFpbmVyIGNsYXNzLCB0aGUgZmlyc3Qgb3ZlcmxvYWQgb2YgSXNDb250YWluZXJUZXN0
CisvLyB3aWxsIGJlIHZpYWJsZSAoc2luY2UgYm90aCBDOjppdGVyYXRvciogYW5kIEM6OmNvbnN0
X2l0ZXJhdG9yKiBhcmUKKy8vIHZhbGlkIHR5cGVzIGFuZCBOVUxMIGNhbiBiZSBpbXBsaWNpdGx5
IGNvbnZlcnRlZCB0byB0aGVtKS4gIEl0IHdpbGwKKy8vIGJlIHBpY2tlZCBvdmVyIHRoZSBzZWNv
bmQgb3ZlcmxvYWQgYXMgJ2ludCcgaXMgYSBwZXJmZWN0IG1hdGNoIGZvcgorLy8gdGhlIHR5cGUg
b2YgYXJndW1lbnQgMC4gIElmIEM6Oml0ZXJhdG9yIG9yIEM6OmNvbnN0X2l0ZXJhdG9yIGlzIG5v
dAorLy8gYSB2YWxpZCB0eXBlLCB0aGUgZmlyc3Qgb3ZlcmxvYWQgaXMgbm90IHZpYWJsZSwgYW5k
IHRoZSBzZWNvbmQKKy8vIG92ZXJsb2FkIHdpbGwgYmUgcGlja2VkLiAgVGhlcmVmb3JlLCB3ZSBj
YW4gZGV0ZXJtaW5lIHdoZXRoZXIgQyBpcworLy8gYSBjb250YWluZXIgY2xhc3MgYnkgY2hlY2tp
bmcgdGhlIHR5cGUgb2YgSXNDb250YWluZXJUZXN0PEM+KDApLgorLy8gVGhlIHZhbHVlIG9mIHRo
ZSBleHByZXNzaW9uIGlzIGluc2lnbmlmaWNhbnQuCisvLworLy8gSW4gQysrMTEgbW9kZSB3ZSBj
aGVjayB0aGUgZXhpc3RlbmNlIG9mIGEgY29uc3RfaXRlcmF0b3IgYW5kIHRoYXQgYW4KKy8vIGl0
ZXJhdG9yIGlzIHByb3Blcmx5IGltcGxlbWVudGVkIGZvciB0aGUgY29udGFpbmVyLgorLy8KKy8v
IEZvciBwcmUtQysrMTEgdGhhdCB3ZSBsb29rIGZvciBib3RoIEM6Oml0ZXJhdG9yIGFuZCBDOjpj
b25zdF9pdGVyYXRvci4KKy8vIFRoZSByZWFzb24gaXMgdGhhdCBDKysgaW5qZWN0cyB0aGUgbmFt
ZSBvZiBhIGNsYXNzIGFzIGEgbWVtYmVyIG9mIHRoZQorLy8gY2xhc3MgaXRzZWxmIChlLmcuIHlv
dSBjYW4gcmVmZXIgdG8gY2xhc3MgaXRlcmF0b3IgYXMgZWl0aGVyCisvLyAnaXRlcmF0b3InIG9y
ICdpdGVyYXRvcjo6aXRlcmF0b3InKS4gIElmIHdlIGxvb2sgZm9yIEM6Oml0ZXJhdG9yCisvLyBv
bmx5LCBmb3IgZXhhbXBsZSwgd2Ugd291bGQgbWlzdGFrZW5seSB0aGluayB0aGF0IGEgY2xhc3Mg
bmFtZWQKKy8vIGl0ZXJhdG9yIGlzIGFuIFNUTCBjb250YWluZXIuCisvLworLy8gQWxzbyBub3Rl
IHRoYXQgdGhlIHNpbXBsZXIgYXBwcm9hY2ggb2Ygb3ZlcmxvYWRpbmcKKy8vIElzQ29udGFpbmVy
VGVzdCh0eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvciopIGFuZAorLy8gSXNDb250YWluZXJUZXN0
KC4uLikgZG9lc24ndCB3b3JrIHdpdGggVmlzdWFsIEFnZSBDKysgYW5kIFN1biBDKysuCit0eXBl
ZGVmIGludCBJc0NvbnRhaW5lcjsKKyNpZiBHVEVTVF9MQU5HX0NYWDExCit0ZW1wbGF0ZSA8Y2xh
c3MgQywKKyAgICAgICAgICBjbGFzcyBJdGVyYXRvciA9IGRlY2x0eXBlKDo6c3RkOjpkZWNsdmFs
PGNvbnN0IEMmPigpLmJlZ2luKCkpLAorICAgICAgICAgIGNsYXNzID0gZGVjbHR5cGUoOjpzdGQ6
OmRlY2x2YWw8Y29uc3QgQyY+KCkuZW5kKCkpLAorICAgICAgICAgIGNsYXNzID0gZGVjbHR5cGUo
Kys6OnN0ZDo6ZGVjbHZhbDxJdGVyYXRvciY+KCkpLAorICAgICAgICAgIGNsYXNzID0gZGVjbHR5
cGUoKjo6c3RkOjpkZWNsdmFsPEl0ZXJhdG9yPigpKSwKKyAgICAgICAgICBjbGFzcyA9IHR5cGVu
YW1lIEM6OmNvbnN0X2l0ZXJhdG9yPgorSXNDb250YWluZXIgSXNDb250YWluZXJUZXN0KGludCAv
KiBkdW1teSAqLykgeworICByZXR1cm4gMDsKK30KKyNlbHNlCit0ZW1wbGF0ZSA8Y2xhc3MgQz4K
K0lzQ29udGFpbmVyIElzQ29udGFpbmVyVGVzdChpbnQgLyogZHVtbXkgKi8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQzo6aXRlcmF0b3IqIC8qIGl0ICovID0gTlVMTCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvciog
LyogY29uc3RfaXQgKi8gPSBOVUxMKSB7CisgIHJldHVybiAwOworfQorI2VuZGlmICAvLyBHVEVT
VF9MQU5HX0NYWDExCisKK3R5cGVkZWYgY2hhciBJc05vdENvbnRhaW5lcjsKK3RlbXBsYXRlIDxj
bGFzcyBDPgorSXNOb3RDb250YWluZXIgSXNDb250YWluZXJUZXN0KGxvbmcgLyogZHVtbXkgKi8p
IHsgcmV0dXJuICdcMCc7IH0KKworLy8gVHJhaXQgdG8gZGV0ZWN0IHdoZXRoZXIgYSB0eXBlIFQg
aXMgYSBoYXNoIHRhYmxlLgorLy8gVGhlIGhldXJpc3RpYyB1c2VkIGlzIHRoYXQgdGhlIHR5cGUg
Y29udGFpbnMgYW4gaW5uZXIgdHlwZSBgaGFzaGVyYCBhbmQgZG9lcworLy8gbm90IGNvbnRhaW4g
YW4gaW5uZXIgdHlwZSBgcmV2ZXJzZV9pdGVyYXRvcmAuCisvLyBJZiB0aGUgY29udGFpbmVyIGlz
IGl0ZXJhYmxlIGluIHJldmVyc2UsIHRoZW4gb3JkZXIgbWlnaHQgYWN0dWFsbHkgbWF0dGVyLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNIYXNoVGFibGUgeworIHByaXZhdGU6Cisg
IHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICBzdGF0aWMgY2hhciB0ZXN0KHR5cGVuYW1lIFU6Omhh
c2hlciosIHR5cGVuYW1lIFU6OnJldmVyc2VfaXRlcmF0b3IqKTsKKyAgdGVtcGxhdGUgPHR5cGVu
YW1lIFU+CisgIHN0YXRpYyBpbnQgdGVzdCh0eXBlbmFtZSBVOjpoYXNoZXIqLCAuLi4pOworICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgc3RhdGljIGNoYXIgdGVzdCguLi4pOworCisgcHVibGlj
OgorICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZih0ZXN0PFQ+KDAsIDApKSA9PSBz
aXplb2YoaW50KTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3QgYm9vbCBJc0hh
c2hUYWJsZTxUPjo6dmFsdWU7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgVm9pZFQg
eworICAgIHR5cGVkZWYgdm9pZCB2YWx1ZV90eXBlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHR5cGVuYW1lID0gdm9pZD4KK3N0cnVjdCBIYXNWYWx1ZVR5cGUgOiBmYWxzZV90eXBlIHt9
OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSGFzVmFsdWVUeXBlPFQsIFZvaWRUPHR5
cGVuYW1lIFQ6OnZhbHVlX3R5cGU+ID4gOiB0cnVlX3R5cGUgeworfTsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIEMsCisgICAgICAgICAgYm9vbCA9IHNpemVvZihJc0NvbnRhaW5lclRlc3Q8Qz4oMCkp
ID09IHNpemVvZihJc0NvbnRhaW5lciksCisgICAgICAgICAgYm9vbCA9IEhhc1ZhbHVlVHlwZTxD
Pjo6dmFsdWU+CitzdHJ1Y3QgSXNSZWN1cnNpdmVDb250YWluZXJJbXBsOworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgQywgYm9vbCBIVj4KK3N0cnVjdCBJc1JlY3Vyc2l2ZUNvbnRhaW5lckltcGw8Qywg
ZmFsc2UsIEhWPiA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OworCisvLyBTaW5jZSB0aGUgSXNSZWN1
cnNpdmVDb250YWluZXJJbXBsIGRlcGVuZHMgb24gdGhlIElzQ29udGFpbmVyVGVzdCB3ZSBuZWVk
IHRvCisvLyBvYmV5IHRoZSBzYW1lIGluY29uc2lzdGVuY2llcyBhcyB0aGUgSXNDb250YWluZXJU
ZXN0LCBuYW1lbHkgY2hlY2sgaWYKKy8vIHNvbWV0aGluZyBpcyBhIGNvbnRhaW5lciBpcyByZWx5
aW5nIG9uIG9ubHkgY29uc3RfaXRlcmF0b3IgaW4gQysrMTEgYW5kCisvLyBpcyByZWx5aW5nIG9u
IGJvdGggY29uc3RfaXRlcmF0b3IgYW5kIGl0ZXJhdG9yIG90aGVyd2lzZQordGVtcGxhdGUgPHR5
cGVuYW1lIEM+CitzdHJ1Y3QgSXNSZWN1cnNpdmVDb250YWluZXJJbXBsPEMsIHRydWUsIGZhbHNl
PiA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KK3N0cnVj
dCBJc1JlY3Vyc2l2ZUNvbnRhaW5lckltcGw8QywgdHJ1ZSwgdHJ1ZT4geworICAjaWYgR1RFU1Rf
TEFOR19DWFgxMQorICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yVHJhaXRzPHR5cGVuYW1lIEM6
OmNvbnN0X2l0ZXJhdG9yPjo6dmFsdWVfdHlwZQorICAgICAgdmFsdWVfdHlwZTsKKyNlbHNlCisg
IHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3JUcmFpdHM8dHlwZW5hbWUgQzo6aXRlcmF0b3I+Ojp2
YWx1ZV90eXBlIHZhbHVlX3R5cGU7CisjZW5kaWYKKyAgdHlwZWRlZiBpc19zYW1lPHZhbHVlX3R5
cGUsIEM+IHR5cGU7Cit9OworCisvLyBJc1JlY3Vyc2l2ZUNvbnRhaW5lcjxUeXBlPiBpcyBhIHVu
YXJ5IGNvbXBpbGUtdGltZSBwcmVkaWNhdGUgdGhhdAorLy8gZXZhbHVhdGVzIHdoZXRoZXIgQyBp
cyBhIHJlY3Vyc2l2ZSBjb250YWluZXIgdHlwZS4gQSByZWN1cnNpdmUgY29udGFpbmVyCisvLyB0
eXBlIGlzIGEgY29udGFpbmVyIHR5cGUgd2hvc2UgdmFsdWVfdHlwZSBpcyBlcXVhbCB0byB0aGUg
Y29udGFpbmVyIHR5cGUKKy8vIGl0c2VsZi4gQW4gZXhhbXBsZSBmb3IgYSByZWN1cnNpdmUgY29u
dGFpbmVyIHR5cGUgaXMKKy8vIGJvb3N0OjpmaWxlc3lzdGVtOjpwYXRoLCB3aG9zZSBpdGVyYXRv
ciBoYXMgYSB2YWx1ZV90eXBlIHRoYXQgaXMgZXF1YWwgdG8KKy8vIGJvb3N0OjpmaWxlc3lzdGVt
OjpwYXRoLgordGVtcGxhdGUgPHR5cGVuYW1lIEM+CitzdHJ1Y3QgSXNSZWN1cnNpdmVDb250YWlu
ZXIgOiBwdWJsaWMgSXNSZWN1cnNpdmVDb250YWluZXJJbXBsPEM+Ojp0eXBlIHt9OworCisvLyBF
bmFibGVJZjxjb25kaXRpb24+Ojp0eXBlIGlzIHZvaWQgd2hlbiAnQ29uZCcgaXMgdHJ1ZSwgYW5k
CisvLyB1bmRlZmluZWQgd2hlbiAnQ29uZCcgaXMgZmFsc2UuICBUbyB1c2UgU0ZJTkFFIHRvIG1h
a2UgYSBmdW5jdGlvbgorLy8gb3ZlcmxvYWQgb25seSBhcHBseSB3aGVuIGEgcGFydGljdWxhciBl
eHByZXNzaW9uIGlzIHRydWUsIGFkZAorLy8gInR5cGVuYW1lIEVuYWJsZUlmPGV4cHJlc3Npb24+
Ojp0eXBlKiA9IDAiIGFzIHRoZSBsYXN0IHBhcmFtZXRlci4KK3RlbXBsYXRlPGJvb2w+IHN0cnVj
dCBFbmFibGVJZjsKK3RlbXBsYXRlPD4gc3RydWN0IEVuYWJsZUlmPHRydWU+IHsgdHlwZWRlZiB2
b2lkIHR5cGU7IH07ICAvLyBOT0xJTlQKKworLy8gVXRpbGl0aWVzIGZvciBuYXRpdmUgYXJyYXlz
LgorCisvLyBBcnJheUVxKCkgY29tcGFyZXMgdHdvIGstZGltZW5zaW9uYWwgbmF0aXZlIGFycmF5
cyB1c2luZyB0aGUKKy8vIGVsZW1lbnRzJyBvcGVyYXRvcj09LCB3aGVyZSBrIGNhbiBiZSBhbnkg
aW50ZWdlciA+PSAwLiAgV2hlbiBrIGlzCisvLyAwLCBBcnJheUVxKCkgZGVnZW5lcmF0ZXMgaW50
byBjb21wYXJpbmcgYSBzaW5nbGUgcGFpciBvZiB2YWx1ZXMuCisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPgorYm9vbCBBcnJheUVxKGNvbnN0IFQqIGxocywgc2l6ZV90IHNpemUs
IGNvbnN0IFUqIHJocyk7CisKKy8vIFRoaXMgZ2VuZXJpYyB2ZXJzaW9uIGlzIHVzZWQgd2hlbiBr
IGlzIDAuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2lubGluZSBib29sIEFy
cmF5RXEoY29uc3QgVCYgbGhzLCBjb25zdCBVJiByaHMpIHsgcmV0dXJuIGxocyA9PSByaHM7IH0K
KworLy8gVGhpcyBvdmVybG9hZCBpcyB1c2VkIHdoZW4gayA+PSAxLgordGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBOPgoraW5saW5lIGJvb2wgQXJyYXlFcShjb25zdCBU
KCZsaHMpW05dLCBjb25zdCBVKCZyaHMpW05dKSB7CisgIHJldHVybiBpbnRlcm5hbDo6QXJyYXlF
cShsaHMsIE4sIHJocyk7Cit9CisKKy8vIFRoaXMgaGVscGVyIHJlZHVjZXMgY29kZSBibG9hdC4g
IElmIHdlIGluc3RlYWQgcHV0IGl0cyBsb2dpYyBpbnNpZGUKKy8vIHRoZSBwcmV2aW91cyBBcnJh
eUVxKCkgZnVuY3Rpb24sIGFycmF5cyB3aXRoIGRpZmZlcmVudCBzaXplcyB3b3VsZAorLy8gbGVh
ZCB0byBkaWZmZXJlbnQgY29waWVzIG9mIHRoZSB0ZW1wbGF0ZSBjb2RlLgordGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+Citib29sIEFycmF5RXEoY29uc3QgVCogbGhzLCBzaXplX3Qg
c2l6ZSwgY29uc3QgVSogcmhzKSB7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHNpemU7IGkr
KykgeworICAgIGlmICghaW50ZXJuYWw6OkFycmF5RXEobGhzW2ldLCByaHNbaV0pKQorICAgICAg
cmV0dXJuIGZhbHNlOworICB9CisgIHJldHVybiB0cnVlOworfQorCisvLyBGaW5kcyB0aGUgZmly
c3QgZWxlbWVudCBpbiB0aGUgaXRlcmF0b3IgcmFuZ2UgW2JlZ2luLCBlbmQpIHRoYXQKKy8vIGVx
dWFscyBlbGVtLiAgRWxlbWVudCBtYXkgYmUgYSBuYXRpdmUgYXJyYXkgdHlwZSBpdHNlbGYuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlciwgdHlwZW5hbWUgRWxlbWVudD4KK0l0ZXIgQXJyYXlBd2Fy
ZUZpbmQoSXRlciBiZWdpbiwgSXRlciBlbmQsIGNvbnN0IEVsZW1lbnQmIGVsZW0pIHsKKyAgZm9y
IChJdGVyIGl0ID0gYmVnaW47IGl0ICE9IGVuZDsgKytpdCkgeworICAgIGlmIChpbnRlcm5hbDo6
QXJyYXlFcSgqaXQsIGVsZW0pKQorICAgICAgcmV0dXJuIGl0OworICB9CisgIHJldHVybiBlbmQ7
Cit9CisKKy8vIENvcHlBcnJheSgpIGNvcGllcyBhIGstZGltZW5zaW9uYWwgbmF0aXZlIGFycmF5
IHVzaW5nIHRoZSBlbGVtZW50cycKKy8vIG9wZXJhdG9yPSwgd2hlcmUgayBjYW4gYmUgYW55IGlu
dGVnZXIgPj0gMC4gIFdoZW4gayBpcyAwLAorLy8gQ29weUFycmF5KCkgZGVnZW5lcmF0ZXMgaW50
byBjb3B5aW5nIGEgc2luZ2xlIHZhbHVlLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KK3ZvaWQgQ29weUFycmF5KGNvbnN0IFQqIGZyb20sIHNpemVfdCBzaXplLCBVKiB0byk7
CisKKy8vIFRoaXMgZ2VuZXJpYyB2ZXJzaW9uIGlzIHVzZWQgd2hlbiBrIGlzIDAuCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2lubGluZSB2b2lkIENvcHlBcnJheShjb25zdCBU
JiBmcm9tLCBVKiB0bykgeyAqdG8gPSBmcm9tOyB9CisKKy8vIFRoaXMgb3ZlcmxvYWQgaXMgdXNl
ZCB3aGVuIGsgPj0gMS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3Qg
Tj4KK2lubGluZSB2b2lkIENvcHlBcnJheShjb25zdCBUKCZmcm9tKVtOXSwgVSgqdG8pW05dKSB7
CisgIGludGVybmFsOjpDb3B5QXJyYXkoZnJvbSwgTiwgKnRvKTsKK30KKworLy8gVGhpcyBoZWxw
ZXIgcmVkdWNlcyBjb2RlIGJsb2F0LiAgSWYgd2UgaW5zdGVhZCBwdXQgaXRzIGxvZ2ljIGluc2lk
ZQorLy8gdGhlIHByZXZpb3VzIENvcHlBcnJheSgpIGZ1bmN0aW9uLCBhcnJheXMgd2l0aCBkaWZm
ZXJlbnQgc2l6ZXMKKy8vIHdvdWxkIGxlYWQgdG8gZGlmZmVyZW50IGNvcGllcyBvZiB0aGUgdGVt
cGxhdGUgY29kZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgordm9pZCBDb3B5
QXJyYXkoY29uc3QgVCogZnJvbSwgc2l6ZV90IHNpemUsIFUqIHRvKSB7CisgIGZvciAoc2l6ZV90
IGkgPSAwOyBpICE9IHNpemU7IGkrKykgeworICAgIGludGVybmFsOjpDb3B5QXJyYXkoZnJvbVtp
XSwgdG8gKyBpKTsKKyAgfQorfQorCisvLyBUaGUgcmVsYXRpb24gYmV0d2VlbiBhbiBOYXRpdmVB
cnJheSBvYmplY3QgKHNlZSBiZWxvdykgYW5kIHRoZQorLy8gbmF0aXZlIGFycmF5IGl0IHJlcHJl
c2VudHMuCisvLyBXZSB1c2UgMiBkaWZmZXJlbnQgc3RydWN0cyB0byBhbGxvdyBub24tY29weWFi
bGUgdHlwZXMgdG8gYmUgdXNlZCwgYXMgbG9uZworLy8gYXMgUmVsYXRpb25Ub1NvdXJjZVJlZmVy
ZW5jZSgpIGlzIHBhc3NlZC4KK3N0cnVjdCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlIHt9Owor
c3RydWN0IFJlbGF0aW9uVG9Tb3VyY2VDb3B5IHt9OworCisvLyBBZGFwdHMgYSBuYXRpdmUgYXJy
YXkgdG8gYSByZWFkLW9ubHkgU1RMLXN0eWxlIGNvbnRhaW5lci4gIEluc3RlYWQKKy8vIG9mIHRo
ZSBjb21wbGV0ZSBTVEwgY29udGFpbmVyIGNvbmNlcHQsIHRoaXMgYWRhcHRvciBvbmx5IGltcGxl
bWVudHMKKy8vIG1lbWJlcnMgdXNlZnVsIGZvciBHb29nbGUgTW9jaydzIGNvbnRhaW5lciBtYXRj
aGVycy4gIE5ldyBtZW1iZXJzCisvLyBzaG91bGQgYmUgYWRkZWQgYXMgbmVlZGVkLiAgVG8gc2lt
cGxpZnkgdGhlIGltcGxlbWVudGF0aW9uLCB3ZSBvbmx5CisvLyBzdXBwb3J0IEVsZW1lbnQgYmVp
bmcgYSByYXcgdHlwZSAoaS5lLiBoYXZpbmcgbm8gdG9wLWxldmVsIGNvbnN0IG9yCisvLyByZWZl
cmVuY2UgbW9kaWZpZXIpLiAgSXQncyB0aGUgY2xpZW50J3MgcmVzcG9uc2liaWxpdHkgdG8gc2F0
aXNmeQorLy8gdGhpcyByZXF1aXJlbWVudC4gIEVsZW1lbnQgY2FuIGJlIGFuIGFycmF5IHR5cGUg
aXRzZWxmIChoZW5jZQorLy8gbXVsdGktZGltZW5zaW9uYWwgYXJyYXlzIGFyZSBzdXBwb3J0ZWQp
LgordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnQ+CitjbGFzcyBOYXRpdmVBcnJheSB7CisgcHVi
bGljOgorICAvLyBTVEwtc3R5bGUgY29udGFpbmVyIHR5cGVkZWZzLgorICB0eXBlZGVmIEVsZW1l
bnQgdmFsdWVfdHlwZTsKKyAgdHlwZWRlZiBFbGVtZW50KiBpdGVyYXRvcjsKKyAgdHlwZWRlZiBj
b25zdCBFbGVtZW50KiBjb25zdF9pdGVyYXRvcjsKKworICAvLyBDb25zdHJ1Y3RzIGZyb20gYSBu
YXRpdmUgYXJyYXkuIFJlZmVyZW5jZXMgdGhlIHNvdXJjZS4KKyAgTmF0aXZlQXJyYXkoY29uc3Qg
RWxlbWVudCogYXJyYXksIHNpemVfdCBjb3VudCwgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSkg
eworICAgIEluaXRSZWYoYXJyYXksIGNvdW50KTsKKyAgfQorCisgIC8vIENvbnN0cnVjdHMgZnJv
bSBhIG5hdGl2ZSBhcnJheS4gQ29waWVzIHRoZSBzb3VyY2UuCisgIE5hdGl2ZUFycmF5KGNvbnN0
IEVsZW1lbnQqIGFycmF5LCBzaXplX3QgY291bnQsIFJlbGF0aW9uVG9Tb3VyY2VDb3B5KSB7Cisg
ICAgSW5pdENvcHkoYXJyYXksIGNvdW50KTsKKyAgfQorCisgIC8vIENvcHkgY29uc3RydWN0b3Iu
CisgIE5hdGl2ZUFycmF5KGNvbnN0IE5hdGl2ZUFycmF5JiByaHMpIHsKKyAgICAodGhpcy0+KnJo
cy5jbG9uZV8pKHJocy5hcnJheV8sIHJocy5zaXplXyk7CisgIH0KKworICB+TmF0aXZlQXJyYXko
KSB7CisgICAgaWYgKGNsb25lXyAhPSAmTmF0aXZlQXJyYXk6OkluaXRSZWYpCisgICAgICBkZWxl
dGVbXSBhcnJheV87CisgIH0KKworICAvLyBTVEwtc3R5bGUgY29udGFpbmVyIG1ldGhvZHMuCisg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZV87IH0KKyAgY29uc3RfaXRlcmF0b3Ig
YmVnaW4oKSBjb25zdCB7IHJldHVybiBhcnJheV87IH0KKyAgY29uc3RfaXRlcmF0b3IgZW5kKCkg
Y29uc3QgeyByZXR1cm4gYXJyYXlfICsgc2l6ZV87IH0KKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IE5hdGl2ZUFycmF5JiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gc2l6ZSgpID09IHJocy5zaXpl
KCkgJiYKKyAgICAgICAgQXJyYXlFcShiZWdpbigpLCBzaXplKCksIHJocy5iZWdpbigpKTsKKyAg
fQorCisgcHJpdmF0ZToKKyAgZW51bSB7CisgICAga0NoZWNrVHlwZUlzTm90Q29uc3RPckFSZWZl
cmVuY2UgPSBTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI8CisgICAgICAgIEVsZW1lbnQsIEdURVNU
X1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhFbGVtZW50KT46OnZhbHVlCisgIH07CisKKyAg
Ly8gSW5pdGlhbGl6ZXMgdGhpcyBvYmplY3Qgd2l0aCBhIGNvcHkgb2YgdGhlIGlucHV0LgorICB2
b2lkIEluaXRDb3B5KGNvbnN0IEVsZW1lbnQqIGFycmF5LCBzaXplX3QgYV9zaXplKSB7CisgICAg
RWxlbWVudCogY29uc3QgY29weSA9IG5ldyBFbGVtZW50W2Ffc2l6ZV07CisgICAgQ29weUFycmF5
KGFycmF5LCBhX3NpemUsIGNvcHkpOworICAgIGFycmF5XyA9IGNvcHk7CisgICAgc2l6ZV8gPSBh
X3NpemU7CisgICAgY2xvbmVfID0gJk5hdGl2ZUFycmF5OjpJbml0Q29weTsKKyAgfQorCisgIC8v
IEluaXRpYWxpemVzIHRoaXMgb2JqZWN0IHdpdGggYSByZWZlcmVuY2Ugb2YgdGhlIGlucHV0Lgor
ICB2b2lkIEluaXRSZWYoY29uc3QgRWxlbWVudCogYXJyYXksIHNpemVfdCBhX3NpemUpIHsKKyAg
ICBhcnJheV8gPSBhcnJheTsKKyAgICBzaXplXyA9IGFfc2l6ZTsKKyAgICBjbG9uZV8gPSAmTmF0
aXZlQXJyYXk6OkluaXRSZWY7CisgIH0KKworICBjb25zdCBFbGVtZW50KiBhcnJheV87CisgIHNp
emVfdCBzaXplXzsKKyAgdm9pZCAoTmF0aXZlQXJyYXk6OipjbG9uZV8pKGNvbnN0IEVsZW1lbnQq
LCBzaXplX3QpOworCisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oTmF0aXZlQXJyYXkpOworfTsK
KwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwogCi0j
ZGVmaW5lIEdURVNUX01FU1NBR0VfKG1lc3NhZ2UsIHJlc3VsdF90eXBlKSBcCi0gIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkFzc2VydEhlbHBlcihyZXN1bHRfdHlwZSwgX19GSUxFX18sIF9fTElORV9f
LCBtZXNzYWdlKSBcCisjZGVmaW5lIEdURVNUX01FU1NBR0VfQVRfKGZpbGUsIGxpbmUsIG1lc3Nh
Z2UsIHJlc3VsdF90eXBlKSBcCisgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkFzc2VydEhlbHBlcihy
ZXN1bHRfdHlwZSwgZmlsZSwgbGluZSwgbWVzc2FnZSkgXAogICAgID0gOjp0ZXN0aW5nOjpNZXNz
YWdlKCkKIAorI2RlZmluZSBHVEVTVF9NRVNTQUdFXyhtZXNzYWdlLCByZXN1bHRfdHlwZSkgXAor
ICBHVEVTVF9NRVNTQUdFX0FUXyhfX0ZJTEVfXywgX19MSU5FX18sIG1lc3NhZ2UsIHJlc3VsdF90
eXBlKQorCiAjZGVmaW5lIEdURVNUX0ZBVEFMX0ZBSUxVUkVfKG1lc3NhZ2UpIFwKICAgcmV0dXJu
IEdURVNUX01FU1NBR0VfKG1lc3NhZ2UsIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ6OmtGYXRh
bEZhaWx1cmUpCiAKQEAgLTgwMCw3ICsxMjA4LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBSYW5kb20g
ewogI2RlZmluZSBHVEVTVF9TVUNDRVNTXyhtZXNzYWdlKSBcCiAgIEdURVNUX01FU1NBR0VfKG1l
c3NhZ2UsIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNzKQogCi0vLyBTdXBwcmVz
c2VzIE1TVkMgd2FybmluZ3MgNDA3MiAodW5yZWFjaGFibGUgY29kZSkgZm9yIHRoZSBjb2RlIGZv
bGxvd2luZworLy8gU3VwcHJlc3MgTVNWQyB3YXJuaW5nIDQ3MDIgKHVucmVhY2hhYmxlIGNvZGUp
IGZvciB0aGUgY29kZSBmb2xsb3dpbmcKIC8vIHN0YXRlbWVudCBpZiBpdCByZXR1cm5zIG9yIHRo
cm93cyAob3IgZG9lc24ndCByZXR1cm4gb3IgdGhyb3cgaW4gc29tZQogLy8gc2l0dWF0aW9ucyku
CiAjZGVmaW5lIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18o
c3RhdGVtZW50KSBcCkBAIC04MDgsNyArMTIxNiw3IEBAIGNsYXNzIEdURVNUX0FQSV8gUmFuZG9t
IHsKIAogI2RlZmluZSBHVEVTVF9URVNUX1RIUk9XXyhzdGF0ZW1lbnQsIGV4cGVjdGVkX2V4Y2Vw
dGlvbiwgZmFpbCkgXAogICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0gIGlmIChj
b25zdCBjaGFyKiBndGVzdF9tc2cgPSAiIikgeyBcCisgIGlmICg6OnRlc3Rpbmc6OmludGVybmFs
OjpDb25zdENoYXJQdHIgZ3Rlc3RfbXNnID0gIiIpIHsgXAogICAgIGJvb2wgZ3Rlc3RfY2F1Z2h0
X2V4cGVjdGVkID0gZmFsc2U7IFwKICAgICB0cnkgeyBcCiAgICAgICBHVEVTVF9TVVBQUkVTU19V
TlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKQEAgLTgxNywzOCAr
MTIyNSwzOCBAQCBjbGFzcyBHVEVTVF9BUElfIFJhbmRvbSB7CiAgICAgICBndGVzdF9jYXVnaHRf
ZXhwZWN0ZWQgPSB0cnVlOyBcCiAgICAgfSBcCiAgICAgY2F0Y2ggKC4uLikgeyBcCi0gICAgICBn
dGVzdF9tc2cgPSAiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIHRocm93cyBhbiBleGNlcHRpb24g
b2YgdHlwZSAiIFwKLSAgICAgICAgICAgICAgICAgICNleHBlY3RlZF9leGNlcHRpb24gIi5cbiAg
QWN0dWFsOiBpdCB0aHJvd3MgYSBkaWZmZXJlbnQgIiBcCi0gICAgICAgICAgICAgICAgICAidHlw
ZS4iOyBcCisgICAgICBndGVzdF9tc2cudmFsdWUgPSBcCisgICAgICAgICAgIkV4cGVjdGVkOiAi
ICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5cGUgIiBcCisgICAgICAgICAg
I2V4cGVjdGVkX2V4Y2VwdGlvbiAiLlxuICBBY3R1YWw6IGl0IHRocm93cyBhIGRpZmZlcmVudCB0
eXBlLiI7IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0
dGhyb3dfLCBfX0xJTkVfXyk7IFwKICAgICB9IFwKICAgICBpZiAoIWd0ZXN0X2NhdWdodF9leHBl
Y3RlZCkgeyBcCi0gICAgICBndGVzdF9tc2cgPSAiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIHRo
cm93cyBhbiBleGNlcHRpb24gb2YgdHlwZSAiIFwKLSAgICAgICAgICAgICAgICAgICNleHBlY3Rl
ZF9leGNlcHRpb24gIi5cbiAgQWN0dWFsOiBpdCB0aHJvd3Mgbm90aGluZy4iOyBcCisgICAgICBn
dGVzdF9tc2cudmFsdWUgPSBcCisgICAgICAgICAgIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0
aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5cGUgIiBcCisgICAgICAgICAgI2V4cGVjdGVkX2V4Y2Vw
dGlvbiAiLlxuICBBY3R1YWw6IGl0IHRocm93cyBub3RoaW5nLiI7IFwKICAgICAgIGdvdG8gR1RF
U1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0dGhyb3dfLCBfX0xJTkVfXyk7IFwKICAg
ICB9IFwKICAgfSBlbHNlIFwKICAgICBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rl
c3R0aHJvd18sIF9fTElORV9fKTogXAotICAgICAgZmFpbChndGVzdF9tc2cpCisgICAgICBmYWls
KGd0ZXN0X21zZy52YWx1ZSkKIAogI2RlZmluZSBHVEVTVF9URVNUX05PX1RIUk9XXyhzdGF0ZW1l
bnQsIGZhaWwpIFwKICAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAotICBpZiAoY29u
c3QgY2hhciogZ3Rlc3RfbXNnID0gIiIpIHsgXAorICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6
QWx3YXlzVHJ1ZSgpKSB7IFwKICAgICB0cnkgeyBcCiAgICAgICBHVEVTVF9TVVBQUkVTU19VTlJF
QUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKICAgICB9IFwKICAgICBj
YXRjaCAoLi4uKSB7IFwKLSAgICAgIGd0ZXN0X21zZyA9ICJFeHBlY3RlZDogIiAjc3RhdGVtZW50
ICIgZG9lc24ndCB0aHJvdyBhbiBleGNlcHRpb24uXG4iIFwKLSAgICAgICAgICAgICAgICAgICIg
IEFjdHVhbDogaXQgdGhyb3dzLiI7IFwKICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhn
dGVzdF9sYWJlbF90ZXN0bm90aHJvd18sIF9fTElORV9fKTsgXAogICAgIH0gXAogICB9IGVsc2Ug
XAogICAgIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdG5vdGhyb3dfLCBfX0xJ
TkVfXyk6IFwKLSAgICAgIGZhaWwoZ3Rlc3RfbXNnKQorICAgICAgZmFpbCgiRXhwZWN0ZWQ6ICIg
I3N0YXRlbWVudCAiIGRvZXNuJ3QgdGhyb3cgYW4gZXhjZXB0aW9uLlxuIiBcCisgICAgICAgICAg
ICIgIEFjdHVhbDogaXQgdGhyb3dzLiIpCiAKICNkZWZpbmUgR1RFU1RfVEVTVF9BTllfVEhST1df
KHN0YXRlbWVudCwgZmFpbCkgXAogICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0g
IGlmIChjb25zdCBjaGFyKiBndGVzdF9tc2cgPSAiIikgeyBcCisgIGlmICg6OnRlc3Rpbmc6Omlu
dGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAogICAgIGJvb2wgZ3Rlc3RfY2F1Z2h0X2FueSA9IGZh
bHNlOyBcCiAgICAgdHJ5IHsgXAogICAgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09E
RV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCkBAIC04NTcsMTMgKzEyNjUsMTIgQEAgY2xh
c3MgR1RFU1RfQVBJXyBSYW5kb20gewogICAgICAgZ3Rlc3RfY2F1Z2h0X2FueSA9IHRydWU7IFwK
ICAgICB9IFwKICAgICBpZiAoIWd0ZXN0X2NhdWdodF9hbnkpIHsgXAotICAgICAgZ3Rlc3RfbXNn
ID0gIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuIiBcCi0g
ICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IGl0IGRvZXNuJ3QuIjsgXAogICAgICAgZ290byBH
VEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3Rhbnl0aHJvd18sIF9fTElORV9fKTsg
XAogICAgIH0gXAogICB9IGVsc2UgXAogICAgIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFi
ZWxfdGVzdGFueXRocm93XywgX19MSU5FX18pOiBcCi0gICAgICBmYWlsKGd0ZXN0X21zZykKKyAg
ICAgIGZhaWwoIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uLlxu
IiBcCisgICAgICAgICAgICIgIEFjdHVhbDogaXQgZG9lc24ndC4iKQogCiAKIC8vIEltcGxlbWVu
dHMgQm9vbGVhbiB0ZXN0IGFzc2VydGlvbnMgc3VjaCBhcyBFWFBFQ1RfVFJVRS4gZXhwcmVzc2lv
biBjYW4gYmUKQEAgLTg4MCwxOCArMTI4NywxNyBAQCBjbGFzcyBHVEVTVF9BUElfIFJhbmRvbSB7
CiAKICNkZWZpbmUgR1RFU1RfVEVTVF9OT19GQVRBTF9GQUlMVVJFXyhzdGF0ZW1lbnQsIGZhaWwp
IFwKICAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAotICBpZiAoY29uc3QgY2hhciog
Z3Rlc3RfbXNnID0gIiIpIHsgXAorICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1
ZSgpKSB7IFwKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpIYXNOZXdGYXRhbEZhaWx1cmVIZWxw
ZXIgZ3Rlc3RfZmF0YWxfZmFpbHVyZV9jaGVja2VyOyBcCiAgICAgR1RFU1RfU1VQUFJFU1NfVU5S
RUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCiAgICAgaWYgKGd0ZXN0
X2ZhdGFsX2ZhaWx1cmVfY2hlY2tlci5oYXNfbmV3X2ZhdGFsX2ZhaWx1cmUoKSkgeyBcCi0gICAg
ICBndGVzdF9tc2cgPSAiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgZ2VuZXJhdGUg
bmV3IGZhdGFsICIgXAotICAgICAgICAgICAgICAgICAgImZhaWx1cmVzIGluIHRoZSBjdXJyZW50
IHRocmVhZC5cbiIgXAotICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBpdCBkb2VzLiI7IFwK
ICAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0bm9mYXRhbF8s
IF9fTElORV9fKTsgXAogICAgIH0gXAogICB9IGVsc2UgXAogICAgIEdURVNUX0NPTkNBVF9UT0tF
Tl8oZ3Rlc3RfbGFiZWxfdGVzdG5vZmF0YWxfLCBfX0xJTkVfXyk6IFwKLSAgICAgIGZhaWwoZ3Rl
c3RfbXNnKQorICAgICAgZmFpbCgiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIGRvZXNuJ3QgZ2Vu
ZXJhdGUgbmV3IGZhdGFsICIgXAorICAgICAgICAgICAiZmFpbHVyZXMgaW4gdGhlIGN1cnJlbnQg
dGhyZWFkLlxuIiBcCisgICAgICAgICAgICIgIEFjdHVhbDogaXQgZG9lcy4iKQogCiAvLyBFeHBh
bmRzIHRvIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyB0aGF0IGltcGxlbWVudHMgdGhlIGdpdmVuIHRl
c3QuCiAjZGVmaW5lIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3Rf
bmFtZSkgXApAQCAtOTA0LDcgKzEzMTAsNyBAQCBjbGFzcyBHVEVTVF9URVNUX0NMQVNTX05BTUVf
KHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIDogcHVibGljIHBhcmVudF9jbGFzcyB7XAogICBH
VEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpKCkge31cCiAg
cHJpdmF0ZTpcCiAgIHZpcnR1YWwgdm9pZCBUZXN0Qm9keSgpO1wKLSAgc3RhdGljIDo6dGVzdGlu
Zzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mb187XAorICBzdGF0aWMgOjp0ZXN0aW5nOjpUZXN0
SW5mbyogY29uc3QgdGVzdF9pbmZvXyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXztcCiAgIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oXAogICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1F
Xyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSk7XAogfTtcCkBAIC05MTIsNyArMTMxOCw4IEBA
IGNsYXNzIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkg
OiBwdWJsaWMgcGFyZW50X2NsYXNzIHtcCiA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCBHVEVT
VF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpXAogICA6OnRlc3Rf
aW5mb18gPVwKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpNYWtlQW5kUmVnaXN0ZXJUZXN0SW5m
byhcCi0gICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgI3Rlc3RfbmFtZSwgIiIsICIiLCBcCisgICAg
ICAgICN0ZXN0X2Nhc2VfbmFtZSwgI3Rlc3RfbmFtZSwgTlVMTCwgTlVMTCwgXAorICAgICAgICA6
OnRlc3Rpbmc6OmludGVybmFsOjpDb2RlTG9jYXRpb24oX19GSUxFX18sIF9fTElORV9fKSwgXAog
ICAgICAgICAocGFyZW50X2lkKSwgXAogICAgICAgICBwYXJlbnRfY2xhc3M6OlNldFVwVGVzdENh
c2UsIFwKICAgICAgICAgcGFyZW50X2NsYXNzOjpUZWFyRG93blRlc3RDYXNlLCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0
LWxpbmtlZF9wdHIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oCmluZGV4IDU0MGVmNGNkNDRlNzJiNTU4NjU3MDgxYTVm
MDdhMGYyOGIzZTQwZTMuLjA4MmI4NzI4OWFlMTdjOGFhN2I5NmQ4ZThjOTJiOTZlMDE4Yzc2OGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtbGlua2VkX3B0ci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oCkBAIC0yNyw4ICsyNyw2IEBACiAv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAvLwotLy8gQXV0aG9yczogRGFuIEVnbm9y
IChlZ25vckBnb29nbGUuY29tKQotLy8KIC8vIEEgInNtYXJ0IiBwb2ludGVyIHR5cGUgd2l0aCBy
ZWZlcmVuY2UgdHJhY2tpbmcuICBFdmVyeSBwb2ludGVyIHRvIGEKIC8vIHBhcnRpY3VsYXIgb2Jq
ZWN0IGlzIGtlcHQgb24gYSBjaXJjdWxhciBsaW5rZWQgbGlzdC4gIFdoZW4gdGhlIGxhc3QgcG9p
bnRlcgogLy8gdG8gYW4gb2JqZWN0IGlzIGRlc3Ryb3llZCBvciByZWFzc2lnbmVkLCB0aGUgb2Jq
ZWN0IGlzIGRlbGV0ZWQuCkBAIC02MiwxNiArNjAsMTggQEAKIC8vICAgICAgIHJhdyBwb2ludGVy
IChlLmcuIHZpYSBnZXQoKSkgY29uY3VycmVudGx5LCBhbmQKIC8vICAgICAtIGl0J3Mgc2FmZSB0
byB3cml0ZSB0byB0d28gbGlua2VkX3B0cnMgdGhhdCBwb2ludCB0byB0aGUgc2FtZQogLy8gICAg
ICAgc2hhcmVkIG9iamVjdCBjb25jdXJyZW50bHkuCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTog
cmVuYW1lIHRoaXMgdG8gc2FmZV9saW5rZWRfcHRyIHRvIGF2b2lkCisvLyBGSVhNRTogcmVuYW1l
IHRoaXMgdG8gc2FmZV9saW5rZWRfcHRyIHRvIGF2b2lkCiAvLyBjb25mdXNpb24gd2l0aCBub3Jt
YWwgbGlua2VkX3B0ci4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAj
aWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfTElOS0VEX1BUUl9IXwog
I2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0xJTktFRF9QVFJfSF8K
IAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPGFzc2VydC5oPgogCi0jaW5jbHVkZSA8
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaCIKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsK
QEAgLTEwNSwyNSArMTA1LDM1IEBAIGNsYXNzIGxpbmtlZF9wdHJfaW50ZXJuYWwgewogICAvLyBm
cmFtZXdvcmsuCiAKICAgLy8gSm9pbiBhbiBleGlzdGluZyBjaXJjbGUuCi0gIC8vIEwgPCBnX2xp
bmtlZF9wdHJfbXV0ZXgKLSAgdm9pZCBqb2luKGxpbmtlZF9wdHJfaW50ZXJuYWwgY29uc3QqIHB0
cikgeworICB2b2lkIGpvaW4obGlua2VkX3B0cl9pbnRlcm5hbCBjb25zdCogcHRyKQorICAgICAg
R1RFU1RfTE9DS19FWENMVURFRF8oZ19saW5rZWRfcHRyX211dGV4KSB7CiAgICAgTXV0ZXhMb2Nr
IGxvY2soJmdfbGlua2VkX3B0cl9tdXRleCk7CiAKICAgICBsaW5rZWRfcHRyX2ludGVybmFsIGNv
bnN0KiBwID0gcHRyOwotICAgIHdoaWxlIChwLT5uZXh0XyAhPSBwdHIpIHAgPSBwLT5uZXh0XzsK
KyAgICB3aGlsZSAocC0+bmV4dF8gIT0gcHRyKSB7CisgICAgICBhc3NlcnQocC0+bmV4dF8gIT0g
dGhpcyAmJgorICAgICAgICAgICAgICJUcnlpbmcgdG8gam9pbigpIGEgbGlua2VkIHJpbmcgd2Ug
YXJlIGFscmVhZHkgaW4uICIKKyAgICAgICAgICAgICAiSXMgR01vY2sgdGhyZWFkIHNhZmV0eSBl
bmFibGVkPyIpOworICAgICAgcCA9IHAtPm5leHRfOworICAgIH0KICAgICBwLT5uZXh0XyA9IHRo
aXM7CiAgICAgbmV4dF8gPSBwdHI7CiAgIH0KIAogICAvLyBMZWF2ZSB3aGF0ZXZlciBjaXJjbGUg
d2UncmUgcGFydCBvZi4gIFJldHVybnMgdHJ1ZSBpZiB3ZSB3ZXJlIHRoZQogICAvLyBsYXN0IG1l
bWJlciBvZiB0aGUgY2lyY2xlLiAgT25jZSB0aGlzIGlzIGRvbmUsIHlvdSBjYW4gam9pbigpIGFu
b3RoZXIuCi0gIC8vIEwgPCBnX2xpbmtlZF9wdHJfbXV0ZXgKLSAgYm9vbCBkZXBhcnQoKSB7Cisg
IGJvb2wgZGVwYXJ0KCkKKyAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGdfbGlua2VkX3B0cl9t
dXRleCkgewogICAgIE11dGV4TG9jayBsb2NrKCZnX2xpbmtlZF9wdHJfbXV0ZXgpOwogCiAgICAg
aWYgKG5leHRfID09IHRoaXMpIHJldHVybiB0cnVlOwogICAgIGxpbmtlZF9wdHJfaW50ZXJuYWwg
Y29uc3QqIHAgPSBuZXh0XzsKLSAgICB3aGlsZSAocC0+bmV4dF8gIT0gdGhpcykgcCA9IHAtPm5l
eHRfOworICAgIHdoaWxlIChwLT5uZXh0XyAhPSB0aGlzKSB7CisgICAgICBhc3NlcnQocC0+bmV4
dF8gIT0gbmV4dF8gJiYKKyAgICAgICAgICAgICAiVHJ5aW5nIHRvIGRlcGFydCgpIGEgbGlua2Vk
IHJpbmcgd2UgYXJlIG5vdCBpbi4gIgorICAgICAgICAgICAgICJJcyBHTW9jayB0aHJlYWQgc2Fm
ZXR5IGVuYWJsZWQ/Iik7CisgICAgICBwID0gcC0+bmV4dF87CisgICAgfQogICAgIHAtPm5leHRf
ID0gbmV4dF87CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CkBAIC0xNzIsMTUgKzE4Miw2IEBAIGNs
YXNzIGxpbmtlZF9wdHIgewogICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KICAg
VCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQogICBUJiBvcGVyYXRvcioo
KSBjb25zdCB7IHJldHVybiAqdmFsdWVfOyB9Ci0gIC8vIFJlbGVhc2Ugb3duZXJzaGlwIG9mIHRo
ZSBwb2ludGVkIG9iamVjdCBhbmQgcmV0dXJucyBpdC4KLSAgLy8gU29sZSBvd25lcnNoaXAgYnkg
dGhpcyBsaW5rZWRfcHRyIG9iamVjdCBpcyByZXF1aXJlZC4KLSAgVCogcmVsZWFzZSgpIHsKLSAg
ICBib29sIGxhc3QgPSBsaW5rXy5kZXBhcnQoKTsKLSAgICBhc3NlcnQobGFzdCk7Ci0gICAgVCog
diA9IHZhbHVlXzsKLSAgICB2YWx1ZV8gPSBOVUxMOwotICAgIHJldHVybiB2OwotICB9CiAKICAg
Ym9vbCBvcGVyYXRvcj09KFQqIHApIGNvbnN0IHsgcmV0dXJuIHZhbHVlXyA9PSBwOyB9CiAgIGJv
b2wgb3BlcmF0b3IhPShUKiBwKSBjb25zdCB7IHJldHVybiB2YWx1ZV8gIT0gcDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oCmluZGV4IDYyYjVh
ZTEzZTI4ZTU2NmIxZTg4NTEyN2RiYjA3Y2QxNzJhMjZmMTkuLjRmYWM4YzAyNzAzZDU5MWViMmYy
MmVmMTQ4NDFiNDI1NTZjNTA0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBh
cmFtLXV0aWwtZ2VuZXJhdGVkLmgKQEAgLTEsNCArMSw2IEBACi0vLyBUaGlzIGZpbGUgd2FzIEdF
TkVSQVRFRCBieSBhIHNjcmlwdC4gIERPIE5PVCBFRElUIEJZIEhBTkQhISEKKy8vIFRoaXMgZmls
ZSB3YXMgR0VORVJBVEVEIGJ5IGNvbW1hbmQ6CisvLyAgICAgcHVtcC5weSBndGVzdC1wYXJhbS11
dGlsLWdlbmVyYXRlZC5oLnB1bXAKKy8vIERPIE5PVCBFRElUIEJZIEhBTkQhISEKIAogLy8gQ29w
eXJpZ2h0IDIwMDggR29vZ2xlIEluYy4KIC8vIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCkBAIC0yOCw4
ICszMCw3IEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQorCiAKIC8vIFR5
cGUgYW5kIGZ1bmN0aW9uIHV0aWxpdGllcyBmb3IgaW1wbGVtZW50aW5nIHBhcmFtZXRlcml6ZWQg
dGVzdHMuCiAvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBULiAgRE8gTk9UIEVE
SVQgQlkgSEFORCEKQEAgLTQxLDE2ICs0MiwxMyBAQAogLy8gYnkgdGhlIG1heGltdW0gYXJpdHkg
b2YgdGhlIGltcGxlbWVudGF0aW9uIG9mIHR1cGxlIHdoaWNoIGlzCiAvLyBjdXJyZW50bHkgc2V0
IGF0IDEwLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYg
R1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0dFTkVSQVRFRF9I
XwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BBUkFNX1VUSUxf
R0VORVJBVEVEX0hfCiAKLS8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBkZXBlbmRzIG9uIGd0ZXN0
J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKLS8vICp1bmNvbmRpdGlvbmFsbHkqLiAgVGhl
cmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKLS8vIGluc2lkZSAjaWYgR1RF
U1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLQotI2lmIEdU
RVNUX0hBU19QQVJBTV9URVNUCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKIAogbmFtZXNw
YWNlIHRlc3RpbmcgewogCkBAIC01OCw4ICs1Niw4IEBAIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIC8v
IGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLgogdGVtcGxhdGUgPHR5cGVuYW1lIEZv
cndhcmRJdGVyYXRvcj4KIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjwKLSAgICB0eXBlbmFtZSA6
OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+IFZhbHVl
c0luKAotICAgICAgICBGb3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJdGVyYXRvciBlbmQp
OworICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVyYXRvclRyYWl0czxGb3J3YXJk
SXRlcmF0b3I+Ojp2YWx1ZV90eXBlPgorVmFsdWVzSW4oRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLCBG
b3J3YXJkSXRlcmF0b3IgZW5kKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgog
aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFZhbHVlc0luKGNvbnN0IFQgKCZhcnJheSlbTl0p
OwpAQCAtNzcsNyArNzUsMTIgQEAgY2xhc3MgVmFsdWVBcnJheTEgewogICBleHBsaWNpdCBWYWx1
ZUFycmF5MShUMSB2MSkgOiB2MV8odjEpIHt9CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0g
IG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgeyByZXR1cm4gVmFsdWVzSW4oJnYx
XywgJnYxXyArIDEpOyB9CisgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qgewor
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pfTsKKyAgICByZXR1cm4g
VmFsdWVzSW4oYXJyYXkpOworICB9CisKKyAgVmFsdWVBcnJheTEoY29uc3QgVmFsdWVBcnJheTEm
IG90aGVyKSA6IHYxXyhvdGhlci52MV8pIHt9CiAKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1l
bnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCkBAIC05MywxMCArOTYsMTIgQEAg
Y2xhc3MgVmFsdWVBcnJheTIgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFf
LCB2Ml99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0
aWNfY2FzdDxUPih2Ml8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAg
VmFsdWVBcnJheTIoY29uc3QgVmFsdWVBcnJheTImIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2
Ml8ob3RoZXIudjJfKSB7fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBh
c3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFy
cmF5MiYgb3RoZXIpOwpAQCAtMTEyLDEwICsxMTcsMTQgQEAgY2xhc3MgVmFsdWVBcnJheTMgewog
CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigp
IGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzX307CisgICAgY29u
c3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJh
eSk7CiAgIH0KIAorICBWYWx1ZUFycmF5Myhjb25zdCBWYWx1ZUFycmF5MyYgb3RoZXIpIDogdjFf
KG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXykge30KKwog
IHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBv
cnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTMmIG90aGVyKTsKQEAgLTEz
MywxMCArMTQyLDE0IEBAIGNsYXNzIFZhbHVlQXJyYXk0IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3Qg
VCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0X307CisgICAgY29uc3QgVCBhcnJheVtdID0g
e3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJ
bihhcnJheSk7CiAgIH0KIAorICBWYWx1ZUFycmF5NChjb25zdCBWYWx1ZUFycmF5NCYgb3RoZXIp
IDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyks
IHY0XyhvdGhlci52NF8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAt
IGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVl
QXJyYXk0JiBvdGhlcik7CkBAIC0xNTUsMTAgKzE2OCwxNCBAQCBjbGFzcyBWYWx1ZUFycmF5NSB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19j
YXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+
KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7
CiAgIH0KIAorICBWYWx1ZUFycmF5NShjb25zdCBWYWx1ZUFycmF5NSYgb3RoZXIpIDogdjFfKG90
aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhl
ci52NF8pLCB2NV8ob3RoZXIudjVfKSB7fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50
YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25z
dCBWYWx1ZUFycmF5NSYgb3RoZXIpOwpAQCAtMTc5LDEwICsxOTYsMTUgQEAgY2xhc3MgVmFsdWVB
cnJheTYgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywg
djRfLCB2NV8sIHY2X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYx
XyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0
YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY2Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAorICBWYWx1
ZUFycmF5Nihjb25zdCBWYWx1ZUFycmF5NiYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhv
dGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3Ro
ZXIudjVfKSwgdjZfKG90aGVyLnY2Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVu
dGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgVmFsdWVBcnJheTYmIG90aGVyKTsKQEAgLTIwNCwxMCArMjI2LDE2IEBAIGNsYXNzIFZhbHVl
QXJyYXk3IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5l
cmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18s
IHY0XywgdjVfLCB2Nl8sIHY3X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0
PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
XyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3Xyl9OwogICAgIHJldHVybiBWYWx1
ZXNJbihhcnJheSk7CiAgIH0KIAorICBWYWx1ZUFycmF5Nyhjb25zdCBWYWx1ZUFycmF5NyYgb3Ro
ZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYz
XyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAg
ICB2N18ob3RoZXIudjdfKSB7fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24g
LSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1
ZUFycmF5NyYgb3RoZXIpOwpAQCAtMjMxLDEwICsyNTksMTYgQEAgY2xhc3MgVmFsdWVBcnJheTgg
ewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2
NV8sIHY2XywgdjdfLCB2OF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxU
Pih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18p
LCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8p
fTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTgoY29u
c3QgVmFsdWVBcnJheTgmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwK
KyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2
XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pIHt9CisK
ICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBw
b3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk4JiBvdGhlcik7CkBAIC0y
NTksMTAgKzI5MywxNyBAQCBjbGFzcyBWYWx1ZUFycmF5OSB7CiAKICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywgdjlf
fTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4o
djRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwg
c3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjlfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZh
bHVlQXJyYXk5KGNvbnN0IFZhbHVlQXJyYXk5JiBvdGhlcikgOiB2MV8ob3RoZXIudjFfKSwgdjJf
KG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0XyksIHY1Xyhv
dGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2OF8ob3Ro
ZXIudjhfKSwgdjlfKG90aGVyLnY5Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVu
dGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgVmFsdWVBcnJheTkmIG90aGVyKTsKQEAgLTI4OCwxMCArMzI5LDE3IEBAIGNsYXNzIFZhbHVl
QXJyYXkxMCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNf
LCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBffTsKKyAgICBjb25zdCBUIGFycmF5
W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEwXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAorICBW
YWx1ZUFycmF5MTAoY29uc3QgVmFsdWVBcnJheTEwJiBvdGhlcikgOiB2MV8ob3RoZXIudjFfKSwg
djJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0XyksIHY1
XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2OF8o
b3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXykge30KKwogIHByaXZh
dGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4K
ICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTEwJiBvdGhlcik7CkBAIC0zMTksMTAg
KzM2NywxOCBAQCBjbGFzcyBWYWx1ZUFycmF5MTEgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFy
cmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEw
XywgdjExX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJy
YXkxMShjb25zdCBWYWx1ZUFycmF5MTEmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3Ro
ZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVy
LnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52
OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIu
djExXykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVu
dCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTExJiBv
dGhlcik7CkBAIC0zNTEsMTEgKzQwNywxOSBAQCBjbGFzcyBWYWx1ZUFycmF5MTIgewogCiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0
IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywg
djdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyX307CisgICAgY29uc3QgVCBh
cnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0
PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3
XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0
YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjEyXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAorICBW
YWx1ZUFycmF5MTIoY29uc3QgVmFsdWVBcnJheTEyJiBvdGhlcikgOiB2MV8ob3RoZXIudjFfKSwg
djJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0XyksIHY1
XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2OF8o
b3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXyksCisgICAgICB2MTFf
KG90aGVyLnYxMV8pLCB2MTJfKG90aGVyLnYxMl8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBp
bXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0
b3I9KGNvbnN0IFZhbHVlQXJyYXkxMiYgb3RoZXIpOwpAQCAtMzg2LDExICs0NTAsMTkgQEAgY2xh
c3MgVmFsdWVBcnJheTEzIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3Ig
UGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywg
djJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAg
ICAgIHYxMl8sIHYxM199OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2
MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBz
dGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGlj
X2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2Fz
dDxUPih2MTNfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVl
QXJyYXkxMyhjb25zdCBWYWx1ZUFycmF5MTMmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8o
b3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90
aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhl
ci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3Ro
ZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXykge30KKwogIHByaXZh
dGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4K
ICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTEzJiBvdGhlcik7CkBAIC00MjIsMTEg
KzQ5NCwxOSBAQCBjbGFzcyBWYWx1ZUFycmF5MTQgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFy
cmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEw
XywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0X307CisgICAgY29uc3QgVCBhcnJheVtd
ID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0
YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19j
YXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKX07CiAg
ICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkxNChjb25zdCBW
YWx1ZUFycmF5MTQmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAg
ICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2Xyhv
dGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3Ro
ZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8o
b3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0Xykge30KKwogIHBy
aXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRl
ZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTE0JiBvdGhlcik7CkBAIC00NTks
MTEgKzUzOSwyMSBAQCBjbGFzcyBWYWx1ZUFycmF5MTUgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBU
IGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5Xywg
djEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1X307CisgICAgY29uc3Qg
VCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19j
YXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+
KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5Xyks
IHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2
MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJ
bihhcnJheSk7CiAgIH0KIAorICBWYWx1ZUFycmF5MTUoY29uc3QgVmFsdWVBcnJheTE1JiBvdGhl
cikgOiB2MV8ob3RoZXIudjFfKSwgdjJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNf
KSwgdjRfKG90aGVyLnY0XyksIHY1XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAg
IHY3XyhvdGhlci52N18pLCB2OF8ob3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3Ro
ZXIudjEwXyksCisgICAgICB2MTFfKG90aGVyLnYxMV8pLCB2MTJfKG90aGVyLnYxMl8pLCB2MTNf
KG90aGVyLnYxM18pLCB2MTRfKG90aGVyLnYxNF8pLAorICAgICAgdjE1XyhvdGhlci52MTVfKSB7
fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVu
c3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MTUmIG90aGVyKTsK
QEAgLTQ5OSwxMSArNTg5LDIxIEBAIGNsYXNzIFZhbHVlQXJyYXkxNiB7CiAKICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4
XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZf
fTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4o
djRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwg
c3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0
YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE2Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAorICBW
YWx1ZUFycmF5MTYoY29uc3QgVmFsdWVBcnJheTE2JiBvdGhlcikgOiB2MV8ob3RoZXIudjFfKSwg
djJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0XyksIHY1
XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2OF8o
b3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXyksCisgICAgICB2MTFf
KG90aGVyLnYxMV8pLCB2MTJfKG90aGVyLnYxMl8pLCB2MTNfKG90aGVyLnYxM18pLCB2MTRfKG90
aGVyLnYxNF8pLAorICAgICAgdjE1XyhvdGhlci52MTVfKSwgdjE2XyhvdGhlci52MTZfKSB7fQor
CiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3Vw
cG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MTYmIG90aGVyKTsKQEAg
LTU0MCwxMSArNjQwLDIxIEBAIGNsYXNzIFZhbHVlQXJyYXkxNyB7CiAKICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywg
djlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2
MTdffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyks
IHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pfTsKICAgICByZXR1cm4gVmFs
dWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTE3KGNvbnN0IFZhbHVlQXJyYXkxNyYg
b3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVy
LnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisg
ICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBf
KG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwg
djEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1
XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIudjE3Xykge30KKwogIHByaXZhdGU6CiAg
IC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9p
ZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTE3JiBvdGhlcik7CkBAIC01ODIsMTEgKzY5Miwy
MiBAQCBjbGFzcyBWYWx1ZUFycmF5MTggewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4X307Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNf
Y2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0
PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE4Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAorICBWYWx1ZUFycmF5
MTgoY29uc3QgVmFsdWVBcnJheTE4JiBvdGhlcikgOiB2MV8ob3RoZXIudjFfKSwgdjJfKG90aGVy
LnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0XyksIHY1XyhvdGhlci52
NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2OF8ob3RoZXIudjhf
KSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXyksCisgICAgICB2MTFfKG90aGVyLnYx
MV8pLCB2MTJfKG90aGVyLnYxMl8pLCB2MTNfKG90aGVyLnYxM18pLCB2MTRfKG90aGVyLnYxNF8p
LAorICAgICAgdjE1XyhvdGhlci52MTVfKSwgdjE2XyhvdGhlci52MTZfKSwgdjE3XyhvdGhlci52
MTdfKSwgdjE4XyhvdGhlci52MThfKSB7fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50
YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25z
dCBWYWx1ZUFycmF5MTgmIG90aGVyKTsKQEAgLTYyNSwxMSArNzQ2LDIzIEBAIGNsYXNzIFZhbHVl
QXJyYXkxOSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNf
LCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJf
LCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlffTsKKyAgICBjb25zdCBU
IGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nh
c3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4o
djdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwg
c3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYx
NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2Xyks
IHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE5Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAor
ICBWYWx1ZUFycmF5MTkoY29uc3QgVmFsdWVBcnJheTE5JiBvdGhlcikgOiB2MV8ob3RoZXIudjFf
KSwgdjJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0Xyks
IHY1XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2
OF8ob3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXyksCisgICAgICB2
MTFfKG90aGVyLnYxMV8pLCB2MTJfKG90aGVyLnYxMl8pLCB2MTNfKG90aGVyLnYxM18pLCB2MTRf
KG90aGVyLnYxNF8pLAorICAgICAgdjE1XyhvdGhlci52MTVfKSwgdjE2XyhvdGhlci52MTZfKSwg
djE3XyhvdGhlci52MTdfKSwgdjE4XyhvdGhlci52MThfKSwKKyAgICAgIHYxOV8ob3RoZXIudjE5
Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBp
cyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTE5JiBvdGhl
cik7CkBAIC02NzAsMTEgKzgwMywyMyBAQCBjbGFzcyBWYWx1ZUFycmF5MjAgewogCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
LSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywgdjdf
LCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1Xywg
djE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYx
OV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
ICAgfQogCisgIFZhbHVlQXJyYXkyMChjb25zdCBWYWx1ZUFycmF5MjAmIG90aGVyKSA6IHYxXyhv
dGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3Ro
ZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVy
LnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwK
KyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEz
XyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVy
LnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5Xyhv
dGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSB7fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1w
bGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9y
PShjb25zdCBWYWx1ZUFycmF5MjAmIG90aGVyKTsKQEAgLTcxNywxMSArODYyLDI0IEBAIGNsYXNz
IFZhbHVlQXJyYXkyMSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYy
XywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAg
ICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2
MjFffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyks
IHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkyMShjb25zdCBWYWx1ZUFycmF5MjEmIG90aGVyKSA6
IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2
NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdf
KG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52
MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3Ro
ZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZf
KG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAg
djE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSB7fQor
CiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3Vw
cG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MjEmIG90aGVyKTsKQEAg
LTc2NSwxMSArOTIzLDI0IEBAIGNsYXNzIFZhbHVlQXJyYXkyMiB7CiAKICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4Xywg
djlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2
MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJffTsKKyAgICBjb25zdCBUIGFycmF5W10g
PSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nh
c3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19j
YXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8
VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7
CiAgIH0KIAorICBWYWx1ZUFycmF5MjIoY29uc3QgVmFsdWVBcnJheTIyJiBvdGhlcikgOiB2MV8o
b3RoZXIudjFfKSwgdjJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90
aGVyLnY0XyksIHY1XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhl
ci52N18pLCB2OF8ob3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXyks
CisgICAgICB2MTFfKG90aGVyLnYxMV8pLCB2MTJfKG90aGVyLnYxMl8pLCB2MTNfKG90aGVyLnYx
M18pLCB2MTRfKG90aGVyLnYxNF8pLAorICAgICAgdjE1XyhvdGhlci52MTVfKSwgdjE2XyhvdGhl
ci52MTZfKSwgdjE3XyhvdGhlci52MTdfKSwgdjE4XyhvdGhlci52MThfKSwKKyAgICAgIHYxOV8o
b3RoZXIudjE5XyksIHYyMF8ob3RoZXIudjIwXyksIHYyMV8ob3RoZXIudjIxXyksIHYyMl8ob3Ro
ZXIudjIyXykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdu
bWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTIy
JiBvdGhlcik7CkBAIC04MTUsMTIgKzk4NiwyNSBAQCBjbGFzcyBWYWx1ZUFycmF5MjMgewogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2
XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0Xywg
djE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywKLSAgICAgICAg
djIzX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRp
Y19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0
PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2
XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2
MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18p
LCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0
YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBz
dGF0aWNfY2FzdDxUPih2MjNfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQog
CisgIFZhbHVlQXJyYXkyMyhjb25zdCBWYWx1ZUFycmF5MjMmIG90aGVyKSA6IHYxXyhvdGhlci52
MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRf
KSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3Xyks
IHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAg
IHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYx
NF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8p
LCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52
MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJf
KSwKKyAgICAgIHYyM18ob3RoZXIudjIzXykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxl
bWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0o
Y29uc3QgVmFsdWVBcnJheTIzJiBvdGhlcik7CkBAIC04NjcsMTIgKzEwNTEsMjYgQEAgY2xhc3Mg
VmFsdWVBcnJheTI0IHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFy
YW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJf
LCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAg
IHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYy
MV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF99OworICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtz
dGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNf
Y2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
Ml8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8
VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2
MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8p
LCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYyNF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAK
KyAgVmFsdWVBcnJheTI0KGNvbnN0IFZhbHVlQXJyYXkyNCYgb3RoZXIpIDogdjFfKG90aGVyLnYx
XyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8p
LCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwg
djhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAg
djExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0
XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2Xyks
IHYxN18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYx
OV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8p
LAorICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSB7fQorCiAgcHJpdmF0
ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgog
ICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MjQmIG90aGVyKTsKQEAgLTkyMCwxMiAr
MTExOCwyNiBAQCBjbGFzcyBWYWx1ZUFycmF5MjUgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFy
cmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEw
XywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4
XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1X307Cisg
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNf
Y2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0
PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2Fz
dDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+
KHYyNV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJh
eTI1KGNvbnN0IFZhbHVlQXJyYXkyNSYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhl
ci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIu
djVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4
XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52
MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRf
KSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIu
djE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90
aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIz
XyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVfKSB7fQorCiAg
cHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9y
dGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MjUmIG90aGVyKTsKQEAgLTk3
NSwxMiArMTE4NywyNiBAQCBjbGFzcyBWYWx1ZUFycmF5MjYgewogCiAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25z
dCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5
XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3
XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1
XywgdjI2X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYx
M18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyks
IHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2
MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8p
LCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0
YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKX07CiAgICAgcmV0dXJuIFZh
bHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkyNihjb25zdCBWYWx1ZUFycmF5MjYm
IG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhl
ci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAor
ICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEw
XyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyks
IHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYx
NV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8p
LAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52
MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3Ro
ZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2Xykge30KKwogIHByaXZh
dGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4K
ICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTI2JiBvdGhlcik7CkBAIC0xMDMyLDEy
ICsxMjU4LDI4IEBAIGNsYXNzIFZhbHVlQXJyYXkyNyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2
MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2
MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2
MjZfLCB2MjdffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0
PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4o
djEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVf
KSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+
KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIy
XyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjdfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisg
IFZhbHVlQXJyYXkyNyhjb25zdCBWYWx1ZUFycmF5MjcmIG90aGVyKSA6IHYxXyhvdGhlci52MV8p
LCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwg
djVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4
XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYx
MV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8o
b3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2
MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlf
KSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwK
KyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1
XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pIHt9CisKICBwcml2
YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQu
CiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkyNyYgb3RoZXIpOwpAQCAtMTA5MCwx
MiArMTMzMiwyOCBAQCBjbGFzcyBWYWx1ZUFycmF5MjggewogCiAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBU
IGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5Xywg
djEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3Xywg
djE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1Xywg
djI2XywgdjI3XywgdjI4X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+
KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyks
IHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0
aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19j
YXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0
PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pfTsKICAgICByZXR1
cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTI4KGNvbnN0IFZhbHVlQXJy
YXkyOCYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNf
KG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2
XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8p
LCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52
MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3Ro
ZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIu
djE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90
aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0
XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAg
IHYyN18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIudjI4Xykge30KKwogIHByaXZhdGU6CiAgIC8v
IE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBv
cGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTI4JiBvdGhlcik7CkBAIC0xMTQ5LDEyICsxNDA3LDI4
IEBAIGNsYXNzIFZhbHVlQXJyYXkyOSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9w
ZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9
IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFf
LAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlf
LCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2Mjdf
LCB2MjhfLCB2MjlffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8
VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0
PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+
KHYyOV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJh
eTI5KGNvbnN0IFZhbHVlQXJyYXkyOSYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhl
ci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIu
djVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4
XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52
MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRf
KSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIu
djE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90
aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIz
XyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVfKSwgdjI2Xyhv
dGhlci52MjZfKSwKKyAgICAgIHYyN18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIudjI4XyksIHYy
OV8ob3RoZXIudjI5Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0g
YXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVB
cnJheTI5JiBvdGhlcik7CkBAIC0xMjEwLDEyICsxNDg0LDI5IEBAIGNsYXNzIFZhbHVlQXJyYXkz
MCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9y
PFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8s
IHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNf
LCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2
MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBffTsK
KyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRp
Y19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nh
c3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19j
YXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8
VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAg
fQogCisgIFZhbHVlQXJyYXkzMChjb25zdCBWYWx1ZUFycmF5MzAmIG90aGVyKSA6IHYxXyhvdGhl
ci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIu
djRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3
XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAg
ICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyks
IHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYx
Nl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhl
ci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52
MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3Ro
ZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pLCB2Mjhf
KG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pIHt9CisKICBw
cml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0
ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkzMCYgb3RoZXIpOwpAQCAtMTI3
MywxMiArMTU2NCwzMCBAQCBjbGFzcyBWYWx1ZUFycmF5MzEgewogCiAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25z
dCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5
XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3
XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1
XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxX307CisgICAgY29uc3QgVCBhcnJh
eVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+
KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3Xyks
IHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRp
Y19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0
aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19j
YXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0
PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkp
OwogICB9CiAKKyAgVmFsdWVBcnJheTMxKGNvbnN0IFZhbHVlQXJyYXkzMSYgb3RoZXIpIDogdjFf
KG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0Xyhv
dGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3Ro
ZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8p
LAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52
MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3Ro
ZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlf
KG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90
aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1
XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAgIHYyN18ob3RoZXIudjI3Xyks
IHYyOF8ob3RoZXIudjI4XyksIHYyOV8ob3RoZXIudjI5XyksIHYzMF8ob3RoZXIudjMwXyksCisg
ICAgICB2MzFfKG90aGVyLnYzMV8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRh
dGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0
IFZhbHVlQXJyYXkzMSYgb3RoZXIpOwpAQCAtMTMzNywxMiArMTY0NiwzMCBAQCBjbGFzcyBWYWx1
ZUFycmF5MzIgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdl
bmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYz
XywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEy
XywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywg
djIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5Xywg
djMwXywgdjMxXywgdjMyX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+
KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyks
IHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4Xyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0
aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19j
YXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0
PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2Fz
dDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+
KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5
KTsKICAgfQogCisgIFZhbHVlQXJyYXkzMihjb25zdCBWYWx1ZUFycmF5MzImIG90aGVyKSA6IHYx
XyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8o
b3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90
aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBf
KSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIu
djEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90
aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5
XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhv
dGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYy
NV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18p
LCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pLAor
ICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52MzJfKSB7fQorCiAgcHJpdmF0ZToK
ICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2
b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MzImIG90aGVyKTsKQEAgLTE0MDMsMTIgKzE3
MzAsMzEgQEAgY2xhc3MgVmFsdWVBcnJheTMzIHsKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
ICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJh
eVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVfLCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8s
IHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYxNF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8s
IHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18sCi0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8s
IHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8sIHYzMl8sIHYzM199OworICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2Fz
dDxUPih2NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2
N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBz
dGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwg
c3RhdGljX2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0
aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyks
CisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNf
Y2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkp
OwogICB9CiAKKyAgVmFsdWVBcnJheTMzKGNvbnN0IFZhbHVlQXJyYXkzMyYgb3RoZXIpIDogdjFf
KG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0Xyhv
dGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3Ro
ZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8p
LAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52
MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3Ro
ZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlf
KG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90
aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1
XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAgIHYyN18ob3RoZXIudjI3Xyks
IHYyOF8ob3RoZXIudjI4XyksIHYyOV8ob3RoZXIudjI5XyksIHYzMF8ob3RoZXIudjMwXyksCisg
ICAgICB2MzFfKG90aGVyLnYzMV8pLCB2MzJfKG90aGVyLnYzMl8pLCB2MzNfKG90aGVyLnYzM18p
IHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMg
dW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkzMyYgb3RoZXIp
OwpAQCAtMTQ3MCwxMiArMTgxNiwzMSBAQCBjbGFzcyBWYWx1ZUFycmF5MzQgewogCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
LSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywgdjdf
LCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1Xywg
djE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAg
djI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMz
XywgdjM0X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYx
M18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyks
IHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2
MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8p
LCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0
YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2Mjlf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBz
dGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRp
Y19jYXN0PFQ+KHYzNF8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAg
VmFsdWVBcnJheTM0KGNvbnN0IFZhbHVlQXJyYXkzNCYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyks
IHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2
NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhf
KG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjEx
XyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0Xyhv
dGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYx
N18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8p
LCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAor
ICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVf
KSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAgIHYyN18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIu
djI4XyksIHYyOV8ob3RoZXIudjI5XyksIHYzMF8ob3RoZXIudjMwXyksCisgICAgICB2MzFfKG90
aGVyLnYzMV8pLCB2MzJfKG90aGVyLnYzMl8pLCB2MzNfKG90aGVyLnYzM18pLCB2MzRfKG90aGVy
LnYzNF8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1l
bnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkzNCYg
b3RoZXIpOwpAQCAtMTUzOCwxMyArMTkwMywzMiBAQCBjbGFzcyBWYWx1ZUFycmF5MzUgewogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2
XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0Xywg
djE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAg
ICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMy
XywgdjMzXywgdjM0XywKLSAgICAgICAgdjM1X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYx
OV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyks
IHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2
MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8p
LCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0
YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVf
KX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkzNShj
b25zdCBWYWx1ZUFycmF5MzUmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJf
KSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1Xyks
IHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2
OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyks
IHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisg
ICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18p
LCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52
MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3Ro
ZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIu
djI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90
aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMy
XyhvdGhlci52MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAg
IHYzNV8ob3RoZXIudjM1Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9u
IC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFs
dWVBcnJheTM1JiBvdGhlcik7CkBAIC0xNjA5LDEzICsxOTkzLDMzIEBAIGNsYXNzIFZhbHVlQXJy
YXkzNiB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJh
dG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2
NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2
MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJf
LCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBf
LCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZffTsKKyAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+
KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2
XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwg
c3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYy
M18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0
YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkzNihjb25zdCBWYWx1
ZUFycmF5MzYmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAg
IHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhl
ci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIu
djlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3Ro
ZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVf
KG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90
aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIx
XyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyks
IHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisg
ICAgICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8p
LCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52
MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAgIHYzNV8ob3Ro
ZXIudjM1XyksIHYzNl8ob3RoZXIudjM2Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxl
bWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0o
Y29uc3QgVmFsdWVBcnJheTM2JiBvdGhlcik7CkBAIC0xNjgyLDEzICsyMDg2LDMzIEBAIGNsYXNz
IFZhbHVlQXJyYXkzNyB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYy
XywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAg
ICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2
MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2
MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2
MzdffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyks
IHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0
YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRp
Y19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nh
c3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJh
eSk7CiAgIH0KIAorICBWYWx1ZUFycmF5MzcoY29uc3QgVmFsdWVBcnJheTM3JiBvdGhlcikgOiB2
MV8ob3RoZXIudjFfKSwgdjJfKG90aGVyLnYyXyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRf
KG90aGVyLnY0XyksIHY1XyhvdGhlci52NV8pLCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3Xyhv
dGhlci52N18pLCB2OF8ob3RoZXIudjhfKSwgdjlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEw
XyksCisgICAgICB2MTFfKG90aGVyLnYxMV8pLCB2MTJfKG90aGVyLnYxMl8pLCB2MTNfKG90aGVy
LnYxM18pLCB2MTRfKG90aGVyLnYxNF8pLAorICAgICAgdjE1XyhvdGhlci52MTVfKSwgdjE2Xyhv
dGhlci52MTZfKSwgdjE3XyhvdGhlci52MTdfKSwgdjE4XyhvdGhlci52MThfKSwKKyAgICAgIHYx
OV8ob3RoZXIudjE5XyksIHYyMF8ob3RoZXIudjIwXyksIHYyMV8ob3RoZXIudjIxXyksIHYyMl8o
b3RoZXIudjIyXyksCisgICAgICB2MjNfKG90aGVyLnYyM18pLCB2MjRfKG90aGVyLnYyNF8pLCB2
MjVfKG90aGVyLnYyNV8pLCB2MjZfKG90aGVyLnYyNl8pLAorICAgICAgdjI3XyhvdGhlci52Mjdf
KSwgdjI4XyhvdGhlci52MjhfKSwgdjI5XyhvdGhlci52MjlfKSwgdjMwXyhvdGhlci52MzBfKSwK
KyAgICAgIHYzMV8ob3RoZXIudjMxXyksIHYzMl8ob3RoZXIudjMyXyksIHYzM18ob3RoZXIudjMz
XyksIHYzNF8ob3RoZXIudjM0XyksCisgICAgICB2MzVfKG90aGVyLnYzNV8pLCB2MzZfKG90aGVy
LnYzNl8pLCB2MzdfKG90aGVyLnYzN18pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1l
bnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNv
bnN0IFZhbHVlQXJyYXkzNyYgb3RoZXIpOwpAQCAtMTc1NiwxMyArMjE4MCwzMyBAQCBjbGFzcyBW
YWx1ZUFycmF5MzggewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8s
IHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAg
djEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIx
XywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5
XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3
XywgdjM4X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYx
M18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyks
IHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2
MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8p
LCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0
YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2Mjlf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBz
dGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRp
Y19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKX07
CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkzOChjb25z
dCBWYWx1ZUFycmF5MzgmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwK
KyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2
XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8o
b3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYx
Ml8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAg
ICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2
MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBf
KSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIu
djIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2
XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90aGVy
LnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMyXyhv
dGhlci52MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAgIHYz
NV8ob3RoZXIudjM1XyksIHYzNl8ob3RoZXIudjM2XyksIHYzN18ob3RoZXIudjM3XyksIHYzOF8o
b3RoZXIudjM4Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNz
aWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJh
eTM4JiBvdGhlcik7CkBAIC0xODMxLDEzICsyMjc1LDM1IEBAIGNsYXNzIFZhbHVlQXJyYXkzOSB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2
MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNf
LAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFf
LCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2Mzlf
fTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4o
djRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwg
c3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0
YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRp
Y19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nh
c3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19j
YXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8
VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzlfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAg
fQogCisgIFZhbHVlQXJyYXkzOShjb25zdCBWYWx1ZUFycmF5MzkmIG90aGVyKSA6IHYxXyhvdGhl
ci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIu
djRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3
XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAg
ICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyks
IHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYx
Nl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhl
ci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52
MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3Ro
ZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pLCB2Mjhf
KG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAg
djMxXyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0
XyhvdGhlci52MzRfKSwKKyAgICAgIHYzNV8ob3RoZXIudjM1XyksIHYzNl8ob3RoZXIudjM2Xyks
IHYzN18ob3RoZXIudjM3XyksIHYzOF8ob3RoZXIudjM4XyksCisgICAgICB2MzlfKG90aGVyLnYz
OV8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQg
aXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkzOSYgb3Ro
ZXIpOwpAQCAtMTkwOCwxMyArMjM3NCwzNSBAQCBjbGFzcyBWYWx1ZUFycmF5NDAgewogCiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0
IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywg
djdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1
XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAg
ICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywg
djMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwX307
CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0
PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0
XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0
YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0
aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19j
YXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0
PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2Fz
dDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+
KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2
XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pfTsKICAgICByZXR1cm4g
VmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTQwKGNvbnN0IFZhbHVlQXJyYXk0
MCYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90
aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2Xyks
CisgICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2
MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJf
KSwgdjEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIu
djE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4
XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVy
LnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0Xyhv
dGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAgIHYy
N18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIudjI4XyksIHYyOV8ob3RoZXIudjI5XyksIHYzMF8o
b3RoZXIudjMwXyksCisgICAgICB2MzFfKG90aGVyLnYzMV8pLCB2MzJfKG90aGVyLnYzMl8pLCB2
MzNfKG90aGVyLnYzM18pLCB2MzRfKG90aGVyLnYzNF8pLAorICAgICAgdjM1XyhvdGhlci52MzVf
KSwgdjM2XyhvdGhlci52MzZfKSwgdjM3XyhvdGhlci52MzdfKSwgdjM4XyhvdGhlci52MzhfKSwK
KyAgICAgIHYzOV8ob3RoZXIudjM5XyksIHY0MF8ob3RoZXIudjQwXykge30KKwogIHByaXZhdGU6
CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTQwJiBvdGhlcik7CkBAIC0xOTg3LDEzICsy
NDc1LDM1IEBAIGNsYXNzIFZhbHVlQXJyYXk0MSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJy
YXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBf
LCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThf
LCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZf
LCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAot
ICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2MzlfLCB2NDBfLCB2NDFffTsKKyAgICBjb25zdCBU
IGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nh
c3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4o
djdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwg
c3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYx
NF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2Xyks
IHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0
YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRp
Y19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nh
c3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pfTsKICAg
ICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTQxKGNvbnN0IFZh
bHVlQXJyYXk0MSYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAg
ICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90
aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhl
ci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhv
dGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYx
NV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYxOF8o
b3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2
MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52MjNf
KSwgdjI0XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZfKSwK
KyAgICAgIHYyN18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIudjI4XyksIHYyOV8ob3RoZXIudjI5
XyksIHYzMF8ob3RoZXIudjMwXyksCisgICAgICB2MzFfKG90aGVyLnYzMV8pLCB2MzJfKG90aGVy
LnYzMl8pLCB2MzNfKG90aGVyLnYzM18pLCB2MzRfKG90aGVyLnYzNF8pLAorICAgICAgdjM1Xyhv
dGhlci52MzVfKSwgdjM2XyhvdGhlci52MzZfKSwgdjM3XyhvdGhlci52MzdfKSwgdjM4XyhvdGhl
ci52MzhfKSwKKyAgICAgIHYzOV8ob3RoZXIudjM5XyksIHY0MF8ob3RoZXIudjQwXyksIHY0MV8o
b3RoZXIudjQxXykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNz
aWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJh
eTQxJiBvdGhlcik7CkBAIC0yMDY3LDEzICsyNTc3LDM2IEBAIGNsYXNzIFZhbHVlQXJyYXk0MiB7
CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2NF8sIHY1
XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2MTNfLCB2
MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJfLCB2MjNf
LAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBfLCB2MzFf
LCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2MzhfLCB2Mzlf
LCB2NDBfLCB2NDFfLCB2NDJffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8
VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNf
KSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0
YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRp
Y19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19j
YXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8
VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0
PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4o
djQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJf
KX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXk0Mihj
b25zdCBWYWx1ZUFycmF5NDImIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJf
KSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1Xyks
IHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2
OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyks
IHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisg
ICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18p
LCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52
MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3Ro
ZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIu
djI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90
aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMy
XyhvdGhlci52MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAg
IHYzNV8ob3RoZXIudjM1XyksIHYzNl8ob3RoZXIudjM2XyksIHYzN18ob3RoZXIudjM3XyksIHYz
OF8ob3RoZXIudjM4XyksCisgICAgICB2MzlfKG90aGVyLnYzOV8pLCB2NDBfKG90aGVyLnY0MF8p
LCB2NDFfKG90aGVyLnY0MV8pLCB2NDJfKG90aGVyLnY0Ml8pIHt9CisKICBwcml2YXRlOgogICAv
LyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQg
b3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk0MiYgb3RoZXIpOwpAQCAtMjE0OCwxMyArMjY4MSwz
NyBAQCBjbGFzcyBWYWx1ZUFycmF5NDMgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjEx
XywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5
XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3
XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAg
ICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzX307CisgICAg
Y29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYy
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0
YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19j
YXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2Fz
dDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+
KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4
XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYy
NV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2
MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8p
LCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0
YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pfTsK
ICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTQzKGNvbnN0
IFZhbHVlQXJyYXk0MyYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAor
ICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZf
KG90aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5Xyhv
dGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEy
XyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAg
IHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYx
OF8ob3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8p
LCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52
MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZf
KSwKKyAgICAgIHYyN18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIudjI4XyksIHYyOV8ob3RoZXIu
djI5XyksIHYzMF8ob3RoZXIudjMwXyksCisgICAgICB2MzFfKG90aGVyLnYzMV8pLCB2MzJfKG90
aGVyLnYzMl8pLCB2MzNfKG90aGVyLnYzM18pLCB2MzRfKG90aGVyLnYzNF8pLAorICAgICAgdjM1
XyhvdGhlci52MzVfKSwgdjM2XyhvdGhlci52MzZfKSwgdjM3XyhvdGhlci52MzdfKSwgdjM4Xyhv
dGhlci52MzhfKSwKKyAgICAgIHYzOV8ob3RoZXIudjM5XyksIHY0MF8ob3RoZXIudjQwXyksIHY0
MV8ob3RoZXIudjQxXyksIHY0Ml8ob3RoZXIudjQyXyksCisgICAgICB2NDNfKG90aGVyLnY0M18p
IHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMg
dW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk0MyYgb3RoZXIp
OwpAQCAtMjIzMSwxMyArMjc4OCwzNyBAQCBjbGFzcyBWYWx1ZUFycmF5NDQgewogCiAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
LSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2Xywgdjdf
LCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0XywgdjE1Xywg
djE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAgICAgICAg
djI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMyXywgdjMz
XywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQwXywgdjQx
XywgdjQyXywgdjQzXywgdjQ0X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0
PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
XyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBz
dGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRp
Y19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0
aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19j
YXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNf
Y2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0
PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2Fz
dDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+
KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQy
XyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKX07CiAgICAgcmV0
dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXk0NChjb25zdCBWYWx1ZUFy
cmF5NDQmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYz
XyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52
Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlf
KSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIu
djEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90
aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVy
LnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhv
dGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYy
NF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAg
ICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8pLCB2
MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52MzJf
KSwgdjMzXyhvdGhlci52MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAgIHYzNV8ob3RoZXIu
djM1XyksIHYzNl8ob3RoZXIudjM2XyksIHYzN18ob3RoZXIudjM3XyksIHYzOF8ob3RoZXIudjM4
XyksCisgICAgICB2MzlfKG90aGVyLnYzOV8pLCB2NDBfKG90aGVyLnY0MF8pLCB2NDFfKG90aGVy
LnY0MV8pLCB2NDJfKG90aGVyLnY0Ml8pLAorICAgICAgdjQzXyhvdGhlci52NDNfKSwgdjQ0Xyhv
dGhlci52NDRfKSB7fQorCiAgcHJpdmF0ZToKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3Np
Z25tZW50IGlzIHVuc3VwcG9ydGVkLgogICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5
NDQmIG90aGVyKTsKQEAgLTIzMTUsMTMgKzI4OTYsMzggQEAgY2xhc3MgVmFsdWVBcnJheTQ1IHsK
IAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4o
KSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3YxXywgdjJfLCB2M18sIHY0XywgdjVf
LCB2Nl8sIHY3XywgdjhfLCB2OV8sIHYxMF8sIHYxMV8sCi0gICAgICAgIHYxMl8sIHYxM18sIHYx
NF8sIHYxNV8sIHYxNl8sIHYxN18sIHYxOF8sIHYxOV8sIHYyMF8sIHYyMV8sIHYyMl8sIHYyM18s
Ci0gICAgICAgIHYyNF8sIHYyNV8sIHYyNl8sIHYyN18sIHYyOF8sIHYyOV8sIHYzMF8sIHYzMV8s
IHYzMl8sIHYzM18sIHYzNF8sIHYzNV8sCi0gICAgICAgIHYzNl8sIHYzN18sIHYzOF8sIHYzOV8s
IHY0MF8sIHY0MV8sIHY0Ml8sIHY0M18sIHY0NF8sIHY0NV99OworICAgIGNvbnN0IFQgYXJyYXlb
XSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2
NV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBz
dGF0aWNfY2FzdDxUPih2OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNf
Y2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCisgICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE3XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2Fz
dDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCisgICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nh
c3Q8VD4odjI2XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxU
Pih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
MF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCisgICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8
VD4odjM1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2
MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8p
LCBzdGF0aWNfY2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY0Ml8pLCBzdGF0aWNfY2FzdDxUPih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4o
djQ0XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0NV8pfTsKICAgICByZXR1cm4gVmFsdWVz
SW4oYXJyYXkpOwogICB9CiAKKyAgVmFsdWVBcnJheTQ1KGNvbnN0IFZhbHVlQXJyYXk0NSYgb3Ro
ZXIpIDogdjFfKG90aGVyLnYxXyksIHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYz
XyksIHY0XyhvdGhlci52NF8pLCB2NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAg
ICB2N18ob3RoZXIudjdfKSwgdjhfKG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90
aGVyLnYxMF8pLAorICAgICAgdjExXyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEz
XyhvdGhlci52MTNfKSwgdjE0XyhvdGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1Xyks
IHYxNl8ob3RoZXIudjE2XyksIHYxN18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4XyksCisg
ICAgICB2MTlfKG90aGVyLnYxOV8pLCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8p
LCB2MjJfKG90aGVyLnYyMl8pLAorICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52
MjRfKSwgdjI1XyhvdGhlci52MjVfKSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAgIHYyN18ob3Ro
ZXIudjI3XyksIHYyOF8ob3RoZXIudjI4XyksIHYyOV8ob3RoZXIudjI5XyksIHYzMF8ob3RoZXIu
djMwXyksCisgICAgICB2MzFfKG90aGVyLnYzMV8pLCB2MzJfKG90aGVyLnYzMl8pLCB2MzNfKG90
aGVyLnYzM18pLCB2MzRfKG90aGVyLnYzNF8pLAorICAgICAgdjM1XyhvdGhlci52MzVfKSwgdjM2
XyhvdGhlci52MzZfKSwgdjM3XyhvdGhlci52MzdfKSwgdjM4XyhvdGhlci52MzhfKSwKKyAgICAg
IHYzOV8ob3RoZXIudjM5XyksIHY0MF8ob3RoZXIudjQwXyksIHY0MV8ob3RoZXIudjQxXyksIHY0
Ml8ob3RoZXIudjQyXyksCisgICAgICB2NDNfKG90aGVyLnY0M18pLCB2NDRfKG90aGVyLnY0NF8p
LCB2NDVfKG90aGVyLnY0NV8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlv
biAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZh
bHVlQXJyYXk0NSYgb3RoZXIpOwpAQCAtMjQwMSwxMyArMzAwNywzOCBAQCBjbGFzcyBWYWx1ZUFy
cmF5NDYgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywg
djRfLCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywg
djEzXywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIy
XywgdjIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMw
XywgdjMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4
XywgdjM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0XywgdjQ1XywgdjQ2X307CisgICAg
Y29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYy
XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0
YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19j
YXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2Fz
dDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+
KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4
XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYy
NV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2
MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8p
LCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0
YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBz
dGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0YXRp
Y19jYXN0PFQ+KHY0Nl8pfTsKICAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwogICB9CiAKKyAg
VmFsdWVBcnJheTQ2KGNvbnN0IFZhbHVlQXJyYXk0NiYgb3RoZXIpIDogdjFfKG90aGVyLnYxXyks
IHYyXyhvdGhlci52Ml8pLAorICAgICAgdjNfKG90aGVyLnYzXyksIHY0XyhvdGhlci52NF8pLCB2
NV8ob3RoZXIudjVfKSwgdjZfKG90aGVyLnY2XyksCisgICAgICB2N18ob3RoZXIudjdfKSwgdjhf
KG90aGVyLnY4XyksIHY5XyhvdGhlci52OV8pLCB2MTBfKG90aGVyLnYxMF8pLAorICAgICAgdjEx
XyhvdGhlci52MTFfKSwgdjEyXyhvdGhlci52MTJfKSwgdjEzXyhvdGhlci52MTNfKSwgdjE0Xyhv
dGhlci52MTRfKSwKKyAgICAgIHYxNV8ob3RoZXIudjE1XyksIHYxNl8ob3RoZXIudjE2XyksIHYx
N18ob3RoZXIudjE3XyksIHYxOF8ob3RoZXIudjE4XyksCisgICAgICB2MTlfKG90aGVyLnYxOV8p
LCB2MjBfKG90aGVyLnYyMF8pLCB2MjFfKG90aGVyLnYyMV8pLCB2MjJfKG90aGVyLnYyMl8pLAor
ICAgICAgdjIzXyhvdGhlci52MjNfKSwgdjI0XyhvdGhlci52MjRfKSwgdjI1XyhvdGhlci52MjVf
KSwgdjI2XyhvdGhlci52MjZfKSwKKyAgICAgIHYyN18ob3RoZXIudjI3XyksIHYyOF8ob3RoZXIu
djI4XyksIHYyOV8ob3RoZXIudjI5XyksIHYzMF8ob3RoZXIudjMwXyksCisgICAgICB2MzFfKG90
aGVyLnYzMV8pLCB2MzJfKG90aGVyLnYzMl8pLCB2MzNfKG90aGVyLnYzM18pLCB2MzRfKG90aGVy
LnYzNF8pLAorICAgICAgdjM1XyhvdGhlci52MzVfKSwgdjM2XyhvdGhlci52MzZfKSwgdjM3Xyhv
dGhlci52MzdfKSwgdjM4XyhvdGhlci52MzhfKSwKKyAgICAgIHYzOV8ob3RoZXIudjM5XyksIHY0
MF8ob3RoZXIudjQwXyksIHY0MV8ob3RoZXIudjQxXyksIHY0Ml8ob3RoZXIudjQyXyksCisgICAg
ICB2NDNfKG90aGVyLnY0M18pLCB2NDRfKG90aGVyLnY0NF8pLCB2NDVfKG90aGVyLnY0NV8pLCB2
NDZfKG90aGVyLnY0Nl8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAt
IGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVl
QXJyYXk0NiYgb3RoZXIpOwpAQCAtMjQ4OSwxNCArMzEyMCwzOSBAQCBjbGFzcyBWYWx1ZUFycmF5
NDcgewogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRf
LCB2NV8sIHY2XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEz
XywgdjE0XywgdjE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywg
djIzXywKLSAgICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywg
djMxXywgdjMyXywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4Xywg
djM5XywgdjQwXywgdjQxXywgdjQyXywgdjQzXywgdjQ0XywgdjQ1XywgdjQ2XywKLSAgICAgICAg
djQ3X307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRp
Y19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0
PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2
XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisgICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2
MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18p
LCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0
YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBz
dGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRp
Y19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0
aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19j
YXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNf
Y2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0
PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBzdGF0aWNfY2FzdDxUPih2NDdfKX07CiAgICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXk0Nyhjb25zdCBWYWx1
ZUFycmF5NDcmIG90aGVyKSA6IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAg
IHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhl
ci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIu
djlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3Ro
ZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVf
KG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90
aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIx
XyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyks
IHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisg
ICAgICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8p
LCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52
MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAgIHYzNV8ob3Ro
ZXIudjM1XyksIHYzNl8ob3RoZXIudjM2XyksIHYzN18ob3RoZXIudjM3XyksIHYzOF8ob3RoZXIu
djM4XyksCisgICAgICB2MzlfKG90aGVyLnYzOV8pLCB2NDBfKG90aGVyLnY0MF8pLCB2NDFfKG90
aGVyLnY0MV8pLCB2NDJfKG90aGVyLnY0Ml8pLAorICAgICAgdjQzXyhvdGhlci52NDNfKSwgdjQ0
XyhvdGhlci52NDRfKSwgdjQ1XyhvdGhlci52NDVfKSwgdjQ2XyhvdGhlci52NDZfKSwKKyAgICAg
IHY0N18ob3RoZXIudjQ3Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9u
IC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFs
dWVBcnJheTQ3JiBvdGhlcik7CkBAIC0yNTc5LDE0ICszMjM1LDQwIEBAIGNsYXNzIFZhbHVlQXJy
YXk0OCB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJh
dG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2
NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2
MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJf
LCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBf
LCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2Mzhf
LCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJfLCB2NDNfLCB2NDRfLCB2NDVfLCB2NDZfLCB2NDdfLAot
ICAgICAgICB2NDhffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8
VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0
PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+
KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMx
XyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwg
c3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYz
OF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyks
IHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3Rh
dGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8pLAorICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2NDVfKSwgc3RhdGljX2Nhc3Q8VD4odjQ2XyksIHN0YXRpY19jYXN0PFQ+KHY0N18p
LAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDhfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXk0OChjb25zdCBWYWx1ZUFycmF5NDgmIG90aGVyKSA6
IHYxXyhvdGhlci52MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2
NF8ob3RoZXIudjRfKSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdf
KG90aGVyLnY3XyksIHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52
MTBfKSwKKyAgICAgIHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3Ro
ZXIudjEzXyksIHYxNF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZf
KG90aGVyLnYxNl8pLCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAg
djE5XyhvdGhlci52MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIy
XyhvdGhlci52MjJfKSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3RoZXIudjI0Xyks
IHYyNV8ob3RoZXIudjI1XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAgICB2MjdfKG90aGVyLnYy
N18pLCB2MjhfKG90aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8p
LAorICAgICAgdjMxXyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52MzJfKSwgdjMzXyhvdGhlci52
MzNfKSwgdjM0XyhvdGhlci52MzRfKSwKKyAgICAgIHYzNV8ob3RoZXIudjM1XyksIHYzNl8ob3Ro
ZXIudjM2XyksIHYzN18ob3RoZXIudjM3XyksIHYzOF8ob3RoZXIudjM4XyksCisgICAgICB2Mzlf
KG90aGVyLnYzOV8pLCB2NDBfKG90aGVyLnY0MF8pLCB2NDFfKG90aGVyLnY0MV8pLCB2NDJfKG90
aGVyLnY0Ml8pLAorICAgICAgdjQzXyhvdGhlci52NDNfKSwgdjQ0XyhvdGhlci52NDRfKSwgdjQ1
XyhvdGhlci52NDVfKSwgdjQ2XyhvdGhlci52NDZfKSwKKyAgICAgIHY0N18ob3RoZXIudjQ3Xyks
IHY0OF8ob3RoZXIudjQ4Xykge30KKwogIHByaXZhdGU6CiAgIC8vIE5vIGltcGxlbWVudGF0aW9u
IC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFs
dWVBcnJheTQ4JiBvdGhlcik7CkBAIC0yNjcwLDE0ICszMzUyLDQwIEBAIGNsYXNzIFZhbHVlQXJy
YXk0OSB7CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIG9wZXJhdG9yIFBhcmFtR2VuZXJh
dG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHt2MV8sIHYyXywgdjNfLCB2
NF8sIHY1XywgdjZfLCB2N18sIHY4XywgdjlfLCB2MTBfLCB2MTFfLAotICAgICAgICB2MTJfLCB2
MTNfLCB2MTRfLCB2MTVfLCB2MTZfLCB2MTdfLCB2MThfLCB2MTlfLCB2MjBfLCB2MjFfLCB2MjJf
LCB2MjNfLAotICAgICAgICB2MjRfLCB2MjVfLCB2MjZfLCB2MjdfLCB2MjhfLCB2MjlfLCB2MzBf
LCB2MzFfLCB2MzJfLCB2MzNfLCB2MzRfLCB2MzVfLAotICAgICAgICB2MzZfLCB2MzdfLCB2Mzhf
LCB2MzlfLCB2NDBfLCB2NDFfLCB2NDJfLCB2NDNfLCB2NDRfLCB2NDVfLCB2NDZfLCB2NDdfLAot
ICAgICAgICB2NDhfLCB2NDlffTsKKyAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8
VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNf
KSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0
YXRpY19jYXN0PFQ+KHYxMV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAorICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRp
Y19jYXN0PFQ+KHYyMF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAorICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAorICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19j
YXN0PFQ+KHYyOV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8
VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0
PFQ+KHYzOF8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4o
djQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJf
KSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8pLAorICAgICAgICBz
dGF0aWNfY2FzdDxUPih2NDVfKSwgc3RhdGljX2Nhc3Q8VD4odjQ2XyksIHN0YXRpY19jYXN0PFQ+
KHY0N18pLAorICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDhfKSwgc3RhdGljX2Nhc3Q8VD4odjQ5
Xyl9OwogICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7CiAgIH0KIAorICBWYWx1ZUFycmF5NDko
Y29uc3QgVmFsdWVBcnJheTQ5JiBvdGhlcikgOiB2MV8ob3RoZXIudjFfKSwgdjJfKG90aGVyLnYy
XyksCisgICAgICB2M18ob3RoZXIudjNfKSwgdjRfKG90aGVyLnY0XyksIHY1XyhvdGhlci52NV8p
LCB2Nl8ob3RoZXIudjZfKSwKKyAgICAgIHY3XyhvdGhlci52N18pLCB2OF8ob3RoZXIudjhfKSwg
djlfKG90aGVyLnY5XyksIHYxMF8ob3RoZXIudjEwXyksCisgICAgICB2MTFfKG90aGVyLnYxMV8p
LCB2MTJfKG90aGVyLnYxMl8pLCB2MTNfKG90aGVyLnYxM18pLCB2MTRfKG90aGVyLnYxNF8pLAor
ICAgICAgdjE1XyhvdGhlci52MTVfKSwgdjE2XyhvdGhlci52MTZfKSwgdjE3XyhvdGhlci52MTdf
KSwgdjE4XyhvdGhlci52MThfKSwKKyAgICAgIHYxOV8ob3RoZXIudjE5XyksIHYyMF8ob3RoZXIu
djIwXyksIHYyMV8ob3RoZXIudjIxXyksIHYyMl8ob3RoZXIudjIyXyksCisgICAgICB2MjNfKG90
aGVyLnYyM18pLCB2MjRfKG90aGVyLnYyNF8pLCB2MjVfKG90aGVyLnYyNV8pLCB2MjZfKG90aGVy
LnYyNl8pLAorICAgICAgdjI3XyhvdGhlci52MjdfKSwgdjI4XyhvdGhlci52MjhfKSwgdjI5Xyhv
dGhlci52MjlfKSwgdjMwXyhvdGhlci52MzBfKSwKKyAgICAgIHYzMV8ob3RoZXIudjMxXyksIHYz
Ml8ob3RoZXIudjMyXyksIHYzM18ob3RoZXIudjMzXyksIHYzNF8ob3RoZXIudjM0XyksCisgICAg
ICB2MzVfKG90aGVyLnYzNV8pLCB2MzZfKG90aGVyLnYzNl8pLCB2MzdfKG90aGVyLnYzN18pLCB2
MzhfKG90aGVyLnYzOF8pLAorICAgICAgdjM5XyhvdGhlci52MzlfKSwgdjQwXyhvdGhlci52NDBf
KSwgdjQxXyhvdGhlci52NDFfKSwgdjQyXyhvdGhlci52NDJfKSwKKyAgICAgIHY0M18ob3RoZXIu
djQzXyksIHY0NF8ob3RoZXIudjQ0XyksIHY0NV8ob3RoZXIudjQ1XyksIHY0Nl8ob3RoZXIudjQ2
XyksCisgICAgICB2NDdfKG90aGVyLnY0N18pLCB2NDhfKG90aGVyLnY0OF8pLCB2NDlfKG90aGVy
LnY0OV8pIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1l
bnQgaXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk0OSYg
b3RoZXIpOwpAQCAtMjc2MiwxNCArMzQ3MCw0MCBAQCBjbGFzcyBWYWx1ZUFycmF5NTAgewogCiAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7djFfLCB2Ml8sIHYzXywgdjRfLCB2NV8sIHY2
XywgdjdfLCB2OF8sIHY5XywgdjEwXywgdjExXywKLSAgICAgICAgdjEyXywgdjEzXywgdjE0Xywg
djE1XywgdjE2XywgdjE3XywgdjE4XywgdjE5XywgdjIwXywgdjIxXywgdjIyXywgdjIzXywKLSAg
ICAgICAgdjI0XywgdjI1XywgdjI2XywgdjI3XywgdjI4XywgdjI5XywgdjMwXywgdjMxXywgdjMy
XywgdjMzXywgdjM0XywgdjM1XywKLSAgICAgICAgdjM2XywgdjM3XywgdjM4XywgdjM5XywgdjQw
XywgdjQxXywgdjQyXywgdjQzXywgdjQ0XywgdjQ1XywgdjQ2XywgdjQ3XywKLSAgICAgICAgdjQ4
XywgdjQ5XywgdjUwX307CisgICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYx
XyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCisgICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0
YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCisgICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCisg
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNf
Y2FzdDxUPih2MTFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0
PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjBfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+
KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0
XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxU
Pih2MjlfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYz
MV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyks
IHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2
MzhfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8p
LCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0
YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBzdGF0aWNfY2FzdDxUPih2NDdf
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ4XyksIHN0YXRpY19jYXN0PFQ+KHY0OV8pLCBz
dGF0aWNfY2FzdDxUPih2NTBfKX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQog
CisgIFZhbHVlQXJyYXk1MChjb25zdCBWYWx1ZUFycmF5NTAmIG90aGVyKSA6IHYxXyhvdGhlci52
MV8pLCB2Ml8ob3RoZXIudjJfKSwKKyAgICAgIHYzXyhvdGhlci52M18pLCB2NF8ob3RoZXIudjRf
KSwgdjVfKG90aGVyLnY1XyksIHY2XyhvdGhlci52Nl8pLAorICAgICAgdjdfKG90aGVyLnY3Xyks
IHY4XyhvdGhlci52OF8pLCB2OV8ob3RoZXIudjlfKSwgdjEwXyhvdGhlci52MTBfKSwKKyAgICAg
IHYxMV8ob3RoZXIudjExXyksIHYxMl8ob3RoZXIudjEyXyksIHYxM18ob3RoZXIudjEzXyksIHYx
NF8ob3RoZXIudjE0XyksCisgICAgICB2MTVfKG90aGVyLnYxNV8pLCB2MTZfKG90aGVyLnYxNl8p
LCB2MTdfKG90aGVyLnYxN18pLCB2MThfKG90aGVyLnYxOF8pLAorICAgICAgdjE5XyhvdGhlci52
MTlfKSwgdjIwXyhvdGhlci52MjBfKSwgdjIxXyhvdGhlci52MjFfKSwgdjIyXyhvdGhlci52MjJf
KSwKKyAgICAgIHYyM18ob3RoZXIudjIzXyksIHYyNF8ob3RoZXIudjI0XyksIHYyNV8ob3RoZXIu
djI1XyksIHYyNl8ob3RoZXIudjI2XyksCisgICAgICB2MjdfKG90aGVyLnYyN18pLCB2MjhfKG90
aGVyLnYyOF8pLCB2MjlfKG90aGVyLnYyOV8pLCB2MzBfKG90aGVyLnYzMF8pLAorICAgICAgdjMx
XyhvdGhlci52MzFfKSwgdjMyXyhvdGhlci52MzJfKSwgdjMzXyhvdGhlci52MzNfKSwgdjM0Xyhv
dGhlci52MzRfKSwKKyAgICAgIHYzNV8ob3RoZXIudjM1XyksIHYzNl8ob3RoZXIudjM2XyksIHYz
N18ob3RoZXIudjM3XyksIHYzOF8ob3RoZXIudjM4XyksCisgICAgICB2MzlfKG90aGVyLnYzOV8p
LCB2NDBfKG90aGVyLnY0MF8pLCB2NDFfKG90aGVyLnY0MV8pLCB2NDJfKG90aGVyLnY0Ml8pLAor
ICAgICAgdjQzXyhvdGhlci52NDNfKSwgdjQ0XyhvdGhlci52NDRfKSwgdjQ1XyhvdGhlci52NDVf
KSwgdjQ2XyhvdGhlci52NDZfKSwKKyAgICAgIHY0N18ob3RoZXIudjQ3XyksIHY0OF8ob3RoZXIu
djQ4XyksIHY0OV8ob3RoZXIudjQ5XyksIHY1MF8ob3RoZXIudjUwXykge30KKwogIHByaXZhdGU6
CiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KICAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTUwJiBvdGhlcik7CkBAIC0yODI2LDcgKzM1
NjAsNyBAQCBjbGFzcyBWYWx1ZUFycmF5NTAgewogICBjb25zdCBUNTAgdjUwXzsKIH07CiAKLSNp
ZiBHVEVTVF9IQVNfQ09NQklORQorIyBpZiBHVEVTVF9IQVNfQ09NQklORQogLy8gSU5URVJOQUwg
SU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KIC8vCiAvLyBHZW5lcmF0
ZXMgdmFsdWVzIGZyb20gdGhlIENhcnRlc2lhbiBwcm9kdWN0IG9mIHZhbHVlcyBwcm9kdWNlZApA
QCAtMjgzNCw5ICszNTY4LDkgQEAgY2xhc3MgVmFsdWVBcnJheTUwIHsKIC8vCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjIKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnR1cGxlPFQx
LCBUMj4gPiB7CisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGlu
Zzo6dHVwbGU8VDEsIFQyPiA+IHsKICBwdWJsaWM6Ci0gIHR5cGVkZWYgOjpzdGQ6OnR1cGxlPFQx
LCBUMj4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyPiBQYXJh
bVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjIoY29uc3QgUGFyYW1HZW5lcmF0
b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIpCkBAIC0yODgy
LDcgKzM2MTYsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMgogICAgIHZpcnR1
YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKICAg
ICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwogICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0
IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQor
ICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gY3Vy
cmVudF92YWx1ZV8uZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFt
SXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKICAgICAgIC8vIEhh
dmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCiAg
ICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3Qu
CkBAIC0yOTE0LDcgKzM2NDgsNyBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMgog
CiAgICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgpKQot
ICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJf
KTsKKyAgICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVudDFf
LCAqY3VycmVudDJfKSk7CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAv
LyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4g
ZWl0aGVyIG9mIHRoZQpAQCAtMjkzNiw3ICszNjcwLDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjIKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJh
dG9yIGJlZ2luMl87CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVy
YXRvciBlbmQyXzsKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9yIGN1
cnJlbnQyXzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0cjxQ
YXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjI6Okl0ZXJhdG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25t
ZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtMjk0OSw5ICszNjgzLDkgQEAgY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjIKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDM+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMwotICAgIDogcHVi
bGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMz4gPiB7
CisgICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8
VDEsIFQyLCBUMz4gPiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0dXBsZTxUMSwgVDIs
IFQzPiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzPiBQ
YXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjMoY29uc3QgUGFyYW1HZW5l
cmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMpCkBAIC0zMDA1LDcgKzM3MzksNyBAQCBjbGFzcyBDYXJ0
ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMwogICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFj
ZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKICAgICAgIHJldHVybiBuZXcgSXRlcmF0b3Io
KnRoaXMpOwogICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNv
bnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQorICAgIHZpcnR1YWwgY29uc3QgUGFyYW1U
eXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gY3VycmVudF92YWx1ZV8uZ2V0KCk7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1U
eXBlPiYgb3RoZXIpIGNvbnN0IHsKICAgICAgIC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVy
YXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCiAgICAgICAvLyBpdGVyYXRvciBpcyBvZiB0
aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCkBAIC0zMDQxLDcgKzM3NzUsNyBAQCBj
bGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMwogCiAgICAgdm9pZCBDb21wdXRlQ3VycmVu
dFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9
IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfKTsKKyAgICAgICAg
Y3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJf
LCAqY3VycmVudDNfKSk7CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAv
LyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4g
ZWl0aGVyIG9mIHRoZQpAQCAtMzA2Nyw3ICszODAxLDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjMKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJh
dG9yIGJlZ2luM187CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+OjppdGVy
YXRvciBlbmQzXzsKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yIGN1
cnJlbnQzXzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0cjxQ
YXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjM6Okl0ZXJhdG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25t
ZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtMzA4MSw5ICszODE1LDkgQEAgY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjMKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0PgogY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjQKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjpzdGQ6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0PiA+IHsKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwg
Ojp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPiB7CiAgcHVibGljOgotICB0eXBlZGVm
IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVz
dGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yNChjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKQEAg
LTMxNDYsNyArMzg4MCw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0CiAgICAg
dmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3Qg
ewogICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwg
Y29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVf
OyB9CisgICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVy
biBjdXJyZW50X3ZhbHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3Qg
UGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAgICAg
Ly8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3Ro
ZXIKICAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3du
Y2FzdC4KQEAgLTMxODYsOCArMzkyMCw4IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0
b3I0CiAKICAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5k
KCkpCi0gICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJy
ZW50Ml8sICpjdXJyZW50M18sCi0gICAgICAgICAgICAqY3VycmVudDRfKTsKKyAgICAgICAgY3Vy
cmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAq
Y3VycmVudDNfLAorICAgICAgICAgICAgKmN1cnJlbnQ0XykpOwogICAgIH0KICAgICBib29sIEF0
RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUg
ZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAgLTMyMTcsNyArMzk1MSw3IEBA
IGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0CiAgICAgY29uc3QgdHlwZW5hbWUgUGFy
YW1HZW5lcmF0b3I8VDQ+OjppdGVyYXRvciBiZWdpbjRfOwogICAgIGNvbnN0IHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgZW5kNF87CiAgICAgdHlwZW5hbWUgUGFyYW1HZW5l
cmF0b3I8VDQ+OjppdGVyYXRvciBjdXJyZW50NF87Ci0gICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFs
dWVfOworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsKICAgfTsgIC8v
IGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0OjpJdGVyYXRvcgogCiAgIC8vIE5vIGlt
cGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTMyMzIsOSArMzk2
Niw5IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDU+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNQotICAgIDogcHVibGljIFBhcmFt
R2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiA+IHsK
KyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxU
MSwgVDIsIFQzLCBUNCwgVDU+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8
VDEsIFQyLCBUMywgVDQsIFQ1PiBQYXJhbVR5cGU7CisgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBs
ZTxUMSwgVDIsIFQzLCBUNCwgVDU+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2Vu
ZXJhdG9yNShjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKQEAgLTMzMDQs
NyArNDAzOCw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1CiAgICAgdmlydHVh
bCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3QgewogICAg
ICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwgY29uc3Qg
UGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9Cisg
ICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiBjdXJy
ZW50X3ZhbHVlXy5nZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1J
dGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAgICAgLy8gSGF2
aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKICAg
ICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4K
QEAgLTMzNDgsOCArNDA4Miw4IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1CiAK
ICAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkpCi0g
ICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8s
ICpjdXJyZW50M18sCi0gICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVudDVfKTsKKyAgICAg
ICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVu
dDJfLCAqY3VycmVudDNfLAorICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1cnJlbnQ1XykpOwog
ICAgIH0KICAgICBib29sIEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQg
aXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAg
LTMzODMsNyArNDExNyw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1CiAgICAg
Y29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+OjppdGVyYXRvciBiZWdpbjVfOwogICAg
IGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgZW5kNV87CiAgICAg
dHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+OjppdGVyYXRvciBjdXJyZW50NV87Ci0gICAgUGFy
YW1UeXBlIGN1cnJlbnRfdmFsdWVfOworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50
X3ZhbHVlXzsKICAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1OjpJdGVy
YXRvcgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRl
ZC4KQEAgLTM0MDAsMTAgKzQxMzQsMTAgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjUKIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgdHlwZW5hbWUgVDY+CiBjbGFzcyBDYXJ0ZXNpYW5Q
cm9kdWN0R2VuZXJhdG9yNgotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6
OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LAorICAgIDogcHVibGljIFBhcmFtR2VuZXJh
dG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwKICAgICAg
ICAgVDY+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNj4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNj4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0
b3I2KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLApAQCAtMzQ4MSw3ICs0
MjE1LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjYKICAgICB2aXJ0dWFsIFBh
cmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7CiAgICAgICBy
ZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJh
bVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KKyAgICB2
aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRf
dmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJh
dG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAvLyBIYXZpbmcg
dGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgogICAgICAg
Ly8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0LgpAQCAt
MzUyOSw4ICs0MjYzLDggQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjYKIAogICAg
IHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKICAgICAgIGlmICghQXRFbmQoKSkKLSAgICAg
ICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1
cnJlbnQzXywKLSAgICAgICAgICAgICpjdXJyZW50NF8sICpjdXJyZW50NV8sICpjdXJyZW50Nl8p
OworICAgICAgICBjdXJyZW50X3ZhbHVlXy5yZXNldChuZXcgUGFyYW1UeXBlKCpjdXJyZW50MV8s
ICpjdXJyZW50Ml8sICpjdXJyZW50M18sCisgICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVu
dDVfLCAqY3VycmVudDZfKSk7CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAg
ICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdo
ZW4gZWl0aGVyIG9mIHRoZQpAQCAtMzU2OCw3ICs0MzAyLDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjYKICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0
ZXJhdG9yIGJlZ2luNl87CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDY+Ojpp
dGVyYXRvciBlbmQ2XzsKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0ZXJhdG9y
IGN1cnJlbnQ2XzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0
cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJv
ZHVjdEdlbmVyYXRvcjY6Okl0ZXJhdG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3Np
Z25tZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtMzU4NiwxMCArNDMyMCwxMCBAQCBjbGFzcyBDYXJ0
ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNgogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICB0eXBlbmFtZSBU
NiwgdHlwZW5hbWUgVDc+CiBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNwotICAgIDog
cHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0
aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAogICAgICAgICBUNz4gPiB7CiAgcHVi
bGljOgotICB0eXBlZGVmIDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4g
UGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDc+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNyhjb25z
dCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAogICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+
JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKQEAgLTM2NzUsNyArNDQwOSw3IEBA
IGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3CiAgICAgdmlydHVhbCBQYXJhbUl0ZXJh
dG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3QgewogICAgICAgcmV0dXJuIG5l
dyBJdGVyYXRvcigqdGhpcyk7CiAgICAgfQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBD
dXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9CisgICAgdmlydHVhbCBj
b25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiBjdXJyZW50X3ZhbHVlXy5n
ZXQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRvckludGVy
ZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewogICAgICAgLy8gSGF2aW5nIHRoZSBzYW1l
IGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKICAgICAgIC8vIGl0ZXJh
dG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KQEAgLTM3MjcsOCAr
NDQ2MSw4IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3CiAKICAgICB2b2lkIENv
bXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkpCi0gICAgICAgIGN1cnJl
bnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50M18s
Ci0gICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVudDVfLCAqY3VycmVudDZfLCAqY3VycmVu
dDdfKTsKKyAgICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgqY3VycmVu
dDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAorICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1
cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1cnJlbnQ3XykpOwogICAgIH0KICAgICBib29sIEF0RW5k
KCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUgZW5k
IG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAgLTM3NzAsNyArNDUwNCw3IEBAIGNs
YXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3CiAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1H
ZW5lcmF0b3I8VDc+OjppdGVyYXRvciBiZWdpbjdfOwogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQ3Pjo6aXRlcmF0b3IgZW5kN187CiAgICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0
b3I8VDc+OjppdGVyYXRvciBjdXJyZW50N187Ci0gICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFsdWVf
OworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3ZhbHVlXzsKICAgfTsgIC8vIGNs
YXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3OjpJdGVyYXRvcgogCiAgIC8vIE5vIGltcGxl
bWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KQEAgLTM3ODksMTAgKzQ1MjMs
MTAgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjcKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUs
CiAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOD4KIGNsYXNzIENhcnRl
c2lhblByb2R1Y3RHZW5lcmF0b3I4Ci0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZh
Y2U8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAorICAgIDogcHVibGljIFBh
cmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsCiAgICAgICAgIFQ3LCBUOD4gPiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0
dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+IFBhcmFtVHlwZTsKKyAgdHlwZWRl
ZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4gUGFyYW1U
eXBlOwogCiAgIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4KGNvbnN0IFBhcmFtR2VuZXJhdG9y
PFQxPiYgZzEsCiAgICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJh
bUdlbmVyYXRvcjxUMz4mIGczLApAQCAtMzg4OCw3ICs0NjIyLDcgQEAgY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjgKICAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFy
YW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7CiAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlz
KTsKICAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7
IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSog
Q3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmly
dHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4m
IG90aGVyKSBjb25zdCB7CiAgICAgICAvLyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3Ig
Z3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgogICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNh
bWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0LgpAQCAtMzk0NCw4ICs0Njc4LDggQEAgY2xhc3Mg
Q2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjgKIAogICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1
ZSgpIHsKICAgICAgIGlmICghQXRFbmQoKSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJh
bVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKLSAgICAgICAgICAgICpj
dXJyZW50NF8sICpjdXJyZW50NV8sICpjdXJyZW50Nl8sICpjdXJyZW50N18sICpjdXJyZW50OF8p
OworICAgICAgICBjdXJyZW50X3ZhbHVlXy5yZXNldChuZXcgUGFyYW1UeXBlKCpjdXJyZW50MV8s
ICpjdXJyZW50Ml8sICpjdXJyZW50M18sCisgICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVu
dDVfLCAqY3VycmVudDZfLCAqY3VycmVudDdfLCAqY3VycmVudDhfKSk7CiAgICAgfQogICAgIGJv
b2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0
IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQpAQCAtMzk5MSw3ICs0NzI1
LDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjgKICAgICBjb25zdCB0eXBlbmFt
ZSBQYXJhbUdlbmVyYXRvcjxUOD46Oml0ZXJhdG9yIGJlZ2luOF87CiAgICAgY29uc3QgdHlwZW5h
bWUgUGFyYW1HZW5lcmF0b3I8VDg+OjppdGVyYXRvciBlbmQ4XzsKICAgICB0eXBlbmFtZSBQYXJh
bUdlbmVyYXRvcjxUOD46Oml0ZXJhdG9yIGN1cnJlbnQ4XzsKLSAgICBQYXJhbVR5cGUgY3VycmVu
dF92YWx1ZV87CisgICAgbGlua2VkX3B0cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFsdWVfOwogICB9
OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjg6Okl0ZXJhdG9yCiAKICAgLy8g
Tm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtNDAxMSwx
MCArNDc0NSwxMCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBl
bmFtZSBUNSwKICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBl
bmFtZSBUOT4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5Ci0gICAgOiBwdWJsaWMg
UGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LAorICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCiAgICAgICAgIFQ3LCBUOCwgVDk+ID4gewogIHB1
YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOT4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4gUGFyYW1UeXBlOwogCiAgIENhcnRlc2lhblByb2R1
Y3RHZW5lcmF0b3I5KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCiAgICAgICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLApAQCAt
NDExNyw3ICs0ODUxLDcgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjkKICAgICB2
aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7
CiAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBj
b25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87
IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJu
IGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQ
YXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAv
LyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhl
cgogICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25j
YXN0LgpAQCAtNDE3Nyw5ICs0OTExLDkgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjkKIAogICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKICAgICAgIGlmICghQXRFbmQo
KSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJl
bnQyXywgKmN1cnJlbnQzXywKKyAgICAgICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFt
VHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAogICAgICAgICAgICAgKmN1
cnJlbnQ0XywgKmN1cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1cnJlbnQ3XywgKmN1cnJlbnQ4XywK
LSAgICAgICAgICAgICpjdXJyZW50OV8pOworICAgICAgICAgICAgKmN1cnJlbnQ5XykpOwogICAg
IH0KICAgICBib29sIEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRl
cmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKQEAgLTQy
MjksNyArNDk2Myw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5CiAgICAgY29u
c3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDk+OjppdGVyYXRvciBiZWdpbjlfOwogICAgIGNv
bnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ5Pjo6aXRlcmF0b3IgZW5kOV87CiAgICAgdHlw
ZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDk+OjppdGVyYXRvciBjdXJyZW50OV87Ci0gICAgUGFyYW1U
eXBlIGN1cnJlbnRfdmFsdWVfOworICAgIGxpbmtlZF9wdHI8UGFyYW1UeXBlPiBjdXJyZW50X3Zh
bHVlXzsKICAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5OjpJdGVyYXRv
cgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4K
QEAgLTQyNTAsMTAgKzQ5ODQsMTAgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjkK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFt
ZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMD4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RH
ZW5lcmF0b3IxMAotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKKyAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRv
ckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAogICAg
ICAgICBUNywgVDgsIFQ5LCBUMTA+ID4gewogIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnN0ZDo6dHVw
bGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwPiBQYXJhbVR5cGU7Cisg
IHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTA+IFBhcmFtVHlwZTsKIAogICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMTAoY29u
c3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKICAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQy
PiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCkBAIC00MzY0LDcgKzUwOTgsNyBA
QCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMTAKICAgICB2aXJ0dWFsIFBhcmFtSXRl
cmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7CiAgICAgICByZXR1cm4g
bmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUq
IEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KKyAgICB2aXJ0dWFs
IGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfdmFsdWVf
LmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50
ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7CiAgICAgICAvLyBIYXZpbmcgdGhlIHNh
bWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgogICAgICAgLy8gaXRl
cmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0LgpAQCAtNDQyOCw5
ICs1MTYyLDkgQEAgY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjEwCiAKICAgICB2b2lk
IENvbXB1dGVDdXJyZW50VmFsdWUoKSB7CiAgICAgICBpZiAoIUF0RW5kKCkpCi0gICAgICAgIGN1
cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8sICpjdXJyZW50
M18sCisgICAgICAgIGN1cnJlbnRfdmFsdWVfLnJlc2V0KG5ldyBQYXJhbVR5cGUoKmN1cnJlbnQx
XywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKICAgICAgICAgICAgICpjdXJyZW50NF8sICpjdXJy
ZW50NV8sICpjdXJyZW50Nl8sICpjdXJyZW50N18sICpjdXJyZW50OF8sCi0gICAgICAgICAgICAq
Y3VycmVudDlfLCAqY3VycmVudDEwXyk7CisgICAgICAgICAgICAqY3VycmVudDlfLCAqY3VycmVu
dDEwXykpOwogICAgIH0KICAgICBib29sIEF0RW5kKCkgY29uc3QgewogICAgICAgLy8gV2UgbXVz
dCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBv
ZiB0aGUKQEAgLTQ0ODQsNyArNTIxOCw3IEBAIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0
b3IxMAogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxMD46Oml0ZXJhdG9yIGJl
Z2luMTBfOwogICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxMD46Oml0ZXJhdG9y
IGVuZDEwXzsKICAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMTA+OjppdGVyYXRvciBjdXJy
ZW50MTBfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKKyAgICBsaW5rZWRfcHRyPFBh
cmFtVHlwZT4gY3VycmVudF92YWx1ZV87CiAgIH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0
R2VuZXJhdG9yMTA6Okl0ZXJhdG9yCiAKICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25t
ZW50IGlzIHVuc3VwcG9ydGVkLgpAQCAtNDUxNSw4ICs1MjQ5LDggQEAgY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEhvbGRlcjIgewogQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjIoY29uc3QgR2VuZXJhdG9y
MSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyKQogICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpIHt9
CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gIG9wZXJhdG9yIFBhcmFt
R2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyPiA+KCkgY29uc3QgewotICAgIHJldHVybiBQ
YXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMj4gPigKKyAgb3BlcmF0b3IgUGFyYW1H
ZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyPiA+KCkgY29uc3QgeworICAgIHJldHVy
biBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDI+ID4oCiAgICAgICAgIG5l
dyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMjxUMSwgVDI+KAogICAgICAgICBzdGF0aWNfY2Fz
dDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdl
bmVyYXRvcjxUMj4gPihnMl8pKSk7CkBAIC00NTM3LDggKzUyNzEsOCBAQCBDYXJ0ZXNpYW5Qcm9k
dWN0SG9sZGVyMyhjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAg
ICAgY29uc3QgR2VuZXJhdG9yMyYgZzMpCiAgICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhn
Mykge30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+
Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMz4gPigp
IGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIs
IFQzPiA+KAorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwg
VDIsIFQzPiA+KCkgY29uc3QgeworICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5n
Ojp0dXBsZTxUMSwgVDIsIFQzPiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVy
YXRvcjM8VDEsIFQyLCBUMz4oCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQx
PiA+KGcxXyksCiAgICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyks
CkBAIC00NTYyLDggKzUyOTYsOCBAQCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNChjb25zdCBHZW5l
cmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgICAgY29uc3QgR2VuZXJhdG9yMyYg
ZzMsIGNvbnN0IEdlbmVyYXRvcjQmIGc0KQogICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBnM18o
ZzMpLCBnNF8oZzQpIHt9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5
cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3Rk
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5l
cmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gPigKKyAgb3BlcmF0b3IgUGFyYW1H
ZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+ID4oKSBjb25zdCB7Cisg
ICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0
PiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQ8VDEsIFQyLCBUMywg
VDQ+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLAogICAg
ICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pLApAQCAtNDU4OSw4ICs1
MzIzLDggQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjUoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNv
bnN0IEdlbmVyYXRvcjImIGcyLAogICAgIGNvbnN0IEdlbmVyYXRvcjMmIGczLCBjb25zdCBHZW5l
cmF0b3I0JiBnNCwgY29uc3QgR2VuZXJhdG9yNSYgZzUpCiAgICAgICA6IGcxXyhnMSksIGcyXyhn
MiksIGczXyhnMyksIGc0XyhnNCksIGc1XyhnNSkge30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KLSAg
b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+
ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEs
IFQyLCBUMywgVDQsIFQ1PiA+KAorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5n
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+ID4oKSBjb25zdCB7CisgICAgcmV0dXJuIFBhcmFt
R2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gPigKICAgICAg
ICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1PFQxLCBUMiwgVDMsIFQ0LCBUNT4oCiAg
ICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcxXyksCiAgICAgICAgIHN0
YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyksCkBAIC00NjIwLDggKzUzNTQsOCBA
QCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNihjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2Vu
ZXJhdG9yMiYgZzIsCiAgICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhnMyksIGc0XyhnNCks
IGc1XyhnNSksIGc2XyhnNikge30KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKICAgICAgIHR5cGVuYW1l
IFQ2PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDY+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnN0
ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4gPigKKyAgb3BlcmF0b3IgUGFyYW1HZW5l
cmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4gPigpIGNvbnN0
IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNj4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+KAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVy
YXRvcjxUMT4gPihnMV8pLAogICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4g
PihnMl8pLApAQCAtNDY1Myw5ICs1Mzg3LDkgQEAgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjcoY29u
c3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAogICAgICAgOiBnMV8oZzEp
LCBnMl8oZzIpLCBnM18oZzMpLCBnNF8oZzQpLCBnNV8oZzUpLCBnNl8oZzYpLCBnN18oZzcpIHt9
CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+Ci0g
IG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwKKyAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwKICAgICAgIFQ3PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJh
bUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PiA+KAor
ICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNz4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1H
ZW5lcmF0b3I8VDE+ID4oZzFfKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8
VDI+ID4oZzJfKSwKQEAgLTQ2OTEsOSArNTQyNSw5IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXI4
KGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKICAgICAgICAgICBn
OF8oZzgpIHt9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCiAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5h
bWUgVDcsIHR5cGVuYW1lIFQ4PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LAorICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywKICAgICAgIFQ4
PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4gPigKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0
b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiA+KAog
ICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjg8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4PigKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4o
ZzFfKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwKQEAg
LTQ3MzIsOSArNTQ2Niw5IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXI5KGNvbnN0IEdlbmVyYXRv
cjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKICAgICAgICAgICBnOV8oZzkpIHt9CiAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
NCwgdHlwZW5hbWUgVDUsCiAgICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1l
IFQ4LCB0eXBlbmFtZSBUOT4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBs
ZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsCisgIG9wZXJhdG9yIFBhcmFtR2VuZXJh
dG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwKICAg
ICAgIFQ5PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwKKyAgICByZXR1cm4gUGFyYW1HZW5l
cmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LAog
ICAgICAgICBUOT4gPigKICAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5PFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+KAogICAgICAgICBzdGF0aWNfY2FzdDxQ
YXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLApAQCAtNDc3NiwxMCArNTUxMCwxMCBAQCBDYXJ0ZXNp
YW5Qcm9kdWN0SG9sZGVyMTAoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjIm
IGcyLAogICAgICAgICAgIGc5XyhnOSksIGcxMF8oZzEwKSB7fQogICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1
LAogICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUg
VDksIHR5cGVuYW1lIFQxMD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6c3RkOjp0dXBs
ZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsCi0gICAgICBUOSwgVDEwPiA+KCkgY29u
c3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjpzdGQ6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwKLSAgICAgICAgVDksIFQxMD4gPigKKyAgb3BlcmF0b3IgUGFy
YW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwKKyAgICAgIFQxMD4gPigpIGNvbnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0
b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwK
KyAgICAgICAgVDEwPiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjEw
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksCiAgICAgICAgICAgICBUMTA+KAog
ICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLApAQCAtNDgxMCwx
MSArNTU0NCw5IEBAIENhcnRlc2lhblByb2R1Y3RIb2xkZXIxMChjb25zdCBHZW5lcmF0b3IxJiBn
MSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCiAgIGNvbnN0IEdlbmVyYXRvcjEwIGcxMF87CiB9OyAg
Ly8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjEwCiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X0NPTUJJTkUKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCiAKIH0gIC8vIG5hbWVzcGFj
ZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotI2VuZGlmICAvLyAgR1RFU1Rf
SEFTX1BBUkFNX1RFU1QKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFM
X0dURVNUX1BBUkFNX1VUSUxfR0VORVJBVEVEX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJh
dGVkLmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCmluZGV4IGJhZWRmYmMyZDdlODM0
MWI1YjU1OWQ5Y2UzM2I4ZDg3NDUzZGVkNDIuLjMwZGZmZTQzYzNjNjc4NTY4NTI0NmRiNWYzMWQx
OTQ3YzhhMjJjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUv
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC1nZW5lcmF0ZWQuaC5wdW1wCkBAIC0yOSw4ICsyOSw3IEBAICR2YXIgbWF4dHVwbGUgPSAx
MCAgJCQgTWF4aW11bSBudW1iZXIgb2YgQ29tYmluZSBhcmd1bWVudHMgd2Ugd2FudCB0byBzdXBw
b3J0LgogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8K
LS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKwogCiAvLyBUeXBlIGFu
ZCBmdW5jdGlvbiB1dGlsaXRpZXMgZm9yIGltcGxlbWVudGluZyBwYXJhbWV0ZXJpemVkIHRlc3Rz
LgogLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBhIFNDUklQVC4gIERPIE5PVCBFRElUIEJZ
IEhBTkQhCkBAIC0zOSwxOSArMzgsMTYgQEAgJHZhciBtYXh0dXBsZSA9IDEwICAkJCBNYXhpbXVt
IG51bWJlciBvZiBDb21iaW5lIGFyZ3VtZW50cyB3ZSB3YW50IHRvIHN1cHBvcnQuCiAvLyBhbmQg
YXQgbW9zdCAkbWF4dHVwbGUgYXJndW1lbnRzIGluIENvbWJpbmUuIFBsZWFzZSBjb250YWN0CiAv
LyBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20gaWYgeW91IG5lZWQgbW9yZS4K
IC8vIFBsZWFzZSBub3RlIHRoYXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgdG8gQ29tYmluZSBp
cyBsaW1pdGVkCi0vLyBieSB0aGUgbWF4aW11bSBhcml0eSBvZiB0aGUgaW1wbGVtZW50YXRpb24g
b2YgdHIxOjp0dXBsZSB3aGljaCBpcworLy8gYnkgdGhlIG1heGltdW0gYXJpdHkgb2YgdGhlIGlt
cGxlbWVudGF0aW9uIG9mIHR1cGxlIHdoaWNoIGlzCiAvLyBjdXJyZW50bHkgc2V0IGF0ICRtYXh0
dXBsZS4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdU
RVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFURURfSF8K
ICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0dF
TkVSQVRFRF9IXwogCi0vLyBzY3JpcHRzL2Z1c2VfZ3Rlc3QucHkgZGVwZW5kcyBvbiBndGVzdCdz
IG93biBoZWFkZXIgYmVpbmcgI2luY2x1ZGVkCi0vLyAqdW5jb25kaXRpb25hbGx5Ki4gIFRoZXJl
Zm9yZSB0aGVzZSAjaW5jbHVkZXMgY2Fubm90IGJlIG1vdmVkCi0vLyBpbnNpZGUgI2lmIEdURVNU
X0hBU19QQVJBTV9URVNULgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0
aWwuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+Ci0KLSNpZiBHVEVT
VF9IQVNfUEFSQU1fVEVTVAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0
aWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKIG5hbWVzcGFj
ZSB0ZXN0aW5nIHsKIApAQCAtNTksOCArNTUsOCBAQCBuYW1lc3BhY2UgdGVzdGluZyB7CiAvLyBp
bmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3
YXJkSXRlcmF0b3I+CiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ci0gICAgdHlwZW5hbWUgOjpz
dGQ6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiBWYWx1ZXNJ
bigKLSAgICAgICAgRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKTsK
KyAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0
ZXJhdG9yPjo6dmFsdWVfdHlwZT4KK1ZhbHVlc0luKEZvcndhcmRJdGVyYXRvciBiZWdpbiwgRm9y
d2FyZEl0ZXJhdG9yIGVuZCk7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KIGlu
dGVybmFsOjpQYXJhbUdlbmVyYXRvcjxUPiBWYWx1ZXNJbihjb25zdCBUICgmYXJyYXkpW05dKTsK
QEAgLTcyLDM2ICs2OCwyMyBAQCBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dHlwZW5hbWUgQ29u
dGFpbmVyOjp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIC8v
IFVzZWQgaW4gdGhlIFZhbHVlcygpIGZ1bmN0aW9uIHRvIHByb3ZpZGUgcG9seW1vcnBoaWMgY2Fw
YWJpbGl0aWVzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxPgotY2xhc3MgVmFsdWVBcnJheTEgewot
IHB1YmxpYzoKLSAgZXhwbGljaXQgVmFsdWVBcnJheTEoVDEgdjEpIDogdjFfKHYxKSB7fQotCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsgcmV0dXJuIFZhbHVlc0luKCZ2MV8sICZ2MV8gKyAxKTsgfQotCi0gcHJpdmF0ZToKLSAg
Ly8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lk
IG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MSYgb3RoZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsK
LX07Ci0KLSRyYW5nZSBpIDIuLm4KKyRyYW5nZSBpIDEuLm4KICRmb3IgaSBbWwogJHJhbmdlIGog
MS4uaQogCiB0ZW1wbGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIFQkal1dPgogY2xhc3MgVmFsdWVB
cnJheSRpIHsKICBwdWJsaWM6Ci0gIFZhbHVlQXJyYXkkaSgkZm9yIGosIFtbVCRqIHYkal1dKSA6
ICRmb3IgaiwgW1t2JChqKV8odiRqKV1dIHt9CisgICRpZiBpPT0xIFtbZXhwbGljaXQgXV1WYWx1
ZUFycmF5JGkoJGZvciBqLCBbW1QkaiB2JGpdXSkgOiAkZm9yIGosIFtbdiQoailfKHYkaildXSB7
fQogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7JGZvciBqLCBbW3YkKGopX11dfTsK
KyAgICBjb25zdCBUIGFycmF5W10gPSB7JGZvciBqLCBbW3N0YXRpY19jYXN0PFQ+KHYkKGopXyld
XX07CiAgICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKICAgfQogCisgIFZhbHVlQXJyYXkkaShj
b25zdCBWYWx1ZUFycmF5JGkmIG90aGVyKSA6ICRmb3IgaiwgW1t2JChqKV8ob3RoZXIudiQoailf
KV1dIHt9CisKICBwcml2YXRlOgogICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQg
aXMgdW5zdXBwb3J0ZWQuCiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkkaSYgb3Ro
ZXIpOwpAQCAtMTE1LDcgKzk4LDcgQEAgJGZvciBqIFtbCiAKIF1dCiAKLSNpZiBHVEVTVF9IQVNf
Q09NQklORQorIyBpZiBHVEVTVF9IQVNfQ09NQklORQogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJ
T04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KIC8vCiAvLyBHZW5lcmF0ZXMgdmFsdWVzIGZy
b20gdGhlIENhcnRlc2lhbiBwcm9kdWN0IG9mIHZhbHVlcyBwcm9kdWNlZApAQCAtMTI4LDkgKzEx
MSw5IEBAICRyYW5nZSBrIDIuLmkKIAogdGVtcGxhdGUgPCRmb3IgaiwgW1t0eXBlbmFtZSBUJGpd
XT4KIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IkaQotICAgIDogcHVibGljIFBhcmFt
R2VuZXJhdG9ySW50ZXJmYWNlPCA6OnN0ZDo6dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4g
eworICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxl
PCRmb3IgaiwgW1tUJGpdXT4gPiB7CiAgcHVibGljOgotICB0eXBlZGVmIDo6c3RkOjp0cjE6OnR1
cGxlPCRmb3IgaiwgW1tUJGpdXT4gUGFyYW1UeXBlOworICB0eXBlZGVmIDo6dGVzdGluZzo6dHVw
bGU8JGZvciBqLCBbW1Qkal1dPiBQYXJhbVR5cGU7CiAKICAgQ2FydGVzaWFuUHJvZHVjdEdlbmVy
YXRvciRpKCRmb3IgaiwgW1tjb25zdCBQYXJhbUdlbmVyYXRvcjxUJGo+JiBnJGpdXSkKICAgICAg
IDogJGZvciBqLCBbW2ckKGopXyhnJGopXV0ge30KQEAgLTE4MCw3ICsxNjMsNyBAQCAkZm9yIGsg
W1sKICAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUo
KSBjb25zdCB7CiAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKICAgICB9Ci0gICAg
dmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVu
dF92YWx1ZV87IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0
IHsgcmV0dXJuIGN1cnJlbnRfdmFsdWVfLmdldCgpOyB9CiAgICAgdmlydHVhbCBib29sIEVxdWFs
cyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7
CiAgICAgICAvLyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0
IHRoZSBvdGhlcgogICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2Ug
Y2FuIGRvd25jYXN0LgpAQCAtMjEyLDcgKzE5NSw3IEBAICRmb3IgayBbWwogCiAgICAgdm9pZCBD
b21wdXRlQ3VycmVudFZhbHVlKCkgewogICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBjdXJy
ZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgkZm9yIGosIFtbKmN1cnJlbnQkKGopX11dKTsKKyAgICAg
ICAgY3VycmVudF92YWx1ZV8ucmVzZXQobmV3IFBhcmFtVHlwZSgkZm9yIGosIFtbKmN1cnJlbnQk
KGopX11dKSk7CiAgICAgfQogICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7CiAgICAgICAvLyBXZSBt
dXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVy
IG9mIHRoZQpAQCAtMjM3LDcgKzIyMCw3IEBAICRmb3IgaiBbWwogICAgIHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQkaj46Oml0ZXJhdG9yIGN1cnJlbnQkKGopXzsKIF1dCiAKLSAgICBQYXJhbVR5
cGUgY3VycmVudF92YWx1ZV87CisgICAgbGlua2VkX3B0cjxQYXJhbVR5cGU+IGN1cnJlbnRfdmFs
dWVfOwogICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpOjpJdGVyYXRv
cgogCiAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4K
QEAgLTI2OSw4ICsyNTIsOCBAQCBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyJGkgewogQ2Fy
dGVzaWFuUHJvZHVjdEhvbGRlciRpKCRmb3IgaiwgW1tjb25zdCBHZW5lcmF0b3IkaiYgZyRqXV0p
CiAgICAgICA6ICRmb3IgaiwgW1tnJChqKV8oZyRqKV1dIHt9CiAgIHRlbXBsYXRlIDwkZm9yIGos
IFtbdHlwZW5hbWUgVCRqXV0+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnN0ZDo6dHIx
Ojp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2Vu
ZXJhdG9yPCA6OnN0ZDo6dHIxOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+ID4oCisgIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4gPigpIGNv
bnN0IHsKKyAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8JGZvciBq
LCBbW1Qkal1dPiA+KAogICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpPCRm
b3IgaiwgW1tUJGpdXT4oCiAkZm9yIGosW1sKIApAQCAtMjkxLDExICsyNzQsOSBAQCAkZm9yIGog
W1sKIAogXV0KIAotI2VuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQorIyBlbmRpZiAgLy8gR1RF
U1RfSEFTX0NPTUJJTkUKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3Bh
Y2UgdGVzdGluZwogCi0jZW5kaWYgIC8vICBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCiAjZW5kaWYg
IC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFU
RURfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgKaW5kZXggMGNiYjU4YzIxYjdi
ODljZDQ4YThkMWM1Y2I1MjBmMzExMzc0Y2RlMi4uZDY0ZjYyMGM0YzY3NDM0NjczYzBhNjFlMjM5
NjBiNjE1YzM0ZTc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgKQEAgLTI2
LDI4ICsyNiw0OSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKwogCiAv
LyBUeXBlIGFuZCBmdW5jdGlvbiB1dGlsaXRpZXMgZm9yIGltcGxlbWVudGluZyBwYXJhbWV0ZXJp
emVkIHRlc3RzLgogCisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5k
ZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0hfCiAjZGVm
aW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9IXwogCisj
aW5jbHVkZSA8Y3R5cGUuaD4KKwogI2luY2x1ZGUgPGl0ZXJhdG9yPgorI2luY2x1ZGUgPHNldD4K
ICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotLy8gc2NyaXB0cy9mdXNl
X2d0ZXN0LnB5IGRlcGVuZHMgb24gZ3Rlc3QncyBvd24gaGVhZGVyIGJlaW5nICNpbmNsdWRlZAot
Ly8gKnVuY29uZGl0aW9uYWxseSouICBUaGVyZWZvcmUgdGhlc2UgI2luY2x1ZGVzIGNhbm5vdCBi
ZSBtb3ZlZAotLy8gaW5zaWRlICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVC4KLSNpbmNsdWRlIDxn
dGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFs
L2d0ZXN0LWxpbmtlZF9wdHIuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0
Lmg+Ci0KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFs
L2d0ZXN0LWludGVybmFsLmgiCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2Vk
X3B0ci5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKyNpbmNsdWRl
ICJndGVzdC9ndGVzdC1wcmludGVycy5oIgogCiBuYW1lc3BhY2UgdGVzdGluZyB7CisKKy8vIElu
cHV0IHRvIGEgcGFyYW1ldGVyaXplZCB0ZXN0IG5hbWUgZ2VuZXJhdG9yLCBkZXNjcmliaW5nIGEg
dGVzdCBwYXJhbWV0ZXIuCisvLyBDb25zaXN0cyBvZiB0aGUgcGFyYW1ldGVyIHZhbHVlIGFuZCB0
aGUgaW50ZWdlciBwYXJhbWV0ZXIgaW5kZXguCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgor
c3RydWN0IFRlc3RQYXJhbUluZm8geworICBUZXN0UGFyYW1JbmZvKGNvbnN0IFBhcmFtVHlwZSYg
YV9wYXJhbSwgc2l6ZV90IGFuX2luZGV4KSA6CisgICAgcGFyYW0oYV9wYXJhbSksCisgICAgaW5k
ZXgoYW5faW5kZXgpIHt9CisgIFBhcmFtVHlwZSBwYXJhbTsKKyAgc2l6ZV90IGluZGV4OworfTsK
KworLy8gQSBidWlsdGluIHBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lIGdlbmVyYXRvciB3aGljaCBy
ZXR1cm5zIHRoZSByZXN1bHQgb2YKKy8vIHRlc3Rpbmc6OlByaW50VG9TdHJpbmcuCitzdHJ1Y3Qg
UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSB7CisgIHRlbXBsYXRlIDxjbGFzcyBQYXJhbVR5cGU+Cisg
IHN0ZDo6c3RyaW5nIG9wZXJhdG9yKCkoY29uc3QgVGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+JiBp
bmZvKSBjb25zdCB7CisgICAgcmV0dXJuIFByaW50VG9TdHJpbmcoaW5mby5wYXJhbSk7CisgIH0K
K307CisKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9O
IC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCkBAIC01Nyw3ICs3OCw3IEBAIG5hbWVzcGFjZSBp
bnRlcm5hbCB7CiAvLyBURVNUX1AgbWFjcm8gaXMgdXNlZCB0byBkZWZpbmUgdHdvIHRlc3RzIHdp
dGggdGhlIHNhbWUgbmFtZQogLy8gYnV0IGluIGRpZmZlcmVudCBuYW1lc3BhY2VzLgogR1RFU1Rf
QVBJXyB2b2lkIFJlcG9ydEludmFsaWRUZXN0Q2FzZVR5cGUoY29uc3QgY2hhciogdGVzdF9jYXNl
X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBmaWxlLCBpbnQgbGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbik7CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZT4gY2xhc3MgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U7CiB0ZW1wbGF0ZSA8dHlwZW5hbWU+IGNs
YXNzIFBhcmFtR2VuZXJhdG9yOwpAQCAtMTcxLDcgKzE5Miw3IEBAIGNsYXNzIFBhcmFtR2VuZXJh
dG9yIHsKICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoaW1wbF8tPkVu
ZCgpKTsgfQogCiAgcHJpdmF0ZToKLSAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjxj
b25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiA+IGltcGxfOworICBsaW5rZWRfcHRyPGNv
bnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+ID4gaW1wbF87CiB9OwogCiAvLyBHZW5lcmF0
ZXMgdmFsdWVzIGZyb20gYSByYW5nZSBvZiB0d28gY29tcGFyYWJsZSB2YWx1ZXMuIENhbiBiZSB1
c2VkIHRvCkBAIC0yMDUsNyArMjI2LDcgQEAgY2xhc3MgUmFuZ2VHZW5lcmF0b3IgOiBwdWJsaWMg
UGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4gewogICAgICAgcmV0dXJuIGJhc2VfOwogICAgIH0K
ICAgICB2aXJ0dWFsIHZvaWQgQWR2YW5jZSgpIHsKLSAgICAgIHZhbHVlXyA9IHZhbHVlXyArIHN0
ZXBfOworICAgICAgdmFsdWVfID0gc3RhdGljX2Nhc3Q8VD4odmFsdWVfICsgc3RlcF8pOwogICAg
ICAgaW5kZXhfKys7CiAgICAgfQogICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxU
PiogQ2xvbmUoKSBjb25zdCB7CkBAIC0yNDIsNyArMjYzLDcgQEAgY2xhc3MgUmFuZ2VHZW5lcmF0
b3IgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4gewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFQmIGVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBJbmNyZW1lbnRUJiBzdGVwKSB7CiAgICAgaW50IGVuZF9pbmRleCA9IDA7Ci0g
ICAgZm9yIChUIGkgPSBiZWdpbjsgaSA8IGVuZDsgaSA9IGkgKyBzdGVwKQorICAgIGZvciAoVCBp
ID0gYmVnaW47IGkgPCBlbmQ7IGkgPSBzdGF0aWNfY2FzdDxUPihpICsgc3RlcCkpCiAgICAgICBl
bmRfaW5kZXgrKzsKICAgICByZXR1cm4gZW5kX2luZGV4OwogICB9CkBAIC0yODUsNyArMzA2LDcg
QEAgY2xhc3MgVmFsdWVzSW5JdGVyYXRvclJhbmdlR2VuZXJhdG9yIDogcHVibGljIFBhcmFtR2Vu
ZXJhdG9ySW50ZXJmYWNlPFQ+IHsKICAgIHB1YmxpYzoKICAgICBJdGVyYXRvcihjb25zdCBQYXJh
bUdlbmVyYXRvckludGVyZmFjZTxUPiogYmFzZSwKICAgICAgICAgICAgICB0eXBlbmFtZSBDb250
YWluZXJUeXBlOjpjb25zdF9pdGVyYXRvciBpdGVyYXRvcikKLSAgICAgICAgOiAgYmFzZV8oYmFz
ZSksIGl0ZXJhdG9yXyhpdGVyYXRvcikge30KKyAgICAgICAgOiBiYXNlXyhiYXNlKSwgaXRlcmF0
b3JfKGl0ZXJhdG9yKSB7fQogICAgIHZpcnR1YWwgfkl0ZXJhdG9yKCkge30KIAogICAgIHZpcnR1
YWwgY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4qIEJhc2VHZW5lcmF0b3IoKSBjb25z
dCB7CkBAIC0zNDQsNiArMzY1LDM3IEBAIGNsYXNzIFZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVy
YXRvciA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiB7CiAgIGNvbnN0IENvbnRh
aW5lclR5cGUgY29udGFpbmVyXzsKIH07ICAvLyBjbGFzcyBWYWx1ZXNJbkl0ZXJhdG9yUmFuZ2VH
ZW5lcmF0b3IKIAorLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVT
RVIgQ09ERS4KKy8vCisvLyBEZWZhdWx0IHBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lIGdlbmVyYXRv
ciwgcmV0dXJucyBhIHN0cmluZyBjb250YWluaW5nIHRoZQorLy8gaW50ZWdlciB0ZXN0IHBhcmFt
ZXRlciBpbmRleC4KK3RlbXBsYXRlIDxjbGFzcyBQYXJhbVR5cGU+CitzdGQ6OnN0cmluZyBEZWZh
dWx0UGFyYW1OYW1lKGNvbnN0IFRlc3RQYXJhbUluZm88UGFyYW1UeXBlPiYgaW5mbykgeworICBN
ZXNzYWdlIG5hbWVfc3RyZWFtOworICBuYW1lX3N0cmVhbSA8PCBpbmZvLmluZGV4OworICByZXR1
cm4gbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCk7Cit9CisKKy8vIElOVEVSTkFMIElNUExFTUVOVEFU
SU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCisvLworLy8gUGFyYW1ldGVyaXplZCB0ZXN0
IG5hbWUgb3ZlcmxvYWQgaGVscGVycywgd2hpY2ggaGVscCB0aGUKKy8vIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QIG1hY3JvIGNob29zZSBiZXR3ZWVuIHRoZSBkZWZhdWx0IHBhcmFtZXRlcml6ZWQK
Ky8vIHRlc3QgbmFtZSBnZW5lcmF0b3IgYW5kIHVzZXIgcGFyYW0gbmFtZSBnZW5lcmF0b3IuCit0
ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlLCBjbGFzcyBQYXJhbU5hbWVHZW5GdW5jdG9yPgorUGFy
YW1OYW1lR2VuRnVuY3RvciBHZXRQYXJhbU5hbWVHZW4oUGFyYW1OYW1lR2VuRnVuY3RvciBmdW5j
KSB7CisgIHJldHVybiBmdW5jOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgorc3Ry
dWN0IFBhcmFtTmFtZUdlbkZ1bmMgeworICB0eXBlZGVmIHN0ZDo6c3RyaW5nIFR5cGUoY29uc3Qg
VGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+Jik7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1U
eXBlPgordHlwZW5hbWUgUGFyYW1OYW1lR2VuRnVuYzxQYXJhbVR5cGU+OjpUeXBlICpHZXRQYXJh
bU5hbWVHZW4oKSB7CisgIHJldHVybiBEZWZhdWx0UGFyYW1OYW1lOworfQorCiAvLyBJTlRFUk5B
TCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgogLy8KIC8vIFN0b3Jl
cyBhIHBhcmFtZXRlciB2YWx1ZSBhbmQgbGF0ZXIgY3JlYXRlcyB0ZXN0cyBwYXJhbWV0ZXJpemVk
IHdpdGggdGhhdApAQCAtNDE2LDcgKzQ2OCw3IEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2Fz
ZUluZm9CYXNlIHsKICAgdmlydHVhbCB+UGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UoKSB7
fQogCiAgIC8vIEJhc2UgcGFydCBvZiB0ZXN0IGNhc2UgbmFtZSBmb3IgZGlzcGxheSBwdXJwb3Nl
cy4KLSAgdmlydHVhbCBjb25zdCBTdHJpbmcmIEdldFRlc3RDYXNlTmFtZSgpIGNvbnN0ID0gMDsK
KyAgdmlydHVhbCBjb25zdCBzdGQ6OnN0cmluZyYgR2V0VGVzdENhc2VOYW1lKCkgY29uc3QgPSAw
OwogICAvLyBUZXN0IGNhc2UgaWQgdG8gdmVyaWZ5IGlkZW50aXR5LgogICB2aXJ0dWFsIFR5cGVJ
ZCBHZXRUZXN0Q2FzZVR5cGVJZCgpIGNvbnN0ID0gMDsKICAgLy8gVW5pdFRlc3QgY2xhc3MgaW52
b2tlcyB0aGlzIG1ldGhvZCB0byByZWdpc3RlciB0ZXN0cyBpbiB0aGlzCkBAIC00NDgsMTIgKzUw
MCwxNCBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvIDogcHVibGljIFBhcmFtZXRl
cml6ZWRUZXN0Q2FzZUluZm9CYXNlIHsKICAgdHlwZWRlZiB0eXBlbmFtZSBUZXN0Q2FzZTo6UGFy
YW1UeXBlIFBhcmFtVHlwZTsKICAgLy8gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gaW5zdGFu
Y2Ugb2YgYXBwcm9wcmlhdGUgZ2VuZXJhdG9yIHR5cGUuCiAgIHR5cGVkZWYgUGFyYW1HZW5lcmF0
b3I8UGFyYW1UeXBlPihHZW5lcmF0b3JDcmVhdGlvbkZ1bmMpKCk7CisgIHR5cGVkZWYgdHlwZW5h
bWUgUGFyYW1OYW1lR2VuRnVuYzxQYXJhbVR5cGU+OjpUeXBlIFBhcmFtTmFtZUdlbmVyYXRvckZ1
bmM7CiAKLSAgZXhwbGljaXQgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbyhjb25zdCBjaGFyKiBu
YW1lKQotICAgICAgOiB0ZXN0X2Nhc2VfbmFtZV8obmFtZSkge30KKyAgZXhwbGljaXQgUGFyYW1l
dGVyaXplZFRlc3RDYXNlSW5mbygKKyAgICAgIGNvbnN0IGNoYXIqIG5hbWUsIENvZGVMb2NhdGlv
biBjb2RlX2xvY2F0aW9uKQorICAgICAgOiB0ZXN0X2Nhc2VfbmFtZV8obmFtZSksIGNvZGVfbG9j
YXRpb25fKGNvZGVfbG9jYXRpb24pIHt9CiAKICAgLy8gVGVzdCBjYXNlIGJhc2UgbmFtZSBmb3Ig
ZGlzcGxheSBwdXJwb3Nlcy4KLSAgdmlydHVhbCBjb25zdCBTdHJpbmcmIEdldFRlc3RDYXNlTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIHRlc3RfY2FzZV9uYW1lXzsgfQorICB2aXJ0dWFsIGNvbnN0IHN0
ZDo6c3RyaW5nJiBHZXRUZXN0Q2FzZU5hbWUoKSBjb25zdCB7IHJldHVybiB0ZXN0X2Nhc2VfbmFt
ZV87IH0KICAgLy8gVGVzdCBjYXNlIGlkIHRvIHZlcmlmeSBpZGVudGl0eS4KICAgdmlydHVhbCBU
eXBlSWQgR2V0VGVzdENhc2VUeXBlSWQoKSBjb25zdCB7IHJldHVybiBHZXRUeXBlSWQ8VGVzdENh
c2U+KCk7IH0KICAgLy8gVEVTVF9QIG1hY3JvIHVzZXMgQWRkVGVzdFBhdHRlcm4oKSB0byByZWNv
cmQgaW5mb3JtYXRpb24KQEAgLTQ3MSwxMSArNTI1LDEyIEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRU
ZXN0Q2FzZUluZm8gOiBwdWJsaWMgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UgewogICB9
CiAgIC8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIG1hY3JvIHVzZXMgQWRkR2VuZXJhdG9yKCkg
dG8gcmVjb3JkIGluZm9ybWF0aW9uCiAgIC8vIGFib3V0IGEgZ2VuZXJhdG9yLgotICBpbnQgQWRk
VGVzdENhc2VJbnN0YW50aWF0aW9uKGNvbnN0IGNoYXIqIGluc3RhbnRpYXRpb25fbmFtZSwKKyAg
aW50IEFkZFRlc3RDYXNlSW5zdGFudGlhdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgaW5zdGFudGlh
dGlvbl9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvckNyZWF0
aW9uRnVuYyogZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiAvKiBmaWxlICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKiBsaW5l
ICovKSB7Ci0gICAgaW5zdGFudGlhdGlvbnNfLnB1c2hfYmFjayg6OnN0ZDo6bWFrZV9wYWlyKGlu
c3RhbnRpYXRpb25fbmFtZSwgZnVuYykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBhcmFtTmFtZUdlbmVyYXRvckZ1bmMqIG5hbWVfZnVuYywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSkgeworICAgIGluc3RhbnRpYXRp
b25zXy5wdXNoX2JhY2soCisgICAgICAgIEluc3RhbnRpYXRpb25JbmZvKGluc3RhbnRpYXRpb25f
bmFtZSwgZnVuYywgbmFtZV9mdW5jLCBmaWxlLCBsaW5lKSk7CiAgICAgcmV0dXJuIDA7ICAvLyBS
ZXR1cm4gdmFsdWUgdXNlZCBvbmx5IHRvIHJ1biB0aGlzIG1ldGhvZCBpbiBuYW1lc3BhY2Ugc2Nv
cGUuCiAgIH0KICAgLy8gVW5pdFRlc3QgY2xhc3MgaW52b2tlcyB0aGlzIG1ldGhvZCB0byByZWdp
c3RlciB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZQpAQCAtNDkwLDI2ICs1NDUsNDUgQEAgY2xhc3Mg
UGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbyA6IHB1YmxpYyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJ
bmZvQmFzZSB7CiAgICAgICBmb3IgKHR5cGVuYW1lIEluc3RhbnRpYXRpb25Db250YWluZXI6Oml0
ZXJhdG9yIGdlbl9pdCA9CiAgICAgICAgICAgICAgICBpbnN0YW50aWF0aW9uc18uYmVnaW4oKTsg
Z2VuX2l0ICE9IGluc3RhbnRpYXRpb25zXy5lbmQoKTsKICAgICAgICAgICAgICAgICsrZ2VuX2l0
KSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgaW5zdGFudGlhdGlvbl9uYW1lID0gZ2VuX2l0LT5m
aXJzdDsKLSAgICAgICAgUGFyYW1HZW5lcmF0b3I8UGFyYW1UeXBlPiBnZW5lcmF0b3IoKCpnZW5f
aXQtPnNlY29uZCkoKSk7CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnN0YW50aWF0aW9u
X25hbWUgPSBnZW5faXQtPm5hbWU7CisgICAgICAgIFBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT4g
Z2VuZXJhdG9yKCgqZ2VuX2l0LT5nZW5lcmF0b3IpKCkpOworICAgICAgICBQYXJhbU5hbWVHZW5l
cmF0b3JGdW5jKiBuYW1lX2Z1bmMgPSBnZW5faXQtPm5hbWVfZnVuYzsKKyAgICAgICAgY29uc3Qg
Y2hhciogZmlsZSA9IGdlbl9pdC0+ZmlsZTsKKyAgICAgICAgaW50IGxpbmUgPSBnZW5faXQtPmxp
bmU7CiAKLSAgICAgICAgTWVzc2FnZSB0ZXN0X2Nhc2VfbmFtZV9zdHJlYW07CisgICAgICAgIHN0
ZDo6c3RyaW5nIHRlc3RfY2FzZV9uYW1lOwogICAgICAgICBpZiAoICFpbnN0YW50aWF0aW9uX25h
bWUuZW1wdHkoKSApCi0gICAgICAgICAgdGVzdF9jYXNlX25hbWVfc3RyZWFtIDw8IGluc3RhbnRp
YXRpb25fbmFtZS5jX3N0cigpIDw8ICIvIjsKLSAgICAgICAgdGVzdF9jYXNlX25hbWVfc3RyZWFt
IDw8IHRlc3RfaW5mby0+dGVzdF9jYXNlX2Jhc2VfbmFtZS5jX3N0cigpOworICAgICAgICAgIHRl
c3RfY2FzZV9uYW1lID0gaW5zdGFudGlhdGlvbl9uYW1lICsgIi8iOworICAgICAgICB0ZXN0X2Nh
c2VfbmFtZSArPSB0ZXN0X2luZm8tPnRlc3RfY2FzZV9iYXNlX25hbWU7CiAKLSAgICAgICAgaW50
IGkgPSAwOworICAgICAgICBzaXplX3QgaSA9IDA7CisgICAgICAgIHN0ZDo6c2V0PHN0ZDo6c3Ry
aW5nPiB0ZXN0X3BhcmFtX25hbWVzOwogICAgICAgICBmb3IgKHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFBhcmFtVHlwZT46Oml0ZXJhdG9yIHBhcmFtX2l0ID0KICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmJlZ2luKCk7CiAgICAgICAgICAgICAgcGFyYW1faXQgIT0gZ2VuZXJhdG9yLmVuZCgp
OyArK3BhcmFtX2l0LCArK2kpIHsKICAgICAgICAgICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07
Ci0gICAgICAgICAgdGVzdF9uYW1lX3N0cmVhbSA8PCB0ZXN0X2luZm8tPnRlc3RfYmFzZV9uYW1l
LmNfc3RyKCkgPDwgIi8iIDw8IGk7Ci0gICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TWFr
ZUFuZFJlZ2lzdGVyVGVzdEluZm8oCi0gICAgICAgICAgICAgIHRlc3RfY2FzZV9uYW1lX3N0cmVh
bS5HZXRTdHJpbmcoKS5jX3N0cigpLAorCisgICAgICAgICAgc3RkOjpzdHJpbmcgcGFyYW1fbmFt
ZSA9IG5hbWVfZnVuYygKKyAgICAgICAgICAgICAgVGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+KCpw
YXJhbV9pdCwgaSkpOworCisgICAgICAgICAgR1RFU1RfQ0hFQ0tfKElzVmFsaWRQYXJhbU5hbWUo
cGFyYW1fbmFtZSkpCisgICAgICAgICAgICAgIDw8ICJQYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSAn
IiA8PCBwYXJhbV9uYW1lCisgICAgICAgICAgICAgIDw8ICInIGlzIGludmFsaWQsIGluICIgPDwg
ZmlsZQorICAgICAgICAgICAgICA8PCAiIGxpbmUgIiA8PCBsaW5lIDw8IHN0ZDo6ZW5kbDsKKwor
ICAgICAgICAgIEdURVNUX0NIRUNLXyh0ZXN0X3BhcmFtX25hbWVzLmNvdW50KHBhcmFtX25hbWUp
ID09IDApCisgICAgICAgICAgICAgIDw8ICJEdXBsaWNhdGUgcGFyYW1ldGVyaXplZCB0ZXN0IG5h
bWUgJyIgPDwgcGFyYW1fbmFtZQorICAgICAgICAgICAgICA8PCAiJywgaW4gIiA8PCBmaWxlIDw8
ICIgbGluZSAiIDw8IGxpbmUgPDwgc3RkOjplbmRsOworCisgICAgICAgICAgdGVzdF9wYXJhbV9u
YW1lcy5pbnNlcnQocGFyYW1fbmFtZSk7CisKKyAgICAgICAgICB0ZXN0X25hbWVfc3RyZWFtIDw8
IHRlc3RfaW5mby0+dGVzdF9iYXNlX25hbWUgPDwgIi8iIDw8IHBhcmFtX25hbWU7CisgICAgICAg
ICAgTWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8oCisgICAgICAgICAgICAgIHRlc3RfY2FzZV9uYW1l
LmNfc3RyKCksCiAgICAgICAgICAgICAgIHRlc3RfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19z
dHIoKSwKLSAgICAgICAgICAgICAgIiIsICAvLyB0ZXN0X2Nhc2VfY29tbWVudAotICAgICAgICAg
ICAgICAiIiwgIC8vIGNvbW1lbnQ7IFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IHByb3ZpZGUgcGFy
YW1ldGVyIHZhbHVlCi0gICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVwcmVzZW50YXRpb24uCisgICAgICAgICAgICAgIE5VTEwsICAvLyBObyB0
eXBlIHBhcmFtZXRlci4KKyAgICAgICAgICAgICAgUHJpbnRUb1N0cmluZygqcGFyYW1faXQpLmNf
c3RyKCksCisgICAgICAgICAgICAgIGNvZGVfbG9jYXRpb25fLAogICAgICAgICAgICAgICBHZXRU
ZXN0Q2FzZVR5cGVJZCgpLAogICAgICAgICAgICAgICBUZXN0Q2FzZTo6U2V0VXBUZXN0Q2FzZSwK
ICAgICAgICAgICAgICAgVGVzdENhc2U6OlRlYXJEb3duVGVzdENhc2UsCkBAIC01MzAsMTcgKzYw
NCw1MCBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvIDogcHVibGljIFBhcmFtZXRl
cml6ZWRUZXN0Q2FzZUluZm9CYXNlIHsKICAgICAgICAgdGVzdF9iYXNlX25hbWUoYV90ZXN0X2Jh
c2VfbmFtZSksCiAgICAgICAgIHRlc3RfbWV0YV9mYWN0b3J5KGFfdGVzdF9tZXRhX2ZhY3Rvcnkp
IHt9CiAKLSAgICBjb25zdCBTdHJpbmcgdGVzdF9jYXNlX2Jhc2VfbmFtZTsKLSAgICBjb25zdCBT
dHJpbmcgdGVzdF9iYXNlX25hbWU7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdF9jYXNlX2Jh
c2VfbmFtZTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0X2Jhc2VfbmFtZTsKICAgICBjb25z
dCBzY29wZWRfcHRyPFRlc3RNZXRhRmFjdG9yeUJhc2U8UGFyYW1UeXBlPiA+IHRlc3RfbWV0YV9m
YWN0b3J5OwogICB9OwogICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8bGlua2VkX3B0cjxUZXN0SW5m
bz4gPiBUZXN0SW5mb0NvbnRhaW5lcjsKLSAgLy8gS2VlcHMgcGFpcnMgb2YgPEluc3RhbnRpYXRp
b24gbmFtZSwgU2VxdWVuY2UgZ2VuZXJhdG9yIGNyZWF0aW9uIGZ1bmN0aW9uPgotICAvLyByZWNl
aXZlZCBmcm9tIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIG1hY3Jvcy4KLSAgdHlwZWRlZiA6OnN0
ZDo6dmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIEdlbmVyYXRvckNyZWF0aW9uRnVuYyo+ID4KLSAg
ICAgIEluc3RhbnRpYXRpb25Db250YWluZXI7CisgIC8vIFJlY29yZHMgZGF0YSByZWNlaXZlZCBm
cm9tIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIG1hY3JvczoKKyAgLy8gIDxJbnN0YW50aWF0aW9u
IG5hbWUsIFNlcXVlbmNlIGdlbmVyYXRvciBjcmVhdGlvbiBmdW5jdGlvbiwKKyAgLy8gICAgIE5h
bWUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBTb3VyY2UgZmlsZSwgU291cmNlIGxpbmU+CisgIHN0cnVj
dCBJbnN0YW50aWF0aW9uSW5mbyB7CisgICAgICBJbnN0YW50aWF0aW9uSW5mbyhjb25zdCBzdGQ6
OnN0cmluZyAmbmFtZV9pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvckNyZWF0
aW9uRnVuYyogZ2VuZXJhdG9yX2luLAorICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1OYW1l
R2VuZXJhdG9yRnVuYyogbmFtZV9mdW5jX2luLAorICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogZmlsZV9pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lX2luKQor
ICAgICAgICAgIDogbmFtZShuYW1lX2luKSwKKyAgICAgICAgICAgIGdlbmVyYXRvcihnZW5lcmF0
b3JfaW4pLAorICAgICAgICAgICAgbmFtZV9mdW5jKG5hbWVfZnVuY19pbiksCisgICAgICAgICAg
ICBmaWxlKGZpbGVfaW4pLAorICAgICAgICAgICAgbGluZShsaW5lX2luKSB7fQorCisgICAgICBz
dGQ6OnN0cmluZyBuYW1lOworICAgICAgR2VuZXJhdG9yQ3JlYXRpb25GdW5jKiBnZW5lcmF0b3I7
CisgICAgICBQYXJhbU5hbWVHZW5lcmF0b3JGdW5jKiBuYW1lX2Z1bmM7CisgICAgICBjb25zdCBj
aGFyKiBmaWxlOworICAgICAgaW50IGxpbmU7CisgIH07CisgIHR5cGVkZWYgOjpzdGQ6OnZlY3Rv
cjxJbnN0YW50aWF0aW9uSW5mbz4gSW5zdGFudGlhdGlvbkNvbnRhaW5lcjsKIAotICBjb25zdCBT
dHJpbmcgdGVzdF9jYXNlX25hbWVfOworICBzdGF0aWMgYm9vbCBJc1ZhbGlkUGFyYW1OYW1lKGNv
bnN0IHN0ZDo6c3RyaW5nJiBuYW1lKSB7CisgICAgLy8gQ2hlY2sgZm9yIGVtcHR5IHN0cmluZwor
ICAgIGlmIChuYW1lLmVtcHR5KCkpCisgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBDaGVj
ayBmb3IgaW52YWxpZCBjaGFyYWN0ZXJzCisgICAgZm9yIChzdGQ6OnN0cmluZzo6c2l6ZV90eXBl
IGluZGV4ID0gMDsgaW5kZXggPCBuYW1lLnNpemUoKTsgKytpbmRleCkgeworICAgICAgaWYgKCFp
c2FsbnVtKG5hbWVbaW5kZXhdKSAmJiBuYW1lW2luZGV4XSAhPSAnXycpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIGNvbnN0IHN0ZDo6
c3RyaW5nIHRlc3RfY2FzZV9uYW1lXzsKKyAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb25fOwog
ICBUZXN0SW5mb0NvbnRhaW5lciB0ZXN0c187CiAgIEluc3RhbnRpYXRpb25Db250YWluZXIgaW5z
dGFudGlhdGlvbnNfOwogCkBAIC01NjgsOCArNjc1LDcgQEAgY2xhc3MgUGFyYW1ldGVyaXplZFRl
c3RDYXNlUmVnaXN0cnkgewogICB0ZW1wbGF0ZSA8Y2xhc3MgVGVzdENhc2U+CiAgIFBhcmFtZXRl
cml6ZWRUZXN0Q2FzZUluZm88VGVzdENhc2U+KiBHZXRUZXN0Q2FzZVBhdHRlcm5Ib2xkZXIoCiAg
ICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgIGNvbnN0IGNoYXIqIGZpbGUs
Ci0gICAgICBpbnQgbGluZSkgeworICAgICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24pIHsK
ICAgICBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvPFRlc3RDYXNlPiogdHlwZWRfdGVzdF9pbmZv
ID0gTlVMTDsKICAgICBmb3IgKFRlc3RDYXNlSW5mb0NvbnRhaW5lcjo6aXRlcmF0b3IgaXQgPSB0
ZXN0X2Nhc2VfaW5mb3NfLmJlZ2luKCk7CiAgICAgICAgICBpdCAhPSB0ZXN0X2Nhc2VfaW5mb3Nf
LmVuZCgpOyArK2l0KSB7CkBAIC01NzgsOCArNjg0LDggQEAgY2xhc3MgUGFyYW1ldGVyaXplZFRl
c3RDYXNlUmVnaXN0cnkgewogICAgICAgICAgIC8vIENvbXBsYWluIGFib3V0IGluY29ycmVjdCB1
c2FnZSBvZiBHb29nbGUgVGVzdCBmYWNpbGl0aWVzCiAgICAgICAgICAgLy8gYW5kIHRlcm1pbmF0
ZSB0aGUgcHJvZ3JhbSBzaW5jZSB3ZSBjYW5ub3QgZ3VhcmFudHkgY29ycmVjdAogICAgICAgICAg
IC8vIHRlc3QgY2FzZSBzZXR1cCBhbmQgdGVhci1kb3duIGluIHRoaXMgY2FzZS4KLSAgICAgICAg
ICBSZXBvcnRJbnZhbGlkVGVzdENhc2VUeXBlKHRlc3RfY2FzZV9uYW1lLCAgZmlsZSwgbGluZSk7
Ci0gICAgICAgICAgYWJvcnQoKTsKKyAgICAgICAgICBSZXBvcnRJbnZhbGlkVGVzdENhc2VUeXBl
KHRlc3RfY2FzZV9uYW1lLCBjb2RlX2xvY2F0aW9uKTsKKyAgICAgICAgICBwb3NpeDo6QWJvcnQo
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGFyZSBz
dXJlIHRoYXQgdGhlIG9iamVjdCB3ZSBmb3VuZCBpcyBvZiB0aGUgc2FtZQogICAgICAgICAgIC8v
IHR5cGUgd2UgYXJlIGxvb2tpbmcgZm9yLCBzbyB3ZSBkb3duY2FzdCBpdCB0byB0aGF0IHR5cGUK
QEAgLTU5MSw3ICs2OTcsOCBAQCBjbGFzcyBQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSB7
CiAgICAgICB9CiAgICAgfQogICAgIGlmICh0eXBlZF90ZXN0X2luZm8gPT0gTlVMTCkgewotICAg
ICAgdHlwZWRfdGVzdF9pbmZvID0gbmV3IFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm88VGVzdENh
c2U+KHRlc3RfY2FzZV9uYW1lKTsKKyAgICAgIHR5cGVkX3Rlc3RfaW5mbyA9IG5ldyBQYXJhbWV0
ZXJpemVkVGVzdENhc2VJbmZvPFRlc3RDYXNlPigKKyAgICAgICAgICB0ZXN0X2Nhc2VfbmFtZSwg
Y29kZV9sb2NhdGlvbik7CiAgICAgICB0ZXN0X2Nhc2VfaW5mb3NfLnB1c2hfYmFjayh0eXBlZF90
ZXN0X2luZm8pOwogICAgIH0KICAgICByZXR1cm4gdHlwZWRfdGVzdF9pbmZvOwpAQCAtNjE0LDYg
KzcyMSw0IEBAIGNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IHsKIH0gIC8vIG5h
bWVzcGFjZSBpbnRlcm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIAotI2VuZGlmICAvLyAg
R1RFU1RfSEFTX1BBUkFNX1RFU1QKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lO
VEVSTkFMX0dURVNUX1BBUkFNX1VUSUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC1hcmNoLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY4MzcwMGUwNmQ5OGMzNmY2NDg3MjkxYzNmOTMxODA3YWYzNTNmNzQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oCkBAIC0wLDAgKzEsMTAwIEBACisvLyBDb3B5cmlnaHQg
MjAxNSwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4K
Ky8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8gVGhlIEdvb2dsZSBDKysgVGVz
dGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8KKy8vIFRoaXMgaGVh
ZGVyIGZpbGUgZGVmaW5lcyB0aGUgR1RFU1RfT1NfKiBtYWNyby4KKy8vIEl0IGlzIHNlcGFyYXRl
IGZyb20gZ3Rlc3QtcG9ydC5oIHNvIHRoYXQgY3VzdG9tL2d0ZXN0LXBvcnQuaCBjYW4gaW5jbHVk
ZSBpdC4KKworI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRf
QVJDSF9IXworI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRf
QVJDSF9IXworCisvLyBEZXRlcm1pbmVzIHRoZSBwbGF0Zm9ybSBvbiB3aGljaCBHb29nbGUgVGVz
dCBpcyBjb21waWxlZC4KKyNpZmRlZiBfX0NZR1dJTl9fCisjIGRlZmluZSBHVEVTVF9PU19DWUdX
SU4gMQorI2VsaWYgZGVmaW5lZCBfX1NZTUJJQU4zMl9fCisjIGRlZmluZSBHVEVTVF9PU19TWU1C
SUFOIDEKKyNlbGlmIGRlZmluZWQgX1dJTjMyCisjIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTIDEK
KyMgaWZkZWYgX1dJTjMyX1dDRQorIyAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIDEK
KyMgZWxpZiBkZWZpbmVkKF9fTUlOR1dfXykgfHwgZGVmaW5lZChfX01JTkdXMzJfXykKKyMgIGRl
ZmluZSBHVEVTVF9PU19XSU5ET1dTX01JTkdXIDEKKyMgZWxpZiBkZWZpbmVkKFdJTkFQSV9GQU1J
TFkpCisjICBpbmNsdWRlIDx3aW5hcGlmYW1pbHkuaD4KKyMgIGlmIFdJTkFQSV9GQU1JTFlfUEFS
VElUSU9OKFdJTkFQSV9QQVJUSVRJT05fREVTS1RPUCkKKyMgICBkZWZpbmUgR1RFU1RfT1NfV0lO
RE9XU19ERVNLVE9QIDEKKyMgIGVsaWYgV0lOQVBJX0ZBTUlMWV9QQVJUSVRJT04oV0lOQVBJX1BB
UlRJVElPTl9QSE9ORV9BUFApCisjICAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfUEhPTkUgMQor
IyAgZWxpZiBXSU5BUElfRkFNSUxZX1BBUlRJVElPTihXSU5BUElfUEFSVElUSU9OX0FQUCkKKyMg
ICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19SVCAxCisjICBlbGlmIFdJTkFQSV9GQU1JTFlfUEFS
VElUSU9OKFdJTkFQSV9QQVJUSVRJT05fVFZfVElUTEUpCisjICAgZGVmaW5lIEdURVNUX09TX1dJ
TkRPV1NfUEhPTkUgMQorIyAgIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTX1RWX1RJVExFIDEKKyMg
IGVsc2UKKyAgICAvLyBXSU5BUElfRkFNSUxZIGRlZmluZWQgYnV0IG5vIGtub3duIHBhcnRpdGlv
biBtYXRjaGVkLgorICAgIC8vIERlZmF1bHQgdG8gZGVza3RvcC4KKyMgICBkZWZpbmUgR1RFU1Rf
T1NfV0lORE9XU19ERVNLVE9QIDEKKyMgIGVuZGlmCisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9P
U19XSU5ET1dTX0RFU0tUT1AgMQorIyBlbmRpZiAgLy8gX1dJTjMyX1dDRQorI2VsaWYgZGVmaW5l
ZCBfX0FQUExFX18KKyMgZGVmaW5lIEdURVNUX09TX01BQyAxCisjIGlmIFRBUkdFVF9PU19JUEhP
TkUKKyMgIGRlZmluZSBHVEVTVF9PU19JT1MgMQorIyBlbmRpZgorI2VsaWYgZGVmaW5lZCBfX0Zy
ZWVCU0RfXworIyBkZWZpbmUgR1RFU1RfT1NfRlJFRUJTRCAxCisjZWxpZiBkZWZpbmVkIF9fRnVj
aHNpYV9fCisjIGRlZmluZSBHVEVTVF9PU19GVUNIU0lBIDEKKyNlbGlmIGRlZmluZWQgX19saW51
eF9fCisjIGRlZmluZSBHVEVTVF9PU19MSU5VWCAxCisjIGlmIGRlZmluZWQgX19BTkRST0lEX18K
KyMgIGRlZmluZSBHVEVTVF9PU19MSU5VWF9BTkRST0lEIDEKKyMgZW5kaWYKKyNlbGlmIGRlZmlu
ZWQgX19NVlNfXworIyBkZWZpbmUgR1RFU1RfT1NfWk9TIDEKKyNlbGlmIGRlZmluZWQoX19zdW4p
ICYmIGRlZmluZWQoX19TVlI0KQorIyBkZWZpbmUgR1RFU1RfT1NfU09MQVJJUyAxCisjZWxpZiBk
ZWZpbmVkKF9BSVgpCisjIGRlZmluZSBHVEVTVF9PU19BSVggMQorI2VsaWYgZGVmaW5lZChfX2hw
dXgpCisjIGRlZmluZSBHVEVTVF9PU19IUFVYIDEKKyNlbGlmIGRlZmluZWQgX19uYXRpdmVfY2xp
ZW50X18KKyMgZGVmaW5lIEdURVNUX09TX05BQ0wgMQorI2VsaWYgZGVmaW5lZCBfX05ldEJTRF9f
CisjIGRlZmluZSBHVEVTVF9PU19ORVRCU0QgMQorI2VsaWYgZGVmaW5lZCBfX09wZW5CU0RfXwor
IyBkZWZpbmUgR1RFU1RfT1NfT1BFTkJTRCAxCisjZWxpZiBkZWZpbmVkIF9fUU5YX18KKyMgZGVm
aW5lIEdURVNUX09TX1FOWCAxCisjZW5kaWYgIC8vIF9fQ1lHV0lOX18KKworI2VuZGlmICAvLyBH
VEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRfQVJDSF9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1w
b3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaAppbmRleCBmOGJlODA5MjZmODk4N2QzYzk1ODI4NjE2MDIwMTBiZmY2ZTY0ZDZk
Li43ODY0OTdkODU0Yzk3ZjFiNmFiOTM3MmEyNDFjMWZhMTU1YTMwYTU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaApAQCAtMjcsMjkgKzI3LDU3IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAvLwotLy8gQXV0aG9yczogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8v
CiAvLyBMb3ctbGV2ZWwgdHlwZXMgYW5kIHV0aWxpdGllcyBmb3IgcG9ydGluZyBHb29nbGUgVGVz
dCB0byB2YXJpb3VzCi0vLyBwbGF0Zm9ybXMuICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3
aXRob3V0IG5vdGljZS4gIERPIE5PVCBVU0UKLS8vIFRIRU0gSU4gVVNFUiBDT0RFLgorLy8gcGxh
dGZvcm1zLiAgQWxsIG1hY3JvcyBlbmRpbmcgd2l0aCBfIGFuZCBzeW1ib2xzIGRlZmluZWQgaW4g
YW4KKy8vIGludGVybmFsIG5hbWVzcGFjZSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBu
b3RpY2UuICBDb2RlCisvLyBvdXRzaWRlIEdvb2dsZSBUZXN0IE1VU1QgTk9UIFVTRSBUSEVNIERJ
UkVDVExZLiAgTWFjcm9zIHRoYXQgZG9uJ3QKKy8vIGVuZCB3aXRoIF8gYXJlIHBhcnQgb2YgR29v
Z2xlIFRlc3QncyBwdWJsaWMgQVBJIGFuZCBjYW4gYmUgdXNlZCBieQorLy8gY29kZSBvdXRzaWRl
IEdvb2dsZSBUZXN0LgorLy8KKy8vIFRoaXMgZmlsZSBpcyBmdW5kYW1lbnRhbCB0byBHb29nbGUg
VGVzdC4gIEFsbCBvdGhlciBHb29nbGUgVGVzdCBzb3VyY2UKKy8vIGZpbGVzIGFyZSBleHBlY3Rl
ZCB0byAjaW5jbHVkZSB0aGlzLiAgVGhlcmVmb3JlLCBpdCBjYW5ub3QgI2luY2x1ZGUKKy8vIGFu
eSBvdGhlciBHb29nbGUgVGVzdCBoZWFkZXIuCisKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5P
VCBERUxFVEUKIAogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BP
UlRfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QT1JUX0hf
CiAKLS8vIFRoZSB1c2VyIGNhbiBkZWZpbmUgdGhlIGZvbGxvd2luZyBtYWNyb3MgaW4gdGhlIGJ1
aWxkIHNjcmlwdCB0bwotLy8gY29udHJvbCBHb29nbGUgVGVzdCdzIGJlaGF2aW9yLiAgSWYgdGhl
IHVzZXIgZG9lc24ndCBkZWZpbmUgYSBtYWNybwotLy8gaW4gdGhpcyBsaXN0LCBHb29nbGUgVGVz
dCB3aWxsIGRlZmluZSBpdC4KKy8vIEVudmlyb25tZW50LWRlc2NyaWJpbmcgbWFjcm9zCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEdvb2dsZSBUZXN0IGNhbiBiZSB1
c2VkIGluIG1hbnkgZGlmZmVyZW50IGVudmlyb25tZW50cy4gIE1hY3JvcyBpbgorLy8gdGhpcyBz
ZWN0aW9uIHRlbGwgR29vZ2xlIFRlc3Qgd2hhdCBraW5kIG9mIGVudmlyb25tZW50IGl0IGlzIGJl
aW5nCisvLyB1c2VkIGluLCBzdWNoIHRoYXQgR29vZ2xlIFRlc3QgY2FuIHByb3ZpZGUgZW52aXJv
bm1lbnQtc3BlY2lmaWMKKy8vIGZlYXR1cmVzIGFuZCBpbXBsZW1lbnRhdGlvbnMuCisvLworLy8g
R29vZ2xlIFRlc3QgdHJpZXMgdG8gYXV0b21hdGljYWxseSBkZXRlY3QgdGhlIHByb3BlcnRpZXMg
b2YgaXRzCisvLyBlbnZpcm9ubWVudCwgc28gdXNlcnMgdXN1YWxseSBkb24ndCBuZWVkIHRvIHdv
cnJ5IGFib3V0IHRoZXNlCisvLyBtYWNyb3MuICBIb3dldmVyLCB0aGUgYXV0b21hdGljIGRldGVj
dGlvbiBpcyBub3QgcGVyZmVjdC4KKy8vIFNvbWV0aW1lcyBpdCdzIG5lY2Vzc2FyeSBmb3IgYSB1
c2VyIHRvIGRlZmluZSBzb21lIG9mIHRoZSBmb2xsb3dpbmcKKy8vIG1hY3JvcyBpbiB0aGUgYnVp
bGQgc2NyaXB0IHRvIG92ZXJyaWRlIEdvb2dsZSBUZXN0J3MgZGVjaXNpb25zLgorLy8KKy8vIElm
IHRoZSB1c2VyIGRvZXNuJ3QgZGVmaW5lIGEgbWFjcm8gaW4gdGhlIGxpc3QsIEdvb2dsZSBUZXN0
IHdpbGwKKy8vIHByb3ZpZGUgYSBkZWZhdWx0IGRlZmluaXRpb24uICBBZnRlciB0aGlzIGhlYWRl
ciBpcyAjaW5jbHVkZWQsIGFsbAorLy8gbWFjcm9zIGluIHRoaXMgbGlzdCB3aWxsIGJlIGRlZmlu
ZWQgdG8gZWl0aGVyIDEgb3IgMC4KKy8vCisvLyBOb3RlcyB0byBtYWludGFpbmVyczoKKy8vICAg
LSBFYWNoIG1hY3JvIGhlcmUgaXMgYSB1c2VyLXR3ZWFrYWJsZSBrbm9iOyBkbyBub3QgZ3JvdyB0
aGUgbGlzdAorLy8gICAgIGxpZ2h0bHkuCisvLyAgIC0gVXNlICNpZiB0byBrZXkgb2ZmIHRoZXNl
IG1hY3Jvcy4gIERvbid0IHVzZSAjaWZkZWYgb3IgIiNpZgorLy8gICAgIGRlZmluZWQoLi4uKSIs
IHdoaWNoIHdpbGwgbm90IHdvcmsgYXMgdGhlc2UgbWFjcm9zIGFyZSBBTFdBWVMKKy8vICAgICBk
ZWZpbmVkLgogLy8KIC8vICAgR1RFU1RfSEFTX0NMT05FICAgICAgICAgIC0gRGVmaW5lIGl0IHRv
IDEvMCB0byBpbmRpY2F0ZSB0aGF0IGNsb25lKDIpCiAvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlzL2lzbid0IGF2YWlsYWJsZS4KIC8vICAgR1RFU1RfSEFTX0VYQ0VQVElPTlMgICAg
IC0gRGVmaW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB0aGF0IGV4Y2VwdGlvbnMKIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGVuYWJsZWQuCiAvLyAgIEdURVNUX0hBU19HTE9C
QUxfU1RSSU5HICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA6OnN0cmluZwot
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcy9pc24ndCBhdmFpbGFibGUgKHNvbWUg
c3lzdGVtcyBkZWZpbmUKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdHJpbmcs
IHdoaWNoIGlzIGRpZmZlcmVudCB0byBzdGQ6OnN0cmluZykuCi0vLyAgIEdURVNUX0hBU19HTE9C
QUxfV1NUUklORyAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA6OnN0cmluZwot
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcy9pc24ndCBhdmFpbGFibGUgKHNvbWUg
c3lzdGVtcyBkZWZpbmUKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjp3c3RyaW5n
LCB3aGljaCBpcyBkaWZmZXJlbnQgdG8gc3RkOjp3c3RyaW5nKS4KKy8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlCisvLyAgIEdURVNUX0hBU19HTE9CQUxf
V1NUUklORyAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA6OndzdHJpbmcKKy8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlCisvLyAgIEdU
RVNUX0hBU19QT1NJWF9SRSAgICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhh
dCBQT1NJWCByZWd1bGFyCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Np
b25zIGFyZS9hcmVuJ3QgYXZhaWxhYmxlLgogLy8gICBHVEVTVF9IQVNfUFRIUkVBRCAgICAgICAg
LSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgPHB0aHJlYWQuaD4KIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaXMvaXNuJ3QgYXZhaWxhYmxlLgogLy8gICBHVEVTVF9I
QVNfUlRUSSAgICAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgUlRU
SSBpcy9pc24ndApAQCAtNjIsMTAgKzkwLDE2IEBACiAvLyAgIEdURVNUX0hBU19TRUggICAgICAg
ICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUKIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIgc3VwcG9ydHMgTWljcm9zb2Z0J3MgIlN0
cnVjdHVyZWQKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uIEhhbmRs
aW5nIi4KKy8vICAgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgorLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHdoZXRoZXIgdGhl
CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtIHN1cHBvcnRzIEkvTyBz
dHJlYW0gcmVkaXJlY3Rpb24gdXNpbmcKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZHVwKCkgYW5kIGR1cDIoKS4KIC8vICAgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgIC0gRGVmaW5l
IGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB3aGV0aGVyIEdvb2dsZQogLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXN0J3Mgb3duIHRyMSB0dXBsZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQg
YmUKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZC4gIFVudXNlZCB3aGVuIHRo
ZSB1c2VyIHNldHMKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfSEFTX1RS
MV9UVVBMRSB0byAwLgorLy8gICBHVEVTVF9MQU5HX0NYWDExICAgICAgICAgLSBEZWZpbmUgaXQg
dG8gMS8wIHRvIGluZGljYXRlIHRoYXQgR29vZ2xlIFRlc3QKKy8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXMgYnVpbGRpbmcgaW4gQysrMTEvQysrOTggbW9kZS4KIC8vICAgR1RFU1Rf
TElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAt
IERlZmluZSB0byAxIHdoZW4gY29tcGlsaW5nIHRlc3RzIHRoYXQgdXNlCiAvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdvb2dsZSBUZXN0IGFzIGEgc2hhcmVkIGxpYnJhcnkgKGtub3du
IGFzCkBAIC03MywyMyArMTA3LDQzIEBACiAvLyAgIEdURVNUX0NSRUFURV9TSEFSRURfTElCUkFS
WQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBEZWZpbmUgdG8gMSB3aGVuIGNvbXBp
bGluZyBHb29nbGUgVGVzdCBpdHNlbGYKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXMgYSBzaGFyZWQgbGlicmFyeS4KLQotLy8gVGhpcyBoZWFkZXIgZGVmaW5lcyB0aGUgZm9sbG93
aW5nIHV0aWxpdGllczoKKy8vICAgR1RFU1RfREVGQVVMVF9ERUFUSF9URVNUX1NUWUxFCisvLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoZSBkZWZhdWx0IHZhbHVlIG9mIC0tZ3Rlc3Rf
ZGVhdGhfdGVzdF9zdHlsZS4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxl
Z2FjeSBkZWZhdWx0IGhhcyBiZWVuICJmYXN0IiBpbiB0aGUgb3BlbgorLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzb3VyY2UgdmVyc2lvbiBzaW5jZSAyMDA4LiBUaGUgcmVjb21tZW5k
ZWQgdmFsdWUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgInRocmVhZHNhZmUi
LCBhbmQgY2FuIGJlIHNldCBpbgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0
b20vZ3Rlc3QtcG9ydC5oLgorCisvLyBQbGF0Zm9ybS1pbmRpY2F0aW5nIG1hY3JvcworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNYWNyb3MgaW5kaWNhdGluZyB0aGUgcGxh
dGZvcm0gb24gd2hpY2ggR29vZ2xlIFRlc3QgaXMgYmVpbmcgdXNlZAorLy8gKGEgbWFjcm8gaXMg
ZGVmaW5lZCB0byAxIGlmIGNvbXBpbGVkIG9uIHRoZSBnaXZlbiBwbGF0Zm9ybTsKKy8vIG90aGVy
d2lzZSBVTkRFRklORUQgLS0gaXQncyBuZXZlciBkZWZpbmVkIHRvIDAuKS4gIEdvb2dsZSBUZXN0
CisvLyBkZWZpbmVzIHRoZXNlIG1hY3JvcyBhdXRvbWF0aWNhbGx5LiAgQ29kZSBvdXRzaWRlIEdv
b2dsZSBUZXN0IE1VU1QKKy8vIE5PVCBkZWZpbmUgdGhlbS4KIC8vCi0vLyBNYWNyb3MgaW5kaWNh
dGluZyB0aGUgY3VycmVudCBwbGF0Zm9ybSAoZGVmaW5lZCB0byAxIGlmIGNvbXBpbGVkIG9uCi0v
LyB0aGUgZ2l2ZW4gcGxhdGZvcm07IG90aGVyd2lzZSB1bmRlZmluZWQpOgogLy8gICBHVEVTVF9P
U19BSVggICAgICAtIElCTSBBSVgKIC8vICAgR1RFU1RfT1NfQ1lHV0lOICAgLSBDeWd3aW4KLS8v
ICAgR1RFU1RfT1NfTElOVVggICAgLSBMaW51eAogLy8gICBHVEVTVF9PU19GUkVFQlNEICAtIEZy
ZWVCU0QKLS8vICAgR1RFU1RfT1NfSFVSRCAgICAgLSBHTlUvSHVyZAorLy8gICBHVEVTVF9PU19G
VUNIU0lBICAtIEZ1Y2hzaWEKKy8vICAgR1RFU1RfT1NfSFBVWCAgICAgLSBIUC1VWAorLy8gICBH
VEVTVF9PU19MSU5VWCAgICAtIExpbnV4CisvLyAgICAgR1RFU1RfT1NfTElOVVhfQU5EUk9JRCAt
IEdvb2dsZSBBbmRyb2lkCiAvLyAgIEdURVNUX09TX01BQyAgICAgIC0gTWFjIE9TIFgKKy8vICAg
ICBHVEVTVF9PU19JT1MgICAgLSBpT1MKKy8vICAgR1RFU1RfT1NfTkFDTCAgICAgLSBHb29nbGUg
TmF0aXZlIENsaWVudCAoTmFDbCkKKy8vICAgR1RFU1RfT1NfTkVUQlNEICAgLSBOZXRCU0QKKy8v
ICAgR1RFU1RfT1NfT1BFTkJTRCAgLSBPcGVuQlNECisvLyAgIEdURVNUX09TX1FOWCAgICAgIC0g
UU5YCiAvLyAgIEdURVNUX09TX1NPTEFSSVMgIC0gU3VuIFNvbGFyaXMKIC8vICAgR1RFU1RfT1Nf
U1lNQklBTiAgLSBTeW1iaWFuCiAvLyAgIEdURVNUX09TX1dJTkRPV1MgIC0gV2luZG93cyAoRGVz
a3RvcCwgTWluR1csIG9yIE1vYmlsZSkKIC8vICAgICBHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1Ag
IC0gV2luZG93cyBEZXNrdG9wCiAvLyAgICAgR1RFU1RfT1NfV0lORE9XU19NSU5HVyAgICAtIE1p
bkdXCiAvLyAgICAgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgICAtIFdpbmRvd3MgTW9iaWxlCisv
LyAgICAgR1RFU1RfT1NfV0lORE9XU19QSE9ORSAgICAtIFdpbmRvd3MgUGhvbmUKKy8vICAgICBH
VEVTVF9PU19XSU5ET1dTX1JUICAgICAgIC0gV2luZG93cyBTdG9yZSBBcHAvV2luUlQKIC8vICAg
R1RFU1RfT1NfWk9TICAgICAgLSB6L09TCiAvLwogLy8gQW1vbmcgdGhlIHBsYXRmb3JtcywgQ3ln
d2luLCBMaW51eCwgTWF4IE9TIFgsIGFuZCBXaW5kb3dzIGhhdmUgdGhlCkBAIC05OSwyMCArMTUz
LDUwIEBACiAvLyBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20gKHBhdGNoZXMg
Zm9yIGZpeGluZyB0aGVtIGFyZQogLy8gZXZlbiBtb3JlIHdlbGNvbWUhKS4KIC8vCi0vLyBOb3Rl
IHRoYXQgaXQgaXMgcG9zc2libGUgdGhhdCBub25lIG9mIHRoZSBHVEVTVF9PU18qIG1hY3JvcyBh
cmUgZGVmaW5lZC4KKy8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgbm9uZSBvZiB0aGUgR1RFU1RfT1Nf
KiBtYWNyb3MgYXJlIGRlZmluZWQuCisKKy8vIEZlYXR1cmUtaW5kaWNhdGluZyBtYWNyb3MKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNYWNyb3MgaW5kaWNhdGluZyB3aGlj
aCBHb29nbGUgVGVzdCBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlIChhIG1hY3JvCisvLyBpcyBkZWZp
bmVkIHRvIDEgaWYgdGhlIGNvcnJlc3BvbmRpbmcgZmVhdHVyZSBpcyBzdXBwb3J0ZWQ7CisvLyBv
dGhlcndpc2UgVU5ERUZJTkVEIC0tIGl0J3MgbmV2ZXIgZGVmaW5lZCB0byAwLikuICBHb29nbGUg
VGVzdAorLy8gZGVmaW5lcyB0aGVzZSBtYWNyb3MgYXV0b21hdGljYWxseS4gIENvZGUgb3V0c2lk
ZSBHb29nbGUgVGVzdCBNVVNUCisvLyBOT1QgZGVmaW5lIHRoZW0uCisvLworLy8gVGhlc2UgbWFj
cm9zIGFyZSBwdWJsaWMgc28gdGhhdCBwb3J0YWJsZSB0ZXN0cyBjYW4gYmUgd3JpdHRlbi4KKy8v
IFN1Y2ggdGVzdHMgdHlwaWNhbGx5IHN1cnJvdW5kIGNvZGUgdXNpbmcgYSBmZWF0dXJlIHdpdGgg
YW4gI2lmCisvLyB3aGljaCBjb250cm9scyB0aGF0IGNvZGUuICBGb3IgZXhhbXBsZToKKy8vCisv
LyAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKy8vICAgRVhQRUNUX0RFQVRIKERvU29tZXRoaW5n
RGVhZGx5KCkpOworLy8gI2VuZGlmCiAvLwotLy8gTWFjcm9zIGluZGljYXRpbmcgYXZhaWxhYmxl
IEdvb2dsZSBUZXN0IGZlYXR1cmVzIChkZWZpbmVkIHRvIDEgaWYKLS8vIHRoZSBjb3JyZXNwb25k
aW5nIGZlYXR1cmUgaXMgc3VwcG9ydGVkOyBvdGhlcndpc2UgdW5kZWZpbmVkKToKIC8vICAgR1RF
U1RfSEFTX0NPTUJJTkUgICAgICAtIHRoZSBDb21iaW5lKCkgZnVuY3Rpb24gKGZvciB2YWx1ZS1w
YXJhbWV0ZXJpemVkCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cykKIC8vICAg
R1RFU1RfSEFTX0RFQVRIX1RFU1QgICAtIGRlYXRoIHRlc3RzCi0vLyAgIEdURVNUX0hBU19QQVJB
TV9URVNUICAgLSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzCiAvLyAgIEdURVNUX0hBU19UWVBF
RF9URVNUICAgLSB0eXBlZCB0ZXN0cwogLy8gICBHVEVTVF9IQVNfVFlQRURfVEVTVF9QIC0gdHlw
ZS1wYXJhbWV0ZXJpemVkIHRlc3RzCi0vLyAgIEdURVNUX1VTRVNfUE9TSVhfUkUgICAgLSBlbmhh
bmNlZCBQT1NJWCByZWdleCBpcyB1c2VkLgorLy8gICBHVEVTVF9JU19USFJFQURTQUZFICAgIC0g
R29vZ2xlIFRlc3QgaXMgdGhyZWFkLXNhZmUuCisvLyAgIEdPT0dMRVRFU1RfQ00wMDA3IERPIE5P
VCBERUxFVEUKKy8vICAgR1RFU1RfVVNFU19QT1NJWF9SRSAgICAtIGVuaGFuY2VkIFBPU0lYIHJl
Z2V4IGlzIHVzZWQuIERvIG5vdCBjb25mdXNlIHdpdGgKKy8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdURVNUX0hBU19QT1NJWF9SRSAoc2VlIGFib3ZlKSB3aGljaCB1c2VycyBjYW4KKy8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSB0aGVtc2VsdmVzLgogLy8gICBHVEVT
VF9VU0VTX1NJTVBMRV9SRSAgIC0gb3VyIG93biBzaW1wbGUgcmVnZXggaXMgdXNlZDsKLS8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhYm92ZSB0d28gYXJlIG11dHVhbGx5IGV4Y2x1
c2l2ZS4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhYm92ZSBSRVxiKHMpIGFy
ZSBtdXR1YWxseSBleGNsdXNpdmUuCiAvLyAgIEdURVNUX0NBTl9DT01QQVJFX05VTEwgLSBhY2Nl
cHRzIHVudHlwZWQgTlVMTCBpbiBFWFBFQ1RfRVEoKS4KKworLy8gTWlzYyBwdWJsaWMgbWFjcm9z
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyAgIEdURVNUX0ZMQUcoZmxhZ19uYW1lKSAg
LSByZWZlcmVuY2VzIHRoZSB2YXJpYWJsZSBjb3JyZXNwb25kaW5nIHRvCisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGUgZ2l2ZW4gR29vZ2xlIFRlc3QgZmxhZy4KKworLy8gSW50ZXJu
YWwgdXRpbGl0aWVzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBUaGUgZm9sbG93aW5n
IG1hY3JvcyBhbmQgdXRpbGl0aWVzIGFyZSBmb3IgR29vZ2xlIFRlc3QncyBJTlRFUk5BTAorLy8g
dXNlIG9ubHkuICBDb2RlIG91dHNpZGUgR29vZ2xlIFRlc3QgTVVTVCBOT1QgVVNFIFRIRU0gRElS
RUNUTFkuCiAvLwogLy8gTWFjcm9zIGZvciBiYXNpYyBDKysgY29kaW5nOgogLy8gICBHVEVTVF9B
TUJJR1VPVVNfRUxTRV9CTE9DS0VSXyAtIGZvciBkaXNhYmxpbmcgYSBnY2Mgd2FybmluZy4KQEAg
LTEyMSwyNSArMjA1LDM0IEBACiAvLyAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8gICAtIGRpc2Fi
bGVzIG9wZXJhdG9yPS4KIC8vICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyAtIGRp
c2FibGVzIGNvcHkgY3RvciBhbmQgb3BlcmF0b3I9LgogLy8gICBHVEVTVF9NVVNUX1VTRV9SRVNV
TFRfICAgLSBkZWNsYXJlcyB0aGF0IGEgZnVuY3Rpb24ncyByZXN1bHQgbXVzdCBiZSB1c2VkLgor
Ly8gICBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BVU0hfIC0gc3RhcnQgY29kZSBzZWN0
aW9uIHdoZXJlIE1TVkMgQzQxMjcgaXMKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1cHByZXNzZWQgKGNvbnN0YW50IGNvbmRpdGlvbmFsKS4KKy8vICAgR1RFU1Rf
SU5URU5USU9OQUxfQ09OU1RfQ09ORF9QT1BfICAtIGZpbmlzaCBjb2RlIHNlY3Rpb24gd2hlcmUg
TVNWQyBDNDEyNworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMg
c3VwcHJlc3NlZC4KKy8vCisvLyBDKysxMSBmZWF0dXJlIHdyYXBwZXJzOgorLy8KKy8vICAgdGVz
dGluZzo6aW50ZXJuYWw6OmZvcndhcmQgLSBwb3J0YWJpbGl0eSB3cmFwcGVyIGZvciBzdGQ6OmZv
cndhcmQuCisvLyAgIHRlc3Rpbmc6OmludGVybmFsOjptb3ZlICAtIHBvcnRhYmlsaXR5IHdyYXBw
ZXIgZm9yIHN0ZDo6bW92ZS4KIC8vCiAvLyBTeW5jaHJvbml6YXRpb246CiAvLyAgIE11dGV4LCBN
dXRleExvY2ssIFRocmVhZExvY2FsLCBHZXRUaHJlYWRDb3VudCgpCi0vLyAgICAgICAgICAgICAg
ICAgIC0gc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMuCi0vLyAgIEdURVNUX0lTX1RIUkVBRFNB
RkUgLSBkZWZpbmVkIHRvIDEgdG8gaW5kaWNhdGUgdGhhdCB0aGUgYWJvdmUKLS8vICAgICAgICAg
ICAgICAgICAgICAgICAgIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGhhdmUgcmVhbCBpbXBs
ZW1lbnRhdGlvbnMKLS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBHb29nbGUgVGVzdCBp
cyB0aHJlYWQtc2FmZTsgb3IgMCBvdGhlcndpc2UuCisvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAtIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzLgogLy8KIC8vIFRlbXBsYXRlIG1ldGEg
cHJvZ3JhbW1pbmc6CiAvLyAgIGlzX3BvaW50ZXIgICAgIC0gYXMgaW4gVFIxOyBuZWVkZWQgb24g
U3ltYmlhbiBhbmQgSUJNIFhMIEMvQysrIG9ubHkuCisvLyAgIEl0ZXJhdG9yVHJhaXRzIC0gcGFy
dGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBzdGQ6Oml0ZXJhdG9yX3RyYWl0cywgd2hpY2gKKy8vICAg
ICAgICAgICAgICAgICAgICBpcyBub3QgYXZhaWxhYmxlIGluIGxpYkNzdGQgd2hlbiBjb21waWxl
ZCB3aXRoIFN1biBDKysuCiAvLwogLy8gU21hcnQgcG9pbnRlcnM6CiAvLyAgIHNjb3BlZF9wdHIg
ICAgIC0gYXMgaW4gVFIyLgogLy8KIC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnM6CiAvLyAgIFJFICAg
ICAgICAgICAgIC0gYSBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uIGNsYXNzIHVzaW5nIHRoZSBQ
T1NJWAotLy8gICAgICAgICAgICAgICAgICAgIEV4dGVuZGVkIFJlZ3VsYXIgRXhwcmVzc2lvbiBz
eW50YXguICBOb3QgYXZhaWxhYmxlIG9uCi0vLyAgICAgICAgICAgICAgICAgICAgV2luZG93cy4K
LS8vCisvLyAgICAgICAgICAgICAgICAgICAgRXh0ZW5kZWQgUmVndWxhciBFeHByZXNzaW9uIHN5
bnRheCBvbiBVTklYLWxpa2UgcGxhdGZvcm1zCisvLyAgICAgICAgICAgICAgICAgICAgR09PR0xF
VEVTVF9DTTAwMDggRE8gTk9UIERFTEVURQorLy8gICAgICAgICAgICAgICAgICAgIG9yIGEgcmVk
dWNlZCByZWd1bGFyIGV4Y2VwdGlvbiBzeW50YXggb24gb3RoZXIKKy8vICAgICAgICAgICAgICAg
ICAgICBwbGF0Zm9ybXMsIGluY2x1ZGluZyBXaW5kb3dzLgogLy8gTG9nZ2luZzoKIC8vICAgR1RF
U1RfTE9HXygpICAgLSBsb2dzIG1lc3NhZ2VzIGF0IHRoZSBzcGVjaWZpZWQgc2V2ZXJpdHkgbGV2
ZWwuCiAvLyAgIExvZ1RvU3RkZXJyKCkgIC0gZGlyZWN0cyBhbGwgbG9nIG1lc3NhZ2VzIHRvIHN0
ZGVyci4KQEAgLTE2MCwxMCArMjUzLDkgQEAKIC8vICAgQmlnZ2VzdEludCAgICAgLSB0aGUgYmln
Z2VzdCBzaWduZWQgaW50ZWdlciB0eXBlLgogLy8KIC8vIENvbW1hbmQtbGluZSB1dGlsaXRpZXM6
Ci0vLyAgIEdURVNUX0ZMQUcoKSAgICAgICAtIHJlZmVyZW5jZXMgYSBmbGFnLgogLy8gICBHVEVT
VF9ERUNMQVJFXyooKSAgLSBkZWNsYXJlcyBhIGZsYWcuCiAvLyAgIEdURVNUX0RFRklORV8qKCkg
ICAtIGRlZmluZXMgYSBmbGFnLgotLy8gICBHZXRBcmd2cygpICAgICAgICAgLSByZXR1cm5zIHRo
ZSBjb21tYW5kIGxpbmUgYXMgYSB2ZWN0b3Igb2Ygc3RyaW5ncy4KKy8vICAgR2V0SW5qZWN0YWJs
ZUFyZ3ZzKCkgLSByZXR1cm5zIHRoZSBjb21tYW5kIGxpbmUgYXMgYSB2ZWN0b3Igb2Ygc3RyaW5n
cy4KIC8vCiAvLyBFbnZpcm9ubWVudCB2YXJpYWJsZSB1dGlsaXRpZXM6CiAvLyAgIEdldEVudigp
ICAgICAgICAgICAgIC0gZ2V0cyB0aGUgdmFsdWUgb2YgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUu
CkBAIC0xNzEsMTcxICsyNjMsMzA1IEBACiAvLyAgIEludDMyRnJvbUdUZXN0RW52KCkgIC0gcGFy
c2VzIGFuIEludDMyIGVudmlyb25tZW50IHZhcmlhYmxlLgogLy8gICBTdHJpbmdGcm9tR1Rlc3RF
bnYoKSAtIHBhcnNlcyBhIHN0cmluZyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KIAotI2luY2x1ZGUg
PHN0ZGRlZi5oPiAgLy8gRm9yIHB0cmRpZmZfdAorI2luY2x1ZGUgPGN0eXBlLmg+ICAgLy8gZm9y
IGlzc3BhY2UsIGV0YworI2luY2x1ZGUgPHN0ZGRlZi5oPiAgLy8gZm9yIHB0cmRpZmZfdAogI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+
CiAjaWZuZGVmIF9XSU4zMl9XQ0UKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgorIyBpbmNsdWRlIDxz
eXMvdHlwZXMuaD4KKyMgaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNlbmRpZiAgLy8gIV9XSU4zMl9X
Q0UKIAotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgotI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNy
b3MuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0V4cG9ydE1hY3Jvcy5oPgotI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpZiBk
ZWZpbmVkIF9fQVBQTEVfXworIyBpbmNsdWRlIDxBdmFpbGFiaWxpdHlNYWNyb3MuaD4KKyMgaW5j
bHVkZSA8VGFyZ2V0Q29uZGl0aW9uYWxzLmg+CisjZW5kaWYKIAorLy8gQnJpbmdzIGluIHRoZSBk
ZWZpbml0aW9uIG9mIEhBU19HTE9CQUxfU1RSSU5HLiAgVGhpcyBtdXN0IGJlIGRvbmUKKy8vIEJF
Rk9SRSB3ZSB0ZXN0IEhBU19HTE9CQUxfU1RSSU5HLgorI2luY2x1ZGUgPHN0cmluZz4gIC8vIE5P
TElOVAorI2luY2x1ZGUgPGFsZ29yaXRobT4gIC8vIE5PTElOVAogI2luY2x1ZGUgPGlvc3RyZWFt
PiAgLy8gTk9MSU5UCiAjaW5jbHVkZSA8c3N0cmVhbT4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHN0
cmluZz4gIC8vIE5PTElOVAorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8dmVjdG9yPiAg
Ly8gTk9MSU5UCisKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LWFyY2guaCIK
KyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oIgorCisjaWYgIWRl
ZmluZWQoR1RFU1RfREVWX0VNQUlMXykKKyMgZGVmaW5lIEdURVNUX0RFVl9FTUFJTF8gImdvb2ds
ZXRlc3RmcmFtZXdvcmtAQGdvb2dsZWdyb3Vwcy5jb20iCisjIGRlZmluZSBHVEVTVF9GTEFHX1BS
RUZJWF8gImd0ZXN0XyIKKyMgZGVmaW5lIEdURVNUX0ZMQUdfUFJFRklYX0RBU0hfICJndGVzdC0i
CisjIGRlZmluZSBHVEVTVF9GTEFHX1BSRUZJWF9VUFBFUl8gIkdURVNUXyIKKyMgZGVmaW5lIEdU
RVNUX05BTUVfICJHb29nbGUgVGVzdCIKKyMgZGVmaW5lIEdURVNUX1BST0pFQ1RfVVJMXyAiaHR0
cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0LyIKKyNlbmRpZiAgLy8gIWRlZmluZWQo
R1RFU1RfREVWX0VNQUlMXykKIAotI2RlZmluZSBHVEVTVF9ERVZfRU1BSUxfICJnb29nbGV0ZXN0
ZnJhbWV3b3JrQEBnb29nbGVncm91cHMuY29tIgotI2RlZmluZSBHVEVTVF9GTEFHX1BSRUZJWF8g
Imd0ZXN0XyIKLSNkZWZpbmUgR1RFU1RfRkxBR19QUkVGSVhfREFTSF8gImd0ZXN0LSIKLSNkZWZp
bmUgR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJHVEVTVF8iCi0jZGVmaW5lIEdURVNUX05BTUVf
ICJHb29nbGUgVGVzdCIKLSNkZWZpbmUgR1RFU1RfUFJPSkVDVF9VUkxfICJodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xldGVzdC8iCisjaWYgIWRlZmluZWQoR1RFU1RfSU5JVF9HT09HTEVf
VEVTVF9OQU1FXykKKyMgZGVmaW5lIEdURVNUX0lOSVRfR09PR0xFX1RFU1RfTkFNRV8gInRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0IgorI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9JTklUX0dPT0dM
RV9URVNUX05BTUVfKQogCiAvLyBEZXRlcm1pbmVzIHRoZSB2ZXJzaW9uIG9mIGdjYyB0aGF0IGlz
IHVzZWQgdG8gY29tcGlsZSB0aGlzLgogI2lmZGVmIF9fR05VQ19fCiAvLyA0MDMwMiBtZWFucyB2
ZXJzaW9uIDQuMy4yLgotI2RlZmluZSBHVEVTVF9HQ0NfVkVSXyBcCisjIGRlZmluZSBHVEVTVF9H
Q0NfVkVSXyBcCiAgICAgKF9fR05VQ19fKjEwMDAwICsgX19HTlVDX01JTk9SX18qMTAwICsgX19H
TlVDX1BBVENITEVWRUxfXykKICNlbmRpZiAgLy8gX19HTlVDX18KIAotLy8gRGV0ZXJtaW5lcyB0
aGUgcGxhdGZvcm0gb24gd2hpY2ggR29vZ2xlIFRlc3QgaXMgY29tcGlsZWQuCi0jaWZkZWYgX19D
WUdXSU5fXwotI2RlZmluZSBHVEVTVF9PU19DWUdXSU4gMQotI2VsaWYgZGVmaW5lZCBfX1NZTUJJ
QU4zMl9fCi0jZGVmaW5lIEdURVNUX09TX1NZTUJJQU4gMQotI2VsaWYgZGVmaW5lZCBfV0lOMzIK
LSNkZWZpbmUgR1RFU1RfT1NfV0lORE9XUyAxCi0jaWZkZWYgX1dJTjMyX1dDRQotI2RlZmluZSBH
VEVTVF9PU19XSU5ET1dTX01PQklMRSAxCi0jZWxpZiBkZWZpbmVkKF9fTUlOR1dfXykgfHwgZGVm
aW5lZChfX01JTkdXMzJfXykKLSNkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19NSU5HVyAxCisvLyBN
YWNyb3MgZm9yIGRpc2FibGluZyBNaWNyb3NvZnQgVmlzdWFsIEMrKyB3YXJuaW5ncy4KKy8vCisv
LyAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQ4MDAgNDM4NSkKKy8vICAgLyog
Y29kZSB0aGF0IHRyaWdnZXJzIHdhcm5pbmdzIEM0ODAwIGFuZCBDNDM4NSAqLworLy8gICBHVEVT
VF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKKyNpZiBfTVNDX1ZFUiA+PSAxNDAwCisjIGRl
ZmluZSBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyh3YXJuaW5ncykgXAorICAgIF9f
cHJhZ21hKHdhcm5pbmcocHVzaCkpICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9fcHJh
Z21hKHdhcm5pbmcoZGlzYWJsZTogd2FybmluZ3MpKQorIyBkZWZpbmUgR1RFU1RfRElTQUJMRV9N
U0NfV0FSTklOR1NfUE9QXygpICAgICAgICAgIFwKKyAgICBfX3ByYWdtYSh3YXJuaW5nKHBvcCkp
CiAjZWxzZQotI2RlZmluZSBHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1AgMQotI2VuZGlmICAvLyBf
V0lOMzJfV0NFCi0jZWxpZiBkZWZpbmVkIF9fQVBQTEVfXwotI2RlZmluZSBHVEVTVF9PU19NQUMg
MQotI2VsaWYgZGVmaW5lZCBfX2xpbnV4X18KLSNkZWZpbmUgR1RFU1RfT1NfTElOVVggMQotI2Vs
aWYgZGVmaW5lZCBfX0dOVV9fCi0jZGVmaW5lIEdURVNUX09TX0hVUkQgMQotI2VsaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKF9fRnJl
ZUJTRF9rZXJuZWxfXykKLSNkZWZpbmUgR1RFU1RfT1NfRlJFRUJTRCAxCi0jZWxpZiBkZWZpbmVk
IF9fTVZTX18KLSNkZWZpbmUgR1RFU1RfT1NfWk9TIDEKLSNlbGlmIGRlZmluZWQoX19zdW4pICYm
IGRlZmluZWQoX19TVlI0KQotI2RlZmluZSBHVEVTVF9PU19TT0xBUklTIDEKLSNlbGlmIGRlZmlu
ZWQoX0FJWCkKLSNkZWZpbmUgR1RFU1RfT1NfQUlYIDEKLSNlbmRpZiAgLy8gX19DWUdXSU5fXwot
Ci0jaWYgR1RFU1RfT1NfQ1lHV0lOIHx8IEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8
fCBHVEVTVF9PU19TWU1CSUFOIHx8IFwKLSAgICBHVEVTVF9PU19TT0xBUklTIHx8IEdURVNUX09T
X0FJWCB8fCBHVEVTVF9PU19GUkVFQlNEIHx8IEdURVNUX09TX0hVUkQKKy8vIE9sZGVyIHZlcnNp
b25zIG9mIE1TVkMgZG9uJ3QgaGF2ZSBfX3ByYWdtYS4KKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVf
TVNDX1dBUk5JTkdTX1BVU0hfKHdhcm5pbmdzKQorIyBkZWZpbmUgR1RFU1RfRElTQUJMRV9NU0Nf
V0FSTklOR1NfUE9QXygpCisjZW5kaWYKKworLy8gQ2xhbmcgb24gV2luZG93cyBkb2VzIG5vdCB1
bmRlcnN0YW5kIE1TVkMncyBwcmFnbWEgd2FybmluZy4KKy8vIFdlIG5lZWQgY2xhbmctc3BlY2lm
aWMgd2F5IHRvIGRpc2FibGUgZnVuY3Rpb24gZGVwcmVjYXRpb24gd2FybmluZy4KKyNpZmRlZiBf
X2NsYW5nX18KKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVTSF8oKSAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgX1ByYWdtYSgiY2xhbmcgZGlhZ25vc3RpYyBw
dXNoIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9QcmFnbWEoImNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCBcIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNcIiIpIFwK
KyAgICBfUHJhZ21hKCJjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV2RlcHJlY2F0ZWQtaW1w
bGVtZW50YXRpb25zXCIiKQorI2RlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BP
UF8oKSBcCisgICAgX1ByYWdtYSgiY2xhbmcgZGlhZ25vc3RpYyBwb3AiKQorI2Vsc2UKKyMgZGVm
aW5lIEdURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVTSF8oKSBcCisgICAgR1RFU1RfRElT
QUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDk5NikKKyMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVND
X0RFUFJFQ0FURURfUE9QXygpIFwKKyAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1Bf
KCkKKyNlbmRpZgorCisjaWZuZGVmIEdURVNUX0xBTkdfQ1hYMTEKKy8vIGdjYyBhbmQgY2xhbmcg
ZGVmaW5lIF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fIHdoZW4KKy8vIC1zdGQ9e2MsZ251fSsr
ezB4LDExfSBpcyBwYXNzZWQuICBUaGUgQysrMTEgc3RhbmRhcmQgc3BlY2lmaWVzIGEKKy8vIHZh
bHVlIGZvciBfX2NwbHVzcGx1cywgYW5kIHJlY2VudCB2ZXJzaW9ucyBvZiBjbGFuZywgZ2NjLCBh
bmQKKy8vIHByb2JhYmx5IG90aGVyIGNvbXBpbGVycyBzZXQgdGhhdCB0b28gaW4gQysrMTEgbW9k
ZS4KKyMgaWYgX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18gfHwgX19jcGx1c3BsdXMgPj0gMjAx
MTAzTCB8fCBfTVNDX1ZFUiA+PSAxOTAwCisvLyBDb21waWxpbmcgaW4gYXQgbGVhc3QgQysrMTEg
bW9kZS4KKyMgIGRlZmluZSBHVEVTVF9MQU5HX0NYWDExIDEKKyMgZWxzZQorIyAgZGVmaW5lIEdU
RVNUX0xBTkdfQ1hYMTEgMAorIyBlbmRpZgorI2VuZGlmCisKKy8vIERpc3RpbmN0IGZyb20gQysr
MTEgbGFuZ3VhZ2Ugc3VwcG9ydCwgc29tZSBlbnZpcm9ubWVudHMgZG9uJ3QgcHJvdmlkZQorLy8g
cHJvcGVyIEMrKzExIGxpYnJhcnkgc3VwcG9ydC4gTm90YWJseSwgaXQncyBwb3NzaWJsZSB0byBi
dWlsZCBpbgorLy8gQysrMTEgbW9kZSB3aGVuIHRhcmdldGluZyBNYWMgT1MgWCAxMC42LCB3aGlj
aCBoYXMgYW4gb2xkIGxpYnN0ZGMrKworLy8gd2l0aCBubyBDKysxMSBzdXBwb3J0LgorLy8KKy8v
IGxpYnN0ZGMrKyBoYXMgc3VmZmljaWVudCBDKysxMSBzdXBwb3J0IGFzIG9mIEdDQyA0LjYuMCwg
X19HTElCQ1hYX18KKy8vIDIwMTEwMzI1LCBidXQgbWFpbnRlbmFuY2UgcmVsZWFzZXMgaW4gdGhl
IDQuNCBhbmQgNC41IHNlcmllcyBmb2xsb3dlZAorLy8gdGhpcyBkYXRlLCBzbyBjaGVjayBmb3Ig
dGhvc2UgdmVyc2lvbnMgYnkgdGhlaXIgZGF0ZSBzdGFtcHMuCisvLyBodHRwczovL2djYy5nbnUu
b3JnL29ubGluZWRvY3MvbGlic3RkYysrL21hbnVhbC9hYmkuaHRtbCNhYmkudmVyc2lvbmluZwor
I2lmIEdURVNUX0xBTkdfQ1hYMTEgJiYgXAorICAgICghZGVmaW5lZChfX0dMSUJDWFhfXykgfHwg
KCBcCisgICAgICAgIF9fR0xJQkNYWF9fID49IDIwMTEwMzI1dWwgJiYgIC8qIEdDQyA+PSA0LjYu
MCAqLyBcCisgICAgICAgIC8qIEJsYWNrbGlzdCBvZiBwYXRjaCByZWxlYXNlcyBvZiBvbGRlciBi
cmFuY2hlczogKi8gXAorICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDExMDQxNnVsICYmICAvKiBH
Q0MgNC40LjYgKi8gXAorICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDEyMDMxM3VsICYmICAvKiBH
Q0MgNC40LjcgKi8gXAorICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDExMDQyOHVsICYmICAvKiBH
Q0MgNC41LjMgKi8gXAorICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDEyMDcwMnVsKSkgICAvKiBH
Q0MgNC41LjQgKi8KKyMgZGVmaW5lIEdURVNUX1NURExJQl9DWFgxMSAxCisjZW5kaWYKKworLy8g
T25seSB1c2UgQysrMTEgbGlicmFyeSBmZWF0dXJlcyBpZiB0aGUgbGlicmFyeSBwcm92aWRlcyB0
aGVtLgorI2lmIEdURVNUX1NURExJQl9DWFgxMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9CRUdJ
Tl9BTkRfRU5EXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8gMQorIyBp
ZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgKF9NU0NfRlVMTF9WRVIgPj0gMTkwMDIzODI0KQorLy8g
d29ya3Mgb25seSB3aXRoIFZTMjAxNVUyIGFuZCBiZXR0ZXIKKyMgICBkZWZpbmUgR1RFU1RfSEFT
X1NURF9GVU5DVElPTl8gMQorIyBlbmRpZgorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9JTklUSUFM
SVpFUl9MSVNUXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfU1REX01PVkVfIDEKKyMgZGVmaW5lIEdU
RVNUX0hBU19TVERfVU5JUVVFX1BUUl8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9TSEFSRURf
UFRSXyAxCisjIGRlZmluZSBHVEVTVF9IQVNfVU5PUkRFUkVEX01BUF8gMQorIyBkZWZpbmUgR1RF
U1RfSEFTX1VOT1JERVJFRF9TRVRfIDEKKyNlbmRpZgorCisvLyBDKysxMSBzcGVjaWZpZXMgdGhh
dCA8dHVwbGU+IHByb3ZpZGVzIHN0ZDo6dHVwbGUuCisvLyBTb21lIHBsYXRmb3JtcyBzdGlsbCBt
aWdodCBub3QgaGF2ZSBpdCwgaG93ZXZlci4KKyNpZiBHVEVTVF9MQU5HX0NYWDExCisjIGRlZmlu
ZSBHVEVTVF9IQVNfU1REX1RVUExFXyAxCisjIGlmIGRlZmluZWQoX19jbGFuZ19fKQorLy8gSW5z
cGlyZWQgYnkKKy8vIGh0dHBzOi8vY2xhbmcubGx2bS5vcmcvZG9jcy9MYW5ndWFnZUV4dGVuc2lv
bnMuaHRtbCNpbmNsdWRlLWZpbGUtY2hlY2tpbmctbWFjcm9zCisjICBpZiBkZWZpbmVkKF9faGFz
X2luY2x1ZGUpICYmICFfX2hhc19pbmNsdWRlKDx0dXBsZT4pCisjICAgdW5kZWYgR1RFU1RfSEFT
X1NURF9UVVBMRV8KKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfTVNDX1ZFUikKKy8vIEluc3Bp
cmVkIGJ5IGJvb3N0L2NvbmZpZy9zdGRsaWIvZGlua3Vtd2FyZS5ocHAKKyMgIGlmIGRlZmluZWQo
X0NQUExJQl9WRVIpICYmIF9DUFBMSUJfVkVSIDwgNTIwCisjICAgdW5kZWYgR1RFU1RfSEFTX1NU
RF9UVVBMRV8KKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX0dMSUJDWFhfXykKKy8vIEluc3Bp
cmVkIGJ5IGJvb3N0L2NvbmZpZy9zdGRsaWIvbGlic3RkY3BwMy5ocHAsCisvLyBodHRwOi8vZ2Nj
LmdudS5vcmcvZ2NjLTQuMi9jaGFuZ2VzLmh0bWwgYW5kCisvLyBodHRwczovL3dlYi5hcmNoaXZl
Lm9yZy93ZWIvMjAxNDAyMjcwNDQ0MjkvZ2NjLmdudS5vcmcvb25saW5lZG9jcy9saWJzdGRjKysv
bWFudWFsL2JrMDFwdDAxY2gwMS5odG1sI21hbnVhbC5pbnRyby5zdGF0dXMuc3RhbmRhcmQuMjAw
eAorIyAgaWYgX19HTlVDX18gPCA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9f
IDwgMikKKyMgICB1bmRlZiBHVEVTVF9IQVNfU1REX1RVUExFXworIyAgZW5kaWYKKyMgZW5kaWYK
KyNlbmRpZgorCisvLyBCcmluZ3MgaW4gZGVmaW5pdGlvbnMgZm9yIGZ1bmN0aW9ucyB1c2VkIGlu
IHRoZSB0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXgKKy8vIG5hbWVzcGFjZSAocmVhZCwgd3JpdGUs
IGNsb3NlLCBjaGRpciwgaXNhdHR5LCBzdGF0KS4gV2UgZG8gbm90IGN1cnJlbnRseQorLy8gdXNl
IHRoZW0gb24gV2luZG93cyBNb2JpbGUuCisjaWYgR1RFU1RfT1NfV0lORE9XUworIyBpZiAhR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKKyMgIGluY2x1ZGUgPGRpcmVjdC5oPgorIyAgaW5jbHVkZSA8
aW8uaD4KKyMgZW5kaWYKKy8vIEluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBpbmNsdWRlIDx3
aW5kb3dzLmg+LCB1c2UgZm9yd2FyZCBkZWNsYXJhdGlvbgorI2lmIEdURVNUX09TX1dJTkRPV1Nf
TUlOR1cgJiYgIWRlZmluZWQoX19NSU5HVzY0X1ZFUlNJT05fTUFKT1IpCisvLyBNaW5HVyBkZWZp
bmVkIF9DUklUSUNBTF9TRUNUSU9OIGFuZCBfUlRMX0NSSVRJQ0FMX1NFQ1RJT04gYXMgdHdvCisv
LyBzZXBhcmF0ZSAoZXF1aXZhbGVudCkgc3RydWN0cywgaW5zdGVhZCBvZiB1c2luZyB0eXBlZGVm
Cit0eXBlZGVmIHN0cnVjdCBfQ1JJVElDQUxfU0VDVElPTiBHVEVTVF9DUklUSUNBTF9TRUNUSU9O
OworI2Vsc2UKKy8vIEFzc3VtZSBDUklUSUNBTF9TRUNUSU9OIGlzIGEgdHlwZWRlZiBvZiBfUlRM
X0NSSVRJQ0FMX1NFQ1RJT04uCisvLyBUaGlzIGFzc3VtcHRpb24gaXMgdmVyaWZpZWQgYnkKKy8v
IFdpbmRvd3NUeXBlc1Rlc3QuQ1JJVElDQUxfU0VDVElPTklzX1JUTF9DUklUSUNBTF9TRUNUSU9O
LgordHlwZWRlZiBzdHJ1Y3QgX1JUTF9DUklUSUNBTF9TRUNUSU9OIEdURVNUX0NSSVRJQ0FMX1NF
Q1RJT047CisjZW5kaWYKKyNlbHNlCisvLyBUaGlzIGFzc3VtZXMgdGhhdCBub24tV2luZG93cyBP
U2VzIHByb3ZpZGUgdW5pc3RkLmguIEZvciBPU2VzIHdoZXJlIHRoaXMKKy8vIGlzIG5vdCB0aGUg
Y2FzZSwgd2UgbmVlZCB0byBpbmNsdWRlIGhlYWRlcnMgdGhhdCBwcm92aWRlIHRoZSBmdW5jdGlv
bnMKKy8vIG1lbnRpb25lZCBhYm92ZS4KKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjIGluY2x1ZGUg
PHN0cmluZ3MuaD4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjaWYgR1RFU1RfT1Nf
TElOVVhfQU5EUk9JRAorLy8gVXNlZCB0byBkZWZpbmUgX19BTkRST0lEX0FQSV9fIG1hdGNoaW5n
IHRoZSB0YXJnZXQgTkRLIEFQSSBsZXZlbC4KKyMgIGluY2x1ZGUgPGFuZHJvaWQvYXBpLWxldmVs
Lmg+ICAvLyBOT0xJTlQKKyNlbmRpZgorCisvLyBEZWZpbmVzIHRoaXMgdG8gdHJ1ZSBpZmYgR29v
Z2xlIFRlc3QgY2FuIHVzZSBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb25zLgorI2lmbmRlZiBHVEVT
VF9IQVNfUE9TSVhfUkUKKyMgaWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRAorLy8gT24gQW5kcm9p
ZCwgPHJlZ2V4Lmg+IGlzIG9ubHkgYXZhaWxhYmxlIHN0YXJ0aW5nIHdpdGggR2luZ2VyYnJlYWQu
CisjICBkZWZpbmUgR1RFU1RfSEFTX1BPU0lYX1JFIChfX0FORFJPSURfQVBJX18gPj0gOSkKKyMg
ZWxzZQorIyAgZGVmaW5lIEdURVNUX0hBU19QT1NJWF9SRSAoIUdURVNUX09TX1dJTkRPV1MpCisj
IGVuZGlmCisjZW5kaWYKKworI2lmIEdURVNUX1VTRVNfUENSRQorLy8gVGhlIGFwcHJvcHJpYXRl
IGhlYWRlcnMgaGF2ZSBhbHJlYWR5IGJlZW4gaW5jbHVkZWQuCisKKyNlbGlmIEdURVNUX0hBU19Q
T1NJWF9SRQogCiAvLyBPbiBzb21lIHBsYXRmb3JtcywgPHJlZ2V4Lmg+IG5lZWRzIHNvbWVvbmUg
dG8gZGVmaW5lIHNpemVfdCwgYW5kCiAvLyB3b24ndCBjb21waWxlIG90aGVyd2lzZS4gIFdlIGNh
biAjaW5jbHVkZSBpdCBoZXJlIGFzIHdlIGFscmVhZHkKIC8vIGluY2x1ZGVkIDxzdGRsaWIuaD4s
IHdoaWNoIGlzIGd1YXJhbnRlZWQgdG8gZGVmaW5lIHNpemVfdCB0aHJvdWdoCiAvLyA8c3RkZGVm
Lmg+LgotI2lmIEhBVkUoUkVHRVhfSCkKLSNpbmNsdWRlIDxyZWdleC5oPiAgLy8gTk9MSU5UCi0j
ZGVmaW5lIEdURVNUX1VTRVNfUE9TSVhfUkUgMQotI2Vsc2UKLSNkZWZpbmUgR1RFU1RfVVNFU19T
SU1QTEVfUkUgMQotI2VuZGlmCi0jaW5jbHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5UCi0jaW5j
bHVkZSA8c3lzL3R5cGVzLmg+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDx0aW1lLmg+ICAvLyBOT0xJ
TlQKLSNpbmNsdWRlIDx1bmlzdGQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxyZWdleC5oPiAg
Ly8gTk9MSU5UCiAKKyMgZGVmaW5lIEdURVNUX1VTRVNfUE9TSVhfUkUgMQogCiAjZWxpZiBHVEVT
VF9PU19XSU5ET1dTCiAKLSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSNpbmNsdWRlIDxk
aXJlY3QuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPGlvLmg+ICAvLyBOT0xJTlQKLSNlbmRpZgot
CiAvLyA8cmVnZXguaD4gaXMgbm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLiAgVXNlIG91ciBvd24g
c2ltcGxlIHJlZ2V4CiAvLyBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkLgotI2RlZmluZSBHVEVTVF9V
U0VTX1NJTVBMRV9SRSAxCisjIGRlZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9SRSAxCiAKICNlbHNl
CiAKIC8vIDxyZWdleC5oPiBtYXkgbm90IGJlIGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtLiAg
VXNlIG91ciBvd24KIC8vIHNpbXBsZSByZWdleCBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkLgotI2Rl
ZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9SRSAxCisjIGRlZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9S
RSAxCiAKLSNlbmRpZiAgLy8gR1RFU1RfT1NfQ1lHV0lOIHx8IEdURVNUX09TX0xJTlVYIHx8IEdU
RVNUX09TX01BQyB8fAotICAgICAgICAvLyBHVEVTVF9PU19TWU1CSUFOIHx8IEdURVNUX09TX1NP
TEFSSVMgfHwgR1RFU1RfT1NfQUlYIHx8Ci0gICAgICAgIC8vIEdURVNUX09TX0ZSRUVCU0QgfHwg
R1RFU1RfT1NfSFVSRAorI2VuZGlmICAvLyBHVEVTVF9VU0VTX1BDUkUKIAogI2lmbmRlZiBHVEVT
VF9IQVNfRVhDRVBUSU9OUwogLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMgd2hldGhlciBleGNl
cHRpb25zIGFyZSBlbmFibGVkLCBzbyB3ZSBuZWVkCiAvLyB0byBmaWd1cmUgaXQgb3V0LgotI2lm
IGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQotLy8gTVNWQydzIGFu
ZCBDKytCdWlsZGVyJ3MgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBTVEwgdXNlIHRoZSBfSEFTX0VY
Q0VQVElPTlMKKyMgaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZChfQ1BQVU5XSU5EKQor
Ly8gTVNWQyBkZWZpbmVzIF9DUFBVTldJTkQgdG8gMSBpZmYgZXhjZXB0aW9ucyBhcmUgZW5hYmxl
ZC4KKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCisjIGVsaWYgZGVmaW5lZChfX0JP
UkxBTkRDX18pCisvLyBDKytCdWlsZGVyJ3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNUTCB1c2Vz
IHRoZSBfSEFTX0VYQ0VQVElPTlMKIC8vIG1hY3JvIHRvIGVuYWJsZSBleGNlcHRpb25zLCBzbyB3
ZSdsbCBkbyB0aGUgc2FtZS4KIC8vIEFzc3VtZXMgdGhhdCBleGNlcHRpb25zIGFyZSBlbmFibGVk
IGJ5IGRlZmF1bHQuCi0jaWZuZGVmIF9IQVNfRVhDRVBUSU9OUwotI2RlZmluZSBfSEFTX0VYQ0VQ
VElPTlMgMQotI2VuZGlmICAvLyBfSEFTX0VYQ0VQVElPTlMKLSNkZWZpbmUgR1RFU1RfSEFTX0VY
Q0VQVElPTlMgX0hBU19FWENFUFRJT05TCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0VY
Q0VQVElPTlMKKyMgIGlmbmRlZiBfSEFTX0VYQ0VQVElPTlMKKyMgICBkZWZpbmUgX0hBU19FWENF
UFRJT05TIDEKKyMgIGVuZGlmICAvLyBfSEFTX0VYQ0VQVElPTlMKKyMgIGRlZmluZSBHVEVTVF9I
QVNfRVhDRVBUSU9OUyBfSEFTX0VYQ0VQVElPTlMKKyMgZWxpZiBkZWZpbmVkKF9fY2xhbmdfXykK
Ky8vIGNsYW5nIGRlZmluZXMgX19FWENFUFRJT05TIGlmZiBleGNlcHRpb25zIGFyZSBlbmFibGVk
IGJlZm9yZSBjbGFuZyAyMjA3MTQsCisvLyBidXQgaWZmIGNsZWFudXBzIGFyZSBlbmFibGVkIGFm
dGVyIHRoYXQuIEluIE9iai1DKysgZmlsZXMsIHRoZXJlIGNhbiBiZQorLy8gY2xlYW51cHMgZm9y
IE9iakMgZXhjZXB0aW9ucyB3aGljaCBhbHNvIG5lZWQgY2xlYW51cHMsIGV2ZW4gaWYgQysrIGV4
Y2VwdGlvbnMKKy8vIGFyZSBkaXNhYmxlZC4gY2xhbmcgaGFzIF9faGFzX2ZlYXR1cmUoY3h4X2V4
Y2VwdGlvbnMpIHdoaWNoIGNoZWNrcyBmb3IgQysrCisvLyBleGNlcHRpb25zIHN0YXJ0aW5nIGF0
IGNsYW5nIHIyMDYzNTIsIGJ1dCB3aGljaCBjaGVja2VkIGZvciBjbGVhbnVwcyBwcmlvciB0bwor
Ly8gdGhhdC4gVG8gcmVsaWFibHkgY2hlY2sgZm9yIEMrKyBleGNlcHRpb24gYXZhaWxhYmlsaXR5
IHdpdGggY2xhbmcsIGNoZWNrIGZvcgorLy8gX19FWENFUFRJT05TICYmIF9faGFzX2ZlYXR1cmUo
Y3h4X2V4Y2VwdGlvbnMpLgorIyAgZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIChfX0VYQ0VQ
VElPTlMgJiYgX19oYXNfZmVhdHVyZShjeHhfZXhjZXB0aW9ucykpCisjIGVsaWYgZGVmaW5lZChf
X0dOVUNfXykgJiYgX19FWENFUFRJT05TCiAvLyBnY2MgZGVmaW5lcyBfX0VYQ0VQVElPTlMgdG8g
MSBpZmYgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZC4KLSNkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElP
TlMgMQotI2VsaWYgZGVmaW5lZChfX1NVTlBST19DQykKKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhD
RVBUSU9OUyAxCisjIGVsaWYgZGVmaW5lZChfX1NVTlBST19DQykKIC8vIFN1biBQcm8gQ0Mgc3Vw
cG9ydHMgZXhjZXB0aW9ucy4gIEhvd2V2ZXIsIHRoZXJlIGlzIG5vIGNvbXBpbGUtdGltZSB3YXkg
b2YKIC8vIGRldGVjdGluZyB3aGV0aGVyIHRoZXkgYXJlIGVuYWJsZWQgb3Igbm90LiAgVGhlcmVm
b3JlLCB3ZSBhc3N1bWUgdGhhdAogLy8gdGhleSBhcmUgZW5hYmxlZCB1bmxlc3MgdGhlIHVzZXIg
dGVsbHMgdXMgb3RoZXJ3aXNlLgotI2RlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCi0jZWxp
ZiBkZWZpbmVkKF9fSUJNQ1BQX18pICYmIF9fRVhDRVBUSU9OUworIyAgZGVmaW5lIEdURVNUX0hB
U19FWENFUFRJT05TIDEKKyMgZWxpZiBkZWZpbmVkKF9fSUJNQ1BQX18pICYmIF9fRVhDRVBUSU9O
UwogLy8geGxDIGRlZmluZXMgX19FWENFUFRJT05TIHRvIDEgaWZmIGV4Y2VwdGlvbnMgYXJlIGVu
YWJsZWQuCi0jZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIDEKLSNlbHNlCisjICBkZWZpbmUg
R1RFU1RfSEFTX0VYQ0VQVElPTlMgMQorIyBlbGlmIGRlZmluZWQoX19IUF9hQ0MpCisvLyBFeGNl
cHRpb24gaGFuZGxpbmcgaXMgaW4gZWZmZWN0IGJ5IGRlZmF1bHQgaW4gSFAgYUNDIGNvbXBpbGVy
LiBJdCBoYXMgdG8KKy8vIGJlIHR1cm5lZCBvZiBieSArbm9laCBjb21waWxlciBvcHRpb24gaWYg
ZGVzaXJlZC4KKyMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCisjIGVsc2UKIC8vIEZv
ciBvdGhlciBjb21waWxlcnMsIHdlIGFzc3VtZSBleGNlcHRpb25zIGFyZSBkaXNhYmxlZCB0byBi
ZQogLy8gY29uc2VydmF0aXZlLgotI2RlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAwCi0jZW5k
aWYgIC8vIGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQorIyAgZGVm
aW5lIEdURVNUX0hBU19FWENFUFRJT05TIDAKKyMgZW5kaWYgIC8vIGRlZmluZWQoX01TQ19WRVIp
IHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQogI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9O
UwogCiAjaWYgIWRlZmluZWQoR1RFU1RfSEFTX1NURF9TVFJJTkcpCiAvLyBFdmVuIHRob3VnaCB3
ZSBkb24ndCB1c2UgdGhpcyBtYWNybyBhbnkgbG9uZ2VyLCB3ZSBrZWVwIGl0IGluIGNhc2UKIC8v
IHNvbWUgY2xpZW50cyBzdGlsbCBkZXBlbmQgb24gaXQuCi0jZGVmaW5lIEdURVNUX0hBU19TVERf
U1RSSU5HIDEKKyMgZGVmaW5lIEdURVNUX0hBU19TVERfU1RSSU5HIDEKICNlbGlmICFHVEVTVF9I
QVNfU1REX1NUUklORwogLy8gVGhlIHVzZXIgdG9sZCB1cyB0aGF0IDo6c3RkOjpzdHJpbmcgaXNu
J3QgYXZhaWxhYmxlLgotI2Vycm9yICJHb29nbGUgVGVzdCBjYW5ub3QgYmUgdXNlZCB3aGVyZSA6
OnN0ZDo6c3RyaW5nIGlzbid0IGF2YWlsYWJsZS4iCisjIGVycm9yICI6OnN0ZDo6c3RyaW5nIGlz
bid0IGF2YWlsYWJsZS4iCiAjZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0hBU19TVERfU1RSSU5H
KQogCiAjaWZuZGVmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0vLyBUaGUgdXNlciBkaWRuJ3Qg
dGVsbCB1cyB3aGV0aGVyIDo6c3RyaW5nIGlzIGF2YWlsYWJsZSwgc28gd2UgbmVlZAotLy8gdG8g
ZmlndXJlIGl0IG91dC4KLQotI2RlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORyAwCi0KKyMg
ZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HIDAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0dM
T0JBTF9TVFJJTkcKIAogI2lmbmRlZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKIC8vIFRoZSB1c2Vy
IGRpZG4ndCB0ZWxsIHVzIHdoZXRoZXIgOjpzdGQ6OndzdHJpbmcgaXMgYXZhaWxhYmxlLCBzbyB3
ZSBuZWVkCiAvLyB0byBmaWd1cmUgaXQgb3V0LgotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHVz
ZXMgYXV0b2NvbmYgdG8gZGV0ZWN0IHdoZXRoZXIgOjpzdGQ6OndzdHJpbmcKKy8vIEZJWE1FOiB1
c2VzIGF1dG9jb25mIHRvIGRldGVjdCB3aGV0aGVyIDo6c3RkOjp3c3RyaW5nCiAvLyAgIGlzIGF2
YWlsYWJsZS4KIAotLy8gQ3lnd2luIDEuNSBhbmQgYmVsb3cgZG9lc24ndCBzdXBwb3J0IDo6c3Rk
Ojp3c3RyaW5nLgotLy8gQ3lnd2luIDEuNyBtaWdodCBhZGQgd3N0cmluZyBzdXBwb3J0OyB0aGlz
IHNob3VsZCBiZSB1cGRhdGVkIHdoZW4gY2xlYXIuCi0vLyBTb2xhcmlzJyBsaWJjKysgZG9lc24n
dCBzdXBwb3J0IGl0IGVpdGhlci4KLSNkZWZpbmUgR1RFU1RfSEFTX1NURF9XU1RSSU5HICghKEdU
RVNUX09TX0NZR1dJTiB8fCBHVEVTVF9PU19TT0xBUklTKSkKKy8vIEN5Z3dpbiAxLjcgYW5kIGJl
bG93IGRvZXNuJ3Qgc3VwcG9ydCA6OnN0ZDo6d3N0cmluZy4KKy8vIFNvbGFyaXMnIGxpYmMrKyBk
b2Vzbid0IHN1cHBvcnQgaXQgZWl0aGVyLiAgQW5kcm9pZCBoYXMKKy8vIG5vIHN1cHBvcnQgZm9y
IGl0IGF0IGxlYXN0IGFzIHJlY2VudCBhcyBGcm95byAoMi4yKS4KKyMgZGVmaW5lIEdURVNUX0hB
U19TVERfV1NUUklORyBcCisgICAgKCEoR1RFU1RfT1NfTElOVVhfQU5EUk9JRCB8fCBHVEVTVF9P
U19DWUdXSU4gfHwgR1RFU1RfT1NfU09MQVJJUykpCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1NU
RF9XU1RSSU5HCiAKICNpZm5kZWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCiAvLyBUaGUgdXNl
ciBkaWRuJ3QgdGVsbCB1cyB3aGV0aGVyIDo6d3N0cmluZyBpcyBhdmFpbGFibGUsIHNvIHdlIG5l
ZWQKIC8vIHRvIGZpZ3VyZSBpdCBvdXQuCi0jZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfV1NUUklO
RyBcCisjIGRlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcgXAogICAgIChHVEVTVF9IQVNf
U1REX1dTVFJJTkcgJiYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcpCiAjZW5kaWYgIC8vIEdURVNU
X0hBU19HTE9CQUxfV1NUUklORwogCkBAIC0zNDQsMTMzICs1NzAsMjEyIEBACiAvLyBUaGUgdXNl
ciBkaWRuJ3QgdGVsbCB1cyB3aGV0aGVyIFJUVEkgaXMgZW5hYmxlZCwgc28gd2UgbmVlZCB0bwog
Ly8gZmlndXJlIGl0IG91dC4KIAotI2lmZGVmIF9NU0NfVkVSCisjIGlmZGVmIF9NU0NfVkVSCiAK
LSNpZmRlZiBfQ1BQUlRUSSAgLy8gTVNWQyBkZWZpbmVzIHRoaXMgbWFjcm8gaWZmIFJUVEkgaXMg
ZW5hYmxlZC4KLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQotI2Vsc2UKLSNkZWZpbmUgR1RFU1Rf
SEFTX1JUVEkgMAotI2VuZGlmCisjICBpZmRlZiBfQ1BQUlRUSSAgLy8gTVNWQyBkZWZpbmVzIHRo
aXMgbWFjcm8gaWZmIFJUVEkgaXMgZW5hYmxlZC4KKyMgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkg
MQorIyAgZWxzZQorIyAgIGRlZmluZSBHVEVTVF9IQVNfUlRUSSAwCisjICBlbmRpZgogCiAvLyBT
dGFydGluZyB3aXRoIHZlcnNpb24gNC4zLjIsIGdjYyBkZWZpbmVzIF9fR1hYX1JUVEkgaWZmIFJU
VEkgaXMgZW5hYmxlZC4KLSNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIChHVEVTVF9HQ0NfVkVS
XyA+PSA0MDMwMikKLQotI2lmZGVmIF9fR1hYX1JUVEkKLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkg
MQotI2Vsc2UKLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAotI2VuZGlmICAvLyBfX0dYWF9SVFRJ
CisjIGVsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMzAyKQor
CisjICBpZmRlZiBfX0dYWF9SVFRJCisvLyBXaGVuIGJ1aWxkaW5nIGFnYWluc3QgU1RMcG9ydCB3
aXRoIHRoZSBBbmRyb2lkIE5ESyBhbmQgd2l0aAorLy8gLWZydHRpIC1mbm8tZXhjZXB0aW9ucywg
dGhlIGJ1aWxkIGZhaWxzIGF0IGxpbmsgdGltZSB3aXRoIHVuZGVmaW5lZAorLy8gcmVmZXJlbmNl
cyB0byBfX2N4YV9iYWRfdHlwZWlkLiBOb3RlIHN1cmUgaWYgU1RMIG9yIHRvb2xjaGFpbiBidWcs
CisvLyBzbyBkaXNhYmxlIFJUVEkgd2hlbiBkZXRlY3RlZC4KKyMgICBpZiBHVEVTVF9PU19MSU5V
WF9BTkRST0lEICYmIGRlZmluZWQoX1NUTFBPUlRfTUFKT1IpICYmIFwKKyAgICAgICAhZGVmaW5l
ZChfX0VYQ0VQVElPTlMpCisjICAgIGRlZmluZSBHVEVTVF9IQVNfUlRUSSAwCisjICAgZWxzZQor
IyAgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQorIyAgIGVuZGlmICAvLyBHVEVTVF9PU19MSU5V
WF9BTkRST0lEICYmIF9fU1RMUE9SVF9NQUpPUiAmJiAhX19FWENFUFRJT05TCisjICBlbHNlCisj
ICAgZGVmaW5lIEdURVNUX0hBU19SVFRJIDAKKyMgIGVuZGlmICAvLyBfX0dYWF9SVFRJCisKKy8v
IENsYW5nIGRlZmluZXMgX19HWFhfUlRUSSBzdGFydGluZyB3aXRoIHZlcnNpb24gMy4wLCBidXQg
aXRzIG1hbnVhbCByZWNvbW1lbmRzCisvLyB1c2luZyBoYXNfZmVhdHVyZSBpbnN0ZWFkLiBoYXNf
ZmVhdHVyZShjeHhfcnR0aSkgaXMgc3VwcG9ydGVkIHNpbmNlIDIuNywgdGhlCisvLyBmaXJzdCB2
ZXJzaW9uIHdpdGggQysrIHN1cHBvcnQuCisjIGVsaWYgZGVmaW5lZChfX2NsYW5nX18pCisKKyMg
IGRlZmluZSBHVEVTVF9IQVNfUlRUSSBfX2hhc19mZWF0dXJlKGN4eF9ydHRpKQogCiAvLyBTdGFy
dGluZyB3aXRoIHZlcnNpb24gOS4wIElCTSBWaXN1YWwgQWdlIGRlZmluZXMgX19SVFRJX0FMTF9f
IHRvIDEgaWYKIC8vIGJvdGggdGhlIHR5cGVpZCBhbmQgZHluYW1pY19jYXN0IGZlYXR1cmVzIGFy
ZSBwcmVzZW50LgotI2VsaWYgZGVmaW5lZChfX0lCTUNQUF9fKSAmJiAoX19JQk1DUFBfXyA+PSA5
MDApCisjIGVsaWYgZGVmaW5lZChfX0lCTUNQUF9fKSAmJiAoX19JQk1DUFBfXyA+PSA5MDApCiAK
LSNpZmRlZiBfX1JUVElfQUxMX18KLSNkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQotI2Vsc2UKLSNk
ZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAotI2VuZGlmCisjICBpZmRlZiBfX1JUVElfQUxMX18KKyMg
ICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQorIyAgZWxzZQorIyAgIGRlZmluZSBHVEVTVF9IQVNf
UlRUSSAwCisjICBlbmRpZgogCi0jZWxzZQorIyBlbHNlCiAKIC8vIEZvciBhbGwgb3RoZXIgY29t
cGlsZXJzLCB3ZSBhc3N1bWUgUlRUSSBpcyBlbmFibGVkLgotI2RlZmluZSBHVEVTVF9IQVNfUlRU
SSAxCisjICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQogCi0jZW5kaWYgIC8vIF9NU0NfVkVSCisj
IGVuZGlmICAvLyBfTVNDX1ZFUgogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19SVFRJCiAKIC8vIEl0
J3MgdGhpcyBoZWFkZXIncyByZXNwb25zaWJpbGl0eSB0byAjaW5jbHVkZSA8dHlwZWluZm8+IHdo
ZW4gUlRUSQogLy8gaXMgZW5hYmxlZC4KICNpZiBHVEVTVF9IQVNfUlRUSQotI2luY2x1ZGUgPHR5
cGVpbmZvPgorIyBpbmNsdWRlIDx0eXBlaW5mbz4KICNlbmRpZgogCiAvLyBEZXRlcm1pbmVzIHdo
ZXRoZXIgR29vZ2xlIFRlc3QgY2FuIHVzZSB0aGUgcHRocmVhZHMgbGlicmFyeS4KICNpZm5kZWYg
R1RFU1RfSEFTX1BUSFJFQUQKLS8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIGV4cGxpY2l0bHks
IHNvIHdlIGFzc3VtZSBwdGhyZWFkcyBzdXBwb3J0IGlzCi0vLyBhdmFpbGFibGUgb24gTGludXgg
YW5kIE1hYy4KKy8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIGV4cGxpY2l0bHksIHNvIHdlIG1h
a2UgcmVhc29uYWJsZSBhc3N1bXB0aW9ucyBhYm91dAorLy8gd2hpY2ggcGxhdGZvcm1zIGhhdmUg
cHRocmVhZHMgc3VwcG9ydC4KIC8vCiAvLyBUbyBkaXNhYmxlIHRocmVhZGluZyBzdXBwb3J0IGlu
IEdvb2dsZSBUZXN0LCBhZGQgLURHVEVTVF9IQVNfUFRIUkVBRD0wCiAvLyB0byB5b3VyIGNvbXBp
bGVyIGZsYWdzLgotI2RlZmluZSBHVEVTVF9IQVNfUFRIUkVBRCAoR1RFU1RfT1NfTElOVVggfHwg
R1RFU1RfT1NfRlJFRUJTRCB8fCBHVEVTVF9PU19IVVJEIHx8IEdURVNUX09TX01BQykKKyNkZWZp
bmUgR1RFU1RfSEFTX1BUSFJFQUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgIChHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19NQUMgfHwgR1RFU1RfT1Nf
SFBVWCB8fCBHVEVTVF9PU19RTlggfHwgXAorICAgR1RFU1RfT1NfRlJFRUJTRCB8fCBHVEVTVF9P
U19OQUNMIHx8IEdURVNUX09TX05FVEJTRCB8fCBHVEVTVF9PU19GVUNIU0lBKQogI2VuZGlmICAv
LyBHVEVTVF9IQVNfUFRIUkVBRAogCisjaWYgR1RFU1RfSEFTX1BUSFJFQUQKKy8vIGd0ZXN0LXBv
cnQuaCBndWFyYW50ZWVzIHRvICNpbmNsdWRlIDxwdGhyZWFkLmg+IHdoZW4gR1RFU1RfSEFTX1BU
SFJFQUQgaXMKKy8vIHRydWUuCisjIGluY2x1ZGUgPHB0aHJlYWQuaD4gIC8vIE5PTElOVAorCisv
LyBGb3IgdGltZXNwZWMgYW5kIG5hbm9zbGVlcCwgdXNlZCBiZWxvdy4KKyMgaW5jbHVkZSA8dGlt
ZS5oPiAgLy8gTk9MSU5UCisjZW5kaWYKKworLy8gRGV0ZXJtaW5lcyBpZiBoYXNoX21hcC9oYXNo
X3NldCBhcmUgYXZhaWxhYmxlLgorLy8gT25seSB1c2VkIGZvciB0ZXN0aW5nIGFnYWluc3QgdGhv
c2UgY29udGFpbmVycy4KKyNpZiAhZGVmaW5lZChHVEVTVF9IQVNfSEFTSF9NQVBfKQorIyBpZiBk
ZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPCAxOTAwKQorIyAgZGVmaW5lIEdURVNUX0hB
U19IQVNIX01BUF8gMSAgLy8gSW5kaWNhdGVzIHRoYXQgaGFzaF9tYXAgaXMgYXZhaWxhYmxlLgor
IyAgZGVmaW5lIEdURVNUX0hBU19IQVNIX1NFVF8gMSAgLy8gSW5kaWNhdGVzIHRoYXQgaGFzaF9z
ZXQgaXMgYXZhaWxhYmxlLgorIyBlbmRpZiAgLy8gX01TQ19WRVIKKyNlbmRpZiAgLy8gIWRlZmlu
ZWQoR1RFU1RfSEFTX0hBU0hfTUFQXykKKwogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIEdvb2dsZSBU
ZXN0IGNhbiB1c2UgdHIxL3R1cGxlLiAgWW91IGNhbiBkZWZpbmUKIC8vIHRoaXMgbWFjcm8gdG8g
MCB0byBwcmV2ZW50IEdvb2dsZSBUZXN0IGZyb20gdXNpbmcgdHVwbGUgKGFueQogLy8gZmVhdHVy
ZSBkZXBlbmRpbmcgb24gdHVwbGUgd2l0aCBiZSBkaXNhYmxlZCBpbiB0aGlzIG1vZGUpLgogI2lm
bmRlZiBHVEVTVF9IQVNfVFIxX1RVUExFCisjIGlmIEdURVNUX09TX0xJTlVYX0FORFJPSUQgJiYg
ZGVmaW5lZChfU1RMUE9SVF9NQUpPUikKKy8vIFNUTHBvcnQsIHByb3ZpZGVkIHdpdGggdGhlIEFu
ZHJvaWQgTkRLLCBoYXMgbmVpdGhlciA8dHIxL3R1cGxlPiBvciA8dHVwbGU+LgorIyAgZGVmaW5l
IEdURVNUX0hBU19UUjFfVFVQTEUgMAorIyBlbGlmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVND
X1ZFUiA+PSAxOTEwKQorLy8gUHJldmVudCBgd2FybmluZyBDNDk5NjogJ3N0ZDo6dHIxJzogd2Fy
bmluZyBTVEw0MDAyOgorLy8gVGhlIG5vbi1TdGFuZGFyZCBzdGQ6OnRyMSBuYW1lc3BhY2UgYW5k
IFRSMS1vbmx5IG1hY2hpbmVyeQorLy8gYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgUkVNT1ZF
RC5gCisjICBkZWZpbmUgR1RFU1RfSEFTX1RSMV9UVVBMRSAwCisjIGVsaWYgR1RFU1RfTEFOR19D
WFgxMSAmJiBkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikKKy8vIGxpYmMrKyBkb2Vzbid0IHN1cHBv
cnQgVFIxLgorIyAgZGVmaW5lIEdURVNUX0hBU19UUjFfVFVQTEUgMAorIyBlbHNlCiAvLyBUaGUg
dXNlciBkaWRuJ3QgdGVsbCB1cyBub3QgdG8gZG8gaXQsIHNvIHdlIGFzc3VtZSBpdCdzIE9LLgot
I2RlZmluZSBHVEVTVF9IQVNfVFIxX1RVUExFIDEKKyMgIGRlZmluZSBHVEVTVF9IQVNfVFIxX1RV
UExFIDEKKyMgZW5kaWYKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRQogCiAvLyBEZXRl
cm1pbmVzIHdoZXRoZXIgR29vZ2xlIFRlc3QncyBvd24gdHIxIHR1cGxlIGltcGxlbWVudGF0aW9u
CiAvLyBzaG91bGQgYmUgdXNlZC4KICNpZm5kZWYgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUKKy8v
IFdlIHVzZSBvdXIgb3duIHR1cGxlIGltcGxlbWVudGF0aW9uIG9uIFN5bWJpYW4uCisjIGlmIEdU
RVNUX09TX1NZTUJJQU4KKyMgIGRlZmluZSBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSAxCisjIGVs
c2UKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzLCBzbyB3ZSBuZWVkIHRvIGZpZ3VyZSBpdCBv
dXQuCiAKIC8vIFdlIHVzZSBvdXIgb3duIFRSMSB0dXBsZSBpZiB3ZSBhcmVuJ3Qgc3VyZSB0aGUg
dXNlciBoYXMgYW4KLS8vIGltcGxlbWVudGF0aW9uIG9mIGl0IGFscmVhZHkuICBBdCB0aGlzIHRp
bWUsIEdDQyA0LjAuMCsgYW5kIE1TVkMKLS8vIDIwMTAgYXJlIHRoZSBvbmx5IG1haW5zdHJlYW0g
Y29tcGlsZXJzIHRoYXQgY29tZSB3aXRoIGEgVFIxIHR1cGxlCi0vLyBpbXBsZW1lbnRhdGlvbi4g
IE5WSURJQSdzIENVREEgTlZDQyBjb21waWxlciBwcmV0ZW5kcyB0byBiZSBHQ0MgYnkKLS8vIGRl
ZmluaW5nIF9fR05VQ19fIGFuZCBmcmllbmRzLCBidXQgY2Fubm90IGNvbXBpbGUgR0NDJ3MgdHVw
bGUKLS8vIGltcGxlbWVudGF0aW9uLiAgTVNWQyAyMDA4ICg5LjApIHByb3ZpZGVzIFRSMSB0dXBs
ZSBpbiBhIDMyMyBNQgotLy8gRmVhdHVyZSBQYWNrIGRvd25sb2FkLCB3aGljaCB3ZSBjYW5ub3Qg
YXNzdW1lIHRoZSB1c2VyIGhhcy4KLSNpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQo
X19DVURBQ0NfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMDAwKSkgXAotICAgIHx8IF9NU0Nf
VkVSID49IDE2MDAKLSNkZWZpbmUgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgMAotI2Vsc2UKLSNk
ZWZpbmUgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgMQotI2VuZGlmCi0KKy8vIGltcGxlbWVudGF0
aW9uIG9mIGl0IGFscmVhZHkuICBBdCB0aGlzIHRpbWUsIGxpYnN0ZGMrKyA0LjAuMCsgYW5kCisv
LyBNU1ZDIDIwMTAgYXJlIHRoZSBvbmx5IG1haW5zdHJlYW0gc3RhbmRhcmQgbGlicmFyaWVzIHRo
YXQgY29tZQorLy8gd2l0aCBhIFRSMSB0dXBsZSBpbXBsZW1lbnRhdGlvbi4gIE5WSURJQSdzIENV
REEgTlZDQyBjb21waWxlcgorLy8gcHJldGVuZHMgdG8gYmUgR0NDIGJ5IGRlZmluaW5nIF9fR05V
Q19fIGFuZCBmcmllbmRzLCBidXQgY2Fubm90CisvLyBjb21waWxlIEdDQydzIHR1cGxlIGltcGxl
bWVudGF0aW9uLiAgTVNWQyAyMDA4ICg5LjApIHByb3ZpZGVzIFRSMQorLy8gdHVwbGUgaW4gYSAz
MjMgTUIgRmVhdHVyZSBQYWNrIGRvd25sb2FkLCB3aGljaCB3ZSBjYW5ub3QgYXNzdW1lIHRoZQor
Ly8gdXNlciBoYXMuICBRTlgncyBRQ0MgY29tcGlsZXIgaXMgYSBtb2RpZmllZCBHQ0MgYnV0IGl0
IGRvZXNuJ3QKKy8vIHN1cHBvcnQgVFIxIHR1cGxlLiAgbGliYysrIG9ubHkgcHJvdmlkZXMgc3Rk
Ojp0dXBsZSwgaW4gQysrMTEgbW9kZSwKKy8vIGFuZCBpdCBjYW4gYmUgdXNlZCB3aXRoIHNvbWUg
Y29tcGlsZXJzIHRoYXQgZGVmaW5lIF9fR05VQ19fLgorIyBpZiAoZGVmaW5lZChfX0dOVUNfXykg
JiYgIWRlZmluZWQoX19DVURBQ0NfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMDAwKSBcCisg
ICAgICAmJiAhR1RFU1RfT1NfUU5YICYmICFkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikpIFwKKyAg
ICAgIHx8IChfTVNDX1ZFUiA+PSAxNjAwICYmIF9NU0NfVkVSIDwgMTkwMCkKKyMgIGRlZmluZSBH
VEVTVF9FTlZfSEFTX1RSMV9UVVBMRV8gMQorIyBlbmRpZgorCisvLyBDKysxMSBzcGVjaWZpZXMg
dGhhdCA8dHVwbGU+IHByb3ZpZGVzIHN0ZDo6dHVwbGUuIFVzZSB0aGF0IGlmIGd0ZXN0IGlzIHVz
ZWQKKy8vIGluIEMrKzExIG1vZGUgYW5kIGxpYnN0ZGMrKyBpc24ndCB2ZXJ5IG9sZCAoYmluYXJp
ZXMgdGFyZ2V0aW5nIE9TIFggMTAuNgorLy8gY2FuIGJ1aWxkIHdpdGggY2xhbmcgYnV0IG5lZWQg
dG8gdXNlIGdjYzQuMidzIGxpYnN0ZGMrKykuCisjIGlmIEdURVNUX0xBTkdfQ1hYMTEgJiYgKCFk
ZWZpbmVkKF9fR0xJQkNYWF9fKSB8fCBfX0dMSUJDWFhfXyA+IDIwMTEwMzI1KQorIyAgZGVmaW5l
IEdURVNUX0VOVl9IQVNfU1REX1RVUExFXyAxCisjIGVuZGlmCisKKyMgaWYgR1RFU1RfRU5WX0hB
U19UUjFfVFVQTEVfIHx8IEdURVNUX0VOVl9IQVNfU1REX1RVUExFXworIyAgZGVmaW5lIEdURVNU
X1VTRV9PV05fVFIxX1RVUExFIDAKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX1VTRV9PV05fVFIx
X1RVUExFIDEKKyMgZW5kaWYKKyMgZW5kaWYgIC8vIEdURVNUX09TX1NZTUJJQU4KICNlbmRpZiAg
Ly8gR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUKIAotLy8gVG8gYXZvaWQgY29uZGl0aW9uYWwgY29t
cGlsYXRpb24gZXZlcnl3aGVyZSwgd2UgbWFrZSBpdAotLy8gZ3Rlc3QtcG9ydC5oJ3MgcmVzcG9u
c2liaWxpdHkgdG8gI2luY2x1ZGUgdGhlIGhlYWRlciBpbXBsZW1lbnRpbmcKLS8vIHRyMS90dXBs
ZS4KKy8vIFRvIGF2b2lkIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHdlIG1ha2UgaXQgZ3Rlc3Qt
cG9ydC5oJ3MgcmVzcG9uc2liaWxpdHkKKy8vIHRvICNpbmNsdWRlIHRoZSBoZWFkZXIgaW1wbGVt
ZW50aW5nIHR1cGxlLgorI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCisjIGluY2x1ZGUgPHR1cGxl
PiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydAorIyBkZWZpbmUgR1RFU1RfVFVQTEVfTkFNRVNQQUNF
XyA6OnN0ZAorI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1RVUExFXworCisvLyBXZSBpbmNsdWRl
IHRyMTo6dHVwbGUgZXZlbiBpZiBzdGQ6OnR1cGxlIGlzIGF2YWlsYWJsZSB0byBkZWZpbmUgcHJp
bnRlcnMgZm9yCisvLyB0aGVtLgogI2lmIEdURVNUX0hBU19UUjFfVFVQTEUKKyMgaWZuZGVmIEdU
RVNUX1RVUExFX05BTUVTUEFDRV8KKyMgIGRlZmluZSBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfIDo6
c3RkOjp0cjEKKyMgZW5kaWYgIC8vIEdURVNUX1RVUExFX05BTUVTUEFDRV8KIAotI2lmIEdURVNU
X1VTRV9PV05fVFIxX1RVUExFCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUu
aD4KLSNlbGlmIEdURVNUX09TX1NZTUJJQU4KKyMgaWYgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUK
KyMgIGluY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgiICAvLyBJV1lVIHByYWdt
YTogZXhwb3J0ICAvLyBOT0xJTlQKKyMgZWxpZiBHVEVTVF9PU19TWU1CSUFOCiAKIC8vIE9uIFN5
bWJpYW4sIEJPT1NUX0hBU19UUjFfVFVQTEUgY2F1c2VzIEJvb3N0J3MgVFIxIHR1cGxlIGxpYnJh
cnkgdG8KIC8vIHVzZSBTVExwb3J0J3MgdHVwbGUgaW1wbGVtZW50YXRpb24sIHdoaWNoIHVuZm9y
dHVuYXRlbHkgZG9lc24ndAogLy8gd29yayBhcyB0aGUgY29weSBvZiBTVExwb3J0IGRpc3RyaWJ1
dGVkIHdpdGggU3ltYmlhbiBpcyBpbmNvbXBsZXRlLgogLy8gQnkgbWFraW5nIHN1cmUgQk9PU1Rf
SEFTX1RSMV9UVVBMRSBpcyB1bmRlZmluZWQsIHdlIGZvcmNlIEJvb3N0IHRvCiAvLyB1c2UgaXRz
IG93biB0dXBsZSBpbXBsZW1lbnRhdGlvbi4KLSNpZmRlZiBCT09TVF9IQVNfVFIxX1RVUExFCi0j
dW5kZWYgQk9PU1RfSEFTX1RSMV9UVVBMRQotI2VuZGlmICAvLyBCT09TVF9IQVNfVFIxX1RVUExF
CisjICBpZmRlZiBCT09TVF9IQVNfVFIxX1RVUExFCisjICAgdW5kZWYgQk9PU1RfSEFTX1RSMV9U
VVBMRQorIyAgZW5kaWYgIC8vIEJPT1NUX0hBU19UUjFfVFVQTEUKIAogLy8gVGhpcyBwcmV2ZW50
cyA8Ym9vc3QvdHIxL2RldGFpbC9jb25maWcuaHBwPiwgd2hpY2ggZGVmaW5lcwogLy8gQk9PU1Rf
SEFTX1RSMV9UVVBMRSwgZnJvbSBiZWluZyAjaW5jbHVkZWQgYnkgQm9vc3QncyA8dHVwbGU+Lgot
I2RlZmluZSBCT09TVF9UUjFfREVUQUlMX0NPTkZJR19IUFBfSU5DTFVERUQKLSNpbmNsdWRlIDx0
dXBsZT4KKyMgIGRlZmluZSBCT09TVF9UUjFfREVUQUlMX0NPTkZJR19IUFBfSU5DTFVERUQKKyMg
IGluY2x1ZGUgPHR1cGxlPiAgLy8gSVdZVSBwcmFnbWE6IGV4cG9ydCAgLy8gTk9MSU5UCiAKLSNl
bGlmIGRlZmluZWQoX19HTlVDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSA0MDAwMCkKKyMgZWxp
ZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0gNDAwMDApCiAvLyBHQ0Mg
NC4wKyBpbXBsZW1lbnRzIHRyMS90dXBsZSBpbiB0aGUgPHRyMS90dXBsZT4gaGVhZGVyLiAgVGhp
cyBkb2VzCiAvLyBub3QgY29uZm9ybSB0byB0aGUgVFIxIHNwZWMsIHdoaWNoIHJlcXVpcmVzIHRo
ZSBoZWFkZXIgdG8gYmUgPHR1cGxlPi4KIAotI2lmICFHVEVTVF9IQVNfUlRUSSAmJiBHVEVTVF9H
Q0NfVkVSXyA8IDQwMzAyCisjICBpZiAhR1RFU1RfSEFTX1JUVEkgJiYgR1RFU1RfR0NDX1ZFUl8g
PCA0MDMwMgogLy8gVW50aWwgdmVyc2lvbiA0LjMuMiwgZ2NjIGhhcyBhIGJ1ZyB0aGF0IGNhdXNl
cyA8dHIxL2Z1bmN0aW9uYWw+LAogLy8gd2hpY2ggaXMgI2luY2x1ZGVkIGJ5IDx0cjEvdHVwbGU+
LCB0byBub3QgY29tcGlsZSB3aGVuIFJUVEkgaXMKIC8vIGRpc2FibGVkLiAgX1RSMV9GVU5DVElP
TkFMIGlzIHRoZSBoZWFkZXIgZ3VhcmQgZm9yCi0vLyA8dHIxL2Z1bmN0aW9uYWw+LiAgSGVuY2Ug
dGhlIGZvbGxvd2luZyAjZGVmaW5lIGlzIGEgaGFjayB0byBwcmV2ZW50CisvLyA8dHIxL2Z1bmN0
aW9uYWw+LiAgSGVuY2UgdGhlIGZvbGxvd2luZyAjZGVmaW5lIGlzIHVzZWQgdG8gcHJldmVudAog
Ly8gPHRyMS9mdW5jdGlvbmFsPiBmcm9tIGJlaW5nIGluY2x1ZGVkLgotI2RlZmluZSBfVFIxX0ZV
TkNUSU9OQUwgMQotI2luY2x1ZGUgPHRyMS90dXBsZT4KLSN1bmRlZiBfVFIxX0ZVTkNUSU9OQUwg
IC8vIEFsbG93cyB0aGUgdXNlciB0byAjaW5jbHVkZQotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gPHRyMS9mdW5jdGlvbmFsPiBpZiBoZSBjaG9vc2VzIHRvLgotI2Vsc2UKLSNpbmNsdWRlIDx0
cjEvdHVwbGU+ICAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gIUdURVNUX0hBU19SVFRJICYmIEdURVNU
X0dDQ19WRVJfIDwgNDAzMDIKLQotI2Vsc2UKLS8vIElmIHRoZSBjb21waWxlciBpcyBub3QgR0ND
IDQuMCssIHdlIGFzc3VtZSB0aGUgdXNlciBpcyB1c2luZyBhCi0vLyBzcGVjLWNvbmZvcm1pbmcg
VFIxIGltcGxlbWVudGF0aW9uLgotI2luY2x1ZGUgPHR1cGxlPiAgLy8gTk9MSU5UCi0jZW5kaWYg
IC8vIEdURVNUX1VTRV9PV05fVFIxX1RVUExFCisjICAgZGVmaW5lIF9UUjFfRlVOQ1RJT05BTCAx
CisjICAgaW5jbHVkZSA8dHIxL3R1cGxlPgorIyAgIHVuZGVmIF9UUjFfRlVOQ1RJT05BTCAgLy8g
QWxsb3dzIHRoZSB1c2VyIHRvICNpbmNsdWRlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyA8
dHIxL2Z1bmN0aW9uYWw+IGlmIHRoZXkgY2hvb3NlIHRvLgorIyAgZWxzZQorIyAgIGluY2x1ZGUg
PHRyMS90dXBsZT4gIC8vIE5PTElOVAorIyAgZW5kaWYgIC8vICFHVEVTVF9IQVNfUlRUSSAmJiBH
VEVTVF9HQ0NfVkVSXyA8IDQwMzAyCisKKy8vIFZTIDIwMTAgbm93IGhhcyB0cjEgc3VwcG9ydC4K
KyMgZWxpZiBfTVNDX1ZFUiA+PSAxNjAwCisjICBpbmNsdWRlIDx0dXBsZT4gIC8vIElXWVUgcHJh
Z21hOiBleHBvcnQgIC8vIE5PTElOVAorCisjIGVsc2UgIC8vIEdURVNUX1VTRV9PV05fVFIxX1RV
UExFCisjICBpbmNsdWRlIDx0cjEvdHVwbGU+ICAvLyBJV1lVIHByYWdtYTogZXhwb3J0ICAvLyBO
T0xJTlQKKyMgZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fVFIxX1RVUExFCiAKICNlbmRpZiAgLy8g
R1RFU1RfSEFTX1RSMV9UVVBMRQogCkBAIC00ODEsNTkgKzc4Niw4MCBAQAogI2lmbmRlZiBHVEVT
VF9IQVNfQ0xPTkUKIC8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzLCBzbyB3ZSBuZWVkIHRvIGZp
Z3VyZSBpdCBvdXQuCiAKLSNpZiBHVEVTVF9PU19MSU5VWCAmJiAhZGVmaW5lZChfX2lhNjRfXykK
LSNkZWZpbmUgR1RFU1RfSEFTX0NMT05FIDEKLSNlbHNlCi0jZGVmaW5lIEdURVNUX0hBU19DTE9O
RSAwCi0jZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYICYmICFkZWZpbmVkKF9faWE2NF9fKQorIyBp
ZiBHVEVTVF9PU19MSU5VWCAmJiAhZGVmaW5lZChfX2lhNjRfXykKKyMgIGlmIEdURVNUX09TX0xJ
TlVYX0FORFJPSUQKKy8vIE9uIEFuZHJvaWQsIGNsb25lKCkgYmVjYW1lIGF2YWlsYWJsZSBhdCBk
aWZmZXJlbnQgQVBJIGxldmVscyBmb3IgZWFjaCAzMi1iaXQKKy8vIGFyY2hpdGVjdHVyZS4KKyMg
ICAgaWYgZGVmaW5lZChfX0xQNjRfXykgfHwgXAorICAgICAgICAoZGVmaW5lZChfX2FybV9fKSAm
JiBfX0FORFJPSURfQVBJX18gPj0gOSkgfHwgXAorICAgICAgICAoZGVmaW5lZChfX21pcHNfXykg
JiYgX19BTkRST0lEX0FQSV9fID49IDEyKSB8fCBcCisgICAgICAgIChkZWZpbmVkKF9faTM4Nl9f
KSAmJiBfX0FORFJPSURfQVBJX18gPj0gMTcpCisjICAgICBkZWZpbmUgR1RFU1RfSEFTX0NMT05F
IDEKKyMgICAgZWxzZQorIyAgICAgZGVmaW5lIEdURVNUX0hBU19DTE9ORSAwCisjICAgIGVuZGlm
CisjICBlbHNlCisjICAgZGVmaW5lIEdURVNUX0hBU19DTE9ORSAxCisjICBlbmRpZgorIyBlbHNl
CisjICBkZWZpbmUgR1RFU1RfSEFTX0NMT05FIDAKKyMgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVY
ICYmICFkZWZpbmVkKF9faWE2NF9fKQogCiAjZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORQogCiAv
LyBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc3VwcG9ydCBzdHJlYW0gcmVkaXJlY3Rpb24uIFRoaXMg
aXMgdXNlZCB0byB0ZXN0CiAvLyBvdXRwdXQgY29ycmVjdG5lc3MgYW5kIHRvIGltcGxlbWVudCBk
ZWF0aCB0ZXN0cy4KLSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZ
TUJJQU4KLSNkZWZpbmUgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8gMQotI2VuZGlmICAv
LyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZTUJJQU4KKyNpZm5kZWYg
R1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgorLy8gQnkgZGVmYXVsdCwgd2UgYXNzdW1lIHRo
YXQgc3RyZWFtIHJlZGlyZWN0aW9uIGlzIHN1cHBvcnRlZCBvbiBhbGwKKy8vIHBsYXRmb3JtcyBl
eGNlcHQga25vd24gbW9iaWxlIG9uZXMuCisjIGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8
IEdURVNUX09TX1NZTUJJQU4gfHwgXAorICAgIEdURVNUX09TX1dJTkRPV1NfUEhPTkUgfHwgR1RF
U1RfT1NfV0lORE9XU19SVAorIyAgZGVmaW5lIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04g
MAorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTiAxCisjIGVu
ZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNUX09TX1NZTUJJQU4KKyNl
bmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgogCiAvLyBEZXRlcm1pbmVzIHdo
ZXRoZXIgdG8gc3VwcG9ydCBkZWF0aCB0ZXN0cy4KIC8vIEdvb2dsZSBUZXN0IGRvZXMgbm90IHN1
cHBvcnQgZGVhdGggdGVzdHMgZm9yIFZDIDcuMSBhbmQgZWFybGllciBhcwogLy8gYWJvcnQoKSBp
biBhIFZDIDcuMSBhcHBsaWNhdGlvbiBjb21waWxlZCBhcyBHVUkgaW4gZGVidWcgY29uZmlnCiAv
LyBwb3BzIHVwIGEgZGlhbG9nIHdpbmRvdyB0aGF0IGNhbm5vdCBiZSBzdXBwcmVzc2VkIHByb2dy
YW1tYXRpY2FsbHkuCi0jaWYgKEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX0ZSRUVCU0QgfHwg
R1RFU1RfT1NfSFVSRCB8fCBcCi0gICAgIEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19DWUdXSU4g
fHwgR1RFU1RfT1NfU09MQVJJUyB8fCBcCi0gICAgIChHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1Ag
JiYgX01TQ19WRVIgPj0gMTQwMCkgfHwgXAotICAgICBHVEVTVF9PU19XSU5ET1dTX01JTkdXIHx8
IEdURVNUX09TX0FJWCkKLSNkZWZpbmUgR1RFU1RfSEFTX0RFQVRIX1RFU1QgMQotI2luY2x1ZGUg
PHZlY3Rvcj4gIC8vIE5PTElOVAorI2lmIChHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19DWUdX
SU4gfHwgR1RFU1RfT1NfU09MQVJJUyB8fCAgIFwKKyAgICAgKEdURVNUX09TX01BQyAmJiAhR1RF
U1RfT1NfSU9TKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIChHVEVTVF9PU19X
SU5ET1dTX0RFU0tUT1AgJiYgX01TQ19WRVIgPj0gMTQwMCkgfHwgICAgICAgICAgXAorICAgICBH
VEVTVF9PU19XSU5ET1dTX01JTkdXIHx8IEdURVNUX09TX0FJWCB8fCBHVEVTVF9PU19IUFVYIHx8
IFwKKyAgICAgR1RFU1RfT1NfT1BFTkJTRCB8fCBHVEVTVF9PU19RTlggfHwgR1RFU1RfT1NfRlJF
RUJTRCB8fCBcCisgICAgIEdURVNUX09TX05FVEJTRCB8fCBHVEVTVF9PU19GVUNIU0lBKQorIyBk
ZWZpbmUgR1RFU1RfSEFTX0RFQVRIX1RFU1QgMQogI2VuZGlmCiAKLS8vIFdlIGRvbid0IHN1cHBv
cnQgTVNWQyA3LjEgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkIG5vdy4gIFRoZXJlZm9yZQotLy8g
YWxsIHRoZSBjb21waWxlcnMgd2UgY2FyZSBhYm91dCBhcmUgYWRlcXVhdGUgZm9yIHN1cHBvcnRp
bmcKLS8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCi0jZGVmaW5lIEdURVNUX0hBU19QQVJB
TV9URVNUIDEKLQogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHN1cHBvcnQgdHlwZS1kcml2ZW4g
dGVzdHMuCiAKIC8vIFR5cGVkIHRlc3RzIG5lZWQgPHR5cGVpbmZvPiBhbmQgdmFyaWFkaWMgbWFj
cm9zLCB3aGljaCBHQ0MsIFZDKysgOC4wLAotLy8gU3VuIFBybyBDQywgYW5kIElCTSBWaXN1YWwg
QWdlIHN1cHBvcnQuCisvLyBTdW4gUHJvIENDLCBJQk0gVmlzdWFsIEFnZSwgYW5kIEhQIGFDQyBz
dXBwb3J0LgogI2lmIGRlZmluZWQoX19HTlVDX18pIHx8IChfTVNDX1ZFUiA+PSAxNDAwKSB8fCBk
ZWZpbmVkKF9fU1VOUFJPX0NDKSB8fCBcCi0gICAgZGVmaW5lZChfX0lCTUNQUF9fKQotI2RlZmlu
ZSBHVEVTVF9IQVNfVFlQRURfVEVTVCAxCi0jZGVmaW5lIEdURVNUX0hBU19UWVBFRF9URVNUX1Ag
MQorICAgIGRlZmluZWQoX19JQk1DUFBfXykgfHwgZGVmaW5lZChfX0hQX2FDQykKKyMgZGVmaW5l
IEdURVNUX0hBU19UWVBFRF9URVNUIDEKKyMgZGVmaW5lIEdURVNUX0hBU19UWVBFRF9URVNUX1Ag
MQogI2VuZGlmCiAKIC8vIERldGVybWluZXMgd2hldGhlciB0byBzdXBwb3J0IENvbWJpbmUoKS4g
VGhpcyBvbmx5IG1ha2VzIHNlbnNlIHdoZW4KIC8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMg
YXJlIGVuYWJsZWQuICBUaGUgaW1wbGVtZW50YXRpb24gZG9lc24ndAogLy8gd29yayBvbiBTdW4g
U3R1ZGlvIHNpbmNlIGl0IGRvZXNuJ3QgdW5kZXJzdGFuZCB0ZW1wbGF0ZWQgY29udmVyc2lvbgog
Ly8gb3BlcmF0b3JzLgotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUICYmIEdURVNUX0hBU19UUjFf
VFVQTEUgJiYgIWRlZmluZWQoX19TVU5QUk9fQ0MpCi0jZGVmaW5lIEdURVNUX0hBU19DT01CSU5F
IDEKKyNpZiAoR1RFU1RfSEFTX1RSMV9UVVBMRSB8fCBHVEVTVF9IQVNfU1REX1RVUExFXykgJiYg
IWRlZmluZWQoX19TVU5QUk9fQ0MpCisjIGRlZmluZSBHVEVTVF9IQVNfQ09NQklORSAxCiAjZW5k
aWYKIAogLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzeXN0ZW0gY29tcGlsZXIgdXNlcyBVVEYt
MTYgZm9yIGVuY29kaW5nIHdpZGUgc3RyaW5ncy4KICNkZWZpbmUgR1RFU1RfV0lERV9TVFJJTkdf
VVNFU19VVEYxNl8gXAogICAgIChHVEVTVF9PU19XSU5ET1dTIHx8IEdURVNUX09TX0NZR1dJTiB8
fCBHVEVTVF9PU19TWU1CSUFOIHx8IEdURVNUX09TX0FJWCkKIAorLy8gRGV0ZXJtaW5lcyB3aGV0
aGVyIHRlc3QgcmVzdWx0cyBjYW4gYmUgc3RyZWFtZWQgdG8gYSBzb2NrZXQuCisjaWYgR1RFU1Rf
T1NfTElOVVgKKyMgZGVmaW5lIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18gMQorI2VuZGlmCisK
IC8vIERlZmluZXMgc29tZSB1dGlsaXR5IG1hY3Jvcy4KIAogLy8gVGhlIEdOVSBjb21waWxlciBl
bWl0cyBhIHdhcm5pbmcgaWYgbmVzdGVkICJpZiIgc3RhdGVtZW50cyBhcmUgZm9sbG93ZWQgYnkK
QEAgLTU0NSw5ICs4NzEsOSBAQAogLy8KIC8vIFRoZSAic3dpdGNoICgwKSBjYXNlIDA6IiBpZGlv
bSBpcyB1c2VkIHRvIHN1cHByZXNzIHRoaXMuCiAjaWZkZWYgX19JTlRFTF9DT01QSUxFUgotI2Rl
ZmluZSBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXworIyBkZWZpbmUgR1RFU1RfQU1CSUdV
T1VTX0VMU0VfQkxPQ0tFUl8KICNlbHNlCi0jZGVmaW5lIEdURVNUX0FNQklHVU9VU19FTFNFX0JM
T0NLRVJfIHN3aXRjaCAoMCkgY2FzZSAwOiAgLy8gTk9MSU5UCisjIGRlZmluZSBHVEVTVF9BTUJJ
R1VPVVNfRUxTRV9CTE9DS0VSXyBzd2l0Y2ggKDApIGNhc2UgMDogZGVmYXVsdDogIC8vIE5PTElO
VAogI2VuZGlmCiAKIC8vIFVzZSB0aGlzIGFubm90YXRpb24gYXQgdGhlIGVuZCBvZiBhIHN0cnVj
dC9jbGFzcyBkZWZpbml0aW9uIHRvCkBAIC01NjIsMjAgKzg4OCw0OSBAQAogLy8gQWxzbyB1c2Ug
aXQgYWZ0ZXIgYSB2YXJpYWJsZSBvciBwYXJhbWV0ZXIgZGVjbGFyYXRpb24gdG8gdGVsbCB0aGUK
IC8vIGNvbXBpbGVyIHRoZSB2YXJpYWJsZS9wYXJhbWV0ZXIgZG9lcyBub3QgaGF2ZSB0byBiZSB1
c2VkLgogI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKENPTVBJTEVSX0lDQykKLSNk
ZWZpbmUgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCisj
IGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkK
KyNlbGlmIGRlZmluZWQoX19jbGFuZ19fKQorIyBpZiBfX2hhc19hdHRyaWJ1dGUodW51c2VkKQor
IyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfIF9fYXR0cmlidXRlX18gKCh1bnVzZWQp
KQorIyBlbmRpZgorI2VuZGlmCisjaWZuZGVmIEdURVNUX0FUVFJJQlVURV9VTlVTRURfCisjIGRl
ZmluZSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXworI2VuZGlmCisKKyNpZiBHVEVTVF9MQU5HX0NY
WDExCisjIGRlZmluZSBHVEVTVF9DWFgxMV9FUVVBTFNfREVMRVRFXyA9IGRlbGV0ZQorI2Vsc2Ug
IC8vIEdURVNUX0xBTkdfQ1hYMTEKKyMgZGVmaW5lIEdURVNUX0NYWDExX0VRVUFMU19ERUxFVEVf
CisjZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKworLy8gVXNlIHRoaXMgYW5ub3RhdGlvbiBi
ZWZvcmUgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgcHJpbnRmIGZvcm1hdCBzdHJpbmcuCisjaWYg
KGRlZmluZWQoX19HTlVDX18pIHx8IGRlZmluZWQoX19jbGFuZ19fKSkgJiYgIWRlZmluZWQoQ09N
UElMRVJfSUNDKQorIyBpZiBkZWZpbmVkKF9fTUlOR1dfUFJJTlRGX0ZPUk1BVCkKKy8vIE1pbkdX
IGhhcyB0d28gZGlmZmVyZW50IHByaW50ZiBpbXBsZW1lbnRhdGlvbnMuIEVuc3VyZSB0aGUgZm9y
bWF0IG1hY3JvCisvLyBtYXRjaGVzIHRoZSBzZWxlY3RlZCBpbXBsZW1lbnRhdGlvbi4gU2VlCisv
LyBodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wL21pbmd3LXc2NC93aWtpMi9nbnUlMjBwcmludGYv
LgorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9QUklOVEZfKHN0cmluZ19pbmRleCwgZmlyc3Rf
dG9fY2hlY2spIFwKKyAgICAgICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fTUlOR1dfUFJJ
TlRGX0ZPUk1BVCwgc3RyaW5nX2luZGV4LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaXJzdF90b19jaGVjaykpKQorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRF
X1BSSU5URl8oc3RyaW5nX2luZGV4LCBmaXJzdF90b19jaGVjaykgXAorICAgICAgIF9fYXR0cmli
dXRlX18oKF9fZm9ybWF0X18oX19wcmludGZfXywgc3RyaW5nX2luZGV4LCBmaXJzdF90b19jaGVj
aykpKQorIyBlbmRpZgogI2Vsc2UKLSNkZWZpbmUgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8KKyMg
ZGVmaW5lIEdURVNUX0FUVFJJQlVURV9QUklOVEZfKHN0cmluZ19pbmRleCwgZmlyc3RfdG9fY2hl
Y2spCiAjZW5kaWYKIAorCiAvLyBBIG1hY3JvIHRvIGRpc2FsbG93IG9wZXJhdG9yPQogLy8gVGhp
cyBzaG91bGQgYmUgdXNlZCBpbiB0aGUgcHJpdmF0ZTogZGVjbGFyYXRpb25zIGZvciBhIGNsYXNz
LgotI2RlZmluZSBHVEVTVF9ESVNBTExPV19BU1NJR05fKHR5cGUpXAotICB2b2lkIG9wZXJhdG9y
PSh0eXBlIGNvbnN0ICYpCisjZGVmaW5lIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8odHlwZSkgXAor
ICB2b2lkIG9wZXJhdG9yPSh0eXBlIGNvbnN0ICYpIEdURVNUX0NYWDExX0VRVUFMU19ERUxFVEVf
CiAKIC8vIEEgbWFjcm8gdG8gZGlzYWxsb3cgY29weSBjb25zdHJ1Y3RvciBhbmQgb3BlcmF0b3I9
CiAvLyBUaGlzIHNob3VsZCBiZSB1c2VkIGluIHRoZSBwcml2YXRlOiBkZWNsYXJhdGlvbnMgZm9y
IGEgY2xhc3MuCi0jZGVmaW5lIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8odHlwZSlc
Ci0gIHR5cGUodHlwZSBjb25zdCAmKTtcCisjZGVmaW5lIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8odHlwZSkgXAorICB0eXBlKHR5cGUgY29uc3QgJikgR1RFU1RfQ1hYMTFfRVFVQUxT
X0RFTEVURV87IFwKICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyh0eXBlKQogCiAvLyBUZWxsIHRo
ZSBjb21waWxlciB0byB3YXJuIGFib3V0IHVudXNlZCByZXR1cm4gdmFsdWVzIGZvciBmdW5jdGlv
bnMgZGVjbGFyZWQKQEAgLTU4NCw3MiArOTM5LDI1MCBAQAogLy8KIC8vICAgU3Byb2NrZXQqIEFs
bG9jYXRlU3Byb2NrZXQoKSBHVEVTVF9NVVNUX1VTRV9SRVNVTFRfOwogI2lmIGRlZmluZWQoX19H
TlVDX18pICYmIChHVEVTVF9HQ0NfVkVSXyA+PSAzMDQwMCkgJiYgIWRlZmluZWQoQ09NUElMRVJf
SUNDKQotI2RlZmluZSBHVEVTVF9NVVNUX1VTRV9SRVNVTFRfIF9fYXR0cmlidXRlX18gKCh3YXJu
X3VudXNlZF9yZXN1bHQpKQorIyBkZWZpbmUgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXyBfX2F0dHJp
YnV0ZV9fICgod2Fybl91bnVzZWRfcmVzdWx0KSkKICNlbHNlCi0jZGVmaW5lIEdURVNUX01VU1Rf
VVNFX1JFU1VMVF8KKyMgZGVmaW5lIEdURVNUX01VU1RfVVNFX1JFU1VMVF8KICNlbmRpZiAgLy8g
X19HTlVDX18gJiYgKEdURVNUX0dDQ19WRVJfID49IDMwNDAwKSAmJiAhQ09NUElMRVJfSUNDCiAK
Ky8vIE1TIEMrKyBjb21waWxlciBlbWl0cyB3YXJuaW5nIHdoZW4gYSBjb25kaXRpb25hbCBleHBy
ZXNzaW9uIGlzIGNvbXBpbGUgdGltZQorLy8gY29uc3RhbnQuIEluIHNvbWUgY29udGV4dHMgdGhp
cyB3YXJuaW5nIGlzIGZhbHNlIHBvc2l0aXZlIGFuZCBuZWVkcyB0byBiZQorLy8gc3VwcHJlc3Nl
ZC4gVXNlIHRoZSBmb2xsb3dpbmcgdHdvIG1hY3JvcyBpbiBzdWNoIGNhc2VzOgorLy8KKy8vIEdU
RVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUFVTSF8oKQorLy8gd2hpbGUgKHRydWUpIHsKKy8v
IEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUE9QXygpCisvLyB9CisjIGRlZmluZSBHVEVT
VF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BVU0hfKCkgXAorICAgIEdURVNUX0RJU0FCTEVfTVND
X1dBUk5JTkdTX1BVU0hfKDQxMjcpCisjIGRlZmluZSBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9D
T05EX1BPUF8oKSBcCisgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCisKIC8v
IERldGVybWluZSB3aGV0aGVyIHRoZSBjb21waWxlciBzdXBwb3J0cyBNaWNyb3NvZnQncyBTdHJ1
Y3R1cmVkIEV4Y2VwdGlvbgogLy8gSGFuZGxpbmcuICBUaGlzIGlzIHN1cHBvcnRlZCBieSBzZXZl
cmFsIFdpbmRvd3MgY29tcGlsZXJzIGJ1dCBnZW5lcmFsbHkKIC8vIGRvZXMgbm90IGV4aXN0IG9u
IGFueSBvdGhlciBzeXN0ZW0uCiAjaWZuZGVmIEdURVNUX0hBU19TRUgKIC8vIFRoZSB1c2VyIGRp
ZG4ndCB0ZWxsIHVzLCBzbyB3ZSBuZWVkIHRvIGZpZ3VyZSBpdCBvdXQuCiAKLSNpZiBkZWZpbmVk
KF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykKKyMgaWYgZGVmaW5lZChfTVNDX1ZF
UikgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pCiAvLyBUaGVzZSB0d28gY29tcGlsZXJzIGFyZSBr
bm93biB0byBzdXBwb3J0IFNFSC4KLSNkZWZpbmUgR1RFU1RfSEFTX1NFSCAxCi0jZWxzZQorIyAg
ZGVmaW5lIEdURVNUX0hBU19TRUggMQorIyBlbHNlCiAvLyBBc3N1bWUgbm8gU0VILgotI2RlZmlu
ZSBHVEVTVF9IQVNfU0VIIDAKLSNlbmRpZgorIyAgZGVmaW5lIEdURVNUX0hBU19TRUggMAorIyBl
bmRpZgogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKKyNkZWZpbmUgR1RFU1RfSVNfVEhSRUFE
U0FGRSBcCisgICAgKEdURVNUX0hBU19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMXyBcCisgICAgIHx8
IChHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9P
U19XSU5ET1dTX1JUKSBcCisgICAgIHx8IEdURVNUX0hBU19QVEhSRUFEKQogCi0jaWZkZWYgX01T
Q19WRVIKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAogCi0jaWYgR1RFU1RfTElOS0VEX0FTX1NI
QVJFRF9MSUJSQVJZCi0jZGVmaW5lIEdURVNUX0FQSV8gX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0j
ZWxpZiBHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJBUlkKLSNkZWZpbmUgR1RFU1RfQVBJXyBfX2Rl
Y2xzcGVjKGRsbGV4cG9ydCkKLSNlbmRpZgorLy8gR1RFU1RfQVBJXyBxdWFsaWZpZXMgYWxsIHN5
bWJvbHMgdGhhdCBtdXN0IGJlIGV4cG9ydGVkLiBUaGUgZGVmaW5pdGlvbnMgYmVsb3cKKy8vIGFy
ZSBndWFyZGVkIGJ5ICNpZm5kZWYgdG8gZ2l2ZSBlbWJlZGRlcnMgYSBjaGFuY2UgdG8gZGVmaW5l
IEdURVNUX0FQSV8gaW4KKy8vIGd0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmgKKyNp
Zm5kZWYgR1RFU1RfQVBJXwogCisjaWZkZWYgX01TQ19WRVIKKyMgaWYgR1RFU1RfTElOS0VEX0FT
X1NIQVJFRF9MSUJSQVJZCisjICBkZWZpbmUgR1RFU1RfQVBJXyBfX2RlY2xzcGVjKGRsbGltcG9y
dCkKKyMgZWxpZiBHVEVTVF9DUkVBVEVfU0hBUkVEX0xJQlJBUlkKKyMgIGRlZmluZSBHVEVTVF9B
UElfIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorIyBlbmRpZgorI2VsaWYgX19HTlVDX18gPj0gNCB8
fCBkZWZpbmVkKF9fY2xhbmdfXykKKyMgZGVmaW5lIEdURVNUX0FQSV8gX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAjZW5kaWYgIC8vIF9NU0NfVkVSCiAKKyNlbmRpZiAg
Ly8gR1RFU1RfQVBJXworCiAjaWZuZGVmIEdURVNUX0FQSV8KLSNkZWZpbmUgR1RFU1RfQVBJXwor
IyBkZWZpbmUgR1RFU1RfQVBJXworI2VuZGlmICAvLyBHVEVTVF9BUElfCisKKyNpZm5kZWYgR1RF
U1RfREVGQVVMVF9ERUFUSF9URVNUX1NUWUxFCisjIGRlZmluZSBHVEVTVF9ERUZBVUxUX0RFQVRI
X1RFU1RfU1RZTEUgICJmYXN0IgorI2VuZGlmICAvLyBHVEVTVF9ERUZBVUxUX0RFQVRIX1RFU1Rf
U1RZTEUKKworI2lmZGVmIF9fR05VQ19fCisvLyBBc2sgdGhlIGNvbXBpbGVyIHRvIG5ldmVyIGlu
bGluZSBhIGdpdmVuIGZ1bmN0aW9uLgorIyBkZWZpbmUgR1RFU1RfTk9fSU5MSU5FXyBfX2F0dHJp
YnV0ZV9fKChub2lubGluZSkpCisjZWxzZQorIyBkZWZpbmUgR1RFU1RfTk9fSU5MSU5FXwogI2Vu
ZGlmCiAKKy8vIF9MSUJDUFBfVkVSU0lPTiBpcyBkZWZpbmVkIGJ5IHRoZSBsaWJjKysgbGlicmFy
eSBmcm9tIHRoZSBMTFZNIHByb2plY3QuCisjaWYgIWRlZmluZWQoR1RFU1RfSEFTX0NYWEFCSV9I
XykKKyMgaWYgZGVmaW5lZChfX0dMSUJDWFhfXykgfHwgKGRlZmluZWQoX0xJQkNQUF9WRVJTSU9O
KSAmJiAhZGVmaW5lZChfTVNDX1ZFUikpCisjICBkZWZpbmUgR1RFU1RfSEFTX0NYWEFCSV9IXyAx
CisjIGVsc2UKKyMgIGRlZmluZSBHVEVTVF9IQVNfQ1hYQUJJX0hfIDAKKyMgZW5kaWYKKyNlbmRp
ZgorCisvLyBBIGZ1bmN0aW9uIGxldmVsIGF0dHJpYnV0ZSB0byBkaXNhYmxlIGNoZWNraW5nIGZv
ciB1c2Ugb2YgdW5pbml0aWFsaXplZAorLy8gbWVtb3J5IHdoZW4gYnVpbHQgd2l0aCBNZW1vcnlT
YW5pdGl6ZXIuCisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisjIGlmIF9faGFzX2ZlYXR1cmUobWVt
b3J5X3Nhbml0aXplcikKKyMgIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfTUVN
T1JZXyBcCisgICAgICAgX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfbWVtb3J5KSkKKyMgZWxz
ZQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9NRU1PUllfCisjIGVuZGlm
ICAvLyBfX2hhc19mZWF0dXJlKG1lbW9yeV9zYW5pdGl6ZXIpCisjZWxzZQorIyBkZWZpbmUgR1RF
U1RfQVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8KKyNlbmRpZiAgLy8gX19jbGFuZ19fCisK
Ky8vIEEgZnVuY3Rpb24gbGV2ZWwgYXR0cmlidXRlIHRvIGRpc2FibGUgQWRkcmVzc1Nhbml0aXpl
ciBpbnN0cnVtZW50YXRpb24uCisjaWYgZGVmaW5lZChfX2NsYW5nX18pCisjIGlmIF9faGFzX2Zl
YXR1cmUoYWRkcmVzc19zYW5pdGl6ZXIpCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NB
TklUSVpFX0FERFJFU1NfIFwKKyAgICAgICBfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV9hZGRy
ZXNzKSkKKyMgZWxzZQorIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERS
RVNTXworIyBlbmRpZiAgLy8gX19oYXNfZmVhdHVyZShhZGRyZXNzX3Nhbml0aXplcikKKyNlbHNl
CisjIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTU18KKyNlbmRpZiAg
Ly8gX19jbGFuZ19fCisKKy8vIEEgZnVuY3Rpb24gbGV2ZWwgYXR0cmlidXRlIHRvIGRpc2FibGUg
VGhyZWFkU2FuaXRpemVyIGluc3RydW1lbnRhdGlvbi4KKyNpZiBkZWZpbmVkKF9fY2xhbmdfXykK
KyMgaWYgX19oYXNfZmVhdHVyZSh0aHJlYWRfc2FuaXRpemVyKQorIyAgZGVmaW5lIEdURVNUX0FU
VFJJQlVURV9OT19TQU5JVElaRV9USFJFQURfIFwKKyAgICAgICBfX2F0dHJpYnV0ZV9fKChub19z
YW5pdGl6ZV90aHJlYWQpKQorIyBlbHNlCisjICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NB
TklUSVpFX1RIUkVBRF8KKyMgZW5kaWYgIC8vIF9faGFzX2ZlYXR1cmUodGhyZWFkX3Nhbml0aXpl
cikKKyNlbHNlCisjIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXwor
I2VuZGlmICAvLyBfX2NsYW5nX18KKwogbmFtZXNwYWNlIHRlc3RpbmcgewogCiBjbGFzcyBNZXNz
YWdlOwogCisjaWYgZGVmaW5lZChHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfKQorLy8gSW1wb3J0IHR1
cGxlIGFuZCBmcmllbmRzIGludG8gdGhlIDo6dGVzdGluZyBuYW1lc3BhY2UuCisvLyBJdCBpcyBw
YXJ0IG9mIG91ciBpbnRlcmZhY2UsIGhhdmluZyB0aGVtIGluIDo6dGVzdGluZyBhbGxvd3MgdXMg
dG8gY2hhbmdlCisvLyB0aGVpciB0eXBlcyBhcyBuZWVkZWQuCit1c2luZyBHVEVTVF9UVVBMRV9O
QU1FU1BBQ0VfOjpnZXQ7Cit1c2luZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjptYWtlX3R1cGxl
OwordXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXzo6dHVwbGU7Cit1c2luZyBHVEVTVF9UVVBM
RV9OQU1FU1BBQ0VfOjp0dXBsZV9zaXplOwordXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXzo6
dHVwbGVfZWxlbWVudDsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9UVVBMRV9OQU1FU1BBQ0Vf
KQorCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCi1jbGFzcyBTdHJpbmc7CisvLyBBIHNlY3JldCB0
eXBlIHRoYXQgR29vZ2xlIFRlc3QgdXNlcnMgZG9uJ3Qga25vdyBhYm91dC4gIEl0IGhhcyBubwor
Ly8gZGVmaW5pdGlvbiBvbiBwdXJwb3NlLiAgVGhlcmVmb3JlIGl0J3MgaW1wb3NzaWJsZSB0byBj
cmVhdGUgYQorLy8gU2VjcmV0IG9iamVjdCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LgorY2xhc3Mg
U2VjcmV0OwogCi1jbGFzcyBTdHJTdHJlYW0gOiBwdWJsaWMgOjpzdGQ6OnN0cmluZ3N0cmVhbSB7
Ci0gcHVibGljOgotICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVy
biBwOyB9Ci0gIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4g
cDsgfQorLy8gVGhlIEdURVNUX0NPTVBJTEVfQVNTRVJUXyBtYWNybyBjYW4gYmUgdXNlZCB0byB2
ZXJpZnkgdGhhdCBhIGNvbXBpbGUgdGltZQorLy8gZXhwcmVzc2lvbiBpcyB0cnVlLiBGb3IgZXhh
bXBsZSwgeW91IGNvdWxkIHVzZSBpdCB0byB2ZXJpZnkgdGhlCisvLyBzaXplIG9mIGEgc3RhdGlj
IGFycmF5OgorLy8KKy8vICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKEdURVNUX0FSUkFZX1NJWkVf
KG5hbWVzKSA9PSBOVU1fTkFNRVMsCisvLyAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc19p
bmNvcnJlY3Rfc2l6ZSk7CisvLworLy8gb3IgdG8gbWFrZSBzdXJlIGEgc3RydWN0IGlzIHNtYWxs
ZXIgdGhhbiBhIGNlcnRhaW4gc2l6ZToKKy8vCisvLyAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhz
aXplb2YoZm9vKSA8IDEyOCwgZm9vX3Rvb19sYXJnZSk7CisvLworLy8gVGhlIHNlY29uZCBhcmd1
bWVudCB0byB0aGUgbWFjcm8gaXMgdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlLiBJZgorLy8gdGhl
IGV4cHJlc3Npb24gaXMgZmFsc2UsIG1vc3QgY29tcGlsZXJzIHdpbGwgaXNzdWUgYSB3YXJuaW5n
L2Vycm9yCisvLyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZS4KKworI2lmIEdU
RVNUX0xBTkdfQ1hYMTEKKyMgZGVmaW5lIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhleHByLCBtc2cp
IHN0YXRpY19hc3NlcnQoZXhwciwgI21zZykKKyNlbHNlICAvLyAhR1RFU1RfTEFOR19DWFgxMQor
dGVtcGxhdGUgPGJvb2w+CisgIHN0cnVjdCBDb21waWxlQXNzZXJ0IHsKK307CiAKLSAgdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7Ci0gICAgcmV0dXJuIG1hbGxvYyhzaXplKTsKLSAg
fQorIyBkZWZpbmUgR1RFU1RfQ09NUElMRV9BU1NFUlRfKGV4cHIsIG1zZykgXAorICB0eXBlZGVm
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvbXBpbGVBc3NlcnQ8KHN0YXRpY19jYXN0PGJvb2w+KGV4
cHIpKT4gXAorICAgICAgbXNnW3N0YXRpY19jYXN0PGJvb2w+KGV4cHIpID8gMSA6IC0xXSBHVEVT
VF9BVFRSSUJVVEVfVU5VU0VEXworI2VuZGlmICAvLyAhR1RFU1RfTEFOR19DWFgxMQogCi0gIHZv
aWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsKLSAgICBmcmVlKHApOwotICB9CisvLyBJbXBs
ZW1lbnRhdGlvbiBkZXRhaWxzIG9mIEdURVNUX0NPTVBJTEVfQVNTRVJUXzoKKy8vCisvLyAoSW4g
QysrMTEsIHdlIHNpbXBseSB1c2Ugc3RhdGljX2Fzc2VydCBpbnN0ZWFkIG9mIHRoZSBmb2xsb3dp
bmcpCisvLworLy8gLSBHVEVTVF9DT01QSUxFX0FTU0VSVF8gd29ya3MgYnkgZGVmaW5pbmcgYW4g
YXJyYXkgdHlwZSB0aGF0IGhhcyAtMQorLy8gICBlbGVtZW50cyAoYW5kIHRodXMgaXMgaW52YWxp
ZCkgd2hlbiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZS4KKy8vCisvLyAtIFRoZSBzaW1wbGVyIGRl
ZmluaXRpb24KKy8vCisvLyAgICAjZGVmaW5lIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhleHByLCBt
c2cpIHR5cGVkZWYgY2hhciBtc2dbKGV4cHIpID8gMSA6IC0xXQorLy8KKy8vICAgZG9lcyBub3Qg
d29yaywgYXMgZ2NjIHN1cHBvcnRzIHZhcmlhYmxlLWxlbmd0aCBhcnJheXMgd2hvc2Ugc2l6ZXMK
Ky8vICAgYXJlIGRldGVybWluZWQgYXQgcnVuLXRpbWUgKHRoaXMgaXMgZ2NjJ3MgZXh0ZW5zaW9u
IGFuZCBub3QgcGFydAorLy8gICBvZiB0aGUgQysrIHN0YW5kYXJkKS4gIEFzIGEgcmVzdWx0LCBn
Y2MgZmFpbHMgdG8gcmVqZWN0IHRoZQorLy8gICBmb2xsb3dpbmcgY29kZSB3aXRoIHRoZSBzaW1w
bGUgZGVmaW5pdGlvbjoKKy8vCisvLyAgICAgaW50IGZvbzsKKy8vICAgICBHVEVTVF9DT01QSUxF
X0FTU0VSVF8oZm9vLCBtc2cpOyAvLyBub3Qgc3VwcG9zZWQgdG8gY29tcGlsZSBhcyBmb28gaXMK
Ky8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBub3QgYSBjb21waWxl
LXRpbWUgY29uc3RhbnQuCisvLworLy8gLSBCeSB1c2luZyB0aGUgdHlwZSBDb21waWxlQXNzZXJ0
PChib29sKGV4cHIpKT4sIHdlIGVuc3VyZXMgdGhhdAorLy8gICBleHByIGlzIGEgY29tcGlsZS10
aW1lIGNvbnN0YW50LiAgKFRlbXBsYXRlIGFyZ3VtZW50cyBtdXN0IGJlCisvLyAgIGRldGVybWlu
ZWQgYXQgY29tcGlsZS10aW1lLikKKy8vCisvLyAtIFRoZSBvdXR0ZXIgcGFyZW50aGVzZXMgaW4g
Q29tcGlsZUFzc2VydDwoYm9vbChleHByKSk+IGFyZSBuZWNlc3NhcnkKKy8vICAgdG8gd29yayBh
cm91bmQgYSBidWcgaW4gZ2NjIDMuNC40IGFuZCA0LjAuMS4gIElmIHdlIGhhZCB3cml0dGVuCisv
LworLy8gICAgIENvbXBpbGVBc3NlcnQ8Ym9vbChleHByKT4KKy8vCisvLyAgIGluc3RlYWQsIHRo
ZXNlIGNvbXBpbGVycyB3aWxsIHJlZnVzZSB0byBjb21waWxlCisvLworLy8gICAgIEdURVNUX0NP
TVBJTEVfQVNTRVJUXyg1ID4gMCwgc29tZV9tZXNzYWdlKTsKKy8vCisvLyAgIChUaGV5IHNlZW0g
dG8gdGhpbmsgdGhlICI+IiBpbiAiNSA+IDAiIG1hcmtzIHRoZSBlbmQgb2YgdGhlCisvLyAgIHRl
bXBsYXRlIGFyZ3VtZW50IGxpc3QuKQorLy8KKy8vIC0gVGhlIGFycmF5IHNpemUgaXMgKGJvb2wo
ZXhwcikgPyAxIDogLTEpLCBpbnN0ZWFkIG9mIHNpbXBseQorLy8KKy8vICAgICAoKGV4cHIpID8g
MSA6IC0xKS4KKy8vCisvLyAgIFRoaXMgaXMgdG8gYXZvaWQgcnVubmluZyBpbnRvIGEgYnVnIGlu
IE1TIFZDIDcuMSwgd2hpY2gKKy8vICAgY2F1c2VzICgoMC4wKSA/IDEgOiAtMSkgdG8gaW5jb3Jy
ZWN0bHkgZXZhbHVhdGUgdG8gMS4KIAotICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6
ZSkgewotICAgIHJldHVybiBtYWxsb2Moc2l6ZSk7Ci0gIH0KKy8vIFN0YXRpY0Fzc2VydFR5cGVF
cUhlbHBlciBpcyB1c2VkIGJ5IFN0YXRpY0Fzc2VydFR5cGVFcSBkZWZpbmVkIGluIGd0ZXN0Lmgu
CisvLworLy8gVGhpcyB0ZW1wbGF0ZSBpcyBkZWNsYXJlZCwgYnV0IGludGVudGlvbmFsbHkgdW5k
ZWZpbmVkLgordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3N0cnVjdCBTdGF0
aWNBc3NlcnRUeXBlRXFIZWxwZXI7CiAKLSAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBw
KSB7Ci0gICAgZnJlZShwKTsKLSAgfQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgU3Rh
dGljQXNzZXJ0VHlwZUVxSGVscGVyPFQsIFQ+IHsKKyAgZW51bSB7IHZhbHVlID0gdHJ1ZSB9Owog
fTsKIAorLy8gU2FtZSBhcyBzdGQ6OmlzX3NhbWU8Pi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgorc3RydWN0IElzU2FtZSB7CisgIGVudW0geyB2YWx1ZSA9IGZhbHNlIH07Cit9
OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNTYW1lPFQsIFQ+IHsKKyAgZW51bSB7
IHZhbHVlID0gdHJ1ZSB9OworfTsKIAorLy8gRXZhbHVhdGVzIHRvIHRoZSBudW1iZXIgb2YgZWxl
bWVudHMgaW4gJ2FycmF5Jy4KKyNkZWZpbmUgR1RFU1RfQVJSQVlfU0laRV8oYXJyYXkpIChzaXpl
b2YoYXJyYXkpIC8gc2l6ZW9mKGFycmF5WzBdKSkKKworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RS
SU5HCit0eXBlZGVmIDo6c3RyaW5nIHN0cmluZzsKKyNlbHNlCit0eXBlZGVmIDo6c3RkOjpzdHJp
bmcgc3RyaW5nOworI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCisjaWYgR1RF
U1RfSEFTX0dMT0JBTF9XU1RSSU5HCit0eXBlZGVmIDo6d3N0cmluZyB3c3RyaW5nOworI2VsaWYg
R1RFU1RfSEFTX1NURF9XU1RSSU5HCit0eXBlZGVmIDo6c3RkOjp3c3RyaW5nIHdzdHJpbmc7Cisj
ZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwogCiAvLyBBIGhlbHBlciBmb3Igc3Vw
cHJlc3Npbmcgd2FybmluZ3Mgb24gY29uc3RhbnQgY29uZGl0aW9uLiAgSXQganVzdAogLy8gcmV0
dXJucyAnY29uZGl0aW9uJy4KQEAgLTY4NSw2ICsxMjE4LDEyIEBAIGNsYXNzIHNjb3BlZF9wdHIg
ewogICAgICAgcHRyXyA9IHA7CiAgICAgfQogICB9CisKKyAgZnJpZW5kIHZvaWQgc3dhcChzY29w
ZWRfcHRyJiBhLCBzY29wZWRfcHRyJiBiKSB7CisgICAgdXNpbmcgc3RkOjpzd2FwOworICAgIHN3
YXAoYS5wdHJfLCBiLnB0cl8pOworICB9CisKICBwcml2YXRlOgogICBUKiBwdHJfOwogCkBAIC02
OTMsNiArMTIzMiwxMCBAQCBjbGFzcyBzY29wZWRfcHRyIHsKIAogLy8gRGVmaW5lcyBSRS4KIAor
I2lmIEdURVNUX1VTRVNfUENSRQorLy8gaWYgdXNlZCwgUENSRSBpcyBpbmplY3RlZCBieSBjdXN0
b20vZ3Rlc3QtcG9ydC5oCisjZWxpZiBHVEVTVF9VU0VTX1BPU0lYX1JFIHx8IEdURVNUX1VTRVNf
U0lNUExFX1JFCisKIC8vIEEgc2ltcGxlIEMrKyB3cmFwcGVyIGZvciA8cmVnZXguaD4uICBJdCB1
c2VzIHRoZSBQT1NJWCBFeHRlbmRlZAogLy8gUmVndWxhciBFeHByZXNzaW9uIHN5bnRheC4KIGNs
YXNzIEdURVNUX0FQSV8gUkUgewpAQCAtNzA0LDkgKzEyNDcsMTEgQEAgY2xhc3MgR1RFU1RfQVBJ
XyBSRSB7CiAgIC8vIENvbnN0cnVjdHMgYW4gUkUgZnJvbSBhIHN0cmluZy4KICAgUkUoY29uc3Qg
OjpzdGQ6OnN0cmluZyYgcmVnZXgpIHsgSW5pdChyZWdleC5jX3N0cigpKTsgfSAgLy8gTk9MSU5U
CiAKLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworIyBpZiBHVEVTVF9IQVNfR0xPQkFMX1NU
UklORworCiAgIFJFKGNvbnN0IDo6c3RyaW5nJiByZWdleCkgeyBJbml0KHJlZ2V4LmNfc3RyKCkp
OyB9ICAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKKworIyBl
bmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKIAogICBSRShjb25zdCBjaGFyKiByZWdl
eCkgeyBJbml0KHJlZ2V4KTsgfSAgLy8gTk9MSU5UCiAgIH5SRSgpOwpAQCAtNzE5LDcgKzEyNjQs
NyBAQCBjbGFzcyBHVEVTVF9BUElfIFJFIHsKICAgLy8gUGFydGlhbE1hdGNoKHN0ciwgcmUpIHJl
dHVybnMgdHJ1ZSBpZmYgcmVndWxhciBleHByZXNzaW9uIHJlCiAgIC8vIG1hdGNoZXMgYSBzdWJz
dHJpbmcgb2Ygc3RyIChpbmNsdWRpbmcgc3RyIGl0c2VsZikuCiAgIC8vCi0gIC8vIFRPRE8od2Fu
QGdvb2dsZS5jb20pOiBtYWtlIEZ1bGxNYXRjaCgpIGFuZCBQYXJ0aWFsTWF0Y2goKSB3b3JrCisg
IC8vIEZJWE1FOiBtYWtlIEZ1bGxNYXRjaCgpIGFuZCBQYXJ0aWFsTWF0Y2goKSB3b3JrCiAgIC8v
IHdoZW4gc3RyIGNvbnRhaW5zIE5VTCBjaGFyYWN0ZXJzLgogICBzdGF0aWMgYm9vbCBGdWxsTWF0
Y2goY29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyLCBjb25zdCBSRSYgcmUpIHsKICAgICByZXR1cm4g
RnVsbE1hdGNoKHN0ci5jX3N0cigpLCByZSk7CkBAIC03MjgsMTQgKzEyNzMsMTYgQEAgY2xhc3Mg
R1RFU1RfQVBJXyBSRSB7CiAgICAgcmV0dXJuIFBhcnRpYWxNYXRjaChzdHIuY19zdHIoKSwgcmUp
OwogICB9CiAKLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworIyBpZiBHVEVTVF9IQVNfR0xP
QkFMX1NUUklORworCiAgIHN0YXRpYyBib29sIEZ1bGxNYXRjaChjb25zdCA6OnN0cmluZyYgc3Ry
LCBjb25zdCBSRSYgcmUpIHsKICAgICByZXR1cm4gRnVsbE1hdGNoKHN0ci5jX3N0cigpLCByZSk7
CiAgIH0KICAgc3RhdGljIGJvb2wgUGFydGlhbE1hdGNoKGNvbnN0IDo6c3RyaW5nJiBzdHIsIGNv
bnN0IFJFJiByZSkgewogICAgIHJldHVybiBQYXJ0aWFsTWF0Y2goc3RyLmNfc3RyKCksIHJlKTsK
ICAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCisjIGVuZGlmICAvLyBH
VEVTVF9IQVNfR0xPQkFMX1NUUklORwogCiAgIHN0YXRpYyBib29sIEZ1bGxNYXRjaChjb25zdCBj
aGFyKiBzdHIsIGNvbnN0IFJFJiByZSk7CiAgIHN0YXRpYyBib29sIFBhcnRpYWxNYXRjaChjb25z
dCBjaGFyKiBzdHIsIGNvbnN0IFJFJiByZSk7CkBAIC03NDMsMjIgKzEyOTAsMzggQEAgY2xhc3Mg
R1RFU1RfQVBJXyBSRSB7CiAgcHJpdmF0ZToKICAgdm9pZCBJbml0KGNvbnN0IGNoYXIqIHJlZ2V4
KTsKIAotICAvLyBXZSB1c2UgYSBjb25zdCBjaGFyKiBpbnN0ZWFkIG9mIGEgc3RyaW5nLCBhcyBH
b29nbGUgVGVzdCBtYXkgYmUgdXNlZAotICAvLyB3aGVyZSBzdHJpbmcgaXMgbm90IGF2YWlsYWJs
ZS4gIFdlIGFsc28gZG8gbm90IHVzZSBHb29nbGUgVGVzdCdzIG93bgotICAvLyBTdHJpbmcgdHlw
ZSBoZXJlLCBpbiBvcmRlciB0byBzaW1wbGlmeSBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGUKLSAg
Ly8gZmlsZXMuCisgIC8vIFdlIHVzZSBhIGNvbnN0IGNoYXIqIGluc3RlYWQgb2YgYW4gc3RkOjpz
dHJpbmcsIGFzIEdvb2dsZSBUZXN0IHVzZWQgdG8gYmUKKyAgLy8gdXNlZCB3aGVyZSBzdGQ6OnN0
cmluZyBpcyBub3QgYXZhaWxhYmxlLiAgRklYTUU6IGNoYW5nZSB0bworICAvLyBzdGQ6OnN0cmlu
Zy4KICAgY29uc3QgY2hhciogcGF0dGVybl87CiAgIGJvb2wgaXNfdmFsaWRfOwotI2lmIEdURVNU
X1VTRVNfUE9TSVhfUkUKKworIyBpZiBHVEVTVF9VU0VTX1BPU0lYX1JFCisKICAgcmVnZXhfdCBm
dWxsX3JlZ2V4XzsgICAgIC8vIEZvciBGdWxsTWF0Y2goKS4KICAgcmVnZXhfdCBwYXJ0aWFsX3Jl
Z2V4XzsgIC8vIEZvciBQYXJ0aWFsTWF0Y2goKS4KLSNlbHNlICAvLyBHVEVTVF9VU0VTX1NJTVBM
RV9SRQorCisjIGVsc2UgIC8vIEdURVNUX1VTRVNfU0lNUExFX1JFCisKICAgY29uc3QgY2hhciog
ZnVsbF9wYXR0ZXJuXzsgIC8vIEZvciBGdWxsTWF0Y2goKTsKLSNlbmRpZgorCisjIGVuZGlmCiAK
ICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhSRSk7CiB9OwogCisjZW5kaWYgIC8vIEdURVNUX1VT
RVNfUENSRQorCisvLyBGb3JtYXRzIGEgc291cmNlIGZpbGUgcGF0aCBhbmQgYSBsaW5lIG51bWJl
ciBhcyB0aGV5IHdvdWxkIGFwcGVhcgorLy8gaW4gYW4gZXJyb3IgbWVzc2FnZSBmcm9tIHRoZSBj
b21waWxlciB1c2VkIHRvIGNvbXBpbGUgdGhpcyBjb2RlLgorR1RFU1RfQVBJXyA6OnN0ZDo6c3Ry
aW5nIEZvcm1hdEZpbGVMb2NhdGlvbihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7CisKKy8v
IEZvcm1hdHMgYSBmaWxlIGxvY2F0aW9uIGZvciBjb21waWxlci1pbmRlcGVuZGVudCBYTUwgb3V0
cHV0LgorLy8gQWx0aG91Z2ggdGhpcyBmdW5jdGlvbiBpcyBub3QgcGxhdGZvcm0gZGVwZW5kZW50
LCB3ZSBwdXQgaXQgbmV4dCB0bworLy8gRm9ybWF0RmlsZUxvY2F0aW9uIGluIG9yZGVyIHRvIGNv
bnRyYXN0IHRoZSB0d28gZnVuY3Rpb25zLgorR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEZvcm1h
dENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oY29uc3QgY2hhciogZmlsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBsaW5lKTsKKwogLy8gRGVmaW5lcyBsb2dnaW5nIHV0aWxpdGllczoKIC8vICAgR1RFU1Rf
TE9HXyhzZXZlcml0eSkgLSBsb2dzIG1lc3NhZ2VzIGF0IHRoZSBzcGVjaWZpZWQgc2V2ZXJpdHkg
bGV2ZWwuIFRoZQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgaXRzZWxmIGlz
IHN0cmVhbWVkIGludG8gdGhlIG1hY3JvLgpAQCAtNzkwLDEzICsxMzUzLDE4IEBAIGNsYXNzIEdU
RVNUX0FQSV8gR1Rlc3RMb2cgewogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEdU
ZXN0TG9nKTsKIH07CiAKLSNkZWZpbmUgR1RFU1RfTE9HXyhzZXZlcml0eSkgXAorI2lmICFkZWZp
bmVkKEdURVNUX0xPR18pCisKKyMgZGVmaW5lIEdURVNUX0xPR18oc2V2ZXJpdHkpIFwKICAgICA6
OnRlc3Rpbmc6OmludGVybmFsOjpHVGVzdExvZyg6OnRlc3Rpbmc6OmludGVybmFsOjpHVEVTVF8j
I3NldmVyaXR5LCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18s
IF9fTElORV9fKS5HZXRTdHJlYW0oKQogCiBpbmxpbmUgdm9pZCBMb2dUb1N0ZGVycigpIHt9CiBp
bmxpbmUgdm9pZCBGbHVzaEluZm9Mb2coKSB7IGZmbHVzaChOVUxMKTsgfQogCisjZW5kaWYgIC8v
ICFkZWZpbmVkKEdURVNUX0xPR18pCisKKyNpZiAhZGVmaW5lZChHVEVTVF9DSEVDS18pCiAvLyBJ
TlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UuCiAvLwogLy8gR1RFU1RfQ0hFQ0tf
IGlzIGFuIGFsbC1tb2RlIGFzc2VydC4gSXQgYWJvcnRzIHRoZSBwcm9ncmFtIGlmIHRoZSBjb25k
aXRpb24KQEAgLTgxMSwxMiArMTM3OSwxMyBAQCBpbmxpbmUgdm9pZCBGbHVzaEluZm9Mb2coKSB7
IGZmbHVzaChOVUxMKTsgfQogLy8gICAgY29uZGl0aW9uIGl0c2VsZiwgcGx1cyBhZGRpdGlvbmFs
IG1lc3NhZ2Ugc3RyZWFtZWQgaW50byBpdCwgaWYgYW55LAogLy8gICAgYW5kIHRoZW4gaXQgYWJv
cnRzIHRoZSBwcm9ncmFtLiBJdCBhYm9ydHMgdGhlIHByb2dyYW0gaXJyZXNwZWN0aXZlIG9mCiAv
LyAgICB3aGV0aGVyIGl0IGlzIGJ1aWx0IGluIHRoZSBkZWJ1ZyBtb2RlIG9yIG5vdC4KLSNkZWZp
bmUgR1RFU1RfQ0hFQ0tfKGNvbmRpdGlvbikgXAorIyBkZWZpbmUgR1RFU1RfQ0hFQ0tfKGNvbmRp
dGlvbikgXAogICAgIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKICAgICBpZiAoOjp0
ZXN0aW5nOjppbnRlcm5hbDo6SXNUcnVlKGNvbmRpdGlvbikpIFwKICAgICAgIDsgXAogICAgIGVs
c2UgXAogICAgICAgR1RFU1RfTE9HXyhGQVRBTCkgPDwgIkNvbmRpdGlvbiAiICNjb25kaXRpb24g
IiBmYWlsZWQuICIKKyNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfQ0hFQ0tfKQogCiAvLyBBbiBh
bGwtbW9kZSBhc3NlcnQgdG8gdmVyaWZ5IHRoYXQgdGhlIGdpdmVuIFBPU0lYLXN0eWxlIGZ1bmN0
aW9uCiAvLyBjYWxsIHJldHVybnMgMCAoaW5kaWNhdGluZyBzdWNjZXNzKS4gIEtub3duIGxpbWl0
YXRpb246IHRoaXMKQEAgLTgyOCw4ICsxMzk3LDEyNSBAQCBpbmxpbmUgdm9pZCBGbHVzaEluZm9M
b2coKSB7IGZmbHVzaChOVUxMKTsgfQogICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICNwb3NpeF9j
YWxsIDw8ICJmYWlsZWQgd2l0aCBlcnJvciAiIFwKICAgICAgICAgICAgICAgICAgICAgICA8PCBn
dGVzdF9lcnJvcgogCisvLyBBZGRzIHJlZmVyZW5jZSB0byBhIHR5cGUgaWYgaXQgaXMgbm90IGEg
cmVmZXJlbmNlIHR5cGUsCisvLyBvdGhlcndpc2UgbGVhdmVzIGl0IHVuY2hhbmdlZC4gIFRoaXMg
aXMgdGhlIHNhbWUgYXMKKy8vIHRyMTo6YWRkX3JlZmVyZW5jZSwgd2hpY2ggaXMgbm90IHdpZGVs
eSBhdmFpbGFibGUgeWV0LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQWRkUmVmZXJl
bmNlIHsgdHlwZWRlZiBUJiB0eXBlOyB9OyAgLy8gTk9MSU5UCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK3N0cnVjdCBBZGRSZWZlcmVuY2U8VCY+IHsgdHlwZWRlZiBUJiB0eXBlOyB9OyAgLy8gTk9M
SU5UCisKKy8vIEEgaGFuZHkgd3JhcHBlciBhcm91bmQgQWRkUmVmZXJlbmNlIHRoYXQgd29ya3Mg
d2hlbiB0aGUgYXJndW1lbnQgVAorLy8gZGVwZW5kcyBvbiB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgor
I2RlZmluZSBHVEVTVF9BRERfUkVGRVJFTkNFXyhUKSBcCisgICAgdHlwZW5hbWUgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6QWRkUmVmZXJlbmNlPFQ+Ojp0eXBlCisKKy8vIFRyYW5zZm9ybXMgIlQiIGlu
dG8gImNvbnN0IFQmIiBhY2NvcmRpbmcgdG8gc3RhbmRhcmQgcmVmZXJlbmNlIGNvbGxhcHNpbmcK
Ky8vIHJ1bGVzICh0aGlzIGlzIG9ubHkgbmVlZGVkIGFzIGEgYmFja3BvcnQgZm9yIEMrKzk4IGNv
bXBpbGVycyB0aGF0IGRvIG5vdAorLy8gc3VwcG9ydCByZWZlcmVuY2UgY29sbGFwc2luZykuIFNw
ZWNpZmljYWxseSwgaXQgdHJhbnNmb3JtczoKKy8vCisvLyAgIGNoYXIgICAgICAgICA9PT4gY29u
c3QgY2hhciYKKy8vICAgY29uc3QgY2hhciAgID09PiBjb25zdCBjaGFyJgorLy8gICBjaGFyJiAg
ICAgICAgPT0+IGNoYXImCisvLyAgIGNvbnN0IGNoYXImICA9PT4gY29uc3QgY2hhciYKKy8vCisv
LyBOb3RlIHRoYXQgdGhlIG5vbi1jb25zdCByZWZlcmVuY2Ugd2lsbCBub3QgaGF2ZSAiY29uc3Qi
IGFkZGVkLiBUaGlzIGlzCisvLyBzdGFuZGFyZCwgYW5kIG5lY2Vzc2FyeSBzbyB0aGF0ICJUIiBj
YW4gYWx3YXlzIGJpbmQgdG8gImNvbnN0IFQmIi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3Ry
dWN0IENvbnN0UmVmIHsgdHlwZWRlZiBjb25zdCBUJiB0eXBlOyB9OwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitzdHJ1Y3QgQ29uc3RSZWY8VCY+IHsgdHlwZWRlZiBUJiB0eXBlOyB9OworCisvLyBU
aGUgYXJndW1lbnQgVCBtdXN0IGRlcGVuZCBvbiBzb21lIHRlbXBsYXRlIHBhcmFtZXRlcnMuCisj
ZGVmaW5lIEdURVNUX1JFRkVSRU5DRV9UT19DT05TVF8oVCkgXAorICB0eXBlbmFtZSA6OnRlc3Rp
bmc6OmludGVybmFsOjpDb25zdFJlZjxUPjo6dHlwZQorCisjaWYgR1RFU1RfSEFTX1NURF9NT1ZF
XwordXNpbmcgc3RkOjpmb3J3YXJkOwordXNpbmcgc3RkOjptb3ZlOworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3N0cnVjdCBSdmFsdWVSZWYgeworICB0eXBlZGVmIFQmJiB0eXBlOworfTsKKyNl
bHNlICAvLyBHVEVTVF9IQVNfU1REX01PVkVfCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NvbnN0
IFQmIG1vdmUoY29uc3QgVCYgdCkgeworICByZXR1cm4gdDsKK30KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorR1RFU1RfQUREX1JFRkVSRU5DRV8oVCkgZm9yd2FyZChHVEVTVF9BRERfUkVGRVJFTkNF
XyhUKSB0KSB7IHJldHVybiB0OyB9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IFJ2
YWx1ZVJlZiB7CisgIHR5cGVkZWYgY29uc3QgVCYgdHlwZTsKK307CisjZW5kaWYgIC8vIEdURVNU
X0hBU19TVERfTU9WRV8KKwogLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNF
IElOIFVTRVIgQ09ERS4KIC8vCisvLyBVc2UgSW1wbGljaXRDYXN0XyBhcyBhIHNhZmUgdmVyc2lv
biBvZiBzdGF0aWNfY2FzdCBmb3IgdXBjYXN0aW5nIGluCisvLyB0aGUgdHlwZSBoaWVyYXJjaHkg
KGUuZy4gY2FzdGluZyBhIEZvbyogdG8gYSBTdXBlcmNsYXNzT2ZGb28qIG9yIGEKKy8vIGNvbnN0
IEZvbyopLiAgV2hlbiB5b3UgdXNlIEltcGxpY2l0Q2FzdF8sIHRoZSBjb21waWxlciBjaGVja3Mg
dGhhdAorLy8gdGhlIGNhc3QgaXMgc2FmZS4gIFN1Y2ggZXhwbGljaXQgSW1wbGljaXRDYXN0X3Mg
YXJlIG5lY2Vzc2FyeSBpbgorLy8gc3VycHJpc2luZ2x5IG1hbnkgc2l0dWF0aW9ucyB3aGVyZSBD
KysgZGVtYW5kcyBhbiBleGFjdCB0eXBlIG1hdGNoCisvLyBpbnN0ZWFkIG9mIGFuIGFyZ3VtZW50
IHR5cGUgY29udmVydGFibGUgdG8gYSB0YXJnZXQgdHlwZS4KKy8vCisvLyBUaGUgc3ludGF4IGZv
ciB1c2luZyBJbXBsaWNpdENhc3RfIGlzIHRoZSBzYW1lIGFzIGZvciBzdGF0aWNfY2FzdDoKKy8v
CisvLyAgIEltcGxpY2l0Q2FzdF88VG9UeXBlPihleHByKQorLy8KKy8vIEltcGxpY2l0Q2FzdF8g
d291bGQgaGF2ZSBiZWVuIHBhcnQgb2YgdGhlIEMrKyBzdGFuZGFyZCBsaWJyYXJ5LAorLy8gYnV0
IHRoZSBwcm9wb3NhbCB3YXMgc3VibWl0dGVkIHRvbyBsYXRlLiAgSXQgd2lsbCBwcm9iYWJseSBt
YWtlCisvLyBpdHMgd2F5IGludG8gdGhlIGxhbmd1YWdlIGluIHRoZSBmdXR1cmUuCisvLworLy8g
VGhpcyByZWxhdGl2ZWx5IHVnbHkgbmFtZSBpcyBpbnRlbnRpb25hbC4gSXQgcHJldmVudHMgY2xh
c2hlcyB3aXRoCisvLyBzaW1pbGFyIGZ1bmN0aW9ucyB1c2VycyBtYXkgaGF2ZSAoZS5nLiwgaW1w
bGljaXRfY2FzdCkuIFRoZSBpbnRlcm5hbAorLy8gbmFtZXNwYWNlIGFsb25lIGlzIG5vdCBlbm91
Z2ggYmVjYXVzZSB0aGUgZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGJ5IEFETC4KK3RlbXBsYXRlPHR5
cGVuYW1lIFRvPgoraW5saW5lIFRvIEltcGxpY2l0Q2FzdF8oVG8geCkgeyByZXR1cm4geDsgfQor
CisvLyBXaGVuIHlvdSB1cGNhc3QgKHRoYXQgaXMsIGNhc3QgYSBwb2ludGVyIGZyb20gdHlwZSBG
b28gdG8gdHlwZQorLy8gU3VwZXJjbGFzc09mRm9vKSwgaXQncyBmaW5lIHRvIHVzZSBJbXBsaWNp
dENhc3RfPD4sIHNpbmNlIHVwY2FzdHMKKy8vIGFsd2F5cyBzdWNjZWVkLiAgV2hlbiB5b3UgZG93
bmNhc3QgKHRoYXQgaXMsIGNhc3QgYSBwb2ludGVyIGZyb20KKy8vIHR5cGUgRm9vIHRvIHR5cGUg
U3ViY2xhc3NPZkZvbyksIHN0YXRpY19jYXN0PD4gaXNuJ3Qgc2FmZSwgYmVjYXVzZQorLy8gaG93
IGRvIHlvdSBrbm93IHRoZSBwb2ludGVyIGlzIHJlYWxseSBvZiB0eXBlIFN1YmNsYXNzT2ZGb28/
ICBJdAorLy8gY291bGQgYmUgYSBiYXJlIEZvbywgb3Igb2YgdHlwZSBEaWZmZXJlbnRTdWJjbGFz
c09mRm9vLiAgVGh1cywKKy8vIHdoZW4geW91IGRvd25jYXN0LCB5b3Ugc2hvdWxkIHVzZSB0aGlz
IG1hY3JvLiAgSW4gZGVidWcgbW9kZSwgd2UKKy8vIHVzZSBkeW5hbWljX2Nhc3Q8PiB0byBkb3Vi
bGUtY2hlY2sgdGhlIGRvd25jYXN0IGlzIGxlZ2FsICh3ZSBkaWUKKy8vIGlmIGl0J3Mgbm90KS4g
IEluIG5vcm1hbCBtb2RlLCB3ZSBkbyB0aGUgZWZmaWNpZW50IHN0YXRpY19jYXN0PD4KKy8vIGlu
c3RlYWQuICBUaHVzLCBpdCdzIGltcG9ydGFudCB0byB0ZXN0IGluIGRlYnVnIG1vZGUgdG8gbWFr
ZSBzdXJlCisvLyB0aGUgY2FzdCBpcyBsZWdhbCEKKy8vICAgIFRoaXMgaXMgdGhlIG9ubHkgcGxh
Y2UgaW4gdGhlIGNvZGUgd2Ugc2hvdWxkIHVzZSBkeW5hbWljX2Nhc3Q8Pi4KKy8vIEluIHBhcnRp
Y3VsYXIsIHlvdSBTSE9VTEROJ1QgYmUgdXNpbmcgZHluYW1pY19jYXN0PD4gaW4gb3JkZXIgdG8K
Ky8vIGRvIFJUVEkgKGVnIGNvZGUgbGlrZSB0aGlzOgorLy8gICAgaWYgKGR5bmFtaWNfY2FzdDxT
dWJjbGFzczE+KGZvbykpIEhhbmRsZUFTdWJjbGFzczFPYmplY3QoZm9vKTsKKy8vICAgIGlmIChk
eW5hbWljX2Nhc3Q8U3ViY2xhc3MyPihmb28pKSBIYW5kbGVBU3ViY2xhc3MyT2JqZWN0KGZvbyk7
CisvLyBZb3Ugc2hvdWxkIGRlc2lnbiB0aGUgY29kZSBzb21lIG90aGVyIHdheSBub3QgdG8gbmVl
ZCB0aGlzLgorLy8KKy8vIFRoaXMgcmVsYXRpdmVseSB1Z2x5IG5hbWUgaXMgaW50ZW50aW9uYWwu
IEl0IHByZXZlbnRzIGNsYXNoZXMgd2l0aAorLy8gc2ltaWxhciBmdW5jdGlvbnMgdXNlcnMgbWF5
IGhhdmUgKGUuZy4sIGRvd25fY2FzdCkuIFRoZSBpbnRlcm5hbAorLy8gbmFtZXNwYWNlIGFsb25l
IGlzIG5vdCBlbm91Z2ggYmVjYXVzZSB0aGUgZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGJ5IEFETC4K
K3RlbXBsYXRlPHR5cGVuYW1lIFRvLCB0eXBlbmFtZSBGcm9tPiAgLy8gdXNlIGxpa2UgdGhpczog
RG93bkNhc3RfPFQqPihmb28pOworaW5saW5lIFRvIERvd25DYXN0XyhGcm9tKiBmKSB7ICAvLyBz
byB3ZSBvbmx5IGFjY2VwdCBwb2ludGVycworICAvLyBFbnN1cmVzIHRoYXQgVG8gaXMgYSBzdWIt
dHlwZSBvZiBGcm9tICouICBUaGlzIHRlc3QgaXMgaGVyZSBvbmx5CisgIC8vIGZvciBjb21waWxl
LXRpbWUgdHlwZSBjaGVja2luZywgYW5kIGhhcyBubyBvdmVyaGVhZCBpbiBhbgorICAvLyBvcHRp
bWl6ZWQgYnVpbGQgYXQgcnVuLXRpbWUsIGFzIGl0IHdpbGwgYmUgb3B0aW1pemVkIGF3YXkKKyAg
Ly8gY29tcGxldGVseS4KKyAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QVVNIXygpCisg
IGlmIChmYWxzZSkgeworICBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BPUF8oKQorICAg
IGNvbnN0IFRvIHRvID0gTlVMTDsKKyAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENh
c3RfPEZyb20qPih0byk7CisgIH0KKworI2lmIEdURVNUX0hBU19SVFRJCisgIC8vIFJUVEk6IGRl
YnVnIG1vZGUgb25seSEKKyAgR1RFU1RfQ0hFQ0tfKGYgPT0gTlVMTCB8fCBkeW5hbWljX2Nhc3Q8
VG8+KGYpICE9IE5VTEwpOworI2VuZGlmCisgIHJldHVybiBzdGF0aWNfY2FzdDxUbz4oZik7Cit9
CisKIC8vIERvd25jYXN0cyB0aGUgcG9pbnRlciBvZiB0eXBlIEJhc2UgdG8gRGVyaXZlZC4KIC8v
IERlcml2ZWQgbXVzdCBiZSBhIHN1YmNsYXNzIG9mIEJhc2UuIFRoZSBwYXJhbWV0ZXIgTVVTVAog
Ly8gcG9pbnQgdG8gYSBjbGFzcyBvZiB0eXBlIERlcml2ZWQsIG5vdCBhbnkgc3ViY2xhc3Mgb2Yg
aXQuCkBAIC04MzksMTMgKzE1MjUsMTggQEAgdGVtcGxhdGUgPGNsYXNzIERlcml2ZWQsIGNsYXNz
IEJhc2U+CiBEZXJpdmVkKiBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGUoQmFzZSogYmFzZSkg
ewogI2lmIEdURVNUX0hBU19SVFRJCiAgIEdURVNUX0NIRUNLXyh0eXBlaWQoKmJhc2UpID09IHR5
cGVpZChEZXJpdmVkKSk7CisjZW5kaWYKKworI2lmIEdURVNUX0hBU19ET1dOQ0FTVF8KKyAgcmV0
dXJuIDo6ZG93bl9jYXN0PERlcml2ZWQqPihiYXNlKTsKKyNlbGlmIEdURVNUX0hBU19SVFRJCiAg
IHJldHVybiBkeW5hbWljX2Nhc3Q8RGVyaXZlZCo+KGJhc2UpOyAgLy8gTk9MSU5UCiAjZWxzZQog
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZCo+KGJhc2UpOyAgLy8gUG9vciBtYW4ncyBkb3du
Y2FzdC4KICNlbmRpZgogfQogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNp
ZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCiAKIC8vIERlZmluZXMgdGhlIHN0ZGVyciBj
YXB0dXJlcjoKIC8vICAgQ2FwdHVyZVN0ZG91dCAgICAgLSBzdGFydHMgY2FwdHVyaW5nIHN0ZG91
dC4KQEAgLTg1NCwzMCArMTU0NSwzOSBAQCBEZXJpdmVkKiBDaGVja2VkRG93bmNhc3RUb0FjdHVh
bFR5cGUoQmFzZSogYmFzZSkgewogLy8gICBHZXRDYXB0dXJlZFN0ZGVyciAtIHN0b3BzIGNhcHR1
cmluZyBzdGRlcnIgYW5kIHJldHVybnMgdGhlIGNhcHR1cmVkIHN0cmluZy4KIC8vCiBHVEVTVF9B
UElfIHZvaWQgQ2FwdHVyZVN0ZG91dCgpOwotR1RFU1RfQVBJXyBTdHJpbmcgR2V0Q2FwdHVyZWRT
dGRvdXQoKTsKK0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKTsKIEdU
RVNUX0FQSV8gdm9pZCBDYXB0dXJlU3RkZXJyKCk7Ci1HVEVTVF9BUElfIFN0cmluZyBHZXRDYXB0
dXJlZFN0ZGVycigpOworR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0ZGVycigp
OwogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT05fCisjZW5kaWYgIC8v
IEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KKy8vIFJldHVybnMgdGhlIHNpemUgKGluIGJ5
dGVzKSBvZiBhIGZpbGUuCitHVEVTVF9BUElfIHNpemVfdCBHZXRGaWxlU2l6ZShGSUxFKiBmaWxl
KTsKIAorLy8gUmVhZHMgdGhlIGVudGlyZSBjb250ZW50IG9mIGEgZmlsZSBhcyBhIHN0cmluZy4K
K0dURVNUX0FQSV8gc3RkOjpzdHJpbmcgUmVhZEVudGlyZUZpbGUoRklMRSogZmlsZSk7CiAKLSNp
ZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorLy8gQWxsIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCitH
VEVTVF9BUElfIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRBcmd2cygpOwogCi0vLyBBIGNv
cHkgb2YgYWxsIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuICBTZXQgYnkgSW5pdEdvb2dsZVRlc3Qo
KS4KLWV4dGVybiA6OnN0ZDo6dmVjdG9yPFN0cmluZz4gZ19hcmd2czsKKyNpZiBHVEVTVF9IQVNf
REVBVEhfVEVTVAogCi0vLyBHVEVTVF9IQVNfREVBVEhfVEVTVCBpbXBsaWVzIHdlIGhhdmUgOjpz
dGQ6OnN0cmluZy4KLWNvbnN0IDo6c3RkOjp2ZWN0b3I8U3RyaW5nPiYgR2V0QXJndnMoKTsKK3N0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRJbmplY3RhYmxlQXJndnMoKTsKKy8vIERlcHJlY2F0
ZWQ6IHBhc3MgdGhlIGFyZ3MgdmVjdG9yIGJ5IHZhbHVlIGluc3RlYWQuCit2b2lkIFNldEluamVj
dGFibGVBcmd2cyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIG5ld19hcmd2cyk7Cit2
b2lkIFNldEluamVjdGFibGVBcmd2cyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIG5l
d19hcmd2cyk7CisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK3ZvaWQgU2V0SW5qZWN0YWJs
ZUFyZ3ZzKGNvbnN0IHN0ZDo6dmVjdG9yPCA6OnN0cmluZz4mIG5ld19hcmd2cyk7CisjZW5kaWYg
IC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCit2b2lkIENsZWFySW5qZWN0YWJsZUFyZ3ZzKCk7
CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKIAogLy8gRGVmaW5lcyBzeW5jaHJv
bml6YXRpb24gcHJpbWl0aXZlcy4KLQotI2lmIEdURVNUX0hBU19QVEhSRUFECi0KLS8vIFNsZWVw
cyBmb3IgKHJvdWdobHkpIG4gbWlsbGktc2Vjb25kcy4gIFRoaXMgZnVuY3Rpb24gaXMgb25seSBm
b3IKLS8vIHRlc3RpbmcgR29vZ2xlIFRlc3QncyBvd24gY29uc3RydWN0cy4gIERvbid0IHVzZSBp
dCBpbiB1c2VyIHRlc3RzLAotLy8gZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCisjaWYg
R1RFU1RfSVNfVEhSRUFEU0FGRQorIyBpZiBHVEVTVF9IQVNfUFRIUkVBRAorLy8gU2xlZXBzIGZv
ciAocm91Z2hseSkgbiBtaWxsaXNlY29uZHMuICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZm9yIHRl
c3RpbmcKKy8vIEdvb2dsZSBUZXN0J3Mgb3duIGNvbnN0cnVjdHMuICBEb24ndCB1c2UgaXQgaW4g
dXNlciB0ZXN0cywgZWl0aGVyCisvLyBkaXJlY3RseSBvciBpbmRpcmVjdGx5LgogaW5saW5lIHZv
aWQgU2xlZXBNaWxsaXNlY29uZHMoaW50IG4pIHsKICAgY29uc3QgdGltZXNwZWMgdGltZSA9IHsK
ICAgICAwLCAgICAgICAgICAgICAgICAgIC8vIDAgc2Vjb25kcy4KQEAgLTg4NSw3ICsxNTg1LDEz
IEBAIGlubGluZSB2b2lkIFNsZWVwTWlsbGlzZWNvbmRzKGludCBuKSB7CiAgIH07CiAgIG5hbm9z
bGVlcCgmdGltZSwgTlVMTCk7CiB9CisjIGVuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVBRAogCisj
IGlmIEdURVNUX0hBU19OT1RJRklDQVRJT05fCisvLyBOb3RpZmljYXRpb24gaGFzIGFscmVhZHkg
YmVlbiBpbXBvcnRlZCBpbnRvIHRoZSBuYW1lc3BhY2UuCisvLyBOb3RoaW5nIHRvIGRvIGhlcmUu
CisKKyMgZWxpZiBHVEVTVF9IQVNfUFRIUkVBRAogLy8gQWxsb3dzIGEgY29udHJvbGxlciB0aHJl
YWQgdG8gcGF1c2UgZXhlY3V0aW9uIG9mIG5ld2x5IGNyZWF0ZWQKIC8vIHRocmVhZHMgdW50aWwg
bm90aWZpZWQuICBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBtdXN0IGJlIGNyZWF0ZWQKIC8vIGFu
ZCBkZXN0cm95ZWQgaW4gdGhlIGNvbnRyb2xsZXIgdGhyZWFkLgpAQCAtODk0LDI1ICsxNjAwLDk2
IEBAIGlubGluZSB2b2lkIFNsZWVwTWlsbGlzZWNvbmRzKGludCBuKSB7CiAvLyB1c2UgaXQgaW4g
dXNlciB0ZXN0cywgZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCiBjbGFzcyBOb3RpZmlj
YXRpb24gewogIHB1YmxpYzoKLSAgTm90aWZpY2F0aW9uKCkgOiBub3RpZmllZF8oZmFsc2UpIHt9
CisgIE5vdGlmaWNhdGlvbigpIDogbm90aWZpZWRfKGZhbHNlKSB7CisgICAgR1RFU1RfQ0hFQ0tf
UE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9pbml0KCZtdXRleF8sIE5VTEwpKTsKKyAgfQor
ICB+Tm90aWZpY2F0aW9uKCkgeworICAgIHB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmbXV0ZXhfKTsK
KyAgfQogCiAgIC8vIE5vdGlmaWVzIGFsbCB0aHJlYWRzIGNyZWF0ZWQgd2l0aCB0aGlzIG5vdGlm
aWNhdGlvbiB0byBzdGFydC4gTXVzdAogICAvLyBiZSBjYWxsZWQgZnJvbSB0aGUgY29udHJvbGxl
ciB0aHJlYWQuCi0gIHZvaWQgTm90aWZ5KCkgeyBub3RpZmllZF8gPSB0cnVlOyB9CisgIHZvaWQg
Tm90aWZ5KCkgeworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXhfKTsKKyAgICBub3RpZmll
ZF8gPSB0cnVlOworICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleF8pOworICB9CiAKICAg
Ly8gQmxvY2tzIHVudGlsIHRoZSBjb250cm9sbGVyIHRocmVhZCBub3RpZmllcy4gTXVzdCBiZSBj
YWxsZWQgZnJvbSBhIHRlc3QKICAgLy8gdGhyZWFkLgogICB2b2lkIFdhaXRGb3JOb3RpZmljYXRp
b24oKSB7Ci0gICAgd2hpbGUoIW5vdGlmaWVkXykgeworICAgIGZvciAoOzspIHsKKyAgICAgIHB0
aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXhfKTsKKyAgICAgIGNvbnN0IGJvb2wgbm90aWZpZWQgPSBu
b3RpZmllZF87CisgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXhfKTsKKyAgICAgIGlm
IChub3RpZmllZCkKKyAgICAgICAgYnJlYWs7CiAgICAgICBTbGVlcE1pbGxpc2Vjb25kcygxMCk7
CiAgICAgfQogICB9CiAKICBwcml2YXRlOgotICB2b2xhdGlsZSBib29sIG5vdGlmaWVkXzsKKyAg
cHRocmVhZF9tdXRleF90IG11dGV4XzsKKyAgYm9vbCBub3RpZmllZF87CisKKyAgR1RFU1RfRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhOb3RpZmljYXRpb24pOworfTsKKworIyBlbGlmIEdURVNU
X09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRP
V1NfUlQKKworR1RFU1RfQVBJXyB2b2lkIFNsZWVwTWlsbGlzZWNvbmRzKGludCBuKTsKKworLy8g
UHJvdmlkZXMgbGVhay1zYWZlIFdpbmRvd3Mga2VybmVsIGhhbmRsZSBvd25lcnNoaXAuCisvLyBV
c2VkIGluIGRlYXRoIHRlc3RzIGFuZCBpbiB0aHJlYWRpbmcgc3VwcG9ydC4KK2NsYXNzIEdURVNU
X0FQSV8gQXV0b0hhbmRsZSB7CisgcHVibGljOgorICAvLyBBc3N1bWUgdGhhdCBXaW4zMiBIQU5E
TEUgdHlwZSBpcyBlcXVpdmFsZW50IHRvIHZvaWQqLiBEb2luZyBzbyBhbGxvd3MgdXMgdG8KKyAg
Ly8gYXZvaWQgaW5jbHVkaW5nIDx3aW5kb3dzLmg+IGluIHRoaXMgaGVhZGVyIGZpbGUuIEluY2x1
ZGluZyA8d2luZG93cy5oPiBpcworICAvLyB1bmRlc2lyYWJsZSBiZWNhdXNlIGl0IGRlZmluZXMg
YSBsb3Qgb2Ygc3ltYm9scyBhbmQgbWFjcm9zIHRoYXQgdGVuZCB0bworICAvLyBjb25mbGljdCB3
aXRoIGNsaWVudCBjb2RlLiBUaGlzIGFzc3VtcHRpb24gaXMgdmVyaWZpZWQgYnkKKyAgLy8gV2lu
ZG93c1R5cGVzVGVzdC5IQU5ETEVJc1ZvaWRTdGFyLgorICB0eXBlZGVmIHZvaWQqIEhhbmRsZTsK
KyAgQXV0b0hhbmRsZSgpOworICBleHBsaWNpdCBBdXRvSGFuZGxlKEhhbmRsZSBoYW5kbGUpOwor
CisgIH5BdXRvSGFuZGxlKCk7CisKKyAgSGFuZGxlIEdldCgpIGNvbnN0OworICB2b2lkIFJlc2V0
KCk7CisgIHZvaWQgUmVzZXQoSGFuZGxlIGhhbmRsZSk7CisKKyBwcml2YXRlOgorICAvLyBSZXR1
cm5zIHRydWUgaWZmIHRoZSBoYW5kbGUgaXMgYSB2YWxpZCBoYW5kbGUgb2JqZWN0IHRoYXQgY2Fu
IGJlIGNsb3NlZC4KKyAgYm9vbCBJc0Nsb3NlYWJsZSgpIGNvbnN0OworCisgIEhhbmRsZSBoYW5k
bGVfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQXV0b0hhbmRsZSk7Cit9
OworCisvLyBBbGxvd3MgYSBjb250cm9sbGVyIHRocmVhZCB0byBwYXVzZSBleGVjdXRpb24gb2Yg
bmV3bHkgY3JlYXRlZAorLy8gdGhyZWFkcyB1bnRpbCBub3RpZmllZC4gIEluc3RhbmNlcyBvZiB0
aGlzIGNsYXNzIG11c3QgYmUgY3JlYXRlZAorLy8gYW5kIGRlc3Ryb3llZCBpbiB0aGUgY29udHJv
bGxlciB0aHJlYWQuCisvLworLy8gVGhpcyBjbGFzcyBpcyBvbmx5IGZvciB0ZXN0aW5nIEdvb2ds
ZSBUZXN0J3Mgb3duIGNvbnN0cnVjdHMuIERvIG5vdAorLy8gdXNlIGl0IGluIHVzZXIgdGVzdHMs
IGVpdGhlciBkaXJlY3RseSBvciBpbmRpcmVjdGx5LgorY2xhc3MgR1RFU1RfQVBJXyBOb3RpZmlj
YXRpb24geworIHB1YmxpYzoKKyAgTm90aWZpY2F0aW9uKCk7CisgIHZvaWQgTm90aWZ5KCk7Cisg
IHZvaWQgV2FpdEZvck5vdGlmaWNhdGlvbigpOworCisgcHJpdmF0ZToKKyAgQXV0b0hhbmRsZSBl
dmVudF87CiAKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhOb3RpZmljYXRpb24p
OwogfTsKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19OT1RJRklDQVRJT05fCisKKy8vIE9uIE1pbkdX
LCB3ZSBjYW4gaGF2ZSBib3RoIEdURVNUX09TX1dJTkRPV1MgYW5kIEdURVNUX0hBU19QVEhSRUFE
CisvLyBkZWZpbmVkLCBidXQgd2UgZG9uJ3Qgd2FudCB0byB1c2UgTWluR1cncyBwdGhyZWFkcyBp
bXBsZW1lbnRhdGlvbiwgd2hpY2gKKy8vIGhhcyBjb25mb3JtYW5jZSBwcm9ibGVtcyB3aXRoIHNv
bWUgdmVyc2lvbnMgb2YgdGhlIFBPU0lYIHN0YW5kYXJkLgorIyBpZiBHVEVTVF9IQVNfUFRIUkVB
RCAmJiAhR1RFU1RfT1NfV0lORE9XU19NSU5HVwogCiAvLyBBcyBhIEMtZnVuY3Rpb24sIFRocmVh
ZEZ1bmNXaXRoQ0xpbmthZ2UgY2Fubm90IGJlIHRlbXBsYXRlZCBpdHNlbGYuCiAvLyBDb25zZXF1
ZW50bHksIGl0IGNhbm5vdCBzZWxlY3QgYSBjb3JyZWN0IGluc3RhbnRpYXRpb24gb2YgVGhyZWFk
V2l0aFBhcmFtCkBAIC05NTEsMTAgKzE3MjgsOSBAQCBleHRlcm4gIkMiIGlubGluZSB2b2lkKiBU
aHJlYWRGdW5jV2l0aENMaW5rYWdlKHZvaWQqIHRocmVhZCkgewogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiBjbGFzcyBUaHJlYWRXaXRoUGFyYW0gOiBwdWJsaWMgVGhyZWFkV2l0aFBhcmFtQmFzZSB7
CiAgcHVibGljOgotICB0eXBlZGVmIHZvaWQgKCpVc2VyVGhyZWFkRnVuYykoVCk7CisgIHR5cGVk
ZWYgdm9pZCBVc2VyVGhyZWFkRnVuYyhUKTsKIAotICBUaHJlYWRXaXRoUGFyYW0oCi0gICAgICBV
c2VyVGhyZWFkRnVuYyBmdW5jLCBUIHBhcmFtLCBOb3RpZmljYXRpb24qIHRocmVhZF9jYW5fc3Rh
cnQpCisgIFRocmVhZFdpdGhQYXJhbShVc2VyVGhyZWFkRnVuYyogZnVuYywgVCBwYXJhbSwgTm90
aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KQogICAgICAgOiBmdW5jXyhmdW5jKSwKICAgICAg
ICAgcGFyYW1fKHBhcmFtKSwKICAgICAgICAgdGhyZWFkX2Nhbl9zdGFydF8odGhyZWFkX2Nhbl9z
dGFydCksCkBAIC05ODEsNyArMTc1Nyw3IEBAIGNsYXNzIFRocmVhZFdpdGhQYXJhbSA6IHB1Ymxp
YyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKICAgfQogCiAgcHJpdmF0ZToKLSAgY29uc3QgVXNlclRo
cmVhZEZ1bmMgZnVuY187ICAvLyBVc2VyLXN1cHBsaWVkIHRocmVhZCBmdW5jdGlvbi4KKyAgVXNl
clRocmVhZEZ1bmMqIGNvbnN0IGZ1bmNfOyAgLy8gVXNlci1zdXBwbGllZCB0aHJlYWQgZnVuY3Rp
b24uCiAgIGNvbnN0IFQgcGFyYW1fOyAgLy8gVXNlci1zdXBwbGllZCBwYXJhbWV0ZXIgdG8gdGhl
IHRocmVhZCBmdW5jdGlvbi4KICAgLy8gV2hlbiBub24tTlVMTCwgdXNlZCB0byBibG9jayBleGVj
dXRpb24gdW50aWwgdGhlIGNvbnRyb2xsZXIgdGhyZWFkCiAgIC8vIG5vdGlmaWVzLgpAQCAtOTkx
LDUxICsxNzY3LDMxNiBAQCBjbGFzcyBUaHJlYWRXaXRoUGFyYW0gOiBwdWJsaWMgVGhyZWFkV2l0
aFBhcmFtQmFzZSB7CiAKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJlYWRX
aXRoUGFyYW0pOwogfTsKKyMgZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTICYmIEdURVNUX0hB
U19QVEhSRUFEIHx8CisgICAgICAgICAvLyBHVEVTVF9IQVNfTVVURVhfQU5EX1RIUkVBRF9MT0NB
TF8KIAotLy8gZ3Rlc3QtcG9ydC5oIGd1YXJhbnRlZXMgdG8gI2luY2x1ZGUgPHB0aHJlYWQuaD4g
d2hlbiBHVEVTVF9IQVNfUFRIUkVBRCBpcwotLy8gdHJ1ZS4KLSNpbmNsdWRlIDxwdGhyZWFkLmg+
CisjIGlmIEdURVNUX0hBU19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMXworLy8gTXV0ZXggYW5kIFRo
cmVhZExvY2FsIGhhdmUgYWxyZWFkeSBiZWVuIGltcG9ydGVkIGludG8gdGhlIG5hbWVzcGFjZS4K
Ky8vIE5vdGhpbmcgdG8gZG8gaGVyZS4KIAotLy8gTXV0ZXhCYXNlIGFuZCBNdXRleCBpbXBsZW1l
bnQgbXV0ZXggb24gcHRocmVhZHMtYmFzZWQgcGxhdGZvcm1zLiBUaGV5Ci0vLyBhcmUgdXNlZCBp
biBjb25qdW5jdGlvbiB3aXRoIGNsYXNzIE11dGV4TG9jazoKKyMgZWxpZiBHVEVTVF9PU19XSU5E
T1dTICYmICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUCisK
Ky8vIE11dGV4IGltcGxlbWVudHMgbXV0ZXggb24gV2luZG93cyBwbGF0Zm9ybXMuICBJdCBpcyB1
c2VkIGluIGNvbmp1bmN0aW9uCisvLyB3aXRoIGNsYXNzIE11dGV4TG9jazoKIC8vCiAvLyAgIE11
dGV4IG11dGV4OwogLy8gICAuLi4KLS8vICAgTXV0ZXhMb2NrIGxvY2soJm11dGV4KTsgIC8vIEFj
cXVpcmVzIHRoZSBtdXRleCBhbmQgcmVsZWFzZXMgaXQgYXQgdGhlIGVuZAotLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gb2YgdGhlIGN1cnJlbnQgc2NvcGUuCi0vLwotLy8gTXV0ZXhC
YXNlIGltcGxlbWVudHMgYmVoYXZpb3IgZm9yIGJvdGggc3RhdGljYWxseSBhbmQgZHluYW1pY2Fs
bHkKLS8vIGFsbG9jYXRlZCBtdXRleGVzLiAgRG8gbm90IHVzZSBNdXRleEJhc2UgZGlyZWN0bHku
ICBJbnN0ZWFkLCB3cml0ZQotLy8gdGhlIGZvbGxvd2luZyB0byBkZWZpbmUgYSBzdGF0aWMgbXV0
ZXg6CisvLyAgIE11dGV4TG9jayBsb2NrKCZtdXRleCk7ICAvLyBBY3F1aXJlcyB0aGUgbXV0ZXgg
YW5kIHJlbGVhc2VzIGl0IGF0IHRoZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
ZW5kIG9mIHRoZSBjdXJyZW50IHNjb3BlLgogLy8KKy8vIEEgc3RhdGljIE11dGV4ICptdXN0KiBi
ZSBkZWZpbmVkIG9yIGRlY2xhcmVkIHVzaW5nIG9uZSBvZiB0aGUgZm9sbG93aW5nCisvLyBtYWNy
b3M6CiAvLyAgIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKGdfc29tZV9tdXRleCk7CisvLyAg
IEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhnX3NvbWVfbXV0ZXgpOworLy8KKy8vIChBIG5v
bi1zdGF0aWMgTXV0ZXggaXMgZGVmaW5lZC9kZWNsYXJlZCBpbiB0aGUgdXN1YWwgd2F5KS4KK2Ns
YXNzIEdURVNUX0FQSV8gTXV0ZXggeworIHB1YmxpYzoKKyAgZW51bSBNdXRleFR5cGUgeyBrU3Rh
dGljID0gMCwga0R5bmFtaWMgPSAxIH07CisgIC8vIFdlIHJlbHkgb24ga1N0YXRpY011dGV4IGJl
aW5nIDAgYXMgaXQgaXMgdG8gd2hhdCB0aGUgbGlua2VyIGluaXRpYWxpemVzCisgIC8vIHR5cGVf
IGluIHN0YXRpYyBtdXRleGVzLiAgY3JpdGljYWxfc2VjdGlvbl8gd2lsbCBiZSBpbml0aWFsaXpl
ZCBsYXppbHkKKyAgLy8gaW4gVGhyZWFkU2FmZUxhenlJbml0KCkuCisgIGVudW0gU3RhdGljQ29u
c3RydWN0b3JTZWxlY3RvciB7IGtTdGF0aWNNdXRleCA9IDAgfTsKKworICAvLyBUaGlzIGNvbnN0
cnVjdG9yIGludGVudGlvbmFsbHkgZG9lcyBub3RoaW5nLiAgSXQgcmVsaWVzIG9uIHR5cGVfIGJl
aW5nCisgIC8vIHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQgdG8gMCAoZWZmZWN0aXZlbHkgc2V0dGlu
ZyBpdCB0byBrU3RhdGljKSBhbmQgb24KKyAgLy8gVGhyZWFkU2FmZUxhenlJbml0KCkgdG8gbGF6
aWx5IGluaXRpYWxpemUgdGhlIHJlc3Qgb2YgdGhlIG1lbWJlcnMuCisgIGV4cGxpY2l0IE11dGV4
KFN0YXRpY0NvbnN0cnVjdG9yU2VsZWN0b3IgLypkdW1teSovKSB7fQorCisgIE11dGV4KCk7Cisg
IH5NdXRleCgpOworCisgIHZvaWQgTG9jaygpOworCisgIHZvaWQgVW5sb2NrKCk7CisKKyAgLy8g
RG9lcyBub3RoaW5nIGlmIHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUgbXV0ZXguIE90aGVy
d2lzZSwgY3Jhc2hlcworICAvLyB3aXRoIGhpZ2ggcHJvYmFiaWxpdHkuCisgIHZvaWQgQXNzZXJ0
SGVsZCgpOworCisgcHJpdmF0ZToKKyAgLy8gSW5pdGlhbGl6ZXMgb3duZXJfdGhyZWFkX2lkXyBh
bmQgY3JpdGljYWxfc2VjdGlvbl8gaW4gc3RhdGljIG11dGV4ZXMuCisgIHZvaWQgVGhyZWFkU2Fm
ZUxhenlJbml0KCk7CisKKyAgLy8gUGVyIGh0dHBzOi8vYmxvZ3MubXNkbi5taWNyb3NvZnQuY29t
L29sZG5ld3RoaW5nLzIwMDQwMjIzLTAwLz9wPTQwNTAzLAorICAvLyB3ZSBhc3N1bWUgdGhhdCAw
IGlzIGFuIGludmFsaWQgdmFsdWUgZm9yIHRocmVhZCBJRHMuCisgIHVuc2lnbmVkIGludCBvd25l
cl90aHJlYWRfaWRfOworCisgIC8vIEZvciBzdGF0aWMgbXV0ZXhlcywgd2UgcmVseSBvbiB0aGVz
ZSBtZW1iZXJzIGJlaW5nIGluaXRpYWxpemVkIHRvIHplcm9zCisgIC8vIGJ5IHRoZSBsaW5rZXIu
CisgIE11dGV4VHlwZSB0eXBlXzsKKyAgbG9uZyBjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhhc2Vf
OyAgLy8gTk9MSU5UCisgIEdURVNUX0NSSVRJQ0FMX1NFQ1RJT04qIGNyaXRpY2FsX3NlY3Rpb25f
OworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTXV0ZXgpOworfTsKKworIyBk
ZWZpbmUgR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVURVhfKG11dGV4KSBcCisgICAgZXh0ZXJuIDo6
dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4IG11dGV4CisKKyMgZGVmaW5lIEdURVNUX0RFRklORV9T
VEFUSUNfTVVURVhfKG11dGV4KSBcCisgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXggbXV0
ZXgoOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXg6OmtTdGF0aWNNdXRleCkKKworLy8gV2UgY2Fu
bm90IG5hbWUgdGhpcyBjbGFzcyBNdXRleExvY2sgYmVjYXVzZSB0aGUgY3RvciBkZWNsYXJhdGlv
biB3b3VsZAorLy8gY29uZmxpY3Qgd2l0aCBhIG1hY3JvIG5hbWVkIE11dGV4TG9jaywgd2hpY2gg
aXMgZGVmaW5lZCBvbiBzb21lCisvLyBwbGF0Zm9ybXMuIFRoYXQgbWFjcm8gaXMgdXNlZCBhcyBh
IGRlZmVuc2l2ZSBtZWFzdXJlIHRvIHByZXZlbnQgYWdhaW5zdAorLy8gaW5hZHZlcnRlbnQgbWlz
dXNlcyBvZiBNdXRleExvY2sgbGlrZSAiTXV0ZXhMb2NrKCZtdSkiIHJhdGhlciB0aGFuCisvLyAi
TXV0ZXhMb2NrIGwoJm11KSIuICBIZW5jZSB0aGUgdHlwZWRlZiB0cmljayBiZWxvdy4KK2NsYXNz
IEdUZXN0TXV0ZXhMb2NrIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IEdUZXN0TXV0ZXhMb2NrKE11
dGV4KiBtdXRleCkKKyAgICAgIDogbXV0ZXhfKG11dGV4KSB7IG11dGV4Xy0+TG9jaygpOyB9CisK
KyAgfkdUZXN0TXV0ZXhMb2NrKCkgeyBtdXRleF8tPlVubG9jaygpOyB9CisKKyBwcml2YXRlOgor
ICBNdXRleCogY29uc3QgbXV0ZXhfOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oR1Rlc3RNdXRleExvY2spOworfTsKKwordHlwZWRlZiBHVGVzdE11dGV4TG9jayBNdXRleExv
Y2s7CisKKy8vIEJhc2UgY2xhc3MgZm9yIFZhbHVlSG9sZGVyPFQ+LiAgQWxsb3dzIGEgY2FsbGVy
IHRvIGhvbGQgYW5kIGRlbGV0ZSBhIHZhbHVlCisvLyB3aXRob3V0IGtub3dpbmcgaXRzIHR5cGUu
CitjbGFzcyBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSB7CisgcHVibGljOgorICB2aXJ0dWFs
IH5UaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSgpIHt9Cit9OworCisvLyBQcm92aWRlcyBhIHdh
eSBmb3IgYSB0aHJlYWQgdG8gc2VuZCBub3RpZmljYXRpb25zIHRvIGEgVGhyZWFkTG9jYWwKKy8v
IHJlZ2FyZGxlc3Mgb2YgaXRzIHBhcmFtZXRlciB0eXBlLgorY2xhc3MgVGhyZWFkTG9jYWxCYXNl
IHsKKyBwdWJsaWM6CisgIC8vIENyZWF0ZXMgYSBuZXcgVmFsdWVIb2xkZXI8VD4gb2JqZWN0IGhv
bGRpbmcgYSBkZWZhdWx0IHZhbHVlIHBhc3NlZCB0bworICAvLyB0aGlzIFRocmVhZExvY2FsPFQ+
J3MgY29uc3RydWN0b3IgYW5kIHJldHVybnMgaXQuICBJdCBpcyB0aGUgY2FsbGVyJ3MKKyAgLy8g
cmVzcG9uc2liaWxpdHkgbm90IHRvIGNhbGwgdGhpcyB3aGVuIHRoZSBUaHJlYWRMb2NhbDxUPiBp
bnN0YW5jZSBhbHJlYWR5CisgIC8vIGhhcyBhIHZhbHVlIG9uIHRoZSBjdXJyZW50IHRocmVhZC4K
KyAgdmlydHVhbCBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogTmV3VmFsdWVGb3JDdXJyZW50
VGhyZWFkKCkgY29uc3QgPSAwOworCisgcHJvdGVjdGVkOgorICBUaHJlYWRMb2NhbEJhc2UoKSB7
fQorICB2aXJ0dWFsIH5UaHJlYWRMb2NhbEJhc2UoKSB7fQorCisgcHJpdmF0ZToKKyAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJlYWRMb2NhbEJhc2UpOworfTsKKworLy8gTWFw
cyBhIHRocmVhZCB0byBhIHNldCBvZiBUaHJlYWRMb2NhbHMgdGhhdCBoYXZlIHZhbHVlcyBpbnN0
YW50aWF0ZWQgb24gdGhhdAorLy8gdGhyZWFkIGFuZCBub3RpZmllcyB0aGVtIHdoZW4gdGhlIHRo
cmVhZCBleGl0cy4gIEEgVGhyZWFkTG9jYWwgaW5zdGFuY2UgaXMKKy8vIGV4cGVjdGVkIHRvIHBl
cnNpc3QgdW50aWwgYWxsIHRocmVhZHMgaXQgaGFzIHZhbHVlcyBvbiBoYXZlIHRlcm1pbmF0ZWQu
CitjbGFzcyBHVEVTVF9BUElfIFRocmVhZExvY2FsUmVnaXN0cnkgeworIHB1YmxpYzoKKyAgLy8g
UmVnaXN0ZXJzIHRocmVhZF9sb2NhbF9pbnN0YW5jZSBhcyBoYXZpbmcgdmFsdWUgb24gdGhlIGN1
cnJlbnQgdGhyZWFkLgorICAvLyBSZXR1cm5zIGEgdmFsdWUgdGhhdCBjYW4gYmUgdXNlZCB0byBp
ZGVudGlmeSB0aGUgdGhyZWFkIGZyb20gb3RoZXIgdGhyZWFkcy4KKyAgc3RhdGljIFRocmVhZExv
Y2FsVmFsdWVIb2xkZXJCYXNlKiBHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCgKKyAgICAgIGNvbnN0
IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKKworICAvLyBJbnZva2Vk
IHdoZW4gYSBUaHJlYWRMb2NhbCBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuCisgIHN0YXRpYyB2b2lk
IE9uVGhyZWFkTG9jYWxEZXN0cm95ZWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRo
cmVhZF9sb2NhbF9pbnN0YW5jZSk7Cit9OworCitjbGFzcyBHVEVTVF9BUElfIFRocmVhZFdpdGhQ
YXJhbUJhc2UgeworIHB1YmxpYzoKKyAgdm9pZCBKb2luKCk7CisKKyBwcm90ZWN0ZWQ6CisgIGNs
YXNzIFJ1bm5hYmxlIHsKKyAgIHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5SdW5uYWJsZSgpIHt9Cisg
ICAgdmlydHVhbCB2b2lkIFJ1bigpID0gMDsKKyAgfTsKKworICBUaHJlYWRXaXRoUGFyYW1CYXNl
KFJ1bm5hYmxlICpydW5uYWJsZSwgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KTsKKyAg
dmlydHVhbCB+VGhyZWFkV2l0aFBhcmFtQmFzZSgpOworCisgcHJpdmF0ZToKKyAgQXV0b0hhbmRs
ZSB0aHJlYWRfOworfTsKKworLy8gSGVscGVyIGNsYXNzIGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0
J3MgbXVsdGktdGhyZWFkaW5nIGNvbnN0cnVjdHMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2Ns
YXNzIFRocmVhZFdpdGhQYXJhbSA6IHB1YmxpYyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKKyBwdWJs
aWM6CisgIHR5cGVkZWYgdm9pZCBVc2VyVGhyZWFkRnVuYyhUKTsKKworICBUaHJlYWRXaXRoUGFy
YW0oVXNlclRocmVhZEZ1bmMqIGZ1bmMsIFQgcGFyYW0sIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nh
bl9zdGFydCkKKyAgICAgIDogVGhyZWFkV2l0aFBhcmFtQmFzZShuZXcgUnVubmFibGVJbXBsKGZ1
bmMsIHBhcmFtKSwgdGhyZWFkX2Nhbl9zdGFydCkgeworICB9CisgIHZpcnR1YWwgflRocmVhZFdp
dGhQYXJhbSgpIHt9CisKKyBwcml2YXRlOgorICBjbGFzcyBSdW5uYWJsZUltcGwgOiBwdWJsaWMg
UnVubmFibGUgeworICAgcHVibGljOgorICAgIFJ1bm5hYmxlSW1wbChVc2VyVGhyZWFkRnVuYyog
ZnVuYywgVCBwYXJhbSkKKyAgICAgICAgOiBmdW5jXyhmdW5jKSwKKyAgICAgICAgICBwYXJhbV8o
cGFyYW0pIHsKKyAgICB9CisgICAgdmlydHVhbCB+UnVubmFibGVJbXBsKCkge30KKyAgICB2aXJ0
dWFsIHZvaWQgUnVuKCkgeworICAgICAgZnVuY18ocGFyYW1fKTsKKyAgICB9CisKKyAgIHByaXZh
dGU6CisgICAgVXNlclRocmVhZEZ1bmMqIGNvbnN0IGZ1bmNfOworICAgIGNvbnN0IFQgcGFyYW1f
OworCisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhSdW5uYWJsZUltcGwpOwor
ICB9OworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkV2l0aFBhcmFt
KTsKK307CisKKy8vIEltcGxlbWVudHMgdGhyZWFkLWxvY2FsIHN0b3JhZ2Ugb24gV2luZG93cyBz
eXN0ZW1zLgogLy8KLS8vIFlvdSBjYW4gZm9yd2FyZCBkZWNsYXJlIGEgc3RhdGljIG11dGV4IGxp
a2UgdGhpczoKKy8vICAgLy8gVGhyZWFkIDEKKy8vICAgVGhyZWFkTG9jYWw8aW50PiB0bCgxMDAp
OyAgLy8gMTAwIGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBlYWNoIHRocmVhZC4KIC8vCi0vLyAg
IEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhnX3NvbWVfbXV0ZXgpOworLy8gICAvLyBUaHJl
YWQgMgorLy8gICB0bC5zZXQoMTUwKTsgIC8vIENoYW5nZXMgdGhlIHZhbHVlIGZvciB0aHJlYWQg
MiBvbmx5LgorLy8gICBFWFBFQ1RfRVEoMTUwLCB0bC5nZXQoKSk7CiAvLwotLy8gVG8gY3JlYXRl
IGEgZHluYW1pYyBtdXRleCwganVzdCBkZWZpbmUgYW4gb2JqZWN0IG9mIHR5cGUgTXV0ZXguCisv
LyAgIC8vIFRocmVhZCAxCisvLyAgIEVYUEVDVF9FUSgxMDAsIHRsLmdldCgpKTsgIC8vIEluIHRo
cmVhZCAxLCB0bCBoYXMgdGhlIG9yaWdpbmFsIHZhbHVlLgorLy8gICB0bC5zZXQoMjAwKTsKKy8v
ICAgRVhQRUNUX0VRKDIwMCwgdGwuZ2V0KCkpOworLy8KKy8vIFRoZSB0ZW1wbGF0ZSB0eXBlIGFy
Z3VtZW50IFQgbXVzdCBoYXZlIGEgcHVibGljIGNvcHkgY29uc3RydWN0b3IuCisvLyBJbiBhZGRp
dGlvbiwgdGhlIGRlZmF1bHQgVGhyZWFkTG9jYWwgY29uc3RydWN0b3IgcmVxdWlyZXMgVCB0byBo
YXZlCisvLyBhIHB1YmxpYyBkZWZhdWx0IGNvbnN0cnVjdG9yLgorLy8KKy8vIFRoZSB1c2VycyBv
ZiBhIFRoZWFkTG9jYWwgaW5zdGFuY2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCBhbGwgYnV0IG9u
ZQorLy8gdGhyZWFkcyAoaW5jbHVkaW5nIHRoZSBtYWluIG9uZSkgdXNpbmcgdGhhdCBpbnN0YW5j
ZSBoYXZlIGV4aXRlZCBiZWZvcmUKKy8vIGRlc3Ryb3lpbmcgaXQuIE90aGVyd2lzZSwgdGhlIHBl
ci10aHJlYWQgb2JqZWN0cyBtYW5hZ2VkIGZvciB0aGVtIGJ5IHRoZQorLy8gVGhyZWFkTG9jYWwg
aW5zdGFuY2UgYXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlIGRlc3Ryb3llZCBvbiBhbGwgcGxhdGZv
cm1zLgorLy8KKy8vIEdvb2dsZSBUZXN0IG9ubHkgdXNlcyBnbG9iYWwgVGhyZWFkTG9jYWwgb2Jq
ZWN0cy4gIFRoYXQgbWVhbnMgdGhleQorLy8gd2lsbCBkaWUgYWZ0ZXIgbWFpbigpIGhhcyByZXR1
cm5lZC4gIFRoZXJlZm9yZSwgbm8gcGVyLXRocmVhZAorLy8gb2JqZWN0IG1hbmFnZWQgYnkgR29v
Z2xlIFRlc3Qgd2lsbCBiZSBsZWFrZWQgYXMgbG9uZyBhcyBhbGwgdGhyZWFkcworLy8gdXNpbmcg
R29vZ2xlIFRlc3QgaGF2ZSBleGl0ZWQgd2hlbiBtYWluKCkgcmV0dXJucy4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorY2xhc3MgVGhyZWFkTG9jYWwgOiBwdWJsaWMgVGhyZWFkTG9jYWxCYXNlIHsK
KyBwdWJsaWM6CisgIFRocmVhZExvY2FsKCkgOiBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0
VmFsdWVIb2xkZXJGYWN0b3J5KCkpIHt9CisgIGV4cGxpY2l0IFRocmVhZExvY2FsKGNvbnN0IFQm
IHZhbHVlKQorICAgICAgOiBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBJbnN0YW5jZVZhbHVlSG9sZGVy
RmFjdG9yeSh2YWx1ZSkpIHt9CisKKyAgflRocmVhZExvY2FsKCkgeyBUaHJlYWRMb2NhbFJlZ2lz
dHJ5OjpPblRocmVhZExvY2FsRGVzdHJveWVkKHRoaXMpOyB9CisKKyAgVCogcG9pbnRlcigpIHsg
cmV0dXJuIEdldE9yQ3JlYXRlVmFsdWUoKTsgfQorICBjb25zdCBUKiBwb2ludGVyKCkgY29uc3Qg
eyByZXR1cm4gR2V0T3JDcmVhdGVWYWx1ZSgpOyB9CisgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsg
cmV0dXJuICpwb2ludGVyKCk7IH0KKyAgdm9pZCBzZXQoY29uc3QgVCYgdmFsdWUpIHsgKnBvaW50
ZXIoKSA9IHZhbHVlOyB9CisKKyBwcml2YXRlOgorICAvLyBIb2xkcyBhIHZhbHVlIG9mIFQuICBD
YW4gYmUgZGVsZXRlZCB2aWEgaXRzIGJhc2UgY2xhc3Mgd2l0aG91dCB0aGUgY2FsbGVyCisgIC8v
IGtub3dpbmcgdGhlIHR5cGUgb2YgVC4KKyAgY2xhc3MgVmFsdWVIb2xkZXIgOiBwdWJsaWMgVGhy
ZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UgeworICAgcHVibGljOgorICAgIFZhbHVlSG9sZGVyKCkg
OiB2YWx1ZV8oKSB7fQorICAgIGV4cGxpY2l0IFZhbHVlSG9sZGVyKGNvbnN0IFQmIHZhbHVlKSA6
IHZhbHVlXyh2YWx1ZSkge30KKworICAgIFQqIHBvaW50ZXIoKSB7IHJldHVybiAmdmFsdWVfOyB9
CisKKyAgIHByaXZhdGU6CisgICAgVCB2YWx1ZV87CisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOXyhWYWx1ZUhvbGRlcik7CisgIH07CisKKworICBUKiBHZXRPckNyZWF0ZVZhbHVl
KCkgY29uc3QgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxWYWx1ZUhvbGRlcio+KAorICAgICAg
ICBUaHJlYWRMb2NhbFJlZ2lzdHJ5OjpHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCh0aGlzKSktPnBv
aW50ZXIoKTsKKyAgfQorCisgIHZpcnR1YWwgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UqIE5l
d1ZhbHVlRm9yQ3VycmVudFRocmVhZCgpIGNvbnN0IHsKKyAgICByZXR1cm4gZGVmYXVsdF9mYWN0
b3J5Xy0+TWFrZU5ld0hvbGRlcigpOworICB9CisKKyAgY2xhc3MgVmFsdWVIb2xkZXJGYWN0b3J5
IHsKKyAgIHB1YmxpYzoKKyAgICBWYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1YWwg
flZhbHVlSG9sZGVyRmFjdG9yeSgpIHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRlciogTWFrZU5l
d0hvbGRlcigpIGNvbnN0ID0gMDsKKworICAgcHJpdmF0ZToKKyAgICBHVEVTVF9ESVNBTExPV19D
T1BZX0FORF9BU1NJR05fKFZhbHVlSG9sZGVyRmFjdG9yeSk7CisgIH07CisKKyAgY2xhc3MgRGVm
YXVsdFZhbHVlSG9sZGVyRmFjdG9yeSA6IHB1YmxpYyBWYWx1ZUhvbGRlckZhY3RvcnkgeworICAg
cHVibGljOgorICAgIERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAgIHZpcnR1YWwg
VmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCB7IHJldHVybiBuZXcgVmFsdWVIb2xk
ZXIoKTsgfQorCisgICBwcml2YXRlOgorICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oRGVmYXVsdFZhbHVlSG9sZGVyRmFjdG9yeSk7CisgIH07CisKKyAgY2xhc3MgSW5zdGFuY2VW
YWx1ZUhvbGRlckZhY3RvcnkgOiBwdWJsaWMgVmFsdWVIb2xkZXJGYWN0b3J5IHsKKyAgIHB1Ymxp
YzoKKyAgICBleHBsaWNpdCBJbnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeShjb25zdCBUJiB2YWx1
ZSkgOiB2YWx1ZV8odmFsdWUpIHt9CisgICAgdmlydHVhbCBWYWx1ZUhvbGRlciogTWFrZU5ld0hv
bGRlcigpIGNvbnN0IHsKKyAgICAgIHJldHVybiBuZXcgVmFsdWVIb2xkZXIodmFsdWVfKTsKKyAg
ICB9CisKKyAgIHByaXZhdGU6CisgICAgY29uc3QgVCB2YWx1ZV87ICAvLyBUaGUgdmFsdWUgZm9y
IGVhY2ggdGhyZWFkLgorCisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhJbnN0
YW5jZVZhbHVlSG9sZGVyRmFjdG9yeSk7CisgIH07CisKKyAgc2NvcGVkX3B0cjxWYWx1ZUhvbGRl
ckZhY3Rvcnk+IGRlZmF1bHRfZmFjdG9yeV87CisKKyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOXyhUaHJlYWRMb2NhbCk7Cit9OworCisjIGVsaWYgR1RFU1RfSEFTX1BUSFJFQUQKKwor
Ly8gTXV0ZXhCYXNlIGFuZCBNdXRleCBpbXBsZW1lbnQgbXV0ZXggb24gcHRocmVhZHMtYmFzZWQg
cGxhdGZvcm1zLgogY2xhc3MgTXV0ZXhCYXNlIHsKICBwdWJsaWM6CiAgIC8vIEFjcXVpcmVzIHRo
aXMgbXV0ZXguCiAgIHZvaWQgTG9jaygpIHsKICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNT
XyhwdGhyZWFkX211dGV4X2xvY2soJm11dGV4XykpOwogICAgIG93bmVyXyA9IHB0aHJlYWRfc2Vs
ZigpOworICAgIGhhc19vd25lcl8gPSB0cnVlOwogICB9CiAKICAgLy8gUmVsZWFzZXMgdGhpcyBt
dXRleC4KICAgdm9pZCBVbmxvY2soKSB7Ci0gICAgLy8gV2UgZG9uJ3QgcHJvdGVjdCB3cml0aW5n
IHRvIG93bmVyXyBoZXJlLCBhcyBpdCdzIHRoZSBjYWxsZXIncwotICAgIC8vIHJlc3BvbnNpYmls
aXR5IHRvIGVuc3VyZSB0aGF0IHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUKKyAgICAvLyBT
aW5jZSB0aGUgbG9jayBpcyBiZWluZyByZWxlYXNlZCB0aGUgb3duZXJfIGZpZWxkIHNob3VsZCBu
byBsb25nZXIgYmUKKyAgICAvLyBjb25zaWRlcmVkIHZhbGlkLiBXZSBkb24ndCBwcm90ZWN0IHdy
aXRpbmcgdG8gaGFzX293bmVyXyBoZXJlLCBhcyBpdCdzCisgICAgLy8gdGhlIGNhbGxlcidzIHJl
c3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGF0IHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUK
ICAgICAvLyBtdXRleCB3aGVuIHRoaXMgaXMgY2FsbGVkLgotICAgIG93bmVyXyA9IDA7CisgICAg
aGFzX293bmVyXyA9IGZhbHNlOwogICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJl
YWRfbXV0ZXhfdW5sb2NrKCZtdXRleF8pKTsKICAgfQogCiAgIC8vIERvZXMgbm90aGluZyBpZiB0
aGUgY3VycmVudCB0aHJlYWQgaG9sZHMgdGhlIG11dGV4LiBPdGhlcndpc2UsIGNyYXNoZXMKICAg
Ly8gd2l0aCBoaWdoIHByb2JhYmlsaXR5LgogICB2b2lkIEFzc2VydEhlbGQoKSBjb25zdCB7Ci0g
ICAgR1RFU1RfQ0hFQ0tfKG93bmVyXyA9PSBwdGhyZWFkX3NlbGYoKSkKKyAgICBHVEVTVF9DSEVD
S18oaGFzX293bmVyXyAmJiBwdGhyZWFkX2VxdWFsKG93bmVyXywgcHRocmVhZF9zZWxmKCkpKQog
ICAgICAgICA8PCAiVGhlIGN1cnJlbnQgdGhyZWFkIGlzIG5vdCBob2xkaW5nIHRoZSBtdXRleCBA
IiA8PCB0aGlzOwogICB9CiAKQEAgLTEwNDYsMTYgKzIwODcsMjggQEAgY2xhc3MgTXV0ZXhCYXNl
IHsKICAgLy8gaGF2ZSB0byBiZSBwdWJsaWMuCiAgcHVibGljOgogICBwdGhyZWFkX211dGV4X3Qg
bXV0ZXhfOyAgLy8gVGhlIHVuZGVybHlpbmcgcHRocmVhZCBtdXRleC4KLSAgcHRocmVhZF90IG93
bmVyXzsgIC8vIFRoZSB0aHJlYWQgaG9sZGluZyB0aGUgbXV0ZXg7IDAgbWVhbnMgbm8gb25lIGhv
bGRzIGl0LgorICAvLyBoYXNfb3duZXJfIGluZGljYXRlcyB3aGV0aGVyIHRoZSBvd25lcl8gZmll
bGQgYmVsb3cgY29udGFpbnMgYSB2YWxpZCB0aHJlYWQKKyAgLy8gSUQgYW5kIGlzIHRoZXJlZm9y
ZSBzYWZlIHRvIGluc3BlY3QgKGUuZy4sIHRvIHVzZSBpbiBwdGhyZWFkX2VxdWFsKCkpLiBBbGwK
KyAgLy8gYWNjZXNzZXMgdG8gdGhlIG93bmVyXyBmaWVsZCBzaG91bGQgYmUgcHJvdGVjdGVkIGJ5
IGEgY2hlY2sgb2YgdGhpcyBmaWVsZC4KKyAgLy8gQW4gYWx0ZXJuYXRpdmUgbWlnaHQgYmUgdG8g
bWVtc2V0KCkgb3duZXJfIHRvIGFsbCB6ZXJvcywgYnV0IHRoZXJlJ3Mgbm8KKyAgLy8gZ3VhcmFu
dGVlIHRoYXQgYSB6ZXJvJ2QgcHRocmVhZF90IGlzIG5lY2Vzc2FyaWx5IGludmFsaWQgb3IgZXZl
biBkaWZmZXJlbnQKKyAgLy8gZnJvbSBwdGhyZWFkX3NlbGYoKS4KKyAgYm9vbCBoYXNfb3duZXJf
OworICBwdGhyZWFkX3Qgb3duZXJfOyAgLy8gVGhlIHRocmVhZCBob2xkaW5nIHRoZSBtdXRleC4K
IH07CiAKIC8vIEZvcndhcmQtZGVjbGFyZXMgYSBzdGF0aWMgbXV0ZXguCi0jZGVmaW5lIEdURVNU
X0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRleCkgXAotICAgIGV4dGVybiA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpNdXRleEJhc2UgbXV0ZXgKKyMgIGRlZmluZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19N
VVRFWF8obXV0ZXgpIFwKKyAgICAgZXh0ZXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4QmFz
ZSBtdXRleAogCiAvLyBEZWZpbmVzIGFuZCBzdGF0aWNhbGx5IChpLmUuIGF0IGxpbmsgdGltZSkg
aW5pdGlhbGl6ZXMgYSBzdGF0aWMgbXV0ZXguCisvLyBUaGUgaW5pdGlhbGl6YXRpb24gbGlzdCBo
ZXJlIGRvZXMgbm90IGV4cGxpY2l0bHkgaW5pdGlhbGl6ZSBlYWNoIGZpZWxkLAorLy8gaW5zdGVh
ZCByZWx5aW5nIG9uIGRlZmF1bHQgaW5pdGlhbGl6YXRpb24gZm9yIHRoZSB1bnNwZWNpZmllZCBm
aWVsZHMuIEluCisvLyBwYXJ0aWN1bGFyLCB0aGUgb3duZXJfIGZpZWxkIChhIHB0aHJlYWRfdCkg
aXMgbm90IGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQuCisvLyBUaGlzIGFsbG93cyBpbml0aWFsaXph
dGlvbiB0byB3b3JrIHdoZXRoZXIgcHRocmVhZF90IGlzIGEgc2NhbGFyIG9yIHN0cnVjdC4KKy8v
IFRoZSBmbGFnIC1XbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMgbXVzdCBub3QgYmUgc3BlY2lm
aWVkIGZvciB0aGlzIHRvIHdvcmsuCiAjZGVmaW5lIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhf
KG11dGV4KSBcCi0gICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXhCYXNlIG11dGV4ID0geyBQ
VEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSLCAwIH0KKyAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0
ZXhCYXNlIG11dGV4ID0ge1BUSFJFQURfTVVURVhfSU5JVElBTElaRVIsIGZhbHNlLCAwfQogCiAv
LyBUaGUgTXV0ZXggY2xhc3MgY2FuIG9ubHkgYmUgdXNlZCBmb3IgbXV0ZXhlcyBjcmVhdGVkIGF0
IHJ1bnRpbWUuIEl0CiAvLyBzaGFyZXMgaXRzIEFQSSB3aXRoIE11dGV4QmFzZSBvdGhlcndpc2Uu
CkBAIC0xMDYzLDcgKzIxMTYsNyBAQCBjbGFzcyBNdXRleCA6IHB1YmxpYyBNdXRleEJhc2Ugewog
IHB1YmxpYzoKICAgTXV0ZXgoKSB7CiAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRo
cmVhZF9tdXRleF9pbml0KCZtdXRleF8sIE5VTEwpKTsKLSAgICBvd25lcl8gPSAwOworICAgIGhh
c19vd25lcl8gPSBmYWxzZTsKICAgfQogICB+TXV0ZXgoKSB7CiAgICAgR1RFU1RfQ0hFQ0tfUE9T
SVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9kZXN0cm95KCZtdXRleF8pKTsKQEAgLTEwNzMsOSAr
MjEyNiwxMSBAQCBjbGFzcyBNdXRleCA6IHB1YmxpYyBNdXRleEJhc2UgewogICBHVEVTVF9ESVNB
TExPV19DT1BZX0FORF9BU1NJR05fKE11dGV4KTsKIH07CiAKLS8vIFdlIGNhbm5vdCBuYW1lIHRo
aXMgY2xhc3MgTXV0ZXhMb2NrIGFzIHRoZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCisvLyBXZSBj
YW5ub3QgbmFtZSB0aGlzIGNsYXNzIE11dGV4TG9jayBiZWNhdXNlIHRoZSBjdG9yIGRlY2xhcmF0
aW9uIHdvdWxkCiAvLyBjb25mbGljdCB3aXRoIGEgbWFjcm8gbmFtZWQgTXV0ZXhMb2NrLCB3aGlj
aCBpcyBkZWZpbmVkIG9uIHNvbWUKLS8vIHBsYXRmb3Jtcy4gIEhlbmNlIHRoZSB0eXBlZGVmIHRy
aWNrIGJlbG93LgorLy8gcGxhdGZvcm1zLiBUaGF0IG1hY3JvIGlzIHVzZWQgYXMgYSBkZWZlbnNp
dmUgbWVhc3VyZSB0byBwcmV2ZW50IGFnYWluc3QKKy8vIGluYWR2ZXJ0ZW50IG1pc3VzZXMgb2Yg
TXV0ZXhMb2NrIGxpa2UgIk11dGV4TG9jaygmbXUpIiByYXRoZXIgdGhhbgorLy8gIk11dGV4TG9j
ayBsKCZtdSkiLiAgSGVuY2UgdGhlIHR5cGVkZWYgdHJpY2sgYmVsb3cuCiBjbGFzcyBHVGVzdE11
dGV4TG9jayB7CiAgcHVibGljOgogICBleHBsaWNpdCBHVGVzdE11dGV4TG9jayhNdXRleEJhc2Uq
IG11dGV4KQpAQCAtMTEwOSw0MSArMjE2NCwxNCBAQCBleHRlcm4gIkMiIGlubGluZSB2b2lkIERl
bGV0ZVRocmVhZExvY2FsVmFsdWUodm9pZCogdmFsdWVfaG9sZGVyKSB7CiB9CiAKIC8vIEltcGxl
bWVudHMgdGhyZWFkLWxvY2FsIHN0b3JhZ2Ugb24gcHRocmVhZHMtYmFzZWQgc3lzdGVtcy4KLS8v
Ci0vLyAgIC8vIFRocmVhZCAxCi0vLyAgIFRocmVhZExvY2FsPGludD4gdGwoMTAwKTsgIC8vIDEw
MCBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgZWFjaCB0aHJlYWQuCi0vLwotLy8gICAvLyBUaHJl
YWQgMgotLy8gICB0bC5zZXQoMTUwKTsgIC8vIENoYW5nZXMgdGhlIHZhbHVlIGZvciB0aHJlYWQg
MiBvbmx5LgotLy8gICBFWFBFQ1RfRVEoMTUwLCB0bC5nZXQoKSk7Ci0vLwotLy8gICAvLyBUaHJl
YWQgMQotLy8gICBFWFBFQ1RfRVEoMTAwLCB0bC5nZXQoKSk7ICAvLyBJbiB0aHJlYWQgMSwgdGwg
aGFzIHRoZSBvcmlnaW5hbCB2YWx1ZS4KLS8vICAgdGwuc2V0KDIwMCk7Ci0vLyAgIEVYUEVDVF9F
USgyMDAsIHRsLmdldCgpKTsKLS8vCi0vLyBUaGUgdGVtcGxhdGUgdHlwZSBhcmd1bWVudCBUIG11
c3QgaGF2ZSBhIHB1YmxpYyBjb3B5IGNvbnN0cnVjdG9yLgotLy8gSW4gYWRkaXRpb24sIHRoZSBk
ZWZhdWx0IFRocmVhZExvY2FsIGNvbnN0cnVjdG9yIHJlcXVpcmVzIFQgdG8gaGF2ZQotLy8gYSBw
dWJsaWMgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KLS8vCi0vLyBBbiBvYmplY3QgbWFuYWdlZCBmb3Ig
YSB0aHJlYWQgYnkgYSBUaHJlYWRMb2NhbCBpbnN0YW5jZSBpcyBkZWxldGVkCi0vLyB3aGVuIHRo
ZSB0aHJlYWQgZXhpdHMuICBPciwgaWYgdGhlIFRocmVhZExvY2FsIGluc3RhbmNlIGRpZXMgaW4K
LS8vIHRoYXQgdGhyZWFkLCB3aGVuIHRoZSBUaHJlYWRMb2NhbCBkaWVzLiAgSXQncyB0aGUgdXNl
cidzCi0vLyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCBhbGwgb3RoZXIgdGhyZWFkcyB1
c2luZyBhIFRocmVhZExvY2FsCi0vLyBoYXZlIGV4aXRlZCB3aGVuIGl0IGRpZXMsIG9yIHRoZSBw
ZXItdGhyZWFkIG9iamVjdHMgZm9yIHRob3NlCi0vLyB0aHJlYWRzIHdpbGwgbm90IGJlIGRlbGV0
ZWQuCi0vLwotLy8gR29vZ2xlIFRlc3Qgb25seSB1c2VzIGdsb2JhbCBUaHJlYWRMb2NhbCBvYmpl
Y3RzLiAgVGhhdCBtZWFucyB0aGV5Ci0vLyB3aWxsIGRpZSBhZnRlciBtYWluKCkgaGFzIHJldHVy
bmVkLiAgVGhlcmVmb3JlLCBubyBwZXItdGhyZWFkCi0vLyBvYmplY3QgbWFuYWdlZCBieSBHb29n
bGUgVGVzdCB3aWxsIGJlIGxlYWtlZCBhcyBsb25nIGFzIGFsbCB0aHJlYWRzCi0vLyB1c2luZyBH
b29nbGUgVGVzdCBoYXZlIGV4aXRlZCB3aGVuIG1haW4oKSByZXR1cm5zLgogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1jbGFzcyBUaHJlYWRMb2NhbCB7CitjbGFzcyBHVEVTVF9BUElfIFRocmVhZExv
Y2FsIHsKICBwdWJsaWM6Ci0gIFRocmVhZExvY2FsKCkgOiBrZXlfKENyZWF0ZUtleSgpKSwKLSAg
ICAgICAgICAgICAgICAgIGRlZmF1bHRfKCkge30KLSAgZXhwbGljaXQgVGhyZWFkTG9jYWwoY29u
c3QgVCYgdmFsdWUpIDoga2V5XyhDcmVhdGVLZXkoKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfKHZhbHVlKSB7fQorICBUaHJlYWRMb2NhbCgpCisg
ICAgICA6IGtleV8oQ3JlYXRlS2V5KCkpLCBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0VmFs
dWVIb2xkZXJGYWN0b3J5KCkpIHt9CisgIGV4cGxpY2l0IFRocmVhZExvY2FsKGNvbnN0IFQmIHZh
bHVlKQorICAgICAgOiBrZXlfKENyZWF0ZUtleSgpKSwKKyAgICAgICAgZGVmYXVsdF9mYWN0b3J5
XyhuZXcgSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkodmFsdWUpKSB7fQogCiAgIH5UaHJlYWRM
b2NhbCgpIHsKICAgICAvLyBEZXN0cm95cyB0aGUgbWFuYWdlZCBvYmplY3QgZm9yIHRoZSBjdXJy
ZW50IHRocmVhZCwgaWYgYW55LgpAQCAtMTE2Myw2ICsyMTkxLDcgQEAgY2xhc3MgVGhyZWFkTG9j
YWwgewogICAvLyBIb2xkcyBhIHZhbHVlIG9mIHR5cGUgVC4KICAgY2xhc3MgVmFsdWVIb2xkZXIg
OiBwdWJsaWMgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UgewogICAgcHVibGljOgorICAgIFZh
bHVlSG9sZGVyKCkgOiB2YWx1ZV8oKSB7fQogICAgIGV4cGxpY2l0IFZhbHVlSG9sZGVyKGNvbnN0
IFQmIHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KIAogICAgIFQqIHBvaW50ZXIoKSB7IHJldHVy
biAmdmFsdWVfOyB9CkBAIC0xMTg4LDIyICsyMjE3LDU0IEBAIGNsYXNzIFRocmVhZExvY2FsIHsK
ICAgICAgIHJldHVybiBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGU8VmFsdWVIb2xkZXI+KGhv
bGRlciktPnBvaW50ZXIoKTsKICAgICB9CiAKLSAgICBWYWx1ZUhvbGRlciogY29uc3QgbmV3X2hv
bGRlciA9IG5ldyBWYWx1ZUhvbGRlcihkZWZhdWx0Xyk7CisgICAgVmFsdWVIb2xkZXIqIGNvbnN0
IG5ld19ob2xkZXIgPSBkZWZhdWx0X2ZhY3RvcnlfLT5NYWtlTmV3SG9sZGVyKCk7CiAgICAgVGhy
ZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UqIGNvbnN0IGhvbGRlcl9iYXNlID0gbmV3X2hvbGRlcjsK
ICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX3NldHNwZWNpZmljKGtleV8s
IGhvbGRlcl9iYXNlKSk7CiAgICAgcmV0dXJuIG5ld19ob2xkZXItPnBvaW50ZXIoKTsKICAgfQog
CisgIGNsYXNzIFZhbHVlSG9sZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAgVmFsdWVIb2xk
ZXJGYWN0b3J5KCkge30KKyAgICB2aXJ0dWFsIH5WYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQorICAg
IHZpcnR1YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCA9IDA7CisKKyAgIHBy
aXZhdGU6CisgICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhWYWx1ZUhvbGRlckZh
Y3RvcnkpOworICB9OworCisgIGNsYXNzIERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkgOiBwdWJs
aWMgVmFsdWVIb2xkZXJGYWN0b3J5IHsKKyAgIHB1YmxpYzoKKyAgICBEZWZhdWx0VmFsdWVIb2xk
ZXJGYWN0b3J5KCkge30KKyAgICB2aXJ0dWFsIFZhbHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkg
Y29uc3QgeyByZXR1cm4gbmV3IFZhbHVlSG9sZGVyKCk7IH0KKworICAgcHJpdmF0ZToKKyAgICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKERlZmF1bHRWYWx1ZUhvbGRlckZhY3Rvcnkp
OworICB9OworCisgIGNsYXNzIEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5IDogcHVibGljIFZh
bHVlSG9sZGVyRmFjdG9yeSB7CisgICBwdWJsaWM6CisgICAgZXhwbGljaXQgSW5zdGFuY2VWYWx1
ZUhvbGRlckZhY3RvcnkoY29uc3QgVCYgdmFsdWUpIDogdmFsdWVfKHZhbHVlKSB7fQorICAgIHZp
cnR1YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCB7CisgICAgICByZXR1cm4g
bmV3IFZhbHVlSG9sZGVyKHZhbHVlXyk7CisgICAgfQorCisgICBwcml2YXRlOgorICAgIGNvbnN0
IFQgdmFsdWVfOyAgLy8gVGhlIHZhbHVlIGZvciBlYWNoIHRocmVhZC4KKworICAgIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkpOworICB9
OworCiAgIC8vIEEga2V5IHB0aHJlYWRzIHVzZXMgZm9yIGxvb2tpbmcgdXAgcGVyLXRocmVhZCB2
YWx1ZXMuCiAgIGNvbnN0IHB0aHJlYWRfa2V5X3Qga2V5XzsKLSAgY29uc3QgVCBkZWZhdWx0Xzsg
IC8vIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBlYWNoIHRocmVhZC4KKyAgc2NvcGVkX3B0cjxWYWx1
ZUhvbGRlckZhY3Rvcnk+IGRlZmF1bHRfZmFjdG9yeV87CiAKICAgR1RFU1RfRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOXyhUaHJlYWRMb2NhbCk7CiB9OwogCi0jZGVmaW5lIEdURVNUX0lTX1RIUkVB
RFNBRkUgMQorIyBlbmRpZiAgLy8gR1RFU1RfSEFTX01VVEVYX0FORF9USFJFQURfTE9DQUxfCiAK
LSNlbHNlICAvLyBHVEVTVF9IQVNfUFRIUkVBRAorI2Vsc2UgIC8vIEdURVNUX0lTX1RIUkVBRFNB
RkUKIAogLy8gQSBkdW1teSBpbXBsZW1lbnRhdGlvbiBvZiBzeW5jaHJvbml6YXRpb24gcHJpbWl0
aXZlcyAobXV0ZXgsIGxvY2ssCiAvLyBhbmQgdGhyZWFkLWxvY2FsIHZhcmlhYmxlKS4gIE5lY2Vz
c2FyeSBmb3IgY29tcGlsaW5nIEdvb2dsZSBUZXN0IHdoZXJlCkBAIC0xMjEzLDE0ICsyMjc0LDIx
IEBAIGNsYXNzIFRocmVhZExvY2FsIHsKIGNsYXNzIE11dGV4IHsKICBwdWJsaWM6CiAgIE11dGV4
KCkge30KKyAgdm9pZCBMb2NrKCkge30KKyAgdm9pZCBVbmxvY2soKSB7fQogICB2b2lkIEFzc2Vy
dEhlbGQoKSBjb25zdCB7fQogfTsKIAotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRF
WF8obXV0ZXgpIFwKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhtdXRleCkg
XAogICBleHRlcm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXggbXV0ZXgKIAotI2RlZmluZSBH
VEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhtdXRleCkgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0
ZXggbXV0ZXgKKyMgZGVmaW5lIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKG11dGV4KSA6OnRl
c3Rpbmc6OmludGVybmFsOjpNdXRleCBtdXRleAogCisvLyBXZSBjYW5ub3QgbmFtZSB0aGlzIGNs
YXNzIE11dGV4TG9jayBiZWNhdXNlIHRoZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCisvLyBjb25m
bGljdCB3aXRoIGEgbWFjcm8gbmFtZWQgTXV0ZXhMb2NrLCB3aGljaCBpcyBkZWZpbmVkIG9uIHNv
bWUKKy8vIHBsYXRmb3Jtcy4gVGhhdCBtYWNybyBpcyB1c2VkIGFzIGEgZGVmZW5zaXZlIG1lYXN1
cmUgdG8gcHJldmVudCBhZ2FpbnN0CisvLyBpbmFkdmVydGVudCBtaXN1c2VzIG9mIE11dGV4TG9j
ayBsaWtlICJNdXRleExvY2soJm11KSIgcmF0aGVyIHRoYW4KKy8vICJNdXRleExvY2sgbCgmbXUp
Ii4gIEhlbmNlIHRoZSB0eXBlZGVmIHRyaWNrIGJlbG93LgogY2xhc3MgR1Rlc3RNdXRleExvY2sg
ewogIHB1YmxpYzoKICAgZXhwbGljaXQgR1Rlc3RNdXRleExvY2soTXV0ZXgqKSB7fSAgLy8gTk9M
SU5UCkBAIC0xMjI5LDcgKzIyOTcsNyBAQCBjbGFzcyBHVGVzdE11dGV4TG9jayB7CiB0eXBlZGVm
IEdUZXN0TXV0ZXhMb2NrIE11dGV4TG9jazsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFz
cyBUaHJlYWRMb2NhbCB7CitjbGFzcyBHVEVTVF9BUElfIFRocmVhZExvY2FsIHsKICBwdWJsaWM6
CiAgIFRocmVhZExvY2FsKCkgOiB2YWx1ZV8oKSB7fQogICBleHBsaWNpdCBUaHJlYWRMb2NhbChj
b25zdCBUJiB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9CkBAIC0xMjQxLDI4ICsyMzA5LDI1IEBA
IGNsYXNzIFRocmVhZExvY2FsIHsKICAgVCB2YWx1ZV87CiB9OwogCi0vLyBUaGUgYWJvdmUgc3lu
Y2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaGF2ZSBkdW1teSBpbXBsZW1lbnRhdGlvbnMuCi0vLyBU
aGVyZWZvcmUgR29vZ2xlIFRlc3QgaXMgbm90IHRocmVhZC1zYWZlLgotI2RlZmluZSBHVEVTVF9J
U19USFJFQURTQUZFIDAKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVBRAorI2VuZGlmICAv
LyBHVEVTVF9JU19USFJFQURTQUZFCiAKIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiB0aHJlYWRz
IHJ1bm5pbmcgaW4gdGhlIHByb2Nlc3MsIG9yIDAgdG8gaW5kaWNhdGUgdGhhdAogLy8gd2UgY2Fu
bm90IGRldGVjdCBpdC4KIEdURVNUX0FQSV8gc2l6ZV90IEdldFRocmVhZENvdW50KCk7CiAKIC8v
IFBhc3Npbmcgbm9uLVBPRCBjbGFzc2VzIHRocm91Z2ggZWxsaXBzaXMgKC4uLikgY3Jhc2hlcyB0
aGUgQVJNCi0vLyBjb21waWxlciBhbmQgZ2VuZXJhdGVzIGEgd2FybmluZyBpbiBTdW4gU3R1ZGlv
LiAgVGhlIE5va2lhIFN5bWJpYW4KKy8vIGNvbXBpbGVyIGFuZCBnZW5lcmF0ZXMgYSB3YXJuaW5n
IGluIFN1biBTdHVkaW8gYmVmb3JlIDEydTQuIFRoZSBOb2tpYSBTeW1iaWFuCiAvLyBhbmQgdGhl
IElCTSBYTCBDL0MrKyBjb21waWxlciB0cnkgdG8gaW5zdGFudGlhdGUgYSBjb3B5IGNvbnN0cnVj
dG9yCiAvLyBmb3Igb2JqZWN0cyBwYXNzZWQgdGhyb3VnaCBlbGxpcHNpcyAoLi4uKSwgZmFpbGlu
ZyBmb3IgdW5jb3B5YWJsZQogLy8gb2JqZWN0cy4gIFdlIGRlZmluZSB0aGlzIHRvIGVuc3VyZSB0
aGF0IG9ubHkgUE9EIGlzIHBhc3NlZCB0aHJvdWdoCiAvLyBlbGxpcHNpcyBvbiB0aGVzZSBzeXN0
ZW1zLgotI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgfHwgZGVmaW5lZChfX0lCTUNQUF9fKSB8
fCBkZWZpbmVkKF9fU1VOUFJPX0NDKQorI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgfHwgZGVm
aW5lZChfX0lCTUNQUF9fKSB8fCBcCisgICAgIChkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiBfX1NV
TlBST19DQyA8IDB4NTEzMCkKIC8vIFdlIGxvc2Ugc3VwcG9ydCBmb3IgTlVMTCBkZXRlY3Rpb24g
d2hlcmUgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZQogLy8gcGFzc2luZyBub24tUE9EIGNsYXNz
ZXMgdGhyb3VnaCBlbGxpcHNpcyAoLi4uKS4KLSNkZWZpbmUgR1RFU1RfRUxMSVBTSVNfTkVFRFNf
UE9EXyAxCisjIGRlZmluZSBHVEVTVF9FTExJUFNJU19ORUVEU19QT0RfIDEKICNlbHNlCi0jZGVm
aW5lIEdURVNUX0NBTl9DT01QQVJFX05VTEwgMQorIyBkZWZpbmUgR1RFU1RfQ0FOX0NPTVBBUkVf
TlVMTCAxCiAjZW5kaWYKIAogLy8gVGhlIE5va2lhIFN5bWJpYW4gYW5kIElCTSBYTCBDL0MrKyBj
b21waWxlcnMgY2Fubm90IGRlY2lkZSBiZXR3ZWVuCkBAIC0xMjcwLDcgKzIzMzUsNyBAQCBHVEVT
VF9BUElfIHNpemVfdCBHZXRUaHJlYWRDb3VudCgpOwogLy8gX2Nhbl8gZGVjaWRlIGJldHdlZW4g
Y2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIGZvciBUIGFuZCBUKiwKIC8vIHNvIGEgdHIx
Ojp0eXBlX3RyYWl0cy1saWtlIGlzX3BvaW50ZXIgd29ya3MuCiAjaWYgZGVmaW5lZChfX1NZTUJJ
QU4zMl9fKSB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pCi0jZGVmaW5lIEdURVNUX05FRURTX0lTX1BP
SU5URVJfIDEKKyMgZGVmaW5lIEdURVNUX05FRURTX0lTX1BPSU5URVJfIDEKICNlbmRpZgogCiB0
ZW1wbGF0ZSA8Ym9vbCBib29sX3ZhbHVlPgpAQCAtMTI4MywyMyArMjM0OCw5MyBAQCB0ZW1wbGF0
ZSA8Ym9vbCBib29sX3ZhbHVlPiBjb25zdCBib29sIGJvb2xfY29uc3RhbnQ8Ym9vbF92YWx1ZT46
OnZhbHVlOwogdHlwZWRlZiBib29sX2NvbnN0YW50PGZhbHNlPiBmYWxzZV90eXBlOwogdHlwZWRl
ZiBib29sX2NvbnN0YW50PHRydWU+IHRydWVfdHlwZTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+CitzdHJ1Y3QgaXNfc2FtZSA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc19zYW1lPFQsIFQ+IDogcHVibGljIHRydWVf
dHlwZSB7fTsKKworCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0cnVjdCBpc19wb2ludGVyIDog
cHVibGljIGZhbHNlX3R5cGUge307CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RydWN0IGlz
X3BvaW50ZXI8VCo+IDogcHVibGljIHRydWVfdHlwZSB7fTsKIAordGVtcGxhdGUgPHR5cGVuYW1l
IEl0ZXJhdG9yPgorc3RydWN0IEl0ZXJhdG9yVHJhaXRzIHsKKyAgdHlwZWRlZiB0eXBlbmFtZSBJ
dGVyYXRvcjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOworfTsKKworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK3N0cnVjdCBJdGVyYXRvclRyYWl0czxUKj4geworICB0eXBlZGVmIFQgdmFsdWVfdHlw
ZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IEl0ZXJhdG9yVHJhaXRzPGNv
bnN0IFQqPiB7CisgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOworfTsKKwogI2lmIEdURVNUX09TX1dJ
TkRPV1MKLSNkZWZpbmUgR1RFU1RfUEFUSF9TRVBfICJcXCIKLSNkZWZpbmUgR1RFU1RfSEFTX0FM
VF9QQVRIX1NFUF8gMQorIyBkZWZpbmUgR1RFU1RfUEFUSF9TRVBfICJcXCIKKyMgZGVmaW5lIEdU
RVNUX0hBU19BTFRfUEFUSF9TRVBfIDEKIC8vIFRoZSBiaWdnZXN0IHNpZ25lZCBpbnRlZ2VyIHR5
cGUgdGhlIGNvbXBpbGVyIHN1cHBvcnRzLgogdHlwZWRlZiBfX2ludDY0IEJpZ2dlc3RJbnQ7CiAj
ZWxzZQotI2RlZmluZSBHVEVTVF9QQVRIX1NFUF8gIi8iCi0jZGVmaW5lIEdURVNUX0hBU19BTFRf
UEFUSF9TRVBfIDAKKyMgZGVmaW5lIEdURVNUX1BBVEhfU0VQXyAiLyIKKyMgZGVmaW5lIEdURVNU
X0hBU19BTFRfUEFUSF9TRVBfIDAKIHR5cGVkZWYgbG9uZyBsb25nIEJpZ2dlc3RJbnQ7ICAvLyBO
T0xJTlQKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCisvLyBVdGlsaXRpZXMgZm9yIGNo
YXIuCisKKy8vIGlzc3BhY2UoaW50IGNoKSBhbmQgZnJpZW5kcyBhY2NlcHQgYW4gdW5zaWduZWQg
Y2hhciBvciBFT0YuICBjaGFyCisvLyBtYXkgYmUgc2lnbmVkLCBkZXBlbmRpbmcgb24gdGhlIGNv
bXBpbGVyIChvciBjb21waWxlciBmbGFncykuCisvLyBUaGVyZWZvcmUgd2UgbmVlZCB0byBjYXN0
IGEgY2hhciB0byB1bnNpZ25lZCBjaGFyIGJlZm9yZSBjYWxsaW5nCisvLyBpc3NwYWNlKCksIGV0
Yy4KKworaW5saW5lIGJvb2wgSXNBbHBoYShjaGFyIGNoKSB7CisgIHJldHVybiBpc2FscGhhKHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKK30KK2lubGluZSBib29sIElzQWxO
dW0oY2hhciBjaCkgeworICByZXR1cm4gaXNhbG51bShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PihjaCkpICE9IDA7Cit9CitpbmxpbmUgYm9vbCBJc0RpZ2l0KGNoYXIgY2gpIHsKKyAgcmV0dXJu
IGlzZGlnaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOworfQoraW5saW5l
IGJvb2wgSXNMb3dlcihjaGFyIGNoKSB7CisgIHJldHVybiBpc2xvd2VyKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKK30KK2lubGluZSBib29sIElzU3BhY2UoY2hhciBjaCkg
eworICByZXR1cm4gaXNzcGFjZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpICE9IDA7
Cit9CitpbmxpbmUgYm9vbCBJc1VwcGVyKGNoYXIgY2gpIHsKKyAgcmV0dXJuIGlzdXBwZXIoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNYRGln
aXQoY2hhciBjaCkgeworICByZXR1cm4gaXN4ZGlnaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cj4oY2gpKSAhPSAwOworfQoraW5saW5lIGJvb2wgSXNYRGlnaXQod2NoYXJfdCBjaCkgeworICBj
b25zdCB1bnNpZ25lZCBjaGFyIGxvd19ieXRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
Y2gpOworICByZXR1cm4gY2ggPT0gbG93X2J5dGUgJiYgaXN4ZGlnaXQobG93X2J5dGUpICE9IDA7
Cit9CisKK2lubGluZSBjaGFyIFRvTG93ZXIoY2hhciBjaCkgeworICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y2hhcj4odG9sb3dlcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpKTsKK30KK2lu
bGluZSBjaGFyIFRvVXBwZXIoY2hhciBjaCkgeworICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcj4o
dG91cHBlcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpKTsKK30KKworaW5saW5lIHN0
ZDo6c3RyaW5nIFN0cmlwVHJhaWxpbmdTcGFjZXMoc3RkOjpzdHJpbmcgc3RyKSB7CisgIHN0ZDo6
c3RyaW5nOjppdGVyYXRvciBpdCA9IHN0ci5lbmQoKTsKKyAgd2hpbGUgKGl0ICE9IHN0ci5iZWdp
bigpICYmIElzU3BhY2UoKi0taXQpKQorICAgIGl0ID0gc3RyLmVyYXNlKGl0KTsKKyAgcmV0dXJu
IHN0cjsKK30KKwogLy8gVGhlIHRlc3Rpbmc6OmludGVybmFsOjpwb3NpeCBuYW1lc3BhY2UgaG9s
ZHMgd3JhcHBlcnMgZm9yIGNvbW1vbgogLy8gUE9TSVggZnVuY3Rpb25zLiAgVGhlc2Ugd3JhcHBl
cnMgaGlkZSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbgogLy8gV2luZG93cy9NU1ZDIGFuZCBQT1NJ
WCBzeXN0ZW1zLiAgU2luY2Ugc29tZSBjb21waWxlcnMgZGVmaW5lIHRoZXNlCkBAIC0xMzE0LDM2
ICsyNDQ5LDM2IEBAIG5hbWVzcGFjZSBwb3NpeCB7CiAKIHR5cGVkZWYgc3RydWN0IF9zdGF0IFN0
YXRTdHJ1Y3Q7CiAKLSNpZmRlZiBfX0JPUkxBTkRDX18KKyMgaWZkZWYgX19CT1JMQU5EQ19fCiBp
bmxpbmUgaW50IElzQVRUWShpbnQgZmQpIHsgcmV0dXJuIGlzYXR0eShmZCk7IH0KIGlubGluZSBp
bnQgU3RyQ2FzZUNtcChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIpIHsKICAgcmV0dXJu
IHN0cmljbXAoczEsIHMyKTsKIH0KIGlubGluZSBjaGFyKiBTdHJEdXAoY29uc3QgY2hhciogc3Jj
KSB7IHJldHVybiBzdHJkdXAoc3JjKTsgfQotI2Vsc2UgIC8vICFfX0JPUkxBTkRDX18KLSNpZiBH
VEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBlbHNlICAvLyAhX19CT1JMQU5EQ19fCisjICBpZiBH
VEVTVF9PU19XSU5ET1dTX01PQklMRQogaW5saW5lIGludCBJc0FUVFkoaW50IC8qIGZkICovKSB7
IHJldHVybiAwOyB9Ci0jZWxzZQorIyAgZWxzZQogaW5saW5lIGludCBJc0FUVFkoaW50IGZkKSB7
IHJldHVybiBfaXNhdHR5KGZkKTsgfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklM
RQorIyAgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiBpbmxpbmUgaW50IFN0ckNh
c2VDbXAoY29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyKSB7CiAgIHJldHVybiBfc3RyaWNt
cChzMSwgczIpOwogfQogaW5saW5lIGNoYXIqIFN0ckR1cChjb25zdCBjaGFyKiBzcmMpIHsgcmV0
dXJuIF9zdHJkdXAoc3JjKTsgfQotI2VuZGlmICAvLyBfX0JPUkxBTkRDX18KKyMgZW5kaWYgIC8v
IF9fQk9STEFORENfXwogCi0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaWYgR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKIGlubGluZSBpbnQgRmlsZU5vKEZJTEUqIGZpbGUpIHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50PihfZmlsZW5vKGZpbGUpKTsgfQogLy8gU3RhdCgpLCBSbURp
cigpLCBhbmQgSXNEaXIoKSBhcmUgbm90IG5lZWRlZCBvbiBXaW5kb3dzIENFIGF0IHRoaXMKIC8v
IHRpbWUgYW5kIHRodXMgbm90IGRlZmluZWQgdGhlcmUuCi0jZWxzZQorIyBlbHNlCiBpbmxpbmUg
aW50IEZpbGVObyhGSUxFKiBmaWxlKSB7IHJldHVybiBfZmlsZW5vKGZpbGUpOyB9CiBpbmxpbmUg
aW50IFN0YXQoY29uc3QgY2hhciogcGF0aCwgU3RhdFN0cnVjdCogYnVmKSB7IHJldHVybiBfc3Rh
dChwYXRoLCBidWYpOyB9CiBpbmxpbmUgaW50IFJtRGlyKGNvbnN0IGNoYXIqIGRpcikgeyByZXR1
cm4gX3JtZGlyKGRpcik7IH0KIGlubGluZSBib29sIElzRGlyKGNvbnN0IFN0YXRTdHJ1Y3QmIHN0
KSB7CiAgIHJldHVybiAoX1NfSUZESVIgJiBzdC5zdF9tb2RlKSAhPSAwOwogfQotI2VuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKIAogI2Vsc2UKIApAQCAtMTM2MywxMSArMjQ5OCw3IEBAIGlubGluZSBib29sIElzRGly
KGNvbnN0IFN0YXRTdHJ1Y3QmIHN0KSB7IHJldHVybiBTX0lTRElSKHN0LnN0X21vZGUpOyB9CiAK
IC8vIEZ1bmN0aW9ucyBkZXByZWNhdGVkIGJ5IE1TVkMgOC4wLgogCi0jaWZkZWYgX01TQ19WRVIK
LS8vIFRlbXBvcmFyaWx5IGRpc2FibGUgd2FybmluZyA0OTk2IChkZXByZWNhdGVkIGZ1bmN0aW9u
KS4KLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDk5NikK
LSNlbmRpZgorR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRFRF9QVVNIXygpCiAKIGlubGluZSBj
b25zdCBjaGFyKiBTdHJOQ3B5KGNoYXIqIGRlc3QsIGNvbnN0IGNoYXIqIHNyYywgc2l6ZV90IG4p
IHsKICAgcmV0dXJuIHN0cm5jcHkoZGVzdCwgc3JjLCBuKTsKQEAgLTEzNzcsNyArMjUwOCw3IEBA
IGlubGluZSBjb25zdCBjaGFyKiBTdHJOQ3B5KGNoYXIqIGRlc3QsIGNvbnN0IGNoYXIqIHNyYywg
c2l6ZV90IG4pIHsKIC8vIFN0ckVycm9yKCkgYXJlbid0IG5lZWRlZCBvbiBXaW5kb3dzIENFIGF0
IHRoaXMgdGltZSBhbmQgdGh1cyBub3QKIC8vIGRlZmluZWQgdGhlcmUuCiAKLSNpZiAhR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKKyNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgJiYgIUdURVNU
X09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQKIGlubGluZSBpbnQgQ2hE
aXIoY29uc3QgY2hhciogZGlyKSB7IHJldHVybiBjaGRpcihkaXIpOyB9CiAjZW5kaWYKIGlubGlu
ZSBGSUxFKiBGT3Blbihjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyKiBtb2RlKSB7CkBAIC0x
NDAxLDggKzI1MzIsOSBAQCBpbmxpbmUgaW50IENsb3NlKGludCBmZCkgeyByZXR1cm4gY2xvc2Uo
ZmQpOyB9CiBpbmxpbmUgY29uc3QgY2hhciogU3RyRXJyb3IoaW50IGVycm51bSkgeyByZXR1cm4g
c3RyZXJyb3IoZXJybnVtKTsgfQogI2VuZGlmCiBpbmxpbmUgY29uc3QgY2hhciogR2V0RW52KGNv
bnN0IGNoYXIqIG5hbWUpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorI2lmIEdURVNU
X09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNUX09TX1dJTkRPV1NfUEhPTkUgfHwgR1RFU1RfT1Nf
V0lORE9XU19SVAogICAvLyBXZSBhcmUgb24gV2luZG93cyBDRSwgd2hpY2ggaGFzIG5vIGVudmly
b25tZW50IHZhcmlhYmxlcy4KKyAgc3RhdGljX2Nhc3Q8dm9pZD4obmFtZSk7ICAvLyBUbyBwcmV2
ZW50ICd1bnVzZWQgYXJndW1lbnQnIHdhcm5pbmcuCiAgIHJldHVybiBOVUxMOwogI2VsaWYgZGVm
aW5lZChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQoX19TdW5PU181XzgpIHx8IGRlZmluZWQoX19T
dW5PU181XzkpCiAgIC8vIEVudmlyb25tZW50IHZhcmlhYmxlcyB3aGljaCB3ZSBwcm9ncmFtbWF0
aWNhbGx5IGNsZWFyIHdpbGwgYmUgc2V0IHRvIHRoZQpAQCAtMTQxNCw5ICsyNTQ2LDcgQEAgaW5s
aW5lIGNvbnN0IGNoYXIqIEdldEVudihjb25zdCBjaGFyKiBuYW1lKSB7CiAjZW5kaWYKIH0KIAot
I2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmcocG9wKSAgLy8gUmVzdG9yZXMgdGhlIHdh
cm5pbmcgc3RhdGUuCi0jZW5kaWYKK0dURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUE9QXygp
CiAKICNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogLy8gV2luZG93cyBDRSBoYXMgbm8gQyBs
aWJyYXJ5LiBUaGUgYWJvcnQoKSBmdW5jdGlvbiBpcyB1c2VkIGluCkBAIC0xNDI5LDYgKzI1NTks
MjMgQEAgaW5saW5lIHZvaWQgQWJvcnQoKSB7IGFib3J0KCk7IH0KIAogfSAgLy8gbmFtZXNwYWNl
IHBvc2l4CiAKKy8vIE1TVkMgImRlcHJlY2F0ZXMiIHNucHJpbnRmIGFuZCBpc3N1ZXMgd2Fybmlu
Z3Mgd2hlcmV2ZXIgaXQgaXMgdXNlZC4gIEluCisvLyBvcmRlciB0byBhdm9pZCB0aGVzZSB3YXJu
aW5ncywgd2UgbmVlZCB0byB1c2UgX3NucHJpbnRmIG9yIF9zbnByaW50Zl9zIG9uCisvLyBNU1ZD
LWJhc2VkIHBsYXRmb3Jtcy4gIFdlIG1hcCB0aGUgR1RFU1RfU05QUklOVEZfIG1hY3JvIHRvIHRo
ZSBhcHByb3ByaWF0ZQorLy8gZnVuY3Rpb24gaW4gb3JkZXIgdG8gYWNoaWV2ZSB0aGF0LiAgV2Ug
dXNlIG1hY3JvIGRlZmluaXRpb24gaGVyZSBiZWNhdXNlCisvLyBzbnByaW50ZiBpcyBhIHZhcmlh
ZGljIGZ1bmN0aW9uLgorI2lmIF9NU0NfVkVSID49IDE0MDAgJiYgIUdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFCisvLyBNU1ZDIDIwMDUgYW5kIGFib3ZlIHN1cHBvcnQgdmFyaWFkaWMgbWFjcm9zLgor
IyBkZWZpbmUgR1RFU1RfU05QUklOVEZfKGJ1ZmZlciwgc2l6ZSwgZm9ybWF0LCAuLi4pIFwKKyAg
ICAgX3NucHJpbnRmX3MoYnVmZmVyLCBzaXplLCBzaXplLCBmb3JtYXQsIF9fVkFfQVJHU19fKQor
I2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKy8vIFdpbmRvd3MgQ0UgZG9lcyBub3QgZGVmaW5lIF9z
bnByaW50Zl9zIGFuZCBNU1ZDIHByaW9yIHRvIDIwMDUgZG9lc24ndAorLy8gY29tcGxhaW4gYWJv
dXQgX3NucHJpbnRmLgorIyBkZWZpbmUgR1RFU1RfU05QUklOVEZfIF9zbnByaW50ZgorI2Vsc2UK
KyMgZGVmaW5lIEdURVNUX1NOUFJJTlRGXyBzbnByaW50ZgorI2VuZGlmCisKIC8vIFRoZSBtYXhp
bXVtIG51bWJlciBhIEJpZ2dlc3RJbnQgY2FuIHJlcHJlc2VudC4gIFRoaXMgZGVmaW5pdGlvbgog
Ly8gd29ya3Mgbm8gbWF0dGVyIEJpZ2dlc3RJbnQgaXMgcmVwcmVzZW50ZWQgaW4gb25lJ3MgY29t
cGxlbWVudCBvcgogLy8gdHdvJ3MgY29tcGxlbWVudC4KQEAgLTE1MDAsMjcgKzI2NDcsNDQgQEAg
dHlwZWRlZiBUeXBlV2l0aFNpemU8OD46OkludCBUaW1lSW5NaWxsaXM7ICAvLyBSZXByZXNlbnRz
IHRpbWUgaW4gbWlsbGlzZWNvbmRzLgogLy8gVXRpbGl0aWVzIGZvciBjb21tYW5kIGxpbmUgZmxh
Z3MgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlcy4KIAogLy8gTWFjcm8gZm9yIHJlZmVyZW5jaW5n
IGZsYWdzLgotI2RlZmluZSBHVEVTVF9GTEFHKG5hbWUpIEZMQUdTX2d0ZXN0XyMjbmFtZQorI2lm
ICFkZWZpbmVkKEdURVNUX0ZMQUcpCisjIGRlZmluZSBHVEVTVF9GTEFHKG5hbWUpIEZMQUdTX2d0
ZXN0XyMjbmFtZQorI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9GTEFHKQorCisjaWYgIWRlZmlu
ZWQoR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXykKKyMgZGVmaW5lIEdURVNUX1VTRV9PV05f
RkxBR0ZJTEVfRkxBR18gMQorI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9VU0VfT1dOX0ZMQUdG
SUxFX0ZMQUdfKQorCisjaWYgIWRlZmluZWQoR1RFU1RfREVDTEFSRV9ib29sXykKKyMgZGVmaW5l
IEdURVNUX0ZMQUdfU0FWRVJfIDo6dGVzdGluZzo6aW50ZXJuYWw6OkdUZXN0RmxhZ1NhdmVyCiAK
IC8vIE1hY3JvcyBmb3IgZGVjbGFyaW5nIGZsYWdzLgotI2RlZmluZSBHVEVTVF9ERUNMQVJFX2Jv
b2xfKG5hbWUpIEdURVNUX0FQSV8gZXh0ZXJuIGJvb2wgR1RFU1RfRkxBRyhuYW1lKQotI2RlZmlu
ZSBHVEVTVF9ERUNMQVJFX2ludDMyXyhuYW1lKSBcCisjIGRlZmluZSBHVEVTVF9ERUNMQVJFX2Jv
b2xfKG5hbWUpIEdURVNUX0FQSV8gZXh0ZXJuIGJvb2wgR1RFU1RfRkxBRyhuYW1lKQorIyBkZWZp
bmUgR1RFU1RfREVDTEFSRV9pbnQzMl8obmFtZSkgXAogICAgIEdURVNUX0FQSV8gZXh0ZXJuIDo6
dGVzdGluZzo6aW50ZXJuYWw6OkludDMyIEdURVNUX0ZMQUcobmFtZSkKLSNkZWZpbmUgR1RFU1Rf
REVDTEFSRV9zdHJpbmdfKG5hbWUpIFwKLSAgICBHVEVTVF9BUElfIGV4dGVybiA6OnRlc3Rpbmc6
OmludGVybmFsOjpTdHJpbmcgR1RFU1RfRkxBRyhuYW1lKQorIyBkZWZpbmUgR1RFU1RfREVDTEFS
RV9zdHJpbmdfKG5hbWUpIFwKKyAgICBHVEVTVF9BUElfIGV4dGVybiA6OnN0ZDo6c3RyaW5nIEdU
RVNUX0ZMQUcobmFtZSkKIAogLy8gTWFjcm9zIGZvciBkZWZpbmluZyBmbGFncy4KLSNkZWZpbmUg
R1RFU1RfREVGSU5FX2Jvb2xfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpIFwKKyMgZGVmaW5lIEdU
RVNUX0RFRklORV9ib29sXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCiAgICAgR1RFU1RfQVBJ
XyBib29sIEdURVNUX0ZMQUcobmFtZSkgPSAoZGVmYXVsdF92YWwpCi0jZGVmaW5lIEdURVNUX0RF
RklORV9pbnQzMl8obmFtZSwgZGVmYXVsdF92YWwsIGRvYykgXAorIyBkZWZpbmUgR1RFU1RfREVG
SU5FX2ludDMyXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCiAgICAgR1RFU1RfQVBJXyA6OnRl
c3Rpbmc6OmludGVybmFsOjpJbnQzMiBHVEVTVF9GTEFHKG5hbWUpID0gKGRlZmF1bHRfdmFsKQot
I2RlZmluZSBHVEVTVF9ERUZJTkVfc3RyaW5nXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCi0g
ICAgR1RFU1RfQVBJXyA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmcgR1RFU1RfRkxBRyhuYW1l
KSA9IChkZWZhdWx0X3ZhbCkKKyMgZGVmaW5lIEdURVNUX0RFRklORV9zdHJpbmdfKG5hbWUsIGRl
ZmF1bHRfdmFsLCBkb2MpIFwKKyAgICBHVEVTVF9BUElfIDo6c3RkOjpzdHJpbmcgR1RFU1RfRkxB
RyhuYW1lKSA9IChkZWZhdWx0X3ZhbCkKKworI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9ERUNM
QVJFX2Jvb2xfKQorCisvLyBUaHJlYWQgYW5ub3RhdGlvbnMKKyNpZiAhZGVmaW5lZChHVEVTVF9F
WENMVVNJVkVfTE9DS19SRVFVSVJFRF8pCisjIGRlZmluZSBHVEVTVF9FWENMVVNJVkVfTE9DS19S
RVFVSVJFRF8obG9ja3MpCisjIGRlZmluZSBHVEVTVF9MT0NLX0VYQ0xVREVEXyhsb2NrcykKKyNl
bmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKQogCiAvLyBQ
YXJzZXMgJ3N0cicgZm9yIGEgMzItYml0IHNpZ25lZCBpbnRlZ2VyLiAgSWYgc3VjY2Vzc2Z1bCwg
d3JpdGVzIHRoZSByZXN1bHQKIC8vIHRvICp2YWx1ZSBhbmQgcmV0dXJucyB0cnVlOyBvdGhlcndp
c2UgbGVhdmVzICp2YWx1ZSB1bmNoYW5nZWQgYW5kIHJldHVybnMKIC8vIGZhbHNlLgotLy8gVE9E
TyhjaGFuZGxlcmMpOiBGaW5kIGEgYmV0dGVyIHdheSB0byByZWZhY3RvciBmbGFnIGFuZCBlbnZp
cm9ubWVudCBwYXJzaW5nCisvLyBGSVhNRTogRmluZCBhIGJldHRlciB3YXkgdG8gcmVmYWN0b3Ig
ZmxhZyBhbmQgZW52aXJvbm1lbnQgcGFyc2luZwogLy8gb3V0IG9mIGJvdGggZ3Rlc3QtcG9ydC5j
YyBhbmQgZ3Rlc3QuY2MgdG8gYXZvaWQgZXhwb3J0aW5nIHRoaXMgdXRpbGl0eQogLy8gZnVuY3Rp
b24uCiBib29sIFBhcnNlSW50MzIoY29uc3QgTWVzc2FnZSYgc3JjX3RleHQsIGNvbnN0IGNoYXIq
IHN0ciwgSW50MzIqIHZhbHVlKTsKQEAgLTE1MjksNiArMjY5Myw3IEBAIGJvb2wgUGFyc2VJbnQz
Mihjb25zdCBNZXNzYWdlJiBzcmNfdGV4dCwgY29uc3QgY2hhciogc3RyLCBJbnQzMiogdmFsdWUp
OwogLy8gY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gR29vZ2xlIFRlc3QgZmxhZy4KIGJvb2wg
Qm9vbEZyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBib29sIGRlZmF1bHRfdmFsKTsKIEdU
RVNUX0FQSV8gSW50MzIgSW50MzJGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywgSW50MzIg
ZGVmYXVsdF92YWwpOworc3RkOjpzdHJpbmcgT3V0cHV0RmxhZ0Fsc29DaGVja0VudlZhcigpOwog
Y29uc3QgY2hhciogU3RyaW5nRnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIGNvbnN0IGNo
YXIqIGRlZmF1bHRfdmFsKTsKIAogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXN0
cmluZy5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9n
dGVzdC1zdHJpbmcuaAppbmRleCBhZmYwOTNkZWM4ZGIzOTkwNzRlYTNiNzFiYjcyMjdkYTdlOTY3
MzBhLi40YzliNjI2MmMzYzEwMzcyNmFhM2NhYjRjMTk5OTViYWVmOTU4Yjk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXN0
cmluZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3Qtc3RyaW5nLmgKQEAgLTI3LDcwICsyNywzOCBAQAogLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogLy8KLS8vIEF1dGhvcnM6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBX
YW4pLCBlZWZhY21AZ21haWwuY29tIChTZWFuIE1jYWZlZSkKLS8vCi0vLyBUaGUgR29vZ2xlIEMr
KyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0
aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gVGhpcyBoZWFk
ZXIgZmlsZSBkZWNsYXJlcyB0aGUgU3RyaW5nIGNsYXNzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRl
cm5hbGx5IGJ5CiAvLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdp
dGhvdXQgbm90aWNlLiBUaGV5IHNob3VsZCBub3QgdXNlZAogLy8gYnkgY29kZSBleHRlcm5hbCB0
byBHb29nbGUgVGVzdC4KIC8vCi0vLyBUaGlzIGhlYWRlciBmaWxlIGlzICNpbmNsdWRlZCBieSA8
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4uCisvLyBUaGlzIGhlYWRlciBmaWxlIGlz
ICNpbmNsdWRlZCBieSBndGVzdC1pbnRlcm5hbC5oLgogLy8gSXQgc2hvdWxkIG5vdCBiZSAjaW5j
bHVkZWQgYnkgb3RoZXIgZmlsZXMuCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxF
VEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1NUUklOR19I
XwogI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1NUUklOR19IXwog
CiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBzdHJpbmcuaCBpcyBub3QgZ3VhcmFudGVlZCB0byBw
cm92aWRlIHN0cmNweSBvbiBDKysgQnVpbGRlci4KLSNpbmNsdWRlIDxtZW0uaD4KKyMgaW5jbHVk
ZSA8bWVtLmg+CiAjZW5kaWYKIAogI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPGd0ZXN0
L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLQogI2luY2x1ZGUgPHN0cmluZz4KIAorI2luY2x1ZGUg
Imd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKwogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFt
ZXNwYWNlIGludGVybmFsIHsKIAotLy8gU3RyaW5nIC0gYSBVVEYtOCBzdHJpbmcgY2xhc3MuCi0v
LwotLy8gRm9yIGhpc3RvcmljIHJlYXNvbnMsIHdlIGRvbid0IHVzZSBzdGQ6OnN0cmluZy4KLS8v
Ci0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogcmVwbGFjZSB0aGlzIGNsYXNzIHdpdGggc3RkOjpz
dHJpbmcgb3IKLS8vIGltcGxlbWVudCBpdCBpbiB0ZXJtcyBvZiB0aGUgbGF0dGVyLgotLy8KLS8v
IE5vdGUgdGhhdCBTdHJpbmcgY2FuIHJlcHJlc2VudCBib3RoIE5VTEwgYW5kIHRoZSBlbXB0eSBz
dHJpbmcsCi0vLyB3aGlsZSBzdGQ6OnN0cmluZyBjYW5ub3QgcmVwcmVzZW50IE5VTEwuCi0vLwot
Ly8gTlVMTCBhbmQgdGhlIGVtcHR5IHN0cmluZyBhcmUgY29uc2lkZXJlZCBkaWZmZXJlbnQuICBO
VUxMIGlzIGxlc3MKLS8vIHRoYW4gYW55dGhpbmcgKGluY2x1ZGluZyB0aGUgZW1wdHkgc3RyaW5n
KSBleGNlcHQgaXRzZWxmLgotLy8KLS8vIFRoaXMgY2xhc3Mgb25seSBwcm92aWRlcyBtaW5pbXVt
IGZ1bmN0aW9uYWxpdHkgbmVjZXNzYXJ5IGZvcgotLy8gaW1wbGVtZW50aW5nIEdvb2dsZSBUZXN0
LiAgV2UgZG8gbm90IGludGVuZCB0byBpbXBsZW1lbnQgYSBmdWxsLWZsZWRnZWQKLS8vIHN0cmlu
ZyBjbGFzcyBoZXJlLgotLy8KLS8vIFNpbmNlIHRoZSBwdXJwb3NlIG9mIHRoaXMgY2xhc3MgaXMg
dG8gcHJvdmlkZSBhIHN1YnN0aXR1dGUgZm9yCi0vLyBzdGQ6OnN0cmluZyBvbiBwbGF0Zm9ybXMg
d2hlcmUgaXQgY2Fubm90IGJlIHVzZWQsIHdlIGRlZmluZSBhIGNvcHkKLS8vIGNvbnN0cnVjdG9y
IGFuZCBhc3NpZ25tZW50IG9wZXJhdG9ycyBzdWNoIHRoYXQgd2UgZG9uJ3QgbmVlZAotLy8gY29u
ZGl0aW9uYWwgY29tcGlsYXRpb24gaW4gYSBsb3Qgb2YgcGxhY2VzLgotLy8KLS8vIEluIG9yZGVy
IHRvIG1ha2UgdGhlIHJlcHJlc2VudGF0aW9uIGVmZmljaWVudCwgdGhlIGQndG9yIG9mIFN0cmlu
ZwotLy8gaXMgbm90IHZpcnR1YWwuICBUaGVyZWZvcmUgRE8gTk9UIElOSEVSSVQgRlJPTSBTdHJp
bmcuCisvLyBTdHJpbmcgLSBhbiBhYnN0cmFjdCBjbGFzcyBob2xkaW5nIHN0YXRpYyBzdHJpbmcg
dXRpbGl0aWVzLgogY2xhc3MgR1RFU1RfQVBJXyBTdHJpbmcgewogIHB1YmxpYzoKICAgLy8gU3Rh
dGljIHV0aWxpdHkgbWV0aG9kcwogCi0gIC8vIFJldHVybnMgdGhlIGlucHV0IGVuY2xvc2VkIGlu
IGRvdWJsZSBxdW90ZXMgaWYgaXQncyBub3QgTlVMTDsKLSAgLy8gb3RoZXJ3aXNlIHJldHVybnMg
IihudWxsKSIuICBGb3IgZXhhbXBsZSwgIlwiSGVsbG9cIiIgaXMgcmV0dXJuZWQKLSAgLy8gZm9y
IGlucHV0ICJIZWxsbyIuCi0gIC8vCi0gIC8vIFRoaXMgaXMgdXNlZnVsIGZvciBwcmludGluZyBh
IEMgc3RyaW5nIGluIHRoZSBzeW50YXggb2YgYSBsaXRlcmFsLgotICAvLwotICAvLyBLbm93biBp
c3N1ZTogZXNjYXBlIHNlcXVlbmNlcyBhcmUgbm90IGhhbmRsZWQgeWV0LgotICBzdGF0aWMgU3Ry
aW5nIFNob3dDU3RyaW5nUXVvdGVkKGNvbnN0IGNoYXIqIGNfc3RyKTsKLQogICAvLyBDbG9uZXMg
YSAwLXRlcm1pbmF0ZWQgQyBzdHJpbmcsIGFsbG9jYXRpbmcgbWVtb3J5IHVzaW5nIG5ldy4gIFRo
ZQogICAvLyBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZSByZXR1cm4gdmFs
dWUgdXNpbmcKICAgLy8gZGVsZXRlW10uICBSZXR1cm5zIHRoZSBjbG9uZWQgc3RyaW5nLCBvciBO
VUxMIGlmIHRoZSBpbnB1dCBpcwpAQCAtMTM3LDExICsxMDUsNyBAQCBjbGFzcyBHVEVTVF9BUElf
IFN0cmluZyB7CiAgIC8vIE5VTEwgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gIihudWxsKSIuICBJZiBh
biBlcnJvciBvY2N1cnJlZCBkdXJpbmcKICAgLy8gdGhlIGNvbnZlcnNpb24sICIoZmFpbGVkIHRv
IGNvbnZlcnQgZnJvbSB3aWRlIHN0cmluZykiIGlzCiAgIC8vIHJldHVybmVkLgotICBzdGF0aWMg
U3RyaW5nIFNob3dXaWRlQ1N0cmluZyhjb25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKTsKLQotICAv
LyBTaW1pbGFyIHRvIFNob3dXaWRlQ1N0cmluZygpLCBleGNlcHQgdGhhdCB0aGlzIGZ1bmN0aW9u
IGVuY2xvc2VzCi0gIC8vIHRoZSBjb252ZXJ0ZWQgc3RyaW5nIGluIGRvdWJsZSBxdW90ZXMuCi0g
IHN0YXRpYyBTdHJpbmcgU2hvd1dpZGVDU3RyaW5nUXVvdGVkKGNvbnN0IHdjaGFyX3QqIHdpZGVf
Y19zdHIpOworICBzdGF0aWMgc3RkOjpzdHJpbmcgU2hvd1dpZGVDU3RyaW5nKGNvbnN0IHdjaGFy
X3QqIHdpZGVfY19zdHIpOwogCiAgIC8vIENvbXBhcmVzIHR3byB3aWRlIEMgc3RyaW5ncy4gIFJl
dHVybnMgdHJ1ZSBpZmYgdGhleSBoYXZlIHRoZSBzYW1lCiAgIC8vIGNvbnRlbnQuCkBAIC0xNzUs
MTc0ICsxMzksMjcgQEAgY2xhc3MgR1RFU1RfQVBJXyBTdHJpbmcgewogICBzdGF0aWMgYm9vbCBD
YXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscyhjb25zdCB3Y2hhcl90KiBsaHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3Qq
IHJocyk7CiAKLSAgLy8gRm9ybWF0cyBhIGxpc3Qgb2YgYXJndW1lbnRzIHRvIGEgU3RyaW5nLCB1
c2luZyB0aGUgc2FtZSBmb3JtYXQKLSAgLy8gc3BlYyBzdHJpbmcgYXMgZm9yIHByaW50Zi4KLSAg
Ly8KLSAgLy8gV2UgZG8gbm90IHVzZSB0aGUgU3RyaW5nUHJpbnRmIGNsYXNzIGFzIGl0IGlzIG5v
dCB1bml2ZXJzYWxseQotICAvLyBhdmFpbGFibGUuCi0gIC8vCi0gIC8vIFRoZSByZXN1bHQgaXMg
bGltaXRlZCB0byA0MDk2IGNoYXJhY3RlcnMgKGluY2x1ZGluZyB0aGUgdGFpbGluZwotICAvLyAw
KS4gIElmIDQwOTYgY2hhcmFjdGVycyBhcmUgbm90IGVub3VnaCB0byBmb3JtYXQgdGhlIGlucHV0
LAotICAvLyAiPGJ1ZmZlciBleGNlZWRlZD4iIGlzIHJldHVybmVkLgotICBzdGF0aWMgU3RyaW5n
IEZvcm1hdChjb25zdCBjaGFyKiBmb3JtYXQsIC4uLik7Ci0KLSAgLy8gQyd0b3JzCi0KLSAgLy8g
VGhlIGRlZmF1bHQgYyd0b3IgY29uc3RydWN0cyBhIE5VTEwgc3RyaW5nLgotICBTdHJpbmcoKSA6
IGNfc3RyXyhOVUxMKSwgbGVuZ3RoXygwKSB7fQotCi0gIC8vIENvbnN0cnVjdHMgYSBTdHJpbmcg
YnkgY2xvbmluZyBhIDAtdGVybWluYXRlZCBDIHN0cmluZy4KLSAgU3RyaW5nKGNvbnN0IGNoYXIq
IGFfY19zdHIpIHsgIC8vIE5PTElOVAotICAgIGlmIChhX2Nfc3RyID09IE5VTEwpIHsKLSAgICAg
IGNfc3RyXyA9IE5VTEw7Ci0gICAgICBsZW5ndGhfID0gMDsKLSAgICB9IGVsc2UgewotICAgICAg
Q29uc3RydWN0Tm9uTnVsbChhX2Nfc3RyLCBzdHJsZW4oYV9jX3N0cikpOwotICAgIH0KLSAgfQor
ICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBnaXZlbiBzdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZl
biBzdWZmaXgsIGlnbm9yaW5nCisgIC8vIGNhc2UuIEFueSBzdHJpbmcgaXMgY29uc2lkZXJlZCB0
byBlbmQgd2l0aCBhbiBlbXB0eSBzdWZmaXguCisgIHN0YXRpYyBib29sIEVuZHNXaXRoQ2FzZUlu
c2Vuc2l0aXZlKAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0ciwgY29uc3Qgc3RkOjpzdHJp
bmcmIHN1ZmZpeCk7CiAKLSAgLy8gQ29uc3RydWN0cyBhIFN0cmluZyBieSBjb3B5aW5nIGEgZ2l2
ZW4gbnVtYmVyIG9mIGNoYXJzIGZyb20gYQotICAvLyBidWZmZXIuICBFLmcuIFN0cmluZygiaGVs
bG8iLCAzKSBjcmVhdGVzIHRoZSBzdHJpbmcgImhlbCIsCi0gIC8vIFN0cmluZygiYVwwYmNkIiwg
NCkgY3JlYXRlcyAiYVwwYmMiLCBTdHJpbmcoTlVMTCwgMCkgY3JlYXRlcyAiIiwKLSAgLy8gYW5k
IFN0cmluZyhOVUxMLCAxKSByZXN1bHRzIGluIGFjY2VzcyB2aW9sYXRpb24uCi0gIFN0cmluZyhj
b25zdCBjaGFyKiBidWZmZXIsIHNpemVfdCBhX2xlbmd0aCkgewotICAgIENvbnN0cnVjdE5vbk51
bGwoYnVmZmVyLCBhX2xlbmd0aCk7Ci0gIH0KKyAgLy8gRm9ybWF0cyBhbiBpbnQgdmFsdWUgYXMg
IiUwMmQiLgorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0SW50V2lkdGgyKGludCB2YWx1ZSk7
ICAvLyAiJTAyZCIgZm9yIHdpZHRoID09IDIKIAotICAvLyBUaGUgY29weSBjJ3RvciBjcmVhdGVz
IGEgbmV3IGNvcHkgb2YgdGhlIHN0cmluZy4gIFRoZSB0d28KLSAgLy8gU3RyaW5nIG9iamVjdHMg
ZG8gbm90IHNoYXJlIGNvbnRlbnQuCi0gIFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cikgOiBjX3N0
cl8oTlVMTCksIGxlbmd0aF8oMCkgeyAqdGhpcyA9IHN0cjsgfQorICAvLyBGb3JtYXRzIGFuIGlu
dCB2YWx1ZSBhcyAiJVgiLgorICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0SGV4SW50KGludCB2
YWx1ZSk7CiAKLSAgLy8gRCd0b3IuICBTdHJpbmcgaXMgaW50ZW5kZWQgdG8gYmUgYSBmaW5hbCBj
bGFzcywgc28gdGhlIGQndG9yCi0gIC8vIGRvZXNuJ3QgbmVlZCB0byBiZSB2aXJ0dWFsLgotICB+
U3RyaW5nKCkgeyBkZWxldGVbXSBjX3N0cl87IH0KLQotICAvLyBBbGxvd3MgYSBTdHJpbmcgdG8g
YmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYW4gOjpzdGQ6OnN0cmluZyBvcgotICAvLyA6OnN0
cmluZywgYW5kIHZpY2UgdmVyc2EuICBDb252ZXJ0aW5nIGEgU3RyaW5nIGNvbnRhaW5pbmcgYSBO
VUxMCi0gIC8vIHBvaW50ZXIgdG8gOjpzdGQ6OnN0cmluZyBvciA6OnN0cmluZyBpcyB1bmRlZmlu
ZWQgYmVoYXZpb3IuCi0gIC8vIENvbnZlcnRpbmcgYSA6OnN0ZDo6c3RyaW5nIG9yIDo6c3RyaW5n
IGNvbnRhaW5pbmcgYW4gZW1iZWRkZWQgTlVMCi0gIC8vIGNoYXJhY3RlciB0byBhIFN0cmluZyB3
aWxsIHJlc3VsdCBpbiB0aGUgcHJlZml4IHVwIHRvIHRoZSBmaXJzdAotICAvLyBOVUwgY2hhcmFj
dGVyLgotICBTdHJpbmcoY29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyKSB7Ci0gICAgQ29uc3RydWN0
Tm9uTnVsbChzdHIuY19zdHIoKSwgc3RyLmxlbmd0aCgpKTsKLSAgfQotCi0gIG9wZXJhdG9yIDo6
c3RkOjpzdHJpbmcoKSBjb25zdCB7IHJldHVybiA6OnN0ZDo6c3RyaW5nKGNfc3RyKCksIGxlbmd0
aCgpKTsgfQotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLSAgU3RyaW5nKGNvbnN0IDo6
c3RyaW5nJiBzdHIpIHsKLSAgICBDb25zdHJ1Y3ROb25OdWxsKHN0ci5jX3N0cigpLCBzdHIubGVu
Z3RoKCkpOwotICB9Ci0KLSAgb3BlcmF0b3IgOjpzdHJpbmcoKSBjb25zdCB7IHJldHVybiA6OnN0
cmluZyhjX3N0cigpLCBsZW5ndGgoKSk7IH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9T
VFJJTkcKLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgaXMgYW4gZW1wdHkgc3RyaW5nIChp
LmUuICIiKS4KLSAgYm9vbCBlbXB0eSgpIGNvbnN0IHsgcmV0dXJuIChjX3N0cigpICE9IE5VTEwp
ICYmIChsZW5ndGgoKSA9PSAwKTsgfQotCi0gIC8vIENvbXBhcmVzIHRoaXMgd2l0aCBhbm90aGVy
IFN0cmluZy4KLSAgLy8gUmV0dXJucyA8IDAgaWYgdGhpcyBpcyBsZXNzIHRoYW4gcmhzLCAwIGlm
IHRoaXMgaXMgZXF1YWwgdG8gcmhzLCBvciA+IDAKLSAgLy8gaWYgdGhpcyBpcyBncmVhdGVyIHRo
YW4gcmhzLgotICBpbnQgQ29tcGFyZShjb25zdCBTdHJpbmcmIHJocykgY29uc3Q7Ci0KLSAgLy8g
UmV0dXJucyB0cnVlIGlmZiB0aGlzIFN0cmluZyBlcXVhbHMgdGhlIGdpdmVuIEMgc3RyaW5nLiAg
QSBOVUxMCi0gIC8vIHN0cmluZyBhbmQgYSBub24tTlVMTCBzdHJpbmcgYXJlIGNvbnNpZGVyZWQg
bm90IGVxdWFsLgotICBib29sIG9wZXJhdG9yPT0oY29uc3QgY2hhciogYV9jX3N0cikgY29uc3Qg
eyByZXR1cm4gQ29tcGFyZShhX2Nfc3RyKSA9PSAwOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlm
ZiB0aGlzIFN0cmluZyBpcyBsZXNzIHRoYW4gdGhlIGdpdmVuIFN0cmluZy4gIEEKLSAgLy8gTlVM
TCBzdHJpbmcgaXMgY29uc2lkZXJlZCBsZXNzIHRoYW4gIiIuCi0gIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IFN0cmluZyYgcmhzKSBjb25zdCB7IHJldHVybiBDb21wYXJlKHJocykgPCAwOyB9Ci0KLSAg
Ly8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIFN0cmluZyBkb2Vzbid0IGVxdWFsIHRoZSBnaXZlbiBD
IHN0cmluZy4gIEEgTlVMTAotICAvLyBzdHJpbmcgYW5kIGEgbm9uLU5VTEwgc3RyaW5nIGFyZSBj
b25zaWRlcmVkIG5vdCBlcXVhbC4KLSAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIqIGFfY19z
dHIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gYV9jX3N0cik7IH0KLQotICAvLyBSZXR1cm5z
IHRydWUgaWZmIHRoaXMgU3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LiAgKkFueSoK
LSAgLy8gU3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGggYSBOVUxMIG9yIGVtcHR5IHN1
ZmZpeC4KLSAgYm9vbCBFbmRzV2l0aChjb25zdCBjaGFyKiBzdWZmaXgpIGNvbnN0OwotCi0gIC8v
IFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBTdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXgs
IG5vdCBjb25zaWRlcmluZwotICAvLyBjYXNlLiBBbnkgU3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8g
ZW5kIHdpdGggYSBOVUxMIG9yIGVtcHR5IHN1ZmZpeC4KLSAgYm9vbCBFbmRzV2l0aENhc2VJbnNl
bnNpdGl2ZShjb25zdCBjaGFyKiBzdWZmaXgpIGNvbnN0OwotCi0gIC8vIFJldHVybnMgdGhlIGxl
bmd0aCBvZiB0aGUgZW5jYXBzdWxhdGVkIHN0cmluZywgb3IgMCBpZiB0aGUKLSAgLy8gc3RyaW5n
IGlzIE5VTEwuCi0gIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBsZW5ndGhfOyB9Ci0K
LSAgLy8gR2V0cyB0aGUgMC10ZXJtaW5hdGVkIEMgc3RyaW5nIHRoaXMgU3RyaW5nIG9iamVjdCBy
ZXByZXNlbnRzLgotICAvLyBUaGUgU3RyaW5nIG9iamVjdCBzdGlsbCBvd25zIHRoZSBzdHJpbmcu
ICBUaGVyZWZvcmUgdGhlIGNhbGxlcgotICAvLyBzaG91bGQgTk9UIGRlbGV0ZSB0aGUgcmV0dXJu
IHZhbHVlLgotICBjb25zdCBjaGFyKiBjX3N0cigpIGNvbnN0IHsgcmV0dXJuIGNfc3RyXzsgfQot
Ci0gIC8vIEFzc2lnbnMgYSBDIHN0cmluZyB0byB0aGlzIG9iamVjdC4gIFNlbGYtYXNzaWdubWVu
dCB3b3Jrcy4KLSAgY29uc3QgU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgY2hhciogYV9jX3N0cikg
ewotICAgIHJldHVybiAqdGhpcyA9IFN0cmluZyhhX2Nfc3RyKTsKLSAgfQotCi0gIC8vIEFzc2ln
bnMgYSBTdHJpbmcgb2JqZWN0IHRvIHRoaXMgb2JqZWN0LiAgU2VsZi1hc3NpZ25tZW50IHdvcmtz
LgotICBjb25zdCBTdHJpbmcmIG9wZXJhdG9yPShjb25zdCBTdHJpbmcmIHJocykgewotICAgIGlm
ICh0aGlzICE9ICZyaHMpIHsKLSAgICAgIGRlbGV0ZVtdIGNfc3RyXzsKLSAgICAgIGlmIChyaHMu
Y19zdHIoKSA9PSBOVUxMKSB7Ci0gICAgICAgIGNfc3RyXyA9IE5VTEw7Ci0gICAgICAgIGxlbmd0
aF8gPSAwOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgQ29uc3RydWN0Tm9uTnVsbChyaHMuY19z
dHIoKSwgcmhzLmxlbmd0aCgpKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gKnRoaXM7
Ci0gIH0KKyAgLy8gRm9ybWF0cyBhIGJ5dGUgYXMgIiUwMlgiLgorICBzdGF0aWMgc3RkOjpzdHJp
bmcgRm9ybWF0Qnl0ZSh1bnNpZ25lZCBjaGFyIHZhbHVlKTsKIAogIHByaXZhdGU6Ci0gIC8vIENv
bnN0cnVjdHMgYSBub24tTlVMTCBTdHJpbmcgZnJvbSB0aGUgZ2l2ZW4gY29udGVudC4gIFRoaXMK
LSAgLy8gZnVuY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gZGF0YV8gaGFzIG5vdCBiZWVu
IGFsbG9jYXRlZC4KLSAgLy8gQ29uc3RydWN0Tm9uTnVsbChOVUxMLCAwKSByZXN1bHRzIGluIGFu
IGVtcHR5IHN0cmluZyAoIiIpLgotICAvLyBDb25zdHJ1Y3ROb25OdWxsKE5VTEwsIG5vbl96ZXJv
KSBpcyB1bmRlZmluZWQgYmVoYXZpb3IuCi0gIHZvaWQgQ29uc3RydWN0Tm9uTnVsbChjb25zdCBj
aGFyKiBidWZmZXIsIHNpemVfdCBhX2xlbmd0aCkgewotICAgIGNoYXIqIGNvbnN0IHN0ciA9IG5l
dyBjaGFyW2FfbGVuZ3RoICsgMV07Ci0gICAgbWVtY3B5KHN0ciwgYnVmZmVyLCBhX2xlbmd0aCk7
Ci0gICAgc3RyW2FfbGVuZ3RoXSA9ICdcMCc7Ci0gICAgY19zdHJfID0gc3RyOwotICAgIGxlbmd0
aF8gPSBhX2xlbmd0aDsKLSAgfQotCi0gIGNvbnN0IGNoYXIqIGNfc3RyXzsKLSAgc2l6ZV90IGxl
bmd0aF87CisgIFN0cmluZygpOyAgLy8gTm90IG1lYW50IHRvIGJlIGluc3RhbnRpYXRlZC4KIH07
ICAvLyBjbGFzcyBTdHJpbmcKIAotLy8gU3RyZWFtcyBhIFN0cmluZyB0byBhbiBvc3RyZWFtLiAg
RWFjaCAnXDAnIGNoYXJhY3RlciBpbiB0aGUgU3RyaW5nCi0vLyBpcyByZXBsYWNlZCB3aXRoICJc
XDAiLgotaW5saW5lIDo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBv
cywgY29uc3QgU3RyaW5nJiBzdHIpIHsKLSAgaWYgKHN0ci5jX3N0cigpID09IE5VTEwpIHsKLSAg
ICBvcyA8PCAiKG51bGwpIjsKLSAgfSBlbHNlIHsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBjX3N0
ciA9IHN0ci5jX3N0cigpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHN0ci5sZW5ndGgo
KTsgaSsrKSB7Ci0gICAgICBpZiAoY19zdHJbaV0gPT0gJ1wwJykgewotICAgICAgICBvcyA8PCAi
XFwwIjsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIG9zIDw8IGNfc3RyW2ldOwotICAgICAgfQot
ICAgIH0KLSAgfQotICByZXR1cm4gb3M7Ci19Ci0KLS8vIEdldHMgdGhlIGNvbnRlbnQgb2YgdGhl
IFN0clN0cmVhbSdzIGJ1ZmZlciBhcyBhIFN0cmluZy4gIEVhY2ggJ1wwJworLy8gR2V0cyB0aGUg
Y29udGVudCBvZiB0aGUgc3RyaW5nc3RyZWFtJ3MgYnVmZmVyIGFzIGFuIHN0ZDo6c3RyaW5nLiAg
RWFjaCAnXDAnCiAvLyBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlciBpcyByZXBsYWNlZCB3aXRoICJc
XDAiLgotR1RFU1RfQVBJXyBTdHJpbmcgU3RyU3RyZWFtVG9TdHJpbmcoU3RyU3RyZWFtKiBzdHJl
YW0pOwotCi0vLyBDb252ZXJ0cyBhIHN0cmVhbWFibGUgdmFsdWUgdG8gYSBTdHJpbmcuICBBIE5V
TEwgcG9pbnRlciBpcwotLy8gY29udmVydGVkIHRvICIobnVsbCkiLiAgV2hlbiB0aGUgaW5wdXQg
dmFsdWUgaXMgYSA6OnN0cmluZywKLS8vIDo6c3RkOjpzdHJpbmcsIDo6d3N0cmluZywgb3IgOjpz
dGQ6OndzdHJpbmcgb2JqZWN0LCBlYWNoIE5VTAotLy8gY2hhcmFjdGVyIGluIGl0IGlzIHJlcGxh
Y2VkIHdpdGggIlxcMCIuCi0KLS8vIERlY2xhcmVkIGhlcmUgYnV0IGRlZmluZWQgaW4gZ3Rlc3Qu
aCwgc28gdGhhdCBpdCBoYXMgYWNjZXNzCi0vLyB0byB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgTWVz
c2FnZSBjbGFzcywgcmVxdWlyZWQgYnkgdGhlIEFSTQotLy8gY29tcGlsZXIuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLVN0cmluZyBTdHJlYW1hYmxlVG9TdHJpbmcoY29uc3QgVCYgc3RyZWFtYWJs
ZSk7CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFN0cmluZ1N0cmVhbVRvU3RyaW5nKDo6c3RkOjpz
dHJpbmdzdHJlYW0qIHN0cmVhbSk7CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogfSAgLy8g
bmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaAppbmRleCBjMjdmM2E0MjFk
OWM0OTcxZWRlNDljYzMzMjkxMmQ0YTgzNjBjNWE1Li43OGEzYTZhMDFmYWM3NTUxN2VhYjgzMTMx
MjQyN2UxNWQ1ZTRlYmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oCkBAIC0xLDQgKzEsNiBA
QAotLy8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgYSBzY3JpcHQuICBETyBOT1QgRURJVCBC
WSBIQU5EISEhCisvLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBjb21tYW5kOgorLy8gICAg
IHB1bXAucHkgZ3Rlc3QtdHVwbGUuaC5wdW1wCisvLyBETyBOT1QgRURJVCBCWSBIQU5EISEhCiAK
IC8vIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuCiAvLyBBbGwgUmlnaHRzIFJlc2VydmVkLgpA
QCAtMjgsMTEgKzMwLDEyIEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQor
CiAKIC8vIEltcGxlbWVudHMgYSBzdWJzZXQgb2YgVFIxIHR1cGxlIG5lZWRlZCBieSBHb29nbGUg
VGVzdCBhbmQgR29vZ2xlIE1vY2suCiAKKy8vIEdPT0dMRVRFU1RfQ00wMDAxIERPIE5PVCBERUxF
VEUKKwogI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RVUExFX0hf
CiAjZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFVQTEVfSF8KIApA
QCAtNDAsMTcgKzQzLDI1IEBACiAKIC8vIFRoZSBjb21waWxlciB1c2VkIGluIFN5bWJpYW4gaGFz
IGEgYnVnIHRoYXQgcHJldmVudHMgdXMgZnJvbSBkZWNsYXJpbmcgdGhlCiAvLyB0dXBsZSB0ZW1w
bGF0ZSBhcyBhIGZyaWVuZCAoaXQgY29tcGxhaW5zIHRoYXQgdHVwbGUgaXMgcmVkZWZpbmVkKS4g
IFRoaXMKLS8vIGhhY2sgYnlwYXNzZXMgdGhlIGJ1ZyBieSBkZWNsYXJpbmcgdGhlIG1lbWJlcnMg
dGhhdCBzaG91bGQgb3RoZXJ3aXNlIGJlCisvLyBieXBhc3NlcyB0aGUgYnVnIGJ5IGRlY2xhcmlu
ZyB0aGUgbWVtYmVycyB0aGF0IHNob3VsZCBvdGhlcndpc2UgYmUKIC8vIHByaXZhdGUgYXMgcHVi
bGljLgogLy8gU3VuIFN0dWRpbyB2ZXJzaW9ucyA8IDEyIGFsc28gaGF2ZSB0aGUgYWJvdmUgYnVn
LgogI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgfHwgKGRlZmluZWQoX19TVU5QUk9fQ0MpICYm
IF9fU1VOUFJPX0NDIDwgMHg1OTApCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJ
RU5EXyBwdWJsaWM6CisjIGRlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8gcHVi
bGljOgogI2Vsc2UKLSNkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIFwKKyMg
ZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBcCiAgICAgdGVtcGxhdGUgPEdU
RVNUXzEwX1RZUEVOQU1FU18oVSk+IGZyaWVuZCBjbGFzcyB0dXBsZTsgXAogICAgcHJpdmF0ZToK
ICNlbmRpZgogCisvLyBWaXN1YWwgU3R1ZGlvIDIwMTAsIDIwMTIsIGFuZCAyMDEzIGRlZmluZSBz
eW1ib2xzIGluIHN0ZDo6dHIxIHRoYXQgY29uZmxpY3QKKy8vIHdpdGggb3VyIG93biBkZWZpbml0
aW9ucy4gVGhlcmVmb3JlIHVzaW5nIG91ciBvd24gdHVwbGUgZG9lcyBub3Qgd29yayBvbgorLy8g
dGhvc2UgY29tcGlsZXJzLgorI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE2
MDAgIC8qIDE2MDAgaXMgVmlzdWFsIFN0dWRpbyAyMDEwICovCisjIGVycm9yICJndGVzdCdzIHR1
cGxlIGRvZXNuJ3QgY29tcGlsZSBvbiBWaXN1YWwgU3R1ZGlvIDIwMTAgb3IgbGF0ZXIuIFwKK0dU
RVNUX1VTRV9PV05fVFIxX1RVUExFIG11c3QgYmUgc2V0IHRvIDAgb24gdGhvc2UgY29tcGlsZXJz
LiIKKyNlbmRpZgorCiAvLyBHVEVTVF9uX1RVUExFXyhUKSBpcyB0aGUgdHlwZSBvZiBhbiBuLXR1
cGxlLgogI2RlZmluZSBHVEVTVF8wX1RVUExFXyhUKSB0dXBsZTw+CiAjZGVmaW5lIEdURVNUXzFf
VFVQTEVfKFQpIHR1cGxlPFQjIzAsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQs
IFwKQEAgLTE0MCwzNCArMTUxLDU0IEBAIHRlbXBsYXRlIDxib29sIGtJbmRleFZhbGlkLCBpbnQg
a0luZGV4LCBjbGFzcyBUdXBsZT4KIHN0cnVjdCBUdXBsZUVsZW1lbnQ7CiAKIHRlbXBsYXRlIDxH
VEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAwLCBHVEVT
VF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUMCB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVu
dDx0cnVlLCAwLCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDAgdHlwZTsKK307
CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVu
dDx0cnVlLCAxLCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUMSB0eXBlOyB9Oworc3Ry
dWN0IFR1cGxlRWxlbWVudDx0cnVlLCAxLCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVk
ZWYgVDEgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3Ry
dWN0IFR1cGxlRWxlbWVudDx0cnVlLCAyLCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBU
MiB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAyLCBHVEVTVF8xMF9UVVBMRV8o
VCkgPiB7CisgIHR5cGVkZWYgVDIgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBF
TkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAzLCBHVEVTVF8xMF9UVVBMRV8o
VCk+IHsgdHlwZWRlZiBUMyB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAzLCBH
VEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDMgdHlwZTsKK307CiAKIHRlbXBsYXRl
IDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA0LCBH
VEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUNCB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxl
bWVudDx0cnVlLCA0LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDQgdHlwZTsK
K307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxl
bWVudDx0cnVlLCA1LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUNSB0eXBlOyB9Owor
c3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA1LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5
cGVkZWYgVDUgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgot
c3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA2LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRl
ZiBUNiB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA2LCBHVEVTVF8xMF9UVVBM
RV8oVCkgPiB7CisgIHR5cGVkZWYgVDYgdHlwZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9U
WVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA3LCBHVEVTVF8xMF9UVVBM
RV8oVCk+IHsgdHlwZWRlZiBUNyB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA3
LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDcgdHlwZTsKK307CiAKIHRlbXBs
YXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA4
LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUOCB0eXBlOyB9Oworc3RydWN0IFR1cGxl
RWxlbWVudDx0cnVlLCA4LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7CisgIHR5cGVkZWYgVDggdHlw
ZTsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxl
RWxlbWVudDx0cnVlLCA5LCBHVEVTVF8xMF9UVVBMRV8oVCk+IHsgdHlwZWRlZiBUOSB0eXBlOyB9
Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA5LCBHVEVTVF8xMF9UVVBMRV8oVCkgPiB7Cisg
IHR5cGVkZWYgVDkgdHlwZTsKK307CiAKIH0gIC8vIG5hbWVzcGFjZSBndGVzdF9pbnRlcm5hbAog
CkBAIC03MDgsMzcgKzczOSw1OSBAQCBpbmxpbmUgR1RFU1RfMTBfVFVQTEVfKFQpIG1ha2VfdHVw
bGUoY29uc3QgVDAmIGYwLCBjb25zdCBUMSYgZjEsIGNvbnN0IFQyJiBmMiwKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUdXBsZT4gc3RydWN0IHR1cGxlX3NpemU7CiAKIHRlbXBsYXRlIDxHVEVTVF8wX1RZ
UEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8wX1RVUExFXyhUKT4geyBzdGF0
aWMgY29uc3QgaW50IHZhbHVlID0gMDsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzBfVFVQ
TEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMDsKK307CiAKIHRlbXBsYXRl
IDxHVEVTVF8xX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8xX1RVUExF
XyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMTsgfTsKK3N0cnVjdCB0dXBsZV9zaXpl
PEdURVNUXzFfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMTsKK307
CiAKIHRlbXBsYXRlIDxHVEVTVF8yX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxH
VEVTVF8yX1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMjsgfTsKK3N0cnVj
dCB0dXBsZV9zaXplPEdURVNUXzJfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZh
bHVlID0gMjsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF8zX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3Qg
dHVwbGVfc2l6ZTxHVEVTVF8zX1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0g
MzsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzNfVFVQTEVfKFQpID4geworICBzdGF0aWMg
Y29uc3QgaW50IHZhbHVlID0gMzsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF80X1RZUEVOQU1FU18o
VCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF80X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3Qg
aW50IHZhbHVlID0gNDsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzRfVFVQTEVfKFQpID4g
eworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNDsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF81
X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF81X1RVUExFXyhUKT4geyBz
dGF0aWMgY29uc3QgaW50IHZhbHVlID0gNTsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzVf
VFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNTsKK307CiAKIHRlbXBs
YXRlIDxHVEVTVF82X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF82X1RV
UExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNjsgfTsKK3N0cnVjdCB0dXBsZV9z
aXplPEdURVNUXzZfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNjsK
K307CiAKIHRlbXBsYXRlIDxHVEVTVF83X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6
ZTxHVEVTVF83X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNzsgfTsKK3N0
cnVjdCB0dXBsZV9zaXplPEdURVNUXzdfVFVQTEVfKFQpID4geworICBzdGF0aWMgY29uc3QgaW50
IHZhbHVlID0gNzsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF84X1RZUEVOQU1FU18oVCk+Ci1zdHJ1
Y3QgdHVwbGVfc2l6ZTxHVEVTVF84X1RVUExFXyhUKT4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVl
ID0gODsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzhfVFVQTEVfKFQpID4geworICBzdGF0
aWMgY29uc3QgaW50IHZhbHVlID0gODsKK307CiAKIHRlbXBsYXRlIDxHVEVTVF85X1RZUEVOQU1F
U18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF85X1RVUExFXyhUKT4geyBzdGF0aWMgY29u
c3QgaW50IHZhbHVlID0gOTsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdURVNUXzlfVFVQTEVfKFQp
ID4geworICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gOTsKK307CiAKIHRlbXBsYXRlIDxHVEVT
VF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFQp
PiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAxMDsgfTsKK3N0cnVjdCB0dXBsZV9zaXplPEdU
RVNUXzEwX1RVUExFXyhUKSA+IHsKKyAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDEwOworfTsK
IAogdGVtcGxhdGUgPGludCBrLCBjbGFzcyBUdXBsZT4KIHN0cnVjdCB0dXBsZV9lbGVtZW50IHsK
QEAgLTkxMiw3ICs5NjUsNyBAQCBzdHJ1Y3QgU2FtZVNpemVUdXBsZVByZWZpeENvbXBhcmF0b3I8
aywgaz4gewogICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGUxLCBjbGFzcyBUdXBsZTI+CiAgIHN0YXRp
YyBib29sIEVxKGNvbnN0IFR1cGxlMSYgdDEsIGNvbnN0IFR1cGxlMiYgdDIpIHsKICAgICByZXR1
cm4gU2FtZVNpemVUdXBsZVByZWZpeENvbXBhcmF0b3I8ayAtIDEsIGsgLSAxPjo6RXEodDEsIHQy
KSAmJgotICAgICAgICA6OnN0ZDo6Z2V0PGsgLSAxPih0MSkgPT0gOjpzdGQ6OmdldDxrIC0gMT4o
dDIpOworICAgICAgICA6OnN0ZDo6dHIxOjpnZXQ8ayAtIDE+KHQxKSA9PSA6OnN0ZDo6dHIxOjpn
ZXQ8ayAtIDE+KHQyKTsKICAgfQogfTsKIApAQCAtOTIyLDggKzk3NSw4IEBAIHRlbXBsYXRlIDxH
VEVTVF8xMF9UWVBFTkFNRVNfKFQpLCBHVEVTVF8xMF9UWVBFTkFNRVNfKFUpPgogaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBHVEVTVF8xMF9UVVBMRV8oVCkmIHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdURVNUXzEwX1RVUExFXyhVKSYgdSkgewogICByZXR1cm4gZ3Rlc3Rf
aW50ZXJuYWw6OlNhbWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9yPAotICAgICAgdHVwbGVfc2l6
ZTxHVEVTVF8xMF9UVVBMRV8oVCk+Ojp2YWx1ZSwKLSAgICAgIHR1cGxlX3NpemU8R1RFU1RfMTBf
VFVQTEVfKFUpPjo6dmFsdWU+OjpFcSh0LCB1KTsKKyAgICAgIHR1cGxlX3NpemU8R1RFU1RfMTBf
VFVQTEVfKFQpID46OnZhbHVlLAorICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8xMF9UVVBMRV8oVSkg
Pjo6dmFsdWU+OjpFcSh0LCB1KTsKIH0KIAogdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18o
VCksIEdURVNUXzEwX1RZUEVOQU1FU18oVSk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5w
dW1wCmluZGV4IDg1ZWJjODA2MmVlMTA0NDczN2IzNmU4YTQwODVkMjY3ZjE4ZGMyMDUuLmJiNjI2
ZTA0OWYwODc4MGZmY2U5NmQ0ODUyY2I4ZWQ1ZDNlZjVmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1w
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtdHVwbGUuaC5wdW1wCkBAIC0yOSwxMSArMjksMTIgQEAgJCQgVGhpcyBtZXRhIGNvbW1lbnQg
Zml4ZXMgYXV0by1pbmRlbnRhdGlvbiBpbiBFbWFjcy4gfX0KIC8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29t
IChaaGFueW9uZyBXYW4pCisKIAogLy8gSW1wbGVtZW50cyBhIHN1YnNldCBvZiBUUjEgdHVwbGUg
bmVlZGVkIGJ5IEdvb2dsZSBUZXN0IGFuZCBHb29nbGUgTW9jay4KIAorLy8gR09PR0xFVEVTVF9D
TTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJO
QUxfR1RFU1RfVFVQTEVfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9H
VEVTVF9UVVBMRV9IXwogCkBAIC00MSwxNyArNDIsMjUgQEAgJCQgVGhpcyBtZXRhIGNvbW1lbnQg
Zml4ZXMgYXV0by1pbmRlbnRhdGlvbiBpbiBFbWFjcy4gfX0KIAogLy8gVGhlIGNvbXBpbGVyIHVz
ZWQgaW4gU3ltYmlhbiBoYXMgYSBidWcgdGhhdCBwcmV2ZW50cyB1cyBmcm9tIGRlY2xhcmluZyB0
aGUKIC8vIHR1cGxlIHRlbXBsYXRlIGFzIGEgZnJpZW5kIChpdCBjb21wbGFpbnMgdGhhdCB0dXBs
ZSBpcyByZWRlZmluZWQpLiAgVGhpcwotLy8gaGFjayBieXBhc3NlcyB0aGUgYnVnIGJ5IGRlY2xh
cmluZyB0aGUgbWVtYmVycyB0aGF0IHNob3VsZCBvdGhlcndpc2UgYmUKKy8vIGJ5cGFzc2VzIHRo
ZSBidWcgYnkgZGVjbGFyaW5nIHRoZSBtZW1iZXJzIHRoYXQgc2hvdWxkIG90aGVyd2lzZSBiZQog
Ly8gcHJpdmF0ZSBhcyBwdWJsaWMuCiAvLyBTdW4gU3R1ZGlvIHZlcnNpb25zIDwgMTIgYWxzbyBo
YXZlIHRoZSBhYm92ZSBidWcuCiAjaWYgZGVmaW5lZChfX1NZTUJJQU4zMl9fKSB8fCAoZGVmaW5l
ZChfX1NVTlBST19DQykgJiYgX19TVU5QUk9fQ0MgPCAweDU5MCkKLSNkZWZpbmUgR1RFU1RfREVD
TEFSRV9UVVBMRV9BU19GUklFTkRfIHB1YmxpYzoKKyMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQ
TEVfQVNfRlJJRU5EXyBwdWJsaWM6CiAjZWxzZQotI2RlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExF
X0FTX0ZSSUVORF8gXAorIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIFwK
ICAgICB0ZW1wbGF0ZSA8R1RFU1RfJChuKV9UWVBFTkFNRVNfKFUpPiBmcmllbmQgY2xhc3MgdHVw
bGU7IFwKICAgIHByaXZhdGU6CiAjZW5kaWYKIAorLy8gVmlzdWFsIFN0dWRpbyAyMDEwLCAyMDEy
LCBhbmQgMjAxMyBkZWZpbmUgc3ltYm9scyBpbiBzdGQ6OnRyMSB0aGF0IGNvbmZsaWN0CisvLyB3
aXRoIG91ciBvd24gZGVmaW5pdGlvbnMuIFRoZXJlZm9yZSB1c2luZyBvdXIgb3duIHR1cGxlIGRv
ZXMgbm90IHdvcmsgb24KKy8vIHRob3NlIGNvbXBpbGVycy4KKyNpZiBkZWZpbmVkKF9NU0NfVkVS
KSAmJiBfTVNDX1ZFUiA+PSAxNjAwICAvKiAxNjAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxMCAqLwor
IyBlcnJvciAiZ3Rlc3QncyB0dXBsZSBkb2Vzbid0IGNvbXBpbGUgb24gVmlzdWFsIFN0dWRpbyAy
MDEwIG9yIGxhdGVyLiBcCitHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRSBtdXN0IGJlIHNldCB0byAw
IG9uIHRob3NlIGNvbXBpbGVycy4iCisjZW5kaWYKKwogCiAkcmFuZ2UgaSAwLi5uLTEKICRyYW5n
ZSBqIDAuLm4KQEAgLTExOCw4ICsxMjcsOSBAQCBzdHJ1Y3QgVHVwbGVFbGVtZW50OwogCiAkZm9y
IGkgW1sKIHRlbXBsYXRlIDxHVEVTVF8kKG4pX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgVHVwbGVF
bGVtZW50PHRydWUsICRpLCBHVEVTVF8kKG4pX1RVUExFXyhUKT4gW1tdXQoteyB0eXBlZGVmIFQk
aSB0eXBlOyB9Oworc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAkaSwgR1RFU1RfJChuKV9UVVBM
RV8oVCkgPiB7CisgIHR5cGVkZWYgVCRpIHR5cGU7Cit9OwogCiAKIF1dCkBAIC0yMjAsNyArMjMw
LDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPiBzdHJ1Y3QgdHVwbGVfc2l6ZTsKIAogJGZv
ciBqIFtbCiB0ZW1wbGF0ZSA8R1RFU1RfJChqKV9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxl
X3NpemU8R1RFU1RfJChqKV9UVVBMRV8oVCk+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9ICRq
OyB9Oworc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfJChqKV9UVVBMRV8oVCkgPiB7CisgIHN0YXRp
YyBjb25zdCBpbnQgdmFsdWUgPSAkajsKK307CiAKIAogXV0KQEAgLTMwMiw4ICszMTQsOCBAQCB0
ZW1wbGF0ZSA8R1RFU1RfJChuKV9UWVBFTkFNRVNfKFQpLCBHVEVTVF8kKG4pX1RZUEVOQU1FU18o
VSk+CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdURVNUXyQobilfVFVQTEVfKFQpJiB0
LAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHVEVTVF8kKG4pX1RVUExFXyhVKSYgdSkg
ewogICByZXR1cm4gZ3Rlc3RfaW50ZXJuYWw6OlNhbWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9y
PAotICAgICAgdHVwbGVfc2l6ZTxHVEVTVF8kKG4pX1RVUExFXyhUKT46OnZhbHVlLAotICAgICAg
dHVwbGVfc2l6ZTxHVEVTVF8kKG4pX1RVUExFXyhVKT46OnZhbHVlPjo6RXEodCwgdSk7CisgICAg
ICB0dXBsZV9zaXplPEdURVNUXyQobilfVFVQTEVfKFQpID46OnZhbHVlLAorICAgICAgdHVwbGVf
c2l6ZTxHVEVTVF8kKG4pX1RVUExFXyhVKSA+Ojp2YWx1ZT46OkVxKHQsIHUpOwogfQogCiB0ZW1w
bGF0ZSA8R1RFU1RfJChuKV9UWVBFTkFNRVNfKFQpLCBHVEVTVF8kKG4pX1RZUEVOQU1FU18oVSk+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVy
bmFsL2d0ZXN0LXR5cGUtdXRpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9n
dGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaAppbmRleCAwOTNlZWU2ZjAxOTYzNTU2OWY0
MDRhZTYzNTdiOGRlNDhiNzE4ZTgxLi4yOGU0MTEyNDUzNjFjMDhmMjg3MDdlOTI0OGU2ZDAzMzIw
ZTY4NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgKQEAgLTMwLDggKzMwLDcg
QEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0v
LyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogLy8gVHlwZSB1dGls
aXRpZXMgbmVlZGVkIGZvciBpbXBsZW1lbnRpbmcgdHlwZWQgYW5kIHR5cGUtcGFyYW1ldGVyaXpl
ZAogLy8gdGVzdHMuICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBULiAgRE8gTk9U
IEVESVQgQlkgSEFORCEKQEAgLTQxLDU4ICs0MCw4NCBAQAogLy8gUGxlYXNlIGNvbnRhY3QgZ29v
Z2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tIGlmIHlvdSBuZWVkCiAvLyBtb3JlLgog
CisvLyBHT09HTEVURVNUX0NNMDAwMSBETyBOT1QgREVMRVRFCisKICNpZm5kZWYgR1RFU1RfSU5D
TFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UWVBFX1VUSUxfSF8KICNkZWZpbmUgR1RFU1RfSU5D
TFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UWVBFX1VUSUxfSF8KIAotI2luY2x1ZGUgPGd0ZXN0
L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9ndGVzdC1z
dHJpbmcuaD4KLQotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9U
RVNUX1AKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCiAKIC8vICNpZmRl
ZiBfX0dOVUNfXyBpcyB0b28gZ2VuZXJhbCBoZXJlLiAgSXQgaXMgcG9zc2libGUgdG8gdXNlIGdj
YyB3aXRob3V0IHVzaW5nCiAvLyBsaWJzdGRjKysgKHdoaWNoIGlzIHdoZXJlIGN4eGFiaS5oIGNv
bWVzIGZyb20pLgotI2lmZGVmIF9fR0xJQkNYWF9fCi0jaW5jbHVkZSA8Y3h4YWJpLmg+Ci0jZW5k
aWYgIC8vIF9fR0xJQkNYWF9fCisjIGlmIEdURVNUX0hBU19DWFhBQklfSF8KKyMgIGluY2x1ZGUg
PGN4eGFiaS5oPgorIyBlbGlmIGRlZmluZWQoX19IUF9hQ0MpCisjICBpbmNsdWRlIDxhY3h4X2Rl
bWFuZ2xlLmg+CisjIGVuZGlmICAvLyBHVEVTVF9IQVNIX0NYWEFCSV9IXwogCiBuYW1lc3BhY2Ug
dGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCi0vLyBBc3NlcnR5VHlwZUVxPFQxLCBU
Mj46OnR5cGUgaXMgZGVmaW5lZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQotLy8gdHlwZS4g
IFRoaXMgY2FuIGJlIHVzZWQgYXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0
aGF0Ci0vLyB0d28gdHlwZXMgYXJlIGVxdWFsLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyPgotc3RydWN0IEFzc2VydFR5cGVFcTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1zdHJ1Y3QgQXNzZXJ0VHlwZUVxPFQsIFQ+IHsKLSAgdHlwZWRlZiBib29sIHR5cGU7Ci19Owor
Ly8gQ2Fub25pY2FsaXplcyBhIGdpdmVuIG5hbWUgd2l0aCByZXNwZWN0IHRvIHRoZSBTdGFuZGFy
ZCBDKysgTGlicmFyeS4KKy8vIFRoaXMgaGFuZGxlcyByZW1vdmluZyB0aGUgaW5saW5lIG5hbWVz
cGFjZSB3aXRoaW4gYHN0ZGAgdGhhdCBpcworLy8gdXNlZCBieSB2YXJpb3VzIHN0YW5kYXJkIGxp
YnJhcmllcyAoZS5nLiwgYHN0ZDo6X18xYCkuICBOYW1lcyBvdXRzaWRlCisvLyBvZiBuYW1lc3Bh
Y2Ugc3RkIGFyZSByZXR1cm5lZCB1bm1vZGlmaWVkLgoraW5saW5lIHN0ZDo6c3RyaW5nIENhbm9u
aWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoc3RkOjpzdHJpbmcgcykgeworICBzdGF0aWMgY29u
c3QgY2hhciBwcmVmaXhbXSA9ICJzdGQ6Ol9fIjsKKyAgaWYgKHMuY29tcGFyZSgwLCBzdHJsZW4o
cHJlZml4KSwgcHJlZml4KSA9PSAwKSB7CisgICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBlbmQg
PSBzLmZpbmQoIjo6Iiwgc3RybGVuKHByZWZpeCkpOworICAgIGlmIChlbmQgIT0gcy5ucG9zKSB7
CisgICAgICAvLyBFcmFzZSBldmVyeXRoaW5nIGJldHdlZW4gdGhlIGluaXRpYWwgYHN0ZGAgYW5k
IHRoZSBzZWNvbmQgYDo6YC4KKyAgICAgIHMuZXJhc2Uoc3RybGVuKCJzdGQiKSwgZW5kIC0gc3Ry
bGVuKCJzdGQiKSk7CisgICAgfQorICB9CisgIHJldHVybiBzOworfQogCiAvLyBHZXRUeXBlTmFt
ZTxUPigpIHJldHVybnMgYSBodW1hbi1yZWFkYWJsZSBuYW1lIG9mIHR5cGUgVC4KKy8vIE5COiBU
aGlzIGZ1bmN0aW9uIGlzIGFsc28gdXNlZCBpbiBHb29nbGUgTW9jaywgc28gZG9uJ3QgbW92ZSBp
dCBpbnNpZGUgb2YKKy8vIHRoZSB0eXBlZC10ZXN0LW9ubHkgc2VjdGlvbiBiZWxvdy4KIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotU3RyaW5nIEdldFR5cGVOYW1lKCkgewotI2lmIEdURVNUX0hBU19S
VFRJCitzdGQ6OnN0cmluZyBHZXRUeXBlTmFtZSgpIHsKKyMgaWYgR1RFU1RfSEFTX1JUVEkKIAog
ICBjb25zdCBjaGFyKiBjb25zdCBuYW1lID0gdHlwZWlkKFQpLm5hbWUoKTsKLSNpZmRlZiBfX0dM
SUJDWFhfXworIyAgaWYgR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBkZWZpbmVkKF9fSFBfYUNDKQog
ICBpbnQgc3RhdHVzID0gMDsKICAgLy8gZ2NjJ3MgaW1wbGVtZW50YXRpb24gb2YgdHlwZWlkKFQp
Lm5hbWUoKSBtYW5nbGVzIHRoZSB0eXBlIG5hbWUsCiAgIC8vIHNvIHdlIGhhdmUgdG8gZGVtYW5n
bGUgaXQuCi0gIGNoYXIqIGNvbnN0IHJlYWRhYmxlX25hbWUgPSBhYmk6Ol9fY3hhX2RlbWFuZ2xl
KG5hbWUsIDAsIDAsICZzdGF0dXMpOwotICBjb25zdCBTdHJpbmcgbmFtZV9zdHIoc3RhdHVzID09
IDAgPyByZWFkYWJsZV9uYW1lIDogbmFtZSk7CisjICAgaWYgR1RFU1RfSEFTX0NYWEFCSV9IXwor
ICB1c2luZyBhYmk6Ol9fY3hhX2RlbWFuZ2xlOworIyAgIGVuZGlmICAvLyBHVEVTVF9IQVNfQ1hY
QUJJX0hfCisgIGNoYXIqIGNvbnN0IHJlYWRhYmxlX25hbWUgPSBfX2N4YV9kZW1hbmdsZShuYW1l
LCAwLCAwLCAmc3RhdHVzKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZV9zdHIoc3RhdHVzID09
IDAgPyByZWFkYWJsZV9uYW1lIDogbmFtZSk7CiAgIGZyZWUocmVhZGFibGVfbmFtZSk7Ci0gIHJl
dHVybiBuYW1lX3N0cjsKLSNlbHNlCisgIHJldHVybiBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJz
aW9uaW5nKG5hbWVfc3RyKTsKKyMgIGVsc2UKICAgcmV0dXJuIG5hbWU7Ci0jZW5kaWYgIC8vIF9f
R0xJQkNYWF9fCisjICBlbmRpZiAgLy8gR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBfX0hQX2FDQwor
CisjIGVsc2UKIAotI2Vsc2UKICAgcmV0dXJuICI8dHlwZT4iOwotI2VuZGlmICAvLyBHVEVTVF9I
QVNfUlRUSQorCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfUlRUSQogfQogCisjaWYgR1RFU1RfSEFT
X1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAorCisvLyBBc3NlcnR5VHlwZUVx
PFQxLCBUMj46OnR5cGUgaXMgZGVmaW5lZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQorLy8g
dHlwZS4gIFRoaXMgY2FuIGJlIHVzZWQgYXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRvIGVu
c3VyZSB0aGF0CisvLyB0d28gdHlwZXMgYXJlIGVxdWFsLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyPgorc3RydWN0IEFzc2VydFR5cGVFcTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitzdHJ1Y3QgQXNzZXJ0VHlwZUVxPFQsIFQ+IHsKKyAgdHlwZWRlZiBib29sIHR5cGU7
Cit9OworCiAvLyBBIHVuaXF1ZSB0eXBlIHVzZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRo
ZSBhcmd1bWVudHMgb2YgY2xhc3MKIC8vIHRlbXBsYXRlIFR5cGVzLiAgVGhpcyBhbGxvd3MgdXMg
dG8gc2ltdWxhdGUgdmFyaWFkaWMgdGVtcGxhdGVzCiAvLyAoZS5nLiBUeXBlczxpbnQ+LCBUeXBl
PGludCwgZG91YmxlPiwgYW5kIGV0YyksIHdoaWNoIEMrKyBkb2Vzbid0CkBAIC0xNjExLDcgKzE2
MzYsNyBAQCBzdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKIAogbmFtZXNwYWNlIGludGVybmFsIHsKIAot
I2RlZmluZSBHVEVTVF9URU1QTEFURV8gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzCisjIGRl
ZmluZSBHVEVTVF9URU1QTEFURV8gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzCiAKIC8vIFRo
ZSB0ZW1wbGF0ZSAic2VsZWN0b3IiIHN0cnVjdCBUZW1wbGF0ZVNlbDxUbXBsPiBpcyB1c2VkIHRv
CiAvLyByZXByZXNlbnQgVG1wbCwgd2hpY2ggbXVzdCBiZSBhIGNsYXNzIHRlbXBsYXRlIHdpdGgg
b25lIHR5cGUKQEAgLTE2MjksNyArMTY1NCw3IEBAIHN0cnVjdCBUZW1wbGF0ZVNlbCB7CiAgIH07
CiB9OwogCi0jZGVmaW5lIEdURVNUX0JJTkRfKFRtcGxTZWwsIFQpIFwKKyMgZGVmaW5lIEdURVNU
X0JJTkRfKFRtcGxTZWwsIFQpIFwKICAgVG1wbFNlbDo6dGVtcGxhdGUgQmluZDxUPjo6dHlwZQog
CiAvLyBBIHVuaXF1ZSBzdHJ1Y3QgdGVtcGxhdGUgdXNlZCBhcyB0aGUgZGVmYXVsdCB2YWx1ZSBm
b3IgdGhlCkBAIC0zMjkxLDcgKzMzMTYsOSBAQCBzdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAogLy8gSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoKS4KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1z
dHJ1Y3QgVHlwZUxpc3QgeyB0eXBlZGVmIFR5cGVzMTxUPiB0eXBlOyB9Oworc3RydWN0IFR5cGVM
aXN0IHsKKyAgdHlwZWRlZiBUeXBlczE8VD4gdHlwZTsKK307CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUs
CiAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDks
IHR5cGVuYW1lIFQxMCwKQEAgLTMzMTMsOSArMzM0MCw5IEBAIHN0cnVjdCBUeXBlTGlzdDxUeXBl
czxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMs
CiAgICAgICBUNDEsIFQ0MiwgVDQzLCBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5LCBUNTA+
Ojp0eXBlIHR5cGU7CiB9OwogCisjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdU
RVNUX0hBU19UWVBFRF9URVNUX1AKKwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBu
YW1lc3BhY2UgdGVzdGluZwogCi0jZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUIHx8IEdU
RVNUX0hBU19UWVBFRF9URVNUX1AKLQogI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lO
VEVSTkFMX0dURVNUX1RZUEVfVVRJTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0
aWwuaC5wdW1wCmluZGV4IDVhZWQxZTU1NDRmYTJkYTE1ODk3MzRjYmMzYjQxNDFiNTg3YTFmMzIu
LjAwMDFhNWQzOWRmYTZkMjRjN2M0MWExNmExNWYyZTJhNWNlOTQ5ZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11
dGlsLmgucHVtcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oLnB1bXAKQEAgLTI4LDggKzI4LDcgQEAgJHZhciBuID0g
NTAgICQkIE1heGltdW0gbGVuZ3RoIG9mIHR5cGUgbGlzdHMgd2Ugd2FudCB0byBzdXBwb3J0Lgog
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUeXBlIHV0aWxpdGll
cyBuZWVkZWQgZm9yIGltcGxlbWVudGluZyB0eXBlZCBhbmQgdHlwZS1wYXJhbWV0ZXJpemVkCiAv
LyB0ZXN0cy4gIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBETyBOT1QgRURJ
VCBCWSBIQU5EIQpAQCAtMzksNTggKzM4LDg0IEBAICR2YXIgbiA9IDUwICAkJCBNYXhpbXVtIGxl
bmd0aCBvZiB0eXBlIGxpc3RzIHdlIHdhbnQgdG8gc3VwcG9ydC4KIC8vIFBsZWFzZSBjb250YWN0
IGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbSBpZiB5b3UgbmVlZAogLy8gbW9y
ZS4KIAorLy8gR09PR0xFVEVTVF9DTTAwMDEgRE8gTk9UIERFTEVURQorCiAjaWZuZGVmIEdURVNU
X0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCiAjZGVmaW5lIEdURVNU
X0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCiAKLSNpbmNsdWRlIDxn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rl
c3Qtc3RyaW5nLmg+Ci0KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQ
RURfVEVTVF9QCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgogCiAvLyAj
aWZkZWYgX19HTlVDX18gaXMgdG9vIGdlbmVyYWwgaGVyZS4gIEl0IGlzIHBvc3NpYmxlIHRvIHVz
ZSBnY2Mgd2l0aG91dCB1c2luZwogLy8gbGlic3RkYysrICh3aGljaCBpcyB3aGVyZSBjeHhhYmku
aCBjb21lcyBmcm9tKS4KLSNpZmRlZiBfX0dMSUJDWFhfXwotI2luY2x1ZGUgPGN4eGFiaS5oPgot
I2VuZGlmICAvLyBfX0dMSUJDWFhfXworIyBpZiBHVEVTVF9IQVNfQ1hYQUJJX0hfCisjICBpbmNs
dWRlIDxjeHhhYmkuaD4KKyMgZWxpZiBkZWZpbmVkKF9fSFBfYUNDKQorIyAgaW5jbHVkZSA8YWN4
eF9kZW1hbmdsZS5oPgorIyBlbmRpZiAgLy8gR1RFU1RfSEFTSF9DWFhBQklfSF8KIAogbmFtZXNw
YWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsKIAotLy8gQXNzZXJ0eVR5cGVFcTxU
MSwgVDI+Ojp0eXBlIGlzIGRlZmluZWQgaWZmIFQxIGFuZCBUMiBhcmUgdGhlIHNhbWUKLS8vIHR5
cGUuICBUaGlzIGNhbiBiZSB1c2VkIGFzIGEgY29tcGlsZS10aW1lIGFzc2VydGlvbiB0byBlbnN1
cmUgdGhhdAotLy8gdHdvIHR5cGVzIGFyZSBlcXVhbC4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMj4KLXN0cnVjdCBBc3NlcnRUeXBlRXE7Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotc3RydWN0IEFzc2VydFR5cGVFcTxULCBUPiB7Ci0gIHR5cGVkZWYgYm9vbCB0eXBlOwot
fTsKKy8vIENhbm9uaWNhbGl6ZXMgYSBnaXZlbiBuYW1lIHdpdGggcmVzcGVjdCB0byB0aGUgU3Rh
bmRhcmQgQysrIExpYnJhcnkuCisvLyBUaGlzIGhhbmRsZXMgcmVtb3ZpbmcgdGhlIGlubGluZSBu
YW1lc3BhY2Ugd2l0aGluIGBzdGRgIHRoYXQgaXMKKy8vIHVzZWQgYnkgdmFyaW91cyBzdGFuZGFy
ZCBsaWJyYXJpZXMgKGUuZy4sIGBzdGQ6Ol9fMWApLiAgTmFtZXMgb3V0c2lkZQorLy8gb2YgbmFt
ZXNwYWNlIHN0ZCBhcmUgcmV0dXJuZWQgdW5tb2RpZmllZC4KK2lubGluZSBzdGQ6OnN0cmluZyBD
YW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKHN0ZDo6c3RyaW5nIHMpIHsKKyAgc3RhdGlj
IGNvbnN0IGNoYXIgcHJlZml4W10gPSAic3RkOjpfXyI7CisgIGlmIChzLmNvbXBhcmUoMCwgc3Ry
bGVuKHByZWZpeCksIHByZWZpeCkgPT0gMCkgeworICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUg
ZW5kID0gcy5maW5kKCI6OiIsIHN0cmxlbihwcmVmaXgpKTsKKyAgICBpZiAoZW5kICE9IHMubnBv
cykgeworICAgICAgLy8gRXJhc2UgZXZlcnl0aGluZyBiZXR3ZWVuIHRoZSBpbml0aWFsIGBzdGRg
IGFuZCB0aGUgc2Vjb25kIGA6OmAuCisgICAgICBzLmVyYXNlKHN0cmxlbigic3RkIiksIGVuZCAt
IHN0cmxlbigic3RkIikpOworICAgIH0KKyAgfQorICByZXR1cm4gczsKK30KIAogLy8gR2V0VHlw
ZU5hbWU8VD4oKSByZXR1cm5zIGEgaHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0eXBlIFQuCisvLyBO
QjogVGhpcyBmdW5jdGlvbiBpcyBhbHNvIHVzZWQgaW4gR29vZ2xlIE1vY2ssIHNvIGRvbid0IG1v
dmUgaXQgaW5zaWRlIG9mCisvLyB0aGUgdHlwZWQtdGVzdC1vbmx5IHNlY3Rpb24gYmVsb3cuCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVN0cmluZyBHZXRUeXBlTmFtZSgpIHsKLSNpZiBHVEVTVF9I
QVNfUlRUSQorc3RkOjpzdHJpbmcgR2V0VHlwZU5hbWUoKSB7CisjIGlmIEdURVNUX0hBU19SVFRJ
CiAKICAgY29uc3QgY2hhciogY29uc3QgbmFtZSA9IHR5cGVpZChUKS5uYW1lKCk7Ci0jaWZkZWYg
X19HTElCQ1hYX18KKyMgIGlmIEdURVNUX0hBU19DWFhBQklfSF8gfHwgZGVmaW5lZChfX0hQX2FD
QykKICAgaW50IHN0YXR1cyA9IDA7CiAgIC8vIGdjYydzIGltcGxlbWVudGF0aW9uIG9mIHR5cGVp
ZChUKS5uYW1lKCkgbWFuZ2xlcyB0aGUgdHlwZSBuYW1lLAogICAvLyBzbyB3ZSBoYXZlIHRvIGRl
bWFuZ2xlIGl0LgotICBjaGFyKiBjb25zdCByZWFkYWJsZV9uYW1lID0gYWJpOjpfX2N4YV9kZW1h
bmdsZShuYW1lLCAwLCAwLCAmc3RhdHVzKTsKLSAgY29uc3QgU3RyaW5nIG5hbWVfc3RyKHN0YXR1
cyA9PSAwID8gcmVhZGFibGVfbmFtZSA6IG5hbWUpOworIyAgIGlmIEdURVNUX0hBU19DWFhBQklf
SF8KKyAgdXNpbmcgYWJpOjpfX2N4YV9kZW1hbmdsZTsKKyMgICBlbmRpZiAgLy8gR1RFU1RfSEFT
X0NYWEFCSV9IXworICBjaGFyKiBjb25zdCByZWFkYWJsZV9uYW1lID0gX19jeGFfZGVtYW5nbGUo
bmFtZSwgMCwgMCwgJnN0YXR1cyk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG5hbWVfc3RyKHN0YXR1
cyA9PSAwID8gcmVhZGFibGVfbmFtZSA6IG5hbWUpOwogICBmcmVlKHJlYWRhYmxlX25hbWUpOwot
ICByZXR1cm4gbmFtZV9zdHI7Ci0jZWxzZQorICByZXR1cm4gQ2Fub25pY2FsaXplRm9yU3RkTGli
VmVyc2lvbmluZyhuYW1lX3N0cik7CisjICBlbHNlCiAgIHJldHVybiBuYW1lOwotI2VuZGlmICAv
LyBfX0dMSUJDWFhfXworIyAgZW5kaWYgIC8vIEdURVNUX0hBU19DWFhBQklfSF8gfHwgX19IUF9h
Q0MKKworIyBlbHNlCiAKLSNlbHNlCiAgIHJldHVybiAiPHR5cGU+IjsKLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX1JUVEkKKworIyBlbmRpZiAgLy8gR1RFU1RfSEFTX1JUVEkKIH0KIAorI2lmIEdURVNU
X0hBU19UWVBFRF9URVNUIHx8IEdURVNUX0hBU19UWVBFRF9URVNUX1AKKworLy8gQXNzZXJ0eVR5
cGVFcTxUMSwgVDI+Ojp0eXBlIGlzIGRlZmluZWQgaWZmIFQxIGFuZCBUMiBhcmUgdGhlIHNhbWUK
Ky8vIHR5cGUuICBUaGlzIGNhbiBiZSB1c2VkIGFzIGEgY29tcGlsZS10aW1lIGFzc2VydGlvbiB0
byBlbnN1cmUgdGhhdAorLy8gdHdvIHR5cGVzIGFyZSBlcXVhbC4KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMj4KK3N0cnVjdCBBc3NlcnRUeXBlRXE7CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorc3RydWN0IEFzc2VydFR5cGVFcTxULCBUPiB7CisgIHR5cGVkZWYgYm9vbCB0
eXBlOworfTsKKwogLy8gQSB1bmlxdWUgdHlwZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHZhbHVlIGZv
ciB0aGUgYXJndW1lbnRzIG9mIGNsYXNzCiAvLyB0ZW1wbGF0ZSBUeXBlcy4gIFRoaXMgYWxsb3dz
IHVzIHRvIHNpbXVsYXRlIHZhcmlhZGljIHRlbXBsYXRlcwogLy8gKGUuZy4gVHlwZXM8aW50Piwg
VHlwZTxpbnQsIGRvdWJsZT4sIGFuZCBldGMpLCB3aGljaCBDKysgZG9lc24ndApAQCAtMTY5LDcg
KzE5NCw3IEBAIHN0cnVjdCBUeXBlczwkZm9yIGosIFtbVCRqXV0kZm9yIGtbWywgaW50ZXJuYWw6
Ok5vbmVdXT4gewogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCi0jZGVmaW5lIEdURVNUX1RFTVBM
QVRFXyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MKKyMgZGVmaW5lIEdURVNUX1RFTVBMQVRF
XyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MKIAogLy8gVGhlIHRlbXBsYXRlICJzZWxlY3Rv
ciIgc3RydWN0IFRlbXBsYXRlU2VsPFRtcGw+IGlzIHVzZWQgdG8KIC8vIHJlcHJlc2VudCBUbXBs
LCB3aGljaCBtdXN0IGJlIGEgY2xhc3MgdGVtcGxhdGUgd2l0aCBvbmUgdHlwZQpAQCAtMTg3LDcg
KzIxMiw3IEBAIHN0cnVjdCBUZW1wbGF0ZVNlbCB7CiAgIH07CiB9OwogCi0jZGVmaW5lIEdURVNU
X0JJTkRfKFRtcGxTZWwsIFQpIFwKKyMgZGVmaW5lIEdURVNUX0JJTkRfKFRtcGxTZWwsIFQpIFwK
ICAgVG1wbFNlbDo6dGVtcGxhdGUgQmluZDxUPjo6dHlwZQogCiAvLyBBIHVuaXF1ZSBzdHJ1Y3Qg
dGVtcGxhdGUgdXNlZCBhcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlCkBAIC0yNzAsNyArMjk1
LDkgQEAgc3RydWN0IFRlbXBsYXRlczwkZm9yIGosIFtbVCRqXV0kZm9yIGtbWywgTm9uZVRdXT4g
ewogLy8gSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoKS4KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1zdHJ1Y3QgVHlwZUxpc3QgeyB0eXBlZGVmIFR5cGVzMTxUPiB0eXBlOyB9Oworc3Ry
dWN0IFR5cGVMaXN0IHsKKyAgdHlwZWRlZiBUeXBlczE8VD4gdHlwZTsKK307CiAKIAogJHJhbmdl
IGkgMS4ubgpAQCAtMjc5LDkgKzMwNiw5IEBAIHN0cnVjdCBUeXBlTGlzdDxUeXBlczwkZm9yIGks
IFtbVCRpXV0+ID4gewogICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzPCRmb3IgaSwgW1tUJGldXT46
OnR5cGUgdHlwZTsKIH07CiAKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RF
U1RfSEFTX1RZUEVEX1RFU1RfUAorCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIH0gIC8vIG5h
bWVzcGFjZSB0ZXN0aW5nCiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RF
U1RfSEFTX1RZUEVEX1RFU1RfUAotCiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5U
RVJOQUxfR1RFU1RfVFlQRV9VVElMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9tYWtlL01ha2VmaWxlIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbWFrZS9NYWtlZmls
ZQppbmRleCA1YjI3YjZhMmNiYjEzZTM4MGVlNzVkMTg2ZjU1M2JmYjVmYTE0NGI1Li45YWM3NDQ5
M2JhNTUyNDY1OTdlOTBiODk4ZmFlODQ3YWUzNThlYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9tYWtlL01ha2VmaWxlCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L21ha2UvTWFrZWZpbGUKQEAgLTIwLDEwICsyMCwxMiBAQCBHVEVTVF9ESVIgPSAuLgogVVNFUl9E
SVIgPSAuLi9zYW1wbGVzCiAKICMgRmxhZ3MgcGFzc2VkIHRvIHRoZSBwcmVwcm9jZXNzb3IuCi1D
UFBGTEFHUyArPSAtSSQoR1RFU1RfRElSKS9pbmNsdWRlCisjIFNldCBHb29nbGUgVGVzdCdzIGhl
YWRlciBkaXJlY3RvcnkgYXMgYSBzeXN0ZW0gZGlyZWN0b3J5LCBzdWNoIHRoYXQKKyMgdGhlIGNv
bXBpbGVyIGRvZXNuJ3QgZ2VuZXJhdGUgd2FybmluZ3MgaW4gR29vZ2xlIFRlc3QgaGVhZGVycy4K
K0NQUEZMQUdTICs9IC1pc3lzdGVtICQoR1RFU1RfRElSKS9pbmNsdWRlCiAKICMgRmxhZ3MgcGFz
c2VkIHRvIHRoZSBDKysgY29tcGlsZXIuCi1DWFhGTEFHUyArPSAtZyAtV2FsbCAtV2V4dHJhCitD
WFhGTEFHUyArPSAtZyAtV2FsbCAtV2V4dHJhIC1wdGhyZWFkCiAKICMgQWxsIHRlc3RzIHByb2R1
Y2VkIGJ5IHRoaXMgTWFrZWZpbGUuICBSZW1lbWJlciB0byBhZGQgbmV3IHRlc3RzIHlvdQogIyBj
cmVhdGVkIHRvIHRoZSBsaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
bXN2Yy8yMDEwL2d0ZXN0LW1kLnNsbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAx
MC9ndGVzdC1tZC5zbG4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM2YjMzYjYyMTVjMzc0YWZjMTE2YjUyMDg0YjE2
ZjQxNDg4MDQ3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21z
dmMvMjAxMC9ndGVzdC1tZC5zbG4KQEAgLTAsMCArMSw1NSBAQAorTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTEuMDAKKyMgVmlzdWFsIEMrKyBF
eHByZXNzIDIwMTAKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5
NDJ9IikgPSAiZ3Rlc3QtbWQiLCAiZ3Rlc3QtbWQudmN4cHJvaiIsICJ7QzhGNkMxNzItNTZGMi00
RTc2LUI1RkEtQzNCNDIzQjMxQkU4fSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04
QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3RfbWFpbi1tZCIsICJndGVzdF9t
YWluLW1kLnZjeHByb2oiLCAiezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzM30i
CitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJD
OTQyfSIpID0gImd0ZXN0X3Byb2RfdGVzdC1tZCIsICJndGVzdF9wcm9kX3Rlc3QtbWQudmN4cHJv
aiIsICJ7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfSIKK0VuZFByb2plY3QK
K1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rl
c3RfdW5pdHRlc3QtbWQiLCAiZ3Rlc3RfdW5pdHRlc3QtbWQudmN4cHJvaiIsICJ7NEQ5RkRGQjUt
OTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfSIKK0VuZFByb2plY3QKK0dsb2JhbAorCUdsb2Jh
bFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCisJ
CURlYnVnfFdpbjMyID0gRGVidWd8V2luMzIKKwkJRGVidWd8eDY0ID0gRGVidWd8eDY0CisJCVJl
bGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyCisJCVJlbGVhc2V8eDY0ID0gUmVsZWFzZXx4NjQK
KwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBs
YXRmb3JtcykgPSBwb3N0U29sdXRpb24KKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQy
M0IzMUJFOH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0M4RjZDMTcy
LTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVn
fFdpbjMyCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LkRlYnVnfHg2
NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQy
M0IzMUJFOH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJe0M4RjZDMTcyLTU2RjIt
NEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNl
fFdpbjMyCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LlJlbGVhc2V8
V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZB
LUMzQjQyM0IzMUJFOH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0M4
RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9
IFJlbGVhc2V8eDY0CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LkRl
YnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzIt
OTE0Ny1GNjhFRDk4NjIwMzN9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7
M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5EZWJ1Z3x4NjQuQWN0aXZlQ2Zn
ID0gRGVidWd8eDY0CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LkRl
YnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1G
NjhFRDk4NjIwMzN9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7
M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5SZWxlYXNlfFdpbjMyLkJ1aWxk
LjAgPSBSZWxlYXNlfFdpbjMyCisJCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIw
MzN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXszQUY1NEM4QS0xMEJG
LTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2
NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5EZWJ1Z3xXaW4zMi5B
Y3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5
QkMzRUNCfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezI0ODQ4NTUxLUVG
NEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2
NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5EZWJ1Z3x4NjQuQnVp
bGQuMCA9IERlYnVnfHg2NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNC
fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezI0ODQ4NTUxLUVG
NEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFz
ZXxXaW4zMgorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5SZWxlYXNl
fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQt
RUE0RDQ5QkMzRUNCfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezREOUZE
RkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0g
RGVidWd8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uRGVi
dWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzktODIz
Qy1GNEVFMEVENDgxQTJ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezREOUZE
RkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1
Z3x4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uUmVsZWFzZXxX
aW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs0RDlGREZCNS05ODZBLTQxMzktODIz
Qy1GNEVFMEVENDgxQTJ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJ
ezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uUmVsZWFzZXx4NjQuQWN0aXZl
Q2ZnID0gUmVsZWFzZXx4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFB
Mn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJRW5kR2xvYmFsU2VjdGlvbgor
CUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uCisJCUhpZGVT
b2x1dGlvbk5vZGUgPSBGQUxTRQorCUVuZEdsb2JhbFNlY3Rpb24KK0VuZEdsb2JhbApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1kLnZjeHByb2og
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QtbWQudmN4cHJvagpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNmE2ZmYxMmY3YjU3OTAxNWFiYjE0MTU4MGUyZjJkNGZkYTZmOWMzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LW1kLnZj
eHByb2oKQEAgLTAsMCArMSwxNDkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0i
NC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWls
ZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAg
ICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENv
bmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8
L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25m
aWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1
ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwv
UHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9
IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJh
dGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29u
ZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4
NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAg
IDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Cisg
IDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFBy
b2plY3RHdWlkPntDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9PC9Qcm9qZWN0
R3VpZD4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91
cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVm
YXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24i
PgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlw
ZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0
Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+Cisg
IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRp
b25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJT
ZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9Q
bGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExh
YmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFy
eTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJh
Y3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAg
PC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4K
KyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+
CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZv
cm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8
SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4K
KyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3Jv
dXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBv
cnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2Vy
LnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4k
KFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4K
KyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMi
PgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBs
YXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWlj
cm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQ
bGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJv
cGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9z
b2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJM
b2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIg
TGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlz
dHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycp
IiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQ
cm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAg
ICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+
CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSkt
JChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE91dERpcikkKFByb2pl
Y3ROYW1lKVw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlv
bk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERp
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3Vw
PgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9u
TmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGly
PiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0
ZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Cisg
ICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENv
bmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpJChQcm9qZWN0TmFt
ZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3Q8L1RhcmdldE5hbWU+CisgIDwvUHJv
cGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0ZDwv
VGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAg
ICA8VGFyZ2V0TmFtZT5ndGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8
SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRp
b24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50
cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFz
dENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRp
VGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZl
bDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRD
b250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4K
KyAgICA8TGliIC8+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9u
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0
aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJ
Q19NQVg9MTA7X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hl
Y2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJl
YWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4K
KyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwv
V2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFi
YXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAg
IDxMaWIgLz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJ
TjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRp
VGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgor
ICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9X
YXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJh
c2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAg
PExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQn
Ij4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMy
O19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8
L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhy
ZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAg
ICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJu
aW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8
L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExp
YiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3QtYWxsLmNjIj4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25h
bEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBp
bGU+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClc
TWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lv
blRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAx
MC9ndGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3Zj
LzIwMTAvZ3Rlc3QtbWQudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZWRlZmYyMzA2ZTFm
YWM5M2U3N2M1NTNmMDU2YjcwZmQyYTY4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QtbWQudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAg
KzEsMTggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJv
amVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5j
b20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJ
bmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0Yx
LUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8
RXh0ZW5zaW9ucz5jcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5z
aW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+
CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJF
NTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDto
bTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+
CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3Qt
YWxsLmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENv
bXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVz
dC5zbG4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3Quc2xuCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNhY2Q1YzBjZTZiOTMyODZiYTUyNzBmODMxMWY3ZDY0OTIxZTAyZTYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3Quc2xuCkBA
IC0wLDAgKzEsNTUgQEAKK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZv
cm1hdCBWZXJzaW9uIDExLjAwCisjIFZpc3VhbCBDKysgRXhwcmVzcyAyMDEwCitQcm9qZWN0KCJ7
OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0IiwgImd0ZXN0
LnZjeHByb2oiLCAie0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30iCitFbmRQ
cm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIp
ID0gImd0ZXN0X21haW4iLCAiZ3Rlc3RfbWFpbi52Y3hwcm9qIiwgInszQUY1NEM4QS0xMEJGLTQz
MzItOTE0Ny1GNjhFRDk4NjIwMzJ9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThC
NEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdF91bml0dGVzdCIsICJndGVzdF91
bml0dGVzdC52Y3hwcm9qIiwgIns0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9
IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFC
Qzk0Mn0iKSA9ICJndGVzdF9wcm9kX3Rlc3QiLCAiZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2oiLCAi
ezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQX0iCitFbmRQcm9qZWN0CitHbG9i
YWwKKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVT
b2x1dGlvbgorCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyCisJCURlYnVnfHg2NCA9IERlYnVn
fHg2NAorCQlSZWxlYXNlfFdpbjMyID0gUmVsZWFzZXxXaW4zMgorCQlSZWxlYXNlfHg2NCA9IFJl
bGVhc2V8eDY0CisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZp
Z3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uCisJCXtDOEY2QzE3Mi01NkYyLTRFNzYt
QjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJ
CXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnfFdpbjMyLkJ1aWxk
LjAgPSBEZWJ1Z3xXaW4zMgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3
fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXtDOEY2QzE3Mi01NkYyLTRFNzYt
QjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtDOEY2
QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2Zn
ID0gUmVsZWFzZXxXaW4zMgorCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3
fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtDOEY2QzE3Mi01NkYy
LTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8
eDY0CisJCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LlJlbGVhc2V8eDY0
LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5
ODYyMDMyfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7M0FGNTRDOEEt
MTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8
V2luMzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uRGVidWd8eDY0
LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5
ODYyMDMyfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7M0FGNTRDOEEtMTBCRi00
MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8
V2luMzIKKwkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uUmVsZWFzZXxX
aW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDct
RjY4RUQ5ODYyMDMyfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7M0FG
NTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0g
UmVsZWFzZXx4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uRGVi
dWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04
MjNDLUY0RUUwRUQ0ODFBMX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs0
RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9LkRlYnVnfHg2NC5BY3RpdmVDZmcg
PSBEZWJ1Z3x4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uRGVi
dWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0
RUUwRUQ0ODFBMX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs0
RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9LlJlbGVhc2V8V2luMzIuQnVpbGQu
MCA9IFJlbGVhc2V8V2luMzIKKwkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFB
MX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezREOUZERkI1LTk4NkEt
NDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0
CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LkRlYnVnfFdpbjMyLkFj
dGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlC
QzNFQ0F9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7MjQ4NDg1NTEtRUY0
Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0
CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LkRlYnVnfHg2NC5CdWls
ZC4wID0gRGVidWd8eDY0CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9
LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7MjQ4NDg1NTEtRUY0
Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNl
fFdpbjMyCisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LlJlbGVhc2V8
eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1F
QTRENDlCQzNFQ0F9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCUVuZEdsb2Jh
bFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlv
bgorCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UKKwlFbmRHbG9iYWxTZWN0aW9uCitFbmRHbG9i
YWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC52
Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0LnZjeHByb2oK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTQ2ZjVjN2FmMjQ1MzhkMzk4YzM2MjZjOGVjY2U5MTQ4Yzk2ZjAxZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdC52
Y3hwcm9qCkBAIC0wLDAgKzEsMTQ5IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249
IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVp
bGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+Cisg
ICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxD
b25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMy
PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29u
ZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVi
dWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8
L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRl
PSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3Vy
YXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENv
bmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8
eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAg
ICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgor
ICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQ
cm9qZWN0R3VpZD57QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fTwvUHJvamVj
dEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3Jv
dXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRl
ZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9u
Ij4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5
cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxh
dGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0
aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVy
U2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwv
UGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBM
YWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJh
cnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFy
YWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+Cisg
IDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+
CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBl
PgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRm
b3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAg
PEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+
CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdy
b3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1w
b3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+
CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRz
Ij4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRh
UGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlBy
b3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0i
TG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
IExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhp
c3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMn
KSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8
UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+Cisg
ICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9u
PgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0p
LSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpdGVtcFwk
KFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChT
b2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAg
PEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGly
KSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgor
ICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8
VGFyZ2V0TmFtZT5ndGVzdGQ8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFBy
b3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlc
JChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0
RGlyKXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3Q8
L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAg
IDxUYXJnZXROYW1lPmd0ZXN0ZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8
UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdDwvVGFyZ2V0TmFtZT4KKyAg
PC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGls
ZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElC
OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAg
ICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1
bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAg
PFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+CisgICAg
ICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAg
PFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0
aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4K
KyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGliIC8+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4K
KyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXph
dGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRp
b25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNo
ZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGlt
ZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVj
b21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2Fybmlu
Z0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3Jt
YXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwv
Q2xDb21waWxlPgorICAgIDxMaWIgLz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRl
bURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRp
bWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2
ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Q
cm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENv
bXBpbGU+CisgICAgPExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVm
aW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXx4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmlu
aXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJy
YXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVh
ZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2
ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFt
RGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+
CisgICAgPExpYiAvPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3QtYWxsLmNjIj4KKyAgICAgIDxB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAg
PC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJn
ZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9
IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L21zdmMvMjAxMC9ndGVzdC52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9tc3ZjLzIwMTAvZ3Rlc3QudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZWRlZmYyMzA2
ZTFmYWM5M2U3N2M1NTNmMDU2YjcwZmQyYTY4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3QudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAg
KzEsMTggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJv
amVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5j
b20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJ
bmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0Yx
LUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8
RXh0ZW5zaW9ucz5jcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5z
aW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+
CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJF
NTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDto
bTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+
CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxzcmNcZ3Rlc3Qt
YWxsLmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENv
bXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVz
dF9tYWluLW1kLnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rl
c3RfbWFpbi1tZC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNzczODk1YjcwMjNkZTg0NzQwZDYyYmJh
NjNlYzkwMGY3NGM5MjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qCkBAIC0wLDAgKzEsMTU0IEBACivvu788
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRh
cmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1p
Y3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9
IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0
aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25m
aWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQi
PgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxh
dGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25m
aWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8
L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25m
aWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJl
bGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAg
ICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3Jv
dXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57M0FGNTRDOEEtMTBCRi00MzMy
LTkxNDctRjY4RUQ5ODYyMDMzfTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9q
PC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1Rh
cmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxX
aW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3Rh
dGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5
dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9v
bHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZp
Z3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1
cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pgor
ICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5
R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENv
bmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxD
aGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNl
dD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRp
Y0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRl
PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xz
ZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1Bh
dGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5z
aW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9
IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJl
bD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9u
PSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+
CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwv
SW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAg
PEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3Jt
IiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3Jv
cyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40
MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIp
JChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Cisg
ICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPE91dERp
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3Vy
YXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlc
PC9JbnREaXI+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8T3V0
RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJh
dGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0lu
dERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGly
KSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgor
ICAgIDxJbnREaXI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdl
dE5hbWU+Z3Rlc3RfbWFpbjwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJv
cGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+Z3Rlc3RfbWFpbmQ8L1RhcmdldE5hbWU+Cisg
IDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+
Z3Rlc3RfbWFpbjwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmlu
aXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJs
ZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtf
VkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9Q
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5p
bWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwv
QmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRE
ZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAg
ICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5p
bmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwv
RGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGli
IC8+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAg
ICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9u
PgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7
X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmlu
aXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNp
Y1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVn
RExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xl
dmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWIgLz4K
KyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAg
ICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJ
QURJQ19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRE
TEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9Q
cmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2
ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4u
LlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgor
ICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8
Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJ
Q19NQVg9MTA7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8
L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVj
b21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+
CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5m
b3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwu
LlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYiAvPgorICA8
L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlwuLlxzcmNcZ3Rlc3RfbWFpbi5jYyI+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3x4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICA8
L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRl
PSJndGVzdC1tZC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjOGY2YzE3Mi01NmYyLTRlNzYt
YjVmYS1jM2I0MjNiMzFiZTh9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAg
PC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3Nv
ZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0
cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0
X21haW4tbWQudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8y
MDEwL2d0ZXN0X21haW4tbWQudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyNmM3NzNjY2Ix
Nzc2YTU4ZDZmNGZkNjVhMTZjYjUwZjQyMmQxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qLmZpbHRlcnMK
QEAgLTAsMCArMSwxOCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgi
Pz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWlj
cm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8
RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57
NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4K
KyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214
PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVy
IEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhF
Qi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDto
cHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0
ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNy
Y1xndGVzdF9tYWluLmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMv
MjAxMC9ndGVzdF9tYWluLnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIw
MTAvZ3Rlc3RfbWFpbi52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmYjI1ODk3YzhiMWMyZGJiM2NmNmMx
M2U5YjQxOTNmYzlhZTA1MGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfbWFpbi52Y3hwcm9qCkBAIC0wLDAgKzEsMTYyIEBACivvu788
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRh
cmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1p
Y3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9
IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0
aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25m
aWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQi
PgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxh
dGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25m
aWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8
L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25m
aWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJl
bGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAg
ICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3Jv
dXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57M0FGNTRDOEEtMTBCRi00MzMy
LTkxNDctRjY4RUQ5ODYyMDMyfTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9q
PC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1Rh
cmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxX
aW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3Rh
dGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5
dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9v
bHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZp
Z3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1
cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pgor
ICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5
R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENv
bmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxD
aGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNl
dD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRp
Y0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRl
PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xz
ZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1Bh
dGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5z
aW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9
IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJl
bD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9u
PSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+
CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwv
SW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAg
PEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3Jt
IiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3Jv
cyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40
MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIp
JChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Cisg
ICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8
T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29u
ZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE91dERpcil0ZW1wXCQoUHJv
amVjdE5hbWUpXDwvSW50RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0k
KENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFBy
b2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluZDwvVGFyZ2V0
TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE91dERp
cj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRp
b24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8
L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluPC9UYXJnZXROYW1lPgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9t
YWluZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9tYWluPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5
R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAg
PE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7X0RFQlVHO19MSUI7JShQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmlt
YWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNr
cz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxp
YnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21w
aWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xl
dmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xD
b21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3RO
YW1lKWQubGliPC9PdXRwdXRGaWxlPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3Jv
dXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRp
bWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxCYXNpY1J1bnRp
bWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1
bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+CisgICAgICA8
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdh
cm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAg
ICA8L0NsQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQ
cm9qZWN0TmFtZSlkLmxpYjwvT3V0cHV0RmlsZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5p
dGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgor
ICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRF
QlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRp
b25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5
PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4K
KyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4u
OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQo
T3V0RGlyKSQoUHJvamVjdE5hbWUpLmxpYjwvT3V0cHV0RmlsZT4KKyAgICA8L0xpYj4KKyAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPENsQ29t
cGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFY
PTEwO05ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1l
TGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRI
ZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAg
PERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVk
ZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0
RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKS5saWI8L091dHB1dEZpbGU+CisgICAgPC9MaWI+
CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXC4uXHNyY1xndGVzdF9tYWluLmNjIj4KKyAgICAgIDxBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+
CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIElu
Y2x1ZGU9Imd0ZXN0LnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2M4ZjZjMTcyLTU2ZjItNGU3
Ni1iNWZhLWMzYjQyM2IzMWJlN308L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgor
ICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jv
c29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJn
ZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rl
c3RfbWFpbi52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIw
MTAvZ3Rlc3RfbWFpbi52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI2Yzc3M2NjYjE3NzZh
NThkNmY0ZmQ2NWExNmNiNTBmNDIyZDE1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9tYWluLnZjeHByb2ouZmlsdGVycwpAQCAtMCww
ICsxLDE4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFBy
b2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQu
Y29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIg
SW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdG
MS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAg
PEV4dGVuc2lvbnM+Y3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVu
c2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMi
PgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZC
RTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7
aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3Vw
PgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cc3JjXGd0ZXN0
X21haW4uY2MiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0Ns
Q29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0
ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8y
MDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzMGU1ZGNlNDEwNjIz
YzE1YjY4ZmVhNzE4ZWQ5NGM0NTdmMDcwZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjeHByb2oKQEAgLTAs
MCArMSwxOTkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8
UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0i
aHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAg
PEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENv
bmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+
RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgor
ICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIElu
Y2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJh
dGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZp
Z3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2lu
MzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAg
IDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4K
KyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAg
PENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54
NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3Vw
PgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnsy
NDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0J9PC9Qcm9qZWN0R3VpZD4KKyAgICA8
S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9y
dCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIg
Lz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25m
aWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJh
Y3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYx
MDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0
JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNh
dGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0No
YXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4K
KyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRp
b24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5
cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxh
dGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgor
ICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlv
blR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+
TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0
Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZD
VGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJl
bD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMy
JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJl
eGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+Cisg
IDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIg
Q29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1w
b3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8
SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0i
IC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0
cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQo
UGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0
YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0i
VXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNp
b24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29s
dXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9P
dXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+Cisg
ICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5j
cmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPE91dERpciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0aW9u
RGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGly
PgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAg
PExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5j
cmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgIDwvUHJvcGVydHlHcm91cD4KKyAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj4KKyAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUp
XCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91
dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF9wcm9k
X3Rlc3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCci
PgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSkt
JChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoT3V0RGlyKSQoUHJvamVj
dE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X3Byb2RfdGVzdDwvVGFyZ2V0
TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPFRhcmdl
dE5hbWU+Z3Rlc3RfcHJvZF90ZXN0PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+Cisg
IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X3Byb2RfdGVzdDwvVGFy
Z2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Cisg
ICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlv
bj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEw
O19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+
CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGlt
ZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1
bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRI
ZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAg
PERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVk
ZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVy
YXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAg
ICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF9wcm9kX3Rlc3QucGRiPC9Qcm9n
cmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Cisg
ICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGlu
az4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAg
IDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+
CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtf
REVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRl
ZmluaXRpb25zPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9C
YXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERl
YnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1By
ZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZl
bD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4u
XC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAg
ICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0
aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChPdXREaXIpZ3Rlc3RfcHJvZF90ZXN0
LnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3Vi
U3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURl
ZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRl
ZmluaXRpb25zPldJTjMyO19WQVJJQURJQ19NQVg9MTA7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50
aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVj
b21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZl
bD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlBy
b2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29t
cGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwv
R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJT
eXN0ZW0+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNl
cz4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+
CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwv
TGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+
CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtf
VkFSSUFESUNfTUFYPTEwO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25z
KTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlU
aHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNl
PC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5n
TGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0Rl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+
CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZv
cm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPE9w
dGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8RW5hYmxl
Q09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgIDwvTGluaz4KKyAg
PC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cLi5cdGVzdFxndGVzdF9wcm9kX3Rlc3QuY2MiPgorICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxl
ZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgIDwvQ2xDb21waWxlPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxwcm9kdWN0aW9uLmNjIj4KKyAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAg
ICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAg
IDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8eDY0JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAg
IDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAg
ICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8
L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24uaCIgLz4KKyAgPC9JdGVtR3JvdXA+Cisg
IDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iZ3Rlc3RfbWFpbi1t
ZC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnszYWY1NGM4YS0xMGJmLTQzMzItOTE0Ny1mNjhl
ZDk4NjIwMzN9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3Jv
dXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRh
cmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwv
SW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVz
dC1tZC52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAv
Z3Rlc3RfcHJvZF90ZXN0LW1kLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzM2NzMxMGFl
ZTYyNmY0ZWM5YzFkZmZkYTczM2E1MGYyYTVjNWVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3hwcm9qLmZp
bHRlcnMKQEAgLTAsMCArMSwyNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
dXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVt
YXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4K
KyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRp
Zmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRp
Zmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2Fz
bTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0i
SGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRi
MDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lv
bnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgor
ICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XC4uXHRlc3RcZ3Rlc3RfcHJvZF90ZXN0LmNjIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwu
Llx0ZXN0XHByb2R1Y3Rpb24uY2MiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24uaCI+CisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91
cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2og
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHBy
b2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDQyZTEzNTExZGYyOGE1MzIyMjQyMDU3ZTc1NDFmOTY1NjcwZGRhMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVz
dF9wcm9kX3Rlc3QudmN4cHJvagpAQCAtMCwwICsxLDE5MSBAQAor77u/PD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIg
VG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2Rl
dmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmln
dXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4z
MiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQ
bGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAg
ICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25m
aWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxh
dGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3Vy
YXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxl
YXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAg
ICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNs
dWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1
cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29u
ZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9i
YWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJD
M0VDQX08L1Byb2plY3RHdWlkPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAg
PC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWlj
cm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0i
Q29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25m
aWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0
PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3Bl
cnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAg
PENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8
Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xz
ZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0
eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFw
cGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0
ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29s
c2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3Vy
YXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlv
blR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8
UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3Vw
PgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9w
cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1w
b3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAg
IDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3Jt
KS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0
LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9y
bSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlT
aGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNw
cC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFw
cERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJl
bD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilc
TWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygn
JChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExh
YmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9y
dEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9u
PSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+
CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91
cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZl
cnNpb24+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0
Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE91dERpcil0
ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8
L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVu
dGFsPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0
Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoT3V0RGly
KXRlbXBcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5m
YWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5r
SW5jcmVtZW50YWw+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8
T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29uZmln
dXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERpcil0ZW1wXCQoUHJvamVjdE5h
bWUpXDwvSW50RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAg
ICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUpXCQoUGxhdGZvcm0pLSQoQ29u
ZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpcj4kKE91dERpcil0ZW1wXCQoUHJvamVj
dE5hbWUpXDwvSW50RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2lu
MzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0
aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19WQVJJQURJ
Q19NQVg9MTA7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFs
UmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFz
aWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1
ZzwvUnVudGltZUxpYnJhcnk+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21w
aWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Cisg
ICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxp
bmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8
R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4K
KyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKWd0ZXN0X3Byb2RfdGVzdC5wZGI8
L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3Rl
bT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAg
PC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXph
dGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFY
PTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVj
a3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVh
ZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xl
dmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgor
ICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3Jt
YXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF9wcm9kX3Rl
c3QucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9T
dWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1
bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNv
bXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVs
PkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJv
Z3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21w
aWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9H
ZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5
c3RlbT4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2Vz
PgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4K
KyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9M
aW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4K
KyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19W
QVJJQURJQ19NQVg9MTA7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMp
PC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRo
cmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1By
ZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZl
bD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4u
XC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAg
ICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0
aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8T3B0aW1p
emVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxFbmFibGVDT01E
QVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgPC9MaW5rPgorICA8L0l0
ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlwuLlx0ZXN0XGd0ZXN0X3Byb2RfdGVzdC5jYyI+CisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
PgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
KTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXx4NjQnIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVh
ZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4
NjQnIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XHByb2R1Y3Rpb24uY2MiPgorICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFBy
ZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJl
Y29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8QWRkaXRp
b25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLjsuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFBy
ZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQ
cmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgIDwvQ2xD
b21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXC4uXHRlc3RccHJvZHVjdGlvbi5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0
ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJndGVzdF9tYWluLnZjeHBy
b2oiPgorICAgICAgPFByb2plY3Q+ezNhZjU0YzhhLTEwYmYtNDMzMi05MTQ3LWY2OGVkOTg2MjAz
Mn08L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAg
PEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIg
Lz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRH
cm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHBy
b2ouZmlsdGVycyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF9wcm9k
X3Rlc3QudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjMzY3MzEwYWVlNjI2ZjRlYzljMWRm
ZmRhNzMzYTUwZjJhNWM1ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfcHJvZF90ZXN0LnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsx
LDI2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2pl
Y3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29t
L2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5j
bHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1D
N0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4
dGVuc2lvbnM+Y3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lv
bnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgor
ICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUy
RUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07
aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgor
ICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxndGVzdF9w
cm9kX3Rlc3QuY2MiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8
L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RccHJvZHVjdGlv
bi5jYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21w
aWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXC4uXHRlc3RccHJvZHVjdGlvbi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0Pgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC1tZC52Y3hwcm9qIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjeHByb2oKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTNiMGRjNGUxYTRlMDNhZThkNjNlZmYzNmM2N2JmZTgyMzY1ZjE4OAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC1t
ZC52Y3hwcm9qCkBAIC0wLDAgKzEsMTg4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNp
b249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21z
YnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+
CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAg
IDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldp
bjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0
Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+
RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAg
ICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNs
dWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZp
Z3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVj
dENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVh
c2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Cisg
ICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9u
PgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAg
IDxQcm9qZWN0R3VpZD57NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfTwvUHJv
amVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5
R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3Bw
LkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0
aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25U
eXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBs
YXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4K
KyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJh
dGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJT
ZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9Q
bGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExh
YmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248
L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0
ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwv
UHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Cisg
ICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAg
ICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRv
b2xzZXQ+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBv
cnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8
SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4K
KyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQ
cm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJv
cHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxh
dGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8
L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Cisg
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRm
b3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0
eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2Fs
QXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJl
bD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilc
TWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygn
JChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExh
YmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3Bl
cnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxf
UHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAg
ICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENv
bmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5h
bWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0xpbmtJbmNyZW1lbnRh
bD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxPdXRE
aXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFtZSlcJChQbGF0Zm9ybSktJChDb25maWd1
cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUp
XDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRh
bD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICA8L1By
b3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGly
KSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgor
ICAgIDxJbnREaXI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdl
dE5hbWU+Z3Rlc3RfdW5pdHRlc3Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfHg2NCciPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFNvbHV0aW9uTmFt
ZSlcJChQbGF0Zm9ybSktJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQo
T3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxUYXJnZXROYW1lPmd0ZXN0X3Vu
aXR0ZXN0PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF91bml0dGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5ndGVzdF91
bml0dGVzdDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRp
b25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8
L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFS
SUFESUNfTUFYPTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwv
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWlu
aW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8
L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVk
RGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xl
dmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgor
ICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3Jt
YXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF91bml0dGVz
dC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1
YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+
CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlv
bkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09w
dGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFE
SUNfTUFYPTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZh
c3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0
aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVh
ZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwv
V2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFi
YXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAg
IDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURl
YnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVz
dF91bml0dGVzdC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNv
bnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4K
KyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztfQ09OU09M
RTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Cisg
ICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Cisg
ICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxX
YXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlv
bkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Cisg
ICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0
aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29u
c29sZTwvU3ViU3lzdGVtPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6
ZVJlZmVyZW5jZXM+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01E
QVRGb2xkaW5nPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGlu
ZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0
aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+V0lOMzI7X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJy
YXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVs
MzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURh
dGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgor
ICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0
ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4K
KyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAg
ICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICA8
L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2MiPgorICAgICAgPE9w
dGltaXphdGlvbiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+TWluU3BhY2U8L09wdGltaXphdGlvbj4KKyAgICAgIDxPcHRpbWl6YXRpb24g
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5N
aW5TcGFjZTwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0
JyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+RGVmYXVs
dDwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkRlZmF1bHQ8
L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgICA8
L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgICA8L1By
ZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPlByb2dyYW1E
YXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyI+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAg
IDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAg
ICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8
L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RS
ZWZlcmVuY2UgSW5jbHVkZT0iZ3Rlc3RfbWFpbi1tZC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0
PnszYWY1NGM4YS0xMGJmLTQzMzItOTE0Ny1mNjhlZDk4NjIwMzN9PC9Qcm9qZWN0PgorICAgIDwv
UHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChW
Q1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBM
YWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjeHByb2ouZmlsdGVycyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC1tZC52Y3hwcm9qLmZp
bHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDQ3ZGFlNTEzZTg2MDE1M2E1Y2VjMmY0NWI0OGNkYmM3NWY5YjZj
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9n
dGVzdF91bml0dGVzdC1tZC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxOCBAQAor77u/PD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lv
bj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNi
dWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBG
aWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYt
MkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtj
O2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmls
dGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJ
ZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJ
ZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9F
eHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2MiPgor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAg
PC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8yMDEwL2d0ZXN0X3VuaXR0ZXN0
LnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9tc3ZjLzIwMTAvZ3Rlc3RfdW5pdHRl
c3QudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzZhYmRlN2RhMTdlMjllZDI0NzZmNzBjNjk0MTVhZTk2
OGYyMWYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8y
MDEwL2d0ZXN0X3VuaXR0ZXN0LnZjeHByb2oKQEAgLTAsMCArMSwxODAgQEAKK++7vzw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0i
QnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0
LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVj
dENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVi
dWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+Cisg
ICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRp
b24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAg
ICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54
NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RD
b25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRp
b24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZv
cm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRp
b24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwv
Q29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJv
amVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJl
bD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPns0RDlGREZCNS05ODZBLTQxMzktODIzQy1G
NEVFMEVENDgxQTF9PC9Qcm9qZWN0R3VpZD4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdv
cmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1Bh
dGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIg
TGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlv
bjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJh
Y3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAg
PC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24i
PgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+
CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZv
cm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8
UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9u
VHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5N
dWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRm
b3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJD
b25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZp
Z3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+
CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVy
dHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5D
cHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgor
ICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRz
Ij4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRh
UGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlBy
b3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0i
TG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJl
eGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+Cisg
IDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0
PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENv
bmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9y
dEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3Bl
cnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVj
dEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUp
XCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChP
dXREaXIpdGVtcFwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVudGFs
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij50cnVlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0xpbmtJ
bmNyZW1lbnRhbD4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChTb2x1dGlvbk5hbWUp
XCQoUGxhdGZvcm0pLSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4k
KE91dERpcil0ZW1wXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50
YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5mYWxz
ZTwvTGlua0luY3JlbWVudGFsPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3JtKS0k
KENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwkKFBy
b2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0
JyI+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKSQoU29sdXRpb25OYW1lKVwkKFBsYXRmb3Jt
KS0kKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChPdXREaXIpdGVtcFwk
KFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmlu
aXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJs
ZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtf
VkFSSUFESUNfTUFYPTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25z
KTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwv
TWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVj
a3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVh
ZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwv
UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xl
dmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgor
ICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3Jt
YXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF91bml0dGVz
dC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1
YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+
CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlv
bkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09w
dGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFE
SUNfTUFYPTEwO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZh
c3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0
aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVy
PlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2Fy
bmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNl
PC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxM
aW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVn
SW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcilndGVzdF91
bml0dGVzdC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNv
bGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAg
PEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfVkFSSUFESUNfTUFYPTEwO05ERUJVRztfQ09OU09MRTsl
KFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAg
ICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8
UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5n
TGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1h
dD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8QWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9D
bENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRy
dWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwv
U3ViU3lzdGVtPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVy
ZW5jZXM+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xk
aW5nPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAg
ICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2
NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lO
MzI7X1ZBUklBRElDX01BWD0xMDtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11
bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVz
ZTwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2Fybmlu
Z0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9E
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5r
PgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5m
b3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxP
cHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPEVuYWJs
ZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICA8L0xpbms+Cisg
IDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2MiPgorICAgICAgPE9wdGltaXphdGlv
biBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+TWluU3BhY2U8L09wdGltaXphdGlvbj4KKyAgICAgIDxPcHRpbWl6YXRpb24gQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5NaW5TcGFjZTwv
T3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uOy4u
XGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Li47Li5c
aW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+RGVmYXVsdDwvQmFzaWNS
dW50aW1lQ2hlY2tzPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcyBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkRlZmF1bHQ8L0Jhc2ljUnVu
dGltZUNoZWNrcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgICA8L1ByZWNvbXBp
bGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgICA8L1ByZWNvbXBpbGVk
SGVhZGVyPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPlByb2dyYW1EYXRhYmFzZTwv
RGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0IENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+UHJv
Z3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+Li47Li5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uOy4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21w
aWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8UHJlY29t
cGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8L0NsQ29tcGls
ZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2Ug
SW5jbHVkZT0iZ3Rlc3RfbWFpbi52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnszYWY1NGM4YS0x
MGJmLTQzMzItOTE0Ny1mNjhlZDk4NjIwMzJ9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVy
ZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRo
KVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5z
aW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy8y
MDEwL2d0ZXN0X3VuaXR0ZXN0LnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDQ3ZGFlNTEzZTg2MDE1M2E1Y2VjMmY0NWI0OGNkYmM3NWY5YjZjZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvMjAxMC9ndGVzdF91bml0dGVzdC52Y3hw
cm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxOCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv
ZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDov
L3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1H
cm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVl
SWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVl
SWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7
YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5j
bHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04
OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4
dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmls
dGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXC4uXHRlc3RcZ3Rlc3RfdW5pdHRlc3QuY2MiPgorICAgICAgPEZpbHRlcj5Tb3VyY2Ug
RmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2pl
Y3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvbXN2Yy9ndGVzdC1tZC52Y3hwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
MDA3OGU0YWFiNjkxNzEyYTEwM2MyZWI2M2VlN2RhYzFlZjQ5OWJlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21z
dmMvZ3Rlc3QtbWQudmN4cHJvagorKysgL2Rldi9udWxsCkBAIC0xLDM2MCArMCwwIEBACi3vu788
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRh
cmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjE0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5t
aWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SXRlbUdyb3VwIExhYmVs
PSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNs
dWRlPSJEZWJ1Z1N1ZmZpeHxXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Z1N1ZmZp
eDwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAg
PC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVk
ZT0iRGVidWdTdWZmaXh8eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnU3VmZml4PC9D
b25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9q
ZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVi
dWdfV2luQ2Fpcm98V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWdfV2luQ2Fpcm88
L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwv
UHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9
IkRlYnVnX1dpbkNhaXJvfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Z19XaW5DYWly
bzwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwv
UHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9
IkRlYnVnfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9u
PgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1
cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgot
ICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZv
cm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9q
ZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQcm9kdWN0aW9ufFdpbjMyIj4KLSAgICAgIDxDb25m
aWd1cmF0aW9uPlByb2R1Y3Rpb248L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2lu
MzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RD
b25maWd1cmF0aW9uIEluY2x1ZGU9IlByb2R1Y3Rpb258eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0
aW9uPlByb2R1Y3Rpb248L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0
Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJh
dGlvbiBJbmNsdWRlPSJSZWxlYXNlX1dpbkNhaXJvfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0
aW9uPlJlbGVhc2VfV2luQ2Fpcm88L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2lu
MzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RD
b25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2VfV2luQ2Fpcm98eDY0Ij4KLSAgICAgIDxDb25m
aWd1cmF0aW9uPlJlbGVhc2VfV2luQ2Fpcm88L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZv
cm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9q
ZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KLSAgICAgIDxDb25maWd1
cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1Bs
YXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1
cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVh
c2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8
L1Byb2plY3RDb25maWd1cmF0aW9uPgotICA8L0l0ZW1Hcm91cD4KLSAgPFByb3BlcnR5R3JvdXAg
TGFiZWw9Ikdsb2JhbHMiPgotICAgIDxQcm9qZWN0R3VpZD57QzhGNkMxNzItNTZGMi00RTc2LUI1
RkEtQzNCNDIzQjMxQkU4fTwvUHJvamVjdEd1aWQ+Ci0gICAgPFJvb3ROYW1lc3BhY2U+Z3Rlc3Qt
bWQ8L1Jvb3ROYW1lc3BhY2U+Ci0gICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgotICAg
IDxXaW5kb3dzVGFyZ2V0UGxhdGZvcm1WZXJzaW9uPjguMTwvV2luZG93c1RhcmdldFBsYXRmb3Jt
VmVyc2lvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJn
ZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRp
Y0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRl
PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xz
ZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1
cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJh
dGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAg
ICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdy
b3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+
Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBl
PgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRm
b3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29u
ZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENo
YXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0
PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBl
PlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVs
dGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9y
bVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciIExhYmVs
PSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwv
Q29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3Rl
clNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Q
cm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgot
ICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4K
LSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9y
bVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQ
cm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlw
ZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11
bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZv
cm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzIn
IiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xp
YnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9D
aGFyYWN0ZXJTZXQ+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+
Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIiBMYWJlbD0iQ29u
ZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZp
Z3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+
Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVy
dHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4K
LSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+
Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZv
cm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8
UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnU3VmZml4fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJh
dGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3Rl
clNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8
L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9
IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KLSAgPEltcG9ydEdyb3Vw
IExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRH
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChV
c2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRp
b249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2Vy
LnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+
Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRz
Ij4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRh
UGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRv
b2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
X1dpbkNhaXJvfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAg
PEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9u
LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciIExh
YmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3Rz
KCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIg
TGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChX
ZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBv
cnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0g
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRm
b3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2
c3Byb3BzXGNvbW1vbi5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4
NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249
ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnBy
b3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2pl
Y3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0g
IDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4K
LSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxh
dGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xz
XHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQn
IiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9v
dERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4
aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3Bz
JykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9
IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gIDwv
SW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hl
ZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBE
YXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMp
XHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1w
b3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z19XaW5DYWlyb3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJv
amVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3Bz
IiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8
SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xpYnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24u
cHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyIgTGFiZWw9
IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJl
bD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFdlYktp
dF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcY29tbW9uLnByb3BzIiAvPgotICAgIDxJbXBvcnQg
UHJvamVjdD0iJChXZWJLaXRfTGlicmFyaWVzKVx0b29sc1x2c3Byb3BzXGRlYnVnc3VmZml4LnBy
b3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIiBMYWJlbD0iUHJv
cGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9z
b2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJM
b2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2ViS2l0X0xp
YnJhcmllcylcdG9vbHNcdnNwcm9wc1xjb21tb24ucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9q
ZWN0PSIkKFdlYktpdF9MaWJyYXJpZXMpXHRvb2xzXHZzcHJvcHNcZGVidWdzdWZmaXgucHJvcHMi
IC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9z
IiAvPgotICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQw
MjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXRE
aXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQn
Ij4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9P
dXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxp
YiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj4k
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXRE
aXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnU3VmZml4fFdpbjMyJyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj4kKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAg
PE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxp
YiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMy
JyI+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGxpYiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXDwv
T3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxs
aWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxsaWIkKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVw8L091dERp
cj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnx4NjQnIj4kKENvbmZpZ3VyYXRpb25CdWlsZERpcilcbGliJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcPC9PdXREaXI+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Z3Rlc3QkKERlYnVn
U3VmZml4KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Z3Rlc3QkKERlYnVnU3VmZml4
KTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj5ndGVzdCQoRGVidWdT
dWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj5ndGVzdCQoRGVi
dWdTdWZmaXgpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPmd0ZXN0JChEZWJ1
Z1N1ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPmd0ZXN0JChEZWJ1Z1N1
ZmZpeCk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8
L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJnZXRO
YW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj5ndGVzdCQoRGVidWdTdWZmaXgpPC9UYXJn
ZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFy
Z2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+Z3Rlc3QkKERlYnVnU3VmZml4KTwvVGFy
Z2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPmd0ZXN0JChEZWJ1Z1N1ZmZpeCk8L1Rhcmdl
dE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAg
IDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+
Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQ
cm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxw
cml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlw
dENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxQcmVj
b21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8QmFzaWNS
dW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICA8
L0NsQ29tcGlsZT4KLSAgICA8TGliPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpZ3Rlc3Qk
KERlYnVnU3VmZml4KS5saWI8L091dHB1dEZpbGU+Ci0gICAgPC9MaWI+Ci0gIDwvSXRlbURlZmlu
aXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAg
ICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNs
dWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hl
YWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAg
ICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25z
KTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0g
ICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFi
bGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAg
PExpYj4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKWd0ZXN0JChEZWJ1Z1N1ZmZpeCkubGli
PC9PdXRwdXRGaWxlPgotICAgIDwvTGliPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJ
dGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9w
dGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRl
ZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8
L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0
Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYj4K
LSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKWd0ZXN0LmxpYjwvT3V0cHV0RmlsZT4KLSAgICA8
L0xpYj4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJv
fHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9P
cHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2pl
Y3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZh
dGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5f
TElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4K
LSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4K
LSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0g
ICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNo
ZWNrcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGliPgotICAgICAgPE91dHB1dEZpbGU+JChP
dXREaXIpZ3Rlc3QubGliPC9PdXRwdXRGaWxlPgotICAgIDwvTGliPgotICA8L0l0ZW1EZWZpbml0
aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj4KLSAgICA8Q2xDb21waWxl
PgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpciku
LlxJbmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2Fy
ZGluZ0hlYWRlcnM7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmlu
aXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFk
ZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNr
cz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgPC9DbENvbXBpbGU+
Ci0gICAgPExpYj4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKWd0ZXN0JChEZWJ1Z1N1ZmZp
eCkubGliPC9PdXRwdXRGaWxlPgotICAgIDwvTGliPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+
Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxP
cHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5cSW5jbHVkZTsk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJz
OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1By
ZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAg
PC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFz
dENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWI+
Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilndGVzdCQoRGVidWdTdWZmaXgpLmxpYjwvT3V0
cHV0RmlsZT4KLSAgICA8L0xpYj4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURl
ZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJl
Y29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFByZXBy
b2Nlc3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPENsQ29t
cGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpciku
LjskKFByb2plY3REaXIpLi5cSW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNs
dWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZh
U2NyaXB0Q29yZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVj
b21waWxlZEhlYWRlcj4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0Ns
Q29tcGlsZT4KLSAgICA8TGliIC8+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1E
ZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLjskKFByb2plY3REaXIpLi5c
SW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTslKEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgot
ICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAg
ICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGli
IC8+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJv
fHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4kKFByb2plY3REaXIpLi47JChQcm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxp
bmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVjb21waWxlZEhl
YWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpYiAvPgotICA8L0l0ZW1EZWZpbml0
aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+
Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLi47JChQ
cm9qZWN0RGlyKS4uXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxw
cml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlw
dENvcmU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGls
ZWRIZWFkZXI+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0xJQjslKFByZXByb2Nl
c3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBp
bGU+Ci0gICAgPExpYiAvPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5p
dGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnx4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxJbmNsdWRlOyQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChD
b25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyUoQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlY29t
cGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFByZXByb2Nl
c3NvckRlZmluaXRpb25zPl9MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaWIgLz4KLSAgPC9JdGVt
RGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cc3JjXGd0ZXN0LWRlYXRoLXRlc3QuY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxzcmNcZ3Rlc3QtZmlsZXBhdGguY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxz
cmNcZ3Rlc3QtcG9ydC5jYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVz
dC10ZXN0LXBhcnQuY2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3Qt
dHlwZWQtdGVzdC5jYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC5j
YyIgLz4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwu
aCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtZGVh
dGgtdGVzdC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxp
bnRlcm5hbFxndGVzdC1maWxlcGF0aC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
c3JjXGd0ZXN0LWludGVybmFsLWlubC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1pbnRlcm5hbC5oIiAvPgotICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC1tZXNzYWdlLmgiIC8+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LXBvcnQuaCIg
Lz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3Qtc3BpLmgi
IC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0
ZXN0LXN0cmluZy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVz
dFxndGVzdC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxn
dGVzdF9wcmVkX2ltcGwuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVc
Z3Rlc3RcZ3Rlc3RfcHJvZC5oIiAvPgotICA8L0l0ZW1Hcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0
PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KLSAgPEltcG9ydEdy
b3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KLSAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVj
dD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L21zdmMvZ3Rlc3QtbWQudmN4
cHJvai5maWx0ZXJzIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52Y3hw
cm9qLmZpbHRlcnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzN2QxYzliNGRjYTZh
MTRlYzcwNmJjNGE4YzEzMWY2YjVjODM4MDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvbXN2Yy9ndGVzdC1tZC52
Y3hwcm9qLmZpbHRlcnMKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi3vu788P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0
LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxk
LzIwMDMiPgotICA8SXRlbUdyb3VwPgotICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVz
Ij4KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMy
RDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgotICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y3h4
O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+Ci0gICAgPC9GaWx0ZXI+
Ci0gICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgotICAgICAgPFVuaXF1ZUlkZW50
aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50
aWZpZXI+Ci0gICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVu
c2lvbnM+Ci0gICAgPC9GaWx0ZXI+Ci0gIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LWRlYXRoLXRlc3QuY2MiPgotICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdC1maWxlcGF0aC5jYyI+Ci0gICAgICA8RmlsdGVy
PlNvdXJjZSBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cc3JjXGd0ZXN0LXBvcnQuY2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmls
ZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHNyY1xndGVzdC10ZXN0LXBhcnQuY2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0Zp
bHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xn
dGVzdC10eXBlZC10ZXN0LmNjIj4KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+
Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzcmNcZ3Rlc3Qu
Y2MiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGls
ZT4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCI+
Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC1kZWF0aC10ZXN0
LmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVk
ZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rl
c3QtZmlsZXBhdGguaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgotICAg
IDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3JjXGd0ZXN0LWludGVy
bmFsLWlubC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9D
bEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVy
bmFsXGd0ZXN0LWludGVybmFsLmgiPgotICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluY2x1ZGVc
Z3Rlc3RcZ3Rlc3QtbWVzc2FnZS5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0
ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbmNsdWRl
XGd0ZXN0XGludGVybmFsXGd0ZXN0LXBvcnQuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5jbHVkZVxndGVzdFxndGVzdC1zcGkuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwv
RmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5j
bHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1zdHJpbmcuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
PC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxp
bmNsdWRlXGd0ZXN0XGd0ZXN0X3ByZWRfaW1wbC5oIj4KLSAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxpbmNsdWRlXGd0ZXN0XGd0ZXN0X3Byb2QuaCI+Ci0gICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9ydW5fdGVzdHMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9ydW5fdGVzdHMu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGUxMDg0MDU2ZTIzYmRkNWNmY2Y0NGYw
Njc2YzFkNjI4YWU2M2Q3NjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvcnVuX3Rlc3RzLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsNjAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdo
dCAyMDA4LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0j
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotIiIiUnVucyB0aGUgc3BlY2lmaWVkIHRlc3RzIGZvciBHb29nbGUgVGVzdC4KLQotVGhp
cyBzY3JpcHQgcmVxdWlyZXMgUHl0aG9uIDIuMyBvciBoaWdoZXIuICBUbyBsZWFybiB0aGUgdXNh
Z2UsIHJ1biBpdAotd2l0aCAtaC4KLSIiIgotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotU0NS
SVBUX0RJUiA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3IgJy4nCi0KLXN5cy5wYXRoLmFw
cGVuZChvcy5wYXRoLmpvaW4oU0NSSVBUX0RJUiwgJ3Rlc3QnKSkKLWltcG9ydCBydW5fdGVzdHNf
dXRpbAotCi0KLWRlZiBfTWFpbigpOgotICAiIiJSdW5zIGFsbCB0ZXN0cyBmb3IgR29vZ2xlIFRl
c3QuIiIiCi0KLSAgb3B0aW9ucywgYXJncyA9IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygnZ3Rl
c3QnKQotICB0ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5uZXIoc2NyaXB0X2Rp
cj1TQ1JJUFRfRElSKQotICB0ZXN0cyA9IHRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oYXJncywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuY29uZmlndXJhdGlv
bnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmJ1aWx0X2Nv
bmZpZ3VyYXRpb25zKQotICBpZiBub3QgdGVzdHM6Ci0gICAgc3lzLmV4aXQoMSkgICMgSW5jb3Jy
ZWN0IHBhcmFtZXRlcnMgZ2l2ZW4sIGFib3J0IGV4ZWN1dGlvbi4KLQotICBzeXMuZXhpdCh0ZXN0
X3J1bm5lci5SdW5UZXN0cyh0ZXN0c1swXSwgdGVzdHNbMV0pKQotCi1pZiBfX25hbWVfXyA9PSAn
X19tYWluX18nOgotICBfTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zYW1wbGVzL3ByaW1lX3RhYmxlcy5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxl
cy9wcmltZV90YWJsZXMuaAppbmRleCA5MmNlMTZhMDE0NGQ1MDJmZDBlNDViNzNmMzdkMzJiYmVk
ZjFjM2YzLi41MjNjNTBiOWFmYjFhMDkxOTE2ODA5NGQ3MWZkZjM3NmI2NGFmNmIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3ByaW1lX3RhYmxlcy5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvcHJpbWVfdGFibGVzLmgKQEAgLTI2LDkg
KzI2LDggQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLyBBdXRob3I6
IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCisKKwogCiAvLyBUaGlzIHByb3ZpZGVzIGlu
dGVyZmFjZSBQcmltZVRhYmxlIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgbnVtYmVyIGlzIGEK
IC8vIHByaW1lIGFuZCBkZXRlcm1pbmVzIGEgbmV4dCBwcmltZSBudW1iZXIuIFRoaXMgaW50ZXJm
YWNlIGlzIHVzZWQKQEAgLTEwMywxMSArMTAyLDE1IEBAIGNsYXNzIFByZUNhbGN1bGF0ZWRQcmlt
ZVRhYmxlIDogcHVibGljIFByaW1lVGFibGUgewogICAgIDo6c3RkOjpmaWxsKGlzX3ByaW1lXywg
aXNfcHJpbWVfICsgaXNfcHJpbWVfc2l6ZV8sIHRydWUpOwogICAgIGlzX3ByaW1lX1swXSA9IGlz
X3ByaW1lX1sxXSA9IGZhbHNlOwogCi0gICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gbWF4OyBpKysp
IHsKKyAgICAvLyBDaGVja3MgZXZlcnkgY2FuZGlkYXRlIGZvciBwcmltZSBudW1iZXIgKHdlIGtu
b3cgdGhhdCAyIGlzIHRoZSBvbmx5IGV2ZW4KKyAgICAvLyBwcmltZSkuCisgICAgZm9yIChpbnQg
aSA9IDI7IGkqaSA8PSBtYXg7IGkgKz0gaSUyKzEpIHsKICAgICAgIGlmICghaXNfcHJpbWVfW2ld
KSBjb250aW51ZTsKIAogICAgICAgLy8gTWFya3MgYWxsIG11bHRpcGxlcyBvZiBpIChleGNlcHQg
aSBpdHNlbGYpIGFzIG5vbi1wcmltZS4KLSAgICAgIGZvciAoaW50IGogPSAyKmk7IGogPD0gbWF4
OyBqICs9IGkpIHsKKyAgICAgIC8vIFdlIGFyZSBzdGFydGluZyBoZXJlIGZyb20gaS10aCBtdWx0
aXBsaWVyLCBiZWNhdXNlIGFsbCBzbWFsbGVyCisgICAgICAvLyBjb21wbGV4IG51bWJlcnMgd2Vy
ZSBhbHJlYWR5IG1hcmtlZC4KKyAgICAgIGZvciAoaW50IGogPSBpKmk7IGogPD0gbWF4OyBqICs9
IGkpIHsKICAgICAgICAgaXNfcHJpbWVfW2pdID0gZmFsc2U7CiAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmNjCmluZGV4IGYxNzFlMjYwOWQy
NTEzMjI4NDYyMWZiNjJjZjNiYTg2ZTFlNjk5MjUuLjEzY2VjMWQwZmJmYWJkYWFmMWM2YzQxYjFh
ODZiYzFkMDkwODk4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBs
ZXMvc2FtcGxlMS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBs
ZTEuY2MKQEAgLTI4LDggKzI4LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHBy
b2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgot
Ly8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAogI2luY2x1ZGUg
InNhbXBsZTEuaCIKIApAQCAtNTUsNyArNTMsNyBAQCBib29sIElzUHJpbWUoaW50IG4pIHsKIAog
ICAvLyBUcnkgdG8gZGl2aWRlIG4gYnkgZXZlcnkgb2RkIG51bWJlciBpLCBzdGFydGluZyBmcm9t
IDMKICAgZm9yIChpbnQgaSA9IDM7IDsgaSArPSAyKSB7Ci0gICAgLy8gV2Ugb25seSBoYXZlIHRv
IHRyeSBpIHVwIHRvIHRoZSBzcXVyZSByb290IG9mIG4KKyAgICAvLyBXZSBvbmx5IGhhdmUgdG8g
dHJ5IGkgdXAgdG8gdGhlIHNxdWFyZSByb290IG9mIG4KICAgICBpZiAoaSA+IG4vaSkgYnJlYWs7
CiAKICAgICAvLyBOb3csIHdlIGhhdmUgaSA8PSBuL2kgPCBuLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTEuaAppbmRleCAzZGZlYjk4YzQ1MDMwMTQ1ZjllYTE4ZDc5NTMx
YzkxYzgxZWU4NDlhLi4yYzNlOWYwNWYxYTEwYTQ0MjVmNzdiMjg3MTZlODA1OTY4MjE5NjFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEuaApAQCAtMjgsOCArMjgs
NiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5n
IHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCiAjaWZuZGVmIEdURVNUX1NBTVBMRVNfU0FNUExF
MV9IXwogI2RlZmluZSBHVEVTVF9TQU1QTEVTX1NBTVBMRTFfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjCmluZGV4IDNhZDZm
ZDY1MzgyNjE3ZjdkNmI0MDFmNGQxYmQ4M2ZjODZlZDg0ZmUuLjdjZTk1NTBmODgzYWEzNDJkMjVi
MDQ4NTkzZmFhOTZjYWJkOGUxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYwpAQCAtMjUsOCArMjUsNyBAQAogLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
dmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKKwogCiAvLyBUaGlzIHNhbXBsZSBzaG93cyBo
b3cgdG8gdXNlIEdvb2dsZSBUZXN0IGxpc3RlbmVyIEFQSSB0byBpbXBsZW1lbnQKIC8vIGEgcHJp
bWl0aXZlIGxlYWsgY2hlY2tlci4KQEAgLTM0LDE5ICszMywxNiBAQAogI2luY2x1ZGUgPHN0ZGlv
Lmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIHVzaW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRM
aXN0ZW5lcjsKIHVzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7CiB1c2luZyA6OnRlc3Rp
bmc6OlRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RDYXNlOwogdXNpbmcgOjp0ZXN0aW5nOjpU
ZXN0RXZlbnRMaXN0ZW5lcnM7CiB1c2luZyA6OnRlc3Rpbmc6OlRlc3RJbmZvOwogdXNpbmcgOjp0
ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDsKIHVzaW5nIDo6dGVzdGluZzo6VW5pdFRlc3Q7CiAKIG5h
bWVzcGFjZSB7Ci0KIC8vIFdlIHdpbGwgdHJhY2sgbWVtb3J5IHVzZWQgYnkgdGhpcyBjbGFzcy4K
IGNsYXNzIFdhdGVyIHsKICBwdWJsaWM6CkBAIC04OSw4ICs4NSw3IEBAIGNsYXNzIExlYWtDaGVj
a2VyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewogICAgIC8vIFlvdSBjYW4gZ2Vu
ZXJhdGUgYSBmYWlsdXJlIGluIGFueSBldmVudCBoYW5kbGVyIGV4Y2VwdAogICAgIC8vIE9uVGVz
dFBhcnRSZXN1bHQuIEp1c3QgdXNlIGFuIGFwcHJvcHJpYXRlIEdvb2dsZSBUZXN0IGFzc2VydGlv
biB0byBkbwogICAgIC8vIGl0LgotICAgIEVYUEVDVF9UUlVFKGRpZmZlcmVuY2UgPD0gMCkKLSAg
ICAgICAgPDwgIkxlYWtlZCAiIDw8IGRpZmZlcmVuY2UgPDwgIiB1bml0KHMpIG9mIFdhdGVyISI7
CisgICAgRVhQRUNUX0xFKGRpZmZlcmVuY2UsIDApIDw8ICJMZWFrZWQgIiA8PCBkaWZmZXJlbmNl
IDw8ICIgdW5pdChzKSBvZiBXYXRlciEiOwogICB9CiAKICAgaW50IGluaXRpYWxseV9hbGxvY2F0
ZWRfOwpAQCAtMTA3LDcgKzEwMiw2IEBAIFRFU1QoTGlzdGVuZXJzVGVzdCwgTGVha3NXYXRlcikg
ewogICBXYXRlciogd2F0ZXIgPSBuZXcgV2F0ZXI7CiAgIEVYUEVDVF9UUlVFKHdhdGVyICE9IE5V
TEwpOwogfQotCiB9ICAvLyBuYW1lc3BhY2UKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiph
cmd2KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBs
ZTFfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTFf
dW5pdHRlc3QuY2MKaW5kZXggMDFlYjU0NjJmODFhZDU0YjM4YWM1ZWU2MzM3OTcyZWFhMDRkN2Fk
ZS4uY2IwOGI2MWE1OWE5ZTE2YjM2NTc4NjFmMWM5NjA5MDAxZDIwOTZiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYwpAQCAt
MjgsOSArMjgsNiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1v
bnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0
aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCiAKIC8vIFRoaXMgc2FtcGxlIHNo
b3dzIGhvdyB0byB3cml0ZSBhIHNpbXBsZSB1bml0IHRlc3QgZm9yIGEgZnVuY3Rpb24sCiAvLyB1
c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgpAQCAtNDUsOCArNDIsOCBAQAogCiAj
aW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSAic2FtcGxlMS5oIgotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+Ci0KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorbmFtZXNwYWNlIHsKIAogLy8g
U3RlcCAyLiBVc2UgdGhlIFRFU1QgbWFjcm8gdG8gZGVmaW5lIHlvdXIgdGVzdHMuCiAvLwpAQCAt
ODEsNyArNzgsNyBAQCBURVNUKEZhY3RvcmlhbFRlc3QsIE5lZ2F0aXZlKSB7CiAgIC8vIHRlc3Qg
Y2FzZS4KICAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgtNSkpOwogICBFWFBFQ1RfRVEoMSwgRmFj
dG9yaWFsKC0xKSk7Ci0gIEVYUEVDVF9UUlVFKEZhY3RvcmlhbCgtMTApID4gMCk7CisgIEVYUEVD
VF9HVChGYWN0b3JpYWwoLTEwKSwgMCk7CiAKICAgLy8gPFRlY2huaWNhbERldGFpbHM+CiAgIC8v
CkBAIC0xMzksNiArMTM2LDcgQEAgVEVTVChJc1ByaW1lVGVzdCwgUG9zaXRpdmUpIHsKICAgRVhQ
RUNUX0ZBTFNFKElzUHJpbWUoNikpOwogICBFWFBFQ1RfVFJVRShJc1ByaW1lKDIzKSk7CiB9Cit9
ICAvLyBuYW1lc3BhY2UKIAogLy8gU3RlcCAzLiBDYWxsIFJVTl9BTExfVEVTVFMoKSBpbiBtYWlu
KCkuCiAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1w
bGUyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUyLmNjCmluZGV4
IDVmNzYzYjliZGY4ZDdhYmMxM2M2MWM1NjgzMzFkMjFiOWZhNDk3NWQuLmYzYjcyMmZjYWNmZWVl
N2Q4OTBiMmQxZjE5YmM5NzQxNWVjYTQ5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9z
YW1wbGVzL3NhbXBsZTIuY2MKQEAgLTI4LDggKzI4LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8v
IEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3Rpbmcg
ZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikK
IAogI2luY2x1ZGUgInNhbXBsZTIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2FtcGxlcy9zYW1wbGUyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVz
L3NhbXBsZTIuaAppbmRleCA1YjU3ZTYwODJmYTRmNmI3MjRiZmI1ODI2ODdiZmUwYTYzMTlmMmE3
Li41OGYzNjBmNDVjNzY1OGMwMTk3ZTNmZmM2NWVjOGIzNzVmYjMzNmIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTIuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTIuaApAQCAtMjgsOCArMjgsNiBAQAogLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2ds
ZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAo
WmhhbnlvbmcgV2FuKQogCiAjaWZuZGVmIEdURVNUX1NBTVBMRVNfU0FNUExFMl9IXwogI2RlZmlu
ZSBHVEVTVF9TQU1QTEVTX1NBTVBMRTJfSF8KQEAgLTQ0LDcgKzQyLDYgQEAgY2xhc3MgTXlTdHJp
bmcgewogICBjb25zdCBNeVN0cmluZyYgb3BlcmF0b3I9KGNvbnN0IE15U3RyaW5nJiByaHMpOwog
CiAgcHVibGljOgotCiAgIC8vIENsb25lcyBhIDAtdGVybWluYXRlZCBDIHN0cmluZywgYWxsb2Nh
dGluZyBtZW1vcnkgdXNpbmcgbmV3LgogICBzdGF0aWMgY29uc3QgY2hhciogQ2xvbmVDU3RyaW5n
KGNvbnN0IGNoYXIqIGFfY19zdHJpbmcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2MKaW5kZXggMzIyMzJkOThjMGJkMjU0ODIx
YzhmNjkxYTZiODU1ZjFmMTYxNmZiOC4uMDg0ODgyNjE5MmNjNjZmY2I3OTA2ZWYyYzBhYWVmNjZh
Zjg0M2Y5MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1w
bGUyX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2Ft
cGxlMl91bml0dGVzdC5jYwpAQCAtMjgsOSArMjgsNiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8g
QSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBm
cmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQot
CiAKIC8vIFRoaXMgc2FtcGxlIHNob3dzIGhvdyB0byB3cml0ZSBhIG1vcmUgY29tcGxleCB1bml0
IHRlc3QgZm9yIGEgY2xhc3MKIC8vIHRoYXQgaGFzIG11bHRpcGxlIG1lbWJlciBmdW5jdGlvbnMu
CkBAIC00MSw4ICszOCw4IEBACiAvLyBuZWVkZWQuCiAKICNpbmNsdWRlICJzYW1wbGUyLmgiCi0j
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCituYW1l
c3BhY2UgewogLy8gSW4gdGhpcyBleGFtcGxlLCB3ZSB0ZXN0IHRoZSBNeVN0cmluZyBjbGFzcyAo
YSBzaW1wbGUgc3RyaW5nKS4KIAogLy8gVGVzdHMgdGhlIGRlZmF1bHQgYyd0b3IuCkBAIC03OSw3
ICs3Niw3IEBAIGNvbnN0IGNoYXIga0hlbGxvU3RyaW5nW10gPSAiSGVsbG8sIHdvcmxkISI7CiAv
LyBUZXN0cyB0aGUgYyd0b3IgdGhhdCBhY2NlcHRzIGEgQyBzdHJpbmcuCiBURVNUKE15U3RyaW5n
LCBDb25zdHJ1Y3RvckZyb21DU3RyaW5nKSB7CiAgIGNvbnN0IE15U3RyaW5nIHMoa0hlbGxvU3Ry
aW5nKTsKLSAgRVhQRUNUX1RSVUUoc3RyY21wKHMuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSA9
PSAwKTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykp
OwogICBFWFBFQ1RfRVEoc2l6ZW9mKGtIZWxsb1N0cmluZykvc2l6ZW9mKGtIZWxsb1N0cmluZ1sw
XSkgLSAxLAogICAgICAgICAgICAgcy5MZW5ndGgoKSk7CiB9CkBAIC04OCw3ICs4NSw3IEBAIFRF
U1QoTXlTdHJpbmcsIENvbnN0cnVjdG9yRnJvbUNTdHJpbmcpIHsKIFRFU1QoTXlTdHJpbmcsIENv
cHlDb25zdHJ1Y3RvcikgewogICBjb25zdCBNeVN0cmluZyBzMShrSGVsbG9TdHJpbmcpOwogICBj
b25zdCBNeVN0cmluZyBzMiA9IHMxOwotICBFWFBFQ1RfVFJVRShzdHJjbXAoczIuY19zdHJpbmco
KSwga0hlbGxvU3RyaW5nKSA9PSAwKTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzMi5jX3N0cmlu
ZygpLCBrSGVsbG9TdHJpbmcpKTsKIH0KIAogLy8gVGVzdHMgdGhlIFNldCBtZXRob2QuCkBAIC05
NiwxNCArOTMsMTUgQEAgVEVTVChNeVN0cmluZywgU2V0KSB7CiAgIE15U3RyaW5nIHM7CiAKICAg
cy5TZXQoa0hlbGxvU3RyaW5nKTsKLSAgRVhQRUNUX1RSVUUoc3RyY21wKHMuY19zdHJpbmcoKSwg
a0hlbGxvU3RyaW5nKSA9PSAwKTsKKyAgRVhQRUNUX0VRKDAsIHN0cmNtcChzLmNfc3RyaW5nKCks
IGtIZWxsb1N0cmluZykpOwogCiAgIC8vIFNldCBzaG91bGQgd29yayB3aGVuIHRoZSBpbnB1dCBw
b2ludGVyIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUKICAgLy8gYWxyZWFkeSBpbiB0aGUgTXlTdHJp
bmcgb2JqZWN0LgogICBzLlNldChzLmNfc3RyaW5nKCkpOwotICBFWFBFQ1RfVFJVRShzdHJjbXAo
cy5jX3N0cmluZygpLCBrSGVsbG9TdHJpbmcpID09IDApOworICBFWFBFQ1RfRVEoMCwgc3RyY21w
KHMuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSk7CiAKICAgLy8gQ2FuIHdlIHNldCB0aGUgTXlT
dHJpbmcgdG8gTlVMTD8KICAgcy5TZXQoTlVMTCk7CiAgIEVYUEVDVF9TVFJFUShOVUxMLCBzLmNf
c3RyaW5nKCkpOwogfQorfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTMtaW5sLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zYW1wbGVzL3NhbXBsZTMtaW5sLmgKaW5kZXggNDYzNjlhMDc2ZDg1YzQxMTQyM2FjYWE5OGRk
NDU1ZTU1OWVkMzAwYS4uMWEyOWNlOTI5NmE2NGRmZTk3YTlmN2ZkYzZkYTg2Mzg3ZGMwYjc1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzLWlubC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlMy1pbmwuaApAQCAt
MjgsOCArMjgsNiBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1v
bnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0
aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCiAjaWZuZGVmIEdURVNUX1NBTVBM
RVNfU0FNUExFM19JTkxfSF8KICNkZWZpbmUgR1RFU1RfU0FNUExFU19TQU1QTEUzX0lOTF9IXwpA
QCAtNjAsNyArNTgsNyBAQCBjbGFzcyBRdWV1ZU5vZGUgewogIHByaXZhdGU6CiAgIC8vIENyZWF0
ZXMgYSBub2RlIHdpdGggYSBnaXZlbiBlbGVtZW50IHZhbHVlLiAgVGhlIG5leHQgcG9pbnRlciBp
cwogICAvLyBzZXQgdG8gTlVMTC4KLSAgUXVldWVOb2RlKGNvbnN0IEUmIGFuX2VsZW1lbnQpIDog
ZWxlbWVudF8oYW5fZWxlbWVudCksIG5leHRfKE5VTEwpIHt9CisgIGV4cGxpY2l0IFF1ZXVlTm9k
ZShjb25zdCBFJiBhbl9lbGVtZW50KSA6IGVsZW1lbnRfKGFuX2VsZW1lbnQpLCBuZXh0XyhOVUxM
KSB7fQogCiAgIC8vIFdlIGRpc2FibGUgdGhlIGRlZmF1bHQgYXNzaWdubWVudCBvcGVyYXRvciBh
bmQgY29weSBjJ3Rvci4KICAgY29uc3QgUXVldWVOb2RlJiBvcGVyYXRvciA9IChjb25zdCBRdWV1
ZU5vZGUmKTsKQEAgLTcyLDggKzcwLDcgQEAgY2xhc3MgUXVldWVOb2RlIHsKIAogdGVtcGxhdGUg
PHR5cGVuYW1lIEU+ICAvLyBFIGlzIHRoZSBlbGVtZW50IHR5cGUuCiBjbGFzcyBRdWV1ZSB7Ci1w
dWJsaWM6Ci0KKyBwdWJsaWM6CiAgIC8vIENyZWF0ZXMgYW4gZW1wdHkgcXVldWUuCiAgIFF1ZXVl
KCkgOiBoZWFkXyhOVUxMKSwgbGFzdF8oTlVMTCksIHNpemVfKDApIHt9CiAKQEAgLTE2OCw2ICsx
NjUsNiBAQCBwdWJsaWM6CiAgIC8vIFdlIGRpc2FsbG93IGNvcHlpbmcgYSBxdWV1ZS4KICAgUXVl
dWUoY29uc3QgUXVldWUmKTsKICAgY29uc3QgUXVldWUmIG9wZXJhdG9yID0gKGNvbnN0IFF1ZXVl
Jik7Ci0gfTsKK307CiAKICNlbmRpZiAgLy8gR1RFU1RfU0FNUExFU19TQU1QTEUzX0lOTF9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0
LmNjCmluZGV4IDM0YzFjYTg2NTZlYWI1NjQxODE1NjBkYmYxNDlkMGEyYWE5MmNjMWQuLmUwOTNj
MjU4ODU3M2Y5NjI3MGE1ZWQ0MTI0NWFjN2U4OWY0ODUxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MKQEAgLTI4LDkgKzI4
LDYgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGlu
ZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2Fu
QGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQogCiAvLyBJbiB0aGlzIGV4YW1wbGUsIHdlIHVz
ZSBhIG1vcmUgYWR2YW5jZWQgZmVhdHVyZSBvZiBHb29nbGUgVGVzdCBjYWxsZWQKIC8vIHRlc3Qg
Zml4dHVyZS4KQEAgLTY0LDE1ICs2MSwxNSBAQAogLy8gPC9UZWNobmljYWxEZXRhaWxzPgogCiAj
aW5jbHVkZSAic2FtcGxlMy1pbmwuaCIKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKK25hbWVzcGFjZSB7CiAvLyBUbyB1c2UgYSB0ZXN0IGZpeHR1
cmUsIGRlcml2ZSBhIGNsYXNzIGZyb20gdGVzdGluZzo6VGVzdC4KLWNsYXNzIFF1ZXVlVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIFF1ZXVlVGVzdFNtcGwzIDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgewogIHByb3RlY3RlZDogIC8vIFlvdSBzaG91bGQgbWFrZSB0aGUgbWVtYmVy
cyBwcm90ZWN0ZWQgcy50LiB0aGV5IGNhbiBiZQogICAgICAgICAgICAgIC8vIGFjY2Vzc2VkIGZy
b20gc3ViLWNsYXNzZXMuCiAKICAgLy8gdmlydHVhbCB2b2lkIFNldFVwKCkgd2lsbCBiZSBjYWxs
ZWQgYmVmb3JlIGVhY2ggdGVzdCBpcyBydW4uICBZb3UKLSAgLy8gc2hvdWxkIGRlZmluZSBpdCBp
ZiB5b3UgbmVlZCB0byBpbml0aWFsaXplIHRoZSB2YXJhaWJsZXMuCisgIC8vIHNob3VsZCBkZWZp
bmUgaXQgaWYgeW91IG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGUgdmFyaWFibGVzLgogICAvLyBPdGhl
cndpc2UsIHRoaXMgY2FuIGJlIHNraXBwZWQuCiAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKICAg
ICBxMV8uRW5xdWV1ZSgxKTsKQEAgLTEyMCwxMyArMTE3LDEzIEBAIGNsYXNzIFF1ZXVlVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIC8vIGluc3RlYWQgb2YgVEVTVC4KIAogLy8gVGVzdHMg
dGhlIGRlZmF1bHQgYyd0b3IuCi1URVNUX0YoUXVldWVUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3Ip
IHsKK1RFU1RfRihRdWV1ZVRlc3RTbXBsMywgRGVmYXVsdENvbnN0cnVjdG9yKSB7CiAgIC8vIFlv
dSBjYW4gYWNjZXNzIGRhdGEgaW4gdGhlIHRlc3QgZml4dHVyZSBoZXJlLgogICBFWFBFQ1RfRVEo
MHUsIHEwXy5TaXplKCkpOwogfQogCiAvLyBUZXN0cyBEZXF1ZXVlKCkuCi1URVNUX0YoUXVldWVU
ZXN0LCBEZXF1ZXVlKSB7CitURVNUX0YoUXVldWVUZXN0U21wbDMsIERlcXVldWUpIHsKICAgaW50
ICogbiA9IHEwXy5EZXF1ZXVlKCk7CiAgIEVYUEVDVF9UUlVFKG4gPT0gTlVMTCk7CiAKQEAgLTE0
NCw4ICsxNDEsOSBAQCBURVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVlKSB7CiB9CiAKIC8vIFRlc3Rz
IHRoZSBRdWV1ZTo6TWFwKCkgZnVuY3Rpb24uCi1URVNUX0YoUXVldWVUZXN0LCBNYXApIHsKK1RF
U1RfRihRdWV1ZVRlc3RTbXBsMywgTWFwKSB7CiAgIE1hcFRlc3RlcigmcTBfKTsKICAgTWFwVGVz
dGVyKCZxMV8pOwogICBNYXBUZXN0ZXIoJnEyXyk7CiB9Cit9ICAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNC5jYwppbmRleCBhZTQ0YmRhNmYxYmFk
NTNmZjNjNmYxNGUwMzAyYmQzYmIzMDljYmE3Li5iMGVlNjA5M2I0YTI1MGNmMTE5MzZjY2M4MjA4
YTYxMjI5MWI4MTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVz
L3NhbXBsZTQuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0
LmNjCkBAIC0yOCw4ICsyOCw2IEBACiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAvLyBBIHNhbXBsZSBwcm9n
cmFtIGRlbW9uc3RyYXRpbmcgdXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8v
Ci0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCiAKICNpbmNsdWRlIDxz
dGRpby5oPgogCkBAIC00MCw2ICszOCwxNiBAQCBpbnQgQ291bnRlcjo6SW5jcmVtZW50KCkgewog
ICByZXR1cm4gY291bnRlcl8rKzsKIH0KIAorLy8gUmV0dXJucyB0aGUgY3VycmVudCBjb3VudGVy
IHZhbHVlLCBhbmQgZGVjcmVtZW50cyBpdC4KKy8vIGNvdW50ZXIgY2FuIG5vdCBiZSBsZXNzIHRo
YW4gMCwgcmV0dXJuIDAgaW4gdGhpcyBjYXNlCitpbnQgQ291bnRlcjo6RGVjcmVtZW50KCkgewor
ICBpZiAoY291bnRlcl8gPT0gMCkgeworICAgIHJldHVybiBjb3VudGVyXzsKKyAgfSBlbHNlICB7
CisgICAgcmV0dXJuIGNvdW50ZXJfLS07CisgIH0KK30KKwogLy8gUHJpbnRzIHRoZSBjdXJyZW50
IGNvdW50ZXIgdmFsdWUgdG8gU1RET1VULgogdm9pZCBDb3VudGVyOjpQcmludCgpIGNvbnN0IHsK
ICAgcHJpbnRmKCIlZCIsIGNvdW50ZXJfKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxl
cy9zYW1wbGU0LmgKaW5kZXggY2Q2MGYwZGQyZDE4NjA3MzdiN2YwZWE0NWM1Njc1YTNhOGVhNzIx
Zi4uZTI1NmY0MDY0ZmU5MWE3ZjAxYTk0NTUwZDMyYzNiYjExYjBhNGZmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0LmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU0LmgKQEAgLTI4LDkgKzI4LDYgQEAKIC8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKIC8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29n
bGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20g
KFpoYW55b25nIFdhbikKLQogI2lmbmRlZiBHVEVTVF9TQU1QTEVTX1NBTVBMRTRfSF8KICNkZWZp
bmUgR1RFU1RfU0FNUExFU19TQU1QTEU0X0hfCiAKQEAgLTQ2LDYgKzQzLDkgQEAgY2xhc3MgQ291
bnRlciB7CiAgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgY291bnRlciB2YWx1ZSwgYW5kIGluY3Jl
bWVudHMgaXQuCiAgIGludCBJbmNyZW1lbnQoKTsKIAorICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50
IGNvdW50ZXIgdmFsdWUsIGFuZCBkZWNyZW1lbnRzIGl0LgorICBpbnQgRGVjcmVtZW50KCk7CisK
ICAgLy8gUHJpbnRzIHRoZSBjdXJyZW50IGNvdW50ZXIgdmFsdWUgdG8gU1RET1VULgogICB2b2lk
IFByaW50KCkgY29uc3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGU0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ft
cGxlcy9zYW1wbGU0X3VuaXR0ZXN0LmNjCmluZGV4IGI0ZmIzNzM2YWJiZmY4M2Y3OWFmNDQ3Y2E0
YmM2YjkxMDU4NjkzMmUuLmQ1MTQ0YzBkMDBmNWM3NjAwNjkzZWEwMjU4MDJjMGQ3ZDUyNTBkMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNF91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTRfdW5p
dHRlc3QuY2MKQEAgLTI2LDIwICsyNiwyOCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKICNpbmNsdWRlICJzYW1wbGU0
LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAorbmFtZXNwYWNlIHsKIC8vIFRlc3RzIHRo
ZSBJbmNyZW1lbnQoKSBtZXRob2QuCisKIFRFU1QoQ291bnRlciwgSW5jcmVtZW50KSB7CiAgIENv
dW50ZXIgYzsKIAorICAvLyBUZXN0IHRoYXQgY291bnRlciAwIHJldHVybnMgMAorICBFWFBFQ1Rf
RVEoMCwgYy5EZWNyZW1lbnQoKSk7CisKICAgLy8gRVhQRUNUX0VRKCkgZXZhbHVhdGVzIGl0cyBh
cmd1bWVudHMgZXhhY3RseSBvbmNlLCBzbyB0aGV5CiAgIC8vIGNhbiBoYXZlIHNpZGUgZWZmZWN0
cy4KIAogICBFWFBFQ1RfRVEoMCwgYy5JbmNyZW1lbnQoKSk7CiAgIEVYUEVDVF9FUSgxLCBjLklu
Y3JlbWVudCgpKTsKICAgRVhQRUNUX0VRKDIsIGMuSW5jcmVtZW50KCkpOworCisgIEVYUEVDVF9F
USgzLCBjLkRlY3JlbWVudCgpKTsKIH0KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MKaW5kZXggNDlk
YWU3YzY5ZmE3NmU4YTQ4NjA3NzA2YjRhMTYyYzY0MmYwYTA4NS4uZDhhODc4OGM2ZDBmZGEyMzg2
NDZmZWEyOTBlMDk3Y2M3NjI3Nzg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3Qvc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYwpAQCAtMjYsOCArMjYsNyBAQAogLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUaGlzIHNhbXBsZSB0ZWFjaGVz
IGhvdyB0byByZXVzZSBhIHRlc3QgZml4dHVyZSBpbiBtdWx0aXBsZSB0ZXN0CiAvLyBjYXNlcyBi
eSBkZXJpdmluZyBzdWItZml4dHVyZXMgZnJvbSBpdC4KQEAgLTQ2LDEwICs0NSwxMCBAQAogCiAj
aW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8dGltZS5oPgotI2luY2x1ZGUgInNhbXBsZTMt
aW5sLmgiCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgogI2luY2x1ZGUgInNhbXBsZTEuaCIKLQorI2luY2x1ZGUgInNhbXBsZTMtaW5sLmgiCituYW1l
c3BhY2UgewogLy8gSW4gdGhpcyBzYW1wbGUsIHdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgZXZlcnkg
dGVzdCBmaW5pc2hlcyB3aXRoaW4KIC8vIH41IHNlY29uZHMuICBJZiBhIHRlc3QgdGFrZXMgbG9u
Z2VyIHRvIHJ1biwgd2UgY29uc2lkZXIgaXQgYQogLy8gZmFpbHVyZS4KQEAgLTEwMSw3ICsxMDAs
NyBAQCBURVNUX0YoSW50ZWdlckZ1bmN0aW9uVGVzdCwgRmFjdG9yaWFsKSB7CiAgIC8vIFRlc3Rz
IGZhY3RvcmlhbCBvZiBuZWdhdGl2ZSBudW1iZXJzLgogICBFWFBFQ1RfRVEoMSwgRmFjdG9yaWFs
KC01KSk7CiAgIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoLTEpKTsKLSAgRVhQRUNUX1RSVUUoRmFj
dG9yaWFsKC0xMCkgPiAwKTsKKyAgRVhQRUNUX0dUKEZhY3RvcmlhbCgtMTApLCAwKTsKIAogICAv
LyBUZXN0cyBmYWN0b3JpYWwgb2YgMC4KICAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgwKSk7CkBA
IC0xMTcsMjAgKzExNiwyMCBAQCBURVNUX0YoSW50ZWdlckZ1bmN0aW9uVGVzdCwgRmFjdG9yaWFs
KSB7CiAvLyBUZXN0cyBJc1ByaW1lKCkKIFRFU1RfRihJbnRlZ2VyRnVuY3Rpb25UZXN0LCBJc1By
aW1lKSB7CiAgIC8vIFRlc3RzIG5lZ2F0aXZlIGlucHV0LgotICBFWFBFQ1RfVFJVRSghSXNQcmlt
ZSgtMSkpOwotICBFWFBFQ1RfVFJVRSghSXNQcmltZSgtMikpOwotICBFWFBFQ1RfVFJVRSghSXNQ
cmltZShJTlRfTUlOKSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKC0xKSk7CisgIEVYUEVDVF9G
QUxTRShJc1ByaW1lKC0yKSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKElOVF9NSU4pKTsKIAog
ICAvLyBUZXN0cyBzb21lIHRyaXZpYWwgY2FzZXMuCi0gIEVYUEVDVF9UUlVFKCFJc1ByaW1lKDAp
KTsKLSAgRVhQRUNUX1RSVUUoIUlzUHJpbWUoMSkpOworICBFWFBFQ1RfRkFMU0UoSXNQcmltZSgw
KSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1lKDEpKTsKICAgRVhQRUNUX1RSVUUoSXNQcmltZSgy
KSk7CiAgIEVYUEVDVF9UUlVFKElzUHJpbWUoMykpOwogCiAgIC8vIFRlc3RzIHBvc2l0aXZlIGlu
cHV0LgotICBFWFBFQ1RfVFJVRSghSXNQcmltZSg0KSk7CisgIEVYUEVDVF9GQUxTRShJc1ByaW1l
KDQpKTsKICAgRVhQRUNUX1RSVUUoSXNQcmltZSg1KSk7Ci0gIEVYUEVDVF9UUlVFKCFJc1ByaW1l
KDYpKTsKKyAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoNikpOwogICBFWFBFQ1RfVFJVRShJc1ByaW1l
KDIzKSk7CiB9CiAKQEAgLTE5MSw3ICsxOTAsNyBAQCBURVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVl
KSB7CiAgIEVYUEVDVF9FUSgxdSwgcTJfLlNpemUoKSk7CiAgIGRlbGV0ZSBuOwogfQotCit9ICAv
LyBuYW1lc3BhY2UKIC8vIElmIG5lY2Vzc2FyeSwgeW91IGNhbiBkZXJpdmUgZnVydGhlciB0ZXN0
IGZpeHR1cmVzIGZyb20gYSBkZXJpdmVkCiAvLyBmaXh0dXJlIGl0c2VsZi4gIEZvciBleGFtcGxl
LCB5b3UgY2FuIGRlcml2ZSBhbm90aGVyIGZpeHR1cmUgZnJvbQogLy8gUXVldWVUZXN0LiAgR29v
Z2xlIFRlc3QgaW1wb3NlcyBubyBsaW1pdCBvbiBob3cgZGVlcCB0aGUgaGllcmFyY2h5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2MK
aW5kZXggZGQwZGYzMWYwYmI3Y2JmMjYxNjA3MzQyZTg2NDA0ZDc1YTg1MzQzZS4uZGRmMmYxYzEz
YmJlMDM0ODEzNDQ5MzZiMGE3MmRiYjJhMGIyODQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYwpAQCAtMjYsOCArMjYsNyBA
QAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8v
IEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUaGlzIHNhbXBs
ZSBzaG93cyBob3cgdG8gdGVzdCBjb21tb24gcHJvcGVydGllcyBvZiBtdWx0aXBsZQogLy8gaW1w
bGVtZW50YXRpb25zIG9mIHRoZSBzYW1lIGludGVyZmFjZSAoYWthIGludGVyZmFjZSB0ZXN0cyku
CkBAIC0zNSw4ICszNCw4IEBACiAvLyBUaGUgaW50ZXJmYWNlIGFuZCBpdHMgaW1wbGVtZW50YXRp
b25zIGFyZSBpbiB0aGlzIGhlYWRlci4KICNpbmNsdWRlICJwcmltZV90YWJsZXMuaCIKIAotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorbmFtZXNw
YWNlIHsKIC8vIEZpcnN0LCB3ZSBkZWZpbmUgc29tZSBmYWN0b3J5IGZ1bmN0aW9ucyBmb3IgY3Jl
YXRpbmcgaW5zdGFuY2VzIG9mCiAvLyB0aGUgaW1wbGVtZW50YXRpb25zLiAgWW91IG1heSBiZSBh
YmxlIHRvIHNraXAgdGhpcyBzdGVwIGlmIGFsbCB5b3VyCiAvLyBpbXBsZW1lbnRhdGlvbnMgY2Fu
IGJlIGNvbnN0cnVjdGVkIHRoZSBzYW1lIHdheS4KQEAgLTIyMiwzICsyMjEsNCBAQCBJTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChPblRoZUZseUFuZFByZUNhbGN1bGF0ZWQsICAgIC8vIElu
c3RhbmNlIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1lVGFibGVJbXBs
ZW1lbnRhdGlvbnMpOyAgLy8gVHlwZSBsaXN0CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVE
X1RFU1RfUAorfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MKaW5kZXggZjQ1NTI4MjdlZDliODMwNmNkZDMx
OWFhNTdmM2VkMDY3NjJiNGY1Zi4uYzFhZThiZGVkYzlhZmM5YTExZDBkOTIwMjFlZjc2NzdkMzk4
YTljOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU3
X3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxl
N191bml0dGVzdC5jYwpAQCAtMjYsOCArMjYsNyBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAo
VmxhZCBMb3NldikKKwogCiAvLyBUaGlzIHNhbXBsZSBzaG93cyBob3cgdG8gdGVzdCBjb21tb24g
cHJvcGVydGllcyBvZiBtdWx0aXBsZQogLy8gaW1wbGVtZW50YXRpb25zIG9mIGFuIGludGVyZmFj
ZSAoYWthIGludGVyZmFjZSB0ZXN0cykgdXNpbmcKQEAgLTM4LDE5ICszNywxNyBAQAogLy8gVGhl
IGludGVyZmFjZSBhbmQgaXRzIGltcGxlbWVudGF0aW9ucyBhcmUgaW4gdGhpcyBoZWFkZXIuCiAj
aW5jbHVkZSAicHJpbWVfdGFibGVzLmgiCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0j
aWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorbmFtZXNw
YWNlIHsKIAogdXNpbmcgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtOwogdXNpbmcgOjp0ZXN0aW5n
OjpWYWx1ZXM7CiAKLS8vIEFzIGEgZ2VuZXJhbCBydWxlLCB0ZXN0ZWQgb2JqZWN0cyBzaG91bGQg
bm90IGJlIHJldXNlZCBiZXR3ZWVuIHRlc3RzLgotLy8gQWxzbywgdGhlaXIgY29uc3RydWN0b3Jz
IGFuZCBkZXN0cnVjdG9ycyBvZiB0ZXN0ZWQgb2JqZWN0cyBjYW4gaGF2ZQotLy8gc2lkZSBlZmZl
Y3RzLiBUaHVzIHlvdSBzaG91bGQgY3JlYXRlIGFuZCBkZXN0cm95IHRoZW0gZm9yIGVhY2ggdGVz
dC4KLS8vIEluIHRoaXMgc2FtcGxlIHdlIHdpbGwgZGVmaW5lIGEgc2ltcGxlIGZhY3RvcnkgZnVu
Y3Rpb24gZm9yIFByaW1lVGFibGUKLS8vIG9iamVjdHMuIFdlIHdpbGwgaW5zdGFudGlhdGUgb2Jq
ZWN0cyBpbiB0ZXN0J3MgU2V0VXAoKSBtZXRob2QgYW5kCi0vLyBkZWxldGUgdGhlbSBpbiBUZWFy
RG93bigpIG1ldGhvZC4KKy8vIEFzIGEgZ2VuZXJhbCBydWxlLCB0byBwcmV2ZW50IGEgdGVzdCBm
cm9tIGFmZmVjdGluZyB0aGUgdGVzdHMgdGhhdCBjb21lCisvLyBhZnRlciBpdCwgeW91IHNob3Vs
ZCBjcmVhdGUgYW5kIGRlc3Ryb3kgdGhlIHRlc3RlZCBvYmplY3RzIGZvciBlYWNoIHRlc3QKKy8v
IGluc3RlYWQgb2YgcmV1c2luZyB0aGVtLiAgSW4gdGhpcyBzYW1wbGUgd2Ugd2lsbCBkZWZpbmUg
YSBzaW1wbGUgZmFjdG9yeQorLy8gZnVuY3Rpb24gZm9yIFByaW1lVGFibGUgb2JqZWN0cy4gIFdl
IHdpbGwgaW5zdGFudGlhdGUgb2JqZWN0cyBpbiB0ZXN0J3MKKy8vIFNldFVwKCkgbWV0aG9kIGFu
ZCBkZWxldGUgdGhlbSBpbiBUZWFyRG93bigpIG1ldGhvZC4KIHR5cGVkZWYgUHJpbWVUYWJsZSog
Q3JlYXRlUHJpbWVUYWJsZUZ1bmMoKTsKIAogUHJpbWVUYWJsZSogQ3JlYXRlT25UaGVGbHlQcmlt
ZVRhYmxlKCkgewpAQCAtNjIsMTQgKzU5LDEzIEBAIFByaW1lVGFibGUqIENyZWF0ZVByZUNhbGN1
bGF0ZWRQcmltZVRhYmxlKCkgewogICByZXR1cm4gbmV3IFByZUNhbGN1bGF0ZWRQcmltZVRhYmxl
KG1heF9wcmVjYWxjdWxhdGVkKTsKIH0KIAotLy8gSW5zaWRlIHRoZSB0ZXN0IGJvZHksIGZpeHR1
cmUgY29uc3RydWN0b3IsIFNldFVwKCksIGFuZCBUZWFyRG93bigpCi0vLyB5b3UgY2FuIHJlZmVy
IHRvIHRoZSB0ZXN0IHBhcmFtZXRlciBieSBHZXRQYXJhbSgpLgotLy8gSW4gdGhpcyBjYXNlLCB0
aGUgdGVzdCBwYXJhbWV0ZXIgaXMgYSBQcmltZVRhYmxlRmFjdG9yeSBpbnRlcmZhY2UgcG9pbnRl
cgotLy8gd2hpY2ggd2UgdXNlIGluIGZpeHR1cmUncyBTZXRVcCgpIHRvIGNyZWF0ZSBhbmQgc3Rv
cmUgYW4gaW5zdGFuY2Ugb2YKLS8vIFByaW1lVGFibGUuCi1jbGFzcyBQcmltZVRhYmxlVGVzdCA6
IHB1YmxpYyBUZXN0V2l0aFBhcmFtPENyZWF0ZVByaW1lVGFibGVGdW5jKj4geworLy8gSW5zaWRl
IHRoZSB0ZXN0IGJvZHksIGZpeHR1cmUgY29uc3RydWN0b3IsIFNldFVwKCksIGFuZCBUZWFyRG93
bigpIHlvdQorLy8gY2FuIHJlZmVyIHRvIHRoZSB0ZXN0IHBhcmFtZXRlciBieSBHZXRQYXJhbSgp
LiAgSW4gdGhpcyBjYXNlLCB0aGUgdGVzdAorLy8gcGFyYW1ldGVyIGlzIGEgZmFjdG9yeSBmdW5j
dGlvbiB3aGljaCB3ZSBjYWxsIGluIGZpeHR1cmUncyBTZXRVcCgpIHRvCisvLyBjcmVhdGUgYW5k
IHN0b3JlIGFuIGluc3RhbmNlIG9mIFByaW1lVGFibGUuCitjbGFzcyBQcmltZVRhYmxlVGVzdFNt
cGw3IDogcHVibGljIFRlc3RXaXRoUGFyYW08Q3JlYXRlUHJpbWVUYWJsZUZ1bmMqPiB7CiAgcHVi
bGljOgotICB2aXJ0dWFsIH5QcmltZVRhYmxlVGVzdCgpIHsgZGVsZXRlIHRhYmxlXzsgfQorICB2
aXJ0dWFsIH5QcmltZVRhYmxlVGVzdFNtcGw3KCkgeyBkZWxldGUgdGFibGVfOyB9CiAgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsgdGFibGVfID0gKCpHZXRQYXJhbSgpKSgpOyB9CiAgIHZpcnR1YWwg
dm9pZCBUZWFyRG93bigpIHsKICAgICBkZWxldGUgdGFibGVfOwpAQCAtODAsNyArNzYsNyBAQCBj
bGFzcyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPENyZWF0ZVByaW1lVGFi
bGVGdW5jKj4gewogICBQcmltZVRhYmxlKiB0YWJsZV87CiB9OwogCi1URVNUX1AoUHJpbWVUYWJs
ZVRlc3QsIFJldHVybnNGYWxzZUZvck5vblByaW1lcykgeworVEVTVF9QKFByaW1lVGFibGVUZXN0
U21wbDcsIFJldHVybnNGYWxzZUZvck5vblByaW1lcykgewogICBFWFBFQ1RfRkFMU0UodGFibGVf
LT5Jc1ByaW1lKC01KSk7CiAgIEVYUEVDVF9GQUxTRSh0YWJsZV8tPklzUHJpbWUoMCkpOwogICBF
WFBFQ1RfRkFMU0UodGFibGVfLT5Jc1ByaW1lKDEpKTsKQEAgLTg5LDcgKzg1LDcgQEAgVEVTVF9Q
KFByaW1lVGFibGVUZXN0LCBSZXR1cm5zRmFsc2VGb3JOb25QcmltZXMpIHsKICAgRVhQRUNUX0ZB
TFNFKHRhYmxlXy0+SXNQcmltZSgxMDApKTsKIH0KIAotVEVTVF9QKFByaW1lVGFibGVUZXN0LCBS
ZXR1cm5zVHJ1ZUZvclByaW1lcykgeworVEVTVF9QKFByaW1lVGFibGVUZXN0U21wbDcsIFJldHVy
bnNUcnVlRm9yUHJpbWVzKSB7CiAgIEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSgyKSk7CiAg
IEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSgzKSk7CiAgIEVYUEVDVF9UUlVFKHRhYmxlXy0+
SXNQcmltZSg1KSk7CkBAIC05OCw3ICs5NCw3IEBAIFRFU1RfUChQcmltZVRhYmxlVGVzdCwgUmV0
dXJuc1RydWVGb3JQcmltZXMpIHsKICAgRVhQRUNUX1RSVUUodGFibGVfLT5Jc1ByaW1lKDEzMSkp
OwogfQogCi1URVNUX1AoUHJpbWVUYWJsZVRlc3QsIENhbkdldE5leHRQcmltZSkgeworVEVTVF9Q
KFByaW1lVGFibGVUZXN0U21wbDcsIENhbkdldE5leHRQcmltZSkgewogICBFWFBFQ1RfRVEoMiwg
dGFibGVfLT5HZXROZXh0UHJpbWUoMCkpOwogICBFWFBFQ1RfRVEoMywgdGFibGVfLT5HZXROZXh0
UHJpbWUoMikpOwogICBFWFBFQ1RfRVEoNSwgdGFibGVfLT5HZXROZXh0UHJpbWUoMykpOwpAQCAt
MTE0LDE5ICsxMTAsOCBAQCBURVNUX1AoUHJpbWVUYWJsZVRlc3QsIENhbkdldE5leHRQcmltZSkg
ewogLy8KIC8vIEhlcmUsIHdlIGluc3RhbnRpYXRlIG91ciB0ZXN0cyB3aXRoIGEgbGlzdCBvZiB0
d28gUHJpbWVUYWJsZSBvYmplY3QKIC8vIGZhY3RvcnkgZnVuY3Rpb25zOgotSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoCi0gICAgT25UaGVGbHlBbmRQcmVDYWxjdWxhdGVkLAotICAgIFByaW1lVGFi
bGVUZXN0LAotICAgIFZhbHVlcygmQ3JlYXRlT25UaGVGbHlQcmltZVRhYmxlLCAmQ3JlYXRlUHJl
Q2FsY3VsYXRlZFByaW1lVGFibGU8MTAwMD4pKTsKLQotI2Vsc2UKLQotLy8gR29vZ2xlIFRlc3Qg
bWF5IG5vdCBzdXBwb3J0IHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgd2l0aCBzb21lCi0vLyBj
b21waWxlcnMuIElmIHdlIHVzZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBjb21waWxlIG91
dCBhbGwKLS8vIGNvZGUgcmVmZXJyaW5nIHRvIHRoZSBndGVzdF9tYWluIGxpYnJhcnksIE1TVkMg
bGlua2VyIHdpbGwgbm90IGxpbmsKLS8vIHRoYXQgbGlicmFyeSBhdCBhbGwgYW5kIGNvbnNlcXVl
bnRseSBjb21wbGFpbiBhYm91dCBtaXNzaW5nIGVudHJ5Ci0vLyBwb2ludCBkZWZpbmVkIGluIHRo
YXQgbGlicmFyeSAoZmF0YWwgZXJyb3IgTE5LMTU2MTogZW50cnkgcG9pbnQKLS8vIG11c3QgYmUg
ZGVmaW5lZCkuIFRoaXMgZHVtbXkgdGVzdCBrZWVwcyBndGVzdF9tYWluIGxpbmtlZCBpbi4KLVRF
U1QoRHVtbXlUZXN0LCBWYWx1ZVBhcmFtZXRlcml6ZWRUZXN0c0FyZU5vdFN1cHBvcnRlZE9uVGhp
c1BsYXRmb3JtKSB7fQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoT25UaGVGbHlBbmRQcmVDYWxj
dWxhdGVkLCBQcmltZVRhYmxlVGVzdFNtcGw3LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFs
dWVzKCZDcmVhdGVPblRoZUZseVByaW1lVGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJkNyZWF0ZVByZUNhbGN1bGF0ZWRQcmltZVRhYmxlPDEwMDA+KSk7CiAKLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjCmluZGV4IGNjZjYx
ZDkyYjg1YzMxMmY3ZjJlYzJmNmQ4YTY3M2RmZjRiMDJkNjYuLmNlNzVjZjAzMDg3MGMzNzZkZmVj
NjAzMWRiMjQ3MTEwODcwMzgzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2MKQEAgLTI2LDggKzI2LDcgQEAKIC8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZs
YWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCisKIAogLy8gVGhpcyBzYW1wbGUgc2hvd3MgaG93
IHRvIHRlc3QgY29kZSByZWx5aW5nIG9uIHNvbWUgZ2xvYmFsIGZsYWcgdmFyaWFibGVzLgogLy8g
Q29tYmluZSgpIGhlbHBzIHdpdGggZ2VuZXJhdGluZyBhbGwgcG9zc2libGUgY29tYmluYXRpb25z
IG9mIHN1Y2ggZmxhZ3MsCkBAIC0zNiw4ICszNSw4IEBACiAvLyBVc2UgY2xhc3MgZGVmaW5pdGlv
bnMgdG8gdGVzdCBmcm9tIHRoaXMgaGVhZGVyLgogI2luY2x1ZGUgInByaW1lX3RhYmxlcy5oIgog
Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCitu
YW1lc3BhY2UgewogI2lmIEdURVNUX0hBU19DT01CSU5FCiAKIC8vIFN1cHBvc2Ugd2Ugd2FudCB0
byBpbnRyb2R1Y2UgYSBuZXcsIGltcHJvdmVkIGltcGxlbWVudGF0aW9uIG9mIFByaW1lVGFibGUK
QEAgLTkwLDcgKzg5LDcgQEAgdXNpbmcgOjp0ZXN0aW5nOjpDb21iaW5lOwogLy8gUHJlQ2FsY3Vs
YXRlZFByaW1lVGFibGUgZGlzYWJsZWQuIFdlIGRvIHRoaXMgYnkgZGVmaW5pbmcgZml4dHVyZSB3
aGljaCB3aWxsCiAvLyBhY2NlcHQgZGlmZmVyZW50IGNvbWJpbmF0aW9ucyBvZiBwYXJhbWV0ZXJz
IGZvciBpbnN0YW50aWF0aW5nIGEKIC8vIEh5YnJpZFByaW1lVGFibGUgaW5zdGFuY2UuCi1jbGFz
cyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPCA6OnN0ZDo6dHIxOjp0dXBs
ZTxib29sLCBpbnQ+ID4geworY2xhc3MgUHJpbWVUYWJsZVRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQ
YXJhbTwgOjp0ZXN0aW5nOjp0dXBsZTxib29sLCBpbnQ+ID4gewogIHByb3RlY3RlZDoKICAgdmly
dHVhbCB2b2lkIFNldFVwKCkgewogICAgIC8vIFRoaXMgY2FuIGJlIHdyaXR0ZW4gYXMKQEAgLTEw
MSw4ICsxMDAsOCBAQCBjbGFzcyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFt
PCA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQ+ID4gewogICAgIC8vCiAgICAgLy8gb25jZSB0
aGUgR29vZ2xlIEMrKyBTdHlsZSBHdWlkZSBhbGxvd3MgdXNlIG9mIDo6c3RkOjp0cjE6OnRpZS4K
ICAgICAvLwotICAgIGJvb2wgZm9yY2Vfb25fdGhlX2ZseSA9IDo6c3RkOjp0cjE6OmdldDwwPihH
ZXRQYXJhbSgpKTsKLSAgICBpbnQgbWF4X3ByZWNhbGN1bGF0ZWQgPSA6OnN0ZDo6dHIxOjpnZXQ8
MT4oR2V0UGFyYW0oKSk7CisgICAgYm9vbCBmb3JjZV9vbl90aGVfZmx5ID0gOjp0ZXN0aW5nOjpn
ZXQ8MD4oR2V0UGFyYW0oKSk7CisgICAgaW50IG1heF9wcmVjYWxjdWxhdGVkID0gOjp0ZXN0aW5n
OjpnZXQ8MT4oR2V0UGFyYW0oKSk7CiAgICAgdGFibGVfID0gbmV3IEh5YnJpZFByaW1lVGFibGUo
Zm9yY2Vfb25fdGhlX2ZseSwgbWF4X3ByZWNhbGN1bGF0ZWQpOwogICB9CiAgIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsKQEAgLTE3MSwzICsxNzAsNCBAQCBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UChNZWFuaW5nZnVsVGVzdFBhcmFtZXRlcnMsCiBURVNUKER1bW15VGVzdCwgQ29tYmluZUlzTm90
U3VwcG9ydGVkT25UaGlzUGxhdGZvcm0pIHt9CiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJ
TkUKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2Ft
cGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjCmluZGV4IGQ4MjhlZjRkODZiNzQ2YjI1Njk3YmRkNDZk
MjEwMGE0NDYxNDJkMzEuLjUzZjlhZjViYTFkZmMyNjk1NjYwNzhmMjM2ZjY5NTU5OWRjNTJhZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NhbXBsZXMvc2FtcGxlOV91bml0
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zYW1wbGVzL3NhbXBsZTlfdW5p
dHRlc3QuY2MKQEAgLTI1LDggKzI1LDcgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQg
TG9zZXYpCisKIAogLy8gVGhpcyBzYW1wbGUgc2hvd3MgaG93IHRvIHVzZSBHb29nbGUgVGVzdCBs
aXN0ZW5lciBBUEkgdG8gaW1wbGVtZW50CiAvLyBhbiBhbHRlcm5hdGl2ZSBjb25zb2xlIG91dHB1
dCBhbmQgaG93IHRvIHVzZSB0aGUgVW5pdFRlc3QgcmVmbGVjdGlvbiBBUEkKQEAgLTM0LDcgKzMz
LDcgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIHVzaW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZl
bnRMaXN0ZW5lcjsKIHVzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7CkBAIC00NCw5ICs0
Myw3IEBAIHVzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzOwogdXNpbmcgOjp0ZXN0
aW5nOjpUZXN0SW5mbzsKIHVzaW5nIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ7CiB1c2luZyA6
OnRlc3Rpbmc6OlVuaXRUZXN0OwotCiBuYW1lc3BhY2UgewotCiAvLyBQcm92aWRlcyBhbHRlcm5h
dGl2ZSBvdXRwdXQgbW9kZSB3aGljaCBwcm9kdWNlcyBtaW5pbWFsIGFtb3VudCBvZgogLy8gaW5m
b3JtYXRpb24gYWJvdXQgdGVzdHMuCiBjbGFzcyBUZXJzZVByaW50ZXIgOiBwdWJsaWMgRW1wdHlU
ZXN0RXZlbnRMaXN0ZW5lciB7CkBAIC02OSw3ICs2Niw3IEBAIGNsYXNzIFRlcnNlUHJpbnRlciA6
IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKICAgICBmZmx1c2goc3Rkb3V0KTsKICAg
fQogCi0gIC8vIENhbGxlZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRVNTKCku
CisgIC8vIENhbGxlZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRUVEKCkgaW52
b2NhdGlvbi4KICAgdmlydHVhbCB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRS
ZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKICAgICBmcHJpbnRmKHN0ZG91dCwKICAgICAgICAg
ICAgICIlcyBpbiAlczolZFxuJXNcbiIsCkBAIC0xMDIsNyArOTksNiBAQCBURVNUKEN1c3RvbU91
dHB1dFRlc3QsIEZhaWxzKSB7CiAgIEVYUEVDVF9FUSgxLCAyKQogICAgICAgPDwgIlRoaXMgdGVz
dCBmYWlscyBpbiBvcmRlciB0byBkZW1vbnN0cmF0ZSBhbHRlcm5hdGl2ZSBmYWlsdXJlIG1lc3Nh
Z2VzIjsKIH0KLQogfSAgLy8gbmFtZXNwYWNlCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoq
YXJndikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9jb21t
b24ucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2NvbW1vbi5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zYzAzNDdhNzViZGZmMzE4ODA5Nzc0NTAxNWE1ODAzNzY0YWQ3NDFjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9jb21tb24ucHkKQEAgLTAs
MCArMSw4MyBAQAorIyBDb3B5cmlnaHQgMjAxMyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiU2hhcmVkIHV0aWxpdGllcyBmb3Igd3JpdGlu
ZyBzY3JpcHRzIGZvciBHb29nbGUgVGVzdC9Nb2NrLiIiIgorCitfX2F1dGhvcl9fID0gJ3dhbkBn
b29nbGUuY29tIChaaGFueW9uZyBXYW4pJworCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCisKKwor
IyBNYXRjaGVzIHRoZSBsaW5lIGZyb20gJ3N2biBpbmZvIC4nIG91dHB1dCB0aGF0IGRlc2NyaWJl
cyB3aGF0IFNWTgorIyBwYXRoIHRoZSBjdXJyZW50IGxvY2FsIGRpcmVjdG9yeSBjb3JyZXNwb25k
cyB0by4gIEZvciBleGFtcGxlLCBpbgorIyBhIGdvb2dsZXRlc3QgU1ZOIHdvcmtzcGFjZSdzIHRy
dW5rL3Rlc3QgZGlyZWN0b3J5LCB0aGUgb3V0cHV0IHdpbGwgYmU6CisjCisjIFVSTDogaHR0cHM6
Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay90ZXN0CitfU1ZOX0lORk9fVVJM
X1JFID0gcmUuY29tcGlsZShyJ15VUkw6IGh0dHBzOi8vKFx3KylcLmdvb2dsZWNvZGVcLmNvbS9z
dm4oLiopJykKKworCitkZWYgR2V0Q29tbWFuZE91dHB1dChjb21tYW5kKToKKyAgIiIiUnVucyB0
aGUgc2hlbGwgY29tbWFuZCBhbmQgcmV0dXJucyBpdHMgc3Rkb3V0IGFzIGEgbGlzdCBvZiBsaW5l
cy4iIiIKKworICBmID0gb3MucG9wZW4oY29tbWFuZCwgJ3InKQorICBsaW5lcyA9IFtsaW5lLnN0
cmlwKCkgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKV0KKyAgZi5jbG9zZSgpCisgIHJldHVybiBs
aW5lcworCisKK2RlZiBHZXRTdm5JbmZvKCk6CisgICIiIlJldHVybnMgdGhlIHByb2plY3QgbmFt
ZSBhbmQgdGhlIGN1cnJlbnQgU1ZOIHdvcmtzcGFjZSdzIHJvb3QgcGF0aC4iIiIKKworICBmb3Ig
bGluZSBpbiBHZXRDb21tYW5kT3V0cHV0KCdzdm4gaW5mbyAuJyk6CisgICAgbSA9IF9TVk5fSU5G
T19VUkxfUkUubWF0Y2gobGluZSkKKyAgICBpZiBtOgorICAgICAgcHJvamVjdCA9IG0uZ3JvdXAo
MSkgICMgZ29vZ2xldGVzdCBvciBnb29nbGVtb2NrCisgICAgICByZWxfcGF0aCA9IG0uZ3JvdXAo
MikKKyAgICAgIHJvb3QgPSBvcy5wYXRoLnJlYWxwYXRoKHJlbF9wYXRoLmNvdW50KCcvJykgKiAn
Li4vJykKKyAgICAgIHJldHVybiBwcm9qZWN0LCByb290CisKKyAgcmV0dXJuIE5vbmUsIE5vbmUK
KworCitkZWYgR2V0U3ZuVHJ1bmsoKToKKyAgIiIiUmV0dXJucyB0aGUgY3VycmVudCBTVk4gd29y
a3NwYWNlJ3MgdHJ1bmsgcm9vdCBwYXRoLiIiIgorCisgIF8sIHJvb3QgPSBHZXRTdm5JbmZvKCkK
KyAgcmV0dXJuIHJvb3QgKyAnL3RydW5rJyBpZiByb290IGVsc2UgTm9uZQorCisKK2RlZiBJc0lu
R1Rlc3RTdm4oKToKKyAgcHJvamVjdCwgXyA9IEdldFN2bkluZm8oKQorICByZXR1cm4gcHJvamVj
dCA9PSAnZ29vZ2xldGVzdCcKKworCitkZWYgSXNJbkdNb2NrU3ZuKCk6CisgIHByb2plY3QsIF8g
PSBHZXRTdm5JbmZvKCkKKyAgcmV0dXJuIHByb2plY3QgPT0gJ2dvb2dsZW1vY2snCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMucHkg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMucHkKaW5k
ZXggMTQ4NDQ0Y2E3MTFiMWVkYWFhZmVhOGQ3ODI2ZDNjZmQ0YzAxZGUwYi4uZDBkZDQ2NGZlOGI1
OWM1NDEwYTNkMWI4NWRiNDc5NWJiZDAzMWQ4OSAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc2NyaXB0cy9mdXNlX2d0ZXN0X2ZpbGVzLnB5CisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3NjcmlwdHMvZnVzZV9ndGVzdF9maWxlcy5weQpAQCAtNTIsNyArNTIsNyBAQCBF
WEFNUExFUwogVGhpcyB0b29sIGlzIGV4cGVyaW1lbnRhbC4gIEluIHBhcnRpY3VsYXIsIGl0IGFz
c3VtZXMgdGhhdCB0aGVyZSBpcyBubwogY29uZGl0aW9uYWwgaW5jbHVzaW9uIG9mIEdvb2dsZSBU
ZXN0IGhlYWRlcnMuICBQbGVhc2UgcmVwb3J0IGFueQogcHJvYmxlbXMgdG8gZ29vZ2xldGVzdGZy
YW1ld29ya0Bnb29nbGVncm91cHMuY29tLiAgWW91IGNhbiByZWFkCi1odHRwOi8vY29kZS5nb29n
bGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL0dvb2dsZVRlc3RBZHZhbmNlZEd1aWRlIGZvcgoraHR0
cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2dsZXRlc3Qv
ZG9jcy9hZHZhbmNlZC5tZCBmb3IKIG1vcmUgaW5mb3JtYXRpb24uCiAiIiIKIApAQCAtNjAsMTUg
KzYwLDE4IEBAIF9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCiAK
IGltcG9ydCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgc2V0cwordHJ5OgorICBmcm9tIHNldHMgaW1w
b3J0IFNldCBhcyBzZXQgICMgRm9yIFB5dGhvbiAyLjMgY29tcGF0aWJpbGl0eQorZXhjZXB0IElt
cG9ydEVycm9yOgorICBwYXNzCiBpbXBvcnQgc3lzCiAKICMgV2UgYXNzdW1lIHRoYXQgdGhpcyBm
aWxlIGlzIGluIHRoZSBzY3JpcHRzLyBkaXJlY3RvcnkgaW4gdGhlIEdvb2dsZQogIyBUZXN0IHJv
b3QgZGlyZWN0b3J5LgogREVGQVVMVF9HVEVTVF9ST09UX0RJUiA9IG9zLnBhdGguam9pbihvcy5w
YXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nKQogCi0jIFJlZ2V4IGZvciBtYXRjaGluZyAnI2lu
Y2x1ZGUgPGd0ZXN0Ly4uLj4nLgotSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VYID0gcmUuY29tcGls
ZShyJ15ccyojXHMqaW5jbHVkZVxzKjwoZ3Rlc3QvLispPicpCisjIFJlZ2V4IGZvciBtYXRjaGlu
ZyAnI2luY2x1ZGUgImd0ZXN0Ly4uLiInLgorSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VYID0gcmUu
Y29tcGlsZShyJ15ccyojXHMqaW5jbHVkZVxzKiIoZ3Rlc3QvLispIicpCiAKICMgUmVnZXggZm9y
IG1hdGNoaW5nICcjaW5jbHVkZSAic3JjLy4uLiInLgogSU5DTFVERV9TUkNfRklMRV9SRUdFWCA9
IHJlLmNvbXBpbGUocideXHMqI1xzKmluY2x1ZGVccyoiKHNyYy8uKykiJykKQEAgLTkwLDEwICs5
MywxMCBAQCBkZWYgVmVyaWZ5RmlsZUV4aXN0cyhkaXJlY3RvcnksIHJlbGF0aXZlX3BhdGgpOgog
ICAiIiIKIAogICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGRpcmVjdG9yeSwg
cmVsYXRpdmVfcGF0aCkpOgotICAgIHByaW50ICdFUlJPUjogQ2Fubm90IGZpbmQgJXMgaW4gZGly
ZWN0b3J5ICVzLicgJSAocmVsYXRpdmVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSkKLSAgICBwcmludCAoJ1BsZWFz
ZSBlaXRoZXIgc3BlY2lmeSBhIHZhbGlkIHByb2plY3Qgcm9vdCBkaXJlY3RvcnkgJwotICAgICAg
ICAgICAnb3Igb21pdCBpdCBvbiB0aGUgY29tbWFuZCBsaW5lLicpCisgICAgcHJpbnQoJ0VSUk9S
OiBDYW5ub3QgZmluZCAlcyBpbiBkaXJlY3RvcnkgJXMuJyAlIChyZWxhdGl2ZV9wYXRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0
b3J5KSkKKyAgICBwcmludCgnUGxlYXNlIGVpdGhlciBzcGVjaWZ5IGEgdmFsaWQgcHJvamVjdCBy
b290IGRpcmVjdG9yeSAnCisgICAgICAgICAgJ29yIG9taXQgaXQgb24gdGhlIGNvbW1hbmQgbGlu
ZS4nKQogICAgIHN5cy5leGl0KDEpCiAKIApAQCAtMTE5LDExICsxMjIsMTEgQEAgZGVmIFZlcmlm
eU91dHB1dEZpbGUob3V0cHV0X2RpciwgcmVsYXRpdmVfcGF0aCk6CiAgICAgIyBUT0RPKHdhbkBn
b29nbGUuY29tKTogVGhlIGZvbGxvd2luZyB1c2VyLWludGVyYWN0aW9uIGRvZXNuJ3QKICAgICAj
IHdvcmsgd2l0aCBhdXRvbWF0ZWQgcHJvY2Vzc2VzLiAgV2Ugc2hvdWxkIHByb3ZpZGUgYSB3YXkg
Zm9yIHRoZQogICAgICMgTWFrZWZpbGUgdG8gZm9yY2Ugb3ZlcndyaXRpbmcgdGhlIGZpbGVzLgot
ICAgIHByaW50ICgnJXMgYWxyZWFkeSBleGlzdHMgaW4gZGlyZWN0b3J5ICVzIC0gb3ZlcndyaXRl
IGl0PyAoeS9OKSAnICUKLSAgICAgICAgICAgKHJlbGF0aXZlX3BhdGgsIG91dHB1dF9kaXIpKQor
ICAgIHByaW50KCclcyBhbHJlYWR5IGV4aXN0cyBpbiBkaXJlY3RvcnkgJXMgLSBvdmVyd3JpdGUg
aXQ/ICh5L04pICcgJQorICAgICAgICAgIChyZWxhdGl2ZV9wYXRoLCBvdXRwdXRfZGlyKSkKICAg
ICBhbnN3ZXIgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKS5zdHJpcCgpCiAgICAgaWYgYW5zd2VyIG5v
dCBpbiBbJ3knLCAnWSddOgotICAgICAgcHJpbnQgJ0FCT1JURUQuJworICAgICAgcHJpbnQoJ0FC
T1JURUQuJykKICAgICAgIHN5cy5leGl0KDEpCiAKICAgIyBNYWtlcyBzdXJlIHRoZSBkaXJlY3Rv
cnkgaG9sZGluZyB0aGUgb3V0cHV0IGZpbGUgZXhpc3RzOyBjcmVhdGVzCkBAIC0xNDYsOCArMTQ5
LDggQEAgZGVmIFZhbGlkYXRlT3V0cHV0RGlyKG91dHB1dF9kaXIpOgogZGVmIEZ1c2VHVGVzdEgo
Z3Rlc3Rfcm9vdCwgb3V0cHV0X2Rpcik6CiAgICIiIlNjYW5zIGZvbGRlciBndGVzdF9yb290IHRv
IGdlbmVyYXRlIGd0ZXN0L2d0ZXN0LmggaW4gb3V0cHV0X2Rpci4iIiIKIAotICBvdXRwdXRfZmls
ZSA9IGZpbGUob3MucGF0aC5qb2luKG91dHB1dF9kaXIsIEdURVNUX0hfT1VUUFVUKSwgJ3cnKQot
ICBwcm9jZXNzZWRfZmlsZXMgPSBzZXRzLlNldCgpICAjIEhvbGRzIGFsbCBndGVzdCBoZWFkZXJz
IHdlJ3ZlIHByb2Nlc3NlZC4KKyAgb3V0cHV0X2ZpbGUgPSBvcGVuKG9zLnBhdGguam9pbihvdXRw
dXRfZGlyLCBHVEVTVF9IX09VVFBVVCksICd3JykKKyAgcHJvY2Vzc2VkX2ZpbGVzID0gc2V0KCkg
ICMgSG9sZHMgYWxsIGd0ZXN0IGhlYWRlcnMgd2UndmUgcHJvY2Vzc2VkLgogCiAgIGRlZiBQcm9j
ZXNzRmlsZShndGVzdF9oZWFkZXJfcGF0aCk6CiAgICAgIiIiUHJvY2Vzc2VzIHRoZSBnaXZlbiBn
dGVzdCBoZWFkZXIgZmlsZS4iIiIKQEAgLTE1OSwxMCArMTYyLDEwIEBAIGRlZiBGdXNlR1Rlc3RI
KGd0ZXN0X3Jvb3QsIG91dHB1dF9kaXIpOgogICAgIHByb2Nlc3NlZF9maWxlcy5hZGQoZ3Rlc3Rf
aGVhZGVyX3BhdGgpCiAKICAgICAjIFJlYWRzIGVhY2ggbGluZSBpbiB0aGUgZ2l2ZW4gZ3Rlc3Qg
aGVhZGVyLgotICAgIGZvciBsaW5lIGluIGZpbGUob3MucGF0aC5qb2luKGd0ZXN0X3Jvb3QsIGd0
ZXN0X2hlYWRlcl9wYXRoKSwgJ3InKToKKyAgICBmb3IgbGluZSBpbiBvcGVuKG9zLnBhdGguam9p
bihndGVzdF9yb290LCBndGVzdF9oZWFkZXJfcGF0aCksICdyJyk6CiAgICAgICBtID0gSU5DTFVE
RV9HVEVTVF9GSUxFX1JFR0VYLm1hdGNoKGxpbmUpCiAgICAgICBpZiBtOgotICAgICAgICAjIEl0
J3MgJyNpbmNsdWRlIDxndGVzdC8uLi4+JyAtIGxldCdzIHByb2Nlc3MgaXQgcmVjdXJzaXZlbHku
CisgICAgICAgICMgSXQncyAnI2luY2x1ZGUgImd0ZXN0Ly4uLiInIC0gbGV0J3MgcHJvY2VzcyBp
dCByZWN1cnNpdmVseS4KICAgICAgICAgUHJvY2Vzc0ZpbGUoJ2luY2x1ZGUvJyArIG0uZ3JvdXAo
MSkpCiAgICAgICBlbHNlOgogICAgICAgICAjIE90aGVyd2lzZSB3ZSBjb3B5IHRoZSBsaW5lIHVu
Y2hhbmdlZCB0byB0aGUgb3V0cHV0IGZpbGUuCkBAIC0xNzUsNyArMTc4LDcgQEAgZGVmIEZ1c2VH
VGVzdEgoZ3Rlc3Rfcm9vdCwgb3V0cHV0X2Rpcik6CiBkZWYgRnVzZUdUZXN0QWxsQ2NUb0ZpbGUo
Z3Rlc3Rfcm9vdCwgb3V0cHV0X2ZpbGUpOgogICAiIiJTY2FucyBmb2xkZXIgZ3Rlc3Rfcm9vdCB0
byBnZW5lcmF0ZSBndGVzdC9ndGVzdC1hbGwuY2MgaW4gb3V0cHV0X2ZpbGUuIiIiCiAKLSAgcHJv
Y2Vzc2VkX2ZpbGVzID0gc2V0cy5TZXQoKQorICBwcm9jZXNzZWRfZmlsZXMgPSBzZXQoKQogCiAg
IGRlZiBQcm9jZXNzRmlsZShndGVzdF9zb3VyY2VfZmlsZSk6CiAgICAgIiIiUHJvY2Vzc2VzIHRo
ZSBnaXZlbiBndGVzdCBzb3VyY2UgZmlsZS4iIiIKQEAgLTE4NywyMyArMTkwLDIzIEBAIGRlZiBG
dXNlR1Rlc3RBbGxDY1RvRmlsZShndGVzdF9yb290LCBvdXRwdXRfZmlsZSk6CiAgICAgcHJvY2Vz
c2VkX2ZpbGVzLmFkZChndGVzdF9zb3VyY2VfZmlsZSkKIAogICAgICMgUmVhZHMgZWFjaCBsaW5l
IGluIHRoZSBnaXZlbiBndGVzdCBzb3VyY2UgZmlsZS4KLSAgICBmb3IgbGluZSBpbiBmaWxlKG9z
LnBhdGguam9pbihndGVzdF9yb290LCBndGVzdF9zb3VyY2VfZmlsZSksICdyJyk6CisgICAgZm9y
IGxpbmUgaW4gb3Blbihvcy5wYXRoLmpvaW4oZ3Rlc3Rfcm9vdCwgZ3Rlc3Rfc291cmNlX2ZpbGUp
LCAncicpOgogICAgICAgbSA9IElOQ0xVREVfR1RFU1RfRklMRV9SRUdFWC5tYXRjaChsaW5lKQog
ICAgICAgaWYgbToKICAgICAgICAgaWYgJ2luY2x1ZGUvJyArIG0uZ3JvdXAoMSkgPT0gR1RFU1Rf
U1BJX0hfU0VFRDoKLSAgICAgICAgICAjIEl0J3MgJyNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGku
aD4nLiAgVGhpcyBmaWxlIGlzIG5vdAotICAgICAgICAgICMgI2luY2x1ZGVkIGJ5IDxndGVzdC9n
dGVzdC5oPiwgc28gd2UgbmVlZCB0byBwcm9jZXNzIGl0LgorICAgICAgICAgICMgSXQncyAnI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIicuICBUaGlzIGZpbGUgaXMgbm90CisgICAgICAgICAg
IyAjaW5jbHVkZWQgYnkgImd0ZXN0L2d0ZXN0LmgiLCBzbyB3ZSBuZWVkIHRvIHByb2Nlc3MgaXQu
CiAgICAgICAgICAgUHJvY2Vzc0ZpbGUoR1RFU1RfU1BJX0hfU0VFRCkKICAgICAgICAgZWxzZToK
LSAgICAgICAgICAjIEl0J3MgJyNpbmNsdWRlIDxndGVzdC9mb28uaD4nIHdoZXJlIGZvbyBpcyBu
b3QgZ3Rlc3Qtc3BpLgotICAgICAgICAgICMgV2UgdHJlYXQgaXQgYXMgJyNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPicsIGFzIGFsbCBvdGhlcgorICAgICAgICAgICMgSXQncyAnI2luY2x1ZGUgImd0
ZXN0L2Zvby5oIicgd2hlcmUgZm9vIGlzIG5vdCBndGVzdC1zcGkuCisgICAgICAgICAgIyBXZSB0
cmVhdCBpdCBhcyAnI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiJywgYXMgYWxsIG90aGVyCiAgICAg
ICAgICAgIyBndGVzdCBoZWFkZXJzIGFyZSBiZWluZyBmdXNlZCBpbnRvIGd0ZXN0LmggYW5kIGNh
bm5vdCBiZQogICAgICAgICAgICMgI2luY2x1ZGVkIGRpcmVjdGx5LgogCi0gICAgICAgICAgIyBU
aGVyZSBpcyBubyBuZWVkIHRvICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPiBtb3JlIHRoYW4gb25j
ZS4KKyAgICAgICAgICAjIFRoZXJlIGlzIG5vIG5lZWQgdG8gI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiIG1vcmUgdGhhbiBvbmNlLgogICAgICAgICAgIGlmIG5vdCBHVEVTVF9IX1NFRUQgaW4gcHJv
Y2Vzc2VkX2ZpbGVzOgogICAgICAgICAgICAgcHJvY2Vzc2VkX2ZpbGVzLmFkZChHVEVTVF9IX1NF
RUQpCi0gICAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZSgnI2luY2x1ZGUgPCVzPlxuJyAlIChH
VEVTVF9IX09VVFBVVCwpKQorICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoJyNpbmNsdWRl
ICIlcyJcbicgJSAoR1RFU1RfSF9PVVRQVVQsKSkKICAgICAgIGVsc2U6CiAgICAgICAgIG0gPSBJ
TkNMVURFX1NSQ19GSUxFX1JFR0VYLm1hdGNoKGxpbmUpCiAgICAgICAgIGlmIG06CkBAIC0yMTgs
NyArMjIxLDcgQEAgZGVmIEZ1c2VHVGVzdEFsbENjVG9GaWxlKGd0ZXN0X3Jvb3QsIG91dHB1dF9m
aWxlKToKIGRlZiBGdXNlR1Rlc3RBbGxDYyhndGVzdF9yb290LCBvdXRwdXRfZGlyKToKICAgIiIi
U2NhbnMgZm9sZGVyIGd0ZXN0X3Jvb3QgdG8gZ2VuZXJhdGUgZ3Rlc3QvZ3Rlc3QtYWxsLmNjIGlu
IG91dHB1dF9kaXIuIiIiCiAKLSAgb3V0cHV0X2ZpbGUgPSBmaWxlKG9zLnBhdGguam9pbihvdXRw
dXRfZGlyLCBHVEVTVF9BTExfQ0NfT1VUUFVUKSwgJ3cnKQorICBvdXRwdXRfZmlsZSA9IG9wZW4o
b3MucGF0aC5qb2luKG91dHB1dF9kaXIsIEdURVNUX0FMTF9DQ19PVVRQVVQpLCAndycpCiAgIEZ1
c2VHVGVzdEFsbENjVG9GaWxlKGd0ZXN0X3Jvb3QsIG91dHB1dF9maWxlKQogICBvdXRwdXRfZmls
ZS5jbG9zZSgpCiAKQEAgLTI0Miw3ICsyNDUsNyBAQCBkZWYgbWFpbigpOgogICAgICMgZnVzZV9n
dGVzdF9maWxlcy5weSBHVEVTVF9ST09UX0RJUiBPVVRQVVRfRElSCiAgICAgRnVzZUdUZXN0KHN5
cy5hcmd2WzFdLCBzeXMuYXJndlsyXSkKICAgZWxzZToKLSAgICBwcmludCBfX2RvY19fCisgICAg
cHJpbnQoX19kb2NfXykKICAgICBzeXMuZXhpdCgxKQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weQppbmRleCA4MzA3
MTM0YWRhZjRkYTJiZThmYTIzMzIyOTE1MjBkMzljOTRiYjEyLi5iNDNlZmRmNDFlNWMwMjc0MGY3
MmIzNTUzMmJlNWNmMDQ5Nzk0ODM1IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC9zY3JpcHRzL2dlbl9ndGVzdF9wcmVkX2ltcGwucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2NyaXB0cy9nZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5CkBAIC0xMTUsMTAgKzExNSw5IEBA
IGRlZiBIZWFkZXJQcmVhbWJsZShuKToKICNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVT
VF9QUkVEX0lNUExfSF8KICNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lN
UExfSF8KIAotLy8gTWFrZXMgc3VyZSB0aGlzIGhlYWRlciBpcyBub3QgaW5jbHVkZWQgYmVmb3Jl
IGd0ZXN0LmguCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KLSNlcnJvciBE
byBub3QgaW5jbHVkZSBndGVzdF9wcmVkX2ltcGwuaCBkaXJlY3RseS4gIEluY2x1ZGUgZ3Rlc3Qu
aCBpbnN0ZWFkLgotI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0hfCisjaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHRlc3RpbmcgewogCiAvLyBUaGlzIGhl
YWRlciBpbXBsZW1lbnRzIGEgZmFtaWx5IG9mIGdlbmVyaWMgcHJlZGljYXRlIGFzc2VydGlvbgog
Ly8gbWFjcm9zOgpAQCAtMjM4LDI3ICsyMzcsMjUgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFBy
ZWQlKG4pc0hlbHBlcihjb25zdCBjaGFyKiBwcmVkX3RleHQiIiIgJSBERUZTCiAgIGltcGwgKz0g
IiIiKSB7CiAgIGlmIChwcmVkKCUodnMpcykpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAK
LSAgTWVzc2FnZSBtc2c7CiAiIiIgJSBERUZTCiAKLSAgaW1wbCArPSAnICBtc2cgPDwgcHJlZF90
ZXh0IDw8ICIoIicKKyAgaW1wbCArPSAnICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHBy
ZWRfdGV4dCA8PCAiKCInCiAKICAgaW1wbCArPSBJdGVyKG4sICIiIgotICAgICAgPDwgZSVzIiIi
LCBzZXA9JyA8PCAiLCAiJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlJXMiIiIs
IHNlcD0nIDw8ICIsICInKQogCiAgIGltcGwgKz0gJyA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2Us
IHdoZXJlIicKIAogICBpbXBsICs9IEl0ZXIobiwgIiIiCi0gICAgICA8PCAiXFxuIiA8PCBlJXMg
PDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2JXMiIiIpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIlxcbiIgPDwgZSVzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdiVzIiIiKQogCiAgIGlt
cGwgKz0gIiIiOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogfQogCiAvLyBJbnRl
cm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEX0ZPUk1BVCUo
bilzLgogLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgogI2RlZmluZSBHVEVTVF9QUkVE
X0ZPUk1BVCUobilzXyhwcmVkX2Zvcm1hdCwgJSh2cylzLCBvbl9mYWlsdXJlKVxcCi0gIEdURVNU
X0FTU0VSVF8ocHJlZF9mb3JtYXQoJSh2dHMpcywgJSh2cylzKSxcXAorICBHVEVTVF9BU1NFUlRf
KHByZWRfZm9ybWF0KCUodnRzKXMsICUodnMpcyksIFxcCiAgICAgICAgICAgICAgICAgb25fZmFp
bHVyZSkKIAogLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VS
VH1fUFJFRCUobilzLiAgRG9uJ3QgdXNlCkBAIC0yOTcsMTYgKzI5NCwxNyBAQCBkZWYgSGVhZGVy
UG9zdGFtYmxlKCk6CiAKICAgcmV0dXJuICIiIgogCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwor
CiAjZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJFRF9JTVBMX0hfCiAiIiIK
IAogCiBkZWYgR2VuZXJhdGVGaWxlKHBhdGgsIGNvbnRlbnQpOgotICAiIiJHaXZlbiBhIGZpbGUg
cGF0aCBhbmQgYSBjb250ZW50IHN0cmluZywgb3ZlcndyaXRlcyBpdCB3aXRoIHRoZQotICBnaXZl
biBjb250ZW50LiIiIgotCisgICIiIkdpdmVuIGEgZmlsZSBwYXRoIGFuZCBhIGNvbnRlbnQgc3Ry
aW5nCisgICAgIG92ZXJ3cml0ZXMgaXQgd2l0aCB0aGUgZ2l2ZW4gY29udGVudC4KKyAgIiIiCiAg
IHByaW50ICdVcGRhdGluZyBmaWxlICVzIC4gLiAuJyAlIHBhdGgKLQogICBmID0gZmlsZShwYXRo
LCAndysnKQogICBwcmludCA+PmYsIGNvbnRlbnQsCiAgIGYuY2xvc2UoKQpAQCAtMzE2LDggKzMx
NCw4IEBAIGRlZiBHZW5lcmF0ZUZpbGUocGF0aCwgY29udGVudCk6CiAKIGRlZiBHZW5lcmF0ZUhl
YWRlcihuKToKICAgIiIiR2l2ZW4gdGhlIG1heGltdW0gYXJpdHkgbiwgdXBkYXRlcyB0aGUgaGVh
ZGVyIGZpbGUgdGhhdCBpbXBsZW1lbnRzCi0gIHRoZSBwcmVkaWNhdGUgYXNzZXJ0aW9ucy4iIiIK
LQorICB0aGUgcHJlZGljYXRlIGFzc2VydGlvbnMuCisgICIiIgogICBHZW5lcmF0ZUZpbGUoSEVB
REVSLAogICAgICAgICAgICAgICAgSGVhZGVyUHJlYW1ibGUobikKICAgICAgICAgICAgICAgICsg
Jycuam9pbihbSW1wbGVtZW50YXRpb25Gb3JBcml0eShpKSBmb3IgaSBpbiBPbmVUbyhuKV0pCkBA
IC0zODYsOCArMzg0LDggQEAgZGVmIFVuaXRUZXN0UHJlYW1ibGUoKToKIAogI2luY2x1ZGUgPGlv
c3RyZWFtPgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC1zcGkuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LXNwaS5oIgogCiAvLyBBIHVzZXItZGVmaW5lZCBkYXRhIHR5cGUuCiBzdHJ1Y3QgQm9vbCB7CkBA
IC00NzgsMTUgKzQ3NiwxNCBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1
bmN0aW9uJShuKXMoIiIiICUgREVGUwogICBpZiAoUHJlZEZ1bmN0aW9uJShuKXMoJSh2cylzKSkK
ICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogCi0gIHRlc3Rpbmc6Ok1l
c3NhZ2UgbXNnOwotICBtc2cgPDwgIiIiICUgREVGUworICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0
aW9uRmFpbHVyZSgpCisgICAgICA8PCAiIiIgJSBERUZTCiAKICAgdGVzdHMgKz0gSXRlcihuLCAn
ZSVzJywgc2VwPScgPDwgIiArICIgPDwgJykKIAogICB0ZXN0cyArPSAiIiIKICAgICAgIDw8ICIg
aXMgZXhwZWN0ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgogICAgICAgPDwg
JSh2X3N1bSlzIDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNn
KTsKIH0KICIiIiAlIERFRlMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c2NyaXB0cy9ndGVzdC1jb25maWcuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRz
L2d0ZXN0LWNvbmZpZy5pbgppbmRleCA5YzcyNjM4NTRiOWY4NjNiNjE4YzcwOGRlMWVmZTBlOGIx
ZjcyODBhLi43ODBmODQzMmVmY2MxYWVlYWFhZDA3MDYwODZkM2ZmNjQxMjg1YjY4IDEwMDc1NQot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2d0ZXN0LWNvbmZpZy5pbgorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL2d0ZXN0LWNvbmZpZy5pbgpAQCAtMjA5
LDcgKzIwOSw3IEBAIGlmIHRlc3QgIiR7dGhpc19iaW5kaXJ9IiA9ICIke3RoaXNfYmluZGlyJSR7
YmluZGlyfX0iOyB0aGVuCiAgICMgVGhlIHBhdGggdG8gdGhlIHNjcmlwdCBkb2Vzbid0IGVuZCBp
biB0aGUgYmluZGlyIHNlcXVlbmNlIGZyb20gQXV0b2NvbmYsCiAgICMgYXNzdW1lIHRoYXQgd2Ug
YXJlIGluIGEgYnVpbGQgdHJlZS4KICAgYnVpbGRfZGlyPWBkaXJuYW1lICR7dGhpc19iaW5kaXJ9
YAotICBzcmNfZGlyPWBjZCAke3RoaXNfYmluZGlyfS9AdG9wX3NyY2RpckA7IHB3ZCAtUGAKKyAg
c3JjX2Rpcj1gY2QgJHt0aGlzX2JpbmRpcn07IGNkIEB0b3Bfc3JjZGlyQDsgcHdkIC1QYAogCiAg
ICMgVE9ETyhjaGFuZGxlcmNAZ29vZ2xlLmNvbSk6IFRoaXMgaXMgYSBkYW5nZXJvdXMgZGVwZW5k
ZW5jeSBvbiBsaWJ0b29sLCB3ZQogICAjIHNob3VsZCB3b3JrIHRvIHJlbW92ZSBpdCwgYW5kL29y
IHJlbW92ZSBsaWJ0b29sIGFsdG9nZXRoZXIsIHJlcGxhY2luZyBpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy9wdW1wLnB5IGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc2NyaXB0cy9wdW1wLnB5CmluZGV4IGYxNWMxYjZjZWI0YjhiMWJiMGJmNGU4M2UzZWE5
M2IzOGM3ODU4MDAuLjVlZmI2NTNjMjA3ZDFmMWMyYWVjYzRkNjkwYmY3MzJlM2MxZDcxYWIgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcHVtcC5weQorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3B1bXAucHkKQEAgLTI5LDcgKzI5LDcgQEAK
ICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSIiInB1bXAgdjAuMSAtIFByZXR0eSBV
c2VmdWwgZm9yIE1ldGEgUHJvZ3JhbW1pbmcuCisiIiJwdW1wIHYwLjIuMCAtIFByZXR0eSBVc2Vm
dWwgZm9yIE1ldGEgUHJvZ3JhbW1pbmcuCiAKIEEgdG9vbCBmb3IgcHJlcHJvY2Vzc29yIG1ldGEg
cHJvZ3JhbW1pbmcuICBVc2VmdWwgZm9yIGdlbmVyYXRpbmcKIHJlcGV0aXRpdmUgYm9pbGVycGxh
dGUgY29kZS4gIEVzcGVjaWFsbHkgdXNlZnVsIGZvciB3cml0aW5nIEMrKwpAQCAtNzgsNyArNzgs
NiBAQCBUT0tFTl9UQUJMRSA9IFsKICAgICAocmUuY29tcGlsZShyJ1wkcmFuZ2VccysnKSwgJyRy
YW5nZScpLAogICAgIChyZS5jb21waWxlKHInXCRbX0EtWmEtel1cdyonKSwgJyRpZCcpLAogICAg
IChyZS5jb21waWxlKHInXCRcKFwkXCknKSwgJyQoJCknKSwKLSAgICAocmUuY29tcGlsZShyJ1wk
XCQuKicpLCAnJCQnKSwKICAgICAocmUuY29tcGlsZShyJ1wkJyksICckJyksCiAgICAgKHJlLmNv
bXBpbGUocidcW1xbXG4/JyksICdbWycpLAogICAgIChyZS5jb21waWxlKHInXF1cXVxuPycpLCAn
XV0nKSwKQEAgLTIyNCw2ICsyMjMsMTcgQEAgZGVmIFN1YlN0cmluZyhsaW5lcywgc3RhcnQsIGVu
ZCk6CiAgIHJldHVybiAnJy5qb2luKHJlc3VsdF9saW5lcykKIAogCitkZWYgU3RyaXBNZXRhQ29t
bWVudHMoc3RyKToKKyAgIiIiU3RyaXAgbWV0YSBjb21tZW50cyBmcm9tIGVhY2ggbGluZSBpbiB0
aGUgZ2l2ZW4gc3RyaW5nLiIiIgorCisgICMgRmlyc3QsIGNvbXBsZXRlbHkgcmVtb3ZlIGxpbmVz
IGNvbnRhaW5pbmcgbm90aGluZyBidXQgYSBtZXRhCisgICMgY29tbWVudCwgaW5jbHVkaW5nIHRo
ZSB0cmFpbGluZyBcbi4KKyAgc3RyID0gcmUuc3ViKHInXlxzKlwkXCQuKlxuJywgJycsIHN0cikK
KworICAjIFRoZW4sIHJlbW92ZSBtZXRhIGNvbW1lbnRzIGZyb20gY29udGVudGZ1bCBsaW5lcy4K
KyAgcmV0dXJuIHJlLnN1YihyJ1xzKlwkXCQuKicsICcnLCBzdHIpCisKKwogZGVmIE1ha2VUb2tl
bihsaW5lcywgc3RhcnQsIGVuZCwgdG9rZW5fdHlwZSk6CiAgICIiIkNyZWF0ZXMgYSBuZXcgaW5z
dGFuY2Ugb2YgVG9rZW4uIiIiCiAKQEAgLTMxMSwxMSArMzIxLDcgQEAgZGVmIFRva2VuaXplTGlu
ZXMobGluZXMsIHBvcyk6CiAgICAgICBwcmV2X3Rva2VuID0gTWFrZVRva2VuKGxpbmVzLCBwb3Ms
IGZvdW5kLnN0YXJ0LCAnY29kZScpCiAgICAgICBwcmV2X3Rva2VuX3JzdHJpcHBlZCA9IFJTdHJp
cE5ld0xpbmVGcm9tVG9rZW4ocHJldl90b2tlbikKIAotICAgIGlmIGZvdW5kLnRva2VuX3R5cGUg
PT0gJyQkJzogICMgQSBtZXRhIGNvbW1lbnQuCi0gICAgICBpZiBwcmV2X3Rva2VuX3JzdHJpcHBl
ZDoKLSAgICAgICAgeWllbGQgcHJldl90b2tlbl9yc3RyaXBwZWQKLSAgICAgIHBvcyA9IEN1cnNv
cihmb3VuZC5lbmQubGluZSArIDEsIDApCi0gICAgZWxpZiBmb3VuZC50b2tlbl90eXBlID09ICck
dmFyJzoKKyAgICBpZiBmb3VuZC50b2tlbl90eXBlID09ICckdmFyJzoKICAgICAgIGlmIHByZXZf
dG9rZW5fcnN0cmlwcGVkOgogICAgICAgICB5aWVsZCBwcmV2X3Rva2VuX3JzdHJpcHBlZAogICAg
ICAgeWllbGQgZm91bmQKQEAgLTM3NCw4ICszODAsMTEgQEAgZGVmIFRva2VuaXplTGluZXMobGlu
ZXMsIHBvcyk6CiAKIAogZGVmIFRva2VuaXplKHMpOgotICBsaW5lcyA9IHMuc3BsaXRsaW5lcyhU
cnVlKQotICByZXR1cm4gVG9rZW5pemVMaW5lcyhsaW5lcywgQ3Vyc29yKDAsIDApKQorICAiIiJB
IGdlbmVyYXRvciB0aGF0IHlpZWxkcyB0aGUgdG9rZW5zIGluIHRoZSBnaXZlbiBzdHJpbmcuIiIi
CisgIGlmIHMgIT0gJyc6CisgICAgbGluZXMgPSBzLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICBmb3Ig
dG9rZW4gaW4gVG9rZW5pemVMaW5lcyhsaW5lcywgQ3Vyc29yKDAsIDApKToKKyAgICAgIHlpZWxk
IHRva2VuCiAKIAogY2xhc3MgQ29kZU5vZGU6CkBAIC01NjUsMTEgKzU3NCw5IEBAIGRlZiBQYXJz
ZUNvZGVOb2RlKHRva2Vucyk6CiAgIHJldHVybiBDb2RlTm9kZShhdG9taWNfY29kZV9saXN0KQog
CiAKLWRlZiBDb252ZXJ0KGZpbGVfcGF0aCk6Ci0gIHMgPSBmaWxlKGZpbGVfcGF0aCwgJ3InKS5y
ZWFkKCkKLSAgdG9rZW5zID0gW10KLSAgZm9yIHRva2VuIGluIFRva2VuaXplKHMpOgotICAgIHRv
a2Vucy5hcHBlbmQodG9rZW4pCitkZWYgUGFyc2VUb0FTVChwdW1wX3NyY190ZXh0KToKKyAgIiIi
Q29udmVydCB0aGUgZ2l2ZW4gUHVtcCBzb3VyY2UgdGV4dCBpbnRvIGFuIEFTVC4iIiIKKyAgdG9r
ZW5zID0gbGlzdChUb2tlbml6ZShwdW1wX3NyY190ZXh0KSkKICAgY29kZV9ub2RlID0gUGFyc2VD
b2RlTm9kZSh0b2tlbnMpCiAgIHJldHVybiBjb2RlX25vZGUKIApAQCAtNjk3LDE0ICs3MDQsMTQg
QEAgZGVmIFJ1bkNvZGUoZW52LCBjb2RlX25vZGUsIG91dHB1dCk6CiAgICAgUnVuQXRvbWljQ29k
ZShlbnYsIGF0b21pY19jb2RlLCBvdXRwdXQpCiAKIAotZGVmIElzQ29tbWVudChjdXJfbGluZSk6
CitkZWYgSXNTaW5nbGVMaW5lQ29tbWVudChjdXJfbGluZSk6CiAgIHJldHVybiAnLy8nIGluIGN1
cl9saW5lCiAKIAotZGVmIElzSW5QcmVwcm9jZXNzb3JEaXJldmF0aXZlKHByZXZfbGluZXMsIGN1
cl9saW5lKToKK2RlZiBJc0luUHJlcHJvY2Vzc29yRGlyZWN0aXZlKHByZXZfbGluZXMsIGN1cl9s
aW5lKToKICAgaWYgY3VyX2xpbmUubHN0cmlwKCkuc3RhcnRzd2l0aCgnIycpOgogICAgIHJldHVy
biBUcnVlCi0gIHJldHVybiBwcmV2X2xpbmVzICE9IFtdIGFuZCBwcmV2X2xpbmVzWy0xXS5lbmRz
d2l0aCgnXFwnKQorICByZXR1cm4gcHJldl9saW5lcyBhbmQgcHJldl9saW5lc1stMV0uZW5kc3dp
dGgoJ1xcJykKIAogCiBkZWYgV3JhcENvbW1lbnQobGluZSwgb3V0cHV0KToKQEAgLTc2MSw3ICs3
NjgsNyBAQCBkZWYgV3JhcENvZGUobGluZSwgbGluZV9jb25jYXQsIG91dHB1dCk6CiAgICAgb3V0
cHV0LmFwcGVuZChwcmVmaXggKyBjdXJfbGluZS5zdHJpcCgpKQogCiAKLWRlZiBXcmFwUHJlcHJv
Y2Vzc29yRGlyZXZhdGl2ZShsaW5lLCBvdXRwdXQpOgorZGVmIFdyYXBQcmVwcm9jZXNzb3JEaXJl
Y3RpdmUobGluZSwgb3V0cHV0KToKICAgV3JhcENvZGUobGluZSwgJyBcXCcsIG91dHB1dCkKIAog
CkBAIC03NjksMjkgKzc3NiwzNyBAQCBkZWYgV3JhcFBsYWluQ29kZShsaW5lLCBvdXRwdXQpOgog
ICBXcmFwQ29kZShsaW5lLCAnJywgb3V0cHV0KQogCiAKLWRlZiBJc0hlYWRlckd1YXJkT3JJbmNs
dWRlKGxpbmUpOgorZGVmIElzTXVsdGlMaW5lSVdZVVByYWdtYShsaW5lKToKKyAgcmV0dXJuIHJl
LnNlYXJjaChyJy9cKiBJV1lVIHByYWdtYTogJywgbGluZSkKKworCitkZWYgSXNIZWFkZXJHdWFy
ZEluY2x1ZGVPck9uZUxpbmVJV1lVUHJhZ21hKGxpbmUpOgogICByZXR1cm4gKHJlLm1hdGNoKHIn
XiMoaWZuZGVmfGRlZmluZXxlbmRpZlxzKi8vKVxzKltcd19dK1xzKiQnLCBsaW5lKSBvcgotICAg
ICAgICAgIHJlLm1hdGNoKHInXiNpbmNsdWRlXHMnLCBsaW5lKSkKKyAgICAgICAgICByZS5tYXRj
aChyJ14jaW5jbHVkZVxzJywgbGluZSkgb3IKKyAgICAgICAgICAjIERvbid0IGJyZWFrIElXWVUg
cHJhZ21hcywgZWl0aGVyOyB0aGF0IGNhdXNlcyBpd3l1LnB5IHByb2JsZW1zLgorICAgICAgICAg
IHJlLnNlYXJjaChyJy8vIElXWVUgcHJhZ21hOiAnLCBsaW5lKSkKIAogCiBkZWYgV3JhcExvbmdM
aW5lKGxpbmUsIG91dHB1dCk6CiAgIGxpbmUgPSBsaW5lLnJzdHJpcCgpCiAgIGlmIGxlbihsaW5l
KSA8PSA4MDoKICAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCi0gIGVsaWYgSXNDb21tZW50KGxpbmUp
OgotICAgIGlmIElzSGVhZGVyR3VhcmRPckluY2x1ZGUobGluZSk6Ci0gICAgICAjIFRoZSBzdHls
ZSBndWlkZSBtYWRlIGFuIGV4Y2VwdGlvbiB0byBhbGxvdyBsb25nIGhlYWRlciBndWFyZCBsaW5l
cwotICAgICAgIyBhbmQgaW5jbHVkZXMuCisgIGVsaWYgSXNTaW5nbGVMaW5lQ29tbWVudChsaW5l
KToKKyAgICBpZiBJc0hlYWRlckd1YXJkSW5jbHVkZU9yT25lTGluZUlXWVVQcmFnbWEobGluZSk6
CisgICAgICAjIFRoZSBzdHlsZSBndWlkZSBtYWRlIGFuIGV4Y2VwdGlvbiB0byBhbGxvdyBsb25n
IGhlYWRlciBndWFyZCBsaW5lcywKKyAgICAgICMgaW5jbHVkZXMgYW5kIElXWVUgcHJhZ21hcy4K
ICAgICAgIG91dHB1dC5hcHBlbmQobGluZSkKICAgICBlbHNlOgogICAgICAgV3JhcENvbW1lbnQo
bGluZSwgb3V0cHV0KQotICBlbGlmIElzSW5QcmVwcm9jZXNzb3JEaXJldmF0aXZlKG91dHB1dCwg
bGluZSk6Ci0gICAgaWYgSXNIZWFkZXJHdWFyZE9ySW5jbHVkZShsaW5lKToKLSAgICAgICMgVGhl
IHN0eWxlIGd1aWRlIG1hZGUgYW4gZXhjZXB0aW9uIHRvIGFsbG93IGxvbmcgaGVhZGVyIGd1YXJk
IGxpbmVzCi0gICAgICAjIGFuZCBpbmNsdWRlcy4KKyAgZWxpZiBJc0luUHJlcHJvY2Vzc29yRGly
ZWN0aXZlKG91dHB1dCwgbGluZSk6CisgICAgaWYgSXNIZWFkZXJHdWFyZEluY2x1ZGVPck9uZUxp
bmVJV1lVUHJhZ21hKGxpbmUpOgorICAgICAgIyBUaGUgc3R5bGUgZ3VpZGUgbWFkZSBhbiBleGNl
cHRpb24gdG8gYWxsb3cgbG9uZyBoZWFkZXIgZ3VhcmQgbGluZXMsCisgICAgICAjIGluY2x1ZGVz
IGFuZCBJV1lVIHByYWdtYXMuCiAgICAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCiAgICAgZWxzZToK
LSAgICAgIFdyYXBQcmVwcm9jZXNzb3JEaXJldmF0aXZlKGxpbmUsIG91dHB1dCkKKyAgICAgIFdy
YXBQcmVwcm9jZXNzb3JEaXJlY3RpdmUobGluZSwgb3V0cHV0KQorICBlbGlmIElzTXVsdGlMaW5l
SVdZVVByYWdtYShsaW5lKToKKyAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCiAgIGVsc2U6CiAgICAg
V3JhcFBsYWluQ29kZShsaW5lLCBvdXRwdXQpCiAKQEAgLTgwNSwxNiArODIwLDIxIEBAIGRlZiBC
ZWF1dGlmeUNvZGUoc3RyaW5nKToKICAgcmV0dXJuICdcbicuam9pbihvdXRwdXQyKSArICdcbicK
IAogCitkZWYgQ29udmVydEZyb21QdW1wU291cmNlKHNyY190ZXh0KToKKyAgIiIiUmV0dXJuIHRo
ZSB0ZXh0IGdlbmVyYXRlZCBmcm9tIHRoZSBnaXZlbiBQdW1wIHNvdXJjZSB0ZXh0LiIiIgorICBh
c3QgPSBQYXJzZVRvQVNUKFN0cmlwTWV0YUNvbW1lbnRzKHNyY190ZXh0KSkKKyAgb3V0cHV0ID0g
T3V0cHV0KCkKKyAgUnVuQ29kZShFbnYoKSwgYXN0LCBvdXRwdXQpCisgIHJldHVybiBCZWF1dGlm
eUNvZGUob3V0cHV0LnN0cmluZykKKworCiBkZWYgbWFpbihhcmd2KToKICAgaWYgbGVuKGFyZ3Yp
ID09IDE6CiAgICAgcHJpbnQgX19kb2NfXwogICAgIHN5cy5leGl0KDEpCiAKICAgZmlsZV9wYXRo
ID0gYXJndlstMV0KLSAgYXN0ID0gQ29udmVydChmaWxlX3BhdGgpCi0gIG91dHB1dCA9IE91dHB1
dCgpCi0gIFJ1bkNvZGUoRW52KCksIGFzdCwgb3V0cHV0KQotICBvdXRwdXRfc3RyID0gQmVhdXRp
ZnlDb2RlKG91dHB1dC5zdHJpbmcpCisgIG91dHB1dF9zdHIgPSBDb252ZXJ0RnJvbVB1bXBTb3Vy
Y2UoZmlsZShmaWxlX3BhdGgsICdyJykucmVhZCgpKQogICBpZiBmaWxlX3BhdGguZW5kc3dpdGgo
Jy5wdW1wJyk6CiAgICAgb3V0cHV0X2ZpbGVfcGF0aCA9IGZpbGVfcGF0aFs6LTVdCiAgIGVsc2U6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3JlbGVhc2VfZG9j
cy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvcmVsZWFzZV9kb2NzLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjEyOTEzNDdmNjc0YWZkN2FmODQ5NjE1YTc1YjEzOGQ1MjkzZjljZjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3JlbGVhc2VfZG9j
cy5weQpAQCAtMCwwICsxLDE1OCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHly
aWdodCAyMDEzIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisiIiJTY3JpcHQgZm9yIGJyYW5jaGluZyBHb29nbGUgVGVzdC9Nb2NrIHdpa2kgcGFn
ZXMgZm9yIGEgbmV3IHZlcnNpb24uCisKK1NZTk9QU0lTCisgICAgICAgcmVsZWFzZV9kb2NzLnB5
IE5FV19SRUxFQVNFX1ZFUlNJT04KKworICAgICAgIEdvb2dsZSBUZXN0IGFuZCBHb29nbGUgTW9j
aydzIGV4dGVybmFsIHVzZXIgZG9jdW1lbnRhdGlvbiBpcyBpbgorICAgICAgIGludGVybGlua2Vk
IHdpa2kgZmlsZXMuICBXaGVuIHdlIHJlbGVhc2UgYSBuZXcgdmVyc2lvbiBvZgorICAgICAgIEdv
b2dsZSBUZXN0IG9yIEdvb2dsZSBNb2NrLCB3ZSBuZWVkIHRvIGJyYW5jaCB0aGUgd2lraSBmaWxl
cworICAgICAgIHN1Y2ggdGhhdCB1c2VycyBvZiBhIHNwZWNpZmljIHZlcnNpb24gb2YgR29vZ2xl
IFRlc3QvTW9jayBjYW4KKyAgICAgICBsb29rIHVwIGRvY3VtZW5hdGlvbiByZWxldmFudCBmb3Ig
dGhhdCB2ZXJzaW9uLiAgVGhpcyBzY3JpcHQKKyAgICAgICBhdXRvbWF0ZXMgdGhhdCBwcm9jZXNz
IGJ5OgorCisgICAgICAgICAtIGJyYW5jaGluZyB0aGUgY3VycmVudCB3aWtpIHBhZ2VzICh3aGlj
aCBkb2N1bWVudCB0aGUKKyAgICAgICAgICAgYmVoYXZpb3Igb2YgdGhlIFNWTiB0cnVuayBoZWFk
KSB0byBwYWdlcyBmb3IgdGhlIHNwZWNpZmllZAorICAgICAgICAgICB2ZXJzaW9uIChlLmcuIGJy
YW5jaGluZyBGQVEud2lraSB0byBWMl82X0ZBUS53aWtpIHdoZW4KKyAgICAgICAgICAgTkVXX1JF
TEVBU0VfVkVSU0lPTiBpcyAyLjYpOworICAgICAgICAgLSB1cGRhdGluZyB0aGUgbGlua3MgaW4g
dGhlIGJyYW5jaGVkIGZpbGVzIHRvIHBvaW50IHRvIHRoZSBicmFuY2hlZAorICAgICAgICAgICB2
ZXJzaW9uIChlLmcuIGEgbGluayBpbiBWMl82X0ZBUS53aWtpIHRoYXQgcG9pbnRlZCB0bworICAg
ICAgICAgICBQcmltZXIud2lraSNBbmNob3Igd2lsbCBub3cgcG9pbnQgdG8gVjJfNl9QcmltZXIu
d2lraSNBbmNob3IpLgorCisgICAgICAgTk9URTogTkVXX1JFTEVBU0VfVkVSU0lPTiBtdXN0IGJl
IGEgTkVXIHZlcnNpb24gbnVtYmVyIGZvcgorICAgICAgIHdoaWNoIHRoZSB3aWtpIHBhZ2VzIGRv
bid0IHlldCBleGlzdDsgb3RoZXJ3aXNlIHlvdSdsbCBnZXQgU1ZOCisgICAgICAgZXJyb3JzIGxp
a2UgInN2bjogUGF0aCAnVjFfN19QdW1wTWFudWFsLndpa2knIGlzIG5vdCBhCisgICAgICAgZGly
ZWN0b3J5IiB3aGVuIHJ1bm5pbmcgdGhlIHNjcmlwdC4KKworRVhBTVBMRQorICAgICAgICQgY2Qg
UEFUSC9UTy9HVEVTVF9TVk5fV09SS1NQQUNFL3RydW5rCisgICAgICAgJCBzY3JpcHRzL3JlbGVh
c2VfZG9jcy5weSAyLjYgICMgY3JlYXRlIHdpa2kgcGFnZXMgZm9yIHYyLjYKKyAgICAgICAkIHN2
biBzdGF0dXMgICAgICAgICAgICAgICAgICAgIyB2ZXJpZnkgdGhlIGZpbGUgbGlzdAorICAgICAg
ICQgc3ZuIGRpZmYgICAgICAgICAgICAgICAgICAgICAjIHZlcmlmeSB0aGUgZmlsZSBjb250ZW50
cworICAgICAgICQgc3ZuIGNvbW1pdCAtbSAicmVsZWFzZSB3aWtpIHBhZ2VzIGZvciB2Mi42Igor
IiIiCisKK19fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCisKK2lt
cG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCisKK2ltcG9ydCBjb21tb24KKworCisjIFdp
a2kgcGFnZXMgdGhhdCBzaG91bGRuJ3QgYmUgYnJhbmNoZWQgZm9yIGV2ZXJ5IGd0ZXN0L2dtb2Nr
IHJlbGVhc2UuCitHVEVTVF9VTlZFUlNJT05FRF9XSUtJUyA9IFsnRGV2R3VpZGUud2lraSddCitH
TU9DS19VTlZFUlNJT05FRF9XSUtJUyA9IFsKKyAgICAnRGVzaWduRG9jLndpa2knLAorICAgICdE
ZXZHdWlkZS53aWtpJywKKyAgICAnS25vd25Jc3N1ZXMud2lraScKKyAgICBdCisKKworZGVmIERy
b3BXaWtpU3VmZml4KHdpa2lfZmlsZW5hbWUpOgorICAiIiJSZW1vdmVzIHRoZSAud2lraSBzdWZm
aXggKGlmIGFueSkgZnJvbSB0aGUgZ2l2ZW4gZmlsZW5hbWUuIiIiCisKKyAgcmV0dXJuICh3aWtp
X2ZpbGVuYW1lWzotbGVuKCcud2lraScpXSBpZiB3aWtpX2ZpbGVuYW1lLmVuZHN3aXRoKCcud2lr
aScpCisgICAgICAgICAgZWxzZSB3aWtpX2ZpbGVuYW1lKQorCisKK2NsYXNzIFdpa2lCcmFuY2hl
cihvYmplY3QpOgorICAiIiJCcmFuY2hlcyAuLi4iIiIKKworICBkZWYgX19pbml0X18oc2VsZiwg
ZG90X3ZlcnNpb24pOgorICAgIHNlbGYucHJvamVjdCwgc3ZuX3Jvb3RfcGF0aCA9IGNvbW1vbi5H
ZXRTdm5JbmZvKCkKKyAgICBpZiBzZWxmLnByb2plY3Qgbm90IGluICgnZ29vZ2xldGVzdCcsICdn
b29nbGVtb2NrJyk6CisgICAgICBzeXMuZXhpdCgnVGhpcyBzY3JpcHQgbXVzdCBiZSBydW4gaW4g
YSBndGVzdCBvciBnbW9jayBTVk4gd29ya3NwYWNlLicpCisgICAgc2VsZi53aWtpX2RpciA9IHN2
bl9yb290X3BhdGggKyAnL3dpa2knCisgICAgIyBUdXJuICcyLjYnIHRvICdWMl82XycuCisgICAg
c2VsZi52ZXJzaW9uX3ByZWZpeCA9ICdWJyArIGRvdF92ZXJzaW9uLnJlcGxhY2UoJy4nLCAnXycp
ICsgJ18nCisgICAgc2VsZi5maWxlc190b19icmFuY2ggPSBzZWxmLkdldEZpbGVzVG9CcmFuY2go
KQorICAgIHBhZ2VfbmFtZXMgPSBbRHJvcFdpa2lTdWZmaXgoZikgZm9yIGYgaW4gc2VsZi5maWxl
c190b19icmFuY2hdCisgICAgIyBBIGxpbmsgdG8gRm9vLndpa2kgaXMgaW4gb25lIG9mIHRoZSBm
b2xsb3dpbmcgZm9ybXM6CisgICAgIyAgIFtGb28gd29yZHNdCisgICAgIyAgIFtGb28jQW5jaG9y
IHdvcmRzXQorICAgICMgICBbaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS8uLi4vd2lraS9Gb28gd29y
ZHNdCisgICAgIyAgIFtodHRwOi8vY29kZS5nb29nbGUuY29tLy4uLi93aWtpL0ZvbyNBbmNob3Ig
d29yZHNdCisgICAgIyBXZSB3YW50IHRvIHJlcGxhY2UgJ0Zvbycgd2l0aCAnVjJfNl9Gb28nIGlu
IHRoZSBhYm92ZSBjYXNlcy4KKyAgICBzZWxmLnNlYXJjaF9mb3JfcmUgPSByZS5jb21waWxlKAor
ICAgICAgICAjIFRoaXMgcmVnZXggbWF0Y2hlcyBlaXRoZXIKKyAgICAgICAgIyAgIFtGb28KKyAg
ICAgICAgIyBvcgorICAgICAgICAjICAgL3dpa2kvRm9vCisgICAgICAgICMgZm9sbG93ZWQgYnkg
YSBzcGFjZSBvciBhICMsIHdoZXJlIEZvbyBpcyB0aGUgbmFtZSBvZiBhbgorICAgICAgICAjIHVu
dmVyc2lvbmVkIHdpa2kgcGFnZS4KKyAgICAgICAgcicoXFt8L3dpa2kvKSglcykoWyAjXSknICUg
J3wnLmpvaW4ocGFnZV9uYW1lcykpCisgICAgc2VsZi5yZXBsYWNlX3dpdGggPSByJ1wxJXNcMlwz
JyAlIChzZWxmLnZlcnNpb25fcHJlZml4LCkKKworICBkZWYgR2V0RmlsZXNUb0JyYW5jaChzZWxm
KToKKyAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiAud2lraSBmaWxlIG5hbWVzIHRoYXQgbmVlZCB0
byBiZSBicmFuY2hlZC4iIiIKKworICAgIHVudmVyc2lvbmVkX3dpa2lzID0gKEdURVNUX1VOVkVS
U0lPTkVEX1dJS0lTIGlmIHNlbGYucHJvamVjdCA9PSAnZ29vZ2xldGVzdCcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIEdNT0NLX1VOVkVSU0lPTkVEX1dJS0lTKQorICAgIHJldHVybiBb
ZiBmb3IgZiBpbiBvcy5saXN0ZGlyKHNlbGYud2lraV9kaXIpCisgICAgICAgICAgICBpZiAoZi5l
bmRzd2l0aCgnLndpa2knKSBhbmQKKyAgICAgICAgICAgICAgICBub3QgcmUubWF0Y2gocideVlxk
JywgZikgYW5kICAjIEV4Y2x1ZGVkIHZlcnNpb25lZCAud2lraSBmaWxlcy4KKyAgICAgICAgICAg
ICAgICBmIG5vdCBpbiB1bnZlcnNpb25lZF93aWtpcyldCisKKyAgZGVmIEJyYW5jaEZpbGVzKHNl
bGYpOgorICAgICIiIkJyYW5jaGVzIHRoZSAud2lraSBmaWxlcyBuZWVkZWQgdG8gYmUgYnJhbmNo
ZWQuIiIiCisKKyAgICBwcmludCAnQnJhbmNoaW5nICVkIC53aWtpIGZpbGVzOicgJSAobGVuKHNl
bGYuZmlsZXNfdG9fYnJhbmNoKSwpCisgICAgb3MuY2hkaXIoc2VsZi53aWtpX2RpcikKKyAgICBm
b3IgZiBpbiBzZWxmLmZpbGVzX3RvX2JyYW5jaDoKKyAgICAgIGNvbW1hbmQgPSAnc3ZuIGNwICVz
ICVzJXMnICUgKGYsIHNlbGYudmVyc2lvbl9wcmVmaXgsIGYpCisgICAgICBwcmludCBjb21tYW5k
CisgICAgICBvcy5zeXN0ZW0oY29tbWFuZCkKKworICBkZWYgVXBkYXRlTGlua3NJbkJyYW5jaGVk
RmlsZXMoc2VsZik6CisKKyAgICBmb3IgZiBpbiBzZWxmLmZpbGVzX3RvX2JyYW5jaDoKKyAgICAg
IHNvdXJjZV9maWxlID0gb3MucGF0aC5qb2luKHNlbGYud2lraV9kaXIsIGYpCisgICAgICB2ZXJz
aW9uZWRfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndpa2lfZGlyLCBzZWxmLnZlcnNpb25fcHJl
Zml4ICsgZikKKyAgICAgIHByaW50ICdVcGRhdGluZyBsaW5rcyBpbiAlcy4nICUgKHZlcnNpb25l
ZF9maWxlLCkKKyAgICAgIHRleHQgPSBmaWxlKHNvdXJjZV9maWxlLCAncicpLnJlYWQoKQorICAg
ICAgbmV3X3RleHQgPSBzZWxmLnNlYXJjaF9mb3JfcmUuc3ViKHNlbGYucmVwbGFjZV93aXRoLCB0
ZXh0KQorICAgICAgZmlsZSh2ZXJzaW9uZWRfZmlsZSwgJ3cnKS53cml0ZShuZXdfdGV4dCkKKwor
CitkZWYgbWFpbigpOgorICBpZiBsZW4oc3lzLmFyZ3YpICE9IDI6CisgICAgc3lzLmV4aXQoX19k
b2NfXykKKworICBicmFuY2hlciA9IFdpa2lCcmFuY2hlcihzeXMuYXJndlsxXSkKKyAgYnJhbmNo
ZXIuQnJhbmNoRmlsZXMoKQorICBicmFuY2hlci5VcGRhdGVMaW5rc0luQnJhbmNoZWRGaWxlcygp
CisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgbWFpbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUKaW5kZXggZmZjMGM5MGFkOTk1NzJk
Zjk0YWZiNWI2NDEzNmE5YzI5NDg4YWUwNi4uY2RmZjU4NDYzN2I3YTZlOWRmMWZhNDNjZThmNTg4
YzQzODE1ZTU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc2NyaXB0cy90
ZXN0L01ha2VmaWxlCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvdGVzdC9N
YWtlZmlsZQpAQCAtMjEsNyArMjEsOSBAQCBTQU1QTEVfRElSID0gLi4vLi4vc2FtcGxlcwogR1RF
U1RfTUFJTl9DQyA9IC4uLy4uL3NyYy9ndGVzdF9tYWluLmNjCiAKICMgRmxhZ3MgcGFzc2VkIHRv
IHRoZSBwcmVwcm9jZXNzb3IuCi1DUFBGTEFHUyArPSAtSSQoRlVTRURfR1RFU1RfRElSKQorIyBX
ZSBoYXZlIG5vIGlkZWEgaGVyZSB3aGV0aGVyIHB0aHJlYWRzIGlzIGF2YWlsYWJsZSBpbiB0aGUg
c3lzdGVtLCBzbworIyBkaXNhYmxlIGl0cyB1c2UuCitDUFBGTEFHUyArPSAtSSQoRlVTRURfR1RF
U1RfRElSKSAtREdURVNUX0hBU19QVEhSRUFEPTAKIAogIyBGbGFncyBwYXNzZWQgdG8gdGhlIEMr
KyBjb21waWxlci4KIENYWEZMQUdTICs9IC1nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zY3JpcHRzL3VwbG9hZC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Njcmlw
dHMvdXBsb2FkLnB5CmluZGV4IDZlNmY5YTE0NzE5ZWY4YzlmZGI2MDNhZDUwYmRkMzVkYzc5OTZl
MmQuLmM4NTJlNGM5MWUwNmVmN2M0OWUwMzg2ODM1MDlmZmQ5NDk1YzgyMGYgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvdXBsb2FkLnB5CisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3NjcmlwdHMvdXBsb2FkLnB5CkBAIC0yNDIsNyArMjQyLDcgQEAgY2xh
c3MgQWJzdHJhY3RScGNTZXJ2ZXIob2JqZWN0KToKICAgICBUaGUgYXV0aGVudGljYXRpb24gcHJv
Y2VzcyB3b3JrcyBhcyBmb2xsb3dzOgogICAgICAxKSBXZSBnZXQgYSB1c2VybmFtZSBhbmQgcGFz
c3dvcmQgZnJvbSB0aGUgdXNlcgogICAgICAyKSBXZSB1c2UgQ2xpZW50TG9naW4gdG8gb2J0YWlu
IGFuIEFVVEggdG9rZW4gZm9yIHRoZSB1c2VyCi0gICAgICAgIChzZWUgaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9hcGlzL2FjY291bnRzL0F1dGhGb3JJbnN0YWxsZWRBcHBzLmh0bWwpLgorICAgICAg
ICAoc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2lkZW50aXR5L3Byb3RvY29scy9B
dXRoRm9ySW5zdGFsbGVkQXBwcykuCiAgICAgIDMpIFdlIHBhc3MgdGhlIGF1dGggdG9rZW4gdG8g
L19haC9sb2dpbiBvbiB0aGUgc2VydmVyIHRvIG9idGFpbiBhbgogICAgICAgICBhdXRoZW50aWNh
dGlvbiBjb29raWUuIElmIGxvZ2luIHdhcyBzdWNjZXNzZnVsLCBpdCB0cmllcyB0byByZWRpcmVj
dAogICAgICAgICB1cyB0byB0aGUgVVJMIHdlIHByb3ZpZGVkLgpAQCAtNTA2LDcgKzUwNiw3IEBA
IGRlZiBFbmNvZGVNdWx0aXBhcnRGb3JtRGF0YShmaWVsZHMsIGZpbGVzKToKICAgICAoY29udGVu
dF90eXBlLCBib2R5KSByZWFkeSBmb3IgaHR0cGxpYi5IVFRQIGluc3RhbmNlLgogCiAgIFNvdXJj
ZToKLSAgICBodHRwOi8vYXNwbi5hY3RpdmVzdGF0ZS5jb20vQVNQTi9Db29rYm9vay9QeXRob24v
UmVjaXBlLzE0NjMwNgorICAgIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE2MDExNjA1
MjAwMS9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzE0NjMwNgogICAiIiIKICAgQk9VTkRB
UlkgPSAnLU0tQS1HLUktQy0tLUItTy1VLU4tRC1BLVItWS0nCiAgIENSTEYgPSAnXHJcbicKQEAg
LTczMiw3ICs3MzIsNyBAQCBjbGFzcyBTdWJ2ZXJzaW9uVkNTKFZlcnNpb25Db250cm9sU3lzdGVt
KToKICAgICBlbHNlOgogICAgICAgc2VsZi5yZXZfc3RhcnQgPSBzZWxmLnJldl9lbmQgPSBOb25l
CiAgICAgIyBDYWNoZSBvdXRwdXQgZnJvbSAic3ZuIGxpc3QgLXIgUkVWTk8gZGlybmFtZSIuCi0g
ICAgIyBLZXlzOiBkaXJuYW1lLCBWYWx1ZXM6IDItdHVwbGUgKG91cHV0IGZvciBzdGFydCByZXYg
YW5kIGVuZCByZXYpLgorICAgICMgS2V5czogZGlybmFtZSwgVmFsdWVzOiAyLXR1cGxlIChvdXRw
dXQgZm9yIHN0YXJ0IHJldiBhbmQgZW5kIHJldikuCiAgICAgc2VsZi5zdm5sc19jYWNoZSA9IHt9
CiAgICAgIyBTVk4gYmFzZSBVUkwgaXMgcmVxdWlyZWQgdG8gZmV0Y2ggZmlsZXMgZGVsZXRlZCBp
biBhbiBvbGRlciByZXZpc2lvbi4KICAgICAjIFJlc3VsdCBpcyBjYWNoZWQgdG8gbm90IGd1ZXNz
IGl0IG92ZXIgYW5kIG92ZXIgYWdhaW4gaW4gR2V0QmFzZUZpbGUoKS4KQEAgLTgwNyw3ICs4MDcs
NyBAQCBjbGFzcyBTdWJ2ZXJzaW9uVkNTKFZlcnNpb25Db250cm9sU3lzdGVtKToKICAgICAjIHN2
biBjYXQgdHJhbnNsYXRlcyBrZXl3b3JkcyBidXQgc3ZuIGRpZmYgZG9lc24ndC4gQXMgYSByZXN1
bHQgb2YgdGhpcwogICAgICMgYmVoYXZpb3IgcGF0Y2hpbmcuUGF0Y2hDaHVua3MoKSBmYWlscyB3
aXRoIGEgY2h1bmsgbWlzbWF0Y2ggZXJyb3IuCiAgICAgIyBUaGlzIHBhcnQgd2FzIG9yaWdpbmFs
bHkgd3JpdHRlbiBieSB0aGUgUmV2aWV3IEJvYXJkIGRldmVsb3BtZW50IHRlYW0KLSAgICAjIHdo
byBoYWQgdGhlIHNhbWUgcHJvYmxlbSAoaHR0cDovL3Jldmlld3MucmV2aWV3LWJvYXJkLm9yZy9y
LzI3Ni8pLgorICAgICMgd2hvIGhhZCB0aGUgc2FtZSBwcm9ibGVtIChodHRwczovL3Jldmlld3Mu
cmV2aWV3Ym9hcmQub3JnL3IvMjc2LykuCiAgICAgIyBNYXBwaW5nIG9mIGtleXdvcmRzIHRvIGtu
b3duIGFsaWFzZXMKICAgICBzdm5fa2V5d29yZHMgPSB7CiAgICAgICAjIFN0YW5kYXJkIGtleXdv
cmRzCkBAIC04NjAsNyArODYwLDcgQEAgY2xhc3MgU3VidmVyc2lvblZDUyhWZXJzaW9uQ29udHJv
bFN5c3RlbSk6CiAgICAgICBzdGF0dXNfbGluZXMgPSBzdGF0dXMuc3BsaXRsaW5lcygpCiAgICAg
ICAjIElmIGZpbGUgaXMgaW4gYSBjbCwgdGhlIG91dHB1dCB3aWxsIGJlZ2luIHdpdGgKICAgICAg
ICMgIlxuLS0tIENoYW5nZWxpc3QgJ2NsX25hbWUnOlxuIi4gIFNlZQotICAgICAgIyBodHRwOi8v
c3ZuLmNvbGxhYi5uZXQvcmVwb3Mvc3ZuL3RydW5rL25vdGVzL2NoYW5nZWxpc3QtZGVzaWduLnR4
dAorICAgICAgIyBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAwOTA5MTgyMzQ4MTUvc3Zu
LmNvbGxhYi5uZXQvcmVwb3Mvc3ZuL3RydW5rL25vdGVzL2NoYW5nZWxpc3QtZGVzaWduLnR4dAog
ICAgICAgaWYgKGxlbihzdGF0dXNfbGluZXMpID09IDMgYW5kCiAgICAgICAgICAgbm90IHN0YXR1
c19saW5lc1swXSBhbmQKICAgICAgICAgICBzdGF0dXNfbGluZXNbMV0uc3RhcnRzd2l0aCgiLS0t
IENoYW5nZWxpc3QiKSk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMv
Z3Rlc3QtYWxsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWFsbC5jYwpp
bmRleCBmZTM0NzY1ZmI2NzIxOGE1NmNiNWUyNTJhNzBlNjhhMzZiYzg4ZDA3Li5iMjE3YTE4MDA2
YjBjOGJkYWY0YTlmOWI2ZDA2ZGU0ZmQ4YWQ5ZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtYWxsLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NyYy9ndGVzdC1hbGwuY2MKQEAgLTI2LDIyICsyNiwyMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiBtaGV1bGVAZ29v
Z2xlLmNvbSAoTWFya3VzIEhldWxlKQotLy8KLS8vIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdv
cmsgKEdvb2dsZSBUZXN0KQorLy8gR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1l
d29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8gU29tZXRpbWVzIGl0J3MgZGVzaXJhYmxlIHRvIGJ1
aWxkIEdvb2dsZSBUZXN0IGJ5IGNvbXBpbGluZyBhIHNpbmdsZSBmaWxlLgogLy8gVGhpcyBmaWxl
IHNlcnZlcyB0aGlzIHB1cnBvc2UuCiAKIC8vIFRoaXMgbGluZSBlbnN1cmVzIHRoYXQgZ3Rlc3Qu
aCBjYW4gYmUgY29tcGlsZWQgb24gaXRzIG93biwgZXZlbgogLy8gd2hlbiBpdCdzIGZ1c2VkLgot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogLy8g
VGhlIGZvbGxvd2luZyBsaW5lcyBwdWxsIGluIHRoZSByZWFsIGd0ZXN0ICouY2MgZmlsZXMuCiAj
aW5jbHVkZSAic3JjL2d0ZXN0LmNjIgogI2luY2x1ZGUgInNyYy9ndGVzdC1kZWF0aC10ZXN0LmNj
IgogI2luY2x1ZGUgInNyYy9ndGVzdC1maWxlcGF0aC5jYyIKICNpbmNsdWRlICJzcmMvZ3Rlc3Qt
cG9ydC5jYyIKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtcHJpbnRlcnMuY2MiCiAjaW5jbHVkZSAic3Jj
L2d0ZXN0LXRlc3QtcGFydC5jYyIKICNpbmNsdWRlICJzcmMvZ3Rlc3QtdHlwZWQtdGVzdC5jYyIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1kZWF0aC10ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MKaW5k
ZXggMGNmNzgyNWJjYWM3OWZhMzVkMGExMjQ4ZTIzMDhhMjRhYTYyN2I4YS4uMDkwODM1NTE2MTJl
M2MzYjliM2JkN2QxZWU2MDZjMThmZmI1ZjczYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MKQEAgLTI2LDUyICsyNiw2NSBAQAogLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiksIHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9z
ZXYpCisKIC8vCiAvLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBkZWF0aCB0ZXN0cy4KIAotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5hbC9n
dGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgorI2luY2x1
ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5h
bC9jdXN0b20vZ3Rlc3QuaCIKIAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCiAKLSNpZiBHVEVT
VF9PU19NQUMKLSNpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgotI2VuZGlmICAvLyBHVEVTVF9PU19N
QUMKKyMgaWYgR1RFU1RfT1NfTUFDCisjICBpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgorIyBlbmRp
ZiAgLy8gR1RFU1RfT1NfTUFDCiAKLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZjbnRs
Lmg+Ci0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+CisjIGluY2x1ZGUg
PGVycm5vLmg+CisjIGluY2x1ZGUgPGZjbnRsLmg+CisjIGluY2x1ZGUgPGxpbWl0cy5oPgogCi0j
aWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbHNlCi0jaW5jbHVk
ZSA8c3lzL21tYW4uaD4KLSNpbmNsdWRlIDxzeXMvd2FpdC5oPgotI2VuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCisjIGlmIEdURVNUX09TX0xJTlVYCisjICBpbmNsdWRlIDxzaWduYWwuaD4KKyMg
ZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RF
U1QKKyMgaW5jbHVkZSA8c3RkYXJnLmg+CisKKyMgaWYgR1RFU1RfT1NfV0lORE9XUworIyAgaW5j
bHVkZSA8d2luZG93cy5oPgorIyBlbHNlCisjICBpbmNsdWRlIDxzeXMvbW1hbi5oPgorIyAgaW5j
bHVkZSA8c3lzL3dhaXQuaD4KKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworIyBpZiBH
VEVTVF9PU19RTlgKKyMgIGluY2x1ZGUgPHNwYXduLmg+CisjIGVuZGlmICAvLyBHVEVTVF9PU19R
TlgKKworIyBpZiBHVEVTVF9PU19GVUNIU0lBCisjICBpbmNsdWRlIDxsaWIvZmRpby9pby5oPgor
IyAgaW5jbHVkZSA8bGliL2ZkaW8vc3Bhd24uaD4KKyMgIGluY2x1ZGUgPHppcmNvbi9wcm9jZXNz
YXJncy5oPgorIyAgaW5jbHVkZSA8emlyY29uL3N5c2NhbGxzLmg+CisjICBpbmNsdWRlIDx6aXJj
b24vc3lzY2FsbHMvcG9ydC5oPgorIyBlbmRpZiAgLy8gR1RFU1RfT1NfRlVDSFNJQQogCi0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0
ZXN0LXN0cmluZy5oPgorI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCi0vLyBJbmRp
Y2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdz
Ci0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwt
aW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3Iu
ICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBp
bmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBH
VEVTVF9JTVBMRU1FTlRBVElPTl8gMQorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCIK
KyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKICNpbmNsdWRlICJzcmMv
Z3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCiAKIG5h
bWVzcGFjZSB0ZXN0aW5nIHsKIAogLy8gQ29uc3RhbnRzLgogCiAvLyBUaGUgZGVmYXVsdCBkZWF0
aCB0ZXN0IHN0eWxlLgotc3RhdGljIGNvbnN0IGNoYXIga0RlZmF1bHREZWF0aFRlc3RTdHlsZVtd
ID0gImZhc3QiOworLy8KKy8vIFRoaXMgaXMgZGVmaW5lZCBpbiBpbnRlcm5hbC9ndGVzdC1wb3J0
LmggYXMgImZhc3QiLCBidXQgY2FuIGJlIG92ZXJyaWRkZW4gYnkKKy8vIGEgZGVmaW5pdGlvbiBp
biBpbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oLiBUaGUgcmVjb21tZW5kZWQgdmFsdWUsIHdo
aWNoIGlzCisvLyB1c2VkIGludGVybmFsbHkgYXQgR29vZ2xlLCBpcyAidGhyZWFkc2FmZSIuCitz
dGF0aWMgY29uc3QgY2hhciBrRGVmYXVsdERlYXRoVGVzdFN0eWxlW10gPSBHVEVTVF9ERUZBVUxU
X0RFQVRIX1RFU1RfU1RZTEU7CiAKIEdURVNUX0RFRklORV9zdHJpbmdfKAogICAgIGRlYXRoX3Rl
c3Rfc3R5bGUsCkBAIC0xMDAsMzYgKzExMyw3OSBAQCBHVEVTVF9ERUZJTkVfc3RyaW5nXygKICAg
ICAiSW5kaWNhdGVzIHRoZSBmaWxlLCBsaW5lIG51bWJlciwgdGVtcG9yYWwgaW5kZXggb2YgIgog
ICAgICJ0aGUgc2luZ2xlIGRlYXRoIHRlc3QgdG8gcnVuLCBhbmQgYSBmaWxlIGRlc2NyaXB0b3Ig
dG8gIgogICAgICJ3aGljaCBhIHN1Y2Nlc3MgY29kZSBtYXkgYmUgc2VudCwgYWxsIHNlcGFyYXRl
ZCBieSAiCi0gICAgImNvbG9ucy4gIFRoaXMgZmxhZyBpcyBzcGVjaWZpZWQgaWYgYW5kIG9ubHkg
aWYgdGhlIGN1cnJlbnQgIgorICAgICJ0aGUgJ3wnIGNoYXJhY3RlcnMuICBUaGlzIGZsYWcgaXMg
c3BlY2lmaWVkIGlmIGFuZCBvbmx5IGlmIHRoZSBjdXJyZW50ICIKICAgICAicHJvY2VzcyBpcyBh
IHN1Yi1wcm9jZXNzIGxhdW5jaGVkIGZvciBydW5uaW5nIGEgdGhyZWFkLXNhZmUgIgogICAgICJk
ZWF0aCB0ZXN0LiAgRk9SIElOVEVSTkFMIFVTRSBPTkxZLiIpOwogfSAgLy8gbmFtZXNwYWNlIGlu
dGVybmFsCiAKICNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAogCituYW1lc3BhY2UgaW50ZXJuYWwg
eworCisvLyBWYWxpZCBvbmx5IGZvciBmYXN0IGRlYXRoIHRlc3RzLiBJbmRpY2F0ZXMgdGhlIGNv
ZGUgaXMgcnVubmluZyBpbiB0aGUKKy8vIGNoaWxkIHByb2Nlc3Mgb2YgYSBmYXN0IHN0eWxlIGRl
YXRoIHRlc3QuCisjIGlmICFHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19GVUNIU0lBCitz
dGF0aWMgYm9vbCBnX2luX2Zhc3RfZGVhdGhfdGVzdF9jaGlsZCA9IGZhbHNlOworIyBlbmRpZgor
CisvLyBSZXR1cm5zIGEgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNhbGxl
ciBpcyBjdXJyZW50bHkKKy8vIGV4ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiB0aGUgZGVhdGgg
dGVzdCBjaGlsZCBwcm9jZXNzLiAgVG9vbHMgc3VjaCBhcworLy8gVmFsZ3JpbmQgaGVhcCBjaGVj
a2VycyBtYXkgbmVlZCB0aGlzIHRvIG1vZGlmeSB0aGVpciBiZWhhdmlvciBpbiBkZWF0aAorLy8g
dGVzdHMuICBJTVBPUlRBTlQ6IFRoaXMgaXMgYW4gaW50ZXJuYWwgdXRpbGl0eS4gIFVzaW5nIGl0
IG1heSBicmVhayB0aGUKKy8vIGltcGxlbWVudGF0aW9uIG9mIGRlYXRoIHRlc3RzLiAgVXNlciBj
b2RlIE1VU1QgTk9UIHVzZSBpdC4KK2Jvb2wgSW5EZWF0aFRlc3RDaGlsZCgpIHsKKyMgaWYgR1RF
U1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19GVUNIU0lBCisKKyAgLy8gT24gV2luZG93cyBhbmQg
RnVjaHNpYSwgZGVhdGggdGVzdHMgYXJlIHRocmVhZC1zYWZlIHJlZ2FyZGxlc3Mgb2YgdGhlIHZh
bHVlCisgIC8vIG9mIHRoZSBkZWF0aF90ZXN0X3N0eWxlIGZsYWcuCisgIHJldHVybiAhR1RFU1Rf
RkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkuZW1wdHkoKTsKKworIyBlbHNlCisKKyAgaWYg
KEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPT0gInRocmVhZHNhZmUiKQorICAgIHJldHVy
biAhR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkuZW1wdHkoKTsKKyAgZWxzZQor
ICAgIHJldHVybiBnX2luX2Zhc3RfZGVhdGhfdGVzdF9jaGlsZDsKKyNlbmRpZgorfQorCit9ICAv
LyBuYW1lc3BhY2UgaW50ZXJuYWwKKwogLy8gRXhpdGVkV2l0aENvZGUgY29uc3RydWN0b3IuCiBF
eGl0ZWRXaXRoQ29kZTo6RXhpdGVkV2l0aENvZGUoaW50IGV4aXRfY29kZSkgOiBleGl0X2NvZGVf
KGV4aXRfY29kZSkgewogfQogCiAvLyBFeGl0ZWRXaXRoQ29kZSBmdW5jdGlvbi1jYWxsIG9wZXJh
dG9yLgogYm9vbCBFeGl0ZWRXaXRoQ29kZTo6b3BlcmF0b3IoKShpbnQgZXhpdF9zdGF0dXMpIGNv
bnN0IHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MgfHwgR1RF
U1RfT1NfRlVDSFNJQQorCiAgIHJldHVybiBleGl0X3N0YXR1cyA9PSBleGl0X2NvZGVfOwotI2Vs
c2UKKworIyBlbHNlCisKICAgcmV0dXJuIFdJRkVYSVRFRChleGl0X3N0YXR1cykgJiYgV0VYSVRT
VEFUVVMoZXhpdF9zdGF0dXMpID09IGV4aXRfY29kZV87Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1MKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUyB8fCBHVEVTVF9PU19GVUNIU0lB
CiB9CiAKLSNpZiAhR1RFU1RfT1NfV0lORE9XUworIyBpZiAhR1RFU1RfT1NfV0lORE9XUyAmJiAh
R1RFU1RfT1NfRlVDSFNJQQogLy8gS2lsbGVkQnlTaWduYWwgY29uc3RydWN0b3IuCiBLaWxsZWRC
eVNpZ25hbDo6S2lsbGVkQnlTaWduYWwoaW50IHNpZ251bSkgOiBzaWdudW1fKHNpZ251bSkgewog
fQogCiAvLyBLaWxsZWRCeVNpZ25hbCBmdW5jdGlvbi1jYWxsIG9wZXJhdG9yLgogYm9vbCBLaWxs
ZWRCeVNpZ25hbDo6b3BlcmF0b3IoKShpbnQgZXhpdF9zdGF0dXMpIGNvbnN0IHsKKyMgIGlmIGRl
ZmluZWQoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8pCisgIHsKKyAgICBib29sIHJl
c3VsdDsKKyAgICBpZiAoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8oc2lnbnVtXywg
ZXhpdF9zdGF0dXMsICZyZXN1bHQpKSB7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAg
fQorIyAgZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8p
CiAgIHJldHVybiBXSUZTSUdOQUxFRChleGl0X3N0YXR1cykgJiYgV1RFUk1TSUcoZXhpdF9zdGF0
dXMpID09IHNpZ251bV87CiB9Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlm
ICAvLyAhR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfRlVDSFNJQQogCiBuYW1lc3BhY2Ug
aW50ZXJuYWwgewogCkBAIC0xMzcsMjIgKzE5MywyNyBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewog
CiAvLyBHZW5lcmF0ZXMgYSB0ZXh0dWFsIGRlc2NyaXB0aW9uIG9mIGEgZ2l2ZW4gZXhpdCBjb2Rl
LCBpbiB0aGUgZm9ybWF0CiAvLyBzcGVjaWZpZWQgYnkgd2FpdCgyKS4KLXN0YXRpYyBTdHJpbmcg
RXhpdFN1bW1hcnkoaW50IGV4aXRfY29kZSkgeworc3RhdGljIHN0ZDo6c3RyaW5nIEV4aXRTdW1t
YXJ5KGludCBleGl0X2NvZGUpIHsKICAgTWVzc2FnZSBtOwotI2lmIEdURVNUX09TX1dJTkRPV1MK
KworIyBpZiBHVEVTVF9PU19XSU5ET1dTIHx8IEdURVNUX09TX0ZVQ0hTSUEKKwogICBtIDw8ICJF
eGl0ZWQgd2l0aCBleGl0IHN0YXR1cyAiIDw8IGV4aXRfY29kZTsKLSNlbHNlCisKKyMgZWxzZQor
CiAgIGlmIChXSUZFWElURUQoZXhpdF9jb2RlKSkgewogICAgIG0gPDwgIkV4aXRlZCB3aXRoIGV4
aXQgc3RhdHVzICIgPDwgV0VYSVRTVEFUVVMoZXhpdF9jb2RlKTsKICAgfSBlbHNlIGlmIChXSUZT
SUdOQUxFRChleGl0X2NvZGUpKSB7CiAgICAgbSA8PCAiVGVybWluYXRlZCBieSBzaWduYWwgIiA8
PCBXVEVSTVNJRyhleGl0X2NvZGUpOwogICB9Ci0jaWZkZWYgV0NPUkVEVU1QCisjICBpZmRlZiBX
Q09SRURVTVAKICAgaWYgKFdDT1JFRFVNUChleGl0X2NvZGUpKSB7CiAgICAgbSA8PCAiIChjb3Jl
IGR1bXBlZCkiOwogICB9Ci0jZW5kaWYKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworIyAg
ZW5kaWYKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfRlVDSFNJQQor
CiAgIHJldHVybiBtLkdldFN0cmluZygpOwogfQogCkBAIC0xNjIsNDIgKzIyMyw1OSBAQCBib29s
IEV4aXRlZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1cykgewogICByZXR1cm4gIUV4aXRl
ZFdpdGhDb2RlKDApKGV4aXRfc3RhdHVzKTsKIH0KIAotI2lmICFHVEVTVF9PU19XSU5ET1dTCisj
IGlmICFHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19GVUNIU0lBCiAvLyBHZW5lcmF0ZXMg
YSB0ZXh0dWFsIGZhaWx1cmUgbWVzc2FnZSB3aGVuIGEgZGVhdGggdGVzdCBmaW5kcyBtb3JlIHRo
YW4KIC8vIG9uZSB0aHJlYWQgcnVubmluZywgb3IgY2Fubm90IGRldGVybWluZSB0aGUgbnVtYmVy
IG9mIHRocmVhZHMsIHByaW9yCiAvLyB0byBleGVjdXRpbmcgdGhlIGdpdmVuIHN0YXRlbWVudC4g
IEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUKIC8vIGNhbGxlciBub3QgdG8gcGFzcyBh
IHRocmVhZF9jb3VudCBvZiAxLgotc3RhdGljIFN0cmluZyBEZWF0aFRlc3RUaHJlYWRXYXJuaW5n
KHNpemVfdCB0aHJlYWRfY291bnQpIHsKK3N0YXRpYyBzdGQ6OnN0cmluZyBEZWF0aFRlc3RUaHJl
YWRXYXJuaW5nKHNpemVfdCB0aHJlYWRfY291bnQpIHsKICAgTWVzc2FnZSBtc2c7CiAgIG1zZyA8
PCAiRGVhdGggdGVzdHMgdXNlIGZvcmsoKSwgd2hpY2ggaXMgdW5zYWZlIHBhcnRpY3VsYXJseSIK
ICAgICAgIDw8ICIgaW4gYSB0aHJlYWRlZCBjb250ZXh0LiBGb3IgdGhpcyB0ZXN0LCAiIDw8IEdU
RVNUX05BTUVfIDw8ICIgIjsKLSAgaWYgKHRocmVhZF9jb3VudCA9PSAwKQorICBpZiAodGhyZWFk
X2NvdW50ID09IDApIHsKICAgICBtc2cgPDwgImNvdWxkbid0IGRldGVjdCB0aGUgbnVtYmVyIG9m
IHRocmVhZHMuIjsKLSAgZWxzZQorICB9IGVsc2UgewogICAgIG1zZyA8PCAiZGV0ZWN0ZWQgIiA8
PCB0aHJlYWRfY291bnQgPDwgIiB0aHJlYWRzLiI7CisgIH0KKyAgbXNnIDw8ICIgU2VlICIKKyAg
ICAgICAgICJodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvYmxvYi9tYXN0ZXIv
Z29vZ2xldGVzdC9kb2NzLyIKKyAgICAgICAgICJhZHZhbmNlZC5tZCNkZWF0aC10ZXN0cy1hbmQt
dGhyZWFkcyIKKyAgICAgIDw8ICIgZm9yIG1vcmUgZXhwbGFuYXRpb24gYW5kIHN1Z2dlc3RlZCBz
b2x1dGlvbnMsIGVzcGVjaWFsbHkgaWYiCisgICAgICA8PCAiIHRoaXMgaXMgdGhlIGxhc3QgbWVz
c2FnZSB5b3Ugc2VlIGJlZm9yZSB5b3VyIHRlc3QgdGltZXMgb3V0LiI7CiAgIHJldHVybiBtc2cu
R2V0U3RyaW5nKCk7CiB9Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAv
LyAhR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfRlVDSFNJQQogCiAvLyBGbGFnIGNoYXJh
Y3RlcnMgZm9yIHJlcG9ydGluZyBhIGRlYXRoIHRlc3QgdGhhdCBkaWQgbm90IGRpZS4KIHN0YXRp
YyBjb25zdCBjaGFyIGtEZWF0aFRlc3RMaXZlZCA9ICdMJzsKIHN0YXRpYyBjb25zdCBjaGFyIGtE
ZWF0aFRlc3RSZXR1cm5lZCA9ICdSJzsKK3N0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RUaHJl
dyA9ICdUJzsKIHN0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RJbnRlcm5hbEVycm9yID0gJ0kn
OwogCi0vLyBBbiBlbnVtZXJhdGlvbiBkZXNjcmliaW5nIGFsbCBvZiB0aGUgcG9zc2libGUgd2F5
cyB0aGF0IGEgZGVhdGggdGVzdAotLy8gY2FuIGNvbmNsdWRlLiAgRElFRCBtZWFucyB0aGF0IHRo
ZSBwcm9jZXNzIGRpZWQgd2hpbGUgZXhlY3V0aW5nIHRoZQotLy8gdGVzdCBjb2RlOyBMSVZFRCBt
ZWFucyB0aGF0IHByb2Nlc3MgbGl2ZWQgYmV5b25kIHRoZSBlbmQgb2YgdGhlIHRlc3QKLS8vIGNv
ZGU7IGFuZCBSRVRVUk5FRCBtZWFucyB0aGF0IHRoZSB0ZXN0IHN0YXRlbWVudCBhdHRlbXB0ZWQg
YSAicmV0dXJuLCIKLS8vIHdoaWNoIGlzIG5vdCBhbGxvd2VkLiAgSU5fUFJPR1JFU1MgbWVhbnMg
dGhlIHRlc3QgaGFzIG5vdCB5ZXQKLS8vIGNvbmNsdWRlZC4KLWVudW0gRGVhdGhUZXN0T3V0Y29t
ZSB7IElOX1BST0dSRVNTLCBESUVELCBMSVZFRCwgUkVUVVJORUQgfTsKKyNpZiBHVEVTVF9PU19G
VUNIU0lBCisKKy8vIEZpbGUgZGVzY3JpcHRvciB1c2VkIGZvciB0aGUgcGlwZSBpbiB0aGUgY2hp
bGQgcHJvY2Vzcy4KK3N0YXRpYyBjb25zdCBpbnQga0Z1Y2hzaWFSZWFkUGlwZUZkID0gMzsKKwor
I2VuZGlmCisKKy8vIEFuIGVudW1lcmF0aW9uIGRlc2NyaWJpbmcgYWxsIG9mIHRoZSBwb3NzaWJs
ZSB3YXlzIHRoYXQgYSBkZWF0aCB0ZXN0IGNhbgorLy8gY29uY2x1ZGUuICBESUVEIG1lYW5zIHRo
YXQgdGhlIHByb2Nlc3MgZGllZCB3aGlsZSBleGVjdXRpbmcgdGhlIHRlc3QKKy8vIGNvZGU7IExJ
VkVEIG1lYW5zIHRoYXQgcHJvY2VzcyBsaXZlZCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgdGVzdCBj
b2RlOworLy8gUkVUVVJORUQgbWVhbnMgdGhhdCB0aGUgdGVzdCBzdGF0ZW1lbnQgYXR0ZW1wdGVk
IHRvIGV4ZWN1dGUgYSByZXR1cm4KKy8vIHN0YXRlbWVudCwgd2hpY2ggaXMgbm90IGFsbG93ZWQ7
IFRIUkVXIG1lYW5zIHRoYXQgdGhlIHRlc3Qgc3RhdGVtZW50CisvLyByZXR1cm5lZCBjb250cm9s
IGJ5IHRocm93aW5nIGFuIGV4Y2VwdGlvbi4gIElOX1BST0dSRVNTIG1lYW5zIHRoZSB0ZXN0Cisv
LyBoYXMgbm90IHlldCBjb25jbHVkZWQuCisvLyBGSVhNRTogVW5pZnkgbmFtZXMgYW5kIHBvc3Np
Ymx5IHZhbHVlcyBmb3IKKy8vIEFib3J0UmVhc29uLCBEZWF0aFRlc3RPdXRjb21lLCBhbmQgZmxh
ZyBjaGFyYWN0ZXJzIGFib3ZlLgorZW51bSBEZWF0aFRlc3RPdXRjb21lIHsgSU5fUFJPR1JFU1Ms
IERJRUQsIExJVkVELCBSRVRVUk5FRCwgVEhSRVcgfTsKIAogLy8gUm91dGluZSBmb3IgYWJvcnRp
bmcgdGhlIHByb2dyYW0gd2hpY2ggaXMgc2FmZSB0byBjYWxsIGZyb20gYW4KIC8vIGV4ZWMtc3R5
bGUgZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzLCBpbiB3aGljaCBjYXNlIHRoZSBlcnJvcgogLy8g
bWVzc2FnZSBpcyBwcm9wYWdhdGVkIGJhY2sgdG8gdGhlIHBhcmVudCBwcm9jZXNzLiAgT3RoZXJ3
aXNlLCB0aGUKIC8vIG1lc3NhZ2UgaXMgc2ltcGx5IHByaW50ZWQgdG8gc3RkZXJyLiAgSW4gZWl0
aGVyIGNhc2UsIHRoZSBwcm9ncmFtCiAvLyB0aGVuIGV4aXRzIHdpdGggc3RhdHVzIDEuCi12b2lk
IERlYXRoVGVzdEFib3J0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgeworc3RhdGljIHZvaWQgRGVh
dGhUZXN0QWJvcnQoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsKICAgLy8gT24gYSBQT1NJ
WCBzeXN0ZW0sIHRoaXMgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCBmcm9tIGEgdGhyZWFkc2FmZS1z
dHlsZQogICAvLyBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nlc3MsIHdoaWNoIG9wZXJhdGVzIG9uIGEg
dmVyeSBzbWFsbCBzdGFjay4gIFVzZQogICAvLyB0aGUgaGVhcCBmb3IgYW55IGFkZGl0aW9uYWwg
bm9uLW1pbnVzY3VsZSBtZW1vcnkgcmVxdWlyZW1lbnRzLgpAQCAtMjEyLDE4ICsyOTAsMTkgQEAg
dm9pZCBEZWF0aFRlc3RBYm9ydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsKICAgfSBlbHNlIHsK
ICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgbWVzc2FnZS5jX3N0cigpKTsKICAgICBmZmx1c2go
c3RkZXJyKTsKLSAgICBhYm9ydCgpOworICAgIHBvc2l4OjpBYm9ydCgpOwogICB9CiB9CiAKIC8v
IEEgcmVwbGFjZW1lbnQgZm9yIENIRUNLIHRoYXQgY2FsbHMgRGVhdGhUZXN0QWJvcnQgaWYgdGhl
IGFzc2VydGlvbgogLy8gZmFpbHMuCi0jZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGV4
cHJlc3Npb24pIFwKKyMgZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGV4cHJlc3Npb24p
IFwKICAgZG8geyBcCiAgICAgaWYgKCE6OnRlc3Rpbmc6OmludGVybmFsOjpJc1RydWUoZXhwcmVz
c2lvbikpIHsgXAotICAgICAgRGVhdGhUZXN0QWJvcnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3Ry
aW5nOjpGb3JtYXQoIFwKLSAgICAgICAgICAiQ0hFQ0sgZmFpbGVkOiBGaWxlICVzLCBsaW5lICVk
OiAlcyIsIFwKLSAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sICNleHByZXNzaW9uKSk7IFwK
KyAgICAgIERlYXRoVGVzdEFib3J0KCBcCisgICAgICAgICAgOjpzdGQ6OnN0cmluZygiQ0hFQ0sg
ZmFpbGVkOiBGaWxlICIpICsgX19GSUxFX18gKyAgIiwgbGluZSAiIFwKKyAgICAgICAgICArIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlN0cmVhbWFibGVUb1N0cmluZyhfX0xJTkVfXykgKyAiOiAiIFwK
KyAgICAgICAgICArICNleHByZXNzaW9uKTsgXAogICAgIH0gXAogICB9IHdoaWxlICg6OnRlc3Rp
bmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgpKQogCkBAIC0yMzQsMjIgKzMxMywyMyBAQCB2b2lk
IERlYXRoVGVzdEFib3J0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewogLy8gZXZhbHVhdGVzIHRo
ZSBleHByZXNzaW9uIGFzIGxvbmcgYXMgaXQgZXZhbHVhdGVzIHRvIC0xIGFuZCBzZXRzCiAvLyBl
cnJubyB0byBFSU5UUi4gIElmIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAtMSBidXQgZXJy
bm8gaXMKIC8vIHNvbWV0aGluZyBvdGhlciB0aGFuIEVJTlRSLCBEZWF0aFRlc3RBYm9ydCBpcyBj
YWxsZWQuCi0jZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oZXhwcmVzc2lv
bikgXAorIyBkZWZpbmUgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhleHByZXNzaW9u
KSBcCiAgIGRvIHsgXAogICAgIGludCBndGVzdF9yZXR2YWw7IFwKICAgICBkbyB7IFwKICAgICAg
IGd0ZXN0X3JldHZhbCA9IChleHByZXNzaW9uKTsgXAogICAgIH0gd2hpbGUgKGd0ZXN0X3JldHZh
bCA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUik7IFwKICAgICBpZiAoZ3Rlc3RfcmV0dmFsID09IC0x
KSB7IFwKLSAgICAgIERlYXRoVGVzdEFib3J0KDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmluZzo6
Rm9ybWF0KCBcCi0gICAgICAgICAgIkNIRUNLIGZhaWxlZDogRmlsZSAlcywgbGluZSAlZDogJXMg
IT0gLTEiLCBcCi0gICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCAjZXhwcmVzc2lvbikpOyBc
CisgICAgICBEZWF0aFRlc3RBYm9ydCggXAorICAgICAgICAgIDo6c3RkOjpzdHJpbmcoIkNIRUNL
IGZhaWxlZDogRmlsZSAiKSArIF9fRklMRV9fICsgIiwgbGluZSAiIFwKKyAgICAgICAgICArIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlN0cmVhbWFibGVUb1N0cmluZyhfX0xJTkVfXykgKyAiOiAiIFwK
KyAgICAgICAgICArICNleHByZXNzaW9uICsgIiAhPSAtMSIpOyBcCiAgICAgfSBcCiAgIH0gd2hp
bGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCiAKIC8vIFJldHVybnMgdGhl
IG1lc3NhZ2UgZGVzY3JpYmluZyB0aGUgbGFzdCBzeXN0ZW0gZXJyb3IgaW4gZXJybm8uCi1TdHJp
bmcgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKSB7Ci0gICAgcmV0dXJuIFN0cmluZyhlcnJubyA9
PSAwID8gIiIgOiBwb3NpeDo6U3RyRXJyb3IoZXJybm8pKTsKK3N0ZDo6c3RyaW5nIEdldExhc3RF
cnJub0Rlc2NyaXB0aW9uKCkgeworICAgIHJldHVybiBlcnJubyA9PSAwID8gIiIgOiBwb3NpeDo6
U3RyRXJyb3IoZXJybm8pOwogfQogCiAvLyBUaGlzIGlzIGNhbGxlZCBmcm9tIGEgZGVhdGggdGVz
dCBwYXJlbnQgcHJvY2VzcyB0byByZWFkIGEgZmFpbHVyZQpAQCAtMjk5LDExICszNzksMTEgQEAg
Y29uc3QgY2hhciogRGVhdGhUZXN0OjpMYXN0TWVzc2FnZSgpIHsKICAgcmV0dXJuIGxhc3RfZGVh
dGhfdGVzdF9tZXNzYWdlXy5jX3N0cigpOwogfQogCi12b2lkIERlYXRoVGVzdDo6c2V0X2xhc3Rf
ZGVhdGhfdGVzdF9tZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewordm9pZCBEZWF0aFRl
c3Q6OnNldF9sYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2Fn
ZSkgewogICBsYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZV8gPSBtZXNzYWdlOwogfQogCi1TdHJpbmcg
RGVhdGhUZXN0OjpsYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZV87CitzdGQ6OnN0cmluZyBEZWF0aFRl
c3Q6Omxhc3RfZGVhdGhfdGVzdF9tZXNzYWdlXzsKIAogLy8gUHJvdmlkZXMgY3Jvc3MgcGxhdGZv
cm0gaW1wbGVtZW50YXRpb24gZm9yIHNvbWUgZGVhdGggZnVuY3Rpb25hbGl0eS4KIGNsYXNzIERl
YXRoVGVzdEltcGwgOiBwdWJsaWMgRGVhdGhUZXN0IHsKQEAgLTM4OCw2ICs0NjgsOSBAQCB2b2lk
IERlYXRoVGVzdEltcGw6OlJlYWRBbmRJbnRlcnByZXRTdGF0dXNCeXRlKCkgewogICAgICAgY2Fz
ZSBrRGVhdGhUZXN0UmV0dXJuZWQ6CiAgICAgICAgIHNldF9vdXRjb21lKFJFVFVSTkVEKTsKICAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIGtEZWF0aFRlc3RUaHJldzoKKyAgICAgICAgc2V0X291
dGNvbWUoVEhSRVcpOworICAgICAgICBicmVhazsKICAgICAgIGNhc2Uga0RlYXRoVGVzdExpdmVk
OgogICAgICAgICBzZXRfb3V0Y29tZShMSVZFRCk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDE2LDE5
ICs0OTksNDYgQEAgdm9pZCBEZWF0aFRlc3RJbXBsOjpBYm9ydChBYm9ydFJlYXNvbiByZWFzb24p
IHsKICAgLy8gaXQgZmluZHMgYW55IGRhdGEgaW4gb3VyIHBpcGUuICBTbywgaGVyZSB3ZSB3cml0
ZSBhIHNpbmdsZSBmbGFnIGJ5dGUKICAgLy8gdG8gdGhlIHBpcGUsIHRoZW4gZXhpdC4KICAgY29u
c3QgY2hhciBzdGF0dXNfY2ggPQotICAgICAgcmVhc29uID09IFRFU1RfRElEX05PVF9ESUUgPyBr
RGVhdGhUZXN0TGl2ZWQgOiBrRGVhdGhUZXN0UmV0dXJuZWQ7CisgICAgICByZWFzb24gPT0gVEVT
VF9ESURfTk9UX0RJRSA/IGtEZWF0aFRlc3RMaXZlZCA6CisgICAgICByZWFzb24gPT0gVEVTVF9U
SFJFV19FWENFUFRJT04gPyBrRGVhdGhUZXN0VGhyZXcgOiBrRGVhdGhUZXN0UmV0dXJuZWQ7CisK
ICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhwb3NpeDo6V3JpdGUod3JpdGVfZmQo
KSwgJnN0YXR1c19jaCwgMSkpOwotICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKHBv
c2l4OjpDbG9zZSh3cml0ZV9mZCgpKSk7CisgIC8vIFdlIGFyZSBsZWFraW5nIHRoZSBkZXNjcmlw
dG9yIGhlcmUgYmVjYXVzZSBvbiBzb21lIHBsYXRmb3JtcyAoaS5lLiwKKyAgLy8gd2hlbiBidWls
dCBhcyBXaW5kb3dzIERMTCksIGRlc3RydWN0b3JzIG9mIGdsb2JhbCBvYmplY3RzIHdpbGwgc3Rp
bGwKKyAgLy8gcnVuIGFmdGVyIGNhbGxpbmcgX2V4aXQoKS4gT24gc3VjaCBzeXN0ZW1zLCB3cml0
ZV9mZF8gd2lsbCBiZQorICAvLyBpbmRpcmVjdGx5IGNsb3NlZCBmcm9tIHRoZSBkZXN0cnVjdG9y
IG9mIFVuaXRUZXN0SW1wbCwgY2F1c2luZyBkb3VibGUKKyAgLy8gY2xvc2UgaWYgaXQgaXMgYWxz
byBjbG9zZWQgaGVyZS4gT24gZGVidWcgY29uZmlndXJhdGlvbnMsIGRvdWJsZSBjbG9zZQorICAv
LyBtYXkgYXNzZXJ0LiBBcyB0aGVyZSBhcmUgbm8gaW4tcHJvY2VzcyBidWZmZXJzIHRvIGZsdXNo
IGhlcmUsIHdlIGFyZQorICAvLyByZWx5aW5nIG9uIHRoZSBPUyB0byBjbG9zZSB0aGUgZGVzY3Jp
cHRvciBhZnRlciB0aGUgcHJvY2VzcyB0ZXJtaW5hdGVzCisgIC8vIHdoZW4gdGhlIGRlc3RydWN0
b3JzIGFyZSBub3QgcnVuLgogICBfZXhpdCgxKTsgIC8vIEV4aXRzIHcvbyBhbnkgbm9ybWFsIGV4
aXQgaG9va3MgKHdlIHdlcmUgc3VwcG9zZWQgdG8gY3Jhc2gpCiB9CiAKKy8vIFJldHVybnMgYW4g
aW5kZW50ZWQgY29weSBvZiBzdGRlcnIgb3V0cHV0IGZvciBhIGRlYXRoIHRlc3QuCisvLyBUaGlz
IG1ha2VzIGRpc3Rpbmd1aXNoaW5nIGRlYXRoIHRlc3Qgb3V0cHV0IGxpbmVzIGZyb20gcmVndWxh
ciBsb2cgbGluZXMKKy8vIG11Y2ggZWFzaWVyLgorc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9ybWF0
RGVhdGhUZXN0T3V0cHV0KGNvbnN0IDo6c3RkOjpzdHJpbmcmIG91dHB1dCkgeworICA6OnN0ZDo6
c3RyaW5nIHJldDsKKyAgZm9yIChzaXplX3QgYXQgPSAwOyA7ICkgeworICAgIGNvbnN0IHNpemVf
dCBsaW5lX2VuZCA9IG91dHB1dC5maW5kKCdcbicsIGF0KTsKKyAgICByZXQgKz0gIlsgIERFQVRI
ICAgXSAiOworICAgIGlmIChsaW5lX2VuZCA9PSA6OnN0ZDo6c3RyaW5nOjpucG9zKSB7CisgICAg
ICByZXQgKz0gb3V0cHV0LnN1YnN0cihhdCk7CisgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0
ICs9IG91dHB1dC5zdWJzdHIoYXQsIGxpbmVfZW5kICsgMSAtIGF0KTsKKyAgICBhdCA9IGxpbmVf
ZW5kICsgMTsKKyAgfQorICByZXR1cm4gcmV0OworfQorCiAvLyBBc3Nlc3NlcyB0aGUgc3VjY2Vz
cyBvciBmYWlsdXJlIG9mIGEgZGVhdGggdGVzdCwgdXNpbmcgYm90aCBwcml2YXRlCiAvLyBtZW1i
ZXJzIHdoaWNoIGhhdmUgcHJldmlvdXNseSBiZWVuIHNldCwgYW5kIG9uZSBhcmd1bWVudDoKIC8v
CiAvLyBQcml2YXRlIGRhdGEgbWVtYmVyczoKIC8vICAgb3V0Y29tZTogIEFuIGVudW1lcmF0aW9u
IGRlc2NyaWJpbmcgaG93IHRoZSBkZWF0aCB0ZXN0Ci0vLyAgICAgICAgICAgICBjb25jbHVkZWQ6
IERJRUQsIExJVkVELCBvciBSRVRVUk5FRC4gIFRoZSBkZWF0aCB0ZXN0IGZhaWxzCi0vLyAgICAg
ICAgICAgICBpbiB0aGUgbGF0dGVyIHR3byBjYXNlcy4KKy8vICAgICAgICAgICAgIGNvbmNsdWRl
ZDogRElFRCwgTElWRUQsIFRIUkVXLCBvciBSRVRVUk5FRC4gIFRoZSBkZWF0aCB0ZXN0CisvLyAg
ICAgICAgICAgICBmYWlscyBpbiB0aGUgbGF0dGVyIHRocmVlIGNhc2VzLgogLy8gICBzdGF0dXM6
ICAgVGhlIGV4aXQgc3RhdHVzIG9mIHRoZSBjaGlsZCBwcm9jZXNzLiBPbiAqbml4LCBpdCBpcyBp
biB0aGUKIC8vICAgICAgICAgICAgIGluIHRoZSBmb3JtYXQgc3BlY2lmaWVkIGJ5IHdhaXQoMiku
IE9uIFdpbmRvd3MsIHRoaXMgaXMgdGhlCiAvLyAgICAgICAgICAgICB2YWx1ZSBzdXBwbGllZCB0
byB0aGUgRXhpdFByb2Nlc3MoKSBBUEkgb3IgYSBudW1lcmljIGNvZGUKQEAgLTQ0OCw3ICs1NTgs
NyBAQCBib29sIERlYXRoVGVzdEltcGw6OlBhc3NlZChib29sIHN0YXR1c19vaykgewogICBpZiAo
IXNwYXduZWQoKSkKICAgICByZXR1cm4gZmFsc2U7CiAKLSAgY29uc3QgU3RyaW5nIGVycm9yX21l
c3NhZ2UgPSBHZXRDYXB0dXJlZFN0ZGVycigpOworICBjb25zdCBzdGQ6OnN0cmluZyBlcnJvcl9t
ZXNzYWdlID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKIAogICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsK
ICAgTWVzc2FnZSBidWZmZXI7CkBAIC00NTcsMjUgKzU2NywzNSBAQCBib29sIERlYXRoVGVzdElt
cGw6OlBhc3NlZChib29sIHN0YXR1c19vaykgewogICBzd2l0Y2ggKG91dGNvbWUoKSkgewogICAg
IGNhc2UgTElWRUQ6CiAgICAgICBidWZmZXIgPDwgIiAgICBSZXN1bHQ6IGZhaWxlZCB0byBkaWUu
XG4iCi0gICAgICAgICAgICAgPDwgIiBFcnJvciBtc2c6ICIgPDwgZXJyb3JfbWVzc2FnZTsKKyAg
ICAgICAgICAgICA8PCAiIEVycm9yIG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGVy
cm9yX21lc3NhZ2UpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBUSFJFVzoKKyAgICAgIGJ1ZmZl
ciA8PCAiICAgIFJlc3VsdDogdGhyZXcgYW4gZXhjZXB0aW9uLlxuIgorICAgICAgICAgICAgIDw8
ICIgRXJyb3IgbXNnOlxuIiA8PCBGb3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2FnZSk7
CiAgICAgICBicmVhazsKICAgICBjYXNlIFJFVFVSTkVEOgogICAgICAgYnVmZmVyIDw8ICIgICAg
UmVzdWx0OiBpbGxlZ2FsIHJldHVybiBpbiB0ZXN0IHN0YXRlbWVudC5cbiIKLSAgICAgICAgICAg
ICA8PCAiIEVycm9yIG1zZzogIiA8PCBlcnJvcl9tZXNzYWdlOworICAgICAgICAgICAgIDw8ICIg
RXJyb3IgbXNnOlxuIiA8PCBGb3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2FnZSk7CiAg
ICAgICBicmVhazsKICAgICBjYXNlIERJRUQ6CiAgICAgICBpZiAoc3RhdHVzX29rKSB7CisjIGlm
IEdURVNUX1VTRVNfUENSRQorICAgICAgICAvLyBQQ1JFIHJlZ2V4ZXMgc3VwcG9ydCBlbWJlZGRl
ZCBOVUxzLgorICAgICAgICBjb25zdCBib29sIG1hdGNoZWQgPSBSRTo6UGFydGlhbE1hdGNoKGVy
cm9yX21lc3NhZ2UsICpyZWdleCgpKTsKKyMgZWxzZQogICAgICAgICBjb25zdCBib29sIG1hdGNo
ZWQgPSBSRTo6UGFydGlhbE1hdGNoKGVycm9yX21lc3NhZ2UuY19zdHIoKSwgKnJlZ2V4KCkpOwor
IyBlbmRpZiAgLy8gR1RFU1RfVVNFU19QQ1JFCiAgICAgICAgIGlmIChtYXRjaGVkKSB7CiAgICAg
ICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgYnVmZmVy
IDw8ICIgICAgUmVzdWx0OiBkaWVkIGJ1dCBub3Qgd2l0aCBleHBlY3RlZCBlcnJvci5cbiIKICAg
ICAgICAgICAgICAgICAgPDwgIiAgRXhwZWN0ZWQ6ICIgPDwgcmVnZXgoKS0+cGF0dGVybigpIDw8
ICJcbiIKLSAgICAgICAgICAgICAgICAgPDwgIkFjdHVhbCBtc2c6ICIgPDwgZXJyb3JfbWVzc2Fn
ZTsKKyAgICAgICAgICAgICAgICAgPDwgIkFjdHVhbCBtc2c6XG4iIDw8IEZvcm1hdERlYXRoVGVz
dE91dHB1dChlcnJvcl9tZXNzYWdlKTsKICAgICAgICAgfQogICAgICAgfSBlbHNlIHsKICAgICAg
ICAgYnVmZmVyIDw8ICIgICAgUmVzdWx0OiBkaWVkIGJ1dCBub3Qgd2l0aCBleHBlY3RlZCBleGl0
IGNvZGU6XG4iCi0gICAgICAgICAgICAgICA8PCAiICAgICAgICAgICAgIiA8PCBFeGl0U3VtbWFy
eShzdGF0dXMoKSkgPDwgIlxuIjsKKyAgICAgICAgICAgICAgIDw8ICIgICAgICAgICAgICAiIDw8
IEV4aXRTdW1tYXJ5KHN0YXR1cygpKSA8PCAiXG4iCisgICAgICAgICAgICAgICA8PCAiQWN0dWFs
IG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGVycm9yX21lc3NhZ2UpOwogICAgICAg
fQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTl9QUk9HUkVTUzoKQEAgLTQ4OCw3ICs2MDgsNyBA
QCBib29sIERlYXRoVGVzdEltcGw6OlBhc3NlZChib29sIHN0YXR1c19vaykgewogICByZXR1cm4g
c3VjY2VzczsKIH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lORE9X
UwogLy8gV2luZG93c0RlYXRoVGVzdCBpbXBsZW1lbnRzIGRlYXRoIHRlc3RzIG9uIFdpbmRvd3Mu
IER1ZSB0byB0aGUKIC8vIHNwZWNpZmljcyBvZiBzdGFydGluZyBuZXcgcHJvY2Vzc2VzIG9uIFdp
bmRvd3MsIGRlYXRoIHRlc3RzIHRoZXJlIGFyZQogLy8gYWx3YXlzIHRocmVhZHNhZmUsIGFuZCBH
b29nbGUgVGVzdCBjb25zaWRlcnMgdGhlCkBAIC01MTksMTEgKzYzOSwxMSBAQCBib29sIERlYXRo
VGVzdEltcGw6OlBhc3NlZChib29sIHN0YXR1c19vaykgewogLy8KIGNsYXNzIFdpbmRvd3NEZWF0
aFRlc3QgOiBwdWJsaWMgRGVhdGhUZXN0SW1wbCB7CiAgcHVibGljOgotICBXaW5kb3dzRGVhdGhU
ZXN0KGNvbnN0IGNoYXIqIHN0YXRlbWVudCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBSRSog
cmVnZXgsCisgIFdpbmRvd3NEZWF0aFRlc3QoY29uc3QgY2hhciogYV9zdGF0ZW1lbnQsCisgICAg
ICAgICAgICAgICAgICAgY29uc3QgUkUqIGFfcmVnZXgsCiAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogZmlsZSwKICAgICAgICAgICAgICAgICAgICBpbnQgbGluZSkKLSAgICAgIDogRGVh
dGhUZXN0SW1wbChzdGF0ZW1lbnQsIHJlZ2V4KSwgZmlsZV8oZmlsZSksIGxpbmVfKGxpbmUpIHt9
CisgICAgICA6IERlYXRoVGVzdEltcGwoYV9zdGF0ZW1lbnQsIGFfcmVnZXgpLCBmaWxlXyhmaWxl
KSwgbGluZV8obGluZSkge30KIAogICAvLyBBbGwgb2YgdGhlc2UgdmlydHVhbCBmdW5jdGlvbnMg
YXJlIGluaGVyaXRlZCBmcm9tIERlYXRoVGVzdC4KICAgdmlydHVhbCBpbnQgV2FpdCgpOwpAQCAt
NTgwLDEyICs3MDAsMTIgQEAgaW50IFdpbmRvd3NEZWF0aFRlc3Q6OldhaXQoKSB7CiAgIEdURVNU
X0RFQVRIX1RFU1RfQ0hFQ0tfKAogICAgICAgV0FJVF9PQkpFQ1RfMCA9PSA6OldhaXRGb3JTaW5n
bGVPYmplY3QoY2hpbGRfaGFuZGxlXy5HZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIElORklOSVRFKSk7Ci0gIERXT1JEIHN0YXR1czsKLSAgR1RFU1Rf
REVBVEhfVEVTVF9DSEVDS18oOjpHZXRFeGl0Q29kZVByb2Nlc3MoY2hpbGRfaGFuZGxlXy5HZXQo
KSwgJnN0YXR1cykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gRkFMU0UpOworICBEV09S
RCBzdGF0dXNfY29kZTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oCisgICAgICA6OkdldEV4
aXRDb2RlUHJvY2VzcyhjaGlsZF9oYW5kbGVfLkdldCgpLCAmc3RhdHVzX2NvZGUpICE9IEZBTFNF
KTsKICAgY2hpbGRfaGFuZGxlXy5SZXNldCgpOwotICBzZXRfc3RhdHVzKHN0YXRpY19jYXN0PGlu
dD4oc3RhdHVzKSk7Ci0gIHJldHVybiB0aGlzLT5zdGF0dXMoKTsKKyAgc2V0X3N0YXR1cyhzdGF0
aWNfY2FzdDxpbnQ+KHN0YXR1c19jb2RlKSk7CisgIHJldHVybiBzdGF0dXMoKTsKIH0KIAogLy8g
VGhlIEFzc3VtZVJvbGUgcHJvY2VzcyBmb3IgYSBXaW5kb3dzIGRlYXRoIHRlc3QuICBJdCBjcmVh
dGVzIGEgY2hpbGQKQEAgLTYyNSwyMiArNzQ1LDE5IEBAIERlYXRoVGVzdDo6VGVzdFJvbGUgV2lu
ZG93c0RlYXRoVGVzdDo6QXNzdW1lUm9sZSgpIHsKICAgICAgIEZBTFNFLCAgIC8vIFRoZSBpbml0
aWFsIHN0YXRlIGlzIG5vbi1zaWduYWxsZWQuCiAgICAgICBOVUxMKSk7ICAvLyBUaGUgZXZlbiBp
cyB1bm5hbWVkLgogICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhldmVudF9oYW5kbGVfLkdldCgp
ICE9IE5VTEwpOwotICBjb25zdCBTdHJpbmcgZmlsdGVyX2ZsYWcgPSBTdHJpbmc6OkZvcm1hdCgi
LS0lcyVzPSVzLiVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR1RFU1RfRkxBR19QUkVGSVhfLCBrRmlsdGVyRmxhZywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+dGVzdF9jYXNlX25hbWUoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+bmFtZSgpKTsKLSAgY29u
c3QgU3RyaW5nIGludGVybmFsX2ZsYWcgPSBTdHJpbmc6OkZvcm1hdCgKLSAgICAiLS0lcyVzPSVz
fCVkfCVkfCV1fCVJdXwlSXUiLAotICAgICAgR1RFU1RfRkxBR19QUkVGSVhfLAotICAgICAga0lu
dGVybmFsUnVuRGVhdGhUZXN0RmxhZywKLSAgICAgIGZpbGVfLCBsaW5lXywKLSAgICAgIGRlYXRo
X3Rlc3RfaW5kZXgsCi0gICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KDo6R2V0Q3VycmVu
dFByb2Nlc3NJZCgpKSwKLSAgICAgIC8vIHNpemVfdCBoYXMgdGhlIHNhbWUgd2l0aCBhcyBwb2lu
dGVycyBvbiBib3RoIDMyLWJpdCBhbmQgNjQtYml0CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbHRl
cl9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsg
a0ZpbHRlckZsYWcgKyAiPSIgKworICAgICAgaW5mby0+dGVzdF9jYXNlX25hbWUoKSArICIuIiAr
IGluZm8tPm5hbWUoKTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgaW50ZXJuYWxfZmxhZyA9CisgICAg
ICBzdGQ6OnN0cmluZygiLS0iKSArIEdURVNUX0ZMQUdfUFJFRklYXyArIGtJbnRlcm5hbFJ1bkRl
YXRoVGVzdEZsYWcgKworICAgICAgIj0iICsgZmlsZV8gKyAifCIgKyBTdHJlYW1hYmxlVG9TdHJp
bmcobGluZV8pICsgInwiICsKKyAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhkZWF0aF90ZXN0X2lu
ZGV4KSArICJ8IiArCisgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50Pig6OkdldEN1cnJlbnRQcm9jZXNzSWQoKSkpICsKKyAgICAgIC8vIHNpemVfdCBoYXMg
dGhlIHNhbWUgd2lkdGggYXMgcG9pbnRlcnMgb24gYm90aCAzMi1iaXQgYW5kIDY0LWJpdAogICAg
ICAgLy8gV2luZG93cyBwbGF0Zm9ybXMuCiAgICAgICAvLyBTZWUgaHR0cDovL21zZG4ubWljcm9z
b2Z0LmNvbS9lbi11cy9saWJyYXJ5L3RjeGYxZHc2LmFzcHguCi0gICAgICByZWludGVycHJldF9j
YXN0PHNpemVfdD4od3JpdGVfaGFuZGxlKSwKLSAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90
PihldmVudF9oYW5kbGVfLkdldCgpKSk7CisgICAgICAifCIgKyBTdHJlYW1hYmxlVG9TdHJpbmco
cmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KHdyaXRlX2hhbmRsZSkpICsKKyAgICAgICJ8IiArIFN0
cmVhbWFibGVUb1N0cmluZyhyZWludGVycHJldF9jYXN0PHNpemVfdD4oZXZlbnRfaGFuZGxlXy5H
ZXQoKSkpOwogCiAgIGNoYXIgZXhlY3V0YWJsZV9wYXRoW19NQVhfUEFUSCArIDFdOyAgLy8gTk9M
SU5UCiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKApAQCAtNjQ4LDEwICs3NjUsOSBAQCBEZWF0
aFRlc3Q6OlRlc3RSb2xlIFdpbmRvd3NEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVfcGF0aCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01BWF9QQVRIKSk7CiAK
LSAgU3RyaW5nIGNvbW1hbmRfbGluZSA9IFN0cmluZzo6Rm9ybWF0KCIlcyAlcyBcIiVzXCIiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpHZXRDb21tYW5kTGluZUEo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl9mbGFnLmNf
c3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbF9m
bGFnLmNfc3RyKCkpOworICBzdGQ6OnN0cmluZyBjb21tYW5kX2xpbmUgPQorICAgICAgc3RkOjpz
dHJpbmcoOjpHZXRDb21tYW5kTGluZUEoKSkgKyAiICIgKyBmaWx0ZXJfZmxhZyArICIgXCIiICsK
KyAgICAgIGludGVybmFsX2ZsYWcgKyAiXCIiOwogCiAgIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVh
dGhfdGVzdF9tZXNzYWdlKCIiKTsKIApAQCAtNjg0LDcgKzgwMCwyMDAgQEAgRGVhdGhUZXN0OjpU
ZXN0Um9sZSBXaW5kb3dzRGVhdGhUZXN0OjpBc3N1bWVSb2xlKCkgewogICBzZXRfc3Bhd25lZCh0
cnVlKTsKICAgcmV0dXJuIE9WRVJTRUVfVEVTVDsKIH0KLSNlbHNlICAvLyBXZSBhcmUgbm90IG9u
IFdpbmRvd3MuCisKKyMgZWxpZiBHVEVTVF9PU19GVUNIU0lBCisKK2NsYXNzIEZ1Y2hzaWFEZWF0
aFRlc3QgOiBwdWJsaWMgRGVhdGhUZXN0SW1wbCB7CisgcHVibGljOgorICBGdWNoc2lhRGVhdGhU
ZXN0KGNvbnN0IGNoYXIqIGFfc3RhdGVtZW50LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFJF
KiBhX3JlZ2V4LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsCisgICAgICAg
ICAgICAgICAgICAgaW50IGxpbmUpCisgICAgICA6IERlYXRoVGVzdEltcGwoYV9zdGF0ZW1lbnQs
IGFfcmVnZXgpLCBmaWxlXyhmaWxlKSwgbGluZV8obGluZSkge30KKyAgdmlydHVhbCB+RnVjaHNp
YURlYXRoVGVzdCgpIHsKKyAgICB6eF9zdGF0dXNfdCBzdGF0dXMgPSB6eF9oYW5kbGVfY2xvc2Uo
Y2hpbGRfcHJvY2Vzc18pOworICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1cyA9PSBa
WF9PSyk7CisgICAgc3RhdHVzID0genhfaGFuZGxlX2Nsb3NlKHBvcnRfKTsKKyAgICBHVEVTVF9E
RUFUSF9URVNUX0NIRUNLXyhzdGF0dXMgPT0gWlhfT0spOworICB9CisKKyAgLy8gQWxsIG9mIHRo
ZXNlIHZpcnR1YWwgZnVuY3Rpb25zIGFyZSBpbmhlcml0ZWQgZnJvbSBEZWF0aFRlc3QuCisgIHZp
cnR1YWwgaW50IFdhaXQoKTsKKyAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCk7CisKKyBw
cml2YXRlOgorICAvLyBUaGUgbmFtZSBvZiB0aGUgZmlsZSBpbiB3aGljaCB0aGUgZGVhdGggdGVz
dCBpcyBsb2NhdGVkLgorICBjb25zdCBjaGFyKiBjb25zdCBmaWxlXzsKKyAgLy8gVGhlIGxpbmUg
bnVtYmVyIG9uIHdoaWNoIHRoZSBkZWF0aCB0ZXN0IGlzIGxvY2F0ZWQuCisgIGNvbnN0IGludCBs
aW5lXzsKKworICB6eF9oYW5kbGVfdCBjaGlsZF9wcm9jZXNzXyA9IFpYX0hBTkRMRV9JTlZBTElE
OworICB6eF9oYW5kbGVfdCBwb3J0XyA9IFpYX0hBTkRMRV9JTlZBTElEOworfTsKKworLy8gVXRp
bGl0eSBjbGFzcyBmb3IgYWNjdW11bGF0aW5nIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuCitjbGFz
cyBBcmd1bWVudHMgeworIHB1YmxpYzoKKyAgQXJndW1lbnRzKCkgeworICAgIGFyZ3NfLnB1c2hf
YmFjayhOVUxMKTsKKyAgfQorCisgIH5Bcmd1bWVudHMoKSB7CisgICAgZm9yIChzdGQ6OnZlY3Rv
cjxjaGFyKj46Oml0ZXJhdG9yIGkgPSBhcmdzXy5iZWdpbigpOyBpICE9IGFyZ3NfLmVuZCgpOwor
ICAgICAgICAgKytpKSB7CisgICAgICBmcmVlKCppKTsKKyAgICB9CisgIH0KKyAgdm9pZCBBZGRB
cmd1bWVudChjb25zdCBjaGFyKiBhcmd1bWVudCkgeworICAgIGFyZ3NfLmluc2VydChhcmdzXy5l
bmQoKSAtIDEsIHBvc2l4OjpTdHJEdXAoYXJndW1lbnQpKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0
eXBlbmFtZSBTdHI+CisgIHZvaWQgQWRkQXJndW1lbnRzKGNvbnN0IDo6c3RkOjp2ZWN0b3I8U3Ry
PiYgYXJndW1lbnRzKSB7CisgICAgZm9yICh0eXBlbmFtZSA6OnN0ZDo6dmVjdG9yPFN0cj46OmNv
bnN0X2l0ZXJhdG9yIGkgPSBhcmd1bWVudHMuYmVnaW4oKTsKKyAgICAgICAgIGkgIT0gYXJndW1l
bnRzLmVuZCgpOworICAgICAgICAgKytpKSB7CisgICAgICBhcmdzXy5pbnNlcnQoYXJnc18uZW5k
KCkgLSAxLCBwb3NpeDo6U3RyRHVwKGktPmNfc3RyKCkpKTsKKyAgICB9CisgIH0KKyAgY2hhciog
Y29uc3QqIEFyZ3YoKSB7CisgICAgcmV0dXJuICZhcmdzX1swXTsKKyAgfQorCisgIGludCBzaXpl
KCkgeworICAgIHJldHVybiBhcmdzXy5zaXplKCkgLSAxOworICB9CisKKyBwcml2YXRlOgorICBz
dGQ6OnZlY3RvcjxjaGFyKj4gYXJnc187Cit9OworCisvLyBXYWl0cyBmb3IgdGhlIGNoaWxkIGlu
IGEgZGVhdGggdGVzdCB0byBleGl0LCByZXR1cm5pbmcgaXRzIGV4aXQKKy8vIHN0YXR1cywgb3Ig
MCBpZiBubyBjaGlsZCBwcm9jZXNzIGV4aXN0cy4gIEFzIGEgc2lkZSBlZmZlY3QsIHNldHMgdGhl
CisvLyBvdXRjb21lIGRhdGEgbWVtYmVyLgoraW50IEZ1Y2hzaWFEZWF0aFRlc3Q6OldhaXQoKSB7
CisgIGlmICghc3Bhd25lZCgpKQorICAgIHJldHVybiAwOworCisgIC8vIFJlZ2lzdGVyIHRvIHdh
aXQgZm9yIHRoZSBjaGlsZCBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4KKyAgenhfc3RhdHVzX3Qgc3Rh
dHVzX3p4OworICBzdGF0dXNfenggPSB6eF9vYmplY3Rfd2FpdF9hc3luYyhjaGlsZF9wcm9jZXNz
XywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyoga2V5ICovLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBaWF9QUk9DRVNTX1RFUk1JTkFURUQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFpYX1dBSVRfQVNZTkNfT05DRSk7CisgIEdURVNUX0RFQVRIX1RF
U1RfQ0hFQ0tfKHN0YXR1c196eCA9PSBaWF9PSyk7CisKKyAgLy8gV2FpdCBmb3IgaXQgdG8gdGVy
bWluYXRlLCBvciBhbiBleGNlcHRpb24gdG8gYmUgcmVjZWl2ZWQuCisgIHp4X3BvcnRfcGFja2V0
X3QgcGFja2V0OworICBzdGF0dXNfenggPSB6eF9wb3J0X3dhaXQocG9ydF8sIFpYX1RJTUVfSU5G
SU5JVEUsICZwYWNrZXQpOworICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhzdGF0dXNfenggPT0g
WlhfT0spOworCisgIGlmIChaWF9QS1RfSVNfRVhDRVBUSU9OKHBhY2tldC50eXBlKSkgeworICAg
IC8vIFByb2Nlc3MgZW5jb3VudGVyZWQgYW4gZXhjZXB0aW9uLiBLaWxsIGl0IGRpcmVjdGx5IHJh
dGhlciB0aGFuIGxldHRpbmcKKyAgICAvLyBvdGhlciBoYW5kbGVycyBwcm9jZXNzIHRoZSBldmVu
dC4KKyAgICBzdGF0dXNfenggPSB6eF90YXNrX2tpbGwoY2hpbGRfcHJvY2Vzc18pOworICAgIEdU
RVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1c196eCA9PSBaWF9PSyk7CisKKyAgICAvLyBOb3cg
d2FpdCBmb3IgfGNoaWxkX3Byb2Nlc3NffCB0byB0ZXJtaW5hdGUuCisgICAgenhfc2lnbmFsc190
IHNpZ25hbHMgPSAwOworICAgIHN0YXR1c196eCA9IHp4X29iamVjdF93YWl0X29uZSgKKyAgICAg
ICAgY2hpbGRfcHJvY2Vzc18sIFpYX1BST0NFU1NfVEVSTUlOQVRFRCwgWlhfVElNRV9JTkZJTklU
RSwgJnNpZ25hbHMpOworICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1c196eCA9PSBa
WF9PSyk7CisgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc2lnbmFscyAmIFpYX1BST0NFU1Nf
VEVSTUlOQVRFRCk7CisgIH0gZWxzZSB7CisgICAgLy8gUHJvY2VzcyB0ZXJtaW5hdGVkLgorICAg
IEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKFpYX1BLVF9JU19TSUdOQUxfT05FKHBhY2tldC50eXBl
KSk7CisgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18ocGFja2V0LnNpZ25hbC5vYnNlcnZlZCAm
IFpYX1BST0NFU1NfVEVSTUlOQVRFRCk7CisgIH0KKworICBSZWFkQW5kSW50ZXJwcmV0U3RhdHVz
Qnl0ZSgpOworCisgIHp4X2luZm9fcHJvY2Vzc190IGJ1ZmZlcjsKKyAgc3RhdHVzX3p4ID0genhf
b2JqZWN0X2dldF9pbmZvKAorICAgICAgY2hpbGRfcHJvY2Vzc18sCisgICAgICBaWF9JTkZPX1BS
T0NFU1MsCisgICAgICAmYnVmZmVyLAorICAgICAgc2l6ZW9mKGJ1ZmZlciksCisgICAgICBudWxs
cHRyLAorICAgICAgbnVsbHB0cik7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1c196
eCA9PSBaWF9PSyk7CisKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oYnVmZmVyLmV4aXRlZCk7
CisgIHNldF9zdGF0dXMoYnVmZmVyLnJldHVybl9jb2RlKTsKKyAgcmV0dXJuIHN0YXR1cygpOwor
fQorCisvLyBUaGUgQXNzdW1lUm9sZSBwcm9jZXNzIGZvciBhIEZ1Y2hzaWEgZGVhdGggdGVzdC4g
IEl0IGNyZWF0ZXMgYSBjaGlsZAorLy8gcHJvY2VzcyB3aXRoIHRoZSBzYW1lIGV4ZWN1dGFibGUg
YXMgdGhlIGN1cnJlbnQgcHJvY2VzcyB0byBydW4gdGhlCisvLyBkZWF0aCB0ZXN0LiAgVGhlIGNo
aWxkIHByb2Nlc3MgaXMgZ2l2ZW4gdGhlIC0tZ3Rlc3RfZmlsdGVyIGFuZAorLy8gLS1ndGVzdF9p
bnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFncyBzdWNoIHRoYXQgaXQga25vd3MgdG8gcnVuIHRo
ZQorLy8gY3VycmVudCBkZWF0aCB0ZXN0IG9ubHkuCitEZWF0aFRlc3Q6OlRlc3RSb2xlIEZ1Y2hz
aWFEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CisgIGNvbnN0IFVuaXRUZXN0SW1wbCogY29uc3Qg
aW1wbCA9IEdldFVuaXRUZXN0SW1wbCgpOworICBjb25zdCBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZs
YWcqIGNvbnN0IGZsYWcgPQorICAgICAgaW1wbC0+aW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfZmxh
ZygpOworICBjb25zdCBUZXN0SW5mbyogY29uc3QgaW5mbyA9IGltcGwtPmN1cnJlbnRfdGVzdF9p
bmZvKCk7CisgIGNvbnN0IGludCBkZWF0aF90ZXN0X2luZGV4ID0gaW5mby0+cmVzdWx0KCktPmRl
YXRoX3Rlc3RfY291bnQoKTsKKworICBpZiAoZmxhZyAhPSBOVUxMKSB7CisgICAgLy8gUGFyc2VJ
bnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoKSBoYXMgcGVyZm9ybWVkIGFsbCB0aGUgbmVjZXNzYXJ5
CisgICAgLy8gcHJvY2Vzc2luZy4KKyAgICBzZXRfd3JpdGVfZmQoa0Z1Y2hzaWFSZWFkUGlwZUZk
KTsKKyAgICByZXR1cm4gRVhFQ1VURV9URVNUOworICB9CisKKyAgQ2FwdHVyZVN0ZGVycigpOwor
ICAvLyBGbHVzaCB0aGUgbG9nIGJ1ZmZlcnMgc2luY2UgdGhlIGxvZyBzdHJlYW1zIGFyZSBzaGFy
ZWQgd2l0aCB0aGUgY2hpbGQuCisgIEZsdXNoSW5mb0xvZygpOworCisgIC8vIEJ1aWxkIHRoZSBj
aGlsZCBwcm9jZXNzIGNvbW1hbmQgbGluZS4KKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsdGVyX2Zs
YWcgPQorICAgICAgc3RkOjpzdHJpbmcoIi0tIikgKyBHVEVTVF9GTEFHX1BSRUZJWF8gKyBrRmls
dGVyRmxhZyArICI9IgorICAgICAgKyBpbmZvLT50ZXN0X2Nhc2VfbmFtZSgpICsgIi4iICsgaW5m
by0+bmFtZSgpOworICBjb25zdCBzdGQ6OnN0cmluZyBpbnRlcm5hbF9mbGFnID0KKyAgICAgIHN0
ZDo6c3RyaW5nKCItLSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsga0ludGVybmFsUnVuRGVhdGhU
ZXN0RmxhZyArICI9IgorICAgICAgKyBmaWxlXyArICJ8IgorICAgICAgKyBTdHJlYW1hYmxlVG9T
dHJpbmcobGluZV8pICsgInwiCisgICAgICArIFN0cmVhbWFibGVUb1N0cmluZyhkZWF0aF90ZXN0
X2luZGV4KTsKKyAgQXJndW1lbnRzIGFyZ3M7CisgIGFyZ3MuQWRkQXJndW1lbnRzKEdldEluamVj
dGFibGVBcmd2cygpKTsKKyAgYXJncy5BZGRBcmd1bWVudChmaWx0ZXJfZmxhZy5jX3N0cigpKTsK
KyAgYXJncy5BZGRBcmd1bWVudChpbnRlcm5hbF9mbGFnLmNfc3RyKCkpOworCisgIC8vIEJ1aWxk
IHRoZSBwaXBlIGZvciBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGNoaWxkLgorICB6eF9zdGF0dXNf
dCBzdGF0dXM7CisgIHp4X2hhbmRsZV90IGNoaWxkX3BpcGVfaGFuZGxlOworICB1aW50MzJfdCB0
eXBlOworICBzdGF0dXMgPSBmZGlvX3BpcGVfaGFsZigmY2hpbGRfcGlwZV9oYW5kbGUsICZ0eXBl
KTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhdHVzID49IDApOworICBzZXRfcmVhZF9m
ZChzdGF0dXMpOworCisgIC8vIFNldCB0aGUgcGlwZSBoYW5kbGUgZm9yIHRoZSBjaGlsZC4KKyAg
ZmRpb19zcGF3bl9hY3Rpb25fdCBhZGRfaGFuZGxlX2FjdGlvbiA9IHt9OworICBhZGRfaGFuZGxl
X2FjdGlvbi5hY3Rpb24gPSBGRElPX1NQQVdOX0FDVElPTl9BRERfSEFORExFOworICBhZGRfaGFu
ZGxlX2FjdGlvbi5oLmlkID0gUEFfSE5EKHR5cGUsIGtGdWNoc2lhUmVhZFBpcGVGZCk7CisgIGFk
ZF9oYW5kbGVfYWN0aW9uLmguaGFuZGxlID0gY2hpbGRfcGlwZV9oYW5kbGU7CisKKyAgLy8gU3Bh
d24gdGhlIGNoaWxkIHByb2Nlc3MuCisgIHN0YXR1cyA9IGZkaW9fc3Bhd25fZXRjKFpYX0hBTkRM
RV9JTlZBTElELCBGRElPX1NQQVdOX0NMT05FX0FMTCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXJncy5Bcmd2KClbMF0sIGFyZ3MuQXJndigpLCBudWxscHRyLCAxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAmYWRkX2hhbmRsZV9hY3Rpb24sICZjaGlsZF9wcm9jZXNzXywgbnVsbHB0
cik7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YXR1cyA9PSBaWF9PSyk7CisKKyAgLy8g
Q3JlYXRlIGFuIGV4Y2VwdGlvbiBwb3J0IGFuZCBhdHRhY2ggaXQgdG8gdGhlIHxjaGlsZF9wcm9j
ZXNzX3wsIHRvIGFsbG93CisgIC8vIHVzIHRvIHN1cHByZXNzIHRoZSBzeXN0ZW0gZGVmYXVsdCBl
eGNlcHRpb24gaGFuZGxlciBmcm9tIGZpcmluZy4KKyAgc3RhdHVzID0genhfcG9ydF9jcmVhdGUo
MCwgJnBvcnRfKTsKKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhdHVzID09IFpYX09LKTsK
KyAgc3RhdHVzID0genhfdGFza19iaW5kX2V4Y2VwdGlvbl9wb3J0KAorICAgICAgY2hpbGRfcHJv
Y2Vzc18sIHBvcnRfLCAwIC8qIGtleSAqLywgMCAvKm9wdGlvbnMgKi8pOworICBHVEVTVF9ERUFU
SF9URVNUX0NIRUNLXyhzdGF0dXMgPT0gWlhfT0spOworCisgIHNldF9zcGF3bmVkKHRydWUpOwor
ICByZXR1cm4gT1ZFUlNFRV9URVNUOworfQorCisjZWxzZSAgLy8gV2UgYXJlIG5laXRoZXIgb24g
V2luZG93cywgbm9yIG9uIEZ1Y2hzaWEuCiAKIC8vIEZvcmtpbmdEZWF0aFRlc3QgcHJvdmlkZXMg
aW1wbGVtZW50YXRpb25zIGZvciBtb3N0IG9mIHRoZSBhYnN0cmFjdAogLy8gbWV0aG9kcyBvZiB0
aGUgRGVhdGhUZXN0IGludGVyZmFjZS4gIE9ubHkgdGhlIEFzc3VtZVJvbGUgbWV0aG9kIGlzCkBA
IC03NjgsNiArMTA3Nyw3IEBAIERlYXRoVGVzdDo6VGVzdFJvbGUgTm9FeGVjRGVhdGhUZXN0OjpB
c3N1bWVSb2xlKCkgewogICAgIC8vIEV2ZW50IGZvcndhcmRpbmcgdG8gdGhlIGxpc3RlbmVycyBv
ZiBldmVudCBsaXN0ZW5lciBBUEkgbXVzaCBiZSBzaHV0CiAgICAgLy8gZG93biBpbiBkZWF0aCB0
ZXN0IHN1YnByb2Nlc3Nlcy4KICAgICBHZXRVbml0VGVzdEltcGwoKS0+bGlzdGVuZXJzKCktPlN1
cHByZXNzRXZlbnRGb3J3YXJkaW5nKCk7CisgICAgZ19pbl9mYXN0X2RlYXRoX3Rlc3RfY2hpbGQg
PSB0cnVlOwogICAgIHJldHVybiBFWEVDVVRFX1RFU1Q7CiAgIH0gZWxzZSB7CiAgICAgR1RFU1Rf
REVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhjbG9zZShwaXBlX2ZkWzFdKSk7CkBAIC03ODcsNiAr
MTA5NywxNSBAQCBjbGFzcyBFeGVjRGVhdGhUZXN0IDogcHVibGljIEZvcmtpbmdEZWF0aFRlc3Qg
ewogICAgICAgRm9ya2luZ0RlYXRoVGVzdChhX3N0YXRlbWVudCwgYV9yZWdleCksIGZpbGVfKGZp
bGUpLCBsaW5lXyhsaW5lKSB7IH0KICAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCk7CiAg
cHJpdmF0ZToKKyAgc3RhdGljIDo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdldEFyZ3ZzRm9y
RGVhdGhUZXN0Q2hpbGRQcm9jZXNzKCkgeworICAgIDo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
IGFyZ3MgPSBHZXRJbmplY3RhYmxlQXJndnMoKTsKKyMgIGlmIGRlZmluZWQoR1RFU1RfRVhUUkFf
REVBVEhfVEVTVF9DT01NQU5EX0xJTkVfQVJHU18pCisgICAgOjpzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4gZXh0cmFfYXJncyA9CisgICAgICAgIEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ09NTUFO
RF9MSU5FX0FSR1NfKCk7CisgICAgYXJncy5pbnNlcnQoYXJncy5lbmQoKSwgZXh0cmFfYXJncy5i
ZWdpbigpLCBleHRyYV9hcmdzLmVuZCgpKTsKKyMgIGVuZGlmICAvLyBkZWZpbmVkKEdURVNUX0VY
VFJBX0RFQVRIX1RFU1RfQ09NTUFORF9MSU5FX0FSR1NfKQorICAgIHJldHVybiBhcmdzOworICB9
CiAgIC8vIFRoZSBuYW1lIG9mIHRoZSBmaWxlIGluIHdoaWNoIHRoZSBkZWF0aCB0ZXN0IGlzIGxv
Y2F0ZWQuCiAgIGNvbnN0IGNoYXIqIGNvbnN0IGZpbGVfOwogICAvLyBUaGUgbGluZSBudW1iZXIg
b24gd2hpY2ggdGhlIGRlYXRoIHRlc3QgaXMgbG9jYXRlZC4KQEAgLTgyMSw2ICsxMTQwLDcgQEAg
Y2xhc3MgQXJndW1lbnRzIHsKICAgY2hhciogY29uc3QqIEFyZ3YoKSB7CiAgICAgcmV0dXJuICZh
cmdzX1swXTsKICAgfQorCiAgcHJpdmF0ZToKICAgc3RkOjp2ZWN0b3I8Y2hhcio+IGFyZ3NfOwog
fTsKQEAgLTgzMiw2ICsxMTUyLDIxIEBAIHN0cnVjdCBFeGVjRGVhdGhUZXN0QXJncyB7CiAgIGlu
dCBjbG9zZV9mZDsgICAgICAgLy8gRmlsZSBkZXNjcmlwdG9yIHRvIGNsb3NlOyB0aGUgcmVhZCBl
bmQgb2YgYSBwaXBlCiB9OwogCisjICBpZiBHVEVTVF9PU19NQUMKK2lubGluZSBjaGFyKiogR2V0
RW52aXJvbigpIHsKKyAgLy8gV2hlbiBHb29nbGUgVGVzdCBpcyBidWlsdCBhcyBhIGZyYW1ld29y
ayBvbiBNYWNPUyBYLCB0aGUgZW52aXJvbiB2YXJpYWJsZQorICAvLyBpcyB1bmF2YWlsYWJsZS4g
QXBwbGUncyBkb2N1bWVudGF0aW9uIChtYW4gZW52aXJvbikgcmVjb21tZW5kcyB1c2luZworICAv
LyBfTlNHZXRFbnZpcm9uKCkgaW5zdGVhZC4KKyAgcmV0dXJuICpfTlNHZXRFbnZpcm9uKCk7Cit9
CisjICBlbHNlCisvLyBTb21lIFBPU0lYIHBsYXRmb3JtcyBleHBlY3QgeW91IHRvIGRlY2xhcmUg
ZW52aXJvbi4gZXh0ZXJuICJDIiBtYWtlcworLy8gaXQgcmVzaWRlIGluIHRoZSBnbG9iYWwgbmFt
ZXNwYWNlLgorZXh0ZXJuICJDIiBjaGFyKiogZW52aXJvbjsKK2lubGluZSBjaGFyKiogR2V0RW52
aXJvbigpIHsgcmV0dXJuIGVudmlyb247IH0KKyMgIGVuZGlmICAvLyBHVEVTVF9PU19NQUMKKwor
IyAgaWYgIUdURVNUX09TX1FOWAogLy8gVGhlIG1haW4gZnVuY3Rpb24gZm9yIGEgdGhyZWFkc2Fm
ZS1zdHlsZSBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nlc3MuCiAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNh
bGxlZCBpbiBhIGNsb25lKCktZWQgcHJvY2VzcyBhbmQgdGh1cyBtdXN0IGF2b2lkCiAvLyBhbnkg
cG90ZW50aWFsbHkgdW5zYWZlIG9wZXJhdGlvbnMgbGlrZSBtYWxsb2Mgb3IgbGliYyBmdW5jdGlv
bnMuCkBAIC04NDYsOSArMTE4MSw4IEBAIHN0YXRpYyBpbnQgRXhlY0RlYXRoVGVzdENoaWxkTWFp
bih2b2lkKiBjaGlsZF9hcmcpIHsKICAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmln
aW5hbF93b3JraW5nX2RpcigpOwogICAvLyBXZSBjYW4gc2FmZWx5IGNhbGwgY2hkaXIoKSBhcyBp
dCdzIGEgZGlyZWN0IHN5c3RlbSBjYWxsLgogICBpZiAoY2hkaXIob3JpZ2luYWxfZGlyKSAhPSAw
KSB7Ci0gICAgRGVhdGhUZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQoImNoZGlyKFwiJXNcIikgZmFp
bGVkOiAlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxfZGly
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2NyaXB0
aW9uKCkuY19zdHIoKSkpOworICAgIERlYXRoVGVzdEFib3J0KHN0ZDo6c3RyaW5nKCJjaGRpcihc
IiIpICsgb3JpZ2luYWxfZGlyICsgIlwiKSBmYWlsZWQ6ICIgKworICAgICAgICAgICAgICAgICAg
IEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkpOwogICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAg
IH0KIApAQCAtODU3LDQwICsxMTkxLDk3IEBAIHN0YXRpYyBpbnQgRXhlY0RlYXRoVGVzdENoaWxk
TWFpbih2b2lkKiBjaGlsZF9hcmcpIHsKICAgLy8gdW5zYWZlLiAgU2luY2UgZXhlY3ZlKCkgZG9l
c24ndCBzZWFyY2ggdGhlIFBBVEgsIHRoZSB1c2VyIG11c3QKICAgLy8gaW52b2tlIHRoZSB0ZXN0
IHByb2dyYW0gdmlhIGEgdmFsaWQgcGF0aCB0aGF0IGNvbnRhaW5zIGF0IGxlYXN0CiAgIC8vIG9u
ZSBwYXRoIHNlcGFyYXRvci4KLSAgLy8gV2UgaGF2ZSByZXBsYWNlZCBleGVjdmUoKSB3aXRoIGV4
ZWN2KCkgZm9yIFdlYktpdCB0byBhdm9pZCB1c2luZwotICAvLyBlbnZpcm9uLiBJdCBzaG91bGQg
YmUgc2FmZSBiZWNhdXNlIGV4ZWN2KCkgaXMganVzdCBhIHNpbXBsZSB3cmFwcGVyCi0gIC8vIG9m
IGV4ZWN2ZSgpLgotICBleGVjdihhcmdzLT5hcmd2WzBdLCBhcmdzLT5hcmd2KTsKLSAgRGVhdGhU
ZXN0QWJvcnQoU3RyaW5nOjpGb3JtYXQoImV4ZWN2KCVzLCAuLi4pIGluICVzIGZhaWxlZDogJXMi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLT5hcmd2WzBdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbF9kaXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkuY19zdHIoKSkpOworICBl
eGVjdmUoYXJncy0+YXJndlswXSwgYXJncy0+YXJndiwgR2V0RW52aXJvbigpKTsKKyAgRGVhdGhU
ZXN0QWJvcnQoc3RkOjpzdHJpbmcoImV4ZWN2ZSgiKSArIGFyZ3MtPmFyZ3ZbMF0gKyAiLCAuLi4p
IGluICIgKworICAgICAgICAgICAgICAgICBvcmlnaW5hbF9kaXIgKyAiIGZhaWxlZDogIiArCisg
ICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkpOwogICByZXR1cm4gRVhJ
VF9GQUlMVVJFOwogfQorIyAgZW5kaWYgIC8vICFHVEVTVF9PU19RTlgKIAorIyAgaWYgR1RFU1Rf
SEFTX0NMT05FCiAvLyBUd28gdXRpbGl0eSByb3V0aW5lcyB0aGF0IHRvZ2V0aGVyIGRldGVybWlu
ZSB0aGUgZGlyZWN0aW9uIHRoZSBzdGFjawogLy8gZ3Jvd3MuCiAvLyBUaGlzIGNvdWxkIGJlIGFj
Y29tcGxpc2hlZCBtb3JlIGVsZWdhbnRseSBieSBhIHNpbmdsZSByZWN1cnNpdmUKIC8vIGZ1bmN0
aW9uLCBidXQgd2Ugd2FudCB0byBndWFyZCBhZ2FpbnN0IHRoZSB1bmxpa2VseSBwb3NzaWJpbGl0
eSBvZgogLy8gYSBzbWFydCBjb21waWxlciBvcHRpbWl6aW5nIHRoZSByZWN1cnNpb24gYXdheS4K
LWJvb2wgU3RhY2tMb3dlclRoYW5BZGRyZXNzKGNvbnN0IHZvaWQqIHB0cikgeworLy8KKy8vIEdU
RVNUX05PX0lOTElORV8gaXMgcmVxdWlyZWQgdG8gcHJldmVudCBHQ0MgNC42IGZyb20gaW5saW5p
bmcKKy8vIFN0YWNrTG93ZXJUaGFuQWRkcmVzcyBpbnRvIFN0YWNrR3Jvd3NEb3duLCB3aGljaCB0
aGVuIGRvZXNuJ3QgZ2l2ZQorLy8gY29ycmVjdCBhbnN3ZXIuCitzdGF0aWMgdm9pZCBTdGFja0xv
d2VyVGhhbkFkZHJlc3MoY29uc3Qgdm9pZCogcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wqIHJlc3VsdCkgR1RFU1RfTk9fSU5MSU5FXzsKK3N0YXRpYyB2b2lkIFN0
YWNrTG93ZXJUaGFuQWRkcmVzcyhjb25zdCB2b2lkKiBwdHIsIGJvb2wqIHJlc3VsdCkgewogICBp
bnQgZHVtbXk7Ci0gIHJldHVybiAmZHVtbXkgPCBwdHI7CisgICpyZXN1bHQgPSAoJmR1bW15IDwg
cHRyKTsKIH0KIAotYm9vbCBTdGFja0dyb3dzRG93bigpIHsKKy8vIE1ha2Ugc3VyZSBBZGRyZXNz
U2FuaXRpemVyIGRvZXMgbm90IHRhbXBlciB3aXRoIHRoZSBzdGFjayBoZXJlLgorR1RFU1RfQVRU
UklCVVRFX05PX1NBTklUSVpFX0FERFJFU1NfCitzdGF0aWMgYm9vbCBTdGFja0dyb3dzRG93bigp
IHsKICAgaW50IGR1bW15OwotICByZXR1cm4gU3RhY2tMb3dlclRoYW5BZGRyZXNzKCZkdW1teSk7
CisgIGJvb2wgcmVzdWx0OworICBTdGFja0xvd2VyVGhhbkFkZHJlc3MoJmR1bW15LCAmcmVzdWx0
KTsKKyAgcmV0dXJuIHJlc3VsdDsKIH0KLQotLy8gQSB0aHJlYWRzYWZlIGltcGxlbWVudGF0aW9u
IG9mIGZvcmsoMikgZm9yIHRocmVhZHNhZmUtc3R5bGUgZGVhdGggdGVzdHMKLS8vIHRoYXQgdXNl
cyBjbG9uZSgyKS4gIEl0IGRpZXMgd2l0aCBhbiBlcnJvciBtZXNzYWdlIGlmIGFueXRoaW5nIGdv
ZXMKLS8vIHdyb25nLgotc3RhdGljIHBpZF90IEV4ZWNEZWF0aFRlc3RGb3JrKGNoYXIqIGNvbnN0
KiBhcmd2LCBpbnQgY2xvc2VfZmQpIHsKKyMgIGVuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUKKwor
Ly8gU3Bhd25zIGEgY2hpbGQgcHJvY2VzcyB3aXRoIHRoZSBzYW1lIGV4ZWN1dGFibGUgYXMgdGhl
IGN1cnJlbnQgcHJvY2VzcyBpbgorLy8gYSB0aHJlYWQtc2FmZSBtYW5uZXIgYW5kIGluc3RydWN0
cyBpdCB0byBydW4gdGhlIGRlYXRoIHRlc3QuICBUaGUKKy8vIGltcGxlbWVudGF0aW9uIHVzZXMg
Zm9yaygyKSArIGV4ZWMuICBPbiBzeXN0ZW1zIHdoZXJlIGNsb25lKDIpIGlzCisvLyBhdmFpbGFi
bGUsIGl0IGlzIHVzZWQgaW5zdGVhZCwgYmVpbmcgc2xpZ2h0bHkgbW9yZSB0aHJlYWQtc2FmZS4g
IE9uIFFOWCwKKy8vIGZvcmsgc3VwcG9ydHMgb25seSBzaW5nbGUtdGhyZWFkZWQgZW52aXJvbm1l
bnRzLCBzbyB0aGlzIGZ1bmN0aW9uIHVzZXMKKy8vIHNwYXduKDIpIHRoZXJlIGluc3RlYWQuICBU
aGUgZnVuY3Rpb24gZGllcyB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaWYKKy8vIGFueXRoaW5nIGdv
ZXMgd3JvbmcuCitzdGF0aWMgcGlkX3QgRXhlY0RlYXRoVGVzdFNwYXduQ2hpbGQoY2hhciogY29u
c3QqIGFyZ3YsIGludCBjbG9zZV9mZCkgewogICBFeGVjRGVhdGhUZXN0QXJncyBhcmdzID0geyBh
cmd2LCBjbG9zZV9mZCB9OwogICBwaWRfdCBjaGlsZF9waWQgPSAtMTsKIAotI2lmIEdURVNUX0hB
U19DTE9ORQorIyAgaWYgR1RFU1RfT1NfUU5YCisgIC8vIE9idGFpbnMgdGhlIGN1cnJlbnQgZGly
ZWN0b3J5IGFuZCBzZXRzIGl0IHRvIGJlIGNsb3NlZCBpbiB0aGUgY2hpbGQKKyAgLy8gcHJvY2Vz
cy4KKyAgY29uc3QgaW50IGN3ZF9mZCA9IG9wZW4oIi4iLCBPX1JET05MWSk7CisgIEdURVNUX0RF
QVRIX1RFU1RfQ0hFQ0tfKGN3ZF9mZCAhPSAtMSk7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tf
U1lTQ0FMTF8oZmNudGwoY3dkX2ZkLCBGX1NFVEZELCBGRF9DTE9FWEVDKSk7CisgIC8vIFdlIG5l
ZWQgdG8gZXhlY3V0ZSB0aGUgdGVzdCBwcm9ncmFtIGluIHRoZSBzYW1lIGVudmlyb25tZW50IHdo
ZXJlCisgIC8vIGl0IHdhcyBvcmlnaW5hbGx5IGludm9rZWQuICBUaGVyZWZvcmUgd2UgY2hhbmdl
IHRvIHRoZSBvcmlnaW5hbAorICAvLyB3b3JraW5nIGRpcmVjdG9yeSBmaXJzdC4KKyAgY29uc3Qg
Y2hhciogY29uc3Qgb3JpZ2luYWxfZGlyID0KKyAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgp
LT5vcmlnaW5hbF93b3JraW5nX2RpcigpOworICAvLyBXZSBjYW4gc2FmZWx5IGNhbGwgY2hkaXIo
KSBhcyBpdCdzIGEgZGlyZWN0IHN5c3RlbSBjYWxsLgorICBpZiAoY2hkaXIob3JpZ2luYWxfZGly
KSAhPSAwKSB7CisgICAgRGVhdGhUZXN0QWJvcnQoc3RkOjpzdHJpbmcoImNoZGlyKFwiIikgKyBv
cmlnaW5hbF9kaXIgKyAiXCIpIGZhaWxlZDogIiArCisgICAgICAgICAgICAgICAgICAgR2V0TGFz
dEVycm5vRGVzY3JpcHRpb24oKSk7CisgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgfQorCisg
IGludCBmZF9mbGFnczsKKyAgLy8gU2V0IGNsb3NlX2ZkIHRvIGJlIGNsb3NlZCBhZnRlciBzcGF3
bi4KKyAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhmZF9mbGFncyA9IGZjbnRsKGNs
b3NlX2ZkLCBGX0dFVEZEKSk7CisgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oZmNu
dGwoY2xvc2VfZmQsIEZfU0VURkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmRfZmxhZ3MgfCBGRF9DTE9FWEVDKSk7CisgIHN0cnVjdCBpbmhlcml0YW5jZSBpbmhl
cml0ID0gezB9OworICAvLyBzcGF3biBpcyBhIHN5c3RlbSBjYWxsLgorICBjaGlsZF9waWQgPSBz
cGF3bihhcmdzLmFyZ3ZbMF0sIDAsIE5VTEwsICZpbmhlcml0LCBhcmdzLmFyZ3YsIEdldEVudmly
b24oKSk7CisgIC8vIFJlc3RvcmVzIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorICBH
VEVTVF9ERUFUSF9URVNUX0NIRUNLXyhmY2hkaXIoY3dkX2ZkKSAhPSAtMSk7CisgIEdURVNUX0RF
QVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oY2xvc2UoY3dkX2ZkKSk7CisKKyMgIGVsc2UgICAvLyBH
VEVTVF9PU19RTlgKKyMgICBpZiBHVEVTVF9PU19MSU5VWAorICAvLyBXaGVuIGEgU0lHUFJPRiBz
aWduYWwgaXMgcmVjZWl2ZWQgd2hpbGUgZm9yaygpIG9yIGNsb25lKCkgYXJlIGV4ZWN1dGluZywK
KyAgLy8gdGhlIHByb2Nlc3MgbWF5IGhhbmcuIFRvIGF2b2lkIHRoaXMsIHdlIGlnbm9yZSBTSUdQ
Uk9GIGhlcmUgYW5kIHJlLWVuYWJsZQorICAvLyBpdCBhZnRlciB0aGUgY2FsbCB0byBmb3JrKCkv
Y2xvbmUoKSBpcyBjb21wbGV0ZS4KKyAgc3RydWN0IHNpZ2FjdGlvbiBzYXZlZF9zaWdwcm9mX2Fj
dGlvbjsKKyAgc3RydWN0IHNpZ2FjdGlvbiBpZ25vcmVfc2lncHJvZl9hY3Rpb247CisgIG1lbXNl
dCgmaWdub3JlX3NpZ3Byb2ZfYWN0aW9uLCAwLCBzaXplb2YoaWdub3JlX3NpZ3Byb2ZfYWN0aW9u
KSk7CisgIHNpZ2VtcHR5c2V0KCZpZ25vcmVfc2lncHJvZl9hY3Rpb24uc2FfbWFzayk7CisgIGln
bm9yZV9zaWdwcm9mX2FjdGlvbi5zYV9oYW5kbGVyID0gU0lHX0lHTjsKKyAgR1RFU1RfREVBVEhf
VEVTVF9DSEVDS19TWVNDQUxMXyhzaWdhY3Rpb24oCisgICAgICBTSUdQUk9GLCAmaWdub3JlX3Np
Z3Byb2ZfYWN0aW9uLCAmc2F2ZWRfc2lncHJvZl9hY3Rpb24pKTsKKyMgICBlbmRpZiAgLy8gR1RF
U1RfT1NfTElOVVgKKworIyAgIGlmIEdURVNUX0hBU19DTE9ORQogICBjb25zdCBib29sIHVzZV9m
b3JrID0gR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKTsKIAogICBpZiAoIXVzZV9mb3Jr
KSB7CkBAIC05MDAsMjEgKzEyOTEsMzcgQEAgc3RhdGljIHBpZF90IEV4ZWNEZWF0aFRlc3RGb3Jr
KGNoYXIqIGNvbnN0KiBhcmd2LCBpbnQgY2xvc2VfZmQpIHsKICAgICB2b2lkKiBjb25zdCBzdGFj
ayA9IG1tYXAoTlVMTCwgc3RhY2tfc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTUFQX0FOT04gfCBNQVBfUFJJVkFURSwgLTEsIDApOwog
ICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YWNrICE9IE1BUF9GQUlMRUQpOworCisgICAg
Ly8gTWF4aW11bSBzdGFjayBhbGlnbm1lbnQgaW4gYnl0ZXM6ICBGb3IgYSBkb3dud2FyZC1ncm93
aW5nIHN0YWNrLCB0aGlzCisgICAgLy8gYW1vdW50IGlzIHN1YnRyYWN0ZWQgZnJvbSBzaXplIG9m
IHRoZSBzdGFjayBzcGFjZSB0byBnZXQgYW4gYWRkcmVzcworICAgIC8vIHRoYXQgaXMgd2l0aGlu
IHRoZSBzdGFjayBzcGFjZSBhbmQgaXMgYWxpZ25lZCBvbiBhbGwgc3lzdGVtcyB3ZSBjYXJlCisg
ICAgLy8gYWJvdXQuICBBcyBmYXIgYXMgSSBrbm93IHRoZXJlIGlzIG5vIEFCSSB3aXRoIHN0YWNr
IGFsaWdubWVudCBncmVhdGVyCisgICAgLy8gdGhhbiA2NC4gIFdlIGFzc3VtZSBzdGFjayBhbmQg
c3RhY2tfc2l6ZSBhbHJlYWR5IGhhdmUgYWxpZ25tZW50IG9mCisgICAgLy8ga01heFN0YWNrQWxp
Z25tZW50LgorICAgIGNvbnN0IHNpemVfdCBrTWF4U3RhY2tBbGlnbm1lbnQgPSA2NDsKICAgICB2
b2lkKiBjb25zdCBzdGFja190b3AgPQotICAgICAgICBzdGF0aWNfY2FzdDxjaGFyKj4oc3RhY2sp
ICsgKHN0YWNrX2dyb3dzX2Rvd24gPyBzdGFja19zaXplIDogMCk7CisgICAgICAgIHN0YXRpY19j
YXN0PGNoYXIqPihzdGFjaykgKworICAgICAgICAgICAgKHN0YWNrX2dyb3dzX2Rvd24gPyBzdGFj
a19zaXplIC0ga01heFN0YWNrQWxpZ25tZW50IDogMCk7CisgICAgR1RFU1RfREVBVEhfVEVTVF9D
SEVDS18oc3RhY2tfc2l6ZSA+IGtNYXhTdGFja0FsaWdubWVudCAmJgorICAgICAgICByZWludGVy
cHJldF9jYXN0PGludHB0cl90PihzdGFja190b3ApICUga01heFN0YWNrQWxpZ25tZW50ID09IDAp
OwogCiAgICAgY2hpbGRfcGlkID0gY2xvbmUoJkV4ZWNEZWF0aFRlc3RDaGlsZE1haW4sIHN0YWNr
X3RvcCwgU0lHQ0hMRCwgJmFyZ3MpOwogCiAgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18obXVu
bWFwKHN0YWNrLCBzdGFja19zaXplKSAhPSAtMSk7CiAgIH0KLSNlbHNlCisjICAgZWxzZQogICBj
b25zdCBib29sIHVzZV9mb3JrID0gdHJ1ZTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NMT05FCisj
ICAgZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORQogCiAgIGlmICh1c2VfZm9yayAmJiAoY2hpbGRf
cGlkID0gZm9yaygpKSA9PSAwKSB7CiAgICAgICBFeGVjRGVhdGhUZXN0Q2hpbGRNYWluKCZhcmdz
KTsKICAgICAgIF9leGl0KDApOwogICB9CisjICBlbmRpZiAgLy8gR1RFU1RfT1NfUU5YCisjICBp
ZiBHVEVTVF9PU19MSU5VWAorICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKAorICAg
ICAgc2lnYWN0aW9uKFNJR1BST0YsICZzYXZlZF9zaWdwcm9mX2FjdGlvbiwgTlVMTCkpOworIyAg
ZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCiAKICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oY2hp
bGRfcGlkICE9IC0xKTsKICAgcmV0dXJuIGNoaWxkX3BpZDsKQEAgLTk0MiwxNiArMTM0OSwxNiBA
QCBEZWF0aFRlc3Q6OlRlc3RSb2xlIEV4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAgIC8v
IGl0IGJlIGNsb3NlZCB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGRvZXMgYW4gZXhlYzoKICAgR1RF
U1RfREVBVEhfVEVTVF9DSEVDS18oZmNudGwocGlwZV9mZFsxXSwgRl9TRVRGRCwgMCkgIT0gLTEp
OwogCi0gIGNvbnN0IFN0cmluZyBmaWx0ZXJfZmxhZyA9Ci0gICAgICBTdHJpbmc6OkZvcm1hdCgi
LS0lcyVzPSVzLiVzIiwKLSAgICAgICAgICAgICAgICAgICAgIEdURVNUX0ZMQUdfUFJFRklYXywg
a0ZpbHRlckZsYWcsCi0gICAgICAgICAgICAgICAgICAgICBpbmZvLT50ZXN0X2Nhc2VfbmFtZSgp
LCBpbmZvLT5uYW1lKCkpOwotICBjb25zdCBTdHJpbmcgaW50ZXJuYWxfZmxhZyA9Ci0gICAgICBT
dHJpbmc6OkZvcm1hdCgiLS0lcyVzPSVzfCVkfCVkfCVkIiwKLSAgICAgICAgICAgICAgICAgICAg
IEdURVNUX0ZMQUdfUFJFRklYXywga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZywKLSAgICAgICAg
ICAgICAgICAgICAgIGZpbGVfLCBsaW5lXywgZGVhdGhfdGVzdF9pbmRleCwgcGlwZV9mZFsxXSk7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbHRlcl9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCIt
LSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsga0ZpbHRlckZsYWcgKyAiPSIKKyAgICAgICsgaW5m
by0+dGVzdF9jYXNlX25hbWUoKSArICIuIiArIGluZm8tPm5hbWUoKTsKKyAgY29uc3Qgc3RkOjpz
dHJpbmcgaW50ZXJuYWxfZmxhZyA9CisgICAgICBzdGQ6OnN0cmluZygiLS0iKSArIEdURVNUX0ZM
QUdfUFJFRklYXyArIGtJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcgKyAiPSIKKyAgICAgICsgZmls
ZV8gKyAifCIgKyBTdHJlYW1hYmxlVG9TdHJpbmcobGluZV8pICsgInwiCisgICAgICArIFN0cmVh
bWFibGVUb1N0cmluZyhkZWF0aF90ZXN0X2luZGV4KSArICJ8IgorICAgICAgKyBTdHJlYW1hYmxl
VG9TdHJpbmcocGlwZV9mZFsxXSk7CiAgIEFyZ3VtZW50cyBhcmdzOwotICBhcmdzLkFkZEFyZ3Vt
ZW50cyhHZXRBcmd2cygpKTsKKyAgYXJncy5BZGRBcmd1bWVudHMoR2V0QXJndnNGb3JEZWF0aFRl
c3RDaGlsZFByb2Nlc3MoKSk7CiAgIGFyZ3MuQWRkQXJndW1lbnQoZmlsdGVyX2ZsYWcuY19zdHIo
KSk7CiAgIGFyZ3MuQWRkQXJndW1lbnQoaW50ZXJuYWxfZmxhZy5jX3N0cigpKTsKIApAQCAtOTYy
LDcgKzEzNjksNyBAQCBEZWF0aFRlc3Q6OlRlc3RSb2xlIEV4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJv
bGUoKSB7CiAgIC8vIGlzIG5lY2Vzc2FyeS4KICAgRmx1c2hJbmZvTG9nKCk7CiAKLSAgY29uc3Qg
cGlkX3QgY2hpbGRfcGlkID0gRXhlY0RlYXRoVGVzdEZvcmsoYXJncy5Bcmd2KCksIHBpcGVfZmRb
MF0pOworICBjb25zdCBwaWRfdCBjaGlsZF9waWQgPSBFeGVjRGVhdGhUZXN0U3Bhd25DaGlsZChh
cmdzLkFyZ3YoKSwgcGlwZV9mZFswXSk7CiAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FM
TF8oY2xvc2UocGlwZV9mZFsxXSkpOwogICBzZXRfY2hpbGRfcGlkKGNoaWxkX3BpZCk7CiAgIHNl
dF9yZWFkX2ZkKHBpcGVfZmRbMF0pOwpAQCAtOTcwLDcgKzEzNzcsNyBAQCBEZWF0aFRlc3Q6OlRl
c3RSb2xlIEV4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7CiAgIHJldHVybiBPVkVSU0VFX1RF
U1Q7CiB9CiAKLSNlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vICFHVEVT
VF9PU19XSU5ET1dTCiAKIC8vIENyZWF0ZXMgYSBjb25jcmV0ZSBEZWF0aFRlc3QtZGVyaXZlZCBj
bGFzcyB0aGF0IGRlcGVuZHMgb24gdGhlCiAvLyAtLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgZmxh
ZywgYW5kIHNldHMgdGhlIHBvaW50ZXIgcG9pbnRlZCB0bwpAQCAtOTg4LDkgKzEzOTUsMTAgQEAg
Ym9vbCBEZWZhdWx0RGVhdGhUZXN0RmFjdG9yeTo6Q3JlYXRlKGNvbnN0IGNoYXIqIHN0YXRlbWVu
dCwgY29uc3QgUkUqIHJlZ2V4LAogCiAgIGlmIChmbGFnICE9IE5VTEwpIHsKICAgICBpZiAoZGVh
dGhfdGVzdF9pbmRleCA+IGZsYWctPmluZGV4KCkpIHsKLSAgICAgIERlYXRoVGVzdDo6c2V0X2xh
c3RfZGVhdGhfdGVzdF9tZXNzYWdlKFN0cmluZzo6Rm9ybWF0KAotICAgICAgICAgICJEZWF0aCB0
ZXN0IGNvdW50ICglZCkgc29tZWhvdyBleGNlZWRlZCBleHBlY3RlZCBtYXhpbXVtICglZCkiLAot
ICAgICAgICAgIGRlYXRoX3Rlc3RfaW5kZXgsIGZsYWctPmluZGV4KCkpKTsKKyAgICAgIERlYXRo
VGVzdDo6c2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKAorICAgICAgICAgICJEZWF0aCB0ZXN0
IGNvdW50ICgiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGRlYXRoX3Rlc3RfaW5kZXgpCisgICAgICAg
ICAgKyAiKSBzb21laG93IGV4Y2VlZGVkIGV4cGVjdGVkIG1heGltdW0gKCIKKyAgICAgICAgICAr
IFN0cmVhbWFibGVUb1N0cmluZyhmbGFnLT5pbmRleCgpKSArICIpIik7CiAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCkBAIC0xMDAxLDY0ICsxNDA5LDU2IEBAIGJvb2wgRGVmYXVsdERlYXRo
VGVzdEZhY3Rvcnk6OkNyZWF0ZShjb25zdCBjaGFyKiBzdGF0ZW1lbnQsIGNvbnN0IFJFKiByZWdl
eCwKICAgICB9CiAgIH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lO
RE9XUworCiAgIGlmIChHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZl
IiB8fAogICAgICAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAiZmFzdCIpIHsKICAg
ICAqdGVzdCA9IG5ldyBXaW5kb3dzRGVhdGhUZXN0KHN0YXRlbWVudCwgcmVnZXgsIGZpbGUsIGxp
bmUpOwogICB9Ci0jZWxzZQorCisjIGVsaWYgR1RFU1RfT1NfRlVDSFNJQQorCisgIGlmIChHVEVT
VF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZlIiB8fAorICAgICAgR1RFU1Rf
RkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAiZmFzdCIpIHsKKyAgICAqdGVzdCA9IG5ldyBGdWNo
c2lhRGVhdGhUZXN0KHN0YXRlbWVudCwgcmVnZXgsIGZpbGUsIGxpbmUpOworICB9CisKKyMgZWxz
ZQorCiAgIGlmIChHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJ0aHJlYWRzYWZlIikg
ewogICAgICp0ZXN0ID0gbmV3IEV4ZWNEZWF0aFRlc3Qoc3RhdGVtZW50LCByZWdleCwgZmlsZSwg
bGluZSk7CiAgIH0gZWxzZSBpZiAoR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAiZmFz
dCIpIHsKICAgICAqdGVzdCA9IG5ldyBOb0V4ZWNEZWF0aFRlc3Qoc3RhdGVtZW50LCByZWdleCk7
CiAgIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjIGVuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCisKICAgZWxzZSB7ICAvLyBOT0xJTlQgLSB0aGlzIGlzIG1vcmUgcmVhZGFibGUg
dGhhbiB1bmJhbGFuY2VkIGJyYWNrZXRzIGluc2lkZSAjaWYuCi0gICAgRGVhdGhUZXN0OjpzZXRf
bGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICJVbmtub3du
IGRlYXRoIHRlc3Qgc3R5bGUgXCIlc1wiIGVuY291bnRlcmVkIiwKLSAgICAgICAgR1RFU1RfRkxB
RyhkZWF0aF90ZXN0X3N0eWxlKS5jX3N0cigpKSk7CisgICAgRGVhdGhUZXN0OjpzZXRfbGFzdF9k
ZWF0aF90ZXN0X21lc3NhZ2UoCisgICAgICAgICJVbmtub3duIGRlYXRoIHRlc3Qgc3R5bGUgXCIi
ICsgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKQorICAgICAgICArICJcIiBlbmNvdW50ZXJl
ZCIpOwogICAgIHJldHVybiBmYWxzZTsKICAgfQogCiAgIHJldHVybiB0cnVlOwogfQogCi0vLyBT
cGxpdHMgYSBnaXZlbiBzdHJpbmcgb24gYSBnaXZlbiBkZWxpbWl0ZXIsIHBvcHVsYXRpbmcgYSBn
aXZlbgotLy8gdmVjdG9yIHdpdGggdGhlIGZpZWxkcy4gIEdURVNUX0hBU19ERUFUSF9URVNUIGlt
cGxpZXMgdGhhdCB3ZSBoYXZlCi0vLyA6OnN0ZDo6c3RyaW5nLCBzbyB3ZSBjYW4gdXNlIGl0IGhl
cmUuCi1zdGF0aWMgdm9pZCBTcGxpdFN0cmluZyhjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIsIGNo
YXIgZGVsaW1pdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6OnZlY3RvcjwgOjpz
dGQ6OnN0cmluZz4qIGRlc3QpIHsKLSAgOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4gcGFy
c2VkOwotICA6OnN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgcG9zID0gMDsKLSAgd2hpbGUgKDo6dGVz
dGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgewotICAgIGNvbnN0IDo6c3RkOjpzdHJpbmc6
OnNpemVfdHlwZSBjb2xvbiA9IHN0ci5maW5kKGRlbGltaXRlciwgcG9zKTsKLSAgICBpZiAoY29s
b24gPT0gOjpzdGQ6OnN0cmluZzo6bnBvcykgewotICAgICAgcGFyc2VkLnB1c2hfYmFjayhzdHIu
c3Vic3RyKHBvcykpOwotICAgICAgYnJlYWs7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHBhcnNlZC5w
dXNoX2JhY2soc3RyLnN1YnN0cihwb3MsIGNvbG9uIC0gcG9zKSk7Ci0gICAgICBwb3MgPSBjb2xv
biArIDE7Ci0gICAgfQotICB9Ci0gIGRlc3QtPnN3YXAocGFyc2VkKTsKLX0KLQotI2lmIEdURVNU
X09TX1dJTkRPV1MKKyMgaWYgR1RFU1RfT1NfV0lORE9XUwogLy8gUmVjcmVhdGVzIHRoZSBwaXBl
IGFuZCBldmVudCBoYW5kbGVzIGZyb20gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMsCiAvLyBzaWdu
YWxzIHRoZSBldmVudCwgYW5kIHJldHVybnMgYSBmaWxlIGRlc2NyaXB0b3Igd3JhcHBlZCBhcm91
bmQgdGhlIHBpcGUKIC8vIGhhbmRsZS4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gdGhlIGNo
aWxkIHByb2Nlc3Mgb25seS4KLWludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBp
bnQgcGFyZW50X3Byb2Nlc3NfaWQsCitzdGF0aWMgaW50IEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9y
KHVuc2lnbmVkIGludCBwYXJlbnRfcHJvY2Vzc19pZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgZXZlbnRfaGFuZGxlX2FzX3NpemVfdCkgewogICBBdXRvSGFuZGxlIHBh
cmVudF9wcm9jZXNzX2hhbmRsZSg6Ok9wZW5Qcm9jZXNzKFBST0NFU1NfRFVQX0hBTkRMRSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCAg
Ly8gTm9uLWluaGVyaXRhYmxlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyZW50X3Byb2Nlc3NfaWQpKTsKICAgaWYgKHBhcmVudF9wcm9jZXNz
X2hhbmRsZS5HZXQoKSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgIERlYXRoVGVzdEFi
b3J0KFN0cmluZzo6Rm9ybWF0KCJVbmFibGUgdG8gb3BlbiBwYXJlbnQgcHJvY2VzcyAldSIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50X3Byb2Nlc3NfaWQpKTsKKyAg
ICBEZWF0aFRlc3RBYm9ydCgiVW5hYmxlIHRvIG9wZW4gcGFyZW50IHByb2Nlc3MgIiArCisgICAg
ICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHBhcmVudF9wcm9jZXNzX2lkKSk7CiAg
IH0KIAotICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBSZXBsYWNlIHRoZSBmb2xsb3dpbmcg
Y2hlY2sgd2l0aCBhCisgIC8vIEZJWE1FOiBSZXBsYWNlIHRoZSBmb2xsb3dpbmcgY2hlY2sgd2l0
aCBhCiAgIC8vIGNvbXBpbGUtdGltZSBhc3NlcnRpb24gd2hlbiBhdmFpbGFibGUuCiAgIEdURVNU
X0NIRUNLXyhzaXplb2YoSEFORExFKSA8PSBzaXplb2Yoc2l6ZV90KSk7CiAKQEAgLTEwNjYsNyAr
MTQ2Niw3IEBAIGludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBpbnQgcGFyZW50
X3Byb2Nlc3NfaWQsCiAgICAgICByZWludGVycHJldF9jYXN0PEhBTkRMRT4od3JpdGVfaGFuZGxl
X2FzX3NpemVfdCk7CiAgIEhBTkRMRSBkdXBfd3JpdGVfaGFuZGxlOwogCi0gIC8vIFRoZSBuZXds
eSBpbml0aWFsaXplZCBoYW5kbGUgaXMgYWNjZXNzaWJsZSBvbmx5IGluIGluIHRoZSBwYXJlbnQK
KyAgLy8gVGhlIG5ld2x5IGluaXRpYWxpemVkIGhhbmRsZSBpcyBhY2Nlc3NpYmxlIG9ubHkgaW4g
dGhlIHBhcmVudAogICAvLyBwcm9jZXNzLiBUbyBvYnRhaW4gb25lIGFjY2Vzc2libGUgd2l0aGlu
IHRoZSBjaGlsZCwgd2UgbmVlZCB0byB1c2UKICAgLy8gRHVwbGljYXRlSGFuZGxlLgogICBpZiAo
ITo6RHVwbGljYXRlSGFuZGxlKHBhcmVudF9wcm9jZXNzX2hhbmRsZS5HZXQoKSwgd3JpdGVfaGFu
ZGxlLApAQCAtMTA3NSw5ICsxNDc1LDEwIEBAIGludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1
bnNpZ25lZCBpbnQgcGFyZW50X3Byb2Nlc3NfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MgaXMgdXNlZC4KICAgICAgICAgICAgICAg
ICAgICAgICAgICBGQUxTRSwgIC8vIFJlcXVlc3Qgbm9uLWluaGVyaXRhYmxlIGhhbmRsZXIuCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFVQTElDQVRFX1NBTUVfQUNDRVNTKSkgewotICAgIERl
YXRoVGVzdEFib3J0KFN0cmluZzo6Rm9ybWF0KAotICAgICAgICAiVW5hYmxlIHRvIGR1cGxpY2F0
ZSB0aGUgcGlwZSBoYW5kbGUgJUl1IGZyb20gdGhlIHBhcmVudCBwcm9jZXNzICV1IiwKLSAgICAg
ICAgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCwgcGFyZW50X3Byb2Nlc3NfaWQpKTsKKyAgICBEZWF0
aFRlc3RBYm9ydCgiVW5hYmxlIHRvIGR1cGxpY2F0ZSB0aGUgcGlwZSBoYW5kbGUgIiArCisgICAg
ICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHdyaXRlX2hhbmRsZV9hc19zaXplX3Qp
ICsKKyAgICAgICAgICAgICAgICAgICAiIGZyb20gdGhlIHBhcmVudCBwcm9jZXNzICIgKworICAg
ICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhwYXJlbnRfcHJvY2Vzc19pZCkpOwog
ICB9CiAKICAgY29uc3QgSEFORExFIGV2ZW50X2hhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFO
RExFPihldmVudF9oYW5kbGVfYXNfc2l6ZV90KTsKQEAgLTEwODgsMTcgKzE0ODksMTggQEAgaW50
IEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9yKHVuc2lnbmVkIGludCBwYXJlbnRfcHJvY2Vzc19pZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
RkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgRFVQTElDQVRFX1NBTUVfQUNDRVNTKSkg
ewotICAgIERlYXRoVGVzdEFib3J0KFN0cmluZzo6Rm9ybWF0KAotICAgICAgICAiVW5hYmxlIHRv
IGR1cGxpY2F0ZSB0aGUgZXZlbnQgaGFuZGxlICVJdSBmcm9tIHRoZSBwYXJlbnQgcHJvY2VzcyAl
dSIsCi0gICAgICAgIGV2ZW50X2hhbmRsZV9hc19zaXplX3QsIHBhcmVudF9wcm9jZXNzX2lkKSk7
CisgICAgRGVhdGhUZXN0QWJvcnQoIlVuYWJsZSB0byBkdXBsaWNhdGUgdGhlIGV2ZW50IGhhbmRs
ZSAiICsKKyAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcoZXZlbnRfaGFuZGxl
X2FzX3NpemVfdCkgKworICAgICAgICAgICAgICAgICAgICIgZnJvbSB0aGUgcGFyZW50IHByb2Nl
c3MgIiArCisgICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHBhcmVudF9wcm9j
ZXNzX2lkKSk7CiAgIH0KIAogICBjb25zdCBpbnQgd3JpdGVfZmQgPQogICAgICAgOjpfb3Blbl9v
c2ZoYW5kbGUocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oZHVwX3dyaXRlX2hhbmRsZSksIE9f
QVBQRU5EKTsKICAgaWYgKHdyaXRlX2ZkID09IC0xKSB7Ci0gICAgRGVhdGhUZXN0QWJvcnQoU3Ry
aW5nOjpGb3JtYXQoCi0gICAgICAgICJVbmFibGUgdG8gY29udmVydCBwaXBlIGhhbmRsZSAlSXUg
dG8gYSBmaWxlIGRlc2NyaXB0b3IiLAotICAgICAgICB3cml0ZV9oYW5kbGVfYXNfc2l6ZV90KSk7
CisgICAgRGVhdGhUZXN0QWJvcnQoIlVuYWJsZSB0byBjb252ZXJ0IHBpcGUgaGFuZGxlICIgKwor
ICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh3cml0ZV9oYW5kbGVfYXNfc2l6
ZV90KSArCisgICAgICAgICAgICAgICAgICAgIiB0byBhIGZpbGUgZGVzY3JpcHRvciIpOwogICB9
CiAKICAgLy8gU2lnbmFscyB0aGUgcGFyZW50IHRoYXQgdGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlw
ZSBoYXMgYmVlbiBhY3F1aXJlZApAQCAtMTEwNyw3ICsxNTA5LDcgQEAgaW50IEdldFN0YXR1c0Zp
bGVEZXNjcmlwdG9yKHVuc2lnbmVkIGludCBwYXJlbnRfcHJvY2Vzc19pZCwKIAogICByZXR1cm4g
d3JpdGVfZmQ7CiB9Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MKIAogLy8gUmV0dXJucyBhIG5ld2x5IGNyZWF0ZWQgSW50ZXJuYWxSdW5E
ZWF0aFRlc3RGbGFnIG9iamVjdCB3aXRoIGZpZWxkcwogLy8gaW5pdGlhbGl6ZWQgZnJvbSB0aGUg
R1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkgZmxhZyBpZgpAQCAtMTEyMyw3ICsx
NTI1LDggQEAgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBQYXJzZUludGVybmFsUnVuRGVhdGhU
ZXN0RmxhZygpIHsKICAgU3BsaXRTdHJpbmcoR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhf
dGVzdCkuY19zdHIoKSwgJ3wnLCAmZmllbGRzKTsKICAgaW50IHdyaXRlX2ZkID0gLTE7CiAKLSNp
ZiBHVEVTVF9PU19XSU5ET1dTCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKwogICB1bnNpZ25lZCBp
bnQgcGFyZW50X3Byb2Nlc3NfaWQgPSAwOwogICBzaXplX3Qgd3JpdGVfaGFuZGxlX2FzX3NpemVf
dCA9IDA7CiAgIHNpemVfdCBldmVudF9oYW5kbGVfYXNfc2l6ZV90ID0gMDsKQEAgLTExMzQsMjMg
KzE1MzcsMzQgQEAgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBQYXJzZUludGVybmFsUnVuRGVh
dGhUZXN0RmxhZygpIHsKICAgICAgIHx8ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmllbGRzWzNdLCAm
cGFyZW50X3Byb2Nlc3NfaWQpCiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1s0
XSwgJndyaXRlX2hhbmRsZV9hc19zaXplX3QpCiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVy
KGZpZWxkc1s1XSwgJmV2ZW50X2hhbmRsZV9hc19zaXplX3QpKSB7Ci0gICAgRGVhdGhUZXN0QWJv
cnQoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICJCYWQgLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVh
dGhfdGVzdCBmbGFnOiAlcyIsCi0gICAgICAgIEdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRo
X3Rlc3QpLmNfc3RyKCkpKTsKKyAgICBEZWF0aFRlc3RBYm9ydCgiQmFkIC0tZ3Rlc3RfaW50ZXJu
YWxfcnVuX2RlYXRoX3Rlc3QgZmxhZzogIiArCisgICAgICAgICAgICAgICAgICAgR1RFU1RfRkxB
RyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkpOwogICB9CiAgIHdyaXRlX2ZkID0gR2V0U3RhdHVz
RmlsZURlc2NyaXB0b3IocGFyZW50X3Byb2Nlc3NfaWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBldmVudF9oYW5kbGVfYXNfc2l6ZV90KTsKLSNlbHNlCisKKyMg
ZWxpZiBHVEVTVF9PU19GVUNIU0lBCisKKyAgaWYgKGZpZWxkcy5zaXplKCkgIT0gMworICAgICAg
fHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVsZHNbMV0sICZsaW5lKQorICAgICAgfHwgIVBhcnNl
TmF0dXJhbE51bWJlcihmaWVsZHNbMl0sICZpbmRleCkpIHsKKyAgICBEZWF0aFRlc3RBYm9ydCgi
QmFkIC0tZ3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QgZmxhZzogIgorICAgICAgICArIEdU
RVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpKTsKKyAgfQorCisjIGVsc2UKKwogICBp
ZiAoZmllbGRzLnNpemUoKSAhPSA0CiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxk
c1sxXSwgJmxpbmUpCiAgICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1syXSwgJmlu
ZGV4KQogICAgICAgfHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVsZHNbM10sICZ3cml0ZV9mZCkp
IHsKLSAgICBEZWF0aFRlc3RBYm9ydChTdHJpbmc6OkZvcm1hdCgKLSAgICAgICAgIkJhZCAtLWd0
ZXN0X2ludGVybmFsX3J1bl9kZWF0aF90ZXN0IGZsYWc6ICVzIiwKLSAgICAgICAgR1RFU1RfRkxB
RyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkuY19zdHIoKSkpOworICAgIERlYXRoVGVzdEFib3J0
KCJCYWQgLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFnOiAiCisgICAgICAgICsg
R1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkpOwogICB9Ci0jZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCiAgIHJldHVy
biBuZXcgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKGZpZWxkc1swXSwgbGluZSwgaW5kZXgsIHdy
aXRlX2ZkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0
ZXN0LWZpbGVwYXRoLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWZpbGVw
YXRoLmNjCmluZGV4IGMxZWY5MTg4YWQ4NWFiOGEwNDdhMzNiZjk5NDVlMWNkMGNjNzNlZmYuLmE3
ZTY1YzA4MmE3NWZjNmZiMDM4YTAyM2Q1YjFkM2UwOWU0NzlmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1maWxlcGF0aC5jYworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtZmlsZXBhdGguY2MKQEAgLTI2LDM5ICsyNiwzOCBAQAog
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcnM6IGtlaXRoLnJheUBnbWFpbC5jb20gKEtlaXRoIFJheSkKIAotI2luY2x1ZGUgPGd0ZXN0
L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oPgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgiCiAK
ICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0
LmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgogCiAjaWYgR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUKLSNpbmNsdWRlIDx3aW5kb3dzLmg+CisjIGluY2x1ZGUgPHdpbmRvd3MuaD4K
ICNlbGlmIEdURVNUX09TX1dJTkRPV1MKLSNpbmNsdWRlIDxkaXJlY3QuaD4KLSNpbmNsdWRlIDxp
by5oPgorIyBpbmNsdWRlIDxkaXJlY3QuaD4KKyMgaW5jbHVkZSA8aW8uaD4KICNlbGlmIEdURVNU
X09TX1NZTUJJQU4KIC8vIFN5bWJpYW4gT3BlbkMgaGFzIFBBVEhfTUFYIGluIHN5cy9zeXNsaW1p
dHMuaAotI2luY2x1ZGUgPHN5cy9zeXNsaW1pdHMuaD4KKyMgaW5jbHVkZSA8c3lzL3N5c2xpbWl0
cy5oPgogI2Vsc2UKLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxjbGltaXRzPiAgLy8g
U29tZSBMaW51eCBkaXN0cmlidXRpb25zIGRlZmluZSBQQVRIX01BWCBoZXJlLgorIyBpbmNsdWRl
IDxsaW1pdHMuaD4KKyMgaW5jbHVkZSA8Y2xpbWl0cz4gIC8vIFNvbWUgTGludXggZGlzdHJpYnV0
aW9ucyBkZWZpbmUgUEFUSF9NQVggaGVyZS4KICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKIAorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgorCiAjaWYg
R1RFU1RfT1NfV0lORE9XUwotI2RlZmluZSBHVEVTVF9QQVRIX01BWF8gX01BWF9QQVRICisjIGRl
ZmluZSBHVEVTVF9QQVRIX01BWF8gX01BWF9QQVRICiAjZWxpZiBkZWZpbmVkKFBBVEhfTUFYKQot
I2RlZmluZSBHVEVTVF9QQVRIX01BWF8gUEFUSF9NQVgKKyMgZGVmaW5lIEdURVNUX1BBVEhfTUFY
XyBQQVRIX01BWAogI2VsaWYgZGVmaW5lZChfWE9QRU5fUEFUSF9NQVgpCi0jZGVmaW5lIEdURVNU
X1BBVEhfTUFYXyBfWE9QRU5fUEFUSF9NQVgKKyMgZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBfWE9Q
RU5fUEFUSF9NQVgKICNlbHNlCi0jZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBfUE9TSVhfUEFUSF9N
QVgKKyMgZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBfUE9TSVhfUEFUSF9NQVgKICNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUwogCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5n
Lmg+Ci0KIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKQEAgLTY5
LDIxICs2OCwxOSBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogLy8gb2YgdGhlbS4KIGNvbnN0IGNo
YXIga1BhdGhTZXBhcmF0b3IgPSAnXFwnOwogY29uc3QgY2hhciBrQWx0ZXJuYXRlUGF0aFNlcGFy
YXRvciA9ICcvJzsKLWNvbnN0IGNoYXIga1BhdGhTZXBhcmF0b3JTdHJpbmdbXSA9ICJcXCI7CiBj
b25zdCBjaGFyIGtBbHRlcm5hdGVQYXRoU2VwYXJhdG9yU3RyaW5nW10gPSAiLyI7Ci0jaWYgR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKIC8vIFdp
bmRvd3MgQ0UgZG9lc24ndCBoYXZlIGEgY3VycmVudCBkaXJlY3RvcnkuIFlvdSBzaG91bGQgbm90
IHVzZQogLy8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGluIHRlc3RzIG9uIFdpbmRvd3MgQ0UsIGJ1
dCB0aGlzIGF0IGxlYXN0CiAvLyBwcm92aWRlcyBhIHJlYXNvbmFibGUgZmFsbGJhY2suCiBjb25z
dCBjaGFyIGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nW10gPSAiXFwiOwogLy8gV2luZG93cyBDRSBk
b2Vzbid0IGRlZmluZSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUwogY29uc3QgRFdPUkQga0ludmFs
aWRGaWxlQXR0cmlidXRlcyA9IDB4ZmZmZmZmZmY7Ci0jZWxzZQorIyBlbHNlCiBjb25zdCBjaGFy
IGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nW10gPSAiLlxcIjsKLSNlbmRpZiAgLy8gR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAjZWxz
ZQogY29uc3QgY2hhciBrUGF0aFNlcGFyYXRvciA9ICcvJzsKLWNvbnN0IGNoYXIga1BhdGhTZXBh
cmF0b3JTdHJpbmdbXSA9ICIvIjsKIGNvbnN0IGNoYXIga0N1cnJlbnREaXJlY3RvcnlTdHJpbmdb
XSA9ICIuLyI7CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIApAQCAtOTgsNyArOTUsNyBA
QCBzdGF0aWMgYm9vbCBJc1BhdGhTZXBhcmF0b3IoY2hhciBjKSB7CiAKIC8vIFJldHVybnMgdGhl
IGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksIG9yICIiIGlmIHVuc3VjY2Vzc2Z1bC4KIEZpbGVQ
YXRoIEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkgewotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9C
SUxFCisjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgfHwgR1RFU1RfT1NfV0lORE9XU19QSE9O
RSB8fCBHVEVTVF9PU19XSU5ET1dTX1JUCiAgIC8vIFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlIGEg
Y3VycmVudCBkaXJlY3RvcnksIHNvIHdlIGp1c3QgcmV0dXJuCiAgIC8vIHNvbWV0aGluZyByZWFz
b25hYmxlLgogICByZXR1cm4gRmlsZVBhdGgoa0N1cnJlbnREaXJlY3RvcnlTdHJpbmcpOwpAQCAt
MTA3LDcgKzEwNCwxNCBAQCBGaWxlUGF0aCBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpIHsKICAg
cmV0dXJuIEZpbGVQYXRoKF9nZXRjd2QoY3dkLCBzaXplb2YoY3dkKSkgPT0gTlVMTCA/ICIiIDog
Y3dkKTsKICNlbHNlCiAgIGNoYXIgY3dkW0dURVNUX1BBVEhfTUFYXyArIDFdID0geyAnXDAnIH07
Ci0gIHJldHVybiBGaWxlUGF0aChnZXRjd2QoY3dkLCBzaXplb2YoY3dkKSkgPT0gTlVMTCA/ICIi
IDogY3dkKTsKKyAgY2hhciogcmVzdWx0ID0gZ2V0Y3dkKGN3ZCwgc2l6ZW9mKGN3ZCkpOworIyBp
ZiBHVEVTVF9PU19OQUNMCisgIC8vIGdldGN3ZCB3aWxsIGxpa2VseSBmYWlsIGluIE5hQ2wgZHVl
IHRvIHRoZSBzYW5kYm94LCBzbyByZXR1cm4gc29tZXRoaW5nCisgIC8vIHJlYXNvbmFibGUuIFRo
ZSB1c2VyIG1heSBoYXZlIHByb3ZpZGVkIGEgc2hpbSBpbXBsZW1lbnRhdGlvbiBmb3IgZ2V0Y3dk
LAorICAvLyBob3dldmVyLCBzbyBmYWxsYmFjayBvbmx5IHdoZW4gZmFpbHVyZSBpcyBkZXRlY3Rl
ZC4KKyAgcmV0dXJuIEZpbGVQYXRoKHJlc3VsdCA9PSBOVUxMID8ga0N1cnJlbnREaXJlY3RvcnlT
dHJpbmcgOiBjd2QpOworIyBlbmRpZiAgLy8gR1RFU1RfT1NfTkFDTAorICByZXR1cm4gRmlsZVBh
dGgocmVzdWx0ID09IE5VTEwgPyAiIiA6IGN3ZCk7CiAjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCiB9CiAKQEAgLTExNiwxNCArMTIwLDE1IEBAIEZpbGVQYXRoIEZpbGVQYXRoOjpH
ZXRDdXJyZW50RGlyKCkgewogLy8gRmlsZVBhdGgoImRpci9maWxlIikuIElmIGEgY2FzZS1pbnNl
bnNpdGl2ZSBleHRlbnNpb24gaXMgbm90CiAvLyBmb3VuZCwgcmV0dXJucyBhIGNvcHkgb2YgdGhl
IG9yaWdpbmFsIEZpbGVQYXRoLgogRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZUV4dGVuc2lvbihj
b25zdCBjaGFyKiBleHRlbnNpb24pIGNvbnN0IHsKLSAgU3RyaW5nIGRvdF9leHRlbnNpb24oU3Ry
aW5nOjpGb3JtYXQoIi4lcyIsIGV4dGVuc2lvbikpOwotICBpZiAocGF0aG5hbWVfLkVuZHNXaXRo
Q2FzZUluc2Vuc2l0aXZlKGRvdF9leHRlbnNpb24uY19zdHIoKSkpIHsKLSAgICByZXR1cm4gRmls
ZVBhdGgoU3RyaW5nKHBhdGhuYW1lXy5jX3N0cigpLCBwYXRobmFtZV8ubGVuZ3RoKCkgLSA0KSk7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGRvdF9leHRlbnNpb24gPSBzdGQ6OnN0cmluZygiLiIpICsg
ZXh0ZW5zaW9uOworICBpZiAoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZShwYXRobmFt
ZV8sIGRvdF9leHRlbnNpb24pKSB7CisgICAgcmV0dXJuIEZpbGVQYXRoKHBhdGhuYW1lXy5zdWJz
dHIoCisgICAgICAgIDAsIHBhdGhuYW1lXy5sZW5ndGgoKSAtIGRvdF9leHRlbnNpb24ubGVuZ3Ro
KCkpKTsKICAgfQogICByZXR1cm4gKnRoaXM7CiB9CiAKLS8vIFJldHVybnMgYSBwb2ludGVyIHRv
IHRoZSBsYXN0IG9jY3VyZW5jZSBvZiBhIHZhbGlkIHBhdGggc2VwYXJhdG9yIGluCisvLyBSZXR1
cm5zIGEgcG9pbnRlciB0byB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIGEgdmFsaWQgcGF0aCBzZXBh
cmF0b3IgaW4KIC8vIHRoZSBGaWxlUGF0aC4gT24gV2luZG93cywgZm9yIGV4YW1wbGUsIGJvdGgg
Jy8nIGFuZCAnXCcgYXJlIHZhbGlkIHBhdGgKIC8vIHNlcGFyYXRvcnMuIFJldHVybnMgTlVMTCBp
ZiBubyBwYXRoIHNlcGFyYXRvciB3YXMgZm91bmQuCiBjb25zdCBjaGFyKiBGaWxlUGF0aDo6Rmlu
ZExhc3RQYXRoU2VwYXJhdG9yKCkgY29uc3QgewpAQCAtMTQ3LDcgKzE1Miw3IEBAIGNvbnN0IGNo
YXIqIEZpbGVQYXRoOjpGaW5kTGFzdFBhdGhTZXBhcmF0b3IoKSBjb25zdCB7CiAvLyBPbiBXaW5k
b3dzIHBsYXRmb3JtLCAnXCcgaXMgdGhlIHBhdGggc2VwYXJhdG9yLCBvdGhlcndpc2UgaXQgaXMg
Jy8nLgogRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZURpcmVjdG9yeU5hbWUoKSBjb25zdCB7CiAg
IGNvbnN0IGNoYXIqIGNvbnN0IGxhc3Rfc2VwID0gRmluZExhc3RQYXRoU2VwYXJhdG9yKCk7Ci0g
IHJldHVybiBsYXN0X3NlcCA/IEZpbGVQYXRoKFN0cmluZyhsYXN0X3NlcCArIDEpKSA6ICp0aGlz
OworICByZXR1cm4gbGFzdF9zZXAgPyBGaWxlUGF0aChsYXN0X3NlcCArIDEpIDogKnRoaXM7CiB9
CiAKIC8vIFJlbW92ZUZpbGVOYW1lIHJldHVybnMgdGhlIGRpcmVjdG9yeSBwYXRoIHdpdGggdGhl
IGZpbGVuYW1lIHJlbW92ZWQuCkBAIC0xNTgsOSArMTYzLDkgQEAgRmlsZVBhdGggRmlsZVBhdGg6
OlJlbW92ZURpcmVjdG9yeU5hbWUoKSBjb25zdCB7CiAvLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCAn
XCcgaXMgdGhlIHBhdGggc2VwYXJhdG9yLCBvdGhlcndpc2UgaXQgaXMgJy8nLgogRmlsZVBhdGgg
RmlsZVBhdGg6OlJlbW92ZUZpbGVOYW1lKCkgY29uc3QgewogICBjb25zdCBjaGFyKiBjb25zdCBs
YXN0X3NlcCA9IEZpbmRMYXN0UGF0aFNlcGFyYXRvcigpOwotICBTdHJpbmcgZGlyOworICBzdGQ6
OnN0cmluZyBkaXI7CiAgIGlmIChsYXN0X3NlcCkgewotICAgIGRpciA9IFN0cmluZyhjX3N0cigp
LCBsYXN0X3NlcCArIDEgLSBjX3N0cigpKTsKKyAgICBkaXIgPSBzdGQ6OnN0cmluZyhjX3N0cigp
LCBsYXN0X3NlcCArIDEgLSBjX3N0cigpKTsKICAgfSBlbHNlIHsKICAgICBkaXIgPSBrQ3VycmVu
dERpcmVjdG9yeVN0cmluZzsKICAgfQpAQCAtMTc3LDExICsxODIsMTIgQEAgRmlsZVBhdGggRmls
ZVBhdGg6Ok1ha2VGaWxlTmFtZShjb25zdCBGaWxlUGF0aCYgZGlyZWN0b3J5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGaWxlUGF0aCYgYmFzZV9uYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtYmVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHRlbnNpb24pIHsKLSAgU3RyaW5nIGZpbGU7Cisg
IHN0ZDo6c3RyaW5nIGZpbGU7CiAgIGlmIChudW1iZXIgPT0gMCkgewotICAgIGZpbGUgPSBTdHJp
bmc6OkZvcm1hdCgiJXMuJXMiLCBiYXNlX25hbWUuY19zdHIoKSwgZXh0ZW5zaW9uKTsKKyAgICBm
aWxlID0gYmFzZV9uYW1lLnN0cmluZygpICsgIi4iICsgZXh0ZW5zaW9uOwogICB9IGVsc2Ugewot
ICAgIGZpbGUgPSBTdHJpbmc6OkZvcm1hdCgiJXNfJWQuJXMiLCBiYXNlX25hbWUuY19zdHIoKSwg
bnVtYmVyLCBleHRlbnNpb24pOworICAgIGZpbGUgPSBiYXNlX25hbWUuc3RyaW5nKCkgKyAiXyIg
KyBTdHJlYW1hYmxlVG9TdHJpbmcobnVtYmVyKQorICAgICAgICArICIuIiArIGV4dGVuc2lvbjsK
ICAgfQogICByZXR1cm4gQ29uY2F0UGF0aHMoZGlyZWN0b3J5LCBGaWxlUGF0aChmaWxlKSk7CiB9
CkBAIC0xOTMsOCArMTk5LDcgQEAgRmlsZVBhdGggRmlsZVBhdGg6OkNvbmNhdFBhdGhzKGNvbnN0
IEZpbGVQYXRoJiBkaXJlY3RvcnksCiAgIGlmIChkaXJlY3RvcnkuSXNFbXB0eSgpKQogICAgIHJl
dHVybiByZWxhdGl2ZV9wYXRoOwogICBjb25zdCBGaWxlUGF0aCBkaXIoZGlyZWN0b3J5LlJlbW92
ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpKTsKLSAgcmV0dXJuIEZpbGVQYXRoKFN0cmluZzo6Rm9y
bWF0KCIlcyVjJXMiLCBkaXIuY19zdHIoKSwga1BhdGhTZXBhcmF0b3IsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZV9wYXRoLmNfc3RyKCkpKTsKKyAgcmV0dXJuIEZp
bGVQYXRoKGRpci5zdHJpbmcoKSArIGtQYXRoU2VwYXJhdG9yICsgcmVsYXRpdmVfcGF0aC5zdHJp
bmcoKSk7CiB9CiAKIC8vIFJldHVybnMgdHJ1ZSBpZiBwYXRobmFtZSBkZXNjcmliZXMgc29tZXRo
aW5nIGZpbmRhYmxlIGluIHRoZSBmaWxlLXN5c3RlbSwKQEAgLTI0NSw3ICsyNTAsNyBAQCBib29s
IEZpbGVQYXRoOjpEaXJlY3RvcnlFeGlzdHMoKSBjb25zdCB7CiAvLyByb290IGRpcmVjdG9yeSBw
ZXIgZGlzayBkcml2ZS4pCiBib29sIEZpbGVQYXRoOjpJc1Jvb3REaXJlY3RvcnkoKSBjb25zdCB7
CiAjaWYgR1RFU1RfT1NfV0lORE9XUwotICAvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogb24gV2lu
ZG93cyBhIG5ldHdvcmsgc2hhcmUgbGlrZQorICAvLyBGSVhNRTogb24gV2luZG93cyBhIG5ldHdv
cmsgc2hhcmUgbGlrZQogICAvLyBcXHNlcnZlclxzaGFyZSBjYW4gYmUgYSByb290IGRpcmVjdG9y
eSwgYWx0aG91Z2ggaXQgY2Fubm90IGJlIHRoZQogICAvLyBjdXJyZW50IGRpcmVjdG9yeS4gIEhh
bmRsZSB0aGlzIHByb3Blcmx5LgogICByZXR1cm4gcGF0aG5hbWVfLmxlbmd0aCgpID09IDMgJiYg
SXNBYnNvbHV0ZVBhdGgoKTsKQEAgLTMzOCwxNCArMzQzLDE0IEBAIGJvb2wgRmlsZVBhdGg6OkNy
ZWF0ZUZvbGRlcigpIGNvbnN0IHsKIC8vIE9uIFdpbmRvd3MgcGxhdGZvcm0sIHVzZXMgXCBhcyB0
aGUgc2VwYXJhdG9yLCBvdGhlciBwbGF0Zm9ybXMgdXNlIC8uCiBGaWxlUGF0aCBGaWxlUGF0aDo6
UmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkgY29uc3QgewogICByZXR1cm4gSXNEaXJlY3Rv
cnkoKQotICAgICAgPyBGaWxlUGF0aChTdHJpbmcocGF0aG5hbWVfLmNfc3RyKCksIHBhdGhuYW1l
Xy5sZW5ndGgoKSAtIDEpKQorICAgICAgPyBGaWxlUGF0aChwYXRobmFtZV8uc3Vic3RyKDAsIHBh
dGhuYW1lXy5sZW5ndGgoKSAtIDEpKQogICAgICAgOiAqdGhpczsKIH0KIAogLy8gUmVtb3ZlcyBh
bnkgcmVkdW5kYW50IHNlcGFyYXRvcnMgdGhhdCBtaWdodCBiZSBpbiB0aGUgcGF0aG5hbWUuCiAv
LyBGb3IgZXhhbXBsZSwgImJhci8vL2ZvbyIgYmVjb21lcyAiYmFyL2ZvbyIuIERvZXMgbm90IGVs
aW1pbmF0ZSBvdGhlcgogLy8gcmVkdW5kYW5jaWVzIHRoYXQgbWlnaHQgYmUgaW4gYSBwYXRobmFt
ZSBpbnZvbHZpbmcgIi4iIG9yICIuLiIuCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogaGFuZGxl
IFdpbmRvd3MgbmV0d29yayBzaGFyZXMgKGUuZy4gXFxzZXJ2ZXJcc2hhcmUpLgorLy8gRklYTUU6
IGhhbmRsZSBXaW5kb3dzIG5ldHdvcmsgc2hhcmVzIChlLmcuIFxcc2VydmVyXHNoYXJlKS4KIHZv
aWQgRmlsZVBhdGg6Ok5vcm1hbGl6ZSgpIHsKICAgaWYgKHBhdGhuYW1lXy5jX3N0cigpID09IE5V
TEwpIHsKICAgICBwYXRobmFtZV8gPSAiIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3NyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3NyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaAppbmRleCAwMTQxNWY3ZDk1OWRjYTA3MDlmYWMxNzY2
MTBkYjczODhmNjA0NTU5Li40NzkwMDQxNDliNDhjMjg1NjRlMjA1ZTAyMTBjNmM0MzEwNDE4YjVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtaW50ZXJuYWwt
aW5sLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LWludGVybmFsLWlu
bC5oCkBAIC0yNywyNiArMjcsMTUgQEAKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
IAotLy8gVXRpbGl0eSBmdW5jdGlvbnMgYW5kIGNsYXNzZXMgdXNlZCBieSB0aGUgR29vZ2xlIEMr
KyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFu
eW9uZyBXYW4pCi0vLworLy8gVXRpbGl0eSBmdW5jdGlvbnMgYW5kIGNsYXNzZXMgdXNlZCBieSB0
aGUgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4vLwogLy8gVGhpcyBmaWxlIGNvbnRhaW5z
IHB1cmVseSBHb29nbGUgVGVzdCdzIGludGVybmFsIGltcGxlbWVudGF0aW9uLiAgUGxlYXNlCiAv
LyBETyBOT1QgI0lOQ0xVREUgSVQgSU4gQSBVU0VSIFBST0dSQU0uCiAKICNpZm5kZWYgR1RFU1Rf
U1JDX0dURVNUX0lOVEVSTkFMX0lOTF9IXwogI2RlZmluZSBHVEVTVF9TUkNfR1RFU1RfSU5URVJO
QUxfSU5MX0hfCiAKLS8vIEdURVNUX0lNUExFTUVOVEFUSU9OXyBpcyBkZWZpbmVkIHRvIDEgaWZm
IHRoZSBjdXJyZW50IHRyYW5zbGF0aW9uIHVuaXQgaXMKLS8vIHBhcnQgb2YgR29vZ2xlIFRlc3Qn
cyBpbXBsZW1lbnRhdGlvbjsgb3RoZXJ3aXNlIGl0J3MgdW5kZWZpbmVkLgotI2lmICFHVEVTVF9J
TVBMRU1FTlRBVElPTl8KLS8vIEEgdXNlciBpcyB0cnlpbmcgdG8gaW5jbHVkZSB0aGlzIGZyb20g
aGlzIGNvZGUgLSBqdXN0IHNheSBuby4KLSNlcnJvciAiZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMg
cGFydCBvZiBHb29nbGUgVGVzdCdzIGludGVybmFsIGltcGxlbWVudGF0aW9uLiIKLSNlcnJvciAi
SXQgbXVzdCBub3QgYmUgaW5jbHVkZWQgZXhjZXB0IGJ5IEdvb2dsZSBUZXN0IGl0c2VsZi4iCi0j
ZW5kaWYgIC8vIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCiAjaWZuZGVmIF9XSU4zMl9XQ0UKLSNp
bmNsdWRlIDxlcnJuby5oPgorIyBpbmNsdWRlIDxlcnJuby5oPgogI2VuZGlmICAvLyAhX1dJTjMy
X1dDRQogI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPiAgLy8gRm9yIHN0
cnRvbGwvX3N0cnRvdWw2NC9tYWxsb2MvZnJlZS4KQEAgLTU2LDE0ICs0NSwyMiBAQAogI2luY2x1
ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlIDxndGVzdC9pbnRlcm5h
bC9ndGVzdC1wb3J0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgor
CisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworIyBpbmNsdWRlIDxhcnBhL2luZXQuaD4g
IC8vIE5PTElOVAorIyBpbmNsdWRlIDxuZXRkYi5oPiAgLy8gTk9MSU5UCisjZW5kaWYKIAogI2lm
IEdURVNUX09TX1dJTkRPV1MKLSNpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBGb3IgRFdPUkQuCisj
IGluY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAogI2VuZGlmICAvLyBHVEVTVF9PU19XSU5E
T1dTCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3Qtc3BpLmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJndGVz
dC9ndGVzdC1zcGkuaCIKKworR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDI1MSBc
CisvKiBjbGFzcyBBIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2VkIGJ5IGNs
aWVudHMgb2YgY2xhc3MgQiAqLykKIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC04OSwxMSAr
ODYsMTQgQEAgY29uc3QgY2hhciBrRmlsdGVyRmxhZ1tdID0gImZpbHRlciI7CiBjb25zdCBjaGFy
IGtMaXN0VGVzdHNGbGFnW10gPSAibGlzdF90ZXN0cyI7CiBjb25zdCBjaGFyIGtPdXRwdXRGbGFn
W10gPSAib3V0cHV0IjsKIGNvbnN0IGNoYXIga1ByaW50VGltZUZsYWdbXSA9ICJwcmludF90aW1l
IjsKK2NvbnN0IGNoYXIga1ByaW50VVRGOEZsYWdbXSA9ICJwcmludF91dGY4IjsKIGNvbnN0IGNo
YXIga1JhbmRvbVNlZWRGbGFnW10gPSAicmFuZG9tX3NlZWQiOwogY29uc3QgY2hhciBrUmVwZWF0
RmxhZ1tdID0gInJlcGVhdCI7CiBjb25zdCBjaGFyIGtTaHVmZmxlRmxhZ1tdID0gInNodWZmbGUi
OwogY29uc3QgY2hhciBrU3RhY2tUcmFjZURlcHRoRmxhZ1tdID0gInN0YWNrX3RyYWNlX2RlcHRo
IjsKK2NvbnN0IGNoYXIga1N0cmVhbVJlc3VsdFRvRmxhZ1tdID0gInN0cmVhbV9yZXN1bHRfdG8i
OwogY29uc3QgY2hhciBrVGhyb3dPbkZhaWx1cmVGbGFnW10gPSAidGhyb3dfb25fZmFpbHVyZSI7
Citjb25zdCBjaGFyIGtGbGFnZmlsZUZsYWdbXSA9ICJmbGFnZmlsZSI7CiAKIC8vIEEgdmFsaWQg
cmFuZG9tIHNlZWQgbXVzdCBiZSBpbiBbMSwga01heFJhbmRvbVNlZWRdLgogY29uc3QgaW50IGtN
YXhSYW5kb21TZWVkID0gOTk5OTk7CkBAIC0xMTEsNiArMTExLDEyIEBAIEdURVNUX0FQSV8gYm9v
bCBTaG91bGRVc2VDb2xvcihib29sIHN0ZG91dF9pc190dHkpOwogLy8gRm9ybWF0cyB0aGUgZ2l2
ZW4gdGltZSBpbiBtaWxsaXNlY29uZHMgYXMgc2Vjb25kcy4KIEdURVNUX0FQSV8gc3RkOjpzdHJp
bmcgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKFRpbWVJbk1pbGxpcyBtcyk7CiAKKy8vIENv
bnZlcnRzIHRoZSBnaXZlbiB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byBhIGRhdGUgc3RyaW5nIGlu
IHRoZSBJU08gODYwMQorLy8gZm9ybWF0LCB3aXRob3V0IHRoZSB0aW1lem9uZSBpbmZvcm1hdGlv
bi4gIE4uQi46IGR1ZSB0byB0aGUgdXNlIHRoZQorLy8gbm9uLXJlZW50cmFudCBsb2NhbHRpbWUo
KSBmdW5jdGlvbiwgdGhpcyBmdW5jdGlvbiBpcyBub3QgdGhyZWFkIHNhZmUuICBEbworLy8gbm90
IHVzZSBpdCBpbiBhbnkgY29kZSB0aGF0IGNhbiBiZSBjYWxsZWQgZnJvbSBtdWx0aXBsZSB0aHJl
YWRzLgorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNv
ODYwMShUaW1lSW5NaWxsaXMgbXMpOworCiAvLyBQYXJzZXMgYSBzdHJpbmcgZm9yIGFuIEludDMy
IGZsYWcsIGluIHRoZSBmb3JtIG9mICItLWZsYWc9dmFsdWUiLgogLy8KIC8vIE9uIHN1Y2Nlc3Ms
IHN0b3JlcyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcgaW4gKnZhbHVlLCBhbmQgcmV0dXJucwpAQCAt
MTYxLDEwICsxNjcsMTIgQEAgY2xhc3MgR1Rlc3RGbGFnU2F2ZXIgewogICAgIGxpc3RfdGVzdHNf
ID0gR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKTsKICAgICBvdXRwdXRfID0gR1RFU1RfRkxBRyhvdXRw
dXQpOwogICAgIHByaW50X3RpbWVfID0gR1RFU1RfRkxBRyhwcmludF90aW1lKTsKKyAgICBwcmlu
dF91dGY4XyA9IEdURVNUX0ZMQUcocHJpbnRfdXRmOCk7CiAgICAgcmFuZG9tX3NlZWRfID0gR1RF
U1RfRkxBRyhyYW5kb21fc2VlZCk7CiAgICAgcmVwZWF0XyA9IEdURVNUX0ZMQUcocmVwZWF0KTsK
ICAgICBzaHVmZmxlXyA9IEdURVNUX0ZMQUcoc2h1ZmZsZSk7CiAgICAgc3RhY2tfdHJhY2VfZGVw
dGhfID0gR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCk7CisgICAgc3RyZWFtX3Jlc3VsdF90
b18gPSBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pOwogICAgIHRocm93X29uX2ZhaWx1cmVf
ID0gR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKICAgfQogCkBAIC0xODEsNDEgKzE4OSw0
NCBAQCBjbGFzcyBHVGVzdEZsYWdTYXZlciB7CiAgICAgR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSA9
IGxpc3RfdGVzdHNfOwogICAgIEdURVNUX0ZMQUcob3V0cHV0KSA9IG91dHB1dF87CiAgICAgR1RF
U1RfRkxBRyhwcmludF90aW1lKSA9IHByaW50X3RpbWVfOworICAgIEdURVNUX0ZMQUcocHJpbnRf
dXRmOCkgPSBwcmludF91dGY4XzsKICAgICBHVEVTVF9GTEFHKHJhbmRvbV9zZWVkKSA9IHJhbmRv
bV9zZWVkXzsKICAgICBHVEVTVF9GTEFHKHJlcGVhdCkgPSByZXBlYXRfOwogICAgIEdURVNUX0ZM
QUcoc2h1ZmZsZSkgPSBzaHVmZmxlXzsKICAgICBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRo
KSA9IHN0YWNrX3RyYWNlX2RlcHRoXzsKKyAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8p
ID0gc3RyZWFtX3Jlc3VsdF90b187CiAgICAgR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9
IHRocm93X29uX2ZhaWx1cmVfOwogICB9CisKICBwcml2YXRlOgogICAvLyBGaWVsZHMgZm9yIHNh
dmluZyB0aGUgb3JpZ2luYWwgdmFsdWVzIG9mIGZsYWdzLgogICBib29sIGFsc29fcnVuX2Rpc2Fi
bGVkX3Rlc3RzXzsKICAgYm9vbCBicmVha19vbl9mYWlsdXJlXzsKICAgYm9vbCBjYXRjaF9leGNl
cHRpb25zXzsKLSAgU3RyaW5nIGNvbG9yXzsKLSAgU3RyaW5nIGRlYXRoX3Rlc3Rfc3R5bGVfOwor
ICBzdGQ6OnN0cmluZyBjb2xvcl87CisgIHN0ZDo6c3RyaW5nIGRlYXRoX3Rlc3Rfc3R5bGVfOwog
ICBib29sIGRlYXRoX3Rlc3RfdXNlX2ZvcmtfOwotICBTdHJpbmcgZmlsdGVyXzsKLSAgU3RyaW5n
IGludGVybmFsX3J1bl9kZWF0aF90ZXN0XzsKKyAgc3RkOjpzdHJpbmcgZmlsdGVyXzsKKyAgc3Rk
OjpzdHJpbmcgaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfOwogICBib29sIGxpc3RfdGVzdHNfOwot
ICBTdHJpbmcgb3V0cHV0XzsKKyAgc3RkOjpzdHJpbmcgb3V0cHV0XzsKICAgYm9vbCBwcmludF90
aW1lXzsKKyAgYm9vbCBwcmludF91dGY4XzsKICAgaW50ZXJuYWw6OkludDMyIHJhbmRvbV9zZWVk
XzsKICAgaW50ZXJuYWw6OkludDMyIHJlcGVhdF87CiAgIGJvb2wgc2h1ZmZsZV87CiAgIGludGVy
bmFsOjpJbnQzMiBzdGFja190cmFjZV9kZXB0aF87CisgIHN0ZDo6c3RyaW5nIHN0cmVhbV9yZXN1
bHRfdG9fOwogICBib29sIHRocm93X29uX2ZhaWx1cmVfOwogfSBHVEVTVF9BVFRSSUJVVEVfVU5V
U0VEXzsKIAogLy8gQ29udmVydHMgYSBVbmljb2RlIGNvZGUgcG9pbnQgdG8gYSBuYXJyb3cgc3Ry
aW5nIGluIFVURi04IGVuY29kaW5nLgogLy8gY29kZV9wb2ludCBwYXJhbWV0ZXIgaXMgb2YgdHlw
ZSBVSW50MzIgYmVjYXVzZSB3Y2hhcl90IG1heSBub3QgYmUKIC8vIHdpZGUgZW5vdWdoIHRvIGNv
bnRhaW4gYSBjb2RlIHBvaW50LgotLy8gVGhlIG91dHB1dCBidWZmZXIgc3RyIG11c3QgY29udGFp
bnQgYXQgbGVhc3QgMzIgY2hhcmFjdGVycy4KLS8vIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBh
ZGRyZXNzIG9mIHRoZSBvdXRwdXQgYnVmZmVyLgogLy8gSWYgdGhlIGNvZGVfcG9pbnQgaXMgbm90
IGEgdmFsaWQgVW5pY29kZSBjb2RlIHBvaW50Ci0vLyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNvZGUg
cmFuZ2UgVSswIHRvIFUrMTBGRkZGKSBpdCB3aWxsIGJlIG91dHB1dAotLy8gYXMgJyhJbnZhbGlk
IFVuaWNvZGUgMHhYWFhYWFhYWCknLgotR1RFU1RfQVBJXyBjaGFyKiBDb2RlUG9pbnRUb1V0Zjgo
VUludDMyIGNvZGVfcG9pbnQsIGNoYXIqIHN0cik7CisvLyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNv
ZGUgcmFuZ2UgVSswIHRvIFUrMTBGRkZGKSBpdCB3aWxsIGJlIGNvbnZlcnRlZAorLy8gdG8gIihJ
bnZhbGlkIFVuaWNvZGUgMHhYWFhYWFhYWCkiLgorR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBDb2Rl
UG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQpOwogCiAvLyBDb252ZXJ0cyBhIHdpZGUgc3Ry
aW5nIHRvIGEgbmFycm93IHN0cmluZyBpbiBVVEYtOCBlbmNvZGluZy4KIC8vIFRoZSB3aWRlIHN0
cmluZyBpcyBhc3N1bWVkIHRvIGhhdmUgdGhlIGZvbGxvd2luZyBlbmNvZGluZzoKQEAgLTIzMCw3
ICsyNDEsNyBAQCBHVEVTVF9BUElfIGNoYXIqIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9w
b2ludCwgY2hhciogc3RyKTsKIC8vIGFzICcoSW52YWxpZCBVbmljb2RlIDB4WFhYWFhYWFgpJy4g
SWYgdGhlIHN0cmluZyBpcyBpbiBVVEYxNiBlbmNvZGluZwogLy8gYW5kIGNvbnRhaW5zIGludmFs
aWQgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycywgdmFsdWVzIGluIHRob3NlIHBhaXJzCiAvLyB3aWxs
IGJlIGVuY29kZWQgYXMgaW5kaXZpZHVhbCBVbmljb2RlIGNoYXJhY3RlcnMgZnJvbSBCYXNpYyBO
b3JtYWwgUGxhbmUuCi1HVEVTVF9BUElfIFN0cmluZyBXaWRlU3RyaW5nVG9VdGY4KGNvbnN0IHdj
aGFyX3QqIHN0ciwgaW50IG51bV9jaGFycyk7CitHVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFdpZGVT
dHJpbmdUb1V0ZjgoY29uc3Qgd2NoYXJfdCogc3RyLCBpbnQgbnVtX2NoYXJzKTsKIAogLy8gUmVh
ZHMgdGhlIEdURVNUX1NIQVJEX1NUQVRVU19GSUxFIGVudmlyb25tZW50IHZhcmlhYmxlLCBhbmQg
Y3JlYXRlcyB0aGUgZmlsZQogLy8gaWYgdGhlIHZhcmlhYmxlIGlzIHByZXNlbnQuIElmIGEgZmls
ZSBhbHJlYWR5IGV4aXN0cyBhdCB0aGlzIGxvY2F0aW9uLCB0aGlzCkBAIC0yNjYsNyArMjc3LDE0
IEBAIEdURVNUX0FQSV8gYm9vbCBTaG91bGRSdW5UZXN0T25TaGFyZCgKIC8vIHRoZSBnaXZlbiBw
cmVkaWNhdGUuCiB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyLCB0eXBlbmFtZSBQcmVkaWNhdGU+
CiBpbmxpbmUgaW50IENvdW50SWYoY29uc3QgQ29udGFpbmVyJiBjLCBQcmVkaWNhdGUgcHJlZGlj
YXRlKSB7Ci0gIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6Y291bnRfaWYoYy5iZWdpbigp
LCBjLmVuZCgpLCBwcmVkaWNhdGUpKTsKKyAgLy8gSW1wbGVtZW50ZWQgYXMgYW4gZXhwbGljaXQg
bG9vcCBzaW5jZSBzdGQ6OmNvdW50X2lmKCkgaW4gbGliQ3N0ZCBvbgorICAvLyBTb2xhcmlzIGhh
cyBhIG5vbi1zdGFuZGFyZCBzaWduYXR1cmUuCisgIGludCBjb3VudCA9IDA7CisgIGZvciAodHlw
ZW5hbWUgQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBpdCA9IGMuYmVnaW4oKTsgaXQgIT0gYy5l
bmQoKTsgKytpdCkgeworICAgIGlmIChwcmVkaWNhdGUoKml0KSkKKyAgICAgICsrY291bnQ7Cisg
IH0KKyAgcmV0dXJuIGNvdW50OwogfQogCiAvLyBBcHBsaWVzIGEgZnVuY3Rpb24vZnVuY3RvciB0
byBlYWNoIGVsZW1lbnQgaW4gdGhlIGNvbnRhaW5lci4KQEAgLTMyNyw5NSArMzQ1LDE1IEBAIGNs
YXNzIFRlc3RQcm9wZXJ0eUtleUlzIHsKICAgLy8gQ29uc3RydWN0b3IuCiAgIC8vCiAgIC8vIFRl
c3RQcm9wZXJ0eUtleUlzIGhhcyBOTyBkZWZhdWx0IGNvbnN0cnVjdG9yLgotICBleHBsaWNpdCBU
ZXN0UHJvcGVydHlLZXlJcyhjb25zdCBjaGFyKiBrZXkpCi0gICAgICA6IGtleV8oa2V5KSB7fQor
ICBleHBsaWNpdCBUZXN0UHJvcGVydHlLZXlJcyhjb25zdCBzdGQ6OnN0cmluZyYga2V5KSA6IGtl
eV8oa2V5KSB7fQogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgbmFtZSBvZiB0ZXN0
IHByb3BlcnR5IG1hdGNoZXMgb24ga2V5Xy4KICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFRlc3RQ
cm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgY29uc3QgewotICAgIHJldHVybiBTdHJpbmcodGVzdF9w
cm9wZXJ0eS5rZXkoKSkuQ29tcGFyZShrZXlfKSA9PSAwOwotICB9Ci0KLSBwcml2YXRlOgotICBT
dHJpbmcga2V5XzsKLX07Ci0KLWNsYXNzIFRlc3RJbmZvSW1wbCB7Ci0gcHVibGljOgotICBUZXN0
SW5mb0ltcGwoVGVzdEluZm8qIHBhcmVudCwgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0g
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfY29t
bWVudCwKLSAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbW1lbnQsIFR5cGVJZCBmaXh0dXJl
X2NsYXNzX2lkLAotICAgICAgICAgICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFj
dG9yeSk7Ci0gIH5UZXN0SW5mb0ltcGwoKTsKLQotICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0
ZXN0IHNob3VsZCBydW4uCi0gIGJvb2wgc2hvdWxkX3J1bigpIGNvbnN0IHsgcmV0dXJuIHNob3Vs
ZF9ydW5fOyB9Ci0KLSAgLy8gU2V0cyB0aGUgc2hvdWxkX3J1biBtZW1iZXIuCi0gIHZvaWQgc2V0
X3Nob3VsZF9ydW4oYm9vbCBzaG91bGQpIHsgc2hvdWxkX3J1bl8gPSBzaG91bGQ7IH0KLQotICAv
LyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IGlzIGRpc2FibGVkLiBEaXNhYmxlZCB0ZXN0cyBh
cmUgbm90IHJ1bi4KLSAgYm9vbCBpc19kaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGlzX2Rpc2Fi
bGVkXzsgfQotCi0gIC8vIFNldHMgdGhlIGlzX2Rpc2FibGVkIG1lbWJlci4KLSAgdm9pZCBzZXRf
aXNfZGlzYWJsZWQoYm9vbCBpcykgeyBpc19kaXNhYmxlZF8gPSBpczsgfQotCi0gIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGlzIHRlc3QgbWF0Y2hlcyB0aGUgZmlsdGVyIHNwZWNpZmllZCBieSB0aGUg
dXNlci4KLSAgYm9vbCBtYXRjaGVzX2ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1hdGNoZXNfZmls
dGVyXzsgfQotCi0gIC8vIFNldHMgdGhlIG1hdGNoZXNfZmlsdGVyIG1lbWJlci4KLSAgdm9pZCBz
ZXRfbWF0Y2hlc19maWx0ZXIoYm9vbCBtYXRjaGVzKSB7IG1hdGNoZXNfZmlsdGVyXyA9IG1hdGNo
ZXM7IH0KLQotICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNhc2UgbmFtZS4KLSAgY29uc3QgY2hhciog
dGVzdF9jYXNlX25hbWUoKSBjb25zdCB7IHJldHVybiB0ZXN0X2Nhc2VfbmFtZV8uY19zdHIoKTsg
fQotCi0gIC8vIFJldHVybnMgdGhlIHRlc3QgbmFtZS4KLSAgY29uc3QgY2hhciogbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG5hbWVfLmNfc3RyKCk7IH0KLQotICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNh
c2UgY29tbWVudC4KLSAgY29uc3QgY2hhciogdGVzdF9jYXNlX2NvbW1lbnQoKSBjb25zdCB7IHJl
dHVybiB0ZXN0X2Nhc2VfY29tbWVudF8uY19zdHIoKTsgfQotCi0gIC8vIFJldHVybnMgdGhlIHRl
c3QgY29tbWVudC4KLSAgY29uc3QgY2hhciogY29tbWVudCgpIGNvbnN0IHsgcmV0dXJuIGNvbW1l
bnRfLmNfc3RyKCk7IH0KLQotICAvLyBSZXR1cm5zIHRoZSBJRCBvZiB0aGUgdGVzdCBmaXh0dXJl
IGNsYXNzLgotICBUeXBlSWQgZml4dHVyZV9jbGFzc19pZCgpIGNvbnN0IHsgcmV0dXJuIGZpeHR1
cmVfY2xhc3NfaWRfOyB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgdGVzdCByZXN1bHQuCi0gIFRlc3RS
ZXN1bHQqIHJlc3VsdCgpIHsgcmV0dXJuICZyZXN1bHRfOyB9Ci0gIGNvbnN0IFRlc3RSZXN1bHQq
IHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuICZyZXN1bHRfOyB9Ci0KLSAgLy8gQ3JlYXRlcyB0aGUg
dGVzdCBvYmplY3QsIHJ1bnMgaXQsIHJlY29yZHMgaXRzIHJlc3VsdCwgYW5kIHRoZW4KLSAgLy8g
ZGVsZXRlcyBpdC4KLSAgdm9pZCBSdW4oKTsKLQotICAvLyBDbGVhcnMgdGhlIHRlc3QgcmVzdWx0
LgotICB2b2lkIENsZWFyUmVzdWx0KCkgeyByZXN1bHRfLkNsZWFyKCk7IH0KLQotICAvLyBDbGVh
cnMgdGhlIHRlc3QgcmVzdWx0IGluIHRoZSBnaXZlbiBUZXN0SW5mbyBvYmplY3QuCi0gIHN0YXRp
YyB2b2lkIENsZWFyVGVzdFJlc3VsdChUZXN0SW5mbyAqIHRlc3RfaW5mbykgewotICAgIHRlc3Rf
aW5mby0+aW1wbCgpLT5DbGVhclJlc3VsdCgpOworICAgIHJldHVybiB0ZXN0X3Byb3BlcnR5Lmtl
eSgpID09IGtleV87CiAgIH0KIAogIHByaXZhdGU6Ci0gIC8vIFRoZXNlIGZpZWxkcyBhcmUgaW1t
dXRhYmxlIHByb3BlcnRpZXMgb2YgdGhlIHRlc3QuCi0gIFRlc3RJbmZvKiBjb25zdCBwYXJlbnRf
OyAgICAgICAgICAvLyBUaGUgb3duZXIgb2YgdGhpcyBvYmplY3QKLSAgY29uc3QgU3RyaW5nIHRl
c3RfY2FzZV9uYW1lXzsgICAgIC8vIFRlc3QgY2FzZSBuYW1lCi0gIGNvbnN0IFN0cmluZyBuYW1l
XzsgICAgICAgICAgICAgICAvLyBUZXN0IG5hbWUKLSAgY29uc3QgU3RyaW5nIHRlc3RfY2FzZV9j
b21tZW50XzsgIC8vIFRlc3QgY2FzZSBjb21tZW50Ci0gIGNvbnN0IFN0cmluZyBjb21tZW50Xzsg
ICAgICAgICAgICAvLyBUZXN0IGNvbW1lbnQKLSAgY29uc3QgVHlwZUlkIGZpeHR1cmVfY2xhc3Nf
aWRfOyAgIC8vIElEIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MKLSAgYm9vbCBzaG91bGRfcnVu
XzsgICAgICAgICAgICAgICAgIC8vIFRydWUgaWZmIHRoaXMgdGVzdCBzaG91bGQgcnVuCi0gIGJv
b2wgaXNfZGlzYWJsZWRfOyAgICAgICAgICAgICAgICAvLyBUcnVlIGlmZiB0aGlzIHRlc3QgaXMg
ZGlzYWJsZWQKLSAgYm9vbCBtYXRjaGVzX2ZpbHRlcl87ICAgICAgICAgICAgIC8vIFRydWUgaWYg
dGhpcyB0ZXN0IG1hdGNoZXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyB1c2VyLXNwZWNpZmllZCBmaWx0ZXIuCi0gIGludGVybmFsOjpUZXN0RmFjdG9yeUJhc2Uq
IGNvbnN0IGZhY3RvcnlfOyAgLy8gVGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHRlc3Qgb2JqZWN0Ci0K
LSAgLy8gVGhpcyBmaWVsZCBpcyBtdXRhYmxlIGFuZCBuZWVkcyB0byBiZSByZXNldCBiZWZvcmUg
cnVubmluZyB0aGUKLSAgLy8gdGVzdCBmb3IgdGhlIHNlY29uZCB0aW1lLgotICBUZXN0UmVzdWx0
IHJlc3VsdF87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0SW5mb0lt
cGwpOworICBzdGQ6OnN0cmluZyBrZXlfOwogfTsKIAogLy8gQ2xhc3MgVW5pdFRlc3RPcHRpb25z
LgpAQCAtNDMzLDEyICszNzEsMTIgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdE9wdGlvbnMg
ewogICAvLyBGdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgdGhlIGd0ZXN0X291dHB1dCBmbGFnLgog
CiAgIC8vIFJldHVybnMgdGhlIG91dHB1dCBmb3JtYXQsIG9yICIiIGZvciBub3JtYWwgcHJpbnRl
ZCBvdXRwdXQuCi0gIHN0YXRpYyBTdHJpbmcgR2V0T3V0cHV0Rm9ybWF0KCk7CisgIHN0YXRpYyBz
dGQ6OnN0cmluZyBHZXRPdXRwdXRGb3JtYXQoKTsKIAogICAvLyBSZXR1cm5zIHRoZSBhYnNvbHV0
ZSBwYXRoIG9mIHRoZSByZXF1ZXN0ZWQgb3V0cHV0IGZpbGUsIG9yIHRoZQogICAvLyBkZWZhdWx0
ICh0ZXN0X2RldGFpbC54bWwgaW4gdGhlIG9yaWdpbmFsIHdvcmtpbmcgZGlyZWN0b3J5KSBpZgog
ICAvLyBub25lIHdhcyBleHBsaWNpdGx5IHNwZWNpZmllZC4KLSAgc3RhdGljIFN0cmluZyBHZXRB
YnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKTsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldEFic29s
dXRlUGF0aFRvT3V0cHV0RmlsZSgpOwogCiAgIC8vIEZ1bmN0aW9ucyBmb3IgcHJvY2Vzc2luZyB0
aGUgZ3Rlc3RfZmlsdGVyIGZsYWcuCiAKQEAgLTQ1MSw4ICszODksOCBAQCBjbGFzcyBHVEVTVF9B
UElfIFVuaXRUZXN0T3B0aW9ucyB7CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdXNlci1z
cGVjaWZpZWQgZmlsdGVyIG1hdGNoZXMgdGhlIHRlc3QgY2FzZQogICAvLyBuYW1lIGFuZCB0aGUg
dGVzdCBuYW1lLgotICBzdGF0aWMgYm9vbCBGaWx0ZXJNYXRjaGVzVGVzdChjb25zdCBTdHJpbmcg
JnRlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBT
dHJpbmcgJnRlc3RfbmFtZSk7CisgIHN0YXRpYyBib29sIEZpbHRlck1hdGNoZXNUZXN0KGNvbnN0
IHN0ZDo6c3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnRlc3RfbmFtZSk7CiAKICNpZiBHVEVTVF9PU19XSU5E
T1dTCiAgIC8vIEZ1bmN0aW9uIGZvciBzdXBwb3J0aW5nIHRoZSBndGVzdF9jYXRjaF9leGNlcHRp
b24gZmxhZy4KQEAgLTQ2NSw3ICs0MDMsNyBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0T3B0
aW9ucyB7CiAKICAgLy8gUmV0dXJucyB0cnVlIGlmICJuYW1lIiBtYXRjaGVzIHRoZSAnOicgc2Vw
YXJhdGVkIGxpc3Qgb2YgZ2xvYi1zdHlsZQogICAvLyBmaWx0ZXJzIGluICJmaWx0ZXIiLgotICBz
dGF0aWMgYm9vbCBNYXRjaGVzRmlsdGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgY2hhciog
ZmlsdGVyKTsKKyAgc3RhdGljIGJvb2wgTWF0Y2hlc0ZpbHRlcihjb25zdCBzdGQ6OnN0cmluZyYg
bmFtZSwgY29uc3QgY2hhciogZmlsdGVyKTsKIH07CiAKIC8vIFJldHVybnMgdGhlIGN1cnJlbnQg
YXBwbGljYXRpb24ncyBuYW1lLCByZW1vdmluZyBkaXJlY3RvcnkgcGF0aCBpZiB0aGF0CkBAIC00
NzgsMTkgKzQxNiwyMyBAQCBjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UgewogICBP
c1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UoKSB7fQogICB2aXJ0dWFsIH5Pc1N0YWNrVHJhY2VH
ZXR0ZXJJbnRlcmZhY2UoKSB7fQogCi0gIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sg
dHJhY2UgYXMgYSBTdHJpbmcuICBQYXJhbWV0ZXJzOgorICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50
IE9TIHN0YWNrIHRyYWNlIGFzIGFuIHN0ZDo6c3RyaW5nLiAgUGFyYW1ldGVyczoKICAgLy8KICAg
Ly8gICBtYXhfZGVwdGggIC0gdGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBi
ZSBpbmNsdWRlZAogICAvLyAgICAgICAgICAgICAgICBpbiB0aGUgdHJhY2UuCiAgIC8vICAgc2tp
cF9jb3VudCAtIHRoZSBudW1iZXIgb2YgdG9wIGZyYW1lcyB0byBiZSBza2lwcGVkOyBkb2Vzbid0
IGNvdW50CiAgIC8vICAgICAgICAgICAgICAgIGFnYWluc3QgbWF4X2RlcHRoLgotICB2aXJ0dWFs
IFN0cmluZyBDdXJyZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9jb3VudCkg
PSAwOworICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIEN1cnJlbnRTdGFja1RyYWNlKGludCBtYXhfZGVw
dGgsIGludCBza2lwX2NvdW50KSA9IDA7CiAKICAgLy8gVXBvbkxlYXZpbmdHVGVzdCgpIHNob3Vs
ZCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIEdvb2dsZSBUZXN0IGNhbGxzCiAgIC8vIHVz
ZXIgY29kZS4gSXQgc2F2ZXMgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBzdGFj
ayB0aGF0CiAgIC8vIEN1cnJlbnRTdGFja1RyYWNlKCkgd2lsbCB1c2UgdG8gZmluZCBhbmQgaGlk
ZSBHb29nbGUgVGVzdCBzdGFjayBmcmFtZXMuCiAgIHZpcnR1YWwgdm9pZCBVcG9uTGVhdmluZ0dU
ZXN0KCkgPSAwOwogCisgIC8vIFRoaXMgc3RyaW5nIGlzIGluc2VydGVkIGluIHBsYWNlIG9mIHN0
YWNrIGZyYW1lcyB0aGF0IGFyZSBwYXJ0IG9mCisgIC8vIEdvb2dsZSBUZXN0J3MgaW1wbGVtZW50
YXRpb24uCisgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBrRWxpZGVkRnJhbWVzTWFya2VyOwor
CiAgcHJpdmF0ZToKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhPc1N0YWNrVHJh
Y2VHZXR0ZXJJbnRlcmZhY2UpOwogfTsKQEAgLTQ5OCwyMiArNDQwLDIxIEBAIGNsYXNzIE9zU3Rh
Y2tUcmFjZUdldHRlckludGVyZmFjZSB7CiAvLyBBIHdvcmtpbmcgaW1wbGVtZW50YXRpb24gb2Yg
dGhlIE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSBpbnRlcmZhY2UuCiBjbGFzcyBPc1N0YWNr
VHJhY2VHZXR0ZXIgOiBwdWJsaWMgT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlIHsKICBwdWJs
aWM6Ci0gIE9zU3RhY2tUcmFjZUdldHRlcigpIDogY2FsbGVyX2ZyYW1lXyhOVUxMKSB7fQotICB2
aXJ0dWFsIFN0cmluZyBDdXJyZW50U3RhY2tUcmFjZShpbnQgbWF4X2RlcHRoLCBpbnQgc2tpcF9j
b3VudCk7Ci0gIHZpcnR1YWwgdm9pZCBVcG9uTGVhdmluZ0dUZXN0KCk7CisgIE9zU3RhY2tUcmFj
ZUdldHRlcigpIHt9CiAKLSAgLy8gVGhpcyBzdHJpbmcgaXMgaW5zZXJ0ZWQgaW4gcGxhY2Ugb2Yg
c3RhY2sgZnJhbWVzIHRoYXQgYXJlIHBhcnQgb2YKLSAgLy8gR29vZ2xlIFRlc3QncyBpbXBsZW1l
bnRhdGlvbi4KLSAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGtFbGlkZWRGcmFtZXNNYXJrZXI7
CisgIHZpcnR1YWwgc3RkOjpzdHJpbmcgQ3VycmVudFN0YWNrVHJhY2UoaW50IG1heF9kZXB0aCwg
aW50IHNraXBfY291bnQpOworICB2aXJ0dWFsIHZvaWQgVXBvbkxlYXZpbmdHVGVzdCgpOwogCiAg
cHJpdmF0ZToKLSAgTXV0ZXggbXV0ZXhfOyAgLy8gcHJvdGVjdHMgYWxsIGludGVybmFsIHN0YXRl
CisjaWYgR1RFU1RfSEFTX0FCU0wKKyAgTXV0ZXggbXV0ZXhfOyAgLy8gUHJvdGVjdHMgYWxsIGlu
dGVybmFsIHN0YXRlLgogCiAgIC8vIFdlIHNhdmUgdGhlIHN0YWNrIGZyYW1lIGJlbG93IHRoZSBm
cmFtZSB0aGF0IGNhbGxzIHVzZXIgY29kZS4KICAgLy8gV2UgZG8gdGhpcyBiZWNhdXNlIHRoZSBh
ZGRyZXNzIG9mIHRoZSBmcmFtZSBpbW1lZGlhdGVseSBiZWxvdwogICAvLyB0aGUgdXNlciBjb2Rl
IGNoYW5nZXMgYmV0d2VlbiB0aGUgY2FsbCB0byBVcG9uTGVhdmluZ0dUZXN0KCkKLSAgLy8gYW5k
IGFueSBjYWxscyB0byBDdXJyZW50U3RhY2tUcmFjZSgpIGZyb20gd2l0aGluIHRoZSB1c2VyIGNv
ZGUuCi0gIHZvaWQqIGNhbGxlcl9mcmFtZV87CisgIC8vIGFuZCBhbnkgY2FsbHMgdG8gdGhlIHN0
YWNrIHRyYWNlIGNvZGUgZnJvbSB3aXRoaW4gdGhlIHVzZXIgY29kZS4KKyAgdm9pZCogY2FsbGVy
X2ZyYW1lXyA9IG51bGxwdHI7CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCiAKICAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhPc1N0YWNrVHJhY2VHZXR0ZXIpOwogfTsKQEAgLTUy
Miw3ICs0NjMsNyBAQCBjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXIgOiBwdWJsaWMgT3NTdGFja1Ry
YWNlR2V0dGVySW50ZXJmYWNlIHsKIHN0cnVjdCBUcmFjZUluZm8gewogICBjb25zdCBjaGFyKiBm
aWxlOwogICBpbnQgbGluZTsKLSAgU3RyaW5nIG1lc3NhZ2U7CisgIHN0ZDo6c3RyaW5nIG1lc3Nh
Z2U7CiB9OwogCiAvLyBUaGlzIGlzIHRoZSBkZWZhdWx0IGdsb2JhbCB0ZXN0IHBhcnQgcmVzdWx0
IHJlcG9ydGVyIHVzZWQgaW4gVW5pdFRlc3RJbXBsLgpAQCAtNjA2LDE1ICs1NDcsMjUgQEAgY2xh
c3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZmFp
bGVkIHRlc3RzLgogICBpbnQgZmFpbGVkX3Rlc3RfY291bnQoKSBjb25zdDsKIAorICAvLyBHZXRz
IHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRo
ZSBYTUwgcmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkgY29u
c3Q7CisKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzLgogICBpbnQgZGlz
YWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0OwogCisgIC8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0
cyB0byBiZSBwcmludGVkIGluIHRoZSBYTUwgcmVwb3J0LgorICBpbnQgcmVwb3J0YWJsZV90ZXN0
X2NvdW50KCkgY29uc3Q7CisKICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0cy4KICAg
aW50IHRvdGFsX3Rlc3RfY291bnQoKSBjb25zdDsKIAogICAvLyBHZXRzIHRoZSBudW1iZXIgb2Yg
dGVzdHMgdGhhdCBzaG91bGQgcnVuLgogICBpbnQgdGVzdF90b19ydW5fY291bnQoKSBjb25zdDsK
IAorICAvLyBHZXRzIHRoZSB0aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0gc3RhcnQsIGluIG1zIGZy
b20gdGhlIHN0YXJ0IG9mIHRoZQorICAvLyBVTklYIGVwb2NoLgorICBUaW1lSW5NaWxsaXMgc3Rh
cnRfdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gc3RhcnRfdGltZXN0YW1wXzsgfQorCiAgIC8v
IEdldHMgdGhlIGVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgogICBUaW1lSW5NaWxsaXMg
ZWxhcHNlZF90aW1lKCkgY29uc3QgeyByZXR1cm4gZWxhcHNlZF90aW1lXzsgfQogCkBAIC02NjMs
NyArNjE0LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBnZXR0ZXIs
IGFuZCByZXR1cm5zIGl0LgogICBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UqIG9zX3N0YWNr
X3RyYWNlX2dldHRlcigpOwogCi0gIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJh
Y2UgYXMgYSBTdHJpbmcuCisgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2Ug
YXMgYW4gc3RkOjpzdHJpbmcuCiAgIC8vCiAgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFj
ayBmcmFtZXMgdG8gYmUgaW5jbHVkZWQgaXMgc3BlY2lmaWVkIGJ5CiAgIC8vIHRoZSBndGVzdF9z
dGFja190cmFjZV9kZXB0aCBmbGFnLiAgVGhlIHNraXBfY291bnQgcGFyYW1ldGVyCkBAIC02NzMs
NyArNjI0LDcgQEAgY2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAvLyBGb3IgZXhh
bXBsZSwgaWYgRm9vKCkgY2FsbHMgQmFyKCksIHdoaWNoIGluIHR1cm4gY2FsbHMKICAgLy8gQ3Vy
cmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgxKSwgRm9vKCkgd2lsbCBiZSBpbmNsdWRlZCBpbiB0
aGUKICAgLy8gdHJhY2UgYnV0IEJhcigpIGFuZCBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9w
KCkgd29uJ3QuCi0gIFN0cmluZyBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKGludCBza2lw
X2NvdW50KTsKKyAgc3RkOjpzdHJpbmcgQ3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcChpbnQg
c2tpcF9jb3VudCkgR1RFU1RfTk9fSU5MSU5FXzsKIAogICAvLyBGaW5kcyBhbmQgcmV0dXJucyBh
IFRlc3RDYXNlIHdpdGggdGhlIGdpdmVuIG5hbWUuICBJZiBvbmUgZG9lc24ndAogICAvLyBleGlz
dCwgY3JlYXRlcyBvbmUgYW5kIHJldHVybnMgaXQuCkBAIC02ODEsMTAgKzYzMiwxMiBAQCBjbGFz
cyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vIEFyZ3VtZW50czoKICAgLy8KICAgLy8g
ICB0ZXN0X2Nhc2VfbmFtZTogbmFtZSBvZiB0aGUgdGVzdCBjYXNlCisgIC8vICAgdHlwZV9wYXJh
bTogICAgIHRoZSBuYW1lIG9mIHRoZSB0ZXN0J3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYK
KyAgLy8gICAgICAgICAgICAgICAgICAgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhIHR5cGUtcGFy
YW1ldGVyaXplZCB0ZXN0LgogICAvLyAgIHNldF91cF90YzogICAgICBwb2ludGVyIHRvIHRoZSBm
dW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIHRlc3QgY2FzZQogICAvLyAgIHRlYXJfZG93bl90Yzog
ICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQog
ICBUZXN0Q2FzZSogR2V0VGVzdENhc2UoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb21tZW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogdHlwZV9wYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAg
IFRlc3Q6OlNldFVwVGVzdENhc2VGdW5jIHNldF91cF90YywKICAgICAgICAgICAgICAgICAgICAg
ICAgIFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90Yyk7CiAKQEAgLTY5Nyw3
ICs2NTAsNyBAQCBjbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7CiAgIC8vICAgdGVzdF9p
bmZvOiAgICB0aGUgVGVzdEluZm8gb2JqZWN0CiAgIHZvaWQgQWRkVGVzdEluZm8oVGVzdDo6U2V0
VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAgICAgICAgICAgICAgICAgIFRlc3Q6OlRlYXJE
b3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YywKLSAgICAgICAgICAgICAgICAgICBUZXN0SW5m
byAqIHRlc3RfaW5mbykgeworICAgICAgICAgICAgICAgICAgIFRlc3RJbmZvKiB0ZXN0X2luZm8p
IHsKICAgICAvLyBJbiBvcmRlciB0byBzdXBwb3J0IHRocmVhZC1zYWZlIGRlYXRoIHRlc3RzLCB3
ZSBuZWVkIHRvCiAgICAgLy8gcmVtZW1iZXIgdGhlIG9yaWdpbmFsIHdvcmtpbmcgZGlyZWN0b3J5
IHdoZW4gdGhlIHRlc3QgcHJvZ3JhbQogICAgIC8vIHdhcyBmaXJzdCBpbnZva2VkLiAgV2UgY2Fu
bm90IGRvIHRoaXMgaW4gUlVOX0FMTF9URVNUUygpLCBhcwpAQCAtNzEyLDE4ICs2NjUsMTYgQEAg
Y2xhc3MgR1RFU1RfQVBJXyBVbml0VGVzdEltcGwgewogICAgIH0KIAogICAgIEdldFRlc3RDYXNl
KHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSwKLSAgICAgICAgICAgICAgICB0ZXN0X2luZm8t
PnRlc3RfY2FzZV9jb21tZW50KCksCisgICAgICAgICAgICAgICAgdGVzdF9pbmZvLT50eXBlX3Bh
cmFtKCksCiAgICAgICAgICAgICAgICAgc2V0X3VwX3RjLAogICAgICAgICAgICAgICAgIHRlYXJf
ZG93bl90YyktPkFkZFRlc3RJbmZvKHRlc3RfaW5mbyk7CiAgIH0KIAotI2lmIEdURVNUX0hBU19Q
QVJBTV9URVNUCiAgIC8vIFJldHVybnMgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgb2Jq
ZWN0IHVzZWQgdG8ga2VlcCB0cmFjayBvZgogICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3Rz
IGFuZCBpbnN0YW50aWF0ZSBhbmQgcmVnaXN0ZXIgdGhlbS4KICAgaW50ZXJuYWw6OlBhcmFtZXRl
cml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5JiBwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKSB7CiAg
ICAgcmV0dXJuIHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeV87CiAgIH0KLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1BBUkFNX1RFU1QKIAogICAvLyBTZXRzIHRoZSBUZXN0Q2FzZSBvYmplY3QgZm9y
IHRoZSB0ZXN0IHRoYXQncyBjdXJyZW50bHkgcnVubmluZy4KICAgdm9pZCBzZXRfY3VycmVudF90
ZXN0X2Nhc2UoVGVzdENhc2UqIGFfY3VycmVudF90ZXN0X2Nhc2UpIHsKQEAgLTczOCwyNyArNjg5
LDM1IEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgfQogCiAgIC8vIFJlZ2lz
dGVycyBhbGwgcGFyYW1ldGVyaXplZCB0ZXN0cyBkZWZpbmVkIHVzaW5nIFRFU1RfUCBhbmQKLSAg
Ly8gSU5TVEFOVElBVEVfVEVTVF9QLCBjcmVhdGluZyByZWd1bGFyIHRlc3RzIGZvciBlYWNoIHRl
c3QvcGFyYW1ldGVyCi0gIC8vIGNvbWJpbmF0aW9uLiBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVk
IG1vcmUgdGhlbiBvbmNlOyBpdCBoYXMKLSAgLy8gZ3VhcmRzIHByb3RlY3RpbmcgZnJvbSByZWdp
c3RlcmluZyB0aGUgdGVzdHMgbW9yZSB0aGVuIG9uY2UuCi0gIC8vIElmIHZhbHVlLXBhcmFtZXRl
cml6ZWQgdGVzdHMgYXJlIGRpc2FibGVkLCBSZWdpc3RlclBhcmFtZXRlcml6ZWRUZXN0cwotICAv
LyBpcyBwcmVzZW50IGJ1dCBkb2VzIG5vdGhpbmcuCisgIC8vIElOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QLCBjcmVhdGluZyByZWd1bGFyIHRlc3RzIGZvciBlYWNoIHRlc3QvcGFyYW1ldGVyCisgIC8v
IGNvbWJpbmF0aW9uLiBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIG1vcmUgdGhlbiBvbmNlOyBp
dCBoYXMgZ3VhcmRzCisgIC8vIHByb3RlY3RpbmcgZnJvbSByZWdpc3RlcmluZyB0aGUgdGVzdHMg
bW9yZSB0aGVuIG9uY2UuICBJZgorICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBk
aXNhYmxlZCwgUmVnaXN0ZXJQYXJhbWV0ZXJpemVkVGVzdHMgaXMKKyAgLy8gcHJlc2VudCBidXQg
ZG9lcyBub3RoaW5nLgogICB2b2lkIFJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzKCk7CiAKICAg
Ly8gUnVucyBhbGwgdGVzdHMgaW4gdGhpcyBVbml0VGVzdCBvYmplY3QsIHByaW50cyB0aGUgcmVz
dWx0LCBhbmQKLSAgLy8gcmV0dXJucyAwIGlmIGFsbCB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3Ig
MSBvdGhlcndpc2UuICBJZiBhbnkKLSAgLy8gZXhjZXB0aW9uIGlzIHRocm93biBkdXJpbmcgYSB0
ZXN0IG9uIFdpbmRvd3MsIHRoaXMgdGVzdCBpcwotICAvLyBjb25zaWRlcmVkIHRvIGJlIGZhaWxl
ZCwgYnV0IHRoZSByZXN0IG9mIHRoZSB0ZXN0cyB3aWxsIHN0aWxsIGJlCi0gIC8vIHJ1bi4gIChX
ZSBkaXNhYmxlIGV4Y2VwdGlvbnMgb24gTGludXggYW5kIE1hYyBPUyBYLCBzbyB0aGUgaXNzdWUK
LSAgLy8gZG9lc24ndCBhcHBseSB0aGVyZS4pCi0gIGludCBSdW5BbGxUZXN0cygpOwotCi0gIC8v
IENsZWFycyB0aGUgcmVzdWx0cyBvZiBhbGwgdGVzdHMsIGluY2x1ZGluZyB0aGUgYWQgaG9jIHRl
c3QuCi0gIHZvaWQgQ2xlYXJSZXN1bHQoKSB7CisgIC8vIHJldHVybnMgdHJ1ZSBpZiBhbGwgdGVz
dHMgYXJlIHN1Y2Nlc3NmdWwuICBJZiBhbnkgZXhjZXB0aW9uIGlzCisgIC8vIHRocm93biBkdXJp
bmcgYSB0ZXN0LCB0aGlzIHRlc3QgaXMgY29uc2lkZXJlZCB0byBiZSBmYWlsZWQsIGJ1dAorICAv
LyB0aGUgcmVzdCBvZiB0aGUgdGVzdHMgd2lsbCBzdGlsbCBiZSBydW4uCisgIGJvb2wgUnVuQWxs
VGVzdHMoKTsKKworICAvLyBDbGVhcnMgdGhlIHJlc3VsdHMgb2YgYWxsIHRlc3RzLCBleGNlcHQg
dGhlIGFkIGhvYyB0ZXN0cy4KKyAgdm9pZCBDbGVhck5vbkFkSG9jVGVzdFJlc3VsdCgpIHsKICAg
ICBGb3JFYWNoKHRlc3RfY2FzZXNfLCBUZXN0Q2FzZTo6Q2xlYXJUZXN0Q2FzZVJlc3VsdCk7Cisg
IH0KKworICAvLyBDbGVhcnMgdGhlIHJlc3VsdHMgb2YgYWQtaG9jIHRlc3QgYXNzZXJ0aW9ucy4K
KyAgdm9pZCBDbGVhckFkSG9jVGVzdFJlc3VsdCgpIHsKICAgICBhZF9ob2NfdGVzdF9yZXN1bHRf
LkNsZWFyKCk7CiAgIH0KIAorICAvLyBBZGRzIGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJyZW50
IFRlc3RSZXN1bHQgb2JqZWN0IHdoZW4gaW52b2tlZCBpbiBhCisgIC8vIGNvbnRleHQgb2YgYSB0
ZXN0IG9yIGEgdGVzdCBjYXNlLCBvciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNldC4gSWYgdGhl
CisgIC8vIHJlc3VsdCBhbHJlYWR5IGNvbnRhaW5zIGEgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBr
ZXksIHRoZSB2YWx1ZSB3aWxsIGJlCisgIC8vIHVwZGF0ZWQuCisgIHZvaWQgUmVjb3JkUHJvcGVy
dHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3BlcnR5KTsKKwogICBlbnVtIFJlYWN0aW9u
VG9TaGFyZGluZyB7CiAgICAgSE9OT1JfU0hBUkRJTkdfUFJPVE9DT0wsCiAgICAgSUdOT1JFX1NI
QVJESU5HX1BST1RPQ09MCkBAIC04MTcsNiArNzc2LDEyIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5p
dFRlc3RJbXBsIHsKICAgLy8gVW5pdFRlc3RPcHRpb25zLiBNdXN0IG5vdCBiZSBjYWxsZWQgYmVm
b3JlIEluaXRHb29nbGVUZXN0LgogICB2b2lkIENvbmZpZ3VyZVhtbE91dHB1dCgpOwogCisjaWYg
R1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworICAvLyBJbml0aWFsaXplcyB0aGUgZXZlbnQgbGlz
dGVuZXIgZm9yIHN0cmVhbWluZyB0ZXN0IHJlc3VsdHMgdG8gYSBzb2NrZXQuCisgIC8vIE11c3Qg
bm90IGJlIGNhbGxlZCBiZWZvcmUgSW5pdEdvb2dsZVRlc3QuCisgIHZvaWQgQ29uZmlndXJlU3Ry
ZWFtaW5nT3V0cHV0KCk7CisjZW5kaWYKKwogICAvLyBQZXJmb3JtcyBpbml0aWFsaXphdGlvbiBk
ZXBlbmRlbnQgdXBvbiBmbGFnIHZhbHVlcyBvYnRhaW5lZCBpbgogICAvLyBQYXJzZUdvb2dsZVRl
c3RGbGFnc09ubHkuICBJcyBjYWxsZWQgZnJvbSBJbml0R29vZ2xlVGVzdCBhZnRlciB0aGUgY2Fs
bCB0bwogICAvLyBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkuICBJbiBjYXNlIGEgdXNlciBuZWds
ZWN0cyB0byBjYWxsIEluaXRHb29nbGVUZXN0CkBAIC04MzcsOSArODAyLDE3IEBAIGNsYXNzIEdU
RVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gUmVzdG9yZXMgdGhlIHRlc3QgY2FzZXMgYW5k
IHRlc3RzIHRvIHRoZWlyIG9yZGVyIGJlZm9yZSB0aGUgZmlyc3Qgc2h1ZmZsZS4KICAgdm9pZCBV
bnNodWZmbGVUZXN0cygpOwogCisgIC8vIFJldHVybnMgdGhlIHZhbHVlIG9mIEdURVNUX0ZMQUco
Y2F0Y2hfZXhjZXB0aW9ucykgYXQgdGhlIG1vbWVudAorICAvLyBVbml0VGVzdDo6UnVuKCkgc3Rh
cnRzLgorICBib29sIGNhdGNoX2V4Y2VwdGlvbnMoKSBjb25zdCB7IHJldHVybiBjYXRjaF9leGNl
cHRpb25zXzsgfQorCiAgcHJpdmF0ZToKICAgZnJpZW5kIGNsYXNzIDo6dGVzdGluZzo6VW5pdFRl
c3Q7CiAKKyAgLy8gVXNlZCBieSBVbml0VGVzdDo6UnVuKCkgdG8gY2FwdHVyZSB0aGUgc3RhdGUg
b2YKKyAgLy8gR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSBhdCB0aGUgbW9tZW50IGl0IHN0
YXJ0cy4KKyAgdm9pZCBzZXRfY2F0Y2hfZXhjZXB0aW9ucyhib29sIHZhbHVlKSB7IGNhdGNoX2V4
Y2VwdGlvbnNfID0gdmFsdWU7IH0KKwogICAvLyBUaGUgVW5pdFRlc3Qgb2JqZWN0IHRoYXQgb3du
cyB0aGlzIGltcGxlbWVudGF0aW9uIG9iamVjdC4KICAgVW5pdFRlc3QqIGNvbnN0IHBhcmVudF87
CiAKQEAgLTg3NiwxNCArODQ5LDEyIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsK
ICAgLy8gc2h1ZmZsZWQgb3JkZXIuCiAgIHN0ZDo6dmVjdG9yPGludD4gdGVzdF9jYXNlX2luZGlj
ZXNfOwogCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgLy8gUGFyYW1ldGVyaXplZFRlc3RS
ZWdpc3RyeSBvYmplY3QgdXNlZCB0byByZWdpc3RlciB2YWx1ZS1wYXJhbWV0ZXJpemVkCiAgIC8v
IHRlc3RzLgogICBpbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgcGFyYW1l
dGVyaXplZF90ZXN0X3JlZ2lzdHJ5XzsKIAogICAvLyBJbmRpY2F0ZXMgd2hldGhlciBSZWdpc3Rl
clBhcmFtZXRlcml6ZWRUZXN0cygpIGhhcyBiZWVuIGNhbGxlZCBhbHJlYWR5LgogICBib29sIHBh
cmFtZXRlcml6ZWRfdGVzdHNfcmVnaXN0ZXJlZF87Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJB
TV9URVNUCiAKICAgLy8gSW5kZXggb2YgdGhlIGxhc3QgZGVhdGggdGVzdCBjYXNlIHJlZ2lzdGVy
ZWQuICBJbml0aWFsbHkgLTEuCiAgIGludCBsYXN0X2RlYXRoX3Rlc3RfY2FzZV87CkBAIC05Mjks
NiArOTAwLDEwIEBAIGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gT3VyIHJh
bmRvbSBudW1iZXIgZ2VuZXJhdG9yLgogICBpbnRlcm5hbDo6UmFuZG9tIHJhbmRvbV87CiAKKyAg
Ly8gVGhlIHRpbWUgb2YgdGhlIHRlc3QgcHJvZ3JhbSBzdGFydCwgaW4gbXMgZnJvbSB0aGUgc3Rh
cnQgb2YgdGhlCisgIC8vIFVOSVggZXBvY2guCisgIFRpbWVJbk1pbGxpcyBzdGFydF90aW1lc3Rh
bXBfOworCiAgIC8vIEhvdyBsb25nIHRoZSB0ZXN0IHRvb2sgdG8gcnVuLCBpbiBtaWxsaXNlY29u
ZHMuCiAgIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3RpbWVfOwogCkBAIC05NDIsNiArOTE3LDEwIEBA
IGNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RJbXBsIHsKICAgLy8gQSBwZXItdGhyZWFkIHN0YWNr
IG9mIHRyYWNlcyBjcmVhdGVkIGJ5IHRoZSBTQ09QRURfVFJBQ0UoKSBtYWNyby4KICAgaW50ZXJu
YWw6OlRocmVhZExvY2FsPHN0ZDo6dmVjdG9yPFRyYWNlSW5mbz4gPiBndGVzdF90cmFjZV9zdGFj
a187CiAKKyAgLy8gVGhlIHZhbHVlIG9mIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgYXQg
dGhlIG1vbWVudCBSdW5BbGxUZXN0cygpCisgIC8vIHN0YXJ0cy4KKyAgYm9vbCBjYXRjaF9leGNl
cHRpb25zXzsKKwogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFVuaXRUZXN0SW1w
bCk7CiB9OyAgLy8gY2xhc3MgVW5pdFRlc3RJbXBsCiAKQEAgLTk1MSwxNCArOTMwLDE2IEBAIGlu
bGluZSBVbml0VGVzdEltcGwqIEdldFVuaXRUZXN0SW1wbCgpIHsKICAgcmV0dXJuIFVuaXRUZXN0
OjpHZXRJbnN0YW5jZSgpLT5pbXBsKCk7CiB9CiAKKyNpZiBHVEVTVF9VU0VTX1NJTVBMRV9SRQor
CiAvLyBJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zIGZvciBpbXBsZW1lbnRpbmcgdGhlIHNpbXBs
ZSByZWd1bGFyCiAvLyBleHByZXNzaW9uIG1hdGNoZXIuCiBHVEVTVF9BUElfIGJvb2wgSXNJblNl
dChjaGFyIGNoLCBjb25zdCBjaGFyKiBzdHIpOwotR1RFU1RfQVBJXyBib29sIElzRGlnaXQoY2hh
ciBjaCk7Ci1HVEVTVF9BUElfIGJvb2wgSXNQdW5jdChjaGFyIGNoKTsKK0dURVNUX0FQSV8gYm9v
bCBJc0FzY2lpRGlnaXQoY2hhciBjaCk7CitHVEVTVF9BUElfIGJvb2wgSXNBc2NpaVB1bmN0KGNo
YXIgY2gpOwogR1RFU1RfQVBJXyBib29sIElzUmVwZWF0KGNoYXIgY2gpOwotR1RFU1RfQVBJXyBi
b29sIElzV2hpdGVTcGFjZShjaGFyIGNoKTsKLUdURVNUX0FQSV8gYm9vbCBJc1dvcmRDaGFyKGNo
YXIgY2gpOworR1RFU1RfQVBJXyBib29sIElzQXNjaWlXaGl0ZVNwYWNlKGNoYXIgY2gpOworR1RF
U1RfQVBJXyBib29sIElzQXNjaWlXb3JkQ2hhcihjaGFyIGNoKTsKIEdURVNUX0FQSV8gYm9vbCBJ
c1ZhbGlkRXNjYXBlKGNoYXIgY2gpOwogR1RFU1RfQVBJXyBib29sIEF0b21NYXRjaGVzQ2hhcihi
b29sIGVzY2FwZWQsIGNoYXIgcGF0dGVybiwgY2hhciBjaCk7CiBHVEVTVF9BUElfIGJvb2wgVmFs
aWRhdGVSZWdleChjb25zdCBjaGFyKiByZWdleCk7CkBAIC05NjcsNiArOTQ4LDggQEAgR1RFU1Rf
QVBJXyBib29sIE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKAogICAgIGJvb2wgZXNjYXBl
ZCwgY2hhciBjaCwgY2hhciByZXBlYXQsIGNvbnN0IGNoYXIqIHJlZ2V4LCBjb25zdCBjaGFyKiBz
dHIpOwogR1RFU1RfQVBJXyBib29sIE1hdGNoUmVnZXhBbnl3aGVyZShjb25zdCBjaGFyKiByZWdl
eCwgY29uc3QgY2hhciogc3RyKTsKIAorI2VuZGlmICAvLyBHVEVTVF9VU0VTX1NJTVBMRV9SRQor
CiAvLyBQYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IgR29vZ2xlIFRlc3QgZmxhZ3MsIHdpdGhv
dXQgaW5pdGlhbGl6aW5nCiAvLyBvdGhlciBwYXJ0cyBvZiBHb29nbGUgVGVzdC4KIEdURVNUX0FQ
SV8gdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoaW50KiBhcmdjLCBjaGFyKiogYXJndik7
CkBAIC05NzYsMzMgKzk1OSw3IEBAIEdURVNUX0FQSV8gdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFn
c09ubHkoaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndik7CiAKIC8vIFJldHVybnMgdGhlIG1lc3Nh
Z2UgZGVzY3JpYmluZyB0aGUgbGFzdCBzeXN0ZW0gZXJyb3IsIHJlZ2FyZGxlc3Mgb2YgdGhlCiAv
LyBwbGF0Zm9ybS4KLVN0cmluZyBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpOwotCi0jaWYgR1RF
U1RfT1NfV0lORE9XUwotLy8gUHJvdmlkZXMgbGVhay1zYWZlIFdpbmRvd3Mga2VybmVsIGhhbmRs
ZSBvd25lcnNoaXAuCi1jbGFzcyBBdXRvSGFuZGxlIHsKLSBwdWJsaWM6Ci0gIEF1dG9IYW5kbGUo
KSA6IGhhbmRsZV8oSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHt9Ci0gIGV4cGxpY2l0IEF1dG9IYW5k
bGUoSEFORExFIGhhbmRsZSkgOiBoYW5kbGVfKGhhbmRsZSkge30KLQotICB+QXV0b0hhbmRsZSgp
IHsgUmVzZXQoKTsgfQotCi0gIEhBTkRMRSBHZXQoKSBjb25zdCB7IHJldHVybiBoYW5kbGVfOyB9
Ci0gIHZvaWQgUmVzZXQoKSB7IFJlc2V0KElOVkFMSURfSEFORExFX1ZBTFVFKTsgfQotICB2b2lk
IFJlc2V0KEhBTkRMRSBoYW5kbGUpIHsKLSAgICBpZiAoaGFuZGxlICE9IGhhbmRsZV8pIHsKLSAg
ICAgIGlmIChoYW5kbGVfICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICA6OkNsb3Nl
SGFuZGxlKGhhbmRsZV8pOwotICAgICAgaGFuZGxlXyA9IGhhbmRsZTsKLSAgICB9Ci0gIH0KLQot
IHByaXZhdGU6Ci0gIEhBTkRMRSBoYW5kbGVfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8oQXV0b0hhbmRsZSk7Ci19OwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCitH
VEVTVF9BUElfIHN0ZDo6c3RyaW5nIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCk7CiAKIC8vIEF0
dGVtcHRzIHRvIHBhcnNlIGEgc3RyaW5nIGludG8gYSBwb3NpdGl2ZSBpbnRlZ2VyIHBvaW50ZWQg
dG8gYnkgdGhlCiAvLyBudW1iZXIgcGFyYW1ldGVyLiAgUmV0dXJucyB0cnVlIGlmIHRoYXQgaXMg
cG9zc2libGUuCkBAIC0xMDEzLDcgKzk3MCw3IEBAIGJvb2wgUGFyc2VOYXR1cmFsTnVtYmVyKGNv
bnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgSW50ZWdlciogbnVtYmVyKSB7CiAgIC8vIEZhaWwgZmFz
dCBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGRvZXMgbm90IGJlZ2luIHdpdGggYSBkaWdpdDsKICAgLy8g
dGhpcyBieXBhc3NlcyBzdHJ0b1hYWCdzICJvcHRpb25hbCBsZWFkaW5nIHdoaXRlc3BhY2UgYW5k
IHBsdXMKICAgLy8gb3IgbWludXMgc2lnbiIgc2VtYW50aWNzLCB3aGljaCBhcmUgdW5kZXNpcmFi
bGUgaGVyZS4KLSAgaWYgKHN0ci5lbXB0eSgpIHx8ICFpc2RpZ2l0KHN0clswXSkpIHsKKyAgaWYg
KHN0ci5lbXB0eSgpIHx8ICFJc0RpZ2l0KHN0clswXSkpIHsKICAgICByZXR1cm4gZmFsc2U7CiAg
IH0KICAgZXJybm8gPSAwOwpAQCAtMTAyMSwxNyArOTc4LDIzIEBAIGJvb2wgUGFyc2VOYXR1cmFs
TnVtYmVyKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgSW50ZWdlciogbnVtYmVyKSB7CiAgIGNo
YXIqIGVuZDsKICAgLy8gQmlnZ2VzdENvbnZlcnRpYmxlIGlzIHRoZSBsYXJnZXN0IGludGVnZXIg
dHlwZSB0aGF0IHN5c3RlbS1wcm92aWRlZAogICAvLyBzdHJpbmctdG8tbnVtYmVyIGNvbnZlcnNp
b24gcm91dGluZXMgY2FuIHJldHVybi4KLSNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVk
KF9fR05VQ19fKQorCisjIGlmIEdURVNUX09TX1dJTkRPV1MgJiYgIWRlZmluZWQoX19HTlVDX18p
CisKICAgLy8gTVNWQyBhbmQgQysrIEJ1aWxkZXIgZGVmaW5lIF9faW50NjQgaW5zdGVhZCBvZiB0
aGUgc3RhbmRhcmQgbG9uZyBsb25nLgogICB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgQmlnZ2Vz
dENvbnZlcnRpYmxlOwogICBjb25zdCBCaWdnZXN0Q29udmVydGlibGUgcGFyc2VkID0gX3N0cnRv
dWk2NChzdHIuY19zdHIoKSwgJmVuZCwgMTApOwotI2Vsc2UKKworIyBlbHNlCisKICAgdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIGxvbmcgQmlnZ2VzdENvbnZlcnRpYmxlOyAgLy8gTk9MSU5UCiAgIGNv
bnN0IEJpZ2dlc3RDb252ZXJ0aWJsZSBwYXJzZWQgPSBzdHJ0b3VsbChzdHIuY19zdHIoKSwgJmVu
ZCwgMTApOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVkKF9fR05VQ19f
KQorCisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTICYmICFkZWZpbmVkKF9fR05VQ19fKQor
CiAgIGNvbnN0IGJvb2wgcGFyc2Vfc3VjY2VzcyA9ICplbmQgPT0gJ1wwJyAmJiBlcnJubyA9PSAw
OwogCi0gIC8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IENvbnZlcnQgdGhpcyB0byBjb21waWxl
IHRpbWUgYXNzZXJ0aW9uIHdoZW4gaXQgaXMKKyAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBj
b21waWxlIHRpbWUgYXNzZXJ0aW9uIHdoZW4gaXQgaXMKICAgLy8gYXZhaWxhYmxlLgogICBHVEVT
VF9DSEVDS18oc2l6ZW9mKEludGVnZXIpIDw9IHNpemVvZihwYXJzZWQpKTsKIApAQCAtMTA1Myw4
ICsxMDE2LDkgQEAgYm9vbCBQYXJzZU5hdHVyYWxOdW1iZXIoY29uc3QgOjpzdGQ6OnN0cmluZyYg
c3RyLCBJbnRlZ2VyKiBudW1iZXIpIHsKIGNsYXNzIFRlc3RSZXN1bHRBY2Nlc3NvciB7CiAgcHVi
bGljOgogICBzdGF0aWMgdm9pZCBSZWNvcmRQcm9wZXJ0eShUZXN0UmVzdWx0KiB0ZXN0X3Jlc3Vs
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9l
bGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UHJvcGVydHkm
IHByb3BlcnR5KSB7Ci0gICAgdGVzdF9yZXN1bHQtPlJlY29yZFByb3BlcnR5KHByb3BlcnR5KTsK
KyAgICB0ZXN0X3Jlc3VsdC0+UmVjb3JkUHJvcGVydHkoeG1sX2VsZW1lbnQsIHByb3BlcnR5KTsK
ICAgfQogCiAgIHN0YXRpYyB2b2lkIENsZWFyVGVzdFBhcnRSZXN1bHRzKFRlc3RSZXN1bHQqIHRl
c3RfcmVzdWx0KSB7CkBAIC0xMDY3LDcgKzEwMzEsMTU3IEBAIGNsYXNzIFRlc3RSZXN1bHRBY2Nl
c3NvciB7CiAgIH0KIH07CiAKKyNpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKKy8vIFN0
cmVhbXMgdGVzdCByZXN1bHRzIHRvIHRoZSBnaXZlbiBwb3J0IG9uIHRoZSBnaXZlbiBob3N0IG1h
Y2hpbmUuCitjbGFzcyBTdHJlYW1pbmdMaXN0ZW5lciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExp
c3RlbmVyIHsKKyBwdWJsaWM6CisgIC8vIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHdyaXRpbmcg
c3RyaW5ncyB0byBhIHNvY2tldC4KKyAgY2xhc3MgQWJzdHJhY3RTb2NrZXRXcml0ZXIgeworICAg
cHVibGljOgorICAgIHZpcnR1YWwgfkFic3RyYWN0U29ja2V0V3JpdGVyKCkge30KKworICAgIC8v
IFNlbmRzIGEgc3RyaW5nIHRvIHRoZSBzb2NrZXQuCisgICAgdmlydHVhbCB2b2lkIFNlbmQoY29u
c3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpID0gMDsKKworICAgIC8vIENsb3NlcyB0aGUgc29ja2V0
LgorICAgIHZpcnR1YWwgdm9pZCBDbG9zZUNvbm5lY3Rpb24oKSB7fQorCisgICAgLy8gU2VuZHMg
YSBzdHJpbmcgYW5kIGEgbmV3bGluZSB0byB0aGUgc29ja2V0LgorICAgIHZvaWQgU2VuZExuKGNv
bnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7IFNlbmQobWVzc2FnZSArICJcbiIpOyB9CisgIH07
CisKKyAgLy8gQ29uY3JldGUgY2xhc3MgZm9yIGFjdHVhbGx5IHdyaXRpbmcgc3RyaW5ncyB0byBh
IHNvY2tldC4KKyAgY2xhc3MgU29ja2V0V3JpdGVyIDogcHVibGljIEFic3RyYWN0U29ja2V0V3Jp
dGVyIHsKKyAgIHB1YmxpYzoKKyAgICBTb2NrZXRXcml0ZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGhv
c3QsIGNvbnN0IHN0ZDo6c3RyaW5nJiBwb3J0KQorICAgICAgICA6IHNvY2tmZF8oLTEpLCBob3N0
X25hbWVfKGhvc3QpLCBwb3J0X251bV8ocG9ydCkgeworICAgICAgTWFrZUNvbm5lY3Rpb24oKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIH5Tb2NrZXRXcml0ZXIoKSB7CisgICAgICBpZiAoc29ja2Zk
XyAhPSAtMSkKKyAgICAgICAgQ2xvc2VDb25uZWN0aW9uKCk7CisgICAgfQorCisgICAgLy8gU2Vu
ZHMgYSBzdHJpbmcgdG8gdGhlIHNvY2tldC4KKyAgICB2aXJ0dWFsIHZvaWQgU2VuZChjb25zdCBz
dGQ6OnN0cmluZyYgbWVzc2FnZSkgeworICAgICAgR1RFU1RfQ0hFQ0tfKHNvY2tmZF8gIT0gLTEp
CisgICAgICAgICAgPDwgIlNlbmQoKSBjYW4gYmUgY2FsbGVkIG9ubHkgd2hlbiB0aGVyZSBpcyBh
IGNvbm5lY3Rpb24uIjsKKworICAgICAgY29uc3QgaW50IGxlbiA9IHN0YXRpY19jYXN0PGludD4o
bWVzc2FnZS5sZW5ndGgoKSk7CisgICAgICBpZiAod3JpdGUoc29ja2ZkXywgbWVzc2FnZS5jX3N0
cigpLCBsZW4pICE9IGxlbikgeworICAgICAgICBHVEVTVF9MT0dfKFdBUk5JTkcpCisgICAgICAg
ICAgICA8PCAic3RyZWFtX3Jlc3VsdF90bzogZmFpbGVkIHRvIHN0cmVhbSB0byAiCisgICAgICAg
ICAgICA8PCBob3N0X25hbWVfIDw8ICI6IiA8PCBwb3J0X251bV87CisgICAgICB9CisgICAgfQor
CisgICBwcml2YXRlOgorICAgIC8vIENyZWF0ZXMgYSBjbGllbnQgc29ja2V0IGFuZCBjb25uZWN0
cyB0byB0aGUgc2VydmVyLgorICAgIHZvaWQgTWFrZUNvbm5lY3Rpb24oKTsKKworICAgIC8vIENs
b3NlcyB0aGUgc29ja2V0LgorICAgIHZvaWQgQ2xvc2VDb25uZWN0aW9uKCkgeworICAgICAgR1RF
U1RfQ0hFQ0tfKHNvY2tmZF8gIT0gLTEpCisgICAgICAgICAgPDwgIkNsb3NlQ29ubmVjdGlvbigp
IGNhbiBiZSBjYWxsZWQgb25seSB3aGVuIHRoZXJlIGlzIGEgY29ubmVjdGlvbi4iOworCisgICAg
ICBjbG9zZShzb2NrZmRfKTsKKyAgICAgIHNvY2tmZF8gPSAtMTsKKyAgICB9CisKKyAgICBpbnQg
c29ja2ZkXzsgIC8vIHNvY2tldCBmaWxlIGRlc2NyaXB0b3IKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyBob3N0X25hbWVfOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHBvcnRfbnVtXzsKKworICAgIEdU
RVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oU29ja2V0V3JpdGVyKTsKKyAgfTsgIC8vIGNs
YXNzIFNvY2tldFdyaXRlcgorCisgIC8vIEVzY2FwZXMgJz0nLCAnJicsICclJywgYW5kICdcbicg
Y2hhcmFjdGVycyBpbiBzdHIgYXMgIiV4eCIuCisgIHN0YXRpYyBzdGQ6OnN0cmluZyBVcmxFbmNv
ZGUoY29uc3QgY2hhciogc3RyKTsKKworICBTdHJlYW1pbmdMaXN0ZW5lcihjb25zdCBzdGQ6OnN0
cmluZyYgaG9zdCwgY29uc3Qgc3RkOjpzdHJpbmcmIHBvcnQpCisgICAgICA6IHNvY2tldF93cml0
ZXJfKG5ldyBTb2NrZXRXcml0ZXIoaG9zdCwgcG9ydCkpIHsKKyAgICBTdGFydCgpOworICB9CisK
KyAgZXhwbGljaXQgU3RyZWFtaW5nTGlzdGVuZXIoQWJzdHJhY3RTb2NrZXRXcml0ZXIqIHNvY2tl
dF93cml0ZXIpCisgICAgICA6IHNvY2tldF93cml0ZXJfKHNvY2tldF93cml0ZXIpIHsgU3RhcnQo
KTsgfQorCisgIHZvaWQgT25UZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKiB1bml0
X3Rlc3QgKi8pIHsKKyAgICBTZW5kTG4oImV2ZW50PVRlc3RQcm9ncmFtU3RhcnQiKTsKKyAgfQor
CisgIHZvaWQgT25UZXN0UHJvZ3JhbUVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KSB7Cisg
ICAgLy8gTm90ZSB0aGF0IEdvb2dsZSBUZXN0IGN1cnJlbnQgb25seSByZXBvcnQgZWxhcHNlZCB0
aW1lIGZvciBlYWNoCisgICAgLy8gdGVzdCBpdGVyYXRpb24sIG5vdCBmb3IgdGhlIGVudGlyZSB0
ZXN0IHByb2dyYW0uCisgICAgU2VuZExuKCJldmVudD1UZXN0UHJvZ3JhbUVuZCZwYXNzZWQ9IiAr
IEZvcm1hdEJvb2wodW5pdF90ZXN0LlBhc3NlZCgpKSk7CisKKyAgICAvLyBOb3RpZnkgdGhlIHN0
cmVhbWluZyBzZXJ2ZXIgdG8gc3RvcC4KKyAgICBzb2NrZXRfd3JpdGVyXy0+Q2xvc2VDb25uZWN0
aW9uKCk7CisgIH0KKworICB2b2lkIE9uVGVzdEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVuaXRUZXN0
JiAvKiB1bml0X3Rlc3QgKi8sIGludCBpdGVyYXRpb24pIHsKKyAgICBTZW5kTG4oImV2ZW50PVRl
c3RJdGVyYXRpb25TdGFydCZpdGVyYXRpb249IiArCisgICAgICAgICAgIFN0cmVhbWFibGVUb1N0
cmluZyhpdGVyYXRpb24pKTsKKyAgfQorCisgIHZvaWQgT25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0
IFVuaXRUZXN0JiB1bml0X3Rlc3QsIGludCAvKiBpdGVyYXRpb24gKi8pIHsKKyAgICBTZW5kTG4o
ImV2ZW50PVRlc3RJdGVyYXRpb25FbmQmcGFzc2VkPSIgKworICAgICAgICAgICBGb3JtYXRCb29s
KHVuaXRfdGVzdC5QYXNzZWQoKSkgKyAiJmVsYXBzZWRfdGltZT0iICsKKyAgICAgICAgICAgU3Ry
ZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5lbGFwc2VkX3RpbWUoKSkgKyAibXMiKTsKKyAgfQor
CisgIHZvaWQgT25UZXN0Q2FzZVN0YXJ0KGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKKyAg
ICBTZW5kTG4oc3RkOjpzdHJpbmcoImV2ZW50PVRlc3RDYXNlU3RhcnQmbmFtZT0iKSArIHRlc3Rf
Y2FzZS5uYW1lKCkpOworICB9CisKKyAgdm9pZCBPblRlc3RDYXNlRW5kKGNvbnN0IFRlc3RDYXNl
JiB0ZXN0X2Nhc2UpIHsKKyAgICBTZW5kTG4oImV2ZW50PVRlc3RDYXNlRW5kJnBhc3NlZD0iICsg
Rm9ybWF0Qm9vbCh0ZXN0X2Nhc2UuUGFzc2VkKCkpCisgICAgICAgICAgICsgIiZlbGFwc2VkX3Rp
bWU9IiArIFN0cmVhbWFibGVUb1N0cmluZyh0ZXN0X2Nhc2UuZWxhcHNlZF90aW1lKCkpCisgICAg
ICAgICAgICsgIm1zIik7CisgIH0KKworICB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZv
JiB0ZXN0X2luZm8pIHsKKyAgICBTZW5kTG4oc3RkOjpzdHJpbmcoImV2ZW50PVRlc3RTdGFydCZu
YW1lPSIpICsgdGVzdF9pbmZvLm5hbWUoKSk7CisgIH0KKworICB2b2lkIE9uVGVzdEVuZChjb25z
dCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CisgICAgU2VuZExuKCJldmVudD1UZXN0RW5kJnBhc3Nl
ZD0iICsKKyAgICAgICAgICAgRm9ybWF0Qm9vbCgodGVzdF9pbmZvLnJlc3VsdCgpKS0+UGFzc2Vk
KCkpICsKKyAgICAgICAgICAgIiZlbGFwc2VkX3RpbWU9IiArCisgICAgICAgICAgIFN0cmVhbWFi
bGVUb1N0cmluZygodGVzdF9pbmZvLnJlc3VsdCgpKS0+ZWxhcHNlZF90aW1lKCkpICsgIm1zIik7
CisgIH0KKworICB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRl
c3RfcGFydF9yZXN1bHQpIHsKKyAgICBjb25zdCBjaGFyKiBmaWxlX25hbWUgPSB0ZXN0X3BhcnRf
cmVzdWx0LmZpbGVfbmFtZSgpOworICAgIGlmIChmaWxlX25hbWUgPT0gTlVMTCkKKyAgICAgIGZp
bGVfbmFtZSA9ICIiOworICAgIFNlbmRMbigiZXZlbnQ9VGVzdFBhcnRSZXN1bHQmZmlsZT0iICsg
VXJsRW5jb2RlKGZpbGVfbmFtZSkgKworICAgICAgICAgICAiJmxpbmU9IiArIFN0cmVhbWFibGVU
b1N0cmluZyh0ZXN0X3BhcnRfcmVzdWx0LmxpbmVfbnVtYmVyKCkpICsKKyAgICAgICAgICAgIiZt
ZXNzYWdlPSIgKyBVcmxFbmNvZGUodGVzdF9wYXJ0X3Jlc3VsdC5tZXNzYWdlKCkpKTsKKyAgfQor
CisgcHJpdmF0ZToKKyAgLy8gU2VuZHMgdGhlIGdpdmVuIG1lc3NhZ2UgYW5kIGEgbmV3bGluZSB0
byB0aGUgc29ja2V0LgorICB2b2lkIFNlbmRMbihjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkg
eyBzb2NrZXRfd3JpdGVyXy0+U2VuZExuKG1lc3NhZ2UpOyB9CisKKyAgLy8gQ2FsbGVkIGF0IHRo
ZSBzdGFydCBvZiBzdHJlYW1pbmcgdG8gbm90aWZ5IHRoZSByZWNlaXZlciB3aGF0CisgIC8vIHBy
b3RvY29sIHdlIGFyZSB1c2luZy4KKyAgdm9pZCBTdGFydCgpIHsgU2VuZExuKCJndGVzdF9zdHJl
YW1pbmdfcHJvdG9jb2xfdmVyc2lvbj0xLjAiKTsgfQorCisgIHN0ZDo6c3RyaW5nIEZvcm1hdEJv
b2woYm9vbCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPyAiMSIgOiAiMCI7IH0KKworICBjb25zdCBz
Y29wZWRfcHRyPEFic3RyYWN0U29ja2V0V3JpdGVyPiBzb2NrZXRfd3JpdGVyXzsKKworICBHVEVT
VF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFN0cmVhbWluZ0xpc3RlbmVyKTsKK307ICAvLyBj
bGFzcyBTdHJlYW1pbmdMaXN0ZW5lcgorCisjZW5kaWYgIC8vIEdURVNUX0NBTl9TVFJFQU1fUkVT
VUxUU18KKwogfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGlu
ZwogCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkgIC8vICA0MjUxCisKICNlbmRp
ZiAgLy8gR1RFU1RfU1JDX0dURVNUX0lOVEVSTkFMX0lOTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXBvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYwppbmRleCBiOTUwNGY1NmFlNmY5M2UxMjZkMmI1NjhhN2Q5
N2RiNTE3ZmI4M2U0Li5mZWNiNWQxMWMyMTI5NmE5MTgxYTExMjgwMjI2MDY3YjY0M2VkZDA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYwpAQCAtMjYsNDIgKzI2
LDUyIEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0v
LwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQogCi0jaW5jbHVkZSA8
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPgorCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtcG9ydC5oIgogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+
CiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxmc3Ry
ZWFtPgogCi0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSNpbmNsdWRlIDx3aW5kb3dzLmg+
ICAvLyBGb3IgVGVybWluYXRlUHJvY2VzcygpCi0jZWxpZiBHVEVTVF9PU19XSU5ET1dTCi0jaW5j
bHVkZSA8aW8uaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2lmIEdURVNUX09TX1dJTkRPV1MK
KyMgaW5jbHVkZSA8d2luZG93cy5oPgorIyBpbmNsdWRlIDxpby5oPgorIyBpbmNsdWRlIDxzeXMv
c3RhdC5oPgorIyBpbmNsdWRlIDxtYXA+ICAvLyBVc2VkIGluIFRocmVhZExvY2FsLgogI2Vsc2UK
LSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
KyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKIAogI2lm
IEdURVNUX09TX01BQwotI2luY2x1ZGUgPG1hY2gvbWFjaF9pbml0Lmg+Ci0jaW5jbHVkZSA8bWFj
aC90YXNrLmg+Ci0jaW5jbHVkZSA8bWFjaC92bV9tYXAuaD4KKyMgaW5jbHVkZSA8bWFjaC9tYWNo
X2luaXQuaD4KKyMgaW5jbHVkZSA8bWFjaC90YXNrLmg+CisjIGluY2x1ZGUgPG1hY2gvdm1fbWFw
Lmg+CiAjZW5kaWYgIC8vIEdURVNUX09TX01BQwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qtc3Bp
Lmg+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oPgotI2luY2x1ZGUgPGd0ZXN0L2lu
dGVybmFsL2d0ZXN0LXN0cmluZy5oPgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0
aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0
IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBv
ciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBw
cmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwt
aW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQor
I2lmIEdURVNUX09TX1FOWAorIyBpbmNsdWRlIDxkZXZjdGwuaD4KKyMgaW5jbHVkZSA8ZmNudGwu
aD4KKyMgaW5jbHVkZSA8c3lzL3Byb2Nmcy5oPgorI2VuZGlmICAvLyBHVEVTVF9PU19RTlgKKwor
I2lmIEdURVNUX09TX0FJWAorIyBpbmNsdWRlIDxwcm9jaW5mby5oPgorIyBpbmNsdWRlIDxzeXMv
dHlwZXMuaD4KKyNlbmRpZiAgLy8gR1RFU1RfT1NfQUlYCisKKyNpZiBHVEVTVF9PU19GVUNIU0lB
CisjIGluY2x1ZGUgPHppcmNvbi9wcm9jZXNzLmg+CisjIGluY2x1ZGUgPHppcmNvbi9zeXNjYWxs
cy5oPgorI2VuZGlmICAvLyBHVEVTVF9PU19GVUNIU0lBCisKKyNpbmNsdWRlICJndGVzdC9ndGVz
dC1zcGkuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1tZXNzYWdlLmgiCisjaW5jbHVkZSAiZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9n
dGVzdC1zdHJpbmcuaCIKICNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5k
ZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIG5hbWVzcGFj
ZSBpbnRlcm5hbCB7CkBAIC03NSwxMCArODUsMzEgQEAgY29uc3QgaW50IGtTdGRPdXRGaWxlbm8g
PSBTVERPVVRfRklMRU5POwogY29uc3QgaW50IGtTdGRFcnJGaWxlbm8gPSBTVERFUlJfRklMRU5P
OwogI2VuZGlmICAvLyBfTVNDX1ZFUgogCi0jaWYgR1RFU1RfT1NfTUFDCisjaWYgR1RFU1RfT1Nf
TElOVVgKKworbmFtZXNwYWNlIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorVCBSZWFkUHJvY0Zp
bGVGaWVsZChjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUsIGludCBmaWVsZCkgeworICBzdGQ6
OnN0cmluZyBkdW1teTsKKyAgc3RkOjppZnN0cmVhbSBmaWxlKGZpbGVuYW1lLmNfc3RyKCkpOwor
ICB3aGlsZSAoZmllbGQtLSA+IDApIHsKKyAgICBmaWxlID4+IGR1bW15OworICB9CisgIFQgb3V0
cHV0ID0gMDsKKyAgZmlsZSA+PiBvdXRwdXQ7CisgIHJldHVybiBvdXRwdXQ7Cit9Cit9ICAvLyBu
YW1lc3BhY2UKKworLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSB0aHJlYWRzLCBvciAw
IHdoZW4gdGhlcmUgaXMgYW4gZXJyb3IuCitzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CisgIGNv
bnN0IHN0ZDo6c3RyaW5nIGZpbGVuYW1lID0KKyAgICAgIChNZXNzYWdlKCkgPDwgIi9wcm9jLyIg
PDwgZ2V0cGlkKCkgPDwgIi9zdGF0IikuR2V0U3RyaW5nKCk7CisgIHJldHVybiBSZWFkUHJvY0Zp
bGVGaWVsZDxpbnQ+KGZpbGVuYW1lLCAxOSk7Cit9CisKKyNlbGlmIEdURVNUX09TX01BQwogCi0v
LyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBydW5uaW5nIGluIHRoZSBwcm9jZXNzLCBv
ciAwIHRvIGluZGljYXRlIHRoYXQKLS8vIHdlIGNhbm5vdCBkZXRlY3QgaXQuCiBzaXplX3QgR2V0
VGhyZWFkQ291bnQoKSB7CiAgIGNvbnN0IHRhc2tfdCB0YXNrID0gbWFjaF90YXNrX3NlbGYoKTsK
ICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCB0aHJlYWRfY291bnQ7CkBAIC05Niw2ICsxMjcsNTgg
QEAgc2l6ZV90IEdldFRocmVhZENvdW50KCkgewogICB9CiB9CiAKKyNlbGlmIEdURVNUX09TX1FO
WAorCisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBydW5uaW5nIGluIHRoZSBwcm9j
ZXNzLCBvciAwIHRvIGluZGljYXRlIHRoYXQKKy8vIHdlIGNhbm5vdCBkZXRlY3QgaXQuCitzaXpl
X3QgR2V0VGhyZWFkQ291bnQoKSB7CisgIGNvbnN0IGludCBmZCA9IG9wZW4oIi9wcm9jL3NlbGYv
YXMiLCBPX1JET05MWSk7CisgIGlmIChmZCA8IDApIHsKKyAgICByZXR1cm4gMDsKKyAgfQorICBw
cm9jZnNfaW5mbyBwcm9jZXNzX2luZm87CisgIGNvbnN0IGludCBzdGF0dXMgPQorICAgICAgZGV2
Y3RsKGZkLCBEQ01EX1BST0NfSU5GTywgJnByb2Nlc3NfaW5mbywgc2l6ZW9mKHByb2Nlc3NfaW5m
byksIE5VTEwpOworICBjbG9zZShmZCk7CisgIGlmIChzdGF0dXMgPT0gRU9LKSB7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHNpemVfdD4ocHJvY2Vzc19pbmZvLm51bV90aHJlYWRzKTsKKyAgfSBl
bHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCisjZWxpZiBHVEVTVF9PU19BSVgKKworc2l6
ZV90IEdldFRocmVhZENvdW50KCkgeworICBzdHJ1Y3QgcHJvY2VudHJ5NjQgZW50cnk7CisgIHBp
ZF90IHBpZCA9IGdldHBpZCgpOworICBpbnQgc3RhdHVzID0gZ2V0cHJvY3M2NCgmZW50cnksIHNp
emVvZihlbnRyeSksIE5VTEwsIDAsICZwaWQsIDEpOworICBpZiAoc3RhdHVzID09IDEpIHsKKyAg
ICByZXR1cm4gZW50cnkucGlfdGhjb3VudDsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAg
fQorfQorCisjZWxpZiBHVEVTVF9PU19GVUNIU0lBCisKK3NpemVfdCBHZXRUaHJlYWRDb3VudCgp
IHsKKyAgaW50IGR1bW15X2J1ZmZlcjsKKyAgc2l6ZV90IGF2YWlsOworICB6eF9zdGF0dXNfdCBz
dGF0dXMgPSB6eF9vYmplY3RfZ2V0X2luZm8oCisgICAgICB6eF9wcm9jZXNzX3NlbGYoKSwKKyAg
ICAgIFpYX0lORk9fUFJPQ0VTU19USFJFQURTLAorICAgICAgJmR1bW15X2J1ZmZlciwKKyAgICAg
IDAsCisgICAgICBudWxscHRyLAorICAgICAgJmF2YWlsKTsKKyAgaWYgKHN0YXR1cyA9PSBaWF9P
SykgeworICAgIHJldHVybiBhdmFpbDsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQor
fQorCiAjZWxzZQogCiBzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CkBAIC0xMDQsNyArMTg3LDQz
MiBAQCBzaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7CiAgIHJldHVybiAwOwogfQogCi0jZW5kaWYg
IC8vIEdURVNUX09TX01BQworI2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAorCisjaWYgR1RFU1Rf
SVNfVEhSRUFEU0FGRSAmJiBHVEVTVF9PU19XSU5ET1dTCisKK3ZvaWQgU2xlZXBNaWxsaXNlY29u
ZHMoaW50IG4pIHsKKyAgOjpTbGVlcChuKTsKK30KKworQXV0b0hhbmRsZTo6QXV0b0hhbmRsZSgp
CisgICAgOiBoYW5kbGVfKElOVkFMSURfSEFORExFX1ZBTFVFKSB7fQorCitBdXRvSGFuZGxlOjpB
dXRvSGFuZGxlKEhhbmRsZSBoYW5kbGUpCisgICAgOiBoYW5kbGVfKGhhbmRsZSkge30KKworQXV0
b0hhbmRsZTo6fkF1dG9IYW5kbGUoKSB7CisgIFJlc2V0KCk7Cit9CisKK0F1dG9IYW5kbGU6Okhh
bmRsZSBBdXRvSGFuZGxlOjpHZXQoKSBjb25zdCB7CisgIHJldHVybiBoYW5kbGVfOworfQorCit2
b2lkIEF1dG9IYW5kbGU6OlJlc2V0KCkgeworICBSZXNldChJTlZBTElEX0hBTkRMRV9WQUxVRSk7
Cit9CisKK3ZvaWQgQXV0b0hhbmRsZTo6UmVzZXQoSEFORExFIGhhbmRsZSkgeworICAvLyBSZXNl
dHRpbmcgd2l0aCB0aGUgc2FtZSBoYW5kbGUgd2UgYWxyZWFkeSBvd24gaXMgaW52YWxpZC4KKyAg
aWYgKGhhbmRsZV8gIT0gaGFuZGxlKSB7CisgICAgaWYgKElzQ2xvc2VhYmxlKCkpIHsKKyAgICAg
IDo6Q2xvc2VIYW5kbGUoaGFuZGxlXyk7CisgICAgfQorICAgIGhhbmRsZV8gPSBoYW5kbGU7Cisg
IH0gZWxzZSB7CisgICAgR1RFU1RfQ0hFQ0tfKCFJc0Nsb3NlYWJsZSgpKQorICAgICAgICA8PCAi
UmVzZXR0aW5nIGEgdmFsaWQgaGFuZGxlIHRvIGl0c2VsZiBpcyBsaWtlbHkgYSBwcm9ncmFtbWVy
IGVycm9yICIKKyAgICAgICAgICAgICJhbmQgdGh1cyBub3QgYWxsb3dlZC4iOworICB9Cit9CisK
K2Jvb2wgQXV0b0hhbmRsZTo6SXNDbG9zZWFibGUoKSBjb25zdCB7CisgIC8vIERpZmZlcmVudCBX
aW5kb3dzIEFQSXMgbWF5IHVzZSBlaXRoZXIgb2YgdGhlc2UgdmFsdWVzIHRvIHJlcHJlc2VudCBh
bgorICAvLyBpbnZhbGlkIGhhbmRsZS4KKyAgcmV0dXJuIGhhbmRsZV8gIT0gTlVMTCAmJiBoYW5k
bGVfICE9IElOVkFMSURfSEFORExFX1ZBTFVFOworfQorCitOb3RpZmljYXRpb246Ok5vdGlmaWNh
dGlvbigpCisgICAgOiBldmVudF8oOjpDcmVhdGVFdmVudChOVUxMLCAgIC8vIERlZmF1bHQgc2Vj
dXJpdHkgYXR0cmlidXRlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsICAgLy8g
RG8gbm90IHJlc2V0IGF1dG9tYXRpY2FsbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBG
QUxTRSwgIC8vIEluaXRpYWxseSB1bnNldC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V
TEwpKSB7ICAvLyBBbm9ueW1vdXMgZXZlbnQuCisgIEdURVNUX0NIRUNLXyhldmVudF8uR2V0KCkg
IT0gTlVMTCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpOb3RpZnkoKSB7CisgIEdURVNUX0NI
RUNLXyg6OlNldEV2ZW50KGV2ZW50Xy5HZXQoKSkgIT0gRkFMU0UpOworfQorCit2b2lkIE5vdGlm
aWNhdGlvbjo6V2FpdEZvck5vdGlmaWNhdGlvbigpIHsKKyAgR1RFU1RfQ0hFQ0tfKAorICAgICAg
OjpXYWl0Rm9yU2luZ2xlT2JqZWN0KGV2ZW50Xy5HZXQoKSwgSU5GSU5JVEUpID09IFdBSVRfT0JK
RUNUXzApOworfQorCitNdXRleDo6TXV0ZXgoKQorICAgIDogb3duZXJfdGhyZWFkX2lkXygwKSwK
KyAgICAgIHR5cGVfKGtEeW5hbWljKSwKKyAgICAgIGNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFz
ZV8oMCksCisgICAgICBjcml0aWNhbF9zZWN0aW9uXyhuZXcgQ1JJVElDQUxfU0VDVElPTikgewor
ICA6OkluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oY3JpdGljYWxfc2VjdGlvbl8pOworfQorCitN
dXRleDo6fk11dGV4KCkgeworICAvLyBTdGF0aWMgbXV0ZXhlcyBhcmUgbGVha2VkIGludGVudGlv
bmFsbHkuIEl0IGlzIG5vdCB0aHJlYWQtc2FmZSB0byB0cnkKKyAgLy8gdG8gY2xlYW4gdGhlbSB1
cC4KKyAgLy8gRklYTUU6IFN3aXRjaCB0byBTbGltIFJlYWRlci9Xcml0ZXIgKFNSVykgTG9ja3Ms
IHdoaWNoIHJlcXVpcmVzCisgIC8vIG5vdGhpbmcgdG8gY2xlYW4gaXQgdXAgYnV0IGlzIGF2YWls
YWJsZSBvbmx5IG9uIFZpc3RhIGFuZCBsYXRlci4KKyAgLy8gaHR0cHM6Ly9kb2NzLm1pY3Jvc29m
dC5jb20vZW4tdXMvd2luZG93cy9kZXNrdG9wL1N5bmMvc2xpbS1yZWFkZXItd3JpdGVyLS1zcnct
LWxvY2tzCisgIGlmICh0eXBlXyA9PSBrRHluYW1pYykgeworICAgIDo6RGVsZXRlQ3JpdGljYWxT
ZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb25fKTsKKyAgICBkZWxldGUgY3JpdGljYWxfc2VjdGlvbl87
CisgICAgY3JpdGljYWxfc2VjdGlvbl8gPSBOVUxMOworICB9Cit9CisKK3ZvaWQgTXV0ZXg6Okxv
Y2soKSB7CisgIFRocmVhZFNhZmVMYXp5SW5pdCgpOworICA6OkVudGVyQ3JpdGljYWxTZWN0aW9u
KGNyaXRpY2FsX3NlY3Rpb25fKTsKKyAgb3duZXJfdGhyZWFkX2lkXyA9IDo6R2V0Q3VycmVudFRo
cmVhZElkKCk7Cit9CisKK3ZvaWQgTXV0ZXg6OlVubG9jaygpIHsKKyAgVGhyZWFkU2FmZUxhenlJ
bml0KCk7CisgIC8vIFdlIGRvbid0IHByb3RlY3Qgd3JpdGluZyB0byBvd25lcl90aHJlYWRfaWRf
IGhlcmUsIGFzIGl0J3MgdGhlCisgIC8vIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3Vy
ZSB0aGF0IHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUKKyAgLy8gbXV0ZXggd2hlbiB0aGlz
IGlzIGNhbGxlZC4KKyAgb3duZXJfdGhyZWFkX2lkXyA9IDA7CisgIDo6TGVhdmVDcml0aWNhbFNl
Y3Rpb24oY3JpdGljYWxfc2VjdGlvbl8pOworfQorCisvLyBEb2VzIG5vdGhpbmcgaWYgdGhlIGN1
cnJlbnQgdGhyZWFkIGhvbGRzIHRoZSBtdXRleC4gT3RoZXJ3aXNlLCBjcmFzaGVzCisvLyB3aXRo
IGhpZ2ggcHJvYmFiaWxpdHkuCit2b2lkIE11dGV4OjpBc3NlcnRIZWxkKCkgeworICBUaHJlYWRT
YWZlTGF6eUluaXQoKTsKKyAgR1RFU1RfQ0hFQ0tfKG93bmVyX3RocmVhZF9pZF8gPT0gOjpHZXRD
dXJyZW50VGhyZWFkSWQoKSkKKyAgICAgIDw8ICJUaGUgY3VycmVudCB0aHJlYWQgaXMgbm90IGhv
bGRpbmcgdGhlIG11dGV4IEAiIDw8IHRoaXM7Cit9CisKK25hbWVzcGFjZSB7CisKKy8vIFVzZSB0
aGUgUkFJSSBpZGlvbSB0byBmbGFnIG1lbSBhbGxvY3MgdGhhdCBhcmUgaW50ZW50aW9uYWxseSBu
ZXZlcgorLy8gZGVhbGxvY2F0ZWQuIFRoZSBtb3RpdmF0aW9uIGlzIHRvIHNpbGVuY2UgdGhlIGZh
bHNlIHBvc2l0aXZlIG1lbSBsZWFrcworLy8gdGhhdCBhcmUgcmVwb3J0ZWQgYnkgdGhlIGRlYnVn
IHZlcnNpb24gb2YgTVMncyBDUlQgd2hpY2ggY2FuIG9ubHkgZGV0ZWN0CisvLyBpZiBhbiBhbGxv
YyBpcyBtaXNzaW5nIGEgbWF0Y2hpbmcgZGVhbGxvY2F0aW9uLgorLy8gRXhhbXBsZToKKy8vICAg
IE1lbW9yeUlzTm90RGVhbGxvY2F0ZWQgbWVtb3J5X2lzX25vdF9kZWFsbG9jYXRlZDsKKy8vICAg
IGNyaXRpY2FsX3NlY3Rpb25fID0gbmV3IENSSVRJQ0FMX1NFQ1RJT047CisvLworY2xhc3MgTWVt
b3J5SXNOb3REZWFsbG9jYXRlZAoreworIHB1YmxpYzoKKyAgTWVtb3J5SXNOb3REZWFsbG9jYXRl
ZCgpIDogb2xkX2NydGRiZ19mbGFnXygwKSB7CisjaWZkZWYgX01TQ19WRVIKKyAgICBvbGRfY3J0
ZGJnX2ZsYWdfID0gX0NydFNldERiZ0ZsYWcoX0NSVERCR19SRVBPUlRfRkxBRyk7CisgICAgLy8g
U2V0IGhlYXAgYWxsb2NhdGlvbiBibG9jayB0eXBlIHRvIF9JR05PUkVfQkxPQ0sgc28gdGhhdCBN
UyBkZWJ1ZyBDUlQKKyAgICAvLyBkb2Vzbid0IHJlcG9ydCBtZW0gbGVhayBpZiB0aGVyZSdzIG5v
IG1hdGNoaW5nIGRlYWxsb2NhdGlvbi4KKyAgICBfQ3J0U2V0RGJnRmxhZyhvbGRfY3J0ZGJnX2Zs
YWdfICYgfl9DUlREQkdfQUxMT0NfTUVNX0RGKTsKKyNlbmRpZiAgLy8gIF9NU0NfVkVSCisgIH0K
KworICB+TWVtb3J5SXNOb3REZWFsbG9jYXRlZCgpIHsKKyNpZmRlZiBfTVNDX1ZFUgorICAgIC8v
IFJlc3RvcmUgdGhlIG9yaWdpbmFsIF9DUlREQkdfQUxMT0NfTUVNX0RGIGZsYWcKKyAgICBfQ3J0
U2V0RGJnRmxhZyhvbGRfY3J0ZGJnX2ZsYWdfKTsKKyNlbmRpZiAgLy8gIF9NU0NfVkVSCisgIH0K
KworIHByaXZhdGU6CisgIGludCBvbGRfY3J0ZGJnX2ZsYWdfOworCisgIEdURVNUX0RJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTl8oTWVtb3J5SXNOb3REZWFsbG9jYXRlZCk7Cit9OworCit9ICAvLyBu
YW1lc3BhY2UKKworLy8gSW5pdGlhbGl6ZXMgb3duZXJfdGhyZWFkX2lkXyBhbmQgY3JpdGljYWxf
c2VjdGlvbl8gaW4gc3RhdGljIG11dGV4ZXMuCit2b2lkIE11dGV4OjpUaHJlYWRTYWZlTGF6eUlu
aXQoKSB7CisgIC8vIER5bmFtaWMgbXV0ZXhlcyBhcmUgaW5pdGlhbGl6ZWQgaW4gdGhlIGNvbnN0
cnVjdG9yLgorICBpZiAodHlwZV8gPT0ga1N0YXRpYykgeworICAgIHN3aXRjaCAoCisgICAgICAg
IDo6SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoJmNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFz
ZV8sIDFMLCAwTCkpIHsKKyAgICAgIGNhc2UgMDoKKyAgICAgICAgLy8gSWYgY3JpdGljYWxfc2Vj
dGlvbl9pbml0X3BoYXNlXyB3YXMgMCBiZWZvcmUgdGhlIGV4Y2hhbmdlLCB3ZQorICAgICAgICAv
LyBhcmUgdGhlIGZpcnN0IHRvIHRlc3QgaXQgYW5kIG5lZWQgdG8gcGVyZm9ybSB0aGUgaW5pdGlh
bGl6YXRpb24uCisgICAgICAgIG93bmVyX3RocmVhZF9pZF8gPSAwOworICAgICAgICB7CisgICAg
ICAgICAgLy8gVXNlIFJBSUkgdG8gZmxhZyB0aGF0IGZvbGxvd2luZyBtZW0gYWxsb2MgaXMgbmV2
ZXIgZGVhbGxvY2F0ZWQuCisgICAgICAgICAgTWVtb3J5SXNOb3REZWFsbG9jYXRlZCBtZW1vcnlf
aXNfbm90X2RlYWxsb2NhdGVkOworICAgICAgICAgIGNyaXRpY2FsX3NlY3Rpb25fID0gbmV3IENS
SVRJQ0FMX1NFQ1RJT047CisgICAgICAgIH0KKyAgICAgICAgOjpJbml0aWFsaXplQ3JpdGljYWxT
ZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb25fKTsKKyAgICAgICAgLy8gVXBkYXRlcyB0aGUgY3JpdGlj
YWxfc2VjdGlvbl9pbml0X3BoYXNlXyB0byAyIHRvIHNpZ25hbAorICAgICAgICAvLyBpbml0aWFs
aXphdGlvbiBjb21wbGV0ZS4KKyAgICAgICAgR1RFU1RfQ0hFQ0tfKDo6SW50ZXJsb2NrZWRDb21w
YXJlRXhjaGFuZ2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICZjcml0aWNhbF9zZWN0aW9u
X2luaXRfcGhhc2VfLCAyTCwgMUwpID09CisgICAgICAgICAgICAgICAgICAgICAgMUwpOworICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgMToKKyAgICAgICAgLy8gU29tZWJvZHkgZWxzZSBpcyBh
bHJlYWR5IGluaXRpYWxpemluZyB0aGUgbXV0ZXg7IHNwaW4gdW50aWwgdGhleQorICAgICAgICAv
LyBhcmUgZG9uZS4KKyAgICAgICAgd2hpbGUgKDo6SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2Uo
JmNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFzZV8sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDJMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyTCkgIT0gMkwpIHsKKyAgICAgICAgICAvLyBQb3NzaWJseSB5aWVsZHMgdGhl
IHJlc3Qgb2YgdGhlIHRocmVhZCdzIHRpbWUgc2xpY2UgdG8gb3RoZXIKKyAgICAgICAgICAvLyB0
aHJlYWRzLgorICAgICAgICAgIDo6U2xlZXAoMCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7
CisKKyAgICAgIGNhc2UgMjoKKyAgICAgICAgYnJlYWs7ICAvLyBUaGUgbXV0ZXggaXMgYWxyZWFk
eSBpbml0aWFsaXplZCBhbmQgcmVhZHkgZm9yIHVzZS4KKworICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgR1RFU1RfQ0hFQ0tfKGZhbHNlKQorICAgICAgICAgICAgPDwgIlVuZXhwZWN0ZWQgdmFsdWUg
b2YgY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXyAiCisgICAgICAgICAgICA8PCAid2hpbGUg
aW5pdGlhbGl6aW5nIGEgc3RhdGljIG11dGV4LiI7CisgICAgfQorICB9Cit9CisKK25hbWVzcGFj
ZSB7CisKK2NsYXNzIFRocmVhZFdpdGhQYXJhbVN1cHBvcnQgOiBwdWJsaWMgVGhyZWFkV2l0aFBh
cmFtQmFzZSB7CisgcHVibGljOgorICBzdGF0aWMgSEFORExFIENyZWF0ZVRocmVhZChSdW5uYWJs
ZSogcnVubmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiog
dGhyZWFkX2Nhbl9zdGFydCkgeworICAgIFRocmVhZE1haW5QYXJhbSogcGFyYW0gPSBuZXcgVGhy
ZWFkTWFpblBhcmFtKHJ1bm5hYmxlLCB0aHJlYWRfY2FuX3N0YXJ0KTsKKyAgICBEV09SRCB0aHJl
YWRfaWQ7CisgICAgLy8gRklYTUU6IENvbnNpZGVyIHRvIHVzZSBfYmVnaW50aHJlYWRleCBpbnN0
ZWFkLgorICAgIEhBTkRMRSB0aHJlYWRfaGFuZGxlID0gOjpDcmVhdGVUaHJlYWQoCisgICAgICAg
IE5VTEwsICAgIC8vIERlZmF1bHQgc2VjdXJpdHkuCisgICAgICAgIDAsICAgICAgIC8vIERlZmF1
bHQgc3RhY2sgc2l6ZS4KKyAgICAgICAgJlRocmVhZFdpdGhQYXJhbVN1cHBvcnQ6OlRocmVhZE1h
aW4sCisgICAgICAgIHBhcmFtLCAgIC8vIFBhcmFtZXRlciB0byBUaHJlYWRNYWluU3RhdGljCisg
ICAgICAgIDB4MCwgICAgIC8vIERlZmF1bHQgY3JlYXRpb24gZmxhZ3MuCisgICAgICAgICZ0aHJl
YWRfaWQpOyAgLy8gTmVlZCBhIHZhbGlkIHBvaW50ZXIgZm9yIHRoZSBjYWxsIHRvIHdvcmsgdW5k
ZXIgV2luOTguCisgICAgR1RFU1RfQ0hFQ0tfKHRocmVhZF9oYW5kbGUgIT0gTlVMTCkgPDwgIkNy
ZWF0ZVRocmVhZCBmYWlsZWQgd2l0aCBlcnJvciAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgOjpHZXRMYXN0RXJyb3IoKSA8PCAiLiI7CisgICAgaWYgKHRocmVh
ZF9oYW5kbGUgPT0gTlVMTCkgeworICAgICAgZGVsZXRlIHBhcmFtOworICAgIH0KKyAgICByZXR1
cm4gdGhyZWFkX2hhbmRsZTsKKyAgfQorCisgcHJpdmF0ZToKKyAgc3RydWN0IFRocmVhZE1haW5Q
YXJhbSB7CisgICAgVGhyZWFkTWFpblBhcmFtKFJ1bm5hYmxlKiBydW5uYWJsZSwgTm90aWZpY2F0
aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KQorICAgICAgICA6IHJ1bm5hYmxlXyhydW5uYWJsZSksCisg
ICAgICAgICAgdGhyZWFkX2Nhbl9zdGFydF8odGhyZWFkX2Nhbl9zdGFydCkgeworICAgIH0KKyAg
ICBzY29wZWRfcHRyPFJ1bm5hYmxlPiBydW5uYWJsZV87CisgICAgLy8gRG9lcyBub3Qgb3duLgor
ICAgIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydF87CisgIH07CisKKyAgc3RhdGljIERX
T1JEIFdJTkFQSSBUaHJlYWRNYWluKHZvaWQqIHB0cikgeworICAgIC8vIFRyYW5zZmVycyBvd25l
cnNoaXAuCisgICAgc2NvcGVkX3B0cjxUaHJlYWRNYWluUGFyYW0+IHBhcmFtKHN0YXRpY19jYXN0
PFRocmVhZE1haW5QYXJhbSo+KHB0cikpOworICAgIGlmIChwYXJhbS0+dGhyZWFkX2Nhbl9zdGFy
dF8gIT0gTlVMTCkKKyAgICAgIHBhcmFtLT50aHJlYWRfY2FuX3N0YXJ0Xy0+V2FpdEZvck5vdGlm
aWNhdGlvbigpOworICAgIHBhcmFtLT5ydW5uYWJsZV8tPlJ1bigpOworICAgIHJldHVybiAwOwor
ICB9CisKKyAgLy8gUHJvaGliaXQgaW5zdGFudGlhdGlvbi4KKyAgVGhyZWFkV2l0aFBhcmFtU3Vw
cG9ydCgpOworCisgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkV2l0aFBh
cmFtU3VwcG9ydCk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UKKworVGhyZWFkV2l0aFBhcmFtQmFz
ZTo6VGhyZWFkV2l0aFBhcmFtQmFzZShSdW5uYWJsZSAqcnVubmFibGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFy
dCkKKyAgICAgIDogdGhyZWFkXyhUaHJlYWRXaXRoUGFyYW1TdXBwb3J0OjpDcmVhdGVUaHJlYWQo
cnVubmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRocmVhZF9jYW5fc3RhcnQpKSB7Cit9CisKK1RocmVhZFdpdGhQYXJhbUJhc2U6On5U
aHJlYWRXaXRoUGFyYW1CYXNlKCkgeworICBKb2luKCk7Cit9CisKK3ZvaWQgVGhyZWFkV2l0aFBh
cmFtQmFzZTo6Sm9pbigpIHsKKyAgR1RFU1RfQ0hFQ0tfKDo6V2FpdEZvclNpbmdsZU9iamVjdCh0
aHJlYWRfLkdldCgpLCBJTkZJTklURSkgPT0gV0FJVF9PQkpFQ1RfMCkKKyAgICAgIDw8ICJGYWls
ZWQgdG8gam9pbiB0aGUgdGhyZWFkIHdpdGggZXJyb3IgIiA8PCA6OkdldExhc3RFcnJvcigpIDw8
ICIuIjsKK30KKworLy8gTWFwcyBhIHRocmVhZCB0byBhIHNldCBvZiBUaHJlYWRJZFRvVGhyZWFk
TG9jYWxzIHRoYXQgaGF2ZSB2YWx1ZXMKKy8vIGluc3RhbnRpYXRlZCBvbiB0aGF0IHRocmVhZCBh
bmQgbm90aWZpZXMgdGhlbSB3aGVuIHRoZSB0aHJlYWQgZXhpdHMuICBBCisvLyBUaHJlYWRMb2Nh
bCBpbnN0YW5jZSBpcyBleHBlY3RlZCB0byBwZXJzaXN0IHVudGlsIGFsbCB0aHJlYWRzIGl0IGhh
cworLy8gdmFsdWVzIG9uIGhhdmUgdGVybWluYXRlZC4KK2NsYXNzIFRocmVhZExvY2FsUmVnaXN0
cnlJbXBsIHsKKyBwdWJsaWM6CisgIC8vIFJlZ2lzdGVycyB0aHJlYWRfbG9jYWxfaW5zdGFuY2Ug
YXMgaGF2aW5nIHZhbHVlIG9uIHRoZSBjdXJyZW50IHRocmVhZC4KKyAgLy8gUmV0dXJucyBhIHZh
bHVlIHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHRocmVhZCBmcm9tIG90aGVyIHRo
cmVhZHMuCisgIHN0YXRpYyBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogR2V0VmFsdWVPbkN1
cnJlbnRUaHJlYWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9p
bnN0YW5jZSkgeworICAgIERXT1JEIGN1cnJlbnRfdGhyZWFkID0gOjpHZXRDdXJyZW50VGhyZWFk
SWQoKTsKKyAgICBNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKKyAgICBUaHJlYWRJZFRvVGhyZWFk
TG9jYWxzKiBjb25zdCB0aHJlYWRfdG9fdGhyZWFkX2xvY2FscyA9CisgICAgICAgIEdldFRocmVh
ZExvY2Fsc01hcExvY2tlZCgpOworICAgIFRocmVhZElkVG9UaHJlYWRMb2NhbHM6Oml0ZXJhdG9y
IHRocmVhZF9sb2NhbF9wb3MgPQorICAgICAgICB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+Zmlu
ZChjdXJyZW50X3RocmVhZCk7CisgICAgaWYgKHRocmVhZF9sb2NhbF9wb3MgPT0gdGhyZWFkX3Rv
X3RocmVhZF9sb2NhbHMtPmVuZCgpKSB7CisgICAgICB0aHJlYWRfbG9jYWxfcG9zID0gdGhyZWFk
X3RvX3RocmVhZF9sb2NhbHMtPmluc2VydCgKKyAgICAgICAgICBzdGQ6Om1ha2VfcGFpcihjdXJy
ZW50X3RocmVhZCwgVGhyZWFkTG9jYWxWYWx1ZXMoKSkpLmZpcnN0OworICAgICAgU3RhcnRXYXRj
aGVyVGhyZWFkRm9yKGN1cnJlbnRfdGhyZWFkKTsKKyAgICB9CisgICAgVGhyZWFkTG9jYWxWYWx1
ZXMmIHRocmVhZF9sb2NhbF92YWx1ZXMgPSB0aHJlYWRfbG9jYWxfcG9zLT5zZWNvbmQ7CisgICAg
VGhyZWFkTG9jYWxWYWx1ZXM6Oml0ZXJhdG9yIHZhbHVlX3BvcyA9CisgICAgICAgIHRocmVhZF9s
b2NhbF92YWx1ZXMuZmluZCh0aHJlYWRfbG9jYWxfaW5zdGFuY2UpOworICAgIGlmICh2YWx1ZV9w
b3MgPT0gdGhyZWFkX2xvY2FsX3ZhbHVlcy5lbmQoKSkgeworICAgICAgdmFsdWVfcG9zID0KKyAg
ICAgICAgICB0aHJlYWRfbG9jYWxfdmFsdWVzCisgICAgICAgICAgICAgIC5pbnNlcnQoc3RkOjpt
YWtlX3BhaXIoCisgICAgICAgICAgICAgICAgICB0aHJlYWRfbG9jYWxfaW5zdGFuY2UsCisgICAg
ICAgICAgICAgICAgICBsaW5rZWRfcHRyPFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlPigKKyAg
ICAgICAgICAgICAgICAgICAgICB0aHJlYWRfbG9jYWxfaW5zdGFuY2UtPk5ld1ZhbHVlRm9yQ3Vy
cmVudFRocmVhZCgpKSkpCisgICAgICAgICAgICAgIC5maXJzdDsKKyAgICB9CisgICAgcmV0dXJu
IHZhbHVlX3Bvcy0+c2Vjb25kLmdldCgpOworICB9CisKKyAgc3RhdGljIHZvaWQgT25UaHJlYWRM
b2NhbERlc3Ryb3llZCgKKyAgICAgIGNvbnN0IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2Fs
X2luc3RhbmNlKSB7CisgICAgc3RkOjp2ZWN0b3I8bGlua2VkX3B0cjxUaHJlYWRMb2NhbFZhbHVl
SG9sZGVyQmFzZT4gPiB2YWx1ZV9ob2xkZXJzOworICAgIC8vIENsZWFuIHVwIHRoZSBUaHJlYWRM
b2NhbFZhbHVlcyBkYXRhIHN0cnVjdHVyZSB3aGlsZSBob2xkaW5nIHRoZSBsb2NrLCBidXQKKyAg
ICAvLyBkZWZlciB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhlIFRocmVhZExvY2FsVmFsdWVIb2xkZXJC
YXNlcy4KKyAgICB7CisgICAgICBNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKKyAgICAgIFRocmVh
ZElkVG9UaHJlYWRMb2NhbHMqIGNvbnN0IHRocmVhZF90b190aHJlYWRfbG9jYWxzID0KKyAgICAg
ICAgICBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKTsKKyAgICAgIGZvciAoVGhyZWFkSWRUb1Ro
cmVhZExvY2Fsczo6aXRlcmF0b3IgaXQgPQorICAgICAgICAgIHRocmVhZF90b190aHJlYWRfbG9j
YWxzLT5iZWdpbigpOworICAgICAgICAgIGl0ICE9IHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5l
bmQoKTsKKyAgICAgICAgICArK2l0KSB7CisgICAgICAgIFRocmVhZExvY2FsVmFsdWVzJiB0aHJl
YWRfbG9jYWxfdmFsdWVzID0gaXQtPnNlY29uZDsKKyAgICAgICAgVGhyZWFkTG9jYWxWYWx1ZXM6
Oml0ZXJhdG9yIHZhbHVlX3BvcyA9CisgICAgICAgICAgICB0aHJlYWRfbG9jYWxfdmFsdWVzLmZp
bmQodGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKKyAgICAgICAgaWYgKHZhbHVlX3BvcyAhPSB0aHJl
YWRfbG9jYWxfdmFsdWVzLmVuZCgpKSB7CisgICAgICAgICAgdmFsdWVfaG9sZGVycy5wdXNoX2Jh
Y2sodmFsdWVfcG9zLT5zZWNvbmQpOworICAgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMuZXJh
c2UodmFsdWVfcG9zKTsKKyAgICAgICAgICAvLyBUaGlzICdpZicgY2FuIG9ubHkgYmUgc3VjY2Vz
c2Z1bCBhdCBtb3N0IG9uY2UsIHNvIHRoZW9yZXRpY2FsbHkgd2UKKyAgICAgICAgICAvLyBjb3Vs
ZCBicmVhayBvdXQgb2YgdGhlIGxvb3AgaGVyZSwgYnV0IHdlIGRvbid0IGJvdGhlciBkb2luZyBz
by4KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICAvLyBPdXRzaWRlIHRoZSBsb2NrLCBs
ZXQgdGhlIGRlc3RydWN0b3IgZm9yICd2YWx1ZV9ob2xkZXJzJyBkZWFsbG9jYXRlIHRoZQorICAg
IC8vIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlcy4KKyAgfQorCisgIHN0YXRpYyB2b2lkIE9u
VGhyZWFkRXhpdChEV09SRCB0aHJlYWRfaWQpIHsKKyAgICBHVEVTVF9DSEVDS18odGhyZWFkX2lk
ICE9IDApIDw8IDo6R2V0TGFzdEVycm9yKCk7CisgICAgc3RkOjp2ZWN0b3I8bGlua2VkX3B0cjxU
aHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZT4gPiB2YWx1ZV9ob2xkZXJzOworICAgIC8vIENsZWFu
IHVwIHRoZSBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzIGRhdGEgc3RydWN0dXJlIHdoaWxlIGhvbGRp
bmcgdGhlCisgICAgLy8gbG9jaywgYnV0IGRlZmVyIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgVGhy
ZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2VzLgorICAgIHsKKyAgICAgIE11dGV4TG9jayBsb2NrKCZt
dXRleF8pOworICAgICAgVGhyZWFkSWRUb1RocmVhZExvY2FscyogY29uc3QgdGhyZWFkX3RvX3Ro
cmVhZF9sb2NhbHMgPQorICAgICAgICAgIEdldFRocmVhZExvY2Fsc01hcExvY2tlZCgpOworICAg
ICAgVGhyZWFkSWRUb1RocmVhZExvY2Fsczo6aXRlcmF0b3IgdGhyZWFkX2xvY2FsX3BvcyA9Cisg
ICAgICAgICAgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmZpbmQodGhyZWFkX2lkKTsKKyAgICAg
IGlmICh0aHJlYWRfbG9jYWxfcG9zICE9IHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5lbmQoKSkg
eworICAgICAgICBUaHJlYWRMb2NhbFZhbHVlcyYgdGhyZWFkX2xvY2FsX3ZhbHVlcyA9IHRocmVh
ZF9sb2NhbF9wb3MtPnNlY29uZDsKKyAgICAgICAgZm9yIChUaHJlYWRMb2NhbFZhbHVlczo6aXRl
cmF0b3IgdmFsdWVfcG9zID0KKyAgICAgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMuYmVnaW4o
KTsKKyAgICAgICAgICAgIHZhbHVlX3BvcyAhPSB0aHJlYWRfbG9jYWxfdmFsdWVzLmVuZCgpOwor
ICAgICAgICAgICAgKyt2YWx1ZV9wb3MpIHsKKyAgICAgICAgICB2YWx1ZV9ob2xkZXJzLnB1c2hf
YmFjayh2YWx1ZV9wb3MtPnNlY29uZCk7CisgICAgICAgIH0KKyAgICAgICAgdGhyZWFkX3RvX3Ro
cmVhZF9sb2NhbHMtPmVyYXNlKHRocmVhZF9sb2NhbF9wb3MpOworICAgICAgfQorICAgIH0KKyAg
ICAvLyBPdXRzaWRlIHRoZSBsb2NrLCBsZXQgdGhlIGRlc3RydWN0b3IgZm9yICd2YWx1ZV9ob2xk
ZXJzJyBkZWFsbG9jYXRlIHRoZQorICAgIC8vIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlcy4K
KyAgfQorCisgcHJpdmF0ZToKKyAgLy8gSW4gYSBwYXJ0aWN1bGFyIHRocmVhZCwgbWFwcyBhIFRo
cmVhZExvY2FsIG9iamVjdCB0byBpdHMgdmFsdWUuCisgIHR5cGVkZWYgc3RkOjptYXA8Y29uc3Qg
VGhyZWFkTG9jYWxCYXNlKiwKKyAgICAgICAgICAgICAgICAgICBsaW5rZWRfcHRyPFRocmVhZExv
Y2FsVmFsdWVIb2xkZXJCYXNlPiA+IFRocmVhZExvY2FsVmFsdWVzOworICAvLyBTdG9yZXMgYWxs
IFRocmVhZElkVG9UaHJlYWRMb2NhbHMgaGF2aW5nIHZhbHVlcyBpbiBhIHRocmVhZCwgaW5kZXhl
ZCBieQorICAvLyB0aHJlYWQncyBJRC4KKyAgdHlwZWRlZiBzdGQ6Om1hcDxEV09SRCwgVGhyZWFk
TG9jYWxWYWx1ZXM+IFRocmVhZElkVG9UaHJlYWRMb2NhbHM7CisKKyAgLy8gSG9sZHMgdGhlIHRo
cmVhZCBpZCBhbmQgdGhyZWFkIGhhbmRsZSB0aGF0IHdlIHBhc3MgZnJvbQorICAvLyBTdGFydFdh
dGNoZXJUaHJlYWRGb3IgdG8gV2F0Y2hlclRocmVhZEZ1bmMuCisgIHR5cGVkZWYgc3RkOjpwYWly
PERXT1JELCBIQU5ETEU+IFRocmVhZElkQW5kSGFuZGxlOworCisgIHN0YXRpYyB2b2lkIFN0YXJ0
V2F0Y2hlclRocmVhZEZvcihEV09SRCB0aHJlYWRfaWQpIHsKKyAgICAvLyBUaGUgcmV0dXJuZWQg
aGFuZGxlIHdpbGwgYmUga2VwdCBpbiB0aHJlYWRfbWFwIGFuZCBjbG9zZWQgYnkKKyAgICAvLyB3
YXRjaGVyX3RocmVhZCBpbiBXYXRjaGVyVGhyZWFkRnVuYy4KKyAgICBIQU5ETEUgdGhyZWFkID0g
OjpPcGVuVGhyZWFkKFNZTkNIUk9OSVpFIHwgVEhSRUFEX1FVRVJZX0lORk9STUFUSU9OLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aHJlYWRfaWQpOworICAgIEdURVNUX0NIRUNLXyh0aHJlYWQgIT0gTlVM
TCk7CisgICAgLy8gV2UgbmVlZCB0byBwYXNzIGEgdmFsaWQgdGhyZWFkIElEIHBvaW50ZXIgaW50
byBDcmVhdGVUaHJlYWQgZm9yIGl0CisgICAgLy8gdG8gd29yayBjb3JyZWN0bHkgdW5kZXIgV2lu
OTguCisgICAgRFdPUkQgd2F0Y2hlcl90aHJlYWRfaWQ7CisgICAgSEFORExFIHdhdGNoZXJfdGhy
ZWFkID0gOjpDcmVhdGVUaHJlYWQoCisgICAgICAgIE5VTEwsICAgLy8gRGVmYXVsdCBzZWN1cml0
eS4KKyAgICAgICAgMCwgICAgICAvLyBEZWZhdWx0IHN0YWNrIHNpemUKKyAgICAgICAgJlRocmVh
ZExvY2FsUmVnaXN0cnlJbXBsOjpXYXRjaGVyVGhyZWFkRnVuYywKKyAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxMUFZPSUQ+KG5ldyBUaHJlYWRJZEFuZEhhbmRsZSh0aHJlYWRfaWQsIHRocmVhZCkp
LAorICAgICAgICBDUkVBVEVfU1VTUEVOREVELAorICAgICAgICAmd2F0Y2hlcl90aHJlYWRfaWQp
OworICAgIEdURVNUX0NIRUNLXyh3YXRjaGVyX3RocmVhZCAhPSBOVUxMKTsKKyAgICAvLyBHaXZl
IHRoZSB3YXRjaGVyIHRocmVhZCB0aGUgc2FtZSBwcmlvcml0eSBhcyBvdXJzIHRvIGF2b2lkIGJl
aW5nCisgICAgLy8gYmxvY2tlZCBieSBpdC4KKyAgICA6OlNldFRocmVhZFByaW9yaXR5KHdhdGNo
ZXJfdGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgOjpHZXRUaHJlYWRQcmlvcml0eSg6
OkdldEN1cnJlbnRUaHJlYWQoKSkpOworICAgIDo6UmVzdW1lVGhyZWFkKHdhdGNoZXJfdGhyZWFk
KTsKKyAgICA6OkNsb3NlSGFuZGxlKHdhdGNoZXJfdGhyZWFkKTsKKyAgfQorCisgIC8vIE1vbml0
b3JzIGV4aXQgZnJvbSBhIGdpdmVuIHRocmVhZCBhbmQgbm90aWZpZXMgdGhvc2UKKyAgLy8gVGhy
ZWFkSWRUb1RocmVhZExvY2FscyBhYm91dCB0aHJlYWQgdGVybWluYXRpb24uCisgIHN0YXRpYyBE
V09SRCBXSU5BUEkgV2F0Y2hlclRocmVhZEZ1bmMoTFBWT0lEIHBhcmFtKSB7CisgICAgY29uc3Qg
VGhyZWFkSWRBbmRIYW5kbGUqIHRhaCA9CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VGhyZWFkSWRBbmRIYW5kbGUqPihwYXJhbSk7CisgICAgR1RFU1RfQ0hFQ0tfKAorICAgICAgICA6
OldhaXRGb3JTaW5nbGVPYmplY3QodGFoLT5zZWNvbmQsIElORklOSVRFKSA9PSBXQUlUX09CSkVD
VF8wKTsKKyAgICBPblRocmVhZEV4aXQodGFoLT5maXJzdCk7CisgICAgOjpDbG9zZUhhbmRsZSh0
YWgtPnNlY29uZCk7CisgICAgZGVsZXRlIHRhaDsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIC8v
IFJldHVybnMgbWFwIG9mIHRocmVhZCBsb2NhbCBpbnN0YW5jZXMuCisgIHN0YXRpYyBUaHJlYWRJ
ZFRvVGhyZWFkTG9jYWxzKiBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKSB7CisgICAgbXV0ZXhf
LkFzc2VydEhlbGQoKTsKKyAgICBNZW1vcnlJc05vdERlYWxsb2NhdGVkIG1lbW9yeV9pc19ub3Rf
ZGVhbGxvY2F0ZWQ7CisgICAgc3RhdGljIFRocmVhZElkVG9UaHJlYWRMb2NhbHMqIG1hcCA9IG5l
dyBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzKCk7CisgICAgcmV0dXJuIG1hcDsKKyAgfQorCisgIC8v
IFByb3RlY3RzIGFjY2VzcyB0byBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKSBhbmQgaXRzIHJl
dHVybiB2YWx1ZS4KKyAgc3RhdGljIE11dGV4IG11dGV4XzsKKyAgLy8gUHJvdGVjdHMgYWNjZXNz
IHRvIEdldFRocmVhZE1hcExvY2tlZCgpIGFuZCBpdHMgcmV0dXJuIHZhbHVlLgorICBzdGF0aWMg
TXV0ZXggdGhyZWFkX21hcF9tdXRleF87Cit9OworCitNdXRleCBUaHJlYWRMb2NhbFJlZ2lzdHJ5
SW1wbDo6bXV0ZXhfKE11dGV4OjprU3RhdGljTXV0ZXgpOworTXV0ZXggVGhyZWFkTG9jYWxSZWdp
c3RyeUltcGw6OnRocmVhZF9tYXBfbXV0ZXhfKE11dGV4OjprU3RhdGljTXV0ZXgpOworCitUaHJl
YWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogVGhyZWFkTG9jYWxSZWdpc3RyeTo6R2V0VmFsdWVPbkN1
cnJlbnRUaHJlYWQoCisgICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9p
bnN0YW5jZSkgeworICByZXR1cm4gVGhyZWFkTG9jYWxSZWdpc3RyeUltcGw6OkdldFZhbHVlT25D
dXJyZW50VGhyZWFkKAorICAgICAgdGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKK30KKwordm9pZCBU
aHJlYWRMb2NhbFJlZ2lzdHJ5OjpPblRocmVhZExvY2FsRGVzdHJveWVkKAorICAgICAgY29uc3Qg
VGhyZWFkTG9jYWxCYXNlKiB0aHJlYWRfbG9jYWxfaW5zdGFuY2UpIHsKKyAgVGhyZWFkTG9jYWxS
ZWdpc3RyeUltcGw6Ok9uVGhyZWFkTG9jYWxEZXN0cm95ZWQodGhyZWFkX2xvY2FsX2luc3RhbmNl
KTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFICYmIEdURVNUX09TX1dJTkRP
V1MKIAogI2lmIEdURVNUX1VTRVNfUE9TSVhfUkUKIApAQCAtMTgwLDIwICs2ODgsMjAgQEAgYm9v
bCBJc0luU2V0KGNoYXIgY2gsIGNvbnN0IGNoYXIqIHN0cikgewogLy8gUmV0dXJucyB0cnVlIGlm
ZiBjaCBiZWxvbmdzIHRvIHRoZSBnaXZlbiBjbGFzc2lmaWNhdGlvbi4gIFVubGlrZQogLy8gc2lt
aWxhciBmdW5jdGlvbnMgaW4gPGN0eXBlLmg+LCB0aGVzZSBhcmVuJ3QgYWZmZWN0ZWQgYnkgdGhl
CiAvLyBjdXJyZW50IGxvY2FsZS4KLWJvb2wgSXNEaWdpdChjaGFyIGNoKSB7IHJldHVybiAnMCcg
PD0gY2ggJiYgY2ggPD0gJzknOyB9Ci1ib29sIElzUHVuY3QoY2hhciBjaCkgeworYm9vbCBJc0Fz
Y2lpRGlnaXQoY2hhciBjaCkgeyByZXR1cm4gJzAnIDw9IGNoICYmIGNoIDw9ICc5JzsgfQorYm9v
bCBJc0FzY2lpUHVuY3QoY2hhciBjaCkgewogICByZXR1cm4gSXNJblNldChjaCwgIl4tIVwiIyQl
JicoKSorLC4vOjs8PT4/QFtcXF1fYHt8fX4iKTsKIH0KIGJvb2wgSXNSZXBlYXQoY2hhciBjaCkg
eyByZXR1cm4gSXNJblNldChjaCwgIj8qKyIpOyB9Ci1ib29sIElzV2hpdGVTcGFjZShjaGFyIGNo
KSB7IHJldHVybiBJc0luU2V0KGNoLCAiIFxmXG5cclx0XHYiKTsgfQotYm9vbCBJc1dvcmRDaGFy
KGNoYXIgY2gpIHsKK2Jvb2wgSXNBc2NpaVdoaXRlU3BhY2UoY2hhciBjaCkgeyByZXR1cm4gSXNJ
blNldChjaCwgIiBcZlxuXHJcdFx2Iik7IH0KK2Jvb2wgSXNBc2NpaVdvcmRDaGFyKGNoYXIgY2gp
IHsKICAgcmV0dXJuICgnYScgPD0gY2ggJiYgY2ggPD0gJ3onKSB8fCAoJ0EnIDw9IGNoICYmIGNo
IDw9ICdaJykgfHwKICAgICAgICgnMCcgPD0gY2ggJiYgY2ggPD0gJzknKSB8fCBjaCA9PSAnXyc7
CiB9CiAKIC8vIFJldHVybnMgdHJ1ZSBpZmYgIlxcYyIgaXMgYSBzdXBwb3J0ZWQgZXNjYXBlIHNl
cXVlbmNlLgogYm9vbCBJc1ZhbGlkRXNjYXBlKGNoYXIgYykgewotICByZXR1cm4gKElzUHVuY3Qo
YykgfHwgSXNJblNldChjLCAiZERmbnJzU3R2d1ciKSk7CisgIHJldHVybiAoSXNBc2NpaVB1bmN0
KGMpIHx8IElzSW5TZXQoYywgImREZm5yc1N0dndXIikpOwogfQogCiAvLyBSZXR1cm5zIHRydWUg
aWZmIHRoZSBnaXZlbiBhdG9tIChzcGVjaWZpZWQgYnkgZXNjYXBlZCBhbmQgcGF0dGVybikKQEAg
LTIwMSwyNiArNzA5LDI2IEBAIGJvb2wgSXNWYWxpZEVzY2FwZShjaGFyIGMpIHsKIGJvb2wgQXRv
bU1hdGNoZXNDaGFyKGJvb2wgZXNjYXBlZCwgY2hhciBwYXR0ZXJuX2NoYXIsIGNoYXIgY2gpIHsK
ICAgaWYgKGVzY2FwZWQpIHsgIC8vICJcXHAiIHdoZXJlIHAgaXMgcGF0dGVybl9jaGFyLgogICAg
IHN3aXRjaCAocGF0dGVybl9jaGFyKSB7Ci0gICAgICBjYXNlICdkJzogcmV0dXJuIElzRGlnaXQo
Y2gpOwotICAgICAgY2FzZSAnRCc6IHJldHVybiAhSXNEaWdpdChjaCk7CisgICAgICBjYXNlICdk
JzogcmV0dXJuIElzQXNjaWlEaWdpdChjaCk7CisgICAgICBjYXNlICdEJzogcmV0dXJuICFJc0Fz
Y2lpRGlnaXQoY2gpOwogICAgICAgY2FzZSAnZic6IHJldHVybiBjaCA9PSAnXGYnOwogICAgICAg
Y2FzZSAnbic6IHJldHVybiBjaCA9PSAnXG4nOwogICAgICAgY2FzZSAncic6IHJldHVybiBjaCA9
PSAnXHInOwotICAgICAgY2FzZSAncyc6IHJldHVybiBJc1doaXRlU3BhY2UoY2gpOwotICAgICAg
Y2FzZSAnUyc6IHJldHVybiAhSXNXaGl0ZVNwYWNlKGNoKTsKKyAgICAgIGNhc2UgJ3MnOiByZXR1
cm4gSXNBc2NpaVdoaXRlU3BhY2UoY2gpOworICAgICAgY2FzZSAnUyc6IHJldHVybiAhSXNBc2Np
aVdoaXRlU3BhY2UoY2gpOwogICAgICAgY2FzZSAndCc6IHJldHVybiBjaCA9PSAnXHQnOwogICAg
ICAgY2FzZSAndic6IHJldHVybiBjaCA9PSAnXHYnOwotICAgICAgY2FzZSAndyc6IHJldHVybiBJ
c1dvcmRDaGFyKGNoKTsKLSAgICAgIGNhc2UgJ1cnOiByZXR1cm4gIUlzV29yZENoYXIoY2gpOwor
ICAgICAgY2FzZSAndyc6IHJldHVybiBJc0FzY2lpV29yZENoYXIoY2gpOworICAgICAgY2FzZSAn
Vyc6IHJldHVybiAhSXNBc2NpaVdvcmRDaGFyKGNoKTsKICAgICB9Ci0gICAgcmV0dXJuIElzUHVu
Y3QocGF0dGVybl9jaGFyKSAmJiBwYXR0ZXJuX2NoYXIgPT0gY2g7CisgICAgcmV0dXJuIElzQXNj
aWlQdW5jdChwYXR0ZXJuX2NoYXIpICYmIHBhdHRlcm5fY2hhciA9PSBjaDsKICAgfQogCiAgIHJl
dHVybiAocGF0dGVybl9jaGFyID09ICcuJyAmJiBjaCAhPSAnXG4nKSB8fCBwYXR0ZXJuX2NoYXIg
PT0gY2g7CiB9CiAKIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IFZhbGlkYXRlUmVnZXgoKSB0
byBmb3JtYXQgZXJyb3IgbWVzc2FnZXMuCi1TdHJpbmcgRm9ybWF0UmVnZXhTeW50YXhFcnJvcihj
b25zdCBjaGFyKiByZWdleCwgaW50IGluZGV4KSB7CitzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0
UmVnZXhTeW50YXhFcnJvcihjb25zdCBjaGFyKiByZWdleCwgaW50IGluZGV4KSB7CiAgIHJldHVy
biAoTWVzc2FnZSgpIDw8ICJTeW50YXggZXJyb3IgYXQgaW5kZXggIiA8PCBpbmRleAogICAgICAg
ICAgIDw8ICIgaW4gc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiBcIiIgPDwgcmVnZXggPDwgIlwi
OiAiKS5HZXRTdHJpbmcoKTsKIH0KQEAgLTIyOSw3ICs3MzcsNyBAQCBTdHJpbmcgRm9ybWF0UmVn
ZXhTeW50YXhFcnJvcihjb25zdCBjaGFyKiByZWdleCwgaW50IGluZGV4KSB7CiAvLyBvdGhlcndp
c2UgcmV0dXJucyB0cnVlLgogYm9vbCBWYWxpZGF0ZVJlZ2V4KGNvbnN0IGNoYXIqIHJlZ2V4KSB7
CiAgIGlmIChyZWdleCA9PSBOVUxMKSB7Ci0gICAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IGZp
eCB0aGUgc291cmNlIGZpbGUgbG9jYXRpb24gaW4gdGhlCisgICAgLy8gRklYTUU6IGZpeCB0aGUg
c291cmNlIGZpbGUgbG9jYXRpb24gaW4gdGhlCiAgICAgLy8gYXNzZXJ0aW9uIGZhaWx1cmVzIHRv
IG1hdGNoIHdoZXJlIHRoZSByZWdleCBpcyB1c2VkIGluIHVzZXIKICAgICAvLyBjb2RlLgogICAg
IEFERF9GQUlMVVJFKCkgPDwgIk5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxlIHJlZ3VsYXIgZXhw
cmVzc2lvbi4iOwpAQCAtNDIyLDYgKzkzMCwzNyBAQCB2b2lkIFJFOjpJbml0KGNvbnN0IGNoYXIq
IHJlZ2V4KSB7CiAKICNlbmRpZiAgLy8gR1RFU1RfVVNFU19QT1NJWF9SRQogCitjb25zdCBjaGFy
IGtVbmtub3duRmlsZVtdID0gInVua25vd24gZmlsZSI7CisKKy8vIEZvcm1hdHMgYSBzb3VyY2Ug
ZmlsZSBwYXRoIGFuZCBhIGxpbmUgbnVtYmVyIGFzIHRoZXkgd291bGQgYXBwZWFyCisvLyBpbiBh
biBlcnJvciBtZXNzYWdlIGZyb20gdGhlIGNvbXBpbGVyIHVzZWQgdG8gY29tcGlsZSB0aGlzIGNv
ZGUuCitHVEVTVF9BUElfIDo6c3RkOjpzdHJpbmcgRm9ybWF0RmlsZUxvY2F0aW9uKGNvbnN0IGNo
YXIqIGZpbGUsIGludCBsaW5lKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbGVfbmFtZShmaWxl
ID09IE5VTEwgPyBrVW5rbm93bkZpbGUgOiBmaWxlKTsKKworICBpZiAobGluZSA8IDApIHsKKyAg
ICByZXR1cm4gZmlsZV9uYW1lICsgIjoiOworICB9CisjaWZkZWYgX01TQ19WRVIKKyAgcmV0dXJu
IGZpbGVfbmFtZSArICIoIiArIFN0cmVhbWFibGVUb1N0cmluZyhsaW5lKSArICIpOiI7CisjZWxz
ZQorICByZXR1cm4gZmlsZV9uYW1lICsgIjoiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGxpbmUpICsg
IjoiOworI2VuZGlmICAvLyBfTVNDX1ZFUgorfQorCisvLyBGb3JtYXRzIGEgZmlsZSBsb2NhdGlv
biBmb3IgY29tcGlsZXItaW5kZXBlbmRlbnQgWE1MIG91dHB1dC4KKy8vIEFsdGhvdWdoIHRoaXMg
ZnVuY3Rpb24gaXMgbm90IHBsYXRmb3JtIGRlcGVuZGVudCwgd2UgcHV0IGl0IG5leHQgdG8KKy8v
IEZvcm1hdEZpbGVMb2NhdGlvbiBpbiBvcmRlciB0byBjb250cmFzdCB0aGUgdHdvIGZ1bmN0aW9u
cy4KKy8vIE5vdGUgdGhhdCBGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxvY2F0aW9uKCkg
ZG9lcyBOT1QgYXBwZW5kIGNvbG9uCisvLyB0byB0aGUgZmlsZSBsb2NhdGlvbiBpdCBwcm9kdWNl
cywgdW5saWtlIEZvcm1hdEZpbGVMb2NhdGlvbigpLgorR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5n
IEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oCisgICAgY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsZV9uYW1lKGZpbGUgPT0g
TlVMTCA/IGtVbmtub3duRmlsZSA6IGZpbGUpOworCisgIGlmIChsaW5lIDwgMCkKKyAgICByZXR1
cm4gZmlsZV9uYW1lOworICBlbHNlCisgICAgcmV0dXJuIGZpbGVfbmFtZSArICI6IiArIFN0cmVh
bWFibGVUb1N0cmluZyhsaW5lKTsKK30KIAogR1Rlc3RMb2c6OkdUZXN0TG9nKEdUZXN0TG9nU2V2
ZXJpdHkgc2V2ZXJpdHksIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKQogICAgIDogc2V2ZXJp
dHlfKHNldmVyaXR5KSB7CkBAIC00NDEsMjEgKzk4MCwxOSBAQCBHVGVzdExvZzo6fkdUZXN0TG9n
KCkgewogICAgIHBvc2l4OjpBYm9ydCgpOwogICB9CiB9CisKIC8vIERpc2FibGUgTWljcm9zb2Z0
IGRlcHJlY2F0aW9uIHdhcm5pbmdzIGZvciBQT1NJWCBmdW5jdGlvbnMgY2FsbGVkIGZyb20KIC8v
IHRoaXMgY2xhc3MgKGNyZWF0LCBkdXAsIGR1cDIsIGFuZCBjbG9zZSkKLSNpZmRlZiBfTVNDX1ZF
UgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDk5NikK
LSNlbmRpZiAgLy8gX01TQ19WRVIKK0dURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVTSF8o
KQogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNpZiBHVEVTVF9IQVNfU1RS
RUFNX1JFRElSRUNUSU9OCiAKIC8vIE9iamVjdCB0aGF0IGNhcHR1cmVzIGFuIG91dHB1dCBzdHJl
YW0gKHN0ZG91dC9zdGRlcnIpLgogY2xhc3MgQ2FwdHVyZWRTdHJlYW0gewogIHB1YmxpYzoKICAg
Ly8gVGhlIGN0b3IgcmVkaXJlY3RzIHRoZSBzdHJlYW0gdG8gYSB0ZW1wb3JhcnkgZmlsZS4KLSAg
Q2FwdHVyZWRTdHJlYW0oaW50IGZkKSA6IGZkXyhmZCksIHVuY2FwdHVyZWRfZmRfKGR1cChmZCkp
IHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisgIGV4cGxpY2l0IENhcHR1cmVkU3RyZWFtKGludCBm
ZCkgOiBmZF8oZmQpLCB1bmNhcHR1cmVkX2ZkXyhkdXAoZmQpKSB7CisjIGlmIEdURVNUX09TX1dJ
TkRPV1MKICAgICBjaGFyIHRlbXBfZGlyX3BhdGhbTUFYX1BBVEggKyAxXSA9IHsgJ1wwJyB9OyAg
Ly8gTk9MSU5UCiAgICAgY2hhciB0ZW1wX2ZpbGVfcGF0aFtNQVhfUEFUSCArIDFdID0geyAnXDAn
IH07ICAvLyBOT0xJTlQKIApAQCAtNDcwLDE0ICsxMDA3LDMzIEBAIGNsYXNzIENhcHR1cmVkU3Ry
ZWFtIHsKICAgICBHVEVTVF9DSEVDS18oY2FwdHVyZWRfZmQgIT0gLTEpIDw8ICJVbmFibGUgdG8g
b3BlbiB0ZW1wb3JhcnkgZmlsZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCB0ZW1wX2ZpbGVfcGF0aDsKICAgICBmaWxlbmFtZV8gPSB0ZW1wX2ZpbGVfcGF0aDsKLSNl
bHNlCi0gICAgLy8gVGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCBhIHRlc3QgaGFzIHdyaXRlIGFj
Y2VzcyB0byB0aGUKLSAgICAvLyBjdXJyZW50IGRpcmVjdG9yeSwgc28gd2UgY3JlYXRlIHRoZSB0
ZW1wb3JhcnkgZmlsZSBpbiB0aGUgL3RtcAotICAgIC8vIGRpcmVjdG9yeSBpbnN0ZWFkLgorIyBl
bHNlCisgICAgLy8gVGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCBhIHRlc3QgaGFzIHdyaXRlIGFj
Y2VzcyB0byB0aGUgY3VycmVudAorICAgIC8vIGRpcmVjdG9yeSwgc28gd2UgY3JlYXRlIHRoZSB0
ZW1wb3JhcnkgZmlsZSBpbiB0aGUgL3RtcCBkaXJlY3RvcnkKKyAgICAvLyBpbnN0ZWFkLiBXZSB1
c2UgL3RtcCBvbiBtb3N0IHN5c3RlbXMsIGFuZCAvc2RjYXJkIG9uIEFuZHJvaWQuCisgICAgLy8g
VGhhdCdzIGJlY2F1c2UgQW5kcm9pZCBkb2Vzbid0IGhhdmUgL3RtcC4KKyMgIGlmIEdURVNUX09T
X0xJTlVYX0FORFJPSUQKKyAgICAvLyBOb3RlOiBBbmRyb2lkIGFwcGxpY2F0aW9ucyBhcmUgZXhw
ZWN0ZWQgdG8gY2FsbCB0aGUgZnJhbWV3b3JrJ3MKKyAgICAvLyBDb250ZXh0LmdldEV4dGVybmFs
U3RvcmFnZURpcmVjdG9yeSgpIG1ldGhvZCB0aHJvdWdoIEpOSSB0byBnZXQKKyAgICAvLyB0aGUg
bG9jYXRpb24gb2YgdGhlIHdvcmxkLXdyaXRhYmxlIFNEIENhcmQgZGlyZWN0b3J5LiBIb3dldmVy
LAorICAgIC8vIHRoaXMgcmVxdWlyZXMgYSBDb250ZXh0IGhhbmRsZSwgd2hpY2ggY2Fubm90IGJl
IHJldHJpZXZlZAorICAgIC8vIGdsb2JhbGx5IGZyb20gbmF0aXZlIGNvZGUuIERvaW5nIHNvIGFs
c28gcHJlY2x1ZGVzIHJ1bm5pbmcgdGhlCisgICAgLy8gY29kZSBhcyBwYXJ0IG9mIGEgcmVndWxh
ciBzdGFuZGFsb25lIGV4ZWN1dGFibGUsIHdoaWNoIGRvZXNuJ3QKKyAgICAvLyBydW4gaW4gYSBE
YWx2aWsgcHJvY2VzcyAoZS5nLiB3aGVuIHJ1bm5pbmcgaXQgdGhyb3VnaCAnYWRiIHNoZWxsJyku
CisgICAgLy8KKyAgICAvLyBUaGUgbG9jYXRpb24gL3NkY2FyZCBpcyBkaXJlY3RseSBhY2Nlc3Np
YmxlIGZyb20gbmF0aXZlIGNvZGUKKyAgICAvLyBhbmQgaXMgdGhlIG9ubHkgbG9jYXRpb24gKHVu
b2ZmaWNpYWxseSkgc3VwcG9ydGVkIGJ5IHRoZSBBbmRyb2lkCisgICAgLy8gdGVhbS4gSXQncyBn
ZW5lcmFsbHkgYSBzeW1saW5rIHRvIHRoZSByZWFsIFNEIENhcmQgbW91bnQgcG9pbnQKKyAgICAv
LyB3aGljaCBjYW4gYmUgL21udC9zZGNhcmQsIC9tbnQvc2RjYXJkMCwgL3N5c3RlbS9tZWRpYS9z
ZGNhcmQsIG9yCisgICAgLy8gb3RoZXIgT0VNLWN1c3RvbWl6ZWQgbG9jYXRpb25zLiBOZXZlciBy
ZWx5IG9uIHRoZXNlLCBhbmQgYWx3YXlzCisgICAgLy8gdXNlIC9zZGNhcmQuCisgICAgY2hhciBu
YW1lX3RlbXBsYXRlW10gPSAiL3NkY2FyZC9ndGVzdF9jYXB0dXJlZF9zdHJlYW0uWFhYWFhYIjsK
KyMgIGVsc2UKICAgICBjaGFyIG5hbWVfdGVtcGxhdGVbXSA9ICIvdG1wL2NhcHR1cmVkX3N0cmVh
bS5YWFhYWFgiOworIyAgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYX0FORFJPSUQKICAgICBjb25z
dCBpbnQgY2FwdHVyZWRfZmQgPSBta3N0ZW1wKG5hbWVfdGVtcGxhdGUpOwogICAgIGZpbGVuYW1l
XyA9IG5hbWVfdGVtcGxhdGU7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYg
IC8vIEdURVNUX09TX1dJTkRPV1MKICAgICBmZmx1c2goTlVMTCk7CiAgICAgZHVwMihjYXB0dXJl
ZF9mZCwgZmRfKTsKICAgICBjbG9zZShjYXB0dXJlZF9mZCk7CkBAIC00ODcsNyArMTA0Myw3IEBA
IGNsYXNzIENhcHR1cmVkU3RyZWFtIHsKICAgICByZW1vdmUoZmlsZW5hbWVfLmNfc3RyKCkpOwog
ICB9CiAKLSAgU3RyaW5nIEdldENhcHR1cmVkU3RyaW5nKCkgeworICBzdGQ6OnN0cmluZyBHZXRD
YXB0dXJlZFN0cmluZygpIHsKICAgICBpZiAodW5jYXB0dXJlZF9mZF8gIT0gLTEpIHsKICAgICAg
IC8vIFJlc3RvcmVzIHRoZSBvcmlnaW5hbCBzdHJlYW0uCiAgICAgICBmZmx1c2goTlVMTCk7CkBA
IC00OTcsMTggKzEwNTMsMTIgQEAgY2xhc3MgQ2FwdHVyZWRTdHJlYW0gewogICAgIH0KIAogICAg
IEZJTEUqIGNvbnN0IGZpbGUgPSBwb3NpeDo6Rk9wZW4oZmlsZW5hbWVfLmNfc3RyKCksICJyIik7
Ci0gICAgY29uc3QgU3RyaW5nIGNvbnRlbnQgPSBSZWFkRW50aXJlRmlsZShmaWxlKTsKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyBjb250ZW50ID0gUmVhZEVudGlyZUZpbGUoZmlsZSk7CiAgICAgcG9z
aXg6OkZDbG9zZShmaWxlKTsKICAgICByZXR1cm4gY29udGVudDsKICAgfQogCiAgcHJpdmF0ZToK
LSAgLy8gUmVhZHMgdGhlIGVudGlyZSBjb250ZW50IG9mIGEgZmlsZSBhcyBhIFN0cmluZy4KLSAg
c3RhdGljIFN0cmluZyBSZWFkRW50aXJlRmlsZShGSUxFKiBmaWxlKTsKLQotICAvLyBSZXR1cm5z
IHRoZSBzaXplIChpbiBieXRlcykgb2YgYSBmaWxlLgotICBzdGF0aWMgc2l6ZV90IEdldEZpbGVT
aXplKEZJTEUqIGZpbGUpOwotCiAgIGNvbnN0IGludCBmZF87ICAvLyBBIHN0cmVhbSB0byBjYXB0
dXJlLgogICBpbnQgdW5jYXB0dXJlZF9mZF87CiAgIC8vIE5hbWUgb2YgdGhlIHRlbXBvcmFyeSBm
aWxlIGhvbGRpbmcgdGhlIHN0ZGVyciBvdXRwdXQuCkBAIC01MTcsNDQgKzEwNjcsMTQgQEAgY2xh
c3MgQ2FwdHVyZWRTdHJlYW0gewogICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKENh
cHR1cmVkU3RyZWFtKTsKIH07CiAKLS8vIFJldHVybnMgdGhlIHNpemUgKGluIGJ5dGVzKSBvZiBh
IGZpbGUuCi1zaXplX3QgQ2FwdHVyZWRTdHJlYW06OkdldEZpbGVTaXplKEZJTEUqIGZpbGUpIHsK
LSAgZnNlZWsoZmlsZSwgMCwgU0VFS19FTkQpOwotICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90
PihmdGVsbChmaWxlKSk7Ci19Ci0KLS8vIFJlYWRzIHRoZSBlbnRpcmUgY29udGVudCBvZiBhIGZp
bGUgYXMgYSBzdHJpbmcuCi1TdHJpbmcgQ2FwdHVyZWRTdHJlYW06OlJlYWRFbnRpcmVGaWxlKEZJ
TEUqIGZpbGUpIHsKLSAgY29uc3Qgc2l6ZV90IGZpbGVfc2l6ZSA9IEdldEZpbGVTaXplKGZpbGUp
OwotICBjaGFyKiBjb25zdCBidWZmZXIgPSBuZXcgY2hhcltmaWxlX3NpemVdOwotCi0gIHNpemVf
dCBieXRlc19sYXN0X3JlYWQgPSAwOyAgLy8gIyBvZiBieXRlcyByZWFkIGluIHRoZSBsYXN0IGZy
ZWFkKCkKLSAgc2l6ZV90IGJ5dGVzX3JlYWQgPSAwOyAgICAgICAvLyAjIG9mIGJ5dGVzIHJlYWQg
c28gZmFyCi0KLSAgZnNlZWsoZmlsZSwgMCwgU0VFS19TRVQpOwotCi0gIC8vIEtlZXBzIHJlYWRp
bmcgdGhlIGZpbGUgdW50aWwgd2UgY2Fubm90IHJlYWQgZnVydGhlciBvciB0aGUKLSAgLy8gcHJl
LWRldGVybWluZWQgZmlsZSBzaXplIGlzIHJlYWNoZWQuCi0gIGRvIHsKLSAgICBieXRlc19sYXN0
X3JlYWQgPSBmcmVhZChidWZmZXIrYnl0ZXNfcmVhZCwgMSwgZmlsZV9zaXplLWJ5dGVzX3JlYWQs
IGZpbGUpOwotICAgIGJ5dGVzX3JlYWQgKz0gYnl0ZXNfbGFzdF9yZWFkOwotICB9IHdoaWxlIChi
eXRlc19sYXN0X3JlYWQgPiAwICYmIGJ5dGVzX3JlYWQgPCBmaWxlX3NpemUpOwotCi0gIGNvbnN0
IFN0cmluZyBjb250ZW50KGJ1ZmZlciwgYnl0ZXNfcmVhZCk7Ci0gIGRlbGV0ZVtdIGJ1ZmZlcjsK
LQotICByZXR1cm4gY29udGVudDsKLX0KLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5p
bmcocG9wKQotI2VuZGlmICAvLyBfTVNDX1ZFUgorR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRF
RF9QT1BfKCkKIAogc3RhdGljIENhcHR1cmVkU3RyZWFtKiBnX2NhcHR1cmVkX3N0ZGVyciA9IE5V
TEw7CiBzdGF0aWMgQ2FwdHVyZWRTdHJlYW0qIGdfY2FwdHVyZWRfc3Rkb3V0ID0gTlVMTDsKIAog
Ly8gU3RhcnRzIGNhcHR1cmluZyBhbiBvdXRwdXQgc3RyZWFtIChzdGRvdXQvc3RkZXJyKS4KLXZv
aWQgQ2FwdHVyZVN0cmVhbShpbnQgZmQsIGNvbnN0IGNoYXIqIHN0cmVhbV9uYW1lLCBDYXB0dXJl
ZFN0cmVhbSoqIHN0cmVhbSkgeworc3RhdGljIHZvaWQgQ2FwdHVyZVN0cmVhbShpbnQgZmQsIGNv
bnN0IGNoYXIqIHN0cmVhbV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICBDYXB0dXJl
ZFN0cmVhbSoqIHN0cmVhbSkgewogICBpZiAoKnN0cmVhbSAhPSBOVUxMKSB7CiAgICAgR1RFU1Rf
TE9HXyhGQVRBTCkgPDwgIk9ubHkgb25lICIgPDwgc3RyZWFtX25hbWUKICAgICAgICAgICAgICAg
ICAgICAgICA8PCAiIGNhcHR1cmVyIGNhbiBleGlzdCBhdCBhIHRpbWUuIjsKQEAgLTU2Myw4ICsx
MDgzLDggQEAgdm9pZCBDYXB0dXJlU3RyZWFtKGludCBmZCwgY29uc3QgY2hhciogc3RyZWFtX25h
bWUsIENhcHR1cmVkU3RyZWFtKiogc3RyZWFtKSB7CiB9CiAKIC8vIFN0b3BzIGNhcHR1cmluZyB0
aGUgb3V0cHV0IHN0cmVhbSBhbmQgcmV0dXJucyB0aGUgY2FwdHVyZWQgc3RyaW5nLgotU3RyaW5n
IEdldENhcHR1cmVkU3RyZWFtKENhcHR1cmVkU3RyZWFtKiogY2FwdHVyZWRfc3RyZWFtKSB7Ci0g
IGNvbnN0IFN0cmluZyBjb250ZW50ID0gKCpjYXB0dXJlZF9zdHJlYW0pLT5HZXRDYXB0dXJlZFN0
cmluZygpOworc3RhdGljIHN0ZDo6c3RyaW5nIEdldENhcHR1cmVkU3RyZWFtKENhcHR1cmVkU3Ry
ZWFtKiogY2FwdHVyZWRfc3RyZWFtKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvbnRlbnQgPSAo
KmNhcHR1cmVkX3N0cmVhbSktPkdldENhcHR1cmVkU3RyaW5nKCk7CiAKICAgZGVsZXRlICpjYXB0
dXJlZF9zdHJlYW07CiAgICpjYXB0dXJlZF9zdHJlYW0gPSBOVUxMOwpAQCAtNTgzLDIxICsxMTAz
LDc5IEBAIHZvaWQgQ2FwdHVyZVN0ZGVycigpIHsKIH0KIAogLy8gU3RvcHMgY2FwdHVyaW5nIHN0
ZG91dCBhbmQgcmV0dXJucyB0aGUgY2FwdHVyZWQgc3RyaW5nLgotU3RyaW5nIEdldENhcHR1cmVk
U3Rkb3V0KCkgeyByZXR1cm4gR2V0Q2FwdHVyZWRTdHJlYW0oJmdfY2FwdHVyZWRfc3Rkb3V0KTsg
fQorc3RkOjpzdHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKSB7CisgIHJldHVybiBHZXRDYXB0dXJl
ZFN0cmVhbSgmZ19jYXB0dXJlZF9zdGRvdXQpOworfQogCiAvLyBTdG9wcyBjYXB0dXJpbmcgc3Rk
ZXJyIGFuZCByZXR1cm5zIHRoZSBjYXB0dXJlZCBzdHJpbmcuCi1TdHJpbmcgR2V0Q2FwdHVyZWRT
dGRlcnIoKSB7IHJldHVybiBHZXRDYXB0dXJlZFN0cmVhbSgmZ19jYXB0dXJlZF9zdGRlcnIpOyB9
CitzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0ZGVycigpIHsKKyAgcmV0dXJuIEdldENhcHR1cmVk
U3RyZWFtKCZnX2NhcHR1cmVkX3N0ZGVycik7Cit9CiAKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NU
UkVBTV9SRURJUkVDVElPTl8KKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElP
TgorCisKKworCisKK3NpemVfdCBHZXRGaWxlU2l6ZShGSUxFKiBmaWxlKSB7CisgIGZzZWVrKGZp
bGUsIDAsIFNFRUtfRU5EKTsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oZnRlbGwoZmls
ZSkpOworfQorCitzdGQ6OnN0cmluZyBSZWFkRW50aXJlRmlsZShGSUxFKiBmaWxlKSB7CisgIGNv
bnN0IHNpemVfdCBmaWxlX3NpemUgPSBHZXRGaWxlU2l6ZShmaWxlKTsKKyAgY2hhciogY29uc3Qg
YnVmZmVyID0gbmV3IGNoYXJbZmlsZV9zaXplXTsKKworICBzaXplX3QgYnl0ZXNfbGFzdF9yZWFk
ID0gMDsgIC8vICMgb2YgYnl0ZXMgcmVhZCBpbiB0aGUgbGFzdCBmcmVhZCgpCisgIHNpemVfdCBi
eXRlc19yZWFkID0gMDsgICAgICAgLy8gIyBvZiBieXRlcyByZWFkIHNvIGZhcgorCisgIGZzZWVr
KGZpbGUsIDAsIFNFRUtfU0VUKTsKKworICAvLyBLZWVwcyByZWFkaW5nIHRoZSBmaWxlIHVudGls
IHdlIGNhbm5vdCByZWFkIGZ1cnRoZXIgb3IgdGhlCisgIC8vIHByZS1kZXRlcm1pbmVkIGZpbGUg
c2l6ZSBpcyByZWFjaGVkLgorICBkbyB7CisgICAgYnl0ZXNfbGFzdF9yZWFkID0gZnJlYWQoYnVm
ZmVyK2J5dGVzX3JlYWQsIDEsIGZpbGVfc2l6ZS1ieXRlc19yZWFkLCBmaWxlKTsKKyAgICBieXRl
c19yZWFkICs9IGJ5dGVzX2xhc3RfcmVhZDsKKyAgfSB3aGlsZSAoYnl0ZXNfbGFzdF9yZWFkID4g
MCAmJiBieXRlc19yZWFkIDwgZmlsZV9zaXplKTsKKworICBjb25zdCBzdGQ6OnN0cmluZyBjb250
ZW50KGJ1ZmZlciwgYnl0ZXNfcmVhZCk7CisgIGRlbGV0ZVtdIGJ1ZmZlcjsKKworICByZXR1cm4g
Y29udGVudDsKK30KIAogI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCitzdGF0aWMgY29uc3Qgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+KiBnX2luamVjdGVkX3Rlc3RfYXJndnMgPSBOVUxMOyAgLy8g
T3duZWQuCiAKLS8vIEEgY29weSBvZiBhbGwgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4gIFNldCBi
eSBJbml0R29vZ2xlVGVzdCgpLgotOjpzdGQ6OnZlY3RvcjxTdHJpbmc+IGdfYXJndnM7CitzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0SW5qZWN0YWJsZUFyZ3ZzKCkgeworICBpZiAoZ19pbmpl
Y3RlZF90ZXN0X2FyZ3ZzICE9IE5VTEwpIHsKKyAgICByZXR1cm4gKmdfaW5qZWN0ZWRfdGVzdF9h
cmd2czsKKyAgfQorICByZXR1cm4gR2V0QXJndnMoKTsKK30KKwordm9pZCBTZXRJbmplY3RhYmxl
QXJndnMoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiBuZXdfYXJndnMpIHsKKyAgaWYg
KGdfaW5qZWN0ZWRfdGVzdF9hcmd2cyAhPSBuZXdfYXJndnMpIGRlbGV0ZSBnX2luamVjdGVkX3Rl
c3RfYXJndnM7CisgIGdfaW5qZWN0ZWRfdGVzdF9hcmd2cyA9IG5ld19hcmd2czsKK30KIAotLy8g
UmV0dXJucyB0aGUgY29tbWFuZCBsaW5lIGFzIGEgdmVjdG9yIG9mIHN0cmluZ3MuCi1jb25zdCA6
OnN0ZDo6dmVjdG9yPFN0cmluZz4mIEdldEFyZ3ZzKCkgeyByZXR1cm4gZ19hcmd2czsgfQordm9p
ZCBTZXRJbmplY3RhYmxlQXJndnMoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBuZXdf
YXJndnMpIHsKKyAgU2V0SW5qZWN0YWJsZUFyZ3ZzKAorICAgICAgbmV3IHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPihuZXdfYXJndnMuYmVnaW4oKSwgbmV3X2FyZ3ZzLmVuZCgpKSk7Cit9CisKKyNp
ZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwordm9pZCBTZXRJbmplY3RhYmxlQXJndnMoY29uc3Qg
c3RkOjp2ZWN0b3I8IDo6c3RyaW5nPiYgbmV3X2FyZ3ZzKSB7CisgIFNldEluamVjdGFibGVBcmd2
cygKKyAgICAgIG5ldyBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4obmV3X2FyZ3ZzLmJlZ2luKCks
IG5ld19hcmd2cy5lbmQoKSkpOworfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklO
RwogCit2b2lkIENsZWFySW5qZWN0YWJsZUFyZ3ZzKCkgeworICBkZWxldGUgZ19pbmplY3RlZF90
ZXN0X2FyZ3ZzOworICBnX2luamVjdGVkX3Rlc3RfYXJndnMgPSBOVUxMOworfQogI2VuZGlmICAv
LyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCiAjaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKQEAg
LTYxMiwxMyArMTE5MCwxMyBAQCB2b2lkIEFib3J0KCkgewogLy8gUmV0dXJucyB0aGUgbmFtZSBv
ZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgY29ycmVzcG9uZGluZyB0byB0aGUKIC8vIGdpdmVu
IGZsYWcuICBGb3IgZXhhbXBsZSwgRmxhZ1RvRW52VmFyKCJmb28iKSB3aWxsIHJldHVybgogLy8g
IkdURVNUX0ZPTyIgaW4gdGhlIG9wZW4tc291cmNlIHZlcnNpb24uCi1zdGF0aWMgU3RyaW5nIEZs
YWdUb0VudlZhcihjb25zdCBjaGFyKiBmbGFnKSB7Ci0gIGNvbnN0IFN0cmluZyBmdWxsX2ZsYWcg
PQorc3RhdGljIHN0ZDo6c3RyaW5nIEZsYWdUb0VudlZhcihjb25zdCBjaGFyKiBmbGFnKSB7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGZ1bGxfZmxhZyA9CiAgICAgICAoTWVzc2FnZSgpIDw8IEdURVNU
X0ZMQUdfUFJFRklYXyA8PCBmbGFnKS5HZXRTdHJpbmcoKTsKIAogICBNZXNzYWdlIGVudl92YXI7
CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGZ1bGxfZmxhZy5sZW5ndGgoKTsgaSsrKSB7Ci0g
ICAgZW52X3ZhciA8PCBzdGF0aWNfY2FzdDxjaGFyPih0b3VwcGVyKGZ1bGxfZmxhZy5jX3N0cigp
W2ldKSk7CisgICAgZW52X3ZhciA8PCBUb1VwcGVyKGZ1bGxfZmxhZy5jX3N0cigpW2ldKTsKICAg
fQogCiAgIHJldHVybiBlbnZfdmFyLkdldFN0cmluZygpOwpAQCAtNjcwLDE3ICsxMjQ4LDI0IEBA
IGJvb2wgUGFyc2VJbnQzMihjb25zdCBNZXNzYWdlJiBzcmNfdGV4dCwgY29uc3QgY2hhciogc3Ry
LCBJbnQzMiogdmFsdWUpIHsKIC8vCiAvLyBUaGUgdmFsdWUgaXMgY29uc2lkZXJlZCB0cnVlIGlm
ZiBpdCdzIG5vdCAiMCIuCiBib29sIEJvb2xGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywg
Ym9vbCBkZWZhdWx0X3ZhbHVlKSB7Ci0gIGNvbnN0IFN0cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52
VmFyKGZsYWcpOworI2lmIGRlZmluZWQoR1RFU1RfR0VUX0JPT0xfRlJPTV9FTlZfKQorICByZXR1
cm4gR1RFU1RfR0VUX0JPT0xfRlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOworI2Vsc2UK
KyAgY29uc3Qgc3RkOjpzdHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFnKTsKICAgY29u
c3QgY2hhciogY29uc3Qgc3RyaW5nX3ZhbHVlID0gcG9zaXg6OkdldEVudihlbnZfdmFyLmNfc3Ry
KCkpOwogICByZXR1cm4gc3RyaW5nX3ZhbHVlID09IE5VTEwgPwogICAgICAgZGVmYXVsdF92YWx1
ZSA6IHN0cmNtcChzdHJpbmdfdmFsdWUsICIwIikgIT0gMDsKKyNlbmRpZiAgLy8gZGVmaW5lZChH
VEVTVF9HRVRfQk9PTF9GUk9NX0VOVl8pCiB9CiAKIC8vIFJlYWRzIGFuZCByZXR1cm5zIGEgMzIt
Yml0IGludGVnZXIgc3RvcmVkIGluIHRoZSBlbnZpcm9ubWVudAogLy8gdmFyaWFibGUgY29ycmVz
cG9uZGluZyB0byB0aGUgZ2l2ZW4gZmxhZzsgaWYgaXQgaXNuJ3Qgc2V0IG9yCiAvLyBkb2Vzbid0
IHJlcHJlc2VudCBhIHZhbGlkIDMyLWJpdCBpbnRlZ2VyLCByZXR1cm5zIGRlZmF1bHRfdmFsdWUu
CiBJbnQzMiBJbnQzMkZyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBJbnQzMiBkZWZhdWx0
X3ZhbHVlKSB7Ci0gIGNvbnN0IFN0cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52VmFyKGZsYWcpOwor
I2lmIGRlZmluZWQoR1RFU1RfR0VUX0lOVDMyX0ZST01fRU5WXykKKyAgcmV0dXJuIEdURVNUX0dF
VF9JTlQzMl9GUk9NX0VOVl8oZmxhZywgZGVmYXVsdF92YWx1ZSk7CisjZWxzZQorICBjb25zdCBz
dGQ6OnN0cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52VmFyKGZsYWcpOwogICBjb25zdCBjaGFyKiBj
b25zdCBzdHJpbmdfdmFsdWUgPSBwb3NpeDo6R2V0RW52KGVudl92YXIuY19zdHIoKSk7CiAgIGlm
IChzdHJpbmdfdmFsdWUgPT0gTlVMTCkgewogICAgIC8vIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJs
ZSBpcyBub3Qgc2V0LgpAQCAtNjk3LDE0ICsxMjgyLDM2IEBAIEludDMyIEludDMyRnJvbUdUZXN0
RW52KGNvbnN0IGNoYXIqIGZsYWcsIEludDMyIGRlZmF1bHRfdmFsdWUpIHsKICAgfQogCiAgIHJl
dHVybiByZXN1bHQ7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfR0VUX0lOVDMyX0ZST01fRU5W
XykKK30KKworLy8gQXMgYSBzcGVjaWFsIGNhc2UgZm9yIHRoZSAnb3V0cHV0JyBmbGFnLCBpZiBH
VEVTVF9PVVRQVVQgaXMgbm90CisvLyBzZXQsIHdlIGxvb2sgZm9yIFhNTF9PVVRQVVRfRklMRSwg
d2hpY2ggaXMgc2V0IGJ5IHRoZSBCYXplbCBidWlsZAorLy8gc3lzdGVtLiAgVGhlIHZhbHVlIG9m
IFhNTF9PVVRQVVRfRklMRSBpcyBhIGZpbGVuYW1lIHdpdGhvdXQgdGhlCisvLyAieG1sOiIgcHJl
Zml4IG9mIEdURVNUX09VVFBVVC4KKy8vIE5vdGUgdGhhdCB0aGlzIGlzIG1lYW50IHRvIGJlIGNh
bGxlZCBhdCB0aGUgY2FsbCBzaXRlIHNvIGl0IGRvZXMKKy8vIG5vdCBjaGVjayB0aGF0IHRoZSBm
bGFnIGlzICdvdXRwdXQnCisvLyBJbiBlc3NlbmNlIHRoaXMgY2hlY2tzIGFuIGVudiB2YXJpYWJs
ZSBjYWxsZWQgWE1MX09VVFBVVF9GSUxFCisvLyBhbmQgaWYgaXQgaXMgc2V0IHdlIHByZXBlbmQg
InhtbDoiIHRvIGl0cyB2YWx1ZSwgaWYgaXQgbm90IHNldCB3ZSByZXR1cm4gIiIKK3N0ZDo6c3Ry
aW5nIE91dHB1dEZsYWdBbHNvQ2hlY2tFbnZWYXIoKXsKKyAgc3RkOjpzdHJpbmcgZGVmYXVsdF92
YWx1ZV9mb3Jfb3V0cHV0X2ZsYWcgPSAiIjsKKyAgY29uc3QgY2hhciogeG1sX291dHB1dF9maWxl
X2VudiA9IHBvc2l4OjpHZXRFbnYoIlhNTF9PVVRQVVRfRklMRSIpOworICBpZiAoTlVMTCAhPSB4
bWxfb3V0cHV0X2ZpbGVfZW52KSB7CisgICAgZGVmYXVsdF92YWx1ZV9mb3Jfb3V0cHV0X2ZsYWcg
PSBzdGQ6OnN0cmluZygieG1sOiIpICsgeG1sX291dHB1dF9maWxlX2VudjsKKyAgfQorICByZXR1
cm4gZGVmYXVsdF92YWx1ZV9mb3Jfb3V0cHV0X2ZsYWc7CiB9CiAKIC8vIFJlYWRzIGFuZCByZXR1
cm5zIHRoZSBzdHJpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgY29ycmVzcG9uZGluZyB0bwogLy8g
dGhlIGdpdmVuIGZsYWc7IGlmIGl0J3Mgbm90IHNldCwgcmV0dXJucyBkZWZhdWx0X3ZhbHVlLgog
Y29uc3QgY2hhciogU3RyaW5nRnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIGNvbnN0IGNo
YXIqIGRlZmF1bHRfdmFsdWUpIHsKLSAgY29uc3QgU3RyaW5nIGVudl92YXIgPSBGbGFnVG9FbnZW
YXIoZmxhZyk7CisjaWYgZGVmaW5lZChHVEVTVF9HRVRfU1RSSU5HX0ZST01fRU5WXykKKyAgcmV0
dXJuIEdURVNUX0dFVF9TVFJJTkdfRlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOworI2Vs
c2UKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZhcihmbGFnKTsKICAg
Y29uc3QgY2hhciogY29uc3QgdmFsdWUgPSBwb3NpeDo6R2V0RW52KGVudl92YXIuY19zdHIoKSk7
CiAgIHJldHVybiB2YWx1ZSA9PSBOVUxMID8gZGVmYXVsdF92YWx1ZSA6IHZhbHVlOworI2VuZGlm
ICAvLyBkZWZpbmVkKEdURVNUX0dFVF9TVFJJTkdfRlJPTV9FTlZfKQogfQogCiB9ICAvLyBuYW1l
c3BhY2UgaW50ZXJuYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9n
dGVzdC1wcmludGVycy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC1wcmlu
dGVycy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kZTRkMjQ1ZTlmYzg4OTdhZjIxMzc2NzlkOTEzZDY2NWZkODQz
NmUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0
LXByaW50ZXJzLmNjCkBAIC0wLDAgKzEsNDU3IEBACisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xl
IEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
Ky8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gR29vZ2xlIFRlc3QgLSBUaGUgR29vZ2xlIEMrKyBU
ZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yaworLy8KKy8vIFRoaXMgZmlsZSBpbXBsZW1lbnRz
IGEgdW5pdmVyc2FsIHZhbHVlIHByaW50ZXIgdGhhdCBjYW4gcHJpbnQgYQorLy8gdmFsdWUgb2Yg
YW55IHR5cGUgVDoKKy8vCisvLyAgIHZvaWQgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2Fs
UHJpbnRlcjxUPjo6UHJpbnQodmFsdWUsIG9zdHJlYW1fcHRyKTsKKy8vCisvLyBJdCB1c2VzIHRo
ZSA8PCBvcGVyYXRvciB3aGVuIHBvc3NpYmxlLCBhbmQgcHJpbnRzIHRoZSBieXRlcyBpbiB0aGUK
Ky8vIG9iamVjdCBvdGhlcndpc2UuICBBIHVzZXIgY2FuIG92ZXJyaWRlIGl0cyBiZWhhdmlvciBm
b3IgYSBjbGFzcworLy8gdHlwZSBGb28gYnkgZGVmaW5pbmcgZWl0aGVyIG9wZXJhdG9yPDwoOjpz
dGQ6Om9zdHJlYW0mLCBjb25zdCBGb28mKQorLy8gb3Igdm9pZCBQcmludFRvKGNvbnN0IEZvbyYs
IDo6c3RkOjpvc3RyZWFtKikgaW4gdGhlIG5hbWVzcGFjZSB0aGF0CisvLyBkZWZpbmVzIEZvby4K
KworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXByaW50ZXJzLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4K
KyNpbmNsdWRlIDxjY3R5cGU+CisjaW5jbHVkZSA8Y3djaGFyPgorI2luY2x1ZGUgPG9zdHJlYW0+
ICAvLyBOT0xJTlQKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtcG9ydC5oIgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKworbmFt
ZXNwYWNlIHRlc3RpbmcgeworCituYW1lc3BhY2UgeworCit1c2luZyA6OnN0ZDo6b3N0cmVhbTsK
KworLy8gUHJpbnRzIGEgc2VnbWVudCBvZiBieXRlcyBpbiB0aGUgZ2l2ZW4gb2JqZWN0LgorR1RF
U1RfQVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8KK0dURVNUX0FUVFJJQlVURV9OT19TQU5J
VElaRV9BRERSRVNTXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KK3ZvaWQg
UHJpbnRCeXRlU2VnbWVudEluT2JqZWN0VG8oY29uc3QgdW5zaWduZWQgY2hhciogb2JqX2J5dGVz
LCBzaXplX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBj
b3VudCwgb3N0cmVhbSogb3MpIHsKKyAgY2hhciB0ZXh0WzVdID0gIiI7CisgIGZvciAoc2l6ZV90
IGkgPSAwOyBpICE9IGNvdW50OyBpKyspIHsKKyAgICBjb25zdCBzaXplX3QgaiA9IHN0YXJ0ICsg
aTsKKyAgICBpZiAoaSAhPSAwKSB7CisgICAgICAvLyBPcmdhbml6ZXMgdGhlIGJ5dGVzIGludG8g
Z3JvdXBzIG9mIDIgZm9yIGVhc3kgcGFyc2luZyBieQorICAgICAgLy8gaHVtYW4uCisgICAgICBp
ZiAoKGogJSAyKSA9PSAwKQorICAgICAgICAqb3MgPDwgJyAnOworICAgICAgZWxzZQorICAgICAg
ICAqb3MgPDwgJy0nOworICAgIH0KKyAgICBHVEVTVF9TTlBSSU5URl8odGV4dCwgc2l6ZW9mKHRl
eHQpLCAiJTAyWCIsIG9ial9ieXRlc1tqXSk7CisgICAgKm9zIDw8IHRleHQ7CisgIH0KK30KKwor
Ly8gUHJpbnRzIHRoZSBieXRlcyBpbiB0aGUgZ2l2ZW4gdmFsdWUgdG8gdGhlIGdpdmVuIG9zdHJl
YW0uCit2b2lkIFByaW50Qnl0ZXNJbk9iamVjdFRvSW1wbChjb25zdCB1bnNpZ25lZCBjaGFyKiBv
YmpfYnl0ZXMsIHNpemVfdCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9z
dHJlYW0qIG9zKSB7CisgIC8vIFRlbGxzIHRoZSB1c2VyIGhvdyBiaWcgdGhlIG9iamVjdCBpcy4K
KyAgKm9zIDw8IGNvdW50IDw8ICItYnl0ZSBvYmplY3QgPCI7CisKKyAgY29uc3Qgc2l6ZV90IGtU
aHJlc2hvbGQgPSAxMzI7CisgIGNvbnN0IHNpemVfdCBrQ2h1bmtTaXplID0gNjQ7CisgIC8vIElm
IHRoZSBvYmplY3Qgc2l6ZSBpcyBiaWdnZXIgdGhhbiBrVGhyZXNob2xkLCB3ZSdsbCBoYXZlIHRv
IG9taXQKKyAgLy8gc29tZSBkZXRhaWxzIGJ5IHByaW50aW5nIG9ubHkgdGhlIGZpcnN0IGFuZCB0
aGUgbGFzdCBrQ2h1bmtTaXplCisgIC8vIGJ5dGVzLgorICAvLyBGSVhNRTogbGV0IHRoZSB1c2Vy
IGNvbnRyb2wgdGhlIHRocmVzaG9sZCB1c2luZyBhIGZsYWcuCisgIGlmIChjb3VudCA8IGtUaHJl
c2hvbGQpIHsKKyAgICBQcmludEJ5dGVTZWdtZW50SW5PYmplY3RUbyhvYmpfYnl0ZXMsIDAsIGNv
dW50LCBvcyk7CisgIH0gZWxzZSB7CisgICAgUHJpbnRCeXRlU2VnbWVudEluT2JqZWN0VG8ob2Jq
X2J5dGVzLCAwLCBrQ2h1bmtTaXplLCBvcyk7CisgICAgKm9zIDw8ICIgLi4uICI7CisgICAgLy8g
Um91bmRzIHVwIHRvIDItYnl0ZSBib3VuZGFyeS4KKyAgICBjb25zdCBzaXplX3QgcmVzdW1lX3Bv
cyA9IChjb3VudCAtIGtDaHVua1NpemUgKyAxKS8yKjI7CisgICAgUHJpbnRCeXRlU2VnbWVudElu
T2JqZWN0VG8ob2JqX2J5dGVzLCByZXN1bWVfcG9zLCBjb3VudCAtIHJlc3VtZV9wb3MsIG9zKTsK
KyAgfQorICAqb3MgPDwgIj4iOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworbmFtZXNwYWNlIGlu
dGVybmFsMiB7CisKKy8vIERlbGVnYXRlcyB0byBQcmludEJ5dGVzSW5PYmplY3RUb0ltcGwoKSB0
byBwcmludCB0aGUgYnl0ZXMgaW4gdGhlCisvLyBnaXZlbiBvYmplY3QuICBUaGUgZGVsZWdhdGlv
biBzaW1wbGlmaWVzIHRoZSBpbXBsZW1lbnRhdGlvbiwgd2hpY2gKKy8vIHVzZXMgdGhlIDw8IG9w
ZXJhdG9yIGFuZCB0aHVzIGlzIGVhc2llciBkb25lIG91dHNpZGUgb2YgdGhlCisvLyA6OnRlc3Rp
bmc6OmludGVybmFsIG5hbWVzcGFjZSwgd2hpY2ggY29udGFpbnMgYSA8PCBvcGVyYXRvciB0aGF0
CisvLyBzb21ldGltZXMgY29uZmxpY3RzIHdpdGggdGhlIG9uZSBpbiBTVEwuCit2b2lkIFByaW50
Qnl0ZXNJbk9iamVjdFRvKGNvbnN0IHVuc2lnbmVkIGNoYXIqIG9ial9ieXRlcywgc2l6ZV90IGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICBvc3RyZWFtKiBvcykgeworICBQcmludEJ5
dGVzSW5PYmplY3RUb0ltcGwob2JqX2J5dGVzLCBjb3VudCwgb3MpOworfQorCit9ICAvLyBuYW1l
c3BhY2UgaW50ZXJuYWwyCisKK25hbWVzcGFjZSBpbnRlcm5hbCB7CisKKy8vIERlcGVuZGluZyBv
biB0aGUgdmFsdWUgb2YgYSBjaGFyIChvciB3Y2hhcl90KSwgd2UgcHJpbnQgaXQgaW4gb25lCisv
LyBvZiB0aHJlZSBmb3JtYXRzOgorLy8gICAtIGFzIGlzIGlmIGl0J3MgYSBwcmludGFibGUgQVND
SUkgKGUuZy4gJ2EnLCAnMicsICcgJyksCisvLyAgIC0gYXMgYSBoZXhhZGVjaW1hbCBlc2NhcGUg
c2VxdWVuY2UgKGUuZy4gJ1x4N0YnKSwgb3IKKy8vICAgLSBhcyBhIHNwZWNpYWwgZXNjYXBlIHNl
cXVlbmNlIChlLmcuICdccicsICdcbicpLgorZW51bSBDaGFyRm9ybWF0IHsKKyAga0FzSXMsCisg
IGtIZXhFc2NhcGUsCisgIGtTcGVjaWFsRXNjYXBlCit9OworCisvLyBSZXR1cm5zIHRydWUgaWYg
YyBpcyBhIHByaW50YWJsZSBBU0NJSSBjaGFyYWN0ZXIuICBXZSB0ZXN0IHRoZQorLy8gdmFsdWUg
b2YgYyBkaXJlY3RseSBpbnN0ZWFkIG9mIGNhbGxpbmcgaXNwcmludCgpLCB3aGljaCBpcyBidWdn
eSBvbgorLy8gV2luZG93cyBNb2JpbGUuCitpbmxpbmUgYm9vbCBJc1ByaW50YWJsZUFzY2lpKHdj
aGFyX3QgYykgeworICByZXR1cm4gMHgyMCA8PSBjICYmIGMgPD0gMHg3RTsKK30KKworLy8gUHJp
bnRzIGEgd2lkZSBvciBuYXJyb3cgY2hhciBjIGFzIGEgY2hhcmFjdGVyIGxpdGVyYWwgd2l0aG91
dCB0aGUKKy8vIHF1b3RlcywgZXNjYXBpbmcgaXQgd2hlbiBuZWNlc3Nhcnk7IHJldHVybnMgaG93
IGMgd2FzIGZvcm1hdHRlZC4KKy8vIFRoZSB0ZW1wbGF0ZSBhcmd1bWVudCBVbnNpZ25lZENoYXIg
aXMgdGhlIHVuc2lnbmVkIHZlcnNpb24gb2YgQ2hhciwKKy8vIHdoaWNoIGlzIHRoZSB0eXBlIG9m
IGMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVW5zaWduZWRDaGFyLCB0eXBlbmFtZSBDaGFyPgorc3Rh
dGljIENoYXJGb3JtYXQgUHJpbnRBc0NoYXJMaXRlcmFsVG8oQ2hhciBjLCBvc3RyZWFtKiBvcykg
eworICBzd2l0Y2ggKHN0YXRpY19jYXN0PHdjaGFyX3Q+KGMpKSB7CisgICAgY2FzZSBMJ1wwJzoK
KyAgICAgICpvcyA8PCAiXFwwIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTCdcJyc6CisgICAg
ICAqb3MgPDwgIlxcJyI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwnXFwnOgorICAgICAgKm9z
IDw8ICJcXFxcIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTCdcYSc6CisgICAgICAqb3MgPDwg
IlxcYSI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEwnXGInOgorICAgICAgKm9zIDw8ICJcXGIi
OworICAgICAgYnJlYWs7CisgICAgY2FzZSBMJ1xmJzoKKyAgICAgICpvcyA8PCAiXFxmIjsKKyAg
ICAgIGJyZWFrOworICAgIGNhc2UgTCdcbic6CisgICAgICAqb3MgPDwgIlxcbiI7CisgICAgICBi
cmVhazsKKyAgICBjYXNlIEwnXHInOgorICAgICAgKm9zIDw8ICJcXHIiOworICAgICAgYnJlYWs7
CisgICAgY2FzZSBMJ1x0JzoKKyAgICAgICpvcyA8PCAiXFx0IjsKKyAgICAgIGJyZWFrOworICAg
IGNhc2UgTCdcdic6CisgICAgICAqb3MgPDwgIlxcdiI7CisgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgaWYgKElzUHJpbnRhYmxlQXNjaWkoYykpIHsKKyAgICAgICAgKm9zIDw8IHN0
YXRpY19jYXN0PGNoYXI+KGMpOworICAgICAgICByZXR1cm4ga0FzSXM7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBvc3RyZWFtOjpmbXRmbGFncyBmbGFncyA9IG9zLT5mbGFncygpOworICAgICAg
ICAqb3MgPDwgIlxceCIgPDwgc3RkOjpoZXggPDwgc3RkOjp1cHBlcmNhc2UKKyAgICAgICAgICAg
IDw8IHN0YXRpY19jYXN0PGludD4oc3RhdGljX2Nhc3Q8VW5zaWduZWRDaGFyPihjKSk7CisgICAg
ICAgIG9zLT5mbGFncyhmbGFncyk7CisgICAgICAgIHJldHVybiBrSGV4RXNjYXBlOworICAgICAg
fQorICB9CisgIHJldHVybiBrU3BlY2lhbEVzY2FwZTsKK30KKworLy8gUHJpbnRzIGEgd2NoYXJf
dCBjIGFzIGlmIGl0J3MgcGFydCBvZiBhIHN0cmluZyBsaXRlcmFsLCBlc2NhcGluZyBpdCB3aGVu
CisvLyBuZWNlc3Nhcnk7IHJldHVybnMgaG93IGMgd2FzIGZvcm1hdHRlZC4KK3N0YXRpYyBDaGFy
Rm9ybWF0IFByaW50QXNTdHJpbmdMaXRlcmFsVG8od2NoYXJfdCBjLCBvc3RyZWFtKiBvcykgewor
ICBzd2l0Y2ggKGMpIHsKKyAgICBjYXNlIEwnXCcnOgorICAgICAgKm9zIDw8ICInIjsKKyAgICAg
IHJldHVybiBrQXNJczsKKyAgICBjYXNlIEwnIic6CisgICAgICAqb3MgPDwgIlxcXCIiOworICAg
ICAgcmV0dXJuIGtTcGVjaWFsRXNjYXBlOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gUHJp
bnRBc0NoYXJMaXRlcmFsVG88d2NoYXJfdD4oYywgb3MpOworICB9Cit9CisKKy8vIFByaW50cyBh
IGNoYXIgYyBhcyBpZiBpdCdzIHBhcnQgb2YgYSBzdHJpbmcgbGl0ZXJhbCwgZXNjYXBpbmcgaXQg
d2hlbgorLy8gbmVjZXNzYXJ5OyByZXR1cm5zIGhvdyBjIHdhcyBmb3JtYXR0ZWQuCitzdGF0aWMg
Q2hhckZvcm1hdCBQcmludEFzU3RyaW5nTGl0ZXJhbFRvKGNoYXIgYywgb3N0cmVhbSogb3MpIHsK
KyAgcmV0dXJuIFByaW50QXNTdHJpbmdMaXRlcmFsVG8oCisgICAgICBzdGF0aWNfY2FzdDx3Y2hh
cl90PihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKSksIG9zKTsKK30KKworLy8gUHJpbnRz
IGEgd2lkZSBvciBuYXJyb3cgY2hhcmFjdGVyIGMgYW5kIGl0cyBjb2RlLiAgJ1wwJyBpcyBwcmlu
dGVkCisvLyBhcyAiJ1xcMCciLCBvdGhlciB1bnByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZSBhbHNv
IHByb3Blcmx5IGVzY2FwZWQKKy8vIHVzaW5nIHRoZSBzdGFuZGFyZCBDKysgZXNjYXBlIHNlcXVl
bmNlLiAgVGhlIHRlbXBsYXRlIGFyZ3VtZW50CisvLyBVbnNpZ25lZENoYXIgaXMgdGhlIHVuc2ln
bmVkIHZlcnNpb24gb2YgQ2hhciwgd2hpY2ggaXMgdGhlIHR5cGUgb2YgYy4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBVbnNpZ25lZENoYXIsIHR5cGVuYW1lIENoYXI+Cit2b2lkIFByaW50Q2hhckFuZENv
ZGVUbyhDaGFyIGMsIG9zdHJlYW0qIG9zKSB7CisgIC8vIEZpcnN0LCBwcmludCBjIGFzIGEgbGl0
ZXJhbCBpbiB0aGUgbW9zdCByZWFkYWJsZSBmb3JtIHdlIGNhbiBmaW5kLgorICAqb3MgPDwgKChz
aXplb2YoYykgPiAxKSA/ICJMJyIgOiAiJyIpOworICBjb25zdCBDaGFyRm9ybWF0IGZvcm1hdCA9
IFByaW50QXNDaGFyTGl0ZXJhbFRvPFVuc2lnbmVkQ2hhcj4oYywgb3MpOworICAqb3MgPDwgIici
OworCisgIC8vIFRvIGFpZCB1c2VyIGRlYnVnZ2luZywgd2UgYWxzbyBwcmludCBjJ3MgY29kZSBp
biBkZWNpbWFsLCB1bmxlc3MKKyAgLy8gaXQncyAwIChpbiB3aGljaCBjYXNlIGMgd2FzIHByaW50
ZWQgYXMgJ1xcMCcsIG1ha2luZyB0aGUgY29kZQorICAvLyBvYnZpb3VzKS4KKyAgaWYgKGMgPT0g
MCkKKyAgICByZXR1cm47CisgICpvcyA8PCAiICgiIDw8IHN0YXRpY19jYXN0PGludD4oYyk7CisK
KyAgLy8gRm9yIG1vcmUgY29udmVuaWVuY2UsIHdlIHByaW50IGMncyBjb2RlIGFnYWluIGluIGhl
eGFkZWNpbWFsLAorICAvLyB1bmxlc3MgYyB3YXMgYWxyZWFkeSBwcmludGVkIGluIHRoZSBmb3Jt
ICdceCMjJyBvciB0aGUgY29kZSBpcyBpbgorICAvLyBbMSwgOV0uCisgIGlmIChmb3JtYXQgPT0g
a0hleEVzY2FwZSB8fCAoMSA8PSBjICYmIGMgPD0gOSkpIHsKKyAgICAvLyBEbyBub3RoaW5nLgor
ICB9IGVsc2UgeworICAgICpvcyA8PCAiLCAweCIgPDwgU3RyaW5nOjpGb3JtYXRIZXhJbnQoc3Rh
dGljX2Nhc3Q8VW5zaWduZWRDaGFyPihjKSk7CisgIH0KKyAgKm9zIDw8ICIpIjsKK30KKwordm9p
ZCBQcmludFRvKHVuc2lnbmVkIGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50
Q2hhckFuZENvZGVUbzx1bnNpZ25lZCBjaGFyPihjLCBvcyk7Cit9Cit2b2lkIFByaW50VG8oc2ln
bmVkIGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hhckFuZENvZGVUbzx1
bnNpZ25lZCBjaGFyPihjLCBvcyk7Cit9CisKKy8vIFByaW50cyBhIHdjaGFyX3QgYXMgYSBzeW1i
b2wgaWYgaXQgaXMgcHJpbnRhYmxlIG9yIGFzIGl0cyBpbnRlcm5hbAorLy8gY29kZSBvdGhlcndp
c2UgYW5kIGFsc28gYXMgaXRzIGNvZGUuICBMJ1wwJyBpcyBwcmludGVkIGFzICJMJ1xcMCciLgor
dm9pZCBQcmludFRvKHdjaGFyX3Qgd2MsIG9zdHJlYW0qIG9zKSB7CisgIFByaW50Q2hhckFuZENv
ZGVUbzx3Y2hhcl90Pih3Yywgb3MpOworfQorCisvLyBQcmludHMgdGhlIGdpdmVuIGFycmF5IG9m
IGNoYXJhY3RlcnMgdG8gdGhlIG9zdHJlYW0uICBDaGFyVHlwZSBtdXN0IGJlIGVpdGhlcgorLy8g
Y2hhciBvciB3Y2hhcl90LgorLy8gVGhlIGFycmF5IHN0YXJ0cyBhdCBiZWdpbiwgdGhlIGxlbmd0
aCBpcyBsZW4sIGl0IG1heSBpbmNsdWRlICdcMCcgY2hhcmFjdGVycworLy8gYW5kIG1heSBub3Qg
YmUgTlVMLXRlcm1pbmF0ZWQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CitHVEVTVF9B
VFRSSUJVVEVfTk9fU0FOSVRJWkVfTUVNT1JZXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpF
X0FERFJFU1NfCitHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXworc3RhdGljIENo
YXJGb3JtYXQgUHJpbnRDaGFyc0FzU3RyaW5nVG8oCisgICAgY29uc3QgQ2hhclR5cGUqIGJlZ2lu
LCBzaXplX3QgbGVuLCBvc3RyZWFtKiBvcykgeworICBjb25zdCBjaGFyKiBjb25zdCBrUXVvdGVC
ZWdpbiA9IHNpemVvZihDaGFyVHlwZSkgPT0gMSA/ICJcIiIgOiAiTFwiIjsKKyAgKm9zIDw8IGtR
dW90ZUJlZ2luOworICBib29sIGlzX3ByZXZpb3VzX2hleCA9IGZhbHNlOworICBDaGFyRm9ybWF0
IHByaW50X2Zvcm1hdCA9IGtBc0lzOworICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
bGVuOyArK2luZGV4KSB7CisgICAgY29uc3QgQ2hhclR5cGUgY3VyID0gYmVnaW5baW5kZXhdOwor
ICAgIGlmIChpc19wcmV2aW91c19oZXggJiYgSXNYRGlnaXQoY3VyKSkgeworICAgICAgLy8gUHJl
dmlvdXMgY2hhcmFjdGVyIGlzIG9mICdceC4uJyBmb3JtIGFuZCB0aGlzIGNoYXJhY3RlciBjYW4g
YmUKKyAgICAgIC8vIGludGVycHJldGVkIGFzIGFub3RoZXIgaGV4YWRlY2ltYWwgZGlnaXQgaW4g
aXRzIG51bWJlci4gQnJlYWsgc3RyaW5nIHRvCisgICAgICAvLyBkaXNhbWJpZ3VhdGUuCisgICAg
ICAqb3MgPDwgIlwiICIgPDwga1F1b3RlQmVnaW47CisgICAgfQorICAgIGlzX3ByZXZpb3VzX2hl
eCA9IFByaW50QXNTdHJpbmdMaXRlcmFsVG8oY3VyLCBvcykgPT0ga0hleEVzY2FwZTsKKyAgICAv
LyBSZW1lbWJlciBpZiBhbnkgY2hhcmFjdGVycyByZXF1aXJlZCBoZXggZXNjYXBpbmcuCisgICAg
aWYgKGlzX3ByZXZpb3VzX2hleCkgeworICAgICAgcHJpbnRfZm9ybWF0ID0ga0hleEVzY2FwZTsK
KyAgICB9CisgIH0KKyAgKm9zIDw8ICJcIiI7CisgIHJldHVybiBwcmludF9mb3JtYXQ7Cit9CisK
Ky8vIFByaW50cyBhIChjb25zdCkgY2hhci93Y2hhcl90IGFycmF5IG9mICdsZW4nIGVsZW1lbnRz
LCBzdGFydGluZyBhdCBhZGRyZXNzCisvLyAnYmVnaW4nLiAgQ2hhclR5cGUgbXVzdCBiZSBlaXRo
ZXIgY2hhciBvciB3Y2hhcl90LgordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorR1RFU1Rf
QVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8KK0dURVNUX0FUVFJJQlVURV9OT19TQU5JVEla
RV9BRERSRVNTXworR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KK3N0YXRpYyB2
b2lkIFVuaXZlcnNhbFByaW50Q2hhckFycmF5KAorICAgIGNvbnN0IENoYXJUeXBlKiBiZWdpbiwg
c2l6ZV90IGxlbiwgb3N0cmVhbSogb3MpIHsKKyAgLy8gVGhlIGNvZGUKKyAgLy8gICBjb25zdCBj
aGFyIGtGb29bXSA9ICJmb28iOworICAvLyBnZW5lcmF0ZXMgYW4gYXJyYXkgb2YgNCwgbm90IDMs
IGVsZW1lbnRzLCB3aXRoIHRoZSBsYXN0IG9uZSBiZWluZyAnXDAnLgorICAvLworICAvLyBUaGVy
ZWZvcmUgd2hlbiBwcmludGluZyBhIGNoYXIgYXJyYXksIHdlIGRvbid0IHByaW50IHRoZSBsYXN0
IGVsZW1lbnQgaWYKKyAgLy8gaXQncyAnXDAnLCBzdWNoIHRoYXQgdGhlIG91dHB1dCBtYXRjaGVz
IHRoZSBzdHJpbmcgbGl0ZXJhbCBhcyBpdCdzCisgIC8vIHdyaXR0ZW4gaW4gdGhlIHNvdXJjZSBj
b2RlLgorICBpZiAobGVuID4gMCAmJiBiZWdpbltsZW4gLSAxXSA9PSAnXDAnKSB7CisgICAgUHJp
bnRDaGFyc0FzU3RyaW5nVG8oYmVnaW4sIGxlbiAtIDEsIG9zKTsKKyAgICByZXR1cm47CisgIH0K
KworICAvLyBJZiwgaG93ZXZlciwgdGhlIGxhc3QgZWxlbWVudCBpbiB0aGUgYXJyYXkgaXMgbm90
ICdcMCcsIGUuZy4KKyAgLy8gICAgY29uc3QgY2hhciBrRm9vW10gPSB7ICdmJywgJ28nLCAnbycg
fTsKKyAgLy8gd2UgbXVzdCBwcmludCB0aGUgZW50aXJlIGFycmF5LiAgV2UgYWxzbyBwcmludCBh
IG1lc3NhZ2UgdG8gaW5kaWNhdGUKKyAgLy8gdGhhdCB0aGUgYXJyYXkgaXMgbm90IE5VTC10ZXJt
aW5hdGVkLgorICBQcmludENoYXJzQXNTdHJpbmdUbyhiZWdpbiwgbGVuLCBvcyk7CisgICpvcyA8
PCAiIChubyB0ZXJtaW5hdGluZyBOVUwpIjsKK30KKworLy8gUHJpbnRzIGEgKGNvbnN0KSBjaGFy
IGFycmF5IG9mICdsZW4nIGVsZW1lbnRzLCBzdGFydGluZyBhdCBhZGRyZXNzICdiZWdpbicuCit2
b2lkIFVuaXZlcnNhbFByaW50QXJyYXkoY29uc3QgY2hhciogYmVnaW4sIHNpemVfdCBsZW4sIG9z
dHJlYW0qIG9zKSB7CisgIFVuaXZlcnNhbFByaW50Q2hhckFycmF5KGJlZ2luLCBsZW4sIG9zKTsK
K30KKworLy8gUHJpbnRzIGEgKGNvbnN0KSB3Y2hhcl90IGFycmF5IG9mICdsZW4nIGVsZW1lbnRz
LCBzdGFydGluZyBhdCBhZGRyZXNzCisvLyAnYmVnaW4nLgordm9pZCBVbml2ZXJzYWxQcmludEFy
cmF5KGNvbnN0IHdjaGFyX3QqIGJlZ2luLCBzaXplX3QgbGVuLCBvc3RyZWFtKiBvcykgeworICBV
bml2ZXJzYWxQcmludENoYXJBcnJheShiZWdpbiwgbGVuLCBvcyk7Cit9CisKKy8vIFByaW50cyB0
aGUgZ2l2ZW4gQyBzdHJpbmcgdG8gdGhlIG9zdHJlYW0uCit2b2lkIFByaW50VG8oY29uc3QgY2hh
ciogcywgb3N0cmVhbSogb3MpIHsKKyAgaWYgKHMgPT0gTlVMTCkgeworICAgICpvcyA8PCAiTlVM
TCI7CisgIH0gZWxzZSB7CisgICAgKm9zIDw8IEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMp
IDw8ICIgcG9pbnRpbmcgdG8gIjsKKyAgICBQcmludENoYXJzQXNTdHJpbmdUbyhzLCBzdHJsZW4o
cyksIG9zKTsKKyAgfQorfQorCisvLyBNU1ZDIGNvbXBpbGVyIGNhbiBiZSBjb25maWd1cmVkIHRv
IGRlZmluZSB3aGFyX3QgYXMgYSB0eXBlZGVmCisvLyBvZiB1bnNpZ25lZCBzaG9ydC4gRGVmaW5p
bmcgYW4gb3ZlcmxvYWQgZm9yIGNvbnN0IHdjaGFyX3QqIGluIHRoYXQgY2FzZQorLy8gd291bGQg
Y2F1c2UgcG9pbnRlcnMgdG8gdW5zaWduZWQgc2hvcnRzIGJlIHByaW50ZWQgYXMgd2lkZSBzdHJp
bmdzLAorLy8gcG9zc2libHkgYWNjZXNzaW5nIG1vcmUgbWVtb3J5IHRoYW4gaW50ZW5kZWQgYW5k
IGNhdXNpbmcgaW52YWxpZAorLy8gbWVtb3J5IGFjY2Vzc2VzLiBNU1ZDIGRlZmluZXMgX05BVElW
RV9XQ0hBUl9UX0RFRklORUQgc3ltYm9sIHdoZW4KKy8vIHdjaGFyX3QgaXMgaW1wbGVtZW50ZWQg
YXMgYSBuYXRpdmUgdHlwZS4KKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfTkFU
SVZFX1dDSEFSX1RfREVGSU5FRCkKKy8vIFByaW50cyB0aGUgZ2l2ZW4gd2lkZSBDIHN0cmluZyB0
byB0aGUgb3N0cmVhbS4KK3ZvaWQgUHJpbnRUbyhjb25zdCB3Y2hhcl90KiBzLCBvc3RyZWFtKiBv
cykgeworICBpZiAocyA9PSBOVUxMKSB7CisgICAgKm9zIDw8ICJOVUxMIjsKKyAgfSBlbHNlIHsK
KyAgICAqb3MgPDwgSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocykgPDwgIiBwb2ludGluZyB0
byAiOworICAgIFByaW50Q2hhcnNBc1N0cmluZ1RvKHMsIHN0ZDo6d2NzbGVuKHMpLCBvcyk7Cisg
IH0KK30KKyNlbmRpZiAgLy8gd2NoYXJfdCBpcyBuYXRpdmUKKworbmFtZXNwYWNlIHsKKworYm9v
bCBDb250YWluc1VucHJpbnRhYmxlQ29udHJvbENvZGVzKGNvbnN0IGNoYXIqIHN0ciwgc2l6ZV90
IGxlbmd0aCkgeworICBjb25zdCB1bnNpZ25lZCBjaGFyICpzID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyICo+KHN0cik7CisKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBs
ZW5ndGg7IGkrKykgeworICAgIHVuc2lnbmVkIGNoYXIgY2ggPSAqcysrOworICAgIGlmIChzdGQ6
OmlzY250cmwoY2gpKSB7CisgICAgICAgIHN3aXRjaCAoY2gpIHsKKyAgICAgICAgY2FzZSAnXHQn
OgorICAgICAgICBjYXNlICdcbic6CisgICAgICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgfQorICB9CisgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBJc1VURjhUcmFpbEJ5dGUo
dW5zaWduZWQgY2hhciB0KSB7IHJldHVybiAweDgwIDw9IHQgJiYgdDw9IDB4YmY7IH0KKworYm9v
bCBJc1ZhbGlkVVRGOChjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW5ndGgpIHsKKyAgY29uc3Qg
dW5zaWduZWQgY2hhciAqcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAq
PihzdHIpOworCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOykgeworICAgIHVuc2ln
bmVkIGNoYXIgbGVhZCA9IHNbaSsrXTsKKworICAgIGlmIChsZWFkIDw9IDB4N2YpIHsKKyAgICAg
IGNvbnRpbnVlOyAgLy8gc2luZ2xlLWJ5dGUgY2hhcmFjdGVyIChBU0NJSSkgMC4uN0YKKyAgICB9
CisgICAgaWYgKGxlYWQgPCAweGMyKSB7CisgICAgICByZXR1cm4gZmFsc2U7ICAvLyB0cmFpbCBi
eXRlIG9yIG5vbi1zaG9ydGVzdCBmb3JtCisgICAgfSBlbHNlIGlmIChsZWFkIDw9IDB4ZGYgJiYg
KGkgKyAxKSA8PSBsZW5ndGggJiYgSXNVVEY4VHJhaWxCeXRlKHNbaV0pKSB7CisgICAgICArK2k7
ICAvLyAyLWJ5dGUgY2hhcmFjdGVyCisgICAgfSBlbHNlIGlmICgweGUwIDw9IGxlYWQgJiYgbGVh
ZCA8PSAweGVmICYmIChpICsgMikgPD0gbGVuZ3RoICYmCisgICAgICAgICAgICAgICBJc1VURjhU
cmFpbEJ5dGUoc1tpXSkgJiYKKyAgICAgICAgICAgICAgIElzVVRGOFRyYWlsQnl0ZShzW2kgKyAx
XSkgJiYKKyAgICAgICAgICAgICAgIC8vIGNoZWNrIGZvciBub24tc2hvcnRlc3QgZm9ybSBhbmQg
c3Vycm9nYXRlCisgICAgICAgICAgICAgICAobGVhZCAhPSAweGUwIHx8IHNbaV0gPj0gMHhhMCkg
JiYKKyAgICAgICAgICAgICAgIChsZWFkICE9IDB4ZWQgfHwgc1tpXSA8IDB4YTApKSB7CisgICAg
ICBpICs9IDI7ICAvLyAzLWJ5dGUgY2hhcmFjdGVyCisgICAgfSBlbHNlIGlmICgweGYwIDw9IGxl
YWQgJiYgbGVhZCA8PSAweGY0ICYmIChpICsgMykgPD0gbGVuZ3RoICYmCisgICAgICAgICAgICAg
ICBJc1VURjhUcmFpbEJ5dGUoc1tpXSkgJiYKKyAgICAgICAgICAgICAgIElzVVRGOFRyYWlsQnl0
ZShzW2kgKyAxXSkgJiYKKyAgICAgICAgICAgICAgIElzVVRGOFRyYWlsQnl0ZShzW2kgKyAyXSkg
JiYKKyAgICAgICAgICAgICAgIC8vIGNoZWNrIGZvciBub24tc2hvcnRlc3QgZm9ybQorICAgICAg
ICAgICAgICAgKGxlYWQgIT0gMHhmMCB8fCBzW2ldID49IDB4OTApICYmCisgICAgICAgICAgICAg
ICAobGVhZCAhPSAweGY0IHx8IHNbaV0gPCAweDkwKSkgeworICAgICAgaSArPSAzOyAgLy8gNC1i
eXRlIGNoYXJhY3RlcgorICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICB9CisgIHJldHVybiB0cnVlOworfQorCit2b2lkIENvbmRpdGlvbmFsUHJpbnRBc1RleHQoY29u
c3QgY2hhciogc3RyLCBzaXplX3QgbGVuZ3RoLCBvc3RyZWFtKiBvcykgeworICBpZiAoIUNvbnRh
aW5zVW5wcmludGFibGVDb250cm9sQ29kZXMoc3RyLCBsZW5ndGgpICYmCisgICAgICBJc1ZhbGlk
VVRGOChzdHIsIGxlbmd0aCkpIHsKKyAgICAqb3MgPDwgIlxuICAgIEFzIFRleHQ6IFwiIiA8PCBz
dHIgPDwgIlwiIjsKKyAgfQorfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKKy8vIFBy
aW50cyBhIDo6c3RyaW5nIG9iamVjdC4KKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwordm9p
ZCBQcmludFN0cmluZ1RvKGNvbnN0IDo6c3RyaW5nJiBzLCBvc3RyZWFtKiBvcykgeworICBpZiAo
UHJpbnRDaGFyc0FzU3RyaW5nVG8ocy5kYXRhKCksIHMuc2l6ZSgpLCBvcykgPT0ga0hleEVzY2Fw
ZSkgeworICAgIGlmIChHVEVTVF9GTEFHKHByaW50X3V0ZjgpKSB7CisgICAgICBDb25kaXRpb25h
bFByaW50QXNUZXh0KHMuZGF0YSgpLCBzLnNpemUoKSwgb3MpOworICAgIH0KKyAgfQorfQorI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCit2b2lkIFByaW50U3RyaW5nVG8oY29u
c3QgOjpzdGQ6OnN0cmluZyYgcywgb3N0cmVhbSogb3MpIHsKKyAgaWYgKFByaW50Q2hhcnNBc1N0
cmluZ1RvKHMuZGF0YSgpLCBzLnNpemUoKSwgb3MpID09IGtIZXhFc2NhcGUpIHsKKyAgICBpZiAo
R1RFU1RfRkxBRyhwcmludF91dGY4KSkgeworICAgICAgQ29uZGl0aW9uYWxQcmludEFzVGV4dChz
LmRhdGEoKSwgcy5zaXplKCksIG9zKTsKKyAgICB9CisgIH0KK30KKworLy8gUHJpbnRzIGEgOjp3
c3RyaW5nIG9iamVjdC4KKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKK3ZvaWQgUHJpbnRX
aWRlU3RyaW5nVG8oY29uc3QgOjp3c3RyaW5nJiBzLCBvc3RyZWFtKiBvcykgeworICBQcmludENo
YXJzQXNTdHJpbmdUbyhzLmRhdGEoKSwgcy5zaXplKCksIG9zKTsKK30KKyNlbmRpZiAgLy8gR1RF
U1RfSEFTX0dMT0JBTF9XU1RSSU5HCisKKyNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKK3ZvaWQg
UHJpbnRXaWRlU3RyaW5nVG8oY29uc3QgOjpzdGQ6OndzdHJpbmcmIHMsIG9zdHJlYW0qIG9zKSB7
CisgIFByaW50Q2hhcnNBc1N0cmluZ1RvKHMuZGF0YSgpLCBzLnNpemUoKSwgb3MpOworfQorI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
CisKK30gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
c3JjL2d0ZXN0LXRlc3QtcGFydC5jYwppbmRleCA1ZDE4M2E0NDZmMjk0Y2U5ZTFhODU4N2M4Yjkx
MjBhOWJlYzg4N2RkLi5jODg4NjBkOTIzODU2MTllYTY3NjQ4ODQ1ODM5ZDE0NTgzZjExMTQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10ZXN0LXBhcnQuY2MKQEAg
LTI2LDIxICsyNiwxMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotLy8KLS8vIEF1dGhvcjogbWhldWxlQGdvb2dsZS5jb20gKE1hcmt1cyBIZXVsZSkK
LS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAK
LSNpbmNsdWRlIDxndGVzdC9ndGVzdC10ZXN0LXBhcnQuaD4KKy8vCisvLyBUaGUgR29vZ2xlIEMr
KyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAKLS8vIEluZGlj
YXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MK
LS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1p
bmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4g
IFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGlu
Y2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8gaGlzIGNvZGUuCi0jZGVmaW5lIEdU
RVNUX0lNUExFTUVOVEFUSU9OXyAxCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0Lmgi
CiAjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExF
TUVOVEFUSU9OXwogCiBuYW1lc3BhY2UgdGVzdGluZyB7CiAKQEAgLTQ4LDEwICszOSwxMCBAQCB1
c2luZyBpbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsOwogCiAvLyBHZXRzIHRoZSBzdW1tYXJ5IG9m
IHRoZSBmYWlsdXJlIG1lc3NhZ2UgYnkgb21pdHRpbmcgdGhlIHN0YWNrIHRyYWNlCiAvLyBpbiBp
dC4KLWludGVybmFsOjpTdHJpbmcgVGVzdFBhcnRSZXN1bHQ6OkV4dHJhY3RTdW1tYXJ5KGNvbnN0
IGNoYXIqIG1lc3NhZ2UpIHsKK3N0ZDo6c3RyaW5nIFRlc3RQYXJ0UmVzdWx0OjpFeHRyYWN0U3Vt
bWFyeShjb25zdCBjaGFyKiBtZXNzYWdlKSB7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IHN0YWNrX3Ry
YWNlID0gc3Ryc3RyKG1lc3NhZ2UsIGludGVybmFsOjprU3RhY2tUcmFjZU1hcmtlcik7Ci0gIHJl
dHVybiBzdGFja190cmFjZSA9PSBOVUxMID8gaW50ZXJuYWw6OlN0cmluZyhtZXNzYWdlKSA6Ci0g
ICAgICBpbnRlcm5hbDo6U3RyaW5nKG1lc3NhZ2UsIHN0YWNrX3RyYWNlIC0gbWVzc2FnZSk7Cisg
IHJldHVybiBzdGFja190cmFjZSA9PSBOVUxMID8gbWVzc2FnZSA6CisgICAgICBzdGQ6OnN0cmlu
ZyhtZXNzYWdlLCBzdGFja190cmFjZSk7CiB9CiAKIC8vIFByaW50cyBhIFRlc3RQYXJ0UmVzdWx0
IG9iamVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9ndGVzdC10
eXBlZC10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXR5cGVkLXRl
c3QuY2MKaW5kZXggM2NjNGI1ZGUyYWFjYjc1OTg5MTE5YzVmOTZjN2Y0ZjgwZWFkNWNhZS4uMWRj
MmFkMzhiYWI5OGJjMTQ2YzE2MTU4YTQ3ZGExZTM5NGJmMzg1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKQEAgLTI2LDExICsyNiwxMSBA
QAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8v
IEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0LXR5cGVkLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCisjaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oIgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
IAogbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIGludGVybmFsIHsKQEAgLTQwLDM4ICs0
MCw0NiBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogLy8gU2tpcHMgdG8gdGhlIGZpcnN0IG5vbi1z
cGFjZSBjaGFyIGluIHN0ci4gUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgc3RyCiAvLyBjb250
YWlucyBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycy4KIHN0YXRpYyBjb25zdCBjaGFyKiBTa2lw
U3BhY2VzKGNvbnN0IGNoYXIqIHN0cikgewotICB3aGlsZSAoaXNzcGFjZSgqc3RyKSkKKyAgd2hp
bGUgKElzU3BhY2UoKnN0cikpCiAgICAgc3RyKys7CiAgIHJldHVybiBzdHI7CiB9CiAKK3N0YXRp
YyBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gU3BsaXRJbnRvVGVzdE5hbWVzKGNvbnN0IGNoYXIq
IHNyYykgeworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbmFtZV92ZWM7CisgIHNyYyA9IFNr
aXBTcGFjZXMoc3JjKTsKKyAgZm9yICg7IHNyYyAhPSBOVUxMOyBzcmMgPSBTa2lwQ29tbWEoc3Jj
KSkgeworICAgIG5hbWVfdmVjLnB1c2hfYmFjayhTdHJpcFRyYWlsaW5nU3BhY2VzKEdldFByZWZp
eFVudGlsQ29tbWEoc3JjKSkpOworICB9CisgIHJldHVybiBuYW1lX3ZlYzsKK30KKwogLy8gVmVy
aWZpZXMgdGhhdCByZWdpc3RlcmVkX3Rlc3RzIG1hdGNoIHRoZSB0ZXN0IG5hbWVzIGluCi0vLyBk
ZWZpbmVkX3Rlc3RfbmFtZXNfOyByZXR1cm5zIHJlZ2lzdGVyZWRfdGVzdHMgaWYgc3VjY2Vzc2Z1
bCwgb3IKKy8vIHJlZ2lzdGVyZWRfdGVzdHNfOyByZXR1cm5zIHJlZ2lzdGVyZWRfdGVzdHMgaWYg
c3VjY2Vzc2Z1bCwgb3IKIC8vIGFib3J0cyB0aGUgcHJvZ3JhbSBvdGhlcndpc2UuCiBjb25zdCBj
aGFyKiBUeXBlZFRlc3RDYXNlUFN0YXRlOjpWZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVzKAogICAg
IGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiByZWdpc3RlcmVkX3Rlc3Rz
KSB7Ci0gIHR5cGVkZWYgOjpzdGQ6OnNldDxjb25zdCBjaGFyKj46OmNvbnN0X2l0ZXJhdG9yIERl
ZmluZWRUZXN0SXRlcjsKKyAgdHlwZWRlZiBSZWdpc3RlcmVkVGVzdHNNYXA6OmNvbnN0X2l0ZXJh
dG9yIFJlZ2lzdGVyZWRUZXN0SXRlcjsKICAgcmVnaXN0ZXJlZF8gPSB0cnVlOwogCi0gIC8vIFNr
aXAgaW5pdGlhbCB3aGl0ZXNwYWNlIGluIHJlZ2lzdGVyZWRfdGVzdHMgc2luY2Ugc29tZQotICAv
LyBwcmVwcm9jZXNzb3JzIHByZWZpeCBzdHJpbmdpemllZCBsaXRlcmFscyB3aXRoIHdoaXRlc3Bh
Y2UuCi0gIHJlZ2lzdGVyZWRfdGVzdHMgPSBTa2lwU3BhY2VzKHJlZ2lzdGVyZWRfdGVzdHMpOwor
ICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbmFtZV92ZWMgPSBTcGxpdEludG9UZXN0TmFtZXMo
cmVnaXN0ZXJlZF90ZXN0cyk7CiAKICAgTWVzc2FnZSBlcnJvcnM7Ci0gIDo6c3RkOjpzZXQ8U3Ry
aW5nPiB0ZXN0czsKLSAgZm9yIChjb25zdCBjaGFyKiBuYW1lcyA9IHJlZ2lzdGVyZWRfdGVzdHM7
IG5hbWVzICE9IE5VTEw7Ci0gICAgICAgbmFtZXMgPSBTa2lwQ29tbWEobmFtZXMpKSB7Ci0gICAg
Y29uc3QgU3RyaW5nIG5hbWUgPSBHZXRQcmVmaXhVbnRpbENvbW1hKG5hbWVzKTsKKworICBzdGQ6
OnNldDxzdGQ6OnN0cmluZz4gdGVzdHM7CisgIGZvciAoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
Ojpjb25zdF9pdGVyYXRvciBuYW1lX2l0ID0gbmFtZV92ZWMuYmVnaW4oKTsKKyAgICAgICBuYW1l
X2l0ICE9IG5hbWVfdmVjLmVuZCgpOyArK25hbWVfaXQpIHsKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbmFtZSA9ICpuYW1lX2l0OwogICAgIGlmICh0ZXN0cy5jb3VudChuYW1lKSAhPSAwKSB7CiAg
ICAgICBlcnJvcnMgPDwgIlRlc3QgIiA8PCBuYW1lIDw8ICIgaXMgbGlzdGVkIG1vcmUgdGhhbiBv
bmNlLlxuIjsKICAgICAgIGNvbnRpbnVlOwogICAgIH0KIAogICAgIGJvb2wgZm91bmQgPSBmYWxz
ZTsKLSAgICBmb3IgKERlZmluZWRUZXN0SXRlciBpdCA9IGRlZmluZWRfdGVzdF9uYW1lc18uYmVn
aW4oKTsKLSAgICAgICAgIGl0ICE9IGRlZmluZWRfdGVzdF9uYW1lc18uZW5kKCk7CisgICAgZm9y
IChSZWdpc3RlcmVkVGVzdEl0ZXIgaXQgPSByZWdpc3RlcmVkX3Rlc3RzXy5iZWdpbigpOworICAg
ICAgICAgaXQgIT0gcmVnaXN0ZXJlZF90ZXN0c18uZW5kKCk7CiAgICAgICAgICArK2l0KSB7Ci0g
ICAgICBpZiAobmFtZSA9PSAqaXQpIHsKKyAgICAgIGlmIChuYW1lID09IGl0LT5maXJzdCkgewog
ICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQpAQCAtODUsMTUg
KzkzLDE1IEBAIGNvbnN0IGNoYXIqIFR5cGVkVGVzdENhc2VQU3RhdGU6OlZlcmlmeVJlZ2lzdGVy
ZWRUZXN0TmFtZXMoCiAgICAgfQogICB9CiAKLSAgZm9yIChEZWZpbmVkVGVzdEl0ZXIgaXQgPSBk
ZWZpbmVkX3Rlc3RfbmFtZXNfLmJlZ2luKCk7Ci0gICAgICAgaXQgIT0gZGVmaW5lZF90ZXN0X25h
bWVzXy5lbmQoKTsKKyAgZm9yIChSZWdpc3RlcmVkVGVzdEl0ZXIgaXQgPSByZWdpc3RlcmVkX3Rl
c3RzXy5iZWdpbigpOworICAgICAgIGl0ICE9IHJlZ2lzdGVyZWRfdGVzdHNfLmVuZCgpOwogICAg
ICAgICsraXQpIHsKLSAgICBpZiAodGVzdHMuY291bnQoKml0KSA9PSAwKSB7Ci0gICAgICBlcnJv
cnMgPDwgIllvdSBmb3Jnb3QgdG8gbGlzdCB0ZXN0ICIgPDwgKml0IDw8ICIuXG4iOworICAgIGlm
ICh0ZXN0cy5jb3VudChpdC0+Zmlyc3QpID09IDApIHsKKyAgICAgIGVycm9ycyA8PCAiWW91IGZv
cmdvdCB0byBsaXN0IHRlc3QgIiA8PCBpdC0+Zmlyc3QgPDwgIi5cbiI7CiAgICAgfQogICB9CiAK
LSAgY29uc3QgU3RyaW5nJiBlcnJvcnNfc3RyID0gZXJyb3JzLkdldFN0cmluZygpOworICBjb25z
dCBzdGQ6OnN0cmluZyYgZXJyb3JzX3N0ciA9IGVycm9ycy5HZXRTdHJpbmcoKTsKICAgaWYgKGVy
cm9yc19zdHIgIT0gIiIpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzICVzIiwgRm9ybWF0Rmls
ZUxvY2F0aW9uKGZpbGUsIGxpbmUpLmNfc3RyKCksCiAgICAgICAgICAgICBlcnJvcnNfc3RyLmNf
c3RyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0LmNjCmluZGV4IDViODcxYzBhZGIw
YTFjNGNmYTIzNzU1NDA1N2Q1MTYwODQ2MTk1MGUuLjk2YjA3YzY4YWJiMDVhMmRiZTFiZTA5ZjFj
MzUzNWJjZjc5ZDAwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3NyYy9n
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3QuY2MKQEAgLTI2
LDExMiArMjYsMTMxIEBACiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKIC8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0v
LwotLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8g
VGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0
KQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGku
aD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2N1
c3RvbS9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgogCiAjaW5jbHVkZSA8
Y3R5cGUuaD4KICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5jbHVk
ZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CiAjaW5j
bHVkZSA8d2NoYXIuaD4KICNpbmNsdWRlIDx3Y3R5cGUuaD4KIAogI2luY2x1ZGUgPGFsZ29yaXRo
bT4KLSNpbmNsdWRlIDxvc3RyZWFtPgorI2luY2x1ZGUgPGlvbWFuaXA+CisjaW5jbHVkZSA8bGlt
aXRzPgorI2luY2x1ZGUgPGxpc3Q+CisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPG9zdHJlYW0+
ICAvLyBOT0xJTlQKICNpbmNsdWRlIDxzc3RyZWFtPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2lm
IEdURVNUX09TX0xJTlVYCiAKLS8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBVc2UgYXV0b2Nv
bmYgdG8gZGV0ZWN0IGF2YWlsYWJpbGl0eSBvZgorLy8gRklYTUU6IFVzZSBhdXRvY29uZiB0byBk
ZXRlY3QgYXZhaWxhYmlsaXR5IG9mCiAvLyBnZXR0aW1lb2ZkYXkoKS4KLSNkZWZpbmUgR1RFU1Rf
SEFTX0dFVFRJTUVPRkRBWV8gMQorIyBkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQog
Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxzY2hl
ZC5oPgorIyBpbmNsdWRlIDxmY250bC5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPGxpbWl0cy5o
PiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHNjaGVkLmg+ICAvLyBOT0xJTlQKIC8vIERlY2xhcmVz
IHZzbnByaW50ZigpLiAgVGhpcyBoZWFkZXIgaXMgbm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgot
I2luY2x1ZGUgPHN0cmluZ3MuaD4KLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgotI2luY2x1ZGUgPHN5
cy90aW1lLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1
ZGUgPHZlY3Rvcj4KKyMgaW5jbHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUg
PHN5cy9tbWFuLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElO
VAorIyBpbmNsdWRlIDx1bmlzdGQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxzdHJpbmc+CiAK
ICNlbGlmIEdURVNUX09TX1NZTUJJQU4KLSNkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8g
MQotI2luY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMgZGVmaW5lIEdURVNUX0hBU19H
RVRUSU1FT0ZEQVlfIDEKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAogCiAjZWxp
ZiBHVEVTVF9PU19aT1MKLSNkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQotI2luY2x1
ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZE
QVlfIDEKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAogCiAvLyBPbiB6L09TIHdl
IGFkZGl0aW9uYWxseSBuZWVkIHN0cmluZ3MuaCBmb3Igc3RyY2FzZWNtcC4KLSNpbmNsdWRlIDxz
dHJpbmdzLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8c3RyaW5ncy5oPiAgLy8gTk9MSU5UCiAK
ICNlbGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFICAvLyBXZSBhcmUgb24gV2luZG93cyBDRS4K
IAotI2luY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDx3aW5kb3dzLmg+
ICAvLyBOT0xJTlQKKyMgdW5kZWYgbWluCiAKICNlbGlmIEdURVNUX09TX1dJTkRPV1MgIC8vIFdl
IGFyZSBvbiBXaW5kb3dzIHByb3Blci4KIAotI2luY2x1ZGUgPGlvLmg+ICAvLyBOT0xJTlQKLSNp
bmNsdWRlIDxzeXMvdGltZWIuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPiAg
Ly8gTk9MSU5UCi0jaW5jbHVkZSA8c3lzL3N0YXQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxp
by5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy90aW1lYi5oPiAgLy8gTk9MSU5UCisjIGlu
Y2x1ZGUgPHN5cy90eXBlcy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+ICAv
LyBOT0xJTlQKIAotI2lmIEdURVNUX09TX1dJTkRPV1NfTUlOR1cKKyMgaWYgR1RFU1RfT1NfV0lO
RE9XU19NSU5HVwogLy8gTWluR1cgaGFzIGdldHRpbWVvZmRheSgpIGJ1dCBub3QgX2Z0aW1lNjQo
KS4KLS8vIFRPRE8oa2VudG9uQGdvb2dsZS5jb20pOiBVc2UgYXV0b2NvbmYgdG8gZGV0ZWN0IGF2
YWlsYWJpbGl0eSBvZgorLy8gRklYTUU6IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZhaWxhYmls
aXR5IG9mCiAvLyAgIGdldHRpbWVvZmRheSgpLgotLy8gVE9ETyhrZW50b25AZ29vZ2xlLmNvbSk6
IFRoZXJlIGFyZSBvdGhlciB3YXlzIHRvIGdldCB0aGUgdGltZSBvbgorLy8gRklYTUU6IFRoZXJl
IGFyZSBvdGhlciB3YXlzIHRvIGdldCB0aGUgdGltZSBvbgogLy8gICBXaW5kb3dzLCBsaWtlIEdl
dFRpY2tDb3VudCgpIG9yIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCkuICBNaW5HVwogLy8gICBz
dXBwb3J0cyB0aGVzZS4gIGNvbnNpZGVyIHVzaW5nIHRoZW0gaW5zdGVhZC4KLSNkZWZpbmUgR1RF
U1RfSEFTX0dFVFRJTUVPRkRBWV8gMQotI2luY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQK
LSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NSU5HVworIyAgZGVmaW5lIEdURVNUX0hBU19H
RVRUSU1FT0ZEQVlfIDEKKyMgIGluY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMgZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTUlOR1cKIAogLy8gY3BwbGludCB0aGlua3MgdGhhdCB0
aGUgaGVhZGVyIGlzIGFscmVhZHkgaW5jbHVkZWQsIHNvIHdlIHdhbnQgdG8KIC8vIHNpbGVuY2Ug
aXQuCi0jaW5jbHVkZSA8d2luZG93cy5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUgPHdpbmRvd3Mu
aD4gIC8vIE5PTElOVAorIyB1bmRlZiBtaW4KIAogI2Vsc2UKIAogLy8gQXNzdW1lIG90aGVyIHBs
YXRmb3JtcyBoYXZlIGdldHRpbWVvZmRheSgpLgotLy8gVE9ETyhrZW50b25AZ29vZ2xlLmNvbSk6
IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZhaWxhYmlsaXR5IG9mCisvLyBGSVhNRTogVXNlIGF1
dG9jb25mIHRvIGRldGVjdCBhdmFpbGFiaWxpdHkgb2YKIC8vICAgZ2V0dGltZW9mZGF5KCkuCi0j
ZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKKyMgZGVmaW5lIEdURVNUX0hBU19HRVRU
SU1FT0ZEQVlfIDEKIAogLy8gY3BwbGludCB0aGlua3MgdGhhdCB0aGUgaGVhZGVyIGlzIGFscmVh
ZHkgaW5jbHVkZWQsIHNvIHdlIHdhbnQgdG8KIC8vIHNpbGVuY2UgaXQuCi0jaW5jbHVkZSA8c3lz
L3RpbWUuaD4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHVuaXN0ZC5oPiAgLy8gTk9MSU5UCisjIGlu
Y2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKKyMgaW5jbHVkZSA8dW5pc3RkLmg+ICAvLyBO
T0xJTlQKIAogI2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAogCiAjaWYgR1RFU1RfSEFTX0VYQ0VQ
VElPTlMKLSNpbmNsdWRlIDxzdGRleGNlcHQ+CisjIGluY2x1ZGUgPHN0ZGV4Y2VwdD4KKyNlbmRp
ZgorCisjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworIyBpbmNsdWRlIDxhcnBhL2luZXQu
aD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxuZXRkYi5oPiAgLy8gTk9MSU5UCisjIGluY2x1ZGUg
PHN5cy9zb2NrZXQuaD4gIC8vIE5PTElOVAorIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4gIC8vIE5P
TElOVAogI2VuZGlmCiAKLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBp
cyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21l
IGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdp
bGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1
c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgot
Ly8gaGlzIGNvZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCiAjaW5jbHVkZSAi
c3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwog
CiAjaWYgR1RFU1RfT1NfV0lORE9XUwotI2RlZmluZSB2c25wcmludGYgX3ZzbnByaW50ZgorIyBk
ZWZpbmUgdnNucHJpbnRmIF92c25wcmludGYKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwog
CisjaWYgR1RFU1RfT1NfTUFDCisjaWZuZGVmIEdURVNUX09TX0lPUworI2luY2x1ZGUgPGNydF9l
eHRlcm5zLmg+CisjZW5kaWYKKyNlbmRpZgorCisjaWYgR1RFU1RfSEFTX0FCU0wKKyNpbmNsdWRl
ICJhYnNsL2RlYnVnZ2luZy9mYWlsdXJlX3NpZ25hbF9oYW5kbGVyLmgiCisjaW5jbHVkZSAiYWJz
bC9kZWJ1Z2dpbmcvc3RhY2t0cmFjZS5oIgorI2luY2x1ZGUgImFic2wvZGVidWdnaW5nL3N5bWJv
bGl6ZS5oIgorI2luY2x1ZGUgImFic2wvc3RyaW5ncy9zdHJfY2F0LmgiCisjZW5kaWYgIC8vIEdU
RVNUX0hBU19BQlNMCisKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIAogdXNpbmcgaW50ZXJuYWw6OkNv
dW50SWY7CkBAIC0xNTMsOCArMTcyLDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RD
YXNlRmlsdGVyW10gPSAiKkRlYXRoVGVzdDoqRGVhdGhUZXN0LyoiOwogLy8gQSB0ZXN0IGZpbHRl
ciB0aGF0IG1hdGNoZXMgZXZlcnl0aGluZy4KIHN0YXRpYyBjb25zdCBjaGFyIGtVbml2ZXJzYWxG
aWx0ZXJbXSA9ICIqIjsKIAotLy8gVGhlIGRlZmF1bHQgb3V0cHV0IGZpbGUgZm9yIFhNTCBvdXRw
dXQuCi1zdGF0aWMgY29uc3QgY2hhciBrRGVmYXVsdE91dHB1dEZpbGVbXSA9ICJ0ZXN0X2RldGFp
bC54bWwiOworLy8gVGhlIGRlZmF1bHQgb3V0cHV0IGZvcm1hdC4KK3N0YXRpYyBjb25zdCBjaGFy
IGtEZWZhdWx0T3V0cHV0Rm9ybWF0W10gPSAieG1sIjsKKy8vIFRoZSBkZWZhdWx0IG91dHB1dCBm
aWxlLgorc3RhdGljIGNvbnN0IGNoYXIga0RlZmF1bHRPdXRwdXRGaWxlW10gPSAidGVzdF9kZXRh
aWwiOwogCiAvLyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZSBmb3IgdGhlIHRlc3Qgc2hh
cmQgaW5kZXguCiBzdGF0aWMgY29uc3QgY2hhciBrVGVzdFNoYXJkSW5kZXhbXSA9ICJHVEVTVF9T
SEFSRF9JTkRFWCI7CkBAIC0xNzMsOCArMTk0LDM0IEBAIGNvbnN0IGNoYXIga1N0YWNrVHJhY2VN
YXJrZXJbXSA9ICJcblN0YWNrIHRyYWNlOlxuIjsKIC8vIHNwZWNpZmllZCBvbiB0aGUgY29tbWFu
ZCBsaW5lLgogYm9vbCBnX2hlbHBfZmxhZyA9IGZhbHNlOwogCisvLyBVdGlsdHkgZnVuY3Rpb24g
dG8gT3BlbiBGaWxlIGZvciBXcml0aW5nCitzdGF0aWMgRklMRSogT3BlbkZpbGVGb3JXcml0aW5n
KGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZmlsZSkgeworICBGSUxFKiBmaWxlb3V0ID0gTlVM
TDsKKyAgRmlsZVBhdGggb3V0cHV0X2ZpbGVfcGF0aChvdXRwdXRfZmlsZSk7CisgIEZpbGVQYXRo
IG91dHB1dF9kaXIob3V0cHV0X2ZpbGVfcGF0aC5SZW1vdmVGaWxlTmFtZSgpKTsKKworICBpZiAo
b3V0cHV0X2Rpci5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpIHsKKyAgICBmaWxlb3V0
ID0gcG9zaXg6OkZPcGVuKG91dHB1dF9maWxlLmNfc3RyKCksICJ3Iik7CisgIH0KKyAgaWYgKGZp
bGVvdXQgPT0gTlVMTCkgeworICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICJVbmFibGUgdG8gb3Bl
biBmaWxlIFwiIiA8PCBvdXRwdXRfZmlsZSA8PCAiXCIiOworICB9CisgIHJldHVybiBmaWxlb3V0
OworfQorCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAorLy8gQmF6ZWwgcGFzc2VzIGluIHRo
ZSBhcmd1bWVudCB0byAnLS10ZXN0X2ZpbHRlcicgdmlhIHRoZSBURVNUQlJJREdFX1RFU1RfT05M
WQorLy8gZW52aXJvbm1lbnQgdmFyaWFibGUuCitzdGF0aWMgY29uc3QgY2hhciogR2V0RGVmYXVs
dEZpbHRlcigpIHsKKyAgY29uc3QgY2hhciogY29uc3QgdGVzdGJyaWRnZV90ZXN0X29ubHkgPQor
ICAgICAgaW50ZXJuYWw6OnBvc2l4OjpHZXRFbnYoIlRFU1RCUklER0VfVEVTVF9PTkxZIik7Cisg
IGlmICh0ZXN0YnJpZGdlX3Rlc3Rfb25seSAhPSBOVUxMKSB7CisgICAgcmV0dXJuIHRlc3Ricmlk
Z2VfdGVzdF9vbmx5OworICB9CisgIHJldHVybiBrVW5pdmVyc2FsRmlsdGVyOworfQorCiBHVEVT
VF9ERUZJTkVfYm9vbF8oCiAgICAgYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMsCiAgICAgaW50ZXJu
YWw6OkJvb2xGcm9tR1Rlc3RFbnYoImFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIiwgZmFsc2UpLApA
QCAtMTg3LDcgKzIzNCw3IEBAIEdURVNUX0RFRklORV9ib29sXygKIAogR1RFU1RfREVGSU5FX2Jv
b2xfKAogICAgIGNhdGNoX2V4Y2VwdGlvbnMsCi0gICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RF
bnYoImNhdGNoX2V4Y2VwdGlvbnMiLCBmYWxzZSksCisgICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rl
c3RFbnYoImNhdGNoX2V4Y2VwdGlvbnMiLCB0cnVlKSwKICAgICAiVHJ1ZSBpZmYgIiBHVEVTVF9O
QU1FXwogICAgICIgc2hvdWxkIGNhdGNoIGV4Y2VwdGlvbnMgYW5kIHRyZWF0IHRoZW0gYXMgdGVz
dCBmYWlsdXJlcy4iKTsKIApAQCAtMTk3LDI2ICsyNDQsMzkgQEAgR1RFU1RfREVGSU5FX3N0cmlu
Z18oCiAgICAgIldoZXRoZXIgdG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0LiAgVmFsaWQgdmFs
dWVzOiB5ZXMsIG5vLCAiCiAgICAgImFuZCBhdXRvLiAgJ2F1dG8nIG1lYW5zIHRvIHVzZSBjb2xv
cnMgaWYgdGhlIG91dHB1dCBpcyAiCiAgICAgImJlaW5nIHNlbnQgdG8gYSB0ZXJtaW5hbCBhbmQg
dGhlIFRFUk0gZW52aXJvbm1lbnQgdmFyaWFibGUgIgotICAgICJpcyBzZXQgdG8geHRlcm0sIHh0
ZXJtLWNvbG9yLCB4dGVybS0yNTZjb2xvciwgbGludXggb3IgY3lnd2luLiIpOworICAgICJpcyBz
ZXQgdG8gYSB0ZXJtaW5hbCB0eXBlIHRoYXQgc3VwcG9ydHMgY29sb3JzLiIpOwogCiBHVEVTVF9E
RUZJTkVfc3RyaW5nXygKICAgICBmaWx0ZXIsCi0gICAgaW50ZXJuYWw6OlN0cmluZ0Zyb21HVGVz
dEVudigiZmlsdGVyIiwga1VuaXZlcnNhbEZpbHRlciksCisgICAgaW50ZXJuYWw6OlN0cmluZ0Zy
b21HVGVzdEVudigiZmlsdGVyIiwgR2V0RGVmYXVsdEZpbHRlcigpKSwKICAgICAiQSBjb2xvbi1z
ZXBhcmF0ZWQgbGlzdCBvZiBnbG9iIChub3QgcmVnZXgpIHBhdHRlcm5zICIKICAgICAiZm9yIGZp
bHRlcmluZyB0aGUgdGVzdHMgdG8gcnVuLCBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgIgogICAg
ICInLScgYW5kIGEgOiBzZXBhcmF0ZWQgbGlzdCBvZiBuZWdhdGl2ZSBwYXR0ZXJucyAodGVzdHMg
dG8gIgogICAgICJleGNsdWRlKS4gIEEgdGVzdCBpcyBydW4gaWYgaXQgbWF0Y2hlcyBvbmUgb2Yg
dGhlIHBvc2l0aXZlICIKICAgICAicGF0dGVybnMgYW5kIGRvZXMgbm90IG1hdGNoIGFueSBvZiB0
aGUgbmVnYXRpdmUgcGF0dGVybnMuIik7CiAKK0dURVNUX0RFRklORV9ib29sXygKKyAgICBpbnN0
YWxsX2ZhaWx1cmVfc2lnbmFsX2hhbmRsZXIsCisgICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RF
bnYoImluc3RhbGxfZmFpbHVyZV9zaWduYWxfaGFuZGxlciIsIGZhbHNlKSwKKyAgICAiSWYgdHJ1
ZSBhbmQgc3VwcG9ydGVkIG9uIHRoZSBjdXJyZW50IHBsYXRmb3JtLCAiIEdURVNUX05BTUVfICIg
c2hvdWxkICIKKyAgICAiaW5zdGFsbCBhIHNpZ25hbCBoYW5kbGVyIHRoYXQgZHVtcHMgZGVidWdn
aW5nIGluZm9ybWF0aW9uIHdoZW4gZmF0YWwgIgorICAgICJzaWduYWxzIGFyZSByYWlzZWQuIik7
CisKIEdURVNUX0RFRklORV9ib29sXyhsaXN0X3Rlc3RzLCBmYWxzZSwKICAgICAgICAgICAgICAg
ICAgICAiTGlzdCBhbGwgdGVzdHMgd2l0aG91dCBydW5uaW5nIHRoZW0uIik7CiAKKy8vIFRoZSBu
ZXQgcHJpb3JpdHkgb3JkZXIgYWZ0ZXIgZmxhZyBwcm9jZXNzaW5nIGlzIHRodXM6CisvLyAgIC0t
Z3Rlc3Rfb3V0cHV0IGNvbW1hbmQgbGluZSBmbGFnCisvLyAgIEdURVNUX09VVFBVVCBlbnZpcm9u
bWVudCB2YXJpYWJsZQorLy8gICBYTUxfT1VUUFVUX0ZJTEUgZW52aXJvbm1lbnQgdmFyaWFibGUK
Ky8vICAgJycKIEdURVNUX0RFRklORV9zdHJpbmdfKAogICAgIG91dHB1dCwKLSAgICBpbnRlcm5h
bDo6U3RyaW5nRnJvbUdUZXN0RW52KCJvdXRwdXQiLCAiIiksCi0gICAgIkEgZm9ybWF0IChjdXJy
ZW50bHkgbXVzdCBiZSBcInhtbFwiKSwgb3B0aW9uYWxseSBmb2xsb3dlZCAiCi0gICAgImJ5IGEg
Y29sb24gYW5kIGFuIG91dHB1dCBmaWxlIG5hbWUgb3IgZGlyZWN0b3J5LiBBIGRpcmVjdG9yeSAi
Ci0gICAgImlzIGluZGljYXRlZCBieSBhIHRyYWlsaW5nIHBhdGhuYW1lIHNlcGFyYXRvci4gIgor
ICAgIGludGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYoIm91dHB1dCIsCisgICAgICBpbnRlcm5h
bDo6T3V0cHV0RmxhZ0Fsc29DaGVja0VudlZhcigpLmNfc3RyKCkpLAorICAgICJBIGZvcm1hdCAo
ZGVmYXVsdHMgdG8gXCJ4bWxcIiBidXQgY2FuIGJlIHNwZWNpZmllZCB0byBiZSBcImpzb25cIiks
ICIKKyAgICAib3B0aW9uYWxseSBmb2xsb3dlZCBieSBhIGNvbG9uIGFuZCBhbiBvdXRwdXQgZmls
ZSBuYW1lIG9yIGRpcmVjdG9yeS4gIgorICAgICJBIGRpcmVjdG9yeSBpcyBpbmRpY2F0ZWQgYnkg
YSB0cmFpbGluZyBwYXRobmFtZSBzZXBhcmF0b3IuICIKICAgICAiRXhhbXBsZXM6IFwieG1sOmZp
bGVuYW1lLnhtbFwiLCBcInhtbDo6ZGlyZWN0b3J5bmFtZS9cIi4gIgogICAgICJJZiBhIGRpcmVj
dG9yeSBpcyBzcGVjaWZpZWQsIG91dHB1dCBmaWxlcyB3aWxsIGJlIGNyZWF0ZWQgIgogICAgICJ3
aXRoaW4gdGhhdCBkaXJlY3RvcnksIHdpdGggZmlsZS1uYW1lcyBiYXNlZCBvbiB0aGUgdGVzdCAi
CkBAIC0yMjksNiArMjg5LDEyIEBAIEdURVNUX0RFRklORV9ib29sXygKICAgICAiVHJ1ZSBpZmYg
IiBHVEVTVF9OQU1FXwogICAgICIgc2hvdWxkIGRpc3BsYXkgZWxhcHNlZCB0aW1lIGluIHRleHQg
b3V0cHV0LiIpOwogCitHVEVTVF9ERUZJTkVfYm9vbF8oCisgICAgcHJpbnRfdXRmOCwKKyAgICBp
bnRlcm5hbDo6Qm9vbEZyb21HVGVzdEVudigicHJpbnRfdXRmOCIsIHRydWUpLAorICAgICJUcnVl
IGlmZiAiIEdURVNUX05BTUVfCisgICAgIiBwcmludHMgVVRGOCBjaGFyYWN0ZXJzIGFzIHRleHQu
Iik7CisKIEdURVNUX0RFRklORV9pbnQzMl8oCiAgICAgcmFuZG9tX3NlZWQsCiAgICAgaW50ZXJu
YWw6OkludDMyRnJvbUdUZXN0RW52KCJyYW5kb21fc2VlZCIsIDApLApAQCAtMjU4LDEyICszMjQs
MjYgQEAgR1RFU1RfREVGSU5FX2ludDMyXygKICAgICAiVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0
YWNrIGZyYW1lcyB0byBwcmludCB3aGVuIGFuICIKICAgICAiYXNzZXJ0aW9uIGZhaWxzLiAgVGhl
IHZhbGlkIHJhbmdlIGlzIDAgdGhyb3VnaCAxMDAsIGluY2x1c2l2ZS4iKTsKIAorR1RFU1RfREVG
SU5FX3N0cmluZ18oCisgICAgc3RyZWFtX3Jlc3VsdF90bywKKyAgICBpbnRlcm5hbDo6U3RyaW5n
RnJvbUdUZXN0RW52KCJzdHJlYW1fcmVzdWx0X3RvIiwgIiIpLAorICAgICJUaGlzIGZsYWcgc3Bl
Y2lmaWVzIHRoZSBob3N0IG5hbWUgYW5kIHRoZSBwb3J0IG51bWJlciBvbiB3aGljaCB0byBzdHJl
YW0gIgorICAgICJ0ZXN0IHJlc3VsdHMuIEV4YW1wbGU6IFwibG9jYWxob3N0OjU1NVwiLiBUaGUg
ZmxhZyBpcyBlZmZlY3RpdmUgb25seSBvbiAiCisgICAgIkxpbnV4LiIpOworCiBHVEVTVF9ERUZJ
TkVfYm9vbF8oCiAgICAgdGhyb3dfb25fZmFpbHVyZSwKICAgICBpbnRlcm5hbDo6Qm9vbEZyb21H
VGVzdEVudigidGhyb3dfb25fZmFpbHVyZSIsIGZhbHNlKSwKICAgICAiV2hlbiB0aGlzIGZsYWcg
aXMgc3BlY2lmaWVkLCBhIGZhaWxlZCBhc3NlcnRpb24gd2lsbCB0aHJvdyBhbiBleGNlcHRpb24g
IgogICAgICJpZiBleGNlcHRpb25zIGFyZSBlbmFibGVkIG9yIGV4aXQgdGhlIHByb2dyYW0gd2l0
aCBhIG5vbi16ZXJvIGNvZGUgIgotICAgICJvdGhlcndpc2UuIik7CisgICAgIm90aGVyd2lzZS4g
Rm9yIHVzZSB3aXRoIGFuIGV4dGVybmFsIHRlc3QgZnJhbWV3b3JrLiIpOworCisjaWYgR1RFU1Rf
VVNFX09XTl9GTEFHRklMRV9GTEFHXworR1RFU1RfREVGSU5FX3N0cmluZ18oCisgICAgZmxhZ2Zp
bGUsCisgICAgaW50ZXJuYWw6OlN0cmluZ0Zyb21HVGVzdEVudigiZmxhZ2ZpbGUiLCAiIiksCisg
ICAgIlRoaXMgZmxhZyBzcGVjaWZpZXMgdGhlIGZsYWdmaWxlIHRvIHJlYWQgY29tbWFuZC1saW5l
IGZsYWdzIGZyb20uIik7CisjZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18K
IAogbmFtZXNwYWNlIGludGVybmFsIHsKIApAQCAtMjcyLDcgKzM1Miw4IEBAIG5hbWVzcGFjZSBp
bnRlcm5hbCB7CiAvLyB0aGFuIGtNYXhSYW5nZS4KIFVJbnQzMiBSYW5kb206OkdlbmVyYXRlKFVJ
bnQzMiByYW5nZSkgewogICAvLyBUaGVzZSBjb25zdGFudHMgYXJlIHRoZSBzYW1lIGFzIGFyZSB1
c2VkIGluIGdsaWJjJ3MgcmFuZCgzKS4KLSAgc3RhdGVfID0gKDExMDM1MTUyNDVVKnN0YXRlXyAr
IDEyMzQ1VSkgJSBrTWF4UmFuZ2U7CisgIC8vIFVzZSB3aWRlciB0eXBlcyB0aGFuIG5lY2Vzc2Fy
eSB0byBwcmV2ZW50IHVuc2lnbmVkIG92ZXJmbG93IGRpYWdub3N0aWNzLgorICBzdGF0ZV8gPSBz
dGF0aWNfY2FzdDxVSW50MzI+KDExMDM1MTUyNDVVTEwqc3RhdGVfICsgMTIzNDVVKSAlIGtNYXhS
YW5nZTsKIAogICBHVEVTVF9DSEVDS18ocmFuZ2UgPiAwKQogICAgICAgPDwgIkNhbm5vdCBnZW5l
cmF0ZSBhIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDApLiI7CkBAIC0yODksMTMgKzM3MCw3IEBA
IFVJbnQzMiBSYW5kb206OkdlbmVyYXRlKFVJbnQzMiByYW5nZSkgewogLy8gR1Rlc3RJc0luaXRp
YWxpemVkKCkgcmV0dXJucyB0cnVlIGlmZiB0aGUgdXNlciBoYXMgaW5pdGlhbGl6ZWQKIC8vIEdv
b2dsZSBUZXN0LiAgVXNlZnVsIGZvciBjYXRjaGluZyB0aGUgdXNlciBtaXN0YWtlIG9mIG5vdCBp
bml0aWFsaXppbmcKIC8vIEdvb2dsZSBUZXN0IGJlZm9yZSBjYWxsaW5nIFJVTl9BTExfVEVTVFMo
KS4KLS8vCi0vLyBBIHVzZXIgbXVzdCBjYWxsIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCkgdG8g
aW5pdGlhbGl6ZSBHb29nbGUKLS8vIFRlc3QuICBnX2luaXRfZ3Rlc3RfY291bnQgaXMgc2V0IHRv
IHRoZSBudW1iZXIgb2YgdGltZXMKLS8vIEluaXRHb29nbGVUZXN0KCkgaGFzIGJlZW4gY2FsbGVk
LiAgV2UgZG9uJ3QgcHJvdGVjdCB0aGlzIHZhcmlhYmxlCi0vLyB1bmRlciBhIG11dGV4IGFzIGl0
IGlzIG9ubHkgYWNjZXNzZWQgaW4gdGhlIG1haW4gdGhyZWFkLgotaW50IGdfaW5pdF9ndGVzdF9j
b3VudCA9IDA7Ci1zdGF0aWMgYm9vbCBHVGVzdElzSW5pdGlhbGl6ZWQoKSB7IHJldHVybiBnX2lu
aXRfZ3Rlc3RfY291bnQgIT0gMDsgfQorc3RhdGljIGJvb2wgR1Rlc3RJc0luaXRpYWxpemVkKCkg
eyByZXR1cm4gR2V0QXJndnMoKS5zaXplKCkgPiAwOyB9CiAKIC8vIEl0ZXJhdGVzIG92ZXIgYSB2
ZWN0b3Igb2YgVGVzdENhc2VzLCBrZWVwaW5nIGEgcnVubmluZyBzdW0gb2YgdGhlCiAvLyByZXN1
bHRzIG9mIGNhbGxpbmcgYSBnaXZlbiBpbnQtcmV0dXJuaW5nIG1ldGhvZCBvbiBlYWNoLgpAQCAt
MzQ5LDEwICs0MjQsMjEgQEAgdm9pZCBBc3NlcnRIZWxwZXI6Om9wZXJhdG9yPShjb25zdCBNZXNz
YWdlJiBtZXNzYWdlKSBjb25zdCB7CiB9CiAKIC8vIE11dGV4IGZvciBsaW5rZWQgcG9pbnRlcnMu
Ci1HVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhnX2xpbmtlZF9wdHJfbXV0ZXgpOworR1RFU1Rf
QVBJXyBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhnX2xpbmtlZF9wdHJfbXV0ZXgpOwogCi0v
LyBBcHBsaWNhdGlvbiBwYXRobmFtZSBnb3R0ZW4gaW4gSW5pdEdvb2dsZVRlc3QuCi1TdHJpbmcg
Z19leGVjdXRhYmxlX3BhdGg7CisvLyBBIGNvcHkgb2YgYWxsIGNvbW1hbmQgbGluZSBhcmd1bWVu
dHMuICBTZXQgYnkgSW5pdEdvb2dsZVRlc3QoKS4KK3N0YXRpYyA6OnN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiBnX2FyZ3ZzOworCis6OnN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRBcmd2cygp
IHsKKyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9HRVRfQVJHVlNfKQorICAvLyBHVEVTVF9DVVNU
T01fR0VUX0FSR1ZTXygpIG1heSByZXR1cm4gYSBjb250YWluZXIgb2Ygc3RkOjpzdHJpbmcgb3IK
KyAgLy8gOjpzdHJpbmcuIFRoaXMgY29kZSBjb252ZXJ0cyBpdCB0byB0aGUgYXBwcm9wcmlhdGUg
dHlwZS4KKyAgY29uc3QgYXV0byYgY3VzdG9tID0gR1RFU1RfQ1VTVE9NX0dFVF9BUkdWU18oKTsK
KyAgcmV0dXJuIDo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KGN1c3RvbS5iZWdpbigpLCBjdXN0
b20uZW5kKCkpOworI2Vsc2UgICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9HRVRfQVJHVlNfKQor
ICByZXR1cm4gZ19hcmd2czsKKyNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01fR0VUX0FS
R1ZTXykKK30KIAogLy8gUmV0dXJucyB0aGUgY3VycmVudCBhcHBsaWNhdGlvbidzIG5hbWUsIHJl
bW92aW5nIGRpcmVjdG9yeSBwYXRoIGlmIHRoYXQKIC8vIGlzIHByZXNlbnQuCkBAIC0zNjAsOSAr
NDQ2LDkgQEAgRmlsZVBhdGggR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkgewogICBGaWxlUGF0
aCByZXN1bHQ7CiAKICNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIHJlc3VsdC5TZXQoRmlsZVBhdGgo
Z19leGVjdXRhYmxlX3BhdGgpLlJlbW92ZUV4dGVuc2lvbigiZXhlIikpOworICByZXN1bHQuU2V0
KEZpbGVQYXRoKEdldEFyZ3ZzKClbMF0pLlJlbW92ZUV4dGVuc2lvbigiZXhlIikpOwogI2Vsc2UK
LSAgcmVzdWx0LlNldChGaWxlUGF0aChnX2V4ZWN1dGFibGVfcGF0aCkpOworICByZXN1bHQuU2V0
KEZpbGVQYXRoKEdldEFyZ3ZzKClbMF0pKTsKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwog
CiAgIHJldHVybiByZXN1bHQuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpOwpAQCAtMzcxLDMzICs0NTcs
MzQgQEAgRmlsZVBhdGggR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkgewogLy8gRnVuY3Rpb25z
IGZvciBwcm9jZXNzaW5nIHRoZSBndGVzdF9vdXRwdXQgZmxhZy4KIAogLy8gUmV0dXJucyB0aGUg
b3V0cHV0IGZvcm1hdCwgb3IgIiIgZm9yIG5vcm1hbCBwcmludGVkIG91dHB1dC4KLVN0cmluZyBV
bml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdCgpIHsKK3N0ZDo6c3RyaW5nIFVuaXRUZXN0
T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCkgewogICBjb25zdCBjaGFyKiBjb25zdCBndGVzdF9v
dXRwdXRfZmxhZyA9IEdURVNUX0ZMQUcob3V0cHV0KS5jX3N0cigpOwotICBpZiAoZ3Rlc3Rfb3V0
cHV0X2ZsYWcgPT0gTlVMTCkgcmV0dXJuIFN0cmluZygiIik7Ci0KICAgY29uc3QgY2hhciogY29u
c3QgY29sb24gPSBzdHJjaHIoZ3Rlc3Rfb3V0cHV0X2ZsYWcsICc6Jyk7CiAgIHJldHVybiAoY29s
b24gPT0gTlVMTCkgPwotICAgICAgU3RyaW5nKGd0ZXN0X291dHB1dF9mbGFnKSA6Ci0gICAgICBT
dHJpbmcoZ3Rlc3Rfb3V0cHV0X2ZsYWcsIGNvbG9uIC0gZ3Rlc3Rfb3V0cHV0X2ZsYWcpOworICAg
ICAgc3RkOjpzdHJpbmcoZ3Rlc3Rfb3V0cHV0X2ZsYWcpIDoKKyAgICAgIHN0ZDo6c3RyaW5nKGd0
ZXN0X291dHB1dF9mbGFnLCBjb2xvbiAtIGd0ZXN0X291dHB1dF9mbGFnKTsKIH0KIAogLy8gUmV0
dXJucyB0aGUgbmFtZSBvZiB0aGUgcmVxdWVzdGVkIG91dHB1dCBmaWxlLCBvciB0aGUgZGVmYXVs
dCBpZiBub25lCiAvLyB3YXMgZXhwbGljaXRseSBzcGVjaWZpZWQuCi1TdHJpbmcgVW5pdFRlc3RP
cHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSB7CitzdGQ6OnN0cmluZyBVbml0
VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpIHsKICAgY29uc3QgY2hh
ciogY29uc3QgZ3Rlc3Rfb3V0cHV0X2ZsYWcgPSBHVEVTVF9GTEFHKG91dHB1dCkuY19zdHIoKTsK
LSAgaWYgKGd0ZXN0X291dHB1dF9mbGFnID09IE5VTEwpCi0gICAgcmV0dXJuIFN0cmluZygiIik7
CisKKyAgc3RkOjpzdHJpbmcgZm9ybWF0ID0gR2V0T3V0cHV0Rm9ybWF0KCk7CisgIGlmIChmb3Jt
YXQuZW1wdHkoKSkKKyAgICBmb3JtYXQgPSBzdGQ6OnN0cmluZyhrRGVmYXVsdE91dHB1dEZvcm1h
dCk7CiAKICAgY29uc3QgY2hhciogY29uc3QgY29sb24gPSBzdHJjaHIoZ3Rlc3Rfb3V0cHV0X2Zs
YWcsICc6Jyk7CiAgIGlmIChjb2xvbiA9PSBOVUxMKQotICAgIHJldHVybiBTdHJpbmcoaW50ZXJu
YWw6OkZpbGVQYXRoOjpDb25jYXRQYXRocygKLSAgICAgICAgICAgICAgIGludGVybmFsOjpGaWxl
UGF0aCgKLSAgICAgICAgICAgICAgICAgICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+b3JpZ2lu
YWxfd29ya2luZ19kaXIoKSksCi0gICAgICAgICAgICAgICBpbnRlcm5hbDo6RmlsZVBhdGgoa0Rl
ZmF1bHRPdXRwdXRGaWxlKSkuVG9TdHJpbmcoKSApOworICAgIHJldHVybiBpbnRlcm5hbDo6Rmls
ZVBhdGg6Ok1ha2VGaWxlTmFtZSgKKyAgICAgICAgaW50ZXJuYWw6OkZpbGVQYXRoKAorICAgICAg
ICAgICAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPm9yaWdpbmFsX3dvcmtpbmdfZGlyKCkpLAor
ICAgICAgICBpbnRlcm5hbDo6RmlsZVBhdGgoa0RlZmF1bHRPdXRwdXRGaWxlKSwgMCwKKyAgICAg
ICAgZm9ybWF0LmNfc3RyKCkpLnN0cmluZygpOwogCiAgIGludGVybmFsOjpGaWxlUGF0aCBvdXRw
dXRfbmFtZShjb2xvbiArIDEpOwogICBpZiAoIW91dHB1dF9uYW1lLklzQWJzb2x1dGVQYXRoKCkp
Ci0gICAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IG9uIFdpbmRvd3MgXHNvbWVccGF0aCBpcyBu
b3QgYW4gYWJzb2x1dGUKKyAgICAvLyBGSVhNRTogb24gV2luZG93cyBcc29tZVxwYXRoIGlzIG5v
dCBhbiBhYnNvbHV0ZQogICAgIC8vIHBhdGggKGFzIGl0cyBtZWFuaW5nIGRlcGVuZHMgb24gdGhl
IGN1cnJlbnQgZHJpdmUpLCB5ZXQgdGhlCiAgICAgLy8gZm9sbG93aW5nIGxvZ2ljIGZvciB0dXJu
aW5nIGl0IGludG8gYW4gYWJzb2x1dGUgcGF0aCBpcyB3cm9uZy4KICAgICAvLyBGaXggaXQuCkBA
IC00MDYsMTIgKzQ5MywxMiBAQCBTdHJpbmcgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBh
dGhUb091dHB1dEZpbGUoKSB7CiAgICAgICAgIGludGVybmFsOjpGaWxlUGF0aChjb2xvbiArIDEp
KTsKIAogICBpZiAoIW91dHB1dF9uYW1lLklzRGlyZWN0b3J5KCkpCi0gICAgcmV0dXJuIG91dHB1
dF9uYW1lLlRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG91dHB1dF9uYW1lLnN0cmluZygpOwogCiAg
IGludGVybmFsOjpGaWxlUGF0aCByZXN1bHQoaW50ZXJuYWw6OkZpbGVQYXRoOjpHZW5lcmF0ZVVu
aXF1ZUZpbGVOYW1lKAogICAgICAgb3V0cHV0X25hbWUsIGludGVybmFsOjpHZXRDdXJyZW50RXhl
Y3V0YWJsZU5hbWUoKSwKICAgICAgIEdldE91dHB1dEZvcm1hdCgpLmNfc3RyKCkpKTsKLSAgcmV0
dXJuIHJlc3VsdC5Ub1N0cmluZygpOworICByZXR1cm4gcmVzdWx0LnN0cmluZygpOwogfQogCiAv
LyBSZXR1cm5zIHRydWUgaWZmIHRoZSB3aWxkY2FyZCBwYXR0ZXJuIG1hdGNoZXMgdGhlIHN0cmlu
Zy4gIFRoZQpAQCAtNDM2LDcgKzUyMyw4IEBAIGJvb2wgVW5pdFRlc3RPcHRpb25zOjpQYXR0ZXJu
TWF0Y2hlc1N0cmluZyhjb25zdCBjaGFyICpwYXR0ZXJuLAogICB9CiB9CiAKLWJvb2wgVW5pdFRl
c3RPcHRpb25zOjpNYXRjaGVzRmlsdGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgY2hhciog
ZmlsdGVyKSB7Citib29sIFVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcigKKyAgICBjb25z
dCBzdGQ6OnN0cmluZyYgbmFtZSwgY29uc3QgY2hhciogZmlsdGVyKSB7CiAgIGNvbnN0IGNoYXIg
KmN1cl9wYXR0ZXJuID0gZmlsdGVyOwogICBmb3IgKDs7KSB7CiAgICAgaWYgKFBhdHRlcm5NYXRj
aGVzU3RyaW5nKGN1cl9wYXR0ZXJuLCBuYW1lLmNfc3RyKCkpKSB7CkBAIC00NTYsMjggKzU0NCwy
NCBAQCBib29sIFVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcihjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IGNoYXIqIGZpbHRlcikgewogICB9CiB9CiAKLS8vIFRPRE8oa2VpdGhyYXkpOiBt
b3ZlIFN0cmluZyBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMgdG8gZ3Rlc3Qtc3RyaW5nLmNjLgot
CiAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB1c2VyLXNwZWNpZmllZCBmaWx0ZXIgbWF0Y2hlcyB0
aGUgdGVzdCBjYXNlCiAvLyBuYW1lIGFuZCB0aGUgdGVzdCBuYW1lLgotYm9vbCBVbml0VGVzdE9w
dGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KGNvbnN0IFN0cmluZyAmdGVzdF9jYXNlX25hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nICZ0ZXN0
X25hbWUpIHsKLSAgY29uc3QgU3RyaW5nJiBmdWxsX25hbWUgPSBTdHJpbmc6OkZvcm1hdCgiJXMu
JXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY2Fz
ZV9uYW1lLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdF9uYW1lLmNfc3RyKCkpOworYm9vbCBVbml0VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNo
ZXNUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdGVzdF9uYW1lKSB7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmdWxsX25hbWUgPSB0ZXN0X2Nhc2VfbmFtZSArICIuIiAr
IHRlc3RfbmFtZS5jX3N0cigpOwogCiAgIC8vIFNwbGl0IC0tZ3Rlc3RfZmlsdGVyIGF0ICctJywg
aWYgdGhlcmUgaXMgb25lLCB0byBzZXBhcmF0ZSBpbnRvCiAgIC8vIHBvc2l0aXZlIGZpbHRlciBh
bmQgbmVnYXRpdmUgZmlsdGVyIHBvcnRpb25zCiAgIGNvbnN0IGNoYXIqIGNvbnN0IHAgPSBHVEVT
VF9GTEFHKGZpbHRlcikuY19zdHIoKTsKICAgY29uc3QgY2hhciogY29uc3QgZGFzaCA9IHN0cmNo
cihwLCAnLScpOwotICBTdHJpbmcgcG9zaXRpdmU7Ci0gIFN0cmluZyBuZWdhdGl2ZTsKKyAgc3Rk
OjpzdHJpbmcgcG9zaXRpdmU7CisgIHN0ZDo6c3RyaW5nIG5lZ2F0aXZlOwogICBpZiAoZGFzaCA9
PSBOVUxMKSB7CiAgICAgcG9zaXRpdmUgPSBHVEVTVF9GTEFHKGZpbHRlcikuY19zdHIoKTsgIC8v
IFdob2xlIHN0cmluZyBpcyBhIHBvc2l0aXZlIGZpbHRlcgotICAgIG5lZ2F0aXZlID0gU3RyaW5n
KCIiKTsKKyAgICBuZWdhdGl2ZSA9ICIiOwogICB9IGVsc2UgewotICAgIHBvc2l0aXZlID0gU3Ry
aW5nKHAsIGRhc2ggLSBwKTsgIC8vIEV2ZXJ5dGhpbmcgdXAgdG8gdGhlIGRhc2gKLSAgICBuZWdh
dGl2ZSA9IFN0cmluZyhkYXNoKzEpOyAgICAgICAvLyBFdmVyeXRoaW5nIGFmdGVyIHRoZSBkYXNo
CisgICAgcG9zaXRpdmUgPSBzdGQ6OnN0cmluZyhwLCBkYXNoKTsgICAvLyBFdmVyeXRoaW5nIHVw
IHRvIHRoZSBkYXNoCisgICAgbmVnYXRpdmUgPSBzdGQ6OnN0cmluZyhkYXNoICsgMSk7ICAvLyBF
dmVyeXRoaW5nIGFmdGVyIHRoZSBkYXNoCiAgICAgaWYgKHBvc2l0aXZlLmVtcHR5KCkpIHsKICAg
ICAgIC8vIFRyZWF0ICctdGVzdDEnIGFzIHRoZSBzYW1lIGFzICcqLXRlc3QxJwogICAgICAgcG9z
aXRpdmUgPSBrVW5pdmVyc2FsRmlsdGVyOwpAQCAtNDkwLDIwICs1NzQsMzMgQEAgYm9vbCBVbml0
VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KGNvbnN0IFN0cmluZyAmdGVzdF9jYXNlX25h
bWUsCiAgICAgICAgICAgIU1hdGNoZXNGaWx0ZXIoZnVsbF9uYW1lLCBuZWdhdGl2ZS5jX3N0cigp
KSk7CiB9CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dTCisjaWYgR1RFU1RfSEFTX1NFSAogLy8gUmV0
dXJucyBFWENFUFRJT05fRVhFQ1VURV9IQU5ETEVSIGlmIEdvb2dsZSBUZXN0IHNob3VsZCBoYW5k
bGUgdGhlCiAvLyBnaXZlbiBTRUggZXhjZXB0aW9uLCBvciBFWENFUFRJT05fQ09OVElOVUVfU0VB
UkNIIG90aGVyd2lzZS4KIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIGFzIGFuIF9fZXhjZXB0
IGNvbmRpdGlvbi4KIGludCBVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSChE
V09SRCBleGNlcHRpb25fY29kZSkgewotICAvLyBHb29nbGUgVGVzdCBzaG91bGQgaGFuZGxlIGFu
IGV4Y2VwdGlvbiBpZjoKKyAgLy8gR29vZ2xlIFRlc3Qgc2hvdWxkIGhhbmRsZSBhIFNFSCBleGNl
cHRpb24gaWY6CiAgIC8vICAgMS4gdGhlIHVzZXIgd2FudHMgaXQgdG8sIEFORAotICAvLyAgIDIu
IHRoaXMgaXMgbm90IGEgYnJlYWtwb2ludCBleGNlcHRpb24uCi0gIHJldHVybiAoR1RFU1RfRkxB
RyhjYXRjaF9leGNlcHRpb25zKSAmJgotICAgICAgICAgIGV4Y2VwdGlvbl9jb2RlICE9IEVYQ0VQ
VElPTl9CUkVBS1BPSU5UKSA/Ci0gICAgICBFWENFUFRJT05fRVhFQ1VURV9IQU5ETEVSIDoKLSAg
ICAgIEVYQ0VQVElPTl9DT05USU5VRV9TRUFSQ0g7CisgIC8vICAgMi4gdGhpcyBpcyBub3QgYSBi
cmVha3BvaW50IGV4Y2VwdGlvbiwgQU5ECisgIC8vICAgMy4gdGhpcyBpcyBub3QgYSBDKysgZXhj
ZXB0aW9uIChWQysrIGltcGxlbWVudHMgdGhlbSB2aWEgU0VILAorICAvLyAgICAgIGFwcGFyZW50
bHkpLgorICAvLworICAvLyBTRUggZXhjZXB0aW9uIGNvZGUgZm9yIEMrKyBleGNlcHRpb25zLgor
ICAvLyAoc2VlIGh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20va2IvMTg1Mjk0IGZvciBtb3Jl
IGluZm9ybWF0aW9uKS4KKyAgY29uc3QgRFdPUkQga0N4eEV4Y2VwdGlvbkNvZGUgPSAweGUwNmQ3
MzYzOworCisgIGJvb2wgc2hvdWxkX2hhbmRsZSA9IHRydWU7CisKKyAgaWYgKCFHVEVTVF9GTEFH
KGNhdGNoX2V4Y2VwdGlvbnMpKQorICAgIHNob3VsZF9oYW5kbGUgPSBmYWxzZTsKKyAgZWxzZSBp
ZiAoZXhjZXB0aW9uX2NvZGUgPT0gRVhDRVBUSU9OX0JSRUFLUE9JTlQpCisgICAgc2hvdWxkX2hh
bmRsZSA9IGZhbHNlOworICBlbHNlIGlmIChleGNlcHRpb25fY29kZSA9PSBrQ3h4RXhjZXB0aW9u
Q29kZSkKKyAgICBzaG91bGRfaGFuZGxlID0gZmFsc2U7CisKKyAgcmV0dXJuIHNob3VsZF9oYW5k
bGUgPyBFWENFUFRJT05fRVhFQ1VURV9IQU5ETEVSIDogRVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJD
SDsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworI2VuZGlmICAvLyBHVEVTVF9IQVNf
U0VICiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogCkBAIC01NzgsMTMgKzY3NSwxMyBAQCBl
eHRlcm4gY29uc3QgVHlwZUlkIGtUZXN0VHlwZUlkSW5Hb29nbGVUZXN0ID0gR2V0VGVzdFR5cGVJ
ZCgpOwogLy8gVGhpcyBwcmVkaWNhdGUtZm9ybWF0dGVyIGNoZWNrcyB0aGF0ICdyZXN1bHRzJyBj
b250YWlucyBhIHRlc3QgcGFydAogLy8gZmFpbHVyZSBvZiB0aGUgZ2l2ZW4gdHlwZSBhbmQgdGhh
dCB0aGUgZmFpbHVyZSBtZXNzYWdlIGNvbnRhaW5zIHRoZQogLy8gZ2l2ZW4gc3Vic3RyaW5nLgot
QXNzZXJ0aW9uUmVzdWx0IEhhc09uZUZhaWx1cmUoY29uc3QgY2hhciogLyogcmVzdWx0c19leHBy
ICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLyogdHlwZV9l
eHByICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogLyogc3Vi
c3RyX2V4cHIgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UGFy
dFJlc3VsdEFycmF5JiByZXN1bHRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVz
dFBhcnRSZXN1bHQ6OlR5cGUgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHN1YnN0cikgewotICBjb25zdCBTdHJpbmcgZXhwZWN0ZWQodHlwZSA9PSBUZXN0
UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSA/CitzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IEhhc09u
ZUZhaWx1cmUoY29uc3QgY2hhciogLyogcmVzdWx0c19leHByICovLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qIHR5cGVfZXhwciAqLywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKiBzdWJzdHJfZXhw
ciAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UGFy
dFJlc3VsdEFycmF5JiByZXN1bHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN1YnN0cikgeworICBjb25zdCBzdGQ6OnN0
cmluZyBleHBlY3RlZCh0eXBlID09IFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlID8KICAg
ICAgICAgICAgICAgICAgICAgICAgICIxIGZhdGFsIGZhaWx1cmUiIDoKICAgICAgICAgICAgICAg
ICAgICAgICAgICIxIG5vbi1mYXRhbCBmYWlsdXJlIik7CiAgIE1lc3NhZ2UgbXNnOwpAQCAtNTk0
LDIzICs2OTEsMjEgQEAgQXNzZXJ0aW9uUmVzdWx0IEhhc09uZUZhaWx1cmUoY29uc3QgY2hhciog
LyogcmVzdWx0c19leHByICovLAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXpl
KCk7IGkrKykgewogICAgICAgbXNnIDw8ICJcbiIgPDwgcmVzdWx0cy5HZXRUZXN0UGFydFJlc3Vs
dChpKTsKICAgICB9Ci0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAgICByZXR1
cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG1zZzsKICAgfQogCiAgIGNvbnN0IFRlc3RQYXJ0UmVz
dWx0JiByID0gcmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgwKTsKICAgaWYgKHIudHlwZSgpICE9
IHR5cGUpIHsKLSAgICBtc2cgPDwgIkV4cGVjdGVkOiAiIDw8IGV4cGVjdGVkIDw8ICJcbiIKLSAg
ICAgICAgPDwgIiAgQWN0dWFsOlxuIgotICAgICAgICA8PCByOwotICAgIHJldHVybiBBc3NlcnRp
b25GYWlsdXJlKG1zZyk7CisgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiRXhwZWN0
ZWQ6ICIgPDwgZXhwZWN0ZWQgPDwgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PDwgIiAgQWN0dWFsOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcjsKICAg
fQogCi0gIGlmIChzdHJzdHIoci5tZXNzYWdlKCksIHN1YnN0cikgPT0gTlVMTCkgewotICAgIG1z
ZyA8PCAiRXhwZWN0ZWQ6ICIgPDwgZXhwZWN0ZWQgPDwgIiBjb250YWluaW5nIFwiIgotICAgICAg
ICA8PCBzdWJzdHIgPDwgIlwiXG4iCi0gICAgICAgIDw8ICIgIEFjdHVhbDpcbiIKLSAgICAgICAg
PDwgcjsKLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOworICBpZiAoc3Ryc3RyKHIu
bWVzc2FnZSgpLCBzdWJzdHIuY19zdHIoKSkgPT0gTlVMTCkgeworICAgIHJldHVybiBBc3NlcnRp
b25GYWlsdXJlKCkgPDwgIkV4cGVjdGVkOiAiIDw8IGV4cGVjdGVkIDw8ICIgY29udGFpbmluZyBc
IiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHN1YnN0ciA8PCAiXCJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgIEFjdHVhbDpcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IHI7CiAgIH0KIAogICByZXR1cm4gQXNzZXJ0aW9uU3VjY2Vz
cygpOwpAQCAtNjE5LDIwICs3MTQsMTcgQEAgQXNzZXJ0aW9uUmVzdWx0IEhhc09uZUZhaWx1cmUo
Y29uc3QgY2hhciogLyogcmVzdWx0c19leHByICovLAogLy8gVGhlIGNvbnN0cnVjdG9yIG9mIFNp
bmdsZUZhaWx1cmVDaGVja2VyIHJlbWVtYmVycyB3aGVyZSB0byBsb29rIHVwCiAvLyB0ZXN0IHBh
cnQgcmVzdWx0cywgd2hhdCB0eXBlIG9mIGZhaWx1cmUgd2UgZXhwZWN0LCBhbmQgd2hhdAogLy8g
c3Vic3RyaW5nIHRoZSBmYWlsdXJlIG1lc3NhZ2Ugc2hvdWxkIGNvbnRhaW4uCi1TaW5nbGVGYWls
dXJlQ2hlY2tlcjo6IFNpbmdsZUZhaWx1cmVDaGVja2VyKAotICAgIGNvbnN0IFRlc3RQYXJ0UmVz
dWx0QXJyYXkqIHJlc3VsdHMsCi0gICAgVGVzdFBhcnRSZXN1bHQ6OlR5cGUgdHlwZSwKLSAgICBj
b25zdCBjaGFyKiBzdWJzdHIpCi0gICAgOiByZXN1bHRzXyhyZXN1bHRzKSwKLSAgICAgIHR5cGVf
KHR5cGUpLAotICAgICAgc3Vic3RyXyhzdWJzdHIpIHt9CitTaW5nbGVGYWlsdXJlQ2hlY2tlcjo6
U2luZ2xlRmFpbHVyZUNoZWNrZXIoY29uc3QgVGVzdFBhcnRSZXN1bHRBcnJheSogcmVzdWx0cywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0UGFydFJlc3Vs
dDo6VHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBzdWJzdHIpCisgICAgOiByZXN1bHRzXyhyZXN1bHRzKSwgdHlw
ZV8odHlwZSksIHN1YnN0cl8oc3Vic3RyKSB7fQogCiAvLyBUaGUgZGVzdHJ1Y3RvciBvZiBTaW5n
bGVGYWlsdXJlQ2hlY2tlciB2ZXJpZmllcyB0aGF0IHRoZSBnaXZlbgogLy8gVGVzdFBhcnRSZXN1
bHRBcnJheSBjb250YWlucyBleGFjdGx5IG9uZSBmYWlsdXJlIHRoYXQgaGFzIHRoZSBnaXZlbgog
Ly8gdHlwZSBhbmQgY29udGFpbnMgdGhlIGdpdmVuIHN1YnN0cmluZy4gIElmIHRoYXQncyBub3Qg
dGhlIGNhc2UsIGEKIC8vIG5vbi1mYXRhbCBmYWlsdXJlIHdpbGwgYmUgZ2VuZXJhdGVkLgogU2lu
Z2xlRmFpbHVyZUNoZWNrZXI6On5TaW5nbGVGYWlsdXJlQ2hlY2tlcigpIHsKLSAgRVhQRUNUX1BS
RURfRk9STUFUMyhIYXNPbmVGYWlsdXJlLCAqcmVzdWx0c18sIHR5cGVfLCBzdWJzdHJfLmNfc3Ry
KCkpOworICBFWFBFQ1RfUFJFRF9GT1JNQVQzKEhhc09uZUZhaWx1cmUsICpyZXN1bHRzXywgdHlw
ZV8sIHN1YnN0cl8pOwogfQogCiBEZWZhdWx0R2xvYmFsVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjo6
RGVmYXVsdEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIoCkBAIC03MDksMTEgKzgwMSwyMiBA
QCBpbnQgVW5pdFRlc3RJbXBsOjpmYWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJu
IFN1bU92ZXJUZXN0Q2FzZUxpc3QodGVzdF9jYXNlc18sICZUZXN0Q2FzZTo6ZmFpbGVkX3Rlc3Rf
Y291bnQpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3
aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0LgoraW50IFVuaXRUZXN0SW1wbDo6cmVw
b3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3QgeworICByZXR1cm4gU3VtT3ZlclRl
c3RDYXNlTGlzdCh0ZXN0X2Nhc2VzXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlRl
c3RDYXNlOjpyZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQpOworfQorCiAvLyBHZXRzIHRo
ZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMuCiBpbnQgVW5pdFRlc3RJbXBsOjpkaXNhYmxlZF90
ZXN0X2NvdW50KCkgY29uc3QgewogICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0ZXN0X2Nh
c2VzXywgJlRlc3RDYXNlOjpkaXNhYmxlZF90ZXN0X2NvdW50KTsKIH0KIAorLy8gR2V0cyB0aGUg
bnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50ZWQgaW4gdGhlIFhNTCByZXBvcnQuCitpbnQgVW5p
dFRlc3RJbXBsOjpyZXBvcnRhYmxlX3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBTdW1P
dmVyVGVzdENhc2VMaXN0KHRlc3RfY2FzZXNfLCAmVGVzdENhc2U6OnJlcG9ydGFibGVfdGVzdF9j
b3VudCk7Cit9CisKIC8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdHMuCiBpbnQgVW5pdFRl
c3RJbXBsOjp0b3RhbF90ZXN0X2NvdW50KCkgY29uc3QgewogICByZXR1cm4gU3VtT3ZlclRlc3RD
YXNlTGlzdCh0ZXN0X2Nhc2VzXywgJlRlc3RDYXNlOjp0b3RhbF90ZXN0X2NvdW50KTsKQEAgLTcy
NCw3ICs4MjcsNyBAQCBpbnQgVW5pdFRlc3RJbXBsOjp0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0
IHsKICAgcmV0dXJuIFN1bU92ZXJUZXN0Q2FzZUxpc3QodGVzdF9jYXNlc18sICZUZXN0Q2FzZTo6
dGVzdF90b19ydW5fY291bnQpOwogfQogCi0vLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNr
IHRyYWNlIGFzIGEgU3RyaW5nLgorLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFj
ZSBhcyBhbiBzdGQ6OnN0cmluZy4KIC8vCiAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhY2sg
ZnJhbWVzIHRvIGJlIGluY2x1ZGVkIGlzIHNwZWNpZmllZCBieQogLy8gdGhlIGd0ZXN0X3N0YWNr
X3RyYWNlX2RlcHRoIGZsYWcuICBUaGUgc2tpcF9jb3VudCBwYXJhbWV0ZXIKQEAgLTczNCw5ICs4
MzcsMTMgQEAgaW50IFVuaXRUZXN0SW1wbDo6dGVzdF90b19ydW5fY291bnQoKSBjb25zdCB7CiAv
LyBGb3IgZXhhbXBsZSwgaWYgRm9vKCkgY2FsbHMgQmFyKCksIHdoaWNoIGluIHR1cm4gY2FsbHMK
IC8vIEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoMSksIEZvbygpIHdpbGwgYmUgaW5jbHVk
ZWQgaW4gdGhlCiAvLyB0cmFjZSBidXQgQmFyKCkgYW5kIEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNl
cHRUb3AoKSB3b24ndC4KLVN0cmluZyBVbml0VGVzdEltcGw6OkN1cnJlbnRPc1N0YWNrVHJhY2VF
eGNlcHRUb3AoaW50IHNraXBfY291bnQpIHsKLSAgKHZvaWQpc2tpcF9jb3VudDsKLSAgcmV0dXJu
IFN0cmluZygiIik7CitzdGQ6OnN0cmluZyBVbml0VGVzdEltcGw6OkN1cnJlbnRPc1N0YWNrVHJh
Y2VFeGNlcHRUb3AoaW50IHNraXBfY291bnQpIHsKKyAgcmV0dXJuIG9zX3N0YWNrX3RyYWNlX2dl
dHRlcigpLT5DdXJyZW50U3RhY2tUcmFjZSgKKyAgICAgIHN0YXRpY19jYXN0PGludD4oR1RFU1Rf
RkxBRyhzdGFja190cmFjZV9kZXB0aCkpLAorICAgICAgc2tpcF9jb3VudCArIDEKKyAgICAgIC8v
IFNraXBzIHRoZSB1c2VyLXNwZWNpZmllZCBudW1iZXIgb2YgZnJhbWVzIHBsdXMgdGhpcyBmdW5j
dGlvbgorICAgICAgLy8gaXRzZWxmLgorICAgICAgKTsgIC8vIE5PTElOVAogfQogCiAvLyBSZXR1
cm5zIHRoZSBjdXJyZW50IHRpbWUgaW4gbWlsbGlzZWNvbmRzLgpAQCAtNzUxLDcgKzg1OCw3IEBA
IFRpbWVJbk1pbGxpcyBHZXRUaW1lSW5NaWxsaXMoKSB7CiAgIFNZU1RFTVRJTUUgbm93X3N5c3Rp
bWU7CiAgIEZJTEVUSU1FIG5vd19maWxldGltZTsKICAgVUxBUkdFX0lOVEVHRVIgbm93X2ludDY0
OwotICAvLyBUT0RPKGtlbnRvbkBnb29nbGUuY29tKTogU2hvdWxkbid0IHRoaXMganVzdCB1c2UK
KyAgLy8gRklYTUU6IFNob3VsZG4ndCB0aGlzIGp1c3QgdXNlCiAgIC8vICAgR2V0U3lzdGVtVGlt
ZUFzRmlsZVRpbWUoKT8KICAgR2V0U3lzdGVtVGltZSgmbm93X3N5c3RpbWUpOwogICBpZiAoU3lz
dGVtVGltZVRvRmlsZVRpbWUoJm5vd19zeXN0aW1lLCAmbm93X2ZpbGV0aW1lKSkgewpAQCAtNzY0
LDY1ICs4NzEsMjggQEAgVGltZUluTWlsbGlzIEdldFRpbWVJbk1pbGxpcygpIHsKICAgcmV0dXJu
IDA7CiAjZWxpZiBHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9IQVNfR0VUVElNRU9GREFZXwog
ICBfX3RpbWViNjQgbm93OwotI2lmZGVmIF9NU0NfVkVSCisKICAgLy8gTVNWQyA4IGRlcHJlY2F0
ZXMgX2Z0aW1lNjQoKSwgc28gd2Ugd2FudCB0byBzdXBwcmVzcyB3YXJuaW5nIDQ5OTYKICAgLy8g
KGRlcHJlY2F0ZWQgZnVuY3Rpb24pIHRoZXJlLgotICAvLyBUT0RPKGtlbnRvbkBnb29nbGUuY29t
KTogVXNlIEdldFRpY2tDb3VudCgpPyAgT3IgdXNlCisgIC8vIEZJWE1FOiBVc2UgR2V0VGlja0Nv
dW50KCk/ICBPciB1c2UKICAgLy8gICBTeXN0ZW1UaW1lVG9GaWxlVGltZSgpCi0jcHJhZ21hIHdh
cm5pbmcocHVzaCkgICAgICAgICAgLy8gU2F2ZXMgdGhlIGN1cnJlbnQgd2FybmluZyBzdGF0ZS4K
LSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5OTYpICAvLyBUZW1wb3JhcmlseSBkaXNhYmxlcyB3
YXJuaW5nIDQ5OTYuCisgIEdURVNUX0RJU0FCTEVfTVNDX0RFUFJFQ0FURURfUFVTSF8oKQogICBf
ZnRpbWU2NCgmbm93KTsKLSNwcmFnbWEgd2FybmluZyhwb3ApICAgICAgICAgICAvLyBSZXN0b3Jl
cyB0aGUgd2FybmluZyBzdGF0ZS4KLSNlbHNlCi0gIF9mdGltZTY0KCZub3cpOwotI2VuZGlmICAv
LyBfTVNDX1ZFUgorICBHVEVTVF9ESVNBQkxFX01TQ19ERVBSRUNBVEVEX1BPUF8oKQorCiAgIHJl
dHVybiBzdGF0aWNfY2FzdDxUaW1lSW5NaWxsaXM+KG5vdy50aW1lKSAqIDEwMDAgKyBub3cubWls
bGl0bTsKICNlbGlmIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfCiAgIHN0cnVjdCB0aW1ldmFsIG5v
dzsKICAgZ2V0dGltZW9mZGF5KCZub3csIE5VTEwpOwogICByZXR1cm4gc3RhdGljX2Nhc3Q8VGlt
ZUluTWlsbGlzPihub3cudHZfc2VjKSAqIDEwMDAgKyBub3cudHZfdXNlYyAvIDEwMDA7CiAjZWxz
ZQotI2Vycm9yICJEb24ndCBrbm93IGhvdyB0byBnZXQgdGhlIGN1cnJlbnQgdGltZSBvbiB5b3Vy
IHN5c3RlbS4iCisjIGVycm9yICJEb24ndCBrbm93IGhvdyB0byBnZXQgdGhlIGN1cnJlbnQgdGlt
ZSBvbiB5b3VyIHN5c3RlbS4iCiAjZW5kaWYKIH0KIAogLy8gVXRpbGl0aWVzCiAKLS8vIGNsYXNz
IFN0cmluZwotCi0vLyBSZXR1cm5zIHRoZSBpbnB1dCBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVz
IGlmIGl0J3Mgbm90IE5VTEw7Ci0vLyBvdGhlcndpc2UgcmV0dXJucyAiKG51bGwpIi4gIEZvciBl
eGFtcGxlLCAiXCJIZWxsb1wiIiBpcyByZXR1cm5lZAotLy8gZm9yIGlucHV0ICJIZWxsbyIuCi0v
LwotLy8gVGhpcyBpcyB1c2VmdWwgZm9yIHByaW50aW5nIGEgQyBzdHJpbmcgaW4gdGhlIHN5bnRh
eCBvZiBhIGxpdGVyYWwuCi0vLwotLy8gS25vd24gaXNzdWU6IGVzY2FwZSBzZXF1ZW5jZXMgYXJl
IG5vdCBoYW5kbGVkIHlldC4KLVN0cmluZyBTdHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKGNvbnN0
IGNoYXIqIGNfc3RyKSB7Ci0gIHJldHVybiBjX3N0ciA/IFN0cmluZzo6Rm9ybWF0KCJcIiVzXCIi
LCBjX3N0cikgOiBTdHJpbmcoIihudWxsKSIpOwotfQotCi0vLyBDb3BpZXMgYXQgbW9zdCBsZW5n
dGggY2hhcmFjdGVycyBmcm9tIHN0ciBpbnRvIGEgbmV3bHktYWxsb2NhdGVkCi0vLyBwaWVjZSBv
ZiBtZW1vcnkgb2Ygc2l6ZSBsZW5ndGgrMS4gIFRoZSBtZW1vcnkgaXMgYWxsb2NhdGVkIHdpdGgg
bmV3W10uCi0vLyBBIHRlcm1pbmF0aW5nIG51bGwgYnl0ZSBpcyB3cml0dGVuIHRvIHRoZSBtZW1v
cnksIGFuZCBhIHBvaW50ZXIgdG8gaXQKLS8vIGlzIHJldHVybmVkLiAgSWYgc3RyIGlzIE5VTEws
IE5VTEwgaXMgcmV0dXJuZWQuCi1zdGF0aWMgY2hhciogQ2xvbmVTdHJpbmcoY29uc3QgY2hhciog
c3RyLCBzaXplX3QgbGVuZ3RoKSB7Ci0gIGlmIChzdHIgPT0gTlVMTCkgewotICAgIHJldHVybiBO
VUxMOwotICB9IGVsc2UgewotICAgIGNoYXIqIGNvbnN0IGNsb25lID0gbmV3IGNoYXJbbGVuZ3Ro
ICsgMV07Ci0gICAgcG9zaXg6OlN0ck5DcHkoY2xvbmUsIHN0ciwgbGVuZ3RoKTsKLSAgICBjbG9u
ZVtsZW5ndGhdID0gJ1wwJzsKLSAgICByZXR1cm4gY2xvbmU7Ci0gIH0KLX0KLQotLy8gQ2xvbmVz
IGEgMC10ZXJtaW5hdGVkIEMgc3RyaW5nLCBhbGxvY2F0aW5nIG1lbW9yeSB1c2luZyBuZXcuICBU
aGUKLS8vIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmdbXSB0aGUgcmV0dXJuIHZh
bHVlLiAgUmV0dXJucyB0aGUKLS8vIGNsb25lZCBzdHJpbmcsIG9yIE5VTEwgaWYgdGhlIGlucHV0
IGlzIE5VTEwuCi1jb25zdCBjaGFyICogU3RyaW5nOjpDbG9uZUNTdHJpbmcoY29uc3QgY2hhciog
Y19zdHIpIHsKLSAgcmV0dXJuIChjX3N0ciA9PSBOVUxMKSA/Ci0gICAgICAgICAgICAgICAgICAg
IE5VTEwgOiBDbG9uZVN0cmluZyhjX3N0ciwgc3RybGVuKGNfc3RyKSk7Ci19CisvLyBjbGFzcyBT
dHJpbmcuCiAKICNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQogLy8gQ3JlYXRlcyBhIFVURi0x
NiB3aWRlIHN0cmluZyBmcm9tIHRoZSBnaXZlbiBBTlNJIHN0cmluZywgYWxsb2NhdGluZwpAQCAt
ODc5LDExICs5NDksNiBAQCBib29sIFN0cmluZzo6Q1N0cmluZ0VxdWFscyhjb25zdCBjaGFyICog
bGhzLCBjb25zdCBjaGFyICogcmhzKSB7CiAvLyBlbmNvZGluZywgYW5kIHN0cmVhbXMgdGhlIHJl
c3VsdCB0byB0aGUgZ2l2ZW4gTWVzc2FnZSBvYmplY3QuCiBzdGF0aWMgdm9pZCBTdHJlYW1XaWRl
Q2hhcnNUb01lc3NhZ2UoY29uc3Qgd2NoYXJfdCogd3N0ciwgc2l6ZV90IGxlbmd0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlKiBtc2cpIHsKLSAgLy8gVE9E
Tyh3YW4pOiBjb25zaWRlciBhbGxvd2luZyBhIHRlc3Rpbmc6OlN0cmluZyBvYmplY3QgdG8KLSAg
Ly8gY29udGFpbiAnXDAnLiAgVGhpcyB3aWxsIG1ha2UgaXQgYmVoYXZlIG1vcmUgbGlrZSBzdGQ6
OnN0cmluZywKLSAgLy8gYW5kIHdpbGwgYWxsb3cgVG9VdGY4U3RyaW5nKCkgdG8gcmV0dXJuIHRo
ZSBjb3JyZWN0IGVuY29kaW5nCi0gIC8vIGZvciAnXDAnIHMudC4gd2UgY2FuIGdldCByaWQgb2Yg
dGhlIGNvbmRpdGlvbmFsIGhlcmUgKGFuZCBpbgotICAvLyBzZXZlcmFsIG90aGVyIHBsYWNlcyku
CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGxlbmd0aDsgKSB7ICAvLyBOT0xJTlQKICAgICBp
ZiAod3N0cltpXSAhPSBMJ1wwJykgewogICAgICAgKm1zZyA8PCBXaWRlU3RyaW5nVG9VdGY4KHdz
dHIgKyBpLCBzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aCAtIGkpKTsKQEAgLTg5OCw4ICs5NjMsNDUg
QEAgc3RhdGljIHZvaWQgU3RyZWFtV2lkZUNoYXJzVG9NZXNzYWdlKGNvbnN0IHdjaGFyX3QqIHdz
dHIsIHNpemVfdCBsZW5ndGgsCiAKICNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RSSU5HIHx8
IEdURVNUX0hBU19HTE9CQUxfV1NUUklORwogCit2b2lkIFNwbGl0U3RyaW5nKGNvbnN0IDo6c3Rk
OjpzdHJpbmcmIHN0ciwgY2hhciBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAgIDo6c3RkOjp2
ZWN0b3I8IDo6c3RkOjpzdHJpbmc+KiBkZXN0KSB7CisgIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpz
dHJpbmc+IHBhcnNlZDsKKyAgOjpzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHBvcyA9IDA7CisgIHdo
aWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsKKyAgICBjb25zdCA6OnN0
ZDo6c3RyaW5nOjpzaXplX3R5cGUgY29sb24gPSBzdHIuZmluZChkZWxpbWl0ZXIsIHBvcyk7Cisg
ICAgaWYgKGNvbG9uID09IDo6c3RkOjpzdHJpbmc6Om5wb3MpIHsKKyAgICAgIHBhcnNlZC5wdXNo
X2JhY2soc3RyLnN1YnN0cihwb3MpKTsKKyAgICAgIGJyZWFrOworICAgIH0gZWxzZSB7CisgICAg
ICBwYXJzZWQucHVzaF9iYWNrKHN0ci5zdWJzdHIocG9zLCBjb2xvbiAtIHBvcykpOworICAgICAg
cG9zID0gY29sb24gKyAxOworICAgIH0KKyAgfQorICBkZXN0LT5zd2FwKHBhcnNlZCk7Cit9CisK
IH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAogCisvLyBDb25zdHJ1Y3RzIGFuIGVtcHR5IE1lc3Nh
Z2UuCisvLyBXZSBhbGxvY2F0ZSB0aGUgc3RyaW5nc3RyZWFtIHNlcGFyYXRlbHkgYmVjYXVzZSBv
dGhlcndpc2UgZWFjaCB1c2Ugb2YKKy8vIEFTU0VSVC9FWFBFQ1QgaW4gYSBwcm9jZWR1cmUgYWRk
cyBvdmVyIDIwMCBieXRlcyB0byB0aGUgcHJvY2VkdXJlJ3MKKy8vIHN0YWNrIGZyYW1lIGxlYWRp
bmcgdG8gaHVnZSBzdGFjayBmcmFtZXMgaW4gc29tZSBjYXNlczsgZ2NjIGRvZXMgbm90IHJldXNl
CisvLyB0aGUgc3RhY2sgc3BhY2UuCitNZXNzYWdlOjpNZXNzYWdlKCkgOiBzc18obmV3IDo6c3Rk
OjpzdHJpbmdzdHJlYW0pIHsKKyAgLy8gQnkgZGVmYXVsdCwgd2Ugd2FudCB0aGVyZSB0byBiZSBl
bm91Z2ggcHJlY2lzaW9uIHdoZW4gcHJpbnRpbmcKKyAgLy8gYSBkb3VibGUgdG8gYSBNZXNzYWdl
LgorICAqc3NfIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6ZGlnaXRzMTAgKyAyKTsKK30KKworLy8gVGhlc2UgdHdvIG92ZXJsb2FkcyBhbGxvdyBzdHJl
YW1pbmcgYSB3aWRlIEMgc3RyaW5nIHRvIGEgTWVzc2FnZQorLy8gdXNpbmcgdGhlIFVURi04IGVu
Y29kaW5nLgorTWVzc2FnZSYgTWVzc2FnZTo6b3BlcmF0b3IgPDwoY29uc3Qgd2NoYXJfdCogd2lk
ZV9jX3N0cikgeworICByZXR1cm4gKnRoaXMgPDwgaW50ZXJuYWw6OlN0cmluZzo6U2hvd1dpZGVD
U3RyaW5nKHdpZGVfY19zdHIpOworfQorTWVzc2FnZSYgTWVzc2FnZTo6b3BlcmF0b3IgPDwod2No
YXJfdCogd2lkZV9jX3N0cikgeworICByZXR1cm4gKnRoaXMgPDwgaW50ZXJuYWw6OlN0cmluZzo6
U2hvd1dpZGVDU3RyaW5nKHdpZGVfY19zdHIpOworfQorCiAjaWYgR1RFU1RfSEFTX1NURF9XU1RS
SU5HCiAvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gd2lkZSBzdHJpbmcgdG8gYSBuYXJyb3cgc3RyaW5n
IHVzaW5nIHRoZSBVVEYtOAogLy8gZW5jb2RpbmcsIGFuZCBzdHJlYW1zIHRoZSByZXN1bHQgdG8g
dGhpcyBNZXNzYWdlIG9iamVjdC4KQEAgLTkxOCw1NSArMTAyMCwyNiBAQCBNZXNzYWdlJiBNZXNz
YWdlOjpvcGVyYXRvciA8PChjb25zdCA6OndzdHJpbmcmIHdzdHIpIHsKIH0KICNlbmRpZiAgLy8g
R1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCiAKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIEZv
cm1hdHMgYSB2YWx1ZSB0byBiZSB1c2VkIGluIGEgZmFpbHVyZSBtZXNzYWdlLgotCi0vLyBGb3Ig
YSBjaGFyIHZhbHVlLCB3ZSBwcmludCBpdCBhcyBhIEMrKyBjaGFyIGxpdGVyYWwgYW5kIGFzIGFu
Ci0vLyB1bnNpZ25lZCBpbnRlZ2VyIChib3RoIGluIGRlY2ltYWwgYW5kIGluIGhleGFkZWNpbWFs
KS4KLVN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZShjaGFyIGNoKSB7Ci0gIGNvbnN0IHVu
c2lnbmVkIGludCBjaF9hc191aW50ID0gY2g7Ci0gIC8vIEEgU3RyaW5nIG9iamVjdCBjYW5ub3Qg
Y29udGFpbiAnXDAnLCBzbyB3ZSBwcmludCAiXFwwIiB3aGVuIGNoIGlzCi0gIC8vICdcMCcuCi0g
IHJldHVybiBTdHJpbmc6OkZvcm1hdCgiJyVzJyAoJXUsIDB4JVgpIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNoID8gU3RyaW5nOjpGb3JtYXQoIiVjIiwgY2gpLmNfc3RyKCkgOiAiXFwwIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNoX2FzX3VpbnQsIGNoX2FzX3VpbnQpOwotfQotCi0v
LyBGb3IgYSB3Y2hhcl90IHZhbHVlLCB3ZSBwcmludCBpdCBhcyBhIEMrKyB3Y2hhcl90IGxpdGVy
YWwgYW5kIGFzIGFuCi0vLyB1bnNpZ25lZCBpbnRlZ2VyIChib3RoIGluIGRlY2ltYWwgYW5kIGlu
IGhleGlkZWNpbWFsKS4KLVN0cmluZyBGb3JtYXRGb3JGYWlsdXJlTWVzc2FnZSh3Y2hhcl90IHdj
aGFyKSB7Ci0gIC8vIFRoZSBDKysgc3RhbmRhcmQgZG9lc24ndCBzcGVjaWZ5IHRoZSBleGFjdCBz
aXplIG9mIHRoZSB3Y2hhcl90Ci0gIC8vIHR5cGUuICBJdCBqdXN0IHNheXMgdGhhdCBpdCBzaGFs
bCBoYXZlIHRoZSBzYW1lIHNpemUgYXMgYW5vdGhlcgotICAvLyBpbnRlZ3JhbCB0eXBlLCBjYWxs
ZWQgaXRzIHVuZGVybHlpbmcgdHlwZS4KLSAgLy8KLSAgLy8gVGhlcmVmb3JlLCBpbiBvcmRlciB0
byBwcmludCBhIHdjaGFyX3QgdmFsdWUgaW4gdGhlIG51bWVyaWMgZm9ybSwKLSAgLy8gd2UgZmly
c3QgY29udmVydCBpdCB0byB0aGUgbGFyZ2VzdCBpbnRlZ3JhbCB0eXBlIChVSW50NjQpIGFuZAot
ICAvLyB0aGVuIHByaW50IHRoZSBjb252ZXJ0ZWQgdmFsdWUuCi0gIC8vCi0gIC8vIFdlIHVzZSBz
dHJlYW1pbmcgdG8gcHJpbnQgdGhlIHZhbHVlIGFzICIlbGx1IiBkb2Vzbid0IHdvcmsKLSAgLy8g
Y29ycmVjdGx5IHdpdGggTVNWQyA3LjEuCi0gIGNvbnN0IFVJbnQ2NCB3Y2hhcl9hc191aW50NjQg
PSB3Y2hhcjsKLSAgTWVzc2FnZSBtc2c7Ci0gIC8vIEEgU3RyaW5nIG9iamVjdCBjYW5ub3QgY29u
dGFpbiAnXDAnLCBzbyB3ZSBwcmludCAiXFwwIiB3aGVuIHdjaGFyIGlzCi0gIC8vIEwnXDAnLgot
ICBjaGFyIGJ1ZmZlclszMl07ICAvLyBDb2RlUG9pbnRUb1V0ZjggcmVxdWlyZXMgYSBidWZmZXIg
dGhhdCBiaWcuCi0gIG1zZyA8PCAiTCciCi0gICAgICA8PCAod2NoYXIgPyBDb2RlUG9pbnRUb1V0
Zjgoc3RhdGljX2Nhc3Q8VUludDMyPih3Y2hhciksIGJ1ZmZlcikgOiAiXFwwIikKLSAgICAgIDw8
ICInICgiIDw8IHdjaGFyX2FzX3VpbnQ2NCA8PCAiLCAweCIgPDwgOjpzdGQ6OnNldGJhc2UoMTYp
Ci0gICAgICA8PCB3Y2hhcl9hc191aW50NjQgPDwgIikiOwotICByZXR1cm4gbXNnLkdldFN0cmlu
ZygpOworLy8gR2V0cyB0aGUgdGV4dCBzdHJlYW1lZCB0byB0aGlzIG9iamVjdCBzbyBmYXIgYXMg
YW4gc3RkOjpzdHJpbmcuCisvLyBFYWNoICdcMCcgY2hhcmFjdGVyIGluIHRoZSBidWZmZXIgaXMg
cmVwbGFjZWQgd2l0aCAiXFwwIi4KK3N0ZDo6c3RyaW5nIE1lc3NhZ2U6OkdldFN0cmluZygpIGNv
bnN0IHsKKyAgcmV0dXJuIGludGVybmFsOjpTdHJpbmdTdHJlYW1Ub1N0cmluZyhzc18uZ2V0KCkp
OwogfQogCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQogLy8gQXNzZXJ0aW9uUmVzdWx0IGNv
bnN0cnVjdG9ycy4KIC8vIFVzZWQgaW4gRVhQRUNUX1RSVUUvRkFMU0UoYXNzZXJ0aW9uX3Jlc3Vs
dCkuCiBBc3NlcnRpb25SZXN1bHQ6OkFzc2VydGlvblJlc3VsdChjb25zdCBBc3NlcnRpb25SZXN1
bHQmIG90aGVyKQogICAgIDogc3VjY2Vzc18ob3RoZXIuc3VjY2Vzc18pLAogICAgICAgbWVzc2Fn
ZV8ob3RoZXIubWVzc2FnZV8uZ2V0KCkgIT0gTlVMTCA/Ci0gICAgICAgICAgICAgICBuZXcgaW50
ZXJuYWw6OlN0cmluZygqb3RoZXIubWVzc2FnZV8pIDoKLSAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PGludGVybmFsOjpTdHJpbmcqPihOVUxMKSkgeworICAgICAgICAgICAgICAgbmV3IDo6c3Rk
OjpzdHJpbmcoKm90aGVyLm1lc3NhZ2VfKSA6CisgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDwg
OjpzdGQ6OnN0cmluZyo+KE5VTEwpKSB7Cit9CisKKy8vIFN3YXBzIHR3byBBc3NlcnRpb25SZXN1
bHRzLgordm9pZCBBc3NlcnRpb25SZXN1bHQ6OnN3YXAoQXNzZXJ0aW9uUmVzdWx0JiBvdGhlcikg
eworICB1c2luZyBzdGQ6OnN3YXA7CisgIHN3YXAoc3VjY2Vzc18sIG90aGVyLnN1Y2Nlc3NfKTsK
KyAgc3dhcChtZXNzYWdlXywgb3RoZXIubWVzc2FnZV8pOwogfQogCiAvLyBSZXR1cm5zIHRoZSBh
c3NlcnRpb24ncyBuZWdhdGlvbi4gVXNlZCB3aXRoIEVYUEVDVC9BU1NFUlRfRkFMU0UuCkBAIC05
OTUsNiArMTA2OCwyNzYgQEAgQXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvbkZhaWx1cmUoY29uc3Qg
TWVzc2FnZSYgbWVzc2FnZSkgewogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCituYW1lc3BhY2Ug
ZWRpdF9kaXN0YW5jZSB7CitzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gQ2FsY3VsYXRlT3B0aW1hbEVk
aXRzKGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIGxlZnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNpemVfdD4mIHJpZ2h0
KSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGRvdWJsZT4gPiBjb3N0cygKKyAgICAgIGxl
ZnQuc2l6ZSgpICsgMSwgc3RkOjp2ZWN0b3I8ZG91YmxlPihyaWdodC5zaXplKCkgKyAxKSk7Cisg
IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPEVkaXRUeXBlPiA+IGJlc3RfbW92ZSgKKyAgICAgIGxl
ZnQuc2l6ZSgpICsgMSwgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+KHJpZ2h0LnNpemUoKSArIDEpKTsK
KworICAvLyBQb3B1bGF0ZSBmb3IgZW1wdHkgcmlnaHQuCisgIGZvciAoc2l6ZV90IGxfaSA9IDA7
IGxfaSA8IGNvc3RzLnNpemUoKTsgKytsX2kpIHsKKyAgICBjb3N0c1tsX2ldWzBdID0gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihsX2kpOworICAgIGJlc3RfbW92ZVtsX2ldWzBdID0ga1JlbW92ZTsKKyAg
fQorICAvLyBQb3B1bGF0ZSBmb3IgZW1wdHkgbGVmdC4KKyAgZm9yIChzaXplX3Qgcl9pID0gMTsg
cl9pIDwgY29zdHNbMF0uc2l6ZSgpOyArK3JfaSkgeworICAgIGNvc3RzWzBdW3JfaV0gPSBzdGF0
aWNfY2FzdDxkb3VibGU+KHJfaSk7CisgICAgYmVzdF9tb3ZlWzBdW3JfaV0gPSBrQWRkOworICB9
CisKKyAgZm9yIChzaXplX3QgbF9pID0gMDsgbF9pIDwgbGVmdC5zaXplKCk7ICsrbF9pKSB7Cisg
ICAgZm9yIChzaXplX3Qgcl9pID0gMDsgcl9pIDwgcmlnaHQuc2l6ZSgpOyArK3JfaSkgeworICAg
ICAgaWYgKGxlZnRbbF9pXSA9PSByaWdodFtyX2ldKSB7CisgICAgICAgIC8vIEZvdW5kIGEgbWF0
Y2guIENvbnN1bWUgaXQuCisgICAgICAgIGNvc3RzW2xfaSArIDFdW3JfaSArIDFdID0gY29zdHNb
bF9pXVtyX2ldOworICAgICAgICBiZXN0X21vdmVbbF9pICsgMV1bcl9pICsgMV0gPSBrTWF0Y2g7
CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorCisgICAgICBjb25zdCBkb3VibGUgYWRkID0g
Y29zdHNbbF9pICsgMV1bcl9pXTsKKyAgICAgIGNvbnN0IGRvdWJsZSByZW1vdmUgPSBjb3N0c1ts
X2ldW3JfaSArIDFdOworICAgICAgY29uc3QgZG91YmxlIHJlcGxhY2UgPSBjb3N0c1tsX2ldW3Jf
aV07CisgICAgICBpZiAoYWRkIDwgcmVtb3ZlICYmIGFkZCA8IHJlcGxhY2UpIHsKKyAgICAgICAg
Y29zdHNbbF9pICsgMV1bcl9pICsgMV0gPSBhZGQgKyAxOworICAgICAgICBiZXN0X21vdmVbbF9p
ICsgMV1bcl9pICsgMV0gPSBrQWRkOworICAgICAgfSBlbHNlIGlmIChyZW1vdmUgPCBhZGQgJiYg
cmVtb3ZlIDwgcmVwbGFjZSkgeworICAgICAgICBjb3N0c1tsX2kgKyAxXVtyX2kgKyAxXSA9IHJl
bW92ZSArIDE7CisgICAgICAgIGJlc3RfbW92ZVtsX2kgKyAxXVtyX2kgKyAxXSA9IGtSZW1vdmU7
CisgICAgICB9IGVsc2UgeworICAgICAgICAvLyBXZSBtYWtlIHJlcGxhY2UgYSBsaXR0bGUgbW9y
ZSBleHBlbnNpdmUgdGhhbiBhZGQvcmVtb3ZlIHRvIGxvd2VyCisgICAgICAgIC8vIHRoZWlyIHBy
aW9yaXR5LgorICAgICAgICBjb3N0c1tsX2kgKyAxXVtyX2kgKyAxXSA9IHJlcGxhY2UgKyAxLjAw
MDAxOworICAgICAgICBiZXN0X21vdmVbbF9pICsgMV1bcl9pICsgMV0gPSBrUmVwbGFjZTsKKyAg
ICAgIH0KKyAgICB9CisgIH0KKworICAvLyBSZWNvbnN0cnVjdCB0aGUgYmVzdCBwYXRoLiBXZSBk
byBpdCBpbiByZXZlcnNlIG9yZGVyLgorICBzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gYmVzdF9wYXRo
OworICBmb3IgKHNpemVfdCBsX2kgPSBsZWZ0LnNpemUoKSwgcl9pID0gcmlnaHQuc2l6ZSgpOyBs
X2kgPiAwIHx8IHJfaSA+IDA7KSB7CisgICAgRWRpdFR5cGUgbW92ZSA9IGJlc3RfbW92ZVtsX2ld
W3JfaV07CisgICAgYmVzdF9wYXRoLnB1c2hfYmFjayhtb3ZlKTsKKyAgICBsX2kgLT0gbW92ZSAh
PSBrQWRkOworICAgIHJfaSAtPSBtb3ZlICE9IGtSZW1vdmU7CisgIH0KKyAgc3RkOjpyZXZlcnNl
KGJlc3RfcGF0aC5iZWdpbigpLCBiZXN0X3BhdGguZW5kKCkpOworICByZXR1cm4gYmVzdF9wYXRo
OworfQorCituYW1lc3BhY2UgeworCisvLyBIZWxwZXIgY2xhc3MgdG8gY29udmVydCBzdHJpbmcg
aW50byBpZHMgd2l0aCBkZWR1cGxpY2F0aW9uLgorY2xhc3MgSW50ZXJuYWxTdHJpbmdzIHsKKyBw
dWJsaWM6CisgIHNpemVfdCBHZXRJZChjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7CisgICAgSWRN
YXA6Oml0ZXJhdG9yIGl0ID0gaWRzXy5maW5kKHN0cik7CisgICAgaWYgKGl0ICE9IGlkc18uZW5k
KCkpIHJldHVybiBpdC0+c2Vjb25kOworICAgIHNpemVfdCBpZCA9IGlkc18uc2l6ZSgpOworICAg
IHJldHVybiBpZHNfW3N0cl0gPSBpZDsKKyAgfQorCisgcHJpdmF0ZToKKyAgdHlwZWRlZiBzdGQ6
Om1hcDxzdGQ6OnN0cmluZywgc2l6ZV90PiBJZE1hcDsKKyAgSWRNYXAgaWRzXzsKK307CisKK30g
IC8vIG5hbWVzcGFjZQorCitzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gQ2FsY3VsYXRlT3B0aW1hbEVk
aXRzKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgbGVmdCwKKyAgICBjb25z
dCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHJpZ2h0KSB7CisgIHN0ZDo6dmVjdG9yPHNpemVf
dD4gbGVmdF9pZHMsIHJpZ2h0X2lkczsKKyAgeworICAgIEludGVybmFsU3RyaW5ncyBpbnRlcm5f
dGFibGU7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZWZ0LnNpemUoKTsgKytpKSB7Cisg
ICAgICBsZWZ0X2lkcy5wdXNoX2JhY2soaW50ZXJuX3RhYmxlLkdldElkKGxlZnRbaV0pKTsKKyAg
ICB9CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByaWdodC5zaXplKCk7ICsraSkgeworICAg
ICAgcmlnaHRfaWRzLnB1c2hfYmFjayhpbnRlcm5fdGFibGUuR2V0SWQocmlnaHRbaV0pKTsKKyAg
ICB9CisgIH0KKyAgcmV0dXJuIENhbGN1bGF0ZU9wdGltYWxFZGl0cyhsZWZ0X2lkcywgcmlnaHRf
aWRzKTsKK30KKworbmFtZXNwYWNlIHsKKworLy8gSGVscGVyIGNsYXNzIHRoYXQgaG9sZHMgdGhl
IHN0YXRlIGZvciBvbmUgaHVuayBhbmQgcHJpbnRzIGl0IG91dCB0byB0aGUKKy8vIHN0cmVhbS4K
Ky8vIEl0IHJlb3JkZXJzIGFkZHMvcmVtb3ZlcyB3aGVuIHBvc3NpYmxlIHRvIGdyb3VwIGFsbCBy
ZW1vdmVzIGJlZm9yZSBhbGwKKy8vIGFkZHMuIEl0IGFsc28gYWRkcyB0aGUgaHVuayBoZWFkZXIg
YmVmb3JlIHByaW50aW50IGludG8gdGhlIHN0cmVhbS4KK2NsYXNzIEh1bmsgeworIHB1YmxpYzoK
KyAgSHVuayhzaXplX3QgbGVmdF9zdGFydCwgc2l6ZV90IHJpZ2h0X3N0YXJ0KQorICAgICAgOiBs
ZWZ0X3N0YXJ0XyhsZWZ0X3N0YXJ0KSwKKyAgICAgICAgcmlnaHRfc3RhcnRfKHJpZ2h0X3N0YXJ0
KSwKKyAgICAgICAgYWRkc18oKSwKKyAgICAgICAgcmVtb3Zlc18oKSwKKyAgICAgICAgY29tbW9u
XygpIHt9CisKKyAgdm9pZCBQdXNoTGluZShjaGFyIGVkaXQsIGNvbnN0IGNoYXIqIGxpbmUpIHsK
KyAgICBzd2l0Y2ggKGVkaXQpIHsKKyAgICAgIGNhc2UgJyAnOgorICAgICAgICArK2NvbW1vbl87
CisgICAgICAgIEZsdXNoRWRpdHMoKTsKKyAgICAgICAgaHVua18ucHVzaF9iYWNrKHN0ZDo6bWFr
ZV9wYWlyKCcgJywgbGluZSkpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJy0nOgorICAg
ICAgICArK3JlbW92ZXNfOworICAgICAgICBodW5rX3JlbW92ZXNfLnB1c2hfYmFjayhzdGQ6Om1h
a2VfcGFpcignLScsIGxpbmUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICcrJzoKKyAg
ICAgICAgKythZGRzXzsKKyAgICAgICAgaHVua19hZGRzXy5wdXNoX2JhY2soc3RkOjptYWtlX3Bh
aXIoJysnLCBsaW5lKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgfQorCisgIHZvaWQgUHJp
bnRUbyhzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICAgUHJpbnRIZWFkZXIob3MpOworICAgIEZsdXNo
RWRpdHMoKTsKKyAgICBmb3IgKHN0ZDo6bGlzdDxzdGQ6OnBhaXI8Y2hhciwgY29uc3QgY2hhcio+
ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0KKyAgICAgICAgICAgICBodW5rXy5iZWdpbigpOworICAg
ICAgICAgaXQgIT0gaHVua18uZW5kKCk7ICsraXQpIHsKKyAgICAgICpvcyA8PCBpdC0+Zmlyc3Qg
PDwgaXQtPnNlY29uZCA8PCAiXG4iOworICAgIH0KKyAgfQorCisgIGJvb2wgaGFzX2VkaXRzKCkg
Y29uc3QgeyByZXR1cm4gYWRkc18gfHwgcmVtb3Zlc187IH0KKworIHByaXZhdGU6CisgIHZvaWQg
Rmx1c2hFZGl0cygpIHsKKyAgICBodW5rXy5zcGxpY2UoaHVua18uZW5kKCksIGh1bmtfcmVtb3Zl
c18pOworICAgIGh1bmtfLnNwbGljZShodW5rXy5lbmQoKSwgaHVua19hZGRzXyk7CisgIH0KKwor
ICAvLyBQcmludCBhIHVuaWZpZWQgZGlmZiBoZWFkZXIgZm9yIG9uZSBodW5rLgorICAvLyBUaGUg
Zm9ybWF0IGlzCisgIC8vICAgIkBAIC08bGVmdF9zdGFydD4sPGxlZnRfbGVuZ3RoPiArPHJpZ2h0
X3N0YXJ0Piw8cmlnaHRfbGVuZ3RoPiBAQCIKKyAgLy8gd2hlcmUgdGhlIGxlZnQvcmlnaHQgcGFy
dHMgYXJlIG9taXR0ZWQgaWYgdW5uZWNlc3NhcnkuCisgIHZvaWQgUHJpbnRIZWFkZXIoc3RkOjpv
c3RyZWFtKiBzcykgY29uc3QgeworICAgICpzcyA8PCAiQEAgIjsKKyAgICBpZiAocmVtb3Zlc18p
IHsKKyAgICAgICpzcyA8PCAiLSIgPDwgbGVmdF9zdGFydF8gPDwgIiwiIDw8IChyZW1vdmVzXyAr
IGNvbW1vbl8pOworICAgIH0KKyAgICBpZiAocmVtb3Zlc18gJiYgYWRkc18pIHsKKyAgICAgICpz
cyA8PCAiICI7CisgICAgfQorICAgIGlmIChhZGRzXykgeworICAgICAgKnNzIDw8ICIrIiA8PCBy
aWdodF9zdGFydF8gPDwgIiwiIDw8IChhZGRzXyArIGNvbW1vbl8pOworICAgIH0KKyAgICAqc3Mg
PDwgIiBAQFxuIjsKKyAgfQorCisgIHNpemVfdCBsZWZ0X3N0YXJ0XywgcmlnaHRfc3RhcnRfOwor
ICBzaXplX3QgYWRkc18sIHJlbW92ZXNfLCBjb21tb25fOworICBzdGQ6Omxpc3Q8c3RkOjpwYWly
PGNoYXIsIGNvbnN0IGNoYXIqPiA+IGh1bmtfLCBodW5rX2FkZHNfLCBodW5rX3JlbW92ZXNfOwor
fTsKKworfSAgLy8gbmFtZXNwYWNlCisKKy8vIENyZWF0ZSBhIGxpc3Qgb2YgZGlmZiBodW5rcyBp
biBVbmlmaWVkIGRpZmYgZm9ybWF0LgorLy8gRWFjaCBodW5rIGhhcyBhIGhlYWRlciBnZW5lcmF0
ZWQgYnkgUHJpbnRIZWFkZXIgYWJvdmUgcGx1cyBhIGJvZHkgd2l0aAorLy8gbGluZXMgcHJlZml4
ZWQgd2l0aCAnICcgZm9yIG5vIGNoYW5nZSwgJy0nIGZvciBkZWxldGlvbiBhbmQgJysnIGZvcgor
Ly8gYWRkaXRpb24uCisvLyAnY29udGV4dCcgcmVwcmVzZW50cyB0aGUgZGVzaXJlZCB1bmNoYW5n
ZWQgcHJlZml4L3N1ZmZpeCBhcm91bmQgdGhlIGRpZmYuCisvLyBJZiB0d28gaHVua3MgYXJlIGNs
b3NlIGVub3VnaCB0aGF0IHRoZWlyIGNvbnRleHRzIG92ZXJsYXAsIHRoZW4gdGhleSBhcmUKKy8v
IGpvaW5lZCBpbnRvIG9uZSBodW5rLgorc3RkOjpzdHJpbmcgQ3JlYXRlVW5pZmllZERpZmYoY29u
c3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBsZWZ0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiByaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb250ZXh0KSB7CisgIGNvbnN0IHN0ZDo6dmVj
dG9yPEVkaXRUeXBlPiBlZGl0cyA9IENhbGN1bGF0ZU9wdGltYWxFZGl0cyhsZWZ0LCByaWdodCk7
CisKKyAgc2l6ZV90IGxfaSA9IDAsIHJfaSA9IDAsIGVkaXRfaSA9IDA7CisgIHN0ZDo6c3RyaW5n
c3RyZWFtIHNzOworICB3aGlsZSAoZWRpdF9pIDwgZWRpdHMuc2l6ZSgpKSB7CisgICAgLy8gRmlu
ZCBmaXJzdCBlZGl0LgorICAgIHdoaWxlIChlZGl0X2kgPCBlZGl0cy5zaXplKCkgJiYgZWRpdHNb
ZWRpdF9pXSA9PSBrTWF0Y2gpIHsKKyAgICAgICsrbF9pOworICAgICAgKytyX2k7CisgICAgICAr
K2VkaXRfaTsKKyAgICB9CisKKyAgICAvLyBGaW5kIHRoZSBmaXJzdCBsaW5lIHRvIGluY2x1ZGUg
aW4gdGhlIGh1bmsuCisgICAgY29uc3Qgc2l6ZV90IHByZWZpeF9jb250ZXh0ID0gc3RkOjptaW4o
bF9pLCBjb250ZXh0KTsKKyAgICBIdW5rIGh1bmsobF9pIC0gcHJlZml4X2NvbnRleHQgKyAxLCBy
X2kgLSBwcmVmaXhfY29udGV4dCArIDEpOworICAgIGZvciAoc2l6ZV90IGkgPSBwcmVmaXhfY29u
dGV4dDsgaSA+IDA7IC0taSkgeworICAgICAgaHVuay5QdXNoTGluZSgnICcsIGxlZnRbbF9pIC0g
aV0uY19zdHIoKSk7CisgICAgfQorCisgICAgLy8gSXRlcmF0ZSB0aGUgZWRpdHMgdW50aWwgd2Ug
Zm91bmQgZW5vdWdoIHN1ZmZpeCBmb3IgdGhlIGh1bmsgb3IgdGhlIGlucHV0CisgICAgLy8gaXMg
b3Zlci4KKyAgICBzaXplX3Qgbl9zdWZmaXggPSAwOworICAgIGZvciAoOyBlZGl0X2kgPCBlZGl0
cy5zaXplKCk7ICsrZWRpdF9pKSB7CisgICAgICBpZiAobl9zdWZmaXggPj0gY29udGV4dCkgewor
ICAgICAgICAvLyBDb250aW51ZSBvbmx5IGlmIHRoZSBuZXh0IGh1bmsgaXMgdmVyeSBjbG9zZS4K
KyAgICAgICAgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGVkaXRz
LmJlZ2luKCkgKyBlZGl0X2k7CisgICAgICAgIHdoaWxlIChpdCAhPSBlZGl0cy5lbmQoKSAmJiAq
aXQgPT0ga01hdGNoKSArK2l0OworICAgICAgICBpZiAoaXQgPT0gZWRpdHMuZW5kKCkgfHwgKGl0
IC0gZWRpdHMuYmVnaW4oKSkgLSBlZGl0X2kgPj0gY29udGV4dCkgeworICAgICAgICAgIC8vIFRo
ZXJlIGlzIG5vIG5leHQgZWRpdCBvciBpdCBpcyB0b28gZmFyIGF3YXkuCisgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgRWRpdFR5cGUgZWRpdCA9IGVkaXRzW2Vk
aXRfaV07CisgICAgICAvLyBSZXNldCBjb3VudCB3aGVuIGEgbm9uIG1hdGNoIGlzIGZvdW5kLgor
ICAgICAgbl9zdWZmaXggPSBlZGl0ID09IGtNYXRjaCA/IG5fc3VmZml4ICsgMSA6IDA7CisKKyAg
ICAgIGlmIChlZGl0ID09IGtNYXRjaCB8fCBlZGl0ID09IGtSZW1vdmUgfHwgZWRpdCA9PSBrUmVw
bGFjZSkgeworICAgICAgICBodW5rLlB1c2hMaW5lKGVkaXQgPT0ga01hdGNoID8gJyAnIDogJy0n
LCBsZWZ0W2xfaV0uY19zdHIoKSk7CisgICAgICB9CisgICAgICBpZiAoZWRpdCA9PSBrQWRkIHx8
IGVkaXQgPT0ga1JlcGxhY2UpIHsKKyAgICAgICAgaHVuay5QdXNoTGluZSgnKycsIHJpZ2h0W3Jf
aV0uY19zdHIoKSk7CisgICAgICB9CisKKyAgICAgIC8vIEFkdmFuY2UgaW5kaWNlcywgZGVwZW5k
aW5nIG9uIGVkaXQgdHlwZS4KKyAgICAgIGxfaSArPSBlZGl0ICE9IGtBZGQ7CisgICAgICByX2kg
Kz0gZWRpdCAhPSBrUmVtb3ZlOworICAgIH0KKworICAgIGlmICghaHVuay5oYXNfZWRpdHMoKSkg
eworICAgICAgLy8gV2UgYXJlIGRvbmUuIFdlIGRvbid0IHdhbnQgdGhpcyBodW5rLgorICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgaHVuay5QcmludFRvKCZzcyk7CisgIH0KKyAgcmV0dXJuIHNz
LnN0cigpOworfQorCit9ICAvLyBuYW1lc3BhY2UgZWRpdF9kaXN0YW5jZQorCituYW1lc3BhY2Ug
eworCisvLyBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2YWx1ZXMgcmVjZWl2ZWQg
aW4gRXFGYWlsdXJlKCkgYXJlIGFscmVhZHkKKy8vIGVzY2FwZWQuIFNwbGl0IHRoZW0gb24gZXNj
YXBlZCAnXG4nIGJvdW5kYXJpZXMuIExlYXZlIGFsbCBvdGhlciBlc2NhcGVkCisvLyBjaGFyYWN0
ZXJzIHRoZSBzYW1lLgorc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IFNwbGl0RXNjYXBlZFN0cmlu
Zyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBs
aW5lczsKKyAgc2l6ZV90IHN0YXJ0ID0gMCwgZW5kID0gc3RyLnNpemUoKTsKKyAgaWYgKGVuZCA+
IDIgJiYgc3RyWzBdID09ICciJyAmJiBzdHJbZW5kIC0gMV0gPT0gJyInKSB7CisgICAgKytzdGFy
dDsKKyAgICAtLWVuZDsKKyAgfQorICBib29sIGVzY2FwZWQgPSBmYWxzZTsKKyAgZm9yIChzaXpl
X3QgaSA9IHN0YXJ0OyBpICsgMSA8IGVuZDsgKytpKSB7CisgICAgaWYgKGVzY2FwZWQpIHsKKyAg
ICAgIGVzY2FwZWQgPSBmYWxzZTsKKyAgICAgIGlmIChzdHJbaV0gPT0gJ24nKSB7CisgICAgICAg
IGxpbmVzLnB1c2hfYmFjayhzdHIuc3Vic3RyKHN0YXJ0LCBpIC0gc3RhcnQgLSAxKSk7CisgICAg
ICAgIHN0YXJ0ID0gaSArIDE7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIGVzY2FwZWQg
PSBzdHJbaV0gPT0gJ1xcJzsKKyAgICB9CisgIH0KKyAgbGluZXMucHVzaF9iYWNrKHN0ci5zdWJz
dHIoc3RhcnQsIGVuZCAtIHN0YXJ0KSk7CisgIHJldHVybiBsaW5lczsKK30KKworfSAgLy8gbmFt
ZXNwYWNlCisKIC8vIENvbnN0cnVjdHMgYW5kIHJldHVybnMgdGhlIG1lc3NhZ2UgZm9yIGFuIGVx
dWFsaXR5IGFzc2VydGlvbgogLy8gKGUuZy4gQVNTRVJUX0VRLCBFWFBFQ1RfU1RSRVEsIGV0Yykg
ZmFpbHVyZS4KIC8vCkBAIC0xMDAyLDQxICsxMzQ1LDU0IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7
CiAvLyBhbmQgdGhlaXIgdmFsdWVzLCBhcyBzdHJpbmdzLiAgRm9yIGV4YW1wbGUsIGZvciBBU1NF
UlRfRVEoZm9vLCBiYXIpCiAvLyB3aGVyZSBmb28gaXMgNSBhbmQgYmFyIGlzIDYsIHdlIGhhdmU6
CiAvLwotLy8gICBleHBlY3RlZF9leHByZXNzaW9uOiAiZm9vIgotLy8gICBhY3R1YWxfZXhwcmVz
c2lvbjogICAiYmFyIgotLy8gICBleHBlY3RlZF92YWx1ZTogICAgICAiNSIKLS8vICAgYWN0dWFs
X3ZhbHVlOiAgICAgICAgIjYiCisvLyAgIGxoc19leHByZXNzaW9uOiAiZm9vIgorLy8gICByaHNf
ZXhwcmVzc2lvbjogImJhciIKKy8vICAgbGhzX3ZhbHVlOiAgICAgICI1IgorLy8gICByaHNfdmFs
dWU6ICAgICAgIjYiCiAvLwogLy8gVGhlIGlnbm9yaW5nX2Nhc2UgcGFyYW1ldGVyIGlzIHRydWUg
aWZmIHRoZSBhc3NlcnRpb24gaXMgYQotLy8gKl9TVFJDQVNFRVEqLiAgV2hlbiBpdCdzIHRydWUs
IHRoZSBzdHJpbmcgIiAoaWdub3JpbmcgY2FzZSkiIHdpbGwKKy8vICpfU1RSQ0FTRUVRKi4gIFdo
ZW4gaXQncyB0cnVlLCB0aGUgc3RyaW5nICJJZ25vcmluZyBjYXNlIiB3aWxsCiAvLyBiZSBpbnNl
cnRlZCBpbnRvIHRoZSBtZXNzYWdlLgotQXNzZXJ0aW9uUmVzdWx0IEVxRmFpbHVyZShjb25zdCBj
aGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBleHBlY3RlZF92YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBhY3R1YWxfdmFsdWUsCitBc3NlcnRpb25SZXN1bHQgRXFGYWlsdXJlKGNvbnN0
IGNoYXIqIGxoc19leHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIGxoc192YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHJoc192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25v
cmluZ19jYXNlKSB7CiAgIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgIlZhbHVlIG9mOiAiIDw8IGFj
dHVhbF9leHByZXNzaW9uOwotICBpZiAoYWN0dWFsX3ZhbHVlICE9IGFjdHVhbF9leHByZXNzaW9u
KSB7Ci0gICAgbXNnIDw8ICJcbiAgQWN0dWFsOiAiIDw8IGFjdHVhbF92YWx1ZTsKKyAgbXNnIDw8
ICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6IjsKKyAgbXNnIDw8ICJcbiAgIiA8
PCBsaHNfZXhwcmVzc2lvbjsKKyAgaWYgKGxoc192YWx1ZSAhPSBsaHNfZXhwcmVzc2lvbikgewor
ICAgIG1zZyA8PCAiXG4gICAgV2hpY2ggaXM6ICIgPDwgbGhzX3ZhbHVlOworICB9CisgIG1zZyA8
PCAiXG4gICIgPDwgcmhzX2V4cHJlc3Npb247CisgIGlmIChyaHNfdmFsdWUgIT0gcmhzX2V4cHJl
c3Npb24pIHsKKyAgICBtc2cgPDwgIlxuICAgIFdoaWNoIGlzOiAiIDw8IHJoc192YWx1ZTsKICAg
fQogCi0gIG1zZyA8PCAiXG5FeHBlY3RlZDogIiA8PCBleHBlY3RlZF9leHByZXNzaW9uOwogICBp
ZiAoaWdub3JpbmdfY2FzZSkgewotICAgIG1zZyA8PCAiIChpZ25vcmluZyBjYXNlKSI7CisgICAg
bXNnIDw8ICJcbklnbm9yaW5nIGNhc2UiOwogICB9Ci0gIGlmIChleHBlY3RlZF92YWx1ZSAhPSBl
eHBlY3RlZF9leHByZXNzaW9uKSB7Ci0gICAgbXNnIDw8ICJcbldoaWNoIGlzOiAiIDw8IGV4cGVj
dGVkX3ZhbHVlOworCisgIGlmICghbGhzX3ZhbHVlLmVtcHR5KCkgJiYgIXJoc192YWx1ZS5lbXB0
eSgpKSB7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGxoc19saW5lcyA9Cisg
ICAgICAgIFNwbGl0RXNjYXBlZFN0cmluZyhsaHNfdmFsdWUpOworICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiByaHNfbGluZXMgPQorICAgICAgICBTcGxpdEVzY2FwZWRTdHJpbmco
cmhzX3ZhbHVlKTsKKyAgICBpZiAobGhzX2xpbmVzLnNpemUoKSA+IDEgfHwgcmhzX2xpbmVzLnNp
emUoKSA+IDEpIHsKKyAgICAgIG1zZyA8PCAiXG5XaXRoIGRpZmY6XG4iCisgICAgICAgICAgPDwg
ZWRpdF9kaXN0YW5jZTo6Q3JlYXRlVW5pZmllZERpZmYobGhzX2xpbmVzLCByaHNfbGluZXMpOwor
ICAgIH0KICAgfQogCi0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIHJldHVybiBB
c3NlcnRpb25GYWlsdXJlKCkgPDwgbXNnOwogfQogCiAvLyBDb25zdHJ1Y3RzIGEgZmFpbHVyZSBt
ZXNzYWdlIGZvciBCb29sZWFuIGFzc2VydGlvbnMgc3VjaCBhcyBFWFBFQ1RfVFJVRS4KLVN0cmlu
ZyBHZXRCb29sQXNzZXJ0aW9uRmFpbHVyZU1lc3NhZ2UoY29uc3QgQXNzZXJ0aW9uUmVzdWx0JiBh
c3NlcnRpb25fcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBleHByZXNzaW9uX3RleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9wcmVkaWNhdGVfdmFsdWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkX3ByZWRpY2F0
ZV92YWx1ZSkgeworc3RkOjpzdHJpbmcgR2V0Qm9vbEFzc2VydGlvbkZhaWx1cmVNZXNzYWdlKAor
ICAgIGNvbnN0IEFzc2VydGlvblJlc3VsdCYgYXNzZXJ0aW9uX3Jlc3VsdCwKKyAgICBjb25zdCBj
aGFyKiBleHByZXNzaW9uX3RleHQsCisgICAgY29uc3QgY2hhciogYWN0dWFsX3ByZWRpY2F0ZV92
YWx1ZSwKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZF9wcmVkaWNhdGVfdmFsdWUpIHsKICAgY29u
c3QgY2hhciogYWN0dWFsX21lc3NhZ2UgPSBhc3NlcnRpb25fcmVzdWx0Lm1lc3NhZ2UoKTsKICAg
TWVzc2FnZSBtc2c7CiAgIG1zZyA8PCAiVmFsdWUgb2Y6ICIgPDwgZXhwcmVzc2lvbl90ZXh0CkBA
IC0xMDU3LDE1ICsxNDEzLDE0IEBAIEFzc2VydGlvblJlc3VsdCBEb3VibGVOZWFyUHJlZEZvcm1h
dChjb25zdCBjaGFyKiBleHByMSwKICAgY29uc3QgZG91YmxlIGRpZmYgPSBmYWJzKHZhbDEgLSB2
YWwyKTsKICAgaWYgKGRpZmYgPD0gYWJzX2Vycm9yKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2Vzcygp
OwogCi0gIC8vIFRPRE8od2FuKTogZG8gbm90IHByaW50IHRoZSB2YWx1ZSBvZiBhbiBleHByZXNz
aW9uIGlmIGl0J3MKKyAgLy8gRklYTUU6IGRvIG5vdCBwcmludCB0aGUgdmFsdWUgb2YgYW4gZXhw
cmVzc2lvbiBpZiBpdCdzCiAgIC8vIGFscmVhZHkgYSBsaXRlcmFsLgotICBNZXNzYWdlIG1zZzsK
LSAgbXNnIDw8ICJUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuICIgPDwgZXhwcjEgPDwgIiBhbmQgIiA8
PCBleHByMgorICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCAiVGhlIGRpZmZl
cmVuY2UgYmV0d2VlbiAiIDw8IGV4cHIxIDw8ICIgYW5kICIgPDwgZXhwcjIKICAgICAgIDw8ICIg
aXMgIiA8PCBkaWZmIDw8ICIsIHdoaWNoIGV4Y2VlZHMgIiA8PCBhYnNfZXJyb3JfZXhwciA8PCAi
LCB3aGVyZVxuIgogICAgICAgPDwgZXhwcjEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2YWwxIDw8
ICIsXG4iCiAgICAgICA8PCBleHByMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHZhbDIgPDwgIiwg
YW5kXG4iCiAgICAgICA8PCBhYnNfZXJyb3JfZXhwciA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IGFi
c19lcnJvciA8PCAiLiI7Ci0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIApA
QCAtMTA5MCwyMCArMTQ0NSwxOCBAQCBBc3NlcnRpb25SZXN1bHQgRmxvYXRpbmdQb2ludExFKGNv
bnN0IGNoYXIqIGV4cHIxLAogICAvLyB2YWwyIGlzIE5hTiwgYXMgdGhlIElFRUUgZmxvYXRpbmct
cG9pbnQgc3RhbmRhcmQgcmVxdWlyZXMgdGhhdAogICAvLyBhbnkgcHJlZGljYXRlIGludm9sdmlu
ZyBhIE5hTiBtdXN0IHJldHVybiBmYWxzZS4KIAotICBTdHJTdHJlYW0gdmFsMV9zczsKKyAgOjpz
dGQ6OnN0cmluZ3N0cmVhbSB2YWwxX3NzOwogICB2YWwxX3NzIDw8IHN0ZDo6c2V0cHJlY2lzaW9u
KHN0ZDo6bnVtZXJpY19saW1pdHM8UmF3VHlwZT46OmRpZ2l0czEwICsgMikKICAgICAgICAgICA8
PCB2YWwxOwogCi0gIFN0clN0cmVhbSB2YWwyX3NzOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHZh
bDJfc3M7CiAgIHZhbDJfc3MgPDwgc3RkOjpzZXRwcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0
czxSYXdUeXBlPjo6ZGlnaXRzMTAgKyAyKQogICAgICAgICAgIDw8IHZhbDI7CiAKLSAgTWVzc2Fn
ZSBtc2c7Ci0gIG1zZyA8PCAiRXhwZWN0ZWQ6ICgiIDw8IGV4cHIxIDw8ICIpIDw9ICgiIDw8IGV4
cHIyIDw8ICIpXG4iCi0gICAgICA8PCAiICBBY3R1YWw6ICIgPDwgU3RyU3RyZWFtVG9TdHJpbmco
JnZhbDFfc3MpIDw8ICIgdnMgIgotICAgICAgPDwgU3RyU3RyZWFtVG9TdHJpbmcoJnZhbDJfc3Mp
OwotCi0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIHJldHVybiBBc3NlcnRpb25G
YWlsdXJlKCkKKyAgICAgIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgPD0gKCIgPDwg
ZXhwcjIgPDwgIilcbiIKKyAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBTdHJpbmdTdHJlYW1Ub1N0
cmluZygmdmFsMV9zcykgPDwgIiB2cyAiCisgICAgICA8PCBTdHJpbmdTdHJlYW1Ub1N0cmluZygm
dmFsMl9zcyk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbApAQCAtMTEyNiwxOCArMTQ3
OSwxOCBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgewogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZv
ciB7QVNTRVJUfEVYUEVDVH1fRVEgd2l0aCBpbnQgb3IgZW51bQogLy8gYXJndW1lbnRzLgotQXNz
ZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFsX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCBleHBlY3RlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGFjdHVhbCkgewotICBpZiAoZXhw
ZWN0ZWQgPT0gYWN0dWFsKSB7CitBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRVEoY29uc3QgY2hh
ciogbGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdElu
dCBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2VzdEludCByaHMpIHsKKyAg
aWYgKGxocyA9PSByaHMpIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwogICB9CiAK
LSAgcmV0dXJuIEVxRmFpbHVyZShleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAg
ICAgIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBh
cmlzb25GYWlsdXJlTWVzc2FnZShleHBlY3RlZCwgYWN0dWFsKSwKLSAgICAgICAgICAgICAgICAg
ICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoYWN0dWFsLCBleHBlY3RlZCksCisg
IHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgcmhz
X2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1
cmVNZXNzYWdlKGxocywgcmhzKSwKKyAgICAgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2UocmhzLCBsaHMpLAogICAgICAgICAgICAgICAgICAgIGZhbHNlKTsK
IH0KIApAQCAtMTE1MCwxMSArMTUwMywxMCBAQCBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyIyNv
cF9uYW1lKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwgXAogICBpZiAodmFs
MSBvcCB2YWwyKSB7XAogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7XAogICB9IGVsc2Ug
e1wKLSAgICBNZXNzYWdlIG1zZztcCi0gICAgbXNnIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEg
PDwgIikgIiAjb3AgIiAoIiA8PCBleHByMlwKKyAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgp
IFwKKyAgICAgICAgPDwgIkV4cGVjdGVkOiAoIiA8PCBleHByMSA8PCAiKSAiICNvcCAiICgiIDw8
IGV4cHIyXAogICAgICAgICA8PCAiKSwgYWN0dWFsOiAiIDw8IEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZSh2YWwxLCB2YWwyKVwKICAgICAgICAgPDwgIiB2cyAiIDw8IEZvcm1hdEZv
ckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSh2YWwyLCB2YWwxKTtcCi0gICAgcmV0dXJuIEFzc2Vy
dGlvbkZhaWx1cmUobXNnKTtcCiAgIH1cCiB9CiAKQEAgLTExNzcsMzQgKzE1MjksMzQgQEAgR1RF
U1RfSU1QTF9DTVBfSEVMUEVSXyhHVCwgPiApCiAjdW5kZWYgR1RFU1RfSU1QTF9DTVBfSEVMUEVS
XwogCiAvLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fU1RSRVEuCi1B
c3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVz
c2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1YWxf
ZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBl
eHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhY3R1
YWwpIHsKLSAgaWYgKFN0cmluZzo6Q1N0cmluZ0VxdWFscyhleHBlY3RlZCwgYWN0dWFsKSkgewor
QXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNz
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxocywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHMpIHsKKyAgaWYgKFN0
cmluZzo6Q1N0cmluZ0VxdWFscyhsaHMsIHJocykpIHsKICAgICByZXR1cm4gQXNzZXJ0aW9uU3Vj
Y2VzcygpOwogICB9CiAKLSAgcmV0dXJuIEVxRmFpbHVyZShleHBlY3RlZF9leHByZXNzaW9uLAot
ICAgICAgICAgICAgICAgICAgIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAg
IFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQoZXhwZWN0ZWQpLAotICAgICAgICAgICAgICAgICAg
IFN0cmluZzo6U2hvd0NTdHJpbmdRdW90ZWQoYWN0dWFsKSwKKyAgcmV0dXJuIEVxRmFpbHVyZShs
aHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICByaHNfZXhwcmVzc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKGxocyksCisgICAgICAgICAgICAgICAgICAgUHJp
bnRUb1N0cmluZyhyaHMpLAogICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKIH0KIAogLy8gVGhl
IGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NUUkNBU0VFUS4KLUFzc2VydGlv
blJlc3VsdCBDbXBIZWxwZXJTVFJDQVNFRVEoY29uc3QgY2hhciogZXhwZWN0ZWRfZXhwcmVzc2lv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWN0dWFs
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBhY3R1YWwpIHsKLSAgaWYgKFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFs
cyhleHBlY3RlZCwgYWN0dWFsKSkgeworQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VF
UShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxocywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogcmhzKSB7CisgIGlmIChTdHJpbmc6OkNhc2VJbnNlbnNp
dGl2ZUNTdHJpbmdFcXVhbHMobGhzLCByaHMpKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nl
c3MoKTsKICAgfQogCi0gIHJldHVybiBFcUZhaWx1cmUoZXhwZWN0ZWRfZXhwcmVzc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBT
dHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAgICAgICBT
dHJpbmc6OlNob3dDU3RyaW5nUXVvdGVkKGFjdHVhbCksCisgIHJldHVybiBFcUZhaWx1cmUobGhz
X2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAg
ICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhsaHMpLAorICAgICAgICAgICAgICAgICAgIFByaW50
VG9TdHJpbmcocmhzKSwKICAgICAgICAgICAgICAgICAgICB0cnVlKTsKIH0KIApAQCAtMTIxNiwx
MSArMTU2OCw5IEBAIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJORShjb25zdCBjaGFyKiBz
MV9leHByZXNzaW9uLAogICBpZiAoIVN0cmluZzo6Q1N0cmluZ0VxdWFscyhzMSwgczIpKSB7CiAg
ICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfSBlbHNlIHsKLSAgICBNZXNzYWdlIG1z
ZzsKLSAgICBtc2cgPDwgIkV4cGVjdGVkOiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgi
Ci0gICAgICAgIDw8IHMyX2V4cHJlc3Npb24gPDwgIiksIGFjdHVhbDogXCIiCi0gICAgICAgIDw8
IHMxIDw8ICJcIiB2cyBcIiIgPDwgczIgPDwgIlwiIjsKLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFp
bHVyZShtc2cpOworICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgIkV4cGVjdGVkOiAo
IiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8PCBzMl9leHByZXNzaW9uIDw8ICIpLCBhY3R1YWw6IFwiIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgczEgPDwgIlwiIHZzIFwiIiA8PCBzMiA8PCAiXCIiOwogICB9CiB9
CiAKQEAgLTEyMzIsMTEgKzE1ODIsMTAgQEAgQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNB
U0VORShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAogICBpZiAoIVN0cmluZzo6Q2FzZUluc2Vu
c2l0aXZlQ1N0cmluZ0VxdWFscyhzMSwgczIpKSB7CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nl
c3MoKTsKICAgfSBlbHNlIHsKLSAgICBNZXNzYWdlIG1zZzsKLSAgICBtc2cgPDwgIkV4cGVjdGVk
OiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgiCisgICAgcmV0dXJuIEFzc2VydGlvbkZh
aWx1cmUoKQorICAgICAgICA8PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4cHJlc3Npb24gPDwgIikg
IT0gKCIKICAgICAgICAgPDwgczJfZXhwcmVzc2lvbiA8PCAiKSAoaWdub3JpbmcgY2FzZSksIGFj
dHVhbDogXCIiCiAgICAgICAgIDw8IHMxIDw8ICJcIiB2cyBcIiIgPDwgczIgPDwgIlwiIjsKLSAg
ICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwogICB9CiB9CiAKQEAgLTEyODUsMTMgKzE2
MzQsMTIgQEAgQXNzZXJ0aW9uUmVzdWx0IElzU3Vic3RyaW5nSW1wbCgKIAogICBjb25zdCBib29s
IGlzX3dpZGVfc3RyaW5nID0gc2l6ZW9mKG5lZWRsZVswXSkgPiAxOwogICBjb25zdCBjaGFyKiBj
b25zdCBiZWdpbl9zdHJpbmdfcXVvdGUgPSBpc193aWRlX3N0cmluZyA/ICJMXCIiIDogIlwiIjsK
LSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoCi0gICAgICBNZXNzYWdlKCkKKyAgcmV0dXJuIEFz
c2VydGlvbkZhaWx1cmUoKQogICAgICAgPDwgIlZhbHVlIG9mOiAiIDw8IG5lZWRsZV9leHByIDw8
ICJcbiIKICAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBiZWdpbl9zdHJpbmdfcXVvdGUgPDwgbmVl
ZGxlIDw8ICJcIlxuIgogICAgICAgPDwgIkV4cGVjdGVkOiAiIDw8IChleHBlY3RlZF90b19iZV9z
dWJzdHJpbmcgPyAiIiA6ICJub3QgIikKICAgICAgIDw8ICJhIHN1YnN0cmluZyBvZiAiIDw8IGhh
eXN0YWNrX2V4cHIgPDwgIlxuIgotICAgICAgPDwgIldoaWNoIGlzOiAiIDw8IGJlZ2luX3N0cmlu
Z19xdW90ZSA8PCBoYXlzdGFjayA8PCAiXCIiKTsKKyAgICAgIDw8ICJXaGljaCBpczogIiA8PCBi
ZWdpbl9zdHJpbmdfcXVvdGUgPDwgaGF5c3RhY2sgPDwgIlwiIjsKIH0KIAogfSAgLy8gbmFtZXNw
YWNlCkBAIC0xMzYwLDE2ICsxNzA4LDE5IEBAIG5hbWVzcGFjZSB7CiBBc3NlcnRpb25SZXN1bHQg
SFJFU1VMVEZhaWx1cmVIZWxwZXIoY29uc3QgY2hhciogZXhwciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHBlY3RlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb25nIGhyKSB7ICAvLyBOT0xJTlQKLSNpZiBHVEVTVF9P
U19XSU5ET1dTX01PQklMRQorIyBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRSB8fCBHVEVTVF9P
U19XSU5ET1dTX1RWX1RJVExFCisKICAgLy8gV2luZG93cyBDRSBkb2Vzbid0IHN1cHBvcnQgRm9y
bWF0TWVzc2FnZS4KICAgY29uc3QgY2hhciBlcnJvcl90ZXh0W10gPSAiIjsKLSNlbHNlCisKKyMg
ZWxzZQorCiAgIC8vIExvb2tzIHVwIHRoZSBodW1hbi1yZWFkYWJsZSBzeXN0ZW0gbWVzc2FnZSBm
b3IgdGhlIEhSRVNVTFQgY29kZQogICAvLyBhbmQgc2luY2Ugd2UncmUgbm90IHBhc3NpbmcgYW55
IHBhcmFtcyB0byBGb3JtYXRNZXNzYWdlLCB3ZSBkb24ndAogICAvLyB3YW50IGluc2VydHMgZXhw
YW5kZWQuCiAgIGNvbnN0IERXT1JEIGtGbGFncyA9IEZPUk1BVF9NRVNTQUdFX0ZST01fU1lTVEVN
IHwKICAgICAgICAgICAgICAgICAgICAgICAgRk9STUFUX01FU1NBR0VfSUdOT1JFX0lOU0VSVFM7
Ci0gIGNvbnN0IERXT1JEIGtCdWZTaXplID0gNDA5NjsgIC8vIFN0cmluZzo6Rm9ybWF0IGNhbid0
IGV4Y2VlZCB0aGlzIGxlbmd0aC4KKyAgY29uc3QgRFdPUkQga0J1ZlNpemUgPSA0MDk2OwogICAv
LyBHZXRzIHRoZSBzeXN0ZW0ncyBodW1hbiByZWFkYWJsZSBtZXNzYWdlIHN0cmluZyBmb3IgdGhp
cyBIUkVTVUxULgogICBjaGFyIGVycm9yX3RleHRba0J1ZlNpemVdID0geyAnXDAnIH07CiAgIERX
T1JEIG1lc3NhZ2VfbGVuZ3RoID0gOjpGb3JtYXRNZXNzYWdlQShrRmxhZ3MsCkBAIC0xMzc5LDE5
ICsxNzMwLDE4IEBAIEFzc2VydGlvblJlc3VsdCBIUkVTVUxURmFpbHVyZUhlbHBlcihjb25zdCBj
aGFyKiBleHByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJy
b3JfdGV4dCwgIC8vIG91dHB1dCBidWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtCdWZTaXplLCAgLy8gYnVmIHNpemUKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOyAgLy8gbm8gYXJndW1lbnRzIGZvciBpbnNlcnRz
Ci0gIC8vIFRyaW1zIHRhaWxpbmcgd2hpdGUgc3BhY2UgKEZvcm1hdE1lc3NhZ2UgbGVhdmVzIGEg
dHJhaWxpbmcgY3ItbGYpCi0gIGZvciAoOyBtZXNzYWdlX2xlbmd0aCAmJiBpc3NwYWNlKGVycm9y
X3RleHRbbWVzc2FnZV9sZW5ndGggLSAxXSk7CisgIC8vIFRyaW1zIHRhaWxpbmcgd2hpdGUgc3Bh
Y2UgKEZvcm1hdE1lc3NhZ2UgbGVhdmVzIGEgdHJhaWxpbmcgQ1ItTEYpCisgIGZvciAoOyBtZXNz
YWdlX2xlbmd0aCAmJiBJc1NwYWNlKGVycm9yX3RleHRbbWVzc2FnZV9sZW5ndGggLSAxXSk7CiAg
ICAgICAgICAgLS1tZXNzYWdlX2xlbmd0aCkgewogICAgIGVycm9yX3RleHRbbWVzc2FnZV9sZW5n
dGggLSAxXSA9ICdcMCc7CiAgIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
IAotICBjb25zdCBTdHJpbmcgZXJyb3JfaGV4KFN0cmluZzo6Rm9ybWF0KCIweCUwOFggIiwgaHIp
KTsKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCAiRXhwZWN0ZWQ6ICIgPDwgZXhwciA8PCAiICIg
PDwgZXhwZWN0ZWQgPDwgIi5cbiIKLSAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBlcnJvcl9oZXgg
PDwgZXJyb3JfdGV4dCA8PCAiXG4iOworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKIAotICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CisgIGNvbnN0
IHN0ZDo6c3RyaW5nIGVycm9yX2hleCgiMHgiICsgU3RyaW5nOjpGb3JtYXRIZXhJbnQoaHIpKTsK
KyAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisgICAgICA8PCAiRXhwZWN0
ZWQ6ICIgPDwgZXhwciA8PCAiICIgPDwgZXhwZWN0ZWQgPDwgIi5cbiIKKyAgICAgIDw8ICIgIEFj
dHVhbDogIiA8PCBlcnJvcl9oZXggPDwgIiAiIDw8IGVycm9yX3RleHQgPDwgIlxuIjsKIH0KIAog
fSAgLy8gbmFtZXNwYWNlCkBAIC0xNDE1LDcgKzE3NjUsNyBAQCBBc3NlcnRpb25SZXN1bHQgSXNI
UkVTVUxURmFpbHVyZShjb25zdCBjaGFyKiBleHByLCBsb25nIGhyKSB7ICAvLyBOT0xJTlQKIC8v
IFV0aWxpdHkgZnVuY3Rpb25zIGZvciBlbmNvZGluZyBVbmljb2RlIHRleHQgKHdpZGUgc3RyaW5n
cykgaW4KIC8vIFVURi04LgogCi0vLyBBIFVuaWNvZGUgY29kZS1wb2ludCBjYW4gaGF2ZSB1cHRv
IDIxIGJpdHMsIGFuZCBpcyBlbmNvZGVkIGluIFVURi04CisvLyBBIFVuaWNvZGUgY29kZS1wb2lu
dCBjYW4gaGF2ZSB1cCB0byAyMSBiaXRzLCBhbmQgaXMgZW5jb2RlZCBpbiBVVEYtOAogLy8gbGlr
ZSB0aGlzOgogLy8KIC8vIENvZGUtcG9pbnQgbGVuZ3RoICAgRW5jb2RpbmcKQEAgLTE0NDgsMTIg
KzE3OTgsMTUgQEAgaW5saW5lIFVJbnQzMiBDaG9wTG93Qml0cyhVSW50MzIqIGJpdHMsIGludCBu
KSB7CiAvLyBDb252ZXJ0cyBhIFVuaWNvZGUgY29kZSBwb2ludCB0byBhIG5hcnJvdyBzdHJpbmcg
aW4gVVRGLTggZW5jb2RpbmcuCiAvLyBjb2RlX3BvaW50IHBhcmFtZXRlciBpcyBvZiB0eXBlIFVJ
bnQzMiBiZWNhdXNlIHdjaGFyX3QgbWF5IG5vdCBiZQogLy8gd2lkZSBlbm91Z2ggdG8gY29udGFp
biBhIGNvZGUgcG9pbnQuCi0vLyBUaGUgb3V0cHV0IGJ1ZmZlciBzdHIgbXVzdCBjb250YWludCBh
dCBsZWFzdCAzMiBjaGFyYWN0ZXJzLgotLy8gVGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIGFkZHJl
c3Mgb2YgdGhlIG91dHB1dCBidWZmZXIuCiAvLyBJZiB0aGUgY29kZV9wb2ludCBpcyBub3QgYSB2
YWxpZCBVbmljb2RlIGNvZGUgcG9pbnQKLS8vIChpLmUuIG91dHNpZGUgb2YgVW5pY29kZSByYW5n
ZSBVKzAgdG8gVSsxMEZGRkYpIGl0IHdpbGwgYmUgb3V0cHV0Ci0vLyBhcyAnKEludmFsaWQgVW5p
Y29kZSAweFhYWFhYWFhYKScuCi1jaGFyKiBDb2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9p
bnQsIGNoYXIqIHN0cikgeworLy8gKGkuZS4gb3V0c2lkZSBvZiBVbmljb2RlIHJhbmdlIFUrMCB0
byBVKzEwRkZGRikgaXQgd2lsbCBiZSBjb252ZXJ0ZWQKKy8vIHRvICIoSW52YWxpZCBVbmljb2Rl
IDB4WFhYWFhYWFgpIi4KK3N0ZDo6c3RyaW5nIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9w
b2ludCkgeworICBpZiAoY29kZV9wb2ludCA+IGtNYXhDb2RlUG9pbnQ0KSB7CisgICAgcmV0dXJu
ICIoSW52YWxpZCBVbmljb2RlIDB4IiArIFN0cmluZzo6Rm9ybWF0SGV4SW50KGNvZGVfcG9pbnQp
ICsgIikiOworICB9CisKKyAgY2hhciBzdHJbNV07ICAvLyBCaWcgZW5vdWdoIGZvciB0aGUgbGFy
Z2VzdCB2YWxpZCBjb2RlIHBvaW50LgogICBpZiAoY29kZV9wb2ludCA8PSBrTWF4Q29kZVBvaW50
MSkgewogICAgIHN0clsxXSA9ICdcMCc7CiAgICAgc3RyWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4o
Y29kZV9wb2ludCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAweHh4eHh4eApAQCAtMTQ2
NiwyNyArMTgxOSwxNyBAQCBjaGFyKiBDb2RlUG9pbnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQs
IGNoYXIqIHN0cikgewogICAgIHN0clsyXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgfCBDaG9w
TG93Qml0cygmY29kZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKICAgICBzdHJbMV0gPSBzdGF0
aWNfY2FzdDxjaGFyPigweDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVfcG9pbnQsIDYpKTsgIC8vIDEw
eHh4eHh4CiAgICAgc3RyWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHhFMCB8IGNvZGVfcG9pbnQp
OyAgICAgICAgICAgICAgICAgICAvLyAxMTEweHh4eAotICB9IGVsc2UgaWYgKGNvZGVfcG9pbnQg
PD0ga01heENvZGVQb2ludDQpIHsKKyAgfSBlbHNlIHsgIC8vIGNvZGVfcG9pbnQgPD0ga01heENv
ZGVQb2ludDQKICAgICBzdHJbNF0gPSAnXDAnOwogICAgIHN0clszXSA9IHN0YXRpY19jYXN0PGNo
YXI+KDB4ODAgfCBDaG9wTG93Qml0cygmY29kZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKICAg
ICBzdHJbMl0gPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVfcG9p
bnQsIDYpKTsgIC8vIDEweHh4eHh4CiAgICAgc3RyWzFdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHg4
MCB8IENob3BMb3dCaXRzKCZjb2RlX3BvaW50LCA2KSk7ICAvLyAxMHh4eHh4eAogICAgIHN0clsw
XSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4RjAgfCBjb2RlX3BvaW50KTsgICAgICAgICAgICAgICAg
ICAgLy8gMTExMTB4eHgKLSAgfSBlbHNlIHsKLSAgICAvLyBUaGUgbG9uZ2VzdCBzdHJpbmcgU3Ry
aW5nOjpGb3JtYXQgY2FuIHByb2R1Y2Ugd2hlbiBpbnZva2VkCi0gICAgLy8gd2l0aCB0aGVzZSBw
YXJhbWV0ZXJzIGlzIDI4IGNoYXJhY3RlciBsb25nIChub3QgaW5jbHVkaW5nCi0gICAgLy8gdGhl
IHRlcm1pbmF0aW5nIG51bCBjaGFyYWN0ZXIpLiBXZSBhcmUgYXNraW5nIGZvciAzMiBjaGFyYWN0
ZXIKLSAgICAvLyBidWZmZXIganVzdCBpbiBjYXNlLiBUaGlzIGlzIGFsc28gZW5vdWdoIGZvciBz
dHJuY3B5IHRvCi0gICAgLy8gbnVsbC10ZXJtaW5hdGUgdGhlIGRlc3RpbmF0aW9uIHN0cmluZy4K
LSAgICBwb3NpeDo6U3RyTkNweSgKLSAgICAgICAgc3RyLCBTdHJpbmc6OkZvcm1hdCgiKEludmFs
aWQgVW5pY29kZSAweCVYKSIsIGNvZGVfcG9pbnQpLmNfc3RyKCksIDMyKTsKLSAgICBzdHJbMzFd
ID0gJ1wwJzsgIC8vIE1ha2VzIHN1cmUgbm8gY2hhbmdlIGluIHRoZSBmb3JtYXQgdG8gc3RybmNw
eSBsZWF2ZXMKLSAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSByZXN1bHQgdW50ZXJtaW5hdGVk
LgogICB9CiAgIHJldHVybiBzdHI7CiB9CiAKLS8vIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9u
cyBvbmx5IG1ha2Ugc2Vuc2UgaWYgdGhlIHRoZSBzeXN0ZW0KKy8vIFRoZSBmb2xsb3dpbmcgdHdv
IGZ1bmN0aW9ucyBvbmx5IG1ha2Ugc2Vuc2UgaWYgdGhlIHN5c3RlbQogLy8gdXNlcyBVVEYtMTYg
Zm9yIHdpZGUgc3RyaW5nIGVuY29kaW5nLiBBbGwgc3VwcG9ydGVkIHN5c3RlbXMKIC8vIHdpdGgg
MTYgYml0IHdjaGFyX3QgKFdpbmRvd3MsIEN5Z3dpbiwgU3ltYmlhbiBPUykgZG8gdXNlIFVURi0x
Ni4KIApAQCAtMTUyMiwxMSArMTg2NSwxMSBAQCBpbmxpbmUgVUludDMyIENyZWF0ZUNvZGVQb2lu
dEZyb21VdGYxNlN1cnJvZ2F0ZVBhaXIod2NoYXJfdCBmaXJzdCwKIC8vIGFzICcoSW52YWxpZCBV
bmljb2RlIDB4WFhYWFhYWFgpJy4gSWYgdGhlIHN0cmluZyBpcyBpbiBVVEYxNiBlbmNvZGluZwog
Ly8gYW5kIGNvbnRhaW5zIGludmFsaWQgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycywgdmFsdWVzIGlu
IHRob3NlIHBhaXJzCiAvLyB3aWxsIGJlIGVuY29kZWQgYXMgaW5kaXZpZHVhbCBVbmljb2RlIGNo
YXJhY3RlcnMgZnJvbSBCYXNpYyBOb3JtYWwgUGxhbmUuCi1TdHJpbmcgV2lkZVN0cmluZ1RvVXRm
OChjb25zdCB3Y2hhcl90KiBzdHIsIGludCBudW1fY2hhcnMpIHsKK3N0ZDo6c3RyaW5nIFdpZGVT
dHJpbmdUb1V0ZjgoY29uc3Qgd2NoYXJfdCogc3RyLCBpbnQgbnVtX2NoYXJzKSB7CiAgIGlmIChu
dW1fY2hhcnMgPT0gLTEpCiAgICAgbnVtX2NoYXJzID0gc3RhdGljX2Nhc3Q8aW50Pih3Y3NsZW4o
c3RyKSk7CiAKLSAgU3RyU3RyZWFtIHN0cmVhbTsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJl
YW07CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtX2NoYXJzOyArK2kpIHsKICAgICBVSW50MzIg
dW5pY29kZV9jb2RlX3BvaW50OwogCkBAIC0xNTQwLDI3ICsxODgzLDE3IEBAIFN0cmluZyBXaWRl
U3RyaW5nVG9VdGY4KGNvbnN0IHdjaGFyX3QqIHN0ciwgaW50IG51bV9jaGFycykgewogICAgICAg
dW5pY29kZV9jb2RlX3BvaW50ID0gc3RhdGljX2Nhc3Q8VUludDMyPihzdHJbaV0pOwogICAgIH0K
IAotICAgIGNoYXIgYnVmZmVyWzMyXTsgIC8vIENvZGVQb2ludFRvVXRmOCByZXF1aXJlcyBhIGJ1
ZmZlciB0aGlzIGJpZy4KLSAgICBzdHJlYW0gPDwgQ29kZVBvaW50VG9VdGY4KHVuaWNvZGVfY29k
ZV9wb2ludCwgYnVmZmVyKTsKKyAgICBzdHJlYW0gPDwgQ29kZVBvaW50VG9VdGY4KHVuaWNvZGVf
Y29kZV9wb2ludCk7CiAgIH0KLSAgcmV0dXJuIFN0clN0cmVhbVRvU3RyaW5nKCZzdHJlYW0pOwor
ICByZXR1cm4gU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnN0cmVhbSk7CiB9CiAKLS8vIENvbnZlcnRz
IGEgd2lkZSBDIHN0cmluZyB0byBhIFN0cmluZyB1c2luZyB0aGUgVVRGLTggZW5jb2RpbmcuCisv
LyBDb252ZXJ0cyBhIHdpZGUgQyBzdHJpbmcgdG8gYW4gc3RkOjpzdHJpbmcgdXNpbmcgdGhlIFVU
Ri04IGVuY29kaW5nLgogLy8gTlVMTCB3aWxsIGJlIGNvbnZlcnRlZCB0byAiKG51bGwpIi4KLVN0
cmluZyBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZyhjb25zdCB3Y2hhcl90ICogd2lkZV9jX3N0cikg
ewotICBpZiAod2lkZV9jX3N0ciA9PSBOVUxMKSByZXR1cm4gU3RyaW5nKCIobnVsbCkiKTsKLQot
ICByZXR1cm4gU3RyaW5nKGludGVybmFsOjpXaWRlU3RyaW5nVG9VdGY4KHdpZGVfY19zdHIsIC0x
KS5jX3N0cigpKTsKLX0KLQotLy8gU2ltaWxhciB0byBTaG93V2lkZUNTdHJpbmcoKSwgZXhjZXB0
IHRoYXQgdGhpcyBmdW5jdGlvbiBlbmNsb3NlcwotLy8gdGhlIGNvbnZlcnRlZCBzdHJpbmcgaW4g
ZG91YmxlIHF1b3Rlcy4KLVN0cmluZyBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChjb25z
dCB3Y2hhcl90KiB3aWRlX2Nfc3RyKSB7Ci0gIGlmICh3aWRlX2Nfc3RyID09IE5VTEwpIHJldHVy
biBTdHJpbmcoIihudWxsKSIpOworc3RkOjpzdHJpbmcgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmco
Y29uc3Qgd2NoYXJfdCAqIHdpZGVfY19zdHIpIHsKKyAgaWYgKHdpZGVfY19zdHIgPT0gTlVMTCkg
IHJldHVybiAiKG51bGwpIjsKIAotICByZXR1cm4gU3RyaW5nOjpGb3JtYXQoIkxcIiVzXCIiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmcod2lkZV9jX3N0
cikuY19zdHIoKSk7CisgIHJldHVybiBpbnRlcm5hbDo6V2lkZVN0cmluZ1RvVXRmOCh3aWRlX2Nf
c3RyLCAtMSk7CiB9CiAKIC8vIENvbXBhcmVzIHR3byB3aWRlIEMgc3RyaW5ncy4gIFJldHVybnMg
dHJ1ZSBpZmYgdGhleSBoYXZlIHRoZSBzYW1lCkBAIC0xNTc4LDE4ICsxOTExLDE4IEBAIGJvb2wg
U3RyaW5nOjpXaWRlQ1N0cmluZ0VxdWFscyhjb25zdCB3Y2hhcl90ICogbGhzLCBjb25zdCB3Y2hh
cl90ICogcmhzKSB7CiB9CiAKIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgKl9TVFJFUSBvbiB3aWRl
IHN0cmluZ3MuCi1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogZXhw
ZWN0ZWRfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBhY3R1YWxfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB3Y2hhcl90KiBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB3Y2hhcl90KiBhY3R1YWwpIHsKLSAgaWYgKFN0cmluZzo6V2lkZUNTdHJpbmdFcXVhbHMo
ZXhwZWN0ZWQsIGFjdHVhbCkpIHsKK0Fzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJFUShjb25z
dCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB3Y2hhcl90KiBsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgd2NoYXJfdCogcmhzKSB7CisgIGlmIChTdHJpbmc6OldpZGVDU3RyaW5nRXF1YWxzKGxocywg
cmhzKSkgewogICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CiAgIH0KIAotICByZXR1cm4g
RXFGYWlsdXJlKGV4cGVjdGVkX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgYWN0dWFs
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdR
dW90ZWQoZXhwZWN0ZWQpLAotICAgICAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd1dpZGVDU3Ry
aW5nUXVvdGVkKGFjdHVhbCksCisgIHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgUHJp
bnRUb1N0cmluZyhsaHMpLAorICAgICAgICAgICAgICAgICAgIFByaW50VG9TdHJpbmcocmhzKSwK
ICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CiB9CiAKQEAgLTE2MDIsMTIgKzE5MzUsMTAgQEAg
QXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUk5FKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24s
CiAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKICAgfQogCi0gIE1lc3NhZ2UgbXNnOwot
ICBtc2cgPDwgIkV4cGVjdGVkOiAoIiA8PCBzMV9leHByZXNzaW9uIDw8ICIpICE9ICgiCi0gICAg
ICA8PCBzMl9leHByZXNzaW9uIDw8ICIpLCBhY3R1YWw6ICIKLSAgICAgIDw8IFN0cmluZzo6U2hv
d1dpZGVDU3RyaW5nUXVvdGVkKHMxKQotICAgICAgPDwgIiB2cyAiIDw8IFN0cmluZzo6U2hvd1dp
ZGVDU3RyaW5nUXVvdGVkKHMyKTsKLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUobXNnKTsKKyAg
cmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4cHJlc3Np
b24gPDwgIikgIT0gKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzMl9leHByZXNz
aW9uIDw8ICIpLCBhY3R1YWw6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBQcmlu
dFRvU3RyaW5nKHMxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgdnMgIiA8PCBQ
cmludFRvU3RyaW5nKHMyKTsKIH0KIAogLy8gQ29tcGFyZXMgdHdvIEMgc3RyaW5ncywgaWdub3Jp
bmcgY2FzZS4gIFJldHVybnMgdHJ1ZSBpZmYgdGhleSBoYXZlCkBAIC0xNjM4LDE3ICsxOTY5LDE3
IEBAIGJvb2wgU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGNvbnN0IGNoYXIg
KiBsaHMsIGNvbnN0IGNoYXIgKiByaHMpIHsKICAgLy8gY3VycmVudCBsb2NhbGUuCiBib29sIFN0
cmluZzo6Q2FzZUluc2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMoY29uc3Qgd2NoYXJfdCogbGhz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdj
aGFyX3QqIHJocykgewotICBpZiAoIGxocyA9PSBOVUxMICkgcmV0dXJuIHJocyA9PSBOVUxMOwor
ICBpZiAobGhzID09IE5VTEwpIHJldHVybiByaHMgPT0gTlVMTDsKIAotICBpZiAoIHJocyA9PSBO
VUxMICkgcmV0dXJuIGZhbHNlOworICBpZiAocmhzID09IE5VTEwpIHJldHVybiBmYWxzZTsKIAog
I2lmIEdURVNUX09TX1dJTkRPV1MKICAgcmV0dXJuIF93Y3NpY21wKGxocywgcmhzKSA9PSAwOwot
I2VsaWYgR1RFU1RfT1NfTElOVVgKKyNlbGlmIEdURVNUX09TX0xJTlVYICYmICFHVEVTVF9PU19M
SU5VWF9BTkRST0lECiAgIHJldHVybiB3Y3NjYXNlY21wKGxocywgcmhzKSA9PSAwOwogI2Vsc2UK
LSAgLy8gTWFjIE9TIFggYW5kIEN5Z3dpbiBkb24ndCBkZWZpbmUgd2NzY2FzZWNtcC4gIE90aGVy
IHVua25vd24gT1NlcwotICAvLyBtYXkgbm90IGRlZmluZSBpdCBlaXRoZXIuCisgIC8vIEFuZHJv
aWQsIE1hYyBPUyBYIGFuZCBDeWd3aW4gZG9uJ3QgZGVmaW5lIHdjc2Nhc2VjbXAuCisgIC8vIE90
aGVyIHVua25vd24gT1NlcyBtYXkgbm90IGRlZmluZSBpdCBlaXRoZXIuCiAgIHdpbnRfdCBsZWZ0
LCByaWdodDsKICAgZG8gewogICAgIGxlZnQgPSB0b3dsb3dlcigqbGhzKyspOwpAQCAtMTY1OCwx
MzMgKzE5ODksNjkgQEAgYm9vbCBTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZVdpZGVDU3RyaW5nRXF1
YWxzKGNvbnN0IHdjaGFyX3QqIGxocywKICNlbmRpZiAgLy8gT1Mgc2VsZWN0b3IKIH0KIAotLy8g
Q29tcGFyZXMgdGhpcyB3aXRoIGFub3RoZXIgU3RyaW5nLgotLy8gUmV0dXJucyA8IDAgaWYgdGhp
cyBpcyBsZXNzIHRoYW4gcmhzLCAwIGlmIHRoaXMgaXMgZXF1YWwgdG8gcmhzLCBvciA+IDAKLS8v
IGlmIHRoaXMgaXMgZ3JlYXRlciB0aGFuIHJocy4KLWludCBTdHJpbmc6OkNvbXBhcmUoY29uc3Qg
U3RyaW5nICYgcmhzKSBjb25zdCB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IGxoc19jX3N0ciA9IGNf
c3RyKCk7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IHJoc19jX3N0ciA9IHJocy5jX3N0cigpOwotCi0g
IGlmIChsaHNfY19zdHIgPT0gTlVMTCkgewotICAgIHJldHVybiByaHNfY19zdHIgPT0gTlVMTCA/
IDAgOiAtMTsgIC8vIE5VTEwgPCBhbnl0aGluZyBleGNlcHQgTlVMTAotICB9IGVsc2UgaWYgKHJo
c19jX3N0ciA9PSBOVUxMKSB7Ci0gICAgcmV0dXJuIDE7Ci0gIH0KLQotICBjb25zdCBzaXplX3Qg
c2hvcnRlcl9zdHJfbGVuID0KLSAgICAgIGxlbmd0aCgpIDw9IHJocy5sZW5ndGgoKSA/IGxlbmd0
aCgpIDogcmhzLmxlbmd0aCgpOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBzaG9ydGVyX3N0
cl9sZW47IGkrKykgewotICAgIGlmIChsaHNfY19zdHJbaV0gPCByaHNfY19zdHJbaV0pIHsKLSAg
ICAgIHJldHVybiAtMTsKLSAgICB9IGVsc2UgaWYgKGxoc19jX3N0cltpXSA+IHJoc19jX3N0cltp
XSkgewotICAgICAgcmV0dXJuIDE7Ci0gICAgfQotICB9Ci0gIHJldHVybiAobGVuZ3RoKCkgPCBy
aHMubGVuZ3RoKCkpID8gLTEgOgotICAgICAgKGxlbmd0aCgpID4gcmhzLmxlbmd0aCgpKSA/IDEg
OiAwOworLy8gUmV0dXJucyB0cnVlIGlmZiBzdHIgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXgs
IGlnbm9yaW5nIGNhc2UuCisvLyBBbnkgc3RyaW5nIGlzIGNvbnNpZGVyZWQgdG8gZW5kIHdpdGgg
YW4gZW1wdHkgc3VmZml4LgorYm9vbCBTdHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKAor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIsIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdWZmaXgpIHsK
KyAgY29uc3Qgc2l6ZV90IHN0cl9sZW4gPSBzdHIubGVuZ3RoKCk7CisgIGNvbnN0IHNpemVfdCBz
dWZmaXhfbGVuID0gc3VmZml4Lmxlbmd0aCgpOworICByZXR1cm4gKHN0cl9sZW4gPj0gc3VmZml4
X2xlbikgJiYKKyAgICAgICAgIENhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMoc3RyLmNfc3Ry
KCkgKyBzdHJfbGVuIC0gc3VmZml4X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3VmZml4LmNfc3RyKCkpOwogfQogCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMg
U3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LiAgKkFueSoKLS8vIFN0cmluZyBpcyBj
b25zaWRlcmVkIHRvIGVuZCB3aXRoIGEgTlVMTCBvciBlbXB0eSBzdWZmaXguCi1ib29sIFN0cmlu
Zzo6RW5kc1dpdGgoY29uc3QgY2hhciogc3VmZml4KSBjb25zdCB7Ci0gIGlmIChzdWZmaXggPT0g
TlVMTCB8fCBDU3RyaW5nRXF1YWxzKHN1ZmZpeCwgIiIpKSByZXR1cm4gdHJ1ZTsKLQotICBpZiAo
Y19zdHIoKSA9PSBOVUxMKSByZXR1cm4gZmFsc2U7Ci0KLSAgY29uc3Qgc2l6ZV90IHRoaXNfbGVu
ID0gc3RybGVuKGNfc3RyKCkpOwotICBjb25zdCBzaXplX3Qgc3VmZml4X2xlbiA9IHN0cmxlbihz
dWZmaXgpOwotICByZXR1cm4gKHRoaXNfbGVuID49IHN1ZmZpeF9sZW4pICYmCi0gICAgICAgICBD
U3RyaW5nRXF1YWxzKGNfc3RyKCkgKyB0aGlzX2xlbiAtIHN1ZmZpeF9sZW4sIHN1ZmZpeCk7Cisv
LyBGb3JtYXRzIGFuIGludCB2YWx1ZSBhcyAiJTAyZCIuCitzdGQ6OnN0cmluZyBTdHJpbmc6OkZv
cm1hdEludFdpZHRoMihpbnQgdmFsdWUpIHsKKyAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIHNz
IDw8IHN0ZDo6c2V0ZmlsbCgnMCcpIDw8IHN0ZDo6c2V0dygyKSA8PCB2YWx1ZTsKKyAgcmV0dXJu
IHNzLnN0cigpOwogfQogCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgU3RyaW5nIGVuZHMgd2l0
aCB0aGUgZ2l2ZW4gc3VmZml4LCBpZ25vcmluZyBjYXNlLgotLy8gQW55IFN0cmluZyBpcyBjb25z
aWRlcmVkIHRvIGVuZCB3aXRoIGEgTlVMTCBvciBlbXB0eSBzdWZmaXguCi1ib29sIFN0cmluZzo6
RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoY29uc3QgY2hhciogc3VmZml4KSBjb25zdCB7Ci0gIGlm
IChzdWZmaXggPT0gTlVMTCB8fCBDU3RyaW5nRXF1YWxzKHN1ZmZpeCwgIiIpKSByZXR1cm4gdHJ1
ZTsKLQotICBpZiAoY19zdHIoKSA9PSBOVUxMKSByZXR1cm4gZmFsc2U7Ci0KLSAgY29uc3Qgc2l6
ZV90IHRoaXNfbGVuID0gc3RybGVuKGNfc3RyKCkpOwotICBjb25zdCBzaXplX3Qgc3VmZml4X2xl
biA9IHN0cmxlbihzdWZmaXgpOwotICByZXR1cm4gKHRoaXNfbGVuID49IHN1ZmZpeF9sZW4pICYm
Ci0gICAgICAgICBDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGNfc3RyKCkgKyB0aGlzX2xl
biAtIHN1ZmZpeF9sZW4sIHN1ZmZpeCk7CisvLyBGb3JtYXRzIGFuIGludCB2YWx1ZSBhcyAiJVgi
Lgorc3RkOjpzdHJpbmcgU3RyaW5nOjpGb3JtYXRIZXhJbnQoaW50IHZhbHVlKSB7CisgIHN0ZDo6
c3RyaW5nc3RyZWFtIHNzOworICBzcyA8PCBzdGQ6OmhleCA8PCBzdGQ6OnVwcGVyY2FzZSA8PCB2
YWx1ZTsKKyAgcmV0dXJuIHNzLnN0cigpOwogfQogCi0vLyBGb3JtYXRzIGEgbGlzdCBvZiBhcmd1
bWVudHMgdG8gYSBTdHJpbmcsIHVzaW5nIHRoZSBzYW1lIGZvcm1hdAotLy8gc3BlYyBzdHJpbmcg
YXMgZm9yIHByaW50Zi4KLS8vCi0vLyBXZSBkbyBub3QgdXNlIHRoZSBTdHJpbmdQcmludGYgY2xh
c3MgYXMgaXQgaXMgbm90IHVuaXZlcnNhbGx5Ci0vLyBhdmFpbGFibGUuCi0vLwotLy8gVGhlIHJl
c3VsdCBpcyBsaW1pdGVkIHRvIDQwOTYgY2hhcmFjdGVycyAoaW5jbHVkaW5nIHRoZSB0YWlsaW5n
IDApLgotLy8gSWYgNDA5NiBjaGFyYWN0ZXJzIGFyZSBub3QgZW5vdWdoIHRvIGZvcm1hdCB0aGUg
aW5wdXQsIG9yIGlmCi0vLyB0aGVyZSdzIGFuIGVycm9yLCAiPGZvcm1hdHRpbmcgZXJyb3Igb3Ig
YnVmZmVyIGV4Y2VlZGVkPiIgaXMKLS8vIHJldHVybmVkLgotU3RyaW5nIFN0cmluZzo6Rm9ybWF0
KGNvbnN0IGNoYXIgKiBmb3JtYXQsIC4uLikgewotICB2YV9saXN0IGFyZ3M7Ci0gIHZhX3N0YXJ0
KGFyZ3MsIGZvcm1hdCk7Ci0KLSAgY2hhciBidWZmZXJbNDA5Nl07Ci0gIGNvbnN0IGludCBrQnVm
ZmVyU2l6ZSA9IHNpemVvZihidWZmZXIpL3NpemVvZihidWZmZXJbMF0pOwotCi0gIC8vIE1TVkMg
OCBkZXByZWNhdGVzIHZzbnByaW50ZigpLCBzbyB3ZSB3YW50IHRvIHN1cHByZXNzIHdhcm5pbmcK
LSAgLy8gNDk5NiAoZGVwcmVjYXRlZCBmdW5jdGlvbikgdGhlcmUuCi0jaWZkZWYgX01TQ19WRVIg
IC8vIFdlIGFyZSB1c2luZyBNU1ZDLgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpICAgICAgICAgIC8v
IFNhdmVzIHRoZSBjdXJyZW50IHdhcm5pbmcgc3RhdGUuCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTo0OTk2KSAgLy8gVGVtcG9yYXJpbHkgZGlzYWJsZXMgd2FybmluZyA0OTk2LgotICBjb25zdCBp
bnQgc2l6ZSA9IHZzbnByaW50ZihidWZmZXIsIGtCdWZmZXJTaXplLCBmb3JtYXQsIGFyZ3MpOwot
I3ByYWdtYSB3YXJuaW5nKHBvcCkgICAgICAgICAgIC8vIFJlc3RvcmVzIHRoZSB3YXJuaW5nIHN0
YXRlLgotI2Vsc2UgIC8vIFdlIGFyZSBub3QgdXNpbmcgTVNWQy4KLSAgY29uc3QgaW50IHNpemUg
PSB2c25wcmludGYoYnVmZmVyLCBrQnVmZmVyU2l6ZSwgZm9ybWF0LCBhcmdzKTsKLSNlbmRpZiAg
Ly8gX01TQ19WRVIKLSAgdmFfZW5kKGFyZ3MpOwotCi0gIC8vIHZzbnByaW50ZigpJ3MgYmVoYXZp
b3IgaXMgbm90IHBvcnRhYmxlLiAgV2hlbiB0aGUgYnVmZmVyIGlzIG5vdAotICAvLyBiaWcgZW5v
dWdoLCBpdCByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUgaW4gTVNWQywgYW5kIHJldHVybnMgdGhl
Ci0gIC8vIG5lZWRlZCBidWZmZXIgc2l6ZSBvbiBMaW51eC4gIFdoZW4gdGhlcmUgaXMgYW4gb3V0
cHV0IGVycm9yLCBpdAotICAvLyBhbHdheXMgcmV0dXJucyBhIG5lZ2F0aXZlIHZhbHVlLiAgRm9y
IHNpbXBsaWNpdHksIHdlIGx1bXAgdGhlIHR3bwotICAvLyBlcnJvciBjYXNlcyB0b2dldGhlci4K
LSAgaWYgKHNpemUgPCAwIHx8IHNpemUgPj0ga0J1ZmZlclNpemUpIHsKLSAgICByZXR1cm4gU3Ry
aW5nKCI8Zm9ybWF0dGluZyBlcnJvciBvciBidWZmZXIgZXhjZWVkZWQ+Iik7Ci0gIH0gZWxzZSB7
Ci0gICAgcmV0dXJuIFN0cmluZyhidWZmZXIsIHNpemUpOwotICB9CisvLyBGb3JtYXRzIGEgYnl0
ZSBhcyAiJTAyWCIuCitzdGQ6OnN0cmluZyBTdHJpbmc6OkZvcm1hdEJ5dGUodW5zaWduZWQgY2hh
ciB2YWx1ZSkgeworICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgc3MgPDwgc3RkOjpzZXRmaWxs
KCcwJykgPDwgc3RkOjpzZXR3KDIpIDw8IHN0ZDo6aGV4IDw8IHN0ZDo6dXBwZXJjYXNlCisgICAg
IDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odmFsdWUpOworICByZXR1cm4gc3Muc3RyKCk7
CiB9CiAKLS8vIENvbnZlcnRzIHRoZSBidWZmZXIgaW4gYSBTdHJTdHJlYW0gdG8gYSBTdHJpbmcs
IGNvbnZlcnRpbmcgTlVMCisvLyBDb252ZXJ0cyB0aGUgYnVmZmVyIGluIGEgc3RyaW5nc3RyZWFt
IHRvIGFuIHN0ZDo6c3RyaW5nLCBjb252ZXJ0aW5nIE5VTAogLy8gYnl0ZXMgdG8gIlxcMCIgYWxv
bmcgdGhlIHdheS4KLVN0cmluZyBTdHJTdHJlYW1Ub1N0cmluZyhTdHJTdHJlYW0qIHNzKSB7Citz
dGQ6OnN0cmluZyBTdHJpbmdTdHJlYW1Ub1N0cmluZyg6OnN0ZDo6c3RyaW5nc3RyZWFtKiBzcykg
ewogICBjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIgPSBzcy0+c3RyKCk7CiAgIGNvbnN0IGNoYXIq
IGNvbnN0IHN0YXJ0ID0gc3RyLmNfc3RyKCk7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IGVuZCA9IHN0
YXJ0ICsgc3RyLmxlbmd0aCgpOwogCi0gIC8vIFdlIG5lZWQgdG8gdXNlIGEgaGVscGVyIFN0clN0
cmVhbSB0byBkbyB0aGlzIHRyYW5zZm9ybWF0aW9uCi0gIC8vIGJlY2F1c2UgU3RyaW5nIGRvZXNu
J3Qgc3VwcG9ydCBwdXNoX2JhY2soKS4KLSAgU3RyU3RyZWFtIGhlbHBlcjsKKyAgc3RkOjpzdHJp
bmcgcmVzdWx0OworICByZXN1bHQucmVzZXJ2ZSgyICogKGVuZCAtIHN0YXJ0KSk7CiAgIGZvciAo
Y29uc3QgY2hhciogY2ggPSBzdGFydDsgY2ggIT0gZW5kOyArK2NoKSB7CiAgICAgaWYgKCpjaCA9
PSAnXDAnKSB7Ci0gICAgICBoZWxwZXIgPDwgIlxcMCI7ICAvLyBSZXBsYWNlcyBOVUwgd2l0aCAi
XFwwIjsKKyAgICAgIHJlc3VsdCArPSAiXFwwIjsgIC8vIFJlcGxhY2VzIE5VTCB3aXRoICJcXDAi
OwogICAgIH0gZWxzZSB7Ci0gICAgICBoZWxwZXIucHV0KCpjaCk7CisgICAgICByZXN1bHQgKz0g
KmNoOwogICAgIH0KICAgfQogCi0gIHJldHVybiBTdHJpbmcoaGVscGVyLnN0cigpLmNfc3RyKCkp
OworICByZXR1cm4gcmVzdWx0OwogfQogCiAvLyBBcHBlbmRzIHRoZSB1c2VyLXN1cHBsaWVkIG1l
c3NhZ2UgdG8gdGhlIEdvb2dsZS1UZXN0LWdlbmVyYXRlZCBtZXNzYWdlLgotU3RyaW5nIEFwcGVu
ZFVzZXJNZXNzYWdlKGNvbnN0IFN0cmluZyYgZ3Rlc3RfbXNnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IE1lc3NhZ2UmIHVzZXJfbXNnKSB7CitzdGQ6OnN0cmluZyBBcHBlbmRVc2Vy
TWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgZ3Rlc3RfbXNnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgTWVzc2FnZSYgdXNlcl9tc2cpIHsKICAgLy8gQXBwZW5kcyB0aGUg
dXNlciBtZXNzYWdlIGlmIGl0J3Mgbm9uLWVtcHR5LgotICBjb25zdCBTdHJpbmcgdXNlcl9tc2df
c3RyaW5nID0gdXNlcl9tc2cuR2V0U3RyaW5nKCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHVzZXJf
bXNnX3N0cmluZyA9IHVzZXJfbXNnLkdldFN0cmluZygpOwogICBpZiAodXNlcl9tc2dfc3RyaW5n
LmVtcHR5KCkpIHsKICAgICByZXR1cm4gZ3Rlc3RfbXNnOwogICB9CiAKLSAgTWVzc2FnZSBtc2c7
Ci0gIG1zZyA8PCBndGVzdF9tc2cgPDwgIlxuIiA8PCB1c2VyX21zZ19zdHJpbmc7Ci0KLSAgcmV0
dXJuIG1zZy5HZXRTdHJpbmcoKTsKKyAgcmV0dXJuIGd0ZXN0X21zZyArICJcbiIgKyB1c2VyX21z
Z19zdHJpbmc7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbApAQCAtMTgzMiw4ICsyMDk5
LDkgQEAgdm9pZCBUZXN0UmVzdWx0OjpBZGRUZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJl
c3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgewogLy8gQWRkcyBhIHRlc3QgcHJvcGVydHkgdG8gdGhl
IGxpc3QuIElmIGEgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBrZXkgYXMgdGhlCiAvLyBzdXBwbGll
ZCBwcm9wZXJ0eSBpcyBhbHJlYWR5IHJlcHJlc2VudGVkLCB0aGUgdmFsdWUgb2YgdGhpcyB0ZXN0
X3Byb3BlcnR5CiAvLyByZXBsYWNlcyB0aGUgb2xkIHZhbHVlIGZvciB0aGF0IGtleS4KLXZvaWQg
VGVzdFJlc3VsdDo6UmVjb3JkUHJvcGVydHkoY29uc3QgVGVzdFByb3BlcnR5JiB0ZXN0X3Byb3Bl
cnR5KSB7Ci0gIGlmICghVmFsaWRhdGVUZXN0UHJvcGVydHkodGVzdF9wcm9wZXJ0eSkpIHsKK3Zv
aWQgVGVzdFJlc3VsdDo6UmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9lbGVt
ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UHJvcGVydHkm
IHRlc3RfcHJvcGVydHkpIHsKKyAgaWYgKCFWYWxpZGF0ZVRlc3RQcm9wZXJ0eSh4bWxfZWxlbWVu
dCwgdGVzdF9wcm9wZXJ0eSkpIHsKICAgICByZXR1cm47CiAgIH0KICAgaW50ZXJuYWw6Ok11dGV4
TG9jayBsb2NrKCZ0ZXN0X3Byb3Blcml0ZXNfbXV0ZXhfKTsKQEAgLTE4NDcsMjEgKzIxMTUsOTAg
QEAgdm9pZCBUZXN0UmVzdWx0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRl
c3RfcHJvcGVydHkpIHsKICAgcHJvcGVydHlfd2l0aF9tYXRjaGluZ19rZXktPlNldFZhbHVlKHRl
c3RfcHJvcGVydHkudmFsdWUoKSk7CiB9CiAKLS8vIEFkZHMgYSBmYWlsdXJlIGlmIHRoZSBrZXkg
aXMgYSByZXNlcnZlZCBhdHRyaWJ1dGUgb2YgR29vZ2xlIFRlc3QKLS8vIHRlc3RjYXNlIHRhZ3Mu
ICBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3BlcnR5IGlzIHZhbGlkLgotYm9vbCBUZXN0UmVzdWx0
OjpWYWxpZGF0ZVRlc3RQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkp
IHsKLSAgaW50ZXJuYWw6OlN0cmluZyBrZXkodGVzdF9wcm9wZXJ0eS5rZXkoKSk7Ci0gIGlmIChr
ZXkgPT0gIm5hbWUiIHx8IGtleSA9PSAic3RhdHVzIiB8fCBrZXkgPT0gInRpbWUiIHx8IGtleSA9
PSAiY2xhc3NuYW1lIikgewotICAgIEFERF9GQUlMVVJFKCkKLSAgICAgICAgPDwgIlJlc2VydmVk
IGtleSB1c2VkIGluIFJlY29yZFByb3BlcnR5KCk6ICIKLSAgICAgICAgPDwga2V5Ci0gICAgICAg
IDw8ICIgKCduYW1lJywgJ3N0YXR1cycsICd0aW1lJywgYW5kICdjbGFzc25hbWUnIGFyZSByZXNl
cnZlZCBieSAiCi0gICAgICAgIDw8IEdURVNUX05BTUVfIDw8ICIpIjsKKy8vIFRoZSBsaXN0IG9m
IHJlc2VydmVkIGF0dHJpYnV0ZXMgdXNlZCBpbiB0aGUgPHRlc3RzdWl0ZXM+IGVsZW1lbnQgb2Yg
WE1MCisvLyBvdXRwdXQuCitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qga1Jlc2VydmVkVGVzdFN1
aXRlc0F0dHJpYnV0ZXNbXSA9IHsKKyAgImRpc2FibGVkIiwKKyAgImVycm9ycyIsCisgICJmYWls
dXJlcyIsCisgICJuYW1lIiwKKyAgInJhbmRvbV9zZWVkIiwKKyAgInRlc3RzIiwKKyAgInRpbWUi
LAorICAidGltZXN0YW1wIgorfTsKKworLy8gVGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgYXR0cmlidXRl
cyB1c2VkIGluIHRoZSA8dGVzdHN1aXRlPiBlbGVtZW50IG9mIFhNTAorLy8gb3V0cHV0Lgorc3Rh
dGljIGNvbnN0IGNoYXIqIGNvbnN0IGtSZXNlcnZlZFRlc3RTdWl0ZUF0dHJpYnV0ZXNbXSA9IHsK
KyAgImRpc2FibGVkIiwKKyAgImVycm9ycyIsCisgICJmYWlsdXJlcyIsCisgICJuYW1lIiwKKyAg
InRlc3RzIiwKKyAgInRpbWUiCit9OworCisvLyBUaGUgbGlzdCBvZiByZXNlcnZlZCBhdHRyaWJ1
dGVzIHVzZWQgaW4gdGhlIDx0ZXN0Y2FzZT4gZWxlbWVudCBvZiBYTUwgb3V0cHV0Lgorc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IGtSZXNlcnZlZFRlc3RDYXNlQXR0cmlidXRlc1tdID0geworICAg
ICJjbGFzc25hbWUiLCAgIm5hbWUiLCAgICAgICAgInN0YXR1cyIsICJ0aW1lIiwKKyAgICAidHlw
ZV9wYXJhbSIsICJ2YWx1ZV9wYXJhbSIsICJmaWxlIiwgICAibGluZSJ9OworCit0ZW1wbGF0ZSA8
aW50IGtTaXplPgorc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEFycmF5QXNWZWN0b3IoY29uc3Qg
Y2hhciogY29uc3QgKCZhcnJheSlba1NpemVdKSB7CisgIHJldHVybiBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4oYXJyYXksIGFycmF5ICsga1NpemUpOworfQorCitzdGF0aWMgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IEdldFJlc2VydmVkQXR0cmlidXRlc0ZvckVsZW1lbnQoCisgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50KSB7CisgIGlmICh4bWxfZWxlbWVudCA9PSAidGVzdHN1
aXRlcyIpIHsKKyAgICByZXR1cm4gQXJyYXlBc1ZlY3RvcihrUmVzZXJ2ZWRUZXN0U3VpdGVzQXR0
cmlidXRlcyk7CisgIH0gZWxzZSBpZiAoeG1sX2VsZW1lbnQgPT0gInRlc3RzdWl0ZSIpIHsKKyAg
ICByZXR1cm4gQXJyYXlBc1ZlY3RvcihrUmVzZXJ2ZWRUZXN0U3VpdGVBdHRyaWJ1dGVzKTsKKyAg
fSBlbHNlIGlmICh4bWxfZWxlbWVudCA9PSAidGVzdGNhc2UiKSB7CisgICAgcmV0dXJuIEFycmF5
QXNWZWN0b3Ioa1Jlc2VydmVkVGVzdENhc2VBdHRyaWJ1dGVzKTsKKyAgfSBlbHNlIHsKKyAgICBH
VEVTVF9DSEVDS18oZmFsc2UpIDw8ICJVbnJlY29nbml6ZWQgeG1sX2VsZW1lbnQgcHJvdmlkZWQ6
ICIgPDwgeG1sX2VsZW1lbnQ7CisgIH0KKyAgLy8gVGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGJ1
dCBzb21lIGNvbXBpbGVycyBtYXkgbm90IHJlYWxpemVzIHRoYXQuCisgIHJldHVybiBzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4oKTsKK30KKworc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFdvcmRM
aXN0KGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgd29yZHMpIHsKKyAgTWVzc2FnZSB3
b3JkX2xpc3Q7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHMuc2l6ZSgpOyArK2kpIHsK
KyAgICBpZiAoaSA+IDAgJiYgd29yZHMuc2l6ZSgpID4gMikgeworICAgICAgd29yZF9saXN0IDw8
ICIsICI7CisgICAgfQorICAgIGlmIChpID09IHdvcmRzLnNpemUoKSAtIDEpIHsKKyAgICAgIHdv
cmRfbGlzdCA8PCAiYW5kICI7CisgICAgfQorICAgIHdvcmRfbGlzdCA8PCAiJyIgPDwgd29yZHNb
aV0gPDwgIiciOworICB9CisgIHJldHVybiB3b3JkX2xpc3QuR2V0U3RyaW5nKCk7Cit9CisKK3N0
YXRpYyBib29sIFZhbGlkYXRlVGVzdFByb3BlcnR5TmFtZSgKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgcHJvcGVydHlfbmFtZSwKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHJl
c2VydmVkX25hbWVzKSB7CisgIGlmIChzdGQ6OmZpbmQocmVzZXJ2ZWRfbmFtZXMuYmVnaW4oKSwg
cmVzZXJ2ZWRfbmFtZXMuZW5kKCksIHByb3BlcnR5X25hbWUpICE9CisgICAgICAgICAgcmVzZXJ2
ZWRfbmFtZXMuZW5kKCkpIHsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJSZXNlcnZlZCBrZXkgdXNl
ZCBpbiBSZWNvcmRQcm9wZXJ0eSgpOiAiIDw8IHByb3BlcnR5X25hbWUKKyAgICAgICAgICAgICAg
ICAgIDw8ICIgKCIgPDwgRm9ybWF0V29yZExpc3QocmVzZXJ2ZWRfbmFtZXMpCisgICAgICAgICAg
ICAgICAgICA8PCAiIGFyZSByZXNlcnZlZCBieSAiIDw8IEdURVNUX05BTUVfIDw8ICIpIjsKICAg
ICByZXR1cm4gZmFsc2U7CiAgIH0KICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIEFkZHMgYSBmYWls
dXJlIGlmIHRoZSBrZXkgaXMgYSByZXNlcnZlZCBhdHRyaWJ1dGUgb2YgdGhlIGVsZW1lbnQgbmFt
ZWQKKy8vIHhtbF9lbGVtZW50LiAgUmV0dXJucyB0cnVlIGlmIHRoZSBwcm9wZXJ0eSBpcyB2YWxp
ZC4KK2Jvb2wgVGVzdFJlc3VsdDo6VmFsaWRhdGVUZXN0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJp
bmcmIHhtbF9lbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpIHsKKyAgcmV0dXJuIFZhbGlkYXRlVGVz
dFByb3BlcnR5TmFtZSh0ZXN0X3Byb3BlcnR5LmtleSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdldFJlc2VydmVkQXR0cmlidXRlc0ZvckVsZW1lbnQoeG1sX2VsZW1lbnQp
KTsKK30KKwogLy8gQ2xlYXJzIHRoZSBvYmplY3QuCiB2b2lkIFRlc3RSZXN1bHQ6OkNsZWFyKCkg
ewogICB0ZXN0X3BhcnRfcmVzdWx0c18uY2xlYXIoKTsKQEAgLTE5MTQsMTQgKzIyNTEsMTUgQEAg
aW50IFRlc3RSZXN1bHQ6OnRlc3RfcHJvcGVydHlfY291bnQoKSBjb25zdCB7CiAKIC8vIENyZWF0
ZXMgYSBUZXN0IG9iamVjdC4KIAotLy8gVGhlIGMndG9yIHNhdmVzIHRoZSB2YWx1ZXMgb2YgYWxs
IEdvb2dsZSBUZXN0IGZsYWdzLgorLy8gVGhlIGMndG9yIHNhdmVzIHRoZSBzdGF0ZXMgb2YgYWxs
IGZsYWdzLgogVGVzdDo6VGVzdCgpCi0gICAgOiBndGVzdF9mbGFnX3NhdmVyXyhuZXcgaW50ZXJu
YWw6OkdUZXN0RmxhZ1NhdmVyKSB7CisgICAgOiBndGVzdF9mbGFnX3NhdmVyXyhuZXcgR1RFU1Rf
RkxBR19TQVZFUl8pIHsKIH0KIAotLy8gVGhlIGQndG9yIHJlc3RvcmVzIHRoZSB2YWx1ZXMgb2Yg
YWxsIEdvb2dsZSBUZXN0IGZsYWdzLgorLy8gVGhlIGQndG9yIHJlc3RvcmVzIHRoZSBzdGF0ZXMg
b2YgYWxsIGZsYWdzLiAgVGhlIGFjdHVhbCB3b3JrIGlzCisvLyBkb25lIGJ5IHRoZSBkJ3RvciBv
ZiB0aGUgZ3Rlc3RfZmxhZ19zYXZlcl8gZmllbGQsIGFuZCB0aHVzIG5vdAorLy8gdmlzaWJsZSBo
ZXJlLgogVGVzdDo6flRlc3QoKSB7Ci0gIGRlbGV0ZSBndGVzdF9mbGFnX3NhdmVyXzsKIH0KIAog
Ly8gU2V0cyB1cCB0aGUgdGVzdCBmaXh0dXJlLgpAQCAtMTkzNywxMiArMjI3NSwxMiBAQCB2b2lk
IFRlc3Q6OlRlYXJEb3duKCkgewogfQogCiAvLyBBbGxvd3MgdXNlciBzdXBwbGllZCBrZXkgdmFs
dWUgcGFpcnMgdG8gYmUgcmVjb3JkZWQgZm9yIGxhdGVyIG91dHB1dC4KLXZvaWQgVGVzdDo6UmVj
b3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBjb25zdCBjaGFyKiB2YWx1ZSkgewotICBVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+UmVjb3JkUHJvcGVydHlGb3JDdXJyZW50VGVzdChrZXksIHZh
bHVlKTsKK3ZvaWQgVGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwg
Y29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSB7CisgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5S
ZWNvcmRQcm9wZXJ0eShrZXksIHZhbHVlKTsKIH0KIAogLy8gQWxsb3dzIHVzZXIgc3VwcGxpZWQg
a2V5IHZhbHVlIHBhaXJzIHRvIGJlIHJlY29yZGVkIGZvciBsYXRlciBvdXRwdXQuCi12b2lkIFRl
c3Q6OlJlY29yZFByb3BlcnR5KGNvbnN0IGNoYXIqIGtleSwgaW50IHZhbHVlKSB7Cit2b2lkIFRl
c3Q6OlJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGludCB2YWx1ZSkgewog
ICBNZXNzYWdlIHZhbHVlX21lc3NhZ2U7CiAgIHZhbHVlX21lc3NhZ2UgPDwgdmFsdWU7CiAgIFJl
Y29yZFByb3BlcnR5KGtleSwgdmFsdWVfbWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0cigpKTsKQEAg
LTE5NTEsNyArMjI4OSw3IEBAIHZvaWQgVGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3QgY2hhciog
a2V5LCBpbnQgdmFsdWUpIHsKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIHZvaWQgUmVwb3J0RmFp
bHVyZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbWVzc2FnZSkgewogICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGEgZnJpZW5kIG9mIFVuaXRUZXN0
IGFuZCBhcyBzdWNoIGhhcyBhY2Nlc3MgdG8KICAgLy8gQWRkVGVzdFBhcnRSZXN1bHQuCiAgIFVu
aXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5BZGRUZXN0UGFydFJlc3VsdCgKQEAgLTE5NTksMjcgKzIy
OTcsMTEgQEAgdm9pZCBSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oVGVzdFBhcnRSZXN1
bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCiAgICAgICBOVUxMLCAgLy8gTm8gaW5mbyBhYm91dCB0aGUg
c291cmNlIGZpbGUgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4KICAgICAgIC0xLCAgICAv
LyBXZSBoYXZlIG5vIGluZm8gb24gd2hpY2ggbGluZSBjYXVzZWQgdGhlIGV4Y2VwdGlvbi4KICAg
ICAgIG1lc3NhZ2UsCi0gICAgICBTdHJpbmcoKSk7ICAvLyBObyBzdGFjayB0cmFjZSwgZWl0aGVy
LgorICAgICAgIiIpOyAgIC8vIE5vIHN0YWNrIHRyYWNlLCBlaXRoZXIuCiB9CiAKIH0gIC8vIG5h
bWVzcGFjZSBpbnRlcm5hbAogCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotLy8gV2UgYXJlIG9uIFdp
bmRvd3MuCi0KLS8vIEFkZHMgYW4gImV4Y2VwdGlvbiB0aHJvd24iIGZhdGFsIGZhaWx1cmUgdG8g
dGhlIGN1cnJlbnQgdGVzdC4KLXN0YXRpYyB2b2lkIEFkZEV4Y2VwdGlvblRocm93bkZhaWx1cmUo
RFdPUkQgZXhjZXB0aW9uX2NvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7Ci0gIE1lc3NhZ2UgbWVzc2FnZTsKLSAgbWVzc2Fn
ZSA8PCAiRXhjZXB0aW9uIHRocm93biB3aXRoIGNvZGUgMHgiIDw8IHN0ZDo6c2V0YmFzZSgxNikg
PDwKLSAgICBleGNlcHRpb25fY29kZSA8PCBzdGQ6OnNldGJhc2UoMTApIDw8ICIgaW4gIiA8PCBs
b2NhdGlvbiA8PCAiLiI7Ci0KLSAgaW50ZXJuYWw6OlJlcG9ydEZhaWx1cmVJblVua25vd25Mb2Nh
dGlvbihUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLkdldFN0cmluZygpKTsKLX0KLQotI2VuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KIC8vIEdvb2dsZSBUZXN0IHJlcXVpcmVzIGFsbCB0ZXN0
cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgdG8gdXNlIHRoZSBzYW1lIHRlc3QKIC8vIGZpeHR1cmUg
Y2xhc3MuICBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgY3VycmVudCB0ZXN0IGhhcyB0aGUK
IC8vIHNhbWUgZml4dHVyZSBjbGFzcyBhcyB0aGUgZmlyc3QgdGVzdCBpbiB0aGUgY3VycmVudCB0
ZXN0IGNhc2UuICBJZgpAQCAtMTk5MCwxNSArMjMxMiwxMyBAQCBib29sIFRlc3Q6Okhhc1NhbWVG
aXh0dXJlQ2xhc3MoKSB7CiAgIGNvbnN0IFRlc3RDYXNlKiBjb25zdCB0ZXN0X2Nhc2UgPSBpbXBs
LT5jdXJyZW50X3Rlc3RfY2FzZSgpOwogCiAgIC8vIEluZm8gYWJvdXQgdGhlIGZpcnN0IHRlc3Qg
aW4gdGhlIGN1cnJlbnQgdGVzdCBjYXNlLgotICBjb25zdCBpbnRlcm5hbDo6VGVzdEluZm9JbXBs
KiBjb25zdCBmaXJzdF90ZXN0X2luZm8gPQotICAgICAgdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlz
dCgpWzBdLT5pbXBsKCk7Ci0gIGNvbnN0IGludGVybmFsOjpUeXBlSWQgZmlyc3RfZml4dHVyZV9p
ZCA9IGZpcnN0X3Rlc3RfaW5mby0+Zml4dHVyZV9jbGFzc19pZCgpOworICBjb25zdCBUZXN0SW5m
byogY29uc3QgZmlyc3RfdGVzdF9pbmZvID0gdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpWzBd
OworICBjb25zdCBpbnRlcm5hbDo6VHlwZUlkIGZpcnN0X2ZpeHR1cmVfaWQgPSBmaXJzdF90ZXN0
X2luZm8tPmZpeHR1cmVfY2xhc3NfaWRfOwogICBjb25zdCBjaGFyKiBjb25zdCBmaXJzdF90ZXN0
X25hbWUgPSBmaXJzdF90ZXN0X2luZm8tPm5hbWUoKTsKIAogICAvLyBJbmZvIGFib3V0IHRoZSBj
dXJyZW50IHRlc3QuCi0gIGNvbnN0IGludGVybmFsOjpUZXN0SW5mb0ltcGwqIGNvbnN0IHRoaXNf
dGVzdF9pbmZvID0KLSAgICAgIGltcGwtPmN1cnJlbnRfdGVzdF9pbmZvKCktPmltcGwoKTsKLSAg
Y29uc3QgaW50ZXJuYWw6OlR5cGVJZCB0aGlzX2ZpeHR1cmVfaWQgPSB0aGlzX3Rlc3RfaW5mby0+
Zml4dHVyZV9jbGFzc19pZCgpOworICBjb25zdCBUZXN0SW5mbyogY29uc3QgdGhpc190ZXN0X2lu
Zm8gPSBpbXBsLT5jdXJyZW50X3Rlc3RfaW5mbygpOworICBjb25zdCBpbnRlcm5hbDo6VHlwZUlk
IHRoaXNfZml4dHVyZV9pZCA9IHRoaXNfdGVzdF9pbmZvLT5maXh0dXJlX2NsYXNzX2lkXzsKICAg
Y29uc3QgY2hhciogY29uc3QgdGhpc190ZXN0X25hbWUgPSB0aGlzX3Rlc3RfaW5mby0+bmFtZSgp
OwogCiAgIGlmICh0aGlzX2ZpeHR1cmVfaWQgIT0gZmlyc3RfZml4dHVyZV9pZCkgewpAQCAtMjAw
OCw4ICsyMzI4LDggQEAgYm9vbCBUZXN0OjpIYXNTYW1lRml4dHVyZUNsYXNzKCkgewogICAgIGNv
bnN0IGJvb2wgdGhpc19pc19URVNUID0gdGhpc19maXh0dXJlX2lkID09IGludGVybmFsOjpHZXRU
ZXN0VHlwZUlkKCk7CiAKICAgICBpZiAoZmlyc3RfaXNfVEVTVCB8fCB0aGlzX2lzX1RFU1QpIHsK
LSAgICAgIC8vIFRoZSB1c2VyIG1peGVkIFRFU1QgYW5kIFRFU1RfRiBpbiB0aGlzIHRlc3QgY2Fz
ZSAtIHdlJ2xsIHRlbGwKLSAgICAgIC8vIGhpbS9oZXIgaG93IHRvIGZpeCBpdC4KKyAgICAgIC8v
IEJvdGggVEVTVCBhbmQgVEVTVF9GIGFwcGVhciBpbiBzYW1lIHRlc3QgY2FzZSwgd2hpY2ggaXMg
aW5jb3JyZWN0LgorICAgICAgLy8gVGVsbCB0aGUgdXNlciBob3cgdG8gZml4IHRoaXMuCiAKICAg
ICAgIC8vIEdldHMgdGhlIG5hbWUgb2YgdGhlIFRFU1QgYW5kIHRoZSBuYW1lIG9mIHRoZSBURVNU
X0YuICBOb3RlCiAgICAgICAvLyB0aGF0IGZpcnN0X2lzX1RFU1QgYW5kIHRoaXNfaXNfVEVTVCBj
YW5ub3QgYm90aCBiZSB0cnVlLCBhcwpAQCAtMjAyOSw4ICsyMzQ5LDggQEAgYm9vbCBUZXN0OjpI
YXNTYW1lRml4dHVyZUNsYXNzKCkgewogICAgICAgICAgIDw8ICJ3YW50IHRvIGNoYW5nZSB0aGUg
VEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0byBhbm90aGVyIHRlc3RcbiIKICAgICAgICAgICA8
PCAiY2FzZS4iOwogICAgIH0gZWxzZSB7Ci0gICAgICAvLyBUaGUgdXNlciBkZWZpbmVkIHR3byBm
aXh0dXJlIGNsYXNzZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGluCi0gICAgICAvLyB0d28gbmFtZXNw
YWNlcyAtIHdlJ2xsIHRlbGwgaGltL2hlciBob3cgdG8gZml4IGl0LgorICAgICAgLy8gVHdvIGZp
eHR1cmUgY2xhc3NlcyB3aXRoIHRoZSBzYW1lIG5hbWUgYXBwZWFyIGluIHR3byBkaWZmZXJlbnQK
KyAgICAgIC8vIG5hbWVzcGFjZXMsIHdoaWNoIGlzIG5vdCBhbGxvd2VkLiBUZWxsIHRoZSB1c2Vy
IGhvdyB0byBmaXggdGhpcy4KICAgICAgIEFERF9GQUlMVVJFKCkKICAgICAgICAgICA8PCAiQWxs
IHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1
cmVcbiIKICAgICAgICAgICA8PCAiY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgIgpAQCAt
MjA0OCw2MiArMjM2OCwxNjQgQEAgYm9vbCBUZXN0OjpIYXNTYW1lRml4dHVyZUNsYXNzKCkgewog
ICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gUnVucyB0aGUgdGVzdCBhbmQgdXBkYXRlcyB0aGUgdGVz
dCByZXN1bHQuCi12b2lkIFRlc3Q6OlJ1bigpIHsKLSAgaWYgKCFIYXNTYW1lRml4dHVyZUNsYXNz
KCkpIHJldHVybjsKLQotICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0gaW50
ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpOwogI2lmIEdURVNUX0hBU19TRUgKLSAgLy8gQ2F0Y2gg
U0VILXN0eWxlIGV4Y2VwdGlvbnMuCi0gIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5V
cG9uTGVhdmluZ0dUZXN0KCk7Ci0gIF9fdHJ5IHsKLSAgICBTZXRVcCgpOwotICB9IF9fZXhjZXB0
KGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCgKLSAgICAg
IEdldEV4Y2VwdGlvbkNvZGUoKSkpIHsKLSAgICBBZGRFeGNlcHRpb25UaHJvd25GYWlsdXJlKEdl
dEV4Y2VwdGlvbkNvZGUoKSwgIlNldFVwKCkiKTsKLSAgfQogCi0gIC8vIFdlIHdpbGwgcnVuIHRo
ZSB0ZXN0IG9ubHkgaWYgU2V0VXAoKSBoYWQgbm8gZmF0YWwgZmFpbHVyZS4KLSAgaWYgKCFIYXNG
YXRhbEZhaWx1cmUoKSkgewotICAgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9u
TGVhdmluZ0dUZXN0KCk7Ci0gICAgX190cnkgewotICAgICAgVGVzdEJvZHkoKTsKLSAgICB9IF9f
ZXhjZXB0KGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCgK
LSAgICAgICAgR2V0RXhjZXB0aW9uQ29kZSgpKSkgewotICAgICAgQWRkRXhjZXB0aW9uVGhyb3du
RmFpbHVyZShHZXRFeGNlcHRpb25Db2RlKCksICJ0aGUgdGVzdCBib2R5Iik7Ci0gICAgfQotICB9
CisvLyBBZGRzIGFuICJleGNlcHRpb24gdGhyb3duIiBmYXRhbCBmYWlsdXJlIHRvIHRoZSBjdXJy
ZW50IHRlc3QuICBUaGlzCisvLyBmdW5jdGlvbiByZXR1cm5zIGl0cyByZXN1bHQgdmlhIGFuIG91
dHB1dCBwYXJhbWV0ZXIgcG9pbnRlciBiZWNhdXNlIFZDKysKKy8vIHByb2hpYml0cyBjcmVhdGlv
biBvZiBvYmplY3RzIHdpdGggZGVzdHJ1Y3RvcnMgb24gc3RhY2sgaW4gZnVuY3Rpb25zCisvLyB1
c2luZyBfX3RyeSAoc2VlIGVycm9yIEMyNzEyKS4KK3N0YXRpYyBzdGQ6OnN0cmluZyogRm9ybWF0
U2VoRXhjZXB0aW9uTWVzc2FnZShEV09SRCBleGNlcHRpb25fY29kZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBsb2NhdGlvbikgewor
ICBNZXNzYWdlIG1lc3NhZ2U7CisgIG1lc3NhZ2UgPDwgIlNFSCBleGNlcHRpb24gd2l0aCBjb2Rl
IDB4IiA8PCBzdGQ6OnNldGJhc2UoMTYpIDw8CisgICAgZXhjZXB0aW9uX2NvZGUgPDwgc3RkOjpz
ZXRiYXNlKDEwKSA8PCAiIHRocm93biBpbiAiIDw8IGxvY2F0aW9uIDw8ICIuIjsKIAotICAvLyBI
b3dldmVyLCB3ZSB3YW50IHRvIGNsZWFuIHVwIGFzIG11Y2ggYXMgcG9zc2libGUuICBIZW5jZSB3
ZSB3aWxsCi0gIC8vIGFsd2F5cyBjYWxsIFRlYXJEb3duKCksIGV2ZW4gaWYgU2V0VXAoKSBvciB0
aGUgdGVzdCBib2R5IGhhcwotICAvLyBmYWlsZWQuCi0gIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dl
dHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7CisgIHJldHVybiBuZXcgc3RkOjpzdHJpbmcobWVz
c2FnZS5HZXRTdHJpbmcoKSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAorCituYW1l
c3BhY2UgaW50ZXJuYWwgeworCisjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworLy8gQWRkcyBh
biAiZXhjZXB0aW9uIHRocm93biIgZmF0YWwgZmFpbHVyZSB0byB0aGUgY3VycmVudCB0ZXN0Lgor
c3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdEN4eEV4Y2VwdGlvbk1lc3NhZ2UoY29uc3QgY2hhciog
ZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBsb2NhdGlvbikgeworICBNZXNzYWdlIG1lc3NhZ2U7CisgIGlmIChkZXNj
cmlwdGlvbiAhPSBOVUxMKSB7CisgICAgbWVzc2FnZSA8PCAiQysrIGV4Y2VwdGlvbiB3aXRoIGRl
c2NyaXB0aW9uIFwiIiA8PCBkZXNjcmlwdGlvbiA8PCAiXCIiOworICB9IGVsc2UgeworICAgIG1l
c3NhZ2UgPDwgIlVua25vd24gQysrIGV4Y2VwdGlvbiI7CisgIH0KKyAgbWVzc2FnZSA8PCAiIHRo
cm93biBpbiAiIDw8IGxvY2F0aW9uIDw8ICIuIjsKKworICByZXR1cm4gbWVzc2FnZS5HZXRTdHJp
bmcoKTsKK30KKworc3RhdGljIHN0ZDo6c3RyaW5nIFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmlu
ZygKKyAgICBjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCk7CisKK0dvb2ds
ZVRlc3RGYWlsdXJlRXhjZXB0aW9uOjpHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbigKKyAgICBj
b25zdCBUZXN0UGFydFJlc3VsdCYgZmFpbHVyZSkKKyAgICA6IDo6c3RkOjpydW50aW1lX2Vycm9y
KFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmluZyhmYWlsdXJlKS5jX3N0cigpKSB7fQorCisjZW5k
aWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCisKKy8vIFdlIHB1dCB0aGVzZSBoZWxwZXIgZnVu
Y3Rpb25zIGluIHRoZSBpbnRlcm5hbCBuYW1lc3BhY2UgYXMgSUJNJ3MgeGxDCisvLyBjb21waWxl
ciByZWplY3RzIHRoZSBjb2RlIGlmIHRoZXkgd2VyZSBkZWNsYXJlZCBzdGF0aWMuCisKKy8vIFJ1
bnMgdGhlIGdpdmVuIG1ldGhvZCBhbmQgaGFuZGxlcyBTRUggZXhjZXB0aW9ucyBpdCB0aHJvd3Ms
IHdoZW4KKy8vIFNFSCBpcyBzdXBwb3J0ZWQ7IHJldHVybnMgdGhlIDAtdmFsdWUgZm9yIHR5cGUg
UmVzdWx0IGluIGNhc2Ugb2YgYW4KKy8vIFNFSCBleGNlcHRpb24uICAoTWljcm9zb2Z0IGNvbXBp
bGVycyBjYW5ub3QgaGFuZGxlIFNFSCBhbmQgQysrCisvLyBleGNlcHRpb25zIGluIHRoZSBzYW1l
IGZ1bmN0aW9uLiAgVGhlcmVmb3JlLCB3ZSBwcm92aWRlIGEgc2VwYXJhdGUKKy8vIHdyYXBwZXIg
ZnVuY3Rpb24gZm9yIGhhbmRsaW5nIFNFSCBleGNlcHRpb25zLikKK3RlbXBsYXRlIDxjbGFzcyBU
LCB0eXBlbmFtZSBSZXN1bHQ+CitSZXN1bHQgSGFuZGxlU2VoRXhjZXB0aW9uc0luTWV0aG9kSWZT
dXBwb3J0ZWQoCisgICAgVCogb2JqZWN0LCBSZXN1bHQgKFQ6OiptZXRob2QpKCksIGNvbnN0IGNo
YXIqIGxvY2F0aW9uKSB7CisjaWYgR1RFU1RfSEFTX1NFSAogICBfX3RyeSB7Ci0gICAgVGVhckRv
d24oKTsKLSAgfSBfX2V4Y2VwdChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpHVGVzdFNob3Vs
ZFByb2Nlc3NTRUgoCisgICAgcmV0dXJuIChvYmplY3QtPiptZXRob2QpKCk7CisgIH0gX19leGNl
cHQgKGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCggIC8v
IE5PTElOVAogICAgICAgR2V0RXhjZXB0aW9uQ29kZSgpKSkgewotICAgIEFkZEV4Y2VwdGlvblRo
cm93bkZhaWx1cmUoR2V0RXhjZXB0aW9uQ29kZSgpLCAiVGVhckRvd24oKSIpOworICAgIC8vIFdl
IGNyZWF0ZSB0aGUgZXhjZXB0aW9uIG1lc3NhZ2Ugb24gdGhlIGhlYXAgYmVjYXVzZSBWQysrIHBy
b2hpYml0cworICAgIC8vIGNyZWF0aW9uIG9mIG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycyBvbiBz
dGFjayBpbiBmdW5jdGlvbnMgdXNpbmcgX190cnkKKyAgICAvLyAoc2VlIGVycm9yIEMyNzEyKS4K
KyAgICBzdGQ6OnN0cmluZyogZXhjZXB0aW9uX21lc3NhZ2UgPSBGb3JtYXRTZWhFeGNlcHRpb25N
ZXNzYWdlKAorICAgICAgICBHZXRFeGNlcHRpb25Db2RlKCksIGxvY2F0aW9uKTsKKyAgICBpbnRl
cm5hbDo6UmVwb3J0RmFpbHVyZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjprRmF0
YWxGYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KmV4Y2VwdGlvbl9tZXNzYWdlKTsKKyAgICBkZWxldGUgZXhjZXB0aW9uX21lc3NhZ2U7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFJlc3VsdD4oMCk7CiAgIH0KKyNlbHNlCisgICh2b2lkKWxvY2F0
aW9uOworICByZXR1cm4gKG9iamVjdC0+Km1ldGhvZCkoKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFT
X1NFSAorfQogCi0jZWxzZSAgLy8gV2UgYXJlIG9uIGEgY29tcGlsZXIgb3IgcGxhdGZvcm0gdGhh
dCBkb2Vzbid0IHN1cHBvcnQgU0VILgotICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+
VXBvbkxlYXZpbmdHVGVzdCgpOwotICBTZXRVcCgpOworLy8gUnVucyB0aGUgZ2l2ZW4gbWV0aG9k
IGFuZCBjYXRjaGVzIGFuZCByZXBvcnRzIEMrKyBhbmQvb3IgU0VILXN0eWxlCisvLyBleGNlcHRp
b25zLCBpZiB0aGV5IGFyZSBzdXBwb3J0ZWQ7IHJldHVybnMgdGhlIDAtdmFsdWUgZm9yIHR5cGUK
Ky8vIFJlc3VsdCBpbiBjYXNlIG9mIGFuIFNFSCBleGNlcHRpb24uCit0ZW1wbGF0ZSA8Y2xhc3Mg
VCwgdHlwZW5hbWUgUmVzdWx0PgorUmVzdWx0IEhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3Vw
cG9ydGVkKAorICAgIFQqIG9iamVjdCwgUmVzdWx0IChUOjoqbWV0aG9kKSgpLCBjb25zdCBjaGFy
KiBsb2NhdGlvbikgeworICAvLyBOT1RFOiBUaGUgdXNlciBjb2RlIGNhbiBhZmZlY3QgdGhlIHdh
eSBpbiB3aGljaCBHb29nbGUgVGVzdCBoYW5kbGVzCisgIC8vIGV4Y2VwdGlvbnMgYnkgc2V0dGlu
ZyBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpLCBidXQgb25seSBiZWZvcmUKKyAgLy8gUlVO
X0FMTF9URVNUUygpIHN0YXJ0cy4gSXQgaXMgdGVjaG5pY2FsbHkgcG9zc2libGUgdG8gY2hlY2sg
dGhlIGZsYWcKKyAgLy8gYWZ0ZXIgdGhlIGV4Y2VwdGlvbiBpcyBjYXVnaHQgYW5kIGVpdGhlciBy
ZXBvcnQgb3IgcmUtdGhyb3cgdGhlCisgIC8vIGV4Y2VwdGlvbiBiYXNlZCBvbiB0aGUgZmxhZydz
IHZhbHVlOgorICAvLworICAvLyB0cnkgeworICAvLyAgIC8vIFBlcmZvcm0gdGhlIHRlc3QgbWV0
aG9kLgorICAvLyB9IGNhdGNoICguLi4pIHsKKyAgLy8gICBpZiAoR1RFU1RfRkxBRyhjYXRjaF9l
eGNlcHRpb25zKSkKKyAgLy8gICAgIC8vIFJlcG9ydCB0aGUgZXhjZXB0aW9uIGFzIGZhaWx1cmUu
CisgIC8vICAgZWxzZQorICAvLyAgICAgdGhyb3c7ICAvLyBSZS10aHJvd3MgdGhlIG9yaWdpbmFs
IGV4Y2VwdGlvbi4KKyAgLy8gfQorICAvLworICAvLyBIb3dldmVyLCB0aGUgcHVycG9zZSBvZiB0
aGlzIGZsYWcgaXMgdG8gYWxsb3cgdGhlIHByb2dyYW0gdG8gZHJvcCBpbnRvCisgIC8vIHRoZSBk
ZWJ1Z2dlciB3aGVuIHRoZSBleGNlcHRpb24gaXMgdGhyb3duLiBPbiBtb3N0IHBsYXRmb3Jtcywg
b25jZSB0aGUKKyAgLy8gY29udHJvbCBlbnRlcnMgdGhlIGNhdGNoIGJsb2NrLCB0aGUgZXhjZXB0
aW9uIG9yaWdpbiBpbmZvcm1hdGlvbiBpcworICAvLyBsb3N0IGFuZCB0aGUgZGVidWdnZXIgd2ls
bCBzdG9wIHRoZSBwcm9ncmFtIGF0IHRoZSBwb2ludCBvZiB0aGUKKyAgLy8gcmUtdGhyb3cgaW4g
dGhpcyBmdW5jdGlvbiAtLSBpbnN0ZWFkIG9mIGF0IHRoZSBwb2ludCBvZiB0aGUgb3JpZ2luYWwK
KyAgLy8gdGhyb3cgc3RhdGVtZW50IGluIHRoZSBjb2RlIHVuZGVyIHRlc3QuICBGb3IgdGhpcyBy
ZWFzb24sIHdlIHBlcmZvcm0KKyAgLy8gdGhlIGNoZWNrIGVhcmx5LCBzYWNyaWZpY2luZyB0aGUg
YWJpbGl0eSB0byBhZmZlY3QgR29vZ2xlIFRlc3QncworICAvLyBleGNlcHRpb24gaGFuZGxpbmcg
aW4gdGhlIG1ldGhvZCB3aGVyZSB0aGUgZXhjZXB0aW9uIGlzIHRocm93bi4KKyAgaWYgKGludGVy
bmFsOjpHZXRVbml0VGVzdEltcGwoKS0+Y2F0Y2hfZXhjZXB0aW9ucygpKSB7CisjaWYgR1RFU1Rf
SEFTX0VYQ0VQVElPTlMKKyAgICB0cnkgeworICAgICAgcmV0dXJuIEhhbmRsZVNlaEV4Y2VwdGlv
bnNJbk1ldGhvZElmU3VwcG9ydGVkKG9iamVjdCwgbWV0aG9kLCBsb2NhdGlvbik7CisgICAgfSBj
YXRjaCAoY29uc3QgQXNzZXJ0aW9uRXhjZXB0aW9uJikgeyAgLy8gTk9MSU5UCisgICAgICAvLyBU
aGlzIGZhaWx1cmUgd2FzIHJlcG9ydGVkIGFscmVhZHkuCisgICAgfSBjYXRjaCAoY29uc3QgaW50
ZXJuYWw6Okdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uJikgeyAgLy8gTk9MSU5UCisgICAgICAv
LyBUaGlzIGV4Y2VwdGlvbiB0eXBlIGNhbiBvbmx5IGJlIHRocm93biBieSBhIGZhaWxlZCBHb29n
bGUKKyAgICAgIC8vIFRlc3QgYXNzZXJ0aW9uIHdpdGggdGhlIGludGVudGlvbiBvZiBsZXR0aW5n
IGFub3RoZXIgdGVzdGluZworICAgICAgLy8gZnJhbWV3b3JrIGNhdGNoIGl0LiAgVGhlcmVmb3Jl
IHdlIGp1c3QgcmUtdGhyb3cgaXQuCisgICAgICB0aHJvdzsKKyAgICB9IGNhdGNoIChjb25zdCBz
dGQ6OmV4Y2VwdGlvbiYgZSkgeyAgLy8gTk9MSU5UCisgICAgICBpbnRlcm5hbDo6UmVwb3J0RmFp
bHVyZUluVW5rbm93bkxvY2F0aW9uKAorICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxG
YWlsdXJlLAorICAgICAgICAgIEZvcm1hdEN4eEV4Y2VwdGlvbk1lc3NhZ2UoZS53aGF0KCksIGxv
Y2F0aW9uKSk7CisgICAgfSBjYXRjaCAoLi4uKSB7ICAvLyBOT0xJTlQKKyAgICAgIGludGVybmFs
OjpSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oCisgICAgICAgICAgVGVzdFBhcnRSZXN1
bHQ6OmtGYXRhbEZhaWx1cmUsCisgICAgICAgICAgRm9ybWF0Q3h4RXhjZXB0aW9uTWVzc2FnZShO
VUxMLCBsb2NhdGlvbikpOworICAgIH0KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzdWx0Pigw
KTsKKyNlbHNlCisgICAgcmV0dXJuIEhhbmRsZVNlaEV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9y
dGVkKG9iamVjdCwgbWV0aG9kLCBsb2NhdGlvbik7CisjZW5kaWYgIC8vIEdURVNUX0hBU19FWENF
UFRJT05TCisgIH0gZWxzZSB7CisgICAgcmV0dXJuIChvYmplY3QtPiptZXRob2QpKCk7CisgIH0K
K30KKworfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCiAKKy8vIFJ1bnMgdGhlIHRlc3QgYW5kIHVw
ZGF0ZXMgdGhlIHRlc3QgcmVzdWx0Lgordm9pZCBUZXN0OjpSdW4oKSB7CisgIGlmICghSGFzU2Ft
ZUZpeHR1cmVDbGFzcygpKSByZXR1cm47CisKKyAgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCogY29u
c3QgaW1wbCA9IGludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKTsKKyAgaW1wbC0+b3Nfc3RhY2tf
dHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKKyAgaW50ZXJuYWw6OkhhbmRsZUV4
Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKHRoaXMsICZUZXN0OjpTZXRVcCwgIlNldFVwKCki
KTsKICAgLy8gV2Ugd2lsbCBydW4gdGhlIHRlc3Qgb25seSBpZiBTZXRVcCgpIHdhcyBzdWNjZXNz
ZnVsLgogICBpZiAoIUhhc0ZhdGFsRmFpbHVyZSgpKSB7CiAgICAgaW1wbC0+b3Nfc3RhY2tfdHJh
Y2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgICBUZXN0Qm9keSgpOworICAgIGlu
dGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAgICAgICAgdGhp
cywgJlRlc3Q6OlRlc3RCb2R5LCAidGhlIHRlc3QgYm9keSIpOwogICB9CiAKICAgLy8gSG93ZXZl
ciwgd2Ugd2FudCB0byBjbGVhbiB1cCBhcyBtdWNoIGFzIHBvc3NpYmxlLiAgSGVuY2Ugd2Ugd2ls
bAogICAvLyBhbHdheXMgY2FsbCBUZWFyRG93bigpLCBldmVuIGlmIFNldFVwKCkgb3IgdGhlIHRl
c3QgYm9keSBoYXMKICAgLy8gZmFpbGVkLgogICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIo
KS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotICBUZWFyRG93bigpOwotI2VuZGlmICAvLyBHVEVTVF9I
QVNfU0VICisgIGludGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgK
KyAgICAgIHRoaXMsICZUZXN0OjpUZWFyRG93biwgIlRlYXJEb3duKCkiKTsKIH0KIAotCiAvLyBS
ZXR1cm5zIHRydWUgaWZmIHRoZSBjdXJyZW50IHRlc3QgaGFzIGEgZmF0YWwgZmFpbHVyZS4KIGJv
b2wgVGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkgewogICByZXR1cm4gaW50ZXJuYWw6OkdldFVuaXRU
ZXN0SW1wbCgpLT5jdXJyZW50X3Rlc3RfcmVzdWx0KCktPkhhc0ZhdGFsRmFpbHVyZSgpOwpAQCAt
MjExOCwyMiArMjU0MCwyOCBAQCBib29sIFRlc3Q6Okhhc05vbmZhdGFsRmFpbHVyZSgpIHsKIC8v
IGNsYXNzIFRlc3RJbmZvCiAKIC8vIENvbnN0cnVjdHMgYSBUZXN0SW5mbyBvYmplY3QuIEl0IGFz
c3VtZXMgb3duZXJzaGlwIG9mIHRoZSB0ZXN0IGZhY3RvcnkKLS8vIG9iamVjdCB2aWEgaW1wbF8u
Ci1UZXN0SW5mbzo6VGVzdEluZm8oY29uc3QgY2hhciogYV90ZXN0X2Nhc2VfbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX25hbWUsCi0gICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogYV90ZXN0X2Nhc2VfY29tbWVudCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBhX2NvbW1lbnQsCisvLyBvYmplY3QuCitUZXN0SW5mbzo6VGVzdEluZm8oY29uc3Qgc3Rk
OjpzdHJpbmcmIGFfdGVzdF9jYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIGFfbmFtZSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX3R5cGVf
cGFyYW0sCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV92YWx1ZV9wYXJhbSwKKyAg
ICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6Q29kZUxvY2F0aW9uIGFfY29kZV9sb2NhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6VHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCi0g
ICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSkgewot
ICBpbXBsXyA9IG5ldyBpbnRlcm5hbDo6VGVzdEluZm9JbXBsKHRoaXMsIGFfdGVzdF9jYXNlX25h
bWUsIGFfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhX3Rlc3Rf
Y2FzZV9jb21tZW50LCBhX2NvbW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZml4dHVyZV9jbGFzc19pZCwgZmFjdG9yeSk7Ci19CisgICAgICAgICAgICAgICAgICAg
aW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSkKKyAgICA6IHRlc3RfY2FzZV9uYW1l
XyhhX3Rlc3RfY2FzZV9uYW1lKSwKKyAgICAgIG5hbWVfKGFfbmFtZSksCisgICAgICB0eXBlX3Bh
cmFtXyhhX3R5cGVfcGFyYW0gPyBuZXcgc3RkOjpzdHJpbmcoYV90eXBlX3BhcmFtKSA6IE5VTEwp
LAorICAgICAgdmFsdWVfcGFyYW1fKGFfdmFsdWVfcGFyYW0gPyBuZXcgc3RkOjpzdHJpbmcoYV92
YWx1ZV9wYXJhbSkgOiBOVUxMKSwKKyAgICAgIGxvY2F0aW9uXyhhX2NvZGVfbG9jYXRpb24pLAor
ICAgICAgZml4dHVyZV9jbGFzc19pZF8oZml4dHVyZV9jbGFzc19pZCksCisgICAgICBzaG91bGRf
cnVuXyhmYWxzZSksCisgICAgICBpc19kaXNhYmxlZF8oZmFsc2UpLAorICAgICAgbWF0Y2hlc19m
aWx0ZXJfKGZhbHNlKSwKKyAgICAgIGZhY3RvcnlfKGZhY3RvcnkpLAorICAgICAgcmVzdWx0Xygp
IHt9CiAKIC8vIERlc3RydWN0cyBhIFRlc3RJbmZvIG9iamVjdC4KLVRlc3RJbmZvOjp+VGVzdElu
Zm8oKSB7Ci0gIGRlbGV0ZSBpbXBsXzsKLX0KK1Rlc3RJbmZvOjp+VGVzdEluZm8oKSB7IGRlbGV0
ZSBmYWN0b3J5XzsgfQogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCkBAIC0yMTQ0LDEwICsyNTcy
LDExIEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLwogLy8gICB0ZXN0X2Nhc2VfbmFtZTogICBu
YW1lIG9mIHRoZSB0ZXN0IGNhc2UKIC8vICAgbmFtZTogICAgICAgICAgICAgbmFtZSBvZiB0aGUg
dGVzdAotLy8gICB0ZXN0X2Nhc2VfY29tbWVudDogYSBjb21tZW50IG9uIHRoZSB0ZXN0IGNhc2Ug
dGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluCi0vLyAgICAgICAgICAgICAgICAgICAgICB0aGUgdGVz
dCBvdXRwdXQKLS8vICAgY29tbWVudDogICAgICAgICAgYSBjb21tZW50IG9uIHRoZSB0ZXN0IHRo
YXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKLS8vICAgICAgICAgICAgICAgICAgICAgdGVzdCBv
dXRwdXQKKy8vICAgdHlwZV9wYXJhbTogICAgICAgdGhlIG5hbWUgb2YgdGhlIHRlc3QncyB0eXBl
IHBhcmFtZXRlciwgb3IgTlVMTCBpZgorLy8gICAgICAgICAgICAgICAgICAgICB0aGlzIGlzIG5v
dCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCisvLyAgIHZhbHVlX3BhcmFt
OiAgICAgIHRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRlc3QncyB2YWx1ZSBwYXJhbWV0ZXIs
CisvLyAgICAgICAgICAgICAgICAgICAgIG9yIE5VTEwgaWYgdGhpcyBpcyBub3QgYSB2YWx1ZS1w
YXJhbWV0ZXJpemVkIHRlc3QuCisvLyAgIGNvZGVfbG9jYXRpb246ICAgIGNvZGUgbG9jYXRpb24g
d2hlcmUgdGhlIHRlc3QgaXMgZGVmaW5lZAogLy8gICBmaXh0dXJlX2NsYXNzX2lkOiBJRCBvZiB0
aGUgdGVzdCBmaXh0dXJlIGNsYXNzCiAvLyAgIHNldF91cF90YzogICAgICAgIHBvaW50ZXIgdG8g
dGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBjYXNlCiAvLyAgIHRlYXJfZG93bl90
YzogICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgdGVhcnMgZG93biB0aGUgdGVzdCBj
YXNlCkBAIC0yMTU1LDIyICsyNTg0LDI0IEBAIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAvLyAgICAg
ICAgICAgICAgICAgICAgIFRoZSBuZXdseSBjcmVhdGVkIFRlc3RJbmZvIGluc3RhbmNlIHdpbGwg
YXNzdW1lCiAvLyAgICAgICAgICAgICAgICAgICAgIG93bmVyc2hpcCBvZiB0aGUgZmFjdG9yeSBv
YmplY3QuCiBUZXN0SW5mbyogTWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8oCi0gICAgY29uc3QgY2hh
ciogdGVzdF9jYXNlX25hbWUsIGNvbnN0IGNoYXIqIG5hbWUsCi0gICAgY29uc3QgY2hhciogdGVz
dF9jYXNlX2NvbW1lbnQsIGNvbnN0IGNoYXIqIGNvbW1lbnQsCisgICAgY29uc3QgY2hhciogdGVz
dF9jYXNlX25hbWUsCisgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICBjb25zdCBjaGFyKiB0eXBl
X3BhcmFtLAorICAgIGNvbnN0IGNoYXIqIHZhbHVlX3BhcmFtLAorICAgIENvZGVMb2NhdGlvbiBj
b2RlX2xvY2F0aW9uLAogICAgIFR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkLAogICAgIFNldFVwVGVz
dENhc2VGdW5jIHNldF91cF90YywKICAgICBUZWFyRG93blRlc3RDYXNlRnVuYyB0ZWFyX2Rvd25f
dGMsCiAgICAgVGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5KSB7CiAgIFRlc3RJbmZvKiBjb25zdCB0
ZXN0X2luZm8gPQotICAgICAgbmV3IFRlc3RJbmZvKHRlc3RfY2FzZV9uYW1lLCBuYW1lLCB0ZXN0
X2Nhc2VfY29tbWVudCwgY29tbWVudCwKLSAgICAgICAgICAgICAgICAgICBmaXh0dXJlX2NsYXNz
X2lkLCBmYWN0b3J5KTsKKyAgICAgIG5ldyBUZXN0SW5mbyh0ZXN0X2Nhc2VfbmFtZSwgbmFtZSwg
dHlwZV9wYXJhbSwgdmFsdWVfcGFyYW0sCisgICAgICAgICAgICAgICAgICAgY29kZV9sb2NhdGlv
biwgZml4dHVyZV9jbGFzc19pZCwgZmFjdG9yeSk7CiAgIEdldFVuaXRUZXN0SW1wbCgpLT5BZGRU
ZXN0SW5mbyhzZXRfdXBfdGMsIHRlYXJfZG93bl90YywgdGVzdF9pbmZvKTsKICAgcmV0dXJuIHRl
c3RfaW5mbzsKIH0KIAotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiB2b2lkIFJlcG9ydEludmFs
aWRUZXN0Q2FzZVR5cGUoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbikgewogICBN
ZXNzYWdlIGVycm9yczsKICAgZXJyb3JzCiAgICAgICA8PCAiQXR0ZW1wdGVkIHJlZGVmaW5pdGlv
biBvZiB0ZXN0IGNhc2UgIiA8PCB0ZXN0X2Nhc2VfbmFtZSA8PCAiLlxuIgpAQCAtMjE4Miw0OCAr
MjYxMywxMiBAQCB2b2lkIFJlcG9ydEludmFsaWRUZXN0Q2FzZVR5cGUoY29uc3QgY2hhciogdGVz
dF9jYXNlX25hbWUsCiAgICAgICA8PCAicHJvYmFibHkgcmVuYW1lIG9uZSBvZiB0aGUgY2xhc3Nl
cyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50XG4iCiAgICAgICA8PCAidGVzdCBjYXNl
cy4iOwogCi0gIGZwcmludGYoc3RkZXJyLCAiJXMgJXMiLCBGb3JtYXRGaWxlTG9jYXRpb24oZmls
ZSwgbGluZSkuY19zdHIoKSwKLSAgICAgICAgICBlcnJvcnMuR2V0U3RyaW5nKCkuY19zdHIoKSk7
CisgIEdURVNUX0xPR18oRVJST1IpIDw8IEZvcm1hdEZpbGVMb2NhdGlvbihjb2RlX2xvY2F0aW9u
LmZpbGUuY19zdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvZGVfbG9jYXRpb24ubGluZSkKKyAgICAgICAgICAgICAgICAgICAgPDwgIiAiIDw8IGVycm9y
cy5HZXRTdHJpbmcoKTsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQogfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCiAKLS8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBuYW1lLgot
Y29uc3QgY2hhciogVGVzdEluZm86OnRlc3RfY2FzZV9uYW1lKCkgY29uc3QgewotICByZXR1cm4g
aW1wbF8tPnRlc3RfY2FzZV9uYW1lKCk7Ci19Ci0KLS8vIFJldHVybnMgdGhlIHRlc3QgbmFtZS4K
LWNvbnN0IGNoYXIqIFRlc3RJbmZvOjpuYW1lKCkgY29uc3QgewotICByZXR1cm4gaW1wbF8tPm5h
bWUoKTsKLX0KLQotLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIGNvbW1lbnQuCi1jb25zdCBjaGFy
KiBUZXN0SW5mbzo6dGVzdF9jYXNlX2NvbW1lbnQoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBsXy0+
dGVzdF9jYXNlX2NvbW1lbnQoKTsKLX0KLQotLy8gUmV0dXJucyB0aGUgdGVzdCBjb21tZW50Lgot
Y29uc3QgY2hhciogVGVzdEluZm86OmNvbW1lbnQoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBsXy0+
Y29tbWVudCgpOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IHNob3VsZCBydW4u
Ci1ib29sIFRlc3RJbmZvOjpzaG91bGRfcnVuKCkgY29uc3QgeyByZXR1cm4gaW1wbF8tPnNob3Vs
ZF9ydW4oKTsgfQotCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0ZXN0IG1hdGNoZXMgdGhlIHVz
ZXItc3BlY2lmaWVkIGZpbHRlci4KLWJvb2wgVGVzdEluZm86Om1hdGNoZXNfZmlsdGVyKCkgY29u
c3QgeyByZXR1cm4gaW1wbF8tPm1hdGNoZXNfZmlsdGVyKCk7IH0KLQotLy8gUmV0dXJucyB0aGUg
cmVzdWx0IG9mIHRoZSB0ZXN0LgotY29uc3QgVGVzdFJlc3VsdCogVGVzdEluZm86OnJlc3VsdCgp
IGNvbnN0IHsgcmV0dXJuIGltcGxfLT5yZXN1bHQoKTsgfQotCi0vLyBJbmNyZW1lbnRzIHRoZSBu
dW1iZXIgb2YgZGVhdGggdGVzdHMgZW5jb3VudGVyZWQgaW4gdGhpcyB0ZXN0IHNvCi0vLyBmYXIu
Ci1pbnQgVGVzdEluZm86OmluY3JlbWVudF9kZWF0aF90ZXN0X2NvdW50KCkgewotICByZXR1cm4g
aW1wbF8tPnJlc3VsdCgpLT5pbmNyZW1lbnRfZGVhdGhfdGVzdF9jb3VudCgpOwotfQotCiBuYW1l
c3BhY2UgewogCiAvLyBBIHByZWRpY2F0ZSB0aGF0IGNoZWNrcyB0aGUgdGVzdCBuYW1lIG9mIGEg
VGVzdEluZm8gYWdhaW5zdCBhIGtub3duCkBAIC0yMjQ0LDExICsyNjM5LDExIEBAIGNsYXNzIFRl
c3ROYW1lSXMgewogCiAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgbmFtZSBvZiB0ZXN0
X2luZm8gbWF0Y2hlcyBuYW1lXy4KICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFRlc3RJbmZvICog
dGVzdF9pbmZvKSBjb25zdCB7Ci0gICAgcmV0dXJuIHRlc3RfaW5mbyAmJiBpbnRlcm5hbDo6U3Ry
aW5nKHRlc3RfaW5mby0+bmFtZSgpKS5Db21wYXJlKG5hbWVfKSA9PSAwOworICAgIHJldHVybiB0
ZXN0X2luZm8gJiYgdGVzdF9pbmZvLT5uYW1lKCkgPT0gbmFtZV87CiAgIH0KIAogIHByaXZhdGU6
Ci0gIGludGVybmFsOjpTdHJpbmcgbmFtZV87CisgIHN0ZDo6c3RyaW5nIG5hbWVfOwogfTsKIAog
fSAgLy8gbmFtZXNwYWNlCkBAIC0yMjU5LDc4ICsyNjU0LDYwIEBAIG5hbWVzcGFjZSBpbnRlcm5h
bCB7CiAvLyBhbmQgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgaW50byByZWd1bGFyIHRlc3RzIGFu
ZCByZWdpc3RlcnMgdGhvc2UuCiAvLyBUaGlzIHdpbGwgYmUgZG9uZSBqdXN0IG9uY2UgZHVyaW5n
IHRoZSBwcm9ncmFtIHJ1bnRpbWUuCiB2b2lkIFVuaXRUZXN0SW1wbDo6UmVnaXN0ZXJQYXJhbWV0
ZXJpemVkVGVzdHMoKSB7Ci0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgaWYgKCFwYXJhbWV0
ZXJpemVkX3Rlc3RzX3JlZ2lzdGVyZWRfKSB7CiAgICAgcGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lz
dHJ5Xy5SZWdpc3RlclRlc3RzKCk7CiAgICAgcGFyYW1ldGVyaXplZF90ZXN0c19yZWdpc3RlcmVk
XyA9IHRydWU7CiAgIH0KLSNlbmRpZgogfQogCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKwog
Ly8gQ3JlYXRlcyB0aGUgdGVzdCBvYmplY3QsIHJ1bnMgaXQsIHJlY29yZHMgaXRzIHJlc3VsdCwg
YW5kIHRoZW4KIC8vIGRlbGV0ZXMgaXQuCi12b2lkIFRlc3RJbmZvSW1wbDo6UnVuKCkgewordm9p
ZCBUZXN0SW5mbzo6UnVuKCkgewogICBpZiAoIXNob3VsZF9ydW5fKSByZXR1cm47CiAKICAgLy8g
VGVsbHMgVW5pdFRlc3Qgd2hlcmUgdG8gc3RvcmUgdGVzdCByZXN1bHQuCi0gIFVuaXRUZXN0SW1w
bCogY29uc3QgaW1wbCA9IGludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKTsKLSAgaW1wbC0+c2V0
X2N1cnJlbnRfdGVzdF9pbmZvKHBhcmVudF8pOworICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBj
b25zdCBpbXBsID0gaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpOworICBpbXBsLT5zZXRfY3Vy
cmVudF90ZXN0X2luZm8odGhpcyk7CiAKICAgVGVzdEV2ZW50TGlzdGVuZXIqIHJlcGVhdGVyID0g
VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpLnJlcGVhdGVyKCk7CiAKICAgLy8g
Tm90aWZpZXMgdGhlIHVuaXQgdGVzdCBldmVudCBsaXN0ZW5lcnMgdGhhdCBhIHRlc3QgaXMgYWJv
dXQgdG8gc3RhcnQuCi0gIHJlcGVhdGVyLT5PblRlc3RTdGFydCgqcGFyZW50Xyk7CisgIHJlcGVh
dGVyLT5PblRlc3RTdGFydCgqdGhpcyk7CiAKLSAgY29uc3QgVGltZUluTWlsbGlzIHN0YXJ0ID0g
R2V0VGltZUluTWlsbGlzKCk7CisgIGNvbnN0IFRpbWVJbk1pbGxpcyBzdGFydCA9IGludGVybmFs
OjpHZXRUaW1lSW5NaWxsaXMoKTsKIAogICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+
VXBvbkxlYXZpbmdHVGVzdCgpOwotI2lmIEdURVNUX0hBU19TRUgKLSAgLy8gQ2F0Y2ggU0VILXN0
eWxlIGV4Y2VwdGlvbnMuCi0gIFRlc3QqIHRlc3QgPSBOVUxMOwotCi0gIF9fdHJ5IHsKLSAgICAv
LyBDcmVhdGVzIHRoZSB0ZXN0IG9iamVjdC4KLSAgICB0ZXN0ID0gZmFjdG9yeV8tPkNyZWF0ZVRl
c3QoKTsKLSAgfSBfX2V4Y2VwdChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpHVGVzdFNob3Vs
ZFByb2Nlc3NTRUgoCi0gICAgICBHZXRFeGNlcHRpb25Db2RlKCkpKSB7Ci0gICAgQWRkRXhjZXB0
aW9uVGhyb3duRmFpbHVyZShHZXRFeGNlcHRpb25Db2RlKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAidGhlIHRlc3QgZml4dHVyZSdzIGNvbnN0cnVjdG9yIik7Ci0gICAgcmV0dXJu
OwotICB9Ci0jZWxzZSAgLy8gV2UgYXJlIG9uIGEgY29tcGlsZXIgb3IgcGxhdGZvcm0gdGhhdCBk
b2Vzbid0IHN1cHBvcnQgU0VILgotCi0gIC8vIFRPRE8od2FuKTogSWYgdGVzdC0+UnVuKCkgdGhy
b3dzLCB0ZXN0IHdvbid0IGJlIGRlbGV0ZWQuICBUaGlzIGlzCi0gIC8vIG5vdCBhIHByb2JsZW0g
bm93IGFzIHdlIGRvbid0IHVzZSBleGNlcHRpb25zLiAgSWYgd2Ugd2VyZSB0bwotICAvLyBlbmFi
bGUgZXhjZXB0aW9ucywgd2Ugc2hvdWxkIHJldmlzZSB0aGUgZm9sbG93aW5nIHRvIGJlCi0gIC8v
IGV4Y2VwdGlvbi1zYWZlLgogCiAgIC8vIENyZWF0ZXMgdGhlIHRlc3Qgb2JqZWN0LgotICBUZXN0
KiB0ZXN0ID0gZmFjdG9yeV8tPkNyZWF0ZVRlc3QoKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NF
SAorICBUZXN0KiBjb25zdCB0ZXN0ID0gaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhv
ZElmU3VwcG9ydGVkKAorICAgICAgZmFjdG9yeV8sICZpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNl
OjpDcmVhdGVUZXN0LAorICAgICAgInRoZSB0ZXN0IGZpeHR1cmUncyBjb25zdHJ1Y3RvciIpOwog
Ci0gIC8vIFJ1bnMgdGhlIHRlc3Qgb25seSBpZiB0aGUgY29uc3RydWN0b3Igb2YgdGhlIHRlc3Qg
Zml4dHVyZSBkaWRuJ3QKLSAgLy8gZ2VuZXJhdGUgYSBmYXRhbCBmYWlsdXJlLgorICAvLyBSdW5z
IHRoZSB0ZXN0IGlmIHRoZSBjb25zdHJ1Y3RvciBkaWRuJ3QgZ2VuZXJhdGUgYSBmYXRhbCBmYWls
dXJlLgorICAvLyBOb3RlIHRoYXQgdGhlIG9iamVjdCB3aWxsIG5vdCBiZSBudWxsCiAgIGlmICgh
VGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkpIHsKKyAgICAvLyBUaGlzIGRvZXNuJ3QgdGhyb3cgYXMg
YWxsIHVzZXIgY29kZSB0aGF0IGNhbiB0aHJvdyBhcmUgd3JhcHBlZCBpbnRvCisgICAgLy8gZXhj
ZXB0aW9uIGhhbmRsaW5nIGNvZGUuCiAgICAgdGVzdC0+UnVuKCk7CiAgIH0KIAotICAvLyBEZWxl
dGVzIHRoZSB0ZXN0IG9iamVjdC4KLSAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVw
b25MZWF2aW5nR1Rlc3QoKTsKLSAgZGVsZXRlIHRlc3Q7Ci0gIHRlc3QgPSBOVUxMOworICAgIC8v
IERlbGV0ZXMgdGhlIHRlc3Qgb2JqZWN0LgorICAgIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRl
cigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7CisgICAgaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJ
bk1ldGhvZElmU3VwcG9ydGVkKAorICAgICAgICB0ZXN0LCAmVGVzdDo6RGVsZXRlU2VsZl8sICJ0
aGUgdGVzdCBmaXh0dXJlJ3MgZGVzdHJ1Y3RvciIpOwogCi0gIHJlc3VsdF8uc2V0X2VsYXBzZWRf
dGltZShHZXRUaW1lSW5NaWxsaXMoKSAtIHN0YXJ0KTsKKyAgcmVzdWx0Xy5zZXRfZWxhcHNlZF90
aW1lKGludGVybmFsOjpHZXRUaW1lSW5NaWxsaXMoKSAtIHN0YXJ0KTsKIAogICAvLyBOb3RpZmll
cyB0aGUgdW5pdCB0ZXN0IGV2ZW50IGxpc3RlbmVyIHRoYXQgYSB0ZXN0IGhhcyBqdXN0IGZpbmlz
aGVkLgotICByZXBlYXRlci0+T25UZXN0RW5kKCpwYXJlbnRfKTsKKyAgcmVwZWF0ZXItPk9uVGVz
dEVuZCgqdGhpcyk7CiAKICAgLy8gVGVsbHMgVW5pdFRlc3QgdG8gc3RvcCBhc3NvY2lhdGluZyBh
c3NlcnRpb24gcmVzdWx0cyB0byB0aGlzCiAgIC8vIHRlc3QuCiAgIGltcGwtPnNldF9jdXJyZW50
X3Rlc3RfaW5mbyhOVUxMKTsKIH0KIAotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KIC8vIGNs
YXNzIFRlc3RDYXNlCiAKIC8vIEdldHMgdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIHRlc3RzIGlu
IHRoaXMgdGVzdCBjYXNlLgpAQCAtMjM0MywxMCArMjcyMCwyMSBAQCBpbnQgVGVzdENhc2U6OmZh
aWxlZF90ZXN0X2NvdW50KCkgY29uc3QgewogICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlz
dF8sIFRlc3RGYWlsZWQpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVz
dHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0LgoraW50IFRlc3RDYXNl
OjpyZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7CisgIHJldHVybiBDb3Vu
dElmKHRlc3RfaW5mb19saXN0XywgVGVzdFJlcG9ydGFibGVEaXNhYmxlZCk7Cit9CisKKy8vIEdl
dHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KIGludCBU
ZXN0Q2FzZTo6ZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJuIENvdW50SWYo
dGVzdF9pbmZvX2xpc3RfLCBUZXN0RGlzYWJsZWQpOwogfQogCisvLyBHZXRzIHRoZSBudW1iZXIg
b2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KK2ludCBUZXN0Q2FzZTo6
cmVwb3J0YWJsZV90ZXN0X2NvdW50KCkgY29uc3QgeworICByZXR1cm4gQ291bnRJZih0ZXN0X2lu
Zm9fbGlzdF8sIFRlc3RSZXBvcnRhYmxlKTsKK30KKwogLy8gR2V0IHRoZSBudW1iZXIgb2YgdGVz
dHMgaW4gdGhpcyB0ZXN0IGNhc2UgdGhhdCBzaG91bGQgcnVuLgogaW50IFRlc3RDYXNlOjp0ZXN0
X3RvX3J1bl9jb3VudCgpIGNvbnN0IHsKICAgcmV0dXJuIENvdW50SWYodGVzdF9pbmZvX2xpc3Rf
LCBTaG91bGRSdW5UZXN0KTsKQEAgLTIzNjIsMTMgKzI3NTAsMTUgQEAgaW50IFRlc3RDYXNlOjp0
b3RhbF90ZXN0X2NvdW50KCkgY29uc3QgewogLy8gQXJndW1lbnRzOgogLy8KIC8vICAgbmFtZTog
ICAgICAgICBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UKKy8vICAgYV90eXBlX3BhcmFtOiB0aGUgbmFt
ZSBvZiB0aGUgdGVzdCBjYXNlJ3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYKKy8vICAgICAg
ICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRl
c3QgY2FzZS4KIC8vICAgc2V0X3VwX3RjOiAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0
IHNldHMgdXAgdGhlIHRlc3QgY2FzZQogLy8gICB0ZWFyX2Rvd25fdGM6IHBvaW50ZXIgdG8gdGhl
IGZ1bmN0aW9uIHRoYXQgdGVhcnMgZG93biB0aGUgdGVzdCBjYXNlCi1UZXN0Q2FzZTo6VGVzdENh
c2UoY29uc3QgY2hhciogYV9uYW1lLCBjb25zdCBjaGFyKiBhX2NvbW1lbnQsCitUZXN0Q2FzZTo6
VGVzdENhc2UoY29uc3QgY2hhciogYV9uYW1lLCBjb25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sCiAg
ICAgICAgICAgICAgICAgICAgVGVzdDo6U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAogICAg
ICAgICAgICAgICAgICAgIFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YykK
ICAgICA6IG5hbWVfKGFfbmFtZSksCi0gICAgICBjb21tZW50XyhhX2NvbW1lbnQpLAorICAgICAg
dHlwZV9wYXJhbV8oYV90eXBlX3BhcmFtID8gbmV3IHN0ZDo6c3RyaW5nKGFfdHlwZV9wYXJhbSkg
OiBOVUxMKSwKICAgICAgIHNldF91cF90Y18oc2V0X3VwX3RjKSwKICAgICAgIHRlYXJfZG93bl90
Y18odGVhcl9kb3duX3RjKSwKICAgICAgIHNob3VsZF9ydW5fKGZhbHNlKSwKQEAgLTI0MTMsNDUg
KzI4MDMsMjcgQEAgdm9pZCBUZXN0Q2FzZTo6UnVuKCkgewogCiAgIHJlcGVhdGVyLT5PblRlc3RD
YXNlU3RhcnQoKnRoaXMpOwogICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxl
YXZpbmdHVGVzdCgpOwotICBzZXRfdXBfdGNfKCk7CisgIGludGVybmFsOjpIYW5kbGVFeGNlcHRp
b25zSW5NZXRob2RJZlN1cHBvcnRlZCgKKyAgICAgIHRoaXMsICZUZXN0Q2FzZTo6UnVuU2V0VXBU
ZXN0Q2FzZSwgIlNldFVwVGVzdENhc2UoKSIpOwogCiAgIGNvbnN0IGludGVybmFsOjpUaW1lSW5N
aWxsaXMgc3RhcnQgPSBpbnRlcm5hbDo6R2V0VGltZUluTWlsbGlzKCk7CiAgIGZvciAoaW50IGkg
PSAwOyBpIDwgdG90YWxfdGVzdF9jb3VudCgpOyBpKyspIHsKLSAgICBHZXRNdXRhYmxlVGVzdElu
Zm8oaSktPmltcGwoKS0+UnVuKCk7CisgICAgR2V0TXV0YWJsZVRlc3RJbmZvKGkpLT5SdW4oKTsK
ICAgfQogICBlbGFwc2VkX3RpbWVfID0gaW50ZXJuYWw6OkdldFRpbWVJbk1pbGxpcygpIC0gc3Rh
cnQ7CiAKICAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3Qo
KTsKLSAgdGVhcl9kb3duX3RjXygpOworICBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0
aG9kSWZTdXBwb3J0ZWQoCisgICAgICB0aGlzLCAmVGVzdENhc2U6OlJ1blRlYXJEb3duVGVzdENh
c2UsICJUZWFyRG93blRlc3RDYXNlKCkiKTsKKwogICByZXBlYXRlci0+T25UZXN0Q2FzZUVuZCgq
dGhpcyk7CiAgIGltcGwtPnNldF9jdXJyZW50X3Rlc3RfY2FzZShOVUxMKTsKIH0KIAogLy8gQ2xl
YXJzIHRoZSByZXN1bHRzIG9mIGFsbCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KIHZvaWQgVGVz
dENhc2U6OkNsZWFyUmVzdWx0KCkgewotICBGb3JFYWNoKHRlc3RfaW5mb19saXN0XywgaW50ZXJu
YWw6OlRlc3RJbmZvSW1wbDo6Q2xlYXJUZXN0UmVzdWx0KTsKLX0KLQotLy8gUmV0dXJucyB0cnVl
IGlmZiB0ZXN0IHBhc3NlZC4KLWJvb2wgVGVzdENhc2U6OlRlc3RQYXNzZWQoY29uc3QgVGVzdElu
Zm8gKiB0ZXN0X2luZm8pIHsKLSAgY29uc3QgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbCogY29uc3Qg
aW1wbCA9IHRlc3RfaW5mby0+aW1wbCgpOwotICByZXR1cm4gaW1wbC0+c2hvdWxkX3J1bigpICYm
IGltcGwtPnJlc3VsdCgpLT5QYXNzZWQoKTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0
IGZhaWxlZC4KLWJvb2wgVGVzdENhc2U6OlRlc3RGYWlsZWQoY29uc3QgVGVzdEluZm8gKiB0ZXN0
X2luZm8pIHsKLSAgY29uc3QgaW50ZXJuYWw6OlRlc3RJbmZvSW1wbCogY29uc3QgaW1wbCA9IHRl
c3RfaW5mby0+aW1wbCgpOwotICByZXR1cm4gaW1wbC0+c2hvdWxkX3J1bigpICYmIGltcGwtPnJl
c3VsdCgpLT5GYWlsZWQoKTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmZiB0ZXN0IGlzIGRpc2Fi
bGVkLgotYm9vbCBUZXN0Q2FzZTo6VGVzdERpc2FibGVkKGNvbnN0IFRlc3RJbmZvICogdGVzdF9p
bmZvKSB7Ci0gIHJldHVybiB0ZXN0X2luZm8tPmltcGwoKS0+aXNfZGlzYWJsZWQoKTsKLX0KLQot
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiB0ZXN0IHNob3VsZCBydW4uCi1ib29sIFRlc3RD
YXNlOjpTaG91bGRSdW5UZXN0KGNvbnN0IFRlc3RJbmZvICp0ZXN0X2luZm8pIHsKLSAgcmV0dXJu
IHRlc3RfaW5mby0+aW1wbCgpLT5zaG91bGRfcnVuKCk7CisgIGFkX2hvY190ZXN0X3Jlc3VsdF8u
Q2xlYXIoKTsKKyAgRm9yRWFjaCh0ZXN0X2luZm9fbGlzdF8sIFRlc3RJbmZvOjpDbGVhclRlc3RS
ZXN1bHQpOwogfQogCiAvLyBTaHVmZmxlcyB0aGUgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCkBA
IC0yNDcxLDIwICsyODQzLDIwIEBAIHZvaWQgVGVzdENhc2U6OlVuc2h1ZmZsZVRlc3RzKCkgewog
Ly8KIC8vIEZvcm1hdENvdW50YWJsZU5vdW4oMSwgImZvcm11bGEiLCAiZm9ybXVsaSIpIHJldHVy
bnMgIjEgZm9ybXVsYSIuCiAvLyBGb3JtYXRDb3VudGFibGVOb3VuKDUsICJib29rIiwgImJvb2tz
IikgcmV0dXJucyAiNSBib29rcyIuCi1zdGF0aWMgaW50ZXJuYWw6OlN0cmluZyBGb3JtYXRDb3Vu
dGFibGVOb3VuKGludCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqIHNpbmd1bGFyX2Zvcm0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBwbHVyYWxfZm9ybSkgewotICBy
ZXR1cm4gaW50ZXJuYWw6OlN0cmluZzo6Rm9ybWF0KCIlZCAlcyIsIGNvdW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ID09IDEgPyBzaW5ndWxhcl9mb3JtIDogcGx1
cmFsX2Zvcm0pOworc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdENvdW50YWJsZU5vdW4oaW50IGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
IHNpbmd1bGFyX2Zvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICogcGx1cmFsX2Zvcm0pIHsKKyAgcmV0dXJuIGludGVybmFsOjpTdHJlYW1hYmxl
VG9TdHJpbmcoY291bnQpICsgIiAiICsKKyAgICAgIChjb3VudCA9PSAxID8gc2luZ3VsYXJfZm9y
bSA6IHBsdXJhbF9mb3JtKTsKIH0KIAogLy8gRm9ybWF0cyB0aGUgY291bnQgb2YgdGVzdHMuCi1z
dGF0aWMgaW50ZXJuYWw6OlN0cmluZyBGb3JtYXRUZXN0Q291bnQoaW50IHRlc3RfY291bnQpIHsK
K3N0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRUZXN0Q291bnQoaW50IHRlc3RfY291bnQpIHsKICAg
cmV0dXJuIEZvcm1hdENvdW50YWJsZU5vdW4odGVzdF9jb3VudCwgInRlc3QiLCAidGVzdHMiKTsK
IH0KIAogLy8gRm9ybWF0cyB0aGUgY291bnQgb2YgdGVzdCBjYXNlcy4KLXN0YXRpYyBpbnRlcm5h
bDo6U3RyaW5nIEZvcm1hdFRlc3RDYXNlQ291bnQoaW50IHRlc3RfY2FzZV9jb3VudCkgeworc3Rh
dGljIHN0ZDo6c3RyaW5nIEZvcm1hdFRlc3RDYXNlQ291bnQoaW50IHRlc3RfY2FzZV9jb3VudCkg
ewogICByZXR1cm4gRm9ybWF0Q291bnRhYmxlTm91bih0ZXN0X2Nhc2VfY291bnQsICJ0ZXN0IGNh
c2UiLCAidGVzdCBjYXNlcyIpOwogfQogCkBAIC0yNTA0LDEzICsyODc2LDE1IEBAIHN0YXRpYyBj
b25zdCBjaGFyICogVGVzdFBhcnRSZXN1bHRUeXBlVG9TdHJpbmcoVGVzdFBhcnRSZXN1bHQ6OlR5
cGUgdHlwZSkgewogI2Vsc2UKICAgICAgIHJldHVybiAiRmFpbHVyZVxuIjsKICNlbmRpZgorICAg
IGRlZmF1bHQ6CisgICAgICByZXR1cm4gIlVua25vd24gcmVzdWx0IHR5cGUiOwogICB9Ci0KLSAg
cmV0dXJuICJVbmtub3duIHJlc3VsdCB0eXBlIjsKIH0KIAotLy8gUHJpbnRzIGEgVGVzdFBhcnRS
ZXN1bHQgdG8gYSBTdHJpbmcuCi1zdGF0aWMgaW50ZXJuYWw6OlN0cmluZyBQcmludFRlc3RQYXJ0
UmVzdWx0VG9TdHJpbmcoCituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBQcmludHMgYSBUZXN0
UGFydFJlc3VsdCB0byBhbiBzdGQ6OnN0cmluZy4KK3N0YXRpYyBzdGQ6OnN0cmluZyBQcmludFRl
c3RQYXJ0UmVzdWx0VG9TdHJpbmcoCiAgICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFy
dF9yZXN1bHQpIHsKICAgcmV0dXJuIChNZXNzYWdlKCkKICAgICAgICAgICA8PCBpbnRlcm5hbDo6
Rm9ybWF0RmlsZUxvY2F0aW9uKHRlc3RfcGFydF9yZXN1bHQuZmlsZV9uYW1lKCksCkBAIC0yNTIx
LDcgKzI4OTUsNyBAQCBzdGF0aWMgaW50ZXJuYWw6OlN0cmluZyBQcmludFRlc3RQYXJ0UmVzdWx0
VG9TdHJpbmcoCiAKIC8vIFByaW50cyBhIFRlc3RQYXJ0UmVzdWx0Lgogc3RhdGljIHZvaWQgUHJp
bnRUZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkg
ewotICBjb25zdCBpbnRlcm5hbDo6U3RyaW5nJiByZXN1bHQgPQorICBjb25zdCBzdGQ6OnN0cmlu
ZyYgcmVzdWx0ID0KICAgICAgIFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmluZyh0ZXN0X3BhcnRf
cmVzdWx0KTsKICAgcHJpbnRmKCIlc1xuIiwgcmVzdWx0LmNfc3RyKCkpOwogICBmZmx1c2goc3Rk
b3V0KTsKQEAgLTI1NDAsOCArMjkxNCw2IEBAIHN0YXRpYyB2b2lkIFByaW50VGVzdFBhcnRSZXN1
bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKIAogLy8gY2xhc3Mg
UHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyCiAKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KIGVu
dW0gR1Rlc3RDb2xvciB7CiAgIENPTE9SX0RFRkFVTFQsCiAgIENPTE9SX1JFRCwKQEAgLTI1NDks
MTAgKzI5MjEsMTEgQEAgZW51bSBHVGVzdENvbG9yIHsKICAgQ09MT1JfWUVMTE9XCiB9OwogCi0j
aWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyNpZiBHVEVT
VF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRSAmJiBcCisgICAgIUdURVNU
X09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQgJiYgIUdURVNUX09TX1dJ
TkRPV1NfTUlOR1cKIAogLy8gUmV0dXJucyB0aGUgY2hhcmFjdGVyIGF0dHJpYnV0ZSBmb3IgdGhl
IGdpdmVuIGNvbG9yLgotV09SRCBHZXRDb2xvckF0dHJpYnV0ZShHVGVzdENvbG9yIGNvbG9yKSB7
CitzdGF0aWMgV09SRCBHZXRDb2xvckF0dHJpYnV0ZShHVGVzdENvbG9yIGNvbG9yKSB7CiAgIHN3
aXRjaCAoY29sb3IpIHsKICAgICBjYXNlIENPTE9SX1JFRDogICAgcmV0dXJuIEZPUkVHUk9VTkRf
UkVEOwogICAgIGNhc2UgQ09MT1JfR1JFRU46ICByZXR1cm4gRk9SRUdST1VORF9HUkVFTjsKQEAg
LTI1NjEsMTEgKzI5MzQsNDIgQEAgV09SRCBHZXRDb2xvckF0dHJpYnV0ZShHVGVzdENvbG9yIGNv
bG9yKSB7CiAgIH0KIH0KIAorc3RhdGljIGludCBHZXRCaXRPZmZzZXQoV09SRCBjb2xvcl9tYXNr
KSB7CisgIGlmIChjb2xvcl9tYXNrID09IDApIHJldHVybiAwOworCisgIGludCBiaXRPZmZzZXQg
PSAwOworICB3aGlsZSAoKGNvbG9yX21hc2sgJiAxKSA9PSAwKSB7CisgICAgY29sb3JfbWFzayA+
Pj0gMTsKKyAgICArK2JpdE9mZnNldDsKKyAgfQorICByZXR1cm4gYml0T2Zmc2V0OworfQorCitz
dGF0aWMgV09SRCBHZXROZXdDb2xvcihHVGVzdENvbG9yIGNvbG9yLCBXT1JEIG9sZF9jb2xvcl9h
dHRycykgeworICAvLyBMZXQncyByZXVzZSB0aGUgQkcKKyAgc3RhdGljIGNvbnN0IFdPUkQgYmFj
a2dyb3VuZF9tYXNrID0gQkFDS0dST1VORF9CTFVFIHwgQkFDS0dST1VORF9HUkVFTiB8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJBQ0tHUk9VTkRfUkVEIHwgQkFDS0dS
T1VORF9JTlRFTlNJVFk7CisgIHN0YXRpYyBjb25zdCBXT1JEIGZvcmVncm91bmRfbWFzayA9IEZP
UkVHUk9VTkRfQkxVRSB8IEZPUkVHUk9VTkRfR1JFRU4gfAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGT1JFR1JPVU5EX1JFRCB8IEZPUkVHUk9VTkRfSU5URU5TSVRZOwor
ICBjb25zdCBXT1JEIGV4aXN0aW5nX2JnID0gb2xkX2NvbG9yX2F0dHJzICYgYmFja2dyb3VuZF9t
YXNrOworCisgIFdPUkQgbmV3X2NvbG9yID0KKyAgICAgIEdldENvbG9yQXR0cmlidXRlKGNvbG9y
KSB8IGV4aXN0aW5nX2JnIHwgRk9SRUdST1VORF9JTlRFTlNJVFk7CisgIHN0YXRpYyBjb25zdCBp
bnQgYmdfYml0T2Zmc2V0ID0gR2V0Qml0T2Zmc2V0KGJhY2tncm91bmRfbWFzayk7CisgIHN0YXRp
YyBjb25zdCBpbnQgZmdfYml0T2Zmc2V0ID0gR2V0Qml0T2Zmc2V0KGZvcmVncm91bmRfbWFzayk7
CisKKyAgaWYgKCgobmV3X2NvbG9yICYgYmFja2dyb3VuZF9tYXNrKSA+PiBiZ19iaXRPZmZzZXQp
ID09CisgICAgICAoKG5ld19jb2xvciAmIGZvcmVncm91bmRfbWFzaykgPj4gZmdfYml0T2Zmc2V0
KSkgeworICAgIG5ld19jb2xvciBePSBGT1JFR1JPVU5EX0lOVEVOU0lUWTsgIC8vIGludmVydCBp
bnRlbnNpdHkKKyAgfQorICByZXR1cm4gbmV3X2NvbG9yOworfQorCiAjZWxzZQogCiAvLyBSZXR1
cm5zIHRoZSBBTlNJIGNvbG9yIGNvZGUgZm9yIHRoZSBnaXZlbiBjb2xvci4gIENPTE9SX0RFRkFV
TFQgaXMKIC8vIGFuIGludmFsaWQgaW5wdXQuCi1jb25zdCBjaGFyKiBHZXRBbnNpQ29sb3JDb2Rl
KEdUZXN0Q29sb3IgY29sb3IpIHsKK3N0YXRpYyBjb25zdCBjaGFyKiBHZXRBbnNpQ29sb3JDb2Rl
KEdUZXN0Q29sb3IgY29sb3IpIHsKICAgc3dpdGNoIChjb2xvcikgewogICAgIGNhc2UgQ09MT1Jf
UkVEOiAgICAgcmV0dXJuICIxIjsKICAgICBjYXNlIENPTE9SX0dSRUVOOiAgIHJldHVybiAiMiI7
CkBAIC0yNTgxLDcgKzI5ODUsNyBAQCBib29sIFNob3VsZFVzZUNvbG9yKGJvb2wgc3Rkb3V0X2lz
X3R0eSkgewogICBjb25zdCBjaGFyKiBjb25zdCBndGVzdF9jb2xvciA9IEdURVNUX0ZMQUcoY29s
b3IpLmNfc3RyKCk7CiAKICAgaWYgKFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFs
cyhndGVzdF9jb2xvciwgImF1dG8iKSkgewotI2lmIEdURVNUX09TX1dJTkRPV1MKKyNpZiBHVEVT
VF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX01JTkdXCiAgICAgLy8gT24gV2luZG93
cyB0aGUgVEVSTSB2YXJpYWJsZSBpcyB1c3VhbGx5IG5vdCBzZXQsIGJ1dCB0aGUKICAgICAvLyBj
b25zb2xlIHRoZXJlIGRvZXMgc3VwcG9ydCBjb2xvcnMuCiAgICAgcmV0dXJuIHN0ZG91dF9pc190
dHk7CkBAIC0yNTkyLDYgKzI5OTYsMTIgQEAgYm9vbCBTaG91bGRVc2VDb2xvcihib29sIHN0ZG91
dF9pc190dHkpIHsKICAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJ4dGVybSIp
IHx8CiAgICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAieHRlcm0tY29sb3IiKSB8
fAogICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgInh0ZXJtLTI1NmNvbG9yIikg
fHwKKyAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJzY3JlZW4iKSB8fAorICAg
ICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgInNjcmVlbi0yNTZjb2xvciIpIHx8Cisg
ICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAidG11eCIpIHx8CisgICAgICAgIFN0
cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAidG11eC0yNTZjb2xvciIpIHx8CisgICAgICAgIFN0
cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAicnh2dC11bmljb2RlIikgfHwKKyAgICAgICAgU3Ry
aW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJyeHZ0LXVuaWNvZGUtMjU2Y29sb3IiKSB8fAogICAg
ICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgImxpbnV4IikgfHwKICAgICAgICAgU3Ry
aW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJjeWd3aW4iKTsKICAgICByZXR1cm4gc3Rkb3V0X2lz
X3R0eSAmJiB0ZXJtX3N1cHBvcnRzX2NvbG9yOwpAQCAtMjYxMSwxMiArMzAyMSwxMyBAQCBib29s
IFNob3VsZFVzZUNvbG9yKGJvb2wgc3Rkb3V0X2lzX3R0eSkgewogLy8gY2Fubm90IHNpbXBseSBl
bWl0IHNwZWNpYWwgY2hhcmFjdGVycyBhbmQgaGF2ZSB0aGUgdGVybWluYWwgY2hhbmdlIGNvbG9y
cy4KIC8vIFRoaXMgcm91dGluZSBtdXN0IGFjdHVhbGx5IGVtaXQgdGhlIGNoYXJhY3RlcnMgcmF0
aGVyIHRoYW4gcmV0dXJuIGEgc3RyaW5nCiAvLyB0aGF0IHdvdWxkIGJlIGNvbG9yZWQgd2hlbiBw
cmludGVkLCBhcyBjYW4gYmUgZG9uZSBvbiBMaW51eC4KLXZvaWQgQ29sb3JlZFByaW50ZihHVGVz
dENvbG9yIGNvbG9yLCBjb25zdCBjaGFyKiBmbXQsIC4uLikgeworc3RhdGljIHZvaWQgQ29sb3Jl
ZFByaW50ZihHVGVzdENvbG9yIGNvbG9yLCBjb25zdCBjaGFyKiBmbXQsIC4uLikgewogICB2YV9s
aXN0IGFyZ3M7CiAgIHZhX3N0YXJ0KGFyZ3MsIGZtdCk7CiAKLSNpZiBHVEVTVF9PU19XSU5ET1dT
X01PQklMRSB8fCBHVEVTVF9PU19TWU1CSUFOIHx8IEdURVNUX09TX1pPUwotICBjb25zdCBib29s
IHVzZV9jb2xvciA9IGZhbHNlOworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNU
X09TX1NZTUJJQU4gfHwgR1RFU1RfT1NfWk9TIHx8IFwKKyAgICBHVEVTVF9PU19JT1MgfHwgR1RF
U1RfT1NfV0lORE9XU19QSE9ORSB8fCBHVEVTVF9PU19XSU5ET1dTX1JUCisgIGNvbnN0IGJvb2wg
dXNlX2NvbG9yID0gQWx3YXlzRmFsc2UoKTsKICNlbHNlCiAgIHN0YXRpYyBjb25zdCBib29sIGlu
X2NvbG9yX21vZGUgPQogICAgICAgU2hvdWxkVXNlQ29sb3IocG9zaXg6OklzQVRUWShwb3NpeDo6
RmlsZU5vKHN0ZG91dCkpICE9IDApOwpAQCAtMjYzMCwyMCArMzA0MSwyMiBAQCB2b2lkIENvbG9y
ZWRQcmludGYoR1Rlc3RDb2xvciBjb2xvciwgY29uc3QgY2hhciogZm10LCAuLi4pIHsKICAgICBy
ZXR1cm47CiAgIH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFCisjaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUg
JiYgXAorICAgICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JU
ICYmICFHVEVTVF9PU19XSU5ET1dTX01JTkdXCiAgIGNvbnN0IEhBTkRMRSBzdGRvdXRfaGFuZGxl
ID0gR2V0U3RkSGFuZGxlKFNURF9PVVRQVVRfSEFORExFKTsKIAogICAvLyBHZXRzIHRoZSBjdXJy
ZW50IHRleHQgY29sb3IuCiAgIENPTlNPTEVfU0NSRUVOX0JVRkZFUl9JTkZPIGJ1ZmZlcl9pbmZv
OwogICBHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbyhzdGRvdXRfaGFuZGxlLCAmYnVmZmVyX2lu
Zm8pOwogICBjb25zdCBXT1JEIG9sZF9jb2xvcl9hdHRycyA9IGJ1ZmZlcl9pbmZvLndBdHRyaWJ1
dGVzOworICBjb25zdCBXT1JEIG5ld19jb2xvciA9IEdldE5ld0NvbG9yKGNvbG9yLCBvbGRfY29s
b3JfYXR0cnMpOwogCiAgIC8vIFdlIG5lZWQgdG8gZmx1c2ggdGhlIHN0cmVhbSBidWZmZXJzIGlu
dG8gdGhlIGNvbnNvbGUgYmVmb3JlIGVhY2gKICAgLy8gU2V0Q29uc29sZVRleHRBdHRyaWJ1dGUg
Y2FsbCBsZXN0IGl0IGFmZmVjdCB0aGUgdGV4dCB0aGF0IGlzIGFscmVhZHkKICAgLy8gcHJpbnRl
ZCBidXQgaGFzIG5vdCB5ZXQgcmVhY2hlZCB0aGUgY29uc29sZS4KICAgZmZsdXNoKHN0ZG91dCk7
Ci0gIFNldENvbnNvbGVUZXh0QXR0cmlidXRlKHN0ZG91dF9oYW5kbGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIEdldENvbG9yQXR0cmlidXRlKGNvbG9yKSB8IEZPUkVHUk9VTkRfSU5URU5T
SVRZKTsKKyAgU2V0Q29uc29sZVRleHRBdHRyaWJ1dGUoc3Rkb3V0X2hhbmRsZSwgbmV3X2NvbG9y
KTsKKwogICB2cHJpbnRmKGZtdCwgYXJncyk7CiAKICAgZmZsdXNoKHN0ZG91dCk7CkBAIC0yNjU3
LDYgKzMwNzAsMjggQEAgdm9pZCBDb2xvcmVkUHJpbnRmKEdUZXN0Q29sb3IgY29sb3IsIGNvbnN0
IGNoYXIqIGZtdCwgLi4uKSB7CiAgIHZhX2VuZChhcmdzKTsKIH0KIAorLy8gVGV4dCBwcmludGVk
IGluIEdvb2dsZSBUZXN0J3MgdGV4dCBvdXRwdXQgYW5kIC0tZ3Rlc3RfbGlzdF90ZXN0cworLy8g
b3V0cHV0IHRvIGxhYmVsIHRoZSB0eXBlIHBhcmFtZXRlciBhbmQgdmFsdWUgcGFyYW1ldGVyIGZv
ciBhIHRlc3QuCitzdGF0aWMgY29uc3QgY2hhciBrVHlwZVBhcmFtTGFiZWxbXSA9ICJUeXBlUGFy
YW0iOworc3RhdGljIGNvbnN0IGNoYXIga1ZhbHVlUGFyYW1MYWJlbFtdID0gIkdldFBhcmFtKCki
OworCitzdGF0aWMgdm9pZCBQcmludEZ1bGxUZXN0Q29tbWVudElmUHJlc2VudChjb25zdCBUZXN0
SW5mbyYgdGVzdF9pbmZvKSB7CisgIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVfcGFyYW0gPSB0ZXN0
X2luZm8udHlwZV9wYXJhbSgpOworICBjb25zdCBjaGFyKiBjb25zdCB2YWx1ZV9wYXJhbSA9IHRl
c3RfaW5mby52YWx1ZV9wYXJhbSgpOworCisgIGlmICh0eXBlX3BhcmFtICE9IE5VTEwgfHwgdmFs
dWVfcGFyYW0gIT0gTlVMTCkgeworICAgIHByaW50ZigiLCB3aGVyZSAiKTsKKyAgICBpZiAodHlw
ZV9wYXJhbSAhPSBOVUxMKSB7CisgICAgICBwcmludGYoIiVzID0gJXMiLCBrVHlwZVBhcmFtTGFi
ZWwsIHR5cGVfcGFyYW0pOworICAgICAgaWYgKHZhbHVlX3BhcmFtICE9IE5VTEwpCisgICAgICAg
IHByaW50ZigiIGFuZCAiKTsKKyAgICB9CisgICAgaWYgKHZhbHVlX3BhcmFtICE9IE5VTEwpIHsK
KyAgICAgIHByaW50ZigiJXMgPSAlcyIsIGtWYWx1ZVBhcmFtTGFiZWwsIHZhbHVlX3BhcmFtKTsK
KyAgICB9CisgIH0KK30KKwogLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBUZXN0RXZlbnRM
aXN0ZW5lciBpbnRlcmZhY2UuCiAvLwogLy8gQ2xhc3MgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmlu
dGVyIGlzIGNvcHlhYmxlLgpAQCAtMjY4NCw4ICszMTE5LDYgQEAgY2xhc3MgUHJldHR5VW5pdFRl
c3RSZXN1bHRQcmludGVyIDogcHVibGljIFRlc3RFdmVudExpc3RlbmVyIHsKIAogIHByaXZhdGU6
CiAgIHN0YXRpYyB2b2lkIFByaW50RmFpbGVkVGVzdHMoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVz
dCk7Ci0KLSAgaW50ZXJuYWw6OlN0cmluZyB0ZXN0X2Nhc2VfbmFtZV87CiB9OwogCiAgIC8vIEZp
cmVkIGJlZm9yZSBlYWNoIGl0ZXJhdGlvbiBvZiB0ZXN0cyBzdGFydHMuCkBAIC0yNjk4LDE1ICsz
MTMxLDE2IEBAIHZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RJdGVyYXRp
b25TdGFydCgKIAogICAvLyBQcmludHMgdGhlIGZpbHRlciBpZiBpdCdzIG5vdCAqLiAgVGhpcyBy
ZW1pbmRzIHRoZSB1c2VyIHRoYXQgc29tZQogICAvLyB0ZXN0cyBtYXkgYmUgc2tpcHBlZC4KLSAg
aWYgKCFpbnRlcm5hbDo6U3RyaW5nOjpDU3RyaW5nRXF1YWxzKGZpbHRlciwga1VuaXZlcnNhbEZp
bHRlcikpIHsKKyAgaWYgKCFTdHJpbmc6OkNTdHJpbmdFcXVhbHMoZmlsdGVyLCBrVW5pdmVyc2Fs
RmlsdGVyKSkgewogICAgIENvbG9yZWRQcmludGYoQ09MT1JfWUVMTE9XLAogICAgICAgICAgICAg
ICAgICAgIk5vdGU6ICVzIGZpbHRlciA9ICVzXG4iLCBHVEVTVF9OQU1FXywgZmlsdGVyKTsKICAg
fQogCiAgIGlmIChpbnRlcm5hbDo6U2hvdWxkU2hhcmQoa1Rlc3RUb3RhbFNoYXJkcywga1Rlc3RT
aGFyZEluZGV4LCBmYWxzZSkpIHsKKyAgICBjb25zdCBJbnQzMiBzaGFyZF9pbmRleCA9IEludDMy
RnJvbUVudk9yRGllKGtUZXN0U2hhcmRJbmRleCwgLTEpOwogICAgIENvbG9yZWRQcmludGYoQ09M
T1JfWUVMTE9XLAotICAgICAgICAgICAgICAgICAgIk5vdGU6IFRoaXMgaXMgdGVzdCBzaGFyZCAl
cyBvZiAlcy5cbiIsCi0gICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cG9zaXg6OkdldEVudihr
VGVzdFNoYXJkSW5kZXgpLAorICAgICAgICAgICAgICAgICAgIk5vdGU6IFRoaXMgaXMgdGVzdCBz
aGFyZCAlZCBvZiAlcy5cbiIsCisgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHNo
YXJkX2luZGV4KSArIDEsCiAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cG9zaXg6OkdldEVu
dihrVGVzdFRvdGFsU2hhcmRzKSk7CiAgIH0KIApAQCAtMjczMSwyNyArMzE2NSwyMiBAQCB2b2lk
IFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0KAog
fQogCiB2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0Q2FzZVN0YXJ0KGNv
bnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKLSAgdGVzdF9jYXNlX25hbWVfID0gdGVzdF9jYXNl
Lm5hbWUoKTsKLSAgY29uc3QgaW50ZXJuYWw6OlN0cmluZyBjb3VudHMgPQorICBjb25zdCBzdGQ6
OnN0cmluZyBjb3VudHMgPQogICAgICAgRm9ybWF0Q291bnRhYmxlTm91bih0ZXN0X2Nhc2UudGVz
dF90b19ydW5fY291bnQoKSwgInRlc3QiLCAidGVzdHMiKTsKICAgQ29sb3JlZFByaW50ZihDT0xP
Ul9HUkVFTiwgIlstLS0tLS0tLS0tXSAiKTsKLSAgcHJpbnRmKCIlcyBmcm9tICVzIiwgY291bnRz
LmNfc3RyKCksIHRlc3RfY2FzZV9uYW1lXy5jX3N0cigpKTsKLSAgaWYgKHRlc3RfY2FzZS5jb21t
ZW50KClbMF0gPT0gJ1wwJykgeworICBwcmludGYoIiVzIGZyb20gJXMiLCBjb3VudHMuY19zdHIo
KSwgdGVzdF9jYXNlLm5hbWUoKSk7CisgIGlmICh0ZXN0X2Nhc2UudHlwZV9wYXJhbSgpID09IE5V
TEwpIHsKICAgICBwcmludGYoIlxuIik7CiAgIH0gZWxzZSB7Ci0gICAgcHJpbnRmKCIsIHdoZXJl
ICVzXG4iLCB0ZXN0X2Nhc2UuY29tbWVudCgpKTsKKyAgICBwcmludGYoIiwgd2hlcmUgJXMgPSAl
c1xuIiwga1R5cGVQYXJhbUxhYmVsLCB0ZXN0X2Nhc2UudHlwZV9wYXJhbSgpKTsKICAgfQogICBm
Zmx1c2goc3Rkb3V0KTsKIH0KIAogdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9u
VGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKICAgQ29sb3JlZFByaW50ZihD
T0xPUl9HUkVFTiwgICJbIFJVTiAgICAgIF0gIik7Ci0gIFByaW50VGVzdE5hbWUodGVzdF9jYXNl
X25hbWVfLmNfc3RyKCksIHRlc3RfaW5mby5uYW1lKCkpOwotICBpZiAodGVzdF9pbmZvLmNvbW1l
bnQoKVswXSA9PSAnXDAnKSB7Ci0gICAgcHJpbnRmKCJcbiIpOwotICB9IGVsc2UgewotICAgIHBy
aW50ZigiLCB3aGVyZSAlc1xuIiwgdGVzdF9pbmZvLmNvbW1lbnQoKSk7Ci0gIH0KKyAgUHJpbnRU
ZXN0TmFtZSh0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7Cisg
IHByaW50ZigiXG4iKTsKICAgZmZsdXNoKHN0ZG91dCk7CiB9CiAKQEAgLTI3NzMsNyArMzIwMiwx
MCBAQCB2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0RW5kKGNvbnN0IFRl
c3RJbmZvJiB0ZXN0X2luZm8pIHsKICAgfSBlbHNlIHsKICAgICBDb2xvcmVkUHJpbnRmKENPTE9S
X1JFRCwgIlsgIEZBSUxFRCAgXSAiKTsKICAgfQotICBQcmludFRlc3ROYW1lKHRlc3RfY2FzZV9u
YW1lXy5jX3N0cigpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgUHJpbnRUZXN0TmFtZSh0ZXN0X2lu
Zm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7CisgIGlmICh0ZXN0X2luZm8u
cmVzdWx0KCktPkZhaWxlZCgpKQorICAgIFByaW50RnVsbFRlc3RDb21tZW50SWZQcmVzZW50KHRl
c3RfaW5mbyk7CisKICAgaWYgKEdURVNUX0ZMQUcocHJpbnRfdGltZSkpIHsKICAgICBwcmludGYo
IiAoJXMgbXMpXG4iLCBpbnRlcm5hbDo6U3RyZWFtYWJsZVRvU3RyaW5nKAogICAgICAgICAgICB0
ZXN0X2luZm8ucmVzdWx0KCktPmVsYXBzZWRfdGltZSgpKS5jX3N0cigpKTsKQEAgLTI3ODYsMTIg
KzMyMTgsMTEgQEAgdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdEVuZChj
b25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7CiB2b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJp
bnRlcjo6T25UZXN0Q2FzZUVuZChjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKSB7CiAgIGlmICgh
R1RFU1RfRkxBRyhwcmludF90aW1lKSkgcmV0dXJuOwogCi0gIHRlc3RfY2FzZV9uYW1lXyA9IHRl
c3RfY2FzZS5uYW1lKCk7Ci0gIGNvbnN0IGludGVybmFsOjpTdHJpbmcgY291bnRzID0KKyAgY29u
c3Qgc3RkOjpzdHJpbmcgY291bnRzID0KICAgICAgIEZvcm1hdENvdW50YWJsZU5vdW4odGVzdF9j
YXNlLnRlc3RfdG9fcnVuX2NvdW50KCksICJ0ZXN0IiwgInRlc3RzIik7CiAgIENvbG9yZWRQcmlu
dGYoQ09MT1JfR1JFRU4sICJbLS0tLS0tLS0tLV0gIik7CiAgIHByaW50ZigiJXMgZnJvbSAlcyAo
JXMgbXMgdG90YWwpXG5cbiIsCi0gICAgICAgICBjb3VudHMuY19zdHIoKSwgdGVzdF9jYXNlX25h
bWVfLmNfc3RyKCksCisgICAgICAgICBjb3VudHMuY19zdHIoKSwgdGVzdF9jYXNlLm5hbWUoKSwK
ICAgICAgICAgIGludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcodGVzdF9jYXNlLmVsYXBzZWRf
dGltZSgpKS5jX3N0cigpKTsKICAgZmZsdXNoKHN0ZG91dCk7CiB9CkBAIC0yODIyLDIxICszMjUz
LDE0IEBAIHZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludEZhaWxlZFRlc3Rz
KGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpIHsKICAgICAgIH0KICAgICAgIENvbG9yZWRQcmlu
dGYoQ09MT1JfUkVELCAiWyAgRkFJTEVEICBdICIpOwogICAgICAgcHJpbnRmKCIlcy4lcyIsIHRl
c3RfY2FzZS5uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOwotICAgICAgaWYgKHRlc3RfY2FzZS5j
b21tZW50KClbMF0gIT0gJ1wwJyB8fAotICAgICAgICAgIHRlc3RfaW5mby5jb21tZW50KClbMF0g
IT0gJ1wwJykgewotICAgICAgICBwcmludGYoIiwgd2hlcmUgJXMiLCB0ZXN0X2Nhc2UuY29tbWVu
dCgpKTsKLSAgICAgICAgaWYgKHRlc3RfY2FzZS5jb21tZW50KClbMF0gIT0gJ1wwJyAmJgotICAg
ICAgICAgICAgdGVzdF9pbmZvLmNvbW1lbnQoKVswXSAhPSAnXDAnKSB7Ci0gICAgICAgICAgcHJp
bnRmKCIgYW5kICIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBwcmludGYoIiVzXG4iLCB0
ZXN0X2luZm8uY29tbWVudCgpKTsKKyAgICAgIFByaW50RnVsbFRlc3RDb21tZW50SWZQcmVzZW50
KHRlc3RfaW5mbyk7CisgICAgICBwcmludGYoIlxuIik7CiAgICAgfQogICB9CiB9CiAKLSB2b2lk
IFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVu
aXRUZXN0JiB1bml0X3Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgLyppdGVyYXRpb24qLykgewordm9pZCBQcmV0dHlVbml0VGVz
dFJlc3VsdFByaW50ZXI6Ok9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgLyppdGVyYXRpb24qLykgewogICBDb2xvcmVkUHJpbnRmKENPTE9SX0dSRUVOLCAgIls9
PT09PT09PT09XSAiKTsKICAgcHJpbnRmKCIlcyBmcm9tICVzIHJhbi4iLAogICAgICAgICAgRm9y
bWF0VGVzdENvdW50KHVuaXRfdGVzdC50ZXN0X3RvX3J1bl9jb3VudCgpKS5jX3N0cigpLApAQCAt
Mjg1OSw3ICszMjgzLDcgQEAgdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6OlByaW50
RmFpbGVkVGVzdHMoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgbnVtX2ZhaWx1cmVzID09IDEgPyAiVEVTVCIgOiAiVEVTVFMiKTsKICAgfQogCi0g
IGludCBudW1fZGlzYWJsZWQgPSB1bml0X3Rlc3QuZGlzYWJsZWRfdGVzdF9jb3VudCgpOworICBp
bnQgbnVtX2Rpc2FibGVkID0gdW5pdF90ZXN0LnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3Vu
dCgpOwogICBpZiAobnVtX2Rpc2FibGVkICYmICFHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVk
X3Rlc3RzKSkgewogICAgIGlmICghbnVtX2ZhaWx1cmVzKSB7CiAgICAgICBwcmludGYoIlxuIik7
ICAvLyBBZGQgYSBzcGFjZXIgaWYgbm8gRkFJTFVSRSBiYW5uZXIgaXMgZGlzcGxheWVkLgpAQCAt
MjkyMiw3ICszMzQ2LDcgQEAgdm9pZCBUZXN0RXZlbnRSZXBlYXRlcjo6QXBwZW5kKFRlc3RFdmVu
dExpc3RlbmVyICpsaXN0ZW5lcikgewogICBsaXN0ZW5lcnNfLnB1c2hfYmFjayhsaXN0ZW5lcik7
CiB9CiAKLS8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEZhY3RvciB0aGUgc2VhcmNoIGZ1bmN0
aW9uYWxpdHkgaW50byBWZWN0b3I6OkZpbmQuCisvLyBGSVhNRTogRmFjdG9yIHRoZSBzZWFyY2gg
ZnVuY3Rpb25hbGl0eSBpbnRvIFZlY3Rvcjo6RmluZC4KIFRlc3RFdmVudExpc3RlbmVyKiBUZXN0
RXZlbnRSZXBlYXRlcjo6UmVsZWFzZShUZXN0RXZlbnRMaXN0ZW5lciAqbGlzdGVuZXIpIHsKICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0ZW5lcnNfLnNpemUoKTsgKytpKSB7CiAgICAgaWYg
KGxpc3RlbmVyc19baV0gPT0gbGlzdGVuZXIpIHsKQEAgLTI5OTYsNiArMzQyMCwxMSBAQCBjbGFz
cyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5l
ciB7CiAgIGV4cGxpY2l0IFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcihjb25zdCBjaGFyKiBvdXRw
dXRfZmlsZSk7CiAKICAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0
VGVzdCYgdW5pdF90ZXN0LCBpbnQgaXRlcmF0aW9uKTsKKyAgdm9pZCBMaXN0VGVzdHNNYXRjaGlu
Z0ZpbHRlcihjb25zdCBzdGQ6OnZlY3RvcjxUZXN0Q2FzZSo+JiB0ZXN0X2Nhc2VzKTsKKworICAv
LyBQcmludHMgYW4gWE1MIHN1bW1hcnkgb2YgYWxsIHVuaXQgdGVzdHMuCisgIHN0YXRpYyB2b2lk
IFByaW50WG1sVGVzdHNMaXN0KHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxUZXN0Q2FzZSo+JiB0ZXN0X2Nhc2Vz
KTsKIAogIHByaXZhdGU6CiAgIC8vIElzIGMgYSB3aGl0ZXNwYWNlIGNoYXJhY3RlciB0aGF0IGlz
IG5vcm1hbGl6ZWQgdG8gYSBzcGFjZSBjaGFyYWN0ZXIKQEAgLTMwMTMsMTggKzM0NDIsMjcgQEAg
Y2xhc3MgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlz
dGVuZXIgewogICAvLyBpc19hdHRyaWJ1dGUgaXMgdHJ1ZSwgdGhlIHRleHQgaXMgbWVhbnQgdG8g
YXBwZWFyIGFzIGFuIGF0dHJpYnV0ZQogICAvLyB2YWx1ZSwgYW5kIG5vcm1hbGl6YWJsZSB3aGl0
ZXNwYWNlIGlzIHByZXNlcnZlZCBieSByZXBsYWNpbmcgaXQKICAgLy8gd2l0aCBjaGFyYWN0ZXIg
cmVmZXJlbmNlcy4KLSAgc3RhdGljIFN0cmluZyBFc2NhcGVYbWwoY29uc3QgY2hhciogc3RyLCBi
b29sIGlzX2F0dHJpYnV0ZSk7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFc2NhcGVYbWwoY29uc3Qg
c3RkOjpzdHJpbmcmIHN0ciwgYm9vbCBpc19hdHRyaWJ1dGUpOwogCiAgIC8vIFJldHVybnMgdGhl
IGdpdmVuIHN0cmluZyB3aXRoIGFsbCBjaGFyYWN0ZXJzIGludmFsaWQgaW4gWE1MIHJlbW92ZWQu
Ci0gIHN0YXRpYyBTdHJpbmcgUmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoY29uc3QgY2hhciog
c3RyKTsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIFJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGNv
bnN0IHN0ZDo6c3RyaW5nJiBzdHIpOwogCiAgIC8vIENvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5k
IEVzY2FwZVhtbCB3aGVuIHN0ciBpcyBhbiBhdHRyaWJ1dGUgdmFsdWUuCi0gIHN0YXRpYyBTdHJp
bmcgRXNjYXBlWG1sQXR0cmlidXRlKGNvbnN0IGNoYXIqIHN0cikgeworICBzdGF0aWMgc3RkOjpz
dHJpbmcgRXNjYXBlWG1sQXR0cmlidXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKICAgICBy
ZXR1cm4gRXNjYXBlWG1sKHN0ciwgdHJ1ZSk7CiAgIH0KIAogICAvLyBDb252ZW5pZW5jZSB3cmFw
cGVyIGFyb3VuZCBFc2NhcGVYbWwgd2hlbiBzdHIgaXMgbm90IGFuIGF0dHJpYnV0ZSB2YWx1ZS4K
LSAgc3RhdGljIFN0cmluZyBFc2NhcGVYbWxUZXh0KGNvbnN0IGNoYXIqIHN0cikgeyByZXR1cm4g
RXNjYXBlWG1sKHN0ciwgZmFsc2UpOyB9CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFc2NhcGVYbWxU
ZXh0KGNvbnN0IGNoYXIqIHN0cikgeworICAgIHJldHVybiBFc2NhcGVYbWwoc3RyLCBmYWxzZSk7
CisgIH0KKworICAvLyBWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBhdHRyaWJ1dGUgYmVsb25ncyB0
byB0aGUgZ2l2ZW4gZWxlbWVudCBhbmQKKyAgLy8gc3RyZWFtcyB0aGUgYXR0cmlidXRlIGFzIFhN
TC4KKyAgc3RhdGljIHZvaWQgT3V0cHV0WG1sQXR0cmlidXRlKHN0ZDo6b3N0cmVhbSogc3RyZWFt
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGVs
ZW1lbnRfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHZhbHVlKTsKIAogICAvLyBTdHJlYW1zIGFuIFhNTCBDREFUQSBzZWN0aW9uLCBl
c2NhcGluZyBpbnZhbGlkIENEQVRBIHNlcXVlbmNlcyBhcyBuZWVkZWQuCiAgIHN0YXRpYyB2b2lk
IE91dHB1dFhtbENEYXRhU2VjdGlvbig6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLCBjb25zdCBjaGFy
KiBkYXRhKTsKQEAgLTMwMzUsMTkgKzM0NzMsMjYgQEAgY2xhc3MgWG1sVW5pdFRlc3RSZXN1bHRQ
cmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKTsKIAogICAvLyBQcmlu
dHMgYW4gWE1MIHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdENhc2Ugb2JqZWN0Ci0gIHN0YXRpYyB2
b2lkIFByaW50WG1sVGVzdENhc2UoRklMRSogb3V0LCBjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNl
KTsKKyAgc3RhdGljIHZvaWQgUHJpbnRYbWxUZXN0Q2FzZSg6OnN0ZDo6b3N0cmVhbSogc3RyZWFt
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nh
c2UpOwogCiAgIC8vIFByaW50cyBhbiBYTUwgc3VtbWFyeSBvZiB1bml0X3Rlc3QgdG8gb3V0cHV0
IHN0cmVhbSBvdXQuCi0gIHN0YXRpYyB2b2lkIFByaW50WG1sVW5pdFRlc3QoRklMRSogb3V0LCBj
b25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KTsKKyAgc3RhdGljIHZvaWQgUHJpbnRYbWxVbml0VGVz
dCg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpOwogCiAgIC8vIFByb2R1Y2VzIGEgc3RyaW5nIHJl
cHJlc2VudGluZyB0aGUgdGVzdCBwcm9wZXJ0aWVzIGluIGEgcmVzdWx0IGFzIHNwYWNlCiAgIC8v
IGRlbGltaXRlZCBYTUwgYXR0cmlidXRlcyBiYXNlZCBvbiB0aGUgcHJvcGVydHkga2V5PSJ2YWx1
ZSIgcGFpcnMuCi0gIC8vIFdoZW4gdGhlIFN0cmluZyBpcyBub3QgZW1wdHksIGl0IGluY2x1ZGVz
IGEgc3BhY2UgYXQgdGhlIGJlZ2lubmluZywKKyAgLy8gV2hlbiB0aGUgc3RkOjpzdHJpbmcgaXMg
bm90IGVtcHR5LCBpdCBpbmNsdWRlcyBhIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcsCiAgIC8vIHRv
IGRlbGltaXQgdGhpcyBhdHRyaWJ1dGUgZnJvbSBwcmlvciBhdHRyaWJ1dGVzLgotICBzdGF0aWMg
U3RyaW5nIFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKGNvbnN0IFRlc3RSZXN1bHQmIHJl
c3VsdCk7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBUZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRl
cyhjb25zdCBUZXN0UmVzdWx0JiByZXN1bHQpOworCisgIC8vIFN0cmVhbXMgYW4gWE1MIHJlcHJl
c2VudGF0aW9uIG9mIHRoZSB0ZXN0IHByb3BlcnRpZXMgb2YgYSBUZXN0UmVzdWx0CisgIC8vIG9i
amVjdC4KKyAgc3RhdGljIHZvaWQgT3V0cHV0WG1sVGVzdFByb3BlcnRpZXMoc3RkOjpvc3RyZWFt
KiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRl
c3RSZXN1bHQmIHJlc3VsdCk7CiAKICAgLy8gVGhlIG91dHB1dCBmaWxlLgotICBjb25zdCBTdHJp
bmcgb3V0cHV0X2ZpbGVfOworICBjb25zdCBzdGQ6OnN0cmluZyBvdXRwdXRfZmlsZV87CiAKICAg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIp
OwogfTsKQEAgLTMwNTUsNDEgKzM1MDAsMjcgQEAgY2xhc3MgWG1sVW5pdFRlc3RSZXN1bHRQcmlu
dGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewogLy8gQ3JlYXRlcyBhIG5ldyBY
bWxVbml0VGVzdFJlc3VsdFByaW50ZXIuCiBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlhtbFVu
aXRUZXN0UmVzdWx0UHJpbnRlcihjb25zdCBjaGFyKiBvdXRwdXRfZmlsZSkKICAgICA6IG91dHB1
dF9maWxlXyhvdXRwdXRfZmlsZSkgewotICBpZiAob3V0cHV0X2ZpbGVfLmNfc3RyKCkgPT0gTlVM
TCB8fCBvdXRwdXRfZmlsZV8uZW1wdHkoKSkgewotICAgIGZwcmludGYoc3RkZXJyLCAiWE1MIG91
dHB1dCBmaWxlIG1heSBub3QgYmUgbnVsbFxuIik7Ci0gICAgZmZsdXNoKHN0ZGVycik7Ci0gICAg
ZXhpdChFWElUX0ZBSUxVUkUpOworICBpZiAob3V0cHV0X2ZpbGVfLmVtcHR5KCkpIHsKKyAgICBH
VEVTVF9MT0dfKEZBVEFMKSA8PCAiWE1MIG91dHB1dCBmaWxlIG1heSBub3QgYmUgbnVsbCI7CiAg
IH0KIH0KIAogLy8gQ2FsbGVkIGFmdGVyIHRoZSB1bml0IHRlc3QgZW5kcy4KIHZvaWQgWG1sVW5p
dFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVu
aXRfdGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IC8qaXRlcmF0aW9uKi8pIHsKLSAgRklMRSogeG1sb3V0ID0gTlVMTDsKLSAgRmlsZVBh
dGggb3V0cHV0X2ZpbGUob3V0cHV0X2ZpbGVfKTsKLSAgRmlsZVBhdGggb3V0cHV0X2RpcihvdXRw
dXRfZmlsZS5SZW1vdmVGaWxlTmFtZSgpKTsKKyAgRklMRSogeG1sb3V0ID0gT3BlbkZpbGVGb3JX
cml0aW5nKG91dHB1dF9maWxlXyk7CisgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgUHJp
bnRYbWxVbml0VGVzdCgmc3RyZWFtLCB1bml0X3Rlc3QpOworICBmcHJpbnRmKHhtbG91dCwgIiVz
IiwgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnN0cmVhbSkuY19zdHIoKSk7CisgIGZjbG9zZSh4bWxv
dXQpOworfQogCi0gIGlmIChvdXRwdXRfZGlyLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHko
KSkgewotICAgIHhtbG91dCA9IHBvc2l4OjpGT3BlbihvdXRwdXRfZmlsZV8uY19zdHIoKSwgInci
KTsKLSAgfQotICBpZiAoeG1sb3V0ID09IE5VTEwpIHsKLSAgICAvLyBUT0RPKHdhbik6IHJlcG9y
dCB0aGUgcmVhc29uIG9mIHRoZSBmYWlsdXJlLgotICAgIC8vCi0gICAgLy8gV2UgZG9uJ3QgZG8g
aXQgZm9yIG5vdyBhczoKLSAgICAvLwotICAgIC8vICAgMS4gVGhlcmUgaXMgbm8gdXJnZW50IG5l
ZWQgZm9yIGl0LgotICAgIC8vICAgMi4gSXQncyBhIGJpdCBpbnZvbHZlZCB0byBtYWtlIHRoZSBl
cnJubyB2YXJpYWJsZSB0aHJlYWQtc2FmZSBvbgotICAgIC8vICAgICAgYWxsIHRocmVlIG9wZXJh
dGluZyBzeXN0ZW1zIChMaW51eCwgV2luZG93cywgYW5kIE1hYyBPUykuCi0gICAgLy8gICAzLiBU
byBpbnRlcnByZXQgdGhlIG1lYW5pbmcgb2YgZXJybm8gaW4gYSB0aHJlYWQtc2FmZSB3YXksCi0g
ICAgLy8gICAgICB3ZSBuZWVkIHRoZSBzdHJlcnJvcl9yKCkgZnVuY3Rpb24sIHdoaWNoIGlzIG5v
dCBhdmFpbGFibGUgb24KLSAgICAvLyAgICAgIFdpbmRvd3MuCi0gICAgZnByaW50ZihzdGRlcnIs
Ci0gICAgICAgICAgICAiVW5hYmxlIHRvIG9wZW4gZmlsZSBcIiVzXCJcbiIsCi0gICAgICAgICAg
ICBvdXRwdXRfZmlsZV8uY19zdHIoKSk7Ci0gICAgZmZsdXNoKHN0ZGVycik7Ci0gICAgZXhpdChF
WElUX0ZBSUxVUkUpOwotICB9Ci0gIFByaW50WG1sVW5pdFRlc3QoeG1sb3V0LCB1bml0X3Rlc3Qp
Owordm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Okxpc3RUZXN0c01hdGNoaW5nRmlsdGVy
KAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMpIHsKKyAgRklM
RSogeG1sb3V0ID0gT3BlbkZpbGVGb3JXcml0aW5nKG91dHB1dF9maWxlXyk7CisgIHN0ZDo6c3Ry
aW5nc3RyZWFtIHN0cmVhbTsKKyAgUHJpbnRYbWxUZXN0c0xpc3QoJnN0cmVhbSwgdGVzdF9jYXNl
cyk7CisgIGZwcmludGYoeG1sb3V0LCAiJXMiLCBTdHJpbmdTdHJlYW1Ub1N0cmluZygmc3RyZWFt
KS5jX3N0cigpKTsKICAgZmNsb3NlKHhtbG91dCk7CiB9CiAKQEAgLTMxMDMsNDQgKzM1MzQsNDUg
QEAgdm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdEl0ZXJhdGlvbkVuZChjb25z
dCBVbml0VGVzdCYgdW5pdF90ZXN0LAogLy8gbW9kdWxlIHdpbGwgY29uc2lzdCBvZiBvcmRpbmFy
eSBFbmdsaXNoIHRleHQuCiAvLyBJZiB0aGlzIG1vZHVsZSBpcyBldmVyIG1vZGlmaWVkIHRvIHBy
b2R1Y2UgdmVyc2lvbiAxLjEgWE1MIG91dHB1dCwKIC8vIG1vc3QgaW52YWxpZCBjaGFyYWN0ZXJz
IGNhbiBiZSByZXRhaW5lZCB1c2luZyBjaGFyYWN0ZXIgcmVmZXJlbmNlcy4KLS8vIFRPRE8od2Fu
KTogSXQgbWlnaHQgYmUgbmljZSB0byBoYXZlIGEgbWluaW1hbGx5IGludmFzaXZlLCBodW1hbi1y
ZWFkYWJsZQorLy8gRklYTUU6IEl0IG1pZ2h0IGJlIG5pY2UgdG8gaGF2ZSBhIG1pbmltYWxseSBp
bnZhc2l2ZSwgaHVtYW4tcmVhZGFibGUKIC8vIGVzY2FwaW5nIHNjaGVtZSBmb3IgaW52YWxpZCBj
aGFyYWN0ZXJzLCByYXRoZXIgdGhhbiBkcm9wcGluZyB0aGVtLgotU3RyaW5nIFhtbFVuaXRUZXN0
UmVzdWx0UHJpbnRlcjo6RXNjYXBlWG1sKGNvbnN0IGNoYXIqIHN0ciwgYm9vbCBpc19hdHRyaWJ1
dGUpIHsKK3N0ZDo6c3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6RXNjYXBlWG1sKAor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIsIGJvb2wgaXNfYXR0cmlidXRlKSB7CiAgIE1lc3Nh
Z2UgbTsKIAotICBpZiAoc3RyICE9IE5VTEwpIHsKLSAgICBmb3IgKGNvbnN0IGNoYXIqIHNyYyA9
IHN0cjsgKnNyYzsgKytzcmMpIHsKLSAgICAgIHN3aXRjaCAoKnNyYykgewotICAgICAgICBjYXNl
ICc8JzoKLSAgICAgICAgICBtIDw8ICImbHQ7IjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSAnPic6Ci0gICAgICAgICAgbSA8PCAiJmd0OyI7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgJyYnOgotICAgICAgICAgIG0gPDwgIiZhbXA7IjsKLSAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSAnXCcnOgotICAgICAgICAgIGlmIChpc19hdHRyaWJ1dGUpCi0gICAgICAg
ICAgICBtIDw8ICImYXBvczsiOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG0gPDwgJ1wn
JzsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnIic6Ci0gICAgICAgICAgaWYgKGlz
X2F0dHJpYnV0ZSkKLSAgICAgICAgICAgIG0gPDwgIiZxdW90OyI7CisgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RyLnNpemUoKTsgKytpKSB7CisgICAgY29uc3QgY2hhciBjaCA9IHN0cltpXTsK
KyAgICBzd2l0Y2ggKGNoKSB7CisgICAgICBjYXNlICc8JzoKKyAgICAgICAgbSA8PCAiJmx0OyI7
CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnPic6CisgICAgICAgIG0gPDwgIiZndDsiOwor
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJyYnOgorICAgICAgICBtIDw8ICImYW1wOyI7Cisg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnXCcnOgorICAgICAgICBpZiAoaXNfYXR0cmlidXRl
KQorICAgICAgICAgIG0gPDwgIiZhcG9zOyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBtIDw8
ICdcJyc7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnIic6CisgICAgICAgIGlmIChpc19h
dHRyaWJ1dGUpCisgICAgICAgICAgbSA8PCAiJnF1b3Q7IjsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgIG0gPDwgJyInOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGlm
IChJc1ZhbGlkWG1sQ2hhcmFjdGVyKGNoKSkgeworICAgICAgICAgIGlmIChpc19hdHRyaWJ1dGUg
JiYgSXNOb3JtYWxpemFibGVXaGl0ZXNwYWNlKGNoKSkKKyAgICAgICAgICAgIG0gPDwgIiYjeCIg
PDwgU3RyaW5nOjpGb3JtYXRCeXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkKKyAg
ICAgICAgICAgICAgPDwgIjsiOwogICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG0gPDwgJyIn
OwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgIGlmIChJc1Zh
bGlkWG1sQ2hhcmFjdGVyKCpzcmMpKSB7Ci0gICAgICAgICAgICBpZiAoaXNfYXR0cmlidXRlICYm
IElzTm9ybWFsaXphYmxlV2hpdGVzcGFjZSgqc3JjKSkKLSAgICAgICAgICAgICAgbSA8PCBTdHJp
bmc6OkZvcm1hdCgiJiN4JTAyWDsiLCB1bnNpZ25lZCgqc3JjKSk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgIG0gPDwgKnNyYzsKLSAgICAgICAgICB9Ci0gICAgICAgICAgYnJlYWs7
Ci0gICAgICB9CisgICAgICAgICAgICBtIDw8IGNoOworICAgICAgICB9CisgICAgICAgIGJyZWFr
OwogICAgIH0KICAgfQogCkBAIC0zMTUwLDIxICszNTgyLDIwIEBAIFN0cmluZyBYbWxVbml0VGVz
dFJlc3VsdFByaW50ZXI6OkVzY2FwZVhtbChjb25zdCBjaGFyKiBzdHIsIGJvb2wgaXNfYXR0cmli
dXRlKSB7CiAvLyBSZXR1cm5zIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBhbGwgY2hhcmFjdGVycyBp
bnZhbGlkIGluIFhNTCByZW1vdmVkLgogLy8gQ3VycmVudGx5IGludmFsaWQgY2hhcmFjdGVycyBh
cmUgZHJvcHBlZCBmcm9tIHRoZSBzdHJpbmcuIEFuCiAvLyBhbHRlcm5hdGl2ZSBpcyB0byByZXBs
YWNlIHRoZW0gd2l0aCBjZXJ0YWluIGNoYXJhY3RlcnMgc3VjaCBhcyAuIG9yID8uCi1TdHJpbmcg
WG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpSZW1vdmVJbnZhbGlkWG1sQ2hhcmFjdGVycyhjb25z
dCBjaGFyKiBzdHIpIHsKLSAgY2hhciogY29uc3Qgb3V0cHV0ID0gbmV3IGNoYXJbc3RybGVuKHN0
cikgKyAxXTsKLSAgY2hhciogYXBwZW5kZXIgPSBvdXRwdXQ7Ci0gIGZvciAoY2hhciBjaCA9ICpz
dHI7IGNoICE9ICdcMCc7IGNoID0gKisrc3RyKQotICAgIGlmIChJc1ZhbGlkWG1sQ2hhcmFjdGVy
KGNoKSkKLSAgICAgICphcHBlbmRlcisrID0gY2g7Ci0gICphcHBlbmRlciA9ICdcMCc7CitzdGQ6
OnN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlJlbW92ZUludmFsaWRYbWxDaGFyYWN0
ZXJzKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKKyAgc3RkOjpzdHJpbmcgb3V0cHV0
OworICBvdXRwdXQucmVzZXJ2ZShzdHIuc2l6ZSgpKTsKKyAgZm9yIChzdGQ6OnN0cmluZzo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBzdHIuYmVnaW4oKTsgaXQgIT0gc3RyLmVuZCgpOyArK2l0KQorICAg
IGlmIChJc1ZhbGlkWG1sQ2hhcmFjdGVyKCppdCkpCisgICAgICBvdXRwdXQucHVzaF9iYWNrKCpp
dCk7CiAKLSAgU3RyaW5nIHJldF92YWx1ZShvdXRwdXQpOwotICBkZWxldGVbXSBvdXRwdXQ7Ci0g
IHJldHVybiByZXRfdmFsdWU7CisgIHJldHVybiBvdXRwdXQ7CiB9CiAKIC8vIFRoZSBmb2xsb3dp
bmcgcm91dGluZXMgZ2VuZXJhdGUgYW4gWE1MIHJlcHJlc2VudGF0aW9uIG9mIGEgVW5pdFRlc3QK
IC8vIG9iamVjdC4KKy8vIEdPT0dMRVRFU1RfQ00wMDA5IERPIE5PVCBERUxFVEUKIC8vCiAvLyBU
aGlzIGlzIGhvdyBHb29nbGUgVGVzdCBjb25jZXB0cyBtYXAgdG8gdGhlIERURDoKIC8vCkBAIC0z
MTgyLDEwICszNjEzLDQxIEBAIFN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlJlbW92
ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIHN0cikgewogLy8gRm9ybWF0cyB0aGUg
Z2l2ZW4gdGltZSBpbiBtaWxsaXNlY29uZHMgYXMgc2Vjb25kcy4KIHN0ZDo6c3RyaW5nIEZvcm1h
dFRpbWVJbk1pbGxpc0FzU2Vjb25kcyhUaW1lSW5NaWxsaXMgbXMpIHsKICAgOjpzdGQ6OnN0cmlu
Z3N0cmVhbSBzczsKLSAgc3MgPDwgbXMvMTAwMC4wOworICBzcyA8PCAoc3RhdGljX2Nhc3Q8ZG91
YmxlPihtcykgKiAxZS0zKTsKICAgcmV0dXJuIHNzLnN0cigpOwogfQogCitzdGF0aWMgYm9vbCBQ
b3J0YWJsZUxvY2FsdGltZSh0aW1lX3Qgc2Vjb25kcywgc3RydWN0IHRtKiBvdXQpIHsKKyNpZiBk
ZWZpbmVkKF9NU0NfVkVSKQorICByZXR1cm4gbG9jYWx0aW1lX3Mob3V0LCAmc2Vjb25kcykgPT0g
MDsKKyNlbGlmIGRlZmluZWQoX19NSU5HVzMyX18pIHx8IGRlZmluZWQoX19NSU5HVzY0X18pCisg
IC8vIE1JTkdXIDx0aW1lLmg+IHByb3ZpZGVzIG5laXRoZXIgbG9jYWx0aW1lX3Igbm9yIGxvY2Fs
dGltZV9zLCBidXQgdXNlcworICAvLyBXaW5kb3dzJyBsb2NhbHRpbWUoKSwgd2hpY2ggaGFzIGEg
dGhyZWFkLWxvY2FsIHRtIGJ1ZmZlci4KKyAgc3RydWN0IHRtKiB0bV9wdHIgPSBsb2NhbHRpbWUo
JnNlY29uZHMpOyAgLy8gTk9MSU5UCisgIGlmICh0bV9wdHIgPT0gTlVMTCkKKyAgICByZXR1cm4g
ZmFsc2U7CisgICpvdXQgPSAqdG1fcHRyOworICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgIHJldHVy
biBsb2NhbHRpbWVfcigmc2Vjb25kcywgb3V0KSAhPSBOVUxMOworI2VuZGlmCit9CisKKy8vIENv
bnZlcnRzIHRoZSBnaXZlbiBlcG9jaCB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byBhIGRhdGUgc3Ry
aW5nIGluIHRoZSBJU08KKy8vIDg2MDEgZm9ybWF0LCB3aXRob3V0IHRoZSB0aW1lem9uZSBpbmZv
cm1hdGlvbi4KK3N0ZDo6c3RyaW5nIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKFRp
bWVJbk1pbGxpcyBtcykgeworICBzdHJ1Y3QgdG0gdGltZV9zdHJ1Y3Q7CisgIGlmICghUG9ydGFi
bGVMb2NhbHRpbWUoc3RhdGljX2Nhc3Q8dGltZV90PihtcyAvIDEwMDApLCAmdGltZV9zdHJ1Y3Qp
KQorICAgIHJldHVybiAiIjsKKyAgLy8gWVlZWS1NTS1ERFRoaDptbTpzcworICByZXR1cm4gU3Ry
ZWFtYWJsZVRvU3RyaW5nKHRpbWVfc3RydWN0LnRtX3llYXIgKyAxOTAwKSArICItIiArCisgICAg
ICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9tb24gKyAxKSArICItIiAr
CisgICAgICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9tZGF5KSArICJU
IiArCisgICAgICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9ob3VyKSAr
ICI6IiArCisgICAgICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0cnVjdC50bV9taW4p
ICsgIjoiICsKKyAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX3Nl
Yyk7Cit9CisKIC8vIFN0cmVhbXMgYW4gWE1MIENEQVRBIHNlY3Rpb24sIGVzY2FwaW5nIGludmFs
aWQgQ0RBVEEgc2VxdWVuY2VzIGFzIG5lZWRlZC4KIHZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmlu
dGVyOjpPdXRwdXRYbWxDRGF0YVNlY3Rpb24oOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogZGF0YSkgewpAQCAtMzIwNiw4OSArMzY2OCwxNzkgQEAgdm9pZCBYbWxVbml0VGVzdFJlc3Vs
dFByaW50ZXI6Ok91dHB1dFhtbENEYXRhU2VjdGlvbig6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAog
ICAqc3RyZWFtIDw8ICJdXT4iOwogfQogCit2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6
T3V0cHV0WG1sQXR0cmlidXRlKAorICAgIHN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBlbGVtZW50X25hbWUsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUs
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSB7CisgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiYgYWxsb3dlZF9uYW1lcyA9CisgICAgICBHZXRSZXNlcnZlZEF0dHJpYnV0ZXNG
b3JFbGVtZW50KGVsZW1lbnRfbmFtZSk7CisKKyAgR1RFU1RfQ0hFQ0tfKHN0ZDo6ZmluZChhbGxv
d2VkX25hbWVzLmJlZ2luKCksIGFsbG93ZWRfbmFtZXMuZW5kKCksIG5hbWUpICE9CisgICAgICAg
ICAgICAgICAgICAgYWxsb3dlZF9uYW1lcy5lbmQoKSkKKyAgICAgIDw8ICJBdHRyaWJ1dGUgIiA8
PCBuYW1lIDw8ICIgaXMgbm90IGFsbG93ZWQgZm9yIGVsZW1lbnQgPCIgPDwgZWxlbWVudF9uYW1l
CisgICAgICA8PCAiPi4iOworCisgICpzdHJlYW0gPDwgIiAiIDw8IG5hbWUgPDwgIj1cIiIgPDwg
RXNjYXBlWG1sQXR0cmlidXRlKHZhbHVlKSA8PCAiXCIiOworfQorCiAvLyBQcmludHMgYW4gWE1M
IHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdEluZm8gb2JqZWN0LgotLy8gVE9ETyh3YW4pOiBUaGVy
ZSBpcyBhbHNvIHZhbHVlIGluIHByaW50aW5nIHByb3BlcnRpZXMgd2l0aCB0aGUgcGxhaW4gcHJp
bnRlci4KKy8vIEZJWE1FOiBUaGVyZSBpcyBhbHNvIHZhbHVlIGluIHByaW50aW5nIHByb3BlcnRp
ZXMgd2l0aCB0aGUgcGxhaW4gcHJpbnRlci4KIHZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVy
OjpPdXRwdXRYbWxUZXN0SW5mbyg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRlc3RfY2Fz
ZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKICAgY29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0
ID0gKnRlc3RfaW5mby5yZXN1bHQoKTsKLSAgKnN0cmVhbSA8PCAiICAgIDx0ZXN0Y2FzZSBuYW1l
PVwiIgotICAgICAgICAgIDw8IEVzY2FwZVhtbEF0dHJpYnV0ZSh0ZXN0X2luZm8ubmFtZSgpKS5j
X3N0cigpCi0gICAgICAgICAgPDwgIlwiIHN0YXR1cz1cIiIKLSAgICAgICAgICA8PCAodGVzdF9p
bmZvLnNob3VsZF9ydW4oKSA/ICJydW4iIDogIm5vdHJ1biIpCi0gICAgICAgICAgPDwgIlwiIHRp
bWU9XCIiCi0gICAgICAgICAgPDwgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKHJlc3VsdC5l
bGFwc2VkX3RpbWUoKSkKLSAgICAgICAgICA8PCAiXCIgY2xhc3NuYW1lPVwiIiA8PCBFc2NhcGVY
bWxBdHRyaWJ1dGUodGVzdF9jYXNlX25hbWUpLmNfc3RyKCkKLSAgICAgICAgICA8PCAiXCIiIDw8
IFRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKHJlc3VsdCkuY19zdHIoKTsKKyAgY29uc3Qg
c3RkOjpzdHJpbmcga1Rlc3RjYXNlID0gInRlc3RjYXNlIjsKKworICBpZiAodGVzdF9pbmZvLmlz
X2luX2Fub3RoZXJfc2hhcmQoKSkgeworICAgIHJldHVybjsKKyAgfQorCisgICpzdHJlYW0gPDwg
IiAgICA8dGVzdGNhc2UiOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2Us
ICJuYW1lIiwgdGVzdF9pbmZvLm5hbWUoKSk7CisKKyAgaWYgKHRlc3RfaW5mby52YWx1ZV9wYXJh
bSgpICE9IE5VTEwpIHsKKyAgICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2Us
ICJ2YWx1ZV9wYXJhbSIsCisgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfaW5mby52YWx1ZV9w
YXJhbSgpKTsKKyAgfQorICBpZiAodGVzdF9pbmZvLnR5cGVfcGFyYW0oKSAhPSBOVUxMKSB7Cisg
ICAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNlLCAidHlwZV9wYXJhbSIsIHRl
c3RfaW5mby50eXBlX3BhcmFtKCkpOworICB9CisgIGlmIChHVEVTVF9GTEFHKGxpc3RfdGVzdHMp
KSB7CisgICAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNlLCAiZmlsZSIsIHRl
c3RfaW5mby5maWxlKCkpOworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2Fz
ZSwgImxpbmUiLAorICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodGVz
dF9pbmZvLmxpbmUoKSkpOworICAgICpzdHJlYW0gPDwgIiAvPlxuIjsKKyAgICByZXR1cm47Cisg
IH0KKworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJzdGF0dXMiLAor
ICAgICAgICAgICAgICAgICAgICAgdGVzdF9pbmZvLnNob3VsZF9ydW4oKSA/ICJydW4iIDogIm5v
dHJ1biIpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJ0aW1lIiwK
KyAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyhyZXN1bHQu
ZWxhcHNlZF90aW1lKCkpKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNl
LCAiY2xhc3NuYW1lIiwgdGVzdF9jYXNlX25hbWUpOwogCiAgIGludCBmYWlsdXJlcyA9IDA7CiAg
IGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0LnRvdGFsX3BhcnRfY291bnQoKTsgKytpKSB7CiAg
ICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIHBhcnQgPSByZXN1bHQuR2V0VGVzdFBhcnRSZXN1bHQo
aSk7CiAgICAgaWYgKHBhcnQuZmFpbGVkKCkpIHsKLSAgICAgIGlmICgrK2ZhaWx1cmVzID09IDEp
CisgICAgICBpZiAoKytmYWlsdXJlcyA9PSAxKSB7CiAgICAgICAgICpzdHJlYW0gPDwgIj5cbiI7
CisgICAgICB9CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyBsb2NhdGlvbiA9CisgICAgICAgICAg
aW50ZXJuYWw6OkZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24ocGFydC5maWxl
X25hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJ0LmxpbmVfbnVtYmVyKCkpOworICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg
c3VtbWFyeSA9IGxvY2F0aW9uICsgIlxuIiArIHBhcnQuc3VtbWFyeSgpOwogICAgICAgKnN0cmVh
bSA8PCAiICAgICAgPGZhaWx1cmUgbWVzc2FnZT1cIiIKLSAgICAgICAgICAgICAgPDwgRXNjYXBl
WG1sQXR0cmlidXRlKHBhcnQuc3VtbWFyeSgpKS5jX3N0cigpCisgICAgICAgICAgICAgIDw8IEVz
Y2FwZVhtbEF0dHJpYnV0ZShzdW1tYXJ5LmNfc3RyKCkpCiAgICAgICAgICAgICAgIDw8ICJcIiB0
eXBlPVwiXCI+IjsKLSAgICAgIGNvbnN0IFN0cmluZyBtZXNzYWdlID0gUmVtb3ZlSW52YWxpZFht
bENoYXJhY3RlcnMoU3RyaW5nOjpGb3JtYXQoCi0gICAgICAgICAgIiVzOiVkXG4lcyIsCi0gICAg
ICAgICAgcGFydC5maWxlX25hbWUoKSwgcGFydC5saW5lX251bWJlcigpLAotICAgICAgICAgIHBh
cnQubWVzc2FnZSgpKS5jX3N0cigpKTsKLSAgICAgIE91dHB1dFhtbENEYXRhU2VjdGlvbihzdHJl
YW0sIG1lc3NhZ2UuY19zdHIoKSk7CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyBkZXRhaWwgPSBs
b2NhdGlvbiArICJcbiIgKyBwYXJ0Lm1lc3NhZ2UoKTsKKyAgICAgIE91dHB1dFhtbENEYXRhU2Vj
dGlvbihzdHJlYW0sIFJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGRldGFpbCkuY19zdHIoKSk7
CiAgICAgICAqc3RyZWFtIDw8ICI8L2ZhaWx1cmU+XG4iOwogICAgIH0KICAgfQogCi0gIGlmIChm
YWlsdXJlcyA9PSAwKQorICBpZiAoZmFpbHVyZXMgPT0gMCAmJiByZXN1bHQudGVzdF9wcm9wZXJ0
eV9jb3VudCgpID09IDApIHsKICAgICAqc3RyZWFtIDw8ICIgLz5cbiI7Ci0gIGVsc2UKKyAgfSBl
bHNlIHsKKyAgICBpZiAoZmFpbHVyZXMgPT0gMCkgeworICAgICAgKnN0cmVhbSA8PCAiPlxuIjsK
KyAgICB9CisgICAgT3V0cHV0WG1sVGVzdFByb3BlcnRpZXMoc3RyZWFtLCByZXN1bHQpOwogICAg
ICpzdHJlYW0gPDwgIiAgICA8L3Rlc3RjYXNlPlxuIjsKKyAgfQogfQogCiAvLyBQcmludHMgYW4g
WE1MIHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdENhc2Ugb2JqZWN0Ci12b2lkIFhtbFVuaXRUZXN0
UmVzdWx0UHJpbnRlcjo6UHJpbnRYbWxUZXN0Q2FzZShGSUxFKiBvdXQsCit2b2lkIFhtbFVuaXRU
ZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRYbWxUZXN0Q2FzZShzdGQ6Om9zdHJlYW0qIHN0cmVhbSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRl
c3RDYXNlJiB0ZXN0X2Nhc2UpIHsKLSAgZnByaW50ZihvdXQsCi0gICAgICAgICAgIiAgPHRlc3Rz
dWl0ZSBuYW1lPVwiJXNcIiB0ZXN0cz1cIiVkXCIgZmFpbHVyZXM9XCIlZFwiICIKLSAgICAgICAg
ICAiZGlzYWJsZWQ9XCIlZFwiICIsCi0gICAgICAgICAgRXNjYXBlWG1sQXR0cmlidXRlKHRlc3Rf
Y2FzZS5uYW1lKCkpLmNfc3RyKCksCi0gICAgICAgICAgdGVzdF9jYXNlLnRvdGFsX3Rlc3RfY291
bnQoKSwKLSAgICAgICAgICB0ZXN0X2Nhc2UuZmFpbGVkX3Rlc3RfY291bnQoKSwKLSAgICAgICAg
ICB0ZXN0X2Nhc2UuZGlzYWJsZWRfdGVzdF9jb3VudCgpKTsKLSAgZnByaW50ZihvdXQsCi0gICAg
ICAgICAgImVycm9ycz1cIjBcIiB0aW1lPVwiJXNcIj5cbiIsCi0gICAgICAgICAgRm9ybWF0VGlt
ZUluTWlsbGlzQXNTZWNvbmRzKHRlc3RfY2FzZS5lbGFwc2VkX3RpbWUoKSkuY19zdHIoKSk7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0c3VpdGUgPSAidGVzdHN1aXRlIjsKKyAgKnN0cmVhbSA8
PCAiICA8IiA8PCBrVGVzdHN1aXRlOworICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVz
dHN1aXRlLCAibmFtZSIsIHRlc3RfY2FzZS5uYW1lKCkpOworICBPdXRwdXRYbWxBdHRyaWJ1dGUo
c3RyZWFtLCBrVGVzdHN1aXRlLCAidGVzdHMiLAorICAgICAgICAgICAgICAgICAgICAgU3RyZWFt
YWJsZVRvU3RyaW5nKHRlc3RfY2FzZS5yZXBvcnRhYmxlX3Rlc3RfY291bnQoKSkpOworICBpZiAo
IUdURVNUX0ZMQUcobGlzdF90ZXN0cykpIHsKKyAgICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFt
LCBrVGVzdHN1aXRlLCAiZmFpbHVyZXMiLAorICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW1h
YmxlVG9TdHJpbmcodGVzdF9jYXNlLmZhaWxlZF90ZXN0X2NvdW50KCkpKTsKKyAgICBPdXRwdXRY
bWxBdHRyaWJ1dGUoCisgICAgICAgIHN0cmVhbSwga1Rlc3RzdWl0ZSwgImRpc2FibGVkIiwKKyAg
ICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHRlc3RfY2FzZS5yZXBvcnRhYmxlX2Rpc2FibGVkX3Rl
c3RfY291bnQoKSkpOworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUs
ICJlcnJvcnMiLCAiMCIpOworICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3Vp
dGUsICJ0aW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNT
ZWNvbmRzKHRlc3RfY2FzZS5lbGFwc2VkX3RpbWUoKSkpOworICAgICpzdHJlYW0gPDwgVGVzdFBy
b3BlcnRpZXNBc1htbEF0dHJpYnV0ZXModGVzdF9jYXNlLmFkX2hvY190ZXN0X3Jlc3VsdCgpKTsK
KyAgfQorICAqc3RyZWFtIDw8ICI+XG4iOwogICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RfY2Fz
ZS50b3RhbF90ZXN0X2NvdW50KCk7ICsraSkgewotICAgIFN0clN0cmVhbSBzdHJlYW07Ci0gICAg
T3V0cHV0WG1sVGVzdEluZm8oJnN0cmVhbSwgdGVzdF9jYXNlLm5hbWUoKSwgKnRlc3RfY2FzZS5H
ZXRUZXN0SW5mbyhpKSk7Ci0gICAgZnByaW50ZihvdXQsICIlcyIsIFN0clN0cmVhbVRvU3RyaW5n
KCZzdHJlYW0pLmNfc3RyKCkpOworICAgIGlmICh0ZXN0X2Nhc2UuR2V0VGVzdEluZm8oaSktPmlz
X3JlcG9ydGFibGUoKSkKKyAgICAgIE91dHB1dFhtbFRlc3RJbmZvKHN0cmVhbSwgdGVzdF9jYXNl
Lm5hbWUoKSwgKnRlc3RfY2FzZS5HZXRUZXN0SW5mbyhpKSk7CiAgIH0KLSAgZnByaW50ZihvdXQs
ICIgIDwvdGVzdHN1aXRlPlxuIik7CisgICpzdHJlYW0gPDwgIiAgPC8iIDw8IGtUZXN0c3VpdGUg
PDwgIj5cbiI7CiB9CiAKIC8vIFByaW50cyBhbiBYTUwgc3VtbWFyeSBvZiB1bml0X3Rlc3QgdG8g
b3V0cHV0IHN0cmVhbSBvdXQuCi12b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRY
bWxVbml0VGVzdChGSUxFKiBvdXQsCit2b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJp
bnRYbWxVbml0VGVzdChzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpIHsK
LSAgZnByaW50ZihvdXQsICI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwi
Pz5cbiIpOwotICBmcHJpbnRmKG91dCwKLSAgICAgICAgICAiPHRlc3RzdWl0ZXMgdGVzdHM9XCIl
ZFwiIGZhaWx1cmVzPVwiJWRcIiBkaXNhYmxlZD1cIiVkXCIgIgotICAgICAgICAgICJlcnJvcnM9
XCIwXCIgdGltZT1cIiVzXCIgIiwKLSAgICAgICAgICB1bml0X3Rlc3QudG90YWxfdGVzdF9jb3Vu
dCgpLAotICAgICAgICAgIHVuaXRfdGVzdC5mYWlsZWRfdGVzdF9jb3VudCgpLAotICAgICAgICAg
IHVuaXRfdGVzdC5kaXNhYmxlZF90ZXN0X2NvdW50KCksCi0gICAgICAgICAgRm9ybWF0VGltZUlu
TWlsbGlzQXNTZWNvbmRzKHVuaXRfdGVzdC5lbGFwc2VkX3RpbWUoKSkuY19zdHIoKSk7CisgIGNv
bnN0IHN0ZDo6c3RyaW5nIGtUZXN0c3VpdGVzID0gInRlc3RzdWl0ZXMiOworCisgICpzdHJlYW0g
PDwgIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCI/PlxuIjsKKyAgKnN0
cmVhbSA8PCAiPCIgPDwga1Rlc3RzdWl0ZXM7CisKKyAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVh
bSwga1Rlc3RzdWl0ZXMsICJ0ZXN0cyIsCisgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxl
VG9TdHJpbmcodW5pdF90ZXN0LnJlcG9ydGFibGVfdGVzdF9jb3VudCgpKSk7CisgIE91dHB1dFht
bEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGVzLCAiZmFpbHVyZXMiLAorICAgICAgICAgICAg
ICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5mYWlsZWRfdGVzdF9jb3VudCgp
KSk7CisgIE91dHB1dFhtbEF0dHJpYnV0ZSgKKyAgICAgIHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJk
aXNhYmxlZCIsCisgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodW5pdF90ZXN0LnJlcG9ydGFibGVf
ZGlzYWJsZWRfdGVzdF9jb3VudCgpKSk7CisgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtU
ZXN0c3VpdGVzLCAiZXJyb3JzIiwgIjAiKTsKKyAgT3V0cHV0WG1sQXR0cmlidXRlKAorICAgICAg
c3RyZWFtLCBrVGVzdHN1aXRlcywgInRpbWVzdGFtcCIsCisgICAgICBGb3JtYXRFcG9jaFRpbWVJ
bk1pbGxpc0FzSXNvODYwMSh1bml0X3Rlc3Quc3RhcnRfdGltZXN0YW1wKCkpKTsKKyAgT3V0cHV0
WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0aW1lIiwKKyAgICAgICAgICAgICAg
ICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyh1bml0X3Rlc3QuZWxhcHNlZF90aW1l
KCkpKTsKKwogICBpZiAoR1RFU1RfRkxBRyhzaHVmZmxlKSkgewotICAgIGZwcmludGYob3V0LCAi
cmFuZG9tX3NlZWQ9XCIlZFwiICIsIHVuaXRfdGVzdC5yYW5kb21fc2VlZCgpKTsKKyAgICBPdXRw
dXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlcywgInJhbmRvbV9zZWVkIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5yYW5kb21fc2Vl
ZCgpKSk7CisgIH0KKyAgKnN0cmVhbSA8PCBUZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRlcyh1
bml0X3Rlc3QuYWRfaG9jX3Rlc3RfcmVzdWx0KCkpOworCisgIE91dHB1dFhtbEF0dHJpYnV0ZShz
dHJlYW0sIGtUZXN0c3VpdGVzLCAibmFtZSIsICJBbGxUZXN0cyIpOworICAqc3RyZWFtIDw8ICI+
XG4iOworCisgIGZvciAoaW50IGkgPSAwOyBpIDwgdW5pdF90ZXN0LnRvdGFsX3Rlc3RfY2FzZV9j
b3VudCgpOyArK2kpIHsKKyAgICBpZiAodW5pdF90ZXN0LkdldFRlc3RDYXNlKGkpLT5yZXBvcnRh
YmxlX3Rlc3RfY291bnQoKSA+IDApCisgICAgICBQcmludFhtbFRlc3RDYXNlKHN0cmVhbSwgKnVu
aXRfdGVzdC5HZXRUZXN0Q2FzZShpKSk7CiAgIH0KLSAgZnByaW50ZihvdXQsICJuYW1lPVwiQWxs
VGVzdHNcIj5cbiIpOwotICBmb3IgKGludCBpID0gMDsgaSA8IHVuaXRfdGVzdC50b3RhbF90ZXN0
X2Nhc2VfY291bnQoKTsgKytpKQotICAgIFByaW50WG1sVGVzdENhc2Uob3V0LCAqdW5pdF90ZXN0
LkdldFRlc3RDYXNlKGkpKTsKLSAgZnByaW50ZihvdXQsICI8L3Rlc3RzdWl0ZXM+XG4iKTsKKyAg
KnN0cmVhbSA8PCAiPC8iIDw8IGtUZXN0c3VpdGVzIDw8ICI+XG4iOworfQorCit2b2lkIFhtbFVu
aXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRYbWxUZXN0c0xpc3QoCisgICAgc3RkOjpvc3RyZWFt
KiBzdHJlYW0sIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMpIHsKKyAg
Y29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RzdWl0ZXMgPSAidGVzdHN1aXRlcyI7CisKKyAgKnN0cmVh
bSA8PCAiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIj8+XG4iOworICAq
c3RyZWFtIDw8ICI8IiA8PCBrVGVzdHN1aXRlczsKKworICBpbnQgdG90YWxfdGVzdHMgPSAwOwor
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXMuc2l6ZSgpOyArK2kpIHsKKyAgICB0
b3RhbF90ZXN0cyArPSB0ZXN0X2Nhc2VzW2ldLT50b3RhbF90ZXN0X2NvdW50KCk7CisgIH0KKyAg
T3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0ZXN0cyIsCisgICAgICAg
ICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodG90YWxfdGVzdHMpKTsKKyAgT3V0cHV0
WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJuYW1lIiwgIkFsbFRlc3RzIik7Cisg
ICpzdHJlYW0gPDwgIj5cbiI7CisKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0X2Nhc2Vz
LnNpemUoKTsgKytpKSB7CisgICAgUHJpbnRYbWxUZXN0Q2FzZShzdHJlYW0sICp0ZXN0X2Nhc2Vz
W2ldKTsKKyAgfQorICAqc3RyZWFtIDw8ICI8LyIgPDwga1Rlc3RzdWl0ZXMgPDwgIj5cbiI7CiB9
CiAKIC8vIFByb2R1Y2VzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdGVzdCBwcm9wZXJ0aWVz
IGluIGEgcmVzdWx0IGFzIHNwYWNlCiAvLyBkZWxpbWl0ZWQgWE1MIGF0dHJpYnV0ZXMgYmFzZWQg
b24gdGhlIHByb3BlcnR5IGtleT0idmFsdWUiIHBhaXJzLgotU3RyaW5nIFhtbFVuaXRUZXN0UmVz
dWx0UHJpbnRlcjo6VGVzdFByb3BlcnRpZXNBc1htbEF0dHJpYnV0ZXMoCitzdGQ6OnN0cmluZyBY
bWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKAog
ICAgIGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCkgewogICBNZXNzYWdlIGF0dHJpYnV0ZXM7CiAg
IGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKTsgKytpKSB7
CkBAIC0zMjk5LDUyICszODUxLDU2MiBAQCBTdHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVy
OjpUZXN0UHJvcGVydGllc0FzWG1sQXR0cmlidXRlcygKICAgcmV0dXJuIGF0dHJpYnV0ZXMuR2V0
U3RyaW5nKCk7CiB9CiAKK3ZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPdXRwdXRYbWxU
ZXN0UHJvcGVydGllcygKKyAgICBzdGQ6Om9zdHJlYW0qIHN0cmVhbSwgY29uc3QgVGVzdFJlc3Vs
dCYgcmVzdWx0KSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtQcm9wZXJ0aWVzID0gInByb3BlcnRp
ZXMiOworICBjb25zdCBzdGQ6OnN0cmluZyBrUHJvcGVydHkgPSAicHJvcGVydHkiOworCisgIGlm
IChyZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpIDw9IDApIHsKKyAgICByZXR1cm47CisgIH0K
KworICAqc3RyZWFtIDw8ICI8IiA8PCBrUHJvcGVydGllcyA8PCAiPlxuIjsKKyAgZm9yIChpbnQg
aSA9IDA7IGkgPCByZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpOyArK2kpIHsKKyAgICBjb25z
dCBUZXN0UHJvcGVydHkmIHByb3BlcnR5ID0gcmVzdWx0LkdldFRlc3RQcm9wZXJ0eShpKTsKKyAg
ICAqc3RyZWFtIDw8ICI8IiA8PCBrUHJvcGVydHk7CisgICAgKnN0cmVhbSA8PCAiIG5hbWU9XCIi
IDw8IEVzY2FwZVhtbEF0dHJpYnV0ZShwcm9wZXJ0eS5rZXkoKSkgPDwgIlwiIjsKKyAgICAqc3Ry
ZWFtIDw8ICIgdmFsdWU9XCIiIDw8IEVzY2FwZVhtbEF0dHJpYnV0ZShwcm9wZXJ0eS52YWx1ZSgp
KSA8PCAiXCIiOworICAgICpzdHJlYW0gPDwgIi8+XG4iOworICB9CisgICpzdHJlYW0gPDwgIjwv
IiA8PCBrUHJvcGVydGllcyA8PCAiPlxuIjsKK30KKwogLy8gRW5kIFhtbFVuaXRUZXN0UmVzdWx0
UHJpbnRlcgogCi0vLyBDbGFzcyBTY29wZWRUcmFjZQorLy8gVGhpcyBjbGFzcyBnZW5lcmF0ZXMg
YW4gSlNPTiBvdXRwdXQgZmlsZS4KK2NsYXNzIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIgOiBw
dWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CisgcHVibGljOgorICBleHBsaWNpdCBKc29u
VW5pdFRlc3RSZXN1bHRQcmludGVyKGNvbnN0IGNoYXIqIG91dHB1dF9maWxlKTsKIAotLy8gUHVz
aGVzIHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlvbiBhbmQgbWVzc2FnZSBvbnRvIGEgcGVy
LXRocmVhZAotLy8gdHJhY2Ugc3RhY2sgbWFpbnRhaW5lZCBieSBHb29nbGUgVGVzdC4KLS8vIEwg
PCBVbml0VGVzdDo6bXV0ZXhfCi1TY29wZWRUcmFjZTo6U2NvcGVkVHJhY2UoY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUsIGNvbnN0IE1lc3NhZ2UmIG1lc3NhZ2UpIHsKLSAgVHJhY2VJbmZvIHRy
YWNlOwotICB0cmFjZS5maWxlID0gZmlsZTsKLSAgdHJhY2UubGluZSA9IGxpbmU7Ci0gIHRyYWNl
Lm1lc3NhZ2UgPSBtZXNzYWdlLkdldFN0cmluZygpOworICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRl
cmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsIGludCBpdGVyYXRpb24pOwogCi0g
IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5QdXNoR1Rlc3RUcmFjZSh0cmFjZSk7CisgIC8vIFBy
aW50cyBhbiBKU09OIHN1bW1hcnkgb2YgYWxsIHVuaXQgdGVzdHMuCisgIHN0YXRpYyB2b2lkIFBy
aW50SnNvblRlc3RMaXN0KDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RDYXNlKj4mIHRlc3RfY2FzZXMp
OworCisgcHJpdmF0ZToKKyAgLy8gUmV0dXJucyBhbiBKU09OLWVzY2FwZWQgY29weSBvZiB0aGUg
aW5wdXQgc3RyaW5nIHN0ci4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEVzY2FwZUpzb24oY29uc3Qg
c3RkOjpzdHJpbmcmIHN0cik7CisKKyAgLy8vLyBWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBhdHRy
aWJ1dGUgYmVsb25ncyB0byB0aGUgZ2l2ZW4gZWxlbWVudCBhbmQKKyAgLy8vLyBzdHJlYW1zIHRo
ZSBhdHRyaWJ1dGUgYXMgSlNPTi4KKyAgc3RhdGljIHZvaWQgT3V0cHV0SnNvbktleShzdGQ6Om9z
dHJlYW0qIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgZWxlbWVudF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgaW5kZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29tbWEgPSB0
cnVlKTsKKyAgc3RhdGljIHZvaWQgT3V0cHV0SnNvbktleShzdGQ6Om9zdHJlYW0qIHN0cmVhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZWxlbWVudF9u
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5kZW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgY29tbWEgPSB0cnVlKTsKKworICAvLyBTdHJlYW1zIGEgSlNPTiBy
ZXByZXNlbnRhdGlvbiBvZiBhIFRlc3RJbmZvIG9iamVjdC4KKyAgc3RhdGljIHZvaWQgT3V0cHV0
SnNvblRlc3RJbmZvKDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pOworCisgIC8vIFBy
aW50cyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgYSBUZXN0Q2FzZSBvYmplY3QKKyAgc3RhdGlj
IHZvaWQgUHJpbnRKc29uVGVzdENhc2UoOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSk7CisKKyAg
Ly8gUHJpbnRzIGEgSlNPTiBzdW1tYXJ5IG9mIHVuaXRfdGVzdCB0byBvdXRwdXQgc3RyZWFtIG91
dC4KKyAgc3RhdGljIHZvaWQgUHJpbnRKc29uVW5pdFRlc3QoOjpzdGQ6Om9zdHJlYW0qIHN0cmVh
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pdFRlc3QmIHVuaXRf
dGVzdCk7CisKKyAgLy8gUHJvZHVjZXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0ZXN0IHBy
b3BlcnRpZXMgaW4gYSByZXN1bHQgYXMKKyAgLy8gYSBKU09OIGRpY3Rpb25hcnkuCisgIHN0YXRp
YyBzdGQ6OnN0cmluZyBUZXN0UHJvcGVydGllc0FzSnNvbihjb25zdCBUZXN0UmVzdWx0JiByZXN1
bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgaW5kZW50KTsKKworICAvLyBUaGUgb3V0cHV0IGZpbGUuCisgIGNvbnN0IHN0ZDo6
c3RyaW5nIG91dHB1dF9maWxlXzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05f
KEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIpOworfTsKKworLy8gQ3JlYXRlcyBhIG5ldyBKc29u
VW5pdFRlc3RSZXN1bHRQcmludGVyLgorSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6SnNvblVu
aXRUZXN0UmVzdWx0UHJpbnRlcihjb25zdCBjaGFyKiBvdXRwdXRfZmlsZSkKKyAgICA6IG91dHB1
dF9maWxlXyhvdXRwdXRfZmlsZSkgeworICBpZiAob3V0cHV0X2ZpbGVfLmVtcHR5KCkpIHsKKyAg
ICBHVEVTVF9MT0dfKEZBVEFMKSA8PCAiSlNPTiBvdXRwdXQgZmlsZSBtYXkgbm90IGJlIG51bGwi
OworICB9CiB9CiAKLS8vIFBvcHMgdGhlIGluZm8gcHVzaGVkIGJ5IHRoZSBjJ3Rvci4KLS8vIEwg
PCBVbml0VGVzdDo6bXV0ZXhfCi1TY29wZWRUcmFjZTo6flNjb3BlZFRyYWNlKCkgewotICBVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+UG9wR1Rlc3RUcmFjZSgpOwordm9pZCBKc29uVW5pdFRlc3RS
ZXN1bHRQcmludGVyOjpPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IC8qaXRlcmF0aW9uKi8pIHsKKyAgRklMRSoganNvbm91dCA9IE9wZW5GaWxlRm9yV3JpdGluZyhv
dXRwdXRfZmlsZV8pOworICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07CisgIFByaW50SnNvblVu
aXRUZXN0KCZzdHJlYW0sIHVuaXRfdGVzdCk7CisgIGZwcmludGYoanNvbm91dCwgIiVzIiwgU3Ry
aW5nU3RyZWFtVG9TdHJpbmcoJnN0cmVhbSkuY19zdHIoKSk7CisgIGZjbG9zZShqc29ub3V0KTsK
IH0KIAorLy8gUmV0dXJucyBhbiBKU09OLWVzY2FwZWQgY29weSBvZiB0aGUgaW5wdXQgc3RyaW5n
IHN0ci4KK3N0ZDo6c3RyaW5nIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6OkVzY2FwZUpzb24o
Y29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgeworICBNZXNzYWdlIG07CiAKLS8vIGNsYXNzIE9zU3Rh
Y2tUcmFjZUdldHRlcgorICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ci5zaXplKCk7ICsraSkg
eworICAgIGNvbnN0IGNoYXIgY2ggPSBzdHJbaV07CisgICAgc3dpdGNoIChjaCkgeworICAgICAg
Y2FzZSAnXFwnOgorICAgICAgY2FzZSAnIic6CisgICAgICBjYXNlICcvJzoKKyAgICAgICAgbSA8
PCAnXFwnIDw8IGNoOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ1xiJzoKKyAgICAgICAg
bSA8PCAiXFxiIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdcdCc6CisgICAgICAgIG0g
PDwgIlxcdCI7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnXG4nOgorICAgICAgICBtIDw8
ICJcXG4iOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ1xmJzoKKyAgICAgICAgbSA8PCAi
XFxmIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdccic6CisgICAgICAgIG0gPDwgIlxc
ciI7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKGNoIDwgJyAn
KSB7CisgICAgICAgICAgbSA8PCAiXFx1MDAiIDw8IFN0cmluZzo6Rm9ybWF0Qnl0ZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIG0g
PDwgY2g7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICB9CiAKLS8vIFJldHVy
bnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYSBTdHJpbmcuICBQYXJhbWV0ZXJzOgot
Ly8KLS8vICAgbWF4X2RlcHRoICAtIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMg
dG8gYmUgaW5jbHVkZWQKLS8vICAgICAgICAgICAgICAgIGluIHRoZSB0cmFjZS4KLS8vICAgc2tp
cF9jb3VudCAtIHRoZSBudW1iZXIgb2YgdG9wIGZyYW1lcyB0byBiZSBza2lwcGVkOyBkb2Vzbid0
IGNvdW50Ci0vLyAgICAgICAgICAgICAgICBhZ2FpbnN0IG1heF9kZXB0aC4KLS8vCi0vLyBMIDwg
bXV0ZXhfCi0vLyBXZSB1c2UgIkwgPCBtdXRleF8iIHRvIGRlbm90ZSB0aGF0IHRoZSBmdW5jdGlv
biBtYXkgYWNxdWlyZSBtdXRleF8uCi1TdHJpbmcgT3NTdGFja1RyYWNlR2V0dGVyOjpDdXJyZW50
U3RhY2tUcmFjZShpbnQsIGludCkgewotICByZXR1cm4gU3RyaW5nKCIiKTsKKyAgcmV0dXJuIG0u
R2V0U3RyaW5nKCk7CiB9CiAKLS8vIEwgPCBtdXRleF8KLXZvaWQgT3NTdGFja1RyYWNlR2V0dGVy
OjpVcG9uTGVhdmluZ0dUZXN0KCkgeworLy8gVGhlIGZvbGxvd2luZyByb3V0aW5lcyBnZW5lcmF0
ZSBhbiBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgVW5pdFRlc3QKKy8vIG9iamVjdC4KKworLy8g
Rm9ybWF0cyB0aGUgZ2l2ZW4gdGltZSBpbiBtaWxsaXNlY29uZHMgYXMgc2Vjb25kcy4KK3N0YXRp
YyBzdGQ6OnN0cmluZyBGb3JtYXRUaW1lSW5NaWxsaXNBc0R1cmF0aW9uKFRpbWVJbk1pbGxpcyBt
cykgeworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOworICBzcyA8PCAoc3RhdGljX2Nhc3Q8ZG91
YmxlPihtcykgKiAxZS0zKSA8PCAicyI7CisgIHJldHVybiBzcy5zdHIoKTsKIH0KIAotY29uc3Qg
Y2hhciogY29uc3QKLU9zU3RhY2tUcmFjZUdldHRlcjo6a0VsaWRlZEZyYW1lc01hcmtlciA9Cisv
LyBDb252ZXJ0cyB0aGUgZ2l2ZW4gZXBvY2ggdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gYSBkYXRl
IHN0cmluZyBpbiB0aGUKKy8vIFJGQzMzMzkgZm9ybWF0LCB3aXRob3V0IHRoZSB0aW1lem9uZSBp
bmZvcm1hdGlvbi4KK3N0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0Fz
UkZDMzMzOShUaW1lSW5NaWxsaXMgbXMpIHsKKyAgc3RydWN0IHRtIHRpbWVfc3RydWN0OworICBp
ZiAoIVBvcnRhYmxlTG9jYWx0aW1lKHN0YXRpY19jYXN0PHRpbWVfdD4obXMgLyAxMDAwKSwgJnRp
bWVfc3RydWN0KSkKKyAgICByZXR1cm4gIiI7CisgIC8vIFlZWVktTU0tRERUaGg6bW06c3MKKyAg
cmV0dXJuIFN0cmVhbWFibGVUb1N0cmluZyh0aW1lX3N0cnVjdC50bV95ZWFyICsgMTkwMCkgKyAi
LSIgKworICAgICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1fbW9uICsg
MSkgKyAiLSIgKworICAgICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1f
bWRheSkgKyAiVCIgKworICAgICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3Qu
dG1faG91cikgKyAiOiIgKworICAgICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1
Y3QudG1fbWluKSArICI6IiArCisgICAgICBTdHJpbmc6OkZvcm1hdEludFdpZHRoMih0aW1lX3N0
cnVjdC50bV9zZWMpICsgIloiOworfQorCitzdGF0aWMgaW5saW5lIHN0ZDo6c3RyaW5nIEluZGVu
dChpbnQgd2lkdGgpIHsKKyAgcmV0dXJuIHN0ZDo6c3RyaW5nKHdpZHRoLCAnICcpOworfQorCit2
b2lkIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dEpzb25LZXkoCisgICAgc3RkOjpv
c3RyZWFtKiBzdHJlYW0sCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGVsZW1lbnRfbmFtZSwKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUs
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGluZGVudCwKKyAgICBib29sIGNvbW1hKSB7CisgIGNv
bnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgYWxsb3dlZF9uYW1lcyA9CisgICAgICBHZXRS
ZXNlcnZlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KGVsZW1lbnRfbmFtZSk7CisKKyAgR1RFU1RfQ0hF
Q0tfKHN0ZDo6ZmluZChhbGxvd2VkX25hbWVzLmJlZ2luKCksIGFsbG93ZWRfbmFtZXMuZW5kKCks
IG5hbWUpICE9CisgICAgICAgICAgICAgICAgICAgYWxsb3dlZF9uYW1lcy5lbmQoKSkKKyAgICAg
IDw8ICJLZXkgXCIiIDw8IG5hbWUgPDwgIlwiIGlzIG5vdCBhbGxvd2VkIGZvciB2YWx1ZSBcIiIg
PDwgZWxlbWVudF9uYW1lCisgICAgICA8PCAiXCIuIjsKKworICAqc3RyZWFtIDw8IGluZGVudCA8
PCAiXCIiIDw8IG5hbWUgPDwgIlwiOiBcIiIgPDwgRXNjYXBlSnNvbih2YWx1ZSkgPDwgIlwiIjsK
KyAgaWYgKGNvbW1hKQorICAgICpzdHJlYW0gPDwgIixcbiI7Cit9CisKK3ZvaWQgSnNvblVuaXRU
ZXN0UmVzdWx0UHJpbnRlcjo6T3V0cHV0SnNvbktleSgKKyAgICBzdGQ6Om9zdHJlYW0qIHN0cmVh
bSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZWxlbWVudF9uYW1lLAorICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBuYW1lLAorICAgIGludCB2YWx1ZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5k
ZW50LAorICAgIGJvb2wgY29tbWEpIHsKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
JiBhbGxvd2VkX25hbWVzID0KKyAgICAgIEdldFJlc2VydmVkQXR0cmlidXRlc0ZvckVsZW1lbnQo
ZWxlbWVudF9uYW1lKTsKKworICBHVEVTVF9DSEVDS18oc3RkOjpmaW5kKGFsbG93ZWRfbmFtZXMu
YmVnaW4oKSwgYWxsb3dlZF9uYW1lcy5lbmQoKSwgbmFtZSkgIT0KKyAgICAgICAgICAgICAgICAg
ICBhbGxvd2VkX25hbWVzLmVuZCgpKQorICAgICAgPDwgIktleSBcIiIgPDwgbmFtZSA8PCAiXCIg
aXMgbm90IGFsbG93ZWQgZm9yIHZhbHVlIFwiIiA8PCBlbGVtZW50X25hbWUKKyAgICAgIDw8ICJc
Ii4iOworCisgICpzdHJlYW0gPDwgaW5kZW50IDw8ICJcIiIgPDwgbmFtZSA8PCAiXCI6ICIgPDwg
U3RyZWFtYWJsZVRvU3RyaW5nKHZhbHVlKTsKKyAgaWYgKGNvbW1hKQorICAgICpzdHJlYW0gPDwg
IixcbiI7Cit9CisKKy8vIFByaW50cyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgYSBUZXN0SW5m
byBvYmplY3QuCit2b2lkIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dEpzb25UZXN0
SW5mbyg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0
SW5mbyYgdGVzdF9pbmZvKSB7CisgIGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCA9ICp0ZXN0X2lu
Zm8ucmVzdWx0KCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0Y2FzZSA9ICJ0ZXN0Y2FzZSI7
CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtJbmRlbnQgPSBJbmRlbnQoMTApOworCisgICpzdHJlYW0g
PDwgSW5kZW50KDgpIDw8ICJ7XG4iOworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RjYXNl
LCAibmFtZSIsIHRlc3RfaW5mby5uYW1lKCksIGtJbmRlbnQpOworCisgIGlmICh0ZXN0X2luZm8u
dmFsdWVfcGFyYW0oKSAhPSBOVUxMKSB7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0
Y2FzZSwgInZhbHVlX3BhcmFtIiwKKyAgICAgICAgICAgICAgICAgIHRlc3RfaW5mby52YWx1ZV9w
YXJhbSgpLCBrSW5kZW50KTsKKyAgfQorICBpZiAodGVzdF9pbmZvLnR5cGVfcGFyYW0oKSAhPSBO
VUxMKSB7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0Y2FzZSwgInR5cGVfcGFyYW0i
LCB0ZXN0X2luZm8udHlwZV9wYXJhbSgpLAorICAgICAgICAgICAgICAgICAga0luZGVudCk7Cisg
IH0KKyAgaWYgKEdURVNUX0ZMQUcobGlzdF90ZXN0cykpIHsKKyAgICBPdXRwdXRKc29uS2V5KHN0
cmVhbSwga1Rlc3RjYXNlLCAiZmlsZSIsIHRlc3RfaW5mby5maWxlKCksIGtJbmRlbnQpOworICAg
IE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdGNhc2UsICJsaW5lIiwgdGVzdF9pbmZvLmxpbmUo
KSwga0luZGVudCwgZmFsc2UpOworICAgICpzdHJlYW0gPDwgIlxuIiA8PCBJbmRlbnQoOCkgPDwg
In0iOworICAgIHJldHVybjsKKyAgfQorCisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdGNh
c2UsICJzdGF0dXMiLAorICAgICAgICAgICAgICAgIHRlc3RfaW5mby5zaG91bGRfcnVuKCkgPyAi
UlVOIiA6ICJOT1RSVU4iLCBrSW5kZW50KTsKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0
Y2FzZSwgInRpbWUiLAorICAgICAgICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzRHVyYXRp
b24ocmVzdWx0LmVsYXBzZWRfdGltZSgpKSwga0luZGVudCk7CisgIE91dHB1dEpzb25LZXkoc3Ry
ZWFtLCBrVGVzdGNhc2UsICJjbGFzc25hbWUiLCB0ZXN0X2Nhc2VfbmFtZSwga0luZGVudCwgZmFs
c2UpOworICAqc3RyZWFtIDw8IFRlc3RQcm9wZXJ0aWVzQXNKc29uKHJlc3VsdCwga0luZGVudCk7
CisKKyAgaW50IGZhaWx1cmVzID0gMDsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHQudG90
YWxfcGFydF9jb3VudCgpOyArK2kpIHsKKyAgICBjb25zdCBUZXN0UGFydFJlc3VsdCYgcGFydCA9
IHJlc3VsdC5HZXRUZXN0UGFydFJlc3VsdChpKTsKKyAgICBpZiAocGFydC5mYWlsZWQoKSkgewor
ICAgICAgKnN0cmVhbSA8PCAiLFxuIjsKKyAgICAgIGlmICgrK2ZhaWx1cmVzID09IDEpIHsKKyAg
ICAgICAgKnN0cmVhbSA8PCBrSW5kZW50IDw8ICJcIiIgPDwgImZhaWx1cmVzIiA8PCAiXCI6IFtc
biI7CisgICAgICB9CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyBsb2NhdGlvbiA9CisgICAgICAg
ICAgaW50ZXJuYWw6OkZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24ocGFydC5m
aWxlX25hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJ0LmxpbmVfbnVtYmVyKCkpOworICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgbWVzc2FnZSA9IEVzY2FwZUpzb24obG9jYXRpb24gKyAiXG4iICsgcGFydC5tZXNzYWdlKCkp
OworICAgICAgKnN0cmVhbSA8PCBrSW5kZW50IDw8ICIgIHtcbiIKKyAgICAgICAgICAgICAgPDwg
a0luZGVudCA8PCAiICAgIFwiZmFpbHVyZVwiOiBcIiIgPDwgbWVzc2FnZSA8PCAiXCIsXG4iCisg
ICAgICAgICAgICAgIDw8IGtJbmRlbnQgPDwgIiAgICBcInR5cGVcIjogXCJcIlxuIgorICAgICAg
ICAgICAgICA8PCBrSW5kZW50IDw8ICIgIH0iOworICAgIH0KKyAgfQorCisgIGlmIChmYWlsdXJl
cyA+IDApCisgICAgKnN0cmVhbSA8PCAiXG4iIDw8IGtJbmRlbnQgPDwgIl0iOworICAqc3RyZWFt
IDw8ICJcbiIgPDwgSW5kZW50KDgpIDw8ICJ9IjsKK30KKworLy8gUHJpbnRzIGFuIEpTT04gcmVw
cmVzZW50YXRpb24gb2YgYSBUZXN0Q2FzZSBvYmplY3QKK3ZvaWQgSnNvblVuaXRUZXN0UmVzdWx0
UHJpbnRlcjo6UHJpbnRKc29uVGVzdENhc2Uoc3RkOjpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RDYXNl
JiB0ZXN0X2Nhc2UpIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RzdWl0ZSA9ICJ0ZXN0c3Vp
dGUiOworICBjb25zdCBzdGQ6OnN0cmluZyBrSW5kZW50ID0gSW5kZW50KDYpOworCisgICpzdHJl
YW0gPDwgSW5kZW50KDQpIDw8ICJ7XG4iOworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3Rz
dWl0ZSwgIm5hbWUiLCB0ZXN0X2Nhc2UubmFtZSgpLCBrSW5kZW50KTsKKyAgT3V0cHV0SnNvbktl
eShzdHJlYW0sIGtUZXN0c3VpdGUsICJ0ZXN0cyIsIHRlc3RfY2FzZS5yZXBvcnRhYmxlX3Rlc3Rf
Y291bnQoKSwKKyAgICAgICAgICAgICAgICBrSW5kZW50KTsKKyAgaWYgKCFHVEVTVF9GTEFHKGxp
c3RfdGVzdHMpKSB7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGUsICJmYWls
dXJlcyIsIHRlc3RfY2FzZS5mYWlsZWRfdGVzdF9jb3VudCgpLAorICAgICAgICAgICAgICAgICAg
a0luZGVudCk7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGUsICJkaXNhYmxl
ZCIsCisgICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2UucmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0
X2NvdW50KCksIGtJbmRlbnQpOworICAgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVzdHN1aXRl
LCAiZXJyb3JzIiwgMCwga0luZGVudCk7CisgICAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0
c3VpdGUsICJ0aW1lIiwKKyAgICAgICAgICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzRHVy
YXRpb24odGVzdF9jYXNlLmVsYXBzZWRfdGltZSgpKSwKKyAgICAgICAgICAgICAgICAgIGtJbmRl
bnQsIGZhbHNlKTsKKyAgICAqc3RyZWFtIDw8IFRlc3RQcm9wZXJ0aWVzQXNKc29uKHRlc3RfY2Fz
ZS5hZF9ob2NfdGVzdF9yZXN1bHQoKSwga0luZGVudCkKKyAgICAgICAgICAgIDw8ICIsXG4iOwor
ICB9CisKKyAgKnN0cmVhbSA8PCBrSW5kZW50IDw8ICJcIiIgPDwga1Rlc3RzdWl0ZSA8PCAiXCI6
IFtcbiI7CisKKyAgYm9vbCBjb21tYSA9IGZhbHNlOworICBmb3IgKGludCBpID0gMDsgaSA8IHRl
c3RfY2FzZS50b3RhbF90ZXN0X2NvdW50KCk7ICsraSkgeworICAgIGlmICh0ZXN0X2Nhc2UuR2V0
VGVzdEluZm8oaSktPmlzX3JlcG9ydGFibGUoKSkgeworICAgICAgaWYgKGNvbW1hKSB7CisgICAg
ICAgICpzdHJlYW0gPDwgIixcbiI7CisgICAgICB9IGVsc2UgeworICAgICAgICBjb21tYSA9IHRy
dWU7CisgICAgICB9CisgICAgICBPdXRwdXRKc29uVGVzdEluZm8oc3RyZWFtLCB0ZXN0X2Nhc2Uu
bmFtZSgpLCAqdGVzdF9jYXNlLkdldFRlc3RJbmZvKGkpKTsKKyAgICB9CisgIH0KKyAgKnN0cmVh
bSA8PCAiXG4iIDw8IGtJbmRlbnQgPDwgIl1cbiIgPDwgSW5kZW50KDQpIDw8ICJ9IjsKK30KKwor
Ly8gUHJpbnRzIGEgSlNPTiBzdW1tYXJ5IG9mIHVuaXRfdGVzdCB0byBvdXRwdXQgc3RyZWFtIG91
dC4KK3ZvaWQgSnNvblVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRKc29uVW5pdFRlc3Qoc3Rk
Ojpvc3RyZWFtKiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpIHsKKyAgY29uc3Qgc3RkOjpz
dHJpbmcga1Rlc3RzdWl0ZXMgPSAidGVzdHN1aXRlcyI7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtJ
bmRlbnQgPSBJbmRlbnQoMik7CisgICpzdHJlYW0gPDwgIntcbiI7CisKKyAgT3V0cHV0SnNvbktl
eShzdHJlYW0sIGtUZXN0c3VpdGVzLCAidGVzdHMiLCB1bml0X3Rlc3QucmVwb3J0YWJsZV90ZXN0
X2NvdW50KCksCisgICAgICAgICAgICAgICAga0luZGVudCk7CisgIE91dHB1dEpzb25LZXkoc3Ry
ZWFtLCBrVGVzdHN1aXRlcywgImZhaWx1cmVzIiwgdW5pdF90ZXN0LmZhaWxlZF90ZXN0X2NvdW50
KCksCisgICAgICAgICAgICAgICAga0luZGVudCk7CisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBr
VGVzdHN1aXRlcywgImRpc2FibGVkIiwKKyAgICAgICAgICAgICAgICB1bml0X3Rlc3QucmVwb3J0
YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCksIGtJbmRlbnQpOworICBPdXRwdXRKc29uS2V5KHN0
cmVhbSwga1Rlc3RzdWl0ZXMsICJlcnJvcnMiLCAwLCBrSW5kZW50KTsKKyAgaWYgKEdURVNUX0ZM
QUcoc2h1ZmZsZSkpIHsKKyAgICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJy
YW5kb21fc2VlZCIsIHVuaXRfdGVzdC5yYW5kb21fc2VlZCgpLAorICAgICAgICAgICAgICAgICAg
a0luZGVudCk7CisgIH0KKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAidGlt
ZXN0YW1wIiwKKyAgICAgICAgICAgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzUkZDMzMz
OSh1bml0X3Rlc3Quc3RhcnRfdGltZXN0YW1wKCkpLAorICAgICAgICAgICAgICAgIGtJbmRlbnQp
OworICBPdXRwdXRKc29uS2V5KHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0aW1lIiwKKyAgICAgICAg
ICAgICAgICBGb3JtYXRUaW1lSW5NaWxsaXNBc0R1cmF0aW9uKHVuaXRfdGVzdC5lbGFwc2VkX3Rp
bWUoKSksIGtJbmRlbnQsCisgICAgICAgICAgICAgICAgZmFsc2UpOworCisgICpzdHJlYW0gPDwg
VGVzdFByb3BlcnRpZXNBc0pzb24odW5pdF90ZXN0LmFkX2hvY190ZXN0X3Jlc3VsdCgpLCBrSW5k
ZW50KQorICAgICAgICAgIDw8ICIsXG4iOworCisgIE91dHB1dEpzb25LZXkoc3RyZWFtLCBrVGVz
dHN1aXRlcywgIm5hbWUiLCAiQWxsVGVzdHMiLCBrSW5kZW50KTsKKyAgKnN0cmVhbSA8PCBrSW5k
ZW50IDw8ICJcIiIgPDwga1Rlc3RzdWl0ZXMgPDwgIlwiOiBbXG4iOworCisgIGJvb2wgY29tbWEg
PSBmYWxzZTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCB1bml0X3Rlc3QudG90YWxfdGVzdF9jYXNl
X2NvdW50KCk7ICsraSkgeworICAgIGlmICh1bml0X3Rlc3QuR2V0VGVzdENhc2UoaSktPnJlcG9y
dGFibGVfdGVzdF9jb3VudCgpID4gMCkgeworICAgICAgaWYgKGNvbW1hKSB7CisgICAgICAgICpz
dHJlYW0gPDwgIixcbiI7CisgICAgICB9IGVsc2UgeworICAgICAgICBjb21tYSA9IHRydWU7Cisg
ICAgICB9CisgICAgICBQcmludEpzb25UZXN0Q2FzZShzdHJlYW0sICp1bml0X3Rlc3QuR2V0VGVz
dENhc2UoaSkpOworICAgIH0KKyAgfQorCisgICpzdHJlYW0gPDwgIlxuIiA8PCBrSW5kZW50IDw8
ICJdXG4iIDw8ICJ9XG4iOworfQorCit2b2lkIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXI6OlBy
aW50SnNvblRlc3RMaXN0KAorICAgIHN0ZDo6b3N0cmVhbSogc3RyZWFtLCBjb25zdCBzdGQ6OnZl
Y3RvcjxUZXN0Q2FzZSo+JiB0ZXN0X2Nhc2VzKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0
c3VpdGVzID0gInRlc3RzdWl0ZXMiOworICBjb25zdCBzdGQ6OnN0cmluZyBrSW5kZW50ID0gSW5k
ZW50KDIpOworICAqc3RyZWFtIDw8ICJ7XG4iOworICBpbnQgdG90YWxfdGVzdHMgPSAwOworICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXMuc2l6ZSgpOyArK2kpIHsKKyAgICB0b3Rh
bF90ZXN0cyArPSB0ZXN0X2Nhc2VzW2ldLT50b3RhbF90ZXN0X2NvdW50KCk7CisgIH0KKyAgT3V0
cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAidGVzdHMiLCB0b3RhbF90ZXN0cywga0lu
ZGVudCk7CisKKyAgT3V0cHV0SnNvbktleShzdHJlYW0sIGtUZXN0c3VpdGVzLCAibmFtZSIsICJB
bGxUZXN0cyIsIGtJbmRlbnQpOworICAqc3RyZWFtIDw8IGtJbmRlbnQgPDwgIlwiIiA8PCBrVGVz
dHN1aXRlcyA8PCAiXCI6IFtcbiI7CisKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXN0X2Nh
c2VzLnNpemUoKTsgKytpKSB7CisgICAgaWYgKGkgIT0gMCkgeworICAgICAgKnN0cmVhbSA8PCAi
LFxuIjsKKyAgICB9CisgICAgUHJpbnRKc29uVGVzdENhc2Uoc3RyZWFtLCAqdGVzdF9jYXNlc1tp
XSk7CisgIH0KKworICAqc3RyZWFtIDw8ICJcbiIKKyAgICAgICAgICA8PCBrSW5kZW50IDw8ICJd
XG4iCisgICAgICAgICAgPDwgIn1cbiI7Cit9CisvLyBQcm9kdWNlcyBhIHN0cmluZyByZXByZXNl
bnRpbmcgdGhlIHRlc3QgcHJvcGVydGllcyBpbiBhIHJlc3VsdCBhcworLy8gYSBKU09OIGRpY3Rp
b25hcnkuCitzdGQ6OnN0cmluZyBKc29uVW5pdFRlc3RSZXN1bHRQcmludGVyOjpUZXN0UHJvcGVy
dGllc0FzSnNvbigKKyAgICBjb25zdCBUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBpbmRlbnQpIHsKKyAgTWVzc2FnZSBhdHRyaWJ1dGVzOworICBmb3IgKGludCBpID0gMDsg
aSA8IHJlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCk7ICsraSkgeworICAgIGNvbnN0IFRlc3RQ
cm9wZXJ0eSYgcHJvcGVydHkgPSByZXN1bHQuR2V0VGVzdFByb3BlcnR5KGkpOworICAgIGF0dHJp
YnV0ZXMgPDwgIixcbiIgPDwgaW5kZW50IDw8ICJcIiIgPDwgcHJvcGVydHkua2V5KCkgPDwgIlwi
OiAiCisgICAgICAgICAgICAgICA8PCAiXCIiIDw8IEVzY2FwZUpzb24ocHJvcGVydHkudmFsdWUo
KSkgPDwgIlwiIjsKKyAgfQorICByZXR1cm4gYXR0cmlidXRlcy5HZXRTdHJpbmcoKTsKK30KKwor
Ly8gRW5kIEpzb25Vbml0VGVzdFJlc3VsdFByaW50ZXIKKworI2lmIEdURVNUX0NBTl9TVFJFQU1f
UkVTVUxUU18KKworLy8gQ2hlY2tzIGlmIHN0ciBjb250YWlucyAnPScsICcmJywgJyUnIG9yICdc
bicgY2hhcmFjdGVycy4gSWYgeWVzLAorLy8gcmVwbGFjZXMgdGhlbSBieSAiJXh4IiB3aGVyZSB4
eCBpcyB0aGVpciBoZXhhZGVjaW1hbCB2YWx1ZS4gRm9yCisvLyBleGFtcGxlLCByZXBsYWNlcyAi
PSIgd2l0aCAiJTNEIi4gIFRoaXMgYWxnb3JpdGhtIGlzIE8oc3RybGVuKHN0cikpCisvLyBpbiBi
b3RoIHRpbWUgYW5kIHNwYWNlIC0tIGltcG9ydGFudCBhcyB0aGUgaW5wdXQgc3RyIG1heSBjb250
YWluIGFuCisvLyBhcmJpdHJhcmlseSBsb25nIHRlc3QgZmFpbHVyZSBtZXNzYWdlIGFuZCBzdGFj
ayB0cmFjZS4KK3N0ZDo6c3RyaW5nIFN0cmVhbWluZ0xpc3RlbmVyOjpVcmxFbmNvZGUoY29uc3Qg
Y2hhciogc3RyKSB7CisgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKKyAgcmVzdWx0LnJlc2VydmUoc3Ry
bGVuKHN0cikgKyAxKTsKKyAgZm9yIChjaGFyIGNoID0gKnN0cjsgY2ggIT0gJ1wwJzsgY2ggPSAq
KytzdHIpIHsKKyAgICBzd2l0Y2ggKGNoKSB7CisgICAgICBjYXNlICclJzoKKyAgICAgIGNhc2Ug
Jz0nOgorICAgICAgY2FzZSAnJic6CisgICAgICBjYXNlICdcbic6CisgICAgICAgIHJlc3VsdC5h
cHBlbmQoIiUiICsgU3RyaW5nOjpGb3JtYXRCeXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KGNoKSkpOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJlc3VsdC5w
dXNoX2JhY2soY2gpOworICAgICAgICBicmVhazsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3Vs
dDsKK30KKwordm9pZCBTdHJlYW1pbmdMaXN0ZW5lcjo6U29ja2V0V3JpdGVyOjpNYWtlQ29ubmVj
dGlvbigpIHsKKyAgR1RFU1RfQ0hFQ0tfKHNvY2tmZF8gPT0gLTEpCisgICAgICA8PCAiTWFrZUNv
bm5lY3Rpb24oKSBjYW4ndCBiZSBjYWxsZWQgd2hlbiB0aGVyZSBpcyBhbHJlYWR5IGEgY29ubmVj
dGlvbi4iOworCisgIGFkZHJpbmZvIGhpbnRzOworICBtZW1zZXQoJmhpbnRzLCAwLCBzaXplb2Yo
aGludHMpKTsKKyAgaGludHMuYWlfZmFtaWx5ID0gQUZfVU5TUEVDOyAgICAvLyBUbyBhbGxvdyBi
b3RoIElQdjQgYW5kIElQdjYgYWRkcmVzc2VzLgorICBoaW50cy5haV9zb2NrdHlwZSA9IFNPQ0tf
U1RSRUFNOworICBhZGRyaW5mbyogc2VydmluZm8gPSBOVUxMOworCisgIC8vIFVzZSB0aGUgZ2V0
YWRkcmluZm8oKSB0byBnZXQgYSBsaW5rZWQgbGlzdCBvZiBJUCBhZGRyZXNzZXMgZm9yCisgIC8v
IHRoZSBnaXZlbiBob3N0IG5hbWUuCisgIGNvbnN0IGludCBlcnJvcl9udW0gPSBnZXRhZGRyaW5m
bygKKyAgICAgIGhvc3RfbmFtZV8uY19zdHIoKSwgcG9ydF9udW1fLmNfc3RyKCksICZoaW50cywg
JnNlcnZpbmZvKTsKKyAgaWYgKGVycm9yX251bSAhPSAwKSB7CisgICAgR1RFU1RfTE9HXyhXQVJO
SU5HKSA8PCAic3RyZWFtX3Jlc3VsdF90bzogZ2V0YWRkcmluZm8oKSBmYWlsZWQ6ICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IGdhaV9zdHJlcnJvcihlcnJvcl9udW0pOworICB9CisKKyAg
Ly8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgcmVzdWx0cyBhbmQgY29ubmVjdCB0byB0aGUgZmlyc3Qg
d2UgY2FuLgorICBmb3IgKGFkZHJpbmZvKiBjdXJfYWRkciA9IHNlcnZpbmZvOyBzb2NrZmRfID09
IC0xICYmIGN1cl9hZGRyICE9IE5VTEw7CisgICAgICAgY3VyX2FkZHIgPSBjdXJfYWRkci0+YWlf
bmV4dCkgeworICAgIHNvY2tmZF8gPSBzb2NrZXQoCisgICAgICAgIGN1cl9hZGRyLT5haV9mYW1p
bHksIGN1cl9hZGRyLT5haV9zb2NrdHlwZSwgY3VyX2FkZHItPmFpX3Byb3RvY29sKTsKKyAgICBp
ZiAoc29ja2ZkXyAhPSAtMSkgeworICAgICAgLy8gQ29ubmVjdCB0aGUgY2xpZW50IHNvY2tldCB0
byB0aGUgc2VydmVyIHNvY2tldC4KKyAgICAgIGlmIChjb25uZWN0KHNvY2tmZF8sIGN1cl9hZGRy
LT5haV9hZGRyLCBjdXJfYWRkci0+YWlfYWRkcmxlbikgPT0gLTEpIHsKKyAgICAgICAgY2xvc2Uo
c29ja2ZkXyk7CisgICAgICAgIHNvY2tmZF8gPSAtMTsKKyAgICAgIH0KKyAgICB9CisgIH0KKwor
ICBmcmVlYWRkcmluZm8oc2VydmluZm8pOyAgLy8gYWxsIGRvbmUgd2l0aCB0aGlzIHN0cnVjdHVy
ZQorCisgIGlmIChzb2NrZmRfID09IC0xKSB7CisgICAgR1RFU1RfTE9HXyhXQVJOSU5HKSA8PCAi
c3RyZWFtX3Jlc3VsdF90bzogZmFpbGVkIHRvIGNvbm5lY3QgdG8gIgorICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgaG9zdF9uYW1lXyA8PCAiOiIgPDwgcG9ydF9udW1fOworICB9Cit9CisKKy8v
IEVuZCBvZiBjbGFzcyBTdHJlYW1pbmcgTGlzdGVuZXIKKyNlbmRpZiAgLy8gR1RFU1RfQ0FOX1NU
UkVBTV9SRVNVTFRTX18KKworLy8gY2xhc3MgT3NTdGFja1RyYWNlR2V0dGVyCisKK2NvbnN0IGNo
YXIqIGNvbnN0IE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZTo6a0VsaWRlZEZyYW1lc01hcmtl
ciA9CiAgICAgIi4uLiAiIEdURVNUX05BTUVfICIgaW50ZXJuYWwgZnJhbWVzIC4uLiI7CiAKK3N0
ZDo6c3RyaW5nIE9zU3RhY2tUcmFjZUdldHRlcjo6Q3VycmVudFN0YWNrVHJhY2UoaW50IG1heF9k
ZXB0aCwgaW50IHNraXBfY291bnQpCisgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7
CisjaWYgR1RFU1RfSEFTX0FCU0wKKyAgc3RkOjpzdHJpbmcgcmVzdWx0OworCisgIGlmIChtYXhf
ZGVwdGggPD0gMCkgeworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworICBtYXhfZGVwdGggPSBz
dGQ6Om1pbihtYXhfZGVwdGgsIGtNYXhTdGFja1RyYWNlRGVwdGgpOworCisgIHN0ZDo6dmVjdG9y
PHZvaWQqPiByYXdfc3RhY2sobWF4X2RlcHRoKTsKKyAgLy8gU2tpcHMgdGhlIGZyYW1lcyByZXF1
ZXN0ZWQgYnkgdGhlIGNhbGxlciwgcGx1cyB0aGlzIGZ1bmN0aW9uLgorICBjb25zdCBpbnQgcmF3
X3N0YWNrX3NpemUgPQorICAgICAgYWJzbDo6R2V0U3RhY2tUcmFjZSgmcmF3X3N0YWNrWzBdLCBt
YXhfZGVwdGgsIHNraXBfY291bnQgKyAxKTsKKworICB2b2lkKiBjYWxsZXJfZnJhbWUgPSBudWxs
cHRyOworICB7CisgICAgTXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7CisgICAgY2FsbGVyX2ZyYW1l
ID0gY2FsbGVyX2ZyYW1lXzsKKyAgfQorCisgIGZvciAoaW50IGkgPSAwOyBpIDwgcmF3X3N0YWNr
X3NpemU7ICsraSkgeworICAgIGlmIChyYXdfc3RhY2tbaV0gPT0gY2FsbGVyX2ZyYW1lICYmCisg
ICAgICAgICFHVEVTVF9GTEFHKHNob3dfaW50ZXJuYWxfc3RhY2tfZnJhbWVzKSkgeworICAgICAg
Ly8gQWRkIGEgbWFya2VyIHRvIHRoZSB0cmFjZSBhbmQgc3RvcCBhZGRpbmcgZnJhbWVzLgorICAg
ICAgYWJzbDo6U3RyQXBwZW5kKCZyZXN1bHQsIGtFbGlkZWRGcmFtZXNNYXJrZXIsICJcbiIpOwor
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2hhciB0bXBbMTAyNF07CisgICAgY29uc3QgY2hh
ciogc3ltYm9sID0gIih1bmtub3duKSI7CisgICAgaWYgKGFic2w6OlN5bWJvbGl6ZShyYXdfc3Rh
Y2tbaV0sIHRtcCwgc2l6ZW9mKHRtcCkpKSB7CisgICAgICBzeW1ib2wgPSB0bXA7CisgICAgfQor
CisgICAgY2hhciBsaW5lWzEwMjRdOworICAgIHNucHJpbnRmKGxpbmUsIHNpemVvZihsaW5lKSwg
IiAgJXA6ICVzXG4iLCByYXdfc3RhY2tbaV0sIHN5bWJvbCk7CisgICAgcmVzdWx0ICs9IGxpbmU7
CisgIH0KKworICByZXR1cm4gcmVzdWx0OworCisjZWxzZSAgLy8gIUdURVNUX0hBU19BQlNMCisg
IHN0YXRpY19jYXN0PHZvaWQ+KG1heF9kZXB0aCk7CisgIHN0YXRpY19jYXN0PHZvaWQ+KHNraXBf
Y291bnQpOworICByZXR1cm4gIiI7CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCit9CisKK3Zv
aWQgT3NTdGFja1RyYWNlR2V0dGVyOjpVcG9uTGVhdmluZ0dUZXN0KCkgR1RFU1RfTE9DS19FWENM
VURFRF8obXV0ZXhfKSB7CisjaWYgR1RFU1RfSEFTX0FCU0wKKyAgdm9pZCogY2FsbGVyX2ZyYW1l
ID0gbnVsbHB0cjsKKyAgaWYgKGFic2w6OkdldFN0YWNrVHJhY2UoJmNhbGxlcl9mcmFtZSwgMSwg
MykgPD0gMCkgeworICAgIGNhbGxlcl9mcmFtZSA9IG51bGxwdHI7CisgIH0KKworICBNdXRleExv
Y2sgbG9jaygmbXV0ZXhfKTsKKyAgY2FsbGVyX2ZyYW1lXyA9IGNhbGxlcl9mcmFtZTsKKyNlbmRp
ZiAgLy8gR1RFU1RfSEFTX0FCU0wKK30KKworLy8gQSBoZWxwZXIgY2xhc3MgdGhhdCBjcmVhdGVz
IHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlIGluIGl0cworLy8gY29uc3RydWN0b3IgYW5kIGRlbGV0
ZXMgdGhlIGZpbGUgaW4gaXRzIGRlc3RydWN0b3IuCitjbGFzcyBTY29wZWRQcmVtYXR1cmVFeGl0
RmlsZSB7CisgcHVibGljOgorICBleHBsaWNpdCBTY29wZWRQcmVtYXR1cmVFeGl0RmlsZShjb25z
dCBjaGFyKiBwcmVtYXR1cmVfZXhpdF9maWxlcGF0aCkKKyAgICAgIDogcHJlbWF0dXJlX2V4aXRf
ZmlsZXBhdGhfKHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoID8KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoIDogIiIpIHsKKyAgICAvLyBJZiBh
IHBhdGggdG8gdGhlIHByZW1hdHVyZS1leGl0IGZpbGUgaXMgc3BlY2lmaWVkLi4uCisgICAgaWYg
KCFwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8uZW1wdHkoKSkgeworICAgICAgLy8gY3JlYXRlIHRo
ZSBmaWxlIHdpdGggYSBzaW5nbGUgIjAiIGNoYXJhY3RlciBpbiBpdC4gIEkvTworICAgICAgLy8g
ZXJyb3JzIGFyZSBpZ25vcmVkIGFzIHRoZXJlJ3Mgbm90aGluZyBiZXR0ZXIgd2UgY2FuIGRvIGFu
ZCB3ZQorICAgICAgLy8gZG9uJ3Qgd2FudCB0byBmYWlsIHRoZSB0ZXN0IGJlY2F1c2Ugb2YgdGhp
cy4KKyAgICAgIEZJTEUqIHBmaWxlID0gcG9zaXg6OkZPcGVuKHByZW1hdHVyZV9leGl0X2ZpbGVw
YXRoLCAidyIpOworICAgICAgZndyaXRlKCIwIiwgMSwgMSwgcGZpbGUpOworICAgICAgZmNsb3Nl
KHBmaWxlKTsKKyAgICB9CisgIH0KKworICB+U2NvcGVkUHJlbWF0dXJlRXhpdEZpbGUoKSB7Cisg
ICAgaWYgKCFwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8uZW1wdHkoKSkgeworICAgICAgaW50IHJl
dHZhbCA9IHJlbW92ZShwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8uY19zdHIoKSk7CisgICAgICBp
ZiAocmV0dmFsKSB7CisgICAgICAgIEdURVNUX0xPR18oRVJST1IpIDw8ICJGYWlsZWQgdG8gcmVt
b3ZlIHByZW1hdHVyZSBleGl0IGZpbGVwYXRoIFwiIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCBwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8gPDwgIlwiIHdpdGggZXJyb3IgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCByZXR2YWw7CisgICAgICB9CisgICAgfQorICB9CisKKyBw
cml2YXRlOgorICBjb25zdCBzdGQ6OnN0cmluZyBwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF87CisK
KyAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTY29wZWRQcmVtYXR1cmVFeGl0Rmls
ZSk7Cit9OworCiB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAogLy8gY2xhc3MgVGVzdEV2ZW50
TGlzdGVuZXJzCkBAIC0zNDMxLDcgKzQ0OTMsNyBAQCB2b2lkIFRlc3RFdmVudExpc3RlbmVyczo6
U3VwcHJlc3NFdmVudEZvcndhcmRpbmcoKSB7CiAvLyBXZSBkb24ndCBwcm90ZWN0IHRoaXMgdW5k
ZXIgbXV0ZXhfIGFzIGEgdXNlciBpcyBub3Qgc3VwcG9zZWQgdG8KIC8vIGNhbGwgdGhpcyBiZWZv
cmUgbWFpbigpIHN0YXJ0cywgZnJvbSB3aGljaCBwb2ludCBvbiB0aGUgcmV0dXJuCiAvLyB2YWx1
ZSB3aWxsIG5ldmVyIGNoYW5nZS4KLVVuaXRUZXN0ICogVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkg
eworVW5pdFRlc3QqIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpIHsKICAgLy8gV2hlbiBjb21waWxl
ZCB3aXRoIE1TVkMgNy4xIGluIG9wdGltaXplZCBtb2RlLCBkZXN0cm95aW5nIHRoZQogICAvLyBV
bml0VGVzdCBvYmplY3QgdXBvbiBleGl0aW5nIHRoZSBwcm9ncmFtIG1lc3NlcyB1cCB0aGUgZXhp
dCBjb2RlLAogICAvLyBjYXVzaW5nIHN1Y2Nlc3NmdWwgdGVzdHMgdG8gYXBwZWFyIGZhaWxlZC4g
IFdlIGhhdmUgdG8gdXNlIGEKQEAgLTM0ODEsMTcgKzQ1NDMsMzMgQEAgaW50IFVuaXRUZXN0Ojpz
dWNjZXNzZnVsX3Rlc3RfY291bnQoKSBjb25zdCB7CiAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZmFp
bGVkIHRlc3RzLgogaW50IFVuaXRUZXN0OjpmYWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsgcmV0
dXJuIGltcGwoKS0+ZmFpbGVkX3Rlc3RfY291bnQoKTsgfQogCisvLyBHZXRzIHRoZSBudW1iZXIg
b2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0
LgoraW50IFVuaXRUZXN0OjpyZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7
CisgIHJldHVybiBpbXBsKCktPnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpOworfQor
CiAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMuCiBpbnQgVW5pdFRlc3Q6OmRp
c2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7CiAgIHJldHVybiBpbXBsKCktPmRpc2FibGVkX3Rl
c3RfY291bnQoKTsKIH0KIAorLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50
ZWQgaW4gdGhlIFhNTCByZXBvcnQuCitpbnQgVW5pdFRlc3Q6OnJlcG9ydGFibGVfdGVzdF9jb3Vu
dCgpIGNvbnN0IHsKKyAgcmV0dXJuIGltcGwoKS0+cmVwb3J0YWJsZV90ZXN0X2NvdW50KCk7Cit9
CisKIC8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdHMuCiBpbnQgVW5pdFRlc3Q6OnRvdGFs
X3Rlc3RfY291bnQoKSBjb25zdCB7IHJldHVybiBpbXBsKCktPnRvdGFsX3Rlc3RfY291bnQoKTsg
fQogCiAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdGhhdCBzaG91bGQgcnVuLgogaW50IFVu
aXRUZXN0Ojp0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0IHsgcmV0dXJuIGltcGwoKS0+dGVzdF90
b19ydW5fY291bnQoKTsgfQogCisvLyBHZXRzIHRoZSB0aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0g
c3RhcnQsIGluIG1zIGZyb20gdGhlIHN0YXJ0IG9mIHRoZQorLy8gVU5JWCBlcG9jaC4KK2ludGVy
bmFsOjpUaW1lSW5NaWxsaXMgVW5pdFRlc3Q6OnN0YXJ0X3RpbWVzdGFtcCgpIGNvbnN0IHsKKyAg
ICByZXR1cm4gaW1wbCgpLT5zdGFydF90aW1lc3RhbXAoKTsKK30KKwogLy8gR2V0cyB0aGUgZWxh
cHNlZCB0aW1lLCBpbiBtaWxsaXNlY29uZHMuCiBpbnRlcm5hbDo6VGltZUluTWlsbGlzIFVuaXRU
ZXN0OjplbGFwc2VkX3RpbWUoKSBjb25zdCB7CiAgIHJldHVybiBpbXBsKCktPmVsYXBzZWRfdGlt
ZSgpOwpAQCAtMzUxMCw2ICs0NTg4LDEyIEBAIGNvbnN0IFRlc3RDYXNlKiBVbml0VGVzdDo6R2V0
VGVzdENhc2UoaW50IGkpIGNvbnN0IHsKICAgcmV0dXJuIGltcGwoKS0+R2V0VGVzdENhc2UoaSk7
CiB9CiAKKy8vIFJldHVybnMgdGhlIFRlc3RSZXN1bHQgY29udGFpbmluZyBpbmZvcm1hdGlvbiBv
biB0ZXN0IGZhaWx1cmVzIGFuZAorLy8gcHJvcGVydGllcyBsb2dnZWQgb3V0c2lkZSBvZiBpbmRp
dmlkdWFsIHRlc3QgY2FzZXMuCitjb25zdCBUZXN0UmVzdWx0JiBVbml0VGVzdDo6YWRfaG9jX3Rl
c3RfcmVzdWx0KCkgY29uc3QgeworICByZXR1cm4gKmltcGwoKS0+YWRfaG9jX3Rlc3RfcmVzdWx0
KCk7Cit9CisKIC8vIEdldHMgdGhlIGktdGggdGVzdCBjYXNlIGFtb25nIGFsbCB0aGUgdGVzdCBj
YXNlcy4gaSBjYW4gcmFuZ2UgZnJvbSAwIHRvCiAvLyB0b3RhbF90ZXN0X2Nhc2VfY291bnQoKSAt
IDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVMTC4KIFRlc3RDYXNlKiBV
bml0VGVzdDo6R2V0TXV0YWJsZVRlc3RDYXNlKGludCBpKSB7CkBAIC0zNTQxLDI5ICs0NjI1LDE2
IEBAIEVudmlyb25tZW50KiBVbml0VGVzdDo6QWRkRW52aXJvbm1lbnQoRW52aXJvbm1lbnQqIGVu
dikgewogICByZXR1cm4gZW52OwogfQogCi0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLS8vIEEg
ZmFpbGVkIEdvb2dsZSBUZXN0IGFzc2VydGlvbiB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBvZiB0
aGlzIHR5cGUKLS8vIHdoZW4gZXhjZXB0aW9ucyBhcmUgZW5hYmxlZC4gIFdlIGRlcml2ZSBpdCBm
cm9tIHN0ZDo6cnVudGltZV9lcnJvciwKLS8vIHdoaWNoIGlzIGZvciBlcnJvcnMgcHJlc3VtYWJs
eSBkZXRlY3RhYmxlIG9ubHkgYXQgcnVuIHRpbWUuICBTaW5jZQotLy8gc3RkOjpydW50aW1lX2Vy
cm9yIGluaGVyaXRzIGZyb20gc3RkOjpleGNlcHRpb24sIG1hbnkgdGVzdGluZwotLy8gZnJhbWV3
b3JrcyBrbm93IGhvdyB0byBleHRyYWN0IGFuZCBwcmludCB0aGUgbWVzc2FnZSBpbnNpZGUgaXQu
Ci1jbGFzcyBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbiA6IHB1YmxpYyA6OnN0ZDo6cnVudGlt
ZV9lcnJvciB7Ci0gcHVibGljOgotICBleHBsaWNpdCBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlv
bihjb25zdCBUZXN0UGFydFJlc3VsdCYgZmFpbHVyZSkKLSAgICAgIDogOjpzdGQ6OnJ1bnRpbWVf
ZXJyb3IoUHJpbnRUZXN0UGFydFJlc3VsdFRvU3RyaW5nKGZhaWx1cmUpLmNfc3RyKCkpIHt9Ci19
OwotI2VuZGlmCi0KIC8vIEFkZHMgYSBUZXN0UGFydFJlc3VsdCB0byB0aGUgY3VycmVudCBUZXN0
UmVzdWx0IG9iamVjdC4gIEFsbCBHb29nbGUgVGVzdAogLy8gYXNzZXJ0aW9uIG1hY3JvcyAoZS5n
LiBBU1NFUlRfVFJVRSwgRVhQRUNUX0VRLCBldGMpIGV2ZW50dWFsbHkgY2FsbAogLy8gdGhpcyB0
byByZXBvcnQgdGhlaXIgcmVzdWx0cy4gIFRoZSB1c2VyIGNvZGUgc2hvdWxkIHVzZSB0aGUKIC8v
IGFzc2VydGlvbiBtYWNyb3MgaW5zdGVhZCBvZiBjYWxsaW5nIHRoaXMgZGlyZWN0bHkuCi0vLyBM
IDwgbXV0ZXhfCi12b2lkIFVuaXRUZXN0OjpBZGRUZXN0UGFydFJlc3VsdChUZXN0UGFydFJlc3Vs
dDo6VHlwZSByZXN1bHRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGZpbGVfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBsaW5lX251bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlu
dGVybmFsOjpTdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBpbnRlcm5hbDo6U3RyaW5nJiBvc19zdGFja190cmFjZSkgewordm9pZCBVbml0VGVz
dDo6QWRkVGVzdFBhcnRSZXN1bHQoCisgICAgVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5
cGUsCisgICAgY29uc3QgY2hhciogZmlsZV9uYW1lLAorICAgIGludCBsaW5lX251bWJlciwKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3Nf
c3RhY2tfdHJhY2UpIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4XykgewogICBNZXNzYWdlIG1z
ZzsKICAgbXNnIDw8IG1lc3NhZ2U7CiAKQEAgLTM1OTYsMTcgKzQ2NjcsMjYgQEAgdm9pZCBVbml0
VGVzdDo6QWRkVGVzdFBhcnRSZXN1bHQoVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUs
CiAgICAgLy8gd2l0aCBhbm90aGVyIHRlc3RpbmcgZnJhbWV3b3JrKSBhbmQgc3BlY2lmeSB0aGUg
Zm9ybWVyIG9uIHRoZQogICAgIC8vIGNvbW1hbmQgbGluZSBmb3IgZGVidWdnaW5nLgogICAgIGlm
IChHVEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpKSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwor
I2lmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNU
X09TX1dJTkRPV1NfUlQKICAgICAgIC8vIFVzaW5nIERlYnVnQnJlYWsgb24gV2luZG93cyBhbGxv
d3MgZ3Rlc3QgdG8gc3RpbGwgYnJlYWsgaW50byBhIGRlYnVnZ2VyCiAgICAgICAvLyB3aGVuIGEg
ZmFpbHVyZSBoYXBwZW5zIGFuZCBib3RoIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgYW5k
CiAgICAgICAvLyB0aGUgLS1ndGVzdF9jYXRjaF9leGNlcHRpb25zIGZsYWdzIGFyZSBzcGVjaWZp
ZWQuCiAgICAgICBEZWJ1Z0JyZWFrKCk7CisjZWxpZiAoIWRlZmluZWQoX19uYXRpdmVfY2xpZW50
X18pKSAmJiAgICAgICAgICAgIFwKKyAgICAoKGRlZmluZWQoX19jbGFuZ19fKSB8fCBkZWZpbmVk
KF9fR05VQ19fKSkgJiYgXAorICAgICAoZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9f
aTM4Nl9fKSkpCisgICAgICAvLyB3aXRoIGNsYW5nL2djYyB3ZSBjYW4gYWNoaWV2ZSB0aGUgc2Ft
ZSBlZmZlY3Qgb24geDg2IGJ5IGludm9raW5nIGludDMKKyAgICAgIGFzbSgiaW50MyIpOwogI2Vs
c2UKKyAgICAgIC8vIERlcmVmZXJlbmNlIE5VTEwgdGhyb3VnaCBhIHZvbGF0aWxlIHBvaW50ZXIg
dG8gcHJldmVudCB0aGUgY29tcGlsZXIKKyAgICAgIC8vIGZyb20gcmVtb3ZpbmcuIFdlIHVzZSB0
aGlzIHJhdGhlciB0aGFuIGFib3J0KCkgb3IgX19idWlsdGluX3RyYXAoKSBmb3IKKyAgICAgIC8v
IHBvcnRhYmlsaXR5OiBTeW1iaWFuIGRvZXNuJ3QgaW1wbGVtZW50IGFib3J0KCkgd2VsbCwgYW5k
IHNvbWUgZGVidWdnZXJzCisgICAgICAvLyBkb24ndCBjb3JyZWN0bHkgdHJhcCBhYm9ydCgpLgog
ICAgICAgKnN0YXRpY19jYXN0PHZvbGF0aWxlIGludCo+KE5VTEwpID0gMTsKICNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUwogICAgIH0gZWxzZSBpZiAoR1RFU1RfRkxBRyh0aHJvd19vbl9mYWls
dXJlKSkgewogI2lmIEdURVNUX0hBU19FWENFUFRJT05TCi0gICAgICB0aHJvdyBHb29nbGVUZXN0
RmFpbHVyZUV4Y2VwdGlvbihyZXN1bHQpOworICAgICAgdGhyb3cgaW50ZXJuYWw6Okdvb2dsZVRl
c3RGYWlsdXJlRXhjZXB0aW9uKHJlc3VsdCk7CiAjZWxzZQogICAgICAgLy8gV2UgY2Fubm90IGNh
bGwgYWJvcnQoKSBhcyBpdCBnZW5lcmF0ZXMgYSBwb3AtdXAgaW4gZGVidWcgbW9kZQogICAgICAg
Ly8gdGhhdCBjYW5ub3QgYmUgc3VwcHJlc3NlZCBpbiBWQyA3LjEgb3IgYmVsb3cuCkBAIC0zNjE2
LDEyICs0Njk2LDE0IEBAIHZvaWQgVW5pdFRlc3Q6OkFkZFRlc3RQYXJ0UmVzdWx0KFRlc3RQYXJ0
UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAogICB9CiB9CiAKLS8vIENyZWF0ZXMgYW5kIGFkZHMg
YSBwcm9wZXJ0eSB0byB0aGUgY3VycmVudCBUZXN0UmVzdWx0LiBJZiBhIHByb3BlcnR5IG1hdGNo
aW5nCi0vLyB0aGUgc3VwcGxpZWQgdmFsdWUgYWxyZWFkeSBleGlzdHMsIHVwZGF0ZXMgaXRzIHZh
bHVlIGluc3RlYWQuCi12b2lkIFVuaXRUZXN0OjpSZWNvcmRQcm9wZXJ0eUZvckN1cnJlbnRUZXN0
KGNvbnN0IGNoYXIqIGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogdmFsdWUpIHsKLSAgY29uc3QgVGVzdFByb3BlcnR5IHRlc3RfcHJv
cGVydHkoa2V5LCB2YWx1ZSk7Ci0gIGltcGxfLT5jdXJyZW50X3Rlc3RfcmVzdWx0KCktPlJlY29y
ZFByb3BlcnR5KHRlc3RfcHJvcGVydHkpOworLy8gQWRkcyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUg
Y3VycmVudCBUZXN0UmVzdWx0IG9iamVjdCB3aGVuIGludm9rZWQgZnJvbQorLy8gaW5zaWRlIGEg
dGVzdCwgdG8gY3VycmVudCBUZXN0Q2FzZSdzIGFkX2hvY190ZXN0X3Jlc3VsdF8gd2hlbiBpbnZv
a2VkCisvLyBmcm9tIFNldFVwVGVzdENhc2Ugb3IgVGVhckRvd25UZXN0Q2FzZSwgb3IgdG8gdGhl
IGdsb2JhbCBwcm9wZXJ0eSBzZXQKKy8vIHdoZW4gaW52b2tlZCBlbHNld2hlcmUuICBJZiB0aGUg
cmVzdWx0IGFscmVhZHkgY29udGFpbnMgYSBwcm9wZXJ0eSB3aXRoCisvLyB0aGUgc2FtZSBrZXks
IHRoZSB2YWx1ZSB3aWxsIGJlIHVwZGF0ZWQuCit2b2lkIFVuaXRUZXN0OjpSZWNvcmRQcm9wZXJ0
eShjb25zdCBzdGQ6OnN0cmluZyYga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSB7CisgIGltcGxfLT5SZWNvcmRQcm9wZXJ0eShUZXN0
UHJvcGVydHkoa2V5LCB2YWx1ZSkpOwogfQogCiAvLyBSdW5zIGFsbCB0ZXN0cyBpbiB0aGlzIFVu
aXRUZXN0IG9iamVjdCBhbmQgcHJpbnRzIHRoZSByZXN1bHQuCkBAIC0zNjMwLDMxICs0NzEyLDU4
IEBAIHZvaWQgVW5pdFRlc3Q6OlJlY29yZFByb3BlcnR5Rm9yQ3VycmVudFRlc3QoY29uc3QgY2hh
cioga2V5LAogLy8gV2UgZG9uJ3QgcHJvdGVjdCB0aGlzIHVuZGVyIG11dGV4XywgYXMgd2Ugb25s
eSBzdXBwb3J0IGNhbGxpbmcgaXQKIC8vIGZyb20gdGhlIG1haW4gdGhyZWFkLgogaW50IFVuaXRU
ZXN0OjpSdW4oKSB7Ci0jaWYgR1RFU1RfSEFTX1NFSAotICAvLyBDYXRjaCBTRUgtc3R5bGUgZXhj
ZXB0aW9ucy4KLQogICBjb25zdCBib29sIGluX2RlYXRoX3Rlc3RfY2hpbGRfcHJvY2VzcyA9CiAg
ICAgICBpbnRlcm5hbDo6R1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkubGVuZ3Ro
KCkgPiAwOwogCisgIC8vIEdvb2dsZSBUZXN0IGltcGxlbWVudHMgdGhpcyBwcm90b2NvbCBmb3Ig
Y2F0Y2hpbmcgdGhhdCBhIHRlc3QKKyAgLy8gcHJvZ3JhbSBleGl0cyBiZWZvcmUgcmV0dXJuaW5n
IGNvbnRyb2wgdG8gR29vZ2xlIFRlc3Q6CisgIC8vCisgIC8vICAgMS4gVXBvbiBzdGFydCwgR29v
Z2xlIFRlc3QgY3JlYXRlcyBhIGZpbGUgd2hvc2UgYWJzb2x1dGUgcGF0aAorICAvLyAgICAgIGlz
IHNwZWNpZmllZCBieSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgLy8gICAgICBURVNUX1BS
RU1BVFVSRV9FWElUX0ZJTEUuCisgIC8vICAgMi4gV2hlbiBHb29nbGUgVGVzdCBoYXMgZmluaXNo
ZWQgaXRzIHdvcmssIGl0IGRlbGV0ZXMgdGhlIGZpbGUuCisgIC8vCisgIC8vIFRoaXMgYWxsb3dz
IGEgdGVzdCBydW5uZXIgdG8gc2V0IFRFU1RfUFJFTUFUVVJFX0VYSVRfRklMRSBiZWZvcmUKKyAg
Ly8gcnVubmluZyBhIEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QgcHJvZ3JhbSBhbmQgY2hlY2sgdGhl
IGV4aXN0ZW5jZQorICAvLyBvZiB0aGUgZmlsZSBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0IGV4ZWN1
dGlvbiB0byBzZWUgaWYgaXQgaGFzCisgIC8vIGV4aXRlZCBwcmVtYXR1cmVseS4KKworICAvLyBJ
ZiB3ZSBhcmUgaW4gdGhlIGNoaWxkIHByb2Nlc3Mgb2YgYSBkZWF0aCB0ZXN0LCBkb24ndAorICAv
LyBjcmVhdGUvZGVsZXRlIHRoZSBwcmVtYXR1cmUgZXhpdCBmaWxlLCBhcyBkb2luZyBzbyBpcyB1
bm5lY2Vzc2FyeQorICAvLyBhbmQgd2lsbCBjb25mdXNlIHRoZSBwYXJlbnQgcHJvY2Vzcy4gIE90
aGVyd2lzZSwgY3JlYXRlL2RlbGV0ZQorICAvLyB0aGUgZmlsZSB1cG9uIGVudGVyaW5nL2xlYXZp
bmcgdGhpcyBmdW5jdGlvbi4gIElmIHRoZSBwcm9ncmFtCisgIC8vIHNvbWVob3cgZXhpdHMgYmVm
b3JlIHRoaXMgZnVuY3Rpb24gaGFzIGEgY2hhbmNlIHRvIHJldHVybiwgdGhlCisgIC8vIHByZW1h
dHVyZS1leGl0IGZpbGUgd2lsbCBiZSBsZWZ0IHVuZGVsZXRlZCwgY2F1c2luZyBhIHRlc3QgcnVu
bmVyCisgIC8vIHRoYXQgdW5kZXJzdGFuZHMgdGhlIHByZW1hdHVyZS1leGl0LWZpbGUgcHJvdG9j
b2wgdG8gcmVwb3J0IHRoZQorICAvLyB0ZXN0IGFzIGhhdmluZyBmYWlsZWQuCisgIGNvbnN0IGlu
dGVybmFsOjpTY29wZWRQcmVtYXR1cmVFeGl0RmlsZSBwcmVtYXR1cmVfZXhpdF9maWxlKAorICAg
ICAgaW5fZGVhdGhfdGVzdF9jaGlsZF9wcm9jZXNzID8KKyAgICAgIE5VTEwgOiBpbnRlcm5hbDo6
cG9zaXg6OkdldEVudigiVEVTVF9QUkVNQVRVUkVfRVhJVF9GSUxFIikpOworCisgIC8vIENhcHR1
cmVzIHRoZSB2YWx1ZSBvZiBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpLiAgVGhpcyB2YWx1
ZSB3aWxsIGJlCisgIC8vIHVzZWQgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgcHJvZ3JhbS4KKyAg
aW1wbCgpLT5zZXRfY2F0Y2hfZXhjZXB0aW9ucyhHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMp
KTsKKworI2lmIEdURVNUX09TX1dJTkRPV1MKICAgLy8gRWl0aGVyIHRoZSB1c2VyIHdhbnRzIEdv
b2dsZSBUZXN0IHRvIGNhdGNoIGV4Y2VwdGlvbnMgdGhyb3duIGJ5IHRoZQogICAvLyB0ZXN0cyBv
ciB0aGlzIGlzIGV4ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiBkZWF0aCB0ZXN0IGNoaWxkCiAg
IC8vIHByb2Nlc3MuIEluIGVpdGhlciBjYXNlIHRoZSB1c2VyIGRvZXMgbm90IHdhbnQgdG8gc2Vl
IHBvcC11cCBkaWFsb2dzCi0gIC8vIGFib3V0IGNyYXNoZXMgLSB0aGV5IGFyZSBleHBlY3RlZC4u
Ci0gIGlmIChHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpIHx8IGluX2RlYXRoX3Rlc3RfY2hp
bGRfcHJvY2VzcykgewotI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorICAvLyBhYm91dCBj
cmFzaGVzIC0gdGhleSBhcmUgZXhwZWN0ZWQuCisgIGlmIChpbXBsKCktPmNhdGNoX2V4Y2VwdGlv
bnMoKSB8fCBpbl9kZWF0aF90ZXN0X2NoaWxkX3Byb2Nlc3MpIHsKKyMgaWYgIUdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFICYmICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5E
T1dTX1JUCiAgICAgLy8gU2V0RXJyb3JNb2RlIGRvZXNuJ3QgZXhpc3Qgb24gQ0UuCiAgICAgU2V0
RXJyb3JNb2RlKFNFTV9GQUlMQ1JJVElDQUxFUlJPUlMgfCBTRU1fTk9BTElHTk1FTlRGQVVMVEVY
Q0VQVCB8CiAgICAgICAgICAgICAgICAgIFNFTV9OT0dQRkFVTFRFUlJPUkJPWCB8IFNFTV9OT09Q
RU5GSUxFRVJST1JCT1gpOwotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMg
ZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQogCi0jaWYgKGRlZmluZWQoX01TQ19W
RVIpIHx8IEdURVNUX09TX1dJTkRPV1NfTUlOR1cpICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklM
RQorIyBpZiAoZGVmaW5lZChfTVNDX1ZFUikgfHwgR1RFU1RfT1NfV0lORE9XU19NSU5HVykgJiYg
IUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCiAgICAgLy8gRGVhdGggdGVzdCBjaGlsZHJlbiBjYW4g
YmUgdGVybWluYXRlZCB3aXRoIF9hYm9ydCgpLiAgT24gV2luZG93cywKICAgICAvLyBfYWJvcnQo
KSBjYW4gc2hvdyBhIGRpYWxvZyB3aXRoIGEgd2FybmluZyBtZXNzYWdlLiAgVGhpcyBmb3JjZXMg
dGhlCiAgICAgLy8gYWJvcnQgbWVzc2FnZSB0byBnbyB0byBzdGRlcnIgaW5zdGVhZC4KICAgICBf
c2V0X2Vycm9yX21vZGUoX09VVF9UT19TVERFUlIpOwotI2VuZGlmCisjIGVuZGlmCiAKLSNpZiBf
TVNDX1ZFUiA+PSAxNDAwICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorIyBpZiBfTVNDX1ZF
UiA+PSAxNDAwICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQogICAgIC8vIEluIHRoZSBkZWJ1
ZyB2ZXJzaW9uLCBWaXN1YWwgU3R1ZGlvIHBvcHMgdXAgYSBzZXBhcmF0ZSBkaWFsb2cKICAgICAv
LyBvZmZlcmluZyBhIGNob2ljZSB0byBkZWJ1ZyB0aGUgYWJvcnRlZCBwcm9ncmFtLiBXZSBuZWVk
IHRvIHN1cHByZXNzCiAgICAgLy8gdGhpcyBkaWFsb2cgb3IgaXQgd2lsbCBwb3AgdXAgZm9yIGV2
ZXJ5IEVYUEVDVC9BU1NFUlRfREVBVEggc3RhdGVtZW50CkBAIC0zNjY0LDI4ICs0NzczLDIwIEBA
IGludCBVbml0VGVzdDo6UnVuKCkgewogICAgIC8vIFZDKysgZG9lc24ndCBkZWZpbmUgX3NldF9h
Ym9ydF9iZWhhdmlvcigpIHByaW9yIHRvIHRoZSB2ZXJzaW9uIDguMC4KICAgICAvLyBVc2VycyBv
ZiBwcmlvciBWQyB2ZXJzaW9ucyBzaGFsbCBzdWZmZXIgdGhlIGFnb255IGFuZCBwYWluIG9mCiAg
ICAgLy8gY2xpY2tpbmcgdGhyb3VnaCB0aGUgY291bnRsZXNzIGRlYnVnIGRpYWxvZ3MuCi0gICAg
Ly8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogZmluZCBhIHdheSB0byBzdXBwcmVzcyB0aGUgYWJv
cnQgZGlhbG9nKCkgaW4gdGhlCisgICAgLy8gRklYTUU6IGZpbmQgYSB3YXkgdG8gc3VwcHJlc3Mg
dGhlIGFib3J0IGRpYWxvZygpIGluIHRoZQogICAgIC8vIGRlYnVnIG1vZGUgd2hlbiBjb21waWxl
ZCB3aXRoIFZDIDcuMSBvciBsb3dlci4KICAgICBpZiAoIUdURVNUX0ZMQUcoYnJlYWtfb25fZmFp
bHVyZSkpCiAgICAgICBfc2V0X2Fib3J0X2JlaGF2aW9yKAogICAgICAgICAgIDB4MCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDbGVhciB0aGUgZm9sbG93aW5nIGZsYWdz
OgogICAgICAgICAgIF9XUklURV9BQk9SVF9NU0cgfCBfQ0FMTF9SRVBPUlRGQVVMVCk7ICAvLyBw
b3AtdXAgd2luZG93LCBjb3JlIGR1bXAuCi0jZW5kaWYKKyMgZW5kaWYKICAgfQorI2VuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTCiAKLSAgX190cnkgewotICAgIHJldHVybiBpbXBsXy0+UnVuQWxs
VGVzdHMoKTsKLSAgfSBfX2V4Y2VwdChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpHVGVzdFNo
b3VsZFByb2Nlc3NTRUgoCi0gICAgICBHZXRFeGNlcHRpb25Db2RlKCkpKSB7Ci0gICAgcHJpbnRm
KCJFeGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAweCV4LlxuRkFJTFxuIiwgR2V0RXhjZXB0aW9u
Q29kZSgpKTsKLSAgICBmZmx1c2goc3Rkb3V0KTsKLSAgICByZXR1cm4gMTsKLSAgfQotCi0jZWxz
ZSAgLy8gV2UgYXJlIG9uIGEgY29tcGlsZXIgb3IgcGxhdGZvcm0gdGhhdCBkb2Vzbid0IHN1cHBv
cnQgU0VILgotCi0gIHJldHVybiBpbXBsXy0+UnVuQWxsVGVzdHMoKTsKLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX1NFSAorICByZXR1cm4gaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElm
U3VwcG9ydGVkKAorICAgICAgaW1wbCgpLAorICAgICAgJmludGVybmFsOjpVbml0VGVzdEltcGw6
OlJ1bkFsbFRlc3RzLAorICAgICAgImF1eGlsaWFyeSB0ZXN0IGNvZGUgKGVudmlyb25tZW50cyBv
ciBldmVudCBsaXN0ZW5lcnMpIikgPyAwIDogMTsKIH0KIAogLy8gUmV0dXJucyB0aGUgd29ya2lu
ZyBkaXJlY3Rvcnkgd2hlbiB0aGUgZmlyc3QgVEVTVCgpIG9yIFRFU1RfRigpIHdhcwpAQCAtMzY5
NiwxNiArNDc5NywxNiBAQCBjb25zdCBjaGFyKiBVbml0VGVzdDo6b3JpZ2luYWxfd29ya2luZ19k
aXIoKSBjb25zdCB7CiAKIC8vIFJldHVybnMgdGhlIFRlc3RDYXNlIG9iamVjdCBmb3IgdGhlIHRl
c3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLAogLy8gb3IgTlVMTCBpZiBubyB0ZXN0IGlzIHJ1
bm5pbmcuCi0vLyBMIDwgbXV0ZXhfCi1jb25zdCBUZXN0Q2FzZSogVW5pdFRlc3Q6OmN1cnJlbnRf
dGVzdF9jYXNlKCkgY29uc3QgeworY29uc3QgVGVzdENhc2UqIFVuaXRUZXN0OjpjdXJyZW50X3Rl
c3RfY2FzZSgpIGNvbnN0CisgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7CiAgIGlu
dGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKICAgcmV0dXJuIGltcGxfLT5jdXJyZW50
X3Rlc3RfY2FzZSgpOwogfQogCiAvLyBSZXR1cm5zIHRoZSBUZXN0SW5mbyBvYmplY3QgZm9yIHRo
ZSB0ZXN0IHRoYXQncyBjdXJyZW50bHkgcnVubmluZywKIC8vIG9yIE5VTEwgaWYgbm8gdGVzdCBp
cyBydW5uaW5nLgotLy8gTCA8IG11dGV4XwotY29uc3QgVGVzdEluZm8qIFVuaXRUZXN0OjpjdXJy
ZW50X3Rlc3RfaW5mbygpIGNvbnN0IHsKK2NvbnN0IFRlc3RJbmZvKiBVbml0VGVzdDo6Y3VycmVu
dF90ZXN0X2luZm8oKSBjb25zdAorICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4Xykgewog
ICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7CiAgIHJldHVybiBpbXBsXy0+Y3Vy
cmVudF90ZXN0X2luZm8oKTsKIH0KQEAgLTM3MTMsMTUgKzQ4MTQsMTMgQEAgY29uc3QgVGVzdElu
Zm8qIFVuaXRUZXN0OjpjdXJyZW50X3Rlc3RfaW5mbygpIGNvbnN0IHsKIC8vIFJldHVybnMgdGhl
IHJhbmRvbSBzZWVkIHVzZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50IHRlc3QgcnVuLgog
aW50IFVuaXRUZXN0OjpyYW5kb21fc2VlZCgpIGNvbnN0IHsgcmV0dXJuIGltcGxfLT5yYW5kb21f
c2VlZCgpOyB9CiAKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAogLy8gUmV0dXJucyBQYXJhbWV0
ZXJpemVkVGVzdENhc2VSZWdpc3RyeSBvYmplY3QgdXNlZCB0byBrZWVwIHRyYWNrIG9mCiAvLyB2
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFuZCBpbnN0YW50aWF0ZSBhbmQgcmVnaXN0ZXIgdGhl
bS4KLS8vIEwgPCBtdXRleF8KIGludGVybmFsOjpQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3Ry
eSYKLSAgICBVbml0VGVzdDo6cGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkgeworICAgIFVu
aXRUZXN0OjpwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKQorICAgICAgICBHVEVTVF9MT0NL
X0VYQ0xVREVEXyhtdXRleF8pIHsKICAgcmV0dXJuIGltcGxfLT5wYXJhbWV0ZXJpemVkX3Rlc3Rf
cmVnaXN0cnkoKTsKIH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIAogLy8gQ3Jl
YXRlcyBhbiBlbXB0eSBVbml0VGVzdC4KIFVuaXRUZXN0OjpVbml0VGVzdCgpIHsKQEAgLTM3MzUs
MTUgKzQ4MzQsMTUgQEAgVW5pdFRlc3Q6On5Vbml0VGVzdCgpIHsKIAogLy8gUHVzaGVzIGEgdHJh
Y2UgZGVmaW5lZCBieSBTQ09QRURfVFJBQ0UoKSBvbiB0byB0aGUgcGVyLXRocmVhZAogLy8gR29v
Z2xlIFRlc3QgdHJhY2Ugc3RhY2suCi0vLyBMIDwgbXV0ZXhfCi12b2lkIFVuaXRUZXN0OjpQdXNo
R1Rlc3RUcmFjZShjb25zdCBpbnRlcm5hbDo6VHJhY2VJbmZvJiB0cmFjZSkgewordm9pZCBVbml0
VGVzdDo6UHVzaEdUZXN0VHJhY2UoY29uc3QgaW50ZXJuYWw6OlRyYWNlSW5mbyYgdHJhY2UpCisg
ICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7CiAgIGludGVybmFsOjpNdXRleExvY2sg
bG9jaygmbXV0ZXhfKTsKICAgaW1wbF8tPmd0ZXN0X3RyYWNlX3N0YWNrKCkucHVzaF9iYWNrKHRy
YWNlKTsKIH0KIAogLy8gUG9wcyBhIHRyYWNlIGZyb20gdGhlIHBlci10aHJlYWQgR29vZ2xlIFRl
c3QgdHJhY2Ugc3RhY2suCi0vLyBMIDwgbXV0ZXhfCi12b2lkIFVuaXRUZXN0OjpQb3BHVGVzdFRy
YWNlKCkgewordm9pZCBVbml0VGVzdDo6UG9wR1Rlc3RUcmFjZSgpCisgICAgR1RFU1RfTE9DS19F
WENMVURFRF8obXV0ZXhfKSB7CiAgIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsK
ICAgaW1wbF8tPmd0ZXN0X3RyYWNlX3N0YWNrKCkucG9wX2JhY2soKTsKIH0KQEAgLTM3NTIsMjUg
KzQ4NTEsMTYgQEAgbmFtZXNwYWNlIGludGVybmFsIHsKIAogVW5pdFRlc3RJbXBsOjpVbml0VGVz
dEltcGwoVW5pdFRlc3QqIHBhcmVudCkKICAgICA6IHBhcmVudF8ocGFyZW50KSwKLSNpZmRlZiBf
TVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpICAgICAgICAgICAgICAgICAgICAvLyBTYXZl
cyB0aGUgY3VycmVudCB3YXJuaW5nIHN0YXRlLgotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDM1
NSkgICAgICAgICAgICAvLyBUZW1wb3JhcmlseSBkaXNhYmxlcyB3YXJuaW5nIDQzNTUKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHVzaW5nIHRoaXMgaW4gaW5p
dGlhbGl6ZXIpLgotICAgICAgZGVmYXVsdF9nbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRl
cl8odGhpcyksCi0gICAgICBkZWZhdWx0X3Blcl90aHJlYWRfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBv
cnRlcl8odGhpcyksCi0jcHJhZ21hIHdhcm5pbmcocG9wKSAgICAgICAgICAgICAgICAgICAgIC8v
IFJlc3RvcmVzIHRoZSB3YXJuaW5nIHN0YXRlIGFnYWluLgotI2Vsc2UKKyAgICAgIEdURVNUX0RJ
U0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQzNTUgLyogdXNpbmcgdGhpcyBpbiBpbml0aWFsaXpl
ciAqLykKICAgICAgIGRlZmF1bHRfZ2xvYmFsX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfKHRo
aXMpLAogICAgICAgZGVmYXVsdF9wZXJfdGhyZWFkX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJf
KHRoaXMpLAotI2VuZGlmICAvLyBfTVNDX1ZFUgorICAgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FS
TklOR1NfUE9QXygpCiAgICAgICBnbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvdGVyXygKICAg
ICAgICAgICAmZGVmYXVsdF9nbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8pLAogICAg
ICAgcGVyX3RocmVhZF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXygKICAgICAgICAgICAmZGVm
YXVsdF9wZXJfdGhyZWFkX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfKSwKLSNpZiBHVEVTVF9I
QVNfUEFSQU1fVEVTVAogICAgICAgcGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5XygpLAogICAg
ICAgcGFyYW1ldGVyaXplZF90ZXN0c19yZWdpc3RlcmVkXyhmYWxzZSksCi0jZW5kaWYgIC8vIEdU
RVNUX0hBU19QQVJBTV9URVNUCiAgICAgICBsYXN0X2RlYXRoX3Rlc3RfY2FzZV8oLTEpLAogICAg
ICAgY3VycmVudF90ZXN0X2Nhc2VfKE5VTEwpLAogICAgICAgY3VycmVudF90ZXN0X2luZm9fKE5V
TEwpLApAQCAtMzc3OSwxMyArNDg2OSwxMyBAQCBVbml0VGVzdEltcGw6OlVuaXRUZXN0SW1wbChV
bml0VGVzdCogcGFyZW50KQogICAgICAgcG9zdF9mbGFnX3BhcnNlX2luaXRfcGVyZm9ybWVkXyhm
YWxzZSksCiAgICAgICByYW5kb21fc2VlZF8oMCksICAvLyBXaWxsIGJlIG92ZXJyaWRkZW4gYnkg
dGhlIGZsYWcgYmVmb3JlIGZpcnN0IHVzZS4KICAgICAgIHJhbmRvbV8oMCksICAvLyBXaWxsIGJl
IHJlc2VlZGVkIGJlZm9yZSBmaXJzdCB1c2UuCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKyAg
ICAgIHN0YXJ0X3RpbWVzdGFtcF8oMCksCiAgICAgICBlbGFwc2VkX3RpbWVfKDApLAotICAgICAg
aW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfZmxhZ18oTlVMTCksCi0gICAgICBkZWF0aF90ZXN0X2Zh
Y3RvcnlfKG5ldyBEZWZhdWx0RGVhdGhUZXN0RmFjdG9yeSkgewotI2Vsc2UKLSAgICAgIGVsYXBz
ZWRfdGltZV8oMCkgewotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorI2lmIEdURVNU
X0hBU19ERUFUSF9URVNUCisgICAgICBkZWF0aF90ZXN0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0RGVh
dGhUZXN0RmFjdG9yeSksCisjZW5kaWYKKyAgICAgIC8vIFdpbGwgYmUgb3ZlcnJpZGRlbiBieSB0
aGUgZmxhZyBiZWZvcmUgZmlyc3QgdXNlLgorICAgICAgY2F0Y2hfZXhjZXB0aW9uc18oZmFsc2Up
IHsKICAgbGlzdGVuZXJzKCktPlNldERlZmF1bHRSZXN1bHRQcmludGVyKG5ldyBQcmV0dHlVbml0
VGVzdFJlc3VsdFByaW50ZXIpOwogfQogCkBAIC0zNzk5LDYgKzQ4ODksMjggQEAgVW5pdFRlc3RJ
bXBsOjp+VW5pdFRlc3RJbXBsKCkgewogICBkZWxldGUgb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXzsK
IH0KIAorLy8gQWRkcyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUgY3VycmVudCBUZXN0UmVzdWx0IG9i
amVjdCB3aGVuIGludm9rZWQgaW4gYQorLy8gY29udGV4dCBvZiBhIHRlc3QsIHRvIGN1cnJlbnQg
dGVzdCBjYXNlJ3MgYWRfaG9jX3Rlc3RfcmVzdWx0IHdoZW4gaW52b2tlCisvLyBmcm9tIFNldFVw
VGVzdENhc2UvVGVhckRvd25UZXN0Q2FzZSwgb3IgdG8gdGhlIGdsb2JhbCBwcm9wZXJ0eSBzZXQK
Ky8vIG90aGVyd2lzZS4gIElmIHRoZSByZXN1bHQgYWxyZWFkeSBjb250YWlucyBhIHByb3BlcnR5
IHdpdGggdGhlIHNhbWUga2V5LAorLy8gdGhlIHZhbHVlIHdpbGwgYmUgdXBkYXRlZC4KK3ZvaWQg
VW5pdFRlc3RJbXBsOjpSZWNvcmRQcm9wZXJ0eShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJv
cGVydHkpIHsKKyAgc3RkOjpzdHJpbmcgeG1sX2VsZW1lbnQ7CisgIFRlc3RSZXN1bHQqIHRlc3Rf
cmVzdWx0OyAgLy8gVGVzdFJlc3VsdCBhcHByb3ByaWF0ZSBmb3IgcHJvcGVydHkgcmVjb3JkaW5n
LgorCisgIGlmIChjdXJyZW50X3Rlc3RfaW5mb18gIT0gTlVMTCkgeworICAgIHhtbF9lbGVtZW50
ID0gInRlc3RjYXNlIjsKKyAgICB0ZXN0X3Jlc3VsdCA9ICYoY3VycmVudF90ZXN0X2luZm9fLT5y
ZXN1bHRfKTsKKyAgfSBlbHNlIGlmIChjdXJyZW50X3Rlc3RfY2FzZV8gIT0gTlVMTCkgeworICAg
IHhtbF9lbGVtZW50ID0gInRlc3RzdWl0ZSI7CisgICAgdGVzdF9yZXN1bHQgPSAmKGN1cnJlbnRf
dGVzdF9jYXNlXy0+YWRfaG9jX3Rlc3RfcmVzdWx0Xyk7CisgIH0gZWxzZSB7CisgICAgeG1sX2Vs
ZW1lbnQgPSAidGVzdHN1aXRlcyI7CisgICAgdGVzdF9yZXN1bHQgPSAmYWRfaG9jX3Rlc3RfcmVz
dWx0XzsKKyAgfQorICB0ZXN0X3Jlc3VsdC0+UmVjb3JkUHJvcGVydHkoeG1sX2VsZW1lbnQsIHRl
c3RfcHJvcGVydHkpOworfQorCiAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKIC8vIERpc2FibGVz
IGV2ZW50IGZvcndhcmRpbmcgaWYgdGhlIGNvbnRyb2wgaXMgY3VycmVudGx5IGluIGEgZGVhdGgg
dGVzdAogLy8gc3VicHJvY2Vzcy4gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBJbml0R29vZ2xl
VGVzdC4KQEAgLTM4MTEsMTcgKzQ5MjMsMzcgQEAgdm9pZCBVbml0VGVzdEltcGw6OlN1cHByZXNz
VGVzdEV2ZW50c0lmSW5TdWJwcm9jZXNzKCkgewogLy8gSW5pdGlhbGl6ZXMgZXZlbnQgbGlzdGVu
ZXJzIHBlcmZvcm1pbmcgWE1MIG91dHB1dCBhcyBzcGVjaWZpZWQgYnkKIC8vIFVuaXRUZXN0T3B0
aW9ucy4gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBJbml0R29vZ2xlVGVzdC4KIHZvaWQgVW5p
dFRlc3RJbXBsOjpDb25maWd1cmVYbWxPdXRwdXQoKSB7Ci0gIGNvbnN0IFN0cmluZyYgb3V0cHV0
X2Zvcm1hdCA9IFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCk7CisgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBvdXRwdXRfZm9ybWF0ID0gVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3Jt
YXQoKTsKICAgaWYgKG91dHB1dF9mb3JtYXQgPT0gInhtbCIpIHsKICAgICBsaXN0ZW5lcnMoKS0+
U2V0RGVmYXVsdFhtbEdlbmVyYXRvcihuZXcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyKAogICAg
ICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3Ry
KCkpKTsKKyAgfSBlbHNlIGlmIChvdXRwdXRfZm9ybWF0ID09ICJqc29uIikgeworICAgIGxpc3Rl
bmVycygpLT5TZXREZWZhdWx0WG1sR2VuZXJhdG9yKG5ldyBKc29uVW5pdFRlc3RSZXN1bHRQcmlu
dGVyKAorICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0Rmls
ZSgpLmNfc3RyKCkpKTsKICAgfSBlbHNlIGlmIChvdXRwdXRfZm9ybWF0ICE9ICIiKSB7Ci0gICAg
cHJpbnRmKCJXQVJOSU5HOiB1bnJlY29nbml6ZWQgb3V0cHV0IGZvcm1hdCBcIiVzXCIgaWdub3Jl
ZC5cbiIsCi0gICAgICAgICAgIG91dHB1dF9mb3JtYXQuY19zdHIoKSk7Ci0gICAgZmZsdXNoKHN0
ZG91dCk7CisgICAgR1RFU1RfTE9HXyhXQVJOSU5HKSA8PCAiV0FSTklORzogdW5yZWNvZ25pemVk
IG91dHB1dCBmb3JtYXQgXCIiCisgICAgICAgICAgICAgICAgICAgICAgICA8PCBvdXRwdXRfZm9y
bWF0IDw8ICJcIiBpZ25vcmVkLiI7CiAgIH0KIH0KIAorI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVT
VUxUU18KKy8vIEluaXRpYWxpemVzIGV2ZW50IGxpc3RlbmVycyBmb3Igc3RyZWFtaW5nIHRlc3Qg
cmVzdWx0cyBpbiBzdHJpbmcgZm9ybS4KKy8vIE11c3Qgbm90IGJlIGNhbGxlZCBiZWZvcmUgSW5p
dEdvb2dsZVRlc3QuCit2b2lkIFVuaXRUZXN0SW1wbDo6Q29uZmlndXJlU3RyZWFtaW5nT3V0cHV0
KCkgeworICBjb25zdCBzdGQ6OnN0cmluZyYgdGFyZ2V0ID0gR1RFU1RfRkxBRyhzdHJlYW1fcmVz
dWx0X3RvKTsKKyAgaWYgKCF0YXJnZXQuZW1wdHkoKSkgeworICAgIGNvbnN0IHNpemVfdCBwb3Mg
PSB0YXJnZXQuZmluZCgnOicpOworICAgIGlmIChwb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsK
KyAgICAgIGxpc3RlbmVycygpLT5BcHBlbmQobmV3IFN0cmVhbWluZ0xpc3RlbmVyKHRhcmdldC5z
dWJzdHIoMCwgcG9zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRhcmdldC5zdWJzdHIocG9zKzEpKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIEdURVNU
X0xPR18oV0FSTklORykgPDwgInVucmVjb2duaXplZCBzdHJlYW1pbmcgdGFyZ2V0IFwiIiA8PCB0
YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlwiIGlnbm9yZWQuIjsKKyAgICB9
CisgIH0KK30KKyNlbmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworCiAvLyBQZXJm
b3JtcyBpbml0aWFsaXphdGlvbiBkZXBlbmRlbnQgdXBvbiBmbGFnIHZhbHVlcyBvYnRhaW5lZCBp
bgogLy8gUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5LiAgSXMgY2FsbGVkIGZyb20gSW5pdEdvb2ds
ZVRlc3QgYWZ0ZXIgdGhlIGNhbGwgdG8KIC8vIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seS4gIElu
IGNhc2UgYSB1c2VyIG5lZ2xlY3RzIHRvIGNhbGwgSW5pdEdvb2dsZVRlc3QKQEAgLTM4MzIsNiAr
NDk2NCwxMSBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6UG9zdEZsYWdQYXJzaW5nSW5pdCgpIHsKICAg
aWYgKCFwb3N0X2ZsYWdfcGFyc2VfaW5pdF9wZXJmb3JtZWRfKSB7CiAgICAgcG9zdF9mbGFnX3Bh
cnNlX2luaXRfcGVyZm9ybWVkXyA9IHRydWU7CiAKKyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9U
RVNUX0VWRU5UX0xJU1RFTkVSXykKKyAgICAvLyBSZWdpc3RlciB0byBzZW5kIG5vdGlmaWNhdGlv
bnMgYWJvdXQga2V5IHByb2Nlc3Mgc3RhdGUgY2hhbmdlcy4KKyAgICBsaXN0ZW5lcnMoKS0+QXBw
ZW5kKG5ldyBHVEVTVF9DVVNUT01fVEVTVF9FVkVOVF9MSVNURU5FUl8oKSk7CisjZW5kaWYgIC8v
IGRlZmluZWQoR1RFU1RfQ1VTVE9NX1RFU1RfRVZFTlRfTElTVEVORVJfKQorCiAjaWYgR1RFU1Rf
SEFTX0RFQVRIX1RFU1QKICAgICBJbml0RGVhdGhUZXN0U3VicHJvY2Vzc0NvbnRyb2xJbmZvKCk7
CiAgICAgU3VwcHJlc3NUZXN0RXZlbnRzSWZJblN1YnByb2Nlc3MoKTsKQEAgLTM4NDUsNiArNDk4
MiwxOCBAQCB2b2lkIFVuaXRUZXN0SW1wbDo6UG9zdEZsYWdQYXJzaW5nSW5pdCgpIHsKICAgICAv
LyBDb25maWd1cmVzIGxpc3RlbmVycyBmb3IgWE1MIG91dHB1dC4gVGhpcyBtYWtlcyBpdCBwb3Nz
aWJsZSBmb3IgdXNlcnMKICAgICAvLyB0byBzaHV0IGRvd24gdGhlIGRlZmF1bHQgWE1MIG91dHB1
dCBiZWZvcmUgaW52b2tpbmcgUlVOX0FMTF9URVNUUy4KICAgICBDb25maWd1cmVYbWxPdXRwdXQo
KTsKKworI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKyAgICAvLyBDb25maWd1cmVzIGxp
c3RlbmVycyBmb3Igc3RyZWFtaW5nIHRlc3QgcmVzdWx0cyB0byB0aGUgc3BlY2lmaWVkIHNlcnZl
ci4KKyAgICBDb25maWd1cmVTdHJlYW1pbmdPdXRwdXQoKTsKKyNlbmRpZiAgLy8gR1RFU1RfQ0FO
X1NUUkVBTV9SRVNVTFRTXworCisjaWYgR1RFU1RfSEFTX0FCU0wKKyAgICBpZiAoR1RFU1RfRkxB
RyhpbnN0YWxsX2ZhaWx1cmVfc2lnbmFsX2hhbmRsZXIpKSB7CisgICAgICBhYnNsOjpGYWlsdXJl
U2lnbmFsSGFuZGxlck9wdGlvbnMgb3B0aW9uczsKKyAgICAgIGFic2w6Okluc3RhbGxGYWlsdXJl
U2lnbmFsSGFuZGxlcihvcHRpb25zKTsKKyAgICB9CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNM
CiAgIH0KIH0KIApAQCAtMzg1OSw3ICs1MDA4LDcgQEAgdm9pZCBVbml0VGVzdEltcGw6OlBvc3RG
bGFnUGFyc2luZ0luaXQoKSB7CiBjbGFzcyBUZXN0Q2FzZU5hbWVJcyB7CiAgcHVibGljOgogICAv
LyBDb25zdHJ1Y3Rvci4KLSAgZXhwbGljaXQgVGVzdENhc2VOYW1lSXMoY29uc3QgU3RyaW5nJiBu
YW1lKQorICBleHBsaWNpdCBUZXN0Q2FzZU5hbWVJcyhjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkK
ICAgICAgIDogbmFtZV8obmFtZSkge30KIAogICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBuYW1l
IG9mIHRlc3RfY2FzZSBtYXRjaGVzIG5hbWVfLgpAQCAtMzg2OCw3ICs1MDE3LDcgQEAgY2xhc3Mg
VGVzdENhc2VOYW1lSXMgewogICB9CiAKICBwcml2YXRlOgotICBTdHJpbmcgbmFtZV87CisgIHN0
ZDo6c3RyaW5nIG5hbWVfOwogfTsKIAogLy8gRmluZHMgYW5kIHJldHVybnMgYSBUZXN0Q2FzZSB3
aXRoIHRoZSBnaXZlbiBuYW1lLiAgSWYgb25lIGRvZXNuJ3QKQEAgLTM4NzksMjYgKzUwMjgsMjgg
QEAgY2xhc3MgVGVzdENhc2VOYW1lSXMgewogLy8gQXJndW1lbnRzOgogLy8KIC8vICAgdGVzdF9j
YXNlX25hbWU6IG5hbWUgb2YgdGhlIHRlc3QgY2FzZQorLy8gICB0eXBlX3BhcmFtOiAgICAgdGhl
IG5hbWUgb2YgdGhlIHRlc3QgY2FzZSdzIHR5cGUgcGFyYW1ldGVyLCBvciBOVUxMIGlmCisvLyAg
ICAgICAgICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3QgY2FzZS4KIC8vICAgc2V0X3VwX3RjOiAgICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0
aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBjYXNlCiAvLyAgIHRlYXJfZG93bl90YzogICBwb2lu
dGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQogVGVzdENh
c2UqIFVuaXRUZXN0SW1wbDo6R2V0VGVzdENhc2UoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb21tZW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdHlwZV9w
YXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3Q6OlNldFVwVGVz
dENhc2VGdW5jIHNldF91cF90YywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YykgewogICAvLyBDYW4gd2Ug
ZmluZCBhIFRlc3RDYXNlIHdpdGggdGhlIGdpdmVuIG5hbWU/Ci0gIGNvbnN0IHN0ZDo6dmVjdG9y
PFRlc3RDYXNlKj46OmNvbnN0X2l0ZXJhdG9yIHRlc3RfY2FzZSA9Ci0gICAgICBzdGQ6OmZpbmRf
aWYodGVzdF9jYXNlc18uYmVnaW4oKSwgdGVzdF9jYXNlc18uZW5kKCksCisgIGNvbnN0IHN0ZDo6
dmVjdG9yPFRlc3RDYXNlKj46OmNvbnN0X3JldmVyc2VfaXRlcmF0b3IgdGVzdF9jYXNlID0KKyAg
ICAgIHN0ZDo6ZmluZF9pZih0ZXN0X2Nhc2VzXy5yYmVnaW4oKSwgdGVzdF9jYXNlc18ucmVuZCgp
LAogICAgICAgICAgICAgICAgICAgIFRlc3RDYXNlTmFtZUlzKHRlc3RfY2FzZV9uYW1lKSk7CiAK
LSAgaWYgKHRlc3RfY2FzZSAhPSB0ZXN0X2Nhc2VzXy5lbmQoKSkKKyAgaWYgKHRlc3RfY2FzZSAh
PSB0ZXN0X2Nhc2VzXy5yZW5kKCkpCiAgICAgcmV0dXJuICp0ZXN0X2Nhc2U7CiAKICAgLy8gTm8u
ICBMZXQncyBjcmVhdGUgb25lLgogICBUZXN0Q2FzZSogY29uc3QgbmV3X3Rlc3RfY2FzZSA9Ci0g
ICAgICBuZXcgVGVzdENhc2UodGVzdF9jYXNlX25hbWUsIGNvbW1lbnQsIHNldF91cF90YywgdGVh
cl9kb3duX3RjKTsKKyAgICAgIG5ldyBUZXN0Q2FzZSh0ZXN0X2Nhc2VfbmFtZSwgdHlwZV9wYXJh
bSwgc2V0X3VwX3RjLCB0ZWFyX2Rvd25fdGMpOwogCiAgIC8vIElzIHRoaXMgYSBkZWF0aCB0ZXN0
IGNhc2U/Ci0gIGlmIChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpNYXRjaGVzRmlsdGVyKFN0
cmluZyh0ZXN0X2Nhc2VfbmFtZSksCisgIGlmIChpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpN
YXRjaGVzRmlsdGVyKHRlc3RfY2FzZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrRGVhdGhUZXN0Q2FzZUZpbHRlcikpIHsKICAgICAvLyBZZXMu
ICBJbnNlcnRzIHRoZSB0ZXN0IGNhc2UgYWZ0ZXIgdGhlIGxhc3QgZGVhdGggdGVzdCBjYXNlCiAg
ICAgLy8gZGVmaW5lZCBzbyBmYXIuICBUaGlzIG9ubHkgd29ya3Mgd2hlbiB0aGUgdGVzdCBjYXNl
cyBoYXZlbid0CkBAIC0zOTIyLDI3ICs1MDczLDIxIEBAIHN0YXRpYyB2b2lkIFNldFVwRW52aXJv
bm1lbnQoRW52aXJvbm1lbnQqIGVudikgeyBlbnYtPlNldFVwKCk7IH0KIHN0YXRpYyB2b2lkIFRl
YXJEb3duRW52aXJvbm1lbnQoRW52aXJvbm1lbnQqIGVudikgeyBlbnYtPlRlYXJEb3duKCk7IH0K
IAogLy8gUnVucyBhbGwgdGVzdHMgaW4gdGhpcyBVbml0VGVzdCBvYmplY3QsIHByaW50cyB0aGUg
cmVzdWx0LCBhbmQKLS8vIHJldHVybnMgMCBpZiBhbGwgdGVzdHMgYXJlIHN1Y2Nlc3NmdWwsIG9y
IDEgb3RoZXJ3aXNlLiAgSWYgYW55Ci0vLyBleGNlcHRpb24gaXMgdGhyb3duIGR1cmluZyBhIHRl
c3Qgb24gV2luZG93cywgdGhpcyB0ZXN0IGlzCi0vLyBjb25zaWRlcmVkIHRvIGJlIGZhaWxlZCwg
YnV0IHRoZSByZXN0IG9mIHRoZSB0ZXN0cyB3aWxsIHN0aWxsIGJlCi0vLyBydW4uICAoV2UgZGlz
YWJsZSBleGNlcHRpb25zIG9uIExpbnV4IGFuZCBNYWMgT1MgWCwgc28gdGhlIGlzc3VlCi0vLyBk
b2Vzbid0IGFwcGx5IHRoZXJlLikKKy8vIHJldHVybnMgdHJ1ZSBpZiBhbGwgdGVzdHMgYXJlIHN1
Y2Nlc3NmdWwuICBJZiBhbnkgZXhjZXB0aW9uIGlzCisvLyB0aHJvd24gZHVyaW5nIGEgdGVzdCwg
dGhlIHRlc3QgaXMgY29uc2lkZXJlZCB0byBiZSBmYWlsZWQsIGJ1dCB0aGUKKy8vIHJlc3Qgb2Yg
dGhlIHRlc3RzIHdpbGwgc3RpbGwgYmUgcnVuLgorLy8KIC8vIFdoZW4gcGFyYW1ldGVyaXplZCB0
ZXN0cyBhcmUgZW5hYmxlZCwgaXQgZXhwYW5kcyBhbmQgcmVnaXN0ZXJzCiAvLyBwYXJhbWV0ZXJp
emVkIHRlc3RzIGZpcnN0IGluIFJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzKCkuCiAvLyBBbGwg
b3RoZXIgZnVuY3Rpb25zIGNhbGxlZCBmcm9tIFJ1bkFsbFRlc3RzKCkgbWF5IHNhZmVseSBhc3N1
bWUgdGhhdAogLy8gcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgcmVhZHkgdG8gYmUgY291bnRlZCBh
bmQgcnVuLgotaW50IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7Ci0gIC8vIE1ha2VzIHN1
cmUgSW5pdEdvb2dsZVRlc3QoKSB3YXMgY2FsbGVkLgotICBpZiAoIUdUZXN0SXNJbml0aWFsaXpl
ZCgpKSB7Ci0gICAgcHJpbnRmKCIlcyIsCi0gICAgICAgICAgICJcblRoaXMgdGVzdCBwcm9ncmFt
IGRpZCBOT1QgY2FsbCA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0ICIKLSAgICAgICAgICAgImJl
Zm9yZSBjYWxsaW5nIFJVTl9BTExfVEVTVFMoKS4gIFBsZWFzZSBmaXggaXQuXG4iKTsKLSAgICBy
ZXR1cm4gMTsKLSAgfQorYm9vbCBVbml0VGVzdEltcGw6OlJ1bkFsbFRlc3RzKCkgeworICAvLyBU
cnVlIGlmZiBHb29nbGUgVGVzdCBpcyBpbml0aWFsaXplZCBiZWZvcmUgUlVOX0FMTF9URVNUUygp
IGlzIGNhbGxlZC4KKyAgY29uc3QgYm9vbCBndGVzdF9pc19pbml0aWFsaXplZF9iZWZvcmVfcnVu
X2FsbF90ZXN0cyA9IEdUZXN0SXNJbml0aWFsaXplZCgpOwogCiAgIC8vIERvIG5vdCBydW4gYW55
IHRlc3QgaWYgdGhlIC0taGVscCBmbGFnIHdhcyBzcGVjaWZpZWQuCiAgIGlmIChnX2hlbHBfZmxh
ZykKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdHJ1ZTsKIAogICAvLyBSZXBlYXRzIHRoZSBj
YWxsIHRvIHRoZSBwb3N0LWZsYWcgcGFyc2luZyBpbml0aWFsaXphdGlvbiBpbiBjYXNlIHRoZQog
ICAvLyB1c2VyIGRpZG4ndCBjYWxsIEluaXRHb29nbGVUZXN0LgpAQCAtMzk1OSw2ICs1MTA0LDEx
IEBAIGludCBVbml0VGVzdEltcGw6OlJ1bkFsbFRlc3RzKCkgewogCiAjaWYgR1RFU1RfSEFTX0RF
QVRIX1RFU1QKICAgaW5fc3VicHJvY2Vzc19mb3JfZGVhdGhfdGVzdCA9IChpbnRlcm5hbF9ydW5f
ZGVhdGhfdGVzdF9mbGFnXy5nZXQoKSAhPSBOVUxMKTsKKyMgaWYgZGVmaW5lZChHVEVTVF9FWFRS
QV9ERUFUSF9URVNUX0NISUxEX1NFVFVQXykKKyAgaWYgKGluX3N1YnByb2Nlc3NfZm9yX2RlYXRo
X3Rlc3QpIHsKKyAgICBHVEVTVF9FWFRSQV9ERUFUSF9URVNUX0NISUxEX1NFVFVQXygpOworICB9
CisjIGVuZGlmICAvLyBkZWZpbmVkKEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ0hJTERfU0VUVVBf
KQogI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAogCiAgIGNvbnN0IGJvb2wgc2hvdWxk
X3NoYXJkID0gU2hvdWxkU2hhcmQoa1Rlc3RUb3RhbFNoYXJkcywga1Rlc3RTaGFyZEluZGV4LApA
QCAtMzk3NCw3ICs1MTI0LDcgQEAgaW50IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7CiAg
IGlmIChHVEVTVF9GTEFHKGxpc3RfdGVzdHMpKSB7CiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxl
ZCAqYWZ0ZXIqIEZpbHRlclRlc3RzKCkgaGFzIGJlZW4gY2FsbGVkLgogICAgIExpc3RUZXN0c01h
dGNoaW5nRmlsdGVyKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHRydWU7CiAgIH0KIAog
ICByYW5kb21fc2VlZF8gPSBHVEVTVF9GTEFHKHNodWZmbGUpID8KQEAgLTM5ODUsNiArNTEzNSw3
IEBAIGludCBVbml0VGVzdEltcGw6OlJ1bkFsbFRlc3RzKCkgewogCiAgIFRlc3RFdmVudExpc3Rl
bmVyKiByZXBlYXRlciA9IGxpc3RlbmVycygpLT5yZXBlYXRlcigpOwogCisgIHN0YXJ0X3RpbWVz
dGFtcF8gPSBHZXRUaW1lSW5NaWxsaXMoKTsKICAgcmVwZWF0ZXItPk9uVGVzdFByb2dyYW1TdGFy
dCgqcGFyZW50Xyk7CiAKICAgLy8gSG93IG1hbnkgdGltZXMgdG8gcmVwZWF0IHRoZSB0ZXN0cz8g
IFdlIGRvbid0IHdhbnQgdG8gcmVwZWF0IHRoZW0KQEAgLTM5OTMsNyArNTE0NCw5IEBAIGludCBV
bml0VGVzdEltcGw6OlJ1bkFsbFRlc3RzKCkgewogICAvLyBSZXBlYXRzIGZvcmV2ZXIgaWYgdGhl
IHJlcGVhdCBjb3VudCBpcyBuZWdhdGl2ZS4KICAgY29uc3QgYm9vbCBmb3JldmVyID0gcmVwZWF0
IDwgMDsKICAgZm9yIChpbnQgaSA9IDA7IGZvcmV2ZXIgfHwgaSAhPSByZXBlYXQ7IGkrKykgewot
ICAgIENsZWFyUmVzdWx0KCk7CisgICAgLy8gV2Ugd2FudCB0byBwcmVzZXJ2ZSBmYWlsdXJlcyBn
ZW5lcmF0ZWQgYnkgYWQtaG9jIHRlc3QKKyAgICAvLyBhc3NlcnRpb25zIGV4ZWN1dGVkIGJlZm9y
ZSBSVU5fQUxMX1RFU1RTKCkuCisgICAgQ2xlYXJOb25BZEhvY1Rlc3RSZXN1bHQoKTsKIAogICAg
IGNvbnN0IFRpbWVJbk1pbGxpcyBzdGFydCA9IEdldFRpbWVJbk1pbGxpcygpOwogCkBAIC00MDU4
LDggKzUyMTEsMjEgQEAgaW50IFVuaXRUZXN0SW1wbDo6UnVuQWxsVGVzdHMoKSB7CiAKICAgcmVw
ZWF0ZXItPk9uVGVzdFByb2dyYW1FbmQoKnBhcmVudF8pOwogCi0gIC8vIFJldHVybnMgMCBpZiBh
bGwgdGVzdHMgcGFzc2VkLCBvciAxIG90aGVyIHdpc2UuCi0gIHJldHVybiBmYWlsZWQgPyAxIDog
MDsKKyAgaWYgKCFndGVzdF9pc19pbml0aWFsaXplZF9iZWZvcmVfcnVuX2FsbF90ZXN0cykgewor
ICAgIENvbG9yZWRQcmludGYoCisgICAgICAgIENPTE9SX1JFRCwKKyAgICAgICAgIlxuSU1QT1JU
QU5UIE5PVElDRSAtIERPIE5PVCBJR05PUkU6XG4iCisgICAgICAgICJUaGlzIHRlc3QgcHJvZ3Jh
bSBkaWQgTk9UIGNhbGwgIiBHVEVTVF9JTklUX0dPT0dMRV9URVNUX05BTUVfCisgICAgICAgICIo
KSBiZWZvcmUgY2FsbGluZyBSVU5fQUxMX1RFU1RTKCkuIFRoaXMgaXMgSU5WQUxJRC4gU29vbiAi
IEdURVNUX05BTUVfCisgICAgICAgICIgd2lsbCBzdGFydCB0byBlbmZvcmNlIHRoZSB2YWxpZCB1
c2FnZS4gIgorICAgICAgICAiUGxlYXNlIGZpeCBpdCBBU0FQLCBvciBJVCBXSUxMIFNUQVJUIFRP
IEZBSUwuXG4iKTsgIC8vIE5PTElOVAorI2lmIEdURVNUX0ZPUl9HT09HTEVfCisgICAgQ29sb3Jl
ZFByaW50ZihDT0xPUl9SRUQsCisgICAgICAgICAgICAgICAgICAiRm9yIG1vcmUgZGV0YWlscywg
c2VlIGh0dHA6Ly93aWtpL01haW4vVmFsaWRHVW5pdE1haW4uXG4iKTsKKyNlbmRpZiAgLy8gR1RF
U1RfRk9SX0dPT0dMRV8KKyAgfQorCisgIHJldHVybiAhZmFpbGVkOwogfQogCiAvLyBSZWFkcyB0
aGUgR1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEUgZW52aXJvbm1lbnQgdmFyaWFibGUsIGFuZCBjcmVh
dGVzIHRoZSBmaWxlCkBAIC00MTMzLDcgKzUyOTksNyBAQCBib29sIFNob3VsZFNoYXJkKGNvbnN0
IGNoYXIqIHRvdGFsX3NoYXJkc19lbnYsCiAvLyBQYXJzZXMgdGhlIGVudmlyb25tZW50IHZhcmlh
YmxlIHZhciBhcyBhbiBJbnQzMi4gSWYgaXQgaXMgdW5zZXQsCiAvLyByZXR1cm5zIGRlZmF1bHRf
dmFsLiBJZiBpdCBpcyBub3QgYW4gSW50MzIsIHByaW50cyBhbiBlcnJvcgogLy8gYW5kIGFib3J0
cy4KLUludDMyIEludDMyRnJvbUVudk9yRGllKGNvbnN0IGNoYXIqIGNvbnN0IHZhciwgSW50MzIg
ZGVmYXVsdF92YWwpIHsKK0ludDMyIEludDMyRnJvbUVudk9yRGllKGNvbnN0IGNoYXIqIHZhciwg
SW50MzIgZGVmYXVsdF92YWwpIHsKICAgY29uc3QgY2hhciogc3RyX3ZhbCA9IHBvc2l4OjpHZXRF
bnYodmFyKTsKICAgaWYgKHN0cl92YWwgPT0gTlVMTCkgewogICAgIHJldHVybiBkZWZhdWx0X3Zh
bDsKQEAgLTQxNjAsOCArNTMyNiw4IEBAIGJvb2wgU2hvdWxkUnVuVGVzdE9uU2hhcmQoaW50IHRv
dGFsX3NoYXJkcywgaW50IHNoYXJkX2luZGV4LCBpbnQgdGVzdF9pZCkgewogLy8gZWFjaCBUZXN0
Q2FzZSBhbmQgVGVzdEluZm8gb2JqZWN0LgogLy8gSWYgc2hhcmRfdGVzdHMgPT0gdHJ1ZSwgZnVy
dGhlciBmaWx0ZXJzIHRlc3RzIGJhc2VkIG9uIHNoYXJkaW5nCiAvLyB2YXJpYWJsZXMgaW4gdGhl
IGVudmlyb25tZW50IC0gc2VlCi0vLyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVz
dC93aWtpL0dvb2dsZVRlc3RBZHZhbmNlZEd1aWRlLgotLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9m
IHRlc3RzIHRoYXQgc2hvdWxkIHJ1bi4KKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29v
Z2xldGVzdC9ibG9iL21hc3Rlci9nb29nbGV0ZXN0L2RvY3MvYWR2YW5jZWQubWQKKy8vIC4gUmV0
dXJucyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRoYXQgc2hvdWxkIHJ1bi4KIGludCBVbml0VGVzdElt
cGw6OkZpbHRlclRlc3RzKFJlYWN0aW9uVG9TaGFyZGluZyBzaGFyZF90ZXN0cykgewogICBjb25z
dCBJbnQzMiB0b3RhbF9zaGFyZHMgPSBzaGFyZF90ZXN0cyA9PSBIT05PUl9TSEFSRElOR19QUk9U
T0NPTCA/CiAgICAgICBJbnQzMkZyb21FbnZPckRpZShrVGVzdFRvdGFsU2hhcmRzLCAtMSkgOiAt
MTsKQEAgLTQxNzYsMTIgKzUzNDIsMTIgQEAgaW50IFVuaXRUZXN0SW1wbDo6RmlsdGVyVGVzdHMo
UmVhY3Rpb25Ub1NoYXJkaW5nIHNoYXJkX3Rlc3RzKSB7CiAgIGludCBudW1fc2VsZWN0ZWRfdGVz
dHMgPSAwOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXNfLnNpemUoKTsgaSsr
KSB7CiAgICAgVGVzdENhc2UqIGNvbnN0IHRlc3RfY2FzZSA9IHRlc3RfY2FzZXNfW2ldOwotICAg
IGNvbnN0IFN0cmluZyAmdGVzdF9jYXNlX25hbWUgPSB0ZXN0X2Nhc2UtPm5hbWUoKTsKKyAgICBj
b25zdCBzdGQ6OnN0cmluZyAmdGVzdF9jYXNlX25hbWUgPSB0ZXN0X2Nhc2UtPm5hbWUoKTsKICAg
ICB0ZXN0X2Nhc2UtPnNldF9zaG91bGRfcnVuKGZhbHNlKTsKIAogICAgIGZvciAoc2l6ZV90IGog
PSAwOyBqIDwgdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpLnNpemUoKTsgaisrKSB7CiAgICAg
ICBUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0gdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgp
W2pdOwotICAgICAgY29uc3QgU3RyaW5nIHRlc3RfbmFtZSh0ZXN0X2luZm8tPm5hbWUoKSk7Cisg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0X25hbWUodGVzdF9pbmZvLT5uYW1lKCkpOwogICAg
ICAgLy8gQSB0ZXN0IGlzIGRpc2FibGVkIGlmIHRlc3QgY2FzZSBuYW1lIG9yIHRlc3QgbmFtZSBt
YXRjaGVzCiAgICAgICAvLyBrRGlzYWJsZVRlc3RGaWx0ZXIuCiAgICAgICBjb25zdCBib29sIGlz
X2Rpc2FibGVkID0KQEAgLTQxODksMzQgKzUzNTUsNjAgQEAgaW50IFVuaXRUZXN0SW1wbDo6Rmls
dGVyVGVzdHMoUmVhY3Rpb25Ub1NoYXJkaW5nIHNoYXJkX3Rlc3RzKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrRGlzYWJsZVRlc3RGaWx0ZXIp
IHx8CiAgICAgICAgICAgaW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcih0
ZXN0X25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBrRGlzYWJsZVRlc3RGaWx0ZXIpOwotICAgICAgdGVzdF9pbmZvLT5pbXBsKCktPnNldF9p
c19kaXNhYmxlZChpc19kaXNhYmxlZCk7CisgICAgICB0ZXN0X2luZm8tPmlzX2Rpc2FibGVkXyA9
IGlzX2Rpc2FibGVkOwogCiAgICAgICBjb25zdCBib29sIG1hdGNoZXNfZmlsdGVyID0KICAgICAg
ICAgICBpbnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOjpGaWx0ZXJNYXRjaGVzVGVzdCh0ZXN0X2Nh
c2VfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0X25hbWUpOwotICAgICAgdGVzdF9pbmZvLT5pbXBsKCktPnNldF9tYXRjaGVz
X2ZpbHRlcihtYXRjaGVzX2ZpbHRlcik7CisgICAgICB0ZXN0X2luZm8tPm1hdGNoZXNfZmlsdGVy
XyA9IG1hdGNoZXNfZmlsdGVyOwogCiAgICAgICBjb25zdCBib29sIGlzX3J1bm5hYmxlID0KICAg
ICAgICAgICAoR1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cykgfHwgIWlzX2Rpc2Fi
bGVkKSAmJgogICAgICAgICAgIG1hdGNoZXNfZmlsdGVyOwogCi0gICAgICBjb25zdCBib29sIGlz
X3NlbGVjdGVkID0gaXNfcnVubmFibGUgJiYKLSAgICAgICAgICAoc2hhcmRfdGVzdHMgPT0gSUdO
T1JFX1NIQVJESU5HX1BST1RPQ09MIHx8Ci0gICAgICAgICAgIFNob3VsZFJ1blRlc3RPblNoYXJk
KHRvdGFsX3NoYXJkcywgc2hhcmRfaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bV9ydW5uYWJsZV90ZXN0cykpOworICAgICAgY29uc3QgYm9vbCBpc19pbl9hbm90aGVy
X3NoYXJkID0KKyAgICAgICAgICBzaGFyZF90ZXN0cyAhPSBJR05PUkVfU0hBUkRJTkdfUFJPVE9D
T0wgJiYKKyAgICAgICAgICAhU2hvdWxkUnVuVGVzdE9uU2hhcmQodG90YWxfc2hhcmRzLCBzaGFy
ZF9pbmRleCwgbnVtX3J1bm5hYmxlX3Rlc3RzKTsKKyAgICAgIHRlc3RfaW5mby0+aXNfaW5fYW5v
dGhlcl9zaGFyZF8gPSBpc19pbl9hbm90aGVyX3NoYXJkOworICAgICAgY29uc3QgYm9vbCBpc19z
ZWxlY3RlZCA9IGlzX3J1bm5hYmxlICYmICFpc19pbl9hbm90aGVyX3NoYXJkOwogCiAgICAgICBu
dW1fcnVubmFibGVfdGVzdHMgKz0gaXNfcnVubmFibGU7CiAgICAgICBudW1fc2VsZWN0ZWRfdGVz
dHMgKz0gaXNfc2VsZWN0ZWQ7CiAKLSAgICAgIHRlc3RfaW5mby0+aW1wbCgpLT5zZXRfc2hvdWxk
X3J1bihpc19zZWxlY3RlZCk7CisgICAgICB0ZXN0X2luZm8tPnNob3VsZF9ydW5fID0gaXNfc2Vs
ZWN0ZWQ7CiAgICAgICB0ZXN0X2Nhc2UtPnNldF9zaG91bGRfcnVuKHRlc3RfY2FzZS0+c2hvdWxk
X3J1bigpIHx8IGlzX3NlbGVjdGVkKTsKICAgICB9CiAgIH0KICAgcmV0dXJuIG51bV9zZWxlY3Rl
ZF90ZXN0czsKIH0KIAorLy8gUHJpbnRzIHRoZSBnaXZlbiBDLXN0cmluZyBvbiBhIHNpbmdsZSBs
aW5lIGJ5IHJlcGxhY2luZyBhbGwgJ1xuJworLy8gY2hhcmFjdGVycyB3aXRoIHN0cmluZyAiXFxu
Ii4gIElmIHRoZSBvdXRwdXQgdGFrZXMgbW9yZSB0aGFuCisvLyBtYXhfbGVuZ3RoIGNoYXJhY3Rl
cnMsIG9ubHkgcHJpbnRzIHRoZSBmaXJzdCBtYXhfbGVuZ3RoIGNoYXJhY3RlcnMKKy8vIGFuZCAi
Li4uIi4KK3N0YXRpYyB2b2lkIFByaW50T25PbmVMaW5lKGNvbnN0IGNoYXIqIHN0ciwgaW50IG1h
eF9sZW5ndGgpIHsKKyAgaWYgKHN0ciAhPSBOVUxMKSB7CisgICAgZm9yIChpbnQgaSA9IDA7ICpz
dHIgIT0gJ1wwJzsgKytzdHIpIHsKKyAgICAgIGlmIChpID49IG1heF9sZW5ndGgpIHsKKyAgICAg
ICAgcHJpbnRmKCIuLi4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBpZiAoKnN0
ciA9PSAnXG4nKSB7CisgICAgICAgIHByaW50ZigiXFxuIik7CisgICAgICAgIGkgKz0gMjsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHByaW50ZigiJWMiLCAqc3RyKTsKKyAgICAgICAgKytpOwor
ICAgICAgfQorICAgIH0KKyAgfQorfQorCiAvLyBQcmludHMgdGhlIG5hbWVzIG9mIHRoZSB0ZXN0
cyBtYXRjaGluZyB0aGUgdXNlci1zcGVjaWZpZWQgZmlsdGVyIGZsYWcuCiB2b2lkIFVuaXRUZXN0
SW1wbDo6TGlzdFRlc3RzTWF0Y2hpbmdGaWx0ZXIoKSB7CisgIC8vIFByaW50IGF0IG1vc3QgdGhp
cyBtYW55IGNoYXJhY3RlcnMgZm9yIGVhY2ggdHlwZS92YWx1ZSBwYXJhbWV0ZXIuCisgIGNvbnN0
IGludCBrTWF4UGFyYW1MZW5ndGggPSAyNTA7CisKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0
ZXN0X2Nhc2VzXy5zaXplKCk7IGkrKykgewogICAgIGNvbnN0IFRlc3RDYXNlKiBjb25zdCB0ZXN0
X2Nhc2UgPSB0ZXN0X2Nhc2VzX1tpXTsKICAgICBib29sIHByaW50ZWRfdGVzdF9jYXNlX25hbWUg
PSBmYWxzZTsKQEAgLTQyMjQsMTYgKzU0MTYsNDcgQEAgdm9pZCBVbml0VGVzdEltcGw6Okxpc3RU
ZXN0c01hdGNoaW5nRmlsdGVyKCkgewogICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgdGVzdF9j
YXNlLT50ZXN0X2luZm9fbGlzdCgpLnNpemUoKTsgaisrKSB7CiAgICAgICBjb25zdCBUZXN0SW5m
byogY29uc3QgdGVzdF9pbmZvID0KICAgICAgICAgICB0ZXN0X2Nhc2UtPnRlc3RfaW5mb19saXN0
KClbal07Ci0gICAgICBpZiAodGVzdF9pbmZvLT5tYXRjaGVzX2ZpbHRlcigpKSB7CisgICAgICBp
ZiAodGVzdF9pbmZvLT5tYXRjaGVzX2ZpbHRlcl8pIHsKICAgICAgICAgaWYgKCFwcmludGVkX3Rl
c3RfY2FzZV9uYW1lKSB7CiAgICAgICAgICAgcHJpbnRlZF90ZXN0X2Nhc2VfbmFtZSA9IHRydWU7
Ci0gICAgICAgICAgcHJpbnRmKCIlcy5cbiIsIHRlc3RfY2FzZS0+bmFtZSgpKTsKKyAgICAgICAg
ICBwcmludGYoIiVzLiIsIHRlc3RfY2FzZS0+bmFtZSgpKTsKKyAgICAgICAgICBpZiAodGVzdF9j
YXNlLT50eXBlX3BhcmFtKCkgIT0gTlVMTCkgeworICAgICAgICAgICAgcHJpbnRmKCIgICMgJXMg
PSAiLCBrVHlwZVBhcmFtTGFiZWwpOworICAgICAgICAgICAgLy8gV2UgcHJpbnQgdGhlIHR5cGUg
cGFyYW1ldGVyIG9uIGEgc2luZ2xlIGxpbmUgdG8gbWFrZQorICAgICAgICAgICAgLy8gdGhlIG91
dHB1dCBlYXN5IHRvIHBhcnNlIGJ5IGEgcHJvZ3JhbS4KKyAgICAgICAgICAgIFByaW50T25PbmVM
aW5lKHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgpLCBrTWF4UGFyYW1MZW5ndGgpOworICAgICAgICAg
IH0KKyAgICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAgIH0KKyAgICAgICAgcHJpbnRmKCIg
ICVzIiwgdGVzdF9pbmZvLT5uYW1lKCkpOworICAgICAgICBpZiAodGVzdF9pbmZvLT52YWx1ZV9w
YXJhbSgpICE9IE5VTEwpIHsKKyAgICAgICAgICBwcmludGYoIiAgIyAlcyA9ICIsIGtWYWx1ZVBh
cmFtTGFiZWwpOworICAgICAgICAgIC8vIFdlIHByaW50IHRoZSB2YWx1ZSBwYXJhbWV0ZXIgb24g
YSBzaW5nbGUgbGluZSB0byBtYWtlIHRoZQorICAgICAgICAgIC8vIG91dHB1dCBlYXN5IHRvIHBh
cnNlIGJ5IGEgcHJvZ3JhbS4KKyAgICAgICAgICBQcmludE9uT25lTGluZSh0ZXN0X2luZm8tPnZh
bHVlX3BhcmFtKCksIGtNYXhQYXJhbUxlbmd0aCk7CiAgICAgICAgIH0KLSAgICAgICAgcHJpbnRm
KCIgICVzXG4iLCB0ZXN0X2luZm8tPm5hbWUoKSk7CisgICAgICAgIHByaW50ZigiXG4iKTsKICAg
ICAgIH0KICAgICB9CiAgIH0KICAgZmZsdXNoKHN0ZG91dCk7CisgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBvdXRwdXRfZm9ybWF0ID0gVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQoKTsKKyAg
aWYgKG91dHB1dF9mb3JtYXQgPT0gInhtbCIgfHwgb3V0cHV0X2Zvcm1hdCA9PSAianNvbiIpIHsK
KyAgICBGSUxFKiBmaWxlb3V0ID0gT3BlbkZpbGVGb3JXcml0aW5nKAorICAgICAgICBVbml0VGVz
dE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOworICAgIHN0
ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgICBpZiAob3V0cHV0X2Zvcm1hdCA9PSAieG1sIikg
eworICAgICAgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyKAorICAgICAgICAgIFVuaXRUZXN0T3B0
aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIoKSkKKyAgICAgICAgICAu
UHJpbnRYbWxUZXN0c0xpc3QoJnN0cmVhbSwgdGVzdF9jYXNlc18pOworICAgIH0gZWxzZSBpZiAo
b3V0cHV0X2Zvcm1hdCA9PSAianNvbiIpIHsKKyAgICAgIEpzb25Vbml0VGVzdFJlc3VsdFByaW50
ZXIoCisgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZp
bGUoKS5jX3N0cigpKQorICAgICAgICAgIC5QcmludEpzb25UZXN0TGlzdCgmc3RyZWFtLCB0ZXN0
X2Nhc2VzXyk7CisgICAgfQorICAgIGZwcmludGYoZmlsZW91dCwgIiVzIiwgU3RyaW5nU3RyZWFt
VG9TdHJpbmcoJnN0cmVhbSkuY19zdHIoKSk7CisgICAgZmNsb3NlKGZpbGVvdXQpOworICB9CiB9
CiAKIC8vIFNldHMgdGhlIE9TIHN0YWNrIHRyYWNlIGdldHRlci4KQEAgLTQyNTQsMTcgKzU0Nzcs
MjUgQEAgdm9pZCBVbml0VGVzdEltcGw6OnNldF9vc19zdGFja190cmFjZV9nZXR0ZXIoCiAvLyBn
ZXR0ZXIsIGFuZCByZXR1cm5zIGl0LgogT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlKiBVbml0
VGVzdEltcGw6Om9zX3N0YWNrX3RyYWNlX2dldHRlcigpIHsKICAgaWYgKG9zX3N0YWNrX3RyYWNl
X2dldHRlcl8gPT0gTlVMTCkgeworI2lmZGVmIEdURVNUX09TX1NUQUNLX1RSQUNFX0dFVFRFUl8K
KyAgICBvc19zdGFja190cmFjZV9nZXR0ZXJfID0gbmV3IEdURVNUX09TX1NUQUNLX1RSQUNFX0dF
VFRFUl87CisjZWxzZQogICAgIG9zX3N0YWNrX3RyYWNlX2dldHRlcl8gPSBuZXcgT3NTdGFja1Ry
YWNlR2V0dGVyOworI2VuZGlmICAvLyBHVEVTVF9PU19TVEFDS19UUkFDRV9HRVRURVJfCiAgIH0K
IAogICByZXR1cm4gb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXzsKIH0KIAotLy8gUmV0dXJucyB0aGUg
VGVzdFJlc3VsdCBmb3IgdGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLCBvcgotLy8g
dGhlIFRlc3RSZXN1bHQgZm9yIHRoZSBhZCBob2MgdGVzdCBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcu
CisvLyBSZXR1cm5zIHRoZSBtb3N0IHNwZWNpZmljIFRlc3RSZXN1bHQgY3VycmVudGx5IHJ1bm5p
bmcuCiBUZXN0UmVzdWx0KiBVbml0VGVzdEltcGw6OmN1cnJlbnRfdGVzdF9yZXN1bHQoKSB7Ci0g
IHJldHVybiBjdXJyZW50X3Rlc3RfaW5mb18gPwotICAgIGN1cnJlbnRfdGVzdF9pbmZvXy0+aW1w
bCgpLT5yZXN1bHQoKSA6ICZhZF9ob2NfdGVzdF9yZXN1bHRfOworICBpZiAoY3VycmVudF90ZXN0
X2luZm9fICE9IE5VTEwpIHsKKyAgICByZXR1cm4gJmN1cnJlbnRfdGVzdF9pbmZvXy0+cmVzdWx0
XzsKKyAgfQorICBpZiAoY3VycmVudF90ZXN0X2Nhc2VfICE9IE5VTEwpIHsKKyAgICByZXR1cm4g
JmN1cnJlbnRfdGVzdF9jYXNlXy0+YWRfaG9jX3Rlc3RfcmVzdWx0XzsKKyAgfQorICByZXR1cm4g
JmFkX2hvY190ZXN0X3Jlc3VsdF87CiB9CiAKIC8vIFNodWZmbGVzIGFsbCB0ZXN0IGNhc2VzLCBh
bmQgdGhlIHRlc3RzIHdpdGhpbiBlYWNoIHRlc3QgY2FzZSwKQEAgLTQyOTMsMzMgKzU1MjQsNyBA
QCB2b2lkIFVuaXRUZXN0SW1wbDo6VW5zaHVmZmxlVGVzdHMoKSB7CiAgIH0KIH0KIAotLy8gVGVz
dEluZm9JbXBsIGNvbnN0cnVjdG9yLiBUaGUgbmV3IGluc3RhbmNlIGFzc3VtZXMgb3duZXJzaGlw
IG9mIHRoZSB0ZXN0Ci0vLyBmYWN0b3J5IG9iamVjdC4KLVRlc3RJbmZvSW1wbDo6VGVzdEluZm9J
bXBsKFRlc3RJbmZvKiBwYXJlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBhX3Rlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogYV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV90
ZXN0X2Nhc2VfY29tbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGFfY29tbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVJZCBhX2ZpeHR1cmVf
Y2xhc3NfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3Rv
cnlCYXNlKiBmYWN0b3J5KSA6Ci0gICAgcGFyZW50XyhwYXJlbnQpLAotICAgIHRlc3RfY2FzZV9u
YW1lXyhTdHJpbmcoYV90ZXN0X2Nhc2VfbmFtZSkpLAotICAgIG5hbWVfKFN0cmluZyhhX25hbWUp
KSwKLSAgICB0ZXN0X2Nhc2VfY29tbWVudF8oU3RyaW5nKGFfdGVzdF9jYXNlX2NvbW1lbnQpKSwK
LSAgICBjb21tZW50XyhTdHJpbmcoYV9jb21tZW50KSksCi0gICAgZml4dHVyZV9jbGFzc19pZF8o
YV9maXh0dXJlX2NsYXNzX2lkKSwKLSAgICBzaG91bGRfcnVuXyhmYWxzZSksCi0gICAgaXNfZGlz
YWJsZWRfKGZhbHNlKSwKLSAgICBtYXRjaGVzX2ZpbHRlcl8oZmFsc2UpLAotICAgIGZhY3Rvcnlf
KGZhY3RvcnkpIHsKLX0KLQotLy8gVGVzdEluZm9JbXBsIGRlc3RydWN0b3IuCi1UZXN0SW5mb0lt
cGw6On5UZXN0SW5mb0ltcGwoKSB7Ci0gIGRlbGV0ZSBmYWN0b3J5XzsKLX0KLQotLy8gUmV0dXJu
cyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBhcyBhIFN0cmluZy4KKy8vIFJldHVybnMgdGhl
IGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYW4gc3RkOjpzdHJpbmcuCiAvLwogLy8gVGhlIG1h
eGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZCBpcyBzcGVjaWZpZWQg
YnkKIC8vIHRoZSBndGVzdF9zdGFja190cmFjZV9kZXB0aCBmbGFnLiAgVGhlIHNraXBfY291bnQg
cGFyYW1ldGVyCkBAIC00MzI5LDE1ICs1NTM0LDE1IEBAIFRlc3RJbmZvSW1wbDo6flRlc3RJbmZv
SW1wbCgpIHsKIC8vIEZvciBleGFtcGxlLCBpZiBGb28oKSBjYWxscyBCYXIoKSwgd2hpY2ggaW4g
dHVybiBjYWxscwogLy8gR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCguLi4sIDEpLCBG
b28oKSB3aWxsIGJlIGluY2x1ZGVkIGluCiAvLyB0aGUgdHJhY2UgYnV0IEJhcigpIGFuZCBHZXRD
dXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKCkgd29uJ3QuCi1TdHJpbmcgR2V0Q3VycmVudE9z
U3RhY2tUcmFjZUV4Y2VwdFRvcChVbml0VGVzdCogLyp1bml0X3Rlc3QqLywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBza2lwX2NvdW50KSB7CitzdGQ6OnN0cmlu
ZyBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKFVuaXRUZXN0KiAvKnVuaXRfdGVzdCov
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2tpcF9j
b3VudCkgewogICAvLyBXZSBwYXNzIHNraXBfY291bnQgKyAxIHRvIHNraXAgdGhpcyB3cmFwcGVy
IGZ1bmN0aW9uIGluIGFkZGl0aW9uCiAgIC8vIHRvIHdoYXQgdGhlIHVzZXIgcmVhbGx5IHdhbnRz
IHRvIHNraXAuCiAgIHJldHVybiBHZXRVbml0VGVzdEltcGwoKS0+Q3VycmVudE9zU3RhY2tUcmFj
ZUV4Y2VwdFRvcChza2lwX2NvdW50ICsgMSk7CiB9CiAKLS8vIFVzZWQgYnkgdGhlIEdURVNUX0hJ
REVfVU5SRUFDSEFCTEVfQ09ERV8gbWFjcm8gdG8gc3VwcHJlc3MgdW5yZWFjaGFibGUKLS8vIGNv
ZGUgd2FybmluZ3MuCisvLyBVc2VkIGJ5IHRoZSBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9D
T0RFX1dBUk5JTkdfQkVMT1dfIG1hY3JvIHRvCisvLyBzdXBwcmVzcyB1bnJlYWNoYWJsZSBjb2Rl
IHdhcm5pbmdzLgogbmFtZXNwYWNlIHsKIGNsYXNzIENsYXNzVW5pcXVlVG9BbHdheXNUcnVlIHt9
OwogfQpAQCAtNDM3MSwxNCArNTU3NiwxMyBAQCBib29sIFNraXBQcmVmaXgoY29uc3QgY2hhciog
cHJlZml4LCBjb25zdCBjaGFyKiogcHN0cikgewogLy8gcGFydCBjYW4gYmUgb21pdHRlZC4KIC8v
CiAvLyBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZywgb3IgTlVMTCBpZiB0aGUgcGFyc2lu
ZyBmYWlsZWQuCi1jb25zdCBjaGFyKiBQYXJzZUZsYWdWYWx1ZShjb25zdCBjaGFyKiBzdHIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmbGFnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBkZWZfb3B0aW9uYWwpIHsKK3N0YXRpYyBjb25zdCBjaGFyKiBQ
YXJzZUZsYWdWYWx1ZShjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWZfb3B0aW9uYWwpIHsKICAgLy8gc3Ry
IGFuZCBmbGFnIG11c3Qgbm90IGJlIE5VTEwuCiAgIGlmIChzdHIgPT0gTlVMTCB8fCBmbGFnID09
IE5VTEwpIHJldHVybiBOVUxMOwogCiAgIC8vIFRoZSBmbGFnIG11c3Qgc3RhcnQgd2l0aCAiLS0i
IGZvbGxvd2VkIGJ5IEdURVNUX0ZMQUdfUFJFRklYXy4KLSAgY29uc3QgU3RyaW5nIGZsYWdfc3Ry
ID0gU3RyaW5nOjpGb3JtYXQoIi0tJXMlcyIsIEdURVNUX0ZMQUdfUFJFRklYXywgZmxhZyk7Cisg
IGNvbnN0IHN0ZDo6c3RyaW5nIGZsYWdfc3RyID0gc3RkOjpzdHJpbmcoIi0tIikgKyBHVEVTVF9G
TEFHX1BSRUZJWF8gKyBmbGFnOwogICBjb25zdCBzaXplX3QgZmxhZ19sZW4gPSBmbGFnX3N0ci5s
ZW5ndGgoKTsKICAgaWYgKHN0cm5jbXAoc3RyLCBmbGFnX3N0ci5jX3N0cigpLCBmbGFnX2xlbikg
IT0gMCkgcmV0dXJuIE5VTEw7CiAKQEAgLTQ0MDksNyArNTYxMyw3IEBAIGNvbnN0IGNoYXIqIFBh
cnNlRmxhZ1ZhbHVlKGNvbnN0IGNoYXIqIHN0ciwKIC8vCiAvLyBPbiBzdWNjZXNzLCBzdG9yZXMg
dGhlIHZhbHVlIG9mIHRoZSBmbGFnIGluICp2YWx1ZSwgYW5kIHJldHVybnMKIC8vIHRydWUuICBP
biBmYWlsdXJlLCByZXR1cm5zIGZhbHNlIHdpdGhvdXQgY2hhbmdpbmcgKnZhbHVlLgotYm9vbCBQ
YXJzZUJvb2xGbGFnKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgY2hhciogZmxhZywgYm9vbCogdmFs
dWUpIHsKK3N0YXRpYyBib29sIFBhcnNlQm9vbEZsYWcoY29uc3QgY2hhciogc3RyLCBjb25zdCBj
aGFyKiBmbGFnLCBib29sKiB2YWx1ZSkgewogICAvLyBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgZmxh
ZyBhcyBhIHN0cmluZy4KICAgY29uc3QgY2hhciogY29uc3QgdmFsdWVfc3RyID0gUGFyc2VGbGFn
VmFsdWUoc3RyLCBmbGFnLCB0cnVlKTsKIApAQCAtNDQ0Myw3ICs1NjQ3LDggQEAgYm9vbCBQYXJz
ZUludDMyRmxhZyhjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsIEludDMyKiB2YWx1
ZSkgewogLy8KIC8vIE9uIHN1Y2Nlc3MsIHN0b3JlcyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcgaW4g
KnZhbHVlLCBhbmQgcmV0dXJucwogLy8gdHJ1ZS4gIE9uIGZhaWx1cmUsIHJldHVybnMgZmFsc2Ug
d2l0aG91dCBjaGFuZ2luZyAqdmFsdWUuCi1ib29sIFBhcnNlU3RyaW5nRmxhZyhjb25zdCBjaGFy
KiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsIFN0cmluZyogdmFsdWUpIHsKK3RlbXBsYXRlIDx0eXBl
bmFtZSBTdHJpbmc+CitzdGF0aWMgYm9vbCBQYXJzZVN0cmluZ0ZsYWcoY29uc3QgY2hhciogc3Ry
LCBjb25zdCBjaGFyKiBmbGFnLCBTdHJpbmcqIHZhbHVlKSB7CiAgIC8vIEdldHMgdGhlIHZhbHVl
IG9mIHRoZSBmbGFnIGFzIGEgc3RyaW5nLgogICBjb25zdCBjaGFyKiBjb25zdCB2YWx1ZV9zdHIg
PSBQYXJzZUZsYWdWYWx1ZShzdHIsIGZsYWcsIGZhbHNlKTsKIApAQCAtNDQ3OSw3ICs1Njg0LDcg
QEAgc3RhdGljIGJvb2wgSGFzR29vZ2xlVGVzdEZsYWdQcmVmaXgoY29uc3QgY2hhciogc3RyKSB7
CiAvLyAgIEBZICAgIGNoYW5nZXMgdGhlIGNvbG9yIHRvIHllbGxvdy4KIC8vICAgQEQgICAgY2hh
bmdlcyB0byB0aGUgZGVmYXVsdCB0ZXJtaW5hbCB0ZXh0IGNvbG9yLgogLy8KLS8vIFRPRE8od2Fu
QGdvb2dsZS5jb20pOiBXcml0ZSB0ZXN0cyBmb3IgdGhpcyBvbmNlIHdlIGFkZCBzdGRvdXQKKy8v
IEZJWE1FOiBXcml0ZSB0ZXN0cyBmb3IgdGhpcyBvbmNlIHdlIGFkZCBzdGRvdXQKIC8vIGNhcHR1
cmluZyB0byBHb29nbGUgVGVzdC4KIHN0YXRpYyB2b2lkIFByaW50Q29sb3JFbmNvZGVkKGNvbnN0
IGNoYXIqIHN0cikgewogICBHVGVzdENvbG9yIGNvbG9yID0gQ09MT1JfREVGQVVMVDsgIC8vIFRo
ZSBjdXJyZW50IGNvbG9yLgpAQCAtNDQ5NSw3ICs1NzAwLDcgQEAgc3RhdGljIHZvaWQgUHJpbnRD
b2xvckVuY29kZWQoY29uc3QgY2hhciogc3RyKSB7CiAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgQ29sb3JlZFByaW50Zihjb2xvciwgIiVzIiwgU3RyaW5nKHN0ciwgcCAtIHN0cikuY19zdHIo
KSk7CisgICAgQ29sb3JlZFByaW50Zihjb2xvciwgIiVzIiwgc3RkOjpzdHJpbmcoc3RyLCBwKS5j
X3N0cigpKTsKIAogICAgIGNvbnN0IGNoYXIgY2ggPSBwWzFdOwogICAgIHN0ciA9IHAgKyAyOwpA
QCAtNDU0NSwyNCArNTc1MCwyOCBAQCBzdGF0aWMgY29uc3QgY2hhciBrQ29sb3JFbmNvZGVkSGVs
cE1lc3NhZ2VbXSA9CiAiICAgICAgRW5hYmxlL2Rpc2FibGUgY29sb3JlZCBvdXRwdXQuIFRoZSBk
ZWZhdWx0IGlzIEBHYXV0b0BELlxuIgogIiAgLUBHLSIgR1RFU1RfRkxBR19QUkVGSVhfICJwcmlu
dF90aW1lPTBARFxuIgogIiAgICAgIERvbid0IHByaW50IHRoZSBlbGFwc2VkIHRpbWUgb2YgZWFj
aCB0ZXN0LlxuIgotIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJvdXRwdXQ9eG1sQFlbQEc6
QFlESVJFQ1RPUllfUEFUSEBHIgorIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJvdXRwdXQ9
QFkoQEdqc29uQFl8QEd4bWxAWSlbQEc6QFlESVJFQ1RPUllfUEFUSEBHIgogICAgIEdURVNUX1BB
VEhfU0VQXyAiQFl8QEc6QFlGSUxFX1BBVEhdQERcbiIKLSIgICAgICBHZW5lcmF0ZSBhbiBYTUwg
cmVwb3J0IGluIHRoZSBnaXZlbiBkaXJlY3Rvcnkgb3Igd2l0aCB0aGUgZ2l2ZW4gZmlsZVxuIgot
IiAgICAgIG5hbWUuIEBZRklMRV9QQVRIQEQgZGVmYXVsdHMgdG8gQEd0ZXN0X2RldGFpbHMueG1s
QEQuXG4iCisiICAgICAgR2VuZXJhdGUgYSBKU09OIG9yIFhNTCByZXBvcnQgaW4gdGhlIGdpdmVu
IGRpcmVjdG9yeSBvciB3aXRoIHRoZSBnaXZlblxuIgorIiAgICAgIGZpbGUgbmFtZS4gQFlGSUxF
X1BBVEhARCBkZWZhdWx0cyB0byBAR3Rlc3RfZGV0YWlscy54bWxARC5cbiIKKyMgaWYgR1RFU1Rf
Q0FOX1NUUkVBTV9SRVNVTFRTXworIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJzdHJlYW1f
cmVzdWx0X3RvPUBZSE9TVEBHOkBZUE9SVEBEXG4iCisiICAgICAgU3RyZWFtIHRlc3QgcmVzdWx0
cyB0byB0aGUgZ2l2ZW4gc2VydmVyLlxuIgorIyBlbmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9S
RVNVTFRTXwogIlxuIgogIkFzc2VydGlvbiBCZWhhdmlvcjpcbiIKLSNpZiBHVEVTVF9IQVNfREVB
VEhfVEVTVCAmJiAhR1RFU1RfT1NfV0lORE9XUworIyBpZiBHVEVTVF9IQVNfREVBVEhfVEVTVCAm
JiAhR1RFU1RfT1NfV0lORE9XUwogIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJkZWF0aF90
ZXN0X3N0eWxlPUBZKEBHZmFzdEBZfEBHdGhyZWFkc2FmZUBZKUBEXG4iCiAiICAgICAgU2V0IHRo
ZSBkZWZhdWx0IGRlYXRoIHRlc3Qgc3R5bGUuXG4iCi0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFU
SF9URVNUICYmICFHVEVTVF9PU19XSU5ET1dTCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhf
VEVTVCAmJiAhR1RFU1RfT1NfV0lORE9XUwogIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJi
cmVha19vbl9mYWlsdXJlQERcbiIKICIgICAgICBUdXJuIGFzc2VydGlvbiBmYWlsdXJlcyBpbnRv
IGRlYnVnZ2VyIGJyZWFrLXBvaW50cy5cbiIKICIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAi
dGhyb3dfb25fZmFpbHVyZUBEXG4iCi0iICAgICAgVHVybiBhc3NlcnRpb24gZmFpbHVyZXMgaW50
byBDKysgZXhjZXB0aW9ucy5cbiIKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0iICBARy0tIiBHVEVT
VF9GTEFHX1BSRUZJWF8gImNhdGNoX2V4Y2VwdGlvbnNARFxuIgotIiAgICAgIFN1cHByZXNzIHBv
cC11cHMgY2F1c2VkIGJ5IGV4Y2VwdGlvbnMuXG4iCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRP
V1MKKyIgICAgICBUdXJuIGFzc2VydGlvbiBmYWlsdXJlcyBpbnRvIEMrKyBleGNlcHRpb25zIGZv
ciB1c2UgYnkgYW4gZXh0ZXJuYWxcbiIKKyIgICAgICB0ZXN0IGZyYW1ld29yay5cbiIKKyIgIEBH
LS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiY2F0Y2hfZXhjZXB0aW9ucz0wQERcbiIKKyIgICAgICBE
byBub3QgcmVwb3J0IGV4Y2VwdGlvbnMgYXMgdGVzdCBmYWlsdXJlcy4gSW5zdGVhZCwgYWxsb3cg
dGhlbVxuIgorIiAgICAgIHRvIGNyYXNoIHRoZSBwcm9ncmFtIG9yIHRocm93IGEgcG9wLXVwIChv
biBXaW5kb3dzKS5cbiIKICJcbiIKICJFeGNlcHQgZm9yIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklY
XyAibGlzdF90ZXN0c0BELCB5b3UgY2FuIGFsdGVybmF0aXZlbHkgc2V0ICIKICAgICAidGhlIGNv
cnJlc3BvbmRpbmdcbiIKQEAgLTQ1NzYsNDUgKzU3ODUsODcgQEAgc3RhdGljIGNvbnN0IGNoYXIg
a0NvbG9yRW5jb2RlZEhlbHBNZXNzYWdlW10gPQogIihub3Qgb25lIGluIHlvdXIgb3duIGNvZGUg
b3IgdGVzdHMpLCBwbGVhc2UgcmVwb3J0IGl0IHRvXG4iCiAiQEc8IiBHVEVTVF9ERVZfRU1BSUxf
ICI+QEQuXG4iOwogCitzdGF0aWMgYm9vbCBQYXJzZUdvb2dsZVRlc3RGbGFnKGNvbnN0IGNoYXIq
IGNvbnN0IGFyZykgeworICByZXR1cm4gUGFyc2VCb29sRmxhZyhhcmcsIGtBbHNvUnVuRGlzYWJs
ZWRUZXN0c0ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGFsc29fcnVu
X2Rpc2FibGVkX3Rlc3RzKSkgfHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrQnJlYWtPbkZh
aWx1cmVGbGFnLAorICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhicmVha19vbl9mYWls
dXJlKSkgfHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrQ2F0Y2hFeGNlcHRpb25zRmxhZywK
KyAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykpIHx8Cisg
ICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrQ29sb3JGbGFnLCAmR1RFU1RfRkxBRyhjb2xvcikp
IHx8CisgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrRGVhdGhUZXN0U3R5bGVGbGFnLAorICAg
ICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpKSB8fAorICAg
ICAgUGFyc2VCb29sRmxhZyhhcmcsIGtEZWF0aFRlc3RVc2VGb3JrLAorICAgICAgICAgICAgICAg
ICAgICAmR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKSkgfHwKKyAgICAgIFBhcnNlU3Ry
aW5nRmxhZyhhcmcsIGtGaWx0ZXJGbGFnLCAmR1RFU1RfRkxBRyhmaWx0ZXIpKSB8fAorICAgICAg
UGFyc2VTdHJpbmdGbGFnKGFyZywga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZywKKyAgICAgICAg
ICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkpIHx8Cisg
ICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0xpc3RUZXN0c0ZsYWcsICZHVEVTVF9GTEFHKGxpc3Rf
dGVzdHMpKSB8fAorICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga091dHB1dEZsYWcsICZHVEVT
VF9GTEFHKG91dHB1dCkpIHx8CisgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga1ByaW50VGltZUZs
YWcsICZHVEVTVF9GTEFHKHByaW50X3RpbWUpKSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhhcmcs
IGtQcmludFVURjhGbGFnLCAmR1RFU1RfRkxBRyhwcmludF91dGY4KSkgfHwKKyAgICAgIFBhcnNl
SW50MzJGbGFnKGFyZywga1JhbmRvbVNlZWRGbGFnLCAmR1RFU1RfRkxBRyhyYW5kb21fc2VlZCkp
IHx8CisgICAgICBQYXJzZUludDMyRmxhZyhhcmcsIGtSZXBlYXRGbGFnLCAmR1RFU1RfRkxBRyhy
ZXBlYXQpKSB8fAorICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtTaHVmZmxlRmxhZywgJkdURVNU
X0ZMQUcoc2h1ZmZsZSkpIHx8CisgICAgICBQYXJzZUludDMyRmxhZyhhcmcsIGtTdGFja1RyYWNl
RGVwdGhGbGFnLAorICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoc3RhY2tfdHJhY2Vf
ZGVwdGgpKSB8fAorICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga1N0cmVhbVJlc3VsdFRvRmxh
ZywKKyAgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSkg
fHwKKyAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrVGhyb3dPbkZhaWx1cmVGbGFnLAorICAgICAg
ICAgICAgICAgICAgICAmR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSk7Cit9CisKKyNpZiBH
VEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCitzdGF0aWMgdm9pZCBMb2FkRmxhZ3NGcm9tRmls
ZShjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCkgeworICBGSUxFKiBmbGFnZmlsZSA9IHBvc2l4OjpG
T3BlbihwYXRoLmNfc3RyKCksICJyIik7CisgIGlmICghZmxhZ2ZpbGUpIHsKKyAgICBHVEVTVF9M
T0dfKEZBVEFMKSA8PCAiVW5hYmxlIHRvIG9wZW4gZmlsZSBcIiIgPDwgR1RFU1RfRkxBRyhmbGFn
ZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICA8PCAiXCIiOworICB9CisgIHN0ZDo6c3RyaW5n
IGNvbnRlbnRzKFJlYWRFbnRpcmVGaWxlKGZsYWdmaWxlKSk7CisgIHBvc2l4OjpGQ2xvc2UoZmxh
Z2ZpbGUpOworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbGluZXM7CisgIFNwbGl0U3RyaW5n
KGNvbnRlbnRzLCAnXG4nLCAmbGluZXMpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpbmVz
LnNpemUoKTsgKytpKSB7CisgICAgaWYgKGxpbmVzW2ldLmVtcHR5KCkpCisgICAgICBjb250aW51
ZTsKKyAgICBpZiAoIVBhcnNlR29vZ2xlVGVzdEZsYWcobGluZXNbaV0uY19zdHIoKSkpCisgICAg
ICBnX2hlbHBfZmxhZyA9IHRydWU7CisgIH0KK30KKyNlbmRpZiAgLy8gR1RFU1RfVVNFX09XTl9G
TEFHRklMRV9GTEFHXworCiAvLyBQYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IgR29vZ2xlIFRl
c3QgZmxhZ3MsIHdpdGhvdXQgaW5pdGlhbGl6aW5nCiAvLyBvdGhlciBwYXJ0cyBvZiBHb29nbGUg
VGVzdC4gIFRoZSB0eXBlIHBhcmFtZXRlciBDaGFyVHlwZSBjYW4gYmUKIC8vIGluc3RhbnRpYXRl
ZCB0byBlaXRoZXIgY2hhciBvciB3Y2hhcl90LgogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBl
Pgogdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHlJbXBsKGludCogYXJnYywgQ2hhclR5cGUq
KiBhcmd2KSB7CiAgIGZvciAoaW50IGkgPSAxOyBpIDwgKmFyZ2M7IGkrKykgewotICAgIGNvbnN0
IFN0cmluZyBhcmdfc3RyaW5nID0gU3RyZWFtYWJsZVRvU3RyaW5nKGFyZ3ZbaV0pOworICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIGFyZ19zdHJpbmcgPSBTdHJlYW1hYmxlVG9TdHJpbmcoYXJndltpXSk7
CiAgICAgY29uc3QgY2hhciogY29uc3QgYXJnID0gYXJnX3N0cmluZy5jX3N0cigpOwogCiAgICAg
dXNpbmcgaW50ZXJuYWw6OlBhcnNlQm9vbEZsYWc7CiAgICAgdXNpbmcgaW50ZXJuYWw6OlBhcnNl
SW50MzJGbGFnOwogICAgIHVzaW5nIGludGVybmFsOjpQYXJzZVN0cmluZ0ZsYWc7CiAKLSAgICAv
LyBEbyB3ZSBzZWUgYSBHb29nbGUgVGVzdCBmbGFnPwotICAgIGlmIChQYXJzZUJvb2xGbGFnKGFy
Zywga0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAmR1RF
U1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cykpIHx8Ci0gICAgICAgIFBhcnNlQm9vbEZs
YWcoYXJnLCBrQnJlYWtPbkZhaWx1cmVGbGFnLAotICAgICAgICAgICAgICAgICAgICAgICZHVEVT
VF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpKSB8fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywg
a0NhdGNoRXhjZXB0aW9uc0ZsYWcsCi0gICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUco
Y2F0Y2hfZXhjZXB0aW9ucykpIHx8Ci0gICAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtDb2xv
ckZsYWcsICZHVEVTVF9GTEFHKGNvbG9yKSkgfHwKLSAgICAgICAgUGFyc2VTdHJpbmdGbGFnKGFy
Zywga0RlYXRoVGVzdFN0eWxlRmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICZHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpKSB8fAotICAgICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0Rl
YXRoVGVzdFVzZUZvcmssCi0gICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoZGVhdGhf
dGVzdF91c2VfZm9yaykpIHx8Ci0gICAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtGaWx0ZXJG
bGFnLCAmR1RFU1RfRkxBRyhmaWx0ZXIpKSB8fAotICAgICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJn
LCBrSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgJkdU
RVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpKSB8fAotICAgICAgICBQYXJzZUJvb2xG
bGFnKGFyZywga0xpc3RUZXN0c0ZsYWcsICZHVEVTVF9GTEFHKGxpc3RfdGVzdHMpKSB8fAotICAg
ICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrT3V0cHV0RmxhZywgJkdURVNUX0ZMQUcob3V0cHV0
KSkgfHwKLSAgICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtQcmludFRpbWVGbGFnLCAmR1RFU1Rf
RkxBRyhwcmludF90aW1lKSkgfHwKLSAgICAgICAgUGFyc2VJbnQzMkZsYWcoYXJnLCBrUmFuZG9t
U2VlZEZsYWcsICZHVEVTVF9GTEFHKHJhbmRvbV9zZWVkKSkgfHwKLSAgICAgICAgUGFyc2VJbnQz
MkZsYWcoYXJnLCBrUmVwZWF0RmxhZywgJkdURVNUX0ZMQUcocmVwZWF0KSkgfHwKLSAgICAgICAg
UGFyc2VCb29sRmxhZyhhcmcsIGtTaHVmZmxlRmxhZywgJkdURVNUX0ZMQUcoc2h1ZmZsZSkpIHx8
Ci0gICAgICAgIFBhcnNlSW50MzJGbGFnKGFyZywga1N0YWNrVHJhY2VEZXB0aEZsYWcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSkgfHwKLSAg
ICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtUaHJvd09uRmFpbHVyZUZsYWcsICZHVEVTVF9GTEFH
KHRocm93X29uX2ZhaWx1cmUpKQotICAgICAgICApIHsKLSAgICAgIC8vIFllcy4gIFNoaWZ0IHRo
ZSByZW1haW5kZXIgb2YgdGhlIGFyZ3YgbGlzdCBsZWZ0IGJ5IG9uZS4gIE5vdGUKKyAgICBib29s
IHJlbW92ZV9mbGFnID0gZmFsc2U7CisgICAgaWYgKFBhcnNlR29vZ2xlVGVzdEZsYWcoYXJnKSkg
eworICAgICAgcmVtb3ZlX2ZsYWcgPSB0cnVlOworI2lmIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVf
RkxBR18KKyAgICB9IGVsc2UgaWYgKFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtGbGFnZmlsZUZsYWcs
ICZHVEVTVF9GTEFHKGZsYWdmaWxlKSkpIHsKKyAgICAgIExvYWRGbGFnc0Zyb21GaWxlKEdURVNU
X0ZMQUcoZmxhZ2ZpbGUpKTsKKyAgICAgIHJlbW92ZV9mbGFnID0gdHJ1ZTsKKyNlbmRpZiAgLy8g
R1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXworICAgIH0gZWxzZSBpZiAoYXJnX3N0cmluZyA9
PSAiLS1oZWxwIiB8fCBhcmdfc3RyaW5nID09ICItaCIgfHwKKyAgICAgICAgICAgICAgIGFyZ19z
dHJpbmcgPT0gIi0/IiB8fCBhcmdfc3RyaW5nID09ICIvPyIgfHwKKyAgICAgICAgICAgICAgIEhh
c0dvb2dsZVRlc3RGbGFnUHJlZml4KGFyZykpIHsKKyAgICAgIC8vIEJvdGggaGVscCBmbGFnIGFu
ZCB1bnJlY29nbml6ZWQgR29vZ2xlIFRlc3QgZmxhZ3MgKGV4Y2x1ZGluZworICAgICAgLy8gaW50
ZXJuYWwgb25lcykgdHJpZ2dlciBoZWxwIGRpc3BsYXkuCisgICAgICBnX2hlbHBfZmxhZyA9IHRy
dWU7CisgICAgfQorCisgICAgaWYgKHJlbW92ZV9mbGFnKSB7CisgICAgICAvLyBTaGlmdCB0aGUg
cmVtYWluZGVyIG9mIHRoZSBhcmd2IGxpc3QgbGVmdCBieSBvbmUuICBOb3RlCiAgICAgICAvLyB0
aGF0IGFyZ3YgaGFzICgqYXJnYyArIDEpIGVsZW1lbnRzLCB0aGUgbGFzdCBvbmUgYWx3YXlzIGJl
aW5nCiAgICAgICAvLyBOVUxMLiAgVGhlIGZvbGxvd2luZyBsb29wIG1vdmVzIHRoZSB0cmFpbGlu
ZyBOVUxMIGVsZW1lbnQgYXMKICAgICAgIC8vIHdlbGwuCkBAIC00NjI4LDEyICs1ODc5LDYgQEAg
dm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHlJbXBsKGludCogYXJnYywgQ2hhclR5cGUqKiBh
cmd2KSB7CiAgICAgICAvLyBXZSBhbHNvIG5lZWQgdG8gZGVjcmVtZW50IHRoZSBpdGVyYXRvciBh
cyB3ZSBqdXN0IHJlbW92ZWQKICAgICAgIC8vIGFuIGVsZW1lbnQuCiAgICAgICBpLS07Ci0gICAg
fSBlbHNlIGlmIChhcmdfc3RyaW5nID09ICItLWhlbHAiIHx8IGFyZ19zdHJpbmcgPT0gIi1oIiB8
fAotICAgICAgICAgICAgICAgYXJnX3N0cmluZyA9PSAiLT8iIHx8IGFyZ19zdHJpbmcgPT0gIi8/
IiB8fAotICAgICAgICAgICAgICAgSGFzR29vZ2xlVGVzdEZsYWdQcmVmaXgoYXJnKSkgewotICAg
ICAgLy8gQm90aCBoZWxwIGZsYWcgYW5kIHVucmVjb2duaXplZCBHb29nbGUgVGVzdCBmbGFncyAo
ZXhjbHVkaW5nCi0gICAgICAvLyBpbnRlcm5hbCBvbmVzKSB0cmlnZ2VyIGhlbHAgZGlzcGxheS4K
LSAgICAgIGdfaGVscF9mbGFnID0gdHJ1ZTsKICAgICB9CiAgIH0KIApAQCAtNDY0OSw2ICs1ODk0
LDE3IEBAIHZvaWQgUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5SW1wbChpbnQqIGFyZ2MsIENoYXJU
eXBlKiogYXJndikgewogLy8gb3RoZXIgcGFydHMgb2YgR29vZ2xlIFRlc3QuCiB2b2lkIFBhcnNl
R29vZ2xlVGVzdEZsYWdzT25seShpbnQqIGFyZ2MsIGNoYXIqKiBhcmd2KSB7CiAgIFBhcnNlR29v
Z2xlVGVzdEZsYWdzT25seUltcGwoYXJnYywgYXJndik7CisKKyAgLy8gRml4IHRoZSB2YWx1ZSBv
ZiAqX05TR2V0QXJnYygpIG9uIG1hY09TLCBidXQgaWZmCisgIC8vICpfTlNHZXRBcmd2KCkgPT0g
YXJndgorICAvLyBPbmx5IGFwcGxpY2FibGUgdG8gY2hhcioqIHZlcnNpb24gb2YgYXJndgorI2lm
IEdURVNUX09TX01BQworI2lmbmRlZiBHVEVTVF9PU19JT1MKKyAgaWYgKCpfTlNHZXRBcmd2KCkg
PT0gYXJndikgeworICAgICpfTlNHZXRBcmdjKCkgPSAqYXJnYzsKKyAgfQorI2VuZGlmCisjZW5k
aWYKIH0KIHZvaWQgUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5KGludCogYXJnYywgd2NoYXJfdCoq
IGFyZ3YpIHsKICAgUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5SW1wbChhcmdjLCBhcmd2KTsKQEAg
LTQ2NjAsMjEgKzU5MTYsMTkgQEAgdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoaW50KiBh
cmdjLCB3Y2hhcl90KiogYXJndikgewogLy8gd2NoYXJfdC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyVHlwZT4KIHZvaWQgSW5pdEdvb2dsZVRlc3RJbXBsKGludCogYXJnYywgQ2hhclR5cGUqKiBh
cmd2KSB7Ci0gIGdfaW5pdF9ndGVzdF9jb3VudCsrOwotCiAgIC8vIFdlIGRvbid0IHdhbnQgdG8g
cnVuIHRoZSBpbml0aWFsaXphdGlvbiBjb2RlIHR3aWNlLgotICBpZiAoZ19pbml0X2d0ZXN0X2Nv
dW50ICE9IDEpIHJldHVybjsKKyAgaWYgKEdUZXN0SXNJbml0aWFsaXplZCgpKSByZXR1cm47CiAK
ICAgaWYgKCphcmdjIDw9IDApIHJldHVybjsKIAotICBpbnRlcm5hbDo6Z19leGVjdXRhYmxlX3Bh
dGggPSBpbnRlcm5hbDo6U3RyZWFtYWJsZVRvU3RyaW5nKGFyZ3ZbMF0pOwotCi0jaWYgR1RFU1Rf
SEFTX0RFQVRIX1RFU1QKICAgZ19hcmd2cy5jbGVhcigpOwogICBmb3IgKGludCBpID0gMDsgaSAh
PSAqYXJnYzsgaSsrKSB7CiAgICAgZ19hcmd2cy5wdXNoX2JhY2soU3RyZWFtYWJsZVRvU3RyaW5n
KGFyZ3ZbaV0pKTsKICAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisjaWYg
R1RFU1RfSEFTX0FCU0wKKyAgYWJzbDo6SW5pdGlhbGl6ZVN5bWJvbGl6ZXIoZ19hcmd2c1swXS5j
X3N0cigpKTsKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0FCU0wKIAogICBQYXJzZUdvb2dsZVRlc3RG
bGFnc09ubHkoYXJnYywgYXJndik7CiAgIEdldFVuaXRUZXN0SW1wbCgpLT5Qb3N0RmxhZ1BhcnNp
bmdJbml0KCk7CkBAIC00NjkyLDEzICs1OTQ2LDYyIEBAIHZvaWQgSW5pdEdvb2dsZVRlc3RJbXBs
KGludCogYXJnYywgQ2hhclR5cGUqKiBhcmd2KSB7CiAvLwogLy8gQ2FsbGluZyB0aGUgZnVuY3Rp
b24gZm9yIHRoZSBzZWNvbmQgdGltZSBoYXMgbm8gdXNlci12aXNpYmxlIGVmZmVjdC4KIHZvaWQg
SW5pdEdvb2dsZVRlc3QoaW50KiBhcmdjLCBjaGFyKiogYXJndikgeworI2lmIGRlZmluZWQoR1RF
U1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQorICBHVEVTVF9DVVNUT01fSU5J
VF9HT09HTEVfVEVTVF9GVU5DVElPTl8oYXJnYywgYXJndik7CisjZWxzZSAgLy8gZGVmaW5lZChH
VEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8pCiAgIGludGVybmFsOjpJbml0
R29vZ2xlVGVzdEltcGwoYXJnYywgYXJndik7CisjZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfQ1VT
VE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQogfQogCiAvLyBUaGlzIG92ZXJsb2FkZWQg
dmVyc2lvbiBjYW4gYmUgdXNlZCBpbiBXaW5kb3dzIHByb2dyYW1zIGNvbXBpbGVkIGluCiAvLyBV
TklDT0RFIG1vZGUuCiB2b2lkIEluaXRHb29nbGVUZXN0KGludCogYXJnYywgd2NoYXJfdCoqIGFy
Z3YpIHsKKyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9O
XykKKyAgR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKGFyZ2MsIGFyZ3Yp
OworI2Vsc2UgIC8vIGRlZmluZWQoR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJ
T05fKQogICBpbnRlcm5hbDo6SW5pdEdvb2dsZVRlc3RJbXBsKGFyZ2MsIGFyZ3YpOworI2VuZGlm
ICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9OXykKK30K
Kworc3RkOjpzdHJpbmcgVGVtcERpcigpIHsKKyNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9URU1Q
RElSX0ZVTkNUSU9OXykKKyAgcmV0dXJuIEdURVNUX0NVU1RPTV9URU1QRElSX0ZVTkNUSU9OXygp
OworI2VuZGlmCisKKyNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorICByZXR1cm4gIlxcdGVt
cFxcIjsKKyNlbGlmIEdURVNUX09TX1dJTkRPV1MKKyAgY29uc3QgY2hhciogdGVtcF9kaXIgPSBp
bnRlcm5hbDo6cG9zaXg6OkdldEVudigiVEVNUCIpOworICBpZiAodGVtcF9kaXIgPT0gTlVMTCB8
fCB0ZW1wX2RpclswXSA9PSAnXDAnKQorICAgIHJldHVybiAiXFx0ZW1wXFwiOworICBlbHNlIGlm
ICh0ZW1wX2RpcltzdHJsZW4odGVtcF9kaXIpIC0gMV0gPT0gJ1xcJykKKyAgICByZXR1cm4gdGVt
cF9kaXI7CisgIGVsc2UKKyAgICByZXR1cm4gc3RkOjpzdHJpbmcodGVtcF9kaXIpICsgIlxcIjsK
KyNlbGlmIEdURVNUX09TX0xJTlVYX0FORFJPSUQKKyAgcmV0dXJuICIvc2RjYXJkLyI7CisjZWxz
ZQorICByZXR1cm4gIi90bXAvIjsKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
K30KKworLy8gQ2xhc3MgU2NvcGVkVHJhY2UKKworLy8gUHVzaGVzIHRoZSBnaXZlbiBzb3VyY2Ug
ZmlsZSBsb2NhdGlvbiBhbmQgbWVzc2FnZSBvbnRvIGEgcGVyLXRocmVhZAorLy8gdHJhY2Ugc3Rh
Y2sgbWFpbnRhaW5lZCBieSBHb29nbGUgVGVzdC4KK3ZvaWQgU2NvcGVkVHJhY2U6OlB1c2hUcmFj
ZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgc3RkOjpzdHJpbmcgbWVzc2FnZSkgeworICBp
bnRlcm5hbDo6VHJhY2VJbmZvIHRyYWNlOworICB0cmFjZS5maWxlID0gZmlsZTsKKyAgdHJhY2Uu
bGluZSA9IGxpbmU7CisgIHRyYWNlLm1lc3NhZ2Uuc3dhcChtZXNzYWdlKTsKKworICBVbml0VGVz
dDo6R2V0SW5zdGFuY2UoKS0+UHVzaEdUZXN0VHJhY2UodHJhY2UpOworfQorCisvLyBQb3BzIHRo
ZSBpbmZvIHB1c2hlZCBieSB0aGUgYyd0b3IuCitTY29wZWRUcmFjZTo6flNjb3BlZFRyYWNlKCkK
KyAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXygmVW5pdFRlc3Q6Om11dGV4XykgeworICBVbml0VGVz
dDo6R2V0SW5zdGFuY2UoKS0+UG9wR1Rlc3RUcmFjZSgpOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ug
dGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qvc3JjL2d0ZXN0X21h
aW4uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMvZ3Rlc3RfbWFpbi5jYwppbmRleCBk
MjBjMDJmZGZiMGE5NDYxZGNjMmEyNzg5YzQ5MjJiNWIzMDU2MzUyLi4yMTEzZjYyMWU2NTQzMGU1
NTcwZGZiMjAxNTg4NGEyZDRmNGNmMGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC9zcmMvZ3Rlc3RfbWFpbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9zcmMv
Z3Rlc3RfbWFpbi5jYwpAQCAtMjcsMTMgKzI3LDExIEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKLSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotICBzdGQ6OmNvdXQgPDwg
IlJ1bm5pbmcgbWFpbigpIGZyb20gZ3Rlc3RfbWFpbi5jY1xuIjsKKyNpbmNsdWRlIDxzdGRpby5o
PgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKK0dURVNUX0FQSV8gaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIgKiphcmd2KSB7CisgIHByaW50ZigiUnVubmluZyBtYWluKCkgZnJvbSAlc1xuIiwg
X19GSUxFX18pOwogICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CiAgIHJl
dHVybiBSVU5fQUxMX1RFU1RTKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L0JVSUxELmJhemVsIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9CVUlM
RC5iYXplbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hOTMwZDY1ZTA0NDAxNDQ0MTZhZTg4YWIyNzU4ZmQ5MzQwYTA5
MzdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9CVUlM
RC5iYXplbApAQCAtMCwwICsxLDUyNyBAQAorIyBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLgor
IyBBbGwgUmlnaHRzIFJlc2VydmVkLgorIworIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgQXV0aG9y
OiBtaXN0ZXJnQGdvb2dsZS5jb20gKEdlbm5hZGl5IENpdmlsKQorIworIyBCYXplbCBCVUlMRCBm
b3IgVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQorCitsaWNl
bnNlcyhbIm5vdGljZSJdKQorCitjb25maWdfc2V0dGluZygKKyAgICBuYW1lID0gIndpbmRvd3Mi
LAorICAgIHZhbHVlcyA9IHsiY3B1IjogIng2NF93aW5kb3dzIn0sCispCisKK2NvbmZpZ19zZXR0
aW5nKAorICAgIG5hbWUgPSAid2luZG93c19tc3ZjIiwKKyAgICB2YWx1ZXMgPSB7ImNwdSI6ICJ4
NjRfd2luZG93c19tc3ZjIn0sCispCisKK2NvbmZpZ19zZXR0aW5nKAorICAgIG5hbWUgPSAiaGFz
X2Fic2wiLAorICAgIHZhbHVlcyA9IHsiZGVmaW5lIjogImFic2w9MSJ9LAorKQorCisjb24gd2lu
ZG93cyBleGNsdWRlIGd0ZXN0LXR1cGxlLmggYW5kIGdvb2dsZXRlc3QtdHVwbGUtdGVzdC5jYwor
Y2NfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0X2FsbF90ZXN0IiwKKyAgICBzaXplID0gInNtYWxs
IiwKKyAgICBzcmNzID0gZ2xvYigKKyAgICAgICAgaW5jbHVkZSA9IFsKKyAgICAgICAgICAgICJn
dGVzdC0qLmNjIiwKKyAgICAgICAgICAgICJnb29nbGV0ZXN0LSouY2MiLAorICAgICAgICAgICAg
IiouaCIsCisgICAgICAgICAgICAiZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0LyoqLyouaCIsCisg
ICAgICAgIF0sCisgICAgICAgIGV4Y2x1ZGUgPSBbCisgICAgICAgICAgICAiZ3Rlc3QtdW5pdHRl
c3QtYXBpX3Rlc3QuY2MiLAorICAgICAgICAgICAgImdvb2dsZXRlc3QtdHVwbGUtdGVzdC5jYyIs
CisgICAgICAgICAgICAiZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtYWxsLmNjIiwKKyAgICAgICAgICAg
ICJndGVzdF9hbGxfdGVzdC5jYyIsCisgICAgICAgICAgICAiZ3Rlc3QtZGVhdGgtdGVzdF9leF90
ZXN0LmNjIiwKKyAgICAgICAgICAgICJndGVzdC1saXN0ZW5lcl90ZXN0LmNjIiwKKyAgICAgICAg
ICAgICJndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYyIsCisgICAgICAgICAgICAiZ29vZ2xldGVz
dC1wYXJhbS10ZXN0LXRlc3QuY2MiLAorICAgICAgICAgICAgImdvb2dsZXRlc3QtY2F0Y2gtZXhj
ZXB0aW9ucy10ZXN0Xy5jYyIsCisgICAgICAgICAgICAiZ29vZ2xldGVzdC1jb2xvci10ZXN0Xy5j
YyIsCisgICAgICAgICAgICAiZ29vZ2xldGVzdC1lbnYtdmFyLXRlc3RfLmNjIiwKKyAgICAgICAg
ICAgICJnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8uY2MiLAorICAgICAgICAgICAgImdvb2ds
ZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8uY2MiLAorICAgICAgICAgICAgICJnb29n
bGV0ZXN0LWxpc3RlbmVyLXRlc3QuY2MiLAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LW91dHB1
dC10ZXN0Xy5jYyIsCisgICAgICAgICAgICAgImdvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVz
dF8uY2MiLAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8uY2MiLAorICAg
ICAgICAgICAgICJnb29nbGV0ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdF8uY2MiLAorICAgICAgICAg
ICAgICJnb29nbGV0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYyIsCisgICAgICAgICAgICAgImdv
b2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0IiwKKyAgICAgICAgICAgICAiZ29vZ2xldGVzdC10aHJv
dy1vbi1mYWlsdXJlLXRlc3RfLmNjIiwKKyAgICAgICAgICAgICAiZ29vZ2xldGVzdC1wYXJhbS10
ZXN0LWludmFsaWQtbmFtZTEtdGVzdF8uY2MiLAorICAgICAgICAgICAgICJnb29nbGV0ZXN0LXBh
cmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0Xy5jYyIsCisKKyAgICAgICAgXSwKKyAgICApICsg
c2VsZWN0KHsKKyAgICAgICAgIi8vOndpbmRvd3MiOiBbXSwKKyAgICAgICAgIi8vOndpbmRvd3Nf
bXN2YyI6IFtdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbCisgICAgICAgICAg
ICAiZ29vZ2xldGVzdC10dXBsZS10ZXN0LmNjIiwKKyAgICAgICAgXSwKKyAgICB9KSwKKyAgICBj
b3B0cyA9IHNlbGVjdCh7CisgICAgICAgICIvLzp3aW5kb3dzIjogWyItREdURVNUX1VTRV9PV05f
VFIxX1RVUExFPTAiXSwKKyAgICAgICAgIi8vOndpbmRvd3NfbXN2YyI6IFsiLURHVEVTVF9VU0Vf
T1dOX1RSMV9UVVBMRT0wIl0sCisgICAgICAgICIvL2NvbmRpdGlvbnM6ZGVmYXVsdCI6IFsiLURH
VEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0xIl0sCisgICAgfSksCisgICAgaW5jbHVkZXMgPSBbCisg
ICAgICAgICJnb29nbGV0ZXN0IiwKKyAgICAgICAgImdvb2dsZXRlc3QvaW5jbHVkZSIsCisgICAg
ICAgICJnb29nbGV0ZXN0L2luY2x1ZGUvaW50ZXJuYWwiLAorICAgICAgICAiZ29vZ2xldGVzdC90
ZXN0IiwKKyAgICBdLAorICAgIGxpbmtvcHRzID0gc2VsZWN0KHsKKyAgICAgICAgIi8vOndpbmRv
d3MiOiBbXSwKKyAgICAgICAgIi8vOndpbmRvd3NfbXN2YyI6IFtdLAorICAgICAgICAiLy9jb25k
aXRpb25zOmRlZmF1bHQiOiBbCisgICAgICAgICAgICAiLXB0aHJlYWQiLAorICAgICAgICBdLAor
ICAgIH0pLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0X21haW4iXSwKKykKKworCisjIFRlc3RzIGRl
YXRoIHRlc3RzLgorY2NfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtZGVhdGgtdGVzdC10
ZXN0IiwKKyAgICBzaXplID0gIm1lZGl1bSIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1kZWF0
aC10ZXN0LXRlc3QuY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdF9tYWluIl0sCispCisKK2Nj
X3Rlc3QoCisgICAgbmFtZSA9ICJndGVzdF90ZXN0X21hY3JvX3N0YWNrX2Zvb3RwcmludF90ZXN0
IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJndGVzdF90ZXN0X21hY3JvX3N0
YWNrX2Zvb3RwcmludF90ZXN0LmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKwor
I1RoZXNlIGdvb2dsZXRlc3QgdGVzdHMgaGF2ZSB0aGVpciBvd24gbWFpbigpCitjY190ZXN0KAor
ICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1saXN0ZW5lci10ZXN0IiwKKyAgICBzaXplID0gInNtYWxs
IiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWxpc3RlbmVyLXRlc3QuY2MiXSwKKyAgICBkZXBz
ID0gWyIvLzpndGVzdF9tYWluIl0sCispCisKK2NjX3Rlc3QoCisgICAgbmFtZSA9ICJndGVzdC11
bml0dGVzdC1hcGlfdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsKKyAg
ICAgICAgImd0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjIiwKKyAgICBdLAorICAgIGRlcHMgPSBb
CisgICAgICAgICIvLzpndGVzdCIsCisgICAgXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0g
Imdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBz
cmNzID0gWworICAgICAgICAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MiLAorICAgICAg
ICAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuaCIsCisgICAgICAgICJnb29nbGV0ZXN0LXBh
cmFtLXRlc3QyLXRlc3QuY2MiLAorICAgIF0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykK
KworY2NfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0X3VuaXR0ZXN0IiwKKyAgICBzaXplID0gInNt
YWxsIiwKKyAgICBzcmNzID0gWyJndGVzdF91bml0dGVzdC5jYyJdLAorICAgIGFyZ3MgPSBbIi0t
aGVhcF9jaGVjaz1zdHJpY3QiXSwKKyAgICBzaGFyZF9jb3VudCA9IDIsCisgICAgZGVwcyA9IFsi
Ly86Z3Rlc3RfbWFpbiJdLAorKQorCisjICBQeSB0ZXN0cworCitweV9saWJyYXJ5KAorICAgIG5h
bWUgPSAiZ3Rlc3RfdGVzdF91dGlscyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBb
Imd0ZXN0X3Rlc3RfdXRpbHMucHkiXSwKKykKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAiZ3Rl
c3RfaGVscF90ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImd0ZXN0X2hl
bHBfdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdF9tYWluIl0sCispCisKK3B5X3Rl
c3QoCisgICAgbmFtZSA9ICJndGVzdF9oZWxwX3Rlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAor
ICAgIHNyY3MgPSBbImd0ZXN0X2hlbHBfdGVzdC5weSJdLAorICAgIGRhdGEgPSBbIjpndGVzdF9o
ZWxwX3Rlc3RfIl0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworY2Nf
YmluYXJ5KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8iLAorICAgIHRlc3Rv
bmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYyJdLAorICAg
IGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImdv
b2dsZXRlc3Qtb3V0cHV0LXRlc3QucHkiXSwKKyAgICBhcmdzID0gc2VsZWN0KHsKKyAgICAgICAg
IjpoYXNfYWJzbCI6IFtdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi0tbm9f
c3RhY2t0cmFjZV9zdXBwb3J0Il0sCisgICAgfSksCisgICAgZGF0YSA9IFsKKyAgICAgICAgImdv
b2dsZXRlc3Qtb3V0cHV0LXRlc3QtZ29sZGVuLWxpbi50eHQiLAorICAgICAgICAiOmdvb2dsZXRl
c3Qtb3V0cHV0LXRlc3RfIiwKKyAgICBdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxz
Il0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtY29sb3ItdGVzdF8i
LAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWNvbG9yLXRlc3Rf
LmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1l
ID0gImdvb2dsZXRlc3QtY29sb3ItdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3Jj
cyA9IFsiZ29vZ2xldGVzdC1jb2xvci10ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmdvb2dsZXRl
c3QtY29sb3ItdGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQor
CitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWVudi12YXItdGVzdF8iLAorICAg
IHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWVudi12YXItdGVzdF8uY2Mi
XSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAi
Z29vZ2xldGVzdC1lbnYtdmFyLXRlc3QiLAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNz
ID0gWyJnb29nbGV0ZXN0LWVudi12YXItdGVzdC5weSJdLAorICAgIGRhdGEgPSBbIjpnb29nbGV0
ZXN0LWVudi12YXItdGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAor
KQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8i
LAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWZpbHRlci11bml0
dGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAorICAg
IG5hbWUgPSAiZ29vZ2xldGVzdC1maWx0ZXItdW5pdHRlc3QiLAorICAgIHNpemUgPSAibWVkaXVt
IiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdC5weSJdLAorICAgIGRh
dGEgPSBbIjpnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rl
c3RfdGVzdF91dGlscyJdLAorKQorCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRl
c3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBz
cmNzID0gWyJnb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3RfLmNjIl0sCisgICAg
ZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29n
bGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAor
ICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdC5weSJdLAor
ICAgIGRhdGEgPSBbIjpnb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3RfIl0sCisg
ICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworCitjY190ZXN0KAorICAgIG5h
bWUgPSAiZ3Rlc3RfYXNzZXJ0X2J5X2V4Y2VwdGlvbl90ZXN0IiwKKyAgICBzaXplID0gInNtYWxs
IiwKKyAgICBzcmNzID0gWyJndGVzdF9hc3NlcnRfYnlfZXhjZXB0aW9uX3Rlc3QuY2MiXSwKKyAg
ICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCisKKworY2NfYmluYXJ5KAorICAgIG5hbWUgPSAi
Z29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfIiwKKyAgICB0ZXN0b25seSA9IDEsCisg
ICAgc3JjcyA9IFsiZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfLmNjIl0sCisgICAg
ZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRl
c3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNz
ID0gWyJnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdC5weSJdLAorICAgIGRhdGEgPSBb
Ijpnb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rl
c3RfdGVzdF91dGlscyJdLAorKQorCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdvb2dsZXRl
c3QtbGlzdC10ZXN0cy11bml0dGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0g
WyJnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86
Z3Rlc3QiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtbGlzdC10ZXN0
cy11bml0dGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVz
dC1saXN0LXRlc3RzLXVuaXR0ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsiOmdvb2dsZXRlc3QtbGlz
dC10ZXN0cy11bml0dGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAor
KQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8iLAor
ICAgIHNyY3MgPSBbImdvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBb
Ii8vOmd0ZXN0Il0sCispCisKK3B5X3Rlc3QoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXNodWZm
bGUtdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1z
aHVmZmxlLXRlc3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z29vZ2xldGVzdC1zaHVmZmxlLXRlc3Rf
Il0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRpbHMiXSwKKykKKworY2NfYmluYXJ5KAor
ICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLW5vLWV4LXRlc3RfIiwKKyAg
ICB0ZXN0b25seSA9IDEsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25z
LXRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQorCitjY19iaW5h
cnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtZXgtdGVzdF8iLAor
ICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlv
bnMtdGVzdF8uY2MiXSwKKyAgICBjb3B0cyA9IFsiLWZleGNlcHRpb25zIl0sCisgICAgZGVwcyA9
IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVz
dC1jYXRjaC1leGNlcHRpb25zLXRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3Mg
PSBbImdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0LnB5Il0sCisgICAgZGF0YSA9IFsK
KyAgICAgICAgIjpnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtZXgtdGVzdF8iLAorICAgICAg
ICAiOmdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy1uby1leC10ZXN0XyIsCisgICAgXSwKKyAg
ICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFt
ZSA9ICJndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAg
IHNyY3MgPSBbImd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsi
Ly86Z3Rlc3QiXSwKKykKKworY2NfdGVzdCgKKyAgICBuYW1lID0gImd0ZXN0X25vX3Rlc3RfdW5p
dHRlc3QiLAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImd0ZXN0X25vX3Rlc3Rf
dW5pdHRlc3QuY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitweV90ZXN0KAor
ICAgIG5hbWUgPSAiZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdCIsCisgICAgc2l6ZSA9ICJzbWFs
bCIsCisgICAgc3JjcyA9IFsKKyAgICAgICAgImd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3QucHki
LAorICAgICAgICAiZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkiLAorICAgIF0sCisgICAgYXJncyA9
IHNlbGVjdCh7CisgICAgICAgICI6aGFzX2Fic2wiOiBbXSwKKyAgICAgICAgIi8vY29uZGl0aW9u
czpkZWZhdWx0IjogWyItLW5vX3N0YWNrdHJhY2Vfc3VwcG9ydCJdLAorICAgIH0pLAorICAgIGRh
dGEgPSBbCisgICAgICAgICMgV2UgaW52b2tlIGd0ZXN0X25vX3Rlc3RfdW5pdHRlc3QgdG8gdmVy
aWZ5IHRoZSBYTUwgb3V0cHV0CisgICAgICAgICMgd2hlbiB0aGUgdGVzdCBwcm9ncmFtIGNvbnRh
aW5zIG5vIHRlc3QgZGVmaW5pdGlvbi4KKyAgICAgICAgIjpndGVzdF9ub190ZXN0X3VuaXR0ZXN0
IiwKKyAgICAgICAgIjpndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0XyIsCisgICAgXSwKKyAgICBk
ZXBzID0gWyI6Z3Rlc3RfdGVzdF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9
ICJndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNz
ID0gWyJndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVz
dF9tYWluIl0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImd0ZXN0X3htbF9vdXRmaWxl
Ml90ZXN0XyIsCisgICAgdGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImd0ZXN0X3htbF9vdXRm
aWxlMl90ZXN0Xy5jYyJdLAorICAgIGRlcHMgPSBbIi8vOmd0ZXN0X21haW4iXSwKKykKKworcHlf
dGVzdCgKKyAgICBuYW1lID0gImd0ZXN0X3htbF9vdXRmaWxlc190ZXN0IiwKKyAgICBzaXplID0g
InNtYWxsIiwKKyAgICBzcmNzID0gWworICAgICAgICAiZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3Qu
cHkiLAorICAgICAgICAiZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkiLAorICAgIF0sCisgICAgZGF0
YSA9IFsKKyAgICAgICAgIjpndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8iLAorICAgICAgICAiOmd0
ZXN0X3htbF9vdXRmaWxlMl90ZXN0XyIsCisgICAgXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVz
dF91dGlscyJdLAorKQorCitjY19iaW5hcnkoCisgICAgbmFtZSA9ICJnb29nbGV0ZXN0LXVuaW5p
dGlhbGl6ZWQtdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0gMSwKKyAgICBzcmNzID0gWyJnb29nbGV0
ZXN0LXVuaW5pdGlhbGl6ZWQtdGVzdF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAor
KQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3Qi
LAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNzID0gWyJnb29nbGV0ZXN0LXVuaW5pdGlh
bGl6ZWQtdGVzdC5weSJdLAorICAgIGRhdGEgPSBbImdvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10
ZXN0XyJdLAorICAgIGRlcHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKK2NjX2JpbmFy
eSgKKyAgICBuYW1lID0gImd0ZXN0X3Rlc3RicmlkZ2VfdGVzdF8iLAorICAgIHRlc3Rvbmx5ID0g
MSwKKyAgICBzcmNzID0gWyJndGVzdF90ZXN0YnJpZGdlX3Rlc3RfLmNjIl0sCisgICAgZGVwcyA9
IFsiLy86Z3Rlc3RfbWFpbiJdLAorKQorCisjIFRlc3RzIHRoYXQgZmlsdGVyaW5nIHZpYSB0ZXN0
YnJpZGdlIHdvcmtzCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ3Rlc3RfdGVzdGJyaWRnZV90ZXN0
IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAgICBzcmNzID0gWyJndGVzdF90ZXN0YnJpZGdlX3Rl
c3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z3Rlc3RfdGVzdGJyaWRnZV90ZXN0XyJdLAorICAgIGRl
cHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCisKKworcHlfdGVzdCgKKyAgICBuYW1lID0g
Imdvb2dsZXRlc3QtanNvbi1vdXRmaWxlcy10ZXN0IiwKKyAgICBzaXplID0gInNtYWxsIiwKKyAg
ICBzcmNzID0gWworICAgICAgICAiZ29vZ2xldGVzdC1qc29uLW91dGZpbGVzLXRlc3QucHkiLAor
ICAgICAgICAiZ3Rlc3RfanNvbl90ZXN0X3V0aWxzLnB5IiwKKyAgICBdLAorICAgIGRhdGEgPSBb
CisgICAgICAgICI6Z3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfIiwKKyAgICAgICAgIjpndGVzdF94
bWxfb3V0ZmlsZTJfdGVzdF8iLAorICAgIF0sCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3RfdXRp
bHMiXSwKKykKKworcHlfdGVzdCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtanNvbi1vdXRwdXQt
dW5pdHRlc3QiLAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNzID0gWworICAgICAgICAi
Z29vZ2xldGVzdC1qc29uLW91dHB1dC11bml0dGVzdC5weSIsCisgICAgICAgICJndGVzdF9qc29u
X3Rlc3RfdXRpbHMucHkiLAorICAgIF0sCisgICAgZGF0YSA9IFsKKyAgICAgICAgIyBXZSBpbnZv
a2UgZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCB0byB2ZXJpZnkgdGhlIEpTT04gb3V0cHV0CisgICAg
ICAgICMgd2hlbiB0aGUgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIG5vIHRlc3QgZGVmaW5pdGlvbi4K
KyAgICAgICAgIjpndGVzdF9ub190ZXN0X3VuaXR0ZXN0IiwKKyAgICAgICAgIjpndGVzdF94bWxf
b3V0cHV0X3VuaXR0ZXN0XyIsCisgICAgXSwKKyAgICBhcmdzID0gc2VsZWN0KHsKKyAgICAgICAg
IjpoYXNfYWJzbCI6IFtdLAorICAgICAgICAiLy9jb25kaXRpb25zOmRlZmF1bHQiOiBbIi0tbm9f
c3RhY2t0cmFjZV9zdXBwb3J0Il0sCisgICAgfSksCisgICAgZGVwcyA9IFsiOmd0ZXN0X3Rlc3Rf
dXRpbHMiXSwKKykKKyMgVmVyaWZpZXMgaW50ZXJhY3Rpb24gb2YgZGVhdGggdGVzdHMgYW5kIGV4
Y2VwdGlvbnMuCitjY190ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1kZWF0aC10ZXN0X2V4
X2NhdGNoX3Rlc3QiLAorICAgIHNpemUgPSAibWVkaXVtIiwKKyAgICBzcmNzID0gWyJnb29nbGV0
ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYyJdLAorICAgIGNvcHRzID0gWyItZmV4Y2VwdGlvbnMi
XSwKKyAgICBkZWZpbmVzID0gWyJHVEVTVF9FTkFCTEVfQ0FUQ0hfRVhDRVBUSU9OU189MSJdLAor
ICAgIGRlcHMgPSBbIi8vOmd0ZXN0Il0sCispCisKK2NjX2JpbmFyeSgKKyAgICBuYW1lID0gImdv
b2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3RfIiwKKyAgICB0ZXN0b25seSA9
IDEsCisgICAgc3JjcyA9IFsiZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVz
dF8uY2MiXSwKKyAgICBkZXBzID0gWyIvLzpndGVzdCJdLAorKQorCitjY19iaW5hcnkoCisgICAg
bmFtZSA9ICJnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0XyIsCisgICAg
dGVzdG9ubHkgPSAxLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlk
LW5hbWUyLXRlc3RfLmNjIl0sCisgICAgZGVwcyA9IFsiLy86Z3Rlc3QiXSwKKykKKworcHlfdGVz
dCgKKyAgICBuYW1lID0gImdvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3Qi
LAorICAgIHNpemUgPSAic21hbGwiLAorICAgIHNyY3MgPSBbImdvb2dsZXRlc3QtcGFyYW0tdGVz
dC1pbnZhbGlkLW5hbWUxLXRlc3QucHkiXSwKKyAgICBkYXRhID0gWyI6Z29vZ2xldGVzdC1wYXJh
bS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdF8iXSwKKyAgICBkZXBzID0gWyI6Z3Rlc3RfdGVzdF91
dGlscyJdLAorKQorCitweV90ZXN0KAorICAgIG5hbWUgPSAiZ29vZ2xldGVzdC1wYXJhbS10ZXN0
LWludmFsaWQtbmFtZTItdGVzdCIsCisgICAgc2l6ZSA9ICJzbWFsbCIsCisgICAgc3JjcyA9IFsi
Z29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTItdGVzdC5weSJdLAorICAgIGRhdGEg
PSBbIjpnb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMi10ZXN0XyJdLAorICAgIGRl
cHMgPSBbIjpndGVzdF90ZXN0X3V0aWxzIl0sCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdC5weSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJl
LXVuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1ZGZiYzY5M2I0M2ExYjE5ZTM4NDdkY2JjYWI4ODZk
MmY0ZDI4ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdC5weQpAQCAtMCwwICsxLDIwOCBA
QAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5j
LgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVW5pdCB0
ZXN0IGZvciBHb29nbGUgVGVzdCdzIGJyZWFrLW9uLWZhaWx1cmUgbW9kZS4KKworQSB1c2VyIGNh
biBhc2sgR29vZ2xlIFRlc3QgdG8gc2VnLWZhdWx0IHdoZW4gYW4gYXNzZXJ0aW9uIGZhaWxzLCB1
c2luZworZWl0aGVyIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlh
YmxlIG9yIHRoZQorLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWcuICBUaGlzIHNjcmlwdCB0
ZXN0cyBzdWNoIGZ1bmN0aW9uYWxpdHkKK2J5IGludm9raW5nIGdvb2dsZXRlc3QtYnJlYWstb24t
ZmFpbHVyZS11bml0dGVzdF8gKGEgcHJvZ3JhbSB3cml0dGVuIHdpdGgKK0dvb2dsZSBUZXN0KSB3
aXRoIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgYW5kIGNvbW1hbmQgbGluZSBmbGFncy4KKyIiIgor
CitpbXBvcnQgb3MKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKKyMgQ29uc3RhbnRzLgorCitJ
U19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCisKKyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxl
IGZvciBlbmFibGluZy9kaXNhYmxpbmcgdGhlIGJyZWFrLW9uLWZhaWx1cmUgbW9kZS4KK0JSRUFL
X09OX0ZBSUxVUkVfRU5WX1ZBUiA9ICdHVEVTVF9CUkVBS19PTl9GQUlMVVJFJworCisjIFRoZSBj
b21tYW5kIGxpbmUgZmxhZyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBicmVhay1vbi1mYWls
dXJlIG1vZGUuCitCUkVBS19PTl9GQUlMVVJFX0ZMQUcgPSAnZ3Rlc3RfYnJlYWtfb25fZmFpbHVy
ZScKKworIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0
aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLgorVEhST1dfT05fRkFJTFVSRV9FTlZfVkFSID0gJ0dU
RVNUX1RIUk9XX09OX0ZBSUxVUkUnCisKKyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciBl
bmFibGluZy9kaXNhYmxpbmcgdGhlIGNhdGNoLWV4Y2VwdGlvbnMgbW9kZS4KK0NBVENIX0VYQ0VQ
VElPTlNfRU5WX1ZBUiA9ICdHVEVTVF9DQVRDSF9FWENFUFRJT05TJworCisjIFBhdGggdG8gdGhl
IGdvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8gcHJvZ3JhbS4KK0VYRV9QQVRI
ID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisgICAgJ2dvb2dsZXRl
c3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8nKQorCisKK2Vudmlyb24gPSBndGVzdF90ZXN0
X3V0aWxzLmVudmlyb24KK1NldEVudlZhciA9IGd0ZXN0X3Rlc3RfdXRpbHMuU2V0RW52VmFyCisK
KyMgVGVzdHMgaW4gdGhpcyBmaWxlIHJ1biBhIEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QgcHJvZ3Jh
bSBhbmQgZXhwZWN0IGl0CisjIHRvIHRlcm1pbmF0ZSBwcmVtYXR1cmVseS4gIFRoZXJlZm9yZSB0
aGV5IGFyZSBpbmNvbXBhdGlibGUgd2l0aAorIyB0aGUgcHJlbWF0dXJlLWV4aXQtZmlsZSBwcm90
b2NvbCBieSBkZXNpZ24uICBVbnNldCB0aGUKKyMgcHJlbWF0dXJlLWV4aXQgZmlsZXBhdGggdG8g
cHJldmVudCBHb29nbGUgVGVzdCBmcm9tIGNyZWF0aW5nCisjIHRoZSBmaWxlLgorU2V0RW52VmFy
KGd0ZXN0X3Rlc3RfdXRpbHMuUFJFTUFUVVJFX0VYSVRfRklMRV9FTlZfVkFSLCBOb25lKQorCisK
K2RlZiBSdW4oY29tbWFuZCk6CisgICIiIlJ1bnMgYSBjb21tYW5kOyByZXR1cm5zIDEgaWYgaXQg
d2FzIGtpbGxlZCBieSBhIHNpZ25hbCwgb3IgMCBvdGhlcndpc2UuIiIiCisKKyAgcCA9IGd0ZXN0
X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kLCBlbnY9ZW52aXJvbikKKyAgaWYgcC50ZXJt
aW5hdGVkX2J5X3NpZ25hbDoKKyAgICByZXR1cm4gMQorICBlbHNlOgorICAgIHJldHVybiAwCisK
KworIyBUaGUgdGVzdHMuCisKKworY2xhc3MgR1Rlc3RCcmVha09uRmFpbHVyZVVuaXRUZXN0KGd0
ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJUZXN0cyB1c2luZyB0aGUgR1RFU1RfQlJF
QUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBvcgorICB0aGUgLS1ndGVzdF9icmVh
a19vbl9mYWlsdXJlIGZsYWcgdG8gdHVybiBhc3NlcnRpb24gZmFpbHVyZXMgaW50bworICBzZWdt
ZW50YXRpb24gZmF1bHRzLgorICAiIiIKKworICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGVudl92
YXJfdmFsdWUsIGZsYWdfdmFsdWUsIGV4cGVjdF9zZWdfZmF1bHQpOgorICAgICIiIlJ1bnMgZ29v
Z2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0XyBhbmQgdmVyaWZpZXMgdGhhdCBpdCBk
b2VzCisgICAgKG9yIGRvZXMgbm90KSBoYXZlIGEgc2VnLWZhdWx0LgorCisgICAgQXJnczoKKyAg
ICAgIGVudl92YXJfdmFsdWU6ICAgIHZhbHVlIG9mIHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJF
IGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZTsgTm9uZSBpZiB0
aGUgdmFyaWFibGUgc2hvdWxkIGJlIHVuc2V0LgorICAgICAgZmxhZ192YWx1ZTogICAgICAgdmFs
dWUgb2YgdGhlIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnOworICAgICAgICAgICAgICAg
ICAgICAgICAgTm9uZSBpZiB0aGUgZmxhZyBzaG91bGQgbm90IGJlIHByZXNlbnQuCisgICAgICBl
eHBlY3Rfc2VnX2ZhdWx0OiAxIGlmIHRoZSBwcm9ncmFtIGlzIGV4cGVjdGVkIHRvIGdlbmVyYXRl
IGEgc2VnLWZhdWx0OworICAgICAgICAgICAgICAgICAgICAgICAgMCBvdGhlcndpc2UuCisgICAg
IiIiCisKKyAgICBTZXRFbnZWYXIoQlJFQUtfT05fRkFJTFVSRV9FTlZfVkFSLCBlbnZfdmFyX3Zh
bHVlKQorCisgICAgaWYgZW52X3Zhcl92YWx1ZSBpcyBOb25lOgorICAgICAgZW52X3Zhcl92YWx1
ZV9tc2cgPSAnIGlzIG5vdCBzZXQnCisgICAgZWxzZToKKyAgICAgIGVudl92YXJfdmFsdWVfbXNn
ID0gJz0nICsgZW52X3Zhcl92YWx1ZQorCisgICAgaWYgZmxhZ192YWx1ZSBpcyBOb25lOgorICAg
ICAgZmxhZyA9ICcnCisgICAgZWxpZiBmbGFnX3ZhbHVlID09ICcwJzoKKyAgICAgIGZsYWcgPSAn
LS0lcz0wJyAlIEJSRUFLX09OX0ZBSUxVUkVfRkxBRworICAgIGVsc2U6CisgICAgICBmbGFnID0g
Jy0tJXMnICUgQlJFQUtfT05fRkFJTFVSRV9GTEFHCisKKyAgICBjb21tYW5kID0gW0VYRV9QQVRI
XQorICAgIGlmIGZsYWc6CisgICAgICBjb21tYW5kLmFwcGVuZChmbGFnKQorCisgICAgaWYgZXhw
ZWN0X3NlZ19mYXVsdDoKKyAgICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxkJworICAgIGVsc2U6
CisgICAgICBzaG91bGRfb3Jfbm90ID0gJ3Nob3VsZCBub3QnCisKKyAgICBoYXNfc2VnX2ZhdWx0
ID0gUnVuKGNvbW1hbmQpCisKKyAgICBTZXRFbnZWYXIoQlJFQUtfT05fRkFJTFVSRV9FTlZfVkFS
LCBOb25lKQorCisgICAgbXNnID0gKCd3aGVuICVzJXMsIGFuIGFzc2VydGlvbiBmYWlsdXJlIGlu
ICIlcyIgJXMgY2F1c2UgYSBzZWctZmF1bHQuJyAlCisgICAgICAgICAgIChCUkVBS19PTl9GQUlM
VVJFX0VOVl9WQVIsIGVudl92YXJfdmFsdWVfbXNnLCAnICcuam9pbihjb21tYW5kKSwKKyAgICAg
ICAgICAgIHNob3VsZF9vcl9ub3QpKQorICAgIHNlbGYuYXNzZXJ0XyhoYXNfc2VnX2ZhdWx0ID09
IGV4cGVjdF9zZWdfZmF1bHQsIG1zZykKKworICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcihzZWxm
KToKKyAgICAiIiJUZXN0cyB0aGUgYmVoYXZpb3Igb2YgdGhlIGRlZmF1bHQgbW9kZS4iIiIKKwor
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3Nl
Z19mYXVsdD0wKQorCisgIGRlZiB0ZXN0RW52VmFyKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5n
IHRoZSBHVEVTVF9CUkVBS19PTl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlhYmxlLiIiIgorCisg
ICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ192YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdf
ZmF1bHQ9MCkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKKyAgICAg
ICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0X3NlZ19mYXVsdD0xKQorCisgIGRlZiB0ZXN0RmxhZyhzZWxmKToKKyAgICAiIiJUZXN0
cyB1c2luZyB0aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWcuIiIiCisKKyAgICBzZWxm
LlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ192YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0w
KQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAg
ICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rf
c2VnX2ZhdWx0PTEpCisKKyAgZGVmIHRlc3RGbGFnT3ZlcnJpZGVzRW52VmFyKHNlbGYpOgorICAg
ICIiIlRlc3RzIHRoYXQgdGhlIGZsYWcgb3ZlcnJpZGVzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJs
ZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAorICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIGV4
cGVjdF9zZWdfZmF1bHQ9MCkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScw
JywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAg
ICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zh
cl92YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCisgICAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0wKQorICAgIHNlbGYuUnVuQW5kVmVy
aWZ5KGVudl92YXJfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9
JzEnLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKKworICBkZWYg
dGVzdEJyZWFrT25GYWlsdXJlT3ZlcnJpZGVzVGhyb3dPbkZhaWx1cmUoc2VsZik6CisgICAgIiIi
VGVzdHMgdGhhdCBndGVzdF9icmVha19vbl9mYWlsdXJlIG92ZXJyaWRlcyBndGVzdF90aHJvd19v
bl9mYWlsdXJlLiIiIgorCisgICAgU2V0RW52VmFyKFRIUk9XX09OX0ZBSUxVUkVfRU5WX1ZBUiwg
JzEnKQorICAgIHRyeToKKyAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0xKQorICAgIGZpbmFsbHk6CisgICAgICBTZXRF
bnZWYXIoVEhST1dfT05fRkFJTFVSRV9FTlZfVkFSLCBOb25lKQorCisgIGlmIElTX1dJTkRPV1M6
CisgICAgZGVmIHRlc3RDYXRjaEV4Y2VwdGlvbnNEb2VzTm90SW50ZXJmZXJlKHNlbGYpOgorICAg
ICAgIiIiVGVzdHMgdGhhdCBndGVzdF9jYXRjaF9leGNlcHRpb25zIGRvZXNuJ3QgaW50ZXJmZXJl
LiIiIgorCisgICAgICBTZXRFbnZWYXIoQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSLCAnMScpCisg
ICAgICB0cnk6CisgICAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0xKQorICAgICAgZmluYWxseToKKyAgICAgICAg
U2V0RW52VmFyKENBVENIX0VYQ0VQVElPTlNfRU5WX1ZBUiwgTm9uZSkKKworCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWJyZWFrLW9uLWZhaWx1cmUt
dW5pdHRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWJy
ZWFrLW9uLWZhaWx1cmUtdW5pdHRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4NDk1N2EyZDAzYjU2MjYw
YzhlMmMwYWU4ZjVhMjdiZWI2ZjYzNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtYnJlYWstb24tZmFpbHVyZS11bml0dGVzdF8uY2MK
QEAgLTAsMCArMSw4NiBAQAorLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCisvLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8g
bWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisKKy8vIFVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyBicmVhay1vbi1mYWlsdXJl
IG1vZGUuCisvLworLy8gQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gc2VnLWZhdWx0IHdo
ZW4gYW4gYXNzZXJ0aW9uIGZhaWxzLCB1c2luZworLy8gZWl0aGVyIHRoZSBHVEVTVF9CUkVBS19P
Tl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQorLy8gLS1ndGVzdF9icmVha19v
bl9mYWlsdXJlIGZsYWcuICBUaGlzIGZpbGUgaXMgdXNlZCBmb3IgdGVzdGluZyBzdWNoCisvLyBm
dW5jdGlvbmFsaXR5LgorLy8KKy8vIFRoaXMgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBh
IFB5dGhvbiB1bml0IHRlc3QuICBJdCBpcworLy8gZXhwZWN0ZWQgdG8gZmFpbC4gIERvbid0IHJ1
biBpdCBkaXJlY3RseS4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpZiBHVEVTVF9P
U19XSU5ET1dTCisjIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyMgaW5jbHVkZSA8c3RkbGliLmg+Cisj
ZW5kaWYKKworbmFtZXNwYWNlIHsKKworLy8gQSB0ZXN0IHRoYXQncyBleHBlY3RlZCB0byBmYWls
LgorVEVTVChGb28sIEJhcikgeworICBFWFBFQ1RfRVEoMiwgMyk7Cit9CisKKyNpZiBHVEVTVF9I
QVNfU0VIICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorLy8gT24gV2luZG93cyBNb2JpbGUg
Z2xvYmFsIGV4Y2VwdGlvbiBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZC4KK0xPTkcgV0lOQVBJ
IEV4aXRXaXRoRXhjZXB0aW9uQ29kZSgKKyAgICBzdHJ1Y3QgX0VYQ0VQVElPTl9QT0lOVEVSUyog
ZXhjZXB0aW9uX3BvaW50ZXJzKSB7CisgIGV4aXQoZXhjZXB0aW9uX3BvaW50ZXJzLT5FeGNlcHRp
b25SZWNvcmQtPkV4Y2VwdGlvbkNvZGUpOworfQorI2VuZGlmCisKK30gIC8vIG5hbWVzcGFjZQor
CitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyNpZiBHVEVTVF9PU19XSU5ET1dT
CisgIC8vIFN1cHByZXNzZXMgZGlzcGxheSBvZiB0aGUgV2luZG93cyBlcnJvciBkaWFsb2cgdXBv
biBlbmNvdW50ZXJpbmcKKyAgLy8gYSBnZW5lcmFsIHByb3RlY3Rpb24gZmF1bHQgKHNlZ21lbnQg
dmlvbGF0aW9uKS4KKyAgU2V0RXJyb3JNb2RlKFNFTV9OT0dQRkFVTFRFUlJPUkJPWCB8IFNFTV9G
QUlMQ1JJVElDQUxFUlJPUlMpOworCisjIGlmIEdURVNUX0hBU19TRUggJiYgIUdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCisKKyAgLy8gVGhlIGRlZmF1bHQgdW5oYW5kbGVkIGV4Y2VwdGlvbiBmaWx0
ZXIgZG9lcyBub3QgYWx3YXlzIGV4aXQKKyAgLy8gd2l0aCB0aGUgZXhjZXB0aW9uIGNvZGUgYXMg
ZXhpdCBjb2RlIC0gZm9yIGV4YW1wbGUgaXQgZXhpdHMgd2l0aAorICAvLyAwIGZvciBFWENFUFRJ
T05fQUNDRVNTX1ZJT0xBVElPTiBhbmQgMSBmb3IgRVhDRVBUSU9OX0JSRUFLUE9JTlQKKyAgLy8g
aWYgdGhlIGFwcGxpY2F0aW9uIGlzIGNvbXBpbGVkIGluIGRlYnVnIG1vZGUuIFRodXMgd2UgdXNl
IG91ciBvd24KKyAgLy8gZmlsdGVyIHdoaWNoIGFsd2F5cyBleGl0cyB3aXRoIHRoZSBleGNlcHRp
b24gY29kZSBmb3IgdW5oYW5kbGVkCisgIC8vIGV4Y2VwdGlvbnMuCisgIFNldFVuaGFuZGxlZEV4
Y2VwdGlvbkZpbHRlcihFeGl0V2l0aEV4Y2VwdGlvbkNvZGUpOworCisjIGVuZGlmCisjZW5kaWYg
IC8vIEdURVNUX09TX1dJTkRPV1MKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFy
Z3YpOworCisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0LnB5
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlv
bnMtdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZDQ5YzEwMjNjNTBlZjE2ODMzZTZiOGUyYThlNjIwMjQ4
NDMyYWMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
b29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdC5weQpAQCAtMCwwICsxLDIzMyBAQAorIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDEwIEdvb2dsZSBJbmMuICBBbGwg
UmlnaHRzIFJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6
CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVGVzdHMgR29vZ2xlIFRl
c3QncyBleGNlcHRpb24gY2F0Y2hpbmcgYmVoYXZpb3IuCisKK1RoaXMgc2NyaXB0IGludm9rZXMg
Z29vZ2xldGVzdC1jYXRjaC1leGNlcHRpb25zLXRlc3RfIGFuZAorZ29vZ2xldGVzdC1jYXRjaC1l
eGNlcHRpb25zLWV4LXRlc3RfIChwcm9ncmFtcyB3cml0dGVuIHdpdGgKK0dvb2dsZSBUZXN0KSBh
bmQgdmVyaWZpZXMgdGhlaXIgb3V0cHV0LgorIiIiCisKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxz
CisKKyMgQ29uc3RhbnRzLgorRkxBR19QUkVGSVggPSAnLS1ndGVzdF8nCitMSVNUX1RFU1RTX0ZM
QUcgPSBGTEFHX1BSRUZJWCArICdsaXN0X3Rlc3RzJworTk9fQ0FUQ0hfRVhDRVBUSU9OU19GTEFH
ID0gRkxBR19QUkVGSVggKyAnY2F0Y2hfZXhjZXB0aW9ucz0wJworRklMVEVSX0ZMQUcgPSBGTEFH
X1BSRUZJWCArICdmaWx0ZXInCisKKyMgUGF0aCB0byB0aGUgZ29vZ2xldGVzdC1jYXRjaC1leGNl
cHRpb25zLWV4LXRlc3RfIGJpbmFyeSwgY29tcGlsZWQgd2l0aAorIyBleGNlcHRpb25zIGVuYWJs
ZWQuCitFWF9FWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRo
KAorICAgICdnb29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtZXgtdGVzdF8nKQorCisjIFBhdGgg
dG8gdGhlIGdvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0XyBiaW5hcnksIGNvbXBpbGVk
IHdpdGgKKyMgZXhjZXB0aW9ucyBkaXNhYmxlZC4KK0VYRV9QQVRIID0gZ3Rlc3RfdGVzdF91dGls
cy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisgICAgJ2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9u
cy1uby1leC10ZXN0XycpCisKK2Vudmlyb24gPSBndGVzdF90ZXN0X3V0aWxzLmVudmlyb24KK1Nl
dEVudlZhciA9IGd0ZXN0X3Rlc3RfdXRpbHMuU2V0RW52VmFyCisKKyMgVGVzdHMgaW4gdGhpcyBm
aWxlIHJ1biBhIEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QgcHJvZ3JhbSBhbmQgZXhwZWN0IGl0Cisj
IHRvIHRlcm1pbmF0ZSBwcmVtYXR1cmVseS4gIFRoZXJlZm9yZSB0aGV5IGFyZSBpbmNvbXBhdGli
bGUgd2l0aAorIyB0aGUgcHJlbWF0dXJlLWV4aXQtZmlsZSBwcm90b2NvbCBieSBkZXNpZ24uICBV
bnNldCB0aGUKKyMgcHJlbWF0dXJlLWV4aXQgZmlsZXBhdGggdG8gcHJldmVudCBHb29nbGUgVGVz
dCBmcm9tIGNyZWF0aW5nCisjIHRoZSBmaWxlLgorU2V0RW52VmFyKGd0ZXN0X3Rlc3RfdXRpbHMu
UFJFTUFUVVJFX0VYSVRfRklMRV9FTlZfVkFSLCBOb25lKQorCitURVNUX0xJU1QgPSBndGVzdF90
ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgW0VYRV9QQVRILCBMSVNUX1RFU1RTX0ZMQUddLCBl
bnY9ZW52aXJvbikub3V0cHV0CisKK1NVUFBPUlRTX1NFSF9FWENFUFRJT05TID0gJ1Rocm93c1Nl
aEV4Y2VwdGlvbicgaW4gVEVTVF9MSVNUCisKK2lmIFNVUFBPUlRTX1NFSF9FWENFUFRJT05TOgor
ICBCSU5BUllfT1VUUFVUID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtFWEVfUEFUSF0s
IGVudj1lbnZpcm9uKS5vdXRwdXQKKworRVhfQklOQVJZX09VVFBVVCA9IGd0ZXN0X3Rlc3RfdXRp
bHMuU3VicHJvY2VzcygKKyAgICBbRVhfRVhFX1BBVEhdLCBlbnY9ZW52aXJvbikub3V0cHV0CisK
KworIyBUaGUgdGVzdHMuCitpZiBTVVBQT1JUU19TRUhfRVhDRVBUSU9OUzoKKyAgIyBweWxpbnQ6
ZGlzYWJsZS1tc2c9QzYzMDIKKyAgY2xhc3MgQ2F0Y2hTZWhFeGNlcHRpb25zVGVzdChndGVzdF90
ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBleGNlcHRpb24tY2F0Y2hpbmcgYmVo
YXZpb3IuIiIiCisKKworICAgIGRlZiBUZXN0U2VoRXhjZXB0aW9ucyhzZWxmLCB0ZXN0X291dHB1
dCk6CisgICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhy
b3duICcKKyAgICAgICAgICAgICAgICAgICAnaW4gdGhlIHRlc3QgZml4dHVyZVwncyBjb25zdHJ1
Y3RvcicKKyAgICAgICAgICAgICAgICAgICBpbiB0ZXN0X291dHB1dCkKKyAgICAgIHNlbGYuYXNz
ZXJ0XygnU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24gJworICAgICAgICAgICAg
ICAgICAgICdpbiB0aGUgdGVzdCBmaXh0dXJlXCdzIGRlc3RydWN0b3InCisgICAgICAgICAgICAg
ICAgICAgaW4gdGVzdF9vdXRwdXQpCisgICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24g
d2l0aCBjb2RlIDB4MmEgdGhyb3duIGluIFNldFVwVGVzdENhc2UoKScKKyAgICAgICAgICAgICAg
ICAgICBpbiB0ZXN0X291dHB1dCkKKyAgICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3
aXRoIGNvZGUgMHgyYSB0aHJvd24gaW4gVGVhckRvd25UZXN0Q2FzZSgpJworICAgICAgICAgICAg
ICAgICAgIGluIHRlc3Rfb3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9u
IHdpdGggY29kZSAweDJhIHRocm93biBpbiBTZXRVcCgpJworICAgICAgICAgICAgICAgICAgIGlu
IHRlc3Rfb3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGggY29k
ZSAweDJhIHRocm93biBpbiBUZWFyRG93bigpJworICAgICAgICAgICAgICAgICAgIGluIHRlc3Rf
b3V0cHV0KQorICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGggY29kZSAweDJh
IHRocm93biBpbiB0aGUgdGVzdCBib2R5JworICAgICAgICAgICAgICAgICAgIGluIHRlc3Rfb3V0
cHV0KQorCisgICAgZGVmIHRlc3RDYXRjaGVzU2VoRXhjZXB0aW9uc1dpdGhDeHhFeGNlcHRpb25z
RW5hYmxlZChzZWxmKToKKyAgICAgIHNlbGYuVGVzdFNlaEV4Y2VwdGlvbnMoRVhfQklOQVJZX09V
VFBVVCkKKworICAgIGRlZiB0ZXN0Q2F0Y2hlc1NlaEV4Y2VwdGlvbnNXaXRoQ3h4RXhjZXB0aW9u
c0Rpc2FibGVkKHNlbGYpOgorICAgICAgc2VsZi5UZXN0U2VoRXhjZXB0aW9ucyhCSU5BUllfT1VU
UFVUKQorCisKK2NsYXNzIENhdGNoQ3h4RXhjZXB0aW9uc1Rlc3QoZ3Rlc3RfdGVzdF91dGlscy5U
ZXN0Q2FzZSk6CisgICIiIlRlc3RzIEMrKyBleGNlcHRpb24tY2F0Y2hpbmcgYmVoYXZpb3IuCisK
KyAgICAgVGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UgdmVyaWZ5IHRoYXQ6CisgICAgICogQysrIGV4
Y2VwdGlvbnMgYXJlIGNhdWdodCBhbmQgbG9nZ2VkIGFzIEMrKyAobm90IFNFSCkgZXhjZXB0aW9u
cworICAgICAqIEV4Y2VwdGlvbiB0aHJvd24gYWZmZWN0IHRoZSByZW1haW5kZXIgb2YgdGhlIHRl
c3Qgd29yayBmbG93IGluIHRoZQorICAgICAgIGV4cGVjdGVkIG1hbm5lci4KKyAgIiIiCisKKyAg
ZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luRml4dHVyZUNvbnN0cnVjdG9yKHNlbGYpOgor
ICAgIHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICcKKyAgICAg
ICAgICAgICAgICAgJyJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIiB0aHJvd24gJworICAgICAgICAg
ICAgICAgICAnaW4gdGhlIHRlc3QgZml4dHVyZVwncyBjb25zdHJ1Y3RvcicKKyAgICAgICAgICAg
ICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ3VuZXhwZWN0ZWQn
IG5vdCBpbiBFWF9CSU5BUllfT1VUUFVULAorICAgICAgICAgICAgICAgICAnVGhpcyBmYWlsdXJl
IGJlbG9uZ3MgaW4gdGhpcyB0ZXN0IG9ubHkgaWYgJworICAgICAgICAgICAgICAgICAnIkN4eEV4
Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0IiAobm8gcXVvdGVzKSAnCisgICAgICAgICAgICAgICAg
ICdhcHBlYXJzIG9uIHRoZSBzYW1lIGxpbmUgYXMgd29yZHMgImNhbGxlZCB1bmV4cGVjdGVkbHki
JykKKworICBpZiAoJ0N4eEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3QuVGhyb3dzRXhjZXB0aW9u
SW5EZXN0cnVjdG9yJyBpbgorICAgICAgRVhfQklOQVJZX09VVFBVVCk6CisKKyAgICBkZWYgdGVz
dENhdGNoZXNDeHhFeGNlcHRpb25zSW5GaXh0dXJlRGVzdHJ1Y3RvcihzZWxmKToKKyAgICAgIHNl
bGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICcKKyAgICAgICAgICAg
ICAgICAgICAnIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iIHRocm93biAnCisgICAgICAgICAgICAg
ICAgICAgJ2luIHRoZSB0ZXN0IGZpeHR1cmVcJ3MgZGVzdHJ1Y3RvcicKKyAgICAgICAgICAgICAg
ICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRp
b25JbkRlc3RydWN0b3JUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgJworICAgICAgICAgICAgICAg
ICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFS
WV9PVVRQVVQpCisKKyAgZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luU2V0VXBUZXN0Q2Fz
ZShzZWxmKToKKyAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlv
biAiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiInCisgICAgICAgICAgICAgICAgICcgdGhyb3duIGlu
IFNldFVwVGVzdENhc2UoKScKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkK
KyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0OjpUZWFyRG93
blRlc3RDYXNlKCkgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAg
ICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4
eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgY29uc3RydWN0b3IgJworICAgICAgICAgICAg
ICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZ
X09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRl
c3QgZGVzdHJ1Y3RvciAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJwor
ICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0Xygn
Q3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6U2V0VXAoKSAnCisgICAgICAgICAgICAg
ICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllf
T1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVz
dDo6VGVhckRvd24oKSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJwor
ICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0Xygn
Q3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCB0ZXN0IGJvZHkgJworICAgICAgICAgICAg
ICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZ
X09VVFBVVCkKKworICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5UZWFyRG93blRlc3RD
YXNlKHNlbGYpOgorICAgIHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0
aW9uICJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIicKKyAgICAgICAgICAgICAgICAgJyB0aHJvd24g
aW4gVGVhckRvd25UZXN0Q2FzZSgpJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VU
UFVUKQorCisgIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJblNldFVwKHNlbGYpOgorICAg
IHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICJTdGFuZGFyZCBD
KysgZXhjZXB0aW9uIicKKyAgICAgICAgICAgICAgICAgJyB0aHJvd24gaW4gU2V0VXAoKScKKyAg
ICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4
eEV4Y2VwdGlvbkluU2V0VXBUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgJworICAgICAgICAgICAg
ICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZ
X09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0IGRlc3Ry
dWN0b3IgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAg
ICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2Vw
dGlvbkluU2V0VXBUZXN0OjpUZWFyRG93bigpICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBh
cyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCisgICAg
c2VsZi5hc3NlcnRfKCd1bmV4cGVjdGVkJyBub3QgaW4gRVhfQklOQVJZX09VVFBVVCwKKyAgICAg
ICAgICAgICAgICAgJ1RoaXMgZmFpbHVyZSBiZWxvbmdzIGluIHRoaXMgdGVzdCBvbmx5IGlmICcK
KyAgICAgICAgICAgICAgICAgJyJDeHhFeGNlcHRpb25JblNldFVwVGVzdCIgKG5vIHF1b3Rlcykg
JworICAgICAgICAgICAgICAgICAnYXBwZWFycyBvbiB0aGUgc2FtZSBsaW5lIGFzIHdvcmRzICJj
YWxsZWQgdW5leHBlY3RlZGx5IicpCisKKyAgZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0lu
VGVhckRvd24oc2VsZik6CisgICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVz
Y3JpcHRpb24gIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iJworICAgICAgICAgICAgICAgICAnIHRo
cm93biBpbiBUZWFyRG93bigpJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVU
KQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5UZWFyRG93blRlc3Q6OlRlYXJEb3du
VGVzdENhc2UoKSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJworICAg
ICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQorICAgIHNlbGYuYXNzZXJ0XygnQ3h4
RXhjZXB0aW9uSW5UZWFyRG93blRlc3QgZGVzdHJ1Y3RvciAnCisgICAgICAgICAgICAgICAgICdj
YWxsZWQgYXMgZXhwZWN0ZWQuJworICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVU
KQorCisgIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJblRlc3RCb2R5KHNlbGYpOgorICAg
IHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uICJTdGFuZGFyZCBD
KysgZXhjZXB0aW9uIicKKyAgICAgICAgICAgICAgICAgJyB0aHJvd24gaW4gdGhlIHRlc3QgYm9k
eScKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2Vy
dF8oJ0N4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgJworICAg
ICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKKyAgICAgICAgICAgICAgICAgaW4g
RVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluVGVzdEJv
ZHlUZXN0IGRlc3RydWN0b3IgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVk
LicKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKyAgICBzZWxmLmFzc2Vy
dF8oJ0N4eEV4Y2VwdGlvbkluVGVzdEJvZHlUZXN0OjpUZWFyRG93bigpICcKKyAgICAgICAgICAg
ICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCisgICAgICAgICAgICAgICAgIGluIEVYX0JJTkFS
WV9PVVRQVVQpCisKKyAgZGVmIHRlc3RDYXRjaGVzTm9uU3RkQ3h4RXhjZXB0aW9ucyhzZWxmKToK
KyAgICBzZWxmLmFzc2VydF8oJ1Vua25vd24gQysrIGV4Y2VwdGlvbiB0aHJvd24gaW4gdGhlIHRl
c3QgYm9keScKKyAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKKworICBkZWYg
dGVzdFVuaGFuZGxlZEN4eEV4Y2VwdGlvbnNBYm9ydFRoZVByb2dyYW0oc2VsZik6CisgICAgIyBG
aWx0ZXJzIG91dCBTRUggZXhjZXB0aW9uIHRlc3RzIG9uIFdpbmRvd3MuIFVuaGFuZGxlZCBTRUgg
ZXhjZXB0aW9ucworICAgICMgY2F1c2UgdGVzdHMgdG8gc2hvdyBwb3AtdXAgd2luZG93cyB0aGVy
ZS4KKyAgICBGSVRMRVJfT1VUX1NFSF9URVNUU19GTEFHID0gRklMVEVSX0ZMQUcgKyAnPS0qU2Vo
KicKKyAgICAjIEJ5IGRlZmF1bHQsIEdvb2dsZSBUZXN0IGRvZXNuJ3QgY2F0Y2ggdGhlIGV4Y2Vw
dGlvbnMuCisgICAgdW5jYXVnaHRfZXhjZXB0aW9uc19leF9iaW5hcnlfb3V0cHV0ID0gZ3Rlc3Rf
dGVzdF91dGlscy5TdWJwcm9jZXNzKAorICAgICAgICBbRVhfRVhFX1BBVEgsCisgICAgICAgICBO
T19DQVRDSF9FWENFUFRJT05TX0ZMQUcsCisgICAgICAgICBGSVRMRVJfT1VUX1NFSF9URVNUU19G
TEFHXSwKKyAgICAgICAgZW52PWVudmlyb24pLm91dHB1dAorCisgICAgc2VsZi5hc3NlcnRfKCdV
bmhhbmRsZWQgQysrIGV4Y2VwdGlvbiB0ZXJtaW5hdGluZyB0aGUgcHJvZ3JhbScKKyAgICAgICAg
ICAgICAgICAgaW4gdW5jYXVnaHRfZXhjZXB0aW9uc19leF9iaW5hcnlfb3V0cHV0KQorICAgIHNl
bGYuYXNzZXJ0XygndW5leHBlY3RlZCcgbm90IGluIHVuY2F1Z2h0X2V4Y2VwdGlvbnNfZXhfYmlu
YXJ5X291dHB1dCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0
X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
b29nbGV0ZXN0LWNhdGNoLWV4Y2VwdGlvbnMtdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtY2F0Y2gtZXhjZXB0aW9ucy10ZXN0Xy5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wOWRhZTcwMDMwYTMzYWVhYmEwNjBhYWVmOTdhOTc5YThmNTgwNGFlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNhdGNoLWV4Y2Vw
dGlvbnMtdGVzdF8uY2MKQEAgLTAsMCArMSwzMTEgQEAKKy8vIENvcHlyaWdodCAyMDEwLCBHb29n
bGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8KKy8vIFRlc3RzIGZvciBHb29nbGUgVGVzdCBpdHNl
bGYuIFRlc3RzIGluIHRoaXMgZmlsZSB0aHJvdyBDKysgb3IgU0VICisvLyBleGNlcHRpb25zLCBh
bmQgdGhlIG91dHB1dCBpcyB2ZXJpZmllZCBieQorLy8gZ29vZ2xldGVzdC1jYXRjaC1leGNlcHRp
b25zLXRlc3QucHkuCisKKyNpbmNsdWRlIDxzdGRpby5oPiAgLy8gTk9MSU5UCisjaW5jbHVkZSA8
c3RkbGliLmg+ICAvLyBGb3IgZXhpdCgpLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKwor
I2lmIEdURVNUX0hBU19TRUgKKyMgaW5jbHVkZSA8d2luZG93cy5oPgorI2VuZGlmCisKKyNpZiBH
VEVTVF9IQVNfRVhDRVBUSU9OUworIyBpbmNsdWRlIDxleGNlcHRpb24+ICAvLyBGb3Igc2V0X3Rl
cm1pbmF0ZSgpLgorIyBpbmNsdWRlIDxzdGRleGNlcHQ+CisjZW5kaWYKKwordXNpbmcgdGVzdGlu
Zzo6VGVzdDsKKworI2lmIEdURVNUX0hBU19TRUgKKworY2xhc3MgU2VoRXhjZXB0aW9uSW5Db25z
dHJ1Y3RvclRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBTZWhFeGNlcHRpb25JbkNv
bnN0cnVjdG9yVGVzdCgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9Owor
CitURVNUX0YoU2VoRXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QsIFRocm93c0V4Y2VwdGlvbklu
Q29uc3RydWN0b3IpIHt9CisKK2NsYXNzIFNlaEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3QgOiBw
dWJsaWMgVGVzdCB7CisgcHVibGljOgorICB+U2VoRXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCgp
IHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhj
ZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5EZXN0cnVjdG9yKSB7fQor
CitjbGFzcyBTZWhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0IDogcHVibGljIFRlc3Qgewor
IHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsgUmFpc2VFeGNlcHRpb24o
NDIsIDAsIDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhjZXB0aW9uSW5TZXRVcFRlc3RD
YXNlVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlKSB7fQorCitjbGFzcyBTZWhF
eGNlcHRpb25JblRlYXJEb3duVGVzdENhc2VUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoK
KyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAs
IDAsIE5VTEwpOyB9Cit9OworCitURVNUX0YoU2VoRXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNl
VGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5UZWFyRG93blRlc3RDYXNlKSB7fQorCitjbGFzcyBTZWhF
eGNlcHRpb25JblNldFVwVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwpOyB9Cit9Owor
CitURVNUX0YoU2VoRXhjZXB0aW9uSW5TZXRVcFRlc3QsIFRocm93c0V4Y2VwdGlvbkluU2V0VXAp
IHt9CisKK2NsYXNzIFNlaEV4Y2VwdGlvbkluVGVhckRvd25UZXN0IDogcHVibGljIFRlc3Qgewor
IHByb3RlY3RlZDoKKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeyBSYWlzZUV4Y2VwdGlvbig0
MiwgMCwgMCwgTlVMTCk7IH0KK307CisKK1RFU1RfRihTZWhFeGNlcHRpb25JblRlYXJEb3duVGVz
dCwgVGhyb3dzRXhjZXB0aW9uSW5UZWFyRG93bikge30KKworVEVTVChTZWhFeGNlcHRpb25UZXN0
LCBUaHJvd3NTZWhFeGNlcHRpb24pIHsKKyAgUmFpc2VFeGNlcHRpb24oNDIsIDAsIDAsIE5VTEwp
OworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKKworI2lmIEdURVNUX0hBU19FWENFUFRJ
T05TCisKK2NsYXNzIEN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0IDogcHVibGljIFRlc3Qg
eworIHB1YmxpYzoKKyAgQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QoKSB7CisgICAgLy8g
V2l0aG91dCB0aGlzIG1hY3JvIFZDKysgY29tcGxhaW5zIGFib3V0IHVucmVhY2hhYmxlIGNvZGUg
YXQgdGhlIGVuZCBvZgorICAgIC8vIHRoZSBjb25zdHJ1Y3Rvci4KKyAgICBHVEVTVF9TVVBQUkVT
U19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKAorICAgICAgICB0aHJvdyBzdGQ6OnJ1
bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iKSk7CisgIH0KKworICBzdGF0aWMg
dm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAi
Q3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCisgICAg
ICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICB+
Q3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QoKSB7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAi
Q3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QgZGVzdHJ1Y3RvciAiCisgICAgICAgICAgICAg
ICAgICA8PCAiY2FsbGVkIHVuZXhwZWN0ZWRseS4iOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNl
dFVwKCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JU
ZXN0OjpTZXRVcCgpICIKKyAgICAgICAgICAgICAgICAgIDw8ICJjYWxsZWQgdW5leHBlY3RlZGx5
LiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgQUREX0ZBSUxVUkUo
KSA8PCAiQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Q6OlRlYXJEb3duKCkgIgorICAgICAg
ICAgICAgICAgICAgPDwgImNhbGxlZCB1bmV4cGVjdGVkbHkuIjsKKyAgfQorfTsKKworVEVTVF9G
KEN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0LCBUaHJvd3NFeGNlcHRpb25JbkNvbnN0cnVj
dG9yKSB7CisgIEFERF9GQUlMVVJFKCkgPDwgIkN4eEV4Y2VwdGlvbkluQ29uc3RydWN0b3JUZXN0
IHRlc3QgYm9keSAiCisgICAgICAgICAgICAgICAgPDwgImNhbGxlZCB1bmV4cGVjdGVkbHkuIjsK
K30KKworLy8gRXhjZXB0aW9ucyBpbiBkZXN0cnVjdG9ycyBhcmUgbm90IHN1cHBvcnRlZCBpbiBD
KysxMS4KKyNpZiAhR1RFU1RfTEFOR19DWFgxMQorY2xhc3MgQ3h4RXhjZXB0aW9uSW5EZXN0cnVj
dG9yVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFRlYXJEb3du
VGVzdENhc2UoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25J
bkRlc3RydWN0b3JUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgIgorICAgICAgICAgICAiY2FsbGVk
IGFzIGV4cGVjdGVkLlxuIik7CisgIH0KKworIHByb3RlY3RlZDoKKyAgfkN4eEV4Y2VwdGlvbklu
RGVzdHJ1Y3RvclRlc3QoKSB7CisgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9X
QVJOSU5HX0JFTE9XXygKKyAgICAgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFy
ZCBDKysgZXhjZXB0aW9uIikpOworICB9Cit9OworCitURVNUX0YoQ3h4RXhjZXB0aW9uSW5EZXN0
cnVjdG9yVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5EZXN0cnVjdG9yKSB7fQorI2VuZGlmICAvLyBD
KysxMSBtb2RlCisKK2NsYXNzIEN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgOiBwdWJs
aWMgVGVzdCB7CisgcHVibGljOgorICBDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0KCkg
eworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RD
YXNlVGVzdCBjb25zdHJ1Y3RvciAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4i
KTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7CisgICAgdGhyb3cgc3Rk
OjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIik7CisgIH0KKworICBzdGF0
aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAg
ICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIK
KyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyBwcm90ZWN0ZWQ6
CisgIH5DeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0KCkgeworICAgIHByaW50ZigiJXMi
LAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCBkZXN0cnVjdG9y
ICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyAgdmlydHVh
bCB2b2lkIFNldFVwKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0
aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6U2V0VXAoKSAiCisgICAgICAgICAgICJjYWxsZWQgYXMg
ZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBw
cmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3Q6
OlRlYXJEb3duKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7CisgIH0K
K307CisKK1RFU1RfRihDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0LCBUaHJvd3NFeGNl
cHRpb25JblNldFVwVGVzdENhc2UpIHsKKyAgcHJpbnRmKCIlcyIsCisgICAgICAgICAiQ3h4RXhj
ZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCB0ZXN0IGJvZHkgIgorICAgICAgICAgImNhbGxlZCBh
cyBleHBlY3RlZC5cbiIpOworfQorCitjbGFzcyBDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdENh
c2VUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQgVGVhckRvd25U
ZXN0Q2FzZSgpIHsKKyAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBl
eGNlcHRpb24iKTsKKyAgfQorfTsKKworVEVTVF9GKEN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0
Q2FzZVRlc3QsIFRocm93c0V4Y2VwdGlvbkluVGVhckRvd25UZXN0Q2FzZSkge30KKworY2xhc3Mg
Q3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGljOgorICBzdGF0
aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAg
ICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCisgICAgICAg
ICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVjdGVkOgorICB+Q3h4
RXhjZXB0aW9uSW5TZXRVcFRlc3QoKSB7CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJD
eHhFeGNlcHRpb25JblNldFVwVGVzdCBkZXN0cnVjdG9yICIKKyAgICAgICAgICAgImNhbGxlZCBh
cyBleHBlY3RlZC5cbiIpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeyB0aHJvdyBz
dGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iKTsgfQorCisgIHZpcnR1
YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4
Y2VwdGlvbkluU2V0VXBUZXN0OjpUZWFyRG93bigpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBl
eHBlY3RlZC5cbiIpOworICB9Cit9OworCitURVNUX0YoQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Qs
IFRocm93c0V4Y2VwdGlvbkluU2V0VXApIHsKKyAgQUREX0ZBSUxVUkUoKSA8PCAiQ3h4RXhjZXB0
aW9uSW5TZXRVcFRlc3QgdGVzdCBib2R5ICIKKyAgICAgICAgICAgICAgICA8PCAiY2FsbGVkIHVu
ZXhwZWN0ZWRseS4iOworfQorCitjbGFzcyBDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCA6IHB1
YmxpYyBUZXN0IHsKKyBwdWJsaWM6CisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7
CisgICAgcHJpbnRmKCIlcyIsCisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblRlYXJEb3duVGVz
dDo6VGVhckRvd25UZXN0Q2FzZSgpICIKKyAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5c
biIpOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIH5DeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCgp
IHsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluVGVhckRvd25U
ZXN0IGRlc3RydWN0b3IgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7Cisg
IH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgdGhyb3cgc3RkOjpydW50aW1l
X2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIik7CisgIH0KK307CisKK1RFU1RfRihDeHhF
eGNlcHRpb25JblRlYXJEb3duVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5UZWFyRG93bikge30KKwor
Y2xhc3MgQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHVibGlj
OgorICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIHByaW50ZigiJXMiLAor
ICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duVGVzdENhc2Uo
KSAiCisgICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKKyAgfQorCisgcHJvdGVj
dGVkOgorICB+Q3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QoKSB7CisgICAgcHJpbnRmKCIlcyIs
CisgICAgICAgICAgICJDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdCBkZXN0cnVjdG9yICIKKyAg
ICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOworICB9CisKKyAgdmlydHVhbCB2b2lk
IFRlYXJEb3duKCkgeworICAgIHByaW50ZigiJXMiLAorICAgICAgICAgICAiQ3h4RXhjZXB0aW9u
SW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duKCkgIgorICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVj
dGVkLlxuIik7CisgIH0KK307CisKK1RFU1RfRihDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdCwg
VGhyb3dzU3RkQ3h4RXhjZXB0aW9uKSB7CisgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcigiU3Rh
bmRhcmQgQysrIGV4Y2VwdGlvbiIpOworfQorCitURVNUKEN4eEV4Y2VwdGlvblRlc3QsIFRocm93
c05vblN0ZEN4eEV4Y2VwdGlvbikgeworICB0aHJvdyAiQy1zdHJpbmciOworfQorCisvLyBUaGlz
IHRlcm1pbmF0ZSBoYW5kbGVyIGFib3J0cyB0aGUgcHJvZ3JhbSB1c2luZyBleGl0KCkgcmF0aGVy
IHRoYW4gYWJvcnQoKS4KKy8vIFRoaXMgYXZvaWRzIHNob3dpbmcgcG9wLXVwcyBvbiBXaW5kb3dz
IHN5c3RlbXMgYW5kIGNvcmUgZHVtcHMgb24gVW5peC1saWtlCisvLyBvbmVzLgordm9pZCBUZXJt
aW5hdGVIYW5kbGVyKCkgeworICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCAiVW5oYW5kbGVkIEMr
KyBleGNlcHRpb24gdGVybWluYXRpbmcgdGhlIHByb2dyYW0uIik7CisgIGZmbHVzaChOVUxMKTsK
KyAgZXhpdCgzKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUworCitpbnQg
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwor
ICBzdGQ6OnNldF90ZXJtaW5hdGUoJlRlcm1pbmF0ZUhhbmRsZXIpOworI2VuZGlmCisgIHRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMo
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVz
dC1jb2xvci10ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0
LWNvbG9yLXRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjNiN2M5OTkwYmNmNDRhNjUwMzZjMjUzZTdhMDE4
NDVhZjljMzcxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ29vZ2xldGVzdC1jb2xvci10ZXN0LnB5CkBAIC0wLDAgKzEsMTI3IEBACisjIS91c3IvYmlu
L2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMK
KyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
IyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJWZXJpZmllcyB0aGF0IEdvb2ds
ZSBUZXN0IGNvcnJlY3RseSBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlIGNvbG9ycy4iIiIKKwor
aW1wb3J0IG9zCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitJU19XSU5ET1dTID0gb3MubmFt
ZSA9PSAnbnQnCisKK0NPTE9SX0VOVl9WQVIgPSAnR1RFU1RfQ09MT1InCitDT0xPUl9GTEFHID0g
J2d0ZXN0X2NvbG9yJworQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFi
bGVQYXRoKCdnb29nbGV0ZXN0LWNvbG9yLXRlc3RfJykKKworCitkZWYgU2V0RW52VmFyKGVudl92
YXIsIHZhbHVlKToKKyAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxlIHRvICd2YWx1ZSc7IHVuc2V0
cyBpdCB3aGVuICd2YWx1ZScgaXMgTm9uZS4iIiIKKworICBpZiB2YWx1ZSBpcyBub3QgTm9uZToK
KyAgICBvcy5lbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKKyAgZWxpZiBlbnZfdmFyIGluIG9zLmVu
dmlyb246CisgICAgZGVsIG9zLmVudmlyb25bZW52X3Zhcl0KKworCitkZWYgVXNlc0NvbG9yKHRl
cm0sIGNvbG9yX2Vudl92YXIsIGNvbG9yX2ZsYWcpOgorICAiIiJSdW5zIGdvb2dsZXRlc3QtY29s
b3ItdGVzdF8gYW5kIHJldHVybnMgaXRzIGV4aXQgY29kZS4iIiIKKworICBTZXRFbnZWYXIoJ1RF
Uk0nLCB0ZXJtKQorICBTZXRFbnZWYXIoQ09MT1JfRU5WX1ZBUiwgY29sb3JfZW52X3ZhcikKKwor
ICBpZiBjb2xvcl9mbGFnIGlzIE5vbmU6CisgICAgYXJncyA9IFtdCisgIGVsc2U6CisgICAgYXJn
cyA9IFsnLS0lcz0lcycgJSAoQ09MT1JfRkxBRywgY29sb3JfZmxhZyldCisgIHAgPSBndGVzdF90
ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0NPTU1BTkRdICsgYXJncykKKyAgcmV0dXJuIG5vdCBwLmV4
aXRlZCBvciBwLmV4aXRfY29kZQorCisKK2NsYXNzIEdUZXN0Q29sb3JUZXN0KGd0ZXN0X3Rlc3Rf
dXRpbHMuVGVzdENhc2UpOgorICBkZWYgdGVzdE5vRW52VmFyTm9GbGFnKHNlbGYpOgorICAgICIi
IlRlc3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUncyBuZWl0aGVyIEdURVNUX0NPTE9SIG5vciAtLWd0
ZXN0X2NvbG9yLiIiIgorCisgICAgaWYgbm90IElTX1dJTkRPV1M6CisgICAgICBzZWxmLmFzc2Vy
dF8obm90IFVzZXNDb2xvcignZHVtYicsIE5vbmUsIE5vbmUpKQorICAgICAgc2VsZi5hc3NlcnRf
KG5vdCBVc2VzQ29sb3IoJ2VtYWNzJywgTm9uZSwgTm9uZSkpCisgICAgICBzZWxmLmFzc2VydF8o
bm90IFVzZXNDb2xvcigneHRlcm0tbW9ubycsIE5vbmUsIE5vbmUpKQorICAgICAgc2VsZi5hc3Nl
cnRfKG5vdCBVc2VzQ29sb3IoJ3Vua25vd24nLCBOb25lLCBOb25lKSkKKyAgICAgIHNlbGYuYXNz
ZXJ0Xyhub3QgVXNlc0NvbG9yKE5vbmUsIE5vbmUsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhV
c2VzQ29sb3IoJ2xpbnV4JywgTm9uZSwgTm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xv
cignY3lnd2luJywgTm9uZSwgTm9uZSkpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRl
cm0nLCBOb25lLCBOb25lKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS1jb2xv
cicsIE5vbmUsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLTI1NmNv
bG9yJywgTm9uZSwgTm9uZSkpCisKKyAgZGVmIHRlc3RGbGFnT25seShzZWxmKToKKyAgICAiIiJU
ZXN0cyB0aGUgY2FzZSB3aGVuIHRoZXJlJ3MgLS1ndGVzdF9jb2xvciBidXQgbm90IEdURVNUX0NP
TE9SLiIiIgorCisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAn
bm8nKSkKKyAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0tY29sb3InLCBOb25l
LCAnbm8nKSkKKyAgICBpZiBub3QgSVNfV0lORE9XUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qg
VXNlc0NvbG9yKCdlbWFjcycsIE5vbmUsICdhdXRvJykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXND
b2xvcigneHRlcm0nLCBOb25lLCAnYXV0bycpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3Io
J2R1bWInLCBOb25lLCAneWVzJykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0n
LCBOb25lLCAneWVzJykpCisKKyAgZGVmIHRlc3RFbnZWYXJPbmx5KHNlbGYpOgorICAgICIiIlRl
c3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUncyBHVEVTVF9DT0xPUiBidXQgbm90IC0tZ3Rlc3RfY29s
b3IuIiIiCisKKyAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcignZHVtYicsICdubycsIE5v
bmUpKQorICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsICdubycs
IE5vbmUpKQorICAgIGlmIG5vdCBJU19XSU5ET1dTOgorICAgICAgc2VsZi5hc3NlcnRfKG5vdCBV
c2VzQ29sb3IoJ2R1bWInLCAnYXV0bycsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29s
b3IoJ3h0ZXJtLWNvbG9yJywgJ2F1dG8nLCBOb25lKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0Nv
bG9yKCdkdW1iJywgJ3llcycsIE5vbmUpKQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0
ZXJtLWNvbG9yJywgJ3llcycsIE5vbmUpKQorCisgIGRlZiB0ZXN0RW52VmFyQW5kRmxhZyhzZWxm
KToKKyAgICAiIiJUZXN0cyB0aGUgY2FzZSB3aGVuIHRoZXJlIGFyZSBib3RoIEdURVNUX0NPTE9S
IGFuZCAtLWd0ZXN0X2NvbG9yLiIiIgorCisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3Io
J3h0ZXJtLWNvbG9yJywgJ25vJywgJ25vJykpCisgICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcign
ZHVtYicsICdubycsICd5ZXMnKSkKKyAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS1j
b2xvcicsICdubycsICdhdXRvJykpCisKKyAgZGVmIHRlc3RBbGlhc2VzT2ZZZXNBbmRObyhzZWxm
KToKKyAgICAiIiJUZXN0cyB1c2luZyBhbGlhc2VzIGluIHNwZWNpZnlpbmcgLS1ndGVzdF9jb2xv
ci4iIiIKKworICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAndHJ1ZScp
KQorICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAnWUVTJykpCisgICAg
c2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUsICdUJykpCisgICAgc2VsZi5hc3Nl
cnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUsICcxJykpCisKKyAgICBzZWxmLmFzc2VydF8obm90
IFVzZXNDb2xvcigneHRlcm0nLCBOb25lLCAnZicpKQorICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNl
c0NvbG9yKCd4dGVybScsIE5vbmUsICdmYWxzZScpKQorICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNl
c0NvbG9yKCd4dGVybScsIE5vbmUsICcwJykpCisgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29s
b3IoJ3h0ZXJtJywgTm9uZSwgJ3Vua25vd24nKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNvbG9yLXRlc3RfLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWNvbG9yLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIy
MGEzYTAwNTQ4ZmRiMWU5MzVhM2RhMTZkZjU2M2E1MGUxNzlhOGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtY29sb3ItdGVzdF8uY2MK
QEAgLTAsMCArMSw2MiBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8g
bWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisKKy8vIEEgaGVscGVyIHByb2dyYW0gZm9yIHRlc3RpbmcgaG93IEdvb2dsZSBUZXN0
IGRldGVybWluZXMgd2hldGhlciB0byB1c2UKKy8vIGNvbG9ycyBpbiB0aGUgb3V0cHV0LiAgSXQg
cHJpbnRzICJZRVMiIGFuZCByZXR1cm5zIDEgaWYgR29vZ2xlIFRlc3QKKy8vIGRlY2lkZXMgdG8g
dXNlIGNvbG9ycywgYW5kIHByaW50cyAiTk8iIGFuZCByZXR1cm5zIDAgb3RoZXJ3aXNlLgorCisj
aW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAi
c3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgorCit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hv
dWxkVXNlQ29sb3I7CisKKy8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gZW5zdXJlIHRoYXQg
dGhlIFVuaXRUZXN0IHNpbmdsZXRvbiBpcworLy8gY3JlYXRlZCBiZWZvcmUgbWFpbigpIGlzIGVu
dGVyZWQsIGFuZCB0aHVzIHRoYXQgU2hvdWxkVXNlQ29sb3IoKQorLy8gd29ya3MgdGhlIHNhbWUg
d2F5IGFzIGluIGEgcmVhbCBHb29nbGUtVGVzdC1iYXNlZCB0ZXN0LiAgV2UgZG9uJ3QgYWN0dWFs
CisvLyBydW4gdGhlIFRFU1QgaXRzZWxmLgorVEVTVChHVGVzdENvbG9yVGVzdCwgRHVtbXkpIHsK
K30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIHRlc3Rpbmc6OkluaXRH
b29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICBpZiAoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpIHsK
KyAgICAvLyBHb29nbGUgVGVzdCBkZWNpZGVzIHRvIHVzZSBjb2xvcnMgaW4gdGhlIG91dHB1dCAo
YXNzdW1pbmcgaXQKKyAgICAvLyBnb2VzIHRvIGEgVFRZKS4KKyAgICBwcmludGYoIllFU1xuIik7
CisgICAgcmV0dXJuIDE7CisgIH0gZWxzZSB7CisgICAgLy8gR29vZ2xlIFRlc3QgZGVjaWRlcyBu
b3QgdG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0LgorICAgIHByaW50ZigiTk9cbiIpOworICAg
IHJldHVybiAwOworICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2dvb2dsZXRlc3QtZGVhdGgtdGVzdC10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LWRlYXRoLXRlc3QtdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGMzMDI2
ZmI1ODk1NjYwYWQyYzlkNjVmYmQ5OWI1ZmFmOWFkNDhjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWRlYXRoLXRlc3QtdGVzdC5jYwpA
QCAtMCwwICsxLDE0MjMgQEAKKy8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgorLy8gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8v
IG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisv
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworLy8KKy8vIFRlc3RzIGZvciBkZWF0aCB0ZXN0cy4KKworI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LWRlYXRoLXRlc3QuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUg
Imd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgiCisKK3VzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpBbHdheXNGYWxzZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlOwor
CisjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKKworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisjICBp
bmNsdWRlIDxkaXJlY3QuaD4gICAgICAgICAgLy8gRm9yIGNoZGlyKCkuCisjIGVsc2UKKyMgIGlu
Y2x1ZGUgPHVuaXN0ZC5oPgorIyAgaW5jbHVkZSA8c3lzL3dhaXQuaD4gICAgICAgIC8vIEZvciB3
YWl0cGlkLgorIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCisjIGluY2x1ZGUgPGxpbWl0
cy5oPgorIyBpbmNsdWRlIDxzaWduYWwuaD4KKyMgaW5jbHVkZSA8c3RkaW8uaD4KKworIyBpZiBH
VEVTVF9PU19MSU5VWAorIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMgZW5kaWYgIC8vIEdURVNU
X09TX0xJTlVYCisKKyMgaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCisjIGluY2x1ZGUgInNy
Yy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKworbmFtZXNwYWNlIHBvc2l4ID0gOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6cG9zaXg7CisKK3VzaW5nIHRlc3Rpbmc6Ok1lc3NhZ2U7Cit1c2luZyB0ZXN0aW5n
OjppbnRlcm5hbDo6RGVhdGhUZXN0OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVz
dEZhY3Rvcnk7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RmlsZVBhdGg7Cit1c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6R2V0TGFzdEVycm5vRGVzY3JpcHRpb247Cit1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkluRGVh
dGhUZXN0Q2hpbGQ7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UGFyc2VOYXR1cmFsTnVtYmVy
OworCituYW1lc3BhY2UgdGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworCisvLyBBIGhl
bHBlciBjbGFzcyB3aG9zZSBvYmplY3RzIHJlcGxhY2UgdGhlIGRlYXRoIHRlc3QgZmFjdG9yeSBm
b3IgYQorLy8gc2luZ2xlIFVuaXRUZXN0IG9iamVjdCBkdXJpbmcgdGhlaXIgbGlmZXRpbWVzLgor
Y2xhc3MgUmVwbGFjZURlYXRoVGVzdEZhY3RvcnkgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgUmVw
bGFjZURlYXRoVGVzdEZhY3RvcnkoRGVhdGhUZXN0RmFjdG9yeSogbmV3X2ZhY3RvcnkpCisgICAg
ICA6IHVuaXRfdGVzdF9pbXBsXyhHZXRVbml0VGVzdEltcGwoKSkgeworICAgIG9sZF9mYWN0b3J5
XyA9IHVuaXRfdGVzdF9pbXBsXy0+ZGVhdGhfdGVzdF9mYWN0b3J5Xy5yZWxlYXNlKCk7CisgICAg
dW5pdF90ZXN0X2ltcGxfLT5kZWF0aF90ZXN0X2ZhY3RvcnlfLnJlc2V0KG5ld19mYWN0b3J5KTsK
KyAgfQorCisgIH5SZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSgpIHsKKyAgICB1bml0X3Rlc3RfaW1w
bF8tPmRlYXRoX3Rlc3RfZmFjdG9yeV8ucmVsZWFzZSgpOworICAgIHVuaXRfdGVzdF9pbXBsXy0+
ZGVhdGhfdGVzdF9mYWN0b3J5Xy5yZXNldChvbGRfZmFjdG9yeV8pOworICB9CisgcHJpdmF0ZToK
KyAgLy8gUHJldmVudHMgY29weWluZyBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSBvYmplY3RzLgor
ICBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeShjb25zdCBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSYp
OworICB2b2lkIG9wZXJhdG9yPShjb25zdCBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSYpOworCisg
IFVuaXRUZXN0SW1wbCogdW5pdF90ZXN0X2ltcGxfOworICBEZWF0aFRlc3RGYWN0b3J5KiBvbGRf
ZmFjdG9yeV87Cit9OworCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK30gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCisKK3ZvaWQgRGllV2l0aE1lc3NhZ2UoY29uc3QgOjpzdGQ6OnN0cmluZyYgbWVz
c2FnZSkgeworICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgbWVzc2FnZS5jX3N0cigpKTsKKyAgZmZs
dXNoKHN0ZGVycik7ICAvLyBNYWtlIHN1cmUgdGhlIHRleHQgaXMgcHJpbnRlZCBiZWZvcmUgdGhl
IHByb2Nlc3MgZXhpdHMuCisKKyAgLy8gV2UgY2FsbCBfZXhpdCgpIGluc3RlYWQgb2YgZXhpdCgp
LCBhcyB0aGUgZm9ybWVyIGlzIGEgZGlyZWN0CisgIC8vIHN5c3RlbSBjYWxsIGFuZCB0aHVzIHNh
ZmVyIGluIHRoZSBwcmVzZW5jZSBvZiB0aHJlYWRzLiAgZXhpdCgpCisgIC8vIHdpbGwgaW52b2tl
IHVzZXItZGVmaW5lZCBleGl0LWhvb2tzLCB3aGljaCBtYXkgZG8gZGFuZ2Vyb3VzCisgIC8vIHRo
aW5ncyB0aGF0IGNvbmZsaWN0IHdpdGggZGVhdGggdGVzdHMuCisgIC8vCisgIC8vIFNvbWUgY29t
cGlsZXJzIGNhbiByZWNvZ25pemUgdGhhdCBfZXhpdCgpIG5ldmVyIHJldHVybnMgYW5kIGlzc3Vl
IHRoZQorICAvLyAndW5yZWFjaGFibGUgY29kZScgd2FybmluZyBmb3IgY29kZSBmb2xsb3dpbmcg
dGhpcyBmdW5jdGlvbiwgdW5sZXNzCisgIC8vIGZvb2xlZCBieSBhIGZha2UgY29uZGl0aW9uLgor
ICBpZiAoQWx3YXlzVHJ1ZSgpKQorICAgIF9leGl0KDEpOworfQorCit2b2lkIERpZUluc2lkZShj
b25zdCA6OnN0ZDo6c3RyaW5nJiBmdW5jdGlvbikgeworICBEaWVXaXRoTWVzc2FnZSgiZGVhdGgg
aW5zaWRlICIgKyBmdW5jdGlvbiArICIoKS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBkZWF0aCB0
ZXN0cyB3b3JrLgorCitjbGFzcyBUZXN0Rm9yRGVhdGhUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgeworIHByb3RlY3RlZDoKKyAgVGVzdEZvckRlYXRoVGVzdCgpIDogb3JpZ2luYWxfZGlyXyhG
aWxlUGF0aDo6R2V0Q3VycmVudERpcigpKSB7fQorCisgIHZpcnR1YWwgflRlc3RGb3JEZWF0aFRl
c3QoKSB7CisgICAgcG9zaXg6OkNoRGlyKG9yaWdpbmFsX2Rpcl8uY19zdHIoKSk7CisgIH0KKwor
ICAvLyBBIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24gdGhhdCdzIGV4cGVjdGVkIHRvIGRpZS4KKyAg
c3RhdGljIHZvaWQgU3RhdGljTWVtYmVyRnVuY3Rpb24oKSB7IERpZUluc2lkZSgiU3RhdGljTWVt
YmVyRnVuY3Rpb24iKTsgfQorCisgIC8vIEEgbWV0aG9kIG9mIHRoZSB0ZXN0IGZpeHR1cmUgdGhh
dCBtYXkgZGllLgorICB2b2lkIE1lbWJlckZ1bmN0aW9uKCkgeworICAgIGlmIChzaG91bGRfZGll
XykKKyAgICAgIERpZUluc2lkZSgiTWVtYmVyRnVuY3Rpb24iKTsKKyAgfQorCisgIC8vIFRydWUg
aWZmIE1lbWJlckZ1bmN0aW9uKCkgc2hvdWxkIGRpZS4KKyAgYm9vbCBzaG91bGRfZGllXzsKKyAg
Y29uc3QgRmlsZVBhdGggb3JpZ2luYWxfZGlyXzsKK307CisKKy8vIEEgY2xhc3Mgd2l0aCBhIG1l
bWJlciBmdW5jdGlvbiB0aGF0IG1heSBkaWUuCitjbGFzcyBNYXlEaWUgeworIHB1YmxpYzoKKyAg
ZXhwbGljaXQgTWF5RGllKGJvb2wgc2hvdWxkX2RpZSkgOiBzaG91bGRfZGllXyhzaG91bGRfZGll
KSB7fQorCisgIC8vIEEgbWVtYmVyIGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KKyAgdm9pZCBNZW1i
ZXJGdW5jdGlvbigpIGNvbnN0IHsKKyAgICBpZiAoc2hvdWxkX2RpZV8pCisgICAgICBEaWVJbnNp
ZGUoIk1heURpZTo6TWVtYmVyRnVuY3Rpb24iKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgLy8gVHJ1
ZSBpZmYgTWVtYmVyRnVuY3Rpb24oKSBzaG91bGQgZGllLgorICBib29sIHNob3VsZF9kaWVfOwor
fTsKKworLy8gQSBnbG9iYWwgZnVuY3Rpb24gdGhhdCdzIGV4cGVjdGVkIHRvIGRpZS4KK3ZvaWQg
R2xvYmFsRnVuY3Rpb24oKSB7IERpZUluc2lkZSgiR2xvYmFsRnVuY3Rpb24iKTsgfQorCisvLyBB
IG5vbi12b2lkIGZ1bmN0aW9uIHRoYXQncyBleHBlY3RlZCB0byBkaWUuCitpbnQgTm9uVm9pZEZ1
bmN0aW9uKCkgeworICBEaWVJbnNpZGUoIk5vblZvaWRGdW5jdGlvbiIpOworICByZXR1cm4gMTsK
K30KKworLy8gQSB1bmFyeSBmdW5jdGlvbiB0aGF0IG1heSBkaWUuCit2b2lkIERpZUlmKGJvb2wg
c2hvdWxkX2RpZSkgeworICBpZiAoc2hvdWxkX2RpZSkKKyAgICBEaWVJbnNpZGUoIkRpZUlmIik7
Cit9CisKKy8vIEEgYmluYXJ5IGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KK2Jvb2wgRGllSWZMZXNz
VGhhbihpbnQgeCwgaW50IHkpIHsKKyAgaWYgKHggPCB5KSB7CisgICAgRGllSW5zaWRlKCJEaWVJ
Zkxlc3NUaGFuIik7CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisKKy8vIFRlc3RzIHRoYXQgQVNT
RVJUX0RFQVRIIGNhbiBiZSB1c2VkIG91dHNpZGUgYSBURVNULCBURVNUX0YsIG9yIHRlc3QgZml4
dHVyZS4KK3ZvaWQgRGVhdGhUZXN0U3Vicm91dGluZSgpIHsKKyAgRVhQRUNUX0RFQVRIKEdsb2Jh
bEZ1bmN0aW9uKCksICJkZWF0aC4qR2xvYmFsRnVuY3Rpb24iKTsKKyAgQVNTRVJUX0RFQVRIKEds
b2JhbEZ1bmN0aW9uKCksICJkZWF0aC4qR2xvYmFsRnVuY3Rpb24iKTsKK30KKworLy8gRGVhdGgg
aW4gZGJnLCBub3Qgb3B0LgoraW50IERpZUluRGVidWdFbHNlMTIoaW50KiBzaWRlZWZmZWN0KSB7
CisgIGlmIChzaWRlZWZmZWN0KSAqc2lkZWVmZmVjdCA9IDEyOworCisjIGlmbmRlZiBOREVCVUcK
KworICBEaWVJbnNpZGUoIkRpZUluRGVidWdFbHNlMTIiKTsKKworIyBlbmRpZiAgLy8gTkRFQlVH
CisKKyAgcmV0dXJuIDEyOworfQorCisjIGlmIEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1Nf
RlVDSFNJQQorCisvLyBUZXN0cyB0aGUgRXhpdGVkV2l0aENvZGUgcHJlZGljYXRlLgorVEVTVChF
eGl0U3RhdHVzUHJlZGljYXRlVGVzdCwgRXhpdGVkV2l0aENvZGUpIHsKKyAgLy8gT24gV2luZG93
cywgdGhlIHByb2Nlc3MncyBleGl0IGNvZGUgaXMgdGhlIHNhbWUgYXMgaXRzIGV4aXQgc3RhdHVz
LAorICAvLyBzbyB0aGUgcHJlZGljYXRlIGp1c3QgY29tcGFyZXMgdGhlIGl0cyBpbnB1dCB3aXRo
IGl0cyBwYXJhbWV0ZXIuCisgIEVYUEVDVF9UUlVFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDAp
KDApKTsKKyAgRVhQRUNUX1RSVUUodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSkoMSkpOworICBF
WFBFQ1RfVFJVRSh0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSg0MikoNDIpKTsKKyAgRVhQRUNUX0ZB
TFNFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApKDEpKTsKKyAgRVhQRUNUX0ZBTFNFKHRlc3Rp
bmc6OkV4aXRlZFdpdGhDb2RlKDEpKDApKTsKK30KKworIyBlbHNlCisKKy8vIFJldHVybnMgdGhl
IGV4aXQgc3RhdHVzIG9mIGEgcHJvY2VzcyB0aGF0IGNhbGxzIF9leGl0KDIpIHdpdGggYQorLy8g
Z2l2ZW4gZXhpdCBjb2RlLiAgVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgdGhlCisvLyBF
eGl0U3RhdHVzUHJlZGljYXRlVGVzdCB0ZXN0IHN1aXRlLgorc3RhdGljIGludCBOb3JtYWxFeGl0
U3RhdHVzKGludCBleGl0X2NvZGUpIHsKKyAgcGlkX3QgY2hpbGRfcGlkID0gZm9yaygpOworICBp
ZiAoY2hpbGRfcGlkID09IDApIHsKKyAgICBfZXhpdChleGl0X2NvZGUpOworICB9CisgIGludCBz
dGF0dXM7CisgIHdhaXRwaWQoY2hpbGRfcGlkLCAmc3RhdHVzLCAwKTsKKyAgcmV0dXJuIHN0YXR1
czsKK30KKworLy8gUmV0dXJucyB0aGUgZXhpdCBzdGF0dXMgb2YgYSBwcm9jZXNzIHRoYXQgcmFp
c2VzIGEgZ2l2ZW4gc2lnbmFsLgorLy8gSWYgdGhlIHNpZ25hbCBkb2VzIG5vdCBjYXVzZSB0aGUg
cHJvY2VzcyB0byBkaWUsIHRoZW4gaXQgcmV0dXJucworLy8gaW5zdGVhZCB0aGUgZXhpdCBzdGF0
dXMgb2YgYSBwcm9jZXNzIHRoYXQgZXhpdHMgbm9ybWFsbHkgd2l0aCBleGl0CisvLyBjb2RlIDEu
ICBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGUgRXhpdFN0YXR1c1ByZWRpY2F0ZVRl
c3QKKy8vIHRlc3Qgc3VpdGUuCitzdGF0aWMgaW50IEtpbGxlZEV4aXRTdGF0dXMoaW50IHNpZ251
bSkgeworICBwaWRfdCBjaGlsZF9waWQgPSBmb3JrKCk7CisgIGlmIChjaGlsZF9waWQgPT0gMCkg
eworICAgIHJhaXNlKHNpZ251bSk7CisgICAgX2V4aXQoMSk7CisgIH0KKyAgaW50IHN0YXR1czsK
KyAgd2FpdHBpZChjaGlsZF9waWQsICZzdGF0dXMsIDApOworICByZXR1cm4gc3RhdHVzOworfQor
CisvLyBUZXN0cyB0aGUgRXhpdGVkV2l0aENvZGUgcHJlZGljYXRlLgorVEVTVChFeGl0U3RhdHVz
UHJlZGljYXRlVGVzdCwgRXhpdGVkV2l0aENvZGUpIHsKKyAgY29uc3QgaW50IHN0YXR1czAgID0g
Tm9ybWFsRXhpdFN0YXR1cygwKTsKKyAgY29uc3QgaW50IHN0YXR1czEgID0gTm9ybWFsRXhpdFN0
YXR1cygxKTsKKyAgY29uc3QgaW50IHN0YXR1czQyID0gTm9ybWFsRXhpdFN0YXR1cyg0Mik7Cisg
IGNvbnN0IHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlIHByZWQwKDApOworICBjb25zdCB0ZXN0aW5n
OjpFeGl0ZWRXaXRoQ29kZSBwcmVkMSgxKTsKKyAgY29uc3QgdGVzdGluZzo6RXhpdGVkV2l0aENv
ZGUgcHJlZDQyKDQyKTsKKyAgRVhQRUNUX1BSRUQxKHByZWQwLCAgc3RhdHVzMCk7CisgIEVYUEVD
VF9QUkVEMShwcmVkMSwgIHN0YXR1czEpOworICBFWFBFQ1RfUFJFRDEocHJlZDQyLCBzdGF0dXM0
Mik7CisgIEVYUEVDVF9GQUxTRShwcmVkMChzdGF0dXMxKSk7CisgIEVYUEVDVF9GQUxTRShwcmVk
NDIoc3RhdHVzMCkpOworICBFWFBFQ1RfRkFMU0UocHJlZDEoc3RhdHVzNDIpKTsKK30KKworLy8g
VGVzdHMgdGhlIEtpbGxlZEJ5U2lnbmFsIHByZWRpY2F0ZS4KK1RFU1QoRXhpdFN0YXR1c1ByZWRp
Y2F0ZVRlc3QsIEtpbGxlZEJ5U2lnbmFsKSB7CisgIGNvbnN0IGludCBzdGF0dXNfc2VndiA9IEtp
bGxlZEV4aXRTdGF0dXMoU0lHU0VHVik7CisgIGNvbnN0IGludCBzdGF0dXNfa2lsbCA9IEtpbGxl
ZEV4aXRTdGF0dXMoU0lHS0lMTCk7CisgIGNvbnN0IHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsIHBy
ZWRfc2VndihTSUdTRUdWKTsKKyAgY29uc3QgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwgcHJlZF9r
aWxsKFNJR0tJTEwpOworICBFWFBFQ1RfUFJFRDEocHJlZF9zZWd2LCBzdGF0dXNfc2Vndik7Cisg
IEVYUEVDVF9QUkVEMShwcmVkX2tpbGwsIHN0YXR1c19raWxsKTsKKyAgRVhQRUNUX0ZBTFNFKHBy
ZWRfc2VndihzdGF0dXNfa2lsbCkpOworICBFWFBFQ1RfRkFMU0UocHJlZF9raWxsKHN0YXR1c19z
ZWd2KSk7Cit9CisKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfRlVD
SFNJQQorCisvLyBUZXN0cyB0aGF0IHRoZSBkZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29k
ZSB3aGljaCBtYXkgb3IgbWF5IG5vdAorLy8gYmUgZm9sbG93ZWQgYnkgb3BlcmF0b3I8PCwgYW5k
IHRoYXQgaW4gZWl0aGVyIGNhc2UgdGhlIGNvbXBsZXRlIHRleHQKKy8vIGNvbXByaXNlcyBvbmx5
IGEgc2luZ2xlIEMrKyBzdGF0ZW1lbnQuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU2luZ2xl
U3RhdGVtZW50KSB7CisgIGlmIChBbHdheXNGYWxzZSgpKQorICAgIC8vIFRoaXMgd291bGQgZmFp
bCBpZiBleGVjdXRlZDsgdGhpcyBpcyBhIGNvbXBpbGF0aW9uIHRlc3Qgb25seQorICAgIEFTU0VS
VF9ERUFUSChyZXR1cm4sICIiKTsKKworICBpZiAoQWx3YXlzVHJ1ZSgpKQorICAgIEVYUEVDVF9E
RUFUSChfZXhpdCgxKSwgIiIpOworICBlbHNlCisgICAgLy8gVGhpcyBlbXB0eSAiZWxzZSIgYnJh
bmNoIGlzIG1lYW50IHRvIGVuc3VyZSB0aGF0IEVYUEVDVF9ERUFUSAorICAgIC8vIGRvZXNuJ3Qg
ZXhwYW5kIGludG8gYW4gImlmIiBzdGF0ZW1lbnQgd2l0aG91dCBhbiAiZWxzZSIKKyAgICA7CisK
KyAgaWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgQVNTRVJUX0RFQVRIKHJldHVybiwgIiIpIDw8ICJk
aWQgbm90IGRpZSI7CisKKyAgaWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgOworICBlbHNlCisgICAg
RVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgMSA8PCAyIDw8IDM7Cit9CisKK3ZvaWQgRGll
V2l0aEVtYmVkZGVkTnVsKCkgeworICBmcHJpbnRmKHN0ZGVyciwgIkhlbGxvJWNteSBudWxsIHdv
cmxkLlxuIiwgJ1wwJyk7CisgIGZmbHVzaChzdGRlcnIpOworICBfZXhpdCgxKTsKK30KKworIyBp
ZiBHVEVTVF9VU0VTX1BDUkUKKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEggYW5kIEFTU0VS
VF9ERUFUSCB3b3JrIHdoZW4gdGhlIGVycm9yCisvLyBtZXNzYWdlIGhhcyBhIE5VTCBjaGFyYWN0
ZXIgaW4gaXQuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRW1iZWRkZWROdWxJbk1lc3NhZ2Up
IHsKKyAgRVhQRUNUX0RFQVRIKERpZVdpdGhFbWJlZGRlZE51bCgpLCAibXkgbnVsbCB3b3JsZCIp
OworICBBU1NFUlRfREVBVEgoRGllV2l0aEVtYmVkZGVkTnVsKCksICJteSBudWxsIHdvcmxkIik7
Cit9CisKKyMgZW5kaWYgIC8vIEdURVNUX1VTRVNfUENSRQorCisvLyBUZXN0cyB0aGF0IGRlYXRo
IHRlc3QgbWFjcm9zIGV4cGFuZCB0byBjb2RlIHdoaWNoIGludGVyYWN0cyB3ZWxsIHdpdGggc3dp
dGNoCisvLyBzdGF0ZW1lbnRzLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFN3aXRjaFN0YXRl
bWVudCkgeworICAvLyBNaWNyb3NvZnQgY29tcGlsZXIgdXN1YWxseSBjb21wbGFpbnMgYWJvdXQg
c3dpdGNoIHN0YXRlbWVudHMgd2l0aG91dAorICAvLyBjYXNlIGxhYmVscy4gV2Ugc3VwcHJlc3Mg
dGhhdCB3YXJuaW5nIGZvciB0aGlzIHRlc3QuCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdT
X1BVU0hfKDQwNjUpCisKKyAgc3dpdGNoICgwKQorICAgIGRlZmF1bHQ6CisgICAgICBBU1NFUlRf
REVBVEgoX2V4aXQoMSksICIiKSA8PCAiZXhpdCBpbiBkZWZhdWx0IHN3aXRjaCBoYW5kbGVyIjsK
KworICBzd2l0Y2ggKDApCisgICAgY2FzZSAwOgorICAgICAgRVhQRUNUX0RFQVRIKF9leGl0KDEp
LCAiIikgPDwgImV4aXQgaW4gc3dpdGNoIGNhc2UiOworCisgIEdURVNUX0RJU0FCTEVfTVNDX1dB
Uk5JTkdTX1BPUF8oKQorfQorCisvLyBUZXN0cyB0aGF0IGEgc3RhdGljIG1lbWJlciBmdW5jdGlv
biBjYW4gYmUgdXNlZCBpbiBhICJmYXN0IiBzdHlsZQorLy8gZGVhdGggdGVzdC4KK1RFU1RfRihU
ZXN0Rm9yRGVhdGhUZXN0LCBTdGF0aWNNZW1iZXJGdW5jdGlvbkZhc3RTdHlsZSkgeworICB0ZXN0
aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOworICBBU1NFUlRfREVB
VEgoU3RhdGljTWVtYmVyRnVuY3Rpb24oKSwgImRlYXRoLipTdGF0aWNNZW1iZXIiKTsKK30KKwor
Ly8gVGVzdHMgdGhhdCBhIG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNhbiBiZSB1c2VkIGlu
IGEgImZhc3QiCisvLyBzdHlsZSBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3Qs
IE1lbWJlckZ1bmN0aW9uRmFzdFN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhf
dGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIHNob3VsZF9kaWVfID0gdHJ1ZTsKKyAgRVhQRUNUX0RF
QVRIKE1lbWJlckZ1bmN0aW9uKCksICJpbnNpZGUuKk1lbWJlckZ1bmN0aW9uIik7Cit9CisKK3Zv
aWQgQ2hhbmdlVG9Sb290RGlyKCkgeyBwb3NpeDo6Q2hEaXIoR1RFU1RfUEFUSF9TRVBfKTsgfQor
CisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHdvcmsgZXZlbiBpZiB0aGUgY3VycmVudCBkaXJl
Y3RvcnkgaGFzIGJlZW4KKy8vIGNoYW5nZWQuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRmFz
dERlYXRoVGVzdEluQ2hhbmdlZERpcikgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rl
c3Rfc3R5bGUpID0gImZhc3QiOworCisgIENoYW5nZVRvUm9vdERpcigpOworICBFWFBFQ1RfRVhJ
VChfZXhpdCgxKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSksICIiKTsKKworICBDaGFuZ2VU
b1Jvb3REaXIoKTsKKyAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAiIik7Cit9CisKKyMgaWYgR1RF
U1RfT1NfTElOVVgKK3ZvaWQgU2lncHJvZkFjdGlvbihpbnQsIHNpZ2luZm9fdCosIHZvaWQqKSB7
IC8qIG5vIG9wICovIH0KKworLy8gU2V0cyBTSUdQUk9GIGFjdGlvbiBhbmQgSVRJTUVSX1BST0Yg
dGltZXIgKGludGVydmFsOiAxbXMpLgordm9pZCBTZXRTaWdwcm9mQWN0aW9uQW5kVGltZXIoKSB7
CisgIHN0cnVjdCBpdGltZXJ2YWwgdGltZXI7CisgIHRpbWVyLml0X2ludGVydmFsLnR2X3NlYyA9
IDA7CisgIHRpbWVyLml0X2ludGVydmFsLnR2X3VzZWMgPSAxOworICB0aW1lci5pdF92YWx1ZSA9
IHRpbWVyLml0X2ludGVydmFsOworICBBU1NFUlRfRVEoMCwgc2V0aXRpbWVyKElUSU1FUl9QUk9G
LCAmdGltZXIsIE5VTEwpKTsKKyAgc3RydWN0IHNpZ2FjdGlvbiBzaWduYWxfYWN0aW9uOworICBt
ZW1zZXQoJnNpZ25hbF9hY3Rpb24sIDAsIHNpemVvZihzaWduYWxfYWN0aW9uKSk7CisgIHNpZ2Vt
cHR5c2V0KCZzaWduYWxfYWN0aW9uLnNhX21hc2spOworICBzaWduYWxfYWN0aW9uLnNhX3NpZ2Fj
dGlvbiA9IFNpZ3Byb2ZBY3Rpb247CisgIHNpZ25hbF9hY3Rpb24uc2FfZmxhZ3MgPSBTQV9SRVNU
QVJUIHwgU0FfU0lHSU5GTzsKKyAgQVNTRVJUX0VRKDAsIHNpZ2FjdGlvbihTSUdQUk9GLCAmc2ln
bmFsX2FjdGlvbiwgTlVMTCkpOworfQorCisvLyBEaXNhYmxlcyBJVElNRVJfUFJPRiB0aW1lciBh
bmQgaWdub3JlcyBTSUdQUk9GIHNpZ25hbC4KK3ZvaWQgRGlzYWJsZVNpZ3Byb2ZBY3Rpb25BbmRU
aW1lcihzdHJ1Y3Qgc2lnYWN0aW9uKiBvbGRfc2lnbmFsX2FjdGlvbikgeworICBzdHJ1Y3QgaXRp
bWVydmFsIHRpbWVyOworICB0aW1lci5pdF9pbnRlcnZhbC50dl9zZWMgPSAwOworICB0aW1lci5p
dF9pbnRlcnZhbC50dl91c2VjID0gMDsKKyAgdGltZXIuaXRfdmFsdWUgPSB0aW1lci5pdF9pbnRl
cnZhbDsKKyAgQVNTRVJUX0VRKDAsIHNldGl0aW1lcihJVElNRVJfUFJPRiwgJnRpbWVyLCBOVUxM
KSk7CisgIHN0cnVjdCBzaWdhY3Rpb24gc2lnbmFsX2FjdGlvbjsKKyAgbWVtc2V0KCZzaWduYWxf
YWN0aW9uLCAwLCBzaXplb2Yoc2lnbmFsX2FjdGlvbikpOworICBzaWdlbXB0eXNldCgmc2lnbmFs
X2FjdGlvbi5zYV9tYXNrKTsKKyAgc2lnbmFsX2FjdGlvbi5zYV9oYW5kbGVyID0gU0lHX0lHTjsK
KyAgQVNTRVJUX0VRKDAsIHNpZ2FjdGlvbihTSUdQUk9GLCAmc2lnbmFsX2FjdGlvbiwgb2xkX3Np
Z25hbF9hY3Rpb24pKTsKK30KKworLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyB3b3JrIHdoZW4g
U0lHUFJPRiBoYW5kbGVyIGFuZCB0aW1lciBhcmUgc2V0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIEZhc3RTaWdwcm9mQWN0aW9uU2V0KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhf
dGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIFNldFNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigpOworICBF
WFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKTsKKyAgc3RydWN0IHNpZ2FjdGlvbiBvbGRfc2lnbmFs
X2FjdGlvbjsKKyAgRGlzYWJsZVNpZ3Byb2ZBY3Rpb25BbmRUaW1lcigmb2xkX3NpZ25hbF9hY3Rp
b24pOworICBFWFBFQ1RfVFJVRShvbGRfc2lnbmFsX2FjdGlvbi5zYV9zaWdhY3Rpb24gPT0gU2ln
cHJvZkFjdGlvbik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUaHJlYWRTYWZlU2ln
cHJvZkFjdGlvblNldCkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUp
ID0gInRocmVhZHNhZmUiOworICBTZXRTaWdwcm9mQWN0aW9uQW5kVGltZXIoKTsKKyAgRVhQRUNU
X0RFQVRIKF9leGl0KDEpLCAiIik7CisgIHN0cnVjdCBzaWdhY3Rpb24gb2xkX3NpZ25hbF9hY3Rp
b247CisgIERpc2FibGVTaWdwcm9mQWN0aW9uQW5kVGltZXIoJm9sZF9zaWduYWxfYWN0aW9uKTsK
KyAgRVhQRUNUX1RSVUUob2xkX3NpZ25hbF9hY3Rpb24uc2Ffc2lnYWN0aW9uID09IFNpZ3Byb2ZB
Y3Rpb24pOworfQorIyBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKKworLy8gUmVwZWF0cyBhIHJl
cHJlc2VudGF0aXZlIHNhbXBsZSBvZiBkZWF0aCB0ZXN0cyBpbiB0aGUgInRocmVhZHNhZmUiIHN0
eWxlOgorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU3RhdGljTWVtYmVyRnVuY3Rpb25UaHJl
YWRzYWZlU3R5bGUpIHsKKyAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9
ICJ0aHJlYWRzYWZlIjsKKyAgQVNTRVJUX0RFQVRIKFN0YXRpY01lbWJlckZ1bmN0aW9uKCksICJk
ZWF0aC4qU3RhdGljTWVtYmVyIik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNZW1i
ZXJGdW5jdGlvblRocmVhZHNhZmVTdHlsZSkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRo
X3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOworICBzaG91bGRfZGllXyA9IHRydWU7CisgIEVY
UEVDVF9ERUFUSChNZW1iZXJGdW5jdGlvbigpLCAiaW5zaWRlLipNZW1iZXJGdW5jdGlvbiIpOwor
fQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgVGhyZWFkc2FmZURlYXRoVGVzdEluTG9vcCkg
eworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUi
OworCisgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKQorICAgIEVYUEVDVF9FWElUKF9leGl0
KGkpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZShpKSwgIiIpIDw8ICI6IGkgPSAiIDw8IGk7Cit9
CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUaHJlYWRzYWZlRGVhdGhUZXN0SW5DaGFuZ2Vk
RGlyKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFk
c2FmZSI7CisKKyAgQ2hhbmdlVG9Sb290RGlyKCk7CisgIEVYUEVDVF9FWElUKF9leGl0KDEpLCB0
ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSwgIiIpOworCisgIENoYW5nZVRvUm9vdERpcigpOwor
ICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIiKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIE1peGVkU3R5bGVzKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHls
ZSkgPSAidGhyZWFkc2FmZSI7CisgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOworICB0ZXN0
aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOworICBFWFBFQ1RfREVB
VEgoX2V4aXQoMSksICIiKTsKK30KKworIyBpZiBHVEVTVF9IQVNfQ0xPTkUgJiYgR1RFU1RfSEFT
X1BUSFJFQUQKKworbmFtZXNwYWNlIHsKKworYm9vbCBwdGhyZWFkX2ZsYWc7CisKK3ZvaWQgU2V0
UHRocmVhZEZsYWcoKSB7CisgIHB0aHJlYWRfZmxhZyA9IHRydWU7Cit9CisKK30gIC8vIG5hbWVz
cGFjZQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRG9lc05vdEV4ZWN1dGVBdGZvcmtIb29r
cykgeworICBpZiAoIXRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yaykpIHsK
KyAgICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUi
OworICAgIHB0aHJlYWRfZmxhZyA9IGZhbHNlOworICAgIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0
Zm9yaygmU2V0UHRocmVhZEZsYWcsIE5VTEwsIE5VTEwpKTsKKyAgICBBU1NFUlRfREVBVEgoX2V4
aXQoMSksICIiKTsKKyAgICBBU1NFUlRfRkFMU0UocHRocmVhZF9mbGFnKTsKKyAgfQorfQorCisj
IGVuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUgJiYgR1RFU1RfSEFTX1BUSFJFQUQKKworLy8gVGVz
dHMgdGhhdCBhIG1ldGhvZCBvZiBhbm90aGVyIGNsYXNzIGNhbiBiZSB1c2VkIGluIGEgZGVhdGgg
dGVzdC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNZXRob2RPZkFub3RoZXJDbGFzcykgewor
ICBjb25zdCBNYXlEaWUgeCh0cnVlKTsKKyAgQVNTRVJUX0RFQVRIKHguTWVtYmVyRnVuY3Rpb24o
KSwgIk1heURpZVxcOlxcOk1lbWJlckZ1bmN0aW9uIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBn
bG9iYWwgZnVuY3Rpb24gY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RG
b3JEZWF0aFRlc3QsIEdsb2JhbEZ1bmN0aW9uKSB7CisgIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5j
dGlvbigpLCAiR2xvYmFsRnVuY3Rpb24iKTsKK30KKworLy8gVGVzdHMgdGhhdCBhbnkgdmFsdWUg
Y29udmVydGlibGUgdG8gYW4gUkUgd29ya3MgYXMgYSBzZWNvbmQKKy8vIGFyZ3VtZW50IHRvIEVY
UEVDVF9ERUFUSC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBY2NlcHRzQW55dGhpbmdDb252
ZXJ0aWJsZVRvUkUpIHsKKyAgc3RhdGljIGNvbnN0IGNoYXIgcmVnZXhfY19zdHJbXSA9ICJHbG9i
YWxGdW5jdGlvbiI7CisgIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleF9jX3N0
cik7CisKKyAgY29uc3QgdGVzdGluZzo6aW50ZXJuYWw6OlJFIHJlZ2V4KHJlZ2V4X2Nfc3RyKTsK
KyAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksIHJlZ2V4KTsKKworIyBpZiBHVEVTVF9I
QVNfR0xPQkFMX1NUUklORworCisgIGNvbnN0IDo6c3RyaW5nIHJlZ2V4X3N0cihyZWdleF9jX3N0
cik7CisgIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleF9zdHIpOworCisjIGVu
ZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworCisjIGlmICFHVEVTVF9VU0VTX1BDUkUK
KworICBjb25zdCA6OnN0ZDo6c3RyaW5nIHJlZ2V4X3N0ZF9zdHIocmVnZXhfY19zdHIpOworICBF
WFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXhfc3RkX3N0cik7CisKKyMgZW5kaWYg
IC8vICFHVEVTVF9VU0VTX1BDUkUKK30KKworLy8gVGVzdHMgdGhhdCBhIG5vbi12b2lkIGZ1bmN0
aW9uIGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0
LCBOb25Wb2lkRnVuY3Rpb24pIHsKKyAgQVNTRVJUX0RFQVRIKE5vblZvaWRGdW5jdGlvbigpLCAi
Tm9uVm9pZEZ1bmN0aW9uIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgZnVuY3Rpb25zIHRoYXQgdGFr
ZSBwYXJhbWV0ZXIocykgY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RG
b3JEZWF0aFRlc3QsIEZ1bmN0aW9uV2l0aFBhcmFtZXRlcikgeworICBFWFBFQ1RfREVBVEgoRGll
SWYodHJ1ZSksICJEaWVJZlxcKFxcKSIpOworICBFWFBFQ1RfREVBVEgoRGllSWZMZXNzVGhhbigy
LCAzKSwgIkRpZUlmTGVzc1RoYW4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVBVEgg
Y2FuIGJlIHVzZWQgb3V0c2lkZSBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdCBmaXh0dXJlLgorVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIE91dHNpZGVGaXh0dXJlKSB7CisgIERlYXRoVGVzdFN1YnJv
dXRpbmUoKTsKK30KKworLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyBjYW4gYmUgZG9uZSBpbnNp
ZGUgYSBsb29wLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEluc2lkZUxvb3ApIHsKKyAgZm9y
IChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICBFWFBFQ1RfREVBVEgoRGllSWZMZXNzVGhh
bigtMSwgaSksICJEaWVJZkxlc3NUaGFuIikgPDwgIndoZXJlIGkgPT0gIiA8PCBpOworICB9Cit9
CisKKy8vIFRlc3RzIHRoYXQgYSBjb21wb3VuZCBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgaW4gYSBk
ZWF0aCB0ZXN0LgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIENvbXBvdW5kU3RhdGVtZW50KSB7
CisgIEVYUEVDVF9ERUFUSCh7ICAvLyBOT0xJTlQKKyAgICBjb25zdCBpbnQgeCA9IDI7CisgICAg
Y29uc3QgaW50IHkgPSB4ICsgMTsKKyAgICBEaWVJZkxlc3NUaGFuKHgsIHkpOworICB9LAorICAi
RGllSWZMZXNzVGhhbiIpOworfQorCisvLyBUZXN0cyB0aGF0IGNvZGUgdGhhdCBkb2Vzbid0IGRp
ZSBjYXVzZXMgYSBkZWF0aCB0ZXN0IHRvIGZhaWwuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
RG9lc05vdERpZSkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgoRGll
SWYoZmFsc2UpLCAiRGllSWYiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0
byBkaWUiKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIGRlYXRoIHRlc3QgZmFpbHMgd2hlbiB0aGUg
ZXJyb3IgbWVzc2FnZSBpc24ndCBleHBlY3RlZC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBF
cnJvck1lc3NhZ2VNaXNtYXRjaCkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBO
T0xJTlQKKyAgICBFWFBFQ1RfREVBVEgoRGllSWYodHJ1ZSksICJEaWVJZkxlc3NUaGFuIikgPDwg
IkVuZCBvZiBkZWF0aCB0ZXN0IG1lc3NhZ2UuIjsKKyAgfSwgImRpZWQgYnV0IG5vdCB3aXRoIGV4
cGVjdGVkIGVycm9yIik7Cit9CisKKy8vIE9uIGV4aXQsICphYm9ydGVkIHdpbGwgYmUgdHJ1ZSBp
ZmYgdGhlIEVYUEVDVF9ERUFUSCgpIHN0YXRlbWVudAorLy8gYWJvcnRlZCB0aGUgZnVuY3Rpb24u
Cit2b2lkIEV4cGVjdERlYXRoVGVzdEhlbHBlcihib29sKiBhYm9ydGVkKSB7CisgICphYm9ydGVk
ID0gdHJ1ZTsKKyAgRVhQRUNUX0RFQVRIKERpZUlmKGZhbHNlKSwgIkRpZUlmIik7ICAvLyBUaGlz
IGFzc2VydGlvbiBzaG91bGQgZmFpbC4KKyAgKmFib3J0ZWQgPSBmYWxzZTsKK30KKworLy8gVGVz
dHMgdGhhdCBFWFBFQ1RfREVBVEggZG9lc24ndCBhYm9ydCB0aGUgdGVzdCBvbiBmYWlsdXJlLgor
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEVYUEVDVF9ERUFUSCkgeworICBib29sIGFib3J0ZWQg
PSB0cnVlOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFeHBlY3REZWF0aFRlc3RIZWxwZXIo
JmFib3J0ZWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGRpZSIpOwor
ICBFWFBFQ1RfRkFMU0UoYWJvcnRlZCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQVRI
IGRvZXMgYWJvcnQgdGhlIHRlc3Qgb24gZmFpbHVyZS4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0
LCBBU1NFUlRfREVBVEgpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoeyAgLy8gTk9MSU5UCisgICAgYWJvcnRlZCA9IHRydWU7CisgICAgQVNTRVJUX0RF
QVRIKERpZUlmKGZhbHNlKSwgIkRpZUlmIik7ICAvLyBUaGlzIGFzc2VydGlvbiBzaG91bGQgZmFp
bC4KKyAgICBhYm9ydGVkID0gZmFsc2U7CisgIH0sICJmYWlsZWQgdG8gZGllIik7CisgIEVYUEVD
VF9UUlVFKGFib3J0ZWQpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSCBldmFsdWF0
ZXMgdGhlIGFyZ3VtZW50cyBleGFjdGx5IG9uY2UuCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
U2luZ2xlRXZhbHVhdGlvbikgeworICBpbnQgeCA9IDM7CisgIEVYUEVDVF9ERUFUSChEaWVJZigo
Kyt4KSA9PSA0KSwgIkRpZUlmIik7CisKKyAgY29uc3QgY2hhciogcmVnZXggPSAiRGllSWYiOwor
ICBjb25zdCBjaGFyKiByZWdleF9zYXZlID0gcmVnZXg7CisgIEVYUEVDVF9ERUFUSChEaWVJZkxl
c3NUaGFuKDMsIDQpLCByZWdleCsrKTsKKyAgRVhQRUNUX0VRKHJlZ2V4X3NhdmUgKyAxLCByZWdl
eCk7Cit9CisKKy8vIFRlc3RzIHRoYXQgcnVuLWF3YXkgZGVhdGggdGVzdHMgYXJlIHJlcG9ydGVk
IGFzIGZhaWx1cmVzLgorVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFJ1bmF3YXlJc0ZhaWx1cmUp
IHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKHN0YXRpY19jYXN0PHZv
aWQ+KDApLCAiRm9vIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZGll
LiIpOworfQorCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHJlcG9ydCBleGVjdXRpbmcgJ3Jl
dHVybicgaW4gdGhlIHN0YXRlbWVudCBhcworLy8gZmFpbHVyZS4KK1RFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBSZXR1cm5Jc0ZhaWx1cmUpIHsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJU
X0RFQVRIKHJldHVybiwgIkJhciIpLAorICAgICAgICAgICAgICAgICAgICAgICAiaWxsZWdhbCBy
ZXR1cm4gaW4gdGVzdCBzdGF0ZW1lbnQuIik7Cit9CisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0RF
QlVHX0RFQVRIIHdvcmtzIGFzIGV4cGVjdGVkLCB0aGF0IGlzLCB5b3UgY2FuIHN0cmVhbSBhCisv
LyBtZXNzYWdlIHRvIGl0LCBhbmQgaW4gZGVidWcgbW9kZSBpdDoKKy8vIDEuIEFzc2VydHMgb24g
ZGVhdGguCisvLyAyLiBIYXMgbm8gc2lkZSBlZmZlY3QuCisvLworLy8gQW5kIGluIG9wdCBtb2Rl
LCBpdDoKKy8vIDEuICBIYXMgc2lkZSBlZmZlY3RzIGJ1dCBkb2VzIG5vdCBhc3NlcnQuCitURVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgVGVzdEV4cGVjdERlYnVnRGVhdGgpIHsKKyAgaW50IHNpZGVl
ZmZlY3QgPSAwOworCisgIC8vIFB1dCB0aGUgcmVnZXggaW4gYSBsb2NhbCB2YXJpYWJsZSB0byBt
YWtlIHN1cmUgd2UgZG9uJ3QgZ2V0IGFuICJ1bnVzZWQiCisgIC8vIHdhcm5pbmcgaW4gb3B0IG1v
ZGUuCisgIGNvbnN0IGNoYXIqIHJlZ2V4ID0gImRlYXRoLipEaWVJbkRlYnVnRWxzZTEyIjsKKwor
ICBFWFBFQ1RfREVCVUdfREVBVEgoRGllSW5EZWJ1Z0Vsc2UxMigmc2lkZWVmZmVjdCksIHJlZ2V4
KQorICAgICAgPDwgIk11c3QgYWNjZXB0IGEgc3RyZWFtZWQgbWVzc2FnZSI7CisKKyMgaWZkZWYg
TkRFQlVHCisKKyAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgb2NjdXJzIGluIG9wdCBt
b2RlIChzaWRlZWZmZWN0KS4KKyAgRVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0KTsKKworIyBlbHNl
CisKKyAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgZG9lcyBub3Qgb2NjdXIgaW4gZGJn
IG1vZGUgKG5vIHNpZGVlZmZlY3QpLgorICBFWFBFQ1RfRVEoMCwgc2lkZWVmZmVjdCk7CisKKyMg
ZW5kaWYKK30KKworLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVCVUdfREVBVEggd29ya3MgYXMgZXhw
ZWN0ZWQsIHRoYXQgaXMsIHlvdSBjYW4gc3RyZWFtIGEKKy8vIG1lc3NhZ2UgdG8gaXQsIGFuZCBp
biBkZWJ1ZyBtb2RlIGl0OgorLy8gMS4gQXNzZXJ0cyBvbiBkZWF0aC4KKy8vIDIuIEhhcyBubyBz
aWRlIGVmZmVjdC4KKy8vCisvLyBBbmQgaW4gb3B0IG1vZGUsIGl0OgorLy8gMS4gIEhhcyBzaWRl
IGVmZmVjdHMgYnV0IGRvZXMgbm90IGFzc2VydC4KK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBU
ZXN0QXNzZXJ0RGVidWdEZWF0aCkgeworICBpbnQgc2lkZWVmZmVjdCA9IDA7CisKKyAgQVNTRVJU
X0RFQlVHX0RFQVRIKERpZUluRGVidWdFbHNlMTIoJnNpZGVlZmZlY3QpLCAiZGVhdGguKkRpZUlu
RGVidWdFbHNlMTIiKQorICAgICAgPDwgIk11c3QgYWNjZXB0IGEgc3RyZWFtZWQgbWVzc2FnZSI7
CisKKyMgaWZkZWYgTkRFQlVHCisKKyAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgb2Nj
dXJzIGluIG9wdCBtb2RlIChzaWRlZWZmZWN0KS4KKyAgRVhQRUNUX0VRKDEyLCBzaWRlZWZmZWN0
KTsKKworIyBlbHNlCisKKyAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgZG9lcyBub3Qg
b2NjdXIgaW4gZGJnIG1vZGUgKG5vIHNpZGVlZmZlY3QpLgorICBFWFBFQ1RfRVEoMCwgc2lkZWVm
ZmVjdCk7CisKKyMgZW5kaWYKK30KKworIyBpZm5kZWYgTkRFQlVHCisKK3ZvaWQgRXhwZWN0RGVi
dWdEZWF0aEhlbHBlcihib29sKiBhYm9ydGVkKSB7CisgICphYm9ydGVkID0gdHJ1ZTsKKyAgRVhQ
RUNUX0RFQlVHX0RFQVRIKHJldHVybiwgIiIpIDw8ICJUaGlzIGlzIGV4cGVjdGVkIHRvIGZhaWwu
IjsKKyAgKmFib3J0ZWQgPSBmYWxzZTsKK30KKworIyAgaWYgR1RFU1RfT1NfV0lORE9XUworVEVT
VChQb3BVcERlYXRoVGVzdCwgRG9lc05vdFNob3dQb3BVcE9uQWJvcnQpIHsKKyAgcHJpbnRmKCJU
aGlzIHRlc3Qgc2hvdWxkIGJlIGNvbnNpZGVyZWQgZmFpbGluZyBpZiBpdCBzaG93cyAiCisgICAg
ICAgICAiYW55IHBvcC11cCBkaWFsb2dzLlxuIik7CisgIGZmbHVzaChzdGRvdXQpOworCisgIEVY
UEVDVF9ERUFUSCh7CisgICAgdGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA9
IGZhbHNlOworICAgIGFib3J0KCk7CisgIH0sICIiKTsKK30KKyMgIGVuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCisKKy8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQlVHX0RFQVRIIGluIGRlYnVnIG1v
ZGUgZG9lcyBub3QgYWJvcnQKKy8vIHRoZSBmdW5jdGlvbi4KK1RFU1RfRihUZXN0Rm9yRGVhdGhU
ZXN0LCBFeHBlY3REZWJ1Z0RlYXRoRG9lc05vdEFib3J0KSB7CisgIGJvb2wgYWJvcnRlZCA9IHRy
dWU7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEV4cGVjdERlYnVnRGVhdGhIZWxwZXIoJmFi
b3J0ZWQpLCAiIik7CisgIEVYUEVDVF9GQUxTRShhYm9ydGVkKTsKK30KKwordm9pZCBBc3NlcnRE
ZWJ1Z0RlYXRoSGVscGVyKGJvb2wqIGFib3J0ZWQpIHsKKyAgKmFib3J0ZWQgPSB0cnVlOworICBH
VEVTVF9MT0dfKElORk8pIDw8ICJCZWZvcmUgQVNTRVJUX0RFQlVHX0RFQVRIIjsKKyAgQVNTRVJU
X0RFQlVHX0RFQVRIKEdURVNUX0xPR18oSU5GTykgPDwgIkluIEFTU0VSVF9ERUJVR19ERUFUSCI7
IHJldHVybiwgIiIpCisgICAgICA8PCAiVGhpcyBpcyBleHBlY3RlZCB0byBmYWlsLiI7CisgIEdU
RVNUX0xPR18oSU5GTykgPDwgIkFmdGVyIEFTU0VSVF9ERUJVR19ERUFUSCI7CisgICphYm9ydGVk
ID0gZmFsc2U7Cit9CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQlVHX0RFQVRIIGluIGRlYnVn
IG1vZGUgYWJvcnRzIHRoZSBmdW5jdGlvbiBvbgorLy8gZmFpbHVyZS4KK1RFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzKSB7CisgIHN0YXRpYyBib29sIGFib3J0
ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVi
dWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9
CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzMikgewor
ICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVD
VF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVi
dWdEZWF0aEFib3J0czMpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZh
bHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9y
dGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JE
ZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM0KSB7CisgIHN0YXRpYyBib29sIGFib3J0
ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVi
dWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9
CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzNSkgewor
ICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVD
VF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVi
dWdEZWF0aEFib3J0czYpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZh
bHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9y
dGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JE
ZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM3KSB7CisgIHN0YXRpYyBib29sIGFib3J0
ZWQ7CisgIGFib3J0ZWQgPSBmYWxzZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVi
dWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKKyAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Cit9
CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzOCkgewor
ICBzdGF0aWMgYm9vbCBhYm9ydGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVD
VF9UUlVFKGFib3J0ZWQpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVi
dWdEZWF0aEFib3J0czkpIHsKKyAgc3RhdGljIGJvb2wgYWJvcnRlZDsKKyAgYWJvcnRlZCA9IGZh
bHNlOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9y
dGVkKSwgIiIpOworICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKK30KKworVEVTVF9GKFRlc3RGb3JE
ZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHMxMCkgeworICBzdGF0aWMgYm9vbCBhYm9y
dGVkOworICBhYm9ydGVkID0gZmFsc2U7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERl
YnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7CisgIEVYUEVDVF9UUlVFKGFib3J0ZWQpOwor
fQorCisjIGVuZGlmICAvLyBfTkRFQlVHCisKKy8vIFRlc3RzIHRoZSAqX0VYSVQgZmFtaWx5IG9m
IG1hY3JvcywgdXNpbmcgYSB2YXJpZXR5IG9mIHByZWRpY2F0ZXMuCitzdGF0aWMgdm9pZCBUZXN0
RXhpdE1hY3JvcygpIHsKKyAgRVhQRUNUX0VYSVQoX2V4aXQoMSksICB0ZXN0aW5nOjpFeGl0ZWRX
aXRoQ29kZSgxKSwgICIiKTsKKyAgQVNTRVJUX0VYSVQoX2V4aXQoNDIpLCB0ZXN0aW5nOjpFeGl0
ZWRXaXRoQ29kZSg0MiksICIiKTsKKworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisKKyAgLy8gT2Yg
YWxsIHNpZ25hbHMgZWZmZWN0cyBvbiB0aGUgcHJvY2VzcyBleGl0IGNvZGUsIG9ubHkgdGhvc2Ug
b2YgU0lHQUJSVAorICAvLyBhcmUgZG9jdW1lbnRlZCBvbiBXaW5kb3dzLgorICAvLyBTZWUgaHR0
cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvcXVlcnktYmkvbS9kd3d6a3Q0Yy4KKyAgRVhQ
RUNUX0VYSVQocmFpc2UoU0lHQUJSVCksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDMpLCAiIikg
PDwgImJfYXIiOworCisjIGVsaWYgIUdURVNUX09TX0ZVQ0hTSUEKKworICAvLyBGdWNoc2lhIGhh
cyBubyB1bml4IHNpZ25hbHMuCisgIEVYUEVDVF9FWElUKHJhaXNlKFNJR0tJTEwpLCB0ZXN0aW5n
OjpLaWxsZWRCeVNpZ25hbChTSUdLSUxMKSwgIiIpIDw8ICJmb28iOworICBBU1NFUlRfRVhJVChy
YWlzZShTSUdVU1IyKSwgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHVVNSMiksICIiKSA8PCAi
YmFyIjsKKworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRf
RVhJVChfZXhpdCgwKSwgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHU0VHViksICIiKQorICAg
ICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgdG9vLiI7CisgIH0sICJUaGlzIGZhaWx1
cmUgaXMgZXhwZWN0ZWQsIHRvby4iKTsKKworIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwor
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9FWElU
KHJhaXNlKFNJR1NFR1YpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgwKSwgIiIpCisgICAgICA8
PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiI7CisgIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhw
ZWN0ZWQuIik7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFeGl0TWFjcm9zKSB7Cisg
IFRlc3RFeGl0TWFjcm9zKCk7Cit9CisKK1RFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFeGl0TWFj
cm9zVXNpbmdGb3JrKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9y
aykgPSB0cnVlOworICBUZXN0RXhpdE1hY3JvcygpOworfQorCitURVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgSW52YWxpZFN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9z
dHlsZSkgPSAicm9jb2NvIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
CisgICAgRVhQRUNUX0RFQVRIKF9leGl0KDApLCAiIikgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBl
Y3RlZC4iOworICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOworfQorCitURVNUX0Yo
VGVzdEZvckRlYXRoVGVzdCwgRGVhdGhUZXN0RmFpbGVkT3V0cHV0KSB7CisgIHRlc3Rpbmc6OkdU
RVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKAorICAgICAgRVhQRUNUX0RFQVRIKERpZVdpdGhNZXNzYWdlKCJkZWF0aFxuIiksCisg
ICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIG1lc3NhZ2UiKSwKKyAgICAgICJBY3R1YWwgbXNn
OlxuIgorICAgICAgIlsgIERFQVRIICAgXSBkZWF0aFxuIik7Cit9CisKK1RFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBEZWF0aFRlc3RVbmV4cGVjdGVkUmV0dXJuT3V0cHV0KSB7CisgIHRlc3Rpbmc6
OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKAorICAgICAgRVhQRUNUX0RFQVRIKHsKKyAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgInJldHVybmluZ1xuIik7CisgICAgICAgICAgZmZsdXNoKHN0ZGVycik7CisgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9LCAiIiksCisgICAgICAiICAgIFJlc3VsdDogaWxsZWdhbCByZXR1
cm4gaW4gdGVzdCBzdGF0ZW1lbnQuXG4iCisgICAgICAiIEVycm9yIG1zZzpcbiIKKyAgICAgICJb
ICBERUFUSCAgIF0gcmV0dXJuaW5nXG4iKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3Qs
IERlYXRoVGVzdEJhZEV4aXRDb2RlT3V0cHV0KSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVh
dGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAorICAg
ICAgRVhQRUNUX0VYSVQoRGllV2l0aE1lc3NhZ2UoImV4aXRpbmcgd2l0aCByYyAxXG4iKSwKKyAg
ICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDMpLAorICAgICAgICAgICAg
ICAgICAgImV4cGVjdGVkIG1lc3NhZ2UiKSwKKyAgICAgICIgICAgUmVzdWx0OiBkaWVkIGJ1dCBu
b3Qgd2l0aCBleHBlY3RlZCBleGl0IGNvZGU6XG4iCisgICAgICAiICAgICAgICAgICAgRXhpdGVk
IHdpdGggZXhpdCBzdGF0dXMgMVxuIgorICAgICAgIkFjdHVhbCBtc2c6XG4iCisgICAgICAiWyAg
REVBVEggICBdIGV4aXRpbmcgd2l0aCByYyAxXG4iKTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0
aFRlc3QsIERlYXRoVGVzdE11bHRpTGluZU1hdGNoRmFpbCkgeworICB0ZXN0aW5nOjpHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RSgKKyAgICAgIEVYUEVDVF9ERUFUSChEaWVXaXRoTWVzc2FnZSgibGluZSAxXG5saW5lIDJcbmxp
bmUgM1xuIiksCisgICAgICAgICAgICAgICAgICAgImxpbmUgMVxueHl6XG5saW5lIDNcbiIpLAor
ICAgICAgIkFjdHVhbCBtc2c6XG4iCisgICAgICAiWyAgREVBVEggICBdIGxpbmUgMVxuIgorICAg
ICAgIlsgIERFQVRIICAgXSBsaW5lIDJcbiIKKyAgICAgICJbICBERUFUSCAgIF0gbGluZSAzXG4i
KTsKK30KKworVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERlYXRoVGVzdE11bHRpTGluZU1hdGNo
UGFzcykgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3Qi
OworICBFWFBFQ1RfREVBVEgoRGllV2l0aE1lc3NhZ2UoImxpbmUgMVxubGluZSAyXG5saW5lIDNc
biIpLAorICAgICAgICAgICAgICAgImxpbmUgMVxubGluZSAyXG5saW5lIDNcbiIpOworfQorCisv
LyBBIERlYXRoVGVzdEZhY3RvcnkgdGhhdCByZXR1cm5zIE1vY2tEZWF0aFRlc3RzLgorY2xhc3Mg
TW9ja0RlYXRoVGVzdEZhY3RvcnkgOiBwdWJsaWMgRGVhdGhUZXN0RmFjdG9yeSB7CisgcHVibGlj
OgorICBNb2NrRGVhdGhUZXN0RmFjdG9yeSgpOworICB2aXJ0dWFsIGJvb2wgQ3JlYXRlKGNvbnN0
IGNoYXIqIHN0YXRlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6
OmludGVybmFsOjpSRSogcmVnZXgsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUsIERlYXRoVGVzdCoqIHRlc3QpOworCisgIC8vIFNldHMgdGhlIHBhcmFt
ZXRlcnMgZm9yIHN1YnNlcXVlbnQgY2FsbHMgdG8gQ3JlYXRlLgorICB2b2lkIFNldFBhcmFtZXRl
cnMoYm9vbCBjcmVhdGUsIERlYXRoVGVzdDo6VGVzdFJvbGUgcm9sZSwKKyAgICAgICAgICAgICAg
ICAgICAgIGludCBzdGF0dXMsIGJvb2wgcGFzc2VkKTsKKworICAvLyBBY2Nlc3NvcnMuCisgIGlu
dCBBc3N1bWVSb2xlQ2FsbHMoKSBjb25zdCB7IHJldHVybiBhc3N1bWVfcm9sZV9jYWxsc187IH0K
KyAgaW50IFdhaXRDYWxscygpIGNvbnN0IHsgcmV0dXJuIHdhaXRfY2FsbHNfOyB9CisgIHNpemVf
dCBQYXNzZWRDYWxscygpIGNvbnN0IHsgcmV0dXJuIHBhc3NlZF9hcmdzXy5zaXplKCk7IH0KKyAg
Ym9vbCBQYXNzZWRBcmd1bWVudChpbnQgbikgY29uc3QgeyByZXR1cm4gcGFzc2VkX2FyZ3NfW25d
OyB9CisgIHNpemVfdCBBYm9ydENhbGxzKCkgY29uc3QgeyByZXR1cm4gYWJvcnRfYXJnc18uc2l6
ZSgpOyB9CisgIERlYXRoVGVzdDo6QWJvcnRSZWFzb24gQWJvcnRBcmd1bWVudChpbnQgbikgY29u
c3QgeworICAgIHJldHVybiBhYm9ydF9hcmdzX1tuXTsKKyAgfQorICBib29sIFRlc3REZWxldGVk
KCkgY29uc3QgeyByZXR1cm4gdGVzdF9kZWxldGVkXzsgfQorCisgcHJpdmF0ZToKKyAgZnJpZW5k
IGNsYXNzIE1vY2tEZWF0aFRlc3Q7CisgIC8vIElmIHRydWUsIENyZWF0ZSB3aWxsIHJldHVybiBh
IE1vY2tEZWF0aFRlc3Q7IG90aGVyd2lzZSBpdCByZXR1cm5zCisgIC8vIE5VTEwuCisgIGJvb2wg
Y3JlYXRlXzsKKyAgLy8gVGhlIHZhbHVlIGEgTW9ja0RlYXRoVGVzdCB3aWxsIHJldHVybiBmcm9t
IGl0cyBBc3N1bWVSb2xlIG1ldGhvZC4KKyAgRGVhdGhUZXN0OjpUZXN0Um9sZSByb2xlXzsKKyAg
Ly8gVGhlIHZhbHVlIGEgTW9ja0RlYXRoVGVzdCB3aWxsIHJldHVybiBmcm9tIGl0cyBXYWl0IG1l
dGhvZC4KKyAgaW50IHN0YXR1c187CisgIC8vIFRoZSB2YWx1ZSBhIE1vY2tEZWF0aFRlc3Qgd2ls
bCByZXR1cm4gZnJvbSBpdHMgUGFzc2VkIG1ldGhvZC4KKyAgYm9vbCBwYXNzZWRfOworCisgIC8v
IE51bWJlciBvZiB0aW1lcyBBc3N1bWVSb2xlIHdhcyBjYWxsZWQuCisgIGludCBhc3N1bWVfcm9s
ZV9jYWxsc187CisgIC8vIE51bWJlciBvZiB0aW1lcyBXYWl0IHdhcyBjYWxsZWQuCisgIGludCB3
YWl0X2NhbGxzXzsKKyAgLy8gVGhlIGFyZ3VtZW50cyB0byB0aGUgY2FsbHMgdG8gUGFzc2VkIHNp
bmNlIHRoZSBsYXN0IGNhbGwgdG8KKyAgLy8gU2V0UGFyYW1ldGVycy4KKyAgc3RkOjp2ZWN0b3I8
Ym9vbD4gcGFzc2VkX2FyZ3NfOworICAvLyBUaGUgYXJndW1lbnRzIHRvIHRoZSBjYWxscyB0byBB
Ym9ydCBzaW5jZSB0aGUgbGFzdCBjYWxsIHRvCisgIC8vIFNldFBhcmFtZXRlcnMuCisgIHN0ZDo6
dmVjdG9yPERlYXRoVGVzdDo6QWJvcnRSZWFzb24+IGFib3J0X2FyZ3NfOworICAvLyBUcnVlIGlm
IHRoZSBsYXN0IE1vY2tEZWF0aFRlc3QgcmV0dXJuZWQgYnkgQ3JlYXRlIGhhcyBiZWVuCisgIC8v
IGRlbGV0ZWQuCisgIGJvb2wgdGVzdF9kZWxldGVkXzsKK307CisKKworLy8gQSBEZWF0aFRlc3Qg
aW1wbGVtZW50YXRpb24gdXNlZnVsIGluIHRlc3RpbmcuICBJdCByZXR1cm5zIHZhbHVlcyBzZXQK
Ky8vIGF0IGl0cyBjcmVhdGlvbiBmcm9tIGl0cyB2YXJpb3VzIGluaGVyaXRlZCBEZWF0aFRlc3Qg
bWV0aG9kcywgYW5kCisvLyByZXBvcnRzIGNhbGxzIHRvIHRob3NlIG1ldGhvZHMgdG8gaXRzIHBh
cmVudCBNb2NrRGVhdGhUZXN0RmFjdG9yeQorLy8gb2JqZWN0LgorY2xhc3MgTW9ja0RlYXRoVGVz
dCA6IHB1YmxpYyBEZWF0aFRlc3QgeworIHB1YmxpYzoKKyAgTW9ja0RlYXRoVGVzdChNb2NrRGVh
dGhUZXN0RmFjdG9yeSAqcGFyZW50LAorICAgICAgICAgICAgICAgIFRlc3RSb2xlIHJvbGUsIGlu
dCBzdGF0dXMsIGJvb2wgcGFzc2VkKSA6CisgICAgICBwYXJlbnRfKHBhcmVudCksIHJvbGVfKHJv
bGUpLCBzdGF0dXNfKHN0YXR1cyksIHBhc3NlZF8ocGFzc2VkKSB7CisgIH0KKyAgdmlydHVhbCB+
TW9ja0RlYXRoVGVzdCgpIHsKKyAgICBwYXJlbnRfLT50ZXN0X2RlbGV0ZWRfID0gdHJ1ZTsKKyAg
fQorICB2aXJ0dWFsIFRlc3RSb2xlIEFzc3VtZVJvbGUoKSB7CisgICAgKytwYXJlbnRfLT5hc3N1
bWVfcm9sZV9jYWxsc187CisgICAgcmV0dXJuIHJvbGVfOworICB9CisgIHZpcnR1YWwgaW50IFdh
aXQoKSB7CisgICAgKytwYXJlbnRfLT53YWl0X2NhbGxzXzsKKyAgICByZXR1cm4gc3RhdHVzXzsK
KyAgfQorICB2aXJ0dWFsIGJvb2wgUGFzc2VkKGJvb2wgZXhpdF9zdGF0dXNfb2spIHsKKyAgICBw
YXJlbnRfLT5wYXNzZWRfYXJnc18ucHVzaF9iYWNrKGV4aXRfc3RhdHVzX29rKTsKKyAgICByZXR1
cm4gcGFzc2VkXzsKKyAgfQorICB2aXJ0dWFsIHZvaWQgQWJvcnQoQWJvcnRSZWFzb24gcmVhc29u
KSB7CisgICAgcGFyZW50Xy0+YWJvcnRfYXJnc18ucHVzaF9iYWNrKHJlYXNvbik7CisgIH0KKwor
IHByaXZhdGU6CisgIE1vY2tEZWF0aFRlc3RGYWN0b3J5KiBjb25zdCBwYXJlbnRfOworICBjb25z
dCBUZXN0Um9sZSByb2xlXzsKKyAgY29uc3QgaW50IHN0YXR1c187CisgIGNvbnN0IGJvb2wgcGFz
c2VkXzsKK307CisKKworLy8gTW9ja0RlYXRoVGVzdEZhY3RvcnkgY29uc3RydWN0b3IuCitNb2Nr
RGVhdGhUZXN0RmFjdG9yeTo6TW9ja0RlYXRoVGVzdEZhY3RvcnkoKQorICAgIDogY3JlYXRlXyh0
cnVlKSwKKyAgICAgIHJvbGVfKERlYXRoVGVzdDo6T1ZFUlNFRV9URVNUKSwKKyAgICAgIHN0YXR1
c18oMCksCisgICAgICBwYXNzZWRfKHRydWUpLAorICAgICAgYXNzdW1lX3JvbGVfY2FsbHNfKDAp
LAorICAgICAgd2FpdF9jYWxsc18oMCksCisgICAgICBwYXNzZWRfYXJnc18oKSwKKyAgICAgIGFi
b3J0X2FyZ3NfKCkgeworfQorCisKKy8vIFNldHMgdGhlIHBhcmFtZXRlcnMgZm9yIHN1YnNlcXVl
bnQgY2FsbHMgdG8gQ3JlYXRlLgordm9pZCBNb2NrRGVhdGhUZXN0RmFjdG9yeTo6U2V0UGFyYW1l
dGVycyhib29sIGNyZWF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRGVhdGhUZXN0OjpUZXN0Um9sZSByb2xlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgc3RhdHVzLCBib29sIHBhc3NlZCkgeworICBjcmVhdGVfID0gY3Jl
YXRlOworICByb2xlXyA9IHJvbGU7CisgIHN0YXR1c18gPSBzdGF0dXM7CisgIHBhc3NlZF8gPSBw
YXNzZWQ7CisKKyAgYXNzdW1lX3JvbGVfY2FsbHNfID0gMDsKKyAgd2FpdF9jYWxsc18gPSAwOwor
ICBwYXNzZWRfYXJnc18uY2xlYXIoKTsKKyAgYWJvcnRfYXJnc18uY2xlYXIoKTsKK30KKworCisv
LyBTZXRzIHRlc3QgdG8gTlVMTCAoaWYgY3JlYXRlXyBpcyBmYWxzZSkgb3IgdG8gdGhlIGFkZHJl
c3Mgb2YgYSBuZXcKKy8vIE1vY2tEZWF0aFRlc3Qgb2JqZWN0IHdpdGggcGFyYW1ldGVycyB0YWtl
biBmcm9tIHRoZSBsYXN0IGNhbGwKKy8vIHRvIFNldFBhcmFtZXRlcnMgKGlmIGNyZWF0ZV8gaXMg
dHJ1ZSkuICBBbHdheXMgcmV0dXJucyB0cnVlLgorYm9vbCBNb2NrRGVhdGhUZXN0RmFjdG9yeTo6
Q3JlYXRlKGNvbnN0IGNoYXIqIC8qc3RhdGVtZW50Ki8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UkUqIC8qcmVnZXgqLywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAvKmZpbGUqLywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgLypsaW5lKi8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRGVhdGhUZXN0KiogdGVzdCkgeworICB0ZXN0X2RlbGV0
ZWRfID0gZmFsc2U7CisgIGlmIChjcmVhdGVfKSB7CisgICAgKnRlc3QgPSBuZXcgTW9ja0RlYXRo
VGVzdCh0aGlzLCByb2xlXywgc3RhdHVzXywgcGFzc2VkXyk7CisgIH0gZWxzZSB7CisgICAgKnRl
c3QgPSBOVUxMOworICB9CisgIHJldHVybiB0cnVlOworfQorCisvLyBBIHRlc3QgZml4dHVyZSBm
b3IgdGVzdGluZyB0aGUgbG9naWMgb2YgdGhlIEdURVNUX0RFQVRIX1RFU1RfIG1hY3JvLgorLy8g
SXQgaW5zdGFsbHMgYSBNb2NrRGVhdGhUZXN0RmFjdG9yeSB0aGF0IGlzIHVzZWQgZm9yIHRoZSBk
dXJhdGlvbgorLy8gb2YgdGhlIHRlc3QgY2FzZS4KK2NsYXNzIE1hY3JvTG9naWNEZWF0aFRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICBzdGF0aWMgdGVzdGluZzo6
aW50ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KiByZXBsYWNlcl87CisgIHN0YXRpYyBN
b2NrRGVhdGhUZXN0RmFjdG9yeSogZmFjdG9yeV87CisKKyAgc3RhdGljIHZvaWQgU2V0VXBUZXN0
Q2FzZSgpIHsKKyAgICBmYWN0b3J5XyA9IG5ldyBNb2NrRGVhdGhUZXN0RmFjdG9yeTsKKyAgICBy
ZXBsYWNlcl8gPSBuZXcgdGVzdGluZzo6aW50ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5
KGZhY3RvcnlfKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7Cisg
ICAgZGVsZXRlIHJlcGxhY2VyXzsKKyAgICByZXBsYWNlcl8gPSBOVUxMOworICAgIGRlbGV0ZSBm
YWN0b3J5XzsKKyAgICBmYWN0b3J5XyA9IE5VTEw7CisgIH0KKworICAvLyBSdW5zIGEgZGVhdGgg
dGVzdCB0aGF0IGJyZWFrcyB0aGUgcnVsZXMgYnkgcmV0dXJuaW5nLiAgU3VjaCBhIGRlYXRoCisg
IC8vIHRlc3QgY2Fubm90IGJlIHJ1biBkaXJlY3RseSBmcm9tIGEgdGVzdCByb3V0aW5lIHRoYXQg
dXNlcyBhCisgIC8vIE1vY2tEZWF0aFRlc3QsIG9yIHRoZSByZW1haW5kZXIgb2YgdGhlIHJvdXRp
bmUgd2lsbCBub3QgYmUgZXhlY3V0ZWQuCisgIHN0YXRpYyB2b2lkIFJ1blJldHVybmluZ0RlYXRo
VGVzdChib29sKiBmbGFnKSB7CisgICAgQVNTRVJUX0RFQVRIKHsgIC8vIE5PTElOVAorICAgICAg
KmZsYWcgPSB0cnVlOworICAgICAgcmV0dXJuOworICAgIH0sICIiKTsKKyAgfQorfTsKKwordGVz
dGluZzo6aW50ZXJuYWw6OlJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KiBNYWNyb0xvZ2ljRGVhdGhU
ZXN0OjpyZXBsYWNlcl8KKyAgICA9IE5VTEw7CitNb2NrRGVhdGhUZXN0RmFjdG9yeSogTWFjcm9M
b2dpY0RlYXRoVGVzdDo6ZmFjdG9yeV8gPSBOVUxMOworCisKKy8vIFRlc3QgdGhhdCBub3RoaW5n
IGhhcHBlbnMgd2hlbiB0aGUgZmFjdG9yeSBkb2Vzbid0IHJldHVybiBhIERlYXRoVGVzdDoKK1RF
U1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBOb3RoaW5nSGFwcGVucykgeworICBib29sIGZsYWcg
PSBmYWxzZTsKKyAgZmFjdG9yeV8tPlNldFBhcmFtZXRlcnMoZmFsc2UsIERlYXRoVGVzdDo6T1ZF
UlNFRV9URVNULCAwLCB0cnVlKTsKKyAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7Cisg
IEVYUEVDVF9GQUxTRShmbGFnKTsKKyAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5Bc3N1bWVSb2xl
Q2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+V2FpdENhbGxzKCkpOworICBFWFBF
Q1RfRVEoMFUsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsKKyAgRVhQRUNUX0VRKDBVLCBmYWN0
b3J5Xy0+QWJvcnRDYWxscygpKTsKKyAgRVhQRUNUX0ZBTFNFKGZhY3RvcnlfLT5UZXN0RGVsZXRl
ZCgpKTsKK30KKworLy8gVGVzdCB0aGF0IHRoZSBwYXJlbnQgcHJvY2VzcyBkb2Vzbid0IHJ1biB0
aGUgZGVhdGggdGVzdCBjb2RlLAorLy8gYW5kIHRoYXQgdGhlIFBhc3NlZCBtZXRob2QgcmV0dXJu
cyBmYWxzZSB3aGVuIHRoZSAoc2ltdWxhdGVkKQorLy8gY2hpbGQgcHJvY2VzcyBleGl0cyB3aXRo
IHN0YXR1cyAwOgorVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxkRXhpdHNTdWNjZXNz
ZnVsbHkpIHsKKyAgYm9vbCBmbGFnID0gZmFsc2U7CisgIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJz
KHRydWUsIERlYXRoVGVzdDo6T1ZFUlNFRV9URVNULCAwLCB0cnVlKTsKKyAgRVhQRUNUX0RFQVRI
KGZsYWcgPSB0cnVlLCAiIik7CisgIEVYUEVDVF9GQUxTRShmbGFnKTsKKyAgRVhQRUNUX0VRKDEs
IGZhY3RvcnlfLT5Bc3N1bWVSb2xlQ2FsbHMoKSk7CisgIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+
V2FpdENhbGxzKCkpOworICBBU1NFUlRfRVEoMVUsIGZhY3RvcnlfLT5QYXNzZWRDYWxscygpKTsK
KyAgRVhQRUNUX0ZBTFNFKGZhY3RvcnlfLT5QYXNzZWRBcmd1bWVudCgwKSk7CisgIEVYUEVDVF9F
USgwVSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7CisgIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5U
ZXN0RGVsZXRlZCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgUGFzc2VkIG1ldGhvZCB3YXMg
Z2l2ZW4gdGhlIGFyZ3VtZW50ICJ0cnVlIiB3aGVuCisvLyB0aGUgKHNpbXVsYXRlZCkgY2hpbGQg
cHJvY2VzcyBleGl0cyB3aXRoIHN0YXR1cyAxOgorVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3Qs
IENoaWxkRXhpdHNVbnN1Y2Nlc3NmdWxseSkgeworICBib29sIGZsYWcgPSBmYWxzZTsKKyAgZmFj
dG9yeV8tPlNldFBhcmFtZXRlcnModHJ1ZSwgRGVhdGhUZXN0OjpPVkVSU0VFX1RFU1QsIDEsIHRy
dWUpOworICBFWFBFQ1RfREVBVEgoZmxhZyA9IHRydWUsICIiKTsKKyAgRVhQRUNUX0ZBTFNFKGZs
YWcpOworICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKKyAgRVhQ
RUNUX0VRKDEsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7CisgIEFTU0VSVF9FUSgxVSwgZmFjdG9y
eV8tPlBhc3NlZENhbGxzKCkpOworICBFWFBFQ1RfVFJVRShmYWN0b3J5Xy0+UGFzc2VkQXJndW1l
bnQoMCkpOworICBFWFBFQ1RfRVEoMFUsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOworICBFWFBF
Q1RfVFJVRShmYWN0b3J5Xy0+VGVzdERlbGV0ZWQoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhl
IChzaW11bGF0ZWQpIGNoaWxkIHByb2Nlc3MgZXhlY3V0ZXMgdGhlIGRlYXRoIHRlc3QKKy8vIGNv
ZGUsIGFuZCBpcyBhYm9ydGVkIHdpdGggdGhlIGNvcnJlY3QgQWJvcnRSZWFzb24gaWYgaXQKKy8v
IGV4ZWN1dGVzIGEgcmV0dXJuIHN0YXRlbWVudC4KK1RFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0
LCBDaGlsZFBlcmZvcm1zUmV0dXJuKSB7CisgIGJvb2wgZmxhZyA9IGZhbHNlOworICBmYWN0b3J5
Xy0+U2V0UGFyYW1ldGVycyh0cnVlLCBEZWF0aFRlc3Q6OkVYRUNVVEVfVEVTVCwgMCwgdHJ1ZSk7
CisgIFJ1blJldHVybmluZ0RlYXRoVGVzdCgmZmxhZyk7CisgIEVYUEVDVF9UUlVFKGZsYWcpOwor
ICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKKyAgRVhQRUNUX0VR
KDAsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPlBh
c3NlZENhbGxzKCkpOworICBFWFBFQ1RfRVEoMVUsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOwor
ICBFWFBFQ1RfRVEoRGVhdGhUZXN0OjpURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQs
CisgICAgICAgICAgICBmYWN0b3J5Xy0+QWJvcnRBcmd1bWVudCgwKSk7CisgIEVYUEVDVF9UUlVF
KGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgKHNpbXVs
YXRlZCkgY2hpbGQgcHJvY2VzcyBpcyBhYm9ydGVkIHdpdGggdGhlCisvLyBjb3JyZWN0IEFib3J0
UmVhc29uIGlmIGl0IGRvZXMgbm90IGRpZS4KK1RFU1RfRihNYWNyb0xvZ2ljRGVhdGhUZXN0LCBD
aGlsZERvZXNOb3REaWUpIHsKKyAgYm9vbCBmbGFnID0gZmFsc2U7CisgIGZhY3RvcnlfLT5TZXRQ
YXJhbWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6RVhFQ1VURV9URVNULCAwLCB0cnVlKTsKKyAgRVhQ
RUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7CisgIEVYUEVDVF9UUlVFKGZsYWcpOworICBFWFBF
Q1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKKyAgRVhQRUNUX0VRKDAsIGZh
Y3RvcnlfLT5XYWl0Q2FsbHMoKSk7CisgIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPlBhc3NlZENh
bGxzKCkpOworICAvLyBUaGlzIHRpbWUgdGhlcmUgYXJlIHR3byBjYWxscyB0byBBYm9ydDogb25l
IHNpbmNlIHRoZSB0ZXN0IGRpZG4ndAorICAvLyBkaWUsIGFuZCBhbm90aGVyIGZyb20gdGhlIFJl
dHVyblNlbnRpbmVsIHdoZW4gaXQncyBkZXN0cm95ZWQuICBUaGUKKyAgLy8gc2VudGluZWwgbm9y
bWFsbHkgaXNuJ3QgZGVzdHJveWVkIGlmIGEgdGVzdCBkb2Vzbid0IGRpZSwgc2luY2UKKyAgLy8g
X2V4aXQoMikgaXMgY2FsbGVkIGluIHRoYXQgY2FzZSBieSBGb3JraW5nRGVhdGhUZXN0LCBidXQg
bm90IGJ5CisgIC8vIG91ciBNb2NrRGVhdGhUZXN0LgorICBBU1NFUlRfRVEoMlUsIGZhY3Rvcnlf
LT5BYm9ydENhbGxzKCkpOworICBFWFBFQ1RfRVEoRGVhdGhUZXN0OjpURVNUX0RJRF9OT1RfRElF
LAorICAgICAgICAgICAgZmFjdG9yeV8tPkFib3J0QXJndW1lbnQoMCkpOworICBFWFBFQ1RfRVEo
RGVhdGhUZXN0OjpURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQsCisgICAgICAgICAg
ICBmYWN0b3J5Xy0+QWJvcnRBcmd1bWVudCgxKSk7CisgIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5U
ZXN0RGVsZXRlZCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIHN1Y2Nlc3NmdWwgZGVhdGggdGVz
dCBkb2VzIG5vdCByZWdpc3RlciBhIHN1Y2Nlc3NmdWwKKy8vIHRlc3QgcGFydC4KK1RFU1QoU3Vj
Y2Vzc1JlZ2lzdHJhdGlvbkRlYXRoVGVzdCwgTm9TdWNjZXNzUGFydCkgeworICBFWFBFQ1RfREVB
VEgoX2V4aXQoMSksICIiKTsKKyAgRVhQRUNUX0VRKDAsIEdldFVuaXRUZXN0SW1wbCgpLT5jdXJy
ZW50X3Rlc3RfcmVzdWx0KCktPnRvdGFsX3BhcnRfY291bnQoKSk7Cit9CisKK1RFU1QoU3RyZWFt
aW5nQXNzZXJ0aW9uc0RlYXRoVGVzdCwgRGVhdGhUZXN0KSB7CisgIEVYUEVDVF9ERUFUSChfZXhp
dCgxKSwgIiIpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOworICBBU1NFUlRfREVBVEgoX2V4aXQo
MSksICIiKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoeyAgLy8gTk9MSU5UCisgICAgRVhQRUNUX0RFQVRIKF9leGl0KDApLCAiIikgPDwgImV4cGVj
dGVkIGZhaWx1cmUiOworICB9LCAiZXhwZWN0ZWQgZmFpbHVyZSIpOworICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfREVBVEgoX2V4aXQoMCksICIiKSA8PCAi
ZXhwZWN0ZWQgZmFpbHVyZSI7CisgIH0sICJleHBlY3RlZCBmYWlsdXJlIik7Cit9CisKKy8vIFRl
c3RzIHRoYXQgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24gcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcg
d2hlbiB0aGUKKy8vIGxhc3QgZXJyb3IgaXMgMCBhbmQgbm9uLWVtcHR5IHN0cmluZyB3aGVuIGl0
IGlzIG5vbi16ZXJvLgorVEVTVChHZXRMYXN0RXJybm9EZXNjcmlwdGlvbiwgR2V0TGFzdEVycm5v
RGVzY3JpcHRpb25Xb3JrcykgeworICBlcnJubyA9IEVOT0VOVDsKKyAgRVhQRUNUX1NUUk5FKCIi
LCBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpLmNfc3RyKCkpOworICBlcnJubyA9IDA7CisgIEVY
UEVDVF9TVFJFUSgiIiwgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKS5jX3N0cigpKTsKK30KKwor
IyBpZiBHVEVTVF9PU19XSU5ET1dTCitURVNUKEF1dG9IYW5kbGVUZXN0LCBBdXRvSGFuZGxlV29y
a3MpIHsKKyAgSEFORExFIGhhbmRsZSA9IDo6Q3JlYXRlRXZlbnQoTlVMTCwgRkFMU0UsIEZBTFNF
LCBOVUxMKTsKKyAgQVNTRVJUX05FKElOVkFMSURfSEFORExFX1ZBTFVFLCBoYW5kbGUpOworCisg
IC8vIFRlc3RzIHRoYXQgdGhlIEF1dG9IYW5kbGUgaXMgY29ycmVjdGx5IGluaXRpYWxpemVkIHdp
dGggYSBoYW5kbGUuCisgIHRlc3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxlIGF1dG9faGFuZGxl
KGhhbmRsZSk7CisgIEVYUEVDVF9FUShoYW5kbGUsIGF1dG9faGFuZGxlLkdldCgpKTsKKworICAv
LyBUZXN0cyB0aGF0IFJlc2V0IGFzc2lnbnMgSU5WQUxJRF9IQU5ETEVfVkFMVUUuCisgIC8vIE5v
dGUgdGhhdCB0aGlzIGNhbm5vdCB2ZXJpZnkgd2hldGhlciB0aGUgb3JpZ2luYWwgaGFuZGxlIGlz
IGNsb3NlZC4KKyAgYXV0b19oYW5kbGUuUmVzZXQoKTsKKyAgRVhQRUNUX0VRKElOVkFMSURfSEFO
RExFX1ZBTFVFLCBhdXRvX2hhbmRsZS5HZXQoKSk7CisKKyAgLy8gVGVzdHMgdGhhdCBSZXNldCBh
c3NpZ25zIHRoZSBuZXcgaGFuZGxlLgorICAvLyBOb3RlIHRoYXQgdGhpcyBjYW5ub3QgdmVyaWZ5
IHdoZXRoZXIgdGhlIG9yaWdpbmFsIGhhbmRsZSBpcyBjbG9zZWQuCisgIGhhbmRsZSA9IDo6Q3Jl
YXRlRXZlbnQoTlVMTCwgRkFMU0UsIEZBTFNFLCBOVUxMKTsKKyAgQVNTRVJUX05FKElOVkFMSURf
SEFORExFX1ZBTFVFLCBoYW5kbGUpOworICBhdXRvX2hhbmRsZS5SZXNldChoYW5kbGUpOworICBF
WFBFQ1RfRVEoaGFuZGxlLCBhdXRvX2hhbmRsZS5HZXQoKSk7CisKKyAgLy8gVGVzdHMgdGhhdCBB
dXRvSGFuZGxlIGNvbnRhaW5zIElOVkFMSURfSEFORExFX1ZBTFVFIGJ5IGRlZmF1bHQuCisgIHRl
c3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxlIGF1dG9faGFuZGxlMjsKKyAgRVhQRUNUX0VRKElO
VkFMSURfSEFORExFX1ZBTFVFLCBhdXRvX2hhbmRsZTIuR2V0KCkpOworfQorIyBlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUworCisjIGlmIEdURVNUX09TX1dJTkRPV1MKK3R5cGVkZWYgdW5zaWdu
ZWQgX19pbnQ2NCBCaWdnZXN0UGFyc2FibGU7Cit0eXBlZGVmIHNpZ25lZCBfX2ludDY0IEJpZ2dl
c3RTaWduZWRQYXJzYWJsZTsKKyMgZWxzZQordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgQmln
Z2VzdFBhcnNhYmxlOwordHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIEJpZ2dlc3RTaWduZWRQYXJz
YWJsZTsKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworLy8gV2UgY2Fubm90IHVzZSBz
dGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSBhcyBpdCBjbGFzaGVzIHdpdGggdGhlCisvLyBt
YXgoKSBtYWNybyBkZWZpbmVkIGJ5IDx3aW5kb3dzLmg+LgorY29uc3QgQmlnZ2VzdFBhcnNhYmxl
IGtCaWdnZXN0UGFyc2FibGVNYXggPSBVTExPTkdfTUFYOworY29uc3QgQmlnZ2VzdFNpZ25lZFBh
cnNhYmxlIGtCaWdnZXN0U2lnbmVkUGFyc2FibGVNYXggPSBMTE9OR19NQVg7CisKK1RFU1QoUGFy
c2VOYXR1cmFsTnVtYmVyVGVzdCwgUmVqZWN0c0ludmFsaWRGb3JtYXQpIHsKKyAgQmlnZ2VzdFBh
cnNhYmxlIHJlc3VsdCA9IDA7CisKKyAgLy8gUmVqZWN0cyBub24tbnVtYmVycy4KKyAgRVhQRUNU
X0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcigibm9uLW51bWJlciBzdHJpbmciLCAmcmVzdWx0KSk7
CisKKyAgLy8gUmVqZWN0cyBudW1iZXJzIHdpdGggd2hpdGVzcGFjZSBwcmVmaXguCisgIEVYUEVD
VF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoIiAxMjMiLCAmcmVzdWx0KSk7CisKKyAgLy8gUmVq
ZWN0cyBuZWdhdGl2ZSBudW1iZXJzLgorICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVy
KCItMTIzIiwgJnJlc3VsdCkpOworCisgIC8vIFJlamVjdHMgbnVtYmVycyBzdGFydGluZyB3aXRo
IGEgcGx1cyBzaWduLgorICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCIrMTIzIiwg
JnJlc3VsdCkpOworICBlcnJubyA9IDA7Cit9CisKK1RFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVz
dCwgUmVqZWN0c092ZXJmbG93bk51bWJlcnMpIHsKKyAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9
IDA7CisKKyAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcigiOTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTkiLCAmcmVzdWx0KSk7CisKKyAgc2lnbmVkIGNoYXIgY2hhcl9yZXN1bHQgPSAwOwor
ICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCIyMDAiLCAmY2hhcl9yZXN1bHQpKTsK
KyAgZXJybm8gPSAwOworfQorCitURVNUKFBhcnNlTmF0dXJhbE51bWJlclRlc3QsIEFjY2VwdHNW
YWxpZE51bWJlcnMpIHsKKyAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7CisKKyAgcmVzdWx0
ID0gMDsKKyAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKCIxMjMiLCAmcmVzdWx0KSk7
CisgIEVYUEVDVF9FUSgxMjNVLCByZXN1bHQpOworCisgIC8vIENoZWNrIDAgYXMgYW4gZWRnZSBj
YXNlLgorICByZXN1bHQgPSAxOworICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjAi
LCAmcmVzdWx0KSk7CisgIEVYUEVDVF9FUSgwVSwgcmVzdWx0KTsKKworICByZXN1bHQgPSAxOwor
ICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjAwMDAwIiwgJnJlc3VsdCkpOworICBF
WFBFQ1RfRVEoMFUsIHJlc3VsdCk7Cit9CisKK1RFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwg
QWNjZXB0c1R5cGVMaW1pdHMpIHsKKyAgTWVzc2FnZSBtc2c7CisgIG1zZyA8PCBrQmlnZ2VzdFBh
cnNhYmxlTWF4OworCisgIEJpZ2dlc3RQYXJzYWJsZSByZXN1bHQgPSAwOworICBFWFBFQ1RfVFJV
RShQYXJzZU5hdHVyYWxOdW1iZXIobXNnLkdldFN0cmluZygpLCAmcmVzdWx0KSk7CisgIEVYUEVD
VF9FUShrQmlnZ2VzdFBhcnNhYmxlTWF4LCByZXN1bHQpOworCisgIE1lc3NhZ2UgbXNnMjsKKyAg
bXNnMiA8PCBrQmlnZ2VzdFNpZ25lZFBhcnNhYmxlTWF4OworCisgIEJpZ2dlc3RTaWduZWRQYXJz
YWJsZSBzaWduZWRfcmVzdWx0ID0gMDsKKyAgRVhQRUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVy
KG1zZzIuR2V0U3RyaW5nKCksICZzaWduZWRfcmVzdWx0KSk7CisgIEVYUEVDVF9FUShrQmlnZ2Vz
dFNpZ25lZFBhcnNhYmxlTWF4LCBzaWduZWRfcmVzdWx0KTsKKworICBNZXNzYWdlIG1zZzM7Cisg
IG1zZzMgPDwgSU5UX01BWDsKKworICBpbnQgaW50X3Jlc3VsdCA9IDA7CisgIEVYUEVDVF9UUlVF
KFBhcnNlTmF0dXJhbE51bWJlcihtc2czLkdldFN0cmluZygpLCAmaW50X3Jlc3VsdCkpOworICBF
WFBFQ1RfRVEoSU5UX01BWCwgaW50X3Jlc3VsdCk7CisKKyAgTWVzc2FnZSBtc2c0OworICBtc2c0
IDw8IFVJTlRfTUFYOworCisgIHVuc2lnbmVkIGludCB1aW50X3Jlc3VsdCA9IDA7CisgIEVYUEVD
VF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihtc2c0LkdldFN0cmluZygpLCAmdWludF9yZXN1bHQp
KTsKKyAgRVhQRUNUX0VRKFVJTlRfTUFYLCB1aW50X3Jlc3VsdCk7Cit9CisKK1RFU1QoUGFyc2VO
YXR1cmFsTnVtYmVyVGVzdCwgV29ya3NGb3JTaG9ydGVySW50ZWdlcnMpIHsKKyAgc2hvcnQgc2hv
cnRfcmVzdWx0ID0gMDsKKyAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKCIxMjMiLCAm
c2hvcnRfcmVzdWx0KSk7CisgIEVYUEVDVF9FUSgxMjMsIHNob3J0X3Jlc3VsdCk7CisKKyAgc2ln
bmVkIGNoYXIgY2hhcl9yZXN1bHQgPSAwOworICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1i
ZXIoIjEyMyIsICZjaGFyX3Jlc3VsdCkpOworICBFWFBFQ1RfRVEoMTIzLCBjaGFyX3Jlc3VsdCk7
Cit9CisKKyMgaWYgR1RFU1RfT1NfV0lORE9XUworVEVTVChFbnZpcm9ubWVudFRlc3QsIEhhbmRs
ZUZpdHNJbnRvU2l6ZVQpIHsKKyAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHRlc3QgYWZ0ZXIgdGhp
cyBjb25kaXRpb24gaXMgdmVyaWZpZWQKKyAgLy8gaW4gYSBzdGF0aWMgYXNzZXJ0aW9uIGluIGd0
ZXN0LWRlYXRoLXRlc3QuY2MgaW4gdGhlIGZ1bmN0aW9uCisgIC8vIEdldFN0YXR1c0ZpbGVEZXNj
cmlwdG9yLgorICBBU1NFUlRfVFJVRShzaXplb2YoSEFORExFKSA8PSBzaXplb2Yoc2l6ZV90KSk7
Cit9CisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisKKy8vIFRlc3RzIHRoYXQgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRC9BU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEIHRyaWdnZXIKKy8v
IGZhaWx1cmVzIHdoZW4gZGVhdGggdGVzdHMgYXJlIGF2YWlsYWJsZSBvbiB0aGUgc3lzdGVtLgor
VEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zRGVhdGhUZXN0LCBFeHBlY3RzRGVhdGhXaGVuRGVh
dGhUZXN0c0F2YWlsYWJsZSkgeworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKERpZUluc2lk
ZSgiQ29uZERlYXRoVGVzdEV4cGVjdE1hY3JvIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImRlYXRoIGluc2lkZSBDb25kRGVhdGhUZXN0RXhwZWN0TWFjcm8iKTsKKyAgQVNTRVJUX0RF
QVRIX0lGX1NVUFBPUlRFRChEaWVJbnNpZGUoIkNvbmREZWF0aFRlc3RBc3NlcnRNYWNybyIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWF0aCBpbnNpZGUgQ29uZERlYXRoVGVzdEFz
c2VydE1hY3JvIik7CisKKyAgLy8gRW1wdHkgc3RhdGVtZW50IHdpbGwgbm90IGNyYXNoLCB3aGlj
aCBtdXN0IHRyaWdnZXIgYSBmYWlsdXJlLgorICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBF
Q1RfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKSwgIiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RShBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKSwgIiIpOworfQorCitURVNUKEluRGVh
dGhUZXN0Q2hpbGREZWF0aFRlc3QsIFJlcG9ydHNEZWF0aFRlc3RDb3JyZWN0bHlJbkZhc3RTdHls
ZSkgeworICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOwor
ICBFWFBFQ1RfRkFMU0UoSW5EZWF0aFRlc3RDaGlsZCgpKTsKKyAgRVhQRUNUX0RFQVRIKHsKKyAg
ICBmcHJpbnRmKHN0ZGVyciwgSW5EZWF0aFRlc3RDaGlsZCgpID8gIkluc2lkZSIgOiAiT3V0c2lk
ZSIpOworICAgIGZmbHVzaChzdGRlcnIpOworICAgIF9leGl0KDEpOworICB9LCAiSW5zaWRlIik7
Cit9CisKK1RFU1QoSW5EZWF0aFRlc3RDaGlsZERlYXRoVGVzdCwgUmVwb3J0c0RlYXRoVGVzdENv
cnJlY3RseUluVGhyZWFkU2FmZVN0eWxlKSB7CisgIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhf
dGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7CisgIEVYUEVDVF9GQUxTRShJbkRlYXRoVGVzdENo
aWxkKCkpOworICBFWFBFQ1RfREVBVEgoeworICAgIGZwcmludGYoc3RkZXJyLCBJbkRlYXRoVGVz
dENoaWxkKCkgPyAiSW5zaWRlIiA6ICJPdXRzaWRlIik7CisgICAgZmZsdXNoKHN0ZGVycik7Cisg
ICAgX2V4aXQoMSk7CisgIH0sICJJbnNpZGUiKTsKK30KKworI2Vsc2UgIC8vICFHVEVTVF9IQVNf
REVBVEhfVEVTVCBmb2xsb3dzCisKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpDYXB0dXJlU3Rk
ZXJyOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldENhcHR1cmVkU3RkZXJyOworCisvLyBU
ZXN0cyB0aGF0IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQvQVNTRVJUX0RFQVRIX0lGX1NVUFBP
UlRFRCBhcmUgc3RpbGwKKy8vIGRlZmluZWQgYnV0IGRvIG5vdCB0cmlnZ2VyIGZhaWx1cmVzIHdo
ZW4gZGVhdGggdGVzdHMgYXJlIG5vdCBhdmFpbGFibGUgb24KKy8vIHRoZSBzeXN0ZW0uCitURVNU
KENvbmRpdGlvbmFsRGVhdGhNYWNyb3NUZXN0LCBXYXJuc1doZW5EZWF0aFRlc3RzTm90QXZhaWxh
YmxlKSB7CisgIC8vIEVtcHR5IHN0YXRlbWVudCB3aWxsIG5vdCBjcmFzaCwgYnV0IHRoYXQgc2hv
dWxkIG5vdCB0cmlnZ2VyIGEgZmFpbHVyZQorICAvLyB3aGVuIGRlYXRoIHRlc3RzIGFyZSBub3Qg
c3VwcG9ydGVkLgorICBDYXB0dXJlU3RkZXJyKCk7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JU
RUQoOywgIiIpOworICBzdGQ6OnN0cmluZyBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVycigpOwor
ICBBU1NFUlRfVFJVRShOVUxMICE9IHN0cnN0cihvdXRwdXQuY19zdHIoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMg
cGxhdGZvcm0iKSk7CisgIEFTU0VSVF9UUlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5jX3N0cigp
LCAiOyIpKTsKKworICAvLyBUaGUgc3RyZWFtZWQgbWVzc2FnZSBzaG91bGQgbm90IGJlIHByaW50
ZWQgYXMgdGhlcmUgaXMgbm8gdGVzdCBmYWlsdXJlLgorICBDYXB0dXJlU3RkZXJyKCk7CisgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIpIDw8ICJzdHJlYW1lZCBtZXNzYWdlIjsKKyAg
b3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKKyAgQVNTRVJUX1RSVUUoTlVMTCA9PSBzdHJz
dHIob3V0cHV0LmNfc3RyKCksICJzdHJlYW1lZCBtZXNzYWdlIikpOworCisgIENhcHR1cmVTdGRl
cnIoKTsKKyAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIik7ICAvLyBOT0xJTlQKKyAg
b3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKKyAgQVNTRVJUX1RSVUUoTlVMTCAhPSBzdHJz
dHIob3V0cHV0LmNfc3RyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWF0aCB0
ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikpOworICBBU1NFUlRfVFJV
RShOVUxMICE9IHN0cnN0cihvdXRwdXQuY19zdHIoKSwgIjsiKSk7CisKKyAgQ2FwdHVyZVN0ZGVy
cigpOworICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKSA8PCAic3RyZWFtZWQgbWVz
c2FnZSI7ICAvLyBOT0xJTlQKKyAgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKKyAgQVNT
RVJUX1RSVUUoTlVMTCA9PSBzdHJzdHIob3V0cHV0LmNfc3RyKCksICJzdHJlYW1lZCBtZXNzYWdl
IikpOworfQorCit2b2lkIEZ1bmNXaXRoQXNzZXJ0KGludCogbikgeworICBBU1NFUlRfREVBVEhf
SUZfU1VQUE9SVEVEKHJldHVybjssICIiKTsKKyAgKCpuKSsrOworfQorCisvLyBUZXN0cyB0aGF0
IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgZG9lcyBub3QgcmV0dXJuIGZyb20gdGhlIGN1cnJl
bnQKKy8vIGZ1bmN0aW9uIChhcyBBU1NFUlRfREVBVEggZG9lcykgaWYgZGVhdGggdGVzdHMgYXJl
IG5vdCBzdXBwb3J0ZWQuCitURVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NUZXN0LCBBc3NlcnRE
ZWF0RG9lc05vdFJldHVybmhJZlVuc3VwcG9ydGVkKSB7CisgIGludCBuID0gMDsKKyAgRnVuY1dp
dGhBc3NlcnQoJm4pOworICBFWFBFQ1RfRVEoMSwgbik7Cit9CisKKyNlbmRpZiAgLy8gIUdURVNU
X0hBU19ERUFUSF9URVNUCisKKy8vIFRlc3RzIHRoYXQgdGhlIGRlYXRoIHRlc3QgbWFjcm9zIGV4
cGFuZCB0byBjb2RlIHdoaWNoIG1heSBvciBtYXkgbm90CisvLyBiZSBmb2xsb3dlZCBieSBvcGVy
YXRvcjw8LCBhbmQgdGhhdCBpbiBlaXRoZXIgY2FzZSB0aGUgY29tcGxldGUgdGV4dAorLy8gY29t
cHJpc2VzIG9ubHkgYSBzaW5nbGUgQysrIHN0YXRlbWVudC4KKy8vCisvLyBUaGUgc3ludGF4IHNo
b3VsZCB3b3JrIHdoZXRoZXIgZGVhdGggdGVzdHMgYXJlIGF2YWlsYWJsZSBvciBub3QuCitURVNU
KENvbmRpdGlvbmFsRGVhdGhNYWNyb3NTeW50YXhEZWF0aFRlc3QsIFNpbmdsZVN0YXRlbWVudCkg
eworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICAvLyBUaGlzIHdvdWxkIGZhaWwgaWYgZXhlY3V0
ZWQ7IHRoaXMgaXMgYSBjb21waWxhdGlvbiB0ZXN0IG9ubHkKKyAgICBBU1NFUlRfREVBVEhfSUZf
U1VQUE9SVEVEKHJldHVybiwgIiIpOworCisgIGlmIChBbHdheXNUcnVlKCkpCisgICAgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRChfZXhpdCgxKSwgIiIpOworICBlbHNlCisgICAgLy8gVGhpcyBl
bXB0eSAiZWxzZSIgYnJhbmNoIGlzIG1lYW50IHRvIGVuc3VyZSB0aGF0IEVYUEVDVF9ERUFUSAor
ICAgIC8vIGRvZXNuJ3QgZXhwYW5kIGludG8gYW4gImlmIiBzdGF0ZW1lbnQgd2l0aG91dCBhbiAi
ZWxzZSIKKyAgICA7ICAvLyBOT0xJTlQKKworICBpZiAoQWx3YXlzRmFsc2UoKSkKKyAgICBBU1NF
UlRfREVBVEhfSUZfU1VQUE9SVEVEKHJldHVybiwgIiIpIDw8ICJkaWQgbm90IGRpZSI7CisKKyAg
aWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgOyAgLy8gTk9MSU5UCisgIGVsc2UKKyAgICBFWFBFQ1Rf
REVBVEhfSUZfU1VQUE9SVEVEKF9leGl0KDEpLCAiIikgPDwgMSA8PCAyIDw8IDM7Cit9CisKKy8v
IFRlc3RzIHRoYXQgY29uZGl0aW9uYWwgZGVhdGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUg
d2hpY2ggaW50ZXJhY3RzCisvLyB3ZWxsIHdpdGggc3dpdGNoIHN0YXRlbWVudHMuCitURVNUKENv
bmRpdGlvbmFsRGVhdGhNYWNyb3NTeW50YXhEZWF0aFRlc3QsIFN3aXRjaFN0YXRlbWVudCkgewor
ICAvLyBNaWNyb3NvZnQgY29tcGlsZXIgdXN1YWxseSBjb21wbGFpbnMgYWJvdXQgc3dpdGNoIHN0
YXRlbWVudHMgd2l0aG91dAorICAvLyBjYXNlIGxhYmVscy4gV2Ugc3VwcHJlc3MgdGhhdCB3YXJu
aW5nIGZvciB0aGlzIHRlc3QuCisgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQw
NjUpCisKKyAgc3dpdGNoICgwKQorICAgIGRlZmF1bHQ6CisgICAgICBBU1NFUlRfREVBVEhfSUZf
U1VQUE9SVEVEKF9leGl0KDEpLCAiIikKKyAgICAgICAgICA8PCAiZXhpdCBpbiBkZWZhdWx0IHN3
aXRjaCBoYW5kbGVyIjsKKworICBzd2l0Y2ggKDApCisgICAgY2FzZSAwOgorICAgICAgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRChfZXhpdCgxKSwgIiIpIDw8ICJleGl0IGluIHN3aXRjaCBjYXNl
IjsKKworICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKK30KKworLy8gVGVzdHMg
dGhhdCBhIHRlc3QgY2FzZSB3aG9zZSBuYW1lIGVuZHMgd2l0aCAiRGVhdGhUZXN0IiB3b3JrcyBm
aW5lCisvLyBvbiBXaW5kb3dzLgorVEVTVChOb3RBRGVhdGhUZXN0LCBUZXN0KSB7CisgIFNVQ0NF
RUQoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xl
dGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4Yjk0NzBmYzg4
YWQxN2FhZWI2NjRkNDdjMjcwY2ZjYWE3MzFiZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNjCkBA
IC0wLDAgKzEsOTIgQEAKKy8vIENvcHlyaWdodCAyMDEwLCBHb29nbGUgSW5jLgorLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworLy8KKy8vIFRlc3RzIHRoYXQgdmVyaWZ5IGludGVyYWN0aW9uIG9mIGV4Y2VwdGlvbnMg
YW5kIGRlYXRoIHRlc3RzLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisj
IGlmIEdURVNUX0hBU19TRUgKKyMgIGluY2x1ZGUgPHdpbmRvd3MuaD4gICAgICAgICAgLy8gRm9y
IFJhaXNlRXhjZXB0aW9uKCkuCisjIGVuZGlmCisKKyMgaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3Bp
LmgiCisKKyMgaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKKworIyAgaW5jbHVkZSA8ZXhjZXB0aW9u
PiAgLy8gRm9yIHN0ZDo6ZXhjZXB0aW9uLgorCisvLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHJl
cG9ydCB0aHJvd24gZXhjZXB0aW9ucyBhcyBmYWlsdXJlcyBhbmQgdGhhdCB0aGUKKy8vIGV4Y2Vw
dGlvbnMgZG8gbm90IGVzY2FwZSBkZWF0aCB0ZXN0IG1hY3Jvcy4KK1RFU1QoQ3h4RXhjZXB0aW9u
RGVhdGhUZXN0LCBFeGNlcHRpb25Jc0ZhaWx1cmUpIHsKKyAgdHJ5IHsKKyAgICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgodGhyb3cgMSwgIiIpLCAidGhyZXcgYW4gZXhjZXB0
aW9uIik7CisgIH0gY2F0Y2ggKC4uLikgeyAgLy8gTk9MSU5UCisgICAgRkFJTCgpIDw8ICJBbiBl
eGNlcHRpb24gZXNjYXBlZCBhIGRlYXRoIHRlc3QgbWFjcm8gaW52b2NhdGlvbiAiCisgICAgICAg
ICAgIDw8ICJ3aXRoIGNhdGNoX2V4Y2VwdGlvbnMgIgorICAgICAgICAgICA8PCAodGVzdGluZzo6
R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpOwor
ICB9Cit9CisKK2NsYXNzIFRlc3RFeGNlcHRpb24gOiBwdWJsaWMgc3RkOjpleGNlcHRpb24gewor
IHB1YmxpYzoKKyAgdmlydHVhbCBjb25zdCBjaGFyKiB3aGF0KCkgY29uc3QgdGhyb3coKSB7IHJl
dHVybiAiZXhjZXB0aW9uYWwgbWVzc2FnZSI7IH0KK307CisKK1RFU1QoQ3h4RXhjZXB0aW9uRGVh
dGhUZXN0LCBQcmludHNNZXNzYWdlRm9yU3RkRXhjZXB0aW9ucykgeworICAvLyBWZXJpZmllcyB0
aGF0IHRoZSBleGNlcHRpb24gbWVzc2FnZSBpcyBxdW90ZWQgaW4gdGhlIGZhaWx1cmUgdGV4dC4K
KyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKHRocm93IFRlc3RFeGNlcHRp
b24oKSwgIiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0aW9uYWwgbWVzc2Fn
ZSIpOworICAvLyBWZXJpZmllcyB0aGF0IHRoZSBsb2NhdGlvbiBpcyBtZW50aW9uZWQgaW4gdGhl
IGZhaWx1cmUgdGV4dC4KKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKHRo
cm93IFRlc3RFeGNlcHRpb24oKSwgIiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZ29v
Z2xldGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MiKTsKK30KKyMgZW5kaWYgIC8vIEdURVNUX0hB
U19FWENFUFRJT05TCisKKyMgaWYgR1RFU1RfSEFTX1NFSAorLy8gVGVzdHMgdGhhdCBlbmFibGlu
ZyBpbnRlcmNlcHRpb24gb2YgU0VIIGV4Y2VwdGlvbnMgd2l0aCB0aGUKKy8vIGNhdGNoX2V4Y2Vw
dGlvbnMgZmxhZyBkb2VzIG5vdCBpbnRlcmZlcmUgd2l0aCBTRUggZXhjZXB0aW9ucyBiZWluZwor
Ly8gdHJlYXRlZCBhcyBkZWF0aCBieSBkZWF0aCB0ZXN0cy4KK1RFU1QoU2VoRXhjZXB0aW9uRGVh
c1Rlc3QsIENhdGNoRXhjZXB0aW9uc0RvZXNOb3RJbnRlcmZlcmUpIHsKKyAgRVhQRUNUX0RFQVRI
KFJhaXNlRXhjZXB0aW9uKDQyLCAweDAsIDAsIE5VTEwpLCAiIikKKyAgICAgIDw8ICJ3aXRoIGNh
dGNoX2V4Y2VwdGlvbnMgIgorICAgICAgPDwgKHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hfZXhj
ZXB0aW9ucykgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKK30KKyMgZW5kaWYKKworI2VuZGlm
ICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFy
Z3YpIHsKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICB0ZXN0aW5n
OjpHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpID0gR1RFU1RfRU5BQkxFX0NBVENIX0VYQ0VQ
VElPTlNfICE9IDA7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0LnB5IGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWVudi12YXItdGVzdC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMWVmZWVlMWVhYjhjNmRhY2I1ZDI5MjZmNGI1YzkwODA5MzhkYjEzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWVu
di12YXItdGVzdC5weQpAQCAtMCwwICsxLDExNyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
CisjIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworIiIiVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCBjb3JyZWN0
bHkgcGFyc2VzIGVudmlyb25tZW50IHZhcmlhYmxlcy4iIiIKKworaW1wb3J0IG9zCitpbXBvcnQg
Z3Rlc3RfdGVzdF91dGlscworCisKK0lTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdudCcKK0lTX0xJ
TlVYID0gb3MubmFtZSA9PSAncG9zaXgnIGFuZCBvcy51bmFtZSgpWzBdID09ICdMaW51eCcKKwor
Q09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdnb29nbGV0
ZXN0LWVudi12YXItdGVzdF8nKQorCitlbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkKKworCitk
ZWYgQXNzZXJ0RXEoZXhwZWN0ZWQsIGFjdHVhbCk6CisgIGlmIGV4cGVjdGVkICE9IGFjdHVhbDoK
KyAgICBwcmludCAnRXhwZWN0ZWQ6ICVzJyAlIChleHBlY3RlZCwpCisgICAgcHJpbnQgJyAgQWN0
dWFsOiAlcycgJSAoYWN0dWFsLCkKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCisKK2RlZiBT
ZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgorICAiIiJTZXRzIHRoZSBlbnYgdmFyaWFibGUgdG8g
J3ZhbHVlJzsgdW5zZXRzIGl0IHdoZW4gJ3ZhbHVlJyBpcyBOb25lLiIiIgorCisgIGlmIHZhbHVl
IGlzIG5vdCBOb25lOgorICAgIGVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQorICBlbGlmIGVudl92
YXIgaW4gZW52aXJvbjoKKyAgICBkZWwgZW52aXJvbltlbnZfdmFyXQorCisKK2RlZiBHZXRGbGFn
KGZsYWcpOgorICAiIiJSdW5zIGdvb2dsZXRlc3QtZW52LXZhci10ZXN0XyBhbmQgcmV0dXJucyBp
dHMgb3V0cHV0LiIiIgorCisgIGFyZ3MgPSBbQ09NTUFORF0KKyAgaWYgZmxhZyBpcyBub3QgTm9u
ZToKKyAgICBhcmdzICs9IFtmbGFnXQorICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9j
ZXNzKGFyZ3MsIGVudj1lbnZpcm9uKS5vdXRwdXQKKworCitkZWYgVGVzdEZsYWcoZmxhZywgdGVz
dF92YWwsIGRlZmF1bHRfdmFsKToKKyAgIiIiVmVyaWZpZXMgdGhhdCB0aGUgZ2l2ZW4gZmxhZyBp
cyBhZmZlY3RlZCBieSB0aGUgY29ycmVzcG9uZGluZyBlbnYgdmFyLiIiIgorCisgIGVudl92YXIg
PSAnR1RFU1RfJyArIGZsYWcudXBwZXIoKQorICBTZXRFbnZWYXIoZW52X3ZhciwgdGVzdF92YWwp
CisgIEFzc2VydEVxKHRlc3RfdmFsLCBHZXRGbGFnKGZsYWcpKQorICBTZXRFbnZWYXIoZW52X3Zh
ciwgTm9uZSkKKyAgQXNzZXJ0RXEoZGVmYXVsdF92YWwsIEdldEZsYWcoZmxhZykpCisKKworY2xh
c3MgR1Rlc3RFbnZWYXJUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorCisgIGRlZiB0
ZXN0RW52VmFyQWZmZWN0c0ZsYWcoc2VsZik6CisgICAgIiIiVGVzdHMgdGhhdCBlbnZpcm9ubWVu
dCB2YXJpYWJsZSBzaG91bGQgYWZmZWN0IHRoZSBjb3JyZXNwb25kaW5nIGZsYWcuIiIiCisKKyAg
ICBUZXN0RmxhZygnYnJlYWtfb25fZmFpbHVyZScsICcxJywgJzAnKQorICAgIFRlc3RGbGFnKCdj
b2xvcicsICd5ZXMnLCAnYXV0bycpCisgICAgVGVzdEZsYWcoJ2ZpbHRlcicsICdGb29UZXN0LkJh
cicsICcqJykKKyAgICBTZXRFbnZWYXIoJ1hNTF9PVVRQVVRfRklMRScsIE5vbmUpICAjIEZvciAn
b3V0cHV0JyB0ZXN0CisgICAgVGVzdEZsYWcoJ291dHB1dCcsICd4bWw6dG1wL2Zvby54bWwnLCAn
JykKKyAgICBUZXN0RmxhZygncHJpbnRfdGltZScsICcwJywgJzEnKQorICAgIFRlc3RGbGFnKCdy
ZXBlYXQnLCAnOTk5JywgJzEnKQorICAgIFRlc3RGbGFnKCd0aHJvd19vbl9mYWlsdXJlJywgJzEn
LCAnMCcpCisgICAgVGVzdEZsYWcoJ2RlYXRoX3Rlc3Rfc3R5bGUnLCAndGhyZWFkc2FmZScsICdm
YXN0JykKKyAgICBUZXN0RmxhZygnY2F0Y2hfZXhjZXB0aW9ucycsICcwJywgJzEnKQorCisgICAg
aWYgSVNfTElOVVg6CisgICAgICBUZXN0RmxhZygnZGVhdGhfdGVzdF91c2VfZm9yaycsICcxJywg
JzAnKQorICAgICAgVGVzdEZsYWcoJ3N0YWNrX3RyYWNlX2RlcHRoJywgJzAnLCAnMTAwJykKKwor
CisgIGRlZiB0ZXN0WG1sT3V0cHV0RmlsZShzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0ICRYTUxf
T1VUUFVUX0ZJTEUgYWZmZWN0cyB0aGUgb3V0cHV0IGZsYWcuIiIiCisKKyAgICBTZXRFbnZWYXIo
J0dURVNUX09VVFBVVCcsIE5vbmUpCisgICAgU2V0RW52VmFyKCdYTUxfT1VUUFVUX0ZJTEUnLCAn
dG1wL2Jhci54bWwnKQorICAgIEFzc2VydEVxKCd4bWw6dG1wL2Jhci54bWwnLCBHZXRGbGFnKCdv
dXRwdXQnKSkKKworICBkZWYgdGVzdFhtbE91dHB1dEZpbGVPdmVycmlkZShzZWxmKToKKyAgICAi
IiJUZXN0cyB0aGF0ICRYTUxfT1VUUFVUX0ZJTEUgaXMgb3ZlcnJpZGRlbiBieSAkR1RFU1RfT1VU
UFVULiIiIgorCisgICAgU2V0RW52VmFyKCdHVEVTVF9PVVRQVVQnLCAneG1sOnRtcC9mb28ueG1s
JykKKyAgICBTZXRFbnZWYXIoJ1hNTF9PVVRQVVRfRklMRScsICd0bXAvYmFyLnhtbCcpCisgICAg
QXNzZXJ0RXEoJ3htbDp0bXAvZm9vLnhtbCcsIEdldEZsYWcoJ291dHB1dCcpKQorCitpZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWVudi12YXItdGVzdF8u
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZW52LXZhci10ZXN0
Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mZDJhYTgyZjc0ZmFhMjEyMDFlNzlhZTBlNWMzYjU2ODU1M2RmMzM3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LWVudi12YXItdGVzdF8uY2MKQEAgLTAsMCArMSwxMjIgQEAKKy8vIENvcHlyaWdodCAyMDA4
LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBBIGhlbHBlciBwcm9ncmFtIGZvciB0
ZXN0aW5nIHRoYXQgR29vZ2xlIFRlc3QgcGFyc2VzIHRoZSBlbnZpcm9ubWVudAorLy8gdmFyaWFi
bGVzIGNvcnJlY3RseS4KKworI2luY2x1ZGUgPGlvc3RyZWFtPgorCisjaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3QuaCIKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCisKK3VzaW5nIDo6
c3RkOjpjb3V0OworCituYW1lc3BhY2UgdGVzdGluZyB7CisKKy8vIFRoZSBwdXJwb3NlIG9mIHRo
aXMgaXMgdG8gbWFrZSB0aGUgdGVzdCBtb3JlIHJlYWxpc3RpYyBieSBlbnN1cmluZworLy8gdGhh
dCB0aGUgVW5pdFRlc3Qgc2luZ2xldG9uIGlzIGNyZWF0ZWQgYmVmb3JlIG1haW4oKSBpcyBlbnRl
cmVkLgorLy8gV2UgZG9uJ3QgYWN0dWFsIHJ1biB0aGUgVEVTVCBpdHNlbGYuCitURVNUKEdUZXN0
RW52VmFyVGVzdCwgRHVtbXkpIHsKK30KKwordm9pZCBQcmludEZsYWcoY29uc3QgY2hhciogZmxh
ZykgeworICBpZiAoc3RyY21wKGZsYWcsICJicmVha19vbl9mYWlsdXJlIikgPT0gMCkgeworICAg
IGNvdXQgPDwgR1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJlKTsKKyAgICByZXR1cm47CisgIH0K
KworICBpZiAoc3RyY21wKGZsYWcsICJjYXRjaF9leGNlcHRpb25zIikgPT0gMCkgeworICAgIGNv
dXQgPDwgR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKTsKKyAgICByZXR1cm47CisgIH0KKwor
ICBpZiAoc3RyY21wKGZsYWcsICJjb2xvciIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZM
QUcoY29sb3IpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgImRlYXRo
X3Rlc3Rfc3R5bGUiKSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rf
c3R5bGUpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgImRlYXRoX3Rl
c3RfdXNlX2ZvcmsiKSA9PSAwKSB7CisgICAgY291dCA8PCBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rf
dXNlX2ZvcmspOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChzdHJjbXAoZmxhZywgImZpbHRl
ciIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZMQUcoZmlsdGVyKTsKKyAgICByZXR1cm47
CisgIH0KKworICBpZiAoc3RyY21wKGZsYWcsICJvdXRwdXQiKSA9PSAwKSB7CisgICAgY291dCA8
PCBHVEVTVF9GTEFHKG91dHB1dCk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChm
bGFnLCAicHJpbnRfdGltZSIpID09IDApIHsKKyAgICBjb3V0IDw8IEdURVNUX0ZMQUcocHJpbnRf
dGltZSk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0cmNtcChmbGFnLCAicmVwZWF0Iikg
PT0gMCkgeworICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhyZXBlYXQpOworICAgIHJldHVybjsKKyAg
fQorCisgIGlmIChzdHJjbXAoZmxhZywgInN0YWNrX3RyYWNlX2RlcHRoIikgPT0gMCkgeworICAg
IGNvdXQgPDwgR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCk7CisgICAgcmV0dXJuOworICB9
CisKKyAgaWYgKHN0cmNtcChmbGFnLCAidGhyb3dfb25fZmFpbHVyZSIpID09IDApIHsKKyAgICBj
b3V0IDw8IEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSk7CisgICAgcmV0dXJuOworICB9CisK
KyAgY291dCA8PCAiSW52YWxpZCBmbGFnIG5hbWUgIiA8PCBmbGFnCisgICAgICAgPDwgIi4gIFZh
bGlkIG5hbWVzIGFyZSBicmVha19vbl9mYWlsdXJlLCBjb2xvciwgZmlsdGVyLCBldGMuXG4iOwor
ICBleGl0KDEpOworfQorCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpIHsKKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFy
Z3YpOworCisgIGlmIChhcmdjICE9IDIpIHsKKyAgICBjb3V0IDw8ICJVc2FnZTogZ29vZ2xldGVz
dC1lbnYtdmFyLXRlc3RfIE5BTUVfT0ZfRkxBR1xuIjsKKyAgICByZXR1cm4gMTsKKyAgfQorCisg
IHRlc3Rpbmc6OlByaW50RmxhZyhhcmd2WzFdKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZmlsZXBhdGgtdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1maWxlcGF0aC10ZXN0
LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM3ZjAyZmI0YmQ3Nzk3ZDE0ZDM4M2EwNWZhMTk3YzM2YjMxODI1ZjIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtZmlsZXBhdGgtdGVzdC5jYwpAQCAtMCwwICsxLDY1MSBAQAorLy8gQ29weXJpZ2h0IDIwMDgs
IEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEdvb2dsZSBUZXN0IGZpbGVwYXRoIHV0
aWxpdGllcworLy8KKy8vIFRoaXMgZmlsZSB0ZXN0cyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdXNl
ZCBpbnRlcm5hbGx5IGJ5CisvLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hh
bmdlIHdpdGhvdXQgbm90aWNlLgorLy8KKy8vIFRoaXMgZmlsZSBpcyAjaW5jbHVkZWQgZnJvbSBn
dGVzdC1pbnRlcm5hbC5oLgorLy8gRG8gbm90ICNpbmNsdWRlIHRoaXMgZmlsZSBhbnl3aGVyZSBl
bHNlIQorCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCIKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIK
KworI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCisjIGluY2x1ZGUgPHdpbmRvd3MuaD4gIC8v
IE5PTElOVAorI2VsaWYgR1RFU1RfT1NfV0lORE9XUworIyBpbmNsdWRlIDxkaXJlY3QuaD4gIC8v
IE5PTElOVAorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCituYW1lc3BhY2Ug
dGVzdGluZyB7CituYW1lc3BhY2UgaW50ZXJuYWwgeworbmFtZXNwYWNlIHsKKworI2lmIEdURVNU
X09TX1dJTkRPV1NfTU9CSUxFCisvLyBGSVhNRTogTW92ZSB0aGVzZSB0byB0aGUgUE9TSVggYWRh
cHRlciBzZWN0aW9uIGluCisvLyBndGVzdC1wb3J0LmguCisKKy8vIFdpbmRvd3MgQ0UgZG9lc24n
dCBoYXZlIHRoZSByZW1vdmUgQyBmdW5jdGlvbi4KK2ludCByZW1vdmUoY29uc3QgY2hhciogcGF0
aCkgeworICBMUENXU1RSIHdwYXRoID0gU3RyaW5nOjpBbnNpVG9VdGYxNihwYXRoKTsKKyAgaW50
IHJldCA9IERlbGV0ZUZpbGUod3BhdGgpID8gMCA6IC0xOworICBkZWxldGUgW10gd3BhdGg7Cisg
IHJldHVybiByZXQ7Cit9CisvLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSB0aGUgX3JtZGlyIEMg
ZnVuY3Rpb24uCitpbnQgX3JtZGlyKGNvbnN0IGNoYXIqIHBhdGgpIHsKKyAgRmlsZVBhdGggZmls
ZXBhdGgocGF0aCk7CisgIExQQ1dTVFIgd3BhdGggPSBTdHJpbmc6OkFuc2lUb1V0ZjE2KAorICAg
ICAgZmlsZXBhdGguUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7CisgIGlu
dCByZXQgPSBSZW1vdmVEaXJlY3Rvcnkod3BhdGgpID8gMCA6IC0xOworICBkZWxldGUgW10gd3Bh
dGg7CisgIHJldHVybiByZXQ7Cit9CisKKyNlbHNlCisKK1RFU1QoR2V0Q3VycmVudERpclRlc3Qs
IFJldHVybnNDdXJyZW50RGlyKSB7CisgIGNvbnN0IEZpbGVQYXRoIG9yaWdpbmFsX2RpciA9IEZp
bGVQYXRoOjpHZXRDdXJyZW50RGlyKCk7CisgIEVYUEVDVF9GQUxTRShvcmlnaW5hbF9kaXIuSXNF
bXB0eSgpKTsKKworICBwb3NpeDo6Q2hEaXIoR1RFU1RfUEFUSF9TRVBfKTsKKyAgY29uc3QgRmls
ZVBhdGggY3dkID0gRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKTsKKyAgcG9zaXg6OkNoRGlyKG9y
aWdpbmFsX2Rpci5jX3N0cigpKTsKKworIyBpZiBHVEVTVF9PU19XSU5ET1dTCisKKyAgLy8gU2tp
cHMgdGhlICI6Ii4KKyAgY29uc3QgY2hhciogY29uc3QgY3dkX3dpdGhvdXRfZHJpdmUgPSBzdHJj
aHIoY3dkLmNfc3RyKCksICc6Jyk7CisgIEFTU0VSVF9UUlVFKGN3ZF93aXRob3V0X2RyaXZlICE9
IE5VTEwpOworICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLCBjd2Rfd2l0aG91dF9kcml2
ZSArIDEpOworCisjIGVsc2UKKworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfLCBjd2Quc3Ry
aW5nKCkpOworCisjIGVuZGlmCit9CisKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKKworVEVTVChJc0VtcHR5VGVzdCwgUmV0dXJuc1RydWVGb3JFbXB0eVBhdGgpIHsKKyAgRVhQ
RUNUX1RSVUUoRmlsZVBhdGgoIiIpLklzRW1wdHkoKSk7Cit9CisKK1RFU1QoSXNFbXB0eVRlc3Qs
IFJldHVybnNGYWxzZUZvck5vbkVtcHR5UGF0aCkgeworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgo
ImEiKS5Jc0VtcHR5KCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIi4iKS5Jc0VtcHR5KCkp
OworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImEvYiIpLklzRW1wdHkoKSk7CisgIEVYUEVDVF9G
QUxTRShGaWxlUGF0aCgiYVxcYlxcIikuSXNFbXB0eSgpKTsKK30KKworLy8gUmVtb3ZlRGlyZWN0
b3J5TmFtZSAiIiAtPiAiIgorVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgV2hlbkVtcHR5
TmFtZSkgeworICBFWFBFQ1RfRVEoIiIsIEZpbGVQYXRoKCIiKS5SZW1vdmVEaXJlY3RvcnlOYW1l
KCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZmlsZSIgLT4gImFm
aWxlIgorVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgQnV0Tm9EaXJlY3RvcnkpIHsKKyAg
RVhQRUNUX0VRKCJhZmlsZSIsCisgICAgICBGaWxlUGF0aCgiYWZpbGUiKS5SZW1vdmVEaXJlY3Rv
cnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lICIvYWZpbGUi
IC0+ICJhZmlsZSIKK1RFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFJvb3RGaWxlU2hvdWxk
R2l2ZUZpbGVOYW1lKSB7CisgIEVYUEVDVF9FUSgiYWZpbGUiLAorICAgICAgRmlsZVBhdGgoR1RF
U1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9
CisKKy8vIFJlbW92ZURpcmVjdG9yeU5hbWUgImFkaXIvIiAtPiAiIgorVEVTVChSZW1vdmVEaXJl
Y3RvcnlOYW1lVGVzdCwgV2hlcmVUaGVyZUlzTm9GaWxlTmFtZSkgeworICBFWFBFQ1RfRVEoIiIs
CisgICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfKS5SZW1vdmVEaXJlY3RvcnlO
YW1lKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZGlyL2FmaWxl
IiAtPiAiYWZpbGUiCitURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRHaXZlRmls
ZU5hbWUpIHsKKyAgRVhQRUNUX0VRKCJhZmlsZSIsCisgICAgICBGaWxlUGF0aCgiYWRpciIgR1RF
U1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Cit9
CisKKy8vIFJlbW92ZURpcmVjdG9yeU5hbWUgImFkaXIvc3ViZGlyL2FmaWxlIiAtPiAiYWZpbGUi
CitURVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRBbHNvR2l2ZUZpbGVOYW1lKSB7
CisgIEVYUEVDVF9FUSgiYWZpbGUiLAorICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhf
U0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikKKyAgICAgIC5SZW1vdmVEaXJl
Y3RvcnlOYW1lKCkuc3RyaW5nKCkpOworfQorCisjaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8K
KworLy8gVGVzdHMgdGhhdCBSZW1vdmVEaXJlY3RvcnlOYW1lKCkgd29ya3Mgd2l0aCB0aGUgYWx0
ZXJuYXRlIHNlcGFyYXRvcgorLy8gb24gV2luZG93cy4KKworLy8gUmVtb3ZlRGlyZWN0b3J5TmFt
ZSgiL2FmaWxlIikgLT4gImFmaWxlIgorVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgUm9v
dEZpbGVTaG91bGRHaXZlRmlsZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNU
X0VRKCJhZmlsZSIsIEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3Ry
aW5nKCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCJhZGlyLyIpIC0+ICIiCitURVNU
KFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBXaGVyZVRoZXJlSXNOb0ZpbGVOYW1lRm9yQWx0ZXJu
YXRlU2VwYXJhdG9yKSB7CisgIEVYUEVDVF9FUSgiIiwgRmlsZVBhdGgoImFkaXIvIikuUmVtb3Zl
RGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKK30KKworLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgi
YWRpci9hZmlsZSIpIC0+ICJhZmlsZSIKK1RFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNo
b3VsZEdpdmVGaWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEoImFm
aWxlIiwgRmlsZVBhdGgoImFkaXIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5n
KCkpOworfQorCisvLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCJhZGlyL3N1YmRpci9hZmlsZSIpIC0+
ICJhZmlsZSIKK1RFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEFsc29HaXZlRmls
ZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKKyAgRVhQRUNUX0VRKCJhZmlsZSIsCisgICAg
ICAgICAgICBGaWxlUGF0aCgiYWRpci9zdWJkaXIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1l
KCkuc3RyaW5nKCkpOworfQorCisjZW5kaWYKKworLy8gUmVtb3ZlRmlsZU5hbWUgIiIgLT4gIi4v
IgorVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEVtcHR5TmFtZSkgeworI2lmIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCisgIC8vIE9uIFdpbmRvd3MgQ0UsIHdlIHVzZSB0aGUgcm9vdCBhcyB0aGUg
Y3VycmVudCBkaXJlY3RvcnkuCisgIEVYUEVDVF9FUShHVEVTVF9QQVRIX1NFUF8sIEZpbGVQYXRo
KCIiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKKyNlbHNlCisgIEVYUEVDVF9FUSgiLiIg
R1RFU1RfUEFUSF9TRVBfLCBGaWxlUGF0aCgiIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7
CisjZW5kaWYKK30KKworLy8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvIiAtPiAiYWRpci8iCitURVNU
KFJlbW92ZUZpbGVOYW1lVGVzdCwgQnV0Tm9GaWxlKSB7CisgIEVYUEVDVF9FUSgiYWRpciIgR1RF
U1RfUEFUSF9TRVBfLAorICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXykuUmVt
b3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZUZpbGVOYW1lICJhZGlyL2Fm
aWxlIiAtPiAiYWRpci8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNEaXJOYW1lKSB7
CisgIEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAgRmlsZVBh
dGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmlu
ZygpKTsKK30KKworLy8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvc3ViZGlyL2FmaWxlIiAtPiAiYWRp
ci9zdWJkaXIvIgorVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzRGlyQW5kU3ViRGlyTmFt
ZSkgeworICBFWFBFQ1RfRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9Q
QVRIX1NFUF8sCisgICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIi
IEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKQorICAgICAgLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5n
KCkpOworfQorCisvLyBSZW1vdmVGaWxlTmFtZSAiL2FmaWxlIiAtPiAiLyIKK1RFU1QoUmVtb3Zl
RmlsZU5hbWVUZXN0LCBHaXZlc1Jvb3REaXIpIHsKKyAgRVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQ
XywKKyAgICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1vdmVGaWxlTmFt
ZSgpLnN0cmluZygpKTsKK30KKworI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCisKKy8vIFRl
c3RzIHRoYXQgUmVtb3ZlRmlsZU5hbWUoKSB3b3JrcyB3aXRoIHRoZSBhbHRlcm5hdGUgc2VwYXJh
dG9yIG9uCisvLyBXaW5kb3dzLgorCisvLyBSZW1vdmVGaWxlTmFtZSgiYWRpci8iKSAtPiAiYWRp
ci8iCitURVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgQnV0Tm9GaWxlRm9yQWx0ZXJuYXRlU2VwYXJh
dG9yKSB7CisgIEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAorICAgICAgICAgICAg
RmlsZVBhdGgoImFkaXIvIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJl
bW92ZUZpbGVOYW1lKCJhZGlyL2FmaWxlIikgLT4gImFkaXIvIgorVEVTVChSZW1vdmVGaWxlTmFt
ZVRlc3QsIEdpdmVzRGlyTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEo
ImFkaXIiIEdURVNUX1BBVEhfU0VQXywKKyAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL2FmaWxl
IikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Cit9CisKKy8vIFJlbW92ZUZpbGVOYW1lKCJh
ZGlyL3N1YmRpci9hZmlsZSIpIC0+ICJhZGlyL3N1YmRpci8iCitURVNUKFJlbW92ZUZpbGVOYW1l
VGVzdCwgR2l2ZXNEaXJBbmRTdWJEaXJOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7CisgIEVY
UEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXywK
KyAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL3N1YmRpci9hZmlsZSIpLlJlbW92ZUZpbGVOYW1l
KCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVGaWxlTmFtZSgiL2FmaWxlIikgLT4gIlwiCitU
RVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNSb290RGlyRm9yQWx0ZXJuYXRlU2VwYXJhdG9y
KSB7CisgIEVYUEVDVF9FUShHVEVTVF9QQVRIX1NFUF8sIEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1v
dmVGaWxlTmFtZSgpLnN0cmluZygpKTsKK30KKworI2VuZGlmCisKK1RFU1QoTWFrZUZpbGVOYW1l
VGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVySXNaZXJvKSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZp
bGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoImZvbyIpLCBGaWxlUGF0aCgiYmFyIiksCisg
ICAgICAwLCAieG1sIik7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54
bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVy
YXRlRmlsZU5hbWVOdW1iZXJHdFplcm8pIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6
Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiksIEZpbGVQYXRoKCJiYXIiKSwKKyAgICAgIDEy
LCAieG1sIik7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhcl8xMi54bWwi
LCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRl
RmlsZU5hbWVXaXRoU2xhc2hOdW1iZXJJc1plcm8pIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmls
ZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAorICAg
ICAgRmlsZVBhdGgoImJhciIpLCAwLCAieG1sIik7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNUKE1ha2VGaWxl
TmFtZVRlc3QsIEdlbmVyYXRlRmlsZU5hbWVXaXRoU2xhc2hOdW1iZXJHdFplcm8pIHsKKyAgRmls
ZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiBHVEVT
VF9QQVRIX1NFUF8pLAorICAgICAgRmlsZVBhdGgoImJhciIpLCAxMiwgInhtbCIpOworICBFWFBF
Q1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXJfMTIueG1sIiwgYWN0dWFsLnN0cmluZygp
KTsKK30KKworVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZVdoZW5OdW1iZXJJc1plcm9B
bmREaXJJc0VtcHR5KSB7CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5h
bWUoRmlsZVBhdGgoIiIpLCBGaWxlUGF0aCgiYmFyIiksCisgICAgICAwLCAieG1sIik7CisgIEVY
UEVDVF9FUSgiYmFyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoTWFrZUZpbGVO
YW1lVGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVySXNOb3RaZXJvQW5kRGlySXNFbXB0eSkgeworICBG
aWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCIiKSwgRmls
ZVBhdGgoImJhciIpLAorICAgICAgMTQsICJ4bWwiKTsKKyAgRVhQRUNUX0VRKCJiYXJfMTQueG1s
IiwgYWN0dWFsLnN0cmluZygpKTsKK30KKworVEVTVChDb25jYXRQYXRoc1Rlc3QsIFdvcmtzV2hl
bkRpckRvZXNOb3RFbmRXaXRoUGF0aFNlcCkgeworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0
aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJhci54bWwiKSk7CisgIEVYUEVDVF9FUSgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOworfQorCitURVNU
KENvbmNhdFBhdGhzVGVzdCwgV29ya3NXaGVuUGF0aDFFbmRzV2l0aFBhdGhTZXApIHsKKyAgRmls
ZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iIEdURVNU
X1BBVEhfU0VQXyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
aWxlUGF0aCgiYmFyLnhtbCIpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAi
YmFyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoQ29uY2F0UGF0aHNUZXN0LCBQ
YXRoMUJlaW5nRW1wdHkpIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBh
dGhzKEZpbGVQYXRoKCIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZpbGVQYXRoKCJiYXIueG1sIikpOworICBFWFBFQ1RfRVEoImJhci54bWwiLCBhY3R1YWwu
c3RyaW5nKCkpOworfQorCitURVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDJCZWluZ0VtcHR5KSB7
CisgIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9v
IiksIEZpbGVQYXRoKCIiKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sIGFj
dHVhbC5zdHJpbmcoKSk7Cit9CisKK1RFU1QoQ29uY2F0UGF0aHNUZXN0LCBCb3RoUGF0aEJlaW5n
RW1wdHkpIHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQ
YXRoKCIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQ
YXRoKCIiKSk7CisgIEVYUEVDVF9FUSgiIiwgYWN0dWFsLnN0cmluZygpKTsKK30KKworVEVTVChD
b25jYXRQYXRoc1Rlc3QsIFBhdGgxQ29udGFpbnNQYXRoU2VwKSB7CisgIEZpbGVQYXRoIGFjdHVh
bCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8g
ImJhciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBh
dGgoImZvb2Jhci54bWwiKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJh
ciIgR1RFU1RfUEFUSF9TRVBfICJmb29iYXIueG1sIiwKKyAgICAgICAgICAgIGFjdHVhbC5zdHJp
bmcoKSk7Cit9CisKK1RFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMkNvbnRhaW5zUGF0aFNlcCkg
eworICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoCisgICAgICBGaWxl
UGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAorICAgICAgRmlsZVBhdGgoImJhciIgR1RFU1Rf
UEFUSF9TRVBfICJiYXIueG1sIikpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBf
ICJiYXIiIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsCisgICAgICAgICAgICBhY3R1YWwuc3Ry
aW5nKCkpOworfQorCitURVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDJFbmRzV2l0aFBhdGhTZXAp
IHsKKyAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJm
b28iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRo
KCJiYXIiIEdURVNUX1BBVEhfU0VQXykpOworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9T
RVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXywgYWN0dWFsLnN0cmluZygpKTsKK30KKworLy8gUmVt
b3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICIiIC0+ICIiCitURVNUKFJlbW92ZVRyYWlsaW5nUGF0
aFNlcGFyYXRvclRlc3QsIEVtcHR5U3RyaW5nKSB7CisgIEVYUEVDVF9FUSgiIiwgRmlsZVBhdGgo
IiIpLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKK30KKworLy8gUmVt
b3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28iIC0+ICJmb28iCitURVNUKFJlbW92ZVRyYWls
aW5nUGF0aFNlcGFyYXRvclRlc3QsIEZpbGVOb1NsYXNoU3RyaW5nKSB7CisgIEVYUEVDVF9FUSgi
Zm9vIiwgRmlsZVBhdGgoImZvbyIpLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmlu
ZygpKTsKK30KKworLy8gUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28vIiAtPiAiZm9v
IgorVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBTaG91bGRSZW1vdmVUcmFp
bGluZ1NlcGFyYXRvcikgeworICBFWFBFQ1RfRVEoImZvbyIsCisgICAgICBGaWxlUGF0aCgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8pLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygp
KTsKKyNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXworICBFWFBFQ1RfRVEoImZvbyIsIEZpbGVQ
YXRoKCJmb28vIikuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuc3RyaW5nKCkpOworI2Vu
ZGlmCit9CisKKy8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiZm9vL2Jhci8iIC0+ICJm
b28vYmFyLyIKK1RFU1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgU2hvdWxkUmVt
b3ZlTGFzdFNlcGFyYXRvcikgeworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJi
YXIiLAorICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdU
RVNUX1BBVEhfU0VQXykKKyAgICAgICAgICAgICAgICAuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJh
dG9yKCkuc3RyaW5nKCkpOworfQorCisvLyBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IgImZv
by9iYXIiIC0+ICJmb28vYmFyIgorVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0
LCBTaG91bGRSZXR1cm5Vbm1vZGlmaWVkKSB7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRI
X1NFUF8gImJhciIsCisgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8g
ImJhciIpCisgICAgICAgICAgICAgICAgLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0
cmluZygpKTsKK30KKworVEVTVChEaXJlY3RvcnlUZXN0LCBSb290RGlyZWN0b3J5RXhpc3RzKSB7
CisjaWYgR1RFU1RfT1NfV0lORE9XUyAgLy8gV2UgYXJlIG9uIFdpbmRvd3MuCisgIGNoYXIgY3Vy
cmVudF9kcml2ZVtfTUFYX1BBVEhdOyAgLy8gTk9MSU5UCisgIGN1cnJlbnRfZHJpdmVbMF0gPSBz
dGF0aWNfY2FzdDxjaGFyPihfZ2V0ZHJpdmUoKSArICdBJyAtIDEpOworICBjdXJyZW50X2RyaXZl
WzFdID0gJzonOworICBjdXJyZW50X2RyaXZlWzJdID0gJ1xcJzsKKyAgY3VycmVudF9kcml2ZVsz
XSA9ICdcMCc7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKGN1cnJlbnRfZHJpdmUpLkRpcmVjdG9y
eUV4aXN0cygpKTsKKyNlbHNlCisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIvIikuRGlyZWN0b3J5
RXhpc3RzKCkpOworI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCit9CisKKyNpZiBHVEVTVF9P
U19XSU5ET1dTCitURVNUKERpcmVjdG9yeVRlc3QsIFJvb3RPZldyb25nRHJpdmVEb2VzTm90RXhp
c3RzKSB7CisgIGNvbnN0IGludCBzYXZlZF9kcml2ZV8gPSBfZ2V0ZHJpdmUoKTsKKyAgLy8gRmlu
ZCBhIGRyaXZlIHRoYXQgZG9lc24ndCBleGlzdC4gU3RhcnQgd2l0aCAnWicgdG8gYXZvaWQgY29t
bW9uIG9uZXMuCisgIGZvciAoY2hhciBkcml2ZSA9ICdaJzsgZHJpdmUgPj0gJ0EnOyBkcml2ZS0t
KQorICAgIGlmIChfY2hkcml2ZShkcml2ZSAtICdBJyArIDEpID09IC0xKSB7CisgICAgICBjaGFy
IG5vbl9kcml2ZVtfTUFYX1BBVEhdOyAgLy8gTk9MSU5UCisgICAgICBub25fZHJpdmVbMF0gPSBk
cml2ZTsKKyAgICAgIG5vbl9kcml2ZVsxXSA9ICc6JzsKKyAgICAgIG5vbl9kcml2ZVsyXSA9ICdc
XCc7CisgICAgICBub25fZHJpdmVbM10gPSAnXDAnOworICAgICAgRVhQRUNUX0ZBTFNFKEZpbGVQ
YXRoKG5vbl9kcml2ZSkuRGlyZWN0b3J5RXhpc3RzKCkpOworICAgICAgYnJlYWs7CisgICAgfQor
ICBfY2hkcml2ZShzYXZlZF9kcml2ZV8pOworfQorI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dT
CisKKyNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKy8vIFdpbmRvd3MgQ0UgX2RvZXNfIGNv
bnNpZGVyIGFuIGVtcHR5IGRpcmVjdG9yeSB0byBleGlzdC4KK1RFU1QoRGlyZWN0b3J5VGVzdCwg
RW1wdHlQYXRoRGlyZWN0b3J5RG9lc05vdEV4aXN0KSB7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0
aCgiIikuRGlyZWN0b3J5RXhpc3RzKCkpOworfQorI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKKworVEVTVChEaXJlY3RvcnlUZXN0LCBDdXJyZW50RGlyZWN0b3J5RXhpc3RzKSB7
CisjaWYgR1RFU1RfT1NfV0lORE9XUyAgLy8gV2UgYXJlIG9uIFdpbmRvd3MuCisjIGlmbmRlZiBf
V0lOMzJfQ0UgIC8vIFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlIGEgY3VycmVudCBkaXJlY3Rvcnku
CisKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi4iKS5EaXJlY3RvcnlFeGlzdHMoKSk7CisgIEVY
UEVDVF9UUlVFKEZpbGVQYXRoKCIuXFwiKS5EaXJlY3RvcnlFeGlzdHMoKSk7CisKKyMgZW5kaWYg
IC8vIF9XSU4zMl9DRQorI2Vsc2UKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi4iKS5EaXJlY3Rv
cnlFeGlzdHMoKSk7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIuLyIpLkRpcmVjdG9yeUV4aXN0
cygpKTsKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworfQorCisvLyAiZm9vL2JhciIgPT0g
Zm9vLy9iYXIiID09ICJmb28vLy9iYXIiCitURVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRpcGxlQ29u
c2VjdXRpdmVTZXBhcGFyYXRvcnNJbk1pZHN0cmluZykgeworICBFWFBFQ1RfRVEoImZvbyIgR1RF
U1RfUEFUSF9TRVBfICJiYXIiLAorICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFU
SF9TRVBfICJiYXIiKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8gImJhciIsCisgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RF
U1RfUEFUSF9TRVBfICJiYXIiKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8gImJhciIsCisgICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8gR1RFU1RfUEFUSF9TRVBfCisgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8g
ImJhciIpLnN0cmluZygpKTsKK30KKworLy8gIi9iYXIiID09IC8vYmFyIiA9PSAiLy8vYmFyIgor
VEVTVChOb3JtYWxpemVUZXN0LCBNdWx0aXBsZUNvbnNlY3V0aXZlU2VwYXBhcmF0b3JzQXRTdHJp
bmdTdGFydCkgeworICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAorICAgIEZpbGVQ
YXRoKEdURVNUX1BBVEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEoR1RFU1Rf
UEFUSF9TRVBfICJiYXIiLAorICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRI
X1NFUF8gImJhciIpLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQXyAiYmFy
IiwKKyAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BB
VEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOworfQorCisvLyAiZm9vLyIgPT0gZm9vLy8iID09ICJm
b28vLy8iCitURVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRpcGxlQ29uc2VjdXRpdmVTZXBhcGFyYXRv
cnNBdFN0cmluZ0VuZCkgeworICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAg
IEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXykuc3RyaW5nKCkpOworICBFWFBFQ1RfRVEo
ImZvbyIgR1RFU1RfUEFUSF9TRVBfLAorICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQ
XyBHVEVTVF9QQVRIX1NFUF8pLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BB
VEhfU0VQXywKKyAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9T
RVBfIEdURVNUX1BBVEhfU0VQXykuc3RyaW5nKCkpOworfQorCisjaWYgR1RFU1RfSEFTX0FMVF9Q
QVRIX1NFUF8KKworLy8gVGVzdHMgdGhhdCBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0
cmluZyBhcmUgbm9ybWFsaXplZAorLy8gcmVnYXJkbGVzcyBvZiB0aGVpciBjb21iaW5hdGlvbiAo
ZS5nLiAiZm9vXCIgPT0iZm9vL1wiID09CisvLyAiZm9vXFwvIikuCitURVNUKE5vcm1hbGl6ZVRl
c3QsIE1peEFsdGVybmF0ZVNlcGFyYXRvckF0U3RyaW5nRW5kKSB7CisgIEVYUEVDVF9FUSgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8sCisgICAgICAgICAgICBGaWxlUGF0aCgiZm9vLyIpLnN0cmluZygp
KTsKKyAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKKyAgICAgICAgICAgIEZpbGVQ
YXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiLyIpLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJm
b28iIEdURVNUX1BBVEhfU0VQXywKKyAgICAgICAgICAgIEZpbGVQYXRoKCJmb28vLyIgR1RFU1Rf
UEFUSF9TRVBfKS5zdHJpbmcoKSk7Cit9CisKKyNlbmRpZgorCitURVNUKEFzc2lnbm1lbnRPcGVy
YXRvclRlc3QsIERlZmF1bHRBc3NpZ25lZFRvTm9uRGVmYXVsdCkgeworICBGaWxlUGF0aCBkZWZh
dWx0X3BhdGg7CisgIEZpbGVQYXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgiKTsKKyAgbm9uX2Rl
ZmF1bHRfcGF0aCA9IGRlZmF1bHRfcGF0aDsKKyAgRVhQRUNUX0VRKCIiLCBub25fZGVmYXVsdF9w
YXRoLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCIiLCBkZWZhdWx0X3BhdGguc3RyaW5nKCkpOyAg
Ly8gUkhTIHZhciBpcyB1bmNoYW5nZWQuCit9CisKK1RFU1QoQXNzaWdubWVudE9wZXJhdG9yVGVz
dCwgTm9uRGVmYXVsdEFzc2lnbmVkVG9EZWZhdWx0KSB7CisgIEZpbGVQYXRoIG5vbl9kZWZhdWx0
X3BhdGgoInBhdGgiKTsKKyAgRmlsZVBhdGggZGVmYXVsdF9wYXRoOworICBkZWZhdWx0X3BhdGgg
PSBub25fZGVmYXVsdF9wYXRoOworICBFWFBFQ1RfRVEoInBhdGgiLCBkZWZhdWx0X3BhdGguc3Ry
aW5nKCkpOworICBFWFBFQ1RfRVEoInBhdGgiLCBub25fZGVmYXVsdF9wYXRoLnN0cmluZygpKTsg
IC8vIFJIUyB2YXIgaXMgdW5jaGFuZ2VkLgorfQorCitURVNUKEFzc2lnbm1lbnRPcGVyYXRvclRl
c3QsIENvbnN0QXNzaWduZWRUb05vbkNvbnN0KSB7CisgIGNvbnN0IEZpbGVQYXRoIGNvbnN0X2Rl
ZmF1bHRfcGF0aCgiY29uc3RfcGF0aCIpOworICBGaWxlUGF0aCBub25fZGVmYXVsdF9wYXRoKCJw
YXRoIik7CisgIG5vbl9kZWZhdWx0X3BhdGggPSBjb25zdF9kZWZhdWx0X3BhdGg7CisgIEVYUEVD
VF9FUSgiY29uc3RfcGF0aCIsIG5vbl9kZWZhdWx0X3BhdGguc3RyaW5nKCkpOworfQorCitjbGFz
cyBEaXJlY3RvcnlDcmVhdGlvblRlc3QgOiBwdWJsaWMgVGVzdCB7CisgcHJvdGVjdGVkOgorICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgdGVzdGRhdGFfcGF0aF8uU2V0KEZpbGVQYXRoKAor
ICAgICAgICBUZW1wRGlyKCkgKyBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmcoKSAr
CisgICAgICAgICJfZGlyZWN0b3J5X2NyZWF0aW9uIiBHVEVTVF9QQVRIX1NFUF8gInRlc3QiIEdU
RVNUX1BBVEhfU0VQXykpOworICAgIHRlc3RkYXRhX2ZpbGVfLlNldCh0ZXN0ZGF0YV9wYXRoXy5S
ZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKSk7CisKKyAgICB1bmlxdWVfZmlsZTBfLlNldChG
aWxlUGF0aDo6TWFrZUZpbGVOYW1lKHRlc3RkYXRhX3BhdGhfLCBGaWxlUGF0aCgidW5pcXVlIiks
CisgICAgICAgIDAsICJ0eHQiKSk7CisgICAgdW5pcXVlX2ZpbGUxXy5TZXQoRmlsZVBhdGg6Ok1h
a2VGaWxlTmFtZSh0ZXN0ZGF0YV9wYXRoXywgRmlsZVBhdGgoInVuaXF1ZSIpLAorICAgICAgICAx
LCAidHh0IikpOworCisgICAgcmVtb3ZlKHRlc3RkYXRhX2ZpbGVfLmNfc3RyKCkpOworICAgIHJl
bW92ZSh1bmlxdWVfZmlsZTBfLmNfc3RyKCkpOworICAgIHJlbW92ZSh1bmlxdWVfZmlsZTFfLmNf
c3RyKCkpOworICAgIHBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKKyAgfQor
CisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICByZW1vdmUodGVzdGRhdGFfZmlsZV8u
Y19zdHIoKSk7CisgICAgcmVtb3ZlKHVuaXF1ZV9maWxlMF8uY19zdHIoKSk7CisgICAgcmVtb3Zl
KHVuaXF1ZV9maWxlMV8uY19zdHIoKSk7CisgICAgcG9zaXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhf
LmNfc3RyKCkpOworICB9CisKKyAgdm9pZCBDcmVhdGVUZXh0RmlsZShjb25zdCBjaGFyKiBmaWxl
bmFtZSkgeworICAgIEZJTEUqIGYgPSBwb3NpeDo6Rk9wZW4oZmlsZW5hbWUsICJ3Iik7CisgICAg
ZnByaW50ZihmLCAidGV4dFxuIik7CisgICAgZmNsb3NlKGYpOworICB9CisKKyAgLy8gU3RyaW5n
cyByZXByZXNlbnRpbmcgYSBkaXJlY3RvcnkgYW5kIGEgZmlsZSwgd2l0aCBpZGVudGljYWwgcGF0
aHMKKyAgLy8gZXhjZXB0IGZvciB0aGUgdHJhaWxpbmcgc2VwYXJhdG9yIGNoYXJhY3RlciB0aGF0
IGRpc3RpbnF1aXNoZXMKKyAgLy8gYSBkaXJlY3RvcnkgbmFtZWQgJ3Rlc3QnIGZyb20gYSBmaWxl
IG5hbWVkICd0ZXN0Jy4gRXhhbXBsZSBuYW1lczoKKyAgRmlsZVBhdGggdGVzdGRhdGFfcGF0aF87
ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRpb24vdGVzdC8iCisgIEZpbGVQYXRoIHRlc3RkYXRh
X2ZpbGVfOyAgLy8gIi90bXAvZGlyZWN0b3J5X2NyZWF0aW9uL3Rlc3QiCisgIEZpbGVQYXRoIHVu
aXF1ZV9maWxlMF87ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRpb24vdGVzdC91bmlxdWUudHh0
IgorICBGaWxlUGF0aCB1bmlxdWVfZmlsZTFfOyAgLy8gIi90bXAvZGlyZWN0b3J5X2NyZWF0aW9u
L3Rlc3QvdW5pcXVlXzEudHh0IgorfTsKKworVEVTVF9GKERpcmVjdG9yeUNyZWF0aW9uVGVzdCwg
Q3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSkgeworICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFf
cGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkpIDw8IHRlc3RkYXRhX3BhdGhfLnN0cmluZygpOworICBF
WFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkp
OworICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlzdHMoKSk7Cit9CisK
K1RFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURpcmVjdG9yaWVzRm9yQWxyZWFk
eUV4aXN0aW5nUGF0aCkgeworICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfcGF0aF8uRGlyZWN0b3J5
RXhpc3RzKCkpIDw8IHRlc3RkYXRhX3BhdGhfLnN0cmluZygpOworICBFWFBFQ1RfVFJVRSh0ZXN0
ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOworICAvLyBDYWxsICdj
cmVhdGUnIGFnYWluLi4uIHNob3VsZCBzdGlsbCBzdWNjZWVkLgorICBFWFBFQ1RfVFJVRSh0ZXN0
ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOworfQorCitURVNUX0Yo
RGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0FuZFVuaXF1ZUZpbGVuYW1l
KSB7CisgIEZpbGVQYXRoIGZpbGVfcGF0aChGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFt
ZSh0ZXN0ZGF0YV9wYXRoXywKKyAgICAgIEZpbGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIpKTsKKyAg
RVhQRUNUX0VRKHVuaXF1ZV9maWxlMF8uc3RyaW5nKCksIGZpbGVfcGF0aC5zdHJpbmcoKSk7Cisg
IEVYUEVDVF9GQUxTRShmaWxlX3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8gZmls
ZSBub3QgdGhlcmUKKworICB0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2
ZWx5KCk7CisgIEVYUEVDVF9GQUxTRShmaWxlX3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkp
OyAgLy8gZmlsZSBzdGlsbCBub3QgdGhlcmUKKyAgQ3JlYXRlVGV4dEZpbGUoZmlsZV9wYXRoLmNf
c3RyKCkpOworICBFWFBFQ1RfVFJVRShmaWxlX3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkp
OworCisgIEZpbGVQYXRoIGZpbGVfcGF0aDIoRmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5h
bWUodGVzdGRhdGFfcGF0aF8sCisgICAgICBGaWxlUGF0aCgidW5pcXVlIiksICJ0eHQiKSk7Cisg
IEVYUEVDVF9FUSh1bmlxdWVfZmlsZTFfLnN0cmluZygpLCBmaWxlX3BhdGgyLnN0cmluZygpKTsK
KyAgRVhQRUNUX0ZBTFNFKGZpbGVfcGF0aDIuRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8g
ZmlsZSBub3QgdGhlcmUKKyAgQ3JlYXRlVGV4dEZpbGUoZmlsZV9wYXRoMi5jX3N0cigpKTsKKyAg
RVhQRUNUX1RSVUUoZmlsZV9wYXRoMi5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7Cit9CisKK1RF
U1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURpcmVjdG9yaWVzRmFpbCkgeworICAv
LyBmb3JjZSBhIGZhaWx1cmUgYnkgcHV0dGluZyBhIGZpbGUgd2hlcmUgd2Ugd2lsbCB0cnkgdG8g
Y3JlYXRlIGEgZGlyZWN0b3J5LgorICBDcmVhdGVUZXh0RmlsZSh0ZXN0ZGF0YV9maWxlXy5jX3N0
cigpKTsKKyAgRVhQRUNUX1RSVUUodGVzdGRhdGFfZmlsZV8uRmlsZU9yRGlyZWN0b3J5RXhpc3Rz
KCkpOworICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfZmlsZV8uRGlyZWN0b3J5RXhpc3RzKCkpOwor
ICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfZmlsZV8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVs
eSgpKTsKK30KKworVEVTVChOb0RpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlTm9EaXJlY3Rv
cmllc0ZvckRlZmF1bHRYbWxGaWxlKSB7CisgIGNvbnN0IEZpbGVQYXRoIHRlc3RfZGV0YWlsX3ht
bCgidGVzdF9kZXRhaWwueG1sIik7CisgIEVYUEVDVF9GQUxTRSh0ZXN0X2RldGFpbF94bWwuQ3Jl
YXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKTsKK30KKworVEVTVChGaWxlUGF0aFRlc3QsIERl
ZmF1bHRDb25zdHJ1Y3RvcikgeworICBGaWxlUGF0aCBmcDsKKyAgRVhQRUNUX0VRKCIiLCBmcC5z
dHJpbmcoKSk7Cit9CisKK1RFU1QoRmlsZVBhdGhUZXN0LCBDaGFyQW5kQ29weUNvbnN0cnVjdG9y
cykgeworICBjb25zdCBGaWxlUGF0aCBmcCgic3BpY3kiKTsKKyAgRVhQRUNUX0VRKCJzcGljeSIs
IGZwLnN0cmluZygpKTsKKworICBjb25zdCBGaWxlUGF0aCBmcF9jb3B5KGZwKTsKKyAgRVhQRUNU
X0VRKCJzcGljeSIsIGZwX2NvcHkuc3RyaW5nKCkpOworfQorCitURVNUKEZpbGVQYXRoVGVzdCwg
U3RyaW5nQ29uc3RydWN0b3IpIHsKKyAgY29uc3QgRmlsZVBhdGggZnAoc3RkOjpzdHJpbmcoImNp
ZGVyIikpOworICBFWFBFQ1RfRVEoImNpZGVyIiwgZnAuc3RyaW5nKCkpOworfQorCitURVNUKEZp
bGVQYXRoVGVzdCwgU2V0KSB7CisgIGNvbnN0IEZpbGVQYXRoIGFwcGxlKCJhcHBsZSIpOworICBG
aWxlUGF0aCBtYWMoIm1hYyIpOworICBtYWMuU2V0KGFwcGxlKTsgIC8vIEltcGxlbWVudCBTZXQo
KSBzaW5jZSBvdmVybG9hZGluZyBvcGVyYXRvcj0gaXMgZm9yYmlkZGVuLgorICBFWFBFQ1RfRVEo
ImFwcGxlIiwgbWFjLnN0cmluZygpKTsKKyAgRVhQRUNUX0VRKCJhcHBsZSIsIGFwcGxlLnN0cmlu
ZygpKTsKK30KKworVEVTVChGaWxlUGF0aFRlc3QsIFRvU3RyaW5nKSB7CisgIGNvbnN0IEZpbGVQ
YXRoIGZpbGUoImRyaW5rIik7CisgIEVYUEVDVF9FUSgiZHJpbmsiLCBmaWxlLnN0cmluZygpKTsK
K30KKworVEVTVChGaWxlUGF0aFRlc3QsIFJlbW92ZUV4dGVuc2lvbikgeworICBFWFBFQ1RfRVEo
ImFwcCIsIEZpbGVQYXRoKCJhcHAuY2MiKS5SZW1vdmVFeHRlbnNpb24oImNjIikuc3RyaW5nKCkp
OworICBFWFBFQ1RfRVEoImFwcCIsIEZpbGVQYXRoKCJhcHAuZXhlIikuUmVtb3ZlRXh0ZW5zaW9u
KCJleGUiKS5zdHJpbmcoKSk7CisgIEVYUEVDVF9FUSgiQVBQIiwgRmlsZVBhdGgoIkFQUC5FWEUi
KS5SZW1vdmVFeHRlbnNpb24oImV4ZSIpLnN0cmluZygpKTsKK30KKworVEVTVChGaWxlUGF0aFRl
c3QsIFJlbW92ZUV4dGVuc2lvbldoZW5UaGVyZUlzTm9FeHRlbnNpb24pIHsKKyAgRVhQRUNUX0VR
KCJhcHAiLCBGaWxlUGF0aCgiYXBwIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5zdHJpbmcoKSk7
Cit9CisKK1RFU1QoRmlsZVBhdGhUZXN0LCBJc0RpcmVjdG9yeSkgeworICBFWFBFQ1RfRkFMU0Uo
RmlsZVBhdGgoImNvbGEiKS5Jc0RpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgo
ImtvYWxhIiBHVEVTVF9QQVRIX1NFUF8pLklzRGlyZWN0b3J5KCkpOworI2lmIEdURVNUX0hBU19B
TFRfUEFUSF9TRVBfCisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJrb2FsYS8iKS5Jc0RpcmVjdG9y
eSgpKTsKKyNlbmRpZgorfQorCitURVNUKEZpbGVQYXRoVGVzdCwgSXNBYnNvbHV0ZVBhdGgpIHsK
KyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJpcyIgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIp
LklzQWJzb2x1dGVQYXRoKCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIiIpLklzQWJzb2x1
dGVQYXRoKCkpOworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgo
ImM6XFwiIEdURVNUX1BBVEhfU0VQXyAiaXNfbm90IgorICAgICAgICAgICAgICAgICAgICAgICBH
VEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIikuSXNBYnNvbHV0ZVBhdGgoKSk7CisgIEVYUEVDVF9G
QUxTRShGaWxlUGF0aCgiYzpmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuSXNBYnNvbHV0ZVBh
dGgoKSk7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJjOi8iIEdURVNUX1BBVEhfU0VQXyAiaXNf
bm90IgorICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIiku
SXNBYnNvbHV0ZVBhdGgoKSk7CisjZWxzZQorICBFWFBFQ1RfVFJVRShGaWxlUGF0aChHVEVTVF9Q
QVRIX1NFUF8gImlzX25vdCIgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIpCisgICAgICAgICAg
ICAgIC5Jc0Fic29sdXRlUGF0aCgpKTsKKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworfQor
CitURVNUKEZpbGVQYXRoVGVzdCwgSXNSb290RGlyZWN0b3J5KSB7CisjaWYgR1RFU1RfT1NfV0lO
RE9XUworICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiYTpcXCIpLklzUm9vdERpcmVjdG9yeSgpKTsK
KyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIlo6LyIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQ
RUNUX1RSVUUoRmlsZVBhdGgoImU6Ly8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9G
QUxTRShGaWxlUGF0aCgiIikuSXNSb290RGlyZWN0b3J5KCkpOworICBFWFBFQ1RfRkFMU0UoRmls
ZVBhdGgoImI6IikuSXNSb290RGlyZWN0b3J5KCkpOworICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgo
ImI6YSIpLklzUm9vdERpcmVjdG9yeSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCI4Oi8i
KS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiY3wvIikuSXNS
b290RGlyZWN0b3J5KCkpOworI2Vsc2UKKyAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi8iKS5Jc1Jv
b3REaXJlY3RvcnkoKSk7CisgIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIvLyIpLklzUm9vdERpcmVj
dG9yeSgpKTsKKyAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7
CisgIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiXFwiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisgIEVY
UEVDVF9GQUxTRShGaWxlUGF0aCgiL3giKS5Jc1Jvb3REaXJlY3RvcnkoKSk7CisjZW5kaWYKK30K
KworfSAgLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK30gIC8vIG5hbWVz
cGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9nb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzBiNWJkOWE1Y2Zj
NWJmZThjNjhhZjFiNjQ3ODk5ZTFmZWJkYTY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdC5weQpAQCAtMCww
ICsxLDYzNiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA1IEdv
b2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJV
bml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0IHRlc3QgZmlsdGVycy4KKworQSB1c2VyIGNhbiBzcGVj
aWZ5IHdoaWNoIHRlc3QocykgaW4gYSBHb29nbGUgVGVzdCBwcm9ncmFtIHRvIHJ1biB2aWEgZWl0
aGVyCit0aGUgR1RFU1RfRklMVEVSIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZSAtLWd0ZXN0
X2ZpbHRlciBmbGFnLgorVGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5IGJ5IGlu
dm9raW5nCitnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8gKGEgcHJvZ3JhbSB3cml0dGVuIHdp
dGggR29vZ2xlIFRlc3QpIHdpdGggZGlmZmVyZW50CitlbnZpcm9ubWVudHMgYW5kIGNvbW1hbmQg
bGluZSBmbGFncy4KKworTm90ZSB0aGF0IHRlc3Qgc2hhcmRpbmcgbWF5IGFsc28gaW5mbHVlbmNl
IHdoaWNoIHRlc3RzIGFyZSBmaWx0ZXJlZC4gVGhlcmVmb3JlLAord2UgdGVzdCB0aGF0IGhlcmUg
YWxzby4KKyIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHNldHMKK2ltcG9ydCBz
eXMKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKKyMgQ29uc3RhbnRzLgorCisjIENoZWNrcyBp
ZiB0aGlzIHBsYXRmb3JtIGNhbiBwYXNzIGVtcHR5IGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBj
aGlsZAorIyBwcm9jZXNzZXMuICBXZSBzZXQgYW4gZW52IHZhcmlhYmxlIHRvIGFuIGVtcHR5IHN0
cmluZyBhbmQgaW52b2tlIGEgcHl0aG9uCisjIHNjcmlwdCBpbiBhIHN1YnByb2Nlc3MgdG8gcHJp
bnQgd2hldGhlciB0aGUgdmFyaWFibGUgaXMgU1RJTEwgaW4KKyMgb3MuZW52aXJvbi4gIFdlIHRo
ZW4gdXNlICdldmFsJyB0byBwYXJzZSB0aGUgY2hpbGQncyBvdXRwdXQgc28gdGhhdCBhbgorIyBl
eGNlcHRpb24gaXMgdGhyb3duIGlmIHRoZSBpbnB1dCBpcyBhbnl0aGluZyBvdGhlciB0aGFuICdU
cnVlJyBub3IgJ0ZhbHNlJy4KK0NBTl9QQVNTX0VNUFRZX0VOViA9IEZhbHNlCitpZiBzeXMuZXhl
Y3V0YWJsZToKKyAgb3MuZW52aXJvblsnRU1QVFlfVkFSJ10gPSAnJworICBjaGlsZCA9IGd0ZXN0
X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKKyAgICAgIFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgJ2lt
cG9ydCBvczsgcHJpbnQgXCdFTVBUWV9WQVJcJyBpbiBvcy5lbnZpcm9uJ10pCisgIENBTl9QQVNT
X0VNUFRZX0VOViA9IGV2YWwoY2hpbGQub3V0cHV0KQorCisKKyMgQ2hlY2sgaWYgdGhpcyBwbGF0
Zm9ybSBjYW4gdW5zZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluIGNoaWxkIHByb2Nlc3Nlcy4K
KyMgV2Ugc2V0IGFuIGVudiB2YXJpYWJsZSB0byBhIG5vbi1lbXB0eSBzdHJpbmcsIHVuc2V0IGl0
LCBhbmQgaW52b2tlCisjIGEgcHl0aG9uIHNjcmlwdCBpbiBhIHN1YnByb2Nlc3MgdG8gcHJpbnQg
d2hldGhlciB0aGUgdmFyaWFibGUKKyMgaXMgTk8gTE9OR0VSIGluIG9zLmVudmlyb24uCisjIFdl
IHVzZSAnZXZhbCcgdG8gcGFyc2UgdGhlIGNoaWxkJ3Mgb3V0cHV0IHNvIHRoYXQgYW4gZXhjZXB0
aW9uCisjIGlzIHRocm93biBpZiB0aGUgaW5wdXQgaXMgbmVpdGhlciAnVHJ1ZScgbm9yICdGYWxz
ZScuCitDQU5fVU5TRVRfRU5WID0gRmFsc2UKK2lmIHN5cy5leGVjdXRhYmxlOgorICBvcy5lbnZp
cm9uWydVTlNFVF9WQVInXSA9ICdYJworICBkZWwgb3MuZW52aXJvblsnVU5TRVRfVkFSJ10KKyAg
Y2hpbGQgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgICBbc3lzLmV4ZWN1dGFi
bGUsICctYycsICdpbXBvcnQgb3M7IHByaW50IFwnVU5TRVRfVkFSXCcgbm90IGluIG9zLmVudmly
b24nCisgICAgICBdKQorICBDQU5fVU5TRVRfRU5WID0gZXZhbChjaGlsZC5vdXRwdXQpCisKKwor
IyBDaGVja3MgaWYgd2Ugc2hvdWxkIHRlc3Qgd2l0aCBhbiBlbXB0eSBmaWx0ZXIuIFRoaXMgZG9l
c24ndAorIyBtYWtlIHNlbnNlIG9uIHBsYXRmb3JtcyB0aGF0IGNhbm5vdCBwYXNzIGVtcHR5IGVu
diB2YXJpYWJsZXMgKFdpbjMyKQorIyBhbmQgb24gcGxhdGZvcm1zIHRoYXQgY2Fubm90IHVuc2V0
IHZhcmlhYmxlcyAoc2luY2Ugd2UgY2Fubm90IHRlbGwKKyMgdGhlIGRpZmZlcmVuY2UgYmV0d2Vl
biAiIiBhbmQgTlVMTCAtLSBCb3JsYW5kIGFuZCBTb2xhcmlzIDwgNS4xMCkKK0NBTl9URVNUX0VN
UFRZX0ZJTFRFUiA9IChDQU5fUEFTU19FTVBUWV9FTlYgYW5kIENBTl9VTlNFVF9FTlYpCisKKwor
IyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIHNwZWNpZnlpbmcgdGhlIHRlc3QgZmlsdGVy
cy4KK0ZJTFRFUl9FTlZfVkFSID0gJ0dURVNUX0ZJTFRFUicKKworIyBUaGUgZW52aXJvbm1lbnQg
dmFyaWFibGVzIGZvciB0ZXN0IHNoYXJkaW5nLgorVE9UQUxfU0hBUkRTX0VOVl9WQVIgPSAnR1RF
U1RfVE9UQUxfU0hBUkRTJworU0hBUkRfSU5ERVhfRU5WX1ZBUiA9ICdHVEVTVF9TSEFSRF9JTkRF
WCcKK1NIQVJEX1NUQVRVU19GSUxFX0VOVl9WQVIgPSAnR1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEUn
CisKKyMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciBzcGVjaWZ5aW5nIHRoZSB0ZXN0IGZpbHRl
cnMuCitGSUxURVJfRkxBRyA9ICdndGVzdF9maWx0ZXInCisKKyMgVGhlIGNvbW1hbmQgbGluZSBm
bGFnIGZvciBpbmNsdWRpbmcgZGlzYWJsZWQgdGVzdHMuCitBTFNPX1JVTl9ESVNBQkxFRF9URVNU
U19GTEFHID0gJ2d0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzJworCisjIENvbW1hbmQgdG8g
cnVuIHRoZSBnb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8gcHJvZ3JhbS4KK0NPTU1BTkQgPSBn
dGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ29vZ2xldGVzdC1maWx0ZXIt
dW5pdHRlc3RfJykKKworIyBSZWdleCBmb3IgZGV0ZXJtaW5pbmcgd2hldGhlciBwYXJhbWV0ZXJp
emVkIHRlc3RzIGFyZSBlbmFibGVkIGluIHRoZSBiaW5hcnkuCitQQVJBTV9URVNUX1JFR0VYID0g
cmUuY29tcGlsZShyJy9QYXJhbVRlc3QnKQorCisjIFJlZ2V4IGZvciBwYXJzaW5nIHRlc3QgY2Fz
ZSBuYW1lcyBmcm9tIEdvb2dsZSBUZXN0J3Mgb3V0cHV0LgorVEVTVF9DQVNFX1JFR0VYID0gcmUu
Y29tcGlsZShyJ15cW1wtK1xdIFxkKyB0ZXN0cz8gZnJvbSAoXHcrKC9cdyspPyknKQorCisjIFJl
Z2V4IGZvciBwYXJzaW5nIHRlc3QgbmFtZXMgZnJvbSBHb29nbGUgVGVzdCdzIG91dHB1dC4KK1RF
U1RfUkVHRVggPSByZS5jb21waWxlKHInXlxbXHMqUlVOXHMqXF0uKlwuKFx3KygvXHcrKT8pJykK
KworIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgdG8gdGVsbCBHb29nbGUgVGVzdCB0byBvdXRwdXQg
dGhlIGxpc3Qgb2YgdGVzdHMgaXQKKyMgd2lsbCBydW4uCitMSVNUX1RFU1RTX0ZMQUcgPSAnLS1n
dGVzdF9saXN0X3Rlc3RzJworCisjIEluZGljYXRlcyB3aGV0aGVyIEdvb2dsZSBUZXN0IHN1cHBv
cnRzIGRlYXRoIHRlc3RzLgorU1VQUE9SVFNfREVBVEhfVEVTVFMgPSAnSGFzRGVhdGhUZXN0JyBp
biBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgW0NPTU1BTkQsIExJU1RfVEVTVFNf
RkxBR10pLm91dHB1dAorCisjIEZ1bGwgbmFtZXMgb2YgYWxsIHRlc3RzIGluIGdvb2dsZXRlc3Qt
ZmlsdGVyLXVuaXR0ZXN0c18uCitQQVJBTV9URVNUUyA9IFsKKyAgICAnU2VxUC9QYXJhbVRlc3Qu
VGVzdFgvMCcsCisgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzEnLAorICAgICdTZXFQL1BhcmFt
VGVzdC5UZXN0WS8wJywKKyAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMScsCisgICAgJ1NlcVEv
UGFyYW1UZXN0LlRlc3RYLzAnLAorICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WC8xJywKKyAgICAn
U2VxUS9QYXJhbVRlc3QuVGVzdFkvMCcsCisgICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RZLzEnLAor
ICAgIF0KKworRElTQUJMRURfVEVTVFMgPSBbCisgICAgJ0JhclRlc3QuRElTQUJMRURfVGVzdEZv
dXInLAorICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rlc3RGaXZlJywKKyAgICAnQmF6VGVzdC5ESVNB
QkxFRF9UZXN0QycsCisgICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnLAorICAgICdESVNB
QkxFRF9Gb29iYXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywKKyAgICAnRElTQUJMRURfRm9vYmFyYmF6
VGVzdC5UZXN0QScsCisgICAgXQorCitpZiBTVVBQT1JUU19ERUFUSF9URVNUUzoKKyAgREVBVEhf
VEVTVFMgPSBbCisgICAgJ0hhc0RlYXRoVGVzdC5UZXN0MScsCisgICAgJ0hhc0RlYXRoVGVzdC5U
ZXN0MicsCisgICAgXQorZWxzZToKKyAgREVBVEhfVEVTVFMgPSBbXQorCisjIEFsbCB0aGUgbm9u
LWRpc2FibGVkIHRlc3RzLgorQUNUSVZFX1RFU1RTID0gWworICAgICdGb29UZXN0LkFiYycsCisg
ICAgJ0Zvb1Rlc3QuWHl6JywKKworICAgICdCYXJUZXN0LlRlc3RPbmUnLAorICAgICdCYXJUZXN0
LlRlc3RUd28nLAorICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCisKKyAgICAnQmF6VGVzdC5UZXN0
T25lJywKKyAgICAnQmF6VGVzdC5UZXN0QScsCisgICAgJ0JhelRlc3QuVGVzdEInLAorICAgIF0g
KyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTCisKK3BhcmFtX3Rlc3RzX3ByZXNlbnQgPSBOb25l
CisKKyMgVXRpbGl0aWVzLgorCitlbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkKKworCitkZWYg
U2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToKKyAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxlIHRv
ICd2YWx1ZSc7IHVuc2V0cyBpdCB3aGVuICd2YWx1ZScgaXMgTm9uZS4iIiIKKworICBpZiB2YWx1
ZSBpcyBub3QgTm9uZToKKyAgICBlbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKKyAgZWxpZiBlbnZf
dmFyIGluIGVudmlyb246CisgICAgZGVsIGVudmlyb25bZW52X3Zhcl0KKworCitkZWYgUnVuQW5k
UmV0dXJuT3V0cHV0KGFyZ3MgPSBOb25lKToKKyAgIiIiUnVucyB0aGUgdGVzdCBwcm9ncmFtIGFu
ZCByZXR1cm5zIGl0cyBvdXRwdXQuIiIiCisKKyAgcmV0dXJuIGd0ZXN0X3Rlc3RfdXRpbHMuU3Vi
cHJvY2VzcyhbQ09NTUFORF0gKyAoYXJncyBvciBbXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW52PWVudmlyb24pLm91dHB1dAorCisKK2RlZiBSdW5BbmRFeHRyYWN0
VGVzdExpc3QoYXJncyA9IE5vbmUpOgorICAiIiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0gYW5kIHJl
dHVybnMgaXRzIGV4aXQgY29kZSBhbmQgYSBsaXN0IG9mIHRlc3RzIHJ1bi4iIiIKKworICBwID0g
Z3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtDT01NQU5EXSArIChhcmdzIG9yIFtdKSwgZW52
PWVudmlyb24pCisgIHRlc3RzX3J1biA9IFtdCisgIHRlc3RfY2FzZSA9ICcnCisgIHRlc3QgPSAn
JworICBmb3IgbGluZSBpbiBwLm91dHB1dC5zcGxpdCgnXG4nKToKKyAgICBtYXRjaCA9IFRFU1Rf
Q0FTRV9SRUdFWC5tYXRjaChsaW5lKQorICAgIGlmIG1hdGNoIGlzIG5vdCBOb25lOgorICAgICAg
dGVzdF9jYXNlID0gbWF0Y2guZ3JvdXAoMSkKKyAgICBlbHNlOgorICAgICAgbWF0Y2ggPSBURVNU
X1JFR0VYLm1hdGNoKGxpbmUpCisgICAgICBpZiBtYXRjaCBpcyBub3QgTm9uZToKKyAgICAgICAg
dGVzdCA9IG1hdGNoLmdyb3VwKDEpCisgICAgICAgIHRlc3RzX3J1bi5hcHBlbmQodGVzdF9jYXNl
ICsgJy4nICsgdGVzdCkKKyAgcmV0dXJuICh0ZXN0c19ydW4sIHAuZXhpdF9jb2RlKQorCisKK2Rl
ZiBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LCBmdW5jdGlvbiwgKmFyZ3MsICoqa3dh
cmdzKToKKyAgIiIiUnVucyB0aGUgZ2l2ZW4gZnVuY3Rpb24gYW5kIGFyZ3VtZW50cyBpbiBhIG1v
ZGlmaWVkIGVudmlyb25tZW50LiIiIgorICB0cnk6CisgICAgb3JpZ2luYWxfZW52ID0gZW52aXJv
bi5jb3B5KCkKKyAgICBlbnZpcm9uLnVwZGF0ZShleHRyYV9lbnYpCisgICAgcmV0dXJuIGZ1bmN0
aW9uKCphcmdzLCAqKmt3YXJncykKKyAgZmluYWxseToKKyAgICBlbnZpcm9uLmNsZWFyKCkKKyAg
ICBlbnZpcm9uLnVwZGF0ZShvcmlnaW5hbF9lbnYpCisKKworZGVmIFJ1bldpdGhTaGFyZGluZyh0
b3RhbF9zaGFyZHMsIHNoYXJkX2luZGV4LCBjb21tYW5kKToKKyAgIiIiUnVucyBhIHRlc3QgcHJv
Z3JhbSBzaGFyZCBhbmQgcmV0dXJucyBleGl0IGNvZGUgYW5kIGEgbGlzdCBvZiB0ZXN0cyBydW4u
IiIiCisKKyAgZXh0cmFfZW52ID0ge1NIQVJEX0lOREVYX0VOVl9WQVI6IHN0cihzaGFyZF9pbmRl
eCksCisgICAgICAgICAgICAgICBUT1RBTF9TSEFSRFNfRU5WX1ZBUjogc3RyKHRvdGFsX3NoYXJk
cyl9CisgIHJldHVybiBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LCBSdW5BbmRFeHRy
YWN0VGVzdExpc3QsIGNvbW1hbmQpCisKKyMgVGhlIHVuaXQgdGVzdC4KKworCitjbGFzcyBHVGVz
dEZpbHRlclVuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJUZXN0cyB0
aGUgZW52IHZhcmlhYmxlIG9yIHRoZSBjb21tYW5kIGxpbmUgZmxhZyB0byBmaWx0ZXIgdGVzdHMu
IiIiCisKKyAgIyBVdGlsaXRpZXMuCisKKyAgZGVmIEFzc2VydFNldEVxdWFsKHNlbGYsIGxocywg
cmhzKToKKyAgICAiIiJBc3NlcnRzIHRoYXQgdHdvIHNldHMgYXJlIGVxdWFsLiIiIgorCisgICAg
Zm9yIGVsZW0gaW4gbGhzOgorICAgICAgc2VsZi5hc3NlcnRfKGVsZW0gaW4gcmhzLCAnJXMgaW4g
JXMnICUgKGVsZW0sIHJocykpCisKKyAgICBmb3IgZWxlbSBpbiByaHM6CisgICAgICBzZWxmLmFz
c2VydF8oZWxlbSBpbiBsaHMsICclcyBpbiAlcycgJSAoZWxlbSwgbGhzKSkKKworICBkZWYgQXNz
ZXJ0UGFydGl0aW9uSXNWYWxpZChzZWxmLCBzZXRfdmFyLCBsaXN0X29mX3NldHMpOgorICAgICIi
IkFzc2VydHMgdGhhdCBsaXN0X29mX3NldHMgaXMgYSB2YWxpZCBwYXJ0aXRpb24gb2Ygc2V0X3Zh
ci4iIiIKKworICAgIGZ1bGxfcGFydGl0aW9uID0gW10KKyAgICBmb3Igc2xpY2VfdmFyIGluIGxp
c3Rfb2Zfc2V0czoKKyAgICAgIGZ1bGxfcGFydGl0aW9uLmV4dGVuZChzbGljZV92YXIpCisgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oc2V0X3ZhciksIGxlbihmdWxsX3BhcnRpdGlvbikpCisgICAg
c2VsZi5hc3NlcnRFcXVhbChzZXRzLlNldChzZXRfdmFyKSwgc2V0cy5TZXQoZnVsbF9wYXJ0aXRp
b24pKQorCisgIGRlZiBBZGp1c3RGb3JQYXJhbWV0ZXJpemVkVGVzdHMoc2VsZiwgdGVzdHNfdG9f
cnVuKToKKyAgICAiIiJBZGp1c3QgdGVzdHNfdG9fcnVuIGluIGNhc2UgdmFsdWUgcGFyYW1ldGVy
aXplZCB0ZXN0cyBhcmUgZGlzYWJsZWQuIiIiCisKKyAgICBnbG9iYWwgcGFyYW1fdGVzdHNfcHJl
c2VudAorICAgIGlmIG5vdCBwYXJhbV90ZXN0c19wcmVzZW50OgorICAgICAgcmV0dXJuIGxpc3Qo
c2V0cy5TZXQodGVzdHNfdG9fcnVuKSAtIHNldHMuU2V0KFBBUkFNX1RFU1RTKSkKKyAgICBlbHNl
OgorICAgICAgcmV0dXJuIHRlc3RzX3RvX3J1bgorCisgIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwg
Z3Rlc3RfZmlsdGVyLCB0ZXN0c190b19ydW4pOgorICAgICIiIkNoZWNrcyB0aGF0IHRoZSBiaW5h
cnkgcnVucyBjb3JyZWN0IHNldCBvZiB0ZXN0cyBmb3IgYSBnaXZlbiBmaWx0ZXIuIiIiCisKKyAg
ICB0ZXN0c190b19ydW4gPSBzZWxmLkFkanVzdEZvclBhcmFtZXRlcml6ZWRUZXN0cyh0ZXN0c190
b19ydW4pCisKKyAgICAjIEZpcnN0LCB0ZXN0cyB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFi
bGUuCisKKyAgICAjIFdpbmRvd3MgcmVtb3ZlcyBlbXB0eSB2YXJpYWJsZXMgZnJvbSB0aGUgZW52
aXJvbm1lbnQgd2hlbiBwYXNzaW5nIGl0CisgICAgIyB0byBhIG5ldyBwcm9jZXNzLiAgVGhpcyBt
ZWFucyBpdCBpcyBpbXBvc3NpYmxlIHRvIHBhc3MgYW4gZW1wdHkgZmlsdGVyCisgICAgIyBpbnRv
IGEgcHJvY2VzcyB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuICBIb3dldmVyLCB3ZSBj
YW4gc3RpbGwKKyAgICAjIHRlc3QgdGhlIGNhc2Ugd2hlbiB0aGUgdmFyaWFibGUgaXMgbm90IHN1
cHBsaWVkIChpLmUuLCBndGVzdF9maWx0ZXIgaXMKKyAgICAjIE5vbmUpLgorICAgICMgcHlsaW50
OiBkaXNhYmxlLW1zZz1DNjQwMworICAgIGlmIENBTl9URVNUX0VNUFRZX0ZJTFRFUiBvciBndGVz
dF9maWx0ZXIgIT0gJyc6CisgICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIGd0ZXN0X2Zp
bHRlcikKKyAgICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0TGlzdCgpWzBdCisgICAg
ICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIE5vbmUpCisgICAgICBzZWxmLkFzc2VydFNldEVx
dWFsKHRlc3RzX3J1biwgdGVzdHNfdG9fcnVuKQorICAgICMgcHlsaW50OiBlbmFibGUtbXNnPUM2
NDAzCisKKyAgICAjIE5leHQsIHRlc3RzIHVzaW5nIHRoZSBjb21tYW5kIGxpbmUgZmxhZy4KKwor
ICAgIGlmIGd0ZXN0X2ZpbHRlciBpcyBOb25lOgorICAgICAgYXJncyA9IFtdCisgICAgZWxzZToK
KyAgICAgIGFyZ3MgPSBbJy0tJXM9JXMnICUgKEZJTFRFUl9GTEFHLCBndGVzdF9maWx0ZXIpXQor
CisgICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KGFyZ3MpWzBdCisgICAgc2Vs
Zi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIHRlc3RzX3RvX3J1bikKKworICBkZWYgUnVuQW5k
VmVyaWZ5V2l0aFNoYXJkaW5nKHNlbGYsIGd0ZXN0X2ZpbHRlciwgdG90YWxfc2hhcmRzLCB0ZXN0
c190b19ydW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz1Ob25lLCBjaGVj
a19leGl0XzA9RmFsc2UpOgorICAgICIiIkNoZWNrcyB0aGF0IGJpbmFyeSBydW5zIGNvcnJlY3Qg
dGVzdHMgZm9yIHRoZSBnaXZlbiBmaWx0ZXIgYW5kIHNoYXJkLgorCisgICAgUnVucyBhbGwgc2hh
cmRzIG9mIGdvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0XyB3aXRoIHRoZSBnaXZlbiBmaWx0ZXIs
IGFuZAorICAgIHZlcmlmaWVzIHRoYXQgdGhlIHJpZ2h0IHNldCBvZiB0ZXN0cyB3ZXJlIHJ1bi4g
VGhlIHVuaW9uIG9mIHRlc3RzIHJ1bgorICAgIG9uIGVhY2ggc2hhcmQgc2hvdWxkIGJlIGlkZW50
aWNhbCB0byB0ZXN0c190b19ydW4sIHdpdGhvdXQgZHVwbGljYXRlcy4KKyAgICBJZiBjaGVja19l
eGl0XzAsIC4KKworICAgIEFyZ3M6CisgICAgICBndGVzdF9maWx0ZXI6IEEgZmlsdGVyIHRvIGFw
cGx5IHRvIHRoZSB0ZXN0cy4KKyAgICAgIHRvdGFsX3NoYXJkczogQSB0b3RhbCBudW1iZXIgb2Yg
c2hhcmRzIHRvIHNwbGl0IHRlc3QgcnVuIGludG8uCisgICAgICB0ZXN0c190b19ydW46IEEgc2V0
IG9mIHRlc3RzIGV4cGVjdGVkIHRvIHJ1bi4KKyAgICAgIGFyZ3MgICA6ICAgICAgQXJndW1lbnRz
IHRvIHBhc3MgdG8gdGhlIHRvIHRoZSB0ZXN0IGJpbmFyeS4KKyAgICAgIGNoZWNrX2V4aXRfMDog
V2hlbiBzZXQgdG8gYSB0cnVlIHZhbHVlLCBtYWtlIHN1cmUgdGhhdCBhbGwgc2hhcmRzCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAwLgorICAgICIiIgorCisgICAgdGVzdHNfdG9fcnVuID0g
c2VsZi5BZGp1c3RGb3JQYXJhbWV0ZXJpemVkVGVzdHModGVzdHNfdG9fcnVuKQorCisgICAgIyBX
aW5kb3dzIHJlbW92ZXMgZW1wdHkgdmFyaWFibGVzIGZyb20gdGhlIGVudmlyb25tZW50IHdoZW4g
cGFzc2luZyBpdAorICAgICMgdG8gYSBuZXcgcHJvY2Vzcy4gIFRoaXMgbWVhbnMgaXQgaXMgaW1w
b3NzaWJsZSB0byBwYXNzIGFuIGVtcHR5IGZpbHRlcgorICAgICMgaW50byBhIHByb2Nlc3MgdXNp
bmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLiAgSG93ZXZlciwgd2UgY2FuIHN0aWxsCisgICAg
IyB0ZXN0IHRoZSBjYXNlIHdoZW4gdGhlIHZhcmlhYmxlIGlzIG5vdCBzdXBwbGllZCAoaS5lLiwg
Z3Rlc3RfZmlsdGVyIGlzCisgICAgIyBOb25lKS4KKyAgICAjIHB5bGludDogZGlzYWJsZS1tc2c9
QzY0MDMKKyAgICBpZiBDQU5fVEVTVF9FTVBUWV9GSUxURVIgb3IgZ3Rlc3RfZmlsdGVyICE9ICcn
OgorICAgICAgU2V0RW52VmFyKEZJTFRFUl9FTlZfVkFSLCBndGVzdF9maWx0ZXIpCisgICAgICBw
YXJ0aXRpb24gPSBbXQorICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgdG90YWxfc2hhcmRzKToKKyAg
ICAgICAgKHRlc3RzX3J1biwgZXhpdF9jb2RlKSA9IFJ1bldpdGhTaGFyZGluZyh0b3RhbF9zaGFy
ZHMsIGksIGFyZ3MpCisgICAgICAgIGlmIGNoZWNrX2V4aXRfMDoKKyAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDAsIGV4aXRfY29kZSkKKyAgICAgICAgcGFydGl0aW9uLmFwcGVuZCh0ZXN0c19y
dW4pCisKKyAgICAgIHNlbGYuQXNzZXJ0UGFydGl0aW9uSXNWYWxpZCh0ZXN0c190b19ydW4sIHBh
cnRpdGlvbikKKyAgICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgTm9uZSkKKyAgICAjIHB5
bGludDogZW5hYmxlLW1zZz1DNjQwMworCisgIGRlZiBSdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2Fi
bGVkKHNlbGYsIGd0ZXN0X2ZpbHRlciwgdGVzdHNfdG9fcnVuKToKKyAgICAiIiJDaGVja3MgdGhh
dCB0aGUgYmluYXJ5IHJ1bnMgY29ycmVjdCBzZXQgb2YgdGVzdHMgZm9yIHRoZSBnaXZlbiBmaWx0
ZXIuCisKKyAgICBSdW5zIGdvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0XyB3aXRoIHRoZSBnaXZl
biBmaWx0ZXIsIGFuZCBlbmFibGVzCisgICAgZGlzYWJsZWQgdGVzdHMuIFZlcmlmaWVzIHRoYXQg
dGhlIHJpZ2h0IHNldCBvZiB0ZXN0cyB3ZXJlIHJ1bi4KKworICAgIEFyZ3M6CisgICAgICBndGVz
dF9maWx0ZXI6IEEgZmlsdGVyIHRvIGFwcGx5IHRvIHRoZSB0ZXN0cy4KKyAgICAgIHRlc3RzX3Rv
X3J1bjogQSBzZXQgb2YgdGVzdHMgZXhwZWN0ZWQgdG8gcnVuLgorICAgICIiIgorCisgICAgdGVz
dHNfdG9fcnVuID0gc2VsZi5BZGp1c3RGb3JQYXJhbWV0ZXJpemVkVGVzdHModGVzdHNfdG9fcnVu
KQorCisgICAgIyBDb25zdHJ1Y3QgdGhlIGNvbW1hbmQgbGluZS4KKyAgICBhcmdzID0gWyctLSVz
JyAlIEFMU09fUlVOX0RJU0FCTEVEX1RFU1RTX0ZMQUddCisgICAgaWYgZ3Rlc3RfZmlsdGVyIGlz
IG5vdCBOb25lOgorICAgICAgYXJncy5hcHBlbmQoJy0tJXM9JXMnICUgKEZJTFRFUl9GTEFHLCBn
dGVzdF9maWx0ZXIpKQorCisgICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KGFy
Z3MpWzBdCisgICAgc2VsZi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIHRlc3RzX3RvX3J1bikK
KworICBkZWYgc2V0VXAoc2VsZik6CisgICAgIiIiU2V0cyB1cCB0ZXN0IGNhc2UuCisKKyAgICBE
ZXRlcm1pbmVzIHdoZXRoZXIgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZW5hYmxlZCBp
biB0aGUgYmluYXJ5IGFuZAorICAgIHNldHMgdGhlIGZsYWdzIGFjY29yZGluZ2x5LgorICAgICIi
IgorCisgICAgZ2xvYmFsIHBhcmFtX3Rlc3RzX3ByZXNlbnQKKyAgICBpZiBwYXJhbV90ZXN0c19w
cmVzZW50IGlzIE5vbmU6CisgICAgICBwYXJhbV90ZXN0c19wcmVzZW50ID0gUEFSQU1fVEVTVF9S
RUdFWC5zZWFyY2goCisgICAgICAgICAgUnVuQW5kUmV0dXJuT3V0cHV0KCkpIGlzIG5vdCBOb25l
CisKKyAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3Ioc2VsZik6CisgICAgIiIiVGVzdHMgdGhlIGJl
aGF2aW9yIG9mIG5vdCBzcGVjaWZ5aW5nIHRoZSBmaWx0ZXIuIiIiCisKKyAgICBzZWxmLlJ1bkFu
ZFZlcmlmeShOb25lLCBBQ1RJVkVfVEVTVFMpCisKKyAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3JX
aXRoU2hhcmRzKHNlbGYpOgorICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciB3aXRob3V0IHRoZSBm
aWx0ZXIsIHdpdGggc2hhcmRpbmcgZW5hYmxlZC4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5
V2l0aFNoYXJkaW5nKE5vbmUsIDEsIEFDVElWRV9URVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlm
eVdpdGhTaGFyZGluZyhOb25lLCAyLCBBQ1RJVkVfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRWZXJp
ZnlXaXRoU2hhcmRpbmcoTm9uZSwgbGVuKEFDVElWRV9URVNUUykgLSAxLCBBQ1RJVkVfVEVTVFMp
CisgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgbGVuKEFDVElWRV9URVNU
UyksIEFDVElWRV9URVNUUykKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhOb25l
LCBsZW4oQUNUSVZFX1RFU1RTKSArIDEsIEFDVElWRV9URVNUUykKKworICBkZWYgdGVzdEVtcHR5
RmlsdGVyKHNlbGYpOgorICAgICIiIlRlc3RzIGFuIGVtcHR5IGZpbHRlci4iIiIKKworICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KCcnLCBbXSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGlu
ZygnJywgMSwgW10pCisgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJycsIDIsIFtd
KQorCisgIGRlZiB0ZXN0QmFkRmlsdGVyKHNlbGYpOgorICAgICIiIlRlc3RzIGEgZmlsdGVyIHRo
YXQgbWF0Y2hlcyBub3RoaW5nLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0JhZEZpbHRl
cicsIFtdKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnQmFkRmlsdGVy
JywgW10pCisKKyAgZGVmIHRlc3RGdWxsTmFtZShzZWxmKToKKyAgICAiIiJUZXN0cyBmaWx0ZXJp
bmcgYnkgZnVsbCBuYW1lLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0Zvb1Rlc3QuWHl6
JywgWydGb29UZXN0Llh5eiddKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxl
ZCgnRm9vVGVzdC5YeXonLCBbJ0Zvb1Rlc3QuWHl6J10pCisgICAgc2VsZi5SdW5BbmRWZXJpZnlX
aXRoU2hhcmRpbmcoJ0Zvb1Rlc3QuWHl6JywgNSwgWydGb29UZXN0Llh5eiddKQorCisgIGRlZiB0
ZXN0VW5pdmVyc2FsRmlsdGVycyhzZWxmKToKKyAgICAiIiJUZXN0cyBmaWx0ZXJzIHRoYXQgbWF0
Y2ggZXZlcnl0aGluZy4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqJywgQUNUSVZFX1RF
U1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLionLCBBQ1RJVkVfVEVTVFMpCisgICAgc2Vs
Zi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJyouKicsIGxlbihBQ1RJVkVfVEVTVFMpIC0gMywg
QUNUSVZFX1RFU1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnKics
IEFDVElWRV9URVNUUyArIERJU0FCTEVEX1RFU1RTKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxs
b3dpbmdEaXNhYmxlZCgnKi4qJywgQUNUSVZFX1RFU1RTICsgRElTQUJMRURfVEVTVFMpCisKKyAg
ZGVmIHRlc3RGaWx0ZXJCeVRlc3RDYXNlKHNlbGYpOgorICAgICIiIlRlc3RzIGZpbHRlcmluZyBi
eSB0ZXN0IGNhc2UgbmFtZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdGb29UZXN0Lion
LCBbJ0Zvb1Rlc3QuQWJjJywgJ0Zvb1Rlc3QuWHl6J10pCisKKyAgICBCQVpfVEVTVFMgPSBbJ0Jh
elRlc3QuVGVzdE9uZScsICdCYXpUZXN0LlRlc3RBJywgJ0JhelRlc3QuVGVzdEInXQorICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KCdCYXpUZXN0LionLCBCQVpfVEVTVFMpCisgICAgc2VsZi5SdW5BbmRW
ZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdCYXpUZXN0LionLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCQVpfVEVTVFMgKyBbJ0JhelRlc3QuRElTQUJMRURfVGVzdEMnXSkK
KworICBkZWYgdGVzdEZpbHRlckJ5VGVzdChzZWxmKToKKyAgICAiIiJUZXN0cyBmaWx0ZXJpbmcg
YnkgdGVzdCBuYW1lLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyouVGVzdE9uZScsIFsn
QmFyVGVzdC5UZXN0T25lJywgJ0JhelRlc3QuVGVzdE9uZSddKQorCisgIGRlZiB0ZXN0RmlsdGVy
RGlzYWJsZWRUZXN0cyhzZWxmKToKKyAgICAiIiJTZWxlY3Qgb25seSB0aGUgZGlzYWJsZWQgdGVz
dHMgdG8gcnVuLiIiIgorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0RJU0FCTEVEX0Zvb2JhclRl
c3QuVGVzdDEnLCBbXSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0RJ
U0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbJ0RJU0FCTEVEX0Zvb2JhclRlc3QuVGVzdDEnXSkKKworICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KCcqRElTQUJMRURfKicsIFtdKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdE
aXNhYmxlZCgnKkRJU0FCTEVEXyonLCBESVNBQkxFRF9URVNUUykKKworICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KCcqLkRJU0FCTEVEXyonLCBbXSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5n
RGlzYWJsZWQoJyouRElTQUJMRURfKicsIFsKKyAgICAgICAgJ0JhclRlc3QuRElTQUJMRURfVGVz
dEZvdXInLAorICAgICAgICAnQmFyVGVzdC5ESVNBQkxFRF9UZXN0Rml2ZScsCisgICAgICAgICdC
YXpUZXN0LkRJU0FCTEVEX1Rlc3RDJywKKyAgICAgICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuRElT
QUJMRURfVGVzdDInLAorICAgICAgICBdKQorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0RJU0FC
TEVEXyonLCBbXSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0RJU0FC
TEVEXyonLCBbCisgICAgICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LlRlc3QxJywKKyAgICAgICAg
J0RJU0FCTEVEX0Zvb2JhclRlc3QuRElTQUJMRURfVGVzdDInLAorICAgICAgICAnRElTQUJMRURf
Rm9vYmFyYmF6VGVzdC5UZXN0QScsCisgICAgICAgIF0pCisKKyAgZGVmIHRlc3RXaWxkY2FyZElu
VGVzdENhc2VOYW1lKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5nIHdpbGRjYXJkIGluIHRoZSB0
ZXN0IGNhc2UgbmFtZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqYSouKicsIFsKKyAg
ICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCisgICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAorICAg
ICAgICAnQmFyVGVzdC5UZXN0VGhyZWUnLAorCisgICAgICAgICdCYXpUZXN0LlRlc3RPbmUnLAor
ICAgICAgICAnQmF6VGVzdC5UZXN0QScsCisgICAgICAgICdCYXpUZXN0LlRlc3RCJywgXSArIERF
QVRIX1RFU1RTICsgUEFSQU1fVEVTVFMpCisKKyAgZGVmIHRlc3RXaWxkY2FyZEluVGVzdE5hbWUo
c2VsZik6CisgICAgIiIiVGVzdHMgdXNpbmcgd2lsZGNhcmQgaW4gdGhlIHRlc3QgbmFtZS4iIiIK
KworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLipBKicsIFsnRm9vVGVzdC5BYmMnLCAnQmF6VGVz
dC5UZXN0QSddKQorCisgIGRlZiB0ZXN0RmlsdGVyV2l0aG91dERvdChzZWxmKToKKyAgICAiIiJU
ZXN0cyBhIGZpbHRlciB0aGF0IGhhcyBubyAnLicgaW4gaXQuIiIiCisKKyAgICBzZWxmLlJ1bkFu
ZFZlcmlmeSgnKnoqJywgWworICAgICAgICAnRm9vVGVzdC5YeXonLAorCisgICAgICAgICdCYXpU
ZXN0LlRlc3RPbmUnLAorICAgICAgICAnQmF6VGVzdC5UZXN0QScsCisgICAgICAgICdCYXpUZXN0
LlRlc3RCJywKKyAgICAgICAgXSkKKworICBkZWYgdGVzdFR3b1BhdHRlcm5zKHNlbGYpOgorICAg
ICIiIlRlc3RzIGZpbHRlcnMgdGhhdCBjb25zaXN0IG9mIHR3byBwYXR0ZXJucy4iIiIKKworICAg
IHNlbGYuUnVuQW5kVmVyaWZ5KCdGb28qLio6KkEqJywgWworICAgICAgICAnRm9vVGVzdC5BYmMn
LAorICAgICAgICAnRm9vVGVzdC5YeXonLAorCisgICAgICAgICdCYXpUZXN0LlRlc3RBJywKKyAg
ICAgICAgXSkKKworICAgICMgQW4gZW1wdHkgcGF0dGVybiArIGEgbm9uLWVtcHR5IG9uZQorICAg
IHNlbGYuUnVuQW5kVmVyaWZ5KCc6KkEqJywgWydGb29UZXN0LkFiYycsICdCYXpUZXN0LlRlc3RB
J10pCisKKyAgZGVmIHRlc3RUaHJlZVBhdHRlcm5zKHNlbGYpOgorICAgICIiIlRlc3RzIGZpbHRl
cnMgdGhhdCBjb25zaXN0IG9mIHRocmVlIHBhdHRlcm5zLiIiIgorCisgICAgc2VsZi5SdW5BbmRW
ZXJpZnkoJypvbyo6KkEqOipPbmUnLCBbCisgICAgICAgICdGb29UZXN0LkFiYycsCisgICAgICAg
ICdGb29UZXN0Llh5eicsCisKKyAgICAgICAgJ0JhclRlc3QuVGVzdE9uZScsCisKKyAgICAgICAg
J0JhelRlc3QuVGVzdE9uZScsCisgICAgICAgICdCYXpUZXN0LlRlc3RBJywKKyAgICAgICAgXSkK
KworICAgICMgVGhlIDJuZCBwYXR0ZXJuIGlzIGVtcHR5LgorICAgIHNlbGYuUnVuQW5kVmVyaWZ5
KCcqb28qOjoqT25lJywgWworICAgICAgICAnRm9vVGVzdC5BYmMnLAorICAgICAgICAnRm9vVGVz
dC5YeXonLAorCisgICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAorCisgICAgICAgICdCYXpUZXN0
LlRlc3RPbmUnLAorICAgICAgICBdKQorCisgICAgIyBUaGUgbGFzdCAyIHBhdHRlcm5zIGFyZSBl
bXB0eS4KKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKm9vKjo6JywgWworICAgICAgICAnRm9vVGVz
dC5BYmMnLAorICAgICAgICAnRm9vVGVzdC5YeXonLAorICAgICAgICBdKQorCisgIGRlZiB0ZXN0
TmVnYXRpdmVGaWx0ZXJzKHNlbGYpOgorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLUJhelRlc3Qu
VGVzdE9uZScsIFsKKyAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKKyAgICAgICAgJ0Zvb1Rlc3QuWHl6
JywKKworICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKKyAgICAgICAgJ0JhclRlc3QuVGVzdFR3
bycsCisgICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCisKKyAgICAgICAgJ0JhelRlc3QuVGVz
dEEnLAorICAgICAgICAnQmF6VGVzdC5UZXN0QicsCisgICAgICAgIF0gKyBERUFUSF9URVNUUyAr
IFBBUkFNX1RFU1RTKQorCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoJyotRm9vVGVzdC5BYmM6QmF6
VGVzdC4qJywgWworICAgICAgICAnRm9vVGVzdC5YeXonLAorCisgICAgICAgICdCYXJUZXN0LlRl
c3RPbmUnLAorICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKKyAgICAgICAgJ0JhclRlc3QuVGVz
dFRocmVlJywKKyAgICAgICAgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMpCisKKyAgICBz
ZWxmLlJ1bkFuZFZlcmlmeSgnQmFyVGVzdC4qLUJhclRlc3QuVGVzdE9uZScsIFsKKyAgICAgICAg
J0JhclRlc3QuVGVzdFR3bycsCisgICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCisgICAgICAg
IF0pCisKKyAgICAjIFRlc3RzIHdpdGhvdXQgbGVhZGluZyAnKicuCisgICAgc2VsZi5SdW5BbmRW
ZXJpZnkoJy1Gb29UZXN0LkFiYzpGb29UZXN0Llh5ejpCYXpUZXN0LionLCBbCisgICAgICAgICdC
YXJUZXN0LlRlc3RPbmUnLAorICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKKyAgICAgICAgJ0Jh
clRlc3QuVGVzdFRocmVlJywKKyAgICAgICAgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMp
CisKKyAgICAjIFZhbHVlIHBhcmFtZXRlcml6ZWQgdGVzdHMuCisgICAgc2VsZi5SdW5BbmRWZXJp
ZnkoJyovKicsIFBBUkFNX1RFU1RTKQorCisgICAgIyBWYWx1ZSBwYXJhbWV0ZXJpemVkIHRlc3Rz
IGZpbHRlcmluZyBieSB0aGUgc2VxdWVuY2UgbmFtZS4KKyAgICBzZWxmLlJ1bkFuZFZlcmlmeSgn
U2VxUC8qJywgWworICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMCcsCisgICAgICAgICdT
ZXFQL1BhcmFtVGVzdC5UZXN0WC8xJywKKyAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzAn
LAorICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMScsCisgICAgICAgIF0pCisKKyAgICAj
IFZhbHVlIHBhcmFtZXRlcml6ZWQgdGVzdHMgZmlsdGVyaW5nIGJ5IHRoZSB0ZXN0IG5hbWUuCisg
ICAgc2VsZi5SdW5BbmRWZXJpZnkoJyovMCcsIFsKKyAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRl
c3RYLzAnLAorICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMCcsCisgICAgICAgICdTZXFR
L1BhcmFtVGVzdC5UZXN0WC8wJywKKyAgICAgICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RZLzAnLAor
ICAgICAgICBdKQorCisgIGRlZiB0ZXN0RmxhZ092ZXJyaWRlc0VudlZhcihzZWxmKToKKyAgICAi
IiJUZXN0cyB0aGF0IHRoZSBmaWx0ZXIgZmxhZyBvdmVycmlkZXMgdGhlIGZpbHRlcmluZyBlbnYu
IHZhcmlhYmxlLiIiIgorCisgICAgU2V0RW52VmFyKEZJTFRFUl9FTlZfVkFSLCAnRm9vKicpCisg
ICAgYXJncyA9IFsnLS0lcz0lcycgJSAoRklMVEVSX0ZMQUcsICcqT25lJyldCisgICAgdGVzdHNf
cnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KGFyZ3MpWzBdCisgICAgU2V0RW52VmFyKEZJTFRF
Ul9FTlZfVkFSLCBOb25lKQorCisgICAgc2VsZi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIFsn
QmFyVGVzdC5UZXN0T25lJywgJ0JhelRlc3QuVGVzdE9uZSddKQorCisgIGRlZiB0ZXN0U2hhcmRT
dGF0dXNGaWxlSXNDcmVhdGVkKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgdGhlIHNoYXJkIGZp
bGUgaXMgY3JlYXRlZCBpZiBzcGVjaWZpZWQgaW4gdGhlIGVudmlyb25tZW50LiIiIgorCisgICAg
c2hhcmRfc3RhdHVzX2ZpbGUgPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1w
RGlyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYXJkX3N0YXR1
c19maWxlJykKKyAgICBzZWxmLmFzc2VydF8obm90IG9zLnBhdGguZXhpc3RzKHNoYXJkX3N0YXR1
c19maWxlKSkKKworICAgIGV4dHJhX2VudiA9IHtTSEFSRF9TVEFUVVNfRklMRV9FTlZfVkFSOiBz
aGFyZF9zdGF0dXNfZmlsZX0KKyAgICB0cnk6CisgICAgICBJbnZva2VXaXRoTW9kaWZpZWRFbnYo
ZXh0cmFfZW52LCBSdW5BbmRSZXR1cm5PdXRwdXQpCisgICAgZmluYWxseToKKyAgICAgIHNlbGYu
YXNzZXJ0Xyhvcy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkpCisgICAgICBvcy5yZW1v
dmUoc2hhcmRfc3RhdHVzX2ZpbGUpCisKKyAgZGVmIHRlc3RTaGFyZFN0YXR1c0ZpbGVJc0NyZWF0
ZWRXaXRoTGlzdFRlc3RzKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgdGhlIHNoYXJkIGZpbGUg
aXMgY3JlYXRlZCB3aXRoIHRoZSAibGlzdF90ZXN0cyIgZmxhZy4iIiIKKworICAgIHNoYXJkX3N0
YXR1c19maWxlID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGFyZF9zdGF0dXNfZmlsZTIn
KQorICAgIHNlbGYuYXNzZXJ0Xyhub3Qgb3MucGF0aC5leGlzdHMoc2hhcmRfc3RhdHVzX2ZpbGUp
KQorCisgICAgZXh0cmFfZW52ID0ge1NIQVJEX1NUQVRVU19GSUxFX0VOVl9WQVI6IHNoYXJkX3N0
YXR1c19maWxlfQorICAgIHRyeToKKyAgICAgIG91dHB1dCA9IEludm9rZVdpdGhNb2RpZmllZEVu
dihleHRyYV9lbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVuQW5k
UmV0dXJuT3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtMSVNU
X1RFU1RTX0ZMQUddKQorICAgIGZpbmFsbHk6CisgICAgICAjIFRoaXMgYXNzZXJ0aW9uIGVuc3Vy
ZXMgdGhhdCBHb29nbGUgVGVzdCBlbnVtZXJhdGVkIHRoZSB0ZXN0cyBhcworICAgICAgIyBvcHBv
c2VkIHRvIHJ1bm5pbmcgdGhlbS4KKyAgICAgIHNlbGYuYXNzZXJ0XygnWz09PT09PT09PT1dJyBu
b3QgaW4gb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIG91dHB1dCBkdXJp
bmcgdGVzdCBlbnVtZXJhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAnUGxlYXNlIGVuc3Vy
ZSB0aGF0IExJU1RfVEVTVFNfRkxBRyBpcyBhc3NpZ25lZCB0aGVcbicKKyAgICAgICAgICAgICAg
ICAgICAnY29ycmVjdCBmbGFnIHZhbHVlIGZvciBsaXN0aW5nIEdvb2dsZSBUZXN0IHRlc3RzLicp
CisKKyAgICAgIHNlbGYuYXNzZXJ0Xyhvcy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkp
CisgICAgICBvcy5yZW1vdmUoc2hhcmRfc3RhdHVzX2ZpbGUpCisKKyAgaWYgU1VQUE9SVFNfREVB
VEhfVEVTVFM6CisgICAgZGVmIHRlc3RTaGFyZGluZ1dvcmtzV2l0aERlYXRoVGVzdHMoc2VsZik6
CisgICAgICAiIiJUZXN0cyBpbnRlZ3JhdGlvbiB3aXRoIGRlYXRoIHRlc3RzIGFuZCBzaGFyZGlu
Zy4iIiIKKworICAgICAgZ3Rlc3RfZmlsdGVyID0gJ0hhc0RlYXRoVGVzdC4qOlNlcVAvKicKKyAg
ICAgIGV4cGVjdGVkX3Rlc3RzID0gWworICAgICAgICAgICdIYXNEZWF0aFRlc3QuVGVzdDEnLAor
ICAgICAgICAgICdIYXNEZWF0aFRlc3QuVGVzdDInLAorCisgICAgICAgICAgJ1NlcVAvUGFyYW1U
ZXN0LlRlc3RYLzAnLAorICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8xJywKKyAgICAg
ICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFkvMCcsCisgICAgICAgICAgJ1NlcVAvUGFyYW1UZXN0
LlRlc3RZLzEnLAorICAgICAgICAgIF0KKworICAgICAgZm9yIGZsYWcgaW4gWyctLWd0ZXN0X2Rl
YXRoX3Rlc3Rfc3R5bGU9dGhyZWFkc2FmZScsCisgICAgICAgICAgICAgICAgICAgJy0tZ3Rlc3Rf
ZGVhdGhfdGVzdF9zdHlsZT1mYXN0J106CisgICAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNo
YXJkaW5nKGd0ZXN0X2ZpbHRlciwgMywgZXhwZWN0ZWRfdGVzdHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2V4aXRfMD1UcnVlLCBhcmdzPVtmbGFnXSkKKyAg
ICAgICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoZ3Rlc3RfZmlsdGVyLCA1LCBleHBl
Y3RlZF90ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tf
ZXhpdF8wPVRydWUsIGFyZ3M9W2ZsYWddKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgor
ICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWZpbHRlci11bml0dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtZmlsdGVyLXVuaXR0ZXN0Xy5jYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kMzM1YjYwMzkxZDFkNDY4YTQxMTYxYjM4YzE0ZWNjYmYxZDEzODA1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWZpbHRlci11bml0
dGVzdF8uY2MKQEAgLTAsMCArMSwxMzcgQEAKKy8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5j
LgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworCisvLyBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0IHRlc3QgZmls
dGVycy4KKy8vCisvLyBBIHVzZXIgY2FuIHNwZWNpZnkgd2hpY2ggdGVzdChzKSBpbiBhIEdvb2ds
ZSBUZXN0IHByb2dyYW0gdG8gcnVuIHZpYQorLy8gZWl0aGVyIHRoZSBHVEVTVF9GSUxURVIgZW52
aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlIC0tZ3Rlc3RfZmlsdGVyCisvLyBmbGFnLiAgVGhpcyBp
cyB1c2VkIGZvciB0ZXN0aW5nIHN1Y2ggZnVuY3Rpb25hbGl0eS4KKy8vCisvLyBUaGUgcHJvZ3Jh
bSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRlc3QuICBEb24ndCBydW4gaXQK
Ky8vIGRpcmVjdGx5LgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsK
KworLy8gVGVzdCBjYXNlIEZvb1Rlc3QuCisKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7Cit9OworCitURVNUX0YoRm9vVGVzdCwgQWJjKSB7Cit9CisKK1RFU1RfRihGb29U
ZXN0LCBYeXopIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKKy8vIFRl
c3QgY2FzZSBCYXJUZXN0LgorCitURVNUKEJhclRlc3QsIFRlc3RPbmUpIHsKK30KKworVEVTVChC
YXJUZXN0LCBUZXN0VHdvKSB7Cit9CisKK1RFU1QoQmFyVGVzdCwgVGVzdFRocmVlKSB7Cit9CisK
K1RFU1QoQmFyVGVzdCwgRElTQUJMRURfVGVzdEZvdXIpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3Rl
ZCBmYWlsdXJlLiI7Cit9CisKK1RFU1QoQmFyVGVzdCwgRElTQUJMRURfVGVzdEZpdmUpIHsKKyAg
RkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKKy8vIFRlc3QgY2FzZSBCYXpUZXN0
LgorCitURVNUKEJhelRlc3QsIFRlc3RPbmUpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWls
dXJlLiI7Cit9CisKK1RFU1QoQmF6VGVzdCwgVGVzdEEpIHsKK30KKworVEVTVChCYXpUZXN0LCBU
ZXN0QikgeworfQorCitURVNUKEJhelRlc3QsIERJU0FCTEVEX1Rlc3RDKSB7CisgIEZBSUwoKSA8
PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOworfQorCisvLyBUZXN0IGNhc2UgSGFzRGVhdGhUZXN0CisK
K1RFU1QoSGFzRGVhdGhUZXN0LCBUZXN0MSkgeworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVE
KGV4aXQoMSksICIuKiIpOworfQorCisvLyBXZSBuZWVkIGF0IGxlYXN0IHR3byBkZWF0aCB0ZXN0
cyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgYWxsIGRlYXRoIHRlc3RzCisvLyBhcmVuJ3Qgb24gdGhl
IGZpcnN0IHNoYXJkLgorVEVTVChIYXNEZWF0aFRlc3QsIFRlc3QyKSB7CisgIEVYUEVDVF9ERUFU
SF9JRl9TVVBQT1JURUQoZXhpdCgxKSwgIi4qIik7Cit9CisKKy8vIFRlc3QgY2FzZSBGb29iYXJU
ZXN0CisKK1RFU1QoRElTQUJMRURfRm9vYmFyVGVzdCwgVGVzdDEpIHsKKyAgRkFJTCgpIDw8ICJF
eHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKK1RFU1QoRElTQUJMRURfRm9vYmFyVGVzdCwgRElTQUJM
RURfVGVzdDIpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKKy8vIFRl
c3QgY2FzZSBGb29iYXJiYXpUZXN0CisKK1RFU1QoRElTQUJMRURfRm9vYmFyYmF6VGVzdCwgVGVz
dEEpIHsKKyAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Cit9CisKK2NsYXNzIFBhcmFt
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4geworfTsKKworVEVTVF9Q
KFBhcmFtVGVzdCwgVGVzdFgpIHsKK30KKworVEVTVF9QKFBhcmFtVGVzdCwgVGVzdFkpIHsKK30K
KworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxUCwgUGFyYW1UZXN0LCB0ZXN0aW5nOjpWYWx1
ZXMoMSwgMikpOworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxUSwgUGFyYW1UZXN0LCB0ZXN0
aW5nOjpWYWx1ZXMoNSwgNikpOworCit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIgKiphcmd2KSB7CisgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFy
Z3YpOworCisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtanNvbi1vdXRmaWxlcy10ZXN0LnB5IGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWpzb24tb3V0ZmlsZXMtdGVz
dC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jOTliZTQ4ZThhYzM2NTA5ZWQzMmVhMmZiOGU0ZmExZWE3ZmM4MzY0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LWpzb24tb3V0ZmlsZXMtdGVzdC5weQpAQCAtMCwwICsxLDE2MiBAQAorIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCisjIENvcHlyaWdodCAyMDE4LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVW5pdCB0ZXN0IGZvciB0aGUgZ3Rlc3Rf
anNvbl9vdXRwdXQgbW9kdWxlLiIiIgorCitpbXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQg
Z3Rlc3RfanNvbl90ZXN0X3V0aWxzCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitHVEVTVF9P
VVRQVVRfU1VCRElSID0gJ2pzb25fb3V0ZmlsZXMnCitHVEVTVF9PVVRQVVRfMV9URVNUID0gJ2d0
ZXN0X3htbF9vdXRmaWxlMV90ZXN0XycKK0dURVNUX09VVFBVVF8yX1RFU1QgPSAnZ3Rlc3RfeG1s
X291dGZpbGUyX3Rlc3RfJworCitFWFBFQ1RFRF8xID0geworICAgIHUndGVzdHMnOiAxLAorICAg
IHUnZmFpbHVyZXMnOiAwLAorICAgIHUnZGlzYWJsZWQnOiAwLAorICAgIHUnZXJyb3JzJzogMCwK
KyAgICB1J3RpbWUnOiB1JyonLAorICAgIHUndGltZXN0YW1wJzogdScqJywKKyAgICB1J25hbWUn
OiB1J0FsbFRlc3RzJywKKyAgICB1J3Rlc3RzdWl0ZXMnOiBbeworICAgICAgICB1J25hbWUnOiB1
J1Byb3BlcnR5T25lJywKKyAgICAgICAgdSd0ZXN0cyc6IDEsCisgICAgICAgIHUnZmFpbHVyZXMn
OiAwLAorICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgdSdlcnJvcnMnOiAwLAorICAg
ICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICB1J3Rlc3RzdWl0ZSc6IFt7CisgICAgICAgICAg
ICB1J25hbWUnOiB1J1Rlc3RTb21lUHJvcGVydGllcycsCisgICAgICAgICAgICB1J3N0YXR1cyc6
IHUnUlVOJywKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J2NsYXNz
bmFtZSc6IHUnUHJvcGVydHlPbmUnLAorICAgICAgICAgICAgdSdTZXRVcFByb3AnOiB1JzEnLAor
ICAgICAgICAgICAgdSdUZXN0U29tZVByb3BlcnR5JzogdScxJywKKyAgICAgICAgICAgIHUnVGVh
ckRvd25Qcm9wJzogdScxJywKKyAgICAgICAgfV0sCisgICAgfV0sCit9CisKK0VYUEVDVEVEXzIg
PSB7CisgICAgdSd0ZXN0cyc6IDEsCisgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgdSdkaXNhYmxl
ZCc6IDAsCisgICAgdSdlcnJvcnMnOiAwLAorICAgIHUndGltZSc6IHUnKicsCisgICAgdSd0aW1l
c3RhbXAnOiB1JyonLAorICAgIHUnbmFtZSc6IHUnQWxsVGVzdHMnLAorICAgIHUndGVzdHN1aXRl
cyc6IFt7CisgICAgICAgIHUnbmFtZSc6IHUnUHJvcGVydHlUd28nLAorICAgICAgICB1J3Rlc3Rz
JzogMSwKKyAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgIHUnZGlzYWJsZWQnOiAwLAor
ICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgIHUn
dGVzdHN1aXRlJzogW3sKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnVGVzdFNvbWVQcm9wZXJ0aWVz
JywKKyAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAgdSd0aW1lJzog
dScqJywKKyAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdQcm9wZXJ0eVR3bycsCisgICAgICAg
ICAgICB1J1NldFVwUHJvcCc6IHUnMicsCisgICAgICAgICAgICB1J1Rlc3RTb21lUHJvcGVydHkn
OiB1JzInLAorICAgICAgICAgICAgdSdUZWFyRG93blByb3AnOiB1JzInLAorICAgICAgICB9XSwK
KyAgICB9XSwKK30KKworCitjbGFzcyBHVGVzdEpzb25PdXRGaWxlc1Rlc3QoZ3Rlc3RfdGVzdF91
dGlscy5UZXN0Q2FzZSk6CisgICIiIlVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyBKU09OIG91
dHB1dCBmdW5jdGlvbmFsaXR5LiIiIgorCisgIGRlZiBzZXRVcChzZWxmKToKKyAgICAjIFdlIHdh
bnQgdGhlIHRyYWlsaW5nICcvJyB0aGF0IHRoZSBsYXN0ICIiIHByb3ZpZGVzIGluIG9zLnBhdGgu
am9pbiwgZm9yCisgICAgIyB0ZWxsaW5nIEdvb2dsZSBUZXN0IHRvIGNyZWF0ZSBhbiBvdXRwdXQg
ZGlyZWN0b3J5IGluc3RlYWQgb2YgYSBzaW5nbGUgZmlsZQorICAgICMgZm9yIHhtbCBvdXRwdXQu
CisgICAgc2VsZi5vdXRwdXRfZGlyXyA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdl
dFRlbXBEaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURVNUX09V
VFBVVF9TVUJESVIsICcnKQorICAgIHNlbGYuRGVsZXRlRmlsZXNBbmREaXIoKQorCisgIGRlZiB0
ZWFyRG93bihzZWxmKToKKyAgICBzZWxmLkRlbGV0ZUZpbGVzQW5kRGlyKCkKKworICBkZWYgRGVs
ZXRlRmlsZXNBbmREaXIoc2VsZik6CisgICAgdHJ5OgorICAgICAgb3MucmVtb3ZlKG9zLnBhdGgu
am9pbihzZWxmLm91dHB1dF9kaXJfLCBHVEVTVF9PVVRQVVRfMV9URVNUICsgJy5qc29uJykpCisg
ICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgcGFzcworICAgIHRyeToKKyAgICAgIG9zLnJlbW92
ZShvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGlyXywgR1RFU1RfT1VUUFVUXzJfVEVTVCArICcu
anNvbicpKQorICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgIHBhc3MKKyAgICB0cnk6CisgICAg
ICBvcy5ybWRpcihzZWxmLm91dHB1dF9kaXJfKQorICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAg
IHBhc3MKKworICBkZWYgdGVzdE91dGZpbGUxKHNlbGYpOgorICAgIHNlbGYuX1Rlc3RPdXRGaWxl
KEdURVNUX09VVFBVVF8xX1RFU1QsIEVYUEVDVEVEXzEpCisKKyAgZGVmIHRlc3RPdXRmaWxlMihz
ZWxmKToKKyAgICBzZWxmLl9UZXN0T3V0RmlsZShHVEVTVF9PVVRQVVRfMl9URVNULCBFWFBFQ1RF
RF8yKQorCisgIGRlZiBfVGVzdE91dEZpbGUoc2VsZiwgdGVzdF9uYW1lLCBleHBlY3RlZCk6Cisg
ICAgZ3Rlc3RfcHJvZ19wYXRoID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBh
dGgodGVzdF9uYW1lKQorICAgIGNvbW1hbmQgPSBbZ3Rlc3RfcHJvZ19wYXRoLCAnLS1ndGVzdF9v
dXRwdXQ9anNvbjolcycgJSBzZWxmLm91dHB1dF9kaXJfXQorICAgIHAgPSBndGVzdF90ZXN0X3V0
aWxzLlN1YnByb2Nlc3MoY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdvcmtpbmdfZGlyPWd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpKQorICAgIHNlbGYu
YXNzZXJ0XyhwLmV4aXRlZCkKKyAgICBzZWxmLmFzc2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkK
KworICAgICMgRklYTUU6IGxpYnRvb2wgY2F1c2VzIHRoZSBidWlsdCB0ZXN0IGJpbmFyeSB0byBi
ZQorICAgICMgICBuYW1lZCBsdC1ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8gaW5zdGVhZCBvZgor
ICAgICMgICBndGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8uICBUbyBhY2NvdW50IGZvciB0aGlzIHBv
c3NpYmlsaXR5LCB3ZQorICAgICMgICBhbGxvdyBib3RoIG5hbWVzIGluIHRoZSBmb2xsb3dpbmcg
Y29kZS4gIFdlIHNob3VsZCByZW1vdmUgdGhpcworICAgICMgICB3aGVuIGxpYnRvb2wgcmVwbGFj
ZW1lbnQgdG9vbCBpcyByZWFkeS4KKyAgICBvdXRwdXRfZmlsZV9uYW1lMSA9IHRlc3RfbmFtZSAr
ICcuanNvbicKKyAgICBvdXRwdXRfZmlsZTEgPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGly
Xywgb3V0cHV0X2ZpbGVfbmFtZTEpCisgICAgb3V0cHV0X2ZpbGVfbmFtZTIgPSAnbHQtJyArIG91
dHB1dF9maWxlX25hbWUxCisgICAgb3V0cHV0X2ZpbGUyID0gb3MucGF0aC5qb2luKHNlbGYub3V0
cHV0X2Rpcl8sIG91dHB1dF9maWxlX25hbWUyKQorICAgIHNlbGYuYXNzZXJ0Xyhvcy5wYXRoLmlz
ZmlsZShvdXRwdXRfZmlsZTEpIG9yIG9zLnBhdGguaXNmaWxlKG91dHB1dF9maWxlMiksCisgICAg
ICAgICAgICAgICAgIG91dHB1dF9maWxlMSkKKworICAgIGlmIG9zLnBhdGguaXNmaWxlKG91dHB1
dF9maWxlMSk6CisgICAgICB3aXRoIG9wZW4ob3V0cHV0X2ZpbGUxKSBhcyBmOgorICAgICAgICBh
Y3R1YWwgPSBqc29uLmxvYWQoZikKKyAgICBlbHNlOgorICAgICAgd2l0aCBvcGVuKG91dHB1dF9m
aWxlMikgYXMgZjoKKyAgICAgICAgYWN0dWFsID0ganNvbi5sb2FkKGYpCisgICAgc2VsZi5hc3Nl
cnRFcXVhbChleHBlY3RlZCwgZ3Rlc3RfanNvbl90ZXN0X3V0aWxzLm5vcm1hbGl6ZShhY3R1YWwp
KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIG9zLmVudmlyb25bJ0dURVNUX1NU
QUNLX1RSQUNFX0RFUFRIJ10gPSAnMCcKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1qc29uLW91dHB1
dC11bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1q
c29uLW91dHB1dC11bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2RjZDVmYTFjNDYzOWYxNTJmYjU0
ZTUwZmI5YzA1OThhMGU0NmEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWpzb24tb3V0cHV0LXVuaXR0ZXN0LnB5CkBAIC0wLDAgKzEs
NjE4IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IDIwMTgsIEdvb2dsZSBJ
bmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJVbml0
IHRlc3QgZm9yIHRoZSBndGVzdF9qc29uX291dHB1dCBtb2R1bGUuIiIiCisKK2ltcG9ydCBkYXRl
dGltZQoraW1wb3J0IGVycm5vCitpbXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2lt
cG9ydCBzeXMKKworaW1wb3J0IGd0ZXN0X2pzb25fdGVzdF91dGlscworaW1wb3J0IGd0ZXN0X3Rl
c3RfdXRpbHMKKworR1RFU1RfRklMVEVSX0ZMQUcgPSAnLS1ndGVzdF9maWx0ZXInCitHVEVTVF9M
SVNUX1RFU1RTX0ZMQUcgPSAnLS1ndGVzdF9saXN0X3Rlc3RzJworR1RFU1RfT1VUUFVUX0ZMQUcg
PSAnLS1ndGVzdF9vdXRwdXQnCitHVEVTVF9ERUZBVUxUX09VVFBVVF9GSUxFID0gJ3Rlc3RfZGV0
YWlsLmpzb24nCitHVEVTVF9QUk9HUkFNX05BTUUgPSAnZ3Rlc3RfeG1sX291dHB1dF91bml0dGVz
dF8nCisKKyMgVGhlIGZsYWcgaW5kaWNhdGluZyBzdGFja3RyYWNlcyBhcmUgbm90IHN1cHBvcnRl
ZAorTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZMQUcgPSAnLS1ub19zdGFja3RyYWNlX3N1cHBvcnQn
CisKK1NVUFBPUlRTX1NUQUNLX1RSQUNFUyA9IE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFHIG5v
dCBpbiBzeXMuYXJndgorCitpZiBTVVBQT1JUU19TVEFDS19UUkFDRVM6CisgIFNUQUNLX1RSQUNF
X1RFTVBMQVRFID0gJ1xuU3RhY2sgdHJhY2U6XG4qJworZWxzZToKKyAgU1RBQ0tfVFJBQ0VfVEVN
UExBVEUgPSAnJworCitFWFBFQ1RFRF9OT05fRU1QVFkgPSB7CisgICAgdSd0ZXN0cyc6IDIzLAor
ICAgIHUnZmFpbHVyZXMnOiA0LAorICAgIHUnZGlzYWJsZWQnOiAyLAorICAgIHUnZXJyb3JzJzog
MCwKKyAgICB1J3RpbWVzdGFtcCc6IHUnKicsCisgICAgdSd0aW1lJzogdScqJywKKyAgICB1J2Fk
X2hvY19wcm9wZXJ0eSc6IHUnNDInLAorICAgIHUnbmFtZSc6IHUnQWxsVGVzdHMnLAorICAgIHUn
dGVzdHN1aXRlcyc6IFsKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdTdWNjZXNz
ZnVsVGVzdCcsCisgICAgICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVy
ZXMnOiAwLAorICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9y
cyc6IDAsCisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3Vp
dGUnOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1
J1N1Y2NlZWRzJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAg
ICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xh
c3NuYW1lJzogdSdTdWNjZXNzZnVsVGVzdCcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnRmFpbGVk
VGVzdCcsCisgICAgICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMn
OiAxLAorICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6
IDAsCisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUn
OiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0Zh
aWxzJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAg
ICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1l
JzogdSdGYWlsZWRUZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdmYWlsdXJlcyc6IFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2Zh
aWx1cmUnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J2d0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3RfLmNjOipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdF
eHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4nCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHUnICAxXG4gIDInICsgU1RBQ0tfVFJBQ0VfVEVNUExBVEUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdSd0eXBlJzogdScnCisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnRGlzYWJs
ZWRUZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJl
cyc6IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMSwKKyAgICAgICAgICAgIHUnZXJyb3Jz
JzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0
ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUn
RElTQUJMRURfdGVzdF9ub3RfcnVuJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1
J05PVFJVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAg
ICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdEaXNhYmxlZFRlc3QnCisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1J25h
bWUnOiB1J01peGVkUmVzdWx0VGVzdCcsCisgICAgICAgICAgICB1J3Rlc3RzJzogMywKKyAgICAg
ICAgICAgIHUnZmFpbHVyZXMnOiAxLAorICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDEsCisgICAg
ICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAg
ICAgICAgdSd0ZXN0c3VpdGUnOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICB1J25hbWUnOiB1J1N1Y2NlZWRzJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMn
OiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAg
ICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdNaXhlZFJlc3VsdFRlc3QnCisgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUn
RmFpbHMnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAg
ICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25h
bWUnOiB1J01peGVkUmVzdWx0VGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUnZmFpbHVyZXMn
OiBbCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdSdmYWlsdXJlJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdndGVzdF94
bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHUnRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuJworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1JyAgMVxuICAyJyArIFNUQUNLX1RSQUNFX1RFTVBMQVRFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUndHlwZSc6IHUnJworICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1J2ZhaWx1cmUnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
J2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOipcbicKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdSdFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4nCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnICAyXG4gIDMnICsgU1RBQ0tfVFJBQ0VfVEVN
UExBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSd0eXBlJzogdScnCisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdE
SVNBQkxFRF90ZXN0JywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1J05PVFJVTics
CisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAgICAgICAg
IHUnY2xhc3NuYW1lJzogdSdNaXhlZFJlc3VsdFRlc3QnCisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1
J1htbFF1b3RpbmdUZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAg
dSdmYWlsdXJlcyc6IDEsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAg
IHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1
J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUn
bmFtZSc6IHUnT3V0cHV0c0NEYXRhJywKKyAgICAgICAgICAgICAgICAgICAgdSdzdGF0dXMnOiB1
J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICAg
ICAgICAgIHUnY2xhc3NuYW1lJzogdSdYbWxRdW90aW5nVGVzdCcsCisgICAgICAgICAgICAgICAg
ICAgIHUnZmFpbHVyZXMnOiBbCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdSdmYWlsdXJlJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdSdndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqXG4nCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHUnRmFpbGVkXG5YTUwgb3V0cHV0OiA8P3htbCBlbmNvZGluZz0i
dXRmLTgiPicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSc8dG9wPjwhW0NEQVRB
W2NkYXRhIHRleHRdXT48L3RvcD4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U1RBQ0tfVFJBQ0VfVEVNUExBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSd0eXBl
JzogdScnCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIHUnbmFtZSc6IHUnSW52YWxpZENoYXJhY3RlcnNUZXN0JywKKyAgICAgICAg
ICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDEsCisgICAgICAgICAg
ICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAg
IHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnSW52YWxpZENoYXJhY3RlcnNJ
bk1lc3NhZ2UnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAg
ICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFz
c25hbWUnOiB1J0ludmFsaWRDaGFyYWN0ZXJzVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUn
ZmFpbHVyZXMnOiBbCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdSdmYWlsdXJlJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dSdndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqXG4nCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHUnRmFpbGVkXG5JbnZhbGlkIGNoYXJhY3RlcnMgaW4gYnJhY2tldHMnCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnIFtceDAxXHgwMl0nICsgU1RBQ0tfVFJB
Q0VfVEVNUExBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSd0eXBlJzogdScnCisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHUnbmFtZSc6IHUnUHJvcGVydHlSZWNvcmRpbmdUZXN0JywKKyAgICAgICAgICAgIHUndGVz
dHMnOiA0LAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgICAgICB1J2Rpc2Fi
bGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6
IHUnKicsCisgICAgICAgICAgICB1J1NldFVwVGVzdENhc2UnOiB1J3llcycsCisgICAgICAgICAg
ICB1J1RlYXJEb3duVGVzdENhc2UnOiB1J2F5ZScsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6
IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnT25l
UHJvcGVydHknLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAg
ICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFz
c25hbWUnOiB1J1Byb3BlcnR5UmVjb3JkaW5nVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUn
a2V5XzEnOiB1JzEnCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnSW50VmFsdWVkUHJvcGVydHknLAorICAgICAgICAg
ICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1l
JzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1Byb3BlcnR5UmVj
b3JkaW5nVGVzdCcsCisgICAgICAgICAgICAgICAgICAgIHUna2V5X2ludCc6IHUnMScKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSdu
YW1lJzogdSdUaHJlZVByb3BlcnRpZXMnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6
IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAg
ICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1Byb3BlcnR5UmVjb3JkaW5nVGVzdCcsCisgICAgICAg
ICAgICAgICAgICAgIHUna2V5XzEnOiB1JzEnLAorICAgICAgICAgICAgICAgICAgICB1J2tleV8y
JzogdScyJywKKyAgICAgICAgICAgICAgICAgICAgdSdrZXlfMyc6IHUnMycKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzog
dSdUd29WYWx1ZXNGb3JPbmVLZXlVc2VzTGFzdFZhbHVlJywKKyAgICAgICAgICAgICAgICAgICAg
dSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisg
ICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdQcm9wZXJ0eVJlY29yZGluZ1Rlc3Qn
LAorICAgICAgICAgICAgICAgICAgICB1J2tleV8xJzogdScyJworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1l
JzogdSdOb0ZpeHR1cmVUZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiAzLAorICAgICAgICAg
ICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAg
ICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAg
ICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHUnbmFtZSc6IHUnUmVjb3JkUHJvcGVydHknLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1
cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAg
ICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J05vRml4dHVyZVRlc3QnLAorICAgICAgICAgICAg
ICAgICAgICB1J2tleSc6IHUnMScKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzogdSdFeHRlcm5hbFV0aWxpdHlUaGF0Q2Fs
bHNSZWNvcmRJbnRWYWx1ZWRQcm9wZXJ0eScsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVz
JzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAg
ICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnTm9GaXh0dXJlVGVzdCcsCisgICAgICAgICAgICAg
ICAgICAgIHUna2V5X2Zvcl91dGlsaXR5X2ludCc6IHUnMScKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSduYW1lJzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHUnRXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkU3RyaW5nVmFs
dWVkUHJvcGVydHknLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAg
ICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdj
bGFzc25hbWUnOiB1J05vRml4dHVyZVRlc3QnLAorICAgICAgICAgICAgICAgICAgICB1J2tleV9m
b3JfdXRpbGl0eV9zdHJpbmcnOiB1JzEnCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
XQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1J1R5cGVkVGVz
dC8wJywKKyAgICAgICAgICAgIHUndGVzdHMnOiAxLAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6
IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzogMCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzog
MCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKicsCisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6
IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnbmFtZSc6IHUnSGFz
VHlwZVBhcmFtQXR0cmlidXRlJywKKyAgICAgICAgICAgICAgICAgICAgdSd0eXBlX3BhcmFtJzog
dSdpbnQnLAorICAgICAgICAgICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAg
ICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25h
bWUnOiB1J1R5cGVkVGVzdC8wJworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdSduYW1lJzogdSdUeXBlZFRlc3QvMScs
CisgICAgICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAwLAor
ICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6IDAsCisg
ICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBbCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0hhc1R5cGVQ
YXJhbUF0dHJpYnV0ZScsCisgICAgICAgICAgICAgICAgICAgIHUndHlwZV9wYXJhbSc6IHUnbG9u
ZycsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAgICAg
ICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6
IHUnVHlwZWRUZXN0LzEnCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAg
ICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1J25hbWUnOiB1J1NpbmdsZS9UeXBlUGFyYW1l
dGVyaXplZFRlc3RDYXNlLzAnLAorICAgICAgICAgICAgdSd0ZXN0cyc6IDEsCisgICAgICAgICAg
ICB1J2ZhaWx1cmVzJzogMCwKKyAgICAgICAgICAgIHUnZGlzYWJsZWQnOiAwLAorICAgICAgICAg
ICAgdSdlcnJvcnMnOiAwLAorICAgICAgICAgICAgdSd0aW1lJzogdScqJywKKyAgICAgICAgICAg
IHUndGVzdHN1aXRlJzogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
dSduYW1lJzogdSdIYXNUeXBlUGFyYW1BdHRyaWJ1dGUnLAorICAgICAgICAgICAgICAgICAgICB1
J3R5cGVfcGFyYW0nOiB1J2ludCcsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdS
VU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAg
ICAgICB1J2NsYXNzbmFtZSc6IHUnU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMCcK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIHUnbmFtZSc6IHUnU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2Uv
MScsCisgICAgICAgICAgICB1J3Rlc3RzJzogMSwKKyAgICAgICAgICAgIHUnZmFpbHVyZXMnOiAw
LAorICAgICAgICAgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgICAgICAgICB1J2Vycm9ycyc6IDAs
CisgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgdSd0ZXN0c3VpdGUnOiBb
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J25hbWUnOiB1J0hhc1R5
cGVQYXJhbUF0dHJpYnV0ZScsCisgICAgICAgICAgICAgICAgICAgIHUndHlwZV9wYXJhbSc6IHUn
bG9uZycsCisgICAgICAgICAgICAgICAgICAgIHUnc3RhdHVzJzogdSdSVU4nLAorICAgICAgICAg
ICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAgICAgICAgICAgICAgICB1J2NsYXNzbmFt
ZSc6IHUnU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMScKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHUn
bmFtZSc6IHUnU2luZ2xlL1ZhbHVlUGFyYW1UZXN0JywKKyAgICAgICAgICAgIHUndGVzdHMnOiA0
LAorICAgICAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgICAgICB1J2Rpc2FibGVkJzog
MCwKKyAgICAgICAgICAgIHUnZXJyb3JzJzogMCwKKyAgICAgICAgICAgIHUndGltZSc6IHUnKics
CisgICAgICAgICAgICB1J3Rlc3RzdWl0ZSc6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHUnbmFtZSc6IHUnSGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8wJywKKyAgICAg
ICAgICAgICAgICAgICAgdSd2YWx1ZV9wYXJhbSc6IHUnMzMnLAorICAgICAgICAgICAgICAgICAg
ICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1lJzogdScqJywK
KyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1NpbmdsZS9WYWx1ZVBhcmFtVGVz
dCcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgdSduYW1lJzogdSdIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzEnLAorICAgICAgICAgICAg
ICAgICAgICB1J3ZhbHVlX3BhcmFtJzogdSc0MicsCisgICAgICAgICAgICAgICAgICAgIHUnc3Rh
dHVzJzogdSdSVU4nLAorICAgICAgICAgICAgICAgICAgICB1J3RpbWUnOiB1JyonLAorICAgICAg
ICAgICAgICAgICAgICB1J2NsYXNzbmFtZSc6IHUnU2luZ2xlL1ZhbHVlUGFyYW1UZXN0JworICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1
J25hbWUnOiB1J0Fub3RoZXJUZXN0VGhhdEhhc1ZhbHVlUGFyYW1BdHRyaWJ1dGUvMCcsCisgICAg
ICAgICAgICAgICAgICAgIHUndmFsdWVfcGFyYW0nOiB1JzMzJywKKyAgICAgICAgICAgICAgICAg
ICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICAgICAgICAgIHUndGltZSc6IHUnKics
CisgICAgICAgICAgICAgICAgICAgIHUnY2xhc3NuYW1lJzogdSdTaW5nbGUvVmFsdWVQYXJhbVRl
c3QnCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHUnbmFtZSc6IHUnQW5vdGhlclRlc3RUaGF0SGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8x
JywKKyAgICAgICAgICAgICAgICAgICAgdSd2YWx1ZV9wYXJhbSc6IHUnNDInLAorICAgICAgICAg
ICAgICAgICAgICB1J3N0YXR1cyc6IHUnUlVOJywKKyAgICAgICAgICAgICAgICAgICAgdSd0aW1l
JzogdScqJywKKyAgICAgICAgICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1NpbmdsZS9WYWx1
ZVBhcmFtVGVzdCcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0K
KyAgICBdCit9CisKK0VYUEVDVEVEX0ZJTFRFUkVEID0geworICAgIHUndGVzdHMnOiAxLAorICAg
IHUnZmFpbHVyZXMnOiAwLAorICAgIHUnZGlzYWJsZWQnOiAwLAorICAgIHUnZXJyb3JzJzogMCwK
KyAgICB1J3RpbWUnOiB1JyonLAorICAgIHUndGltZXN0YW1wJzogdScqJywKKyAgICB1J25hbWUn
OiB1J0FsbFRlc3RzJywKKyAgICB1J2FkX2hvY19wcm9wZXJ0eSc6IHUnNDInLAorICAgIHUndGVz
dHN1aXRlcyc6IFt7CisgICAgICAgIHUnbmFtZSc6IHUnU3VjY2Vzc2Z1bFRlc3QnLAorICAgICAg
ICB1J3Rlc3RzJzogMSwKKyAgICAgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgICAgIHUnZGlzYWJs
ZWQnOiAwLAorICAgICAgICB1J2Vycm9ycyc6IDAsCisgICAgICAgIHUndGltZSc6IHUnKicsCisg
ICAgICAgIHUndGVzdHN1aXRlJzogW3sKKyAgICAgICAgICAgIHUnbmFtZSc6IHUnU3VjY2VlZHMn
LAorICAgICAgICAgICAgdSdzdGF0dXMnOiB1J1JVTicsCisgICAgICAgICAgICB1J3RpbWUnOiB1
JyonLAorICAgICAgICAgICAgdSdjbGFzc25hbWUnOiB1J1N1Y2Nlc3NmdWxUZXN0JywKKyAgICAg
ICAgfV0KKyAgICB9XSwKK30KKworRVhQRUNURURfRU1QVFkgPSB7CisgICAgdSd0ZXN0cyc6IDAs
CisgICAgdSdmYWlsdXJlcyc6IDAsCisgICAgdSdkaXNhYmxlZCc6IDAsCisgICAgdSdlcnJvcnMn
OiAwLAorICAgIHUndGltZSc6IHUnKicsCisgICAgdSd0aW1lc3RhbXAnOiB1JyonLAorICAgIHUn
bmFtZSc6IHUnQWxsVGVzdHMnLAorICAgIHUndGVzdHN1aXRlcyc6IFtdLAorfQorCitHVEVTVF9Q
Uk9HUkFNX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aChHVEVT
VF9QUk9HUkFNX05BTUUpCisKK1NVUFBPUlRTX1RZUEVEX1RFU1RTID0gJ1R5cGVkVGVzdCcgaW4g
Z3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAorICAgIFtHVEVTVF9QUk9HUkFNX1BBVEgsIEdU
RVNUX0xJU1RfVEVTVFNfRkxBR10sIGNhcHR1cmVfc3RkZXJyPUZhbHNlKS5vdXRwdXQKKworCitj
bGFzcyBHVGVzdEpzb25PdXRwdXRVbml0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToK
KyAgIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIEpTT04gb3V0cHV0IGZ1bmN0aW9uYWxp
dHkuCisgICIiIgorCisgICMgVGhpcyB0ZXN0IGN1cnJlbnRseSBicmVha3Mgb24gcGxhdGZvcm1z
IHRoYXQgZG8gbm90IHN1cHBvcnQgdHlwZWQgYW5kCisgICMgdHlwZS1wYXJhbWV0ZXJpemVkIHRl
c3RzLCBzbyB3ZSBkb24ndCBydW4gaXQgdW5kZXIgdGhlbS4KKyAgaWYgU1VQUE9SVFNfVFlQRURf
VEVTVFM6CisKKyAgICBkZWYgdGVzdE5vbkVtcHR5SnNvbk91dHB1dChzZWxmKToKKyAgICAgICIi
IlZlcmlmaWVzIEpTT04gb3V0cHV0IGZvciBhIEdvb2dsZSBUZXN0IGJpbmFyeSB3aXRoIG5vbi1l
bXB0eSBvdXRwdXQuCisKKyAgICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMg
YSBub24tZW1wdHkgSlNPTiBvdXRwdXQsIGFuZAorICAgICAgdGVzdHMgdGhhdCB0aGUgSlNPTiBv
dXRwdXQgaXMgZXhwZWN0ZWQuCisgICAgICAiIiIKKyAgICAgIHNlbGYuX1Rlc3RKc29uT3V0cHV0
KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQRUNURURfTk9OX0VNUFRZLCAxKQorCisgIGRlZiB0ZXN0
RW1wdHlKc29uT3V0cHV0KHNlbGYpOgorICAgICIiIlZlcmlmaWVzIEpTT04gb3V0cHV0IGZvciBh
IEdvb2dsZSBUZXN0IGJpbmFyeSB3aXRob3V0IGFjdHVhbCB0ZXN0cy4KKworICAgIFJ1bnMgYSB0
ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkgSlNPTiBvdXRwdXQsIGFuZAorICAg
IHRlc3RzIHRoYXQgdGhlIEpTT04gb3V0cHV0IGlzIGV4cGVjdGVkLgorICAgICIiIgorCisgICAg
c2VsZi5fVGVzdEpzb25PdXRwdXQoJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnLCBFWFBFQ1RFRF9F
TVBUWSwgMCkKKworICBkZWYgdGVzdFRpbWVzdGFtcFZhbHVlKHNlbGYpOgorICAgICIiIkNoZWNr
cyB3aGV0aGVyIHRoZSB0aW1lc3RhbXAgYXR0cmlidXRlIGluIHRoZSBKU09OIG91dHB1dCBpcyB2
YWxpZC4KKworICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkg
SlNPTiBvdXRwdXQsIGFuZCBjaGVja3MgaWYKKyAgICB0aGUgdGltZXN0YW1wIGF0dHJpYnV0ZSBp
biB0aGUgdGVzdHN1aXRlcyB0YWcgaXMgdmFsaWQuCisgICAgIiIiCisgICAgYWN0dWFsID0gc2Vs
Zi5fR2V0SnNvbk91dHB1dCgnZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCcsIFtdLCAwKQorICAgIGRh
dGVfdGltZV9zdHIgPSBhY3R1YWxbJ3RpbWVzdGFtcCddCisgICAgIyBkYXRldGltZS5zdHJwdGlt
ZSgpIGlzIG9ubHkgYXZhaWxhYmxlIGluIFB5dGhvbiAyLjUrIHNvIHdlIGhhdmUgdG8KKyAgICAj
IHBhcnNlIHRoZSBleHBlY3RlZCBkYXRldGltZSBtYW51YWxseS4KKyAgICBtYXRjaCA9IHJlLm1h
dGNoKHInKFxkKyktKFxkXGQpLShcZFxkKVQoXGRcZCk6KFxkXGQpOihcZFxkKScsIGRhdGVfdGlt
ZV9zdHIpCisgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICByZS5tYXRjaCwKKyAgICAgICAg
J0pTT04gZGF0ZXR0aW1lIHN0cmluZyAlcyBoYXMgaW5jb3JyZWN0IGZvcm1hdCcgJSBkYXRlX3Rp
bWVfc3RyKQorICAgIGRhdGVfdGltZV9mcm9tX2pzb24gPSBkYXRldGltZS5kYXRldGltZSgKKyAg
ICAgICAgeWVhcj1pbnQobWF0Y2guZ3JvdXAoMSkpLCBtb250aD1pbnQobWF0Y2guZ3JvdXAoMikp
LAorICAgICAgICBkYXk9aW50KG1hdGNoLmdyb3VwKDMpKSwgaG91cj1pbnQobWF0Y2guZ3JvdXAo
NCkpLAorICAgICAgICBtaW51dGU9aW50KG1hdGNoLmdyb3VwKDUpKSwgc2Vjb25kPWludChtYXRj
aC5ncm91cCg2KSkpCisKKyAgICB0aW1lX2RlbHRhID0gYWJzKGRhdGV0aW1lLmRhdGV0aW1lLm5v
dygpIC0gZGF0ZV90aW1lX2Zyb21fanNvbikKKyAgICAjIHRpbWVzdGFtcCB2YWx1ZSBzaG91bGQg
YmUgbmVhciB0aGUgY3VycmVudCBsb2NhbCB0aW1lCisgICAgc2VsZi5hc3NlcnRUcnVlKHRpbWVf
ZGVsdGEgPCBkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz02MDApLAorICAgICAgICAgICAgICAg
ICAgICAndGltZV9kZWx0YSBpcyAlcycgJSB0aW1lX2RlbHRhKQorCisgIGRlZiB0ZXN0RGVmYXVs
dE91dHB1dEZpbGUoc2VsZik6CisgICAgIiIiVmVyaWZpZXMgdGhlIGRlZmF1bHQgb3V0cHV0IGZp
bGUgbmFtZS4KKworICAgIENvbmZpcm1zIHRoYXQgR29vZ2xlIFRlc3QgcHJvZHVjZXMgYW4gSlNP
TiBvdXRwdXQgZmlsZSB3aXRoIHRoZSBleHBlY3RlZAorICAgIGRlZmF1bHQgbmFtZSBpZiBubyBu
YW1lIGlzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLgorICAgICIiIgorICAgIG91dHB1dF9maWxlID0g
b3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdURVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUpCisgICAgZ3Rlc3Rf
cHJvZ19wYXRoID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisgICAg
ICAgICdndGVzdF9ub190ZXN0X3VuaXR0ZXN0JykKKyAgICB0cnk6CisgICAgICBvcy5yZW1vdmUo
b3V0cHV0X2ZpbGUpCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICBlID0gc3lzLmV4Y19pbmZv
KClbMV0KKyAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgorICAgICAgICByYWlzZQor
CisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKKyAgICAgICAgW2d0ZXN0X3By
b2dfcGF0aCwgJyVzPWpzb24nICUgR1RFU1RfT1VUUFVUX0ZMQUddLAorICAgICAgICB3b3JraW5n
X2Rpcj1ndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSkKKyAgICBzZWxmLmFzc2VydF8ocC5l
eGl0ZWQpCisgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwgcC5leGl0X2NvZGUpCisgICAgc2VsZi5h
c3NlcnRfKG9zLnBhdGguaXNmaWxlKG91dHB1dF9maWxlKSkKKworICBkZWYgdGVzdFN1cHByZXNz
ZWRKc29uT3V0cHV0KHNlbGYpOgorICAgICIiIlZlcmlmaWVzIHRoYXQgbm8gSlNPTiBvdXRwdXQg
aXMgZ2VuZXJhdGVkLgorCisgICAgVGVzdHMgdGhhdCBubyBKU09OIGZpbGUgaXMgZ2VuZXJhdGVk
IGlmIHRoZSBkZWZhdWx0IEpTT04gbGlzdGVuZXIgaXMKKyAgICBzaHV0IGRvd24gYmVmb3JlIFJV
Tl9BTExfVEVTVFMgaXMgaW52b2tlZC4KKyAgICAiIiIKKworICAgIGpzb25fcGF0aCA9IG9zLnBh
dGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR1RFU1RfUFJPR1JBTV9OQU1FICsgJ291dC5qc29uJykKKyAgICBpZiBvcy5w
YXRoLmlzZmlsZShqc29uX3BhdGgpOgorICAgICAgb3MucmVtb3ZlKGpzb25fcGF0aCkKKworICAg
IGNvbW1hbmQgPSBbR1RFU1RfUFJPR1JBTV9QQVRILAorICAgICAgICAgICAgICAgJyVzPWpzb246
JXMnICUgKEdURVNUX09VVFBVVF9GTEFHLCBqc29uX3BhdGgpLAorICAgICAgICAgICAgICAgJy0t
c2h1dF9kb3duX3htbCddCisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21t
YW5kKQorICAgIGlmIHAudGVybWluYXRlZF9ieV9zaWduYWw6CisgICAgICAjIHAuc2lnbmFsIGlz
IGF2YWlsYWJsZSBvbmx5IGlmIHAudGVybWluYXRlZF9ieV9zaWduYWwgaXMgVHJ1ZS4KKyAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoCisgICAgICAgICAgcC50ZXJtaW5hdGVkX2J5X3NpZ25hbCwKKyAg
ICAgICAgICAnJXMgd2FzIGtpbGxlZCBieSBzaWduYWwgJWQnICUgKEdURVNUX1BST0dSQU1fTkFN
RSwgcC5zaWduYWwpKQorICAgIGVsc2U6CisgICAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCisg
ICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBwLmV4aXRfY29kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICInJXMnIGV4aXRlZCB3aXRoIGNvZGUgJXMsIHdoaWNoIGRvZXNuJ3QgbWF0Y2ggIgor
ICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBleHBlY3RlZCBleGl0IGNvZGUgJXMuJworICAg
ICAgICAgICAgICAgICAgICAgICAgJSAoY29tbWFuZCwgcC5leGl0X2NvZGUsIDEpKQorCisgICAg
c2VsZi5hc3NlcnRfKG5vdCBvcy5wYXRoLmlzZmlsZShqc29uX3BhdGgpKQorCisgIGRlZiB0ZXN0
RmlsdGVyZWRUZXN0SnNvbk91dHB1dChzZWxmKToKKyAgICAiIiJWZXJpZmllcyBKU09OIG91dHB1
dCB3aGVuIGEgZmlsdGVyIGlzIGFwcGxpZWQuCisKKyAgICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRo
YXQgZXhlY3V0ZXMgb25seSBzb21lIHRlc3RzIGFuZCB2ZXJpZmllcyB0aGF0CisgICAgbm9uLXNl
bGVjdGVkIHRlc3RzIGRvIG5vdCBzaG93IHVwIGluIHRoZSBKU09OIG91dHB1dC4KKyAgICAiIiIK
KworICAgIHNlbGYuX1Rlc3RKc29uT3V0cHV0KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQRUNURURf
RklMVEVSRUQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfYXJncz1bJyVzPVN1
Y2Nlc3NmdWxUZXN0LionICUgR1RFU1RfRklMVEVSX0ZMQUddKQorCisgIGRlZiBfR2V0SnNvbk91
dHB1dChzZWxmLCBndGVzdF9wcm9nX25hbWUsIGV4dHJhX2FyZ3MsIGV4cGVjdGVkX2V4aXRfY29k
ZSk6CisgICAgIiIiUmV0dXJucyB0aGUgSlNPTiBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcg
dGhlIHByb2dyYW0gZ3Rlc3RfcHJvZ19uYW1lLgorCisgICAgRnVydGhlcm1vcmUsIHRoZSBwcm9n
cmFtJ3MgZXhpdCBjb2RlIG11c3QgYmUgZXhwZWN0ZWRfZXhpdF9jb2RlLgorCisgICAgQXJnczoK
KyAgICAgIGd0ZXN0X3Byb2dfbmFtZTogR29vZ2xlIFRlc3QgYmluYXJ5IG5hbWUuCisgICAgICBl
eHRyYV9hcmdzOiBleHRyYSBhcmd1bWVudHMgdG8gYmluYXJ5IGludm9jYXRpb24uCisgICAgICBl
eHBlY3RlZF9leGl0X2NvZGU6IHByb2dyYW0ncyBleGl0IGNvZGUuCisgICAgIiIiCisgICAganNv
bl9wYXRoID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBndGVzdF9wcm9nX25hbWUgKyAnb3V0Lmpzb24nKQor
ICAgIGd0ZXN0X3Byb2dfcGF0aCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQ
YXRoKGd0ZXN0X3Byb2dfbmFtZSkKKworICAgIGNvbW1hbmQgPSAoCisgICAgICAgIFtndGVzdF9w
cm9nX3BhdGgsICclcz1qc29uOiVzJyAlIChHVEVTVF9PVVRQVVRfRkxBRywganNvbl9wYXRoKV0g
KworICAgICAgICBleHRyYV9hcmdzCisgICAgKQorICAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1
YnByb2Nlc3MoY29tbWFuZCkKKyAgICBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsOgorICAgICAg
c2VsZi5hc3NlcnRfKEZhbHNlLAorICAgICAgICAgICAgICAgICAgICclcyB3YXMga2lsbGVkIGJ5
IHNpZ25hbCAlZCcgJSAoZ3Rlc3RfcHJvZ19uYW1lLCBwLnNpZ25hbCkpCisgICAgZWxzZToKKyAg
ICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVj
dGVkX2V4aXRfY29kZSwgcC5leGl0X2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAiJyVz
JyBleGl0ZWQgd2l0aCBjb2RlICVzLCB3aGljaCBkb2Vzbid0IG1hdGNoICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICd0aGUgZXhwZWN0ZWQgZXhpdCBjb2RlICVzLicKKyAgICAgICAgICAgICAg
ICAgICAgICAgICUgKGNvbW1hbmQsIHAuZXhpdF9jb2RlLCBleHBlY3RlZF9leGl0X2NvZGUpKQor
ICAgIHdpdGggb3Blbihqc29uX3BhdGgpIGFzIGY6CisgICAgICBhY3R1YWwgPSBqc29uLmxvYWQo
ZikKKyAgICByZXR1cm4gYWN0dWFsCisKKyAgZGVmIF9UZXN0SnNvbk91dHB1dChzZWxmLCBndGVz
dF9wcm9nX25hbWUsIGV4cGVjdGVkLAorICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V4
aXRfY29kZSwgZXh0cmFfYXJncz1Ob25lKToKKyAgICAiIiJDaGVja3MgdGhlIEpTT04gb3V0cHV0
IGdlbmVyYXRlZCBieSB0aGUgR29vZ2xlIFRlc3QgYmluYXJ5LgorCisgICAgQXNzZXJ0cyB0aGF0
IHRoZSBKU09OIGRvY3VtZW50IGdlbmVyYXRlZCBieSBydW5uaW5nIHRoZSBwcm9ncmFtCisgICAg
Z3Rlc3RfcHJvZ19uYW1lIG1hdGNoZXMgZXhwZWN0ZWRfanNvbiwgYSBzdHJpbmcgY29udGFpbmlu
ZyBhbm90aGVyCisgICAgSlNPTiBkb2N1bWVudC4gIEZ1cnRoZXJtb3JlLCB0aGUgcHJvZ3JhbSdz
IGV4aXQgY29kZSBtdXN0IGJlCisgICAgZXhwZWN0ZWRfZXhpdF9jb2RlLgorCisgICAgQXJnczoK
KyAgICAgIGd0ZXN0X3Byb2dfbmFtZTogR29vZ2xlIFRlc3QgYmluYXJ5IG5hbWUuCisgICAgICBl
eHBlY3RlZDogZXhwZWN0ZWQgb3V0cHV0LgorICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlOiBwcm9n
cmFtJ3MgZXhpdCBjb2RlLgorICAgICAgZXh0cmFfYXJnczogZXh0cmEgYXJndW1lbnRzIHRvIGJp
bmFyeSBpbnZvY2F0aW9uLgorICAgICIiIgorCisgICAgYWN0dWFsID0gc2VsZi5fR2V0SnNvbk91
dHB1dChndGVzdF9wcm9nX25hbWUsIGV4dHJhX2FyZ3Mgb3IgW10sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGUpCisgICAgc2VsZi5hc3NlcnRFcXVh
bChleHBlY3RlZCwgZ3Rlc3RfanNvbl90ZXN0X3V0aWxzLm5vcm1hbGl6ZShhY3R1YWwpKQorCisK
K2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGlmIE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9G
TEFHIGluIHN5cy5hcmd2OgorICAgICMgdW5pdHRlc3QubWFpbigpIGNhbid0IGhhbmRsZSB1bmtu
b3duIGZsYWdzCisgICAgc3lzLmFyZ3YucmVtb3ZlKE5PX1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFH
KQorCisgIG9zLmVudmlyb25bJ0dURVNUX1NUQUNLX1RSQUNFX0RFUFRIJ10gPSAnMScKKyAgZ3Rl
c3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1saW5rZWQtcHRyLXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlua2VkLXB0ci10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMDBm
MzQyOTZiZDU3OTRjMTY0NDc5ZjIyYTg4ZGQ0ZjczNjAwMWQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlua2VkLXB0ci10ZXN0LmNj
CkBAIC0wLDAgKzEsMTUxIEBACisvLyBDb3B5cmlnaHQgMjAwMywgR29vZ2xlIEluYy4KKy8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisv
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2luY2x1ZGUgImd0ZXN0L2ludGVybmFs
L2d0ZXN0LWxpbmtlZF9wdHIuaCIKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCituYW1lc3Bh
Y2UgeworCit1c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OmxpbmtlZF9wdHI7CisKK2ludCBudW07CitNZXNzYWdlKiBoaXN0b3J5ID0gTlVMTDsKKworLy8g
Q2xhc3Mgd2hpY2ggdHJhY2tzIGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uCitjbGFzcyBBIHsKKyBw
dWJsaWM6CisgIEEoKTogbXludW0obnVtKyspIHsgKmhpc3RvcnkgPDwgIkEiIDw8IG15bnVtIDw8
ICIgY3RvclxuIjsgfQorICB2aXJ0dWFsIH5BKCkgeyAqaGlzdG9yeSA8PCAiQSIgPDwgbXludW0g
PDwgIiBkdG9yXG4iOyB9CisgIHZpcnR1YWwgdm9pZCBVc2UoKSB7ICpoaXN0b3J5IDw8ICJBIiA8
PCBteW51bSA8PCAiIHVzZVxuIjsgfQorIHByb3RlY3RlZDoKKyAgaW50IG15bnVtOworfTsKKwor
Ly8gU3ViY2xhc3MKK2NsYXNzIEIgOiBwdWJsaWMgQSB7CisgcHVibGljOgorICBCKCkgeyAqaGlz
dG9yeSA8PCAiQiIgPDwgbXludW0gPDwgIiBjdG9yXG4iOyB9CisgIH5CKCkgeyAqaGlzdG9yeSA8
PCAiQiIgPDwgbXludW0gPDwgIiBkdG9yXG4iOyB9CisgIHZpcnR1YWwgdm9pZCBVc2UoKSB7ICpo
aXN0b3J5IDw8ICJCIiA8PCBteW51bSA8PCAiIHVzZVxuIjsgfQorfTsKKworY2xhc3MgTGlua2Vk
UHRyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwdWJsaWM6CisgIExpbmtlZFB0clRl
c3QoKSB7CisgICAgbnVtID0gMDsKKyAgICBoaXN0b3J5ID0gbmV3IE1lc3NhZ2U7CisgIH0KKwor
ICB2aXJ0dWFsIH5MaW5rZWRQdHJUZXN0KCkgeworICAgIGRlbGV0ZSBoaXN0b3J5OworICAgIGhp
c3RvcnkgPSBOVUxMOworICB9Cit9OworCitURVNUX0YoTGlua2VkUHRyVGVzdCwgR2VuZXJhbFRl
c3QpIHsKKyAgeworICAgIGxpbmtlZF9wdHI8QT4gYTAsIGExLCBhMjsKKyAgICAvLyBVc2UgZXhw
bGljaXQgZnVuY3Rpb24gY2FsbCBub3RhdGlvbiBoZXJlIHRvIHN1cHByZXNzIHNlbGYtYXNzaWdu
IHdhcm5pbmcuCisgICAgYTAub3BlcmF0b3I9KGEwKTsKKyAgICBhMSA9IGEyOworICAgIEFTU0VS
VF9FUShhMC5nZXQoKSwgc3RhdGljX2Nhc3Q8QSo+KE5VTEwpKTsKKyAgICBBU1NFUlRfRVEoYTEu
Z2V0KCksIHN0YXRpY19jYXN0PEEqPihOVUxMKSk7CisgICAgQVNTRVJUX0VRKGEyLmdldCgpLCBz
dGF0aWNfY2FzdDxBKj4oTlVMTCkpOworICAgIEFTU0VSVF9UUlVFKGEwID09IE5VTEwpOworICAg
IEFTU0VSVF9UUlVFKGExID09IE5VTEwpOworICAgIEFTU0VSVF9UUlVFKGEyID09IE5VTEwpOwor
CisgICAgeworICAgICAgbGlua2VkX3B0cjxBPiBhMyhuZXcgQSk7CisgICAgICBhMCA9IGEzOwor
ICAgICAgQVNTRVJUX1RSVUUoYTAgPT0gYTMpOworICAgICAgQVNTRVJUX1RSVUUoYTAgIT0gTlVM
TCk7CisgICAgICBBU1NFUlRfVFJVRShhMC5nZXQoKSA9PSBhMyk7CisgICAgICBBU1NFUlRfVFJV
RShhMCA9PSBhMy5nZXQoKSk7CisgICAgICBsaW5rZWRfcHRyPEE+IGE0KGEwKTsKKyAgICAgIGEx
ID0gYTQ7CisgICAgICBsaW5rZWRfcHRyPEE+IGE1KG5ldyBBKTsKKyAgICAgIEFTU0VSVF9UUlVF
KGE1LmdldCgpICE9IGEzKTsKKyAgICAgIEFTU0VSVF9UUlVFKGE1ICE9IGEzLmdldCgpKTsKKyAg
ICAgIGEyID0gYTU7CisgICAgICBsaW5rZWRfcHRyPEI+IGIwKG5ldyBCKTsKKyAgICAgIGxpbmtl
ZF9wdHI8QT4gYTYoYjApOworICAgICAgQVNTRVJUX1RSVUUoYjAgPT0gYTYpOworICAgICAgQVNT
RVJUX1RSVUUoYTYgPT0gYjApOworICAgICAgQVNTRVJUX1RSVUUoYjAgIT0gTlVMTCk7CisgICAg
ICBhNSA9IGIwOworICAgICAgYTUgPSBiMDsKKyAgICAgIGEzLT5Vc2UoKTsKKyAgICAgIGE0LT5V
c2UoKTsKKyAgICAgIGE1LT5Vc2UoKTsKKyAgICAgIGE2LT5Vc2UoKTsKKyAgICAgIGIwLT5Vc2Uo
KTsKKyAgICAgICgqYjApLlVzZSgpOworICAgICAgYjAuZ2V0KCktPlVzZSgpOworICAgIH0KKwor
ICAgIGEwLT5Vc2UoKTsKKyAgICBhMS0+VXNlKCk7CisgICAgYTItPlVzZSgpOworCisgICAgYTEg
PSBhMjsKKyAgICBhMi5yZXNldChuZXcgQSk7CisgICAgYTAucmVzZXQoKTsKKworICAgIGxpbmtl
ZF9wdHI8QT4gYTc7CisgIH0KKworICBBU1NFUlRfU1RSRVEoCisgICAgIkEwIGN0b3JcbiIKKyAg
ICAiQTEgY3RvclxuIgorICAgICJBMiBjdG9yXG4iCisgICAgIkIyIGN0b3JcbiIKKyAgICAiQTAg
dXNlXG4iCisgICAgIkEwIHVzZVxuIgorICAgICJCMiB1c2VcbiIKKyAgICAiQjIgdXNlXG4iCisg
ICAgIkIyIHVzZVxuIgorICAgICJCMiB1c2VcbiIKKyAgICAiQjIgdXNlXG4iCisgICAgIkIyIGR0
b3JcbiIKKyAgICAiQTIgZHRvclxuIgorICAgICJBMCB1c2VcbiIKKyAgICAiQTAgdXNlXG4iCisg
ICAgIkExIHVzZVxuIgorICAgICJBMyBjdG9yXG4iCisgICAgIkEwIGR0b3JcbiIKKyAgICAiQTMg
ZHRvclxuIgorICAgICJBMSBkdG9yXG4iLAorICAgIGhpc3RvcnktPkdldFN0cmluZygpLmNfc3Ry
KCkpOworfQorCit9ICAvLyBVbm5hbWVkIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3QucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0dGVz
dC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44MTQyM2EzMzllOGZkMjhhYTJiNDI1MzAxM2IzYzIzY2UzNTMzNzQ5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3QucHkKQEAgLTAsMCArMSwyMDUgQEAKKyMhL3Vzci9iaW4v
ZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIwor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisj
IGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisj
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVzdCBmb3IgR29vZ2xl
IFRlc3QncyAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4KKworQSB1c2VyIGNhbiBhc2sgR29vZ2xl
IFRlc3QgdG8gbGlzdCBhbGwgdGVzdHMgYnkgc3BlY2lmeWluZyB0aGUKKy0tZ3Rlc3RfbGlzdF90
ZXN0cyBmbGFnLiAgVGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5CitieSBpbnZv
a2luZyBnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRlc3RfIChhIHByb2dyYW0gd3JpdHRlbiB3
aXRoCitHb29nbGUgVGVzdCkgdGhlIGNvbW1hbmQgbGluZSBmbGFncy4KKyIiIgorCitpbXBvcnQg
cmUKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxzCisKKyMgQ29uc3RhbnRzLgorCisjIFRoZSBjb21t
YW5kIGxpbmUgZmxhZyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIGxpc3RpbmcgYWxsIHRlc3RzLgor
TElTVF9URVNUU19GTEFHID0gJ2d0ZXN0X2xpc3RfdGVzdHMnCisKKyMgUGF0aCB0byB0aGUgZ29v
Z2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0XyBwcm9ncmFtLgorRVhFX1BBVEggPSBndGVzdF90
ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVu
aXR0ZXN0XycpCisKKyMgVGhlIGV4cGVjdGVkIG91dHB1dCB3aGVuIHJ1bm5pbmcgZ29vZ2xldGVz
dC1saXN0LXRlc3RzLXVuaXR0ZXN0XyB3aXRoCisjIC0tZ3Rlc3RfbGlzdF90ZXN0cworRVhQRUNU
RURfT1VUUFVUX05PX0ZJTFRFUl9SRSA9IHJlLmNvbXBpbGUociIiIkZvb0RlYXRoVGVzdFwuCisg
IFRlc3QxCitGb29cLgorICBCYXIxCisgIEJhcjIKKyAgRElTQUJMRURfQmFyMworQWJjXC4KKyAg
WHl6CisgIERlZgorRm9vQmFyXC4KKyAgQmF6CitGb29UZXN0XC4KKyAgVGVzdDEKKyAgRElTQUJM
RURfVGVzdDIKKyAgVGVzdDMKK1R5cGVkVGVzdC8wXC4gICMgVHlwZVBhcmFtID0gKFZlcnlMb3sy
NDV9fGNsYXNzIFZlcnlMb3syMzl9KVwuXC5cLgorICBUZXN0QQorICBUZXN0QgorVHlwZWRUZXN0
LzFcLiAgIyBUeXBlUGFyYW0gPSBpbnRccypcKiggX19wdHI2NCk/CisgIFRlc3RBCisgIFRlc3RC
CitUeXBlZFRlc3QvMlwuICAjIFR5cGVQYXJhbSA9IC4qTXlBcnJheTxib29sLFxzKjQyPgorICBU
ZXN0QQorICBUZXN0QgorTXkvVHlwZVBhcmFtVGVzdC8wXC4gICMgVHlwZVBhcmFtID0gKFZlcnlM
b3syNDV9fGNsYXNzIFZlcnlMb3syMzl9KVwuXC5cLgorICBUZXN0QQorICBUZXN0QgorTXkvVHlw
ZVBhcmFtVGVzdC8xXC4gICMgVHlwZVBhcmFtID0gaW50XHMqXCooIF9fcHRyNjQpPworICBUZXN0
QQorICBUZXN0QgorTXkvVHlwZVBhcmFtVGVzdC8yXC4gICMgVHlwZVBhcmFtID0gLipNeUFycmF5
PGJvb2wsXHMqNDI+CisgIFRlc3RBCisgIFRlc3RCCitNeUluc3RhbnRpYXRpb24vVmFsdWVQYXJh
bVRlc3RcLgorICBUZXN0QS8wICAjIEdldFBhcmFtXChcKSA9IG9uZSBsaW5lCisgIFRlc3RBLzEg
ICMgR2V0UGFyYW1cKFwpID0gdHdvXFxubGluZXMKKyAgVGVzdEEvMiAgIyBHZXRQYXJhbVwoXCkg
PSBhIHZlcnlcXG5sb3syNDF9XC5cLlwuCisgIFRlc3RCLzAgICMgR2V0UGFyYW1cKFwpID0gb25l
IGxpbmUKKyAgVGVzdEIvMSAgIyBHZXRQYXJhbVwoXCkgPSB0d29cXG5saW5lcworICBUZXN0Qi8y
ICAjIEdldFBhcmFtXChcKSA9IGEgdmVyeVxcbmxvezI0MX1cLlwuXC4KKyIiIikKKworIyBUaGUg
ZXhwZWN0ZWQgb3V0cHV0IHdoZW4gcnVubmluZyBnb29nbGV0ZXN0LWxpc3QtdGVzdHMtdW5pdHRl
c3RfIHdpdGgKKyMgLS1ndGVzdF9saXN0X3Rlc3RzIGFuZCAtLWd0ZXN0X2ZpbHRlcj1Gb28qLgor
RVhQRUNURURfT1VUUFVUX0ZJTFRFUl9GT09fUkUgPSByZS5jb21waWxlKHIiIiJGb29EZWF0aFRl
c3RcLgorICBUZXN0MQorRm9vXC4KKyAgQmFyMQorICBCYXIyCisgIERJU0FCTEVEX0JhcjMKK0Zv
b0JhclwuCisgIEJhegorRm9vVGVzdFwuCisgIFRlc3QxCisgIERJU0FCTEVEX1Rlc3QyCisgIFRl
c3QzCisiIiIpCisKKyMgVXRpbGl0aWVzLgorCisKK2RlZiBSdW4oYXJncyk6CisgICIiIlJ1bnMg
Z29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0XyBhbmQgcmV0dXJucyB0aGUgbGlzdCBvZiB0
ZXN0cyBwcmludGVkLiIiIgorCisgIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3Mo
W0VYRV9QQVRIXSArIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2FwdHVyZV9zdGRlcnI9RmFsc2UpLm91dHB1dAorCisKKyMgVGhlIHVuaXQgdGVzdC4KKworCitj
bGFzcyBHVGVzdExpc3RUZXN0c1VuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgor
ICAiIiJUZXN0cyB1c2luZyB0aGUgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcgdG8gbGlzdCBhbGwg
dGVzdHMuIiIiCisKKyAgZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBmbGFnX3ZhbHVlLCBleHBlY3Rl
ZF9vdXRwdXRfcmUsIG90aGVyX2ZsYWcpOgorICAgICIiIlJ1bnMgZ29vZ2xldGVzdC1saXN0LXRl
c3RzLXVuaXR0ZXN0XyBhbmQgdmVyaWZpZXMgdGhhdCBpdCBwcmludHMKKyAgICB0aGUgY29ycmVj
dCB0ZXN0cy4KKworICAgIEFyZ3M6CisgICAgICBmbGFnX3ZhbHVlOiAgICAgICAgIHZhbHVlIG9m
IHRoZSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
Tm9uZSBpZiB0aGUgZmxhZyBzaG91bGQgbm90IGJlIHByZXNlbnQuCisgICAgICBleHBlY3RlZF9v
dXRwdXRfcmU6IHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG1hdGNoZXMgdGhlIGV4cGVjdGVkCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCBhZnRlciBydW5uaW5nIGNvbW1hbmQ7Cisg
ICAgICBvdGhlcl9mbGFnOiAgICAgICAgIGEgZGlmZmVyZW50IGZsYWcgdG8gYmUgcGFzc2VkIHRv
IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWxvbmcgd2l0aCBndGVzdF9saXN0
X3Rlc3RzOworICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3Vs
ZCBub3QgYmUgcHJlc2VudC4KKyAgICAiIiIKKworICAgIGlmIGZsYWdfdmFsdWUgaXMgTm9uZToK
KyAgICAgIGZsYWcgPSAnJworICAgICAgZmxhZ19leHByZXNzaW9uID0gJ25vdCBzZXQnCisgICAg
ZWxpZiBmbGFnX3ZhbHVlID09ICcwJzoKKyAgICAgIGZsYWcgPSAnLS0lcz0wJyAlIExJU1RfVEVT
VFNfRkxBRworICAgICAgZmxhZ19leHByZXNzaW9uID0gJzAnCisgICAgZWxzZToKKyAgICAgIGZs
YWcgPSAnLS0lcycgJSBMSVNUX1RFU1RTX0ZMQUcKKyAgICAgIGZsYWdfZXhwcmVzc2lvbiA9ICcx
JworCisgICAgYXJncyA9IFtmbGFnXQorCisgICAgaWYgb3RoZXJfZmxhZyBpcyBub3QgTm9uZToK
KyAgICAgIGFyZ3MgKz0gW290aGVyX2ZsYWddCisKKyAgICBvdXRwdXQgPSBSdW4oYXJncykKKwor
ICAgIGlmIGV4cGVjdGVkX291dHB1dF9yZToKKyAgICAgIHNlbGYuYXNzZXJ0XygKKyAgICAgICAg
ICBleHBlY3RlZF9vdXRwdXRfcmUubWF0Y2gob3V0cHV0KSwKKyAgICAgICAgICAoJ3doZW4gJXMg
aXMgJXMsIHRoZSBvdXRwdXQgb2YgIiVzIiBpcyAiJXMiLFxuJworICAgICAgICAgICAnd2hpY2gg
ZG9lcyBub3QgbWF0Y2ggcmVnZXggIiVzIicgJQorICAgICAgICAgICAoTElTVF9URVNUU19GTEFH
LCBmbGFnX2V4cHJlc3Npb24sICcgJy5qb2luKGFyZ3MpLCBvdXRwdXQsCisgICAgICAgICAgICBl
eHBlY3RlZF9vdXRwdXRfcmUucGF0dGVybikpKQorICAgIGVsc2U6CisgICAgICBzZWxmLmFzc2Vy
dF8oCisgICAgICAgICAgbm90IEVYUEVDVEVEX09VVFBVVF9OT19GSUxURVJfUkUubWF0Y2gob3V0
cHV0KSwKKyAgICAgICAgICAoJ3doZW4gJXMgaXMgJXMsIHRoZSBvdXRwdXQgb2YgIiVzIiBpcyAi
JXMiJyUKKyAgICAgICAgICAgKExJU1RfVEVTVFNfRkxBRywgZmxhZ19leHByZXNzaW9uLCAnICcu
am9pbihhcmdzKSwgb3V0cHV0KSkpCisKKyAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3Ioc2VsZik6
CisgICAgIiIiVGVzdHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0IG1vZGUuIiIiCisKKyAg
ICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPU5vbmUsCisgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfb3V0cHV0X3JlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgb3RoZXJf
ZmxhZz1Ob25lKQorCisgIGRlZiB0ZXN0RmxhZyhzZWxmKToKKyAgICAiIiJUZXN0cyB1c2luZyB0
aGUgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShm
bGFnX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9
Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPU5vbmUpCisgICAgc2VsZi5S
dW5BbmRWZXJpZnkoZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRfb3V0cHV0X3JlPUVYUEVDVEVEX09VVFBVVF9OT19GSUxURVJfUkUsCisgICAgICAgICAgICAg
ICAgICAgICAgb3RoZXJfZmxhZz1Ob25lKQorCisgIGRlZiB0ZXN0T3ZlcnJpZGVOb25GaWx0ZXJG
bGFncyhzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0IC0tZ3Rlc3RfbGlzdF90ZXN0cyBvdmVycmlk
ZXMgdGhlIG5vbi1maWx0ZXIgZmxhZ3MuIiIiCisKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFn
X3ZhbHVlPScxJywKKyAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9RVhQ
RUNURURfT1VUUFVUX05PX0ZJTFRFUl9SRSwKKyAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9m
bGFnPSctLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUnKQorCisgIGRlZiB0ZXN0V2l0aEZpbHRlckZs
YWdzKHNlbGYpOgorICAgICIiIlRlc3RzIHRoYXQgLS1ndGVzdF9saXN0X3Rlc3RzIHRha2VzIGlu
dG8gYWNjb3VudCB0aGUKKyAgICAtLWd0ZXN0X2ZpbHRlciBmbGFnLiIiIgorCisgICAgc2VsZi5S
dW5BbmRWZXJpZnkoZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRfb3V0cHV0X3JlPUVYUEVDVEVEX09VVFBVVF9GSUxURVJfRk9PX1JFLAorICAgICAgICAgICAg
ICAgICAgICAgIG90aGVyX2ZsYWc9Jy0tZ3Rlc3RfZmlsdGVyPUZvbyonKQorCisKK2lmIF9fbmFt
ZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlzdC10ZXN0cy11bml0
dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbGlzdC10
ZXN0cy11bml0dGVzdF8uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ3M2M3ZDFhNDVmMWYxOTZiMTM3NDgzYjA1
M2NhNTk4MDA3ZDI4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1saXN0LXRlc3RzLXVuaXR0ZXN0Xy5jYwpAQCAtMCwwICsxLDE1NiBA
QAorLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisv
LyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIFVu
aXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4KKy8vCisv
LyBBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBsaXN0IGFsbCB0ZXN0cyB0aGF0IHdpbGwg
cnVuCisvLyBzbyB0aGF0IHdoZW4gdXNpbmcgYSBmaWx0ZXIsIGEgdXNlciB3aWxsIGtub3cgd2hh
dAorLy8gdGVzdHMgdG8gbG9vayBmb3IuIFRoZSB0ZXN0cyB3aWxsIG5vdCBiZSBydW4gYWZ0ZXIg
bGlzdGluZy4KKy8vCisvLyBUaGlzIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRo
b24gdW5pdCB0ZXN0LgorLy8gRG9uJ3QgcnVuIGl0IGRpcmVjdGx5LgorCisjaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKKworLy8gU2V2ZXJhbCBkaWZmZXJlbnQgdGVzdCBjYXNlcyBhbmQgdGVzdHMg
dGhhdCB3aWxsIGJlIGxpc3RlZC4KK1RFU1QoRm9vLCBCYXIxKSB7Cit9CisKK1RFU1QoRm9vLCBC
YXIyKSB7Cit9CisKK1RFU1QoRm9vLCBESVNBQkxFRF9CYXIzKSB7Cit9CisKK1RFU1QoQWJjLCBY
eXopIHsKK30KKworVEVTVChBYmMsIERlZikgeworfQorCitURVNUKEZvb0JhciwgQmF6KSB7Cit9
CisKK2NsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitURVNUX0Yo
Rm9vVGVzdCwgVGVzdDEpIHsKK30KKworVEVTVF9GKEZvb1Rlc3QsIERJU0FCTEVEX1Rlc3QyKSB7
Cit9CisKK1RFU1RfRihGb29UZXN0LCBUZXN0MykgeworfQorCitURVNUKEZvb0RlYXRoVGVzdCwg
VGVzdDEpIHsKK30KKworLy8gQSBncm91cCBvZiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgor
CitjbGFzcyBNeVR5cGUgeworIHB1YmxpYzoKKyAgZXhwbGljaXQgTXlUeXBlKGNvbnN0IHN0ZDo6
c3RyaW5nJiBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7fQorCisgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQorCisgcHJpdmF0ZToKKyAgc3Rk
OjpzdHJpbmcgdmFsdWVfOworfTsKKworLy8gVGVhY2hlcyBHb29nbGUgVGVzdCBob3cgdG8gcHJp
bnQgYSBNeVR5cGUuCit2b2lkIFByaW50VG8oY29uc3QgTXlUeXBlJiB4LCBzdGQ6Om9zdHJlYW0q
IG9zKSB7CisgICpvcyA8PCB4LnZhbHVlKCk7Cit9CisKK2NsYXNzIFZhbHVlUGFyYW1UZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08TXlUeXBlPiB7Cit9OworCitURVNUX1AoVmFs
dWVQYXJhbVRlc3QsIFRlc3RBKSB7Cit9CisKK1RFU1RfUChWYWx1ZVBhcmFtVGVzdCwgVGVzdEIp
IHsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoCisgICAgTXlJbnN0YW50aWF0aW9uLCBW
YWx1ZVBhcmFtVGVzdCwKKyAgICB0ZXN0aW5nOjpWYWx1ZXMoTXlUeXBlKCJvbmUgbGluZSIpLAor
ICAgICAgICAgICAgICAgICAgICBNeVR5cGUoInR3b1xubGluZXMiKSwKKyAgICAgICAgICAgICAg
ICAgICAgTXlUeXBlKCJhIHZlcnlcbmxvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vbmcgbGluZSIpKSk7
ICAvLyBOT0xJTlQKKworLy8gQSBncm91cCBvZiB0eXBlZCB0ZXN0cy4KKworLy8gQSBkZWxpYmVy
YXRlbHkgbG9uZyB0eXBlIG5hbWUgZm9yIHRlc3RpbmcgdGhlIGxpbmUtdHJ1bmNhdGluZworLy8g
YmVoYXZpb3Igd2hlbiBwcmludGluZyBhIHR5cGUgcGFyYW1ldGVyLgorY2xhc3MgVmVyeUxvb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vZ05hbWUgeyAgLy8gTk9MSU5UCit9OworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2NsYXNzIFR5cGVkVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBULCBpbnQga1NpemU+CitjbGFzcyBNeUFycmF5IHsKK307CisK
K3R5cGVkZWYgdGVzdGluZzo6VHlwZXM8VmVyeUxvb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vZ05hbWUs
ICAvLyBOT0xJTlQKKyAgICAgICAgICAgICAgICAgICAgICAgaW50KiwgTXlBcnJheTxib29sLCA0
Mj4gPiBNeVR5cGVzOworCitUWVBFRF9URVNUX0NBU0UoVHlwZWRUZXN0LCBNeVR5cGVzKTsKKwor
VFlQRURfVEVTVChUeXBlZFRlc3QsIFRlc3RBKSB7Cit9CisKK1RZUEVEX1RFU1QoVHlwZWRUZXN0
LCBUZXN0QikgeworfQorCisvLyBBIGdyb3VwIG9mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlUGFyYW1UZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgeworfTsKKworVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtVGVzdCk7CisK
K1RZUEVEX1RFU1RfUChUeXBlUGFyYW1UZXN0LCBUZXN0QSkgeworfQorCitUWVBFRF9URVNUX1Ao
VHlwZVBhcmFtVGVzdCwgVGVzdEIpIHsKK30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1Ao
VHlwZVBhcmFtVGVzdCwgVGVzdEEsIFRlc3RCKTsKKworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9D
QVNFX1AoTXksIFR5cGVQYXJhbVRlc3QsIE15VHlwZXMpOworCitpbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqKmFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7
CisKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1saXN0ZW5lci10ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LWxpc3RlbmVyLXRlc3QuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODM1NTU5NzE1MWQwOWQ2YzMxNTY3MWY0MmRiNjZjYzRiZDQ4NTBmZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1saXN0ZW5lci10
ZXN0LmNjCkBAIC0wLDAgKzEsMzExIEBACisvLyBDb3B5cmlnaHQgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
Ly8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
Ky8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisvLworLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFt
ZXdvcmsgKEdvb2dsZSBUZXN0KQorLy8KKy8vIFRoaXMgZmlsZSB2ZXJpZmllcyBHb29nbGUgVGVz
dCBldmVudCBsaXN0ZW5lcnMgcmVjZWl2ZSBldmVudHMgYXQgdGhlCisvLyByaWdodCB0aW1lcy4K
KworI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK3VzaW5n
IDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50OwordXNpbmcgOjp0ZXN0aW5nOjpF
bnZpcm9ubWVudDsKK3VzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7Cit1c2luZyA6OnRl
c3Rpbmc6OlRlc3Q7Cit1c2luZyA6OnRlc3Rpbmc6OlRlc3RDYXNlOwordXNpbmcgOjp0ZXN0aW5n
OjpUZXN0RXZlbnRMaXN0ZW5lcjsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdEluZm87Cit1c2luZyA6
OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OwordXNpbmcgOjp0ZXN0aW5nOjpVbml0VGVzdDsKKwor
Ly8gVXNlZCBieSB0ZXN0cyB0byByZWdpc3RlciB0aGVpciBldmVudHMuCitzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4qIGdfZXZlbnRzID0gTlVMTDsKKworbmFtZXNwYWNlIHRlc3RpbmcgeworbmFt
ZXNwYWNlIGludGVybmFsIHsKKworY2xhc3MgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lciA6IHB1Ymxp
YyBUZXN0RXZlbnRMaXN0ZW5lciB7CisgcHVibGljOgorICBleHBsaWNpdCBFdmVudFJlY29yZGlu
Z0xpc3RlbmVyKGNvbnN0IGNoYXIqIG5hbWUpIDogbmFtZV8obmFtZSkge30KKworIHByb3RlY3Rl
ZDoKKyAgdmlydHVhbCB2b2lkIE9uVGVzdFByb2dyYW1TdGFydChjb25zdCBVbml0VGVzdCYgLyp1
bml0X3Rlc3QqLykgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUo
Ik9uVGVzdFByb2dyYW1TdGFydCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVy
YXRpb25TdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBpdGVyYXRpb24pIHsKKyAgICBNZXNzYWdlIG1lc3Nh
Z2U7CisgICAgbWVzc2FnZSA8PCBHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0SXRlcmF0aW9uU3Rh
cnQiKQorICAgICAgICAgICAgPDwgIigiIDw8IGl0ZXJhdGlvbiA8PCAiKSI7CisgICAgZ19ldmVu
dHMtPnB1c2hfYmFjayhtZXNzYWdlLkdldFN0cmluZygpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9p
ZCBPbkVudmlyb25tZW50c1NldFVwU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8p
IHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPbkVudmlyb25t
ZW50c1NldFVwU3RhcnQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNT
ZXRVcEVuZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgeworICAgIGdfZXZlbnRzLT5w
dXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiKSk7Cisg
IH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0Q2FzZVN0YXJ0KGNvbnN0IFRlc3RDYXNlJiAvKnRl
c3RfY2FzZSovKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgi
T25UZXN0Q2FzZVN0YXJ0IikpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdFN0YXJ0KGNv
bnN0IFRlc3RJbmZvJiAvKnRlc3RfaW5mbyovKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjayhH
ZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0U3RhcnQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQg
T25UZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgLyp0ZXN0X3BhcnRfcmVzdWx0
Ki8pIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RQ
YXJ0UmVzdWx0IikpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdEVuZChjb25zdCBUZXN0
SW5mbyYgLyp0ZXN0X2luZm8qLykgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1l
dGhvZE5hbWUoIk9uVGVzdEVuZCIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBPblRlc3RDYXNl
RW5kKGNvbnN0IFRlc3RDYXNlJiAvKnRlc3RfY2FzZSovKSB7CisgICAgZ19ldmVudHMtPnB1c2hf
YmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0Q2FzZUVuZCIpKTsKKyAgfQorCisgIHZpcnR1
YWwgdm9pZCBPbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5p
dF90ZXN0Ki8pIHsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJP
bkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25F
bnZpcm9ubWVudHNUZWFyRG93bkVuZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewor
ICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRz
VGVhckRvd25FbmQiKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uRW5k
KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpdGVyYXRpb24pIHsKKyAgICBNZXNzYWdlIG1lc3NhZ2U7CisgICAgbWVz
c2FnZSA8PCBHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0SXRlcmF0aW9uRW5kIikKKyAgICAgICAg
ICAgIDw8ICIoIiAgPDwgaXRlcmF0aW9uIDw8ICIpIjsKKyAgICBnX2V2ZW50cy0+cHVzaF9iYWNr
KG1lc3NhZ2UuR2V0U3RyaW5nKCkpOworICB9CisKKyAgdmlydHVhbCB2b2lkIE9uVGVzdFByb2dy
YW1FbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKKyAgICBnX2V2ZW50cy0+cHVz
aF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RQcm9ncmFtRW5kIikpOworICB9CisKKyBw
cml2YXRlOgorICBzdGQ6OnN0cmluZyBHZXRGdWxsTWV0aG9kTmFtZShjb25zdCBjaGFyKiBuYW1l
KSB7CisgICAgcmV0dXJuIG5hbWVfICsgIi4iICsgbmFtZTsKKyAgfQorCisgIHN0ZDo6c3RyaW5n
IG5hbWVfOworfTsKKworY2xhc3MgRW52aXJvbm1lbnRJbnZvY2F0aW9uQ2F0Y2hlciA6IHB1Ymxp
YyBFbnZpcm9ubWVudCB7CisgcHJvdGVjdGVkOgorICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Cisg
ICAgZ19ldmVudHMtPnB1c2hfYmFjaygiRW52aXJvbm1lbnQ6OlNldFVwIik7CisgIH0KKworICB2
aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgZ19ldmVudHMtPnB1c2hfYmFjaygiRW52aXJv
bm1lbnQ6OlRlYXJEb3duIik7CisgIH0KK307CisKK2NsYXNzIExpc3RlbmVyVGVzdCA6IHB1Ymxp
YyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7Cisg
ICAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0OjpTZXRVcFRlc3RDYXNlIik7Cisg
IH0KKworICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeworICAgIGdfZXZlbnRzLT5w
dXNoX2JhY2soIkxpc3RlbmVyVGVzdDo6VGVhckRvd25UZXN0Q2FzZSIpOworICB9CisKKyAgdmly
dHVhbCB2b2lkIFNldFVwKCkgeworICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVyVGVz
dDo6U2V0VXAiKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBnX2V2
ZW50cy0+cHVzaF9iYWNrKCJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duIik7CisgIH0KK307CisKK1RF
U1RfRihMaXN0ZW5lclRlc3QsIERvZXNGb28pIHsKKyAgLy8gVGVzdCBleGVjdXRpb24gb3JkZXIg
d2l0aGluIGEgdGVzdCBjYXNlIGlzIG5vdCBndWFyYW50ZWVkIHNvIHdlIGFyZSBub3QKKyAgLy8g
cmVjb3JkaW5nIHRoZSB0ZXN0IG5hbWUuCisgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVy
VGVzdDo6KiBUZXN0IEJvZHkiKTsKKyAgU1VDQ0VFRCgpOyAgLy8gVHJpZ2dlcnMgT25UZXN0UGFy
dFJlc3VsdC4KK30KKworVEVTVF9GKExpc3RlbmVyVGVzdCwgRG9lc0JhcikgeworICBnX2V2ZW50
cy0+cHVzaF9iYWNrKCJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5Iik7CisgIFNVQ0NFRUQoKTsg
IC8vIFRyaWdnZXJzIE9uVGVzdFBhcnRSZXN1bHQuCit9CisKK30gIC8vIG5hbWVzcGFjZSBpbnRl
cm5hbAorCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZworCit1c2luZyA6OnRlc3Rpbmc6OmludGVy
bmFsOjpFbnZpcm9ubWVudEludm9jYXRpb25DYXRjaGVyOwordXNpbmcgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6RXZlbnRSZWNvcmRpbmdMaXN0ZW5lcjsKKwordm9pZCBWZXJpZnlSZXN1bHRzKGNvbnN0
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgZGF0YSwKKyAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBjb25zdCogZXhwZWN0ZWRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZXhwZWN0ZWRfZGF0YV9zaXplKSB7CisgIGNvbnN0IHNpemVfdCBhY3R1YWxfc2l6ZSA9IGRhdGEu
c2l6ZSgpOworICAvLyBJZiB0aGUgZm9sbG93aW5nIGFzc2VydGlvbiBmYWlscywgYSBuZXcgZW50
cnkgd2lsbCBiZSBhcHBlbmRlZCB0bworICAvLyBkYXRhLiAgSGVuY2Ugd2Ugc2F2ZSBkYXRhLnNp
emUoKSBmaXJzdC4KKyAgRVhQRUNUX0VRKGV4cGVjdGVkX2RhdGFfc2l6ZSwgYWN0dWFsX3NpemUp
OworCisgIC8vIENvbXBhcmVzIHRoZSBjb21tb24gcHJlZml4LgorICBjb25zdCBzaXplX3Qgc2hv
cnRlcl9zaXplID0gZXhwZWN0ZWRfZGF0YV9zaXplIDw9IGFjdHVhbF9zaXplID8KKyAgICAgIGV4
cGVjdGVkX2RhdGFfc2l6ZSA6IGFjdHVhbF9zaXplOworICBzaXplX3QgaSA9IDA7CisgIGZvciAo
OyBpIDwgc2hvcnRlcl9zaXplOyArK2kpIHsKKyAgICBBU1NFUlRfU1RSRVEoZXhwZWN0ZWRfZGF0
YVtpXSwgZGF0YVtpXS5jX3N0cigpKQorICAgICAgICA8PCAiYXQgcG9zaXRpb24gIiA8PCBpOwor
ICB9CisKKyAgLy8gUHJpbnRzIGV4dHJhIGVsZW1lbnRzIGluIHRoZSBhY3R1YWwgZGF0YS4KKyAg
Zm9yICg7IGkgPCBhY3R1YWxfc2l6ZTsgKytpKSB7CisgICAgcHJpbnRmKCIgIEFjdHVhbCBldmVu
dCAjJWx1OiAlc1xuIiwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaSksIGRh
dGFbaV0uY19zdHIoKSk7CisgIH0KK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2
KSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBldmVudHM7CisgIGdfZXZlbnRzID0gJmV2
ZW50czsKKyAgSW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworCisgIFVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5saXN0ZW5lcnMoKS5BcHBlbmQoCisgICAgICBuZXcgRXZlbnRSZWNvcmRpbmdM
aXN0ZW5lcigiMXN0IikpOworICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCku
QXBwZW5kKAorICAgICAgbmV3IEV2ZW50UmVjb3JkaW5nTGlzdGVuZXIoIjJuZCIpKTsKKworICBB
ZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEVudmlyb25tZW50SW52b2NhdGlvbkNhdGNoZXIp
OworCisgIEdURVNUX0NIRUNLXyhldmVudHMuc2l6ZSgpID09IDApCisgICAgICA8PCAiQWRkR2xv
YmFsVGVzdEVudmlyb25tZW50IHNob3VsZCBub3QgZ2VuZXJhdGUgYW55IGV2ZW50cyBpdHNlbGYu
IjsKKworICA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcocmVwZWF0KSA9IDI7CisgIGludCByZXRfdmFs
ID0gUlVOX0FMTF9URVNUUygpOworCisgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkX2V2ZW50
c1tdID0geworICAgICIxc3QuT25UZXN0UHJvZ3JhbVN0YXJ0IiwKKyAgICAiMm5kLk9uVGVzdFBy
b2dyYW1TdGFydCIsCisgICAgIjFzdC5PblRlc3RJdGVyYXRpb25TdGFydCgwKSIsCisgICAgIjJu
ZC5PblRlc3RJdGVyYXRpb25TdGFydCgwKSIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVw
U3RhcnQiLAorICAgICIybmQuT25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0IiwKKyAgICAiRW52aXJv
bm1lbnQ6OlNldFVwIiwKKyAgICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiLAorICAgICIx
c3QuT25FbnZpcm9ubWVudHNTZXRVcEVuZCIsCisgICAgIjFzdC5PblRlc3RDYXNlU3RhcnQiLAor
ICAgICIybmQuT25UZXN0Q2FzZVN0YXJ0IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcFRlc3RD
YXNlIiwKKyAgICAiMXN0Lk9uVGVzdFN0YXJ0IiwKKyAgICAiMm5kLk9uVGVzdFN0YXJ0IiwKKyAg
ICAiTGlzdGVuZXJUZXN0OjpTZXRVcCIsCisgICAgIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHki
LAorICAgICIxc3QuT25UZXN0UGFydFJlc3VsdCIsCisgICAgIjJuZC5PblRlc3RQYXJ0UmVzdWx0
IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93biIsCisgICAgIjJuZC5PblRlc3RFbmQiLAor
ICAgICIxc3QuT25UZXN0RW5kIiwKKyAgICAiMXN0Lk9uVGVzdFN0YXJ0IiwKKyAgICAiMm5kLk9u
VGVzdFN0YXJ0IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcCIsCisgICAgIkxpc3RlbmVyVGVz
dDo6KiBUZXN0IEJvZHkiLAorICAgICIxc3QuT25UZXN0UGFydFJlc3VsdCIsCisgICAgIjJuZC5P
blRlc3RQYXJ0UmVzdWx0IiwKKyAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93biIsCisgICAgIjJu
ZC5PblRlc3RFbmQiLAorICAgICIxc3QuT25UZXN0RW5kIiwKKyAgICAiTGlzdGVuZXJUZXN0OjpU
ZWFyRG93blRlc3RDYXNlIiwKKyAgICAiMm5kLk9uVGVzdENhc2VFbmQiLAorICAgICIxc3QuT25U
ZXN0Q2FzZUVuZCIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiLAorICAg
ICIybmQuT25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0IiwKKyAgICAiRW52aXJvbm1lbnQ6OlRl
YXJEb3duIiwKKyAgICAiMm5kLk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiLAorICAgICIxc3Qu
T25FbnZpcm9ubWVudHNUZWFyRG93bkVuZCIsCisgICAgIjJuZC5PblRlc3RJdGVyYXRpb25FbmQo
MCkiLAorICAgICIxc3QuT25UZXN0SXRlcmF0aW9uRW5kKDApIiwKKyAgICAiMXN0Lk9uVGVzdEl0
ZXJhdGlvblN0YXJ0KDEpIiwKKyAgICAiMm5kLk9uVGVzdEl0ZXJhdGlvblN0YXJ0KDEpIiwKKyAg
ICAiMXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIsCisgICAgIjJuZC5PbkVudmlyb25tZW50
c1NldFVwU3RhcnQiLAorICAgICJFbnZpcm9ubWVudDo6U2V0VXAiLAorICAgICIybmQuT25FbnZp
cm9ubWVudHNTZXRVcEVuZCIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVwRW5kIiwKKyAg
ICAiMXN0Lk9uVGVzdENhc2VTdGFydCIsCisgICAgIjJuZC5PblRlc3RDYXNlU3RhcnQiLAorICAg
ICJMaXN0ZW5lclRlc3Q6OlNldFVwVGVzdENhc2UiLAorICAgICIxc3QuT25UZXN0U3RhcnQiLAor
ICAgICIybmQuT25UZXN0U3RhcnQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwKKyAgICAi
TGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCisgICAgIjFzdC5PblRlc3RQYXJ0UmVzdWx0IiwK
KyAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3du
IiwKKyAgICAiMm5kLk9uVGVzdEVuZCIsCisgICAgIjFzdC5PblRlc3RFbmQiLAorICAgICIxc3Qu
T25UZXN0U3RhcnQiLAorICAgICIybmQuT25UZXN0U3RhcnQiLAorICAgICJMaXN0ZW5lclRlc3Q6
OlNldFVwIiwKKyAgICAiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCisgICAgIjFzdC5PblRl
c3RQYXJ0UmVzdWx0IiwKKyAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAorICAgICJMaXN0ZW5l
clRlc3Q6OlRlYXJEb3duIiwKKyAgICAiMm5kLk9uVGVzdEVuZCIsCisgICAgIjFzdC5PblRlc3RF
bmQiLAorICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duVGVzdENhc2UiLAorICAgICIybmQuT25U
ZXN0Q2FzZUVuZCIsCisgICAgIjFzdC5PblRlc3RDYXNlRW5kIiwKKyAgICAiMXN0Lk9uRW52aXJv
bm1lbnRzVGVhckRvd25TdGFydCIsCisgICAgIjJuZC5PbkVudmlyb25tZW50c1RlYXJEb3duU3Rh
cnQiLAorICAgICJFbnZpcm9ubWVudDo6VGVhckRvd24iLAorICAgICIybmQuT25FbnZpcm9ubWVu
dHNUZWFyRG93bkVuZCIsCisgICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5kIiwKKyAg
ICAiMm5kLk9uVGVzdEl0ZXJhdGlvbkVuZCgxKSIsCisgICAgIjFzdC5PblRlc3RJdGVyYXRpb25F
bmQoMSkiLAorICAgICIybmQuT25UZXN0UHJvZ3JhbUVuZCIsCisgICAgIjFzdC5PblRlc3RQcm9n
cmFtRW5kIgorICB9OworICBWZXJpZnlSZXN1bHRzKGV2ZW50cywKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZF9ldmVudHMsCisgICAgICAgICAgICAgICAgc2l6ZW9mKGV4cGVjdGVkX2V2ZW50cykv
c2l6ZW9mKGV4cGVjdGVkX2V2ZW50c1swXSkpOworCisgIC8vIFdlIG5lZWQgdG8gY2hlY2sgbWFu
dWFsbHkgZm9yIGFkIGhvYyB0ZXN0IGZhaWx1cmVzIHRoYXQgaGFwcGVuIGFmdGVyCisgIC8vIFJV
Tl9BTExfVEVTVFMgZmluaXNoZXMuCisgIGlmIChVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+RmFp
bGVkKCkpCisgICAgcmV0X3ZhbCA9IDE7CisKKyAgcmV0dXJuIHJldF92YWw7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtbWVzc2FnZS10ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW1lc3NhZ2UtdGVz
dC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNjQ0NTg1M2U0MzNkM2MxNDM0NTI1NzM5MWE2Yjk4OGE5ZDM4MGVm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0
ZXN0LW1lc3NhZ2UtdGVzdC5jYwpAQCAtMCwwICsxLDE1OCBAQAorLy8gQ29weXJpZ2h0IDIwMDUs
IEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gVGVzdHMgZm9yIHRoZSBNZXNzYWdl
IGNsYXNzLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgorCisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsKKwordXNpbmcgOjp0ZXN0aW5nOjpNZXNzYWdl
OworCisvLyBUZXN0cyB0aGUgdGVzdGluZzo6TWVzc2FnZSBjbGFzcworCisvLyBUZXN0cyB0aGUg
ZGVmYXVsdCBjb25zdHJ1Y3Rvci4KK1RFU1QoTWVzc2FnZVRlc3QsIERlZmF1bHRDb25zdHJ1Y3Rv
cikgeworICBjb25zdCBNZXNzYWdlIG1zZzsKKyAgRVhQRUNUX0VRKCIiLCBtc2cuR2V0U3RyaW5n
KCkpOworfQorCisvLyBUZXN0cyB0aGUgY29weSBjb25zdHJ1Y3Rvci4KK1RFU1QoTWVzc2FnZVRl
c3QsIENvcHlDb25zdHJ1Y3RvcikgeworICBjb25zdCBNZXNzYWdlIG1zZzEoIkhlbGxvIik7Cisg
IGNvbnN0IE1lc3NhZ2UgbXNnMihtc2cxKTsKKyAgRVhQRUNUX0VRKCJIZWxsbyIsIG1zZzIuR2V0
U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSBNZXNzYWdlIGZyb20gYSBD
LXN0cmluZy4KK1RFU1QoTWVzc2FnZVRlc3QsIENvbnN0cnVjdHNGcm9tQ1N0cmluZykgeworICBN
ZXNzYWdlIG1zZygiSGVsbG8iKTsKKyAgRVhQRUNUX0VRKCJIZWxsbyIsIG1zZy5HZXRTdHJpbmco
KSk7Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIGZsb2F0LgorVEVTVChNZXNzYWdlVGVzdCwg
U3RyZWFtc0Zsb2F0KSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHMgPSAoTWVzc2FnZSgpIDw8IDEu
MjM0NTZGIDw8ICIgIiA8PCAyLjM0NTY3RikuR2V0U3RyaW5nKCk7CisgIC8vIEJvdGggbnVtYmVy
cyBzaG91bGQgYmUgcHJpbnRlZCB3aXRoIGVub3VnaCBwcmVjaXNpb24uCisgIEVYUEVDVF9QUkVE
X0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIxLjIzNDU2MCIsIHMuY19zdHIoKSk7Cisg
IEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIgMi4zNDU2NjkiLCBz
LmNfc3RyKCkpOworfQorCisvLyBUZXN0cyBzdHJlYW1pbmcgYSBkb3VibGUuCitURVNUKE1lc3Nh
Z2VUZXN0LCBTdHJlYW1zRG91YmxlKSB7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHMgPSAoTWVzc2Fn
ZSgpIDw8IDEyNjA1NzA4ODAuNDU1NTQ5NyA8PCAiICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAxMjYwNTcyMjY1LjE5NTQ1MzQpLkdldFN0cmluZygpOworICAvLyBCb3Ro
IG51bWJlcnMgc2hvdWxkIGJlIHByaW50ZWQgd2l0aCBlbm91Z2ggcHJlY2lzaW9uLgorICBFWFBF
Q1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6OklzU3Vic3RyaW5nLCAiMTI2MDU3MDg4MC40NSIsIHMu
Y19zdHIoKSk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIg
MTI2MDU3MjI2NS4xOSIsIHMuY19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIG5v
bi1jaGFyIHBvaW50ZXIuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zUG9pbnRlcikgeworICBp
bnQgbiA9IDA7CisgIGludCogcCA9ICZuOworICBFWFBFQ1RfTkUoIihudWxsKSIsIChNZXNzYWdl
KCkgPDwgcCkuR2V0U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyBzdHJlYW1pbmcgYSBOVUxMIG5v
bi1jaGFyIHBvaW50ZXIuCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zTnVsbFBvaW50ZXIpIHsK
KyAgaW50KiBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCIobnVsbCkiLCAoTWVzc2FnZSgpIDw8IHAp
LkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGEgQyBzdHJpbmcuCitURVNU
KE1lc3NhZ2VUZXN0LCBTdHJlYW1zQ1N0cmluZykgeworICBFWFBFQ1RfRVEoIkZvbyIsIChNZXNz
YWdlKCkgPDwgIkZvbyIpLkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGEg
TlVMTCBDIHN0cmluZy4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNOdWxsQ1N0cmluZykgewor
ICBjaGFyKiBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCIobnVsbCkiLCAoTWVzc2FnZSgpIDw8IHAp
LkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIHN0ZDo6c3RyaW5nLgorVEVT
VChNZXNzYWdlVGVzdCwgU3RyZWFtc1N0cmluZykgeworICBjb25zdCA6OnN0ZDo6c3RyaW5nIHN0
cigiSGVsbG8iKTsKKyAgRVhQRUNUX0VRKCJIZWxsbyIsIChNZXNzYWdlKCkgPDwgc3RyKS5HZXRT
dHJpbmcoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgd2UgY2FuIG91dHB1dCBzdHJpbmdzIGNvbnRh
aW5pbmcgZW1iZWRkZWQgTlVMcy4KK1RFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNTdHJpbmdXaXRo
RW1iZWRkZWROVUwpIHsKKyAgY29uc3QgY2hhciBjaGFyX2FycmF5X3dpdGhfbnVsW10gPQorICAg
ICAgIkhlcmUncyBhIE5VTFwwIGFuZCBzb21lIG1vcmUgc3RyaW5nIjsKKyAgY29uc3QgOjpzdGQ6
OnN0cmluZyBzdHJpbmdfd2l0aF9udWwoY2hhcl9hcnJheV93aXRoX251bCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGNoYXJfYXJyYXlfd2l0aF9udWwpIC0g
MSk7CisgIEVYUEVDVF9FUSgiSGVyZSdzIGEgTlVMXFwwIGFuZCBzb21lIG1vcmUgc3RyaW5nIiwK
KyAgICAgICAgICAgIChNZXNzYWdlKCkgPDwgc3RyaW5nX3dpdGhfbnVsKS5HZXRTdHJpbmcoKSk7
Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIE5VTCBjaGFyLgorVEVTVChNZXNzYWdlVGVzdCwg
U3RyZWFtc05VTENoYXIpIHsKKyAgRVhQRUNUX0VRKCJcXDAiLCAoTWVzc2FnZSgpIDw8ICdcMCcp
LkdldFN0cmluZygpKTsKK30KKworLy8gVGVzdHMgc3RyZWFtaW5nIGludC4KK1RFU1QoTWVzc2Fn
ZVRlc3QsIFN0cmVhbXNJbnQpIHsKKyAgRVhQRUNUX0VRKCIxMjMiLCAoTWVzc2FnZSgpIDw8IDEy
MykuR2V0U3RyaW5nKCkpOworfQorCisvLyBUZXN0cyB0aGF0IGJhc2ljIElPIG1hbmlwdWxhdG9y
cyAoZW5kbCwgZW5kcywgYW5kIGZsdXNoKSBjYW4gYmUKKy8vIHN0cmVhbWVkIHRvIE1lc3NhZ2Uu
CitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zQmFzaWNJb01hbmlwKSB7CisgIEVYUEVDVF9FUSgi
TGluZSAxLlxuQSBOVUwgY2hhciBcXDAgaW4gbGluZSAyLiIsCisgICAgICAgICAgICAgICAoTWVz
c2FnZSgpIDw8ICJMaW5lIDEuIiA8PCBzdGQ6OmVuZGwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCAiQSBOVUwgY2hhciAiIDw8IHN0ZDo6ZW5kcyA8PCBzdGQ6OmZsdXNoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgIiBpbiBsaW5lIDIuIikuR2V0U3RyaW5nKCkpOworfQorCisvLyBU
ZXN0cyBNZXNzYWdlOjpHZXRTdHJpbmcoKQorVEVTVChNZXNzYWdlVGVzdCwgR2V0U3RyaW5nKSB7
CisgIE1lc3NhZ2UgbXNnOworICBtc2cgPDwgMSA8PCAiIGxhbWIiOworICBFWFBFQ1RfRVEoIjEg
bGFtYiIsIG1zZy5HZXRTdHJpbmcoKSk7Cit9CisKKy8vIFRlc3RzIHN0cmVhbWluZyBhIE1lc3Nh
Z2Ugb2JqZWN0IHRvIGFuIG9zdHJlYW0uCitURVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zVG9PU3Ry
ZWFtKSB7CisgIE1lc3NhZ2UgbXNnKCJIZWxsbyIpOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNz
OworICBzcyA8PCBtc2c7CisgIEVYUEVDVF9FUSgiSGVsbG8iLCB0ZXN0aW5nOjppbnRlcm5hbDo6
U3RyaW5nU3RyZWFtVG9TdHJpbmcoJnNzKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBNZXNzYWdl
IG9iamVjdCBkb2Vzbid0IHRha2UgdXAgdG9vIG11Y2ggc3RhY2sgc3BhY2UuCitURVNUKE1lc3Nh
Z2VUZXN0LCBEb2VzTm90VGFrZVVwTXVjaFN0YWNrU3BhY2UpIHsKKyAgRVhQRUNUX0xFKHNpemVv
ZihNZXNzYWdlKSwgMTZVKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3B0aW9ucy10ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW9wdGlvbnMtdGVzdC5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lZGQ0ZWJhM2JkMzEwOTU5NTBhOGQ5OGNmM2RhZjZmMzRkNjQ5NjlmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW9wdGlv
bnMtdGVzdC5jYwpAQCAtMCwwICsxLDIxMSBAQAorLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJ
bmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vIEdvb2dsZSBUZXN0IFVuaXRUZXN0T3B0aW9ucyB0ZXN0
cworLy8KKy8vIFRoaXMgZmlsZSB0ZXN0cyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRl
cm5hbGx5IGJ5CisvLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdp
dGhvdXQgbm90aWNlLgorLy8KKy8vIFRoaXMgZmlsZSBpcyAjaW5jbHVkZWQgZnJvbSBndGVzdC5j
YywgdG8gYXZvaWQgY2hhbmdpbmcgYnVpbGQgb3IKKy8vIG1ha2UtZmlsZXMgb24gV2luZG93cyBh
bmQgb3RoZXIgcGxhdGZvcm1zLiBEbyBub3QgI2luY2x1ZGUgdGhpcyBmaWxlCisvLyBhbnl3aGVy
ZSBlbHNlIQorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lmIEdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCisjIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbGlmIEdURVNUX09TX1dJTkRPV1MK
KyMgaW5jbHVkZSA8ZGlyZWN0Lmg+CisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxF
CisKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCisKK25hbWVzcGFjZSB0ZXN0
aW5nIHsKK25hbWVzcGFjZSBpbnRlcm5hbCB7CituYW1lc3BhY2UgeworCisvLyBUdXJucyB0aGUg
Z2l2ZW4gcmVsYXRpdmUgcGF0aCBpbnRvIGFuIGFic29sdXRlIHBhdGguCitGaWxlUGF0aCBHZXRB
YnNvbHV0ZVBhdGhPZihjb25zdCBGaWxlUGF0aCYgcmVsYXRpdmVfcGF0aCkgeworICByZXR1cm4g
RmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCksIHJlbGF0aXZl
X3BhdGgpOworfQorCisvLyBUZXN0aW5nIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0
L0dldE91dHB1dEZpbGUuCisKK1RFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0Rm9ybWF0RGVm
YXVsdCkgeworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAiIjsKKyAgRVhQRUNUX1NUUkVRKCIiLCBV
bml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZvcm1hdCgpLmNfc3RyKCkpOworfQorCitURVNUKFht
bE91dHB1dFRlc3QsIEdldE91dHB1dEZvcm1hdCkgeworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAi
eG1sOmZpbGVuYW1lIjsKKyAgRVhQRUNUX1NUUkVRKCJ4bWwiLCBVbml0VGVzdE9wdGlvbnM6Okdl
dE91dHB1dEZvcm1hdCgpLmNfc3RyKCkpOworfQorCitURVNUKFhtbE91dHB1dFRlc3QsIEdldE91
dHB1dEZpbGVEZWZhdWx0KSB7CisgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICIiOworICBFWFBFQ1Rf
RVEoR2V0QWJzb2x1dGVQYXRoT2YoRmlsZVBhdGgoInRlc3RfZGV0YWlsLnhtbCIpKS5zdHJpbmco
KSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRG
aWxlKCkpOworfQorCitURVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZpbGVTaW5nbGVGaWxl
KSB7CisgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6ZmlsZW5hbWUuYWJjIjsKKyAgRVhQRUNU
X0VRKEdldEFic29sdXRlUGF0aE9mKEZpbGVQYXRoKCJmaWxlbmFtZS5hYmMiKSkuc3RyaW5nKCks
CisgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0Rmls
ZSgpKTsKK30KKworVEVTVChYbWxPdXRwdXRUZXN0LCBHZXRPdXRwdXRGaWxlRnJvbURpcmVjdG9y
eVBhdGgpIHsKKyAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbDpwYXRoIiBHVEVTVF9QQVRIX1NF
UF87CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdGVkX291dHB1dF9maWxlID0KKyAgICAgIEdl
dEFic29sdXRlUGF0aE9mKAorICAgICAgICAgIEZpbGVQYXRoKHN0ZDo6c3RyaW5nKCJwYXRoIikg
KyBHVEVTVF9QQVRIX1NFUF8gKworICAgICAgICAgICAgICAgICAgIEdldEN1cnJlbnRFeGVjdXRh
YmxlTmFtZSgpLnN0cmluZygpICsgIi54bWwiKSkuc3RyaW5nKCk7CisgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBvdXRwdXRfZmlsZSA9CisgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0
aFRvT3V0cHV0RmlsZSgpOworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgRVhQRUNUX1NUUkNBU0VF
UShleHBlY3RlZF9vdXRwdXRfZmlsZS5jX3N0cigpLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKKyNl
bHNlCisgIEVYUEVDVF9FUShleHBlY3RlZF9vdXRwdXRfZmlsZSwgb3V0cHV0X2ZpbGUuY19zdHIo
KSk7CisjZW5kaWYKK30KKworVEVTVChPdXRwdXRGaWxlSGVscGVyc1Rlc3QsIEdldEN1cnJlbnRF
eGVjdXRhYmxlTmFtZSkgeworICBjb25zdCBzdGQ6OnN0cmluZyBleGVfc3RyID0gR2V0Q3VycmVu
dEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCk7CisjaWYgR1RFU1RfT1NfV0lORE9XUworICBjb25z
dCBib29sIHN1Y2Nlc3MgPQorICAgICAgX3N0cmNtcGkoImdvb2dsZXRlc3Qtb3B0aW9ucy10ZXN0
IiwgZXhlX3N0ci5jX3N0cigpKSA9PSAwIHx8CisgICAgICBfc3RyY21waSgiZ3Rlc3Qtb3B0aW9u
cy1leF90ZXN0IiwgZXhlX3N0ci5jX3N0cigpKSA9PSAwIHx8CisgICAgICBfc3RyY21waSgiZ3Rl
c3RfYWxsX3Rlc3QiLCBleGVfc3RyLmNfc3RyKCkpID09IDAgfHwKKyAgICAgIF9zdHJjbXBpKCJn
dGVzdF9kbGxfdGVzdCIsIGV4ZV9zdHIuY19zdHIoKSkgPT0gMDsKKyNlbGlmIEdURVNUX09TX0ZV
Q0hTSUEKKyAgY29uc3QgYm9vbCBzdWNjZXNzID0gZXhlX3N0ciA9PSAiYXBwIjsKKyNlbHNlCisg
IC8vIEZJWE1FOiByZW1vdmUgdGhlIGhhcmQtY29kZWQgImx0LSIgcHJlZml4IHdoZW4gbGlidG9v
bCByZXBsYWNlbWVudCBpcyByZWFkeQorICBjb25zdCBib29sIHN1Y2Nlc3MgPQorICAgICAgZXhl
X3N0ciA9PSAiZ29vZ2xldGVzdC1vcHRpb25zLXRlc3QiIHx8CisgICAgICBleGVfc3RyID09ICJn
dGVzdF9hbGxfdGVzdCIgfHwKKyAgICAgIGV4ZV9zdHIgPT0gImx0LWd0ZXN0X2FsbF90ZXN0IiB8
fAorICAgICAgZXhlX3N0ciA9PSAiZ3Rlc3RfZGxsX3Rlc3QiOworI2VuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCisgIGlmICghc3VjY2VzcykKKyAgICBGQUlMKCkgPDwgIkdldEN1cnJlbnRFeGVj
dXRhYmxlTmFtZSgpIHJldHVybnMgIiA8PCBleGVfc3RyOworfQorCisjaWYgIUdURVNUX09TX0ZV
Q0hTSUEKKworY2xhc3MgWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCA6IHB1YmxpYyBUZXN0IHsKKyBw
cm90ZWN0ZWQ6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBvcmlnaW5hbF93b3JraW5n
X2Rpcl8gPSBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpOworICAgIHBvc2l4OjpDaERpcigiLi4i
KTsKKyAgICAvLyBUaGlzIHdpbGwgbWFrZSB0aGUgdGVzdCBmYWlsIGlmIHJ1biBmcm9tIHRoZSBy
b290IGRpcmVjdG9yeS4KKyAgICBFWFBFQ1RfTkUob3JpZ2luYWxfd29ya2luZ19kaXJfLnN0cmlu
ZygpLAorICAgICAgICAgICAgICBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpLnN0cmluZygpKTsK
KyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBwb3NpeDo6Q2hEaXIob3Jp
Z2luYWxfd29ya2luZ19kaXJfLnN0cmluZygpLmNfc3RyKCkpOworICB9CisKKyAgRmlsZVBhdGgg
b3JpZ2luYWxfd29ya2luZ19kaXJfOworfTsKKworVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRl
c3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aERlZmF1bHQpIHsKKyAgR1RFU1RfRkxB
RyhvdXRwdXQpID0gIiI7CisgIEVYUEVDVF9FUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2lu
YWxfd29ya2luZ19kaXJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQ
YXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuc3RyaW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9w
dGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKK30KKworVEVTVF9GKFhtbE91
dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aERlZmF1bHRY
TUwpIHsKKyAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbCI7CisgIEVYUEVDVF9FUShGaWxlUGF0
aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuc3RyaW5nKCksCisg
ICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgp
KTsKK30KKworVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxX
b3JraW5nRGlyV2l0aFJlbGF0aXZlRmlsZSkgeworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1s
OmZpbGVuYW1lLmFiYyI7CisgIEVYUEVDVF9FUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2lu
YWxfd29ya2luZ19kaXJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQ
YXRoKCJmaWxlbmFtZS5hYmMiKSkuc3RyaW5nKCksCisgICAgICAgICAgICBVbml0VGVzdE9wdGlv
bnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKK30KKworVEVTVF9GKFhtbE91dHB1
dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aFJlbGF0aXZlUGF0
aCkgeworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOnBhdGgiIEdURVNUX1BBVEhfU0VQXzsK
KyAgY29uc3Qgc3RkOjpzdHJpbmcgZXhwZWN0ZWRfb3V0cHV0X2ZpbGUgPQorICAgICAgRmlsZVBh
dGg6OkNvbmNhdFBhdGhzKAorICAgICAgICAgIG9yaWdpbmFsX3dvcmtpbmdfZGlyXywKKyAgICAg
ICAgICBGaWxlUGF0aChzdGQ6OnN0cmluZygicGF0aCIpICsgR1RFU1RfUEFUSF9TRVBfICsKKyAg
ICAgICAgICAgICAgICAgICBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmcoKSArICIu
eG1sIikpLnN0cmluZygpOworICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2ZpbGUgPQorICAg
ICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKTsKKyNpZiBH
VEVTVF9PU19XSU5ET1dTCisgIEVYUEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUu
Y19zdHIoKSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7CisjZWxzZQorICBFWFBFQ1RfRVEoZXhwZWN0
ZWRfb3V0cHV0X2ZpbGUsIG91dHB1dF9maWxlLmNfc3RyKCkpOworI2VuZGlmCit9CisKK1RFU1Rf
RihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhB
YnNvbHV0ZUZpbGUpIHsKKyNpZiBHVEVTVF9PU19XSU5ET1dTCisgIEdURVNUX0ZMQUcob3V0cHV0
KSA9ICJ4bWw6YzpcXHRtcFxcZmlsZW5hbWUuYWJjIjsKKyAgRVhQRUNUX0VRKEZpbGVQYXRoKCJj
OlxcdG1wXFxmaWxlbmFtZS5hYmMiKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIFVuaXRUZXN0T3B0
aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOworI2Vsc2UKKyAgR1RFU1RfRkxB
RyhvdXRwdXQpID0ieG1sOi90bXAvZmlsZW5hbWUuYWJjIjsKKyAgRVhQRUNUX0VRKEZpbGVQYXRo
KCIvdG1wL2ZpbGVuYW1lLmFiYyIpLnN0cmluZygpLAorICAgICAgICAgICAgVW5pdFRlc3RPcHRp
b25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSk7CisjZW5kaWYKK30KKworVEVTVF9G
KFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aEFi
c29sdXRlUGF0aCkgeworI2lmIEdURVNUX09TX1dJTkRPV1MKKyAgY29uc3Qgc3RkOjpzdHJpbmcg
cGF0aCA9ICJjOlxcdG1wXFwiOworI2Vsc2UKKyAgY29uc3Qgc3RkOjpzdHJpbmcgcGF0aCA9ICIv
dG1wLyI7CisjZW5kaWYKKworICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOiIgKyBwYXRoOwor
ICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3RlZF9vdXRwdXRfZmlsZSA9CisgICAgICBwYXRoICsg
R2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKyAiLnhtbCI7CisgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBvdXRwdXRfZmlsZSA9CisgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29s
dXRlUGF0aFRvT3V0cHV0RmlsZSgpOworCisjaWYgR1RFU1RfT1NfV0lORE9XUworICBFWFBFQ1Rf
U1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxlLmNfc3RyKCksIG91dHB1dF9maWxlLmNfc3Ry
KCkpOworI2Vsc2UKKyAgRVhQRUNUX0VRKGV4cGVjdGVkX291dHB1dF9maWxlLCBvdXRwdXRfZmls
ZS5jX3N0cigpKTsKKyNlbmRpZgorfQorCisjZW5kaWYgIC8vICFHVEVTVF9PU19GVUNIU0lBCisK
K30gIC8vIG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCit9ICAvLyBuYW1lc3Bh
Y2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LW91dHB1dC10ZXN0LWdvbGRlbi1saW4udHh0IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0LWdvbGRlbi1saW4udHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg2ZGE4NDViN2QwNGVhMWYyYjU1MzQ2MDRlZTljMGQyYjVmODU5MTYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Qt
Z29sZGVuLWxpbi50eHQKQEAgLTAsMCArMSwxMDQ3IEBACitUaGUgbm9uLXRlc3QgcGFydCBvZiB0
aGUgY29kZSBpcyBleHBlY3RlZCB0byBoYXZlIDIgZmFpbHVyZXMuCisKK2dvb2dsZXRlc3Qtb3V0
cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK1ZhbHVlIG9mOiBmYWxzZQorICBBY3R1YWw6IGZhbHNl
CitFeHBlY3RlZDogdHJ1ZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91
dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1
ZXM6CisgIDIKKyAgMworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzJtWz09PT09PT09
PT1dIBtbbVJ1bm5pbmcgNzYgdGVzdHMgZnJvbSAzNCB0ZXN0IGNhc2VzLgorG1swOzMybVstLS0t
LS0tLS0tXSAbW21HbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCitGb29FbnZpcm9ubWVu
dDo6U2V0VXAoKSBjYWxsZWQuCitCYXJFbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuCisbWzA7
MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEFEZWF0aFRlc3QKKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttQURlYXRoVGVzdC5TaG91bGRSdW5GaXJzdAorG1swOzMybVsgICAgICAgT0sgXSAb
W21BRGVhdGhUZXN0LlNob3VsZFJ1bkZpcnN0CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVz
dCBmcm9tIEFUeXBlZERlYXRoVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDszMm1b
IFJVTiAgICAgIF0gG1ttQVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1b
ICAgICAgIE9LIF0gG1ttQVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1b
LS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gQVR5cGVkRGVhdGhUZXN0LzEsIHdoZXJlIFR5cGVQ
YXJhbSA9IGRvdWJsZQorG1swOzMybVsgUlVOICAgICAgXSAbW21BVHlwZWREZWF0aFRlc3QvMS5T
aG91bGRSdW5GaXJzdAorG1swOzMybVsgICAgICAgT0sgXSAbW21BVHlwZWREZWF0aFRlc3QvMS5T
aG91bGRSdW5GaXJzdAorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBNeS9BVHlw
ZVBhcmFtRGVhdGhUZXN0LzAsIHdoZXJlIFR5cGVQYXJhbSA9IGludAorG1swOzMybVsgUlVOICAg
ICAgXSAbW21NeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1b
ICAgICAgIE9LIF0gG1ttTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Cisb
WzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIE15L0FUeXBlUGFyYW1EZWF0aFRlc3Qv
MSwgd2hlcmUgVHlwZVBhcmFtID0gZG91YmxlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbU15L0FU
eXBlUGFyYW1EZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAorG1swOzMybVsgICAgICAgT0sgXSAb
W21NeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKKxtbMDszMm1bLS0tLS0t
LS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFBhc3NpbmdUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtb
bVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MQorG1swOzMybVsgICAgICAgT0sgXSAbW21QYXNzaW5n
VGVzdC5QYXNzaW5nVGVzdDEKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttUGFzc2luZ1Rlc3QuUGFz
c2luZ1Rlc3QyCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0
MgorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gTm9uZmF0YWxGYWlsdXJlVGVz
dAorG1swOzMybVsgUlVOICAgICAgXSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkVzY2FwZXNTdHJp
bmdPcGVyYW5kcworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0
ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICBrR29sZGVuU3RyaW5nCisgICAgV2hpY2gg
aXM6ICJcIkxpbmUiCisgIGFjdHVhbAorICAgIFdoaWNoIGlzOiAiYWN0dWFsIFwic3RyaW5nXCIi
CitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6
IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgZ29sZGVuCisg
ICAgV2hpY2ggaXM6ICJcIkxpbmUiCisgIGFjdHVhbAorICAgIFdoaWNoIGlzOiAiYWN0dWFsIFwi
c3RyaW5nXCIiCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0g
G1ttTm9uZmF0YWxGYWlsdXJlVGVzdC5Fc2NhcGVzU3RyaW5nT3BlcmFuZHMKKxtbMDszMm1bIFJV
TiAgICAgIF0gG1ttTm9uZmF0YWxGYWlsdXJlVGVzdC5EaWZmRm9yTG9uZ1N0cmluZ3MKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRo
ZXNlIHZhbHVlczoKKyAgZ29sZGVuX3N0cgorICAgIFdoaWNoIGlzOiAiXCJMaW5lXDAgMVwiXG5M
aW5lIDIiCisgICJMaW5lIDIiCitXaXRoIGRpZmY6CitAQCAtMSwyIEBACistXCJMaW5lXDAgMVwi
CisgTGluZSAyCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkRpZmZGb3JMb25nU3RyaW5ncworG1swOzMybVstLS0t
LS0tLS0tXSAbW20zIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdAorG1swOzMybVsgUlVOICAg
ICAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQorKGV4cGVj
dGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVz
dF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAx
CisgIHgKKyAgICBXaGljaCBpczogMgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFt
WyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5l
CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5O
ZXN0ZWRTdWJyb3V0aW5lCisoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEp
Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0
eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAgeAorICAgIFdoaWNoIGlzOiAyCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5G
YXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRmF0
YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKKyhleHBlY3RpbmcgYSBm
YWlsdXJlIG9uIGZhbHNlKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQor
VmFsdWUgb2Y6IGZhbHNlCisgIEFjdHVhbDogZmFsc2UKK0V4cGVjdGVkOiB0cnVlCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVz
dC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0
ZXN0IGZyb20gTG9nZ2luZ1Rlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttTG9nZ2luZ1Rlc3Qu
SW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKKyhleHBlY3RpbmcgMiBmYWlsdXJlcyBv
biAoMykgPj0gKGFbaV0pKQoraSA9PSAwCitpID09IDEKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgOQor
U3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitpID09IDIKK2kgPT0gMworZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDog
MyB2cyA2CitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
TG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKKxtbMDszMm1bLS0t
LS0tLS0tLV0gG1ttNyB0ZXN0cyBmcm9tIFNDT1BFRF9UUkFDRVRlc3QKKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5BY2NlcHRlZFZhbHVlcworZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitKdXN0IGNoZWNraW5nIHRoYXQgYWxsIHRo
ZXNlIHZhbHVlcyB3b3JrIGZpbmUuCitHb29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0
cHV0LXRlc3RfLmNjOiM6IChudWxsKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogMTMz
NworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izogc3RkOjpzdHJpbmcKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IGxpdGVyYWwgc3RyaW5nCitTdGFjayB0cmFjZTogKG9taXR0ZWQp
CisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5BY2NlcHRlZFZhbHVl
cworG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lk9iZXlzU2NvcGVzCiso
ZXhwZWN0ZWQgdG8gZmFpbCkKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUK
K0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkbid0IGhhdmUgYSB0
cmFjZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8u
Y2M6IzogRmFpbHVyZQorRmFpbGVkCitUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91
bGQgaGF2ZSBhIHRyYWNlLgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBFeHBlY3RlZCB0cmFjZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29n
bGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK1RoaXMgZmFpbHVyZSBp
cyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5PYmV5c1Nj
b3BlcworG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29w
CisoZXhwZWN0ZWQgdG8gZmFpbCkKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1
cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMgorICBuCisgICAgV2hp
Y2ggaXM6IDEKK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6
IzogaSA9IDEKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVz
dF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAx
CisgIG4KKyAgICBXaGljaCBpczogMgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91
dHB1dC10ZXN0Xy5jYzojOiBpID0gMgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFt
WyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJbkxvb3AKKxtbMDszMm1bIFJV
TiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGluZQorKGV4cGVjdGVk
IHRvIGZhaWwpCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3Rl
ZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDIKKyAgbgorICAgIFdoaWNoIGlzOiAxCitH
b29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IG4gPSAxCitT
dGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZh
aWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICBuCisgICAg
V2hpY2ggaXM6IDIKK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8u
Y2M6IzogbiA9IDIKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJyb3V0aW5lCisbWzA7MzJtWyBSVU4gICAg
ICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKKyhleHBlY3RlZCB0byBmYWlsKQor
Z29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkg
b2YgdGhlc2UgdmFsdWVzOgorICAxCisgIG4KKyAgICBXaGljaCBpczogMgorR29vZ2xlIFRlc3Qg
dHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBuID0gMgorZ29vZ2xldGVzdC1v
dXRwdXQtdGVzdF8uY2M6IzogCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZU5lc3RlZAorG1swOzMybVsgUlVOICAg
ICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKKyhleHBlY3RlZCB0byBmYWls
KQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitUaGlzIGZh
aWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLgorR29v
Z2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBBCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUK
K0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJh
Y2UgcG9pbnQgQSBhbmQgQi4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQt
dGVzdF8uY2M6IzogQgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogQQorU3RhY2sgdHJh
Y2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitG
YWlsZWQKK1RoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNl
IHBvaW50IEEsIEIsIGFuZCBDLgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1
dC10ZXN0Xy5jYzojOiBDCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBCCitnb29nbGV0
ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBBCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEQuCitH
b29nbGUgVGVzdCB0cmFjZToKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEQKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEIKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6
IEEKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09Q
RURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttU0NPUEVE
X1RSQUNFVGVzdC5Xb3Jrc0NvbmN1cnJlbnRseQorKGV4cGVjdGluZyA2IGZhaWx1cmVzKQorZ29v
Z2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWls
dXJlICMxIChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBCIGFsaXZlKS4KK0dvb2dsZSBUZXN0IHRy
YWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogVHJhY2UgQgorU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWls
ZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzIgKGluIHRocmVhZCBBLCB0cmFjZSBBICYgQiBib3RoIGFs
aXZlKS4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izog
VHJhY2UgQQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0
Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzMgKGluIHRocmVhZCBC
LCB0cmFjZSBBICYgQiBib3RoIGFsaXZlKS4KK0dvb2dsZSBUZXN0IHRyYWNlOgorZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogVHJhY2UgQgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitn
b29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZh
aWx1cmUgIzQgKGluIHRocmVhZCBCLCBvbmx5IHRyYWNlIEEgYWxpdmUpLgorU3RhY2sgdHJhY2U6
IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWls
ZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzUgKGluIHRocmVhZCBBLCBvbmx5IHRyYWNlIEEgYWxpdmUp
LgorR29vZ2xlIFRlc3QgdHJhY2U6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBUcmFj
ZSBBCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNj
OiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjNiAoaW4gdGhyZWFkIEEsIG5v
IHRyYWNlIGFsaXZlKS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzQ29uY3VycmVudGx5CisbWzA7MzJtWy0tLS0t
LS0tLS1dIBtbbTEgdGVzdCBmcm9tIFNjb3BlZFRyYWNlVGVzdAorG1swOzMybVsgUlVOICAgICAg
XSAbW21TY29wZWRUcmFjZVRlc3QuV2l0aEV4cGxpY2l0RmlsZUFuZExpbmUKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorQ2hlY2sgdGhhdCB0aGUgdHJhY2Ug
aXMgYXR0YWNoZWQgdG8gYSBwYXJ0aWN1bGFyIGxvY2F0aW9uLgorR29vZ2xlIFRlc3QgdHJhY2U6
CitleHBsaWNpdF9maWxlLmNjOjEyMzogZXhwZWN0ZWQgdHJhY2UgbWVzc2FnZQorU3RhY2sgdHJh
Y2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNjb3BlZFRyYWNlVGVzdC5X
aXRoRXhwbGljaXRGaWxlQW5kTGluZQorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJv
bSBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QKKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJ
bkNvbnN0cnVjdG9yCisoZXhwZWN0aW5nIDUgZmFpbHVyZXMpCitnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0
ZXN0IGZpeHR1cmUgYyd0b3IuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qt
b3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMiwg
aW4gU2V0VXAoKS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQt
dGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUg
dGVzdCBib2R5LgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzQsIGluIFRlYXJE
b3duLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5j
YzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzUsIGluIHRoZSB0ZXN0IGZp
eHR1cmUgZCd0b3IuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQg
IF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNv
bnN0cnVjdG9yCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEZhdGFsRmFpbHVy
ZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZh
aWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKKyhleHBl
Y3RpbmcgMiBmYWlsdXJlcykKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUK
K0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4K
K1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izog
RmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJl
IGQndG9yLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3Rv
cgorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBOb25GYXRhbEZhaWx1cmVJblNl
dFVwVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21Ob25GYXRhbEZhaWx1cmVJblNldFVwVGVz
dC5GYWlsdXJlSW5TZXRVcAorKGV4cGVjdGluZyA0IGZhaWx1cmVzKQorZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBT
ZXRVcCgpLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0
Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0
IGZ1bmN0aW9uLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzMsIGluIFRlYXJE
b3duKCkuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gdGhlIHRlc3Qg
Zml4dHVyZSBkJ3Rvci4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAorG1swOzMy
bVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBGYXRhbEZhaWx1cmVJblNldFVwVGVzdAorG1sw
OzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRV
cAorKGV4cGVjdGluZyAzIGZhaWx1cmVzKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6Izog
RmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLgorU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJl
CitGYWlsZWQKK0V4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRlYXJEb3duKCkuCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0Zh
aWxlZAorRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KK1N0
YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1
cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAorG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRl
c3QgZnJvbSBBZGRGYWlsdXJlQXRUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUFkZEZhaWx1
cmVBdFRlc3QuTWVzc2FnZUNvbnRhaW5zU3BlY2lmaWVkRmlsZUFuZExpbmVOdW1iZXIKK2Zvby5j
Yzo0MjogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYWlsdXJlIGluIGZvby5jYworU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUFkZEZhaWx1cmVBdFRl
c3QuTWVzc2FnZUNvbnRhaW5zU3BlY2lmaWVkRmlsZUFuZExpbmVOdW1iZXIKKxtbMDszMm1bLS0t
LS0tLS0tLV0gG1ttNCB0ZXN0cyBmcm9tIE1peGVkVXBUZXN0Q2FzZVRlc3QKKxtbMDszMm1bIFJV
TiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5GaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9v
CisbWzA7MzJtWyAgICAgICBPSyBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuRmlyc3RUZXN0RnJv
bU5hbWVzcGFjZUZvbworG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0
LlNlY29uZFRlc3RGcm9tTmFtZXNwYWNlRm9vCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbU1peGVk
VXBUZXN0Q2FzZVRlc3QuU2Vjb25kVGVzdEZyb21OYW1lc3BhY2VGb28KKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbAorZ3Rlc3QuY2M6Izog
RmFpbHVyZQorRmFpbGVkCitBbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNl
IHRoZSBzYW1lIHRlc3QgZml4dHVyZQorY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4
ZWRVcFRlc3RDYXNlVGVzdCwKK3lvdSBkZWZpbmVkIHRlc3QgRmlyc3RUZXN0RnJvbU5hbWVzcGFj
ZUZvbyBhbmQgdGVzdCBUaGlzU2hvdWxkRmFpbAordXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZp
eHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBlbiBpZgordGhlIHR3byBjbGFzc2VzIGFyZSBm
cm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCit1bml0cyBhbmQgaGF2ZSB0
aGUgc2FtZSBuYW1lLiAgWW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25lCitvZiB0aGUgY2xh
c3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMuCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNl
VGVzdC5UaGlzU2hvdWxkRmFpbAorG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENh
c2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCitndGVzdC5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0Fs
bCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0
dXJlCitjbGFzcy4gIEhvd2V2ZXIsIGluIHRlc3QgY2FzZSBNaXhlZFVwVGVzdENhc2VUZXN0LAor
eW91IGRlZmluZWQgdGVzdCBGaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vIGFuZCB0ZXN0IFRoaXNT
aG91bGRGYWlsVG9vCit1c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAg
VGhpcyBjYW4gaGFwcGVuIGlmCit0aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5h
bWVzcGFjZXMgb3IgdHJhbnNsYXRpb24KK3VuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZ
b3Ugc2hvdWxkIHByb2JhYmx5IHJlbmFtZSBvbmUKK29mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUg
dGVzdHMgaW50byBkaWZmZXJlbnQgdGVzdCBjYXNlcy4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkK
KworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRG
YWlsVG9vCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBNaXhlZFVwVGVzdENh
c2VXaXRoU2FtZVRlc3ROYW1lVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVz
dENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxk
RmFpbAorG1swOzMybVsgICAgICAgT0sgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3RO
YW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAorG1swOzMybVsgUlVO
ICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRU
ZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRmFpbGVkCitB
bGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4
dHVyZQorY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlV2l0aFNh
bWVUZXN0TmFtZVRlc3QsCit5b3UgZGVmaW5lZCB0ZXN0IFRoZVNlY29uZFRlc3RXaXRoVGhpc05h
bWVTaG91bGRGYWlsIGFuZCB0ZXN0IFRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWls
Cit1c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAgVGhpcyBjYW4gaGFw
cGVuIGlmCit0aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMgb3Ig
dHJhbnNsYXRpb24KK3VuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZb3Ugc2hvdWxkIHBy
b2JhYmx5IHJlbmFtZSBvbmUKK29mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50byBk
aWZmZXJlbnQgdGVzdCBjYXNlcy4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNv
bmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAorG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRl
c3RzIGZyb20gVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlCisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVk
VXNpbmdURVNUX0YKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2lu
X3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRgorG1swOzMybVsgUlVOICAgICAgXSAb
W21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFu
ZFNob3VsZEZhaWwKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorQWxsIHRlc3RzIGluIHRo
ZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKK2NsYXNzLCBz
byBtaXhpbmcgVEVTVF9GIGFuZCBURVNUIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBpcworaWxsZWdh
bC4gIEluIHRlc3QgY2FzZSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UsCit0
ZXN0IERlZmluZWRVc2luZ1RFU1RfRiBpcyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKK3Rlc3Qg
RGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwgaXMgZGVmaW5lZCB1c2luZyBURVNULiAgWW91
IHByb2JhYmx5Cit3YW50IHRvIGNoYW5nZSB0aGUgVEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0
byBhbm90aGVyIHRlc3QKK2Nhc2UuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmlu
ZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMg
ZnJvbSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UKKxtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2lu
Z1RFU1QKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVf
dGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVEVTVF9i
ZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3Vs
ZEZhaWwKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorQWxsIHRlc3RzIGluIHRoZSBzYW1l
IHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKK2NsYXNzLCBzbyBtaXhp
bmcgVEVTVF9GIGFuZCBURVNUIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBpcworaWxsZWdhbC4gIElu
IHRlc3QgY2FzZSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UsCit0ZXN0IERl
ZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwgaXMgZGVmaW5lZCB1c2luZyBURVNUX0YgYnV0
Cit0ZXN0IERlZmluZWRVc2luZ1RFU1QgaXMgZGVmaW5lZCB1c2luZyBURVNULiAgWW91IHByb2Jh
Ymx5Cit3YW50IHRvIGNoYW5nZSB0aGUgVEVTVCB0byBURVNUX0Ygb3IgbW92ZSBpdCB0byBhbm90
aGVyIHRlc3QKK2Nhc2UuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlM
RUQgIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2lu
Z1RFU1RfRkFuZFNob3VsZEZhaWwKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttOCB0ZXN0cyBmcm9t
IEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKKxtbMDszMm1b
ICAgICAgIE9LIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9i
YWxWYXJpYWJsZXMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJl
VGVzdC5DYW5SZWZlcmVuY2VMb2NhbFZhcmlhYmxlcworG1swOzMybVsgICAgICAgT0sgXSAbW21F
eHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVzCisbWzA7
MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVu
VGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQorG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUK
KxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1do
ZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3Qu
Y2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAw
IGZhaWx1cmVzCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZh
aWx1cmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5G
YWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKKyhleHBlY3RpbmcgYSBmYWlsdXJl
KQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAg
QWN0dWFsOiAyIGZhaWx1cmVzCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0
YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMS4KK1N0YWNr
IHRyYWNlOiAob21pdHRlZCkKKworCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24t
ZmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMi4KK1N0
YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVy
ZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCisoZXhwZWN0
aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRh
bCBmYWlsdXJlCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhdGFs
IGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFs
RmFpbHVyZQorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3Qu
Y2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAw
IGZhaWx1cmVzCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCisb
WzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVu
U3RhdGVtZW50VGhyb3dzCisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1
cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCisgIEFjdHVhbDogMCBmYWlsdXJlcwor
U3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCisbWzA7MzJtWy0tLS0t
LS0tLS1dIBtbbTggdGVzdHMgZnJvbSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0CisbWzA7MzJtWyBS
VU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFy
aWFibGVzCisbWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2Fu
UmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZh
dGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxTdGF0aWNWYXJpYWJsZXMKKxtbMDszMm1b
ICAgICAgIE9LIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFN0
YXRpY1ZhcmlhYmxlcworG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKKxtbMDszMm1bICAgICAgIE9L
IF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1doZW5UaGVyZUlzT25lRmF0YWxG
YWlsdXJlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFp
bHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlCisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0
LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZh
aWx1cmVzCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1tt
RXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKKxtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVy
ZUFyZVR3b0ZhdGFsRmFpbHVyZXMKKyhleHBlY3RpbmcgYSBmYWlsdXJlKQorZ3Rlc3QuY2M6Izog
RmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6IDIgZmFpbHVyZXMK
K2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4
cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0ZWQg
ZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTog
KG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVz
dC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMKKxtbMDszMm1bIFJVTiAgICAgIF0g
G1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWls
dXJlCisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVk
OiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6
IzogTm9uLWZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
LgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKwor
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRo
ZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCisoZXhwZWN0aW5nIGEgZmFp
bHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKKyAg
QWN0dWFsOiAwIGZhaWx1cmVzCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1
cm5zCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNX
aGVuU3RhdGVtZW50VGhyb3dzCisoZXhwZWN0aW5nIGEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZh
aWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZhaWx1cmVzCitT
dGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKKxtbMDszMm1bLS0tLS0tLS0t
LV0gG1ttMiB0ZXN0cyBmcm9tIFR5cGVkVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtb
MDszMm1bIFJVTiAgICAgIF0gG1ttVHlwZWRUZXN0LzAuU3VjY2VzcworG1swOzMybVsgICAgICAg
T0sgXSAbW21UeXBlZFRlc3QvMC5TdWNjZXNzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVR5cGVk
VGVzdC8wLkZhaWx1cmUKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4
cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICBUeXBlUGFyYW0oKQorICAg
IFdoaWNoIGlzOiAwCitFeHBlY3RlZCBmYWlsdXJlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVHlwZWRUZXN0LzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBh
cmFtID0gaW50CisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBUeXBlZFRlc3RX
aXRoTmFtZXMvY2hhcjAsIHdoZXJlIFR5cGVQYXJhbSA9IGNoYXIKKxtbMDszMm1bIFJVTiAgICAg
IF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVzL2NoYXIwLlN1Y2Nlc3MKKxtbMDszMm1bICAgICAgIE9L
IF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVzL2NoYXIwLlN1Y2Nlc3MKKxtbMDszMm1bIFJVTiAgICAg
IF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVzL2NoYXIwLkZhaWx1cmUKK2dvb2dsZXRlc3Qtb3V0cHV0
LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0ZhaWxlZAorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisb
WzA7MzFtWyAgRkFJTEVEICBdIBtbbVR5cGVkVGVzdFdpdGhOYW1lcy9jaGFyMC5GYWlsdXJlLCB3
aGVyZSBUeXBlUGFyYW0gPSBjaGFyCisbWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJv
bSBUeXBlZFRlc3RXaXRoTmFtZXMvaW50MSwgd2hlcmUgVHlwZVBhcmFtID0gaW50CisbWzA7MzJt
WyBSVU4gICAgICBdIBtbbVR5cGVkVGVzdFdpdGhOYW1lcy9pbnQxLlN1Y2Nlc3MKKxtbMDszMm1b
ICAgICAgIE9LIF0gG1ttVHlwZWRUZXN0V2l0aE5hbWVzL2ludDEuU3VjY2VzcworG1swOzMybVsg
UlVOICAgICAgXSAbW21UeXBlZFRlc3RXaXRoTmFtZXMvaW50MS5GYWlsdXJlCitnb29nbGV0ZXN0
LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK1N0YWNrIHRyYWNlOiAob21pdHRl
ZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3RXaXRoTmFtZXMvaW50MS5GYWls
dXJlLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0
cyBmcm9tIFVuc2lnbmVkL1R5cGVkVGVzdFAvMCwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQg
Y2hhcgorG1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuU3VjY2Vz
cworG1swOzMybVsgICAgICAgT0sgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuU3VjY2Vzcwor
G1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZQorZ29v
Z2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2Yg
dGhlc2UgdmFsdWVzOgorICAxVQorICAgIFdoaWNoIGlzOiAxCisgIFR5cGVQYXJhbSgpCisgICAg
V2hpY2ggaXM6ICdcMCcKK0V4cGVjdGVkIGZhaWx1cmUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkK
KworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZSwg
d2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgorG1swOzMybVstLS0tLS0tLS0tXSAbW20y
IHRlc3RzIGZyb20gVW5zaWduZWQvVHlwZWRUZXN0UC8xLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNp
Z25lZCBpbnQKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1
Y2Nlc3MKKxtbMDszMm1bICAgICAgIE9LIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1Y2Nl
c3MKKxtbMDszMm1bIFJVTiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUK
K2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5
IG9mIHRoZXNlIHZhbHVlczoKKyAgMVUKKyAgICBXaGljaCBpczogMQorICBUeXBlUGFyYW0oKQor
ICAgIFdoaWNoIGlzOiAwCitFeHBlY3RlZCBmYWlsdXJlCitTdGFjayB0cmFjZTogKG9taXR0ZWQp
CisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUs
IHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAorG1swOzMybVstLS0tLS0tLS0tXSAbW20y
IHRlc3RzIGZyb20gVW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRDaGFyMCwg
d2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgorG1swOzMybVsgUlVOICAgICAgXSAbW21V
bnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZENoYXIwLlN1Y2Nlc3MKKxtbMDsz
Mm1bICAgICAgIE9LIF0gG1ttVW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRD
aGFyMC5TdWNjZXNzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9U
eXBlZFRlc3RQL3Vuc2lnbmVkQ2hhcjAuRmFpbHVyZQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8u
Y2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxVQor
ICAgIFdoaWNoIGlzOiAxCisgIFR5cGVQYXJhbSgpCisgICAgV2hpY2ggaXM6ICdcMCcKK0V4cGVj
dGVkIGZhaWx1cmUKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21VbnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZENoYXIwLkZhaWx1cmUs
IHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1tt
MiB0ZXN0cyBmcm9tIFVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkSW50MSwg
d2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVu
c2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkSW50MS5TdWNjZXNzCisbWzA7MzJt
WyAgICAgICBPSyBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkSW50
MS5TdWNjZXNzCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkQ3VzdG9tTmFtZS9UeXBl
ZFRlc3RQL3Vuc2lnbmVkSW50MS5GYWlsdXJlCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzoj
OiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDFVCisgICAg
V2hpY2ggaXM6IDEKKyAgVHlwZVBhcmFtKCkKKyAgICBXaGljaCBpczogMAorRXhwZWN0ZWQgZmFp
bHVyZQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVVu
c2lnbmVkQ3VzdG9tTmFtZS9UeXBlZFRlc3RQL3Vuc2lnbmVkSW50MS5GYWlsdXJlLCB3aGVyZSBU
eXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttNCB0ZXN0cyBm
cm9tIEV4cGVjdEZhaWx1cmVUZXN0CisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1
cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5j
YzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCisgIEFjdHVhbDoKK2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IFN1Y2Nlc3M6CitTdWNjZWVkZWQKK1N0YWNrIHRyYWNl
OiAob21pdHRlZCkKKworCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKyhleHBlY3RpbmcgMSBm
YWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQor
ICBBY3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVy
ZToKK0ZhaWxlZAorRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisoZXhwZWN0aW5nIDEgZmFpbHVy
ZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUgY29udGFp
bmluZyAiU29tZSBvdGhlciBmYXRhbCBmYWlsdXJlIGV4cGVjdGVkLiIKKyAgQWN0dWFsOgorZ29v
Z2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhwZWN0
ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3Qu
RXhwZWN0RmF0YWxGYWlsdXJlCisbWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVU
ZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5j
YzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1YWw6Citn
b29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBTdWNjZXNzOgorU3VjY2VlZGVkCitTdGFjayB0
cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisoZXhwZWN0aW5n
IDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBm
YWlsdXJlCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhdGFsIGZh
aWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisoZXhwZWN0aW5nIDEgZmFpbHVy
ZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlIGNv
bnRhaW5pbmcgIlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1cmUuIgorICBBY3R1YWw6Citnb29n
bGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKK0ZhaWxlZAorRXhw
ZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworU3Rh
Y2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1
cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZQorG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBl
Y3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKKyhleHBlY3Rpbmcg
MSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVy
ZQorICBBY3R1YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBTdWNjZXNzOgorU3Vj
Y2VlZGVkCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVk
KQorCisoZXhwZWN0aW5nIDEgZmFpbHVyZSkKK2d0ZXN0LmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVk
OiAxIGZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6
IzogTm9uLWZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
LgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKwor
KGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBm
YXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBlY3Rl
ZC4iCisgIEFjdHVhbDoKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhdGFsIGZhaWx1
cmU6CitGYWlsZWQKK0V4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0
ZWQpCisKKworU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtb
bUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcworG1swOzMy
bVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVP
bkFsbFRocmVhZHMKKyhleHBlY3RpbmcgMSBmYWlsdXJlKQorZ3Rlc3QuY2M6IzogRmFpbHVyZQor
RXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogU3VjY2VzczoKK1N1Y2NlZWRlZAorU3RhY2sgdHJhY2U6IChvbWl0dGVk
KQorCisKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworKGV4cGVjdGluZyAxIGZhaWx1cmUpCitn
dGVzdC5jYzojOiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQorICBBY3R1
YWw6Citnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgorRmFpbGVk
CitFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0
YWNrIHRyYWNlOiAob21pdHRlZCkKKworKGV4cGVjdGluZyAxIGZhaWx1cmUpCitndGVzdC5jYzoj
OiBGYWlsdXJlCitFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21l
IG90aGVyIG5vbi1mYXRhbCBmYWlsdXJlLiIKKyAgQWN0dWFsOgorZ29vZ2xldGVzdC1vdXRwdXQt
dGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6CitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRh
bCBmYWlsdXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCisKK1N0YWNrIHRyYWNlOiAob21p
dHRlZCkKKworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RO
b25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0
cyBmcm9tIEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0g
G1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKKyhleHBl
Y3RpbmcgMiBmYWlsdXJlcykKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUK
K0ZhaWxlZAorRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkK
KworZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQorICBBY3R1
YWw6IDAgZmFpbHVyZXMKK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQor
G1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVj
dE5vbkZhdGFsRmFpbHVyZQorKGV4cGVjdGluZyAyIGZhaWx1cmVzKQorZ29vZ2xldGVzdC1vdXRw
dXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVy
ZS4KK1N0YWNrIHRyYWNlOiAob21pdHRlZCkKKworZ3Rlc3QuY2M6IzogRmFpbHVyZQorRXhwZWN0
ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKKyAgQWN0dWFsOiAwIGZhaWx1cmVzCitTdGFjayB0cmFj
ZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhU
aHJlYWRzVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1tt
MSB0ZXN0IGZyb20gU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0CisbWzA7MzJt
WyBSVU4gICAgICBdIBtbbVNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdC5JbnRl
cmNlcHRPbmx5Q3VycmVudFRocmVhZAorKGV4cGVjdGluZyAyIGZhaWx1cmVzKQorZ29vZ2xldGVz
dC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRmFpbGVkCitFeHBlY3RlZCBmYXRhbCBmYWls
dXJlLgorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5j
YzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgorU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNjb3BlZEZha2VUZXN0
UGFydFJlc3VsdFJlcG9ydGVyVGVzdC5JbnRlcmNlcHRPbmx5Q3VycmVudFRocmVhZAorG1swOzMy
bVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBQcmludGluZ0ZhaWxpbmdQYXJhbXMvRmFpbGlu
Z1BhcmFtVGVzdAorG1swOzMybVsgUlVOICAgICAgXSAbW21QcmludGluZ0ZhaWxpbmdQYXJhbXMv
RmFpbGluZ1BhcmFtVGVzdC5GYWlscy8wCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBG
YWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAgR2V0UGFy
YW0oKQorICAgIFdoaWNoIGlzOiAyCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttUHJpbnRpbmdGYWlsaW5nUGFyYW1zL0ZhaWxpbmdQYXJhbVRlc3QuRmFp
bHMvMCwgd2hlcmUgR2V0UGFyYW0oKSA9IDIKKxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0
cyBmcm9tIFByaW50aW5nU3RyaW5ncy9QYXJhbVRlc3QKKxtbMDszMm1bIFJVTiAgICAgIF0gG1tt
UHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5TdWNjZXNzL2EKKxtbMDszMm1bICAgICAgIE9LIF0g
G1ttUHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5TdWNjZXNzL2EKKxtbMDszMm1bIFJVTiAgICAg
IF0gG1ttUHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5GYWlsdXJlL2EKK2dvb2dsZXRlc3Qtb3V0
cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVl
czoKKyAgImIiCisgIEdldFBhcmFtKCkKKyAgICBXaGljaCBpczogImEiCitFeHBlY3RlZCBmYWls
dXJlCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttUHJp
bnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5GYWlsdXJlL2EsIHdoZXJlIEdldFBhcmFtKCkgPSAiYSIK
KxtbMDszMm1bLS0tLS0tLS0tLV0gG1ttR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3du
CitCYXJFbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuCitnb29nbGV0ZXN0LW91dHB1dC10
ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgor
U3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitGb29FbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxs
ZWQuCitnb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitGYWlsZWQKK0V4cGVj
dGVkIGZhdGFsIGZhaWx1cmUuCitTdGFjayB0cmFjZTogKG9taXR0ZWQpCisKKxtbMDszMm1bPT09
PT09PT09PV0gG1ttNzYgdGVzdHMgZnJvbSAzNCB0ZXN0IGNhc2VzIHJhbi4KKxtbMDszMm1bICBQ
QVNTRUQgIF0gG1ttMjYgdGVzdHMuCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbTUwIHRlc3RzLCBs
aXN0ZWQgYmVsb3c6CisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbmZhdGFsRmFpbHVyZVRlc3Qu
RXNjYXBlc1N0cmluZ09wZXJhbmRzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbmZhdGFsRmFp
bHVyZVRlc3QuRGlmZkZvckxvbmdTdHJpbmdzCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFs
RmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCisbWzA7MzFtWyAgRkFJTEVEICBd
IBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJy
b3V0aW5lCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUxvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xv
Z2dpbmdBbmRBc3NlcnRpb25zCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRl
c3QuQWNjZXB0ZWRWYWx1ZXMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVz
dC5PYmV5c1Njb3BlcworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lldv
cmtzSW5Mb29wCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJ
blN1YnJvdXRpbmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5C
ZU5lc3RlZAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlUmVw
ZWF0ZWQKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0NvbmN1
cnJlbnRseQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TY29wZWRUcmFjZVRlc3QuV2l0aEV4cGxp
Y2l0RmlsZUFuZExpbmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5G
aXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCisbWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5D
b25zdHJ1Y3RvcgorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJblNldFVw
VGVzdC5GYWlsdXJlSW5TZXRVcAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVJ
blNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21BZGRGYWls
dXJlQXRUZXN0Lk1lc3NhZ2VDb250YWluc1NwZWNpZmllZEZpbGVBbmRMaW5lTnVtYmVyCisbWzA7
MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwKKxtb
MDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbFRv
bworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1l
VGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAorG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5n
VEVTVEFuZFNob3VsZEZhaWwKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVEVTVF9iZWZvcmVfVEVT
VF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwKKxtb
MDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5U
aGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKKxtb
MDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5U
aGVyZUlzT25lRmF0YWxGYWlsdXJlCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZh
dGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucworG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93
cworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hl
blRoZXJlSXNOb0ZhdGFsRmFpbHVyZQorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRh
bEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcworG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVO
b25mYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4
cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbVR5cGVkVGVzdC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IGludAor
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3RXaXRoTmFtZXMvY2hhcjAuRmFpbHVyZSwg
d2hlcmUgVHlwZVBhcmFtID0gY2hhcgorG1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3RX
aXRoTmFtZXMvaW50MS5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKKxtbMDszMW1bICBG
QUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJh
bSA9IHVuc2lnbmVkIGNoYXIKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRU
ZXN0UC8xLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAorG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21VbnNpZ25lZEN1c3RvbU5hbWUvVHlwZWRUZXN0UC91bnNpZ25lZENoYXIw
LkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKKxtbMDszMW1bICBGQUlM
RUQgIF0gG1ttVW5zaWduZWRDdXN0b21OYW1lL1R5cGVkVGVzdFAvdW5zaWduZWRJbnQxLkZhaWx1
cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAorG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQg
IF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCisbWzA7MzFtWyAg
RkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhy
ZWFkcworG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25G
YXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKKxtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFp
bHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKKxtbMDszMW1bICBGQUlMRUQg
IF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUK
KxtbMDszMW1bICBGQUlMRUQgIF0gG1ttU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJU
ZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVBy
aW50aW5nRmFpbGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1UZXN0LkZhaWxzLzAsIHdoZXJlIEdldFBh
cmFtKCkgPSAyCisbWzA7MzFtWyAgRkFJTEVEICBdIBtbbVByaW50aW5nU3RyaW5ncy9QYXJhbVRl
c3QuRmFpbHVyZS9hLCB3aGVyZSBHZXRQYXJhbSgpID0gImEiCisKKzUwIEZBSUxFRCBURVNUUwor
G1swOzMzbSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNUCisKKxtbbU5vdGU6IEdvb2dsZSBUZXN0
IGZpbHRlciA9IEZhdGFsRmFpbHVyZVRlc3QuKjpMb2dnaW5nVGVzdC4qCitbPT09PT09PT09PV0g
UnVubmluZyA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2VzLgorWy0tLS0tLS0tLS1dIEdsb2JhbCB0
ZXN0IGVudmlyb25tZW50IHNldC11cC4KK1stLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0YWxG
YWlsdXJlVGVzdAorWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5T
dWJyb3V0aW5lCisoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCitnb29n
bGV0ZXN0LW91dHB1dC10ZXN0Xy5jYzojOiBGYWlsdXJlCitFeHBlY3RlZCBlcXVhbGl0eSBvZiB0
aGVzZSB2YWx1ZXM6CisgIDEKKyAgeAorICAgIFdoaWNoIGlzOiAyCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vi
cm91dGluZSAoPyBtcykKK1sgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVy
ZUluTmVzdGVkU3Vicm91dGluZQorKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBi
ZSAxKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0ZWQgZXF1
YWxpdHkgb2YgdGhlc2UgdmFsdWVzOgorICAxCisgIHgKKyAgICBXaGljaCBpczogMgorU3RhY2sg
dHJhY2U6IChvbWl0dGVkKQorCitbICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZh
aWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUgKD8gbXMpCitbIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJl
VGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKKyhleHBlY3RpbmcgYSBmYWlsdXJlIG9u
IGZhbHNlKQorZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorVmFsdWUgb2Y6
IGZhbHNlCisgIEFjdHVhbDogZmFsc2UKK0V4cGVjdGVkOiB0cnVlCitTdGFjayB0cmFjZTogKG9t
aXR0ZWQpCisKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUlu
U3Vicm91dGluZSAoPyBtcykKK1stLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJl
VGVzdCAoPyBtcyB0b3RhbCkKKworWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExvZ2dpbmdUZXN0
CitbIFJVTiAgICAgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlv
bnMKKyhleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKQoraSA9PSAwCitpID09
IDEKK2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjOiM6IEZhaWx1cmUKK0V4cGVjdGVkOiAoMykg
Pj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgOQorU3RhY2sgdHJhY2U6IChvbWl0dGVkKQorCitpID09
IDIKK2kgPT0gMworZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uY2M6IzogRmFpbHVyZQorRXhwZWN0
ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA2CitTdGFjayB0cmFjZTogKG9taXR0ZWQp
CisKK1sgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0
aW9ucyAoPyBtcykKK1stLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBMb2dnaW5nVGVzdCAoPyBtcyB0
b3RhbCkKKworWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgor
Wz09PT09PT09PT1dIDQgdGVzdHMgZnJvbSAyIHRlc3QgY2FzZXMgcmFuLiAoPyBtcyB0b3RhbCkK
K1sgIFBBU1NFRCAgXSAwIHRlc3RzLgorWyAgRkFJTEVEICBdIDQgdGVzdHMsIGxpc3RlZCBiZWxv
dzoKK1sgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGlu
ZQorWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJy
b3V0aW5lCitbICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1
YnJvdXRpbmUKK1sgIEZBSUxFRCAgXSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5k
QXNzZXJ0aW9ucworCisgNCBGQUlMRUQgVEVTVFMKK05vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9
ICpESVNBQkxFRF8qCitbPT09PT09PT09PV0gUnVubmluZyAxIHRlc3QgZnJvbSAxIHRlc3QgY2Fz
ZS4KK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCitbLS0tLS0t
LS0tLV0gMSB0ZXN0IGZyb20gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0CitbIFJVTiAgICAgIF0g
RGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0LkRJU0FCTEVEX0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxh
Z1N1cHByZXNzZXNXYXJuaW5nCitbICAgICAgIE9LIF0gRGlzYWJsZWRUZXN0c1dhcm5pbmdUZXN0
LkRJU0FCTEVEX0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZ1N1cHByZXNzZXNXYXJuaW5nCitbLS0t
LS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCitbPT09PT09PT09PV0g
MSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UgcmFuLgorWyAgUEFTU0VEICBdIDEgdGVzdC4KK05vdGU6
IEdvb2dsZSBUZXN0IGZpbHRlciA9IFBhc3NpbmdUZXN0LioKK05vdGU6IFRoaXMgaXMgdGVzdCBz
aGFyZCAyIG9mIDIuCitbPT09PT09PT09PV0gUnVubmluZyAxIHRlc3QgZnJvbSAxIHRlc3QgY2Fz
ZS4KK1stLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCitbLS0tLS0t
LS0tLV0gMSB0ZXN0IGZyb20gUGFzc2luZ1Rlc3QKK1sgUlVOICAgICAgXSBQYXNzaW5nVGVzdC5Q
YXNzaW5nVGVzdDIKK1sgICAgICAgT0sgXSBQYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDIKK1stLS0t
LS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KK1s9PT09PT09PT09XSAx
IHRlc3QgZnJvbSAxIHRlc3QgY2FzZSByYW4uCitbICBQQVNTRUQgIF0gMSB0ZXN0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0
LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJkNjllMzUzYTE5ZTM2OTQ2NTMzYmY1ZjdlMGEyYzkyNDZmN2RjZTcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3Qtb3V0cHV0LXRlc3QucHkKQEAgLTAsMCArMSwzNDcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorIworIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlRlc3RzIHRoZSB0ZXh0IG91dHB1dCBvZiBHb29n
bGUgQysrIFRlc3RpbmcgYW5kIE1vY2tpbmcgRnJhbWV3b3JrLgorCitUbyB1cGRhdGUgdGhlIGdv
bGRlbiBmaWxlOgorZ29vZ2xldGVzdF9vdXRwdXRfdGVzdC5weSAtLWJ1aWxkX2Rpcj1CVUlMRC9E
SVIgLS1nZW5nb2xkZW4KK3doZXJlIEJVSUxEL0RJUiBjb250YWlucyB0aGUgYnVpbHQgZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdF8gZmlsZS4KK2dvb2dsZXRlc3Rfb3V0cHV0X3Rlc3QucHkgLS1nZW5n
b2xkZW4KK2dvb2dsZXRlc3Rfb3V0cHV0X3Rlc3QucHkKKyIiIgorCitpbXBvcnQgZGlmZmxpYgor
aW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCBndGVzdF90ZXN0X3V0aWxz
CisKKworIyBUaGUgZmxhZyBmb3IgZ2VuZXJhdGluZyB0aGUgZ29sZGVuIGZpbGUKK0dFTkdPTERF
Tl9GTEFHID0gJy0tZ2VuZ29sZGVuJworQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSX05BTUUgPSAn
R1RFU1RfQ0FUQ0hfRVhDRVBUSU9OUycKKworIyBUaGUgZmxhZyBpbmRpY2F0aW5nIHN0YWNrdHJh
Y2VzIGFyZSBub3Qgc3VwcG9ydGVkCitOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRyA9ICctLW5v
X3N0YWNrdHJhY2Vfc3VwcG9ydCcKKworSVNfTElOVVggPSBvcy5uYW1lID09ICdwb3NpeCcgYW5k
IG9zLnVuYW1lKClbMF0gPT0gJ0xpbnV4JworSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250Jwor
CisjIEZJWE1FOiByZW1vdmUgdGhlIF9saW4gc3VmZml4LgorR09MREVOX05BTUUgPSAnZ29vZ2xl
dGVzdC1vdXRwdXQtdGVzdC1nb2xkZW4tbGluLnR4dCcKKworUFJPR1JBTV9QQVRIID0gZ3Rlc3Rf
dGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3Rf
JykKKworIyBBdCBsZWFzdCBvbmUgY29tbWFuZCB3ZSBleGVyY2lzZSBtdXN0IG5vdCBoYXZlIHRo
ZQorIyAnaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzJyBhcmd1bWVu
dC4KK0NPTU1BTkRfTElTVF9URVNUUyA9ICh7fSwgW1BST0dSQU1fUEFUSCwgJy0tZ3Rlc3RfbGlz
dF90ZXN0cyddKQorQ09NTUFORF9XSVRIX0NPTE9SID0gKHt9LCBbUFJPR1JBTV9QQVRILCAnLS1n
dGVzdF9jb2xvcj15ZXMnXSkKK0NPTU1BTkRfV0lUSF9USU1FID0gKHt9LCBbUFJPR1JBTV9QQVRI
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ndGVzdF9wcmludF90aW1lJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hv
Y190ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICctLWd0ZXN0X2ZpbHRlcj1GYXRh
bEZhaWx1cmVUZXN0Lio6TG9nZ2luZ1Rlc3QuKiddKQorQ09NTUFORF9XSVRIX0RJU0FCTEVEID0g
KAorICAgIHt9LCBbUFJPR1JBTV9QQVRILAorICAgICAgICAgJy0tZ3Rlc3RfYWxzb19ydW5fZGlz
YWJsZWRfdGVzdHMnLAorICAgICAgICAgJ2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2Fk
X2hvY190ZXN0cycsCisgICAgICAgICAnLS1ndGVzdF9maWx0ZXI9KkRJU0FCTEVEXyonXSkKK0NP
TU1BTkRfV0lUSF9TSEFSRElORyA9ICgKKyAgICB7J0dURVNUX1NIQVJEX0lOREVYJzogJzEnLCAn
R1RFU1RfVE9UQUxfU0hBUkRTJzogJzInfSwKKyAgICBbUFJPR1JBTV9QQVRILAorICAgICAnaW50
ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzJywKKyAgICAgJy0tZ3Rlc3Rf
ZmlsdGVyPVBhc3NpbmdUZXN0LionXSkKKworR09MREVOX1BBVEggPSBvcy5wYXRoLmpvaW4oZ3Rl
c3RfdGVzdF91dGlscy5HZXRTb3VyY2VEaXIoKSwgR09MREVOX05BTUUpCisKKworZGVmIFRvVW5p
eExpbmVFbmRpbmcocyk6CisgICIiIkNoYW5nZXMgYWxsIFdpbmRvd3MvTWFjIGxpbmUgZW5kaW5n
cyBpbiBzIHRvIFVOSVggbGluZSBlbmRpbmdzLiIiIgorCisgIHJldHVybiBzLnJlcGxhY2UoJ1xy
XG4nLCAnXG4nKS5yZXBsYWNlKCdccicsICdcbicpCisKKworZGVmIFJlbW92ZUxvY2F0aW9ucyh0
ZXN0X291dHB1dCk6CisgICIiIlJlbW92ZXMgYWxsIGZpbGUgbG9jYXRpb24gaW5mbyBmcm9tIGEg
R29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4KKworICBBcmdzOgorICAgICAgIHRlc3Rfb3V0
cHV0OiAgdGhlIG91dHB1dCBvZiBhIEdvb2dsZSBUZXN0IHByb2dyYW0uCisKKyAgUmV0dXJuczoK
KyAgICAgICBvdXRwdXQgd2l0aCBhbGwgZmlsZSBsb2NhdGlvbiBpbmZvIChpbiB0aGUgZm9ybSBv
ZgorICAgICAgICdESVJFQ1RPUlkvRklMRV9OQU1FOkxJTkVfTlVNQkVSOiAnb3IKKyAgICAgICAn
RElSRUNUT1JZXFxGSUxFX05BTUUoTElORV9OVU1CRVIpOiAnKSByZXBsYWNlZCBieQorICAgICAg
ICdGSUxFX05BTUU6IzogJy4KKyAgIiIiCisKKyAgcmV0dXJuIHJlLnN1YihyJy4qWy9cXF0oKGdv
b2dsZXRlc3Qtb3V0cHV0LXRlc3RffGd0ZXN0KS5jYykoXDpcZCt8XChcZCtcKSlcOiAnLAorICAg
ICAgICAgICAgICAgIHInXDE6IzogJywgdGVzdF9vdXRwdXQpCisKKworZGVmIFJlbW92ZVN0YWNr
VHJhY2VEZXRhaWxzKG91dHB1dCk6CisgICIiIlJlbW92ZXMgYWxsIHN0YWNrIHRyYWNlcyBmcm9t
IGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4iIiIKKworICAjICo/IG1lYW5zICJmaW5k
IHRoZSBzaG9ydGVzdCBzdHJpbmcgdGhhdCBtYXRjaGVzIi4KKyAgcmV0dXJuIHJlLnN1YihyJ1N0
YWNrIHRyYWNlOigufFxuKSo/XG5cbicsCisgICAgICAgICAgICAgICAgJ1N0YWNrIHRyYWNlOiAo
b21pdHRlZClcblxuJywgb3V0cHV0KQorCisKK2RlZiBSZW1vdmVTdGFja1RyYWNlcyhvdXRwdXQp
OgorICAiIiJSZW1vdmVzIGFsbCB0cmFjZXMgb2Ygc3RhY2sgdHJhY2VzIGZyb20gYSBHb29nbGUg
VGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgorCisgICMgKj8gbWVhbnMgImZpbmQgdGhlIHNob3J0
ZXN0IHN0cmluZyB0aGF0IG1hdGNoZXMiLgorICByZXR1cm4gcmUuc3ViKHInU3RhY2sgdHJhY2U6
KC58XG4pKj9cblxuJywgJycsIG91dHB1dCkKKworCitkZWYgUmVtb3ZlVGltZShvdXRwdXQpOgor
ICAiIiJSZW1vdmVzIGFsbCB0aW1lIGluZm9ybWF0aW9uIGZyb20gYSBHb29nbGUgVGVzdCBwcm9n
cmFtJ3Mgb3V0cHV0LiIiIgorCisgIHJldHVybiByZS5zdWIocidcKFxkKyBtcycsICcoPyBtcycs
IG91dHB1dCkKKworCitkZWYgUmVtb3ZlVHlwZUluZm9EZXRhaWxzKHRlc3Rfb3V0cHV0KToKKyAg
IiIiUmVtb3ZlcyBjb21waWxlci1zcGVjaWZpYyB0eXBlIGluZm8gZnJvbSBHb29nbGUgVGVzdCBw
cm9ncmFtJ3Mgb3V0cHV0LgorCisgIEFyZ3M6CisgICAgICAgdGVzdF9vdXRwdXQ6ICB0aGUgb3V0
cHV0IG9mIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbS4KKworICBSZXR1cm5zOgorICAgICAgIG91dHB1
dCB3aXRoIHR5cGUgaW5mb3JtYXRpb24gbm9ybWFsaXplZCB0byBjYW5vbmljYWwgZm9ybS4KKyAg
IiIiCisKKyAgIyBzb21lIGNvbXBpbGVycyBvdXRwdXQgdGhlIG5hbWUgb2YgdHlwZSAndW5zaWdu
ZWQgaW50JyBhcyAndW5zaWduZWQnCisgIHJldHVybiByZS5zdWIocid1bnNpZ25lZCBpbnQnLCAn
dW5zaWduZWQnLCB0ZXN0X291dHB1dCkKKworCitkZWYgTm9ybWFsaXplVG9DdXJyZW50UGxhdGZv
cm0odGVzdF9vdXRwdXQpOgorICAiIiJOb3JtYWxpemVzIHBsYXRmb3JtIHNwZWNpZmljIG91dHB1
dCBkZXRhaWxzIGZvciBlYXNpZXIgY29tcGFyaXNvbi4iIiIKKworICBpZiBJU19XSU5ET1dTOgor
ICAgICMgUmVtb3ZlcyB0aGUgY29sb3IgaW5mb3JtYXRpb24gdGhhdCBpcyBub3QgcHJlc2VudCBv
biBXaW5kb3dzLgorICAgIHRlc3Rfb3V0cHV0ID0gcmUuc3ViKCdceDFiXFxbKDA7M1xkKT9tJywg
JycsIHRlc3Rfb3V0cHV0KQorICAgICMgQ2hhbmdlcyBmYWlsdXJlIG1lc3NhZ2UgaGVhZGVycyBp
bnRvIHRoZSBXaW5kb3dzIGZvcm1hdC4KKyAgICB0ZXN0X291dHB1dCA9IHJlLnN1YihyJzogRmFp
bHVyZVxuJywgcic6IGVycm9yOiAnLCB0ZXN0X291dHB1dCkKKyAgICAjIENoYW5nZXMgZmlsZShs
aW5lX251bWJlcikgdG8gZmlsZTpsaW5lX251bWJlci4KKyAgICB0ZXN0X291dHB1dCA9IHJlLnN1
YihyJygoXHd8XC4pKylcKChcZCspXCk6JywgcidcMTpcMzonLCB0ZXN0X291dHB1dCkKKworICBy
ZXR1cm4gdGVzdF9vdXRwdXQKKworCitkZWYgUmVtb3ZlVGVzdENvdW50cyhvdXRwdXQpOgorICAi
IiJSZW1vdmVzIHRlc3QgY291bnRzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0
LiIiIgorCisgIG91dHB1dCA9IHJlLnN1YihyJ1xkKyB0ZXN0cz8sIGxpc3RlZCBiZWxvdycsCisg
ICAgICAgICAgICAgICAgICAnPyB0ZXN0cywgbGlzdGVkIGJlbG93Jywgb3V0cHV0KQorICBvdXRw
dXQgPSByZS5zdWIocidcZCsgRkFJTEVEIFRFU1RTJywKKyAgICAgICAgICAgICAgICAgICc/IEZB
SUxFRCBURVNUUycsIG91dHB1dCkKKyAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIHRlc3RzPyBmcm9t
IFxkKyB0ZXN0IGNhc2VzPycsCisgICAgICAgICAgICAgICAgICAnPyB0ZXN0cyBmcm9tID8gdGVz
dCBjYXNlcycsIG91dHB1dCkKKyAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIHRlc3RzPyBmcm9tIChb
YS16QS1aX10pJywKKyAgICAgICAgICAgICAgICAgIHInPyB0ZXN0cyBmcm9tIFwxJywgb3V0cHV0
KQorICByZXR1cm4gcmUuc3ViKHInXGQrIHRlc3RzP1wuJywgJz8gdGVzdHMuJywgb3V0cHV0KQor
CisKK2RlZiBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCBwYXR0ZXJuKToKKyAgIiIi
UmVtb3ZlcyBvdXRwdXQgb2Ygc3BlY2lmaWVkIHRlc3RzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9n
cmFtJ3Mgb3V0cHV0LgorCisgIFRoaXMgZnVuY3Rpb24gc3RyaXBzIG5vdCBvbmx5IHRoZSBiZWdp
bm5pbmcgYW5kIHRoZSBlbmQgb2YgYSB0ZXN0IGJ1dCBhbHNvCisgIGFsbCBvdXRwdXQgaW4gYmV0
d2Vlbi4KKworICBBcmdzOgorICAgIHRlc3Rfb3V0cHV0OiAgICAgICBBIHN0cmluZyBjb250YWlu
aW5nIHRoZSB0ZXN0IG91dHB1dC4KKyAgICBwYXR0ZXJuOiAgICAgICAgICAgQSByZWdleCBzdHJp
bmcgdGhhdCBtYXRjaGVzIG5hbWVzIG9mIHRlc3QgY2FzZXMgb3IKKyAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdHMgdG8gcmVtb3ZlLgorCisgIFJldHVybnM6CisgICAgQ29udGVudHMgb2YgdGVz
dF9vdXRwdXQgd2l0aCB0ZXN0cyB3aG9zZSBuYW1lcyBtYXRjaCBwYXR0ZXJuIHJlbW92ZWQuCisg
ICIiIgorCisgIHRlc3Rfb3V0cHV0ID0gcmUuc3ViKAorICAgICAgcicuKlxbIFJVTiAgICAgIFxd
IC4qJXMoLnxcbikqP1xbKCAgRkFJTEVEICB8ICAgICAgIE9LIClcXSAuKiVzLipcbicgJSAoCisg
ICAgICAgICAgcGF0dGVybiwgcGF0dGVybiksCisgICAgICAnJywKKyAgICAgIHRlc3Rfb3V0cHV0
KQorICByZXR1cm4gcmUuc3ViKHInLiolcy4qXG4nICUgcGF0dGVybiwgJycsIHRlc3Rfb3V0cHV0
KQorCisKK2RlZiBOb3JtYWxpemVPdXRwdXQob3V0cHV0KToKKyAgIiIiTm9ybWFsaXplcyBvdXRw
dXQgKHRoZSBvdXRwdXQgb2YgZ29vZ2xldGVzdC1vdXRwdXQtdGVzdF8uZXhlKS4iIiIKKworICBv
dXRwdXQgPSBUb1VuaXhMaW5lRW5kaW5nKG91dHB1dCkKKyAgb3V0cHV0ID0gUmVtb3ZlTG9jYXRp
b25zKG91dHB1dCkKKyAgb3V0cHV0ID0gUmVtb3ZlU3RhY2tUcmFjZURldGFpbHMob3V0cHV0KQor
ICBvdXRwdXQgPSBSZW1vdmVUaW1lKG91dHB1dCkKKyAgcmV0dXJuIG91dHB1dAorCisKK2RlZiBH
ZXRTaGVsbENvbW1hbmRPdXRwdXQoZW52X2NtZCk6CisgICIiIlJ1bnMgYSBjb21tYW5kIGluIGEg
c3ViLXByb2Nlc3MsIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQgaW4gYSBzdHJpbmcuCisKKyAgQXJn
czoKKyAgICBlbnZfY21kOiBUaGUgc2hlbGwgY29tbWFuZC4gQSAyLXR1cGxlIHdoZXJlIGVsZW1l
bnQgMCBpcyBhIGRpY3Qgb2YgZXh0cmEKKyAgICAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJs
ZXMgdG8gc2V0LCBhbmQgZWxlbWVudCAxIGlzIGEgc3RyaW5nIHdpdGgKKyAgICAgICAgICAgICB0
aGUgY29tbWFuZCBhbmQgYW55IGZsYWdzLgorCisgIFJldHVybnM6CisgICAgQSBzdHJpbmcgd2l0
aCB0aGUgY29tbWFuZCdzIGNvbWJpbmVkIHN0YW5kYXJkIGFuZCBkaWFnbm9zdGljIG91dHB1dC4K
KyAgIiIiCisKKyAgIyBTcGF3bnMgY21kIGluIGEgc3ViLXByb2Nlc3MsIGFuZCBnZXRzIGl0cyBz
dGFuZGFyZCBJL08gZmlsZSBvYmplY3RzLgorICAjIFNldCBhbmQgc2F2ZSB0aGUgZW52aXJvbm1l
bnQgcHJvcGVybHkuCisgIGVudmlyb24gPSBvcy5lbnZpcm9uLmNvcHkoKQorICBlbnZpcm9uLnVw
ZGF0ZShlbnZfY21kWzBdKQorICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGVudl9j
bWRbMV0sIGVudj1lbnZpcm9uKQorCisgIHJldHVybiBwLm91dHB1dAorCisKK2RlZiBHZXRDb21t
YW5kT3V0cHV0KGVudl9jbWQpOgorICAiIiJSdW5zIGEgY29tbWFuZCBhbmQgcmV0dXJucyBpdHMg
b3V0cHV0IHdpdGggYWxsIGZpbGUgbG9jYXRpb24KKyAgaW5mbyBzdHJpcHBlZCBvZmYuCisKKyAg
QXJnczoKKyAgICBlbnZfY21kOiAgVGhlIHNoZWxsIGNvbW1hbmQuIEEgMi10dXBsZSB3aGVyZSBl
bGVtZW50IDAgaXMgYSBkaWN0IG9mIGV4dHJhCisgICAgICAgICAgICAgIGVudmlyb25tZW50IHZh
cmlhYmxlcyB0byBzZXQsIGFuZCBlbGVtZW50IDEgaXMgYSBzdHJpbmcgd2l0aAorICAgICAgICAg
ICAgICB0aGUgY29tbWFuZCBhbmQgYW55IGZsYWdzLgorICAiIiIKKworICAjIERpc2FibGVzIGV4
Y2VwdGlvbiBwb3AtdXBzIG9uIFdpbmRvd3MuCisgIGVudmlyb24sIGNtZGxpbmUgPSBlbnZfY21k
CisgIGVudmlyb24gPSBkaWN0KGVudmlyb24pICAjIEVuc3VyZXMgd2UgYXJlIG1vZGlmeWluZyBh
IGNvcHkuCisgIGVudmlyb25bQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSX05BTUVdID0gJzEnCisg
IHJldHVybiBOb3JtYWxpemVPdXRwdXQoR2V0U2hlbGxDb21tYW5kT3V0cHV0KChlbnZpcm9uLCBj
bWRsaW5lKSkpCisKKworZGVmIEdldE91dHB1dE9mQWxsQ29tbWFuZHMoKToKKyAgIiIiUmV0dXJu
cyBjb25jYXRlbmF0ZWQgb3V0cHV0IGZyb20gc2V2ZXJhbCByZXByZXNlbnRhdGl2ZSBjb21tYW5k
cy4iIiIKKworICByZXR1cm4gKEdldENvbW1hbmRPdXRwdXQoQ09NTUFORF9XSVRIX0NPTE9SKSAr
CisgICAgICAgICAgR2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJVEhfVElNRSkgKworICAgICAg
ICAgIEdldENvbW1hbmRPdXRwdXQoQ09NTUFORF9XSVRIX0RJU0FCTEVEKSArCisgICAgICAgICAg
R2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJVEhfU0hBUkRJTkcpKQorCisKK3Rlc3RfbGlzdCA9
IEdldFNoZWxsQ29tbWFuZE91dHB1dChDT01NQU5EX0xJU1RfVEVTVFMpCitTVVBQT1JUU19ERUFU
SF9URVNUUyA9ICdEZWF0aFRlc3QnIGluIHRlc3RfbGlzdAorU1VQUE9SVFNfVFlQRURfVEVTVFMg
PSAnVHlwZWRUZXN0JyBpbiB0ZXN0X2xpc3QKK1NVUFBPUlRTX1RIUkVBRFMgPSAnRXhwZWN0RmFp
bHVyZVdpdGhUaHJlYWRzVGVzdCcgaW4gdGVzdF9saXN0CitTVVBQT1JUU19TVEFDS19UUkFDRVMg
PSBOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRyBub3QgaW4gc3lzLmFyZ3YKKworQ0FOX0dFTkVS
QVRFX0dPTERFTl9GSUxFID0gKFNVUFBPUlRTX0RFQVRIX1RFU1RTIGFuZAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNVUFBPUlRTX1RZUEVEX1RFU1RTIGFuZAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNVUFBPUlRTX1RIUkVBRFMgYW5kCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU1VQUE9SVFNfU1RBQ0tfVFJBQ0VTKQorCitjbGFzcyBHVGVzdE91dHB1dFRlc3QoZ3Rl
c3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgIGRlZiBSZW1vdmVVbnN1cHBvcnRlZFRlc3RzKHNl
bGYsIHRlc3Rfb3V0cHV0KToKKyAgICBpZiBub3QgU1VQUE9SVFNfREVBVEhfVEVTVFM6CisgICAg
ICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdEZWF0aFRl
c3QnKQorICAgIGlmIG5vdCBTVVBQT1JUU19UWVBFRF9URVNUUzoKKyAgICAgIHRlc3Rfb3V0cHV0
ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwgJ1R5cGVkVGVzdCcpCisgICAgICB0
ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdUeXBlZERlYXRo
VGVzdCcpCisgICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRw
dXQsICdUeXBlUGFyYW1EZWF0aFRlc3QnKQorICAgIGlmIG5vdCBTVVBQT1JUU19USFJFQURTOgor
ICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFeHBlY3RGYWlsdXJlV2l0aFRo
cmVhZHNUZXN0JykKKyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0
X291dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU2NvcGVk
RmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0JykKKyAgICAgIHRlc3Rfb3V0cHV0ID0gUmVt
b3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnV29ya3NDb25jdXJyZW50bHknKQorICAgIGlmIG5vdCBTVVBQT1JUU19T
VEFDS19UUkFDRVM6CisgICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZVN0YWNrVHJhY2VzKHRlc3Rf
b3V0cHV0KQorCisgICAgcmV0dXJuIHRlc3Rfb3V0cHV0CisKKyAgZGVmIHRlc3RPdXRwdXQoc2Vs
Zik6CisgICAgb3V0cHV0ID0gR2V0T3V0cHV0T2ZBbGxDb21tYW5kcygpCisKKyAgICBnb2xkZW5f
ZmlsZSA9IG9wZW4oR09MREVOX1BBVEgsICdyYicpCisgICAgIyBBIG1pcy1jb25maWd1cmVkIHNv
dXJjZSBjb250cm9sIHN5c3RlbSBjYW4gY2F1c2UgXHIgYXBwZWFyIGluIEVPTAorICAgICMgc2Vx
dWVuY2VzIHdoZW4gd2UgcmVhZCB0aGUgZ29sZGVuIGZpbGUgaXJyZXNwZWN0aXZlIG9mIGFuIG9w
ZXJhdGluZworICAgICMgc3lzdGVtIHVzZWQuIFRoZXJlZm9yZSwgd2UgbmVlZCB0byBzdHJpcCB0
aG9zZSBccidzIGZyb20gbmV3bGluZXMKKyAgICAjIHVuY29uZGl0aW9uYWxseS4KKyAgICBnb2xk
ZW4gPSBUb1VuaXhMaW5lRW5kaW5nKGdvbGRlbl9maWxlLnJlYWQoKSkKKyAgICBnb2xkZW5fZmls
ZS5jbG9zZSgpCisKKyAgICAjIFdlIHdhbnQgdGhlIHRlc3QgdG8gcGFzcyByZWdhcmRsZXNzIG9m
IGNlcnRhaW4gZmVhdHVyZXMgYmVpbmcKKyAgICAjIHN1cHBvcnRlZCBvciBub3QuCisKKyAgICAj
IFdlIHN0aWxsIGhhdmUgdG8gcmVtb3ZlIHR5cGUgbmFtZSBzcGVjaWZpY3MgaW4gYWxsIGNhc2Vz
LgorICAgIG5vcm1hbGl6ZWRfYWN0dWFsID0gUmVtb3ZlVHlwZUluZm9EZXRhaWxzKG91dHB1dCkK
KyAgICBub3JtYWxpemVkX2dvbGRlbiA9IFJlbW92ZVR5cGVJbmZvRGV0YWlscyhnb2xkZW4pCisK
KyAgICBpZiBDQU5fR0VORVJBVEVfR09MREVOX0ZJTEU6CisgICAgICBzZWxmLmFzc2VydEVxdWFs
KG5vcm1hbGl6ZWRfZ29sZGVuLCBub3JtYWxpemVkX2FjdHVhbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgJ1xuJy5qb2luKGRpZmZsaWIudW5pZmllZF9kaWZmKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbm9ybWFsaXplZF9nb2xkZW4uc3BsaXQoJ1xuJyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub3JtYWxpemVkX2FjdHVhbC5zcGxpdCgnXG4nKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdnb2xkZW4nLCAnYWN0dWFsJykpKQorICAgIGVsc2U6CisgICAgICBub3Jt
YWxpemVkX2FjdHVhbCA9IE5vcm1hbGl6ZVRvQ3VycmVudFBsYXRmb3JtKAorICAgICAgICAgIFJl
bW92ZVRlc3RDb3VudHMobm9ybWFsaXplZF9hY3R1YWwpKQorICAgICAgbm9ybWFsaXplZF9nb2xk
ZW4gPSBOb3JtYWxpemVUb0N1cnJlbnRQbGF0Zm9ybSgKKyAgICAgICAgICBSZW1vdmVUZXN0Q291
bnRzKHNlbGYuUmVtb3ZlVW5zdXBwb3J0ZWRUZXN0cyhub3JtYWxpemVkX2dvbGRlbikpKQorCisg
ICAgICAjIFRoaXMgY29kZSBpcyB2ZXJ5IGhhbmR5IHdoZW4gZGVidWdnaW5nIGdvbGRlbiBmaWxl
IGRpZmZlcmVuY2VzOgorICAgICAgaWYgb3MuZ2V0ZW52KCdERUJVR19HVEVTVF9PVVRQVVRfVEVT
VCcpOgorICAgICAgICBvcGVuKG9zLnBhdGguam9pbigKKyAgICAgICAgICAgIGd0ZXN0X3Rlc3Rf
dXRpbHMuR2V0U291cmNlRGlyKCksCisgICAgICAgICAgICAnX2dvb2dsZXRlc3Qtb3V0cHV0LXRl
c3Rfbm9ybWFsaXplZF9hY3R1YWwudHh0JyksICd3YicpLndyaXRlKAorICAgICAgICAgICAgICAg
IG5vcm1hbGl6ZWRfYWN0dWFsKQorICAgICAgICBvcGVuKG9zLnBhdGguam9pbigKKyAgICAgICAg
ICAgIGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNlRGlyKCksCisgICAgICAgICAgICAnX2dvb2ds
ZXRlc3Qtb3V0cHV0LXRlc3Rfbm9ybWFsaXplZF9nb2xkZW4udHh0JyksICd3YicpLndyaXRlKAor
ICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRfZ29sZGVuKQorCisgICAgICBzZWxmLmFzc2VydEVx
dWFsKG5vcm1hbGl6ZWRfZ29sZGVuLCBub3JtYWxpemVkX2FjdHVhbCkKKworCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICBpZiBOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRyBpbiBzeXMu
YXJndjoKKyAgICAjIHVuaXR0ZXN0Lm1haW4oKSBjYW4ndCBoYW5kbGUgdW5rbm93biBmbGFncwor
ICAgIHN5cy5hcmd2LnJlbW92ZShOT19TVEFDS1RSQUNFX1NVUFBPUlRfRkxBRykKKworICBpZiBH
RU5HT0xERU5fRkxBRyBpbiBzeXMuYXJndjoKKyAgICBpZiBDQU5fR0VORVJBVEVfR09MREVOX0ZJ
TEU6CisgICAgICBvdXRwdXQgPSBHZXRPdXRwdXRPZkFsbENvbW1hbmRzKCkKKyAgICAgIGdvbGRl
bl9maWxlID0gb3BlbihHT0xERU5fUEFUSCwgJ3diJykKKyAgICAgIGdvbGRlbl9maWxlLndyaXRl
KG91dHB1dCkKKyAgICAgIGdvbGRlbl9maWxlLmNsb3NlKCkKKyAgICBlbHNlOgorICAgICAgbWVz
c2FnZSA9ICgKKyAgICAgICAgICAiIiJVbmFibGUgdG8gd3JpdGUgYSBnb2xkZW4gZmlsZSB3aGVu
IGNvbXBpbGVkIGluIGFuIGVudmlyb25tZW50Cit0aGF0IGRvZXMgbm90IHN1cHBvcnQgYWxsIHRo
ZSByZXF1aXJlZCBmZWF0dXJlcyAoZGVhdGggdGVzdHMsCit0eXBlZCB0ZXN0cywgc3RhY2sgdHJh
Y2VzLCBhbmQgbXVsdGlwbGUgdGhyZWFkcykuCitQbGVhc2UgYnVpbGQgdGhpcyB0ZXN0IGFuZCBn
ZW5lcmF0ZSB0aGUgZ29sZGVuIGZpbGUgdXNpbmcgQmxhemUgb24gTGludXguIiIiKQorCisgICAg
ICBzeXMuc3RkZXJyLndyaXRlKG1lc3NhZ2UpCisgICAgICBzeXMuZXhpdCgxKQorICBlbHNlOgor
ICAgIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtb3V0cHV0LXRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjUy
NWVjOTcwZGU1NDIxZTBlMzNiNmZmNmQyY2M2YzhkMDUxNjQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LW91dHB1dC10ZXN0Xy5jYwpA
QCAtMCwwICsxLDExMDkgQEAKKy8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgorLy8gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8v
IG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisv
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKy8vCisvLyBUaGUgcHVycG9zZSBvZiB0aGlzIGZpbGUgaXMgdG8gZ2VuZXJhdGUgR29v
Z2xlIFRlc3Qgb3V0cHV0IHVuZGVyCisvLyB2YXJpb3VzIGNvbmRpdGlvbnMuICBUaGUgb3V0cHV0
IHdpbGwgdGhlbiBiZSB2ZXJpZmllZCBieQorLy8gZ29vZ2xldGVzdC1vdXRwdXQtdGVzdC5weSB0
byBlbnN1cmUgdGhhdCBHb29nbGUgVGVzdCBnZW5lcmF0ZXMgdGhlCisvLyBkZXNpcmVkIG1lc3Nh
Z2VzLiAgVGhlcmVmb3JlLCBtb3N0IHRlc3RzIGluIHRoaXMgZmlsZSBhcmUgTUVBTlQgVE8KKy8v
IEZBSUwuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKKyNpbmNsdWRlICJndGVzdC9n
dGVzdC5oIgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKworI2luY2x1ZGUg
PHN0ZGxpYi5oPgorCisjaWYgX01TQ19WRVIKK0dURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BV
U0hfKDQxMjcgLyogY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudCAqLykKKyNlbmRp
ZiAgLy8gIF9NU0NfVkVSCisKKyNpZiBHVEVTVF9JU19USFJFQURTQUZFCit1c2luZyB0ZXN0aW5n
OjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjsKK3VzaW5nIHRlc3Rpbmc6OlRlc3RQ
YXJ0UmVzdWx0QXJyYXk7CisKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpOb3RpZmljYXRpb247
Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkV2l0aFBhcmFtOworI2VuZGlmCisKK25h
bWVzcGFjZSBwb3NpeCA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OworCisvLyBUZXN0cyBj
YXRjaGluZyBmYXRhbCBmYWlsdXJlcy4KKworLy8gQSBzdWJyb3V0aW5lIHVzZWQgYnkgdGhlIGZv
bGxvd2luZyB0ZXN0Lgordm9pZCBUZXN0RXExKGludCB4KSB7CisgIEFTU0VSVF9FUSgxLCB4KTsK
K30KKworLy8gVGhpcyBmdW5jdGlvbiBjYWxscyBhIHRlc3Qgc3Vicm91dGluZSwgY2F0Y2hlcyB0
aGUgZmF0YWwgZmFpbHVyZSBpdAorLy8gZ2VuZXJhdGVzLCBhbmQgdGhlbiByZXR1cm5zIGVhcmx5
Lgordm9pZCBUcnlUZXN0U3Vicm91dGluZSgpIHsKKyAgLy8gQ2FsbHMgYSBzdWJyb3VudGluZSB0
aGF0IHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUuCisgIFRlc3RFcTEoMik7CisKKyAgLy8gQ2F0Y2hl
cyB0aGUgZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSB0ZXN0LgorICAvLworICAvLyBUaGUg
dGVzdGluZzo6VGVzdDo6IHByZWZpeCBpcyBuZWNlc3Nhcnkgd2hlbiBjYWxsaW5nCisgIC8vIEhh
c0ZhdGFsRmFpbHVyZSgpIG91dHNpZGUgb2YgYSBURVNULCBURVNUX0YsIG9yIHRlc3QgZml4dHVy
ZS4KKyAgaWYgKHRlc3Rpbmc6OlRlc3Q6Okhhc0ZhdGFsRmFpbHVyZSgpKSByZXR1cm47CisKKyAg
Ly8gSWYgd2UgZ2V0IGhlcmUsIHNvbWV0aGluZyBpcyB3cm9uZy4KKyAgRkFJTCgpIDw8ICJUaGlz
IHNob3VsZCBuZXZlciBiZSByZWFjaGVkLiI7Cit9CisKK1RFU1QoUGFzc2luZ1Rlc3QsIFBhc3Np
bmdUZXN0MSkgeworfQorCitURVNUKFBhc3NpbmdUZXN0LCBQYXNzaW5nVGVzdDIpIHsKK30KKwor
Ly8gVGVzdHMgdGhhdCBwYXJhbWV0ZXJzIG9mIGZhaWxpbmcgcGFyYW1ldGVyaXplZCB0ZXN0cyBh
cmUgcHJpbnRlZCBpbiB0aGUKKy8vIGZhaWxpbmcgdGVzdCBzdW1tYXJ5LgorY2xhc3MgRmFpbGlu
Z1BhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4ge307CisKK1RF
U1RfUChGYWlsaW5nUGFyYW1UZXN0LCBGYWlscykgeworICBFWFBFQ1RfRVEoMSwgR2V0UGFyYW0o
KSk7Cit9CisKKy8vIFRoaXMgZ2VuZXJhdGVzIGEgdGVzdCB3aGljaCB3aWxsIGZhaWwuIEdvb2ds
ZSBUZXN0IGlzIGV4cGVjdGVkIHRvIHByaW50CisvLyBpdHMgcGFyYW1ldGVyIHdoZW4gaXQgb3V0
cHV0cyB0aGUgbGlzdCBvZiBhbGwgZmFpbGVkIHRlc3RzLgorSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoUHJpbnRpbmdGYWlsaW5nUGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgRmFpbGlu
Z1BhcmFtVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlcygyKSk7
CisKK3N0YXRpYyBjb25zdCBjaGFyIGtHb2xkZW5TdHJpbmdbXSA9ICJcIkxpbmVcMCAxXCJcbkxp
bmUgMiI7CisKK1RFU1QoTm9uZmF0YWxGYWlsdXJlVGVzdCwgRXNjYXBlc1N0cmluZ09wZXJhbmRz
KSB7CisgIHN0ZDo6c3RyaW5nIGFjdHVhbCA9ICJhY3R1YWwgXCJzdHJpbmdcIiI7CisgIEVYUEVD
VF9FUShrR29sZGVuU3RyaW5nLCBhY3R1YWwpOworCisgIGNvbnN0IGNoYXIqIGdvbGRlbiA9IGtH
b2xkZW5TdHJpbmc7CisgIEVYUEVDVF9FUShnb2xkZW4sIGFjdHVhbCk7Cit9CisKK1RFU1QoTm9u
ZmF0YWxGYWlsdXJlVGVzdCwgRGlmZkZvckxvbmdTdHJpbmdzKSB7CisgIHN0ZDo6c3RyaW5nIGdv
bGRlbl9zdHIoa0dvbGRlblN0cmluZywgc2l6ZW9mKGtHb2xkZW5TdHJpbmcpIC0gMSk7CisgIEVY
UEVDVF9FUShnb2xkZW5fc3RyLCAiTGluZSAyIik7Cit9CisKKy8vIFRlc3RzIGNhdGNoaW5nIGEg
ZmF0YWwgZmFpbHVyZSBpbiBhIHN1YnJvdXRpbmUuCitURVNUKEZhdGFsRmFpbHVyZVRlc3QsIEZh
dGFsRmFpbHVyZUluU3Vicm91dGluZSkgeworICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJl
IHRoYXQgeCBzaG91bGQgYmUgMSlcbiIpOworCisgIFRyeVRlc3RTdWJyb3V0aW5lKCk7Cit9CisK
Ky8vIFRlc3RzIGNhdGNoaW5nIGEgZmF0YWwgZmFpbHVyZSBpbiBhIG5lc3RlZCBzdWJyb3V0aW5l
LgorVEVTVChGYXRhbEZhaWx1cmVUZXN0LCBGYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUp
IHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpXG4i
KTsKKworICAvLyBDYWxscyBhIHN1YnJvdW50aW5lIHRoYXQgeWllbGRzIGEgZmF0YWwgZmFpbHVy
ZS4KKyAgVHJ5VGVzdFN1YnJvdXRpbmUoKTsKKworICAvLyBDYXRjaGVzIHRoZSBmYXRhbCBmYWls
dXJlIGFuZCBhYm9ydHMgdGhlIHRlc3QuCisgIC8vCisgIC8vIFdoZW4gY2FsbGluZyBIYXNGYXRh
bEZhaWx1cmUoKSBpbnNpZGUgYSBURVNULCBURVNUX0YsIG9yIHRlc3QKKyAgLy8gZml4dHVyZSwg
dGhlIHRlc3Rpbmc6OlRlc3Q6OiBwcmVmaXggaXMgbm90IG5lZWRlZC4KKyAgaWYgKEhhc0ZhdGFs
RmFpbHVyZSgpKSByZXR1cm47CisKKyAgLy8gSWYgd2UgZ2V0IGhlcmUsIHNvbWV0aGluZyBpcyB3
cm9uZy4KKyAgRkFJTCgpIDw8ICJUaGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkLiI7Cit9CisK
Ky8vIFRlc3RzIEhhc0ZhdGFsRmFpbHVyZSgpIGFmdGVyIGEgZmFpbGVkIEVYUEVDVCBjaGVjay4K
K1RFU1QoRmF0YWxGYWlsdXJlVGVzdCwgTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lKSB7Cisg
IHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUgb24gZmFsc2UpXG4iKTsKKyAgRVhQRUNUX1RS
VUUoZmFsc2UpOyAgLy8gR2VuZXJhdGVzIGEgbm9uZmF0YWwgZmFpbHVyZQorICBBU1NFUlRfRkFM
U0UoSGFzRmF0YWxGYWlsdXJlKCkpOyAgLy8gVGhpcyBzaG91bGQgc3VjY2VlZC4KK30KKworLy8g
VGVzdHMgaW50ZXJsZWF2aW5nIHVzZXIgbG9nZ2luZyBhbmQgR29vZ2xlIFRlc3QgYXNzZXJ0aW9u
cy4KK1RFU1QoTG9nZ2luZ1Rlc3QsIEludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zKSB7
CisgIHN0YXRpYyBjb25zdCBpbnQgYVs0XSA9IHsKKyAgICAzLCA5LCAyLCA2CisgIH07CisKKyAg
cHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24gKDMpID49IChhW2ldKSlcbiIpOworICBm
b3IgKGludCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKGEpL3NpemVvZigqYSkp
OyBpKyspIHsKKyAgICBwcmludGYoImkgPT0gJWRcbiIsIGkpOworICAgIEVYUEVDVF9HRSgzLCBh
W2ldKTsKKyAgfQorfQorCisvLyBUZXN0cyB0aGUgU0NPUEVEX1RSQUNFIG1hY3JvLgorCisvLyBB
IGhlbHBlciBmdW5jdGlvbiBmb3IgdGVzdGluZyBTQ09QRURfVFJBQ0UuCit2b2lkIFN1YldpdGhv
dXRUcmFjZShpbnQgbikgeworICBFWFBFQ1RfRVEoMSwgbik7CisgIEFTU0VSVF9FUSgyLCBuKTsK
K30KKworLy8gQW5vdGhlciBoZWxwZXIgZnVuY3Rpb24gZm9yIHRlc3RpbmcgU0NPUEVEX1RSQUNF
Lgordm9pZCBTdWJXaXRoVHJhY2UoaW50IG4pIHsKKyAgU0NPUEVEX1RSQUNFKHRlc3Rpbmc6Ok1l
c3NhZ2UoKSA8PCAibiA9ICIgPDwgbik7CisKKyAgU3ViV2l0aG91dFRyYWNlKG4pOworfQorCitU
RVNUKFNDT1BFRF9UUkFDRVRlc3QsIEFjY2VwdGVkVmFsdWVzKSB7CisgIFNDT1BFRF9UUkFDRSgi
bGl0ZXJhbCBzdHJpbmciKTsKKyAgU0NPUEVEX1RSQUNFKHN0ZDo6c3RyaW5nKCJzdGQ6OnN0cmlu
ZyIpKTsKKyAgU0NPUEVEX1RSQUNFKDEzMzcpOyAgLy8gc3RyZWFtYWJsZSB0eXBlCisgIGNvbnN0
IGNoYXIqIG51bGxfdmFsdWUgPSBOVUxMOworICBTQ09QRURfVFJBQ0UobnVsbF92YWx1ZSk7CisK
KyAgQUREX0ZBSUxVUkUoKSA8PCAiSnVzdCBjaGVja2luZyB0aGF0IGFsbCB0aGVzZSB2YWx1ZXMg
d29yayBmaW5lLiI7Cit9CisKKy8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFKCkgb2JleXMgbGV4
aWNhbCBzY29wZXMuCitURVNUKFNDT1BFRF9UUkFDRVRlc3QsIE9iZXlzU2NvcGVzKSB7CisgIHBy
aW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKKworICAvLyBUaGVyZSBzaG91bGQgYmUgbm8g
dHJhY2UgYmVmb3JlIFNDT1BFRF9UUkFDRSgpIGlzIGludm9rZWQuCisgIEFERF9GQUlMVVJFKCkg
PDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2Uu
IjsKKworICB7CisgICAgU0NPUEVEX1RSQUNFKCJFeHBlY3RlZCB0cmFjZSIpOworICAgIC8vIEFm
dGVyIFNDT1BFRF9UUkFDRSgpLCBhIGZhaWx1cmUgaW4gdGhlIGN1cnJlbnQgc2NvcGUgc2hvdWxk
IGNvbnRhaW4KKyAgICAvLyB0aGUgdHJhY2UuCisgICAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBm
YWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGhhdmUgYSB0cmFjZS4iOworICB9CisKKyAg
Ly8gT25jZSB0aGUgY29udHJvbCBsZWF2ZXMgdGhlIHNjb3BlIG9mIHRoZSBTQ09QRURfVFJBQ0Uo
KSwgdGhlcmUKKyAgLy8gc2hvdWxkIGJlIG5vIHRyYWNlIGFnYWluLgorICBBRERfRkFJTFVSRSgp
IDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNl
LiI7Cit9CisKKy8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFIHdvcmtzIGluc2lkZSBhIGxvb3Au
CitURVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtzSW5Mb29wKSB7CisgIHByaW50ZigiKGV4cGVj
dGVkIHRvIGZhaWwpXG4iKTsKKworICBmb3IgKGludCBpID0gMTsgaSA8PSAyOyBpKyspIHsKKyAg
ICBTQ09QRURfVFJBQ0UodGVzdGluZzo6TWVzc2FnZSgpIDw8ICJpID0gIiA8PCBpKTsKKworICAg
IFN1YldpdGhvdXRUcmFjZShpKTsKKyAgfQorfQorCisvLyBUZXN0cyB0aGF0IFNDT1BFRF9UUkFD
RSB3b3JrcyBpbiBhIHN1YnJvdXRpbmUuCitURVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtzSW5T
dWJyb3V0aW5lKSB7CisgIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKKworICBTdWJX
aXRoVHJhY2UoMSk7CisgIFN1YldpdGhUcmFjZSgyKTsKK30KKworLy8gVGVzdHMgdGhhdCBTQ09Q
RURfVFJBQ0UgY2FuIGJlIG5lc3RlZC4KK1RFU1QoU0NPUEVEX1RSQUNFVGVzdCwgQ2FuQmVOZXN0
ZWQpIHsKKyAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIpOworCisgIFNDT1BFRF9UUkFD
RSgiIik7ICAvLyBBIHRyYWNlIHdpdGhvdXQgYSBtZXNzYWdlLgorCisgIFN1YldpdGhUcmFjZSgy
KTsKK30KKworLy8gVGVzdHMgdGhhdCBtdWx0aXBsZSBTQ09QRURfVFJBQ0VzIGNhbiBiZSB1c2Vk
IGluIHRoZSBzYW1lIHNjb3BlLgorVEVTVChTQ09QRURfVFJBQ0VUZXN0LCBDYW5CZVJlcGVhdGVk
KSB7CisgIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKKworICBTQ09QRURfVFJBQ0Uo
IkEiKTsKKyAgQUREX0ZBSUxVUkUoKQorICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEuIjsKKworICBTQ09QRURfVFJBQ0Uo
IkIiKTsKKyAgQUREX0ZBSUxVUkUoKQorICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEgYW5kIEIuIjsKKworICB7CisgICAg
U0NPUEVEX1RSQUNFKCJDIik7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkLCBhbmQgc2hvdWxkICIKKyAgICAgICAgICAgICAgICAgIDw8ICJjb250YWluIHRy
YWNlIHBvaW50IEEsIEIsIGFuZCBDLiI7CisgIH0KKworICBTQ09QRURfVFJBQ0UoIkQiKTsKKyAg
QUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkICIK
KyAgICAgICAgICAgICAgICA8PCAiY29udGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQgRC4iOwor
fQorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorLy8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0Uo
KXMgY2FuIGJlIHVzZWQgY29uY3VycmVudGx5IGZyb20gbXVsdGlwbGUKKy8vIHRocmVhZHMuICBO
YW1lbHksIGFuIGFzc2VydGlvbiBzaG91bGQgYmUgYWZmZWN0ZWQgYnkKKy8vIFNDT1BFRF9UUkFD
RSgpcyBpbiBpdHMgb3duIHRocmVhZCBvbmx5LgorCisvLyBIZXJlJ3MgdGhlIHNlcXVlbmNlIG9m
IGFjdGlvbnMgdGhhdCBoYXBwZW4gaW4gdGhlIHRlc3Q6CisvLworLy8gICBUaHJlYWQgQSAobWFp
bikgICAgICAgICAgICAgICAgfCBUaHJlYWQgQiAoc3Bhd25lZCkKKy8vICAgPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PXw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8g
ICBzcGF3bnMgdGhyZWFkIEIgICAgICAgICAgICAgICAgfAorLy8gICAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIHdh
aXRzIGZvciBuMSAgICAgICAgICAgICAgICAgICB8IFNDT1BFRF9UUkFDRSgiVHJhY2UgQiIpOwor
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnZW5lcmF0ZXMgZmFpbHVyZSAj
MQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBub3RpZmllcyBuMQorLy8g
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLyAgIFNDT1BFRF9UUkFDRSgiVHJhY2UgQSIpOyAgICAgICB8IHdhaXRzIGZv
ciBuMgorLy8gICBnZW5lcmF0ZXMgZmFpbHVyZSAjMiAgICAgICAgICAgfAorLy8gICBub3RpZmll
cyBuMiAgICAgICAgICAgICAgICAgICAgfAorLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIHdhaXRzIGZvciBu
MyAgICAgICAgICAgICAgICAgICB8IGdlbmVyYXRlcyBmYWlsdXJlICMzCisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8IHRyYWNlIEIgZGllcworLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCBnZW5lcmF0ZXMgZmFpbHVyZSAjNAorLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCBub3RpZmllcyBuMworLy8gICAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIGdl
bmVyYXRlcyBmYWlsdXJlICM1ICAgICAgICAgICB8IGZpbmlzaGVzCisvLyAgIHRyYWNlIEEgZGll
cyAgICAgICAgICAgICAgICAgICB8CisvLyAgIGdlbmVyYXRlcyBmYWlsdXJlICM2ICAgICAgICAg
ICB8CisvLyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgd2FpdHMgZm9yIHRocmVhZCBCIHRvIGZpbmlzaCAgIHwK
Kworc3RydWN0IENoZWNrUG9pbnRzIHsKKyAgTm90aWZpY2F0aW9uIG4xOworICBOb3RpZmljYXRp
b24gbjI7CisgIE5vdGlmaWNhdGlvbiBuMzsKK307CisKK3N0YXRpYyB2b2lkIFRocmVhZFdpdGhT
Y29wZWRUcmFjZShDaGVja1BvaW50cyogY2hlY2tfcG9pbnRzKSB7CisgIHsKKyAgICBTQ09QRURf
VFJBQ0UoIlRyYWNlIEIiKTsKKyAgICBBRERfRkFJTFVSRSgpCisgICAgICAgIDw8ICJFeHBlY3Rl
ZCBmYWlsdXJlICMxIChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBCIGFsaXZlKS4iOworICAgIGNo
ZWNrX3BvaW50cy0+bjEuTm90aWZ5KCk7CisgICAgY2hlY2tfcG9pbnRzLT5uMi5XYWl0Rm9yTm90
aWZpY2F0aW9uKCk7CisKKyAgICBBRERfRkFJTFVSRSgpCisgICAgICAgIDw8ICJFeHBlY3RlZCBm
YWlsdXJlICMzIChpbiB0aHJlYWQgQiwgdHJhY2UgQSAmIEIgYm90aCBhbGl2ZSkuIjsKKyAgfSAg
Ly8gVHJhY2UgQiBkaWVzIGhlcmUuCisgIEFERF9GQUlMVVJFKCkKKyAgICAgIDw8ICJFeHBlY3Rl
ZCBmYWlsdXJlICM0IChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBBIGFsaXZlKS4iOworICBjaGVj
a19wb2ludHMtPm4zLk5vdGlmeSgpOworfQorCitURVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtz
Q29uY3VycmVudGx5KSB7CisgIHByaW50ZigiKGV4cGVjdGluZyA2IGZhaWx1cmVzKVxuIik7CisK
KyAgQ2hlY2tQb2ludHMgY2hlY2tfcG9pbnRzOworICBUaHJlYWRXaXRoUGFyYW08Q2hlY2tQb2lu
dHMqPiB0aHJlYWQoJlRocmVhZFdpdGhTY29wZWRUcmFjZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZjaGVja19wb2ludHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgY2hlY2tfcG9pbnRzLm4xLldhaXRGb3JOb3RpZmlj
YXRpb24oKTsKKworICB7CisgICAgU0NPUEVEX1RSQUNFKCJUcmFjZSBBIik7CisgICAgQUREX0ZB
SUxVUkUoKQorICAgICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiAoaW4gdGhyZWFkIEEsIHRy
YWNlIEEgJiBCIGJvdGggYWxpdmUpLiI7CisgICAgY2hlY2tfcG9pbnRzLm4yLk5vdGlmeSgpOwor
ICAgIGNoZWNrX3BvaW50cy5uMy5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7CisKKyAgICBBRERfRkFJ
TFVSRSgpCisgICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM1IChpbiB0aHJlYWQgQSwgb25s
eSB0cmFjZSBBIGFsaXZlKS4iOworICB9ICAvLyBUcmFjZSBBIGRpZXMgaGVyZS4KKyAgQUREX0ZB
SUxVUkUoKQorICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzYgKGluIHRocmVhZCBBLCBubyB0
cmFjZSBhbGl2ZSkuIjsKKyAgdGhyZWFkLkpvaW4oKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfSVNf
VEhSRUFEU0FGRQorCisvLyBUZXN0cyBiYXNpYyBmdW5jdGlvbmFsaXR5IG9mIHRoZSBTY29wZWRU
cmFjZSB1dGlsaXR5IChtb3N0IG9mIGl0cyBmZWF0dXJlcworLy8gYXJlIGFscmVhZHkgdGVzdGVk
IGluIFNDT1BFRF9UUkFDRVRlc3QpLgorVEVTVChTY29wZWRUcmFjZVRlc3QsIFdpdGhFeHBsaWNp
dEZpbGVBbmRMaW5lKSB7CisgIHRlc3Rpbmc6OlNjb3BlZFRyYWNlIHRyYWNlKCJleHBsaWNpdF9m
aWxlLmNjIiwgMTIzLCAiZXhwZWN0ZWQgdHJhY2UgbWVzc2FnZSIpOworICBBRERfRkFJTFVSRSgp
IDw8ICJDaGVjayB0aGF0IHRoZSB0cmFjZSBpcyBhdHRhY2hlZCB0byBhIHBhcnRpY3VsYXIgbG9j
YXRpb24uIjsKK30KKworVEVTVChEaXNhYmxlZFRlc3RzV2FybmluZ1Rlc3QsCisgICAgIERJU0FC
TEVEX0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZ1N1cHByZXNzZXNXYXJuaW5nKSB7CisgIC8vIFRo
aXMgdGVzdCBib2R5IGlzIGludGVudGlvbmFsbHkgZW1wdHkuICBJdHMgc29sZSBwdXJwb3NlIGlz
IGZvcgorICAvLyB2ZXJpZnlpbmcgdGhhdCB0aGUgLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90
ZXN0cyBmbGFnCisgIC8vIHN1cHByZXNzZXMgdGhlICJZT1UgSEFWRSAxMiBESVNBQkxFRCBURVNU
UyIgd2FybmluZyBhdCB0aGUgZW5kIG9mCisgIC8vIHRoZSB0ZXN0IG91dHB1dC4KK30KKworLy8g
VGVzdHMgdXNpbmcgYXNzZXJ0aW9ucyBvdXRzaWRlIG9mIFRFU1QgYW5kIFRFU1RfRi4KKy8vCisv
LyBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgdHdvIGZhaWx1cmVzIGludGVudGlvbmFsbHkuCit2b2lk
IEFkSG9jVGVzdCgpIHsKKyAgcHJpbnRmKCJUaGUgbm9uLXRlc3QgcGFydCBvZiB0aGUgY29kZSBp
cyBleHBlY3RlZCB0byBoYXZlIDIgZmFpbHVyZXMuXG5cbiIpOworICBFWFBFQ1RfVFJVRShmYWxz
ZSk7CisgIEVYUEVDVF9FUSgyLCAzKTsKK30KKworLy8gUnVucyBhbGwgVEVTVHMsIGFsbCBURVNU
X0ZzLCBhbmQgdGhlIGFkIGhvYyB0ZXN0LgoraW50IFJ1bkFsbFRlc3RzKCkgeworICBBZEhvY1Rl
c3QoKTsKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KKworLy8gVGVzdHMgbm9uLWZhdGFs
IGZhaWx1cmVzIGluIHRoZSBmaXh0dXJlIGNvbnN0cnVjdG9yLgorY2xhc3MgTm9uRmF0YWxGYWls
dXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworIHBy
b3RlY3RlZDoKKyAgTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0KCkgewor
ICAgIHByaW50ZigiKGV4cGVjdGluZyA1IGZhaWx1cmVzKVxuIik7CisgICAgQUREX0ZBSUxVUkUo
KSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4iOwor
ICB9CisKKyAgfk5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCgpIHsKKyAg
ICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM1LCBpbiB0aGUgdGVzdCBmaXh0
dXJlIGQndG9yLiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgQUREX0ZB
SUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gU2V0VXAoKS4iOworICB9CisKKyAg
dmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVk
IGZhaWx1cmUgIzQsIGluIFRlYXJEb3duLiI7CisgIH0KK307CisKK1RFU1RfRihOb25GYXRhbEZh
aWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QsIEZhaWx1cmVJbkNvbnN0cnVjdG9yKSB7Cisg
IEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGJvZHku
IjsKK30KKworLy8gVGVzdHMgZmF0YWwgZmFpbHVyZXMgaW4gdGhlIGZpeHR1cmUgY29uc3RydWN0
b3IuCitjbGFzcyBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7CisgcHJvdGVjdGVkOgorICBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25z
dHJ1Y3RvclRlc3QoKSB7CisgICAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMpXG4iKTsK
KyAgICBJbml0KCk7CisgIH0KKworICB+RmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JU
ZXN0KCkgeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRo
ZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsK
KyAgICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gU2V0VXAoKS4gICIK
KyAgICAgICAgICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0
ZXN0IGZpeHR1cmUgYyd0b3IgIgorICAgICAgICAgICAgICAgICAgPDwgImhhZCBhIGZhdGFsIGZh
aWx1cmUuIjsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBBRERfRkFJ
TFVSRSgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gVGVhckRvd24oKS4gICIKKyAgICAgICAg
ICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1
cmUgYyd0b3IgIgorICAgICAgICAgICAgICAgICAgPDwgImhhZCBhIGZhdGFsIGZhaWx1cmUuIjsK
KyAgfQorCisgcHJpdmF0ZToKKyAgdm9pZCBJbml0KCkgeworICAgIEZBSUwoKSA8PCAiRXhwZWN0
ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4iOworICB9Cit9OworCitU
RVNUX0YoRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LCBGYWlsdXJlSW5Db25z
dHJ1Y3RvcikgeworICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gdGhl
IHRlc3QgYm9keS4gICIKKyAgICAgICAgICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBo
ZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yICIKKyAgICAgICAgICAgICAgICA8PCAiaGFk
IGEgZmF0YWwgZmFpbHVyZS4iOworfQorCisvLyBUZXN0cyBub24tZmF0YWwgZmFpbHVyZXMgaW4g
U2V0VXAoKS4KK2NsYXNzIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdmlydHVhbCB+Tm9uRmF0YWxGYWlsdXJlSW5TZXRV
cFRlc3QoKSB7CisgICAgRGVpbml0KCk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7
CisgICAgcHJpbnRmKCIoZXhwZWN0aW5nIDQgZmFpbHVyZXMpXG4iKTsKKyAgICBBRERfRkFJTFVS
RSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLiI7CisgIH0KKworICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMz
LCBpbiBUZWFyRG93bigpLiI7CisgIH0KKyBwcml2YXRlOgorICB2b2lkIERlaW5pdCgpIHsKKyAg
ICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0
b3IuIjsKKyAgfQorfTsKKworVEVTVF9GKE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LCBGYWls
dXJlSW5TZXRVcCkgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0
ZXN0IGZ1bmN0aW9uLiI7Cit9CisKKy8vIFRlc3RzIGZhdGFsIGZhaWx1cmVzIGluIFNldFVwKCku
CitjbGFzcyBGYXRhbEZhaWx1cmVJblNldFVwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
KyBwcm90ZWN0ZWQ6CisgIHZpcnR1YWwgfkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0KCkgeworICAg
IERlaW5pdCgpOworICB9CisKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIHByaW50Zigi
KGV4cGVjdGluZyAzIGZhaWx1cmVzKVxuIik7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWls
dXJlICMxLCBpbiBTZXRVcCgpLiI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7
CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLiI7Cisg
IH0KKyBwcml2YXRlOgorICB2b2lkIERlaW5pdCgpIHsKKyAgICBGQUlMKCkgPDwgIkV4cGVjdGVk
IGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKKyAgfQorfTsKKworVEVT
VF9GKEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LCBGYWlsdXJlSW5TZXRVcCkgeworICBGQUlMKCkg
PDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBmdW5jdGlvbi4gICIKKyAgICAgICAg
IDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIFNldFVwKCkgZmFpbGVkLiI7Cit9CisK
K1RFU1QoQWRkRmFpbHVyZUF0VGVzdCwgTWVzc2FnZUNvbnRhaW5zU3BlY2lmaWVkRmlsZUFuZExp
bmVOdW1iZXIpIHsKKyAgQUREX0ZBSUxVUkVfQVQoImZvby5jYyIsIDQyKSA8PCAiRXhwZWN0ZWQg
ZmFpbHVyZSBpbiBmb28uY2MiOworfQorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorCisvLyBB
IHVuYXJ5IGZ1bmN0aW9uIHRoYXQgbWF5IGRpZS4KK3ZvaWQgRGllSWYoYm9vbCBzaG91bGRfZGll
KSB7CisgIEdURVNUX0NIRUNLXyghc2hvdWxkX2RpZSkgPDwgIiAtIGRlYXRoIGluc2lkZSBEaWVJ
ZigpLiI7Cit9CisKKy8vIFRlc3RzIHJ1bm5pbmcgZGVhdGggdGVzdHMgaW4gYSBtdWx0aS10aHJl
YWRlZCBjb250ZXh0LgorCisvLyBVc2VkIGZvciBjb29yZGluYXRpb24gYmV0d2VlbiB0aGUgbWFp
biBhbmQgdGhlIHNwYXduIHRocmVhZC4KK3N0cnVjdCBTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMg
eworICBTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMoKSB7fQorCisgIE5vdGlmaWNhdGlvbiBzcGF3
bl90aHJlYWRfc3RhcnRlZDsKKyAgTm90aWZpY2F0aW9uIHNwYXduX3RocmVhZF9va190b190ZXJt
aW5hdGU7CisKKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNw
YXduVGhyZWFkTm90aWZpY2F0aW9ucyk7Cit9OworCisvLyBUaGUgZnVuY3Rpb24gdG8gYmUgZXhl
Y3V0ZWQgaW4gdGhlIHRocmVhZCBzcGF3biBieSB0aGUKKy8vIE11bHRpcGxlVGhyZWFkcyB0ZXN0
IChiZWxvdykuCitzdGF0aWMgdm9pZCBUaHJlYWRSb3V0aW5lKFNwYXduVGhyZWFkTm90aWZpY2F0
aW9ucyogbm90aWZpY2F0aW9ucykgeworICAvLyBTaWduYWxzIHRoZSBtYWluIHRocmVhZCB0aGF0
IHRoaXMgdGhyZWFkIGhhcyBzdGFydGVkLgorICBub3RpZmljYXRpb25zLT5zcGF3bl90aHJlYWRf
c3RhcnRlZC5Ob3RpZnkoKTsKKworICAvLyBXYWl0cyBmb3IgcGVybWlzc2lvbiB0byBmaW5pc2gg
ZnJvbSB0aGUgbWFpbiB0aHJlYWQuCisgIG5vdGlmaWNhdGlvbnMtPnNwYXduX3RocmVhZF9va190
b190ZXJtaW5hdGUuV2FpdEZvck5vdGlmaWNhdGlvbigpOworfQorCisvLyBUaGlzIGlzIGEgZGVh
dGgtdGVzdCB0ZXN0LCBidXQgaXQncyBub3QgbmFtZWQgd2l0aCBhIERlYXRoVGVzdAorLy8gc3Vm
Zml4LiAgSXQgc3RhcnRzIHRocmVhZHMgd2hpY2ggbWlnaHQgaW50ZXJmZXJlIHdpdGggbGF0ZXIK
Ky8vIGRlYXRoIHRlc3RzLCBzbyBpdCBtdXN0IHJ1biBhZnRlciBhbGwgb3RoZXIgZGVhdGggdGVz
dHMuCitjbGFzcyBEZWF0aFRlc3RBbmRNdWx0aVRocmVhZHNUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgeworIHByb3RlY3RlZDoKKyAgLy8gU3RhcnRzIGEgdGhyZWFkIGFuZCB3YWl0cyBmb3Ig
aXQgdG8gYmVnaW4uCisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICB0aHJlYWRfLnJlc2V0
KG5ldyBUaHJlYWRXaXRoUGFyYW08U3Bhd25UaHJlYWROb3RpZmljYXRpb25zKj4oCisgICAgICAg
ICZUaHJlYWRSb3V0aW5lLCAmbm90aWZpY2F0aW9uc18sIE5VTEwpKTsKKyAgICBub3RpZmljYXRp
b25zXy5zcGF3bl90aHJlYWRfc3RhcnRlZC5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7CisgIH0KKyAg
Ly8gVGVsbHMgdGhlIHRocmVhZCB0byBmaW5pc2gsIGFuZCByZWFwcyBpdC4KKyAgLy8gRGVwZW5k
aW5nIG9uIHRoZSB2ZXJzaW9uIG9mIHRoZSB0aHJlYWQgbGlicmFyeSBpbiB1c2UsCisgIC8vIGEg
bWFuYWdlciB0aHJlYWQgbWlnaHQgc3RpbGwgYmUgbGVmdCBydW5uaW5nIHRoYXQgd2lsbCBpbnRl
cmZlcmUKKyAgLy8gd2l0aCBsYXRlciBkZWF0aCB0ZXN0cy4gIFRoaXMgaXMgdW5mb3J0dW5hdGUs
IGJ1dCB0aGlzIGNsYXNzCisgIC8vIGNsZWFucyB1cCBhZnRlciBpdHNlbGYgYXMgYmVzdCBpdCBj
YW4uCisgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICBub3RpZmljYXRpb25zXy5zcGF3
bl90aHJlYWRfb2tfdG9fdGVybWluYXRlLk5vdGlmeSgpOworICB9CisKKyBwcml2YXRlOgorICBT
cGF3blRocmVhZE5vdGlmaWNhdGlvbnMgbm90aWZpY2F0aW9uc187CisgIHRlc3Rpbmc6OmludGVy
bmFsOjpzY29wZWRfcHRyPFRocmVhZFdpdGhQYXJhbTxTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMq
PiA+CisgICAgICB0aHJlYWRfOworfTsKKworI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZF
CisKKy8vIFRoZSBNaXhlZFVwVGVzdENhc2VUZXN0IHRlc3QgY2FzZSB2ZXJpZmllcyB0aGF0IEdv
b2dsZSBUZXN0IHdpbGwgZmFpbCBhCisvLyB0ZXN0IGlmIGl0IHVzZXMgYSBkaWZmZXJlbnQgZml4
dHVyZSBjbGFzcyB0aGFuIHdoYXQgb3RoZXIgdGVzdHMgaW4KKy8vIHRoZSBzYW1lIHRlc3QgY2Fz
ZSB1c2UuICBJdCBkZWxpYmVyYXRlbHkgY29udGFpbnMgdHdvIGZpeHR1cmUKKy8vIGNsYXNzZXMg
d2l0aCB0aGUgc2FtZSBuYW1lIGJ1dCBkZWZpbmVkIGluIGRpZmZlcmVudCBuYW1lc3BhY2VzLgor
CisvLyBUaGUgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QgdGVzdCBjYXNlIHZl
cmlmaWVzIHRoYXQKKy8vIHdoZW4gdGhlIHVzZXIgZGVmaW5lcyB0d28gdGVzdHMgd2l0aCB0aGUg
c2FtZSB0ZXN0IGNhc2UgbmFtZSBBTkQKKy8vIHNhbWUgdGVzdCBuYW1lIChidXQgaW4gZGlmZmVy
ZW50IG5hbWVzcGFjZXMpLCB0aGUgc2Vjb25kIHRlc3Qgd2lsbAorLy8gZmFpbC4KKworbmFtZXNw
YWNlIGZvbyB7CisKK2NsYXNzIE1peGVkVXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Cit9OworCitURVNUX0YoTWl4ZWRVcFRlc3RDYXNlVGVzdCwgRmlyc3RUZXN0RnJvbU5h
bWVzcGFjZUZvbykge30KK1RFU1RfRihNaXhlZFVwVGVzdENhc2VUZXN0LCBTZWNvbmRUZXN0RnJv
bU5hbWVzcGFjZUZvbykge30KKworY2xhc3MgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFt
ZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitURVNUX0YoTWl4ZWRVcFRlc3RD
YXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCisgICAgICAgVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFt
ZVNob3VsZEZhaWwpIHt9CisKK30gIC8vIG5hbWVzcGFjZSBmb28KKworbmFtZXNwYWNlIGJhciB7
CisKK2NsYXNzIE1peGVkVXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9
OworCisvLyBUaGUgZm9sbG93aW5nIHR3byB0ZXN0cyBhcmUgZXhwZWN0ZWQgdG8gZmFpbC4gIFdl
IHJlbHkgb24gdGhlCisvLyBnb2xkZW4gZmlsZSB0byBjaGVjayB0aGF0IEdvb2dsZSBUZXN0IGdl
bmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KK1RFU1RfRihNaXhlZFVwVGVzdENhc2VU
ZXN0LCBUaGlzU2hvdWxkRmFpbCkge30KK1RFU1RfRihNaXhlZFVwVGVzdENhc2VUZXN0LCBUaGlz
U2hvdWxkRmFpbFRvbykge30KKworY2xhc3MgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFt
ZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCisvLyBFeHBlY3RlZCB0byBmYWls
LiAgV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gY2hlY2sgdGhhdCBHb29nbGUgVGVzdAor
Ly8gZ2VuZXJhdGVzIHRoZSByaWdodCBlcnJvciBtZXNzYWdlLgorVEVTVF9GKE1peGVkVXBUZXN0
Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAorICAgICAgIFRoZVNlY29uZFRlc3RXaXRoVGhpc05h
bWVTaG91bGRGYWlsKSB7fQorCit9ICAvLyBuYW1lc3BhY2UgYmFyCisKKy8vIFRoZSBmb2xsb3dp
bmcgdHdvIHRlc3QgY2FzZXMgdmVyaWZ5IHRoYXQgR29vZ2xlIFRlc3QgY2F0Y2hlcyB0aGUgdXNl
cgorLy8gZXJyb3Igb2YgbWl4aW5nIFRFU1QgYW5kIFRFU1RfRiBpbiB0aGUgc2FtZSB0ZXN0IGNh
c2UuICBUaGUgZmlyc3QKKy8vIHRlc3QgY2FzZSBjaGVja3MgdGhlIHNjZW5hcmlvIHdoZXJlIFRF
U1RfRiBhcHBlYXJzIGJlZm9yZSBURVNULCBhbmQKKy8vIHRoZSBzZWNvbmQgb25lIGNoZWNrcyB3
aGVyZSBURVNUIGFwcGVhcnMgYmVmb3JlIFRFU1RfRi4KKworY2xhc3MgVEVTVF9GX2JlZm9yZV9U
RVNUX2luX3NhbWVfdGVzdF9jYXNlIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKworVEVT
VF9GKFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSwgRGVmaW5lZFVzaW5nVEVT
VF9GKSB7fQorCisvLyBFeHBlY3RlZCB0byBmYWlsLiAgV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZp
bGUgdG8gY2hlY2sgdGhhdCBHb29nbGUgVGVzdAorLy8gZ2VuZXJhdGVzIHRoZSByaWdodCBlcnJv
ciBtZXNzYWdlLgorVEVTVChURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UsIERl
ZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsKSB7fQorCitjbGFzcyBURVNUX2JlZm9yZV9URVNU
X0ZfaW5fc2FtZV90ZXN0X2Nhc2UgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cit9OworCitURVNU
KFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZSwgRGVmaW5lZFVzaW5nVEVTVCkg
e30KKworLy8gRXhwZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRv
IGNoZWNrIHRoYXQgR29vZ2xlIFRlc3QKKy8vIGdlbmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVz
c2FnZS4KK1RFU1RfRihURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UsIERlZmlu
ZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwpIHsKK30KKworLy8gVXNlZCBmb3IgdGVzdGluZyBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGFuZCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpLgoraW50
IGdsb2JhbF9pbnRlZ2VyID0gMDsKKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSgpIGNhbiByZWZlcmVuY2UgZ2xvYmFsIHZhcmlhYmxlcy4KK1RFU1QoRXhwZWN0Tm9uZmF0
YWxGYWlsdXJlVGVzdCwgQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzKSB7CisgIGdsb2JhbF9p
bnRlZ2VyID0gMDsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIEVYUEVDVF9FUSgx
LCBnbG9iYWxfaW50ZWdlcikgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7CisgIH0s
ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVuY2UgbG9jYWwgdmFyaWFibGVzCisvLyAo
c3RhdGljIG9yIG5vdCkuCitURVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIENhblJlZmVy
ZW5jZUxvY2FsVmFyaWFibGVzKSB7CisgIGludCBtID0gMDsKKyAgc3RhdGljIGludCBuOworICBu
ID0gMTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIEVYUEVDVF9FUShtLCBuKSA8
PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKKyAgfSwgIkV4cGVjdGVkIG5vbi1mYXRh
bCBmYWlsdXJlLiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KCkgc3VjY2VlZHMgd2hlbiB0aGVyZSBpcyBleGFjdGx5CisvLyBvbmUgbm9uLWZhdGFsIGZhaWx1
cmUgYW5kIG5vIGZhdGFsIGZhaWx1cmUuCitURVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qs
IFN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUpIHsKKyAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoeworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBm
YWlsdXJlLiI7CisgIH0sICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKK30KKworLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgaXMg
bm8KKy8vIG5vbi1mYXRhbCBmYWlsdXJlLgorVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LCBGYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUpIHsKKyAgcHJpbnRmKCIoZXhwZWN0
aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7CisgIH0sICIi
KTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdo
ZW4gdGhlcmUgYXJlIHR3bworLy8gbm9uLWZhdGFsIGZhaWx1cmVzLgorVEVTVChFeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMpIHsK
KyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRSh7CisgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUgMS4iOworICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
IDIuIjsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBvbmUgZmF0YWwKKy8vIGZhaWx1cmUuCitURVNUKEV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUp
IHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSh7CisgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7Cisg
IH0sICIiKTsKK30KKworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZh
aWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWluZworLy8gdGVzdGVkIHJldHVybnMuCitURVNUKEV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblN0YXRlbWVudFJldHVybnMpIHsKKyAg
cHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSh7CisgICAgcmV0dXJuOworICB9LCAiIik7Cit9CisKKyNpZiBHVEVTVF9IQVNfRVhDRVBU
SU9OUworCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hl
biB0aGUgc3RhdGVtZW50IGJlaW5nCisvLyB0ZXN0ZWQgdGhyb3dzLgorVEVTVChFeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MpIHsKKyAgcHJpbnRmKCIo
ZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICB0cnkgeworICAgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKHsKKyAgICAgIHRocm93IDA7CisgICAgfSwgIiIpOworICB9IGNhdGNoKGludCkgeyAg
Ly8gTk9MSU5UCisgIH0KK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisv
LyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgY2FuIHJlZmVyZW5jZSBnbG9iYWwg
dmFyaWFibGVzLgorVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBDYW5SZWZlcmVuY2VHbG9i
YWxWYXJpYWJsZXMpIHsKKyAgZ2xvYmFsX2ludGVnZXIgPSAwOworICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRSh7CisgICAgQVNTRVJUX0VRKDEsIGdsb2JhbF9pbnRlZ2VyKSA8PCAiRXhwZWN0ZWQgZmF0
YWwgZmFpbHVyZS4iOworICB9LCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKK30KKworLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGNhbiByZWZlcmVuY2UgbG9jYWwgc3Rh
dGljCisvLyB2YXJpYWJsZXMuCitURVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIENhblJlZmVy
ZW5jZUxvY2FsU3RhdGljVmFyaWFibGVzKSB7CisgIHN0YXRpYyBpbnQgbjsKKyAgbiA9IDE7Cisg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKKyAgICBBU1NFUlRfRVEoMCwgbikgPDwgIkV4cGVjdGVk
IGZhdGFsIGZhaWx1cmUuIjsKKyAgfSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Cit9CisK
Ky8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBzdWNjZWVkcyB3aGVuIHRoZXJl
IGlzIGV4YWN0bHkKKy8vIG9uZSBmYXRhbCBmYWlsdXJlIGFuZCBubyBub24tZmF0YWwgZmFpbHVy
ZS4KK1RFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgU3VjY2VlZHNXaGVuVGhlcmVJc09uZUZh
dGFsRmFpbHVyZSkgeworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CisgICAgRkFJTCgpIDw8ICJF
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7CisgIH0sICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIp
OworfQorCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0
aGVyZSBpcyBubyBmYXRhbAorLy8gZmFpbHVyZS4KK1RFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVz
dCwgRmFpbHNXaGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlKSB7CisgIHByaW50ZigiKGV4cGVjdGlu
ZyBhIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeworICB9LCAiIik7Cit9
CisKKy8vIEEgaGVscGVyIGZvciBnZW5lcmF0aW5nIGEgZmF0YWwgZmFpbHVyZS4KK3ZvaWQgRmF0
YWxGYWlsdXJlKCkgeworICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKK30K
KworLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUg
YXJlIHR3bworLy8gZmF0YWwgZmFpbHVyZXMuCitURVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qs
IEZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcykgeworICBwcmludGYoIihleHBlY3Rp
bmcgYSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKKyAgICBGYXRhbEZh
aWx1cmUoKTsKKyAgICBGYXRhbEZhaWx1cmUoKTsKKyAgfSwgIiIpOworfQorCisvLyBUZXN0cyB0
aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBvbmUgbm9uLWZh
dGFsCisvLyBmYWlsdXJlLgorVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5U
aGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlKSB7CisgIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1
cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeworICAgIEFERF9GQUlMVVJFKCkgPDwg
IkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7CisgIH0sICIiKTsKK30KKworLy8gVGVzdHMg
dGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWlu
ZworLy8gdGVzdGVkIHJldHVybnMuCitURVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEZhaWxz
V2hlblN0YXRlbWVudFJldHVybnMpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlc
biIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CisgICAgcmV0dXJuOworICB9LCAiIik7Cit9
CisKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUworCisvLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRB
TF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGUgc3RhdGVtZW50IGJlaW5nCisvLyB0ZXN0ZWQgdGhy
b3dzLgorVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRUaHJv
d3MpIHsKKyAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOworICB0cnkgeworICAg
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKKyAgICAgIHRocm93IDA7CisgICAgfSwgIiIpOworICB9
IGNhdGNoKGludCkgeyAgLy8gTk9MSU5UCisgIH0KK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNf
RVhDRVBUSU9OUworCisvLyBUaGlzICNpZmRlZiBibG9jayB0ZXN0cyB0aGUgb3V0cHV0IG9mIHZh
bHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCisKK3N0ZDo6c3RyaW5nIFBhcmFtTmFtZUZ1bmMoY29u
c3QgdGVzdGluZzo6VGVzdFBhcmFtSW5mbzxzdGQ6OnN0cmluZz4mIGluZm8pIHsKKyAgcmV0dXJu
IGluZm8ucGFyYW07Cit9CisKK2NsYXNzIFBhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
V2l0aFBhcmFtPHN0ZDo6c3RyaW5nPiB7Cit9OworCitURVNUX1AoUGFyYW1UZXN0LCBTdWNjZXNz
KSB7CisgIEVYUEVDVF9FUSgiYSIsIEdldFBhcmFtKCkpOworfQorCitURVNUX1AoUGFyYW1UZXN0
LCBGYWlsdXJlKSB7CisgIEVYUEVDVF9FUSgiYiIsIEdldFBhcmFtKCkpIDw8ICJFeHBlY3RlZCBm
YWlsdXJlIjsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoUHJpbnRpbmdTdHJpbmdzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1UZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdGluZzo6VmFsdWVzKHN0ZDo6c3RyaW5nKCJhIikpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgUGFyYW1OYW1lRnVuYyk7CisKKy8vIFRoaXMgI2lmZGVmIGJsb2NrIHRlc3RzIHRoZSBv
dXRwdXQgb2YgdHlwZWQgdGVzdHMuCisjaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBUeXBlZFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
Cit9OworCitUWVBFRF9URVNUX0NBU0UoVHlwZWRUZXN0LCB0ZXN0aW5nOjpUeXBlczxpbnQ+KTsK
KworVFlQRURfVEVTVChUeXBlZFRlc3QsIFN1Y2Nlc3MpIHsKKyAgRVhQRUNUX0VRKDAsIFR5cGVQ
YXJhbSgpKTsKK30KKworVFlQRURfVEVTVChUeXBlZFRlc3QsIEZhaWx1cmUpIHsKKyAgRVhQRUNU
X0VRKDEsIFR5cGVQYXJhbSgpKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7Cit9CisKK3R5cGVkZWYg
dGVzdGluZzo6VHlwZXM8Y2hhciwgaW50PiBUeXBlc0ZvclRlc3RXaXRoTmFtZXM7CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZWRUZXN0V2l0aE5hbWVzIDogcHVibGljIHRlc3Rp
bmc6OlRlc3Qge307CisKK2NsYXNzIFR5cGVkVGVzdE5hbWVzIHsKKyBwdWJsaWM6CisgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICBzdGF0aWMgc3RkOjpzdHJpbmcgR2V0TmFtZShpbnQgaSkgewor
ICAgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFQsIGNoYXI+Ojp2YWx1ZSkKKyAgICAg
IHJldHVybiBzdGQ6OnN0cmluZygiY2hhciIpICsgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGkp
OworICAgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFQsIGludD46OnZhbHVlKQorICAg
ICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCJpbnQiKSArIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhp
KTsKKyAgfQorfTsKKworVFlQRURfVEVTVF9DQVNFKFR5cGVkVGVzdFdpdGhOYW1lcywgVHlwZXNG
b3JUZXN0V2l0aE5hbWVzLCBUeXBlZFRlc3ROYW1lcyk7CisKK1RZUEVEX1RFU1QoVHlwZWRUZXN0
V2l0aE5hbWVzLCBTdWNjZXNzKSB7fQorCitUWVBFRF9URVNUKFR5cGVkVGVzdFdpdGhOYW1lcywg
RmFpbHVyZSkgeyBGQUlMKCk7IH0KKworI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAor
CisvLyBUaGlzICNpZmRlZiBibG9jayB0ZXN0cyB0aGUgb3V0cHV0IG9mIHR5cGUtcGFyYW1ldGVy
aXplZCB0ZXN0cy4KKyNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgorY2xhc3MgVHlwZWRUZXN0UCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307CisK
K1RZUEVEX1RFU1RfQ0FTRV9QKFR5cGVkVGVzdFApOworCitUWVBFRF9URVNUX1AoVHlwZWRUZXN0
UCwgU3VjY2VzcykgeworICBFWFBFQ1RfRVEoMFUsIFR5cGVQYXJhbSgpKTsKK30KKworVFlQRURf
VEVTVF9QKFR5cGVkVGVzdFAsIEZhaWx1cmUpIHsKKyAgRVhQRUNUX0VRKDFVLCBUeXBlUGFyYW0o
KSkgPDwgIkV4cGVjdGVkIGZhaWx1cmUiOworfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0Vf
UChUeXBlZFRlc3RQLCBTdWNjZXNzLCBGYWlsdXJlKTsKKwordHlwZWRlZiB0ZXN0aW5nOjpUeXBl
czx1bnNpZ25lZCBjaGFyLCB1bnNpZ25lZCBpbnQ+IFVuc2lnbmVkVHlwZXM7CitJTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUChVbnNpZ25lZCwgVHlwZWRUZXN0UCwgVW5zaWduZWRUeXBlcyk7
CisKK2NsYXNzIFR5cGVkVGVzdFBOYW1lcyB7CisgcHVibGljOgorICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldE5hbWUoaW50IGkpIHsKKyAgICBpZiAodGVz
dGluZzo6aW50ZXJuYWw6OklzU2FtZTxULCB1bnNpZ25lZCBjaGFyPjo6dmFsdWUpIHsKKyAgICAg
IHJldHVybiBzdGQ6OnN0cmluZygidW5zaWduZWRDaGFyIikgKyA6OnRlc3Rpbmc6OlByaW50VG9T
dHJpbmcoaSk7CisgICAgfQorICAgIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6SXNTYW1lPFQsIHVu
c2lnbmVkIGludD46OnZhbHVlKSB7CisgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoInVuc2lnbmVk
SW50IikgKyA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoaSk7CisgICAgfQorICB9Cit9OworCitJ
TlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChVbnNpZ25lZEN1c3RvbU5hbWUsIFR5cGVkVGVz
dFAsIFVuc2lnbmVkVHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlZFRl
c3RQTmFtZXMpOworCisjZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUX1AKKworI2lmIEdU
RVNUX0hBU19ERUFUSF9URVNUCisKKy8vIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIHZl
cmlmeSB0aGF0IHRlc3RzIHdob3NlIHRlc3QgY2FzZQorLy8gbmFtZSBlbmRzIHdpdGggRGVhdGhU
ZXN0IGFyZSBydW4gZmlyc3QuCisKK1RFU1QoQURlYXRoVGVzdCwgU2hvdWxkUnVuRmlyc3QpIHsK
K30KKworIyBpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAorCisvLyBXZSByZWx5IG9uIHRoZSBnb2xk
ZW4gZmlsZSB0byB2ZXJpZnkgdGhhdCB0eXBlZCB0ZXN0cyB3aG9zZSB0ZXN0CisvLyBjYXNlIG5h
bWUgZW5kcyB3aXRoIERlYXRoVGVzdCBhcmUgcnVuIGZpcnN0LgorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK2NsYXNzIEFUeXBlZERlYXRoVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK307
CisKK3R5cGVkZWYgdGVzdGluZzo6VHlwZXM8aW50LCBkb3VibGU+IE51bWVyaWNUeXBlczsKK1RZ
UEVEX1RFU1RfQ0FTRShBVHlwZWREZWF0aFRlc3QsIE51bWVyaWNUeXBlcyk7CisKK1RZUEVEX1RF
U1QoQVR5cGVkRGVhdGhUZXN0LCBTaG91bGRSdW5GaXJzdCkgeworfQorCisjIGVuZGlmICAvLyBH
VEVTVF9IQVNfVFlQRURfVEVTVAorCisjIGlmIEdURVNUX0hBU19UWVBFRF9URVNUX1AKKworCisv
LyBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmlsZSB0byB2ZXJpZnkgdGhhdCB0eXBlLXBhcmFtZXRl
cml6ZWQgdGVzdHMKKy8vIHdob3NlIHRlc3QgY2FzZSBuYW1lIGVuZHMgd2l0aCBEZWF0aFRlc3Qg
YXJlIHJ1biBmaXJzdC4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBBVHlwZVBhcmFt
RGVhdGhUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworfTsKKworVFlQRURfVEVTVF9DQVNF
X1AoQVR5cGVQYXJhbURlYXRoVGVzdCk7CisKK1RZUEVEX1RFU1RfUChBVHlwZVBhcmFtRGVhdGhU
ZXN0LCBTaG91bGRSdW5GaXJzdCkgeworfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChB
VHlwZVBhcmFtRGVhdGhUZXN0LCBTaG91bGRSdW5GaXJzdCk7CisKK0lOU1RBTlRJQVRFX1RZUEVE
X1RFU1RfQ0FTRV9QKE15LCBBVHlwZVBhcmFtRGVhdGhUZXN0LCBOdW1lcmljVHlwZXMpOworCisj
IGVuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCisKKyNlbmRpZiAgLy8gR1RFU1RfSEFT
X0RFQVRIX1RFU1QKKworLy8gVGVzdHMgdmFyaW91cyBmYWlsdXJlIGNvbmRpdGlvbnMgb2YKKy8v
IEVYUEVDVF97LE5PTn1GQVRBTF9GQUlMVVJFeyxfT05fQUxMX1RIUkVBRFN9LgorY2xhc3MgRXhw
ZWN0RmFpbHVyZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CisgcHVibGljOiAgLy8gTXVz
dCBiZSBwdWJsaWMgYW5kIG5vdCBwcm90ZWN0ZWQgZHVlIHRvIGEgYnVnIGluIGcrKyAzLjQuMi4K
KyAgZW51bSBGYWlsdXJlTW9kZSB7CisgICAgRkFUQUxfRkFJTFVSRSwKKyAgICBOT05GQVRBTF9G
QUlMVVJFCisgIH07CisgIHN0YXRpYyB2b2lkIEFkZEZhaWx1cmUoRmFpbHVyZU1vZGUgZmFpbHVy
ZSkgeworICAgIGlmIChmYWlsdXJlID09IEZBVEFMX0ZBSUxVUkUpIHsKKyAgICAgIEZBSUwoKSA8
PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOworICAgIH0gZWxzZSB7CisgICAgICBBRERfRkFJ
TFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOworICAgIH0KKyAgfQorfTsK
KworVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3RGYXRhbEZhaWx1cmUpIHsKKyAgLy8g
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0IHN1Y2NlZWRzLgorICBwcmludGYoIihleHBlY3Rp
bmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKFNVQ0NFRUQoKSwgIkV4
cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7CisgIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1
dCBnb3QgYSBub24tZmF0YWwgZmFpbHVyZS4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVy
ZSlcbiIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxV
UkUpLCAiRXhwZWN0ZWQgbm9uLWZhdGFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgImZhaWx1
cmUuIik7CisgIC8vIFdyb25nIG1lc3NhZ2UuCisgIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1
cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJF
KSwgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSAiCisgICAgICAgICAgICAgICAgICAgICAgICJl
eHBlY3RlZC4iKTsKK30KKworVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3ROb25GYXRh
bEZhaWx1cmUpIHsKKyAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVk
cy4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShTVUNDRUVEKCksICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKKyAg
Ly8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBmYXRhbCBmYWlsdXJlLgor
ICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJl
LiIpOworICAvLyBXcm9uZyBtZXNzYWdlLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJl
KVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJ
TFVSRSksICJTb21lIG90aGVyIG5vbi1mYXRhbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJmYWlsdXJlLiIpOworfQorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorCitjbGFzcyBFeHBl
Y3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0IDogcHVibGljIEV4cGVjdEZhaWx1cmVUZXN0IHsKKyBw
cm90ZWN0ZWQ6CisgIHN0YXRpYyB2b2lkIEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZhaWx1cmVN
b2RlIGZhaWx1cmUpIHsKKyAgICBUaHJlYWRXaXRoUGFyYW08RmFpbHVyZU1vZGU+IHRocmVhZCgm
QWRkRmFpbHVyZSwgZmFpbHVyZSwgTlVMTCk7CisgICAgdGhyZWFkLkpvaW4oKTsKKyAgfQorfTsK
KworVEVTVF9GKEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QsIEV4cGVjdEZhdGFsRmFpbHVy
ZSkgeworICAvLyBXZSBvbmx5IGludGVyY2VwdCB0aGUgY3VycmVudCB0aHJlYWQuCisgIHByaW50
ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFk
ZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZBVEFMX0ZBSUxVUkUpLAorICAgICAgICAgICAgICAgICAg
ICAgICAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKK30KKworVEVTVF9GKEV4cGVjdEZhaWx1
cmVXaXRoVGhyZWFkc1Rlc3QsIEV4cGVjdE5vbkZhdGFsRmFpbHVyZSkgeworICAvLyBXZSBvbmx5
IGludGVyY2VwdCB0aGUgY3VycmVudCB0aHJlYWQuCisgIHByaW50ZigiKGV4cGVjdGluZyAyIGZh
aWx1cmVzKVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmVJbk90aGVy
VGhyZWFkKE5PTkZBVEFMX0ZBSUxVUkUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhw
ZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7Cit9CisKK3R5cGVkZWYgRXhwZWN0RmFpbHVyZVdp
dGhUaHJlYWRzVGVzdCBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3Q7CisKKy8v
IFRlc3RzIHRoYXQgdGhlIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyIG9ubHkgY2F0
Y2hlcyBmYWlsdXJlcyBmcm9tCisvLyB0aGUgY3VycmVudCB0aHJlYWQgaWYgaXQgaXMgaW5zdGFu
dGlhdGVkIHdpdGggSU5URVJDRVBUX09OTFlfQ1VSUkVOVF9USFJFQUQuCitURVNUX0YoU2NvcGVk
RmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LCBJbnRlcmNlcHRPbmx5Q3VycmVudFRocmVh
ZCkgeworICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOworICBUZXN0UGFydFJl
c3VsdEFycmF5IHJlc3VsdHM7CisgIHsKKyAgICBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBv
cnRlciByZXBvcnRlcigKKyAgICAgICAgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6
OklOVEVSQ0VQVF9PTkxZX0NVUlJFTlRfVEhSRUFELAorICAgICAgICAmcmVzdWx0cyk7CisgICAg
QWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoRkFUQUxfRkFJTFVSRSk7CisgICAgQWRkRmFpbHVyZUlu
T3RoZXJUaHJlYWQoTk9ORkFUQUxfRkFJTFVSRSk7CisgIH0KKyAgLy8gVGhlIHR3byBmYWlsdXJl
cyBzaG91bGQgbm90IGhhdmUgYmVlbiBpbnRlcmNlcHRlZC4KKyAgRVhQRUNUX0VRKDAsIHJlc3Vs
dHMuc2l6ZSgpKSA8PCAiVGhpcyBzaG91bGRuJ3QgZmFpbC4iOworfQorCisjZW5kaWYgIC8vIEdU
RVNUX0lTX1RIUkVBRFNBRkUKKworVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3RGYXRh
bEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKKyAgLy8gRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0
IHN1Y2NlZWRzLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVD
VF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKFNVQ0NFRUQoKSwgIkV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuIik7CisgIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBub24t
ZmF0YWwgZmFpbHVyZS4KKyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlKE5PTkZBVEFMX0ZB
SUxVUkUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQg
bm9uLWZhdGFsIGZhaWx1cmUuIik7CisgIC8vIFdyb25nIG1lc3NhZ2UuCisgIHByaW50ZigiKGV4
cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RI
UkVBRFMoQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJFKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBlY3RlZC4iKTsKK30K
KworVEVTVF9GKEV4cGVjdEZhaWx1cmVUZXN0LCBFeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRo
cmVhZHMpIHsKKyAgLy8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4K
KyAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRV9PTl9BTExfVEhSRUFEUyhTVUNDRUVEKCksICJFeHBlY3RlZCBub24tZmF0YWwgIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbHVyZS4iKTsKKyAg
Ly8gRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUsIGJ1dCBnb3QgYSBmYXRhbCBmYWlsdXJlLgor
ICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJl
LiIpOworICAvLyBXcm9uZyBtZXNzYWdlLgorICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJl
KVxuIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1
cmUoTk9ORkFUQUxfRkFJTFVSRSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJTb21lIG90aGVyIG5vbi1mYXRhbCBmYWlsdXJlLiIpOworfQorCisKKy8vIFR3byB0
ZXN0IGVudmlyb25tZW50cyBmb3IgdGVzdGluZyB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJv
bm1lbnQoKS4KKworY2xhc3MgRm9vRW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6RW52aXJv
bm1lbnQgeworIHB1YmxpYzoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIHByaW50Zigi
JXMiLCAiRm9vRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLlxuIik7CisgIH0KKworICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgcHJpbnRmKCIlcyIsICJGb29FbnZpcm9ubWVudDo6
VGVhckRvd24oKSBjYWxsZWQuXG4iKTsKKyAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZh
aWx1cmUuIjsKKyAgfQorfTsKKworY2xhc3MgQmFyRW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGlu
Zzo6RW52aXJvbm1lbnQgeworIHB1YmxpYzoKKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAg
IHByaW50ZigiJXMiLCAiQmFyRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLlxuIik7CisgIH0K
KworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgcHJpbnRmKCIlcyIsICJCYXJFbnZp
cm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuXG4iKTsKKyAgICBBRERfRkFJTFVSRSgpIDw8ICJF
eHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOworICB9Cit9OworCisvLyBUaGUgbWFpbiBmdW5j
dGlvbi4KKy8vCisvLyBUaGUgaWRlYSBpcyB0byB1c2UgR29vZ2xlIFRlc3QgdG8gcnVuIGFsbCB0
aGUgdGVzdHMgd2UgaGF2ZSBkZWZpbmVkIChzb21lCisvLyBvZiB0aGVtIGFyZSBpbnRlbmRlZCB0
byBmYWlsKSwgYW5kIHRoZW4gY29tcGFyZSB0aGUgdGVzdCByZXN1bHRzCisvLyB3aXRoIHRoZSAi
Z29sZGVuIiBmaWxlLgoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIHRlc3Rp
bmc6OkdURVNUX0ZMQUcocHJpbnRfdGltZSkgPSBmYWxzZTsKKworICAvLyBXZSBqdXN0IHJ1biB0
aGUgdGVzdHMsIGtub3dpbmcgc29tZSBvZiB0aGVtIGFyZSBpbnRlbmRlZCB0byBmYWlsLgorICAv
LyBXZSB3aWxsIHVzZSBhIHNlcGFyYXRlIFB5dGhvbiBzY3JpcHQgdG8gY29tcGFyZSB0aGUgb3V0
cHV0IG9mCisgIC8vIHRoaXMgcHJvZ3JhbSB3aXRoIHRoZSBnb2xkZW4gZmlsZS4KKworICAvLyBJ
dCdzIGhhcmQgdG8gdGVzdCBJbml0R29vZ2xlVGVzdCgpIGRpcmVjdGx5LCBhcyBpdCBoYXMgbWFu
eQorICAvLyBnbG9iYWwgc2lkZSBlZmZlY3RzLiAgVGhlIGZvbGxvd2luZyBsaW5lIHNlcnZlcyBh
cyBhIHNhbml0eSB0ZXN0CisgIC8vIGZvciBpdC4KKyAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3Qo
JmFyZ2MsIGFyZ3YpOworICBib29sIGludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hv
Y190ZXN0cyA9CisgICAgICBzdGQ6OmNvdW50KGFyZ3YsIGFyZ3YgKyBhcmdjLAorICAgICAgICAg
ICAgICAgICBzdGQ6OnN0cmluZygiaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9j
X3Rlc3RzIikpID4gMDsKKworI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCisgIGlmICh0ZXN0aW5n
OjppbnRlcm5hbDo6R1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkgIT0gIiIpIHsK
KyAgICAvLyBTa2lwIHRoZSB1c3VhbCBvdXRwdXQgY2FwdHVyaW5nIGlmIHdlJ3JlIHJ1bm5pbmcg
YXMgdGhlIGNoaWxkCisgICAgLy8gcHJvY2VzcyBvZiBhbiB0aHJlYWRzYWZlLXN0eWxlIGRlYXRo
IHRlc3QuCisjIGlmIEdURVNUX09TX1dJTkRPV1MKKyAgICBwb3NpeDo6RlJlb3BlbigibnVsOiIs
ICJ3Iiwgc3Rkb3V0KTsKKyMgZWxzZQorICAgIHBvc2l4OjpGUmVvcGVuKCIvZGV2L251bGwiLCAi
dyIsIHN0ZG91dCk7CisjIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCisgICAgcmV0dXJuIFJV
Tl9BTExfVEVTVFMoKTsKKyAgfQorI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAorCisg
IGlmIChpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMpCisgICAgcmV0
dXJuIFJVTl9BTExfVEVTVFMoKTsKKworICAvLyBSZWdpc3RlcnMgdHdvIGdsb2JhbCB0ZXN0IGVu
dmlyb25tZW50cy4KKyAgLy8gVGhlIGdvbGRlbiBmaWxlIHZlcmlmaWVzIHRoYXQgdGhleSBhcmUg
c2V0IHVwIGluIHRoZSBvcmRlciB0aGV5CisgIC8vIGFyZSByZWdpc3RlcmVkLCBhbmQgdG9ybiBk
b3duIGluIHRoZSByZXZlcnNlIG9yZGVyLgorICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJv
bm1lbnQobmV3IEZvb0Vudmlyb25tZW50KTsKKyAgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmly
b25tZW50KG5ldyBCYXJFbnZpcm9ubWVudCk7CisjaWYgX01TQ19WRVIKK0dURVNUX0RJU0FCTEVf
TVNDX1dBUk5JTkdTX1BPUF8oKSAgLy8gIDQxMjcKKyNlbmRpZiAgLy8gIF9NU0NfVkVSCisgIHJl
dHVybiBSdW5BbGxUZXN0cygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMS10ZXN0LnB5IGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1u
YW1lMS10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhMDg0NzdhNzdlYmRmMGFhNTVmMjM0NDRhYmQ2Yjgz
OWQ5MGJhNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUxLXRlc3QucHkKQEAgLTAsMCArMSw2
MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJWZXJpZmll
cyB0aGF0IEdvb2dsZSBUZXN0IHdhcm5zIHRoZSB1c2VyIHdoZW4gbm90IGluaXRpYWxpemVkIHBy
b3Blcmx5LiIiIgorCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitiaW5hcnlfbmFtZSA9ICdn
b29nbGV0ZXN0LXBhcmFtLXRlc3QtaW52YWxpZC1uYW1lMS10ZXN0XycKK0NPTU1BTkQgPSBndGVz
dF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aChiaW5hcnlfbmFtZSkKKworCitkZWYg
QXNzZXJ0KGNvbmRpdGlvbik6CisgIGlmIG5vdCBjb25kaXRpb246CisgICAgcmFpc2UgQXNzZXJ0
aW9uRXJyb3IKKworCitkZWYgVGVzdEV4aXRDb2RlQW5kT3V0cHV0KGNvbW1hbmQpOgorICAiIiJS
dW5zIHRoZSBnaXZlbiBjb21tYW5kIGFuZCB2ZXJpZmllcyBpdHMgZXhpdCBjb2RlIGFuZCBvdXRw
dXQuIiIiCisKKyAgZXJyID0gKCdQYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSBcJyJJbnZhbGlkV2l0
aFF1b3RlcyJcJyBpcyBpbnZhbGlkJykKKworICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9j
ZXNzKGNvbW1hbmQpCisgIEFzc2VydChwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsKQorCisgICMgVmVy
aWZ5IHRoZSBvdXRwdXQgbWVzc2FnZSBjb250YWlucyBhcHByb3ByaWF0ZSBvdXRwdXQKKyAgQXNz
ZXJ0KGVyciBpbiBwLm91dHB1dCkKKworCitjbGFzcyBHVGVzdFBhcmFtVGVzdEludmFsaWROYW1l
MVRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CisKKyAgZGVmIHRlc3RFeGl0Q29kZUFu
ZE91dHB1dChzZWxmKToKKyAgICBUZXN0RXhpdENvZGVBbmRPdXRwdXQoQ09NTUFORCkKKworCitp
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRl
c3QtaW52YWxpZC1uYW1lMS10ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFtZTEtdGVzdF8uY2MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWE5NTE1NWIyM2E3ODcxZGI1ZDI1NDlhMGU5ZjkwNTA3NWE5Mzk5NAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWlu
dmFsaWQtbmFtZTEtdGVzdF8uY2MKQEAgLTAsMCArMSw1MCBAQAorLy8gQ29weXJpZ2h0IDIwMTUs
IEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgor
CituYW1lc3BhY2UgeworY2xhc3MgRHVtbXlUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdp
dGhQYXJhbTxjb25zdCBjaGFyICo+IHt9OworCitURVNUX1AoRHVtbXlUZXN0LCBEdW1teSkgewor
fQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChJbnZhbGlkVGVzdE5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICBEdW1teVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rp
bmc6OlZhbHVlcygiSW52YWxpZFdpdGhRdW90ZXMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgpKTsKKworfSAgLy8gbmFtZXNwYWNl
CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAgdGVzdGluZzo6SW5pdEdv
b2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0t
dGVzdC1pbnZhbGlkLW5hbWUyLXRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRlc3QucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YWI4MzhmNDYzMjI5MWQxY2I3OGU0YTExZWMzYWIwYzc3M2I5NGQ1YwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWlu
dmFsaWQtbmFtZTItdGVzdC5weQpAQCAtMCwwICsxLDYyIEBACisjIS91c3IvYmluL2VudiBweXRo
b24KKyMKKyMgQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3Qgd2FybnMg
dGhlIHVzZXIgd2hlbiBub3QgaW5pdGlhbGl6ZWQgcHJvcGVybHkuIiIiCisKK2ltcG9ydCBndGVz
dF90ZXN0X3V0aWxzCisKK2JpbmFyeV9uYW1lID0gJ2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZh
bGlkLW5hbWUyLXRlc3RfJworQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1
dGFibGVQYXRoKGJpbmFyeV9uYW1lKQorCisKK2RlZiBBc3NlcnQoY29uZGl0aW9uKToKKyAgaWYg
bm90IGNvbmRpdGlvbjoKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCisKK2RlZiBUZXN0RXhp
dENvZGVBbmRPdXRwdXQoY29tbWFuZCk6CisgICIiIlJ1bnMgdGhlIGdpdmVuIGNvbW1hbmQgYW5k
IHZlcmlmaWVzIGl0cyBleGl0IGNvZGUgYW5kIG91dHB1dC4iIiIKKworICBlcnIgPSAoJ0R1cGxp
Y2F0ZSBwYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSBcJ2FcJycpCisKKyAgcCA9IGd0ZXN0X3Rlc3Rf
dXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kKQorICBBc3NlcnQocC50ZXJtaW5hdGVkX2J5X3NpZ25h
bCkKKworICAjIENoZWNrIGZvciBhcHByb3ByaWF0ZSBvdXRwdXQKKyAgQXNzZXJ0KGVyciBpbiBw
Lm91dHB1dCkKKworCitjbGFzcyBHVGVzdFBhcmFtVGVzdEludmFsaWROYW1lMlRlc3QoZ3Rlc3Rf
dGVzdF91dGlscy5UZXN0Q2FzZSk6CisKKyAgZGVmIHRlc3RFeGl0Q29kZUFuZE91dHB1dChzZWxm
KToKKyAgICBUZXN0RXhpdENvZGVBbmRPdXRwdXQoQ09NTUFORCkKKworaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKKyAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LWludmFsaWQtbmFt
ZTItdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFy
YW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmMDkzNDkwZTlkYTJm
MDJlZDI4YTJkMDcxMjQ0NWUyNDE3Y2JkYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC1pbnZhbGlkLW5hbWUyLXRl
c3RfLmNjCkBAIC0wLDAgKzEsNTUgQEAKKy8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgor
Ly8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsK
K2NsYXNzIER1bW15VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08Y29uc3Qg
Y2hhciAqPiB7fTsKKworc3RkOjpzdHJpbmcgU3RyaW5nUGFyYW1UZXN0U3VmZml4KAorICAgIGNv
bnN0IHRlc3Rpbmc6OlRlc3RQYXJhbUluZm88Y29uc3QgY2hhcio+JiBpbmZvKSB7CisgIHJldHVy
biBzdGQ6OnN0cmluZyhpbmZvLnBhcmFtKTsKK30KKworVEVTVF9QKER1bW15VGVzdCwgRHVtbXkp
IHsKK30KKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoRHVwbGljYXRlVGVzdE5hbWVzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgRHVtbXlUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
Ojp0ZXN0aW5nOjpWYWx1ZXMoImEiLCAiYiIsICJhIiwgImMiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFN0cmluZ1BhcmFtVGVzdFN1ZmZpeCk7Cit9ICAvLyBuYW1lc3BhY2UKKworaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgm
YXJnYywgYXJndik7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CisKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0
LXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc4OWNhYjI3MDc0MTRjNDY0ODQ5NmQ3YjlmYmFiNGZlNTMx
ZjBiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MKQEAgLTAsMCArMSwxMTA5IEBACisvLyBDb3B5cmln
aHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8v
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlv
bi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vCisvLyBUZXN0cyBmb3IgR29v
Z2xlIFRlc3QgaXRzZWxmLiBUaGlzIGZpbGUgdmVyaWZpZXMgdGhhdCB0aGUgcGFyYW1ldGVyCisv
LyBnZW5lcmF0b3JzIG9iamVjdHMgcHJvZHVjZSBjb3JyZWN0IHBhcmFtZXRlciBzZXF1ZW5jZXMg
YW5kIHRoYXQKKy8vIEdvb2dsZSBUZXN0IHJ1bnRpbWUgaW5zdGFudGlhdGVzIGNvcnJlY3QgdGVz
dHMgZnJvbSB0aG9zZSBzZXF1ZW5jZXMuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisj
IGluY2x1ZGUgPGFsZ29yaXRobT4KKyMgaW5jbHVkZSA8aW9zdHJlYW0+CisjIGluY2x1ZGUgPGxp
c3Q+CisjIGluY2x1ZGUgPHNzdHJlYW0+CisjIGluY2x1ZGUgPHN0cmluZz4KKyMgaW5jbHVkZSA8
dmVjdG9yPgorCisjIGluY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIgIC8vIGZvciBV
bml0VGVzdE9wdGlvbnMKKyMgaW5jbHVkZSAidGVzdC9nb29nbGV0ZXN0LXBhcmFtLXRlc3QtdGVz
dC5oIgorCit1c2luZyA6OnN0ZDo6dmVjdG9yOwordXNpbmcgOjpzdGQ6OnNvcnQ7CisKK3VzaW5n
IDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50OwordXNpbmcgOjp0ZXN0aW5nOjpC
b29sOwordXNpbmcgOjp0ZXN0aW5nOjpNZXNzYWdlOwordXNpbmcgOjp0ZXN0aW5nOjpSYW5nZTsK
K3VzaW5nIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTsKK3VzaW5nIDo6dGVzdGluZzo6VmFsdWVz
OwordXNpbmcgOjp0ZXN0aW5nOjpWYWx1ZXNJbjsKKworIyBpZiBHVEVTVF9IQVNfQ09NQklORQor
dXNpbmcgOjp0ZXN0aW5nOjpDb21iaW5lOwordXNpbmcgOjp0ZXN0aW5nOjpnZXQ7Cit1c2luZyA6
OnRlc3Rpbmc6Om1ha2VfdHVwbGU7Cit1c2luZyA6OnRlc3Rpbmc6OnR1cGxlOworIyBlbmRpZiAg
Ly8gR1RFU1RfSEFTX0NPTUJJTkUKKwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1H
ZW5lcmF0b3I7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml0VGVzdE9wdGlvbnM7CisK
Ky8vIFByaW50cyBhIHZhbHVlIHRvIGEgc3RyaW5nLgorLy8KKy8vIEZJWE1FOiByZW1vdmUgUHJp
bnRWYWx1ZSgpIHdoZW4gd2UgbW92ZSBtYXRjaGVycyBhbmQKKy8vIEVYUEVDVF9USEFUKCkgZnJv
bSBHb29nbGUgTW9jayB0byBHb29nbGUgVGVzdC4gIEF0IHRoYXQgdGltZSwgd2UKKy8vIGNhbiB3
cml0ZSBFWFBFQ1RfVEhBVCh4LCBFcSh5KSkgdG8gY29tcGFyZSB0d28gdHVwbGVzIHggYW5kIHks
IGFzCisvLyBFWFBFQ1RfVEhBVCgpIGFuZCB0aGUgbWF0Y2hlcnMga25vdyBob3cgdG8gcHJpbnQg
dHVwbGVzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cis6OnN0ZDo6c3RyaW5nIFByaW50VmFsdWUo
Y29uc3QgVCYgdmFsdWUpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07CisgIHN0cmVh
bSA8PCB2YWx1ZTsKKyAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKK30KKworIyBpZiBHVEVTVF9IQVNf
Q09NQklORQorCisvLyBUaGVzZSBvdmVybG9hZHMgYWxsb3cgcHJpbnRpbmcgdHVwbGVzIGluIG91
ciB0ZXN0cy4gIFdlIGNhbm5vdAorLy8gZGVmaW5lIGFuIG9wZXJhdG9yPDwgZm9yIHR1cGxlcywg
YXMgdGhhdCBkZWZpbml0aW9uIG5lZWRzIHRvIGJlIGluCisvLyB0aGUgc3RkIG5hbWVzcGFjZSBp
biBvcmRlciB0byBiZSBwaWNrZWQgdXAgYnkgR29vZ2xlIFRlc3QgdmlhCisvLyBBcmd1bWVudC1E
ZXBlbmRlbnQgTG9va3VwLCB5ZXQgZGVmaW5pbmcgYW55dGhpbmcgaW4gdGhlIHN0ZAorLy8gbmFt
ZXNwYWNlIGluIG5vbi1TVEwgY29kZSBpcyB1bmRlZmluZWQgYmVoYXZpb3IuCisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cis6OnN0ZDo6c3RyaW5nIFByaW50VmFsdWUoY29u
c3QgdHVwbGU8VDEsIFQyPiYgdmFsdWUpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07
CisgIHN0cmVhbSA8PCAiKCIgPDwgZ2V0PDA+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDwxPih2YWx1
ZSkgPDwgIikiOworICByZXR1cm4gc3RyZWFtLnN0cigpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KKzo6c3RkOjpzdHJpbmcgUHJpbnRWYWx1
ZShjb25zdCB0dXBsZTxUMSwgVDIsIFQzPiYgdmFsdWUpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVh
bSBzdHJlYW07CisgIHN0cmVhbSA8PCAiKCIgPDwgZ2V0PDA+KHZhbHVlKSA8PCAiLCAiIDw8IGdl
dDwxPih2YWx1ZSkKKyAgICAgICAgIDw8ICIsICI8PCBnZXQ8Mj4odmFsdWUpIDw8ICIpIjsKKyAg
cmV0dXJuIHN0cmVhbS5zdHIoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKKyAgICAgICAgICB0
eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5h
bWUgVDEwPgorOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKAorICAgIGNvbnN0IHR1cGxlPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD4mIHZhbHVlKSB7CisgIDo6c3RkOjpz
dHJpbmdzdHJlYW0gc3RyZWFtOworICBzdHJlYW0gPDwgIigiIDw8IGdldDwwPih2YWx1ZSkgPDwg
IiwgIiA8PCBnZXQ8MT4odmFsdWUpCisgICAgICAgICA8PCAiLCAiPDwgZ2V0PDI+KHZhbHVlKSA8
PCAiLCAiIDw8IGdldDwzPih2YWx1ZSkKKyAgICAgICAgIDw8ICIsICI8PCBnZXQ8ND4odmFsdWUp
IDw8ICIsICIgPDwgZ2V0PDU+KHZhbHVlKQorICAgICAgICAgPDwgIiwgIjw8IGdldDw2Pih2YWx1
ZSkgPDwgIiwgIiA8PCBnZXQ8Nz4odmFsdWUpCisgICAgICAgICA8PCAiLCAiPDwgZ2V0PDg+KHZh
bHVlKSA8PCAiLCAiIDw8IGdldDw5Pih2YWx1ZSkgPDwgIikiOworICByZXR1cm4gc3RyZWFtLnN0
cigpOworfQorCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQorCisvLyBWZXJpZmllcyB0
aGF0IGEgc2VxdWVuY2UgZ2VuZXJhdGVkIGJ5IHRoZSBnZW5lcmF0b3IgYW5kIGFjY2Vzc2VkCisv
LyB2aWEgdGhlIGl0ZXJhdG9yIG9iamVjdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBvbmUgdXNpbmcg
R29vZ2xlIFRlc3QKKy8vIGFzc2VydGlvbnMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90
IE4+Cit2b2lkIFZlcmlmeUdlbmVyYXRvcihjb25zdCBQYXJhbUdlbmVyYXRvcjxUPiYgZ2VuZXJh
dG9yLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCAoJmV4cGVjdGVkX3ZhbHVlcylbTl0p
IHsKKyAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VD46Oml0ZXJhdG9yIGl0ID0gZ2VuZXJhdG9y
LmJlZ2luKCk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgTjsgKytpKSB7CisgICAgQVNTRVJU
X0ZBTFNFKGl0ID09IGdlbmVyYXRvci5lbmQoKSkKKyAgICAgICAgPDwgIkF0IGVsZW1lbnQgIiA8
PCBpIDw8ICIgd2hlbiBhY2Nlc3NpbmcgdmlhIGFuIGl0ZXJhdG9yICIKKyAgICAgICAgPDwgImNy
ZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rvci5cbiI7CisgICAgLy8gV2UgY2Fubm90IHVz
ZSBFWFBFQ1RfRVEoKSBoZXJlIGFzIHRoZSB2YWx1ZXMgbWF5IGJlIHR1cGxlcywKKyAgICAvLyB3
aGljaCBkb24ndCBzdXBwb3J0IDw8LgorICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkX3ZhbHVlc1tp
XSA9PSAqaXQpCisgICAgICAgIDw8ICJ3aGVyZSBpIGlzICIgPDwgaQorICAgICAgICA8PCAiLCBl
eHBlY3RlZF92YWx1ZXNbaV0gaXMgIiA8PCBQcmludFZhbHVlKGV4cGVjdGVkX3ZhbHVlc1tpXSkK
KyAgICAgICAgPDwgIiwgKml0IGlzICIgPDwgUHJpbnRWYWx1ZSgqaXQpCisgICAgICAgIDw8ICIs
IGFuZCAnaXQnIGlzIGFuIGl0ZXJhdG9yIGNyZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rv
ci5cbiI7CisgICAgKytpdDsKKyAgfQorICBFWFBFQ1RfVFJVRShpdCA9PSBnZW5lcmF0b3IuZW5k
KCkpCisgICAgICAgIDw8ICJBdCB0aGUgcHJlc3VtZWQgZW5kIG9mIHNlcXVlbmNlIHdoZW4gYWNj
ZXNzaW5nIHZpYSBhbiBpdGVyYXRvciAiCisgICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhlIGNv
cHkgY29uc3RydWN0b3IuXG4iOworCisgIC8vIFRlc3QgdGhlIGl0ZXJhdG9yIGFzc2lnbm1lbnQu
IFRoZSBmb2xsb3dpbmcgbGluZXMgdmVyaWZ5IHRoYXQKKyAgLy8gdGhlIHNlcXVlbmNlIGFjY2Vz
c2VkIHZpYSBhbiBpdGVyYXRvciBpbml0aWFsaXplZCB2aWEgdGhlCisgIC8vIGFzc2lnbm1lbnQg
b3BlcmF0b3IgKGFzIG9wcG9zZWQgdG8gYSBjb3B5IGNvbnN0cnVjdG9yKSBtYXRjaGVzCisgIC8v
IGp1c3QgdGhlIHNhbWUuCisgIGl0ID0gZ2VuZXJhdG9yLmJlZ2luKCk7CisgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgTjsgKytpKSB7CisgICAgQVNTRVJUX0ZBTFNFKGl0ID09IGdlbmVyYXRvci5l
bmQoKSkKKyAgICAgICAgPDwgIkF0IGVsZW1lbnQgIiA8PCBpIDw8ICIgd2hlbiBhY2Nlc3Npbmcg
dmlhIGFuIGl0ZXJhdG9yICIKKyAgICAgICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUgYXNzaWdubWVu
dCBvcGVyYXRvci5cbiI7CisgICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWRfdmFsdWVzW2ldID09ICpp
dCkKKyAgICAgICAgPDwgIndoZXJlIGkgaXMgIiA8PCBpCisgICAgICAgIDw8ICIsIGV4cGVjdGVk
X3ZhbHVlc1tpXSBpcyAiIDw8IFByaW50VmFsdWUoZXhwZWN0ZWRfdmFsdWVzW2ldKQorICAgICAg
ICA8PCAiLCAqaXQgaXMgIiA8PCBQcmludFZhbHVlKCppdCkKKyAgICAgICAgPDwgIiwgYW5kICdp
dCcgaXMgYW4gaXRlcmF0b3IgY3JlYXRlZCB3aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9yLlxuIjsK
KyAgICArK2l0OworICB9CisgIEVYUEVDVF9UUlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSkKKyAg
ICAgICAgPDwgIkF0IHRoZSBwcmVzdW1lZCBlbmQgb2Ygc2VxdWVuY2Ugd2hlbiBhY2Nlc3Npbmcg
dmlhIGFuIGl0ZXJhdG9yICIKKyAgICAgICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUgYXNzaWdubWVu
dCBvcGVyYXRvci5cbiI7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBWZXJpZnlH
ZW5lcmF0b3JJc0VtcHR5KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ+JiBnZW5lcmF0b3IpIHsKKyAg
dHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VD46Oml0ZXJhdG9yIGl0ID0gZ2VuZXJhdG9yLmJlZ2lu
KCk7CisgIEVYUEVDVF9UUlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSk7CisKKyAgaXQgPSBnZW5l
cmF0b3IuYmVnaW4oKTsKKyAgRVhQRUNUX1RSVUUoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKTsKK30K
KworLy8gR2VuZXJhdG9yIHRlc3RzLiBUaGV5IHRlc3QgdGhhdCBlYWNoIG9mIHRoZSBwcm92aWRl
ZCBnZW5lcmF0b3IgZnVuY3Rpb25zCisvLyBnZW5lcmF0ZXMgYW4gZXhwZWN0ZWQgc2VxdWVuY2Ug
b2YgdmFsdWVzLiBUaGUgZ2VuZXJhbCB0ZXN0IHBhdHRlcm4KKy8vIGluc3RhbnRpYXRlcyBhIGdl
bmVyYXRvciB1c2luZyBvbmUgb2YgdGhlIGdlbmVyYXRvciBmdW5jdGlvbnMsCisvLyBjaGVja3Mg
dGhlIHNlcXVlbmNlIHByb2R1Y2VkIGJ5IHRoZSBnZW5lcmF0b3IgdXNpbmcgaXRzIGl0ZXJhdG9y
IEFQSSwKKy8vIGFuZCB0aGVuIHJlc2V0cyB0aGUgaXRlcmF0b3IgYmFjayB0byB0aGUgYmVnaW5u
aW5nIG9mIHRoZSBzZXF1ZW5jZQorLy8gYW5kIGNoZWNrcyB0aGUgc2VxdWVuY2UgYWdhaW4uCisK
Ky8vIFRlc3RzIHRoYXQgaXRlcmF0b3JzIHByb2R1Y2VkIGJ5IGdlbmVyYXRvciBmdW5jdGlvbnMg
Y29uZm9ybSB0byB0aGUKKy8vIEZvcndhcmRJdGVyYXRvciBjb25jZXB0LgorVEVTVChJdGVyYXRv
clRlc3QsIFBhcmFtSXRlcmF0b3JDb25mb3Jtc1RvRm9yd2FyZEl0ZXJhdG9yQ29uY2VwdCkgewor
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDEwKTsKKyAgUGFyYW1H
ZW5lcmF0b3I8aW50Pjo6aXRlcmF0b3IgaXQgPSBnZW4uYmVnaW4oKTsKKworICAvLyBWZXJpZmll
cyB0aGF0IGl0ZXJhdG9yIGluaXRpYWxpemF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkLgorICBQYXJh
bUdlbmVyYXRvcjxpbnQ+OjppdGVyYXRvciBpdDIgPSBpdDsKKyAgRVhQRUNUX1RSVUUoKml0ID09
ICppdDIpIDw8ICJJbml0aWFsaXplZCBpdGVyYXRvcnMgbXVzdCBwb2ludCB0byB0aGUgIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgImVsZW1lbnQgc2FtZSBhcyBpdHMgc291cmNlIHBv
aW50cyB0byI7CisKKyAgLy8gVmVyaWZpZXMgdGhhdCBpdGVyYXRvciBhc3NpZ25tZW50IHdvcmtz
IGFzIGV4cGVjdGVkLgorICArK2l0OworICBFWFBFQ1RfRkFMU0UoKml0ID09ICppdDIpOworICBp
dDIgPSBpdDsKKyAgRVhQRUNUX1RSVUUoKml0ID09ICppdDIpIDw8ICJBc3NpZ25lZCBpdGVyYXRv
cnMgbXVzdCBwb2ludCB0byB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgImVs
ZW1lbnQgc2FtZSBhcyBpdHMgc291cmNlIHBvaW50cyB0byI7CisKKyAgLy8gVmVyaWZpZXMgdGhh
dCBwcmVmaXggb3BlcmF0b3IrKygpIHJldHVybnMgKnRoaXMuCisgIEVYUEVDVF9FUSgmaXQsICYo
KytpdCkpIDw8ICJSZXN1bHQgb2YgdGhlIHByZWZpeCBvcGVyYXRvcisrIG11c3QgYmUgIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAicmVmZXIgdG8gdGhlIG9yaWdpbmFsIG9iamVjdCI7
CisKKyAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgcmVzdWx0IG9mIHRoZSBwb3N0Zml4IG9wZXJhdG9y
KysgcG9pbnRzIHRvIHRoZSB2YWx1ZQorICAvLyBwb2ludGVkIHRvIGJ5IHRoZSBvcmlnaW5hbCBp
dGVyYXRvci4KKyAgaW50IG9yaWdpbmFsX3ZhbHVlID0gKml0OyAgLy8gSGF2ZSB0byBjb21wdXRl
IGl0IG91dHNpZGUgb2YgbWFjcm8gY2FsbCB0byBiZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyB1bmFmZmVjdGVkIGJ5IHRoZSBwYXJhbWV0ZXIgZXZhbHVhdGlvbiBvcmRlci4KKyAg
RVhQRUNUX0VRKG9yaWdpbmFsX3ZhbHVlLCAqKGl0KyspKTsKKworICAvLyBWZXJpZmllcyB0aGF0
IHByZWZpeCBhbmQgcG9zdGZpeCBvcGVyYXRvcisrKCkgYWR2YW5jZSBhbiBpdGVyYXRvcgorICAv
LyBhbGwgdGhlIHNhbWUuCisgIGl0MiA9IGl0OworICArK2l0OworICArK2l0MjsKKyAgRVhQRUNU
X1RSVUUoKml0ID09ICppdDIpOworfQorCisvLyBUZXN0cyB0aGF0IFJhbmdlKCkgZ2VuZXJhdGVz
IHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZVdpdGhEZWZh
dWx0U3RlcCkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDMp
OworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MCwgMSwgMn07CisgIFZlcmlmeUdl
bmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIEVkZ2UgY2FzZS4gVGVzdHMg
dGhhdCBSYW5nZSgpIGdlbmVyYXRlcyB0aGUgc2luZ2xlIGVsZW1lbnQgc2VxdWVuY2UKKy8vIGFz
IGV4cGVjdGVkIHdoZW4gcHJvdmlkZWQgd2l0aCByYW5nZSBsaW1pdHMgdGhhdCBhcmUgZXF1YWwu
CitURVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VTaW5nbGVWYWx1ZSkgeworICBjb25zdCBQYXJhbUdl
bmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDEpOworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFs
dWVzW10gPSB7MH07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9
CisKKy8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBSYW5nZSgpIHdpdGggZ2VuZXJhdGVzIGVtcHR5
IHNlcXVlbmNlIHdoZW4KKy8vIHN1cHBsaWVkIHdpdGggYW4gZW1wdHkgcmFuZ2UuCitURVNUKFJh
bmdlVGVzdCwgSW50UmFuZ2VFbXB0eSkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdl
biA9IFJhbmdlKDAsIDApOworICBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7Cit9CisKKy8v
IFRlc3RzIHRoYXQgUmFuZ2UoKSB3aXRoIGN1c3RvbSBzdGVwIChncmVhdGVyIHRoZW4gb25lKSBn
ZW5lcmF0ZXMKKy8vIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoUmFuZ2VUZXN0LCBJbnRS
YW5nZVdpdGhDdXN0b21TdGVwKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0g
UmFuZ2UoMCwgOSwgMyk7CisgIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHswLCAzLCA2
fTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gVGVz
dHMgdGhhdCBSYW5nZSgpIHdpdGggY3VzdG9tIHN0ZXAgKGdyZWF0ZXIgdGhlbiBvbmUpIGdlbmVy
YXRlcworLy8gdGhlIGV4cGVjdGVkIHNlcXVlbmNlIHdoZW4gdGhlIGxhc3QgZWxlbWVudCBkb2Vz
IG5vdCBmYWxsIG9uIHRoZQorLy8gdXBwZXIgcmFuZ2UgbGltaXQuIFNlcXVlbmNlcyBnZW5lcmF0
ZWQgYnkgUmFuZ2UoKSBtdXN0IG5vdCBoYXZlCisvLyBlbGVtZW50cyBiZXlvbmQgdGhlIHJhbmdl
IGxpbWl0cy4KK1RFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZVdpdGhDdXN0b21TdGVwT3ZlclVwcGVy
Qm91bmQpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCA0LCAz
KTsKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezAsIDN9OworICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBWZXJpZmllcyB0aGF0IFJhbmdl
IHdvcmtzIHdpdGggdXNlci1kZWZpbmVkIHR5cGVzIHRoYXQgZGVmaW5lCisvLyBjb3B5IGNvbnN0
cnVjdG9yLCBvcGVyYXRvcj0oKSwgb3BlcmF0b3IrKCksIGFuZCBvcGVyYXRvcjwoKS4KK2NsYXNz
IERvZ0FkZGVyIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IERvZ0FkZGVyKGNvbnN0IGNoYXIqIGFf
dmFsdWUpIDogdmFsdWVfKGFfdmFsdWUpIHt9CisgIERvZ0FkZGVyKGNvbnN0IERvZ0FkZGVyJiBv
dGhlcikgOiB2YWx1ZV8ob3RoZXIudmFsdWVfLmNfc3RyKCkpIHt9CisKKyAgRG9nQWRkZXIgb3Bl
cmF0b3I9KGNvbnN0IERvZ0FkZGVyJiBvdGhlcikgeworICAgIGlmICh0aGlzICE9ICZvdGhlcikK
KyAgICAgIHZhbHVlXyA9IG90aGVyLnZhbHVlXzsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKyAg
RG9nQWRkZXIgb3BlcmF0b3IrKGNvbnN0IERvZ0FkZGVyJiBvdGhlcikgY29uc3QgeworICAgIE1l
c3NhZ2UgbXNnOworICAgIG1zZyA8PCB2YWx1ZV8uY19zdHIoKSA8PCBvdGhlci52YWx1ZV8uY19z
dHIoKTsKKyAgICByZXR1cm4gRG9nQWRkZXIobXNnLkdldFN0cmluZygpLmNfc3RyKCkpOworICB9
CisgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IERvZ0FkZGVyJiBvdGhlcikgY29uc3QgeworICAgIHJl
dHVybiB2YWx1ZV8gPCBvdGhlci52YWx1ZV87CisgIH0KKyAgY29uc3Qgc3RkOjpzdHJpbmcmIHZh
bHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CisKKyBwcml2YXRlOgorICBzdGQ6OnN0cmlu
ZyB2YWx1ZV87Cit9OworCitURVNUKFJhbmdlVGVzdCwgV29ya3NXaXRoQUN1c3RvbVR5cGUpIHsK
KyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8RG9nQWRkZXI+IGdlbiA9CisgICAgICBSYW5nZShEb2dB
ZGRlcigiY2F0IiksIERvZ0FkZGVyKCJjYXRkb2dkb2ciKSwgRG9nQWRkZXIoImRvZyIpKTsKKyAg
UGFyYW1HZW5lcmF0b3I8RG9nQWRkZXI+OjppdGVyYXRvciBpdCA9IGdlbi5iZWdpbigpOworCisg
IEFTU0VSVF9GQUxTRShpdCA9PSBnZW4uZW5kKCkpOworICBFWFBFQ1RfU1RSRVEoImNhdCIsIGl0
LT52YWx1ZSgpLmNfc3RyKCkpOworCisgIEFTU0VSVF9GQUxTRSgrK2l0ID09IGdlbi5lbmQoKSk7
CisgIEVYUEVDVF9TVFJFUSgiY2F0ZG9nIiwgaXQtPnZhbHVlKCkuY19zdHIoKSk7CisKKyAgRVhQ
RUNUX1RSVUUoKytpdCA9PSBnZW4uZW5kKCkpOworfQorCitjbGFzcyBJbnRXcmFwcGVyIHsKKyBw
dWJsaWM6CisgIGV4cGxpY2l0IEludFdyYXBwZXIoaW50IGFfdmFsdWUpIDogdmFsdWVfKGFfdmFs
dWUpIHt9CisgIEludFdyYXBwZXIoY29uc3QgSW50V3JhcHBlciYgb3RoZXIpIDogdmFsdWVfKG90
aGVyLnZhbHVlXykge30KKworICBJbnRXcmFwcGVyIG9wZXJhdG9yPShjb25zdCBJbnRXcmFwcGVy
JiBvdGhlcikgeworICAgIHZhbHVlXyA9IG90aGVyLnZhbHVlXzsKKyAgICByZXR1cm4gKnRoaXM7
CisgIH0KKyAgLy8gb3BlcmF0b3IrKCkgYWRkcyBhIGRpZmZlcmVudCB0eXBlLgorICBJbnRXcmFw
cGVyIG9wZXJhdG9yKyhpbnQgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIEludFdyYXBwZXIodmFsdWVf
ICsgb3RoZXIpOyB9CisgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEludFdyYXBwZXImIG90aGVyKSBj
b25zdCB7CisgICAgcmV0dXJuIHZhbHVlXyA8IG90aGVyLnZhbHVlXzsKKyAgfQorICBpbnQgdmFs
dWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KKworIHByaXZhdGU6CisgIGludCB2YWx1ZV87
Cit9OworCitURVNUKFJhbmdlVGVzdCwgV29ya3NXaXRoQUN1c3RvbVR5cGVXaXRoRGlmZmVyZW50
SW5jcmVtZW50VHlwZSkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxJbnRXcmFwcGVyPiBnZW4g
PSBSYW5nZShJbnRXcmFwcGVyKDApLCBJbnRXcmFwcGVyKDIpKTsKKyAgUGFyYW1HZW5lcmF0b3I8
SW50V3JhcHBlcj46Oml0ZXJhdG9yIGl0ID0gZ2VuLmJlZ2luKCk7CisKKyAgQVNTRVJUX0ZBTFNF
KGl0ID09IGdlbi5lbmQoKSk7CisgIEVYUEVDVF9FUSgwLCBpdC0+dmFsdWUoKSk7CisKKyAgQVNT
RVJUX0ZBTFNFKCsraXQgPT0gZ2VuLmVuZCgpKTsKKyAgRVhQRUNUX0VRKDEsIGl0LT52YWx1ZSgp
KTsKKworICBFWFBFQ1RfVFJVRSgrK2l0ID09IGdlbi5lbmQoKSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgVmFsdWVzSW4oKSB3aXRoIGFuIGFycmF5IHBhcmFtZXRlciBnZW5lcmF0ZXMKKy8vIHRoZSBl
eHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJbkFycmF5KSB7Cisg
IGludCBhcnJheVtdID0gezMsIDUsIDh9OworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdl
biA9IFZhbHVlc0luKGFycmF5KTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgYXJyYXkpOworfQor
CisvLyBUZXN0cyB0aGF0IFZhbHVlc0luKCkgd2l0aCBhIGNvbnN0IGFycmF5IHBhcmFtZXRlciBn
ZW5lcmF0ZXMKKy8vIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoVmFsdWVzSW5UZXN0LCBW
YWx1ZXNJbkNvbnN0QXJyYXkpIHsKKyAgY29uc3QgaW50IGFycmF5W10gPSB7MywgNSwgOH07Cisg
IGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4oYXJyYXkpOworICBWZXJp
ZnlHZW5lcmF0b3IoZ2VuLCBhcnJheSk7Cit9CisKKy8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBW
YWx1ZXNJbigpIHdpdGggYW4gYXJyYXkgcGFyYW1ldGVyIGNvbnRhaW5pbmcgYQorLy8gc2luZ2xl
IGVsZW1lbnQgZ2VuZXJhdGVzIHRoZSBzaW5nbGUgZWxlbWVudCBzZXF1ZW5jZS4KK1RFU1QoVmFs
dWVzSW5UZXN0LCBWYWx1ZXNJblNpbmdsZUVsZW1lbnRBcnJheSkgeworICBpbnQgYXJyYXlbXSA9
IHs0Mn07CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4oYXJyYXkp
OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBhcnJheSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgVmFs
dWVzSW4oKSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlIGZvciBhbiBTVEwKKy8vIGNv
bnRhaW5lciAodmVjdG9yKS4KK1RFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJblZlY3Rvcikgewor
ICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8aW50PiBDb250YWluZXJUeXBlOworICBDb250YWluZXJU
eXBlIHZhbHVlczsKKyAgdmFsdWVzLnB1c2hfYmFjaygzKTsKKyAgdmFsdWVzLnB1c2hfYmFjayg1
KTsKKyAgdmFsdWVzLnB1c2hfYmFjayg4KTsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBn
ZW4gPSBWYWx1ZXNJbih2YWx1ZXMpOworCisgIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9
IHszLCA1LCA4fTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30K
KworLy8gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVu
Y2UuCitURVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5JdGVyYXRvclJhbmdlKSB7CisgIHR5cGVk
ZWYgOjpzdGQ6OnZlY3RvcjxpbnQ+IENvbnRhaW5lclR5cGU7CisgIENvbnRhaW5lclR5cGUgdmFs
dWVzOworICB2YWx1ZXMucHVzaF9iYWNrKDMpOworICB2YWx1ZXMucHVzaF9iYWNrKDUpOworICB2
YWx1ZXMucHVzaF9iYWNrKDgpOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZh
bHVlc0luKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOworCisgIGNvbnN0IGludCBleHBl
Y3RlZF92YWx1ZXNbXSA9IHszLCA1LCA4fTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0
ZWRfdmFsdWVzKTsKK30KKworLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFZhbHVlc0luKCkgcHJv
dmlkZWQgd2l0aCBhbiBpdGVyYXRvciByYW5nZSBzcGVjaWZ5aW5nIGEKKy8vIHNpbmdsZSB2YWx1
ZSBnZW5lcmF0ZXMgYSBzaW5nbGUtZWxlbWVudCBzZXF1ZW5jZS4KK1RFU1QoVmFsdWVzSW5UZXN0
LCBWYWx1ZXNJblNpbmdsZUVsZW1lbnRJdGVyYXRvclJhbmdlKSB7CisgIHR5cGVkZWYgOjpzdGQ6
OnZlY3RvcjxpbnQ+IENvbnRhaW5lclR5cGU7CisgIENvbnRhaW5lclR5cGUgdmFsdWVzOworICB2
YWx1ZXMucHVzaF9iYWNrKDQyKTsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBW
YWx1ZXNJbih2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKKworICBjb25zdCBpbnQgZXhw
ZWN0ZWRfdmFsdWVzW10gPSB7NDJ9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92
YWx1ZXMpOworfQorCisvLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSBwcm92aWRl
ZCB3aXRoIGFuIGVtcHR5IGl0ZXJhdG9yIHJhbmdlCisvLyBnZW5lcmF0ZXMgYW4gZW1wdHkgc2Vx
dWVuY2UuCitURVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5FbXB0eUl0ZXJhdG9yUmFuZ2UpIHsK
KyAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGludD4gQ29udGFpbmVyVHlwZTsKKyAgQ29udGFpbmVy
VHlwZSB2YWx1ZXM7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4o
dmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7CisKKyAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0
eShnZW4pOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBWYWx1ZXMoKSBnZW5lcmF0ZXMgdGhlIGV4
cGVjdGVkIHNlcXVlbmNlLgorVEVTVChWYWx1ZXNUZXN0LCBWYWx1ZXNXb3JrcykgeworICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlcygzLCA1LCA4KTsKKworICBjb25zdCBp
bnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MywgNSwgOH07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4s
IGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgVmFsdWVzKCkgZ2VuZXJhdGVz
IHRoZSBleHBlY3RlZCBzZXF1ZW5jZXMgZnJvbSBlbGVtZW50cyBvZgorLy8gZGlmZmVyZW50IHR5
cGVzIGNvbnZlcnRpYmxlIHRvIFBhcmFtR2VuZXJhdG9yJ3MgcGFyYW1ldGVyIHR5cGUuCitURVNU
KFZhbHVlc1Rlc3QsIFZhbHVlc1dvcmtzRm9yVmFsdWVzT2ZDb21wYXRpYmxlVHlwZXMpIHsKKyAg
Y29uc3QgUGFyYW1HZW5lcmF0b3I8ZG91YmxlPiBnZW4gPSBWYWx1ZXMoMywgNS4wZiwgOC4wKTsK
KworICBjb25zdCBkb3VibGUgZXhwZWN0ZWRfdmFsdWVzW10gPSB7My4wLCA1LjAsIDguMH07Cisg
IFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKK1RFU1QoVmFsdWVz
VGVzdCwgVmFsdWVzV29ya3NGb3JNYXhMZW5ndGhMaXN0KSB7CisgIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPGludD4gZ2VuID0gVmFsdWVzKAorICAgICAgMTAsIDIwLCAzMCwgNDAsIDUwLCA2MCwgNzAs
IDgwLCA5MCwgMTAwLAorICAgICAgMTEwLCAxMjAsIDEzMCwgMTQwLCAxNTAsIDE2MCwgMTcwLCAx
ODAsIDE5MCwgMjAwLAorICAgICAgMjEwLCAyMjAsIDIzMCwgMjQwLCAyNTAsIDI2MCwgMjcwLCAy
ODAsIDI5MCwgMzAwLAorICAgICAgMzEwLCAzMjAsIDMzMCwgMzQwLCAzNTAsIDM2MCwgMzcwLCAz
ODAsIDM5MCwgNDAwLAorICAgICAgNDEwLCA0MjAsIDQzMCwgNDQwLCA0NTAsIDQ2MCwgNDcwLCA0
ODAsIDQ5MCwgNTAwKTsKKworICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7CisgICAg
ICAxMCwgMjAsIDMwLCA0MCwgNTAsIDYwLCA3MCwgODAsIDkwLCAxMDAsCisgICAgICAxMTAsIDEy
MCwgMTMwLCAxNDAsIDE1MCwgMTYwLCAxNzAsIDE4MCwgMTkwLCAyMDAsCisgICAgICAyMTAsIDIy
MCwgMjMwLCAyNDAsIDI1MCwgMjYwLCAyNzAsIDI4MCwgMjkwLCAzMDAsCisgICAgICAzMTAsIDMy
MCwgMzMwLCAzNDAsIDM1MCwgMzYwLCAzNzAsIDM4MCwgMzkwLCA0MDAsCisgICAgICA0MTAsIDQy
MCwgNDMwLCA0NDAsIDQ1MCwgNDYwLCA0NzAsIDQ4MCwgNDkwLCA1MDB9OworICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBFZGdlIGNhc2UgdGVzdC4gVGVz
dHMgdGhhdCBzaW5nbGUtcGFyYW1ldGVyIFZhbHVlcygpIGdlbmVyYXRlcyB0aGUgc2VxdWVuY2UK
Ky8vIHdpdGggdGhlIHNpbmdsZSB2YWx1ZS4KK1RFU1QoVmFsdWVzVGVzdCwgVmFsdWVzV2l0aFNp
bmdsZVBhcmFtZXRlcikgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVl
cyg0Mik7CisKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezQyfTsKKyAgVmVyaWZ5
R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKK30KKworLy8gVGVzdHMgdGhhdCBCb29s
KCkgZ2VuZXJhdGVzIHNlcXVlbmNlIChmYWxzZSwgdHJ1ZSkuCitURVNUKEJvb2xUZXN0LCBCb29s
V29ya3MpIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8Ym9vbD4gZ2VuID0gQm9vbCgpOworCisg
IGNvbnN0IGJvb2wgZXhwZWN0ZWRfdmFsdWVzW10gPSB7ZmFsc2UsIHRydWV9OworICBWZXJpZnlH
ZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisjIGlmIEdURVNUX0hBU19DT01C
SU5FCisKKy8vIFRlc3RzIHRoYXQgQ29tYmluZSgpIHdpdGggdHdvIHBhcmFtZXRlcnMgZ2VuZXJh
dGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRo
VHdvUGFyYW1ldGVycykgeworICBjb25zdCBjaGFyKiBmb28gPSAiZm9vIjsKKyAgY29uc3QgY2hh
ciogYmFyID0gImJhciI7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGNvbnN0IGNoYXIq
LCBpbnQ+ID4gZ2VuID0KKyAgICAgIENvbWJpbmUoVmFsdWVzKGZvbywgYmFyKSwgVmFsdWVzKDMs
IDQpKTsKKworICB0dXBsZTxjb25zdCBjaGFyKiwgaW50PiBleHBlY3RlZF92YWx1ZXNbXSA9IHsK
KyAgICBtYWtlX3R1cGxlKGZvbywgMyksIG1ha2VfdHVwbGUoZm9vLCA0KSwKKyAgICBtYWtlX3R1
cGxlKGJhciwgMyksIG1ha2VfdHVwbGUoYmFyLCA0KX07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4s
IGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQ29tYmluZSgpIHdpdGggdGhy
ZWUgcGFyYW1ldGVycyBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgorVEVTVChDb21i
aW5lVGVzdCwgQ29tYmluZVdpdGhUaHJlZVBhcmFtZXRlcnMpIHsKKyAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8dHVwbGU8aW50LCBpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcygwLCAxKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcygzLCA0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg1LCA2KSk7CisgIHR1cGxlPGludCwgaW50LCBp
bnQ+IGV4cGVjdGVkX3ZhbHVlc1tdID0geworICAgIG1ha2VfdHVwbGUoMCwgMywgNSksIG1ha2Vf
dHVwbGUoMCwgMywgNiksCisgICAgbWFrZV90dXBsZSgwLCA0LCA1KSwgbWFrZV90dXBsZSgwLCA0
LCA2KSwKKyAgICBtYWtlX3R1cGxlKDEsIDMsIDUpLCBtYWtlX3R1cGxlKDEsIDMsIDYpLAorICAg
IG1ha2VfdHVwbGUoMSwgNCwgNSksIG1ha2VfdHVwbGUoMSwgNCwgNil9OworICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBDb21i
aW5lKCkgd2l0aCB0aGUgZmlyc3QgcGFyYW1ldGVyIGdlbmVyYXRpbmcgYSBzaW5nbGUgdmFsdWUK
Ky8vIHNlcXVlbmNlIGdlbmVyYXRlcyBhIHNlcXVlbmNlIHdpdGggdGhlIG51bWJlciBvZiBlbGVt
ZW50cyBlcXVhbCB0byB0aGUKKy8vIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgc2VxdWVuY2Ug
Z2VuZXJhdGVkIGJ5IHRoZSBzZWNvbmQgcGFyYW1ldGVyLgorVEVTVChDb21iaW5lVGVzdCwgQ29t
YmluZVdpdGhGaXJzdFBhcmFtZXRlclNpbmdsZVZhbHVlKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPHR1cGxlPGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUoVmFsdWVzKDQyKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMCwg
MSkpOworCisgIHR1cGxlPGludCwgaW50PiBleHBlY3RlZF92YWx1ZXNbXSA9IHttYWtlX3R1cGxl
KDQyLCAwKSwgbWFrZV90dXBsZSg0MiwgMSl9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBl
Y3RlZF92YWx1ZXMpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSBDb21iaW5lKCkgd2l0aCB0aGUg
c2Vjb25kIHBhcmFtZXRlciBnZW5lcmF0aW5nIGEgc2luZ2xlIHZhbHVlCisvLyBzZXF1ZW5jZSBn
ZW5lcmF0ZXMgYSBzZXF1ZW5jZSB3aXRoIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZXF1YWwgdG8g
dGhlCisvLyBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHNlcXVlbmNlIGdlbmVyYXRlZCBieSB0
aGUgZmlyc3QgcGFyYW1ldGVyLgorVEVTVChDb21iaW5lVGVzdCwgQ29tYmluZVdpdGhTZWNvbmRQ
YXJhbWV0ZXJTaW5nbGVWYWx1ZSkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQs
IGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcygwLCAxKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNDIpKTsKKworICB0dXBs
ZTxpbnQsIGludD4gZXhwZWN0ZWRfdmFsdWVzW10gPSB7bWFrZV90dXBsZSgwLCA0MiksIG1ha2Vf
dHVwbGUoMSwgNDIpfTsKKyAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsK
K30KKworLy8gVGVzdHMgdGhhdCB3aGVuIHRoZSBmaXJzdCBwYXJhbWV0ZXIgcHJvZHVjZXMgYW4g
ZW1wdHkgc2VxdWVuY2UsCisvLyBDb21iaW5lKCkgcHJvZHVjZXMgYW4gZW1wdHkgc2VxdWVuY2Us
IHRvby4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoRmlyc3RQYXJhbWV0ZXJFbXB0eVJh
bmdlKSB7CisgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50PiA+IGdlbiA9IENv
bWJpbmUoUmFuZ2UoMCwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsdWVzKDAsIDEpKTsKKyAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0
eShnZW4pOworfQorCisvLyBUZXN0cyB0aGF0IHdoZW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIgcHJv
ZHVjZXMgYW4gZW1wdHkgc2VxdWVuY2UsCisvLyBDb21iaW5lKCkgcHJvZHVjZXMgYW4gZW1wdHkg
c2VxdWVuY2UsIHRvby4KK1RFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoU2Vjb25kUGFyYW1l
dGVyRW1wdHlSYW5nZSkgeworICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludD4g
PiBnZW4gPSBDb21iaW5lKFZhbHVlcygwLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5nZSgxLCAxKSk7CisgIFZlcmlmeUdlbmVy
YXRvcklzRW1wdHkoZ2VuKTsKK30KKworLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IGNvbWJpbmUg
d29ya3Mgd2l0aCB0aGUgbWF4aW11bSBudW1iZXIKKy8vIG9mIHBhcmFtZXRlcnMgc3VwcG9ydGVk
IGJ5IEdvb2dsZSBUZXN0IChjdXJyZW50bHkgMTApLgorVEVTVChDb21iaW5lVGVzdCwgQ29tYmlu
ZVdpdGhNYXhOdW1iZXJPZlBhcmFtZXRlcnMpIHsKKyAgY29uc3QgY2hhciogZm9vID0gImZvbyI7
CisgIGNvbnN0IGNoYXIqIGJhciA9ICJiYXIiOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBs
ZTxjb25zdCBjaGFyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcyhm
b28sIGJhciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsdWVzKDEpLCBWYWx1ZXMoMiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDMpLCBWYWx1ZXMoNCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVz
KDUpLCBWYWx1ZXMoNiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsdWVzKDcpLCBWYWx1ZXMoOCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDkpKTsKKworICB0dXBs
ZTxjb25zdCBjaGFyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dD4KKyAgICAgIGV4cGVjdGVkX3ZhbHVlc1tdID0ge21ha2VfdHVwbGUoZm9vLCAxLCAyLCAzLCA0
LCA1LCA2LCA3LCA4LCA5KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VfdHVwbGUo
YmFyLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5KX07CisgIFZlcmlmeUdlbmVyYXRvcihnZW4s
IGV4cGVjdGVkX3ZhbHVlcyk7Cit9CisKKyNpZiBHVEVTVF9MQU5HX0NYWDExCisKK2NsYXNzIE5v
bkRlZmF1bHRDb25zdHJ1Y3RBc3NpZ25TdHJpbmcgeworIHB1YmxpYzoKKyAgTm9uRGVmYXVsdENv
bnN0cnVjdEFzc2lnblN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgcykgOiBzdHJfKHMpIHt9CisK
KyAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cigpIGNvbnN0IHsgcmV0dXJuIHN0cl87IH0KKworIHBy
aXZhdGU6CisgIHN0ZDo6c3RyaW5nIHN0cl87CisKKyAgLy8gTm90IGRlZmF1bHQgY29uc3RydWN0
aWJsZQorICBOb25EZWZhdWx0Q29uc3RydWN0QXNzaWduU3RyaW5nKCk7CisgIC8vIE5vdCBhc3Np
Z25hYmxlCisgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IE5vbkRlZmF1bHRDb25zdHJ1Y3RBc3NpZ25T
dHJpbmcmKTsKK307CisKK1RFU1QoQ29tYmluZVRlc3QsIE5vbkRlZmF1bHRDb25zdHJ1Y3RBc3Np
Z24pIHsKKyAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBOb25EZWZhdWx0Q29uc3Ry
dWN0QXNzaWduU3RyaW5nPiA+IGdlbiA9CisgICAgICBDb21iaW5lKFZhbHVlcygwLCAxKSwgVmFs
dWVzKE5vbkRlZmF1bHRDb25zdHJ1Y3RBc3NpZ25TdHJpbmcoIkEiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTm9uRGVmYXVsdENvbnN0cnVjdEFzc2lnblN0cmluZygiQiIp
KSk7CisKKyAgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBOb25EZWZhdWx0Q29uc3RydWN0QXNz
aWduU3RyaW5nPiA+OjppdGVyYXRvciBpdCA9CisgICAgICBnZW4uYmVnaW4oKTsKKworICBFWFBF
Q1RfRVEoMCwgc3RkOjpnZXQ8MD4oKml0KSk7CisgIEVYUEVDVF9FUSgiQSIsIHN0ZDo6Z2V0PDE+
KCppdCkuc3RyKCkpOworICArK2l0OworCisgIEVYUEVDVF9FUSgwLCBzdGQ6OmdldDwwPigqaXQp
KTsKKyAgRVhQRUNUX0VRKCJCIiwgc3RkOjpnZXQ8MT4oKml0KS5zdHIoKSk7CisgICsraXQ7CisK
KyAgRVhQRUNUX0VRKDEsIHN0ZDo6Z2V0PDA+KCppdCkpOworICBFWFBFQ1RfRVEoIkEiLCBzdGQ6
OmdldDwxPigqaXQpLnN0cigpKTsKKyAgKytpdDsKKworICBFWFBFQ1RfRVEoMSwgc3RkOjpnZXQ8
MD4oKml0KSk7CisgIEVYUEVDVF9FUSgiQiIsIHN0ZDo6Z2V0PDE+KCppdCkuc3RyKCkpOworICAr
K2l0OworCisgIEVYUEVDVF9UUlVFKGl0ID09IGdlbi5lbmQoKSk7Cit9CisKKyNlbmRpZiAgIC8v
IEdURVNUX0xBTkdfQ1hYMTEKKyMgZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCisKKy8vIFRl
c3RzIHRoYXQgYW4gZ2VuZXJhdG9yIHByb2R1Y2VzIGNvcnJlY3Qgc2VxdWVuY2UgYWZ0ZXIgYmVp
bmcKKy8vIGFzc2lnbmVkIGZyb20gYW5vdGhlciBnZW5lcmF0b3IuCitURVNUKFBhcmFtR2VuZXJh
dG9yVGVzdCwgQXNzaWdubWVudFdvcmtzKSB7CisgIFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0g
VmFsdWVzKDEsIDIpOworICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbjIgPSBWYWx1ZXMo
MywgNCk7CisgIGdlbiA9IGdlbjI7CisKKyAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0g
ezMsIDR9OworICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOworfQorCisv
LyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgdGVzdHMgYXJlIGV4cGFuZGVkIGFuZCBydW4g
YXMgc3BlY2lmaWVkOgorLy8gb25lIHRlc3QgcGVyIGVsZW1lbnQgZnJvbSB0aGUgc2VxdWVuY2Ug
cHJvZHVjZWQgYnkgdGhlIGdlbmVyYXRvcgorLy8gc3BlY2lmaWVkIGluIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QLiBJdCBhbHNvIHZlcmlmaWVzIHRoYXQgdGhlIHRlc3QncworLy8gZml4dHVyZSBj
b25zdHJ1Y3RvciwgU2V0VXAoKSwgYW5kIFRlYXJEb3duKCkgaGF2ZSBydW4gYW5kIGhhdmUgYmVl
bgorLy8gc3VwcGxpZWQgd2l0aCB0aGUgY29ycmVjdCBwYXJhbWV0ZXJzLgorCisvLyBUaGUgdXNl
IG9mIGVudmlyb25tZW50IG9iamVjdCBhbGxvd3MgZGV0ZWN0aW9uIG9mIHRoZSBjYXNlIHdoZXJl
IG5vIHRlc3QKKy8vIGNhc2UgZnVuY3Rpb25hbGl0eSBpcyBydW4gYXQgYWxsLiBJbiB0aGlzIGNh
c2UgVGVzdENhc2VUZWFyRG93biB3aWxsIG5vdAorLy8gYmUgYWJsZSB0byBkZXRlY3QgbWlzc2lu
ZyB0ZXN0cywgbmF0dXJhbGx5LgordGVtcGxhdGUgPGludCBrRXhwZWN0ZWRDYWxscz4KK2NsYXNz
IFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQgOiBwdWJsaWMgOjp0ZXN0aW5nOjpFbnZpcm9ubWVu
dCB7CisgcHVibGljOgorICBzdGF0aWMgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudCogSW5zdGFu
Y2UoKSB7CisgICAgc3RhdGljIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQqIGluc3RhbmNlID0g
bmV3IFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQ7CisgICAgcmV0dXJuIGluc3RhbmNlOworICB9
CisKKyAgdm9pZCBGaXh0dXJlQ29uc3RydWN0b3JFeGVjdXRlZCgpIHsgZml4dHVyZV9jb25zdHJ1
Y3Rvcl9jb3VudF8rKzsgfQorICB2b2lkIFNldFVwRXhlY3V0ZWQoKSB7IHNldF91cF9jb3VudF8r
KzsgfQorICB2b2lkIFRlYXJEb3duRXhlY3V0ZWQoKSB7IHRlYXJfZG93bl9jb3VudF8rKzsgfQor
ICB2b2lkIFRlc3RCb2R5RXhlY3V0ZWQoKSB7IHRlc3RfYm9keV9jb3VudF8rKzsgfQorCisgIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpIHsKKyAgICAvLyBJZiBhbGwgTXVsdGlwbGVUZXN0R2VuZXJh
dGlvblRlc3QgdGVzdHMgaGF2ZSBiZWVuIGRlLXNlbGVjdGVkCisgICAgLy8gYnkgdGhlIGZpbHRl
ciBmbGFnLCB0aGUgZm9sbG93aW5nIGNoZWNrcyBtYWtlIG5vIHNlbnNlLgorICAgIGJvb2wgcGVy
Zm9ybV9jaGVjayA9IGZhbHNlOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrRXhwZWN0ZWRD
YWxsczsgKytpKSB7CisgICAgICBNZXNzYWdlIG1zZzsKKyAgICAgIG1zZyA8PCAiVGVzdHNFeHBh
bmRlZEFuZFJ1bi8iIDw8IGk7CisgICAgICBpZiAoVW5pdFRlc3RPcHRpb25zOjpGaWx0ZXJNYXRj
aGVzVGVzdCgKKyAgICAgICAgICAgICAiVGVzdEV4cGFuc2lvbk1vZHVsZS9NdWx0aXBsZVRlc3RH
ZW5lcmF0aW9uVGVzdCIsCisgICAgICAgICAgICAgIG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKSkg
eworICAgICAgICBwZXJmb3JtX2NoZWNrID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9CisgICAgaWYg
KHBlcmZvcm1fY2hlY2spIHsKKyAgICAgIEVYUEVDVF9FUShrRXhwZWN0ZWRDYWxscywgZml4dHVy
ZV9jb25zdHJ1Y3Rvcl9jb3VudF8pCisgICAgICAgICAgPDwgIkZpeHR1cmUgY29uc3RydWN0b3Ig
b2YgUGFyYW1UZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlICIKKyAgICAgICAgICA8PCAiaGFz
IG5vdCBiZWVuIHJ1biBhcyBleHBlY3RlZC4iOworICAgICAgRVhQRUNUX0VRKGtFeHBlY3RlZENh
bGxzLCBzZXRfdXBfY291bnRfKQorICAgICAgICAgIDw8ICJGaXh0dXJlIFNldFVwIG1ldGhvZCBv
ZiBQYXJhbVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgorICAgICAgICAgIDw8ICJoYXMg
bm90IGJlZW4gcnVuIGFzIGV4cGVjdGVkLiI7CisgICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2Fs
bHMsIHRlYXJfZG93bl9jb3VudF8pCisgICAgICAgICAgPDwgIkZpeHR1cmUgVGVhckRvd24gbWV0
aG9kIG9mIFBhcmFtVGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZSAiCisgICAgICAgICAgPDwg
ImhhcyBub3QgYmVlbiBydW4gYXMgZXhwZWN0ZWQuIjsKKyAgICAgIEVYUEVDVF9FUShrRXhwZWN0
ZWRDYWxscywgdGVzdF9ib2R5X2NvdW50XykKKyAgICAgICAgICA8PCAiVGVzdCBpbiBQYXJhbVRl
c3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgorICAgICAgICAgIDw8ICJoYXMgbm90IGJlZW4g
cnVuIGFzIGV4cGVjdGVkLiI7CisgICAgfQorICB9CisKKyBwcml2YXRlOgorICBUZXN0R2VuZXJh
dGlvbkVudmlyb25tZW50KCkgOiBmaXh0dXJlX2NvbnN0cnVjdG9yX2NvdW50XygwKSwgc2V0X3Vw
X2NvdW50XygwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVhcl9kb3duX2Nv
dW50XygwKSwgdGVzdF9ib2R5X2NvdW50XygwKSB7fQorCisgIGludCBmaXh0dXJlX2NvbnN0cnVj
dG9yX2NvdW50XzsKKyAgaW50IHNldF91cF9jb3VudF87CisgIGludCB0ZWFyX2Rvd25fY291bnRf
OworICBpbnQgdGVzdF9ib2R5X2NvdW50XzsKKworICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQpOworfTsKKworY29uc3QgaW50IHRlc3Rf
Z2VuZXJhdGlvbl9wYXJhbXNbXSA9IHszNiwgNDIsIDcyfTsKKworY2xhc3MgVGVzdEdlbmVyYXRp
b25UZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7CisgcHVibGljOgorICBlbnVtIHsK
KyAgICBQQVJBTUVURVJfQ09VTlQgPQorICAgICAgICBzaXplb2YodGVzdF9nZW5lcmF0aW9uX3Bh
cmFtcykvc2l6ZW9mKHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXNbMF0pCisgIH07CisKKyAgdHlwZWRl
ZiBUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50PFBBUkFNRVRFUl9DT1VOVD4gRW52aXJvbm1lbnQ7
CisKKyAgVGVzdEdlbmVyYXRpb25UZXN0KCkgeworICAgIEVudmlyb25tZW50OjpJbnN0YW5jZSgp
LT5GaXh0dXJlQ29uc3RydWN0b3JFeGVjdXRlZCgpOworICAgIGN1cnJlbnRfcGFyYW1ldGVyXyA9
IEdldFBhcmFtKCk7CisgIH0KKyAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgIEVudmlyb25t
ZW50OjpJbnN0YW5jZSgpLT5TZXRVcEV4ZWN1dGVkKCk7CisgICAgRVhQRUNUX0VRKGN1cnJlbnRf
cGFyYW1ldGVyXywgR2V0UGFyYW0oKSk7CisgIH0KKyAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkg
eworICAgIEVudmlyb25tZW50OjpJbnN0YW5jZSgpLT5UZWFyRG93bkV4ZWN1dGVkKCk7CisgICAg
RVhQRUNUX0VRKGN1cnJlbnRfcGFyYW1ldGVyXywgR2V0UGFyYW0oKSk7CisgIH0KKworICBzdGF0
aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgeworICAgIGJvb2wgYWxsX3Rlc3RzX2luX3Rlc3RfY2Fz
ZV9zZWxlY3RlZCA9IHRydWU7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IFBBUkFNRVRFUl9D
T1VOVDsgKytpKSB7CisgICAgICBNZXNzYWdlIHRlc3RfbmFtZTsKKyAgICAgIHRlc3RfbmFtZSA8
PCAiVGVzdHNFeHBhbmRlZEFuZFJ1bi8iIDw8IGk7CisgICAgICBpZiAoICFVbml0VGVzdE9wdGlv
bnM6OkZpbHRlck1hdGNoZXNUZXN0KAorICAgICAgICAgICAgICAgICJUZXN0RXhwYW5zaW9uTW9k
dWxlL011bHRpcGxlVGVzdEdlbmVyYXRpb25UZXN0IiwKKyAgICAgICAgICAgICAgICB0ZXN0X25h
bWUuR2V0U3RyaW5nKCkpKSB7CisgICAgICAgIGFsbF90ZXN0c19pbl90ZXN0X2Nhc2Vfc2VsZWN0
ZWQgPSBmYWxzZTsKKyAgICAgIH0KKyAgICB9CisgICAgRVhQRUNUX1RSVUUoYWxsX3Rlc3RzX2lu
X3Rlc3RfY2FzZV9zZWxlY3RlZCkKKyAgICAgICAgPDwgIldoZW4gcnVubmluZyB0aGUgVGVzdEdl
bmVyYXRpb25UZXN0IHRlc3QgY2FzZSBhbGwgb2YgaXRzIHRlc3RzXG4iCisgICAgICAgIDw8ICJt
dXN0IGJlIHNlbGVjdGVkIGJ5IHRoZSBmaWx0ZXIgZmxhZyBmb3IgdGhlIHRlc3QgY2FzZSB0byBw
YXNzLlxuIgorICAgICAgICA8PCAiSWYgbm90IGFsbCBvZiB0aGVtIGFyZSBlbmFibGVkLCB3ZSBj
YW4ndCByZWxpYWJseSBjb25jbHVkZVxuIgorICAgICAgICA8PCAidGhhdCB0aGUgY29ycmVjdCBu
dW1iZXIgb2YgdGVzdHMgaGF2ZSBiZWVuIGdlbmVyYXRlZC4iOworCisgICAgY29sbGVjdGVkX3Bh
cmFtZXRlcnNfLmNsZWFyKCk7CisgIH0KKworICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNl
KCkgeworICAgIHZlY3RvcjxpbnQ+IGV4cGVjdGVkX3ZhbHVlcyh0ZXN0X2dlbmVyYXRpb25fcGFy
YW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2dlbmVyYXRpb25fcGFy
YW1zICsgUEFSQU1FVEVSX0NPVU5UKTsKKyAgICAvLyBUZXN0IGV4ZWN1dGlvbiBvcmRlciBpcyBu
b3QgZ3VhcmFudGVlZCBieSBHb29nbGUgVGVzdCwKKyAgICAvLyBzbyB0aGUgb3JkZXIgb2YgdmFs
dWVzIGluIGNvbGxlY3RlZF9wYXJhbWV0ZXJzXyBjYW4gYmUKKyAgICAvLyBkaWZmZXJlbnQgYW5k
IHdlIGhhdmUgdG8gc29ydCB0byBjb21wYXJlLgorICAgIHNvcnQoZXhwZWN0ZWRfdmFsdWVzLmJl
Z2luKCksIGV4cGVjdGVkX3ZhbHVlcy5lbmQoKSk7CisgICAgc29ydChjb2xsZWN0ZWRfcGFyYW1l
dGVyc18uYmVnaW4oKSwgY29sbGVjdGVkX3BhcmFtZXRlcnNfLmVuZCgpKTsKKworICAgIEVYUEVD
VF9UUlVFKGNvbGxlY3RlZF9wYXJhbWV0ZXJzXyA9PSBleHBlY3RlZF92YWx1ZXMpOworICB9CisK
KyBwcm90ZWN0ZWQ6CisgIGludCBjdXJyZW50X3BhcmFtZXRlcl87CisgIHN0YXRpYyB2ZWN0b3I8
aW50PiBjb2xsZWN0ZWRfcGFyYW1ldGVyc187CisKKyBwcml2YXRlOgorICBHVEVTVF9ESVNBTExP
V19DT1BZX0FORF9BU1NJR05fKFRlc3RHZW5lcmF0aW9uVGVzdCk7Cit9OwordmVjdG9yPGludD4g
VGVzdEdlbmVyYXRpb25UZXN0Ojpjb2xsZWN0ZWRfcGFyYW1ldGVyc187CisKK1RFU1RfUChUZXN0
R2VuZXJhdGlvblRlc3QsIFRlc3RzRXhwYW5kZWRBbmRSdW4pIHsKKyAgRW52aXJvbm1lbnQ6Oklu
c3RhbmNlKCktPlRlc3RCb2R5RXhlY3V0ZWQoKTsKKyAgRVhQRUNUX0VRKGN1cnJlbnRfcGFyYW1l
dGVyXywgR2V0UGFyYW0oKSk7CisgIGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5wdXNoX2JhY2soR2V0
UGFyYW0oKSk7Cit9CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChUZXN0RXhwYW5zaW9uTW9kdWxl
LCBUZXN0R2VuZXJhdGlvblRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXNJbih0
ZXN0X2dlbmVyYXRpb25fcGFyYW1zKSk7CisKKy8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRo
ZSBlbGVtZW50IHNlcXVlbmNlICh0aGlyZCBwYXJhbWV0ZXIgb2YKKy8vIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKSBpcyBldmFsdWF0ZWQgaW4gSW5pdEdvb2dsZVRlc3QoKSBhbmQgbmVpdGhlciBh
dAorLy8gdGhlIGNhbGwgc2l0ZSBvZiBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBub3IgaW4gUlVO
X0FMTF9URVNUUygpLiAgRm9yCisvLyB0aGF0LCB3ZSBkZWNsYXJlIHBhcmFtX3ZhbHVlXyB0byBi
ZSBhIHN0YXRpYyBtZW1iZXIgb2YKKy8vIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0IGFuZCBpbml0
aWFsaXplIGl0IHRvIDAuICBXZSBzZXQgaXQgdG8gMSBpbgorLy8gbWFpbigpLCBqdXN0IGJlZm9y
ZSBpbnZvY2F0aW9uIG9mIEluaXRHb29nbGVUZXN0KCkuICBBZnRlciBjYWxsaW5nCisvLyBJbml0
R29vZ2xlVGVzdCgpLCB3ZSBzZXQgdGhlIHZhbHVlIHRvIDIuICBJZiB0aGUgc2VxdWVuY2UgaXMg
ZXZhbHVhdGVkCisvLyBiZWZvcmUgb3IgYWZ0ZXIgSW5pdEdvb2dsZVRlc3QsIElOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QIHdpbGwgY3JlYXRlIGEKKy8vIHRlc3Qgd2l0aCBwYXJhbWV0ZXIgb3RoZXIg
dGhhbiAxLCBhbmQgdGhlIHRlc3QgYm9keSB3aWxsIGZhaWwgdGhlCisvLyBhc3NlcnRpb24uCitj
bGFzcyBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4g
eworIHB1YmxpYzoKKyAgc3RhdGljIGludCBwYXJhbV92YWx1ZSgpIHsgcmV0dXJuIHBhcmFtX3Zh
bHVlXzsgfQorICBzdGF0aWMgdm9pZCBzZXRfcGFyYW1fdmFsdWUoaW50IHBhcmFtX3ZhbHVlKSB7
IHBhcmFtX3ZhbHVlXyA9IHBhcmFtX3ZhbHVlOyB9CisKKyBwcml2YXRlOgorICBzdGF0aWMgaW50
IHBhcmFtX3ZhbHVlXzsKK307CitpbnQgR2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnBhcmFtX3Zh
bHVlXyA9IDA7CisKK1RFU1RfUChHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCwgR2VuZXJhdG9yc0V2
YWx1YXRlZEluTWFpbikgeworICBFWFBFQ1RfRVEoMSwgR2V0UGFyYW0oKSk7Cit9CitJTlNUQU5U
SUFURV9URVNUX0NBU0VfUChHZW5FdmFsTW9kdWxlLAorICAgICAgICAgICAgICAgICAgICAgICAg
R2VuZXJhdG9yRXZhbHVhdGlvblRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMo
R2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnBhcmFtX3ZhbHVlKCkpKTsKKworLy8gVGVzdHMgdGhh
dCBnZW5lcmF0b3JzIGRlZmluZWQgaW4gYSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdCBhcmUK
Ky8vIGZ1bmN0aW9uYWwuIEdlbmVyYXRvciBleHRlcm5fZ2VuIGlzIGRlZmluZWQgaW4gZ3Rlc3Qt
cGFyYW0tdGVzdF90ZXN0Mi5jYy4KK2V4dGVybiBQYXJhbUdlbmVyYXRvcjxpbnQ+IGV4dGVybl9n
ZW47CitjbGFzcyBFeHRlcm5hbEdlbmVyYXRvclRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxp
bnQ+IHt9OworVEVTVF9QKEV4dGVybmFsR2VuZXJhdG9yVGVzdCwgRXh0ZXJuYWxHZW5lcmF0b3Ip
IHsKKyAgLy8gU2VxdWVuY2UgcHJvZHVjZWQgYnkgZXh0ZXJuX2dlbiBjb250YWlucyBvbmx5IGEg
c2luZ2xlIHZhbHVlCisgIC8vIHdoaWNoIHdlIHZlcmlmeSBoZXJlLgorICBFWFBFQ1RfRVEoR2V0
UGFyYW0oKSwgMzMpOworfQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoRXh0ZXJuYWxHZW5lcmF0
b3JNb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICBFeHRlcm5hbEdlbmVyYXRvclRlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5fZ2VuKTsKKworLy8gVGVzdHMgdGhhdCBh
IHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBkZWZpbmVkIGluIG9uZSB0cmFuc2xhdGlv
bgorLy8gdW5pdCBhbmQgaW5zdGFudGlhdGVkIGluIGFub3RoZXIuIFRoaXMgdGVzdCB3aWxsIGJl
IGluc3RhbnRpYXRlZCBpbgorLy8gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0Mi5jYy4gRXh0ZXJuYWxJ
bnN0YW50aWF0aW9uVGVzdCBmaXh0dXJlIGNsYXNzIGlzCisvLyBkZWZpbmVkIGluIGd0ZXN0LXBh
cmFtLXRlc3RfdGVzdC5oLgorVEVTVF9QKEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3QsIElzTXVs
dGlwbGVPZjMzKSB7CisgIEVYUEVDVF9FUSgwLCBHZXRQYXJhbSgpICUgMzMpOworfQorCisvLyBU
ZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGluc3RhbnRpYXRlZCB3
aXRoIG11bHRpcGxlCisvLyBnZW5lcmF0b3JzLgorY2xhc3MgTXVsdGlwbGVJbnN0YW50aWF0aW9u
VGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4ge307CitURVNUX1AoTXVsdGlwbGVJbnN0
YW50aWF0aW9uVGVzdCwgQWxsb3dzTXVsdGlwbGVJbnN0YW5jZXMpIHsKK30KK0lOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKFNlcXVlbmNlMSwgTXVsdGlwbGVJbnN0YW50aWF0aW9uVGVzdCwgVmFsdWVz
KDEsIDIpKTsKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMiwgTXVsdGlwbGVJbnN0
YW50aWF0aW9uVGVzdCwgUmFuZ2UoMywgNSkpOworCisvLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVy
aXplZCB0ZXN0IGNhc2UgY2FuIGJlIGluc3RhbnRpYXRlZAorLy8gaW4gbXVsdGlwbGUgdHJhbnNs
YXRpb24gdW5pdHMuIFRoaXMgdGVzdCB3aWxsIGJlIGluc3RhbnRpYXRlZAorLy8gaGVyZSBhbmQg
aW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0Mi5jYy4KKy8vIEluc3RhbnRpYXRpb25Jbk11bHRpcGxl
VHJhbnNsYXRpb25Vbml0c1Rlc3QgZml4dHVyZSBjbGFzcworLy8gaXMgZGVmaW5lZCBpbiBndGVz
dC1wYXJhbS10ZXN0X3Rlc3QuaC4KK1RFU1RfUChJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5z
bGFpb25Vbml0c1Rlc3QsIElzTXVsdGlwbGVPZjQyKSB7CisgIEVYUEVDVF9FUSgwLCBHZXRQYXJh
bSgpICUgNDIpOworfQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2UxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNU
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDQyLCA0MioyKSk7CisKKy8vIFRl
c3RzIHRoYXQgZWFjaCBpdGVyYXRpb24gb2YgcGFyYW1ldGVyaXplZCB0ZXN0IHJ1bnMgaW4gYSBz
ZXBhcmF0ZSB0ZXN0CisvLyBvYmplY3QuCitjbGFzcyBTZXBhcmF0ZUluc3RhbmNlVGVzdCA6IHB1
YmxpYyBUZXN0V2l0aFBhcmFtPGludD4geworIHB1YmxpYzoKKyAgU2VwYXJhdGVJbnN0YW5jZVRl
c3QoKSA6IGNvdW50XygwKSB7fQorCisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7
CisgICAgRVhQRUNUX0dFKGdsb2JhbF9jb3VudF8sIDIpCisgICAgICAgIDw8ICJJZiBzb21lIChi
dXQgbm90IGFsbCkgU2VwYXJhdGVJbnN0YW5jZVRlc3QgdGVzdHMgaGF2ZSBiZWVuICIKKyAgICAg
ICAgPDwgImZpbHRlcmVkIG91dCB0aGlzIHRlc3Qgd2lsbCBmYWlsLiBNYWtlIHN1cmUgdGhhdCBh
bGwgIgorICAgICAgICA8PCAiR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QgYXJlIHNlbGVjdGVkIG9y
IGRlLXNlbGVjdGVkIHRvZ2V0aGVyICIKKyAgICAgICAgPDwgImJ5IHRoZSB0ZXN0IGZpbHRlci4i
OworICB9CisKKyBwcm90ZWN0ZWQ6CisgIGludCBjb3VudF87CisgIHN0YXRpYyBpbnQgZ2xvYmFs
X2NvdW50XzsKK307CitpbnQgU2VwYXJhdGVJbnN0YW5jZVRlc3Q6Omdsb2JhbF9jb3VudF8gPSAw
OworCitURVNUX1AoU2VwYXJhdGVJbnN0YW5jZVRlc3QsIFRlc3RzUnVuSW5TZXBhcmF0ZUluc3Rh
bmNlcykgeworICBFWFBFQ1RfRVEoMCwgY291bnRfKyspOworICBnbG9iYWxfY291bnRfKys7Cit9
CitJTlNUQU5USUFURV9URVNUX0NBU0VfUChGb3VyRWxlbVNlcXVlbmNlLCBTZXBhcmF0ZUluc3Rh
bmNlVGVzdCwgUmFuZ2UoMSwgNCkpOworCisvLyBUZXN0cyB0aGF0IGFsbCBpbnN0YW50aWF0aW9u
cyBvZiBhIHRlc3QgaGF2ZSBuYW1lZCBhcHByb3ByaWF0ZWx5LiBUZXN0CisvLyBkZWZpbmVkIHdp
dGggVEVTVF9QKFRlc3RDYXNlTmFtZSwgVGVzdE5hbWUpIGFuZCBpbnN0YW50aWF0ZWQgd2l0aAor
Ly8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2VOYW1lLCBUZXN0Q2FzZU5hbWUsIGdl
bmVyYXRvcikgbXVzdCBiZSBuYW1lZAorLy8gU2VxdWVuY2VOYW1lL1Rlc3RDYXNlTmFtZS5UZXN0
TmFtZS9pLCB3aGVyZSBpIGlzIHRoZSAwLWJhc2VkIGluZGV4IG9mIHRoZQorLy8gc2VxdWVuY2Ug
ZWxlbWVudCB1c2VkIHRvIGluc3RhbnRpYXRlIHRoZSB0ZXN0LgorY2xhc3MgTmFtaW5nVGVzdCA6
IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4ge307CisKK1RFU1RfUChOYW1pbmdUZXN0LCBUZXN0
c1JlcG9ydENvcnJlY3ROYW1lc0FuZFBhcmFtZXRlcnMpIHsKKyAgY29uc3QgOjp0ZXN0aW5nOjpU
ZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0
SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKworICBFWFBFQ1RfU1RSRVEoIlplcm9U
b0ZpdmVTZXF1ZW5jZS9OYW1pbmdUZXN0IiwgdGVzdF9pbmZvLT50ZXN0X2Nhc2VfbmFtZSgpKTsK
KworICBNZXNzYWdlIGluZGV4X3N0cmVhbTsKKyAgaW5kZXhfc3RyZWFtIDw8ICJUZXN0c1JlcG9y
dENvcnJlY3ROYW1lc0FuZFBhcmFtZXRlcnMvIiA8PCBHZXRQYXJhbSgpOworICBFWFBFQ1RfU1RS
RVEoaW5kZXhfc3RyZWFtLkdldFN0cmluZygpLmNfc3RyKCksIHRlc3RfaW5mby0+bmFtZSgpKTsK
KworICBFWFBFQ1RfRVEoOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKEdldFBhcmFtKCkpLCB0ZXN0
X2luZm8tPnZhbHVlX3BhcmFtKCkpOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChaZXJv
VG9GaXZlU2VxdWVuY2UsIE5hbWluZ1Rlc3QsIFJhbmdlKDAsIDUpKTsKKworLy8gVGVzdHMgdGhh
dCBtYWNyb3MgaW4gdGVzdCBuYW1lcyBhcmUgZXhwYW5kZWQgY29ycmVjdGx5LgorY2xhc3MgTWFj
cm9OYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7fTsKKworI2RlZmluZSBQ
UkVGSVhfV0lUSF9GT08odGVzdF9uYW1lKSBGb28jI3Rlc3RfbmFtZQorI2RlZmluZSBQUkVGSVhf
V0lUSF9NQUNSTyh0ZXN0X25hbWUpIE1hY3JvIyN0ZXN0X25hbWUKKworVEVTVF9QKFBSRUZJWF9X
SVRIX01BQ1JPKE5hbWluZ1Rlc3QpLCBQUkVGSVhfV0lUSF9GT08oU29tZVRlc3ROYW1lKSkgewor
ICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQorICAgICA6OnRl
c3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOworCisg
IEVYUEVDVF9TVFJFUSgiRm9ydHlUd28vTWFjcm9OYW1pbmdUZXN0IiwgdGVzdF9pbmZvLT50ZXN0
X2Nhc2VfbmFtZSgpKTsKKyAgRVhQRUNUX1NUUkVRKCJGb29Tb21lVGVzdE5hbWUiLCB0ZXN0X2lu
Zm8tPm5hbWUoKSk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEZvcnR5VHdvLCBNYWNy
b05hbWluZ1Rlc3QsIFZhbHVlcyg0MikpOworCisvLyBUZXN0cyB0aGUgc2FtZSB0aGluZyBmb3Ig
bm9uLXBhcmFtZXRyaXplZCB0ZXN0cy4KK2NsYXNzIE1hY3JvTmFtaW5nVGVzdE5vblBhcmFtZXRy
aXplZCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307CisKK1RFU1RfRihQUkVGSVhfV0lUSF9N
QUNSTyhOYW1pbmdUZXN0Tm9uUGFyYW1ldHJpemVkKSwKKyAgICAgICBQUkVGSVhfV0lUSF9GT08o
U29tZVRlc3ROYW1lKSkgeworICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0
X2luZm8gPQorICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50
X3Rlc3RfaW5mbygpOworCisgIEVYUEVDVF9TVFJFUSgiTWFjcm9OYW1pbmdUZXN0Tm9uUGFyYW1l
dHJpemVkIiwgdGVzdF9pbmZvLT50ZXN0X2Nhc2VfbmFtZSgpKTsKKyAgRVhQRUNUX1NUUkVRKCJG
b29Tb21lVGVzdE5hbWUiLCB0ZXN0X2luZm8tPm5hbWUoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQg
dXNlciBzdXBwbGllZCBjdXN0b20gcGFyYW1ldGVyIG5hbWVzIGFyZSB3b3JraW5nIGNvcnJlY3Rs
eS4KKy8vIFJ1bnMgdGhlIHRlc3Qgd2l0aCBhIGJ1aWx0aW4gaGVscGVyIG1ldGhvZCB3aGljaCB1
c2VzIFByaW50VG9TdHJpbmcsCisvLyBhcyB3ZWxsIGFzIGEgY3VzdG9tIGZ1bmN0aW9uIGFuZCBj
dXN0b20gZnVuY3RvciB0byBlbnN1cmUgYWxsIHBvc3NpYmxlCisvLyB1c2VzIHdvcmsgY29ycmVj
dGx5LgorY2xhc3MgQ3VzdG9tRnVuY3Rvck5hbWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJh
bTxzdGQ6OnN0cmluZz4ge307CitURVNUX1AoQ3VzdG9tRnVuY3Rvck5hbWluZ1Rlc3QsIEN1c3Rv
bVRlc3ROYW1lcykge30KKworc3RydWN0IEN1c3RvbVBhcmFtTmFtZUZ1bmN0b3IgeworICBzdGQ6
OnN0cmluZyBvcGVyYXRvcigpKGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzxzdGQ6OnN0
cmluZz4mIGluZikgeworICAgIHJldHVybiBpbmYucGFyYW07CisgIH0KK307CisKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKEN1c3RvbVBhcmFtTmFtZUZ1bmN0b3IsCisgICAgICAgICAgICAgICAg
ICAgICAgICBDdXN0b21GdW5jdG9yTmFtaW5nVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IFZhbHVlcyhzdGQ6OnN0cmluZygiRnVuY3Rvck5hbWUiKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICBDdXN0b21QYXJhbU5hbWVGdW5jdG9yKCkpOworCitJTlNUQU5USUFURV9URVNUX0NBU0Vf
UChBbGxBbGxvd2VkQ2hhcmFjdGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZ1
bmN0b3JOYW1pbmdUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKCJhYmNkZWZn
aGlqa2xtbm9wcXJzdHV2d3h5eiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFC
Q0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiMDEyMzQ1Njc4OTBfIiksCisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21QYXJhbU5h
bWVGdW5jdG9yKCkpOworCitpbmxpbmUgc3RkOjpzdHJpbmcgQ3VzdG9tUGFyYW1OYW1lRnVuY3Rp
b24oCisgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHN0ZDo6c3RyaW5nPiYgaW5m
KSB7CisgIHJldHVybiBpbmYucGFyYW07Cit9CisKK2NsYXNzIEN1c3RvbUZ1bmN0aW9uTmFtaW5n
VGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPHN0ZDo6c3RyaW5nPiB7fTsKK1RFU1RfUChDdXN0
b21GdW5jdGlvbk5hbWluZ1Rlc3QsIEN1c3RvbVRlc3ROYW1lcykge30KKworSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoQ3VzdG9tUGFyYW1OYW1lRnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICBDdXN0b21GdW5jdGlvbk5hbWluZ1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBW
YWx1ZXMoc3RkOjpzdHJpbmcoIkZ1bmN0aW9uTmFtZSIpKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEN1c3RvbVBhcmFtTmFtZUZ1bmN0aW9uKTsKKworI2lmIEdURVNUX0xBTkdfQ1hYMTEKKwor
Ly8gVGVzdCBjdXN0b20gbmFtaW5nIHdpdGggYSBsYW1iZGEKKworY2xhc3MgQ3VzdG9tTGFtYmRh
TmFtaW5nVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPHN0ZDo6c3RyaW5nPiB7fTsKK1RFU1Rf
UChDdXN0b21MYW1iZGFOYW1pbmdUZXN0LCBDdXN0b21UZXN0TmFtZXMpIHt9CisKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKEN1c3RvbVBhcmFtTmFtZUxhbWJkYSwgQ3VzdG9tTGFtYmRhTmFtaW5n
VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhzdGQ6OnN0cmluZygiTGFtYmRh
TmFtZSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtdKGNvbnN0IDo6dGVzdGluZzo6VGVz
dFBhcmFtSW5mbzxzdGQ6OnN0cmluZz4mIGluZikgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gaW5mLnBhcmFtOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisKKyNlbmRp
ZiAgLy8gR1RFU1RfTEFOR19DWFgxMQorCitURVNUKEN1c3RvbU5hbWluZ1Rlc3QsIENoZWNrTmFt
ZVJlZ2lzdHJ5KSB7CisgIDo6dGVzdGluZzo6VW5pdFRlc3QqIHVuaXRfdGVzdCA9IDo6dGVzdGlu
Zzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCk7CisgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiB0ZXN0
X25hbWVzOworICBmb3IgKGludCBjYXNlX251bSA9IDA7CisgICAgICAgY2FzZV9udW0gPCB1bml0
X3Rlc3QtPnRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpOworICAgICAgICsrY2FzZV9udW0pIHsKKyAg
ICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RDYXNlKiB0ZXN0X2Nhc2UgPSB1bml0X3Rlc3QtPkdldFRl
c3RDYXNlKGNhc2VfbnVtKTsKKyAgICBmb3IgKGludCB0ZXN0X251bSA9IDA7CisgICAgICAgICB0
ZXN0X251bSA8IHRlc3RfY2FzZS0+dG90YWxfdGVzdF9jb3VudCgpOworICAgICAgICAgKyt0ZXN0
X251bSkgeworICAgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogdGVzdF9pbmZvID0gdGVz
dF9jYXNlLT5HZXRUZXN0SW5mbyh0ZXN0X251bSk7CisgICAgICB0ZXN0X25hbWVzLmluc2VydChz
dGQ6OnN0cmluZyh0ZXN0X2luZm8tPm5hbWUoKSkpOworICAgIH0KKyAgfQorICBFWFBFQ1RfRVEo
MXUsIHRlc3RfbmFtZXMuY291bnQoIkN1c3RvbVRlc3ROYW1lcy9GdW5jdG9yTmFtZSIpKTsKKyAg
RVhQRUNUX0VRKDF1LCB0ZXN0X25hbWVzLmNvdW50KCJDdXN0b21UZXN0TmFtZXMvRnVuY3Rpb25O
YW1lIikpOworI2lmIEdURVNUX0xBTkdfQ1hYMTEKKyAgRVhQRUNUX0VRKDF1LCB0ZXN0X25hbWVz
LmNvdW50KCJDdXN0b21UZXN0TmFtZXMvTGFtYmRhTmFtZSIpKTsKKyNlbmRpZiAgLy8gR1RFU1Rf
TEFOR19DWFgxMQorfQorCisvLyBUZXN0IGEgbnVtZXJpYyBuYW1lIHRvIGVuc3VyZSBQcmludFRv
U3RyaW5nUGFyYW1OYW1lIHdvcmtzIGNvcnJlY3RseS4KKworY2xhc3MgQ3VzdG9tSW50ZWdlck5h
bWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHt9OworCitURVNUX1AoQ3VzdG9t
SW50ZWdlck5hbWluZ1Rlc3QsIFRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzKSB7CisgIGNvbnN0IDo6
dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9CisgICAgIDo6dGVzdGluZzo6VW5p
dFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7CisgIE1lc3NhZ2UgdGVz
dF9uYW1lX3N0cmVhbTsKKyAgdGVzdF9uYW1lX3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3JyZWN0
TmFtZXMvIiA8PCBHZXRQYXJhbSgpOworICBFWFBFQ1RfU1RSRVEodGVzdF9uYW1lX3N0cmVhbS5H
ZXRTdHJpbmcoKS5jX3N0cigpLCB0ZXN0X2luZm8tPm5hbWUoKSk7Cit9CisKK0lOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKFByaW50VG9TdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBDdXN0
b21JbnRlZ2VyTmFtaW5nVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlKDAsIDUp
LAorICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1O
YW1lKCkpOworCisvLyBUZXN0IGEgY3VzdG9tIHN0cnVjdCB3aXRoIFByaW50VG9TdHJpbmcuCisK
K3N0cnVjdCBDdXN0b21TdHJ1Y3QgeworICBleHBsaWNpdCBDdXN0b21TdHJ1Y3QoaW50IHZhbHVl
KSA6IHgodmFsdWUpIHt9CisgIGludCB4OworfTsKKworc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8
KHN0ZDo6b3N0cmVhbSYgc3RyZWFtLCBjb25zdCBDdXN0b21TdHJ1Y3QmIHZhbCkgeworICBzdHJl
YW0gPDwgdmFsLng7CisgIHJldHVybiBzdHJlYW07Cit9CisKK2NsYXNzIEN1c3RvbVN0cnVjdE5h
bWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxDdXN0b21TdHJ1Y3Q+IHt9OworCitURVNU
X1AoQ3VzdG9tU3RydWN0TmFtaW5nVGVzdCwgVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMpIHsKKyAg
Y29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0
aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKKyAgTWVz
c2FnZSB0ZXN0X25hbWVfc3RyZWFtOworICB0ZXN0X25hbWVfc3RyZWFtIDw8ICJUZXN0c1JlcG9y
dENvcnJlY3ROYW1lcy8iIDw8IEdldFBhcmFtKCk7CisgIEVYUEVDVF9TVFJFUSh0ZXN0X25hbWVf
c3RyZWFtLkdldFN0cmluZygpLmNfc3RyKCksIHRlc3RfaW5mby0+bmFtZSgpKTsKK30KKworSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoUHJpbnRUb1N0cmluZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEN1c3RvbVN0cnVjdE5hbWluZ1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1
ZXMoQ3VzdG9tU3RydWN0KDApLCBDdXN0b21TdHJ1Y3QoMSkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1OYW1lKCkpOworCisvLyBUZXN0IHRo
YXQgdXNpbmcgYSBzdGF0ZWZ1bCBwYXJhbWV0ZXIgbmFtaW5nIGZ1bmN0aW9uIHdvcmtzIGFzIGV4
cGVjdGVkLgorCitzdHJ1Y3QgU3RhdGVmdWxOYW1pbmdGdW5jdG9yIHsKKyAgU3RhdGVmdWxOYW1p
bmdGdW5jdG9yKCkgOiBzdW0oMCkge30KKyAgc3RkOjpzdHJpbmcgb3BlcmF0b3IoKShjb25zdCA6
OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88aW50PiYgaW5mbykgeworICAgIGludCB2YWx1ZSA9IGlu
Zm8ucGFyYW0gKyBzdW07CisgICAgc3VtICs9IGluZm8ucGFyYW07CisgICAgcmV0dXJuIDo6dGVz
dGluZzo6UHJpbnRUb1N0cmluZyh2YWx1ZSk7CisgIH0KKyAgaW50IHN1bTsKK307CisKK2NsYXNz
IFN0YXRlZnVsTmFtaW5nVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50
PiB7CisgcHJvdGVjdGVkOgorICBTdGF0ZWZ1bE5hbWluZ1Rlc3QoKSA6IHN1bV8oMCkge30KKyAg
aW50IHN1bV87Cit9OworCitURVNUX1AoU3RhdGVmdWxOYW1pbmdUZXN0LCBUZXN0c1JlcG9ydENv
cnJlY3ROYW1lcykgeworICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2lu
Zm8gPQorICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rl
c3RfaW5mbygpOworICBzdW1fICs9IEdldFBhcmFtKCk7CisgIE1lc3NhZ2UgdGVzdF9uYW1lX3N0
cmVhbTsKKyAgdGVzdF9uYW1lX3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMvIiA8
PCBzdW1fOworICBFWFBFQ1RfU1RSRVEodGVzdF9uYW1lX3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0
cigpLCB0ZXN0X2luZm8tPm5hbWUoKSk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFN0
YXRlZnVsTmFtaW5nRnVuY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlZnVsTmFt
aW5nVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlKDAsIDUpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgU3RhdGVmdWxOYW1pbmdGdW5jdG9yKCkpOworCisvLyBDbGFzcyB0aGF0
IGNhbm5vdCBiZSBzdHJlYW1lZCBpbnRvIGFuIG9zdHJlYW0uICBJdCBuZWVkcyB0byBiZSBjb3B5
YWJsZQorLy8gKGFuZCwgaW4gY2FzZSBvZiBNU1ZDLCBhbHNvIGFzc2lnbmFibGUpIGluIG9yZGVy
IHRvIGJlIGEgdGVzdCBwYXJhbWV0ZXIKKy8vIHR5cGUuICBJdHMgZGVmYXVsdCBjb3B5IGNvbnN0
cnVjdG9yIGFuZCBhc3NpZ25tZW50IG9wZXJhdG9yIGRvIGV4YWN0bHkKKy8vIHdoYXQgd2UgbmVl
ZC4KK2NsYXNzIFVuc3RyZWFtYWJsZSB7CisgcHVibGljOgorICBleHBsaWNpdCBVbnN0cmVhbWFi
bGUoaW50IHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KKworIHByaXZhdGU6CisgIGludCB2YWx1
ZV87Cit9OworCitjbGFzcyBDb21tZW50VGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPFVuc3Ry
ZWFtYWJsZT4ge307CisKK1RFU1RfUChDb21tZW50VGVzdCwgVGVzdHNDb3JyZWN0bHlSZXBvcnRV
bnN0cmVhbWFibGVQYXJhbXMpIHsKKyAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3Qg
dGVzdF9pbmZvID0KKyAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3Vy
cmVudF90ZXN0X2luZm8oKTsKKworICBFWFBFQ1RfRVEoOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5n
KEdldFBhcmFtKCkpLCB0ZXN0X2luZm8tPnZhbHVlX3BhcmFtKCkpOworfQorCitJTlNUQU5USUFU
RV9URVNUX0NBU0VfUChJbnN0YW50aWF0aW9uV2l0aENvbW1lbnRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgQ29tbWVudFRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoVW5z
dHJlYW1hYmxlKDEpKSk7CisKKy8vIFZlcmlmeSB0aGF0IHdlIGNhbiBjcmVhdGUgYSBoaWVyYXJj
aHkgb2YgdGVzdCBmaXh0dXJlcywgd2hlcmUgdGhlIGJhc2UKKy8vIGNsYXNzIGZpeHR1cmUgaXMg
bm90IHBhcmFtZXRlcml6ZWQgYW5kIHRoZSBkZXJpdmVkIGNsYXNzIGlzLiBJbiB0aGlzIGNhc2UK
Ky8vIFBhcmFtZXRlcml6ZWREZXJpdmVkVGVzdCBpbmhlcml0cyBmcm9tIE5vblBhcmFtZXRlcml6
ZWRCYXNlVGVzdC4gIFdlCisvLyBwZXJmb3JtIHNpbXBsZSB0ZXN0cyBvbiBib3RoLgorY2xhc3Mg
Tm9uUGFyYW1ldGVyaXplZEJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgcHVi
bGljOgorICBOb25QYXJhbWV0ZXJpemVkQmFzZVRlc3QoKSA6IG5fKDE3KSB7IH0KKyBwcm90ZWN0
ZWQ6CisgIGludCBuXzsKK307CisKK2NsYXNzIFBhcmFtZXRlcml6ZWREZXJpdmVkVGVzdCA6IHB1
YmxpYyBOb25QYXJhbWV0ZXJpemVkQmFzZVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8aW50PiB7CisgcHJv
dGVjdGVkOgorICBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3QoKSA6IGNvdW50XygwKSB7IH0KKyAg
aW50IGNvdW50XzsKKyAgc3RhdGljIGludCBnbG9iYWxfY291bnRfOworfTsKKworaW50IFBhcmFt
ZXRlcml6ZWREZXJpdmVkVGVzdDo6Z2xvYmFsX2NvdW50XyA9IDA7CisKK1RFU1RfRihOb25QYXJh
bWV0ZXJpemVkQmFzZVRlc3QsIEZpeHR1cmVJc0luaXRpYWxpemVkKSB7CisgIEVYUEVDVF9FUSgx
Nywgbl8pOworfQorCitURVNUX1AoUGFyYW1ldGVyaXplZERlcml2ZWRUZXN0LCBTZWVzU2VxdWVu
Y2UpIHsKKyAgRVhQRUNUX0VRKDE3LCBuXyk7CisgIEVYUEVDVF9FUSgwLCBjb3VudF8rKyk7Cisg
IEVYUEVDVF9FUShHZXRQYXJhbSgpLCBnbG9iYWxfY291bnRfKyspOworfQorCitjbGFzcyBQYXJh
bWV0ZXJpemVkRGVhdGhUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+
IHsgfTsKKworVEVTVF9GKFBhcmFtZXRlcml6ZWREZWF0aFRlc3QsIEdldFBhcmFtRGllc0Zyb21U
ZXN0RikgeworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKEdldFBhcmFtKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIi4qIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdCAuKiIpOwor
fQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChSYW5nZVplcm9Ub0ZpdmUsIFBhcmFtZXRlcml6
ZWREZXJpdmVkVGVzdCwgUmFuZ2UoMCwgNSkpOworCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFy
ICoqYXJndikgeworICAvLyBVc2VkIGluIFRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UuCisg
IEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChUZXN0R2VuZXJhdGlvblRlc3Q6OkVudmlyb25tZW50
OjpJbnN0YW5jZSgpKTsKKyAgLy8gVXNlZCBpbiBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCB0ZXN0
IGNhc2UuIFRlc3RzIHRoYXQgdGhlIHVwZGF0ZWQgdmFsdWUKKyAgLy8gd2lsbCBiZSBwaWNrZWQg
dXAgZm9yIGluc3RhbnRpYXRpbmcgdGVzdHMgaW4gR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QuCisg
IEdlbmVyYXRvckV2YWx1YXRpb25UZXN0OjpzZXRfcGFyYW1fdmFsdWUoMSk7CisKKyAgOjp0ZXN0
aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgLy8gVXNlZCBpbiBHZW5lcmF0
b3JFdmFsdWF0aW9uVGVzdCB0ZXN0IGNhc2UuIFRlc3RzIHRoYXQgdmFsdWUgdXBkYXRlZAorICAv
LyBoZXJlIHdpbGwgTk9UIGJlIHVzZWQgZm9yIGluc3RhbnRpYXRpbmcgdGVzdHMgaW4KKyAgLy8g
R2VuZXJhdG9yRXZhbHVhdGlvblRlc3QuCisgIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0OjpzZXRf
cGFyYW1fdmFsdWUoMik7CisKKyAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRl
c3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wYXJhbS10ZXN0
LXRlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42MzJhNjFmNDkyNmJhOTIyNTE1OWRiNDY5ODEwZTQxY2FjMGQy
MGM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29n
bGV0ZXN0LXBhcmFtLXRlc3QtdGVzdC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8vIENvcHlyaWdodCAy
MDA4LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgor
Ly8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBUaGUgR29vZ2xlIEMrKyBUZXN0
aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLworLy8gVGhpcyBoZWFk
ZXIgZmlsZSBwcm92aWRlcyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5Cisv
LyBmb3IgdGVzdGluZyBHb29nbGUgVGVzdCBpdHNlbGYuCisKKyNpZm5kZWYgR1RFU1RfVEVTVF9H
VEVTVF9QQVJBTV9URVNUX1RFU1RfSF8KKyNkZWZpbmUgR1RFU1RfVEVTVF9HVEVTVF9QQVJBTV9U
RVNUX1RFU1RfSF8KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKy8vIFRlc3QgZml4dHVy
ZSBmb3IgdGVzdGluZyBkZWZpbml0aW9uIGFuZCBpbnN0YW50aWF0aW9uIG9mIGEgdGVzdAorLy8g
aW4gc2VwYXJhdGUgdHJhbnNsYXRpb24gdW5pdHMuCitjbGFzcyBFeHRlcm5hbEluc3RhbnRpYXRp
b25UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHsKK307CisKKy8v
IFRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyBpbnN0YW50aWF0aW9uIG9mIGEgdGVzdCBpbiBtdWx0
aXBsZQorLy8gdHJhbnNsYXRpb24gdW5pdHMuCitjbGFzcyBJbnN0YW50aWF0aW9uSW5NdWx0aXBs
ZVRyYW5zbGFpb25Vbml0c1Rlc3QKKyAgICA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08aW50PiB7Cit9OworCisjZW5kaWYgIC8vIEdURVNUX1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9U
RVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRl
c3QtcGFyYW0tdGVzdDItdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29v
Z2xldGVzdC1wYXJhbS10ZXN0Mi10ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1YmI5NDVjMmY4ZWQyOWZk
OTA4NTZiMjNlMDNjMDFlMmE4NDMwNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdDItdGVzdC5jYwpAQCAtMCwwICsx
LDYxIEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLwor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8v
CisvLyBUZXN0cyBmb3IgR29vZ2xlIFRlc3QgaXRzZWxmLiAgVGhpcyB2ZXJpZmllcyB0aGF0IHRo
ZSBiYXNpYyBjb25zdHJ1Y3RzIG9mCisvLyBHb29nbGUgVGVzdCB3b3JrLgorCisjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJ0ZXN0L2dvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0
LmgiCisKK3VzaW5nIDo6dGVzdGluZzo6VmFsdWVzOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6UGFyYW1HZW5lcmF0b3I7CisKKy8vIFRlc3RzIHRoYXQgZ2VuZXJhdG9ycyBkZWZpbmVkIGlu
IGEgZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXQKKy8vIGFyZSBmdW5jdGlvbmFsLiBUaGUgdGVz
dCB1c2luZyBleHRlcm5fZ2VuIGlzIGRlZmluZWQKKy8vIGluIGdvb2dsZXRlc3QtcGFyYW0tdGVz
dC10ZXN0LmNjLgorUGFyYW1HZW5lcmF0b3I8aW50PiBleHRlcm5fZ2VuID0gVmFsdWVzKDMzKTsK
KworLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBkZWZpbmVk
IGluIG9uZSB0cmFuc2xhdGlvbiB1bml0CisvLyBhbmQgaW5zdGFudGlhdGVkIGluIGFub3RoZXIu
IFRoZSB0ZXN0IGlzIGRlZmluZWQgaW4KKy8vIGdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0LmNj
IGFuZCBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0IGZpeHR1cmUgY2xhc3MgaXMKKy8vIGRlZmlu
ZWQgaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmguCitJTlNUQU5USUFURV9URVNUX0NBU0VfUChN
dWx0aXBsZXNPZjMzLAorICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxJbnN0YW50aWF0
aW9uVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygzMywgNjYpKTsKKworLy8g
VGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBpbnN0YW50aWF0ZWQK
Ky8vIGluIG11bHRpcGxlIHRyYW5zbGF0aW9uIHVuaXRzLiBBbm90aGVyIGluc3RhbnRpYXRpb24g
aXMgZGVmaW5lZAorLy8gaW4gZ29vZ2xldGVzdC1wYXJhbS10ZXN0LXRlc3QuY2MgYW5kCisvLyBJ
bnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QgZml4dHVyZSBpcyBkZWZp
bmVkIGluCisvLyBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaAorSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoU2VxdWVuY2UyLAorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbkluTXVs
dGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVz
KDQyKjMsIDQyKjQsIDQyKjUpKTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LXBvcnQtdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC1wb3J0LXRlc3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk5MzE2Zjk1YjYzN2Fj
YTkyZmI1YTE1NDRlYzdmYzI3YzJlZmIyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1wb3J0LXRlc3QuY2MKQEAgLTAsMCArMSwxMzAw
IEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
Ky8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLworLy8g
VGhpcyBmaWxlIHRlc3RzIHRoZSBpbnRlcm5hbCBjcm9zcy1wbGF0Zm9ybSBzdXBwb3J0IHV0aWxp
dGllcy4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oIgorCisjaWYgR1RFU1RfT1NfTUFDCisjIGluY2x1ZGUgPHRpbWUuaD4KKyNlbmRp
ZiAgLy8gR1RFU1RfT1NfTUFDCisKKyNpbmNsdWRlIDxsaXN0PgorI2luY2x1ZGUgPHV0aWxpdHk+
ICAvLyBGb3Igc3RkOjpwYWlyIGFuZCBzdGQ6Om1ha2VfcGFpci4KKyNpbmNsdWRlIDx2ZWN0b3I+
CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5o
IgorI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKwordXNpbmcgc3RkOjptYWtl
X3BhaXI7Cit1c2luZyBzdGQ6OnBhaXI7CisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFj
ZSBpbnRlcm5hbCB7CisKK1RFU1QoSXNYRGlnaXRUZXN0LCBXb3Jrc0Zvck5hcnJvd0FzY2lpKSB7
CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KCcwJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgn
OScpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoJ0EnKSk7CisgIEVYUEVDVF9UUlVFKElzWERp
Z2l0KCdGJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgnYScpKTsKKyAgRVhQRUNUX1RSVUUo
SXNYRGlnaXQoJ2YnKSk7CisKKyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KCctJykpOworICBFWFBF
Q1RfRkFMU0UoSXNYRGlnaXQoJ2cnKSk7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdCgnRycpKTsK
K30KKworVEVTVChJc1hEaWdpdFRlc3QsIFJldHVybnNGYWxzZUZvck5hcnJvd05vbkFzY2lpKSB7
CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdChzdGF0aWNfY2FzdDxjaGFyPignXHg4MCcpKSk7Cisg
IEVYUEVDVF9GQUxTRShJc1hEaWdpdChzdGF0aWNfY2FzdDxjaGFyPignMCcgfCAnXHg4MCcpKSk7
Cit9CisKK1RFU1QoSXNYRGlnaXRUZXN0LCBXb3Jrc0ZvcldpZGVBc2NpaSkgeworICBFWFBFQ1Rf
VFJVRShJc1hEaWdpdChMJzAnKSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnOScpKTsKKyAg
RVhQRUNUX1RSVUUoSXNYRGlnaXQoTCdBJykpOworICBFWFBFQ1RfVFJVRShJc1hEaWdpdChMJ0Yn
KSk7CisgIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnYScpKTsKKyAgRVhQRUNUX1RSVUUoSXNYRGln
aXQoTCdmJykpOworCisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdChMJy0nKSk7CisgIEVYUEVDVF9G
QUxTRShJc1hEaWdpdChMJ2cnKSk7CisgIEVYUEVDVF9GQUxTRShJc1hEaWdpdChMJ0cnKSk7Cit9
CisKK1RFU1QoSXNYRGlnaXRUZXN0LCBSZXR1cm5zRmFsc2VGb3JXaWRlTm9uQXNjaWkpIHsKKyAg
RVhQRUNUX0ZBTFNFKElzWERpZ2l0KHN0YXRpY19jYXN0PHdjaGFyX3Q+KDB4ODApKSk7CisgIEVY
UEVDVF9GQUxTRShJc1hEaWdpdChzdGF0aWNfY2FzdDx3Y2hhcl90PihMJzAnIHwgMHg4MCkpKTsK
KyAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KHN0YXRpY19jYXN0PHdjaGFyX3Q+KEwnMCcgfCAweDEw
MCkpKTsKK30KKworY2xhc3MgQmFzZSB7CisgcHVibGljOgorICAvLyBDb3B5IGNvbnN0cnVjdG9y
IGFuZCBhc3NpZ25tZW50IG9wZXJhdG9yIGRvIGV4YWN0bHkgd2hhdCB3ZSBuZWVkLCBzbyB3ZQor
ICAvLyB1c2UgdGhlbS4KKyAgQmFzZSgpIDogbWVtYmVyXygwKSB7fQorICBleHBsaWNpdCBCYXNl
KGludCBuKSA6IG1lbWJlcl8obikge30KKyAgdmlydHVhbCB+QmFzZSgpIHt9CisgIGludCBtZW1i
ZXIoKSB7IHJldHVybiBtZW1iZXJfOyB9CisKKyBwcml2YXRlOgorICBpbnQgbWVtYmVyXzsKK307
CisKK2NsYXNzIERlcml2ZWQgOiBwdWJsaWMgQmFzZSB7CisgcHVibGljOgorICBleHBsaWNpdCBE
ZXJpdmVkKGludCBuKSA6IEJhc2Uobikge30KK307CisKK1RFU1QoSW1wbGljaXRDYXN0VGVzdCwg
Q29udmVydHNQb2ludGVycykgeworICBEZXJpdmVkIGRlcml2ZWQoMCk7CisgIEVYUEVDVF9UUlVF
KCZkZXJpdmVkID09IDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88QmFzZSo+KCZk
ZXJpdmVkKSk7Cit9CisKK1RFU1QoSW1wbGljaXRDYXN0VGVzdCwgQ2FuVXNlSW5oZXJpdGFuY2Up
IHsKKyAgRGVyaXZlZCBkZXJpdmVkKDEpOworICBCYXNlIGJhc2UgPSA6OnRlc3Rpbmc6OmludGVy
bmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+KGRlcml2ZWQpOworICBFWFBFQ1RfRVEoZGVyaXZlZC5t
ZW1iZXIoKSwgYmFzZS5tZW1iZXIoKSk7Cit9CisKK2NsYXNzIENhc3RhYmxlIHsKKyBwdWJsaWM6
CisgIGV4cGxpY2l0IENhc3RhYmxlKGJvb2wqIGNvbnZlcnRlZCkgOiBjb252ZXJ0ZWRfKGNvbnZl
cnRlZCkge30KKyAgb3BlcmF0b3IgQmFzZSgpIHsKKyAgICAqY29udmVydGVkXyA9IHRydWU7Cisg
ICAgcmV0dXJuIEJhc2UoKTsKKyAgfQorCisgcHJpdmF0ZToKKyAgYm9vbCogY29udmVydGVkXzsK
K307CisKK1RFU1QoSW1wbGljaXRDYXN0VGVzdCwgQ2FuVXNlTm9uQ29uc3RDYXN0T3BlcmF0b3Ip
IHsKKyAgYm9vbCBjb252ZXJ0ZWQgPSBmYWxzZTsKKyAgQ2FzdGFibGUgY2FzdGFibGUoJmNvbnZl
cnRlZCk7CisgIEJhc2UgYmFzZSA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88
QmFzZT4oY2FzdGFibGUpOworICBFWFBFQ1RfVFJVRShjb252ZXJ0ZWQpOworfQorCitjbGFzcyBD
b25zdENhc3RhYmxlIHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IENvbnN0Q2FzdGFibGUoYm9vbCog
Y29udmVydGVkKSA6IGNvbnZlcnRlZF8oY29udmVydGVkKSB7fQorICBvcGVyYXRvciBCYXNlKCkg
Y29uc3QgeworICAgICpjb252ZXJ0ZWRfID0gdHJ1ZTsKKyAgICByZXR1cm4gQmFzZSgpOworICB9
CisKKyBwcml2YXRlOgorICBib29sKiBjb252ZXJ0ZWRfOworfTsKKworVEVTVChJbXBsaWNpdENh
c3RUZXN0LCBDYW5Vc2VDb25zdENhc3RPcGVyYXRvck9uQ29uc3RWYWx1ZXMpIHsKKyAgYm9vbCBj
b252ZXJ0ZWQgPSBmYWxzZTsKKyAgY29uc3QgQ29uc3RDYXN0YWJsZSBjb25zdF9jYXN0YWJsZSgm
Y29udmVydGVkKTsKKyAgQmFzZSBiYXNlID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRD
YXN0XzxCYXNlPihjb25zdF9jYXN0YWJsZSk7CisgIEVYUEVDVF9UUlVFKGNvbnZlcnRlZCk7Cit9
CisKK2NsYXNzIENvbnN0QW5kTm9uQ29uc3RDYXN0YWJsZSB7CisgcHVibGljOgorICBDb25zdEFu
ZE5vbkNvbnN0Q2FzdGFibGUoYm9vbCogY29udmVydGVkLCBib29sKiBjb25zdF9jb252ZXJ0ZWQp
CisgICAgICA6IGNvbnZlcnRlZF8oY29udmVydGVkKSwgY29uc3RfY29udmVydGVkXyhjb25zdF9j
b252ZXJ0ZWQpIHt9CisgIG9wZXJhdG9yIEJhc2UoKSB7CisgICAgKmNvbnZlcnRlZF8gPSB0cnVl
OworICAgIHJldHVybiBCYXNlKCk7CisgIH0KKyAgb3BlcmF0b3IgQmFzZSgpIGNvbnN0IHsKKyAg
ICAqY29uc3RfY29udmVydGVkXyA9IHRydWU7CisgICAgcmV0dXJuIEJhc2UoKTsKKyAgfQorCisg
cHJpdmF0ZToKKyAgYm9vbCogY29udmVydGVkXzsKKyAgYm9vbCogY29uc3RfY29udmVydGVkXzsK
K307CisKK1RFU1QoSW1wbGljaXRDYXN0VGVzdCwgQ2FuU2VsZWN0QmV0d2VlbkNvbnN0QW5kTm9u
Q29uc3RDYXNyQXBwcm9wcmlhdGVseSkgeworICBib29sIGNvbnZlcnRlZCA9IGZhbHNlOworICBi
b29sIGNvbnN0X2NvbnZlcnRlZCA9IGZhbHNlOworICBDb25zdEFuZE5vbkNvbnN0Q2FzdGFibGUg
Y2FzdGFibGUoJmNvbnZlcnRlZCwgJmNvbnN0X2NvbnZlcnRlZCk7CisgIEJhc2UgYmFzZSA9IDo6
dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88QmFzZT4oY2FzdGFibGUpOworICBFWFBF
Q1RfVFJVRShjb252ZXJ0ZWQpOworICBFWFBFQ1RfRkFMU0UoY29uc3RfY29udmVydGVkKTsKKwor
ICBjb252ZXJ0ZWQgPSBmYWxzZTsKKyAgY29uc3RfY29udmVydGVkID0gZmFsc2U7CisgIGNvbnN0
IENvbnN0QW5kTm9uQ29uc3RDYXN0YWJsZSBjb25zdF9jYXN0YWJsZSgmY29udmVydGVkLCAmY29u
c3RfY29udmVydGVkKTsKKyAgYmFzZSA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2Fz
dF88QmFzZT4oY29uc3RfY2FzdGFibGUpOworICBFWFBFQ1RfRkFMU0UoY29udmVydGVkKTsKKyAg
RVhQRUNUX1RSVUUoY29uc3RfY29udmVydGVkKTsKK30KKworY2xhc3MgVG8geworIHB1YmxpYzoK
KyAgVG8oYm9vbCogY29udmVydGVkKSB7ICpjb252ZXJ0ZWQgPSB0cnVlOyB9ICAvLyBOT0xJTlQK
K307CisKK1RFU1QoSW1wbGljaXRDYXN0VGVzdCwgQ2FuVXNlSW1wbGljaXRDb25zdHJ1Y3Rvcikg
eworICBib29sIGNvbnZlcnRlZCA9IGZhbHNlOworICBUbyB0byA9IDo6dGVzdGluZzo6aW50ZXJu
YWw6OkltcGxpY2l0Q2FzdF88VG8+KCZjb252ZXJ0ZWQpOworICAodm9pZCl0bzsKKyAgRVhQRUNU
X1RSVUUoY29udmVydGVkKTsKK30KKworVEVTVChJdGVyYXRvclRyYWl0c1Rlc3QsIFdvcmtzRm9y
U1RMQ29udGFpbmVySXRlcmF0b3JzKSB7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsCisgICAg
ICBJdGVyYXRvclRyYWl0czwgOjpzdGQ6OnZlY3RvcjxpbnQ+Ojpjb25zdF9pdGVyYXRvcj46OnZh
bHVlX3R5cGU+KCk7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxib29sLAorICAgICAgSXRlcmF0b3JU
cmFpdHM8IDo6c3RkOjpsaXN0PGJvb2w+OjppdGVyYXRvcj46OnZhbHVlX3R5cGU+KCk7Cit9CisK
K1RFU1QoSXRlcmF0b3JUcmFpdHNUZXN0LCBXb3Jrc0ZvclBvaW50ZXJUb05vbkNvbnN0KSB7Cisg
IFN0YXRpY0Fzc2VydFR5cGVFcTxjaGFyLCBJdGVyYXRvclRyYWl0czxjaGFyKj46OnZhbHVlX3R5
cGU+KCk7CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCB2b2lkKiwgSXRlcmF0b3JUcmFpdHM8
Y29uc3Qgdm9pZCoqPjo6dmFsdWVfdHlwZT4oKTsKK30KKworVEVTVChJdGVyYXRvclRyYWl0c1Rl
c3QsIFdvcmtzRm9yUG9pbnRlclRvQ29uc3QpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGNoYXIs
IEl0ZXJhdG9yVHJhaXRzPGNvbnN0IGNoYXIqPjo6dmFsdWVfdHlwZT4oKTsKKyAgU3RhdGljQXNz
ZXJ0VHlwZUVxPGNvbnN0IHZvaWQqLAorICAgICAgSXRlcmF0b3JUcmFpdHM8Y29uc3Qgdm9pZCog
Y29uc3QqPjo6dmFsdWVfdHlwZT4oKTsKK30KKworLy8gVGVzdHMgdGhhdCB0aGUgZWxlbWVudF90
eXBlIHR5cGVkZWYgaXMgYXZhaWxhYmxlIGluIHNjb3BlZF9wdHIgYW5kIHJlZmVycworLy8gdG8g
dGhlIHBhcmFtZXRlciB0eXBlLgorVEVTVChTY29wZWRQdHJUZXN0LCBEZWZpbmVzRWxlbWVudFR5
cGUpIHsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c2Nv
cGVkX3B0cjxpbnQ+OjplbGVtZW50X3R5cGU+KCk7Cit9CisKKy8vIEZJWE1FOiBJbXBsZW1lbnQg
VEhFIFJFU1Qgb2Ygc2NvcGVkX3B0ciB0ZXN0cy4KKworVEVTVChHdGVzdENoZWNrU3ludGF4VGVz
dCwgQmVoYXZlc0xpa2VBU2luZ2xlU3RhdGVtZW50KSB7CisgIGlmIChBbHdheXNGYWxzZSgpKQor
ICAgIEdURVNUX0NIRUNLXyhmYWxzZSkgPDwgIlRoaXMgc2hvdWxkIG5ldmVyIGJlIGV4ZWN1dGVk
OyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiSXQncyBhIGNvbXBpbGF0aW9uIHRlc3Qg
b25seS4iOworCisgIGlmIChBbHdheXNUcnVlKCkpCisgICAgR1RFU1RfQ0hFQ0tfKHRydWUpOwor
ICBlbHNlCisgICAgOyAgLy8gTk9MSU5UCisKKyAgaWYgKEFsd2F5c0ZhbHNlKCkpCisgICAgOyAg
Ly8gTk9MSU5UCisgIGVsc2UKKyAgICBHVEVTVF9DSEVDS18odHJ1ZSkgPDwgIiI7Cit9CisKK1RF
U1QoR3Rlc3RDaGVja1N5bnRheFRlc3QsIFdvcmtzV2l0aFN3aXRjaCkgeworICBzd2l0Y2ggKDAp
IHsKKyAgICBjYXNlIDE6CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgR1RFU1Rf
Q0hFQ0tfKHRydWUpOworICB9CisKKyAgc3dpdGNoICgwKQorICAgIGNhc2UgMDoKKyAgICAgIEdU
RVNUX0NIRUNLXyh0cnVlKSA8PCAiQ2hlY2sgZmFpbGVkIGluIHN3aXRjaCBjYXNlIjsKK30KKwor
Ly8gVmVyaWZpZXMgYmVoYXZpb3Igb2YgRm9ybWF0RmlsZUxvY2F0aW9uLgorVEVTVChGb3JtYXRG
aWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzRmlsZUxvY2F0aW9uKSB7CisgIEVYUEVDVF9QUkVEX0ZP
Uk1BVDIoSXNTdWJzdHJpbmcsICJmb28uY2MiLCBGb3JtYXRGaWxlTG9jYXRpb24oImZvby5jYyIs
IDQyKSk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICI0MiIsIEZvcm1hdEZp
bGVMb2NhdGlvbigiZm9vLmNjIiwgNDIpKTsKK30KKworVEVTVChGb3JtYXRGaWxlTG9jYXRpb25U
ZXN0LCBGb3JtYXRzVW5rbm93bkZpbGUpIHsKKyAgRVhQRUNUX1BSRURfRk9STUFUMigKKyAgICAg
IElzU3Vic3RyaW5nLCAidW5rbm93biBmaWxlIiwgRm9ybWF0RmlsZUxvY2F0aW9uKE5VTEwsIDQy
KSk7CisgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICI0MiIsIEZvcm1hdEZpbGVM
b2NhdGlvbihOVUxMLCA0MikpOworfQorCitURVNUKEZvcm1hdEZpbGVMb2NhdGlvblRlc3QsIEZv
cm1hdHNVa25vd25MaW5lKSB7CisgIEVYUEVDVF9FUSgiZm9vLmNjOiIsIEZvcm1hdEZpbGVMb2Nh
dGlvbigiZm9vLmNjIiwgLTEpKTsKK30KKworVEVTVChGb3JtYXRGaWxlTG9jYXRpb25UZXN0LCBG
b3JtYXRzVWtub3duRmlsZUFuZExpbmUpIHsKKyAgRVhQRUNUX0VRKCJ1bmtub3duIGZpbGU6Iiwg
Rm9ybWF0RmlsZUxvY2F0aW9uKE5VTEwsIC0xKSk7Cit9CisKKy8vIFZlcmlmaWVzIGJlaGF2aW9y
IG9mIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24uCitURVNUKEZvcm1hdENv
bXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzRmlsZUxvY2F0aW9uKSB7
CisgIEVYUEVDVF9FUSgiZm9vLmNjOjQyIiwgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVM
b2NhdGlvbigiZm9vLmNjIiwgNDIpKTsKK30KKworVEVTVChGb3JtYXRDb21waWxlckluZGVwZW5k
ZW50RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c1Vrbm93bkZpbGUpIHsKKyAgRVhQRUNUX0VRKCJ1
bmtub3duIGZpbGU6NDIiLAorICAgICAgICAgICAgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZp
bGVMb2NhdGlvbihOVUxMLCA0MikpOworfQorCitURVNUKEZvcm1hdENvbXBpbGVySW5kZXBlbmRl
bnRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzVWtub3duTGluZSkgeworICBFWFBFQ1RfRVEoImZv
by5jYyIsIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oImZvby5jYyIsIC0x
KSk7Cit9CisKK1RFU1QoRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvblRlc3Qs
IEZvcm1hdHNVa25vd25GaWxlQW5kTGluZSkgeworICBFWFBFQ1RfRVEoInVua25vd24gZmlsZSIs
IEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oTlVMTCwgLTEpKTsKK30KKwor
I2lmIEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19RTlggfHwgR1RF
U1RfT1NfRlVDSFNJQQordm9pZCogVGhyZWFkRnVuYyh2b2lkKiBkYXRhKSB7CisgIGludGVybmFs
OjpNdXRleCogbXV0ZXggPSBzdGF0aWNfY2FzdDxpbnRlcm5hbDo6TXV0ZXgqPihkYXRhKTsKKyAg
bXV0ZXgtPkxvY2soKTsKKyAgbXV0ZXgtPlVubG9jaygpOworICByZXR1cm4gTlVMTDsKK30KKwor
VEVTVChHZXRUaHJlYWRDb3VudFRlc3QsIFJldHVybnNDb3JyZWN0VmFsdWUpIHsKKyAgY29uc3Qg
c2l6ZV90IHN0YXJ0aW5nX2NvdW50ID0gR2V0VGhyZWFkQ291bnQoKTsKKyAgcHRocmVhZF90ICAg
ICAgIHRocmVhZF9pZDsKKworICBpbnRlcm5hbDo6TXV0ZXggbXV0ZXg7CisgIHsKKyAgICBpbnRl
cm5hbDo6TXV0ZXhMb2NrIGxvY2soJm11dGV4KTsKKyAgICBwdGhyZWFkX2F0dHJfdCAgYXR0cjsK
KyAgICBBU1NFUlRfRVEoMCwgcHRocmVhZF9hdHRyX2luaXQoJmF0dHIpKTsKKyAgICBBU1NFUlRf
RVEoMCwgcHRocmVhZF9hdHRyX3NldGRldGFjaHN0YXRlKCZhdHRyLCBQVEhSRUFEX0NSRUFURV9K
T0lOQUJMRSkpOworCisgICAgY29uc3QgaW50IHN0YXR1cyA9IHB0aHJlYWRfY3JlYXRlKCZ0aHJl
YWRfaWQsICZhdHRyLCAmVGhyZWFkRnVuYywgJm11dGV4KTsKKyAgICBBU1NFUlRfRVEoMCwgcHRo
cmVhZF9hdHRyX2Rlc3Ryb3koJmF0dHIpKTsKKyAgICBBU1NFUlRfRVEoMCwgc3RhdHVzKTsKKyAg
ICBFWFBFQ1RfRVEoc3RhcnRpbmdfY291bnQgKyAxLCBHZXRUaHJlYWRDb3VudCgpKTsKKyAgfQor
CisgIHZvaWQqIGR1bW15OworICBBU1NFUlRfRVEoMCwgcHRocmVhZF9qb2luKHRocmVhZF9pZCwg
JmR1bW15KSk7CisKKyAgLy8gVGhlIE9TIG1heSBub3QgaW1tZWRpYXRlbHkgcmVwb3J0IHRoZSB1
cGRhdGVkIHRocmVhZCBjb3VudCBhZnRlcgorICAvLyBqb2luaW5nIGEgdGhyZWFkLCBjYXVzaW5n
IGZsYWtpbmVzcyBpbiB0aGlzIHRlc3QuIFRvIGNvdW50ZXIgdGhhdCwgd2UKKyAgLy8gd2FpdCBm
b3IgdXAgdG8gLjUgc2Vjb25kcyBmb3IgdGhlIE9TIHRvIHJlcG9ydCB0aGUgY29ycmVjdCB2YWx1
ZS4KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyArK2kpIHsKKyAgICBpZiAoR2V0VGhyZWFkQ291
bnQoKSA9PSBzdGFydGluZ19jb3VudCkKKyAgICAgIGJyZWFrOworCisgICAgU2xlZXBNaWxsaXNl
Y29uZHMoMTAwKTsKKyAgfQorCisgIEVYUEVDVF9FUShzdGFydGluZ19jb3VudCwgR2V0VGhyZWFk
Q291bnQoKSk7Cit9CisjZWxzZQorVEVTVChHZXRUaHJlYWRDb3VudFRlc3QsIFJldHVybnNaZXJv
V2hlblVuYWJsZVRvQ291bnRUaHJlYWRzKSB7CisgIEVYUEVDVF9FUSgwVSwgR2V0VGhyZWFkQ291
bnQoKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fCBH
VEVTVF9PU19RTlggfHwgR1RFU1RfT1NfRlVDSFNJQQorCitURVNUKEd0ZXN0Q2hlY2tEZWF0aFRl
c3QsIERpZXNXaXRoQ29ycmVjdE91dHB1dE9uRmFpbHVyZSkgeworICBjb25zdCBib29sIGFfZmFs
c2VfY29uZGl0aW9uID0gZmFsc2U7CisgIGNvbnN0IGNoYXIgcmVnZXhbXSA9CisjaWZkZWYgX01T
Q19WRVIKKyAgICAgImdvb2dsZXRlc3QtcG9ydC10ZXN0XFwuY2NcXChcXGQrXFwpOiIKKyNlbGlm
IEdURVNUX1VTRVNfUE9TSVhfUkUKKyAgICAgImdvb2dsZXRlc3QtcG9ydC10ZXN0XFwuY2M6WzAt
OV0rIgorI2Vsc2UKKyAgICAgImdvb2dsZXRlc3QtcG9ydC10ZXN0XFwuY2M6XFxkKyIKKyNlbmRp
ZiAgLy8gX01TQ19WRVIKKyAgICAgIi4qYV9mYWxzZV9jb25kaXRpb24uKkV4dHJhIGluZm8uKiI7
CisKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChHVEVTVF9DSEVDS18oYV9mYWxzZV9jb25k
aXRpb24pIDw8ICJFeHRyYSBpbmZvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdl
eCk7Cit9CisKKyNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAorCitURVNUKEd0ZXN0Q2hlY2tEZWF0
aFRlc3QsIExpdmVzU2lsZW50bHlPblN1Y2Nlc3MpIHsKKyAgRVhQRUNUX0VYSVQoeworICAgICAg
R1RFU1RfQ0hFQ0tfKHRydWUpIDw8ICJFeHRyYSBpbmZvIjsKKyAgICAgIDo6c3RkOjpjZXJyIDw8
ICJTdWNjZXNzXG4iOworICAgICAgZXhpdCgwKTsgfSwKKyAgICAgIDo6dGVzdGluZzo6RXhpdGVk
V2l0aENvZGUoMCksICJTdWNjZXNzIik7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRI
X1RFU1QKKworLy8gVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCBjaG9vc2UgcmVndWxhciBleHBy
ZXNzaW9uIGVuZ2luZSBhcHByb3ByaWF0ZSB0bworLy8gdGhlIHBsYXRmb3JtLiBUaGUgdGVzdCB3
aWxsIHByb2R1Y2UgY29tcGlsZXIgZXJyb3JzIGluIGNhc2Ugb2YgZmFpbHVyZS4KKy8vIEZvciBz
aW1wbGljaXR5LCB3ZSBvbmx5IGNvdmVyIHRoZSBtb3N0IGltcG9ydGFudCBwbGF0Zm9ybXMgaGVy
ZS4KK1RFU1QoUmVnZXhFbmdpbmVTZWxlY3Rpb25UZXN0LCBTZWxlY3RzQ29ycmVjdFJlZ2V4RW5n
aW5lKSB7CisjaWYgIUdURVNUX1VTRVNfUENSRQorIyBpZiBHVEVTVF9IQVNfUE9TSVhfUkUKKwor
ICBFWFBFQ1RfVFJVRShHVEVTVF9VU0VTX1BPU0lYX1JFKTsKKworIyBlbHNlCisKKyAgRVhQRUNU
X1RSVUUoR1RFU1RfVVNFU19TSU1QTEVfUkUpOworCisjIGVuZGlmCisjZW5kaWYgIC8vICFHVEVT
VF9VU0VTX1BDUkUKK30KKworI2lmIEdURVNUX1VTRVNfUE9TSVhfUkUKKworIyBpZiBHVEVTVF9I
QVNfVFlQRURfVEVTVAorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyPgorY2xhc3MgUkVUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKKworLy8gRGVmaW5lcyBTdHJpbmdUeXBlcyBhcyB0
aGUgbGlzdCBvZiBhbGwgc3RyaW5nIHR5cGVzIHRoYXQgY2xhc3MgUkUKKy8vIHN1cHBvcnRzLgor
dHlwZWRlZiB0ZXN0aW5nOjpUeXBlczwKKyAgICA6OnN0ZDo6c3RyaW5nLAorIyAgaWYgR1RFU1Rf
SEFTX0dMT0JBTF9TVFJJTkcKKyAgICA6OnN0cmluZywKKyMgIGVuZGlmICAvLyBHVEVTVF9IQVNf
R0xPQkFMX1NUUklORworICAgIGNvbnN0IGNoYXIqPiBTdHJpbmdUeXBlczsKKworVFlQRURfVEVT
VF9DQVNFKFJFVGVzdCwgU3RyaW5nVHlwZXMpOworCisvLyBUZXN0cyBSRSdzIGltcGxpY2l0IGNv
bnN0cnVjdG9ycy4KK1RZUEVEX1RFU1QoUkVUZXN0LCBJbXBsaWNpdENvbnN0cnVjdG9yV29ya3Mp
IHsKKyAgY29uc3QgUkUgZW1wdHkoVHlwZVBhcmFtKCIiKSk7CisgIEVYUEVDVF9TVFJFUSgiIiwg
ZW1wdHkucGF0dGVybigpKTsKKworICBjb25zdCBSRSBzaW1wbGUoVHlwZVBhcmFtKCJoZWxsbyIp
KTsKKyAgRVhQRUNUX1NUUkVRKCJoZWxsbyIsIHNpbXBsZS5wYXR0ZXJuKCkpOworCisgIGNvbnN0
IFJFIG5vcm1hbChUeXBlUGFyYW0oIi4qKFxcdyspIikpOworICBFWFBFQ1RfU1RSRVEoIi4qKFxc
dyspIiwgbm9ybWFsLnBhdHRlcm4oKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgUkUncyBjb25zdHJ1
Y3RvcnMgcmVqZWN0IGludmFsaWQgcmVndWxhciBleHByZXNzaW9ucy4KK1RZUEVEX1RFU1QoUkVU
ZXN0LCBSZWplY3RzSW52YWxpZFJlZ2V4KSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsK
KyAgICBjb25zdCBSRSBpbnZhbGlkKFR5cGVQYXJhbSgiPyIpKTsKKyAgfSwgIlwiP1wiIGlzIG5v
dCBhIHZhbGlkIFBPU0lYIEV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbi4iKTsKK30KKworLy8g
VGVzdHMgUkU6OkZ1bGxNYXRjaCgpLgorVFlQRURfVEVTVChSRVRlc3QsIEZ1bGxNYXRjaFdvcmtz
KSB7CisgIGNvbnN0IFJFIGVtcHR5KFR5cGVQYXJhbSgiIikpOworICBFWFBFQ1RfVFJVRShSRTo6
RnVsbE1hdGNoKFR5cGVQYXJhbSgiIiksIGVtcHR5KSk7CisgIEVYUEVDVF9GQUxTRShSRTo6RnVs
bE1hdGNoKFR5cGVQYXJhbSgiYSIpLCBlbXB0eSkpOworCisgIGNvbnN0IFJFIHJlKFR5cGVQYXJh
bSgiYS4qeiIpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oImF6Iiks
IHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJheHl6IiksIHJl
KSk7CisgIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYmF6IiksIHJlKSk7
CisgIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYXp5IiksIHJlKSk7Cit9
CisKKy8vIFRlc3RzIFJFOjpQYXJ0aWFsTWF0Y2goKS4KK1RZUEVEX1RFU1QoUkVUZXN0LCBQYXJ0
aWFsTWF0Y2hXb3JrcykgeworICBjb25zdCBSRSBlbXB0eShUeXBlUGFyYW0oIiIpKTsKKyAgRVhQ
RUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oIiIpLCBlbXB0eSkpOworICBFWFBF
Q1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiYSIpLCBlbXB0eSkpOworCisgIGNv
bnN0IFJFIHJlKFR5cGVQYXJhbSgiYS4qeiIpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxN
YXRjaChUeXBlUGFyYW0oImF6IiksIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0
Y2goVHlwZVBhcmFtKCJheHl6IiksIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0
Y2goVHlwZVBhcmFtKCJiYXoiKSwgcmUpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRj
aChUeXBlUGFyYW0oImF6eSIpLCByZSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OlBhcnRpYWxNYXRj
aChUeXBlUGFyYW0oInp6YSIpLCByZSkpOworfQorCisjIGVuZGlmICAvLyBHVEVTVF9IQVNfVFlQ
RURfVEVTVAorCisjZWxpZiBHVEVTVF9VU0VTX1NJTVBMRV9SRQorCitURVNUKElzSW5TZXRUZXN0
LCBOdWxDaGFySXNOb3RJbkFueVNldCkgeworICBFWFBFQ1RfRkFMU0UoSXNJblNldCgnXDAnLCAi
IikpOworICBFWFBFQ1RfRkFMU0UoSXNJblNldCgnXDAnLCAiXDAiKSk7CisgIEVYUEVDVF9GQUxT
RShJc0luU2V0KCdcMCcsICJhIikpOworfQorCitURVNUKElzSW5TZXRUZXN0LCBXb3Jrc0Zvck5v
bk51bENoYXJzKSB7CisgIEVYUEVDVF9GQUxTRShJc0luU2V0KCdhJywgIkFiIikpOworICBFWFBF
Q1RfRkFMU0UoSXNJblNldCgnYycsICIiKSk7CisKKyAgRVhQRUNUX1RSVUUoSXNJblNldCgnYics
ICJiY2QiKSk7CisgIEVYUEVDVF9UUlVFKElzSW5TZXQoJ2InLCAiYWIiKSk7Cit9CisKK1RFU1Qo
SXNBc2NpaURpZ2l0VGVzdCwgSXNGYWxzZUZvck5vbkRpZ2l0KSB7CisgIEVYUEVDVF9GQUxTRShJ
c0FzY2lpRGlnaXQoJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaURpZ2l0KCcgJykpOwor
ICBFWFBFQ1RfRkFMU0UoSXNBc2NpaURpZ2l0KCcrJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2Np
aURpZ2l0KCctJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaURpZ2l0KCcuJykpOworICBFWFBF
Q1RfRkFMU0UoSXNBc2NpaURpZ2l0KCdhJykpOworfQorCitURVNUKElzQXNjaWlEaWdpdFRlc3Qs
IElzVHJ1ZUZvckRpZ2l0KSB7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlEaWdpdCgnMCcpKTsKKyAg
RVhQRUNUX1RSVUUoSXNBc2NpaURpZ2l0KCcxJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpRGln
aXQoJzUnKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlEaWdpdCgnOScpKTsKK30KKworVEVTVChJ
c0FzY2lpUHVuY3RUZXN0LCBJc0ZhbHNlRm9yTm9uUHVuY3QpIHsKKyAgRVhQRUNUX0ZBTFNFKElz
QXNjaWlQdW5jdCgnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3QoJyAnKSk7Cisg
IEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3QoJ1xuJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2Np
aVB1bmN0KCdhJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVB1bmN0KCcwJykpOworfQorCitU
RVNUKElzQXNjaWlQdW5jdFRlc3QsIElzVHJ1ZUZvclB1bmN0KSB7CisgIGZvciAoY29uc3QgY2hh
ciogcCA9ICJeLSFcIiMkJSYnKCkqKywuLzo7PD0+P0BbXFxdX2B7fH1+IjsgKnA7IHArKykgewor
ICAgIEVYUEVDVF9QUkVEMShJc0FzY2lpUHVuY3QsICpwKTsKKyAgfQorfQorCitURVNUKElzUmVw
ZWF0VGVzdCwgSXNGYWxzZUZvck5vblJlcGVhdENoYXIpIHsKKyAgRVhQRUNUX0ZBTFNFKElzUmVw
ZWF0KCdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCcgJykpOworICBFWFBFQ1RfRkFM
U0UoSXNSZXBlYXQoJ2EnKSk7CisgIEVYUEVDVF9GQUxTRShJc1JlcGVhdCgnMScpKTsKKyAgRVhQ
RUNUX0ZBTFNFKElzUmVwZWF0KCctJykpOworfQorCitURVNUKElzUmVwZWF0VGVzdCwgSXNUcnVl
Rm9yUmVwZWF0Q2hhcikgeworICBFWFBFQ1RfVFJVRShJc1JlcGVhdCgnPycpKTsKKyAgRVhQRUNU
X1RSVUUoSXNSZXBlYXQoJyonKSk7CisgIEVYUEVDVF9UUlVFKElzUmVwZWF0KCcrJykpOworfQor
CitURVNUKElzQXNjaWlXaGl0ZVNwYWNlVGVzdCwgSXNGYWxzZUZvck5vbldoaXRlU3BhY2UpIHsK
KyAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXaGl0ZVNwYWNlKCdcMCcpKTsKKyAgRVhQRUNUX0ZBTFNF
KElzQXNjaWlXaGl0ZVNwYWNlKCdhJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdoaXRlU3Bh
Y2UoJzEnKSk7CisgIEVYUEVDVF9GQUxTRShJc0FzY2lpV2hpdGVTcGFjZSgnKycpKTsKKyAgRVhQ
RUNUX0ZBTFNFKElzQXNjaWlXaGl0ZVNwYWNlKCdfJykpOworfQorCitURVNUKElzQXNjaWlXaGl0
ZVNwYWNlVGVzdCwgSXNUcnVlRm9yV2hpdGVTcGFjZSkgeworICBFWFBFQ1RfVFJVRShJc0FzY2lp
V2hpdGVTcGFjZSgnICcpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdoaXRlU3BhY2UoJ1xuJykp
OworICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnXHInKSk7CisgIEVYUEVDVF9UUlVF
KElzQXNjaWlXaGl0ZVNwYWNlKCdcdCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdoaXRlU3Bh
Y2UoJ1x2JykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnXGYnKSk7Cit9CisK
K1RFU1QoSXNBc2NpaVdvcmRDaGFyVGVzdCwgSXNGYWxzZUZvck5vbldvcmRDaGFyKSB7CisgIEVY
UEVDVF9GQUxTRShJc0FzY2lpV29yZENoYXIoJ1wwJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2Np
aVdvcmRDaGFyKCcrJykpOworICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdvcmRDaGFyKCcuJykpOwor
ICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdvcmRDaGFyKCcgJykpOworICBFWFBFQ1RfRkFMU0UoSXNB
c2NpaVdvcmRDaGFyKCdcbicpKTsKK30KKworVEVTVChJc0FzY2lpV29yZENoYXJUZXN0LCBJc1Ry
dWVGb3JMZXR0ZXIpIHsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCdhJykpOworICBF
WFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJ2InKSk7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlX
b3JkQ2hhcignQScpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCdaJykpOworfQor
CitURVNUKElzQXNjaWlXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvckRpZ2l0KSB7CisgIEVYUEVDVF9U
UlVFKElzQXNjaWlXb3JkQ2hhcignMCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFy
KCcxJykpOworICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJzcnKSk7CisgIEVYUEVDVF9U
UlVFKElzQXNjaWlXb3JkQ2hhcignOScpKTsKK30KKworVEVTVChJc0FzY2lpV29yZENoYXJUZXN0
LCBJc1RydWVGb3JVbmRlcnNjb3JlKSB7CisgIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcign
XycpKTsKK30KKworVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZvck5vblByaW50YWJs
ZSkgeworICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnXDAnKSk7CisgIEVYUEVDVF9GQUxT
RShJc1ZhbGlkRXNjYXBlKCdcMDA3JykpOworfQorCitURVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJ
c0ZhbHNlRm9yRGlnaXQpIHsKKyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJzAnKSk7Cisg
IEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCc5JykpOworfQorCitURVNUKElzVmFsaWRFc2Nh
cGVUZXN0LCBJc0ZhbHNlRm9yV2hpdGVTcGFjZSkgeworICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVz
Y2FwZSgnICcpKTsKKyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJ1xuJykpOworfQorCitU
RVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc0ZhbHNlRm9yU29tZUxldHRlcikgeworICBFWFBFQ1Rf
RkFMU0UoSXNWYWxpZEVzY2FwZSgnYScpKTsKKyAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUo
J1onKSk7Cit9CisKK1RFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzVHJ1ZUZvclB1bmN0KSB7Cisg
IEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJy4nKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRF
c2NhcGUoJy0nKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ14nKSk7CisgIEVYUEVD
VF9UUlVFKElzVmFsaWRFc2NhcGUoJyQnKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUo
JygnKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ10nKSk7CisgIEVYUEVDVF9UUlVF
KElzVmFsaWRFc2NhcGUoJ3snKSk7CisgIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ3wnKSk7
Cit9CisKK1RFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzVHJ1ZUZvclNvbWVMZXR0ZXIpIHsKKyAg
RVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnZCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVz
Y2FwZSgnRCcpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgncycpKTsKKyAgRVhQRUNU
X1RSVUUoSXNWYWxpZEVzY2FwZSgnUycpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgn
dycpKTsKKyAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnVycpKTsKK30KKworVEVTVChBdG9t
TWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkUHVuY3QpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAnXFwnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ1xcJywgJyAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ18nLCAnLicpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnLics
ICdhJykpOworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXFwnLCAnXFwn
KSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXycsICdfJykpOworICBF
WFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJysnLCAnKycpKTsKKyAgRVhQRUNUX1RS
VUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICcuJywgJy4nKSk7Cit9CisKK1RFU1QoQXRvbU1hdGNo
ZXNDaGFyVGVzdCwgRXNjYXBlZF9kKSB7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ2QnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwg
J2QnLCAnYScpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICcu
JykpOworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICcwJykpOwor
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnOScpKTsKK30KKworVEVT
VChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX0QpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAnRCcsICcwJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICdEJywgJzknKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICdEJywgJ1wwJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0Qn
LCAnYScpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJy0nKSk7
Cit9CisKK1RFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF9zKSB7CisgIEVYUEVDVF9G
QUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShB
dG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnYScpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAncycsICcuJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFy
KHRydWUsICdzJywgJzknKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICdzJywgJyAnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICdc
bicpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJ1x0JykpOwor
fQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfUykgeworICBFWFBFQ1RfRkFM
U0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdTJywgJyAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnXHInKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNo
ZXNDaGFyKHRydWUsICdTJywgJ1wwJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ1MnLCAnYScpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdT
JywgJzknKSk7Cit9CisKK1RFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF93KSB7Cisg
IEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnXDAnKSk7CisgIEVYUEVD
VF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnKycpKTsKKyAgRVhQRUNUX0ZBTFNF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICcgJykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICd3JywgJ1xuJykpOworCisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAndycsICcwJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ3cnLCAnYicpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3Jywg
J0MnKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdfJykpOwor
fQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfVykgeworICBFWFBFQ1RfRkFM
U0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJ0EnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnYicpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAnVycsICc5JykpOworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICdXJywgJ18nKSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdX
JywgJ1wwJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnKicp
KTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJ1xuJykpOworfQor
CitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRXaGl0ZVNwYWNlKSB7CisgIEVYUEVD
VF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2YnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxT
RShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2YnLCAnXG4nKSk7CisgIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ24nLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ24nLCAnXHInKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ3InLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwg
J3InLCAnYScpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndCcsICdc
MCcpKTsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndCcsICd0JykpOwor
ICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd2JywgJ1wwJykpOworICBFWFBF
Q1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd2JywgJ1xmJykpOworCisgIEVYUEVDVF9U
UlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZicsICdcZicpKTsKKyAgRVhQRUNUX1RSVUUoQXRv
bU1hdGNoZXNDaGFyKHRydWUsICduJywgJ1xuJykpOworICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ3InLCAnXHInKSk7CisgIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAndCcsICdcdCcpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd2
JywgJ1x2JykpOworfQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIFVuZXNjYXBlZERvdCkg
eworICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnLicsICdcbicpKTsKKwor
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICcuJywgJ1wwJykpOworICBFWFBF
Q1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICcuJywgJy4nKSk7CisgIEVYUEVDVF9UUlVF
KEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4nLCAnYScpKTsKKyAgRVhQRUNUX1RSVUUoQXRvbU1h
dGNoZXNDaGFyKGZhbHNlLCAnLicsICcgJykpOworfQorCitURVNUKEF0b21NYXRjaGVzQ2hhclRl
c3QsIFVuZXNjYXBlZENoYXIpIHsKKyAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcihmYWxz
ZSwgJ2EnLCAnXDAnKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICdh
JywgJ2InKSk7CisgIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICckJywgJ2En
KSk7CisKKyAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnJCcsICckJykpOwor
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICc1JywgJzUnKSk7CisgIEVYUEVD
VF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJ1onLCAnWicpKTsKK30KKworVEVTVChWYWxp
ZGF0ZVJlZ2V4VGVzdCwgR2VuZXJhdGVzRmFpbHVyZUFuZFJldHVybnNGYWxzZUZvckludmFsaWQp
IHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgo
TlVMTCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiTlVMTCBpcyBub3QgYSB2YWxpZCBz
aW1wbGUgcmVndWxhciBleHByZXNzaW9uIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAor
ICAgICAgQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImFcXCIpKSwKKyAgICAgICJTeW50YXgg
ZXJyb3IgYXQgaW5kZXggMSBpbiBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uIFwiYVxcXCI6ICIp
OworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgi
YVxcIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJ1xcJyBjYW5ub3QgYXBwZWFyIGF0
IHRoZSBlbmQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlk
YXRlUmVnZXgoIlxcblxcIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJ1xcJyBjYW5u
b3QgYXBwZWFyIGF0IHRoZSBlbmQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJU
X0ZBTFNFKFZhbGlkYXRlUmVnZXgoIlxcc1xcaGIiKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICJpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBcIlxcaFwiIik7CisgIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJeXiIpKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIideJyBjYW4gb25seSBhcHBlYXIgYXQgdGhlIGJlZ2lubmluZyIpOwor
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiLipe
YiIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIideJyBjYW4gb25seSBhcHBlYXIgYXQg
dGhlIGJlZ2lubmluZyIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0Uo
VmFsaWRhdGVSZWdleCgiJCQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICInJCcgY2Fu
IG9ubHkgYXBwZWFyIGF0IHRoZSBlbmQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNT
RVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIl4kYSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIickJyBjYW4gb25seSBhcHBlYXIgYXQgdGhlIGVuZCIpOworICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiYShiIikpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiJygnIGlzIHVuc3VwcG9ydGVkIik7CisgIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJhYikiKSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICInKScgaXMgdW5zdXBwb3J0ZWQiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIlthYiIpKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIidbJyBpcyB1bnN1cHBvcnRlZCIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiYXsyIikpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAiJ3snIGlzIHVuc3VwcG9ydGVkIik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCI/IikpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAiJz8nIGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVhdGFibGUgdG9rZW4iKTsKKyAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIl4qIikpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAiJyonIGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVhdGFi
bGUgdG9rZW4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlk
YXRlUmVnZXgoIjUqKyIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIicrJyBjYW4gb25s
eSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2VuIik7Cit9CisKK1RFU1QoVmFsaWRhdGVSZWdleFRl
c3QsIFJldHVybnNUcnVlRm9yVmFsaWQpIHsKKyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgi
IikpOworICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCJhIikpOworICBFWFBFQ1RfVFJVRShW
YWxpZGF0ZVJlZ2V4KCIuKiIpKTsKKyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiXmFfKyIp
KTsKKyAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiXmFcXHRcXCY/IikpOworICBFWFBFQ1Rf
VFJVRShWYWxpZGF0ZVJlZ2V4KCIwOSokIikpOworICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4
KCJeWiQiKSk7CisgIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoImFcXF5aXFwkXFwoXFwpXFx8
XFxbXFxdXFx7XFx9IikpOworfQorCitURVNUKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFk
VGVzdCwgV29ya3NGb3JaZXJvT3JPbmUpIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlv
bkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImEiLCAiYmEiKSk7CisgIC8vIFJlcGVh
dGluZyBtb3JlIHRoYW4gb25jZS4KKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVwZXRpdGlvbkFuZFJl
Z2V4QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImIiLCAiYWFiIikpOworCisgIC8vIFJlcGVhdGlu
ZyB6ZXJvIHRpbWVzLgorICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVh
ZChmYWxzZSwgJ2EnLCAnPycsICJiIiwgImJhIikpOworICAvLyBSZXBlYXRpbmcgb25jZS4KKyAg
RVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICdhJywgJz8n
LCAiYiIsICJhYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhl
YWQoZmFsc2UsICcjJywgJz8nLCAiLiIsICIjIyIpKTsKK30KKworVEVTVChNYXRjaFJlcGV0aXRp
b25BbmRSZWdleEF0SGVhZFRlc3QsIFdvcmtzRm9yWmVyb09yTWFueSkgeworICBFWFBFQ1RfRkFM
U0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJyonLCAiYSQiLCAi
YmFhYiIpKTsKKworICAvLyBSZXBlYXRpbmcgemVybyB0aW1lcy4KKyAgRVhQRUNUX1RSVUUoTWF0
Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJyonLCAiYiIsICJiYyIpKTsK
KyAgLy8gUmVwZWF0aW5nIG9uY2UuCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJl
Z2V4QXRIZWFkKGZhbHNlLCAnLicsICcqJywgImIiLCAiYWJjIikpOworICAvLyBSZXBlYXRpbmcg
bW9yZSB0aGFuIG9uY2UuCisgIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRI
ZWFkKHRydWUsICd3JywgJyonLCAiLSIsICJhYl8xLWciKSk7Cit9CisKK1RFU1QoTWF0Y2hSZXBl
dGl0aW9uQW5kUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc0Zvck9uZU9yTWFueSkgeworICBFWFBFQ1Rf
RkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJysnLCAiYSQi
LCAiYmFhYiIpKTsKKyAgLy8gUmVwZWF0aW5nIHplcm8gdGltZXMuCisgIEVYUEVDVF9GQUxTRShN
YXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKycsICJiIiwgImJjIikp
OworCisgIC8vIFJlcGVhdGluZyBvbmNlLgorICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25B
bmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKycsICJiIiwgImFiYyIpKTsKKyAgLy8gUmVwZWF0
aW5nIG1vcmUgdGhhbiBvbmNlLgorICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdl
eEF0SGVhZCh0cnVlLCAndycsICcrJywgIi0iLCAiYWJfMS1nIikpOworfQorCitURVNUKE1hdGNo
UmVnZXhBdEhlYWRUZXN0LCBSZXR1cm5zVHJ1ZUZvckVtcHR5UmVnZXgpIHsKKyAgRVhQRUNUX1RS
VUUoTWF0Y2hSZWdleEF0SGVhZCgiIiwgIiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0
SGVhZCgiIiwgImFiIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc1do
ZW5Eb2xsYXJJc0luUmVnZXgpIHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIiQi
LCAiYSIpKTsKKworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCIkIiwgIiIpKTsKKyAg
RVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiYSQiLCAiYSIpKTsKK30KKworVEVTVChNYXRj
aFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NXaGVuUmVnZXhTdGFydHNXaXRoRXNjYXBlU2VxdWVuY2Up
IHsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIlxcdyIsICIrIikpOworICBFWFBF
Q1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiXFxXIiwgImFiIikpOworCisgIEVYUEVDVF9UUlVF
KE1hdGNoUmVnZXhBdEhlYWQoIlxcc2EiLCAiXG5hYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hS
ZWdleEF0SGVhZCgiXFxkIiwgIjFhIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0
LCBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhSZXBldGl0aW9uKSB7CisgIEVYUEVDVF9GQUxTRShN
YXRjaFJlZ2V4QXRIZWFkKCIuK2EiLCAiYWJjIikpOworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdl
eEF0SGVhZCgiYT9iIiwgImFhYiIpKTsKKworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFk
KCIuKmEiLCAiYmMxMi1hYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiYT9i
IiwgImIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoImE/YiIsICJhYiIpKTsK
K30KKworVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwKKyAgICAgV29ya3NXaGVuUmVnZXhTdGFy
dHNXaXRoUmVwZXRpb25PZkVzY2FwZVNlcXVlbmNlKSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJl
Z2V4QXRIZWFkKCJcXC4rYSIsICJhYmMiKSk7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRI
ZWFkKCJcXHM/YiIsICIgIGIiKSk7CisKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgi
XFwoKmEiLCAiKCgoKGFiIikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXF4/
YiIsICJeYiIpKTsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxcXD9iIiwgImIi
KSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcXFw/YiIsICJcXGIiKSk7Cit9
CisKK1RFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIE1hdGNoZXNTZXF1ZW50aWFsbHkpIHsKKyAg
RVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoImFiLipjIiwgImFjYWJjIikpOworCisgIEVY
UEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoImFiLipjIiwgImFiLWZzYyIpKTsKK30KKworVEVT
VChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5zRmFsc2VXaGVuU3RyaW5nSXNOdWxsKSB7
CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoIiIsIE5VTEwpKTsKK30KKworVEVT
VChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhDYXJldCkg
eworICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJlKCJeYSIsICJiYSIpKTsKKyAgRVhQ
RUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXiQiLCAiYSIpKTsKKworICBFWFBFQ1RfVFJV
RShNYXRjaFJlZ2V4QW55d2hlcmUoIl5hIiwgImFiIikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJl
Z2V4QW55d2hlcmUoIl4iLCAiYWIiKSk7CisgIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVy
ZSgiXiQiLCAiIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFJldHVybnNG
YWxzZVdoZW5Ob01hdGNoKSB7CisgIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoImEi
LCAiYmNkZTEyMyIpKTsKKyAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiYS4rYSIs
ICItLWFhODg4ODg4ODgiKSk7Cit9CisKK1RFU1QoTWF0Y2hSZWdleEFueXdoZXJlVGVzdCwgUmV0
dXJuc1RydWVXaGVuTWF0Y2hpbmdQcmVmaXgpIHsKKyAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFu
eXdoZXJlKCJcXHcrIiwgImFiMV8gLSA1IikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55
d2hlcmUoIi4qPSIsICI9IikpOworICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIngu
KmFiPy4qYmMiLCAieGFhYWJjIikpOworfQorCitURVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3Qs
IFJldHVybnNUcnVlV2hlbk1hdGNoaW5nTm9uUHJlZml4KSB7CisgIEVYUEVDVF9UUlVFKE1hdGNo
UmVnZXhBbnl3aGVyZSgiXFx3KyIsICIkJCQgYWIxXyAtIDUiKSk7CisgIEVYUEVDVF9UUlVFKE1h
dGNoUmVnZXhBbnl3aGVyZSgiXFwuKz0iLCAiPSAgLi4uPSIpKTsKK30KKworLy8gVGVzdHMgUkUn
cyBpbXBsaWNpdCBjb25zdHJ1Y3RvcnMuCitURVNUKFJFVGVzdCwgSW1wbGljaXRDb25zdHJ1Y3Rv
cldvcmtzKSB7CisgIGNvbnN0IFJFIGVtcHR5KCIiKTsKKyAgRVhQRUNUX1NUUkVRKCIiLCBlbXB0
eS5wYXR0ZXJuKCkpOworCisgIGNvbnN0IFJFIHNpbXBsZSgiaGVsbG8iKTsKKyAgRVhQRUNUX1NU
UkVRKCJoZWxsbyIsIHNpbXBsZS5wYXR0ZXJuKCkpOworfQorCisvLyBUZXN0cyB0aGF0IFJFJ3Mg
Y29uc3RydWN0b3JzIHJlamVjdCBpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCitURVNUKFJF
VGVzdCwgUmVqZWN0c0ludmFsaWRSZWdleCkgeworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7
CisgICAgY29uc3QgUkUgbm9ybWFsKE5VTEwpOworICB9LCAiTlVMTCBpcyBub3QgYSB2YWxpZCBz
aW1wbGUgcmVndWxhciBleHByZXNzaW9uIik7CisKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
eworICAgIGNvbnN0IFJFIG5vcm1hbCgiLiooXFx3KyIpOworICB9LCAiJygnIGlzIHVuc3VwcG9y
dGVkIik7CisKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeworICAgIGNvbnN0IFJFIGludmFs
aWQoIl4/Iik7CisgIH0sICInPycgY2FuIG9ubHkgZm9sbG93IGEgcmVwZWF0YWJsZSB0b2tlbiIp
OworfQorCisvLyBUZXN0cyBSRTo6RnVsbE1hdGNoKCkuCitURVNUKFJFVGVzdCwgRnVsbE1hdGNo
V29ya3MpIHsKKyAgY29uc3QgUkUgZW1wdHkoIiIpOworICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1h
dGNoKCIiLCBlbXB0eSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaCgiYSIsIGVtcHR5
KSk7CisKKyAgY29uc3QgUkUgcmUxKCJhIik7CisgIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2go
ImEiLCByZTEpKTsKKworICBjb25zdCBSRSByZSgiYS4qeiIpOworICBFWFBFQ1RfVFJVRShSRTo6
RnVsbE1hdGNoKCJheiIsIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goImF4eXoi
LCByZSkpOworICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaCgiYmF6IiwgcmUpKTsKKyAgRVhQ
RUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goImF6eSIsIHJlKSk7Cit9CisKKy8vIFRlc3RzIFJFOjpQ
YXJ0aWFsTWF0Y2goKS4KK1RFU1QoUkVUZXN0LCBQYXJ0aWFsTWF0Y2hXb3JrcykgeworICBjb25z
dCBSRSBlbXB0eSgiIik7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goIiIsIGVtcHR5
KSk7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImEiLCBlbXB0eSkpOworCisgIGNv
bnN0IFJFIHJlKCJhLip6Iik7CisgIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImF6Iiwg
cmUpKTsKKyAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiYXh5eiIsIHJlKSk7CisgIEVY
UEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImJheiIsIHJlKSk7CisgIEVYUEVDVF9UUlVFKFJF
OjpQYXJ0aWFsTWF0Y2goImF6eSIsIHJlKSk7CisgIEVYUEVDVF9GQUxTRShSRTo6UGFydGlhbE1h
dGNoKCJ6emEiLCByZSkpOworfQorCisjZW5kaWYgIC8vIEdURVNUX1VTRVNfUE9TSVhfUkUKKwor
I2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQorCitURVNUKENhcHR1cmVUZXN0LCBDYXB0dXJl
c1N0ZG91dCkgeworICBDYXB0dXJlU3Rkb3V0KCk7CisgIGZwcmludGYoc3Rkb3V0LCAiYWJjIik7
CisgIEVYUEVDVF9TVFJFUSgiYWJjIiwgR2V0Q2FwdHVyZWRTdGRvdXQoKS5jX3N0cigpKTsKKwor
ICBDYXB0dXJlU3Rkb3V0KCk7CisgIGZwcmludGYoc3Rkb3V0LCAiZGVmJWNnaGkiLCAnXDAnKTsK
KyAgRVhQRUNUX0VRKDo6c3RkOjpzdHJpbmcoImRlZlwwZ2hpIiwgNyksIDo6c3RkOjpzdHJpbmco
R2V0Q2FwdHVyZWRTdGRvdXQoKSkpOworfQorCitURVNUKENhcHR1cmVUZXN0LCBDYXB0dXJlc1N0
ZGVycikgeworICBDYXB0dXJlU3RkZXJyKCk7CisgIGZwcmludGYoc3RkZXJyLCAiamtsIik7Cisg
IEVYUEVDVF9TVFJFUSgiamtsIiwgR2V0Q2FwdHVyZWRTdGRlcnIoKS5jX3N0cigpKTsKKworICBD
YXB0dXJlU3RkZXJyKCk7CisgIGZwcmludGYoc3RkZXJyLCAiamtsJWNtbm8iLCAnXDAnKTsKKyAg
RVhQRUNUX0VRKDo6c3RkOjpzdHJpbmcoImprbFwwbW5vIiwgNyksIDo6c3RkOjpzdHJpbmcoR2V0
Q2FwdHVyZWRTdGRlcnIoKSkpOworfQorCisvLyBUZXN0cyB0aGF0IHN0ZG91dCBhbmQgc3RkZXJy
IGNhcHR1cmUgZG9uJ3QgaW50ZXJmZXJlIHdpdGggZWFjaCBvdGhlci4KK1RFU1QoQ2FwdHVyZVRl
c3QsIENhcHR1cmVzU3Rkb3V0QW5kU3RkZXJyKSB7CisgIENhcHR1cmVTdGRvdXQoKTsKKyAgQ2Fw
dHVyZVN0ZGVycigpOworICBmcHJpbnRmKHN0ZG91dCwgInBxciIpOworICBmcHJpbnRmKHN0ZGVy
ciwgInN0dSIpOworICBFWFBFQ1RfU1RSRVEoInBxciIsIEdldENhcHR1cmVkU3Rkb3V0KCkuY19z
dHIoKSk7CisgIEVYUEVDVF9TVFJFUSgic3R1IiwgR2V0Q2FwdHVyZWRTdGRlcnIoKS5jX3N0cigp
KTsKK30KKworVEVTVChDYXB0dXJlRGVhdGhUZXN0LCBDYW5ub3RSZWVudGVyU3Rkb3V0Q2FwdHVy
ZSkgeworICBDYXB0dXJlU3Rkb3V0KCk7CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoQ2Fw
dHVyZVN0ZG91dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPbmx5IG9uZSBzdGRv
dXQgY2FwdHVyZXIgY2FuIGV4aXN0IGF0IGEgdGltZSIpOworICBHZXRDYXB0dXJlZFN0ZG91dCgp
OworCisgIC8vIFdlIGNhbm5vdCB0ZXN0IHN0ZGVyciBjYXB0dXJpbmcgdXNpbmcgZGVhdGggdGVz
dHMgYXMgdGhleSB1c2UgaXQKKyAgLy8gdGhlbXNlbHZlcy4KK30KKworI2VuZGlmICAvLyAhR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKKworVEVTVChUaHJlYWRMb2NhbFRlc3QsIERlZmF1bHRDb25z
dHJ1Y3RvckluaXRpYWxpemVzVG9EZWZhdWx0VmFsdWVzKSB7CisgIFRocmVhZExvY2FsPGludD4g
dDE7CisgIEVYUEVDVF9FUSgwLCB0MS5nZXQoKSk7CisKKyAgVGhyZWFkTG9jYWw8dm9pZCo+IHQy
OworICBFWFBFQ1RfVFJVRSh0Mi5nZXQoKSA9PSBOVUxMKTsKK30KKworVEVTVChUaHJlYWRMb2Nh
bFRlc3QsIFNpbmdsZVBhcmFtQ29uc3RydWN0b3JJbml0aWFsaXplc1RvUGFyYW0pIHsKKyAgVGhy
ZWFkTG9jYWw8aW50PiB0MSgxMjMpOworICBFWFBFQ1RfRVEoMTIzLCB0MS5nZXQoKSk7CisKKyAg
aW50IGkgPSAwOworICBUaHJlYWRMb2NhbDxpbnQqPiB0MigmaSk7CisgIEVYUEVDVF9FUSgmaSwg
dDIuZ2V0KCkpOworfQorCitjbGFzcyBOb0RlZmF1bHRDb250cnVjdG9yIHsKKyBwdWJsaWM6Cisg
IGV4cGxpY2l0IE5vRGVmYXVsdENvbnRydWN0b3IoY29uc3QgY2hhciopIHt9CisgIE5vRGVmYXVs
dENvbnRydWN0b3IoY29uc3QgTm9EZWZhdWx0Q29udHJ1Y3RvciYpIHt9Cit9OworCitURVNUKFRo
cmVhZExvY2FsVGVzdCwgVmFsdWVEZWZhdWx0Q29udHJ1Y3RvcklzTm90UmVxdWlyZWRGb3JQYXJh
bVZlcnNpb24pIHsKKyAgVGhyZWFkTG9jYWw8Tm9EZWZhdWx0Q29udHJ1Y3Rvcj4gYmFyKE5vRGVm
YXVsdENvbnRydWN0b3IoImZvbyIpKTsKKyAgYmFyLnBvaW50ZXIoKTsKK30KKworVEVTVChUaHJl
YWRMb2NhbFRlc3QsIEdldEFuZFBvaW50ZXJSZXR1cm5TYW1lVmFsdWUpIHsKKyAgVGhyZWFkTG9j
YWw8c3RkOjpzdHJpbmc+IHRocmVhZF9sb2NhbF9zdHJpbmc7CisKKyAgRVhQRUNUX0VRKHRocmVh
ZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpLCAmKHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkpKTsK
KworICAvLyBWZXJpZmllcyB0aGUgY29uZGl0aW9uIHN0aWxsIGhvbGRzIGFmdGVyIGNhbGxpbmcg
c2V0LgorICB0aHJlYWRfbG9jYWxfc3RyaW5nLnNldCgiZm9vIik7CisgIEVYUEVDVF9FUSh0aHJl
YWRfbG9jYWxfc3RyaW5nLnBvaW50ZXIoKSwgJih0aHJlYWRfbG9jYWxfc3RyaW5nLmdldCgpKSk7
Cit9CisKK1RFU1QoVGhyZWFkTG9jYWxUZXN0LCBQb2ludGVyQW5kQ29uc3RQb2ludGVyUmV0dXJu
U2FtZVZhbHVlKSB7CisgIFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiB0aHJlYWRfbG9jYWxfc3Ry
aW5nOworICBjb25zdCBUaHJlYWRMb2NhbDxzdGQ6OnN0cmluZz4mIGNvbnN0X3RocmVhZF9sb2Nh
bF9zdHJpbmcgPQorICAgICAgdGhyZWFkX2xvY2FsX3N0cmluZzsKKworICBFWFBFQ1RfRVEodGhy
ZWFkX2xvY2FsX3N0cmluZy5wb2ludGVyKCksIGNvbnN0X3RocmVhZF9sb2NhbF9zdHJpbmcucG9p
bnRlcigpKTsKKworICB0aHJlYWRfbG9jYWxfc3RyaW5nLnNldCgiZm9vIik7CisgIEVYUEVDVF9F
USh0aHJlYWRfbG9jYWxfc3RyaW5nLnBvaW50ZXIoKSwgY29uc3RfdGhyZWFkX2xvY2FsX3N0cmlu
Zy5wb2ludGVyKCkpOworfQorCisjaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQorCit2b2lkIEFkZFR3
byhpbnQqIHBhcmFtKSB7ICpwYXJhbSArPSAyOyB9CisKK1RFU1QoVGhyZWFkV2l0aFBhcmFtVGVz
dCwgQ29uc3RydWN0b3JFeGVjdXRlc1RocmVhZEZ1bmMpIHsKKyAgaW50IGkgPSA0MDsKKyAgVGhy
ZWFkV2l0aFBhcmFtPGludCo+IHRocmVhZCgmQWRkVHdvLCAmaSwgTlVMTCk7CisgIHRocmVhZC5K
b2luKCk7CisgIEVYUEVDVF9FUSg0MiwgaSk7Cit9CisKK1RFU1QoTXV0ZXhEZWF0aFRlc3QsIEFz
c2VydEhlbGRTaG91bGRBc3NlcnRXaGVuTm90TG9ja2VkKSB7CisgIC8vIEFzc2VydEhlbGQoKSBp
cyBmbGFreSBvbmx5IGluIHRoZSBwcmVzZW5jZSBvZiBtdWx0aXBsZSB0aHJlYWRzIGFjY2Vzc2lu
ZworICAvLyB0aGUgbG9jay4gSW4gdGhpcyBjYXNlLCB0aGUgdGVzdCBpcyByb2J1c3QuCisgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoeworICAgIE11dGV4IG07CisgICAgeyBNdXRleExvY2sg
bG9jaygmbSk7IH0KKyAgICBtLkFzc2VydEhlbGQoKTsKKyAgfSwKKyAgInRocmVhZCAuKmhvbGQi
KTsKK30KKworVEVTVChNdXRleFRlc3QsIEFzc2VydEhlbGRTaG91bGROb3RBc3NlcnRXaGVuTG9j
a2VkKSB7CisgIE11dGV4IG07CisgIE11dGV4TG9jayBsb2NrKCZtKTsKKyAgbS5Bc3NlcnRIZWxk
KCk7Cit9CisKK2NsYXNzIEF0b21pY0NvdW50ZXJXaXRoTXV0ZXggeworIHB1YmxpYzoKKyAgZXhw
bGljaXQgQXRvbWljQ291bnRlcldpdGhNdXRleChNdXRleCogbXV0ZXgpIDoKKyAgICB2YWx1ZV8o
MCksIG11dGV4XyhtdXRleCksIHJhbmRvbV8oNDIpIHt9CisKKyAgdm9pZCBJbmNyZW1lbnQoKSB7
CisgICAgTXV0ZXhMb2NrIGxvY2sobXV0ZXhfKTsKKyAgICBpbnQgdGVtcCA9IHZhbHVlXzsKKyAg
ICB7CisgICAgICAvLyBXZSBuZWVkIHRvIHB1dCB1cCBhIG1lbW9yeSBiYXJyaWVyIHRvIHByZXZl
bnQgcmVhZHMgYW5kIHdyaXRlcyB0bworICAgICAgLy8gdmFsdWVfIHJlYXJyYW5nZWQgd2l0aCB0
aGUgY2FsbCB0byBTbGVlcE1pbGxpc2Vjb25kcyB3aGVuIG9ic2VydmVkCisgICAgICAvLyBmcm9t
IG90aGVyIHRocmVhZHMuCisjaWYgR1RFU1RfSEFTX1BUSFJFQUQKKyAgICAgIC8vIE9uIFBPU0lY
LCBsb2NraW5nIGEgbXV0ZXggcHV0cyB1cCBhIG1lbW9yeSBiYXJyaWVyLiAgV2UgY2Fubm90IHVz
ZQorICAgICAgLy8gTXV0ZXggYW5kIE11dGV4TG9jayBoZXJlIG9yIHJlbHkgb24gdGhlaXIgbWVt
b3J5IGJhcnJpZXIKKyAgICAgIC8vIGZ1bmN0aW9uYWxpdHkgYXMgd2UgYXJlIHRlc3RpbmcgdGhl
bSBoZXJlLgorICAgICAgcHRocmVhZF9tdXRleF90IG1lbW9yeV9iYXJyaWVyX211dGV4OworICAg
ICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18oCisgICAgICAgICAgcHRocmVhZF9tdXRleF9p
bml0KCZtZW1vcnlfYmFycmllcl9tdXRleCwgTlVMTCkpOworICAgICAgR1RFU1RfQ0hFQ0tfUE9T
SVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF9sb2NrKCZtZW1vcnlfYmFycmllcl9tdXRleCkpOwor
CisgICAgICBTbGVlcE1pbGxpc2Vjb25kcyhyYW5kb21fLkdlbmVyYXRlKDMwKSk7CisKKyAgICAg
IEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtZW1vcnlf
YmFycmllcl9tdXRleCkpOworICAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVh
ZF9tdXRleF9kZXN0cm95KCZtZW1vcnlfYmFycmllcl9tdXRleCkpOworI2VsaWYgR1RFU1RfT1Nf
V0lORE9XUworICAgICAgLy8gT24gV2luZG93cywgcGVyZm9ybWluZyBhbiBpbnRlcmxvY2tlZCBh
Y2Nlc3MgcHV0cyB1cCBhIG1lbW9yeSBiYXJyaWVyLgorICAgICAgdm9sYXRpbGUgTE9ORyBkdW1t
eSA9IDA7CisgICAgICA6OkludGVybG9ja2VkSW5jcmVtZW50KCZkdW1teSk7CisgICAgICBTbGVl
cE1pbGxpc2Vjb25kcyhyYW5kb21fLkdlbmVyYXRlKDMwKSk7CisgICAgICA6OkludGVybG9ja2Vk
SW5jcmVtZW50KCZkdW1teSk7CisjZWxzZQorIyBlcnJvciAiTWVtb3J5IGJhcnJpZXIgbm90IGlt
cGxlbWVudGVkIG9uIHRoaXMgcGxhdGZvcm0uIgorI2VuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVB
RAorICAgIH0KKyAgICB2YWx1ZV8gPSB0ZW1wICsgMTsKKyAgfQorICBpbnQgdmFsdWUoKSBjb25z
dCB7IHJldHVybiB2YWx1ZV87IH0KKworIHByaXZhdGU6CisgIHZvbGF0aWxlIGludCB2YWx1ZV87
CisgIE11dGV4KiBjb25zdCBtdXRleF87ICAvLyBQcm90ZWN0cyB2YWx1ZV8uCisgIFJhbmRvbSAg
ICAgICByYW5kb21fOworfTsKKwordm9pZCBDb3VudGluZ1RocmVhZEZ1bmMocGFpcjxBdG9taWND
b3VudGVyV2l0aE11dGV4KiwgaW50PiBwYXJhbSkgeworICBmb3IgKGludCBpID0gMDsgaSA8IHBh
cmFtLnNlY29uZDsgKytpKQorICAgICAgcGFyYW0uZmlyc3QtPkluY3JlbWVudCgpOworfQorCisv
LyBUZXN0cyB0aGF0IHRoZSBtdXRleCBvbmx5IGxldHMgb25lIHRocmVhZCBhdCBhIHRpbWUgdG8g
bG9jayBpdC4KK1RFU1QoTXV0ZXhUZXN0LCBPbmx5T25lVGhyZWFkQ2FuTG9ja0F0QVRpbWUpIHsK
KyAgTXV0ZXggbXV0ZXg7CisgIEF0b21pY0NvdW50ZXJXaXRoTXV0ZXggbG9ja2VkX2NvdW50ZXIo
Jm11dGV4KTsKKworICB0eXBlZGVmIFRocmVhZFdpdGhQYXJhbTxwYWlyPEF0b21pY0NvdW50ZXJX
aXRoTXV0ZXgqLCBpbnQ+ID4gVGhyZWFkVHlwZTsKKyAgY29uc3QgaW50IGtDeWNsZUNvdW50ID0g
MjA7CisgIGNvbnN0IGludCBrVGhyZWFkQ291bnQgPSA3OworICBzY29wZWRfcHRyPFRocmVhZFR5
cGU+IGNvdW50aW5nX3RocmVhZHNba1RocmVhZENvdW50XTsKKyAgTm90aWZpY2F0aW9uIHRocmVh
ZHNfY2FuX3N0YXJ0OworICAvLyBDcmVhdGVzIGFuZCBydW5zIGtUaHJlYWRDb3VudCB0aHJlYWRz
IHRoYXQgaW5jcmVtZW50IGxvY2tlZF9jb3VudGVyCisgIC8vIGtDeWNsZUNvdW50IHRpbWVzIGVh
Y2guCisgIGZvciAoaW50IGkgPSAwOyBpIDwga1RocmVhZENvdW50OyArK2kpIHsKKyAgICBjb3Vu
dGluZ190aHJlYWRzW2ldLnJlc2V0KG5ldyBUaHJlYWRUeXBlKCZDb3VudGluZ1RocmVhZEZ1bmMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3BhaXIo
JmxvY2tlZF9jb3VudGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtDeWNsZUNvdW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZ0aHJlYWRzX2Nhbl9zdGFydCkpOworICB9CisgIHRocmVhZHNf
Y2FuX3N0YXJ0Lk5vdGlmeSgpOworICBmb3IgKGludCBpID0gMDsgaSA8IGtUaHJlYWRDb3VudDsg
KytpKQorICAgIGNvdW50aW5nX3RocmVhZHNbaV0tPkpvaW4oKTsKKworICAvLyBJZiB0aGUgbXV0
ZXggbGV0cyBtb3JlIHRoYW4gb25lIHRocmVhZCB0byBpbmNyZW1lbnQgdGhlIGNvdW50ZXIgYXQg
YQorICAvLyB0aW1lLCB0aGV5IGFyZSBsaWtlbHkgdG8gZW5jb3VudGVyIGEgcmFjZSBjb25kaXRp
b24gYW5kIGhhdmUgc29tZQorICAvLyBpbmNyZW1lbnRzIG92ZXJ3cml0dGVuLCByZXN1bHRpbmcg
aW4gdGhlIGxvd2VyIHRoZW4gZXhwZWN0ZWQgY291bnRlcgorICAvLyB2YWx1ZS4KKyAgRVhQRUNU
X0VRKGtDeWNsZUNvdW50ICoga1RocmVhZENvdW50LCBsb2NrZWRfY291bnRlci52YWx1ZSgpKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFJ1bkZyb21UaHJlYWQodm9pZCAoZnVu
YykoVCksIFQgcGFyYW0pIHsKKyAgVGhyZWFkV2l0aFBhcmFtPFQ+IHRocmVhZChmdW5jLCBwYXJh
bSwgTlVMTCk7CisgIHRocmVhZC5Kb2luKCk7Cit9CisKK3ZvaWQgUmV0cmlldmVUaHJlYWRMb2Nh
bFZhbHVlKAorICAgIHBhaXI8VGhyZWFkTG9jYWw8c3RkOjpzdHJpbmc+Kiwgc3RkOjpzdHJpbmcq
PiBwYXJhbSkgeworICAqcGFyYW0uc2Vjb25kID0gcGFyYW0uZmlyc3QtPmdldCgpOworfQorCitU
RVNUKFRocmVhZExvY2FsVGVzdCwgUGFyYW1ldGVyaXplZENvbnN0cnVjdG9yU2V0c0RlZmF1bHQp
IHsKKyAgVGhyZWFkTG9jYWw8c3RkOjpzdHJpbmc+IHRocmVhZF9sb2NhbF9zdHJpbmcoImZvbyIp
OworICBFWFBFQ1RfU1RSRVEoImZvbyIsIHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkuY19zdHIo
KSk7CisKKyAgdGhyZWFkX2xvY2FsX3N0cmluZy5zZXQoImJhciIpOworICBFWFBFQ1RfU1RSRVEo
ImJhciIsIHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkuY19zdHIoKSk7CisKKyAgc3RkOjpzdHJp
bmcgcmVzdWx0OworICBSdW5Gcm9tVGhyZWFkKCZSZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUsCisg
ICAgICAgICAgICAgICAgbWFrZV9wYWlyKCZ0aHJlYWRfbG9jYWxfc3RyaW5nLCAmcmVzdWx0KSk7
CisgIEVYUEVDVF9TVFJFUSgiZm9vIiwgcmVzdWx0LmNfc3RyKCkpOworfQorCisvLyBLZWVwcyB0
cmFjayBvZiB3aGV0aGVyIG9mIGRlc3RydWN0b3JzIGJlaW5nIGNhbGxlZCBvbiBpbnN0YW5jZXMg
b2YKKy8vIERlc3RydWN0b3JUcmFja2VyLiAgT24gV2luZG93cywgd2FpdHMgZm9yIHRoZSBkZXN0
cnVjdG9yIGNhbGwgcmVwb3J0cy4KK2NsYXNzIERlc3RydWN0b3JDYWxsIHsKKyBwdWJsaWM6Cisg
IERlc3RydWN0b3JDYWxsKCkgeworICAgIGludm9rZWRfID0gZmFsc2U7CisjaWYgR1RFU1RfT1Nf
V0lORE9XUworICAgIHdhaXRfZXZlbnRfLlJlc2V0KDo6Q3JlYXRlRXZlbnQoTlVMTCwgVFJVRSwg
RkFMU0UsIE5VTEwpKTsKKyAgICBHVEVTVF9DSEVDS18od2FpdF9ldmVudF8uR2V0KCkgIT0gTlVM
TCk7CisjZW5kaWYKKyAgfQorCisgIGJvb2wgQ2hlY2tEZXN0cm95ZWQoKSBjb25zdCB7CisjaWYg
R1RFU1RfT1NfV0lORE9XUworICAgIGlmICg6OldhaXRGb3JTaW5nbGVPYmplY3Qod2FpdF9ldmVu
dF8uR2V0KCksIDEwMDApICE9IFdBSVRfT0JKRUNUXzApCisgICAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKKyAgICByZXR1cm4gaW52b2tlZF87CisgIH0KKworICB2b2lkIFJlcG9ydERlc3Ryb3ll
ZCgpIHsKKyAgICBpbnZva2VkXyA9IHRydWU7CisjaWYgR1RFU1RfT1NfV0lORE9XUworICAgIDo6
U2V0RXZlbnQod2FpdF9ldmVudF8uR2V0KCkpOworI2VuZGlmCisgIH0KKworICBzdGF0aWMgc3Rk
Ojp2ZWN0b3I8RGVzdHJ1Y3RvckNhbGwqPiYgTGlzdCgpIHsgcmV0dXJuICpsaXN0XzsgfQorCisg
IHN0YXRpYyB2b2lkIFJlc2V0TGlzdCgpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxp
c3RfLT5zaXplKCk7ICsraSkgeworICAgICAgZGVsZXRlIGxpc3RfLT5hdChpKTsKKyAgICB9Cisg
ICAgbGlzdF8tPmNsZWFyKCk7CisgIH0KKworIHByaXZhdGU6CisgIGJvb2wgaW52b2tlZF87Cisj
aWYgR1RFU1RfT1NfV0lORE9XUworICBBdXRvSGFuZGxlIHdhaXRfZXZlbnRfOworI2VuZGlmCisg
IHN0YXRpYyBzdGQ6OnZlY3RvcjxEZXN0cnVjdG9yQ2FsbCo+KiBjb25zdCBsaXN0XzsKKworICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKERlc3RydWN0b3JDYWxsKTsKK307CisKK3N0
ZDo6dmVjdG9yPERlc3RydWN0b3JDYWxsKj4qIGNvbnN0IERlc3RydWN0b3JDYWxsOjpsaXN0XyA9
CisgICAgbmV3IHN0ZDo6dmVjdG9yPERlc3RydWN0b3JDYWxsKj47CisKKy8vIERlc3RydWN0b3JU
cmFja2VyIGtlZXBzIHRyYWNrIG9mIHdoZXRoZXIgaXRzIGluc3RhbmNlcyBoYXZlIGJlZW4KKy8v
IGRlc3Ryb3llZC4KK2NsYXNzIERlc3RydWN0b3JUcmFja2VyIHsKKyBwdWJsaWM6CisgIERlc3Ry
dWN0b3JUcmFja2VyKCkgOiBpbmRleF8oR2V0TmV3SW5kZXgoKSkge30KKyAgRGVzdHJ1Y3RvclRy
YWNrZXIoY29uc3QgRGVzdHJ1Y3RvclRyYWNrZXImIC8qIHJocyAqLykKKyAgICAgIDogaW5kZXhf
KEdldE5ld0luZGV4KCkpIHt9CisgIH5EZXN0cnVjdG9yVHJhY2tlcigpIHsKKyAgICAvLyBXZSBu
ZXZlciBhY2Nlc3MgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKSBjb25jdXJyZW50bHksIHNvIHdlIGRv
bid0IG5lZWQKKyAgICAvLyB0byBwcm90ZWN0IHRoaXMgYWNjZXNzIHdpdGggYSBtdXRleC4KKyAg
ICBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpW2luZGV4X10tPlJlcG9ydERlc3Ryb3llZCgpOworICB9
CisKKyBwcml2YXRlOgorICBzdGF0aWMgc2l6ZV90IEdldE5ld0luZGV4KCkgeworICAgIERlc3Ry
dWN0b3JDYWxsOjpMaXN0KCkucHVzaF9iYWNrKG5ldyBEZXN0cnVjdG9yQ2FsbCk7CisgICAgcmV0
dXJuIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpIC0gMTsKKyAgfQorICBjb25zdCBzaXpl
X3QgaW5kZXhfOworCisgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oRGVzdHJ1Y3RvclRyYWNrZXIp
OworfTsKKwordHlwZWRlZiBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4qIFRocmVhZFBh
cmFtOworCit2b2lkIENhbGxUaHJlYWRMb2NhbEdldChUaHJlYWRQYXJhbSB0aHJlYWRfbG9jYWxf
cGFyYW0pIHsKKyAgdGhyZWFkX2xvY2FsX3BhcmFtLT5nZXQoKTsKK30KKworLy8gVGVzdHMgdGhh
dCB3aGVuIGEgVGhyZWFkTG9jYWwgb2JqZWN0IGRpZXMgaW4gYSB0aHJlYWQsIGl0IGRlc3Ryb3lz
CisvLyB0aGUgbWFuYWdlZCBvYmplY3QgZm9yIHRoYXQgdGhyZWFkLgorVEVTVChUaHJlYWRMb2Nh
bFRlc3QsIERlc3Ryb3lzTWFuYWdlZE9iamVjdEZvck93blRocmVhZFdoZW5EeWluZykgeworICBE
ZXN0cnVjdG9yQ2FsbDo6UmVzZXRMaXN0KCk7CisKKyAgeworICAgIFRocmVhZExvY2FsPERlc3Ry
dWN0b3JUcmFja2VyPiB0aHJlYWRfbG9jYWxfdHJhY2tlcjsKKyAgICBBU1NFUlRfRVEoMFUsIERl
c3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpKTsKKworICAgIC8vIFRoaXMgY3JlYXRlcyBhbm90
aGVyIERlc3RydWN0b3JUcmFja2VyIG9iamVjdCBmb3IgdGhlIG1haW4gdGhyZWFkLgorICAgIHRo
cmVhZF9sb2NhbF90cmFja2VyLmdldCgpOworICAgIEFTU0VSVF9FUSgxVSwgRGVzdHJ1Y3RvckNh
bGw6Okxpc3QoKS5zaXplKCkpOworICAgIEFTU0VSVF9GQUxTRShEZXN0cnVjdG9yQ2FsbDo6TGlz
dCgpWzBdLT5DaGVja0Rlc3Ryb3llZCgpKTsKKyAgfQorCisgIC8vIE5vdyB0aHJlYWRfbG9jYWxf
dHJhY2tlciBoYXMgZGllZC4KKyAgQVNTRVJUX0VRKDFVLCBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgp
LnNpemUoKSk7CisgIEVYUEVDVF9UUlVFKERlc3RydWN0b3JDYWxsOjpMaXN0KClbMF0tPkNoZWNr
RGVzdHJveWVkKCkpOworCisgIERlc3RydWN0b3JDYWxsOjpSZXNldExpc3QoKTsKK30KKworLy8g
VGVzdHMgdGhhdCB3aGVuIGEgdGhyZWFkIGV4aXRzLCB0aGUgdGhyZWFkLWxvY2FsIG9iamVjdCBm
b3IgdGhhdAorLy8gdGhyZWFkIGlzIGRlc3Ryb3llZC4KK1RFU1QoVGhyZWFkTG9jYWxUZXN0LCBE
ZXN0cm95c01hbmFnZWRPYmplY3RBdFRocmVhZEV4aXQpIHsKKyAgRGVzdHJ1Y3RvckNhbGw6OlJl
c2V0TGlzdCgpOworCisgIHsKKyAgICBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4gdGhy
ZWFkX2xvY2FsX3RyYWNrZXI7CisgICAgQVNTRVJUX0VRKDBVLCBEZXN0cnVjdG9yQ2FsbDo6TGlz
dCgpLnNpemUoKSk7CisKKyAgICAvLyBUaGlzIGNyZWF0ZXMgYW5vdGhlciBEZXN0cnVjdG9yVHJh
Y2tlciBvYmplY3QgaW4gdGhlIG5ldyB0aHJlYWQuCisgICAgVGhyZWFkV2l0aFBhcmFtPFRocmVh
ZFBhcmFtPiB0aHJlYWQoCisgICAgICAgICZDYWxsVGhyZWFkTG9jYWxHZXQsICZ0aHJlYWRfbG9j
YWxfdHJhY2tlciwgTlVMTCk7CisgICAgdGhyZWFkLkpvaW4oKTsKKworICAgIC8vIFRoZSB0aHJl
YWQgaGFzIGV4aXRlZCwgYW5kIHdlIHNob3VsZCBoYXZlIGEgRGVzdHJveWVkVHJhY2tlcgorICAg
IC8vIGluc3RhbmNlIGNyZWF0ZWQgZm9yIGl0LiBCdXQgaXQgbWF5IG5vdCBoYXZlIGJlZW4gZGVz
dHJveWVkIHlldC4KKyAgICBBU1NFUlRfRVEoMVUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6
ZSgpKTsKKyAgfQorCisgIC8vIFRoZSB0aHJlYWQgaGFzIGV4aXRlZCBhbmQgdGhyZWFkX2xvY2Fs
X3RyYWNrZXIgaGFzIGRpZWQuCisgIEFTU0VSVF9FUSgxVSwgRGVzdHJ1Y3RvckNhbGw6Okxpc3Qo
KS5zaXplKCkpOworICBFWFBFQ1RfVFJVRShEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpWzBdLT5DaGVj
a0Rlc3Ryb3llZCgpKTsKKworICBEZXN0cnVjdG9yQ2FsbDo6UmVzZXRMaXN0KCk7Cit9CisKK1RF
U1QoVGhyZWFkTG9jYWxUZXN0LCBUaHJlYWRMb2NhbE11dGF0aW9uc0FmZmVjdE9ubHlDdXJyZW50
VGhyZWFkKSB7CisgIFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiB0aHJlYWRfbG9jYWxfc3RyaW5n
OworICB0aHJlYWRfbG9jYWxfc3RyaW5nLnNldCgiRm9vIik7CisgIEVYUEVDVF9TVFJFUSgiRm9v
IiwgdGhyZWFkX2xvY2FsX3N0cmluZy5nZXQoKS5jX3N0cigpKTsKKworICBzdGQ6OnN0cmluZyBy
ZXN1bHQ7CisgIFJ1bkZyb21UaHJlYWQoJlJldHJpZXZlVGhyZWFkTG9jYWxWYWx1ZSwKKyAgICAg
ICAgICAgICAgICBtYWtlX3BhaXIoJnRocmVhZF9sb2NhbF9zdHJpbmcsICZyZXN1bHQpKTsKKyAg
RVhQRUNUX1RSVUUocmVzdWx0LmVtcHR5KCkpOworfQorCisjZW5kaWYgIC8vIEdURVNUX0lTX1RI
UkVBRFNBRkUKKworI2lmIEdURVNUX09TX1dJTkRPV1MKK1RFU1QoV2luZG93c1R5cGVzVGVzdCwg
SEFORExFSXNWb2lkU3RhcikgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8SEFORExFLCB2b2lkKj4o
KTsKK30KKworI2lmIEdURVNUX09TX1dJTkRPV1NfTUlOR1cgJiYgIWRlZmluZWQoX19NSU5HVzY0
X1ZFUlNJT05fTUFKT1IpCitURVNUKFdpbmRvd3NUeXBlc1Rlc3QsIF9DUklUSUNBTF9TRUNUSU9O
SXNfQ1JJVElDQUxfU0VDVElPTikgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8Q1JJVElDQUxfU0VD
VElPTiwgX0NSSVRJQ0FMX1NFQ1RJT04+KCk7Cit9CisjZWxzZQorVEVTVChXaW5kb3dzVHlwZXNU
ZXN0LCBDUklUSUNBTF9TRUNUSU9OSXNfUlRMX0NSSVRJQ0FMX1NFQ1RJT04pIHsKKyAgU3RhdGlj
QXNzZXJ0VHlwZUVxPENSSVRJQ0FMX1NFQ1RJT04sIF9SVExfQ1JJVElDQUxfU0VDVElPTj4oKTsK
K30KKyNlbmRpZgorCisjZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKworfSAgLy8gbmFtZXNw
YWNlIGludGVybmFsCit9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXByaW50ZXJzLXRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtcHJpbnRlcnMtdGVzdC5jYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lYTgzNjlkMjdlNTA0NzBmMWVhYmUzYWYyODA0ZDM0NTQ5M2FkZWQ5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXByaW50
ZXJzLXRlc3QuY2MKQEAgLTAsMCArMSwxNzQ4IEBACisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xl
IEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
Ky8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gR29vZ2xlIFRlc3QgLSBUaGUgR29vZ2xlIEMrKyBU
ZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yaworLy8KKy8vIFRoaXMgZmlsZSB0ZXN0cyB0aGUg
dW5pdmVyc2FsIHZhbHVlIHByaW50ZXIuCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUg
PGxpbWl0cy5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNp
bmNsdWRlIDxkZXF1ZT4KKyNpbmNsdWRlIDxsaXN0PgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRl
IDxzZXQ+CisjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8
dXRpbGl0eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC1wcmlu
dGVycy5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpZiBHVEVTVF9IQVNfVU5PUkRF
UkVEX01BUF8KKyMgaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4gIC8vIE5PTElOVAorI2VuZGlmICAv
LyBHVEVTVF9IQVNfVU5PUkRFUkVEX01BUF8KKworI2lmIEdURVNUX0hBU19VTk9SREVSRURfU0VU
XworIyBpbmNsdWRlIDx1bm9yZGVyZWRfc2V0PiAgLy8gTk9MSU5UCisjZW5kaWYgIC8vIEdURVNU
X0hBU19VTk9SREVSRURfU0VUXworCisjaWYgR1RFU1RfSEFTX1NURF9GT1JXQVJEX0xJU1RfCisj
IGluY2x1ZGUgPGZvcndhcmRfbGlzdD4gLy8gTk9MSU5UCisjZW5kaWYgIC8vIEdURVNUX0hBU19T
VERfRk9SV0FSRF9MSVNUXworCisvLyBTb21lIHVzZXItZGVmaW5lZCB0eXBlcyBmb3IgdGVzdGlu
ZyB0aGUgdW5pdmVyc2FsIHZhbHVlIHByaW50ZXIuCisKKy8vIEFuIGFub255bW91cyBlbnVtIHR5
cGUuCitlbnVtIEFub255bW91c0VudW0geworICBrQUUxID0gLTEsCisgIGtBRTIgPSAxCit9Owor
CisvLyBBbiBlbnVtIHdpdGhvdXQgYSB1c2VyLWRlZmluZWQgcHJpbnRlci4KK2VudW0gRW51bVdp
dGhvdXRQcmludGVyIHsKKyAga0VXUDEgPSAtMiwKKyAga0VXUDIgPSA0MgorfTsKKworLy8gQW4g
ZW51bSB3aXRoIGEgPDwgb3BlcmF0b3IuCitlbnVtIEVudW1XaXRoU3RyZWFtaW5nIHsKKyAga0VX
UzEgPSAxMAorfTsKKworc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3Ms
IEVudW1XaXRoU3RyZWFtaW5nIGUpIHsKKyAgcmV0dXJuIG9zIDw8IChlID09IGtFV1MxID8gImtF
V1MxIiA6ICJpbnZhbGlkIik7Cit9CisKKy8vIEFuIGVudW0gd2l0aCBhIFByaW50VG8oKSBmdW5j
dGlvbi4KK2VudW0gRW51bVdpdGhQcmludFRvIHsKKyAga0VXUFQxID0gMQorfTsKKwordm9pZCBQ
cmludFRvKEVudW1XaXRoUHJpbnRUbyBlLCBzdGQ6Om9zdHJlYW0qIG9zKSB7CisgICpvcyA8PCAo
ZSA9PSBrRVdQVDEgPyAia0VXUFQxIiA6ICJpbnZhbGlkIik7Cit9CisKKy8vIEEgY2xhc3MgaW1w
bGljaXRseSBjb252ZXJ0aWJsZSB0byBCaWdnZXN0SW50LgorY2xhc3MgQmlnZ2VzdEludENvbnZl
cnRpYmxlIHsKKyBwdWJsaWM6CisgIG9wZXJhdG9yIDo6dGVzdGluZzo6aW50ZXJuYWw6OkJpZ2dl
c3RJbnQoKSBjb25zdCB7IHJldHVybiA0MjsgfQorfTsKKworLy8gQSB1c2VyLWRlZmluZWQgdW5w
cmludGFibGUgY2xhc3MgdGVtcGxhdGUgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFVucHJpbnRhYmxlVGVtcGxhdGVJbkdsb2JhbCB7CisgcHVi
bGljOgorICBVbnByaW50YWJsZVRlbXBsYXRlSW5HbG9iYWwoKSA6IHZhbHVlXygpIHt9CisgcHJp
dmF0ZToKKyAgVCB2YWx1ZV87Cit9OworCisvLyBBIHVzZXItZGVmaW5lZCBzdHJlYW1hYmxlIHR5
cGUgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCitjbGFzcyBTdHJlYW1hYmxlSW5HbG9iYWwgewor
IHB1YmxpYzoKKyAgdmlydHVhbCB+U3RyZWFtYWJsZUluR2xvYmFsKCkge30KK307CisKK2lubGlu
ZSB2b2lkIG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBTdHJlYW1hYmxlSW5H
bG9iYWwmIC8qIHggKi8pIHsKKyAgb3MgPDwgIlN0cmVhbWFibGVJbkdsb2JhbCI7Cit9CisKK3Zv
aWQgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFN0cmVhbWFibGVJbkdsb2Jh
bCogLyogeCAqLykgeworICBvcyA8PCAiU3RyZWFtYWJsZUluR2xvYmFsKiI7Cit9CisKK25hbWVz
cGFjZSBmb28geworCisvLyBBIHVzZXItZGVmaW5lZCB1bnByaW50YWJsZSB0eXBlIGluIGEgdXNl
ciBuYW1lc3BhY2UuCitjbGFzcyBVbnByaW50YWJsZUluRm9vIHsKKyBwdWJsaWM6CisgIFVucHJp
bnRhYmxlSW5Gb28oKSA6IHpfKDApIHsgbWVtY3B5KHh5XywgIlx4RUZceDEyXHgwXHgwXHgzNFx4
QUJceDBceDAiLCA4KTsgfQorICBkb3VibGUgeigpIGNvbnN0IHsgcmV0dXJuIHpfOyB9CisgcHJp
dmF0ZToKKyAgY2hhciB4eV9bOF07CisgIGRvdWJsZSB6XzsKK307CisKKy8vIEEgdXNlci1kZWZp
bmVkIHByaW50YWJsZSB0eXBlIGluIGEgdXNlci1jaG9zZW4gbmFtZXNwYWNlLgorc3RydWN0IFBy
aW50YWJsZVZpYVByaW50VG8geworICBQcmludGFibGVWaWFQcmludFRvKCkgOiB2YWx1ZSgpIHt9
CisgIGludCB2YWx1ZTsKK307CisKK3ZvaWQgUHJpbnRUbyhjb25zdCBQcmludGFibGVWaWFQcmlu
dFRvJiB4LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKKyAgKm9zIDw8ICJQcmludGFibGVWaWFQcmlu
dFRvOiAiIDw8IHgudmFsdWU7Cit9CisKKy8vIEEgdHlwZSB3aXRoIGEgdXNlci1kZWZpbmVkIDw8
IGZvciBwcmludGluZyBpdHMgcG9pbnRlci4KK3N0cnVjdCBQb2ludGVyUHJpbnRhYmxlIHsKK307
CisKKzo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBvcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBvaW50ZXJQcmludGFibGUqIC8qIHggKi8pIHsK
KyAgcmV0dXJuIG9zIDw8ICJQb2ludGVyUHJpbnRhYmxlKiI7Cit9CisKKy8vIEEgdXNlci1kZWZp
bmVkIHByaW50YWJsZSBjbGFzcyB0ZW1wbGF0ZSBpbiBhIHVzZXItY2hvc2VuIG5hbWVzcGFjZS4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgUHJpbnRhYmxlVmlhUHJpbnRUb1RlbXBsYXRl
IHsKKyBwdWJsaWM6CisgIGV4cGxpY2l0IFByaW50YWJsZVZpYVByaW50VG9UZW1wbGF0ZShjb25z
dCBUJiBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7fQorCisgIGNvbnN0IFQmIHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gdmFsdWVfOyB9CisgcHJpdmF0ZToKKyAgVCB2YWx1ZV87Cit9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgUHJpbnRUbyhjb25zdCBQcmludGFibGVWaWFQcmlu
dFRvVGVtcGxhdGU8VD4mIHgsIDo6c3RkOjpvc3RyZWFtKiBvcykgeworICAqb3MgPDwgIlByaW50
YWJsZVZpYVByaW50VG9UZW1wbGF0ZTogIiA8PCB4LnZhbHVlKCk7Cit9CisKKy8vIEEgdXNlci1k
ZWZpbmVkIHN0cmVhbWFibGUgY2xhc3MgdGVtcGxhdGUgaW4gYSB1c2VyIG5hbWVzcGFjZS4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgU3RyZWFtYWJsZVRlbXBsYXRlSW5Gb28geworIHB1
YmxpYzoKKyAgU3RyZWFtYWJsZVRlbXBsYXRlSW5Gb28oKSA6IHZhbHVlXygpIHt9CisKKyAgY29u
c3QgVCYgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KKyBwcml2YXRlOgorICBUIHZh
bHVlXzsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIDo6c3RkOjpvc3RyZWFt
JiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBvcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTdHJlYW1hYmxlVGVtcGxhdGVJbkZvbzxUPiYgeCkgeworICByZXR1
cm4gb3MgPDwgIlN0cmVhbWFibGVUZW1wbGF0ZUluRm9vOiAiIDw8IHgudmFsdWUoKTsKK30KKwor
Ly8gQSB1c2VyLWRlZmluZWQgc3RyZWFtYWJsZSBidXQgcmVjdXJzaXZseS1kZWZpbmVkIGNvbnRh
aW5lciB0eXBlIGluCisvLyBhIHVzZXIgbmFtZXNwYWNlLCBpdCBtaW1pY3MgdGhlcmVmb3JlIHN0
ZDo6ZmlsZXN5c3RlbTo6cGF0aCBvcgorLy8gYm9vc3Q6OmZpbGVzeXN0ZW06OnBhdGguCitjbGFz
cyBQYXRoTGlrZSB7CisgcHVibGljOgorICBzdHJ1Y3QgaXRlcmF0b3IgeworICAgIHR5cGVkZWYg
UGF0aExpa2UgdmFsdWVfdHlwZTsKKyAgfTsKKworICBQYXRoTGlrZSgpIHt9CisKKyAgaXRlcmF0
b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBpdGVyYXRvcigpOyB9CisgIGl0ZXJhdG9yIGVuZCgp
IGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCk7IH0KKworICBmcmllbmQgOjpzdGQ6Om9zdHJlYW0m
IG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBQYXRoTGlrZSYpIHsKKyAgICBy
ZXR1cm4gb3MgPDwgIlN0cmVhbWFibGUtUGF0aExpa2UiOworICB9Cit9OworCit9ICAvLyBuYW1l
c3BhY2UgZm9vCisKK25hbWVzcGFjZSB0ZXN0aW5nIHsKK25hbWVzcGFjZSBndGVzdF9wcmludGVy
c190ZXN0IHsKKwordXNpbmcgOjpzdGQ6OmRlcXVlOwordXNpbmcgOjpzdGQ6Omxpc3Q7Cit1c2lu
ZyA6OnN0ZDo6bWFrZV9wYWlyOwordXNpbmcgOjpzdGQ6Om1hcDsKK3VzaW5nIDo6c3RkOjptdWx0
aW1hcDsKK3VzaW5nIDo6c3RkOjptdWx0aXNldDsKK3VzaW5nIDo6c3RkOjpwYWlyOwordXNpbmcg
OjpzdGQ6OnNldDsKK3VzaW5nIDo6c3RkOjp2ZWN0b3I7Cit1c2luZyA6OnRlc3Rpbmc6OlByaW50
VG9TdHJpbmc7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRGb3JDb21wYXJpc29u
RmFpbHVyZU1lc3NhZ2U7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3Rf
OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TmF0aXZlQXJyYXk7Cit1c2luZyA6OnRlc3Rp
bmc6OmludGVybmFsOjpSRTsKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlJlbGF0aW9uVG9T
b3VyY2VSZWZlcmVuY2U7Cit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmdzOwordXNp
bmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnQ7Cit1c2luZyA6OnRlc3Rpbmc6
OmludGVybmFsOjpVbml2ZXJzYWxQcmludGVyOwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
VW5pdmVyc2FsVGVyc2VQcmludDsKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFIHx8IEdURVNUX0hB
U19TVERfVFVQTEVfCit1c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJzZVBy
aW50VHVwbGVGaWVsZHNUb1N0cmluZ3M7CisjZW5kaWYKKworLy8gUHJpbnRzIGEgdmFsdWUgdG8g
YSBzdHJpbmcgdXNpbmcgdGhlIHVuaXZlcnNhbCB2YWx1ZSBwcmludGVyLiAgVGhpcworLy8gaXMg
YSBoZWxwZXIgZm9yIHRlc3RpbmcgVW5pdmVyc2FsUHJpbnRlcjxUPjo6UHJpbnQoKSBmb3IgdmFy
aW91cyB0eXBlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RkOjpzdHJpbmcgUHJpbnQoY29u
c3QgVCYgdmFsdWUpIHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2FsUHJp
bnRlcjxUPjo6UHJpbnQodmFsdWUsICZzcyk7CisgIHJldHVybiBzcy5zdHIoKTsKK30KKworLy8g
UHJpbnRzIGEgdmFsdWUgcGFzc2VkIGJ5IHJlZmVyZW5jZSB0byBhIHN0cmluZywgdXNpbmcgdGhl
IHVuaXZlcnNhbAorLy8gdmFsdWUgcHJpbnRlci4gIFRoaXMgaXMgYSBoZWxwZXIgZm9yIHRlc3Rp
bmcKKy8vIFVuaXZlcnNhbFByaW50ZXI8VCY+OjpQcmludCgpIGZvciB2YXJpb3VzIHR5cGVzLgor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGQ6OnN0cmluZyBQcmludEJ5UmVmKGNvbnN0IFQmIHZh
bHVlKSB7CisgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7CisgIFVuaXZlcnNhbFByaW50ZXI8VCY+
OjpQcmludCh2YWx1ZSwgJnNzKTsKKyAgcmV0dXJuIHNzLnN0cigpOworfQorCisvLyBUZXN0cyBw
cmludGluZyB2YXJpb3VzIGVudW0gdHlwZXMuCisKK1RFU1QoUHJpbnRFbnVtVGVzdCwgQW5vbnlt
b3VzRW51bSkgeworICBFWFBFQ1RfRVEoIi0xIiwgUHJpbnQoa0FFMSkpOworICBFWFBFQ1RfRVEo
IjEiLCBQcmludChrQUUyKSk7Cit9CisKK1RFU1QoUHJpbnRFbnVtVGVzdCwgRW51bVdpdGhvdXRQ
cmludGVyKSB7CisgIEVYUEVDVF9FUSgiLTIiLCBQcmludChrRVdQMSkpOworICBFWFBFQ1RfRVEo
IjQyIiwgUHJpbnQoa0VXUDIpKTsKK30KKworVEVTVChQcmludEVudW1UZXN0LCBFbnVtV2l0aFN0
cmVhbWluZykgeworICBFWFBFQ1RfRVEoImtFV1MxIiwgUHJpbnQoa0VXUzEpKTsKKyAgRVhQRUNU
X0VRKCJpbnZhbGlkIiwgUHJpbnQoc3RhdGljX2Nhc3Q8RW51bVdpdGhTdHJlYW1pbmc+KDApKSk7
Cit9CisKK1RFU1QoUHJpbnRFbnVtVGVzdCwgRW51bVdpdGhQcmludFRvKSB7CisgIEVYUEVDVF9F
USgia0VXUFQxIiwgUHJpbnQoa0VXUFQxKSk7CisgIEVYUEVDVF9FUSgiaW52YWxpZCIsIFByaW50
KHN0YXRpY19jYXN0PEVudW1XaXRoUHJpbnRUbz4oMCkpKTsKK30KKworLy8gVGVzdHMgcHJpbnRp
bmcgYSBjbGFzcyBpbXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRvIEJpZ2dlc3RJbnQuCisKK1RFU1Qo
UHJpbnRDbGFzc1Rlc3QsIEJpZ2dlc3RJbnRDb252ZXJ0aWJsZSkgeworICBFWFBFQ1RfRVEoIjQy
IiwgUHJpbnQoQmlnZ2VzdEludENvbnZlcnRpYmxlKCkpKTsKK30KKworLy8gVGVzdHMgcHJpbnRp
bmcgdmFyaW91cyBjaGFyIHR5cGVzLgorCisvLyBjaGFyLgorVEVTVChQcmludENoYXJUZXN0LCBQ
bGFpbkNoYXIpIHsKKyAgRVhQRUNUX0VRKCInXFwwJyIsIFByaW50KCdcMCcpKTsKKyAgRVhQRUNU
X0VRKCInXFwnJyAoMzksIDB4MjcpIiwgUHJpbnQoJ1wnJykpOworICBFWFBFQ1RfRVEoIidcIicg
KDM0LCAweDIyKSIsIFByaW50KCciJykpOworICBFWFBFQ1RfRVEoIic/JyAoNjMsIDB4M0YpIiwg
UHJpbnQoJz8nKSk7CisgIEVYUEVDVF9FUSgiJ1xcXFwnICg5MiwgMHg1QykiLCBQcmludCgnXFwn
KSk7CisgIEVYUEVDVF9FUSgiJ1xcYScgKDcpIiwgUHJpbnQoJ1xhJykpOworICBFWFBFQ1RfRVEo
IidcXGInICg4KSIsIFByaW50KCdcYicpKTsKKyAgRVhQRUNUX0VRKCInXFxmJyAoMTIsIDB4Qyki
LCBQcmludCgnXGYnKSk7CisgIEVYUEVDVF9FUSgiJ1xcbicgKDEwLCAweEEpIiwgUHJpbnQoJ1xu
JykpOworICBFWFBFQ1RfRVEoIidcXHInICgxMywgMHhEKSIsIFByaW50KCdccicpKTsKKyAgRVhQ
RUNUX0VRKCInXFx0JyAoOSkiLCBQcmludCgnXHQnKSk7CisgIEVYUEVDVF9FUSgiJ1xcdicgKDEx
LCAweEIpIiwgUHJpbnQoJ1x2JykpOworICBFWFBFQ1RfRVEoIidcXHg3RicgKDEyNykiLCBQcmlu
dCgnXHg3RicpKTsKKyAgRVhQRUNUX0VRKCInXFx4RkYnICgyNTUpIiwgUHJpbnQoJ1x4RkYnKSk7
CisgIEVYUEVDVF9FUSgiJyAnICgzMiwgMHgyMCkiLCBQcmludCgnICcpKTsKKyAgRVhQRUNUX0VR
KCInYScgKDk3LCAweDYxKSIsIFByaW50KCdhJykpOworfQorCisvLyBzaWduZWQgY2hhci4KK1RF
U1QoUHJpbnRDaGFyVGVzdCwgU2lnbmVkQ2hhcikgeworICBFWFBFQ1RfRVEoIidcXDAnIiwgUHJp
bnQoc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+KCdcMCcpKSk7CisgIEVYUEVDVF9FUSgiJ1xceENF
JyAoLTUwKSIsCisgICAgICAgICAgICBQcmludChzdGF0aWNfY2FzdDxzaWduZWQgY2hhcj4oLTUw
KSkpOworfQorCisvLyB1bnNpZ25lZCBjaGFyLgorVEVTVChQcmludENoYXJUZXN0LCBVbnNpZ25l
ZENoYXIpIHsKKyAgRVhQRUNUX0VRKCInXFwwJyIsIFByaW50KHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KCdcMCcpKSk7CisgIEVYUEVDVF9FUSgiJ2InICg5OCwgMHg2MikiLAorICAgICAgICAg
ICAgUHJpbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oJ2InKSkpOworfQorCisvLyBUZXN0
cyBwcmludGluZyBvdGhlciBzaW1wbGUsIGJ1aWx0LWluIHR5cGVzLgorCisvLyBib29sLgorVEVT
VChQcmludEJ1aWx0SW5UeXBlVGVzdCwgQm9vbCkgeworICBFWFBFQ1RfRVEoImZhbHNlIiwgUHJp
bnQoZmFsc2UpKTsKKyAgRVhQRUNUX0VRKCJ0cnVlIiwgUHJpbnQodHJ1ZSkpOworfQorCisvLyB3
Y2hhcl90LgorVEVTVChQcmludEJ1aWx0SW5UeXBlVGVzdCwgV2NoYXJfdCkgeworICBFWFBFQ1Rf
RVEoIkwnXFwwJyIsIFByaW50KEwnXDAnKSk7CisgIEVYUEVDVF9FUSgiTCdcXCcnICgzOSwgMHgy
NykiLCBQcmludChMJ1wnJykpOworICBFWFBFQ1RfRVEoIkwnXCInICgzNCwgMHgyMikiLCBQcmlu
dChMJyInKSk7CisgIEVYUEVDVF9FUSgiTCc/JyAoNjMsIDB4M0YpIiwgUHJpbnQoTCc/JykpOwor
ICBFWFBFQ1RfRVEoIkwnXFxcXCcgKDkyLCAweDVDKSIsIFByaW50KEwnXFwnKSk7CisgIEVYUEVD
VF9FUSgiTCdcXGEnICg3KSIsIFByaW50KEwnXGEnKSk7CisgIEVYUEVDVF9FUSgiTCdcXGInICg4
KSIsIFByaW50KEwnXGInKSk7CisgIEVYUEVDVF9FUSgiTCdcXGYnICgxMiwgMHhDKSIsIFByaW50
KEwnXGYnKSk7CisgIEVYUEVDVF9FUSgiTCdcXG4nICgxMCwgMHhBKSIsIFByaW50KEwnXG4nKSk7
CisgIEVYUEVDVF9FUSgiTCdcXHInICgxMywgMHhEKSIsIFByaW50KEwnXHInKSk7CisgIEVYUEVD
VF9FUSgiTCdcXHQnICg5KSIsIFByaW50KEwnXHQnKSk7CisgIEVYUEVDVF9FUSgiTCdcXHYnICgx
MSwgMHhCKSIsIFByaW50KEwnXHYnKSk7CisgIEVYUEVDVF9FUSgiTCdcXHg3RicgKDEyNykiLCBQ
cmludChMJ1x4N0YnKSk7CisgIEVYUEVDVF9FUSgiTCdcXHhGRicgKDI1NSkiLCBQcmludChMJ1x4
RkYnKSk7CisgIEVYUEVDVF9FUSgiTCcgJyAoMzIsIDB4MjApIiwgUHJpbnQoTCcgJykpOworICBF
WFBFQ1RfRVEoIkwnYScgKDk3LCAweDYxKSIsIFByaW50KEwnYScpKTsKKyAgRVhQRUNUX0VRKCJM
J1xceDU3NicgKDEzOTgpIiwgUHJpbnQoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHg1NzYpKSk7Cisg
IEVYUEVDVF9FUSgiTCdcXHhDNzREJyAoNTEwMjEpIiwgUHJpbnQoc3RhdGljX2Nhc3Q8d2NoYXJf
dD4oMHhDNzREKSkpOworfQorCisvLyBUZXN0IHRoYXQgSW50NjQgcHJvdmlkZXMgbW9yZSBzdG9y
YWdlIHRoYW4gd2NoYXJfdC4KK1RFU1QoUHJpbnRUeXBlU2l6ZVRlc3QsIFdjaGFyX3QpIHsKKyAg
RVhQRUNUX0xUKHNpemVvZih3Y2hhcl90KSwgc2l6ZW9mKHRlc3Rpbmc6OmludGVybmFsOjpJbnQ2
NCkpOworfQorCisvLyBWYXJpb3VzIGludGVnZXIgdHlwZXMuCitURVNUKFByaW50QnVpbHRJblR5
cGVUZXN0LCBJbnRlZ2VyKSB7CisgIEVYUEVDVF9FUSgiJ1xceEZGJyAoMjU1KSIsIFByaW50KHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSkpKTsgIC8vIHVpbnQ4CisgIEVYUEVDVF9FUSgi
J1xceDgwJyAoLTEyOCkiLCBQcmludChzdGF0aWNfY2FzdDxzaWduZWQgY2hhcj4oLTEyOCkpKTsg
IC8vIGludDgKKyAgRVhQRUNUX0VRKCI2NTUzNSIsIFByaW50KFVTSFJUX01BWCkpOyAgLy8gdWlu
dDE2CisgIEVYUEVDVF9FUSgiLTMyNzY4IiwgUHJpbnQoU0hSVF9NSU4pKTsgIC8vIGludDE2Cisg
IEVYUEVDVF9FUSgiNDI5NDk2NzI5NSIsIFByaW50KFVJTlRfTUFYKSk7ICAvLyB1aW50MzIKKyAg
RVhQRUNUX0VRKCItMjE0NzQ4MzY0OCIsIFByaW50KElOVF9NSU4pKTsgIC8vIGludDMyCisgIEVY
UEVDVF9FUSgiMTg0NDY3NDQwNzM3MDk1NTE2MTUiLAorICAgICAgICAgICAgUHJpbnQoc3RhdGlj
X2Nhc3Q8dGVzdGluZzo6aW50ZXJuYWw6OlVJbnQ2ND4oLTEpKSk7ICAvLyB1aW50NjQKKyAgRVhQ
RUNUX0VRKCItOTIyMzM3MjAzNjg1NDc3NTgwOCIsCisgICAgICAgICAgICBQcmludChzdGF0aWNf
Y2FzdDx0ZXN0aW5nOjppbnRlcm5hbDo6SW50NjQ+KDEpIDw8IDYzKSk7ICAvLyBpbnQ2NAorfQor
CisvLyBTaXplIHR5cGVzLgorVEVTVChQcmludEJ1aWx0SW5UeXBlVGVzdCwgU2l6ZV90KSB7Cisg
IEVYUEVDVF9FUSgiMSIsIFByaW50KHNpemVvZignYScpKSk7ICAvLyBzaXplX3QuCisjaWYgIUdU
RVNUX09TX1dJTkRPV1MKKyAgLy8gV2luZG93cyBoYXMgbm8gc3NpemVfdCB0eXBlLgorICBFWFBF
Q1RfRVEoIi0yIiwgUHJpbnQoc3RhdGljX2Nhc3Q8c3NpemVfdD4oLTIpKSk7ICAvLyBzc2l6ZV90
LgorI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUworfQorCisvLyBGbG9hdGluZy1wb2ludHMu
CitURVNUKFByaW50QnVpbHRJblR5cGVUZXN0LCBGbG9hdGluZ1BvaW50cykgeworICBFWFBFQ1Rf
RVEoIjEuNSIsIFByaW50KDEuNWYpKTsgICAvLyBmbG9hdAorICBFWFBFQ1RfRVEoIi0yLjUiLCBQ
cmludCgtMi41KSk7ICAvLyBkb3VibGUKK30KKworLy8gU2luY2UgOjpzdGQ6OnN0cmluZ3N0cmVh
bTo6b3BlcmF0b3I8PChjb25zdCB2b2lkICopIGZvcm1hdHMgdGhlIHBvaW50ZXIKKy8vIG91dHB1
dCBkaWZmZXJlbnRseSB3aXRoIGRpZmZlcmVudCBjb21waWxlcnMsIHdlIGhhdmUgdG8gY3JlYXRl
IHRoZSBleHBlY3RlZAorLy8gb3V0cHV0IGZpcnN0IGFuZCB1c2UgaXQgYXMgb3VyIGV4cGVjdGF0
aW9uLgorc3RhdGljIHN0ZDo6c3RyaW5nIFByaW50UG9pbnRlcihjb25zdCB2b2lkKiBwKSB7Cisg
IDo6c3RkOjpzdHJpbmdzdHJlYW0gZXhwZWN0ZWRfcmVzdWx0X3N0cmVhbTsKKyAgZXhwZWN0ZWRf
cmVzdWx0X3N0cmVhbSA8PCBwOworICByZXR1cm4gZXhwZWN0ZWRfcmVzdWx0X3N0cmVhbS5zdHIo
KTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgQyBzdHJpbmdzLgorCisvLyBjb25zdCBjaGFyKi4K
K1RFU1QoUHJpbnRDU3RyaW5nVGVzdCwgQ29uc3QpIHsKKyAgY29uc3QgY2hhciogcCA9ICJXb3Js
ZCI7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCkgKyAiIHBvaW50aW5nIHRvIFwiV29ybGRc
IiIsIFByaW50KHApKTsKK30KKworLy8gY2hhciouCitURVNUKFByaW50Q1N0cmluZ1Rlc3QsIE5v
bkNvbnN0KSB7CisgIGNoYXIgcFtdID0gIkhpIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihw
KSArICIgcG9pbnRpbmcgdG8gXCJIaVwiIiwKKyAgICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0
PGNoYXIqPihwKSkpOworfQorCisvLyBOVUxMIEMgc3RyaW5nLgorVEVTVChQcmludENTdHJpbmdU
ZXN0LCBOdWxsKSB7CisgIGNvbnN0IGNoYXIqIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwi
LCBQcmludChwKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgQyBzdHJpbmdzIGFyZSBlc2NhcGVkIHBy
b3Blcmx5LgorVEVTVChQcmludENTdHJpbmdUZXN0LCBFc2NhcGVzUHJvcGVybHkpIHsKKyAgY29u
c3QgY2hhciogcCA9ICInXCI/XFxcYVxiXGZcblxyXHRcdlx4N0ZceEZGIGEiOworICBFWFBFQ1Rf
RVEoUHJpbnRQb2ludGVyKHApICsgIiBwb2ludGluZyB0byBcIidcXFwiP1xcXFxcXGFcXGJcXGYi
CisgICAgICAgICAgICAiXFxuXFxyXFx0XFx2XFx4N0ZcXHhGRiBhXCIiLAorICAgICAgICAgICAg
UHJpbnQocCkpOworfQorCisvLyBNU1ZDIGNvbXBpbGVyIGNhbiBiZSBjb25maWd1cmVkIHRvIGRl
ZmluZSB3aGFyX3QgYXMgYSB0eXBlZGVmCisvLyBvZiB1bnNpZ25lZCBzaG9ydC4gRGVmaW5pbmcg
YW4gb3ZlcmxvYWQgZm9yIGNvbnN0IHdjaGFyX3QqIGluIHRoYXQgY2FzZQorLy8gd291bGQgY2F1
c2UgcG9pbnRlcnMgdG8gdW5zaWduZWQgc2hvcnRzIGJlIHByaW50ZWQgYXMgd2lkZSBzdHJpbmdz
LAorLy8gcG9zc2libHkgYWNjZXNzaW5nIG1vcmUgbWVtb3J5IHRoYW4gaW50ZW5kZWQgYW5kIGNh
dXNpbmcgaW52YWxpZAorLy8gbWVtb3J5IGFjY2Vzc2VzLiBNU1ZDIGRlZmluZXMgX05BVElWRV9X
Q0hBUl9UX0RFRklORUQgc3ltYm9sIHdoZW4KKy8vIHdjaGFyX3QgaXMgaW1wbGVtZW50ZWQgYXMg
YSBuYXRpdmUgdHlwZS4KKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfTkFUSVZF
X1dDSEFSX1RfREVGSU5FRCkKKworLy8gY29uc3Qgd2NoYXJfdCouCitURVNUKFByaW50V2lkZUNT
dHJpbmdUZXN0LCBDb25zdCkgeworICBjb25zdCB3Y2hhcl90KiBwID0gTCJXb3JsZCI7CisgIEVY
UEVDVF9FUShQcmludFBvaW50ZXIocCkgKyAiIHBvaW50aW5nIHRvIExcIldvcmxkXCIiLCBQcmlu
dChwKSk7Cit9CisKKy8vIHdjaGFyX3QqLgorVEVTVChQcmludFdpZGVDU3RyaW5nVGVzdCwgTm9u
Q29uc3QpIHsKKyAgd2NoYXJfdCBwW10gPSBMIkhpIjsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRl
cihwKSArICIgcG9pbnRpbmcgdG8gTFwiSGlcIiIsCisgICAgICAgICAgICBQcmludChzdGF0aWNf
Y2FzdDx3Y2hhcl90Kj4ocCkpKTsKK30KKworLy8gTlVMTCB3aWRlIEMgc3RyaW5nLgorVEVTVChQ
cmludFdpZGVDU3RyaW5nVGVzdCwgTnVsbCkgeworICBjb25zdCB3Y2hhcl90KiBwID0gTlVMTDsK
KyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBUZXN0cyB0aGF0IHdpZGUg
QyBzdHJpbmdzIGFyZSBlc2NhcGVkIHByb3Blcmx5LgorVEVTVChQcmludFdpZGVDU3RyaW5nVGVz
dCwgRXNjYXBlc1Byb3Blcmx5KSB7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0geydcJycsICciJywg
Jz8nLCAnXFwnLCAnXGEnLCAnXGInLCAnXGYnLCAnXG4nLCAnXHInLAorICAgICAgICAgICAgICAg
ICAgICAgICAnXHQnLCAnXHYnLCAweEQzLCAweDU3NiwgMHg4RDMsIDB4Qzc0RCwgJyAnLCAnYScs
ICdcMCd9OworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHMpICsgIiBwb2ludGluZyB0byBMXCIn
XFxcIj9cXFxcXFxhXFxiXFxmIgorICAgICAgICAgICAgIlxcblxcclxcdFxcdlxceEQzXFx4NTc2
XFx4OEQzXFx4Qzc0RCBhXCIiLAorICAgICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8Y29uc3Qg
d2NoYXJfdCo+KHMpKSk7Cit9CisjZW5kaWYgIC8vIG5hdGl2ZSB3Y2hhcl90CisKKy8vIFRlc3Rz
IHByaW50aW5nIHBvaW50ZXJzIHRvIG90aGVyIGNoYXIgdHlwZXMuCisKKy8vIHNpZ25lZCBjaGFy
Ki4KK1RFU1QoUHJpbnRDaGFyUG9pbnRlclRlc3QsIFNpZ25lZENoYXIpIHsKKyAgc2lnbmVkIGNo
YXIqIHAgPSByZWludGVycHJldF9jYXN0PHNpZ25lZCBjaGFyKj4oMHgxMjM0KTsKKyAgRVhQRUNU
X0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VR
KCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBjb25zdCBzaWduZWQgY2hhciouCitURVNUKFBy
aW50Q2hhclBvaW50ZXJUZXN0LCBDb25zdFNpZ25lZENoYXIpIHsKKyAgc2lnbmVkIGNoYXIqIHAg
PSByZWludGVycHJldF9jYXN0PHNpZ25lZCBjaGFyKj4oMHgxMjM0KTsKKyAgRVhQRUNUX0VRKFBy
aW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxM
IiwgUHJpbnQocCkpOworfQorCisvLyB1bnNpZ25lZCBjaGFyKi4KK1RFU1QoUHJpbnRDaGFyUG9p
bnRlclRlc3QsIFVuc2lnbmVkQ2hhcikgeworICB1bnNpZ25lZCBjaGFyKiBwID0gcmVpbnRlcnBy
ZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oMHgxMjM0KTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRl
cihwKSwgUHJpbnQocCkpOworICBwID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQo
cCkpOworfQorCisvLyBjb25zdCB1bnNpZ25lZCBjaGFyKi4KK1RFU1QoUHJpbnRDaGFyUG9pbnRl
clRlc3QsIENvbnN0VW5zaWduZWRDaGFyKSB7CisgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHAgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPigweDEyMzQpOworICBFWFBFQ1Rf
RVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7CisgIHAgPSBOVUxMOworICBFWFBFQ1RfRVEo
Ik5VTEwiLCBQcmludChwKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIHBvaW50ZXJzIHRvIHNp
bXBsZSwgYnVpbHQtaW4gdHlwZXMuCisKKy8vIGJvb2wqLgorVEVTVChQcmludFBvaW50ZXJUb0J1
aWx0SW5UeXBlVGVzdCwgQm9vbCkgeworICBib29sKiBwID0gcmVpbnRlcnByZXRfY2FzdDxib29s
Kj4oMHhBQkNEKTsKKyAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOworICBw
ID0gTlVMTDsKKyAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyB2b2lkKi4K
K1RFU1QoUHJpbnRQb2ludGVyVG9CdWlsdEluVHlwZVRlc3QsIFZvaWQpIHsKKyAgdm9pZCogcCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4QUJDRCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50
ZXIocCksIFByaW50KHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50
KHApKTsKK30KKworLy8gY29uc3Qgdm9pZCouCitURVNUKFByaW50UG9pbnRlclRvQnVpbHRJblR5
cGVUZXN0LCBDb25zdFZvaWQpIHsKKyAgY29uc3Qgdm9pZCogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgdm9pZCo+KDB4QUJDRCk7CisgIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50
KHApKTsKKyAgcCA9IE5VTEw7CisgIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKK30KKwor
Ly8gVGVzdHMgcHJpbnRpbmcgcG9pbnRlcnMgdG8gcG9pbnRlcnMuCitURVNUKFByaW50UG9pbnRl
clRvUG9pbnRlclRlc3QsIEludFBvaW50ZXJQb2ludGVyKSB7CisgIGludCoqIHAgPSByZWludGVy
cHJldF9jYXN0PGludCoqPigweEFCQ0QpOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQ
cmludChwKSk7CisgIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Cit9
CisKKy8vIFRlc3RzIHByaW50aW5nIChub24tbWVtYmVyKSBmdW5jdGlvbiBwb2ludGVycy4KKwor
dm9pZCBNeUZ1bmN0aW9uKGludCAvKiBuICovKSB7fQorCitURVNUKFByaW50UG9pbnRlclRlc3Qs
IE5vbk1lbWJlckZ1bmN0aW9uUG9pbnRlcikgeworICAvLyBXZSBjYW5ub3QgZGlyZWN0bHkgY2Fz
dCAmTXlGdW5jdGlvbiB0byBjb25zdCB2b2lkKiBiZWNhdXNlIHRoZQorICAvLyBzdGFuZGFyZCBk
aXNhbGxvd3MgY2FzdGluZyBiZXR3ZWVuIHBvaW50ZXJzIHRvIGZ1bmN0aW9ucyBhbmQKKyAgLy8g
cG9pbnRlcnMgdG8gb2JqZWN0cywgYW5kIHNvbWUgY29tcGlsZXJzIChlLmcuIEdDQyAzLjQpIGVu
Zm9yY2UKKyAgLy8gdGhpcyBsaW1pdGF0aW9uLgorICBFWFBFQ1RfRVEoCisgICAgICBQcmludFBv
aW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oCisgICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxpbnRlcm5hbDo6QmlnZ2VzdEludD4oJk15RnVuY3Rpb24pKSksCisgICAgICBQcmlu
dCgmTXlGdW5jdGlvbikpOworICBpbnQgKCpwKShib29sKSA9IE5VTEw7ICAvLyBOT0xJTlQKKyAg
RVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOworfQorCisvLyBBbiBhc3NlcnRpb24gcHJlZGlj
YXRlIGRldGVybWluaW5nIHdoZXRoZXIgYSBvbmUgc3RyaW5nIGlzIGEgcHJlZml4IGZvcgorLy8g
YW5vdGhlci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBTdHJpbmdUeXBlPgorQXNzZXJ0aW9uUmVzdWx0
IEhhc1ByZWZpeChjb25zdCBTdHJpbmdUeXBlJiBzdHIsIGNvbnN0IFN0cmluZ1R5cGUmIHByZWZp
eCkgeworICBpZiAoc3RyLmZpbmQocHJlZml4LCAwKSA9PSAwKQorICAgIHJldHVybiBBc3NlcnRp
b25TdWNjZXNzKCk7CisKKyAgY29uc3QgYm9vbCBpc193aWRlX3N0cmluZyA9IHNpemVvZihwcmVm
aXhbMF0pID4gMTsKKyAgY29uc3QgY2hhciogY29uc3QgYmVnaW5fc3RyaW5nX3F1b3RlID0gaXNf
d2lkZV9zdHJpbmcgPyAiTFwiIiA6ICJcIiI7CisgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkK
KyAgICAgIDw8IGJlZ2luX3N0cmluZ19xdW90ZSA8PCBwcmVmaXggPDwgIlwiIGlzIG5vdCBhIHBy
ZWZpeCBvZiAiCisgICAgICA8PCBiZWdpbl9zdHJpbmdfcXVvdGUgPDwgc3RyIDw8ICJcIlxuIjsK
K30KKworLy8gVGVzdHMgcHJpbnRpbmcgbWVtYmVyIHZhcmlhYmxlIHBvaW50ZXJzLiAgQWx0aG91
Z2ggdGhleSBhcmUgY2FsbGVkCisvLyBwb2ludGVycywgdGhleSBkb24ndCBwb2ludCB0byBhIGxv
Y2F0aW9uIGluIHRoZSBhZGRyZXNzIHNwYWNlLgorLy8gVGhlaXIgcmVwcmVzZW50YXRpb24gaXMg
aW1wbGVtZW50YXRpb24tZGVmaW5lZC4gIFRodXMgdGhleSB3aWxsIGJlCisvLyBwcmludGVkIGFz
IHJhdyBieXRlcy4KKworc3RydWN0IEZvbyB7CisgcHVibGljOgorICB2aXJ0dWFsIH5Gb28oKSB7
fQorICBpbnQgTXlNZXRob2QoY2hhciB4KSB7IHJldHVybiB4ICsgMTsgfQorICB2aXJ0dWFsIGNo
YXIgTXlWaXJ0dWFsTWV0aG9kKGludCAvKiBuICovKSB7IHJldHVybiAnYSc7IH0KKworICBpbnQg
dmFsdWU7Cit9OworCitURVNUKFByaW50UG9pbnRlclRlc3QsIE1lbWJlclZhcmlhYmxlUG9pbnRl
cikgeworICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoUHJpbnQoJkZvbzo6dmFsdWUpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgUHJpbnQoc2l6ZW9mKCZGb286OnZhbHVlKSkgKyAiLWJ5dGUgb2Jq
ZWN0ICIpKTsKKyAgaW50IEZvbzo6KnAgPSBOVUxMOyAgLy8gTk9MSU5UCisgIEVYUEVDVF9UUlVF
KEhhc1ByZWZpeChQcmludChwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFByaW50KHNpemVv
ZihwKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKK30KKworLy8gVGVzdHMgcHJpbnRpbmcgbWVtYmVy
IGZ1bmN0aW9uIHBvaW50ZXJzLiAgQWx0aG91Z2ggdGhleSBhcmUgY2FsbGVkCisvLyBwb2ludGVy
cywgdGhleSBkb24ndCBwb2ludCB0byBhIGxvY2F0aW9uIGluIHRoZSBhZGRyZXNzIHNwYWNlLgor
Ly8gVGhlaXIgcmVwcmVzZW50YXRpb24gaXMgaW1wbGVtZW50YXRpb24tZGVmaW5lZC4gIFRodXMg
dGhleSB3aWxsIGJlCisvLyBwcmludGVkIGFzIHJhdyBieXRlcy4KK1RFU1QoUHJpbnRQb2ludGVy
VGVzdCwgTWVtYmVyRnVuY3Rpb25Qb2ludGVyKSB7CisgIEVYUEVDVF9UUlVFKEhhc1ByZWZpeChQ
cmludCgmRm9vOjpNeU1ldGhvZCksCisgICAgICAgICAgICAgICAgICAgICAgICBQcmludChzaXpl
b2YoJkZvbzo6TXlNZXRob2QpKSArICItYnl0ZSBvYmplY3QgIikpOworICBFWFBFQ1RfVFJVRSgK
KyAgICAgIEhhc1ByZWZpeChQcmludCgmRm9vOjpNeVZpcnR1YWxNZXRob2QpLAorICAgICAgICAg
ICAgICAgIFByaW50KHNpemVvZigoJkZvbzo6TXlWaXJ0dWFsTWV0aG9kKSkpICsgIi1ieXRlIG9i
amVjdCAiKSk7CisgIGludCAoRm9vOjoqcCkoY2hhcikgPSBOVUxMOyAgLy8gTk9MSU5UCisgIEVY
UEVDVF9UUlVFKEhhc1ByZWZpeChQcmludChwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBy
aW50KHNpemVvZihwKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKK30KKworLy8gVGVzdHMgcHJpbnRp
bmcgQyBhcnJheXMuCisKKy8vIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBhbmQgUHJpbnQo
KSBpcyB0aGF0IGl0IGVuc3VyZXMgdGhhdCB0aGUKKy8vIGFyZ3VtZW50IGlzIGEgcmVmZXJlbmNl
IHRvIGFuIGFycmF5LgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgorc3RkOjpzdHJp
bmcgUHJpbnRBcnJheUhlbHBlcihUICgmYSlbTl0pIHsKKyAgcmV0dXJuIFByaW50KGEpOworfQor
CisvLyBPbmUtZGltZW5zaW9uYWwgYXJyYXkuCitURVNUKFByaW50QXJyYXlUZXN0LCBPbmVEaW1l
bnNpb25hbEFycmF5KSB7CisgIGludCBhWzVdID0geyAxLCAyLCAzLCA0LCA1IH07CisgIEVYUEVD
VF9FUSgieyAxLCAyLCAzLCA0LCA1IH0iLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8g
VHdvLWRpbWVuc2lvbmFsIGFycmF5LgorVEVTVChQcmludEFycmF5VGVzdCwgVHdvRGltZW5zaW9u
YWxBcnJheSkgeworICBpbnQgYVsyXVs1XSA9IHsKKyAgICB7IDEsIDIsIDMsIDQsIDUgfSwKKyAg
ICB7IDYsIDcsIDgsIDksIDAgfQorICB9OworICBFWFBFQ1RfRVEoInsgeyAxLCAyLCAzLCA0LCA1
IH0sIHsgNiwgNywgOCwgOSwgMCB9IH0iLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8g
QXJyYXkgb2YgY29uc3QgZWxlbWVudHMuCitURVNUKFByaW50QXJyYXlUZXN0LCBDb25zdEFycmF5
KSB7CisgIGNvbnN0IGJvb2wgYVsxXSA9IHsgZmFsc2UgfTsKKyAgRVhQRUNUX0VRKCJ7IGZhbHNl
IH0iLCBQcmludEFycmF5SGVscGVyKGEpKTsKK30KKworLy8gY2hhciBhcnJheSB3aXRob3V0IHRl
cm1pbmF0aW5nIE5VTC4KK1RFU1QoUHJpbnRBcnJheVRlc3QsIENoYXJBcnJheVdpdGhOb1Rlcm1p
bmF0aW5nTnVsKSB7CisgIC8vIEFycmF5IGEgY29udGFpbnMgJ1wwJyBpbiB0aGUgbWlkZGxlIGFu
ZCBkb2Vzbid0IGVuZCB3aXRoICdcMCcuCisgIGNoYXIgYVtdID0geyAnSCcsICdcMCcsICdpJyB9
OworICBFWFBFQ1RfRVEoIlwiSFxcMGlcIiAobm8gdGVybWluYXRpbmcgTlVMKSIsIFByaW50QXJy
YXlIZWxwZXIoYSkpOworfQorCisvLyBjb25zdCBjaGFyIGFycmF5IHdpdGggdGVybWluYXRpbmcg
TlVMLgorVEVTVChQcmludEFycmF5VGVzdCwgQ29uc3RDaGFyQXJyYXlXaXRoVGVybWluYXRpbmdO
dWwpIHsKKyAgY29uc3QgY2hhciBhW10gPSAiXDBIaSI7CisgIEVYUEVDVF9FUSgiXCJcXDBIaVwi
IiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIGNvbnN0IHdjaGFyX3QgYXJyYXkgd2l0
aG91dCB0ZXJtaW5hdGluZyBOVUwuCitURVNUKFByaW50QXJyYXlUZXN0LCBXQ2hhckFycmF5V2l0
aE5vVGVybWluYXRpbmdOdWwpIHsKKyAgLy8gQXJyYXkgYSBjb250YWlucyAnXDAnIGluIHRoZSBt
aWRkbGUgYW5kIGRvZXNuJ3QgZW5kIHdpdGggJ1wwJy4KKyAgY29uc3Qgd2NoYXJfdCBhW10gPSB7
IEwnSCcsIEwnXDAnLCBMJ2knIH07CisgIEVYUEVDVF9FUSgiTFwiSFxcMGlcIiAobm8gdGVybWlu
YXRpbmcgTlVMKSIsIFByaW50QXJyYXlIZWxwZXIoYSkpOworfQorCisvLyB3Y2hhcl90IGFycmF5
IHdpdGggdGVybWluYXRpbmcgTlVMLgorVEVTVChQcmludEFycmF5VGVzdCwgV0NvbnN0Q2hhckFy
cmF5V2l0aFRlcm1pbmF0aW5nTnVsKSB7CisgIGNvbnN0IHdjaGFyX3QgYVtdID0gTCJcMEhpIjsK
KyAgRVhQRUNUX0VRKCJMXCJcXDBIaVwiIiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8v
IEFycmF5IG9mIG9iamVjdHMuCitURVNUKFByaW50QXJyYXlUZXN0LCBPYmplY3RBcnJheSkgewor
ICBzdGQ6OnN0cmluZyBhWzNdID0geyJIaSIsICJIZWxsbyIsICJOaSBoYW8ifTsKKyAgRVhQRUNU
X0VRKCJ7IFwiSGlcIiwgXCJIZWxsb1wiLCBcIk5pIGhhb1wiIH0iLCBQcmludEFycmF5SGVscGVy
KGEpKTsKK30KKworLy8gQXJyYXkgd2l0aCBtYW55IGVsZW1lbnRzLgorVEVTVChQcmludEFycmF5
VGVzdCwgQmlnQXJyYXkpIHsKKyAgaW50IGFbMTAwXSA9IHsgMSwgMiwgMyB9OworICBFWFBFQ1Rf
RVEoInsgMSwgMiwgMywgMCwgMCwgMCwgMCwgMCwgLi4uLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
IH0iLAorICAgICAgICAgICAgUHJpbnRBcnJheUhlbHBlcihhKSk7Cit9CisKKy8vIFRlc3RzIHBy
aW50aW5nIDo6c3RyaW5nIGFuZCA6OnN0ZDo6c3RyaW5nLgorCisjaWYgR1RFU1RfSEFTX0dMT0JB
TF9TVFJJTkcKKy8vIDo6c3RyaW5nLgorVEVTVChQcmludFN0cmluZ1Rlc3QsIFN0cmluZ0luR2xv
YmFsTmFtZXNwYWNlKSB7CisgIGNvbnN0IGNoYXIgc1tdID0gIidcIj9cXFxhXGJcZlxuXDBcclx0
XHZceDdGXHhGRiBhIjsKKyAgY29uc3QgOjpzdHJpbmcgc3RyKHMsIHNpemVvZihzKSk7CisgIEVY
UEVDVF9FUSgiXCInXFxcIj9cXFxcXFxhXFxiXFxmXFxuXFwwXFxyXFx0XFx2XFx4N0ZcXHhGRiBh
XFwwXCIiLAorICAgICAgICAgICAgUHJpbnQoc3RyKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hB
U19HTE9CQUxfU1RSSU5HCisKKy8vIDo6c3RkOjpzdHJpbmcuCitURVNUKFByaW50U3RyaW5nVGVz
dCwgU3RyaW5nSW5TdGROYW1lc3BhY2UpIHsKKyAgY29uc3QgY2hhciBzW10gPSAiJ1wiP1xcXGFc
YlxmXG5cMFxyXHRcdlx4N0ZceEZGIGEiOworICBjb25zdCA6OnN0ZDo6c3RyaW5nIHN0cihzLCBz
aXplb2YocykpOworICBFWFBFQ1RfRVEoIlwiJ1xcXCI/XFxcXFxcYVxcYlxcZlxcblxcMFxcclxc
dFxcdlxceDdGXFx4RkYgYVxcMFwiIiwKKyAgICAgICAgICAgIFByaW50KHN0cikpOworfQorCitU
RVNUKFByaW50U3RyaW5nVGVzdCwgU3RyaW5nQW1iaWd1b3VzSGV4KSB7CisgIC8vICJceDZCQU5B
TkEiIGlzIGFtYmlndW91cywgaXQgY2FuIGJlIGludGVycHJldGVkIGFzIHN0YXJ0aW5nIHdpdGgg
ZWl0aGVyIG9mOgorICAvLyAnXHg2JywgJ1x4NkInLCBvciAnXHg2QkEnLgorCisgIC8vIGEgaGV4
IGVzY2FwaW5nIHNlcXVlbmNlIGZvbGxvd2luZyBieSBhIGRlY2ltYWwgZGlnaXQKKyAgRVhQRUNU
X0VRKCJcIjBcXHgxMlwiIFwiM1wiIiwgUHJpbnQoOjpzdGQ6OnN0cmluZygiMFx4MTIiICIzIikp
KTsKKyAgLy8gYSBoZXggZXNjYXBpbmcgc2VxdWVuY2UgZm9sbG93aW5nIGJ5IGEgaGV4IGRpZ2l0
IChsb3dlci1jYXNlKQorICBFWFBFQ1RfRVEoIlwibW1cXHg2XCIgXCJiYW5hbmFzXCIiLCBQcmlu
dCg6OnN0ZDo6c3RyaW5nKCJtbVx4NiIgImJhbmFuYXMiKSkpOworICAvLyBhIGhleCBlc2NhcGlu
ZyBzZXF1ZW5jZSBmb2xsb3dpbmcgYnkgYSBoZXggZGlnaXQgKHVwcGVyLWNhc2UpCisgIEVYUEVD
VF9FUSgiXCJOT01cXHg2XCIgXCJCQU5BTkFcIiIsIFByaW50KDo6c3RkOjpzdHJpbmcoIk5PTVx4
NiIgIkJBTkFOQSIpKSk7CisgIC8vIGEgaGV4IGVzY2FwaW5nIHNlcXVlbmNlIGZvbGxvd2luZyBi
eSBhIG5vbi14ZGlnaXQKKyAgRVhQRUNUX0VRKCJcIiFcXHg1LSFcIiIsIFByaW50KDo6c3RkOjpz
dHJpbmcoIiFceDUtISIpKSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5nIDo6d3N0cmluZyBhbmQg
OjpzdGQ6OndzdHJpbmcuCisKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKKy8vIDo6d3N0
cmluZy4KK1RFU1QoUHJpbnRXaWRlU3RyaW5nVGVzdCwgU3RyaW5nSW5HbG9iYWxOYW1lc3BhY2Up
IHsKKyAgY29uc3Qgd2NoYXJfdCBzW10gPSBMIidcIj9cXFxhXGJcZlxuXDBcclx0XHZceEQzXHg1
NzZceDhEM1x4Qzc0RCBhIjsKKyAgY29uc3QgOjp3c3RyaW5nIHN0cihzLCBzaXplb2Yocykvc2l6
ZW9mKHdjaGFyX3QpKTsKKyAgRVhQRUNUX0VRKCJMXCInXFxcIj9cXFxcXFxhXFxiXFxmXFxuXFww
XFxyXFx0XFx2IgorICAgICAgICAgICAgIlxceEQzXFx4NTc2XFx4OEQzXFx4Qzc0RCBhXFwwXCIi
LAorICAgICAgICAgICAgUHJpbnQoc3RyKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19HTE9C
QUxfV1NUUklORworCisjaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCisvLyA6OnN0ZDo6d3N0cmlu
Zy4KK1RFU1QoUHJpbnRXaWRlU3RyaW5nVGVzdCwgU3RyaW5nSW5TdGROYW1lc3BhY2UpIHsKKyAg
Y29uc3Qgd2NoYXJfdCBzW10gPSBMIidcIj9cXFxhXGJcZlxuXDBcclx0XHZceEQzXHg1NzZceDhE
M1x4Qzc0RCBhIjsKKyAgY29uc3QgOjpzdGQ6OndzdHJpbmcgc3RyKHMsIHNpemVvZihzKS9zaXpl
b2Yod2NoYXJfdCkpOworICBFWFBFQ1RfRVEoIkxcIidcXFwiP1xcXFxcXGFcXGJcXGZcXG5cXDBc
XHJcXHRcXHYiCisgICAgICAgICAgICAiXFx4RDNcXHg1NzZcXHg4RDNcXHhDNzREIGFcXDBcIiIs
CisgICAgICAgICAgICBQcmludChzdHIpKTsKK30KKworVEVTVChQcmludFdpZGVTdHJpbmdUZXN0
LCBTdHJpbmdBbWJpZ3VvdXNIZXgpIHsKKyAgLy8gc2FtZSBmb3Igd2lkZSBzdHJpbmdzLgorICBF
WFBFQ1RfRVEoIkxcIjBcXHgxMlwiIExcIjNcIiIsIFByaW50KDo6c3RkOjp3c3RyaW5nKEwiMFx4
MTIiIEwiMyIpKSk7CisgIEVYUEVDVF9FUSgiTFwibW1cXHg2XCIgTFwiYmFuYW5hc1wiIiwKKyAg
ICAgICAgICAgIFByaW50KDo6c3RkOjp3c3RyaW5nKEwibW1ceDYiIEwiYmFuYW5hcyIpKSk7Cisg
IEVYUEVDVF9FUSgiTFwiTk9NXFx4NlwiIExcIkJBTkFOQVwiIiwKKyAgICAgICAgICAgIFByaW50
KDo6c3RkOjp3c3RyaW5nKEwiTk9NXHg2IiBMIkJBTkFOQSIpKSk7CisgIEVYUEVDVF9FUSgiTFwi
IVxceDUtIVwiIiwgUHJpbnQoOjpzdGQ6OndzdHJpbmcoTCIhXHg1LSEiKSkpOworfQorI2VuZGlm
ICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKKworLy8gVGVzdHMgcHJpbnRpbmcgdHlwZXMgdGhh
dCBzdXBwb3J0IGdlbmVyaWMgc3RyZWFtaW5nIChpLmUuIHN0cmVhbWluZworLy8gdG8gc3RkOjpi
YXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+IGZvciBhbnkgdmFsaWQgQ2hhciBhbmQKKy8v
IENoYXJUcmFpdHMgdHlwZXMpLgorCisvLyBUZXN0cyBwcmludGluZyBhIG5vbi10ZW1wbGF0ZSB0
eXBlIHRoYXQgc3VwcG9ydHMgZ2VuZXJpYyBzdHJlYW1pbmcuCisKK2NsYXNzIEFsbG93c0dlbmVy
aWNTdHJlYW1pbmcge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyLCB0eXBlbmFtZSBDaGFy
VHJhaXRzPgorc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcGVyYXRvcjw8
KAorICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYgb3MsCisgICAgY29u
c3QgQWxsb3dzR2VuZXJpY1N0cmVhbWluZyYgLyogYSAqLykgeworICByZXR1cm4gb3MgPDwgIkFs
bG93c0dlbmVyaWNTdHJlYW1pbmciOworfQorCitURVNUKFByaW50VHlwZVdpdGhHZW5lcmljU3Ry
ZWFtaW5nVGVzdCwgTm9uVGVtcGxhdGVUeXBlKSB7CisgIEFsbG93c0dlbmVyaWNTdHJlYW1pbmcg
YTsKKyAgRVhQRUNUX0VRKCJBbGxvd3NHZW5lcmljU3RyZWFtaW5nIiwgUHJpbnQoYSkpOworfQor
CisvLyBUZXN0cyBwcmludGluZyBhIHRlbXBsYXRlIHR5cGUgdGhhdCBzdXBwb3J0cyBnZW5lcmlj
IHN0cmVhbWluZy4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBBbGxvd3NHZW5lcmlj
U3RyZWFtaW5nVGVtcGxhdGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyLCB0eXBlbmFt
ZSBDaGFyVHJhaXRzLCB0eXBlbmFtZSBUPgorc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJU
cmFpdHM+JiBvcGVyYXRvcjw8KAorICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJh
aXRzPiYgb3MsCisgICAgY29uc3QgQWxsb3dzR2VuZXJpY1N0cmVhbWluZ1RlbXBsYXRlPFQ+JiAv
KiBhICovKSB7CisgIHJldHVybiBvcyA8PCAiQWxsb3dzR2VuZXJpY1N0cmVhbWluZ1RlbXBsYXRl
IjsKK30KKworVEVTVChQcmludFR5cGVXaXRoR2VuZXJpY1N0cmVhbWluZ1Rlc3QsIFRlbXBsYXRl
VHlwZSkgeworICBBbGxvd3NHZW5lcmljU3RyZWFtaW5nVGVtcGxhdGU8aW50PiBhOworICBFWFBF
Q1RfRVEoIkFsbG93c0dlbmVyaWNTdHJlYW1pbmdUZW1wbGF0ZSIsIFByaW50KGEpKTsKK30KKwor
Ly8gVGVzdHMgcHJpbnRpbmcgYSB0eXBlIHRoYXQgc3VwcG9ydHMgZ2VuZXJpYyBzdHJlYW1pbmcg
YW5kIGNhbiBiZQorLy8gaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYW5vdGhlciBwcmludGFibGUg
dHlwZS4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBBbGxvd3NHZW5lcmljU3RyZWFt
aW5nQW5kSW1wbGljaXRDb252ZXJzaW9uVGVtcGxhdGUgeworIHB1YmxpYzoKKyAgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhciwgdHlwZW5hbWUgQ2hhclRyYWl0cywgdHlwZW5hbWUgVD4KK3N0ZDo6YmFzaWNfb3N0cmVh
bTxDaGFyLCBDaGFyVHJhaXRzPiYgb3BlcmF0b3I8PCgKKyAgICBzdGQ6OmJhc2ljX29zdHJlYW08
Q2hhciwgQ2hhclRyYWl0cz4mIG9zLAorICAgIGNvbnN0IEFsbG93c0dlbmVyaWNTdHJlYW1pbmdB
bmRJbXBsaWNpdENvbnZlcnNpb25UZW1wbGF0ZTxUPiYgLyogYSAqLykgeworICByZXR1cm4gb3Mg
PDwgIkFsbG93c0dlbmVyaWNTdHJlYW1pbmdBbmRJbXBsaWNpdENvbnZlcnNpb25UZW1wbGF0ZSI7
Cit9CisKK1RFU1QoUHJpbnRUeXBlV2l0aEdlbmVyaWNTdHJlYW1pbmdUZXN0LCBUeXBlSW1wbGlj
aXRseUNvbnZlcnRpYmxlKSB7CisgIEFsbG93c0dlbmVyaWNTdHJlYW1pbmdBbmRJbXBsaWNpdENv
bnZlcnNpb25UZW1wbGF0ZTxpbnQ+IGE7CisgIEVYUEVDVF9FUSgiQWxsb3dzR2VuZXJpY1N0cmVh
bWluZ0FuZEltcGxpY2l0Q29udmVyc2lvblRlbXBsYXRlIiwgUHJpbnQoYSkpOworfQorCisjaWYg
R1RFU1RfSEFTX0FCU0wKKworLy8gVGVzdHMgcHJpbnRpbmcgOjphYnNsOjpzdHJpbmdfdmlldy4K
KworVEVTVChQcmludFN0cmluZ1ZpZXdUZXN0LCBTaW1wbGVTdHJpbmdWaWV3KSB7CisgIGNvbnN0
IDo6YWJzbDo6c3RyaW5nX3ZpZXcgc3AgPSAiSGVsbG8iOworICBFWFBFQ1RfRVEoIlwiSGVsbG9c
IiIsIFByaW50KHNwKSk7Cit9CisKK1RFU1QoUHJpbnRTdHJpbmdWaWV3VGVzdCwgVW5wcmludGFi
bGVDaGFyYWN0ZXJzKSB7CisgIGNvbnN0IGNoYXIgc3RyW10gPSAiTlVMIChcMCkgYW5kIFxyXHQi
OworICBjb25zdCA6OmFic2w6OnN0cmluZ192aWV3IHNwKHN0ciwgc2l6ZW9mKHN0cikgLSAxKTsK
KyAgRVhQRUNUX0VRKCJcIk5VTCAoXFwwKSBhbmQgXFxyXFx0XCIiLCBQcmludChzcCkpOworfQor
CisjZW5kaWYgIC8vIEdURVNUX0hBU19BQlNMCisKKy8vIFRlc3RzIHByaW50aW5nIFNUTCBjb250
YWluZXJzLgorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgRW1wdHlEZXF1ZSkgeworICBk
ZXF1ZTxjaGFyPiBlbXB0eTsKKyAgRVhQRUNUX0VRKCJ7fSIsIFByaW50KGVtcHR5KSk7Cit9CisK
K1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBOb25FbXB0eURlcXVlKSB7CisgIGRlcXVlPGlu
dD4gbm9uX2VtcHR5OworICBub25fZW1wdHkucHVzaF9iYWNrKDEpOworICBub25fZW1wdHkucHVz
aF9iYWNrKDMpOworICBFWFBFQ1RfRVEoInsgMSwgMyB9IiwgUHJpbnQobm9uX2VtcHR5KSk7Cit9
CisKKyNpZiBHVEVTVF9IQVNfVU5PUkRFUkVEX01BUF8KKworVEVTVChQcmludFN0bENvbnRhaW5l
clRlc3QsIE9uZUVsZW1lbnRIYXNoTWFwKSB7CisgIDo6c3RkOjp1bm9yZGVyZWRfbWFwPGludCwg
Y2hhcj4gbWFwMTsKKyAgbWFwMVsxXSA9ICdhJzsKKyAgRVhQRUNUX0VRKCJ7ICgxLCAnYScgKDk3
LCAweDYxKSkgfSIsIFByaW50KG1hcDEpKTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRl
c3QsIEhhc2hNdWx0aU1hcCkgeworICA6OnN0ZDo6dW5vcmRlcmVkX211bHRpbWFwPGludCwgYm9v
bD4gbWFwMTsKKyAgbWFwMS5pbnNlcnQobWFrZV9wYWlyKDUsIHRydWUpKTsKKyAgbWFwMS5pbnNl
cnQobWFrZV9wYWlyKDUsIGZhbHNlKSk7CisKKyAgLy8gRWxlbWVudHMgb2YgaGFzaF9tdWx0aW1h
cCBjYW4gYmUgcHJpbnRlZCBpbiBhbnkgb3JkZXIuCisgIGNvbnN0IHN0ZDo6c3RyaW5nIHJlc3Vs
dCA9IFByaW50KG1hcDEpOworICBFWFBFQ1RfVFJVRShyZXN1bHQgPT0gInsgKDUsIHRydWUpLCAo
NSwgZmFsc2UpIH0iIHx8CisgICAgICAgICAgICAgIHJlc3VsdCA9PSAieyAoNSwgZmFsc2UpLCAo
NSwgdHJ1ZSkgfSIpCisgICAgICAgICAgICAgICAgICA8PCAiIHdoZXJlIFByaW50KG1hcDEpIHJl
dHVybnMgXCIiIDw8IHJlc3VsdCA8PCAiXCIuIjsKK30KKworI2VuZGlmICAvLyBHVEVTVF9IQVNf
VU5PUkRFUkVEX01BUF8KKworI2lmIEdURVNUX0hBU19VTk9SREVSRURfU0VUXworCitURVNUKFBy
aW50U3RsQ29udGFpbmVyVGVzdCwgSGFzaFNldCkgeworICA6OnN0ZDo6dW5vcmRlcmVkX3NldDxp
bnQ+IHNldDE7CisgIHNldDEuaW5zZXJ0KDEpOworICBFWFBFQ1RfRVEoInsgMSB9IiwgUHJpbnQo
c2V0MSkpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgSGFzaE11bHRpU2V0KSB7
CisgIGNvbnN0IGludCBrU2l6ZSA9IDU7CisgIGludCBhW2tTaXplXSA9IHsgMSwgMSwgMiwgNSwg
MSB9OworICA6OnN0ZDo6dW5vcmRlcmVkX211bHRpc2V0PGludD4gc2V0MShhLCBhICsga1NpemUp
OworCisgIC8vIEVsZW1lbnRzIG9mIGhhc2hfbXVsdGlzZXQgY2FuIGJlIHByaW50ZWQgaW4gYW55
IG9yZGVyLgorICBjb25zdCBzdGQ6OnN0cmluZyByZXN1bHQgPSBQcmludChzZXQxKTsKKyAgY29u
c3Qgc3RkOjpzdHJpbmcgZXhwZWN0ZWRfcGF0dGVybiA9ICJ7IGQsIGQsIGQsIGQsIGQgfSI7ICAv
LyBkIG1lYW5zIGEgZGlnaXQuCisKKyAgLy8gVmVyaWZpZXMgdGhlIHJlc3VsdCBtYXRjaGVzIHRo
ZSBleHBlY3RlZCBwYXR0ZXJuOyBhbHNvIGV4dHJhY3RzCisgIC8vIHRoZSBudW1iZXJzIGluIHRo
ZSByZXN1bHQuCisgIEFTU0VSVF9FUShleHBlY3RlZF9wYXR0ZXJuLmxlbmd0aCgpLCByZXN1bHQu
bGVuZ3RoKCkpOworICBzdGQ6OnZlY3RvcjxpbnQ+IG51bWJlcnM7CisgIGZvciAoc2l6ZV90IGkg
PSAwOyBpICE9IHJlc3VsdC5sZW5ndGgoKTsgaSsrKSB7CisgICAgaWYgKGV4cGVjdGVkX3BhdHRl
cm5baV0gPT0gJ2QnKSB7CisgICAgICBBU1NFUlRfTkUoaXNkaWdpdChzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyPihyZXN1bHRbaV0pKSwgMCk7CisgICAgICBudW1iZXJzLnB1c2hfYmFjayhyZXN1
bHRbaV0gLSAnMCcpOworICAgIH0gZWxzZSB7CisgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRfcGF0
dGVybltpXSwgcmVzdWx0W2ldKSA8PCAiIHdoZXJlIHJlc3VsdCBpcyAiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCByZXN1bHQ7CisgICAgfQorICB9
CisKKyAgLy8gTWFrZXMgc3VyZSB0aGUgcmVzdWx0IGNvbnRhaW5zIHRoZSByaWdodCBudW1iZXJz
LgorICBzdGQ6OnNvcnQobnVtYmVycy5iZWdpbigpLCBudW1iZXJzLmVuZCgpKTsKKyAgc3RkOjpz
b3J0KGEsIGEgKyBrU2l6ZSk7CisgIEVYUEVDVF9UUlVFKHN0ZDo6ZXF1YWwoYSwgYSArIGtTaXpl
LCBudW1iZXJzLmJlZ2luKCkpKTsKK30KKworI2VuZGlmICAvLyAgR1RFU1RfSEFTX1VOT1JERVJF
RF9TRVRfCisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBMaXN0KSB7CisgIGNvbnN0IHN0
ZDo6c3RyaW5nIGFbXSA9IHsiaGVsbG8iLCAid29ybGQifTsKKyAgY29uc3QgbGlzdDxzdGQ6OnN0
cmluZz4gc3RyaW5ncyhhLCBhICsgMik7CisgIEVYUEVDVF9FUSgieyBcImhlbGxvXCIsIFwid29y
bGRcIiB9IiwgUHJpbnQoc3RyaW5ncykpOworfQorCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVz
dCwgTWFwKSB7CisgIG1hcDxpbnQsIGJvb2w+IG1hcDE7CisgIG1hcDFbMV0gPSB0cnVlOworICBt
YXAxWzVdID0gZmFsc2U7CisgIG1hcDFbM10gPSB0cnVlOworICBFWFBFQ1RfRVEoInsgKDEsIHRy
dWUpLCAoMywgdHJ1ZSksICg1LCBmYWxzZSkgfSIsIFByaW50KG1hcDEpKTsKK30KKworVEVTVChQ
cmludFN0bENvbnRhaW5lclRlc3QsIE11bHRpTWFwKSB7CisgIG11bHRpbWFwPGJvb2wsIGludD4g
bWFwMTsKKyAgLy8gVGhlIG1ha2VfcGFpciB0ZW1wbGF0ZSBmdW5jdGlvbiB3b3VsZCBkZWR1Y2Ug
dGhlIHR5cGUgYXMKKyAgLy8gcGFpcjxib29sLCBpbnQ+IGhlcmUsIGFuZCBzaW5jZSB0aGUga2V5
IHBhcnQgaW4gYSBtdWx0aW1hcCBoYXMgdG8KKyAgLy8gYmUgY29uc3RhbnQsIHdpdGhvdXQgYSB0
ZW1wbGF0ZWQgY3RvciBpbiB0aGUgcGFpciBjbGFzcyAoYXMgaW4KKyAgLy8gbGliQ3N0ZCBvbiBT
b2xhcmlzKSwgbWFrZV9wYWlyIGNhbGwgd291bGQgZmFpbCB0byBjb21waWxlIGFzIG5vCisgIC8v
IGltcGxpY2l0IGNvbnZlcnNpb24gaXMgZm91bmQuICBUaHVzIGV4cGxpY2l0IHR5cGVuYW1lIGlz
IHVzZWQKKyAgLy8gaGVyZSBpbnN0ZWFkLgorICBtYXAxLmluc2VydChwYWlyPGNvbnN0IGJvb2ws
IGludD4odHJ1ZSwgMCkpOworICBtYXAxLmluc2VydChwYWlyPGNvbnN0IGJvb2wsIGludD4odHJ1
ZSwgMSkpOworICBtYXAxLmluc2VydChwYWlyPGNvbnN0IGJvb2wsIGludD4oZmFsc2UsIDIpKTsK
KyAgRVhQRUNUX0VRKCJ7IChmYWxzZSwgMiksICh0cnVlLCAwKSwgKHRydWUsIDEpIH0iLCBQcmlu
dChtYXAxKSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBTZXQpIHsKKyAgY29u
c3QgdW5zaWduZWQgaW50IGFbXSA9IHsgMywgMCwgNSB9OworICBzZXQ8dW5zaWduZWQgaW50PiBz
ZXQxKGEsIGEgKyAzKTsKKyAgRVhQRUNUX0VRKCJ7IDAsIDMsIDUgfSIsIFByaW50KHNldDEpKTsK
K30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIE11bHRpU2V0KSB7CisgIGNvbnN0IGlu
dCBhW10gPSB7IDEsIDEsIDIsIDUsIDEgfTsKKyAgbXVsdGlzZXQ8aW50PiBzZXQxKGEsIGEgKyA1
KTsKKyAgRVhQRUNUX0VRKCJ7IDEsIDEsIDEsIDIsIDUgfSIsIFByaW50KHNldDEpKTsKK30KKwor
I2lmIEdURVNUX0hBU19TVERfRk9SV0FSRF9MSVNUXworCitURVNUKFByaW50U3RsQ29udGFpbmVy
VGVzdCwgU2luZ2x5TGlua2VkTGlzdCkgeworICBpbnQgYVtdID0geyA5LCAyLCA4IH07CisgIGNv
bnN0IHN0ZDo6Zm9yd2FyZF9saXN0PGludD4gaW50cyhhLCBhICsgMyk7CisgIEVYUEVDVF9FUSgi
eyA5LCAyLCA4IH0iLCBQcmludChpbnRzKSk7Cit9CisjZW5kaWYgIC8vIEdURVNUX0hBU19TVERf
Rk9SV0FSRF9MSVNUXworCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgUGFpcikgeworICBw
YWlyPGNvbnN0IGJvb2wsIGludD4gcCh0cnVlLCA1KTsKKyAgRVhQRUNUX0VRKCIodHJ1ZSwgNSki
LCBQcmludChwKSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBWZWN0b3IpIHsK
KyAgdmVjdG9yPGludD4gdjsKKyAgdi5wdXNoX2JhY2soMSk7CisgIHYucHVzaF9iYWNrKDIpOwor
ICBFWFBFQ1RfRVEoInsgMSwgMiB9IiwgUHJpbnQodikpOworfQorCitURVNUKFByaW50U3RsQ29u
dGFpbmVyVGVzdCwgTG9uZ1NlcXVlbmNlKSB7CisgIGNvbnN0IGludCBhWzEwMF0gPSB7IDEsIDIs
IDMgfTsKKyAgY29uc3QgdmVjdG9yPGludD4gdihhLCBhICsgMTAwKTsKKyAgRVhQRUNUX0VRKCJ7
IDEsIDIsIDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsICIKKyAg
ICAgICAgICAgICIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAu
Li4gfSIsIFByaW50KHYpKTsKK30KKworVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIE5lc3Rl
ZENvbnRhaW5lcikgeworICBjb25zdCBpbnQgYTFbXSA9IHsgMSwgMiB9OworICBjb25zdCBpbnQg
YTJbXSA9IHsgMywgNCwgNSB9OworICBjb25zdCBsaXN0PGludD4gbDEoYTEsIGExICsgMik7Cisg
IGNvbnN0IGxpc3Q8aW50PiBsMihhMiwgYTIgKyAzKTsKKworICB2ZWN0b3I8bGlzdDxpbnQ+ID4g
djsKKyAgdi5wdXNoX2JhY2sobDEpOworICB2LnB1c2hfYmFjayhsMik7CisgIEVYUEVDVF9FUSgi
eyB7IDEsIDIgfSwgeyAzLCA0LCA1IH0gfSIsIFByaW50KHYpKTsKK30KKworVEVTVChQcmludFN0
bENvbnRhaW5lclRlc3QsIE9uZURpbWVuc2lvbmFsTmF0aXZlQXJyYXkpIHsKKyAgY29uc3QgaW50
IGFbM10gPSB7IDEsIDIsIDMgfTsKKyAgTmF0aXZlQXJyYXk8aW50PiBiKGEsIDMsIFJlbGF0aW9u
VG9Tb3VyY2VSZWZlcmVuY2UoKSk7CisgIEVYUEVDVF9FUSgieyAxLCAyLCAzIH0iLCBQcmludChi
KSk7Cit9CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBUd29EaW1lbnNpb25hbE5hdGl2
ZUFycmF5KSB7CisgIGNvbnN0IGludCBhWzJdWzNdID0geyB7IDEsIDIsIDMgfSwgeyA0LCA1LCA2
IH0gfTsKKyAgTmF0aXZlQXJyYXk8aW50WzNdPiBiKGEsIDIsIFJlbGF0aW9uVG9Tb3VyY2VSZWZl
cmVuY2UoKSk7CisgIEVYUEVDVF9FUSgieyB7IDEsIDIsIDMgfSwgeyA0LCA1LCA2IH0gfSIsIFBy
aW50KGIpKTsKK30KKworLy8gVGVzdHMgdGhhdCBhIGNsYXNzIG5hbWVkIGl0ZXJhdG9yIGlzbid0
IHRyZWF0ZWQgYXMgYSBjb250YWluZXIuCisKK3N0cnVjdCBpdGVyYXRvciB7CisgIGNoYXIgeDsK
K307CisKK1RFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBJdGVyYXRvcikgeworICBpdGVyYXRv
ciBpdCA9IHt9OworICBFWFBFQ1RfRVEoIjEtYnl0ZSBvYmplY3QgPDAwPiIsIFByaW50KGl0KSk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgYSBjbGFzcyBuYW1lZCBjb25zdF9pdGVyYXRvciBpc24ndCB0
cmVhdGVkIGFzIGEgY29udGFpbmVyLgorCitzdHJ1Y3QgY29uc3RfaXRlcmF0b3IgeworICBjaGFy
IHg7Cit9OworCitURVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgQ29uc3RJdGVyYXRvcikgewor
ICBjb25zdF9pdGVyYXRvciBpdCA9IHt9OworICBFWFBFQ1RfRVEoIjEtYnl0ZSBvYmplY3QgPDAw
PiIsIFByaW50KGl0KSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCisvLyBUZXN0cyBw
cmludGluZyA6OnN0ZDo6dHIxOjp0dXBsZXMuCisKKy8vIFR1cGxlcyBvZiB2YXJpb3VzIGFyaXRp
ZXMuCitURVNUKFByaW50VHIxVHVwbGVUZXN0LCBWYXJpb3VzU2l6ZXMpIHsKKyAgOjpzdGQ6OnRy
MTo6dHVwbGU8PiB0MDsKKyAgRVhQRUNUX0VRKCIoKSIsIFByaW50KHQwKSk7CisKKyAgOjpzdGQ6
OnRyMTo6dHVwbGU8aW50PiB0MSg1KTsKKyAgRVhQRUNUX0VRKCIoNSkiLCBQcmludCh0MSkpOwor
CisgIDo6c3RkOjp0cjE6OnR1cGxlPGNoYXIsIGJvb2w+IHQyKCdhJywgdHJ1ZSk7CisgIEVYUEVD
VF9FUSgiKCdhJyAoOTcsIDB4NjEpLCB0cnVlKSIsIFByaW50KHQyKSk7CisKKyAgOjpzdGQ6OnRy
MTo6dHVwbGU8Ym9vbCwgaW50LCBpbnQ+IHQzKGZhbHNlLCAyLCAzKTsKKyAgRVhQRUNUX0VRKCIo
ZmFsc2UsIDIsIDMpIiwgUHJpbnQodDMpKTsKKworICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBp
bnQsIGludCwgaW50PiB0NChmYWxzZSwgMiwgMywgNCk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAy
LCAzLCA0KSIsIFByaW50KHQ0KSk7CisKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBp
bnQsIGludCwgYm9vbD4gdDUoZmFsc2UsIDIsIDMsIDQsIHRydWUpOworICBFWFBFQ1RfRVEoIihm
YWxzZSwgMiwgMywgNCwgdHJ1ZSkiLCBQcmludCh0NSkpOworCisgIDo6c3RkOjp0cjE6OnR1cGxl
PGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludD4gdDYoZmFsc2UsIDIsIDMsIDQsIHRydWUs
IDYpOworICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNikiLCBQcmludCh0Nikp
OworCisgIDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludCwg
aW50PiB0NygKKyAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3KTsKKyAgRVhQRUNUX0VR
KCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcpIiwgUHJpbnQodDcpKTsKKworICA6OnN0ZDo6
dHIxOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgYm9vbD4gdDgo
CisgICAgICBmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSk7CisgIEVYUEVDVF9FUSgi
KGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlKSIsIFByaW50KHQ4KSk7CisKKyAgOjpz
dGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGJvb2ws
IGludD4gdDkoCisgICAgICBmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSwgOSk7Cisg
IEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlLCA5KSIsIFByaW50
KHQ5KSk7CisKKyAgY29uc3QgY2hhciogY29uc3Qgc3RyID0gIjgiOworICAvLyBWQysrIDIwMTAn
cyBpbXBsZW1lbnRhdGlvbiBvZiB0dXBsZSBvZiBDKysweCBpcyBkZWZpY2llbnQsIHJlcXVpcmlu
ZworICAvLyBhbiBleHBsaWNpdCB0eXBlIGNhc3Qgb2YgTlVMTCB0byBiZSB1c2VkLgorICA6OnN0
ZDo6dHIxOjp0dXBsZTxib29sLCBjaGFyLCBzaG9ydCwgdGVzdGluZzo6aW50ZXJuYWw6OkludDMy
LCAgLy8gTk9MSU5UCisgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OmludGVybmFsOjpJbnQ2
NCwgZmxvYXQsIGRvdWJsZSwgY29uc3QgY2hhciosIHZvaWQqLAorICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnN0cmluZz4KKyAgICAgIHQxMChmYWxzZSwgJ2EnLCBzdGF0aWNfY2FzdDxzaG9ydD4o
MyksIDQsIDUsIDEuNUYsIC0yLjUsIHN0ciwgIC8vIE5PTElOVAorICAgICAgICAgIEltcGxpY2l0
Q2FzdF88dm9pZCo+KE5VTEwpLCAiMTAiKTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsICdhJyAoOTcs
IDB4NjEpLCAzLCA0LCA1LCAxLjUsIC0yLjUsICIgKyBQcmludFBvaW50ZXIoc3RyKSArCisgICAg
ICAgICAgICAiIHBvaW50aW5nIHRvIFwiOFwiLCBOVUxMLCBcIjEwXCIpIiwKKyAgICAgICAgICAg
IFByaW50KHQxMCkpOworfQorCisvLyBOZXN0ZWQgdHVwbGVzLgorVEVTVChQcmludFRyMVR1cGxl
VGVzdCwgTmVzdGVkVHVwbGUpIHsKKyAgOjpzdGQ6OnRyMTo6dHVwbGU8IDo6c3RkOjp0cjE6OnR1
cGxlPGludCwgYm9vbD4sIGNoYXI+IG5lc3RlZCgKKyAgICAgIDo6c3RkOjp0cjE6Om1ha2VfdHVw
bGUoNSwgdHJ1ZSksICdhJyk7CisgIEVYUEVDVF9FUSgiKCg1LCB0cnVlKSwgJ2EnICg5NywgMHg2
MSkpIiwgUHJpbnQobmVzdGVkKSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBM
RQorCisjaWYgR1RFU1RfSEFTX1NURF9UVVBMRV8KKy8vIFRlc3RzIHByaW50aW5nIDo6c3RkOjp0
dXBsZXMuCisKKy8vIFR1cGxlcyBvZiB2YXJpb3VzIGFyaXRpZXMuCitURVNUKFByaW50U3RkVHVw
bGVUZXN0LCBWYXJpb3VzU2l6ZXMpIHsKKyAgOjpzdGQ6OnR1cGxlPD4gdDA7CisgIEVYUEVDVF9F
USgiKCkiLCBQcmludCh0MCkpOworCisgIDo6c3RkOjp0dXBsZTxpbnQ+IHQxKDUpOworICBFWFBF
Q1RfRVEoIig1KSIsIFByaW50KHQxKSk7CisKKyAgOjpzdGQ6OnR1cGxlPGNoYXIsIGJvb2w+IHQy
KCdhJywgdHJ1ZSk7CisgIEVYUEVDVF9FUSgiKCdhJyAoOTcsIDB4NjEpLCB0cnVlKSIsIFByaW50
KHQyKSk7CisKKyAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwgaW50PiB0MyhmYWxzZSwgMiwgMyk7
CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzKSIsIFByaW50KHQzKSk7CisKKyAgOjpzdGQ6OnR1
cGxlPGJvb2wsIGludCwgaW50LCBpbnQ+IHQ0KGZhbHNlLCAyLCAzLCA0KTsKKyAgRVhQRUNUX0VR
KCIoZmFsc2UsIDIsIDMsIDQpIiwgUHJpbnQodDQpKTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwg
aW50LCBpbnQsIGludCwgYm9vbD4gdDUoZmFsc2UsIDIsIDMsIDQsIHRydWUpOworICBFWFBFQ1Rf
RVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSkiLCBQcmludCh0NSkpOworCisgIDo6c3RkOjp0dXBs
ZTxib29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQ+IHQ2KGZhbHNlLCAyLCAzLCA0LCB0cnVl
LCA2KTsKKyAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYpIiwgUHJpbnQodDYp
KTsKKworICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQ+
IHQ3KAorICAgICAgZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcpOworICBFWFBFQ1RfRVEoIihm
YWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNykiLCBQcmludCh0NykpOworCisgIDo6c3RkOjp0dXBs
ZTxib29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgYm9vbD4gdDgoCisgICAgICBm
YWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSk7CisgIEVYUEVDVF9FUSgiKGZhbHNlLCAy
LCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlKSIsIFByaW50KHQ4KSk7CisKKyAgOjpzdGQ6OnR1cGxl
PGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBib29sLCBpbnQ+IHQ5KAorICAg
ICAgZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUsIDkpOworICBFWFBFQ1RfRVEoIihm
YWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSwgOSkiLCBQcmludCh0OSkpOworCisgIGNv
bnN0IGNoYXIqIGNvbnN0IHN0ciA9ICI4IjsKKyAgLy8gVkMrKyAyMDEwJ3MgaW1wbGVtZW50YXRp
b24gb2YgdHVwbGUgb2YgQysrMHggaXMgZGVmaWNpZW50LCByZXF1aXJpbmcKKyAgLy8gYW4gZXhw
bGljaXQgdHlwZSBjYXN0IG9mIE5VTEwgdG8gYmUgdXNlZC4KKyAgOjpzdGQ6OnR1cGxlPGJvb2ws
IGNoYXIsIHNob3J0LCB0ZXN0aW5nOjppbnRlcm5hbDo6SW50MzIsICAvLyBOT0xJTlQKKyAgICAg
ICAgICAgICAgIHRlc3Rpbmc6OmludGVybmFsOjpJbnQ2NCwgZmxvYXQsIGRvdWJsZSwgY29uc3Qg
Y2hhciosIHZvaWQqLAorICAgICAgICAgICAgICAgc3RkOjpzdHJpbmc+CisgICAgICB0MTAoZmFs
c2UsICdhJywgc3RhdGljX2Nhc3Q8c2hvcnQ+KDMpLCA0LCA1LCAxLjVGLCAtMi41LCBzdHIsICAv
LyBOT0xJTlQKKyAgICAgICAgICBJbXBsaWNpdENhc3RfPHZvaWQqPihOVUxMKSwgIjEwIik7Cisg
IEVYUEVDVF9FUSgiKGZhbHNlLCAnYScgKDk3LCAweDYxKSwgMywgNCwgNSwgMS41LCAtMi41LCAi
ICsgUHJpbnRQb2ludGVyKHN0cikgKworICAgICAgICAgICAgIiBwb2ludGluZyB0byBcIjhcIiwg
TlVMTCwgXCIxMFwiKSIsCisgICAgICAgICAgICBQcmludCh0MTApKTsKK30KKworLy8gTmVzdGVk
IHR1cGxlcy4KK1RFU1QoUHJpbnRTdGRUdXBsZVRlc3QsIE5lc3RlZFR1cGxlKSB7CisgIDo6c3Rk
Ojp0dXBsZTwgOjpzdGQ6OnR1cGxlPGludCwgYm9vbD4sIGNoYXI+IG5lc3RlZCgKKyAgICAgIDo6
c3RkOjptYWtlX3R1cGxlKDUsIHRydWUpLCAnYScpOworICBFWFBFQ1RfRVEoIigoNSwgdHJ1ZSks
ICdhJyAoOTcsIDB4NjEpKSIsIFByaW50KG5lc3RlZCkpOworfQorCisjZW5kaWYgIC8vIEdURVNU
X0xBTkdfQ1hYMTEKKworI2lmIEdURVNUX0xBTkdfQ1hYMTEKK1RFU1QoUHJpbnROdWxscHRyVCwg
QmFzaWMpIHsKKyAgRVhQRUNUX0VRKCIobnVsbHB0cikiLCBQcmludChudWxscHRyKSk7Cit9Cisj
ZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKKworLy8gVGVzdHMgcHJpbnRpbmcgdXNlci1kZWZp
bmVkIHVucHJpbnRhYmxlIHR5cGVzLgorCisvLyBVbnByaW50YWJsZSB0eXBlcyBpbiB0aGUgZ2xv
YmFsIG5hbWVzcGFjZS4KK1RFU1QoUHJpbnRVbnByaW50YWJsZVR5cGVUZXN0LCBJbkdsb2JhbE5h
bWVzcGFjZSkgeworICBFWFBFQ1RfRVEoIjEtYnl0ZSBvYmplY3QgPDAwPiIsCisgICAgICAgICAg
ICBQcmludChVbnByaW50YWJsZVRlbXBsYXRlSW5HbG9iYWw8Y2hhcj4oKSkpOworfQorCisvLyBV
bnByaW50YWJsZSB0eXBlcyBpbiBhIHVzZXIgbmFtZXNwYWNlLgorVEVTVChQcmludFVucHJpbnRh
YmxlVHlwZVRlc3QsIEluVXNlck5hbWVzcGFjZSkgeworICBFWFBFQ1RfRVEoIjE2LWJ5dGUgb2Jq
ZWN0IDxFRi0xMiAwMC0wMCAzNC1BQiAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMD4iLAor
ICAgICAgICAgICAgUHJpbnQoOjpmb286OlVucHJpbnRhYmxlSW5Gb28oKSkpOworfQorCisvLyBV
bnByaW50YWJsZSB0eXBlcyBhcmUgdGhhdCB0b28gYmlnIHRvIGJlIHByaW50ZWQgY29tcGxldGVs
eS4KKworc3RydWN0IEJpZyB7CisgIEJpZygpIHsgbWVtc2V0KGFycmF5LCAwLCBzaXplb2YoYXJy
YXkpKTsgfQorICBjaGFyIGFycmF5WzI1N107Cit9OworCitURVNUKFByaW50VW5wcml0YWJsZVR5
cGVUZXN0LCBCaWdPYmplY3QpIHsKKyAgRVhQRUNUX0VRKCIyNTctYnl0ZSBvYmplY3QgPDAwLTAw
IDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwICIKKyAgICAgICAgICAgICIwMC0wMCAwMC0w
MCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAiCisgICAg
ICAgICAgICAiMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAg
MDAtMDAgMDAtMDAgIgorICAgICAgICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAw
IDAwLTAwIC4uLiAwMC0wMCAwMC0wMCAwMC0wMCAiCisgICAgICAgICAgICAiMDAtMDAgMDAtMDAg
MDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgIgorICAgICAg
ICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAw
LTAwIDAwLTAwICIKKyAgICAgICAgICAgICIwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAw
MC0wMCAwMC0wMCAwMC0wMCAwMD4iLAorICAgICAgICAgICAgUHJpbnQoQmlnKCkpKTsKK30KKwor
Ly8gVGVzdHMgcHJpbnRpbmcgdXNlci1kZWZpbmVkIHN0cmVhbWFibGUgdHlwZXMuCisKKy8vIFN0
cmVhbWFibGUgdHlwZXMgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCitURVNUKFByaW50U3RyZWFt
YWJsZVR5cGVUZXN0LCBJbkdsb2JhbE5hbWVzcGFjZSkgeworICBTdHJlYW1hYmxlSW5HbG9iYWwg
eDsKKyAgRVhQRUNUX0VRKCJTdHJlYW1hYmxlSW5HbG9iYWwiLCBQcmludCh4KSk7CisgIEVYUEVD
VF9FUSgiU3RyZWFtYWJsZUluR2xvYmFsKiIsIFByaW50KCZ4KSk7Cit9CisKKy8vIFByaW50YWJs
ZSB0ZW1wbGF0ZSB0eXBlcyBpbiBhIHVzZXIgbmFtZXNwYWNlLgorVEVTVChQcmludFN0cmVhbWFi
bGVUeXBlVGVzdCwgVGVtcGxhdGVUeXBlSW5Vc2VyTmFtZXNwYWNlKSB7CisgIEVYUEVDVF9FUSgi
U3RyZWFtYWJsZVRlbXBsYXRlSW5Gb286IDAiLAorICAgICAgICAgICAgUHJpbnQoOjpmb286OlN0
cmVhbWFibGVUZW1wbGF0ZUluRm9vPGludD4oKSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyBh
IHVzZXItZGVmaW5lZCByZWN1cnNpdmUgY29udGFpbmVyIHR5cGUgdGhhdCBoYXMgYSA8PAorLy8g
b3BlcmF0b3IuCitURVNUKFByaW50U3RyZWFtYWJsZVR5cGVUZXN0LCBQYXRoTGlrZUluVXNlck5h
bWVzcGFjZSkgeworICA6OmZvbzo6UGF0aExpa2UgeDsKKyAgRVhQRUNUX0VRKCJTdHJlYW1hYmxl
LVBhdGhMaWtlIiwgUHJpbnQoeCkpOworICBjb25zdCA6OmZvbzo6UGF0aExpa2UgY3g7CisgIEVY
UEVDVF9FUSgiU3RyZWFtYWJsZS1QYXRoTGlrZSIsIFByaW50KGN4KSk7Cit9CisKKy8vIFRlc3Rz
IHByaW50aW5nIHVzZXItZGVmaW5lZCB0eXBlcyB0aGF0IGhhdmUgYSBQcmludFRvKCkgZnVuY3Rp
b24uCitURVNUKFByaW50UHJpbnRhYmxlVHlwZVRlc3QsIEluVXNlck5hbWVzcGFjZSkgeworICBF
WFBFQ1RfRVEoIlByaW50YWJsZVZpYVByaW50VG86IDAiLAorICAgICAgICAgICAgUHJpbnQoOjpm
b286OlByaW50YWJsZVZpYVByaW50VG8oKSkpOworfQorCisvLyBUZXN0cyBwcmludGluZyBhIHBv
aW50ZXIgdG8gYSB1c2VyLWRlZmluZWQgdHlwZSB0aGF0IGhhcyBhIDw8CisvLyBvcGVyYXRvciBm
b3IgaXRzIHBvaW50ZXIuCitURVNUKFByaW50UHJpbnRhYmxlVHlwZVRlc3QsIFBvaW50ZXJJblVz
ZXJOYW1lc3BhY2UpIHsKKyAgOjpmb286OlBvaW50ZXJQcmludGFibGUgeDsKKyAgRVhQRUNUX0VR
KCJQb2ludGVyUHJpbnRhYmxlKiIsIFByaW50KCZ4KSk7Cit9CisKKy8vIFRlc3RzIHByaW50aW5n
IHVzZXItZGVmaW5lZCBjbGFzcyB0ZW1wbGF0ZSB0aGF0IGhhdmUgYSBQcmludFRvKCkgZnVuY3Rp
b24uCitURVNUKFByaW50UHJpbnRhYmxlVHlwZVRlc3QsIFRlbXBsYXRlSW5Vc2VyTmFtZXNwYWNl
KSB7CisgIEVYUEVDVF9FUSgiUHJpbnRhYmxlVmlhUHJpbnRUb1RlbXBsYXRlOiA1IiwKKyAgICAg
ICAgICAgIFByaW50KDo6Zm9vOjpQcmludGFibGVWaWFQcmludFRvVGVtcGxhdGU8aW50Pig1KSkp
OworfQorCisvLyBUZXN0cyB0aGF0IHRoZSB1bml2ZXJzYWwgcHJpbnRlciBwcmludHMgYm90aCB0
aGUgYWRkcmVzcyBhbmQgdGhlCisvLyB2YWx1ZSBvZiBhIHJlZmVyZW5jZS4KK1RFU1QoUHJpbnRS
ZWZlcmVuY2VUZXN0LCBQcmludHNBZGRyZXNzQW5kVmFsdWUpIHsKKyAgaW50IG4gPSA1OworICBF
WFBFQ1RfRVEoIkAiICsgUHJpbnRQb2ludGVyKCZuKSArICIgNSIsIFByaW50QnlSZWYobikpOwor
CisgIGludCBhWzJdWzNdID0geworICAgIHsgMCwgMSwgMiB9LAorICAgIHsgMywgNCwgNSB9Cisg
IH07CisgIEVYUEVDVF9FUSgiQCIgKyBQcmludFBvaW50ZXIoYSkgKyAiIHsgeyAwLCAxLCAyIH0s
IHsgMywgNCwgNSB9IH0iLAorICAgICAgICAgICAgUHJpbnRCeVJlZihhKSk7CisKKyAgY29uc3Qg
Ojpmb286OlVucHJpbnRhYmxlSW5Gb28geDsKKyAgRVhQRUNUX0VRKCJAIiArIFByaW50UG9pbnRl
cigmeCkgKyAiIDE2LWJ5dGUgb2JqZWN0ICIKKyAgICAgICAgICAgICI8RUYtMTIgMDAtMDAgMzQt
QUIgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDA+IiwKKyAgICAgICAgICAgIFByaW50QnlS
ZWYoeCkpOworfQorCisvLyBUZXN0cyB0aGF0IHRoZSB1bml2ZXJzYWwgcHJpbnRlciBwcmludHMg
YSBmdW5jdGlvbiBwb2ludGVyIHBhc3NlZCBieQorLy8gcmVmZXJlbmNlLgorVEVTVChQcmludFJl
ZmVyZW5jZVRlc3QsIEhhbmRsZXNGdW5jdGlvblBvaW50ZXIpIHsKKyAgdm9pZCAoKmZwKShpbnQg
bikgPSAmTXlGdW5jdGlvbjsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZnBfcG9pbnRlcl9zdHJpbmcg
PQorICAgICAgUHJpbnRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KCZmcCkp
OworICAvLyBXZSBjYW5ub3QgZGlyZWN0bHkgY2FzdCAmTXlGdW5jdGlvbiB0byBjb25zdCB2b2lk
KiBiZWNhdXNlIHRoZQorICAvLyBzdGFuZGFyZCBkaXNhbGxvd3MgY2FzdGluZyBiZXR3ZWVuIHBv
aW50ZXJzIHRvIGZ1bmN0aW9ucyBhbmQKKyAgLy8gcG9pbnRlcnMgdG8gb2JqZWN0cywgYW5kIHNv
bWUgY29tcGlsZXJzIChlLmcuIEdDQyAzLjQpIGVuZm9yY2UKKyAgLy8gdGhpcyBsaW1pdGF0aW9u
LgorICBjb25zdCBzdGQ6OnN0cmluZyBmcF9zdHJpbmcgPSBQcmludFBvaW50ZXIocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB2b2lkKj4oCisgICAgICByZWludGVycHJldF9jYXN0PGludGVybmFsOjpC
aWdnZXN0SW50PihmcCkpKTsKKyAgRVhQRUNUX0VRKCJAIiArIGZwX3BvaW50ZXJfc3RyaW5nICsg
IiAiICsgZnBfc3RyaW5nLAorICAgICAgICAgICAgUHJpbnRCeVJlZihmcCkpOworfQorCisvLyBU
ZXN0cyB0aGF0IHRoZSB1bml2ZXJzYWwgcHJpbnRlciBwcmludHMgYSBtZW1iZXIgZnVuY3Rpb24g
cG9pbnRlcgorLy8gcGFzc2VkIGJ5IHJlZmVyZW5jZS4KK1RFU1QoUHJpbnRSZWZlcmVuY2VUZXN0
LCBIYW5kbGVzTWVtYmVyRnVuY3Rpb25Qb2ludGVyKSB7CisgIGludCAoRm9vOjoqcCkoY2hhciBj
aCkgPSAmRm9vOjpNeU1ldGhvZDsKKyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KAorICAgICAgUHJp
bnRCeVJlZihwKSwKKyAgICAgICJAIiArIFByaW50UG9pbnRlcihyZWludGVycHJldF9jYXN0PGNv
bnN0IHZvaWQqPigmcCkpICsgIiAiICsKKyAgICAgICAgICBQcmludChzaXplb2YocCkpICsgIi1i
eXRlIG9iamVjdCAiKSk7CisKKyAgY2hhciAoRm9vOjoqcDIpKGludCBuKSA9ICZGb286Ok15Vmly
dHVhbE1ldGhvZDsKKyAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KAorICAgICAgUHJpbnRCeVJlZihw
MiksCisgICAgICAiQCIgKyBQcmludFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4oJnAyKSkgKyAiICIgKworICAgICAgICAgIFByaW50KHNpemVvZihwMikpICsgIi1ieXRlIG9i
amVjdCAiKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgdGhlIHVuaXZlcnNhbCBwcmludGVyIHByaW50
cyBhIG1lbWJlciB2YXJpYWJsZSBwb2ludGVyCisvLyBwYXNzZWQgYnkgcmVmZXJlbmNlLgorVEVT
VChQcmludFJlZmVyZW5jZVRlc3QsIEhhbmRsZXNNZW1iZXJWYXJpYWJsZVBvaW50ZXIpIHsKKyAg
aW50IEZvbzo6KnAgPSAmRm9vOjp2YWx1ZTsgIC8vIE5PTElOVAorICBFWFBFQ1RfVFJVRShIYXNQ
cmVmaXgoCisgICAgICBQcmludEJ5UmVmKHApLAorICAgICAgIkAiICsgUHJpbnRQb2ludGVyKCZw
KSArICIgIiArIFByaW50KHNpemVvZihwKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKK30KKworLy8g
VGVzdHMgdGhhdCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoKSwgd2hpY2ggaXMg
dXNlZCB0byBwcmludAorLy8gYW4gb3BlcmFuZCBpbiBhIGNvbXBhcmlzb24gYXNzZXJ0aW9uIChl
LmcuIEFTU0VSVF9FUSkgd2hlbiB0aGUgYXNzZXJ0aW9uCisvLyBmYWlscywgZm9ybWF0cyB0aGUg
b3BlcmFuZCBpbiB0aGUgZGVzaXJlZCB3YXkuCisKKy8vIHNjYWxhcgorVEVTVChGb3JtYXRGb3JD
b21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvclNjYWxhcikgeworICBFWFBFQ1Rf
U1RSRVEoIjEyMyIsCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2UoMTIzLCAxMjQpLmNfc3RyKCkpOworfQorCisvLyBub24tY2hhciBwb2ludGVyCitURVNU
KEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yTm9uQ2hhclBv
aW50ZXIpIHsKKyAgaW50IG4gPSAwOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKCZuKSwKKyAg
ICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSgmbiwgJm4pLmNfc3Ry
KCkpOworfQorCisvLyBub24tY2hhciBhcnJheQorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFp
bHVyZU1lc3NhZ2VUZXN0LCBGb3JtYXRzTm9uQ2hhckFycmF5QXNQb2ludGVyKSB7CisgIC8vIElu
IGV4cHJlc3Npb24gJ2FycmF5ID09IHgnLCAnYXJyYXknIGlzIGNvbXBhcmVkIGJ5IHBvaW50ZXIu
CisgIC8vIFRoZXJlZm9yZSB3ZSB3YW50IHRvIHByaW50IGFuIGFycmF5IG9wZXJhbmQgYXMgYSBw
b2ludGVyLgorICBpbnQgbltdID0geyAxLCAyLCAzIH07CisgIEVYUEVDVF9FUShQcmludFBvaW50
ZXIobiksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uobiwg
bikuY19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIGZvcm1hdHRpbmcgYSBjaGFyIHBvaW50ZXIgd2hl
biBpdCdzIGNvbXBhcmVkIHdpdGggYW5vdGhlciBwb2ludGVyLgorLy8gSW4gdGhpcyBjYXNlIHdl
IHdhbnQgdG8gcHJpbnQgaXQgYXMgYSByYXcgcG9pbnRlciwgYXMgdGhlIGNvbXBhcmlzb24gaXMg
YnkKKy8vIHBvaW50ZXIuCisKKy8vIGNoYXIgcG9pbnRlciB2cyBwb2ludGVyCitURVNUKEZvcm1h
dEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhclBvaW50ZXJWc1Bv
aW50ZXIpIHsKKyAgLy8gSW4gZXhwcmVzc2lvbiAncCA9PSB4Jywgd2hlcmUgJ3AnIGFuZCAneCcg
YXJlIChjb25zdCBvciBub3QpIGNoYXIKKyAgLy8gcG9pbnRlcnMsIHRoZSBvcGVyYW5kcyBhcmUg
Y29tcGFyZWQgYnkgcG9pbnRlci4gIFRoZXJlZm9yZSB3ZQorICAvLyB3YW50IHRvIHByaW50ICdw
JyBhcyBhIHBvaW50ZXIgaW5zdGVhZCBvZiBhIEMgc3RyaW5nICh3ZSBkb24ndAorICAvLyBldmVu
IGtub3cgaWYgaXQncyBzdXBwb3NlZCB0byBwb2ludCB0byBhIHZhbGlkIEMgc3RyaW5nKS4KKwor
ICAvLyBjb25zdCBjaGFyKgorICBjb25zdCBjaGFyKiBzID0gImhlbGxvIjsKKyAgRVhQRUNUX0VR
KFByaW50UG9pbnRlcihzKSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJl
TWVzc2FnZShzLCBzKS5jX3N0cigpKTsKKworICAvLyBjaGFyKgorICBjaGFyIGNoID0gJ2EnOwor
ICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKCZjaCksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21w
YXJpc29uRmFpbHVyZU1lc3NhZ2UoJmNoLCAmY2gpLmNfc3RyKCkpOworfQorCisvLyB3Y2hhcl90
IHBvaW50ZXIgdnMgcG9pbnRlcgorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2VUZXN0LCBXb3Jrc0ZvcldDaGFyUG9pbnRlclZzUG9pbnRlcikgeworICAvLyBJbiBleHByZXNz
aW9uICdwID09IHgnLCB3aGVyZSAncCcgYW5kICd4JyBhcmUgKGNvbnN0IG9yIG5vdCkgY2hhcgor
ICAvLyBwb2ludGVycywgdGhlIG9wZXJhbmRzIGFyZSBjb21wYXJlZCBieSBwb2ludGVyLiAgVGhl
cmVmb3JlIHdlCisgIC8vIHdhbnQgdG8gcHJpbnQgJ3AnIGFzIGEgcG9pbnRlciBpbnN0ZWFkIG9m
IGEgd2lkZSBDIHN0cmluZyAod2UgZG9uJ3QKKyAgLy8gZXZlbiBrbm93IGlmIGl0J3Mgc3VwcG9z
ZWQgdG8gcG9pbnQgdG8gYSB2YWxpZCB3aWRlIEMgc3RyaW5nKS4KKworICAvLyBjb25zdCB3Y2hh
cl90KgorICBjb25zdCB3Y2hhcl90KiBzID0gTCJoZWxsbyI7CisgIEVYUEVDVF9FUShQcmludFBv
aW50ZXIocyksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uo
cywgcykuY19zdHIoKSk7CisKKyAgLy8gd2NoYXJfdCoKKyAgd2NoYXJfdCBjaCA9IEwnYSc7Cisg
IEVYUEVDVF9FUShQcmludFBvaW50ZXIoJmNoKSwKKyAgICAgICAgICAgIEZvcm1hdEZvckNvbXBh
cmlzb25GYWlsdXJlTWVzc2FnZSgmY2gsICZjaCkuY19zdHIoKSk7Cit9CisKKy8vIFRlc3RzIGZv
cm1hdHRpbmcgYSBjaGFyIHBvaW50ZXIgd2hlbiBpdCdzIGNvbXBhcmVkIHRvIGEgc3RyaW5nIG9i
amVjdC4KKy8vIEluIHRoaXMgY2FzZSB3ZSB3YW50IHRvIHByaW50IHRoZSBjaGFyIHBvaW50ZXIg
YXMgYSBDIHN0cmluZy4KKworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisvLyBjaGFyIHBv
aW50ZXIgdnMgOjpzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdl
VGVzdCwgV29ya3NGb3JDaGFyUG9pbnRlclZzU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIqIHMgPSAi
aGVsbG8gXCJ3b3JsZCI7CisgIEVYUEVDVF9TVFJFUSgiXCJoZWxsbyBcXFwid29ybGRcIiIsICAv
LyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgOjpzdHJpbmcoKSkuY19zdHIoKSk7
CisKKyAgLy8gY2hhcioKKyAgY2hhciBzdHJbXSA9ICJoaVwxIjsKKyAgY2hhciogcCA9IHN0cjsK
KyAgRVhQRUNUX1NUUkVRKCJcImhpXFx4MVwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91
bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJl
TWVzc2FnZShwLCA6OnN0cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisvLyBjaGFyIHBv
aW50ZXIgdnMgc3RkOjpzdHJpbmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNz
YWdlVGVzdCwgV29ya3NGb3JDaGFyUG9pbnRlclZzU3RkU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIq
IHMgPSAiaGVsbG8gXCJ3b3JsZCI7CisgIEVYUEVDVF9TVFJFUSgiXCJoZWxsbyBcXFwid29ybGRc
IiIsICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCisgICAgICAgICAg
ICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgOjpzdGQ6OnN0cmluZygp
KS5jX3N0cigpKTsKKworICAvLyBjaGFyKgorICBjaGFyIHN0cltdID0gImhpXDEiOworICBjaGFy
KiBwID0gc3RyOworICBFWFBFQ1RfU1RSRVEoIlwiaGlcXHgxXCIiLCAgLy8gVGhlIHN0cmluZyBj
b250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlKHAsIDo6c3RkOjpzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisKKyNp
ZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKKy8vIHdjaGFyX3QgcG9pbnRlciB2cyA6OndzdHJp
bmcKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JX
Q2hhclBvaW50ZXJWc1dTdHJpbmcpIHsKKyAgY29uc3Qgd2NoYXJfdCogcyA9IEwiaGkgXCJ3b3Js
ZCI7CisgIEVYUEVDVF9TVFJFUSgiTFwiaGkgXFxcIndvcmxkXCIiLCAgLy8gVGhlIHN0cmluZyBj
b250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlKHMsIDo6d3N0cmluZygpKS5jX3N0cigpKTsKKworICAvLyB3Y2hh
cl90KgorICB3Y2hhcl90IHN0cltdID0gTCJoaVwxIjsKKyAgd2NoYXJfdCogcCA9IHN0cjsKKyAg
RVhQRUNUX1NUUkVRKCJMXCJoaVxceDFcIiIsICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxk
IGJlIGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1l
c3NhZ2UocCwgOjp3c3RyaW5nKCkpLmNfc3RyKCkpOworfQorI2VuZGlmCisKKyNpZiBHVEVTVF9I
QVNfU1REX1dTVFJJTkcKKy8vIHdjaGFyX3QgcG9pbnRlciB2cyBzdGQ6OndzdHJpbmcKK1RFU1Qo
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhclBvaW50
ZXJWc1N0ZFdTdHJpbmcpIHsKKyAgY29uc3Qgd2NoYXJfdCogcyA9IEwiaGkgXCJ3b3JsZCI7Cisg
IEVYUEVDVF9TVFJFUSgiTFwiaGkgXFxcIndvcmxkXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50
IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZh
aWx1cmVNZXNzYWdlKHMsIDo6c3RkOjp3c3RyaW5nKCkpLmNfc3RyKCkpOworCisgIC8vIHdjaGFy
X3QqCisgIHdjaGFyX3Qgc3RyW10gPSBMImhpXDEiOworICB3Y2hhcl90KiBwID0gc3RyOworICBF
WFBFQ1RfU1RSRVEoIkxcImhpXFx4MVwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQg
YmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVz
c2FnZShwLCA6OnN0ZDo6d3N0cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisvLyBUZXN0
cyBmb3JtYXR0aW5nIGEgY2hhciBhcnJheSB3aGVuIGl0J3MgY29tcGFyZWQgd2l0aCBhIHBvaW50
ZXIgb3IgYXJyYXkuCisvLyBJbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBwcmludCB0aGUgYXJyYXkg
YXMgYSByb3cgcG9pbnRlciwgYXMgdGhlIGNvbXBhcmlzb24KKy8vIGlzIGJ5IHBvaW50ZXIuCisK
Ky8vIGNoYXIgYXJyYXkgdnMgcG9pbnRlcgorVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVy
ZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVZzUG9pbnRlcikgeworICBjaGFyIHN0cltd
ID0gImhpIFwid29ybGRcIiI7CisgIGNoYXIqIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoUHJpbnRQ
b2ludGVyKHN0ciksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2Uoc3RyLCBwKS5jX3N0cigpKTsKK30KKworLy8gY2hhciBhcnJheSB2cyBjaGFyIGFycmF5CitU
RVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhckFy
cmF5VnNDaGFyQXJyYXkpIHsKKyAgY29uc3QgY2hhciBzdHJbXSA9ICJoaSBcIndvcmxkXCIiOwor
ICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHN0ciksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21w
YXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCBzdHIpLmNfc3RyKCkpOworfQorCisvLyB3Y2hhcl90
IGFycmF5IHZzIHBvaW50ZXIKK1RFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdl
VGVzdCwgV29ya3NGb3JXQ2hhckFycmF5VnNQb2ludGVyKSB7CisgIHdjaGFyX3Qgc3RyW10gPSBM
ImhpIFwid29ybGRcIiI7CisgIHdjaGFyX3QqIHAgPSBOVUxMOworICBFWFBFQ1RfRVEoUHJpbnRQ
b2ludGVyKHN0ciksCisgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2Uoc3RyLCBwKS5jX3N0cigpKTsKK30KKworLy8gd2NoYXJfdCBhcnJheSB2cyB3Y2hhcl90IGFy
cmF5CitURVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9y
V0NoYXJBcnJheVZzV0NoYXJBcnJheSkgeworICBjb25zdCB3Y2hhcl90IHN0cltdID0gTCJoaSBc
IndvcmxkXCIiOworICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHN0ciksCisgICAgICAgICAgICBG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCBzdHIpLmNfc3RyKCkpOworfQor
CisvLyBUZXN0cyBmb3JtYXR0aW5nIGEgY2hhciBhcnJheSB3aGVuIGl0J3MgY29tcGFyZWQgd2l0
aCBhIHN0cmluZyBvYmplY3QuCisvLyBJbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBwcmludCB0aGUg
YXJyYXkgYXMgYSBDIHN0cmluZy4KKworI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCisvLyBj
aGFyIGFycmF5IHZzIHN0cmluZworVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2VUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVZzU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIgc3RyW10g
PSAiaGkgXCJ3XDBybGRcIiI7CisgIEVYUEVDVF9TVFJFUSgiXCJoaSBcXFwid1wiIiwgIC8vIFRo
ZSBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBFbWJlZGRlZCBOVUwgdGVybWluYXRlcyB0aGUgc3RyaW5nLgorICAgICAgICAgICAg
ICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgOjpzdHJpbmcoKSkuY19z
dHIoKSk7Cit9CisjZW5kaWYKKworLy8gY2hhciBhcnJheSB2cyBzdGQ6OnN0cmluZworVEVTVChG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVZz
U3RkU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIgc3RyW10gPSAiaGkgXCJ3b3JsZFwiIjsKKyAgRVhQ
RUNUX1NUUkVRKCJcImhpIFxcXCJ3b3JsZFxcXCJcIiIsICAvLyBUaGUgY29udGVudCBzaG91bGQg
YmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVz
c2FnZShzdHIsIDo6c3RkOjpzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNf
R0xPQkFMX1dTVFJJTkcKKy8vIHdjaGFyX3QgYXJyYXkgdnMgd3N0cmluZworVEVTVChGb3JtYXRG
b3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvcldDaGFyQXJyYXlWc1dTdHJp
bmcpIHsKKyAgY29uc3Qgd2NoYXJfdCBzdHJbXSA9IEwiaGkgXCJ3b3JsZFwiIjsKKyAgRVhQRUNU
X1NUUkVRKCJMXCJoaSBcXFwid29ybGRcXFwiXCIiLCAgLy8gVGhlIGNvbnRlbnQgc2hvdWxkIGJl
IGVzY2FwZWQuCisgICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3Nh
Z2Uoc3RyLCA6OndzdHJpbmcoKSkuY19zdHIoKSk7Cit9CisjZW5kaWYKKworI2lmIEdURVNUX0hB
U19TVERfV1NUUklORworLy8gd2NoYXJfdCBhcnJheSB2cyBzdGQ6OndzdHJpbmcKK1RFU1QoRm9y
bWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhckFycmF5VnNT
dGRXU3RyaW5nKSB7CisgIGNvbnN0IHdjaGFyX3Qgc3RyW10gPSBMImhpIFwid1wwcmxkXCIiOwor
ICBFWFBFQ1RfU1RSRVEoCisgICAgICAiTFwiaGkgXFxcIndcIiIsICAvLyBUaGUgY29udGVudCBz
aG91bGQgYmUgZXNjYXBlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVtYmVkZGVkIE5V
TCB0ZXJtaW5hdGVzIHRoZSBzdHJpbmcuCisgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVy
ZU1lc3NhZ2Uoc3RyLCA6OnN0ZDo6d3N0cmluZygpKS5jX3N0cigpKTsKK30KKyNlbmRpZgorCisv
LyBVc2VmdWwgZm9yIHRlc3RpbmcgUHJpbnRUb1N0cmluZygpLiAgV2UgY2Fubm90IHVzZSBFWFBF
Q1RfRVEoKQorLy8gdGhlcmUgYXMgaXRzIGltcGxlbWVudGF0aW9uIHVzZXMgUHJpbnRUb1N0cmlu
ZygpLiAgVGhlIGNhbGxlciBtdXN0CisvLyBlbnN1cmUgdGhhdCAndmFsdWUnIGhhcyBubyBzaWRl
IGVmZmVjdC4KKyNkZWZpbmUgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18odmFsdWUsIGV4cGVjdGVk
X3N0cmluZykgICAgICAgICBcCisgIEVYUEVDVF9UUlVFKFByaW50VG9TdHJpbmcodmFsdWUpID09
IChleHBlY3RlZF9zdHJpbmcpKSAgICAgICAgXAorICAgICAgPDwgIiB3aGVyZSAiICN2YWx1ZSAi
IHByaW50cyBhcyAiIDw8IChQcmludFRvU3RyaW5nKHZhbHVlKSkKKworVEVTVChQcmludFRvU3Ry
aW5nVGVzdCwgV29ya3NGb3JTY2FsYXIpIHsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18oMTIz
LCAiMTIzIik7Cit9CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIFdvcmtzRm9yUG9pbnRlclRv
Q29uc3RDaGFyKSB7CisgIGNvbnN0IGNoYXIqIHAgPSAiaGVsbG8iOworICBFWFBFQ1RfUFJJTlRf
VE9fU1RSSU5HXyhwLCAiXCJoZWxsb1wiIik7Cit9CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3Qs
IFdvcmtzRm9yUG9pbnRlclRvTm9uQ29uc3RDaGFyKSB7CisgIGNoYXIgc1tdID0gImhlbGxvIjsK
KyAgY2hhciogcCA9IHM7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKHAsICJcImhlbGxvXCIi
KTsKK30KKworVEVTVChQcmludFRvU3RyaW5nVGVzdCwgRXNjYXBlc0ZvclBvaW50ZXJUb0NvbnN0
Q2hhcikgeworICBjb25zdCBjaGFyKiBwID0gImhlbGxvXG4iOworICBFWFBFQ1RfUFJJTlRfVE9f
U1RSSU5HXyhwLCAiXCJoZWxsb1xcblwiIik7Cit9CisKK1RFU1QoUHJpbnRUb1N0cmluZ1Rlc3Qs
IEVzY2FwZXNGb3JQb2ludGVyVG9Ob25Db25zdENoYXIpIHsKKyAgY2hhciBzW10gPSAiaGVsbG9c
MSI7CisgIGNoYXIqIHAgPSBzOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhwLCAiXCJoZWxs
b1xceDFcIiIpOworfQorCitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvckFycmF5KSB7
CisgIGludCBuWzNdID0geyAxLCAyLCAzIH07CisgIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKG4s
ICJ7IDEsIDIsIDMgfSIpOworfQorCitURVNUKFByaW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvckNo
YXJBcnJheSkgeworICBjaGFyIHNbXSA9ICJoZWxsbyI7CisgIEVYUEVDVF9QUklOVF9UT19TVFJJ
TkdfKHMsICJcImhlbGxvXCIiKTsKK30KKworVEVTVChQcmludFRvU3RyaW5nVGVzdCwgV29ya3NG
b3JDaGFyQXJyYXlXaXRoRW1iZWRkZWROdWwpIHsKKyAgY29uc3QgY2hhciBzdHJfd2l0aF9udWxb
XSA9ICJoZWxsb1wwIHdvcmxkIjsKKyAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18oc3RyX3dpdGhf
bnVsLCAiXCJoZWxsb1xcMCB3b3JsZFwiIik7CisKKyAgY2hhciBtdXRhYmxlX3N0cl93aXRoX251
bFtdID0gImhlbGxvXDAgd29ybGQiOworICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhtdXRhYmxl
X3N0cl93aXRoX251bCwgIlwiaGVsbG9cXDAgd29ybGRcIiIpOworfQorCisgIFRFU1QoUHJpbnRU
b1N0cmluZ1Rlc3QsIENvbnRhaW5zTm9uTGF0aW4pIHsKKyAgLy8gU2FuaXR5IHRlc3Qgd2l0aCB2
YWxpZCBVVEYtOC4gUHJpbnRzIGJvdGggaW4gaGV4IGFuZCBhcyB0ZXh0LgorICBzdGQ6OnN0cmlu
ZyBub25fYXNjaWlfc3RyID0gOjpzdGQ6OnN0cmluZygi7Jik7KCEIDQ6MzAiKTsKKyAgRVhQRUNU
X1BSSU5UX1RPX1NUUklOR18obm9uX2FzY2lpX3N0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlwiXFx4RUNcXHg5OFxceEE0XFx4RUNcXHhBMFxceDg0IDQ6MzBcIlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIEFzIFRleHQ6IFwi7Jik7KCEIDQ6MzBcIiIpOworICBub25f
YXNjaWlfc3RyID0gOjpzdGQ6OnN0cmluZygiRnJvbSDDpCDigJQg4bqRIik7CisgIEVYUEVDVF9Q
UklOVF9UT19TVFJJTkdfKG5vbl9hc2NpaV9zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJcIkZyb20gXFx4QzNcXHhBNCBcXHhFMlxceDgwXFx4OTQgXFx4RTFcXHhCQVxceDkxXCIiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICJcbiAgICBBcyBUZXh0OiBcIkZyb20gw6Qg4oCUIOG6
kVwiIik7Cit9CisKK1RFU1QoSXNWYWxpZFVURjhUZXN0LCBJbGxGb3JtZWRVVEY4KSB7CisgIC8v
IFRoZSBmb2xsb3dpbmcgdGVzdCBzdHJpbmdzIGFyZSBpbGwtZm9ybWVkIFVURi04IGFuZCBhcmUg
cHJpbnRlZAorICAvLyBhcyBoZXggb25seSAob3IgQVNDSUksIGluIGNhc2Ugb2YgQVNDSUkgYnl0
ZXMpIGJlY2F1c2UgSXNWYWxpZFVURjgoKSBpcworICAvLyBleHBlY3RlZCB0byBmYWlsLCB0aHVz
IG91dHB1dCBkb2VzIG5vdCBjb250YWluICJBcyBUZXh0OiIuCisKKyAgc3RhdGljIGNvbnN0IGNo
YXIgKmNvbnN0IGtUZXN0ZGF0YVtdWzJdID0geworICAgIC8vIDItYnl0ZSBsZWFkIGJ5dGUgZm9s
bG93ZWQgYnkgYSBzaW5nbGUtYnl0ZSBjaGFyYWN0ZXIuCisgICAgeyJceEMzXHg3NCIsICJcIlxc
eEMzdFwiIn0sCisgICAgLy8gVmFsaWQgMi1ieXRlIGNoYXJhY3RlciBmb2xsb3dlZCBieSBhbiBv
cnBoYW4gdHJhaWwgYnl0ZS4KKyAgICB7Ilx4QzNceDg0XHhBNCIsICJcIlxceEMzXFx4ODRcXHhB
NFwiIn0sCisgICAgLy8gTGVhZCBieXRlIHdpdGhvdXQgdHJhaWwgYnl0ZS4KKyAgICB7ImFiY1x4
QzMiLCAiXCJhYmNcXHhDM1wiIn0sCisgICAgLy8gMy1ieXRlIGxlYWQgYnl0ZSwgc2luZ2xlLWJ5
dGUgY2hhcmFjdGVyLCBvcnBoYW4gdHJhaWwgYnl0ZS4KKyAgICB7InhceEUyXHg3MFx4OTQiLCAi
XCJ4XFx4RTJwXFx4OTRcIiJ9LAorICAgIC8vIFRydW5jYXRlZCAzLWJ5dGUgY2hhcmFjdGVyLgor
ICAgIHsiXHhFMlx4ODAiLCAiXCJcXHhFMlxceDgwXCIifSwKKyAgICAvLyBUcnVuY2F0ZWQgMy1i
eXRlIGNoYXJhY3RlciBmb2xsb3dlZCBieSB2YWxpZCAyLWJ5dGUgY2hhci4KKyAgICB7Ilx4RTJc
eDgwXHhDM1x4ODQiLCAiXCJcXHhFMlxceDgwXFx4QzNcXHg4NFwiIn0sCisgICAgLy8gVHJ1bmNh
dGVkIDMtYnl0ZSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkgYSBzaW5nbGUtYnl0ZSBjaGFyYWN0ZXIu
CisgICAgeyJceEUyXHg4MFx4N0EiLCAiXCJcXHhFMlxceDgwelwiIn0sCisgICAgLy8gMy1ieXRl
IGxlYWQgYnl0ZSBmb2xsb3dlZCBieSB2YWxpZCAzLWJ5dGUgY2hhcmFjdGVyLgorICAgIHsiXHhF
Mlx4RTJceDgwXHg5NCIsICJcIlxceEUyXFx4RTJcXHg4MFxceDk0XCIifSwKKyAgICAvLyA0LWJ5
dGUgbGVhZCBieXRlIGZvbGxvd2VkIGJ5IHZhbGlkIDMtYnl0ZSBjaGFyYWN0ZXIuCisgICAgeyJc
eEYwXHhFMlx4ODBceDk0IiwgIlwiXFx4RjBcXHhFMlxceDgwXFx4OTRcIiJ9LAorICAgIC8vIFRy
dW5jYXRlZCA0LWJ5dGUgY2hhcmFjdGVyLgorICAgIHsiXHhGMFx4RTJceDgwIiwgIlwiXFx4RjBc
XHhFMlxceDgwXCIifSwKKyAgICAgLy8gSW52YWxpZCBVVEYtOCBieXRlIHNlcXVlbmNlcyBlbWJl
ZGRlZCBpbiBvdGhlciBjaGFycy4KKyAgICB7ImFiY1x4RTJceDgwXHg5NFx4QzNceDc0eHljIiwg
IlwiYWJjXFx4RTJcXHg4MFxceDk0XFx4QzN0eHljXCIifSwKKyAgICB7ImFiY1x4QzNceDg0XHhF
Mlx4ODBceEMzXHg4NHh5eiIsCisgICAgICJcImFiY1xceEMzXFx4ODRcXHhFMlxceDgwXFx4QzNc
XHg4NHh5elwiIn0sCisgICAgLy8gTm9uLXNob3J0ZXN0IFVURi04IGJ5dGUgc2VxdWVuY2VzIGFy
ZSBhbHNvIGlsbC1mb3JtZWQuCisgICAgLy8gVGhlIGNsYXNzaWNzOiB4QzAsIHhDMSBsZWFkIGJ5
dGUuCisgICAgeyJceEMwXHg4MCIsICJcIlxceEMwXFx4ODBcIiJ9LAorICAgIHsiXHhDMVx4ODEi
LCAiXCJcXHhDMVxceDgxXCIifSwKKyAgICAvLyBOb24tc2hvcnRlc3Qgc2VxdWVuY2VzLgorICAg
IHsiXHhFMFx4ODBceDgwIiwgIlwiXFx4RTBcXHg4MFxceDgwXCIifSwKKyAgICB7Ilx4ZjBceDgw
XHg4MFx4ODAiLCAiXCJcXHhGMFxceDgwXFx4ODBcXHg4MFwiIn0sCisgICAgLy8gTGFzdCB2YWxp
ZCBjb2RlIHBvaW50IGJlZm9yZSBzdXJyb2dhdGUgcmFuZ2UsIHNob3VsZCBiZSBwcmludGVkIGFz
IHRleHQsCisgICAgLy8gdG9vLgorICAgIHsiXHhFRFx4OUZceEJGIiwgIlwiXFx4RURcXHg5Rlxc
eEJGXCJcbiAgICBBcyBUZXh0OiBcIu2fv1wiIn0sCisgICAgLy8gU3RhcnQgb2Ygc3Vycm9nYXRl
IGxlYWQuIFN1cnJvZ2F0ZXMgYXJlIG5vdCBwcmludGVkIGFzIHRleHQuCisgICAgeyJceEVEXHhB
MFx4ODAiLCAiXCJcXHhFRFxceEEwXFx4ODBcIiJ9LAorICAgIC8vIExhc3Qgbm9uLXByaXZhdGUg
c3Vycm9nYXRlIGxlYWQuCisgICAgeyJceEVEXHhBRFx4QkYiLCAiXCJcXHhFRFxceEFEXFx4QkZc
IiJ9LAorICAgIC8vIEZpcnN0IHByaXZhdGUtdXNlIHN1cnJvZ2F0ZSBsZWFkLgorICAgIHsiXHhF
RFx4QUVceDgwIiwgIlwiXFx4RURcXHhBRVxceDgwXCIifSwKKyAgICAvLyBMYXN0IHByaXZhdGUt
dXNlIHN1cnJvZ2F0ZSBsZWFkLgorICAgIHsiXHhFRFx4QUZceEJGIiwgIlwiXFx4RURcXHhBRlxc
eEJGXCIifSwKKyAgICAvLyBNaWQtcG9pbnQgb2Ygc3Vycm9nYXRlIHRyYWlsLgorICAgIHsiXHhF
RFx4QjNceEJGIiwgIlwiXFx4RURcXHhCM1xceEJGXCIifSwKKyAgICAvLyBGaXJzdCB2YWxpZCBj
b2RlIHBvaW50IGFmdGVyIHN1cnJvZ2F0ZSByYW5nZSwgc2hvdWxkIGJlIHByaW50ZWQgYXMgdGV4
dCwKKyAgICAvLyB0b28uCisgICAgeyJceEVFXHg4MFx4ODAiLCAiXCJcXHhFRVxceDgwXFx4ODBc
IlxuICAgIEFzIFRleHQ6IFwi7oCAXCIifQorICB9OworCisgIGZvciAoaW50IGkgPSAwOyBpIDwg
aW50KHNpemVvZihrVGVzdGRhdGEpL3NpemVvZihrVGVzdGRhdGFbMF0pKTsgKytpKSB7CisgICAg
RVhQRUNUX1BSSU5UX1RPX1NUUklOR18oa1Rlc3RkYXRhW2ldWzBdLCBrVGVzdGRhdGFbaV1bMV0p
OworICB9Cit9CisKKyN1bmRlZiBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXworCitURVNUKFVuaXZl
cnNhbFRlcnNlUHJpbnRUZXN0LCBXb3Jrc0Zvck5vblJlZmVyZW5jZSkgeworICA6OnN0ZDo6c3Ry
aW5nc3RyZWFtIHNzOworICBVbml2ZXJzYWxUZXJzZVByaW50KDEyMywgJnNzKTsKKyAgRVhQRUNU
X0VRKCIxMjMiLCBzcy5zdHIoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFRlc3Qs
IFdvcmtzRm9yUmVmZXJlbmNlKSB7CisgIGNvbnN0IGludCYgbiA9IDEyMzsKKyAgOjpzdGQ6OnN0
cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2FsVGVyc2VQcmludChuLCAmc3MpOworICBFWFBFQ1Rf
RVEoIjEyMyIsIHNzLnN0cigpKTsKK30KKworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VGVzdCwg
V29ya3NGb3JDU3RyaW5nKSB7CisgIGNvbnN0IGNoYXIqIHMxID0gImFiYyI7CisgIDo6c3RkOjpz
dHJpbmdzdHJlYW0gc3MxOworICBVbml2ZXJzYWxUZXJzZVByaW50KHMxLCAmc3MxKTsKKyAgRVhQ
RUNUX0VRKCJcImFiY1wiIiwgc3MxLnN0cigpKTsKKworICBjaGFyKiBzMiA9IGNvbnN0X2Nhc3Q8
Y2hhcio+KHMxKTsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczI7CisgIFVuaXZlcnNhbFRlcnNl
UHJpbnQoczIsICZzczIpOworICBFWFBFQ1RfRVEoIlwiYWJjXCIiLCBzczIuc3RyKCkpOworCisg
IGNvbnN0IGNoYXIqIHMzID0gTlVMTDsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczM7CisgIFVu
aXZlcnNhbFRlcnNlUHJpbnQoczMsICZzczMpOworICBFWFBFQ1RfRVEoIk5VTEwiLCBzczMuc3Ry
KCkpOworfQorCitURVNUKFVuaXZlcnNhbFByaW50VGVzdCwgV29ya3NGb3JOb25SZWZlcmVuY2Up
IHsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2FsUHJpbnQoMTIzLCAmc3Mp
OworICBFWFBFQ1RfRVEoIjEyMyIsIHNzLnN0cigpKTsKK30KKworVEVTVChVbml2ZXJzYWxQcmlu
dFRlc3QsIFdvcmtzRm9yUmVmZXJlbmNlKSB7CisgIGNvbnN0IGludCYgbiA9IDEyMzsKKyAgOjpz
dGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgVW5pdmVyc2FsUHJpbnQobiwgJnNzKTsKKyAgRVhQRUNU
X0VRKCIxMjMiLCBzcy5zdHIoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsUHJpbnRUZXN0LCBXb3Jr
c0ZvckNTdHJpbmcpIHsKKyAgY29uc3QgY2hhciogczEgPSAiYWJjIjsKKyAgOjpzdGQ6OnN0cmlu
Z3N0cmVhbSBzczE7CisgIFVuaXZlcnNhbFByaW50KHMxLCAmc3MxKTsKKyAgRVhQRUNUX0VRKFBy
aW50UG9pbnRlcihzMSkgKyAiIHBvaW50aW5nIHRvIFwiYWJjXCIiLCBzdGQ6OnN0cmluZyhzczEu
c3RyKCkpKTsKKworICBjaGFyKiBzMiA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHMxKTsKKyAgOjpzdGQ6
OnN0cmluZ3N0cmVhbSBzczI7CisgIFVuaXZlcnNhbFByaW50KHMyLCAmc3MyKTsKKyAgRVhQRUNU
X0VRKFByaW50UG9pbnRlcihzMikgKyAiIHBvaW50aW5nIHRvIFwiYWJjXCIiLCBzdGQ6OnN0cmlu
ZyhzczIuc3RyKCkpKTsKKworICBjb25zdCBjaGFyKiBzMyA9IE5VTEw7CisgIDo6c3RkOjpzdHJp
bmdzdHJlYW0gc3MzOworICBVbml2ZXJzYWxQcmludChzMywgJnNzMyk7CisgIEVYUEVDVF9FUSgi
TlVMTCIsIHNzMy5zdHIoKSk7Cit9CisKK1RFU1QoVW5pdmVyc2FsUHJpbnRUZXN0LCBXb3Jrc0Zv
ckNoYXJBcnJheSkgeworICBjb25zdCBjaGFyIHN0cltdID0gIlwiTGluZVwwIDFcIlxuTGluZSAy
IjsKKyAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczE7CisgIFVuaXZlcnNhbFByaW50KHN0ciwgJnNz
MSk7CisgIEVYUEVDVF9FUSgiXCJcXFwiTGluZVxcMCAxXFxcIlxcbkxpbmUgMlwiIiwgc3MxLnN0
cigpKTsKKworICBjb25zdCBjaGFyIG11dGFibGVfc3RyW10gPSAiXCJMaW5lXDAgMVwiXG5MaW5l
IDIiOworICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMjsKKyAgVW5pdmVyc2FsUHJpbnQobXV0YWJs
ZV9zdHIsICZzczIpOworICBFWFBFQ1RfRVEoIlwiXFxcIkxpbmVcXDAgMVxcXCJcXG5MaW5lIDJc
IiIsIHNzMi5zdHIoKSk7Cit9CisKKyNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCisKK1RFU1QoVW5p
dmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhUcjEsIFByaW50c0Vt
cHR5VHVwbGUpIHsKKyAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVG
aWVsZHNUb1N0cmluZ3MoCisgICAgICA6OnN0ZDo6dHIxOjptYWtlX3R1cGxlKCkpOworICBFWFBF
Q1RfRVEoMHUsIHJlc3VsdC5zaXplKCkpOworfQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRU
dXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmludHNPbmVUdXBsZSkgeworICBTdHJp
bmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKKyAg
ICAgIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGUoMSkpOworICBBU1NFUlRfRVEoMXUsIHJlc3VsdC5z
aXplKCkpOworICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRbMF0pOworfQorCitURVNUKFVuaXZlcnNh
bFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmludHNUd29UdXBs
ZSkgeworICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1Rv
U3RyaW5ncygKKyAgICAgIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGUoMSwgJ2EnKSk7CisgIEFTU0VS
VF9FUSgydSwgcmVzdWx0LnNpemUoKSk7CisgIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7Cisg
IEVYUEVDVF9FUSgiJ2EnICg5NywgMHg2MSkiLCByZXN1bHRbMV0pOworfQorCitURVNUKFVuaXZl
cnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmludHNUZXJz
ZWx5KSB7CisgIGNvbnN0IGludCBuID0gMTsKKyAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxU
ZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoCisgICAgICA6OnN0ZDo6dHIxOjp0dXBsZTxj
b25zdCBpbnQmLCBjb25zdCBjaGFyKj4obiwgImEiKSk7CisgIEFTU0VSVF9FUSgydSwgcmVzdWx0
LnNpemUoKSk7CisgIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7CisgIEVYUEVDVF9FUSgiXCJh
XCIiLCByZXN1bHRbMV0pOworfQorCisjZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUKKwor
I2lmIEdURVNUX0hBU19TVERfVFVQTEVfCisKK1RFU1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxl
RmllbGRzVG9TdHJpbmdzVGVzdFdpdGhTdGQsIFByaW50c0VtcHR5VHVwbGUpIHsKKyAgU3RyaW5n
cyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoOjpzdGQ6
Om1ha2VfdHVwbGUoKSk7CisgIEVYUEVDVF9FUSgwdSwgcmVzdWx0LnNpemUoKSk7Cit9CisKK1RF
U1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhTdGQsIFBy
aW50c09uZVR1cGxlKSB7CisgIFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1
cGxlRmllbGRzVG9TdHJpbmdzKAorICAgICAgOjpzdGQ6Om1ha2VfdHVwbGUoMSkpOworICBBU1NF
UlRfRVEoMXUsIHJlc3VsdC5zaXplKCkpOworICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRbMF0pOwor
fQorCitURVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRo
U3RkLCBQcmludHNUd29UdXBsZSkgeworICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNl
UHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKKyAgICAgIDo6c3RkOjptYWtlX3R1cGxlKDEsICdh
JykpOworICBBU1NFUlRfRVEoMnUsIHJlc3VsdC5zaXplKCkpOworICBFWFBFQ1RfRVEoIjEiLCBy
ZXN1bHRbMF0pOworICBFWFBFQ1RfRVEoIidhJyAoOTcsIDB4NjEpIiwgcmVzdWx0WzFdKTsKK30K
KworVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0aFN0
ZCwgUHJpbnRzVGVyc2VseSkgeworICBjb25zdCBpbnQgbiA9IDE7CisgIFN0cmluZ3MgcmVzdWx0
ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAorICAgICAgOjpzdGQ6
OnR1cGxlPGNvbnN0IGludCYsIGNvbnN0IGNoYXIqPihuLCAiYSIpKTsKKyAgQVNTRVJUX0VRKDJ1
LCByZXN1bHQuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKCIxIiwgcmVzdWx0WzBdKTsKKyAgRVhQRUNU
X0VRKCJcImFcIiIsIHJlc3VsdFsxXSk7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9U
VVBMRV8KKworI2lmIEdURVNUX0hBU19BQlNMCisKK1RFU1QoUHJpbnRPcHRpb25hbFRlc3QsIEJh
c2ljKSB7CisgIGFic2w6Om9wdGlvbmFsPGludD4gdmFsdWU7CisgIEVYUEVDVF9FUSgiKG51bGxv
cHQpIiwgUHJpbnRUb1N0cmluZyh2YWx1ZSkpOworICB2YWx1ZSA9IHs3fTsKKyAgRVhQRUNUX0VR
KCIoNykiLCBQcmludFRvU3RyaW5nKHZhbHVlKSk7CisgIEVYUEVDVF9FUSgiKDEuMSkiLCBQcmlu
dFRvU3RyaW5nKGFic2w6Om9wdGlvbmFsPGRvdWJsZT57MS4xfSkpOworICBFWFBFQ1RfRVEoIihc
IkFcIikiLCBQcmludFRvU3RyaW5nKGFic2w6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPnsiQSJ9KSk7
Cit9CisKK3N0cnVjdCBOb25QcmludGFibGUgeworICB1bnNpZ25lZCBjaGFyIGNvbnRlbnRzID0g
MTc7Cit9OworCitURVNUKFByaW50T25lb2ZUZXN0LCBCYXNpYykgeworICB1c2luZyBUeXBlID0g
YWJzbDo6dmFyaWFudDxpbnQsIFN0cmVhbWFibGVJbkdsb2JhbCwgTm9uUHJpbnRhYmxlPjsKKyAg
RVhQRUNUX0VRKCIoJ2ludCcgd2l0aCB2YWx1ZSA3KSIsIFByaW50VG9TdHJpbmcoVHlwZSg3KSkp
OworICBFWFBFQ1RfRVEoIignU3RyZWFtYWJsZUluR2xvYmFsJyB3aXRoIHZhbHVlIFN0cmVhbWFi
bGVJbkdsb2JhbCkiLAorICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhUeXBlKFN0cmVhbWFibGVJ
bkdsb2JhbHt9KSkpOworICBFWFBFQ1RfRVEoCisgICAgICAiKCd0ZXN0aW5nOjpndGVzdF9wcmlu
dGVyc190ZXN0OjpOb25QcmludGFibGUnIHdpdGggdmFsdWUgMS1ieXRlIG9iamVjdCAiCisgICAg
ICAiPDExPikiLAorICAgICAgUHJpbnRUb1N0cmluZyhUeXBlKE5vblByaW50YWJsZXt9KSkpOwor
fQorI2VuZGlmICAvLyBHVEVTVF9IQVNfQUJTTAorCit9ICAvLyBuYW1lc3BhY2UgZ3Rlc3RfcHJp
bnRlcnNfdGVzdAorfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC1zaHVmZmxlLXRlc3QucHkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0LnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU3M2NjNWVjYTNmY2U0NThhYTNhYzNlMzk4NTBmNDdiYjM4MmU1NWIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtc2h1ZmZsZS10
ZXN0LnB5CkBAIC0wLDAgKzEsMzIzIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29w
eXJpZ2h0IDIwMDkgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyIiIlZlcmlmaWVzIHRoYXQgdGVzdCBzaHVmZmxpbmcgd29ya3MuIiIiCisKK2lt
cG9ydCBvcworaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKKworIyBDb21tYW5kIHRvIHJ1biB0aGUg
Z29vZ2xldGVzdC1zaHVmZmxlLXRlc3RfIHByb2dyYW0uCitDT01NQU5EID0gZ3Rlc3RfdGVzdF91
dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2dvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0XycpCisK
KyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBzaGFyZGluZy4KK1RPVEFMX1NI
QVJEU19FTlZfVkFSID0gJ0dURVNUX1RPVEFMX1NIQVJEUycKK1NIQVJEX0lOREVYX0VOVl9WQVIg
PSAnR1RFU1RfU0hBUkRfSU5ERVgnCisKK1RFU1RfRklMVEVSID0gJ0EqLkE6QSouQjpDKicKKwor
QUxMX1RFU1RTID0gW10KK0FDVElWRV9URVNUUyA9IFtdCitGSUxURVJFRF9URVNUUyA9IFtdCitT
SEFSREVEX1RFU1RTID0gW10KKworU0hVRkZMRURfQUxMX1RFU1RTID0gW10KK1NIVUZGTEVEX0FD
VElWRV9URVNUUyA9IFtdCitTSFVGRkxFRF9GSUxURVJFRF9URVNUUyA9IFtdCitTSFVGRkxFRF9T
SEFSREVEX1RFU1RTID0gW10KKworCitkZWYgQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKCk6Cisg
IHJldHVybiAnLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cycKKworCitkZWYgRmlsdGVy
RmxhZyh0ZXN0X2ZpbHRlcik6CisgIHJldHVybiAnLS1ndGVzdF9maWx0ZXI9JXMnICUgKHRlc3Rf
ZmlsdGVyLCkKKworCitkZWYgUmVwZWF0RmxhZyhuKToKKyAgcmV0dXJuICctLWd0ZXN0X3JlcGVh
dD0lcycgJSAobiwpCisKKworZGVmIFNodWZmbGVGbGFnKCk6CisgIHJldHVybiAnLS1ndGVzdF9z
aHVmZmxlJworCisKK2RlZiBSYW5kb21TZWVkRmxhZyhuKToKKyAgcmV0dXJuICctLWd0ZXN0X3Jh
bmRvbV9zZWVkPSVzJyAlIChuLCkKKworCitkZWYgUnVuQW5kUmV0dXJuT3V0cHV0KGV4dHJhX2Vu
diwgYXJncyk6CisgICIiIlJ1bnMgdGhlIHRlc3QgcHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgb3V0
cHV0LiIiIgorCisgIGVudmlyb25fY29weSA9IG9zLmVudmlyb24uY29weSgpCisgIGVudmlyb25f
Y29weS51cGRhdGUoZXh0cmFfZW52KQorCisgIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnBy
b2Nlc3MoW0NPTU1BTkRdICsgYXJncywgZW52PWVudmlyb25fY29weSkub3V0cHV0CisKKworZGVm
IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyhleHRyYV9lbnYsIGFyZ3MpOgorICAiIiJSdW5zIHRo
ZSB0ZXN0IHByb2dyYW0gYW5kIHJldHVybnMgYSBsaXN0IG9mIHRlc3QgbGlzdHMuCisKKyAgQXJn
czoKKyAgICBleHRyYV9lbnY6IGEgbWFwIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHRo
ZWlyIHZhbHVlcworICAgIGFyZ3M6IGNvbW1hbmQgbGluZSBmbGFncyB0byBwYXNzIHRvIGdvb2ds
ZXRlc3Qtc2h1ZmZsZS10ZXN0XworCisgIFJldHVybnM6CisgICAgQSBsaXN0IHdoZXJlIHRoZSBp
LXRoIGVsZW1lbnQgaXMgdGhlIGxpc3Qgb2YgdGVzdHMgcnVuIGluIHRoZSBpLXRoCisgICAgdGVz
dCBpdGVyYXRpb24uCisgICIiIgorCisgIHRlc3RfaXRlcmF0aW9ucyA9IFtdCisgIGZvciBsaW5l
IGluIFJ1bkFuZFJldHVybk91dHB1dChleHRyYV9lbnYsIGFyZ3MpLnNwbGl0KCdcbicpOgorICAg
IGlmIGxpbmUuc3RhcnRzd2l0aCgnLS0tLScpOgorICAgICAgdGVzdHMgPSBbXQorICAgICAgdGVz
dF9pdGVyYXRpb25zLmFwcGVuZCh0ZXN0cykKKyAgICBlbGlmIGxpbmUuc3RyaXAoKToKKyAgICAg
IHRlc3RzLmFwcGVuZChsaW5lLnN0cmlwKCkpICAjICdUZXN0Q2FzZU5hbWUuVGVzdE5hbWUnCisK
KyAgcmV0dXJuIHRlc3RfaXRlcmF0aW9ucworCisKK2RlZiBHZXRUZXN0Q2FzZXModGVzdHMpOgor
ICAiIiJSZXR1cm5zIGEgbGlzdCBvZiB0ZXN0IGNhc2VzIGluIHRoZSBnaXZlbiBmdWxsIHRlc3Qg
bmFtZXMuCisKKyAgQXJnczoKKyAgICB0ZXN0czogYSBsaXN0IG9mIGZ1bGwgdGVzdCBuYW1lcwor
CisgIFJldHVybnM6CisgICAgQSBsaXN0IG9mIHRlc3QgY2FzZXMgZnJvbSAndGVzdHMnLCBpbiB0
aGVpciBvcmlnaW5hbCBvcmRlci4KKyAgICBDb25zZWN1dGl2ZSBkdXBsaWNhdGVzIGFyZSByZW1v
dmVkLgorICAiIiIKKworICB0ZXN0X2Nhc2VzID0gW10KKyAgZm9yIHRlc3QgaW4gdGVzdHM6Cisg
ICAgdGVzdF9jYXNlID0gdGVzdC5zcGxpdCgnLicpWzBdCisgICAgaWYgbm90IHRlc3RfY2FzZSBp
biB0ZXN0X2Nhc2VzOgorICAgICAgdGVzdF9jYXNlcy5hcHBlbmQodGVzdF9jYXNlKQorCisgIHJl
dHVybiB0ZXN0X2Nhc2VzCisKKworZGVmIENhbGN1bGF0ZVRlc3RMaXN0cygpOgorICAiIiJDYWxj
dWxhdGVzIHRoZSBsaXN0IG9mIHRlc3RzIHJ1biB1bmRlciBkaWZmZXJlbnQgZmxhZ3MuIiIiCisK
KyAgaWYgbm90IEFMTF9URVNUUzoKKyAgICBBTExfVEVTVFMuZXh0ZW5kKAorICAgICAgICBHZXRU
ZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe30sIFtBbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcoKV0pWzBd
KQorCisgIGlmIG5vdCBBQ1RJVkVfVEVTVFM6CisgICAgQUNUSVZFX1RFU1RTLmV4dGVuZChHZXRU
ZXN0c0ZvckFsbEl0ZXJhdGlvbnMoe30sIFtdKVswXSkKKworICBpZiBub3QgRklMVEVSRURfVEVT
VFM6CisgICAgRklMVEVSRURfVEVTVFMuZXh0ZW5kKAorICAgICAgICBHZXRUZXN0c0ZvckFsbEl0
ZXJhdGlvbnMoe30sIFtGaWx0ZXJGbGFnKFRFU1RfRklMVEVSKV0pWzBdKQorCisgIGlmIG5vdCBT
SEFSREVEX1RFU1RTOgorICAgIFNIQVJERURfVEVTVFMuZXh0ZW5kKAorICAgICAgICBHZXRUZXN0
c0ZvckFsbEl0ZXJhdGlvbnMoe1RPVEFMX1NIQVJEU19FTlZfVkFSOiAnMycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU0hBUkRfSU5ERVhfRU5WX1ZBUjogJzEnfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKVswXSkKKworICBpZiBub3QgU0hVRkZMRURf
QUxMX1RFU1RTOgorICAgIFNIVUZGTEVEX0FMTF9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJ
dGVyYXRpb25zKAorICAgICAgICB7fSwgW0Fsc29SdW5EaXNhYmxlZFRlc3RzRmxhZygpLCBTaHVm
ZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0pWzBdKQorCisgIGlmIG5vdCBTSFVGRkxFRF9B
Q1RJVkVfVEVTVFM6CisgICAgU0hVRkZMRURfQUNUSVZFX1RFU1RTLmV4dGVuZChHZXRUZXN0c0Zv
ckFsbEl0ZXJhdGlvbnMoCisgICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZs
YWcoMSldKVswXSkKKworICBpZiBub3QgU0hVRkZMRURfRklMVEVSRURfVEVTVFM6CisgICAgU0hV
RkZMRURfRklMVEVSRURfVEVTVFMuZXh0ZW5kKEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKKyAg
ICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKSwgRmlsdGVyRmxhZyhU
RVNUX0ZJTFRFUildKVswXSkKKworICBpZiBub3QgU0hVRkZMRURfU0hBUkRFRF9URVNUUzoKKyAg
ICBTSFVGRkxFRF9TSEFSREVEX1RFU1RTLmV4dGVuZCgKKyAgICAgICAgR2V0VGVzdHNGb3JBbGxJ
dGVyYXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcxJ30sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSldKVsw
XSkKKworCitjbGFzcyBHVGVzdFNodWZmbGVVbml0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RD
YXNlKToKKyAgIiIiVGVzdHMgdGVzdCBzaHVmZmxpbmcuIiIiCisKKyAgZGVmIHNldFVwKHNlbGYp
OgorICAgIENhbGN1bGF0ZVRlc3RMaXN0cygpCisKKyAgZGVmIHRlc3RTaHVmZmxlUHJlc2VydmVz
TnVtYmVyT2ZUZXN0cyhzZWxmKToKKyAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihBTExfVEVTVFMp
LCBsZW4oU0hVRkZMRURfQUxMX1RFU1RTKSkKKyAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihBQ1RJ
VkVfVEVTVFMpLCBsZW4oU0hVRkZMRURfQUNUSVZFX1RFU1RTKSkKKyAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbihGSUxURVJFRF9URVNUUyksIGxlbihTSFVGRkxFRF9GSUxURVJFRF9URVNUUykpCisg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oU0hBUkRFRF9URVNUUyksIGxlbihTSFVGRkxFRF9TSEFS
REVEX1RFU1RTKSkKKworICBkZWYgdGVzdFNodWZmbGVDaGFuZ2VzVGVzdE9yZGVyKHNlbGYpOgor
ICAgIHNlbGYuYXNzZXJ0XyhTSFVGRkxFRF9BTExfVEVTVFMgIT0gQUxMX1RFU1RTLCBTSFVGRkxF
RF9BTExfVEVTVFMpCisgICAgc2VsZi5hc3NlcnRfKFNIVUZGTEVEX0FDVElWRV9URVNUUyAhPSBB
Q1RJVkVfVEVTVFMsIFNIVUZGTEVEX0FDVElWRV9URVNUUykKKyAgICBzZWxmLmFzc2VydF8oU0hV
RkZMRURfRklMVEVSRURfVEVTVFMgIT0gRklMVEVSRURfVEVTVFMsCisgICAgICAgICAgICAgICAg
IFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTKQorICAgIHNlbGYuYXNzZXJ0XyhTSFVGRkxFRF9TSEFS
REVEX1RFU1RTICE9IFNIQVJERURfVEVTVFMsCisgICAgICAgICAgICAgICAgIFNIVUZGTEVEX1NI
QVJERURfVEVTVFMpCisKKyAgZGVmIHRlc3RTaHVmZmxlQ2hhbmdlc1Rlc3RDYXNlT3JkZXIoc2Vs
Zik6CisgICAgc2VsZi5hc3NlcnRfKEdldFRlc3RDYXNlcyhTSFVGRkxFRF9BTExfVEVTVFMpICE9
IEdldFRlc3RDYXNlcyhBTExfVEVTVFMpLAorICAgICAgICAgICAgICAgICBHZXRUZXN0Q2FzZXMo
U0hVRkZMRURfQUxMX1RFU1RTKSkKKyAgICBzZWxmLmFzc2VydF8oCisgICAgICAgIEdldFRlc3RD
YXNlcyhTSFVGRkxFRF9BQ1RJVkVfVEVTVFMpICE9IEdldFRlc3RDYXNlcyhBQ1RJVkVfVEVTVFMp
LAorICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfQUNUSVZFX1RFU1RTKSkKKyAgICBzZWxm
LmFzc2VydF8oCisgICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9GSUxURVJFRF9URVNUUykg
IT0gR2V0VGVzdENhc2VzKEZJTFRFUkVEX1RFU1RTKSwKKyAgICAgICAgR2V0VGVzdENhc2VzKFNI
VUZGTEVEX0ZJTFRFUkVEX1RFU1RTKSkKKyAgICBzZWxmLmFzc2VydF8oCisgICAgICAgIEdldFRl
c3RDYXNlcyhTSFVGRkxFRF9TSEFSREVEX1RFU1RTKSAhPSBHZXRUZXN0Q2FzZXMoU0hBUkRFRF9U
RVNUUyksCisgICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9TSEFSREVEX1RFU1RTKSkKKwor
ICBkZWYgdGVzdFNodWZmbGVEb2VzTm90UmVwZWF0VGVzdChzZWxmKToKKyAgICBmb3IgdGVzdCBp
biBTSFVGRkxFRF9BTExfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIFNIVUZGTEVE
X0FMTF9URVNUUy5jb3VudCh0ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVh
cnMgbW9yZSB0aGFuIG9uY2UnICUgKHRlc3QsKSkKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9B
Q1RJVkVfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIFNIVUZGTEVEX0FDVElWRV9U
RVNUUy5jb3VudCh0ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgbW9y
ZSB0aGFuIG9uY2UnICUgKHRlc3QsKSkKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9GSUxURVJF
RF9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgU0hVRkZMRURfRklMVEVSRURfVEVT
VFMuY291bnQodGVzdCksCisgICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUg
dGhhbiBvbmNlJyAlICh0ZXN0LCkpCisgICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfU0hBUkRFRF9U
RVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgU0hVRkZMRURfU0hBUkRFRF9URVNUUy5j
b3VudCh0ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgbW9yZSB0aGFu
IG9uY2UnICUgKHRlc3QsKSkKKworICBkZWYgdGVzdFNodWZmbGVEb2VzTm90Q3JlYXRlTmV3VGVz
dChzZWxmKToKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9BTExfVEVTVFM6CisgICAgICBzZWxm
LmFzc2VydF8odGVzdCBpbiBBTExfVEVTVFMsICclcyBpcyBhbiBpbnZhbGlkIHRlc3QnICUgKHRl
c3QsKSkKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9BQ1RJVkVfVEVTVFM6CisgICAgICBzZWxm
LmFzc2VydF8odGVzdCBpbiBBQ1RJVkVfVEVTVFMsICclcyBpcyBhbiBpbnZhbGlkIHRlc3QnICUg
KHRlc3QsKSkKKyAgICBmb3IgdGVzdCBpbiBTSFVGRkxFRF9GSUxURVJFRF9URVNUUzoKKyAgICAg
IHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIEZJTFRFUkVEX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0
ZXN0JyAlICh0ZXN0LCkpCisgICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfU0hBUkRFRF9URVNUUzoK
KyAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIQVJERURfVEVTVFMsICclcyBpcyBhbiBpbnZh
bGlkIHRlc3QnICUgKHRlc3QsKSkKKworICBkZWYgdGVzdFNodWZmbGVJbmNsdWRlc0FsbFRlc3Rz
KHNlbGYpOgorICAgIGZvciB0ZXN0IGluIEFMTF9URVNUUzoKKyAgICAgIHNlbGYuYXNzZXJ0Xyh0
ZXN0IGluIFNIVUZGTEVEX0FMTF9URVNUUywgJyVzIGlzIG1pc3NpbmcnICUgKHRlc3QsKSkKKyAg
ICBmb3IgdGVzdCBpbiBBQ1RJVkVfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBT
SFVGRkxFRF9BQ1RJVkVfVEVTVFMsICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCisgICAgZm9y
IHRlc3QgaW4gRklMVEVSRURfVEVTVFM6CisgICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVG
RkxFRF9GSUxURVJFRF9URVNUUywgJyVzIGlzIG1pc3NpbmcnICUgKHRlc3QsKSkKKyAgICBmb3Ig
dGVzdCBpbiBTSEFSREVEX1RFU1RTOgorICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZM
RURfU0hBUkRFRF9URVNUUywgJyVzIGlzIG1pc3NpbmcnICUgKHRlc3QsKSkKKworICBkZWYgdGVz
dFNodWZmbGVMZWF2ZXNEZWF0aFRlc3RzQXRGcm9udChzZWxmKToKKyAgICBub25fZGVhdGhfdGVz
dF9mb3VuZCA9IEZhbHNlCisgICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTOgor
ICAgICAgaWYgJ0RlYXRoVGVzdC4nIGluIHRlc3Q6CisgICAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qg
bm9uX2RlYXRoX3Rlc3RfZm91bmQsCisgICAgICAgICAgICAgICAgICAgICAnJXMgYXBwZWFycyBh
ZnRlciBhIG5vbi1kZWF0aCB0ZXN0JyAlICh0ZXN0LCkpCisgICAgICBlbHNlOgorICAgICAgICBu
b25fZGVhdGhfdGVzdF9mb3VuZCA9IFRydWUKKworICBkZWYgX1ZlcmlmeVRlc3RDYXNlc0RvTm90
SW50ZXJsZWF2ZShzZWxmLCB0ZXN0cyk6CisgICAgdGVzdF9jYXNlcyA9IFtdCisgICAgZm9yIHRl
c3QgaW4gdGVzdHM6CisgICAgICBbdGVzdF9jYXNlLCBfXSA9IHRlc3Quc3BsaXQoJy4nKQorICAg
ICAgaWYgdGVzdF9jYXNlcyBhbmQgdGVzdF9jYXNlc1stMV0gIT0gdGVzdF9jYXNlOgorICAgICAg
ICB0ZXN0X2Nhc2VzLmFwcGVuZCh0ZXN0X2Nhc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MSwgdGVzdF9jYXNlcy5jb3VudCh0ZXN0X2Nhc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICdUZXN0IGNhc2UgJXMgaXMgbm90IGdyb3VwZWQgdG9nZXRoZXIgaW4gJXMnICUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAodGVzdF9jYXNlLCB0ZXN0cykpCisKKyAgZGVmIHRlc3RTaHVmZmxl
RG9lc05vdEludGVybGVhdmVUZXN0Q2FzZXMoc2VsZik6CisgICAgc2VsZi5fVmVyaWZ5VGVzdENh
c2VzRG9Ob3RJbnRlcmxlYXZlKFNIVUZGTEVEX0FMTF9URVNUUykKKyAgICBzZWxmLl9WZXJpZnlU
ZXN0Q2FzZXNEb05vdEludGVybGVhdmUoU0hVRkZMRURfQUNUSVZFX1RFU1RTKQorICAgIHNlbGYu
X1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50ZXJsZWF2ZShTSFVGRkxFRF9GSUxURVJFRF9URVNUUykK
KyAgICBzZWxmLl9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUoU0hVRkZMRURfU0hBUkRF
RF9URVNUUykKKworICBkZWYgdGVzdFNodWZmbGVSZXN0b3Jlc09yZGVyQWZ0ZXJFYWNoSXRlcmF0
aW9uKHNlbGYpOgorICAgICMgR2V0IHRoZSB0ZXN0IGxpc3RzIGluIGFsbCAzIGl0ZXJhdGlvbnMs
IHVzaW5nIHJhbmRvbSBzZWVkIDEsIDIsCisgICAgIyBhbmQgMyByZXNwZWN0aXZlbHkuICBHb29n
bGUgVGVzdCBwaWNrcyBhIGRpZmZlcmVudCBzZWVkIGluIGVhY2gKKyAgICAjIGl0ZXJhdGlvbiwg
YW5kIHRoaXMgdGVzdCBkZXBlbmRzIG9uIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uCisgICAg
IyBwaWNraW5nIHN1Y2Nlc3NpdmUgbnVtYmVycy4gIFRoaXMgZGVwZW5kZW5jeSBpcyBub3QgaWRl
YWwsIGJ1dAorICAgICMgbWFrZXMgdGhlIHRlc3QgbXVjaCBlYXNpZXIgdG8gd3JpdGUuCisgICAg
W3Rlc3RzX2luX2l0ZXJhdGlvbjEsIHRlc3RzX2luX2l0ZXJhdGlvbjIsIHRlc3RzX2luX2l0ZXJh
dGlvbjNdID0gKAorICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisgICAgICAgICAg
ICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpLCBSZXBlYXRGbGFnKDMpXSkp
CisKKyAgICAjIE1ha2Ugc3VyZSBydW5uaW5nIHRoZSB0ZXN0cyB3aXRoIHJhbmRvbSBzZWVkIDEg
Z2V0cyB0aGUgc2FtZQorICAgICMgb3JkZXIgYXMgaW4gaXRlcmF0aW9uIDEgYWJvdmUuCisgICAg
W3Rlc3RzX3dpdGhfc2VlZDFdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAorICAgICAgICB7
fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSkKKyAgICBzZWxmLmFzc2VydEVx
dWFsKHRlc3RzX2luX2l0ZXJhdGlvbjEsIHRlc3RzX3dpdGhfc2VlZDEpCisKKyAgICAjIE1ha2Ug
c3VyZSBydW5uaW5nIHRoZSB0ZXN0cyB3aXRoIHJhbmRvbSBzZWVkIDIgZ2V0cyB0aGUgc2FtZQor
ICAgICMgb3JkZXIgYXMgaW4gaXRlcmF0aW9uIDIgYWJvdmUuICBTdWNjZXNzIG1lYW5zIHRoYXQg
R29vZ2xlIFRlc3QKKyAgICAjIGNvcnJlY3RseSByZXN0b3JlcyB0aGUgdGVzdCBvcmRlciBiZWZv
cmUgcmUtc2h1ZmZsaW5nIGF0IHRoZQorICAgICMgYmVnaW5uaW5nIG9mIGl0ZXJhdGlvbiAyLgor
ICAgIFt0ZXN0c193aXRoX3NlZWQyXSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKKyAgICAg
ICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygyKV0pCisgICAgc2VsZi5hc3Nl
cnRFcXVhbCh0ZXN0c19pbl9pdGVyYXRpb24yLCB0ZXN0c193aXRoX3NlZWQyKQorCisgICAgIyBN
YWtlIHN1cmUgcnVubmluZyB0aGUgdGVzdHMgd2l0aCByYW5kb20gc2VlZCAzIGdldHMgdGhlIHNh
bWUKKyAgICAjIG9yZGVyIGFzIGluIGl0ZXJhdGlvbiAzIGFib3ZlLiAgU3VjY2VzcyBtZWFucyB0
aGF0IEdvb2dsZSBUZXN0CisgICAgIyBjb3JyZWN0bHkgcmVzdG9yZXMgdGhlIHRlc3Qgb3JkZXIg
YmVmb3JlIHJlLXNodWZmbGluZyBhdCB0aGUKKyAgICAjIGJlZ2lubmluZyBvZiBpdGVyYXRpb24g
My4KKyAgICBbdGVzdHNfd2l0aF9zZWVkM10gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCisg
ICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMyldKQorICAgIHNlbGYu
YXNzZXJ0RXF1YWwodGVzdHNfaW5faXRlcmF0aW9uMywgdGVzdHNfd2l0aF9zZWVkMykKKworICBk
ZWYgdGVzdFNodWZmbGVHZW5lcmF0ZXNOZXdPcmRlckluRWFjaEl0ZXJhdGlvbihzZWxmKToKKyAg
ICBbdGVzdHNfaW5faXRlcmF0aW9uMSwgdGVzdHNfaW5faXRlcmF0aW9uMiwgdGVzdHNfaW5faXRl
cmF0aW9uM10gPSAoCisgICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKKyAgICAgICAg
ICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSksIFJlcGVhdEZsYWcoMyld
KSkKKworICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0c19pbl9pdGVyYXRpb24xICE9IHRlc3RzX2luX2l0
ZXJhdGlvbjIsCisgICAgICAgICAgICAgICAgIHRlc3RzX2luX2l0ZXJhdGlvbjEpCisgICAgc2Vs
Zi5hc3NlcnRfKHRlc3RzX2luX2l0ZXJhdGlvbjEgIT0gdGVzdHNfaW5faXRlcmF0aW9uMywKKyAg
ICAgICAgICAgICAgICAgdGVzdHNfaW5faXRlcmF0aW9uMSkKKyAgICBzZWxmLmFzc2VydF8odGVz
dHNfaW5faXRlcmF0aW9uMiAhPSB0ZXN0c19pbl9pdGVyYXRpb24zLAorICAgICAgICAgICAgICAg
ICB0ZXN0c19pbl9pdGVyYXRpb24yKQorCisgIGRlZiB0ZXN0U2h1ZmZsZVNoYXJkZWRUZXN0c1By
ZXNlcnZlc1BhcnRpdGlvbihzZWxmKToKKyAgICAjIElmIHdlIHJ1biBNIHRlc3RzIG9uIE4gc2hh
cmRzLCB0aGUgc2FtZSBNIHRlc3RzIHNob3VsZCBiZSBydW4gaW4KKyAgICAjIHRvdGFsLCByZWdh
cmRsZXNzIG9mIHRoZSByYW5kb20gc2VlZHMgdXNlZCBieSB0aGUgc2hhcmRzLgorICAgIFt0ZXN0
czFdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRF9JTkRFWF9F
TlZfVkFSOiAnMCd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtT
aHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0pCisgICAgW3Rlc3RzMl0gPSBHZXRUZXN0
c0ZvckFsbEl0ZXJhdGlvbnMoe1RPVEFMX1NIQVJEU19FTlZfVkFSOiAnMycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcxJ30s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NodWZmbGVGbGFnKCks
IFJhbmRvbVNlZWRGbGFnKDIwKV0pCisgICAgW3Rlc3RzM10gPSBHZXRUZXN0c0ZvckFsbEl0ZXJh
dGlvbnMoe1RPVEFMX1NIQVJEU19FTlZfVkFSOiAnMycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcyJ30sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRG
bGFnKDI1KV0pCisgICAgc29ydGVkX3NoYXJkZWRfdGVzdHMgPSB0ZXN0czEgKyB0ZXN0czIgKyB0
ZXN0czMKKyAgICBzb3J0ZWRfc2hhcmRlZF90ZXN0cy5zb3J0KCkKKyAgICBzb3J0ZWRfYWN0aXZl
X3Rlc3RzID0gW10KKyAgICBzb3J0ZWRfYWN0aXZlX3Rlc3RzLmV4dGVuZChBQ1RJVkVfVEVTVFMp
CisgICAgc29ydGVkX2FjdGl2ZV90ZXN0cy5zb3J0KCkKKyAgICBzZWxmLmFzc2VydEVxdWFsKHNv
cnRlZF9hY3RpdmVfdGVzdHMsIHNvcnRlZF9zaGFyZGVkX3Rlc3RzKQorCitpZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgorICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXNodWZmbGUtdGVzdF8uY2MgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qtc2h1ZmZsZS10ZXN0Xy5jYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xZmU1ZjZhYmEyYTVlMGZmY2FiOTE1ZTQ2MzhkMjNmNThjZjQ4ZmYwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXNo
dWZmbGUtdGVzdF8uY2MKQEAgLTAsMCArMSwxMDIgQEAKKy8vIENvcHlyaWdodCAyMDA5LCBHb29n
bGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBWZXJpZmllcyB0aGF0IHRlc3Qgc2h1ZmZsaW5n
IHdvcmtzLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNwYWNlIHsKKwordXNp
bmcgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyOwordXNpbmcgOjp0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6TWVzc2FnZTsKK3VzaW5nIDo6dGVzdGlu
Zzo6VGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzOwordXNpbmcgOjp0
ZXN0aW5nOjpUZXN0SW5mbzsKK3VzaW5nIDo6dGVzdGluZzo6VW5pdFRlc3Q7Cit1c2luZyA6OnRl
c3Rpbmc6OmludGVybmFsOjpzY29wZWRfcHRyOworCisvLyBUaGUgdGVzdCBtZXRob2RzIGFyZSBl
bXB0eSwgYXMgdGhlIHNvbGUgcHVycG9zZSBvZiB0aGlzIHByb2dyYW0gaXMKKy8vIHRvIHByaW50
IHRoZSB0ZXN0IG5hbWVzIGJlZm9yZS9hZnRlciBzaHVmZmxpbmcuCisKK2NsYXNzIEEgOiBwdWJs
aWMgVGVzdCB7fTsKK1RFU1RfRihBLCBBKSB7fQorVEVTVF9GKEEsIEIpIHt9CisKK1RFU1QoQURl
YXRoVGVzdCwgQSkge30KK1RFU1QoQURlYXRoVGVzdCwgQikge30KK1RFU1QoQURlYXRoVGVzdCwg
Qykge30KKworVEVTVChCLCBBKSB7fQorVEVTVChCLCBCKSB7fQorVEVTVChCLCBDKSB7fQorVEVT
VChCLCBESVNBQkxFRF9EKSB7fQorVEVTVChCLCBESVNBQkxFRF9FKSB7fQorCitURVNUKEJEZWF0
aFRlc3QsIEEpIHt9CitURVNUKEJEZWF0aFRlc3QsIEIpIHt9CisKK1RFU1QoQywgQSkge30KK1RF
U1QoQywgQikge30KK1RFU1QoQywgQykge30KK1RFU1QoQywgRElTQUJMRURfRCkge30KKworVEVT
VChDRGVhdGhUZXN0LCBBKSB7fQorCitURVNUKERJU0FCTEVEX0QsIEEpIHt9CitURVNUKERJU0FC
TEVEX0QsIERJU0FCTEVEX0IpIHt9CisKKy8vIFRoaXMgcHJpbnRlciBwcmludHMgdGhlIGZ1bGwg
dGVzdCBuYW1lcyBvbmx5LCBzdGFydGluZyBlYWNoIHRlc3QKKy8vIGl0ZXJhdGlvbiB3aXRoIGEg
Ii0tLS0iIG1hcmtlci4KK2NsYXNzIFRlc3ROYW1lUHJpbnRlciA6IHB1YmxpYyBFbXB0eVRlc3RF
dmVudExpc3RlbmVyIHsKKyBwdWJsaWM6CisgIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25T
dGFydChjb25zdCBVbml0VGVzdCYgLyogdW5pdF90ZXN0ICovLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IC8qIGl0ZXJhdGlvbiAqLykgeworICAgIHByaW50ZigiLS0t
LVxuIik7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8m
IHRlc3RfaW5mbykgeworICAgIHByaW50ZigiJXMuJXNcbiIsIHRlc3RfaW5mby50ZXN0X2Nhc2Vf
bmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKKyAgfQorfTsKKworfSAgLy8gbmFtZXNwYWNlCisK
K2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICBJbml0R29vZ2xlVGVzdCgmYXJn
YywgYXJndik7CisKKyAgLy8gUmVwbGFjZXMgdGhlIGRlZmF1bHQgcHJpbnRlciB3aXRoIFRlc3RO
YW1lUHJpbnRlciwgd2hpY2ggcHJpbnRzCisgIC8vIHRoZSB0ZXN0IG5hbWUgb25seS4KKyAgVGVz
dEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMgPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlz
dGVuZXJzKCk7CisgIGRlbGV0ZSBsaXN0ZW5lcnMuUmVsZWFzZShsaXN0ZW5lcnMuZGVmYXVsdF9y
ZXN1bHRfcHJpbnRlcigpKTsKKyAgbGlzdGVuZXJzLkFwcGVuZChuZXcgVGVzdE5hbWVQcmludGVy
KTsKKworICByZXR1cm4gUlVOX0FMTF9URVNUUygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRlc3QtcGFydC10ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRlc3QtcGFydC10ZXN0LmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNkMmQ2ZjllODU4ZjUyNzliYTVhMTZhNWQxYTZlMzdhZmZlOTEwYWQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdGVzdC1w
YXJ0LXRlc3QuY2MKQEAgLTAsMCArMSwyMDUgQEAKKy8vIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJ
bmMuCisvLyBBbGwgUmlnaHRzIFJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgiCisK
KyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCit1c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwordXNp
bmcgdGVzdGluZzo6VGVzdDsKK3VzaW5nIHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OwordXNpbmcg
dGVzdGluZzo6VGVzdFBhcnRSZXN1bHRBcnJheTsKKworbmFtZXNwYWNlIHsKKworLy8gVGVzdHMg
dGhlIFRlc3RQYXJ0UmVzdWx0IGNsYXNzLgorCisvLyBUaGUgdGVzdCBmaXh0dXJlIGZvciB0ZXN0
aW5nIFRlc3RQYXJ0UmVzdWx0LgorY2xhc3MgVGVzdFBhcnRSZXN1bHRUZXN0IDogcHVibGljIFRl
c3QgeworIHByb3RlY3RlZDoKKyAgVGVzdFBhcnRSZXN1bHRUZXN0KCkKKyAgICAgIDogcjFfKFRl
c3RQYXJ0UmVzdWx0OjprU3VjY2VzcywgImZvby9iYXIuY2MiLCAxMCwgIlN1Y2Nlc3MhIiksCisg
ICAgICAgIHIyXyhUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwgImZvby9iYXIuY2Mi
LCAtMSwgIkZhaWx1cmUhIiksCisgICAgICAgIHIzXyhUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFp
bHVyZSwgTlVMTCwgLTEsICJGYWlsdXJlISIpIHt9CisKKyAgVGVzdFBhcnRSZXN1bHQgcjFfLCBy
Ml8sIHIzXzsKK307CisKKworVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgQ29uc3RydWN0b3JX
b3JrcykgeworICBNZXNzYWdlIG1lc3NhZ2U7CisgIG1lc3NhZ2UgPDwgInNvbWV0aGluZyBpcyB0
ZXJyaWJseSB3cm9uZyI7CisgIG1lc3NhZ2UgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHRl
c3Rpbmc6OmludGVybmFsOjprU3RhY2tUcmFjZU1hcmtlcik7CisgIG1lc3NhZ2UgPDwgInNvbWUg
dW5pbXBvcnRhbnQgc3RhY2sgdHJhY2UiOworCisgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IHJlc3Vs
dChUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJzb21lX2ZpbGUuY2MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLkdldFN0cmluZygpLmNf
c3RyKCkpOworCisgIEVYUEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwg
cmVzdWx0LnR5cGUoKSk7CisgIEVYUEVDVF9TVFJFUSgic29tZV9maWxlLmNjIiwgcmVzdWx0LmZp
bGVfbmFtZSgpKTsKKyAgRVhQRUNUX0VRKDQyLCByZXN1bHQubGluZV9udW1iZXIoKSk7CisgIEVY
UEVDVF9TVFJFUShtZXNzYWdlLkdldFN0cmluZygpLmNfc3RyKCksIHJlc3VsdC5tZXNzYWdlKCkp
OworICBFWFBFQ1RfU1RSRVEoInNvbWV0aGluZyBpcyB0ZXJyaWJseSB3cm9uZyIsIHJlc3VsdC5z
dW1tYXJ5KCkpOworfQorCitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBSZXN1bHRBY2Nlc3Nv
cnNXb3JrKSB7CisgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IHN1Y2Nlc3MoVGVzdFBhcnRSZXN1bHQ6
OmtTdWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlLmNjIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAibWVzc2FnZSIpOworICBFWFBFQ1RfVFJVRShzdWNjZXNzLnBhc3NlZCgpKTsKKyAg
RVhQRUNUX0ZBTFNFKHN1Y2Nlc3MuZmFpbGVkKCkpOworICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcy5u
b25mYXRhbGx5X2ZhaWxlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MuZmF0YWxseV9mYWls
ZWQoKSk7CisKKyAgY29uc3QgVGVzdFBhcnRSZXN1bHQgbm9uZmF0YWxfZmFpbHVyZShUZXN0UGFy
dFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZmlsZS5jYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3Nh
Z2UiKTsKKyAgRVhQRUNUX0ZBTFNFKG5vbmZhdGFsX2ZhaWx1cmUucGFzc2VkKCkpOworICBFWFBF
Q1RfVFJVRShub25mYXRhbF9mYWlsdXJlLmZhaWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUobm9uZmF0
YWxfZmFpbHVyZS5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKG5vbmZhdGFs
X2ZhaWx1cmUuZmF0YWxseV9mYWlsZWQoKSk7CisKKyAgY29uc3QgVGVzdFBhcnRSZXN1bHQgZmF0
YWxfZmFpbHVyZShUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5jYyIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Im1lc3NhZ2UiKTsKKyAgRVhQRUNUX0ZBTFNFKGZhdGFsX2ZhaWx1cmUucGFzc2VkKCkpOworICBF
WFBFQ1RfVFJVRShmYXRhbF9mYWlsdXJlLmZhaWxlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKGZhdGFs
X2ZhaWx1cmUubm9uZmF0YWxseV9mYWlsZWQoKSk7CisgIEVYUEVDVF9UUlVFKGZhdGFsX2ZhaWx1
cmUuZmF0YWxseV9mYWlsZWQoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0Ojp0eXBl
KCkuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCB0eXBlKSB7CisgIEVYUEVDVF9FUShUZXN0
UGFydFJlc3VsdDo6a1N1Y2Nlc3MsIHIxXy50eXBlKCkpOworICBFWFBFQ1RfRVEoVGVzdFBhcnRS
ZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsIHIyXy50eXBlKCkpOworICBFWFBFQ1RfRVEoVGVzdFBh
cnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsIHIzXy50eXBlKCkpOworfQorCisvLyBUZXN0cyBUZXN0
UGFydFJlc3VsdDo6ZmlsZV9uYW1lKCkuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBmaWxl
X25hbWUpIHsKKyAgRVhQRUNUX1NUUkVRKCJmb28vYmFyLmNjIiwgcjFfLmZpbGVfbmFtZSgpKTsK
KyAgRVhQRUNUX1NUUkVRKE5VTEwsIHIzXy5maWxlX25hbWUoKSk7Cit9CisKKy8vIFRlc3RzIFRl
c3RQYXJ0UmVzdWx0OjpsaW5lX251bWJlcigpLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwg
bGluZV9udW1iZXIpIHsKKyAgRVhQRUNUX0VRKDEwLCByMV8ubGluZV9udW1iZXIoKSk7CisgIEVY
UEVDVF9FUSgtMSwgcjJfLmxpbmVfbnVtYmVyKCkpOworfQorCisvLyBUZXN0cyBUZXN0UGFydFJl
c3VsdDo6bWVzc2FnZSgpLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgbWVzc2FnZSkgewor
ICBFWFBFQ1RfU1RSRVEoIlN1Y2Nlc3MhIiwgcjFfLm1lc3NhZ2UoKSk7Cit9CisKKy8vIFRlc3Rz
IFRlc3RQYXJ0UmVzdWx0OjpwYXNzZWQoKS4KK1RFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIFBh
c3NlZCkgeworICBFWFBFQ1RfVFJVRShyMV8ucGFzc2VkKCkpOworICBFWFBFQ1RfRkFMU0UocjJf
LnBhc3NlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHIzXy5wYXNzZWQoKSk7Cit9CisKKy8vIFRlc3Rz
IFRlc3RQYXJ0UmVzdWx0OjpmYWlsZWQoKS4KK1RFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIEZh
aWxlZCkgeworICBFWFBFQ1RfRkFMU0UocjFfLmZhaWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUocjJf
LmZhaWxlZCgpKTsKKyAgRVhQRUNUX1RSVUUocjNfLmZhaWxlZCgpKTsKK30KKworLy8gVGVzdHMg
VGVzdFBhcnRSZXN1bHQ6OmZhdGFsbHlfZmFpbGVkKCkuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRU
ZXN0LCBGYXRhbGx5RmFpbGVkKSB7CisgIEVYUEVDVF9GQUxTRShyMV8uZmF0YWxseV9mYWlsZWQo
KSk7CisgIEVYUEVDVF9GQUxTRShyMl8uZmF0YWxseV9mYWlsZWQoKSk7CisgIEVYUEVDVF9UUlVF
KHIzXy5mYXRhbGx5X2ZhaWxlZCgpKTsKK30KKworLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6Om5v
bmZhdGFsbHlfZmFpbGVkKCkuCitURVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBOb25mYXRhbGx5
RmFpbGVkKSB7CisgIEVYUEVDVF9GQUxTRShyMV8ubm9uZmF0YWxseV9mYWlsZWQoKSk7CisgIEVY
UEVDVF9UUlVFKHIyXy5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKKyAgRVhQRUNUX0ZBTFNFKHIzXy5u
b25mYXRhbGx5X2ZhaWxlZCgpKTsKK30KKworLy8gVGVzdHMgdGhlIFRlc3RQYXJ0UmVzdWx0QXJy
YXkgY2xhc3MuCisKK2NsYXNzIFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0IDogcHVibGljIFRlc3Qg
eworIHByb3RlY3RlZDoKKyAgVGVzdFBhcnRSZXN1bHRBcnJheVRlc3QoKQorICAgICAgOiByMV8o
VGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsICJmb28vYmFyLmNjIiwgLTEsICJGYWls
dXJlIDEiKSwKKyAgICAgICAgcjJfKFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLCAiZm9v
L2Jhci5jYyIsIC0xLCAiRmFpbHVyZSAyIikge30KKworICBjb25zdCBUZXN0UGFydFJlc3VsdCBy
MV8sIHIyXzsKK307CisKKy8vIFRlc3RzIHRoYXQgVGVzdFBhcnRSZXN1bHRBcnJheSBpbml0aWFs
bHkgaGFzIHNpemUgMC4KK1RFU1RfRihUZXN0UGFydFJlc3VsdEFycmF5VGVzdCwgSW5pdGlhbFNp
emVJc1plcm8pIHsKKyAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOworICBFWFBFQ1RfRVEo
MCwgcmVzdWx0cy5zaXplKCkpOworfQorCisvLyBUZXN0cyB0aGF0IFRlc3RQYXJ0UmVzdWx0QXJy
YXkgY29udGFpbnMgdGhlIGdpdmVuIFRlc3RQYXJ0UmVzdWx0CisvLyBhZnRlciBvbmUgQXBwZW5k
KCkgb3BlcmF0aW9uLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0LCBDb250YWluc0dp
dmVuUmVzdWx0QWZ0ZXJBcHBlbmQpIHsKKyAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOwor
ICByZXN1bHRzLkFwcGVuZChyMV8pOworICBFWFBFQ1RfRVEoMSwgcmVzdWx0cy5zaXplKCkpOwor
ICBFWFBFQ1RfU1RSRVEoIkZhaWx1cmUgMSIsIHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMCku
bWVzc2FnZSgpKTsKK30KKworLy8gVGVzdHMgdGhhdCBUZXN0UGFydFJlc3VsdEFycmF5IGNvbnRh
aW5zIHRoZSBnaXZlbiBUZXN0UGFydFJlc3VsdHMKKy8vIGFmdGVyIHR3byBBcHBlbmQoKSBvcGVy
YXRpb25zLgorVEVTVF9GKFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0LCBDb250YWluc0dpdmVuUmVz
dWx0c0FmdGVyVHdvQXBwZW5kcykgeworICBUZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7Cisg
IHJlc3VsdHMuQXBwZW5kKHIxXyk7CisgIHJlc3VsdHMuQXBwZW5kKHIyXyk7CisgIEVYUEVDVF9F
USgyLCByZXN1bHRzLnNpemUoKSk7CisgIEVYUEVDVF9TVFJFUSgiRmFpbHVyZSAxIiwgcmVzdWx0
cy5HZXRUZXN0UGFydFJlc3VsdCgwKS5tZXNzYWdlKCkpOworICBFWFBFQ1RfU1RSRVEoIkZhaWx1
cmUgMiIsIHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMSkubWVzc2FnZSgpKTsKK30KKwordHlw
ZWRlZiBUZXN0UGFydFJlc3VsdEFycmF5VGVzdCBUZXN0UGFydFJlc3VsdEFycmF5RGVhdGhUZXN0
OworCisvLyBUZXN0cyB0aGF0IHRoZSBwcm9ncmFtIGRpZXMgd2hlbiBHZXRUZXN0UGFydFJlc3Vs
dCgpIGlzIGNhbGxlZCB3aXRoCisvLyBhbiBpbnZhbGlkIGluZGV4LgorVEVTVF9GKFRlc3RQYXJ0
UmVzdWx0QXJyYXlEZWF0aFRlc3QsIERpZXNXaGVuSW5kZXhJc091dE9mQm91bmQpIHsKKyAgVGVz
dFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOworICByZXN1bHRzLkFwcGVuZChyMV8pOworCisgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQocmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgtMSksICIi
KTsKKyAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChyZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0
KDEpLCAiIik7Cit9CisKKy8vIEZJWE1FOiBBZGQgYSB0ZXN0IGZvciB0aGUgY2xhc3MgSGFzTmV3
RmF0YWxGYWlsdXJlSGVscGVyLgorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10ZXN0Ml90ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRlc3QyX3Rlc3QuY2MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzJmOThkYzdkMWMzZTkwOTc1OGJhNjA3NzJlOTc3NDk4Y2U4MWZmMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10ZXN0Ml90ZXN0
LmNjCkBAIC0wLDAgKzEsNjEgQEAKKy8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgorLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
Ky8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
Ky8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworLy8KKy8vIFRlc3RzIGZvciBHb29nbGUgVGVzdCBpdHNlbGYuICBUaGlzIHZl
cmlmaWVzIHRoYXQgdGhlIGJhc2ljIGNvbnN0cnVjdHMgb2YKKy8vIEdvb2dsZSBUZXN0IHdvcmsu
CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImdvb2dsZXRlc3QtcGFyYW0t
dGVzdC10ZXN0LmgiCisKK3VzaW5nIDo6dGVzdGluZzo6VmFsdWVzOwordXNpbmcgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I7CisKKy8vIFRlc3RzIHRoYXQgZ2VuZXJhdG9ycyBk
ZWZpbmVkIGluIGEgZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXQKKy8vIGFyZSBmdW5jdGlvbmFs
LiBUaGUgdGVzdCB1c2luZyBleHRlcm5fZ2VuXzIgaXMgZGVmaW5lZAorLy8gaW4gZ29vZ2xldGVz
dC1wYXJhbS10ZXN0LXRlc3QuY2MuCitQYXJhbUdlbmVyYXRvcjxpbnQ+IGV4dGVybl9nZW5fMiA9
IFZhbHVlcygzMyk7CisKKy8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBj
YW4gYmUgZGVmaW5lZCBpbiBvbmUgdHJhbnNsYXRpb24gdW5pdAorLy8gYW5kIGluc3RhbnRpYXRl
ZCBpbiBhbm90aGVyLiBUaGUgdGVzdCBpcyBkZWZpbmVkIGluCisvLyBnb29nbGV0ZXN0LXBhcmFt
LXRlc3QtdGVzdC5jYyBhbmQgRXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCBmaXh0dXJlIGNsYXNz
IGlzCisvLyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oLgorSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoTXVsdGlwbGVzT2YzMywKKyAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVy
bmFsSW5zdGFudGlhdGlvblRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMzMs
IDY2KSk7CisKKy8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUg
aW5zdGFudGlhdGVkCisvLyBpbiBtdWx0aXBsZSB0cmFuc2xhdGlvbiB1bml0cy4gQW5vdGhlciBp
bnN0YW50aWF0aW9uIGlzIGRlZmluZWQKKy8vIGluIGdvb2dsZXRlc3QtcGFyYW0tdGVzdC10ZXN0
LmNjIGFuZAorLy8gSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0IGZp
eHR1cmUgaXMgZGVmaW5lZCBpbgorLy8gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmgKK0lOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3Rh
bnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbHVlcyg0MiozLCA0Mio0LCA0Mio1KSk7CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3QucHkg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVy
ZS10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2Y2I5ZjZkYTMxZGVhZGZkN2VlZmQyMzVlOWIzN2RmMjlm
YjNiYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0LnB5CkBAIC0wLDAgKzEsMTY5IEBACisjIS91
c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJUZXN0cyBHb29nbGUg
VGVzdCdzIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQuCisK
K1RoaXMgc2NyaXB0IGludm9rZXMgZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfIChh
IHByb2dyYW0gd3JpdHRlbiB3aXRoCitHb29nbGUgVGVzdCkgd2l0aCBkaWZmZXJlbnQgZW52aXJv
bm1lbnRzIGFuZCBjb21tYW5kIGxpbmUgZmxhZ3MuCisiIiIKKworaW1wb3J0IG9zCitpbXBvcnQg
Z3Rlc3RfdGVzdF91dGlscworCisKKyMgQ29uc3RhbnRzLgorCisjIFRoZSBjb21tYW5kIGxpbmUg
ZmxhZyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUuCitU
SFJPV19PTl9GQUlMVVJFID0gJ2d0ZXN0X3Rocm93X29uX2ZhaWx1cmUnCisKKyMgUGF0aCB0byB0
aGUgZ29vZ2xldGVzdC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfIHByb2dyYW0sIGNvbXBpbGVkIHdp
dGgKKyMgZXhjZXB0aW9ucyBkaXNhYmxlZC4KK0VYRV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5H
ZXRUZXN0RXhlY3V0YWJsZVBhdGgoCisgICAgJ2dvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10
ZXN0XycpCisKKworIyBVdGlsaXRpZXMuCisKKworZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1
ZSk6CisgICIiIlNldHMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSBnaXZlbiB2YWx1ZTsg
dW5zZXRzIGl0IHdoZW4gdGhlCisgIGdpdmVuIHZhbHVlIGlzIE5vbmUuCisgICIiIgorCisgIGVu
dl92YXIgPSBlbnZfdmFyLnVwcGVyKCkKKyAgaWYgdmFsdWUgaXMgbm90IE5vbmU6CisgICAgb3Mu
ZW52aXJvbltlbnZfdmFyXSA9IHZhbHVlCisgIGVsaWYgZW52X3ZhciBpbiBvcy5lbnZpcm9uOgor
ICAgIGRlbCBvcy5lbnZpcm9uW2Vudl92YXJdCisKKworZGVmIFJ1bihjb21tYW5kKToKKyAgIiIi
UnVucyBhIGNvbW1hbmQ7IHJldHVybnMgVHJ1ZS9GYWxzZSBpZiBpdHMgZXhpdCBjb2RlIGlzL2lz
bid0IDAuIiIiCisKKyAgcHJpbnQgJ1J1bm5pbmcgIiVzIi4gLiAuJyAlICcgJy5qb2luKGNvbW1h
bmQpCisgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKKyAgcmV0dXJu
IHAuZXhpdGVkIGFuZCBwLmV4aXRfY29kZSA9PSAwCisKKworIyBUaGUgdGVzdHMuICBGSVhNRTog
cmVmYWN0b3IgdGhlIGNsYXNzIHRvIHNoYXJlIGNvbW1vbgorIyBsb2dpYyB3aXRoIGNvZGUgaW4g
Z29vZ2xldGVzdC1icmVhay1vbi1mYWlsdXJlLXVuaXR0ZXN0LnB5LgorY2xhc3MgVGhyb3dPbkZh
aWx1cmVUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICAiIiJUZXN0cyB0aGUgdGhy
b3ctb24tZmFpbHVyZSBtb2RlLiIiIgorCisgIGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwgZW52X3Zh
cl92YWx1ZSwgZmxhZ192YWx1ZSwgc2hvdWxkX2ZhaWwpOgorICAgICIiIlJ1bnMgZ29vZ2xldGVz
dC10aHJvdy1vbi1mYWlsdXJlLXRlc3RfIGFuZCB2ZXJpZmllcyB0aGF0IGl0IGRvZXMKKyAgICAo
b3IgZG9lcyBub3QpIGV4aXQgd2l0aCBhIG5vbi16ZXJvIGNvZGUuCisKKyAgICBBcmdzOgorICAg
ICAgZW52X3Zhcl92YWx1ZTogICAgdmFsdWUgb2YgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUg
ZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlOyBOb25lIGlmIHRo
ZSB2YXJpYWJsZSBzaG91bGQgYmUgdW5zZXQuCisgICAgICBmbGFnX3ZhbHVlOiAgICAgICB2YWx1
ZSBvZiB0aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGZsYWc7CisgICAgICAgICAgICAgICAg
ICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBub3QgYmUgcHJlc2VudC4KKyAgICAgIHNo
b3VsZF9mYWlsOiAgICAgIFRydWUgaWZmIHRoZSBwcm9ncmFtIGlzIGV4cGVjdGVkIHRvIGZhaWwu
CisgICAgIiIiCisKKyAgICBTZXRFbnZWYXIoVEhST1dfT05fRkFJTFVSRSwgZW52X3Zhcl92YWx1
ZSkKKworICAgIGlmIGVudl92YXJfdmFsdWUgaXMgTm9uZToKKyAgICAgIGVudl92YXJfdmFsdWVf
bXNnID0gJyBpcyBub3Qgc2V0JworICAgIGVsc2U6CisgICAgICBlbnZfdmFyX3ZhbHVlX21zZyA9
ICc9JyArIGVudl92YXJfdmFsdWUKKworICAgIGlmIGZsYWdfdmFsdWUgaXMgTm9uZToKKyAgICAg
IGZsYWcgPSAnJworICAgIGVsaWYgZmxhZ192YWx1ZSA9PSAnMCc6CisgICAgICBmbGFnID0gJy0t
JXM9MCcgJSBUSFJPV19PTl9GQUlMVVJFCisgICAgZWxzZToKKyAgICAgIGZsYWcgPSAnLS0lcycg
JSBUSFJPV19PTl9GQUlMVVJFCisKKyAgICBjb21tYW5kID0gW0VYRV9QQVRIXQorICAgIGlmIGZs
YWc6CisgICAgICBjb21tYW5kLmFwcGVuZChmbGFnKQorCisgICAgaWYgc2hvdWxkX2ZhaWw6Cisg
ICAgICBzaG91bGRfb3Jfbm90ID0gJ3Nob3VsZCcKKyAgICBlbHNlOgorICAgICAgc2hvdWxkX29y
X25vdCA9ICdzaG91bGQgbm90JworCisgICAgZmFpbGVkID0gbm90IFJ1bihjb21tYW5kKQorCisg
ICAgU2V0RW52VmFyKFRIUk9XX09OX0ZBSUxVUkUsIE5vbmUpCisKKyAgICBtc2cgPSAoJ3doZW4g
JXMlcywgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4gIiVzIiAlcyBjYXVzZSBhIG5vbi16ZXJvICcK
KyAgICAgICAgICAgJ2V4aXQgY29kZS4nICUKKyAgICAgICAgICAgKFRIUk9XX09OX0ZBSUxVUkUs
IGVudl92YXJfdmFsdWVfbXNnLCAnICcuam9pbihjb21tYW5kKSwKKyAgICAgICAgICAgIHNob3Vs
ZF9vcl9ub3QpKQorICAgIHNlbGYuYXNzZXJ0XyhmYWlsZWQgPT0gc2hvdWxkX2ZhaWwsIG1zZykK
KworICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcihzZWxmKToKKyAgICAiIiJUZXN0cyB0aGUgYmVo
YXZpb3Igb2YgdGhlIGRlZmF1bHQgbW9kZS4iIiIKKworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVu
dl92YXJfdmFsdWU9Tm9uZSwgZmxhZ192YWx1ZT1Ob25lLCBzaG91bGRfZmFpbD1GYWxzZSkKKwor
ICBkZWYgdGVzdFRocm93T25GYWlsdXJlRW52VmFyKHNlbGYpOgorICAgICIiIlRlc3RzIHVzaW5n
IHRoZSBHVEVTVF9USFJPV19PTl9GQUlMVVJFIGVudmlyb25tZW50IHZhcmlhYmxlLiIiIgorCisg
ICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ192YWx1ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWls
PUZhbHNlKQorICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAorICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBz
aG91bGRfZmFpbD1UcnVlKQorCisgIGRlZiB0ZXN0VGhyb3dPbkZhaWx1cmVGbGFnKHNlbGYpOgor
ICAgICIiIlRlc3RzIHVzaW5nIHRoZSAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmUgZmxhZy4iIiIK
KworICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKKyAgICAgICAgICAg
ICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKKyAgICAgICAgICAgICAgICAgICAgICBzaG91bGRf
ZmFpbD1GYWxzZSkKKyAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCisg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkX2ZhaWw9VHJ1ZSkKKworICBkZWYgdGVzdFRocm93T25GYWlsdXJlRmxhZ092ZXJy
aWRlc0VudlZhcihzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0IC0tZ3Rlc3RfdGhyb3dfb25fZmFp
bHVyZSBvdmVycmlkZXMgR1RFU1RfVEhST1dfT05fRkFJTFVSRS4iIiIKKworICAgIHNlbGYuUnVu
QW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdf
dmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPUZhbHNlKQorICAg
IHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAorICAgICAgICAgICAgICAgICAg
ICAgIGZsYWdfdmFsdWU9JzEnLAorICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPVRy
dWUpCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCisgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCisgICAgICAgICAgICAgICAgICAgICAgc2hvdWxk
X2ZhaWw9RmFsc2UpCisgICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCisg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCisgICAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkX2ZhaWw9VHJ1ZSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBn
dGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9nb29nbGV0ZXN0LXRocm93LW9uLWZhaWx1cmUtdGVzdF8uY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0Xy5jYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mOWEyYzY0NDhhMjljYTI5NjQ5YTEyNDgwNTlhOTg1YTUxYWY4NjM2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9nb29nbGV0ZXN0LXRo
cm93LW9uLWZhaWx1cmUtdGVzdF8uY2MKQEAgLTAsMCArMSw3MSBAQAorLy8gQ29weXJpZ2h0IDIw
MDksIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisv
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIFRlc3RzIEdvb2dsZSBUZXN0J3Mg
dGhyb3ctb24tZmFpbHVyZSBtb2RlIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4KKy8vCisvLyBU
aGlzIHByb2dyYW0gbXVzdCBiZSBjb21waWxlZCB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQuICBJ
dCB3aWxsIGJlCisvLyBpbnZva2VkIGJ5IGdvb2dsZXRlc3QtdGhyb3ctb24tZmFpbHVyZS10ZXN0
LnB5LCBhbmQgaXMgZXhwZWN0ZWQgdG8gZXhpdAorLy8gd2l0aCBub24temVybyBpbiB0aGUgdGhy
b3ctb24tZmFpbHVyZSBtb2RlIG9yIDAgb3RoZXJ3aXNlLgorCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+ICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBm
Zmx1c2gsIGZwcmludGYsIE5VTEwsIGV0Yy4KKyNpbmNsdWRlIDxzdGRsaWIuaD4gICAgICAgICAg
ICAgICAgICAgICAvLyBmb3IgZXhpdAorI2luY2x1ZGUgPGV4Y2VwdGlvbj4gICAgICAgICAgICAg
ICAgICAgIC8vIGZvciBzZXRfdGVybWluYXRlCisKKy8vIFRoaXMgdGVybWluYXRlIGhhbmRsZXIg
YWJvcnRzIHRoZSBwcm9ncmFtIHVzaW5nIGV4aXQoKSByYXRoZXIgdGhhbiBhYm9ydCgpLgorLy8g
VGhpcyBhdm9pZHMgc2hvd2luZyBwb3AtdXBzIG9uIFdpbmRvd3Mgc3lzdGVtcyBhbmQgY29yZSBk
dW1wcyBvbiBVbml4LWxpa2UKKy8vIG9uZXMuCit2b2lkIFRlcm1pbmF0ZUhhbmRsZXIoKSB7Cisg
IGZwcmludGYoc3RkZXJyLCAiJXNcbiIsICJVbmhhbmRsZWQgQysrIGV4Y2VwdGlvbiB0ZXJtaW5h
dGluZyB0aGUgcHJvZ3JhbS4iKTsKKyAgZmZsdXNoKE5VTEwpOworICBleGl0KDEpOworfQorCitp
bnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKKyNpZiBHVEVTVF9IQVNfRVhDRVBUSU9O
UworICBzdGQ6OnNldF90ZXJtaW5hdGUoJlRlcm1pbmF0ZUhhbmRsZXIpOworI2VuZGlmCisgIHRl
c3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICAvLyBXZSB3YW50IHRvIGVu
c3VyZSB0aGF0IHBlb3BsZSBjYW4gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW4KKyAgLy8g
b3RoZXIgdGVzdGluZyBmcmFtZXdvcmtzLCBhcyBsb25nIGFzIHRoZXkgaW5pdGlhbGl6ZSBHb29n
bGUgVGVzdAorICAvLyBwcm9wZXJseSBhbmQgc2V0IHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUu
ICBUaGVyZWZvcmUsIHdlIGRvbid0CisgIC8vIHVzZSBHb29nbGUgVGVzdCdzIGNvbnN0cnVjdHMg
Zm9yIGRlZmluaW5nIGFuZCBydW5uaW5nIHRlc3RzCisgIC8vIChlLmcuIFRFU1QgYW5kIFJVTl9B
TExfVEVTVFMpIGhlcmUuCisKKyAgLy8gSW4gdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRo
IGV4Y2VwdGlvbnMgZGlzYWJsZWQsIHRoaXMKKyAgLy8gYXNzZXJ0aW9uIHdpbGwgY2F1c2UgdGhl
IHByb2dyYW0gdG8gZXhpdCB3aXRoIGEgbm9uLXplcm8gY29kZS4KKyAgRVhQRUNUX0VRKDIsIDMp
OworCisgIC8vIFdoZW4gbm90IGluIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUsIHRoZSBjb250
cm9sIHdpbGwgcmVhY2gKKyAgLy8gaGVyZS4KKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdHVwbGUtdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC10dXBsZS10ZXN0LmNjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRkODJjMTYwZjE3N2Q2ZjNiYWRkNzcwNjRhYjhjN2U5OGJkMjk3NjcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdHVwbGUt
dGVzdC5jYwpAQCAtMCwwICsxLDMxOSBAQAorLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMu
CisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisKKyNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5o
IgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworbmFtZXNw
YWNlIHsKKwordXNpbmcgOjpzdGQ6OnRyMTo6Z2V0OwordXNpbmcgOjpzdGQ6OnRyMTo6bWFrZV90
dXBsZTsKK3VzaW5nIDo6c3RkOjp0cjE6OnR1cGxlOwordXNpbmcgOjpzdGQ6OnRyMTo6dHVwbGVf
ZWxlbWVudDsKK3VzaW5nIDo6c3RkOjp0cjE6OnR1cGxlX3NpemU7Cit1c2luZyA6OnRlc3Rpbmc6
OlN0YXRpY0Fzc2VydFR5cGVFcTsKKworLy8gVGVzdHMgdGhhdCB0dXBsZV9lbGVtZW50PEssIHR1
cGxlPFQwLCBUMSwgLi4uLCBUTj4gPjo6dHlwZSByZXR1cm5zIFRLLgorVEVTVCh0dXBsZV9lbGVt
ZW50X1Rlc3QsIFJldHVybnNFbGVtZW50VHlwZSkgeworICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50
LCB0dXBsZV9lbGVtZW50PDAsIHR1cGxlPGludCwgY2hhcj4gPjo6dHlwZT4oKTsKKyAgU3RhdGlj
QXNzZXJ0VHlwZUVxPGludCYsIHR1cGxlX2VsZW1lbnQ8MSwgdHVwbGU8ZG91YmxlLCBpbnQmPiA+
Ojp0eXBlPigpOworICBTdGF0aWNBc3NlcnRUeXBlRXE8Ym9vbCwgdHVwbGVfZWxlbWVudDwyLCB0
dXBsZTxkb3VibGUsIGludCwgYm9vbD4gPjo6dHlwZT4oKTsKK30KKworLy8gVGVzdHMgdGhhdCB0
dXBsZV9zaXplPFQ+Ojp2YWx1ZSBnaXZlcyB0aGUgbnVtYmVyIG9mIGZpZWxkcyBpbiB0dXBsZQor
Ly8gdHlwZSBULgorVEVTVCh0dXBsZV9zaXplX1Rlc3QsIFJldHVybnNOdW1iZXJPZkZpZWxkcykg
eworICBFWFBFQ1RfRVEoMCwgK3R1cGxlX3NpemU8dHVwbGU8PiA+Ojp2YWx1ZSk7CisgIEVYUEVD
VF9FUSgxLCArdHVwbGVfc2l6ZTx0dXBsZTx2b2lkKj4gPjo6dmFsdWUpOworICBFWFBFQ1RfRVEo
MSwgK3R1cGxlX3NpemU8dHVwbGU8Y2hhcj4gPjo6dmFsdWUpOworICBFWFBFQ1RfRVEoMSwgKyh0
dXBsZV9zaXplPHR1cGxlPHR1cGxlPGludCwgZG91YmxlPiA+ID46OnZhbHVlKSk7CisgIEVYUEVD
VF9FUSgyLCArKHR1cGxlX3NpemU8dHVwbGU8aW50JiwgY29uc3QgY2hhcj4gPjo6dmFsdWUpKTsK
KyAgRVhQRUNUX0VRKDMsICsodHVwbGVfc2l6ZTx0dXBsZTxjaGFyKiwgdm9pZCwgY29uc3QgYm9v
bCY+ID46OnZhbHVlKSk7Cit9CisKKy8vIFRlc3RzIGNvbXBhcmluZyBhIHR1cGxlIHdpdGggaXRz
ZWxmLgorVEVTVChDb21wYXJpc29uVGVzdCwgQ29tcGFyZXNXaXRoU2VsZikgeworICBjb25zdCB0
dXBsZTxpbnQsIGNoYXIsIGJvb2w+IGEoNSwgJ2EnLCBmYWxzZSk7CisKKyAgRVhQRUNUX1RSVUUo
YSA9PSBhKTsKKyAgRVhQRUNUX0ZBTFNFKGEgIT0gYSk7Cit9CisKKy8vIFRlc3RzIGNvbXBhcmlu
ZyB0d28gdHVwbGVzIHdpdGggdGhlIHNhbWUgdmFsdWUuCitURVNUKENvbXBhcmlzb25UZXN0LCBD
b21wYXJlc0VxdWFsVHVwbGVzKSB7CisgIGNvbnN0IHR1cGxlPGludCwgYm9vbD4gYSg1LCB0cnVl
KSwgYig1LCB0cnVlKTsKKworICBFWFBFQ1RfVFJVRShhID09IGIpOworICBFWFBFQ1RfRkFMU0Uo
YSAhPSBiKTsKK30KKworLy8gVGVzdHMgY29tcGFyaW5nIHR3byBkaWZmZXJlbnQgdHVwbGVzIHRo
YXQgaGF2ZSBubyByZWZlcmVuY2UgZmllbGRzLgorVEVTVChDb21wYXJpc29uVGVzdCwgQ29tcGFy
ZXNVbmVxdWFsVHVwbGVzV2l0aG91dFJlZmVyZW5jZUZpZWxkcykgeworICB0eXBlZGVmIHR1cGxl
PGNvbnN0IGludCwgY2hhcj4gRm9vVHVwbGU7CisKKyAgY29uc3QgRm9vVHVwbGUgYSgwLCAneCcp
OworICBjb25zdCBGb29UdXBsZSBiKDEsICdhJyk7CisKKyAgRVhQRUNUX1RSVUUoYSAhPSBiKTsK
KyAgRVhQRUNUX0ZBTFNFKGEgPT0gYik7CisKKyAgY29uc3QgRm9vVHVwbGUgYygxLCAnYicpOwor
CisgIEVYUEVDVF9UUlVFKGIgIT0gYyk7CisgIEVYUEVDVF9GQUxTRShiID09IGMpOworfQorCisv
LyBUZXN0cyBjb21wYXJpbmcgdHdvIGRpZmZlcmVudCB0dXBsZXMgdGhhdCBoYXZlIHJlZmVyZW5j
ZSBmaWVsZHMuCitURVNUKENvbXBhcmlzb25UZXN0LCBDb21wYXJlc1VuZXF1YWxUdXBsZXNXaXRo
UmVmZXJlbmNlRmllbGRzKSB7CisgIHR5cGVkZWYgdHVwbGU8aW50JiwgY29uc3QgY2hhciY+IEZv
b1R1cGxlOworCisgIGludCBpID0gNTsKKyAgY29uc3QgY2hhciBjaCA9ICdhJzsKKyAgY29uc3Qg
Rm9vVHVwbGUgYShpLCBjaCk7CisKKyAgaW50IGogPSA2OworICBjb25zdCBGb29UdXBsZSBiKGos
IGNoKTsKKworICBFWFBFQ1RfVFJVRShhICE9IGIpOworICBFWFBFQ1RfRkFMU0UoYSA9PSBiKTsK
KworICBqID0gNTsKKyAgY29uc3QgY2hhciBjaDIgPSAnYic7CisgIGNvbnN0IEZvb1R1cGxlIGMo
aiwgY2gyKTsKKworICBFWFBFQ1RfVFJVRShiICE9IGMpOworICBFWFBFQ1RfRkFMU0UoYiA9PSBj
KTsKK30KKworLy8gVGVzdHMgdGhhdCBhIHR1cGxlIGZpZWxkIHdpdGggYSByZWZlcmVuY2UgdHlw
ZSBpcyBhbiBhbGlhcyBvZiB0aGUKKy8vIHZhcmlhYmxlIGl0J3Mgc3VwcG9zZWQgdG8gcmVmZXJl
bmNlLgorVEVTVChSZWZlcmVuY2VGaWVsZFRlc3QsIElzQWxpYXNPZlJlZmVyZW5jZWRWYXJpYWJs
ZSkgeworICBpbnQgbiA9IDA7CisgIHR1cGxlPGJvb2wsIGludCY+IHQodHJ1ZSwgbik7CisKKyAg
biA9IDE7CisgIEVYUEVDVF9FUShuLCBnZXQ8MT4odCkpCisgICAgICA8PCAiQ2hhbmdpbmcgYSB1
bmRlcmx5aW5nIHZhcmlhYmxlIHNob3VsZCB1cGRhdGUgdGhlIHJlZmVyZW5jZSBmaWVsZC4iOwor
CisgIC8vIE1ha2VzIHN1cmUgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gZG9lc24ndCBkbyBhbnl0
aGluZyBmdW5ueSB3aXRoCisgIC8vIHRoZSAmIG9wZXJhdG9yIGZvciB0aGUgcmV0dXJuIHR5cGUg
b2YgZ2V0PD4oKS4KKyAgRVhQRUNUX0VRKCZuLCAmKGdldDwxPih0KSkpCisgICAgICA8PCAiVGhl
IGFkZHJlc3Mgb2YgYSByZWZlcmVuY2UgZmllbGQgc2hvdWxkIGVxdWFsIHRoZSBhZGRyZXNzIG9m
ICIKKyAgICAgIDw8ICJ0aGUgdW5kZXJseWluZyB2YXJpYWJsZS4iOworCisgIGdldDwxPih0KSA9
IDI7CisgIEVYUEVDVF9FUSgyLCBuKQorICAgICAgPDwgIkNoYW5naW5nIGEgcmVmZXJlbmNlIGZp
ZWxkIHNob3VsZCB1cGRhdGUgdGhlIHVuZGVybHlpbmcgdmFyaWFibGUuIjsKK30KKworLy8gVGVz
dHMgdGhhdCB0dXBsZSdzIGRlZmF1bHQgY29uc3RydWN0b3IgZGVmYXVsdCBpbml0aWFsaXplcyBl
YWNoIGZpZWxkLgorLy8gVGhpcyB0ZXN0IG5lZWRzIHRvIGNvbXBpbGUgd2l0aG91dCBnZW5lcmF0
aW5nIHdhcm5pbmdzLgorVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgRGVmYXVsdENvbnN0cnVj
dG9yRGVmYXVsdEluaXRpYWxpemVzRWFjaEZpZWxkKSB7CisgIC8vIFRoZSBUUjEgcmVwb3J0IHJl
cXVpcmVzIHRoYXQgdHVwbGUncyBkZWZhdWx0IGNvbnN0cnVjdG9yIGRlZmF1bHQKKyAgLy8gaW5p
dGlhbGl6ZXMgZWFjaCBmaWVsZCwgZXZlbiBpZiBpdCdzIGEgcHJpbWl0aXZlIHR5cGUuICBJZiB0
aGUKKyAgLy8gaW1wbGVtZW50YXRpb24gZm9yZ2V0cyB0byBkbyB0aGlzLCB0aGlzIHRlc3Qgd2ls
bCBjYXRjaCBpdCBieQorICAvLyBnZW5lcmF0aW5nIHdhcm5pbmdzIGFib3V0IHVzaW5nIHVuaW5p
dGlhbGl6ZWQgdmFyaWFibGVzIChhc3N1bWluZworICAvLyBhIGRlY2VudCBjb21waWxlcikuCisK
KyAgdHVwbGU8PiBlbXB0eTsKKworICB0dXBsZTxpbnQ+IGExLCBiMTsKKyAgYjEgPSBhMTsKKyAg
RVhQRUNUX0VRKDAsIGdldDwwPihiMSkpOworCisgIHR1cGxlPGludCwgZG91YmxlPiBhMiwgYjI7
CisgIGIyID0gYTI7CisgIEVYUEVDVF9FUSgwLCBnZXQ8MD4oYjIpKTsKKyAgRVhQRUNUX0VRKDAu
MCwgZ2V0PDE+KGIyKSk7CisKKyAgdHVwbGU8ZG91YmxlLCBjaGFyLCBib29sKj4gYTMsIGIzOwor
ICBiMyA9IGEzOworICBFWFBFQ1RfRVEoMC4wLCBnZXQ8MD4oYjMpKTsKKyAgRVhQRUNUX0VRKCdc
MCcsIGdldDwxPihiMykpOworICBFWFBFQ1RfVFJVRShnZXQ8Mj4oYjMpID09IE5VTEwpOworCisg
IHR1cGxlPGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludD4g
YTEwLCBiMTA7CisgIGIxMCA9IGExMDsKKyAgRVhQRUNUX0VRKDAsIGdldDwwPihiMTApKTsKKyAg
RVhQRUNUX0VRKDAsIGdldDwxPihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDwyPihiMTApKTsK
KyAgRVhQRUNUX0VRKDAsIGdldDwzPihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDw0PihiMTAp
KTsKKyAgRVhQRUNUX0VRKDAsIGdldDw1PihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDw2Pihi
MTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDw3PihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDw4
PihiMTApKTsKKyAgRVhQRUNUX0VRKDAsIGdldDw5PihiMTApKTsKK30KKworLy8gVGVzdHMgY29u
c3RydWN0aW5nIGEgdHVwbGUgZnJvbSBpdHMgZmllbGRzLgorVEVTVChUdXBsZUNvbnN0cnVjdG9y
VGVzdCwgQ29uc3RydWN0c0Zyb21GaWVsZHMpIHsKKyAgaW50IG4gPSAxOworICAvLyBSZWZlcmVu
Y2UgZmllbGQuCisgIHR1cGxlPGludCY+IGEobik7CisgIEVYUEVDVF9FUSgmbiwgJihnZXQ8MD4o
YSkpKTsKKworICAvLyBOb24tcmVmZXJlbmNlIGZpZWxkcy4KKyAgdHVwbGU8aW50LCBjaGFyPiBi
KDUsICdhJyk7CisgIEVYUEVDVF9FUSg1LCBnZXQ8MD4oYikpOworICBFWFBFQ1RfRVEoJ2EnLCBn
ZXQ8MT4oYikpOworCisgIC8vIENvbnN0IHJlZmVyZW5jZSBmaWVsZC4KKyAgY29uc3QgaW50IG0g
PSAyOworICB0dXBsZTxib29sLCBjb25zdCBpbnQmPiBjKHRydWUsIG0pOworICBFWFBFQ1RfVFJV
RShnZXQ8MD4oYykpOworICBFWFBFQ1RfRVEoJm0sICYoZ2V0PDE+KGMpKSk7Cit9CisKKy8vIFRl
c3RzIHR1cGxlJ3MgY29weSBjb25zdHJ1Y3Rvci4KK1RFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3Qs
IENvcHlDb25zdHJ1Y3RvcikgeworICB0dXBsZTxkb3VibGUsIGJvb2w+IGEoMC4wLCB0cnVlKTsK
KyAgdHVwbGU8ZG91YmxlLCBib29sPiBiKGEpOworCisgIEVYUEVDVF9ET1VCTEVfRVEoMC4wLCBn
ZXQ8MD4oYikpOworICBFWFBFQ1RfVFJVRShnZXQ8MT4oYikpOworfQorCisvLyBUZXN0cyBjb25z
dHJ1Y3RpbmcgYSB0dXBsZSBmcm9tIGFub3RoZXIgdHVwbGUgdGhhdCBoYXMgYSBjb21wYXRpYmxl
CisvLyBidXQgZGlmZmVyZW50IHR5cGUuCitURVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBDb25z
dHJ1Y3RzRnJvbURpZmZlcmVudFR1cGxlVHlwZSkgeworICB0dXBsZTxpbnQsIGludCwgY2hhcj4g
YSgwLCAxLCAnYScpOworICB0dXBsZTxkb3VibGUsIGxvbmcsIGludD4gYihhKTsKKworICBFWFBF
Q1RfRE9VQkxFX0VRKDAuMCwgZ2V0PDA+KGIpKTsKKyAgRVhQRUNUX0VRKDEsIGdldDwxPihiKSk7
CisgIEVYUEVDVF9FUSgnYScsIGdldDwyPihiKSk7Cit9CisKKy8vIFRlc3RzIGNvbnN0cnVjdGlu
ZyBhIDItdHVwbGUgZnJvbSBhbiBzdGQ6OnBhaXIuCitURVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0
LCBDb25zdHJ1Y3RzRnJvbVBhaXIpIHsKKyAgOjpzdGQ6OnBhaXI8aW50LCBjaGFyPiBhKDEsICdh
Jyk7CisgIHR1cGxlPGludCwgY2hhcj4gYihhKTsKKyAgdHVwbGU8aW50LCBjb25zdCBjaGFyJj4g
YyhhKTsKK30KKworLy8gVGVzdHMgYXNzaWduaW5nIGEgdHVwbGUgdG8gYW5vdGhlciB0dXBsZSB3
aXRoIHRoZSBzYW1lIHR5cGUuCitURVNUKFR1cGxlQXNzaWdubWVudFRlc3QsIEFzc2lnbnNUb1Nh
bWVUdXBsZVR5cGUpIHsKKyAgY29uc3QgdHVwbGU8aW50LCBsb25nPiBhKDUsIDdMKTsKKyAgdHVw
bGU8aW50LCBsb25nPiBiOworICBiID0gYTsKKyAgRVhQRUNUX0VRKDUsIGdldDwwPihiKSk7Cisg
IEVYUEVDVF9FUSg3TCwgZ2V0PDE+KGIpKTsKK30KKworLy8gVGVzdHMgYXNzaWduaW5nIGEgdHVw
bGUgdG8gYW5vdGhlciB0dXBsZSB3aXRoIGEgZGlmZmVyZW50IGJ1dAorLy8gY29tcGF0aWJsZSB0
eXBlLgorVEVTVChUdXBsZUFzc2lnbm1lbnRUZXN0LCBBc3NpZ25zVG9EaWZmZXJlbnRUdXBsZVR5
cGUpIHsKKyAgY29uc3QgdHVwbGU8aW50LCBsb25nLCBib29sPiBhKDEsIDdMLCB0cnVlKTsKKyAg
dHVwbGU8bG9uZywgaW50LCBib29sPiBiOworICBiID0gYTsKKyAgRVhQRUNUX0VRKDFMLCBnZXQ8
MD4oYikpOworICBFWFBFQ1RfRVEoNywgZ2V0PDE+KGIpKTsKKyAgRVhQRUNUX1RSVUUoZ2V0PDI+
KGIpKTsKK30KKworLy8gVGVzdHMgYXNzaWduaW5nIGFuIHN0ZDo6cGFpciB0byBhIDItdHVwbGUu
CitURVNUKFR1cGxlQXNzaWdubWVudFRlc3QsIEFzc2lnbnNGcm9tUGFpcikgeworICBjb25zdCA6
OnN0ZDo6cGFpcjxpbnQsIGJvb2w+IGEoNSwgdHJ1ZSk7CisgIHR1cGxlPGludCwgYm9vbD4gYjsK
KyAgYiA9IGE7CisgIEVYUEVDVF9FUSg1LCBnZXQ8MD4oYikpOworICBFWFBFQ1RfVFJVRShnZXQ8
MT4oYikpOworCisgIHR1cGxlPGxvbmcsIGJvb2w+IGM7CisgIGMgPSBhOworICBFWFBFQ1RfRVEo
NUwsIGdldDwwPihjKSk7CisgIEVYUEVDVF9UUlVFKGdldDwxPihjKSk7Cit9CisKKy8vIEEgZml4
dHVyZSBmb3IgdGVzdGluZyBiaWcgdHVwbGVzLgorY2xhc3MgQmlnVHVwbGVUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgeworIHByb3RlY3RlZDoKKyAgdHlwZWRlZiB0dXBsZTxpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQ+IEJpZ1R1cGxlOworCisgIEJp
Z1R1cGxlVGVzdCgpIDoKKyAgICAgIGFfKDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIpLAor
ICAgICAgYl8oMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMykge30KKworICBCaWdUdXBsZSBh
XywgYl87Cit9OworCisvLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYmlnIHR1cGxlcy4KK1RFU1RfRihC
aWdUdXBsZVRlc3QsIENvbnN0cnVjdGlvbikgeworICBCaWdUdXBsZSBhOworICBCaWdUdXBsZSBi
KGJfKTsKK30KKworLy8gVGVzdHMgdGhhdCBnZXQ8Tj4odCkgcmV0dXJucyB0aGUgTi10aCAoMC1i
YXNlZCkgZmllbGQgb2YgdHVwbGUgdC4KK1RFU1RfRihCaWdUdXBsZVRlc3QsIGdldCkgeworICBF
WFBFQ1RfRVEoMSwgZ2V0PDA+KGFfKSk7CisgIEVYUEVDVF9FUSgyLCBnZXQ8OT4oYV8pKTsKKwor
ICAvLyBUZXN0cyB0aGF0IGdldCgpIHdvcmtzIG9uIGEgY29uc3QgdHVwbGUgdG9vLgorICBjb25z
dCBCaWdUdXBsZSBhKGFfKTsKKyAgRVhQRUNUX0VRKDEsIGdldDwwPihhKSk7CisgIEVYUEVDVF9F
USgyLCBnZXQ8OT4oYSkpOworfQorCisvLyBUZXN0cyBjb21wYXJpbmcgYmlnIHR1cGxlcy4KK1RF
U1RfRihCaWdUdXBsZVRlc3QsIENvbXBhcmlzb25zKSB7CisgIEVYUEVDVF9UUlVFKGFfID09IGFf
KTsKKyAgRVhQRUNUX0ZBTFNFKGFfICE9IGFfKTsKKworICBFWFBFQ1RfVFJVRShhXyAhPSBiXyk7
CisgIEVYUEVDVF9GQUxTRShhXyA9PSBiXyk7Cit9CisKK1RFU1QoTWFrZVR1cGxlVGVzdCwgV29y
a3NGb3JTY2FsYXJUeXBlcykgeworICB0dXBsZTxib29sLCBpbnQ+IGE7CisgIGEgPSBtYWtlX3R1
cGxlKHRydWUsIDUpOworICBFWFBFQ1RfVFJVRShnZXQ8MD4oYSkpOworICBFWFBFQ1RfRVEoNSwg
Z2V0PDE+KGEpKTsKKworICB0dXBsZTxjaGFyLCBpbnQsIGxvbmc+IGI7CisgIGIgPSBtYWtlX3R1
cGxlKCdhJywgJ2InLCA1KTsKKyAgRVhQRUNUX0VRKCdhJywgZ2V0PDA+KGIpKTsKKyAgRVhQRUNU
X0VRKCdiJywgZ2V0PDE+KGIpKTsKKyAgRVhQRUNUX0VRKDUsIGdldDwyPihiKSk7Cit9CisKK1RF
U1QoTWFrZVR1cGxlVGVzdCwgV29ya3NGb3JQb2ludGVycykgeworICBpbnQgYVtdID0geyAxLCAy
LCAzLCA0IH07CisgIGNvbnN0IGNoYXIqIGNvbnN0IHN0ciA9ICJoaSI7CisgIGludCogY29uc3Qg
cCA9IGE7CisKKyAgdHVwbGU8Y29uc3QgY2hhciosIGludCo+IHQ7CisgIHQgPSBtYWtlX3R1cGxl
KHN0ciwgcCk7CisgIEVYUEVDVF9FUShzdHIsIGdldDwwPih0KSk7CisgIEVYUEVDVF9FUShwLCBn
ZXQ8MT4odCkpOworfQorCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3QucHkgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0LnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjViN2QxZTc0ZjY3ZmNiMDBjYjg0ODU1Nzk2N2RlZjRmNmE1NmNjOGYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3Qt
dW5pbml0aWFsaXplZC10ZXN0LnB5CkBAIC0wLDAgKzEsNjcgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorIworIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3Qg
d2FybnMgdGhlIHVzZXIgd2hlbiBub3QgaW5pdGlhbGl6ZWQgcHJvcGVybHkuIiIiCisKK2ltcG9y
dCBndGVzdF90ZXN0X3V0aWxzCisKK0NPTU1BTkQgPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RF
eGVjdXRhYmxlUGF0aCgnZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3RfJykKKworCitkZWYg
QXNzZXJ0KGNvbmRpdGlvbik6CisgIGlmIG5vdCBjb25kaXRpb246CisgICAgcmFpc2UgQXNzZXJ0
aW9uRXJyb3IKKworCitkZWYgQXNzZXJ0RXEoZXhwZWN0ZWQsIGFjdHVhbCk6CisgIGlmIGV4cGVj
dGVkICE9IGFjdHVhbDoKKyAgICBwcmludCAnRXhwZWN0ZWQ6ICVzJyAlIChleHBlY3RlZCwpCisg
ICAgcHJpbnQgJyAgQWN0dWFsOiAlcycgJSAoYWN0dWFsLCkKKyAgICByYWlzZSBBc3NlcnRpb25F
cnJvcgorCisKK2RlZiBUZXN0RXhpdENvZGVBbmRPdXRwdXQoY29tbWFuZCk6CisgICIiIlJ1bnMg
dGhlIGdpdmVuIGNvbW1hbmQgYW5kIHZlcmlmaWVzIGl0cyBleGl0IGNvZGUgYW5kIG91dHB1dC4i
IiIKKworICAjIFZlcmlmaWVzIHRoYXQgJ2NvbW1hbmQnIGV4aXRzIHdpdGggY29kZSAxLgorICBw
ID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCisgIGlmIHAuZXhpdGVkIGFu
ZCBwLmV4aXRfY29kZSA9PSAwOgorICAgIEFzc2VydCgnSU1QT1JUQU5UIE5PVElDRScgaW4gcC5v
dXRwdXQpOworICBBc3NlcnQoJ0luaXRHb29nbGVUZXN0JyBpbiBwLm91dHB1dCkKKworCitjbGFz
cyBHVGVzdFVuaW5pdGlhbGl6ZWRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgorICBk
ZWYgdGVzdEV4aXRDb2RlQW5kT3V0cHV0KHNlbGYpOgorICAgIFRlc3RFeGl0Q29kZUFuZE91dHB1
dChDT01NQU5EKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIGd0ZXN0X3Rlc3Rf
dXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dv
b2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ29vZ2xldGVzdC11bmluaXRpYWxpemVkLXRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0NDM0
ZDUxZWViZmQ4NzI2YmQzZjA0YzJkMDQyNmJiYTk2MDI5OGMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2dvb2dsZXRlc3QtdW5pbml0aWFsaXplZC10ZXN0
Xy5jYwpAQCAtMCwwICsxLDQyIEBACisvLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KKy8v
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKK1RFU1QoRHVtbXlUZXN0
LCBEdW1teSkgeworICAvLyBUaGlzIHRlc3QgZG9lc24ndCB2ZXJpZnkgYW55dGhpbmcuICBXZSBq
dXN0IG5lZWQgaXQgdG8gY3JlYXRlIGEKKyAgLy8gcmVhbGlzdGljIHN0YWdlIGZvciB0ZXN0aW5n
IHRoZSBiZWhhdmlvciBvZiBHb29nbGUgVGVzdCB3aGVuCisgIC8vIFJVTl9BTExfVEVTVFMoKSBp
cyBjYWxsZWQgd2l0aG91dAorICAvLyB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpIGJlaW5nIGNh
bGxlZCBmaXJzdC4KK30KKworaW50IG1haW4oKSB7CisgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWRlYXRo
LXRlc3RfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtZGVhdGgt
dGVzdF90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDViNTNiNzFhZjJm
Nzk1NjBkNzE3MmFhNjdjYzc0MGJhNzA0MDExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtZGVh
dGgtdGVzdF90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTIzMCArMCwwIEBACi0vLyBDb3B5
cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1
dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRlc3RzIGZvciBkZWF0aCB0ZXN0cy4K
LQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9n
dGVzdC5oPgotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmg+Ci0KLXVz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZTsKLXVzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpBbHdheXNUcnVlOwotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotI2lmIEdURVNU
X09TX1dJTkRPV1MKLSNpbmNsdWRlIDxkaXJlY3QuaD4gICAgICAgICAgLy8gRm9yIGNoZGlyKCku
Ci0jZWxzZQotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPHN5cy93YWl0Lmg+ICAgICAg
ICAvLyBGb3Igd2FpdHBpZC4KLSNpbmNsdWRlIDxsaW1pdHM+ICAgICAgICAgICAgLy8gRm9yIHN0
ZDo6bnVtZXJpY19saW1pdHMuCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotI2luY2x1
ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHNpZ25hbC5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0K
LSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGkuaD4KLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0
cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRp
b24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNs
dWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0
bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWlu
dGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJ
T05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1Rf
SU1QTEVNRU5UQVRJT05fCi0KLW5hbWVzcGFjZSBwb3NpeCA9IDo6dGVzdGluZzo6aW50ZXJuYWw6
OnBvc2l4OwotCi11c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwotdXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OkRlYXRoVGVzdDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3RGYWN0b3J5
OwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZpbGVQYXRoOwotdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OkdldExhc3RFcnJub0Rlc2NyaXB0aW9uOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OkdldFVuaXRUZXN0SW1wbDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpQYXJzZU5hdHVyYWxO
dW1iZXI7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOwotCi1uYW1lc3BhY2UgdGVz
dGluZyB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBBIGhlbHBlciBjbGFzcyB3aG9zZSBv
YmplY3RzIHJlcGxhY2UgdGhlIGRlYXRoIHRlc3QgZmFjdG9yeSBmb3IgYQotLy8gc2luZ2xlIFVu
aXRUZXN0IG9iamVjdCBkdXJpbmcgdGhlaXIgbGlmZXRpbWVzLgotY2xhc3MgUmVwbGFjZURlYXRo
VGVzdEZhY3RvcnkgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgUmVwbGFjZURlYXRoVGVzdEZhY3Rv
cnkoRGVhdGhUZXN0RmFjdG9yeSogbmV3X2ZhY3RvcnkpCi0gICAgICA6IHVuaXRfdGVzdF9pbXBs
XyhHZXRVbml0VGVzdEltcGwoKSkgewotICAgIG9sZF9mYWN0b3J5XyA9IHVuaXRfdGVzdF9pbXBs
Xy0+ZGVhdGhfdGVzdF9mYWN0b3J5Xy5yZWxlYXNlKCk7Ci0gICAgdW5pdF90ZXN0X2ltcGxfLT5k
ZWF0aF90ZXN0X2ZhY3RvcnlfLnJlc2V0KG5ld19mYWN0b3J5KTsKLSAgfQotCi0gIH5SZXBsYWNl
RGVhdGhUZXN0RmFjdG9yeSgpIHsKLSAgICB1bml0X3Rlc3RfaW1wbF8tPmRlYXRoX3Rlc3RfZmFj
dG9yeV8ucmVsZWFzZSgpOwotICAgIHVuaXRfdGVzdF9pbXBsXy0+ZGVhdGhfdGVzdF9mYWN0b3J5
Xy5yZXNldChvbGRfZmFjdG9yeV8pOwotICB9Ci0gcHJpdmF0ZToKLSAgLy8gUHJldmVudHMgY29w
eWluZyBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSBvYmplY3RzLgotICBSZXBsYWNlRGVhdGhUZXN0
RmFjdG9yeShjb25zdCBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSYpOwotICB2b2lkIG9wZXJhdG9y
PShjb25zdCBSZXBsYWNlRGVhdGhUZXN0RmFjdG9yeSYpOwotCi0gIFVuaXRUZXN0SW1wbCogdW5p
dF90ZXN0X2ltcGxfOwotICBEZWF0aFRlc3RGYWN0b3J5KiBvbGRfZmFjdG9yeV87Ci19OwotCi19
ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLXZvaWQg
RGllSW5zaWRlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uKSB7Ci0gIGZwcmludGYoc3RkZXJyLCAiZGVh
dGggaW5zaWRlICVzKCkuIiwgZnVuY3Rpb24pOwotICBmZmx1c2goc3RkZXJyKTsKLSAgLy8gV2Ug
Y2FsbCBfZXhpdCgpIGluc3RlYWQgb2YgZXhpdCgpLCBhcyB0aGUgZm9ybWVyIGlzIGEgZGlyZWN0
Ci0gIC8vIHN5c3RlbSBjYWxsIGFuZCB0aHVzIHNhZmVyIGluIHRoZSBwcmVzZW5jZSBvZiB0aHJl
YWRzLiAgZXhpdCgpCi0gIC8vIHdpbGwgaW52b2tlIHVzZXItZGVmaW5lZCBleGl0LWhvb2tzLCB3
aGljaCBtYXkgZG8gZGFuZ2Vyb3VzCi0gIC8vIHRoaW5ncyB0aGF0IGNvbmZsaWN0IHdpdGggZGVh
dGggdGVzdHMuCi0gIC8vCi0gIC8vIFNvbWUgY29tcGlsZXJzIGNhbiByZWNvZ25pemUgdGhhdCBf
ZXhpdCgpIG5ldmVyIHJldHVybnMgYW5kIGlzc3VlIHRoZQotICAvLyAndW5yZWFjaGFibGUgY29k
ZScgd2FybmluZyBmb3IgY29kZSBmb2xsb3dpbmcgdGhpcyBmdW5jdGlvbiwgdW5sZXNzCi0gIC8v
IGZvb2xlZCBieSBhIGZha2UgY29uZGl0aW9uLgotICBpZiAoQWx3YXlzVHJ1ZSgpKQotICAgIF9l
eGl0KDEpOwotfQotCi0vLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHdvcmsuCi0KLWNsYXNzIFRl
c3RGb3JEZWF0aFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICBU
ZXN0Rm9yRGVhdGhUZXN0KCkgOiBvcmlnaW5hbF9kaXJfKEZpbGVQYXRoOjpHZXRDdXJyZW50RGly
KCkpIHt9Ci0KLSAgdmlydHVhbCB+VGVzdEZvckRlYXRoVGVzdCgpIHsKLSAgICBwb3NpeDo6Q2hE
aXIob3JpZ2luYWxfZGlyXy5jX3N0cigpKTsKLSAgfQotCi0gIC8vIEEgc3RhdGljIG1lbWJlciBm
dW5jdGlvbiB0aGF0J3MgZXhwZWN0ZWQgdG8gZGllLgotICBzdGF0aWMgdm9pZCBTdGF0aWNNZW1i
ZXJGdW5jdGlvbigpIHsgRGllSW5zaWRlKCJTdGF0aWNNZW1iZXJGdW5jdGlvbiIpOyB9Ci0KLSAg
Ly8gQSBtZXRob2Qgb2YgdGhlIHRlc3QgZml4dHVyZSB0aGF0IG1heSBkaWUuCi0gIHZvaWQgTWVt
YmVyRnVuY3Rpb24oKSB7Ci0gICAgaWYgKHNob3VsZF9kaWVfKQotICAgICAgRGllSW5zaWRlKCJN
ZW1iZXJGdW5jdGlvbiIpOwotICB9Ci0KLSAgLy8gVHJ1ZSBpZmYgTWVtYmVyRnVuY3Rpb24oKSBz
aG91bGQgZGllLgotICBib29sIHNob3VsZF9kaWVfOwotICBjb25zdCBGaWxlUGF0aCBvcmlnaW5h
bF9kaXJfOwotfTsKLQotLy8gQSBjbGFzcyB3aXRoIGEgbWVtYmVyIGZ1bmN0aW9uIHRoYXQgbWF5
IGRpZS4KLWNsYXNzIE1heURpZSB7Ci0gcHVibGljOgotICBleHBsaWNpdCBNYXlEaWUoYm9vbCBz
aG91bGRfZGllKSA6IHNob3VsZF9kaWVfKHNob3VsZF9kaWUpIHt9Ci0KLSAgLy8gQSBtZW1iZXIg
ZnVuY3Rpb24gdGhhdCBtYXkgZGllLgotICB2b2lkIE1lbWJlckZ1bmN0aW9uKCkgY29uc3Qgewot
ICAgIGlmIChzaG91bGRfZGllXykKLSAgICAgIERpZUluc2lkZSgiTWF5RGllOjpNZW1iZXJGdW5j
dGlvbiIpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBUcnVlIGlmZiBNZW1iZXJGdW5jdGlvbigp
IHNob3VsZCBkaWUuCi0gIGJvb2wgc2hvdWxkX2RpZV87Ci19OwotCi0vLyBBIGdsb2JhbCBmdW5j
dGlvbiB0aGF0J3MgZXhwZWN0ZWQgdG8gZGllLgotdm9pZCBHbG9iYWxGdW5jdGlvbigpIHsgRGll
SW5zaWRlKCJHbG9iYWxGdW5jdGlvbiIpOyB9Ci0KLS8vIEEgbm9uLXZvaWQgZnVuY3Rpb24gdGhh
dCdzIGV4cGVjdGVkIHRvIGRpZS4KLWludCBOb25Wb2lkRnVuY3Rpb24oKSB7Ci0gIERpZUluc2lk
ZSgiTm9uVm9pZEZ1bmN0aW9uIik7Ci0gIHJldHVybiAxOwotfQotCi0vLyBBIHVuYXJ5IGZ1bmN0
aW9uIHRoYXQgbWF5IGRpZS4KLXZvaWQgRGllSWYoYm9vbCBzaG91bGRfZGllKSB7Ci0gIGlmIChz
aG91bGRfZGllKQotICAgIERpZUluc2lkZSgiRGllSWYiKTsKLX0KLQotLy8gQSBiaW5hcnkgZnVu
Y3Rpb24gdGhhdCBtYXkgZGllLgotYm9vbCBEaWVJZkxlc3NUaGFuKGludCB4LCBpbnQgeSkgewot
ICBpZiAoeCA8IHkpIHsKLSAgICBEaWVJbnNpZGUoIkRpZUlmTGVzc1RoYW4iKTsKLSAgfQotICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVBVEggY2FuIGJlIHVzZWQg
b3V0c2lkZSBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdCBmaXh0dXJlLgotdm9pZCBEZWF0aFRlc3RT
dWJyb3V0aW5lKCkgewotICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgImRlYXRoLipH
bG9iYWxGdW5jdGlvbiIpOwotICBBU1NFUlRfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgImRlYXRo
LipHbG9iYWxGdW5jdGlvbiIpOwotfQotCi0vLyBEZWF0aCBpbiBkYmcsIG5vdCBvcHQuCi1pbnQg
RGllSW5EZWJ1Z0Vsc2UxMihpbnQqIHNpZGVlZmZlY3QpIHsKLSAgaWYgKHNpZGVlZmZlY3QpICpz
aWRlZWZmZWN0ID0gMTI7Ci0jaWZuZGVmIE5ERUJVRwotICBEaWVJbnNpZGUoIkRpZUluRGVidWdF
bHNlMTIiKTsKLSNlbmRpZiAgLy8gTkRFQlVHCi0gIHJldHVybiAxMjsKLX0KLQotI2lmIEdURVNU
X09TX1dJTkRPV1MKLQotLy8gVGVzdHMgdGhlIEV4aXRlZFdpdGhDb2RlIHByZWRpY2F0ZS4KLVRF
U1QoRXhpdFN0YXR1c1ByZWRpY2F0ZVRlc3QsIEV4aXRlZFdpdGhDb2RlKSB7Ci0gIC8vIE9uIFdp
bmRvd3MsIHRoZSBwcm9jZXNzJ3MgZXhpdCBjb2RlIGlzIHRoZSBzYW1lIGFzIGl0cyBleGl0IHN0
YXR1cywKLSAgLy8gc28gdGhlIHByZWRpY2F0ZSBqdXN0IGNvbXBhcmVzIHRoZSBpdHMgaW5wdXQg
d2l0aCBpdHMgcGFyYW1ldGVyLgotICBFWFBFQ1RfVFJVRSh0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29k
ZSgwKSgwKSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEpKDEpKTsK
LSAgRVhQRUNUX1RSVUUodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoNDIpKDQyKSk7Ci0gIEVYUEVD
VF9GQUxTRSh0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgwKSgxKSk7Ci0gIEVYUEVDVF9GQUxTRSh0
ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSgwKSk7Ci19Ci0KLSNlbHNlCi0KLS8vIFJldHVybnMg
dGhlIGV4aXQgc3RhdHVzIG9mIGEgcHJvY2VzcyB0aGF0IGNhbGxzIF9leGl0KDIpIHdpdGggYQot
Ly8gZ2l2ZW4gZXhpdCBjb2RlLiAgVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgdGhlCi0v
LyBFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCB0ZXN0IHN1aXRlLgotc3RhdGljIGludCBOb3JtYWxF
eGl0U3RhdHVzKGludCBleGl0X2NvZGUpIHsKLSAgcGlkX3QgY2hpbGRfcGlkID0gZm9yaygpOwot
ICBpZiAoY2hpbGRfcGlkID09IDApIHsKLSAgICBfZXhpdChleGl0X2NvZGUpOwotICB9Ci0gIGlu
dCBzdGF0dXM7Ci0gIHdhaXRwaWQoY2hpbGRfcGlkLCAmc3RhdHVzLCAwKTsKLSAgcmV0dXJuIHN0
YXR1czsKLX0KLQotLy8gUmV0dXJucyB0aGUgZXhpdCBzdGF0dXMgb2YgYSBwcm9jZXNzIHRoYXQg
cmFpc2VzIGEgZ2l2ZW4gc2lnbmFsLgotLy8gSWYgdGhlIHNpZ25hbCBkb2VzIG5vdCBjYXVzZSB0
aGUgcHJvY2VzcyB0byBkaWUsIHRoZW4gaXQgcmV0dXJucwotLy8gaW5zdGVhZCB0aGUgZXhpdCBz
dGF0dXMgb2YgYSBwcm9jZXNzIHRoYXQgZXhpdHMgbm9ybWFsbHkgd2l0aCBleGl0Ci0vLyBjb2Rl
IDEuICBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGUgRXhpdFN0YXR1c1ByZWRpY2F0
ZVRlc3QKLS8vIHRlc3Qgc3VpdGUuCi1zdGF0aWMgaW50IEtpbGxlZEV4aXRTdGF0dXMoaW50IHNp
Z251bSkgewotICBwaWRfdCBjaGlsZF9waWQgPSBmb3JrKCk7Ci0gIGlmIChjaGlsZF9waWQgPT0g
MCkgewotICAgIHJhaXNlKHNpZ251bSk7Ci0gICAgX2V4aXQoMSk7Ci0gIH0KLSAgaW50IHN0YXR1
czsKLSAgd2FpdHBpZChjaGlsZF9waWQsICZzdGF0dXMsIDApOwotICByZXR1cm4gc3RhdHVzOwot
fQotCi0vLyBUZXN0cyB0aGUgRXhpdGVkV2l0aENvZGUgcHJlZGljYXRlLgotVEVTVChFeGl0U3Rh
dHVzUHJlZGljYXRlVGVzdCwgRXhpdGVkV2l0aENvZGUpIHsKLSAgY29uc3QgaW50IHN0YXR1czAg
ID0gTm9ybWFsRXhpdFN0YXR1cygwKTsKLSAgY29uc3QgaW50IHN0YXR1czEgID0gTm9ybWFsRXhp
dFN0YXR1cygxKTsKLSAgY29uc3QgaW50IHN0YXR1czQyID0gTm9ybWFsRXhpdFN0YXR1cyg0Mik7
Ci0gIGNvbnN0IHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlIHByZWQwKDApOwotICBjb25zdCB0ZXN0
aW5nOjpFeGl0ZWRXaXRoQ29kZSBwcmVkMSgxKTsKLSAgY29uc3QgdGVzdGluZzo6RXhpdGVkV2l0
aENvZGUgcHJlZDQyKDQyKTsKLSAgRVhQRUNUX1BSRUQxKHByZWQwLCAgc3RhdHVzMCk7Ci0gIEVY
UEVDVF9QUkVEMShwcmVkMSwgIHN0YXR1czEpOwotICBFWFBFQ1RfUFJFRDEocHJlZDQyLCBzdGF0
dXM0Mik7Ci0gIEVYUEVDVF9GQUxTRShwcmVkMChzdGF0dXMxKSk7Ci0gIEVYUEVDVF9GQUxTRShw
cmVkNDIoc3RhdHVzMCkpOwotICBFWFBFQ1RfRkFMU0UocHJlZDEoc3RhdHVzNDIpKTsKLX0KLQot
Ly8gVGVzdHMgdGhlIEtpbGxlZEJ5U2lnbmFsIHByZWRpY2F0ZS4KLVRFU1QoRXhpdFN0YXR1c1By
ZWRpY2F0ZVRlc3QsIEtpbGxlZEJ5U2lnbmFsKSB7Ci0gIGNvbnN0IGludCBzdGF0dXNfc2VndiA9
IEtpbGxlZEV4aXRTdGF0dXMoU0lHU0VHVik7Ci0gIGNvbnN0IGludCBzdGF0dXNfa2lsbCA9IEtp
bGxlZEV4aXRTdGF0dXMoU0lHS0lMTCk7Ci0gIGNvbnN0IHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFs
IHByZWRfc2VndihTSUdTRUdWKTsKLSAgY29uc3QgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwgcHJl
ZF9raWxsKFNJR0tJTEwpOwotICBFWFBFQ1RfUFJFRDEocHJlZF9zZWd2LCBzdGF0dXNfc2Vndik7
Ci0gIEVYUEVDVF9QUkVEMShwcmVkX2tpbGwsIHN0YXR1c19raWxsKTsKLSAgRVhQRUNUX0ZBTFNF
KHByZWRfc2VndihzdGF0dXNfa2lsbCkpOwotICBFWFBFQ1RfRkFMU0UocHJlZF9raWxsKHN0YXR1
c19zZWd2KSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0vLyBUZXN0cyB0
aGF0IHRoZSBkZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29kZSB3aGljaCBtYXkgb3IgbWF5
IG5vdAotLy8gYmUgZm9sbG93ZWQgYnkgb3BlcmF0b3I8PCwgYW5kIHRoYXQgaW4gZWl0aGVyIGNh
c2UgdGhlIGNvbXBsZXRlIHRleHQKLS8vIGNvbXByaXNlcyBvbmx5IGEgc2luZ2xlIEMrKyBzdGF0
ZW1lbnQuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU2luZ2xlU3RhdGVtZW50KSB7Ci0gIGlm
IChBbHdheXNGYWxzZSgpKQotICAgIC8vIFRoaXMgd291bGQgZmFpbCBpZiBleGVjdXRlZDsgdGhp
cyBpcyBhIGNvbXBpbGF0aW9uIHRlc3Qgb25seQotICAgIEFTU0VSVF9ERUFUSChyZXR1cm4sICIi
KTsKLQotICBpZiAoQWx3YXlzVHJ1ZSgpKQotICAgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIp
OwotICBlbHNlCi0gICAgLy8gVGhpcyBlbXB0eSAiZWxzZSIgYnJhbmNoIGlzIG1lYW50IHRvIGVu
c3VyZSB0aGF0IEVYUEVDVF9ERUFUSAotICAgIC8vIGRvZXNuJ3QgZXhwYW5kIGludG8gYW4gImlm
IiBzdGF0ZW1lbnQgd2l0aG91dCBhbiAiZWxzZSIKLSAgICA7Ci0KLSAgaWYgKEFsd2F5c0ZhbHNl
KCkpCi0gICAgQVNTRVJUX0RFQVRIKHJldHVybiwgIiIpIDw8ICJkaWQgbm90IGRpZSI7Ci0KLSAg
aWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgOwotICBlbHNlCi0gICAgRVhQRUNUX0RFQVRIKF9leGl0
KDEpLCAiIikgPDwgMSA8PCAyIDw8IDM7Ci19Ci0KLXZvaWQgRGllV2l0aEVtYmVkZGVkTnVsKCkg
ewotICBmcHJpbnRmKHN0ZGVyciwgIkhlbGxvJWNteSBudWxsIHdvcmxkLlxuIiwgJ1wwJyk7Ci0g
IGZmbHVzaChzdGRlcnIpOwotICBfZXhpdCgxKTsKLX0KLQotI2lmIEdURVNUX1VTRVNfUENSRQot
Ly8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEggYW5kIEFTU0VSVF9ERUFUSCB3b3JrIHdoZW4gdGhl
IGVycm9yCi0vLyBtZXNzYWdlIGhhcyBhIE5VTCBjaGFyYWN0ZXIgaW4gaXQuCi1URVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgRW1iZWRkZWROdWxJbk1lc3NhZ2UpIHsKLSAgLy8gVE9ETyh3YW5AZ29v
Z2xlLmNvbSk6IDxyZWdleC5oPiBkb2Vzbid0IHN1cHBvcnQgbWF0Y2hpbmcgc3RyaW5ncwotICAv
LyB3aXRoIGVtYmVkZGVkIE5VTCBjaGFyYWN0ZXJzIC0gZmluZCBhIHdheSB0byB3b3JrYXJvdW5k
IGl0LgotICBFWFBFQ1RfREVBVEgoRGllV2l0aEVtYmVkZGVkTnVsKCksICJteSBudWxsIHdvcmxk
Iik7Ci0gIEFTU0VSVF9ERUFUSChEaWVXaXRoRW1iZWRkZWROdWwoKSwgIm15IG51bGwgd29ybGQi
KTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfVVNFU19QQ1JFCi0KLS8vIFRlc3RzIHRoYXQgZGVhdGgg
dGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUgd2hpY2ggaW50ZXJhY3RzIHdlbGwgd2l0aCBzd2l0
Y2gKLS8vIHN0YXRlbWVudHMuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU3dpdGNoU3RhdGVt
ZW50KSB7Ci0vLyBNaWNyb3NvZnQgY29tcGlsZXIgdXN1YWxseSBjb21wbGFpbnMgYWJvdXQgc3dp
dGNoIHN0YXRlbWVudHMgd2l0aG91dAotLy8gY2FzZSBsYWJlbHMuIFdlIHN1cHByZXNzIHRoYXQg
d2FybmluZyBmb3IgdGhpcyB0ZXN0LgotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmco
cHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MDY1KQotI2VuZGlmICAvLyBfTVNDX1ZF
UgotCi0gIHN3aXRjaCAoMCkKLSAgICBkZWZhdWx0OgotICAgICAgQVNTRVJUX0RFQVRIKF9leGl0
KDEpLCAiIikgPDwgImV4aXQgaW4gZGVmYXVsdCBzd2l0Y2ggaGFuZGxlciI7Ci0KLSAgc3dpdGNo
ICgwKQotICAgIGNhc2UgMDoKLSAgICAgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8ICJl
eGl0IGluIHN3aXRjaCBjYXNlIjsKLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIHdhcm5pbmco
cG9wKQotI2VuZGlmICAvLyBfTVNDX1ZFUgotfQotCi0vLyBUZXN0cyB0aGF0IGEgc3RhdGljIG1l
bWJlciBmdW5jdGlvbiBjYW4gYmUgdXNlZCBpbiBhICJmYXN0IiBzdHlsZQotLy8gZGVhdGggdGVz
dC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTdGF0aWNNZW1iZXJGdW5jdGlvbkZhc3RTdHls
ZSkgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOwot
ICBBU1NFUlRfREVBVEgoU3RhdGljTWVtYmVyRnVuY3Rpb24oKSwgImRlYXRoLipTdGF0aWNNZW1i
ZXIiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNh
biBiZSB1c2VkIGluIGEgImZhc3QiCi0vLyBzdHlsZSBkZWF0aCB0ZXN0LgotVEVTVF9GKFRlc3RG
b3JEZWF0aFRlc3QsIE1lbWJlckZ1bmN0aW9uRmFzdFN0eWxlKSB7Ci0gIHRlc3Rpbmc6OkdURVNU
X0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7Ci0gIHNob3VsZF9kaWVfID0gdHJ1ZTsK
LSAgRVhQRUNUX0RFQVRIKE1lbWJlckZ1bmN0aW9uKCksICJpbnNpZGUuKk1lbWJlckZ1bmN0aW9u
Iik7Ci19Ci0KLXZvaWQgQ2hhbmdlVG9Sb290RGlyKCkgeyBwb3NpeDo6Q2hEaXIoR1RFU1RfUEFU
SF9TRVBfKTsgfQotCi0vLyBUZXN0cyB0aGF0IGRlYXRoIHRlc3RzIHdvcmsgZXZlbiBpZiB0aGUg
Y3VycmVudCBkaXJlY3RvcnkgaGFzIGJlZW4KLS8vIGNoYW5nZWQuCi1URVNUX0YoVGVzdEZvckRl
YXRoVGVzdCwgRmFzdERlYXRoVGVzdEluQ2hhbmdlZERpcikgewotICB0ZXN0aW5nOjpHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOwotCi0gIENoYW5nZVRvUm9vdERpcigpOwot
ICBFWFBFQ1RfRVhJVChfZXhpdCgxKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSksICIiKTsK
LQotICBDaGFuZ2VUb1Jvb3REaXIoKTsKLSAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci19
Ci0KLS8vIFJlcGVhdHMgYSByZXByZXNlbnRhdGl2ZSBzYW1wbGUgb2YgZGVhdGggdGVzdHMgaW4g
dGhlICJ0aHJlYWRzYWZlIiBzdHlsZToKLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFN0YXRp
Y01lbWJlckZ1bmN0aW9uVGhyZWFkc2FmZVN0eWxlKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUco
ZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7Ci0gIEFTU0VSVF9ERUFUSChTdGF0aWNN
ZW1iZXJGdW5jdGlvbigpLCAiZGVhdGguKlN0YXRpY01lbWJlciIpOwotfQotCi1URVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgTWVtYmVyRnVuY3Rpb25UaHJlYWRzYWZlU3R5bGUpIHsKLSAgdGVzdGlu
Zzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKLSAgc2hvdWxk
X2RpZV8gPSB0cnVlOwotICBFWFBFQ1RfREVBVEgoTWVtYmVyRnVuY3Rpb24oKSwgImluc2lkZS4q
TWVtYmVyRnVuY3Rpb24iKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRocmVhZHNh
ZmVEZWF0aFRlc3RJbkxvb3ApIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0
eWxlKSA9ICJ0aHJlYWRzYWZlIjsKLQotICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkKLSAg
ICBFWFBFQ1RfRVhJVChfZXhpdChpKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoaSksICIiKSA8
PCAiOiBpID0gIiA8PCBpOwotfQotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgVGhyZWFkc2Fm
ZURlYXRoVGVzdEluQ2hhbmdlZERpcikgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rl
c3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOwotCi0gIENoYW5nZVRvUm9vdERpcigpOwotICBFWFBF
Q1RfRVhJVChfZXhpdCgxKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSksICIiKTsKLQotICBD
aGFuZ2VUb1Jvb3REaXIoKTsKLSAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci19Ci0KLVRF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNaXhlZFN0eWxlcykgewotICB0ZXN0aW5nOjpHVEVTVF9G
TEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOwotICBFWFBFQ1RfREVBVEgoX2V4
aXQoMSksICIiKTsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJm
YXN0IjsKLSAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci19Ci0KLW5hbWVzcGFjZSB7Ci0K
LWJvb2wgcHRocmVhZF9mbGFnOwotCi12b2lkIFNldFB0aHJlYWRGbGFnKCkgewotICBwdGhyZWFk
X2ZsYWcgPSB0cnVlOwotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotI2lmIEdURVNUX0hBU19DTE9O
RSAmJiBHVEVTVF9IQVNfUFRIUkVBRAotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRG9lc05v
dEV4ZWN1dGVBdGZvcmtIb29rcykgewotICBpZiAoIXRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhf
dGVzdF91c2VfZm9yaykpIHsKLSAgICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5
bGUpID0gInRocmVhZHNhZmUiOwotICAgIHB0aHJlYWRfZmxhZyA9IGZhbHNlOwotICAgIEFTU0VS
VF9FUSgwLCBwdGhyZWFkX2F0Zm9yaygmU2V0UHRocmVhZEZsYWcsIE5VTEwsIE5VTEwpKTsKLSAg
ICBBU1NFUlRfREVBVEgoX2V4aXQoMSksICIiKTsKLSAgICBBU1NFUlRfRkFMU0UocHRocmVhZF9m
bGFnKTsKLSAgfQotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19DTE9ORSAmJiBHVEVTVF9IQVNf
UFRIUkVBRAotCi0vLyBUZXN0cyB0aGF0IGEgbWV0aG9kIG9mIGFub3RoZXIgY2xhc3MgY2FuIGJl
IHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE1ldGhvZE9m
QW5vdGhlckNsYXNzKSB7Ci0gIGNvbnN0IE1heURpZSB4KHRydWUpOwotICBBU1NFUlRfREVBVEgo
eC5NZW1iZXJGdW5jdGlvbigpLCAiTWF5RGllXFw6XFw6TWVtYmVyRnVuY3Rpb24iKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBhIGdsb2JhbCBmdW5jdGlvbiBjYW4gYmUgdXNlZCBpbiBhIGRlYXRoIHRl
c3QuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgR2xvYmFsRnVuY3Rpb24pIHsKLSAgRVhQRUNU
X0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksICJHbG9iYWxGdW5jdGlvbiIpOwotfQotCi0vLyBUZXN0
cyB0aGF0IGFueSB2YWx1ZSBjb252ZXJ0aWJsZSB0byBhbiBSRSB3b3JrcyBhcyBhIHNlY29uZAot
Ly8gYXJndW1lbnQgdG8gRVhQRUNUX0RFQVRILgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFj
Y2VwdHNBbnl0aGluZ0NvbnZlcnRpYmxlVG9SRSkgewotICBzdGF0aWMgY29uc3QgY2hhciByZWdl
eF9jX3N0cltdID0gIkdsb2JhbEZ1bmN0aW9uIjsKLSAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0
aW9uKCksIHJlZ2V4X2Nfc3RyKTsKLQotICBjb25zdCB0ZXN0aW5nOjppbnRlcm5hbDo6UkUgcmVn
ZXgocmVnZXhfY19zdHIpOwotICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXgp
OwotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLSAgY29uc3Qgc3RyaW5nIHJlZ2V4X3N0
cihyZWdleF9jX3N0cik7Ci0gIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleF9z
dHIpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotCi0gIGNvbnN0IDo6c3Rk
OjpzdHJpbmcgcmVnZXhfc3RkX3N0cihyZWdleF9jX3N0cik7Ci0gIEVYUEVDVF9ERUFUSChHbG9i
YWxGdW5jdGlvbigpLCByZWdleF9zdGRfc3RyKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIG5vbi12
b2lkIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KLVRFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBOb25Wb2lkRnVuY3Rpb24pIHsKLSAgQVNTRVJUX0RFQVRIKE5vblZvaWRGdW5j
dGlvbigpLCAiTm9uVm9pZEZ1bmN0aW9uIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgZnVuY3Rpb25z
IHRoYXQgdGFrZSBwYXJhbWV0ZXIocykgY2FuIGJlIHVzZWQgaW4gYSBkZWF0aCB0ZXN0LgotVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIEZ1bmN0aW9uV2l0aFBhcmFtZXRlcikgewotICBFWFBFQ1Rf
REVBVEgoRGllSWYodHJ1ZSksICJEaWVJZlxcKFxcKSIpOwotICBFWFBFQ1RfREVBVEgoRGllSWZM
ZXNzVGhhbigyLCAzKSwgIkRpZUlmTGVzc1RoYW4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBU1NF
UlRfREVBVEggY2FuIGJlIHVzZWQgb3V0c2lkZSBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdCBmaXh0
dXJlLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIE91dHNpZGVGaXh0dXJlKSB7Ci0gIERlYXRo
VGVzdFN1YnJvdXRpbmUoKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyBjYW4gYmUg
ZG9uZSBpbnNpZGUgYSBsb29wLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEluc2lkZUxvb3Ap
IHsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKLSAgICBFWFBFQ1RfREVBVEgoRGll
SWZMZXNzVGhhbigtMSwgaSksICJEaWVJZkxlc3NUaGFuIikgPDwgIndoZXJlIGkgPT0gIiA8PCBp
OwotICB9Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBjb21wb3VuZCBzdGF0ZW1lbnQgY2FuIGJlIHVz
ZWQgaW4gYSBkZWF0aCB0ZXN0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIENvbXBvdW5kU3Rh
dGVtZW50KSB7Ci0gIEVYUEVDVF9ERUFUSCh7ICAvLyBOT0xJTlQKLSAgICBjb25zdCBpbnQgeCA9
IDI7Ci0gICAgY29uc3QgaW50IHkgPSB4ICsgMTsKLSAgICBEaWVJZkxlc3NUaGFuKHgsIHkpOwot
ICB9LAotICAiRGllSWZMZXNzVGhhbiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IGNvZGUgdGhhdCBk
b2Vzbid0IGRpZSBjYXVzZXMgYSBkZWF0aCB0ZXN0IHRvIGZhaWwuCi1URVNUX0YoVGVzdEZvckRl
YXRoVGVzdCwgRG9lc05vdERpZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1Rf
REVBVEgoRGllSWYoZmFsc2UpLCAiRGllSWYiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ImZhaWxlZCB0byBkaWUiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIGRlYXRoIHRlc3QgZmFpbHMg
d2hlbiB0aGUgZXJyb3IgbWVzc2FnZSBpc24ndCBleHBlY3RlZC4KLVRFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBFcnJvck1lc3NhZ2VNaXNtYXRjaCkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfREVBVEgoRGllSWYodHJ1ZSksICJEaWVJZkxlc3NU
aGFuIikgPDwgIkVuZCBvZiBkZWF0aCB0ZXN0IG1lc3NhZ2UuIjsKLSAgfSwgImRpZWQgYnV0IG5v
dCB3aXRoIGV4cGVjdGVkIGVycm9yIik7Ci19Ci0KLS8vIE9uIGV4aXQsICphYm9ydGVkIHdpbGwg
YmUgdHJ1ZSBpZmYgdGhlIEVYUEVDVF9ERUFUSCgpIHN0YXRlbWVudAotLy8gYWJvcnRlZCB0aGUg
ZnVuY3Rpb24uCi12b2lkIEV4cGVjdERlYXRoVGVzdEhlbHBlcihib29sKiBhYm9ydGVkKSB7Ci0g
ICphYm9ydGVkID0gdHJ1ZTsKLSAgRVhQRUNUX0RFQVRIKERpZUlmKGZhbHNlKSwgIkRpZUlmIik7
ICAvLyBUaGlzIGFzc2VydGlvbiBzaG91bGQgZmFpbC4KLSAgKmFib3J0ZWQgPSBmYWxzZTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEggZG9lc24ndCBhYm9ydCB0aGUgdGVzdCBvbiBm
YWlsdXJlLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEVYUEVDVF9ERUFUSCkgewotICBib29s
IGFib3J0ZWQgPSB0cnVlOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFeHBlY3REZWF0aFRl
c3RIZWxwZXIoJmFib3J0ZWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRv
IGRpZSIpOwotICBFWFBFQ1RfRkFMU0UoYWJvcnRlZCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQVNT
RVJUX0RFQVRIIGRvZXMgYWJvcnQgdGhlIHRlc3Qgb24gZmFpbHVyZS4KLVRFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBBU1NFUlRfREVBVEgpIHsKLSAgc3RhdGljIGJvb2wgYWJvcnRlZDsKLSAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgYWJvcnRlZCA9IHRydWU7Ci0gICAg
QVNTRVJUX0RFQVRIKERpZUlmKGZhbHNlKSwgIkRpZUlmIik7ICAvLyBUaGlzIGFzc2VydGlvbiBz
aG91bGQgZmFpbC4KLSAgICBhYm9ydGVkID0gZmFsc2U7Ci0gIH0sICJmYWlsZWQgdG8gZGllIik7
Ci0gIEVYUEVDVF9UUlVFKGFib3J0ZWQpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFU
SCBldmFsdWF0ZXMgdGhlIGFyZ3VtZW50cyBleGFjdGx5IG9uY2UuCi1URVNUX0YoVGVzdEZvckRl
YXRoVGVzdCwgU2luZ2xlRXZhbHVhdGlvbikgewotICBpbnQgeCA9IDM7Ci0gIEVYUEVDVF9ERUFU
SChEaWVJZigoKyt4KSA9PSA0KSwgIkRpZUlmIik7Ci0KLSAgY29uc3QgY2hhciogcmVnZXggPSAi
RGllSWYiOwotICBjb25zdCBjaGFyKiByZWdleF9zYXZlID0gcmVnZXg7Ci0gIEVYUEVDVF9ERUFU
SChEaWVJZkxlc3NUaGFuKDMsIDQpLCByZWdleCsrKTsKLSAgRVhQRUNUX0VRKHJlZ2V4X3NhdmUg
KyAxLCByZWdleCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgcnVuLWF3YXkgZGVhdGggdGVzdHMgYXJl
IHJlcG9ydGVkIGFzIGZhaWx1cmVzLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFJ1bmF3YXkp
IHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKHN0YXRpY19jYXN0PHZv
aWQ+KDApLCAiRm9vIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZGll
LiIpOwotCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9ERUFUSChyZXR1cm4sICJCYXIi
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgImlsbGVnYWwgcmV0dXJuIGluIHRlc3Qgc3RhdGVt
ZW50LiIpOwotfQotCi0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQlVHX0RFQVRIIHdvcmtzIGFz
IGV4cGVjdGVkLAotLy8gdGhhdCBpcywgaW4gZGVidWcgbW9kZSwgaXQ6Ci0vLyAxLiBBc3NlcnRz
IG9uIGRlYXRoLgotLy8gMi4gSGFzIG5vIHNpZGUgZWZmZWN0LgotLy8KLS8vIEFuZCBpbiBvcHQg
bW9kZSwgaXQ6Ci0vLyAxLiAgSGFzIHNpZGUgZWZmZWN0cyBidXQgZG9lcyBub3QgYXNzZXJ0Lgot
VEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRlc3RFeHBlY3REZWJ1Z0RlYXRoKSB7Ci0gIGludCBz
aWRlZWZmZWN0ID0gMDsKLQotICBFWFBFQ1RfREVCVUdfREVBVEgoRGllSW5EZWJ1Z0Vsc2UxMigm
c2lkZWVmZmVjdCksCi0gICAgICAgICAgICAgICAgICAgICAiZGVhdGguKkRpZUluRGVidWdFbHNl
MTIiKTsKLQotI2lmZGVmIE5ERUJVRwotICAvLyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBv
Y2N1cnMgaW4gb3B0IG1vZGUgKHNpZGVlZmZlY3QpLgotICBFWFBFQ1RfRVEoMTIsIHNpZGVlZmZl
Y3QpOwotI2Vsc2UKLSAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgZG9lcyBub3Qgb2Nj
dXIgaW4gZGJnIG1vZGUgKG5vIHNpZGVlZmZlY3QpLgotICBFWFBFQ1RfRVEoMCwgc2lkZWVmZmVj
dCk7Ci0jZW5kaWYKLX0KLQotLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVCVUdfREVBVEggd29ya3Mg
YXMgZXhwZWN0ZWQKLS8vIEluIGRlYnVnIG1vZGU6Ci0vLyAxLiBBc3NlcnRzIG9uIGRlYnVnIGRl
YXRoLgotLy8gMi4gSGFzIG5vIHNpZGUgZWZmZWN0LgotLy8KLS8vIEluIG9wdCBtb2RlOgotLy8g
MS4gSGFzIHNpZGUgZWZmZWN0cyBhbmQgcmV0dXJucyB0aGUgZXhwZWN0ZWQgdmFsdWUgKDEyKS4K
LVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBUZXN0QXNzZXJ0RGVidWdEZWF0aCkgewotICBpbnQg
c2lkZWVmZmVjdCA9IDA7Ci0KLSAgQVNTRVJUX0RFQlVHX0RFQVRIKHsgIC8vIE5PTElOVAotICAg
IC8vIFRlc3RzIHRoYXQgdGhlIHJldHVybiB2YWx1ZSBpcyAxMiBpbiBvcHQgbW9kZS4KLSAgICBF
WFBFQ1RfRVEoMTIsIERpZUluRGVidWdFbHNlMTIoJnNpZGVlZmZlY3QpKTsKLSAgICAvLyBUZXN0
cyB0aGF0IHRoZSBzaWRlIGVmZmVjdCBvY2N1cnJlZCBpbiBvcHQgbW9kZS4KLSAgICBFWFBFQ1Rf
RVEoMTIsIHNpZGVlZmZlY3QpOwotICB9LCAiZGVhdGguKkRpZUluRGVidWdFbHNlMTIiKTsKLQot
I2lmZGVmIE5ERUJVRwotICAvLyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBvY2N1cnMgaW4g
b3B0IG1vZGUgKHNpZGVlZmZlY3QpLgotICBFWFBFQ1RfRVEoMTIsIHNpZGVlZmZlY3QpOwotI2Vs
c2UKLSAgLy8gQ2hlY2tzIHRoYXQgdGhlIGFzc2lnbm1lbnQgZG9lcyBub3Qgb2NjdXIgaW4gZGJn
IG1vZGUgKG5vIHNpZGVlZmZlY3QpLgotICBFWFBFQ1RfRVEoMCwgc2lkZWVmZmVjdCk7Ci0jZW5k
aWYKLX0KLQotI2lmbmRlZiBOREVCVUcKLQotdm9pZCBFeHBlY3REZWJ1Z0RlYXRoSGVscGVyKGJv
b2wqIGFib3J0ZWQpIHsKLSAgKmFib3J0ZWQgPSB0cnVlOwotICBFWFBFQ1RfREVCVUdfREVBVEgo
cmV0dXJuLCAiIikgPDwgIlRoaXMgaXMgZXhwZWN0ZWQgdG8gZmFpbC4iOwotICAqYWJvcnRlZCA9
IGZhbHNlOwotfQotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotVEVTVChQb3BVcERlYXRoVGVzdCwg
RG9lc05vdFNob3dQb3BVcE9uQWJvcnQpIHsKLSAgcHJpbnRmKCJUaGlzIHRlc3Qgc2hvdWxkIGJl
IGNvbnNpZGVyZWQgZmFpbGluZyBpZiBpdCBzaG93cyAiCi0gICAgICAgICAiYW55IHBvcC11cCBk
aWFsb2dzLlxuIik7Ci0gIGZmbHVzaChzdGRvdXQpOwotCi0gIEVYUEVDVF9ERUFUSCh7Ci0gICAg
dGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA9IGZhbHNlOwotICAgIGFib3J0
KCk7Ci0gIH0sICIiKTsKLX0KLQotVEVTVChQb3BVcERlYXRoVGVzdCwgRG9lc05vdFNob3dQb3BV
cE9uVGhyb3cpIHsKLSAgcHJpbnRmKCJUaGlzIHRlc3Qgc2hvdWxkIGJlIGNvbnNpZGVyZWQgZmFp
bGluZyBpZiBpdCBzaG93cyAiCi0gICAgICAgICAiYW55IHBvcC11cCBkaWFsb2dzLlxuIik7Ci0g
IGZmbHVzaChzdGRvdXQpOwotCi0gIEVYUEVDVF9ERUFUSCh7Ci0gICAgdGVzdGluZzo6R1RFU1Rf
RkxBRyhjYXRjaF9leGNlcHRpb25zKSA9IGZhbHNlOwotICAgIHRocm93IDE7Ci0gIH0sICIiKTsK
LX0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9E
RUJVR19ERUFUSCBpbiBkZWJ1ZyBtb2RlIGRvZXMgbm90IGFib3J0Ci0vLyB0aGUgZnVuY3Rpb24u
Ci1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRXhwZWN0RGVidWdEZWF0aERvZXNOb3RBYm9ydCkg
ewotICBib29sIGFib3J0ZWQgPSB0cnVlOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFeHBl
Y3REZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwgIiIpOwotICBFWFBFQ1RfRkFMU0UoYWJvcnRl
ZCk7Ci19Ci0KLXZvaWQgQXNzZXJ0RGVidWdEZWF0aEhlbHBlcihib29sKiBhYm9ydGVkKSB7Ci0g
ICphYm9ydGVkID0gdHJ1ZTsKLSAgQVNTRVJUX0RFQlVHX0RFQVRIKHJldHVybiwgIiIpIDw8ICJU
aGlzIGlzIGV4cGVjdGVkIHRvIGZhaWwuIjsKLSAgKmFib3J0ZWQgPSBmYWxzZTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBBU1NFUlRfREVCVUdfREVBVEggaW4gZGVidWcgbW9kZSBhYm9ydHMgdGhlIGZ1
bmN0aW9uIG9uCi0vLyBmYWlsdXJlLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERl
YnVnRGVhdGhBYm9ydHMpIHsKLSAgc3RhdGljIGJvb2wgYWJvcnRlZDsKLSAgYWJvcnRlZCA9IGZh
bHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9y
dGVkKSwgIiIpOwotICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKLX0KLQotI2VuZGlmICAvLyBfTkRF
QlVHCi0KLS8vIFRlc3RzIHRoZSAqX0VYSVQgZmFtaWx5IG9mIG1hY3JvcywgdXNpbmcgYSB2YXJp
ZXR5IG9mIHByZWRpY2F0ZXMuCi1zdGF0aWMgdm9pZCBUZXN0RXhpdE1hY3JvcygpIHsKLSAgRVhQ
RUNUX0VYSVQoX2V4aXQoMSksICB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSwgICIiKTsKLSAg
QVNTRVJUX0VYSVQoX2V4aXQoNDIpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSg0MiksICIiKTsK
LQotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgLy8gT2YgYWxsIHNpZ25hbHMgZWZmZWN0cyBvbiB0
aGUgcHJvY2VzcyBleGl0IGNvZGUsIG9ubHkgdGhvc2Ugb2YgU0lHQUJSVAotICAvLyBhcmUgZG9j
dW1lbnRlZCBvbiBXaW5kb3dzLgotICAvLyBTZWUgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9l
bi11cy9saWJyYXJ5L2R3d3prdDRjKFZTLjcxKS5hc3B4LgotICBFWFBFQ1RfRVhJVChyYWlzZShT
SUdBQlJUKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMyksICIiKTsKLSNlbHNlCi0gIEVYUEVD
VF9FWElUKHJhaXNlKFNJR0tJTEwpLCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChTSUdLSUxMKSwg
IiIpIDw8ICJmb28iOwotICBBU1NFUlRfRVhJVChyYWlzZShTSUdVU1IyKSwgdGVzdGluZzo6S2ls
bGVkQnlTaWduYWwoU0lHVVNSMiksICIiKSA8PCAiYmFyIjsKLQotICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfRVhJVChfZXhpdCgwKSwgdGVzdGluZzo6S2ls
bGVkQnlTaWduYWwoU0lHU0VHViksICIiKQotICAgICAgICA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4
cGVjdGVkLCB0b28uIjsKLSAgfSwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgdG9vLiIpOwot
I2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX0VYSVQocmFpc2UoU0lHU0VHViksIHRlc3Rpbmc6OkV4
aXRlZFdpdGhDb2RlKDApLCAiIikKLSAgICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZC4iOwotICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOwotfQotCi1URVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgRXhpdE1hY3JvcykgewotICBUZXN0RXhpdE1hY3JvcygpOwotfQotCi1U
RVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRXhpdE1hY3Jvc1VzaW5nRm9yaykgewotICB0ZXN0aW5n
OjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspID0gdHJ1ZTsKLSAgVGVzdEV4aXRNYWNy
b3MoKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEludmFsaWRTdHlsZSkgewotICB0
ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInJvY29jbyI7Ci0gIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9ERUFUSChfZXhpdCgw
KSwgIiIpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIjsKLSAgfSwgIlRoaXMgZmFpbHVy
ZSBpcyBleHBlY3RlZC4iKTsKLX0KLQotLy8gQSBEZWF0aFRlc3RGYWN0b3J5IHRoYXQgcmV0dXJu
cyBNb2NrRGVhdGhUZXN0cy4KLWNsYXNzIE1vY2tEZWF0aFRlc3RGYWN0b3J5IDogcHVibGljIERl
YXRoVGVzdEZhY3RvcnkgewotIHB1YmxpYzoKLSAgTW9ja0RlYXRoVGVzdEZhY3RvcnkoKTsKLSAg
dmlydHVhbCBib29sIENyZWF0ZShjb25zdCBjaGFyKiBzdGF0ZW1lbnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UkUqIHJlZ2V4LAotICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBEZWF0aFRlc3QqKiB0ZXN0
KTsKLQotICAvLyBTZXRzIHRoZSBwYXJhbWV0ZXJzIGZvciBzdWJzZXF1ZW50IGNhbGxzIHRvIENy
ZWF0ZS4KLSAgdm9pZCBTZXRQYXJhbWV0ZXJzKGJvb2wgY3JlYXRlLCBEZWF0aFRlc3Q6OlRlc3RS
b2xlIHJvbGUsCi0gICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdHVzLCBib29sIHBhc3NlZCk7
Ci0KLSAgLy8gQWNjZXNzb3JzLgotICBpbnQgQXNzdW1lUm9sZUNhbGxzKCkgY29uc3QgeyByZXR1
cm4gYXNzdW1lX3JvbGVfY2FsbHNfOyB9Ci0gIGludCBXYWl0Q2FsbHMoKSBjb25zdCB7IHJldHVy
biB3YWl0X2NhbGxzXzsgfQotICBpbnQgUGFzc2VkQ2FsbHMoKSBjb25zdCB7IHJldHVybiBwYXNz
ZWRfYXJnc18uc2l6ZSgpOyB9Ci0gIGJvb2wgUGFzc2VkQXJndW1lbnQoaW50IG4pIGNvbnN0IHsg
cmV0dXJuIHBhc3NlZF9hcmdzX1tuXTsgfQotICBpbnQgQWJvcnRDYWxscygpIGNvbnN0IHsgcmV0
dXJuIGFib3J0X2FyZ3NfLnNpemUoKTsgfQotICBEZWF0aFRlc3Q6OkFib3J0UmVhc29uIEFib3J0
QXJndW1lbnQoaW50IG4pIGNvbnN0IHsKLSAgICByZXR1cm4gYWJvcnRfYXJnc19bbl07Ci0gIH0K
LSAgYm9vbCBUZXN0RGVsZXRlZCgpIGNvbnN0IHsgcmV0dXJuIHRlc3RfZGVsZXRlZF87IH0KLQot
IHByaXZhdGU6Ci0gIGZyaWVuZCBjbGFzcyBNb2NrRGVhdGhUZXN0OwotICAvLyBJZiB0cnVlLCBD
cmVhdGUgd2lsbCByZXR1cm4gYSBNb2NrRGVhdGhUZXN0OyBvdGhlcndpc2UgaXQgcmV0dXJucwot
ICAvLyBOVUxMLgotICBib29sIGNyZWF0ZV87Ci0gIC8vIFRoZSB2YWx1ZSBhIE1vY2tEZWF0aFRl
c3Qgd2lsbCByZXR1cm4gZnJvbSBpdHMgQXNzdW1lUm9sZSBtZXRob2QuCi0gIERlYXRoVGVzdDo6
VGVzdFJvbGUgcm9sZV87Ci0gIC8vIFRoZSB2YWx1ZSBhIE1vY2tEZWF0aFRlc3Qgd2lsbCByZXR1
cm4gZnJvbSBpdHMgV2FpdCBtZXRob2QuCi0gIGludCBzdGF0dXNfOwotICAvLyBUaGUgdmFsdWUg
YSBNb2NrRGVhdGhUZXN0IHdpbGwgcmV0dXJuIGZyb20gaXRzIFBhc3NlZCBtZXRob2QuCi0gIGJv
b2wgcGFzc2VkXzsKLQotICAvLyBOdW1iZXIgb2YgdGltZXMgQXNzdW1lUm9sZSB3YXMgY2FsbGVk
LgotICBpbnQgYXNzdW1lX3JvbGVfY2FsbHNfOwotICAvLyBOdW1iZXIgb2YgdGltZXMgV2FpdCB3
YXMgY2FsbGVkLgotICBpbnQgd2FpdF9jYWxsc187Ci0gIC8vIFRoZSBhcmd1bWVudHMgdG8gdGhl
IGNhbGxzIHRvIFBhc3NlZCBzaW5jZSB0aGUgbGFzdCBjYWxsIHRvCi0gIC8vIFNldFBhcmFtZXRl
cnMuCi0gIHN0ZDo6dmVjdG9yPGJvb2w+IHBhc3NlZF9hcmdzXzsKLSAgLy8gVGhlIGFyZ3VtZW50
cyB0byB0aGUgY2FsbHMgdG8gQWJvcnQgc2luY2UgdGhlIGxhc3QgY2FsbCB0bwotICAvLyBTZXRQ
YXJhbWV0ZXJzLgotICBzdGQ6OnZlY3RvcjxEZWF0aFRlc3Q6OkFib3J0UmVhc29uPiBhYm9ydF9h
cmdzXzsKLSAgLy8gVHJ1ZSBpZiB0aGUgbGFzdCBNb2NrRGVhdGhUZXN0IHJldHVybmVkIGJ5IENy
ZWF0ZSBoYXMgYmVlbgotICAvLyBkZWxldGVkLgotICBib29sIHRlc3RfZGVsZXRlZF87Ci19Owot
Ci0KLS8vIEEgRGVhdGhUZXN0IGltcGxlbWVudGF0aW9uIHVzZWZ1bCBpbiB0ZXN0aW5nLiAgSXQg
cmV0dXJucyB2YWx1ZXMgc2V0Ci0vLyBhdCBpdHMgY3JlYXRpb24gZnJvbSBpdHMgdmFyaW91cyBp
bmhlcml0ZWQgRGVhdGhUZXN0IG1ldGhvZHMsIGFuZAotLy8gcmVwb3J0cyBjYWxscyB0byB0aG9z
ZSBtZXRob2RzIHRvIGl0cyBwYXJlbnQgTW9ja0RlYXRoVGVzdEZhY3RvcnkKLS8vIG9iamVjdC4K
LWNsYXNzIE1vY2tEZWF0aFRlc3QgOiBwdWJsaWMgRGVhdGhUZXN0IHsKLSBwdWJsaWM6Ci0gIE1v
Y2tEZWF0aFRlc3QoTW9ja0RlYXRoVGVzdEZhY3RvcnkgKnBhcmVudCwKLSAgICAgICAgICAgICAg
ICBUZXN0Um9sZSByb2xlLCBpbnQgc3RhdHVzLCBib29sIHBhc3NlZCkgOgotICAgICAgcGFyZW50
XyhwYXJlbnQpLCByb2xlXyhyb2xlKSwgc3RhdHVzXyhzdGF0dXMpLCBwYXNzZWRfKHBhc3NlZCkg
ewotICB9Ci0gIHZpcnR1YWwgfk1vY2tEZWF0aFRlc3QoKSB7Ci0gICAgcGFyZW50Xy0+dGVzdF9k
ZWxldGVkXyA9IHRydWU7Ci0gIH0KLSAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCkgewot
ICAgICsrcGFyZW50Xy0+YXNzdW1lX3JvbGVfY2FsbHNfOwotICAgIHJldHVybiByb2xlXzsKLSAg
fQotICB2aXJ0dWFsIGludCBXYWl0KCkgewotICAgICsrcGFyZW50Xy0+d2FpdF9jYWxsc187Ci0g
ICAgcmV0dXJuIHN0YXR1c187Ci0gIH0KLSAgdmlydHVhbCBib29sIFBhc3NlZChib29sIGV4aXRf
c3RhdHVzX29rKSB7Ci0gICAgcGFyZW50Xy0+cGFzc2VkX2FyZ3NfLnB1c2hfYmFjayhleGl0X3N0
YXR1c19vayk7Ci0gICAgcmV0dXJuIHBhc3NlZF87Ci0gIH0KLSAgdmlydHVhbCB2b2lkIEFib3J0
KEFib3J0UmVhc29uIHJlYXNvbikgewotICAgIHBhcmVudF8tPmFib3J0X2FyZ3NfLnB1c2hfYmFj
ayhyZWFzb24pOwotICB9Ci0gcHJpdmF0ZToKLSAgTW9ja0RlYXRoVGVzdEZhY3RvcnkqIGNvbnN0
IHBhcmVudF87Ci0gIGNvbnN0IFRlc3RSb2xlIHJvbGVfOwotICBjb25zdCBpbnQgc3RhdHVzXzsK
LSAgY29uc3QgYm9vbCBwYXNzZWRfOwotfTsKLQotCi0vLyBNb2NrRGVhdGhUZXN0RmFjdG9yeSBj
b25zdHJ1Y3Rvci4KLU1vY2tEZWF0aFRlc3RGYWN0b3J5OjpNb2NrRGVhdGhUZXN0RmFjdG9yeSgp
Ci0gICAgOiBjcmVhdGVfKHRydWUpLAotICAgICAgcm9sZV8oRGVhdGhUZXN0OjpPVkVSU0VFX1RF
U1QpLAotICAgICAgc3RhdHVzXygwKSwKLSAgICAgIHBhc3NlZF8odHJ1ZSksCi0gICAgICBhc3N1
bWVfcm9sZV9jYWxsc18oMCksCi0gICAgICB3YWl0X2NhbGxzXygwKSwKLSAgICAgIHBhc3NlZF9h
cmdzXygpLAotICAgICAgYWJvcnRfYXJnc18oKSB7Ci19Ci0KLQotLy8gU2V0cyB0aGUgcGFyYW1l
dGVycyBmb3Igc3Vic2VxdWVudCBjYWxscyB0byBDcmVhdGUuCi12b2lkIE1vY2tEZWF0aFRlc3RG
YWN0b3J5OjpTZXRQYXJhbWV0ZXJzKGJvb2wgY3JlYXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEZWF0aFRlc3Q6OlRlc3RSb2xlIHJvbGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0dXMsIGJvb2wgcGFzc2VkKSB7
Ci0gIGNyZWF0ZV8gPSBjcmVhdGU7Ci0gIHJvbGVfID0gcm9sZTsKLSAgc3RhdHVzXyA9IHN0YXR1
czsKLSAgcGFzc2VkXyA9IHBhc3NlZDsKLQotICBhc3N1bWVfcm9sZV9jYWxsc18gPSAwOwotICB3
YWl0X2NhbGxzXyA9IDA7Ci0gIHBhc3NlZF9hcmdzXy5jbGVhcigpOwotICBhYm9ydF9hcmdzXy5j
bGVhcigpOwotfQotCi0KLS8vIFNldHMgdGVzdCB0byBOVUxMIChpZiBjcmVhdGVfIGlzIGZhbHNl
KSBvciB0byB0aGUgYWRkcmVzcyBvZiBhIG5ldwotLy8gTW9ja0RlYXRoVGVzdCBvYmplY3Qgd2l0
aCBwYXJhbWV0ZXJzIHRha2VuIGZyb20gdGhlIGxhc3QgY2FsbAotLy8gdG8gU2V0UGFyYW1ldGVy
cyAoaWYgY3JlYXRlXyBpcyB0cnVlKS4gIEFsd2F5cyByZXR1cm5zIHRydWUuCi1ib29sIE1vY2tE
ZWF0aFRlc3RGYWN0b3J5OjpDcmVhdGUoY29uc3QgY2hhciogLypzdGF0ZW1lbnQqLywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpS
RSogLypyZWdleCovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIC8qZmlsZSovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKmxp
bmUqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWF0aFRlc3QqKiB0ZXN0
KSB7Ci0gIHRlc3RfZGVsZXRlZF8gPSBmYWxzZTsKLSAgaWYgKGNyZWF0ZV8pIHsKLSAgICAqdGVz
dCA9IG5ldyBNb2NrRGVhdGhUZXN0KHRoaXMsIHJvbGVfLCBzdGF0dXNfLCBwYXNzZWRfKTsKLSAg
fSBlbHNlIHsKLSAgICAqdGVzdCA9IE5VTEw7Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLS8v
IEEgdGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIHRoZSBsb2dpYyBvZiB0aGUgR1RFU1RfREVBVEhf
VEVTVF8gbWFjcm8uCi0vLyBJdCBpbnN0YWxscyBhIE1vY2tEZWF0aFRlc3RGYWN0b3J5IHRoYXQg
aXMgdXNlZCBmb3IgdGhlIGR1cmF0aW9uCi0vLyBvZiB0aGUgdGVzdCBjYXNlLgotY2xhc3MgTWFj
cm9Mb2dpY0RlYXRoVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0g
IHN0YXRpYyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVwbGFjZURlYXRoVGVzdEZhY3RvcnkqIHJlcGxh
Y2VyXzsKLSAgc3RhdGljIE1vY2tEZWF0aFRlc3RGYWN0b3J5KiBmYWN0b3J5XzsKLQotICBzdGF0
aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgewotICAgIGZhY3RvcnlfID0gbmV3IE1vY2tEZWF0aFRl
c3RGYWN0b3J5OwotICAgIHJlcGxhY2VyXyA9IG5ldyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVwbGFj
ZURlYXRoVGVzdEZhY3RvcnkoZmFjdG9yeV8pOwotICB9Ci0KLSAgc3RhdGljIHZvaWQgVGVhckRv
d25UZXN0Q2FzZSgpIHsKLSAgICBkZWxldGUgcmVwbGFjZXJfOwotICAgIHJlcGxhY2VyXyA9IE5V
TEw7Ci0gICAgZGVsZXRlIGZhY3RvcnlfOwotICAgIGZhY3RvcnlfID0gTlVMTDsKLSAgfQotCi0g
IC8vIFJ1bnMgYSBkZWF0aCB0ZXN0IHRoYXQgYnJlYWtzIHRoZSBydWxlcyBieSByZXR1cm5pbmcu
ICBTdWNoIGEgZGVhdGgKLSAgLy8gdGVzdCBjYW5ub3QgYmUgcnVuIGRpcmVjdGx5IGZyb20gYSB0
ZXN0IHJvdXRpbmUgdGhhdCB1c2VzIGEKLSAgLy8gTW9ja0RlYXRoVGVzdCwgb3IgdGhlIHJlbWFp
bmRlciBvZiB0aGUgcm91dGluZSB3aWxsIG5vdCBiZSBleGVjdXRlZC4KLSAgc3RhdGljIHZvaWQg
UnVuUmV0dXJuaW5nRGVhdGhUZXN0KGJvb2wqIGZsYWcpIHsKLSAgICBBU1NFUlRfREVBVEgoeyAg
Ly8gTk9MSU5UCi0gICAgICAqZmxhZyA9IHRydWU7Ci0gICAgICByZXR1cm47Ci0gICAgfSwgIiIp
OwotICB9Ci19OwotCi10ZXN0aW5nOjppbnRlcm5hbDo6UmVwbGFjZURlYXRoVGVzdEZhY3Rvcnkq
IE1hY3JvTG9naWNEZWF0aFRlc3Q6OnJlcGxhY2VyXwotICAgID0gTlVMTDsKLU1vY2tEZWF0aFRl
c3RGYWN0b3J5KiBNYWNyb0xvZ2ljRGVhdGhUZXN0OjpmYWN0b3J5XyA9IE5VTEw7Ci0KLQotLy8g
VGVzdCB0aGF0IG5vdGhpbmcgaGFwcGVucyB3aGVuIHRoZSBmYWN0b3J5IGRvZXNuJ3QgcmV0dXJu
IGEgRGVhdGhUZXN0OgotVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIE5vdGhpbmdIYXBwZW5z
KSB7Ci0gIGJvb2wgZmxhZyA9IGZhbHNlOwotICBmYWN0b3J5Xy0+U2V0UGFyYW1ldGVycyhmYWxz
ZSwgRGVhdGhUZXN0OjpPVkVSU0VFX1RFU1QsIDAsIHRydWUpOwotICBFWFBFQ1RfREVBVEgoZmxh
ZyA9IHRydWUsICIiKTsKLSAgRVhQRUNUX0ZBTFNFKGZsYWcpOwotICBFWFBFQ1RfRVEoMCwgZmFj
dG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5XYWl0
Q2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7Ci0gIEVY
UEVDVF9FUSgwLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKLSAgRVhQRUNUX0ZBTFNFKGZhY3Rv
cnlfLT5UZXN0RGVsZXRlZCgpKTsKLX0KLQotLy8gVGVzdCB0aGF0IHRoZSBwYXJlbnQgcHJvY2Vz
cyBkb2Vzbid0IHJ1biB0aGUgZGVhdGggdGVzdCBjb2RlLAotLy8gYW5kIHRoYXQgdGhlIFBhc3Nl
ZCBtZXRob2QgcmV0dXJucyBmYWxzZSB3aGVuIHRoZSAoc2ltdWxhdGVkKQotLy8gY2hpbGQgcHJv
Y2VzcyBleGl0cyB3aXRoIHN0YXR1cyAwOgotVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENo
aWxkRXhpdHNTdWNjZXNzZnVsbHkpIHsKLSAgYm9vbCBmbGFnID0gZmFsc2U7Ci0gIGZhY3Rvcnlf
LT5TZXRQYXJhbWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6T1ZFUlNFRV9URVNULCAwLCB0cnVlKTsK
LSAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7Ci0gIEVYUEVDVF9GQUxTRShmbGFnKTsK
LSAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5Bc3N1bWVSb2xlQ2FsbHMoKSk7Ci0gIEVYUEVDVF9F
USgxLCBmYWN0b3J5Xy0+V2FpdENhbGxzKCkpOwotICBBU1NFUlRfRVEoMSwgZmFjdG9yeV8tPlBh
c3NlZENhbGxzKCkpOwotICBFWFBFQ1RfRkFMU0UoZmFjdG9yeV8tPlBhc3NlZEFyZ3VtZW50KDAp
KTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOwotICBFWFBFQ1RfVFJV
RShmYWN0b3J5Xy0+VGVzdERlbGV0ZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIFBhc3Nl
ZCBtZXRob2Qgd2FzIGdpdmVuIHRoZSBhcmd1bWVudCAidHJ1ZSIgd2hlbgotLy8gdGhlIChzaW11
bGF0ZWQpIGNoaWxkIHByb2Nlc3MgZXhpdHMgd2l0aCBzdGF0dXMgMToKLVRFU1RfRihNYWNyb0xv
Z2ljRGVhdGhUZXN0LCBDaGlsZEV4aXRzVW5zdWNjZXNzZnVsbHkpIHsKLSAgYm9vbCBmbGFnID0g
ZmFsc2U7Ci0gIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6T1ZFUlNF
RV9URVNULCAxLCB0cnVlKTsKLSAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7Ci0gIEVY
UEVDVF9GQUxTRShmbGFnKTsKLSAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5Bc3N1bWVSb2xlQ2Fs
bHMoKSk7Ci0gIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+V2FpdENhbGxzKCkpOwotICBBU1NFUlRf
RVEoMSwgZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOwotICBFWFBFQ1RfVFJVRShmYWN0b3J5Xy0+
UGFzc2VkQXJndW1lbnQoMCkpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPkFib3J0Q2FsbHMo
KSk7Ci0gIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCB0aGUgKHNpbXVsYXRlZCkgY2hpbGQgcHJvY2VzcyBleGVjdXRlcyB0aGUgZGVhdGgg
dGVzdAotLy8gY29kZSwgYW5kIGlzIGFib3J0ZWQgd2l0aCB0aGUgY29ycmVjdCBBYm9ydFJlYXNv
biBpZiBpdAotLy8gZXhlY3V0ZXMgYSByZXR1cm4gc3RhdGVtZW50LgotVEVTVF9GKE1hY3JvTG9n
aWNEZWF0aFRlc3QsIENoaWxkUGVyZm9ybXNSZXR1cm4pIHsKLSAgYm9vbCBmbGFnID0gZmFsc2U7
Ci0gIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6RVhFQ1VURV9URVNU
LCAwLCB0cnVlKTsKLSAgUnVuUmV0dXJuaW5nRGVhdGhUZXN0KCZmbGFnKTsKLSAgRVhQRUNUX1RS
VUUoZmxhZyk7Ci0gIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOwot
ICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPldhaXRDYWxscygpKTsKLSAgRVhQRUNUX0VRKDAsIGZh
Y3RvcnlfLT5QYXNzZWRDYWxscygpKTsKLSAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5BYm9ydENh
bGxzKCkpOwotICBFWFBFQ1RfRVEoRGVhdGhUZXN0OjpURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9T
VEFURU1FTlQsCi0gICAgICAgICAgICBmYWN0b3J5Xy0+QWJvcnRBcmd1bWVudCgwKSk7Ci0gIEVY
UEVDVF9UUlVFKGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0
aGUgKHNpbXVsYXRlZCkgY2hpbGQgcHJvY2VzcyBpcyBhYm9ydGVkIHdpdGggdGhlCi0vLyBjb3Jy
ZWN0IEFib3J0UmVhc29uIGlmIGl0IGRvZXMgbm90IGRpZS4KLVRFU1RfRihNYWNyb0xvZ2ljRGVh
dGhUZXN0LCBDaGlsZERvZXNOb3REaWUpIHsKLSAgYm9vbCBmbGFnID0gZmFsc2U7Ci0gIGZhY3Rv
cnlfLT5TZXRQYXJhbWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6RVhFQ1VURV9URVNULCAwLCB0cnVl
KTsKLSAgRVhQRUNUX0RFQVRIKGZsYWcgPSB0cnVlLCAiIik7Ci0gIEVYUEVDVF9UUlVFKGZsYWcp
OwotICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKLSAgRVhQRUNU
X0VRKDAsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgwLCBmYWN0b3J5Xy0+
UGFzc2VkQ2FsbHMoKSk7Ci0gIC8vIFRoaXMgdGltZSB0aGVyZSBhcmUgdHdvIGNhbGxzIHRvIEFi
b3J0OiBvbmUgc2luY2UgdGhlIHRlc3QgZGlkbid0Ci0gIC8vIGRpZSwgYW5kIGFub3RoZXIgZnJv
bSB0aGUgUmV0dXJuU2VudGluZWwgd2hlbiBpdCdzIGRlc3Ryb3llZC4gIFRoZQotICAvLyBzZW50
aW5lbCBub3JtYWxseSBpc24ndCBkZXN0cm95ZWQgaWYgYSB0ZXN0IGRvZXNuJ3QgZGllLCBzaW5j
ZQotICAvLyBfZXhpdCgyKSBpcyBjYWxsZWQgaW4gdGhhdCBjYXNlIGJ5IEZvcmtpbmdEZWF0aFRl
c3QsIGJ1dCBub3QgYnkKLSAgLy8gb3VyIE1vY2tEZWF0aFRlc3QuCi0gIEFTU0VSVF9FUSgyLCBm
YWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKLSAgRVhQRUNUX0VRKERlYXRoVGVzdDo6VEVTVF9ESURf
Tk9UX0RJRSwKLSAgICAgICAgICAgIGZhY3RvcnlfLT5BYm9ydEFyZ3VtZW50KDApKTsKLSAgRVhQ
RUNUX0VRKERlYXRoVGVzdDo6VEVTVF9FTkNPVU5URVJFRF9SRVRVUk5fU1RBVEVNRU5ULAotICAg
ICAgICAgICAgZmFjdG9yeV8tPkFib3J0QXJndW1lbnQoMSkpOwotICBFWFBFQ1RfVFJVRShmYWN0
b3J5Xy0+VGVzdERlbGV0ZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBzdWNjZXNzZnVsIGRl
YXRoIHRlc3QgZG9lcyBub3QgcmVnaXN0ZXIgYSBzdWNjZXNzZnVsCi0vLyB0ZXN0IHBhcnQuCi1U
RVNUKFN1Y2Nlc3NSZWdpc3RyYXRpb25EZWF0aFRlc3QsIE5vU3VjY2Vzc1BhcnQpIHsKLSAgRVhQ
RUNUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci0gIEVYUEVDVF9FUSgwLCBHZXRVbml0VGVzdEltcGwo
KS0+Y3VycmVudF90ZXN0X3Jlc3VsdCgpLT50b3RhbF9wYXJ0X2NvdW50KCkpOwotfQotCi1URVNU
KFN0cmVhbWluZ0Fzc2VydGlvbnNEZWF0aFRlc3QsIERlYXRoVGVzdCkgewotICBFWFBFQ1RfREVB
VEgoX2V4aXQoMSksICIiKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKLSAgQVNTRVJUX0RFQVRI
KF9leGl0KDEpLCAiIikgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9ERUFUSChfZXhpdCgwKSwgIiIpIDw8
ICJleHBlY3RlZCBmYWlsdXJlIjsKLSAgfSwgImV4cGVjdGVkIGZhaWx1cmUiKTsKLSAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNTRVJUX0RFQVRIKF9leGl0KDApLCAi
IikgPDwgImV4cGVjdGVkIGZhaWx1cmUiOwotICB9LCAiZXhwZWN0ZWQgZmFpbHVyZSIpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IEdldExhc3RFcnJub0Rlc2NyaXB0aW9uIHJldHVybnMgYW4gZW1wdHkg
c3RyaW5nIHdoZW4gdGhlCi0vLyBsYXN0IGVycm9yIGlzIDAgYW5kIG5vbi1lbXB0eSBzdHJpbmcg
d2hlbiBpdCBpcyBub24temVyby4KLVRFU1QoR2V0TGFzdEVycm5vRGVzY3JpcHRpb24sIEdldExh
c3RFcnJub0Rlc2NyaXB0aW9uV29ya3MpIHsKLSAgZXJybm8gPSBFTk9FTlQ7Ci0gIEVYUEVDVF9T
VFJORSgiIiwgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKS5jX3N0cigpKTsKLSAgZXJybm8gPSAw
OwotICBFWFBFQ1RfU1RSRVEoIiIsIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkuY19zdHIoKSk7
Ci19Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi1URVNUKEF1dG9IYW5kbGVUZXN0LCBBdXRvSGFu
ZGxlV29ya3MpIHsKLSAgSEFORExFIGhhbmRsZSA9IDo6Q3JlYXRlRXZlbnQoTlVMTCwgRkFMU0Us
IEZBTFNFLCBOVUxMKTsKLSAgQVNTRVJUX05FKElOVkFMSURfSEFORExFX1ZBTFVFLCBoYW5kbGUp
OwotCi0gIC8vIFRlc3RzIHRoYXQgdGhlIEF1dG9IYW5kbGUgaXMgY29ycmVjdGx5IGluaXRpYWxp
emVkIHdpdGggYSBoYW5kbGUuCi0gIHRlc3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxlIGF1dG9f
aGFuZGxlKGhhbmRsZSk7Ci0gIEVYUEVDVF9FUShoYW5kbGUsIGF1dG9faGFuZGxlLkdldCgpKTsK
LQotICAvLyBUZXN0cyB0aGF0IFJlc2V0IGFzc2lnbnMgSU5WQUxJRF9IQU5ETEVfVkFMVUUuCi0g
IC8vIE5vdGUgdGhhdCB0aGlzIGNhbm5vdCB2ZXJpZnkgd2hldGhlciB0aGUgb3JpZ2luYWwgaGFu
ZGxlIGlzIGNsb3NlZC4KLSAgYXV0b19oYW5kbGUuUmVzZXQoKTsKLSAgRVhQRUNUX0VRKElOVkFM
SURfSEFORExFX1ZBTFVFLCBhdXRvX2hhbmRsZS5HZXQoKSk7Ci0KLSAgLy8gVGVzdHMgdGhhdCBS
ZXNldCBhc3NpZ25zIHRoZSBuZXcgaGFuZGxlLgotICAvLyBOb3RlIHRoYXQgdGhpcyBjYW5ub3Qg
dmVyaWZ5IHdoZXRoZXIgdGhlIG9yaWdpbmFsIGhhbmRsZSBpcyBjbG9zZWQuCi0gIGhhbmRsZSA9
IDo6Q3JlYXRlRXZlbnQoTlVMTCwgRkFMU0UsIEZBTFNFLCBOVUxMKTsKLSAgQVNTRVJUX05FKElO
VkFMSURfSEFORExFX1ZBTFVFLCBoYW5kbGUpOwotICBhdXRvX2hhbmRsZS5SZXNldChoYW5kbGUp
OwotICBFWFBFQ1RfRVEoaGFuZGxlLCBhdXRvX2hhbmRsZS5HZXQoKSk7Ci0KLSAgLy8gVGVzdHMg
dGhhdCBBdXRvSGFuZGxlIGNvbnRhaW5zIElOVkFMSURfSEFORExFX1ZBTFVFIGJ5IGRlZmF1bHQu
Ci0gIHRlc3Rpbmc6OmludGVybmFsOjpBdXRvSGFuZGxlIGF1dG9faGFuZGxlMjsKLSAgRVhQRUNU
X0VRKElOVkFMSURfSEFORExFX1ZBTFVFLCBhdXRvX2hhbmRsZTIuR2V0KCkpOwotfQotI2VuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi10eXBlZGVmIHVu
c2lnbmVkIF9faW50NjQgQmlnZ2VzdFBhcnNhYmxlOwotdHlwZWRlZiBzaWduZWQgX19pbnQ2NCBC
aWdnZXN0U2lnbmVkUGFyc2FibGU7Ci1jb25zdCBCaWdnZXN0UGFyc2FibGUga0JpZ2dlc3RQYXJz
YWJsZU1heCA9IFVMTE9OR19NQVg7Ci1jb25zdCBCaWdnZXN0UGFyc2FibGUga0JpZ2dlc3RTaWdu
ZWRQYXJzYWJsZU1heCA9IExMT05HX01BWDsKLSNlbHNlCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcg
bG9uZyBCaWdnZXN0UGFyc2FibGU7Ci10eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgQmlnZ2VzdFNp
Z25lZFBhcnNhYmxlOwotY29uc3QgQmlnZ2VzdFBhcnNhYmxlIGtCaWdnZXN0UGFyc2FibGVNYXgg
PQotICAgIDo6c3RkOjpudW1lcmljX2xpbWl0czxCaWdnZXN0UGFyc2FibGU+OjptYXgoKTsKLWNv
bnN0IEJpZ2dlc3RTaWduZWRQYXJzYWJsZSBrQmlnZ2VzdFNpZ25lZFBhcnNhYmxlTWF4ID0KLSAg
ICA6OnN0ZDo6bnVtZXJpY19saW1pdHM8QmlnZ2VzdFNpZ25lZFBhcnNhYmxlPjo6bWF4KCk7Ci0j
ZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0
LCBSZWplY3RzSW52YWxpZEZvcm1hdCkgewotICBCaWdnZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsK
LQotICAvLyBSZWplY3RzIG5vbi1udW1iZXJzLgotICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFs
TnVtYmVyKFN0cmluZygibm9uLW51bWJlciBzdHJpbmciKSwgJnJlc3VsdCkpOwotCi0gIC8vIFJl
amVjdHMgbnVtYmVycyB3aXRoIHdoaXRlc3BhY2UgcHJlZml4LgotICBFWFBFQ1RfRkFMU0UoUGFy
c2VOYXR1cmFsTnVtYmVyKFN0cmluZygiIDEyMyIpLCAmcmVzdWx0KSk7Ci0KLSAgLy8gUmVqZWN0
cyBuZWdhdGl2ZSBudW1iZXJzLgotICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKFN0
cmluZygiLTEyMyIpLCAmcmVzdWx0KSk7Ci0KLSAgLy8gUmVqZWN0cyBudW1iZXJzIHN0YXJ0aW5n
IHdpdGggYSBwbHVzIHNpZ24uCi0gIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoU3Ry
aW5nKCIrMTIzIiksICZyZXN1bHQpKTsKLSAgZXJybm8gPSAwOwotfQotCi1URVNUKFBhcnNlTmF0
dXJhbE51bWJlclRlc3QsIFJlamVjdHNPdmVyZmxvd25OdW1iZXJzKSB7Ci0gIEJpZ2dlc3RQYXJz
YWJsZSByZXN1bHQgPSAwOwotCi0gIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoU3Ry
aW5nKCI5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSIpLCAmcmVzdWx0KSk7Ci0KLSAgc2lnbmVkIGNo
YXIgY2hhcl9yZXN1bHQgPSAwOwotICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKFN0
cmluZygiMjAwIiksICZjaGFyX3Jlc3VsdCkpOwotICBlcnJubyA9IDA7Ci19Ci0KLVRFU1QoUGFy
c2VOYXR1cmFsTnVtYmVyVGVzdCwgQWNjZXB0c1ZhbGlkTnVtYmVycykgewotICBCaWdnZXN0UGFy
c2FibGUgcmVzdWx0ID0gMDsKLQotICByZXN1bHQgPSAwOwotICBBU1NFUlRfVFJVRShQYXJzZU5h
dHVyYWxOdW1iZXIoU3RyaW5nKCIxMjMiKSwgJnJlc3VsdCkpOwotICBFWFBFQ1RfRVEoMTIzVSwg
cmVzdWx0KTsKLQotICAvLyBDaGVjayAwIGFzIGFuIGVkZ2UgY2FzZS4KLSAgcmVzdWx0ID0gMTsK
LSAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKFN0cmluZygiMCIpLCAmcmVzdWx0KSk7
Ci0gIEVYUEVDVF9FUSgwVSwgcmVzdWx0KTsKLQotICByZXN1bHQgPSAxOwotICBBU1NFUlRfVFJV
RShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCIwMDAwMCIpLCAmcmVzdWx0KSk7Ci0gIEVYUEVD
VF9FUSgwVSwgcmVzdWx0KTsKLX0KLQotVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBBY2Nl
cHRzVHlwZUxpbWl0cykgewotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGtCaWdnZXN0UGFyc2Fi
bGVNYXg7Ci0KLSAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7Ci0gIEVYUEVDVF9UUlVFKFBh
cnNlTmF0dXJhbE51bWJlcihtc2cuR2V0U3RyaW5nKCksICZyZXN1bHQpKTsKLSAgRVhQRUNUX0VR
KGtCaWdnZXN0UGFyc2FibGVNYXgsIHJlc3VsdCk7Ci0KLSAgTWVzc2FnZSBtc2cyOwotICBtc2cy
IDw8IGtCaWdnZXN0U2lnbmVkUGFyc2FibGVNYXg7Ci0KLSAgQmlnZ2VzdFNpZ25lZFBhcnNhYmxl
IHNpZ25lZF9yZXN1bHQgPSAwOwotICBFWFBFQ1RfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIobXNn
Mi5HZXRTdHJpbmcoKSwgJnNpZ25lZF9yZXN1bHQpKTsKLSAgRVhQRUNUX0VRKGtCaWdnZXN0U2ln
bmVkUGFyc2FibGVNYXgsIHNpZ25lZF9yZXN1bHQpOwotCi0gIE1lc3NhZ2UgbXNnMzsKLSAgbXNn
MyA8PCBJTlRfTUFYOwotCi0gIGludCBpbnRfcmVzdWx0ID0gMDsKLSAgRVhQRUNUX1RSVUUoUGFy
c2VOYXR1cmFsTnVtYmVyKG1zZzMuR2V0U3RyaW5nKCksICZpbnRfcmVzdWx0KSk7Ci0gIEVYUEVD
VF9FUShJTlRfTUFYLCBpbnRfcmVzdWx0KTsKLQotICBNZXNzYWdlIG1zZzQ7Ci0gIG1zZzQgPDwg
VUlOVF9NQVg7Ci0KLSAgdW5zaWduZWQgaW50IHVpbnRfcmVzdWx0ID0gMDsKLSAgRVhQRUNUX1RS
VUUoUGFyc2VOYXR1cmFsTnVtYmVyKG1zZzQuR2V0U3RyaW5nKCksICZ1aW50X3Jlc3VsdCkpOwot
ICBFWFBFQ1RfRVEoVUlOVF9NQVgsIHVpbnRfcmVzdWx0KTsKLX0KLQotVEVTVChQYXJzZU5hdHVy
YWxOdW1iZXJUZXN0LCBXb3Jrc0ZvclNob3J0ZXJJbnRlZ2VycykgewotICBzaG9ydCBzaG9ydF9y
ZXN1bHQgPSAwOwotICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoU3RyaW5nKCIxMjMi
KSwgJnNob3J0X3Jlc3VsdCkpOwotICBFWFBFQ1RfRVEoMTIzLCBzaG9ydF9yZXN1bHQpOwotCi0g
IHNpZ25lZCBjaGFyIGNoYXJfcmVzdWx0ID0gMDsKLSAgQVNTRVJUX1RSVUUoUGFyc2VOYXR1cmFs
TnVtYmVyKFN0cmluZygiMTIzIiksICZjaGFyX3Jlc3VsdCkpOwotICBFWFBFQ1RfRVEoMTIzLCBj
aGFyX3Jlc3VsdCk7Ci19Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi1URVNUKEVudmlyb25tZW50
VGVzdCwgSGFuZGxlRml0c0ludG9TaXplVCkgewotICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20p
OiBSZW1vdmUgdGhpcyB0ZXN0IGFmdGVyIHRoaXMgY29uZGl0aW9uIGlzIHZlcmlmaWVkCi0gIC8v
IGluIGEgc3RhdGljIGFzc2VydGlvbiBpbiBndGVzdC1kZWF0aC10ZXN0LmNjIGluIHRoZSBmdW5j
dGlvbgotICAvLyBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvci4KLSAgQVNTRVJUX1RSVUUoc2l6ZW9m
KEhBTkRMRSkgPD0gc2l6ZW9mKHNpemVfdCkpOwotfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5E
T1dTCi0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRC9BU1NFUlRfREVB
VEhfSUZfU1VQUE9SVEVEIHRyaWdnZXIKLS8vIGZhaWx1cmVzIHdoZW4gZGVhdGggdGVzdHMgYXJl
IGF2YWlsYWJsZSBvbiB0aGUgc3lzdGVtLgotVEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zRGVh
dGhUZXN0LCBFeHBlY3RzRGVhdGhXaGVuRGVhdGhUZXN0c0F2YWlsYWJsZSkgewotICBFWFBFQ1Rf
REVBVEhfSUZfU1VQUE9SVEVEKERpZUluc2lkZSgiQ29uZERlYXRoVGVzdEV4cGVjdE1hY3JvIiks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlYXRoIGluc2lkZSBDb25kRGVhdGhUZXN0
RXhwZWN0TWFjcm8iKTsKLSAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChEaWVJbnNpZGUoIkNv
bmREZWF0aFRlc3RBc3NlcnRNYWNybyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk
ZWF0aCBpbnNpZGUgQ29uZERlYXRoVGVzdEFzc2VydE1hY3JvIik7Ci0KLSAgLy8gRW1wdHkgc3Rh
dGVtZW50IHdpbGwgbm90IGNyYXNoLCB3aGljaCBtdXN0IHRyaWdnZXIgYSBmYWlsdXJlLgotICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKSwg
IiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKDss
ICIiKSwgIiIpOwotfQotCi0jZWxzZQotCi11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q2FwdHVy
ZVN0ZGVycjsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRDYXB0dXJlZFN0ZGVycjsKLXVz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmc7Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RF
QVRIX0lGX1NVUFBPUlRFRC9BU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEIGFyZSBzdGlsbAotLy8g
ZGVmaW5lZCBidXQgZG8gbm90IHRyaWdnZXIgZmFpbHVyZXMgd2hlbiBkZWF0aCB0ZXN0cyBhcmUg
bm90IGF2YWlsYWJsZSBvbgotLy8gdGhlIHN5c3RlbS4KLVRFU1QoQ29uZGl0aW9uYWxEZWF0aE1h
Y3Jvc1Rlc3QsIFdhcm5zV2hlbkRlYXRoVGVzdHNOb3RBdmFpbGFibGUpIHsKLSAgLy8gRW1wdHkg
c3RhdGVtZW50IHdpbGwgbm90IGNyYXNoLCBidXQgdGhhdCBzaG91bGQgbm90IHRyaWdnZXIgYSBm
YWlsdXJlCi0gIC8vIHdoZW4gZGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQuCi0gIENhcHR1
cmVTdGRlcnIoKTsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIik7Ci0gIFN0cmlu
ZyBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZGVycigpOwotICBBU1NFUlRfVFJVRShOVUxMICE9IHN0
cnN0cihvdXRwdXQuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlYXRo
IHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKSk7Ci0gIEFTU0VSVF9U
UlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLCAiOyIpKTsKLQotICAvLyBUaGUgc3Ry
ZWFtZWQgbWVzc2FnZSBzaG91bGQgbm90IGJlIHByaW50ZWQgYXMgdGhlcmUgaXMgbm8gdGVzdCBm
YWlsdXJlLgotICBDYXB0dXJlU3RkZXJyKCk7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQo
OywgIiIpIDw8ICJzdHJlYW1lZCBtZXNzYWdlIjsKLSAgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRl
cnIoKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCA9PSBzdHJzdHIob3V0cHV0LmNfc3RyKCksICJzdHJl
YW1lZCBtZXNzYWdlIikpOwotCi0gIENhcHR1cmVTdGRlcnIoKTsKLSAgQVNTRVJUX0RFQVRIX0lG
X1NVUFBPUlRFRCg7LCAiIik7ICAvLyBOT0xJTlQKLSAgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRl
cnIoKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCAhPSBzdHJzdHIob3V0cHV0LmNfc3RyKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJEZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCBv
biB0aGlzIHBsYXRmb3JtIikpOwotICBBU1NFUlRfVFJVRShOVUxMICE9IHN0cnN0cihvdXRwdXQu
Y19zdHIoKSwgIjsiKSk7Ci0KLSAgQ2FwdHVyZVN0ZGVycigpOwotICBBU1NFUlRfREVBVEhfSUZf
U1VQUE9SVEVEKDssICIiKSA8PCAic3RyZWFtZWQgbWVzc2FnZSI7ICAvLyBOT0xJTlQKLSAgb3V0
cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCA9PSBzdHJzdHIo
b3V0cHV0LmNfc3RyKCksICJzdHJlYW1lZCBtZXNzYWdlIikpOwotfQotCi12b2lkIEZ1bmNXaXRo
QXNzZXJ0KGludCogbikgewotICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHJldHVybjssICIi
KTsKLSAgKCpuKSsrOwotfQotCi0vLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JU
RUQgZG9lcyBub3QgcmV0dXJuIGZyb20gdGhlIGN1cnJlbnQKLS8vIGZ1bmN0aW9uIChhcyBBU1NF
UlRfREVBVEggZG9lcykgaWYgZGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQuCi1URVNUKENv
bmRpdGlvbmFsRGVhdGhNYWNyb3NUZXN0LCBBc3NlcnREZWF0RG9lc05vdFJldHVybmhJZlVuc3Vw
cG9ydGVkKSB7Ci0gIGludCBuID0gMDsKLSAgRnVuY1dpdGhBc3NlcnQoJm4pOwotICBFWFBFQ1Rf
RVEoMSwgbik7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLS8vIFRlc3Rz
IHRoYXQgdGhlIGRlYXRoIHRlc3QgbWFjcm9zIGV4cGFuZCB0byBjb2RlIHdoaWNoIG1heSBvciBt
YXkgbm90Ci0vLyBiZSBmb2xsb3dlZCBieSBvcGVyYXRvcjw8LCBhbmQgdGhhdCBpbiBlaXRoZXIg
Y2FzZSB0aGUgY29tcGxldGUgdGV4dAotLy8gY29tcHJpc2VzIG9ubHkgYSBzaW5nbGUgQysrIHN0
YXRlbWVudC4KLS8vCi0vLyBUaGUgc3ludGF4IHNob3VsZCB3b3JrIHdoZXRoZXIgZGVhdGggdGVz
dHMgYXJlIGF2YWlsYWJsZSBvciBub3QuCi1URVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NTeW50
YXhEZWF0aFRlc3QsIFNpbmdsZVN0YXRlbWVudCkgewotICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAg
ICAvLyBUaGlzIHdvdWxkIGZhaWwgaWYgZXhlY3V0ZWQ7IHRoaXMgaXMgYSBjb21waWxhdGlvbiB0
ZXN0IG9ubHkKLSAgICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHJldHVybiwgIiIpOwotCi0g
IGlmIChBbHdheXNUcnVlKCkpCi0gICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChfZXhpdCgx
KSwgIiIpOwotICBlbHNlCi0gICAgLy8gVGhpcyBlbXB0eSAiZWxzZSIgYnJhbmNoIGlzIG1lYW50
IHRvIGVuc3VyZSB0aGF0IEVYUEVDVF9ERUFUSAotICAgIC8vIGRvZXNuJ3QgZXhwYW5kIGludG8g
YW4gImlmIiBzdGF0ZW1lbnQgd2l0aG91dCBhbiAiZWxzZSIKLSAgICA7ICAvLyBOT0xJTlQKLQot
ICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAgICBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHJldHVy
biwgIiIpIDw8ICJkaWQgbm90IGRpZSI7Ci0KLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgOyAg
Ly8gTk9MSU5UCi0gIGVsc2UKLSAgICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKF9leGl0KDEp
LCAiIikgPDwgMSA8PCAyIDw8IDM7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgY29uZGl0aW9uYWwgZGVh
dGggdGVzdCBtYWNyb3MgZXhwYW5kIHRvIGNvZGUgd2hpY2ggaW50ZXJhY3RzCi0vLyB3ZWxsIHdp
dGggc3dpdGNoIHN0YXRlbWVudHMuCi1URVNUKENvbmRpdGlvbmFsRGVhdGhNYWNyb3NTeW50YXhE
ZWF0aFRlc3QsIFN3aXRjaFN0YXRlbWVudCkgewotLy8gTWljcm9zb2Z0IGNvbXBpbGVyIHVzdWFs
bHkgY29tcGxhaW5zIGFib3V0IHN3aXRjaCBzdGF0ZW1lbnRzIHdpdGhvdXQKLS8vIGNhc2UgbGFi
ZWxzLiBXZSBzdXBwcmVzcyB0aGF0IHdhcm5pbmcgZm9yIHRoaXMgdGVzdC4KLSNpZmRlZiBfTVND
X1ZFUgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDA2
NSkKLSNlbmRpZiAgLy8gX01TQ19WRVIKLQotICBzd2l0Y2ggKDApCi0gICAgZGVmYXVsdDoKLSAg
ICAgIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQoMSksICIiKQotICAgICAgICAgIDw8
ICJleGl0IGluIGRlZmF1bHQgc3dpdGNoIGhhbmRsZXIiOwotCi0gIHN3aXRjaCAoMCkKLSAgICBj
YXNlIDA6Ci0gICAgICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKF9leGl0KDEpLCAiIikgPDwg
ImV4aXQgaW4gc3dpdGNoIGNhc2UiOwotCi0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgd2Fybmlu
Zyhwb3ApCi0jZW5kaWYgIC8vIF9NU0NfVkVSCi19Ci0KLS8vIFRlc3RzIHRoYXQgYSB0ZXN0IGNh
c2Ugd2hvc2UgbmFtZSBlbmRzIHdpdGggIkRlYXRoVGVzdCIgd29ya3MgZmluZQotLy8gb24gV2lu
ZG93cy4KLVRFU1QoTm90QURlYXRoVGVzdCwgVGVzdCkgewotICBTVUNDRUVEKCk7Ci19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3QuY2MK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyNTAyODI3NThkZmIzYzkzZjQ3ZjA5MWM1
MmEyZGJmOTJjYWNlZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1maWxlcGF0aF90ZXN0LmNj
CisrKyAvZGV2L251bGwKQEAgLTEsNjkwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29n
bGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3JzOiBrZWl0aC5yYXlAZ21haWwuY29t
IChLZWl0aCBSYXkpCi0vLwotLy8gR29vZ2xlIFRlc3QgZmlsZXBhdGggdXRpbGl0aWVzCi0vLwot
Ly8gVGhpcyBmaWxlIHRlc3RzIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkg
YnkKLS8vIEdvb2dsZSBUZXN0LiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBu
b3RpY2UuCi0vLwotLy8gVGhpcyBmaWxlIGlzICNpbmNsdWRlZCBmcm9tIGd0ZXN0X3VuaXR0ZXN0
LmNjLCB0byBhdm9pZCBjaGFuZ2luZwotLy8gYnVpbGQgb3IgbWFrZS1maWxlcyBmb3Igc29tZSBl
eGlzdGluZyBHb29nbGUgVGVzdCBjbGllbnRzLiBEbyBub3QKLS8vICNpbmNsdWRlIHRoaXMgZmls
ZSBhbnl3aGVyZSBlbHNlIQotCi0jaW5jbHVkZSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBh
dGguaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlz
IHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRh
dGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGlu
Y2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlz
IHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3Qt
aW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRB
VElPTl8gMQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVT
VF9JTVBMRU1FTlRBVElPTl8KLQotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0jaW5jbHVk
ZSA8d2luZG93cy5oPiAgLy8gTk9MSU5UCi0jZWxpZiBHVEVTVF9PU19XSU5ET1dTCi0jaW5jbHVk
ZSA8ZGlyZWN0Lmg+ICAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVybmFsIHsKLW5hbWVzcGFj
ZSB7Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotLy8gVE9ETyh3YW5AZ29vZ2xlLmNv
bSk6IE1vdmUgdGhlc2UgdG8gdGhlIFBPU0lYIGFkYXB0ZXIgc2VjdGlvbiBpbgotLy8gZ3Rlc3Qt
cG9ydC5oLgotCi0vLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSB0aGUgcmVtb3ZlIEMgZnVuY3Rp
b24uCi1pbnQgcmVtb3ZlKGNvbnN0IGNoYXIqIHBhdGgpIHsKLSAgTFBDV1NUUiB3cGF0aCA9IFN0
cmluZzo6QW5zaVRvVXRmMTYocGF0aCk7Ci0gIGludCByZXQgPSBEZWxldGVGaWxlKHdwYXRoKSA/
IDAgOiAtMTsKLSAgZGVsZXRlIFtdIHdwYXRoOwotICByZXR1cm4gcmV0OwotfQotLy8gV2luZG93
cyBDRSBkb2Vzbid0IGhhdmUgdGhlIF9ybWRpciBDIGZ1bmN0aW9uLgotaW50IF9ybWRpcihjb25z
dCBjaGFyKiBwYXRoKSB7Ci0gIEZpbGVQYXRoIGZpbGVwYXRoKHBhdGgpOwotICBMUENXU1RSIHdw
YXRoID0gU3RyaW5nOjpBbnNpVG9VdGYxNigKLSAgICAgIGZpbGVwYXRoLlJlbW92ZVRyYWlsaW5n
UGF0aFNlcGFyYXRvcigpLmNfc3RyKCkpOwotICBpbnQgcmV0ID0gUmVtb3ZlRGlyZWN0b3J5KHdw
YXRoKSA/IDAgOiAtMTsKLSAgZGVsZXRlIFtdIHdwYXRoOwotICByZXR1cm4gcmV0OwotfQotCi0j
ZWxzZQotCi1URVNUKEdldEN1cnJlbnREaXJUZXN0LCBSZXR1cm5zQ3VycmVudERpcikgewotICBj
b25zdCBGaWxlUGF0aCBvcmlnaW5hbF9kaXIgPSBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpOwot
ICBFWFBFQ1RfRkFMU0Uob3JpZ2luYWxfZGlyLklzRW1wdHkoKSk7Ci0KLSAgcG9zaXg6OkNoRGly
KEdURVNUX1BBVEhfU0VQXyk7Ci0gIGNvbnN0IEZpbGVQYXRoIGN3ZCA9IEZpbGVQYXRoOjpHZXRD
dXJyZW50RGlyKCk7Ci0gIHBvc2l4OjpDaERpcihvcmlnaW5hbF9kaXIuY19zdHIoKSk7Ci0KLSNp
ZiBHVEVTVF9PU19XSU5ET1dTCi0gIC8vIFNraXBzIHRoZSAiOiIuCi0gIGNvbnN0IGNoYXIqIGNv
bnN0IGN3ZF93aXRob3V0X2RyaXZlID0gc3RyY2hyKGN3ZC5jX3N0cigpLCAnOicpOwotICBBU1NF
UlRfVFJVRShjd2Rfd2l0aG91dF9kcml2ZSAhPSBOVUxMKTsKLSAgRVhQRUNUX1NUUkVRKEdURVNU
X1BBVEhfU0VQXywgY3dkX3dpdGhvdXRfZHJpdmUgKyAxKTsKLSNlbHNlCi0gIEVYUEVDVF9TVFJF
UShHVEVTVF9QQVRIX1NFUF8sIGN3ZC5jX3N0cigpKTsKLSNlbmRpZgotfQotCi0jZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLVRFU1QoSXNFbXB0eVRlc3QsIFJldHVybnNUcnVl
Rm9yRW1wdHlQYXRoKSB7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIiKS5Jc0VtcHR5KCkpOwot
ICBFWFBFQ1RfVFJVRShGaWxlUGF0aChOVUxMKS5Jc0VtcHR5KCkpOwotfQotCi1URVNUKElzRW1w
dHlUZXN0LCBSZXR1cm5zRmFsc2VGb3JOb25FbXB0eVBhdGgpIHsKLSAgRVhQRUNUX0ZBTFNFKEZp
bGVQYXRoKCJhIikuSXNFbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIuIikuSXNF
bXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJhL2IiKS5Jc0VtcHR5KCkpOwotICBF
WFBFQ1RfRkFMU0UoRmlsZVBhdGgoImFcXGJcXCIpLklzRW1wdHkoKSk7Ci19Ci0KLS8vIFJlbW92
ZURpcmVjdG9yeU5hbWUgIiIgLT4gIiIKLVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFdo
ZW5FbXB0eU5hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCIiLCBGaWxlUGF0aCgiIikuUmVtb3ZlRGly
ZWN0b3J5TmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZmls
ZSIgLT4gImFmaWxlIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgQnV0Tm9EaXJlY3Rv
cnkpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAgICBGaWxlUGF0aCgiYWZpbGUiKS5S
ZW1vdmVEaXJlY3RvcnlOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5h
bWUgIi9hZmlsZSIgLT4gImFmaWxlIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgUm9v
dEZpbGVTaG91bGRHaXZlRmlsZU5hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAg
ICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgp
LmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZGlyLyIgLT4gIiIKLVRF
U1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFdoZXJlVGhlcmVJc05vRmlsZU5hbWUpIHsKLSAg
RVhQRUNUX1NUUkVRKCIiLAotICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyku
UmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlO
YW1lICJhZGlyL2FmaWxlIiAtPiAiYWZpbGUiCi1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0
LCBTaG91bGRHaXZlRmlsZU5hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAgICBG
aWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5h
bWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiYWRpci9zdWJkaXIv
YWZpbGUiIC0+ICJhZmlsZSIKLVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEFs
c29HaXZlRmlsZU5hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJhZmlsZSIsCi0gICAgICBGaWxlUGF0
aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUi
KQotICAgICAgLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0cigpKTsKLX0KLQotI2lmIEdURVNU
X0hBU19BTFRfUEFUSF9TRVBfCi0KLS8vIFRlc3RzIHRoYXQgUmVtb3ZlRGlyZWN0b3J5TmFtZSgp
IHdvcmtzIHdpdGggdGhlIGFsdGVybmF0ZSBzZXBhcmF0b3IKLS8vIG9uIFdpbmRvd3MuCi0KLS8v
IFJlbW92ZURpcmVjdG9yeU5hbWUoIi9hZmlsZSIpIC0+ICJhZmlsZSIKLVRFU1QoUmVtb3ZlRGly
ZWN0b3J5TmFtZVRlc3QsIFJvb3RGaWxlU2hvdWxkR2l2ZUZpbGVOYW1lRm9yQWx0ZXJuYXRlU2Vw
YXJhdG9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWZpbGUiLAotICAgICAgICAgICAgICAgRmlsZVBh
dGgoIi9hZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVt
b3ZlRGlyZWN0b3J5TmFtZSgiYWRpci8iKSAtPiAiIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1l
VGVzdCwgV2hlcmVUaGVyZUlzTm9GaWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBF
WFBFQ1RfU1RSRVEoIiIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci8iKS5SZW1vdmVE
aXJlY3RvcnlOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5hbWUoImFk
aXIvYWZpbGUiKSAtPiAiYWZpbGUiCi1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91
bGRHaXZlRmlsZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX1NUUkVRKCJh
ZmlsZSIsCi0gICAgICAgICAgICAgICBGaWxlUGF0aCgiYWRpci9hZmlsZSIpLlJlbW92ZURpcmVj
dG9yeU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgiYWRpci9z
dWJkaXIvYWZpbGUiKSAtPiAiYWZpbGUiCi1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBT
aG91bGRBbHNvR2l2ZUZpbGVOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9T
VFJFUSgiYWZpbGUiLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvc3ViZGlyL2FmaWxl
IikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLmNfc3RyKCkpOwotfQotCi0jZW5kaWYKLQotLy8gUmVt
b3ZlRmlsZU5hbWUgIiIgLT4gIi4vIgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEVtcHR5TmFt
ZSkgewotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0gIC8vIE9uIFdpbmRvd3MgQ0UsIHdl
IHVzZSB0aGUgcm9vdCBhcyB0aGUgY3VycmVudCBkaXJlY3RvcnkuCi0gIEVYUEVDVF9TVFJFUShH
VEVTVF9QQVRIX1NFUF8sCi0gICAgICBGaWxlUGF0aCgiIikuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0
cigpKTsKLSNlbHNlCi0gIEVYUEVDVF9TVFJFUSgiLiIgR1RFU1RfUEFUSF9TRVBfLAotICAgICAg
RmlsZVBhdGgoIiIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci0jZW5kaWYKLX0KLQotLy8g
UmVtb3ZlRmlsZU5hbWUgImFkaXIvIiAtPiAiYWRpci8iCi1URVNUKFJlbW92ZUZpbGVOYW1lVGVz
dCwgQnV0Tm9GaWxlKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAot
ICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXykuUmVtb3ZlRmlsZU5hbWUoKS5j
X3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvYWZpbGUiIC0+ICJhZGlyLyIK
LVRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc0Rpck5hbWUpIHsKLSAgRVhQRUNUX1NUUkVR
KCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFU
SF9TRVBfICJhZmlsZSIpCi0gICAgICAuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKLX0KLQot
Ly8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvc3ViZGlyL2FmaWxlIiAtPiAiYWRpci9zdWJkaXIvIgot
VEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzRGlyQW5kU3ViRGlyTmFtZSkgewotICBFWFBF
Q1RfU1RSRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8s
Ci0gICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BB
VEhfU0VQXyAiYWZpbGUiKQotICAgICAgLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci19Ci0K
LS8vIFJlbW92ZUZpbGVOYW1lICIvYWZpbGUiIC0+ICIvIgotVEVTVChSZW1vdmVGaWxlTmFtZVRl
c3QsIEdpdmVzUm9vdERpcikgewotICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLAotICAg
ICAgRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuY19z
dHIoKSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXwotCi0vLyBUZXN0cyB0aGF0
IFJlbW92ZUZpbGVOYW1lKCkgd29ya3Mgd2l0aCB0aGUgYWx0ZXJuYXRlIHNlcGFyYXRvciBvbgot
Ly8gV2luZG93cy4KLQotLy8gUmVtb3ZlRmlsZU5hbWUoImFkaXIvIikgLT4gImFkaXIvIgotVEVT
VChSZW1vdmVGaWxlTmFtZVRlc3QsIEJ1dE5vRmlsZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewot
ICBFWFBFQ1RfU1RSRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZp
bGVQYXRoKCJhZGlyLyIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFJlbW92
ZUZpbGVOYW1lKCJhZGlyL2FmaWxlIikgLT4gImFkaXIvIgotVEVTVChSZW1vdmVGaWxlTmFtZVRl
c3QsIEdpdmVzRGlyTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEo
ImFkaXIiIEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL2Fm
aWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRmlsZU5hbWUo
ImFkaXIvc3ViZGlyL2FmaWxlIikgLT4gImFkaXIvc3ViZGlyLyIKLVRFU1QoUmVtb3ZlRmlsZU5h
bWVUZXN0LCBHaXZlc0RpckFuZFN1YkRpck5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAg
RVhQRUNUX1NUUkVRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9T
RVBfLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIvc3ViZGlyL2FmaWxlIikuUmVtb3Zl
RmlsZU5hbWUoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlRmlsZU5hbWUoIi9hZmlsZSIpIC0+
ICJcIgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzUm9vdERpckZvckFsdGVybmF0ZVNl
cGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLAotICAgICAgICAgICAg
ICAgRmlsZVBhdGgoIi9hZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuY19zdHIoKSk7Ci19Ci0KLSNl
bmRpZgotCi1URVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlV2hlbk51bWJlcklzWmVybykg
ewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCJm
b28iKSwgRmlsZVBhdGgoImJhciIpLAotICAgICAgMCwgInhtbCIpOwotICBFWFBFQ1RfU1RSRVEo
ImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1U
RVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlRmlsZU5hbWVOdW1iZXJHdFplcm8pIHsKLSAg
RmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiks
IEZpbGVQYXRoKCJiYXIiKSwKLSAgICAgIDEyLCAieG1sIik7Ci0gIEVYUEVDVF9TVFJFUSgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8gImJhcl8xMi54bWwiLCBhY3R1YWwuY19zdHIoKSk7Ci19Ci0KLVRF
U1QoTWFrZUZpbGVOYW1lVGVzdCwgR2VuZXJhdGVGaWxlTmFtZVdpdGhTbGFzaE51bWJlcklzWmVy
bykgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRo
KCJmb28iIEdURVNUX1BBVEhfU0VQXyksCi0gICAgICBGaWxlUGF0aCgiYmFyIiksIDAsICJ4bWwi
KTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVh
bC5jX3N0cigpKTsKLX0KLQotVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZUZpbGVOYW1l
V2l0aFNsYXNoTnVtYmVyR3RaZXJvKSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpN
YWtlRmlsZU5hbWUoRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKSwKLSAgICAgIEZpbGVQ
YXRoKCJiYXIiKSwgMTIsICJ4bWwiKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhf
U0VQXyAiYmFyXzEyLnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChNYWtlRmlsZU5h
bWVUZXN0LCBHZW5lcmF0ZVdoZW5OdW1iZXJJc1plcm9BbmREaXJJc0VtcHR5KSB7Ci0gIEZpbGVQ
YXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoIiIpLCBGaWxlUGF0
aCgiYmFyIiksCi0gICAgICAwLCAieG1sIik7Ci0gIEVYUEVDVF9TVFJFUSgiYmFyLnhtbCIsIGFj
dHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZVdoZW5O
dW1iZXJJc05vdFplcm9BbmREaXJJc0VtcHR5KSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQ
YXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoIiIpLCBGaWxlUGF0aCgiYmFyIiksCi0gICAgICAx
NCwgInhtbCIpOwotICBFWFBFQ1RfU1RSRVEoImJhcl8xNC54bWwiLCBhY3R1YWwuY19zdHIoKSk7
Ci19Ci0KLVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBXb3Jrc1doZW5EaXJEb2VzTm90RW5kV2l0aFBh
dGhTZXApIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQ
YXRoKCJmb28iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZp
bGVQYXRoKCJiYXIueG1sIikpOwotICBFWFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBf
ICJiYXIueG1sIiwgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNUKENvbmNhdFBhdGhzVGVzdCwg
V29ya3NXaGVuUGF0aDFFbmRzV2l0aFBhdGhTZXApIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmls
ZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiYmFyLnhtbCIp
KTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsIGFjdHVh
bC5jX3N0cigpKTsKLX0KLQotVEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgxQmVpbmdFbXB0eSkg
ewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoIiIp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJh
ci54bWwiKSk7Ci0gIEVYUEVDVF9TVFJFUSgiYmFyLnhtbCIsIGFjdHVhbC5jX3N0cigpKTsKLX0K
LQotVEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgyQmVpbmdFbXB0eSkgewotICBGaWxlUGF0aCBh
Y3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoIiIpKTsKLSAgRVhQRUNU
X1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXywgYWN0dWFsLmNfc3RyKCkpOwotfQotCi1URVNU
KENvbmNhdFBhdGhzVGVzdCwgQm90aFBhdGhCZWluZ0VtcHR5KSB7Ci0gIEZpbGVQYXRoIGFjdHVh
bCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiIiksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiIikpOwotICBFWFBFQ1RfU1RSRVEo
IiIsIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgxQ29u
dGFpbnNQYXRoU2VwKSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRo
cyhGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvb2Jhci54bWwiKSk7Ci0gIEVY
UEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1RfUEFUSF9TRVBfICJm
b29iYXIueG1sIiwKLSAgICAgICAgICAgICAgIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotVEVTVChD
b25jYXRQYXRoc1Rlc3QsIFBhdGgyQ29udGFpbnNQYXRoU2VwKSB7Ci0gIEZpbGVQYXRoIGFjdHVh
bCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocygKLSAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BB
VEhfU0VQXyksCi0gICAgICBGaWxlUGF0aCgiYmFyIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwi
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIgR1RFU1RfUEFU
SF9TRVBfICJiYXIueG1sIiwKLSAgICAgICAgICAgICAgIGFjdHVhbC5jX3N0cigpKTsKLX0KLQot
VEVTVChDb25jYXRQYXRoc1Rlc3QsIFBhdGgyRW5kc1dpdGhQYXRoU2VwKSB7Ci0gIEZpbGVQYXRo
IGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiYmFyIiBHVEVTVF9Q
QVRIX1NFUF8pKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBH
VEVTVF9QQVRIX1NFUF8sIGFjdHVhbC5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlVHJhaWxpbmdQ
YXRoU2VwYXJhdG9yICIiIC0+ICIiCi1URVNUKFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvclRl
c3QsIEVtcHR5U3RyaW5nKSB7Ci0gIEVYUEVDVF9TVFJFUSgiIiwKLSAgICAgIEZpbGVQYXRoKCIi
KS5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3Zl
VHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28iIC0+ICJmb28iCi1URVNUKFJlbW92ZVRyYWlsaW5n
UGF0aFNlcGFyYXRvclRlc3QsIEZpbGVOb1NsYXNoU3RyaW5nKSB7Ci0gIEVYUEVDVF9TVFJFUSgi
Zm9vIiwKLSAgICAgIEZpbGVQYXRoKCJmb28iKS5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3Io
KS5jX3N0cigpKTsKLX0KLQotLy8gUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28vIiAt
PiAiZm9vIgotVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBTaG91bGRSZW1v
dmVUcmFpbGluZ1NlcGFyYXRvcikgewotICBFWFBFQ1RfU1RSRVEoCi0gICAgICAiZm9vIiwKLSAg
ICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXykuUmVtb3ZlVHJhaWxpbmdQYXRoU2Vw
YXJhdG9yKCkuY19zdHIoKSk7Ci0jaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8KLSAgRVhQRUNU
X1NUUkVRKCJmb28iLAotICAgICAgICAgICAgICAgRmlsZVBhdGgoImZvby8iKS5SZW1vdmVUcmFp
bGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKLSNlbmRpZgotfQotCi0vLyBSZW1vdmVUcmFp
bGluZ1BhdGhTZXBhcmF0b3IgImZvby9iYXIvIiAtPiAiZm9vL2Jhci8iCi1URVNUKFJlbW92ZVRy
YWlsaW5nUGF0aFNlcGFyYXRvclRlc3QsIFNob3VsZFJlbW92ZUxhc3RTZXBhcmF0b3IpIHsKLSAg
RVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICAgICAgICAgICAg
IEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBHVEVTVF9QQVRIX1NFUF8pCi0g
ICAgICAgICAgICAgICAuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7Ci19
Ci0KLS8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiZm9vL2JhciIgLT4gImZvby9iYXIi
Ci1URVNUKFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvclRlc3QsIFNob3VsZFJldHVyblVubW9k
aWZpZWQpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAg
ICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIikKLSAgICAg
ICAgICAgICAgIC5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5jX3N0cigpKTsKLX0KLQot
VEVTVChEaXJlY3RvcnlUZXN0LCBSb290RGlyZWN0b3J5RXhpc3RzKSB7Ci0jaWYgR1RFU1RfT1Nf
V0lORE9XUyAgLy8gV2UgYXJlIG9uIFdpbmRvd3MuCi0gIGNoYXIgY3VycmVudF9kcml2ZVtfTUFY
X1BBVEhdOyAgLy8gTk9MSU5UCi0gIGN1cnJlbnRfZHJpdmVbMF0gPSBzdGF0aWNfY2FzdDxjaGFy
PihfZ2V0ZHJpdmUoKSArICdBJyAtIDEpOwotICBjdXJyZW50X2RyaXZlWzFdID0gJzonOwotICBj
dXJyZW50X2RyaXZlWzJdID0gJ1xcJzsKLSAgY3VycmVudF9kcml2ZVszXSA9ICdcMCc7Ci0gIEVY
UEVDVF9UUlVFKEZpbGVQYXRoKGN1cnJlbnRfZHJpdmUpLkRpcmVjdG9yeUV4aXN0cygpKTsKLSNl
bHNlCi0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIvIikuRGlyZWN0b3J5RXhpc3RzKCkpOwotI2Vu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi19Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi1URVNU
KERpcmVjdG9yeVRlc3QsIFJvb3RPZldyb25nRHJpdmVEb2VzTm90RXhpc3RzKSB7Ci0gIGNvbnN0
IGludCBzYXZlZF9kcml2ZV8gPSBfZ2V0ZHJpdmUoKTsKLSAgLy8gRmluZCBhIGRyaXZlIHRoYXQg
ZG9lc24ndCBleGlzdC4gU3RhcnQgd2l0aCAnWicgdG8gYXZvaWQgY29tbW9uIG9uZXMuCi0gIGZv
ciAoY2hhciBkcml2ZSA9ICdaJzsgZHJpdmUgPj0gJ0EnOyBkcml2ZS0tKQotICAgIGlmIChfY2hk
cml2ZShkcml2ZSAtICdBJyArIDEpID09IC0xKSB7Ci0gICAgICBjaGFyIG5vbl9kcml2ZVtfTUFY
X1BBVEhdOyAgLy8gTk9MSU5UCi0gICAgICBub25fZHJpdmVbMF0gPSBkcml2ZTsKLSAgICAgIG5v
bl9kcml2ZVsxXSA9ICc6JzsKLSAgICAgIG5vbl9kcml2ZVsyXSA9ICdcXCc7Ci0gICAgICBub25f
ZHJpdmVbM10gPSAnXDAnOwotICAgICAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKG5vbl9kcml2ZSku
RGlyZWN0b3J5RXhpc3RzKCkpOwotICAgICAgYnJlYWs7Ci0gICAgfQotICBfY2hkcml2ZShzYXZl
ZF9kcml2ZV8pOwotfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSNpZiAhR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKLS8vIFdpbmRvd3MgQ0UgX2RvZXNfIGNvbnNpZGVyIGFuIGVtcHR5
IGRpcmVjdG9yeSB0byBleGlzdC4KLVRFU1QoRGlyZWN0b3J5VGVzdCwgRW1wdHlQYXRoRGlyZWN0
b3J5RG9lc05vdEV4aXN0KSB7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiIikuRGlyZWN0b3J5
RXhpc3RzKCkpOwotfQotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLQotVEVT
VChEaXJlY3RvcnlUZXN0LCBDdXJyZW50RGlyZWN0b3J5RXhpc3RzKSB7Ci0jaWYgR1RFU1RfT1Nf
V0lORE9XUyAgLy8gV2UgYXJlIG9uIFdpbmRvd3MuCi0jaWZuZGVmIF9XSU4zMl9DRSAgLy8gV2lu
ZG93cyBDRSBkb2Vzbid0IGhhdmUgYSBjdXJyZW50IGRpcmVjdG9yeS4KLSAgRVhQRUNUX1RSVUUo
RmlsZVBhdGgoIi4iKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRo
KCIuXFwiKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0jZW5kaWYgIC8vIF9XSU4zMl9DRQotI2Vsc2UK
LSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi4iKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0gIEVYUEVD
VF9UUlVFKEZpbGVQYXRoKCIuLyIpLkRpcmVjdG9yeUV4aXN0cygpKTsKLSNlbmRpZiAgLy8gR1RF
U1RfT1NfV0lORE9XUwotfQotCi1URVNUKE5vcm1hbGl6ZVRlc3QsIE51bGxTdHJpbmdzRXF1YWxF
bXB0eURpcmVjdG9yeSkgewotICBFWFBFQ1RfU1RSRVEoIiIsIEZpbGVQYXRoKE5VTEwpLmNfc3Ry
KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIEZpbGVQYXRoKFN0cmluZyhOVUxMKSkuY19zdHIoKSk7
Ci19Ci0KLS8vICJmb28vYmFyIiA9PSBmb28vL2JhciIgPT0gImZvby8vL2JhciIKLVRFU1QoTm9y
bWFsaXplVGVzdCwgTXVsdGlwbGVDb25zZWN1dGl2ZVNlcGFwYXJhdG9yc0luTWlkc3RyaW5nKSB7
Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAgICAgICAg
ICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIpLmNfc3RyKCkpOwotICBF
WFBFQ1RfU1RSRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgICAgICAgICAgICAg
RmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuY19z
dHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAg
ICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBf
Ci0gICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8gImJhciIpLmNfc3RyKCkp
OwotfQotCi0vLyAiL2JhciIgPT0gLy9iYXIiID09ICIvLy9iYXIiCi1URVNUKE5vcm1hbGl6ZVRl
c3QsIE11bHRpcGxlQ29uc2VjdXRpdmVTZXBhcGFyYXRvcnNBdFN0cmluZ1N0YXJ0KSB7Ci0gIEVY
UEVDVF9TVFJFUShHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAgRmlsZVBhdGgoR1RFU1RfUEFU
SF9TRVBfICJiYXIiKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKEdURVNUX1BBVEhfU0VQXyAi
YmFyIiwKLSAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfICJiYXIi
KS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICBG
aWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAi
YmFyIikuY19zdHIoKSk7Ci19Ci0KLS8vICJmb28vIiA9PSBmb28vLyIgPT0gImZvby8vLyIKLVRF
U1QoTm9ybWFsaXplVGVzdCwgTXVsdGlwbGVDb25zZWN1dGl2ZVNlcGFwYXJhdG9yc0F0U3RyaW5n
RW5kKSB7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgRmlsZVBh
dGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28i
IEdURVNUX1BBVEhfU0VQXywKLSAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RF
U1RfUEFUSF9TRVBfKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iIEdURVNUX1BBVEhf
U0VQXywKLSAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBf
IEdURVNUX1BBVEhfU0VQXykuY19zdHIoKSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfQUxUX1BBVEhf
U0VQXwotCi0vLyBUZXN0cyB0aGF0IHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5n
IGFyZSBub3JtYWxpemVkCi0vLyByZWdhcmRsZXNzIG9mIHRoZWlyIGNvbWJpbmF0aW9uIChlLmcu
ICJmb29cIiA9PSJmb28vXCIgPT0KLS8vICJmb29cXC8iKS4KLVRFU1QoTm9ybWFsaXplVGVzdCwg
TWl4QWx0ZXJuYXRlU2VwYXJhdG9yQXRTdHJpbmdFbmQpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28i
IEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb28vIikuY19zdHIo
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICAgICAgICAg
ICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gIi8iKS5jX3N0cigpKTsKLSAgRVhQRUNU
X1NUUkVRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgICAgIEZpbGVQYXRoKCJm
b28vLyIgR1RFU1RfUEFUSF9TRVBfKS5jX3N0cigpKTsKLX0KLQotI2VuZGlmCi0KLVRFU1QoQXNz
aWdubWVudE9wZXJhdG9yVGVzdCwgRGVmYXVsdEFzc2lnbmVkVG9Ob25EZWZhdWx0KSB7Ci0gIEZp
bGVQYXRoIGRlZmF1bHRfcGF0aDsKLSAgRmlsZVBhdGggbm9uX2RlZmF1bHRfcGF0aCgicGF0aCIp
OwotICBub25fZGVmYXVsdF9wYXRoID0gZGVmYXVsdF9wYXRoOwotICBFWFBFQ1RfU1RSRVEoIiIs
IG5vbl9kZWZhdWx0X3BhdGguY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgZGVmYXVsdF9w
YXRoLmNfc3RyKCkpOyAgLy8gUkhTIHZhciBpcyB1bmNoYW5nZWQuCi19Ci0KLVRFU1QoQXNzaWdu
bWVudE9wZXJhdG9yVGVzdCwgTm9uRGVmYXVsdEFzc2lnbmVkVG9EZWZhdWx0KSB7Ci0gIEZpbGVQ
YXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgiKTsKLSAgRmlsZVBhdGggZGVmYXVsdF9wYXRoOwot
ICBkZWZhdWx0X3BhdGggPSBub25fZGVmYXVsdF9wYXRoOwotICBFWFBFQ1RfU1RSRVEoInBhdGgi
LCBkZWZhdWx0X3BhdGguY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgicGF0aCIsIG5vbl9kZWZh
dWx0X3BhdGguY19zdHIoKSk7ICAvLyBSSFMgdmFyIGlzIHVuY2hhbmdlZC4KLX0KLQotVEVTVChB
c3NpZ25tZW50T3BlcmF0b3JUZXN0LCBDb25zdEFzc2lnbmVkVG9Ob25Db25zdCkgewotICBjb25z
dCBGaWxlUGF0aCBjb25zdF9kZWZhdWx0X3BhdGgoImNvbnN0X3BhdGgiKTsKLSAgRmlsZVBhdGgg
bm9uX2RlZmF1bHRfcGF0aCgicGF0aCIpOwotICBub25fZGVmYXVsdF9wYXRoID0gY29uc3RfZGVm
YXVsdF9wYXRoOwotICBFWFBFQ1RfU1RSRVEoImNvbnN0X3BhdGgiLCBub25fZGVmYXVsdF9wYXRo
LmNfc3RyKCkpOwotfQotCi1jbGFzcyBEaXJlY3RvcnlDcmVhdGlvblRlc3QgOiBwdWJsaWMgVGVz
dCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgdGVzdGRhdGFf
cGF0aF8uU2V0KEZpbGVQYXRoKFN0cmluZzo6Rm9ybWF0KCIlcyVzJXMiLAotICAgICAgICBUZW1w
RGlyKCkuY19zdHIoKSwgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuY19zdHIoKSwKLSAgICAg
ICAgIl9kaXJlY3RvcnlfY3JlYXRpb24iIEdURVNUX1BBVEhfU0VQXyAidGVzdCIgR1RFU1RfUEFU
SF9TRVBfKSkpOwotICAgIHRlc3RkYXRhX2ZpbGVfLlNldCh0ZXN0ZGF0YV9wYXRoXy5SZW1vdmVU
cmFpbGluZ1BhdGhTZXBhcmF0b3IoKSk7Ci0KLSAgICB1bmlxdWVfZmlsZTBfLlNldChGaWxlUGF0
aDo6TWFrZUZpbGVOYW1lKHRlc3RkYXRhX3BhdGhfLCBGaWxlUGF0aCgidW5pcXVlIiksCi0gICAg
ICAgIDAsICJ0eHQiKSk7Ci0gICAgdW5pcXVlX2ZpbGUxXy5TZXQoRmlsZVBhdGg6Ok1ha2VGaWxl
TmFtZSh0ZXN0ZGF0YV9wYXRoXywgRmlsZVBhdGgoInVuaXF1ZSIpLAotICAgICAgICAxLCAidHh0
IikpOwotCi0gICAgcmVtb3ZlKHRlc3RkYXRhX2ZpbGVfLmNfc3RyKCkpOwotICAgIHJlbW92ZSh1
bmlxdWVfZmlsZTBfLmNfc3RyKCkpOwotICAgIHJlbW92ZSh1bmlxdWVfZmlsZTFfLmNfc3RyKCkp
OwotICAgIHBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKLSAgfQotCi0gIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICByZW1vdmUodGVzdGRhdGFfZmlsZV8uY19zdHIo
KSk7Ci0gICAgcmVtb3ZlKHVuaXF1ZV9maWxlMF8uY19zdHIoKSk7Ci0gICAgcmVtb3ZlKHVuaXF1
ZV9maWxlMV8uY19zdHIoKSk7Ci0gICAgcG9zaXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhfLmNfc3Ry
KCkpOwotICB9Ci0KLSAgU3RyaW5nIFRlbXBEaXIoKSBjb25zdCB7Ci0jaWYgR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUKLSAgICByZXR1cm4gU3RyaW5nKCJcXHRlbXBcXCIpOwotI2VsaWYgR1RFU1Rf
T1NfV0lORE9XUwotICAgIGNvbnN0IGNoYXIqIHRlbXBfZGlyID0gcG9zaXg6OkdldEVudigiVEVN
UCIpOwotICAgIGlmICh0ZW1wX2RpciA9PSBOVUxMIHx8IHRlbXBfZGlyWzBdID09ICdcMCcpCi0g
ICAgICByZXR1cm4gU3RyaW5nKCJcXHRlbXBcXCIpOwotICAgIGVsc2UgaWYgKFN0cmluZyh0ZW1w
X2RpcikuRW5kc1dpdGgoIlxcIikpCi0gICAgICByZXR1cm4gU3RyaW5nKHRlbXBfZGlyKTsKLSAg
ICBlbHNlCi0gICAgICByZXR1cm4gU3RyaW5nOjpGb3JtYXQoIiVzXFwiLCB0ZW1wX2Rpcik7Ci0j
ZWxzZQotICAgIHJldHVybiBTdHJpbmcoIi90bXAvIik7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCi0gIH0KLQotICB2b2lkIENyZWF0ZVRleHRGaWxlKGNvbnN0IGNoYXIqIGZp
bGVuYW1lKSB7Ci0gICAgRklMRSogZiA9IHBvc2l4OjpGT3BlbihmaWxlbmFtZSwgInciKTsKLSAg
ICBmcHJpbnRmKGYsICJ0ZXh0XG4iKTsKLSAgICBmY2xvc2UoZik7Ci0gIH0KLQotICAvLyBTdHJp
bmdzIHJlcHJlc2VudGluZyBhIGRpcmVjdG9yeSBhbmQgYSBmaWxlLCB3aXRoIGlkZW50aWNhbCBw
YXRocwotICAvLyBleGNlcHQgZm9yIHRoZSB0cmFpbGluZyBzZXBhcmF0b3IgY2hhcmFjdGVyIHRo
YXQgZGlzdGlucXVpc2hlcwotICAvLyBhIGRpcmVjdG9yeSBuYW1lZCAndGVzdCcgZnJvbSBhIGZp
bGUgbmFtZWQgJ3Rlc3QnLiBFeGFtcGxlIG5hbWVzOgotICBGaWxlUGF0aCB0ZXN0ZGF0YV9wYXRo
XzsgIC8vICIvdG1wL2RpcmVjdG9yeV9jcmVhdGlvbi90ZXN0LyIKLSAgRmlsZVBhdGggdGVzdGRh
dGFfZmlsZV87ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRpb24vdGVzdCIKLSAgRmlsZVBhdGgg
dW5pcXVlX2ZpbGUwXzsgIC8vICIvdG1wL2RpcmVjdG9yeV9jcmVhdGlvbi90ZXN0L3VuaXF1ZS50
eHQiCi0gIEZpbGVQYXRoIHVuaXF1ZV9maWxlMV87ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRp
b24vdGVzdC91bmlxdWVfMS50eHQiCi19OwotCi1URVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25UZXN0
LCBDcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KSB7Ci0gIEVYUEVDVF9GQUxTRSh0ZXN0ZGF0
YV9wYXRoXy5EaXJlY3RvcnlFeGlzdHMoKSkgPDwgdGVzdGRhdGFfcGF0aF8uY19zdHIoKTsKLSAg
RVhQRUNUX1RSVUUodGVzdGRhdGFfcGF0aF8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgp
KTsKLSAgRVhQRUNUX1RSVUUodGVzdGRhdGFfcGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkpOwotfQot
Ci1URVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0ZvckFscmVh
ZHlFeGlzdGluZ1BhdGgpIHsKLSAgRVhQRUNUX0ZBTFNFKHRlc3RkYXRhX3BhdGhfLkRpcmVjdG9y
eUV4aXN0cygpKSA8PCB0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpOwotICBFWFBFQ1RfVFJVRSh0ZXN0
ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOwotICAvLyBDYWxsICdj
cmVhdGUnIGFnYWluLi4uIHNob3VsZCBzdGlsbCBzdWNjZWVkLgotICBFWFBFQ1RfVFJVRSh0ZXN0
ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOwotfQotCi1URVNUX0Yo
RGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0FuZFVuaXF1ZUZpbGVuYW1l
KSB7Ci0gIEZpbGVQYXRoIGZpbGVfcGF0aChGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFt
ZSh0ZXN0ZGF0YV9wYXRoXywKLSAgICAgIEZpbGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIpKTsKLSAg
RVhQRUNUX1NUUkVRKHVuaXF1ZV9maWxlMF8uY19zdHIoKSwgZmlsZV9wYXRoLmNfc3RyKCkpOwot
ICBFWFBFQ1RfRkFMU0UoZmlsZV9wYXRoLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsgIC8vIGZp
bGUgbm90IHRoZXJlCi0KLSAgdGVzdGRhdGFfcGF0aF8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNp
dmVseSgpOwotICBFWFBFQ1RfRkFMU0UoZmlsZV9wYXRoLkZpbGVPckRpcmVjdG9yeUV4aXN0cygp
KTsgIC8vIGZpbGUgc3RpbGwgbm90IHRoZXJlCi0gIENyZWF0ZVRleHRGaWxlKGZpbGVfcGF0aC5j
X3N0cigpKTsKLSAgRVhQRUNUX1RSVUUoZmlsZV9wYXRoLkZpbGVPckRpcmVjdG9yeUV4aXN0cygp
KTsKLQotICBGaWxlUGF0aCBmaWxlX3BhdGgyKEZpbGVQYXRoOjpHZW5lcmF0ZVVuaXF1ZUZpbGVO
YW1lKHRlc3RkYXRhX3BhdGhfLAotICAgICAgRmlsZVBhdGgoInVuaXF1ZSIpLCAidHh0IikpOwot
ICBFWFBFQ1RfU1RSRVEodW5pcXVlX2ZpbGUxXy5jX3N0cigpLCBmaWxlX3BhdGgyLmNfc3RyKCkp
OwotICBFWFBFQ1RfRkFMU0UoZmlsZV9wYXRoMi5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7ICAv
LyBmaWxlIG5vdCB0aGVyZQotICBDcmVhdGVUZXh0RmlsZShmaWxlX3BhdGgyLmNfc3RyKCkpOwot
ICBFWFBFQ1RfVFJVRShmaWxlX3BhdGgyLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsKLX0KLQot
VEVTVF9GKERpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlRGlyZWN0b3JpZXNGYWlsKSB7Ci0g
IC8vIGZvcmNlIGEgZmFpbHVyZSBieSBwdXR0aW5nIGEgZmlsZSB3aGVyZSB3ZSB3aWxsIHRyeSB0
byBjcmVhdGUgYSBkaXJlY3RvcnkuCi0gIENyZWF0ZVRleHRGaWxlKHRlc3RkYXRhX2ZpbGVfLmNf
c3RyKCkpOwotICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9maWxlXy5GaWxlT3JEaXJlY3RvcnlFeGlz
dHMoKSk7Ci0gIEVYUEVDVF9GQUxTRSh0ZXN0ZGF0YV9maWxlXy5EaXJlY3RvcnlFeGlzdHMoKSk7
Ci0gIEVYUEVDVF9GQUxTRSh0ZXN0ZGF0YV9maWxlXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2
ZWx5KCkpOwotfQotCi1URVNUKE5vRGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVOb0RpcmVj
dG9yaWVzRm9yRGVmYXVsdFhtbEZpbGUpIHsKLSAgY29uc3QgRmlsZVBhdGggdGVzdF9kZXRhaWxf
eG1sKCJ0ZXN0X2RldGFpbC54bWwiKTsKLSAgRVhQRUNUX0ZBTFNFKHRlc3RfZGV0YWlsX3htbC5D
cmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwg
RGVmYXVsdENvbnN0cnVjdG9yKSB7Ci0gIEZpbGVQYXRoIGZwOwotICBFWFBFQ1RfU1RSRVEoIiIs
IGZwLmNfc3RyKCkpOwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgQ2hhckFuZENvcHlDb25zdHJ1
Y3RvcnMpIHsKLSAgY29uc3QgRmlsZVBhdGggZnAoInNwaWN5Iik7Ci0gIEVYUEVDVF9TVFJFUSgi
c3BpY3kiLCBmcC5jX3N0cigpKTsKLQotICBjb25zdCBGaWxlUGF0aCBmcF9jb3B5KGZwKTsKLSAg
RVhQRUNUX1NUUkVRKCJzcGljeSIsIGZwX2NvcHkuY19zdHIoKSk7Ci19Ci0KLVRFU1QoRmlsZVBh
dGhUZXN0LCBTdHJpbmdDb25zdHJ1Y3RvcikgewotICBjb25zdCBGaWxlUGF0aCBmcChTdHJpbmco
ImNpZGVyIikpOwotICBFWFBFQ1RfU1RSRVEoImNpZGVyIiwgZnAuY19zdHIoKSk7Ci19Ci0KLVRF
U1QoRmlsZVBhdGhUZXN0LCBTZXQpIHsKLSAgY29uc3QgRmlsZVBhdGggYXBwbGUoImFwcGxlIik7
Ci0gIEZpbGVQYXRoIG1hYygibWFjIik7Ci0gIG1hYy5TZXQoYXBwbGUpOyAgLy8gSW1wbGVtZW50
IFNldCgpIHNpbmNlIG92ZXJsb2FkaW5nIG9wZXJhdG9yPSBpcyBmb3JiaWRkZW4uCi0gIEVYUEVD
VF9TVFJFUSgiYXBwbGUiLCBtYWMuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiYXBwbGUiLCBh
cHBsZS5jX3N0cigpKTsKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIFRvU3RyaW5nKSB7Ci0gIGNv
bnN0IEZpbGVQYXRoIGZpbGUoImRyaW5rIik7Ci0gIFN0cmluZyBzdHIoZmlsZS5Ub1N0cmluZygp
KTsKLSAgRVhQRUNUX1NUUkVRKCJkcmluayIsIHN0ci5jX3N0cigpKTsKLX0KLQotVEVTVChGaWxl
UGF0aFRlc3QsIFJlbW92ZUV4dGVuc2lvbikgewotICBFWFBFQ1RfU1RSRVEoImFwcCIsIEZpbGVQ
YXRoKCJhcHAuZXhlIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5jX3N0cigpKTsKLSAgRVhQRUNU
X1NUUkVRKCJBUFAiLCBGaWxlUGF0aCgiQVBQLkVYRSIpLlJlbW92ZUV4dGVuc2lvbigiZXhlIiku
Y19zdHIoKSk7Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0LCBSZW1vdmVFeHRlbnNpb25XaGVuVGhl
cmVJc05vRXh0ZW5zaW9uKSB7Ci0gIEVYUEVDVF9TVFJFUSgiYXBwIiwgRmlsZVBhdGgoImFwcCIp
LlJlbW92ZUV4dGVuc2lvbigiZXhlIikuY19zdHIoKSk7Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0
LCBJc0RpcmVjdG9yeSkgewotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImNvbGEiKS5Jc0RpcmVj
dG9yeSgpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImtvYWxhIiBHVEVTVF9QQVRIX1NFUF8p
LklzRGlyZWN0b3J5KCkpOwotI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCi0gIEVYUEVDVF9U
UlVFKEZpbGVQYXRoKCJrb2FsYS8iKS5Jc0RpcmVjdG9yeSgpKTsKLSNlbmRpZgotfQotCi1URVNU
KEZpbGVQYXRoVGVzdCwgSXNBYnNvbHV0ZVBhdGgpIHsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRo
KCJpcyIgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIpLklzQWJzb2x1dGVQYXRoKCkpOwotICBF
WFBFQ1RfRkFMU0UoRmlsZVBhdGgoIiIpLklzQWJzb2x1dGVQYXRoKCkpOwotI2lmIEdURVNUX09T
X1dJTkRPV1MKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImM6XFwiIEdURVNUX1BBVEhfU0VQXyAi
aXNfbm90IgotICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8gInJlbGF0aXZl
IikuSXNBYnNvbHV0ZVBhdGgoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiYzpmb28iIEdU
RVNUX1BBVEhfU0VQXyAiYmFyIikuSXNBYnNvbHV0ZVBhdGgoKSk7Ci0gIEVYUEVDVF9UUlVFKEZp
bGVQYXRoKCJjOi8iIEdURVNUX1BBVEhfU0VQXyAiaXNfbm90IgotICAgICAgICAgICAgICAgICAg
ICAgICBHVEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIikuSXNBYnNvbHV0ZVBhdGgoKSk7Ci0jZWxz
ZQotICBFWFBFQ1RfVFJVRShGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gImlzX25vdCIgR1RFU1Rf
UEFUSF9TRVBfICJyZWxhdGl2ZSIpCi0gICAgICAgICAgICAgIC5Jc0Fic29sdXRlUGF0aCgpKTsK
LSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgSXNS
b290RGlyZWN0b3J5KSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICBFWFBFQ1RfVFJVRShGaWxl
UGF0aCgiYTpcXCIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgo
Ilo6LyIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoImU6Ly8i
KS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiIikuSXNSb290
RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImI6IikuSXNSb290RGlyZWN0
b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImI6YSIpLklzUm9vdERpcmVjdG9yeSgp
KTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCI4Oi8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0g
IEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiY3wvIikuSXNSb290RGlyZWN0b3J5KCkpOwotI2Vsc2UK
LSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVD
VF9UUlVFKEZpbGVQYXRoKCIvLyIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX0ZBTFNF
KEZpbGVQYXRoKCIiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0
aCgiXFwiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiL3gi
KS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0jZW5kaWYKLX0KLQotfSAgLy8gbmFtZXNwYWNlCi19ICAv
LyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNjCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWU4MjI5NmM5MjFmMGFmZTQyZmMyMzM1NzQ5
NzBlZTc3MDllNWJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNj
CisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDAzLCBHb29n
bGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3JzOiBEYW4gRWdub3IgKGVnbm9yQGdv
b2dsZS5jb20pCi0vLyBQb3J0ZWQgdG8gV2luZG93czogVmFkaW0gQmVybWFuICh2YWRpbWJAZ29v
Z2xlLmNvbSkKLQotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaD4K
LQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLW5hbWVz
cGFjZSB7Ci0KLXVzaW5nIHRlc3Rpbmc6Ok1lc3NhZ2U7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6bGlua2VkX3B0cjsKLQotaW50IG51bTsKLU1lc3NhZ2UqIGhpc3RvcnkgPSBOVUxMOwotCi0v
LyBDbGFzcyB3aGljaCB0cmFja3MgYWxsb2NhdGlvbi9kZWFsbG9jYXRpb24KLWNsYXNzIEEgewot
IHB1YmxpYzoKLSAgQSgpOiBteW51bShudW0rKykgeyAqaGlzdG9yeSA8PCAiQSIgPDwgbXludW0g
PDwgIiBjdG9yXG4iOyB9Ci0gIHZpcnR1YWwgfkEoKSB7ICpoaXN0b3J5IDw8ICJBIiA8PCBteW51
bSA8PCAiIGR0b3JcbiI7IH0KLSAgdmlydHVhbCB2b2lkIFVzZSgpIHsgKmhpc3RvcnkgPDwgIkEi
IDw8IG15bnVtIDw8ICIgdXNlXG4iOyB9Ci0gcHJvdGVjdGVkOgotICBpbnQgbXludW07Ci19Owot
Ci0vLyBTdWJjbGFzcwotY2xhc3MgQiA6IHB1YmxpYyBBIHsKLSBwdWJsaWM6Ci0gIEIoKSB7ICpo
aXN0b3J5IDw8ICJCIiA8PCBteW51bSA8PCAiIGN0b3JcbiI7IH0KLSAgfkIoKSB7ICpoaXN0b3J5
IDw8ICJCIiA8PCBteW51bSA8PCAiIGR0b3JcbiI7IH0KLSAgdmlydHVhbCB2b2lkIFVzZSgpIHsg
Kmhpc3RvcnkgPDwgIkIiIDw8IG15bnVtIDw8ICIgdXNlXG4iOyB9Ci19OwotCi1jbGFzcyBMaW5r
ZWRQdHJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHB1YmxpYzoKLSAgTGlua2VkUHRy
VGVzdCgpIHsKLSAgICBudW0gPSAwOwotICAgIGhpc3RvcnkgPSBuZXcgTWVzc2FnZTsKLSAgfQot
Ci0gIHZpcnR1YWwgfkxpbmtlZFB0clRlc3QoKSB7Ci0gICAgZGVsZXRlIGhpc3Rvcnk7Ci0gICAg
aGlzdG9yeSA9IE5VTEw7Ci0gIH0KLX07Ci0KLVRFU1RfRihMaW5rZWRQdHJUZXN0LCBHZW5lcmFs
VGVzdCkgewotICB7Ci0gICAgbGlua2VkX3B0cjxBPiBhMCwgYTEsIGEyOwotICAgIGEwID0gYTA7
Ci0gICAgYTEgPSBhMjsKLSAgICBBU1NFUlRfRVEoYTAuZ2V0KCksIHN0YXRpY19jYXN0PEEqPihO
VUxMKSk7Ci0gICAgQVNTRVJUX0VRKGExLmdldCgpLCBzdGF0aWNfY2FzdDxBKj4oTlVMTCkpOwot
ICAgIEFTU0VSVF9FUShhMi5nZXQoKSwgc3RhdGljX2Nhc3Q8QSo+KE5VTEwpKTsKLSAgICBBU1NF
UlRfVFJVRShhMCA9PSBOVUxMKTsKLSAgICBBU1NFUlRfVFJVRShhMSA9PSBOVUxMKTsKLSAgICBB
U1NFUlRfVFJVRShhMiA9PSBOVUxMKTsKLQotICAgIHsKLSAgICAgIGxpbmtlZF9wdHI8QT4gYTMo
bmV3IEEpOwotICAgICAgYTAgPSBhMzsKLSAgICAgIEFTU0VSVF9UUlVFKGEwID09IGEzKTsKLSAg
ICAgIEFTU0VSVF9UUlVFKGEwICE9IE5VTEwpOwotICAgICAgQVNTRVJUX1RSVUUoYTAuZ2V0KCkg
PT0gYTMpOwotICAgICAgQVNTRVJUX1RSVUUoYTAgPT0gYTMuZ2V0KCkpOwotICAgICAgbGlua2Vk
X3B0cjxBPiBhNChhMCk7Ci0gICAgICBhMSA9IGE0OwotICAgICAgbGlua2VkX3B0cjxBPiBhNShu
ZXcgQSk7Ci0gICAgICBBU1NFUlRfVFJVRShhNS5nZXQoKSAhPSBhMyk7Ci0gICAgICBBU1NFUlRf
VFJVRShhNSAhPSBhMy5nZXQoKSk7Ci0gICAgICBhMiA9IGE1OwotICAgICAgbGlua2VkX3B0cjxC
PiBiMChuZXcgQik7Ci0gICAgICBsaW5rZWRfcHRyPEE+IGE2KGIwKTsKLSAgICAgIEFTU0VSVF9U
UlVFKGIwID09IGE2KTsKLSAgICAgIEFTU0VSVF9UUlVFKGE2ID09IGIwKTsKLSAgICAgIEFTU0VS
VF9UUlVFKGIwICE9IE5VTEwpOwotICAgICAgYTUgPSBiMDsKLSAgICAgIGE1ID0gYjA7Ci0gICAg
ICBhMy0+VXNlKCk7Ci0gICAgICBhNC0+VXNlKCk7Ci0gICAgICBhNS0+VXNlKCk7Ci0gICAgICBh
Ni0+VXNlKCk7Ci0gICAgICBiMC0+VXNlKCk7Ci0gICAgICAoKmIwKS5Vc2UoKTsKLSAgICAgIGIw
LmdldCgpLT5Vc2UoKTsKLSAgICB9Ci0KLSAgICBhMC0+VXNlKCk7Ci0gICAgYTEtPlVzZSgpOwot
ICAgIGEyLT5Vc2UoKTsKLQotICAgIGExID0gYTI7Ci0gICAgYTIucmVzZXQobmV3IEEpOwotICAg
IGEwLnJlc2V0KCk7Ci0KLSAgICBsaW5rZWRfcHRyPEE+IGE3OwotICB9Ci0KLSAgQVNTRVJUX1NU
UkVRKAotICAgICJBMCBjdG9yXG4iCi0gICAgIkExIGN0b3JcbiIKLSAgICAiQTIgY3RvclxuIgot
ICAgICJCMiBjdG9yXG4iCi0gICAgIkEwIHVzZVxuIgotICAgICJBMCB1c2VcbiIKLSAgICAiQjIg
dXNlXG4iCi0gICAgIkIyIHVzZVxuIgotICAgICJCMiB1c2VcbiIKLSAgICAiQjIgdXNlXG4iCi0g
ICAgIkIyIHVzZVxuIgotICAgICJCMiBkdG9yXG4iCi0gICAgIkEyIGR0b3JcbiIKLSAgICAiQTAg
dXNlXG4iCi0gICAgIkEwIHVzZVxuIgotICAgICJBMSB1c2VcbiIKLSAgICAiQTMgY3RvclxuIgot
ICAgICJBMCBkdG9yXG4iCi0gICAgIkEzIGR0b3JcbiIKLSAgICAiQTEgZHRvclxuIiwKLSAgICBo
aXN0b3J5LT5HZXRTdHJpbmcoKS5jX3N0cigpCi0gICk7Ci19Ci0KLX0gIC8vIFVubmFtZWQgbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWxp
c3RlbmVyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LWxpc3Rl
bmVyX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YmUzOWE4N2U4OGQ4
OTYwMWI5YmM5MzcyYTE0ZWRhYWY2MTI5NDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1saXN0
ZW5lcl90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMzEzICswLDAgQEAKLS8vIENvcHlyaWdo
dCAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUu
Y29tIChWbGFkIExvc2V2KQotLy8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3Jr
IChHb29nbGUgVGVzdCkKLS8vCi0vLyBUaGlzIGZpbGUgdmVyaWZpZXMgR29vZ2xlIFRlc3QgZXZl
bnQgbGlzdGVuZXJzIHJlY2VpdmUgZXZlbnRzIGF0IHRoZQotLy8gcmlnaHQgdGltZXMuCi0KLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotdXNpbmcgOjp0ZXN0
aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQ7Ci11c2luZyA6OnRlc3Rpbmc6OkVudmlyb25t
ZW50OwotdXNpbmcgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6
VGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdENhc2U7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RF
dmVudExpc3RlbmVyOwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0SW5mbzsKLXVzaW5nIDo6dGVzdGlu
Zzo6VGVzdFBhcnRSZXN1bHQ7Ci11c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OwotdXNpbmcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOwotCi0vLyBVc2VkIGJ5IHRlc3RzIHRvIHJlZ2lzdGVy
IHRoZWlyIGV2ZW50cy4KLXN0ZDo6dmVjdG9yPFN0cmluZz4qIGdfZXZlbnRzID0gTlVMTDsKLQot
bmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVybmFsIHsKLQotY2xhc3MgRXZlbnRS
ZWNvcmRpbmdMaXN0ZW5lciA6IHB1YmxpYyBUZXN0RXZlbnRMaXN0ZW5lciB7Ci0gcHVibGljOgot
ICBFdmVudFJlY29yZGluZ0xpc3RlbmVyKGNvbnN0IGNoYXIqIG5hbWUpIDogbmFtZV8obmFtZSkg
e30KLQotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIE9uVGVzdFByb2dyYW1TdGFydChjb25z
dCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0
RnVsbE1ldGhvZE5hbWUoIk9uVGVzdFByb2dyYW1TdGFydCIpKTsKLSAgfQotCi0gIHZpcnR1YWwg
dm9pZCBPblRlc3RJdGVyYXRpb25TdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpdGVyYXRpb24pIHsKLSAg
ICBNZXNzYWdlIG1lc3NhZ2U7Ci0gICAgbWVzc2FnZSA8PCBHZXRGdWxsTWV0aG9kTmFtZSgiT25U
ZXN0SXRlcmF0aW9uU3RhcnQiKQotICAgICAgICAgICAgPDwgIigiIDw8IGl0ZXJhdGlvbiA8PCAi
KSI7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhtZXNzYWdlLkdldFN0cmluZygpKTsKLSAgfQot
Ci0gIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1NldFVwU3RhcnQoY29uc3QgVW5pdFRlc3Qm
IC8qdW5pdF90ZXN0Ki8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2RO
YW1lKCJPbkVudmlyb25tZW50c1NldFVwU3RhcnQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQg
T25FbnZpcm9ubWVudHNTZXRVcEVuZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewot
ICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRz
U2V0VXBFbmQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0Q2FzZVN0YXJ0KGNvbnN0
IFRlc3RDYXNlJiAvKnRlc3RfY2FzZSovKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRG
dWxsTWV0aG9kTmFtZSgiT25UZXN0Q2FzZVN0YXJ0IikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lk
IE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZvJiAvKnRlc3RfaW5mbyovKSB7Ci0gICAgZ19ldmVu
dHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0U3RhcnQiKSk7Ci0gIH0KLQot
ICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgLyp0
ZXN0X3BhcnRfcmVzdWx0Ki8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRo
b2ROYW1lKCJPblRlc3RQYXJ0UmVzdWx0IikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVz
dEVuZChjb25zdCBUZXN0SW5mbyYgLyp0ZXN0X2luZm8qLykgewotICAgIGdfZXZlbnRzLT5wdXNo
X2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdEVuZCIpKTsKLSAgfQotCi0gIHZpcnR1YWwg
dm9pZCBPblRlc3RDYXNlRW5kKGNvbnN0IFRlc3RDYXNlJiAvKnRlc3RfY2FzZSovKSB7Ci0gICAg
Z19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0Q2FzZUVuZCIpKTsK
LSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQoY29uc3Qg
VW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1
bGxNZXRob2ROYW1lKCJPbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiKSk7Ci0gIH0KLQotICB2
aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNUZWFyRG93bkVuZChjb25zdCBVbml0VGVzdCYgLyp1
bml0X3Rlc3QqLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUo
Ik9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25U
ZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpdGVyYXRpb24pIHsKLSAgICBNZXNzYWdlIG1l
c3NhZ2U7Ci0gICAgbWVzc2FnZSA8PCBHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0SXRlcmF0aW9u
RW5kIikKLSAgICAgICAgICAgIDw8ICIoIiAgPDwgaXRlcmF0aW9uIDw8ICIpIjsKLSAgICBnX2V2
ZW50cy0+cHVzaF9iYWNrKG1lc3NhZ2UuR2V0U3RyaW5nKCkpOwotICB9Ci0KLSAgdmlydHVhbCB2
b2lkIE9uVGVzdFByb2dyYW1FbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHsKLSAg
ICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RQcm9ncmFtRW5k
IikpOwotICB9Ci0KLSBwcml2YXRlOgotICBTdHJpbmcgR2V0RnVsbE1ldGhvZE5hbWUoY29uc3Qg
Y2hhciogbmFtZSkgewotICAgIE1lc3NhZ2UgbWVzc2FnZTsKLSAgICBtZXNzYWdlIDw8IG5hbWVf
IDw8ICIuIiA8PCBuYW1lOwotICAgIHJldHVybiBtZXNzYWdlLkdldFN0cmluZygpOwotICB9Ci0K
LSAgU3RyaW5nIG5hbWVfOwotfTsKLQotY2xhc3MgRW52aXJvbm1lbnRJbnZvY2F0aW9uQ2F0Y2hl
ciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0
VXAoKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkVudmlyb25tZW50OjpTZXRV
cCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBnX2V2ZW50cy0+
cHVzaF9iYWNrKFN0cmluZygiRW52aXJvbm1lbnQ6OlRlYXJEb3duIikpOwotICB9Ci19OwotCi1j
bGFzcyBMaXN0ZW5lclRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHJvdGVjdGVkOgotICBzdGF0aWMg
dm9pZCBTZXRVcFRlc3RDYXNlKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJM
aXN0ZW5lclRlc3Q6OlNldFVwVGVzdENhc2UiKSk7Ci0gIH0KLQotICBzdGF0aWMgdm9pZCBUZWFy
RG93blRlc3RDYXNlKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJMaXN0ZW5l
clRlc3Q6OlRlYXJEb3duVGVzdENhc2UiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAo
KSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6U2V0VXAi
KSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgZ19ldmVudHMtPnB1
c2hfYmFjayhTdHJpbmcoIkxpc3RlbmVyVGVzdDo6VGVhckRvd24iKSk7Ci0gIH0KLX07Ci0KLVRF
U1RfRihMaXN0ZW5lclRlc3QsIERvZXNGb28pIHsKLSAgLy8gVGVzdCBleGVjdXRpb24gb3JkZXIg
d2l0aGluIGEgdGVzdCBjYXNlIGlzIG5vdCBndWFyYW50ZWVkIHNvIHdlIGFyZSBub3QKLSAgLy8g
cmVjb3JkaW5nIHRoZSB0ZXN0IG5hbWUuCi0gIGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJM
aXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5IikpOwotICBTVUNDRUVEKCk7ICAvLyBUcmlnZ2VycyBP
blRlc3RQYXJ0UmVzdWx0LgotfQotCi1URVNUX0YoTGlzdGVuZXJUZXN0LCBEb2VzQmFyKSB7Ci0g
IGdfZXZlbnRzLT5wdXNoX2JhY2soU3RyaW5nKCJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5Iikp
OwotICBTVUNDRUVEKCk7ICAvLyBUcmlnZ2VycyBPblRlc3RQYXJ0UmVzdWx0LgotfQotCi19ICAv
LyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotdXNpbmcg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6RW52aXJvbm1lbnRJbnZvY2F0aW9uQ2F0Y2hlcjsKLXVzaW5n
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkV2ZW50UmVjb3JkaW5nTGlzdGVuZXI7Ci0KLXZvaWQgVmVy
aWZ5UmVzdWx0cyhjb25zdCBzdGQ6OnZlY3RvcjxTdHJpbmc+JiBkYXRhLAotICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0KiBleHBlY3RlZF9kYXRhLAotICAgICAgICAgICAgICAg
ICAgIGludCBleHBlY3RlZF9kYXRhX3NpemUpIHsKLSAgY29uc3QgaW50IGFjdHVhbF9zaXplID0g
ZGF0YS5zaXplKCk7Ci0gIC8vIElmIHRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9uIGZhaWxzLCBhIG5l
dyBlbnRyeSB3aWxsIGJlIGFwcGVuZGVkIHRvCi0gIC8vIGRhdGEuICBIZW5jZSB3ZSBzYXZlIGRh
dGEuc2l6ZSgpIGZpcnN0LgotICBFWFBFQ1RfRVEoZXhwZWN0ZWRfZGF0YV9zaXplLCBhY3R1YWxf
c2l6ZSk7Ci0KLSAgLy8gQ29tcGFyZXMgdGhlIGNvbW1vbiBwcmVmaXguCi0gIGNvbnN0IGludCBz
aG9ydGVyX3NpemUgPSBleHBlY3RlZF9kYXRhX3NpemUgPD0gYWN0dWFsX3NpemUgPwotICAgICAg
ZXhwZWN0ZWRfZGF0YV9zaXplIDogYWN0dWFsX3NpemU7Ci0gIGludCBpID0gMDsKLSAgZm9yICg7
IGkgPCBzaG9ydGVyX3NpemU7ICsraSkgewotICAgIEFTU0VSVF9TVFJFUShleHBlY3RlZF9kYXRh
W2ldLCBkYXRhW2ldLmNfc3RyKCkpCi0gICAgICAgIDw8ICJhdCBwb3NpdGlvbiAiIDw8IGk7Ci0g
IH0KLQotICAvLyBQcmludHMgZXh0cmEgZWxlbWVudHMgaW4gdGhlIGFjdHVhbCBkYXRhLgotICBm
b3IgKDsgaSA8IGFjdHVhbF9zaXplOyArK2kpIHsKLSAgICBwcmludGYoIiAgQWN0dWFsIGV2ZW50
ICMlZDogJXNcbiIsIGksIGRhdGFbaV0uY19zdHIoKSk7Ci0gIH0KLX0KLQotaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIgKiphcmd2KSB7Ci0gIHN0ZDo6dmVjdG9yPFN0cmluZz4gZXZlbnRzOwotICBn
X2V2ZW50cyA9ICZldmVudHM7Ci0gIEluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICBV
bml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCkuQXBwZW5kKAotICAgICAgbmV3IEV2
ZW50UmVjb3JkaW5nTGlzdGVuZXIoIjFzdCIpKTsKLSAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkt
Pmxpc3RlbmVycygpLkFwcGVuZCgKLSAgICAgIG5ldyBFdmVudFJlY29yZGluZ0xpc3RlbmVyKCIy
bmQiKSk7Ci0KLSAgQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBFbnZpcm9ubWVudEludm9j
YXRpb25DYXRjaGVyKTsKLQotICBHVEVTVF9DSEVDS18oZXZlbnRzLnNpemUoKSA9PSAwKQotICAg
ICAgPDwgIkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCBzaG91bGQgbm90IGdlbmVyYXRlIGFueSBl
dmVudHMgaXRzZWxmLiI7Ci0KLSAgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHJlcGVhdCkgPSAyOwot
ICBpbnQgcmV0X3ZhbCA9IFJVTl9BTExfVEVTVFMoKTsKLQotICBjb25zdCBjaGFyKiBjb25zdCBl
eHBlY3RlZF9ldmVudHNbXSA9IHsKLSAgICAiMXN0Lk9uVGVzdFByb2dyYW1TdGFydCIsCi0gICAg
IjJuZC5PblRlc3RQcm9ncmFtU3RhcnQiLAotICAgICIxc3QuT25UZXN0SXRlcmF0aW9uU3RhcnQo
MCkiLAotICAgICIybmQuT25UZXN0SXRlcmF0aW9uU3RhcnQoMCkiLAotICAgICIxc3QuT25FbnZp
cm9ubWVudHNTZXRVcFN0YXJ0IiwKLSAgICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIs
Ci0gICAgIkVudmlyb25tZW50OjpTZXRVcCIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50c1NldFVw
RW5kIiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiLAotICAgICIxc3QuT25UZXN0
Q2FzZVN0YXJ0IiwKLSAgICAiMm5kLk9uVGVzdENhc2VTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVz
dDo6U2V0VXBUZXN0Q2FzZSIsCi0gICAgIjFzdC5PblRlc3RTdGFydCIsCi0gICAgIjJuZC5PblRl
c3RTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6U2V0VXAiLAotICAgICJMaXN0ZW5lclRlc3Q6
OiogVGVzdCBCb2R5IiwKLSAgICAiMXN0Lk9uVGVzdFBhcnRSZXN1bHQiLAotICAgICIybmQuT25U
ZXN0UGFydFJlc3VsdCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6VGVhckRvd24iLAotICAgICIybmQu
T25UZXN0RW5kIiwKLSAgICAiMXN0Lk9uVGVzdEVuZCIsCi0gICAgIjFzdC5PblRlc3RTdGFydCIs
Ci0gICAgIjJuZC5PblRlc3RTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6U2V0VXAiLAotICAg
ICJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5IiwKLSAgICAiMXN0Lk9uVGVzdFBhcnRSZXN1bHQi
LAotICAgICIybmQuT25UZXN0UGFydFJlc3VsdCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6VGVhckRv
d24iLAotICAgICIybmQuT25UZXN0RW5kIiwKLSAgICAiMXN0Lk9uVGVzdEVuZCIsCi0gICAgIkxp
c3RlbmVyVGVzdDo6VGVhckRvd25UZXN0Q2FzZSIsCi0gICAgIjJuZC5PblRlc3RDYXNlRW5kIiwK
LSAgICAiMXN0Lk9uVGVzdENhc2VFbmQiLAotICAgICIxc3QuT25FbnZpcm9ubWVudHNUZWFyRG93
blN0YXJ0IiwKLSAgICAiMm5kLk9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydCIsCi0gICAgIkVu
dmlyb25tZW50OjpUZWFyRG93biIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5k
IiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiLAotICAgICIybmQuT25UZXN0
SXRlcmF0aW9uRW5kKDApIiwKLSAgICAiMXN0Lk9uVGVzdEl0ZXJhdGlvbkVuZCgwKSIsCi0gICAg
IjFzdC5PblRlc3RJdGVyYXRpb25TdGFydCgxKSIsCi0gICAgIjJuZC5PblRlc3RJdGVyYXRpb25T
dGFydCgxKSIsCi0gICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVwU3RhcnQiLAotICAgICIybmQu
T25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0IiwKLSAgICAiRW52aXJvbm1lbnQ6OlNldFVwIiwKLSAg
ICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiLAotICAgICIxc3QuT25FbnZpcm9ubWVudHNT
ZXRVcEVuZCIsCi0gICAgIjFzdC5PblRlc3RDYXNlU3RhcnQiLAotICAgICIybmQuT25UZXN0Q2Fz
ZVN0YXJ0IiwKLSAgICAiTGlzdGVuZXJUZXN0OjpTZXRVcFRlc3RDYXNlIiwKLSAgICAiMXN0Lk9u
VGVzdFN0YXJ0IiwKLSAgICAiMm5kLk9uVGVzdFN0YXJ0IiwKLSAgICAiTGlzdGVuZXJUZXN0OjpT
ZXRVcCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHkiLAotICAgICIxc3QuT25UZXN0
UGFydFJlc3VsdCIsCi0gICAgIjJuZC5PblRlc3RQYXJ0UmVzdWx0IiwKLSAgICAiTGlzdGVuZXJU
ZXN0OjpUZWFyRG93biIsCi0gICAgIjJuZC5PblRlc3RFbmQiLAotICAgICIxc3QuT25UZXN0RW5k
IiwKLSAgICAiMXN0Lk9uVGVzdFN0YXJ0IiwKLSAgICAiMm5kLk9uVGVzdFN0YXJ0IiwKLSAgICAi
TGlzdGVuZXJUZXN0OjpTZXRVcCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHkiLAot
ICAgICIxc3QuT25UZXN0UGFydFJlc3VsdCIsCi0gICAgIjJuZC5PblRlc3RQYXJ0UmVzdWx0IiwK
LSAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93biIsCi0gICAgIjJuZC5PblRlc3RFbmQiLAotICAg
ICIxc3QuT25UZXN0RW5kIiwKLSAgICAiTGlzdGVuZXJUZXN0OjpUZWFyRG93blRlc3RDYXNlIiwK
LSAgICAiMm5kLk9uVGVzdENhc2VFbmQiLAotICAgICIxc3QuT25UZXN0Q2FzZUVuZCIsCi0gICAg
IjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiLAotICAgICIybmQuT25FbnZpcm9ubWVu
dHNUZWFyRG93blN0YXJ0IiwKLSAgICAiRW52aXJvbm1lbnQ6OlRlYXJEb3duIiwKLSAgICAiMm5k
Lk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiLAotICAgICIxc3QuT25FbnZpcm9ubWVudHNUZWFy
RG93bkVuZCIsCi0gICAgIjJuZC5PblRlc3RJdGVyYXRpb25FbmQoMSkiLAotICAgICIxc3QuT25U
ZXN0SXRlcmF0aW9uRW5kKDEpIiwKLSAgICAiMm5kLk9uVGVzdFByb2dyYW1FbmQiLAotICAgICIx
c3QuT25UZXN0UHJvZ3JhbUVuZCIKLSAgfTsKLSAgVmVyaWZ5UmVzdWx0cyhldmVudHMsCi0gICAg
ICAgICAgICAgICAgZXhwZWN0ZWRfZXZlbnRzLAotICAgICAgICAgICAgICAgIHNpemVvZihleHBl
Y3RlZF9ldmVudHMpL3NpemVvZihleHBlY3RlZF9ldmVudHNbMF0pKTsKLQotICAvLyBXZSBuZWVk
IHRvIGNoZWNrIG1hbnVhbGx5IGZvciBhZCBob2MgdGVzdCBmYWlsdXJlcyB0aGF0IGhhcHBlbiBh
ZnRlcgotICAvLyBSVU5fQUxMX1RFU1RTIGZpbmlzaGVzLgotICBpZiAoVW5pdFRlc3Q6OkdldElu
c3RhbmNlKCktPkZhaWxlZCgpKQotICAgIHJldF92YWwgPSAxOwotCi0gIHJldHVybiByZXRfdmFs
OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC1tZXNz
YWdlX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LW1lc3NhZ2Vf
dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQyYjAzNDQ3ODcyZTNlOGYw
N2E5YTRhZGQyYmU1ZGQ0Njk4MGI1NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LW1lc3NhZ2Vf
dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDE2NyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAw
NSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNv
bSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRlc3RzIGZvciB0aGUgTWVzc2FnZSBjbGFzcy4KLQot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaD4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+Ci0KLW5hbWVzcGFjZSB7Ci0KLXVzaW5nIDo6dGVzdGluZzo6TWVzc2FnZTsKLXVzaW5nIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlN0clN0cmVhbTsKLQotLy8gQSBoZWxwZXIgZnVuY3Rpb24gdGhh
dCB0dXJucyBhIE1lc3NhZ2UgaW50byBhIEMgc3RyaW5nLgotY29uc3QgY2hhciogVG9DU3RyaW5n
KGNvbnN0IE1lc3NhZ2UmIG1zZykgewotICBzdGF0aWMgdGVzdGluZzo6aW50ZXJuYWw6OlN0cmlu
ZyByZXN1bHQ7Ci0gIHJlc3VsdCA9IG1zZy5HZXRTdHJpbmcoKTsKLSAgcmV0dXJuIHJlc3VsdC5j
X3N0cigpOwotfQotCi0vLyBUZXN0cyB0aGUgdGVzdGluZzo6TWVzc2FnZSBjbGFzcwotCi0vLyBU
ZXN0cyB0aGUgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KLVRFU1QoTWVzc2FnZVRlc3QsIERlZmF1bHRD
b25zdHJ1Y3RvcikgewotICBjb25zdCBNZXNzYWdlIG1zZzsKLSAgRVhQRUNUX1NUUkVRKCIiLCBU
b0NTdHJpbmcobXNnKSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBjb3B5IGNvbnN0cnVjdG9yLgotVEVT
VChNZXNzYWdlVGVzdCwgQ29weUNvbnN0cnVjdG9yKSB7Ci0gIGNvbnN0IE1lc3NhZ2UgbXNnMSgi
SGVsbG8iKTsKLSAgY29uc3QgTWVzc2FnZSBtc2cyKG1zZzEpOwotICBFWFBFQ1RfU1RSRVEoIkhl
bGxvIiwgVG9DU3RyaW5nKG1zZzIpKTsKLX0KLQotLy8gVGVzdHMgY29uc3RydWN0aW5nIGEgTWVz
c2FnZSBmcm9tIGEgQy1zdHJpbmcuCi1URVNUKE1lc3NhZ2VUZXN0LCBDb25zdHJ1Y3RzRnJvbUNT
dHJpbmcpIHsKLSAgTWVzc2FnZSBtc2coIkhlbGxvIik7Ci0gIEVYUEVDVF9TVFJFUSgiSGVsbG8i
LCBUb0NTdHJpbmcobXNnKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBhIGZsb2F0LgotVEVT
VChNZXNzYWdlVGVzdCwgU3RyZWFtc0Zsb2F0KSB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IHMgPSBU
b0NTdHJpbmcoTWVzc2FnZSgpIDw8IDEuMjM0NTZGIDw8ICIgIiA8PCAyLjM0NTY3Rik7Ci0gIC8v
IEJvdGggbnVtYmVycyBzaG91bGQgYmUgcHJpbnRlZCB3aXRoIGVub3VnaCBwcmVjaXNpb24uCi0g
IEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIxLjIzNDU2MCIsIHMp
OwotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6OklzU3Vic3RyaW5nLCAiIDIuMzQ1NjY5
Iiwgcyk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBhIGRvdWJsZS4KLVRFU1QoTWVzc2FnZVRl
c3QsIFN0cmVhbXNEb3VibGUpIHsKLSAgY29uc3QgY2hhciogY29uc3QgcyA9IFRvQ1N0cmluZyhN
ZXNzYWdlKCkgPDwgMTI2MDU3MDg4MC40NTU1NDk3IDw8ICIgIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8IDEyNjA1NzIyNjUuMTk1NDUzNCk7Ci0gIC8vIEJvdGggbnVtYmVy
cyBzaG91bGQgYmUgcHJpbnRlZCB3aXRoIGVub3VnaCBwcmVjaXNpb24uCi0gIEVYUEVDVF9QUkVE
X0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIxMjYwNTcwODgwLjQ1Iiwgcyk7Ci0gIEVY
UEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIgMTI2MDU3MjI2NS4xOSIs
IHMpOwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcgYSBub24tY2hhciBwb2ludGVyLgotVEVTVChN
ZXNzYWdlVGVzdCwgU3RyZWFtc1BvaW50ZXIpIHsKLSAgaW50IG4gPSAwOwotICBpbnQqIHAgPSAm
bjsKLSAgRVhQRUNUX1NUUk5FKCIobnVsbCkiLCBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8IHApKTsK
LX0KLQotLy8gVGVzdHMgc3RyZWFtaW5nIGEgTlVMTCBub24tY2hhciBwb2ludGVyLgotVEVTVChN
ZXNzYWdlVGVzdCwgU3RyZWFtc051bGxQb2ludGVyKSB7Ci0gIGludCogcCA9IE5VTEw7Ci0gIEVY
UEVDVF9TVFJFUSgiKG51bGwpIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCBwKSk7Ci19Ci0KLS8v
IFRlc3RzIHN0cmVhbWluZyBhIEMgc3RyaW5nLgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc0NT
dHJpbmcpIHsKLSAgRVhQRUNUX1NUUkVRKCJGb28iLCBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8ICJG
b28iKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBhIE5VTEwgQyBzdHJpbmcuCi1URVNUKE1l
c3NhZ2VUZXN0LCBTdHJlYW1zTnVsbENTdHJpbmcpIHsKLSAgY2hhciogcCA9IE5VTEw7Ci0gIEVY
UEVDVF9TVFJFUSgiKG51bGwpIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCBwKSk7Ci19Ci0KLS8v
IFRlc3RzIHN0cmVhbWluZyBzdGQ6OnN0cmluZy4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNT
dHJpbmcpIHsKLSAgY29uc3QgOjpzdGQ6OnN0cmluZyBzdHIoIkhlbGxvIik7Ci0gIEVYUEVDVF9T
VFJFUSgiSGVsbG8iLCBUb0NTdHJpbmcoTWVzc2FnZSgpIDw8IHN0cikpOwotfQotCi0vLyBUZXN0
cyB0aGF0IHdlIGNhbiBvdXRwdXQgc3RyaW5ncyBjb250YWluaW5nIGVtYmVkZGVkIE5VTHMuCi1U
RVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zU3RyaW5nV2l0aEVtYmVkZGVkTlVMKSB7Ci0gIGNvbnN0
IGNoYXIgY2hhcl9hcnJheV93aXRoX251bFtdID0KLSAgICAgICJIZXJlJ3MgYSBOVUxcMCBhbmQg
c29tZSBtb3JlIHN0cmluZyI7Ci0gIGNvbnN0IDo6c3RkOjpzdHJpbmcgc3RyaW5nX3dpdGhfbnVs
KGNoYXJfYXJyYXlfd2l0aF9udWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVvZihjaGFyX2FycmF5X3dpdGhfbnVsKSAtIDEpOwotICBFWFBFQ1RfU1RSRVEoIkhl
cmUncyBhIE5VTFxcMCBhbmQgc29tZSBtb3JlIHN0cmluZyIsCi0gICAgICAgICAgICAgICBUb0NT
dHJpbmcoTWVzc2FnZSgpIDw8IHN0cmluZ193aXRoX251bCkpOwotfQotCi0vLyBUZXN0cyBzdHJl
YW1pbmcgYSBOVUwgY2hhci4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNOVUxDaGFyKSB7Ci0g
IEVYUEVDVF9TVFJFUSgiXFwwIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCAnXDAnKSk7Ci19Ci0K
LS8vIFRlc3RzIHN0cmVhbWluZyBpbnQuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zSW50KSB7
Ci0gIEVYUEVDVF9TVFJFUSgiMTIzIiwgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8PCAxMjMpKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBiYXNpYyBJTyBtYW5pcHVsYXRvcnMgKGVuZGwsIGVuZHMsIGFuZCBm
bHVzaCkgY2FuIGJlCi0vLyBzdHJlYW1lZCB0byBNZXNzYWdlLgotVEVTVChNZXNzYWdlVGVzdCwg
U3RyZWFtc0Jhc2ljSW9NYW5pcCkgewotICBFWFBFQ1RfU1RSRVEoIkxpbmUgMS5cbkEgTlVMIGNo
YXIgXFwwIGluIGxpbmUgMi4iLAotICAgICAgICAgICAgICAgVG9DU3RyaW5nKE1lc3NhZ2UoKSA8
PCAiTGluZSAxLiIgPDwgc3RkOjplbmRsCi0gICAgICAgICAgICAgICAgICAgICAgICAgPDwgIkEg
TlVMIGNoYXIgIiA8PCBzdGQ6OmVuZHMgPDwgc3RkOjpmbHVzaAotICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICIgaW4gbGluZSAyLiIpKTsKLX0KLQotLy8gVGVzdHMgTWVzc2FnZTo6R2V0U3Ry
aW5nKCkKLVRFU1QoTWVzc2FnZVRlc3QsIEdldFN0cmluZykgewotICBNZXNzYWdlIG1zZzsKLSAg
bXNnIDw8IDEgPDwgIiBsYW1iIjsKLSAgRVhQRUNUX1NUUkVRKCIxIGxhbWIiLCBtc2cuR2V0U3Ry
aW5nKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBhIE1lc3NhZ2Ugb2JqZWN0
IHRvIGFuIG9zdHJlYW0uCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zVG9PU3RyZWFtKSB7Ci0g
IE1lc3NhZ2UgbXNnKCJIZWxsbyIpOwotICBTdHJTdHJlYW0gc3M7Ci0gIHNzIDw8IG1zZzsKLSAg
RVhQRUNUX1NUUkVRKCJIZWxsbyIsIHRlc3Rpbmc6OmludGVybmFsOjpTdHJTdHJlYW1Ub1N0cmlu
Zygmc3MpLmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgTWVzc2FnZSBvYmplY3QgZG9l
c24ndCB0YWtlIHVwIHRvbyBtdWNoIHN0YWNrIHNwYWNlLgotVEVTVChNZXNzYWdlVGVzdCwgRG9l
c05vdFRha2VVcE11Y2hTdGFja1NwYWNlKSB7Ci0gIEVYUEVDVF9MRShzaXplb2YoTWVzc2FnZSks
IDE2VSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdC1vcHRpb25zX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0LW9wdGlvbnNfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMmUyY2JjOTJlNWUwMjhjNzRjODJmMDc1MGZkZDhiZGZiNGU4ODMxZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0LW9wdGlvbnNfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDIxMiAr
MCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwot
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0v
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwot
Ly8gQXV0aG9yczoga2VpdGgucmF5QGdtYWlsLmNvbSAoS2VpdGggUmF5KQotLy8KLS8vIEdvb2ds
ZSBUZXN0IFVuaXRUZXN0T3B0aW9ucyB0ZXN0cwotLy8KLS8vIFRoaXMgZmlsZSB0ZXN0cyBjbGFz
c2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5IGJ5Ci0vLyBHb29nbGUgVGVzdC4gIFRo
ZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotLy8KLS8vIFRoaXMgZmls
ZSBpcyAjaW5jbHVkZWQgZnJvbSBndGVzdC5jYywgdG8gYXZvaWQgY2hhbmdpbmcgYnVpbGQgb3IK
LS8vIG1ha2UtZmlsZXMgb24gV2luZG93cyBhbmQgb3RoZXIgcGxhdGZvcm1zLiBEbyBub3QgI2lu
Y2x1ZGUgdGhpcyBmaWxlCi0vLyBhbnl3aGVyZSBlbHNlIQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KLQotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0jaW5jbHVkZSA8d2luZG93cy5o
PgotI2VsaWYgR1RFU1RfT1NfV0lORE9XUwotI2luY2x1ZGUgPGRpcmVjdC5oPgotI2VuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5z
bGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4g
IEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVk
LCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0v
LyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJu
YWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8g
MQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBM
RU1FTlRBVElPTl8KLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVybmFsIHsK
LW5hbWVzcGFjZSB7Ci0KLS8vIFR1cm5zIHRoZSBnaXZlbiByZWxhdGl2ZSBwYXRoIGludG8gYW4g
YWJzb2x1dGUgcGF0aC4KLUZpbGVQYXRoIEdldEFic29sdXRlUGF0aE9mKGNvbnN0IEZpbGVQYXRo
JiByZWxhdGl2ZV9wYXRoKSB7Ci0gIHJldHVybiBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBh
dGg6OkdldEN1cnJlbnREaXIoKSwgcmVsYXRpdmVfcGF0aCk7Ci19Ci0KLS8vIFRlc3RpbmcgVW5p
dFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQvR2V0T3V0cHV0RmlsZS4KLQotVEVTVChYbWxP
dXRwdXRUZXN0LCBHZXRPdXRwdXRGb3JtYXREZWZhdWx0KSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0
KSA9ICIiOwotICBFWFBFQ1RfU1RSRVEoIiIsIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9y
bWF0KCkuY19zdHIoKSk7Ci19Ci0KLVRFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0Rm9ybWF0
KSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6ZmlsZW5hbWUiOwotICBFWFBFQ1RfU1RS
RVEoInhtbCIsIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCkuY19zdHIoKSk7Ci19
Ci0KLVRFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0RmlsZURlZmF1bHQpIHsKLSAgR1RFU1Rf
RkxBRyhvdXRwdXQpID0gIiI7Ci0gIEVYUEVDVF9TVFJFUShHZXRBYnNvbHV0ZVBhdGhPZihGaWxl
UGF0aCgidGVzdF9kZXRhaWwueG1sIikpLmNfc3RyKCksCi0gICAgICAgICAgICAgICBVbml0VGVz
dE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOwotfQotCi1U
RVNUKFhtbE91dHB1dFRlc3QsIEdldE91dHB1dEZpbGVTaW5nbGVGaWxlKSB7Ci0gIEdURVNUX0ZM
QUcob3V0cHV0KSA9ICJ4bWw6ZmlsZW5hbWUuYWJjIjsKLSAgRVhQRUNUX1NUUkVRKEdldEFic29s
dXRlUGF0aE9mKEZpbGVQYXRoKCJmaWxlbmFtZS5hYmMiKSkuY19zdHIoKSwKLSAgICAgICAgICAg
ICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIo
KSk7Ci19Ci0KLVRFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0RmlsZUZyb21EaXJlY3RvcnlQ
YXRoKSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6cGF0aCIgR1RFU1RfUEFUSF9TRVBf
OwotICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3RlZF9vdXRwdXRfZmlsZSA9Ci0gICAgICBHZXRB
YnNvbHV0ZVBhdGhPZigKLSAgICAgICAgICBGaWxlUGF0aChzdGQ6OnN0cmluZygicGF0aCIpICsg
R1RFU1RfUEFUSF9TRVBfICsKLSAgICAgICAgICAgICAgICAgICBHZXRDdXJyZW50RXhlY3V0YWJs
ZU5hbWUoKS5jX3N0cigpICsgIi54bWwiKSkuY19zdHIoKTsKLSAgY29uc3QgU3RyaW5nJiBvdXRw
dXRfZmlsZSA9IFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7
Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICBFWFBFQ1RfU1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1
dF9maWxlLmNfc3RyKCksIG91dHB1dF9maWxlLmNfc3RyKCkpOwotI2Vsc2UKLSAgRVhQRUNUX0VR
KGV4cGVjdGVkX291dHB1dF9maWxlLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKLSNlbmRpZgotfQot
Ci1URVNUKE91dHB1dEZpbGVIZWxwZXJzVGVzdCwgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKSB7
Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGV4ZV9zdHIgPSBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUo
KS5jX3N0cigpOwotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgY29uc3QgYm9vbCBzdWNjZXNzID0K
LSAgICAgIF9zdHJjbXBpKCJndGVzdC1vcHRpb25zX3Rlc3QiLCBleGVfc3RyLmNfc3RyKCkpID09
IDAgfHwKLSAgICAgIF9zdHJjbXBpKCJndGVzdC1vcHRpb25zLWV4X3Rlc3QiLCBleGVfc3RyLmNf
c3RyKCkpID09IDAgfHwKLSAgICAgIF9zdHJjbXBpKCJndGVzdF9hbGxfdGVzdCIsIGV4ZV9zdHIu
Y19zdHIoKSkgPT0gMCB8fAotICAgICAgX3N0cmNtcGkoImd0ZXN0X2RsbF90ZXN0IiwgZXhlX3N0
ci5jX3N0cigpKSA9PSAwOwotI2Vsc2UKLSAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHJlbW92
ZSB0aGUgaGFyZC1jb2RlZCAibHQtIiBwcmVmaXggd2hlbgotICAvLyAgIENoYW5kbGVyIENhcnJ1
dGgncyBsaWJ0b29sIHJlcGxhY2VtZW50IGlzIHJlYWR5LgotICBjb25zdCBib29sIHN1Y2Nlc3Mg
PQotICAgICAgZXhlX3N0ciA9PSAiZ3Rlc3Qtb3B0aW9uc190ZXN0IiB8fAotICAgICAgZXhlX3N0
ciA9PSAiZ3Rlc3RfYWxsX3Rlc3QiIHx8Ci0gICAgICBleGVfc3RyID09ICJsdC1ndGVzdF9hbGxf
dGVzdCIgfHwKLSAgICAgIGV4ZV9zdHIgPT0gImd0ZXN0X2RsbF90ZXN0IjsKLSNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUwotICBpZiAoIXN1Y2Nlc3MpCi0gICAgRkFJTCgpIDw8ICJHZXRDdXJy
ZW50RXhlY3V0YWJsZU5hbWUoKSByZXR1cm5zICIgPDwgZXhlX3N0cjsKLX0KLQotY2xhc3MgWG1s
T3V0cHV0Q2hhbmdlRGlyVGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBvcmlnaW5hbF93b3JraW5nX2Rpcl8gPSBGaWxlUGF0aDo6
R2V0Q3VycmVudERpcigpOwotICAgIHBvc2l4OjpDaERpcigiLi4iKTsKLSAgICAvLyBUaGlzIHdp
bGwgbWFrZSB0aGUgdGVzdCBmYWlsIGlmIHJ1biBmcm9tIHRoZSByb290IGRpcmVjdG9yeS4KLSAg
ICBFWFBFQ1RfU1RSTkUob3JpZ2luYWxfd29ya2luZ19kaXJfLmNfc3RyKCksCi0gICAgICAgICAg
ICAgICAgIEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkuY19zdHIoKSk7Ci0gIH0KLQotICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgcG9zaXg6OkNoRGlyKG9yaWdpbmFsX3dvcmtpbmdf
ZGlyXy5jX3N0cigpKTsKLSAgfQotCi0gIEZpbGVQYXRoIG9yaWdpbmFsX3dvcmtpbmdfZGlyXzsK
LX07Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29y
a2luZ0RpcldpdGhEZWZhdWx0KSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICIiOwotICBFWFBF
Q1RfU1RSRVEoRmlsZVBhdGg6OkNvbmNhdFBhdGhzKG9yaWdpbmFsX3dvcmtpbmdfZGlyXywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgidGVzdF9kZXRhaWwu
eG1sIikpLmNfc3RyKCksCi0gICAgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29s
dXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpOwotfQotCi1URVNUX0YoWG1sT3V0cHV0Q2hh
bmdlRGlyVGVzdCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoRGVmYXVsdFhNTCkgewot
ICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sIjsKLSAgRVhQRUNUX1NUUkVRKEZpbGVQYXRoOjpD
b25jYXRQYXRocyhvcmlnaW5hbF93b3JraW5nX2Rpcl8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRmlsZVBhdGgoInRlc3RfZGV0YWlsLnhtbCIpKS5jX3N0cigpLAotICAg
ICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUo
KS5jX3N0cigpKTsKLX0KLQotVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZl
T3JpZ2luYWxXb3JraW5nRGlyV2l0aFJlbGF0aXZlRmlsZSkgewotICBHVEVTVF9GTEFHKG91dHB1
dCkgPSAieG1sOmZpbGVuYW1lLmFiYyI7Ci0gIEVYUEVDVF9TVFJFUShGaWxlUGF0aDo6Q29uY2F0
UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZpbGVQYXRoKCJmaWxlbmFtZS5hYmMiKSkuY19zdHIoKSwKLSAgICAgICAgICAg
ICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkuY19zdHIo
KSk7Ci19Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFs
V29ya2luZ0RpcldpdGhSZWxhdGl2ZVBhdGgpIHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInht
bDpwYXRoIiBHVEVTVF9QQVRIX1NFUF87Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdGVkX291
dHB1dF9maWxlID0KLSAgICAgIEZpbGVQYXRoOjpDb25jYXRQYXRocygKLSAgICAgICAgICBvcmln
aW5hbF93b3JraW5nX2Rpcl8sCi0gICAgICAgICAgRmlsZVBhdGgoc3RkOjpzdHJpbmcoInBhdGgi
KSArIEdURVNUX1BBVEhfU0VQXyArCi0gICAgICAgICAgICAgICAgICAgR2V0Q3VycmVudEV4ZWN1
dGFibGVOYW1lKCkuY19zdHIoKSArICIueG1sIikpLmNfc3RyKCk7Ci0gIGNvbnN0IFN0cmluZyYg
b3V0cHV0X2ZpbGUgPSBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0Rmls
ZSgpOwotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgRVhQRUNUX1NUUkNBU0VFUShleHBlY3RlZF9v
dXRwdXRfZmlsZS5jX3N0cigpLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKLSNlbHNlCi0gIEVYUEVD
VF9FUShleHBlY3RlZF9vdXRwdXRfZmlsZSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7Ci0jZW5kaWYK
LX0KLQotVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3Jr
aW5nRGlyV2l0aEFic29sdXRlRmlsZSkgewotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgR1RFU1Rf
RkxBRyhvdXRwdXQpID0gInhtbDpjOlxcdG1wXFxmaWxlbmFtZS5hYmMiOwotICBFWFBFQ1RfU1RS
RVEoRmlsZVBhdGgoImM6XFx0bXBcXGZpbGVuYW1lLmFiYyIpLmNfc3RyKCksCi0gICAgICAgICAg
ICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3Ry
KCkpOwotI2Vsc2UKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0ieG1sOi90bXAvZmlsZW5hbWUuYWJj
IjsKLSAgRVhQRUNUX1NUUkVRKEZpbGVQYXRoKCIvdG1wL2ZpbGVuYW1lLmFiYyIpLmNfc3RyKCks
Ci0gICAgICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0
RmlsZSgpLmNfc3RyKCkpOwotI2VuZGlmCi19Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJU
ZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhBYnNvbHV0ZVBhdGgpIHsKLSNpZiBH
VEVTVF9PU19XSU5ET1dTCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIHBhdGggPSAiYzpcXHRtcFxcIjsK
LSNlbHNlCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIHBhdGggPSAiL3RtcC8iOwotI2VuZGlmCi0KLSAg
R1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbDoiICsgcGF0aDsKLSAgY29uc3Qgc3RkOjpzdHJpbmcg
ZXhwZWN0ZWRfb3V0cHV0X2ZpbGUgPQotICAgICAgcGF0aCArIEdldEN1cnJlbnRFeGVjdXRhYmxl
TmFtZSgpLmNfc3RyKCkgKyAiLnhtbCI7Ci0gIGNvbnN0IFN0cmluZyYgb3V0cHV0X2ZpbGUgPSBV
bml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpOwotCi0jaWYgR1RF
U1RfT1NfV0lORE9XUwotICBFWFBFQ1RfU1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxlLmNf
c3RyKCksIG91dHB1dF9maWxlLmNfc3RyKCkpOwotI2Vsc2UKLSAgRVhQRUNUX0VRKGV4cGVjdGVk
X291dHB1dF9maWxlLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKLSNlbmRpZgotfQotCi19ICAvLyBu
YW1lc3BhY2UKLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIHRlc3Rp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0t
dGVzdDJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0t
dGVzdDJfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NiNmNmYWM5ZTc2
YjgyN2YxN2FlMTE4MjllMjM2ZDZmOTdlZTY0Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBh
cmFtLXRlc3QyX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vLyBDb3B5
cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1
dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2bGFk
bEBnb29nbGUuY29tIChWbGFkIExvc2V2KQotLy8KLS8vIFRlc3RzIGZvciBHb29nbGUgVGVzdCBp
dHNlbGYuICBUaGlzIHZlcmlmaWVzIHRoYXQgdGhlIGJhc2ljIGNvbnN0cnVjdHMgb2YKLS8vIEdv
b2dsZSBUZXN0IHdvcmsuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0jaW5jbHVkZSAi
dGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaCIKLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNU
Ci0KLXVzaW5nIDo6dGVzdGluZzo6VmFsdWVzOwotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
UGFyYW1HZW5lcmF0b3I7Ci0KLS8vIFRlc3RzIHRoYXQgZ2VuZXJhdG9ycyBkZWZpbmVkIGluIGEg
ZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXQKLS8vIGFyZSBmdW5jdGlvbmFsLiBUaGUgdGVzdCB1
c2luZyBleHRlcm5fZ2VuIGlzIGRlZmluZWQKLS8vIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5j
Yy4KLVBhcmFtR2VuZXJhdG9yPGludD4gZXh0ZXJuX2dlbiA9IFZhbHVlcygzMyk7Ci0KLS8vIFRl
c3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUg
dHJhbnNsYXRpb24gdW5pdAotLy8gYW5kIGluc3RhbnRpYXRlZCBpbiBhbm90aGVyLiBUaGUgdGVz
dCBpcyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYwotLy8gYW5kIEV4dGVybmFs
SW5zdGFudGlhdGlvblRlc3QgZml4dHVyZSBjbGFzcyBpcyBkZWZpbmVkIGluCi0vLyBndGVzdC1w
YXJhbS10ZXN0X3Rlc3QuaC4KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKE11bHRpcGxlc09mMzMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDMzLCA2NikpOwotCi0vLyBUZXN0cyB0aGF0IGEg
cGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGluc3RhbnRpYXRlZAotLy8gaW4gbXVsdGlw
bGUgdHJhbnNsYXRpb24gdW5pdHMuIEFub3RoZXIgaW5zdGFudGlhdGlvbiBpcyBkZWZpbmVkCi0v
LyBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MgYW5kIEluc3RhbnRpYXRpb25Jbk11bHRpcGxl
VHJhbnNsYWlvblVuaXRzVGVzdAotLy8gZml4dHVyZSBpcyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFt
LXRlc3RfdGVzdC5oCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5jZTIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rl
c3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNDIqMywgNDIqNCwgNDIqNSkpOwot
Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkMGEwZTczNWMwYjk4OGVmMWEyMmI3ZDdhZTY5MDI3MDE4YmRiOGNi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmNjCisrKyAvZGV2L251
bGwKQEAgLTEsODM1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0v
LwotLy8gVGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZi4gVGhpcyBmaWxlIHZlcmlmaWVzIHRo
YXQgdGhlIHBhcmFtZXRlcgotLy8gZ2VuZXJhdG9ycyBvYmplY3RzIHByb2R1Y2UgY29ycmVjdCBw
YXJhbWV0ZXIgc2VxdWVuY2VzIGFuZCB0aGF0Ci0vLyBHb29nbGUgVGVzdCBydW50aW1lIGluc3Rh
bnRpYXRlcyBjb3JyZWN0IHRlc3RzIGZyb20gdGhvc2Ugc2VxdWVuY2VzLgotCi0jaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLSNpbmNsdWRlIDxh
bGdvcml0aG0+Ci0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8bGlzdD4KLSNpbmNsdWRl
IDxzc3RyZWFtPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLS8vIFRv
IGluY2x1ZGUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmguCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFU
SU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIiAgLy8gZm9yIFVuaXRU
ZXN0T3B0aW9ucwotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi0jaW5jbHVkZSAidGVz
dC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaCIKLQotdXNpbmcgOjpzdGQ6OnZlY3RvcjsKLXVzaW5n
IDo6c3RkOjpzb3J0OwotCi11c2luZyA6OnRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVu
dDsKLXVzaW5nIDo6dGVzdGluZzo6Qm9vbDsKLXVzaW5nIDo6dGVzdGluZzo6TWVzc2FnZTsKLXVz
aW5nIDo6dGVzdGluZzo6UmFuZ2U7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW07Ci11
c2luZyA6OnRlc3Rpbmc6OlZhbHVlczsKLXVzaW5nIDo6dGVzdGluZzo6VmFsdWVzSW47Ci0KLSNp
ZiBHVEVTVF9IQVNfQ09NQklORQotdXNpbmcgOjp0ZXN0aW5nOjpDb21iaW5lOwotdXNpbmcgOjpz
dGQ6OnRyMTo6Z2V0OwotdXNpbmcgOjpzdGQ6OnRyMTo6bWFrZV90dXBsZTsKLXVzaW5nIDo6c3Rk
Ojp0cjE6OnR1cGxlOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQotCi11c2luZyA6OnRl
c3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVyYXRvcjsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJu
YWw6OlVuaXRUZXN0T3B0aW9uczsKLQotLy8gUHJpbnRzIGEgdmFsdWUgdG8gYSBzdHJpbmcuCi0v
LwotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHJlbW92ZSBQcmludFZhbHVlKCkgd2hlbiB3ZSBt
b3ZlIG1hdGNoZXJzIGFuZAotLy8gRVhQRUNUX1RIQVQoKSBmcm9tIEdvb2dsZSBNb2NrIHRvIEdv
b2dsZSBUZXN0LiAgQXQgdGhhdCB0aW1lLCB3ZQotLy8gY2FuIHdyaXRlIEVYUEVDVF9USEFUKHgs
IEVxKHkpKSB0byBjb21wYXJlIHR3byB0dXBsZXMgeCBhbmQgeSwgYXMKLS8vIEVYUEVDVF9USEFU
KCkgYW5kIHRoZSBtYXRjaGVycyBrbm93IGhvdyB0byBwcmludCB0dXBsZXMuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLTo6c3RkOjpzdHJpbmcgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSkgewot
ICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKLSAgc3RyZWFtIDw8IHZhbHVlOwotICByZXR1
cm4gc3RyZWFtLnN0cigpOwotfQotCi0jaWYgR1RFU1RfSEFTX0NPTUJJTkUKLQotLy8gVGhlc2Ug
b3ZlcmxvYWRzIGFsbG93IHByaW50aW5nIHR1cGxlcyBpbiBvdXIgdGVzdHMuICBXZSBjYW5ub3QK
LS8vIGRlZmluZSBhbiBvcGVyYXRvcjw8IGZvciB0dXBsZXMsIGFzIHRoYXQgZGVmaW5pdGlvbiBu
ZWVkcyB0byBiZSBpbgotLy8gdGhlIHN0ZCBuYW1lc3BhY2UgaW4gb3JkZXIgdG8gYmUgcGlja2Vk
IHVwIGJ5IEdvb2dsZSBUZXN0IHZpYQotLy8gQXJndW1lbnQtRGVwZW5kZW50IExvb2t1cCwgeWV0
IGRlZmluaW5nIGFueXRoaW5nIGluIHRoZSBzdGQKLS8vIG5hbWVzcGFjZSBpbiBub24tU1RMIGNv
ZGUgaXMgdW5kZWZpbmVkIGJlaGF2aW9yLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyPgotOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKGNvbnN0IHR1cGxlPFQxLCBUMj4mIHZh
bHVlKSB7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOwotICBzdHJlYW0gPDwgIigiIDw8
IGdldDwwPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8MT4odmFsdWUpIDw8ICIpIjsKLSAgcmV0dXJu
IHN0cmVhbS5zdHIoKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDM+Ci06OnN0ZDo6c3RyaW5nIFByaW50VmFsdWUoY29uc3QgdHVwbGU8VDEsIFQy
LCBUMz4mIHZhbHVlKSB7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOwotICBzdHJlYW0g
PDwgIigiIDw8IGdldDwwPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8MT4odmFsdWUpCi0gICAgICAg
ICA8PCAiLCAiPDwgZ2V0PDI+KHZhbHVlKSA8PCAiKSI7Ci0gIHJldHVybiBzdHJlYW0uc3RyKCk7
Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0
eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1l
IFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMD4KLTo6c3RkOjpzdHJp
bmcgUHJpbnRWYWx1ZSgKLSAgICBjb25zdCB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTA+JiB2YWx1ZSkgewotICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsK
LSAgc3RyZWFtIDw8ICIoIiA8PCBnZXQ8MD4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDE+KHZhbHVl
KQotICAgICAgICAgPDwgIiwgIjw8IGdldDwyPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8Mz4odmFs
dWUpCi0gICAgICAgICA8PCAiLCAiPDwgZ2V0PDQ+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDw1Pih2
YWx1ZSkKLSAgICAgICAgIDw8ICIsICI8PCBnZXQ8Nj4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDc+
KHZhbHVlKQotICAgICAgICAgPDwgIiwgIjw8IGdldDw4Pih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8
OT4odmFsdWUpIDw8ICIpIjsKLSAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKLX0KLQotI2VuZGlmICAv
LyBHVEVTVF9IQVNfQ09NQklORQotCi0vLyBWZXJpZmllcyB0aGF0IGEgc2VxdWVuY2UgZ2VuZXJh
dGVkIGJ5IHRoZSBnZW5lcmF0b3IgYW5kIGFjY2Vzc2VkCi0vLyB2aWEgdGhlIGl0ZXJhdG9yIG9i
amVjdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBvbmUgdXNpbmcgR29vZ2xlIFRlc3QKLS8vIGFzc2Vy
dGlvbnMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+Ci12b2lkIFZlcmlmeUdlbmVy
YXRvcihjb25zdCBQYXJhbUdlbmVyYXRvcjxUPiYgZ2VuZXJhdG9yLAotICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVCAoJmV4cGVjdGVkX3ZhbHVlcylbTl0pIHsKLSAgdHlwZW5hbWUgUGFyYW1H
ZW5lcmF0b3I8VD46Oml0ZXJhdG9yIGl0ID0gZ2VuZXJhdG9yLmJlZ2luKCk7Ci0gIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgTjsgKytpKSB7Ci0gICAgQVNTRVJUX0ZBTFNFKGl0ID09IGdlbmVyYXRv
ci5lbmQoKSkKLSAgICAgICAgPDwgIkF0IGVsZW1lbnQgIiA8PCBpIDw8ICIgd2hlbiBhY2Nlc3Np
bmcgdmlhIGFuIGl0ZXJhdG9yICIKLSAgICAgICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUgY29weSBj
b25zdHJ1Y3Rvci5cbiI7Ci0gICAgLy8gV2UgY2Fubm90IHVzZSBFWFBFQ1RfRVEoKSBoZXJlIGFz
IHRoZSB2YWx1ZXMgbWF5IGJlIHR1cGxlcywKLSAgICAvLyB3aGljaCBkb24ndCBzdXBwb3J0IDw8
LgotICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkX3ZhbHVlc1tpXSA9PSAqaXQpCi0gICAgICAgIDw8
ICJ3aGVyZSBpIGlzICIgPDwgaQotICAgICAgICA8PCAiLCBleHBlY3RlZF92YWx1ZXNbaV0gaXMg
IiA8PCBQcmludFZhbHVlKGV4cGVjdGVkX3ZhbHVlc1tpXSkKLSAgICAgICAgPDwgIiwgKml0IGlz
ICIgPDwgUHJpbnRWYWx1ZSgqaXQpCi0gICAgICAgIDw8ICIsIGFuZCAnaXQnIGlzIGFuIGl0ZXJh
dG9yIGNyZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rvci5cbiI7Ci0gICAgaXQrKzsKLSAg
fQotICBFWFBFQ1RfVFJVRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpCi0gICAgICAgIDw8ICJBdCB0
aGUgcHJlc3VtZWQgZW5kIG9mIHNlcXVlbmNlIHdoZW4gYWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRv
ciAiCi0gICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhlIGNvcHkgY29uc3RydWN0b3IuXG4iOwot
Ci0gIC8vIFRlc3QgdGhlIGl0ZXJhdG9yIGFzc2lnbm1lbnQuIFRoZSBmb2xsb3dpbmcgbGluZXMg
dmVyaWZ5IHRoYXQKLSAgLy8gdGhlIHNlcXVlbmNlIGFjY2Vzc2VkIHZpYSBhbiBpdGVyYXRvciBp
bml0aWFsaXplZCB2aWEgdGhlCi0gIC8vIGFzc2lnbm1lbnQgb3BlcmF0b3IgKGFzIG9wcG9zZWQg
dG8gYSBjb3B5IGNvbnN0cnVjdG9yKSBtYXRjaGVzCi0gIC8vIGp1c3QgdGhlIHNhbWUuCi0gIGl0
ID0gZ2VuZXJhdG9yLmJlZ2luKCk7Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgTjsgKytpKSB7
Ci0gICAgQVNTRVJUX0ZBTFNFKGl0ID09IGdlbmVyYXRvci5lbmQoKSkKLSAgICAgICAgPDwgIkF0
IGVsZW1lbnQgIiA8PCBpIDw8ICIgd2hlbiBhY2Nlc3NpbmcgdmlhIGFuIGl0ZXJhdG9yICIKLSAg
ICAgICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUgYXNzaWdubWVudCBvcGVyYXRvci5cbiI7Ci0gICAg
RVhQRUNUX1RSVUUoZXhwZWN0ZWRfdmFsdWVzW2ldID09ICppdCkKLSAgICAgICAgPDwgIndoZXJl
IGkgaXMgIiA8PCBpCi0gICAgICAgIDw8ICIsIGV4cGVjdGVkX3ZhbHVlc1tpXSBpcyAiIDw8IFBy
aW50VmFsdWUoZXhwZWN0ZWRfdmFsdWVzW2ldKQotICAgICAgICA8PCAiLCAqaXQgaXMgIiA8PCBQ
cmludFZhbHVlKCppdCkKLSAgICAgICAgPDwgIiwgYW5kICdpdCcgaXMgYW4gaXRlcmF0b3IgY3Jl
YXRlZCB3aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9yLlxuIjsKLSAgICBpdCsrOwotICB9Ci0gIEVY
UEVDVF9UUlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSkKLSAgICAgICAgPDwgIkF0IHRoZSBwcmVz
dW1lZCBlbmQgb2Ygc2VxdWVuY2Ugd2hlbiBhY2Nlc3NpbmcgdmlhIGFuIGl0ZXJhdG9yICIKLSAg
ICAgICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUgYXNzaWdubWVudCBvcGVyYXRvci5cbiI7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQ+JiBnZW5lcmF0b3IpIHsKLSAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0
b3I8VD46Oml0ZXJhdG9yIGl0ID0gZ2VuZXJhdG9yLmJlZ2luKCk7Ci0gIEVYUEVDVF9UUlVFKGl0
ID09IGdlbmVyYXRvci5lbmQoKSk7Ci0KLSAgaXQgPSBnZW5lcmF0b3IuYmVnaW4oKTsKLSAgRVhQ
RUNUX1RSVUUoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKTsKLX0KLQotLy8gR2VuZXJhdG9yIHRlc3Rz
LiBUaGV5IHRlc3QgdGhhdCBlYWNoIG9mIHRoZSBwcm92aWRlZCBnZW5lcmF0b3IgZnVuY3Rpb25z
Ci0vLyBnZW5lcmF0ZXMgYW4gZXhwZWN0ZWQgc2VxdWVuY2Ugb2YgdmFsdWVzLiBUaGUgZ2VuZXJh
bCB0ZXN0IHBhdHRlcm4KLS8vIGluc3RhbnRpYXRlcyBhIGdlbmVyYXRvciB1c2luZyBvbmUgb2Yg
dGhlIGdlbmVyYXRvciBmdW5jdGlvbnMsCi0vLyBjaGVja3MgdGhlIHNlcXVlbmNlIHByb2R1Y2Vk
IGJ5IHRoZSBnZW5lcmF0b3IgdXNpbmcgaXRzIGl0ZXJhdG9yIEFQSSwKLS8vIGFuZCB0aGVuIHJl
c2V0cyB0aGUgaXRlcmF0b3IgYmFjayB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZXF1ZW5jZQot
Ly8gYW5kIGNoZWNrcyB0aGUgc2VxdWVuY2UgYWdhaW4uCi0KLS8vIFRlc3RzIHRoYXQgaXRlcmF0
b3JzIHByb2R1Y2VkIGJ5IGdlbmVyYXRvciBmdW5jdGlvbnMgY29uZm9ybSB0byB0aGUKLS8vIEZv
cndhcmRJdGVyYXRvciBjb25jZXB0LgotVEVTVChJdGVyYXRvclRlc3QsIFBhcmFtSXRlcmF0b3JD
b25mb3Jtc1RvRm9yd2FyZEl0ZXJhdG9yQ29uY2VwdCkgewotICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDEwKTsKLSAgUGFyYW1HZW5lcmF0b3I8aW50Pjo6aXRlcmF0
b3IgaXQgPSBnZW4uYmVnaW4oKTsKLQotICAvLyBWZXJpZmllcyB0aGF0IGl0ZXJhdG9yIGluaXRp
YWxpemF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkLgotICBQYXJhbUdlbmVyYXRvcjxpbnQ+OjppdGVy
YXRvciBpdDIgPSBpdDsKLSAgRVhQRUNUX1RSVUUoKml0ID09ICppdDIpIDw8ICJJbml0aWFsaXpl
ZCBpdGVyYXRvcnMgbXVzdCBwb2ludCB0byB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgImVsZW1lbnQgc2FtZSBhcyBpdHMgc291cmNlIHBvaW50cyB0byI7Ci0KLSAgLy8gVmVy
aWZpZXMgdGhhdCBpdGVyYXRvciBhc3NpZ25tZW50IHdvcmtzIGFzIGV4cGVjdGVkLgotICBpdCsr
OwotICBFWFBFQ1RfRkFMU0UoKml0ID09ICppdDIpOwotICBpdDIgPSBpdDsKLSAgRVhQRUNUX1RS
VUUoKml0ID09ICppdDIpIDw8ICJBc3NpZ25lZCBpdGVyYXRvcnMgbXVzdCBwb2ludCB0byB0aGUg
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgImVsZW1lbnQgc2FtZSBhcyBpdHMgc291
cmNlIHBvaW50cyB0byI7Ci0KLSAgLy8gVmVyaWZpZXMgdGhhdCBwcmVmaXggb3BlcmF0b3IrKygp
IHJldHVybnMgKnRoaXMuCi0gIEVYUEVDVF9FUSgmaXQsICYoKytpdCkpIDw8ICJSZXN1bHQgb2Yg
dGhlIHByZWZpeCBvcGVyYXRvcisrIG11c3QgYmUgIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCAicmVmZXIgdG8gdGhlIG9yaWdpbmFsIG9iamVjdCI7Ci0KLSAgLy8gVmVyaWZpZXMgdGhh
dCB0aGUgcmVzdWx0IG9mIHRoZSBwb3N0Zml4IG9wZXJhdG9yKysgcG9pbnRzIHRvIHRoZSB2YWx1
ZQotICAvLyBwb2ludGVkIHRvIGJ5IHRoZSBvcmlnaW5hbCBpdGVyYXRvci4KLSAgaW50IG9yaWdp
bmFsX3ZhbHVlID0gKml0OyAgLy8gSGF2ZSB0byBjb21wdXRlIGl0IG91dHNpZGUgb2YgbWFjcm8g
Y2FsbCB0byBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1bmFmZmVjdGVkIGJ5
IHRoZSBwYXJhbWV0ZXIgZXZhbHVhdGlvbiBvcmRlci4KLSAgRVhQRUNUX0VRKG9yaWdpbmFsX3Zh
bHVlLCAqKGl0KyspKTsKLQotICAvLyBWZXJpZmllcyB0aGF0IHByZWZpeCBhbmQgcG9zdGZpeCBv
cGVyYXRvcisrKCkgYWR2YW5jZSBhbiBpdGVyYXRvcgotICAvLyBhbGwgdGhlIHNhbWUuCi0gIGl0
MiA9IGl0OwotICBpdCsrOwotICArK2l0MjsKLSAgRVhQRUNUX1RSVUUoKml0ID09ICppdDIpOwot
fQotCi0vLyBUZXN0cyB0aGF0IFJhbmdlKCkgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5j
ZS4KLVRFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZVdpdGhEZWZhdWx0U3RlcCkgewotICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDMpOwotICBjb25zdCBpbnQgZXhwZWN0
ZWRfdmFsdWVzW10gPSB7MCwgMSwgMn07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVk
X3ZhbHVlcyk7Ci19Ci0KLS8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBSYW5nZSgpIGdlbmVyYXRl
cyB0aGUgc2luZ2xlIGVsZW1lbnQgc2VxdWVuY2UKLS8vIGFzIGV4cGVjdGVkIHdoZW4gcHJvdmlk
ZWQgd2l0aCByYW5nZSBsaW1pdHMgdGhhdCBhcmUgZXF1YWwuCi1URVNUKFJhbmdlVGVzdCwgSW50
UmFuZ2VTaW5nbGVWYWx1ZSkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJh
bmdlKDAsIDEpOwotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MH07Ci0gIFZlcmlm
eUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIEVkZ2UgY2FzZS4gVGVz
dHMgdGhhdCBSYW5nZSgpIHdpdGggZ2VuZXJhdGVzIGVtcHR5IHNlcXVlbmNlIHdoZW4KLS8vIHN1
cHBsaWVkIHdpdGggYW4gZW1wdHkgcmFuZ2UuCi1URVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VFbXB0
eSkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDApOwotICBW
ZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUmFuZ2UoKSB3
aXRoIGN1c3RvbSBzdGVwIChncmVhdGVyIHRoZW4gb25lKSBnZW5lcmF0ZXMKLS8vIHRoZSBleHBl
Y3RlZCBzZXF1ZW5jZS4KLVRFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZVdpdGhDdXN0b21TdGVwKSB7
Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgOSwgMyk7Ci0gIGNv
bnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHswLCAzLCA2fTsKLSAgVmVyaWZ5R2VuZXJhdG9y
KGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBSYW5nZSgpIHdpdGgg
Y3VzdG9tIHN0ZXAgKGdyZWF0ZXIgdGhlbiBvbmUpIGdlbmVyYXRlcwotLy8gdGhlIGV4cGVjdGVk
IHNlcXVlbmNlIHdoZW4gdGhlIGxhc3QgZWxlbWVudCBkb2VzIG5vdCBmYWxsIG9uIHRoZQotLy8g
dXBwZXIgcmFuZ2UgbGltaXQuIFNlcXVlbmNlcyBnZW5lcmF0ZWQgYnkgUmFuZ2UoKSBtdXN0IG5v
dCBoYXZlCi0vLyBlbGVtZW50cyBiZXlvbmQgdGhlIHJhbmdlIGxpbWl0cy4KLVRFU1QoUmFuZ2VU
ZXN0LCBJbnRSYW5nZVdpdGhDdXN0b21TdGVwT3ZlclVwcGVyQm91bmQpIHsKLSAgY29uc3QgUGFy
YW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCA0LCAzKTsKLSAgY29uc3QgaW50IGV4cGVj
dGVkX3ZhbHVlc1tdID0gezAsIDN9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92
YWx1ZXMpOwotfQotCi0vLyBWZXJpZmllcyB0aGF0IFJhbmdlIHdvcmtzIHdpdGggdXNlci1kZWZp
bmVkIHR5cGVzIHRoYXQgZGVmaW5lCi0vLyBjb3B5IGNvbnN0cnVjdG9yLCBvcGVyYXRvcj0oKSwg
b3BlcmF0b3IrKCksIGFuZCBvcGVyYXRvcjwoKS4KLWNsYXNzIERvZ0FkZGVyIHsKLSBwdWJsaWM6
Ci0gIGV4cGxpY2l0IERvZ0FkZGVyKGNvbnN0IGNoYXIqIGFfdmFsdWUpIDogdmFsdWVfKGFfdmFs
dWUpIHt9Ci0gIERvZ0FkZGVyKGNvbnN0IERvZ0FkZGVyJiBvdGhlcikgOiB2YWx1ZV8ob3RoZXIu
dmFsdWVfLmNfc3RyKCkpIHt9Ci0KLSAgRG9nQWRkZXIgb3BlcmF0b3I9KGNvbnN0IERvZ0FkZGVy
JiBvdGhlcikgewotICAgIGlmICh0aGlzICE9ICZvdGhlcikKLSAgICAgIHZhbHVlXyA9IG90aGVy
LnZhbHVlXzsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLSAgRG9nQWRkZXIgb3BlcmF0b3IrKGNv
bnN0IERvZ0FkZGVyJiBvdGhlcikgY29uc3QgewotICAgIE1lc3NhZ2UgbXNnOwotICAgIG1zZyA8
PCB2YWx1ZV8uY19zdHIoKSA8PCBvdGhlci52YWx1ZV8uY19zdHIoKTsKLSAgICByZXR1cm4gRG9n
QWRkZXIobXNnLkdldFN0cmluZygpLmNfc3RyKCkpOwotICB9Ci0gIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IERvZ0FkZGVyJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiB2YWx1ZV8gPCBvdGhlci52
YWx1ZV87Ci0gIH0KLSAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nJiB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQotCi0gcHJpdmF0ZToKLSAgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6U3RyaW5nIHZhbHVlXzsKLX07Ci0KLVRFU1QoUmFuZ2VUZXN0LCBXb3Jrc1dpdGhBQ3Vz
dG9tVHlwZSkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxEb2dBZGRlcj4gZ2VuID0KLSAgICAg
IFJhbmdlKERvZ0FkZGVyKCJjYXQiKSwgRG9nQWRkZXIoImNhdGRvZ2RvZyIpLCBEb2dBZGRlcigi
ZG9nIikpOwotICBQYXJhbUdlbmVyYXRvcjxEb2dBZGRlcj46Oml0ZXJhdG9yIGl0ID0gZ2VuLmJl
Z2luKCk7Ci0KLSAgQVNTRVJUX0ZBTFNFKGl0ID09IGdlbi5lbmQoKSk7Ci0gIEVYUEVDVF9TVFJF
USgiY2F0IiwgaXQtPnZhbHVlKCkuY19zdHIoKSk7Ci0KLSAgQVNTRVJUX0ZBTFNFKCsraXQgPT0g
Z2VuLmVuZCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJjYXRkb2ciLCBpdC0+dmFsdWUoKS5jX3N0cigp
KTsKLQotICBFWFBFQ1RfVFJVRSgrK2l0ID09IGdlbi5lbmQoKSk7Ci19Ci0KLWNsYXNzIEludFdy
YXBwZXIgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgSW50V3JhcHBlcihpbnQgYV92YWx1ZSkgOiB2
YWx1ZV8oYV92YWx1ZSkge30KLSAgSW50V3JhcHBlcihjb25zdCBJbnRXcmFwcGVyJiBvdGhlcikg
OiB2YWx1ZV8ob3RoZXIudmFsdWVfKSB7fQotCi0gIEludFdyYXBwZXIgb3BlcmF0b3I9KGNvbnN0
IEludFdyYXBwZXImIG90aGVyKSB7Ci0gICAgdmFsdWVfID0gb3RoZXIudmFsdWVfOwotICAgIHJl
dHVybiAqdGhpczsKLSAgfQotICAvLyBvcGVyYXRvcisoKSBhZGRzIGEgZGlmZmVyZW50IHR5cGUu
Ci0gIEludFdyYXBwZXIgb3BlcmF0b3IrKGludCBvdGhlcikgY29uc3QgeyByZXR1cm4gSW50V3Jh
cHBlcih2YWx1ZV8gKyBvdGhlcik7IH0KLSAgYm9vbCBvcGVyYXRvcjwoY29uc3QgSW50V3JhcHBl
ciYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gdmFsdWVfIDwgb3RoZXIudmFsdWVfOwotICB9
Ci0gIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQotCi0gcHJpdmF0ZToKLSAg
aW50IHZhbHVlXzsKLX07Ci0KLVRFU1QoUmFuZ2VUZXN0LCBXb3Jrc1dpdGhBQ3VzdG9tVHlwZVdp
dGhEaWZmZXJlbnRJbmNyZW1lbnRUeXBlKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPEludFdy
YXBwZXI+IGdlbiA9IFJhbmdlKEludFdyYXBwZXIoMCksIEludFdyYXBwZXIoMikpOwotICBQYXJh
bUdlbmVyYXRvcjxJbnRXcmFwcGVyPjo6aXRlcmF0b3IgaXQgPSBnZW4uYmVnaW4oKTsKLQotICBB
U1NFUlRfRkFMU0UoaXQgPT0gZ2VuLmVuZCgpKTsKLSAgRVhQRUNUX0VRKDAsIGl0LT52YWx1ZSgp
KTsKLQotICBBU1NFUlRfRkFMU0UoKytpdCA9PSBnZW4uZW5kKCkpOwotICBFWFBFQ1RfRVEoMSwg
aXQtPnZhbHVlKCkpOwotCi0gIEVYUEVDVF9UUlVFKCsraXQgPT0gZ2VuLmVuZCgpKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIHdpdGggYW4gYXJyYXkgcGFyYW1ldGVyIGdlbmVyYXRl
cwotLy8gdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgotVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0lu
QXJyYXkpIHsKLSAgaW50IGFycmF5W10gPSB7MywgNSwgOH07Ci0gIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPGludD4gZ2VuID0gVmFsdWVzSW4oYXJyYXkpOwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBh
cnJheSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSB3aXRoIGEgY29uc3QgYXJyYXkg
cGFyYW1ldGVyIGdlbmVyYXRlcwotLy8gdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgotVEVTVChWYWx1
ZXNJblRlc3QsIFZhbHVlc0luQ29uc3RBcnJheSkgewotICBjb25zdCBpbnQgYXJyYXlbXSA9IHsz
LCA1LCA4fTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbihhcnJh
eSk7Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGFycmF5KTsKLX0KLQotLy8gRWRnZSBjYXNlLiBU
ZXN0cyB0aGF0IFZhbHVlc0luKCkgd2l0aCBhbiBhcnJheSBwYXJhbWV0ZXIgY29udGFpbmluZyBh
Ci0vLyBzaW5nbGUgZWxlbWVudCBnZW5lcmF0ZXMgdGhlIHNpbmdsZSBlbGVtZW50IHNlcXVlbmNl
LgotVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luU2luZ2xlRWxlbWVudEFycmF5KSB7Ci0gIGlu
dCBhcnJheVtdID0gezQyfTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1
ZXNJbihhcnJheSk7Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGFycmF5KTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBWYWx1ZXNJbigpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UgZm9yIGFu
IFNUTAotLy8gY29udGFpbmVyICh2ZWN0b3IpLgotVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0lu
VmVjdG9yKSB7Ci0gIHR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxpbnQ+IENvbnRhaW5lclR5cGU7Ci0g
IENvbnRhaW5lclR5cGUgdmFsdWVzOwotICB2YWx1ZXMucHVzaF9iYWNrKDMpOwotICB2YWx1ZXMu
cHVzaF9iYWNrKDUpOwotICB2YWx1ZXMucHVzaF9iYWNrKDgpOwotICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVlcyk7Ci0KLSAgY29uc3QgaW50IGV4cGVjdGVk
X3ZhbHVlc1tdID0gezMsIDUsIDh9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92
YWx1ZXMpOwotfQotCi0vLyBUZXN0cyB0aGF0IFZhbHVlc0luKCkgZ2VuZXJhdGVzIHRoZSBleHBl
Y3RlZCBzZXF1ZW5jZS4KLVRFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJbkl0ZXJhdG9yUmFuZ2Up
IHsKLSAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGludD4gQ29udGFpbmVyVHlwZTsKLSAgQ29udGFp
bmVyVHlwZSB2YWx1ZXM7Ci0gIHZhbHVlcy5wdXNoX2JhY2soMyk7Ci0gIHZhbHVlcy5wdXNoX2Jh
Y2soNSk7Ci0gIHZhbHVlcy5wdXNoX2JhY2soOCk7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGlu
dD4gZ2VuID0gVmFsdWVzSW4odmFsdWVzLmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7Ci0KLSAgY29u
c3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezMsIDUsIDh9OwotICBWZXJpZnlHZW5lcmF0b3Io
Z2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgVmFs
dWVzSW4oKSBwcm92aWRlZCB3aXRoIGFuIGl0ZXJhdG9yIHJhbmdlIHNwZWNpZnlpbmcgYQotLy8g
c2luZ2xlIHZhbHVlIGdlbmVyYXRlcyBhIHNpbmdsZS1lbGVtZW50IHNlcXVlbmNlLgotVEVTVChW
YWx1ZXNJblRlc3QsIFZhbHVlc0luU2luZ2xlRWxlbWVudEl0ZXJhdG9yUmFuZ2UpIHsKLSAgdHlw
ZWRlZiA6OnN0ZDo6dmVjdG9yPGludD4gQ29udGFpbmVyVHlwZTsKLSAgQ29udGFpbmVyVHlwZSB2
YWx1ZXM7Ci0gIHZhbHVlcy5wdXNoX2JhY2soNDIpOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxp
bnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCkpOwotCi0gIGNv
bnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHs0Mn07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4s
IGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBWYWx1ZXNJ
bigpIHByb3ZpZGVkIHdpdGggYW4gZW1wdHkgaXRlcmF0b3IgcmFuZ2UKLS8vIGdlbmVyYXRlcyBh
biBlbXB0eSBzZXF1ZW5jZS4KLVRFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJbkVtcHR5SXRlcmF0
b3JSYW5nZSkgewotICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8aW50PiBDb250YWluZXJUeXBlOwot
ICBDb250YWluZXJUeXBlIHZhbHVlczsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4g
PSBWYWx1ZXNJbih2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKLQotICBWZXJpZnlHZW5l
cmF0b3JJc0VtcHR5KGdlbik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIFZhbHVlcygpIGdlbmVy
YXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCi1URVNUKFZhbHVlc1Rlc3QsIFZhbHVlc1dvcmtz
KSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzKDMsIDUsIDgpOwot
Ci0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHszLCA1LCA4fTsKLSAgVmVyaWZ5R2Vu
ZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBWYWx1ZXMo
KSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlcyBmcm9tIGVsZW1lbnRzIG9mCi0vLyBk
aWZmZXJlbnQgdHlwZXMgY29udmVydGlibGUgdG8gUGFyYW1HZW5lcmF0b3IncyBwYXJhbWV0ZXIg
dHlwZS4KLVRFU1QoVmFsdWVzVGVzdCwgVmFsdWVzV29ya3NGb3JWYWx1ZXNPZkNvbXBhdGlibGVU
eXBlcykgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxkb3VibGU+IGdlbiA9IFZhbHVlcygzLCA1
LjBmLCA4LjApOwotCi0gIGNvbnN0IGRvdWJsZSBleHBlY3RlZF92YWx1ZXNbXSA9IHszLjAsIDUu
MCwgOC4wfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQot
VEVTVChWYWx1ZXNUZXN0LCBWYWx1ZXNXb3Jrc0Zvck1heExlbmd0aExpc3QpIHsKLSAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXMoCi0gICAgICAxMCwgMjAsIDMwLCA0MCwg
NTAsIDYwLCA3MCwgODAsIDkwLCAxMDAsCi0gICAgICAxMTAsIDEyMCwgMTMwLCAxNDAsIDE1MCwg
MTYwLCAxNzAsIDE4MCwgMTkwLCAyMDAsCi0gICAgICAyMTAsIDIyMCwgMjMwLCAyNDAsIDI1MCwg
MjYwLCAyNzAsIDI4MCwgMjkwLCAzMDAsCi0gICAgICAzMTAsIDMyMCwgMzMwLCAzNDAsIDM1MCwg
MzYwLCAzNzAsIDM4MCwgMzkwLCA0MDAsCi0gICAgICA0MTAsIDQyMCwgNDMwLCA0NDAsIDQ1MCwg
NDYwLCA0NzAsIDQ4MCwgNDkwLCA1MDApOwotCi0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNb
XSA9IHsKLSAgICAgIDEwLCAyMCwgMzAsIDQwLCA1MCwgNjAsIDcwLCA4MCwgOTAsIDEwMCwKLSAg
ICAgIDExMCwgMTIwLCAxMzAsIDE0MCwgMTUwLCAxNjAsIDE3MCwgMTgwLCAxOTAsIDIwMCwKLSAg
ICAgIDIxMCwgMjIwLCAyMzAsIDI0MCwgMjUwLCAyNjAsIDI3MCwgMjgwLCAyOTAsIDMwMCwKLSAg
ICAgIDMxMCwgMzIwLCAzMzAsIDM0MCwgMzUwLCAzNjAsIDM3MCwgMzgwLCAzOTAsIDQwMCwKLSAg
ICAgIDQxMCwgNDIwLCA0MzAsIDQ0MCwgNDUwLCA0NjAsIDQ3MCwgNDgwLCA0OTAsIDUwMH07Ci0g
IFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIEVkZ2UgY2Fz
ZSB0ZXN0LiBUZXN0cyB0aGF0IHNpbmdsZS1wYXJhbWV0ZXIgVmFsdWVzKCkgZ2VuZXJhdGVzIHRo
ZSBzZXF1ZW5jZQotLy8gd2l0aCB0aGUgc2luZ2xlIHZhbHVlLgotVEVTVChWYWx1ZXNUZXN0LCBW
YWx1ZXNXaXRoU2luZ2xlUGFyYW1ldGVyKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4g
Z2VuID0gVmFsdWVzKDQyKTsKLQotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7NDJ9
OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBUZXN0
cyB0aGF0IEJvb2woKSBnZW5lcmF0ZXMgc2VxdWVuY2UgKGZhbHNlLCB0cnVlKS4KLVRFU1QoQm9v
bFRlc3QsIEJvb2xXb3JrcykgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxib29sPiBnZW4gPSBC
b29sKCk7Ci0KLSAgY29uc3QgYm9vbCBleHBlY3RlZF92YWx1ZXNbXSA9IHtmYWxzZSwgdHJ1ZX07
Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLSNpZiBHVEVT
VF9IQVNfQ09NQklORQotCi0vLyBUZXN0cyB0aGF0IENvbWJpbmUoKSB3aXRoIHR3byBwYXJhbWV0
ZXJzIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCi1URVNUKENvbWJpbmVUZXN0LCBD
b21iaW5lV2l0aFR3b1BhcmFtZXRlcnMpIHsKLSAgY29uc3QgY2hhciogZm9vID0gImZvbyI7Ci0g
IGNvbnN0IGNoYXIqIGJhciA9ICJiYXIiOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxj
b25zdCBjaGFyKiwgaW50PiA+IGdlbiA9Ci0gICAgICBDb21iaW5lKFZhbHVlcyhmb28sIGJhciks
IFZhbHVlcygzLCA0KSk7Ci0KLSAgdHVwbGU8Y29uc3QgY2hhciosIGludD4gZXhwZWN0ZWRfdmFs
dWVzW10gPSB7Ci0gICAgbWFrZV90dXBsZShmb28sIDMpLCBtYWtlX3R1cGxlKGZvbywgNCksCi0g
ICAgbWFrZV90dXBsZShiYXIsIDMpLCBtYWtlX3R1cGxlKGJhciwgNCl9OwotICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBUZXN0cyB0aGF0IENvbWJpbmUo
KSB3aXRoIHRocmVlIHBhcmFtZXRlcnMgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4K
LVRFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoVGhyZWVQYXJhbWV0ZXJzKSB7Ci0gIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1
ZXMoMCwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWx1ZXMoMywgNCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNSwgNikpOwotICB0dXBsZTxp
bnQsIGludCwgaW50PiBleHBlY3RlZF92YWx1ZXNbXSA9IHsKLSAgICBtYWtlX3R1cGxlKDAsIDMs
IDUpLCBtYWtlX3R1cGxlKDAsIDMsIDYpLAotICAgIG1ha2VfdHVwbGUoMCwgNCwgNSksIG1ha2Vf
dHVwbGUoMCwgNCwgNiksCi0gICAgbWFrZV90dXBsZSgxLCAzLCA1KSwgbWFrZV90dXBsZSgxLCAz
LCA2KSwKLSAgICBtYWtlX3R1cGxlKDEsIDQsIDUpLCBtYWtlX3R1cGxlKDEsIDQsIDYpfTsKLSAg
VmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCB0aGUgQ29tYmluZSgpIHdpdGggdGhlIGZpcnN0IHBhcmFtZXRlciBnZW5lcmF0aW5nIGEgc2lu
Z2xlIHZhbHVlCi0vLyBzZXF1ZW5jZSBnZW5lcmF0ZXMgYSBzZXF1ZW5jZSB3aXRoIHRoZSBudW1i
ZXIgb2YgZWxlbWVudHMgZXF1YWwgdG8gdGhlCi0vLyBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhl
IHNlcXVlbmNlIGdlbmVyYXRlZCBieSB0aGUgc2Vjb25kIHBhcmFtZXRlci4KLVRFU1QoQ29tYmlu
ZVRlc3QsIENvbWJpbmVXaXRoRmlyc3RQYXJhbWV0ZXJTaW5nbGVWYWx1ZSkgewotICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcyg0Miks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsdWVzKDAsIDEpKTsKLQotICB0dXBsZTxpbnQsIGludD4gZXhwZWN0ZWRfdmFsdWVzW10gPSB7
bWFrZV90dXBsZSg0MiwgMCksIG1ha2VfdHVwbGUoNDIsIDEpfTsKLSAgVmVyaWZ5R2VuZXJhdG9y
KGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgQ29tYmluZSgp
IHdpdGggdGhlIHNlY29uZCBwYXJhbWV0ZXIgZ2VuZXJhdGluZyBhIHNpbmdsZSB2YWx1ZQotLy8g
c2VxdWVuY2UgZ2VuZXJhdGVzIGEgc2VxdWVuY2Ugd2l0aCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRz
IGVxdWFsIHRvIHRoZQotLy8gbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBzZXF1ZW5jZSBnZW5l
cmF0ZWQgYnkgdGhlIGZpcnN0IHBhcmFtZXRlci4KLVRFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVX
aXRoU2Vjb25kUGFyYW1ldGVyU2luZ2xlVmFsdWUpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8
dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoMCwgMSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDQyKSk7
Ci0KLSAgdHVwbGU8aW50LCBpbnQ+IGV4cGVjdGVkX3ZhbHVlc1tdID0ge21ha2VfdHVwbGUoMCwg
NDIpLCBtYWtlX3R1cGxlKDEsIDQyKX07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVk
X3ZhbHVlcyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgd2hlbiB0aGUgZmlyc3QgcGFyYW1ldGVyIHBy
b2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLAotLy8gQ29tYmluZSgpIHByb2R1Y2VzIGFuIGVtcHR5
IHNlcXVlbmNlLCB0b28uCi1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aEZpcnN0UGFyYW1l
dGVyRW1wdHlSYW5nZSkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludD4g
PiBnZW4gPSBDb21iaW5lKFJhbmdlKDAsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygwLCAxKSk7Ci0gIFZlcmlmeUdlbmVy
YXRvcklzRW1wdHkoZ2VuKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB3aGVuIHRoZSBzZWNvbmQgcGFy
YW1ldGVyIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLAotLy8gQ29tYmluZSgpIHByb2R1Y2Vz
IGFuIGVtcHR5IHNlcXVlbmNlLCB0b28uCi1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFNl
Y29uZFBhcmFtZXRlckVtcHR5UmFuZ2UpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8
aW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoMCwgMSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2UoMSwgMSkpOwotICBW
ZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7Ci19Ci0KLS8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhh
dCBjb21iaW5lIHdvcmtzIHdpdGggdGhlIG1heGltdW0gbnVtYmVyCi0vLyBvZiBwYXJhbWV0ZXJz
IHN1cHBvcnRlZCBieSBHb29nbGUgVGVzdCAoY3VycmVudGx5IDEwKS4KLVRFU1QoQ29tYmluZVRl
c3QsIENvbWJpbmVXaXRoTWF4TnVtYmVyT2ZQYXJhbWV0ZXJzKSB7Ci0gIGNvbnN0IGNoYXIqIGZv
byA9ICJmb28iOwotICBjb25zdCBjaGFyKiBiYXIgPSAiYmFyIjsKLSAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8dHVwbGU8Y29uc3QgY2hhciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBpbnQ+ID4gZ2VuID0gQ29tYmlu
ZShWYWx1ZXMoZm9vLCBiYXIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbHVlcygxKSwgVmFsdWVzKDIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygzKSwgVmFsdWVz
KDQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcyg1KSwgVmFsdWVzKDYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg3KSwgVmFsdWVzKDgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg5KSk7
Ci0KLSAgdHVwbGU8Y29uc3QgY2hhciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQ+Ci0gICAgICBleHBlY3RlZF92YWx1ZXNbXSA9IHttYWtlX3R1cGxlKGZvbywg
MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBt
YWtlX3R1cGxlKGJhciwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSl9OwotICBWZXJpZnlHZW5l
cmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19D
T01CSU5FCi0KLS8vIFRlc3RzIHRoYXQgYW4gZ2VuZXJhdG9yIHByb2R1Y2VzIGNvcnJlY3Qgc2Vx
dWVuY2UgYWZ0ZXIgYmVpbmcKLS8vIGFzc2lnbmVkIGZyb20gYW5vdGhlciBnZW5lcmF0b3IuCi1U
RVNUKFBhcmFtR2VuZXJhdG9yVGVzdCwgQXNzaWdubWVudFdvcmtzKSB7Ci0gIFBhcmFtR2VuZXJh
dG9yPGludD4gZ2VuID0gVmFsdWVzKDEsIDIpOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+
IGdlbjIgPSBWYWx1ZXMoMywgNCk7Ci0gIGdlbiA9IGdlbjI7Ci0KLSAgY29uc3QgaW50IGV4cGVj
dGVkX3ZhbHVlc1tdID0gezMsIDR9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92
YWx1ZXMpOwotfQotCi0vLyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgdGVzdHMgYXJlIGV4
cGFuZGVkIGFuZCBydW4gYXMgc3BlY2lmaWVkOgotLy8gb25lIHRlc3QgcGVyIGVsZW1lbnQgZnJv
bSB0aGUgc2VxdWVuY2UgcHJvZHVjZWQgYnkgdGhlIGdlbmVyYXRvcgotLy8gc3BlY2lmaWVkIGlu
IElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QLiBJdCBhbHNvIHZlcmlmaWVzIHRoYXQgdGhlIHRlc3Qn
cwotLy8gZml4dHVyZSBjb25zdHJ1Y3RvciwgU2V0VXAoKSwgYW5kIFRlYXJEb3duKCkgaGF2ZSBy
dW4gYW5kIGhhdmUgYmVlbgotLy8gc3VwcGxpZWQgd2l0aCB0aGUgY29ycmVjdCBwYXJhbWV0ZXJz
LgotCi0vLyBUaGUgdXNlIG9mIGVudmlyb25tZW50IG9iamVjdCBhbGxvd3MgZGV0ZWN0aW9uIG9m
IHRoZSBjYXNlIHdoZXJlIG5vIHRlc3QKLS8vIGNhc2UgZnVuY3Rpb25hbGl0eSBpcyBydW4gYXQg
YWxsLiBJbiB0aGlzIGNhc2UgVGVzdENhc2VUZWFyRG93biB3aWxsIG5vdAotLy8gYmUgYWJsZSB0
byBkZXRlY3QgbWlzc2luZyB0ZXN0cywgbmF0dXJhbGx5LgotdGVtcGxhdGUgPGludCBrRXhwZWN0
ZWRDYWxscz4KLWNsYXNzIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpFbnZpcm9ubWVudCB7Ci0gcHVibGljOgotICBzdGF0aWMgVGVzdEdlbmVyYXRpb25FbnZp
cm9ubWVudCogSW5zdGFuY2UoKSB7Ci0gICAgc3RhdGljIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1l
bnQqIGluc3RhbmNlID0gbmV3IFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQ7Ci0gICAgcmV0dXJu
IGluc3RhbmNlOwotICB9Ci0KLSAgdm9pZCBGaXh0dXJlQ29uc3RydWN0b3JFeGVjdXRlZCgpIHsg
Zml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3VudF8rKzsgfQotICB2b2lkIFNldFVwRXhlY3V0ZWQoKSB7
IHNldF91cF9jb3VudF8rKzsgfQotICB2b2lkIFRlYXJEb3duRXhlY3V0ZWQoKSB7IHRlYXJfZG93
bl9jb3VudF8rKzsgfQotICB2b2lkIFRlc3RCb2R5RXhlY3V0ZWQoKSB7IHRlc3RfYm9keV9jb3Vu
dF8rKzsgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICAvLyBJZiBhbGwgTXVs
dGlwbGVUZXN0R2VuZXJhdGlvblRlc3QgdGVzdHMgaGF2ZSBiZWVuIGRlLXNlbGVjdGVkCi0gICAg
Ly8gYnkgdGhlIGZpbHRlciBmbGFnLCB0aGUgZm9sbG93aW5nIGNoZWNrcyBtYWtlIG5vIHNlbnNl
LgotICAgIGJvb2wgcGVyZm9ybV9jaGVjayA9IGZhbHNlOwotCi0gICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBrRXhwZWN0ZWRDYWxsczsgKytpKSB7Ci0gICAgICBNZXNzYWdlIG1zZzsKLSAgICAgIG1z
ZyA8PCAiVGVzdHNFeHBhbmRlZEFuZFJ1bi8iIDw8IGk7Ci0gICAgICBpZiAoVW5pdFRlc3RPcHRp
b25zOjpGaWx0ZXJNYXRjaGVzVGVzdCgKLSAgICAgICAgICAgICAiVGVzdEV4cGFuc2lvbk1vZHVs
ZS9NdWx0aXBsZVRlc3RHZW5lcmF0aW9uVGVzdCIsCi0gICAgICAgICAgICAgIG1zZy5HZXRTdHJp
bmcoKS5jX3N0cigpKSkgewotICAgICAgICBwZXJmb3JtX2NoZWNrID0gdHJ1ZTsKLSAgICAgIH0K
LSAgICB9Ci0gICAgaWYgKHBlcmZvcm1fY2hlY2spIHsKLSAgICAgIEVYUEVDVF9FUShrRXhwZWN0
ZWRDYWxscywgZml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3VudF8pCi0gICAgICAgICAgPDwgIkZpeHR1
cmUgY29uc3RydWN0b3Igb2YgUGFyYW1UZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlICIKLSAg
ICAgICAgICA8PCAiaGFzIG5vdCBiZWVuIHJ1biBhcyBleHBlY3RlZC4iOwotICAgICAgRVhQRUNU
X0VRKGtFeHBlY3RlZENhbGxzLCBzZXRfdXBfY291bnRfKQotICAgICAgICAgIDw8ICJGaXh0dXJl
IFNldFVwIG1ldGhvZCBvZiBQYXJhbVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgotICAg
ICAgICAgIDw8ICJoYXMgbm90IGJlZW4gcnVuIGFzIGV4cGVjdGVkLiI7Ci0gICAgICBFWFBFQ1Rf
RVEoa0V4cGVjdGVkQ2FsbHMsIHRlYXJfZG93bl9jb3VudF8pCi0gICAgICAgICAgPDwgIkZpeHR1
cmUgVGVhckRvd24gbWV0aG9kIG9mIFBhcmFtVGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZSAi
Ci0gICAgICAgICAgPDwgImhhcyBub3QgYmVlbiBydW4gYXMgZXhwZWN0ZWQuIjsKLSAgICAgIEVY
UEVDVF9FUShrRXhwZWN0ZWRDYWxscywgdGVzdF9ib2R5X2NvdW50XykKLSAgICAgICAgICA8PCAi
VGVzdCBpbiBQYXJhbVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgotICAgICAgICAgIDw8
ICJoYXMgbm90IGJlZW4gcnVuIGFzIGV4cGVjdGVkLiI7Ci0gICAgfQotICB9Ci0gcHJpdmF0ZToK
LSAgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudCgpIDogZml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3Vu
dF8oMCksIHNldF91cF9jb3VudF8oMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlYXJfZG93bl9jb3VudF8oMCksIHRlc3RfYm9keV9jb3VudF8oMCkge30KLQotICBpbnQgZml4
dHVyZV9jb25zdHJ1Y3Rvcl9jb3VudF87Ci0gIGludCBzZXRfdXBfY291bnRfOwotICBpbnQgdGVh
cl9kb3duX2NvdW50XzsKLSAgaW50IHRlc3RfYm9keV9jb3VudF87Ci0KLSAgR1RFU1RfRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50KTsKLX07Ci0KLWNv
bnN0IGludCB0ZXN0X2dlbmVyYXRpb25fcGFyYW1zW10gPSB7MzYsIDQyLCA3Mn07Ci0KLWNsYXNz
IFRlc3RHZW5lcmF0aW9uVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4gewotIHB1Ymxp
YzoKLSAgZW51bSB7Ci0gICAgUEFSQU1FVEVSX0NPVU5UID0KLSAgICAgICAgc2l6ZW9mKHRlc3Rf
Z2VuZXJhdGlvbl9wYXJhbXMpL3NpemVvZih0ZXN0X2dlbmVyYXRpb25fcGFyYW1zWzBdKQotICB9
OwotCi0gIHR5cGVkZWYgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVudDxQQVJBTUVURVJfQ09VTlQ+
IEVudmlyb25tZW50OwotCi0gIFRlc3RHZW5lcmF0aW9uVGVzdCgpIHsKLSAgICBFbnZpcm9ubWVu
dDo6SW5zdGFuY2UoKS0+Rml4dHVyZUNvbnN0cnVjdG9yRXhlY3V0ZWQoKTsKLSAgICBjdXJyZW50
X3BhcmFtZXRlcl8gPSBHZXRQYXJhbSgpOwotICB9Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsK
LSAgICBFbnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+U2V0VXBFeGVjdXRlZCgpOwotICAgIEVYUEVD
VF9FUShjdXJyZW50X3BhcmFtZXRlcl8sIEdldFBhcmFtKCkpOwotICB9Ci0gIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsKLSAgICBFbnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+VGVhckRvd25FeGVj
dXRlZCgpOwotICAgIEVYUEVDVF9FUShjdXJyZW50X3BhcmFtZXRlcl8sIEdldFBhcmFtKCkpOwot
ICB9Ci0KLSAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKLSAgICBib29sIGFsbF90ZXN0
c19pbl90ZXN0X2Nhc2Vfc2VsZWN0ZWQgPSB0cnVlOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBQQVJBTUVURVJfQ09VTlQ7ICsraSkgewotICAgICAgTWVzc2FnZSB0ZXN0X25hbWU7Ci0gICAg
ICB0ZXN0X25hbWUgPDwgIlRlc3RzRXhwYW5kZWRBbmRSdW4vIiA8PCBpOwotICAgICAgaWYgKCAh
VW5pdFRlc3RPcHRpb25zOjpGaWx0ZXJNYXRjaGVzVGVzdCgKLSAgICAgICAgICAgICAgICAiVGVz
dEV4cGFuc2lvbk1vZHVsZS9NdWx0aXBsZVRlc3RHZW5lcmF0aW9uVGVzdCIsCi0gICAgICAgICAg
ICAgICAgdGVzdF9uYW1lLkdldFN0cmluZygpKSkgewotICAgICAgICBhbGxfdGVzdHNfaW5fdGVz
dF9jYXNlX3NlbGVjdGVkID0gZmFsc2U7Ci0gICAgICB9Ci0gICAgfQotICAgIEVYUEVDVF9UUlVF
KGFsbF90ZXN0c19pbl90ZXN0X2Nhc2Vfc2VsZWN0ZWQpCi0gICAgICAgIDw8ICJXaGVuIHJ1bm5p
bmcgdGhlIFRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgYWxsIG9mIGl0cyB0ZXN0c1xuIgot
ICAgICAgICA8PCAibXVzdCBiZSBzZWxlY3RlZCBieSB0aGUgZmlsdGVyIGZsYWcgZm9yIHRoZSB0
ZXN0IGNhc2UgdG8gcGFzcy5cbiIKLSAgICAgICAgPDwgIklmIG5vdCBhbGwgb2YgdGhlbSBhcmUg
ZW5hYmxlZCwgd2UgY2FuJ3QgcmVsaWFibHkgY29uY2x1ZGVcbiIKLSAgICAgICAgPDwgInRoYXQg
dGhlIGNvcnJlY3QgbnVtYmVyIG9mIHRlc3RzIGhhdmUgYmVlbiBnZW5lcmF0ZWQuIjsKLQotICAg
IGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5jbGVhcigpOwotICB9Ci0KLSAgc3RhdGljIHZvaWQgVGVh
ckRvd25UZXN0Q2FzZSgpIHsKLSAgICB2ZWN0b3I8aW50PiBleHBlY3RlZF92YWx1ZXModGVzdF9n
ZW5lcmF0aW9uX3BhcmFtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9n
ZW5lcmF0aW9uX3BhcmFtcyArIFBBUkFNRVRFUl9DT1VOVCk7Ci0gICAgLy8gVGVzdCBleGVjdXRp
b24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQgYnkgR29vZ2xlIFRlc3QsCi0gICAgLy8gc28gdGhl
IG9yZGVyIG9mIHZhbHVlcyBpbiBjb2xsZWN0ZWRfcGFyYW1ldGVyc18gY2FuIGJlCi0gICAgLy8g
ZGlmZmVyZW50IGFuZCB3ZSBoYXZlIHRvIHNvcnQgdG8gY29tcGFyZS4KLSAgICBzb3J0KGV4cGVj
dGVkX3ZhbHVlcy5iZWdpbigpLCBleHBlY3RlZF92YWx1ZXMuZW5kKCkpOwotICAgIHNvcnQoY29s
bGVjdGVkX3BhcmFtZXRlcnNfLmJlZ2luKCksIGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5lbmQoKSk7
Ci0KLSAgICBFWFBFQ1RfVFJVRShjb2xsZWN0ZWRfcGFyYW1ldGVyc18gPT0gZXhwZWN0ZWRfdmFs
dWVzKTsKLSAgfQotIHByb3RlY3RlZDoKLSAgaW50IGN1cnJlbnRfcGFyYW1ldGVyXzsKLSAgc3Rh
dGljIHZlY3RvcjxpbnQ+IGNvbGxlY3RlZF9wYXJhbWV0ZXJzXzsKLQotIHByaXZhdGU6Ci0gIEdU
RVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdEdlbmVyYXRpb25UZXN0KTsKLX07Ci12
ZWN0b3I8aW50PiBUZXN0R2VuZXJhdGlvblRlc3Q6OmNvbGxlY3RlZF9wYXJhbWV0ZXJzXzsKLQot
VEVTVF9QKFRlc3RHZW5lcmF0aW9uVGVzdCwgVGVzdHNFeHBhbmRlZEFuZFJ1bikgewotICBFbnZp
cm9ubWVudDo6SW5zdGFuY2UoKS0+VGVzdEJvZHlFeGVjdXRlZCgpOwotICBFWFBFQ1RfRVEoY3Vy
cmVudF9wYXJhbWV0ZXJfLCBHZXRQYXJhbSgpKTsKLSAgY29sbGVjdGVkX3BhcmFtZXRlcnNfLnB1
c2hfYmFjayhHZXRQYXJhbSgpKTsKLX0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFRlc3RFeHBh
bnNpb25Nb2R1bGUsIFRlc3RHZW5lcmF0aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IFZhbHVlc0luKHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMpKTsKLQotLy8gVGhpcyB0ZXN0IHZlcmlm
aWVzIHRoYXQgdGhlIGVsZW1lbnQgc2VxdWVuY2UgKHRoaXJkIHBhcmFtZXRlciBvZgotLy8gSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1ApIGlzIGV2YWx1YXRlZCBpbiBJbml0R29vZ2xlVGVzdCgpIGFu
ZCBuZWl0aGVyIGF0Ci0vLyB0aGUgY2FsbCBzaXRlIG9mIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
IG5vciBpbiBSVU5fQUxMX1RFU1RTKCkuICBGb3IKLS8vIHRoYXQsIHdlIGRlY2xhcmUgcGFyYW1f
dmFsdWVfIHRvIGJlIGEgc3RhdGljIG1lbWJlciBvZgotLy8gR2VuZXJhdG9yRXZhbHVhdGlvblRl
c3QgYW5kIGluaXRpYWxpemUgaXQgdG8gMC4gIFdlIHNldCBpdCB0byAxIGluCi0vLyBtYWluKCks
IGp1c3QgYmVmb3JlIGludm9jYXRpb24gb2YgSW5pdEdvb2dsZVRlc3QoKS4gIEFmdGVyIGNhbGxp
bmcKLS8vIEluaXRHb29nbGVUZXN0KCksIHdlIHNldCB0aGUgdmFsdWUgdG8gMi4gIElmIHRoZSBz
ZXF1ZW5jZSBpcyBldmFsdWF0ZWQKLS8vIGJlZm9yZSBvciBhZnRlciBJbml0R29vZ2xlVGVzdCwg
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1Agd2lsbCBjcmVhdGUgYQotLy8gdGVzdCB3aXRoIHBhcmFt
ZXRlciBvdGhlciB0aGFuIDEsIGFuZCB0aGUgdGVzdCBib2R5IHdpbGwgZmFpbCB0aGUKLS8vIGFz
c2VydGlvbi4KLWNsYXNzIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0IDogcHVibGljIFRlc3RXaXRo
UGFyYW08aW50PiB7Ci0gcHVibGljOgotICBzdGF0aWMgaW50IHBhcmFtX3ZhbHVlKCkgeyByZXR1
cm4gcGFyYW1fdmFsdWVfOyB9Ci0gIHN0YXRpYyB2b2lkIHNldF9wYXJhbV92YWx1ZShpbnQgcGFy
YW1fdmFsdWUpIHsgcGFyYW1fdmFsdWVfID0gcGFyYW1fdmFsdWU7IH0KLQotIHByaXZhdGU6Ci0g
IHN0YXRpYyBpbnQgcGFyYW1fdmFsdWVfOwotfTsKLWludCBHZW5lcmF0b3JFdmFsdWF0aW9uVGVz
dDo6cGFyYW1fdmFsdWVfID0gMDsKLQotVEVTVF9QKEdlbmVyYXRvckV2YWx1YXRpb25UZXN0LCBH
ZW5lcmF0b3JzRXZhbHVhdGVkSW5NYWluKSB7Ci0gIEVYUEVDVF9FUSgxLCBHZXRQYXJhbSgpKTsK
LX0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEdlbkV2YWxNb2R1bGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcyhHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6cGFyYW1fdmFsdWUoKSkpOwotCi0v
LyBUZXN0cyB0aGF0IGdlbmVyYXRvcnMgZGVmaW5lZCBpbiBhIGRpZmZlcmVudCB0cmFuc2xhdGlv
biB1bml0IGFyZQotLy8gZnVuY3Rpb25hbC4gR2VuZXJhdG9yIGV4dGVybl9nZW4gaXMgZGVmaW5l
ZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QyLmNjLgotZXh0ZXJuIFBhcmFtR2VuZXJhdG9yPGlu
dD4gZXh0ZXJuX2dlbjsKLWNsYXNzIEV4dGVybmFsR2VuZXJhdG9yVGVzdCA6IHB1YmxpYyBUZXN0
V2l0aFBhcmFtPGludD4ge307Ci1URVNUX1AoRXh0ZXJuYWxHZW5lcmF0b3JUZXN0LCBFeHRlcm5h
bEdlbmVyYXRvcikgewotICAvLyBTZXF1ZW5jZSBwcm9kdWNlZCBieSBleHRlcm5fZ2VuIGNvbnRh
aW5zIG9ubHkgYSBzaW5nbGUgdmFsdWUKLSAgLy8gd2hpY2ggd2UgdmVyaWZ5IGhlcmUuCi0gIEVY
UEVDVF9FUShHZXRQYXJhbSgpLCAzMyk7Ci19Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUChFeHRl
cm5hbEdlbmVyYXRvck1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVybmFsR2Vu
ZXJhdG9yVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybl9nZW4pOwotCi0vLyBU
ZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGRlZmluZWQgaW4gb25l
IHRyYW5zbGF0aW9uCi0vLyB1bml0IGFuZCBpbnN0YW50aWF0ZWQgaW4gYW5vdGhlci4gVGhpcyB0
ZXN0IHdpbGwgYmUgaW5zdGFudGlhdGVkIGluCi0vLyBndGVzdC1wYXJhbS10ZXN0X3Rlc3QyLmNj
LiBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0IGZpeHR1cmUgY2xhc3MgaXMKLS8vIGRlZmluZWQg
aW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmguCi1URVNUX1AoRXh0ZXJuYWxJbnN0YW50aWF0aW9u
VGVzdCwgSXNNdWx0aXBsZU9mMzMpIHsKLSAgRVhQRUNUX0VRKDAsIEdldFBhcmFtKCkgJSAzMyk7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgaW5z
dGFudGlhdGVkIHdpdGggbXVsdGlwbGUKLS8vIGdlbmVyYXRvcnMuCi1jbGFzcyBNdWx0aXBsZUlu
c3RhbnRpYXRpb25UZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7fTsKLVRFU1RfUChN
dWx0aXBsZUluc3RhbnRpYXRpb25UZXN0LCBBbGxvd3NNdWx0aXBsZUluc3RhbmNlcykgewotfQot
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2UxLCBNdWx0aXBsZUluc3RhbnRpYXRpb25U
ZXN0LCBWYWx1ZXMoMSwgMikpOwotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2UyLCBN
dWx0aXBsZUluc3RhbnRpYXRpb25UZXN0LCBSYW5nZSgzLCA1KSk7Ci0KLS8vIFRlc3RzIHRoYXQg
YSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgaW5zdGFudGlhdGVkCi0vLyBpbiBtdWx0
aXBsZSB0cmFuc2xhdGlvbiB1bml0cy4gVGhpcyB0ZXN0IHdpbGwgYmUgaW5zdGFudGlhdGVkCi0v
LyBoZXJlIGFuZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QyLmNjLgotLy8gSW5zdGFudGlhdGlv
bkluTXVsdGlwbGVUcmFuc2xhdGlvblVuaXRzVGVzdCBmaXh0dXJlIGNsYXNzCi0vLyBpcyBkZWZp
bmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oLgotVEVTVF9QKEluc3RhbnRpYXRpb25Jbk11
bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCwgSXNNdWx0aXBsZU9mNDIpIHsKLSAgRVhQRUNUX0VR
KDAsIEdldFBhcmFtKCkgJSA0Mik7Ci19Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5j
ZTEsCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5z
bGFpb25Vbml0c1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNDIsIDQyKjIp
KTsKLQotLy8gVGVzdHMgdGhhdCBlYWNoIGl0ZXJhdGlvbiBvZiBwYXJhbWV0ZXJpemVkIHRlc3Qg
cnVucyBpbiBhIHNlcGFyYXRlIHRlc3QKLS8vIG9iamVjdC4KLWNsYXNzIFNlcGFyYXRlSW5zdGFu
Y2VUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7Ci0gcHVibGljOgotICBTZXBhcmF0
ZUluc3RhbmNlVGVzdCgpIDogY291bnRfKDApIHt9Ci0KLSAgc3RhdGljIHZvaWQgVGVhckRvd25U
ZXN0Q2FzZSgpIHsKLSAgICBFWFBFQ1RfR0UoZ2xvYmFsX2NvdW50XywgMikKLSAgICAgICAgPDwg
IklmIHNvbWUgKGJ1dCBub3QgYWxsKSBTZXBhcmF0ZUluc3RhbmNlVGVzdCB0ZXN0cyBoYXZlIGJl
ZW4gIgotICAgICAgICA8PCAiZmlsdGVyZWQgb3V0IHRoaXMgdGVzdCB3aWxsIGZhaWwuIE1ha2Ug
c3VyZSB0aGF0IGFsbCAiCi0gICAgICAgIDw8ICJHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCBhcmUg
c2VsZWN0ZWQgb3IgZGUtc2VsZWN0ZWQgdG9nZXRoZXIgIgotICAgICAgICA8PCAiYnkgdGhlIHRl
c3QgZmlsdGVyLiI7Ci0gIH0KLQotIHByb3RlY3RlZDoKLSAgaW50IGNvdW50XzsKLSAgc3RhdGlj
IGludCBnbG9iYWxfY291bnRfOwotfTsKLWludCBTZXBhcmF0ZUluc3RhbmNlVGVzdDo6Z2xvYmFs
X2NvdW50XyA9IDA7Ci0KLVRFU1RfUChTZXBhcmF0ZUluc3RhbmNlVGVzdCwgVGVzdHNSdW5JblNl
cGFyYXRlSW5zdGFuY2VzKSB7Ci0gIEVYUEVDVF9FUSgwLCBjb3VudF8rKyk7Ci0gIGdsb2JhbF9j
b3VudF8rKzsKLX0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEZvdXJFbGVtU2VxdWVuY2UsIFNl
cGFyYXRlSW5zdGFuY2VUZXN0LCBSYW5nZSgxLCA0KSk7Ci0KLS8vIFRlc3RzIHRoYXQgYWxsIGlu
c3RhbnRpYXRpb25zIG9mIGEgdGVzdCBoYXZlIG5hbWVkIGFwcHJvcHJpYXRlbHkuIFRlc3QKLS8v
IGRlZmluZWQgd2l0aCBURVNUX1AoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSkgYW5kIGluc3RhbnRp
YXRlZCB3aXRoCi0vLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5jZU5hbWUsIFRlc3RD
YXNlTmFtZSwgZ2VuZXJhdG9yKSBtdXN0IGJlIG5hbWVkCi0vLyBTZXF1ZW5jZU5hbWUvVGVzdENh
c2VOYW1lLlRlc3ROYW1lL2ksIHdoZXJlIGkgaXMgdGhlIDAtYmFzZWQgaW5kZXggb2YgdGhlCi0v
LyBzZXF1ZW5jZSBlbGVtZW50IHVzZWQgdG8gaW5zdGFudGlhdGUgdGhlIHRlc3QuCi1jbGFzcyBO
YW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7fTsKLQotVEVTVF9QKE5hbWlu
Z1Rlc3QsIFRlc3RzQXJlTmFtZWRBcHByb3ByaWF0ZWx5KSB7Ci0gIGNvbnN0IDo6dGVzdGluZzo6
VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9Ci0gICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6Okdl
dEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7Ci0KLSAgRVhQRUNUX1NUUkVRKCJaZXJv
VG9GaXZlU2VxdWVuY2UvTmFtaW5nVGVzdCIsIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7
Ci0KLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCAiVGVzdHNBcmVOYW1lZEFwcHJvcHJpYXRlbHkv
IiA8PCBHZXRQYXJhbSgpOwotICBFWFBFQ1RfU1RSRVEobXNnLkdldFN0cmluZygpLmNfc3RyKCks
IHRlc3RfaW5mby0+bmFtZSgpKTsKLX0KLQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoWmVyb1Rv
Rml2ZVNlcXVlbmNlLCBOYW1pbmdUZXN0LCBSYW5nZSgwLCA1KSk7Ci0KLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX1BBUkFNX1RFU1QKLQotVEVTVChDb21waWxlVGVzdCwgQ29tYmluZUlzRGVmaW5lZE9u
bHlXaGVuR3Rlc3RIYXNQYXJhbVRlc3RJc0RlZmluZWQpIHsKLSNpZiBHVEVTVF9IQVNfQ09NQklO
RSAmJiAhR1RFU1RfSEFTX1BBUkFNX1RFU1QKLSAgRkFJTCgpIDw8ICJHVEVTVF9IQVNfQ09NQklO
RSBpcyBkZWZpbmVkIHdoaWxlIEdURVNUX0hBU19QQVJBTV9URVNUIGlzIG5vdFxuIgotI2VuZGlm
Ci19Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotI2lmIEdURVNUX0hBU19Q
QVJBTV9URVNUCi0gIC8vIFVzZWQgaW4gVGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZS4KLSAg
QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KFRlc3RHZW5lcmF0aW9uVGVzdDo6RW52aXJvbm1lbnQ6
Okluc3RhbmNlKCkpOwotICAvLyBVc2VkIGluIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0IHRlc3Qg
Y2FzZS4gVGVzdHMgdGhhdCB0aGUgdXBkYXRlZCB2YWx1ZQotICAvLyB3aWxsIGJlIHBpY2tlZCB1
cCBmb3IgaW5zdGFudGlhdGluZyB0ZXN0cyBpbiBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdC4KLSAg
R2VuZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnNldF9wYXJhbV92YWx1ZSgxKTsKLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdj
LCBhcmd2KTsKLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0gIC8vIFVzZWQgaW4gR2VuZXJh
dG9yRXZhbHVhdGlvblRlc3QgdGVzdCBjYXNlLiBUZXN0cyB0aGF0IHZhbHVlIHVwZGF0ZWQKLSAg
Ly8gaGVyZSB3aWxsIE5PVCBiZSB1c2VkIGZvciBpbnN0YW50aWF0aW5nIHRlc3RzIGluCi0gIC8v
IEdlbmVyYXRvckV2YWx1YXRpb25UZXN0LgotICBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6c2V0
X3BhcmFtX3ZhbHVlKDIpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi0gIHJl
dHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYjdmOTQ5MzYxMzdkZmM1ZjNmMmQ1N2ZhNDBkY2FmN2ExNWNiNmI1ZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTUg
KzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
Ly8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8K
LS8vIEF1dGhvcnM6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0vLwotLy8gVGhlIEdv
b2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQotLy8KLS8vIFRoaXMgaGVh
ZGVyIGZpbGUgcHJvdmlkZXMgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIHVzZWQgaW50ZXJuYWxseQot
Ly8gZm9yIHRlc3RpbmcgR29vZ2xlIFRlc3QgaXRzZWxmLgotCi0jaWZuZGVmIEdURVNUX1RFU1Rf
R1RFU1RfUEFSQU1fVEVTVF9URVNUX0hfCi0jZGVmaW5lIEdURVNUX1RFU1RfR1RFU1RfUEFSQU1f
VEVTVF9URVNUX0hfCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0jaWYgR1RFU1RfSEFT
X1BBUkFNX1RFU1QKLQotLy8gVGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIGRlZmluaXRpb24gYW5k
IGluc3RhbnRpYXRpb24gb2YgYSB0ZXN0Ci0vLyBpbiBzZXBhcmF0ZSB0cmFuc2xhdGlvbiB1bml0
cy4KLWNsYXNzIEV4dGVybmFsSW5zdGFudGlhdGlvblRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0V2l0aFBhcmFtPGludD4ge307Ci0KLS8vIFRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyBpbnN0
YW50aWF0aW9uIG9mIGEgdGVzdCBpbiBtdWx0aXBsZQotLy8gdHJhbnNsYXRpb24gdW5pdHMuCi1j
bGFzcyBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QKLSAgICA6IHB1
YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7fTsKLQotI2VuZGlmICAvLyBHVEVT
VF9IQVNfUEFSQU1fVEVTVAotCi0jZW5kaWYgIC8vIEdURVNUX1RFU1RfR1RFU1RfUEFSQU1fVEVT
VF9URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
LXBvcnRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcG9ydF90
ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzI1ODYwMmZhNWNmNWE3Nzk5
NDdjZDQyN2UyMGU5MDlmYzkyNThkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtcG9ydF90ZXN0
LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTAxOCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwg
R29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0v
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczogdmxhZGxAZ29vZ2xlLmNv
bSAoVmxhZCBMb3NldiksIHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGhp
cyBmaWxlIHRlc3RzIHRoZSBpbnRlcm5hbCBjcm9zcy1wbGF0Zm9ybSBzdXBwb3J0IHV0aWxpdGll
cy4KLQotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4KLQotI2luY2x1ZGUg
PHN0ZGlvLmg+Ci0KLSNpZiBHVEVTVF9PU19NQUMKLSNpbmNsdWRlIDx0aW1lLmg+Ci0jZW5kaWYg
IC8vIEdURVNUX09TX01BQwotCi0jaW5jbHVkZSA8dXRpbGl0eT4gIC8vIEZvciBzdGQ6OnBhaXIg
YW5kIHN0ZDo6bWFrZV9wYWlyLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC1zcGkuaD4KLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlv
biB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBt
dXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3Ig
dGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJl
dmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlu
bC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNp
bmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5U
QVRJT05fCi0KLXVzaW5nIHN0ZDo6bWFrZV9wYWlyOwotdXNpbmcgc3RkOjpwYWlyOwotCi1uYW1l
c3BhY2UgdGVzdGluZyB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBUZXN0cyB0aGF0IHRo
ZSBlbGVtZW50X3R5cGUgdHlwZWRlZiBpcyBhdmFpbGFibGUgaW4gc2NvcGVkX3B0ciBhbmQgcmVm
ZXJzCi0vLyB0byB0aGUgcGFyYW1ldGVyIHR5cGUuCi1URVNUKFNjb3BlZFB0clRlc3QsIERlZmlu
ZXNFbGVtZW50VHlwZSkgewotICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50LCA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpzY29wZWRfcHRyPGludD46OmVsZW1lbnRfdHlwZT4oKTsKLX0KLQotLy8gVE9ETyh2
bGFkbEBnb29nbGUuY29tKTogSW1wbGVtZW50IFRIRSBSRVNUIG9mIHNjb3BlZF9wdHIgdGVzdHMu
Ci0KLVRFU1QoR3Rlc3RDaGVja1N5bnRheFRlc3QsIEJlaGF2ZXNMaWtlQVNpbmdsZVN0YXRlbWVu
dCkgewotICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAgICBHVEVTVF9DSEVDS18oZmFsc2UpIDw8ICJU
aGlzIHNob3VsZCBuZXZlciBiZSBleGVjdXRlZDsgIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkl0J3MgYSBjb21waWxhdGlvbiB0ZXN0IG9ubHkuIjsKLQotICBpZiAoQWx3YXlzVHJ1ZSgp
KQotICAgIEdURVNUX0NIRUNLXyh0cnVlKTsKLSAgZWxzZQotICAgIDsgIC8vIE5PTElOVAotCi0g
IGlmIChBbHdheXNGYWxzZSgpKQotICAgIDsgIC8vIE5PTElOVAotICBlbHNlCi0gICAgR1RFU1Rf
Q0hFQ0tfKHRydWUpIDw8ICIiOwotfQotCi1URVNUKEd0ZXN0Q2hlY2tTeW50YXhUZXN0LCBXb3Jr
c1dpdGhTd2l0Y2gpIHsKLSAgc3dpdGNoICgwKSB7Ci0gICAgY2FzZSAxOgotICAgICAgYnJlYWs7
Ci0gICAgZGVmYXVsdDoKLSAgICAgIEdURVNUX0NIRUNLXyh0cnVlKTsKLSAgfQotCi0gIHN3aXRj
aCgwKQotICAgIGNhc2UgMDoKLSAgICAgIEdURVNUX0NIRUNLXyh0cnVlKSA8PCAiQ2hlY2sgZmFp
bGVkIGluIHN3aXRjaCBjYXNlIjsKLX0KLQotI2lmIEdURVNUX09TX01BQwotdm9pZCogVGhyZWFk
RnVuYyh2b2lkKiBkYXRhKSB7Ci0gIHB0aHJlYWRfbXV0ZXhfdCogbXV0ZXggPSBzdGF0aWNfY2Fz
dDxwdGhyZWFkX211dGV4X3QqPihkYXRhKTsKLSAgcHRocmVhZF9tdXRleF9sb2NrKG11dGV4KTsK
LSAgcHRocmVhZF9tdXRleF91bmxvY2sobXV0ZXgpOwotICByZXR1cm4gTlVMTDsKLX0KLQotVEVT
VChHZXRUaHJlYWRDb3VudFRlc3QsIFJldHVybnNDb3JyZWN0VmFsdWUpIHsKLSAgRVhQRUNUX0VR
KDFVLCBHZXRUaHJlYWRDb3VudCgpKTsKLSAgcHRocmVhZF9tdXRleF90IG11dGV4OwotICBwdGhy
ZWFkX2F0dHJfdCAgYXR0cjsKLSAgcHRocmVhZF90ICAgICAgIHRocmVhZF9pZDsKLQotICAvLyBU
T0RPKHZsYWRsQGdvb2dsZS5jb20pOiB0dXJuIG11dGV4IGludG8gaW50ZXJuYWw6Ok11dGV4IGZv
ciBhdXRvbWF0aWMKLSAgLy8gZGVzdHJ1Y3Rpb24uCi0gIHB0aHJlYWRfbXV0ZXhfaW5pdCgmbXV0
ZXgsIE5VTEwpOwotICBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4KTsKLSAgQVNTRVJUX0VRKDAs
IHB0aHJlYWRfYXR0cl9pbml0KCZhdHRyKSk7Ci0gIEFTU0VSVF9FUSgwLCBwdGhyZWFkX2F0dHJf
c2V0ZGV0YWNoc3RhdGUoJmF0dHIsIFBUSFJFQURfQ1JFQVRFX0pPSU5BQkxFKSk7Ci0KLSAgY29u
c3QgaW50IHN0YXR1cyA9IHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRfaWQsICZhdHRyLCAmVGhyZWFk
RnVuYywgJm11dGV4KTsKLSAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXR0cl9kZXN0cm95KCZhdHRy
KSk7Ci0gIEFTU0VSVF9FUSgwLCBzdGF0dXMpOwotICBFWFBFQ1RfRVEoMlUsIEdldFRocmVhZENv
dW50KCkpOwotICBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXgpOwotCi0gIHZvaWQqIGR1bW15
OwotICBBU1NFUlRfRVEoMCwgcHRocmVhZF9qb2luKHRocmVhZF9pZCwgJmR1bW15KSk7Ci0KLSAg
Ly8gTWFjT1MgWCBtYXkgbm90IGltbWVkaWF0ZWx5IHJlcG9ydCB0aGUgdXBkYXRlZCB0aHJlYWQg
Y291bnQgYWZ0ZXIKLSAgLy8gam9pbmluZyBhIHRocmVhZCwgY2F1c2luZyBmbGFraW5lc3MgaW4g
dGhpcyB0ZXN0LiBUbyBjb3VudGVyIHRoYXQsIHdlCi0gIC8vIHdhaXQgZm9yIHVwIHRvIC41IHNl
Y29uZHMgZm9yIHRoZSBPUyB0byByZXBvcnQgdGhlIGNvcnJlY3QgdmFsdWUuCi0gIGZvciAoaW50
IGkgPSAwOyBpIDwgNTsgKytpKSB7Ci0gICAgaWYgKEdldFRocmVhZENvdW50KCkgPT0gMSkKLSAg
ICAgIGJyZWFrOwotCi0gICAgU2xlZXBNaWxsaXNlY29uZHMoMTAwKTsKLSAgfQotICBFWFBFQ1Rf
RVEoMVUsIEdldFRocmVhZENvdW50KCkpOwotICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm11dGV4
KTsKLX0KLSNlbHNlCi1URVNUKEdldFRocmVhZENvdW50VGVzdCwgUmV0dXJuc1plcm9XaGVuVW5h
YmxlVG9Db3VudFRocmVhZHMpIHsKLSAgRVhQRUNUX0VRKDBVLCBHZXRUaHJlYWRDb3VudCgpKTsK
LX0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfTUFDCi0KLVRFU1QoR3Rlc3RDaGVja0RlYXRoVGVzdCwg
RGllc1dpdGhDb3JyZWN0T3V0cHV0T25GYWlsdXJlKSB7Ci0gIGNvbnN0IGJvb2wgYV9mYWxzZV9j
b25kaXRpb24gPSBmYWxzZTsKLSAgY29uc3QgY2hhciByZWdleFtdID0KLSNpZmRlZiBfTVNDX1ZF
UgotICAgICAiZ3Rlc3QtcG9ydF90ZXN0XFwuY2NcXChcXGQrXFwpOiIKLSNlbHNlCi0gICAgICJn
dGVzdC1wb3J0X3Rlc3RcXC5jYzpbMC05XSsiCi0jZW5kaWYgIC8vIF9NU0NfVkVSCi0gICAgICIu
KmFfZmFsc2VfY29uZGl0aW9uLipFeHRyYSBpbmZvLioiOwotCi0gIEVYUEVDVF9ERUFUSF9JRl9T
VVBQT1JURUQoR1RFU1RfQ0hFQ0tfKGFfZmFsc2VfY29uZGl0aW9uKSA8PCAiRXh0cmEgaW5mbyIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXgpOwotfQotCi0jaWYgR1RFU1RfSEFT
X0RFQVRIX1RFU1QKLQotVEVTVChHdGVzdENoZWNrRGVhdGhUZXN0LCBMaXZlc1NpbGVudGx5T25T
dWNjZXNzKSB7Ci0gIEVYUEVDVF9FWElUKHsKLSAgICAgIEdURVNUX0NIRUNLXyh0cnVlKSA8PCAi
RXh0cmEgaW5mbyI7Ci0gICAgICA6OnN0ZDo6Y2VyciA8PCAiU3VjY2Vzc1xuIjsKLSAgICAgIGV4
aXQoMCk7IH0sCi0gICAgICA6OnRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApLCAiU3VjY2VzcyIp
OwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLSNpZiBHVEVTVF9VU0VT
X1BPU0lYX1JFCi0KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgU3RyPgotY2xhc3MgUkVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKLQotLy8g
RGVmaW5lcyBTdHJpbmdUeXBlcyBhcyB0aGUgbGlzdCBvZiBhbGwgc3RyaW5nIHR5cGVzIHRoYXQg
Y2xhc3MgUkUKLS8vIHN1cHBvcnRzLgotdHlwZWRlZiB0ZXN0aW5nOjpUeXBlczwKLSAgICA6OnN0
ZDo6c3RyaW5nLAotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0gICAgOjpzdHJpbmcsCi0j
ZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0gICAgY29uc3QgY2hhcio+IFN0cmlu
Z1R5cGVzOwotCi1UWVBFRF9URVNUX0NBU0UoUkVUZXN0LCBTdHJpbmdUeXBlcyk7Ci0KLS8vIFRl
c3RzIFJFJ3MgaW1wbGljaXQgY29uc3RydWN0b3JzLgotVFlQRURfVEVTVChSRVRlc3QsIEltcGxp
Y2l0Q29uc3RydWN0b3JXb3JrcykgewotICBjb25zdCBSRSBlbXB0eShUeXBlUGFyYW0oIiIpKTsK
LSAgRVhQRUNUX1NUUkVRKCIiLCBlbXB0eS5wYXR0ZXJuKCkpOwotCi0gIGNvbnN0IFJFIHNpbXBs
ZShUeXBlUGFyYW0oImhlbGxvIikpOwotICBFWFBFQ1RfU1RSRVEoImhlbGxvIiwgc2ltcGxlLnBh
dHRlcm4oKSk7Ci0KLSAgY29uc3QgUkUgbm9ybWFsKFR5cGVQYXJhbSgiLiooXFx3KykiKSk7Ci0g
IEVYUEVDVF9TVFJFUSgiLiooXFx3KykiLCBub3JtYWwucGF0dGVybigpKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBSRSdzIGNvbnN0cnVjdG9ycyByZWplY3QgaW52YWxpZCByZWd1bGFyIGV4cHJlc3Np
b25zLgotVFlQRURfVEVTVChSRVRlc3QsIFJlamVjdHNJbnZhbGlkUmVnZXgpIHsKLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoewotICAgIGNvbnN0IFJFIGludmFsaWQoVHlwZVBhcmFtKCI/Iikp
OwotICB9LCAiXCI/XCIgaXMgbm90IGEgdmFsaWQgUE9TSVggRXh0ZW5kZWQgcmVndWxhciBleHBy
ZXNzaW9uLiIpOwotfQotCi0vLyBUZXN0cyBSRTo6RnVsbE1hdGNoKCkuCi1UWVBFRF9URVNUKFJF
VGVzdCwgRnVsbE1hdGNoV29ya3MpIHsKLSAgY29uc3QgUkUgZW1wdHkoVHlwZVBhcmFtKCIiKSk7
Ci0gIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCIiKSwgZW1wdHkpKTsKLSAg
RVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJhIiksIGVtcHR5KSk7Ci0KLSAg
Y29uc3QgUkUgcmUoVHlwZVBhcmFtKCJhLip6IikpOwotICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1h
dGNoKFR5cGVQYXJhbSgiYXoiKSwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaChU
eXBlUGFyYW0oImF4eXoiKSwgcmUpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goVHlw
ZVBhcmFtKCJiYXoiKSwgcmUpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goVHlwZVBh
cmFtKCJhenkiKSwgcmUpKTsKLX0KLQotLy8gVGVzdHMgUkU6OlBhcnRpYWxNYXRjaCgpLgotVFlQ
RURfVEVTVChSRVRlc3QsIFBhcnRpYWxNYXRjaFdvcmtzKSB7Ci0gIGNvbnN0IFJFIGVtcHR5KFR5
cGVQYXJhbSgiIikpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgi
IiksIGVtcHR5KSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCJh
IiksIGVtcHR5KSk7Ci0KLSAgY29uc3QgUkUgcmUoVHlwZVBhcmFtKCJhLip6IikpOwotICBFWFBF
Q1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiYXoiKSwgcmUpKTsKLSAgRVhQRUNU
X1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oImF4eXoiKSwgcmUpKTsKLSAgRVhQRUNU
X1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBlUGFyYW0oImJheiIpLCByZSkpOwotICBFWFBFQ1Rf
VFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiYXp5IiksIHJlKSk7Ci0gIEVYUEVDVF9G
QUxTRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgienphIiksIHJlKSk7Ci19Ci0KLSNlbmRp
ZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QKLQotI2VsaWYgR1RFU1RfVVNFU19TSU1QTEVfUkUK
LQotVEVTVChJc0luU2V0VGVzdCwgTnVsQ2hhcklzTm90SW5BbnlTZXQpIHsKLSAgRVhQRUNUX0ZB
TFNFKElzSW5TZXQoJ1wwJywgIiIpKTsKLSAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ1wwJywgIlww
IikpOwotICBFWFBFQ1RfRkFMU0UoSXNJblNldCgnXDAnLCAiYSIpKTsKLX0KLQotVEVTVChJc0lu
U2V0VGVzdCwgV29ya3NGb3JOb25OdWxDaGFycykgewotICBFWFBFQ1RfRkFMU0UoSXNJblNldCgn
YScsICJBYiIpKTsKLSAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ2MnLCAiIikpOwotCi0gIEVYUEVD
VF9UUlVFKElzSW5TZXQoJ2InLCAiYmNkIikpOwotICBFWFBFQ1RfVFJVRShJc0luU2V0KCdiJywg
ImFiIikpOwotfQotCi1URVNUKElzRGlnaXRUZXN0LCBJc0ZhbHNlRm9yTm9uRGlnaXQpIHsKLSAg
RVhQRUNUX0ZBTFNFKElzRGlnaXQoJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNEaWdpdCgnICcp
KTsKLSAgRVhQRUNUX0ZBTFNFKElzRGlnaXQoJysnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0RpZ2l0
KCctJykpOwotICBFWFBFQ1RfRkFMU0UoSXNEaWdpdCgnLicpKTsKLSAgRVhQRUNUX0ZBTFNFKElz
RGlnaXQoJ2EnKSk7Ci19Ci0KLVRFU1QoSXNEaWdpdFRlc3QsIElzVHJ1ZUZvckRpZ2l0KSB7Ci0g
IEVYUEVDVF9UUlVFKElzRGlnaXQoJzAnKSk7Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQoJzEnKSk7
Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQoJzUnKSk7Ci0gIEVYUEVDVF9UUlVFKElzRGlnaXQoJzkn
KSk7Ci19Ci0KLVRFU1QoSXNQdW5jdFRlc3QsIElzRmFsc2VGb3JOb25QdW5jdCkgewotICBFWFBF
Q1RfRkFMU0UoSXNQdW5jdCgnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1B1bmN0KCcgJykpOwot
ICBFWFBFQ1RfRkFMU0UoSXNQdW5jdCgnXG4nKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1B1bmN0KCdh
JykpOwotICBFWFBFQ1RfRkFMU0UoSXNQdW5jdCgnMCcpKTsKLX0KLQotVEVTVChJc1B1bmN0VGVz
dCwgSXNUcnVlRm9yUHVuY3QpIHsKLSAgZm9yIChjb25zdCBjaGFyKiBwID0gIl4tIVwiIyQlJico
KSorLC4vOjs8PT4/QFtcXF1fYHt8fX4iOyAqcDsgcCsrKSB7Ci0gICAgRVhQRUNUX1BSRUQxKElz
UHVuY3QsICpwKTsKLSAgfQotfQotCi1URVNUKElzUmVwZWF0VGVzdCwgSXNGYWxzZUZvck5vblJl
cGVhdENoYXIpIHsKLSAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCdcMCcpKTsKLSAgRVhQRUNUX0ZB
TFNFKElzUmVwZWF0KCcgJykpOwotICBFWFBFQ1RfRkFMU0UoSXNSZXBlYXQoJ2EnKSk7Ci0gIEVY
UEVDVF9GQUxTRShJc1JlcGVhdCgnMScpKTsKLSAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCctJykp
OwotfQotCi1URVNUKElzUmVwZWF0VGVzdCwgSXNUcnVlRm9yUmVwZWF0Q2hhcikgewotICBFWFBF
Q1RfVFJVRShJc1JlcGVhdCgnPycpKTsKLSAgRVhQRUNUX1RSVUUoSXNSZXBlYXQoJyonKSk7Ci0g
IEVYUEVDVF9UUlVFKElzUmVwZWF0KCcrJykpOwotfQotCi1URVNUKElzV2hpdGVTcGFjZVRlc3Qs
IElzRmFsc2VGb3JOb25XaGl0ZVNwYWNlKSB7Ci0gIEVYUEVDVF9GQUxTRShJc1doaXRlU3BhY2Uo
J1wwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNXaGl0ZVNwYWNlKCdhJykpOwotICBFWFBFQ1RfRkFM
U0UoSXNXaGl0ZVNwYWNlKCcxJykpOwotICBFWFBFQ1RfRkFMU0UoSXNXaGl0ZVNwYWNlKCcrJykp
OwotICBFWFBFQ1RfRkFMU0UoSXNXaGl0ZVNwYWNlKCdfJykpOwotfQotCi1URVNUKElzV2hpdGVT
cGFjZVRlc3QsIElzVHJ1ZUZvcldoaXRlU3BhY2UpIHsKLSAgRVhQRUNUX1RSVUUoSXNXaGl0ZVNw
YWNlKCcgJykpOwotICBFWFBFQ1RfVFJVRShJc1doaXRlU3BhY2UoJ1xuJykpOwotICBFWFBFQ1Rf
VFJVRShJc1doaXRlU3BhY2UoJ1xyJykpOwotICBFWFBFQ1RfVFJVRShJc1doaXRlU3BhY2UoJ1x0
JykpOwotICBFWFBFQ1RfVFJVRShJc1doaXRlU3BhY2UoJ1x2JykpOwotICBFWFBFQ1RfVFJVRShJ
c1doaXRlU3BhY2UoJ1xmJykpOwotfQotCi1URVNUKElzV29yZENoYXJUZXN0LCBJc0ZhbHNlRm9y
Tm9uV29yZENoYXIpIHsKLSAgRVhQRUNUX0ZBTFNFKElzV29yZENoYXIoJ1wwJykpOwotICBFWFBF
Q1RfRkFMU0UoSXNXb3JkQ2hhcignKycpKTsKLSAgRVhQRUNUX0ZBTFNFKElzV29yZENoYXIoJy4n
KSk7Ci0gIEVYUEVDVF9GQUxTRShJc1dvcmRDaGFyKCcgJykpOwotICBFWFBFQ1RfRkFMU0UoSXNX
b3JkQ2hhcignXG4nKSk7Ci19Ci0KLVRFU1QoSXNXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvckxldHRl
cikgewotICBFWFBFQ1RfVFJVRShJc1dvcmRDaGFyKCdhJykpOwotICBFWFBFQ1RfVFJVRShJc1dv
cmRDaGFyKCdiJykpOwotICBFWFBFQ1RfVFJVRShJc1dvcmRDaGFyKCdBJykpOwotICBFWFBFQ1Rf
VFJVRShJc1dvcmRDaGFyKCdaJykpOwotfQotCi1URVNUKElzV29yZENoYXJUZXN0LCBJc1RydWVG
b3JEaWdpdCkgewotICBFWFBFQ1RfVFJVRShJc1dvcmRDaGFyKCcwJykpOwotICBFWFBFQ1RfVFJV
RShJc1dvcmRDaGFyKCcxJykpOwotICBFWFBFQ1RfVFJVRShJc1dvcmRDaGFyKCc3JykpOwotICBF
WFBFQ1RfVFJVRShJc1dvcmRDaGFyKCc5JykpOwotfQotCi1URVNUKElzV29yZENoYXJUZXN0LCBJ
c1RydWVGb3JVbmRlcnNjb3JlKSB7Ci0gIEVYUEVDVF9UUlVFKElzV29yZENoYXIoJ18nKSk7Ci19
Ci0KLVRFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzRmFsc2VGb3JOb25QcmludGFibGUpIHsKLSAg
RVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNWYWxp
ZEVzY2FwZSgnXDAwNycpKTsKLX0KLQotVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZv
ckRpZ2l0KSB7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCcwJykpOwotICBFWFBFQ1Rf
RkFMU0UoSXNWYWxpZEVzY2FwZSgnOScpKTsKLX0KLQotVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwg
SXNGYWxzZUZvcldoaXRlU3BhY2UpIHsKLSAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJyAn
KSk7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdcbicpKTsKLX0KLQotVEVTVChJc1Zh
bGlkRXNjYXBlVGVzdCwgSXNGYWxzZUZvclNvbWVMZXR0ZXIpIHsKLSAgRVhQRUNUX0ZBTFNFKElz
VmFsaWRFc2NhcGUoJ2EnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdaJykpOwot
fQotCi1URVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc1RydWVGb3JQdW5jdCkgewotICBFWFBFQ1Rf
VFJVRShJc1ZhbGlkRXNjYXBlKCcuJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCct
JykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdeJykpOwotICBFWFBFQ1RfVFJVRShJ
c1ZhbGlkRXNjYXBlKCckJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCcoJykpOwot
ICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCddJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlk
RXNjYXBlKCd7JykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCd8JykpOwotfQotCi1U
RVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc1RydWVGb3JTb21lTGV0dGVyKSB7Ci0gIEVYUEVDVF9U
UlVFKElzVmFsaWRFc2NhcGUoJ2QnKSk7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ0Qn
KSk7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ3MnKSk7Ci0gIEVYUEVDVF9UUlVFKElz
VmFsaWRFc2NhcGUoJ1MnKSk7Ci0gIEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ3cnKSk7Ci0g
IEVYUEVDVF9UUlVFKElzVmFsaWRFc2NhcGUoJ1cnKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXND
aGFyVGVzdCwgRXNjYXBlZFB1bmN0KSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ1xcJywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICdcXCcsICcgJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdfJywg
Jy4nKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJy4nLCAnYScpKTsK
LQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1xcJywgJ1xcJykpOwotICBF
WFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ18nLCAnXycpKTsKLSAgRVhQRUNUX1RS
VUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICcrJywgJysnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAnLicsICcuJykpOwotfQotCi1URVNUKEF0b21NYXRjaGVzQ2hhclRl
c3QsIEVzY2FwZWRfZCkgewotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdk
JywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywgJ2En
KSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnLicpKTsKLQot
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ2QnLCAnMCcpKTsKLSAgRVhQRUNU
X1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywgJzknKSk7Ci19Ci0KLVRFU1QoQXRvbU1h
dGNoZXNDaGFyVGVzdCwgRXNjYXBlZF9EKSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ0QnLCAnMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVl
LCAnRCcsICc5JykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcs
ICdcMCcpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJ2EnKSk7
Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcsICctJykpOwotfQotCi1U
RVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfcykgewotICBFWFBFQ1RfRkFMU0UoQXRv
bU1hdGNoZXNDaGFyKHRydWUsICdzJywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNo
ZXNDaGFyKHRydWUsICdzJywgJ2EnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ3MnLCAnLicpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
cycsICc5JykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICcg
JykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnXG4nKSk7Ci0g
IEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICdcdCcpKTsKLX0KLQotVEVT
VChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX1MpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAnUycsICcgJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICdTJywgJ1xyJykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAnUycsICdcMCcpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdT
JywgJ2EnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICc5Jykp
OwotfQotCi1URVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfdykgewotICBFWFBFQ1Rf
RkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0Uo
QXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJysnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0
Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnICcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hh
cih0cnVlLCAndycsICdcbicpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ3cnLCAnMCcpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3Jywg
J2InKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdDJykpOwot
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnXycpKTsKLX0KLQotVEVT
VChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX1cpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAnVycsICdBJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICdXJywgJ2InKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ1cnLCAnOScpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycs
ICdfJykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICdcMCcp
KTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdXJywgJyonKSk7Ci0gIEVY
UEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICdcbicpKTsKLX0KLQotVEVTVChB
dG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkV2hpdGVTcGFjZSkgewotICBFWFBFQ1RfRkFMU0Uo
QXRvbU1hdGNoZXNDaGFyKHRydWUsICdmJywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICdmJywgJ1xuJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICduJywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICduJywgJ1xyJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdy
JywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdyJywgJ2En
KSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3QnLCAnXDAnKSk7Ci0g
IEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3QnLCAndCcpKTsKLSAgRVhQRUNU
X0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndicsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndicsICdcZicpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ2YnLCAnXGYnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAnbicsICdcbicpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICdyJywgJ1xyJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3Qn
LCAnXHQnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndicsICdcdicp
KTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBVbmVzY2FwZWREb3QpIHsKLSAgRVhQ
RUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4nLCAnXG4nKSk7Ci0KLSAgRVhQRUNU
X1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnLicsICdcMCcpKTsKLSAgRVhQRUNUX1RSVUUo
QXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnLicsICcuJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0
Y2hlc0NoYXIoZmFsc2UsICcuJywgJ2EnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hh
cihmYWxzZSwgJy4nLCAnICcpKTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBVbmVz
Y2FwZWRDaGFyKSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICdhJywg
J1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnYScsICdiJykp
OwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnJCcsICdhJykpOwotCi0g
IEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJyQnLCAnJCcpKTsKLSAgRVhQRUNU
X1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnNScsICc1JykpOwotICBFWFBFQ1RfVFJVRShB
dG9tTWF0Y2hlc0NoYXIoZmFsc2UsICdaJywgJ1onKSk7Ci19Ci0KLVRFU1QoVmFsaWRhdGVSZWdl
eFRlc3QsIEdlbmVyYXRlc0ZhaWx1cmVBbmRSZXR1cm5zRmFsc2VGb3JJbnZhbGlkKSB7Ci0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KE5VTEwpKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIk5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxlIHJl
Z3VsYXIgZXhwcmVzc2lvbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKLSAgICAgIEFT
U0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJhXFwiKSksCi0gICAgICAiU3ludGF4IGVycm9yIGF0
IGluZGV4IDEgaW4gc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiBcImFcXFwiOiAiKTsKLSAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImFcXCIpKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIidcXCcgY2Fubm90IGFwcGVhciBhdCB0aGUgZW5k
Iik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4
KCJcXG5cXCIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIidcXCcgY2Fubm90IGFwcGVh
ciBhdCB0aGUgZW5kIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShW
YWxpZGF0ZVJlZ2V4KCJcXHNcXGhiIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52
YWxpZCBlc2NhcGUgc2VxdWVuY2UgXCJcXGhcIiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiXl4iKSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICInXicgY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBiZWdpbm5pbmciKTsKLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIi4qXmIiKSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICInXicgY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBiZWdp
bm5pbmciKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRl
UmVnZXgoIiQkIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJyQnIGNhbiBvbmx5IGFw
cGVhciBhdCB0aGUgZW5kIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxT
RShWYWxpZGF0ZVJlZ2V4KCJeJGEiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInJCcg
Y2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBlbmQiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
QVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImEoYiIpKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIicoJyBpcyB1bnN1cHBvcnRlZCIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShB
U1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiYWIpIikpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAiJyknIGlzIHVuc3VwcG9ydGVkIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFT
U0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJbYWIiKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICInWycgaXMgdW5zdXBwb3J0ZWQiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNT
RVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImF7MiIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIid7JyBpcyB1bnN1cHBvcnRlZCIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NF
UlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiPyIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
Iic/JyBjYW4gb25seSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2VuIik7Ci0gIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJeKiIpKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIicqJyBjYW4gb25seSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2Vu
Iik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4
KCI1KisiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInKycgY2FuIG9ubHkgZm9sbG93
IGEgcmVwZWF0YWJsZSB0b2tlbiIpOwotfQotCi1URVNUKFZhbGlkYXRlUmVnZXhUZXN0LCBSZXR1
cm5zVHJ1ZUZvclZhbGlkKSB7Ci0gIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIiIpKTsKLSAg
RVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiYSIpKTsKLSAgRVhQRUNUX1RSVUUoVmFsaWRhdGVS
ZWdleCgiLioiKSk7Ci0gIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIl5hXysiKSk7Ci0gIEVY
UEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIl5hXFx0XFwmPyIpKTsKLSAgRVhQRUNUX1RSVUUoVmFs
aWRhdGVSZWdleCgiMDkqJCIpKTsKLSAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiXlokIikp
OwotICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCJhXFxeWlxcJFxcKFxcKVxcfFxcW1xcXVxc
e1xcfSIpKTsKLX0KLQotVEVTVChNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZFRlc3QsIFdv
cmtzRm9yWmVyb09yT25lKSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdl
eEF0SGVhZChmYWxzZSwgJ2EnLCAnPycsICJhIiwgImJhIikpOwotICAvLyBSZXBlYXRpbmcgbW9y
ZSB0aGFuIG9uY2UuCi0gIEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVh
ZChmYWxzZSwgJ2EnLCAnPycsICJiIiwgImFhYiIpKTsKLQotICAvLyBSZXBlYXRpbmcgemVybyB0
aW1lcy4KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2Us
ICdhJywgJz8nLCAiYiIsICJiYSIpKTsKLSAgLy8gUmVwZWF0aW5nIG9uY2UuCi0gIEVYUEVDVF9U
UlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImIiLCAi
YWIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNl
LCAnIycsICc/JywgIi4iLCAiIyMiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZXBldGl0aW9uQW5kUmVn
ZXhBdEhlYWRUZXN0LCBXb3Jrc0Zvclplcm9Pck1hbnkpIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNo
UmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcqJywgImEkIiwgImJhYWIiKSk7
Ci0KLSAgLy8gUmVwZWF0aW5nIHplcm8gdGltZXMuCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRp
dGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcqJywgImIiLCAiYmMiKSk7Ci0gIC8vIFJl
cGVhdGluZyBvbmNlLgotICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVh
ZChmYWxzZSwgJy4nLCAnKicsICJiIiwgImFiYyIpKTsKLSAgLy8gUmVwZWF0aW5nIG1vcmUgdGhh
biBvbmNlLgotICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZCh0cnVl
LCAndycsICcqJywgIi0iLCAiYWJfMS1nIikpOwotfQotCi1URVNUKE1hdGNoUmVwZXRpdGlvbkFu
ZFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NGb3JPbmVPck1hbnkpIHsKLSAgRVhQRUNUX0ZBTFNFKE1h
dGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcrJywgImEkIiwgImJhYWIi
KSk7Ci0gIC8vIFJlcGVhdGluZyB6ZXJvIHRpbWVzLgotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZXBl
dGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJysnLCAiYiIsICJiYyIpKTsKLQotICAv
LyBSZXBlYXRpbmcgb25jZS4KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhB
dEhlYWQoZmFsc2UsICcuJywgJysnLCAiYiIsICJhYmMiKSk7Ci0gIC8vIFJlcGVhdGluZyBtb3Jl
IHRoYW4gb25jZS4KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQo
dHJ1ZSwgJ3cnLCAnKycsICItIiwgImFiXzEtZyIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QXRI
ZWFkVGVzdCwgUmV0dXJuc1RydWVGb3JFbXB0eVJlZ2V4KSB7Ci0gIEVYUEVDVF9UUlVFKE1hdGNo
UmVnZXhBdEhlYWQoIiIsICIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIiIs
ICJhYiIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NXaGVuRG9sbGFy
SXNJblJlZ2V4KSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCIkIiwgImEiKSk7
Ci0KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiJCIsICIiKSk7Ci0gIEVYUEVDVF9U
UlVFKE1hdGNoUmVnZXhBdEhlYWQoImEkIiwgImEiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEF0
SGVhZFRlc3QsIFdvcmtzV2hlblJlZ2V4U3RhcnRzV2l0aEVzY2FwZVNlcXVlbmNlKSB7Ci0gIEVY
UEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJcXHciLCAiKyIpKTsKLSAgRVhQRUNUX0ZBTFNF
KE1hdGNoUmVnZXhBdEhlYWQoIlxcVyIsICJhYiIpKTsKLQotICBFWFBFQ1RfVFJVRShNYXRjaFJl
Z2V4QXRIZWFkKCJcXHNhIiwgIlxuYWIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhl
YWQoIlxcZCIsICIxYSIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NX
aGVuUmVnZXhTdGFydHNXaXRoUmVwZXRpdGlvbikgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdl
eEF0SGVhZCgiLithIiwgImFiYyIpKTsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQo
ImE/YiIsICJhYWIiKSk7Ci0KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiLiphIiwg
ImJjMTItYWIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoImE/YiIsICJiIikp
OwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJhP2IiLCAiYWIiKSk7Ci19Ci0KLVRF
U1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsCi0gICAgIFdvcmtzV2hlblJlZ2V4U3RhcnRzV2l0aFJl
cGV0aW9uT2ZFc2NhcGVTZXF1ZW5jZSkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVh
ZCgiXFwuK2EiLCAiYWJjIikpOwotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiXFxz
P2IiLCAiICBiIikpOwotCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcKCphIiwg
IigoKChhYiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxeP2IiLCAiXmIi
KSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcXFw/YiIsICJiIikpOwotICBF
WFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXFxcP2IiLCAiXFxiIikpOwotfQotCi1URVNU
KE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBNYXRjaGVzU2VxdWVudGlhbGx5KSB7Ci0gIEVYUEVDVF9G
QUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJhYi4qYyIsICJhY2FiYyIpKTsKLQotICBFWFBFQ1RfVFJV
RShNYXRjaFJlZ2V4QXRIZWFkKCJhYi4qYyIsICJhYi1mc2MiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hS
ZWdleEFueXdoZXJlVGVzdCwgUmV0dXJuc0ZhbHNlV2hlblN0cmluZ0lzTnVsbCkgewotICBFWFBF
Q1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJlKCIiLCBOVUxMKSk7Ci19Ci0KLVRFU1QoTWF0Y2hS
ZWdleEFueXdoZXJlVGVzdCwgV29ya3NXaGVuUmVnZXhTdGFydHNXaXRoQ2FyZXQpIHsKLSAgRVhQ
RUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXmEiLCAiYmEiKSk7Ci0gIEVYUEVDVF9GQUxT
RShNYXRjaFJlZ2V4QW55d2hlcmUoIl4kIiwgImEiKSk7Ci0KLSAgRVhQRUNUX1RSVUUoTWF0Y2hS
ZWdleEFueXdoZXJlKCJeYSIsICJhYiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdo
ZXJlKCJeIiwgImFiIikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUoIl4kIiwg
IiIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5zRmFsc2VXaGVu
Tm9NYXRjaCkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJlKCJhIiwgImJjZGUx
MjMiKSk7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoImEuK2EiLCAiLS1hYTg4
ODg4ODg4IikpOwotfQotCi1URVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFJldHVybnNUcnVl
V2hlbk1hdGNoaW5nUHJlZml4KSB7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgi
XFx3KyIsICJhYjFfIC0gNSIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCIu
Kj0iLCAiPSIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJ4LiphYj8uKmJj
IiwgInhhYWFiYyIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5z
VHJ1ZVdoZW5NYXRjaGluZ05vblByZWZpeCkgewotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55
d2hlcmUoIlxcdysiLCAiJCQkIGFiMV8gLSA1IikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4
QW55d2hlcmUoIlxcLis9IiwgIj0gIC4uLj0iKSk7Ci19Ci0KLS8vIFRlc3RzIFJFJ3MgaW1wbGlj
aXQgY29uc3RydWN0b3JzLgotVEVTVChSRVRlc3QsIEltcGxpY2l0Q29uc3RydWN0b3JXb3Jrcykg
ewotICBjb25zdCBSRSBlbXB0eSgiIik7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgZW1wdHkucGF0dGVy
bigpKTsKLQotICBjb25zdCBSRSBzaW1wbGUoImhlbGxvIik7Ci0gIEVYUEVDVF9TVFJFUSgiaGVs
bG8iLCBzaW1wbGUucGF0dGVybigpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBSRSdzIGNvbnN0cnVj
dG9ycyByZWplY3QgaW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb25zLgotVEVTVChSRVRlc3QsIFJl
amVjdHNJbnZhbGlkUmVnZXgpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIGNv
bnN0IFJFIG5vcm1hbChOVUxMKTsKLSAgfSwgIk5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxlIHJl
Z3VsYXIgZXhwcmVzc2lvbiIpOwotCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBj
b25zdCBSRSBub3JtYWwoIi4qKFxcdysiKTsKLSAgfSwgIicoJyBpcyB1bnN1cHBvcnRlZCIpOwot
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBjb25zdCBSRSBpbnZhbGlkKCJePyIp
OwotICB9LCAiJz8nIGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVhdGFibGUgdG9rZW4iKTsKLX0KLQot
Ly8gVGVzdHMgUkU6OkZ1bGxNYXRjaCgpLgotVEVTVChSRVRlc3QsIEZ1bGxNYXRjaFdvcmtzKSB7
Ci0gIGNvbnN0IFJFIGVtcHR5KCIiKTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaCgiIiwg
ZW1wdHkpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goImEiLCBlbXB0eSkpOwotCi0g
IGNvbnN0IFJFIHJlMSgiYSIpOwotICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKCJhIiwgcmUx
KSk7Ci0KLSAgY29uc3QgUkUgcmUoImEuKnoiKTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRj
aCgiYXoiLCByZSkpOwotICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKCJheHl6IiwgcmUpKTsK
LSAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goImJheiIsIHJlKSk7Ci0gIEVYUEVDVF9GQUxT
RShSRTo6RnVsbE1hdGNoKCJhenkiLCByZSkpOwotfQotCi0vLyBUZXN0cyBSRTo6UGFydGlhbE1h
dGNoKCkuCi1URVNUKFJFVGVzdCwgUGFydGlhbE1hdGNoV29ya3MpIHsKLSAgY29uc3QgUkUgZW1w
dHkoIiIpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCIiLCBlbXB0eSkpOwotICBF
WFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCJhIiwgZW1wdHkpKTsKLQotICBjb25zdCBSRSBy
ZSgiYS4qeiIpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCJheiIsIHJlKSk7Ci0g
IEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goImF4eXoiLCByZSkpOwotICBFWFBFQ1RfVFJV
RShSRTo6UGFydGlhbE1hdGNoKCJiYXoiLCByZSkpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlh
bE1hdGNoKCJhenkiLCByZSkpOwotICBFWFBFQ1RfRkFMU0UoUkU6OlBhcnRpYWxNYXRjaCgienph
IiwgcmUpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9VU0VTX1BPU0lYX1JFCi0KLSNpZiAhR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKLQotVEVTVChDYXB0dXJlVGVzdCwgQ2FwdHVyZXNTdGRvdXQp
IHsKLSAgQ2FwdHVyZVN0ZG91dCgpOwotICBmcHJpbnRmKHN0ZG91dCwgImFiYyIpOwotICBFWFBF
Q1RfU1RSRVEoImFiYyIsIEdldENhcHR1cmVkU3Rkb3V0KCkuY19zdHIoKSk7Ci0KLSAgQ2FwdHVy
ZVN0ZG91dCgpOwotICBmcHJpbnRmKHN0ZG91dCwgImRlZiVjZ2hpIiwgJ1wwJyk7Ci0gIEVYUEVD
VF9FUSg6OnN0ZDo6c3RyaW5nKCJkZWZcMGdoaSIsIDcpLCA6OnN0ZDo6c3RyaW5nKEdldENhcHR1
cmVkU3Rkb3V0KCkpKTsKLX0KLQotVEVTVChDYXB0dXJlVGVzdCwgQ2FwdHVyZXNTdGRlcnIpIHsK
LSAgQ2FwdHVyZVN0ZGVycigpOwotICBmcHJpbnRmKHN0ZGVyciwgImprbCIpOwotICBFWFBFQ1Rf
U1RSRVEoImprbCIsIEdldENhcHR1cmVkU3RkZXJyKCkuY19zdHIoKSk7Ci0KLSAgQ2FwdHVyZVN0
ZGVycigpOwotICBmcHJpbnRmKHN0ZGVyciwgImprbCVjbW5vIiwgJ1wwJyk7Ci0gIEVYUEVDVF9F
USg6OnN0ZDo6c3RyaW5nKCJqa2xcMG1ubyIsIDcpLCA6OnN0ZDo6c3RyaW5nKEdldENhcHR1cmVk
U3RkZXJyKCkpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBzdGRvdXQgYW5kIHN0ZGVyciBjYXB0dXJl
IGRvbid0IGludGVyZmVyZSB3aXRoIGVhY2ggb3RoZXIuCi1URVNUKENhcHR1cmVUZXN0LCBDYXB0
dXJlc1N0ZG91dEFuZFN0ZGVycikgewotICBDYXB0dXJlU3Rkb3V0KCk7Ci0gIENhcHR1cmVTdGRl
cnIoKTsKLSAgZnByaW50ZihzdGRvdXQsICJwcXIiKTsKLSAgZnByaW50ZihzdGRlcnIsICJzdHUi
KTsKLSAgRVhQRUNUX1NUUkVRKCJwcXIiLCBHZXRDYXB0dXJlZFN0ZG91dCgpLmNfc3RyKCkpOwot
ICBFWFBFQ1RfU1RSRVEoInN0dSIsIEdldENhcHR1cmVkU3RkZXJyKCkuY19zdHIoKSk7Ci19Ci0K
LVRFU1QoQ2FwdHVyZURlYXRoVGVzdCwgQ2Fubm90UmVlbnRlclN0ZG91dENhcHR1cmUpIHsKLSAg
Q2FwdHVyZVN0ZG91dCgpOwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKENhcHR1cmVTdGRv
dXQoKTssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9ubHkgb25lIHN0ZG91dCBjYXB0
dXJlciBjYW4gZXhpc3QgYXQgYSB0aW1lIik7Ci0gIEdldENhcHR1cmVkU3Rkb3V0KCk7Ci0KLSAg
Ly8gV2UgY2Fubm90IHRlc3Qgc3RkZXJyIGNhcHR1cmluZyB1c2luZyBkZWF0aCB0ZXN0cyBhcyB0
aGV5IHVzZSBpdAotICAvLyB0aGVtc2VsdmVzLgotfQotCi0jZW5kaWYgIC8vICFHVEVTVF9PU19X
SU5ET1dTX01PQklMRQotCi1URVNUKFRocmVhZExvY2FsVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9y
SW5pdGlhbGl6ZXNUb0RlZmF1bHRWYWx1ZXMpIHsKLSAgVGhyZWFkTG9jYWw8aW50PiB0MTsKLSAg
RVhQRUNUX0VRKDAsIHQxLmdldCgpKTsKLQotICBUaHJlYWRMb2NhbDx2b2lkKj4gdDI7Ci0gIEVY
UEVDVF9UUlVFKHQyLmdldCgpID09IE5VTEwpOwotfQotCi1URVNUKFRocmVhZExvY2FsVGVzdCwg
U2luZ2xlUGFyYW1Db25zdHJ1Y3RvckluaXRpYWxpemVzVG9QYXJhbSkgewotICBUaHJlYWRMb2Nh
bDxpbnQ+IHQxKDEyMyk7Ci0gIEVYUEVDVF9FUSgxMjMsIHQxLmdldCgpKTsKLQotICBpbnQgaSA9
IDA7Ci0gIFRocmVhZExvY2FsPGludCo+IHQyKCZpKTsKLSAgRVhQRUNUX0VRKCZpLCB0Mi5nZXQo
KSk7Ci19Ci0KLWNsYXNzIE5vRGVmYXVsdENvbnRydWN0b3IgewotIHB1YmxpYzoKLSAgZXhwbGlj
aXQgTm9EZWZhdWx0Q29udHJ1Y3Rvcihjb25zdCBjaGFyKikge30KLSAgTm9EZWZhdWx0Q29udHJ1
Y3Rvcihjb25zdCBOb0RlZmF1bHRDb250cnVjdG9yJikge30KLX07Ci0KLVRFU1QoVGhyZWFkTG9j
YWxUZXN0LCBWYWx1ZURlZmF1bHRDb250cnVjdG9ySXNOb3RSZXF1aXJlZEZvclBhcmFtVmVyc2lv
bikgewotICBUaHJlYWRMb2NhbDxOb0RlZmF1bHRDb250cnVjdG9yPiBiYXIoTm9EZWZhdWx0Q29u
dHJ1Y3RvcigiZm9vIikpOwotICBiYXIucG9pbnRlcigpOwotfQotCi1URVNUKFRocmVhZExvY2Fs
VGVzdCwgR2V0QW5kUG9pbnRlclJldHVyblNhbWVWYWx1ZSkgewotICBUaHJlYWRMb2NhbDxTdHJp
bmc+IHRocmVhZF9sb2NhbDsKLQotICBFWFBFQ1RfRVEodGhyZWFkX2xvY2FsLnBvaW50ZXIoKSwg
Jih0aHJlYWRfbG9jYWwuZ2V0KCkpKTsKLQotICAvLyBWZXJpZmllcyB0aGUgY29uZGl0aW9uIHN0
aWxsIGhvbGRzIGFmdGVyIGNhbGxpbmcgc2V0LgotICB0aHJlYWRfbG9jYWwuc2V0KCJmb28iKTsK
LSAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbC5wb2ludGVyKCksICYodGhyZWFkX2xvY2FsLmdldCgp
KSk7Ci19Ci0KLVRFU1QoVGhyZWFkTG9jYWxUZXN0LCBQb2ludGVyQW5kQ29uc3RQb2ludGVyUmV0
dXJuU2FtZVZhbHVlKSB7Ci0gIFRocmVhZExvY2FsPFN0cmluZz4gdGhyZWFkX2xvY2FsOwotICBj
b25zdCBUaHJlYWRMb2NhbDxTdHJpbmc+JiBjb25zdF90aHJlYWRfbG9jYWwgPSB0aHJlYWRfbG9j
YWw7Ci0KLSAgRVhQRUNUX0VRKHRocmVhZF9sb2NhbC5wb2ludGVyKCksIGNvbnN0X3RocmVhZF9s
b2NhbC5wb2ludGVyKCkpOwotCi0gIHRocmVhZF9sb2NhbC5zZXQoImZvbyIpOwotICBFWFBFQ1Rf
RVEodGhyZWFkX2xvY2FsLnBvaW50ZXIoKSwgY29uc3RfdGhyZWFkX2xvY2FsLnBvaW50ZXIoKSk7
Ci19Ci0KLSNpZiBHVEVTVF9JU19USFJFQURTQUZFCi0KLXZvaWQgQWRkVHdvKGludCogcGFyYW0p
IHsgKnBhcmFtICs9IDI7IH0KLQotVEVTVChUaHJlYWRXaXRoUGFyYW1UZXN0LCBDb25zdHJ1Y3Rv
ckV4ZWN1dGVzVGhyZWFkRnVuYykgewotICBpbnQgaSA9IDQwOwotICBUaHJlYWRXaXRoUGFyYW08
aW50Kj4gdGhyZWFkKCZBZGRUd28sICZpLCBOVUxMKTsKLSAgdGhyZWFkLkpvaW4oKTsKLSAgRVhQ
RUNUX0VRKDQyLCBpKTsKLX0KLQotVEVTVChNdXRleERlYXRoVGVzdCwgQXNzZXJ0SGVsZFNob3Vs
ZEFzc2VydFdoZW5Ob3RMb2NrZWQpIHsKLSAgLy8gQXNzZXJ0SGVsZCgpIGlzIGZsYWt5IG9ubHkg
aW4gdGhlIHByZXNlbmNlIG9mIG11bHRpcGxlIHRocmVhZHMgYWNjZXNzaW5nCi0gIC8vIHRoZSBs
b2NrLiBJbiB0aGlzIGNhc2UsIHRoZSB0ZXN0IGlzIHJvYnVzdC4KLSAgRVhQRUNUX0RFQVRIX0lG
X1NVUFBPUlRFRCh7Ci0gICAgTXV0ZXggbTsKLSAgICB7IE11dGV4TG9jayBsb2NrKCZtKTsgfQot
ICAgIG0uQXNzZXJ0SGVsZCgpOwotICB9LAotICAidGhyZWFkIC4qaG9sZCIpOwotfQotCi1URVNU
KE11dGV4VGVzdCwgQXNzZXJ0SGVsZFNob3VsZE5vdEFzc2VydFdoZW5Mb2NrZWQpIHsKLSAgTXV0
ZXggbTsKLSAgTXV0ZXhMb2NrIGxvY2soJm0pOwotICBtLkFzc2VydEhlbGQoKTsKLX0KLQotY2xh
c3MgQXRvbWljQ291bnRlcldpdGhNdXRleCB7Ci0gcHVibGljOgotICBleHBsaWNpdCBBdG9taWND
b3VudGVyV2l0aE11dGV4KE11dGV4KiBtdXRleCkgOgotICAgIHZhbHVlXygwKSwgbXV0ZXhfKG11
dGV4KSwgcmFuZG9tXyg0Mikge30KLQotICB2b2lkIEluY3JlbWVudCgpIHsKLSAgICBNdXRleExv
Y2sgbG9jayhtdXRleF8pOwotICAgIGludCB0ZW1wID0gdmFsdWVfOwotICAgIHsKLSAgICAgIC8v
IExvY2tpbmcgYSBtdXRleCBwdXRzIHVwIGEgbWVtb3J5IGJhcnJpZXIsIHByZXZlbnRpbmcgcmVh
ZHMgYW5kCi0gICAgICAvLyB3cml0ZXMgdG8gdmFsdWVfIHJlYXJyYW5nZWQgd2hlbiBvYnNlcnZl
ZCBmcm9tIG90aGVyIHRocmVhZHMuCi0gICAgICAvLwotICAgICAgLy8gV2UgY2Fubm90IHVzZSBN
dXRleCBhbmQgTXV0ZXhMb2NrIGhlcmUgb3IgcmVseSBvbiB0aGVpciBtZW1vcnkKLSAgICAgIC8v
IGJhcnJpZXIgZnVuY3Rpb25hbGl0eSBhcyB3ZSBhcmUgdGVzdGluZyB0aGVtIGhlcmUuCi0gICAg
ICBwdGhyZWFkX211dGV4X3QgbWVtb3J5X2JhcnJpZXJfbXV0ZXg7Ci0gICAgICBHVEVTVF9DSEVD
S19QT1NJWF9TVUNDRVNTXygKLSAgICAgICAgICBwdGhyZWFkX211dGV4X2luaXQoJm1lbW9yeV9i
YXJyaWVyX211dGV4LCBOVUxMKSk7Ci0gICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhw
dGhyZWFkX211dGV4X2xvY2soJm1lbW9yeV9iYXJyaWVyX211dGV4KSk7Ci0KLSAgICAgIFNsZWVw
TWlsbGlzZWNvbmRzKHJhbmRvbV8uR2VuZXJhdGUoMzApKTsKLQotICAgICAgR1RFU1RfQ0hFQ0tf
UE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF91bmxvY2soJm1lbW9yeV9iYXJyaWVyX211dGV4
KSk7Ci0gICAgfQotICAgIHZhbHVlXyA9IHRlbXAgKyAxOwotICB9Ci0gIGludCB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIHZhbHVlXzsgfQotCi0gcHJpdmF0ZToKLSAgdm9sYXRpbGUgaW50IHZhbHVl
XzsKLSAgTXV0ZXgqIGNvbnN0IG11dGV4XzsgIC8vIFByb3RlY3RzIHZhbHVlXy4KLSAgUmFuZG9t
ICAgICAgIHJhbmRvbV87Ci19OwotCi12b2lkIENvdW50aW5nVGhyZWFkRnVuYyhwYWlyPEF0b21p
Y0NvdW50ZXJXaXRoTXV0ZXgqLCBpbnQ+IHBhcmFtKSB7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwg
cGFyYW0uc2Vjb25kOyArK2kpCi0gICAgICBwYXJhbS5maXJzdC0+SW5jcmVtZW50KCk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgdGhlIG11dGV4IG9ubHkgbGV0cyBvbmUgdGhyZWFkIGF0IGEgdGltZSB0
byBsb2NrIGl0LgotVEVTVChNdXRleFRlc3QsIE9ubHlPbmVUaHJlYWRDYW5Mb2NrQXRBVGltZSkg
ewotICBNdXRleCBtdXRleDsKLSAgQXRvbWljQ291bnRlcldpdGhNdXRleCBsb2NrZWRfY291bnRl
cigmbXV0ZXgpOwotCi0gIHR5cGVkZWYgVGhyZWFkV2l0aFBhcmFtPHBhaXI8QXRvbWljQ291bnRl
cldpdGhNdXRleCosIGludD4gPiBUaHJlYWRUeXBlOwotICBjb25zdCBpbnQga0N5Y2xlQ291bnQg
PSAyMDsKLSAgY29uc3QgaW50IGtUaHJlYWRDb3VudCA9IDc7Ci0gIHNjb3BlZF9wdHI8VGhyZWFk
VHlwZT4gY291bnRpbmdfdGhyZWFkc1trVGhyZWFkQ291bnRdOwotICBOb3RpZmljYXRpb24gdGhy
ZWFkc19jYW5fc3RhcnQ7Ci0gIC8vIENyZWF0ZXMgYW5kIHJ1bnMga1RocmVhZENvdW50IHRocmVh
ZHMgdGhhdCBpbmNyZW1lbnQgbG9ja2VkX2NvdW50ZXIKLSAgLy8ga0N5Y2xlQ291bnQgdGltZXMg
ZWFjaC4KLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVGhyZWFkQ291bnQ7ICsraSkgewotICAgIGNv
dW50aW5nX3RocmVhZHNbaV0ucmVzZXQobmV3IFRocmVhZFR5cGUoJkNvdW50aW5nVGhyZWFkRnVu
YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VfcGFp
cigmbG9ja2VkX2NvdW50ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga0N5Y2xlQ291bnQpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnRocmVhZHNfY2FuX3N0YXJ0KSk7Ci0gIH0KLSAgdGhyZWFk
c19jYW5fc3RhcnQuTm90aWZ5KCk7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwga1RocmVhZENvdW50
OyArK2kpCi0gICAgY291bnRpbmdfdGhyZWFkc1tpXS0+Sm9pbigpOwotCi0gIC8vIElmIHRoZSBt
dXRleCBsZXRzIG1vcmUgdGhhbiBvbmUgdGhyZWFkIHRvIGluY3JlbWVudCB0aGUgY291bnRlciBh
dCBhCi0gIC8vIHRpbWUsIHRoZXkgYXJlIGxpa2VseSB0byBlbmNvdW50ZXIgYSByYWNlIGNvbmRp
dGlvbiBhbmQgaGF2ZSBzb21lCi0gIC8vIGluY3JlbWVudHMgb3ZlcndyaXR0ZW4sIHJlc3VsdGlu
ZyBpbiB0aGUgbG93ZXIgdGhlbiBleHBlY3RlZCBjb3VudGVyCi0gIC8vIHZhbHVlLgotICBFWFBF
Q1RfRVEoa0N5Y2xlQ291bnQgKiBrVGhyZWFkQ291bnQsIGxvY2tlZF9jb3VudGVyLnZhbHVlKCkp
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgUnVuRnJvbVRocmVhZCh2b2lkIChm
dW5jKShUKSwgVCBwYXJhbSkgewotICBUaHJlYWRXaXRoUGFyYW08VD4gdGhyZWFkKGZ1bmMsIHBh
cmFtLCBOVUxMKTsKLSAgdGhyZWFkLkpvaW4oKTsKLX0KLQotdm9pZCBSZXRyaWV2ZVRocmVhZExv
Y2FsVmFsdWUocGFpcjxUaHJlYWRMb2NhbDxTdHJpbmc+KiwgU3RyaW5nKj4gcGFyYW0pIHsKLSAg
KnBhcmFtLnNlY29uZCA9IHBhcmFtLmZpcnN0LT5nZXQoKTsKLX0KLQotVEVTVChUaHJlYWRMb2Nh
bFRlc3QsIFBhcmFtZXRlcml6ZWRDb25zdHJ1Y3RvclNldHNEZWZhdWx0KSB7Ci0gIFRocmVhZExv
Y2FsPFN0cmluZz4gdGhyZWFkX2xvY2FsKCJmb28iKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iLCB0
aHJlYWRfbG9jYWwuZ2V0KCkuY19zdHIoKSk7Ci0KLSAgdGhyZWFkX2xvY2FsLnNldCgiYmFyIik7
Ci0gIEVYUEVDVF9TVFJFUSgiYmFyIiwgdGhyZWFkX2xvY2FsLmdldCgpLmNfc3RyKCkpOwotCi0g
IFN0cmluZyByZXN1bHQ7Ci0gIFJ1bkZyb21UaHJlYWQoJlJldHJpZXZlVGhyZWFkTG9jYWxWYWx1
ZSwgbWFrZV9wYWlyKCZ0aHJlYWRfbG9jYWwsICZyZXN1bHQpKTsKLSAgRVhQRUNUX1NUUkVRKCJm
b28iLCByZXN1bHQuY19zdHIoKSk7Ci19Ci0KLS8vIERlc3RydWN0b3JUcmFja2VyIGtlZXBzIHRy
YWNrIG9mIHdoZXRoZXIgaXRzIGluc3RhbmNlcyBoYXZlIGJlZW4KLS8vIGRlc3Ryb3llZC4KLXN0
YXRpYyBzdGQ6OnZlY3Rvcjxib29sPiBnX2Rlc3Ryb3llZDsKLQotY2xhc3MgRGVzdHJ1Y3RvclRy
YWNrZXIgewotIHB1YmxpYzoKLSAgRGVzdHJ1Y3RvclRyYWNrZXIoKSA6IGluZGV4XyhHZXROZXdJ
bmRleCgpKSB7fQotICBEZXN0cnVjdG9yVHJhY2tlcihjb25zdCBEZXN0cnVjdG9yVHJhY2tlciYg
LyogcmhzICovKQotICAgICAgOiBpbmRleF8oR2V0TmV3SW5kZXgoKSkge30KLSAgfkRlc3RydWN0
b3JUcmFja2VyKCkgewotICAgIC8vIFdlIG5ldmVyIGFjY2VzcyBnX2Rlc3Ryb3llZCBjb25jdXJy
ZW50bHksIHNvIHdlIGRvbid0IG5lZWQgdG8KLSAgICAvLyBwcm90ZWN0IHRoZSB3cml0ZSBvcGVy
YXRpb24gdW5kZXIgYSBtdXRleC4KLSAgICBnX2Rlc3Ryb3llZFtpbmRleF9dID0gdHJ1ZTsKLSAg
fQotCi0gcHJpdmF0ZToKLSAgc3RhdGljIGludCBHZXROZXdJbmRleCgpIHsKLSAgICBnX2Rlc3Ry
b3llZC5wdXNoX2JhY2soZmFsc2UpOwotICAgIHJldHVybiBnX2Rlc3Ryb3llZC5zaXplKCkgLSAx
OwotICB9Ci0gIGNvbnN0IGludCBpbmRleF87Ci19OwotCi10eXBlZGVmIFRocmVhZExvY2FsPERl
c3RydWN0b3JUcmFja2VyPiogVGhyZWFkUGFyYW07Ci0KLXZvaWQgQ2FsbFRocmVhZExvY2FsR2V0
KFRocmVhZFBhcmFtIHRocmVhZF9sb2NhbCkgewotICB0aHJlYWRfbG9jYWwtPmdldCgpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IHdoZW4gYSBUaHJlYWRMb2NhbCBvYmplY3QgZGllcyBpbiBhIHRocmVh
ZCwgaXQgZGVzdHJveXMKLS8vIHRoZSBtYW5hZ2VkIG9iamVjdCBmb3IgdGhhdCB0aHJlYWQuCi1U
RVNUKFRocmVhZExvY2FsVGVzdCwgRGVzdHJveXNNYW5hZ2VkT2JqZWN0Rm9yT3duVGhyZWFkV2hl
bkR5aW5nKSB7Ci0gIGdfZGVzdHJveWVkLmNsZWFyKCk7Ci0KLSAgewotICAgIC8vIFRoZSBuZXh0
IGxpbmUgZGVmYXVsdCBjb25zdHJ1Y3RzIGEgRGVzdHJ1Y3RvclRyYWNrZXIgb2JqZWN0IGFzCi0g
ICAgLy8gdGhlIGRlZmF1bHQgdmFsdWUgb2Ygb2JqZWN0cyBtYW5hZ2VkIGJ5IHRocmVhZF9sb2Nh
bC4KLSAgICBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4gdGhyZWFkX2xvY2FsOwotICAg
IEFTU0VSVF9FUSgxVSwgZ19kZXN0cm95ZWQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRkFMU0UoZ19k
ZXN0cm95ZWRbMF0pOwotCi0gICAgLy8gVGhpcyBjcmVhdGVzIGFub3RoZXIgRGVzdHJ1Y3RvclRy
YWNrZXIgb2JqZWN0IGZvciB0aGUgbWFpbiB0aHJlYWQuCi0gICAgdGhyZWFkX2xvY2FsLmdldCgp
OwotICAgIEFTU0VSVF9FUSgyVSwgZ19kZXN0cm95ZWQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRkFM
U0UoZ19kZXN0cm95ZWRbMF0pOwotICAgIEFTU0VSVF9GQUxTRShnX2Rlc3Ryb3llZFsxXSk7Ci0g
IH0KLQotICAvLyBOb3cgdGhyZWFkX2xvY2FsIGhhcyBkaWVkLiAgSXQgc2hvdWxkIGhhdmUgZGVz
dHJveWVkIGJvdGggdGhlCi0gIC8vIGRlZmF1bHQgdmFsdWUgc2hhcmVkIGJ5IGFsbCB0aHJlYWRz
IGFuZCB0aGUgdmFsdWUgZm9yIHRoZSBtYWluCi0gIC8vIHRocmVhZC4KLSAgQVNTRVJUX0VRKDJV
LCBnX2Rlc3Ryb3llZC5zaXplKCkpOwotICBFWFBFQ1RfVFJVRShnX2Rlc3Ryb3llZFswXSk7Ci0g
IEVYUEVDVF9UUlVFKGdfZGVzdHJveWVkWzFdKTsKLQotICBnX2Rlc3Ryb3llZC5jbGVhcigpOwot
fQotCi0vLyBUZXN0cyB0aGF0IHdoZW4gYSB0aHJlYWQgZXhpdHMsIHRoZSB0aHJlYWQtbG9jYWwg
b2JqZWN0IGZvciB0aGF0Ci0vLyB0aHJlYWQgaXMgZGVzdHJveWVkLgotVEVTVChUaHJlYWRMb2Nh
bFRlc3QsIERlc3Ryb3lzTWFuYWdlZE9iamVjdEF0VGhyZWFkRXhpdCkgewotICBnX2Rlc3Ryb3ll
ZC5jbGVhcigpOwotCi0gIHsKLSAgICAvLyBUaGUgbmV4dCBsaW5lIGRlZmF1bHQgY29uc3RydWN0
cyBhIERlc3RydWN0b3JUcmFja2VyIG9iamVjdCBhcwotICAgIC8vIHRoZSBkZWZhdWx0IHZhbHVl
IG9mIG9iamVjdHMgbWFuYWdlZCBieSB0aHJlYWRfbG9jYWwuCi0gICAgVGhyZWFkTG9jYWw8RGVz
dHJ1Y3RvclRyYWNrZXI+IHRocmVhZF9sb2NhbDsKLSAgICBBU1NFUlRfRVEoMVUsIGdfZGVzdHJv
eWVkLnNpemUoKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdfZGVzdHJveWVkWzBdKTsKLQotICAgIC8v
IFRoaXMgY3JlYXRlcyBhbm90aGVyIERlc3RydWN0b3JUcmFja2VyIG9iamVjdCBpbiB0aGUgbmV3
IHRocmVhZC4KLSAgICBUaHJlYWRXaXRoUGFyYW08VGhyZWFkUGFyYW0+IHRocmVhZCgKLSAgICAg
ICAgJkNhbGxUaHJlYWRMb2NhbEdldCwgJnRocmVhZF9sb2NhbCwgTlVMTCk7Ci0gICAgdGhyZWFk
LkpvaW4oKTsKLQotICAgIC8vIE5vdyB0aGUgbmV3IHRocmVhZCBoYXMgZXhpdGVkLiAgVGhlIHBl
ci10aHJlYWQgb2JqZWN0IGZvciBpdAotICAgIC8vIHNob3VsZCBoYXZlIGJlZW4gZGVzdHJveWVk
LgotICAgIEFTU0VSVF9FUSgyVSwgZ19kZXN0cm95ZWQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRkFM
U0UoZ19kZXN0cm95ZWRbMF0pOwotICAgIEFTU0VSVF9UUlVFKGdfZGVzdHJveWVkWzFdKTsKLSAg
fQotCi0gIC8vIE5vdyB0aHJlYWRfbG9jYWwgaGFzIGRpZWQuICBUaGUgZGVmYXVsdCB2YWx1ZSBz
aG91bGQgaGF2ZSBiZWVuCi0gIC8vIGRlc3Ryb3llZCB0b28uCi0gIEFTU0VSVF9FUSgyVSwgZ19k
ZXN0cm95ZWQuc2l6ZSgpKTsKLSAgRVhQRUNUX1RSVUUoZ19kZXN0cm95ZWRbMF0pOwotICBFWFBF
Q1RfVFJVRShnX2Rlc3Ryb3llZFsxXSk7Ci0KLSAgZ19kZXN0cm95ZWQuY2xlYXIoKTsKLX0KLQot
VEVTVChUaHJlYWRMb2NhbFRlc3QsIFRocmVhZExvY2FsTXV0YXRpb25zQWZmZWN0T25seUN1cnJl
bnRUaHJlYWQpIHsKLSAgVGhyZWFkTG9jYWw8U3RyaW5nPiB0aHJlYWRfbG9jYWw7Ci0gIHRocmVh
ZF9sb2NhbC5zZXQoIkZvbyIpOwotICBFWFBFQ1RfU1RSRVEoIkZvbyIsIHRocmVhZF9sb2NhbC5n
ZXQoKS5jX3N0cigpKTsKLQotICBTdHJpbmcgcmVzdWx0OwotICBSdW5Gcm9tVGhyZWFkKCZSZXRy
aWV2ZVRocmVhZExvY2FsVmFsdWUsIG1ha2VfcGFpcigmdGhyZWFkX2xvY2FsLCAmcmVzdWx0KSk7
Ci0gIEVYUEVDVF9UUlVFKHJlc3VsdC5jX3N0cigpID09IE5VTEwpOwotfQotCi0jZW5kaWYgIC8v
IEdURVNUX0lTX1RIUkVBRFNBRkUKLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi19ICAvLyBu
YW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVh
M2U5MTk2YWI5NmU0MTNmZWYzMzA3NTI0YjE4YzkyZjVlZGFkYjAuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDIwOCArMCwwIEBA
Ci0vLyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLgotLy8gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8g
ZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRo
b3I6IG1oZXVsZUBnb29nbGUuY29tIChNYXJrdXMgSGV1bGUpCi0vLwotCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QtdGVzdC1wYXJ0Lmg+Ci0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi11c2lu
ZyB0ZXN0aW5nOjpNZXNzYWdlOwotdXNpbmcgdGVzdGluZzo6VGVzdDsKLXVzaW5nIHRlc3Rpbmc6
OlRlc3RQYXJ0UmVzdWx0OwotdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHRBcnJheTsKLQot
bmFtZXNwYWNlIHsKLQotLy8gVGVzdHMgdGhlIFRlc3RQYXJ0UmVzdWx0IGNsYXNzLgotCi0vLyBU
aGUgdGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIFRlc3RQYXJ0UmVzdWx0LgotY2xhc3MgVGVzdFBh
cnRSZXN1bHRUZXN0IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgVGVzdFBhcnRSZXN1
bHRUZXN0KCkKLSAgICAgIDogcjFfKFRlc3RQYXJ0UmVzdWx0OjprU3VjY2VzcywgImZvby9iYXIu
Y2MiLCAxMCwgIlN1Y2Nlc3MhIiksCi0gICAgICAgIHIyXyhUZXN0UGFydFJlc3VsdDo6a05vbkZh
dGFsRmFpbHVyZSwgImZvby9iYXIuY2MiLCAtMSwgIkZhaWx1cmUhIiksCi0gICAgICAgIHIzXyhU
ZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwgTlVMTCwgLTEsICJGYWlsdXJlISIpIHt9Ci0K
LSAgVGVzdFBhcnRSZXN1bHQgcjFfLCByMl8sIHIzXzsKLX07Ci0KLQotVEVTVF9GKFRlc3RQYXJ0
UmVzdWx0VGVzdCwgQ29uc3RydWN0b3JXb3JrcykgewotICBNZXNzYWdlIG1lc3NhZ2U7Ci0gIG1l
c3NhZ2UgPDwgInNvbWV0aGluZyBpcyB0ZXJyaWJseSB3cm9uZyI7Ci0gIG1lc3NhZ2UgPDwgc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KHRlc3Rpbmc6OmludGVybmFsOjprU3RhY2tUcmFjZU1hcmtl
cik7Ci0gIG1lc3NhZ2UgPDwgInNvbWUgdW5pbXBvcnRhbnQgc3RhY2sgdHJhY2UiOwotCi0gIGNv
bnN0IFRlc3RQYXJ0UmVzdWx0IHJlc3VsdChUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVy
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb21lX2ZpbGUuY2MiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZXNzYWdlLkdldFN0cmluZygpLmNfc3RyKCkpOwotCi0gIEVYUEVDVF9FUShUZXN0UGFydFJl
c3VsdDo6a05vbkZhdGFsRmFpbHVyZSwgcmVzdWx0LnR5cGUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgi
c29tZV9maWxlLmNjIiwgcmVzdWx0LmZpbGVfbmFtZSgpKTsKLSAgRVhQRUNUX0VRKDQyLCByZXN1
bHQubGluZV9udW1iZXIoKSk7Ci0gIEVYUEVDVF9TVFJFUShtZXNzYWdlLkdldFN0cmluZygpLmNf
c3RyKCksIHJlc3VsdC5tZXNzYWdlKCkpOwotICBFWFBFQ1RfU1RSRVEoInNvbWV0aGluZyBpcyB0
ZXJyaWJseSB3cm9uZyIsIHJlc3VsdC5zdW1tYXJ5KCkpOwotfQotCi1URVNUX0YoVGVzdFBhcnRS
ZXN1bHRUZXN0LCBSZXN1bHRBY2Nlc3NvcnNXb3JrKSB7Ci0gIGNvbnN0IFRlc3RQYXJ0UmVzdWx0
IHN1Y2Nlc3MoVGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJmaWxlLmNjIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSIpOwotICBFWFBFQ1RfVFJV
RShzdWNjZXNzLnBhc3NlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MuZmFpbGVkKCkpOwot
ICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcy5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKLSAgRVhQRUNUX0ZB
TFNFKHN1Y2Nlc3MuZmF0YWxseV9mYWlsZWQoKSk7Ci0KLSAgY29uc3QgVGVzdFBhcnRSZXN1bHQg
bm9uZmF0YWxfZmFpbHVyZShUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5jYyIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UiKTsKLSAgRVhQRUNUX0ZBTFNFKG5vbmZhdGFsX2Zh
aWx1cmUucGFzc2VkKCkpOwotICBFWFBFQ1RfVFJVRShub25mYXRhbF9mYWlsdXJlLmZhaWxlZCgp
KTsKLSAgRVhQRUNUX1RSVUUobm9uZmF0YWxfZmFpbHVyZS5ub25mYXRhbGx5X2ZhaWxlZCgpKTsK
LSAgRVhQRUNUX0ZBTFNFKG5vbmZhdGFsX2ZhaWx1cmUuZmF0YWxseV9mYWlsZWQoKSk7Ci0KLSAg
Y29uc3QgVGVzdFBhcnRSZXN1bHQgZmF0YWxfZmFpbHVyZShUZXN0UGFydFJlc3VsdDo6a0ZhdGFs
RmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5jYyIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UiKTsKLSAgRVhQRUNUX0ZBTFNFKGZhdGFs
X2ZhaWx1cmUucGFzc2VkKCkpOwotICBFWFBFQ1RfVFJVRShmYXRhbF9mYWlsdXJlLmZhaWxlZCgp
KTsKLSAgRVhQRUNUX0ZBTFNFKGZhdGFsX2ZhaWx1cmUubm9uZmF0YWxseV9mYWlsZWQoKSk7Ci0g
IEVYUEVDVF9UUlVFKGZhdGFsX2ZhaWx1cmUuZmF0YWxseV9mYWlsZWQoKSk7Ci19Ci0KLS8vIFRl
c3RzIFRlc3RQYXJ0UmVzdWx0Ojp0eXBlKCkuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCB0
eXBlKSB7Ci0gIEVYUEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a1N1Y2Nlc3MsIHIxXy50eXBlKCkp
OwotICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsIHIyXy50eXBl
KCkpOwotICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsIHIzXy50eXBl
KCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6ZmlsZV9uYW1lKCkuCi1URVNUX0Yo
VGVzdFBhcnRSZXN1bHRUZXN0LCBmaWxlX25hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28vYmFy
LmNjIiwgcjFfLmZpbGVfbmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKE5VTEwsIHIzXy5maWxlX25h
bWUoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpsaW5lX251bWJlcigpLgotVEVT
VF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgbGluZV9udW1iZXIpIHsKLSAgRVhQRUNUX0VRKDEwLCBy
MV8ubGluZV9udW1iZXIoKSk7Ci0gIEVYUEVDVF9FUSgtMSwgcjJfLmxpbmVfbnVtYmVyKCkpOwot
fQotCi0vLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6bWVzc2FnZSgpLgotVEVTVF9GKFRlc3RQYXJ0
UmVzdWx0VGVzdCwgbWVzc2FnZSkgewotICBFWFBFQ1RfU1RSRVEoIlN1Y2Nlc3MhIiwgcjFfLm1l
c3NhZ2UoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpwYXNzZWQoKS4KLVRFU1Rf
RihUZXN0UGFydFJlc3VsdFRlc3QsIFBhc3NlZCkgewotICBFWFBFQ1RfVFJVRShyMV8ucGFzc2Vk
KCkpOwotICBFWFBFQ1RfRkFMU0UocjJfLnBhc3NlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKHIzXy5w
YXNzZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpmYWlsZWQoKS4KLVRFU1Rf
RihUZXN0UGFydFJlc3VsdFRlc3QsIEZhaWxlZCkgewotICBFWFBFQ1RfRkFMU0UocjFfLmZhaWxl
ZCgpKTsKLSAgRVhQRUNUX1RSVUUocjJfLmZhaWxlZCgpKTsKLSAgRVhQRUNUX1RSVUUocjNfLmZh
aWxlZCgpKTsKLX0KLQotLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6OmZhdGFsbHlfZmFpbGVkKCku
Ci1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBGYXRhbGx5RmFpbGVkKSB7Ci0gIEVYUEVDVF9G
QUxTRShyMV8uZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShyMl8uZmF0YWxseV9m
YWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHIzXy5mYXRhbGx5X2ZhaWxlZCgpKTsKLX0KLQotLy8g
VGVzdHMgVGVzdFBhcnRSZXN1bHQ6Om5vbmZhdGFsbHlfZmFpbGVkKCkuCi1URVNUX0YoVGVzdFBh
cnRSZXN1bHRUZXN0LCBOb25mYXRhbGx5RmFpbGVkKSB7Ci0gIEVYUEVDVF9GQUxTRShyMV8ubm9u
ZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHIyXy5ub25mYXRhbGx5X2ZhaWxlZCgp
KTsKLSAgRVhQRUNUX0ZBTFNFKHIzXy5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKLX0KLQotLy8gVGVz
dHMgdGhlIFRlc3RQYXJ0UmVzdWx0QXJyYXkgY2xhc3MuCi0KLWNsYXNzIFRlc3RQYXJ0UmVzdWx0
QXJyYXlUZXN0IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgVGVzdFBhcnRSZXN1bHRB
cnJheVRlc3QoKQotICAgICAgOiByMV8oVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUs
ICJmb28vYmFyLmNjIiwgLTEsICJGYWlsdXJlIDEiKSwKLSAgICAgICAgcjJfKFRlc3RQYXJ0UmVz
dWx0OjprRmF0YWxGYWlsdXJlLCAiZm9vL2Jhci5jYyIsIC0xLCAiRmFpbHVyZSAyIikge30KLQot
ICBjb25zdCBUZXN0UGFydFJlc3VsdCByMV8sIHIyXzsKLX07Ci0KLS8vIFRlc3RzIHRoYXQgVGVz
dFBhcnRSZXN1bHRBcnJheSBpbml0aWFsbHkgaGFzIHNpemUgMC4KLVRFU1RfRihUZXN0UGFydFJl
c3VsdEFycmF5VGVzdCwgSW5pdGlhbFNpemVJc1plcm8pIHsKLSAgVGVzdFBhcnRSZXN1bHRBcnJh
eSByZXN1bHRzOwotICBFWFBFQ1RfRVEoMCwgcmVzdWx0cy5zaXplKCkpOwotfQotCi0vLyBUZXN0
cyB0aGF0IFRlc3RQYXJ0UmVzdWx0QXJyYXkgY29udGFpbnMgdGhlIGdpdmVuIFRlc3RQYXJ0UmVz
dWx0Ci0vLyBhZnRlciBvbmUgQXBwZW5kKCkgb3BlcmF0aW9uLgotVEVTVF9GKFRlc3RQYXJ0UmVz
dWx0QXJyYXlUZXN0LCBDb250YWluc0dpdmVuUmVzdWx0QWZ0ZXJBcHBlbmQpIHsKLSAgVGVzdFBh
cnRSZXN1bHRBcnJheSByZXN1bHRzOwotICByZXN1bHRzLkFwcGVuZChyMV8pOwotICBFWFBFQ1Rf
RVEoMSwgcmVzdWx0cy5zaXplKCkpOwotICBFWFBFQ1RfU1RSRVEoIkZhaWx1cmUgMSIsIHJlc3Vs
dHMuR2V0VGVzdFBhcnRSZXN1bHQoMCkubWVzc2FnZSgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBU
ZXN0UGFydFJlc3VsdEFycmF5IGNvbnRhaW5zIHRoZSBnaXZlbiBUZXN0UGFydFJlc3VsdHMKLS8v
IGFmdGVyIHR3byBBcHBlbmQoKSBvcGVyYXRpb25zLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0QXJy
YXlUZXN0LCBDb250YWluc0dpdmVuUmVzdWx0c0FmdGVyVHdvQXBwZW5kcykgewotICBUZXN0UGFy
dFJlc3VsdEFycmF5IHJlc3VsdHM7Ci0gIHJlc3VsdHMuQXBwZW5kKHIxXyk7Ci0gIHJlc3VsdHMu
QXBwZW5kKHIyXyk7Ci0gIEVYUEVDVF9FUSgyLCByZXN1bHRzLnNpemUoKSk7Ci0gIEVYUEVDVF9T
VFJFUSgiRmFpbHVyZSAxIiwgcmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgwKS5tZXNzYWdlKCkp
OwotICBFWFBFQ1RfU1RSRVEoIkZhaWx1cmUgMiIsIHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQo
MSkubWVzc2FnZSgpKTsKLX0KLQotdHlwZWRlZiBUZXN0UGFydFJlc3VsdEFycmF5VGVzdCBUZXN0
UGFydFJlc3VsdEFycmF5RGVhdGhUZXN0OwotCi0vLyBUZXN0cyB0aGF0IHRoZSBwcm9ncmFtIGRp
ZXMgd2hlbiBHZXRUZXN0UGFydFJlc3VsdCgpIGlzIGNhbGxlZCB3aXRoCi0vLyBhbiBpbnZhbGlk
IGluZGV4LgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0QXJyYXlEZWF0aFRlc3QsIERpZXNXaGVuSW5k
ZXhJc091dE9mQm91bmQpIHsKLSAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOwotICByZXN1
bHRzLkFwcGVuZChyMV8pOwotCi0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQocmVzdWx0cy5H
ZXRUZXN0UGFydFJlc3VsdCgtMSksICIiKTsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChy
ZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDEpLCAiIik7Ci19Ci0KLS8vIFRPRE8obWhldWxlQGdv
b2dsZS5jb20pOiBBZGQgYSB0ZXN0IGZvciB0aGUgY2xhc3MgSGFzTmV3RmF0YWxGYWlsdXJlSGVs
cGVyLgotCi19ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3QtdHVwbGVfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3QtdHVwbGVfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTMy
ZjcwYjNkNGU5MDcwZjQ1OTY4NjI1YjNmZjk3YzM5ODQ3NTdkNy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0LXR1cGxlX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwzMjAgKzAsMCBAQAotLy8g
Q29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8K
LS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0
cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0v
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotI2luY2x1ZGUgPGd0ZXN0L2ludGVybmFs
L2d0ZXN0LXR1cGxlLmg+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgotCi1uYW1lc3BhY2UgewotCi11c2luZyA6OnN0ZDo6dHIxOjpnZXQ7Ci11c2luZyA6OnN0
ZDo6dHIxOjptYWtlX3R1cGxlOwotdXNpbmcgOjpzdGQ6OnRyMTo6dHVwbGU7Ci11c2luZyA6OnN0
ZDo6dHIxOjp0dXBsZV9lbGVtZW50OwotdXNpbmcgOjpzdGQ6OnRyMTo6dHVwbGVfc2l6ZTsKLXVz
aW5nIDo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxOwotCi0vLyBUZXN0cyB0aGF0IHR1cGxl
X2VsZW1lbnQ8SywgdHVwbGU8VDAsIFQxLCAuLi4sIFROPiA+Ojp0eXBlIHJldHVybnMgVEsuCi1U
RVNUKHR1cGxlX2VsZW1lbnRfVGVzdCwgUmV0dXJuc0VsZW1lbnRUeXBlKSB7Ci0gIFN0YXRpY0Fz
c2VydFR5cGVFcTxpbnQsIHR1cGxlX2VsZW1lbnQ8MCwgdHVwbGU8aW50LCBjaGFyPiA+Ojp0eXBl
PigpOwotICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50JiwgdHVwbGVfZWxlbWVudDwxLCB0dXBsZTxk
b3VibGUsIGludCY+ID46OnR5cGU+KCk7Ci0gIFN0YXRpY0Fzc2VydFR5cGVFcTxib29sLCB0dXBs
ZV9lbGVtZW50PDIsIHR1cGxlPGRvdWJsZSwgaW50LCBib29sPiA+Ojp0eXBlPigpOwotfQotCi0v
LyBUZXN0cyB0aGF0IHR1cGxlX3NpemU8VD46OnZhbHVlIGdpdmVzIHRoZSBudW1iZXIgb2YgZmll
bGRzIGluIHR1cGxlCi0vLyB0eXBlIFQuCi1URVNUKHR1cGxlX3NpemVfVGVzdCwgUmV0dXJuc051
bWJlck9mRmllbGRzKSB7Ci0gIEVYUEVDVF9FUSgwLCArdHVwbGVfc2l6ZTx0dXBsZTw+ID46OnZh
bHVlKTsKLSAgRVhQRUNUX0VRKDEsICt0dXBsZV9zaXplPHR1cGxlPHZvaWQqPiA+Ojp2YWx1ZSk7
Ci0gIEVYUEVDVF9FUSgxLCArdHVwbGVfc2l6ZTx0dXBsZTxjaGFyPiA+Ojp2YWx1ZSk7Ci0gIEVY
UEVDVF9FUSgxLCArKHR1cGxlX3NpemU8dHVwbGU8dHVwbGU8aW50LCBkb3VibGU+ID4gPjo6dmFs
dWUpKTsKLSAgRVhQRUNUX0VRKDIsICsodHVwbGVfc2l6ZTx0dXBsZTxpbnQmLCBjb25zdCBjaGFy
PiA+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfRVEoMywgKyh0dXBsZV9zaXplPHR1cGxlPGNoYXIqLCB2
b2lkLCBjb25zdCBib29sJj4gPjo6dmFsdWUpKTsKLX0KLQotLy8gVGVzdHMgY29tcGFyaW5nIGEg
dHVwbGUgd2l0aCBpdHNlbGYuCi1URVNUKENvbXBhcmlzb25UZXN0LCBDb21wYXJlc1dpdGhTZWxm
KSB7Ci0gIGNvbnN0IHR1cGxlPGludCwgY2hhciwgYm9vbD4gYSg1LCAnYScsIGZhbHNlKTsKLQot
ICBFWFBFQ1RfVFJVRShhID09IGEpOwotICBFWFBFQ1RfRkFMU0UoYSAhPSBhKTsKLX0KLQotLy8g
VGVzdHMgY29tcGFyaW5nIHR3byB0dXBsZXMgd2l0aCB0aGUgc2FtZSB2YWx1ZS4KLVRFU1QoQ29t
cGFyaXNvblRlc3QsIENvbXBhcmVzRXF1YWxUdXBsZXMpIHsKLSAgY29uc3QgdHVwbGU8aW50LCBi
b29sPiBhKDUsIHRydWUpLCBiKDUsIHRydWUpOwotCi0gIEVYUEVDVF9UUlVFKGEgPT0gYik7Ci0g
IEVYUEVDVF9GQUxTRShhICE9IGIpOwotfQotCi0vLyBUZXN0cyBjb21wYXJpbmcgdHdvIGRpZmZl
cmVudCB0dXBsZXMgdGhhdCBoYXZlIG5vIHJlZmVyZW5jZSBmaWVsZHMuCi1URVNUKENvbXBhcmlz
b25UZXN0LCBDb21wYXJlc1VuZXF1YWxUdXBsZXNXaXRob3V0UmVmZXJlbmNlRmllbGRzKSB7Ci0g
IHR5cGVkZWYgdHVwbGU8Y29uc3QgaW50LCBjaGFyPiBGb29UdXBsZTsKLQotICBjb25zdCBGb29U
dXBsZSBhKDAsICd4Jyk7Ci0gIGNvbnN0IEZvb1R1cGxlIGIoMSwgJ2EnKTsKLQotICBFWFBFQ1Rf
VFJVRShhICE9IGIpOwotICBFWFBFQ1RfRkFMU0UoYSA9PSBiKTsKLQotICBjb25zdCBGb29UdXBs
ZSBjKDEsICdiJyk7Ci0KLSAgRVhQRUNUX1RSVUUoYiAhPSBjKTsKLSAgRVhQRUNUX0ZBTFNFKGIg
PT0gYyk7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyB0d28gZGlmZmVyZW50IHR1cGxlcyB0aGF0
IGhhdmUgcmVmZXJlbmNlIGZpZWxkcy4KLVRFU1QoQ29tcGFyaXNvblRlc3QsIENvbXBhcmVzVW5l
cXVhbFR1cGxlc1dpdGhSZWZlcmVuY2VGaWVsZHMpIHsKLSAgdHlwZWRlZiB0dXBsZTxpbnQmLCBj
b25zdCBjaGFyJj4gRm9vVHVwbGU7Ci0KLSAgaW50IGkgPSA1OwotICBjb25zdCBjaGFyIGNoID0g
J2EnOwotICBjb25zdCBGb29UdXBsZSBhKGksIGNoKTsKLQotICBpbnQgaiA9IDY7Ci0gIGNvbnN0
IEZvb1R1cGxlIGIoaiwgY2gpOwotCi0gIEVYUEVDVF9UUlVFKGEgIT0gYik7Ci0gIEVYUEVDVF9G
QUxTRShhID09IGIpOwotCi0gIGogPSA1OwotICBjb25zdCBjaGFyIGNoMiA9ICdiJzsKLSAgY29u
c3QgRm9vVHVwbGUgYyhqLCBjaDIpOwotCi0gIEVYUEVDVF9UUlVFKGIgIT0gYyk7Ci0gIEVYUEVD
VF9GQUxTRShiID09IGMpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgdHVwbGUgZmllbGQgd2l0aCBh
IHJlZmVyZW5jZSB0eXBlIGlzIGFuIGFsaWFzIG9mIHRoZQotLy8gdmFyaWFibGUgaXQncyBzdXBw
b3NlZCB0byByZWZlcmVuY2UuCi1URVNUKFJlZmVyZW5jZUZpZWxkVGVzdCwgSXNBbGlhc09mUmVm
ZXJlbmNlZFZhcmlhYmxlKSB7Ci0gIGludCBuID0gMDsKLSAgdHVwbGU8Ym9vbCwgaW50Jj4gdCh0
cnVlLCBuKTsKLQotICBuID0gMTsKLSAgRVhQRUNUX0VRKG4sIGdldDwxPih0KSkKLSAgICAgIDw8
ICJDaGFuZ2luZyBhIHVuZGVybHlpbmcgdmFyaWFibGUgc2hvdWxkIHVwZGF0ZSB0aGUgcmVmZXJl
bmNlIGZpZWxkLiI7Ci0KLSAgLy8gTWFrZXMgc3VyZSB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBk
b2Vzbid0IGRvIGFueXRoaW5nIGZ1bm55IHdpdGgKLSAgLy8gdGhlICYgb3BlcmF0b3IgZm9yIHRo
ZSByZXR1cm4gdHlwZSBvZiBnZXQ8PigpLgotICBFWFBFQ1RfRVEoJm4sICYoZ2V0PDE+KHQpKSkK
LSAgICAgIDw8ICJUaGUgYWRkcmVzcyBvZiBhIHJlZmVyZW5jZSBmaWVsZCBzaG91bGQgZXF1YWwg
dGhlIGFkZHJlc3Mgb2YgIgotICAgICAgPDwgInRoZSB1bmRlcmx5aW5nIHZhcmlhYmxlLiI7Ci0K
LSAgZ2V0PDE+KHQpID0gMjsKLSAgRVhQRUNUX0VRKDIsIG4pCi0gICAgICA8PCAiQ2hhbmdpbmcg
YSByZWZlcmVuY2UgZmllbGQgc2hvdWxkIHVwZGF0ZSB0aGUgdW5kZXJseWluZyB2YXJpYWJsZS4i
OwotfQotCi0vLyBUZXN0cyB0aGF0IHR1cGxlJ3MgZGVmYXVsdCBjb25zdHJ1Y3RvciBkZWZhdWx0
IGluaXRpYWxpemVzIGVhY2ggZmllbGQuCi0vLyBUaGlzIHRlc3QgbmVlZHMgdG8gY29tcGlsZSB3
aXRob3V0IGdlbmVyYXRpbmcgd2FybmluZ3MuCi1URVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBE
ZWZhdWx0Q29uc3RydWN0b3JEZWZhdWx0SW5pdGlhbGl6ZXNFYWNoRmllbGQpIHsKLSAgLy8gVGhl
IFRSMSByZXBvcnQgcmVxdWlyZXMgdGhhdCB0dXBsZSdzIGRlZmF1bHQgY29uc3RydWN0b3IgZGVm
YXVsdAotICAvLyBpbml0aWFsaXplcyBlYWNoIGZpZWxkLCBldmVuIGlmIGl0J3MgYSBwcmltaXRp
dmUgdHlwZS4gIElmIHRoZQotICAvLyBpbXBsZW1lbnRhdGlvbiBmb3JnZXRzIHRvIGRvIHRoaXMs
IHRoaXMgdGVzdCB3aWxsIGNhdGNoIGl0IGJ5Ci0gIC8vIGdlbmVyYXRpbmcgd2FybmluZ3MgYWJv
dXQgdXNpbmcgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgKGFzc3VtaW5nCi0gIC8vIGEgZGVjZW50
IGNvbXBpbGVyKS4KLQotICB0dXBsZTw+IGVtcHR5OwotCi0gIHR1cGxlPGludD4gYTEsIGIxOwot
ICBiMSA9IGExOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDA+KGIxKSk7Ci0KLSAgdHVwbGU8aW50LCBk
b3VibGU+IGEyLCBiMjsKLSAgYjIgPSBhMjsKLSAgRVhQRUNUX0VRKDAsIGdldDwwPihiMikpOwot
ICBFWFBFQ1RfRVEoMC4wLCBnZXQ8MT4oYjIpKTsKLQotICB0dXBsZTxkb3VibGUsIGNoYXIsIGJv
b2wqPiBhMywgYjM7Ci0gIGIzID0gYTM7Ci0gIEVYUEVDVF9FUSgwLjAsIGdldDwwPihiMykpOwot
ICBFWFBFQ1RfRVEoJ1wwJywgZ2V0PDE+KGIzKSk7Ci0gIEVYUEVDVF9UUlVFKGdldDwyPihiMykg
PT0gTlVMTCk7Ci0KLSAgdHVwbGU8aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50PiBhMTAsIGIxMDsKLSAgYjEwID0gYTEwOwotICBFWFBFQ1RfRVEoMCwgZ2V0
PDA+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDE+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwg
Z2V0PDI+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDM+KGIxMCkpOwotICBFWFBFQ1RfRVEo
MCwgZ2V0PDQ+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDU+KGIxMCkpOwotICBFWFBFQ1Rf
RVEoMCwgZ2V0PDY+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDc+KGIxMCkpOwotICBFWFBF
Q1RfRVEoMCwgZ2V0PDg+KGIxMCkpOwotICBFWFBFQ1RfRVEoMCwgZ2V0PDk+KGIxMCkpOwotfQot
Ci0vLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSB0dXBsZSBmcm9tIGl0cyBmaWVsZHMuCi1URVNUKFR1
cGxlQ29uc3RydWN0b3JUZXN0LCBDb25zdHJ1Y3RzRnJvbUZpZWxkcykgewotICBpbnQgbiA9IDE7
Ci0gIC8vIFJlZmVyZW5jZSBmaWVsZC4KLSAgdHVwbGU8aW50Jj4gYShuKTsKLSAgRVhQRUNUX0VR
KCZuLCAmKGdldDwwPihhKSkpOwotCi0gIC8vIE5vbi1yZWZlcmVuY2UgZmllbGRzLgotICB0dXBs
ZTxpbnQsIGNoYXI+IGIoNSwgJ2EnKTsKLSAgRVhQRUNUX0VRKDUsIGdldDwwPihiKSk7Ci0gIEVY
UEVDVF9FUSgnYScsIGdldDwxPihiKSk7Ci0KLSAgLy8gQ29uc3QgcmVmZXJlbmNlIGZpZWxkLgot
ICBjb25zdCBpbnQgbSA9IDI7Ci0gIHR1cGxlPGJvb2wsIGNvbnN0IGludCY+IGModHJ1ZSwgbSk7
Ci0gIEVYUEVDVF9UUlVFKGdldDwwPihjKSk7Ci0gIEVYUEVDVF9FUSgmbSwgJihnZXQ8MT4oYykp
KTsKLX0KLQotLy8gVGVzdHMgdHVwbGUncyBjb3B5IGNvbnN0cnVjdG9yLgotVEVTVChUdXBsZUNv
bnN0cnVjdG9yVGVzdCwgQ29weUNvbnN0cnVjdG9yKSB7Ci0gIHR1cGxlPGRvdWJsZSwgYm9vbD4g
YSgwLjAsIHRydWUpOwotICB0dXBsZTxkb3VibGUsIGJvb2w+IGIoYSk7Ci0KLSAgRVhQRUNUX0RP
VUJMRV9FUSgwLjAsIGdldDwwPihiKSk7Ci0gIEVYUEVDVF9UUlVFKGdldDwxPihiKSk7Ci19Ci0K
LS8vIFRlc3RzIGNvbnN0cnVjdGluZyBhIHR1cGxlIGZyb20gYW5vdGhlciB0dXBsZSB0aGF0IGhh
cyBhIGNvbXBhdGlibGUKLS8vIGJ1dCBkaWZmZXJlbnQgdHlwZS4KLVRFU1QoVHVwbGVDb25zdHJ1
Y3RvclRlc3QsIENvbnN0cnVjdHNGcm9tRGlmZmVyZW50VHVwbGVUeXBlKSB7Ci0gIHR1cGxlPGlu
dCwgaW50LCBjaGFyPiBhKDAsIDEsICdhJyk7Ci0gIHR1cGxlPGRvdWJsZSwgbG9uZywgaW50PiBi
KGEpOwotCi0gIEVYUEVDVF9ET1VCTEVfRVEoMC4wLCBnZXQ8MD4oYikpOwotICBFWFBFQ1RfRVEo
MSwgZ2V0PDE+KGIpKTsKLSAgRVhQRUNUX0VRKCdhJywgZ2V0PDI+KGIpKTsKLX0KLQotLy8gVGVz
dHMgY29uc3RydWN0aW5nIGEgMi10dXBsZSBmcm9tIGFuIHN0ZDo6cGFpci4KLVRFU1QoVHVwbGVD
b25zdHJ1Y3RvclRlc3QsIENvbnN0cnVjdHNGcm9tUGFpcikgewotICA6OnN0ZDo6cGFpcjxpbnQs
IGNoYXI+IGEoMSwgJ2EnKTsKLSAgdHVwbGU8aW50LCBjaGFyPiBiKGEpOwotICB0dXBsZTxpbnQs
IGNvbnN0IGNoYXImPiBjKGEpOwotfQotCi0vLyBUZXN0cyBhc3NpZ25pbmcgYSB0dXBsZSB0byBh
bm90aGVyIHR1cGxlIHdpdGggdGhlIHNhbWUgdHlwZS4KLVRFU1QoVHVwbGVBc3NpZ25tZW50VGVz
dCwgQXNzaWduc1RvU2FtZVR1cGxlVHlwZSkgewotICBjb25zdCB0dXBsZTxpbnQsIGxvbmc+IGEo
NSwgN0wpOwotICB0dXBsZTxpbnQsIGxvbmc+IGI7Ci0gIGIgPSBhOwotICBFWFBFQ1RfRVEoNSwg
Z2V0PDA+KGIpKTsKLSAgRVhQRUNUX0VRKDdMLCBnZXQ8MT4oYikpOwotfQotCi0vLyBUZXN0cyBh
c3NpZ25pbmcgYSB0dXBsZSB0byBhbm90aGVyIHR1cGxlIHdpdGggYSBkaWZmZXJlbnQgYnV0Ci0v
LyBjb21wYXRpYmxlIHR5cGUuCi1URVNUKFR1cGxlQXNzaWdubWVudFRlc3QsIEFzc2lnbnNUb0Rp
ZmZlcmVudFR1cGxlVHlwZSkgewotICBjb25zdCB0dXBsZTxpbnQsIGxvbmcsIGJvb2w+IGEoMSwg
N0wsIHRydWUpOwotICB0dXBsZTxsb25nLCBpbnQsIGJvb2w+IGI7Ci0gIGIgPSBhOwotICBFWFBF
Q1RfRVEoMUwsIGdldDwwPihiKSk7Ci0gIEVYUEVDVF9FUSg3LCBnZXQ8MT4oYikpOwotICBFWFBF
Q1RfVFJVRShnZXQ8Mj4oYikpOwotfQotCi0vLyBUZXN0cyBhc3NpZ25pbmcgYW4gc3RkOjpwYWly
IHRvIGEgMi10dXBsZS4KLVRFU1QoVHVwbGVBc3NpZ25tZW50VGVzdCwgQXNzaWduc0Zyb21QYWly
KSB7Ci0gIGNvbnN0IDo6c3RkOjpwYWlyPGludCwgYm9vbD4gYSg1LCB0cnVlKTsKLSAgdHVwbGU8
aW50LCBib29sPiBiOwotICBiID0gYTsKLSAgRVhQRUNUX0VRKDUsIGdldDwwPihiKSk7Ci0gIEVY
UEVDVF9UUlVFKGdldDwxPihiKSk7Ci0KLSAgdHVwbGU8bG9uZywgYm9vbD4gYzsKLSAgYyA9IGE7
Ci0gIEVYUEVDVF9FUSg1TCwgZ2V0PDA+KGMpKTsKLSAgRVhQRUNUX1RSVUUoZ2V0PDE+KGMpKTsK
LX0KLQotLy8gQSBmaXh0dXJlIGZvciB0ZXN0aW5nIGJpZyB0dXBsZXMuCi1jbGFzcyBCaWdUdXBs
ZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB0eXBlZGVmIHR1
cGxlPGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludD4gQmln
VHVwbGU7Ci0KLSAgQmlnVHVwbGVUZXN0KCkgOgotICAgICAgYV8oMSwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMiksCi0gICAgICBiXygxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzKSB7fQot
Ci0gIEJpZ1R1cGxlIGFfLCBiXzsKLX07Ci0KLS8vIFRlc3RzIGNvbnN0cnVjdGluZyBiaWcgdHVw
bGVzLgotVEVTVF9GKEJpZ1R1cGxlVGVzdCwgQ29uc3RydWN0aW9uKSB7Ci0gIEJpZ1R1cGxlIGE7
Ci0gIEJpZ1R1cGxlIGIoYl8pOwotfQotCi0vLyBUZXN0cyB0aGF0IGdldDxOPih0KSByZXR1cm5z
IHRoZSBOLXRoICgwLWJhc2VkKSBmaWVsZCBvZiB0dXBsZSB0LgotVEVTVF9GKEJpZ1R1cGxlVGVz
dCwgZ2V0KSB7Ci0gIEVYUEVDVF9FUSgxLCBnZXQ8MD4oYV8pKTsKLSAgRVhQRUNUX0VRKDIsIGdl
dDw5PihhXykpOwotCi0gIC8vIFRlc3RzIHRoYXQgZ2V0KCkgd29ya3Mgb24gYSBjb25zdCB0dXBs
ZSB0b28uCi0gIGNvbnN0IEJpZ1R1cGxlIGEoYV8pOwotICBFWFBFQ1RfRVEoMSwgZ2V0PDA+KGEp
KTsKLSAgRVhQRUNUX0VRKDIsIGdldDw5PihhKSk7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyBi
aWcgdHVwbGVzLgotVEVTVF9GKEJpZ1R1cGxlVGVzdCwgQ29tcGFyaXNvbnMpIHsKLSAgRVhQRUNU
X1RSVUUoYV8gPT0gYV8pOwotICBFWFBFQ1RfRkFMU0UoYV8gIT0gYV8pOwotCi0gIEVYUEVDVF9U
UlVFKGFfICE9IGJfKTsKLSAgRVhQRUNUX0ZBTFNFKGFfID09IGJfKTsKLX0KLQotVEVTVChNYWtl
VHVwbGVUZXN0LCBXb3Jrc0ZvclNjYWxhclR5cGVzKSB7Ci0gIHR1cGxlPGJvb2wsIGludD4gYTsK
LSAgYSA9IG1ha2VfdHVwbGUodHJ1ZSwgNSk7Ci0gIEVYUEVDVF9UUlVFKGdldDwwPihhKSk7Ci0g
IEVYUEVDVF9FUSg1LCBnZXQ8MT4oYSkpOwotCi0gIHR1cGxlPGNoYXIsIGludCwgbG9uZz4gYjsK
LSAgYiA9IG1ha2VfdHVwbGUoJ2EnLCAnYicsIDUpOwotICBFWFBFQ1RfRVEoJ2EnLCBnZXQ8MD4o
YikpOwotICBFWFBFQ1RfRVEoJ2InLCBnZXQ8MT4oYikpOwotICBFWFBFQ1RfRVEoNSwgZ2V0PDI+
KGIpKTsKLX0KLQotVEVTVChNYWtlVHVwbGVUZXN0LCBXb3Jrc0ZvclBvaW50ZXJzKSB7Ci0gIGlu
dCBhW10gPSB7IDEsIDIsIDMsIDQgfTsKLSAgY29uc3QgY2hhciogY29uc3Qgc3RyID0gImhpIjsK
LSAgaW50KiBjb25zdCBwID0gYTsKLQotICB0dXBsZTxjb25zdCBjaGFyKiwgaW50Kj4gdDsKLSAg
dCA9IG1ha2VfdHVwbGUoc3RyLCBwKTsKLSAgRVhQRUNUX0VRKHN0ciwgZ2V0PDA+KHQpKTsKLSAg
RVhQRUNUX0VRKHAsIGdldDwxPih0KSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0Ml90ZXN0LmNj
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0Ml90ZXN0LmNj
CmluZGV4IDc5YThhODdkY2ZkYmRlNTNjMWUwZDhjNmQxMWE5ODY5MjJiMDJmZjguLmVkOTY0MjFj
NjdjYThhMmZiMzhmM2Q4ODk2MDIzMWVmMjJiZWE2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MKQEAgLTI2LDEz
ICsyNiwxMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAjaW5j
bHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAidGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuaCIK
LSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKICNp
ZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MKaW5kZXggZjJjMzk3MjMxMDE3Nzll
NzcxODQ3ZDU5MmQ5ZmFiYjU2ZjNiNDVjNi4uNGUzOTg2OTdkNmQ4MDliMTJlOGM5NWU2NzQyMGMy
YzU2OGRkYTZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dC10eXBlZC10ZXN0X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MKQEAgLTI2LDE0ICsyNiwxOCBAQAogLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdv
b2dsZS5jb20gKFpoYW55b25nIFdhbikKKworCisjaW5jbHVkZSAidGVzdC9ndGVzdC10eXBlZC10
ZXN0X3Rlc3QuaCIKIAogI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNs
dWRlICJ0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oIgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKworI2lmIF9NU0NfVkVSCitHVEVTVF9ESVNB
QkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MTI3IC8qIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMg
Y29uc3RhbnQgKi8pCisjZW5kaWYgIC8vICBfTVNDX1ZFUgogCiB1c2luZyB0ZXN0aW5nOjpUZXN0
OwogCkBAIC0xNjUsNiArMTY5LDQwIEBAIFRZUEVEX1RFU1QoTnVtZXJpY1Rlc3QsIERlZmF1bHRJ
c1plcm8pIHsKIAogfSAgLy8gbmFtZXNwYWNlIGxpYnJhcnkxCiAKKy8vIFRlc3RzIHRoYXQgY3Vz
dG9tIG5hbWVzIHdvcmsuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVkVGVzdFdp
dGhOYW1lcyA6IHB1YmxpYyBUZXN0IHt9OworCitjbGFzcyBUeXBlZFRlc3ROYW1lcyB7CisgcHVi
bGljOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldE5h
bWUoaW50IGkpIHsKKyAgICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxULCBjaGFyPjo6
dmFsdWUpIHsKKyAgICAgIHJldHVybiBzdGQ6OnN0cmluZygiY2hhciIpICsgOjp0ZXN0aW5nOjpQ
cmludFRvU3RyaW5nKGkpOworICAgIH0KKyAgICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2Ft
ZTxULCBpbnQ+Ojp2YWx1ZSkgeworICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCJpbnQiKSArIDo6
dGVzdGluZzo6UHJpbnRUb1N0cmluZyhpKTsKKyAgICB9CisgIH0KK307CisKK1RZUEVEX1RFU1Rf
Q0FTRShUeXBlZFRlc3RXaXRoTmFtZXMsIFR3b1R5cGVzLCBUeXBlZFRlc3ROYW1lcyk7CisKK1RZ
UEVEX1RFU1QoVHlwZWRUZXN0V2l0aE5hbWVzLCBUZXN0Q2FzZU5hbWUpIHsKKyAgaWYgKHRlc3Rp
bmc6OmludGVybmFsOjpJc1NhbWU8VHlwZVBhcmFtLCBjaGFyPjo6dmFsdWUpIHsKKyAgICBFWFBF
Q1RfU1RSRVEoOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKQorICAgICAgICAgICAg
ICAgICAgICAgLT5jdXJyZW50X3Rlc3RfaW5mbygpCisgICAgICAgICAgICAgICAgICAgICAtPnRl
c3RfY2FzZV9uYW1lKCksCisgICAgICAgICAgICAgICAgICJUeXBlZFRlc3RXaXRoTmFtZXMvY2hh
cjAiKTsKKyAgfQorICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxUeXBlUGFyYW0sIGlu
dD46OnZhbHVlKSB7CisgICAgRVhQRUNUX1NUUkVRKDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldElu
c3RhbmNlKCkKKyAgICAgICAgICAgICAgICAgICAgIC0+Y3VycmVudF90ZXN0X2luZm8oKQorICAg
ICAgICAgICAgICAgICAgICAgLT50ZXN0X2Nhc2VfbmFtZSgpLAorICAgICAgICAgICAgICAgICAi
VHlwZWRUZXN0V2l0aE5hbWVzL2ludDEiKTsKKyAgfQorfQorCiAjZW5kaWYgIC8vIEdURVNUX0hB
U19UWVBFRF9URVNUCiAKIC8vIFRoaXMgI2lmZGVmIGJsb2NrIHRlc3RzIHR5cGUtcGFyYW1ldGVy
aXplZCB0ZXN0cy4KQEAgLTI2NSw2ICszMDMsNDYgQEAgUkVHSVNURVJfVFlQRURfVEVTVF9DQVNF
X1AoRGVyaXZlZFRlc3QsCiB0eXBlZGVmIFR5cGVzPHNob3J0LCBsb25nPiBNeVR3b1R5cGVzOwog
SU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIERlcml2ZWRUZXN0LCBNeVR3b1R5cGVz
KTsKIAorLy8gVGVzdHMgdGhhdCBjdXN0b20gbmFtZXMgd29yayB3aXRoIHR5cGUgcGFyYW1ldHJp
emVkIHRlc3RzLiBXZSByZXVzZSB0aGUKKy8vIFR3b1R5cGVzIGZyb20gYWJvdmUgaGVyZS4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRoTmFtZXMg
OiBwdWJsaWMgVGVzdCB7fTsKKworVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtZXRyaXplZFRl
c3RXaXRoTmFtZXMpOworCitUWVBFRF9URVNUX1AoVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRoTmFt
ZXMsIFRlc3RDYXNlTmFtZSkgeworICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxUeXBl
UGFyYW0sIGNoYXI+Ojp2YWx1ZSkgeworICAgIEVYUEVDVF9TVFJFUSg6OnRlc3Rpbmc6OlVuaXRU
ZXN0OjpHZXRJbnN0YW5jZSgpCisgICAgICAgICAgICAgICAgICAgICAtPmN1cnJlbnRfdGVzdF9p
bmZvKCkKKyAgICAgICAgICAgICAgICAgICAgIC0+dGVzdF9jYXNlX25hbWUoKSwKKyAgICAgICAg
ICAgICAgICAgIkN1c3RvbU5hbWUvVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRoTmFtZXMvcGFyQ2hh
cjAiKTsKKyAgfQorICBpZiAodGVzdGluZzo6aW50ZXJuYWw6OklzU2FtZTxUeXBlUGFyYW0sIGlu
dD46OnZhbHVlKSB7CisgICAgRVhQRUNUX1NUUkVRKDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldElu
c3RhbmNlKCkKKyAgICAgICAgICAgICAgICAgICAgIC0+Y3VycmVudF90ZXN0X2luZm8oKQorICAg
ICAgICAgICAgICAgICAgICAgLT50ZXN0X2Nhc2VfbmFtZSgpLAorICAgICAgICAgICAgICAgICAi
Q3VzdG9tTmFtZS9UeXBlUGFyYW1ldHJpemVkVGVzdFdpdGhOYW1lcy9wYXJJbnQxIik7CisgIH0K
K30KKworUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtZXRyaXplZFRlc3RXaXRo
TmFtZXMsIFRlc3RDYXNlTmFtZSk7CisKK2NsYXNzIFR5cGVQYXJhbWV0cml6ZWRUZXN0TmFtZXMg
eworIHB1YmxpYzoKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRpYyBzdGQ6OnN0cmlu
ZyBHZXROYW1lKGludCBpKSB7CisgICAgaWYgKHRlc3Rpbmc6OmludGVybmFsOjpJc1NhbWU8VCwg
Y2hhcj46OnZhbHVlKSB7CisgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoInBhckNoYXIiKSArIDo6
dGVzdGluZzo6UHJpbnRUb1N0cmluZyhpKTsKKyAgICB9CisgICAgaWYgKHRlc3Rpbmc6OmludGVy
bmFsOjpJc1NhbWU8VCwgaW50Pjo6dmFsdWUpIHsKKyAgICAgIHJldHVybiBzdGQ6OnN0cmluZygi
cGFySW50IikgKyA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoaSk7CisgICAgfQorICB9Cit9Owor
CitJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChDdXN0b21OYW1lLCBUeXBlUGFyYW1ldHJp
emVkVGVzdFdpdGhOYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR3b1R5cGVz
LCBUeXBlUGFyYW1ldHJpemVkVGVzdE5hbWVzKTsKKwogLy8gVGVzdHMgdGhhdCBtdWx0aXBsZSBU
WVBFRF9URVNUX0NBU0VfUCdzIGNhbiBiZSBkZWZpbmVkIGluIHRoZSBzYW1lCiAvLyB0cmFuc2xh
dGlvbiB1bml0LgogCkBAIC0zNDMsNiArNDIxLDI1IEBAIFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FT
RV9QKE51bWVyaWNUZXN0LAogdHlwZWRlZiBUeXBlczxpbnQsIGRvdWJsZT4gTnVtZXJpY1R5cGVz
OwogSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIE51bWVyaWNUZXN0LCBOdW1lcmlj
VHlwZXMpOwogCitzdGF0aWMgY29uc3QgY2hhciogR2V0VGVzdE5hbWUoKSB7CisgIHJldHVybiB0
ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKS0+bmFt
ZSgpOworfQorLy8gVGVzdCB0aGUgc3RyaXBwaW5nIG9mIHNwYWNlIGZyb20gdGVzdCBuYW1lcwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFRyaW1tZWRUZXN0IDogcHVibGljIFRlc3QgeyB9
OworVFlQRURfVEVTVF9DQVNFX1AoVHJpbW1lZFRlc3QpOworVFlQRURfVEVTVF9QKFRyaW1tZWRU
ZXN0LCBUZXN0MSkgeyBFWFBFQ1RfU1RSRVEoIlRlc3QxIiwgR2V0VGVzdE5hbWUoKSk7IH0KK1RZ
UEVEX1RFU1RfUChUcmltbWVkVGVzdCwgVGVzdDIpIHsgRVhQRUNUX1NUUkVRKCJUZXN0MiIsIEdl
dFRlc3ROYW1lKCkpOyB9CitUWVBFRF9URVNUX1AoVHJpbW1lZFRlc3QsIFRlc3QzKSB7IEVYUEVD
VF9TVFJFUSgiVGVzdDMiLCBHZXRUZXN0TmFtZSgpKTsgfQorVFlQRURfVEVTVF9QKFRyaW1tZWRU
ZXN0LCBUZXN0NCkgeyBFWFBFQ1RfU1RSRVEoIlRlc3Q0IiwgR2V0VGVzdE5hbWUoKSk7IH0KK1RZ
UEVEX1RFU1RfUChUcmltbWVkVGVzdCwgVGVzdDUpIHsgRVhQRUNUX1NUUkVRKCJUZXN0NSIsIEdl
dFRlc3ROYW1lKCkpOyB9CitSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUCgKKyAgICBUcmltbWVk
VGVzdCwKKyAgICBUZXN0MSwgVGVzdDIsVGVzdDMgLCBUZXN0NCAsVGVzdDUgKTsgIC8vIE5PTElO
VAordGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4gc3RydWN0IE15UGFpciB7fTsK
Ky8vIEJlIHN1cmUgdG8gdHJ5IGEgdHlwZSB3aXRoIGEgY29tbWEgaW4gaXRzIG5hbWUganVzdCBp
biBjYXNlIGl0IG1hdHRlcnMuCit0eXBlZGVmIFR5cGVzPGludCwgZG91YmxlLCBNeVBhaXI8aW50
LCBpbnQ+ID4gVHJpbVR5cGVzOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIFRy
aW1tZWRUZXN0LCBUcmltVHlwZXMpOworCiB9ICAvLyBuYW1lc3BhY2UgbGlicmFyeTIKIAogI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCkBAIC0zNTcsNCArNDU0LDggQEAgSU5TVEFO
VElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIE51bWVyaWNUZXN0LCBOdW1lcmljVHlwZXMpOwog
Ly8gbXVzdCBiZSBkZWZpbmVkKS4gVGhpcyBkdW1teSB0ZXN0IGtlZXBzIGd0ZXN0X21haW4gbGlu
a2VkIGluLgogVEVTVChEdW1teVRlc3QsIFR5cGVkVGVzdHNBcmVOb3RTdXBwb3J0ZWRPblRoaXNQ
bGF0Zm9ybSkge30KIAorI2lmIF9NU0NfVkVSCitHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19Q
T1BfKCkgIC8vICA0MTI3CisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICBf
TVNDX1ZFUgorCiAjZW5kaWYgIC8vICNpZiAhZGVmaW5lZChHVEVTVF9IQVNfVFlQRURfVEVTVCkg
JiYgIWRlZmluZWQoR1RFU1RfSEFTX1RZUEVEX1RFU1RfUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oCmluZGV4IDQwZGZlYWM2
ZTAxZDk3ZWNmN2ZlYmI4NjVmY2U2Njg0OGJhOGU4ZGIuLjJjY2U2N2M4MjVhNmNhYmRiOWE1NGI5
MTkyOWMwMGM5OTJhMGQ0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuaApAQCAtMjYsMTMgKzI2LDEyIEBACiAvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCiAKICNpZm5kZWYgR1RFU1RfVEVTVF9HVEVT
VF9UWVBFRF9URVNUX1RFU1RfSF8KICNkZWZpbmUgR1RFU1RfVEVTVF9HVEVTVF9UWVBFRF9URVNU
X1RFU1RfSF8KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKIAogI2lmIEdURVNUX0hBU19UWVBFRF9URVNUX1AKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2MKaW5kZXgg
N2UwZjhmODA0NWQ3MWMwMTVkMTI5NGZmZWY0Y2E1NDVkZGM1NTFmOS4uZjNlYTAzYTU5NmQwZjk5
YTM5MTI1MjYzMGRjYTEwNjIyOTMxMTJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjCkBAIC0yNSwxNSArMjUs
MTQgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwog
Ly8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCi0vLyBUaGUg
R29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBUaGUgR29vZ2xl
IEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCiAvLwogLy8g
VGhpcyBmaWxlIGNvbnRhaW5zIHRlc3RzIHZlcmlmeWluZyBjb3JyZWN0bmVzcyBvZiBkYXRhIHBy
b3ZpZGVkIHZpYQogLy8gVW5pdFRlc3QncyBwdWJsaWMgbWV0aG9kcy4KIAotI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2luY2x1ZGUgPHN0cmlu
Zy5oPiAgLy8gRm9yIHN0cmNtcC4KICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC01NCw3ICs1Myw3
IEBAIGNsYXNzIFVuaXRUZXN0SGVscGVyIHsKICBwdWJsaWM6CiAgIC8vIFJldHVybnMgdGhlIGFy
cmF5IG9mIHBvaW50ZXJzIHRvIGFsbCB0ZXN0IGNhc2VzIHNvcnRlZCBieSB0aGUgdGVzdCBjYXNl
CiAgIC8vIG5hbWUuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUg
YXJyYXkuCi0gIHN0YXRpYyBUZXN0Q2FzZSBjb25zdCoqIGNvbnN0IEdldFNvcnRlZFRlc3RDYXNl
cygpIHsKKyAgc3RhdGljIFRlc3RDYXNlIGNvbnN0KiogR2V0U29ydGVkVGVzdENhc2VzKCkgewog
ICAgIFVuaXRUZXN0JiB1bml0X3Rlc3QgPSAqVW5pdFRlc3Q6OkdldEluc3RhbmNlKCk7CiAgICAg
VGVzdENhc2UgY29uc3QqKiBjb25zdCB0ZXN0X2Nhc2VzID0KICAgICAgICAgbmV3IGNvbnN0IFRl
c3RDYXNlKlt1bml0X3Rlc3QudG90YWxfdGVzdF9jYXNlX2NvdW50KCldOwpAQCAtODMsNyArODIs
NyBAQCBjbGFzcyBVbml0VGVzdEhlbHBlciB7CiAgIC8vIFJldHVybnMgdGhlIGFycmF5IG9mIHBv
aW50ZXJzIHRvIGFsbCB0ZXN0cyBpbiBhIHBhcnRpY3VsYXIgdGVzdCBjYXNlCiAgIC8vIHNvcnRl
ZCBieSB0aGUgdGVzdCBuYW1lLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRp
bmcgdGhlCiAgIC8vIGFycmF5LgotICBzdGF0aWMgVGVzdEluZm8gY29uc3QqKiBjb25zdCBHZXRT
b3J0ZWRUZXN0cyhjb25zdCBUZXN0Q2FzZSogdGVzdF9jYXNlKSB7CisgIHN0YXRpYyBUZXN0SW5m
byBjb25zdCoqIEdldFNvcnRlZFRlc3RzKGNvbnN0IFRlc3RDYXNlKiB0ZXN0X2Nhc2UpIHsKICAg
ICBUZXN0SW5mbyBjb25zdCoqIGNvbnN0IHRlc3RzID0KICAgICAgICAgbmV3IGNvbnN0IFRlc3RJ
bmZvKlt0ZXN0X2Nhc2UtPnRvdGFsX3Rlc3RfY291bnQoKV07CiAKQEAgLTEwMywxMiArMTAyLDYg
QEAgVFlQRURfVEVTVChUZXN0Q2FzZVdpdGhDb21tZW50VGVzdCwgRHVtbXkpIHt9CiAKIGNvbnN0
IGludCBrVHlwZWRUZXN0Q2FzZXMgPSAxOwogY29uc3QgaW50IGtUeXBlZFRlc3RzID0gMTsKLQot
U3RyaW5nIEdldEV4cGVjdGVkVGVzdENhc2VDb21tZW50KCkgewotICBNZXNzYWdlIGNvbW1lbnQ7
Ci0gIGNvbW1lbnQgPDwgIlR5cGVQYXJhbSA9ICIgPDwgR2V0VHlwZU5hbWU8aW50PigpLmNfc3Ry
KCk7Ci0gIHJldHVybiBjb21tZW50LkdldFN0cmluZygpOwotfQogI2Vsc2UKIGNvbnN0IGludCBr
VHlwZWRUZXN0Q2FzZXMgPSAwOwogY29uc3QgaW50IGtUeXBlZFRlc3RzID0gMDsKQEAgLTE0Mywx
MiArMTM2LDE5IEBAIFRFU1QoQXBpVGVzdCwgVW5pdFRlc3RJbW11dGFibGVBY2Nlc3NvcnNXb3Jr
KSB7CiAgIFJlY29yZFByb3BlcnR5KCJrZXkiLCAidmFsdWUiKTsKIH0KIAorQXNzZXJ0aW9uUmVz
dWx0IElzTnVsbChjb25zdCBjaGFyKiBzdHIpIHsKKyAgaWYgKHN0ciAhPSBOVUxMKSB7CisgICAg
cmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCAiYXJndW1lbnQgaXMgIiA8PCBz
dHI7CisgIH0KKyAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKK30KKwogVEVTVChBcGlUZXN0
LCBUZXN0Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dvcmspIHsKICAgY29uc3QgVGVzdENhc2UqIHRl
c3RfY2FzZSA9IFVuaXRUZXN0SGVscGVyOjpGaW5kVGVzdENhc2UoIkFwaVRlc3QiKTsKICAgQVNT
RVJUX1RSVUUodGVzdF9jYXNlICE9IE5VTEwpOwogCiAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIs
IHRlc3RfY2FzZS0+bmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0X2Nhc2UtPmNvbW1l
bnQoKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0X2Nhc2UtPnR5cGVfcGFyYW0oKSkpOwog
ICBFWFBFQ1RfVFJVRSh0ZXN0X2Nhc2UtPnNob3VsZF9ydW4oKSk7CiAgIEVYUEVDVF9FUSgxLCB0
ZXN0X2Nhc2UtPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgIEVYUEVDVF9FUSgzLCB0ZXN0X2Nh
c2UtPnRlc3RfdG9fcnVuX2NvdW50KCkpOwpAQCAtMTU4LDI2ICsxNTgsMjYgQEAgVEVTVChBcGlU
ZXN0LCBUZXN0Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dvcmspIHsKIAogICBFWFBFQ1RfU1RSRVEo
IkRJU0FCTEVEX0R1bW15MSIsIHRlc3RzWzBdLT5uYW1lKCkpOwogICBFWFBFQ1RfU1RSRVEoIkFw
aVRlc3QiLCB0ZXN0c1swXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwg
dGVzdHNbMF0tPmNvbW1lbnQoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMF0tPnRlc3Rf
Y2FzZV9jb21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMF0tPnZhbHVlX3Bh
cmFtKCkpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzBdLT50eXBlX3BhcmFtKCkpKTsK
ICAgRVhQRUNUX0ZBTFNFKHRlc3RzWzBdLT5zaG91bGRfcnVuKCkpOwogCiAgIEVYUEVDVF9TVFJF
USgiVGVzdENhc2VEaXNhYmxlZEFjY2Vzc29yc1dvcmsiLCB0ZXN0c1sxXS0+bmFtZSgpKTsKICAg
RVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbMV0tPnRlc3RfY2FzZV9uYW1lKCkpOwotICBF
WFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzFdLT5jb21tZW50KCkpOwotICBFWFBFQ1RfU1RSRVEoIiIs
IHRlc3RzWzFdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRl
c3RzWzFdLT52YWx1ZV9wYXJhbSgpKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1sxXS0+
dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVDVF9UUlVFKHRlc3RzWzFdLT5zaG91bGRfcnVuKCkpOwog
CiAgIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VJbW11dGFibGVBY2Nlc3NvcnNXb3JrIiwgdGVzdHNb
Ml0tPm5hbWUoKSk7CiAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzJdLT50ZXN0X2Nh
c2VfbmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1syXS0+Y29tbWVudCgpKTsKLSAg
RVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1syXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgIEVYUEVD
VF9UUlVFKElzTnVsbCh0ZXN0c1syXS0+dmFsdWVfcGFyYW0oKSkpOworICBFWFBFQ1RfVFJVRShJ
c051bGwodGVzdHNbMl0tPnR5cGVfcGFyYW0oKSkpOwogICBFWFBFQ1RfVFJVRSh0ZXN0c1syXS0+
c2hvdWxkX3J1bigpKTsKIAogICBFWFBFQ1RfU1RSRVEoIlVuaXRUZXN0SW1tdXRhYmxlQWNjZXNz
b3JzV29yayIsIHRlc3RzWzNdLT5uYW1lKCkpOwogICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0
ZXN0c1szXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbM10t
PmNvbW1lbnQoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbM10tPnRlc3RfY2FzZV9jb21t
ZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbM10tPnZhbHVlX3BhcmFtKCkpKTsK
KyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzNdLT50eXBlX3BhcmFtKCkpKTsKICAgRVhQRUNU
X1RSVUUodGVzdHNbM10tPnNob3VsZF9ydW4oKSk7CiAKICAgZGVsZXRlW10gdGVzdHM7CkBAIC0x
ODgsNyArMTg4LDcgQEAgVEVTVChBcGlUZXN0LCBUZXN0Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dv
cmspIHsKICAgQVNTRVJUX1RSVUUodGVzdF9jYXNlICE9IE5VTEwpOwogCiAgIEVYUEVDVF9TVFJF
USgiVGVzdENhc2VXaXRoQ29tbWVudFRlc3QvMCIsIHRlc3RfY2FzZS0+bmFtZSgpKTsKLSAgRVhQ
RUNUX1NUUkVRKEdldEV4cGVjdGVkVGVzdENhc2VDb21tZW50KCkuY19zdHIoKSwgdGVzdF9jYXNl
LT5jb21tZW50KCkpOworICBFWFBFQ1RfU1RSRVEoR2V0VHlwZU5hbWU8aW50PigpLmNfc3RyKCks
IHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgpKTsKICAgRVhQRUNUX1RSVUUodGVzdF9jYXNlLT5zaG91
bGRfcnVuKCkpOwogICBFWFBFQ1RfRVEoMCwgdGVzdF9jYXNlLT5kaXNhYmxlZF90ZXN0X2NvdW50
KCkpOwogICBFWFBFQ1RfRVEoMSwgdGVzdF9jYXNlLT50ZXN0X3RvX3J1bl9jb3VudCgpKTsKQEAg
LTE5OCw5ICsxOTgsOCBAQCBURVNUKEFwaVRlc3QsIFRlc3RDYXNlSW1tdXRhYmxlQWNjZXNzb3Jz
V29yaykgewogCiAgIEVYUEVDVF9TVFJFUSgiRHVtbXkiLCB0ZXN0c1swXS0+bmFtZSgpKTsKICAg
RVhQRUNUX1NUUkVRKCJUZXN0Q2FzZVdpdGhDb21tZW50VGVzdC8wIiwgdGVzdHNbMF0tPnRlc3Rf
Y2FzZV9uYW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzBdLT5jb21tZW50KCkpOwot
ICBFWFBFQ1RfU1RSRVEoR2V0RXhwZWN0ZWRUZXN0Q2FzZUNvbW1lbnQoKS5jX3N0cigpLAotICAg
ICAgICAgICAgICAgdGVzdHNbMF0tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICBFWFBFQ1RfVFJV
RShJc051bGwodGVzdHNbMF0tPnZhbHVlX3BhcmFtKCkpKTsKKyAgRVhQRUNUX1NUUkVRKEdldFR5
cGVOYW1lPGludD4oKS5jX3N0cigpLCB0ZXN0c1swXS0+dHlwZV9wYXJhbSgpKTsKICAgRVhQRUNU
X1RSVUUodGVzdHNbMF0tPnNob3VsZF9ydW4oKSk7CiAKICAgZGVsZXRlW10gdGVzdHM7CkBAIC0y
MTIsNyArMjExLDcgQEAgVEVTVChBcGlUZXN0LCBUZXN0Q2FzZURpc2FibGVkQWNjZXNzb3JzV29y
aykgewogICBBU1NFUlRfVFJVRSh0ZXN0X2Nhc2UgIT0gTlVMTCk7CiAKICAgRVhQRUNUX1NUUkVR
KCJESVNBQkxFRF9UZXN0IiwgdGVzdF9jYXNlLT5uYW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIs
IHRlc3RfY2FzZS0+Y29tbWVudCgpKTsKKyAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfY2FzZS0+
dHlwZV9wYXJhbSgpKSk7CiAgIEVYUEVDVF9GQUxTRSh0ZXN0X2Nhc2UtPnNob3VsZF9ydW4oKSk7
CiAgIEVYUEVDVF9FUSgxLCB0ZXN0X2Nhc2UtPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgIEVY
UEVDVF9FUSgwLCB0ZXN0X2Nhc2UtPnRlc3RfdG9fcnVuX2NvdW50KCkpOwpAQCAtMjIxLDggKzIy
MCw4IEBAIFRFU1QoQXBpVGVzdCwgVGVzdENhc2VEaXNhYmxlZEFjY2Vzc29yc1dvcmspIHsKICAg
Y29uc3QgVGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9IHRlc3RfY2FzZS0+R2V0VGVzdEluZm8o
MCk7CiAgIEVYUEVDVF9TVFJFUSgiRHVtbXkyIiwgdGVzdF9pbmZvLT5uYW1lKCkpOwogICBFWFBF
Q1RfU1RSRVEoIkRJU0FCTEVEX1Rlc3QiLCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOwot
ICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RfaW5mby0+Y29tbWVudCgpKTsKLSAgRVhQRUNUX1NUUkVR
KCIiLCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9jb21tZW50KCkpOworICBFWFBFQ1RfVFJVRShJc051
bGwodGVzdF9pbmZvLT52YWx1ZV9wYXJhbSgpKSk7CisgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0
X2luZm8tPnR5cGVfcGFyYW0oKSkpOwogICBFWFBFQ1RfRkFMU0UodGVzdF9pbmZvLT5zaG91bGRf
cnVuKCkpOwogfQogCkBAIC0yNDcsNyArMjQ2LDcgQEAgY2xhc3MgRmluYWxTdWNjZXNzQ2hlY2tl
ciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7CiAgICAgY29uc3QgVGVzdENhc2UqKiBjb25zdCB0ZXN0
X2Nhc2VzID0gVW5pdFRlc3RIZWxwZXI6OkdldFNvcnRlZFRlc3RDYXNlcygpOwogCiAgICAgRVhQ
RUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdF9jYXNlc1swXS0+bmFtZSgpKTsKLSAgICBFWFBFQ1Rf
U1RSRVEoIiIsIHRlc3RfY2FzZXNbMF0tPmNvbW1lbnQoKSk7CisgICAgRVhQRUNUX1RSVUUoSXNO
dWxsKHRlc3RfY2FzZXNbMF0tPnR5cGVfcGFyYW0oKSkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3Rf
Y2FzZXNbMF0tPnNob3VsZF9ydW4oKSk7CiAgICAgRVhQRUNUX0VRKDEsIHRlc3RfY2FzZXNbMF0t
PmRpc2FibGVkX3Rlc3RfY291bnQoKSk7CiAgICAgQVNTRVJUX0VRKDQsIHRlc3RfY2FzZXNbMF0t
PnRvdGFsX3Rlc3RfY291bnQoKSk7CkBAIC0yNTcsNyArMjU2LDcgQEAgY2xhc3MgRmluYWxTdWNj
ZXNzQ2hlY2tlciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7CiAgICAgRVhQRUNUX0ZBTFNFKHRlc3Rf
Y2FzZXNbMF0tPkZhaWxlZCgpKTsKIAogICAgIEVYUEVDVF9TVFJFUSgiRElTQUJMRURfVGVzdCIs
IHRlc3RfY2FzZXNbMV0tPm5hbWUoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0X2Nhc2Vz
WzFdLT5jb21tZW50KCkpOworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0X2Nhc2VzWzFdLT50
eXBlX3BhcmFtKCkpKTsKICAgICBFWFBFQ1RfRkFMU0UodGVzdF9jYXNlc1sxXS0+c2hvdWxkX3J1
bigpKTsKICAgICBFWFBFQ1RfRVEoMSwgdGVzdF9jYXNlc1sxXS0+ZGlzYWJsZWRfdGVzdF9jb3Vu
dCgpKTsKICAgICBBU1NFUlRfRVEoMSwgdGVzdF9jYXNlc1sxXS0+dG90YWxfdGVzdF9jb3VudCgp
KTsKQEAgLTI2Niw4ICsyNjUsNyBAQCBjbGFzcyBGaW5hbFN1Y2Nlc3NDaGVja2VyIDogcHVibGlj
IEVudmlyb25tZW50IHsKIAogI2lmIEdURVNUX0hBU19UWVBFRF9URVNUCiAgICAgRVhQRUNUX1NU
UkVRKCJUZXN0Q2FzZVdpdGhDb21tZW50VGVzdC8wIiwgdGVzdF9jYXNlc1syXS0+bmFtZSgpKTsK
LSAgICBFWFBFQ1RfU1RSRVEoR2V0RXhwZWN0ZWRUZXN0Q2FzZUNvbW1lbnQoKS5jX3N0cigpLAot
ICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2VzWzJdLT5jb21tZW50KCkpOworICAgIEVYUEVDVF9T
VFJFUShHZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIoKSwgdGVzdF9jYXNlc1syXS0+dHlwZV9wYXJh
bSgpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0X2Nhc2VzWzJdLT5zaG91bGRfcnVuKCkpOwogICAg
IEVYUEVDVF9FUSgwLCB0ZXN0X2Nhc2VzWzJdLT5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOwogICAg
IEFTU0VSVF9FUSgxLCB0ZXN0X2Nhc2VzWzJdLT50b3RhbF90ZXN0X2NvdW50KCkpOwpAQCAtMjg1
LDI0ICsyODMsMjQgQEAgY2xhc3MgRmluYWxTdWNjZXNzQ2hlY2tlciA6IHB1YmxpYyBFbnZpcm9u
bWVudCB7CiAKICAgICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlRGlzYWJsZWRBY2Nlc3NvcnNXb3Jr
IiwgdGVzdHNbMV0tPm5hbWUoKSk7CiAgICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNb
MV0tPnRlc3RfY2FzZV9uYW1lKCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbMV0tPmNv
bW1lbnQoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCB0ZXN0c1sxXS0+dGVzdF9jYXNlX2NvbW1l
bnQoKSk7CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzFdLT52YWx1ZV9wYXJhbSgpKSk7
CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzFdLT50eXBlX3BhcmFtKCkpKTsKICAgICBF
WFBFQ1RfVFJVRSh0ZXN0c1sxXS0+c2hvdWxkX3J1bigpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0
c1sxXS0+cmVzdWx0KCktPlBhc3NlZCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgdGVzdHNbMV0tPnJl
c3VsdCgpLT50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwogCiAgICAgRVhQRUNUX1NUUkVRKCJUZXN0
Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dvcmsiLCB0ZXN0c1syXS0+bmFtZSgpKTsKICAgICBFWFBF
Q1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1syXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gICAgRVhQ
RUNUX1NUUkVRKCIiLCB0ZXN0c1syXS0+Y29tbWVudCgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIs
IHRlc3RzWzJdLT50ZXN0X2Nhc2VfY29tbWVudCgpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwo
dGVzdHNbMl0tPnZhbHVlX3BhcmFtKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNb
Ml0tPnR5cGVfcGFyYW0oKSkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzJdLT5zaG91bGRfcnVu
KCkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RzWzJdLT5yZXN1bHQoKS0+UGFzc2VkKCkpOwogICAg
IEVYUEVDVF9FUSgwLCB0ZXN0c1syXS0+cmVzdWx0KCktPnRlc3RfcHJvcGVydHlfY291bnQoKSk7
CiAKICAgICBFWFBFQ1RfU1RSRVEoIlVuaXRUZXN0SW1tdXRhYmxlQWNjZXNzb3JzV29yayIsIHRl
c3RzWzNdLT5uYW1lKCkpOwogICAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzNdLT50
ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIHRlc3RzWzNdLT5jb21tZW50
KCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwgdGVzdHNbM10tPnRlc3RfY2FzZV9jb21tZW50KCkp
OworICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1szXS0+dmFsdWVfcGFyYW0oKSkpOworICAg
IEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1szXS0+dHlwZV9wYXJhbSgpKSk7CiAgICAgRVhQRUNU
X1RSVUUodGVzdHNbM10tPnNob3VsZF9ydW4oKSk7CiAgICAgRVhQRUNUX1RSVUUodGVzdHNbM10t
PnJlc3VsdCgpLT5QYXNzZWQoKSk7CiAgICAgRVhQRUNUX0VRKDEsIHRlc3RzWzNdLT5yZXN1bHQo
KS0+dGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKQEAgLTMxOCw5ICszMTYsOCBAQCBjbGFzcyBGaW5h
bFN1Y2Nlc3NDaGVja2VyIDogcHVibGljIEVudmlyb25tZW50IHsKIAogICAgIEVYUEVDVF9TVFJF
USgiRHVtbXkiLCB0ZXN0c1swXS0+bmFtZSgpKTsKICAgICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNl
V2l0aENvbW1lbnRUZXN0LzAiLCB0ZXN0c1swXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gICAgRVhQ
RUNUX1NUUkVRKCIiLCB0ZXN0c1swXS0+Y29tbWVudCgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoR2V0
RXhwZWN0ZWRUZXN0Q2FzZUNvbW1lbnQoKS5jX3N0cigpLAotICAgICAgICAgICAgICAgICB0ZXN0
c1swXS0+dGVzdF9jYXNlX2NvbW1lbnQoKSk7CisgICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3Rz
WzBdLT52YWx1ZV9wYXJhbSgpKSk7CisgICAgRVhQRUNUX1NUUkVRKEdldFR5cGVOYW1lPGludD4o
KS5jX3N0cigpLCB0ZXN0c1swXS0+dHlwZV9wYXJhbSgpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0
c1swXS0+c2hvdWxkX3J1bigpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0c1swXS0+cmVzdWx0KCkt
PlBhc3NlZCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgdGVzdHNbMF0tPnJlc3VsdCgpLT50ZXN0X3By
b3BlcnR5X2NvdW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF9hbGxfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
YWxsX3Rlc3QuY2MKaW5kZXggZTFlZGIwOGUzM2ExOGMyMzkxMTVkYWQ1ZTRhMGQ2ZmI2MzJkYmIx
Ny4uZTYxZTM2YjFkZmU4ZGEwMzAxNmFmNTc4NTViMmM3ODFlZTdkOTFlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9hbGxfdGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2FsbF90ZXN0LmNjCkBAIC0yNiwyMyArMjYs
MjEgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwog
Ly8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBUZXN0
cyBmb3IgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCisvLyBUZXN0
cyBmb3IgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIFRl
c3QpCiAvLwogLy8gU29tZXRpbWVzIGl0J3MgZGVzaXJhYmxlIHRvIGJ1aWxkIG1vc3Qgb2YgR29v
Z2xlIFRlc3QncyBvd24gdGVzdHMKIC8vIGJ5IGNvbXBpbGluZyBhIHNpbmdsZSBmaWxlLiAgVGhp
cyBmaWxlIHNlcnZlcyB0aGlzIHB1cnBvc2UuCi0jaW5jbHVkZSAidGVzdC9ndGVzdC1maWxlcGF0
aF90ZXN0LmNjIgotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNjIgotI2lu
Y2x1ZGUgInRlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjIgotI2luY2x1ZGUgInRlc3QvZ3Rlc3Qt
b3B0aW9uc190ZXN0LmNjIgotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtcG9ydF90ZXN0LmNjIgorI2lu
Y2x1ZGUgInRlc3QvZ29vZ2xldGVzdC1maWxlcGF0aC10ZXN0LmNjIgorI2luY2x1ZGUgInRlc3Qv
Z29vZ2xldGVzdC1saW5rZWQtcHRyLXRlc3QuY2MiCisjaW5jbHVkZSAidGVzdC9nb29nbGV0ZXN0
LW1lc3NhZ2UtdGVzdC5jYyIKKyNpbmNsdWRlICJ0ZXN0L2dvb2dsZXRlc3Qtb3B0aW9ucy10ZXN0
LmNjIgorI2luY2x1ZGUgInRlc3QvZ29vZ2xldGVzdC1wb3J0LXRlc3QuY2MiCiAjaW5jbHVkZSAi
dGVzdC9ndGVzdF9wcmVkX2ltcGxfdW5pdHRlc3QuY2MiCiAjaW5jbHVkZSAidGVzdC9ndGVzdF9w
cm9kX3Rlc3QuY2MiCi0jaW5jbHVkZSAidGVzdC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYyIKKyNp
bmNsdWRlICJ0ZXN0L2dvb2dsZXRlc3QtdGVzdC1wYXJ0LXRlc3QuY2MiCiAjaW5jbHVkZSAidGVz
dC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MiCiAjaW5jbHVkZSAidGVzdC9ndGVzdC10eXBlZC10
ZXN0Ml90ZXN0LmNjIgogI2luY2x1ZGUgInRlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MiCiAjaW5jbHVk
ZSAidGVzdC9wcm9kdWN0aW9uLmNjIgotI2luY2x1ZGUgInNyYy9ndGVzdF9tYWluLmNjIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9hc3NlcnRfYnlfZXhj
ZXB0aW9uX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Fzc2Vy
dF9ieV9leGNlcHRpb25fdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZWFlODU3NWYzZmVlMzBiYWM2NDJi
YTE1ODlmZjIzNGQwN2Y5NDU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9hc3NlcnRfYnlfZXhjZXB0aW9uX3Rlc3QuY2MKQEAgLTAsMCArMSwx
MTggQEAKKy8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisv
LyBUZXN0cyBHb29nbGUgVGVzdCdzIGFzc2VydC1ieS1leGNlcHRpb24gbW9kZSB3aXRoIGV4Y2Vw
dGlvbnMgZW5hYmxlZC4KKworI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisKKyNpbmNsdWRlIDxz
dGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1
ZGUgPHN0ZGV4Y2VwdD4KKworY2xhc3MgVGhyb3dMaXN0ZW5lciA6IHB1YmxpYyB0ZXN0aW5nOjpF
bXB0eVRlc3RFdmVudExpc3RlbmVyIHsKKyAgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IHRl
c3Rpbmc6OlRlc3RQYXJ0UmVzdWx0JiByZXN1bHQpIG92ZXJyaWRlIHsKKyAgICBpZiAocmVzdWx0
LnR5cGUoKSA9PSB0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSkgeworICAg
ICAgdGhyb3cgdGVzdGluZzo6QXNzZXJ0aW9uRXhjZXB0aW9uKHJlc3VsdCk7CisgICAgfQorICB9
Cit9OworCisvLyBQcmludHMgdGhlIGdpdmVuIGZhaWx1cmUgbWVzc2FnZSBhbmQgZXhpdHMgdGhl
IHByb2dyYW0gd2l0aAorLy8gbm9uLXplcm8uICBXZSB1c2UgdGhpcyBpbnN0ZWFkIG9mIGEgR29v
Z2xlIFRlc3QgYXNzZXJ0aW9uIHRvCisvLyBpbmRpY2F0ZSBhIGZhaWx1cmUsIGFzIHRoZSBsYXR0
ZXIgaXMgYmVlbiB0ZXN0ZWQgYW5kIGNhbm5vdCBiZQorLy8gcmVsaWVkIG9uLgordm9pZCBGYWls
KGNvbnN0IGNoYXIqIG1zZykgeworICBwcmludGYoIkZBSUxVUkU6ICVzXG4iLCBtc2cpOworICBm
Zmx1c2goc3Rkb3V0KTsKKyAgZXhpdCgxKTsKK30KKworc3RhdGljIHZvaWQgQXNzZXJ0RmFsc2Uo
KSB7CisgIEFTU0VSVF9FUSgyLCAzKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSI7Cit9CisKKy8vIFRl
c3RzIHRoYXQgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgdGhyb3dzIGEgc3ViY2xhc3Mgb2YKKy8vIHN0
ZDo6cnVudGltZV9lcnJvci4KK1RFU1QoVGVzdCwgVGVzdCkgeworICAvLyBBIHN1Y2Nlc3NmdWwg
YXNzZXJ0aW9uIHNob3VsZG4ndCB0aHJvdy4KKyAgdHJ5IHsKKyAgICBFWFBFQ1RfRVEoMywgMyk7
CisgIH0gY2F0Y2goLi4uKSB7CisgICAgRmFpbCgiQSBzdWNjZXNzZnVsIGFzc2VydGlvbiB3cm9u
Z2Z1bGx5IHRocmV3LiIpOworICB9CisKKyAgLy8gQSBzdWNjZXNzZnVsIGFzc2VydGlvbiBzaG91
bGRuJ3QgdGhyb3cuCisgIHRyeSB7CisgICAgRVhQRUNUX0VRKDMsIDQpOworICB9IGNhdGNoKC4u
LikgeworICAgIEZhaWwoIkEgZmFpbGVkIG5vbi1mYXRhbCBhc3NlcnRpb24gd3JvbmdmdWxseSB0
aHJldy4iKTsKKyAgfQorCisgIC8vIEEgZmFpbGVkIGFzc2VydGlvbiBzaG91bGQgdGhyb3cuCisg
IHRyeSB7CisgICAgQXNzZXJ0RmFsc2UoKTsKKyAgfSBjYXRjaChjb25zdCB0ZXN0aW5nOjpBc3Nl
cnRpb25FeGNlcHRpb24mIGUpIHsKKyAgICBpZiAoc3Ryc3RyKGUud2hhdCgpLCAiRXhwZWN0ZWQg
ZmFpbHVyZSIpICE9IE5VTEwpCisgICAgICB0aHJvdzsKKworICAgIHByaW50ZigiJXMiLAorICAg
ICAgICAgICAiQSBmYWlsZWQgYXNzZXJ0aW9uIGRpZCB0aHJvdyBhbiBleGNlcHRpb24gb2YgdGhl
IHJpZ2h0IHR5cGUsICIKKyAgICAgICAgICAgImJ1dCB0aGUgbWVzc2FnZSBpcyBpbmNvcnJlY3Qu
ICBJbnN0ZWFkIG9mIGNvbnRhaW5pbmcgXCJFeHBlY3RlZCAiCisgICAgICAgICAgICJmYWlsdXJl
XCIsIGl0IGlzOlxuIik7CisgICAgRmFpbChlLndoYXQoKSk7CisgIH0gY2F0Y2goLi4uKSB7Cisg
ICAgRmFpbCgiQSBmYWlsZWQgYXNzZXJ0aW9uIHRocmV3IHRoZSB3cm9uZyB0eXBlIG9mIGV4Y2Vw
dGlvbi4iKTsKKyAgfQorICBGYWlsKCJBIGZhaWxlZCBhc3NlcnRpb24gc2hvdWxkJ3ZlIHRocm93
biBidXQgZGlkbid0LiIpOworfQorCitpbnQga1Rlc3RGb3JDb250aW51aW5nVGVzdCA9IDA7CisK
K1RFU1QoVGVzdCwgVGVzdDIpIHsKKyAgLy8gRklYTUU6IGhvdyB0byBmb3JjZSBUZXN0MiB0byBi
ZSBhZnRlciBUZXN0PworICBrVGVzdEZvckNvbnRpbnVpbmdUZXN0ID0gMTsKK30KKworaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CisgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZh
cmdjLCBhcmd2KTsKKyAgdGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVy
cygpLkFwcGVuZChuZXcgVGhyb3dMaXN0ZW5lcik7CisKKyAgaW50IHJlc3VsdCA9IFJVTl9BTExf
VEVTVFMoKTsKKyAgaWYgKHJlc3VsdCA9PSAwKSB7CisgICAgcHJpbnRmKCJSVU5fQUxMX1RFU1RT
IHJldHVybmVkICVkXG4iLCByZXN1bHQpOworICAgIEZhaWwoIkV4cGVjdGVkIGZhaWx1cmUgaW5z
dGVhZC4iKTsKKyAgfQorCisgIGlmIChrVGVzdEZvckNvbnRpbnVpbmdUZXN0ID09IDApIHsKKyAg
ICBGYWlsKCJTaG91bGQgaGF2ZSBjb250aW51ZWQgd2l0aCBvdGhlciB0ZXN0cywgYnV0IGRpZCBu
b3QuIik7CisgIH0KKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGM4MTkxODMzMTIyNzVkZWNhMDVjNzYzMTg2
MDQwNDcxYmZmNDlmMzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9icmVha19vbl9mYWlsdXJl
X3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjE4ICswLDAgQEAKLSMhL3Vzci9iaW4v
ZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0j
IGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0j
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlVuaXQgdGVzdCBmb3IgR29vZ2xl
IFRlc3QncyBicmVhay1vbi1mYWlsdXJlIG1vZGUuCi0KLUEgdXNlciBjYW4gYXNrIEdvb2dsZSBU
ZXN0IHRvIHNlZy1mYXVsdCB3aGVuIGFuIGFzc2VydGlvbiBmYWlscywgdXNpbmcKLWVpdGhlciB0
aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUKLS0t
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnLiAgVGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5j
dGlvbmFsaXR5Ci1ieSBpbnZva2luZyBndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0XyAo
YSBwcm9ncmFtIHdyaXR0ZW4gd2l0aAotR29vZ2xlIFRlc3QpIHdpdGggZGlmZmVyZW50IGVudmly
b25tZW50cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdzLgotIiIiCi0KLV9fYXV0aG9yX18gPSAnd2Fu
QGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi1p
bXBvcnQgb3MKLWltcG9ydCBzeXMKLQotCi0jIENvbnN0YW50cy4KLQotSVNfV0lORE9XUyA9IG9z
Lm5hbWUgPT0gJ250JwotCi0jIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgZW5hYmxpbmcv
ZGlzYWJsaW5nIHRoZSBicmVhay1vbi1mYWlsdXJlIG1vZGUuCi1CUkVBS19PTl9GQUlMVVJFX0VO
Vl9WQVIgPSAnR1RFU1RfQlJFQUtfT05fRkFJTFVSRScKLQotIyBUaGUgY29tbWFuZCBsaW5lIGZs
YWcgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgYnJlYWstb24tZmFpbHVyZSBtb2RlLgotQlJF
QUtfT05fRkFJTFVSRV9GTEFHID0gJ2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmUnCi0KLSMgVGhlIGVu
dmlyb25tZW50IHZhcmlhYmxlIGZvciBlbmFibGluZy9kaXNhYmxpbmcgdGhlIHRocm93LW9uLWZh
aWx1cmUgbW9kZS4KLVRIUk9XX09OX0ZBSUxVUkVfRU5WX1ZBUiA9ICdHVEVTVF9USFJPV19PTl9G
QUlMVVJFJwotCi0jIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgZW5hYmxpbmcvZGlzYWJs
aW5nIHRoZSBjYXRjaC1leGNlcHRpb25zIG1vZGUuCi1DQVRDSF9FWENFUFRJT05TX0VOVl9WQVIg
PSAnR1RFU1RfQ0FUQ0hfRVhDRVBUSU9OUycKLQotIyBQYXRoIHRvIHRoZSBndGVzdF9icmVha19v
bl9mYWlsdXJlX3VuaXR0ZXN0XyBwcm9ncmFtLgotRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxz
LkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKLSAgICAnZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0
dGVzdF8nKQotCi0KLSMgVXRpbGl0aWVzLgotCi0KLWVudmlyb24gPSBvcy5lbnZpcm9uLmNvcHko
KQotCi0KLWRlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgotICAiIiJTZXRzIGFuIGVudmly
b25tZW50IHZhcmlhYmxlIHRvIGEgZ2l2ZW4gdmFsdWU7IHVuc2V0cyBpdCB3aGVuIHRoZQotICBn
aXZlbiB2YWx1ZSBpcyBOb25lLgotICAiIiIKLQotICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAg
ICBlbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKLSAgZWxpZiBlbnZfdmFyIGluIGVudmlyb246Ci0g
ICAgZGVsIGVudmlyb25bZW52X3Zhcl0KLQotCi1kZWYgUnVuKGNvbW1hbmQpOgotICAiIiJSdW5z
IGEgY29tbWFuZDsgcmV0dXJucyAxIGlmIGl0IHdhcyBraWxsZWQgYnkgYSBzaWduYWwsIG9yIDAg
b3RoZXJ3aXNlLiIiIgotCi0gIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFu
ZCwgZW52PWVudmlyb24pCi0gIGlmIHAudGVybWluYXRlZF9ieV9zaWduYWw6Ci0gICAgcmV0dXJu
IDEKLSAgZWxzZToKLSAgICByZXR1cm4gMAotCi0KLSMgVGhlIHRlc3RzLgotCi0KLWNsYXNzIEdU
ZXN0QnJlYWtPbkZhaWx1cmVVbml0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAg
IiIiVGVzdHMgdXNpbmcgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFy
aWFibGUgb3IKLSAgdGhlIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnIHRvIHR1cm4gYXNz
ZXJ0aW9uIGZhaWx1cmVzIGludG8KLSAgc2VnbWVudGF0aW9uIGZhdWx0cy4KLSAgIiIiCi0KLSAg
ZGVmIFJ1bkFuZFZlcmlmeShzZWxmLCBlbnZfdmFyX3ZhbHVlLCBmbGFnX3ZhbHVlLCBleHBlY3Rf
c2VnX2ZhdWx0KToKLSAgICAiIiJSdW5zIGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3Rf
IGFuZCB2ZXJpZmllcyB0aGF0IGl0IGRvZXMKLSAgICAob3IgZG9lcyBub3QpIGhhdmUgYSBzZWct
ZmF1bHQuCi0KLSAgICBBcmdzOgotICAgICAgZW52X3Zhcl92YWx1ZTogICAgdmFsdWUgb2YgdGhl
IEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHZhcmlhYmxlOyBOb25lIGlmIHRoZSB2YXJpYWJsZSBzaG91bGQgYmUgdW5zZXQuCi0gICAg
ICBmbGFnX3ZhbHVlOiAgICAgICB2YWx1ZSBvZiB0aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJl
IGZsYWc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBu
b3QgYmUgcHJlc2VudC4KLSAgICAgIGV4cGVjdF9zZWdfZmF1bHQ6IDEgaWYgdGhlIHByb2dyYW0g
aXMgZXhwZWN0ZWQgdG8gZ2VuZXJhdGUgYSBzZWctZmF1bHQ7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAwIG90aGVyd2lzZS4KLSAgICAiIiIKLQotICAgIFNldEVudlZhcihCUkVBS19PTl9GQUlM
VVJFX0VOVl9WQVIsIGVudl92YXJfdmFsdWUpCi0KLSAgICBpZiBlbnZfdmFyX3ZhbHVlIGlzIE5v
bmU6Ci0gICAgICBlbnZfdmFyX3ZhbHVlX21zZyA9ICcgaXMgbm90IHNldCcKLSAgICBlbHNlOgot
ICAgICAgZW52X3Zhcl92YWx1ZV9tc2cgPSAnPScgKyBlbnZfdmFyX3ZhbHVlCi0KLSAgICBpZiBm
bGFnX3ZhbHVlIGlzIE5vbmU6Ci0gICAgICBmbGFnID0gJycKLSAgICBlbGlmIGZsYWdfdmFsdWUg
PT0gJzAnOgotICAgICAgZmxhZyA9ICctLSVzPTAnICUgQlJFQUtfT05fRkFJTFVSRV9GTEFHCi0g
ICAgZWxzZToKLSAgICAgIGZsYWcgPSAnLS0lcycgJSBCUkVBS19PTl9GQUlMVVJFX0ZMQUcKLQot
ICAgIGNvbW1hbmQgPSBbRVhFX1BBVEhdCi0gICAgaWYgZmxhZzoKLSAgICAgIGNvbW1hbmQuYXBw
ZW5kKGZsYWcpCi0KLSAgICBpZiBleHBlY3Rfc2VnX2ZhdWx0OgotICAgICAgc2hvdWxkX29yX25v
dCA9ICdzaG91bGQnCi0gICAgZWxzZToKLSAgICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxkIG5v
dCcKLQotICAgIGhhc19zZWdfZmF1bHQgPSBSdW4oY29tbWFuZCkKLQotICAgIFNldEVudlZhcihC
UkVBS19PTl9GQUlMVVJFX0VOVl9WQVIsIE5vbmUpCi0KLSAgICBtc2cgPSAoJ3doZW4gJXMlcywg
YW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4gIiVzIiAlcyBjYXVzZSBhIHNlZy1mYXVsdC4nICUKLSAg
ICAgICAgICAgKEJSRUFLX09OX0ZBSUxVUkVfRU5WX1ZBUiwgZW52X3Zhcl92YWx1ZV9tc2csICcg
Jy5qb2luKGNvbW1hbmQpLAotICAgICAgICAgICAgc2hvdWxkX29yX25vdCkpCi0gICAgc2VsZi5h
c3NlcnRfKGhhc19zZWdfZmF1bHQgPT0gZXhwZWN0X3NlZ19mYXVsdCwgbXNnKQotCi0gIGRlZiB0
ZXN0RGVmYXVsdEJlaGF2aW9yKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiB0
aGUgZGVmYXVsdCBtb2RlLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1
ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwKLSAgICAgICAg
ICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCi0KLSAgZGVmIHRlc3RFbnZWYXIoc2Vs
Zik6Ci0gICAgIiIiVGVzdHMgdXNpbmcgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJv
bm1lbnQgdmFyaWFibGUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVl
PScwJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCi0gICAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0wKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVu
dl92YXJfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9Tm9uZSwK
LSAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCi0KLSAgZGVmIHRlc3RG
bGFnKHNlbGYpOgotICAgICIiIlRlc3RzIHVzaW5nIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1
cmUgZmxhZy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwK
LSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAg
ICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92
YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzEnLAotICAgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKLQotICBkZWYgdGVzdEZsYWdPdmVy
cmlkZXNFbnZWYXIoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCB0aGUgZmxhZyBvdmVycmlkZXMg
dGhlIGVudmlyb25tZW50IHZhcmlhYmxlLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52
X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0wKQotICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFs
dWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MSkKLSAgICBz
ZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAg
ICBmbGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0
PTApCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0gICAgICAgICAg
ICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
X3NlZ19mYXVsdD0xKQotCi0gIGRlZiB0ZXN0QnJlYWtPbkZhaWx1cmVPdmVycmlkZXNUaHJvd09u
RmFpbHVyZShzZWxmKToKLSAgICAiIiJUZXN0cyB0aGF0IGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUg
b3ZlcnJpZGVzIGd0ZXN0X3Rocm93X29uX2ZhaWx1cmUuIiIiCi0KLSAgICBTZXRFbnZWYXIoVEhS
T1dfT05fRkFJTFVSRV9FTlZfVkFSLCAnMScpCi0gICAgdHJ5OgotICAgICAgc2VsZi5SdW5BbmRW
ZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ192
YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCi0g
ICAgZmluYWxseToKLSAgICAgIFNldEVudlZhcihUSFJPV19PTl9GQUlMVVJFX0VOVl9WQVIsIE5v
bmUpCi0KLSAgaWYgSVNfV0lORE9XUzoKLSAgICBkZWYgdGVzdENhdGNoRXhjZXB0aW9uc0RvZXNO
b3RJbnRlcmZlcmUoc2VsZik6Ci0gICAgICAiIiJUZXN0cyB0aGF0IGd0ZXN0X2NhdGNoX2V4Y2Vw
dGlvbnMgZG9lc24ndCBpbnRlcmZlcmUuIiIiCi0KLSAgICAgIFNldEVudlZhcihDQVRDSF9FWENF
UFRJT05TX0VOVl9WQVIsICcxJykKLSAgICAgIHRyeToKLSAgICAgICAgc2VsZi5SdW5BbmRWZXJp
ZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFs
dWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCi0g
ICAgICBmaW5hbGx5OgotICAgICAgICBTZXRFbnZWYXIoQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFS
LCBOb25lKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rlc3RfdXRp
bHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZDI4ZDFkM2RhZDQ2YjhmZGYzYzM0MDk2N2RiZmNhODUyZjU5ZTRhMS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfLmNjCisr
KyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJ
bmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0v
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25n
IFdhbikKLQotLy8gVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIGJyZWFrLW9uLWZhaWx1cmUg
bW9kZS4KLS8vCi0vLyBBIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBzZWctZmF1bHQgd2hl
biBhbiBhc3NlcnRpb24gZmFpbHMsIHVzaW5nCi0vLyBlaXRoZXIgdGhlIEdURVNUX0JSRUFLX09O
X0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCi0vLyAtLWd0ZXN0X2JyZWFrX29u
X2ZhaWx1cmUgZmxhZy4gIFRoaXMgZmlsZSBpcyB1c2VkIGZvciB0ZXN0aW5nIHN1Y2gKLS8vIGZ1
bmN0aW9uYWxpdHkuCi0vLwotLy8gVGhpcyBwcm9ncmFtIHdpbGwgYmUgaW52b2tlZCBmcm9tIGEg
UHl0aG9uIHVuaXQgdGVzdC4gIEl0IGlzCi0vLyBleHBlY3RlZCB0byBmYWlsLiAgRG9uJ3QgcnVu
IGl0IGRpcmVjdGx5LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2lmIEdURVNUX09T
X1dJTkRPV1MKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jZW5k
aWYKLQotbmFtZXNwYWNlIHsKLQotLy8gQSB0ZXN0IHRoYXQncyBleHBlY3RlZCB0byBmYWlsLgot
VEVTVChGb28sIEJhcikgewotICBFWFBFQ1RfRVEoMiwgMyk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNf
U0VIICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotLy8gT24gV2luZG93cyBNb2JpbGUgZ2xv
YmFsIGV4Y2VwdGlvbiBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZC4KLUxPTkcgV0lOQVBJIEV4
aXRXaXRoRXhjZXB0aW9uQ29kZSgKLSAgICBzdHJ1Y3QgX0VYQ0VQVElPTl9QT0lOVEVSUyogZXhj
ZXB0aW9uX3BvaW50ZXJzKSB7Ci0gIGV4aXQoZXhjZXB0aW9uX3BvaW50ZXJzLT5FeGNlcHRpb25S
ZWNvcmQtPkV4Y2VwdGlvbkNvZGUpOwotfQotI2VuZGlmCi0KLX0gIC8vIG5hbWVzcGFjZQotCi1p
bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0g
IC8vIFN1cHByZXNzZXMgZGlzcGxheSBvZiB0aGUgV2luZG93cyBlcnJvciBkaWFsb2cgdXBvbiBl
bmNvdW50ZXJpbmcKLSAgLy8gYSBnZW5lcmFsIHByb3RlY3Rpb24gZmF1bHQgKHNlZ21lbnQgdmlv
bGF0aW9uKS4KLSAgU2V0RXJyb3JNb2RlKFNFTV9OT0dQRkFVTFRFUlJPUkJPWCB8IFNFTV9GQUlM
Q1JJVElDQUxFUlJPUlMpOwotCi0jaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0gIC8vIFRo
ZSBkZWZhdWx0IHVuaGFuZGxlZCBleGNlcHRpb24gZmlsdGVyIGRvZXMgbm90IGFsd2F5cyBleGl0
Ci0gIC8vIHdpdGggdGhlIGV4Y2VwdGlvbiBjb2RlIGFzIGV4aXQgY29kZSAtIGZvciBleGFtcGxl
IGl0IGV4aXRzIHdpdGgKLSAgLy8gMCBmb3IgRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT04gYW5k
IDEgZm9yIEVYQ0VQVElPTl9CUkVBS1BPSU5UCi0gIC8vIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBj
b21waWxlZCBpbiBkZWJ1ZyBtb2RlLiBUaHVzIHdlIHVzZSBvdXIgb3duCi0gIC8vIGZpbHRlciB3
aGljaCBhbHdheXMgZXhpdHMgd2l0aCB0aGUgZXhjZXB0aW9uIGNvZGUgZm9yIHVuaGFuZGxlZAot
ICAvLyBleGNlcHRpb25zLgotICBTZXRVbmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIoRXhpdFdpdGhF
eGNlcHRpb25Db2RlKTsKLSNlbmRpZgotI2VuZGlmCi0KLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRl
c3QoJmFyZ2MsIGFyZ3YpOwotCi0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IGQwMmE1M2VkODU3Yzc0YzgwMGJjY2Q2N2JjNDE4YTUxYTA5
ZDY5MzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5CisrKyAvZGV2L251
bGwKQEAgLTEsMTMwICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmln
aHQgMjAwOCwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLSIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3QgY29ycmVjdGx5IGRldGVybWlu
ZXMgd2hldGhlciB0byB1c2UgY29sb3JzLiIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUu
Y29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWltcG9ydCBndGVzdF90ZXN0X3V0aWxz
Ci0KLQotSVNfV0lORE9XUyA9IG9zLm5hbWUgPSAnbnQnCi0KLUNPTE9SX0VOVl9WQVIgPSAnR1RF
U1RfQ09MT1InCi1DT0xPUl9GTEFHID0gJ2d0ZXN0X2NvbG9yJwotQ09NTUFORCA9IGd0ZXN0X3Rl
c3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9jb2xvcl90ZXN0XycpCi0KLQot
ZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6Ci0gICIiIlNldHMgdGhlIGVudiB2YXJpYWJs
ZSB0byAndmFsdWUnOyB1bnNldHMgaXQgd2hlbiAndmFsdWUnIGlzIE5vbmUuIiIiCi0KLSAgaWYg
dmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgb3MuZW52aXJvbltlbnZfdmFyXSA9IHZhbHVlCi0gIGVs
aWYgZW52X3ZhciBpbiBvcy5lbnZpcm9uOgotICAgIGRlbCBvcy5lbnZpcm9uW2Vudl92YXJdCi0K
LQotZGVmIFVzZXNDb2xvcih0ZXJtLCBjb2xvcl9lbnZfdmFyLCBjb2xvcl9mbGFnKToKLSAgIiIi
UnVucyBndGVzdF9jb2xvcl90ZXN0XyBhbmQgcmV0dXJucyBpdHMgZXhpdCBjb2RlLiIiIgotCi0g
IFNldEVudlZhcignVEVSTScsIHRlcm0pCi0gIFNldEVudlZhcihDT0xPUl9FTlZfVkFSLCBjb2xv
cl9lbnZfdmFyKQotCi0gIGlmIGNvbG9yX2ZsYWcgaXMgTm9uZToKLSAgICBhcmdzID0gW10KLSAg
ZWxzZToKLSAgICBhcmdzID0gWyctLSVzPSVzJyAlIChDT0xPUl9GTEFHLCBjb2xvcl9mbGFnKV0K
LSAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhbQ09NTUFORF0gKyBhcmdzKQotICBy
ZXR1cm4gbm90IHAuZXhpdGVkIG9yIHAuZXhpdF9jb2RlCi0KLQotY2xhc3MgR1Rlc3RDb2xvclRl
c3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gIGRlZiB0ZXN0Tm9FbnZWYXJOb0ZsYWco
c2VsZik6Ci0gICAgIiIiVGVzdHMgdGhlIGNhc2Ugd2hlbiB0aGVyZSdzIG5laXRoZXIgR1RFU1Rf
Q09MT1Igbm9yIC0tZ3Rlc3RfY29sb3IuIiIiCi0KLSAgICBpZiBub3QgSVNfV0lORE9XUzoKLSAg
ICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgTm9uZSkpCi0gICAg
ICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcignZW1hY3MnLCBOb25lLCBOb25lKSkKLSAgICAg
IHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybS1tb25vJywgTm9uZSwgTm9uZSkpCi0g
ICAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigndW5rbm93bicsIE5vbmUsIE5vbmUpKQot
ICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoTm9uZSwgTm9uZSwgTm9uZSkpCi0gICAg
c2VsZi5hc3NlcnRfKFVzZXNDb2xvcignbGludXgnLCBOb25lLCBOb25lKSkKLSAgICBzZWxmLmFz
c2VydF8oVXNlc0NvbG9yKCdjeWd3aW4nLCBOb25lLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8o
VXNlc0NvbG9yKCd4dGVybScsIE5vbmUsIE5vbmUpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29s
b3IoJ3h0ZXJtLWNvbG9yJywgTm9uZSwgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xv
cigneHRlcm0tMjU2Y29sb3InLCBOb25lLCBOb25lKSkKLQotICBkZWYgdGVzdEZsYWdPbmx5KHNl
bGYpOgotICAgICIiIlRlc3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUncyAtLWd0ZXN0X2NvbG9yIGJ1
dCBub3QgR1RFU1RfQ09MT1IuIiIiCi0KLSAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcign
ZHVtYicsIE5vbmUsICdubycpKQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVy
bS1jb2xvcicsIE5vbmUsICdubycpKQotICAgIGlmIG5vdCBJU19XSU5ET1dTOgotICAgICAgc2Vs
Zi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ2VtYWNzJywgTm9uZSwgJ2F1dG8nKSkKLSAgICBzZWxm
LmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybScsIE5vbmUsICdhdXRvJykpCi0gICAgc2VsZi5hc3Nl
cnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUsICd5ZXMnKSkKLSAgICBzZWxmLmFzc2VydF8oVXNl
c0NvbG9yKCd4dGVybScsIE5vbmUsICd5ZXMnKSkKLQotICBkZWYgdGVzdEVudlZhck9ubHkoc2Vs
Zik6Ci0gICAgIiIiVGVzdHMgdGhlIGNhc2Ugd2hlbiB0aGVyZSdzIEdURVNUX0NPTE9SIGJ1dCBu
b3QgLS1ndGVzdF9jb2xvci4iIiIKLQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdk
dW1iJywgJ25vJywgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJt
LWNvbG9yJywgJ25vJywgTm9uZSkpCi0gICAgaWYgbm90IElTX1dJTkRPV1M6Ci0gICAgICBzZWxm
LmFzc2VydF8obm90IFVzZXNDb2xvcignZHVtYicsICdhdXRvJywgTm9uZSkpCi0gICAgc2VsZi5h
c3NlcnRfKFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAnYXV0bycsIE5vbmUpKQotICAgIHNlbGYu
YXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCAneWVzJywgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRf
KFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAneWVzJywgTm9uZSkpCi0KLSAgZGVmIHRlc3RFbnZW
YXJBbmRGbGFnKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUgYXJlIGJv
dGggR1RFU1RfQ09MT1IgYW5kIC0tZ3Rlc3RfY29sb3IuIiIiCi0KLSAgICBzZWxmLmFzc2VydF8o
bm90IFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAnbm8nLCAnbm8nKSkKLSAgICBzZWxmLmFzc2Vy
dF8oVXNlc0NvbG9yKCdkdW1iJywgJ25vJywgJ3llcycpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2Vz
Q29sb3IoJ3h0ZXJtLWNvbG9yJywgJ25vJywgJ2F1dG8nKSkKLQotICBkZWYgdGVzdEFsaWFzZXNP
Zlllc0FuZE5vKHNlbGYpOgotICAgICIiIlRlc3RzIHVzaW5nIGFsaWFzZXMgaW4gc3BlY2lmeWlu
ZyAtLWd0ZXN0X2NvbG9yLiIiIgotCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYics
IE5vbmUsICd0cnVlJykpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUs
ICdZRVMnKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ1QnKSkK
LSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJzEnKSkKLQotICAgIHNl
bGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybScsIE5vbmUsICdmJykpCi0gICAgc2VsZi5h
c3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwgJ2ZhbHNlJykpCi0gICAgc2VsZi5h
c3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtJywgTm9uZSwgJzAnKSkKLSAgICBzZWxmLmFzc2Vy
dF8obm90IFVzZXNDb2xvcigneHRlcm0nLCBOb25lLCAndW5rbm93bicpKQotCi0KLWlmIF9fbmFt
ZV9fID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0Xy5jYwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNThkMzc3YzliMmFmMGJmZTgxOTVjYTJjMGE5MDIxMzlkOTEx
MDY0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjCisrKyAvZGV2L251
bGwKQEAgLTEsNzEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
Ly8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQot
Ly8gQSBoZWxwZXIgcHJvZ3JhbSBmb3IgdGVzdGluZyBob3cgR29vZ2xlIFRlc3QgZGV0ZXJtaW5l
cyB3aGV0aGVyIHRvIHVzZQotLy8gY29sb3JzIGluIHRoZSBvdXRwdXQuICBJdCBwcmludHMgIllF
UyIgYW5kIHJldHVybnMgMSBpZiBHb29nbGUgVGVzdAotLy8gZGVjaWRlcyB0byB1c2UgY29sb3Jz
LCBhbmQgcHJpbnRzICJOTyIgYW5kIHJldHVybnMgMCBvdGhlcndpc2UuCi0KLSNpbmNsdWRlIDxz
dGRpby5oPgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotLy8gSW5kaWNhdGVzIHRoYXQg
dGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVt
ZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0v
LyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmlj
ayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0
ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVN
RU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYg
R1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaG91bGRV
c2VDb2xvcjsKLQotLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUg
VW5pdFRlc3Qgc2luZ2xldG9uIGlzCi0vLyBjcmVhdGVkIGJlZm9yZSBtYWluKCkgaXMgZW50ZXJl
ZCwgYW5kIHRodXMgdGhhdCBTaG91bGRVc2VDb2xvcigpCi0vLyB3b3JrcyB0aGUgc2FtZSB3YXkg
YXMgaW4gYSByZWFsIEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QuICBXZSBkb24ndCBhY3R1YWwKLS8v
IHJ1biB0aGUgVEVTVCBpdHNlbGYuCi1URVNUKEdUZXN0Q29sb3JUZXN0LCBEdW1teSkgewotfQot
Ci1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgdGVzdGluZzo6SW5pdEdvb2ds
ZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIGlmIChTaG91bGRVc2VDb2xvcih0cnVlKSkgewotICAg
IC8vIEdvb2dsZSBUZXN0IGRlY2lkZXMgdG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0IChhc3N1
bWluZyBpdAotICAgIC8vIGdvZXMgdG8gYSBUVFkpLgotICAgIHByaW50ZigiWUVTXG4iKTsKLSAg
ICByZXR1cm4gMTsKLSAgfSBlbHNlIHsKLSAgICAvLyBHb29nbGUgVGVzdCBkZWNpZGVzIG5vdCB0
byB1c2UgY29sb3JzIGluIHRoZSBvdXRwdXQuCi0gICAgcHJpbnRmKCJOT1xuIik7Ci0gICAgcmV0
dXJuIDA7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfZW52X3Zhcl90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9lbnZfdmFyX3Rlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGJjYzBiZmQ1
NTMyOTcyNjgwNzYxNTc3MzZjODNlNGE4NGNhZTA1NmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF9lbnZfdmFyX3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotIyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6
Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVmVyaWZpZXMgdGhhdCBH
b29nbGUgVGVzdCBjb3JyZWN0bHkgcGFyc2VzIGVudmlyb25tZW50IHZhcmlhYmxlcy4iIiIKLQot
X19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IG9z
Ci1pbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwotCi0KLUlTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdu
dCcKLUlTX0xJTlVYID0gb3MubmFtZSA9PSAncG9zaXgnIGFuZCBvcy51bmFtZSgpWzBdID09ICdM
aW51eCcKLQotQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRo
KCdndGVzdF9lbnZfdmFyX3Rlc3RfJykKLQotZW52aXJvbiA9IG9zLmVudmlyb24uY29weSgpCi0K
LQotZGVmIEFzc2VydEVxKGV4cGVjdGVkLCBhY3R1YWwpOgotICBpZiBleHBlY3RlZCAhPSBhY3R1
YWw6Ci0gICAgcHJpbnQgJ0V4cGVjdGVkOiAlcycgJSAoZXhwZWN0ZWQsKQotICAgIHByaW50ICcg
IEFjdHVhbDogJXMnICUgKGFjdHVhbCwpCi0gICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKLQotCi1k
ZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToKLSAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxl
IHRvICd2YWx1ZSc7IHVuc2V0cyBpdCB3aGVuICd2YWx1ZScgaXMgTm9uZS4iIiIKLQotICBpZiB2
YWx1ZSBpcyBub3QgTm9uZToKLSAgICBlbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKLSAgZWxpZiBl
bnZfdmFyIGluIGVudmlyb246Ci0gICAgZGVsIGVudmlyb25bZW52X3Zhcl0KLQotCi1kZWYgR2V0
RmxhZyhmbGFnKToKLSAgIiIiUnVucyBndGVzdF9lbnZfdmFyX3Rlc3RfIGFuZCByZXR1cm5zIGl0
cyBvdXRwdXQuIiIiCi0KLSAgYXJncyA9IFtDT01NQU5EXQotICBpZiBmbGFnIGlzIG5vdCBOb25l
OgotICAgIGFyZ3MgKz0gW2ZsYWddCi0gIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nl
c3MoYXJncywgZW52PWVudmlyb24pLm91dHB1dAotCi0KLWRlZiBUZXN0RmxhZyhmbGFnLCB0ZXN0
X3ZhbCwgZGVmYXVsdF92YWwpOgotICAiIiJWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBmbGFnIGlz
IGFmZmVjdGVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGVudiB2YXIuIiIiCi0KLSAgZW52X3ZhciA9
ICdHVEVTVF8nICsgZmxhZy51cHBlcigpCi0gIFNldEVudlZhcihlbnZfdmFyLCB0ZXN0X3ZhbCkK
LSAgQXNzZXJ0RXEodGVzdF92YWwsIEdldEZsYWcoZmxhZykpCi0gIFNldEVudlZhcihlbnZfdmFy
LCBOb25lKQotICBBc3NlcnRFcShkZWZhdWx0X3ZhbCwgR2V0RmxhZyhmbGFnKSkKLQotCi1jbGFz
cyBHVGVzdEVudlZhclRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gIGRlZiB0ZXN0
RW52VmFyQWZmZWN0c0ZsYWcoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCBlbnZpcm9ubWVudCB2
YXJpYWJsZSBzaG91bGQgYWZmZWN0IHRoZSBjb3JyZXNwb25kaW5nIGZsYWcuIiIiCi0KLSAgICBU
ZXN0RmxhZygnYnJlYWtfb25fZmFpbHVyZScsICcxJywgJzAnKQotICAgIFRlc3RGbGFnKCdjb2xv
cicsICd5ZXMnLCAnYXV0bycpCi0gICAgVGVzdEZsYWcoJ2ZpbHRlcicsICdGb29UZXN0LkJhcics
ICcqJykKLSAgICBUZXN0RmxhZygnb3V0cHV0JywgJ3htbDp0bXAvZm9vLnhtbCcsICcnKQotICAg
IFRlc3RGbGFnKCdwcmludF90aW1lJywgJzAnLCAnMScpCi0gICAgVGVzdEZsYWcoJ3JlcGVhdCcs
ICc5OTknLCAnMScpCi0gICAgVGVzdEZsYWcoJ3Rocm93X29uX2ZhaWx1cmUnLCAnMScsICcwJykK
LSAgICBUZXN0RmxhZygnZGVhdGhfdGVzdF9zdHlsZScsICd0aHJlYWRzYWZlJywgJ2Zhc3QnKQot
Ci0gICAgaWYgSVNfV0lORE9XUzoKLSAgICAgIFRlc3RGbGFnKCdjYXRjaF9leGNlcHRpb25zJywg
JzEnLCAnMCcpCi0KLSAgICBpZiBJU19MSU5VWDoKLSAgICAgIFRlc3RGbGFnKCdkZWF0aF90ZXN0
X3VzZV9mb3JrJywgJzEnLCAnMCcpCi0gICAgICBUZXN0RmxhZygnc3RhY2tfdHJhY2VfZGVwdGgn
LCAnMCcsICcxMDAnKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rl
c3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X2Vudl92YXJfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X2Vudl92YXJfdGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3Yzc4
ZmNmMzA1MzEyYTY2YzI2NWIxODEwYTY5MTA3N2RiNzcxZjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9lbnZfdmFyX3Rlc3RfLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTI2ICswLDAgQEAKLS8v
IENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8v
Ci0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlz
dHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
Ly8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6
IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEEgaGVscGVyIHByb2dyYW0gZm9y
IHRlc3RpbmcgdGhhdCBHb29nbGUgVGVzdCBwYXJzZXMgdGhlIGVudmlyb25tZW50Ci0vLyB2YXJp
YWJsZXMgY29ycmVjdGx5LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2luY2x1ZGUg
PGlvc3RyZWFtPgotCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAi
c3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwot
Ci11c2luZyA6OnN0ZDo6Y291dDsKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotCi0vLyBUaGUgcHVy
cG9zZSBvZiB0aGlzIGlzIHRvIG1ha2UgdGhlIHRlc3QgbW9yZSByZWFsaXN0aWMgYnkgZW5zdXJp
bmcKLS8vIHRoYXQgdGhlIFVuaXRUZXN0IHNpbmdsZXRvbiBpcyBjcmVhdGVkIGJlZm9yZSBtYWlu
KCkgaXMgZW50ZXJlZC4KLS8vIFdlIGRvbid0IGFjdHVhbCBydW4gdGhlIFRFU1QgaXRzZWxmLgot
VEVTVChHVGVzdEVudlZhclRlc3QsIER1bW15KSB7Ci19Ci0KLXZvaWQgUHJpbnRGbGFnKGNvbnN0
IGNoYXIqIGZsYWcpIHsKLSAgaWYgKHN0cmNtcChmbGFnLCAiYnJlYWtfb25fZmFpbHVyZSIpID09
IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSk7Ci0gICAgcmV0
dXJuOwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAiY2F0Y2hfZXhjZXB0aW9ucyIpID09IDAp
IHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucyk7Ci0gICAgcmV0dXJu
OwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAiY29sb3IiKSA9PSAwKSB7Ci0gICAgY291dCA8
PCBHVEVTVF9GTEFHKGNvbG9yKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZs
YWcsICJkZWF0aF90ZXN0X3N0eWxlIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhk
ZWF0aF90ZXN0X3N0eWxlKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcs
ICJkZWF0aF90ZXN0X3VzZV9mb3JrIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhk
ZWF0aF90ZXN0X3VzZV9mb3JrKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZs
YWcsICJmaWx0ZXIiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKGZpbHRlcik7Ci0g
ICAgcmV0dXJuOwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAib3V0cHV0IikgPT0gMCkgewot
ICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhvdXRwdXQpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlm
IChzdHJjbXAoZmxhZywgInByaW50X3RpbWUiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9G
TEFHKHByaW50X3RpbWUpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywg
InJlcGVhdCIpID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcocmVwZWF0KTsKLSAgICBy
ZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcsICJzdGFja190cmFjZV9kZXB0aCIpID09
IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpOwotICAgIHJl
dHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywgInRocm93X29uX2ZhaWx1cmUiKSA9PSAw
KSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpOwotICAgIHJldHVy
bjsKLSAgfQotCi0gIGNvdXQgPDwgIkludmFsaWQgZmxhZyBuYW1lICIgPDwgZmxhZwotICAgICAg
IDw8ICIuICBWYWxpZCBuYW1lcyBhcmUgYnJlYWtfb25fZmFpbHVyZSwgY29sb3IsIGZpbHRlciwg
ZXRjLlxuIjsKLSAgZXhpdCgxKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0
KCZhcmdjLCBhcmd2KTsKLQotICBpZiAoYXJnYyAhPSAyKSB7Ci0gICAgY291dCA8PCAiVXNhZ2U6
IGd0ZXN0X2Vudl92YXJfdGVzdF8gTkFNRV9PRl9GTEFHXG4iOwotICAgIHJldHVybiAxOwotICB9
Ci0KLSAgdGVzdGluZzo6UHJpbnRGbGFnKGFyZ3ZbMV0pOwotICByZXR1cm4gMDsKLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVz
dC5jYwppbmRleCBjOTM5MjYxNGQ3NGQ3ZmMyMzJlODZiMmMzZDZjZGIxYjFlMmI2MTMxLi5iYzk1
MjRkNjYzNzNlNzE5NTFjYWNjZDkwNmMwNjZlZjRhZjk0YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2Vudmlyb25tZW50X3Rlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjCkBAIC0y
NiwxNCArMjYsMTQgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIC8v
CiAvLyBUZXN0cyB1c2luZyBnbG9iYWwgdGVzdCBlbnZpcm9ubWVudHMuCiAKICNpbmNsdWRlIDxz
dGRsaWIuaD4KICNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Cisj
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKKyNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5s
LmgiCiAKIG5hbWVzcGFjZSB0ZXN0aW5nIHsKIEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhmaWx0ZXIp
OwpAQCAtOTIsNiArOTIsNyBAQCBjbGFzcyBNeUVudmlyb25tZW50IDogcHVibGljIHRlc3Rpbmc6
OkVudmlyb25tZW50IHsKIAogICAvLyBXYXMgVGVhckRvd24oKSBydW4/CiAgIGJvb2wgdGVhcl9k
b3duX3dhc19ydW4oKSBjb25zdCB7IHJldHVybiB0ZWFyX2Rvd25fd2FzX3J1bl87IH0KKwogIHBy
aXZhdGU6CiAgIEZhaWx1cmVUeXBlIGZhaWx1cmVfaW5fc2V0X3VwXzsKICAgYm9vbCBzZXRfdXBf
d2FzX3J1bl87CkBAIC0xMTEsNyArMTEyLDcgQEAgVEVTVChGb29UZXN0LCBCYXIpIHsKIHZvaWQg
Q2hlY2soYm9vbCBjb25kaXRpb24sIGNvbnN0IGNoYXIqIG1zZykgewogICBpZiAoIWNvbmRpdGlv
bikgewogICAgIHByaW50ZigiRkFJTEVEOiAlc1xuIiwgbXNnKTsKLSAgICBhYm9ydCgpOworICAg
IHRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6QWJvcnQoKTsKICAgfQogfQogCkBAIC0xMjMsNiAr
MTI0LDcgQEAgaW50IFJ1bkFsbFRlc3RzKE15RW52aXJvbm1lbnQqIGVudiwgRmFpbHVyZVR5cGUg
ZmFpbHVyZSkgewogICBlbnYtPlJlc2V0KCk7CiAgIGVudi0+c2V0X2ZhaWx1cmVfaW5fc2V0X3Vw
KGZhaWx1cmUpOwogICB0ZXN0X3dhc19ydW4gPSBmYWxzZTsKKyAgdGVzdGluZzo6aW50ZXJuYWw6
OkdldFVuaXRUZXN0SW1wbCgpLT5DbGVhckFkSG9jVGVzdFJlc3VsdCgpOwogICByZXR1cm4gUlVO
X0FMTF9URVNUUygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X2ZpbHRlcl91bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCAwZDFhNzcwMDU4Y2NiOTAxMTU0NjgwOTI0Y2JkM2M2NGQ4YzhkMTc5Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjMzICsw
LDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNSBHb29nbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0j
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVW5pdCB0
ZXN0IGZvciBHb29nbGUgVGVzdCB0ZXN0IGZpbHRlcnMuCi0KLUEgdXNlciBjYW4gc3BlY2lmeSB3
aGljaCB0ZXN0KHMpIGluIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSB0byBydW4gdmlhIGVpdGhlcgot
dGhlIEdURVNUX0ZJTFRFUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUgLS1ndGVzdF9maWx0
ZXIgZmxhZy4KLVRoaXMgc2NyaXB0IHRlc3RzIHN1Y2ggZnVuY3Rpb25hbGl0eSBieSBpbnZva2lu
ZwotZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aCBHb29nbGUg
VGVzdCkgd2l0aCBkaWZmZXJlbnQKLWVudmlyb25tZW50cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdz
LgotCi1Ob3RlIHRoYXQgdGVzdCBzaGFyZGluZyBtYXkgYWxzbyBpbmZsdWVuY2Ugd2hpY2ggdGVz
dHMgYXJlIGZpbHRlcmVkLiBUaGVyZWZvcmUsCi13ZSB0ZXN0IHRoYXQgaGVyZSBhbHNvLgotIiIi
Ci0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9y
dCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2V0cwotaW1wb3J0IHN5cwotCi1pbXBvcnQgZ3Rlc3Rf
dGVzdF91dGlscwotCi0jIENvbnN0YW50cy4KLQotIyBDaGVja3MgaWYgdGhpcyBwbGF0Zm9ybSBj
YW4gcGFzcyBlbXB0eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gY2hpbGQKLSMgcHJvY2Vzc2Vz
LiAgV2Ugc2V0IGFuIGVudiB2YXJpYWJsZSB0byBhbiBlbXB0eSBzdHJpbmcgYW5kIGludm9rZSBh
IHB5dGhvbgotIyBzY3JpcHQgaW4gYSBzdWJwcm9jZXNzIHRvIHByaW50IHdoZXRoZXIgdGhlIHZh
cmlhYmxlIGlzIFNUSUxMIGluCi0jIG9zLmVudmlyb24uICBXZSB0aGVuIHVzZSAnZXZhbCcgdG8g
cGFyc2UgdGhlIGNoaWxkJ3Mgb3V0cHV0IHNvIHRoYXQgYW4KLSMgZXhjZXB0aW9uIGlzIHRocm93
biBpZiB0aGUgaW5wdXQgaXMgYW55dGhpbmcgb3RoZXIgdGhhbiAnVHJ1ZScgbm9yICdGYWxzZScu
Ci1vcy5lbnZpcm9uWydFTVBUWV9WQVInXSA9ICcnCi1jaGlsZCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
U3VicHJvY2VzcygKLSAgICBbc3lzLmV4ZWN1dGFibGUsICctYycsICdpbXBvcnQgb3M7IHByaW50
IFwnRU1QVFlfVkFSXCcgaW4gb3MuZW52aXJvbiddKQotQ0FOX1BBU1NfRU1QVFlfRU5WID0gZXZh
bChjaGlsZC5vdXRwdXQpCi0KLQotIyBDaGVjayBpZiB0aGlzIHBsYXRmb3JtIGNhbiB1bnNldCBl
bnZpcm9ubWVudCB2YXJpYWJsZXMgaW4gY2hpbGQgcHJvY2Vzc2VzLgotIyBXZSBzZXQgYW4gZW52
IHZhcmlhYmxlIHRvIGEgbm9uLWVtcHR5IHN0cmluZywgdW5zZXQgaXQsIGFuZCBpbnZva2UKLSMg
YSBweXRob24gc2NyaXB0IGluIGEgc3VicHJvY2VzcyB0byBwcmludCB3aGV0aGVyIHRoZSB2YXJp
YWJsZQotIyBpcyBOTyBMT05HRVIgaW4gb3MuZW52aXJvbi4KLSMgV2UgdXNlICdldmFsJyB0byBw
YXJzZSB0aGUgY2hpbGQncyBvdXRwdXQgc28gdGhhdCBhbiBleGNlcHRpb24KLSMgaXMgdGhyb3du
IGlmIHRoZSBpbnB1dCBpcyBuZWl0aGVyICdUcnVlJyBub3IgJ0ZhbHNlJy4KLW9zLmVudmlyb25b
J1VOU0VUX1ZBUiddID0gJ1gnCi1kZWwgb3MuZW52aXJvblsnVU5TRVRfVkFSJ10KLWNoaWxkID0g
Z3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAotICAgIFtzeXMuZXhlY3V0YWJsZSwgJy1jJywg
J2ltcG9ydCBvczsgcHJpbnQgXCdVTlNFVF9WQVJcJyBub3QgaW4gb3MuZW52aXJvbiddKQotQ0FO
X1VOU0VUX0VOViA9IGV2YWwoY2hpbGQub3V0cHV0KQotCi0KLSMgQ2hlY2tzIGlmIHdlIHNob3Vs
ZCB0ZXN0IHdpdGggYW4gZW1wdHkgZmlsdGVyLiBUaGlzIGRvZXNuJ3QKLSMgbWFrZSBzZW5zZSBv
biBwbGF0Zm9ybXMgdGhhdCBjYW5ub3QgcGFzcyBlbXB0eSBlbnYgdmFyaWFibGVzIChXaW4zMikK
LSMgYW5kIG9uIHBsYXRmb3JtcyB0aGF0IGNhbm5vdCB1bnNldCB2YXJpYWJsZXMgKHNpbmNlIHdl
IGNhbm5vdCB0ZWxsCi0jIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gIiIgYW5kIE5VTEwgLS0gQm9y
bGFuZCBhbmQgU29sYXJpcyA8IDUuMTApCi1DQU5fVEVTVF9FTVBUWV9GSUxURVIgPSAoQ0FOX1BB
U1NfRU1QVFlfRU5WIGFuZCBDQU5fVU5TRVRfRU5WKQotCi0KLSMgVGhlIGVudmlyb25tZW50IHZh
cmlhYmxlIGZvciBzcGVjaWZ5aW5nIHRoZSB0ZXN0IGZpbHRlcnMuCi1GSUxURVJfRU5WX1ZBUiA9
ICdHVEVTVF9GSUxURVInCi0KLSMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBz
aGFyZGluZy4KLVRPVEFMX1NIQVJEU19FTlZfVkFSID0gJ0dURVNUX1RPVEFMX1NIQVJEUycKLVNI
QVJEX0lOREVYX0VOVl9WQVIgPSAnR1RFU1RfU0hBUkRfSU5ERVgnCi1TSEFSRF9TVEFUVVNfRklM
RV9FTlZfVkFSID0gJ0dURVNUX1NIQVJEX1NUQVRVU19GSUxFJwotCi0jIFRoZSBjb21tYW5kIGxp
bmUgZmxhZyBmb3Igc3BlY2lmeWluZyB0aGUgdGVzdCBmaWx0ZXJzLgotRklMVEVSX0ZMQUcgPSAn
Z3Rlc3RfZmlsdGVyJwotCi0jIFRoZSBjb21tYW5kIGxpbmUgZmxhZyBmb3IgaW5jbHVkaW5nIGRp
c2FibGVkIHRlc3RzLgotQUxTT19SVU5fRElTQUJFRF9URVNUU19GTEFHID0gJ2d0ZXN0X2Fsc29f
cnVuX2Rpc2FibGVkX3Rlc3RzJwotCi0jIENvbW1hbmQgdG8gcnVuIHRoZSBndGVzdF9maWx0ZXJf
dW5pdHRlc3RfIHByb2dyYW0uCi1DT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhl
Y3V0YWJsZVBhdGgoJ2d0ZXN0X2ZpbHRlcl91bml0dGVzdF8nKQotCi0jIFJlZ2V4IGZvciBkZXRl
cm1pbmluZyB3aGV0aGVyIHBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQgaW4gdGhlIGJp
bmFyeS4KLVBBUkFNX1RFU1RfUkVHRVggPSByZS5jb21waWxlKHInL1BhcmFtVGVzdCcpCi0KLSMg
UmVnZXggZm9yIHBhcnNpbmcgdGVzdCBjYXNlIG5hbWVzIGZyb20gR29vZ2xlIFRlc3QncyBvdXRw
dXQuCi1URVNUX0NBU0VfUkVHRVggPSByZS5jb21waWxlKHInXlxbXC0rXF0gXGQrIHRlc3RzPyBm
cm9tIChcdysoL1x3Kyk/KScpCi0KLSMgUmVnZXggZm9yIHBhcnNpbmcgdGVzdCBuYW1lcyBmcm9t
IEdvb2dsZSBUZXN0J3Mgb3V0cHV0LgotVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocideXFtccypS
VU5ccypcXS4qXC4oXHcrKC9cdyspPyknKQotCi0jIFRoZSBjb21tYW5kIGxpbmUgZmxhZyB0byB0
ZWxsIEdvb2dsZSBUZXN0IHRvIG91dHB1dCB0aGUgbGlzdCBvZiB0ZXN0cyBpdAotIyB3aWxsIHJ1
bi4KLUxJU1RfVEVTVFNfRkxBRyA9ICctLWd0ZXN0X2xpc3RfdGVzdHMnCi0KLSMgSW5kaWNhdGVz
IHdoZXRoZXIgR29vZ2xlIFRlc3Qgc3VwcG9ydHMgZGVhdGggdGVzdHMuCi1TVVBQT1JUU19ERUFU
SF9URVNUUyA9ICdIYXNEZWF0aFRlc3QnIGluIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygK
LSAgICBbQ09NTUFORCwgTElTVF9URVNUU19GTEFHXSkub3V0cHV0Ci0KLSMgRnVsbCBuYW1lcyBv
ZiBhbGwgdGVzdHMgaW4gZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0c18uCi1QQVJBTV9URVNUUyA9IFsK
LSAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMCcsCi0gICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RY
LzEnLAotICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAnU2VxUC9QYXJhbVRlc3Qu
VGVzdFkvMScsCi0gICAgJ1NlcVEvUGFyYW1UZXN0LlRlc3RYLzAnLAotICAgICdTZXFRL1BhcmFt
VGVzdC5UZXN0WC8xJywKLSAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFkvMCcsCi0gICAgJ1NlcVEv
UGFyYW1UZXN0LlRlc3RZLzEnLAotICAgIF0KLQotRElTQUJMRURfVEVTVFMgPSBbCi0gICAgJ0Jh
clRlc3QuRElTQUJMRURfVGVzdEZvdXInLAotICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rlc3RGaXZl
JywKLSAgICAnQmF6VGVzdC5ESVNBQkxFRF9UZXN0QycsCi0gICAgJ0RJU0FCTEVEX0Zvb2JhclRl
c3QuVGVzdDEnLAotICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywKLSAg
ICAnRElTQUJMRURfRm9vYmFyYmF6VGVzdC5UZXN0QScsCi0gICAgXQotCi1pZiBTVVBQT1JUU19E
RUFUSF9URVNUUzoKLSAgREVBVEhfVEVTVFMgPSBbCi0gICAgJ0hhc0RlYXRoVGVzdC5UZXN0MScs
Ci0gICAgJ0hhc0RlYXRoVGVzdC5UZXN0MicsCi0gICAgXQotZWxzZToKLSAgREVBVEhfVEVTVFMg
PSBbXQotCi0jIEFsbCB0aGUgbm9uLWRpc2FibGVkIHRlc3RzLgotQUNUSVZFX1RFU1RTID0gWwot
ICAgICdGb29UZXN0LkFiYycsCi0gICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICdCYXJUZXN0LlRl
c3RPbmUnLAotICAgICdCYXJUZXN0LlRlc3RUd28nLAotICAgICdCYXJUZXN0LlRlc3RUaHJlZScs
Ci0KLSAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAgICAnQmF6VGVzdC5UZXN0QScsCi0gICAgJ0Jh
elRlc3QuVGVzdEInLAotICAgIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTCi0KLXBhcmFt
X3Rlc3RzX3ByZXNlbnQgPSBOb25lCi0KLSMgVXRpbGl0aWVzLgotCi1lbnZpcm9uID0gb3MuZW52
aXJvbi5jb3B5KCkKLQotCi1kZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToKLSAgIiIiU2V0
cyB0aGUgZW52IHZhcmlhYmxlIHRvICd2YWx1ZSc7IHVuc2V0cyBpdCB3aGVuICd2YWx1ZScgaXMg
Tm9uZS4iIiIKLQotICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICBlbnZpcm9uW2Vudl92YXJd
ID0gdmFsdWUKLSAgZWxpZiBlbnZfdmFyIGluIGVudmlyb246Ci0gICAgZGVsIGVudmlyb25bZW52
X3Zhcl0KLQotCi1kZWYgUnVuQW5kUmV0dXJuT3V0cHV0KGFyZ3MgPSBOb25lKToKLSAgIiIiUnVu
cyB0aGUgdGVzdCBwcm9ncmFtIGFuZCByZXR1cm5zIGl0cyBvdXRwdXQuIiIiCi0KLSAgcmV0dXJu
IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhbQ09NTUFORF0gKyAoYXJncyBvciBbXSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudmlyb24pLm91dHB1dAot
Ci0KLWRlZiBSdW5BbmRFeHRyYWN0VGVzdExpc3QoYXJncyA9IE5vbmUpOgotICAiIiJSdW5zIHRo
ZSB0ZXN0IHByb2dyYW0gYW5kIHJldHVybnMgaXRzIGV4aXQgY29kZSBhbmQgYSBsaXN0IG9mIHRl
c3RzIHJ1bi4iIiIKLQotICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtDT01NQU5E
XSArIChhcmdzIG9yIFtdKSwgZW52PWVudmlyb24pCi0gIHRlc3RzX3J1biA9IFtdCi0gIHRlc3Rf
Y2FzZSA9ICcnCi0gIHRlc3QgPSAnJwotICBmb3IgbGluZSBpbiBwLm91dHB1dC5zcGxpdCgnXG4n
KToKLSAgICBtYXRjaCA9IFRFU1RfQ0FTRV9SRUdFWC5tYXRjaChsaW5lKQotICAgIGlmIG1hdGNo
IGlzIG5vdCBOb25lOgotICAgICAgdGVzdF9jYXNlID0gbWF0Y2guZ3JvdXAoMSkKLSAgICBlbHNl
OgotICAgICAgbWF0Y2ggPSBURVNUX1JFR0VYLm1hdGNoKGxpbmUpCi0gICAgICBpZiBtYXRjaCBp
cyBub3QgTm9uZToKLSAgICAgICAgdGVzdCA9IG1hdGNoLmdyb3VwKDEpCi0gICAgICAgIHRlc3Rz
X3J1bi5hcHBlbmQodGVzdF9jYXNlICsgJy4nICsgdGVzdCkKLSAgcmV0dXJuICh0ZXN0c19ydW4s
IHAuZXhpdF9jb2RlKQotCi0KLWRlZiBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LCBm
dW5jdGlvbiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgIiIiUnVucyB0aGUgZ2l2ZW4gZnVuY3Rpb24g
YW5kIGFyZ3VtZW50cyBpbiBhIG1vZGlmaWVkIGVudmlyb25tZW50LiIiIgotICB0cnk6Ci0gICAg
b3JpZ2luYWxfZW52ID0gZW52aXJvbi5jb3B5KCkKLSAgICBlbnZpcm9uLnVwZGF0ZShleHRyYV9l
bnYpCi0gICAgcmV0dXJuIGZ1bmN0aW9uKCphcmdzLCAqKmt3YXJncykKLSAgZmluYWxseToKLSAg
ICBlbnZpcm9uLmNsZWFyKCkKLSAgICBlbnZpcm9uLnVwZGF0ZShvcmlnaW5hbF9lbnYpCi0KLQot
ZGVmIFJ1bldpdGhTaGFyZGluZyh0b3RhbF9zaGFyZHMsIHNoYXJkX2luZGV4LCBjb21tYW5kKToK
LSAgIiIiUnVucyBhIHRlc3QgcHJvZ3JhbSBzaGFyZCBhbmQgcmV0dXJucyBleGl0IGNvZGUgYW5k
IGEgbGlzdCBvZiB0ZXN0cyBydW4uIiIiCi0KLSAgZXh0cmFfZW52ID0ge1NIQVJEX0lOREVYX0VO
Vl9WQVI6IHN0cihzaGFyZF9pbmRleCksCi0gICAgICAgICAgICAgICBUT1RBTF9TSEFSRFNfRU5W
X1ZBUjogc3RyKHRvdGFsX3NoYXJkcyl9Ci0gIHJldHVybiBJbnZva2VXaXRoTW9kaWZpZWRFbnYo
ZXh0cmFfZW52LCBSdW5BbmRFeHRyYWN0VGVzdExpc3QsIGNvbW1hbmQpCi0KLSMgVGhlIHVuaXQg
dGVzdC4KLQotCi1jbGFzcyBHVGVzdEZpbHRlclVuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVz
dENhc2UpOgotICAiIiJUZXN0cyB0aGUgZW52IHZhcmlhYmxlIG9yIHRoZSBjb21tYW5kIGxpbmUg
ZmxhZyB0byBmaWx0ZXIgdGVzdHMuIiIiCi0KLSAgIyBVdGlsaXRpZXMuCi0KLSAgZGVmIEFzc2Vy
dFNldEVxdWFsKHNlbGYsIGxocywgcmhzKToKLSAgICAiIiJBc3NlcnRzIHRoYXQgdHdvIHNldHMg
YXJlIGVxdWFsLiIiIgotCi0gICAgZm9yIGVsZW0gaW4gbGhzOgotICAgICAgc2VsZi5hc3NlcnRf
KGVsZW0gaW4gcmhzLCAnJXMgaW4gJXMnICUgKGVsZW0sIHJocykpCi0KLSAgICBmb3IgZWxlbSBp
biByaHM6Ci0gICAgICBzZWxmLmFzc2VydF8oZWxlbSBpbiBsaHMsICclcyBpbiAlcycgJSAoZWxl
bSwgbGhzKSkKLQotICBkZWYgQXNzZXJ0UGFydGl0aW9uSXNWYWxpZChzZWxmLCBzZXRfdmFyLCBs
aXN0X29mX3NldHMpOgotICAgICIiIkFzc2VydHMgdGhhdCBsaXN0X29mX3NldHMgaXMgYSB2YWxp
ZCBwYXJ0aXRpb24gb2Ygc2V0X3Zhci4iIiIKLQotICAgIGZ1bGxfcGFydGl0aW9uID0gW10KLSAg
ICBmb3Igc2xpY2VfdmFyIGluIGxpc3Rfb2Zfc2V0czoKLSAgICAgIGZ1bGxfcGFydGl0aW9uLmV4
dGVuZChzbGljZV92YXIpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2V0X3ZhciksIGxlbihm
dWxsX3BhcnRpdGlvbikpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzZXRzLlNldChzZXRfdmFyKSwg
c2V0cy5TZXQoZnVsbF9wYXJ0aXRpb24pKQotCi0gIGRlZiBBZGp1c3RGb3JQYXJhbWV0ZXJpemVk
VGVzdHMoc2VsZiwgdGVzdHNfdG9fcnVuKToKLSAgICAiIiJBZGp1c3QgdGVzdHNfdG9fcnVuIGlu
IGNhc2UgdmFsdWUgcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZGlzYWJsZWQuIiIiCi0KLSAgICBn
bG9iYWwgcGFyYW1fdGVzdHNfcHJlc2VudAotICAgIGlmIG5vdCBwYXJhbV90ZXN0c19wcmVzZW50
OgotICAgICAgcmV0dXJuIGxpc3Qoc2V0cy5TZXQodGVzdHNfdG9fcnVuKSAtIHNldHMuU2V0KFBB
UkFNX1RFU1RTKSkKLSAgICBlbHNlOgotICAgICAgcmV0dXJuIHRlc3RzX3RvX3J1bgotCi0gIGRl
ZiBSdW5BbmRWZXJpZnkoc2VsZiwgZ3Rlc3RfZmlsdGVyLCB0ZXN0c190b19ydW4pOgotICAgICIi
IkNoZWNrcyB0aGF0IHRoZSBiaW5hcnkgcnVucyBjb3JyZWN0IHNldCBvZiB0ZXN0cyBmb3IgYSBn
aXZlbiBmaWx0ZXIuIiIiCi0KLSAgICB0ZXN0c190b19ydW4gPSBzZWxmLkFkanVzdEZvclBhcmFt
ZXRlcml6ZWRUZXN0cyh0ZXN0c190b19ydW4pCi0KLSAgICAjIEZpcnN0LCB0ZXN0cyB1c2luZyB0
aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0KLSAgICAjIFdpbmRvd3MgcmVtb3ZlcyBlbXB0eSB2
YXJpYWJsZXMgZnJvbSB0aGUgZW52aXJvbm1lbnQgd2hlbiBwYXNzaW5nIGl0Ci0gICAgIyB0byBh
IG5ldyBwcm9jZXNzLiAgVGhpcyBtZWFucyBpdCBpcyBpbXBvc3NpYmxlIHRvIHBhc3MgYW4gZW1w
dHkgZmlsdGVyCi0gICAgIyBpbnRvIGEgcHJvY2VzcyB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFy
aWFibGUuICBIb3dldmVyLCB3ZSBjYW4gc3RpbGwKLSAgICAjIHRlc3QgdGhlIGNhc2Ugd2hlbiB0
aGUgdmFyaWFibGUgaXMgbm90IHN1cHBsaWVkIChpLmUuLCBndGVzdF9maWx0ZXIgaXMKLSAgICAj
IE5vbmUpLgotICAgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwMwotICAgIGlmIENBTl9URVNU
X0VNUFRZX0ZJTFRFUiBvciBndGVzdF9maWx0ZXIgIT0gJyc6Ci0gICAgICBTZXRFbnZWYXIoRklM
VEVSX0VOVl9WQVIsIGd0ZXN0X2ZpbHRlcikKLSAgICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4dHJh
Y3RUZXN0TGlzdCgpWzBdCi0gICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIE5vbmUpCi0g
ICAgICBzZWxmLkFzc2VydFNldEVxdWFsKHRlc3RzX3J1biwgdGVzdHNfdG9fcnVuKQotICAgICMg
cHlsaW50OiBlbmFibGUtbXNnPUM2NDAzCi0KLSAgICAjIE5leHQsIHRlc3RzIHVzaW5nIHRoZSBj
b21tYW5kIGxpbmUgZmxhZy4KLQotICAgIGlmIGd0ZXN0X2ZpbHRlciBpcyBOb25lOgotICAgICAg
YXJncyA9IFtdCi0gICAgZWxzZToKLSAgICAgIGFyZ3MgPSBbJy0tJXM9JXMnICUgKEZJTFRFUl9G
TEFHLCBndGVzdF9maWx0ZXIpXQotCi0gICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RM
aXN0KGFyZ3MpWzBdCi0gICAgc2VsZi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIHRlc3RzX3Rv
X3J1bikKLQotICBkZWYgUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKHNlbGYsIGd0ZXN0X2ZpbHRl
ciwgdG90YWxfc2hhcmRzLCB0ZXN0c190b19ydW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJncz1Ob25lLCBjaGVja19leGl0XzA9RmFsc2UpOgotICAgICIiIkNoZWNrcyB0aGF0
IGJpbmFyeSBydW5zIGNvcnJlY3QgdGVzdHMgZm9yIHRoZSBnaXZlbiBmaWx0ZXIgYW5kIHNoYXJk
LgotCi0gICAgUnVucyBhbGwgc2hhcmRzIG9mIGd0ZXN0X2ZpbHRlcl91bml0dGVzdF8gd2l0aCB0
aGUgZ2l2ZW4gZmlsdGVyLCBhbmQKLSAgICB2ZXJpZmllcyB0aGF0IHRoZSByaWdodCBzZXQgb2Yg
dGVzdHMgd2VyZSBydW4uIFRoZSB1bmlvbiBvZiB0ZXN0cyBydW4KLSAgICBvbiBlYWNoIHNoYXJk
IHNob3VsZCBiZSBpZGVudGljYWwgdG8gdGVzdHNfdG9fcnVuLCB3aXRob3V0IGR1cGxpY2F0ZXMu
Ci0KLSAgICBBcmdzOgotICAgICAgZ3Rlc3RfZmlsdGVyOiBBIGZpbHRlciB0byBhcHBseSB0byB0
aGUgdGVzdHMuCi0gICAgICB0b3RhbF9zaGFyZHM6IEEgdG90YWwgbnVtYmVyIG9mIHNoYXJkcyB0
byBzcGxpdCB0ZXN0IHJ1biBpbnRvLgotICAgICAgdGVzdHNfdG9fcnVuOiBBIHNldCBvZiB0ZXN0
cyBleHBlY3RlZCB0byBydW4uCi0gICAgICBhcmdzICAgOiAgICAgIEFyZ3VtZW50cyB0byBwYXNz
IHRvIHRoZSB0byB0aGUgdGVzdCBiaW5hcnkuCi0gICAgICBjaGVja19leGl0XzA6IFdoZW4gc2V0
IHRvIGEgdHJ1ZSB2YWx1ZSwgbWFrZSBzdXJlIHRoYXQgYWxsIHNoYXJkcwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMC4KLSAgICAiIiIKLQotICAgIHRlc3RzX3RvX3J1biA9IHNlbGYuQWRq
dXN0Rm9yUGFyYW1ldGVyaXplZFRlc3RzKHRlc3RzX3RvX3J1bikKLQotICAgICMgV2luZG93cyBy
ZW1vdmVzIGVtcHR5IHZhcmlhYmxlcyBmcm9tIHRoZSBlbnZpcm9ubWVudCB3aGVuIHBhc3Npbmcg
aXQKLSAgICAjIHRvIGEgbmV3IHByb2Nlc3MuICBUaGlzIG1lYW5zIGl0IGlzIGltcG9zc2libGUg
dG8gcGFzcyBhbiBlbXB0eSBmaWx0ZXIKLSAgICAjIGludG8gYSBwcm9jZXNzIHVzaW5nIHRoZSBl
bnZpcm9ubWVudCB2YXJpYWJsZS4gIEhvd2V2ZXIsIHdlIGNhbiBzdGlsbAotICAgICMgdGVzdCB0
aGUgY2FzZSB3aGVuIHRoZSB2YXJpYWJsZSBpcyBub3Qgc3VwcGxpZWQgKGkuZS4sIGd0ZXN0X2Zp
bHRlciBpcwotICAgICMgTm9uZSkuCi0gICAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2NDAzCi0g
ICAgaWYgQ0FOX1RFU1RfRU1QVFlfRklMVEVSIG9yIGd0ZXN0X2ZpbHRlciAhPSAnJzoKLSAgICAg
IFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgZ3Rlc3RfZmlsdGVyKQotICAgICAgcGFydGl0aW9u
ID0gW10KLSAgICAgIGZvciBpIGluIHJhbmdlKDAsIHRvdGFsX3NoYXJkcyk6Ci0gICAgICAgICh0
ZXN0c19ydW4sIGV4aXRfY29kZSkgPSBSdW5XaXRoU2hhcmRpbmcodG90YWxfc2hhcmRzLCBpLCBh
cmdzKQotICAgICAgICBpZiBjaGVja19leGl0XzA6Ci0gICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgwLCBleGl0X2NvZGUpCi0gICAgICAgIHBhcnRpdGlvbi5hcHBlbmQodGVzdHNfcnVuKQotCi0g
ICAgICBzZWxmLkFzc2VydFBhcnRpdGlvbklzVmFsaWQodGVzdHNfdG9fcnVuLCBwYXJ0aXRpb24p
Ci0gICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIE5vbmUpCi0gICAgIyBweWxpbnQ6IGVu
YWJsZS1tc2c9QzY0MDMKLQotICBkZWYgUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZChzZWxm
LCBndGVzdF9maWx0ZXIsIHRlc3RzX3RvX3J1bik6Ci0gICAgIiIiQ2hlY2tzIHRoYXQgdGhlIGJp
bmFyeSBydW5zIGNvcnJlY3Qgc2V0IG9mIHRlc3RzIGZvciB0aGUgZ2l2ZW4gZmlsdGVyLgotCi0g
ICAgUnVucyBndGVzdF9maWx0ZXJfdW5pdHRlc3RfIHdpdGggdGhlIGdpdmVuIGZpbHRlciwgYW5k
IGVuYWJsZXMKLSAgICBkaXNhYmxlZCB0ZXN0cy4gVmVyaWZpZXMgdGhhdCB0aGUgcmlnaHQgc2V0
IG9mIHRlc3RzIHdlcmUgcnVuLgotCi0gICAgQXJnczoKLSAgICAgIGd0ZXN0X2ZpbHRlcjogQSBm
aWx0ZXIgdG8gYXBwbHkgdG8gdGhlIHRlc3RzLgotICAgICAgdGVzdHNfdG9fcnVuOiBBIHNldCBv
ZiB0ZXN0cyBleHBlY3RlZCB0byBydW4uCi0gICAgIiIiCi0KLSAgICB0ZXN0c190b19ydW4gPSBz
ZWxmLkFkanVzdEZvclBhcmFtZXRlcml6ZWRUZXN0cyh0ZXN0c190b19ydW4pCi0KLSAgICAjIENv
bnN0cnVjdCB0aGUgY29tbWFuZCBsaW5lLgotICAgIGFyZ3MgPSBbJy0tJXMnICUgQUxTT19SVU5f
RElTQUJFRF9URVNUU19GTEFHXQotICAgIGlmIGd0ZXN0X2ZpbHRlciBpcyBub3QgTm9uZToKLSAg
ICAgIGFyZ3MuYXBwZW5kKCctLSVzPSVzJyAlIChGSUxURVJfRkxBRywgZ3Rlc3RfZmlsdGVyKSkK
LQotICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0TGlzdChhcmdzKVswXQotICAgIHNl
bGYuQXNzZXJ0U2V0RXF1YWwodGVzdHNfcnVuLCB0ZXN0c190b19ydW4pCi0KLSAgZGVmIHNldFVw
KHNlbGYpOgotICAgICIiIlNldHMgdXAgdGVzdCBjYXNlLgotCi0gICAgRGV0ZXJtaW5lcyB3aGV0
aGVyIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQgaW4gdGhlIGJpbmFyeSBh
bmQKLSAgICBzZXRzIHRoZSBmbGFncyBhY2NvcmRpbmdseS4KLSAgICAiIiIKLQotICAgIGdsb2Jh
bCBwYXJhbV90ZXN0c19wcmVzZW50Ci0gICAgaWYgcGFyYW1fdGVzdHNfcHJlc2VudCBpcyBOb25l
OgotICAgICAgcGFyYW1fdGVzdHNfcHJlc2VudCA9IFBBUkFNX1RFU1RfUkVHRVguc2VhcmNoKAot
ICAgICAgICAgIFJ1bkFuZFJldHVybk91dHB1dCgpKSBpcyBub3QgTm9uZQotCi0gIGRlZiB0ZXN0
RGVmYXVsdEJlaGF2aW9yKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiBub3Qg
c3BlY2lmeWluZyB0aGUgZmlsdGVyLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoTm9uZSwg
QUNUSVZFX1RFU1RTKQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9yV2l0aFNoYXJkcyhzZWxm
KToKLSAgICAiIiJUZXN0cyB0aGUgYmVoYXZpb3Igd2l0aG91dCB0aGUgZmlsdGVyLCB3aXRoIHNo
YXJkaW5nIGVuYWJsZWQuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhO
b25lLCAxLCBBQ1RJVkVfVEVTVFMpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmco
Tm9uZSwgMiwgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5n
KE5vbmUsIGxlbihBQ1RJVkVfVEVTVFMpIC0gMSwgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVu
QW5kVmVyaWZ5V2l0aFNoYXJkaW5nKE5vbmUsIGxlbihBQ1RJVkVfVEVTVFMpLCBBQ1RJVkVfVEVT
VFMpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgbGVuKEFDVElWRV9U
RVNUUykgKyAxLCBBQ1RJVkVfVEVTVFMpCi0KLSAgZGVmIHRlc3RFbXB0eUZpbHRlcihzZWxmKToK
LSAgICAiIiJUZXN0cyBhbiBlbXB0eSBmaWx0ZXIuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlm
eSgnJywgW10pCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJycsIDEsIFtdKQot
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKCcnLCAyLCBbXSkKLQotICBkZWYgdGVz
dEJhZEZpbHRlcihzZWxmKToKLSAgICAiIiJUZXN0cyBhIGZpbHRlciB0aGF0IG1hdGNoZXMgbm90
aGluZy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdCYWRGaWx0ZXInLCBbXSkKLSAgICBz
ZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0JhZEZpbHRlcicsIFtdKQotCi0gIGRl
ZiB0ZXN0RnVsbE5hbWUoc2VsZik6Ci0gICAgIiIiVGVzdHMgZmlsdGVyaW5nIGJ5IGZ1bGwgbmFt
ZS4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdGb29UZXN0Llh5eicsIFsnRm9vVGVzdC5Y
eXonXSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0Zvb1Rlc3QuWHl6
JywgWydGb29UZXN0Llh5eiddKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKCdG
b29UZXN0Llh5eicsIDUsIFsnRm9vVGVzdC5YeXonXSkKLQotICBkZWYgdGVzdFVuaXZlcnNhbEZp
bHRlcnMoc2VsZik6Ci0gICAgIiIiVGVzdHMgZmlsdGVycyB0aGF0IG1hdGNoIGV2ZXJ5dGhpbmcu
IiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKicsIEFDVElWRV9URVNUUykKLSAgICBzZWxm
LlJ1bkFuZFZlcmlmeSgnKi4qJywgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5
V2l0aFNoYXJkaW5nKCcqLionLCBsZW4oQUNUSVZFX1RFU1RTKSAtIDMsIEFDVElWRV9URVNUUykK
LSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJyonLCBBQ1RJVkVfVEVTVFMg
KyBESVNBQkxFRF9URVNUUykKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQo
JyouKicsIEFDVElWRV9URVNUUyArIERJU0FCTEVEX1RFU1RTKQotCi0gIGRlZiB0ZXN0RmlsdGVy
QnlUZXN0Q2FzZShzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0ZXJpbmcgYnkgdGVzdCBjYXNlIG5h
bWUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnRm9vVGVzdC4qJywgWydGb29UZXN0LkFi
YycsICdGb29UZXN0Llh5eiddKQotCi0gICAgQkFaX1RFU1RTID0gWydCYXpUZXN0LlRlc3RPbmUn
LCAnQmF6VGVzdC5UZXN0QScsICdCYXpUZXN0LlRlc3RCJ10KLSAgICBzZWxmLlJ1bkFuZFZlcmlm
eSgnQmF6VGVzdC4qJywgQkFaX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdE
aXNhYmxlZCgnQmF6VGVzdC4qJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQkFaX1RFU1RTICsgWydCYXpUZXN0LkRJU0FCTEVEX1Rlc3RDJ10pCi0KLSAgZGVmIHRlc3RG
aWx0ZXJCeVRlc3Qoc2VsZik6Ci0gICAgIiIiVGVzdHMgZmlsdGVyaW5nIGJ5IHRlc3QgbmFtZS4i
IiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLlRlc3RPbmUnLCBbJ0JhclRlc3QuVGVzdE9u
ZScsICdCYXpUZXN0LlRlc3RPbmUnXSkKLQotICBkZWYgdGVzdEZpbHRlckRpc2FibGVkVGVzdHMo
c2VsZik6Ci0gICAgIiIiU2VsZWN0IG9ubHkgdGhlIGRpc2FibGVkIHRlc3RzIHRvIHJ1bi4iIiIK
LQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdESVNBQkxFRF9Gb29iYXJUZXN0LlRlc3QxJywgW10p
Ci0gICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdESVNBQkxFRF9Gb29iYXJU
ZXN0LlRlc3QxJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydESVNB
QkxFRF9Gb29iYXJUZXN0LlRlc3QxJ10pCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKkRJU0FC
TEVEXyonLCBbXSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJypESVNB
QkxFRF8qJywgRElTQUJMRURfVEVTVFMpCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi5ESVNB
QkxFRF8qJywgW10pCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCcqLkRJ
U0FCTEVEXyonLCBbCi0gICAgICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rlc3RGb3VyJywKLSAgICAg
ICAgJ0JhclRlc3QuRElTQUJMRURfVGVzdEZpdmUnLAotICAgICAgICAnQmF6VGVzdC5ESVNBQkxF
RF9UZXN0QycsCi0gICAgICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywK
LSAgICAgICAgXSkKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdESVNBQkxFRF8qJywgW10pCi0g
ICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdESVNBQkxFRF8qJywgWwotICAg
ICAgICAnRElTQUJMRURfRm9vYmFyVGVzdC5UZXN0MScsCi0gICAgICAgICdESVNBQkxFRF9Gb29i
YXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywKLSAgICAgICAgJ0RJU0FCTEVEX0Zvb2JhcmJhelRlc3Qu
VGVzdEEnLAotICAgICAgICBdKQotCi0gIGRlZiB0ZXN0V2lsZGNhcmRJblRlc3RDYXNlTmFtZShz
ZWxmKToKLSAgICAiIiJUZXN0cyB1c2luZyB3aWxkY2FyZCBpbiB0aGUgdGVzdCBjYXNlIG5hbWUu
IiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKmEqLionLCBbCi0gICAgICAgICdCYXJUZXN0
LlRlc3RPbmUnLAotICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKLSAgICAgICAgJ0JhclRlc3Qu
VGVzdFRocmVlJywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAgICAgICAgJ0JhelRl
c3QuVGVzdEEnLAotICAgICAgICAnQmF6VGVzdC5UZXN0QicsIF0gKyBERUFUSF9URVNUUyArIFBB
UkFNX1RFU1RTKQotCi0gIGRlZiB0ZXN0V2lsZGNhcmRJblRlc3ROYW1lKHNlbGYpOgotICAgICIi
IlRlc3RzIHVzaW5nIHdpbGRjYXJkIGluIHRoZSB0ZXN0IG5hbWUuIiIiCi0KLSAgICBzZWxmLlJ1
bkFuZFZlcmlmeSgnKi4qQSonLCBbJ0Zvb1Rlc3QuQWJjJywgJ0JhelRlc3QuVGVzdEEnXSkKLQot
ICBkZWYgdGVzdEZpbHRlcldpdGhvdXREb3Qoc2VsZik6Ci0gICAgIiIiVGVzdHMgYSBmaWx0ZXIg
dGhhdCBoYXMgbm8gJy4nIGluIGl0LiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJyp6Kics
IFsKLSAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywK
LSAgICAgICAgJ0JhelRlc3QuVGVzdEEnLAotICAgICAgICAnQmF6VGVzdC5UZXN0QicsCi0gICAg
ICAgIF0pCi0KLSAgZGVmIHRlc3RUd29QYXR0ZXJucyhzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0
ZXJzIHRoYXQgY29uc2lzdCBvZiB0d28gcGF0dGVybnMuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeSgnRm9vKi4qOipBKicsIFsKLSAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAgICAgJ0Zv
b1Rlc3QuWHl6JywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0QScsCi0gICAgICAgIF0pCi0KLSAg
ICAjIEFuIGVtcHR5IHBhdHRlcm4gKyBhIG5vbi1lbXB0eSBvbmUKLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeSgnOipBKicsIFsnRm9vVGVzdC5BYmMnLCAnQmF6VGVzdC5UZXN0QSddKQotCi0gIGRlZiB0
ZXN0VGhyZWVQYXR0ZXJucyhzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0ZXJzIHRoYXQgY29uc2lz
dCBvZiB0aHJlZSBwYXR0ZXJucy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqb28qOipB
KjoqT25lJywgWwotICAgICAgICAnRm9vVGVzdC5BYmMnLAotICAgICAgICAnRm9vVGVzdC5YeXon
LAotCi0gICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RP
bmUnLAotICAgICAgICAnQmF6VGVzdC5UZXN0QScsCi0gICAgICAgIF0pCi0KLSAgICAjIFRoZSAy
bmQgcGF0dGVybiBpcyBlbXB0eS4KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKm9vKjo6Kk9uZScs
IFsKLSAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAg
ICAgICAnQmFyVGVzdC5UZXN0T25lJywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAg
ICAgICAgXSkKLQotICAgICMgVGhlIGxhc3QgMiBwYXR0ZXJucyBhcmUgZW1wdHkuCi0gICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoJypvbyo6OicsIFsKLSAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAg
ICAgJ0Zvb1Rlc3QuWHl6JywKLSAgICAgICAgXSkKLQotICBkZWYgdGVzdE5lZ2F0aXZlRmlsdGVy
cyhzZWxmKToKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi1CYXpUZXN0LlRlc3RPbmUnLCBbCi0g
ICAgICAgICdGb29UZXN0LkFiYycsCi0gICAgICAgICdGb29UZXN0Llh5eicsCi0KLSAgICAgICAg
J0JhclRlc3QuVGVzdE9uZScsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAotICAgICAgICAn
QmFyVGVzdC5UZXN0VGhyZWUnLAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RBJywKLSAgICAgICAg
J0JhelRlc3QuVGVzdEInLAotICAgICAgICBdICsgREVBVEhfVEVTVFMgKyBQQVJBTV9URVNUUykK
LQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLUZvb1Rlc3QuQWJjOkJhelRlc3QuKicsIFsKLSAg
ICAgICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKLSAgICAg
ICAgJ0JhclRlc3QuVGVzdFR3bycsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCi0gICAg
ICAgIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTKQotCi0gICAgc2VsZi5SdW5BbmRWZXJp
ZnkoJ0JhclRlc3QuKi1CYXJUZXN0LlRlc3RPbmUnLCBbCi0gICAgICAgICdCYXJUZXN0LlRlc3RU
d28nLAotICAgICAgICAnQmFyVGVzdC5UZXN0VGhyZWUnLAotICAgICAgICBdKQotCi0gICAgIyBU
ZXN0cyB3aXRob3V0IGxlYWRpbmcgJyonLgotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCctRm9vVGVz
dC5BYmM6Rm9vVGVzdC5YeXo6QmF6VGVzdC4qJywgWwotICAgICAgICAnQmFyVGVzdC5UZXN0T25l
JywKLSAgICAgICAgJ0JhclRlc3QuVGVzdFR3bycsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUaHJl
ZScsCi0gICAgICAgIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTKQotCi0gICAgIyBWYWx1
ZSBwYXJhbWV0ZXJpemVkIHRlc3RzLgotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLyonLCBQQVJB
TV9URVNUUykKLQotICAgICMgVmFsdWUgcGFyYW1ldGVyaXplZCB0ZXN0cyBmaWx0ZXJpbmcgYnkg
dGhlIHNlcXVlbmNlIG5hbWUuCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJ1NlcVAvKicsIFsKLSAg
ICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RYLzAnLAotICAgICAgICAnU2VxUC9QYXJhbVRlc3Qu
VGVzdFgvMScsCi0gICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAgICAgJ1Nl
cVAvUGFyYW1UZXN0LlRlc3RZLzEnLAotICAgICAgICBdKQotCi0gICAgIyBWYWx1ZSBwYXJhbWV0
ZXJpemVkIHRlc3RzIGZpbHRlcmluZyBieSB0aGUgdGVzdCBuYW1lLgotICAgIHNlbGYuUnVuQW5k
VmVyaWZ5KCcqLzAnLCBbCi0gICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywKLSAgICAg
ICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzAnLAotICAgICAgICAnU2VxUS9QYXJhbVRlc3QuVGVz
dFgvMCcsCi0gICAgICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAgICAgXSkKLQot
ICBkZWYgdGVzdEZsYWdPdmVycmlkZXNFbnZWYXIoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCB0
aGUgZmlsdGVyIGZsYWcgb3ZlcnJpZGVzIHRoZSBmaWx0ZXJpbmcgZW52LiB2YXJpYWJsZS4iIiIK
LQotICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgJ0ZvbyonKQotICAgIGFyZ3MgPSBbJy0t
JXM9JXMnICUgKEZJTFRFUl9GTEFHLCAnKk9uZScpXQotICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4
dHJhY3RUZXN0TGlzdChhcmdzKVswXQotICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgTm9u
ZSkKLQotICAgIHNlbGYuQXNzZXJ0U2V0RXF1YWwodGVzdHNfcnVuLCBbJ0JhclRlc3QuVGVzdE9u
ZScsICdCYXpUZXN0LlRlc3RPbmUnXSkKLQotICBkZWYgdGVzdFNoYXJkU3RhdHVzRmlsZUlzQ3Jl
YXRlZChzZWxmKToKLSAgICAiIiJUZXN0cyB0aGF0IHRoZSBzaGFyZCBmaWxlIGlzIGNyZWF0ZWQg
aWYgc3BlY2lmaWVkIGluIHRoZSBlbnZpcm9ubWVudC4iIiIKLQotICAgIHNoYXJkX3N0YXR1c19m
aWxlID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGFyZF9zdGF0dXNfZmlsZScpCi0gICAg
c2VsZi5hc3NlcnRfKG5vdCBvcy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkpCi0KLSAg
ICBleHRyYV9lbnYgPSB7U0hBUkRfU1RBVFVTX0ZJTEVfRU5WX1ZBUjogc2hhcmRfc3RhdHVzX2Zp
bGV9Ci0gICAgdHJ5OgotICAgICAgSW52b2tlV2l0aE1vZGlmaWVkRW52KGV4dHJhX2VudiwgUnVu
QW5kUmV0dXJuT3V0cHV0KQotICAgIGZpbmFsbHk6Ci0gICAgICBzZWxmLmFzc2VydF8ob3MucGF0
aC5leGlzdHMoc2hhcmRfc3RhdHVzX2ZpbGUpKQotICAgICAgb3MucmVtb3ZlKHNoYXJkX3N0YXR1
c19maWxlKQotCi0gIGRlZiB0ZXN0U2hhcmRTdGF0dXNGaWxlSXNDcmVhdGVkV2l0aExpc3RUZXN0
cyhzZWxmKToKLSAgICAiIiJUZXN0cyB0aGF0IHRoZSBzaGFyZCBmaWxlIGlzIGNyZWF0ZWQgd2l0
aCB0aGUgImxpc3RfdGVzdHMiIGZsYWcuIiIiCi0KLSAgICBzaGFyZF9zdGF0dXNfZmlsZSA9IG9z
LnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnc2hhcmRfc3RhdHVzX2ZpbGUyJykKLSAgICBzZWxmLmFz
c2VydF8obm90IG9zLnBhdGguZXhpc3RzKHNoYXJkX3N0YXR1c19maWxlKSkKLQotICAgIGV4dHJh
X2VudiA9IHtTSEFSRF9TVEFUVVNfRklMRV9FTlZfVkFSOiBzaGFyZF9zdGF0dXNfZmlsZX0KLSAg
ICB0cnk6Ci0gICAgICBvdXRwdXQgPSBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bkFuZFJldHVybk91dHB1dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbTElTVF9URVNUU19GTEFHXSkK
LSAgICBmaW5hbGx5OgotICAgICAgIyBUaGlzIGFzc2VydGlvbiBlbnN1cmVzIHRoYXQgR29vZ2xl
IFRlc3QgZW51bWVyYXRlZCB0aGUgdGVzdHMgYXMKLSAgICAgICMgb3Bwb3NlZCB0byBydW5uaW5n
IHRoZW0uCi0gICAgICBzZWxmLmFzc2VydF8oJ1s9PT09PT09PT09XScgbm90IGluIG91dHB1dCwK
LSAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBvdXRwdXQgZHVyaW5nIHRlc3QgZW51bWVy
YXRpb24uXG4nCi0gICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBlbnN1cmUgdGhhdCBMSVNUX1RF
U1RTX0ZMQUcgaXMgYXNzaWduZWQgdGhlXG4nCi0gICAgICAgICAgICAgICAgICAgJ2NvcnJlY3Qg
ZmxhZyB2YWx1ZSBmb3IgbGlzdGluZyBHb29nbGUgVGVzdCB0ZXN0cy4nKQotCi0gICAgICBzZWxm
LmFzc2VydF8ob3MucGF0aC5leGlzdHMoc2hhcmRfc3RhdHVzX2ZpbGUpKQotICAgICAgb3MucmVt
b3ZlKHNoYXJkX3N0YXR1c19maWxlKQotCi0gIGlmIFNVUFBPUlRTX0RFQVRIX1RFU1RTOgotICAg
IGRlZiB0ZXN0U2hhcmRpbmdXb3Jrc1dpdGhEZWF0aFRlc3RzKHNlbGYpOgotICAgICAgIiIiVGVz
dHMgaW50ZWdyYXRpb24gd2l0aCBkZWF0aCB0ZXN0cyBhbmQgc2hhcmRpbmcuIiIiCi0KLSAgICAg
IGd0ZXN0X2ZpbHRlciA9ICdIYXNEZWF0aFRlc3QuKjpTZXFQLyonCi0gICAgICBleHBlY3RlZF90
ZXN0cyA9IFsKLSAgICAgICAgICAnSGFzRGVhdGhUZXN0LlRlc3QxJywKLSAgICAgICAgICAnSGFz
RGVhdGhUZXN0LlRlc3QyJywKLQotICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywK
LSAgICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMScsCi0gICAgICAgICAgJ1NlcVAvUGFy
YW1UZXN0LlRlc3RZLzAnLAotICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8xJywKLSAg
ICAgICAgICBdCi0KLSAgICAgIGZvciBmbGFnIGluIFsnLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxl
PXRocmVhZHNhZmUnLAotICAgICAgICAgICAgICAgICAgICctLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5
bGU9ZmFzdCddOgotICAgICAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhndGVzdF9m
aWx0ZXIsIDMsIGV4cGVjdGVkX3Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGVja19leGl0XzA9VHJ1ZSwgYXJncz1bZmxhZ10pCi0gICAgICAgIHNlbGYuUnVu
QW5kVmVyaWZ5V2l0aFNoYXJkaW5nKGd0ZXN0X2ZpbHRlciwgNSwgZXhwZWN0ZWRfdGVzdHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2V4aXRfMD1UcnVlLCBh
cmdzPVtmbGFnXSkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91
dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfZmlsdGVyX3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfZmlsdGVyX3VuaXR0ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI1
NTA0ZmU5NGFmYzE3N2M0NmNiYzEzNWZlYzY3NWM1NTRkMmUwZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X2ZpbHRlcl91bml0dGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBA
QAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0v
LyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gVW5pdCB0ZXN0IGZvciBH
b29nbGUgVGVzdCB0ZXN0IGZpbHRlcnMuCi0vLwotLy8gQSB1c2VyIGNhbiBzcGVjaWZ5IHdoaWNo
IHRlc3QocykgaW4gYSBHb29nbGUgVGVzdCBwcm9ncmFtIHRvIHJ1biB2aWEKLS8vIGVpdGhlciB0
aGUgR1RFU1RfRklMVEVSIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZSAtLWd0ZXN0X2ZpbHRl
cgotLy8gZmxhZy4gIFRoaXMgaXMgdXNlZCBmb3IgdGVzdGluZyBzdWNoIGZ1bmN0aW9uYWxpdHku
Ci0vLwotLy8gVGhlIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRob24gdW5pdCB0
ZXN0LiAgRG9uJ3QgcnVuIGl0Ci0vLyBkaXJlY3RseS4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIFRlc3QgY2FzZSBGb29UZXN0LgotCi1jbGFzcyBGb29U
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVEVTVF9GKEZvb1Rlc3QsIEFiYykg
ewotfQotCi1URVNUX0YoRm9vVGVzdCwgWHl6KSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFp
bHVyZS4iOwotfQotCi0vLyBUZXN0IGNhc2UgQmFyVGVzdC4KLQotVEVTVChCYXJUZXN0LCBUZXN0
T25lKSB7Ci19Ci0KLVRFU1QoQmFyVGVzdCwgVGVzdFR3bykgewotfQotCi1URVNUKEJhclRlc3Qs
IFRlc3RUaHJlZSkgewotfQotCi1URVNUKEJhclRlc3QsIERJU0FCTEVEX1Rlc3RGb3VyKSB7Ci0g
IEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi1URVNUKEJhclRlc3QsIERJU0FC
TEVEX1Rlc3RGaXZlKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi0v
LyBUZXN0IGNhc2UgQmF6VGVzdC4KLQotVEVTVChCYXpUZXN0LCBUZXN0T25lKSB7Ci0gIEZBSUwo
KSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi1URVNUKEJhelRlc3QsIFRlc3RBKSB7Ci19
Ci0KLVRFU1QoQmF6VGVzdCwgVGVzdEIpIHsKLX0KLQotVEVTVChCYXpUZXN0LCBESVNBQkxFRF9U
ZXN0QykgewotICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKLX0KLQotLy8gVGVzdCBj
YXNlIEhhc0RlYXRoVGVzdAotCi1URVNUKEhhc0RlYXRoVGVzdCwgVGVzdDEpIHsKLSAgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRChleGl0KDEpLCAiLioiKTsKLX0KLQotLy8gV2UgbmVlZCBhdCBs
ZWFzdCB0d28gZGVhdGggdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGFsbCBkZWF0aCB0ZXN0
cwotLy8gYXJlbid0IG9uIHRoZSBmaXJzdCBzaGFyZC4KLVRFU1QoSGFzRGVhdGhUZXN0LCBUZXN0
MikgewotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKGV4aXQoMSksICIuKiIpOwotfQotCi0v
LyBUZXN0IGNhc2UgRm9vYmFyVGVzdAotCi1URVNUKERJU0FCTEVEX0Zvb2JhclRlc3QsIFRlc3Qx
KSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi1URVNUKERJU0FCTEVE
X0Zvb2JhclRlc3QsIERJU0FCTEVEX1Rlc3QyKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFp
bHVyZS4iOwotfQotCi0vLyBUZXN0IGNhc2UgRm9vYmFyYmF6VGVzdAotCi1URVNUKERJU0FCTEVE
X0Zvb2JhcmJhelRlc3QsIFRlc3RBKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4i
OwotfQotCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLWNsYXNzIFBhcmFtVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4gewotfTsKLQotVEVTVF9QKFBhcmFtVGVzdCwg
VGVzdFgpIHsKLX0KLQotVEVTVF9QKFBhcmFtVGVzdCwgVGVzdFkpIHsKLX0KLQotSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoU2VxUCwgUGFyYW1UZXN0LCB0ZXN0aW5nOjpWYWx1ZXMoMSwgMikpOwot
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxUSwgUGFyYW1UZXN0LCB0ZXN0aW5nOjpWYWx1ZXMo
NSwgNikpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi19ICAvLyBuYW1lc3Bh
Y2UKLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7Ci0gIDo6dGVzdGluZzo6SW5p
dEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVz
dC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5Cmlu
ZGV4IDNjYjRjNDhlMGI0NjI4ZDlhYTdjNmYzMjA3YWI3ZWUxMGNkMjJiYTMuLjU4MmQyNGMyZGNj
ZTg5NDUzOGFhNjNjY2JkNjEyMGJkZDRiMzUwYTAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5CkBAIC0yOSwyNyArMjksMjYgQEAKICMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSIiIlRlc3RzIHRoZSAtLWhlbHAgZmxhZyBvZiBH
b29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrLgorIiIiVGVzdHMgdGhlIC0taGVscCBmbGFnIG9m
IEdvb2dsZSBDKysgVGVzdGluZyBhbmQgTW9ja2luZyBGcmFtZXdvcmsuCiAKIFNZTk9QU0lTCi0g
ICAgICAgZ3Rlc3RfaGVscF90ZXN0LnB5IC0tZ3Rlc3RfYnVpbGRfZGlyPUJVSUxEL0RJUgorICAg
ICAgIGd0ZXN0X2hlbHBfdGVzdC5weSAtLWJ1aWxkX2Rpcj1CVUlMRC9ESVIKICAgICAgICAgICMg
d2hlcmUgQlVJTEQvRElSIGNvbnRhaW5zIHRoZSBidWlsdCBndGVzdF9oZWxwX3Rlc3RfIGZpbGUu
CiAgICAgICAgZ3Rlc3RfaGVscF90ZXN0LnB5CiAiIiIKIAotX19hdXRob3JfXyA9ICd3YW5AZ29v
Z2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBn
dGVzdF90ZXN0X3V0aWxzCiAKIAorSVNfTElOVVggPSBvcy5uYW1lID09ICdwb3NpeCcgYW5kIG9z
LnVuYW1lKClbMF0gPT0gJ0xpbnV4JwogSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250JwogCiBQ
Uk9HUkFNX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ3Rl
c3RfaGVscF90ZXN0XycpCiBGTEFHX1BSRUZJWCA9ICctLWd0ZXN0XycKLUNBVENIX0VYQ0VQVElP
TlNfRkxBRyA9IEZMQUdfUFJFRklYICsgJ2NhdGNoX2V4Y2VwdGlvbnMnCiBERUFUSF9URVNUX1NU
WUxFX0ZMQUcgPSBGTEFHX1BSRUZJWCArICdkZWF0aF90ZXN0X3N0eWxlJworU1RSRUFNX1JFU1VM
VF9UT19GTEFHID0gRkxBR19QUkVGSVggKyAnc3RyZWFtX3Jlc3VsdF90bycKIFVOS05PV05fRkxB
RyA9IEZMQUdfUFJFRklYICsgJ3Vua25vd25fZmxhZ19mb3JfdGVzdGluZycKIExJU1RfVEVTVFNf
RkxBRyA9IEZMQUdfUFJFRklYICsgJ2xpc3RfdGVzdHMnCiBJTkNPUlJFQ1RfRkxBR19WQVJJQU5U
UyA9IFtyZS5zdWIoJ14tLScsICctJywgTElTVF9URVNUU19GTEFHKSwKQEAgLTcyLDcgKzcxLDgg
QEAgSEVMUF9SRUdFWCA9IHJlLmNvbXBpbGUoCiAgICAgRkxBR19QUkVGSVggKyByJ3ByaW50X3Rp
bWUuKicgKwogICAgIEZMQUdfUFJFRklYICsgcidvdXRwdXQ9LionICsKICAgICBGTEFHX1BSRUZJ
WCArIHInYnJlYWtfb25fZmFpbHVyZS4qJyArCi0gICAgRkxBR19QUkVGSVggKyByJ3Rocm93X29u
X2ZhaWx1cmUuKicsCisgICAgRkxBR19QUkVGSVggKyByJ3Rocm93X29uX2ZhaWx1cmUuKicgKwor
ICAgIEZMQUdfUFJFRklYICsgcidjYXRjaF9leGNlcHRpb25zPTAuKicsCiAgICAgcmUuRE9UQUxM
KQogCiAKQEAgLTEwOSwxMCArMTA5LDExIEBAIGNsYXNzIEdUZXN0SGVscFRlc3QoZ3Rlc3RfdGVz
dF91dGlscy5UZXN0Q2FzZSk6CiAgICAgZXhpdF9jb2RlLCBvdXRwdXQgPSBSdW5XaXRoRmxhZyhm
bGFnKQogICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIGV4aXRfY29kZSkKICAgICBzZWxmLmFzc2Vy
dF8oSEVMUF9SRUdFWC5zZWFyY2gob3V0cHV0KSwgb3V0cHV0KQotICAgIGlmIElTX1dJTkRPV1M6
Ci0gICAgICBzZWxmLmFzc2VydF8oQ0FUQ0hfRVhDRVBUSU9OU19GTEFHIGluIG91dHB1dCwgb3V0
cHV0KQorCisgICAgaWYgSVNfTElOVVg6CisgICAgICBzZWxmLmFzc2VydF8oU1RSRUFNX1JFU1VM
VF9UT19GTEFHIGluIG91dHB1dCwgb3V0cHV0KQogICAgIGVsc2U6Ci0gICAgICBzZWxmLmFzc2Vy
dF8oQ0FUQ0hfRVhDRVBUSU9OU19GTEFHIG5vdCBpbiBvdXRwdXQsIG91dHB1dCkKKyAgICAgIHNl
bGYuYXNzZXJ0XyhTVFJFQU1fUkVTVUxUX1RPX0ZMQUcgbm90IGluIG91dHB1dCwgb3V0cHV0KQog
CiAgICAgaWYgU1VQUE9SVFNfREVBVEhfVEVTVFMgYW5kIG5vdCBJU19XSU5ET1dTOgogICAgICAg
c2VsZi5hc3NlcnRfKERFQVRIX1RFU1RfU1RZTEVfRkxBRyBpbiBvdXRwdXQsIG91dHB1dCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0Xy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0Xy5jYwppbmRl
eCBhYWQwZDcyZDc2NzUzNWUxYjdhNzIyMjQ3NzU0MzAxMDMzZTcxMDZmLi43NTBhZTZjZTk1ZmNi
Y2IzMzhlZDVkYjJiNTg4ZjE1Y2RkNWMyZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVzdF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3RfLmNjCkBAIC0yNiwxMyArMjYsMTIgQEAKIC8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6
IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIAogLy8gVGhpcyBwcm9ncmFtIGlzIG1l
YW50IHRvIGJlIHJ1biBieSBndGVzdF9oZWxwX3Rlc3QucHkuICBEbyBub3QgcnVuCiAvLyBpdCBk
aXJlY3RseS4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKIAogLy8gV2hlbiBhIGhlbHAgZmxhZyBpcyBzcGVjaWZpZWQsIHRoaXMgcHJvZ3JhbSBz
aG91bGQgc2tpcCB0aGUgdGVzdHMKIC8vIGFuZCBleGl0IHdpdGggMDsgb3RoZXJ3aXNlIHRoZSBm
b2xsb3dpbmcgdGVzdCB3aWxsIGJlIGV4ZWN1dGVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9qc29uX3Rlc3RfdXRpbHMucHkgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2pzb25fdGVzdF91dGlscy5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmJi
ZmMyODhmODJiMzg3Y2Q4MzQ0NmMwYTA1YmExNjdiMWFhNzU0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9qc29uX3Rlc3RfdXRpbHMucHkKQEAg
LTAsMCArMSw2MCBAQAorIyBDb3B5cmlnaHQgMjAxOCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIwor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisj
IGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisj
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVzdCB1dGlsaXRpZXMg
Zm9yIGd0ZXN0X2pzb25fb3V0cHV0LiIiIgorCitpbXBvcnQgcmUKKworCitkZWYgbm9ybWFsaXpl
KG9iaik6CisgICIiIk5vcm1hbGl6ZSBvdXRwdXQgb2JqZWN0LgorCisgIEFyZ3M6CisgICAgIG9i
ajogR29vZ2xlIFRlc3QncyBKU09OIG91dHB1dCBvYmplY3QgdG8gbm9ybWFsaXplLgorCisgIFJl
dHVybnM6CisgICAgIE5vcm1hbGl6ZWQgb3V0cHV0IHdpdGhvdXQgYW55IHJlZmVyZW5jZXMgdG8g
dHJhbnNpZW50IGluZm9ybWF0aW9uIHRoYXQgbWF5CisgICAgIGNoYW5nZSBmcm9tIHJ1biB0byBy
dW4uCisgICIiIgorICBkZWYgX25vcm1hbGl6ZShrZXksIHZhbHVlKToKKyAgICBpZiBrZXkgPT0g
J3RpbWUnOgorICAgICAgcmV0dXJuIHJlLnN1YihyJ15cZCsoXC5cZCspP3MkJywgJyonLCB2YWx1
ZSkKKyAgICBlbGlmIGtleSA9PSAndGltZXN0YW1wJzoKKyAgICAgIHJldHVybiByZS5zdWIocide
XGR7NH0tXGRcZC1cZFxkVFxkXGQ6XGRcZDpcZFxkWiQnLCAnKicsIHZhbHVlKQorICAgIGVsaWYg
a2V5ID09ICdmYWlsdXJlJzoKKyAgICAgIHZhbHVlID0gcmUuc3ViKHInXi4qWy9cXF0oLio6KVxk
K1xuJywgJ1xcMSpcbicsIHZhbHVlKQorICAgICAgcmV0dXJuIHJlLnN1YihyJ1N0YWNrIHRyYWNl
OlxuKC58XG4pKicsICdTdGFjayB0cmFjZTpcbionLCB2YWx1ZSkKKyAgICBlbHNlOgorICAgICAg
cmV0dXJuIG5vcm1hbGl6ZSh2YWx1ZSkKKyAgaWYgaXNpbnN0YW5jZShvYmosIGRpY3QpOgorICAg
IHJldHVybiB7azogX25vcm1hbGl6ZShrLCB2KSBmb3IgaywgdiBpbiBvYmouaXRlbXMoKX0KKyAg
aWYgaXNpbnN0YW5jZShvYmosIGxpc3QpOgorICAgIHJldHVybiBbbm9ybWFsaXplKHgpIGZvciB4
IGluIG9ial0KKyAgZWxzZToKKyAgICByZXR1cm4gb2JqCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0LnB5IGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X291dHB1dF91bml0dGVzdC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zYmJhN2VhMmNmZDM3Y2FkNTUwOWY0MGY4ZThiMDAyMjcwNmJlNzg0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X291dHB1
dF91bml0dGVzdC5weQpAQCAtMCwwICsxLDE0MSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
CisjIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyIiIlVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0ZXN0
X2xpc3RfdGVzdHMgZmxhZy4KKworQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gbGlzdCBh
bGwgdGVzdHMgYnkgc3BlY2lmeWluZyB0aGUKKy0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLiBJZiBv
dXRwdXQgaXMgcmVxdWVzdGVkLCB2aWEgLS1ndGVzdF9vdXRwdXQ9eG1sCitvciAtLWd0ZXN0X291
dHB1dD1qc29uLCB0aGUgdGVzdHMgYXJlIGxpc3RlZCwgd2l0aCBleHRyYSBpbmZvcm1hdGlvbiBp
biB0aGUKK291dHB1dCBmaWxlLgorVGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5
IGJ5IGludm9raW5nIGd0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0XworIChhIHByb2dyYW0gd3Jp
dHRlbiB3aXRoIEdvb2dsZSBUZXN0KSB0aGUgY29tbWFuZCBsaW5lIGZsYWdzLgorIiIiCisKK2lt
cG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitHVEVTVF9MSVNU
X1RFU1RTX0ZMQUcgPSAnLS1ndGVzdF9saXN0X3Rlc3RzJworR1RFU1RfT1VUUFVUX0ZMQUcgPSAn
LS1ndGVzdF9vdXRwdXQnCisKK0VYUEVDVEVEX1hNTCA9ICIiIjxcP3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJVVEYtOCJcPz4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIyIiBuYW1lPSJBbGxUZXN0
cyI+CisgIDx0ZXN0c3VpdGUgbmFtZT0iRm9vVGVzdCIgdGVzdHM9IjIiPgorICAgIDx0ZXN0Y2Fz
ZSBuYW1lPSJUZXN0MSIgZmlsZT0iLipndGVzdF9saXN0X291dHB1dF91bml0dGVzdF8uY2MiIGxp
bmU9IjQzIiAvPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJUZXN0MiIgZmlsZT0iLipndGVzdF9saXN0
X291dHB1dF91bml0dGVzdF8uY2MiIGxpbmU9IjQ1IiAvPgorICA8L3Rlc3RzdWl0ZT4KKzwvdGVz
dHN1aXRlcz4KKyIiIgorCitFWFBFQ1RFRF9KU09OID0gIiIieworICAidGVzdHMiOiAyLAorICAi
bmFtZSI6ICJBbGxUZXN0cyIsCisgICJ0ZXN0c3VpdGVzIjogXFsKKyAgICB7CisgICAgICAibmFt
ZSI6ICJGb29UZXN0IiwKKyAgICAgICJ0ZXN0cyI6IDIsCisgICAgICAidGVzdHN1aXRlIjogXFsK
KyAgICAgICAgeworICAgICAgICAgICJuYW1lIjogIlRlc3QxIiwKKyAgICAgICAgICAiZmlsZSI6
ICIuKmd0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0Xy5jYyIsCisgICAgICAgICAgImxpbmUiOiA0
MworICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgIm5hbWUiOiAiVGVzdDIiLAorICAg
ICAgICAgICJmaWxlIjogIi4qZ3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3RfLmNjIiwKKyAgICAg
ICAgICAibGluZSI6IDQ1CisgICAgICAgIH0KKyAgICAgIFxdCisgICAgfQorICBcXQorfQorIiIi
CisKKworY2xhc3MgR1Rlc3RMaXN0VGVzdHNPdXRwdXRVbml0VGVzdChndGVzdF90ZXN0X3V0aWxz
LlRlc3RDYXNlKToKKyAgIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIGxpc3QgdGVzdHMg
d2l0aCBvdXRwdXQgdG8gZmlsZSBmdW5jdGlvbmFsaXR5LgorICAiIiIKKworICBkZWYgdGVzdFht
bChzZWxmKToKKyAgICAiIiJWZXJpZmllcyBYTUwgb3V0cHV0IGZvciBsaXN0aW5nIHRlc3RzIGlu
IGEgR29vZ2xlIFRlc3QgYmluYXJ5LgorCisgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdl
bmVyYXRlcyBhbiBlbXB0eSBYTUwgb3V0cHV0LCBhbmQKKyAgICB0ZXN0cyB0aGF0IHRoZSBYTUwg
b3V0cHV0IGlzIGV4cGVjdGVkLgorICAgICIiIgorICAgIHNlbGYuX1Rlc3RPdXRwdXQoJ3htbCcs
IEVYUEVDVEVEX1hNTCkKKworICBkZWYgdGVzdEpTT04oc2VsZik6CisgICAgIiIiVmVyaWZpZXMg
WE1MIG91dHB1dCBmb3IgbGlzdGluZyB0ZXN0cyBpbiBhIEdvb2dsZSBUZXN0IGJpbmFyeS4KKwor
ICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkgWE1MIG91dHB1
dCwgYW5kCisgICAgdGVzdHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBleHBlY3RlZC4KKyAgICAi
IiIKKyAgICBzZWxmLl9UZXN0T3V0cHV0KCdqc29uJywgRVhQRUNURURfSlNPTikKKworICBkZWYg
X0dldE91dHB1dChzZWxmLCBvdXRfZm9ybWF0KToKKyAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpv
aW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICd0ZXN0X291dC4nICsgb3V0X2Zvcm1hdCkKKyAgICBndGVzdF9wcm9nX3BhdGggPSBn
dGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKKyAgICAgICAgJ2d0ZXN0X2xp
c3Rfb3V0cHV0X3VuaXR0ZXN0XycpCisKKyAgICBjb21tYW5kID0gKFsKKyAgICAgICAgZ3Rlc3Rf
cHJvZ19wYXRoLAorICAgICAgICAnJXM9JXM6JXMnICUgKEdURVNUX09VVFBVVF9GTEFHLCBvdXRf
Zm9ybWF0LCBmaWxlX3BhdGgpLAorICAgICAgICAnLS1ndGVzdF9saXN0X3Rlc3RzJworICAgIF0p
CisgICAgZW52aXJvbl9jb3B5ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgICBwID0gZ3Rlc3RfdGVz
dF91dGlscy5TdWJwcm9jZXNzKAorICAgICAgICBjb21tYW5kLCBlbnY9ZW52aXJvbl9jb3B5LCB3
b3JraW5nX2Rpcj1ndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSkKKworICAgIHNlbGYuYXNz
ZXJ0XyhwLmV4aXRlZCkKKyAgICBzZWxmLmFzc2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkKKyAg
ICB3aXRoIG9wZW4oZmlsZV9wYXRoKSBhcyBmOgorICAgICAgcmVzdWx0ID0gZi5yZWFkKCkKKyAg
ICByZXR1cm4gcmVzdWx0CisKKyAgZGVmIF9UZXN0T3V0cHV0KHNlbGYsIHRlc3RfZm9ybWF0LCBl
eHBlY3RlZF9vdXRwdXQpOgorICAgIGFjdHVhbCA9IHNlbGYuX0dldE91dHB1dCh0ZXN0X2Zvcm1h
dCkKKyAgICBhY3R1YWxfbGluZXMgPSBhY3R1YWwuc3BsaXRsaW5lcygpCisgICAgZXhwZWN0ZWRf
bGluZXMgPSBleHBlY3RlZF9vdXRwdXQuc3BsaXRsaW5lcygpCisgICAgbGluZV9jb3VudCA9IDAK
KyAgICBmb3IgYWN0dWFsX2xpbmUgaW4gYWN0dWFsX2xpbmVzOgorICAgICAgZXhwZWN0ZWRfbGlu
ZSA9IGV4cGVjdGVkX2xpbmVzW2xpbmVfY291bnRdCisgICAgICBleHBlY3RlZF9saW5lX3JlID0g
cmUuY29tcGlsZShleHBlY3RlZF9saW5lLnN0cmlwKCkpCisgICAgICBzZWxmLmFzc2VydF8oCisg
ICAgICAgICAgZXhwZWN0ZWRfbGluZV9yZS5tYXRjaChhY3R1YWxfbGluZS5zdHJpcCgpKSwKKyAg
ICAgICAgICAoJ2FjdHVhbCBvdXRwdXQgb2YgIiVzIixcbicKKyAgICAgICAgICAgJ3doaWNoIGRv
ZXMgbm90IG1hdGNoIGV4cGVjdGVkIHJlZ2V4IG9mICIlcyJcbicKKyAgICAgICAgICAgJ29uIGxp
bmUgJWQnICUgKGFjdHVhbCwgZXhwZWN0ZWRfb3V0cHV0LCBsaW5lX2NvdW50KSkpCisgICAgICBs
aW5lX2NvdW50ID0gbGluZV9jb3VudCArIDEKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgorICBvcy5lbnZpcm9uWydHVEVTVF9TVEFDS19UUkFDRV9ERVBUSCddID0gJzEnCisgIGd0ZXN0
X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF9vdXRwdXRfdW5pdHRlc3RfLmNjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxYzdi
NGRlMzQ2MWZjMTY0NWY0MTFiNzFmOWUzN2Y4MjI0ZmQ4YTYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3Rfb3V0cHV0X3VuaXR0ZXN0Xy5j
YwpAQCAtMCwwICsxLDUxIEBACisvLyBDb3B5cmlnaHQgMjAxOCwgR29vZ2xlIEluYy4KKy8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisv
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisvLworLy8gQXV0aG9yOiBkYXZpZC5zY2h1bGRlbmZyZWlAZ21haWwuY29tIChEYXZp
ZCBTY2h1bGRlbmZyZWkpCisKKy8vIFVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0ZXN0
X2xpc3RfdGVzdHMgYW5kIC0tZ3Rlc3Rfb3V0cHV0IGZsYWcuCisvLworLy8gQSB1c2VyIGNhbiBh
c2sgR29vZ2xlIFRlc3QgdG8gbGlzdCBhbGwgdGVzdHMgdGhhdCB3aWxsIHJ1biwKKy8vIGFuZCBo
YXZlIHRoZSBvdXRwdXQgc2F2ZWQgaW4gYSBKc29uL1htbCBmaWxlLgorLy8gVGhlIHRlc3RzIHdp
bGwgbm90IGJlIHJ1biBhZnRlciBsaXN0aW5nLgorLy8KKy8vIFRoaXMgcHJvZ3JhbSB3aWxsIGJl
IGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRlc3QuCisvLyBEb24ndCBydW4gaXQgZGlyZWN0
bHkuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCitURVNUKEZvb1Rlc3QsIFRlc3QxKSB7
fQorCitURVNUKEZvb1Rlc3QsIFRlc3QyKSB7fQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
KmFyZ3YpIHsKKyAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAg
cmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdC5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggY2U4YzNlZjA1ZjY2MDBlODcyMTRhNmQ0MDE2MjhlZDkyM2ExNTJk
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3QucHkKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENv
cHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotIiIiVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdzIC0tZ3Rlc3RfbGlz
dF90ZXN0cyBmbGFnLgotCi1BIHVzZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBsaXN0IGFsbCB0
ZXN0cyBieSBzcGVjaWZ5aW5nIHRoZQotLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcuICBUaGlzIHNj
cmlwdCB0ZXN0cyBzdWNoIGZ1bmN0aW9uYWxpdHkKLWJ5IGludm9raW5nIGd0ZXN0X2xpc3RfdGVz
dHNfdW5pdHRlc3RfIChhIHByb2dyYW0gd3JpdHRlbiB3aXRoCi1Hb29nbGUgVGVzdCkgdGhlIGNv
bW1hbmQgbGluZSBmbGFncy4KLSIiIgotCi1fX2F1dGhvcl9fID0gJ3BoYW5uYUBnb29nbGUuY29t
IChQYXRyaWNrIEhhbm5hKScKLQotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLQotCi0jIENvbnN0
YW50cy4KLQotIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBs
aXN0aW5nIGFsbCB0ZXN0cy4KLUxJU1RfVEVTVFNfRkxBRyA9ICdndGVzdF9saXN0X3Rlc3RzJwot
Ci0jIFBhdGggdG8gdGhlIGd0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfIHByb2dyYW0uCi1FWEVf
UEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9saXN0
X3Rlc3RzX3VuaXR0ZXN0XycpCi0KLSMgVGhlIGV4cGVjdGVkIG91dHB1dCB3aGVuIHJ1bm5pbmcg
Z3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8gd2l0aAotIyAtLWd0ZXN0X2xpc3RfdGVzdHMKLUVY
UEVDVEVEX09VVFBVVF9OT19GSUxURVIgPSAiIiJGb29EZWF0aFRlc3QuCi0gIFRlc3QxCi1Gb28u
Ci0gIEJhcjEKLSAgQmFyMgotICBESVNBQkxFRF9CYXIzCi1BYmMuCi0gIFh5egotICBEZWYKLUZv
b0Jhci4KLSAgQmF6Ci1Gb29UZXN0LgotICBUZXN0MQotICBESVNBQkxFRF9UZXN0MgotICBUZXN0
MwotIiIiCi0KLSMgVGhlIGV4cGVjdGVkIG91dHB1dCB3aGVuIHJ1bm5pbmcgZ3Rlc3RfbGlzdF90
ZXN0c191bml0dGVzdF8gd2l0aAotIyAtLWd0ZXN0X2xpc3RfdGVzdHMgYW5kIC0tZ3Rlc3RfZmls
dGVyPUZvbyouCi1FWFBFQ1RFRF9PVVRQVVRfRklMVEVSX0ZPTyA9ICIiIkZvb0RlYXRoVGVzdC4K
LSAgVGVzdDEKLUZvby4KLSAgQmFyMQotICBCYXIyCi0gIERJU0FCTEVEX0JhcjMKLUZvb0Jhci4K
LSAgQmF6Ci1Gb29UZXN0LgotICBUZXN0MQotICBESVNBQkxFRF9UZXN0MgotICBUZXN0MwotIiIi
Ci0KLSMgVXRpbGl0aWVzLgotCi0KLWRlZiBSdW4oYXJncyk6Ci0gICIiIlJ1bnMgZ3Rlc3RfbGlz
dF90ZXN0c191bml0dGVzdF8gYW5kIHJldHVybnMgdGhlIGxpc3Qgb2YgdGVzdHMgcHJpbnRlZC4i
IiIKLQotICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtFWEVfUEFUSF0gKyBh
cmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVfc3RkZXJy
PUZhbHNlKS5vdXRwdXQKLQotCi0jIFRoZSB1bml0IHRlc3QuCi0KLWNsYXNzIEdUZXN0TGlzdFRl
c3RzVW5pdFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gICIiIlRlc3RzIHVzaW5n
IHRoZSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZyB0byBsaXN0IGFsbCB0ZXN0cy4iIiIKLQotICBk
ZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGZsYWdfdmFsdWUsIGV4cGVjdGVkX291dHB1dCwgb3RoZXJf
ZmxhZyk6Ci0gICAgIiIiUnVucyBndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0XyBhbmQgdmVyaWZp
ZXMgdGhhdCBpdCBwcmludHMKLSAgICB0aGUgY29ycmVjdCB0ZXN0cy4KLQotICAgIEFyZ3M6Ci0g
ICAgICBmbGFnX3ZhbHVlOiAgICAgICB2YWx1ZSBvZiB0aGUgLS1ndGVzdF9saXN0X3Rlc3RzIGZs
YWc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBub3Qg
YmUgcHJlc2VudC4KLQotICAgICAgZXhwZWN0ZWRfb3V0cHV0OiAgdGhlIGV4cGVjdGVkIG91dHB1
dCBhZnRlciBydW5uaW5nIGNvbW1hbmQ7Ci0KLSAgICAgIG90aGVyX2ZsYWc6ICAgICAgIGEgZGlm
ZmVyZW50IGZsYWcgdG8gYmUgcGFzc2VkIHRvIGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGFsb25nIHdpdGggZ3Rlc3RfbGlzdF90ZXN0czsKLSAgICAgICAgICAgICAgICAgICAgICAg
IE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgotICAgICIiIgotCi0gICAg
aWYgZmxhZ192YWx1ZSBpcyBOb25lOgotICAgICAgZmxhZyA9ICcnCi0gICAgICBmbGFnX2V4cHJl
c3Npb24gPSAnbm90IHNldCcKLSAgICBlbGlmIGZsYWdfdmFsdWUgPT0gJzAnOgotICAgICAgZmxh
ZyA9ICctLSVzPTAnICUgTElTVF9URVNUU19GTEFHCi0gICAgICBmbGFnX2V4cHJlc3Npb24gPSAn
MCcKLSAgICBlbHNlOgotICAgICAgZmxhZyA9ICctLSVzJyAlIExJU1RfVEVTVFNfRkxBRwotICAg
ICAgZmxhZ19leHByZXNzaW9uID0gJzEnCi0KLSAgICBhcmdzID0gW2ZsYWddCi0KLSAgICBpZiBv
dGhlcl9mbGFnIGlzIG5vdCBOb25lOgotICAgICAgYXJncyArPSBbb3RoZXJfZmxhZ10KLQotICAg
IG91dHB1dCA9IFJ1bihhcmdzKQotCi0gICAgbXNnID0gKCd3aGVuICVzIGlzICVzLCB0aGUgb3V0
cHV0IG9mICIlcyIgaXMgIiVzIi4nICUKLSAgICAgICAgICAgKExJU1RfVEVTVFNfRkxBRywgZmxh
Z19leHByZXNzaW9uLCAnICcuam9pbihhcmdzKSwgb3V0cHV0KSkKLQotICAgIGlmIGV4cGVjdGVk
X291dHB1dCBpcyBub3QgTm9uZToKLSAgICAgIHNlbGYuYXNzZXJ0XyhvdXRwdXQgPT0gZXhwZWN0
ZWRfb3V0cHV0LCBtc2cpCi0gICAgZWxzZToKLSAgICAgIHNlbGYuYXNzZXJ0XyhvdXRwdXQgIT0g
RVhQRUNURURfT1VUUFVUX05PX0ZJTFRFUiwgbXNnKQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJlaGF2
aW9yKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBtb2Rl
LiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZmxhZ192YWx1ZT1Ob25lLAotICAgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAg
IG90aGVyX2ZsYWc9Tm9uZSkKLQotICBkZWYgdGVzdEZsYWcoc2VsZik6Ci0gICAgIiIiVGVzdHMg
dXNpbmcgdGhlIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLiIiIgotCi0gICAgc2VsZi5SdW5BbmRW
ZXJpZnkoZmxhZ192YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0
cHV0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz1Ob25lKQotICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGV4
cGVjdGVkX291dHB1dD1FWFBFQ1RFRF9PVVRQVVRfTk9fRklMVEVSLAotICAgICAgICAgICAgICAg
ICAgICAgIG90aGVyX2ZsYWc9Tm9uZSkKLQotICBkZWYgdGVzdE92ZXJyaWRlTm9uRmlsdGVyRmxh
Z3Moc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCAtLWd0ZXN0X2xpc3RfdGVzdHMgb3ZlcnJpZGVz
IHRoZSBub24tZmlsdGVyIGZsYWdzLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZmxhZ192
YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0PUVYUEVDVEVE
X09VVFBVVF9OT19GSUxURVIsCi0gICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz0nLS1n
dGVzdF9icmVha19vbl9mYWlsdXJlJykKLQotICBkZWYgdGVzdFdpdGhGaWx0ZXJGbGFncyhzZWxm
KToKLSAgICAiIiJUZXN0cyB0aGF0IC0tZ3Rlc3RfbGlzdF90ZXN0cyB0YWtlcyBpbnRvIGFjY291
bnQgdGhlCi0gICAgLS1ndGVzdF9maWx0ZXIgZmxhZy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVy
aWZ5KGZsYWdfdmFsdWU9JzEnLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1
dD1FWFBFQ1RFRF9PVVRQVVRfRklMVEVSX0ZPTywKLSAgICAgICAgICAgICAgICAgICAgICBvdGhl
cl9mbGFnPSctLWd0ZXN0X2ZpbHRlcj1Gb28qJykKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgotICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8uY2MKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwZWQwODI1YjVkODg5NjkyMzAxYzVhNGQ0ZjBlYjc1
YmFiYzViYzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5j
YworKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA2LCBHb29n
bGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHBoYW5uYUBnb29nbGUuY29tIChQ
YXRyaWNrIEhhbm5hKQotCi0vLyBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgLS1ndGVzdF9s
aXN0X3Rlc3RzIGZsYWcuCi0vLwotLy8gQSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gbGlz
dCBhbGwgdGVzdHMgdGhhdCB3aWxsIHJ1bgotLy8gc28gdGhhdCB3aGVuIHVzaW5nIGEgZmlsdGVy
LCBhIHVzZXIgd2lsbCBrbm93IHdoYXQKLS8vIHRlc3RzIHRvIGxvb2sgZm9yLiBUaGUgdGVzdHMg
d2lsbCBub3QgYmUgcnVuIGFmdGVyIGxpc3RpbmcuCi0vLwotLy8gVGhpcyBwcm9ncmFtIHdpbGwg
YmUgaW52b2tlZCBmcm9tIGEgUHl0aG9uIHVuaXQgdGVzdC4KLS8vIERvbid0IHJ1biBpdCBkaXJl
Y3RseS4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIFNl
dmVyYWwgZGlmZmVyZW50IHRlc3QgY2FzZXMgYW5kIHRlc3RzIHRoYXQgd2lsbCBiZSBsaXN0ZWQu
Ci1URVNUKEZvbywgQmFyMSkgewotfQotCi1URVNUKEZvbywgQmFyMikgewotfQotCi1URVNUKEZv
bywgRElTQUJMRURfQmFyMykgewotfQotCi1URVNUKEFiYywgWHl6KSB7Ci19Ci0KLVRFU1QoQWJj
LCBEZWYpIHsKLX0KLQotVEVTVChGb29CYXIsIEJheikgewotfQotCi1jbGFzcyBGb29UZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7Ci19
Ci0KLVRFU1RfRihGb29UZXN0LCBESVNBQkxFRF9UZXN0MikgewotfQotCi1URVNUX0YoRm9vVGVz
dCwgVGVzdDMpIHsKLX0KLQotVEVTVChGb29EZWF0aFRlc3QsIFRlc3QxKSB7Ci19Ci0KLX0gIC8v
IG5hbWVzcGFjZQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgOjp0ZXN0
aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgcmV0dXJuIFJVTl9BTExfVEVT
VFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
bWFpbl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbWFp
bl91bml0dGVzdC5jYwppbmRleCA3YTNmMGFkZmFkZjZkN2U1YzE5NWIzMTk0NDcxNGQ1YWM0MWJi
OGUzLi5lZGRlZGVhYmU4ZjNiYjA4M2RhYmNhNjAwZTcyZjQ1MWI4ZDk0Y2RiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X21haW5fdW5pdHRlc3QuY2MKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9tYWluX3VuaXR0ZXN0LmNjCkBA
IC0yNiwxMCArMjYsOSBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKIAot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiAv
LyBUZXN0cyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gZGVmaW5lIG1haW4oKSB3aGVuIHdlIGxpbmsg
dG8KIC8vIGd0ZXN0X21haW4gaW5zdGVhZCBvZiBndGVzdC4KQEAgLTQxLDUgKzQwLDUgQEAgVEVT
VChHVGVzdE1haW5UZXN0LCBTaG91bGRTdWNjZWVkKSB7CiAKIH0gIC8vIG5hbWVzcGFjZQogCi0v
LyBXZSBhcmUgdXNpbmcgdGhlIG1haW4oKSBmdW5jdGlvbiBkZWZpbmVkIGluIHNyYy9ndGVzdF9t
YWluLmNjLCBzbwotLy8gd2UgZG9uJ3QgZGVmaW5lIGl0IGhlcmUuCisvLyBXZSBhcmUgdXNpbmcg
dGhlIG1haW4oKSBmdW5jdGlvbiBkZWZpbmVkIGluIGd0ZXN0X21haW4uY2MsIHNvIHdlCisvLyBk
b24ndCBkZWZpbmUgaXQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfbmMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X25j
LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2I1ZGI2ZDQxODMwOWE0N2EyM2Rm
ZjE4MDA1M2I3NWQzMjAxMjRmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfbmMuY2MKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMzQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMu
Ci0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0v
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdh
bikKLQotLy8gVGhpcyBmaWxlIGlzIHRoZSBpbnB1dCB0byBhIG5lZ2F0aXZlLWNvbXBpbGF0aW9u
IHRlc3QgZm9yIEdvb2dsZQotLy8gVGVzdC4gIENvZGUgaGVyZSBpcyBOT1Qgc3VwcG9zZWQgdG8g
Y29tcGlsZS4gIEl0cyBwdXJwb3NlIGlzIHRvCi0vLyB2ZXJpZnkgdGhhdCBjZXJ0YWluIGluY29y
cmVjdCB1c2FnZXMgb2YgdGhlIEdvb2dsZSBUZXN0IEFQSSBhcmUKLS8vIGluZGVlZCByZWplY3Rl
ZCBieSB0aGUgY29tcGlsZXIuCi0vLwotLy8gV2Ugc3RpbGwgbmVlZCB0byB3cml0ZSB0aGUgbmVn
YXRpdmUtY29tcGlsYXRpb24gdGVzdCBpdHNlbGYsIHdoaWNoCi0vLyB3aWxsIGJlIHRpZ2h0bHkg
Y291cGxlZCB3aXRoIHRoZSBidWlsZCBlbnZpcm9ubWVudC4KLS8vCi0vLyBUT0RPKHdhbkBnb29n
bGUuY29tKTogZmluaXNoIHRoZSBuZWdhdGl2ZS1jb21waWxhdGlvbiB0ZXN0LgotCi0jaWZkZWYg
VEVTVF9DQU5OT1RfSUdOT1JFX1JVTl9BTExfVEVTVFNfUkVTVUxUCi0vLyBUZXN0cyB0aGF0IHRo
ZSByZXN1bHQgb2YgUlVOX0FMTF9URVNUUygpIGNhbm5vdCBiZSBpZ25vcmVkLgotCi0jaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0g
IHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLSAgUlVOX0FMTF9URVNUUygp
OyAgLy8gVGhpcyBsaW5lIHNob3VsZG4ndCBjb21waWxlLgotfQotCi0jZWxpZiBkZWZpbmVkKFRF
U1RfVVNFUl9DQU5OT1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9JTkxfSCkKLS8vIFRlc3RzIHRo
YXQgYSB1c2VyIGNhbm5vdCBpbmNsdWRlIGd0ZXN0LWludGVybmFsLWlubC5oIGluIGhpcyBjb2Rl
LgotCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotCi0jZWxpZiBkZWZpbmVk
KFRFU1RfQ0FUQ0hFU19ERUNMQVJJTkdfU0VUVVBfSU5fVEVTVF9GSVhUVVJFX1dJVEhfVFlQTykK
LS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgdGhlIHR5cG8gd2hlbiBhIHVzZXIg
ZGVjbGFyZXMgYQotLy8gU2V0dXAoKSBtZXRob2QgaW4gYSB0ZXN0IGZpeHR1cmUuCi0KLSNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgotCi1jbGFzcyBNeVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7Ci0gcHJvdGVjdGVkOgotICB2b2lkIFNldHVwKCkge30KLX07Ci0KLSNlbGlmIGRlZmluZWQo
VEVTVF9DQVRDSEVTX0NBTExJTkdfU0VUVVBfSU5fVEVTVF9XSVRIX1RZUE8pCi0vLyBUZXN0cyB0
aGF0IHRoZSBjb21waWxlciBjYXRjaGVzIHRoZSB0eXBvIHdoZW4gYSB1c2VyIGNhbGxzIFNldHVw
KCkKLS8vIGZyb20gYSB0ZXN0IGZpeHR1cmUuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgot
Ci1jbGFzcyBNeVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgdGVzdGluZzo6VGVzdDo6U2V0dXAoKTsgIC8vIFRy
aWVzIHRvIGNhbGwgU2V0VXAoKSBpbiB0aGUgcGFyZW50IGNsYXNzLgotICB9Ci19OwotCi0jZWxp
ZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19ERUNMQVJJTkdfU0VUVVBfSU5fRU5WSVJPTk1FTlRfV0lU
SF9UWVBPKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0Y2hlcyB0aGUgdHlwbyB3aGVu
IGEgdXNlciBkZWNsYXJlcyBhCi0vLyBTZXR1cCgpIG1ldGhvZCBpbiBhIHN1YmNsYXNzIG9mIEVu
dmlyb25tZW50LgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotY2xhc3MgTXlFbnZpcm9u
bWVudCA6IHB1YmxpYyB0ZXN0aW5nOjpFbnZpcm9ubWVudCB7Ci0gcHVibGljOgotICB2b2lkIFNl
dHVwKCkge30KLX07Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9DQVRDSEVTX0NBTExJTkdfU0VUVVBf
SU5fRU5WSVJPTk1FTlRfV0lUSF9UWVBPKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0
Y2hlcyB0aGUgdHlwbyB3aGVuIGEgdXNlciBjYWxscyBTZXR1cCgpCi0vLyBpbiBhbiBFbnZpcm9u
bWVudC4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLWNsYXNzIE15RW52aXJvbm1lbnQg
OiBwdWJsaWMgdGVzdGluZzo6RW52aXJvbm1lbnQgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2
b2lkIFNldFVwKCkgewotICAgIC8vIFRyaWVzIHRvIGNhbGwgU2V0VXAoKSBpbiB0aGUgcGFyZW50
IGNsYXNzLgotICAgIHRlc3Rpbmc6OkVudmlyb25tZW50OjpTZXR1cCgpOwotICB9Ci19OwotCi0j
ZWxpZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19XUk9OR19DQVNFX0lOX1RZUEVEX1RFU1RfUCkKLS8v
IFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgdXNpbmcgdGhlIHdyb25nIHRlc3QgY2Fz
ZSBuYW1lIGluCi0vLyBUWVBFRF9URVNUX1AuCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEJhclRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0KTsKLVRZ
UEVEX1RFU1RfUChCYXJUZXN0LCBBKSB7fSAgLy8gV3JvbmcgdGVzdCBjYXNlIG5hbWUuCi1SRUdJ
U1RFUl9UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0LCBBKTsKLUlOU1RBTlRJQVRFX1RZUEVEX1RF
U1RfQ0FTRV9QKE15LCBGb29UZXN0LCB0ZXN0aW5nOjpUeXBlczxpbnQ+KTsKLQotI2VsaWYgZGVm
aW5lZChURVNUX0NBVENIRVNfV1JPTkdfQ0FTRV9JTl9SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0Vf
UCkKLS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgdXNpbmcgdGhlIHdyb25nIHRl
c3QgY2FzZSBuYW1lIGluCi0vLyBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUC4KLQotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgRm9vVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
Y2xhc3MgQmFyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1Rf
Q0FTRV9QKEZvb1Rlc3QpOwotVFlQRURfVEVTVF9QKEZvb1Rlc3QsIEEpIHt9Ci1SRUdJU1RFUl9U
WVBFRF9URVNUX0NBU0VfUChCYXJUZXN0LCBBKTsgIC8vIFdyb25nIHRlc3QgY2FzZSBuYW1lLgot
SU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIHRlc3Rpbmc6OlR5cGVz
PGludD4pOwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfQ0FUQ0hFU19XUk9OR19DQVNFX0lOX0lOU1RB
TlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKQotLy8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgY2F0
Y2hlcyB1c2luZyB0aGUgd3JvbmcgdGVzdCBjYXNlIG5hbWUgaW4KLS8vIElOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBCYXJUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgewotfTsKLQotVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7Ci1UWVBFRF9URVNUX1Ao
Rm9vVGVzdCwgQSkge30KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsIEEpOwot
Ci0vLyBXcm9uZyB0ZXN0IGNhc2UgbmFtZS4KLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9Q
KE15LCBCYXJUZXN0LCB0ZXN0aW5nOjpUeXBlczxpbnQ+KTsKLQotI2VsaWYgZGVmaW5lZChURVNU
X0NBVENIRVNfSU5TVEFOVElBVEVfVFlQRURfVEVTRVRfQ0FTRV9QX1dJVEhfU0FNRV9OQU1FX1BS
RUZJWCkKLS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIGNhdGNoZXMgaW5zdGFudGlhdGluZyBU
WVBFRF9URVNUX0NBU0VfUAotLy8gdHdpY2Ugd2l0aCB0aGUgc2FtZSBuYW1lIHByZWZpeC4KLQot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3Mg
Rm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRV9Q
KEZvb1Rlc3QpOwotVFlQRURfVEVTVF9QKEZvb1Rlc3QsIEEpIHt9Ci1SRUdJU1RFUl9UWVBFRF9U
RVNUX0NBU0VfUChGb29UZXN0LCBBKTsKLQotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1Ao
TXksIEZvb1Rlc3QsIHRlc3Rpbmc6OlR5cGVzPGludD4pOwotCi0vLyBXcm9uZyBuYW1lIHByZWZp
eDogIk15IiBoYXMgYmVlbiB1c2VkLgotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXks
IEZvb1Rlc3QsIHRlc3Rpbmc6OlR5cGVzPGRvdWJsZT4pOwotCi0jZWxpZiBkZWZpbmVkKFRFU1Rf
U1RBVElDX0FTU0VSVF9UWVBFX0VRX0lTX05PVF9BX1RZUEUpCi0KLSNpbmNsdWRlIDxndGVzdC9n
dGVzdC5oPgotCi0vLyBUZXN0cyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+IGNhbm5v
dCBiZSB1c2VkIGFzIGEgdHlwZS4KLXRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIGlu
dD4gZHVtbXk7Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9TVEFUSUNfQVNTRVJUX1RZUEVfRVFfV09S
S1NfSU5fTkFNRVNQQUNFKQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotLy8gVGVzdHMg
dGhhdCBTdGF0aWNBc3NlcnRUeXBlRXE8VDEsIFQyPiB3b3JrcyBpbiBhIG5hbWVzcGFjZSBzY29w
ZS4KLXN0YXRpYyBib29sIGR1bW15ID0gdGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGludCwg
Y29uc3QgaW50PigpOwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfU1RBVElDX0FTU0VSVF9UWVBFX0VR
X1dPUktTX0lOX0NMQVNTKQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBIZWxwZXIgewotIHB1YmxpYzoKLSAgLy8gVGVzdHMgdGhhdCBT
dGF0aWNBc3NlcnRUeXBlRXE8VDEsIFQyPiB3b3JrcyBpbiBhIGNsYXNzLgotICBIZWxwZXIoKSB7
IHRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIFQ+KCk7IH0KLQotICB2b2lkIERvU29t
ZXRoaW5nKCkge30KLX07Ci0KLXZvaWQgVGVzdCgpIHsKLSAgSGVscGVyPGJvb2w+IGg7Ci0gIGgu
RG9Tb21ldGhpbmcoKTsgIC8vIFRvIGF2b2lkIHRoZSAidW51c2VkIHZhcmlhYmxlIiB3YXJuaW5n
LgotfQotCi0jZWxpZiBkZWZpbmVkKFRFU1RfU1RBVElDX0FTU0VSVF9UWVBFX0VRX1dPUktTX0lO
X0ZVTkNUSU9OKQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotdm9pZCBUZXN0KCkgewot
ICAvLyBUZXN0cyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+IHdvcmtzIGluc2lkZSBh
IGZ1bmN0aW9uLgotICB0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgaW50LCBpbnQ+
KCk7Ci19Ci0KLSNlbHNlCi0vLyBBIHNhbml0eSB0ZXN0LiAgVGhpcyBzaG91bGQgY29tcGlsZS4K
LQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLWludCBtYWluKCkgewotICByZXR1cm4gUlVO
X0FMTF9URVNUUygpOwotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfbmNfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rl
c3QvZ3Rlc3RfbmNfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDZmZmIz
ZjgwMzhmMGE1Nzk2ZTRiNmQ2MjlkMDJlODA1NjVhMjQzOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X25jX3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotIyBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0j
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiTmVnYXRpdmUgY29tcGlsYXRp
b24gdGVzdCBmb3IgR29vZ2xlIFRlc3QuIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0
ZXN0Ci0KLQotSVNfTElOVVggPSBvcy5uYW1lID09ICdwb3NpeCcgYW5kIG9zLnVuYW1lKClbMF0g
PT0gJ0xpbnV4JwotaWYgbm90IElTX0xJTlVYOgotICBzeXMuZXhpdCgwKSAgIyBOZWdhdGl2ZSBj
b21waWxhdGlvbiB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzICYgTWFjLgotCi0K
LWNsYXNzIEdUZXN0TkNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgIiIiTmVnYXRpdmUgY29t
cGlsYXRpb24gdGVzdCBmb3IgR29vZ2xlIFRlc3QuIiIiCi0KLSAgZGVmIHRlc3RDb21waWxlckVy
cm9yKHNlbGYpOgotICAgICIiIlZlcmlmaWVzIHRoYXQgZXJyb25lb3VzIGNvZGUgbGVhZHMgdG8g
ZXhwZWN0ZWQgY29tcGlsZXIKLSAgICBtZXNzYWdlcy4iIiIKLQotICAgICMgRGVmaW5lcyBhIGxp
c3Qgb2YgdGVzdCBzcGVjcywgd2hlcmUgZWFjaCBlbGVtZW50IGlzIGEgdHVwbGUKLSAgICAjICh0
ZXN0IG5hbWUsIGxpc3Qgb2YgcmVnZXhlcyBmb3IgbWF0Y2hpbmcgdGhlIGNvbXBpbGVyIGVycm9y
cykuCi0gICAgdGVzdF9zcGVjcyA9IFsKLSAgICAgICgnQ0FOTk9UX0lHTk9SRV9SVU5fQUxMX1RF
U1RTX1JFU1VMVCcsCi0gICAgICAgW3InaWdub3JpbmcgcmV0dXJuIHZhbHVlJ10pLAotCi0gICAg
ICAoJ1VTRVJfQ0FOTk9UX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfSU5MX0gnLAotICAgICAgIFty
J211c3Qgbm90IGJlIGluY2x1ZGVkIGV4Y2VwdCBieSBHb29nbGUgVGVzdCBpdHNlbGYnXSksCi0K
LSAgICAgICgnQ0FUQ0hFU19ERUNMQVJJTkdfU0VUVVBfSU5fVEVTVF9GSVhUVVJFX1dJVEhfVFlQ
TycsCi0gICAgICAgW3InU2V0dXBfc2hvdWxkX2JlX3NwZWxsZWRfU2V0VXAnXSksCi0KLSAgICAg
ICgnQ0FUQ0hFU19DQUxMSU5HX1NFVFVQX0lOX1RFU1RfV0lUSF9UWVBPJywKLSAgICAgICBbcidT
ZXR1cF9zaG91bGRfYmVfc3BlbGxlZF9TZXRVcCddKSwKLQotICAgICAgKCdDQVRDSEVTX0RFQ0xB
UklOR19TRVRVUF9JTl9FTlZJUk9OTUVOVF9XSVRIX1RZUE8nLAotICAgICAgIFtyJ1NldHVwX3No
b3VsZF9iZV9zcGVsbGVkX1NldFVwJ10pLAotCi0gICAgICAoJ0NBVENIRVNfQ0FMTElOR19TRVRV
UF9JTl9FTlZJUk9OTUVOVF9XSVRIX1RZUE8nLAotICAgICAgIFtyJ1NldHVwX3Nob3VsZF9iZV9z
cGVsbGVkX1NldFVwJ10pLAotCi0gICAgICAoJ0NBVENIRVNfV1JPTkdfQ0FTRV9JTl9UWVBFRF9U
RVNUX1AnLAotICAgICAgIFtyJ0JhclRlc3QuKndhcyBub3QgZGVjbGFyZWQnXSksCi0KLSAgICAg
ICgnQ0FUQ0hFU19XUk9OR19DQVNFX0lOX1JFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QJywKLSAg
ICAgICBbcidCYXJUZXN0Lip3YXMgbm90IGRlY2xhcmVkJ10pLAotCi0gICAgICAoJ0NBVENIRVNf
V1JPTkdfQ0FTRV9JTl9JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUCcsCi0gICAgICAgW3In
QmFyVGVzdC4qbm90IGRlY2xhcmVkJ10pLAotCi0gICAgICAoJ0NBVENIRVNfSU5TVEFOVElBVEVf
VFlQRURfVEVTRVRfQ0FTRV9QX1dJVEhfU0FNRV9OQU1FX1BSRUZJWCcsCi0gICAgICAgW3IncmVk
ZWZpbml0aW9uIG9mLipNeS4qRm9vVGVzdCddKSwKLQotICAgICAgKCdTVEFUSUNfQVNTRVJUX1RZ
UEVfRVFfSVNfTk9UX0FfVFlQRScsCi0gICAgICAgW3InU3RhdGljQXNzZXJ0VHlwZUVxLiogZG9l
cyBub3QgbmFtZSBhIHR5cGUnXSksCi0KLSAgICAgICgnU1RBVElDX0FTU0VSVF9UWVBFX0VRX1dP
UktTX0lOX05BTUVTUEFDRScsCi0gICAgICAgW3InU3RhdGljQXNzZXJ0VHlwZUVxLippbnQuKmNv
bnN0IGludCddKSwKLQotICAgICAgKCdTVEFUSUNfQVNTRVJUX1RZUEVfRVFfV09SS1NfSU5fQ0xB
U1MnLAotICAgICAgIFtyJ1N0YXRpY0Fzc2VydFR5cGVFcS4qaW50Lipib29sJ10pLAotCi0gICAg
ICAoJ1NUQVRJQ19BU1NFUlRfVFlQRV9FUV9XT1JLU19JTl9GVU5DVElPTicsCi0gICAgICAgW3In
U3RhdGljQXNzZXJ0VHlwZUVxLipjb25zdCBpbnQuKmludCddKSwKLQotICAgICAgKCdTQU5JVFkn
LAotICAgICAgIE5vbmUpCi0gICAgICBdCi0KLSAgICAjIFRPRE8od2FuQGdvb2dsZS5jb20pOiB2
ZXJpZnkgdGhhdCB0aGUgdGVzdCBzcGVjcyBhcmUgc2F0aXNmaWVkLgotCi0KLWlmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6Ci0gIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9ub190ZXN0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9ub190ZXN0X3VuaXR0ZXN0LmNjCmluZGV4IGFmZTJk
YzBjOTJmZTQzYWU5MzViMjJjZWYzMTc3ZTUxODRiN2ZmYTEuLmQ0Zjg4ZGJmZGZhNjhlNmEwYzQw
YmI5OWZhYzZlNGRiY2NmZjhmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QuY2MKQEAgLTI5LDI2ICsyOSwyNiBAQAog
CiAvLyBUZXN0cyB0aGF0IGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSB0aGF0IGhhcyBubyB0ZXN0IGRl
ZmluZWQgY2FuIHJ1bgogLy8gc3VjY2Vzc2Z1bGx5LgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbikKLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKKyNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsK
ICAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwogCiAgIC8vIEFuIGFkLWhv
YyBhc3NlcnRpb24gb3V0c2lkZSBvZiBhbGwgdGVzdHMuCiAgIC8vCi0gIC8vIFRoaXMgc2VydmVz
IHR3byBwdXJwb3NlczoKKyAgLy8gVGhpcyBzZXJ2ZXMgdGhyZWUgcHVycG9zZXM6CiAgIC8vCiAg
IC8vIDEuIEl0IHZlcmlmaWVzIHRoYXQgYW4gYWQtaG9jIGFzc2VydGlvbiBjYW4gYmUgZXhlY3V0
ZWQgZXZlbiBpZgogICAvLyAgICBubyB0ZXN0IGlzIGRlZmluZWQuCi0gIC8vIDIuIFdlIGhhZCBh
IGJ1ZyB3aGVyZSB0aGUgWE1MIG91dHB1dCB3b24ndCBiZSBnZW5lcmF0ZWQgaWYgYW4KKyAgLy8g
Mi4gSXQgdmVyaWZpZXMgdGhhdCBhIGZhaWxlZCBhZC1ob2MgYXNzZXJ0aW9uIGNhdXNlcyB0aGUg
dGVzdAorICAvLyAgICBwcm9ncmFtIHRvIGZhaWwuCisgIC8vIDMuIFdlIGhhZCBhIGJ1ZyB3aGVy
ZSB0aGUgWE1MIG91dHB1dCB3b24ndCBiZSBnZW5lcmF0ZWQgaWYgYW4KICAgLy8gICAgYXNzZXJ0
aW9uIGlzIGV4ZWN1dGVkIGJlZm9yZSBSVU5fQUxMX1RFU1RTKCkgaXMgY2FsbGVkLCBldmVuCiAg
IC8vICAgIHRob3VnaCAtLWd0ZXN0X291dHB1dD14bWwgaXMgc3BlY2lmaWVkLiAgVGhpcyBtYWtl
cyBzdXJlIHRoZQogICAvLyAgICBidWcgaXMgZml4ZWQgYW5kIGRvZXNuJ3QgcmVncmVzcy4KLSAg
RVhQRUNUX0VRKDEsIDEpOworICBFWFBFQ1RfRVEoMSwgMik7CiAKLSAgcmV0dXJuIFJVTl9BTExf
VEVTVFMoKTsKKyAgLy8gVGhlIGFib3ZlIEVYUEVDVF9FUSgpIHNob3VsZCBjYXVzZSBSVU5fQUxM
X1RFU1RTKCkgdG8gcmV0dXJuIG5vbi16ZXJvLgorICByZXR1cm4gUlVOX0FMTF9URVNUUygpID8g
MCA6IDE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X291dHB1dF90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRw
dXRfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMTkyMDMwYTIwMjBiZmQ0
MWU5NGM0ZTQ5MTRjYWJhMzhkYjc0ZjJmYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1
dF90ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzI3ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52
IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRp
c3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlRlc3RzIHRoZSB0ZXh0IG91dHB1dCBv
ZiBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrLgotCi1TWU5PUFNJUwotICAgICAgIGd0ZXN0
X291dHB1dF90ZXN0LnB5IC0tZ3Rlc3RfYnVpbGRfZGlyPUJVSUxEL0RJUiAtLWdlbmdvbGRlbgot
ICAgICAgICAgIyB3aGVyZSBCVUlMRC9ESVIgY29udGFpbnMgdGhlIGJ1aWx0IGd0ZXN0X291dHB1
dF90ZXN0XyBmaWxlLgotICAgICAgIGd0ZXN0X291dHB1dF90ZXN0LnB5IC0tZ2VuZ29sZGVuCi0g
ICAgICAgZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkKLSIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHN5
cwotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLQotCi0jIFRoZSBmbGFnIGZvciBnZW5lcmF0aW5n
IHRoZSBnb2xkZW4gZmlsZQotR0VOR09MREVOX0ZMQUcgPSAnLS1nZW5nb2xkZW4nCi1DQVRDSF9F
WENFUFRJT05TX0VOVl9WQVJfTkFNRSA9ICdHVEVTVF9DQVRDSF9FWENFUFRJT05TJwotCi1JU19X
SU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCi0KLWlmIElTX1dJTkRPV1M6Ci0gIEdPTERFTl9OQU1F
ID0gJ2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl93aW4udHh0JwotZWxzZToKLSAgR09MREVOX05B
TUUgPSAnZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQnCi0KLVBST0dSQU1fUEFUSCA9
IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9vdXRwdXRfdGVz
dF8nKQotCi0jIEF0IGxlYXN0IG9uZSBjb21tYW5kIHdlIGV4ZXJjaXNlIG11c3Qgbm90IGhhdmUg
dGhlCi0jIC0tZ3Rlc3RfaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3Rz
IGZsYWcuCi1DT01NQU5EX0xJU1RfVEVTVFMgPSAoe30sIFtQUk9HUkFNX1BBVEgsICctLWd0ZXN0
X2xpc3RfdGVzdHMnXSkKLUNPTU1BTkRfV0lUSF9DT0xPUiA9ICh7fSwgW1BST0dSQU1fUEFUSCwg
Jy0tZ3Rlc3RfY29sb3I9eWVzJ10pCi1DT01NQU5EX1dJVEhfVElNRSA9ICh7fSwgW1BST0dSQU1f
UEFUSCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZ3Rlc3RfcHJpbnRfdGltZScsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICctLWd0ZXN0X2ludGVybmFsX3NraXBfZW52aXJvbm1l
bnRfYW5kX2FkX2hvY190ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICctLWd0ZXN0
X2ZpbHRlcj1GYXRhbEZhaWx1cmVUZXN0Lio6TG9nZ2luZ1Rlc3QuKiddKQotQ09NTUFORF9XSVRI
X0RJU0FCTEVEID0gKAotICAgIHt9LCBbUFJPR1JBTV9QQVRILAotICAgICAgICAgJy0tZ3Rlc3Rf
YWxzb19ydW5fZGlzYWJsZWRfdGVzdHMnLAotICAgICAgICAgJy0tZ3Rlc3RfaW50ZXJuYWxfc2tp
cF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzJywKLSAgICAgICAgICctLWd0ZXN0X2ZpbHRl
cj0qRElTQUJMRURfKiddKQotQ09NTUFORF9XSVRIX1NIQVJESU5HID0gKAotICAgIHsnR1RFU1Rf
U0hBUkRfSU5ERVgnOiAnMScsICdHVEVTVF9UT1RBTF9TSEFSRFMnOiAnMid9LAotICAgIFtQUk9H
UkFNX1BBVEgsCi0gICAgICctLWd0ZXN0X2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2Fk
X2hvY190ZXN0cycsCi0gICAgICctLWd0ZXN0X2ZpbHRlcj1QYXNzaW5nVGVzdC4qJ10pCi0KLUdP
TERFTl9QQVRIID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNlRGlyKCks
IEdPTERFTl9OQU1FKQotCi0KLWRlZiBUb1VuaXhMaW5lRW5kaW5nKHMpOgotICAiIiJDaGFuZ2Vz
IGFsbCBXaW5kb3dzL01hYyBsaW5lIGVuZGluZ3MgaW4gcyB0byBVTklYIGxpbmUgZW5kaW5ncy4i
IiIKLQotICByZXR1cm4gcy5yZXBsYWNlKCdcclxuJywgJ1xuJykucmVwbGFjZSgnXHInLCAnXG4n
KQotCi0KLWRlZiBSZW1vdmVMb2NhdGlvbnModGVzdF9vdXRwdXQpOgotICAiIiJSZW1vdmVzIGFs
bCBmaWxlIGxvY2F0aW9uIGluZm8gZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQu
Ci0KLSAgQXJnczoKLSAgICAgICB0ZXN0X291dHB1dDogIHRoZSBvdXRwdXQgb2YgYSBHb29nbGUg
VGVzdCBwcm9ncmFtLgotCi0gIFJldHVybnM6Ci0gICAgICAgb3V0cHV0IHdpdGggYWxsIGZpbGUg
bG9jYXRpb24gaW5mbyAoaW4gdGhlIGZvcm0gb2YKLSAgICAgICAnRElSRUNUT1JZL0ZJTEVfTkFN
RTpMSU5FX05VTUJFUjogJ29yCi0gICAgICAgJ0RJUkVDVE9SWVxcRklMRV9OQU1FKExJTkVfTlVN
QkVSKTogJykgcmVwbGFjZWQgYnkKLSAgICAgICAnRklMRV9OQU1FOiM6ICcuCi0gICIiIgotCi0g
IHJldHVybiByZS5zdWIocicuKlsvXFxdKC4rKShcOlxkK3xcKFxkK1wpKVw6ICcsIHInXDE6Izog
JywgdGVzdF9vdXRwdXQpCi0KLQotZGVmIFJlbW92ZVN0YWNrVHJhY2VEZXRhaWxzKG91dHB1dCk6
Ci0gICIiIlJlbW92ZXMgYWxsIHN0YWNrIHRyYWNlcyBmcm9tIGEgR29vZ2xlIFRlc3QgcHJvZ3Jh
bSdzIG91dHB1dC4iIiIKLQotICAjICo/IG1lYW5zICJmaW5kIHRoZSBzaG9ydGVzdCBzdHJpbmcg
dGhhdCBtYXRjaGVzIi4KLSAgcmV0dXJuIHJlLnN1YihyJ1N0YWNrIHRyYWNlOigufFxuKSo/XG5c
bicsCi0gICAgICAgICAgICAgICAgJ1N0YWNrIHRyYWNlOiAob21pdHRlZClcblxuJywgb3V0cHV0
KQotCi0KLWRlZiBSZW1vdmVTdGFja1RyYWNlcyhvdXRwdXQpOgotICAiIiJSZW1vdmVzIGFsbCB0
cmFjZXMgb2Ygc3RhY2sgdHJhY2VzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0
LiIiIgotCi0gICMgKj8gbWVhbnMgImZpbmQgdGhlIHNob3J0ZXN0IHN0cmluZyB0aGF0IG1hdGNo
ZXMiLgotICByZXR1cm4gcmUuc3ViKHInU3RhY2sgdHJhY2U6KC58XG4pKj9cblxuJywgJycsIG91
dHB1dCkKLQotCi1kZWYgUmVtb3ZlVGltZShvdXRwdXQpOgotICAiIiJSZW1vdmVzIGFsbCB0aW1l
IGluZm9ybWF0aW9uIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgotCi0g
IHJldHVybiByZS5zdWIocidcKFxkKyBtcycsICcoPyBtcycsIG91dHB1dCkKLQotCi1kZWYgUmVt
b3ZlVHlwZUluZm9EZXRhaWxzKHRlc3Rfb3V0cHV0KToKLSAgIiIiUmVtb3ZlcyBjb21waWxlci1z
cGVjaWZpYyB0eXBlIGluZm8gZnJvbSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LgotCi0g
IEFyZ3M6Ci0gICAgICAgdGVzdF9vdXRwdXQ6ICB0aGUgb3V0cHV0IG9mIGEgR29vZ2xlIFRlc3Qg
cHJvZ3JhbS4KLQotICBSZXR1cm5zOgotICAgICAgIG91dHB1dCB3aXRoIHR5cGUgaW5mb3JtYXRp
b24gbm9ybWFsaXplZCB0byBjYW5vbmljYWwgZm9ybS4KLSAgIiIiCi0KLSAgIyBzb21lIGNvbXBp
bGVycyBvdXRwdXQgdGhlIG5hbWUgb2YgdHlwZSAndW5zaWduZWQgaW50JyBhcyAndW5zaWduZWQn
Ci0gIHJldHVybiByZS5zdWIocid1bnNpZ25lZCBpbnQnLCAndW5zaWduZWQnLCB0ZXN0X291dHB1
dCkKLQotCi1kZWYgUmVtb3ZlVGVzdENvdW50cyhvdXRwdXQpOgotICAiIiJSZW1vdmVzIHRlc3Qg
Y291bnRzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgotCi0gIG91dHB1
dCA9IHJlLnN1YihyJ1xkKyB0ZXN0cz8sIGxpc3RlZCBiZWxvdycsCi0gICAgICAgICAgICAgICAg
ICAnPyB0ZXN0cywgbGlzdGVkIGJlbG93Jywgb3V0cHV0KQotICBvdXRwdXQgPSByZS5zdWIocidc
ZCsgRkFJTEVEIFRFU1RTJywKLSAgICAgICAgICAgICAgICAgICc/IEZBSUxFRCBURVNUUycsIG91
dHB1dCkKLSAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIHRlc3RzPyBmcm9tIFxkKyB0ZXN0IGNhc2Vz
PycsCi0gICAgICAgICAgICAgICAgICAnPyB0ZXN0cyBmcm9tID8gdGVzdCBjYXNlcycsIG91dHB1
dCkKLSAgb3V0cHV0ID0gcmUuc3ViKHInXGQrIHRlc3RzPyBmcm9tIChbYS16QS1aX10pJywKLSAg
ICAgICAgICAgICAgICAgIHInPyB0ZXN0cyBmcm9tIFwxJywgb3V0cHV0KQotICByZXR1cm4gcmUu
c3ViKHInXGQrIHRlc3RzP1wuJywgJz8gdGVzdHMuJywgb3V0cHV0KQotCi0KLWRlZiBSZW1vdmVN
YXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCBwYXR0ZXJuKToKLSAgIiIiUmVtb3ZlcyBvdXRwdXQg
b2Ygc3BlY2lmaWVkIHRlc3RzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0Lgot
Ci0gIFRoaXMgZnVuY3Rpb24gc3RyaXBzIG5vdCBvbmx5IHRoZSBiZWdpbm5pbmcgYW5kIHRoZSBl
bmQgb2YgYSB0ZXN0IGJ1dCBhbHNvCi0gIGFsbCBvdXRwdXQgaW4gYmV0d2Vlbi4KLQotICBBcmdz
OgotICAgIHRlc3Rfb3V0cHV0OiAgICAgICBBIHN0cmluZyBjb250YWluaW5nIHRoZSB0ZXN0IG91
dHB1dC4KLSAgICBwYXR0ZXJuOiAgICAgICAgICAgQSByZWdleCBzdHJpbmcgdGhhdCBtYXRjaGVz
IG5hbWVzIG9mIHRlc3QgY2FzZXMgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMgdG8g
cmVtb3ZlLgotCi0gIFJldHVybnM6Ci0gICAgQ29udGVudHMgb2YgdGVzdF9vdXRwdXQgd2l0aCB0
ZXN0cyB3aG9zZSBuYW1lcyBtYXRjaCBwYXR0ZXJuIHJlbW92ZWQuCi0gICIiIgotCi0gIHRlc3Rf
b3V0cHV0ID0gcmUuc3ViKAotICAgICAgcicuKlxbIFJVTiAgICAgIFxdIC4qJXMoLnxcbikqP1xb
KCAgRkFJTEVEICB8ICAgICAgIE9LIClcXSAuKiVzLipcbicgJSAoCi0gICAgICAgICAgcGF0dGVy
biwgcGF0dGVybiksCi0gICAgICAnJywKLSAgICAgIHRlc3Rfb3V0cHV0KQotICByZXR1cm4gcmUu
c3ViKHInLiolcy4qXG4nICUgcGF0dGVybiwgJycsIHRlc3Rfb3V0cHV0KQotCi0KLWRlZiBOb3Jt
YWxpemVPdXRwdXQob3V0cHV0KToKLSAgIiIiTm9ybWFsaXplcyBvdXRwdXQgKHRoZSBvdXRwdXQg
b2YgZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmV4ZSkuIiIiCi0KLSAgb3V0cHV0ID0gVG9Vbml4TGluZUVu
ZGluZyhvdXRwdXQpCi0gIG91dHB1dCA9IFJlbW92ZUxvY2F0aW9ucyhvdXRwdXQpCi0gIG91dHB1
dCA9IFJlbW92ZVN0YWNrVHJhY2VEZXRhaWxzKG91dHB1dCkKLSAgb3V0cHV0ID0gUmVtb3ZlVGlt
ZShvdXRwdXQpCi0gIHJldHVybiBvdXRwdXQKLQotCi1kZWYgR2V0U2hlbGxDb21tYW5kT3V0cHV0
KGVudl9jbWQpOgotICAiIiJSdW5zIGEgY29tbWFuZCBpbiBhIHN1Yi1wcm9jZXNzLCBhbmQgcmV0
dXJucyBpdHMgb3V0cHV0IGluIGEgc3RyaW5nLgotCi0gIEFyZ3M6Ci0gICAgZW52X2NtZDogVGhl
IHNoZWxsIGNvbW1hbmQuIEEgMi10dXBsZSB3aGVyZSBlbGVtZW50IDAgaXMgYSBkaWN0IG9mIGV4
dHJhCi0gICAgICAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCwgYW5kIGVsZW1l
bnQgMSBpcyBhIHN0cmluZyB3aXRoCi0gICAgICAgICAgICAgdGhlIGNvbW1hbmQgYW5kIGFueSBm
bGFncy4KLQotICBSZXR1cm5zOgotICAgIEEgc3RyaW5nIHdpdGggdGhlIGNvbW1hbmQncyBjb21i
aW5lZCBzdGFuZGFyZCBhbmQgZGlhZ25vc3RpYyBvdXRwdXQuCi0gICIiIgotCi0gICMgU3Bhd25z
IGNtZCBpbiBhIHN1Yi1wcm9jZXNzLCBhbmQgZ2V0cyBpdHMgc3RhbmRhcmQgSS9PIGZpbGUgb2Jq
ZWN0cy4KLSAgIyBTZXQgYW5kIHNhdmUgdGhlIGVudmlyb25tZW50IHByb3Blcmx5LgotICBlbnZp
cm9uID0gb3MuZW52aXJvbi5jb3B5KCkKLSAgZW52aXJvbi51cGRhdGUoZW52X2NtZFswXSkKLSAg
cCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhlbnZfY21kWzFdLCBlbnY9ZW52aXJvbikK
LQotICByZXR1cm4gcC5vdXRwdXQKLQotCi1kZWYgR2V0Q29tbWFuZE91dHB1dChlbnZfY21kKToK
LSAgIiIiUnVucyBhIGNvbW1hbmQgYW5kIHJldHVybnMgaXRzIG91dHB1dCB3aXRoIGFsbCBmaWxl
IGxvY2F0aW9uCi0gIGluZm8gc3RyaXBwZWQgb2ZmLgotCi0gIEFyZ3M6Ci0gICAgZW52X2NtZDog
IFRoZSBzaGVsbCBjb21tYW5kLiBBIDItdHVwbGUgd2hlcmUgZWxlbWVudCAwIGlzIGEgZGljdCBv
ZiBleHRyYQotICAgICAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0LCBhbmQg
ZWxlbWVudCAxIGlzIGEgc3RyaW5nIHdpdGgKLSAgICAgICAgICAgICAgdGhlIGNvbW1hbmQgYW5k
IGFueSBmbGFncy4KLSAgIiIiCi0KLSAgIyBEaXNhYmxlcyBleGNlcHRpb24gcG9wLXVwcyBvbiBX
aW5kb3dzLgotICBlbnZpcm9uLCBjbWRsaW5lID0gZW52X2NtZAotICBlbnZpcm9uID0gZGljdChl
bnZpcm9uKSAgIyBFbnN1cmVzIHdlIGFyZSBtb2RpZnlpbmcgYSBjb3B5LgotICBlbnZpcm9uW0NB
VENIX0VYQ0VQVElPTlNfRU5WX1ZBUl9OQU1FXSA9ICcxJwotICByZXR1cm4gTm9ybWFsaXplT3V0
cHV0KEdldFNoZWxsQ29tbWFuZE91dHB1dCgoZW52aXJvbiwgY21kbGluZSkpKQotCi0KLWRlZiBH
ZXRPdXRwdXRPZkFsbENvbW1hbmRzKCk6Ci0gICIiIlJldHVybnMgY29uY2F0ZW5hdGVkIG91dHB1
dCBmcm9tIHNldmVyYWwgcmVwcmVzZW50YXRpdmUgY29tbWFuZHMuIiIiCi0KLSAgcmV0dXJuIChH
ZXRDb21tYW5kT3V0cHV0KENPTU1BTkRfV0lUSF9DT0xPUikgKwotICAgICAgICAgIEdldENvbW1h
bmRPdXRwdXQoQ09NTUFORF9XSVRIX1RJTUUpICsKLSAgICAgICAgICBHZXRDb21tYW5kT3V0cHV0
KENPTU1BTkRfV0lUSF9ESVNBQkxFRCkgKwotICAgICAgICAgIEdldENvbW1hbmRPdXRwdXQoQ09N
TUFORF9XSVRIX1NIQVJESU5HKSkKLQotCi10ZXN0X2xpc3QgPSBHZXRTaGVsbENvbW1hbmRPdXRw
dXQoQ09NTUFORF9MSVNUX1RFU1RTKQotU1VQUE9SVFNfREVBVEhfVEVTVFMgPSAnRGVhdGhUZXN0
JyBpbiB0ZXN0X2xpc3QKLVNVUFBPUlRTX1RZUEVEX1RFU1RTID0gJ1R5cGVkVGVzdCcgaW4gdGVz
dF9saXN0Ci1TVVBQT1JUU19USFJFQURTID0gJ0V4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3Qn
IGluIHRlc3RfbGlzdAotU1VQUE9SVFNfU1RBQ0tfVFJBQ0VTID0gRmFsc2UKLQotQ0FOX0dFTkVS
QVRFX0dPTERFTl9GSUxFID0gKFNVUFBPUlRTX0RFQVRIX1RFU1RTIGFuZAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNVUFBPUlRTX1RZUEVEX1RFU1RTIGFuZAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNVUFBPUlRTX1RIUkVBRFMpCi0KLQotY2xhc3MgR1Rlc3RPdXRwdXRUZXN0
KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgotICBkZWYgUmVtb3ZlVW5zdXBwb3J0ZWRUZXN0
cyhzZWxmLCB0ZXN0X291dHB1dCk6Ci0gICAgaWYgbm90IFNVUFBPUlRTX0RFQVRIX1RFU1RTOgot
ICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCAnRGVh
dGhUZXN0JykKLSAgICBpZiBub3QgU1VQUE9SVFNfVFlQRURfVEVTVFM6Ci0gICAgICB0ZXN0X291
dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsICdUeXBlZFRlc3QnKQotICAg
ICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCAnVHlwZWRE
ZWF0aFRlc3QnKQotICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rf
b3V0cHV0LCAnVHlwZVBhcmFtRGVhdGhUZXN0JykKLSAgICBpZiBub3QgU1VQUE9SVFNfVEhSRUFE
UzoKLSAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRXhwZWN0RmFpbHVyZVdp
dGhUaHJlYWRzVGVzdCcpCi0gICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHMo
dGVzdF9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Nj
b3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdCcpCi0gICAgICB0ZXN0X291dHB1dCA9
IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ1dvcmtzQ29uY3VycmVudGx5JykKLSAgICBpZiBub3QgU1VQUE9S
VFNfU1RBQ0tfVFJBQ0VTOgotICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVTdGFja1RyYWNlcyh0
ZXN0X291dHB1dCkKLQotICAgIHJldHVybiB0ZXN0X291dHB1dAotCi0gIGRlZiB0ZXN0T3V0cHV0
KHNlbGYpOgotICAgIG91dHB1dCA9IEdldE91dHB1dE9mQWxsQ29tbWFuZHMoKQotCi0gICAgZ29s
ZGVuX2ZpbGUgPSBvcGVuKEdPTERFTl9QQVRILCAncmInKQotICAgICMgQSBtaXMtY29uZmlndXJl
ZCBzb3VyY2UgY29udHJvbCBzeXN0ZW0gY2FuIGNhdXNlIFxyIGFwcGVhciBpbiBFT0wKLSAgICAj
IHNlcXVlbmNlcyB3aGVuIHdlIHJlYWQgdGhlIGdvbGRlbiBmaWxlIGlycmVzcGVjdGl2ZSBvZiBh
biBvcGVyYXRpbmcKLSAgICAjIHN5c3RlbSB1c2VkLiBUaGVyZWZvcmUsIHdlIG5lZWQgdG8gc3Ry
aXAgdGhvc2UgXHIncyBmcm9tIG5ld2xpbmVzCi0gICAgIyB1bmNvbmRpdGlvbmFsbHkuCi0gICAg
Z29sZGVuID0gVG9Vbml4TGluZUVuZGluZyhnb2xkZW5fZmlsZS5yZWFkKCkpCi0gICAgZ29sZGVu
X2ZpbGUuY2xvc2UoKQotCi0gICAgIyBXZSB3YW50IHRoZSB0ZXN0IHRvIHBhc3MgcmVnYXJkbGVz
cyBvZiBjZXJ0YWluIGZlYXR1cmVzIGJlaW5nCi0gICAgIyBzdXBwb3J0ZWQgb3Igbm90LgotCi0g
ICAgIyBXZSBzdGlsbCBoYXZlIHRvIHJlbW92ZSB0eXBlIG5hbWUgc3BlY2lmaWNzIGluIGFsbCBj
YXNlcy4KLSAgICBub3JtYWxpemVkX2FjdHVhbCA9IFJlbW92ZVR5cGVJbmZvRGV0YWlscyhvdXRw
dXQpCi0gICAgbm9ybWFsaXplZF9nb2xkZW4gPSBSZW1vdmVUeXBlSW5mb0RldGFpbHMoZ29sZGVu
KQotCi0gICAgaWYgQ0FOX0dFTkVSQVRFX0dPTERFTl9GSUxFOgotICAgICAgc2VsZi5hc3NlcnRF
cXVhbChub3JtYWxpemVkX2dvbGRlbiwgbm9ybWFsaXplZF9hY3R1YWwpCi0gICAgZWxzZToKLSAg
ICAgIG5vcm1hbGl6ZWRfYWN0dWFsID0gUmVtb3ZlVGVzdENvdW50cyhub3JtYWxpemVkX2FjdHVh
bCkKLSAgICAgIG5vcm1hbGl6ZWRfZ29sZGVuID0gUmVtb3ZlVGVzdENvdW50cyhzZWxmLlJlbW92
ZVVuc3VwcG9ydGVkVGVzdHMoCi0gICAgICAgICAgbm9ybWFsaXplZF9nb2xkZW4pKQotCi0gICAg
ICAjIFRoaXMgY29kZSBpcyB2ZXJ5IGhhbmR5IHdoZW4gZGVidWdnaW5nIGdvbGRlbiBmaWxlIGRp
ZmZlcmVuY2VzOgotICAgICAgaWYgb3MuZ2V0ZW52KCdERUJVR19HVEVTVF9PVVRQVVRfVEVTVCcp
OgotICAgICAgICBvcGVuKG9zLnBhdGguam9pbigKLSAgICAgICAgICAgIGd0ZXN0X3Rlc3RfdXRp
bHMuR2V0U291cmNlRGlyKCksCi0gICAgICAgICAgICAnX2d0ZXN0X291dHB1dF90ZXN0X25vcm1h
bGl6ZWRfYWN0dWFsLnR4dCcpLCAnd2InKS53cml0ZSgKLSAgICAgICAgICAgICAgICBub3JtYWxp
emVkX2FjdHVhbCkKLSAgICAgICAgb3Blbihvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICBndGVz
dF90ZXN0X3V0aWxzLkdldFNvdXJjZURpcigpLAotICAgICAgICAgICAgJ19ndGVzdF9vdXRwdXRf
dGVzdF9ub3JtYWxpemVkX2dvbGRlbi50eHQnKSwgJ3diJykud3JpdGUoCi0gICAgICAgICAgICAg
ICAgbm9ybWFsaXplZF9nb2xkZW4pCi0KLSAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWFsaXpl
ZF9nb2xkZW4sIG5vcm1hbGl6ZWRfYWN0dWFsKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5f
Xyc6Ci0gIGlmIHN5cy5hcmd2WzE6XSA9PSBbR0VOR09MREVOX0ZMQUddOgotICAgIGlmIENBTl9H
RU5FUkFURV9HT0xERU5fRklMRToKLSAgICAgIG91dHB1dCA9IEdldE91dHB1dE9mQWxsQ29tbWFu
ZHMoKQotICAgICAgZ29sZGVuX2ZpbGUgPSBvcGVuKEdPTERFTl9QQVRILCAnd2InKQotICAgICAg
Z29sZGVuX2ZpbGUud3JpdGUob3V0cHV0KQotICAgICAgZ29sZGVuX2ZpbGUuY2xvc2UoKQotICAg
IGVsc2U6Ci0gICAgICBtZXNzYWdlID0gKAotICAgICAgICAgICIiIlVuYWJsZSB0byB3cml0ZSBh
IGdvbGRlbiBmaWxlIHdoZW4gY29tcGlsZWQgaW4gYW4gZW52aXJvbm1lbnQKLXRoYXQgZG9lcyBu
b3Qgc3VwcG9ydCBhbGwgdGhlIHJlcXVpcmVkIGZlYXR1cmVzIChkZWF0aCB0ZXN0cyIiIikKLSAg
ICAgIGlmIElTX1dJTkRPV1M6Ci0gICAgICAgIG1lc3NhZ2UgKz0gKAotICAgICAgICAgICAgIiIi
XG5hbmQgdHlwZWQgdGVzdHMpLiBQbGVhc2UgY2hlY2sgdGhhdCB5b3UgYXJlIHVzaW5nIFZDKysg
OC4wIFNQMQotb3IgaGlnaGVyIGFzIHlvdXIgY29tcGlsZXIuIiIiKQotICAgICAgZWxzZToKLSAg
ICAgICAgbWVzc2FnZSArPSAiIiJcbnR5cGVkIHRlc3RzLCBhbmQgdGhyZWFkcykuICBQbGVhc2Ug
Z2VuZXJhdGUgdGhlCi1nb2xkZW4gZmlsZSB1c2luZyBhIGJpbmFyeSBidWlsdCB3aXRoIHRob3Nl
IGZlYXR1cmVzIGVuYWJsZWQuIiIiCi0KLSAgICAgIHN5cy5zdGRlcnIud3JpdGUobWVzc2FnZSkK
LSAgICAgIHN5cy5leGl0KDEpCi0gIGVsc2U6Ci0gICAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF8u
Y2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3M2U4ZTkzZWIwNTlmNWRiNjkzN2M4
YzdkNzc3NjZmODc4MDUyNzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF8u
Y2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMTM1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1LCBH
b29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
Ly8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBIHVuaXQgdGVzdCBmb3IgR29vZ2xlIFRl
c3QgaXRzZWxmLiAgVGhpcyB2ZXJpZmllcyB0aGF0IHRoZSBiYXNpYwotLy8gY29uc3RydWN0cyBv
ZiBHb29nbGUgVGVzdCB3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0LXNwaS5oPgotI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+Ci0KLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBw
YXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJl
Zm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwg
YmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2Vy
IGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8g
aGlzIGNvZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAic3Jj
L2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi0j
aW5jbHVkZSA8c3RkbGliLmg+Ci0KLSNpZiBHVEVTVF9JU19USFJFQURTQUZFCi11c2luZyB0ZXN0
aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjsKLXVzaW5nIHRlc3Rpbmc6OlRl
c3RQYXJ0UmVzdWx0QXJyYXk7Ci0KLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpOb3RpZmljYXRp
b247Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VGhyZWFkV2l0aFBhcmFtOwotI2VuZGlmCi0K
LW5hbWVzcGFjZSBwb3NpeCA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OwotdXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OlN0cmluZzsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpzY29wZWRf
cHRyOwotCi0vLyBUZXN0cyBjYXRjaGluZyBmYXRhbCBmYWlsdXJlcy4KLQotLy8gQSBzdWJyb3V0
aW5lIHVzZWQgYnkgdGhlIGZvbGxvd2luZyB0ZXN0Lgotdm9pZCBUZXN0RXExKGludCB4KSB7Ci0g
IEFTU0VSVF9FUSgxLCB4KTsKLX0KLQotLy8gVGhpcyBmdW5jdGlvbiBjYWxscyBhIHRlc3Qgc3Vi
cm91dGluZSwgY2F0Y2hlcyB0aGUgZmF0YWwgZmFpbHVyZSBpdAotLy8gZ2VuZXJhdGVzLCBhbmQg
dGhlbiByZXR1cm5zIGVhcmx5Lgotdm9pZCBUcnlUZXN0U3Vicm91dGluZSgpIHsKLSAgLy8gQ2Fs
bHMgYSBzdWJyb3VudGluZSB0aGF0IHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUuCi0gIFRlc3RFcTEo
Mik7Ci0KLSAgLy8gQ2F0Y2hlcyB0aGUgZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSB0ZXN0
LgotICAvLwotICAvLyBUaGUgdGVzdGluZzo6VGVzdDo6IHByZWZpeCBpcyBuZWNlc3Nhcnkgd2hl
biBjYWxsaW5nCi0gIC8vIEhhc0ZhdGFsRmFpbHVyZSgpIG91dHNpZGUgb2YgYSBURVNULCBURVNU
X0YsIG9yIHRlc3QgZml4dHVyZS4KLSAgaWYgKHRlc3Rpbmc6OlRlc3Q6Okhhc0ZhdGFsRmFpbHVy
ZSgpKSByZXR1cm47Ci0KLSAgLy8gSWYgd2UgZ2V0IGhlcmUsIHNvbWV0aGluZyBpcyB3cm9uZy4K
LSAgRkFJTCgpIDw8ICJUaGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkLiI7Ci19Ci0KLVRFU1Qo
UGFzc2luZ1Rlc3QsIFBhc3NpbmdUZXN0MSkgewotfQotCi1URVNUKFBhc3NpbmdUZXN0LCBQYXNz
aW5nVGVzdDIpIHsKLX0KLQotLy8gVGVzdHMgY2F0Y2hpbmcgYSBmYXRhbCBmYWlsdXJlIGluIGEg
c3Vicm91dGluZS4KLVRFU1QoRmF0YWxGYWlsdXJlVGVzdCwgRmF0YWxGYWlsdXJlSW5TdWJyb3V0
aW5lKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAx
KVxuIik7Ci0KLSAgVHJ5VGVzdFN1YnJvdXRpbmUoKTsKLX0KLQotLy8gVGVzdHMgY2F0Y2hpbmcg
YSBmYXRhbCBmYWlsdXJlIGluIGEgbmVzdGVkIHN1YnJvdXRpbmUuCi1URVNUKEZhdGFsRmFpbHVy
ZVRlc3QsIEZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZSkgewotICBwcmludGYoIihleHBl
Y3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSlcbiIpOwotCi0gIC8vIENhbGxzIGEg
c3Vicm91bnRpbmUgdGhhdCB5aWVsZHMgYSBmYXRhbCBmYWlsdXJlLgotICBUcnlUZXN0U3Vicm91
dGluZSgpOwotCi0gIC8vIENhdGNoZXMgdGhlIGZhdGFsIGZhaWx1cmUgYW5kIGFib3J0cyB0aGUg
dGVzdC4KLSAgLy8KLSAgLy8gV2hlbiBjYWxsaW5nIEhhc0ZhdGFsRmFpbHVyZSgpIGluc2lkZSBh
IFRFU1QsIFRFU1RfRiwgb3IgdGVzdAotICAvLyBmaXh0dXJlLCB0aGUgdGVzdGluZzo6VGVzdDo6
IHByZWZpeCBpcyBub3QgbmVlZGVkLgotICBpZiAoSGFzRmF0YWxGYWlsdXJlKCkpIHJldHVybjsK
LQotICAvLyBJZiB3ZSBnZXQgaGVyZSwgc29tZXRoaW5nIGlzIHdyb25nLgotICBGQUlMKCkgPDwg
IlRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQuIjsKLX0KLQotLy8gVGVzdHMgSGFzRmF0YWxG
YWlsdXJlKCkgYWZ0ZXIgYSBmYWlsZWQgRVhQRUNUIGNoZWNrLgotVEVTVChGYXRhbEZhaWx1cmVU
ZXN0LCBOb25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5n
IGEgZmFpbHVyZSBvbiBmYWxzZSlcbiIpOwotICBFWFBFQ1RfVFJVRShmYWxzZSk7ICAvLyBHZW5l
cmF0ZXMgYSBub25mYXRhbCBmYWlsdXJlCi0gIEFTU0VSVF9GQUxTRShIYXNGYXRhbEZhaWx1cmUo
KSk7ICAvLyBUaGlzIHNob3VsZCBzdWNjZWVkLgotfQotCi0vLyBUZXN0cyBpbnRlcmxlYXZpbmcg
dXNlciBsb2dnaW5nIGFuZCBHb29nbGUgVGVzdCBhc3NlcnRpb25zLgotVEVTVChMb2dnaW5nVGVz
dCwgSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMpIHsKLSAgc3RhdGljIGNvbnN0IGlu
dCBhWzRdID0gewotICAgIDMsIDksIDIsIDYKLSAgfTsKLQotICBwcmludGYoIihleHBlY3Rpbmcg
MiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKVxuIik7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwg
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoYSkvc2l6ZW9mKCphKSk7IGkrKykgewotICAgIHByaW50
ZigiaSA9PSAlZFxuIiwgaSk7Ci0gICAgRVhQRUNUX0dFKDMsIGFbaV0pOwotICB9Ci19Ci0KLS8v
IFRlc3RzIHRoZSBTQ09QRURfVFJBQ0UgbWFjcm8uCi0KLS8vIEEgaGVscGVyIGZ1bmN0aW9uIGZv
ciB0ZXN0aW5nIFNDT1BFRF9UUkFDRS4KLXZvaWQgU3ViV2l0aG91dFRyYWNlKGludCBuKSB7Ci0g
IEVYUEVDVF9FUSgxLCBuKTsKLSAgQVNTRVJUX0VRKDIsIG4pOwotfQotCi0vLyBBbm90aGVyIGhl
bHBlciBmdW5jdGlvbiBmb3IgdGVzdGluZyBTQ09QRURfVFJBQ0UuCi12b2lkIFN1YldpdGhUcmFj
ZShpbnQgbikgewotICBTQ09QRURfVFJBQ0UodGVzdGluZzo6TWVzc2FnZSgpIDw8ICJuID0gIiA8
PCBuKTsKLQotICBTdWJXaXRob3V0VHJhY2Uobik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgU0NPUEVE
X1RSQUNFKCkgb2JleXMgbGV4aWNhbCBzY29wZXMuCi1URVNUKFNDT1BFRF9UUkFDRVRlc3QsIE9i
ZXlzU2NvcGVzKSB7Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKLQotICAvLyBU
aGVyZSBzaG91bGQgYmUgbm8gdHJhY2UgYmVmb3JlIFNDT1BFRF9UUkFDRSgpIGlzIGludm9rZWQu
Ci0gIEFERF9GQUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3Vs
ZG4ndCBoYXZlIGEgdHJhY2UuIjsKLQotICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJFeHBlY3RlZCB0
cmFjZSIpOwotICAgIC8vIEFmdGVyIFNDT1BFRF9UUkFDRSgpLCBhIGZhaWx1cmUgaW4gdGhlIGN1
cnJlbnQgc2NvcGUgc2hvdWxkIGNvbnRhaW4KLSAgICAvLyB0aGUgdHJhY2UuCi0gICAgQUREX0ZB
SUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGhhdmUgYSB0
cmFjZS4iOwotICB9Ci0KLSAgLy8gT25jZSB0aGUgY29udHJvbCBsZWF2ZXMgdGhlIHNjb3BlIG9m
IHRoZSBTQ09QRURfVFJBQ0UoKSwgdGhlcmUKLSAgLy8gc2hvdWxkIGJlIG5vIHRyYWNlIGFnYWlu
LgotICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91
bGRuJ3QgaGF2ZSBhIHRyYWNlLiI7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFIHdv
cmtzIGluc2lkZSBhIGxvb3AuCi1URVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtzSW5Mb29wKSB7
Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKLQotICBmb3IgKGludCBpID0gMTsg
aSA8PSAyOyBpKyspIHsKLSAgICBTQ09QRURfVFJBQ0UodGVzdGluZzo6TWVzc2FnZSgpIDw8ICJp
ID0gIiA8PCBpKTsKLQotICAgIFN1YldpdGhvdXRUcmFjZShpKTsKLSAgfQotfQotCi0vLyBUZXN0
cyB0aGF0IFNDT1BFRF9UUkFDRSB3b3JrcyBpbiBhIHN1YnJvdXRpbmUuCi1URVNUKFNDT1BFRF9U
UkFDRVRlc3QsIFdvcmtzSW5TdWJyb3V0aW5lKSB7Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZh
aWwpXG4iKTsKLQotICBTdWJXaXRoVHJhY2UoMSk7Ci0gIFN1YldpdGhUcmFjZSgyKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0UgY2FuIGJlIG5lc3RlZC4KLVRFU1QoU0NPUEVEX1RS
QUNFVGVzdCwgQ2FuQmVOZXN0ZWQpIHsKLSAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIp
OwotCi0gIFNDT1BFRF9UUkFDRSgiIik7ICAvLyBBIHRyYWNlIHdpdGhvdXQgYSBtZXNzYWdlLgot
Ci0gIFN1YldpdGhUcmFjZSgyKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBtdWx0aXBsZSBTQ09QRURf
VFJBQ0VzIGNhbiBiZSB1c2VkIGluIHRoZSBzYW1lIHNjb3BlLgotVEVTVChTQ09QRURfVFJBQ0VU
ZXN0LCBDYW5CZVJlcGVhdGVkKSB7Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsK
LQotICBTQ09QRURfVFJBQ0UoIkEiKTsKLSAgQUREX0ZBSUxVUkUoKQotICAgICAgPDwgIlRoaXMg
ZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEuIjsK
LQotICBTQ09QRURfVFJBQ0UoIkIiKTsKLSAgQUREX0ZBSUxVUkUoKQotICAgICAgPDwgIlRoaXMg
ZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEgYW5k
IEIuIjsKLQotICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJDIik7Ci0gICAgQUREX0ZBSUxVUkUoKSA8
PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gIgotICAgICAg
ICAgICAgICAgICAgPDwgInRyYWNlIHBvaW50IEEsIEIsIGFuZCBDLiI7Ci0gIH0KLQotICBTQ09Q
RURfVFJBQ0UoIkQiKTsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVj
dGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gIgotICAgICAgICAgICAgICAgIDw8ICJ0cmFjZSBwb2lu
dCBBLCBCLCBhbmQgRC4iOwotfQotCi0jaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQotLy8gVGVzdHMg
dGhhdCBTQ09QRURfVFJBQ0UoKXMgY2FuIGJlIHVzZWQgY29uY3VycmVudGx5IGZyb20gbXVsdGlw
bGUKLS8vIHRocmVhZHMuICBOYW1lbHksIGFuIGFzc2VydGlvbiBzaG91bGQgYmUgYWZmZWN0ZWQg
YnkKLS8vIFNDT1BFRF9UUkFDRSgpcyBpbiBpdHMgb3duIHRocmVhZCBvbmx5LgotCi0vLyBIZXJl
J3MgdGhlIHNlcXVlbmNlIG9mIGFjdGlvbnMgdGhhdCBoYXBwZW4gaW4gdGhlIHRlc3Q6Ci0vLwot
Ly8gICBUaHJlYWQgQSAobWFpbikgICAgICAgICAgICAgICAgfCBUaHJlYWQgQiAoc3Bhd25lZCkK
LS8vICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PXw9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLy8gICBzcGF3bnMgdGhyZWFkIEIgICAgICAgICAgICAgICAgfAotLy8g
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyAgIHdhaXRzIGZvciBuMSAgICAgICAgICAgICAgICAgICB8IFNDT1BFRF9U
UkFDRSgiVHJhY2UgQiIpOwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBn
ZW5lcmF0ZXMgZmFpbHVyZSAjMQotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCBub3RpZmllcyBuMQotLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgIFNDT1BFRF9UUkFDRSgiVHJhY2UgQSIp
OyAgICAgICB8IHdhaXRzIGZvciBuMgotLy8gICBnZW5lcmF0ZXMgZmFpbHVyZSAjMiAgICAgICAg
ICAgfAotLy8gICBub3RpZmllcyBuMiAgICAgICAgICAgICAgICAgICAgfAotLy8gICAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyAgIHdhaXRzIGZvciBuMyAgICAgICAgICAgICAgICAgICB8IGdlbmVyYXRlcyBmYWlsdXJl
ICMzCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRyYWNlIEIgZGllcwot
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnZW5lcmF0ZXMgZmFpbHVyZSAj
NAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBub3RpZmllcyBuMwotLy8g
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyAgIGdlbmVyYXRlcyBmYWlsdXJlICM1ICAgICAgICAgICB8IGZpbmlzaGVz
Ci0vLyAgIHRyYWNlIEEgZGllcyAgICAgICAgICAgICAgICAgICB8Ci0vLyAgIGdlbmVyYXRlcyBm
YWlsdXJlICM2ICAgICAgICAgICB8Ci0vLyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vICAgd2FpdHMgZm9yIHRocmVh
ZCBCIHRvIGZpbmlzaCAgIHwKLQotc3RydWN0IENoZWNrUG9pbnRzIHsKLSAgTm90aWZpY2F0aW9u
IG4xOwotICBOb3RpZmljYXRpb24gbjI7Ci0gIE5vdGlmaWNhdGlvbiBuMzsKLX07Ci0KLXN0YXRp
YyB2b2lkIFRocmVhZFdpdGhTY29wZWRUcmFjZShDaGVja1BvaW50cyogY2hlY2tfcG9pbnRzKSB7
Ci0gIHsKLSAgICBTQ09QRURfVFJBQ0UoIlRyYWNlIEIiKTsKLSAgICBBRERfRkFJTFVSRSgpCi0g
ICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxIChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBC
IGFsaXZlKS4iOwotICAgIGNoZWNrX3BvaW50cy0+bjEuTm90aWZ5KCk7Ci0gICAgY2hlY2tfcG9p
bnRzLT5uMi5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7Ci0KLSAgICBBRERfRkFJTFVSRSgpCi0gICAg
ICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzIChpbiB0aHJlYWQgQiwgdHJhY2UgQSAmIEIgYm90
aCBhbGl2ZSkuIjsKLSAgfSAgLy8gVHJhY2UgQiBkaWVzIGhlcmUuCi0gIEFERF9GQUlMVVJFKCkK
LSAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM0IChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBB
IGFsaXZlKS4iOwotICBjaGVja19wb2ludHMtPm4zLk5vdGlmeSgpOwotfQotCi1URVNUKFNDT1BF
RF9UUkFDRVRlc3QsIFdvcmtzQ29uY3VycmVudGx5KSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyA2
IGZhaWx1cmVzKVxuIik7Ci0KLSAgQ2hlY2tQb2ludHMgY2hlY2tfcG9pbnRzOwotICBUaHJlYWRX
aXRoUGFyYW08Q2hlY2tQb2ludHMqPiB0aHJlYWQoJlRocmVhZFdpdGhTY29wZWRUcmFjZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaGVja19wb2ludHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgY2hlY2tfcG9pbnRz
Lm4xLldhaXRGb3JOb3RpZmljYXRpb24oKTsKLQotICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJUcmFj
ZSBBIik7Ci0gICAgQUREX0ZBSUxVUkUoKQotICAgICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAj
MiAoaW4gdGhyZWFkIEEsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLiI7Ci0gICAgY2hlY2tfcG9p
bnRzLm4yLk5vdGlmeSgpOwotICAgIGNoZWNrX3BvaW50cy5uMy5XYWl0Rm9yTm90aWZpY2F0aW9u
KCk7Ci0KLSAgICBBRERfRkFJTFVSRSgpCi0gICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM1
IChpbiB0aHJlYWQgQSwgb25seSB0cmFjZSBBIGFsaXZlKS4iOwotICB9ICAvLyBUcmFjZSBBIGRp
ZXMgaGVyZS4KLSAgQUREX0ZBSUxVUkUoKQotICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzYg
KGluIHRocmVhZCBBLCBubyB0cmFjZSBhbGl2ZSkuIjsKLSAgdGhyZWFkLkpvaW4oKTsKLX0KLSNl
bmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFEU0FGRQotCi1URVNUKERpc2FibGVkVGVzdHNXYXJuaW5n
VGVzdCwKLSAgICAgRElTQUJMRURfQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnU3VwcHJlc3Nlc1dh
cm5pbmcpIHsKLSAgLy8gVGhpcyB0ZXN0IGJvZHkgaXMgaW50ZW50aW9uYWxseSBlbXB0eS4gIEl0
cyBzb2xlIHB1cnBvc2UgaXMgZm9yCi0gIC8vIHZlcmlmeWluZyB0aGF0IHRoZSAtLWd0ZXN0X2Fs
c29fcnVuX2Rpc2FibGVkX3Rlc3RzIGZsYWcKLSAgLy8gc3VwcHJlc3NlcyB0aGUgIllPVSBIQVZF
IDEyIERJU0FCTEVEIFRFU1RTIiB3YXJuaW5nIGF0IHRoZSBlbmQgb2YKLSAgLy8gdGhlIHRlc3Qg
b3V0cHV0LgotfQotCi0vLyBUZXN0cyB1c2luZyBhc3NlcnRpb25zIG91dHNpZGUgb2YgVEVTVCBh
bmQgVEVTVF9GLgotLy8KLS8vIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyB0d28gZmFpbHVyZXMgaW50
ZW50aW9uYWxseS4KLXZvaWQgQWRIb2NUZXN0KCkgewotICBwcmludGYoIlRoZSBub24tdGVzdCBw
YXJ0IG9mIHRoZSBjb2RlIGlzIGV4cGVjdGVkIHRvIGhhdmUgMiBmYWlsdXJlcy5cblxuIik7Ci0g
IEVYUEVDVF9UUlVFKGZhbHNlKTsKLSAgRVhQRUNUX0VRKDIsIDMpOwotfQotCi0vLyBSdW5zIGFs
bCBURVNUcywgYWxsIFRFU1RfRnMsIGFuZCB0aGUgYWQgaG9jIHRlc3QuCi1pbnQgUnVuQWxsVGVz
dHMoKSB7Ci0gIEFkSG9jVGVzdCgpOwotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQotCi0v
LyBUZXN0cyBub24tZmF0YWwgZmFpbHVyZXMgaW4gdGhlIGZpeHR1cmUgY29uc3RydWN0b3IuCi1j
bGFzcyBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25z
dHJ1Y3RvclRlc3QoKSB7Ci0gICAgcHJpbnRmKCIoZXhwZWN0aW5nIDUgZmFpbHVyZXMpXG4iKTsK
LSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBm
aXh0dXJlIGMndG9yLiI7Ci0gIH0KLQotICB+Tm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3Ry
dWN0b3JUZXN0KCkgewotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzUs
IGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBTZXRV
cCgpIHsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBTZXRV
cCgpLiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgQUREX0ZBSUxV
UkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gVGVhckRvd24uIjsKLSAgfQotfTsKLQot
VEVTVF9GKE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCwgRmFpbHVyZUlu
Q29uc3RydWN0b3IpIHsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMywg
aW4gdGhlIHRlc3QgYm9keS4iOwotfQotCi0vLyBUZXN0cyBmYXRhbCBmYWlsdXJlcyBpbiB0aGUg
Zml4dHVyZSBjb25zdHJ1Y3Rvci4KLWNsYXNzIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVj
dG9yVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIEZhdGFsRmFp
bHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCgpIHsKLSAgICBwcmludGYoIihleHBlY3Rpbmcg
MiBmYWlsdXJlcylcbiIpOwotICAgIEluaXQoKTsKLSAgfQotCi0gIH5GYXRhbEZhaWx1cmVJbkZp
eHR1cmVDb25zdHJ1Y3RvclRlc3QoKSB7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQg
ZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4iOwotICB9Ci0KLSAgdmlydHVh
bCB2b2lkIFNldFVwKCkgewotICAgIEFERF9GQUlMVVJFKCkgPDwgIlVORVhQRUNURUQgZmFpbHVy
ZSBpbiBTZXRVcCgpLiAgIgotICAgICAgICAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBn
ZXQgaGVyZSwgYXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciAiCi0gICAgICAgICAgICAgICAgICA8
PCAiaGFkIGEgZmF0YWwgZmFpbHVyZS4iOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3du
KCkgewotICAgIEFERF9GQUlMVVJFKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiBUZWFyRG93
bigpLiAgIgotICAgICAgICAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwg
YXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciAiCi0gICAgICAgICAgICAgICAgICA8PCAiaGFkIGEg
ZmF0YWwgZmFpbHVyZS4iOwotICB9Ci0gcHJpdmF0ZToKLSAgdm9pZCBJbml0KCkgewotICAgIEZB
SUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4i
OwotICB9Ci19OwotCi1URVNUX0YoRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0
LCBGYWlsdXJlSW5Db25zdHJ1Y3RvcikgewotICBBRERfRkFJTFVSRSgpIDw8ICJVTkVYUEVDVEVE
IGZhaWx1cmUgaW4gdGhlIHRlc3QgYm9keS4gICIKLSAgICAgICAgICAgICAgICA8PCAiV2Ugc2hv
dWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0dXJlIGMndG9yICIKLSAgICAgICAg
ICAgICAgICA8PCAiaGFkIGEgZmF0YWwgZmFpbHVyZS4iOwotfQotCi0vLyBUZXN0cyBub24tZmF0
YWwgZmFpbHVyZXMgaW4gU2V0VXAoKS4KLWNsYXNzIE5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB+Tm9uRmF0
YWxGYWlsdXJlSW5TZXRVcFRlc3QoKSB7Ci0gICAgRGVpbml0KCk7Ci0gIH0KLQotICB2aXJ0dWFs
IHZvaWQgU2V0VXAoKSB7Ci0gICAgcHJpbnRmKCIoZXhwZWN0aW5nIDQgZmFpbHVyZXMpXG4iKTsK
LSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLiI7
Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBl
Y3RlZCBmYWlsdXJlICMzLCBpbiBUZWFyRG93bigpLiI7Ci0gIH0KLSBwcml2YXRlOgotICB2b2lk
IERlaW5pdCgpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRoZSB0
ZXN0IGZpeHR1cmUgZCd0b3IuIjsKLSAgfQotfTsKLQotVEVTVF9GKE5vbkZhdGFsRmFpbHVyZUlu
U2V0VXBUZXN0LCBGYWlsdXJlSW5TZXRVcCkgewotICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1
cmUgIzIsIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLiI7Ci19Ci0KLS8vIFRlc3RzIGZhdGFsIGZhaWx1
cmVzIGluIFNldFVwKCkuCi1jbGFzcyBGYXRhbEZhaWx1cmVJblNldFVwVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgfkZhdGFsRmFpbHVyZUluU2V0
VXBUZXN0KCkgewotICAgIERlaW5pdCgpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkg
ewotICAgIHByaW50ZigiKGV4cGVjdGluZyAzIGZhaWx1cmVzKVxuIik7Ci0gICAgRkFJTCgpIDw8
ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZv
aWQgVGVhckRvd24oKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBU
ZWFyRG93bigpLiI7Ci0gIH0KLSBwcml2YXRlOgotICB2b2lkIERlaW5pdCgpIHsKLSAgICBGQUlM
KCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsK
LSAgfQotfTsKLQotVEVTVF9GKEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LCBGYWlsdXJlSW5TZXRV
cCkgewotICBGQUlMKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBmdW5jdGlv
bi4gICIKLSAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIFNldFVwKCkg
ZmFpbGVkLiI7Ci19Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0KLS8vIFRoaXMgZ3JvdXAgb2Yg
dGVzdHMgdmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCBoYW5kbGVzIFNFSCBhbmQgQysrCi0vLyBl
eGNlcHRpb25zIGNvcnJlY3RseS4KLQotLy8gQSBmdW5jdGlvbiB0aGF0IHRocm93cyBhbiBTRUgg
ZXhjZXB0aW9uLgotc3RhdGljIHZvaWQgVGhyb3dTRUgoKSB7Ci0gIGludCogcCA9IE5VTEw7Ci0g
ICpwID0gMDsgIC8vIFJhaXNlcyBhbiBhY2Nlc3MgdmlvbGF0aW9uLgotfQotCi0vLyBUZXN0cyBl
eGNlcHRpb25zIHRocm93biBpbiB0aGUgdGVzdCBmaXh0dXJlIGNvbnN0cnVjdG9yLgotY2xhc3Mg
RXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJv
dGVjdGVkOgotICBFeGNlcHRpb25JbkZpeHR1cmVDdG9yVGVzdCgpIHsKLSAgICBwcmludGYoIihl
eHBlY3RpbmcgYSBmYWlsdXJlIG9uIHRocm93biBleGNlcHRpb24gIgotICAgICAgICAgICAiaW4g
dGhlIHRlc3QgZml4dHVyZSdzIGNvbnN0cnVjdG9yKVxuIik7Ci0KLSAgICBUaHJvd1NFSCgpOwot
ICB9Ci0KLSAgdmlydHVhbCB+RXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3QoKSB7Ci0gICAgRGVp
bml0KCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgRkFJTCgpIDw8ICJV
TkVYUEVDVEVEIGZhaWx1cmUgaW4gU2V0VXAoKS4gICIKLSAgICAgICAgICAgPDwgIldlIHNob3Vs
ZCBuZXZlciBnZXQgaGVyZSwgYXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciB0aHJldy4iOwotICB9
Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIEZBSUwoKSA8PCAiVU5FWFBFQ1RF
RCBmYWlsdXJlIGluIFRlYXJEb3duKCkuICAiCi0gICAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2
ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgdGhyZXcuIjsKLSAgfQotIHBy
aXZhdGU6Ci0gIHZvaWQgRGVpbml0KCkgewotICAgIEZBSUwoKSA8PCAiVU5FWFBFQ1RFRCBmYWls
dXJlIGluIHRoZSBkJ3Rvci4gICIKLSAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQg
aGVyZSwgYXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciB0aHJldy4iOwotICB9Ci19OwotCi1URVNU
X0YoRXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3QsIEV4Y2VwdGlvbkluRml4dHVyZUN0b3IpIHsK
LSAgRkFJTCgpIDw8ICJVTkVYUEVDVEVEIGZhaWx1cmUgaW4gdGhlIHRlc3QgZnVuY3Rpb24uICAi
Ci0gICAgICAgICA8PCAiV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBhcyB0aGUgdGVzdCBmaXh0
dXJlIGMndG9yIHRocmV3LiI7Ci19Ci0KLS8vIFRlc3RzIGV4Y2VwdGlvbnMgdGhyb3duIGluIFNl
dFVwKCkuCi1jbGFzcyBFeGNlcHRpb25JblNldFVwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgfkV4Y2VwdGlvbkluU2V0VXBUZXN0KCkgewotICAg
IERlaW5pdCgpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIHByaW50Zigi
KGV4cGVjdGluZyAzIGZhaWx1cmVzKVxuIik7Ci0KLSAgICBUaHJvd1NFSCgpOwotICB9Ci0KLSAg
dmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVy
ZSAjMiwgaW4gVGVhckRvd24oKS4iOwotICB9Ci0gcHJpdmF0ZToKLSAgdm9pZCBEZWluaXQoKSB7
Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJl
IGQndG9yLiI7Ci0gIH0KLX07Ci0KLVRFU1RfRihFeGNlcHRpb25JblNldFVwVGVzdCwgRXhjZXB0
aW9uSW5TZXRVcCkgewotICBGQUlMKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgdGVz
dCBmdW5jdGlvbi4gICIKLSAgICAgICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFz
IFNldFVwKCkgdGhyZXcuIjsKLX0KLQotLy8gVGVzdHMgdGhhdCBUZWFyRG93bigpIGFuZCB0aGUg
dGVzdCBmaXh0dXJlIGQndG9yIGFyZSBhbHdheXMgY2FsbGVkLAotLy8gZXZlbiB3aGVuIHRoZSB0
ZXN0IGZ1bmN0aW9uIHRocm93cyBhbiBleGNlcHRpb24uCi1jbGFzcyBFeGNlcHRpb25JblRlc3RG
dW5jdGlvblRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0
dWFsIH5FeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QoKSB7Ci0gICAgRGVpbml0KCk7Ci0gIH0K
LQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBm
YWlsdXJlICMyLCBpbiBUZWFyRG93bigpLiI7Ci0gIH0KLSBwcml2YXRlOgotICB2b2lkIERlaW5p
dCgpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZp
eHR1cmUgZCd0b3IuIjsKLSAgfQotfTsKLQotLy8gVGVzdHMgdGhhdCB0aGUgdGVzdCBmaXh0dXJl
IGQndG9yIGlzIGFsd2F5cyBjYWxsZWQsIGV2ZW4gd2hlbiB0aGUKLS8vIHRlc3QgZnVuY3Rpb24g
dGhyb3dzIGFuIFNFSCBleGNlcHRpb24uCi1URVNUX0YoRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25U
ZXN0LCBTRUgpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDMgZmFpbHVyZXMpXG4iKTsKLQotICBU
aHJvd1NFSCgpOwotfQotCi0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gVGVzdHMgdGhh
dCB0aGUgdGVzdCBmaXh0dXJlIGQndG9yIGlzIGFsd2F5cyBjYWxsZWQsIGV2ZW4gd2hlbiB0aGUK
LS8vIHRlc3QgZnVuY3Rpb24gdGhyb3dzIGEgQysrIGV4Y2VwdGlvbi4gIFdlIGRvIHRoaXMgb25s
eSB3aGVuCi0vLyBHVEVTVF9IQVNfRVhDRVBUSU9OUyBpcyBub24temVybywgaS5lLiBDKysgZXhj
ZXB0aW9ucyBhcmUgZW5hYmxlZC4KLVRFU1RfRihFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3Qs
IENwcEV4Y2VwdGlvbikgewotICB0aHJvdyAxOwotfQotCi0vLyBUZXN0cyBleGNlcHRpb25zIHRo
cm93biBpbiBUZWFyRG93bigpLgotY2xhc3MgRXhjZXB0aW9uSW5UZWFyRG93blRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIH5FeGNlcHRpb25JblRl
YXJEb3duVGVzdCgpIHsKLSAgICBEZWluaXQoKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpIHsKLSAgICB0aHJvdyAxOwotICB9Ci0gcHJpdmF0ZToKLSAgdm9pZCBEZWluaXQoKSB7
Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJl
IGQndG9yLiI7Ci0gIH0KLX07Ci0KLVRFU1RfRihFeGNlcHRpb25JblRlYXJEb3duVGVzdCwgRXhj
ZXB0aW9uSW5UZWFyRG93bikgewotICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIp
OwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCi0KLSNlbmRpZiAgLy8gR1RF
U1RfT1NfV0lORE9XUwotCi0jaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQotCi0vLyBBIHVuYXJ5IGZ1
bmN0aW9uIHRoYXQgbWF5IGRpZS4KLXZvaWQgRGllSWYoYm9vbCBzaG91bGRfZGllKSB7Ci0gIEdU
RVNUX0NIRUNLXyghc2hvdWxkX2RpZSkgPDwgIiAtIGRlYXRoIGluc2lkZSBEaWVJZigpLiI7Ci19
Ci0KLS8vIFRlc3RzIHJ1bm5pbmcgZGVhdGggdGVzdHMgaW4gYSBtdWx0aS10aHJlYWRlZCBjb250
ZXh0LgotCi0vLyBVc2VkIGZvciBjb29yZGluYXRpb24gYmV0d2VlbiB0aGUgbWFpbiBhbmQgdGhl
IHNwYXduIHRocmVhZC4KLXN0cnVjdCBTcGF3blRocmVhZE5vdGlmaWNhdGlvbnMgewotICBTcGF3
blRocmVhZE5vdGlmaWNhdGlvbnMoKSB7fQotCi0gIE5vdGlmaWNhdGlvbiBzcGF3bl90aHJlYWRf
c3RhcnRlZDsKLSAgTm90aWZpY2F0aW9uIHNwYXduX3RocmVhZF9va190b190ZXJtaW5hdGU7Ci0K
LSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNwYXduVGhyZWFk
Tm90aWZpY2F0aW9ucyk7Ci19OwotCi0vLyBUaGUgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgaW4g
dGhlIHRocmVhZCBzcGF3biBieSB0aGUKLS8vIE11bHRpcGxlVGhyZWFkcyB0ZXN0IChiZWxvdyku
Ci1zdGF0aWMgdm9pZCBUaHJlYWRSb3V0aW5lKFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyogbm90
aWZpY2F0aW9ucykgewotICAvLyBTaWduYWxzIHRoZSBtYWluIHRocmVhZCB0aGF0IHRoaXMgdGhy
ZWFkIGhhcyBzdGFydGVkLgotICBub3RpZmljYXRpb25zLT5zcGF3bl90aHJlYWRfc3RhcnRlZC5O
b3RpZnkoKTsKLQotICAvLyBXYWl0cyBmb3IgcGVybWlzc2lvbiB0byBmaW5pc2ggZnJvbSB0aGUg
bWFpbiB0aHJlYWQuCi0gIG5vdGlmaWNhdGlvbnMtPnNwYXduX3RocmVhZF9va190b190ZXJtaW5h
dGUuV2FpdEZvck5vdGlmaWNhdGlvbigpOwotfQotCi0vLyBUaGlzIGlzIGEgZGVhdGgtdGVzdCB0
ZXN0LCBidXQgaXQncyBub3QgbmFtZWQgd2l0aCBhIERlYXRoVGVzdAotLy8gc3VmZml4LiAgSXQg
c3RhcnRzIHRocmVhZHMgd2hpY2ggbWlnaHQgaW50ZXJmZXJlIHdpdGggbGF0ZXIKLS8vIGRlYXRo
IHRlc3RzLCBzbyBpdCBtdXN0IHJ1biBhZnRlciBhbGwgb3RoZXIgZGVhdGggdGVzdHMuCi1jbGFz
cyBEZWF0aFRlc3RBbmRNdWx0aVRocmVhZHNUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewot
IHByb3RlY3RlZDoKLSAgLy8gU3RhcnRzIGEgdGhyZWFkIGFuZCB3YWl0cyBmb3IgaXQgdG8gYmVn
aW4uCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICB0aHJlYWRfLnJlc2V0KG5ldyBUaHJl
YWRXaXRoUGFyYW08U3Bhd25UaHJlYWROb3RpZmljYXRpb25zKj4oCi0gICAgICAgICZUaHJlYWRS
b3V0aW5lLCAmbm90aWZpY2F0aW9uc18sIE5VTEwpKTsKLSAgICBub3RpZmljYXRpb25zXy5zcGF3
bl90aHJlYWRfc3RhcnRlZC5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7Ci0gIH0KLSAgLy8gVGVsbHMg
dGhlIHRocmVhZCB0byBmaW5pc2gsIGFuZCByZWFwcyBpdC4KLSAgLy8gRGVwZW5kaW5nIG9uIHRo
ZSB2ZXJzaW9uIG9mIHRoZSB0aHJlYWQgbGlicmFyeSBpbiB1c2UsCi0gIC8vIGEgbWFuYWdlciB0
aHJlYWQgbWlnaHQgc3RpbGwgYmUgbGVmdCBydW5uaW5nIHRoYXQgd2lsbCBpbnRlcmZlcmUKLSAg
Ly8gd2l0aCBsYXRlciBkZWF0aCB0ZXN0cy4gIFRoaXMgaXMgdW5mb3J0dW5hdGUsIGJ1dCB0aGlz
IGNsYXNzCi0gIC8vIGNsZWFucyB1cCBhZnRlciBpdHNlbGYgYXMgYmVzdCBpdCBjYW4uCi0gIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBub3RpZmljYXRpb25zXy5zcGF3bl90aHJlYWRf
b2tfdG9fdGVybWluYXRlLk5vdGlmeSgpOwotICB9Ci0KLSBwcml2YXRlOgotICBTcGF3blRocmVh
ZE5vdGlmaWNhdGlvbnMgbm90aWZpY2F0aW9uc187Ci0gIHNjb3BlZF9wdHI8VGhyZWFkV2l0aFBh
cmFtPFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyo+ID4gdGhyZWFkXzsKLX07Ci0KLSNlbmRpZiAg
Ly8gR1RFU1RfSVNfVEhSRUFEU0FGRQotCi0vLyBUaGUgTWl4ZWRVcFRlc3RDYXNlVGVzdCB0ZXN0
IGNhc2UgdmVyaWZpZXMgdGhhdCBHb29nbGUgVGVzdCB3aWxsIGZhaWwgYQotLy8gdGVzdCBpZiBp
dCB1c2VzIGEgZGlmZmVyZW50IGZpeHR1cmUgY2xhc3MgdGhhbiB3aGF0IG90aGVyIHRlc3RzIGlu
Ci0vLyB0aGUgc2FtZSB0ZXN0IGNhc2UgdXNlLiAgSXQgZGVsaWJlcmF0ZWx5IGNvbnRhaW5zIHR3
byBmaXh0dXJlCi0vLyBjbGFzc2VzIHdpdGggdGhlIHNhbWUgbmFtZSBidXQgZGVmaW5lZCBpbiBk
aWZmZXJlbnQgbmFtZXNwYWNlcy4KLQotLy8gVGhlIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVz
dE5hbWVUZXN0IHRlc3QgY2FzZSB2ZXJpZmllcyB0aGF0Ci0vLyB3aGVuIHRoZSB1c2VyIGRlZmlu
ZXMgdHdvIHRlc3RzIHdpdGggdGhlIHNhbWUgdGVzdCBjYXNlIG5hbWUgQU5ECi0vLyBzYW1lIHRl
c3QgbmFtZSAoYnV0IGluIGRpZmZlcmVudCBuYW1lc3BhY2VzKSwgdGhlIHNlY29uZCB0ZXN0IHdp
bGwKLS8vIGZhaWwuCi0KLW5hbWVzcGFjZSBmb28gewotCi1jbGFzcyBNaXhlZFVwVGVzdENhc2VU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVEVTVF9GKE1peGVkVXBUZXN0Q2Fz
ZVRlc3QsIEZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28pIHt9Ci1URVNUX0YoTWl4ZWRVcFRlc3RD
YXNlVGVzdCwgU2Vjb25kVGVzdEZyb21OYW1lc3BhY2VGb28pIHt9Ci0KLWNsYXNzIE1peGVkVXBU
ZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsK
LQotVEVTVF9GKE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAotICAgICAgIFRo
ZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsKSB7fQotCi19ICAvLyBuYW1lc3BhY2Ug
Zm9vCi0KLW5hbWVzcGFjZSBiYXIgewotCi1jbGFzcyBNaXhlZFVwVGVzdENhc2VUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotLy8gVGhlIGZvbGxvd2luZyB0d28gdGVzdHMgYXJl
IGV4cGVjdGVkIHRvIGZhaWwuICBXZSByZWx5IG9uIHRoZQotLy8gZ29sZGVuIGZpbGUgdG8gY2hl
Y2sgdGhhdCBHb29nbGUgVGVzdCBnZW5lcmF0ZXMgdGhlIHJpZ2h0IGVycm9yIG1lc3NhZ2UuCi1U
RVNUX0YoTWl4ZWRVcFRlc3RDYXNlVGVzdCwgVGhpc1Nob3VsZEZhaWwpIHt9Ci1URVNUX0YoTWl4
ZWRVcFRlc3RDYXNlVGVzdCwgVGhpc1Nob3VsZEZhaWxUb28pIHt9Ci0KLWNsYXNzIE1peGVkVXBU
ZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsK
LQotLy8gRXhwZWN0ZWQgdG8gZmFpbC4gIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIGNo
ZWNrIHRoYXQgR29vZ2xlIFRlc3QKLS8vIGdlbmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVzc2Fn
ZS4KLVRFU1RfRihNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdCwKLSAgICAgICBU
aGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbCkge30KLQotfSAgLy8gbmFtZXNwYWNl
IGJhcgotCi0vLyBUaGUgZm9sbG93aW5nIHR3byB0ZXN0IGNhc2VzIHZlcmlmeSB0aGF0IEdvb2ds
ZSBUZXN0IGNhdGNoZXMgdGhlIHVzZXIKLS8vIGVycm9yIG9mIG1peGluZyBURVNUIGFuZCBURVNU
X0YgaW4gdGhlIHNhbWUgdGVzdCBjYXNlLiAgVGhlIGZpcnN0Ci0vLyB0ZXN0IGNhc2UgY2hlY2tz
IHRoZSBzY2VuYXJpbyB3aGVyZSBURVNUX0YgYXBwZWFycyBiZWZvcmUgVEVTVCwgYW5kCi0vLyB0
aGUgc2Vjb25kIG9uZSBjaGVja3Mgd2hlcmUgVEVTVCBhcHBlYXJzIGJlZm9yZSBURVNUX0YuCi0K
LWNsYXNzIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKLX07Ci0KLVRFU1RfRihURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0
X2Nhc2UsIERlZmluZWRVc2luZ1RFU1RfRikge30KLQotLy8gRXhwZWN0ZWQgdG8gZmFpbC4gIFdl
IHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIGNoZWNrIHRoYXQgR29vZ2xlIFRlc3QKLS8vIGdl
bmVyYXRlcyB0aGUgcmlnaHQgZXJyb3IgbWVzc2FnZS4KLVRFU1QoVEVTVF9GX2JlZm9yZV9URVNU
X2luX3NhbWVfdGVzdF9jYXNlLCBEZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxkRmFpbCkge30KLQot
Y2xhc3MgVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlIDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgewotfTsKLQotVEVTVChURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nh
c2UsIERlZmluZWRVc2luZ1RFU1QpIHt9Ci0KLS8vIEV4cGVjdGVkIHRvIGZhaWwuICBXZSByZWx5
IG9uIHRoZSBnb2xkZW4gZmlsZSB0byBjaGVjayB0aGF0IEdvb2dsZSBUZXN0Ci0vLyBnZW5lcmF0
ZXMgdGhlIHJpZ2h0IGVycm9yIG1lc3NhZ2UuCi1URVNUX0YoVEVTVF9iZWZvcmVfVEVTVF9GX2lu
X3NhbWVfdGVzdF9jYXNlLCBEZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsKSB7Ci19Ci0K
LS8vIFVzZWQgZm9yIHRlc3RpbmcgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBhbmQgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoKS4KLWludCBnbG9iYWxfaW50ZWdlciA9IDA7Ci0KLS8vIFRlc3RzIHRo
YXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBjYW4gcmVmZXJlbmNlIGdsb2JhbCB2YXJpYWJs
ZXMuCi1URVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIENhblJlZmVyZW5jZUdsb2JhbFZh
cmlhYmxlcykgewotICBnbG9iYWxfaW50ZWdlciA9IDA7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKHsKLSAgICBFWFBFQ1RfRVEoMSwgZ2xvYmFsX2ludGVnZXIpIDw8ICJFeHBlY3RlZCBub24t
ZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBjYW4gcmVmZXJlbmNl
IGxvY2FsIHZhcmlhYmxlcwotLy8gKHN0YXRpYyBvciBub3QpLgotVEVTVChFeHBlY3ROb25mYXRh
bEZhaWx1cmVUZXN0LCBDYW5SZWZlcmVuY2VMb2NhbFZhcmlhYmxlcykgewotICBpbnQgbSA9IDA7
Ci0gIHN0YXRpYyBpbnQgbjsKLSAgbiA9IDE7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsK
LSAgICBFWFBFQ1RfRVEobSwgbikgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7Ci0g
IH0sICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIHN1Y2NlZWRzIHdoZW4gdGhlcmUgaXMgZXhhY3RseQot
Ly8gb25lIG5vbi1mYXRhbCBmYWlsdXJlIGFuZCBubyBmYXRhbCBmYWlsdXJlLgotVEVTVChFeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LCBTdWNjZWVkc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWls
dXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBBRERfRkFJTFVSRSgpIDw8
ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiRXhwZWN0ZWQgbm9uLWZhdGFs
IGZhaWx1cmUuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
KSBmYWlscyB3aGVuIHRoZXJlIGlzIG5vCi0vLyBub24tZmF0YWwgZmFpbHVyZS4KLVRFU1QoRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJl
KSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoewotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZXJlIGFyZSB0d28KLS8vIG5vbi1mYXRhbCBmYWls
dXJlcy4KLVRFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVBcmVU
d29Ob25mYXRhbEZhaWx1cmVzKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4i
KTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4
cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDEuIjsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBl
Y3RlZCBub24tZmF0YWwgZmFpbHVyZSAyLiI7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgaXMgb25lIGZhdGFs
Ci0vLyBmYWlsdXJlLgotVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5U
aGVyZUlzT25lRmF0YWxGYWlsdXJlKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUp
XG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIEZBSUwoKSA8PCAiRXhwZWN0
ZWQgZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZSBzdGF0ZW1lbnQgYmVpbmcKLS8vIHRl
c3RlZCByZXR1cm5zLgotVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5T
dGF0ZW1lbnRSZXR1cm5zKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsK
LSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIHJldHVybjsKLSAgfSwgIiIpOwotfQot
Ci0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVudCBiZWluZwotLy8gdGVzdGVkIHRo
cm93cy4KLVRFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuU3RhdGVtZW50
VGhyb3dzKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgdHJ5IHsK
LSAgICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAgICB0aHJvdyAwOwotICAgIH0sICIi
KTsKLSAgfSBjYXRjaChpbnQpIHsgIC8vIE5PTElOVAotICB9Ci19Ci0KLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgp
IGNhbiByZWZlcmVuY2UgZ2xvYmFsIHZhcmlhYmxlcy4KLVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdCwgQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzKSB7Ci0gIGdsb2JhbF9pbnRlZ2VyID0g
MDsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICAgIEFTU0VSVF9FUSgxLCBnbG9iYWxfaW50
ZWdlcikgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKLSAgfSwgIkV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBj
YW4gcmVmZXJlbmNlIGxvY2FsIHN0YXRpYwotLy8gdmFyaWFibGVzLgotVEVTVChFeHBlY3RGYXRh
bEZhaWx1cmVUZXN0LCBDYW5SZWZlcmVuY2VMb2NhbFN0YXRpY1ZhcmlhYmxlcykgewotICBzdGF0
aWMgaW50IG47Ci0gIG4gPSAxOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0gICAgQVNTRVJU
X0VRKDAsIG4pIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7Ci0gIH0sICJFeHBlY3RlZCBm
YXRhbCBmYWlsdXJlLiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJF
KCkgc3VjY2VlZHMgd2hlbiB0aGVyZSBpcyBleGFjdGx5Ci0vLyBvbmUgZmF0YWwgZmFpbHVyZSBh
bmQgbm8gbm9uLWZhdGFsIGZhaWx1cmUuCi1URVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIFN1
Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUpIHsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiRXhw
ZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxf
RkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlcmUgaXMgbm8gZmF0YWwKLS8vIGZhaWx1cmUuCi1URVNU
KEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZSkg
ewotICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKHsKLSAgfSwgIiIpOwotfQotCi0vLyBBIGhlbHBlciBmb3IgZ2VuZXJhdGluZyBhIGZh
dGFsIGZhaWx1cmUuCi12b2lkIEZhdGFsRmFpbHVyZSgpIHsKLSAgRkFJTCgpIDw8ICJFeHBlY3Rl
ZCBmYXRhbCBmYWlsdXJlLiI7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoKSBmYWlscyB3aGVuIHRoZXJlIGFyZSB0d28KLS8vIGZhdGFsIGZhaWx1cmVzLgotVEVTVChF
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMp
IHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRSh7Ci0gICAgRmF0YWxGYWlsdXJlKCk7Ci0gICAgRmF0YWxGYWlsdXJlKCk7Ci0gIH0s
ICIiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdo
ZW4gdGhlcmUgaXMgb25lIG5vbi1mYXRhbAotLy8gZmFpbHVyZS4KLVRFU1QoRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZSkgewotICBwcmlu
dGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsK
LSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOwotICB9
LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3
aGVuIHRoZSBzdGF0ZW1lbnQgYmVpbmcKLS8vIHRlc3RlZCByZXR1cm5zLgotVEVTVChFeHBlY3RG
YXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zKSB7Ci0gIHByaW50Zigi
KGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICAg
IHJldHVybjsKLSAgfSwgIiIpOwotfQotCi0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotLy8g
VGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGZhaWxzIHdoZW4gdGhlIHN0YXRlbWVu
dCBiZWluZwotLy8gdGVzdGVkIHRocm93cy4KLVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwg
RmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1
cmUpXG4iKTsKLSAgdHJ5IHsKLSAgICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0gICAgICB0aHJv
dyAwOwotICAgIH0sICIiKTsKLSAgfSBjYXRjaChpbnQpIHsgIC8vIE5PTElOVAotICB9Ci19Ci0K
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gVGhpcyAjaWZkZWYgYmxvY2sg
dGVzdHMgdGhlIG91dHB1dCBvZiB0eXBlZCB0ZXN0cy4KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVT
VAotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFR5cGVkVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRShUeXBlZFRlc3QsIHRlc3Rpbmc6OlR5
cGVzPGludD4pOwotCi1UWVBFRF9URVNUKFR5cGVkVGVzdCwgU3VjY2VzcykgewotICBFWFBFQ1Rf
RVEoMCwgVHlwZVBhcmFtKCkpOwotfQotCi1UWVBFRF9URVNUKFR5cGVkVGVzdCwgRmFpbHVyZSkg
ewotICBFWFBFQ1RfRVEoMSwgVHlwZVBhcmFtKCkpIDw8ICJFeHBlY3RlZCBmYWlsdXJlIjsKLX0K
LQotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAotCi0vLyBUaGlzICNpZmRlZiBibG9j
ayB0ZXN0cyB0aGUgb3V0cHV0IG9mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KLSNpZiBHVEVT
VF9IQVNfVFlQRURfVEVTVF9QCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgVHlwZWRU
ZXN0UCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRV9QKFR5
cGVkVGVzdFApOwotCi1UWVBFRF9URVNUX1AoVHlwZWRUZXN0UCwgU3VjY2VzcykgewotICBFWFBF
Q1RfRVEoMFUsIFR5cGVQYXJhbSgpKTsKLX0KLQotVFlQRURfVEVTVF9QKFR5cGVkVGVzdFAsIEZh
aWx1cmUpIHsKLSAgRVhQRUNUX0VRKDFVLCBUeXBlUGFyYW0oKSkgPDwgIkV4cGVjdGVkIGZhaWx1
cmUiOwotfQotCi1SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChUeXBlZFRlc3RQLCBTdWNjZXNz
LCBGYWlsdXJlKTsKLQotdHlwZWRlZiB0ZXN0aW5nOjpUeXBlczx1bnNpZ25lZCBjaGFyLCB1bnNp
Z25lZCBpbnQ+IFVuc2lnbmVkVHlwZXM7Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChV
bnNpZ25lZCwgVHlwZWRUZXN0UCwgVW5zaWduZWRUeXBlcyk7Ci0KLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1RZUEVEX1RFU1RfUAotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotLy8gV2UgcmVs
eSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gdmVyaWZ5IHRoYXQgdGVzdHMgd2hvc2UgdGVzdCBjYXNl
Ci0vLyBuYW1lIGVuZHMgd2l0aCBEZWF0aFRlc3QgYXJlIHJ1biBmaXJzdC4KLQotVEVTVChBRGVh
dGhUZXN0LCBTaG91bGRSdW5GaXJzdCkgewotfQotCi0jaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QK
LQotLy8gV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gdmVyaWZ5IHRoYXQgdHlwZWQgdGVz
dHMgd2hvc2UgdGVzdAotLy8gY2FzZSBuYW1lIGVuZHMgd2l0aCBEZWF0aFRlc3QgYXJlIHJ1biBm
aXJzdC4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBBVHlwZWREZWF0aFRlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi10eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPGludCwg
ZG91YmxlPiBOdW1lcmljVHlwZXM7Ci1UWVBFRF9URVNUX0NBU0UoQVR5cGVkRGVhdGhUZXN0LCBO
dW1lcmljVHlwZXMpOwotCi1UWVBFRF9URVNUKEFUeXBlZERlYXRoVGVzdCwgU2hvdWxkUnVuRmly
c3QpIHsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAotCi0jaWYgR1RFU1Rf
SEFTX1RZUEVEX1RFU1RfUAotCi0KLS8vIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIHZl
cmlmeSB0aGF0IHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cwotLy8gd2hvc2UgdGVzdCBjYXNlIG5h
bWUgZW5kcyB3aXRoIERlYXRoVGVzdCBhcmUgcnVuIGZpcnN0LgotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLWNsYXNzIEFUeXBlUGFyYW1EZWF0aFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChBVHlwZVBhcmFtRGVhdGhUZXN0KTsKLQotVFlQRURf
VEVTVF9QKEFUeXBlUGFyYW1EZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0KSB7Ci19Ci0KLVJFR0lT
VEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEFUeXBlUGFyYW1EZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0
KTsKLQotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEFUeXBlUGFyYW1EZWF0aFRl
c3QsIE51bWVyaWNUeXBlcyk7Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAot
Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLS8vIFRlc3RzIHZhcmlvdXMgZmFp
bHVyZSBjb25kaXRpb25zIG9mCi0vLyBFWFBFQ1RfeyxOT059RkFUQUxfRkFJTFVSRXssX09OX0FM
TF9USFJFQURTfS4KLWNsYXNzIEV4cGVjdEZhaWx1cmVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewotIHB1YmxpYzogIC8vIE11c3QgYmUgcHVibGljIGFuZCBub3QgcHJvdGVjdGVkIGR1ZSB0
byBhIGJ1ZyBpbiBnKysgMy40LjIuCi0gIGVudW0gRmFpbHVyZU1vZGUgewotICAgIEZBVEFMX0ZB
SUxVUkUsCi0gICAgTk9ORkFUQUxfRkFJTFVSRQotICB9OwotICBzdGF0aWMgdm9pZCBBZGRGYWls
dXJlKEZhaWx1cmVNb2RlIGZhaWx1cmUpIHsKLSAgICBpZiAoZmFpbHVyZSA9PSBGQVRBTF9GQUlM
VVJFKSB7Ci0gICAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKLSAgICB9
IGVsc2UgewotICAgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUuIjsKLSAgICB9Ci0gIH0KLX07Ci0KLVRFU1RfRihFeHBlY3RGYWlsdXJlVGVzdCwgRXhwZWN0
RmF0YWxGYWlsdXJlKSB7Ci0gIC8vIEV4cGVjdGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVk
cy4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShTVUNDRUVEKCksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOwotICAvLyBFeHBl
Y3RlZCBmYXRhbCBmYWlsdXJlLCBidXQgZ290IGEgbm9uLWZhdGFsIGZhaWx1cmUuCi0gIHByaW50
ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRk
RmFpbHVyZShOT05GQVRBTF9GQUlMVVJFKSwgIkV4cGVjdGVkIG5vbi1mYXRhbCAiCi0gICAgICAg
ICAgICAgICAgICAgICAgICJmYWlsdXJlLiIpOwotICAvLyBXcm9uZyBtZXNzYWdlLgotICBwcmlu
dGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFk
ZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUgIgotICAg
ICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQuIik7Ci19Ci0KLVRFU1RfRihFeHBlY3RGYWls
dXJlVGVzdCwgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlKSB7Ci0gIC8vIEV4cGVjdGVkIG5vbi1mYXRh
bCBmYWlsdXJlLCBidXQgc3VjY2VlZHMuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUp
XG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoU1VDQ0VFRCgpLCAiRXhwZWN0ZWQgbm9u
LWZhdGFsIGZhaWx1cmUuIik7Ci0gIC8vIEV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLCBidXQg
Z290IGEgZmF0YWwgZmFpbHVyZS4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIp
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlKEZBVEFMX0ZBSUxVUkUpLCAi
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKLSAgLy8gV3JvbmcgbWVzc2FnZS4KLSAgcHJpbnRm
KCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShB
ZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpLCAiU29tZSBvdGhlciBub24tZmF0YWwgIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZmFpbHVyZS4iKTsKLX0KLQotI2lmIEdURVNUX0lTX1RI
UkVBRFNBRkUKLQotY2xhc3MgRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCA6IHB1YmxpYyBF
eHBlY3RGYWlsdXJlVGVzdCB7Ci0gcHJvdGVjdGVkOgotICBzdGF0aWMgdm9pZCBBZGRGYWlsdXJl
SW5PdGhlclRocmVhZChGYWlsdXJlTW9kZSBmYWlsdXJlKSB7Ci0gICAgVGhyZWFkV2l0aFBhcmFt
PEZhaWx1cmVNb2RlPiB0aHJlYWQoJkFkZEZhaWx1cmUsIGZhaWx1cmUsIE5VTEwpOwotICAgIHRo
cmVhZC5Kb2luKCk7Ci0gIH0KLX07Ci0KLVRFU1RfRihFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNU
ZXN0LCBFeHBlY3RGYXRhbEZhaWx1cmUpIHsKLSAgLy8gV2Ugb25seSBpbnRlcmNlcHQgdGhlIGN1
cnJlbnQgdGhyZWFkLgotICBwcmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOwotICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlSW5PdGhlclRocmVhZChGQVRBTF9GQUlMVVJF
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Ci19
Ci0KLVRFU1RfRihFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LCBFeHBlY3ROb25GYXRhbEZh
aWx1cmUpIHsKLSAgLy8gV2Ugb25seSBpbnRlcmNlcHQgdGhlIGN1cnJlbnQgdGhyZWFkLgotICBw
cmludGYoIihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShBZGRGYWlsdXJlSW5PdGhlclRocmVhZChOT05GQVRBTF9GQUlMVVJFKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwotfQotCi10
eXBlZGVmIEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QgU2NvcGVkRmFrZVRlc3RQYXJ0UmVz
dWx0UmVwb3J0ZXJUZXN0OwotCi0vLyBUZXN0cyB0aGF0IHRoZSBTY29wZWRGYWtlVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlciBvbmx5IGNhdGNoZXMgZmFpbHVyZXMgZnJvbQotLy8gdGhlIGN1cnJlbnQg
dGhyZWFkIGlmIGl0IGlzIGluc3RhbnRpYXRlZCB3aXRoIElOVEVSQ0VQVF9PTkxZX0NVUlJFTlRf
VEhSRUFELgotVEVTVF9GKFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdCwgSW50
ZXJjZXB0T25seUN1cnJlbnRUaHJlYWQpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVy
ZXMpXG4iKTsKLSAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOwotICB7Ci0gICAgU2NvcGVk
RmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIgcmVwb3J0ZXIoCi0gICAgICAgIFNjb3BlZEZha2VU
ZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpJTlRFUkNFUFRfT05MWV9DVVJSRU5UX1RIUkVBRCwKLSAg
ICAgICAgJnJlc3VsdHMpOwotICAgIEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZBVEFMX0ZBSUxV
UkUpOwotICAgIEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKE5PTkZBVEFMX0ZBSUxVUkUpOwotICB9
Ci0gIC8vIFRoZSB0d28gZmFpbHVyZXMgc2hvdWxkIG5vdCBoYXZlIGJlZW4gaW50ZXJjZXB0ZWQu
Ci0gIEVYUEVDVF9FUSgwLCByZXN1bHRzLnNpemUoKSkgPDwgIlRoaXMgc2hvdWxkbid0IGZhaWwu
IjsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCi0KLVRFU1RfRihFeHBlY3RG
YWlsdXJlVGVzdCwgRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzKSB7Ci0gIC8vIEV4cGVj
dGVkIGZhdGFsIGZhaWx1cmUsIGJ1dCBzdWNjZWVkcy4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEg
ZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhTVUND
RUVEKCksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOwotICAvLyBFeHBlY3RlZCBmYXRhbCBm
YWlsdXJlLCBidXQgZ290IGEgbm9uLWZhdGFsIGZhaWx1cmUuCi0gIHByaW50ZigiKGV4cGVjdGlu
ZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMo
QWRkRmFpbHVyZShOT05GQVRBTF9GQUlMVVJFKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwotICAvLyBXcm9uZyBt
ZXNzYWdlLgotICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9G
QVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUoRkFUQUxfRkFJTFVSRSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb21lIG90aGVyIGZhdGFsIGZh
aWx1cmUgZXhwZWN0ZWQuIik7Ci19Ci0KLVRFU1RfRihFeHBlY3RGYWlsdXJlVGVzdCwgRXhwZWN0
Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzKSB7Ci0gIC8vIEV4cGVjdGVkIG5vbi1mYXRhbCBm
YWlsdXJlLCBidXQgc3VjY2VlZHMuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4i
KTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoU1VDQ0VFRCgpLCAi
RXhwZWN0ZWQgbm9uLWZhdGFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImZhaWx1cmUuIik7Ci0gIC8vIEV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLCBidXQg
Z290IGEgZmF0YWwgZmFpbHVyZS4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIp
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlKEZB
VEFMX0ZBSUxVUkUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKLSAgLy8gV3JvbmcgbWVzc2FnZS4KLSAgcHJpbnRm
KCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9P
Tl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU29tZSBvdGhlciBub24tZmF0YWwgZmFpbHVy
ZS4iKTsKLX0KLQotCi0vLyBUd28gdGVzdCBlbnZpcm9ubWVudHMgZm9yIHRlc3RpbmcgdGVzdGlu
Zzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KCkuCi0KLWNsYXNzIEZvb0Vudmlyb25tZW50IDog
cHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgdm9pZCBT
ZXRVcCgpIHsKLSAgICBwcmludGYoIiVzIiwgIkZvb0Vudmlyb25tZW50OjpTZXRVcCgpIGNhbGxl
ZC5cbiIpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIHByaW50Zigi
JXMiLCAiRm9vRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLlxuIik7Ci0gICAgRkFJTCgp
IDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7Ci0gIH0KLX07Ci0KLWNsYXNzIEJhckVudmly
b25tZW50IDogcHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50IHsKLSBwdWJsaWM6Ci0gIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBwcmludGYoIiVzIiwgIkJhckVudmlyb25tZW50OjpTZXRV
cCgpIGNhbGxlZC5cbiIpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAg
IHByaW50ZigiJXMiLCAiQmFyRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLlxuIik7Ci0g
ICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKLSAgfQot
fTsKLQotR1RFU1RfREVGSU5FX2Jvb2xfKGludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2Fk
X2hvY190ZXN0cywgZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIlRoaXMgZmxhZyBjYXVzZXMg
dGhlIHByb2dyYW0gdG8gc2tpcCB0ZXN0IGVudmlyb25tZW50ICIKLSAgICAgICAgICAgICAgICAg
ICAidGVzdHMgYW5kIGFkIGhvYyB0ZXN0cy4iKTsKLQotLy8gVGhlIG1haW4gZnVuY3Rpb24uCi0v
LwotLy8gVGhlIGlkZWEgaXMgdG8gdXNlIEdvb2dsZSBUZXN0IHRvIHJ1biBhbGwgdGhlIHRlc3Rz
IHdlIGhhdmUgZGVmaW5lZCAoc29tZQotLy8gb2YgdGhlbSBhcmUgaW50ZW5kZWQgdG8gZmFpbCks
IGFuZCB0aGVuIGNvbXBhcmUgdGhlIHRlc3QgcmVzdWx0cwotLy8gd2l0aCB0aGUgImdvbGRlbiIg
ZmlsZS4KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotICB0ZXN0aW5nOjpHVEVT
VF9GTEFHKHByaW50X3RpbWUpID0gZmFsc2U7Ci0KLSAgLy8gV2UganVzdCBydW4gdGhlIHRlc3Rz
LCBrbm93aW5nIHNvbWUgb2YgdGhlbSBhcmUgaW50ZW5kZWQgdG8gZmFpbC4KLSAgLy8gV2Ugd2ls
bCB1c2UgYSBzZXBhcmF0ZSBQeXRob24gc2NyaXB0IHRvIGNvbXBhcmUgdGhlIG91dHB1dCBvZgot
ICAvLyB0aGlzIHByb2dyYW0gd2l0aCB0aGUgZ29sZGVuIGZpbGUuCi0KLSAgLy8gSXQncyBoYXJk
IHRvIHRlc3QgSW5pdEdvb2dsZVRlc3QoKSBkaXJlY3RseSwgYXMgaXQgaGFzIG1hbnkKLSAgLy8g
Z2xvYmFsIHNpZGUgZWZmZWN0cy4gIFRoZSBmb2xsb3dpbmcgbGluZSBzZXJ2ZXMgYXMgYSBzYW5p
dHkgdGVzdAotICAvLyBmb3IgaXQuCi0gIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBh
cmd2KTsKLSAgaWYgKGFyZ2MgPj0gMiAmJgotICAgICAgU3RyaW5nKGFyZ3ZbMV0pID09ICItLWd0
ZXN0X2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cyIpCi0gICAgR1RF
U1RfRkxBRyhpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMpID0gdHJ1
ZTsKLQotI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCi0gIGlmICh0ZXN0aW5nOjppbnRlcm5hbDo6
R1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkgIT0gIiIpIHsKLSAgICAvLyBTa2lw
IHRoZSB1c3VhbCBvdXRwdXQgY2FwdHVyaW5nIGlmIHdlJ3JlIHJ1bm5pbmcgYXMgdGhlIGNoaWxk
Ci0gICAgLy8gcHJvY2VzcyBvZiBhbiB0aHJlYWRzYWZlLXN0eWxlIGRlYXRoIHRlc3QuCi0jaWYg
R1RFU1RfT1NfV0lORE9XUwotICAgIHBvc2l4OjpGUmVvcGVuKCJudWw6IiwgInciLCBzdGRvdXQp
OwotI2Vsc2UKLSAgICBwb3NpeDo6RlJlb3BlbigiL2Rldi9udWxsIiwgInciLCBzdGRvdXQpOwot
I2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0gICAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsK
LSAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi0gIGlmIChHVEVTVF9GTEFH
KGludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cykpCi0gICAgcmV0dXJu
IFJVTl9BTExfVEVTVFMoKTsKLQotICAvLyBSZWdpc3RlcnMgdHdvIGdsb2JhbCB0ZXN0IGVudmly
b25tZW50cy4KLSAgLy8gVGhlIGdvbGRlbiBmaWxlIHZlcmlmaWVzIHRoYXQgdGhleSBhcmUgc2V0
IHVwIGluIHRoZSBvcmRlciB0aGV5Ci0gIC8vIGFyZSByZWdpc3RlcmVkLCBhbmQgdG9ybiBkb3du
IGluIHRoZSByZXZlcnNlIG9yZGVyLgotICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1l
bnQobmV3IEZvb0Vudmlyb25tZW50KTsKLSAgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25t
ZW50KG5ldyBCYXJFbnZpcm9ubWVudCk7Ci0KLSAgcmV0dXJuIFJ1bkFsbFRlc3RzKCk7Ci19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0
X2dvbGRlbl9saW4udHh0IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRw
dXRfdGVzdF9nb2xkZW5fbGluLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM2
MDQzN2FjYWE3NjQwZGZiZjNkYjI4M2NmMWQxNTAzNGMwNjIyZS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0CisrKyAvZGV2L251bGwKQEAgLTEsNjk2
ICswLDAgQEAKLVRoZSBub24tdGVzdCBwYXJ0IG9mIHRoZSBjb2RlIGlzIGV4cGVjdGVkIHRvIGhh
dmUgMiBmYWlsdXJlcy4KLQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVl
IG9mOiBmYWxzZQotICBBY3R1YWw6IGZhbHNlCi1FeHBlY3RlZDogdHJ1ZQotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiAzCi1FeHBlY3RlZDogMgotG1swOzMybVs9
PT09PT09PT09XSAbW21SdW5uaW5nIDYwIHRlc3RzIGZyb20gMjUgdGVzdCBjYXNlcy4KLRtbMDsz
Mm1bLS0tLS0tLS0tLV0gG1ttR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotRm9vRW52
aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLgotQmFyRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVk
LgotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBBRGVhdGhUZXN0Ci0bWzA7MzJt
WyBSVU4gICAgICBdIBtbbUFEZWF0aFRlc3QuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAg
IE9LIF0gG1ttQURlYXRoVGVzdC5TaG91bGRSdW5GaXJzdAotG1swOzMybVstLS0tLS0tLS0tXSAb
W20xIHRlc3QgZnJvbSBBVHlwZWREZWF0aFRlc3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbUFUeXBlZERlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0b
WzA7MzJtWyAgICAgICBPSyBdIBtbbUFUeXBlZERlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0b
WzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEFUeXBlZERlYXRoVGVzdC8xLCB3aGVy
ZSBUeXBlUGFyYW0gPSBkb3VibGUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttQVR5cGVkRGVhdGhU
ZXN0LzEuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttQVR5cGVkRGVhdGhU
ZXN0LzEuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20g
TXkvQVR5cGVQYXJhbURlYXRoVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLRtbMDszMm1b
IFJVTiAgICAgIF0gG1ttTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0b
WzA7MzJtWyAgICAgICBPSyBdIBtbbU15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMC5TaG91bGRSdW5G
aXJzdAotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBNeS9BVHlwZVBhcmFtRGVh
dGhUZXN0LzEsIHdoZXJlIFR5cGVQYXJhbSA9IGRvdWJsZQotG1swOzMybVsgUlVOICAgICAgXSAb
W21NeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAg
IE9LIF0gG1ttTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJt
Wy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBQYXNzaW5nVGVzdAotG1swOzMybVsgUlVOICAg
ICAgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDEKLRtbMDszMm1bICAgICAgIE9LIF0gG1tt
UGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QxCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVBhc3NpbmdU
ZXN0LlBhc3NpbmdUZXN0MgotG1swOzMybVsgICAgICAgT0sgXSAbW21QYXNzaW5nVGVzdC5QYXNz
aW5nVGVzdDIKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMyB0ZXN0cyBmcm9tIEZhdGFsRmFpbHVy
ZVRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1
cmVJblN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogeAotICBBY3R1YWw6
IDIKLUV4cGVjdGVkOiAxCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3Qu
RmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFp
bHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFp
bHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVy
ZQotVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQot
G1swOzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUlu
U3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgb24gZmFsc2UpCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IGZhbHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4
cGVjdGVkOiB0cnVlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuTm9u
ZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBm
cm9tIExvZ2dpbmdUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUxvZ2dpbmdUZXN0LkludGVy
bGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24gKDMp
ID49IChhW2ldKSkKLWkgPT0gMAotaSA9PSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFp
bHVyZQotRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA5Ci1pID09IDIKLWkg
PT0gMwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAoMykgPj0g
KGFbaV0pLCBhY3R1YWw6IDMgdnMgNgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Mb2dnaW5nVGVz
dC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotG1swOzMybVstLS0tLS0tLS0tXSAb
W202IHRlc3RzIGZyb20gU0NPUEVEX1RSQUNFVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21T
Q09QRURfVFJBQ0VUZXN0Lk9iZXlzU2NvcGVzCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmFpbHVyZQotRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgaGF2
ZSBhIHRyYWNlLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RXhwZWN0ZWQgdHJhY2UKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQK
LVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuCi0b
WzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMKLRtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAotKGV4cGVjdGVk
IHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IG4K
LSAgQWN0dWFsOiAxCi1FeHBlY3RlZDogMgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogaSA9IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1W
YWx1ZSBvZjogbgotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1Hb29nbGUgVGVzdCB0cmFjZToK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBpID0gMgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21T
Q09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BF
RF9UUkFDRVRlc3QuV29ya3NJblN1YnJvdXRpbmUKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMQotRXhw
ZWN0ZWQ6IDIKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4g
PSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IG4KLSAgQWN0
dWFsOiAyCi1FeHBlY3RlZDogMQotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogbiA9IDIKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5X
b3Jrc0luU3Vicm91dGluZQotG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0
LkNhbkJlTmVzdGVkCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBGYWlsdXJlCi1WYWx1ZSBvZjogbgotICBBY3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1Hb29nbGUg
VGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBuID0gMgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNh
bkJlTmVzdGVkCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVS
ZXBlYXRlZAotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFp
bHVyZQotRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFp
biB0cmFjZSBwb2ludCBBLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogQQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotVGhpcyBm
YWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSBhbmQg
Qi4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEIKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBBCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQot
RmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFj
ZSBwb2ludCBBLCBCLCBhbmQgQy4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IEMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBCCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogQQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotVGhp
cyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSwg
QiwgYW5kIEQuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBE
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEEK
LRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZVJlcGVhdGVkCi0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NDb25jdXJyZW50bHkK
LShleHBlY3RpbmcgNiBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEgKGluIHRocmVhZCBCLCBvbmx5IHRyYWNlIEIg
YWxpdmUpLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogVHJh
Y2UgQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQg
ZmFpbHVyZSAjMiAoaW4gdGhyZWFkIEEsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLgotR29vZ2xl
IFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogVHJhY2UgQQotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMyAoaW4g
dGhyZWFkIEIsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogVHJhY2UgQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjNCAoaW4gdGhyZWFkIEIsIG9ubHkg
dHJhY2UgQSBhbGl2ZSkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVk
Ci1FeHBlY3RlZCBmYWlsdXJlICM1IChpbiB0aHJlYWQgQSwgb25seSB0cmFjZSBBIGFsaXZlKS4K
LUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFRyYWNlIEEKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUg
IzYgKGluIHRocmVhZCBBLCBubyB0cmFjZSBhbGl2ZSkuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtb
bVNDT1BFRF9UUkFDRVRlc3QuV29ya3NDb25jdXJyZW50bHkKLRtbMDszMm1bLS0tLS0tLS0tLV0g
G1ttMSB0ZXN0IGZyb20gTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0Ci0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9y
VGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotKGV4cGVjdGluZyA1IGZhaWx1cmVzKQotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwg
aW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWls
dXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFNldFVwKCkuCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0
aGUgdGVzdCBib2R5LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAot
RXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gVGVhckRvd24uCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICM1LCBpbiB0aGUgdGVzdCBmaXh0
dXJlIGQndG9yLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJbkZpeHR1
cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKLRtbMDszMm1bLS0tLS0tLS0t
LV0gG1ttMSB0ZXN0IGZyb20gRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0Ci0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVz
dC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotKGV4cGVjdGluZyAyIGZhaWx1cmVzKQotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4g
dGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3Iu
Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9y
VGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3Qg
ZnJvbSBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21O
b25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotKGV4cGVjdGluZyA0IGZh
aWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0
ZWQgZmFpbHVyZSAjMSwgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWls
dXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVy
ZSAjMywgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1G
YWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi0b
WzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJ
blNldFVwCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEZhdGFsRmFpbHVyZUlu
U2V0VXBUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZUluU2V0VXBUZXN0
LkZhaWx1cmVJblNldFVwCi0oZXhwZWN0aW5nIDMgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgp
LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFp
bHVyZSAjMiwgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3Iu
Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJ
blNldFVwCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTQgdGVzdHMgZnJvbSBNaXhlZFVwVGVzdENh
c2VUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuRmlyc3RU
ZXN0RnJvbU5hbWVzcGFjZUZvbwotG1swOzMybVsgICAgICAgT0sgXSAbW21NaXhlZFVwVGVzdENh
c2VUZXN0LkZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28KLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
TWl4ZWRVcFRlc3RDYXNlVGVzdC5TZWNvbmRUZXN0RnJvbU5hbWVzcGFjZUZvbwotG1swOzMybVsg
ICAgICAgT0sgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlNlY29uZFRlc3RGcm9tTmFtZXNwYWNl
Rm9vCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3Vs
ZEZhaWwKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1l
IHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAgSG93ZXZl
ciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0IEZp
cnN0VGVzdEZyb21OYW1lc3BhY2VGb28gYW5kIHRlc3QgVGhpc1Nob3VsZEZhaWwKLXVzaW5nIHR3
byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKLXRo
ZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlv
bgotdW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVu
YW1lIG9uZQotb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0
ZXN0IGNhc2VzLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRo
aXNTaG91bGRGYWlsCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3Qu
VGhpc1Nob3VsZEZhaWxUb28KLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotQWxsIHRlc3Rz
IGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNs
YXNzLiAgSG93ZXZlciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVRlc3QsCi15b3UgZGVm
aW5lZCB0ZXN0IEZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28gYW5kIHRlc3QgVGhpc1Nob3VsZEZh
aWxUb28KLXVzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNh
biBoYXBwZW4gaWYKLXRoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNl
cyBvciB0cmFuc2xhdGlvbgotdW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91
bGQgcHJvYmFibHkgcmVuYW1lIG9uZQotb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBp
bnRvIGRpZmZlcmVudCB0ZXN0IGNhc2VzLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVw
VGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIg
dGVzdHMgZnJvbSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdAotG1swOzMybVsg
UlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNv
bmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotG1swOzMybVsgICAgICAgT0sgXSAbW21NaXhl
ZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1l
U2hvdWxkRmFpbAotG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2Ft
ZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotZ3Rlc3Qu
Y2M6IzogRmFpbHVyZQotRmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11
c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNh
c2UgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0
IFRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsIGFuZCB0ZXN0IFRoZVNlY29uZFRl
c3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCi11c2luZyB0d28gZGlmZmVyZW50IHRlc3QgZml4dHVy
ZSBjbGFzc2VzLiAgVGhpcyBjYW4gaGFwcGVuIGlmCi10aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20g
ZGlmZmVyZW50IG5hbWVzcGFjZXMgb3IgdHJhbnNsYXRpb24KLXVuaXRzIGFuZCBoYXZlIHRoZSBz
YW1lIG5hbWUuICBZb3Ugc2hvdWxkIHByb2JhYmx5IHJlbmFtZSBvbmUKLW9mIHRoZSBjbGFzc2Vz
IHRvIHB1dCB0aGUgdGVzdHMgaW50byBkaWZmZXJlbnQgdGVzdCBjYXNlcy4KLRtbMDszMW1bICBG
QUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25k
VGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0
cyBmcm9tIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZQotG1swOzMybVsgUlVO
ICAgICAgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVz
aW5nVEVTVF9GCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9z
YW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0YKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
VEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RBbmRT
aG91bGRGYWlsCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUg
c2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcywgc28g
bWl4aW5nIFRFU1RfRiBhbmQgVEVTVCBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgaXMKLWlsbGVnYWwu
ICBJbiB0ZXN0IGNhc2UgVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLAotdGVz
dCBEZWZpbmVkVXNpbmdURVNUX0YgaXMgZGVmaW5lZCB1c2luZyBURVNUX0YgYnV0Ci10ZXN0IERl
ZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsIGlzIGRlZmluZWQgdXNpbmcgVEVTVC4gIFlvdSBw
cm9iYWJseQotd2FudCB0byBjaGFuZ2UgdGhlIFRFU1QgdG8gVEVTVF9GIG9yIG1vdmUgaXQgdG8g
YW5vdGhlciB0ZXN0Ci1jYXNlLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21URVNUX0ZfYmVmb3Jl
X1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwKLRtb
MDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9z
YW1lX3Rlc3RfY2FzZQotG1swOzMybVsgUlVOICAgICAgXSAbW21URVNUX2JlZm9yZV9URVNUX0Zf
aW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVAotG1swOzMybVsgICAgICAgT0sgXSAb
W21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVAot
G1swOzMybVsgUlVOICAgICAgXSAbW21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nh
c2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogRmFpbHVyZQot
RmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1l
IHRlc3QgZml4dHVyZQotY2xhc3MsIHNvIG1peGluZyBURVNUX0YgYW5kIFRFU1QgaW4gdGhlIHNh
bWUgdGVzdCBjYXNlIGlzCi1pbGxlZ2FsLiAgSW4gdGVzdCBjYXNlIFRFU1RfYmVmb3JlX1RFU1Rf
Rl9pbl9zYW1lX3Rlc3RfY2FzZSwKLXRlc3QgRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFp
bCBpcyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKLXRlc3QgRGVmaW5lZFVzaW5nVEVTVCBpcyBk
ZWZpbmVkIHVzaW5nIFRFU1QuICBZb3UgcHJvYmFibHkKLXdhbnQgdG8gY2hhbmdlIHRoZSBURVNU
IHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRvIGFub3RoZXIgdGVzdAotY2FzZS4KLRtbMDszMW1bICBG
QUlMRUQgIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRV
c2luZ1RFU1RfRkFuZFNob3VsZEZhaWwKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttOCB0ZXN0cyBm
cm9tIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLRtbMDsz
Mm1bICAgICAgIE9LIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VH
bG9iYWxWYXJpYWJsZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWls
dXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFZhcmlhYmxlcwotG1swOzMybVsgICAgICAgT0sgXSAb
W21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVzCi0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNX
aGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1
cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWls
c1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rl
c3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFs
OiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVy
ZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJlCi0bWzA7MzJtWyBSVU4gICAg
ICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25m
YXRhbEZhaWx1cmVzCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUK
LUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMiBmYWlsdXJlcwotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3Rl
ZCBub24tZmF0YWwgZmFpbHVyZSAxLgotCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZh
dGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDIuCi0KLRtb
MDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5U
aGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi0oZXhw
ZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1m
YXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBm
YWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZh
dGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVU
ZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rl
c3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFs
OiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVy
ZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotG1swOzMybVsgUlVOICAgICAgXSAbW21F
eHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotKGV4cGVj
dGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0
YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1tt
RXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLRtbMDsz
Mm1bLS0tLS0tLS0tLV0gG1ttOCB0ZXN0cyBmcm9tIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QKLRtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VH
bG9iYWxWYXJpYWJsZXMKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
RXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFN0YXRpY1ZhcmlhYmxlcwot
G1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5j
ZUxvY2FsU3RhdGljVmFyaWFibGVzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFs
RmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotG1swOzMybVsg
ICAgICAgT0sgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNP
bmVGYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJl
KQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1
YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAgIF0g
G1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVy
ZXMKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6
IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDIgZmFpbHVyZXMKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgot
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0
ZWQgZmF0YWwgZmFpbHVyZS4KLQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0YWxGYWlsdXJlcwotG1swOzMybVsgUlVO
ICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVOb25m
YXRhbEZhaWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQot
RXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWls
dXJlLgotCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFp
bHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAgICAgXSAbW21F
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLShleHBlY3Rp
bmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFp
bHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi0bWzA7MzJtWyBSVU4g
ICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dz
Ci0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAx
IGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBd
IBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi0bWzA7
MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBUeXBlZFRlc3QvMCwgd2hlcmUgVHlwZVBh
cmFtID0gaW50Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVR5cGVkVGVzdC8wLlN1Y2Nlc3MKLRtb
MDszMm1bICAgICAgIE9LIF0gG1ttVHlwZWRUZXN0LzAuU3VjY2VzcwotG1swOzMybVsgUlVOICAg
ICAgXSAbW21UeXBlZFRlc3QvMC5GYWlsdXJlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFp
bHVyZQotVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogMAotRXhwZWN0ZWQ6IDEKLUV4
cGVjdGVkIGZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVHlwZWRUZXN0LzAuRmFpbHVy
ZQotG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVW5zaWduZWQvVHlwZWRUZXN0
UC8wLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBjaGFyCi0bWzA7MzJtWyBSVU4gICAgICBd
IBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5TdWNjZXNzCi0bWzA7MzJtWyAgICAgICBPSyBdIBtb
bVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5TdWNjZXNzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVVu
c2lnbmVkL1R5cGVkVGVzdFAvMC5GYWlsdXJlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFp
bHVyZQotVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogXDAKLUV4cGVjdGVkOiAxVQot
V2hpY2ggaXM6IDEKLUV4cGVjdGVkIGZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5z
aWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0
cyBmcm9tIFVuc2lnbmVkL1R5cGVkVGVzdFAvMSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQg
aW50Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNz
Ci0bWzA7MzJtWyAgICAgICBPSyBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNzCi0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFj
dHVhbDogMAotRXhwZWN0ZWQ6IDFVCi1XaGljaCBpczogMQotRXhwZWN0ZWQgZmFpbHVyZQotG1sw
OzMxbVsgIEZBSUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFpbHVyZQotG1swOzMy
bVstLS0tLS0tLS0tXSAbW200IHRlc3RzIGZyb20gRXhwZWN0RmFpbHVyZVRlc3QKLRtbMDszMm1b
IFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCi0oZXhw
ZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFs
IGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1T
dWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1F
eHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUuCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0
ZWQ6IDEgZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIGZhdGFsIGZhaWx1cmUg
ZXhwZWN0ZWQuIgotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFp
bHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJV
TiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0oZXhw
ZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1m
YXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBTdWNjZXNz
OgotU3VjY2VlZGVkCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVy
ZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1
cmUuCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0
ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBub24tZmF0YWwg
ZmFpbHVyZS4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwg
ZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVy
ZU9uQWxsVGhyZWFkcwotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJl
Ci1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBTdWNjZXNzOgotU3VjY2VlZGVkCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rl
c3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVj
dGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNj
OiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBv
dGhlciBmYXRhbCBmYWlsdXJlIGV4cGVjdGVkLiIKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUu
Ci0KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxG
YWlsdXJlT25BbGxUaHJlYWRzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVU
ZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotKGV4cGVjdGluZyAxIGZhaWx1
cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQot
ICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2NlZWRlZAot
Ci0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAx
IG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBG
YXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0
aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRh
bCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1cmUuIgotICBB
Y3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWls
ZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtb
bUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotG1sw
OzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRz
VGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0
LkV4cGVjdEZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyAyIGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLWd0
ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAw
IGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFk
c1Rlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZh
aWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIDIg
ZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBl
Y3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAx
IG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVy
ZQotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBTY29wZWRGYWtlVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlclRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttU2NvcGVkRmFrZVRlc3RQ
YXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCi0oZXhwZWN0
aW5nIDIgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVk
Ci1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1
cmUKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0bWzA7MzFtWyAgRkFJTEVE
ICBdIBtbbVNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdC5JbnRlcmNlcHRPbmx5
Q3VycmVudFRocmVhZAotG1swOzMybVstLS0tLS0tLS0tXSAbW21HbG9iYWwgdGVzdCBlbnZpcm9u
bWVudCB0ZWFyLWRvd24KLUJhckVudmlyb25tZW50OjpUZWFyRG93bigpIGNhbGxlZC4KLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBm
YWlsdXJlLgotRm9vRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLRtb
MDszMm1bPT09PT09PT09PV0gG1ttNjAgdGVzdHMgZnJvbSAyNSB0ZXN0IGNhc2VzIHJhbi4KLRtb
MDszMm1bICBQQVNTRUQgIF0gG1ttMjEgdGVzdHMuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbTM5
IHRlc3RzLCBsaXN0ZWQgYmVsb3c6Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVy
ZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZh
dGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi0bWzA7MzFtWyAg
RkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5l
Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUxvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdB
bmRBc3NlcnRpb25zCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuT2Jl
eXNTY29wZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0lu
TG9vcAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5TdWJy
b3V0aW5lCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0
ZWQKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZVJlcGVhdGVk
Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NDb25jdXJyZW50
bHkKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3Ry
dWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZh
dGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3Rvcgot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJl
SW5TZXRVcAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5G
YWlsdXJlSW5TZXRVcAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0
LlRoaXNTaG91bGRGYWlsCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRl
c3QuVGhpc1Nob3VsZEZhaWxUb28KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RD
YXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZh
aWwKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVz
dF9jYXNlLkRlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsCi0bWzA7MzFtWyAgRkFJTEVEICBd
IBtbbVRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNU
X0ZBbmRTaG91bGRGYWlsCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFp
bHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29O
b25mYXRhbEZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFp
bHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVy
bnMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWls
c1doZW5TdGF0ZW1lbnRUaHJvd3MKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlM
RUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFs
RmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5G
YWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtb
bUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVu
dFRocm93cwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21UeXBlZFRlc3QvMC5GYWlsdXJlLCB3aGVy
ZSBUeXBlUGFyYW0gPSBpbnQKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRU
ZXN0UC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUsIHdoZXJlIFR5cGVQ
YXJhbSA9IHVuc2lnbmVkIGludAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJl
VGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFp
bHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4
cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFs
bFRocmVhZHMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRz
VGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFp
bHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlM
RUQgIF0gG1ttU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9u
bHlDdXJyZW50VGhyZWFkCi0KLTM5IEZBSUxFRCBURVNUUwotG1swOzMzbSAgWU9VIEhBVkUgMSBE
SVNBQkxFRCBURVNUCi0KLRtbbU5vdGU6IEdvb2dsZSBUZXN0IGZpbHRlciA9IEZhdGFsRmFpbHVy
ZVRlc3QuKjpMb2dnaW5nVGVzdC4qCi1bPT09PT09PT09PV0gUnVubmluZyA0IHRlc3RzIGZyb20g
MiB0ZXN0IGNhc2VzLgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11
cC4KLVstLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdAotWyBSVU4gICAg
ICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5n
IGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmFpbHVyZQotVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQotWyAgRkFJTEVE
ICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lICg/IG1zKQotWyBS
VU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5l
Ci0oZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDog
MQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJy
b3V0aW5lICg/IG1zKQotWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWls
dXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiBmYWxzZSkKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogZmFsc2UKLSAgQWN0dWFsOiBmYWxz
ZQotRXhwZWN0ZWQ6IHRydWUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFs
RmFpbHVyZUluU3Vicm91dGluZSAoPyBtcykKLVstLS0tLS0tLS0tXSAzIHRlc3RzIGZyb20gRmF0
YWxGYWlsdXJlVGVzdCAoPyBtcyB0b3RhbCkKLQotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExv
Z2dpbmdUZXN0Ci1bIFJVTiAgICAgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0Fu
ZEFzc2VydGlvbnMKLShleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKQotaSA9
PSAwCi1pID09IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDog
KDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDkKLWkgPT0gMgotaSA9PSAzCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDog
MyB2cyA2Ci1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFz
c2VydGlvbnMgKD8gbXMpCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTG9nZ2luZ1Rlc3QgKD8g
bXMgdG90YWwpCi0KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRv
d24KLVs9PT09PT09PT09XSA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2VzIHJhbi4gKD8gbXMgdG90
YWwpCi1bICBQQVNTRUQgIF0gMCB0ZXN0cy4KLVsgIEZBSUxFRCAgXSA0IHRlc3RzLCBsaXN0ZWQg
YmVsb3c6Ci1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJv
dXRpbmUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVk
U3Vicm91dGluZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJl
SW5TdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2lu
Z0FuZEFzc2VydGlvbnMKLQotIDQgRkFJTEVEIFRFU1RTCi0gIFlPVSBIQVZFIDEgRElTQUJMRUQg
VEVTVAotCi1Ob3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSAqRElTQUJMRURfKgotWz09PT09PT09
PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0tLS0tLS0tLV0gR2xvYmFs
IHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIERpc2Fi
bGVkVGVzdHNXYXJuaW5nVGVzdAotWyBSVU4gICAgICBdIERpc2FibGVkVGVzdHNXYXJuaW5nVGVz
dC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2FybmluZwotWyAg
ICAgICBPSyBdIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJs
ZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2FybmluZwotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVu
dmlyb25tZW50IHRlYXItZG93bgotWz09PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNl
IHJhbi4KLVsgIFBBU1NFRCAgXSAxIHRlc3QuCi1Ob3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSBQ
YXNzaW5nVGVzdC4qCi1Ob3RlOiBUaGlzIGlzIHRlc3Qgc2hhcmQgMSBvZiAyLgotWz09PT09PT09
PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0tLS0tLS0tLV0gR2xvYmFs
IHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIFBhc3Np
bmdUZXN0Ci1bIFJVTiAgICAgIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi1bICAgICAgIE9L
IF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52
aXJvbm1lbnQgdGVhci1kb3duCi1bPT09PT09PT09PV0gMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2Ug
cmFuLgotWyAgUEFTU0VEICBdIDEgdGVzdC4KLQotICBZT1UgSEFWRSAxIERJU0FCTEVEIFRFU1QK
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9vdXRwdXRf
dGVzdF9nb2xkZW5fd2luLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
b3V0cHV0X3Rlc3RfZ29sZGVuX3dpbi50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDMxM2MzYWFmYzMxZjVmMTAwNWM3NzQyODNlMDBiZGIwOWRlODFmNjkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fd2luLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDYwNSArMCwwIEBACi1UaGUgbm9uLXRlc3QgcGFydCBvZiB0aGUgY29kZSBpcyBleHBlY3RlZCB0
byBoYXZlIDIgZmFpbHVyZXMuCi0KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFs
dWUgb2Y6IGZhbHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4cGVjdGVkOiB0cnVlCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiAzCi1FeHBlY3RlZDogMgotWz09PT09PT09
PT1dIFJ1bm5pbmcgNjEgdGVzdHMgZnJvbSAyNyB0ZXN0IGNhc2VzLgotWy0tLS0tLS0tLS1dIEds
b2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KLUZvb0Vudmlyb25tZW50OjpTZXRVcCgpIGNh
bGxlZC4KLUJhckVudmlyb25tZW50OjpTZXRVcCgpIGNhbGxlZC4KLVstLS0tLS0tLS0tXSAxIHRl
c3QgZnJvbSBBRGVhdGhUZXN0Ci1bIFJVTiAgICAgIF0gQURlYXRoVGVzdC5TaG91bGRSdW5GaXJz
dAotWyAgICAgICBPSyBdIEFEZWF0aFRlc3QuU2hvdWxkUnVuRmlyc3QKLVstLS0tLS0tLS0tXSAx
IHRlc3QgZnJvbSBBVHlwZWREZWF0aFRlc3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci1bIFJV
TiAgICAgIF0gQVR5cGVkRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLVsgICAgICAgT0sgXSBB
VHlwZWREZWF0aFRlc3QvMC5TaG91bGRSdW5GaXJzdAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9t
IEFUeXBlZERlYXRoVGVzdC8xLCB3aGVyZSBUeXBlUGFyYW0gPSBkb3VibGUKLVsgUlVOICAgICAg
XSBBVHlwZWREZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAotWyAgICAgICBPSyBdIEFUeXBlZERl
YXRoVGVzdC8xLlNob3VsZFJ1bkZpcnN0Ci1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTXkvQVR5
cGVQYXJhbURlYXRoVGVzdC8wLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLVsgUlVOICAgICAgXSBN
eS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLVsgICAgICAgT0sgXSBNeS9B
VHlwZVBhcmFtRGVhdGhUZXN0LzAuU2hvdWxkUnVuRmlyc3QKLVstLS0tLS0tLS0tXSAxIHRlc3Qg
ZnJvbSBNeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEsIHdoZXJlIFR5cGVQYXJhbSA9IGRvdWJsZQot
WyBSVU4gICAgICBdIE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAotWyAg
ICAgICBPSyBdIE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAotWy0tLS0t
LS0tLS1dIDIgdGVzdHMgZnJvbSBQYXNzaW5nVGVzdAotWyBSVU4gICAgICBdIFBhc3NpbmdUZXN0
LlBhc3NpbmdUZXN0MQotWyAgICAgICBPSyBdIFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MQotWyBS
VU4gICAgICBdIFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgotWyAgICAgICBPSyBdIFBhc3NpbmdU
ZXN0LlBhc3NpbmdUZXN0MgotWy0tLS0tLS0tLS1dIDMgdGVzdHMgZnJvbSBGYXRhbEZhaWx1cmVU
ZXN0Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRp
bmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDog
MQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5l
Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJv
dXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSkKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IHgKLSAgQWN0dWFsOiAyCi1FeHBlY3Rl
ZDogMQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRT
dWJyb3V0aW5lCi1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJ
blN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIG9uIGZhbHNlKQotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogZmFsc2UKLSAgQWN0dWFsOiBmYWxzZQotRXhw
ZWN0ZWQ6IHRydWUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVy
ZUluU3Vicm91dGluZQotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIExvZ2dpbmdUZXN0Ci1bIFJV
TiAgICAgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLShl
eHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKQotaSA9PSAwCi1pID09IDEKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFj
dHVhbDogMyB2cyA5Ci1pID09IDIKLWkgPT0gMwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVy
cm9yOiBFeHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDYKLVsgIEZBSUxFRCAg
XSBMb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotWy0tLS0tLS0t
LS1dIDUgdGVzdHMgZnJvbSBTQ09QRURfVFJBQ0VUZXN0Ci1bIFJVTiAgICAgIF0gU0NPUEVEX1RS
QUNFVGVzdC5PYmV5c1Njb3BlcwotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogZXJyb3I6IEZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hv
dWxkbid0IGhhdmUgYSB0cmFjZS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFp
bGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgaGF2ZSBhIHRyYWNlLgot
R29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRXhwZWN0ZWQgdHJh
Y2UKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1UaGlzIGZhaWx1cmUg
aXMgZXhwZWN0ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNlLgotWyAgRkFJTEVEICBdIFND
T1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMKLVsgUlVOICAgICAgXSBTQ09QRURfVFJBQ0VUZXN0
LldvcmtzSW5Mb29wCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAxCi1FeHBlY3RlZDogMgotR29vZ2xlIFRl
c3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogaSA9IDEKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IG4KLSAgQWN0dWFsOiAyCi1FeHBlY3RlZDogMQot
R29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogaSA9IDIKLVsgIEZB
SUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCi1bIFJVTiAgICAgIF0gU0NPUEVE
X1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGluZQotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBuCi0gIEFjdHVhbDogMQotRXhwZWN0
ZWQ6IDIKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4gPSAx
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBuCi0gIEFjdHVhbDog
MgotRXhwZWN0ZWQ6IDEKLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IG4gPSAyCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGlu
ZQotWyBSVU4gICAgICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLShleHBlY3RlZCB0
byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogbgotICBB
Y3R1YWw6IDIKLUV4cGVjdGVkOiAxCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBuID0gMgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IAotWyAgRkFJTEVEICBd
IFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLVsgUlVOICAgICAgXSBTQ09QRURfVFJBQ0VU
ZXN0LkNhbkJlUmVwZWF0ZWQKLShleHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjOiM6IGVycm9yOiBGYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3Vs
ZCBjb250YWluIHRyYWNlIHBvaW50IEEuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBBCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAot
VGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQg
QSBhbmQgQi4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEIK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBBCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJy
b3I6IEZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4g
dHJhY2UgcG9pbnQgQSwgQiwgYW5kIEMuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBDCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1U
aGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBB
LCBCLCBhbmQgRC4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IEQKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBCCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
QQotWyAgRkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVSZXBlYXRlZAotWy0tLS0tLS0t
LS1dIDEgdGVzdCBmcm9tIE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdAot
WyBSVU4gICAgICBdIE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWls
dXJlSW5Db25zdHJ1Y3RvcgotKGV4cGVjdGluZyA1IGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0
IGZpeHR1cmUgYyd0b3IuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAot
RXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBib2R5Lgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUg
IzQsIGluIFRlYXJEb3duLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQK
LUV4cGVjdGVkIGZhaWx1cmUgIzUsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi1bICBGQUlM
RUQgIF0gTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJbkNv
bnN0cnVjdG9yCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gRmF0YWxGYWlsdXJlSW5GaXh0dXJl
Q29uc3RydWN0b3JUZXN0Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3Ry
dWN0b3JUZXN0LkZhaWx1cmVJbkNvbnN0cnVjdG9yCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMpCi1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAj
MSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBl
cnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQn
dG9yLgotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5G
YWlsdXJlSW5Db25zdHJ1Y3RvcgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIE5vbkZhdGFsRmFp
bHVyZUluU2V0VXBUZXN0Ci1bIFJVTiAgICAgIF0gTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3Qu
RmFpbHVyZUluU2V0VXAKLShleHBlY3RpbmcgNCBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUg
IzIsIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9y
OiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIFRlYXJEb3duKCkuCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gdGhl
IHRlc3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAgXSBOb25GYXRhbEZhaWx1cmVJblNldFVw
VGVzdC5GYWlsdXJlSW5TZXRVcAotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIEZhdGFsRmFpbHVy
ZUluU2V0VXBUZXN0Ci1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVy
ZUluU2V0VXAKLShleHBlY3RpbmcgMyBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMxLCBpbiBTZXRVcCgpLgotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGlu
IFRlYXJEb3duKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogZXJyb3I6IEZhaWxlZAotRXhw
ZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLVsgIEZBSUxFRCAg
XSBGYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotWy0tLS0tLS0tLS1dIDEg
dGVzdCBmcm9tIEV4Y2VwdGlvbkluRml4dHVyZUN0b3JUZXN0Ci1bIFJVTiAgICAgIF0gRXhjZXB0
aW9uSW5GaXh0dXJlQ3RvclRlc3QuRXhjZXB0aW9uSW5GaXh0dXJlQ3RvcgotKGV4cGVjdGluZyBh
IGZhaWx1cmUgb24gdGhyb3duIGV4Y2VwdGlvbiBpbiB0aGUgdGVzdCBmaXh0dXJlJ3MgY29uc3Ry
dWN0b3IpCi11bmtub3duIGZpbGU6IGVycm9yOiBFeGNlcHRpb24gdGhyb3duIHdpdGggY29kZSAw
eGMwMDAwMDA1IGluIHRoZSB0ZXN0IGZpeHR1cmUncyBjb25zdHJ1Y3Rvci4KLVstLS0tLS0tLS0t
XSAxIHRlc3QgZnJvbSBFeGNlcHRpb25JblNldFVwVGVzdAotWyBSVU4gICAgICBdIEV4Y2VwdGlv
bkluU2V0VXBUZXN0LkV4Y2VwdGlvbkluU2V0VXAKLShleHBlY3RpbmcgMyBmYWlsdXJlcykKLXVu
a25vd24gZmlsZTogZXJyb3I6IEV4Y2VwdGlvbiB0aHJvd24gd2l0aCBjb2RlIDB4YzAwMDAwMDUg
aW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBl
Y3RlZCBmYWlsdXJlICMyLCBpbiBUZWFyRG93bigpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IGVycm9yOiBGYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRoZSB0ZXN0IGZpeHR1cmUg
ZCd0b3IuCi1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5TZXRVcFRlc3QuRXhjZXB0aW9uSW5TZXRV
cAotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QK
LVsgUlVOICAgICAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QuU0VICi0oZXhwZWN0aW5n
IDMgZmFpbHVyZXMpCi11bmtub3duIGZpbGU6IGVycm9yOiBFeGNlcHRpb24gdGhyb3duIHdpdGgg
Y29kZSAweGMwMDAwMDA1IGluIHRoZSB0ZXN0IGJvZHkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4KLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICMz
LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIEV4Y2VwdGlvbkluVGVz
dEZ1bmN0aW9uVGVzdC5TRUgKLVsgUlVOICAgICAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRl
c3QuQ3BwRXhjZXB0aW9uCi11bmtub3duIGZpbGU6IGVycm9yOiBFeGNlcHRpb24gdGhyb3duIHdp
dGggY29kZSAweGUwNmQ3MzYzIGluIHRoZSB0ZXN0IGJvZHkuCi1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogZXJyb3I6IEZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4K
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJl
ICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIEV4Y2VwdGlvbklu
VGVzdEZ1bmN0aW9uVGVzdC5DcHBFeGNlcHRpb24KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBF
eGNlcHRpb25JblRlYXJEb3duVGVzdAotWyBSVU4gICAgICBdIEV4Y2VwdGlvbkluVGVhckRvd25U
ZXN0LkV4Y2VwdGlvbkluVGVhckRvd24KLShleHBlY3RpbmcgMiBmYWlsdXJlcykKLXVua25vd24g
ZmlsZTogZXJyb3I6IEV4Y2VwdGlvbiB0aHJvd24gd2l0aCBjb2RlIDB4ZTA2ZDczNjMgaW4gVGVh
ckRvd24oKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRmFpbGVkCi1FeHBlY3Rl
ZCBmYWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotWyAgRkFJTEVEICBdIEV4
Y2VwdGlvbkluVGVhckRvd25UZXN0LkV4Y2VwdGlvbkluVGVhckRvd24KLVstLS0tLS0tLS0tXSA0
IHRlc3RzIGZyb20gTWl4ZWRVcFRlc3RDYXNlVGVzdAotWyBSVU4gICAgICBdIE1peGVkVXBUZXN0
Q2FzZVRlc3QuRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbwotWyAgICAgICBPSyBdIE1peGVkVXBU
ZXN0Q2FzZVRlc3QuRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbwotWyBSVU4gICAgICBdIE1peGVk
VXBUZXN0Q2FzZVRlc3QuU2Vjb25kVGVzdEZyb21OYW1lc3BhY2VGb28KLVsgICAgICAgT0sgXSBN
aXhlZFVwVGVzdENhc2VUZXN0LlNlY29uZFRlc3RGcm9tTmFtZXNwYWNlRm9vCi1bIFJVTiAgICAg
IF0gTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogZXJyb3I6
IEZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2Ft
ZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAgSG93ZXZlciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0
Q2FzZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0IEZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28gYW5k
IHRlc3QgVGhpc1Nob3VsZEZhaWwKLXVzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNs
YXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKLXRoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZm
ZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlvbgotdW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUg
bmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVuYW1lIG9uZQotb2YgdGhlIGNsYXNzZXMgdG8g
cHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0ZXN0IGNhc2VzLgotWyAgRkFJTEVEICBdIE1p
eGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwKLVsgUlVOICAgICAgXSBNaXhlZFVwVGVz
dENhc2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCi1ndGVzdC5jYzojOiBlcnJvcjogRmFpbGVkCi1B
bGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4
dHVyZQotY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlVGVzdCwK
LXlvdSBkZWZpbmVkIHRlc3QgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbyBhbmQgdGVzdCBUaGlz
U2hvdWxkRmFpbFRvbwotdXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4g
IFRoaXMgY2FuIGhhcHBlbiBpZgotdGhlIHR3byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVudCBu
YW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCi11bml0cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAg
WW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25lCi1vZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhl
IHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMuCi1bICBGQUlMRUQgIF0gTWl4ZWRVcFRl
c3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbFRvbwotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBN
aXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdAotWyBSVU4gICAgICBdIE1peGVkVXBU
ZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91
bGRGYWlsCi1bICAgICAgIE9LIF0gTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3Qu
VGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLVsgUlVOICAgICAgXSBNaXhlZFVw
VGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hv
dWxkRmFpbAotZ3Rlc3QuY2M6IzogZXJyb3I6IEZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1l
IHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAgSG93ZXZl
ciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LAoteW91
IGRlZmluZWQgdGVzdCBUaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbCBhbmQgdGVz
dCBUaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotdXNpbmcgdHdvIGRpZmZlcmVu
dCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBlbiBpZgotdGhlIHR3byBjbGFz
c2VzIGFyZSBmcm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCi11bml0cyBh
bmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAgWW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25lCi1v
ZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMu
Ci1bICBGQUlMRUQgIF0gTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vj
b25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLVstLS0tLS0tLS0tXSAyIHRlc3RzIGZyb20g
VEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlCi1bIFJVTiAgICAgIF0gVEVTVF9G
X2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRgotWyAgICAg
ICBPSyBdIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdU
RVNUX0YKLVsgUlVOICAgICAgXSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2Uu
RGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwKLWd0ZXN0LmNjOiM6IGVycm9yOiBGYWlsZWQK
LUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBm
aXh0dXJlCi1jbGFzcywgc28gbWl4aW5nIFRFU1RfRiBhbmQgVEVTVCBpbiB0aGUgc2FtZSB0ZXN0
IGNhc2UgaXMKLWlsbGVnYWwuICBJbiB0ZXN0IGNhc2UgVEVTVF9GX2JlZm9yZV9URVNUX2luX3Nh
bWVfdGVzdF9jYXNlLAotdGVzdCBEZWZpbmVkVXNpbmdURVNUX0YgaXMgZGVmaW5lZCB1c2luZyBU
RVNUX0YgYnV0Ci10ZXN0IERlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsIGlzIGRlZmluZWQg
dXNpbmcgVEVTVC4gIFlvdSBwcm9iYWJseQotd2FudCB0byBjaGFuZ2UgdGhlIFRFU1QgdG8gVEVT
VF9GIG9yIG1vdmUgaXQgdG8gYW5vdGhlciB0ZXN0Ci1jYXNlLgotWyAgRkFJTEVEICBdIFRFU1Rf
Rl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUQW5kU2hvdWxk
RmFpbAotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2Ft
ZV90ZXN0X2Nhc2UKLVsgUlVOICAgICAgXSBURVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0
X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVAotWyAgICAgICBPSyBdIFRFU1RfYmVmb3JlX1RFU1RfRl9p
bl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUCi1bIFJVTiAgICAgIF0gVEVTVF9iZWZv
cmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZh
aWwKLWd0ZXN0LmNjOiM6IGVycm9yOiBGYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0
IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcywgc28gbWl4aW5nIFRF
U1RfRiBhbmQgVEVTVCBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgaXMKLWlsbGVnYWwuICBJbiB0ZXN0
IGNhc2UgVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLAotdGVzdCBEZWZpbmVk
VXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsIGlzIGRlZmluZWQgdXNpbmcgVEVTVF9GIGJ1dAotdGVz
dCBEZWZpbmVkVXNpbmdURVNUIGlzIGRlZmluZWQgdXNpbmcgVEVTVC4gIFlvdSBwcm9iYWJseQot
d2FudCB0byBjaGFuZ2UgdGhlIFRFU1QgdG8gVEVTVF9GIG9yIG1vdmUgaXQgdG8gYW5vdGhlciB0
ZXN0Ci1jYXNlLgotWyAgRkFJTEVEICBdIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3Rf
Y2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsCi1bLS0tLS0tLS0tLV0gOCB0ZXN0
cyBmcm9tIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QKLVsgUlVOICAgICAgXSBFeHBlY3ROb25m
YXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotWyAgICAgICBPSyBd
IEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFyaWFibGVzCi1b
IFJVTiAgICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFZh
cmlhYmxlcwotWyAgICAgICBPSyBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJl
bmNlTG9jYWxWYXJpYWJsZXMKLVsgUlVOICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKLVsgICAgICAgT0sgXSBFeHBl
Y3ROb25mYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1
cmUKLVsgUlVOICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJl
SXNOb05vbmZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBl
cnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVz
Ci1bICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlz
Tm9Ob25mYXRhbEZhaWx1cmUKLVsgUlVOICAgICAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LkZhaWxzV2hlblRoZXJlQXJlVHdvTm9uZmF0YWxGYWlsdXJlcwotKGV4cGVjdGluZyBhIGZhaWx1
cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAg
QWN0dWFsOiAyIGZhaWx1cmVzCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZh
aWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDEuCi0KLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9u
LWZhdGFsIGZhaWx1cmUgMi4KLQotWyAgRkFJTEVEICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRl
c3QuRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1cmVzCi1bIFJVTiAgICAgIF0gRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi0o
ZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24t
ZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwg
ZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotWyAgRkFJTEVEICBd
IEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVy
ZQotWyBSVU4gICAgICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVt
ZW50UmV0dXJucwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhw
ZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi1bICBGQUlM
RUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5z
Ci1bIFJVTiAgICAgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1l
bnRUaHJvd3MKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVj
dGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotWyAgRkFJTEVE
ICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi1b
LS0tLS0tLS0tLV0gOCB0ZXN0cyBmcm9tIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QKLVsgUlVOICAg
ICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwot
WyAgICAgICBPSyBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlR2xvYmFsVmFy
aWFibGVzCi1bIFJVTiAgICAgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VM
b2NhbFN0YXRpY1ZhcmlhYmxlcwotWyAgICAgICBPSyBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qu
Q2FuUmVmZXJlbmNlTG9jYWxTdGF0aWNWYXJpYWJsZXMKLVsgUlVOICAgICAgXSBFeHBlY3RGYXRh
bEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLVsgICAgICAg
T0sgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZh
aWx1cmUKLVsgUlVOICAgICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJl
SXNOb0ZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJv
cjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsgIEZB
SUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFp
bHVyZQotWyBSVU4gICAgICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVB
cmVUd29GYXRhbEZhaWx1cmVzCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVy
cm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMiBmYWlsdXJlcwotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZh
dGFsIGZhaWx1cmUuCi0KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgot
RmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQgIF0gRXhwZWN0RmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMKLVsgUlVOICAg
ICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZh
aWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVk
OiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5v
bi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQot
WyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZU5v
bmZhdGFsRmFpbHVyZQotWyBSVU4gICAgICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNX
aGVuU3RhdGVtZW50UmV0dXJucwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBl
cnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsg
IEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVy
bnMKLVsgUlVOICAgICAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVu
dFRocm93cwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0
ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLVsgIEZBSUxFRCAgXSBF
eHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotWy0tLS0tLS0t
LS1dIDIgdGVzdHMgZnJvbSBUeXBlZFRlc3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci1bIFJV
TiAgICAgIF0gVHlwZWRUZXN0LzAuU3VjY2VzcwotWyAgICAgICBPSyBdIFR5cGVkVGVzdC8wLlN1
Y2Nlc3MKLVsgUlVOICAgICAgXSBUeXBlZFRlc3QvMC5GYWlsdXJlCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogZXJyb3I6IFZhbHVlIG9mOiBUeXBlUGFyYW0oKQotICBBY3R1YWw6IDAKLUV4cGVj
dGVkOiAxCi1FeHBlY3RlZCBmYWlsdXJlCi1bICBGQUlMRUQgIF0gVHlwZWRUZXN0LzAuRmFpbHVy
ZQotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAsIHdoZXJl
IFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKLVsgUlVOICAgICAgXSBVbnNpZ25lZC9UeXBlZFRl
c3RQLzAuU3VjY2VzcwotWyAgICAgICBPSyBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMC5TdWNjZXNz
Ci1bIFJVTiAgICAgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IFR5cGVQYXJhbSgpCi0gIEFjdHVhbDogXDAK
LUV4cGVjdGVkOiAxVQotV2hpY2ggaXM6IDEKLUV4cGVjdGVkIGZhaWx1cmUKLVsgIEZBSUxFRCAg
XSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZQotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJv
bSBVbnNpZ25lZC9UeXBlZFRlc3RQLzEsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAot
WyBSVU4gICAgICBdIFVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNzCi1bICAgICAgIE9LIF0g
VW5zaWduZWQvVHlwZWRUZXN0UC8xLlN1Y2Nlc3MKLVsgUlVOICAgICAgXSBVbnNpZ25lZC9UeXBl
ZFRlc3RQLzEuRmFpbHVyZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBv
ZjogVHlwZVBhcmFtKCkKLSAgQWN0dWFsOiAwCi1FeHBlY3RlZDogMVUKLVdoaWNoIGlzOiAxCi1F
eHBlY3RlZCBmYWlsdXJlCi1bICBGQUlMRUQgIF0gVW5zaWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1
cmUKLVstLS0tLS0tLS0tXSA0IHRlc3RzIGZyb20gRXhwZWN0RmFpbHVyZVRlc3QKLVsgUlVOICAg
ICAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgMSBm
YWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAg
QWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1TdWNjZWVkZWQKLQot
KGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0
YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFs
IGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0
aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBmYXRhbCBmYWls
dXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBlY3RlZC4iCi0gIEFj
dHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1F
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi1bICBGQUlMRUQgIF0gRXhwZWN0RmFpbHVyZVRlc3Qu
RXhwZWN0RmF0YWxGYWlsdXJlCi1bIFJVTiAgICAgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0
Tm9uRmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9y
OiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2NlZWRlZAotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkK
LWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1
YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhw
ZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzoj
OiBlcnJvcjogRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBv
dGhlciBub24tZmF0YWwgZmFpbHVyZS4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUuCi0KLVsgIEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1
cmUKLVsgUlVOICAgICAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFs
bFRocmVhZHMKLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogZXJyb3I6IEV4cGVj
dGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IFN1Y2Nlc3M6Ci1TdWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzoj
OiBlcnJvcjogRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1m
YXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9y
OiBFeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwg
ZmFpbHVyZSBleHBlY3RlZC4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBG
YXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi1bICBGQUlM
RUQgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi1b
IFJVTiAgICAgIF0gRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxU
aHJlYWRzCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IGVycm9yOiBFeHBlY3Rl
ZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogU3VjY2VzczoKLVN1Y2NlZWRlZAotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNj
OiM6IGVycm9yOiBFeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0
YWwgZmFpbHVyZS4KLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBlcnJvcjog
RXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBub24t
ZmF0YWwgZmFpbHVyZS4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24t
ZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLVsg
IEZBSUxFRCAgXSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRo
cmVhZHMKLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KLUJh
ckVudmlyb25tZW50OjpUZWFyRG93bigpIGNhbGxlZC4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBlcnJvcjogRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLUZvb0Vudmlyb25t
ZW50OjpUZWFyRG93bigpIGNhbGxlZC4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjog
RmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotWz09PT09PT09PT1dIDYxIHRlc3RzIGZy
b20gMjcgdGVzdCBjYXNlcyByYW4uCi1bICBQQVNTRUQgIF0gMjEgdGVzdHMuCi1bICBGQUlMRUQg
IF0gNDAgdGVzdHMsIGxpc3RlZCBiZWxvdzoKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0
LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3Qu
RmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJl
VGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBMb2dnaW5nVGVz
dC5JbnRlcmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotWyAgRkFJTEVEICBdIFNDT1BFRF9U
UkFDRVRlc3QuT2JleXNTY29wZXMKLVsgIEZBSUxFRCAgXSBTQ09QRURfVFJBQ0VUZXN0Lldvcmtz
SW5Mb29wCi1bICBGQUlMRUQgIF0gU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vicm91dGluZQot
WyAgRkFJTEVEICBdIFNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVOZXN0ZWQKLVsgIEZBSUxFRCAgXSBT
Q09QRURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKLVsgIEZBSUxFRCAgXSBOb25GYXRhbEZhaWx1
cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKLVsgIEZBSUxF
RCAgXSBGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3Ry
dWN0b3IKLVsgIEZBSUxFRCAgXSBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5T
ZXRVcAotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVw
Ci1bICBGQUlMRUQgIF0gRXhjZXB0aW9uSW5GaXh0dXJlQ3RvclRlc3QuRXhjZXB0aW9uSW5GaXh0
dXJlQ3RvcgotWyAgRkFJTEVEICBdIEV4Y2VwdGlvbkluU2V0VXBUZXN0LkV4Y2VwdGlvbkluU2V0
VXAKLVsgIEZBSUxFRCAgXSBFeGNlcHRpb25JblRlc3RGdW5jdGlvblRlc3QuU0VICi1bICBGQUlM
RUQgIF0gRXhjZXB0aW9uSW5UZXN0RnVuY3Rpb25UZXN0LkNwcEV4Y2VwdGlvbgotWyAgRkFJTEVE
ICBdIEV4Y2VwdGlvbkluVGVhckRvd25UZXN0LkV4Y2VwdGlvbkluVGVhckRvd24KLVsgIEZBSUxF
RCAgXSBNaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsCi1bICBGQUlMRUQgIF0gTWl4
ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbFRvbwotWyAgRkFJTEVEICBdIE1peGVkVXBU
ZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91
bGRGYWlsCi1bICBGQUlMRUQgIF0gVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNl
LkRlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsCi1bICBGQUlMRUQgIF0gVEVTVF9iZWZvcmVf
VEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwK
LVsgIEZBSUxFRCAgXSBFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNO
b05vbmZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qu
RmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlCi1bICBG
QUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1
cm5zCi1bICBGQUlMRUQgIF0gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0
ZW1lbnRUaHJvd3MKLVsgIEZBSUxFRCAgXSBFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hl
blRoZXJlSXNOb0ZhdGFsRmFpbHVyZQotWyAgRkFJTEVEICBdIEV4cGVjdEZhdGFsRmFpbHVyZVRl
c3QuRmFpbHNXaGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzCi1bICBGQUlMRUQgIF0gRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi1bICBG
QUlMRUQgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5z
Ci1bICBGQUlMRUQgIF0gRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRU
aHJvd3MKLVsgIEZBSUxFRCAgXSBUeXBlZFRlc3QvMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0g
PSBpbnQKLVsgIEZBSUxFRCAgXSBVbnNpZ25lZC9UeXBlZFRlc3RQLzAuRmFpbHVyZSwgd2hlcmUg
VHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgotWyAgRkFJTEVEICBdIFVuc2lnbmVkL1R5cGVkVGVz
dFAvMS5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBpbnQKLVsgIEZBSUxFRCAg
XSBFeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLVsgIEZBSUxFRCAgXSBFeHBl
Y3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLVsgIEZBSUxFRCAgXSBFeHBlY3RG
YWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLVsgIEZBSUxFRCAgXSBF
eHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLQotNDAg
RkFJTEVEIFRFU1RTCi0gIFlPVSBIQVZFIDEgRElTQUJMRUQgVEVTVAotCi1Ob3RlOiBHb29nbGUg
VGVzdCBmaWx0ZXIgPSBGYXRhbEZhaWx1cmVUZXN0Lio6TG9nZ2luZ1Rlc3QuKgotWz09PT09PT09
PT1dIFJ1bm5pbmcgNCB0ZXN0cyBmcm9tIDIgdGVzdCBjYXNlcy4KLVstLS0tLS0tLS0tXSBHbG9i
YWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCi1bLS0tLS0tLS0tLV0gMyB0ZXN0cyBmcm9tIEZh
dGFsRmFpbHVyZVRlc3QKLVsgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVy
ZUluU3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGVycm9yOiBWYWx1ZSBvZjogeAotICBBY3R1YWw6IDIK
LUV4cGVjdGVkOiAxCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJ
blN1YnJvdXRpbmUgKD8gbXMpCi1bIFJVTiAgICAgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZh
aWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91
bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IHgKLSAg
QWN0dWFsOiAyCi1FeHBlY3RlZDogMQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0
YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lICg/IG1zKQotWyBSVU4gICAgICBdIEZhdGFsRmFp
bHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVy
ZSBvbiBmYWxzZSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogVmFsdWUgb2Y6IGZh
bHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4cGVjdGVkOiB0cnVlCi1bICBGQUlMRUQgIF0gRmF0YWxG
YWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUgKD8gbXMpCi1bLS0tLS0tLS0t
LV0gMyB0ZXN0cyBmcm9tIEZhdGFsRmFpbHVyZVRlc3QgKD8gbXMgdG90YWwpCi0KLVstLS0tLS0t
LS0tXSAxIHRlc3QgZnJvbSBMb2dnaW5nVGVzdAotWyBSVU4gICAgICBdIExvZ2dpbmdUZXN0Lklu
dGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24g
KDMpID49IChhW2ldKSkKLWkgPT0gMAotaSA9PSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
ZXJyb3I6IEV4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgOQotaSA9PSAyCi1p
ID09IDMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBlcnJvcjogRXhwZWN0ZWQ6ICgzKSA+PSAo
YVtpXSksIGFjdHVhbDogMyB2cyA2Ci1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2
aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMgKD8gbXMpCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20g
TG9nZ2luZ1Rlc3QgKD8gbXMgdG90YWwpCi0KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZp
cm9ubWVudCB0ZWFyLWRvd24KLVs9PT09PT09PT09XSA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2Vz
IHJhbi4gKD8gbXMgdG90YWwpCi1bICBQQVNTRUQgIF0gMCB0ZXN0cy4KLVsgIEZBSUxFRCAgXSA0
IHRlc3RzLCBsaXN0ZWQgYmVsb3c6Ci1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRh
bEZhaWx1cmVJblN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFs
RmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3Qu
Tm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50
ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLQotIDQgRkFJTEVEIFRFU1RTCi0gIFlPVSBI
QVZFIDEgRElTQUJMRUQgVEVTVAotCi1Ob3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSAqRElTQUJM
RURfKgotWz09PT09PT09PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0t
LS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDEg
dGVzdCBmcm9tIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdAotWyBSVU4gICAgICBdIERpc2FibGVk
VGVzdHNXYXJuaW5nVGVzdC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVz
c2VzV2FybmluZwotWyAgICAgICBPSyBdIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdC5ESVNBQkxF
RF9BbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2FybmluZwotWy0tLS0tLS0tLS1d
IEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgotWz09PT09PT09PT1dIDEgdGVzdCBm
cm9tIDEgdGVzdCBjYXNlIHJhbi4KLVsgIFBBU1NFRCAgXSAxIHRlc3QuCi1Ob3RlOiBHb29nbGUg
VGVzdCBmaWx0ZXIgPSBQYXNzaW5nVGVzdC4qCi1Ob3RlOiBUaGlzIGlzIHRlc3Qgc2hhcmQgMSBv
ZiAyLgotWz09PT09PT09PT1dIFJ1bm5pbmcgMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0t
LS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDEg
dGVzdCBmcm9tIFBhc3NpbmdUZXN0Ci1bIFJVTiAgICAgIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rl
c3QyCi1bICAgICAgIE9LIF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi1bLS0tLS0tLS0tLV0g
R2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCi1bPT09PT09PT09PV0gMSB0ZXN0IGZy
b20gMSB0ZXN0IGNhc2UgcmFuLgotWyAgUEFTU0VEICBdIDEgdGVzdC4KLQotICBZT1UgSEFWRSAx
IERJU0FCTEVEIFRFU1QKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF9wcmVkX2ltcGxfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90
ZXN0L2d0ZXN0X3ByZWRfaW1wbF91bml0dGVzdC5jYwppbmRleCBlN2VlNTRiNTZkODZiOWVhNTRi
NzE2MTI1ODY5YWEyODdkMTI2YmU3Li5iNDY2YzE1MGFlZGM0M2ZkYjEwMzczYjdhODAyY2NiZTc3
NTc5MGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3By
ZWRfaW1wbF91bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X3ByZWRfaW1wbF91bml0dGVzdC5jYwpAQCAtMjcsNyArMjcsNyBAQAogLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogCi0vLyBUaGlzIGZpbGUgaXMgQVVUT01BVElDQUxMWSBHRU5F
UkFURUQgb24gMTAvMDIvMjAwOCBieSBjb21tYW5kCisvLyBUaGlzIGZpbGUgaXMgQVVUT01BVElD
QUxMWSBHRU5FUkFURUQgb24gMDEvMDIvMjAxOCBieSBjb21tYW5kCiAvLyAnZ2VuX2d0ZXN0X3By
ZWRfaW1wbC5weSA1Jy4gIERPIE5PVCBFRElUIEJZIEhBTkQhCiAKIC8vIFJlZ3Jlc3Npb24gdGVz
dCBmb3IgZ3Rlc3RfcHJlZF9pbXBsLmgKQEAgLTQ5LDggKzQ5LDggQEAKIAogI2luY2x1ZGUgPGlv
c3RyZWFtPgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC1zcGkuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LXNwaS5oIgogCiAvLyBBIHVzZXItZGVmaW5lZCBkYXRhIHR5cGUuCiBzdHJ1Y3QgQm9vbCB7CkBA
IC0xMDMsMTEgKzEwMywxMCBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1
bmN0aW9uMShjb25zdCBjaGFyKiBlMSwKICAgaWYgKFByZWRGdW5jdGlvbjEodjEpKQogICAgIHJl
dHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgdGVzdGluZzo6TWVzc2FnZSBt
c2c7Ci0gIG1zZyA8PCBlMQorICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCisg
ICAgICA8PCBlMQogICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBiZSBwb3NpdGl2ZSwgYnV0IGV2
YWx1YXRlcyB0byAiCiAgICAgICA8PCB2MSA8PCAiLiI7Ci0gIHJldHVybiB0ZXN0aW5nOjpBc3Nl
cnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIC8vIEEgdW5hcnkgcHJlZGljYXRlLWZvcm1hdHRlciBm
dW5jdG9yLgpAQCAtNDk0LDExICs0OTMsMTAgQEAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFBy
ZWRGb3JtYXRGdW5jdGlvbjIoY29uc3QgY2hhciogZTEsCiAgIGlmIChQcmVkRnVuY3Rpb24yKHYx
LCB2MikpCiAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0
aW5nOjpNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGUxIDw8ICIgKyAiIDw8IGUyCisgIHJldHVybiB0
ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IGUxIDw8ICIgKyAiIDw8IGUyCiAg
ICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIK
ICAgICAgIDw8IHYxICsgdjIgPDwgIi4iOwotICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFp
bHVyZShtc2cpOwogfQogCiAvLyBBIGJpbmFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3Iu
CkBAIC05MjcsMTEgKzkyNSwxMCBAQCB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1h
dEZ1bmN0aW9uMyhjb25zdCBjaGFyKiBlMSwKICAgaWYgKFByZWRGdW5jdGlvbjModjEsIHYyLCB2
MykpCiAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5n
OjpNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUz
CisgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IGUxIDw8ICIg
KyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUzCiAgICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJlIHBv
c2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKICAgICAgIDw8IHYxICsgdjIgKyB2MyA8PCAiLiI7
Ci0gIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKG1zZyk7CiB9CiAKIC8vIEEgdGVy
bmFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3IuCkBAIC0xNDAyLDExICsxMzk5LDEwIEBA
IHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rpb240KGNvbnN0IGNoYXIq
IGUxLAogICBpZiAoUHJlZEZ1bmN0aW9uNCh2MSwgdjIsIHYzLCB2NCkpCiAgICAgcmV0dXJuIHRl
c3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKIAotICB0ZXN0aW5nOjpNZXNzYWdlIG1zZzsKLSAg
bXNnIDw8IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUzIDw8ICIgKyAiIDw8IGU0Cisg
IHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKKyAgICAgIDw8IGUxIDw8ICIgKyAi
IDw8IGUyIDw8ICIgKyAiIDw8IGUzIDw8ICIgKyAiIDw8IGU0CiAgICAgICA8PCAiIGlzIGV4cGVj
dGVkIHRvIGJlIHBvc2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKICAgICAgIDw8IHYxICsgdjIg
KyB2MyArIHY0IDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNn
KTsKIH0KIAogLy8gQSA0LWFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3IuCkBAIC0xOTE5
LDExICsxOTE1LDEwIEBAIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rp
b241KGNvbnN0IGNoYXIqIGUxLAogICBpZiAoUHJlZEZ1bmN0aW9uNSh2MSwgdjIsIHYzLCB2NCwg
djUpKQogICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7CiAKLSAgdGVzdGlu
Zzo6TWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBl
MyA8PCAiICsgIiA8PCBlNCA8PCAiICsgIiA8PCBlNQorICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0
aW9uRmFpbHVyZSgpCisgICAgICA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBlMyA8
PCAiICsgIiA8PCBlNCA8PCAiICsgIiA8PCBlNQogICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBi
ZSBwb3NpdGl2ZSwgYnV0IGV2YWx1YXRlcyB0byAiCiAgICAgICA8PCB2MSArIHYyICsgdjMgKyB2
NCArIHY1IDw8ICIuIjsKLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUobXNnKTsK
IH0KIAogLy8gQSA1LWFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3IuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZW1hdHVyZV9leGl0X3Rlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3ByZW1hdHVyZV9leGl0X3Rl
c3QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzFlOTMwNTZkOGI1NjJjNTlmZWJhODI3OGUyMGMyOWRmMTNlMTkx
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
cHJlbWF0dXJlX2V4aXRfdGVzdC5jYwpAQCAtMCwwICsxLDEyNiBAQAorLy8gQ29weXJpZ2h0IDIw
MTMsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisv
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gVGVzdHMgdGhhdCBHb29nbGUg
VGVzdCBtYW5pcHVsYXRlcyB0aGUgcHJlbWF0dXJlLWV4aXQtZGV0ZWN0aW9uCisvLyBmaWxlIGNv
cnJlY3RseS4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgorCit1c2luZyA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0OwordXNpbmcgOjp0ZXN0aW5nOjpU
ZXN0OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OkdldEVudjsKK3VzaW5nIDo6
dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpTdGF0OwordXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6cG9zaXg6OlN0YXRTdHJ1Y3Q7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIFByZW1hdHVyZUV4
aXRUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgLy8gUmV0dXJucyB0cnVlIGlmZiB0
aGUgZ2l2ZW4gZmlsZSBleGlzdHMuCisgIHN0YXRpYyBib29sIEZpbGVFeGlzdHMoY29uc3QgY2hh
ciogZmlsZXBhdGgpIHsKKyAgICBTdGF0U3RydWN0IHN0YXQ7CisgICAgcmV0dXJuIFN0YXQoZmls
ZXBhdGgsICZzdGF0KSA9PSAwOworICB9CisKKyBwcm90ZWN0ZWQ6CisgIFByZW1hdHVyZUV4aXRU
ZXN0KCkgeworICAgIHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8gPSBHZXRFbnYoIlRFU1RfUFJF
TUFUVVJFX0VYSVRfRklMRSIpOworCisgICAgLy8gTm9ybWFsaXplIE5VTEwgdG8gIiIgZm9yIGVh
c2Ugb2YgaGFuZGxpbmcuCisgICAgaWYgKHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8gPT0gTlVM
TCkgeworICAgICAgcHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXyA9ICIiOworICAgIH0KKyAgfQor
CisgIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHByZW1hdHVyZS1leGl0IGZpbGUgZXhpc3RzLgor
ICBib29sIFByZW1hdHVyZUV4aXRGaWxlRXhpc3RzKCkgY29uc3QgeworICAgIHJldHVybiBGaWxl
RXhpc3RzKHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8pOworICB9CisKKyAgY29uc3QgY2hhciog
cHJlbWF0dXJlX2V4aXRfZmlsZV9wYXRoXzsKK307CisKK3R5cGVkZWYgUHJlbWF0dXJlRXhpdFRl
c3QgUHJlbWF0dXJlRXhpdERlYXRoVGVzdDsKKworLy8gVGVzdHMgdGhhdDoKKy8vICAgLSB0aGUg
cHJlbWF0dXJlLWV4aXQgZmlsZSBleGlzdHMgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgYQorLy8g
ICAgIGRlYXRoIHRlc3QgKEVYUEVDVF9ERUFUSCopLCBhbmQKKy8vICAgLSBhIGRlYXRoIHRlc3Qg
ZG9lc24ndCBpbnRlcmZlcmUgd2l0aCB0aGUgbWFpbiB0ZXN0IHByb2Nlc3MncworLy8gICAgIGhh
bmRsaW5nIG9mIHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlLgorVEVTVF9GKFByZW1hdHVyZUV4aXRE
ZWF0aFRlc3QsIEZpbGVFeGlzdHNEdXJpbmdFeGVjdXRpb25PZkRlYXRoVGVzdCkgeworICBpZiAo
KnByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8gPT0gJ1wwJykgeworICAgIHJldHVybjsKKyAgfQor
CisgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoeworICAgICAgLy8gSWYgdGhlIGZpbGUgZXhp
c3RzLCBjcmFzaCB0aGUgcHJvY2VzcyBzdWNoIHRoYXQgdGhlIG1haW4gdGVzdAorICAgICAgLy8g
cHJvY2VzcyB3aWxsIGNhdGNoIHRoZSAoZXhwZWN0ZWQpIGNyYXNoIGFuZCByZXBvcnQgYSBzdWNj
ZXNzOworICAgICAgLy8gb3RoZXJ3aXNlIGRvbid0IGNyYXNoLCB3aGljaCB3aWxsIGNhdXNlIHRo
ZSBtYWluIHRlc3QgcHJvY2VzcworICAgICAgLy8gdG8gcmVwb3J0IHRoYXQgdGhlIGRlYXRoIHRl
c3QgaGFzIGZhaWxlZC4KKyAgICAgIGlmIChQcmVtYXR1cmVFeGl0RmlsZUV4aXN0cygpKSB7Cisg
ICAgICAgIGV4aXQoMSk7CisgICAgICB9CisgICAgfSwgIiIpOworfQorCisvLyBUZXN0cyB0aGF0
IHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlIGV4aXN0cyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiBh
CisvLyBub3JtYWwgKG5vbi1kZWF0aCkgdGVzdC4KK1RFU1RfRihQcmVtYXR1cmVFeGl0VGVzdCwg
UHJlbWF0dXJlRXhpdEZpbGVFeGlzdHNEdXJpbmdUZXN0RXhlY3V0aW9uKSB7CisgIGlmICgqcHJl
bWF0dXJlX2V4aXRfZmlsZV9wYXRoXyA9PSAnXDAnKSB7CisgICAgcmV0dXJuOworICB9CisKKyAg
RVhQRUNUX1RSVUUoUHJlbWF0dXJlRXhpdEZpbGVFeGlzdHMoKSkKKyAgICAgIDw8ICIgZmlsZSAi
IDw8IHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8KKyAgICAgIDw8ICIgc2hvdWxkIGV4aXN0IGR1
cmluZyB0ZXN0IGV4ZWN1dGlvbiwgYnV0IGRvZXNuJ3QuIjsKK30KKworfSAgLy8gbmFtZXNwYWNl
CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICBJbml0R29vZ2xlVGVzdCgm
YXJnYywgYXJndik7CisgIGNvbnN0IGludCBleGl0X2NvZGUgPSBSVU5fQUxMX1RFU1RTKCk7CisK
KyAgLy8gVGVzdCB0aGF0IHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlIGlzIGRlbGV0ZWQgdXBvbiBy
ZXR1cm4gZnJvbQorICAvLyBSVU5fQUxMX1RFU1RTKCkuCisgIGNvbnN0IGNoYXIqIGNvbnN0IGZp
bGVwYXRoID0gR2V0RW52KCJURVNUX1BSRU1BVFVSRV9FWElUX0ZJTEUiKTsKKyAgaWYgKGZpbGVw
YXRoICE9IE5VTEwgJiYgKmZpbGVwYXRoICE9ICdcMCcpIHsKKyAgICBpZiAoUHJlbWF0dXJlRXhp
dFRlc3Q6OkZpbGVFeGlzdHMoZmlsZXBhdGgpKSB7CisgICAgICBwcmludGYoCisgICAgICAgICAg
IkZpbGUgJXMgc2hvdWxkbid0IGV4aXN0IGFmdGVyIHRoZSB0ZXN0IHByb2dyYW0gZmluaXNoZXMs
IGJ1dCBkb2VzLiIsCisgICAgICAgICAgZmlsZXBhdGgpOworICAgICAgcmV0dXJuIDE7CisgICAg
fQorICB9CisKKyAgcmV0dXJuIGV4aXRfY29kZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfcHJvZF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2MKaW5kZXggYmMzMjAxZDBmMjRhZTk4ZWQwNjJj
N2I4YzlmNDRkN2RmZTZkN2M5Ni4uZWRlODFhMGQxN2EwMmM4NTNlZDIyMzRlYzg4ZmU4Mjc3MTgw
YTM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcm9k
X3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9wcm9kX3Rl
c3QuY2MKQEAgLTI2LDEzICsyNiwxMiBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlv
bmcgV2FuKQotLy8KLS8vIFVuaXQgdGVzdCBmb3IgaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmgu
CisvLyBVbml0IHRlc3QgZm9yIGd0ZXN0X3Byb2QuaC4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+Ci0jaW5jbHVkZSAidGVzdC9wcm9kdWN0aW9uLmgiCisjaW5jbHVkZSAicHJvZHVjdGlvbi5o
IgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKIC8vIFRlc3RzIHRoYXQgcHJpdmF0ZSBtZW1i
ZXJzIGNhbiBiZSBhY2Nlc3NlZCBmcm9tIGEgVEVTVCBkZWNsYXJlZCBhcwogLy8gYSBmcmllbmQg
b2YgdGhlIGNsYXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF9yZXBlYXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
cmVwZWF0X3Rlc3QuY2MKaW5kZXggZGY2ODY4YjgzMDI5NjEyNWEyN2M3ZjM3ZjkzMTZjZWQ0ZWQ4
MmQ1NC4uMWU4ZjQ5OWJiOWRlM2QxNGJjYjNiYjFhNjQxYzA2ZDdhMTI1MGFkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9yZXBlYXRfdGVzdC5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3JlcGVhdF90ZXN0LmNjCkBAIC0y
NiwyMyArMjYsMTQgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCisKIAog
Ly8gVGVzdHMgdGhlIC0tZ3Rlc3RfcmVwZWF0PW51bWJlciBmbGFnLgogCiAjaW5jbHVkZSA8c3Rk
bGliLmg+CiAjaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQot
Ly8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xl
IFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWlu
dGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVy
IGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVu
dGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNk
ZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgog
I2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1F
TlRBVElPTl8KIAogbmFtZXNwYWNlIHRlc3RpbmcgewogCkBAIC02OSwxMyArNjAsMTMgQEAgbmFt
ZXNwYWNlIHsKICAgICAgICAgICAgICAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBhY3R1YWxfdmFs
IDw8ICJcbiJcCiAgICAgICAgICAgICAgICAgICA8PCAiRXhwZWN0ZWQ6ICIgI2V4cGVjdGVkICJc
biJcCiAgICAgICAgICAgICAgICAgICA8PCAiV2hpY2ggaXM6ICIgPDwgZXhwZWN0ZWRfdmFsIDw8
ICJcbiI7XAotICAgICAgYWJvcnQoKTtcCisgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3Np
eDo6QWJvcnQoKTtcCiAgICAgfVwKLSAgfSB3aGlsZSg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdh
eXNGYWxzZSgpKQorICB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgp
KQogCiAKIC8vIFVzZWQgZm9yIHZlcmlmeWluZyB0aGF0IGdsb2JhbCBlbnZpcm9ubWVudCBzZXQt
dXAgYW5kIHRlYXItZG93biBhcmUKLS8vIGluc2lkZSB0aGUgZ3Rlc3RfcmVwZWF0IGxvb3AuCisv
LyBpbnNpZGUgdGhlIC0tZ3Rlc3RfcmVwZWF0IGxvb3AuCiAKIGludCBnX2Vudmlyb25tZW50X3Nl
dF91cF9jb3VudCA9IDA7CiBpbnQgZ19lbnZpcm9ubWVudF90ZWFyX2Rvd25fY291bnQgPSAwOwpA
QCAtMTEzLDEzICsxMDQsMTIgQEAgVEVTVChCYXJEZWF0aFRlc3QsIFRocmVhZFNhZmVBbmRGYXN0
KSB7CiAgIGdfZGVhdGhfdGVzdF9jb3VudCsrOwogCiAgIEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9z
dHlsZSkgPSAidGhyZWFkc2FmZSI7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoYWJvcnQo
KSwgIiIpOworICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDo6dGVzdGluZzo6aW50ZXJuYWw6
OnBvc2l4OjpBYm9ydCgpLCAiIik7CiAKICAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9
ICJmYXN0IjsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChhYm9ydCgpLCAiIik7CisgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OkFib3J0
KCksICIiKTsKIH0KIAotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiBpbnQgZ19wYXJhbV90ZXN0
X2NvdW50ID0gMDsKIAogY29uc3QgaW50IGtOdW1iZXJPZlBhcmFtVGVzdHMgPSAxMDsKQEAgLTEy
NywxNSArMTE3LDEzIEBAIGNvbnN0IGludCBrTnVtYmVyT2ZQYXJhbVRlc3RzID0gMTA7CiBjbGFz
cyBNeVBhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4ge307CiAK
IFRFU1RfUChNeVBhcmFtVGVzdCwgU2hvdWxkUGFzcykgewotICAvLyBUT0RPKHZsYWRsQGdvb2ds
ZS5jb20pOiBNYWtlIHBhcmFtZXRlciB2YWx1ZSBjaGVja2luZyByb2J1c3QKLSAgLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgV1JUIG9yZGVyIG9mIHRlc3RzLgorICAvLyBGSVhNRTogTWFrZSBw
YXJhbWV0ZXIgdmFsdWUgY2hlY2tpbmcgcm9idXN0IFdSVCBvcmRlciBvZiB0ZXN0cy4KICAgR1RF
U1RfQ0hFQ0tfSU5UX0VRXyhnX3BhcmFtX3Rlc3RfY291bnQgJSBrTnVtYmVyT2ZQYXJhbVRlc3Rz
LCBHZXRQYXJhbSgpKTsKICAgZ19wYXJhbV90ZXN0X2NvdW50Kys7CiB9CiBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUChNeVBhcmFtU2VxdWVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBNeVBh
cmFtVGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlJhbmdlKDAsIGtOdW1i
ZXJPZlBhcmFtVGVzdHMpKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIAogLy8g
UmVzZXRzIHRoZSBjb3VudCBmb3IgZWFjaCB0ZXN0Lgogdm9pZCBSZXNldENvdW50cygpIHsKQEAg
LTE0NCw5ICsxMzIsNyBAQCB2b2lkIFJlc2V0Q291bnRzKCkgewogICBnX3Nob3VsZF9mYWlsX2Nv
dW50ID0gMDsKICAgZ19zaG91bGRfcGFzc19jb3VudCA9IDA7CiAgIGdfZGVhdGhfdGVzdF9jb3Vu
dCA9IDA7Ci0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKICAgZ19wYXJhbV90ZXN0X2NvdW50ID0g
MDsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIH0KIAogLy8gQ2hlY2tzIHRoYXQg
dGhlIGNvdW50IGZvciBlYWNoIHRlc3QgaXMgZXhwZWN0ZWQuCkBAIC0xNTYsOSArMTQyLDcgQEAg
dm9pZCBDaGVja0NvdW50cyhpbnQgZXhwZWN0ZWQpIHsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhl
eHBlY3RlZCwgZ19zaG91bGRfZmFpbF9jb3VudCk7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8oZXhw
ZWN0ZWQsIGdfc2hvdWxkX3Bhc3NfY291bnQpOwogICBHVEVTVF9DSEVDS19JTlRfRVFfKGV4cGVj
dGVkLCBnX2RlYXRoX3Rlc3RfY291bnQpOwotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiAgIEdU
RVNUX0NIRUNLX0lOVF9FUV8oZXhwZWN0ZWQgKiBrTnVtYmVyT2ZQYXJhbVRlc3RzLCBnX3BhcmFt
X3Rlc3RfY291bnQpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAogfQogCiAvLyBU
ZXN0cyB0aGUgYmVoYXZpb3Igb2YgR29vZ2xlIFRlc3Qgd2hlbiAtLWd0ZXN0X3JlcGVhdCBpcyBu
b3Qgc3BlY2lmaWVkLgpAQCAtMjAxLDkgKzE4NSw3IEBAIHZvaWQgVGVzdFJlcGVhdFdpdGhGaWx0
ZXJGb3JTdWNjZXNzZnVsVGVzdHMoaW50IHJlcGVhdCkgewogICBHVEVTVF9DSEVDS19JTlRfRVFf
KDAsIGdfc2hvdWxkX2ZhaWxfY291bnQpOwogICBHVEVTVF9DSEVDS19JTlRfRVFfKHJlcGVhdCwg
Z19zaG91bGRfcGFzc19jb3VudCk7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0LCBnX2Rl
YXRoX3Rlc3RfY291bnQpOwotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCiAgIEdURVNUX0NIRUNL
X0lOVF9FUV8ocmVwZWF0ICoga051bWJlck9mUGFyYW1UZXN0cywgZ19wYXJhbV90ZXN0X2NvdW50
KTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIH0KIAogLy8gVGVzdHMgdXNpbmcg
LS1ndGVzdF9yZXBlYXQgd2hlbiAtLWd0ZXN0X2ZpbHRlciBzcGVjaWZpZXMgYSBzZXQgb2YKQEAg
LTIxOSwxNSArMjAxLDE0IEBAIHZvaWQgVGVzdFJlcGVhdFdpdGhGaWx0ZXJGb3JGYWlsZWRUZXN0
cyhpbnQgcmVwZWF0KSB7CiAgIEdURVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0LCBnX3Nob3VsZF9m
YWlsX2NvdW50KTsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXygwLCBnX3Nob3VsZF9wYXNzX2NvdW50
KTsKICAgR1RFU1RfQ0hFQ0tfSU5UX0VRXygwLCBnX2RlYXRoX3Rlc3RfY291bnQpOwotI2lmIEdU
RVNUX0hBU19QQVJBTV9URVNUCiAgIEdURVNUX0NIRUNLX0lOVF9FUV8oMCwgZ19wYXJhbV90ZXN0
X2NvdW50KTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKIH0KIAogfSAgLy8gbmFt
ZXNwYWNlCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewogICB0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKICAgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVu
dmlyb25tZW50KG5ldyBNeUVudmlyb25tZW50KTsKIAogICBUZXN0UmVwZWF0VW5zcGVjaWZpZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZs
ZV90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rl
c3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDMwZDAzMDNkMTkzNTU0YTVmZDBi
OWIxZjZhNTFlZjdkMDlmMzA2MTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rl
c3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMjUgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCi0jCi0jIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRp
b24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJWZXJpZmllcyB0aGF0IHRlc3Qgc2h1ZmZsaW5nIHdv
cmtzLiIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwot
Ci1pbXBvcnQgb3MKLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi0KLSMgQ29tbWFuZCB0byBydW4g
dGhlIGd0ZXN0X3NodWZmbGVfdGVzdF8gcHJvZ3JhbS4KLUNPTU1BTkQgPSBndGVzdF90ZXN0X3V0
aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ3Rlc3Rfc2h1ZmZsZV90ZXN0XycpCi0KLSMgVGhl
IGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBzaGFyZGluZy4KLVRPVEFMX1NIQVJEU19F
TlZfVkFSID0gJ0dURVNUX1RPVEFMX1NIQVJEUycKLVNIQVJEX0lOREVYX0VOVl9WQVIgPSAnR1RF
U1RfU0hBUkRfSU5ERVgnCi0KLVRFU1RfRklMVEVSID0gJ0EqLkE6QSouQjpDKicKLQotQUxMX1RF
U1RTID0gW10KLUFDVElWRV9URVNUUyA9IFtdCi1GSUxURVJFRF9URVNUUyA9IFtdCi1TSEFSREVE
X1RFU1RTID0gW10KLQotU0hVRkZMRURfQUxMX1RFU1RTID0gW10KLVNIVUZGTEVEX0FDVElWRV9U
RVNUUyA9IFtdCi1TSFVGRkxFRF9GSUxURVJFRF9URVNUUyA9IFtdCi1TSFVGRkxFRF9TSEFSREVE
X1RFU1RTID0gW10KLQotCi1kZWYgQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKCk6Ci0gIHJldHVy
biAnLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cycKLQotCi1kZWYgRmlsdGVyRmxhZyh0
ZXN0X2ZpbHRlcik6Ci0gIHJldHVybiAnLS1ndGVzdF9maWx0ZXI9JXMnICUgKHRlc3RfZmlsdGVy
LCkKLQotCi1kZWYgUmVwZWF0RmxhZyhuKToKLSAgcmV0dXJuICctLWd0ZXN0X3JlcGVhdD0lcycg
JSAobiwpCi0KLQotZGVmIFNodWZmbGVGbGFnKCk6Ci0gIHJldHVybiAnLS1ndGVzdF9zaHVmZmxl
JwotCi0KLWRlZiBSYW5kb21TZWVkRmxhZyhuKToKLSAgcmV0dXJuICctLWd0ZXN0X3JhbmRvbV9z
ZWVkPSVzJyAlIChuLCkKLQotCi1kZWYgUnVuQW5kUmV0dXJuT3V0cHV0KGV4dHJhX2VudiwgYXJn
cyk6Ci0gICIiIlJ1bnMgdGhlIHRlc3QgcHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgb3V0cHV0LiIi
IgotCi0gIGVudmlyb25fY29weSA9IG9zLmVudmlyb24uY29weSgpCi0gIGVudmlyb25fY29weS51
cGRhdGUoZXh0cmFfZW52KQotCi0gIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3Mo
W0NPTU1BTkRdICsgYXJncywgZW52PWVudmlyb25fY29weSkub3V0cHV0Ci0KLQotZGVmIEdldFRl
c3RzRm9yQWxsSXRlcmF0aW9ucyhleHRyYV9lbnYsIGFyZ3MpOgotICAiIiJSdW5zIHRoZSB0ZXN0
IHByb2dyYW0gYW5kIHJldHVybnMgYSBsaXN0IG9mIHRlc3QgbGlzdHMuCi0KLSAgQXJnczoKLSAg
ICBleHRyYV9lbnY6IGEgbWFwIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHRoZWlyIHZh
bHVlcwotICAgIGFyZ3M6IGNvbW1hbmQgbGluZSBmbGFncyB0byBwYXNzIHRvIGd0ZXN0X3NodWZm
bGVfdGVzdF8KLQotICBSZXR1cm5zOgotICAgIEEgbGlzdCB3aGVyZSB0aGUgaS10aCBlbGVtZW50
IGlzIHRoZSBsaXN0IG9mIHRlc3RzIHJ1biBpbiB0aGUgaS10aAotICAgIHRlc3QgaXRlcmF0aW9u
LgotICAiIiIKLQotICB0ZXN0X2l0ZXJhdGlvbnMgPSBbXQotICBmb3IgbGluZSBpbiBSdW5BbmRS
ZXR1cm5PdXRwdXQoZXh0cmFfZW52LCBhcmdzKS5zcGxpdCgnXG4nKToKLSAgICBpZiBsaW5lLnN0
YXJ0c3dpdGgoJy0tLS0nKToKLSAgICAgIHRlc3RzID0gW10KLSAgICAgIHRlc3RfaXRlcmF0aW9u
cy5hcHBlbmQodGVzdHMpCi0gICAgZWxpZiBsaW5lLnN0cmlwKCk6Ci0gICAgICB0ZXN0cy5hcHBl
bmQobGluZS5zdHJpcCgpKSAgIyAnVGVzdENhc2VOYW1lLlRlc3ROYW1lJwotCi0gIHJldHVybiB0
ZXN0X2l0ZXJhdGlvbnMKLQotCi1kZWYgR2V0VGVzdENhc2VzKHRlc3RzKToKLSAgIiIiUmV0dXJu
cyBhIGxpc3Qgb2YgdGVzdCBjYXNlcyBpbiB0aGUgZ2l2ZW4gZnVsbCB0ZXN0IG5hbWVzLgotCi0g
IEFyZ3M6Ci0gICAgdGVzdHM6IGEgbGlzdCBvZiBmdWxsIHRlc3QgbmFtZXMKLQotICBSZXR1cm5z
OgotICAgIEEgbGlzdCBvZiB0ZXN0IGNhc2VzIGZyb20gJ3Rlc3RzJywgaW4gdGhlaXIgb3JpZ2lu
YWwgb3JkZXIuCi0gICAgQ29uc2VjdXRpdmUgZHVwbGljYXRlcyBhcmUgcmVtb3ZlZC4KLSAgIiIi
Ci0KLSAgdGVzdF9jYXNlcyA9IFtdCi0gIGZvciB0ZXN0IGluIHRlc3RzOgotICAgIHRlc3RfY2Fz
ZSA9IHRlc3Quc3BsaXQoJy4nKVswXQotICAgIGlmIG5vdCB0ZXN0X2Nhc2UgaW4gdGVzdF9jYXNl
czoKLSAgICAgIHRlc3RfY2FzZXMuYXBwZW5kKHRlc3RfY2FzZSkKLQotICByZXR1cm4gdGVzdF9j
YXNlcwotCi0KLWRlZiBDYWxjdWxhdGVUZXN0TGlzdHMoKToKLSAgIiIiQ2FsY3VsYXRlcyB0aGUg
bGlzdCBvZiB0ZXN0cyBydW4gdW5kZXIgZGlmZmVyZW50IGZsYWdzLiIiIgotCi0gIGlmIG5vdCBB
TExfVEVTVFM6Ci0gICAgQUxMX1RFU1RTLmV4dGVuZCgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJ
dGVyYXRpb25zKHt9LCBbQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKCldKVswXSkKLQotICBpZiBu
b3QgQUNUSVZFX1RFU1RTOgotICAgIEFDVElWRV9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJ
dGVyYXRpb25zKHt9LCBbXSlbMF0pCi0KLSAgaWYgbm90IEZJTFRFUkVEX1RFU1RTOgotICAgIEZJ
TFRFUkVEX1RFU1RTLmV4dGVuZCgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHt9
LCBbRmlsdGVyRmxhZyhURVNUX0ZJTFRFUildKVswXSkKLQotICBpZiBub3QgU0hBUkRFRF9URVNU
UzoKLSAgICBTSEFSREVEX1RFU1RTLmV4dGVuZCgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVy
YXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcxJ30sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbXSlbMF0pCi0KLSAgaWYgbm90IFNIVUZGTEVEX0FMTF9URVNUUzoK
LSAgICBTSFVGRkxFRF9BTExfVEVTVFMuZXh0ZW5kKEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygK
LSAgICAgICAge30sIFtBbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcoKSwgU2h1ZmZsZUZsYWcoKSwg
UmFuZG9tU2VlZEZsYWcoMSldKVswXSkKLQotICBpZiBub3QgU0hVRkZMRURfQUNUSVZFX1RFU1RT
OgotICAgIFNIVUZGTEVEX0FDVElWRV9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRp
b25zKAotICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSlbMF0p
Ci0KLSAgaWYgbm90IFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTOgotICAgIFNIVUZGTEVEX0ZJTFRF
UkVEX1RFU1RTLmV4dGVuZChHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBb
U2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSksIEZpbHRlckZsYWcoVEVTVF9GSUxURVIp
XSlbMF0pCi0KLSAgaWYgbm90IFNIVUZGTEVEX1NIQVJERURfVEVTVFM6Ci0gICAgU0hVRkZMRURf
U0hBUkRFRF9URVNUUy5leHRlbmQoCi0gICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7
VE9UQUxfU0hBUkRTX0VOVl9WQVI6ICczJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMSd9LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSlbMF0pCi0KLQotY2xh
c3MgR1Rlc3RTaHVmZmxlVW5pdFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gICIi
IlRlc3RzIHRlc3Qgc2h1ZmZsaW5nLiIiIgotCi0gIGRlZiBzZXRVcChzZWxmKToKLSAgICBDYWxj
dWxhdGVUZXN0TGlzdHMoKQotCi0gIGRlZiB0ZXN0U2h1ZmZsZVByZXNlcnZlc051bWJlck9mVGVz
dHMoc2VsZik6Ci0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oQUxMX1RFU1RTKSwgbGVuKFNIVUZG
TEVEX0FMTF9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oQUNUSVZFX1RFU1RTKSwg
bGVuKFNIVUZGTEVEX0FDVElWRV9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oRklM
VEVSRURfVEVTVFMpLCBsZW4oU0hVRkZMRURfRklMVEVSRURfVEVTVFMpKQotICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKFNIQVJERURfVEVTVFMpLCBsZW4oU0hVRkZMRURfU0hBUkRFRF9URVNUUykp
Ci0KLSAgZGVmIHRlc3RTaHVmZmxlQ2hhbmdlc1Rlc3RPcmRlcihzZWxmKToKLSAgICBzZWxmLmFz
c2VydF8oU0hVRkZMRURfQUxMX1RFU1RTICE9IEFMTF9URVNUUywgU0hVRkZMRURfQUxMX1RFU1RT
KQotICAgIHNlbGYuYXNzZXJ0XyhTSFVGRkxFRF9BQ1RJVkVfVEVTVFMgIT0gQUNUSVZFX1RFU1RT
LCBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMpCi0gICAgc2VsZi5hc3NlcnRfKFNIVUZGTEVEX0ZJTFRF
UkVEX1RFU1RTICE9IEZJTFRFUkVEX1RFU1RTLAotICAgICAgICAgICAgICAgICBTSFVGRkxFRF9G
SUxURVJFRF9URVNUUykKLSAgICBzZWxmLmFzc2VydF8oU0hVRkZMRURfU0hBUkRFRF9URVNUUyAh
PSBTSEFSREVEX1RFU1RTLAotICAgICAgICAgICAgICAgICBTSFVGRkxFRF9TSEFSREVEX1RFU1RT
KQotCi0gIGRlZiB0ZXN0U2h1ZmZsZUNoYW5nZXNUZXN0Q2FzZU9yZGVyKHNlbGYpOgotICAgIHNl
bGYuYXNzZXJ0XyhHZXRUZXN0Q2FzZXMoU0hVRkZMRURfQUxMX1RFU1RTKSAhPSBHZXRUZXN0Q2Fz
ZXMoQUxMX1RFU1RTKSwKLSAgICAgICAgICAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX0FM
TF9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRfKAotICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZM
RURfQUNUSVZFX1RFU1RTKSAhPSBHZXRUZXN0Q2FzZXMoQUNUSVZFX1RFU1RTKSwKLSAgICAgICAg
R2V0VGVzdENhc2VzKFNIVUZGTEVEX0FDVElWRV9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRfKAot
ICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfRklMVEVSRURfVEVTVFMpICE9IEdldFRlc3RD
YXNlcyhGSUxURVJFRF9URVNUUyksCi0gICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9GSUxU
RVJFRF9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRfKAotICAgICAgICBHZXRUZXN0Q2FzZXMoU0hV
RkZMRURfU0hBUkRFRF9URVNUUykgIT0gR2V0VGVzdENhc2VzKFNIQVJERURfVEVTVFMpLAotICAg
ICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfU0hBUkRFRF9URVNUUykpCi0KLSAgZGVmIHRlc3RT
aHVmZmxlRG9lc05vdFJlcGVhdFRlc3Qoc2VsZik6Ci0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURf
QUxMX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9BTExfVEVTVFMu
Y291bnQodGVzdCksCi0gICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhh
biBvbmNlJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RT
OgotICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMuY291bnQo
dGVzdCksCi0gICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNl
JyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFM6Ci0g
ICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTLmNvdW50KHRl
c3QpLAotICAgICAgICAgICAgICAgICAgICAgICAnJXMgYXBwZWFycyBtb3JlIHRoYW4gb25jZScg
JSAodGVzdCwpKQotICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFM6Ci0gICAg
ICBzZWxmLmFzc2VydEVxdWFsKDEsIFNIVUZGTEVEX1NIQVJERURfVEVTVFMuY291bnQodGVzdCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0
ZXN0LCkpCi0KLSAgZGVmIHRlc3RTaHVmZmxlRG9lc05vdENyZWF0ZU5ld1Rlc3Qoc2VsZik6Ci0g
ICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUxMX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRl
c3QgaW4gQUxMX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCi0gICAg
Zm9yIHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRl
c3QgaW4gQUNUSVZFX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCi0g
ICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2Vy
dF8odGVzdCBpbiBGSUxURVJFRF9URVNUUywgJyVzIGlzIGFuIGludmFsaWQgdGVzdCcgJSAodGVz
dCwpKQotICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFM6Ci0gICAgICBzZWxm
LmFzc2VydF8odGVzdCBpbiBTSEFSREVEX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAl
ICh0ZXN0LCkpCi0KLSAgZGVmIHRlc3RTaHVmZmxlSW5jbHVkZXNBbGxUZXN0cyhzZWxmKToKLSAg
ICBmb3IgdGVzdCBpbiBBTExfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVG
RkxFRF9BTExfVEVTVFMsICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3Qg
aW4gQUNUSVZFX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfQUNU
SVZFX1RFU1RTLCAnJXMgaXMgbWlzc2luZycgJSAodGVzdCwpKQotICAgIGZvciB0ZXN0IGluIEZJ
TFRFUkVEX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfRklMVEVS
RURfVEVTVFMsICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hB
UkRFRF9URVNUUzoKLSAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURf
VEVTVFMsICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCi0KLSAgZGVmIHRlc3RTaHVmZmxlTGVh
dmVzRGVhdGhUZXN0c0F0RnJvbnQoc2VsZik6Ci0gICAgbm9uX2RlYXRoX3Rlc3RfZm91bmQgPSBG
YWxzZQotICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX0FDVElWRV9URVNUUzoKLSAgICAgIGlmICdE
ZWF0aFRlc3QuJyBpbiB0ZXN0OgotICAgICAgICBzZWxmLmFzc2VydF8obm90IG5vbl9kZWF0aF90
ZXN0X2ZvdW5kLAotICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgYWZ0ZXIgYSBub24t
ZGVhdGggdGVzdCcgJSAodGVzdCwpKQotICAgICAgZWxzZToKLSAgICAgICAgbm9uX2RlYXRoX3Rl
c3RfZm91bmQgPSBUcnVlCi0KLSAgZGVmIF9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUo
c2VsZiwgdGVzdHMpOgotICAgIHRlc3RfY2FzZXMgPSBbXQotICAgIGZvciB0ZXN0IGluIHRlc3Rz
OgotICAgICAgW3Rlc3RfY2FzZSwgX10gPSB0ZXN0LnNwbGl0KCcuJykKLSAgICAgIGlmIHRlc3Rf
Y2FzZXMgYW5kIHRlc3RfY2FzZXNbLTFdICE9IHRlc3RfY2FzZToKLSAgICAgICAgdGVzdF9jYXNl
cy5hcHBlbmQodGVzdF9jYXNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHRlc3RfY2Fz
ZXMuY291bnQodGVzdF9jYXNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnVGVzdCBjYXNl
ICVzIGlzIG5vdCBncm91cGVkIHRvZ2V0aGVyIGluICVzJyAlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgKHRlc3RfY2FzZSwgdGVzdHMpKQotCi0gIGRlZiB0ZXN0U2h1ZmZsZURvZXNOb3RJbnRl
cmxlYXZlVGVzdENhc2VzKHNlbGYpOgotICAgIHNlbGYuX1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50
ZXJsZWF2ZShTSFVGRkxFRF9BTExfVEVTVFMpCi0gICAgc2VsZi5fVmVyaWZ5VGVzdENhc2VzRG9O
b3RJbnRlcmxlYXZlKFNIVUZGTEVEX0FDVElWRV9URVNUUykKLSAgICBzZWxmLl9WZXJpZnlUZXN0
Q2FzZXNEb05vdEludGVybGVhdmUoU0hVRkZMRURfRklMVEVSRURfVEVTVFMpCi0gICAgc2VsZi5f
VmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRlcmxlYXZlKFNIVUZGTEVEX1NIQVJERURfVEVTVFMpCi0K
LSAgZGVmIHRlc3RTaHVmZmxlUmVzdG9yZXNPcmRlckFmdGVyRWFjaEl0ZXJhdGlvbihzZWxmKToK
LSAgICAjIEdldCB0aGUgdGVzdCBsaXN0cyBpbiBhbGwgMyBpdGVyYXRpb25zLCB1c2luZyByYW5k
b20gc2VlZCAxLCAyLAotICAgICMgYW5kIDMgcmVzcGVjdGl2ZWx5LiAgR29vZ2xlIFRlc3QgcGlj
a3MgYSBkaWZmZXJlbnQgc2VlZCBpbiBlYWNoCi0gICAgIyBpdGVyYXRpb24sIGFuZCB0aGlzIHRl
c3QgZGVwZW5kcyBvbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbgotICAgICMgcGlja2luZyBz
dWNjZXNzaXZlIG51bWJlcnMuICBUaGlzIGRlcGVuZGVuY3kgaXMgbm90IGlkZWFsLCBidXQKLSAg
ICAjIG1ha2VzIHRoZSB0ZXN0IG11Y2ggZWFzaWVyIHRvIHdyaXRlLgotICAgIFt0ZXN0c19pbl9p
dGVyYXRpb24xLCB0ZXN0c19pbl9pdGVyYXRpb24yLCB0ZXN0c19pbl9pdGVyYXRpb24zXSA9ICgK
LSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAotICAgICAgICAgICAge30sIFtTaHVm
ZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKSwgUmVwZWF0RmxhZygzKV0pKQotCi0gICAgIyBN
YWtlIHN1cmUgcnVubmluZyB0aGUgdGVzdHMgd2l0aCByYW5kb20gc2VlZCAxIGdldHMgdGhlIHNh
bWUKLSAgICAjIG9yZGVyIGFzIGluIGl0ZXJhdGlvbiAxIGFib3ZlLgotICAgIFt0ZXN0c193aXRo
X3NlZWQxXSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKLSAgICAgICAge30sIFtTaHVmZmxl
RmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0pCi0gICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0c19p
bl9pdGVyYXRpb24xLCB0ZXN0c193aXRoX3NlZWQxKQotCi0gICAgIyBNYWtlIHN1cmUgcnVubmlu
ZyB0aGUgdGVzdHMgd2l0aCByYW5kb20gc2VlZCAyIGdldHMgdGhlIHNhbWUKLSAgICAjIG9yZGVy
IGFzIGluIGl0ZXJhdGlvbiAyIGFib3ZlLiAgU3VjY2VzcyBtZWFucyB0aGF0IEdvb2dsZSBUZXN0
Ci0gICAgIyBjb3JyZWN0bHkgcmVzdG9yZXMgdGhlIHRlc3Qgb3JkZXIgYmVmb3JlIHJlLXNodWZm
bGluZyBhdCB0aGUKLSAgICAjIGJlZ2lubmluZyBvZiBpdGVyYXRpb24gMi4KLSAgICBbdGVzdHNf
d2l0aF9zZWVkMl0gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBbU2h1
ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMildKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVz
dHNfaW5faXRlcmF0aW9uMiwgdGVzdHNfd2l0aF9zZWVkMikKLQotICAgICMgTWFrZSBzdXJlIHJ1
bm5pbmcgdGhlIHRlc3RzIHdpdGggcmFuZG9tIHNlZWQgMyBnZXRzIHRoZSBzYW1lCi0gICAgIyBv
cmRlciBhcyBpbiBpdGVyYXRpb24gMyBhYm92ZS4gIFN1Y2Nlc3MgbWVhbnMgdGhhdCBHb29nbGUg
VGVzdAotICAgICMgY29ycmVjdGx5IHJlc3RvcmVzIHRoZSB0ZXN0IG9yZGVyIGJlZm9yZSByZS1z
aHVmZmxpbmcgYXQgdGhlCi0gICAgIyBiZWdpbm5pbmcgb2YgaXRlcmF0aW9uIDMuCi0gICAgW3Rl
c3RzX3dpdGhfc2VlZDNdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAotICAgICAgICB7fSwg
W1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDMpXSkKLSAgICBzZWxmLmFzc2VydEVxdWFs
KHRlc3RzX2luX2l0ZXJhdGlvbjMsIHRlc3RzX3dpdGhfc2VlZDMpCi0KLSAgZGVmIHRlc3RTaHVm
ZmxlR2VuZXJhdGVzTmV3T3JkZXJJbkVhY2hJdGVyYXRpb24oc2VsZik6Ci0gICAgW3Rlc3RzX2lu
X2l0ZXJhdGlvbjEsIHRlc3RzX2luX2l0ZXJhdGlvbjIsIHRlc3RzX2luX2l0ZXJhdGlvbjNdID0g
KAotICAgICAgICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgICAgICB7fSwgW1No
dWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpLCBSZXBlYXRGbGFnKDMpXSkpCi0KLSAgICBz
ZWxmLmFzc2VydF8odGVzdHNfaW5faXRlcmF0aW9uMSAhPSB0ZXN0c19pbl9pdGVyYXRpb24yLAot
ICAgICAgICAgICAgICAgICB0ZXN0c19pbl9pdGVyYXRpb24xKQotICAgIHNlbGYuYXNzZXJ0Xyh0
ZXN0c19pbl9pdGVyYXRpb24xICE9IHRlc3RzX2luX2l0ZXJhdGlvbjMsCi0gICAgICAgICAgICAg
ICAgIHRlc3RzX2luX2l0ZXJhdGlvbjEpCi0gICAgc2VsZi5hc3NlcnRfKHRlc3RzX2luX2l0ZXJh
dGlvbjIgIT0gdGVzdHNfaW5faXRlcmF0aW9uMywKLSAgICAgICAgICAgICAgICAgdGVzdHNfaW5f
aXRlcmF0aW9uMikKLQotICBkZWYgdGVzdFNodWZmbGVTaGFyZGVkVGVzdHNQcmVzZXJ2ZXNQYXJ0
aXRpb24oc2VsZik6Ci0gICAgIyBJZiB3ZSBydW4gTSB0ZXN0cyBvbiBOIHNoYXJkcywgdGhlIHNh
bWUgTSB0ZXN0cyBzaG91bGQgYmUgcnVuIGluCi0gICAgIyB0b3RhbCwgcmVnYXJkbGVzcyBvZiB0
aGUgcmFuZG9tIHNlZWRzIHVzZWQgYnkgdGhlIHNoYXJkcy4KLSAgICBbdGVzdHMxXSA9IEdldFRl
c3RzRm9yQWxsSXRlcmF0aW9ucyh7VE9UQUxfU0hBUkRTX0VOVl9WQVI6ICczJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBUkRfSU5ERVhfRU5WX1ZBUjogJzAn
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU2h1ZmZsZUZsYWco
KSwgUmFuZG9tU2VlZEZsYWcoMSldKQotICAgIFt0ZXN0czJdID0gR2V0VGVzdHNGb3JBbGxJdGVy
YXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMSd9LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVk
RmxhZygyMCldKQotICAgIFt0ZXN0czNdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RB
TF9TSEFSRFNfRU5WX1ZBUjogJzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMid9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygyNSldKQot
ICAgIHNvcnRlZF9zaGFyZGVkX3Rlc3RzID0gdGVzdHMxICsgdGVzdHMyICsgdGVzdHMzCi0gICAg
c29ydGVkX3NoYXJkZWRfdGVzdHMuc29ydCgpCi0gICAgc29ydGVkX2FjdGl2ZV90ZXN0cyA9IFtd
Ci0gICAgc29ydGVkX2FjdGl2ZV90ZXN0cy5leHRlbmQoQUNUSVZFX1RFU1RTKQotICAgIHNvcnRl
ZF9hY3RpdmVfdGVzdHMuc29ydCgpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWRfYWN0aXZl
X3Rlc3RzLCBzb3J0ZWRfc2hhcmRlZF90ZXN0cykKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9f
JzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTNlY2Y3NzcwYTE0MTE3NjY4YjRhZGVhNmZiNmY1MDI2NjcxN2RlNy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwx
MDQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0Ogot
Ly8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0v
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0v
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ly8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gVmVyaWZp
ZXMgdGhhdCB0ZXN0IHNodWZmbGluZyB3b3Jrcy4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
Ci0KLW5hbWVzcGFjZSB7Ci0KLXVzaW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5l
cjsKLXVzaW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6Ok1l
c3NhZ2U7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RFdmVu
dExpc3RlbmVyczsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdEluZm87Ci11c2luZyA6OnRlc3Rpbmc6
OlVuaXRUZXN0OwotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOwotdXNpbmcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVkX3B0cjsKLQotLy8gVGhlIHRlc3QgbWV0aG9kcyBhcmUg
ZW1wdHksIGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgdGhpcyBwcm9ncmFtIGlzCi0vLyB0byBwcmlu
dCB0aGUgdGVzdCBuYW1lcyBiZWZvcmUvYWZ0ZXIgc2h1ZmZsaW5nLgotCi1jbGFzcyBBIDogcHVi
bGljIFRlc3Qge307Ci1URVNUX0YoQSwgQSkge30KLVRFU1RfRihBLCBCKSB7fQotCi1URVNUKEFE
ZWF0aFRlc3QsIEEpIHt9Ci1URVNUKEFEZWF0aFRlc3QsIEIpIHt9Ci1URVNUKEFEZWF0aFRlc3Qs
IEMpIHt9Ci0KLVRFU1QoQiwgQSkge30KLVRFU1QoQiwgQikge30KLVRFU1QoQiwgQykge30KLVRF
U1QoQiwgRElTQUJMRURfRCkge30KLVRFU1QoQiwgRElTQUJMRURfRSkge30KLQotVEVTVChCRGVh
dGhUZXN0LCBBKSB7fQotVEVTVChCRGVhdGhUZXN0LCBCKSB7fQotCi1URVNUKEMsIEEpIHt9Ci1U
RVNUKEMsIEIpIHt9Ci1URVNUKEMsIEMpIHt9Ci1URVNUKEMsIERJU0FCTEVEX0QpIHt9Ci0KLVRF
U1QoQ0RlYXRoVGVzdCwgQSkge30KLQotVEVTVChESVNBQkxFRF9ELCBBKSB7fQotVEVTVChESVNB
QkxFRF9ELCBESVNBQkxFRF9CKSB7fQotCi0vLyBUaGlzIHByaW50ZXIgcHJpbnRzIHRoZSBmdWxs
IHRlc3QgbmFtZXMgb25seSwgc3RhcnRpbmcgZWFjaCB0ZXN0Ci0vLyBpdGVyYXRpb24gd2l0aCBh
ICItLS0tIiBtYXJrZXIuCi1jbGFzcyBUZXN0TmFtZVByaW50ZXIgOiBwdWJsaWMgRW1wdHlUZXN0
RXZlbnRMaXN0ZW5lciB7Ci0gcHVibGljOgotICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9u
U3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qIHVuaXRfdGVzdCAqLywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCAvKiBpdGVyYXRpb24gKi8pIHsKLSAgICBwcmludGYoIi0t
LS1cbiIpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZv
JiB0ZXN0X2luZm8pIHsKLSAgICBwcmludGYoIiVzLiVzXG4iLCB0ZXN0X2luZm8udGVzdF9jYXNl
X25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7Ci0gIH0KLX07Ci0KLX0gIC8vIG5hbWVzcGFjZQot
Ci1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgSW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOwotCi0gIC8vIFJlcGxhY2VzIHRoZSBkZWZhdWx0IHByaW50ZXIgd2l0aCBUZXN0
TmFtZVByaW50ZXIsIHdoaWNoIHByaW50cwotICAvLyB0aGUgdGVzdCBuYW1lIG9ubHkuCi0gIFRl
c3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxp
c3RlbmVycygpOwotICBkZWxldGUgbGlzdGVuZXJzLlJlbGVhc2UobGlzdGVuZXJzLmRlZmF1bHRf
cmVzdWx0X3ByaW50ZXIoKSk7Ci0gIGxpc3RlbmVycy5BcHBlbmQobmV3IFRlc3ROYW1lUHJpbnRl
cik7Ci0KLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYwppbmRleCBkZTkx
ZTgwMGY1YTEzODI5OTlmYzIwMWY1Y2YzY2UwNDY0Y2FhMWNlLi4xZDk0YWM2YjNhZDlmOWY3ZGJh
ZGJmYjJiZjc0OWI4MjcxNTYwZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC90ZXN0L2d0ZXN0X3NvbGVfaGVhZGVyX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QvdGVzdC9ndGVzdF9zb2xlX2hlYWRlcl90ZXN0LmNjCkBAIC0yNiwxMyArMjYsMTIgQEAK
IC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBB
dXRob3I6IG1oZXVsZUBnb29nbGUuY29tIChNYXJrdXMgSGV1bGUpCisKIC8vCiAvLyBUaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCBpdCdzIHBvc3NpYmxlIHRvIHVzZSBHb29nbGUgVGVzdCBieSBpbmNs
dWRpbmcKIC8vIHRoZSBndGVzdC5oIGhlYWRlciBmaWxlIGFsb25lLgogCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCiBuYW1lc3BhY2UgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3N0cmVzc190ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF9zdHJlc3NfdGVzdC5jYwpp
bmRleCBmNWFmNzhjYzZkM2YzOTVhMDBkNGQxY2U4NTk5ZmE1ZjFkZmE3NjI2Li45NWFkYTM5YzMz
N2QwZDRlY2U2ZmY1YjMyMzJkZTk2YzNkNTk4NmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3N0cmVzc190ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rfc3RyZXNzX3Rlc3QuY2MKQEAgLTI2LDIzICsyNiwxNiBAQAog
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKKwogCiAvLyBUZXN0cyB0aGF0IFND
T1BFRF9UUkFDRSgpIGFuZCB2YXJpb3VzIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgY2FuIGJlCiAv
LyB1c2VkIGluIGEgbGFyZ2UgbnVtYmVyIG9mIHRocmVhZHMgY29uY3VycmVudGx5LgogCi0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgogCi0jaW5jbHVk
ZSA8aW9zdHJlYW0+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi0vLyBXZSBtdXN0IGRlZmluZSB0aGlz
IG1hY3JvIGluIG9yZGVyIHRvICNpbmNsdWRlCi0vLyBndGVzdC1pbnRlcm5hbC1pbmwuaC4gIFRo
aXMgaXMgaG93IEdvb2dsZSBUZXN0IHByZXZlbnRzIGEgdXNlciBmcm9tCi0vLyBhY2NpZGVudGFs
bHkgZGVwZW5kaW5nIG9uIGl0cyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4KLSNkZWZpbmUgR1RF
U1RfSU1QTEVNRU5UQVRJT05fIDEKICNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgi
Ci0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCiAKICNpZiBHVEVTVF9JU19USFJFQURTQUZF
CiAKQEAgLTUwLDcgKzQzLDYgQEAgbmFtZXNwYWNlIHRlc3RpbmcgewogbmFtZXNwYWNlIHsKIAog
dXNpbmcgaW50ZXJuYWw6Ok5vdGlmaWNhdGlvbjsKLXVzaW5nIGludGVybmFsOjpTdHJpbmc7CiB1
c2luZyBpbnRlcm5hbDo6VGVzdFByb3BlcnR5S2V5SXM7CiB1c2luZyBpbnRlcm5hbDo6VGhyZWFk
V2l0aFBhcmFtOwogdXNpbmcgaW50ZXJuYWw6OnNjb3BlZF9wdHI7CkBAIC02MiwxMyArNTQsMTMg
QEAgdXNpbmcgaW50ZXJuYWw6OnNjb3BlZF9wdHI7CiAvLyBIb3cgbWFueSB0aHJlYWRzIHRvIGNy
ZWF0ZT8KIGNvbnN0IGludCBrVGhyZWFkQ291bnQgPSA1MDsKIAotU3RyaW5nIElkVG9LZXkoaW50
IGlkLCBjb25zdCBjaGFyKiBzdWZmaXgpIHsKK3N0ZDo6c3RyaW5nIElkVG9LZXkoaW50IGlkLCBj
b25zdCBjaGFyKiBzdWZmaXgpIHsKICAgTWVzc2FnZSBrZXk7CiAgIGtleSA8PCAia2V5XyIgPDwg
aWQgPDwgIl8iIDw8IHN1ZmZpeDsKICAgcmV0dXJuIGtleS5HZXRTdHJpbmcoKTsKIH0KIAotU3Ry
aW5nIElkVG9TdHJpbmcoaW50IGlkKSB7CitzdGQ6OnN0cmluZyBJZFRvU3RyaW5nKGludCBpZCkg
ewogICBNZXNzYWdlIGlkX21lc3NhZ2U7CiAgIGlkX21lc3NhZ2UgPDwgaWQ7CiAgIHJldHVybiBp
ZF9tZXNzYWdlLkdldFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF90ZXN0X21hY3JvX3N0YWNrX2Zvb3RwcmludF90ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0X21hY3JvX3N0YWNrX2Zvb3RwcmludF90
ZXN0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE0OGRiMDUwMTJjYzMwZTBlZGY0YTEzNTRmZjM5MmM5MmQwMDBi
ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X3Rlc3RfbWFjcm9fc3RhY2tfZm9vdHByaW50X3Rlc3QuY2MKQEAgLTAsMCArMSw4OSBAQAorLy8g
Q29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0
cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisv
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLworLy8gRWFjaCBU
RVNUKCkgZXhwYW5kcyB0byBzb21lIHN0YXRpYyByZWdpc3RyYXRpb24gbG9naWMuICBHQ0MgcHV0
cyBhbGwKKy8vIHN1Y2ggc3RhdGljIGluaXRpYWxpemF0aW9uIGxvZ2ljIGZvciBhIHRyYW5zbGF0
aW9uIHVuaXQgaW4gYSBjb21tb24sCisvLyBpbnRlcm5hbCBmdW5jdGlvbi4gIFNpbmNlIEdvb2ds
ZSdzIGJ1aWxkIHN5c3RlbSByZXN0cmljdHMgaG93IG11Y2gKKy8vIHN0YWNrIHNwYWNlIGEgZnVu
Y3Rpb24gY2FuIHVzZSwgdGhlcmUncyBhIGxpbWl0IG9uIGhvdyBtYW55IFRFU1QoKXMKKy8vIG9u
ZSBjYW4gcHV0IGluIGEgc2luZ2xlIEMrKyB0ZXN0IGZpbGUuICBUaGlzIHRlc3QgZW5zdXJlcyB0
aGF0IGEgbGFyZ2UKKy8vIG51bWJlciBvZiBURVNUKClzIGNhbiBiZSBkZWZpbmVkIGluIHRoZSBz
YW1lIHRyYW5zbGF0aW9uIHVuaXQuCisKKyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorCisvLyBU
aGlzIG1hY3JvIGRlZmluZXMgMTAgZHVtbXkgdGVzdHMuCisjZGVmaW5lIFRFTl9URVNUU18odGVz
dF9jYXNlX25hbWUpIFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDApIHt9IFwKKyAgVEVTVCh0
ZXN0X2Nhc2VfbmFtZSwgVDEpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDIpIHt9IFwK
KyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDMpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwg
VDQpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDUpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nh
c2VfbmFtZSwgVDYpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDcpIHt9IFwKKyAgVEVT
VCh0ZXN0X2Nhc2VfbmFtZSwgVDgpIHt9IFwKKyAgVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgVDkpIHt9
CisKKy8vIFRoaXMgbWFjcm8gZGVmaW5lcyAxMDAgZHVtbXkgdGVzdHMuCisjZGVmaW5lIEhVTkRS
RURfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCkgXAorICBURU5fVEVTVFNfKHRlc3RfY2Fz
ZV9uYW1lX3ByZWZpeCAjIyAwKSBcCisgIFRFTl9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4
ICMjIDEpIFwKKyAgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgMikgXAorICBU
RU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyAzKSBcCisgIFRFTl9URVNUU18odGVz
dF9jYXNlX25hbWVfcHJlZml4ICMjIDQpIFwKKyAgVEVOX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9w
cmVmaXggIyMgNSkgXAorICBURU5fVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCAjIyA2KSBc
CisgIFRFTl9URVNUU18odGVzdF9jYXNlX25hbWVfcHJlZml4ICMjIDcpIFwKKyAgVEVOX1RFU1RT
Xyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgOCkgXAorICBURU5fVEVTVFNfKHRlc3RfY2FzZV9u
YW1lX3ByZWZpeCAjIyA5KQorCisvLyBUaGlzIG1hY3JvIGRlZmluZXMgMTAwMCBkdW1teSB0ZXN0
cy4KKyNkZWZpbmUgVEhPVVNBTkRfVEVTVFNfKHRlc3RfY2FzZV9uYW1lX3ByZWZpeCkgXAorICBI
VU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgMCkgXAorICBIVU5EUkVEX1RF
U1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgMSkgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0
X2Nhc2VfbmFtZV9wcmVmaXggIyMgMikgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFt
ZV9wcmVmaXggIyMgMykgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXgg
IyMgNCkgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgNSkgXAor
ICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgNikgXAorICBIVU5EUkVE
X1RFU1RTXyh0ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgNykgXAorICBIVU5EUkVEX1RFU1RTXyh0
ZXN0X2Nhc2VfbmFtZV9wcmVmaXggIyMgOCkgXAorICBIVU5EUkVEX1RFU1RTXyh0ZXN0X2Nhc2Vf
bmFtZV9wcmVmaXggIyMgOSkKKworLy8gRW5zdXJlcyB0aGF0IHdlIGNhbiBkZWZpbmUgMTAwMCBU
RVNUKClzIGluIHRoZSBzYW1lIHRyYW5zbGF0aW9uCisvLyB1bml0LgorVEhPVVNBTkRfVEVTVFNf
KFQpCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICB0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisKKyAgLy8gV2UgZG9uJ3QgYWN0dWFsbHkgbmVlZCB0
byBydW4gdGhlIGR1bW15IHRlc3RzIC0gdGhlIHB1cnBvc2UgaXMgdG8KKyAgLy8gZW5zdXJlIHRo
YXQgdGhleSBjb21waWxlLgorICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGVzdF91dGlscy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGVzdF91dGlscy5weQppbmRleCBlMGY1OTczZTdlYTZmODFlNjY2
YzMxMjFjM2M4ZmE4NDNmNDM0ZjYxLi40M2NiYThmNGNkNjFkZmZmM2ExYTUyMTAxYmVkM2U3MzRh
NWUxYjU0IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rl
c3RfdXRpbHMucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0
X3V0aWxzLnB5CkBAIC0xLDUgKzEsMyBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCiAjIENv
cHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgogIyBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwpAQCAt
MjksMjAgKzI3LDIxIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0iIiJVbml0
IHRlc3QgdXRpbGl0aWVzIGZvciBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrLiIiIgorIiIi
VW5pdCB0ZXN0IHV0aWxpdGllcyBmb3IgR29vZ2xlIEMrKyBUZXN0aW5nIGFuZCBNb2NraW5nIEZy
YW1ld29yay4iIiIKKyMgU3VwcHJlc3NlcyB0aGUgJ0ltcG9ydCBub3QgYXQgdGhlIHRvcCBvZiB0
aGUgZmlsZScgbGludCBjb21wbGFpbnQuCisjIHB5bGludDogZGlzYWJsZS1tc2c9QzYyMDQKKwor
aW1wb3J0IG9zCitpbXBvcnQgc3lzCiAKLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbiknCitJU19XSU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCitJU19DWUdXSU4gPSBv
cy5uYW1lID09ICdwb3NpeCcgYW5kICdDWUdXSU4nIGluIG9zLnVuYW1lKClbMF0KIAogaW1wb3J0
IGF0ZXhpdAotaW1wb3J0IG9zCiBpbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3lzCiBpbXBvcnQgdGVt
cGZpbGUKLWltcG9ydCB1bml0dGVzdAotX3Rlc3RfbW9kdWxlID0gdW5pdHRlc3QKK2ltcG9ydCB1
bml0dGVzdCBhcyBfdGVzdF9tb2R1bGUKIAotIyBTdXBwcmVzc2VzIHRoZSAnSW1wb3J0IG5vdCBh
dCB0aGUgdG9wIG9mIHRoZSBmaWxlJyBsaW50IGNvbXBsYWludC4KLSMgcHlsaW50OiBkaXNhYmxl
LW1zZz1DNjIwNAogdHJ5OgogICBpbXBvcnQgc3VicHJvY2VzcwogICBfU1VCUFJPQ0VTU19NT0RV
TEVfQVZBSUxBQkxFID0gVHJ1ZQpAQCAtNTMsMTggKzUyLDMwIEBAIGV4Y2VwdDoKIAogR1RFU1Rf
T1VUUFVUX1ZBUl9OQU1FID0gJ0dURVNUX09VVFBVVCcKIAotSVNfV0lORE9XUyA9IG9zLm5hbWUg
PT0gJ250JwotSVNfQ1lHV0lOID0gb3MubmFtZSA9PSAncG9zaXgnIGFuZCAnQ1lHV0lOJyBpbiBv
cy51bmFtZSgpWzBdCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3Igc3BlY2lmeWluZyB0
aGUgcGF0aCB0byB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZS4KK1BSRU1BVFVSRV9FWElUX0ZJTEVf
RU5WX1ZBUiA9ICdURVNUX1BSRU1BVFVSRV9FWElUX0ZJTEUnCisKK2Vudmlyb24gPSBvcy5lbnZp
cm9uLmNvcHkoKQorCisKK2RlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgorICAiIiJTZXRz
L3Vuc2V0cyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIGdpdmVuIHZhbHVlLiIiIgorCisg
IGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAgIGVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQorICBl
bGlmIGVudl92YXIgaW4gZW52aXJvbjoKKyAgICBkZWwgZW52aXJvbltlbnZfdmFyXQorCiAKICMg
SGVyZSB3ZSBleHBvc2UgYSBjbGFzcyBmcm9tIGEgcGFydGljdWxhciBtb2R1bGUsIGRlcGVuZGlu
ZyBvbiB0aGUKICMgZW52aXJvbm1lbnQuIFRoZSBjb21tZW50IHN1cHByZXNzZXMgdGhlICdJbnZh
bGlkIHZhcmlhYmxlIG5hbWUnIGxpbnQKICMgY29tcGxhaW50LgotVGVzdENhc2UgPSBfdGVzdF9t
b2R1bGUuVGVzdENhc2UgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwOQorVGVzdENhc2UgPSBf
dGVzdF9tb2R1bGUuVGVzdENhc2UgICMgcHlsaW50OiBkaXNhYmxlPUM2NDA5CiAKICMgSW5pdGlh
bGx5IG1hcHMgYSBmbGFnIHRvIGl0cyBkZWZhdWx0IHZhbHVlLiBBZnRlcgogIyBfUGFyc2VBbmRT
dHJpcEdUZXN0RmxhZ3MoKSBpcyBjYWxsZWQsIG1hcHMgYSBmbGFnIHRvIGl0cyBhY3R1YWwgdmFs
dWUuCi1fZmxhZ19tYXAgPSB7J2d0ZXN0X3NvdXJjZV9kaXInOiBvcy5wYXRoLmRpcm5hbWUoc3lz
LmFyZ3ZbMF0pLAotICAgICAgICAgICAgICdndGVzdF9idWlsZF9kaXInOiBvcy5wYXRoLmRpcm5h
bWUoc3lzLmFyZ3ZbMF0pfQorX2ZsYWdfbWFwID0geydzb3VyY2VfZGlyJzogb3MucGF0aC5kaXJu
YW1lKHN5cy5hcmd2WzBdKSwKKyAgICAgICAgICAgICAnYnVpbGRfZGlyJzogb3MucGF0aC5kaXJu
YW1lKHN5cy5hcmd2WzBdKX0KIF9ndGVzdF9mbGFnc19hcmVfcGFyc2VkID0gRmFsc2UKIAogCkBA
IC03Myw3ICs4NCw3IEBAIGRlZiBfUGFyc2VBbmRTdHJpcEdUZXN0RmxhZ3MoYXJndik6CiAKICAg
IyBTdXBwcmVzc2VzIHRoZSBsaW50IGNvbXBsYWludCBhYm91dCBhIGdsb2JhbCB2YXJpYWJsZSBz
aW5jZSB3ZSBuZWVkIGl0CiAgICMgaGVyZSB0byBtYWludGFpbiBtb2R1bGUtd2lkZSBzdGF0ZS4K
LSAgZ2xvYmFsIF9ndGVzdF9mbGFnc19hcmVfcGFyc2VkICAjIHB5bGludDogZGlzYWJsZS1tc2c9
VzA2MDMKKyAgZ2xvYmFsIF9ndGVzdF9mbGFnc19hcmVfcGFyc2VkICAjIHB5bGludDogZGlzYWJs
ZT1XMDYwMwogICBpZiBfZ3Rlc3RfZmxhZ3NfYXJlX3BhcnNlZDoKICAgICByZXR1cm4KIApAQCAt
MTExLDEzICsxMjIsMTMgQEAgZGVmIEdldEZsYWcoZmxhZyk6CiBkZWYgR2V0U291cmNlRGlyKCk6
CiAgICIiIlJldHVybnMgdGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGRpcmVjdG9yeSB3aGVyZSB0
aGUgLnB5IGZpbGVzIGFyZS4iIiIKIAotICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKEdldEZsYWco
J2d0ZXN0X3NvdXJjZV9kaXInKSkKKyAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChHZXRGbGFnKCdz
b3VyY2VfZGlyJykpCiAKIAogZGVmIEdldEJ1aWxkRGlyKCk6CiAgICIiIlJldHVybnMgdGhlIGFi
c29sdXRlIHBhdGggb2YgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgdGVzdCBiaW5hcmllcyBhcmUu
IiIiCiAKLSAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChHZXRGbGFnKCdndGVzdF9idWlsZF9kaXIn
KSkKKyAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChHZXRGbGFnKCdidWlsZF9kaXInKSkKIAogCiBf
dGVtcF9kaXIgPSBOb25lCkBAIC0xMzAsOCArMTQxLDYgQEAgYXRleGl0LnJlZ2lzdGVyKF9SZW1v
dmVUZW1wRGlyKQogCiAKIGRlZiBHZXRUZW1wRGlyKCk6Ci0gICIiIlJldHVybnMgYSBkaXJlY3Rv
cnkgZm9yIHRlbXBvcmFyeSBmaWxlcy4iIiIKLQogICBnbG9iYWwgX3RlbXBfZGlyCiAgIGlmIG5v
dCBfdGVtcF9kaXI6CiAgICAgX3RlbXBfZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCkBAIC0xNjAs
MTMgKzE2OSw5IEBAIGRlZiBHZXRUZXN0RXhlY3V0YWJsZVBhdGgoZXhlY3V0YWJsZV9uYW1lLCBi
dWlsZF9kaXI9Tm9uZSk6CiAKICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgpOgogICAgIG1l
c3NhZ2UgPSAoCi0gICAgICAgICdVbmFibGUgdG8gZmluZCB0aGUgdGVzdCBiaW5hcnkuIFBsZWFz
ZSBtYWtlIHN1cmUgdG8gcHJvdmlkZSBwYXRoXG4nCi0gICAgICAgICd0byB0aGUgYmluYXJ5IHZp
YSB0aGUgLS1ndGVzdF9idWlsZF9kaXIgZmxhZyBvciB0aGUgR1RFU1RfQlVJTERfRElSXG4nCi0g
ICAgICAgICdlbnZpcm9ubWVudCB2YXJpYWJsZS4gRm9yIGNvbnZlbmllbnQgdXNlLCBpbnZva2Ug
dGhpcyBzY3JpcHQgdmlhXG4nCi0gICAgICAgICdta190ZXN0LnB5LlxuJwotICAgICAgICAjIFRP
RE8odmxhZGxAZ29vZ2xlLmNvbSk6IGNoYW5nZSBta190ZXN0LnB5IHRvIHRlc3QucHkgYWZ0ZXIg
cmVuYW1pbmcKLSAgICAgICAgIyB0aGUgZmlsZS4KLSAgICAgICAgJ1BsZWFzZSBydW4gbWtfdGVz
dC5weSAtaCBmb3IgaGVscC4nKQorICAgICAgICAnVW5hYmxlIHRvIGZpbmQgdGhlIHRlc3QgYmlu
YXJ5ICIlcyIuIFBsZWFzZSBtYWtlIHN1cmUgdG8gcHJvdmlkZVxuJworICAgICAgICAnYSBwYXRo
IHRvIHRoZSBiaW5hcnkgdmlhIHRoZSAtLWJ1aWxkX2RpciBmbGFnIG9yIHRoZSBCVUlMRF9ESVJc
bicKKyAgICAgICAgJ2Vudmlyb25tZW50IHZhcmlhYmxlLicgJSBwYXRoKQogICAgIHByaW50ID4+
IHN5cy5zdGRlcnIsIG1lc3NhZ2UKICAgICBzeXMuZXhpdCgxKQogCkBAIC0yMzQsNyArMjM5LDcg
QEAgY2xhc3MgU3VicHJvY2VzczoKICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNvbW1hbmQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRl
cnI9c3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPXdvcmtpbmdfZGlyLCB1
bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwgZW52PWVudikKLSAgICAgICMgY29tbXVuaWNhdGUgcmV0
dXJucyBhIHR1cGxlIHdpdGggdGhlIGZpbGUgb2JlY3QgZm9yIHRoZSBjaGlsZCdzCisgICAgICAj
IGNvbW11bmljYXRlIHJldHVybnMgYSB0dXBsZSB3aXRoIHRoZSBmaWxlIG9iamVjdCBmb3IgdGhl
IGNoaWxkJ3MKICAgICAgICMgb3V0cHV0LgogICAgICAgc2VsZi5vdXRwdXQgPSBwLmNvbW11bmlj
YXRlKClbMF0KICAgICAgIHNlbGYuX3JldHVybl9jb2RlID0gcC5yZXR1cm5jb2RlCkBAIC0yNDUs
NyArMjUwLDcgQEAgY2xhc3MgU3VicHJvY2VzczoKICAgICAgICAgIyBDaGFuZ2VzIG1hZGUgYnkg
b3MuZW52aXJvbi5jbGVhciBhcmUgbm90IGluaGVyaXRhYmxlIGJ5IGNoaWxkCiAgICAgICAgICMg
cHJvY2Vzc2VzIHVudGlsIFB5dGhvbiAyLjYuIFRvIHByb2R1Y2UgaW5oZXJpdGFibGUgY2hhbmdl
cyB3ZSBoYXZlCiAgICAgICAgICMgdG8gZGVsZXRlIGVudmlyb25tZW50IGl0ZW1zIHdpdGggdGhl
IGRlbCBzdGF0ZW1lbnQuCi0gICAgICAgIGZvciBrZXkgaW4gZGVzdDoKKyAgICAgICAgZm9yIGtl
eSBpbiBkZXN0LmtleXMoKToKICAgICAgICAgICBkZWwgZGVzdFtrZXldCiAgICAgICAgIGRlc3Qu
dXBkYXRlKHNyYykKIApAQCAtMzAxLDcgKzMwNiw3IEBAIGRlZiBNYWluKCk6CiAgIF9QYXJzZUFu
ZFN0cmlwR1Rlc3RGbGFncyhzeXMuYXJndikKICAgIyBUaGUgdGVzdGVkIGJpbmFyaWVzIHNob3Vs
ZCBub3QgYmUgd3JpdGluZyBYTUwgb3V0cHV0IGZpbGVzIHVubGVzcyB0aGUKICAgIyBzY3JpcHQg
ZXhwbGljaXRseSBpbnN0cnVjdHMgdGhlbSB0by4KLSAgIyBUT0RPKHZsYWRsQGdvb2dsZS5jb20p
OiBNb3ZlIHRoaXMgaW50byBTdWJwcm9jZXNzIHdoZW4gd2UgaW1wbGVtZW50CisgICMgRklYTUU6
IE1vdmUgdGhpcyBpbnRvIFN1YnByb2Nlc3Mgd2hlbiB3ZSBpbXBsZW1lbnQKICAgIyBwYXNzaW5n
IGVudmlyb25tZW50IGludG8gaXQgYXMgYSBwYXJhbWV0ZXIuCiAgIGlmIEdURVNUX09VVFBVVF9W
QVJfTkFNRSBpbiBvcy5lbnZpcm9uOgogICAgIGRlbCBvcy5lbnZpcm9uW0dURVNUX09VVFBVVF9W
QVJfTkFNRV0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
dGVzdGJyaWRnZV90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90
ZXN0YnJpZGdlX3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdmZmFkNzNkNDAwNjUyOThmMzA1MDBkZTgy
NGQ4MDhiNjU3MWQ4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfdGVzdGJyaWRnZV90ZXN0LnB5CkBAIC0wLDAgKzEsNjMgQEAKKyMhL3Vzci9i
aW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxOCBHb29nbGUgTExDLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMg
ZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlZlcmlmaWVzIHRoYXQgR29vZ2xlIFRl
c3QgdXNlcyBmaWx0ZXIgcHJvdmlkZWQgdmlhIHRlc3RicmlkZ2UuIiIiCisKK2ltcG9ydCBvcwor
CitpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscworCitiaW5hcnlfbmFtZSA9ICdndGVzdF90ZXN0YnJp
ZGdlX3Rlc3RfJworQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQ
YXRoKGJpbmFyeV9uYW1lKQorVEVTVEJSSURHRV9OQU1FID0gJ1RFU1RCUklER0VfVEVTVF9PTkxZ
JworCisKK2RlZiBBc3NlcnQoY29uZGl0aW9uKToKKyAgaWYgbm90IGNvbmRpdGlvbjoKKyAgICBy
YWlzZSBBc3NlcnRpb25FcnJvcgorCisKK2NsYXNzIEdUZXN0VGVzdEZpbHRlclRlc3QoZ3Rlc3Rf
dGVzdF91dGlscy5UZXN0Q2FzZSk6CisKKyAgZGVmIHRlc3RUZXN0RXhlY3V0aW9uSXNGaWx0ZXJl
ZChzZWxmKToKKyAgICAiIiJUZXN0cyB0aGF0IHRoZSB0ZXN0IGZpbHRlciBpcyBwaWNrZWQgdXAg
ZnJvbSB0aGUgdGVzdGJyaWRnZSBlbnYgdmFyLiIiIgorICAgIHN1YnByb2Nlc3NfZW52ID0gb3Mu
ZW52aXJvbi5jb3B5KCkKKworICAgIHN1YnByb2Nlc3NfZW52W1RFU1RCUklER0VfTkFNRV0gPSAn
Ki5UZXN0VGhhdFN1Y2NlZWRzJworICAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3Mo
Q09NTUFORCwgZW52PXN1YnByb2Nlc3NfZW52KQorCisgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwg
cC5leGl0X2NvZGUpCisKKyAgICBBc3NlcnQoJ2ZpbHRlciA9ICouVGVzdFRoYXRTdWNjZWVkcycg
aW4gcC5vdXRwdXQpCisgICAgQXNzZXJ0KCdbICAgICAgIE9LIF0gVGVzdEZpbHRlclRlc3QuVGVz
dFRoYXRTdWNjZWVkcycgaW4gcC5vdXRwdXQpCisgICAgQXNzZXJ0KCdbICBQQVNTRUQgIF0gMSB0
ZXN0LicgaW4gcC5vdXRwdXQpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgZ3Rl
c3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfdGVzdGJyaWRnZV90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3Rlc3QvZ3Rlc3RfdGVzdGJyaWRnZV90ZXN0Xy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDYxN2IyMDllMTBh
OWQxNzk4MzY4ZTI2NDY1YWFhNjI3MTVmMGVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90ZXN0YnJpZGdlX3Rlc3RfLmNjCkBAIC0wLDAgKzEs
NDMgQEAKKy8vIENvcHlyaWdodCAyMDE4LCBHb29nbGUgTExDLgorLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisv
LyBUaGlzIHByb2dyYW0gaXMgbWVhbnQgdG8gYmUgcnVuIGJ5IGd0ZXN0X3Rlc3RfZmlsdGVyX3Rl
c3QucHkuICBEbyBub3QgcnVuCisvLyBpdCBkaXJlY3RseS4KKworI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCisKKy8vIFRoZXNlIHRlc3RzIGFyZSB1c2VkIHRvIGRldGVjdCBpZiBmaWx0ZXJpbmcg
aXMgd29ya2luZy4gT25seQorLy8gJ1Rlc3RUaGF0U3VjY2VlZHMnIHNob3VsZCBldmVyIHJ1bi4K
KworVEVTVChUZXN0RmlsdGVyVGVzdCwgVGVzdFRoYXRTdWNjZWVkcykge30KKworVEVTVChUZXN0
RmlsdGVyVGVzdCwgVGVzdFRoYXRGYWlscykgeworICBBU1NFUlRfVFJVRShmYWxzZSkgPDwgIlRo
aXMgdGVzdCBzaG91bGQgbmV2ZXIgYmUgcnVuLiI7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfZXhfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9leF90ZXN0
LmNjCmluZGV4IDhiZjlkYzkwNWI1ZmY4M2FjMDIxMDQxMzQzNTgwZjkwOTc1NDgzY2UuLjkzZjU5
ZDQ5Y2ZkYjk0NzRkY2E2MjJjMTdhMmM5NjRhYjBiZDU4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9leF90ZXN0LmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9l
eF90ZXN0LmNjCkBAIC0yNiwxMiArMjYsMTEgQEAKIC8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFu
eW9uZyBXYW4pCisKIAogLy8gVGVzdHMgR29vZ2xlIFRlc3QncyB0aHJvdy1vbi1mYWlsdXJlIG1v
ZGUgd2l0aCBleGNlcHRpb25zIGVuYWJsZWQuCiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgor
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRl
IDxzdGRpby5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVz
dF90aHJvd19vbl9mYWlsdXJlX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggNTY3OGZmZWFmNmZhNjFlZjdkY2I0NWI4ZjM0YTAzNDExOTFhYmY2ZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdC5weQorKysgL2Rldi9udWxsCkBA
IC0xLDE3MSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIw
MDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0j
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi0iIiJUZXN0cyBHb29nbGUgVGVzdCdzIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRoIGV4
Y2VwdGlvbnMgZGlzYWJsZWQuCi0KLVRoaXMgc2NyaXB0IGludm9rZXMgZ3Rlc3RfdGhyb3dfb25f
ZmFpbHVyZV90ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aAotR29vZ2xlIFRlc3QpIHdpdGgg
ZGlmZmVyZW50IGVudmlyb25tZW50cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdzLgotIiIiCi0KLV9f
YXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBvcwot
aW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLQotCi0jIENvbnN0YW50cy4KLQotIyBUaGUgY29tbWFu
ZCBsaW5lIGZsYWcgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgdGhyb3ctb24tZmFpbHVyZSBt
b2RlLgotVEhST1dfT05fRkFJTFVSRSA9ICdndGVzdF90aHJvd19vbl9mYWlsdXJlJwotCi0jIFBh
dGggdG8gdGhlIGd0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8gcHJvZ3JhbSwgY29tcGlsZWQg
d2l0aAotIyBleGNlcHRpb25zIGRpc2FibGVkLgotRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxz
LkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKLSAgICAnZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0
XycpCi0KLQotIyBVdGlsaXRpZXMuCi0KLQotZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6
Ci0gICIiIlNldHMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSBnaXZlbiB2YWx1ZTsgdW5z
ZXRzIGl0IHdoZW4gdGhlCi0gIGdpdmVuIHZhbHVlIGlzIE5vbmUuCi0gICIiIgotCi0gIGVudl92
YXIgPSBlbnZfdmFyLnVwcGVyKCkKLSAgaWYgdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgb3MuZW52
aXJvbltlbnZfdmFyXSA9IHZhbHVlCi0gIGVsaWYgZW52X3ZhciBpbiBvcy5lbnZpcm9uOgotICAg
IGRlbCBvcy5lbnZpcm9uW2Vudl92YXJdCi0KLQotZGVmIFJ1bihjb21tYW5kKToKLSAgIiIiUnVu
cyBhIGNvbW1hbmQ7IHJldHVybnMgVHJ1ZS9GYWxzZSBpZiBpdHMgZXhpdCBjb2RlIGlzL2lzbid0
IDAuIiIiCi0KLSAgcHJpbnQgJ1J1bm5pbmcgIiVzIi4gLiAuJyAlICcgJy5qb2luKGNvbW1hbmQp
Ci0gIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKLSAgcmV0dXJuIHAu
ZXhpdGVkIGFuZCBwLmV4aXRfY29kZSA9PSAwCi0KLQotIyBUaGUgdGVzdHMuICBUT0RPKHdhbkBn
b29nbGUuY29tKTogcmVmYWN0b3IgdGhlIGNsYXNzIHRvIHNoYXJlIGNvbW1vbgotIyBsb2dpYyB3
aXRoIGNvZGUgaW4gZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdC5weS4KLWNsYXNzIFRo
cm93T25GYWlsdXJlVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAgIiIiVGVzdHMg
dGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZS4iIiIKLQotICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYs
IGVudl92YXJfdmFsdWUsIGZsYWdfdmFsdWUsIHNob3VsZF9mYWlsKToKLSAgICAiIiJSdW5zIGd0
ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8gYW5kIHZlcmlmaWVzIHRoYXQgaXQgZG9lcwotICAg
IChvciBkb2VzIG5vdCkgZXhpdCB3aXRoIGEgbm9uLXplcm8gY29kZS4KLQotICAgIEFyZ3M6Ci0g
ICAgICBlbnZfdmFyX3ZhbHVlOiAgICB2YWx1ZSBvZiB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVS
RSBlbnZpcm9ubWVudAotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGU7IE5vbmUgaWYg
dGhlIHZhcmlhYmxlIHNob3VsZCBiZSB1bnNldC4KLSAgICAgIGZsYWdfdmFsdWU6ICAgICAgIHZh
bHVlIG9mIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZzsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgotICAgICAg
c2hvdWxkX2ZhaWw6ICAgICAgVHJ1ZSBpZmYgdGhlIHByb2dyYW0gaXMgZXhwZWN0ZWQgdG8gZmFp
bC4KLSAgICAiIiIKLQotICAgIFNldEVudlZhcihUSFJPV19PTl9GQUlMVVJFLCBlbnZfdmFyX3Zh
bHVlKQotCi0gICAgaWYgZW52X3Zhcl92YWx1ZSBpcyBOb25lOgotICAgICAgZW52X3Zhcl92YWx1
ZV9tc2cgPSAnIGlzIG5vdCBzZXQnCi0gICAgZWxzZToKLSAgICAgIGVudl92YXJfdmFsdWVfbXNn
ID0gJz0nICsgZW52X3Zhcl92YWx1ZQotCi0gICAgaWYgZmxhZ192YWx1ZSBpcyBOb25lOgotICAg
ICAgZmxhZyA9ICcnCi0gICAgZWxpZiBmbGFnX3ZhbHVlID09ICcwJzoKLSAgICAgIGZsYWcgPSAn
LS0lcz0wJyAlIFRIUk9XX09OX0ZBSUxVUkUKLSAgICBlbHNlOgotICAgICAgZmxhZyA9ICctLSVz
JyAlIFRIUk9XX09OX0ZBSUxVUkUKLQotICAgIGNvbW1hbmQgPSBbRVhFX1BBVEhdCi0gICAgaWYg
ZmxhZzoKLSAgICAgIGNvbW1hbmQuYXBwZW5kKGZsYWcpCi0KLSAgICBpZiBzaG91bGRfZmFpbDoK
LSAgICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxkJwotICAgIGVsc2U6Ci0gICAgICBzaG91bGRf
b3Jfbm90ID0gJ3Nob3VsZCBub3QnCi0KLSAgICBmYWlsZWQgPSBub3QgUnVuKGNvbW1hbmQpCi0K
LSAgICBTZXRFbnZWYXIoVEhST1dfT05fRkFJTFVSRSwgTm9uZSkKLQotICAgIG1zZyA9ICgnd2hl
biAlcyVzLCBhbiBhc3NlcnRpb24gZmFpbHVyZSBpbiAiJXMiICVzIGNhdXNlIGEgbm9uLXplcm8g
JwotICAgICAgICAgICAnZXhpdCBjb2RlLicgJQotICAgICAgICAgICAoVEhST1dfT05fRkFJTFVS
RSwgZW52X3Zhcl92YWx1ZV9tc2csICcgJy5qb2luKGNvbW1hbmQpLAotICAgICAgICAgICAgc2hv
dWxkX29yX25vdCkpCi0gICAgc2VsZi5hc3NlcnRfKGZhaWxlZCA9PSBzaG91bGRfZmFpbCwgbXNn
KQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9yKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBi
ZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBtb2RlLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnko
ZW52X3Zhcl92YWx1ZT1Ob25lLCBmbGFnX3ZhbHVlPU5vbmUsIHNob3VsZF9mYWlsPUZhbHNlKQot
Ci0gIGRlZiB0ZXN0VGhyb3dPbkZhaWx1cmVFbnZWYXIoc2VsZik6Ci0gICAgIiIiVGVzdHMgdXNp
bmcgdGhlIEdURVNUX1RIUk9XX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFyaWFibGUuIiIiCi0K
LSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAg
ICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2Zh
aWw9RmFsc2UpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0gICAg
ICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAg
IHNob3VsZF9mYWlsPVRydWUpCi0KLSAgZGVmIHRlc3RUaHJvd09uRmFpbHVyZUZsYWcoc2VsZik6
Ci0gICAgIiIiVGVzdHMgdXNpbmcgdGhlIC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZSBmbGFnLiIi
IgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAotICAgICAgICAg
ICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIHNob3Vs
ZF9mYWlsPUZhbHNlKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwK
LSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAg
ICAgICBzaG91bGRfZmFpbD1UcnVlKQotCi0gIGRlZiB0ZXN0VGhyb3dPbkZhaWx1cmVGbGFnT3Zl
cnJpZGVzRW52VmFyKHNlbGYpOgotICAgICIiIlRlc3RzIHRoYXQgLS1ndGVzdF90aHJvd19vbl9m
YWlsdXJlIG92ZXJyaWRlcyBHVEVTVF9USFJPV19PTl9GQUlMVVJFLiIiIgotCi0gICAgc2VsZi5S
dW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZmxh
Z192YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9RmFsc2UpCi0g
ICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9
VHJ1ZSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAg
ICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBzaG91
bGRfZmFpbD1GYWxzZSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywK
LSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAg
ICAgICBzaG91bGRfZmFpbD1UcnVlKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0g
IGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9n
dGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2MKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4ZmJkNWE3NmRjOTIwNmY0YTAyOTUxNGI4NzZkYzAxNDFl
MzZiZmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3RfLmNj
CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDksIEdvb2ds
ZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKLQotLy8gVGVzdHMgR29vZ2xlIFRlc3QncyB0aHJvdy1vbi1mYWlsdXJlIG1vZGUg
d2l0aCBleGNlcHRpb25zIGRpc2FibGVkLgotLy8KLS8vIFRoaXMgcHJvZ3JhbSBtdXN0IGJlIGNv
bXBpbGVkIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4gIEl0IHdpbGwgYmUKLS8vIGludm9rZWQg
YnkgZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0LnB5LCBhbmQgaXMgZXhwZWN0ZWQgdG8gZXhp
dAotLy8gd2l0aCBub24temVybyBpbiB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlIG9yIDAgb3Ro
ZXJ3aXNlLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KSB7Ci0gIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsK
LQotICAvLyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IHBlb3BsZSBjYW4gdXNlIEdvb2dsZSBUZXN0
IGFzc2VydGlvbnMgaW4KLSAgLy8gb3RoZXIgdGVzdGluZyBmcmFtZXdvcmtzLCBhcyBsb25nIGFz
IHRoZXkgaW5pdGlhbGl6ZSBHb29nbGUgVGVzdAotICAvLyBwcm9wZXJseSBhbmQgc2V0IHRoZSB0
aHJvd24tb24tZmFpbHVyZSBtb2RlLiAgVGhlcmVmb3JlLCB3ZSBkb24ndAotICAvLyB1c2UgR29v
Z2xlIFRlc3QncyBjb25zdHJ1Y3RzIGZvciBkZWZpbmluZyBhbmQgcnVubmluZyB0ZXN0cwotICAv
LyAoZS5nLiBURVNUIGFuZCBSVU5fQUxMX1RFU1RTKSBoZXJlLgotCi0gIC8vIEluIHRoZSB0aHJv
dy1vbi1mYWlsdXJlIG1vZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLCB0aGlzCi0gIC8vIGFz
c2VydGlvbiB3aWxsIGNhdXNlIHRoZSBwcm9ncmFtIHRvIGV4aXQgd2l0aCBhIG5vbi16ZXJvIGNv
ZGUuCi0gIEVYUEVDVF9FUSgyLCAzKTsKLQotICAvLyBXaGVuIG5vdCBpbiB0aGUgdGhyb3ctb24t
ZmFpbHVyZSBtb2RlLCB0aGUgY29udHJvbCB3aWxsIHJlYWNoCi0gIC8vIGhlcmUuCi0gIHJldHVy
biAwOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91
bmluaXRpYWxpemVkX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0
X3VuaW5pdGlhbGl6ZWRfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNmFl
NTdlZWVkYWZjZjA3NTA0ZGQ4ZDVkN2E4YjVhN2Y4MzgxM2YyNy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0
L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAg
QEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlZlcmlm
aWVzIHRoYXQgR29vZ2xlIFRlc3Qgd2FybnMgdGhlIHVzZXIgd2hlbiBub3QgaW5pdGlhbGl6ZWQg
cHJvcGVybHkuIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdh
biknCi0KLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi0KLQotQ09NTUFORCA9IGd0ZXN0X3Rlc3Rf
dXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF91bmluaXRpYWxpemVkX3Rlc3RfJykK
LQotCi1kZWYgQXNzZXJ0KGNvbmRpdGlvbik6Ci0gIGlmIG5vdCBjb25kaXRpb246Ci0gICAgcmFp
c2UgQXNzZXJ0aW9uRXJyb3IKLQotCi1kZWYgQXNzZXJ0RXEoZXhwZWN0ZWQsIGFjdHVhbCk6Ci0g
IGlmIGV4cGVjdGVkICE9IGFjdHVhbDoKLSAgICBwcmludCAnRXhwZWN0ZWQ6ICVzJyAlIChleHBl
Y3RlZCwpCi0gICAgcHJpbnQgJyAgQWN0dWFsOiAlcycgJSAoYWN0dWFsLCkKLSAgICByYWlzZSBB
c3NlcnRpb25FcnJvcgotCi0KLWRlZiBUZXN0RXhpdENvZGVBbmRPdXRwdXQoY29tbWFuZCk6Ci0g
ICIiIlJ1bnMgdGhlIGdpdmVuIGNvbW1hbmQgYW5kIHZlcmlmaWVzIGl0cyBleGl0IGNvZGUgYW5k
IG91dHB1dC4iIiIKLQotICAjIFZlcmlmaWVzIHRoYXQgJ2NvbW1hbmQnIGV4aXRzIHdpdGggY29k
ZSAxLgotICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCi0gIEFzc2Vy
dChwLmV4aXRlZCkKLSAgQXNzZXJ0RXEoMSwgcC5leGl0X2NvZGUpCi0gIEFzc2VydCgnSW5pdEdv
b2dsZVRlc3QnIGluIHAub3V0cHV0KQotCi0KLWNsYXNzIEdUZXN0VW5pbml0aWFsaXplZFRlc3Qo
Z3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gIGRlZiB0ZXN0RXhpdENvZGVBbmRPdXRwdXQo
c2VsZik6Ci0gICAgVGVzdEV4aXRDb2RlQW5kT3V0cHV0KENPTU1BTkQpCi0KLQotaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0Xy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0
Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThiMmFhODFkZDU0ZDljNjQzYTU4
ZGU1ZTQ0ZDZjY2I1MjBhNzc2NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6
ZWRfdGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vLyBDb3B5cmlnaHQg
MjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4K
LS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0v
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotVEVTVChE
dW1teVRlc3QsIER1bW15KSB7Ci0gIC8vIFRoaXMgdGVzdCBkb2Vzbid0IHZlcmlmeSBhbnl0aGlu
Zy4gIFdlIGp1c3QgbmVlZCBpdCB0byBjcmVhdGUgYQotICAvLyByZWFsaXN0aWMgc3RhZ2UgZm9y
IHRlc3RpbmcgdGhlIGJlaGF2aW9yIG9mIEdvb2dsZSBUZXN0IHdoZW4KLSAgLy8gUlVOX0FMTF9U
RVNUUygpIGlzIGNhbGxlZCB3aXRob3V0IHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCkgYmVpbmcK
LSAgLy8gY2FsbGVkIGZpcnN0LgotfQotCi1pbnQgbWFpbigpIHsKLSAgcmV0dXJuIFJVTl9BTExf
VEVTVFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3VuaXR0
ZXN0LmNjCmluZGV4IGExNGYwNjVhMmNjZDg2Mzc5YTAxNDlhMzNmYzU2NDVjMGVjOGIxODEuLmY3
MjEzZmJmM2U1ZTg3MjA4OWJmYjk4NTUxYWMzYmEzZTNhNjdiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF91bml0dGVzdC5jYwpAQCAtMjYsMTggKzI2LDE2IEBA
CiAvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQorCiAvLwogLy8gVGVzdHMgZm9y
IEdvb2dsZSBUZXN0IGl0c2VsZi4gIFRoaXMgdmVyaWZpZXMgdGhhdCB0aGUgYmFzaWMgY29uc3Ry
dWN0cyBvZgogLy8gR29vZ2xlIFRlc3Qgd29yay4KIAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
Ci0jaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCiAKLS8vIFZlcmlm
aWVzIHRoYXQgdGhlIGNvbW1hbmQgbGluZSBmbGFnIHZhcmlhYmxlcyBjYW4gYmUgYWNjZXNzZWQK
LS8vIGluIGNvZGUgb25jZSA8Z3Rlc3QvZ3Rlc3QuaD4gaGFzIGJlZW4gI2luY2x1ZGVkLgotLy8g
RG8gbm90IG1vdmUgaXQgYWZ0ZXIgb3RoZXIgI2luY2x1ZGVzLgorLy8gVmVyaWZpZXMgdGhhdCB0
aGUgY29tbWFuZCBsaW5lIGZsYWcgdmFyaWFibGVzIGNhbiBiZSBhY2Nlc3NlZCBpbgorLy8gY29k
ZSBvbmNlICJndGVzdC5oIiBoYXMgYmVlbiAjaW5jbHVkZWQuCisvLyBEbyBub3QgbW92ZSBpdCBh
ZnRlciBvdGhlciBndGVzdCAjaW5jbHVkZXMuCiBURVNUKENvbW1hbmRMaW5lRmxhZ3NUZXN0LCBD
YW5CZUFjY2Vzc2VkSW5Db2RlT25jZUdUZXN0SElzSW5jbHVkZWQpIHsKICAgYm9vbCBkdW1teSA9
IHRlc3Rpbmc6OkdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpCiAgICAgICB8fCB0
ZXN0aW5nOjpHVEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpCkBAIC01MiwzMCArNTAsMTA1IEBA
IFRFU1QoQ29tbWFuZExpbmVGbGFnc1Rlc3QsIENhbkJlQWNjZXNzZWRJbkNvZGVPbmNlR1Rlc3RI
SXNJbmNsdWRlZCkgewogICAgICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyhzaG93X2ludGVybmFs
X3N0YWNrX2ZyYW1lcykKICAgICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcoc2h1ZmZsZSkKICAg
ICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpID4gMAorICAgICAg
fHwgdGVzdGluZzo6R1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSAhPSAidW5rbm93biIKICAg
ICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSk7CiAgIEVYUEVDVF9U
UlVFKGR1bW15IHx8ICFkdW1teSk7ICAvLyBTdXBwcmVzc2VzIHdhcm5pbmcgdGhhdCBkdW1teSBp
cyB1bnVzZWQuCiB9CiAKLSNpbmNsdWRlIDxndGVzdC9ndGVzdC1zcGkuaD4KLQotLy8gSW5kaWNh
dGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3Qncwot
Ly8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlu
bC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAg
VGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5j
bHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RF
U1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgi
Ci0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KICNpbmNsdWRlIDxsaW1pdHMuaD4gIC8v
IEZvciBJTlRfTUFYLgogI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgog
I2luY2x1ZGUgPHRpbWUuaD4KIAogI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDx2ZWN0b3I+Cisj
aW5jbHVkZSA8b3N0cmVhbT4KKyNpZiBHVEVTVF9MQU5HX0NYWDExCisjaW5jbHVkZSA8dW5vcmRl
cmVkX3NldD4KKyNlbmRpZiAgLy8gR1RFU1RfTEFOR19DWFgxMQorCisjaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3Qtc3BpLmgiCisjaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgogCiBuYW1l
c3BhY2UgdGVzdGluZyB7CiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCisjaWYgR1RFU1RfQ0FOX1NU
UkVBTV9SRVNVTFRTXworCitjbGFzcyBTdHJlYW1pbmdMaXN0ZW5lclRlc3QgOiBwdWJsaWMgVGVz
dCB7CisgcHVibGljOgorICBjbGFzcyBGYWtlU29ja2V0V3JpdGVyIDogcHVibGljIFN0cmVhbWlu
Z0xpc3RlbmVyOjpBYnN0cmFjdFNvY2tldFdyaXRlciB7CisgICBwdWJsaWM6CisgICAgLy8gU2Vu
ZHMgYSBzdHJpbmcgdG8gdGhlIHNvY2tldC4KKyAgICB2aXJ0dWFsIHZvaWQgU2VuZChjb25zdCBz
dGQ6OnN0cmluZyYgbWVzc2FnZSkgeyBvdXRwdXRfICs9IG1lc3NhZ2U7IH0KKworICAgIHN0ZDo6
c3RyaW5nIG91dHB1dF87CisgIH07CisKKyAgU3RyZWFtaW5nTGlzdGVuZXJUZXN0KCkKKyAgICAg
IDogZmFrZV9zb2NrX3dyaXRlcl8obmV3IEZha2VTb2NrZXRXcml0ZXIpLAorICAgICAgICBzdHJl
YW1lcl8oZmFrZV9zb2NrX3dyaXRlcl8pLAorICAgICAgICB0ZXN0X2luZm9fb2JqXygiRm9vVGVz
dCIsICJCYXIiLCBOVUxMLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRp
b24oX19GSUxFX18sIF9fTElORV9fKSwgMCwgTlVMTCkge30KKworIHByb3RlY3RlZDoKKyAgc3Rk
OjpzdHJpbmcqIG91dHB1dCgpIHsgcmV0dXJuICYoZmFrZV9zb2NrX3dyaXRlcl8tPm91dHB1dF8p
OyB9CisKKyAgRmFrZVNvY2tldFdyaXRlciogY29uc3QgZmFrZV9zb2NrX3dyaXRlcl87CisgIFN0
cmVhbWluZ0xpc3RlbmVyIHN0cmVhbWVyXzsKKyAgVW5pdFRlc3QgdW5pdF90ZXN0XzsKKyAgVGVz
dEluZm8gdGVzdF9pbmZvX29ial87ICAvLyBUaGUgbmFtZSB0ZXN0X2luZm9fIHdhcyB0YWtlbiBi
eSB0ZXN0aW5nOjpUZXN0LgorfTsKKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25U
ZXN0UHJvZ3JhbUVuZCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJfLk9uVGVzdFBy
b2dyYW1FbmQodW5pdF90ZXN0Xyk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdFByb2dyYW1FbmQm
cGFzc2VkPTFcbiIsICpvdXRwdXQoKSk7Cit9CisKK1RFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRl
c3QsIE9uVGVzdEl0ZXJhdGlvbkVuZCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJf
Lk9uVGVzdEl0ZXJhdGlvbkVuZCh1bml0X3Rlc3RfLCA0Mik7CisgIEVYUEVDVF9FUSgiZXZlbnQ9
VGVzdEl0ZXJhdGlvbkVuZCZwYXNzZWQ9MSZlbGFwc2VkX3RpbWU9MG1zXG4iLCAqb3V0cHV0KCkp
OworfQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RDYXNlU3RhcnQpIHsK
KyAgKm91dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RDYXNlU3RhcnQoVGVzdENhc2Uo
IkZvb1Rlc3QiLCAiQmFyIiwgTlVMTCwgTlVMTCkpOworICBFWFBFQ1RfRVEoImV2ZW50PVRlc3RD
YXNlU3RhcnQmbmFtZT1Gb29UZXN0XG4iLCAqb3V0cHV0KCkpOworfQorCitURVNUX0YoU3RyZWFt
aW5nTGlzdGVuZXJUZXN0LCBPblRlc3RDYXNlRW5kKSB7CisgICpvdXRwdXQoKSA9ICIiOworICBz
dHJlYW1lcl8uT25UZXN0Q2FzZUVuZChUZXN0Q2FzZSgiRm9vVGVzdCIsICJCYXIiLCBOVUxMLCBO
VUxMKSk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdENhc2VFbmQmcGFzc2VkPTEmZWxhcHNlZF90
aW1lPTBtc1xuIiwgKm91dHB1dCgpKTsKK30KKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVz
dCwgT25UZXN0U3RhcnQpIHsKKyAgKm91dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RT
dGFydCh0ZXN0X2luZm9fb2JqXyk7CisgIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdFN0YXJ0Jm5hbWU9
QmFyXG4iLCAqb3V0cHV0KCkpOworfQorCitURVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBP
blRlc3RFbmQpIHsKKyAgKm91dHB1dCgpID0gIiI7CisgIHN0cmVhbWVyXy5PblRlc3RFbmQodGVz
dF9pbmZvX29ial8pOworICBFWFBFQ1RfRVEoImV2ZW50PVRlc3RFbmQmcGFzc2VkPTEmZWxhcHNl
ZF90aW1lPTBtc1xuIiwgKm91dHB1dCgpKTsKK30KKworVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVy
VGVzdCwgT25UZXN0UGFydFJlc3VsdCkgeworICAqb3V0cHV0KCkgPSAiIjsKKyAgc3RyZWFtZXJf
Lk9uVGVzdFBhcnRSZXN1bHQoVGVzdFBhcnRSZXN1bHQoCisgICAgICBUZXN0UGFydFJlc3VsdDo6
a0ZhdGFsRmFpbHVyZSwgImZvby5jYyIsIDQyLCAiZmFpbGVkPVxuJiUiKSk7CisKKyAgLy8gTWV0
YSBjaGFyYWN0ZXJzIGluIHRoZSBmYWlsdXJlIG1lc3NhZ2Ugc2hvdWxkIGJlIHByb3Blcmx5IGVz
Y2FwZWQuCisgIEVYUEVDVF9FUSgKKyAgICAgICJldmVudD1UZXN0UGFydFJlc3VsdCZmaWxlPWZv
by5jYyZsaW5lPTQyJm1lc3NhZ2U9ZmFpbGVkJTNEJTBBJTI2JTI1XG4iLAorICAgICAgKm91dHB1
dCgpKTsKK30KKworI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisKIC8vIFBy
b3ZpZGVzIGFjY2VzcyB0byBvdGhlcndpc2UgcHJpdmF0ZSBwYXJ0cyBvZiB0aGUgVGVzdEV2ZW50
TGlzdGVuZXJzIGNsYXNzCiAvLyB0aGF0IGFyZSBuZWVkZWQgdG8gdGVzdCBpdC4KIGNsYXNzIFRl
c3RFdmVudExpc3RlbmVyc0FjY2Vzc29yIHsKQEAgLTEwMiw2ICsxNzUsMTggQEAgY2xhc3MgVGVz
dEV2ZW50TGlzdGVuZXJzQWNjZXNzb3IgewogICB9CiB9OwogCitjbGFzcyBVbml0VGVzdFJlY29y
ZFByb3BlcnR5VGVzdEhlbHBlciA6IHB1YmxpYyBUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIFVuaXRU
ZXN0UmVjb3JkUHJvcGVydHlUZXN0SGVscGVyKCkge30KKworICAvLyBGb3J3YXJkcyB0byBVbml0
VGVzdDo6UmVjb3JkUHJvcGVydHkoKSB0byBieXBhc3MgYWNjZXNzIGNvbnRyb2xzLgorICB2b2lk
IFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoY29uc3QgY2hhcioga2V5LCBjb25zdCBzdGQ6OnN0cmlu
ZyYgdmFsdWUpIHsKKyAgICB1bml0X3Rlc3RfLlJlY29yZFByb3BlcnR5KGtleSwgdmFsdWUpOwor
ICB9CisKKyAgVW5pdFRlc3QgdW5pdF90ZXN0XzsKK307CisKIH0gIC8vIG5hbWVzcGFjZSBpbnRl
cm5hbAogfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKIApAQCAtMTEwLDYgKzE5NSw3IEBAIHVzaW5n
IHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdDsKIHVzaW5nIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nl
c3M7CiB1c2luZyB0ZXN0aW5nOjpEb3VibGVMRTsKIHVzaW5nIHRlc3Rpbmc6OkVtcHR5VGVzdEV2
ZW50TGlzdGVuZXI7Cit1c2luZyB0ZXN0aW5nOjpFbnZpcm9ubWVudDsKIHVzaW5nIHRlc3Rpbmc6
OkZsb2F0TEU7CiB1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rl
c3RzKTsKIHVzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSk7CkBAIC0x
MjUsNiArMjExLDcgQEAgdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhyZXBlYXQpOwogdXNpbmcg
dGVzdGluZzo6R1RFU1RfRkxBRyhzaG93X2ludGVybmFsX3N0YWNrX2ZyYW1lcyk7CiB1c2luZyB0
ZXN0aW5nOjpHVEVTVF9GTEFHKHNodWZmbGUpOwogdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhz
dGFja190cmFjZV9kZXB0aCk7Cit1c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHN0cmVhbV9yZXN1
bHRfdG8pOwogdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKIHVz
aW5nIHRlc3Rpbmc6OklzTm90U3Vic3RyaW5nOwogdXNpbmcgdGVzdGluZzo6SXNTdWJzdHJpbmc7
CkBAIC0xMzIsNTMgKzIxOSw3OCBAQCB1c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwogdXNpbmcgdGVz
dGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI7CiB1c2luZyB0ZXN0aW5nOjpT
dGF0aWNBc3NlcnRUeXBlRXE7CiB1c2luZyB0ZXN0aW5nOjpUZXN0OwotdXNpbmcgdGVzdGluZzo6
VGVzdEV2ZW50TGlzdGVuZXJzOwogdXNpbmcgdGVzdGluZzo6VGVzdENhc2U7Cit1c2luZyB0ZXN0
aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7Cit1c2luZyB0ZXN0aW5nOjpUZXN0SW5mbzsKIHVzaW5n
IHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OwogdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHRB
cnJheTsKIHVzaW5nIHRlc3Rpbmc6OlRlc3RQcm9wZXJ0eTsKIHVzaW5nIHRlc3Rpbmc6OlRlc3RS
ZXN1bHQ7Cit1c2luZyB0ZXN0aW5nOjpUaW1lSW5NaWxsaXM7CiB1c2luZyB0ZXN0aW5nOjpVbml0
VGVzdDsKLXVzaW5nIHRlc3Rpbmc6OmtNYXhTdGFja1RyYWNlRGVwdGg7Cit1c2luZyB0ZXN0aW5n
OjppbnRlcm5hbDo6QWRkUmVmZXJlbmNlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5
c0ZhbHNlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWU7CiB1c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6QXBwZW5kVXNlck1lc3NhZ2U7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6QXJyYXlBd2FyZUZpbmQ7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QXJyYXlFcTsKIHVz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpDb2RlUG9pbnRUb1V0Zjg7Cit1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6Q29tcGlsZUFzc2VydFR5cGVzRXF1YWw7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6Q29weUFycmF5OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkNvdW50SWY7CiB1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6RXFGYWlsdXJlOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZs
b2F0aW5nUG9pbnQ7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0VGltZUluTWlsbGlz
QXNTZWNvbmRzOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZvckVhY2g7Cit1c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6Rm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDE7Cit1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzOwogdXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OkdUZXN0RmxhZ1NhdmVyOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OkdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3A7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6R2V0RWxlbWVudE9yOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldE5leHRSYW5kb21T
ZWVkOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldFJhbmRvbVNlZWRGcm9tRmxhZzsKIHVz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRUZXN0VHlwZUlkOwordXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OkdldFRpbWVJbk1pbGxpczsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRUeXBl
SWQ7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsOwordXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTsKIHVzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpJbnQzMjsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJbnQzMkZyb21FbnZPckRp
ZTsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJc0FQcm90b2NvbE1lc3NhZ2U7Cit1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6SXNDb250YWluZXI7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6
SXNDb250YWluZXJUZXN0OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OklzTm90Q29udGFpbmVy
OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6Ok5hdGl2ZUFycmF5OwordXNpbmcgdGVzdGluZzo6
aW50ZXJuYWw6Ok9zU3RhY2tUcmFjZUdldHRlcjsKK3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpP
c1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2U7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UGFy
c2VJbnQzMkZsYWc7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVsYXRpb25Ub1NvdXJjZUNv
cHk7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZTsK
K3VzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpSZW1vdmVDb25zdDsKK3VzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpSZW1vdmVSZWZlcmVuY2U7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxk
UnVuVGVzdE9uU2hhcmQ7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxkU2hhcmQ7CiB1
c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxkVXNlQ29sb3I7CiB1c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6U2h1ZmZsZTsKIHVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaHVmZmxlUmFuZ2U7
Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2tpcFByZWZpeDsKIHVzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmc7CiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U3Ry
aW5nOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29y
OwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlRlc3RSZXN1bHRBY2Nlc3NvcjsKIHVzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpVSW50MzI7Cit1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdFRl
c3RJbXBsOwogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OldpZGVTdHJpbmdUb1V0Zjg7Cit1c2lu
ZyB0ZXN0aW5nOjppbnRlcm5hbDo6ZWRpdF9kaXN0YW5jZTo6Q2FsY3VsYXRlT3B0aW1hbEVkaXRz
OwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmVkaXRfZGlzdGFuY2U6OkNyZWF0ZVVuaWZpZWRE
aWZmOwordXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmVkaXRfZGlzdGFuY2U6OkVkaXRUeXBlOwog
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmtNYXhSYW5kb21TZWVkOwogdXNpbmcgdGVzdGluZzo6
aW50ZXJuYWw6OmtUZXN0VHlwZUlkSW5Hb29nbGVUZXN0OwotdXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OnNjb3BlZF9wdHI7Cit1c2luZyB0ZXN0aW5nOjprTWF4U3RhY2tUcmFjZURlcHRoOwogCi0j
aWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNpZiBHVEVTVF9IQVNfU1RSRUFNX1JF
RElSRUNUSU9OCiB1c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q2FwdHVyZVN0ZG91dDsKIHVzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjpHZXRDYXB0dXJlZFN0ZG91dDsKLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyNlbmRpZgogCiAjaWYgR1RFU1RfSVNfVEhSRUFEU0FG
RQogdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlRocmVhZFdpdGhQYXJhbTsKQEAgLTI2Nyw2ICsz
NzksMzEgQEAgVEVTVChHZXRUZXN0VHlwZUlkVGVzdCwgUmV0dXJuc1RoZVNhbWVWYWx1ZUluc2lk
ZU9yT3V0c2lkZU9mR29vZ2xlVGVzdCkgewogICBFWFBFQ1RfRVEoa1Rlc3RUeXBlSWRJbkdvb2ds
ZVRlc3QsIEdldFRlc3RUeXBlSWQoKSk7CiB9CiAKKy8vIFRlc3RzIENhbm9uaWNhbGl6ZUZvclN0
ZExpYlZlcnNpb25pbmcuCisKK3VzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNhbm9uaWNhbGl6
ZUZvclN0ZExpYlZlcnNpb25pbmc7CisKK1RFU1QoQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lv
bmluZywgTGVhdmVzVW52ZXJzaW9uZWROYW1lc1VuY2hhbmdlZCkgeworICBFWFBFQ1RfRVEoInN0
ZDo6YmluZCIsIENhbm9uaWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoInN0ZDo6YmluZCIpKTsK
KyAgRVhQRUNUX0VRKCJzdGQ6Ol8iLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJz
dGQ6Ol8iKSk7CisgIEVYUEVDVF9FUSgic3RkOjpfX2ZvbyIsIENhbm9uaWNhbGl6ZUZvclN0ZExp
YlZlcnNpb25pbmcoInN0ZDo6X19mb28iKSk7CisgIEVYUEVDVF9FUSgiZ3RsOjpfXzE6OngiLCBD
YW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJndGw6Ol9fMTo6eCIpKTsKKyAgRVhQRUNU
X0VRKCJfXzE6OngiLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJfXzE6OngiKSk7
CisgIEVYUEVDVF9FUSgiOjpfXzE6OngiLCBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5n
KCI6Ol9fMTo6eCIpKTsKK30KKworVEVTVChDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5n
LCBFbGlkZXNEb3VibGVVbmRlck5hbWVzKSB7CisgIEVYUEVDVF9FUSgic3RkOjpiaW5kIiwgQ2Fu
b25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZygic3RkOjpfXzE6OmJpbmQiKSk7CisgIEVYUEVD
VF9FUSgic3RkOjpfIiwgQ2Fub25pY2FsaXplRm9yU3RkTGliVmVyc2lvbmluZygic3RkOjpfXzE6
Ol8iKSk7CisKKyAgRVhQRUNUX0VRKCJzdGQ6OmJpbmQiLCBDYW5vbmljYWxpemVGb3JTdGRMaWJW
ZXJzaW9uaW5nKCJzdGQ6Ol9fZzo6YmluZCIpKTsKKyAgRVhQRUNUX0VRKCJzdGQ6Ol8iLCBDYW5v
bmljYWxpemVGb3JTdGRMaWJWZXJzaW9uaW5nKCJzdGQ6Ol9fZzo6XyIpKTsKKworICBFWFBFQ1Rf
RVEoInN0ZDo6YmluZCIsCisgICAgICAgICAgICBDYW5vbmljYWxpemVGb3JTdGRMaWJWZXJzaW9u
aW5nKCJzdGQ6Ol9fZ29vZ2xlOjpiaW5kIikpOworICBFWFBFQ1RfRVEoInN0ZDo6XyIsIENhbm9u
aWNhbGl6ZUZvclN0ZExpYlZlcnNpb25pbmcoInN0ZDo6X19nb29nbGU6Ol8iKSk7Cit9CisKIC8v
IFRlc3RzIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcygpLgogCiBURVNUKEZvcm1hdFRpbWVJ
bk1pbGxpc0FzU2Vjb25kc1Rlc3QsIEZvcm1hdHNaZXJvKSB7CkBAIC0yODksMTIgKzQyNiw5OSBA
QCBURVNUKEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kc1Rlc3QsIEZvcm1hdHNOZWdhdGl2ZU51
bWJlcikgewogICBFWFBFQ1RfRVEoIi0zIiwgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKC0z
MDAwKSk7CiB9CiAKKy8vIFRlc3RzIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKCku
ICBUaGUgY29ycmVjdG5lc3Mgb2YgY29udmVyc2lvbgorLy8gZm9yIHBhcnRpY3VsYXIgZGF0ZXMg
YmVsb3cgd2FzIHZlcmlmaWVkIGluIFB5dGhvbiB1c2luZworLy8gZGF0ZXRpbWUuZGF0ZXRpbWUu
ZnJvbXV0Y3RpbWVzdGFtcCg8dGltZXRhbXA+LzEwMDApLgorCisvLyBGb3JtYXRFcG9jaFRpbWVJ
bk1pbGxpc0FzSXNvODYwMSBkZXBlbmRzIG9uIHRoZSBjdXJyZW50IHRpbWV6b25lLCBzbyB3ZQor
Ly8gaGF2ZSB0byBzZXQgdXAgYSBwYXJ0aWN1bGFyIHRpbWV6b25lIHRvIG9idGFpbiBwcmVkaWN0
YWJsZSByZXN1bHRzLgorY2xhc3MgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0
IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgLy8gT24gQ3lnd2luLCBHQ0MgZG9lc24ndCBh
bGxvdyB1bnF1YWxpZmllZCBpbnRlZ2VyIGxpdGVyYWxzIHRvIGV4Y2VlZAorICAvLyAzMiBiaXRz
LCBldmVuIHdoZW4gNjQtYml0IGludGVnZXIgdHlwZXMgYXJlIGF2YWlsYWJsZS4gIFdlIGhhdmUg
dG8KKyAgLy8gZm9yY2UgdGhlIGNvbnN0YW50cyB0byBoYXZlIGEgNjQtYml0IHR5cGUgaGVyZS4K
KyAgc3RhdGljIGNvbnN0IFRpbWVJbk1pbGxpcyBrTWlsbGlzUGVyU2VjID0gMTAwMDsKKworIHBy
aXZhdGU6CisgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICBzYXZlZF90el8gPSBOVUxMOwor
CisgICAgR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRFRF9QVVNIXygvKiBnZXRlbnYsIHN0cmR1
cDogZGVwcmVjYXRlZCAqLykKKyAgICBpZiAoZ2V0ZW52KCJUWiIpKQorICAgICAgc2F2ZWRfdHpf
ID0gc3RyZHVwKGdldGVudigiVFoiKSk7CisgICAgR1RFU1RfRElTQUJMRV9NU0NfREVQUkVDQVRF
RF9QT1BfKCkKKworICAgIC8vIFNldCB1cCB0aGUgdGltZSB6b25lIGZvciBGb3JtYXRFcG9jaFRp
bWVJbk1pbGxpc0FzSXNvODYwMSB0byB1c2UuICBXZQorICAgIC8vIGNhbm5vdCB1c2UgdGhlIGxv
Y2FsIHRpbWUgem9uZSBiZWNhdXNlIHRoZSBmdW5jdGlvbidzIG91dHB1dCBkZXBlbmRzCisgICAg
Ly8gb24gdGhlIHRpbWUgem9uZS4KKyAgICBTZXRUaW1lWm9uZSgiVVRDKzAwIik7CisgIH0KKwor
ICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgU2V0VGltZVpvbmUoc2F2ZWRfdHpfKTsK
KyAgICBmcmVlKGNvbnN0X2Nhc3Q8Y2hhcio+KHNhdmVkX3R6XykpOworICAgIHNhdmVkX3R6XyA9
IE5VTEw7CisgIH0KKworICBzdGF0aWMgdm9pZCBTZXRUaW1lWm9uZShjb25zdCBjaGFyKiB0aW1l
X3pvbmUpIHsKKyAgICAvLyB0enNldCgpIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiB0aGUgVFogdmFy
aWFibGUgYmVpbmcgcHJlc2VudCBhbmQgZW1wdHkKKyAgICAvLyBhbmQgbm90IGJlaW5nIHByZXNl
bnQsIHNvIHdlIGhhdmUgdG8gY29uc2lkZXIgdGhlIGNhc2Ugb2YgdGltZV96b25lCisgICAgLy8g
YmVpbmcgTlVMTC4KKyNpZiBfTVNDX1ZFUiB8fCBHVEVTVF9PU19XSU5ET1dTX01JTkdXCisgICAg
Ly8gLi4uVW5sZXNzIGl0J3MgTVNWQywgd2hvc2Ugc3RhbmRhcmQgbGlicmFyeSdzIF9wdXRlbnYg
ZG9lc24ndAorICAgIC8vIGRpc3Rpbmd1aXNoIGJldHdlZW4gYW4gZW1wdHkgYW5kIGEgbWlzc2lu
ZyB2YXJpYWJsZS4KKyAgICBjb25zdCBzdGQ6OnN0cmluZyBlbnZfdmFyID0KKyAgICAgICAgc3Rk
OjpzdHJpbmcoIlRaPSIpICsgKHRpbWVfem9uZSA/IHRpbWVfem9uZSA6ICIiKTsKKyAgICBfcHV0
ZW52KGVudl92YXIuY19zdHIoKSk7CisgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVT
SF8oNDk5NiAvKiBkZXByZWNhdGVkIGZ1bmN0aW9uICovKQorICAgIHR6c2V0KCk7CisgICAgR1RF
U1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCisjZWxzZQorICAgIGlmICh0aW1lX3pvbmUp
IHsKKyAgICAgIHNldGVudigoIlRaIiksIHRpbWVfem9uZSwgMSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIHVuc2V0ZW52KCJUWiIpOworICAgIH0KKyAgICB0enNldCgpOworI2VuZGlmCisgIH0KKwor
ICBjb25zdCBjaGFyKiBzYXZlZF90el87Cit9OworCitjb25zdCBUaW1lSW5NaWxsaXMgRm9ybWF0
RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0OjprTWlsbGlzUGVyU2VjOworCitURVNUX0Yo
Rm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBQcmludHNUd29EaWdpdFNlZ21l
bnRzKSB7CisgIEVYUEVDVF9FUSgiMjAxMS0xMC0zMVQxODo1Mjo0MiIsCisgICAgICAgICAgICBG
b3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSgxMzIwMDg3MTYyICoga01pbGxpc1BlclNl
YykpOworfQorCitURVNUX0YoRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBN
aWxsaXNlY29uZHNEb05vdEFmZmVjdFJlc3VsdCkgeworICBFWFBFQ1RfRVEoCisgICAgICAiMjAx
MS0xMC0zMVQxODo1Mjo0MiIsCisgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYw
MSgxMzIwMDg3MTYyICoga01pbGxpc1BlclNlYyArIDIzNCkpOworfQorCitURVNUX0YoRm9ybWF0
RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBQcmludHNMZWFkaW5nWmVyb2VzKSB7Cisg
IEVYUEVDVF9FUSgiMjAxMS0wOS0wM1QwNTowNzowMiIsCisgICAgICAgICAgICBGb3JtYXRFcG9j
aFRpbWVJbk1pbGxpc0FzSXNvODYwMSgxMzE1MDI2NDIyICoga01pbGxpc1BlclNlYykpOworfQor
CitURVNUX0YoRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBQcmludHMyNEhv
dXJUaW1lKSB7CisgIEVYUEVDVF9FUSgiMjAxMS0wOS0yOFQxNzowODoyMiIsCisgICAgICAgICAg
ICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSgxMzE3MjI5NzAyICoga01pbGxpc1Bl
clNlYykpOworfQorCitURVNUX0YoRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0
LCBQcmludHNFcG9jaFN0YXJ0KSB7CisgIEVYUEVDVF9FUSgiMTk3MC0wMS0wMVQwMDowMDowMCIs
IEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKDApKTsKK30KKwogI2lmIEdURVNUX0NB
Tl9DT01QQVJFX05VTEwKIAotI2lmZGVmIF9fQk9STEFORENfXworIyBpZmRlZiBfX0JPUkxBTkRD
X18KIC8vIFNpbGVuY2VzIHdhcm5pbmdzOiAiQ29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlIiwgIlVu
cmVhY2hhYmxlIGNvZGUiCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gKLSNlbmRp
ZgorIyAgcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gKKyMgZW5kaWYKIAogLy8gVGVz
dHMgdGhhdCBHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHgpIGlzIHRydWUgd2hlbiB4IGlzIGEgbnVs
bAogLy8gcG9pbnRlciBsaXRlcmFsLgpAQCAtMzAzLDE0ICs1MjcsNiBAQCBURVNUKE51bGxMaXRl
cmFsVGVzdCwgSXNUcnVlRm9yTnVsbExpdGVyYWxzKSB7CiAgIEVYUEVDVF9UUlVFKEdURVNUX0lT
X05VTExfTElURVJBTF8oMCkpOwogICBFWFBFQ1RfVFJVRShHVEVTVF9JU19OVUxMX0xJVEVSQUxf
KDBVKSk7CiAgIEVYUEVDVF9UUlVFKEdURVNUX0lTX05VTExfTElURVJBTF8oMEwpKTsKLSAgRVhQ
RUNUX1RSVUUoR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyhmYWxzZSkpOwotI2lmbmRlZiBfX0JPUkxB
TkRDX18KLSAgLy8gU29tZSBjb21waWxlcnMgbWF5IGZhaWwgdG8gZGV0ZWN0IHNvbWUgbnVsbCBw
b2ludGVyIGxpdGVyYWxzOwotICAvLyBhcyBsb25nIGFzIHVzZXJzIG9mIHRoZSBmcmFtZXdvcmsg
ZG9uJ3QgdXNlIHN1Y2ggbGl0ZXJhbHMsIHRoaXMKLSAgLy8gaXMgaGFybWxlc3MuCi0gIEVYUEVD
VF9UUlVFKEdURVNUX0lTX05VTExfTElURVJBTF8oMSAtIDEpKTsKLSAgRVhQRUNUX1RSVUUoR1RF
U1RfSVNfTlVMTF9MSVRFUkFMXyh0cnVlICYmIGZhbHNlKSk7Ci0jZW5kaWYKIH0KIAogLy8gVGVz
dHMgdGhhdCBHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHgpIGlzIGZhbHNlIHdoZW4geCBpcyBub3Qg
YSBudWxsCkBAIC0zMjIsMTAgKzUzOCwxMCBAQCBURVNUKE51bGxMaXRlcmFsVGVzdCwgSXNGYWxz
ZUZvck5vbk51bGxMaXRlcmFscykgewogICBFWFBFQ1RfRkFMU0UoR1RFU1RfSVNfTlVMTF9MSVRF
UkFMXyhzdGF0aWNfY2FzdDx2b2lkKj4oTlVMTCkpKTsKIH0KIAotI2lmZGVmIF9fQk9STEFORENf
XworIyBpZmRlZiBfX0JPUkxBTkRDX18KIC8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZp
b3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXBwcmVzc2VkIHRoZW0uCi0jcHJhZ21hIG9wdGlv
biBwb3AKLSNlbmRpZgorIyAgcHJhZ21hIG9wdGlvbiBwb3AKKyMgZW5kaWYKIAogI2VuZGlmICAv
LyBHVEVTVF9DQU5fQ09NUEFSRV9OVUxMCiAvLwpAQCAtMzMzLDM5ICs1NDksNDEgQEAgVEVTVChO
dWxsTGl0ZXJhbFRlc3QsIElzRmFsc2VGb3JOb25OdWxsTGl0ZXJhbHMpIHsKIAogLy8gVGVzdHMg
dGhhdCB0aGUgTlVMIGNoYXJhY3RlciBMJ1wwJyBpcyBlbmNvZGVkIGNvcnJlY3RseS4KIFRFU1Qo
Q29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2RlTnVsKSB7Ci0gIGNoYXIgYnVmZmVyWzMyXTsK
LSAgRVhQRUNUX1NUUkVRKCIiLCBDb2RlUG9pbnRUb1V0ZjgoTCdcMCcsIGJ1ZmZlcikpOworICBF
WFBFQ1RfRVEoIiIsIENvZGVQb2ludFRvVXRmOChMJ1wwJykpOwogfQogCiAvLyBUZXN0cyB0aGF0
IEFTQ0lJIGNoYXJhY3RlcnMgYXJlIGVuY29kZWQgY29ycmVjdGx5LgogVEVTVChDb2RlUG9pbnRU
b1V0ZjhUZXN0LCBDYW5FbmNvZGVBc2NpaSkgewotICBjaGFyIGJ1ZmZlclszMl07Ci0gIEVYUEVD
VF9TVFJFUSgiYSIsIENvZGVQb2ludFRvVXRmOChMJ2EnLCBidWZmZXIpKTsKLSAgRVhQRUNUX1NU
UkVRKCJaIiwgQ29kZVBvaW50VG9VdGY4KEwnWicsIGJ1ZmZlcikpOwotICBFWFBFQ1RfU1RSRVEo
IiYiLCBDb2RlUG9pbnRUb1V0ZjgoTCcmJywgYnVmZmVyKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHg3
RiIsIENvZGVQb2ludFRvVXRmOChMJ1x4N0YnLCBidWZmZXIpKTsKKyAgRVhQRUNUX0VRKCJhIiwg
Q29kZVBvaW50VG9VdGY4KEwnYScpKTsKKyAgRVhQRUNUX0VRKCJaIiwgQ29kZVBvaW50VG9VdGY4
KEwnWicpKTsKKyAgRVhQRUNUX0VRKCImIiwgQ29kZVBvaW50VG9VdGY4KEwnJicpKTsKKyAgRVhQ
RUNUX0VRKCJceDdGIiwgQ29kZVBvaW50VG9VdGY4KEwnXHg3RicpKTsKIH0KIAogLy8gVGVzdHMg
dGhhdCBVbmljb2RlIGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSA4IHRvIDExIGJpdHMgYXJlIGVuY29k
ZWQKIC8vIGFzIDExMHh4eHh4IDEweHh4eHh4LgogVEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBD
YW5FbmNvZGU4VG8xMUJpdHMpIHsKLSAgY2hhciBidWZmZXJbMzJdOwogICAvLyAwMDAgMTEwMSAw
MDExID0+IDExMC0wMDAxMSAxMC0wMTAwMTEKLSAgRVhQRUNUX1NUUkVRKCJceEMzXHg5MyIsIENv
ZGVQb2ludFRvVXRmOChMJ1x4RDMnLCBidWZmZXIpKTsKKyAgRVhQRUNUX0VRKCJceEMzXHg5MyIs
IENvZGVQb2ludFRvVXRmOChMJ1x4RDMnKSk7CiAKICAgLy8gMTAxIDAxMTEgMDExMCA9PiAxMTAt
MTAxMDEgMTAtMTEwMTEwCi0gIEVYUEVDVF9TVFJFUSgiXHhENVx4QjYiLCBDb2RlUG9pbnRUb1V0
ZjgoTCdceDU3NicsIGJ1ZmZlcikpOworICAvLyBTb21lIGNvbXBpbGVycyAoZS5nLiwgR0NDIG9u
IE1pbkdXKSBjYW5ub3QgaGFuZGxlIG5vbi1BU0NJSSBjb2RlcG9pbnRzCisgIC8vIGluIHdpZGUg
c3RyaW5ncyBhbmQgd2lkZSBjaGFycy4gSW4gb3JkZXIgdG8gYWNjb21tb2RhdGUgdGhlbSwgd2Ug
aGF2ZSB0bworICAvLyBpbnRyb2R1Y2Ugc3VjaCBjaGFyYWN0ZXIgY29uc3RhbnRzIGFzIGludGVn
ZXJzLgorICBFWFBFQ1RfRVEoIlx4RDVceEI2IiwKKyAgICAgICAgICAgIENvZGVQb2ludFRvVXRm
OChzdGF0aWNfY2FzdDx3Y2hhcl90PigweDU3NikpKTsKIH0KIAogLy8gVGVzdHMgdGhhdCBVbmlj
b2RlIGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSAxMiB0byAxNiBiaXRzIGFyZSBlbmNvZGVkCiAvLyBh
cyAxMTEweHh4eCAxMHh4eHh4eCAxMHh4eHh4eC4KIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwg
Q2FuRW5jb2RlMTJUbzE2Qml0cykgewotICBjaGFyIGJ1ZmZlclszMl07CiAgIC8vIDAwMDAgMTAw
MCAxMTAxIDAwMTEgPT4gMTExMC0wMDAwIDEwLTEwMDAxMSAxMC0wMTAwMTEKLSAgRVhQRUNUX1NU
UkVRKCJceEUwXHhBM1x4OTMiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDhEMycsIGJ1ZmZlcikpOwor
ICBFWFBFQ1RfRVEoIlx4RTBceEEzXHg5MyIsCisgICAgICAgICAgICBDb2RlUG9pbnRUb1V0Zjgo
c3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHg4RDMpKSk7CiAKICAgLy8gMTEwMCAwMTExIDAxMDAgMTEw
MSA9PiAxMTEwLTExMDAgMTAtMDExMTAxIDEwLTAwMTEwMQotICBFWFBFQ1RfU1RSRVEoIlx4RUNc
eDlEXHg4RCIsIENvZGVQb2ludFRvVXRmOChMJ1x4Qzc0RCcsIGJ1ZmZlcikpOworICBFWFBFQ1Rf
RVEoIlx4RUNceDlEXHg4RCIsCisgICAgICAgICAgICBDb2RlUG9pbnRUb1V0Zjgoc3RhdGljX2Nh
c3Q8d2NoYXJfdD4oMHhDNzREKSkpOwogfQogCiAjaWYgIUdURVNUX1dJREVfU1RSSU5HX1VTRVNf
VVRGMTZfCkBAIC0zNzYsMjIgKzU5NCwxOSBAQCBURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENh
bkVuY29kZTEyVG8xNkJpdHMpIHsKIC8vIFRlc3RzIHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0
aGF0IGhhdmUgMTcgdG8gMjEgYml0cyBhcmUgZW5jb2RlZAogLy8gYXMgMTExMTB4eHggMTB4eHh4
eHggMTB4eHh4eHggMTB4eHh4eHguCiBURVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29k
ZTE3VG8yMUJpdHMpIHsKLSAgY2hhciBidWZmZXJbMzJdOwogICAvLyAwIDAwMDEgMDAwMCAxMDAw
IDExMDEgMDAxMSA9PiAxMTExMC0wMDAgMTAtMDEwMDAwIDEwLTEwMDAxMSAxMC0wMTAwMTEKLSAg
RVhQRUNUX1NUUkVRKCJceEYwXHg5MFx4QTNceDkzIiwgQ29kZVBvaW50VG9VdGY4KEwnXHgxMDhE
MycsIGJ1ZmZlcikpOworICBFWFBFQ1RfRVEoIlx4RjBceDkwXHhBM1x4OTMiLCBDb2RlUG9pbnRU
b1V0ZjgoTCdceDEwOEQzJykpOwogCiAgIC8vIDAgMDAwMSAwMDAwIDAxMDAgMDAwMCAwMDAwID0+
IDExMTEwLTAwMCAxMC0wMTAwMDAgMTAtMDEwMDAwIDEwLTAwMDAwMAotICBFWFBFQ1RfU1RSRVEo
Ilx4RjBceDkwXHg5MFx4ODAiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDEwNDAwJywgYnVmZmVyKSk7
CisgIEVYUEVDVF9FUSgiXHhGMFx4OTBceDkwXHg4MCIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA0
MDAnKSk7CiAKICAgLy8gMSAwMDAwIDEwMDAgMDExMCAwMDExIDAxMDAgPT4gMTExMTAtMTAwIDEw
LTAwMTAwMCAxMC0wMTEwMDAgMTAtMTEwMTAwCi0gIEVYUEVDVF9TVFJFUSgiXHhGNFx4ODhceDk4
XHhCNCIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA4NjM0JywgYnVmZmVyKSk7CisgIEVYUEVDVF9F
USgiXHhGNFx4ODhceDk4XHhCNCIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTA4NjM0JykpOwogfQog
CiAvLyBUZXN0cyB0aGF0IGVuY29kaW5nIGFuIGludmFsaWQgY29kZS1wb2ludCBnZW5lcmF0ZXMg
dGhlIGV4cGVjdGVkIHJlc3VsdC4KIFRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2Rl
SW52YWxpZENvZGVQb2ludCkgewotICBjaGFyIGJ1ZmZlclszMl07Ci0gIEVYUEVDVF9TVFJFUSgi
KEludmFsaWQgVW5pY29kZSAweDEyMzRBQkNEKSIsCi0gICAgICAgICAgICAgICBDb2RlUG9pbnRU
b1V0ZjgoTCdceDEyMzRBQkNEJywgYnVmZmVyKSk7CisgIEVYUEVDVF9FUSgiKEludmFsaWQgVW5p
Y29kZSAweDEyMzRBQkNEKSIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTIzNEFCQ0QnKSk7CiB9CiAK
ICNlbmRpZiAgLy8gIUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCkBAIC00MjAsMjAgKzYz
NSwyMyBAQCBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGU4VG8xMUJpdHMpIHsK
ICAgRVhQRUNUX1NUUkVRKCJceEMzXHg5MyIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEQzIiwgLTEp
LmNfc3RyKCkpOwogCiAgIC8vIDEwMSAwMTExIDAxMTAgPT4gMTEwLTEwMTAxIDEwLTExMDExMAot
ICBFWFBFQ1RfU1RSRVEoIlx4RDVceEI2IiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4NTc2IiwgMSku
Y19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHhENVx4QjYiLCBXaWRlU3RyaW5nVG9VdGY4KEwi
XHg1NzYiLCAtMSkuY19zdHIoKSk7CisgIGNvbnN0IHdjaGFyX3Qgc1tdID0geyAweDU3NiwgJ1ww
JyB9OworICBFWFBFQ1RfU1RSRVEoIlx4RDVceEI2IiwgV2lkZVN0cmluZ1RvVXRmOChzLCAxKS5j
X3N0cigpKTsKKyAgRVhQRUNUX1NUUkVRKCJceEQ1XHhCNiIsIFdpZGVTdHJpbmdUb1V0Zjgocywg
LTEpLmNfc3RyKCkpOwogfQogCiAvLyBUZXN0cyB0aGF0IFVuaWNvZGUgY29kZS1wb2ludHMgdGhh
dCBoYXZlIDEyIHRvIDE2IGJpdHMgYXJlIGVuY29kZWQKIC8vIGFzIDExMTB4eHh4IDEweHh4eHh4
IDEweHh4eHh4LgogVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgQ2FuRW5jb2RlMTJUbzE2Qml0
cykgewogICAvLyAwMDAwIDEwMDAgMTEwMSAwMDExID0+IDExMTAtMDAwMCAxMC0xMDAwMTEgMTAt
MDEwMDExCi0gIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lkZVN0cmluZ1RvVXRmOChM
Ilx4OEQzIiwgMSkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lk
ZVN0cmluZ1RvVXRmOChMIlx4OEQzIiwgLTEpLmNfc3RyKCkpOworICBjb25zdCB3Y2hhcl90IHMx
W10gPSB7IDB4OEQzLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lk
ZVN0cmluZ1RvVXRmOChzMSwgMSkuY19zdHIoKSk7CisgIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNc
eDkzIiwgV2lkZVN0cmluZ1RvVXRmOChzMSwgLTEpLmNfc3RyKCkpOwogCiAgIC8vIDExMDAgMDEx
MSAwMTAwIDExMDEgPT4gMTExMC0xMTAwIDEwLTAxMTEwMSAxMC0wMDExMDEKLSAgRVhQRUNUX1NU
UkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhDNzREIiwgMSkuY19zdHIo
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHhFQ1x4OURceDhEIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4
Qzc0RCIsIC0xKS5jX3N0cigpKTsKKyAgY29uc3Qgd2NoYXJfdCBzMltdID0geyAweEM3NEQsICdc
MCcgfTsKKyAgRVhQRUNUX1NUUkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5nVG9VdGY4KHMy
LCAxKS5jX3N0cigpKTsKKyAgRVhQRUNUX1NUUkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5n
VG9VdGY4KHMyLCAtMSkuY19zdHIoKSk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgdGhlIGNvbnZlcnNp
b24gc3RvcHMgd2hlbiB0aGUgZnVuY3Rpb24gZW5jb3VudGVycyBcMCBjaGFyYWN0ZXIuCkBAIC00
NDcsNyArNjY1LDYgQEAgVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgU3RvcHNXaGVuTGVuZ3Ro
TGltaXRSZWFjaGVkKSB7CiAgIEVYUEVDVF9TVFJFUSgiQUJDIiwgV2lkZVN0cmluZ1RvVXRmOChM
IkFCQ0RFRiIsIDMpLmNfc3RyKCkpOwogfQogCi0KICNpZiAhR1RFU1RfV0lERV9TVFJJTkdfVVNF
U19VVEYxNl8KIC8vIFRlc3RzIHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0aGF0IGhhdmUgMTcg
dG8gMjEgYml0cyBhcmUgZW5jb2RlZAogLy8gYXMgMTExMTB4eHggMTB4eHh4eHggMTB4eHh4eHgg
MTB4eHh4eHguIFRoaXMgY29kZSBtYXkgbm90IGNvbXBpbGUKQEAgLTQ3MSwyNSArNjg4LDI5IEBA
IFRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENhbkVuY29kZUludmFsaWRDb2RlUG9pbnQpIHsK
IC8vIFRlc3RzIHRoYXQgc3Vycm9nYXRlIHBhaXJzIGFyZSBlbmNvZGVkIGNvcnJlY3RseSBvbiB0
aGUgc3lzdGVtcyB1c2luZwogLy8gVVRGLTE2IGVuY29kaW5nIGluIHRoZSB3aWRlIHN0cmluZ3Mu
CiBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGVWYWxpZFV0ZjE2U1Vycm9nYXRl
UGFpcnMpIHsKLSAgRVhQRUNUX1NUUkVRKCJceEYwXHg5MFx4OTBceDgwIiwKLSAgICAgICAgICAg
ICAgIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEQ4MDFceERDMDAiLCAtMSkuY19zdHIoKSk7CisgIGNv
bnN0IHdjaGFyX3Qgc1tdID0geyAweEQ4MDEsIDB4REMwMCwgJ1wwJyB9OworICBFWFBFQ1RfU1RS
RVEoIlx4RjBceDkwXHg5MFx4ODAiLCBXaWRlU3RyaW5nVG9VdGY4KHMsIC0xKS5jX3N0cigpKTsK
IH0KIAogLy8gVGVzdHMgdGhhdCBlbmNvZGluZyBhbiBpbnZhbGlkIFVURi0xNiBzdXJyb2dhdGUg
cGFpcgogLy8gZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCByZXN1bHQuCiBURVNUKFdpZGVTdHJpbmdU
b1V0ZjhUZXN0LCBDYW5FbmNvZGVJbnZhbGlkVXRmMTZTdXJyb2dhdGVQYWlyKSB7CiAgIC8vIExl
YWRpbmcgc3Vycm9nYXRlIGlzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZy4KLSAgRVhQRUNUX1NU
UkVRKCJceEVEXHhBMFx4ODAiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhEODAwIiwgLTEpLmNfc3Ry
KCkpOworICBjb25zdCB3Y2hhcl90IHMxW10gPSB7IDB4RDgwMCwgJ1wwJyB9OworICBFWFBFQ1Rf
U1RSRVEoIlx4RURceEEwXHg4MCIsIFdpZGVTdHJpbmdUb1V0ZjgoczEsIC0xKS5jX3N0cigpKTsK
ICAgLy8gTGVhZGluZyBzdXJyb2dhdGUgaXMgbm90IGZvbGxvd2VkIGJ5IHRoZSB0cmFpbGluZyBz
dXJyb2dhdGUuCi0gIEVYUEVDVF9TVFJFUSgiXHhFRFx4QTBceDgwJCIsIFdpZGVTdHJpbmdUb1V0
ZjgoTCJceEQ4MDAkIiwgLTEpLmNfc3RyKCkpOworICBjb25zdCB3Y2hhcl90IHMyW10gPSB7IDB4
RDgwMCwgJ00nLCAnXDAnIH07CisgIEVYUEVDVF9TVFJFUSgiXHhFRFx4QTBceDgwTSIsIFdpZGVT
dHJpbmdUb1V0ZjgoczIsIC0xKS5jX3N0cigpKTsKICAgLy8gVHJhaWxpbmcgc3Vycm9nYXRlIGFw
cGVhcmFzIHdpdGhvdXQgYSBsZWFkaW5nIHN1cnJvZ2F0ZS4KLSAgRVhQRUNUX1NUUkVRKCJceEVE
XHhCMFx4ODBQUVIiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhEQzAwUFFSIiwgLTEpLmNfc3RyKCkp
OworICBjb25zdCB3Y2hhcl90IHMzW10gPSB7IDB4REMwMCwgJ1AnLCAnUScsICdSJywgJ1wwJyB9
OworICBFWFBFQ1RfU1RSRVEoIlx4RURceEIwXHg4MFBRUiIsIFdpZGVTdHJpbmdUb1V0ZjgoczMs
IC0xKS5jX3N0cigpKTsKIH0KICNlbmRpZiAgLy8gIUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRG
MTZfCiAKIC8vIFRlc3RzIHRoYXQgY29kZXBvaW50IGNvbmNhdGVuYXRpb24gd29ya3MgY29ycmVj
dGx5LgogI2lmICFHVEVTVF9XSURFX1NUUklOR19VU0VTX1VURjE2XwogVEVTVChXaWRlU3RyaW5n
VG9VdGY4VGVzdCwgQ29uY2F0ZW5hdGVzQ29kZXBvaW50c0NvcnJlY3RseSkgeworICBjb25zdCB3
Y2hhcl90IHNbXSA9IHsgMHgxMDg2MzQsIDB4Qzc0RCwgJ1xuJywgMHg1NzYsIDB4OEQzLCAweDEw
ODYzNCwgJ1wwJ307CiAgIEVYUEVDVF9TVFJFUSgKICAgICAgICJceEY0XHg4OFx4OThceEI0Igog
ICAgICAgICAgICJceEVDXHg5RFx4OEQiCkBAIC00OTcsMTMgKzcxOCwxNCBAQCBURVNUKFdpZGVT
dHJpbmdUb1V0ZjhUZXN0LCBDb25jYXRlbmF0ZXNDb2RlcG9pbnRzQ29ycmVjdGx5KSB7CiAgICAg
ICAgICAgIlx4RDVceEI2IgogICAgICAgICAgICJceEUwXHhBM1x4OTMiCiAgICAgICAgICAgIlx4
RjRceDg4XHg5OFx4QjQiLAotICAgICAgV2lkZVN0cmluZ1RvVXRmOChMIlx4MTA4NjM0XHhDNzRE
XG5ceDU3Nlx4OEQzXHgxMDg2MzQiLCAtMSkuY19zdHIoKSk7CisgICAgICBXaWRlU3RyaW5nVG9V
dGY4KHMsIC0xKS5jX3N0cigpKTsKIH0KICNlbHNlCiBURVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0
LCBDb25jYXRlbmF0ZXNDb2RlcG9pbnRzQ29ycmVjdGx5KSB7CisgIGNvbnN0IHdjaGFyX3Qgc1td
ID0geyAweEM3NEQsICdcbicsIDB4NTc2LCAweDhEMywgJ1wwJ307CiAgIEVYUEVDVF9TVFJFUSgK
ICAgICAgICJceEVDXHg5RFx4OEQiICJcbiIgIlx4RDVceEI2IiAiXHhFMFx4QTNceDkzIiwKLSAg
ICAgIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEM3NERcblx4NTc2XHg4RDMiLCAtMSkuY19zdHIoKSk7
CisgICAgICBXaWRlU3RyaW5nVG9VdGY4KHMsIC0xKS5jX3N0cigpKTsKIH0KICNlbmRpZiAgLy8g
IUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCiAKQEAgLTc5NywyNjkgKzEwMTksMTYgQEAg
VEVTVChBc3NlcnRIZWxwZXJUZXN0LCBBc3NlcnRIZWxwZXJJc1NtYWxsKSB7CiAgIEVYUEVDVF9M
RShzaXplb2YodGVzdGluZzo6aW50ZXJuYWw6OkFzc2VydEhlbHBlciksIHNpemVvZih2b2lkKikp
OwogfQogCi0vLyBUZXN0cyB0aGUgU3RyaW5nIGNsYXNzLgotCi0vLyBUZXN0cyBTdHJpbmcncyBj
b25zdHJ1Y3RvcnMuCi1URVNUKFN0cmluZ1Rlc3QsIENvbnN0cnVjdG9ycykgewotICAvLyBEZWZh
dWx0IGN0b3IuCi0gIFN0cmluZyBzMTsKLSAgLy8gV2UgYXJlbid0IHVzaW5nIEVYUEVDVF9FUShO
VUxMLCBzMS5jX3N0cigpKSBiZWNhdXNlIGNvbXBhcmluZwotICAvLyBwb2ludGVycyB3aXRoIE5V
TEwgaXNuJ3Qgc3VwcG9ydGVkIG9uIGFsbCBwbGF0Zm9ybXMuCi0gIEVYUEVDVF9FUSgwVSwgczEu
bGVuZ3RoKCkpOwotICBFWFBFQ1RfVFJVRShOVUxMID09IHMxLmNfc3RyKCkpOwotCi0gIC8vIElt
cGxpY2l0bHkgY29uc3RydWN0cyBmcm9tIGEgQy1zdHJpbmcuCi0gIFN0cmluZyBzMiA9ICJIaSI7
Ci0gIEVYUEVDVF9FUSgyVSwgczIubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoIkhpIiwgczIu
Y19zdHIoKSk7Ci0KLSAgLy8gQ29uc3RydWN0cyBmcm9tIGEgQy1zdHJpbmcgYW5kIGEgbGVuZ3Ro
LgotICBTdHJpbmcgczMoImhlbGxvIiwgMyk7Ci0gIEVYUEVDVF9FUSgzVSwgczMubGVuZ3RoKCkp
OwotICBFWFBFQ1RfU1RSRVEoImhlbCIsIHMzLmNfc3RyKCkpOwotCi0gIC8vIFRoZSBlbXB0eSBT
dHJpbmcgc2hvdWxkIGJlIGNyZWF0ZWQgd2hlbiBTdHJpbmcgaXMgY29uc3RydWN0ZWQgd2l0aAot
ICAvLyBhIE5VTEwgcG9pbnRlciBhbmQgbGVuZ3RoIDAuCi0gIEVYUEVDVF9FUSgwVSwgU3RyaW5n
KE5VTEwsIDApLmxlbmd0aCgpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZyhOVUxMLCAwKS5jX3N0
cigpID09IE5VTEwpOwotCi0gIC8vIENvbnN0cnVjdHMgYSBTdHJpbmcgdGhhdCBjb250YWlucyAn
XDAnLgotICBTdHJpbmcgczQoImFcMGJjZCIsIDQpOwotICBFWFBFQ1RfRVEoNFUsIHM0Lmxlbmd0
aCgpKTsKLSAgRVhQRUNUX0VRKCdhJywgczQuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgnXDAn
LCBzNC5jX3N0cigpWzFdKTsKLSAgRVhQRUNUX0VRKCdiJywgczQuY19zdHIoKVsyXSk7Ci0gIEVY
UEVDVF9FUSgnYycsIHM0LmNfc3RyKClbM10pOwotCi0gIC8vIENvcHkgY3RvciB3aGVyZSB0aGUg
c291cmNlIGlzIE5VTEwuCi0gIGNvbnN0IFN0cmluZyBudWxsX3N0cjsKLSAgU3RyaW5nIHM1ID0g
bnVsbF9zdHI7Ci0gIEVYUEVDVF9UUlVFKHM1LmNfc3RyKCkgPT0gTlVMTCk7Ci0KLSAgLy8gQ29w
eSBjdG9yIHdoZXJlIHRoZSBzb3VyY2UgaXNuJ3QgTlVMTC4KLSAgU3RyaW5nIHM2ID0gczM7Ci0g
IEVYUEVDVF9FUSgzVSwgczYubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoImhlbCIsIHM2LmNf
c3RyKCkpOwotCi0gIC8vIENvcHkgY3RvciB3aGVyZSB0aGUgc291cmNlIGNvbnRhaW5zICdcMCcu
Ci0gIFN0cmluZyBzNyA9IHM0OwotICBFWFBFQ1RfRVEoNFUsIHM3Lmxlbmd0aCgpKTsKLSAgRVhQ
RUNUX0VRKCdhJywgczcuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgnXDAnLCBzNy5jX3N0cigp
WzFdKTsKLSAgRVhQRUNUX0VRKCdiJywgczcuY19zdHIoKVsyXSk7Ci0gIEVYUEVDVF9FUSgnYycs
IHM3LmNfc3RyKClbM10pOwotfQotCi1URVNUKFN0cmluZ1Rlc3QsIENvbnZlcnRzRnJvbVN0ZFN0
cmluZykgewotICAvLyBBbiBlbXB0eSBzdGQ6OnN0cmluZy4KLSAgY29uc3Qgc3RkOjpzdHJpbmcg
c3JjMSgiIik7Ci0gIGNvbnN0IFN0cmluZyBkZXN0MSA9IHNyYzE7Ci0gIEVYUEVDVF9FUSgwVSwg
ZGVzdDEubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIGRlc3QxLmNfc3RyKCkpOwotCi0g
IC8vIEEgbm9ybWFsIHN0ZDo6c3RyaW5nLgotICBjb25zdCBzdGQ6OnN0cmluZyBzcmMyKCJIaSIp
OwotICBjb25zdCBTdHJpbmcgZGVzdDIgPSBzcmMyOwotICBFWFBFQ1RfRVEoMlUsIGRlc3QyLmxl
bmd0aCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJIaSIsIGRlc3QyLmNfc3RyKCkpOwotCi0gIC8vIEFu
IHN0ZDo6c3RyaW5nIHdpdGggYW4gZW1iZWRkZWQgTlVMIGNoYXJhY3Rlci4KLSAgY29uc3QgY2hh
ciBzcmMzW10gPSAiYVwwYiI7Ci0gIGNvbnN0IFN0cmluZyBkZXN0MyA9IHN0ZDo6c3RyaW5nKHNy
YzMsIHNpemVvZihzcmMzKSk7Ci0gIEVYUEVDVF9FUShzaXplb2Yoc3JjMyksIGRlc3QzLmxlbmd0
aCgpKTsKLSAgRVhQRUNUX0VRKCdhJywgZGVzdDMuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgn
XDAnLCBkZXN0My5jX3N0cigpWzFdKTsKLSAgRVhQRUNUX0VRKCdiJywgZGVzdDMuY19zdHIoKVsy
XSk7Ci19Ci0KLVRFU1QoU3RyaW5nVGVzdCwgQ29udmVydHNUb1N0ZFN0cmluZykgewotICAvLyBB
biBlbXB0eSBTdHJpbmcuCi0gIGNvbnN0IFN0cmluZyBzcmMxKCIiKTsKLSAgY29uc3Qgc3RkOjpz
dHJpbmcgZGVzdDEgPSBzcmMxOwotICBFWFBFQ1RfRVEoIiIsIGRlc3QxKTsKLQotICAvLyBBIG5v
cm1hbCBTdHJpbmcuCi0gIGNvbnN0IFN0cmluZyBzcmMyKCJIaSIpOwotICBjb25zdCBzdGQ6OnN0
cmluZyBkZXN0MiA9IHNyYzI7Ci0gIEVYUEVDVF9FUSgiSGkiLCBkZXN0Mik7Ci0KLSAgLy8gQSBT
dHJpbmcgY29udGFpbmluZyBhICdcMCcuCi0gIGNvbnN0IFN0cmluZyBzcmMzKCJ4XDB5IiwgMyk7
Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGRlc3QzID0gc3JjMzsKLSAgRVhQRUNUX0VRKHN0ZDo6c3Ry
aW5nKCJ4XDB5IiwgMyksIGRlc3QzKTsKLX0KLQotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5H
Ci0KLVRFU1QoU3RyaW5nVGVzdCwgQ29udmVydHNGcm9tR2xvYmFsU3RyaW5nKSB7Ci0gIC8vIEFu
IGVtcHR5IDo6c3RyaW5nLgotICBjb25zdCA6OnN0cmluZyBzcmMxKCIiKTsKLSAgY29uc3QgU3Ry
aW5nIGRlc3QxID0gc3JjMTsKLSAgRVhQRUNUX0VRKDBVLCBkZXN0MS5sZW5ndGgoKSk7Ci0gIEVY
UEVDVF9TVFJFUSgiIiwgZGVzdDEuY19zdHIoKSk7Ci0KLSAgLy8gQSBub3JtYWwgOjpzdHJpbmcu
Ci0gIGNvbnN0IDo6c3RyaW5nIHNyYzIoIkhpIik7Ci0gIGNvbnN0IFN0cmluZyBkZXN0MiA9IHNy
YzI7Ci0gIEVYUEVDVF9FUSgyVSwgZGVzdDIubGVuZ3RoKCkpOwotICBFWFBFQ1RfU1RSRVEoIkhp
IiwgZGVzdDIuY19zdHIoKSk7Ci0KLSAgLy8gQW4gOjpzdHJpbmcgd2l0aCBhbiBlbWJlZGRlZCBO
VUwgY2hhcmFjdGVyLgotICBjb25zdCBjaGFyIHNyYzNbXSA9ICJ4XDB5IjsKLSAgY29uc3QgU3Ry
aW5nIGRlc3QzID0gOjpzdHJpbmcoc3JjMywgc2l6ZW9mKHNyYzMpKTsKLSAgRVhQRUNUX0VRKHNp
emVvZihzcmMzKSwgZGVzdDMubGVuZ3RoKCkpOwotICBFWFBFQ1RfRVEoJ3gnLCBkZXN0My5jX3N0
cigpWzBdKTsKLSAgRVhQRUNUX0VRKCdcMCcsIGRlc3QzLmNfc3RyKClbMV0pOwotICBFWFBFQ1Rf
RVEoJ3knLCBkZXN0My5jX3N0cigpWzJdKTsKLX0KLQotVEVTVChTdHJpbmdUZXN0LCBDb252ZXJ0
c1RvR2xvYmFsU3RyaW5nKSB7Ci0gIC8vIEFuIGVtcHR5IFN0cmluZy4KLSAgY29uc3QgU3RyaW5n
IHNyYzEoIiIpOwotICBjb25zdCA6OnN0cmluZyBkZXN0MSA9IHNyYzE7Ci0gIEVYUEVDVF9FUSgi
IiwgZGVzdDEpOwotCi0gIC8vIEEgbm9ybWFsIFN0cmluZy4KLSAgY29uc3QgU3RyaW5nIHNyYzIo
IkhpIik7Ci0gIGNvbnN0IDo6c3RyaW5nIGRlc3QyID0gc3JjMjsKLSAgRVhQRUNUX0VRKCJIaSIs
IGRlc3QyKTsKLQotICBjb25zdCBTdHJpbmcgc3JjMygieFwweSIsIDMpOwotICBjb25zdCA6OnN0
cmluZyBkZXN0MyA9IHNyYzM7Ci0gIEVYUEVDVF9FUSg6OnN0cmluZygieFwweSIsIDMpLCBkZXN0
Myk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLQotLy8gVGVzdHMg
U3RyaW5nOjpTaG93Q1N0cmluZ1F1b3RlZCgpLgotVEVTVChTdHJpbmdUZXN0LCBTaG93Q1N0cmlu
Z1F1b3RlZCkgewotICBFWFBFQ1RfU1RSRVEoIihudWxsKSIsCi0gICAgICAgICAgICAgICBTdHJp
bmc6OlNob3dDU3RyaW5nUXVvdGVkKE5VTEwpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIlwi
XCIiLAotICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93Q1N0cmluZ1F1b3RlZCgiIikuY19zdHIo
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiXCJmb29cIiIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OlNo
b3dDU3RyaW5nUXVvdGVkKCJmb28iKS5jX3N0cigpKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpl
bXB0eSgpLgotVEVTVChTdHJpbmdUZXN0LCBFbXB0eSkgewotICBFWFBFQ1RfVFJVRShTdHJpbmco
IiIpLmVtcHR5KCkpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nKCkuZW1wdHkoKSk7Ci0gIEVYUEVD
VF9GQUxTRShTdHJpbmcoTlVMTCkuZW1wdHkoKSk7Ci0gIEVYUEVDVF9GQUxTRShTdHJpbmcoImEi
KS5lbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiXDAiLCAxKS5lbXB0eSgpKTsKLX0K
LQotLy8gVGVzdHMgU3RyaW5nOjpDb21wYXJlKCkuCi1URVNUKFN0cmluZ1Rlc3QsIENvbXBhcmUp
IHsKLSAgLy8gTlVMTCB2cyBOVUxMLgotICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCkuQ29tcGFyZShT
dHJpbmcoKSkpOwotCi0gIC8vIE5VTEwgdnMgbm9uLU5VTEwuCi0gIEVYUEVDVF9FUSgtMSwgU3Ry
aW5nKCkuQ29tcGFyZShTdHJpbmcoIiIpKSk7Ci0KLSAgLy8gTm9uLU5VTEwgdnMgTlVMTC4KLSAg
RVhQRUNUX0VRKDEsIFN0cmluZygiIikuQ29tcGFyZShTdHJpbmcoKSkpOwotCi0gIC8vIFRoZSBm
b2xsb3dpbmcgY292ZXJzIG5vbi1OVUxMIHZzIG5vbi1OVUxMLgotCi0gIC8vICIiIHZzICIiLgot
ICBFWFBFQ1RfRVEoMCwgU3RyaW5nKCIiKS5Db21wYXJlKFN0cmluZygiIikpKTsKLQotICAvLyAi
IiB2cyBub24tIiIuCi0gIEVYUEVDVF9FUSgtMSwgU3RyaW5nKCIiKS5Db21wYXJlKFN0cmluZygi
XDAiLCAxKSkpOwotICBFWFBFQ1RfRVEoLTEsIFN0cmluZygiIikuQ29tcGFyZSgiICIpKTsKLQot
ICAvLyBOb24tIiIgdnMgIiIuCi0gIEVYUEVDVF9FUSgxLCBTdHJpbmcoImEiKS5Db21wYXJlKFN0
cmluZygiIikpKTsKLQotICAvLyBUaGUgZm9sbG93aW5nIGNvdmVycyBub24tIiIgdnMgbm9uLSIi
LgotCi0gIC8vIFNhbWUgbGVuZ3RoIGFuZCBlcXVhbC4KLSAgRVhQRUNUX0VRKDAsIFN0cmluZygi
YSIpLkNvbXBhcmUoU3RyaW5nKCJhIikpKTsKLQotICAvLyBTYW1lIGxlbmd0aCBhbmQgZGlmZmVy
ZW50LgotICBFWFBFQ1RfRVEoLTEsIFN0cmluZygiYVwwYiIsIDMpLkNvbXBhcmUoU3RyaW5nKCJh
XDBjIiwgMykpKTsKLSAgRVhQRUNUX0VRKDEsIFN0cmluZygiYiIpLkNvbXBhcmUoU3RyaW5nKCJh
IikpKTsKLQotICAvLyBEaWZmZXJlbnQgbGVuZ3Rocy4KLSAgRVhQRUNUX0VRKC0xLCBTdHJpbmco
ImEiKS5Db21wYXJlKFN0cmluZygiYWIiKSkpOwotICBFWFBFQ1RfRVEoLTEsIFN0cmluZygiYSIp
LkNvbXBhcmUoU3RyaW5nKCJhXDAiLCAyKSkpOwotICBFWFBFQ1RfRVEoMSwgU3RyaW5nKCJhYmMi
KS5Db21wYXJlKFN0cmluZygiYWFjZCIpKSk7Ci19Ci0KLS8vIFRlc3RzIFN0cmluZzo6b3BlcmF0
b3I9PSgpLgotVEVTVChTdHJpbmdUZXN0LCBFcXVhbHMpIHsKLSAgY29uc3QgU3RyaW5nIG51bGwo
TlVMTCk7Ci0gIEVYUEVDVF9UUlVFKG51bGwgPT0gTlVMTCk7ICAvLyBOT0xJTlQKLSAgRVhQRUNU
X0ZBTFNFKG51bGwgPT0gIiIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShudWxsID09ICJi
YXIiKTsgIC8vIE5PTElOVAotCi0gIGNvbnN0IFN0cmluZyBlbXB0eSgiIik7Ci0gIEVYUEVDVF9G
QUxTRShlbXB0eSA9PSBOVUxMKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShlbXB0eSA9PSAi
Iik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKGVtcHR5ID09ICJiYXIiKTsgIC8vIE5PTElO
VAotCi0gIGNvbnN0IFN0cmluZyBmb28oImZvbyIpOwotICBFWFBFQ1RfRkFMU0UoZm9vID09IE5V
TEwpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShmb28gPT0gIiIpOyAgLy8gTk9MSU5UCi0g
IEVYUEVDVF9GQUxTRShmb28gPT0gImJhciIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKGZv
byA9PSAiZm9vIik7ICAvLyBOT0xJTlQKLQotICBjb25zdCBTdHJpbmcgYmFyKCJ4XDB5IiwgMyk7
Ci0gIEVYUEVDVF9GQUxTRShiYXIgPT0gIngiKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpvcGVy
YXRvciE9KCkuCi1URVNUKFN0cmluZ1Rlc3QsIE5vdEVxdWFscykgewotICBjb25zdCBTdHJpbmcg
bnVsbChOVUxMKTsKLSAgRVhQRUNUX0ZBTFNFKG51bGwgIT0gTlVMTCk7ICAvLyBOT0xJTlQKLSAg
RVhQRUNUX1RSVUUobnVsbCAhPSAiIik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUobnVsbCAh
PSAiYmFyIik7ICAvLyBOT0xJTlQKLQotICBjb25zdCBTdHJpbmcgZW1wdHkoIiIpOwotICBFWFBF
Q1RfVFJVRShlbXB0eSAhPSBOVUxMKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRkFMU0UoZW1wdHkg
IT0gIiIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKGVtcHR5ICE9ICJiYXIiKTsgIC8vIE5P
TElOVAotCi0gIGNvbnN0IFN0cmluZyBmb28oImZvbyIpOwotICBFWFBFQ1RfVFJVRShmb28gIT0g
TlVMTCk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUoZm9vICE9ICIiKTsgIC8vIE5PTElOVAot
ICBFWFBFQ1RfVFJVRShmb28gIT0gImJhciIpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShm
b28gIT0gImZvbyIpOyAgLy8gTk9MSU5UCi0KLSAgY29uc3QgU3RyaW5nIGJhcigieFwweSIsIDMp
OwotICBFWFBFQ1RfVFJVRShiYXIgIT0gIngiKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpsZW5n
dGgoKS4KLVRFU1QoU3RyaW5nVGVzdCwgTGVuZ3RoKSB7Ci0gIEVYUEVDVF9FUSgwVSwgU3RyaW5n
KCkubGVuZ3RoKCkpOwotICBFWFBFQ1RfRVEoMFUsIFN0cmluZygiIikubGVuZ3RoKCkpOwotICBF
WFBFQ1RfRVEoMlUsIFN0cmluZygiYWIiKS5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9FUSgzVSwgU3Ry
aW5nKCJhXDBiIiwgMykubGVuZ3RoKCkpOwotfQotCi0vLyBUZXN0cyBTdHJpbmc6OkVuZHNXaXRo
KCkuCi1URVNUKFN0cmluZ1Rlc3QsIEVuZHNXaXRoKSB7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygi
Zm9vYmFyIikuRW5kc1dpdGgoImJhciIpKTsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nKCJmb29iYXIi
KS5FbmRzV2l0aCgiIikpOwotICBFWFBFQ1RfVFJVRShTdHJpbmcoIiIpLkVuZHNXaXRoKCIiKSk7
Ci0KLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiZm9vYmFyIikuRW5kc1dpdGgoImZvbyIpKTsKLSAg
RVhQRUNUX0ZBTFNFKFN0cmluZygiIikuRW5kc1dpdGgoImZvbyIpKTsKLX0KLQogLy8gVGVzdHMg
U3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgpLgogVEVTVChTdHJpbmdUZXN0LCBFbmRz
V2l0aENhc2VJbnNlbnNpdGl2ZSkgewotICBFWFBFQ1RfVFJVRShTdHJpbmcoImZvb2JhciIpLkVu
ZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCJCQVIiKSk7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZygiZm9v
YmFSIikuRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImJhciIpKTsKLSAgRVhQRUNUX1RSVUUoU3Ry
aW5nKCJmb29iYXIiKS5FbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiIikpOwotICBFWFBFQ1RfVFJV
RShTdHJpbmcoIiIpLkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCIiKSk7CisgIEVYUEVDVF9UUlVF
KFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImZvb2JhciIsICJCQVIiKSk7CisgIEVY
UEVDVF9UUlVFKFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImZvb2JhUiIsICJiYXIi
KSk7CisgIEVYUEVDVF9UUlVFKFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImZvb2Jh
ciIsICIiKSk7CisgIEVYUEVDVF9UUlVFKFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUo
IiIsICIiKSk7CiAKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiRm9vYmFyIikuRW5kc1dpdGhDYXNl
SW5zZW5zaXRpdmUoImZvbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiZm9vYmFyIikuRW5k
c1dpdGhDYXNlSW5zZW5zaXRpdmUoIkZvbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZygiIiku
RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoImZvbyIpKTsKKyAgRVhQRUNUX0ZBTFNFKFN0cmluZzo6
RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoIkZvb2JhciIsICJmb28iKSk7CisgIEVYUEVDVF9GQUxT
RShTdHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCJmb29iYXIiLCAiRm9vIikpOworICBF
WFBFQ1RfRkFMU0UoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiIiwgImZvbyIpKTsK
IH0KIAogLy8gQysrQnVpbGRlcidzIHByZXByb2Nlc3NvciBpcyBidWdneTsgaXQgZmFpbHMgdG8g
ZXhwYW5kIG1hY3JvcyB0aGF0CkBAIC0xMDc5LDg3ICsxMDQ4LDYgQEAgVEVTVChTdHJpbmdUZXN0
LCBDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscykgewogICBFWFBFQ1RfVFJVRShTdHJp
bmc6OkNhc2VJbnNlbnNpdGl2ZVdpZGVDU3RyaW5nRXF1YWxzKEwiRk9PQkFSIiwgTCJmb29iYXIi
KSk7CiB9CiAKLS8vIFRlc3RzIHRoYXQgTlVMTCBjYW4gYmUgYXNzaWduZWQgdG8gYSBTdHJpbmcu
Ci1URVNUKFN0cmluZ1Rlc3QsIENhbkJlQXNzaWduZWROVUxMKSB7Ci0gIGNvbnN0IFN0cmluZyBz
cmMoTlVMTCk7Ci0gIFN0cmluZyBkZXN0OwotCi0gIGRlc3QgPSBzcmM7Ci0gIEVYUEVDVF9TVFJF
UShOVUxMLCBkZXN0LmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBlbXB0eSBzdHJp
bmcgIiIgY2FuIGJlIGFzc2lnbmVkIHRvIGEgU3RyaW5nLgotVEVTVChTdHJpbmdUZXN0LCBDYW5C
ZUFzc2lnbmVkRW1wdHkpIHsKLSAgY29uc3QgU3RyaW5nIHNyYygiIik7Ci0gIFN0cmluZyBkZXN0
OwotCi0gIGRlc3QgPSBzcmM7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgZGVzdC5jX3N0cigpKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBhIG5vbi1lbXB0eSBzdHJpbmcgY2FuIGJlIGFzc2lnbmVkIHRvIGEg
U3RyaW5nLgotVEVTVChTdHJpbmdUZXN0LCBDYW5CZUFzc2lnbmVkTm9uRW1wdHkpIHsKLSAgY29u
c3QgU3RyaW5nIHNyYygiaGVsbG8iKTsKLSAgU3RyaW5nIGRlc3Q7Ci0gIGRlc3QgPSBzcmM7Ci0g
IEVYUEVDVF9FUSg1VSwgZGVzdC5sZW5ndGgoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiaGVsbG8iLCBk
ZXN0LmNfc3RyKCkpOwotCi0gIGNvbnN0IFN0cmluZyBzcmMyKCJ4XDB5IiwgMyk7Ci0gIFN0cmlu
ZyBkZXN0MjsKLSAgZGVzdDIgPSBzcmMyOwotICBFWFBFQ1RfRVEoM1UsIGRlc3QyLmxlbmd0aCgp
KTsKLSAgRVhQRUNUX0VRKCd4JywgZGVzdDIuY19zdHIoKVswXSk7Ci0gIEVYUEVDVF9FUSgnXDAn
LCBkZXN0Mi5jX3N0cigpWzFdKTsKLSAgRVhQRUNUX0VRKCd5JywgZGVzdDIuY19zdHIoKVsyXSk7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBTdHJpbmcgY2FuIGJlIGFzc2lnbmVkIHRvIGl0c2VsZi4K
LVRFU1QoU3RyaW5nVGVzdCwgQ2FuQmVBc3NpZ25lZFNlbGYpIHsKLSAgU3RyaW5nIGRlc3QoImhl
bGxvIik7Ci0KLSAgZGVzdCA9IGRlc3Q7Ci0gIEVYUEVDVF9TVFJFUSgiaGVsbG8iLCBkZXN0LmNf
c3RyKCkpOwotfQotCi0vLyBTdW4gU3R1ZGlvIDwgMTIgaW5jb3JyZWN0bHkgcmVqZWN0cyB0aGlz
IGNvZGUgZHVlIHRvIGFuIG92ZXJsb2FkaW5nCi0vLyBhbWJpZ3VpdHkuCi0jaWYgIShkZWZpbmVk
KF9fU1VOUFJPX0NDKSAmJiBfX1NVTlBST19DQyA8IDB4NTkwKQotLy8gVGVzdHMgc3RyZWFtaW5n
IGEgU3RyaW5nLgotVEVTVChTdHJpbmdUZXN0LCBTdHJlYW1zKSB7Ci0gIEVYUEVDVF9FUShTdHJl
YW1hYmxlVG9TdHJpbmcoU3RyaW5nKCkpLCAiKG51bGwpIik7Ci0gIEVYUEVDVF9FUShTdHJlYW1h
YmxlVG9TdHJpbmcoU3RyaW5nKCIiKSksICIiKTsKLSAgRVhQRUNUX0VRKFN0cmVhbWFibGVUb1N0
cmluZyhTdHJpbmcoImFcMGIiLCAzKSksICJhXFwwYiIpOwotfQotI2VuZGlmCi0KLS8vIFRlc3Rz
IHRoYXQgU3RyaW5nOjpGb3JtYXQoKSB3b3Jrcy4KLVRFU1QoU3RyaW5nVGVzdCwgRm9ybWF0V29y
a3MpIHsKLSAgLy8gTm9ybWFsIGNhc2U6IHRoZSBmb3JtYXQgc3BlYyBpcyB2YWxpZCwgdGhlIGFy
Z3VtZW50cyBtYXRjaCB0aGUKLSAgLy8gc3BlYywgYW5kIHRoZSByZXN1bHQgaXMgPCA0MDk1IGNo
YXJhY3RlcnMuCi0gIEVYUEVDVF9TVFJFUSgiSGVsbG8sIDQyIiwgU3RyaW5nOjpGb3JtYXQoIiVz
LCAlZCIsICJIZWxsbyIsIDQyKS5jX3N0cigpKTsKLQotICAvLyBFZGdlIGNhc2U6IHRoZSByZXN1
bHQgaXMgNDA5NSBjaGFyYWN0ZXJzLgotICBjaGFyIGJ1ZmZlcls0MDk2XTsKLSAgY29uc3Qgc2l6
ZV90IGtTaXplID0gc2l6ZW9mKGJ1ZmZlcik7Ci0gIG1lbXNldChidWZmZXIsICdhJywga1NpemUg
LSAxKTsKLSAgYnVmZmVyW2tTaXplIC0gMV0gPSAnXDAnOwotICBFWFBFQ1RfU1RSRVEoYnVmZmVy
LCBTdHJpbmc6OkZvcm1hdCgiJXMiLCBidWZmZXIpLmNfc3RyKCkpOwotCi0gIC8vIFRoZSByZXN1
bHQgbmVlZHMgdG8gYmUgNDA5NiBjaGFyYWN0ZXJzLCBleGNlZWRpbmcgRm9ybWF0KCkncyBsaW1p
dC4KLSAgRVhQRUNUX1NUUkVRKCI8Zm9ybWF0dGluZyBlcnJvciBvciBidWZmZXIgZXhjZWVkZWQ+
IiwKLSAgICAgICAgICAgICAgIFN0cmluZzo6Rm9ybWF0KCJ4JXMiLCBidWZmZXIpLmNfc3RyKCkp
OwotCi0jaWYgR1RFU1RfT1NfTElOVVgKLSAgLy8gT24gTGludXgsIGludmFsaWQgZm9ybWF0IHNw
ZWMgc2hvdWxkIGxlYWQgdG8gYW4gZXJyb3IgbWVzc2FnZS4KLSAgLy8gSW4gb3RoZXIgZW52aXJv
bm1lbnQgKGUuZy4gTVNWQyBvbiBXaW5kb3dzKSwgU3RyaW5nOjpGb3JtYXQoKSBtYXkKLSAgLy8g
c2ltcGx5IGlnbm9yZSBhIGJhZCBmb3JtYXQgc3BlYywgc28gdGhpcyBhc3NlcnRpb24gaXMgcnVu
IG9uCi0gIC8vIExpbnV4IG9ubHkuCi0gIEVYUEVDVF9TVFJFUSgiPGZvcm1hdHRpbmcgZXJyb3Ig
b3IgYnVmZmVyIGV4Y2VlZGVkPiIsCi0gICAgICAgICAgICAgICBTdHJpbmc6OkZvcm1hdCgiJSIp
LmNfc3RyKCkpOwotI2VuZGlmCi19Ci0KICNpZiBHVEVTVF9PU19XSU5ET1dTCiAKIC8vIFRlc3Rz
IFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKCkuCkBAIC0xMTcwLDE3ICsxMDU4LDcgQEAgVEVTVChT
dHJpbmdUZXN0LCBTaG93V2lkZUNTdHJpbmcpIHsKICAgRVhQRUNUX1NUUkVRKCJmb28iLCBTdHJp
bmc6OlNob3dXaWRlQ1N0cmluZyhMImZvbyIpLmNfc3RyKCkpOwogfQogCi0vLyBUZXN0cyBTdHJp
bmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZCgpLgotVEVTVChTdHJpbmdUZXN0LCBTaG93V2lkZUNT
dHJpbmdRdW90ZWQpIHsKLSAgRVhQRUNUX1NUUkVRKCIobnVsbCkiLAotICAgICAgICAgICAgICAg
U3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90ZWQoTlVMTCkuY19zdHIoKSk7Ci0gIEVYUEVDVF9T
VFJFUSgiTFwiXCIiLAotICAgICAgICAgICAgICAgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmdRdW90
ZWQoTCIiKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJMXCJmb29cIiIsCi0gICAgICAgICAg
ICAgICBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZ1F1b3RlZChMImZvbyIpLmNfc3RyKCkpOwotfQot
Ci0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKIFRFU1QoU3RyaW5nVGVzdCwgQW5zaUFuZFV0ZjE2TnVsbCkgewogICBFWFBFQ1RfRVEoTlVM
TCwgU3RyaW5nOjpBbnNpVG9VdGYxNihOVUxMKSk7CiAgIEVYUEVDVF9FUShOVUxMLCBTdHJpbmc6
OlV0ZjE2VG9BbnNpKE5VTEwpKTsKQEAgLTEyMDMsNyArMTA4MSw3IEBAIFRFU1QoU3RyaW5nVGVz
dCwgQW5zaUFuZFV0ZjE2Q29udmVydFBhdGhDaGFycykgewogICBFWFBFQ1RfRVEoMCwgd2NzbmNt
cChMIi46XFwgXCIqPyIsIHV0ZjE2LCAzKSk7CiAgIGRlbGV0ZSBbXSB1dGYxNjsKIH0KLSNlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKKyMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCiAKICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwogCkBAIC0xMzE3LDYgKzEx
OTUsMTcgQEAgVEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIENhdGNoZXNGYXRhbEZhbGl1
cmUpIHsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmF0YWxGYWlsdXJlKCksICJFeHBlY3Rl
ZCBmYXRhbCBmYWlsdXJlLiIpOwogfQogCisjaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKK1RF
U1RfRihFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBBY2NlcHRzU3RyaW5nT2JqZWN0KSB7CisgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKEFkZEZhdGFsRmFpbHVyZSgpLCA6OnN0cmluZygiRXhwZWN0ZWQg
ZmF0YWwgZmFpbHVyZS4iKSk7Cit9CisjZW5kaWYKKworVEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVy
ZVRlc3QsIEFjY2VwdHNTdGRTdHJpbmdPYmplY3QpIHsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
QWRkRmF0YWxGYWlsdXJlKCksCisgICAgICAgICAgICAgICAgICAgICAgIDo6c3RkOjpzdHJpbmco
IkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIikpOworfQorCiBURVNUX0YoRXhwZWN0RmF0YWxGYWls
dXJlVGVzdCwgQ2F0Y2hlc0ZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcykgewogICAvLyBXZSBoYXZl
IGFub3RoZXIgdGVzdCBiZWxvdyB0byB2ZXJpZnkgdGhhdCB0aGUgbWFjcm8gY2F0Y2hlcyBmYXRh
bAogICAvLyBmYWlsdXJlcyBnZW5lcmF0ZWQgb24gYW5vdGhlciB0aHJlYWQuCkBAIC0xMzI2LDcg
KzEyMTUsNyBAQCBURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc0ZhdGFsRmFp
bHVyZU9uQWxsVGhyZWFkcykgewogCiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBTaWxlbmNlcyB3
YXJuaW5nczogIkNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZSIKLSNwcmFnbWEgb3B0aW9uIHB1c2gg
LXctY2NjCisjIHByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MKICNlbmRpZgogCiAvLyBUZXN0cyB0
aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgY2FuIGJlIHVzZWQgaW4gYSBub24tdm9pZApAQCAt
MTM1NCw3ICsxMjQzLDcgQEAgdm9pZCBEb2VzTm90QWJvcnRIZWxwZXIoYm9vbCogYWJvcnRlZCkg
ewogCiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2
aW91cyAiI3ByYWdtYSBvcHRpb24gcHVzaCIgc3VwcHJlc3NlZCB0aGVtLgotI3ByYWdtYSBvcHRp
b24gcG9wCisjIHByYWdtYSBvcHRpb24gcG9wCiAjZW5kaWYKIAogVEVTVF9GKEV4cGVjdEZhdGFs
RmFpbHVyZVRlc3QsIERvZXNOb3RBYm9ydCkgewpAQCAtMTM3MSw4ICsxMjYwLDggQEAgc3RhdGlj
IGludCBnbG9iYWxfdmFyID0gMDsKICNkZWZpbmUgR1RFU1RfVVNFX1VOUFJPVEVDVEVEX0NPTU1B
XyBnbG9iYWxfdmFyKyssIGdsb2JhbF92YXIrKwogCiBURVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJl
VGVzdCwgQWNjZXB0c01hY3JvVGhhdEV4cGFuZHNUb1VucHJvdGVjdGVkQ29tbWEpIHsKLSNpZiAh
ZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IF9fQk9STEFORENfXyA+PSAweDYwMAotICAvLyBJQ0Un
cyBpbiBDKytCdWlsZGVyIDIwMDcuCisjaWZuZGVmIF9fQk9STEFORENfXworICAvLyBJQ0UncyBp
biBDKytCdWlsZGVyLgogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7CiAgICAgR1RFU1RfVVNFX1VO
UFJPVEVDVEVEX0NPTU1BXzsKICAgICBBZGRGYXRhbEZhaWx1cmUoKTsKQEAgLTEzOTQsNiArMTI4
MywxOCBAQCBURVNUX0YoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc05vbmZhdGFs
RmFpbHVyZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgbm9uLWZhdGFs
IGZhaWx1cmUuIik7CiB9CiAKKyNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORworVEVTVF9GKEV4
cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEFjY2VwdHNTdHJpbmdPYmplY3QpIHsKKyAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoQWRkTm9uZmF0YWxGYWlsdXJlKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIDo6c3RyaW5nKCJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKSk7Cit9Cisj
ZW5kaWYKKworVEVTVF9GKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEFjY2VwdHNTdGRTdHJp
bmdPYmplY3QpIHsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQWRkTm9uZmF0YWxGYWlsdXJl
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIDo6c3RkOjpzdHJpbmcoIkV4cGVjdGVkIG5v
bi1mYXRhbCBmYWlsdXJlLiIpKTsKK30KKwogVEVTVF9GKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRl
c3QsIENhdGNoZXNOb25mYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKICAgLy8gV2UgaGF2ZSBh
bm90aGVyIHRlc3QgYmVsb3cgdG8gdmVyaWZ5IHRoYXQgdGhlIG1hY3JvIGNhdGNoZXMKICAgLy8g
bm9uLWZhdGFsIGZhaWx1cmVzIGdlbmVyYXRlZCBvbiBhbm90aGVyIHRocmVhZC4KQEAgLTE0ODMs
OCArMTM4NCw3IEBAIGNsYXNzIFRlc3RSZXN1bHRUZXN0IDogcHVibGljIFRlc3QgewogICAgIC8v
IEluIG9yZGVyIHRvIHRlc3QgVGVzdFJlc3VsdCwgd2UgbmVlZCB0byBtb2RpZnkgaXRzIGludGVy
bmFsCiAgICAgLy8gc3RhdGUsIGluIHBhcnRpY3VsYXIgdGhlIFRlc3RQYXJ0UmVzdWx0IHZlY3Rv
ciBpdCBob2xkcy4KICAgICAvLyB0ZXN0X3BhcnRfcmVzdWx0cygpIHJldHVybnMgYSBjb25zdCBy
ZWZlcmVuY2UgdG8gdGhpcyB2ZWN0b3IuCi0gICAgLy8gV2UgY2FzdCBpdCB0byBhIG5vbi1jb25z
dCBvYmplY3Qgcy50LiBpdCBjYW4gYmUgbW9kaWZpZWQgKHllcywKLSAgICAvLyB0aGlzIGlzIGEg
aGFjaykuCisgICAgLy8gV2UgY2FzdCBpdCB0byBhIG5vbi1jb25zdCBvYmplY3Qgcy50LiBpdCBj
YW4gYmUgbW9kaWZpZWQKICAgICBUUFJWZWN0b3IqIHJlc3VsdHMxID0gY29uc3RfY2FzdDxUUFJW
ZWN0b3IqPigKICAgICAgICAgJlRlc3RSZXN1bHRBY2Nlc3Nvcjo6dGVzdF9wYXJ0X3Jlc3VsdHMo
KnIxKSk7CiAgICAgVFBSVmVjdG9yKiByZXN1bHRzMiA9IGNvbnN0X2Nhc3Q8VFBSVmVjdG9yKj4o
CkBAIC0xNTA5LDcgKzE0MDksNyBAQCBjbGFzcyBUZXN0UmVzdWx0VGVzdCA6IHB1YmxpYyBUZXN0
IHsKICAgICBkZWxldGUgcjI7CiAgIH0KIAotICAvLyBIZWxwZXIgdGhhdCBjb21wYXJlcyB0d28g
dHdvIFRlc3RQYXJ0UmVzdWx0cy4KKyAgLy8gSGVscGVyIHRoYXQgY29tcGFyZXMgdHdvIFRlc3RQ
YXJ0UmVzdWx0cy4KICAgc3RhdGljIHZvaWQgQ29tcGFyZVRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRl
c3RQYXJ0UmVzdWx0JiBleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBhY3R1YWwpIHsKICAgICBFWFBFQ1RfRVEoZXhwZWN0
ZWQudHlwZSgpLCBhY3R1YWwudHlwZSgpKTsKQEAgLTE1NjYsNyArMTQ2Niw3IEBAIFRFU1QoVGVz
dFJlc3VsdFByb3BlcnR5VGVzdCwgTm9Qcm9wZXJ0aWVzRm91bmRXaGVuTm9uZUFyZUFkZGVkKSB7
CiBURVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIE9uZVByb3BlcnR5Rm91bmRXaGVuQWRkZWQp
IHsKICAgVGVzdFJlc3VsdCB0ZXN0X3Jlc3VsdDsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5KCJr
ZXlfMSIsICIxIik7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3Rf
cmVzdWx0LCBwcm9wZXJ0eSk7CisgIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHko
JnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eSk7CiAgIEFTU0VSVF9FUSgxLCB0ZXN0
X3Jlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwogICBjb25zdCBUZXN0UHJvcGVydHkmIGFj
dHVhbF9wcm9wZXJ0eSA9IHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgwKTsKICAgRVhQRUNU
X1NUUkVRKCJrZXlfMSIsIGFjdHVhbF9wcm9wZXJ0eS5rZXkoKSk7CkBAIC0xNTc4LDggKzE0Nzgs
OCBAQCBURVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIE11bHRpcGxlUHJvcGVydGllc0ZvdW5k
V2hlbkFkZGVkKSB7CiAgIFRlc3RSZXN1bHQgdGVzdF9yZXN1bHQ7CiAgIFRlc3RQcm9wZXJ0eSBw
cm9wZXJ0eV8xKCJrZXlfMSIsICIxIik7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8yKCJrZXlf
MiIsICIyIik7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVz
dWx0LCBwcm9wZXJ0eV8xKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgm
dGVzdF9yZXN1bHQsIHByb3BlcnR5XzIpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFBy
b3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMSk7CisgIFRlc3RSZXN1
bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9w
ZXJ0eV8yKTsKICAgQVNTRVJUX0VRKDIsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQo
KSk7CiAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgYWN0dWFsX3Byb3BlcnR5XzEgPSB0ZXN0X3Jlc3Vs
dC5HZXRUZXN0UHJvcGVydHkoMCk7CiAgIEVYUEVDVF9TVFJFUSgia2V5XzEiLCBhY3R1YWxfcHJv
cGVydHlfMS5rZXkoKSk7CkBAIC0xNTk3LDEwICsxNDk3LDEwIEBAIFRFU1QoVGVzdFJlc3VsdFBy
b3BlcnR5VGVzdCwgT3ZlcnJpZGVzVmFsdWVzRm9yRHVwbGljYXRlS2V5cykgewogICBUZXN0UHJv
cGVydHkgcHJvcGVydHlfMl8xKCJrZXlfMiIsICIyIik7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0
eV8xXzIoImtleV8xIiwgIjEyIik7CiAgIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8yXzIoImtleV8y
IiwgIjIyIik7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVz
dWx0LCBwcm9wZXJ0eV8xXzEpOwotICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5
KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMl8xKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNv
cmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzFfMik7Ci0gIFRlc3RSZXN1bHRBY2Nl
c3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9wZXJ0eV8yXzIpOworICBUZXN0
UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwg
cHJvcGVydHlfMV8xKTsKKyAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVz
dF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzJfMSk7CisgIFRlc3RSZXN1bHRBY2Nlc3Nv
cjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8xXzIp
OworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRl
c3RjYXNlIiwgcHJvcGVydHlfMl8yKTsKIAogICBBU1NFUlRfRVEoMiwgdGVzdF9yZXN1bHQudGVz
dF9wcm9wZXJ0eV9jb3VudCgpKTsKICAgY29uc3QgVGVzdFByb3BlcnR5JiBhY3R1YWxfcHJvcGVy
dHlfMSA9IHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgwKTsKQEAgLTE2MTMsMTQgKzE1MTMs
MTQgQEAgVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBPdmVycmlkZXNWYWx1ZXNGb3JEdXBs
aWNhdGVLZXlzKSB7CiB9CiAKIC8vIFRlc3RzIFRlc3RSZXN1bHQ6OkdldFRlc3RQcm9wZXJ0eSgp
LgotVEVTVChUZXN0UmVzdWx0UHJvcGVydHlEZWF0aFRlc3QsIEdldFRlc3RQcm9wZXJ0eSkgewor
VEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBHZXRUZXN0UHJvcGVydHkpIHsKICAgVGVzdFJl
c3VsdCB0ZXN0X3Jlc3VsdDsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzEoImtleV8xIiwgIjEi
KTsKICAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzIoImtleV8yIiwgIjIiKTsKICAgVGVzdFByb3Bl
cnR5IHByb3BlcnR5XzMoImtleV8zIiwgIjMiKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNv
cmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5XzEpOwotICBUZXN0UmVzdWx0QWNjZXNz
b3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgcHJvcGVydHlfMik7Ci0gIFRlc3RSZXN1
bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCBwcm9wZXJ0eV8zKTsKKyAg
VGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2Fz
ZSIsIHByb3BlcnR5XzEpOworICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0
ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMik7CisgIFRlc3RSZXN1bHRBY2Nlc3Nv
cjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8zKTsK
IAogICBjb25zdCBUZXN0UHJvcGVydHkmIGZldGNoZWRfcHJvcGVydHlfMSA9IHRlc3RfcmVzdWx0
LkdldFRlc3RQcm9wZXJ0eSgwKTsKICAgY29uc3QgVGVzdFByb3BlcnR5JiBmZXRjaGVkX3Byb3Bl
cnR5XzIgPSB0ZXN0X3Jlc3VsdC5HZXRUZXN0UHJvcGVydHkoMSk7CkBAIC0xNjM5LDQxICsxNTM5
LDE1IEBAIFRFU1QoVGVzdFJlc3VsdFByb3BlcnR5RGVhdGhUZXN0LCBHZXRUZXN0UHJvcGVydHkp
IHsKICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh0ZXN0X3Jlc3VsdC5HZXRUZXN0UHJvcGVy
dHkoLTEpLCAiIik7CiB9CiAKLS8vIFdoZW4gYSBwcm9wZXJ0eSB1c2luZyBhIHJlc2VydmVkIGtl
eSBpcyBzdXBwbGllZCB0byB0aGlzIGZ1bmN0aW9uLCBpdCB0ZXN0cwotLy8gdGhhdCBhIG5vbi1m
YXRhbCBmYWlsdXJlIGlzIGFkZGVkLCBhIGZhdGFsIGZhaWx1cmUgaXMgbm90IGFkZGVkLCBhbmQg
dGhhdCB0aGUKLS8vIHByb3BlcnR5IGlzIG5vdCByZWNvcmRlZC4KLXZvaWQgRXhwZWN0Tm9uRmF0
YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoY29uc3QgY2hhcioga2V5
KSB7Ci0gIFRlc3RSZXN1bHQgdGVzdF9yZXN1bHQ7Ci0gIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eShr
ZXksICIxIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAotICAgICAgVGVzdFJlc3VsdEFj
Y2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsIHByb3BlcnR5KSwKLSAgICAgICJS
ZXNlcnZlZCBrZXkiKTsKLSAgQVNTRVJUX0VRKDAsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlf
Y291bnQoKSkgPDwgIk5vdCByZWNvcmRlZCI7Ci19Ci0KLS8vIEF0dGVtcHRpbmcgdG8gcmVjb3Jk
aW5nIGEgcHJvcGVydHkgd2l0aCB0aGUgUmVzZXJ2ZWQgbGl0ZXJhbCAibmFtZSIKLS8vIHNob3Vs
ZCBhZGQgYSBub24tZmF0YWwgZmFpbHVyZSBhbmQgdGhlIHByb3BlcnR5IHNob3VsZCBub3QgYmUg
cmVjb3JkZWQuCi1URVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRlc3QsIEFkZEZhaWx1cmVXaGVuVXNp
bmdSZXNlcnZlZEtleUNhbGxlZE5hbWUpIHsKLSAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3Jk
aW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoIm5hbWUiKTsKLX0KLQotLy8gQXR0ZW1wdGluZyB0
byByZWNvcmRpbmcgYSBwcm9wZXJ0eSB3aXRoIHRoZSBSZXNlcnZlZCBsaXRlcmFsICJzdGF0dXMi
Ci0vLyBzaG91bGQgYWRkIGEgbm9uLWZhdGFsIGZhaWx1cmUgYW5kIHRoZSBwcm9wZXJ0eSBzaG91
bGQgbm90IGJlIHJlY29yZGVkLgotVEVTVChUZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBBZGRGYWls
dXJlV2hlblVzaW5nUmVzZXJ2ZWRLZXlDYWxsZWRTdGF0dXMpIHsKLSAgRXhwZWN0Tm9uRmF0YWxG
YWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoInN0YXR1cyIpOwotfQotCi0v
LyBBdHRlbXB0aW5nIHRvIHJlY29yZGluZyBhIHByb3BlcnR5IHdpdGggdGhlIFJlc2VydmVkIGxp
dGVyYWwgInRpbWUiCi0vLyBzaG91bGQgYWRkIGEgbm9uLWZhdGFsIGZhaWx1cmUgYW5kIHRoZSBw
cm9wZXJ0eSBzaG91bGQgbm90IGJlIHJlY29yZGVkLgotVEVTVChUZXN0UmVzdWx0UHJvcGVydHlU
ZXN0LCBBZGRGYWlsdXJlV2hlblVzaW5nUmVzZXJ2ZWRLZXlDYWxsZWRUaW1lKSB7Ci0gIEV4cGVj
dE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5KCJ0aW1lIik7
Ci19Ci0KLS8vIEF0dGVtcHRpbmcgdG8gcmVjb3JkaW5nIGEgcHJvcGVydHkgd2l0aCB0aGUgUmVz
ZXJ2ZWQgbGl0ZXJhbCAiY2xhc3NuYW1lIgotLy8gc2hvdWxkIGFkZCBhIG5vbi1mYXRhbCBmYWls
dXJlIGFuZCB0aGUgcHJvcGVydHkgc2hvdWxkIG5vdCBiZSByZWNvcmRlZC4KLVRFU1QoVGVzdFJl
c3VsdFByb3BlcnR5VGVzdCwgQWRkRmFpbHVyZVdoZW5Vc2luZ1Jlc2VydmVkS2V5Q2FsbGVkQ2xh
c3NuYW1lKSB7Ci0gIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJl
c2VydmVkS2V5KCJjbGFzc25hbWUiKTsKLX0KKy8vIFRlc3RzIHRoZSBUZXN0IGNsYXNzLgorLy8K
Ky8vIEl0J3MgZGlmZmljdWx0IHRvIHRlc3QgZXZlcnkgcHVibGljIG1ldGhvZCBvZiB0aGlzIGNs
YXNzICh3ZSBhcmUKKy8vIGFscmVhZHkgc3RyZXRjaGluZyB0aGUgbGltaXQgb2YgR29vZ2xlIFRl
c3QgYnkgdXNpbmcgaXQgdG8gdGVzdCBpdHNlbGYhKS4KKy8vIEZvcnR1bmF0ZWx5LCB3ZSBkb24n
dCBoYXZlIHRvIGRvIHRoYXQsIGFzIHdlIGFyZSBhbHJlYWR5IHRlc3RpbmcKKy8vIHRoZSBmdW5j
dGlvbmFsaXRpZXMgb2YgdGhlIFRlc3QgY2xhc3MgZXh0ZW5zaXZlbHkgYnkgdXNpbmcgR29vZ2xl
IFRlc3QKKy8vIGFsb25lLgorLy8KKy8vIFRoZXJlZm9yZSwgdGhpcyBzZWN0aW9uIG9ubHkgY29u
dGFpbnMgb25lIHRlc3QuCiAKIC8vIFRlc3RzIHRoYXQgR1Rlc3RGbGFnU2F2ZXIgd29ya3Mgb24g
V2luZG93cyBhbmQgTWFjLgogCkBAIC0xNjk4LDYgKzE1NzIsNyBAQCBjbGFzcyBHVGVzdEZsYWdT
YXZlclRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgR1RFU1RfRkxBRyhyZXBlYXQpID0gMTsKICAg
ICBHVEVTVF9GTEFHKHNodWZmbGUpID0gZmFsc2U7CiAgICAgR1RFU1RfRkxBRyhzdGFja190cmFj
ZV9kZXB0aCkgPSBrTWF4U3RhY2tUcmFjZURlcHRoOworICAgIEdURVNUX0ZMQUcoc3RyZWFtX3Jl
c3VsdF90bykgPSAiIjsKICAgICBHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gZmFsc2U7
CiAgIH0KIApAQCAtMTcyNCw2ICsxNTk5LDcgQEAgY2xhc3MgR1Rlc3RGbGFnU2F2ZXJUZXN0IDog
cHVibGljIFRlc3QgewogICAgIEVYUEVDVF9FUSgxLCBHVEVTVF9GTEFHKHJlcGVhdCkpOwogICAg
IEVYUEVDVF9GQUxTRShHVEVTVF9GTEFHKHNodWZmbGUpKTsKICAgICBFWFBFQ1RfRVEoa01heFN0
YWNrVHJhY2VEZXB0aCwgR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkpOworICAgIEVYUEVD
VF9TVFJFUSgiIiwgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKS5jX3N0cigpKTsKICAgICBF
WFBFQ1RfRkFMU0UoR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSk7CiAKICAgICBHVEVTVF9G
TEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzKSA9IHRydWU7CkBAIC0xNzM5LDggKzE2MTUsMTAg
QEAgY2xhc3MgR1Rlc3RGbGFnU2F2ZXJUZXN0IDogcHVibGljIFRlc3QgewogICAgIEdURVNUX0ZM
QUcocmVwZWF0KSA9IDEwMDsKICAgICBHVEVTVF9GTEFHKHNodWZmbGUpID0gdHJ1ZTsKICAgICBH
VEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSA9IDE7CisgICAgR1RFU1RfRkxBRyhzdHJlYW1f
cmVzdWx0X3RvKSA9ICJsb2NhbGhvc3Q6MTIzNCI7CiAgICAgR1RFU1RfRkxBRyh0aHJvd19vbl9m
YWlsdXJlKSA9IHRydWU7CiAgIH0KKwogIHByaXZhdGU6CiAgIC8vIEZvciBzYXZpbmcgR29vZ2xl
IFRlc3QgZmxhZ3MgZHVyaW5nIHRoaXMgdGVzdCBjYXNlLgogICBzdGF0aWMgR1Rlc3RGbGFnU2F2
ZXIqIHNhdmVyXzsKQEAgLTE3NzMsMTUgKzE2NTEsMTYgQEAgc3RhdGljIHZvaWQgU2V0RW52KGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHZhbHVlKSB7CiAgIC8vIEMrK0J1aWxkZXIncyBw
dXRlbnYgb25seSBzdG9yZXMgYSBwb2ludGVyIHRvIGl0cyBwYXJhbWV0ZXI7IHdlIGhhdmUgdG8K
ICAgLy8gZW5zdXJlIHRoYXQgdGhlIHN0cmluZyByZW1haW5zIHZhbGlkIGFzIGxvbmcgYXMgaXQg
bWlnaHQgYmUgbmVlZGVkLgogICAvLyBXZSB1c2UgYW4gc3RkOjptYXAgdG8gZG8gc28uCi0gIHN0
YXRpYyBzdGQ6Om1hcDxTdHJpbmcsIFN0cmluZyo+IGFkZGVkX2VudjsKKyAgc3RhdGljIHN0ZDo6
bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZyo+IGFkZGVkX2VudjsKIAogICAvLyBCZWNhdXNl
IHB1dGVudiBzdG9yZXMgYSBwb2ludGVyIHRvIHRoZSBzdHJpbmcgYnVmZmVyLCB3ZSBjYW4ndCBk
ZWxldGUgdGhlCiAgIC8vIHByZXZpb3VzIHN0cmluZyAoaWYgcHJlc2VudCkgdW50aWwgYWZ0ZXIg
aXQncyByZXBsYWNlZC4KLSAgU3RyaW5nICpwcmV2X2VudiA9IE5VTEw7CisgIHN0ZDo6c3RyaW5n
ICpwcmV2X2VudiA9IE5VTEw7CiAgIGlmIChhZGRlZF9lbnYuZmluZChuYW1lKSAhPSBhZGRlZF9l
bnYuZW5kKCkpIHsKICAgICBwcmV2X2VudiA9IGFkZGVkX2VudltuYW1lXTsKICAgfQotICBhZGRl
ZF9lbnZbbmFtZV0gPSBuZXcgU3RyaW5nKChNZXNzYWdlKCkgPDwgbmFtZSA8PCAiPSIgPDwgdmFs
dWUpLkdldFN0cmluZygpKTsKKyAgYWRkZWRfZW52W25hbWVdID0gbmV3IHN0ZDo6c3RyaW5nKAor
ICAgICAgKE1lc3NhZ2UoKSA8PCBuYW1lIDw8ICI9IiA8PCB2YWx1ZSkuR2V0U3RyaW5nKCkpOwog
CiAgIC8vIFRoZSBzdGFuZGFyZCBzaWduYXR1cmUgb2YgcHV0ZW52IGFjY2VwdHMgYSAnY2hhcion
IGFyZ3VtZW50LiBPdGhlcgogICAvLyBpbXBsZW1lbnRhdGlvbnMsIGxpa2UgQysrQnVpbGRlcidz
LCBhY2NlcHQgYSAnY29uc3QgY2hhcionLgpAQCAtMTgxMyw2ICsxNjkyLDggQEAgVEVTVChJbnQz
MkZyb21HVGVzdEVudlRlc3QsIFJldHVybnNEZWZhdWx0V2hlblZhcmlhYmxlSXNOb3RTZXQpIHsK
ICAgRVhQRUNUX0VRKDEwLCBJbnQzMkZyb21HVGVzdEVudigidGVtcCIsIDEwKSk7CiB9CiAKKyMg
aWYgIWRlZmluZWQoR1RFU1RfR0VUX0lOVDMyX0ZST01fRU5WXykKKwogLy8gVGVzdHMgdGhhdCBJ
bnQzMkZyb21HVGVzdEVudigpIHJldHVybnMgdGhlIGRlZmF1bHQgdmFsdWUgd2hlbiB0aGUKIC8v
IGVudmlyb25tZW50IHZhcmlhYmxlIG92ZXJmbG93cyBhcyBhbiBJbnQzMi4KIFRFU1QoSW50MzJG
cm9tR1Rlc3RFbnZUZXN0LCBSZXR1cm5zRGVmYXVsdFdoZW5WYWx1ZU92ZXJmbG93cykgewpAQCAt
MTgzNyw2ICsxNzE4LDggQEAgVEVTVChJbnQzMkZyb21HVGVzdEVudlRlc3QsIFJldHVybnNEZWZh
dWx0V2hlblZhbHVlSXNJbnZhbGlkKSB7CiAgIEVYUEVDVF9FUSg1MCwgSW50MzJGcm9tR1Rlc3RF
bnYoInRlbXAiLCA1MCkpOwogfQogCisjIGVuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9HRVRfSU5U
MzJfRlJPTV9FTlZfKQorCiAvLyBUZXN0cyB0aGF0IEludDMyRnJvbUdUZXN0RW52KCkgcGFyc2Vz
IGFuZCByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUKIC8vIGVudmlyb25tZW50IHZhcmlhYmxlIHdo
ZW4gaXQgcmVwcmVzZW50cyBhIHZhbGlkIGRlY2ltYWwgaW50ZWdlciBpbgogLy8gdGhlIHJhbmdl
IG9mIGFuIEludDMyLgpAQCAtMTkyNSw3ICsxODA4LDcgQEAgVEVTVChJbnQzMkZyb21FbnZPckRp
ZURlYXRoVGVzdCwgQWJvcnRzT25GYWlsdXJlKSB7CiB9CiAKIC8vIFRlc3RzIHRoYXQgSW50MzJG
cm9tRW52T3JEaWUoKSBhYm9ydHMgd2l0aCBhbiBlcnJvciBtZXNzYWdlCi0vLyBpZiB0aGUgdmFy
aWFibGUgY2Fubm90IGJlIHJlcHJlc250ZWQgYnkgYW4gSW50MzIuCisvLyBpZiB0aGUgdmFyaWFi
bGUgY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IGFuIEludDMyLgogVEVTVChJbnQzMkZyb21FbnZP
ckRpZURlYXRoVGVzdCwgQWJvcnRzT25JbnQzMk92ZXJmbG93KSB7CiAgIFNldEVudihHVEVTVF9G
TEFHX1BSRUZJWF9VUFBFUl8gIlZBUiIsICIxMjM0NTY3ODkxMjM0NTY3ODkxMjM0Iik7CiAgIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoCkBAIC0yMDcwLDYgKzE5NTMsMTczIEBAIFRFU1QoVW5p
dFRlc3RUZXN0LCBDYW5HZXRPcmlnaW5hbFdvcmtpbmdEaXIpIHsKICAgRVhQRUNUX1NUUk5FKFVu
aXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5nX2RpcigpLCAiIik7CiB9CiAK
K1RFU1QoVW5pdFRlc3RUZXN0LCBSZXR1cm5zUGxhdXNpYmxlVGltZXN0YW1wKSB7CisgIEVYUEVD
VF9MVCgwLCBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+c3RhcnRfdGltZXN0YW1wKCkpOworICBF
WFBFQ1RfTEUoVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnN0YXJ0X3RpbWVzdGFtcCgpLCBHZXRU
aW1lSW5NaWxsaXMoKSk7Cit9CisKKy8vIFdoZW4gYSBwcm9wZXJ0eSB1c2luZyBhIHJlc2VydmVk
IGtleSBpcyBzdXBwbGllZCB0byB0aGlzIGZ1bmN0aW9uLCBpdAorLy8gdGVzdHMgdGhhdCBhIG5v
bi1mYXRhbCBmYWlsdXJlIGlzIGFkZGVkLCBhIGZhdGFsIGZhaWx1cmUgaXMgbm90IGFkZGVkLAor
Ly8gYW5kIHRoYXQgdGhlIHByb3BlcnR5IGlzIG5vdCByZWNvcmRlZC4KK3ZvaWQgRXhwZWN0Tm9u
RmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXkoCisgICAgY29uc3Qg
VGVzdFJlc3VsdCYgdGVzdF9yZXN1bHQsIGNvbnN0IGNoYXIqIGtleSkgeworICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShUZXN0OjpSZWNvcmRQcm9wZXJ0eShrZXksICIxIiksICJSZXNlcnZlZCBr
ZXkiKTsKKyAgQVNTRVJUX0VRKDAsIHRlc3RfcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKSkg
PDwgIlByb3BlcnR5IGZvciBrZXkgJyIgPDwga2V5CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICInIHJlY29yZGVkIHVuZXhwZWN0ZWRseS4iOwor
fQorCit2b2lkIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2Vy
dmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgY29uc3QgY2hhcioga2V5KSB7CisgIGNvbnN0IFRl
c3RJbmZvKiB0ZXN0X2luZm8gPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0
X2luZm8oKTsKKyAgQVNTRVJUX1RSVUUodGVzdF9pbmZvICE9IE5VTEwpOworICBFeHBlY3ROb25G
YXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgqdGVzdF9pbmZvLT5y
ZXN1bHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga2V5KTsKK30KKwordm9pZCBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQ
cm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICBjb25zdCBjaGFy
KiBrZXkpIHsKKyAgY29uc3QgVGVzdENhc2UqIHRlc3RfY2FzZSA9IFVuaXRUZXN0OjpHZXRJbnN0
YW5jZSgpLT5jdXJyZW50X3Rlc3RfY2FzZSgpOworICBBU1NFUlRfVFJVRSh0ZXN0X2Nhc2UgIT0g
TlVMTCk7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2Vy
dmVkS2V5KAorICAgICAgdGVzdF9jYXNlLT5hZF9ob2NfdGVzdF9yZXN1bHQoKSwga2V5KTsKK30K
Kwordm9pZCBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZl
ZEtleU91dHNpZGVPZlRlc3RDYXNlKAorICAgIGNvbnN0IGNoYXIqIGtleSkgeworICBFeHBlY3RO
b25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgKKyAgICAgIFVu
aXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5hZF9ob2NfdGVzdF9yZXN1bHQoKSwga2V5KTsKK30KKwor
Ly8gVGVzdHMgdGhhdCBwcm9wZXJ0eSByZWNvcmRpbmcgZnVuY3Rpb25zIGluIFVuaXRUZXN0IG91
dHNpZGUgb2YgdGVzdHMKKy8vIGZ1bmN0aW9ucyBjb3JyZWNseS4gIENyZWF0aW5nIGEgc2VwYXJh
dGUgaW5zdGFuY2Ugb2YgVW5pdFRlc3QgZW5zdXJlcyBpdAorLy8gaXMgaW4gYSBzdGF0ZSBzaW1p
bGFyIHRvIHRoZSBVbml0VGVzdCdzIHNpbmdsZXRvbidzIGJldHdlZW4gdGVzdHMuCitjbGFzcyBV
bml0VGVzdFJlY29yZFByb3BlcnR5VGVzdCA6CisgICAgcHVibGljIHRlc3Rpbmc6OmludGVybmFs
OjpVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdEhlbHBlciB7CisgcHVibGljOgorICBzdGF0aWMg
dm9pZCBTZXRVcFRlc3RDYXNlKCkgeworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGlu
Z1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAorICAgICAgICAiZGlz
YWJsZWQiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhS
ZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICAgICAgImVycm9ycyIpOworICAgIEV4
cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3Vy
cmVudFRlc3RDYXNlKAorICAgICAgICAiZmFpbHVyZXMiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZh
aWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgK
KyAgICAgICAgIm5hbWUiKTsKKyAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9w
ZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKKyAgICAgICAgInRlc3RzIik7
CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRL
ZXlGb3JDdXJyZW50VGVzdENhc2UoCisgICAgICAgICJ0aW1lIik7CisKKyAgICBUZXN0OjpSZWNv
cmRQcm9wZXJ0eSgidGVzdF9jYXNlX2tleV8xIiwgIjEiKTsKKyAgICBjb25zdCBUZXN0Q2FzZSog
dGVzdF9jYXNlID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9jYXNlKCk7
CisgICAgQVNTRVJUX1RSVUUodGVzdF9jYXNlICE9IE5VTEwpOworCisgICAgQVNTRVJUX0VRKDEs
IHRlc3RfY2FzZS0+YWRfaG9jX3Rlc3RfcmVzdWx0KCkudGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsK
KyAgICBFWFBFQ1RfU1RSRVEoInRlc3RfY2FzZV9rZXlfMSIsCisgICAgICAgICAgICAgICAgIHRl
c3RfY2FzZS0+YWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLmtleSgpKTsK
KyAgICBFWFBFQ1RfU1RSRVEoIjEiLAorICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2UtPmFkX2hv
Y190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKKyAgfQorfTsKKwor
Ly8gVGVzdHMgVGVzdFJlc3VsdCBoYXMgdGhlIGV4cGVjdGVkIHByb3BlcnR5IHdoZW4gYWRkZWQu
CitURVNUX0YoVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3QsIE9uZVByb3BlcnR5Rm91bmRXaGVu
QWRkZWQpIHsKKyAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzEiLCAiMSIpOworCisgIEFT
U0VSVF9FUSgxLCB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLnRlc3RfcHJvcGVydHlf
Y291bnQoKSk7CisKKyAgRVhQRUNUX1NUUkVRKCJrZXlfMSIsCisgICAgICAgICAgICAgICB1bml0
X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS5rZXkoKSk7Cisg
IEVYUEVDVF9TVFJFUSgiMSIsCisgICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0
X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKK30KKworLy8gVGVzdHMgVGVz
dFJlc3VsdCBoYXMgbXVsdGlwbGUgcHJvcGVydGllcyB3aGVuIGFkZGVkLgorVEVTVF9GKFVuaXRU
ZXN0UmVjb3JkUHJvcGVydHlUZXN0LCBNdWx0aXBsZVByb3BlcnRpZXNGb3VuZFdoZW5BZGRlZCkg
eworICBVbml0VGVzdFJlY29yZFByb3BlcnR5KCJrZXlfMSIsICIxIik7CisgIFVuaXRUZXN0UmVj
b3JkUHJvcGVydHkoImtleV8yIiwgIjIiKTsKKworICBBU1NFUlRfRVEoMiwgdW5pdF90ZXN0Xy5h
ZF9ob2NfdGVzdF9yZXN1bHQoKS50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOworCisgIEVYUEVDVF9T
VFJFUSgia2V5XzEiLAorICAgICAgICAgICAgICAgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1
bHQoKS5HZXRUZXN0UHJvcGVydHkoMCkua2V5KCkpOworICBFWFBFQ1RfU1RSRVEoIjEiLCB1bml0
X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsK
KworICBFWFBFQ1RfU1RSRVEoImtleV8yIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRf
aG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDEpLmtleSgpKTsKKyAgRVhQRUNUX1NU
UkVRKCIyIiwgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHko
MSkudmFsdWUoKSk7Cit9CisKKy8vIFRlc3RzIFRlc3RSZXN1bHQ6OlJlY29yZFByb3BlcnR5KCkg
b3ZlcnJpZGVzIHZhbHVlcyBmb3IgZHVwbGljYXRlIGtleXMuCitURVNUX0YoVW5pdFRlc3RSZWNv
cmRQcm9wZXJ0eVRlc3QsIE92ZXJyaWRlc1ZhbHVlc0ZvckR1cGxpY2F0ZUtleXMpIHsKKyAgVW5p
dFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzEiLCAiMSIpOworICBVbml0VGVzdFJlY29yZFByb3Bl
cnR5KCJrZXlfMiIsICIyIik7CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8xIiwgIjEy
Iik7CisgIFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8yIiwgIjIyIik7CisKKyAgQVNTRVJU
X0VRKDIsIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkudGVzdF9wcm9wZXJ0eV9jb3Vu
dCgpKTsKKworICBFWFBFQ1RfU1RSRVEoImtleV8xIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVz
dF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLmtleSgpKTsKKyAgRVhQ
RUNUX1NUUkVRKCIxMiIsCisgICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jl
c3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKKworICBFWFBFQ1RfU1RSRVEoImtl
eV8yIiwKKyAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0
VGVzdFByb3BlcnR5KDEpLmtleSgpKTsKKyAgRVhQRUNUX1NUUkVRKCIyMiIsCisgICAgICAgICAg
ICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgxKS52
YWx1ZSgpKTsKK30KKworVEVTVF9GKFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0LAorICAgICAg
IEFkZEZhaWx1cmVJbnNpZGVUZXN0c1doZW5Vc2luZ1Rlc3RDYXNlUmVzZXJ2ZWRLZXlzKSB7Cisg
IEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9y
Q3VycmVudFRlc3QoCisgICAgICAibmFtZSIpOworICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNv
cmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0KAorICAgICAgInZhbHVl
X3BhcmFtIik7CisgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJl
c2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCisgICAgICAidHlwZV9wYXJhbSIpOworICBFeHBlY3RO
b25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRU
ZXN0KAorICAgICAgInN0YXR1cyIpOworICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQ
cm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0KAorICAgICAgInRpbWUiKTsKKyAg
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JD
dXJyZW50VGVzdCgKKyAgICAgICJjbGFzc25hbWUiKTsKK30KKworVEVTVF9GKFVuaXRUZXN0UmVj
b3JkUHJvcGVydHlUZXN0LAorICAgICAgIEFkZFJlY29yZFdpdGhSZXNlcnZlZEtleXNHZW5lcmF0
ZXNDb3JyZWN0UHJvcGVydHlMaXN0KSB7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAorICAg
ICAgVGVzdDo6UmVjb3JkUHJvcGVydHkoIm5hbWUiLCAiMSIpLAorICAgICAgIidjbGFzc25hbWUn
LCAnbmFtZScsICdzdGF0dXMnLCAndGltZScsICd0eXBlX3BhcmFtJywgJ3ZhbHVlX3BhcmFtJywi
CisgICAgICAiICdmaWxlJywgYW5kICdsaW5lJyBhcmUgcmVzZXJ2ZWQiKTsKK30KKworY2xhc3Mg
VW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3RFbnZpcm9ubWVudCA6IHB1YmxpYyBFbnZpcm9ubWVu
dCB7CisgcHVibGljOgorICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgRXhwZWN0Tm9u
RmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0
Q2FzZSgKKyAgICAgICAgInRlc3RzIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3Jk
aW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgImZh
aWx1cmVzIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRo
UmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgImRpc2FibGVkIik7CisgICAg
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRz
aWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgImVycm9ycyIpOworICAgIEV4cGVjdE5vbkZhdGFsRmFp
bHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCisg
ICAgICAgICJuYW1lIik7CisgICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVy
dHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKKyAgICAgICAgInRpbWVzdGFtcCIp
OworICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVk
S2V5T3V0c2lkZU9mVGVzdENhc2UoCisgICAgICAgICJ0aW1lIik7CisgICAgRXhwZWN0Tm9uRmF0
YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2Fz
ZSgKKyAgICAgICAgInJhbmRvbV9zZWVkIik7CisgIH0KK307CisKKy8vIFRoaXMgd2lsbCB0ZXN0
IHByb3BlcnR5IHJlY29yZGluZyBvdXRzaWRlIG9mIGFueSB0ZXN0IG9yIHRlc3QgY2FzZS4KK3N0
YXRpYyBFbnZpcm9ubWVudCogcmVjb3JkX3Byb3BlcnR5X2VudiA9CisgICAgQWRkR2xvYmFsVGVz
dEVudmlyb25tZW50KG5ldyBVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdEVudmlyb25tZW50KTsK
KwogLy8gVGhpcyBncm91cCBvZiB0ZXN0cyBpcyBmb3IgcHJlZGljYXRlIGFzc2VydGlvbnMgKEFT
U0VSVF9QUkVEKiwgZXRjKQogLy8gb2YgdmFyaW91cyBhcml0aWVzLiAgVGhleSBkbyBub3QgYXR0
ZW1wdCB0byBiZSBleGhhdXN0aXZlLiAgUmF0aGVyLAogLy8gdmlldyB0aGVtIGFzIHNtb2tlIHRl
c3RzIHRoYXQgY2FuIGJlIGVhc2lseSByZXZpZXdlZCBhbmQgdmVyaWZpZWQuCkBAIC0yNDAxLDcg
KzI0NTEsNyBAQCBURVNUKFN0cmluZ0Fzc2VydGlvblRlc3QsIEFTU0VSVF9TVFJFUSkgewogICBB
U1NFUlRfU1RSRVEocDEsIHAyKTsKIAogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfU1RS
RVEoImJhZCIsICJnb29kIiksCi0gICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogXCJi
YWRcIiIpOworICAgICAgICAgICAgICAgICAgICAgICAiICBcImJhZFwiXG4gIFwiZ29vZFwiIik7
CiB9CiAKIC8vIFRlc3RzIEFTU0VSVF9TVFJFUSB3aXRoIE5VTEwgYXJndW1lbnRzLgpAQCAtMjQz
Nyw3ICsyNDg3LDcgQEAgVEVTVChTdHJpbmdBc3NlcnRpb25UZXN0LCBBU1NFUlRfU1RSQ0FTRUVR
KSB7CiAKICAgQVNTRVJUX1NUUkNBU0VFUSgiIiwgIiIpOwogICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RShBU1NFUlRfU1RSQ0FTRUVRKCJIaSIsICJoaTIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IihpZ25vcmluZyBjYXNlKSIpOworICAgICAgICAgICAgICAgICAgICAgICAiSWdub3JpbmcgY2Fz
ZSIpOwogfQogCiAvLyBUZXN0cyBBU1NFUlRfU1RSQ0FTRU5FLgpAQCAtMjQ3NSw2ICsyNTI1LDEx
IEBAIFRFU1QoU3RyaW5nQXNzZXJ0aW9uVGVzdCwgU1RSRVFfV2lkZSkgewogICAvLyBTdHJpbmdz
IGNvbnRhaW5pbmcgd2lkZSBjaGFyYWN0ZXJzLgogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShF
WFBFQ1RfU1RSRVEoTCJhYmNceDgxMTkiLCBMImFiY1x4ODEyMCIpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAiYWJjIik7CisKKyAgLy8gVGhlIHN0cmVhbWluZyB2YXJpYXRpb24uCisgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAorICAgIEVYUEVDVF9TVFJFUShMImFi
Y1x4ODExOSIsIEwiYWJjXHg4MTIxIikgPDwgIkV4cGVjdGVkIGZhaWx1cmUiOworICB9LCAiRXhw
ZWN0ZWQgZmFpbHVyZSIpOwogfQogCiAvLyBUZXN0cyAqX1NUUk5FIG9uIHdpZGUgc3RyaW5ncy4K
QEAgLTI1MDEsNiArMjU1Niw5IEBAIFRFU1QoU3RyaW5nQXNzZXJ0aW9uVGVzdCwgU1RSTkVfV2lk
ZSkgewogICAvLyBTdHJpbmdzIGNvbnRhaW5pbmcgd2lkZSBjaGFyYWN0ZXJzLgogICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSTkUoTCJhYmNceDgxMTkiLCBMImFiY1x4ODExOSIp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjIik7CisKKyAgLy8gVGhlIHN0cmVhbWlu
ZyB2YXJpYXRpb24uCisgIEFTU0VSVF9TVFJORShMImFiY1x4ODExOSIsIEwiYWJjXHg4MTIwIikg
PDwgIlRoaXMgc2hvdWxkbid0IGhhcHBlbiI7CiB9CiAKIC8vIFRlc3RzIGZvciA6OnRlc3Rpbmc6
OklzU3Vic3RyaW5nKCkuCkBAIC0yNjMxLDcgKzI2ODksNiBAQCBURVNUKElzTm90U3Vic3RyaW5n
VGVzdCwgUmV0dXJuc0NvcnJlY3RSZXN1bHRGb3JTdGRXc3RyaW5nKSB7CiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgUmF3VHlwZT4KIGNsYXNzIEZsb2F0aW5nUG9pbnRUZXN0IDogcHVibGljIFRlc3Qgewog
IHByb3RlY3RlZDoKLQogICAvLyBQcmUtY2FsY3VsYXRlZCBudW1iZXJzIHRvIGJlIHVzZWQgYnkg
dGhlIHRlc3RzLgogICBzdHJ1Y3QgVGVzdFZhbHVlcyB7CiAgICAgUmF3VHlwZSBjbG9zZV90b19w
b3NpdGl2ZV96ZXJvOwpAQCAtMzA3OSwxMyArMzEzNiwxMyBAQCBURVNUKERJU0FCTEVEX1Rlc3RD
YXNlLCBESVNBQkxFRF9UZXN0U2hvdWxkTm90UnVuKSB7CiAgIEZBSUwoKSA8PCAiVW5leHBlY3Rl
ZCBmYWlsdXJlOiBUZXN0IGluIGRpc2FibGVkIHRlc3QgY2FzZSBzaG91bGQgbm90IGJlIHJ1bi4i
OwogfQogCi0vLyBDaGVjayB0aGF0IHdoZW4gYWxsIHRlc3RzIGluIGEgdGVzdCBjYXNlIGFyZSBk
aXNhYmxlZCwgU2V0dXBUZXN0Q2FzZSgpIGFuZAorLy8gQ2hlY2sgdGhhdCB3aGVuIGFsbCB0ZXN0
cyBpbiBhIHRlc3QgY2FzZSBhcmUgZGlzYWJsZWQsIFNldFVwVGVzdENhc2UoKSBhbmQKIC8vIFRl
YXJEb3duVGVzdENhc2UoKSBhcmUgbm90IGNhbGxlZC4KIGNsYXNzIERpc2FibGVkVGVzdHNUZXN0
IDogcHVibGljIFRlc3QgewogIHByb3RlY3RlZDoKICAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2Fz
ZSgpIHsKICAgICBGQUlMKCkgPDwgIlVuZXhwZWN0ZWQgZmFpbHVyZTogQWxsIHRlc3RzIGRpc2Fi
bGVkIGluIHRlc3QgY2FzZS4gIgotICAgICAgICAgICAgICAiU2V0dXBUZXN0Q2FzZSgpIHNob3Vs
ZCBub3QgYmUgY2FsbGVkLiI7CisgICAgICAgICAgICAgICJTZXRVcFRlc3RDYXNlKCkgc2hvdWxk
IG5vdCBiZSBjYWxsZWQuIjsKICAgfQogCiAgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2Uo
KSB7CkBAIC0zMjI0LDcgKzMyODEsNyBAQCBURVNUX0YoU2luZ2xlRXZhbHVhdGlvblRlc3QsIEFT
U0VSVF9TVFIpIHsKIAogICAvLyBmYWlsZWQgRVhQRUNUX1NUUkNBU0VFUQogICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSQ0FTRUVRKHAxXysrLCBwMl8rKyksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICJpZ25vcmluZyBjYXNlIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICJJZ25vcmluZyBjYXNlIik7CiAgIEVYUEVDVF9FUShzMV8gKyAyLCBwMV8pOwogICBFWFBF
Q1RfRVEoczJfICsgMiwgcDJfKTsKIH0KQEAgLTMzMzIsNyArMzM4OSw3IEBAIGNsYXNzIE5vRmF0
YWxGYWlsdXJlVGVzdCA6IHB1YmxpYyBUZXN0IHsKIAogICB2b2lkIERvQXNzZXJ0Tm9GYXRhbEZh
aWx1cmVPbkZhaWxzKCkgewogICAgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEZhaWxzKCkpOwot
ICAgIEFERF9GQUlMVVJFKCkgPDwgInNob2xkIG5vdCByZWFjaCBoZXJlLiI7CisgICAgQUREX0ZB
SUxVUkUoKSA8PCAic2hvdWxkIG5vdCByZWFjaCBoZXJlLiI7CiAgIH0KIAogICB2b2lkIERvRXhw
ZWN0Tm9GYXRhbEZhaWx1cmVPbkZhaWxzKCkgewpAQCAtMzQxMiw1OSArMzQ2OSwxNTcgQEAgVEVT
VF9GKE5vRmF0YWxGYWlsdXJlVGVzdCwgTWVzc2FnZUlzU3RyZWFtYWJsZSkgewogCiAvLyBUZXN0
cyBub24tc3RyaW5nIGFzc2VydGlvbnMuCiAKK3N0ZDo6c3RyaW5nIEVkaXRzVG9TdHJpbmcoY29u
c3Qgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+JiBlZGl0cykgeworICBzdGQ6OnN0cmluZyBvdXQ7Cisg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWRpdHMuc2l6ZSgpOyArK2kpIHsKKyAgICBzdGF0aWMg
Y29uc3QgY2hhciBrRWRpdHNbXSA9ICIgKy0vIjsKKyAgICBvdXQuYXBwZW5kKDEsIGtFZGl0c1tl
ZGl0c1tpXV0pOworICB9CisgIHJldHVybiBvdXQ7Cit9CisKK3N0ZDo6dmVjdG9yPHNpemVfdD4g
Q2hhcnNUb0luZGljZXMoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgeworICBzdGQ6OnZlY3Rvcjxz
aXplX3Q+IG91dDsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHIuc2l6ZSgpOyArK2kpIHsK
KyAgICBvdXQucHVzaF9iYWNrKHN0cltpXSk7CisgIH0KKyAgcmV0dXJuIG91dDsKK30KKworc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+IENoYXJzVG9MaW5lcyhjb25zdCBzdGQ6OnN0cmluZyYgc3Ry
KSB7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBvdXQ7CisgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc3RyLnNpemUoKTsgKytpKSB7CisgICAgb3V0LnB1c2hfYmFjayhzdHIuc3Vic3RyKGks
IDEpKTsKKyAgfQorICByZXR1cm4gb3V0OworfQorCitURVNUKEVkaXREaXN0YW5jZSwgVGVzdENh
c2VzKSB7CisgIHN0cnVjdCBDYXNlIHsKKyAgICBpbnQgbGluZTsKKyAgICBjb25zdCBjaGFyKiBs
ZWZ0OworICAgIGNvbnN0IGNoYXIqIHJpZ2h0OworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkX2Vk
aXRzOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkX2RpZmY7CisgIH07CisgIHN0YXRpYyBjb25z
dCBDYXNlIGtDYXNlc1tdID0geworICAgICAgLy8gTm8gY2hhbmdlLgorICAgICAge19fTElORV9f
LCAiQSIsICJBIiwgIiAiLCAiIn0sCisgICAgICB7X19MSU5FX18sICJBQkNERSIsICJBQkNERSIs
ICIgICAgICIsICIifSwKKyAgICAgIC8vIFNpbXBsZSBhZGRzLgorICAgICAge19fTElORV9fLCAi
WCIsICJYQSIsICIgKyIsICJAQCArMSwyIEBAXG4gWFxuK0FcbiJ9LAorICAgICAge19fTElORV9f
LCAiWCIsICJYQUJDRCIsICIgKysrKyIsICJAQCArMSw1IEBAXG4gWFxuK0FcbitCXG4rQ1xuK0Rc
biJ9LAorICAgICAgLy8gU2ltcGxlIHJlbW92ZXMuCisgICAgICB7X19MSU5FX18sICJYQSIsICJY
IiwgIiAtIiwgIkBAIC0xLDIgQEBcbiBYXG4tQVxuIn0sCisgICAgICB7X19MSU5FX18sICJYQUJD
RCIsICJYIiwgIiAtLS0tIiwgIkBAIC0xLDUgQEBcbiBYXG4tQVxuLUJcbi1DXG4tRFxuIn0sCisg
ICAgICAvLyBTaW1wbGUgcmVwbGFjZXMuCisgICAgICB7X19MSU5FX18sICJBIiwgImEiLCAiLyIs
ICJAQCAtMSwxICsxLDEgQEBcbi1BXG4rYVxuIn0sCisgICAgICB7X19MSU5FX18sICJBQkNEIiwg
ImFiY2QiLCAiLy8vLyIsCisgICAgICAgIkBAIC0xLDQgKzEsNCBAQFxuLUFcbi1CXG4tQ1xuLURc
bithXG4rYlxuK2NcbitkXG4ifSwKKyAgICAgIC8vIFBhdGggZmluZGluZy4KKyAgICAgIHtfX0xJ
TkVfXywgIkFCQ0RFRkdIIiwgIkFCWEVHSDEiLCAiICAtLyAtICArIiwKKyAgICAgICAiQEAgLTEs
OCArMSw3IEBAXG4gQVxuIEJcbi1DXG4tRFxuK1hcbiBFXG4tRlxuIEdcbiBIXG4rMVxuIn0sCisg
ICAgICB7X19MSU5FX18sICJBQUFBQkNDQ0MiLCAiQUJBQkNEQ0RDIiwgIi0gLyAgICsgLyAiLAor
ICAgICAgICJAQCAtMSw5ICsxLDkgQEBcbi1BXG4gQVxuLUFcbitCXG4gQVxuIEJcbiBDXG4rRFxu
IENcbi1DXG4rRFxuIENcbiJ9LAorICAgICAge19fTElORV9fLCAiQUJDREUiLCAiQkNEQ0QiLCAi
LSAgICsvIiwKKyAgICAgICAiQEAgLTEsNSArMSw1IEBAXG4tQVxuIEJcbiBDXG4gRFxuLUVcbitD
XG4rRFxuIn0sCisgICAgICB7X19MSU5FX18sICJBQkNERUZHSElKS0wiLCAiQkNEQ0RFRkdKS0xK
SyIsICItICsrICAgICAtLSAgICsrIiwKKyAgICAgICAiQEAgLTEsNCArMSw1IEBAXG4tQVxuIEJc
bitDXG4rRFxuIENcbiBEXG4iCisgICAgICAgIkBAIC02LDcgKzcsNyBAQFxuIEZcbiBHXG4tSFxu
LUlcbiBKXG4gS1xuIExcbitKXG4rS1xuIn0sCisgICAgICB7fX07CisgIGZvciAoY29uc3QgQ2Fz
ZSogYyA9IGtDYXNlczsgYy0+bGVmdDsgKytjKSB7CisgICAgRVhQRUNUX1RSVUUoYy0+ZXhwZWN0
ZWRfZWRpdHMgPT0KKyAgICAgICAgICAgICAgICBFZGl0c1RvU3RyaW5nKENhbGN1bGF0ZU9wdGlt
YWxFZGl0cyhDaGFyc1RvSW5kaWNlcyhjLT5sZWZ0KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyc1RvSW5kaWNlcyhjLT5yaWdodCkpKSkK
KyAgICAgICAgPDwgIkxlZnQgPCIgPDwgYy0+bGVmdCA8PCAiPiBSaWdodCA8IiA8PCBjLT5yaWdo
dCA8PCAiPiBFZGl0cyA8IgorICAgICAgICA8PCBFZGl0c1RvU3RyaW5nKENhbGN1bGF0ZU9wdGlt
YWxFZGl0cygKKyAgICAgICAgICAgICAgIENoYXJzVG9JbmRpY2VzKGMtPmxlZnQpLCBDaGFyc1Rv
SW5kaWNlcyhjLT5yaWdodCkpKSA8PCAiPiI7CisgICAgRVhQRUNUX1RSVUUoYy0+ZXhwZWN0ZWRf
ZGlmZiA9PSBDcmVhdGVVbmlmaWVkRGlmZihDaGFyc1RvTGluZXMoYy0+bGVmdCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyc1RvTGlu
ZXMoYy0+cmlnaHQpKSkKKyAgICAgICAgPDwgIkxlZnQgPCIgPDwgYy0+bGVmdCA8PCAiPiBSaWdo
dCA8IiA8PCBjLT5yaWdodCA8PCAiPiBEaWZmIDwiCisgICAgICAgIDw8IENyZWF0ZVVuaWZpZWRE
aWZmKENoYXJzVG9MaW5lcyhjLT5sZWZ0KSwgQ2hhcnNUb0xpbmVzKGMtPnJpZ2h0KSkKKyAgICAg
ICAgPDwgIj4iOworICB9Cit9CisKIC8vIFRlc3RzIEVxRmFpbHVyZSgpLCB1c2VkIGZvciBpbXBs
ZW1lbnRpbmcgKkVRKiBhc3NlcnRpb25zLgogVEVTVChBc3NlcnRpb25UZXN0LCBFcUZhaWx1cmUp
IHsKLSAgY29uc3QgU3RyaW5nIGZvb192YWwoIjUiKSwgYmFyX3ZhbCgiNiIpOwotICBjb25zdCBT
dHJpbmcgbXNnMSgKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZm9vX3ZhbCgiNSIpLCBiYXJfdmFsKCI2
Iik7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIG1zZzEoCiAgICAgICBFcUZhaWx1cmUoImZvbyIsICJi
YXIiLCBmb29fdmFsLCBiYXJfdmFsLCBmYWxzZSkKICAgICAgIC5mYWlsdXJlX21lc3NhZ2UoKSk7
CiAgIEVYUEVDVF9TVFJFUSgKLSAgICAgICJWYWx1ZSBvZjogYmFyXG4iCi0gICAgICAiICBBY3R1
YWw6IDZcbiIKLSAgICAgICJFeHBlY3RlZDogZm9vXG4iCi0gICAgICAiV2hpY2ggaXM6IDUiLAor
ICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICIgIGZv
b1xuIgorICAgICAgIiAgICBXaGljaCBpczogNVxuIgorICAgICAgIiAgYmFyXG4iCisgICAgICAi
ICAgIFdoaWNoIGlzOiA2IiwKICAgICAgIG1zZzEuY19zdHIoKSk7CiAKLSAgY29uc3QgU3RyaW5n
IG1zZzIoCisgIGNvbnN0IHN0ZDo6c3RyaW5nIG1zZzIoCiAgICAgICBFcUZhaWx1cmUoImZvbyIs
ICI2IiwgZm9vX3ZhbCwgYmFyX3ZhbCwgZmFsc2UpCiAgICAgICAuZmFpbHVyZV9tZXNzYWdlKCkp
OwogICBFWFBFQ1RfU1RSRVEoCi0gICAgICAiVmFsdWUgb2Y6IDZcbiIKLSAgICAgICJFeHBlY3Rl
ZDogZm9vXG4iCi0gICAgICAiV2hpY2ggaXM6IDUiLAorICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5
IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICIgIGZvb1xuIgorICAgICAgIiAgICBXaGljaCBp
czogNVxuIgorICAgICAgIiAgNiIsCiAgICAgICBtc2cyLmNfc3RyKCkpOwogCi0gIGNvbnN0IFN0
cmluZyBtc2czKAorICBjb25zdCBzdGQ6OnN0cmluZyBtc2czKAogICAgICAgRXFGYWlsdXJlKCI1
IiwgImJhciIsIGZvb192YWwsIGJhcl92YWwsIGZhbHNlKQogICAgICAgLmZhaWx1cmVfbWVzc2Fn
ZSgpKTsKICAgRVhQRUNUX1NUUkVRKAotICAgICAgIlZhbHVlIG9mOiBiYXJcbiIKLSAgICAgICIg
IEFjdHVhbDogNlxuIgotICAgICAgIkV4cGVjdGVkOiA1IiwKKyAgICAgICJFeHBlY3RlZCBlcXVh
bGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4iCisgICAgICAiICA1XG4iCisgICAgICAiICBiYXJcbiIK
KyAgICAgICIgICAgV2hpY2ggaXM6IDYiLAogICAgICAgbXNnMy5jX3N0cigpKTsKIAotICBjb25z
dCBTdHJpbmcgbXNnNCgKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbXNnNCgKICAgICAgIEVxRmFpbHVy
ZSgiNSIsICI2IiwgZm9vX3ZhbCwgYmFyX3ZhbCwgZmFsc2UpLmZhaWx1cmVfbWVzc2FnZSgpKTsK
ICAgRVhQRUNUX1NUUkVRKAotICAgICAgIlZhbHVlIG9mOiA2XG4iCi0gICAgICAiRXhwZWN0ZWQ6
IDUiLAorICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAg
ICIgIDVcbiIKKyAgICAgICIgIDYiLAogICAgICAgbXNnNC5jX3N0cigpKTsKIAotICBjb25zdCBT
dHJpbmcgbXNnNSgKKyAgY29uc3Qgc3RkOjpzdHJpbmcgbXNnNSgKICAgICAgIEVxRmFpbHVyZSgi
Zm9vIiwgImJhciIsCi0gICAgICAgICAgICAgICAgU3RyaW5nKCJcInhcIiIpLCBTdHJpbmcoIlwi
eVwiIiksCisgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoIlwieFwiIiksIHN0ZDo6c3RyaW5n
KCJcInlcIiIpLAogICAgICAgICAgICAgICAgIHRydWUpLmZhaWx1cmVfbWVzc2FnZSgpKTsKICAg
RVhQRUNUX1NUUkVRKAotICAgICAgIlZhbHVlIG9mOiBiYXJcbiIKLSAgICAgICIgIEFjdHVhbDog
XCJ5XCJcbiIKLSAgICAgICJFeHBlY3RlZDogZm9vIChpZ25vcmluZyBjYXNlKVxuIgotICAgICAg
IldoaWNoIGlzOiBcInhcIiIsCisgICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFs
dWVzOlxuIgorICAgICAgIiAgZm9vXG4iCisgICAgICAiICAgIFdoaWNoIGlzOiBcInhcIlxuIgor
ICAgICAgIiAgYmFyXG4iCisgICAgICAiICAgIFdoaWNoIGlzOiBcInlcIlxuIgorICAgICAgIkln
bm9yaW5nIGNhc2UiLAogICAgICAgbXNnNS5jX3N0cigpKTsKIH0KIAorVEVTVChBc3NlcnRpb25U
ZXN0LCBFcUZhaWx1cmVXaXRoRGlmZikgeworICBjb25zdCBzdGQ6OnN0cmluZyBsZWZ0KAorICAg
ICAgIjFcXG4yWFhYXFxuM1xcbjVcXG42XFxuN1xcbjhcXG45XFxuMTBcXG4xMVxcbjEyWFhYXFxu
MTNcXG4xNFxcbjE1Iik7CisgIGNvbnN0IHN0ZDo6c3RyaW5nIHJpZ2h0KAorICAgICAgIjFcXG4y
XFxuM1xcbjRcXG41XFxuNlxcbjdcXG44XFxuOVxcbjExXFxuMTJcXG4xM1xcbjE0Iik7CisgIGNv
bnN0IHN0ZDo6c3RyaW5nIG1zZzEoCisgICAgICBFcUZhaWx1cmUoImxlZnQiLCAicmlnaHQiLCBs
ZWZ0LCByaWdodCwgZmFsc2UpLmZhaWx1cmVfbWVzc2FnZSgpKTsKKyAgRVhQRUNUX1NUUkVRKAor
ICAgICAgIkV4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczpcbiIKKyAgICAgICIgIGxl
ZnRcbiIKKyAgICAgICIgICAgV2hpY2ggaXM6ICIKKyAgICAgICIxXFxuMlhYWFxcbjNcXG41XFxu
NlxcbjdcXG44XFxuOVxcbjEwXFxuMTFcXG4xMlhYWFxcbjEzXFxuMTRcXG4xNVxuIgorICAgICAg
IiAgcmlnaHRcbiIKKyAgICAgICIgICAgV2hpY2ggaXM6IDFcXG4yXFxuM1xcbjRcXG41XFxuNlxc
bjdcXG44XFxuOVxcbjExXFxuMTJcXG4xM1xcbjE0XG4iCisgICAgICAiV2l0aCBkaWZmOlxuQEAg
LTEsNSArMSw2IEBAXG4gMVxuLTJYWFhcbisyXG4gM1xuKzRcbiA1XG4gNlxuIgorICAgICAgIkBA
IC03LDggKzgsNiBAQFxuIDhcbiA5XG4tMTBcbiAxMVxuLTEyWFhYXG4rMTJcbiAxM1xuIDE0XG4t
MTVcbiIsCisgICAgICBtc2cxLmNfc3RyKCkpOworfQorCiAvLyBUZXN0cyBBcHBlbmRVc2VyTWVz
c2FnZSgpLCB1c2VkIGZvciBpbXBsZW1lbnRpbmcgdGhlICpFUSogbWFjcm9zLgogVEVTVChBc3Nl
cnRpb25UZXN0LCBBcHBlbmRVc2VyTWVzc2FnZSkgewotICBjb25zdCBTdHJpbmcgZm9vKCJmb28i
KTsKKyAgY29uc3Qgc3RkOjpzdHJpbmcgZm9vKCJmb28iKTsKIAogICBNZXNzYWdlIG1zZzsKICAg
RVhQRUNUX1NUUkVRKCJmb28iLApAQCAtMzQ3Nyw3ICszNjMyLDcgQEAgVEVTVChBc3NlcnRpb25U
ZXN0LCBBcHBlbmRVc2VyTWVzc2FnZSkgewogCiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBTaWxl
bmNlcyB3YXJuaW5nczogIkNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZSIsICJVbnJlYWNoYWJsZSBj
b2RlIgotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCisjIHByYWdtYSBvcHRpb24g
cHVzaCAtdy1jY2MgLXctcmNoCiAjZW5kaWYKIAogLy8gVGVzdHMgQVNTRVJUX1RSVUUuCkBAIC0z
NDkwLDggKzM2NDUsOCBAQCBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9UUlVFKSB7CiAvLyBU
ZXN0cyBBU1NFUlRfVFJVRShwcmVkaWNhdGUpIGZvciBwcmVkaWNhdGVzIHJldHVybmluZyBBc3Nl
cnRpb25SZXN1bHQuCiBURVNUKEFzc2VydGlvblRlc3QsIEFzc2VydFRydWVXaXRoQXNzZXJ0aW9u
UmVzdWx0KSB7CiAgIEFTU0VSVF9UUlVFKFJlc3VsdElzRXZlbigyKSk7Ci0jaWYgIWRlZmluZWQo
X19CT1JMQU5EQ19fKSB8fCBfX0JPUkxBTkRDX18gPj0gMHg2MDAKLSAgLy8gSUNFJ3MgaW4gQysr
QnVpbGRlciAyMDA3LgorI2lmbmRlZiBfX0JPUkxBTkRDX18KKyAgLy8gSUNFJ3MgaW4gQysrQnVp
bGRlci4KICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1RSVUUoUmVzdWx0SXNFdmVuKDMp
KSwKICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBSZXN1bHRJc0V2ZW4oMylcbiIK
ICAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBmYWxzZSAoMyBpcyBvZGQpXG4iCkBA
IC0zNTE2LDggKzM2NzEsOCBAQCBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9GQUxTRSkgewog
Ly8gVGVzdHMgQVNTRVJUX0ZBTFNFKHByZWRpY2F0ZSkgZm9yIHByZWRpY2F0ZXMgcmV0dXJuaW5n
IEFzc2VydGlvblJlc3VsdC4KIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0RmFsc2VXaXRoQXNz
ZXJ0aW9uUmVzdWx0KSB7CiAgIEFTU0VSVF9GQUxTRShSZXN1bHRJc0V2ZW4oMykpOwotI2lmICFk
ZWZpbmVkKF9fQk9STEFORENfXykgfHwgX19CT1JMQU5EQ19fID49IDB4NjAwCi0gIC8vIElDRSdz
IGluIEMrK0J1aWxkZXIgMjAwNy4KKyNpZm5kZWYgX19CT1JMQU5EQ19fCisgIC8vIElDRSdzIGlu
IEMrK0J1aWxkZXIuCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShSZXN1bHRJ
c0V2ZW4oMikpLAogICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IFJlc3VsdElzRXZl
bigyKVxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IHRydWUgKDIgaXMgZXZl
bilcbiIKQEAgLTM1MzEsOCArMzY4Niw4IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0RmFs
c2VXaXRoQXNzZXJ0aW9uUmVzdWx0KSB7CiB9CiAKICNpZmRlZiBfX0JPUkxBTkRDX18KLS8vIFJl
c3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXBy
ZXNzZWQgdGhlbQotI3ByYWdtYSBvcHRpb24gcG9wCisvLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRl
ciBwcmV2aW91cyAiI3ByYWdtYSBvcHRpb24gcHVzaCIgc3VwcHJlc3NlZCB0aGVtCisjIHByYWdt
YSBvcHRpb24gcG9wCiAjZW5kaWYKIAogLy8gVGVzdHMgdXNpbmcgQVNTRVJUX0VRIG9uIGRvdWJs
ZSB2YWx1ZXMuICBUaGUgcHVycG9zZSBpcyB0byBtYWtlCkBAIC0zNTUxLDkgKzM3MDYsMTAgQEAg
VEVTVChFeHBlY3RUZXN0LCBBU1NFUlRfRVFfRG91YmxlKSB7CiBURVNUKEFzc2VydGlvblRlc3Qs
IEFTU0VSVF9FUSkgewogICBBU1NFUlRfRVEoNSwgMiArIDMpOwogICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShBU1NFUlRfRVEoNSwgMiozKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9m
OiAyKjNcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiA2XG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgICJFeHBlY3RlZDogNSIpOworICAgICAgICAgICAgICAgICAgICAgICAi
RXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAiICA1XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgIDIqM1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICAiICAgIFdoaWNoIGlzOiA2Iik7CiB9CiAKIC8vIFRlc3RzIEFTU0VSVF9F
UShOVUxMLCBwb2ludGVyKS4KQEAgLTM1NjEsNyArMzcxNyw3IEBAIFRFU1QoQXNzZXJ0aW9uVGVz
dCwgQVNTRVJUX0VRKSB7CiBURVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9FUV9OVUxMKSB7CiAg
IC8vIEEgc3VjY2Vzcy4KICAgY29uc3QgY2hhciogcCA9IE5VTEw7Ci0gIC8vIFNvbWUgb2xkZXIg
R0NDIHZlcnNpb25zIG1heSBpc3N1ZSBhIHNwdXJpb3VzIHdhcmluZyBpbiB0aGlzIG9yIHRoZSBu
ZXh0CisgIC8vIFNvbWUgb2xkZXIgR0NDIHZlcnNpb25zIG1heSBpc3N1ZSBhIHNwdXJpb3VzIHdh
cm5pbmcgaW4gdGhpcyBvciB0aGUgbmV4dAogICAvLyBhc3NlcnRpb24gc3RhdGVtZW50LiBUaGlz
IHdhcm5pbmcgc2hvdWxkIG5vdCBiZSBzdXBwcmVzc2VkIHdpdGgKICAgLy8gc3RhdGljX2Nhc3Qg
c2luY2UgdGhlIHRlc3QgdmVyaWZpZXMgdGhlIGFiaWxpdHkgdG8gdXNlIGJhcmUgTlVMTCBhcyB0
aGUKICAgLy8gZXhwZWN0ZWQgcGFyYW1ldGVyIHRvIHRoZSBtYWNyby4KQEAgLTM1NzAsNyArMzcy
Niw3IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0VRX05VTEwpIHsKICAgLy8gQSBmYWls
dXJlLgogICBzdGF0aWMgaW50IG4gPSAwOwogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRf
RVEoTlVMTCwgJm4pLAotICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6ICZuXG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIiAgJm5cbiAgICBXaGljaCBpczoiKTsKIH0KICNlbmRp
ZiAgLy8gR1RFU1RfQ0FOX0NPTVBBUkVfTlVMTAogCkBAIC0zNTg2LDcgKzM3NDIsNyBAQCBURVNU
KEV4cGVjdFRlc3QsIEFTU0VSVF9FUV8wKSB7CiAKICAgLy8gQSBmYWlsdXJlLgogICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoMCwgNS42KSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IkV4cGVjdGVkOiAwIik7CisgICAgICAgICAgICAgICAgICAgICAgICIgIDBcbiAgNS42Iik7CiB9
CiAKIC8vIFRlc3RzIEFTU0VSVF9ORS4KQEAgLTM2MzUsMTMgKzM3OTEsMTQgQEAgdm9pZCBUaHJv
d05vdGhpbmcoKSB7fQogVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfVEhST1cpIHsKICAgQVNT
RVJUX1RIUk9XKFRocm93QW5JbnRlZ2VyKCksIGludCk7CiAKLSNpZm5kZWYgX19CT1JMQU5EQ19f
CisjIGlmbmRlZiBfX0JPUkxBTkRDX18KKwogICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcg
YW5kIDIwMDkuCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKAogICAgICAgQVNTRVJUX1RIUk9XKFRo
cm93QW5JbnRlZ2VyKCksIGJvb2wpLAogICAgICAgIkV4cGVjdGVkOiBUaHJvd0FuSW50ZWdlcigp
IHRocm93cyBhbiBleGNlcHRpb24gb2YgdHlwZSBib29sLlxuIgogICAgICAgIiAgQWN0dWFsOiBp
dCB0aHJvd3MgYSBkaWZmZXJlbnQgdHlwZS4iKTsKLSNlbmRpZgorIyBlbmRpZgogCiAgIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKAogICAgICAgQVNTRVJUX1RIUk9XKFRocm93Tm90aGluZygpLCBib29s
KSwKQEAgLTM2NzIsNyArMzgyOSw4IEBAIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0FOWV9U
SFJPVykgewogLy8gY29tcGlsZS4KIFRFU1QoQXNzZXJ0aW9uVGVzdCwgQXNzZXJ0UHJlY2VkZW5j
ZSkgewogICBBU1NFUlRfRVEoMSA8IDIsIHRydWUpOwotICBBU1NFUlRfRVEodHJ1ZSAmJiBmYWxz
ZSwgZmFsc2UpOworICBib29sIGZhbHNlX3ZhbHVlID0gZmFsc2U7CisgIEFTU0VSVF9FUSh0cnVl
ICYmIGZhbHNlX3ZhbHVlLCBmYWxzZSk7CiB9CiAKIC8vIEEgc3Vicm91dGluZSB1c2VkIGJ5IHRo
ZSBmb2xsb3dpbmcgdGVzdC4KQEAgLTM2ODMsNyArMzg0MSw3IEBAIHZvaWQgVGVzdEVxMShpbnQg
eCkgewogLy8gVGVzdHMgY2FsbGluZyBhIHRlc3Qgc3Vicm91dGluZSB0aGF0J3Mgbm90IHBhcnQg
b2YgYSBmaXh0dXJlLgogVEVTVChBc3NlcnRpb25UZXN0LCBOb25GaXh0dXJlU3Vicm91dGluZSkg
ewogICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShUZXN0RXExKDIpLAotICAgICAgICAgICAgICAgICAg
ICAgICAiVmFsdWUgb2Y6IHgiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgeFxuICAgIFdo
aWNoIGlzOiAyIik7CiB9CiAKIC8vIEFuIHVuY29weWFibGUgY2xhc3MuCkBAIC0zNzMyLDcgKzM4
OTAsOCBAQCBURVNUKEFzc2VydGlvblRlc3QsIEFzc2VydFdvcmtzV2l0aFVuY29weWFibGVPYmpl
Y3QpIHsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoVGVzdEFzc2VydE5vblBvc2l0aXZlKCksCiAg
ICAgIklzUG9zaXRpdmVVbmNvcHlhYmxlKHkpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmVcbnkg
ZXZhbHVhdGVzIHRvIC0xIik7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKFRlc3RBc3NlcnRFcXVh
bHNVbmNvcHlhYmxlKCksCi0gICAgIlZhbHVlIG9mOiB5XG4gIEFjdHVhbDogLTFcbkV4cGVjdGVk
OiB4XG5XaGljaCBpczogNSIpOworICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZXF1
YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAiICB4XG4g
ICAgV2hpY2ggaXM6IDVcbiAgeVxuICAgIFdoaWNoIGlzOiAtMSIpOwogfQogCiAvLyBUZXN0cyB0
aGF0IHVuY29weWFibGUgb2JqZWN0cyBjYW4gYmUgdXNlZCBpbiBleHBlY3RzLgpAQCAtMzc0NCw1
NyArMzkwMyw5MCBAQCBURVNUKEFzc2VydGlvblRlc3QsIEV4cGVjdFdvcmtzV2l0aFVuY29weWFi
bGVPYmplY3QpIHsKICAgICAiSXNQb3NpdGl2ZVVuY29weWFibGUoeSkgZXZhbHVhdGVzIHRvIGZh
bHNlLCB3aGVyZVxueSBldmFsdWF0ZXMgdG8gLTEiKTsKICAgRVhQRUNUX0VRKHgsIHgpOwogICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoeCwgeSksCi0gICAgIlZhbHVlIG9mOiB5
XG4gIEFjdHVhbDogLTFcbkV4cGVjdGVkOiB4XG5XaGljaCBpczogNSIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOlxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAiICB4XG4gICAgV2hpY2ggaXM6IDVcbiAgeVxuICAgIFdo
aWNoIGlzOiAtMSIpOwogfQogCitlbnVtIE5hbWVkRW51bSB7CisgIGtFMSA9IDAsCisgIGtFMiA9
IDEKK307CisKK1RFU1QoQXNzZXJ0aW9uVGVzdCwgTmFtZWRFbnVtKSB7CisgIEVYUEVDVF9FUShr
RTEsIGtFMSk7CisgIEVYUEVDVF9MVChrRTEsIGtFMik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEVYUEVDVF9FUShrRTEsIGtFMiksICJXaGljaCBpczogMCIpOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfRVEoa0UxLCBrRTIpLCAiV2hpY2ggaXM6IDEiKTsKK30KIAogLy8g
VGhlIHZlcnNpb24gb2YgZ2NjIHVzZWQgaW4gWENvZGUgMi4yIGhhcyBhIGJ1ZyBhbmQgZG9lc24n
dCBhbGxvdwogLy8gYW5vbnltb3VzIGVudW1zIGluIGFzc2VydGlvbnMuICBUaGVyZWZvcmUgdGhl
IGZvbGxvd2luZyB0ZXN0IGlzIG5vdAogLy8gZG9uZSBvbiBNYWMuCi0vLyBTdW4gU3R1ZGlvIGFs
c28gcmVqZWN0cyB0aGlzIGNvZGUuCi0jaWYgIUdURVNUX09TX01BQyAmJiAhZGVmaW5lZChfX1NV
TlBST19DQykKKy8vIFN1biBTdHVkaW8gYW5kIEhQIGFDQyBhbHNvIHJlamVjdCB0aGlzIGNvZGUu
CisjaWYgIUdURVNUX09TX01BQyAmJiAhZGVmaW5lZChfX1NVTlBST19DQykgJiYgIWRlZmluZWQo
X19IUF9hQ0MpCiAKIC8vIFRlc3RzIHVzaW5nIGFzc2VydGlvbnMgd2l0aCBhbm9ueW1vdXMgZW51
bXMuCiBlbnVtIHsKLSAgQ0FTRV9BID0gLTEsCi0jaWYgR1RFU1RfT1NfTElOVVgKKyAga0Nhc2VB
ID0gLTEsCisKKyMgaWYgR1RFU1RfT1NfTElOVVgKKwogICAvLyBXZSB3YW50IHRvIHRlc3QgdGhl
IGNhc2Ugd2hlcmUgdGhlIHNpemUgb2YgdGhlIGFub255bW91cyBlbnVtIGlzCiAgIC8vIGxhcmdl
ciB0aGFuIHNpemVvZihpbnQpLCB0byBtYWtlIHN1cmUgb3VyIGltcGxlbWVudGF0aW9uIG9mIHRo
ZQogICAvLyBhc3NlcnRpb25zIGRvZXNuJ3QgdHJ1bmNhdGUgdGhlIGVudW1zLiAgSG93ZXZlciwg
TVNWQwogICAvLyAoaW5jb3JyZWN0bHkpIGRvZXNuJ3QgYWxsb3cgYW4gZW51bSB2YWx1ZSB0byBl
eGNlZWQgdGhlIHJhbmdlIG9mCiAgIC8vIGFuIGludCwgc28gdGhpcyBoYXMgdG8gYmUgY29uZGl0
aW9uYWxseSBjb21waWxlZC4KICAgLy8KLSAgLy8gT24gTGludXgsIENBU0VfQiBhbmQgQ0FTRV9B
IGhhdmUgdGhlIHNhbWUgdmFsdWUgd2hlbiB0cnVuY2F0ZWQgdG8KKyAgLy8gT24gTGludXgsIGtD
YXNlQiBhbmQga0Nhc2VBIGhhdmUgdGhlIHNhbWUgdmFsdWUgd2hlbiB0cnVuY2F0ZWQgdG8KICAg
Ly8gaW50IHNpemUuICBXZSB3YW50IHRvIHRlc3Qgd2hldGhlciB0aGlzIHdpbGwgY29uZnVzZSB0
aGUKICAgLy8gYXNzZXJ0aW9ucy4KLSAgQ0FTRV9CID0gdGVzdGluZzo6aW50ZXJuYWw6OmtNYXhC
aWdnZXN0SW50LAotI2Vsc2UKLSAgQ0FTRV9CID0gSU5UX01BWCwKLSNlbmRpZiAgLy8gR1RFU1Rf
T1NfTElOVVgKKyAga0Nhc2VCID0gdGVzdGluZzo6aW50ZXJuYWw6OmtNYXhCaWdnZXN0SW50LAor
CisjIGVsc2UKKworICBrQ2FzZUIgPSBJTlRfTUFYLAorCisjIGVuZGlmICAvLyBHVEVTVF9PU19M
SU5VWAorCisgIGtDYXNlQyA9IDQyCiB9OwogCiBURVNUKEFzc2VydGlvblRlc3QsIEFub255bW91
c0VudW0pIHsKLSNpZiBHVEVTVF9PU19MSU5VWAotICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50
PihDQVNFX0EpLCBzdGF0aWNfY2FzdDxpbnQ+KENBU0VfQikpOwotI2VuZGlmICAvLyBHVEVTVF9P
U19MSU5VWAotCi0gIEVYUEVDVF9FUShDQVNFX0EsIENBU0VfQSk7Ci0gIEVYUEVDVF9ORShDQVNF
X0EsIENBU0VfQik7Ci0gIEVYUEVDVF9MVChDQVNFX0EsIENBU0VfQik7Ci0gIEVYUEVDVF9MRShD
QVNFX0EsIENBU0VfQik7Ci0gIEVYUEVDVF9HVChDQVNFX0IsIENBU0VfQSk7Ci0gIEVYUEVDVF9H
RShDQVNFX0EsIENBU0VfQSk7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HRShD
QVNFX0EsIENBU0VfQiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoQ0FTRV9BKSA+PSAo
Q0FTRV9CKSIpOwotCi0gIEFTU0VSVF9FUShDQVNFX0EsIENBU0VfQSk7Ci0gIEFTU0VSVF9ORShD
QVNFX0EsIENBU0VfQik7Ci0gIEFTU0VSVF9MVChDQVNFX0EsIENBU0VfQik7Ci0gIEFTU0VSVF9M
RShDQVNFX0EsIENBU0VfQik7Ci0gIEFTU0VSVF9HVChDQVNFX0IsIENBU0VfQSk7Ci0gIEFTU0VS
VF9HRShDQVNFX0EsIENBU0VfQSk7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShD
QVNFX0EsIENBU0VfQiksCi0gICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogQ0FTRV9C
Iik7CisjIGlmIEdURVNUX09TX0xJTlVYCisKKyAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGludD4o
a0Nhc2VBKSwgc3RhdGljX2Nhc3Q8aW50PihrQ2FzZUIpKTsKKworIyBlbmRpZiAgLy8gR1RFU1Rf
T1NfTElOVVgKKworICBFWFBFQ1RfRVEoa0Nhc2VBLCBrQ2FzZUEpOworICBFWFBFQ1RfTkUoa0Nh
c2VBLCBrQ2FzZUIpOworICBFWFBFQ1RfTFQoa0Nhc2VBLCBrQ2FzZUIpOworICBFWFBFQ1RfTEUo
a0Nhc2VBLCBrQ2FzZUIpOworICBFWFBFQ1RfR1Qoa0Nhc2VCLCBrQ2FzZUEpOworICBFWFBFQ1Rf
R0Uoa0Nhc2VBLCBrQ2FzZUEpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR0Uo
a0Nhc2VBLCBrQ2FzZUIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiKGtDYXNlQSkgPj0g
KGtDYXNlQikiKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dFKGtDYXNlQSwg
a0Nhc2VDKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIi0xIHZzIDQyIik7CisKKyAgQVNT
RVJUX0VRKGtDYXNlQSwga0Nhc2VBKTsKKyAgQVNTRVJUX05FKGtDYXNlQSwga0Nhc2VCKTsKKyAg
QVNTRVJUX0xUKGtDYXNlQSwga0Nhc2VCKTsKKyAgQVNTRVJUX0xFKGtDYXNlQSwga0Nhc2VCKTsK
KyAgQVNTRVJUX0dUKGtDYXNlQiwga0Nhc2VBKTsKKyAgQVNTRVJUX0dFKGtDYXNlQSwga0Nhc2VB
KTsKKworIyBpZm5kZWYgX19CT1JMQU5EQ19fCisKKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4K
KyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKGtDYXNlQSwga0Nhc2VCKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIiAga0Nhc2VCXG4gICAgV2hpY2ggaXM6ICIpOworICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoa0Nhc2VBLCBrQ2FzZUMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAiXG4gICAgV2hpY2ggaXM6IDQyIik7CisjIGVuZGlmCisKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoQVNTRVJUX0VRKGtDYXNlQSwga0Nhc2VDKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIlxuICAgIFdoaWNoIGlzOiAtMSIpOwogfQogCiAjZW5kaWYgIC8vICFHVEVTVF9PU19NQUMg
JiYgIWRlZmluZWQoX19TVU5QUk9fQ0MpCkBAIC0zODQwLDI0ICs0MDMyLDI2IEBAIFRFU1QoSFJF
U1VMVEFzc2VydGlvblRlc3QsIEVYUEVDVF9IUkVTVUxUX0ZBSUxFRCkgewogCiAgIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChPa0hSRVNVTFRTdWNjZXNzKCkp
LAogICAgICJFeHBlY3RlZDogKE9rSFJFU1VMVFN1Y2Nlc3MoKSkgZmFpbHMuXG4iCi0gICAgIiAg
QWN0dWFsOiAweDAwMDAwMDAwIik7CisgICAgIiAgQWN0dWFsOiAweDAiKTsKICAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0hSRVNVTFRfRkFJTEVEKEZhbHNlSFJFU1VMVFN1Y2Nlc3Mo
KSksCiAgICAgIkV4cGVjdGVkOiAoRmFsc2VIUkVTVUxUU3VjY2VzcygpKSBmYWlscy5cbiIKLSAg
ICAiICBBY3R1YWw6IDB4MDAwMDAwMDEiKTsKKyAgICAiICBBY3R1YWw6IDB4MSIpOwogfQogCiBU
RVNUKEhSRVNVTFRBc3NlcnRpb25UZXN0LCBBU1NFUlRfSFJFU1VMVF9GQUlMRUQpIHsKICAgQVNT
RVJUX0hSRVNVTFRfRkFJTEVEKEVfVU5FWFBFQ1RFRCk7CiAKLSNpZm5kZWYgX19CT1JMQU5EQ19f
CisjIGlmbmRlZiBfX0JPUkxBTkRDX18KKwogICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcg
YW5kIDIwMDkuCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChP
a0hSRVNVTFRTdWNjZXNzKCkpLAogICAgICJFeHBlY3RlZDogKE9rSFJFU1VMVFN1Y2Nlc3MoKSkg
ZmFpbHMuXG4iCi0gICAgIiAgQWN0dWFsOiAweDAwMDAwMDAwIik7Ci0jZW5kaWYKKyAgICAiICBB
Y3R1YWw6IDB4MCIpOworIyBlbmRpZgorCiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9I
UkVTVUxUX0ZBSUxFRChGYWxzZUhSRVNVTFRTdWNjZXNzKCkpLAogICAgICJFeHBlY3RlZDogKEZh
bHNlSFJFU1VMVFN1Y2Nlc3MoKSkgZmFpbHMuXG4iCi0gICAgIiAgQWN0dWFsOiAweDAwMDAwMDAx
Iik7CisgICAgIiAgQWN0dWFsOiAweDEiKTsKIH0KIAogLy8gVGVzdHMgdGhhdCBzdHJlYW1pbmcg
dG8gdGhlIEhSRVNVTFQgbWFjcm9zIHdvcmtzLgpAQCAtMzg3MSwxMiArNDA2NSwxMyBAQCBURVNU
KEhSRVNVTFRBc3NlcnRpb25UZXN0LCBTdHJlYW1pbmcpIHsKICAgICAgIEVYUEVDVF9IUkVTVUxU
X1NVQ0NFRURFRChFX1VORVhQRUNURUQpIDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKICAgICAgICJl
eHBlY3RlZCBmYWlsdXJlIik7CiAKLSNpZm5kZWYgX19CT1JMQU5EQ19fCisjIGlmbmRlZiBfX0JP
UkxBTkRDX18KKwogICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcgYW5kIDIwMDkuCiAgIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKAogICAgICAgQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKEVfVU5F
WFBFQ1RFRCkgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAogICAgICAgImV4cGVjdGVkIGZhaWx1cmUi
KTsKLSNlbmRpZgorIyBlbmRpZgogCiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAogICAgICAg
RVhQRUNUX0hSRVNVTFRfRkFJTEVEKFNfT0spIDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKQEAgLTM4
OTEsNyArNDA4Niw3IEBAIFRFU1QoSFJFU1VMVEFzc2VydGlvblRlc3QsIFN0cmVhbWluZykgewog
CiAjaWZkZWYgX19CT1JMQU5EQ19fCiAvLyBTaWxlbmNlcyB3YXJuaW5nczogIkNvbmRpdGlvbiBp
cyBhbHdheXMgdHJ1ZSIsICJVbnJlYWNoYWJsZSBjb2RlIgotI3ByYWdtYSBvcHRpb24gcHVzaCAt
dy1jY2MgLXctcmNoCisjIHByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCiAjZW5kaWYK
IAogLy8gVGVzdHMgdGhhdCB0aGUgYXNzZXJ0aW9uIG1hY3JvcyBiZWhhdmUgbGlrZSBzaW5nbGUg
c3RhdGVtZW50cy4KQEAgLTQwMDgsNyArNDIwMyw3IEBAIFRFU1QoQXNzZXJ0aW9uU3ludGF4VGVz
dCwgV29ya3NXaXRoU3dpdGNoKSB7CiAjaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKIAogdm9pZCBU
aHJvd0FTdHJpbmcoKSB7Ci0gICAgdGhyb3cgIlN0cmluZyI7CisgICAgdGhyb3cgInN0ZDo6c3Ry
aW5nIjsKIH0KIAogLy8gVGVzdCB0aGF0IHRoZSBleGNlcHRpb24gYXNzZXJ0aW9uIG1hY3JvcyBj
b21waWxlIGFuZCB3b3JrIHdpdGggY29uc3QKQEAgLTQwNjAsOCArNDI1NSwxMDkgQEAgVEVTVChT
dWNjZXNzZnVsQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1NUUikgewogCiBuYW1lc3BhY2UgewogCisv
LyBUZXN0cyB0aGUgbWVzc2FnZSBzdHJlYW1pbmcgdmFyaWF0aW9uIG9mIGFzc2VydGlvbnMuCisK
K1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBFWFBFQ1QpIHsKKyAgRVhQRUNUX0VRKDEs
IDEpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEVYUEVDVF9ORSgxLCAxKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMS4iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZSAjMSIpOworICBFWFBFQ1RfTEUoMSwgMikg
PDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX0xUKDEsIDApIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJlICMyLiIpOworICBFWFBFQ1RfR0UoMSwgMCkgPDwg
IlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNU
X0dUKDEsIDIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzLiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJFeHBlY3RlZCBmYWlsdXJlICMzLiIpOworCisgIEVYUEVDVF9TVFJFUSgiMSIsICIx
IikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX1NUUk5FKCIxIiwgIjEiKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNC4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZSAjNC4iKTsKKyAgRVhQRUNUX1NU
UkNBU0VFUSgiYSIsICJBIikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1NUUkNBU0VORSgiYSIsICJBIikgPDwgIkV4cGVjdGVkIGZh
aWx1cmUgIzUuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1cmUg
IzUuIik7CisKKyAgRVhQRUNUX0ZMT0FUX0VRKDEsIDEpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVk
LiI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ET1VCTEVfRVEoMSwgMS4yKSA8
PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhw
ZWN0ZWQgZmFpbHVyZSAjNi4iKTsKKyAgRVhQRUNUX05FQVIoMSwgMS4xLCAwLjIpIDw8ICJUaGlz
IHNob3VsZCBzdWNjZWVkLiI7Cit9CisKK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBB
U1NFUlQpIHsKKyAgQVNTRVJUX0VRKDEsIDEpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7Cisg
IEFTU0VSVF9ORSgxLCAyKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NFUlRfTEUo
MSwgMikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNTRVJUX0xUKDEsIDIpIDw8ICJU
aGlzIHNob3VsZCBzdWNjZWVkLiI7CisgIEFTU0VSVF9HRSgxLCAwKSA8PCAiVGhpcyBzaG91bGQg
c3VjY2VlZC4iOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfR1QoMSwgMikgPDwgIkV4
cGVjdGVkIGZhaWx1cmUuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1
cmUuIik7Cit9CisKK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBBU1NFUlRfU1RSKSB7
CisgIEFTU0VSVF9TVFJFUSgiMSIsICIxIikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAg
QVNTRVJUX1NUUk5FKCIxIiwgIjIiKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBBU1NF
UlRfU1RSQ0FTRUVRKCJhIiwgIkEiKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfU1RSQ0FTRU5FKCJhIiwgIkEiKSA8PCAiRXhwZWN0ZWQg
ZmFpbHVyZS4iLAorICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZS4iKTsK
K30KKworVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVF9GTE9BVElORykgewor
ICBBU1NFUlRfRkxPQVRfRVEoMSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKKyAgQVNT
RVJUX0RPVUJMRV9FUSgxLCAxKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOworICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShBU1NFUlRfTkVBUigxLDEuMiwgMC4xKSA8PCAiRXhwZWN0IGZhaWx1cmUu
IiwgIC8vIE5PTElOVAorICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0IGZhaWx1cmUuIik7
CisgIC8vIFRvIHdvcmsgYXJvdW5kIGEgYnVnIGluIGdjYyAyLjk1LjAsIHRoZXJlIGlzIGludGVu
dGlvbmFsbHkgbm8KKyAgLy8gc3BhY2UgYWZ0ZXIgdGhlIGZpcnN0IGNvbW1hIGluIHRoZSBwcmV2
aW91cyBzdGF0ZW1lbnQuCit9CisKKy8vIFRlc3RzIHVzaW5nIEFTU0VSVF9GQUxTRSB3aXRoIGEg
c3RyZWFtZWQgbWVzc2FnZS4KK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBBU1NFUlRf
RkFMU0UpIHsKKyAgQVNTRVJUX0ZBTFNFKGZhbHNlKSA8PCAiVGhpcyBzaG91bGRuJ3QgZmFpbC4i
OworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBBU1NFUlRfRkFMU0Uo
dHJ1ZSkgPDwgIkV4cGVjdGVkIGZhaWx1cmU6ICIgPDwgMiA8PCAiID4gIiA8PCAxCisgICAgICAg
ICAgICAgICAgICAgICAgIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdHJ1ZTsKKyAgfSwgIkV4cGVj
dGVkIGZhaWx1cmUiKTsKK30KKworLy8gVGVzdHMgdXNpbmcgRkFJTCB3aXRoIGEgc3RyZWFtZWQg
bWVzc2FnZS4KK1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBGQUlMKSB7CisgIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKEZBSUwoKSA8PCAwLAorICAgICAgICAgICAgICAgICAgICAgICAiMCIp
OworfQorCisvLyBUZXN0cyB1c2luZyBTVUNDRUVEIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgor
VEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIFNVQ0NFRUQpIHsKKyAgU1VDQ0VFRCgpIDw8
ICJTdWNjZXNzID09ICIgPDwgMTsKK30KKworLy8gVGVzdHMgdXNpbmcgQVNTRVJUX1RSVUUgd2l0
aCBhIHN0cmVhbWVkIG1lc3NhZ2UuCitURVNUKEFzc2VydGlvbldpdGhNZXNzYWdlVGVzdCwgQVNT
RVJUX1RSVUUpIHsKKyAgQVNTRVJUX1RSVUUodHJ1ZSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQu
IjsKKyAgQVNTRVJUX1RSVUUodHJ1ZSkgPDwgdHJ1ZTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCisgICAgQVNTRVJUX1RSVUUoZmFsc2UpIDw8IHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIgKj4oTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8Y2hh
ciAqPihOVUxMKTsKKyAgfSwgIihudWxsKShudWxsKSIpOworfQorCisjaWYgR1RFU1RfT1NfV0lO
RE9XUworLy8gVGVzdHMgdXNpbmcgd2lkZSBzdHJpbmdzIGluIGFzc2VydGlvbiBtZXNzYWdlcy4K
K1RFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBXaWRlU3RyaW5nTWVzc2FnZSkgeworICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKKyAgICBFWFBFQ1RfVFJVRShmYWxz
ZSkgPDwgTCJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuXHg4MTE5IjsKKyAgfSwgIlRoaXMgZmFp
bHVyZSBpcyBleHBlY3RlZC4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
CisgICAgQVNTRVJUX0VRKDEsIDIpIDw8ICJUaGlzIGZhaWx1cmUgaXMgIgorICAgICAgICAgICAg
ICAgICAgICA8PCBMImV4cGVjdGVkIHRvby5ceDgxMjAiOworICB9LCAiVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkIHRvby4iKTsKK30KKyNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUworCiAvLyBU
ZXN0cyBFWFBFQ1RfVFJVRS4KIFRFU1QoRXhwZWN0VGVzdCwgRVhQRUNUX1RSVUUpIHsKKyAgRVhQ
RUNUX1RSVUUodHJ1ZSkgPDwgIkludGVudGlvbmFsIHN1Y2Nlc3MiOworICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfVFJVRShmYWxzZSkgPDwgIkludGVudGlvbmFsIGZhaWx1cmUgIzEu
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkludGVudGlvbmFsIGZhaWx1cmUgIzEuIik7
CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9UUlVFKGZhbHNlKSA8PCAiSW50ZW50
aW9uYWwgZmFpbHVyZSAjMi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9u
YWwgZmFpbHVyZSAjMi4iKTsKICAgRVhQRUNUX1RSVUUoMiA+IDEpOyAgLy8gTk9MSU5UCiAgIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9UUlVFKDIgPCAxKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlZhbHVlIG9mOiAyIDwgMVxuIgpAQCAtNDA4NSw5ICs0MzgxLDE0IEBAIFRF
U1QoRXhwZWN0VGVzdCwgRXhwZWN0VHJ1ZVdpdGhBc3NlcnRpb25SZXN1bHQpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiB0cnVlIik7CiB9CiAKLS8vIFRlc3RzIEVYUEVD
VF9GQUxTRS4KKy8vIFRlc3RzIEVYUEVDVF9GQUxTRSB3aXRoIGEgc3RyZWFtZWQgbWVzc2FnZS4K
IFRFU1QoRXhwZWN0VGVzdCwgRVhQRUNUX0ZBTFNFKSB7CiAgIEVYUEVDVF9GQUxTRSgyIDwgMSk7
ICAvLyBOT0xJTlQKKyAgRVhQRUNUX0ZBTFNFKGZhbHNlKSA8PCAiSW50ZW50aW9uYWwgc3VjY2Vz
cyI7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GQUxTRSh0cnVlKSA8PCAiSW50
ZW50aW9uYWwgZmFpbHVyZSAjMS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50
aW9uYWwgZmFpbHVyZSAjMS4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0ZB
TFNFKHRydWUpIDw8ICJJbnRlbnRpb25hbCBmYWlsdXJlICMyLiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICJJbnRlbnRpb25hbCBmYWlsdXJlICMyLiIpOwogICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShFWFBFQ1RfRkFMU0UoMiA+IDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAi
VmFsdWUgb2Y6IDIgPiAxXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDog
dHJ1ZVxuIgpAQCAtNDExMSwxNyArNDQxMiwxOCBAQCBURVNUKEV4cGVjdFRlc3QsIEV4cGVjdEZh
bHNlV2l0aEFzc2VydGlvblJlc3VsdCkgewogfQogCiAjaWZkZWYgX19CT1JMQU5EQ19fCi0vLyBS
ZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2aW91cyAiI3ByYWdtYSBvcHRpb24gcHVzaCIgc3Vw
cmVzc2VkIHRoZW0KLSNwcmFnbWEgb3B0aW9uIHBvcAorLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0
ZXIgcHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHByZXNzZWQgdGhlbQorIyBwcmFn
bWEgb3B0aW9uIHBvcAogI2VuZGlmCiAKIC8vIFRlc3RzIEVYUEVDVF9FUS4KIFRFU1QoRXhwZWN0
VGVzdCwgRVhQRUNUX0VRKSB7CiAgIEVYUEVDVF9FUSg1LCAyICsgMyk7CiAgIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9FUSg1LCAyKjMpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAiVmFsdWUgb2Y6IDIqM1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6
IDZcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiA1Iik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgIDVcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgMiozXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgV2hpY2ggaXM6
IDYiKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDUsIDIgLSAzKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIjIgLSAzIik7CiB9CkBAIC00MTQzLDcgKzQ0NDUsNyBA
QCBURVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9FUV9Eb3VibGUpIHsKIFRFU1QoRXhwZWN0VGVzdCwg
RVhQRUNUX0VRX05VTEwpIHsKICAgLy8gQSBzdWNjZXNzLgogICBjb25zdCBjaGFyKiBwID0gTlVM
TDsKLSAgLy8gU29tZSBvbGRlciBHQ0MgdmVyc2lvbnMgbWF5IGlzc3VlIGEgc3B1cmlvdXMgd2Fy
aW5nIGluIHRoaXMgb3IgdGhlIG5leHQKKyAgLy8gU29tZSBvbGRlciBHQ0MgdmVyc2lvbnMgbWF5
IGlzc3VlIGEgc3B1cmlvdXMgd2FybmluZyBpbiB0aGlzIG9yIHRoZSBuZXh0CiAgIC8vIGFzc2Vy
dGlvbiBzdGF0ZW1lbnQuIFRoaXMgd2FybmluZyBzaG91bGQgbm90IGJlIHN1cHByZXNzZWQgd2l0
aAogICAvLyBzdGF0aWNfY2FzdCBzaW5jZSB0aGUgdGVzdCB2ZXJpZmllcyB0aGUgYWJpbGl0eSB0
byB1c2UgYmFyZSBOVUxMIGFzIHRoZQogICAvLyBleHBlY3RlZCBwYXJhbWV0ZXIgdG8gdGhlIG1h
Y3JvLgpAQCAtNDE1Miw3ICs0NDU0LDcgQEAgVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVFfTlVM
TCkgewogICAvLyBBIGZhaWx1cmUuCiAgIGludCBuID0gMDsKICAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoRVhQRUNUX0VRKE5VTEwsICZuKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlZh
bHVlIG9mOiAmblxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgICZuXG4gICAgV2hp
Y2ggaXM6Iik7CiB9CiAjZW5kaWYgIC8vIEdURVNUX0NBTl9DT01QQVJFX05VTEwKIApAQCAtNDE2
OCw3ICs0NDcwLDcgQEAgVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVFfMCkgewogCiAgIC8vIEEg
ZmFpbHVyZS4KICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDAsIDUuNiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogMCIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICAwXG4gIDUuNiIpOwogfQogCiAvLyBUZXN0cyBFWFBFQ1RfTkUuCkBAIC00
MjY4LDcgKzQ1NzAsNyBAQCBURVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9BTllfVEhST1cpIHsKIFRF
U1QoRXhwZWN0VGVzdCwgRXhwZWN0UHJlY2VkZW5jZSkgewogICBFWFBFQ1RfRVEoMSA8IDIsIHRy
dWUpOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEodHJ1ZSwgdHJ1ZSAmJiBm
YWxzZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogdHJ1ZSAmJiBmYWxz
ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiICB0cnVlICYmIGZhbHNlXG4gICAgV2hp
Y2ggaXM6IGZhbHNlIik7CiB9CiAKIApAQCAtNDM2MSw3ICs0NjYzLDcgQEAgVEVTVChTdHJlYW1h
YmxlVGVzdCwgQmFzaWNJb01hbmlwKSB7CiAKIHZvaWQgQWRkRmFpbHVyZUhlbHBlcihib29sKiBh
Ym9ydGVkKSB7CiAgICphYm9ydGVkID0gdHJ1ZTsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiRmFpbHVy
ZSI7CisgIEFERF9GQUlMVVJFKCkgPDwgIkludGVudGlvbmFsIGZhaWx1cmUuIjsKICAgKmFib3J0
ZWQgPSBmYWxzZTsKIH0KIApAQCAtNDM2OSwxMCArNDY3MSwyNSBAQCB2b2lkIEFkZEZhaWx1cmVI
ZWxwZXIoYm9vbCogYWJvcnRlZCkgewogVEVTVChNYWNyb1Rlc3QsIEFERF9GQUlMVVJFKSB7CiAg
IGJvb2wgYWJvcnRlZCA9IHRydWU7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1
cmVIZWxwZXIoJmFib3J0ZWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbHVyZSIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9uYWwgZmFpbHVyZS4iKTsKICAg
RVhQRUNUX0ZBTFNFKGFib3J0ZWQpOwogfQogCisvLyBUZXN0cyBBRERfRkFJTFVSRV9BVC4KK1RF
U1QoTWFjcm9UZXN0LCBBRERfRkFJTFVSRV9BVCkgeworICAvLyBWZXJpZmllcyB0aGF0IEFERF9G
QUlMVVJFX0FUIGRvZXMgZ2VuZXJhdGUgYSBub25mYXRhbCBmYWlsdXJlIGFuZAorICAvLyB0aGUg
ZmFpbHVyZSBtZXNzYWdlIGNvbnRhaW5zIHRoZSB1c2VyLXN0cmVhbWVkIHBhcnQuCisgIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKEFERF9GQUlMVVJFX0FUKCJmb28uY2MiLCA0MikgPDwgIldyb25n
ISIsICJXcm9uZyEiKTsKKworICAvLyBWZXJpZmllcyB0aGF0IHRoZSB1c2VyLXN0cmVhbWVkIHBh
cnQgaXMgb3B0aW9uYWwuCisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFERF9GQUlMVVJFX0FU
KCJmb28uY2MiLCA0MiksICJGYWlsZWQiKTsKKworICAvLyBVbmZvcnR1bmF0ZWx5LCB3ZSBjYW5u
b3QgdmVyaWZ5IHRoYXQgdGhlIGZhaWx1cmUgbWVzc2FnZSBjb250YWlucworICAvLyB0aGUgcmln
aHQgZmlsZSBwYXRoIGFuZCBsaW5lIG51bWJlciB0aGUgc2FtZSB3YXksIGFzCisgIC8vIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKCkgZG9lc24ndCBnZXQgdG8gc2VlIHRoZSBmaWxlIHBhdGggYW5k
CisgIC8vIGxpbmUgbnVtYmVyLiAgSW5zdGVhZCwgd2UgZG8gdGhhdCBpbiBnb29nbGV0ZXN0LW91
dHB1dC10ZXN0Xy5jYy4KK30KKwogLy8gVGVzdHMgRkFJTC4KIFRFU1QoTWFjcm9UZXN0LCBGQUlM
KSB7CiAgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEZBSUwoKSwKQEAgLTQzODcsNyArNDcwNCw2IEBA
IFRFU1QoTWFjcm9UZXN0LCBTVUNDRUVEKSB7CiAgIFNVQ0NFRUQoKSA8PCAiRXhwbGljaXQgc3Vj
Y2Vzcy4iOwogfQogCi0KIC8vIFRlc3RzIGZvciBFWFBFQ1RfRVEoKSBhbmQgQVNTRVJUX0VRKCku
CiAvLwogLy8gVGhlc2UgdGVzdHMgZmFpbCAqaW50ZW50aW9uYWxseSosIHMudC4gdGhlIGZhaWx1
cmUgbWVzc2FnZXMgY2FuIGJlCkBAIC00Mzk4LDE1ICs0NzE0LDE3IEBAIFRFU1QoTWFjcm9UZXN0
LCBTVUNDRUVEKSB7CiAvLyBUZXN0cyB1c2luZyBib29sIHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VS
VH1fRVEuCiBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgQm9vbCkgewogICBFWFBFQ1RfRVEodHJ1ZSwg
IHRydWUpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoZmFsc2UsIHRydWUpLAot
ICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IHRydWUiKTsKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoeworICAgICAgYm9vbCBmYWxzZV92YWx1ZSA9IGZhbHNlOworICAgICAgQVNTRVJU
X0VRKGZhbHNlX3ZhbHVlLCB0cnVlKTsKKyAgICB9LCAiICBmYWxzZV92YWx1ZVxuICAgIFdoaWNo
IGlzOiBmYWxzZVxuICB0cnVlIik7CiB9CiAKIC8vIFRlc3RzIHVzaW5nIGludCB2YWx1ZXMgaW4g
e0VYUEVDVHxBU1NFUlR9X0VRLgogVEVTVChFcUFzc2VydGlvblRlc3QsIEludCkgewogICBBU1NF
UlRfRVEoMzIsIDMyKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDMyLCAz
MyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIzMyIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICAzMlxuICAzMyIpOwogfQogCiAvLyBUZXN0cyB1c2luZyB0aW1lX3QgdmFsdWVz
IGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4KQEAgLTQ0MjMsOSArNDc0MSw5IEBAIFRFU1QoRXFBc3Nl
cnRpb25UZXN0LCBDaGFyKSB7CiAgIEFTU0VSVF9FUSgneicsICd6Jyk7CiAgIGNvbnN0IGNoYXIg
Y2ggPSAnYic7CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSgnXDAnLCBjaCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICJjaCIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICBjaFxuICAgIFdoaWNoIGlzOiAnYiciKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoRVhQRUNUX0VRKCdhJywgY2gpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiY2giKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgY2hcbiAgICBXaGljaCBpczogJ2InIik7CiB9
CiAKIC8vIFRlc3RzIHVzaW5nIHdjaGFyX3QgdmFsdWVzIGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4K
QEAgLTQ0MzMsMTggKzQ3NTEsMTkgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIFdpZGVDaGFyKSB7
CiAgIEVYUEVDVF9FUShMJ2InLCBMJ2InKTsKIAogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShF
WFBFQ1RfRVEoTCdcMCcsIEwneCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUg
b2Y6IEwneCdcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBMJ3gnICgx
MjAsIDB4NzgpXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogTCdcMCdc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIldoaWNoIGlzOiBMJ1wwJyAoMCwgMHgwKSIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZXF1YWxpdHkgb2YgdGhlc2Ug
dmFsdWVzOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiICBMJ1wwJ1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiICAgIFdoaWNoIGlzOiBMJ1wwJyAoMCwgMHgwKVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAiICBMJ3gnXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICIgICAgV2hpY2ggaXM6IEwneCcgKDEyMCwgMHg3OCkiKTsKIAogICBzdGF0aWMgd2NoYXJf
dCB3Y2hhcjsKICAgd2NoYXIgPSBMJ2InOwogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBF
Q1RfRVEoTCdhJywgd2NoYXIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAid2NoYXIiKTsK
LSAgd2NoYXIgPSBMJ1x4ODExOSc7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShM
J1x4ODEyMCcsIHdjaGFyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiB3Y2hh
ciIpOworICB3Y2hhciA9IDB4ODExOTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VR
KHN0YXRpY19jYXN0PHdjaGFyX3Q+KDB4ODEyMCksIHdjaGFyKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIiAgd2NoYXJcbiAgICBXaGljaCBpczogTCciKTsKIH0KIAogLy8gVGVzdHMgdXNpbmcg
OjpzdGQ6OnN0cmluZyB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgpAQCAtNDQ2MSw3ICs0
NzgwLDcgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIFN0ZFN0cmluZykgewogICAvLyBDb21wYXJl
cyBhIGNvbnN0IGNoYXIqIHRvIGFuIHN0ZDo6c3RyaW5nIHRoYXQgaGFzIGRpZmZlcmVudAogICAv
LyBjb250ZW50CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSgiVGVzdCIsIDo6
c3RkOjpzdHJpbmcoInRlc3QiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICI6OnN0ZDo6
c3RyaW5nKFwidGVzdFwiKSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiXCJ0ZXN0XCIi
KTsKIAogICAvLyBDb21wYXJlcyBhbiBzdGQ6OnN0cmluZyB0byBhIGNoYXIqIHRoYXQgaGFzIGRp
ZmZlcmVudCBjb250ZW50LgogICBjaGFyKiBjb25zdCBwMSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KCJm
b28iKTsKQEAgLTQ0NzMsMjggKzQ3OTIsMjkgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIFN0ZFN0
cmluZykgewogICBzdGF0aWMgOjpzdGQ6OnN0cmluZyBzdHIzKHN0cjEpOwogICBzdHIzLmF0KDIp
ID0gJ1wwJzsKICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKHN0cjEsIHN0cjMpLAot
ICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IHN0cjNcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgIiAgQWN0dWFsOiBcIkEgXFwwIGluIHRoZSBtaWRkbGVcIiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAiICBzdHIzXG4gICAgV2hpY2ggaXM6IFwiQSBcXDAgaW4gdGhlIG1pZGRs
ZVwiIik7CiB9CiAKICNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKIAogLy8gVGVzdHMgdXNpbmcg
OjpzdGQ6OndzdHJpbmcgdmFsdWVzIGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4KIFRFU1QoRXFBc3Nl
cnRpb25UZXN0LCBTdGRXaWRlU3RyaW5nKSB7Ci0gIC8vIENvbXBhcmVzIGFuIHN0ZDo6d3N0cmlu
ZyB0byBhIGNvbnN0IHdjaGFyX3QqIHRoYXQgaGFzIGlkZW50aWNhbAotICAvLyBjb250ZW50Lgot
ICBFWFBFQ1RfRVEoOjpzdGQ6OndzdHJpbmcoTCJUZXN0XHg4MTE5IiksIEwiVGVzdFx4ODExOSIp
OwotCiAgIC8vIENvbXBhcmVzIHR3byBpZGVudGljYWwgc3RkOjp3c3RyaW5ncy4KICAgY29uc3Qg
OjpzdGQ6OndzdHJpbmcgd3N0cjEoTCJBICogaW4gdGhlIG1pZGRsZSIpOwogICBjb25zdCA6OnN0
ZDo6d3N0cmluZyB3c3RyMih3c3RyMSk7CiAgIEFTU0VSVF9FUSh3c3RyMSwgd3N0cjIpOwogCisg
IC8vIENvbXBhcmVzIGFuIHN0ZDo6d3N0cmluZyB0byBhIGNvbnN0IHdjaGFyX3QqIHRoYXQgaGFz
IGlkZW50aWNhbAorICAvLyBjb250ZW50LgorICBjb25zdCB3Y2hhcl90IGtUZXN0WDgxMTlbXSA9
IHsgJ1QnLCAnZScsICdzJywgJ3QnLCAweDgxMTksICdcMCcgfTsKKyAgRVhQRUNUX0VRKDo6c3Rk
Ojp3c3RyaW5nKGtUZXN0WDgxMTkpLCBrVGVzdFg4MTE5KTsKKwogICAvLyBDb21wYXJlcyBhbiBz
dGQ6OndzdHJpbmcgdG8gYSBjb25zdCB3Y2hhcl90KiB0aGF0IGhhcyBkaWZmZXJlbnQKICAgLy8g
Y29udGVudC4KKyAgY29uc3Qgd2NoYXJfdCBrVGVzdFg4MTIwW10gPSB7ICdUJywgJ2UnLCAncycs
ICd0JywgMHg4MTIwLCAnXDAnIH07CiAgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5P
TElOVAotICAgIEVYUEVDVF9FUSg6OnN0ZDo6d3N0cmluZyhMIlRlc3RceDgxMTkiKSwgTCJUZXN0
XHg4MTIwIik7Ci0gIH0sICJMXCJUZXN0XFx4ODEyMFwiIik7CisgICAgRVhQRUNUX0VRKDo6c3Rk
Ojp3c3RyaW5nKGtUZXN0WDgxMTkpLCBrVGVzdFg4MTIwKTsKKyAgfSwgImtUZXN0WDgxMjAiKTsK
IAogICAvLyBDb21wYXJlcyB0d28gc3RkOjp3c3RyaW5ncyB0aGF0IGhhdmUgZGlmZmVyZW50IGNv
bnRlbnRzLCBvbmUgb2YKICAgLy8gd2hpY2ggaGF2aW5nIGEgTlVMIGNoYXJhY3RlciBpbiB0aGUg
bWlkZGxlLgpAQCAtNDU0NiwxOCArNDg2NiwyMCBAQCBURVNUKEVxQXNzZXJ0aW9uVGVzdCwgR2xv
YmFsU3RyaW5nKSB7CiAKIC8vIFRlc3RzIHVzaW5nIDo6d3N0cmluZyB2YWx1ZXMgaW4ge0VYUEVD
VHxBU1NFUlR9X0VRLgogVEVTVChFcUFzc2VydGlvblRlc3QsIEdsb2JhbFdpZGVTdHJpbmcpIHsK
LSAgLy8gQ29tcGFyZXMgYSBjb25zdCB3Y2hhcl90KiB0byBhIDo6d3N0cmluZyB0aGF0IGhhcyBp
ZGVudGljYWwgY29udGVudC4KLSAgQVNTRVJUX0VRKEwiVGVzdFx4ODExOSIsIDo6d3N0cmluZyhM
IlRlc3RceDgxMTkiKSk7Ci0KICAgLy8gQ29tcGFyZXMgdHdvIGlkZW50aWNhbCA6OndzdHJpbmdz
LgogICBzdGF0aWMgY29uc3QgOjp3c3RyaW5nIHdzdHIxKEwiQSAqIGluIHRoZSBtaWRkbGUiKTsK
ICAgc3RhdGljIGNvbnN0IDo6d3N0cmluZyB3c3RyMih3c3RyMSk7CiAgIEVYUEVDVF9FUSh3c3Ry
MSwgd3N0cjIpOwogCisgIC8vIENvbXBhcmVzIGEgY29uc3Qgd2NoYXJfdCogdG8gYSA6OndzdHJp
bmcgdGhhdCBoYXMgaWRlbnRpY2FsIGNvbnRlbnQuCisgIGNvbnN0IHdjaGFyX3Qga1Rlc3RYODEx
OVtdID0geyAnVCcsICdlJywgJ3MnLCAndCcsIDB4ODExOSwgJ1wwJyB9OworICBBU1NFUlRfRVEo
a1Rlc3RYODExOSwgOjp3c3RyaW5nKGtUZXN0WDgxMTkpKTsKKwogICAvLyBDb21wYXJlcyBhIGNv
bnN0IHdjaGFyX3QqIHRvIGEgOjp3c3RyaW5nIHRoYXQgaGFzIGRpZmZlcmVudAogICAvLyBjb250
ZW50LgorICBjb25zdCB3Y2hhcl90IGtUZXN0WDgxMjBbXSA9IHsgJ1QnLCAnZScsICdzJywgJ3Qn
LCAweDgxMjAsICdcMCcgfTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
Ci0gICAgRVhQRUNUX0VRKEwiVGVzdFx4ODEyMCIsIDo6d3N0cmluZyhMIlRlc3RceDgxMTkiKSk7
CisgICAgRVhQRUNUX0VRKGtUZXN0WDgxMjAsIDo6d3N0cmluZyhrVGVzdFg4MTE5KSk7CiAgIH0s
ICJUZXN0XFx4ODExOSIpOwogCiAgIC8vIENvbXBhcmVzIGEgd2NoYXJfdCogdG8gYSA6OndzdHJp
bmcgdGhhdCBoYXMgZGlmZmVyZW50IGNvbnRlbnQuCkBAIC00NTkwLDkgKzQ5MTIsOSBAQCBURVNU
KEVxQXNzZXJ0aW9uVGVzdCwgQ2hhclBvaW50ZXIpIHsKICAgQVNTRVJUX0VRKHAxLCBwMSk7CiAK
ICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHAwLCBwMiksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogcDIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiAgcDJcbiAgICBXaGljaCBpczoiKTsKICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX0VRKHAxLCBwMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJwMiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAiICBwMlxuICAgIFdoaWNoIGlzOiIpOwogICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShBU1NFUlRfRVEocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oMHgxMjM0KSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KDB4
QUJDMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAiQUJDMCIpOwpAQCAtNDYxMiw5ICs0OTM0
LDkgQEAgVEVTVChFcUFzc2VydGlvblRlc3QsIFdpZGVDaGFyUG9pbnRlcikgewogICBFWFBFQ1Rf
RVEocDAsIHAwKTsKIAogICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEocDAsIHAy
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBwMiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICBwMlxuICAgIFdoaWNoIGlzOiIpOwogICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfRVEocDEsIHAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
InAyIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgIHAyXG4gICAgV2hpY2ggaXM6Iik7
CiAgIHZvaWQqIHB2MyA9ICh2b2lkKikweDEyMzQ7ICAvLyBOT0xJTlQKICAgdm9pZCogcHY0ID0g
KHZvaWQqKTB4QUJDMDsgIC8vIE5PTElOVAogICBjb25zdCB3Y2hhcl90KiBwMyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3Qgd2NoYXJfdCo+KHB2Myk7CkBAIC00NjMyLDYgKzQ5NTQsNjggQEAgVEVT
VChFcUFzc2VydGlvblRlc3QsIE90aGVyUG9pbnRlcikgewogICAgICAgICAgICAgICAgICAgICAg
ICAiMHgxMjM0Iik7CiB9CiAKKy8vIEEgY2xhc3MgdGhhdCBzdXBwb3J0cyBiaW5hcnkgY29tcGFy
aXNvbiBvcGVyYXRvcnMgYnV0IG5vdCBzdHJlYW1pbmcuCitjbGFzcyBVbnByaW50YWJsZUNoYXIg
eworIHB1YmxpYzoKKyAgZXhwbGljaXQgVW5wcmludGFibGVDaGFyKGNoYXIgY2gpIDogY2hhcl8o
Y2gpIHt9CisKKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBj
b25zdCB7CisgICAgcmV0dXJuIGNoYXJfID09IHJocy5jaGFyXzsKKyAgfQorICBib29sIG9wZXJh
dG9yIT0oY29uc3QgVW5wcmludGFibGVDaGFyJiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gY2hh
cl8gIT0gcmhzLmNoYXJfOworICB9CisgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFVucHJpbnRhYmxl
Q2hhciYgcmhzKSBjb25zdCB7CisgICAgcmV0dXJuIGNoYXJfIDwgcmhzLmNoYXJfOworICB9Cisg
IGJvb2wgb3BlcmF0b3I8PShjb25zdCBVbnByaW50YWJsZUNoYXImIHJocykgY29uc3QgeworICAg
IHJldHVybiBjaGFyXyA8PSByaHMuY2hhcl87CisgIH0KKyAgYm9vbCBvcGVyYXRvcj4oY29uc3Qg
VW5wcmludGFibGVDaGFyJiByaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gY2hhcl8gPiByaHMuY2hh
cl87CisgIH0KKyAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBj
b25zdCB7CisgICAgcmV0dXJuIGNoYXJfID49IHJocy5jaGFyXzsKKyAgfQorCisgcHJpdmF0ZToK
KyAgY2hhciBjaGFyXzsKK307CisKKy8vIFRlc3RzIHRoYXQgQVNTRVJUX0VRKCkgYW5kIGZyaWVu
ZHMgZG9uJ3QgcmVxdWlyZSB0aGUgYXJndW1lbnRzIHRvCisvLyBiZSBwcmludGFibGUuCitURVNU
KENvbXBhcmlzb25Bc3NlcnRpb25UZXN0LCBBY2NlcHRzVW5wcmludGFibGVBcmdzKSB7CisgIGNv
bnN0IFVucHJpbnRhYmxlQ2hhciB4KCd4JyksIHkoJ3knKTsKKyAgQVNTRVJUX0VRKHgsIHgpOwor
ICBFWFBFQ1RfTkUoeCwgeSk7CisgIEFTU0VSVF9MVCh4LCB5KTsKKyAgRVhQRUNUX0xFKHgsIHkp
OworICBBU1NFUlRfR1QoeSwgeCk7CisgIEVYUEVDVF9HRSh4LCB4KTsKKworICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoeCwgeSksICIxLWJ5dGUgb2JqZWN0IDw3OD4iKTsKKyAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHgsIHkpLCAiMS1ieXRlIG9iamVjdCA8
Nzk+Iik7CisgIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9MVCh5LCB5KSwgIjEtYnl0
ZSBvYmplY3QgPDc5PiIpOworICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR1QoeCwg
eSksICIxLWJ5dGUgb2JqZWN0IDw3OD4iKTsKKyAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX0dUKHgsIHkpLCAiMS1ieXRlIG9iamVjdCA8Nzk+Iik7CisKKyAgLy8gQ29kZSB0ZXN0ZWQg
YnkgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUgY2Fubm90IHJlZmVyZW5jZSBsb2NhbAorICAvLyB2YXJp
YWJsZXMsIHNvIHdlIGhhdmUgdG8gd3JpdGUgVW5wcmludGFibGVDaGFyKCd4JykgaW5zdGVhZCBv
ZiB4LgorI2lmbmRlZiBfX0JPUkxBTkRDX18KKyAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4KKyAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX05FKFVucHJpbnRhYmxlQ2hhcigneCcpLCBVbnBy
aW50YWJsZUNoYXIoJ3gnKSksCisgICAgICAgICAgICAgICAgICAgICAgICIxLWJ5dGUgb2JqZWN0
IDw3OD4iKTsKKyAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0xFKFVucHJpbnRhYmxlQ2hh
cigneScpLCBVbnByaW50YWJsZUNoYXIoJ3gnKSksCisgICAgICAgICAgICAgICAgICAgICAgICIx
LWJ5dGUgb2JqZWN0IDw3OD4iKTsKKyNlbmRpZgorICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NF
UlRfTEUoVW5wcmludGFibGVDaGFyKCd5JyksIFVucHJpbnRhYmxlQ2hhcigneCcpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3QgPDc5PiIpOworICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShBU1NFUlRfR0UoVW5wcmludGFibGVDaGFyKCd4JyksIFVucHJpbnRhYmxlQ2hhcign
eScpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3QgPDc4PiIpOworICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfR0UoVW5wcmludGFibGVDaGFyKCd4JyksIFVucHJp
bnRhYmxlQ2hhcigneScpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3Qg
PDc5PiIpOworfQorCiAvLyBUZXN0cyB0aGUgRlJJRU5EX1RFU1QgbWFjcm8uCiAKIC8vIFRoaXMg
Y2xhc3MgaGFzIGEgcHJpdmF0ZSBtZW1iZXIgd2Ugd2FudCB0byB0ZXN0LiAgV2Ugd2lsbCB0ZXN0
IGl0CkBAIC00NzQ5LDcgKzUxMzMsNyBAQCBURVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIENvbnN0
cnVjdGlvbldvcmtzKSB7CiAgIEVYUEVDVF9TVFJFUSgiZ2hpIiwgcjUubWVzc2FnZSgpKTsKIH0K
IAotLy8gVGVzdHMgdGhhdCB0aGUgbmVnYXRpb24gZmlwcyB0aGUgcHJlZGljYXRlIHJlc3VsdCBi
dXQga2VlcHMgdGhlIG1lc3NhZ2UuCisvLyBUZXN0cyB0aGF0IHRoZSBuZWdhdGlvbiBmbGlwcyB0
aGUgcHJlZGljYXRlIHJlc3VsdCBidXQga2VlcHMgdGhlIG1lc3NhZ2UuCiBURVNUKEFzc2VydGlv
blJlc3VsdFRlc3QsIE5lZ2F0aW9uV29ya3MpIHsKICAgQXNzZXJ0aW9uUmVzdWx0IHIxID0gQXNz
ZXJ0aW9uU3VjY2VzcygpIDw8ICJhYmMiOwogICBFWFBFQ1RfRkFMU0UoIXIxKTsKQEAgLTQ3NjYs
NiArNTE1MCwzNyBAQCBURVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIFN0cmVhbWluZ1dvcmtzKSB7
CiAgIEVYUEVDVF9TVFJFUSgiYWJjZDB0cnVlIiwgci5tZXNzYWdlKCkpOwogfQogCitURVNUKEFz
c2VydGlvblJlc3VsdFRlc3QsIENhblN0cmVhbU9zdHJlYW1NYW5pcHVsYXRvcnMpIHsKKyAgQXNz
ZXJ0aW9uUmVzdWx0IHIgPSBBc3NlcnRpb25TdWNjZXNzKCk7CisgIHIgPDwgIkRhdGEiIDw8IHN0
ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoIDw8IHN0ZDo6ZW5kcyA8PCAiV2lsbCBiZSB2aXNpYmxlIjsK
KyAgRVhQRUNUX1NUUkVRKCJEYXRhXG5cXDBXaWxsIGJlIHZpc2libGUiLCByLm1lc3NhZ2UoKSk7
Cit9CisKKy8vIFRoZSBuZXh0IHRlc3QgdXNlcyBleHBsaWNpdCBjb252ZXJzaW9uIG9wZXJhdG9y
cyAtLSBhIEMrKzExIGZlYXR1cmUuCisjaWYgR1RFU1RfTEFOR19DWFgxMQorCitURVNUKEFzc2Vy
dGlvblJlc3VsdFRlc3QsIENvbnN0cnVjdGlibGVGcm9tQ29udGV4dHVhbGx5Q29udmVydGlibGVU
b0Jvb2wpIHsKKyAgc3RydWN0IEV4cGxpY2l0bHlDb252ZXJ0aWJsZVRvQm9vbCB7CisgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlOyB9CisgICAgYm9vbCB2
YWx1ZTsKKyAgfTsKKyAgRXhwbGljaXRseUNvbnZlcnRpYmxlVG9Cb29sIHYxID0ge2ZhbHNlfTsK
KyAgRXhwbGljaXRseUNvbnZlcnRpYmxlVG9Cb29sIHYyID0ge3RydWV9OworICBFWFBFQ1RfRkFM
U0UodjEpOworICBFWFBFQ1RfVFJVRSh2Mik7Cit9CisKKyNlbmRpZiAgLy8gR1RFU1RfTEFOR19D
WFgxMQorCitzdHJ1Y3QgQ29udmVydGlibGVUb0Fzc2VydGlvblJlc3VsdCB7CisgIG9wZXJhdG9y
IEFzc2VydGlvblJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIEFzc2VydGlvblJlc3VsdCh0cnVlKTsg
fQorfTsKKworVEVTVChBc3NlcnRpb25SZXN1bHRUZXN0LCBDb25zdHJ1Y3RpYmxlRnJvbUltcGxp
Y2l0bHlDb252ZXJ0aWJsZSkgeworICBDb252ZXJ0aWJsZVRvQXNzZXJ0aW9uUmVzdWx0IG9iajsK
KyAgRVhQRUNUX1RSVUUob2JqKTsKK30KKwogLy8gVGVzdHMgc3RyZWFtaW5nIGEgdXNlciB0eXBl
IHdob3NlIGRlZmluaXRpb24gYW5kIG9wZXJhdG9yIDw8IGFyZQogLy8gYm90aCBpbiB0aGUgZ2xv
YmFsIG5hbWVzcGFjZS4KIGNsYXNzIEJhc2UgewpAQCAtNDk1MCw2ICs1MzY1LDU5IEBAIFRFU1Rf
RihUZXN0SW5mb1Rlc3QsIHJlc3VsdCkgewogICBBU1NFUlRfRVEoMCwgR2V0VGVzdFJlc3VsdCh0
ZXN0X2luZm8pLT50b3RhbF9wYXJ0X2NvdW50KCkpOwogfQogCisjZGVmaW5lIFZFUklGWV9DT0RF
X0xPQ0FUSU9OIFwKKyAgY29uc3QgaW50IGV4cGVjdGVkX2xpbmUgPSBfX0xJTkVfXyAtIDE7IFwK
KyAgY29uc3QgVGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9IEdldFVuaXRUZXN0SW1wbCgpLT5j
dXJyZW50X3Rlc3RfaW5mbygpOyBcCisgIEFTU0VSVF9UUlVFKHRlc3RfaW5mbyk7IFwKKyAgRVhQ
RUNUX1NUUkVRKF9fRklMRV9fLCB0ZXN0X2luZm8tPmZpbGUoKSk7IFwKKyAgRVhQRUNUX0VRKGV4
cGVjdGVkX2xpbmUsIHRlc3RfaW5mby0+bGluZSgpKQorCitURVNUKENvZGVMb2NhdGlvbkZvclRF
U1QsIFZlcmlmeSkgeworICBWRVJJRllfQ09ERV9MT0NBVElPTjsKK30KKworY2xhc3MgQ29kZUxv
Y2F0aW9uRm9yVEVTVEYgOiBwdWJsaWMgVGVzdCB7Cit9OworCitURVNUX0YoQ29kZUxvY2F0aW9u
Rm9yVEVTVEYsIFZlcmlmeSkgeworICBWRVJJRllfQ09ERV9MT0NBVElPTjsKK30KKworY2xhc3Mg
Q29kZUxvY2F0aW9uRm9yVEVTVFAgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsKK307CisK
K1RFU1RfUChDb2RlTG9jYXRpb25Gb3JURVNUUCwgVmVyaWZ5KSB7CisgIFZFUklGWV9DT0RFX0xP
Q0FUSU9OOworfQorCitJTlNUQU5USUFURV9URVNUX0NBU0VfUCgsIENvZGVMb2NhdGlvbkZvclRF
U1RQLCBWYWx1ZXMoMCkpOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIENvZGVMb2Nh
dGlvbkZvclRZUEVEVEVTVCA6IHB1YmxpYyBUZXN0IHsKK307CisKK1RZUEVEX1RFU1RfQ0FTRShD
b2RlTG9jYXRpb25Gb3JUWVBFRFRFU1QsIGludCk7CisKK1RZUEVEX1RFU1QoQ29kZUxvY2F0aW9u
Rm9yVFlQRURURVNULCBWZXJpZnkpIHsKKyAgVkVSSUZZX0NPREVfTE9DQVRJT047Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCA6IHB1
YmxpYyBUZXN0IHsKK307CisKK1RZUEVEX1RFU1RfQ0FTRV9QKENvZGVMb2NhdGlvbkZvclRZUEVE
VEVTVFApOworCitUWVBFRF9URVNUX1AoQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCwgVmVyaWZ5
KSB7CisgIFZFUklGWV9DT0RFX0xPQ0FUSU9OOworfQorCitSRUdJU1RFUl9UWVBFRF9URVNUX0NB
U0VfUChDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1RQLCBWZXJpZnkpOworCitJTlNUQU5USUFURV9U
WVBFRF9URVNUX0NBU0VfUChNeSwgQ29kZUxvY2F0aW9uRm9yVFlQRURURVNUUCwgaW50KTsKKwor
I3VuZGVmIFZFUklGWV9DT0RFX0xPQ0FUSU9OCisKIC8vIFRlc3RzIHNldHRpbmcgdXAgYW5kIHRl
YXJpbmcgZG93biBhIHRlc3QgY2FzZS4KIAogY2xhc3MgU2V0VXBUZXN0Q2FzZVRlc3QgOiBwdWJs
aWMgVGVzdCB7CkBAIC01MDEzLDcgKzU0ODEsOCBAQCBURVNUX0YoU2V0VXBUZXN0Q2FzZVRlc3Qs
IFRlc3QyKSB7CiAgIEVYUEVDVF9TVFJFUSgiMTIzIiwgc2hhcmVkX3Jlc291cmNlXyk7CiB9CiAK
LS8vIFRoZSBJbml0R29vZ2xlVGVzdFRlc3QgdGVzdCBjYXNlIHRlc3RzIHRlc3Rpbmc6OkluaXRH
b29nbGVUZXN0KCkuCisKKy8vIFRoZSBQYXJzZUZsYWdzVGVzdCB0ZXN0IGNhc2UgdGVzdHMgUGFy
c2VHb29nbGVUZXN0RmxhZ3NPbmx5LgogCiAvLyBUaGUgRmxhZ3Mgc3RydWN0IHN0b3JlcyBhIGNv
cHkgb2YgYWxsIEdvb2dsZSBUZXN0IGZsYWdzLgogc3RydWN0IEZsYWdzIHsKQEAgLTUwMzAsNiAr
NTQ5OSw3IEBAIHN0cnVjdCBGbGFncyB7CiAgICAgICAgICAgICByZXBlYXQoMSksCiAgICAgICAg
ICAgICBzaHVmZmxlKGZhbHNlKSwKICAgICAgICAgICAgIHN0YWNrX3RyYWNlX2RlcHRoKGtNYXhT
dGFja1RyYWNlRGVwdGgpLAorICAgICAgICAgICAgc3RyZWFtX3Jlc3VsdF90bygiIiksCiAgICAg
ICAgICAgICB0aHJvd19vbl9mYWlsdXJlKGZhbHNlKSB7fQogCiAgIC8vIEZhY3RvcnkgbWV0aG9k
cy4KQEAgLTUwOTgsOCArNTU2OCw4IEBAIHN0cnVjdCBGbGFncyB7CiAgICAgcmV0dXJuIGZsYWdz
OwogICB9CiAKLSAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3RfcmFu
ZG9tX3NlZWQgZmxhZyBoYXMKLSAgLy8gdGhlIGdpdmVuIHZhbHVlLgorICAvLyBDcmVhdGVzIGEg
RmxhZ3Mgc3RydWN0IHdoZXJlIHRoZSBndGVzdF9yYW5kb21fc2VlZCBmbGFnIGhhcyB0aGUgZ2l2
ZW4KKyAgLy8gdmFsdWUuCiAgIHN0YXRpYyBGbGFncyBSYW5kb21TZWVkKEludDMyIHJhbmRvbV9z
ZWVkKSB7CiAgICAgRmxhZ3MgZmxhZ3M7CiAgICAgZmxhZ3MucmFuZG9tX3NlZWQgPSByYW5kb21f
c2VlZDsKQEAgLTUxMTQsOCArNTU4NCw4IEBAIHN0cnVjdCBGbGFncyB7CiAgICAgcmV0dXJuIGZs
YWdzOwogICB9CiAKLSAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3Rf
c2h1ZmZsZSBmbGFnIGhhcwotICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCisgIC8vIENyZWF0ZXMgYSBG
bGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIGd0ZXN0X3NodWZmbGUgZmxhZyBoYXMgdGhlIGdpdmVuCisg
IC8vIHZhbHVlLgogICBzdGF0aWMgRmxhZ3MgU2h1ZmZsZShib29sIHNodWZmbGUpIHsKICAgICBG
bGFncyBmbGFnczsKICAgICBmbGFncy5zaHVmZmxlID0gc2h1ZmZsZTsKQEAgLTUxMzAsNiArNTYw
MCwxNCBAQCBzdHJ1Y3QgRmxhZ3MgewogICAgIHJldHVybiBmbGFnczsKICAgfQogCisgIC8vIENy
ZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90
bykgZmxhZyBoYXMKKyAgLy8gdGhlIGdpdmVuIHZhbHVlLgorICBzdGF0aWMgRmxhZ3MgU3RyZWFt
UmVzdWx0VG8oY29uc3QgY2hhciogc3RyZWFtX3Jlc3VsdF90bykgeworICAgIEZsYWdzIGZsYWdz
OworICAgIGZsYWdzLnN0cmVhbV9yZXN1bHRfdG8gPSBzdHJlYW1fcmVzdWx0X3RvOworICAgIHJl
dHVybiBmbGFnczsKKyAgfQorCiAgIC8vIENyZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hlcmUgdGhl
IGd0ZXN0X3Rocm93X29uX2ZhaWx1cmUgZmxhZyBoYXMKICAgLy8gdGhlIGdpdmVuIHZhbHVlLgog
ICBzdGF0aWMgRmxhZ3MgVGhyb3dPbkZhaWx1cmUoYm9vbCB0aHJvd19vbl9mYWlsdXJlKSB7CkBA
IC01MTUxLDExICs1NjI5LDEyIEBAIHN0cnVjdCBGbGFncyB7CiAgIEludDMyIHJlcGVhdDsKICAg
Ym9vbCBzaHVmZmxlOwogICBJbnQzMiBzdGFja190cmFjZV9kZXB0aDsKKyAgY29uc3QgY2hhciog
c3RyZWFtX3Jlc3VsdF90bzsKICAgYm9vbCB0aHJvd19vbl9mYWlsdXJlOwogfTsKIAotLy8gRml4
dHVyZSBmb3IgdGVzdGluZyBJbml0R29vZ2xlVGVzdCgpLgotY2xhc3MgSW5pdEdvb2dsZVRlc3RU
ZXN0IDogcHVibGljIFRlc3QgeworLy8gRml4dHVyZSBmb3IgdGVzdGluZyBQYXJzZUdvb2dsZVRl
c3RGbGFnc09ubHkoKS4KK2NsYXNzIFBhcnNlRmxhZ3NUZXN0IDogcHVibGljIFRlc3QgewogIHBy
b3RlY3RlZDoKICAgLy8gQ2xlYXJzIHRoZSBmbGFncyBiZWZvcmUgZWFjaCB0ZXN0LgogICB2aXJ0
dWFsIHZvaWQgU2V0VXAoKSB7CkBAIC01MTcxLDYgKzU2NTAsNyBAQCBjbGFzcyBJbml0R29vZ2xl
VGVzdFRlc3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgR1RFU1RfRkxBRyhyZXBlYXQpID0gMTsKICAg
ICBHVEVTVF9GTEFHKHNodWZmbGUpID0gZmFsc2U7CiAgICAgR1RFU1RfRkxBRyhzdGFja190cmFj
ZV9kZXB0aCkgPSBrTWF4U3RhY2tUcmFjZURlcHRoOworICAgIEdURVNUX0ZMQUcoc3RyZWFtX3Jl
c3VsdF90bykgPSAiIjsKICAgICBHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gZmFsc2U7
CiAgIH0KIApAQCAtNTE5OSw4ICs1Njc5LDEwIEBAIGNsYXNzIEluaXRHb29nbGVUZXN0VGVzdCA6
IHB1YmxpYyBUZXN0IHsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQucmFuZG9tX3NlZWQsIEdURVNU
X0ZMQUcocmFuZG9tX3NlZWQpKTsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQucmVwZWF0LCBHVEVT
VF9GTEFHKHJlcGVhdCkpOwogICAgIEVYUEVDVF9FUShleHBlY3RlZC5zaHVmZmxlLCBHVEVTVF9G
TEFHKHNodWZmbGUpKTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQudGhyb3dfb25fZmFpbHVyZSwg
R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSk7CiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkLnN0
YWNrX3RyYWNlX2RlcHRoLCBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSk7CisgICAgRVhQ
RUNUX1NUUkVRKGV4cGVjdGVkLnN0cmVhbV9yZXN1bHRfdG8sCisgICAgICAgICAgICAgICAgIEdU
RVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykuY19zdHIoKSk7CisgICAgRVhQRUNUX0VRKGV4cGVj
dGVkLnRocm93X29uX2ZhaWx1cmUsIEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkpOwogICB9
CiAKICAgLy8gUGFyc2VzIGEgY29tbWFuZCBsaW5lIChzcGVjaWZpZWQgYnkgYXJnYzEgYW5kIGFy
Z3YxKSwgdGhlbgpAQCAtNTIxMywxNiArNTY5NSwxNiBAQCBjbGFzcyBJbml0R29vZ2xlVGVzdFRl
c3QgOiBwdWJsaWMgVGVzdCB7CiAgICAgY29uc3QgYm9vbCBzYXZlZF9oZWxwX2ZsYWcgPSA6OnRl
c3Rpbmc6OmludGVybmFsOjpnX2hlbHBfZmxhZzsKICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpn
X2hlbHBfZmxhZyA9IGZhbHNlOwogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8K
KyMgaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgogICAgIENhcHR1cmVTdGRvdXQoKTsK
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8KKyMgZW5kaWYKIAogICAg
IC8vIFBhcnNlcyB0aGUgY29tbWFuZCBsaW5lLgogICAgIGludGVybmFsOjpQYXJzZUdvb2dsZVRl
c3RGbGFnc09ubHkoJmFyZ2MxLCBjb25zdF9jYXN0PENoYXJUeXBlKio+KGFyZ3YxKSk7CiAKLSNp
ZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OXwotICAgIGNvbnN0IFN0cmluZyBjYXB0dXJl
ZF9zdGRvdXQgPSBHZXRDYXB0dXJlZFN0ZG91dCgpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RS
RUFNX1JFRElSRUNUSU9OXworIyBpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCisgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgY2FwdHVyZWRfc3Rkb3V0ID0gR2V0Q2FwdHVyZWRTdGRvdXQoKTsK
KyMgZW5kaWYKIAogICAgIC8vIFZlcmlmaWVzIHRoZSBmbGFnIHZhbHVlcy4KICAgICBDaGVja0Zs
YWdzKGV4cGVjdGVkKTsKQEAgLTUyMzUsNyArNTcxNyw3IEBAIGNsYXNzIEluaXRHb29nbGVUZXN0
VGVzdCA6IHB1YmxpYyBUZXN0IHsKICAgICAvLyBoZWxwIG1lc3NhZ2UgZm9yIHRoZSBmbGFncyBp
dCByZWNvZ25pemVzLgogICAgIEVYUEVDVF9FUShzaG91bGRfcHJpbnRfaGVscCwgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6Z19oZWxwX2ZsYWcpOwogCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVD
VElPTl8KKyMgaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgogICAgIGNvbnN0IGNoYXIq
IGNvbnN0IGV4cGVjdGVkX2hlbHBfZnJhZ21lbnQgPQogICAgICAgICAiVGhpcyBwcm9ncmFtIGNv
bnRhaW5zIHRlc3RzIHdyaXR0ZW4gdXNpbmciOwogICAgIGlmIChzaG91bGRfcHJpbnRfaGVscCkg
ewpAQCAtNTI0NCwyMSArNTcyNiwyMiBAQCBjbGFzcyBJbml0R29vZ2xlVGVzdFRlc3QgOiBwdWJs
aWMgVGVzdCB7CiAgICAgICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzTm90U3Vic3RyaW5nLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9oZWxwX2ZyYWdtZW50LCBjYXB0dXJlZF9z
dGRvdXQpOwogICAgIH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTl8K
KyMgZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KIAogICAgIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OmdfaGVscF9mbGFnID0gc2F2ZWRfaGVscF9mbGFnOwogICB9CiAKICAgLy8g
VGhpcyBtYWNybyB3cmFwcyBUZXN0UGFyc2luZ0ZsYWdzIHMudC4gdGhlIHVzZXIgZG9lc24ndCBu
ZWVkCiAgIC8vIHRvIHNwZWNpZnkgdGhlIGFycmF5IHNpemVzLgotI2RlZmluZSBHVEVTVF9URVNU
X1BBUlNJTkdfRkxBR1NfKGFyZ3YxLCBhcmd2MiwgZXhwZWN0ZWQsIHNob3VsZF9wcmludF9oZWxw
KSBcCisKKyMgZGVmaW5lIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndjEsIGFyZ3YyLCBl
eHBlY3RlZCwgc2hvdWxkX3ByaW50X2hlbHApIFwKICAgVGVzdFBhcnNpbmdGbGFncyhzaXplb2Yo
YXJndjEpL3NpemVvZigqYXJndjEpIC0gMSwgYXJndjEsIFwKICAgICAgICAgICAgICAgICAgICBz
aXplb2YoYXJndjIpL3NpemVvZigqYXJndjIpIC0gMSwgYXJndjIsIFwKICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZCwgc2hvdWxkX3ByaW50X2hlbHApCiB9OwogCiAvLyBUZXN0cyBwYXJzaW5n
IGFuIGVtcHR5IGNvbW1hbmQgbGluZS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEVtcHR5
KSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEVtcHR5KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3Zb
XSA9IHsKICAgICBOVUxMCiAgIH07CkBAIC01MjcxLDcgKzU3NTQsNyBAQCBURVNUX0YoSW5pdEdv
b2dsZVRlc3RUZXN0LCBFbXB0eSkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIGEgY29tbWFuZCBs
aW5lIHRoYXQgaGFzIG5vIGZsYWcuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBOb0ZsYWcp
IHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgTm9GbGFnKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3Zb
XSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgTlVMTApAQCAtNTI4Niw3ICs1NzY5LDcgQEAgVEVT
VF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTm9GbGFnKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcg
YSBiYWQgLS1ndGVzdF9maWx0ZXIgZmxhZy4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEZp
bHRlckJhZCkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBGaWx0ZXJCYWQpIHsKICAgY29uc3Qg
Y2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9maWx0ZXIiLApA
QCAtNTMwMyw3ICs1Nzg2LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRmlsdGVyQmFk
KSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgYW4gZW1wdHkgLS1ndGVzdF9maWx0ZXIgZmxhZy4K
LVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEZpbHRlckVtcHR5KSB7CitURVNUX0YoUGFyc2VG
bGFnc1Rlc3QsIEZpbHRlckVtcHR5KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAi
Zm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfZmlsdGVyPSIsCkBAIC01MzE5LDcgKzU4MDIsNyBAQCBU
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBGaWx0ZXJFbXB0eSkgewogfQogCiAvLyBUZXN0cyBw
YXJzaW5nIGEgbm9uLWVtcHR5IC0tZ3Rlc3RfZmlsdGVyIGZsYWcuCi1URVNUX0YoSW5pdEdvb2ds
ZVRlc3RUZXN0LCBGaWx0ZXJOb25FbXB0eSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBGaWx0
ZXJOb25FbXB0eSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAog
ICAgICItLWd0ZXN0X2ZpbHRlcj1hYmMiLApAQCAtNTMzNSw3ICs1ODE4LDcgQEAgVEVTVF9GKElu
aXRHb29nbGVUZXN0VGVzdCwgRmlsdGVyTm9uRW1wdHkpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2lu
ZyAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBC
cmVha09uRmFpbHVyZVdpdGhvdXRWYWx1ZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBCcmVh
a09uRmFpbHVyZVdpdGhvdXRWYWx1ZSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAg
ImZvby5leGUiLAogICAgICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUiLApAQCAtNTM1MSw3ICs1
ODM0LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVXaXRob3V0
VmFsdWUpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9
MC4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlRmFsc2VfMCkgewor
VEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBCcmVha09uRmFpbHVyZUZhbHNlXzApIHsKICAgY29uc3Qg
Y2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9icmVha19vbl9m
YWlsdXJlPTAiLApAQCAtNTM2Nyw3ICs1ODUwLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVz
dCwgQnJlYWtPbkZhaWx1cmVGYWxzZV8wKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVz
dF9icmVha19vbl9mYWlsdXJlPWYuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09u
RmFpbHVyZUZhbHNlX2YpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgQnJlYWtPbkZhaWx1cmVG
YWxzZV9mKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAg
Ii0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZT1mIiwKQEAgLTUzODMsNyArNTg2Niw3IEBAIFRFU1Rf
RihJbml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlRmFsc2VfZikgewogfQogCiAvLyBU
ZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZT1GLgotVEVTVF9GKEluaXRHb29n
bGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVGYWxzZV9GKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rl
c3QsIEJyZWFrT25GYWlsdXJlRmFsc2VfRikgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAg
ICAgImZvby5leGUiLAogICAgICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9RiIsCkBAIC01NDAw
LDcgKzU4ODMsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVyZUZh
bHNlX0YpIHsKIAogLy8gVGVzdHMgcGFyc2luZyBhIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBm
bGFnIHRoYXQgaGFzIGEgInRydWUiCiAvLyBkZWZpbml0aW9uLgotVEVTVF9GKEluaXRHb29nbGVU
ZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVUcnVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEJy
ZWFrT25GYWlsdXJlVHJ1ZSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5l
eGUiLAogICAgICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9MSIsCkBAIC01NDE2LDcgKzU4OTks
NyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVyZVRydWUpIHsKIH0K
IAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnMuCi1URVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBDYXRjaEV4Y2VwdGlvbnMpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVz
dCwgQ2F0Y2hFeGNlcHRpb25zKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9v
LmV4ZSIsCiAgICAgIi0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucyIsCkBAIC01NDMyLDcgKzU5MTUs
NyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBDYXRjaEV4Y2VwdGlvbnMpIHsKIH0KIAog
Ly8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2RlYXRoX3Rlc3RfdXNlX2ZvcmsuCi1URVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBEZWF0aFRlc3RVc2VGb3JrKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rl
c3QsIERlYXRoVGVzdFVzZUZvcmspIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJm
b28uZXhlIiwKICAgICAiLS1ndGVzdF9kZWF0aF90ZXN0X3VzZV9mb3JrIiwKQEAgLTU0NDksNyAr
NTkzMiw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIERlYXRoVGVzdFVzZUZvcmspIHsK
IAogLy8gVGVzdHMgaGF2aW5nIHRoZSBzYW1lIGZsYWcgdHdpY2Ugd2l0aCBkaWZmZXJlbnQgdmFs
dWVzLiAgVGhlCiAvLyBleHBlY3RlZCBiZWhhdmlvciBpcyB0aGF0IHRoZSBvbmUgY29taW5nIGxh
c3QgdGFrZXMgcHJlY2VkZW5jZS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIER1cGxpY2F0
ZWRGbGFncykgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBEdXBsaWNhdGVkRmxhZ3MpIHsKICAg
Y29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9maWx0
ZXI9YSIsCkBAIC01NDY2LDcgKzU5NDksNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBE
dXBsaWNhdGVkRmxhZ3MpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5nIGFuIHVucmVjb2duaXplZCBm
bGFnIG9uIHRoZSBjb21tYW5kIGxpbmUuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBVbnJl
Y29nbml6ZWRGbGFnKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFVucmVjb2duaXplZEZsYWcp
IHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVz
dF9icmVha19vbl9mYWlsdXJlIiwKQEAgLTU0ODgsNyArNTk3MSw3IEBAIFRFU1RfRihJbml0R29v
Z2xlVGVzdFRlc3QsIFVucmVjb2duaXplZEZsYWcpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5nIGEg
LS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIExpc3RU
ZXN0c0ZsYWcpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgTGlzdFRlc3RzRmxhZykgewogICAg
IGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICItLWd0ZXN0
X2xpc3RfdGVzdHMiLApAQCAtNTUwNCw3ICs1OTg3LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0
VGVzdCwgTGlzdFRlc3RzRmxhZykgewogfQogCiAvLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X2xp
c3RfdGVzdHMgZmxhZyB3aXRoIGEgInRydWUiIHZhbHVlCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RU
ZXN0LCBMaXN0VGVzdHNUcnVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIExpc3RUZXN0c1Ry
dWUpIHsKICAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAiZm9vLmV4ZSIsCiAgICAg
ICAiLS1ndGVzdF9saXN0X3Rlc3RzPTEiLApAQCAtNTUyMCw3ICs2MDAzLDcgQEAgVEVTVF9GKElu
aXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzVHJ1ZSkgewogfQogCiAvLyBUZXN0cyBoYXZpbmcg
YSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZyB3aXRoIGEgImZhbHNlIiB2YWx1ZQotVEVTVF9GKElu
aXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzRmFsc2UpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVz
dCwgTGlzdFRlc3RzRmFsc2UpIHsKICAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAi
Zm9vLmV4ZSIsCiAgICAgICAiLS1ndGVzdF9saXN0X3Rlc3RzPTAiLApAQCAtNTUzNiw3ICs2MDE5
LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzRmFsc2UpIHsKIH0KIAog
Ly8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2xpc3RfdGVzdHM9Zi4KLVRFU1RfRihJbml0R29vZ2xl
VGVzdFRlc3QsIExpc3RUZXN0c0ZhbHNlX2YpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgTGlz
dFRlc3RzRmFsc2VfZikgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUi
LAogICAgICItLWd0ZXN0X2xpc3RfdGVzdHM9ZiIsCkBAIC01NTUyLDcgKzYwMzUsNyBAQCBURVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0VGVzdHNGYWxzZV9mKSB7CiB9CiAKIC8vIFRlc3Rz
IHBhcnNpbmcgLS1ndGVzdF9saXN0X3Rlc3RzPUYuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0
LCBMaXN0VGVzdHNGYWxzZV9GKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIExpc3RUZXN0c0Zh
bHNlX0YpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhlIiwKICAgICAi
LS1ndGVzdF9saXN0X3Rlc3RzPUYiLApAQCAtNTU2OCw3ICs2MDUxLDcgQEAgVEVTVF9GKEluaXRH
b29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzRmFsc2VfRikgewogfQogCiAvLyBUZXN0cyBwYXJzaW5n
IC0tZ3Rlc3Rfb3V0cHV0IChpbnZhbGlkKS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91
dHB1dEVtcHR5KSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIE91dHB1dEVtcHR5KSB7CiAgIGNv
bnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfb3V0cHV0
IiwKQEAgLTU1ODUsNyArNjA2OCw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91dHB1
dEVtcHR5KSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9vdXRwdXQ9eG1sCi1URVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBPdXRwdXRYbWwpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVz
dCwgT3V0cHV0WG1sKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIs
CiAgICAgIi0tZ3Rlc3Rfb3V0cHV0PXhtbCIsCkBAIC01NjAxLDcgKzYwODQsNyBAQCBURVNUX0Yo
SW5pdEdvb2dsZVRlc3RUZXN0LCBPdXRwdXRYbWwpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAt
LWd0ZXN0X291dHB1dD14bWw6ZmlsZQotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgT3V0cHV0
WG1sRmlsZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBPdXRwdXRYbWxGaWxlKSB7CiAgIGNv
bnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfb3V0cHV0
PXhtbDpmaWxlIiwKQEAgLTU2MTcsNyArNjEwMCw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRl
c3QsIE91dHB1dFhtbEZpbGUpIHsKIH0KIAogLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X291dHB1
dD14bWw6ZGlyZWN0b3J5L3BhdGgvCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBPdXRwdXRY
bWxEaXJlY3RvcnkpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgT3V0cHV0WG1sRGlyZWN0b3J5
KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rl
c3Rfb3V0cHV0PXhtbDpkaXJlY3RvcnkvcGF0aC8iLApAQCAtNTYzNCw3ICs2MTE3LDcgQEAgVEVT
VF9GKEluaXRHb29nbGVUZXN0VGVzdCwgT3V0cHV0WG1sRGlyZWN0b3J5KSB7CiB9CiAKIC8vIFRl
c3RzIGhhdmluZyBhIC0tZ3Rlc3RfcHJpbnRfdGltZSBmbGFnCi1URVNUX0YoSW5pdEdvb2dsZVRl
c3RUZXN0LCBQcmludFRpbWVGbGFnKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFByaW50VGlt
ZUZsYWcpIHsKICAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgICAiZm9vLmV4ZSIsCiAg
ICAgICAiLS1ndGVzdF9wcmludF90aW1lIiwKQEAgLTU2NTAsNyArNjEzMyw3IEBAIFRFU1RfRihJ
bml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZsYWcpIHsKIH0KIAogLy8gVGVzdHMgaGF2aW5n
IGEgLS1ndGVzdF9wcmludF90aW1lIGZsYWcgd2l0aCBhICJ0cnVlIiB2YWx1ZQotVEVTVF9GKElu
aXRHb29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lVHJ1ZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0
LCBQcmludFRpbWVUcnVlKSB7CiAgICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICAgImZv
by5leGUiLAogICAgICAgIi0tZ3Rlc3RfcHJpbnRfdGltZT0xIiwKQEAgLTU2NjYsNyArNjE0OSw3
IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZVRydWUpIHsKIH0KIAogLy8g
VGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9wcmludF90aW1lIGZsYWcgd2l0aCBhICJmYWxzZSIgdmFs
dWUKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZhbHNlKSB7CitURVNUX0Yo
UGFyc2VGbGFnc1Rlc3QsIFByaW50VGltZUZhbHNlKSB7CiAgICAgY29uc3QgY2hhciogYXJndltd
ID0gewogICAgICAgImZvby5leGUiLAogICAgICAgIi0tZ3Rlc3RfcHJpbnRfdGltZT0wIiwKQEAg
LTU2ODIsNyArNjE2NSw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZh
bHNlKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9wcmludF90aW1lPWYuCi1URVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBQcmludFRpbWVGYWxzZV9mKSB7CitURVNUX0YoUGFyc2VG
bGFnc1Rlc3QsIFByaW50VGltZUZhbHNlX2YpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewog
ICAgICJmb28uZXhlIiwKICAgICAiLS1ndGVzdF9wcmludF90aW1lPWYiLApAQCAtNTY5OCw3ICs2
MTgxLDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lRmFsc2VfZikgewog
fQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfcHJpbnRfdGltZT1GLgotVEVTVF9GKEluaXRH
b29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lRmFsc2VfRikgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0
LCBQcmludFRpbWVGYWxzZV9GKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9v
LmV4ZSIsCiAgICAgIi0tZ3Rlc3RfcHJpbnRfdGltZT1GIiwKQEAgLTU3MTQsNyArNjE5Nyw3IEBA
IFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZhbHNlX0YpIHsKIH0KIAogLy8g
VGVzdHMgcGFyc2luZyAtLWd0ZXN0X3JhbmRvbV9zZWVkPW51bWJlcgotVEVTVF9GKEluaXRHb29n
bGVUZXN0VGVzdCwgUmFuZG9tU2VlZCkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBSYW5kb21T
ZWVkKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0t
Z3Rlc3RfcmFuZG9tX3NlZWQ9MTAwMCIsCkBAIC01NzMwLDcgKzYyMTMsNyBAQCBURVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBSYW5kb21TZWVkKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1n
dGVzdF9yZXBlYXQ9bnVtYmVyCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBSZXBlYXQpIHsK
K1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgUmVwZWF0KSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9
IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfcmVwZWF0PTEwMDAiLApAQCAtNTc0Niw3
ICs2MjI5LDcgQEAgVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUmVwZWF0KSB7CiB9CiAKIC8v
IFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxhZwotVEVT
VF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKSB7CitURVNU
X0YoUGFyc2VGbGFnc1Rlc3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzRmxhZykgewogICAgIGNvbnN0
IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICItLWd0ZXN0X2Fsc29f
cnVuX2Rpc2FibGVkX3Rlc3RzIiwKQEAgLTU3NjMsNyArNjI0Niw3IEBAIFRFU1RfRihJbml0R29v
Z2xlVGVzdFRlc3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzRmxhZykgewogfQogCiAvLyBUZXN0cyBo
YXZpbmcgYSAtLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIGZsYWcgd2l0aCBhICJ0cnVl
IiB2YWx1ZQotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNU
cnVlKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIEFsc29SdW5EaXNhYmxlZFRlc3RzVHJ1ZSkg
ewogICAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKICAgICAgICJmb28uZXhlIiwKICAgICAgICIt
LWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzPTEiLApAQCAtNTc4MCw3ICs2MjYzLDcgQEAg
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNUcnVlKSB7CiB9
CiAKIC8vIFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxh
ZyB3aXRoIGEgImZhbHNlIiB2YWx1ZQotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQWxzb1J1
bkRpc2FibGVkVGVzdHNGYWxzZSkgeworVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBBbHNvUnVuRGlz
YWJsZWRUZXN0c0ZhbHNlKSB7CiAgICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICAgImZv
by5leGUiLAogICAgICAgIi0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHM9MCIsCkBAIC01
Nzk3LDcgKzYyODAsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBBbHNvUnVuRGlzYWJs
ZWRUZXN0c0ZhbHNlKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9zaHVmZmxlLgot
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU2h1ZmZsZVdpdGhvdXRWYWx1ZSkgeworVEVTVF9G
KFBhcnNlRmxhZ3NUZXN0LCBTaHVmZmxlV2l0aG91dFZhbHVlKSB7CiAgIGNvbnN0IGNoYXIqIGFy
Z3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3Rfc2h1ZmZsZSIsCkBAIC01ODEz
LDcgKzYyOTYsNyBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBTaHVmZmxlV2l0aG91dFZh
bHVlKSB7CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9zaHVmZmxlPTAuCi1URVNUX0Yo
SW5pdEdvb2dsZVRlc3RUZXN0LCBTaHVmZmxlRmFsc2VfMCkgeworVEVTVF9GKFBhcnNlRmxhZ3NU
ZXN0LCBTaHVmZmxlRmFsc2VfMCkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZv
by5leGUiLAogICAgICItLWd0ZXN0X3NodWZmbGU9MCIsCkBAIC01ODI4LDkgKzYzMTEsOCBAQCBU
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBTaHVmZmxlRmFsc2VfMCkgewogICBHVEVTVF9URVNU
X1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6U2h1ZmZsZShmYWxzZSksIGZhbHNl
KTsKIH0KIAotLy8gVGVzdHMgcGFyc2luZyBhIC0tZ3Rlc3Rfc2h1ZmZsZSBmbGFnIHRoYXQgaGFz
IGEgInRydWUiCi0vLyBkZWZpbml0aW9uLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU2h1
ZmZsZVRydWUpIHsKKy8vIFRlc3RzIHBhcnNpbmcgYSAtLWd0ZXN0X3NodWZmbGUgZmxhZyB0aGF0
IGhhcyBhICJ0cnVlIiBkZWZpbml0aW9uLgorVEVTVF9GKFBhcnNlRmxhZ3NUZXN0LCBTaHVmZmxl
VHJ1ZSkgewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICIt
LWd0ZXN0X3NodWZmbGU9MSIsCkBAIC01ODQ2LDcgKzYzMjgsNyBAQCBURVNUX0YoSW5pdEdvb2ds
ZVRlc3RUZXN0LCBTaHVmZmxlVHJ1ZSkgewogfQogCiAvLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3Rf
c3RhY2tfdHJhY2VfZGVwdGg9bnVtYmVyLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU3Rh
Y2tUcmFjZURlcHRoKSB7CitURVNUX0YoUGFyc2VGbGFnc1Rlc3QsIFN0YWNrVHJhY2VEZXB0aCkg
ewogICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CiAgICAgImZvby5leGUiLAogICAgICItLWd0ZXN0
X3N0YWNrX3RyYWNlX2RlcHRoPTUiLApAQCAtNTg2MSw4ICs2MzQzLDI0IEBAIFRFU1RfRihJbml0
R29vZ2xlVGVzdFRlc3QsIFN0YWNrVHJhY2VEZXB0aCkgewogICBHVEVTVF9URVNUX1BBUlNJTkdf
RkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6U3RhY2tUcmFjZURlcHRoKDUpLCBmYWxzZSk7CiB9
CiAKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgU3RyZWFtUmVzdWx0VG8pIHsKKyAgY29uc3QgY2hh
ciogYXJndltdID0geworICAgICJmb28uZXhlIiwKKyAgICAiLS1ndGVzdF9zdHJlYW1fcmVzdWx0
X3RvPWxvY2FsaG9zdDoxMjM0IiwKKyAgICBOVUxMCisgIH07CisKKyAgY29uc3QgY2hhciogYXJn
djJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAorICB9OworCisgIEdURVNUX1RFU1Rf
UEFSU0lOR19GTEFHU18oCisgICAgICBhcmd2LCBhcmd2MiwgRmxhZ3M6OlN0cmVhbVJlc3VsdFRv
KCJsb2NhbGhvc3Q6MTIzNCIpLCBmYWxzZSk7Cit9CisKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVz
dF90aHJvd19vbl9mYWlsdXJlLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgVGhyb3dPbkZh
aWx1cmVXaXRob3V0VmFsdWUpIHsKK1RFU1RfRihQYXJzZUZsYWdzVGVzdCwgVGhyb3dPbkZhaWx1
cmVXaXRob3V0VmFsdWUpIHsKICAgY29uc3QgY2hhciogYXJndltdID0gewogICAgICJmb28uZXhl
IiwKICAgICAiLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlIiwKQEAgLTU4NzgsNyArNjM3Niw3IEBA
IFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFRocm93T25GYWlsdXJlV2l0aG91dFZhbHVlKSB7
CiB9CiAKIC8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlPTAuCi1URVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBUaHJvd09uRmFpbHVyZUZhbHNlXzApIHsKK1RFU1RfRihQ
YXJzZUZsYWdzVGVzdCwgVGhyb3dPbkZhaWx1cmVGYWxzZV8wKSB7CiAgIGNvbnN0IGNoYXIqIGFy
Z3ZbXSA9IHsKICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZT0w
IiwKQEAgLTU4OTUsNyArNjM5Myw3IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFRocm93
T25GYWlsdXJlRmFsc2VfMCkgewogCiAvLyBUZXN0cyBwYXJzaW5nIGEgLS1ndGVzdF90aHJvd19v
bl9mYWlsdXJlIGZsYWcgdGhhdCBoYXMgYSAidHJ1ZSIKIC8vIGRlZmluaXRpb24uCi1URVNUX0Yo
SW5pdEdvb2dsZVRlc3RUZXN0LCBUaHJvd09uRmFpbHVyZVRydWUpIHsKK1RFU1RfRihQYXJzZUZs
YWdzVGVzdCwgVGhyb3dPbkZhaWx1cmVUcnVlKSB7CiAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsK
ICAgICAiZm9vLmV4ZSIsCiAgICAgIi0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZT0xIiwKQEAgLTU5
MTAsOSArNjQwOCw5IEBAIFRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFRocm93T25GYWlsdXJl
VHJ1ZSkgewogICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6
VGhyb3dPbkZhaWx1cmUodHJ1ZSksIGZhbHNlKTsKIH0KIAotI2lmIEdURVNUX09TX1dJTkRPV1MK
KyMgaWYgR1RFU1RfT1NfV0lORE9XUwogLy8gVGVzdHMgcGFyc2luZyB3aWRlIHN0cmluZ3MuCi1U
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBXaWRlU3RyaW5ncykgeworVEVTVF9GKFBhcnNlRmxh
Z3NUZXN0LCBXaWRlU3RyaW5ncykgewogICBjb25zdCB3Y2hhcl90KiBhcmd2W10gPSB7CiAgICAg
TCJmb28uZXhlIiwKICAgICBMIi0tZ3Rlc3RfZmlsdGVyPUZvbyoiLApAQCAtNTkzNSw3ICs2NDMz
LDEwOCBAQCBURVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBXaWRlU3RyaW5ncykgewogCiAgIEdU
RVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIGV4cGVjdGVkX2ZsYWdzLCBmYWxz
ZSk7CiB9Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKKyMgZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKKworI2lmIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KK2NsYXNzIEZsYWdm
aWxlVGVzdCA6IHB1YmxpYyBQYXJzZUZsYWdzVGVzdCB7CisgcHVibGljOgorICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKSB7CisgICAgUGFyc2VGbGFnc1Rlc3Q6OlNldFVwKCk7CisKKyAgICB0ZXN0ZGF0
YV9wYXRoXy5TZXQoaW50ZXJuYWw6OkZpbGVQYXRoKAorICAgICAgICB0ZXN0aW5nOjpUZW1wRGly
KCkgKyBpbnRlcm5hbDo6R2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKworICAg
ICAgICAiX2ZsYWdmaWxlX3Rlc3QiKSk7CisgICAgdGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpS
bURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9w
YXRoXy5DcmVhdGVGb2xkZXIoKSk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7
CisgICAgdGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0
cigpKTsKKyAgICBQYXJzZUZsYWdzVGVzdDo6VGVhckRvd24oKTsKKyAgfQorCisgIGludGVybmFs
OjpGaWxlUGF0aCBDcmVhdGVGbGFnZmlsZShjb25zdCBjaGFyKiBjb250ZW50cykgeworICAgIGlu
dGVybmFsOjpGaWxlUGF0aCBmaWxlX3BhdGgoaW50ZXJuYWw6OkZpbGVQYXRoOjpHZW5lcmF0ZVVu
aXF1ZUZpbGVOYW1lKAorICAgICAgICB0ZXN0ZGF0YV9wYXRoXywgaW50ZXJuYWw6OkZpbGVQYXRo
KCJ1bmlxdWUiKSwgInR4dCIpKTsKKyAgICBGSUxFKiBmID0gdGVzdGluZzo6aW50ZXJuYWw6OnBv
c2l4OjpGT3BlbihmaWxlX3BhdGguY19zdHIoKSwgInciKTsKKyAgICBmcHJpbnRmKGYsICIlcyIs
IGNvbnRlbnRzKTsKKyAgICBmY2xvc2UoZik7CisgICAgcmV0dXJuIGZpbGVfcGF0aDsKKyAgfQor
CisgcHJpdmF0ZToKKyAgaW50ZXJuYWw6OkZpbGVQYXRoIHRlc3RkYXRhX3BhdGhfOworfTsKKwor
Ly8gVGVzdHMgYW4gZW1wdHkgZmxhZ2ZpbGUuCitURVNUX0YoRmxhZ2ZpbGVUZXN0LCBFbXB0eSkg
eworICBpbnRlcm5hbDo6RmlsZVBhdGggZmxhZ2ZpbGVfcGF0aChDcmVhdGVGbGFnZmlsZSgiIikp
OworICBzdGQ6OnN0cmluZyBmbGFnZmlsZV9mbGFnID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIg
R1RFU1RfRkxBR19QUkVGSVhfICJmbGFnZmlsZT0iKSArIGZsYWdmaWxlX3BhdGguY19zdHIoKTsK
KworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7CisgICAgImZvby5leGUiLAorICAgIGZsYWdmaWxl
X2ZsYWcuY19zdHIoKSwKKyAgICBOVUxMCisgIH07CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9
IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAorICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lO
R19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzKCksIGZhbHNlKTsKK30KKworLy8gVGVzdHMgcGFz
c2luZyBhIG5vbi1lbXB0eSAtLWd0ZXN0X2ZpbHRlciBmbGFnIHZpYSAtLWd0ZXN0X2ZsYWdmaWxl
LgorVEVTVF9GKEZsYWdmaWxlVGVzdCwgRmlsdGVyTm9uRW1wdHkpIHsKKyAgaW50ZXJuYWw6OkZp
bGVQYXRoIGZsYWdmaWxlX3BhdGgoQ3JlYXRlRmxhZ2ZpbGUoCisgICAgICAiLS0iICBHVEVTVF9G
TEFHX1BSRUZJWF8gICJmaWx0ZXI9YWJjIikpOworICBzdGQ6OnN0cmluZyBmbGFnZmlsZV9mbGFn
ID0KKyAgICAgIHN0ZDo6c3RyaW5nKCItLSIgR1RFU1RfRkxBR19QUkVGSVhfICJmbGFnZmlsZT0i
KSArIGZsYWdmaWxlX3BhdGguY19zdHIoKTsKKworICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Cisg
ICAgImZvby5leGUiLAorICAgIGZsYWdmaWxlX2ZsYWcuY19zdHIoKSwKKyAgICBOVUxMCisgIH07
CisKKyAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgTlVMTAor
ICB9OworCisgIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpG
aWx0ZXIoImFiYyIpLCBmYWxzZSk7Cit9CisKKy8vIFRlc3RzIHBhc3Npbmcgc2V2ZXJhbCBmbGFn
cyB2aWEgLS1ndGVzdF9mbGFnZmlsZS4KK1RFU1RfRihGbGFnZmlsZVRlc3QsIFNldmVyYWxGbGFn
cykgeworICBpbnRlcm5hbDo6RmlsZVBhdGggZmxhZ2ZpbGVfcGF0aChDcmVhdGVGbGFnZmlsZSgK
KyAgICAgICItLSIgIEdURVNUX0ZMQUdfUFJFRklYXyAgImZpbHRlcj1hYmNcbiIKKyAgICAgICIt
LSIgIEdURVNUX0ZMQUdfUFJFRklYXyAgImJyZWFrX29uX2ZhaWx1cmVcbiIKKyAgICAgICItLSIg
IEdURVNUX0ZMQUdfUFJFRklYXyAgImxpc3RfdGVzdHMiKSk7CisgIHN0ZDo6c3RyaW5nIGZsYWdm
aWxlX2ZsYWcgPQorICAgICAgc3RkOjpzdHJpbmcoIi0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImZs
YWdmaWxlPSIpICsgZmxhZ2ZpbGVfcGF0aC5jX3N0cigpOworCisgIGNvbnN0IGNoYXIqIGFyZ3Zb
XSA9IHsKKyAgICAiZm9vLmV4ZSIsCisgICAgZmxhZ2ZpbGVfZmxhZy5jX3N0cigpLAorICAgIE5V
TEwKKyAgfTsKKworICBjb25zdCBjaGFyKiBhcmd2MltdID0geworICAgICJmb28uZXhlIiwKKyAg
ICBOVUxMCisgIH07CisKKyAgRmxhZ3MgZXhwZWN0ZWRfZmxhZ3M7CisgIGV4cGVjdGVkX2ZsYWdz
LmJyZWFrX29uX2ZhaWx1cmUgPSB0cnVlOworICBleHBlY3RlZF9mbGFncy5maWx0ZXIgPSAiYWJj
IjsKKyAgZXhwZWN0ZWRfZmxhZ3MubGlzdF90ZXN0cyA9IHRydWU7CisKKyAgR1RFU1RfVEVTVF9Q
QVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgZXhwZWN0ZWRfZmxhZ3MsIGZhbHNlKTsKK30KKyNl
bmRpZiAgLy8gR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXwogCiAvLyBUZXN0cyBjdXJyZW50
X3Rlc3RfaW5mbygpIGluIFVuaXRUZXN0LgogY2xhc3MgQ3VycmVudFRlc3RJbmZvVGVzdCA6IHB1
YmxpYyBUZXN0IHsKQEAgLTU5OTAsNiArNjU4OSw3IEBAIFRFU1RfRihDdXJyZW50VGVzdEluZm9U
ZXN0LCBXb3Jrc0ZvclNlY29uZFRlc3RJbkFUZXN0Q2FzZSkgewogCiB9ICAvLyBuYW1lc3BhY2Ug
dGVzdGluZwogCisKIC8vIFRoZXNlIHR3byBsaW5lcyB0ZXN0IHRoYXQgd2UgY2FuIGRlZmluZSB0
ZXN0cyBpbiBhIG5hbWVzcGFjZSB0aGF0CiAvLyBoYXMgdGhlIG5hbWUgInRlc3RpbmciIGFuZCBp
cyBuZXN0ZWQgaW4gYW5vdGhlciBuYW1lc3BhY2UuCiBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlIHsK
QEAgLTYwNDgsNyArNjY0OCw3IEBAIFRFU1QoU3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIFVuY29u
ZGl0aW9uYWwpIHsKIAogI2lmZGVmIF9fQk9STEFORENfXwogLy8gU2lsZW5jZXMgd2FybmluZ3M6
ICJDb25kaXRpb24gaXMgYWx3YXlzIHRydWUiLCAiVW5yZWFjaGFibGUgY29kZSIKLSNwcmFnbWEg
b3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAorIyBwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjIC13
LXJjaAogI2VuZGlmCiAKIFRFU1QoU3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIFRydXRoKSB7CkBA
IC02MDcwLDggKzY2NzAsOCBAQCBURVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBUcnV0aDIp
IHsKIH0KIAogI2lmZGVmIF9fQk9STEFORENfXwotLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0ZXIg
cHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHJlc3NlZCB0aGVtCi0jcHJhZ21hIG9w
dGlvbiBwb3AKKy8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9w
dGlvbiBwdXNoIiBzdXBwcmVzc2VkIHRoZW0KKyMgcHJhZ21hIG9wdGlvbiBwb3AKICNlbmRpZgog
CiBURVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBJbnRlZ2VyRXF1YWxzKSB7CkBAIC02MjY0
LDE1ICs2ODY0LDQwIEBAIFRFU1QoQ29sb3JlZE91dHB1dFRlc3QsIFVzZXNDb2xvcnNXaGVuVGVy
bVN1cHBvcnRzQ29sb3JzKSB7CiAgIFNldEVudigiVEVSTSIsICJ4dGVybS1jb2xvciIpOyAgLy8g
VEVSTSBzdXBwb3J0cyBjb2xvcnMuCiAgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUp
KTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KIAorICBTZXRFbnYoIlRFUk0iLCAieHRlcm0tMjU2Y29s
b3IiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VD
b2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInNj
cmVlbiIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVz
ZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKworICBTZXRFbnYoIlRFUk0iLCAi
c2NyZWVuLTI1NmNvbG9yIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RS
VUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgorCisgIFNldEVu
digiVEVSTSIsICJ0bXV4Iik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAgRVhQRUNUX1RS
VUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgorCisgIFNldEVu
digiVEVSTSIsICJ0bXV4LTI1NmNvbG9yIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KKyAg
RVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgor
CisgIFNldEVudigiVEVSTSIsICJyeHZ0LXVuaWNvZGUiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29s
b3JzLgorICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMg
YSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgInJ4dnQtdW5pY29kZS0yNTZjb2xvciIpOyAgLy8g
VEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUp
KTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KKwogICBTZXRFbnYoIlRFUk0iLCAibGludXgiKTsgIC8v
IFRFUk0gc3VwcG9ydHMgY29sb3JzLgogICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVl
KSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCisKKyAgU2V0RW52KCJURVJNIiwgImN5Z3dpbiIpOyAg
Ly8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCisgIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRy
dWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KICNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwog
fQogCiAvLyBWZXJpZmllcyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcSB3b3JrcyBpbiBhIG5hbWVz
cGFjZSBzY29wZS4KIAotc3RhdGljIGJvb2wgZHVtbXkxID0gU3RhdGljQXNzZXJ0VHlwZUVxPGJv
b2wsIGJvb2w+KCk7Ci1zdGF0aWMgYm9vbCBkdW1teTIgPSBTdGF0aWNBc3NlcnRUeXBlRXE8Y29u
c3QgaW50LCBjb25zdCBpbnQ+KCk7CitzdGF0aWMgYm9vbCBkdW1teTEgR1RFU1RfQVRUUklCVVRF
X1VOVVNFRF8gPSBTdGF0aWNBc3NlcnRUeXBlRXE8Ym9vbCwgYm9vbD4oKTsKK3N0YXRpYyBib29s
IGR1bW15MiBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9CisgICAgU3RhdGljQXNzZXJ0VHlwZUVx
PGNvbnN0IGludCwgY29uc3QgaW50PigpOwogCiAvLyBWZXJpZmllcyB0aGF0IFN0YXRpY0Fzc2Vy
dFR5cGVFcSB3b3JrcyBpbiBhIGNsYXNzLgogCkBAIC02Mjk1LDE0ICs2OTIwLDYgQEAgVEVTVChT
dGF0aWNBc3NlcnRUeXBlRXFUZXN0LCBDb21waWxlc0ZvckVxdWFsVHlwZXMpIHsKICAgU3RhdGlj
QXNzZXJ0VHlwZUVxPGludCosIEludEFsaWFzKj4oKTsKIH0KIAotVEVTVChHZXRDdXJyZW50T3NT
dGFja1RyYWNlRXhjZXB0VG9wVGVzdCwgUmV0dXJuc1RoZVN0YWNrVHJhY2UpIHsKLSAgdGVzdGlu
Zzo6VW5pdFRlc3QqIGNvbnN0IHVuaXRfdGVzdCA9IHRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0
YW5jZSgpOwotCi0gIC8vIFdlIGRvbid0IGhhdmUgYSBzdGFjayB3YWxrZXIgaW4gR29vZ2xlIFRl
c3QgeWV0LgotICBFWFBFQ1RfU1RSRVEoIiIsIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRU
b3AodW5pdF90ZXN0LCAwKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCBHZXRDdXJyZW50
T3NTdGFja1RyYWNlRXhjZXB0VG9wKHVuaXRfdGVzdCwgMSkuY19zdHIoKSk7Ci19Ci0KIFRFU1Qo
SGFzTm9uZmF0YWxGYWlsdXJlVGVzdCwgUmV0dXJuc0ZhbHNlV2hlblRoZXJlSXNOb0ZhaWx1cmUp
IHsKICAgRVhQRUNUX0ZBTFNFKEhhc05vbmZhdGFsRmFpbHVyZSgpKTsKIH0KQEAgLTY0NjYsNyAr
NzA4Myw3IEBAIFRFU1QoVGVzdEV2ZW50TGlzdGVuZXJzVGVzdCwgQXBwZW5kKSB7CiAvLyBvcmRl
ci4KIGNsYXNzIFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50
TGlzdGVuZXIgewogIHB1YmxpYzoKLSAgU2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIoc3RkOjp2ZWN0
b3I8U3RyaW5nPiogdmVjdG9yLCBjb25zdCBjaGFyKiBpZCkKKyAgU2VxdWVuY2VUZXN0aW5nTGlz
dGVuZXIoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiB2ZWN0b3IsIGNvbnN0IGNoYXIqIGlkKQog
ICAgICAgOiB2ZWN0b3JfKHZlY3RvciksIGlkXyhpZCkge30KIAogIHByb3RlY3RlZDoKQEAgLTY0
ODksMjAgKzcxMDYsMjAgQEAgY2xhc3MgU2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIgOiBwdWJsaWMg
RW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7CiAgIH0KIAogIHByaXZhdGU6Ci0gIFN0cmluZyBHZXRF
dmVudERlc2NyaXB0aW9uKGNvbnN0IGNoYXIqIG1ldGhvZCkgeworICBzdGQ6OnN0cmluZyBHZXRF
dmVudERlc2NyaXB0aW9uKGNvbnN0IGNoYXIqIG1ldGhvZCkgewogICAgIE1lc3NhZ2UgbWVzc2Fn
ZTsKICAgICBtZXNzYWdlIDw8IGlkXyA8PCAiLiIgPDwgbWV0aG9kOwogICAgIHJldHVybiBtZXNz
YWdlLkdldFN0cmluZygpOwogICB9CiAKLSAgc3RkOjp2ZWN0b3I8U3RyaW5nPiogdmVjdG9yXzsK
KyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiB2ZWN0b3JfOwogICBjb25zdCBjaGFyKiBjb25z
dCBpZF87CiAKICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTZXF1ZW5jZVRlc3Rp
bmdMaXN0ZW5lcik7CiB9OwogCiBURVNUKEV2ZW50TGlzdGVuZXJUZXN0LCBBcHBlbmRLZWVwc09y
ZGVyKSB7Ci0gIHN0ZDo6dmVjdG9yPFN0cmluZz4gdmVjOworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4gdmVjOwogICBUZXN0RXZlbnRMaXN0ZW5lcnMgbGlzdGVuZXJzOwogICBsaXN0ZW5lcnMu
QXBwZW5kKG5ldyBTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lcigmdmVjLCAiMXN0IikpOwogICBsaXN0
ZW5lcnMuQXBwZW5kKG5ldyBTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lcigmdmVjLCAiMm5kIikpOwpA
QCAtNjcxNSw0ICs3MzMyLDQ2NCBAQCBHVEVTVF9URVNUKEFsdGVybmF0aXZlTmFtZVRlc3QsIFdv
cmtzKSB7ICAvLyBHVEVTVF9URVNUIGlzIHRoZSBzYW1lIGFzIFRFU1QuCiAgIC8vIEdURVNUX0ZB
SUwgaXMgdGhlIHNhbWUgYXMgRkFJTC4KICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfRkFJ
TCgpIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIkFu
IGV4cGVjdGVkIGZhaWx1cmUiKTsKKworICAvLyBHVEVTVF9BU1NFUlRfWFkgaXMgdGhlIHNhbWUg
YXMgQVNTRVJUX1hZLgorCisgIEdURVNUX0FTU0VSVF9FUSgwLCAwKTsKKyAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0VRKDAsIDEpIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKyAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0VRKDEsIDApIDw8ICJBbiBleHBlY3RlZCBmYWls
dXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKKwor
ICBHVEVTVF9BU1NFUlRfTkUoMCwgMSk7CisgIEdURVNUX0FTU0VSVF9ORSgxLCAwKTsKKyAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX05FKDAsIDApIDw8ICJBbiBleHBlY3RlZCBm
YWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsK
KworICBHVEVTVF9BU1NFUlRfTEUoMCwgMCk7CisgIEdURVNUX0FTU0VSVF9MRSgwLCAxKTsKKyAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0xFKDEsIDApIDw8ICJBbiBleHBlY3Rl
ZCBmYWlsdXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUi
KTsKKworICBHVEVTVF9BU1NFUlRfTFQoMCwgMSk7CisgIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdU
RVNUX0FTU0VSVF9MVCgwLCAwKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisgIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEdURVNUX0FTU0VSVF9MVCgxLCAwKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisKKyAgR1RFU1RfQVNT
RVJUX0dFKDAsIDApOworICBHVEVTVF9BU1NFUlRfR0UoMSwgMCk7CisgIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKEdURVNUX0FTU0VSVF9HRSgwLCAxKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7CisKKyAgR1RFU1Rf
QVNTRVJUX0dUKDEsIDApOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfR1Qo
MCwgMSkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAi
QW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NF
UlRfR1QoMSwgMSkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAorICAgICAgICAgICAgICAgICAg
ICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOworfQorCisvLyBUZXN0cyBmb3IgaW50ZXJuYWwg
dXRpbGl0aWVzIG5lY2Vzc2FyeSBmb3IgaW1wbGVtZW50YXRpb24gb2YgdGhlIHVuaXZlcnNhbAor
Ly8gcHJpbnRpbmcuCisvLyBGSVhNRTogRmluZCBhIGJldHRlciBob21lIGZvciB0aGVtLgorCitj
bGFzcyBDb252ZXJzaW9uSGVscGVyQmFzZSB7fTsKK2NsYXNzIENvbnZlcnNpb25IZWxwZXJEZXJp
dmVkIDogcHVibGljIENvbnZlcnNpb25IZWxwZXJCYXNlIHt9OworCisvLyBUZXN0cyB0aGF0IElz
QVByb3RvY29sTWVzc2FnZTxUPjo6dmFsdWUgaXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuCitU
RVNUKElzQVByb3RvY29sTWVzc2FnZVRlc3QsIFZhbHVlSXNDb21waWxlVGltZUNvbnN0YW50KSB7
CisgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhJc0FQcm90b2NvbE1lc3NhZ2U8UHJvdG9jb2xNZXNz
YWdlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF90cnVlKTsKKyAgR1RF
U1RfQ09NUElMRV9BU1NFUlRfKCFJc0FQcm90b2NvbE1lc3NhZ2U8aW50Pjo6dmFsdWUsIGNvbnN0
X2ZhbHNlKTsKK30KKworLy8gVGVzdHMgdGhhdCBJc0FQcm90b2NvbE1lc3NhZ2U8VD46OnZhbHVl
IGlzIHRydWUgd2hlbiBUIGlzCisvLyBwcm90bzI6Ok1lc3NhZ2Ugb3IgYSBzdWItY2xhc3Mgb2Yg
aXQuCitURVNUKElzQVByb3RvY29sTWVzc2FnZVRlc3QsIFZhbHVlSXNUcnVlV2hlblR5cGVJc0FQ
cm90b2NvbE1lc3NhZ2UpIHsKKyAgRVhQRUNUX1RSVUUoSXNBUHJvdG9jb2xNZXNzYWdlPCA6OnBy
b3RvMjo6TWVzc2FnZT46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUoSXNBUHJvdG9jb2xNZXNzYWdl
PFByb3RvY29sTWVzc2FnZT46OnZhbHVlKTsKK30KKworLy8gVGVzdHMgdGhhdCBJc0FQcm90b2Nv
bE1lc3NhZ2U8VD46OnZhbHVlIGlzIGZhbHNlIHdoZW4gVCBpcyBuZWl0aGVyCisvLyBQcm90b2Nv
bE1lc3NhZ2Ugbm9yIGEgc3ViLWNsYXNzIG9mIGl0LgorVEVTVChJc0FQcm90b2NvbE1lc3NhZ2VU
ZXN0LCBWYWx1ZUlzRmFsc2VXaGVuVHlwZUlzTm90QVByb3RvY29sTWVzc2FnZSkgeworICBFWFBF
Q1RfRkFMU0UoSXNBUHJvdG9jb2xNZXNzYWdlPGludD46OnZhbHVlKTsKKyAgRVhQRUNUX0ZBTFNF
KElzQVByb3RvY29sTWVzc2FnZTxjb25zdCBDb252ZXJzaW9uSGVscGVyQmFzZT46OnZhbHVlKTsK
K30KKworLy8gVGVzdHMgdGhhdCBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbCBjb21waWxlcyB3aGVu
IHRoZSB0eXBlIGFyZ3VtZW50cyBhcmUKKy8vIGVxdWFsLgorVEVTVChDb21waWxlQXNzZXJ0VHlw
ZXNFcXVhbCwgQ29tcGlsZXNXaGVuVHlwZXNBcmVFcXVhbCkgeworICBDb21waWxlQXNzZXJ0VHlw
ZXNFcXVhbDx2b2lkLCB2b2lkPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQqLCBp
bnQqPigpOworfQorCisvLyBUZXN0cyB0aGF0IFJlbW92ZVJlZmVyZW5jZSBkb2VzIG5vdCBhZmZl
Y3Qgbm9uLXJlZmVyZW5jZSB0eXBlcy4KK1RFU1QoUmVtb3ZlUmVmZXJlbmNlVGVzdCwgRG9lc05v
dEFmZmVjdE5vblJlZmVyZW5jZVR5cGUpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50
LCBSZW1vdmVSZWZlcmVuY2U8aW50Pjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1
YWw8Y29uc3QgY2hhciwgUmVtb3ZlUmVmZXJlbmNlPGNvbnN0IGNoYXI+Ojp0eXBlPigpOworfQor
CisvLyBUZXN0cyB0aGF0IFJlbW92ZVJlZmVyZW5jZSByZW1vdmVzIHJlZmVyZW5jZSBmcm9tIHJl
ZmVyZW5jZSB0eXBlcy4KK1RFU1QoUmVtb3ZlUmVmZXJlbmNlVGVzdCwgUmVtb3Zlc1JlZmVyZW5j
ZSkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQsIFJlbW92ZVJlZmVyZW5jZTxpbnQm
Pjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y29uc3QgY2hhciwgUmVtb3Zl
UmVmZXJlbmNlPGNvbnN0IGNoYXImPjo6dHlwZT4oKTsKK30KKworLy8gVGVzdHMgR1RFU1RfUkVN
T1ZFX1JFRkVSRU5DRV8uCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2
b2lkIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZSgpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1
YWw8VDEsIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfKFQyKT4oKTsKK30KKworVEVTVChSZW1vdmVS
ZWZlcmVuY2VUZXN0LCBNYWNyb1ZlcnNpb24pIHsKKyAgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNl
PGludCwgaW50PigpOworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2U8Y29uc3QgY2hhciwgY29u
c3QgY2hhciY+KCk7Cit9CisKKworLy8gVGVzdHMgdGhhdCBSZW1vdmVDb25zdCBkb2VzIG5vdCBh
ZmZlY3Qgbm9uLWNvbnN0IHR5cGVzLgorVEVTVChSZW1vdmVDb25zdFRlc3QsIERvZXNOb3RBZmZl
Y3ROb25Db25zdFR5cGUpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50LCBSZW1vdmVD
b25zdDxpbnQ+Ojp0eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjaGFyJiwgUmVt
b3ZlQ29uc3Q8Y2hhciY+Ojp0eXBlPigpOworfQorCisvLyBUZXN0cyB0aGF0IFJlbW92ZUNvbnN0
IHJlbW92ZXMgY29uc3QgZnJvbSBjb25zdCB0eXBlcy4KK1RFU1QoUmVtb3ZlQ29uc3RUZXN0LCBS
ZW1vdmVzQ29uc3QpIHsKKyAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50LCBSZW1vdmVDb25z
dDxjb25zdCBpbnQ+Ojp0eXBlPigpOworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjaGFyWzJd
LCBSZW1vdmVDb25zdDxjb25zdCBjaGFyWzJdPjo6dHlwZT4oKTsKKyAgQ29tcGlsZUFzc2VydFR5
cGVzRXF1YWw8Y2hhclsyXVszXSwgUmVtb3ZlQ29uc3Q8Y29uc3QgY2hhclsyXVszXT46OnR5cGU+
KCk7Cit9CisKKy8vIFRlc3RzIEdURVNUX1JFTU9WRV9DT05TVF8uCisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lkIFRlc3RHVGVzdFJlbW92ZUNvbnN0KCkgeworICBD
b21waWxlQXNzZXJ0VHlwZXNFcXVhbDxUMSwgR1RFU1RfUkVNT1ZFX0NPTlNUXyhUMik+KCk7Cit9
CisKK1RFU1QoUmVtb3ZlQ29uc3RUZXN0LCBNYWNyb1ZlcnNpb24pIHsKKyAgVGVzdEdUZXN0UmVt
b3ZlQ29uc3Q8aW50LCBpbnQ+KCk7CisgIFRlc3RHVGVzdFJlbW92ZUNvbnN0PGRvdWJsZSYsIGRv
dWJsZSY+KCk7CisgIFRlc3RHVGVzdFJlbW92ZUNvbnN0PGNoYXIsIGNvbnN0IGNoYXI+KCk7Cit9
CisKKy8vIFRlc3RzIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXy4KKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgVGVzdEdUZXN0UmVtb3ZlUmVmZXJl
bmNlQW5kQ29uc3QoKSB7CisgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBHVEVTVF9SRU1P
VkVfUkVGRVJFTkNFX0FORF9DT05TVF8oVDIpPigpOworfQorCitURVNUKFJlbW92ZVJlZmVyZW5j
ZVRvQ29uc3RUZXN0LCBXb3JrcykgeworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25z
dDxpbnQsIGludD4oKTsKKyAgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8ZG91Ymxl
LCBkb3VibGUmPigpOworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxjaGFyLCBj
b25zdCBjaGFyPigpOworICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxjaGFyLCBj
b25zdCBjaGFyJj4oKTsKKyAgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8Y29uc3Qg
Y2hhciosIGNvbnN0IGNoYXIqPigpOworfQorCisvLyBUZXN0cyB0aGF0IEFkZFJlZmVyZW5jZSBk
b2VzIG5vdCBhZmZlY3QgcmVmZXJlbmNlIHR5cGVzLgorVEVTVChBZGRSZWZlcmVuY2VUZXN0LCBE
b2VzTm90QWZmZWN0UmVmZXJlbmNlVHlwZSkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxp
bnQmLCBBZGRSZWZlcmVuY2U8aW50Jj46OnR5cGU+KCk7CisgIENvbXBpbGVBc3NlcnRUeXBlc0Vx
dWFsPGNvbnN0IGNoYXImLCBBZGRSZWZlcmVuY2U8Y29uc3QgY2hhciY+Ojp0eXBlPigpOworfQor
CisvLyBUZXN0cyB0aGF0IEFkZFJlZmVyZW5jZSBhZGRzIHJlZmVyZW5jZSB0byBub24tcmVmZXJl
bmNlIHR5cGVzLgorVEVTVChBZGRSZWZlcmVuY2VUZXN0LCBBZGRzUmVmZXJlbmNlKSB7CisgIENv
bXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCYsIEFkZFJlZmVyZW5jZTxpbnQ+Ojp0eXBlPigpOwor
ICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjb25zdCBjaGFyJiwgQWRkUmVmZXJlbmNlPGNvbnN0
IGNoYXI+Ojp0eXBlPigpOworfQorCisvLyBUZXN0cyBHVEVTVF9BRERfUkVGRVJFTkNFXy4KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgVGVzdEdUZXN0QWRkUmVm
ZXJlbmNlKCkgeworICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxUMSwgR1RFU1RfQUREX1JFRkVS
RU5DRV8oVDIpPigpOworfQorCitURVNUKEFkZFJlZmVyZW5jZVRlc3QsIE1hY3JvVmVyc2lvbikg
eworICBUZXN0R1Rlc3RBZGRSZWZlcmVuY2U8aW50JiwgaW50PigpOworICBUZXN0R1Rlc3RBZGRS
ZWZlcmVuY2U8Y29uc3QgY2hhciYsIGNvbnN0IGNoYXImPigpOworfQorCisvLyBUZXN0cyBHVEVT
VF9SRUZFUkVOQ0VfVE9fQ09OU1RfLgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyPgordm9pZCBUZXN0R1Rlc3RSZWZlcmVuY2VUb0NvbnN0KCkgeworICBDb21waWxlQXNzZXJ0
VHlwZXNFcXVhbDxUMSwgR1RFU1RfUkVGRVJFTkNFX1RPX0NPTlNUXyhUMik+KCk7Cit9CisKK1RF
U1QoR1Rlc3RSZWZlcmVuY2VUb0NvbnN0VGVzdCwgV29ya3MpIHsKKyAgVGVzdEdUZXN0UmVmZXJl
bmNlVG9Db25zdDxjb25zdCBjaGFyJiwgY2hhcj4oKTsKKyAgVGVzdEdUZXN0UmVmZXJlbmNlVG9D
b25zdDxjb25zdCBpbnQmLCBjb25zdCBpbnQ+KCk7CisgIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29u
c3Q8Y29uc3QgZG91YmxlJiwgZG91YmxlPigpOworICBUZXN0R1Rlc3RSZWZlcmVuY2VUb0NvbnN0
PGNvbnN0IHN0ZDo6c3RyaW5nJiwgY29uc3Qgc3RkOjpzdHJpbmcmPigpOworfQorCisvLyBUZXN0
cyB0aGF0IEltcGxpY2l0bHlDb252ZXJ0aWJsZTxUMSwgVDI+Ojp2YWx1ZSBpcyBhIGNvbXBpbGUt
dGltZSBjb25zdGFudC4KK1RFU1QoSW1wbGljaXRseUNvbnZlcnRpYmxlVGVzdCwgVmFsdWVJc0Nv
bXBpbGVUaW1lQ29uc3RhbnQpIHsKKyAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKChJbXBsaWNpdGx5
Q29udmVydGlibGU8aW50LCBpbnQ+Ojp2YWx1ZSksIGNvbnN0X3RydWUpOworICBHVEVTVF9DT01Q
SUxFX0FTU0VSVF8oKCFJbXBsaWNpdGx5Q29udmVydGlibGU8dm9pZCosIGludCo+Ojp2YWx1ZSks
CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9mYWxzZSk7Cit9CisKKy8vIFRlc3RzIHRo
YXQgSW1wbGljaXRseUNvbnZlcnRpYmxlPFQxLCBUMj46OnZhbHVlIGlzIHRydWUgd2hlbiBUMSBj
YW4KKy8vIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIFQyLgorVEVTVChJbXBsaWNpdGx5Q29u
dmVydGlibGVUZXN0LCBWYWx1ZUlzVHJ1ZVdoZW5Db252ZXJ0aWJsZSkgeworICBFWFBFQ1RfVFJV
RSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPGludCwgZG91YmxlPjo6dmFsdWUpKTsKKyAgRVhQRUNU
X1RSVUUoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxkb3VibGUsIGludD46OnZhbHVlKSk7CisgIEVY
UEVDVF9UUlVFKChJbXBsaWNpdGx5Q29udmVydGlibGU8aW50Kiwgdm9pZCo+Ojp2YWx1ZSkpOwor
ICBFWFBFQ1RfVFJVRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPGludCosIGNvbnN0IGludCo+Ojp2
YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPENvbnZlcnNpb25I
ZWxwZXJEZXJpdmVkJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBDb252ZXJzaW9uSGVscGVyQmFzZSY+Ojp2YWx1ZSkpOworICBFWFBFQ1RfVFJVRSgoSW1wbGlj
aXRseUNvbnZlcnRpYmxlPGNvbnN0IENvbnZlcnNpb25IZWxwZXJCYXNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnNpb25IZWxwZXJCYXNlPjo6dmFsdWUpKTsK
K30KKworLy8gVGVzdHMgdGhhdCBJbXBsaWNpdGx5Q29udmVydGlibGU8VDEsIFQyPjo6dmFsdWUg
aXMgZmFsc2Ugd2hlbiBUMQorLy8gY2Fubm90IGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIFQy
LgorVEVTVChJbXBsaWNpdGx5Q29udmVydGlibGVUZXN0LCBWYWx1ZUlzRmFsc2VXaGVuTm90Q29u
dmVydGlibGUpIHsKKyAgRVhQRUNUX0ZBTFNFKChJbXBsaWNpdGx5Q29udmVydGlibGU8ZG91Ymxl
LCBpbnQqPjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKChJbXBsaWNpdGx5Q29udmVydGlibGU8
dm9pZCosIGludCo+Ojp2YWx1ZSkpOworICBFWFBFQ1RfRkFMU0UoKEltcGxpY2l0bHlDb252ZXJ0
aWJsZTxjb25zdCBpbnQqLCBpbnQqPjo6dmFsdWUpKTsKKyAgRVhQRUNUX0ZBTFNFKChJbXBsaWNp
dGx5Q29udmVydGlibGU8Q29udmVyc2lvbkhlbHBlckJhc2UmLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uSGVscGVyRGVyaXZlZCY+Ojp2YWx1ZSkpOwor
fQorCisvLyBUZXN0cyBJc0NvbnRhaW5lclRlc3QuCisKK2NsYXNzIE5vbkNvbnRhaW5lciB7fTsK
KworVEVTVChJc0NvbnRhaW5lclRlc3RUZXN0LCBXb3Jrc0Zvck5vbkNvbnRhaW5lcikgeworICBF
WFBFQ1RfRVEoc2l6ZW9mKElzTm90Q29udGFpbmVyKSwgc2l6ZW9mKElzQ29udGFpbmVyVGVzdDxp
bnQ+KDApKSk7CisgIEVYUEVDVF9FUShzaXplb2YoSXNOb3RDb250YWluZXIpLCBzaXplb2YoSXND
b250YWluZXJUZXN0PGNoYXJbNV0+KDApKSk7CisgIEVYUEVDVF9FUShzaXplb2YoSXNOb3RDb250
YWluZXIpLCBzaXplb2YoSXNDb250YWluZXJUZXN0PE5vbkNvbnRhaW5lcj4oMCkpKTsKK30KKwor
VEVTVChJc0NvbnRhaW5lclRlc3RUZXN0LCBXb3Jrc0ZvckNvbnRhaW5lcikgeworICBFWFBFQ1Rf
RVEoc2l6ZW9mKElzQ29udGFpbmVyKSwKKyAgICAgICAgICAgIHNpemVvZihJc0NvbnRhaW5lclRl
c3Q8c3RkOjp2ZWN0b3I8Ym9vbD4gPigwKSkpOworICBFWFBFQ1RfRVEoc2l6ZW9mKElzQ29udGFp
bmVyKSwKKyAgICAgICAgICAgIHNpemVvZihJc0NvbnRhaW5lclRlc3Q8c3RkOjptYXA8aW50LCBk
b3VibGU+ID4oMCkpKTsKK30KKworI2lmIEdURVNUX0xBTkdfQ1hYMTEKK3N0cnVjdCBDb25zdE9u
bHlDb250YWluZXJXaXRoUG9pbnRlckl0ZXJhdG9yIHsKKyAgdXNpbmcgY29uc3RfaXRlcmF0b3Ig
PSBpbnQqOworICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0OworICBjb25zdF9pdGVyYXRv
ciBlbmQoKSBjb25zdDsKK307CisKK3N0cnVjdCBDb25zdE9ubHlDb250YWluZXJXaXRoQ2xhc3NJ
dGVyYXRvciB7CisgIHN0cnVjdCBjb25zdF9pdGVyYXRvciB7CisgICAgY29uc3QgaW50JiBvcGVy
YXRvciooKSBjb25zdDsKKyAgICBjb25zdF9pdGVyYXRvciYgb3BlcmF0b3IrKygvKiBwcmUtaW5j
cmVtZW50ICovKTsKKyAgfTsKKyAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKKyAgY29u
c3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7Cit9OworCitURVNUKElzQ29udGFpbmVyVGVzdFRlc3Qs
IENvbnN0T25seUNvbnRhaW5lcikgeworICBFWFBFQ1RfRVEoc2l6ZW9mKElzQ29udGFpbmVyKSwK
KyAgICAgICAgICAgIHNpemVvZihJc0NvbnRhaW5lclRlc3Q8Q29uc3RPbmx5Q29udGFpbmVyV2l0
aFBvaW50ZXJJdGVyYXRvcj4oMCkpKTsKKyAgRVhQRUNUX0VRKHNpemVvZihJc0NvbnRhaW5lciks
CisgICAgICAgICAgICBzaXplb2YoSXNDb250YWluZXJUZXN0PENvbnN0T25seUNvbnRhaW5lcldp
dGhDbGFzc0l0ZXJhdG9yPigwKSkpOworfQorI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisK
Ky8vIFRlc3RzIElzSGFzaFRhYmxlLgorc3RydWN0IEFIYXNoVGFibGUgeworICB0eXBlZGVmIHZv
aWQgaGFzaGVyOworfTsKK3N0cnVjdCBOb3RSZWFsbHlBSGFzaFRhYmxlIHsKKyAgdHlwZWRlZiB2
b2lkIGhhc2hlcjsKKyAgdHlwZWRlZiB2b2lkIHJldmVyc2VfaXRlcmF0b3I7Cit9OworVEVTVChJ
c0hhc2hUYWJsZSwgQmFzaWMpIHsKKyAgRVhQRUNUX1RSVUUodGVzdGluZzo6aW50ZXJuYWw6Oklz
SGFzaFRhYmxlPEFIYXNoVGFibGU+Ojp2YWx1ZSk7CisgIEVYUEVDVF9GQUxTRSh0ZXN0aW5nOjpp
bnRlcm5hbDo6SXNIYXNoVGFibGU8Tm90UmVhbGx5QUhhc2hUYWJsZT46OnZhbHVlKTsKKyNpZiBH
VEVTVF9MQU5HX0NYWDExCisgIEVYUEVDVF9GQUxTRSh0ZXN0aW5nOjppbnRlcm5hbDo6SXNIYXNo
VGFibGU8c3RkOjp2ZWN0b3I8aW50Pj46OnZhbHVlKTsKKyAgRVhQRUNUX1RSVUUodGVzdGluZzo6
aW50ZXJuYWw6OklzSGFzaFRhYmxlPHN0ZDo6dW5vcmRlcmVkX3NldDxpbnQ+Pjo6dmFsdWUpOwor
I2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCisjaWYgR1RFU1RfSEFTX0hBU0hfU0VUXworICBF
WFBFQ1RfVFJVRSh0ZXN0aW5nOjppbnRlcm5hbDo6SXNIYXNoVGFibGU8X19nbnVfY3h4OjpoYXNo
X3NldDxpbnQ+Pjo6dmFsdWUpOworI2VuZGlmICAvLyBHVEVTVF9IQVNfSEFTSF9TRVRfCit9CisK
Ky8vIFRlc3RzIEFycmF5RXEoKS4KKworVEVTVChBcnJheUVxVGVzdCwgV29ya3NGb3JEZWdlbmVy
YXRlZEFycmF5cykgeworICBFWFBFQ1RfVFJVRShBcnJheUVxKDUsIDVMKSk7CisgIEVYUEVDVF9G
QUxTRShBcnJheUVxKCdhJywgMCkpOworfQorCitURVNUKEFycmF5RXFUZXN0LCBXb3Jrc0Zvck9u
ZURpbWVuc2lvbmFsQXJyYXlzKSB7CisgIC8vIE5vdGUgdGhhdCBhIGFuZCBiIGFyZSBkaXN0aW5j
dCBidXQgY29tcGF0aWJsZSB0eXBlcy4KKyAgY29uc3QgaW50IGFbXSA9IHsgMCwgMSB9OworICBs
b25nIGJbXSA9IHsgMCwgMSB9OworICBFWFBFQ1RfVFJVRShBcnJheUVxKGEsIGIpKTsKKyAgRVhQ
RUNUX1RSVUUoQXJyYXlFcShhLCAyLCBiKSk7CisKKyAgYlswXSA9IDI7CisgIEVYUEVDVF9GQUxT
RShBcnJheUVxKGEsIGIpKTsKKyAgRVhQRUNUX0ZBTFNFKEFycmF5RXEoYSwgMSwgYikpOworfQor
CitURVNUKEFycmF5RXFUZXN0LCBXb3Jrc0ZvclR3b0RpbWVuc2lvbmFsQXJyYXlzKSB7CisgIGNv
bnN0IGNoYXIgYVtdWzNdID0geyAiaGkiLCAibG8iIH07CisgIGNvbnN0IGNoYXIgYltdWzNdID0g
eyAiaGkiLCAibG8iIH07CisgIGNvbnN0IGNoYXIgY1tdWzNdID0geyAiaGkiLCAibGkiIH07CisK
KyAgRVhQRUNUX1RSVUUoQXJyYXlFcShhLCBiKSk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwg
MiwgYikpOworCisgIEVYUEVDVF9GQUxTRShBcnJheUVxKGEsIGMpKTsKKyAgRVhQRUNUX0ZBTFNF
KEFycmF5RXEoYSwgMiwgYykpOworfQorCisvLyBUZXN0cyBBcnJheUF3YXJlRmluZCgpLgorCitU
RVNUKEFycmF5QXdhcmVGaW5kVGVzdCwgV29ya3NGb3JPbmVEaW1lbnNpb25hbEFycmF5KSB7Cisg
IGNvbnN0IGNoYXIgYVtdID0gImhlbGxvIjsKKyAgRVhQRUNUX0VRKGEgKyA0LCBBcnJheUF3YXJl
RmluZChhLCBhICsgNSwgJ28nKSk7CisgIEVYUEVDVF9FUShhICsgNSwgQXJyYXlBd2FyZUZpbmQo
YSwgYSArIDUsICd4JykpOworfQorCitURVNUKEFycmF5QXdhcmVGaW5kVGVzdCwgV29ya3NGb3JU
d29EaW1lbnNpb25hbEFycmF5KSB7CisgIGludCBhW11bMl0gPSB7IHsgMCwgMSB9LCB7IDIsIDMg
fSwgeyA0LCA1IH0gfTsKKyAgY29uc3QgaW50IGJbMl0gPSB7IDIsIDMgfTsKKyAgRVhQRUNUX0VR
KGEgKyAxLCBBcnJheUF3YXJlRmluZChhLCBhICsgMywgYikpOworCisgIGNvbnN0IGludCBjWzJd
ID0geyA2LCA3IH07CisgIEVYUEVDVF9FUShhICsgMywgQXJyYXlBd2FyZUZpbmQoYSwgYSArIDMs
IGMpKTsKK30KKworLy8gVGVzdHMgQ29weUFycmF5KCkuCisKK1RFU1QoQ29weUFycmF5VGVzdCwg
V29ya3NGb3JEZWdlbmVyYXRlZEFycmF5cykgeworICBpbnQgbiA9IDA7CisgIENvcHlBcnJheSgn
YScsICZuKTsKKyAgRVhQRUNUX0VRKCdhJywgbik7Cit9CisKK1RFU1QoQ29weUFycmF5VGVzdCwg
V29ya3NGb3JPbmVEaW1lbnNpb25hbEFycmF5cykgeworICBjb25zdCBjaGFyIGFbM10gPSAiaGki
OworICBpbnQgYlszXTsKKyNpZm5kZWYgX19CT1JMQU5EQ19fICAvLyBDKytCdWlsZGVyIGNhbm5v
dCBjb21waWxlIHNvbWUgYXJyYXkgc2l6ZSBkZWR1Y3Rpb25zLgorICBDb3B5QXJyYXkoYSwgJmIp
OworICBFWFBFQ1RfVFJVRShBcnJheUVxKGEsIGIpKTsKKyNlbmRpZgorCisgIGludCBjWzNdOwor
ICBDb3B5QXJyYXkoYSwgMywgYyk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYykpOworfQor
CitURVNUKENvcHlBcnJheVRlc3QsIFdvcmtzRm9yVHdvRGltZW5zaW9uYWxBcnJheXMpIHsKKyAg
Y29uc3QgaW50IGFbMl1bM10gPSB7IHsgMCwgMSwgMiB9LCB7IDMsIDQsIDUgfSB9OworICBpbnQg
YlsyXVszXTsKKyNpZm5kZWYgX19CT1JMQU5EQ19fICAvLyBDKytCdWlsZGVyIGNhbm5vdCBjb21w
aWxlIHNvbWUgYXJyYXkgc2l6ZSBkZWR1Y3Rpb25zLgorICBDb3B5QXJyYXkoYSwgJmIpOworICBF
WFBFQ1RfVFJVRShBcnJheUVxKGEsIGIpKTsKKyNlbmRpZgorCisgIGludCBjWzJdWzNdOworICBD
b3B5QXJyYXkoYSwgMiwgYyk7CisgIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYykpOworfQorCisv
LyBUZXN0cyBOYXRpdmVBcnJheS4KKworVEVTVChOYXRpdmVBcnJheVRlc3QsIENvbnN0cnVjdG9y
RnJvbUFycmF5V29ya3MpIHsKKyAgY29uc3QgaW50IGFbM10gPSB7IDAsIDEsIDIgfTsKKyAgTmF0
aXZlQXJyYXk8aW50PiBuYShhLCAzLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOworICBF
WFBFQ1RfRVEoM1UsIG5hLnNpemUoKSk7CisgIEVYUEVDVF9FUShhLCBuYS5iZWdpbigpKTsKK30K
KworVEVTVChOYXRpdmVBcnJheVRlc3QsIENyZWF0ZXNBbmREZWxldGVzQ29weU9mQXJyYXlXaGVu
QXNrZWRUbykgeworICB0eXBlZGVmIGludCBBcnJheVsyXTsKKyAgQXJyYXkqIGEgPSBuZXcgQXJy
YXlbMV07CisgICgqYSlbMF0gPSAwOworICAoKmEpWzFdID0gMTsKKyAgTmF0aXZlQXJyYXk8aW50
PiBuYSgqYSwgMiwgUmVsYXRpb25Ub1NvdXJjZUNvcHkoKSk7CisgIEVYUEVDVF9ORSgqYSwgbmEu
YmVnaW4oKSk7CisgIGRlbGV0ZVtdIGE7CisgIEVYUEVDVF9FUSgwLCBuYS5iZWdpbigpWzBdKTsK
KyAgRVhQRUNUX0VRKDEsIG5hLmJlZ2luKClbMV0pOworCisgIC8vIFdlIHJlbHkgb24gdGhlIGhl
YXAgY2hlY2tlciB0byB2ZXJpZnkgdGhhdCBuYSBkZWxldGVzIHRoZSBjb3B5IG9mCisgIC8vIGFy
cmF5LgorfQorCitURVNUKE5hdGl2ZUFycmF5VGVzdCwgVHlwZU1lbWJlcnNBcmVDb3JyZWN0KSB7
CisgIFN0YXRpY0Fzc2VydFR5cGVFcTxjaGFyLCBOYXRpdmVBcnJheTxjaGFyPjo6dmFsdWVfdHlw
ZT4oKTsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGludFsyXSwgTmF0aXZlQXJyYXk8aW50WzJdPjo6
dmFsdWVfdHlwZT4oKTsKKworICBTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgY2hhciosIE5hdGl2
ZUFycmF5PGNoYXI+Ojpjb25zdF9pdGVyYXRvcj4oKTsKKyAgU3RhdGljQXNzZXJ0VHlwZUVxPGNv
bnN0IGJvb2woKilbMl0sIE5hdGl2ZUFycmF5PGJvb2xbMl0+Ojpjb25zdF9pdGVyYXRvcj4oKTsK
K30KKworVEVTVChOYXRpdmVBcnJheVRlc3QsIE1ldGhvZHNXb3JrKSB7CisgIGNvbnN0IGludCBh
WzNdID0geyAwLCAxLCAyIH07CisgIE5hdGl2ZUFycmF5PGludD4gbmEoYSwgMywgUmVsYXRpb25U
b1NvdXJjZUNvcHkoKSk7CisgIEFTU0VSVF9FUSgzVSwgbmEuc2l6ZSgpKTsKKyAgRVhQRUNUX0VR
KDMsIG5hLmVuZCgpIC0gbmEuYmVnaW4oKSk7CisKKyAgTmF0aXZlQXJyYXk8aW50Pjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBuYS5iZWdpbigpOworICBFWFBFQ1RfRVEoMCwgKml0KTsKKyAgKytpdDsK
KyAgRVhQRUNUX0VRKDEsICppdCk7CisgIGl0Kys7CisgIEVYUEVDVF9FUSgyLCAqaXQpOworICAr
K2l0OworICBFWFBFQ1RfRVEobmEuZW5kKCksIGl0KTsKKworICBFWFBFQ1RfVFJVRShuYSA9PSBu
YSk7CisKKyAgTmF0aXZlQXJyYXk8aW50PiBuYTIoYSwgMywgUmVsYXRpb25Ub1NvdXJjZVJlZmVy
ZW5jZSgpKTsKKyAgRVhQRUNUX1RSVUUobmEgPT0gbmEyKTsKKworICBjb25zdCBpbnQgYjFbM10g
PSB7IDAsIDEsIDEgfTsKKyAgY29uc3QgaW50IGIyWzRdID0geyAwLCAxLCAyLCAzIH07CisgIEVY
UEVDVF9GQUxTRShuYSA9PSBOYXRpdmVBcnJheTxpbnQ+KGIxLCAzLCBSZWxhdGlvblRvU291cmNl
UmVmZXJlbmNlKCkpKTsKKyAgRVhQRUNUX0ZBTFNFKG5hID09IE5hdGl2ZUFycmF5PGludD4oYjIs
IDQsIFJlbGF0aW9uVG9Tb3VyY2VDb3B5KCkpKTsKK30KKworVEVTVChOYXRpdmVBcnJheVRlc3Qs
IFdvcmtzRm9yVHdvRGltZW5zaW9uYWxBcnJheSkgeworICBjb25zdCBjaGFyIGFbMl1bM10gPSB7
ICJoaSIsICJsbyIgfTsKKyAgTmF0aXZlQXJyYXk8Y2hhclszXT4gbmEoYSwgMiwgUmVsYXRpb25U
b1NvdXJjZVJlZmVyZW5jZSgpKTsKKyAgQVNTRVJUX0VRKDJVLCBuYS5zaXplKCkpOworICBFWFBF
Q1RfRVEoYSwgbmEuYmVnaW4oKSk7Cit9CisKKy8vIFRlc3RzIFNraXBQcmVmaXgoKS4KKworVEVT
VChTa2lwUHJlZml4VGVzdCwgU2tpcHNXaGVuUHJlZml4TWF0Y2hlcykgeworICBjb25zdCBjaGFy
KiBjb25zdCBzdHIgPSAiaGVsbG8iOworCisgIGNvbnN0IGNoYXIqIHAgPSBzdHI7CisgIEVYUEVD
VF9UUlVFKFNraXBQcmVmaXgoIiIsICZwKSk7CisgIEVYUEVDVF9FUShzdHIsIHApOworCisgIHAg
PSBzdHI7CisgIEVYUEVDVF9UUlVFKFNraXBQcmVmaXgoImhlbGwiLCAmcCkpOworICBFWFBFQ1Rf
RVEoc3RyICsgNCwgcCk7Cit9CisKK1RFU1QoU2tpcFByZWZpeFRlc3QsIERvZXNOb3RTa2lwV2hl
blByZWZpeERvZXNOb3RNYXRjaCkgeworICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAid29ybGQi
OworCisgIGNvbnN0IGNoYXIqIHAgPSBzdHI7CisgIEVYUEVDVF9GQUxTRShTa2lwUHJlZml4KCJX
IiwgJnApKTsKKyAgRVhQRUNUX0VRKHN0ciwgcCk7CisKKyAgcCA9IHN0cjsKKyAgRVhQRUNUX0ZB
TFNFKFNraXBQcmVmaXgoIndvcmxkISIsICZwKSk7CisgIEVYUEVDVF9FUShzdHIsIHApOworfQor
CisvLyBUZXN0cyBhZF9ob2NfdGVzdF9yZXN1bHQoKS4KKworY2xhc3MgQWRIb2NUZXN0UmVzdWx0
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKKyBwcm90ZWN0ZWQ6CisgIHN0YXRpYyB2b2lk
IFNldFVwVGVzdENhc2UoKSB7CisgICAgRkFJTCgpIDw8ICJBIGZhaWx1cmUgaGFwcGVuZWQgaW5z
aWRlIFNldFVwVGVzdENhc2UoKS4iOworICB9Cit9OworCitURVNUX0YoQWRIb2NUZXN0UmVzdWx0
VGVzdCwgQWRIb2NUZXN0UmVzdWx0Rm9yVGVzdENhc2VTaG93c0ZhaWx1cmUpIHsKKyAgY29uc3Qg
dGVzdGluZzo6VGVzdFJlc3VsdCYgdGVzdF9yZXN1bHQgPSB0ZXN0aW5nOjpVbml0VGVzdDo6R2V0
SW5zdGFuY2UoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtPmN1cnJlbnRfdGVzdF9jYXNlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLT5hZF9ob2NfdGVzdF9yZXN1bHQoKTsKKyAgRVhQRUNUX1RSVUUodGVz
dF9yZXN1bHQuRmFpbGVkKCkpOworfQorCitURVNUX0YoQWRIb2NUZXN0UmVzdWx0VGVzdCwgQWRI
b2NUZXN0UmVzdWx0VGVzdEZvclVuaXRUZXN0RG9lc05vdFNob3dGYWlsdXJlKSB7CisgIGNvbnN0
IHRlc3Rpbmc6OlRlc3RSZXN1bHQmIHRlc3RfcmVzdWx0ID0KKyAgICAgIHRlc3Rpbmc6OlVuaXRU
ZXN0OjpHZXRJbnN0YW5jZSgpLT5hZF9ob2NfdGVzdF9yZXN1bHQoKTsKKyAgRVhQRUNUX0ZBTFNF
KHRlc3RfcmVzdWx0LkZhaWxlZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MKaW5kZXggNjY0YmFhZDJh
Yjg3M2JhMzg4MTkzYTY1ZDJiNzlmZDgzZGIyZTc3NS4uYTM4ZWJhYzgzOWY3YjRmY2Y3MTA5MzUx
YzRkM2ZlY2RlMjcxNWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVz
dC9ndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MKQEAgLTI3LDEyICsyNywxMCBAQAog
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogLy8KLS8vIEF1dGhvcjoga2VpdGgucmF5
QGdtYWlsLmNvbSAoS2VpdGggUmF5KQotLy8KIC8vIGd0ZXN0X3htbF9vdXRmaWxlMV90ZXN0XyB3
cml0ZXMgc29tZSB4bWwgdmlhIFRlc3RQcm9wZXJ0eSB1c2VkIGJ5CiAvLyBndGVzdF94bWxfb3V0
ZmlsZXNfdGVzdC5weQogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgogCiBjbGFzcyBQcm9wZXJ0eU9uZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
ICBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0
ZXN0X3htbF9vdXRmaWxlMl90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
Z3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfLmNjCmluZGV4IDM0MTFhM2QzOGI4NjEwNGM2YTYwYzYw
ZDExMzFjYjY2YWE1NGMxOTIuLmFmYWYxNWE1ZGMzMjMxNWQ1MWFjN2EwYTU1NWY4M2NhYjQxZWY3
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291
dGZpbGUyX3Rlc3RfLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3Rf
eG1sX291dGZpbGUyX3Rlc3RfLmNjCkBAIC0yNywxMiArMjcsMTAgQEAKIC8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIC8vCi0vLyBBdXRob3I6IGtlaXRoLnJheUBnbWFpbC5jb20gKEtl
aXRoIFJheSkKLS8vCiAvLyBndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8gd3JpdGVzIHNvbWUgeG1s
IHZpYSBUZXN0UHJvcGVydHkgdXNlZCBieQogLy8gZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkK
IAotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAog
Y2xhc3MgUHJvcGVydHlUd28gOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgcHJvdGVjdGVkOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0Zmls
ZXNfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZp
bGVzX3Rlc3QucHkKaW5kZXggMGZlOTQ3ZjA4NGM4ZjU2ZjRhZGY1ZDBjOWZhMDI2Y2UyOTk3NWQy
Yy4uMmMwMzFmZjhkYmE1MTJjMmUwNGUyNzA1MzRlMjlmY2ViZTg4NmNmOSAxMDA3NTUKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weQor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlc190ZXN0
LnB5CkBAIC0zMSwzMSArMzEsMzkgQEAKIAogIiIiVW5pdCB0ZXN0IGZvciB0aGUgZ3Rlc3RfeG1s
X291dHB1dCBtb2R1bGUuIiIiCiAKLV9fYXV0aG9yX18gPSAia2VpdGgucmF5QGdtYWlsLmNvbSAo
S2VpdGggUmF5KSIKLQogaW1wb3J0IG9zCiBmcm9tIHhtbC5kb20gaW1wb3J0IG1pbmlkb20sIE5v
ZGUKLQogaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKIGltcG9ydCBndGVzdF94bWxfdGVzdF91dGls
cwogCi0KIEdURVNUX09VVFBVVF9TVUJESVIgPSAieG1sX291dGZpbGVzIgogR1RFU1RfT1VUUFVU
XzFfVEVTVCA9ICJndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8iCiBHVEVTVF9PVVRQVVRfMl9URVNU
ID0gImd0ZXN0X3htbF9vdXRmaWxlMl90ZXN0XyIKIAogRVhQRUNURURfWE1MXzEgPSAiIiI8P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMgdGVzdHM9IjEi
IGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiBuYW1lPSJBbGxU
ZXN0cyI+Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBl
cnJvcnM9IjAiIHRpbWU9IioiIHRpbWVzdGFtcD0iKiIgbmFtZT0iQWxsVGVzdHMiPgogICA8dGVz
dHN1aXRlIG5hbWU9IlByb3BlcnR5T25lIiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVk
PSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJUZXN0U29tZVBy
b3BlcnRpZXMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlByb3BlcnR5T25lIiBT
ZXRVcFByb3A9IjEiIFRlc3RTb21lUHJvcGVydHk9IjEiIFRlYXJEb3duUHJvcD0iMSIgLz4KKyAg
ICA8dGVzdGNhc2UgbmFtZT0iVGVzdFNvbWVQcm9wZXJ0aWVzIiBzdGF0dXM9InJ1biIgdGltZT0i
KiIgY2xhc3NuYW1lPSJQcm9wZXJ0eU9uZSI+CisgICAgICA8cHJvcGVydGllcz4KKyAgICAgICAg
PHByb3BlcnR5IG5hbWU9IlNldFVwUHJvcCIgdmFsdWU9IjEiLz4KKyAgICAgICAgPHByb3BlcnR5
IG5hbWU9IlRlc3RTb21lUHJvcGVydHkiIHZhbHVlPSIxIi8+CisgICAgICAgIDxwcm9wZXJ0eSBu
YW1lPSJUZWFyRG93blByb3AiIHZhbHVlPSIxIi8+CisgICAgICA8L3Byb3BlcnRpZXM+CisgICAg
PC90ZXN0Y2FzZT4KICAgPC90ZXN0c3VpdGU+CiA8L3Rlc3RzdWl0ZXM+CiAiIiIKIAogRVhQRUNU
RURfWE1MXzIgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHRl
c3RzdWl0ZXMgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0
aW1lPSIqIiBuYW1lPSJBbGxUZXN0cyI+Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMSIgZmFpbHVyZXM9
IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiIHRpbWVzdGFtcD0iKiIgbmFtZT0i
QWxsVGVzdHMiPgogICA8dGVzdHN1aXRlIG5hbWU9IlByb3BlcnR5VHdvIiB0ZXN0cz0iMSIgZmFp
bHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgotICAgIDx0ZXN0Y2Fz
ZSBuYW1lPSJUZXN0U29tZVByb3BlcnRpZXMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25h
bWU9IlByb3BlcnR5VHdvIiBTZXRVcFByb3A9IjIiIFRlc3RTb21lUHJvcGVydHk9IjIiIFRlYXJE
b3duUHJvcD0iMiIgLz4KKyAgICA8dGVzdGNhc2UgbmFtZT0iVGVzdFNvbWVQcm9wZXJ0aWVzIiBz
dGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVR3byI+CisgICAgICA8cHJv
cGVydGllcz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9IlNldFVwUHJvcCIgdmFsdWU9IjIiLz4K
KyAgICAgICAgPHByb3BlcnR5IG5hbWU9IlRlc3RTb21lUHJvcGVydHkiIHZhbHVlPSIyIi8+Cisg
ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJUZWFyRG93blByb3AiIHZhbHVlPSIyIi8+CisgICAgICA8
L3Byb3BlcnRpZXM+CisgICAgPC90ZXN0Y2FzZT4KICAgPC90ZXN0c3VpdGU+CiA8L3Rlc3RzdWl0
ZXM+CiAiIiIKQEAgLTEwMywxMSArMTExLDExIEBAIGNsYXNzIEdUZXN0WE1MT3V0RmlsZXNUZXN0
KGd0ZXN0X3htbF90ZXN0X3V0aWxzLkdUZXN0WE1MVGVzdENhc2UpOgogICAgIHNlbGYuYXNzZXJ0
XyhwLmV4aXRlZCkKICAgICBzZWxmLmFzc2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkKIAotICAg
ICMgVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IGxpYnRvb2wgY2F1c2VzIHRoZSBidWlsdCB0ZXN0IGJp
bmFyeSB0byBiZQorICAgICMgRklYTUU6IGxpYnRvb2wgY2F1c2VzIHRoZSBidWlsdCB0ZXN0IGJp
bmFyeSB0byBiZQogICAgICMgICBuYW1lZCBsdC1ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8gaW5z
dGVhZCBvZgotICAgICMgICBndGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8uICBUbyBhY2NvdW50IGZv
ciB0aGlzIHBvc3NpYmlsbGl0eSwgd2UKKyAgICAjICAgZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3Rf
LiAgVG8gYWNjb3VudCBmb3IgdGhpcyBwb3NzaWJpbGl0eSwgd2UKICAgICAjICAgYWxsb3cgYm90
aCBuYW1lcyBpbiB0aGUgZm9sbG93aW5nIGNvZGUuICBXZSBzaG91bGQgcmVtb3ZlIHRoaXMKLSAg
ICAjICAgaGFjayB3aGVuIENoYW5kbGVyIENhcnJ1dGgncyBsaWJ0b29sIHJlcGxhY2VtZW50IHRv
b2wgaXMgcmVhZHkuCisgICAgIyAgIHdoZW4gbGlidG9vbCByZXBsYWNlbWVudCB0b29sIGlzIHJl
YWR5LgogICAgIG91dHB1dF9maWxlX25hbWUxID0gdGVzdF9uYW1lICsgIi54bWwiCiAgICAgb3V0
cHV0X2ZpbGUxID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2Rpcl8sIG91dHB1dF9maWxlX25h
bWUxKQogICAgIG91dHB1dF9maWxlX25hbWUyID0gJ2x0LScgKyBvdXRwdXRfZmlsZV9uYW1lMQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0
X3VuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0
cHV0X3VuaXR0ZXN0LnB5CmluZGV4IDZkNDQ5MjljYWNhMDNlYzZmYWU0NDcxZWQxYmExZDQxNmE1
ZGZjZTAuLmZhZWRkNGU2Y2U3MmRhYmVmNzg2YTMxMmVmNGFlY2E1YzVkMjliZmEgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVz
dC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRf
dW5pdHRlc3QucHkKQEAgLTMxLDYyICszMSw3NiBAQAogCiAiIiJVbml0IHRlc3QgZm9yIHRoZSBn
dGVzdF94bWxfb3V0cHV0IG1vZHVsZSIiIgogCi1fX2F1dGhvcl9fID0gJ2VlZmFjbUBnbWFpbC5j
b20gKFNlYW4gTWNhZmVlKScKLQoraW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgZXJybm8KIGltcG9y
dCBvcworaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBmcm9tIHhtbC5kb20gaW1wb3J0IG1pbmlkb20s
IE5vZGUKIAogaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKIGltcG9ydCBndGVzdF94bWxfdGVzdF91
dGlscwogCitHVEVTVF9GSUxURVJfRkxBRyA9ICctLWd0ZXN0X2ZpbHRlcicKK0dURVNUX0xJU1Rf
VEVTVFNfRkxBRyA9ICctLWd0ZXN0X2xpc3RfdGVzdHMnCitHVEVTVF9PVVRQVVRfRkxBRyA9ICct
LWd0ZXN0X291dHB1dCcKK0dURVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUgPSAndGVzdF9kZXRhaWwu
eG1sJworR1RFU1RfUFJPR1JBTV9OQU1FID0gJ2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfJwor
CisjIFRoZSBmbGFnIGluZGljYXRpbmcgc3RhY2t0cmFjZXMgYXJlIG5vdCBzdXBwb3J0ZWQKK05P
X1NUQUNLVFJBQ0VfU1VQUE9SVF9GTEFHID0gJy0tbm9fc3RhY2t0cmFjZV9zdXBwb3J0JwogCi1H
VEVTVF9PVVRQVVRfRkxBRyAgICAgICAgID0gIi0tZ3Rlc3Rfb3V0cHV0IgotR1RFU1RfREVGQVVM
VF9PVVRQVVRfRklMRSA9ICJ0ZXN0X2RldGFpbC54bWwiCi1HVEVTVF9QUk9HUkFNX05BTUUgPSAi
Z3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8iCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMg
Zm9yIHRlc3Qgc2hhcmRpbmcuCitUT1RBTF9TSEFSRFNfRU5WX1ZBUiA9ICdHVEVTVF9UT1RBTF9T
SEFSRFMnCitTSEFSRF9JTkRFWF9FTlZfVkFSID0gJ0dURVNUX1NIQVJEX0lOREVYJworU0hBUkRf
U1RBVFVTX0ZJTEVfRU5WX1ZBUiA9ICdHVEVTVF9TSEFSRF9TVEFUVVNfRklMRScKIAotU1VQUE9S
VFNfU1RBQ0tfVFJBQ0VTID0gRmFsc2UKK1NVUFBPUlRTX1NUQUNLX1RSQUNFUyA9IE5PX1NUQUNL
VFJBQ0VfU1VQUE9SVF9GTEFHIG5vdCBpbiBzeXMuYXJndgogCiBpZiBTVVBQT1JUU19TVEFDS19U
UkFDRVM6Ci0gIFNUQUNLX1RSQUNFX1RFTVBMQVRFID0gIlxuU3RhY2sgdHJhY2U6XG4qIgorICBT
VEFDS19UUkFDRV9URU1QTEFURSA9ICdcblN0YWNrIHRyYWNlOlxuKicKIGVsc2U6Ci0gIFNUQUNL
X1RSQUNFX1RFTVBMQVRFID0gIiIKKyAgU1RBQ0tfVFJBQ0VfVEVNUExBVEUgPSAnJworICAjIHVu
aXR0ZXN0Lm1haW4oKSBjYW4ndCBoYW5kbGUgdW5rbm93biBmbGFncworICBzeXMuYXJndi5yZW1v
dmUoTk9fU1RBQ0tUUkFDRV9TVVBQT1JUX0ZMQUcpCiAKIEVYUEVDVEVEX05PTl9FTVBUWV9YTUwg
PSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMg
dGVzdHM9IjE1IiBmYWlsdXJlcz0iNCIgZGlzYWJsZWQ9IjIiIGVycm9ycz0iMCIgdGltZT0iKiIg
bmFtZT0iQWxsVGVzdHMiPgorPHRlc3RzdWl0ZXMgdGVzdHM9IjIzIiBmYWlsdXJlcz0iNCIgZGlz
YWJsZWQ9IjIiIGVycm9ycz0iMCIgdGltZT0iKiIgdGltZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0
cyIgYWRfaG9jX3Byb3BlcnR5PSI0MiI+CiAgIDx0ZXN0c3VpdGUgbmFtZT0iU3VjY2Vzc2Z1bFRl
c3QiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0i
KiI+CiAgICAgPHRlc3RjYXNlIG5hbWU9IlN1Y2NlZWRzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIg
Y2xhc3NuYW1lPSJTdWNjZXNzZnVsVGVzdCIvPgogICA8L3Rlc3RzdWl0ZT4KICAgPHRlc3RzdWl0
ZSBuYW1lPSJGYWlsZWRUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjEiIGRpc2FibGVkPSIwIiBl
cnJvcnM9IjAiIHRpbWU9IioiPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJGYWlscyIgc3RhdHVzPSJy
dW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iRmFpbGVkVGVzdCI+Ci0gICAgICA8ZmFpbHVyZSBtZXNz
YWdlPSJWYWx1ZSBvZjogMiYjeDBBO0V4cGVjdGVkOiAxIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0
X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioKLVZhbHVlIG9mOiAyCi1FeHBlY3RlZDogMSUoc3Rh
Y2spc11dPjwvZmFpbHVyZT4KKyAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Imd0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3RfLmNjOiomI3gwQTtFeHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6
JiN4MEE7ICAxJiN4MEE7ICAyIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5p
dHRlc3RfLmNjOioKK0V4cGVjdGVkIGVxdWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMQorICAy
JShzdGFjaylzXV0+PC9mYWlsdXJlPgogICAgIDwvdGVzdGNhc2U+CiAgIDwvdGVzdHN1aXRlPgog
ICA8dGVzdHN1aXRlIG5hbWU9Ik1peGVkUmVzdWx0VGVzdCIgdGVzdHM9IjMiIGZhaWx1cmVzPSIx
IiBkaXNhYmxlZD0iMSIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAgICA8dGVzdGNhc2UgbmFtZT0i
U3VjY2VlZHMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ik1peGVkUmVzdWx0VGVz
dCIvPgogICAgIDx0ZXN0Y2FzZSBuYW1lPSJGYWlscyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNs
YXNzbmFtZT0iTWl4ZWRSZXN1bHRUZXN0Ij4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IlZhbHVl
IG9mOiAyJiN4MEE7RXhwZWN0ZWQ6IDEiIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1
dF91bml0dGVzdF8uY2M6KgotVmFsdWUgb2Y6IDIKLUV4cGVjdGVkOiAxJShzdGFjaylzXV0+PC9m
YWlsdXJlPgotICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IDMmI3gwQTtFeHBlY3Rl
ZDogMiIgdHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCi1W
YWx1ZSBvZjogMwotRXhwZWN0ZWQ6IDIlKHN0YWNrKXNdXT48L2ZhaWx1cmU+CisgICAgICA8ZmFp
bHVyZSBtZXNzYWdlPSJndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqJiN4MEE7RXhwZWN0
ZWQgZXF1YWxpdHkgb2YgdGhlc2UgdmFsdWVzOiYjeDBBOyAgMSYjeDBBOyAgMiIgdHlwZT0iIj48
IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCitFeHBlY3RlZCBlcXVhbGl0
eSBvZiB0aGVzZSB2YWx1ZXM6CisgIDEKKyAgMiUoc3RhY2spc11dPjwvZmFpbHVyZT4KKyAgICAg
IDxmYWlsdXJlIG1lc3NhZ2U9Imd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOiomI3gwQTtF
eHBlY3RlZCBlcXVhbGl0eSBvZiB0aGVzZSB2YWx1ZXM6JiN4MEE7ICAyJiN4MEE7ICAzIiB0eXBl
PSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioKK0V4cGVjdGVkIGVx
dWFsaXR5IG9mIHRoZXNlIHZhbHVlczoKKyAgMgorICAzJShzdGFjaylzXV0+PC9mYWlsdXJlPgog
ICAgIDwvdGVzdGNhc2U+CiAgICAgPHRlc3RjYXNlIG5hbWU9IkRJU0FCTEVEX3Rlc3QiIHN0YXR1
cz0ibm90cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ik1peGVkUmVzdWx0VGVzdCIvPgogICA8L3Rl
c3RzdWl0ZT4KICAgPHRlc3RzdWl0ZSBuYW1lPSJYbWxRdW90aW5nVGVzdCIgdGVzdHM9IjEiIGZh
aWx1cmVzPSIxIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAgICA8dGVzdGNh
c2UgbmFtZT0iT3V0cHV0c0NEYXRhIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJY
bWxRdW90aW5nVGVzdCI+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJGYWlsZWQmI3gwQTtYTUwg
b3V0cHV0OiAmbHQ7P3htbCBlbmNvZGluZz0mcXVvdDt1dGYtOCZxdW90OyZndDsmbHQ7dG9wJmd0
OyZsdDshW0NEQVRBW2NkYXRhIHRleHRdXSZndDsmbHQ7L3RvcCZndDsiIHR5cGU9IiI+PCFbQ0RB
VEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgorICAgICAgPGZhaWx1cmUgbWVzc2Fn
ZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBBO0ZhaWxlZCYjeDBBO1hNTCBv
dXRwdXQ6ICZsdDs/eG1sIGVuY29kaW5nPSZxdW90O3V0Zi04JnF1b3Q7Jmd0OyZsdDt0b3AmZ3Q7
Jmx0OyFbQ0RBVEFbY2RhdGEgdGV4dF1dJmd0OyZsdDsvdG9wJmd0OyIgdHlwZT0iIj48IVtDREFU
QVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCiBGYWlsZWQKIFhNTCBvdXRwdXQ6IDw/
eG1sIGVuY29kaW5nPSJ1dGYtOCI+PHRvcD48IVtDREFUQVtjZGF0YSB0ZXh0XV0+XV0mZ3Q7PCFb
Q0RBVEFbPC90b3A+JShzdGFjaylzXV0+PC9mYWlsdXJlPgogICAgIDwvdGVzdGNhc2U+CiAgIDwv
dGVzdHN1aXRlPgogICA8dGVzdHN1aXRlIG5hbWU9IkludmFsaWRDaGFyYWN0ZXJzVGVzdCIgdGVz
dHM9IjEiIGZhaWx1cmVzPSIxIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KICAg
ICA8dGVzdGNhc2UgbmFtZT0iSW52YWxpZENoYXJhY3RlcnNJbk1lc3NhZ2UiIHN0YXR1cz0icnVu
IiB0aW1lPSIqIiBjbGFzc25hbWU9IkludmFsaWRDaGFyYWN0ZXJzVGVzdCI+Ci0gICAgICA8ZmFp
bHVyZSBtZXNzYWdlPSJGYWlsZWQmI3gwQTtJbnZhbGlkIGNoYXJhY3RlcnMgaW4gYnJhY2tldHMg
W10iIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgorICAg
ICAgPGZhaWx1cmUgbWVzc2FnZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBB
O0ZhaWxlZCYjeDBBO0ludmFsaWQgY2hhcmFjdGVycyBpbiBicmFja2V0cyBbXSIgdHlwZT0iIj48
IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqCiBGYWlsZWQKIEludmFsaWQg
Y2hhcmFjdGVycyBpbiBicmFja2V0cyBbXSUoc3RhY2spc11dPjwvZmFpbHVyZT4KICAgICA8L3Rl
c3RjYXNlPgpAQCAtOTQsNDUgKzEwOCwxNTIgQEAgSW52YWxpZCBjaGFyYWN0ZXJzIGluIGJyYWNr
ZXRzIFtdJShzdGFjaylzXV0+PC9mYWlsdXJlPgogICA8dGVzdHN1aXRlIG5hbWU9IkRpc2FibGVk
VGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMSIgZXJyb3JzPSIwIiB0aW1l
PSIqIj4KICAgICA8dGVzdGNhc2UgbmFtZT0iRElTQUJMRURfdGVzdF9ub3RfcnVuIiBzdGF0dXM9
Im5vdHJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJEaXNhYmxlZFRlc3QiLz4KICAgPC90ZXN0c3Vp
dGU+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0IiB0ZXN0cz0iNCIg
ZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgotICAgIDx0ZXN0
Y2FzZSBuYW1lPSJPbmVQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0i
UHJvcGVydHlSZWNvcmRpbmdUZXN0IiBrZXlfMT0iMSIvPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJJ
bnRWYWx1ZWRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVy
dHlSZWNvcmRpbmdUZXN0IiBrZXlfaW50PSIxIi8+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IlRocmVl
UHJvcGVydGllcyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNv
cmRpbmdUZXN0IiBrZXlfMT0iMSIga2V5XzI9IjIiIGtleV8zPSIzIi8+Ci0gICAgPHRlc3RjYXNl
IG5hbWU9IlR3b1ZhbHVlc0Zvck9uZUtleVVzZXNMYXN0VmFsdWUiIHN0YXR1cz0icnVuIiB0aW1l
PSIqIiBjbGFzc25hbWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCIga2V5XzE9IjIiLz4KKyAgPHRl
c3RzdWl0ZSBuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiIHRlc3RzPSI0IiBmYWlsdXJlcz0i
MCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIgU2V0VXBUZXN0Q2FzZT0ieWVzIiBU
ZWFyRG93blRlc3RDYXNlPSJheWUiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJPbmVQcm9wZXJ0eSIg
c3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0Ij4K
KyAgICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ia2V5XzEiIHZhbHVl
PSIxIi8+CisgICAgICA8L3Byb3BlcnRpZXM+CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8dGVzdGNh
c2UgbmFtZT0iSW50VmFsdWVkUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25h
bWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCI+CisgICAgICA8cHJvcGVydGllcz4KKyAgICAgICAg
PHByb3BlcnR5IG5hbWU9ImtleV9pbnQiIHZhbHVlPSIxIi8+CisgICAgICA8L3Byb3BlcnRpZXM+
CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8dGVzdGNhc2UgbmFtZT0iVGhyZWVQcm9wZXJ0aWVzIiBz
dGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiPgor
ICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJrZXlfMSIgdmFsdWU9
IjEiLz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImtleV8yIiB2YWx1ZT0iMiIvPgorICAgICAg
ICA8cHJvcGVydHkgbmFtZT0ia2V5XzMiIHZhbHVlPSIzIi8+CisgICAgICA8L3Byb3BlcnRpZXM+
CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8dGVzdGNhc2UgbmFtZT0iVHdvVmFsdWVzRm9yT25lS2V5
VXNlc0xhc3RWYWx1ZSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlS
ZWNvcmRpbmdUZXN0Ij4KKyAgICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICA8cHJvcGVydHkgbmFt
ZT0ia2V5XzEiIHZhbHVlPSIyIi8+CisgICAgICA8L3Byb3BlcnRpZXM+CisgICAgPC90ZXN0Y2Fz
ZT4KICAgPC90ZXN0c3VpdGU+CiAgIDx0ZXN0c3VpdGUgbmFtZT0iTm9GaXh0dXJlVGVzdCIgdGVz
dHM9IjMiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KLSAg
ICAgPHRlc3RjYXNlIG5hbWU9IlJlY29yZFByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIg
Y2xhc3NuYW1lPSJOb0ZpeHR1cmVUZXN0IiBrZXk9IjEiLz4KLSAgICAgPHRlc3RjYXNlIG5hbWU9
IkV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZEludFZhbHVlZFByb3BlcnR5IiBzdGF0dXM9
InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJOb0ZpeHR1cmVUZXN0IiBrZXlfZm9yX3V0aWxpdHlf
aW50PSIxIi8+Ci0gICAgIDx0ZXN0Y2FzZSBuYW1lPSJFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNS
ZWNvcmRTdHJpbmdWYWx1ZWRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFt
ZT0iTm9GaXh0dXJlVGVzdCIga2V5X2Zvcl91dGlsaXR5X3N0cmluZz0iMSIvPgorICAgICA8dGVz
dGNhc2UgbmFtZT0iUmVjb3JkUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25h
bWU9Ik5vRml4dHVyZVRlc3QiPgorICAgICAgIDxwcm9wZXJ0aWVzPgorICAgICAgICAgPHByb3Bl
cnR5IG5hbWU9ImtleSIgdmFsdWU9IjEiLz4KKyAgICAgICA8L3Byb3BlcnRpZXM+CisgICAgIDwv
dGVzdGNhc2U+CisgICAgIDx0ZXN0Y2FzZSBuYW1lPSJFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNS
ZWNvcmRJbnRWYWx1ZWRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0i
Tm9GaXh0dXJlVGVzdCI+CisgICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgICA8cHJvcGVydHkg
bmFtZT0ia2V5X2Zvcl91dGlsaXR5X2ludCIgdmFsdWU9IjEiLz4KKyAgICAgICA8L3Byb3BlcnRp
ZXM+CisgICAgIDwvdGVzdGNhc2U+CisgICAgIDx0ZXN0Y2FzZSBuYW1lPSJFeHRlcm5hbFV0aWxp
dHlUaGF0Q2FsbHNSZWNvcmRTdHJpbmdWYWx1ZWRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9
IioiIGNsYXNzbmFtZT0iTm9GaXh0dXJlVGVzdCI+CisgICAgICAgPHByb3BlcnRpZXM+CisgICAg
ICAgICA8cHJvcGVydHkgbmFtZT0ia2V5X2Zvcl91dGlsaXR5X3N0cmluZyIgdmFsdWU9IjEiLz4K
KyAgICAgICA8L3Byb3BlcnRpZXM+CisgICAgIDwvdGVzdGNhc2U+CisgIDwvdGVzdHN1aXRlPgor
ICA8dGVzdHN1aXRlIG5hbWU9IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIgdGVzdHM9IjQiIGZhaWx1
cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2Ug
bmFtZT0iSGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8wIiB2YWx1ZV9wYXJhbT0iMzMiIHN0YXR1cz0i
cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIgLz4KKyAgICA8
dGVzdGNhc2UgbmFtZT0iSGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8xIiB2YWx1ZV9wYXJhbT0iNDIi
IHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIg
Lz4KKyAgICA8dGVzdGNhc2UgbmFtZT0iQW5vdGhlclRlc3RUaGF0SGFzVmFsdWVQYXJhbUF0dHJp
YnV0ZS8wIiB2YWx1ZV9wYXJhbT0iMzMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9
IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIgLz4KKyAgICA8dGVzdGNhc2UgbmFtZT0iQW5vdGhlclRl
c3RUaGF0SGFzVmFsdWVQYXJhbUF0dHJpYnV0ZS8xIiB2YWx1ZV9wYXJhbT0iNDIiIHN0YXR1cz0i
cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlNpbmdsZS9WYWx1ZVBhcmFtVGVzdCIgLz4KKyAgPC90
ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iVHlwZWRUZXN0LzAiIHRlc3RzPSIxIiBmYWls
dXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNl
IG5hbWU9Ikhhc1R5cGVQYXJhbUF0dHJpYnV0ZSIgdHlwZV9wYXJhbT0iKiIgc3RhdHVzPSJydW4i
IHRpbWU9IioiIGNsYXNzbmFtZT0iVHlwZWRUZXN0LzAiIC8+CisgIDwvdGVzdHN1aXRlPgorICA8
dGVzdHN1aXRlIG5hbWU9IlR5cGVkVGVzdC8xIiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2Fi
bGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNUeXBl
UGFyYW1BdHRyaWJ1dGUiIHR5cGVfcGFyYW09IioiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFz
c25hbWU9IlR5cGVkVGVzdC8xIiAvPgorICA8L3Rlc3RzdWl0ZT4KKyAgPHRlc3RzdWl0ZSBuYW1l
PSJTaW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8wIiB0ZXN0cz0iMSIgZmFpbHVyZXM9
IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1l
PSJIYXNUeXBlUGFyYW1BdHRyaWJ1dGUiIHR5cGVfcGFyYW09IioiIHN0YXR1cz0icnVuIiB0aW1l
PSIqIiBjbGFzc25hbWU9IlNpbmdsZS9UeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLzAiIC8+Cisg
IDwvdGVzdHN1aXRlPgorICA8dGVzdHN1aXRlIG5hbWU9IlNpbmdsZS9UeXBlUGFyYW1ldGVyaXpl
ZFRlc3RDYXNlLzEiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0i
MCIgdGltZT0iKiI+CisgICAgPHRlc3RjYXNlIG5hbWU9Ikhhc1R5cGVQYXJhbUF0dHJpYnV0ZSIg
dHlwZV9wYXJhbT0iKiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1R5
cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMSIgLz4KICAgPC90ZXN0c3VpdGU+CiA8L3Rlc3RzdWl0
ZXM+IiIiICUgeydzdGFjayc6IFNUQUNLX1RSQUNFX1RFTVBMQVRFfQogCitFWFBFQ1RFRF9GSUxU
RVJFRF9URVNUX1hNTCA9ICIiIjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+
Cis8dGVzdHN1aXRlcyB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9
IjAiIHRpbWU9IioiCisgICAgICAgICAgICB0aW1lc3RhbXA9IioiIG5hbWU9IkFsbFRlc3RzIiBh
ZF9ob2NfcHJvcGVydHk9IjQyIj4KKyAgPHRlc3RzdWl0ZSBuYW1lPSJTdWNjZXNzZnVsVGVzdCIg
dGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIKKyAgICAgICAgICAgICBlcnJvcnM9
IjAiIHRpbWU9IioiPgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJTdWNjZWVkcyIgc3RhdHVzPSJydW4i
IHRpbWU9IioiIGNsYXNzbmFtZT0iU3VjY2Vzc2Z1bFRlc3QiLz4KKyAgPC90ZXN0c3VpdGU+Cis8
L3Rlc3RzdWl0ZXM+IiIiCisKK0VYUEVDVEVEX1NIQVJERURfVEVTVF9YTUwgPSAiIiI8P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHRlc3RzdWl0ZXMgdGVzdHM9IjMiIGZh
aWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiB0aW1lc3RhbXA9Iioi
IG5hbWU9IkFsbFRlc3RzIiBhZF9ob2NfcHJvcGVydHk9IjQyIj4KKyAgPHRlc3RzdWl0ZSBuYW1l
PSJTdWNjZXNzZnVsVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJy
b3JzPSIwIiB0aW1lPSIqIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iU3VjY2VlZHMiIHN0YXR1cz0i
cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlN1Y2Nlc3NmdWxUZXN0Ii8+CisgIDwvdGVzdHN1aXRl
PgorICA8dGVzdHN1aXRlIG5hbWU9Ik5vRml4dHVyZVRlc3QiIHRlc3RzPSIxIiBmYWlsdXJlcz0i
MCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+CisgICAgIDx0ZXN0Y2FzZSBuYW1l
PSJSZWNvcmRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTm9GaXh0
dXJlVGVzdCI+CisgICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgICA8cHJvcGVydHkgbmFtZT0i
a2V5IiB2YWx1ZT0iMSIvPgorICAgICAgIDwvcHJvcGVydGllcz4KKyAgICAgPC90ZXN0Y2FzZT4K
KyAgPC90ZXN0c3VpdGU+CisgIDx0ZXN0c3VpdGUgbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0
IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9Iioi
PgorICAgIDx0ZXN0Y2FzZSBuYW1lPSJBbm90aGVyVGVzdFRoYXRIYXNWYWx1ZVBhcmFtQXR0cmli
dXRlLzEiIHZhbHVlX3BhcmFtPSI0MiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0i
U2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiAvPgorICA8L3Rlc3RzdWl0ZT4KKzwvdGVzdHN1aXRlcz4i
IiIKIAogRVhQRUNURURfRU1QVFlfWE1MID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0iVVRGLTgiPz4KLTx0ZXN0c3VpdGVzIHRlc3RzPSIwIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9
IjAiIGVycm9ycz0iMCIgdGltZT0iKiIgbmFtZT0iQWxsVGVzdHMiPgorPHRlc3RzdWl0ZXMgdGVz
dHM9IjAiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIgorICAg
ICAgICAgICAgdGltZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0cyI+CiA8L3Rlc3RzdWl0ZXM+IiIi
CiAKK0dURVNUX1BST0dSQU1fUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFi
bGVQYXRoKEdURVNUX1BST0dSQU1fTkFNRSkKKworU1VQUE9SVFNfVFlQRURfVEVTVFMgPSAnVHlw
ZWRUZXN0JyBpbiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCisgICAgW0dURVNUX1BST0dS
QU1fUEFUSCwgR1RFU1RfTElTVF9URVNUU19GTEFHXSwgY2FwdHVyZV9zdGRlcnI9RmFsc2UpLm91
dHB1dAorCiAKIGNsYXNzIEdUZXN0WE1MT3V0cHV0VW5pdFRlc3QoZ3Rlc3RfeG1sX3Rlc3RfdXRp
bHMuR1Rlc3RYTUxUZXN0Q2FzZSk6CiAgICIiIgogICBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0
J3MgWE1MIG91dHB1dCBmdW5jdGlvbmFsaXR5LgogICAiIiIKIAotICBkZWYgdGVzdE5vbkVtcHR5
WG1sT3V0cHV0KHNlbGYpOgotICAgICIiIgotICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBn
ZW5lcmF0ZXMgYSBub24tZW1wdHkgWE1MIG91dHB1dCwgYW5kCi0gICAgdGVzdHMgdGhhdCB0aGUg
WE1MIG91dHB1dCBpcyBleHBlY3RlZC4KLSAgICAiIiIKLSAgICBzZWxmLl9UZXN0WG1sT3V0cHV0
KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQRUNURURfTk9OX0VNUFRZX1hNTCwgMSkKKyAgIyBUaGlz
IHRlc3QgY3VycmVudGx5IGJyZWFrcyBvbiBwbGF0Zm9ybXMgdGhhdCBkbyBub3Qgc3VwcG9ydCB0
eXBlZCBhbmQKKyAgIyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIHNvIHdlIGRvbid0IHJ1biBp
dCB1bmRlciB0aGVtLgorICBpZiBTVVBQT1JUU19UWVBFRF9URVNUUzoKKyAgICBkZWYgdGVzdE5v
bkVtcHR5WG1sT3V0cHV0KHNlbGYpOgorICAgICAgIiIiCisgICAgICBSdW5zIGEgdGVzdCBwcm9n
cmFtIHRoYXQgZ2VuZXJhdGVzIGEgbm9uLWVtcHR5IFhNTCBvdXRwdXQsIGFuZAorICAgICAgdGVz
dHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBleHBlY3RlZC4KKyAgICAgICIiIgorICAgICAgc2Vs
Zi5fVGVzdFhtbE91dHB1dChHVEVTVF9QUk9HUkFNX05BTUUsIEVYUEVDVEVEX05PTl9FTVBUWV9Y
TUwsIDEpCiAKICAgZGVmIHRlc3RFbXB0eVhtbE91dHB1dChzZWxmKToKLSAgICAiIiIKKyAgICAi
IiJWZXJpZmllcyBYTUwgb3V0cHV0IGZvciBhIEdvb2dsZSBUZXN0IGJpbmFyeSB3aXRob3V0IGFj
dHVhbCB0ZXN0cy4KKwogICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4g
ZW1wdHkgWE1MIG91dHB1dCwgYW5kCiAgICAgdGVzdHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBl
eHBlY3RlZC4KICAgICAiIiIKIAotICAgIHNlbGYuX1Rlc3RYbWxPdXRwdXQoImd0ZXN0X25vX3Rl
c3RfdW5pdHRlc3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNURURfRU1QVFlfWE1M
LCAwKQorICAgIHNlbGYuX1Rlc3RYbWxPdXRwdXQoJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnLCBF
WFBFQ1RFRF9FTVBUWV9YTUwsIDApCisKKyAgZGVmIHRlc3RUaW1lc3RhbXBWYWx1ZShzZWxmKToK
KyAgICAiIiJDaGVja3Mgd2hldGhlciB0aGUgdGltZXN0YW1wIGF0dHJpYnV0ZSBpbiB0aGUgWE1M
IG91dHB1dCBpcyB2YWxpZC4KKworICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0
ZXMgYW4gZW1wdHkgWE1MIG91dHB1dCwgYW5kIGNoZWNrcyBpZgorICAgIHRoZSB0aW1lc3RhbXAg
YXR0cmlidXRlIGluIHRoZSB0ZXN0c3VpdGVzIHRhZyBpcyB2YWxpZC4KKyAgICAiIiIKKyAgICBh
Y3R1YWwgPSBzZWxmLl9HZXRYbWxPdXRwdXQoJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnLCBbXSwg
e30sIDApCisgICAgZGF0ZV90aW1lX3N0ciA9IGFjdHVhbC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0
cmlidXRlTm9kZSgndGltZXN0YW1wJykudmFsdWUKKyAgICAjIGRhdGV0aW1lLnN0cnB0aW1lKCkg
aXMgb25seSBhdmFpbGFibGUgaW4gUHl0aG9uIDIuNSsgc28gd2UgaGF2ZSB0bworICAgICMgcGFy
c2UgdGhlIGV4cGVjdGVkIGRhdGV0aW1lIG1hbnVhbGx5LgorICAgIG1hdGNoID0gcmUubWF0Y2go
cicoXGQrKS0oXGRcZCktKFxkXGQpVChcZFxkKTooXGRcZCk6KFxkXGQpJywgZGF0ZV90aW1lX3N0
cikKKyAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgIHJlLm1hdGNoLAorICAgICAgICAnWE1M
IGRhdGV0dGltZSBzdHJpbmcgJXMgaGFzIGluY29ycmVjdCBmb3JtYXQnICUgZGF0ZV90aW1lX3N0
cikKKyAgICBkYXRlX3RpbWVfZnJvbV94bWwgPSBkYXRldGltZS5kYXRldGltZSgKKyAgICAgICAg
eWVhcj1pbnQobWF0Y2guZ3JvdXAoMSkpLCBtb250aD1pbnQobWF0Y2guZ3JvdXAoMikpLAorICAg
ICAgICBkYXk9aW50KG1hdGNoLmdyb3VwKDMpKSwgaG91cj1pbnQobWF0Y2guZ3JvdXAoNCkpLAor
ICAgICAgICBtaW51dGU9aW50KG1hdGNoLmdyb3VwKDUpKSwgc2Vjb25kPWludChtYXRjaC5ncm91
cCg2KSkpCisKKyAgICB0aW1lX2RlbHRhID0gYWJzKGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpIC0g
ZGF0ZV90aW1lX2Zyb21feG1sKQorICAgICMgdGltZXN0YW1wIHZhbHVlIHNob3VsZCBiZSBuZWFy
IHRoZSBjdXJyZW50IGxvY2FsIHRpbWUKKyAgICBzZWxmLmFzc2VydFRydWUodGltZV9kZWx0YSA8
IGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPTYwMCksCisgICAgICAgICAgICAgICAgICAgICd0
aW1lX2RlbHRhIGlzICVzJyAlIHRpbWVfZGVsdGEpCisgICAgYWN0dWFsLnVubGluaygpCiAKICAg
ZGVmIHRlc3REZWZhdWx0T3V0cHV0RmlsZShzZWxmKToKICAgICAiIiIKQEAgLTE0Miw3ICsyNjMs
NyBAQCBjbGFzcyBHVGVzdFhNTE91dHB1dFVuaXRUZXN0KGd0ZXN0X3htbF90ZXN0X3V0aWxzLkdU
ZXN0WE1MVGVzdENhc2UpOgogICAgIG91dHB1dF9maWxlID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rl
c3RfdXRpbHMuR2V0VGVtcERpcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdU
RVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUpCiAgICAgZ3Rlc3RfcHJvZ19wYXRoID0gZ3Rlc3RfdGVz
dF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCi0gICAgICAgICJndGVzdF9ub190ZXN0X3Vu
aXR0ZXN0IikKKyAgICAgICAgJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnKQogICAgIHRyeToKICAg
ICAgIG9zLnJlbW92ZShvdXRwdXRfZmlsZSkKICAgICBleGNlcHQgT1NFcnJvciwgZToKQEAgLTE1
MCw3ICsyNzEsNyBAQCBjbGFzcyBHVGVzdFhNTE91dHB1dFVuaXRUZXN0KGd0ZXN0X3htbF90ZXN0
X3V0aWxzLkdUZXN0WE1MVGVzdENhc2UpOgogICAgICAgICByYWlzZQogCiAgICAgcCA9IGd0ZXN0
X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKLSAgICAgICAgW2d0ZXN0X3Byb2dfcGF0aCwgIiVzPXht
bCIgJSBHVEVTVF9PVVRQVVRfRkxBR10sCisgICAgICAgIFtndGVzdF9wcm9nX3BhdGgsICclcz14
bWwnICUgR1RFU1RfT1VUUFVUX0ZMQUddLAogICAgICAgICB3b3JraW5nX2Rpcj1ndGVzdF90ZXN0
X3V0aWxzLkdldFRlbXBEaXIoKSkKICAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCiAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoMCwgcC5leGl0X2NvZGUpCkBAIC0xNjMsNjAgKzI4NCw5OCBAQCBjbGFz
cyBHVGVzdFhNTE91dHB1dFVuaXRUZXN0KGd0ZXN0X3htbF90ZXN0X3V0aWxzLkdUZXN0WE1MVGVz
dENhc2UpOgogICAgICIiIgogCiAgICAgeG1sX3BhdGggPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVz
dF91dGlscy5HZXRUZW1wRGlyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1Rf
UFJPR1JBTV9OQU1FICsgIm91dC54bWwiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdU
RVNUX1BST0dSQU1fTkFNRSArICdvdXQueG1sJykKICAgICBpZiBvcy5wYXRoLmlzZmlsZSh4bWxf
cGF0aCk6CiAgICAgICBvcy5yZW1vdmUoeG1sX3BhdGgpCiAKLSAgICBndGVzdF9wcm9nX3BhdGgg
PSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aChHVEVTVF9QUk9HUkFNX05B
TUUpCi0KLSAgICBjb21tYW5kID0gW2d0ZXN0X3Byb2dfcGF0aCwKLSAgICAgICAgICAgICAgICIl
cz14bWw6JXMiICUgKEdURVNUX09VVFBVVF9GTEFHLCB4bWxfcGF0aCksCi0gICAgICAgICAgICAg
ICAiLS1zaHV0X2Rvd25feG1sIl0KKyAgICBjb21tYW5kID0gW0dURVNUX1BST0dSQU1fUEFUSCwK
KyAgICAgICAgICAgICAgICclcz14bWw6JXMnICUgKEdURVNUX09VVFBVVF9GTEFHLCB4bWxfcGF0
aCksCisgICAgICAgICAgICAgICAnLS1zaHV0X2Rvd25feG1sJ10KICAgICBwID0gZ3Rlc3RfdGVz
dF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCiAgICAgaWYgcC50ZXJtaW5hdGVkX2J5X3NpZ25h
bDoKLSAgICAgIHNlbGYuYXNzZXJ0XyhGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAiJXMgd2Fz
IGtpbGxlZCBieSBzaWduYWwgJWQiICUgKGd0ZXN0X3Byb2dfbmFtZSwgcC5zaWduYWwpKQorICAg
ICAgIyBwLnNpZ25hbCBpcyBhdmFpbGFibGUgb25seSBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFs
IGlzIFRydWUuCisgICAgICBzZWxmLmFzc2VydEZhbHNlKAorICAgICAgICAgIHAudGVybWluYXRl
ZF9ieV9zaWduYWwsCisgICAgICAgICAgJyVzIHdhcyBraWxsZWQgYnkgc2lnbmFsICVkJyAlIChH
VEVTVF9QUk9HUkFNX05BTUUsIHAuc2lnbmFsKSkKICAgICBlbHNlOgogICAgICAgc2VsZi5hc3Nl
cnRfKHAuZXhpdGVkKQogICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwgcC5leGl0X2NvZGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyBleGl0ZWQgd2l0aCBjb2RlICVzLCB3aGljaCBk
b2Vzbid0IG1hdGNoICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZXhwZWN0ZWQgZXhp
dCBjb2RlICVzLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgZXhwZWN0ZWQgZXhpdCBj
b2RlICVzLicKICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvbW1hbmQsIHAuZXhpdF9jb2Rl
LCAxKSkKIAogICAgIHNlbGYuYXNzZXJ0Xyhub3Qgb3MucGF0aC5pc2ZpbGUoeG1sX3BhdGgpKQog
CisgIGRlZiB0ZXN0RmlsdGVyZWRUZXN0WG1sT3V0cHV0KHNlbGYpOgorICAgICIiIlZlcmlmaWVz
IFhNTCBvdXRwdXQgd2hlbiBhIGZpbHRlciBpcyBhcHBsaWVkLgogCi0gIGRlZiBfVGVzdFhtbE91
dHB1dChzZWxmLCBndGVzdF9wcm9nX25hbWUsIGV4cGVjdGVkX3htbCwgZXhwZWN0ZWRfZXhpdF9j
b2RlKToKKyAgICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRoYXQgZXhlY3V0ZXMgb25seSBzb21lIHRl
c3RzIGFuZCB2ZXJpZmllcyB0aGF0CisgICAgbm9uLXNlbGVjdGVkIHRlc3RzIGRvIG5vdCBzaG93
IHVwIGluIHRoZSBYTUwgb3V0cHV0LgogICAgICIiIgotICAgIEFzc2VydHMgdGhhdCB0aGUgWE1M
IGRvY3VtZW50IGdlbmVyYXRlZCBieSBydW5uaW5nIHRoZSBwcm9ncmFtCi0gICAgZ3Rlc3RfcHJv
Z19uYW1lIG1hdGNoZXMgZXhwZWN0ZWRfeG1sLCBhIHN0cmluZyBjb250YWluaW5nIGFub3RoZXIK
LSAgICBYTUwgZG9jdW1lbnQuICBGdXJ0aGVybW9yZSwgdGhlIHByb2dyYW0ncyBleGl0IGNvZGUg
bXVzdCBiZQotICAgIGV4cGVjdGVkX2V4aXRfY29kZS4KKworICAgIHNlbGYuX1Rlc3RYbWxPdXRw
dXQoR1RFU1RfUFJPR1JBTV9OQU1FLCBFWFBFQ1RFRF9GSUxURVJFRF9URVNUX1hNTCwgMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2FyZ3M9Wyclcz1TdWNjZXNzZnVsVGVzdC4qJyAl
IEdURVNUX0ZJTFRFUl9GTEFHXSkKKworICBkZWYgdGVzdFNoYXJkZWRUZXN0WG1sT3V0cHV0KHNl
bGYpOgorICAgICIiIlZlcmlmaWVzIFhNTCBvdXRwdXQgd2hlbiBydW4gdXNpbmcgbXVsdGlwbGUg
c2hhcmRzLgorCisgICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGV4ZWN1dGVzIG9ubHkgb25l
IHNoYXJkIGFuZCB2ZXJpZmllcyB0aGF0IHRlc3RzCisgICAgZnJvbSBvdGhlciBzaGFyZHMgZG8g
bm90IHNob3cgdXAgaW4gdGhlIFhNTCBvdXRwdXQuCisgICAgIiIiCisKKyAgICBzZWxmLl9UZXN0
WG1sT3V0cHV0KAorICAgICAgICBHVEVTVF9QUk9HUkFNX05BTUUsCisgICAgICAgIEVYUEVDVEVE
X1NIQVJERURfVEVTVF9YTUwsCisgICAgICAgIDAsCisgICAgICAgIGV4dHJhX2Vudj17U0hBUkRf
SU5ERVhfRU5WX1ZBUjogJzAnLAorICAgICAgICAgICAgICAgICAgIFRPVEFMX1NIQVJEU19FTlZf
VkFSOiAnMTAnfSkKKworICBkZWYgX0dldFhtbE91dHB1dChzZWxmLCBndGVzdF9wcm9nX25hbWUs
IGV4dHJhX2FyZ3MsIGV4dHJhX2VudiwKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXhp
dF9jb2RlKToKKyAgICAiIiIKKyAgICBSZXR1cm5zIHRoZSB4bWwgb3V0cHV0IGdlbmVyYXRlZCBi
eSBydW5uaW5nIHRoZSBwcm9ncmFtIGd0ZXN0X3Byb2dfbmFtZS4KKyAgICBGdXJ0aGVybW9yZSwg
dGhlIHByb2dyYW0ncyBleGl0IGNvZGUgbXVzdCBiZSBleHBlY3RlZF9leGl0X2NvZGUuCiAgICAg
IiIiCiAgICAgeG1sX3BhdGggPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1w
RGlyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Rlc3RfcHJvZ19uYW1lICsgIm91
dC54bWwiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0ZXN0X3Byb2dfbmFtZSArICdv
dXQueG1sJykKICAgICBndGVzdF9wcm9nX3BhdGggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RF
eGVjdXRhYmxlUGF0aChndGVzdF9wcm9nX25hbWUpCiAKLSAgICBjb21tYW5kID0gW2d0ZXN0X3By
b2dfcGF0aCwgIiVzPXhtbDolcyIgJSAoR1RFU1RfT1VUUFVUX0ZMQUcsIHhtbF9wYXRoKV0KLSAg
ICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCisgICAgY29tbWFuZCA9
IChbZ3Rlc3RfcHJvZ19wYXRoLCAnJXM9eG1sOiVzJyAlIChHVEVTVF9PVVRQVVRfRkxBRywgeG1s
X3BhdGgpXSArCisgICAgICAgICAgICAgICBleHRyYV9hcmdzKQorICAgIGVudmlyb25fY29weSA9
IG9zLmVudmlyb24uY29weSgpCisgICAgaWYgZXh0cmFfZW52OgorICAgICAgZW52aXJvbl9jb3B5
LnVwZGF0ZShleHRyYV9lbnYpCisgICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhj
b21tYW5kLCBlbnY9ZW52aXJvbl9jb3B5KQorCiAgICAgaWYgcC50ZXJtaW5hdGVkX2J5X3NpZ25h
bDoKICAgICAgIHNlbGYuYXNzZXJ0XyhGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAiJXMgd2Fz
IGtpbGxlZCBieSBzaWduYWwgJWQiICUgKGd0ZXN0X3Byb2dfbmFtZSwgcC5zaWduYWwpKQorICAg
ICAgICAgICAgICAgICAgICclcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAlZCcgJSAoZ3Rlc3RfcHJv
Z19uYW1lLCBwLnNpZ25hbCkpCiAgICAgZWxzZToKICAgICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRl
ZCkKICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX2V4aXRfY29kZSwgcC5leGl0X2Nv
ZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyBleGl0ZWQgd2l0aCBjb2RlICVzLCB3
aGljaCBkb2Vzbid0IG1hdGNoICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZXhwZWN0
ZWQgZXhpdCBjb2RlICVzLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgZXhwZWN0ZWQg
ZXhpdCBjb2RlICVzLicKICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvbW1hbmQsIHAuZXhp
dF9jb2RlLCBleHBlY3RlZF9leGl0X2NvZGUpKQorICAgIGFjdHVhbCA9IG1pbmlkb20ucGFyc2Uo
eG1sX3BhdGgpCisgICAgcmV0dXJuIGFjdHVhbAogCisgIGRlZiBfVGVzdFhtbE91dHB1dChzZWxm
LCBndGVzdF9wcm9nX25hbWUsIGV4cGVjdGVkX3htbCwKKyAgICAgICAgICAgICAgICAgICAgIGV4
cGVjdGVkX2V4aXRfY29kZSwgZXh0cmFfYXJncz1Ob25lLCBleHRyYV9lbnY9Tm9uZSk6CisgICAg
IiIiCisgICAgQXNzZXJ0cyB0aGF0IHRoZSBYTUwgZG9jdW1lbnQgZ2VuZXJhdGVkIGJ5IHJ1bm5p
bmcgdGhlIHByb2dyYW0KKyAgICBndGVzdF9wcm9nX25hbWUgbWF0Y2hlcyBleHBlY3RlZF94bWws
IGEgc3RyaW5nIGNvbnRhaW5pbmcgYW5vdGhlcgorICAgIFhNTCBkb2N1bWVudC4gIEZ1cnRoZXJt
b3JlLCB0aGUgcHJvZ3JhbSdzIGV4aXQgY29kZSBtdXN0IGJlCisgICAgZXhwZWN0ZWRfZXhpdF9j
b2RlLgorICAgICIiIgorCisgICAgYWN0dWFsID0gc2VsZi5fR2V0WG1sT3V0cHV0KGd0ZXN0X3By
b2dfbmFtZSwgZXh0cmFfYXJncyBvciBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXh0cmFfZW52IG9yIHt9LCBleHBlY3RlZF9leGl0X2NvZGUpCiAgICAgZXhwZWN0ZWQgPSBt
aW5pZG9tLnBhcnNlU3RyaW5nKGV4cGVjdGVkX3htbCkKLSAgICBhY3R1YWwgICA9IG1pbmlkb20u
cGFyc2UoeG1sX3BhdGgpCiAgICAgc2VsZi5Ob3JtYWxpemVYbWwoYWN0dWFsLmRvY3VtZW50RWxl
bWVudCkKICAgICBzZWxmLkFzc2VydEVxdWl2YWxlbnROb2RlcyhleHBlY3RlZC5kb2N1bWVudEVs
ZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsLmRvY3VtZW50RWxl
bWVudCkKICAgICBleHBlY3RlZC51bmxpbmsoKQotICAgIGFjdHVhbCAgLnVubGluaygpCi0KKyAg
ICBhY3R1YWwudW5saW5rKCkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0
ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91
bml0dGVzdF8uY2MKaW5kZXggZmMwN2VmNDZiZDY2N2FhOTJlNWRhZjdmMjAyZWZjZDc2MzY2YmY4
YS4uMmVlODgzODAwNWVlZWMyMzU3MWJhZTM4OWM3OTI2OThjMzBjNGQ1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5j
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5p
dHRlc3RfLmNjCkBAIC0yNyw4ICsyNyw2IEBACiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIC8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKLS8vIEF1dGhvcjogZWVmYWNtQGdtYWlsLmNvbSAoU2VhbiBNY2FmZWUpCi0KIC8vIFVu
aXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QgWE1MIG91dHB1dC4KIC8vCiAvLyBBIHVzZXIgY2FuIHNw
ZWNpZnkgWE1MIG91dHB1dCBpbiBhIEdvb2dsZSBUZXN0IHByb2dyYW0gdG8gcnVuIHZpYQpAQCAt
MzgsMTMgKzM2LDE2IEBACiAvLyBUaGlzIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQ
eXRob24gdW5pdCB0ZXN0LiAgRG9uJ3QgcnVuIGl0CiAvLyBkaXJlY3RseS4KIAotI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogdXNpbmcgOjp0ZXN0
aW5nOjpJbml0R29vZ2xlVGVzdDsKIHVzaW5nIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJz
OwordXNpbmcgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtOwogdXNpbmcgOjp0ZXN0aW5nOjpVbml0
VGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6VGVzdDsKK3VzaW5nIDo6dGVzdGluZzo6VmFsdWVzOwog
Ci1jbGFzcyBTdWNjZXNzZnVsVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIFN1
Y2Nlc3NmdWxUZXN0IDogcHVibGljIFRlc3QgewogfTsKIAogVEVTVF9GKFN1Y2Nlc3NmdWxUZXN0
LCBTdWNjZWVkcykgewpAQCAtNTIsMTQgKzUzLDE0IEBAIFRFU1RfRihTdWNjZXNzZnVsVGVzdCwg
U3VjY2VlZHMpIHsKICAgQVNTRVJUX0VRKDEsIDEpOwogfQogCi1jbGFzcyBGYWlsZWRUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgRmFpbGVkVGVzdCA6IHB1YmxpYyBUZXN0IHsK
IH07CiAKIFRFU1RfRihGYWlsZWRUZXN0LCBGYWlscykgewogICBBU1NFUlRfRVEoMSwgMik7CiB9
CiAKLWNsYXNzIERpc2FibGVkVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIERp
c2FibGVkVGVzdCA6IHB1YmxpYyBUZXN0IHsKIH07CiAKIFRFU1RfRihEaXNhYmxlZFRlc3QsIERJ
U0FCTEVEX3Rlc3Rfbm90X3J1bikgewpAQCAtOTEsNyArOTIsMTAgQEAgVEVTVChJbnZhbGlkQ2hh
cmFjdGVyc1Rlc3QsIEludmFsaWRDaGFyYWN0ZXJzSW5NZXNzYWdlKSB7CiAgIEZBSUwoKSA8PCAi
SW52YWxpZCBjaGFyYWN0ZXJzIGluIGJyYWNrZXRzIFtceDFceDJdIjsKIH0KIAotY2xhc3MgUHJv
cGVydHlSZWNvcmRpbmdUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgUHJvcGVy
dHlSZWNvcmRpbmdUZXN0IDogcHVibGljIFRlc3QgeworIHB1YmxpYzoKKyAgc3RhdGljIHZvaWQg
U2V0VXBUZXN0Q2FzZSgpIHsgUmVjb3JkUHJvcGVydHkoIlNldFVwVGVzdENhc2UiLCAieWVzIik7
IH0KKyAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsgUmVjb3JkUHJvcGVydHkoIlRl
YXJEb3duVGVzdENhc2UiLCAiYXllIik7IH0KIH07CiAKIFRFU1RfRihQcm9wZXJ0eVJlY29yZGlu
Z1Rlc3QsIE9uZVByb3BlcnR5KSB7CkBAIC0xMTcsMTIgKzEyMSwxMiBAQCBURVNUKE5vRml4dHVy
ZVRlc3QsIFJlY29yZFByb3BlcnR5KSB7CiAgIFJlY29yZFByb3BlcnR5KCJrZXkiLCAiMSIpOwog
fQogCi12b2lkIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFByb3BlcnR5KGNvbnN0IGNo
YXIqIGtleSwgaW50IHZhbHVlKSB7Cit2b2lkIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29y
ZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGludCB2YWx1ZSkgewogICB0ZXN0aW5n
OjpUZXN0OjpSZWNvcmRQcm9wZXJ0eShrZXksIHZhbHVlKTsKIH0KIAotdm9pZCBFeHRlcm5hbFV0
aWxpdHlUaGF0Q2FsbHNSZWNvcmRQcm9wZXJ0eShjb25zdCBjaGFyKiBrZXksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHZhbHVlKSB7Cit2
b2lkIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3Ry
aW5nJiBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkgewogICB0ZXN0aW5nOjpUZXN0OjpSZWNvcmRQcm9wZXJ0
eShrZXksIHZhbHVlKTsKIH0KIApAQCAtMTM0LDYgKzEzOCwzNSBAQCBURVNUKE5vRml4dHVyZVRl
c3QsIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFN0cmluZ1ZhbHVlZFByb3BlcnR5KSB7
CiAgIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFByb3BlcnR5KCJrZXlfZm9yX3V0aWxp
dHlfc3RyaW5nIiwgIjEiKTsKIH0KIAorLy8gVmVyaWZpZXMgdGhhdCB0aGUgdGVzdCBwYXJhbWV0
ZXIgdmFsdWUgaXMgb3V0cHV0IGluIHRoZSAndmFsdWVfcGFyYW0nCisvLyBYTUwgYXR0cmlidXRl
IGZvciB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgorY2xhc3MgVmFsdWVQYXJhbVRlc3QgOiBw
dWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHt9OworVEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBIYXNW
YWx1ZVBhcmFtQXR0cmlidXRlKSB7fQorVEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBBbm90aGVyVGVz
dFRoYXRIYXNWYWx1ZVBhcmFtQXR0cmlidXRlKSB7fQorSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ao
U2luZ2xlLCBWYWx1ZVBhcmFtVGVzdCwgVmFsdWVzKDMzLCA0MikpOworCisjaWYgR1RFU1RfSEFT
X1RZUEVEX1RFU1QKKy8vIFZlcmlmaWVzIHRoYXQgdGhlIHR5cGUgcGFyYW1ldGVyIG5hbWUgaXMg
b3V0cHV0IGluIHRoZSAndHlwZV9wYXJhbScKKy8vIFhNTCBhdHRyaWJ1dGUgZm9yIHR5cGVkIHRl
c3RzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFR5cGVkVGVzdCA6IHB1YmxpYyBUZXN0
IHt9OwordHlwZWRlZiB0ZXN0aW5nOjpUeXBlczxpbnQsIGxvbmc+IFR5cGVkVGVzdFR5cGVzOwor
VFlQRURfVEVTVF9DQVNFKFR5cGVkVGVzdCwgVHlwZWRUZXN0VHlwZXMpOworVFlQRURfVEVTVChU
eXBlZFRlc3QsIEhhc1R5cGVQYXJhbUF0dHJpYnV0ZSkge30KKyNlbmRpZgorCisjaWYgR1RFU1Rf
SEFTX1RZUEVEX1RFU1RfUAorLy8gVmVyaWZpZXMgdGhhdCB0aGUgdHlwZSBwYXJhbWV0ZXIgbmFt
ZSBpcyBvdXRwdXQgaW4gdGhlICd0eXBlX3BhcmFtJworLy8gWE1MIGF0dHJpYnV0ZSBmb3IgdHlw
ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFR5cGVQ
YXJhbWV0ZXJpemVkVGVzdENhc2UgOiBwdWJsaWMgVGVzdCB7fTsKK1RZUEVEX1RFU1RfQ0FTRV9Q
KFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UpOworVFlQRURfVEVTVF9QKFR5cGVQYXJhbWV0ZXJp
emVkVGVzdENhc2UsIEhhc1R5cGVQYXJhbUF0dHJpYnV0ZSkge30KK1JFR0lTVEVSX1RZUEVEX1RF
U1RfQ0FTRV9QKFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UsIEhhc1R5cGVQYXJhbUF0dHJpYnV0
ZSk7Cit0eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPGludCwgbG9uZz4gVHlwZVBhcmFtZXRlcml6ZWRU
ZXN0Q2FzZVR5cGVzOworSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoU2luZ2xlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2VUeXBl
cyk7CisjZW5kaWYKKwogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CiAgIEluaXRH
b29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKIApAQCAtMTQxLDUgKzE3NCw2IEBAIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyKiogYXJndikgewogICAgIFRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJz
ID0gVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpOwogICAgIGRlbGV0ZSBsaXN0
ZW5lcnMuUmVsZWFzZShsaXN0ZW5lcnMuZGVmYXVsdF94bWxfZ2VuZXJhdG9yKCkpOwogICB9Cisg
IHRlc3Rpbmc6OlRlc3Q6OlJlY29yZFByb3BlcnR5KCJhZF9ob2NfcHJvcGVydHkiLCAiNDIiKTsK
ICAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC90ZXN0L2d0ZXN0X3htbF90ZXN0X3V0aWxzLnB5CmluZGV4IGM4M2MzYjdlYTc5YjJk
NzYyZWVkNjY1ZTJkNjFkZjhiOWVhMDg0NDMuLjFlMDM1ODU5MmZiMDA4NGYwYTg5YzM0MzZmZjc1
MTc0ODY4MjdhY2QgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvZ3Rl
c3RfeG1sX3Rlc3RfdXRpbHMucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9n
dGVzdF94bWxfdGVzdF91dGlscy5weQpAQCAtMSw1ICsxLDMgQEAKLSMhL3Vzci9iaW4vZW52IHB5
dGhvbgotIwogIyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KICMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICMKQEAgLTMxLDE2ICsyOSwxMSBAQAogCiAiIiJVbml0IHRlc3QgdXRpbGl0aWVzIGZv
ciBndGVzdF94bWxfb3V0cHV0IiIiCiAKLV9fYXV0aG9yX18gPSAnZWVmYWNtQGdtYWlsLmNvbSAo
U2VhbiBNY2FmZWUpJwotCiBpbXBvcnQgcmUKIGZyb20geG1sLmRvbSBpbXBvcnQgbWluaWRvbSwg
Tm9kZQotCiBpbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwogCi0KLUdURVNUX09VVFBVVF9GTEFHICAg
ICAgICAgPSAiLS1ndGVzdF9vdXRwdXQiCi1HVEVTVF9ERUZBVUxUX09VVFBVVF9GSUxFID0gInRl
c3RfZGV0YWlsLnhtbCIKK0dURVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUgPSAndGVzdF9kZXRhaWwu
eG1sJwogCiBjbGFzcyBHVGVzdFhNTFRlc3RDYXNlKGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2Up
OgogICAiIiIKQEAgLTU4LDggKzUxLDkgQEAgY2xhc3MgR1Rlc3RYTUxUZXN0Q2FzZShndGVzdF90
ZXN0X3V0aWxzLlRlc3RDYXNlKToKICAgICAqICBJdCBoYXMgdGhlIHNhbWUgdGFnIG5hbWUgYXMg
ZXhwZWN0ZWRfbm9kZS4KICAgICAqICBJdCBoYXMgdGhlIHNhbWUgc2V0IG9mIGF0dHJpYnV0ZXMg
YXMgZXhwZWN0ZWRfbm9kZSwgZWFjaCB3aXRoCiAgICAgICAgdGhlIHNhbWUgdmFsdWUgYXMgdGhl
IGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIG9mIGV4cGVjdGVkX25vZGUuCi0gICAgICAgQW4gZXhj
ZXB0aW9uIGlzIGFueSBhdHRyaWJ1dGUgbmFtZWQgInRpbWUiLCB3aGljaCBuZWVkcyBvbmx5IGJl
Ci0gICAgICAgY29udmVydGlibGUgdG8gYSBmbG9hdGluZy1wb2ludCBudW1iZXIuCisgICAgICAg
RXhjZXB0aW9ucyBhcmUgYW55IGF0dHJpYnV0ZSBuYW1lZCAidGltZSIsIHdoaWNoIG5lZWRzIG9u
bHkgYmUKKyAgICAgICBjb252ZXJ0aWJsZSB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBhbmQg
YW55IGF0dHJpYnV0ZSBuYW1lZAorICAgICAgICJ0eXBlX3BhcmFtIiB3aGljaCBvbmx5IGhhcyB0
byBiZSBub24tZW1wdHkuCiAgICAgKiAgSXQgaGFzIGFuIGVxdWl2YWxlbnQgc2V0IG9mIGNoaWxk
IG5vZGVzIChpbmNsdWRpbmcgZWxlbWVudHMgYW5kCiAgICAgICAgQ0RBVEEgc2VjdGlvbnMpIGFz
IGV4cGVjdGVkX25vZGUuICBOb3RlIHRoYXQgd2UgaWdub3JlIHRoZQogICAgICAgIG9yZGVyIG9m
IHRoZSBjaGlsZHJlbiBhcyB0aGV5IGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSBpbiBhbnkKQEAg
LTc5LDIzICs3MywyNyBAQCBjbGFzcyBHVGVzdFhNTFRlc3RDYXNlKGd0ZXN0X3Rlc3RfdXRpbHMu
VGVzdENhc2UpOgogICAgIGFjdHVhbF9hdHRyaWJ1dGVzICAgPSBhY3R1YWxfbm9kZSAgLmF0dHJp
YnV0ZXMKICAgICBzZWxmLmFzc2VydEVxdWFscygKICAgICAgICAgZXhwZWN0ZWRfYXR0cmlidXRl
cy5sZW5ndGgsIGFjdHVhbF9hdHRyaWJ1dGVzLmxlbmd0aCwKLSAgICAgICAgImF0dHJpYnV0ZSBu
dW1iZXJzIGRpZmZlciBpbiBlbGVtZW50ICIgKyBhY3R1YWxfbm9kZS50YWdOYW1lKQorICAgICAg
ICAnYXR0cmlidXRlIG51bWJlcnMgZGlmZmVyIGluIGVsZW1lbnQgJXM6XG5FeHBlY3RlZDogJXJc
bkFjdHVhbDogJXInICUgKAorICAgICAgICAgICAgYWN0dWFsX25vZGUudGFnTmFtZSwgZXhwZWN0
ZWRfYXR0cmlidXRlcy5rZXlzKCksCisgICAgICAgICAgICBhY3R1YWxfYXR0cmlidXRlcy5rZXlz
KCkpKQogICAgIGZvciBpIGluIHJhbmdlKGV4cGVjdGVkX2F0dHJpYnV0ZXMubGVuZ3RoKToKICAg
ICAgIGV4cGVjdGVkX2F0dHIgPSBleHBlY3RlZF9hdHRyaWJ1dGVzLml0ZW0oaSkKICAgICAgIGFj
dHVhbF9hdHRyICAgPSBhY3R1YWxfYXR0cmlidXRlcy5nZXQoZXhwZWN0ZWRfYXR0ci5uYW1lKQog
ICAgICAgc2VsZi5hc3NlcnRfKAogICAgICAgICAgIGFjdHVhbF9hdHRyIGlzIG5vdCBOb25lLAot
ICAgICAgICAgICJleHBlY3RlZCBhdHRyaWJ1dGUgJXMgbm90IGZvdW5kIGluIGVsZW1lbnQgJXMi
ICUKKyAgICAgICAgICAnZXhwZWN0ZWQgYXR0cmlidXRlICVzIG5vdCBmb3VuZCBpbiBlbGVtZW50
ICVzJyAlCiAgICAgICAgICAgKGV4cGVjdGVkX2F0dHIubmFtZSwgYWN0dWFsX25vZGUudGFnTmFt
ZSkpCi0gICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZF9hdHRyLnZhbHVlLCBhY3R1YWxf
YXR0ci52YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICIgdmFsdWVzIG9mIGF0dHJpYnV0
ZSAlcyBpbiBlbGVtZW50ICVzIGRpZmZlciIgJQotICAgICAgICAgICAgICAgICAgICAgICAgKGV4
cGVjdGVkX2F0dHIubmFtZSwgYWN0dWFsX25vZGUudGFnTmFtZSkpCisgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygKKyAgICAgICAgICBleHBlY3RlZF9hdHRyLnZhbHVlLCBhY3R1YWxfYXR0ci52YWx1
ZSwKKyAgICAgICAgICAnIHZhbHVlcyBvZiBhdHRyaWJ1dGUgJXMgaW4gZWxlbWVudCAlcyBkaWZm
ZXI6ICVzIHZzICVzJyAlCisgICAgICAgICAgKGV4cGVjdGVkX2F0dHIubmFtZSwgYWN0dWFsX25v
ZGUudGFnTmFtZSwKKyAgICAgICAgICAgZXhwZWN0ZWRfYXR0ci52YWx1ZSwgYWN0dWFsX2F0dHIu
dmFsdWUpKQogCiAgICAgZXhwZWN0ZWRfY2hpbGRyZW4gPSBzZWxmLl9HZXRDaGlsZHJlbihleHBl
Y3RlZF9ub2RlKQogICAgIGFjdHVhbF9jaGlsZHJlbiA9IHNlbGYuX0dldENoaWxkcmVuKGFjdHVh
bF9ub2RlKQogICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAogICAgICAgICBsZW4oZXhwZWN0ZWRfY2hp
bGRyZW4pLCBsZW4oYWN0dWFsX2NoaWxkcmVuKSwKLSAgICAgICAgIm51bWJlciBvZiBjaGlsZCBl
bGVtZW50cyBkaWZmZXIgaW4gZWxlbWVudCAiICsgYWN0dWFsX25vZGUudGFnTmFtZSkKKyAgICAg
ICAgJ251bWJlciBvZiBjaGlsZCBlbGVtZW50cyBkaWZmZXIgaW4gZWxlbWVudCAnICsgYWN0dWFs
X25vZGUudGFnTmFtZSkKICAgICBmb3IgY2hpbGRfaWQsIGNoaWxkIGluIGV4cGVjdGVkX2NoaWxk
cmVuLml0ZXJpdGVtcygpOgogICAgICAgc2VsZi5hc3NlcnRfKGNoaWxkX2lkIGluIGFjdHVhbF9j
aGlsZHJlbiwKICAgICAgICAgICAgICAgICAgICAnPCVzPiBpcyBub3QgaW4gPCVzPiAoaW4gZWxl
bWVudCAlcyknICUKQEAgLTEwMywxOSArMTAxLDIyIEBAIGNsYXNzIEdUZXN0WE1MVGVzdENhc2Uo
Z3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CiAgICAgICBzZWxmLkFzc2VydEVxdWl2YWxlbnRO
b2RlcyhjaGlsZCwgYWN0dWFsX2NoaWxkcmVuW2NoaWxkX2lkXSkKIAogICBpZGVudGlmeWluZ19h
dHRyaWJ1dGUgPSB7Ci0gICAgInRlc3RzdWl0ZXMiOiAibmFtZSIsCi0gICAgInRlc3RzdWl0ZSI6
ICJuYW1lIiwKLSAgICAidGVzdGNhc2UiOiAgIm5hbWUiLAotICAgICJmYWlsdXJlIjogICAibWVz
c2FnZSIsCi0gICAgfQorICAgICAgJ3Rlc3RzdWl0ZXMnOiAnbmFtZScsCisgICAgICAndGVzdHN1
aXRlJzogJ25hbWUnLAorICAgICAgJ3Rlc3RjYXNlJzogJ25hbWUnLAorICAgICAgJ2ZhaWx1cmUn
OiAnbWVzc2FnZScsCisgICAgICAncHJvcGVydHknOiAnbmFtZScsCisgIH0KIAogICBkZWYgX0dl
dENoaWxkcmVuKHNlbGYsIGVsZW1lbnQpOgogICAgICIiIgogICAgIEZldGNoZXMgYWxsIG9mIHRo
ZSBjaGlsZCBub2RlcyBvZiBlbGVtZW50LCBhIERPTSBFbGVtZW50IG9iamVjdC4KICAgICBSZXR1
cm5zIHRoZW0gYXMgdGhlIHZhbHVlcyBvZiBhIGRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIElEcyBv
ZiB0aGUKLSAgICBjaGlsZHJlbi4gIEZvciA8dGVzdHN1aXRlcz4sIDx0ZXN0c3VpdGU+IGFuZCA8
dGVzdGNhc2U+IGVsZW1lbnRzLCB0aGUgSUQKLSAgICBpcyB0aGUgdmFsdWUgb2YgdGhlaXIgIm5h
bWUiIGF0dHJpYnV0ZTsgZm9yIDxmYWlsdXJlPiBlbGVtZW50cywgaXQgaXMKLSAgICB0aGUgdmFs
dWUgb2YgdGhlICJtZXNzYWdlIiBhdHRyaWJ1dGU7IENEQVRBIHNlY3Rpb25zIGFuZCBub24td2hp
dGVzcGFjZQorICAgIGNoaWxkcmVuLiAgRm9yIDx0ZXN0c3VpdGVzPiwgPHRlc3RzdWl0ZT4sIDx0
ZXN0Y2FzZT4sIGFuZCA8cHJvcGVydHk+CisgICAgZWxlbWVudHMsIHRoZSBJRCBpcyB0aGUgdmFs
dWUgb2YgdGhlaXIgIm5hbWUiIGF0dHJpYnV0ZTsgZm9yIDxmYWlsdXJlPgorICAgIGVsZW1lbnRz
LCBpdCBpcyB0aGUgdmFsdWUgb2YgdGhlICJtZXNzYWdlIiBhdHRyaWJ1dGU7IGZvciA8cHJvcGVy
dGllcz4KKyAgICBlbGVtZW50cywgaXQgaXMgdGhlIHZhbHVlIG9mIHRoZWlyIHBhcmVudCdzICJu
YW1lIiBhdHRyaWJ1dGUgcGx1cyB0aGUKKyAgICBsaXRlcmFsIHN0cmluZyAicHJvcGVydGllcyI7
IENEQVRBIHNlY3Rpb25zIGFuZCBub24td2hpdGVzcGFjZQogICAgIHRleHQgbm9kZXMgYXJlIGNv
bmNhdGVuYXRlZCBpbnRvIGEgc2luZ2xlIENEQVRBIHNlY3Rpb24gd2l0aCBJRAogICAgICJkZXRh
aWwiLiAgQW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiBhbnkgZWxlbWVudCBvdGhlciB0aGFuIHRo
ZSBhYm92ZQogICAgIGZvdXIgaXMgZW5jb3VudGVyZWQsIGlmIHR3byBjaGlsZCBlbGVtZW50cyB3
aXRoIHRoZSBzYW1lIGlkZW50aWZ5aW5nCkBAIC0xMjUsMjEgKzEyNiwyNyBAQCBjbGFzcyBHVGVz
dFhNTFRlc3RDYXNlKGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgogICAgIGNoaWxkcmVuID0g
e30KICAgICBmb3IgY2hpbGQgaW4gZWxlbWVudC5jaGlsZE5vZGVzOgogICAgICAgaWYgY2hpbGQu
bm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05PREU6Ci0gICAgICAgIHNlbGYuYXNzZXJ0XyhjaGls
ZC50YWdOYW1lIGluIHNlbGYuaWRlbnRpZnlpbmdfYXR0cmlidXRlLAotICAgICAgICAgICAgICAg
ICAgICAgIkVuY291bnRlcmVkIHVua25vd24gZWxlbWVudCA8JXM+IiAlIGNoaWxkLnRhZ05hbWUp
Ci0gICAgICAgIGNoaWxkSUQgPSBjaGlsZC5nZXRBdHRyaWJ1dGUoc2VsZi5pZGVudGlmeWluZ19h
dHRyaWJ1dGVbY2hpbGQudGFnTmFtZV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0XyhjaGlsZElEIG5v
dCBpbiBjaGlsZHJlbikKLSAgICAgICAgY2hpbGRyZW5bY2hpbGRJRF0gPSBjaGlsZAorICAgICAg
ICBpZiBjaGlsZC50YWdOYW1lID09ICdwcm9wZXJ0aWVzJzoKKyAgICAgICAgICBzZWxmLmFzc2Vy
dF8oY2hpbGQucGFyZW50Tm9kZSBpcyBub3QgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
J0VuY291bnRlcmVkIDxwcm9wZXJ0aWVzPiBlbGVtZW50IHdpdGhvdXQgYSBwYXJlbnQnKQorICAg
ICAgICAgIGNoaWxkX2lkID0gY2hpbGQucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoJ25hbWUnKSAr
ICctcHJvcGVydGllcycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICBzZWxmLmFzc2VydF8oY2hp
bGQudGFnTmFtZSBpbiBzZWxmLmlkZW50aWZ5aW5nX2F0dHJpYnV0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgJ0VuY291bnRlcmVkIHVua25vd24gZWxlbWVudCA8JXM+JyAlIGNoaWxkLnRhZ05h
bWUpCisgICAgICAgICAgY2hpbGRfaWQgPSBjaGlsZC5nZXRBdHRyaWJ1dGUoCisgICAgICAgICAg
ICAgIHNlbGYuaWRlbnRpZnlpbmdfYXR0cmlidXRlW2NoaWxkLnRhZ05hbWVdKQorICAgICAgICBz
ZWxmLmFzc2VydF8oY2hpbGRfaWQgbm90IGluIGNoaWxkcmVuKQorICAgICAgICBjaGlsZHJlbltj
aGlsZF9pZF0gPSBjaGlsZAogICAgICAgZWxpZiBjaGlsZC5ub2RlVHlwZSBpbiBbTm9kZS5URVhU
X05PREUsIE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFXToKLSAgICAgICAgaWYgImRldGFpbCIgbm90
IGluIGNoaWxkcmVuOgorICAgICAgICBpZiAnZGV0YWlsJyBub3QgaW4gY2hpbGRyZW46CiAgICAg
ICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlID09IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFIG9yCiAg
ICAgICAgICAgICAgIG5vdCBjaGlsZC5ub2RlVmFsdWUuaXNzcGFjZSgpKToKLSAgICAgICAgICAg
IGNoaWxkcmVuWyJkZXRhaWwiXSA9IGNoaWxkLm93bmVyRG9jdW1lbnQuY3JlYXRlQ0RBVEFTZWN0
aW9uKAorICAgICAgICAgICAgY2hpbGRyZW5bJ2RldGFpbCddID0gY2hpbGQub3duZXJEb2N1bWVu
dC5jcmVhdGVDREFUQVNlY3Rpb24oCiAgICAgICAgICAgICAgICAgY2hpbGQubm9kZVZhbHVlKQog
ICAgICAgICBlbHNlOgotICAgICAgICAgIGNoaWxkcmVuWyJkZXRhaWwiXS5ub2RlVmFsdWUgKz0g
Y2hpbGQubm9kZVZhbHVlCisgICAgICAgICAgY2hpbGRyZW5bJ2RldGFpbCddLm5vZGVWYWx1ZSAr
PSBjaGlsZC5ub2RlVmFsdWUKICAgICAgIGVsc2U6Ci0gICAgICAgIHNlbGYuZmFpbCgiRW5jb3Vu
dGVyZWQgdW5leHBlY3RlZCBub2RlIHR5cGUgJWQiICUgY2hpbGQubm9kZVR5cGUpCisgICAgICAg
IHNlbGYuZmFpbCgnRW5jb3VudGVyZWQgdW5leHBlY3RlZCBub2RlIHR5cGUgJWQnICUgY2hpbGQu
bm9kZVR5cGUpCiAgICAgcmV0dXJuIGNoaWxkcmVuCiAKICAgZGVmIE5vcm1hbGl6ZVhtbChzZWxm
LCBlbGVtZW50KToKQEAgLTE1MCwyMyArMTU3LDQwIEBAIGNsYXNzIEdUZXN0WE1MVGVzdENhc2Uo
Z3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6CiAgICAgKiAgVGhlICJ0aW1lIiBhdHRyaWJ1dGUg
b2YgPHRlc3RzdWl0ZXM+LCA8dGVzdHN1aXRlPiBhbmQgPHRlc3RjYXNlPgogICAgICAgIGVsZW1l
bnRzIGlzIHJlcGxhY2VkIHdpdGggYSBzaW5nbGUgYXN0ZXJpc2ssIGlmIGl0IGNvbnRhaW5zCiAg
ICAgICAgb25seSBkaWdpdCBjaGFyYWN0ZXJzLgotICAgICogIFRoZSBsaW5lIG51bWJlciByZXBv
cnRlZCBpbiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgIm1lc3NhZ2UiCi0gICAgICAgYXR0cmlidXRl
IG9mIDxmYWlsdXJlPiBlbGVtZW50cyBpcyByZXBsYWNlZCB3aXRoIGEgc2luZ2xlIGFzdGVyaXNr
LgorICAgICogIFRoZSAidGltZXN0YW1wIiBhdHRyaWJ1dGUgb2YgPHRlc3RzdWl0ZXM+IGVsZW1l
bnRzIGlzIHJlcGxhY2VkIHdpdGggYQorICAgICAgIHNpbmdsZSBhc3RlcmlzaywgaWYgaXQgY29u
dGFpbnMgYSB2YWxpZCBJU084NjAxIGRhdGV0aW1lIHZhbHVlLgorICAgICogIFRoZSAidHlwZV9w
YXJhbSIgYXR0cmlidXRlIG9mIDx0ZXN0Y2FzZT4gZWxlbWVudHMgaXMgcmVwbGFjZWQgd2l0aCBh
CisgICAgICAgc2luZ2xlIGFzdGVyaXNrIChpZiBpdCBzbiBub24tZW1wdHkpIGFzIGl0IGlzIHRo
ZSB0eXBlIG5hbWUgcmV0dXJuZWQKKyAgICAgICBieSB0aGUgY29tcGlsZXIgYW5kIGlzIHBsYXRm
b3JtIGRlcGVuZGVudC4KKyAgICAqICBUaGUgbGluZSBpbmZvIHJlcG9ydGVkIGluIHRoZSBmaXJz
dCBsaW5lIG9mIHRoZSAibWVzc2FnZSIKKyAgICAgICBhdHRyaWJ1dGUgYW5kIENEQVRBIHNlY3Rp
b24gb2YgPGZhaWx1cmU+IGVsZW1lbnRzIGlzIHJlcGxhY2VkIHdpdGggdGhlCisgICAgICAgZmls
ZSdzIGJhc2VuYW1lIGFuZCBhIHNpbmdsZSBhc3RlcmlzayBmb3IgdGhlIGxpbmUgbnVtYmVyLgog
ICAgICogIFRoZSBkaXJlY3RvcnkgbmFtZXMgaW4gZmlsZSBwYXRocyBhcmUgcmVtb3ZlZC4KICAg
ICAqICBUaGUgc3RhY2sgdHJhY2VzIGFyZSByZW1vdmVkLgogICAgICIiIgogCi0gICAgaWYgZWxl
bWVudC50YWdOYW1lIGluICgidGVzdHN1aXRlcyIsICJ0ZXN0c3VpdGUiLCAidGVzdGNhc2UiKToK
LSAgICAgIHRpbWUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoInRpbWUiKQotICAgICAgdGlt
ZS52YWx1ZSA9IHJlLnN1YihyIl5cZCsoXC5cZCspPyQiLCAiKiIsIHRpbWUudmFsdWUpCi0gICAg
ZWxpZiBlbGVtZW50LnRhZ05hbWUgPT0gImZhaWx1cmUiOgorICAgIGlmIGVsZW1lbnQudGFnTmFt
ZSA9PSAndGVzdHN1aXRlcyc6CisgICAgICB0aW1lc3RhbXAgPSBlbGVtZW50LmdldEF0dHJpYnV0
ZU5vZGUoJ3RpbWVzdGFtcCcpCisgICAgICB0aW1lc3RhbXAudmFsdWUgPSByZS5zdWIocideXGR7
NH0tXGRcZC1cZFxkVFxkXGQ6XGRcZDpcZFxkJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyonLCB0aW1lc3RhbXAudmFsdWUpCisgICAgaWYgZWxlbWVudC50YWdOYW1lIGluICgn
dGVzdHN1aXRlcycsICd0ZXN0c3VpdGUnLCAndGVzdGNhc2UnKToKKyAgICAgIHRpbWUgPSBlbGVt
ZW50LmdldEF0dHJpYnV0ZU5vZGUoJ3RpbWUnKQorICAgICAgdGltZS52YWx1ZSA9IHJlLnN1Yihy
J15cZCsoXC5cZCspPyQnLCAnKicsIHRpbWUudmFsdWUpCisgICAgICB0eXBlX3BhcmFtID0gZWxl
bWVudC5nZXRBdHRyaWJ1dGVOb2RlKCd0eXBlX3BhcmFtJykKKyAgICAgIGlmIHR5cGVfcGFyYW0g
YW5kIHR5cGVfcGFyYW0udmFsdWU6CisgICAgICAgIHR5cGVfcGFyYW0udmFsdWUgPSAnKicKKyAg
ICBlbGlmIGVsZW1lbnQudGFnTmFtZSA9PSAnZmFpbHVyZSc6CisgICAgICBzb3VyY2VfbGluZV9w
YXQgPSByJ14uKlsvXFxdKC4qOilcZCtcbicKKyAgICAgICMgUmVwbGFjZXMgdGhlIHNvdXJjZSBs
aW5lIGluZm9ybWF0aW9uIHdpdGggYSBub3JtYWxpemVkIGZvcm0uCisgICAgICBtZXNzYWdlID0g
ZWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKCdtZXNzYWdlJykKKyAgICAgIG1lc3NhZ2UudmFsdWUg
PSByZS5zdWIoc291cmNlX2xpbmVfcGF0LCAnXFwxKlxuJywgbWVzc2FnZS52YWx1ZSkKICAgICAg
IGZvciBjaGlsZCBpbiBlbGVtZW50LmNoaWxkTm9kZXM6CiAgICAgICAgIGlmIGNoaWxkLm5vZGVU
eXBlID09IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFOgotICAgICAgICAgICMgUmVtb3ZlcyB0aGUg
c291cmNlIGxpbmUgbnVtYmVyLgotICAgICAgICAgIGNkYXRhID0gcmUuc3ViKHIiXi4qWy9cXF0o
Lio6KVxkK1xuIiwgIlxcMSpcbiIsIGNoaWxkLm5vZGVWYWx1ZSkKKyAgICAgICAgICAjIFJlcGxh
Y2VzIHRoZSBzb3VyY2UgbGluZSBpbmZvcm1hdGlvbiB3aXRoIGEgbm9ybWFsaXplZCBmb3JtLgor
ICAgICAgICAgIGNkYXRhID0gcmUuc3ViKHNvdXJjZV9saW5lX3BhdCwgJ1xcMSpcbicsIGNoaWxk
Lm5vZGVWYWx1ZSkKICAgICAgICAgICAjIFJlbW92ZXMgdGhlIGFjdHVhbCBzdGFjayB0cmFjZS4K
LSAgICAgICAgICBjaGlsZC5ub2RlVmFsdWUgPSByZS5zdWIociJcblN0YWNrIHRyYWNlOlxuKC58
XG4pKiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiLCBjZGF0YSkKKyAg
ICAgICAgICBjaGlsZC5ub2RlVmFsdWUgPSByZS5zdWIocidTdGFjayB0cmFjZTpcbigufFxuKSon
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU3RhY2sgdHJhY2U6XG4qJywg
Y2RhdGEpCiAgICAgZm9yIGNoaWxkIGluIGVsZW1lbnQuY2hpbGROb2RlczoKICAgICAgIGlmIGNo
aWxkLm5vZGVUeXBlID09IE5vZGUuRUxFTUVOVF9OT0RFOgogICAgICAgICBzZWxmLk5vcm1hbGl6
ZVhtbChjaGlsZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJv
ZHVjdGlvbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5jYwpp
bmRleCA4YjhhNDBiNDRlOWI0MWY0YzI5ZDc1NTI2OTA4NTY4YWYyMzc5MTJkLi4wZjY5ZjZkYmQy
ZTI2YTNhOWJkZjc1NmI0ODA3MzdhNGVmNDIxOGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC90ZXN0L3Byb2R1Y3Rpb24uY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rl
c3QvdGVzdC9wcm9kdWN0aW9uLmNjCkBAIC0yNiwxMCArMjYsOSBAQAogLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAog
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29v
Z2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRoaXMgaXMgcGFydCBvZiB0aGUgdW5pdCB0
ZXN0IGZvciBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaC4KKy8vIFRoaXMgaXMgcGFydCBvZiB0
aGUgdW5pdCB0ZXN0IGZvciBndGVzdF9wcm9kLmguCiAKICNpbmNsdWRlICJwcm9kdWN0aW9uLmgi
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5o
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9kdWN0aW9uLmgKaW5kZXggOGYxNmZm
ZmEyNDE2YzU3MTUzZmFiM2UwOTdkMTM0YWYxZmI0YTliYy4uNTQyNzIzYjcwODczODdkNGZiNTI5
ZmMwN2E2ODhiYzFjOGQ3OGIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
dGVzdC9wcm9kdWN0aW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvdGVzdC9wcm9k
dWN0aW9uLmgKQEAgLTI2LDE1ICsyNiwxNCBAQAogLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCiAvLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhh
bnlvbmcgV2FuKQotLy8KLS8vIFRoaXMgaXMgcGFydCBvZiB0aGUgdW5pdCB0ZXN0IGZvciBpbmNs
dWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaC4KKy8vIFRoaXMgaXMgcGFydCBvZiB0aGUgdW5pdCB0ZXN0
IGZvciBndGVzdF9wcm9kLmguCiAKICNpZm5kZWYgR1RFU1RfVEVTVF9QUk9EVUNUSU9OX0hfCiAj
ZGVmaW5lIEdURVNUX1RFU1RfUFJPRFVDVElPTl9IXwogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Rf
cHJvZC5oPgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0X3Byb2QuaCIKIAogY2xhc3MgUHJpdmF0ZUNv
ZGUgewogIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3Qv
cnVuX3Rlc3RzX3V0aWwucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0
c191dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5ZTU3OTMxZWJhMmM2MTFl
MGExZjYwZmZmNGYwOTUzOWUxMDc2N2FkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3RzX3V0
aWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0NjYgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOCBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0j
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIi
UHJvdmlkZXMgZmFjaWxpdGllcyBmb3IgcnVubmluZyBTQ29ucy1idWlsdCBHb29nbGUgVGVzdC9N
b2NrIHRlc3RzLiIiIgotCi0KLWltcG9ydCBvcHRwYXJzZQotaW1wb3J0IG9zCi1pbXBvcnQgcmUK
LWltcG9ydCBzZXRzCi1pbXBvcnQgc3lzCi0KLXRyeToKLSAgIyBzdWJyb2Nlc3MgbW9kdWxlIGlz
IGEgcHJlZmVyYWJsZSB3YXkgdG8gaW52b2tlIHN1YnByb2Nlc3NlcyBidXQgaXQgbWF5Ci0gICMg
bm90IGJlIGF2YWlsYWJsZSBvbiBNYWNPUyBYIDEwLjQuCi0gICMgU3VwcHJlc3NlcyB0aGUgJ0lt
cG9ydCBub3QgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZScgbGludCBjb21wbGFpbnQuCi0gICMgcHls
aW50OiBkaXNhYmxlLW1zZz1DNjIwNAotICBpbXBvcnQgc3VicHJvY2VzcwotZXhjZXB0IEltcG9y
dEVycm9yOgotICBzdWJwcm9jZXNzID0gTm9uZQotCi1IRUxQX01TRyA9ICIiIlJ1bnMgdGhlIHNw
ZWNpZmllZCB0ZXN0cyBmb3IgJShwcm9qKXMuCi0KLVNZTk9QU0lTCi0gICAgICAgcnVuX3Rlc3Rz
LnB5IFtPUFRJT05dLi4uIFtCVUlMRF9ESVJdLi4uIFtURVNUXS4uLgotCi1ERVNDUklQVElPTgot
ICAgICAgIFJ1bnMgdGhlIHNwZWNpZmllZCB0ZXN0cyAoZWl0aGVyIGJpbmFyeSBvciBQeXRob24p
LCBhbmQgcHJpbnRzIGEKLSAgICAgICBzdW1tYXJ5IG9mIHRoZSByZXN1bHRzLiBCVUlMRF9ESVJT
IHdpbGwgYmUgdXNlZCB0byBzZWFyY2ggZm9yIHRoZQotICAgICAgIGJpbmFyaWVzLiBJZiBubyBU
RVNUcyBhcmUgc3BlY2lmaWVkLCBhbGwgYmluYXJ5IHRlc3RzIGZvdW5kIGluCi0gICAgICAgQlVJ
TERfRElScyBhbmQgYWxsIFB5dGhvbiB0ZXN0cyBmb3VuZCBpbiB0aGUgZGlyZWN0b3J5IHRlc3Qv
IChpbiB0aGUKLSAgICAgICAlKHByb2opcyByb290KSBhcmUgcnVuLgotCi0gICAgICAgVEVTVCBp
cyBhIG5hbWUgb2YgZWl0aGVyIGEgYmluYXJ5IG9yIGEgUHl0aG9uIHRlc3QuIEEgYmluYXJ5IHRl
c3QgaXMKLSAgICAgICBhbiBleGVjdXRhYmxlIGZpbGUgbmFtZWQgKl90ZXN0IG9yICpfdW5pdHRl
c3QgKHdpdGggdGhlIC5leGUKLSAgICAgICBleHRlbnNpb24gb24gV2luZG93cykgQSBQeXRob24g
dGVzdCBpcyBhIHNjcmlwdCBuYW1lZCAqX3Rlc3QucHkgb3IKLSAgICAgICAqX3VuaXR0ZXN0LnB5
LgotCi1PUFRJT05TCi0gICAgICAgLWgsIC0taGVscAotICAgICAgICAgICAgICBQcmludCB0aGlz
IGhlbHAgbWVzc2FnZS4KLSAgICAgICAtYyBDT05GSUdVUkFUSU9OUwotICAgICAgICAgICAgICBT
cGVjaWZ5IGJ1aWxkIGRpcmVjdG9yaWVzIHZpYSBidWlsZCBjb25maWd1cmF0aW9ucy4KLSAgICAg
ICAgICAgICAgQ09ORklHVVJBVElPTlMgaXMgZWl0aGVyIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qg
b2YgYnVpbGQKLSAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgb3IgJ2FsbCcuIEVhY2ggY29u
ZmlndXJhdGlvbiBpcyBlcXVpdmFsZW50IHRvCi0gICAgICAgICAgICAgIGFkZGluZyAnc2NvbnMv
YnVpbGQvPGNvbmZpZ3VyYXRpb24+LyUocHJvailzL3Njb25zJyB0byBCVUlMRF9ESVJzLgotICAg
ICAgICAgICAgICBTcGVjaWZ5aW5nIC1jPWFsbCBpcyBlcXVpdmFsZW50IHRvIHByb3ZpZGluZyBh
bGwgZGlyZWN0b3JpZXMKLSAgICAgICAgICAgICAgbGlzdGVkIGluIEtOT1dOIEJVSUxEIERJUkVD
VE9SSUVTIHNlY3Rpb24gYmVsb3cuCi0gICAgICAgLWEKLSAgICAgICAgICAgICAgRXF1aXZhbGVu
dCB0byAtYz1hbGwKLSAgICAgICAtYgotICAgICAgICAgICAgICBFcXVpdmFsZW50IHRvIC1jPWFs
bCB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCB0aGUgc2NyaXB0IHdpbGwgbm90Ci0gICAgICAgICAg
ICAgIGZhaWwgaWYgc29tZSBvZiB0aGUgS05PV04gQlVJTEQgRElSRUNUT1JJRVMgZG8gbm90IGV4
aXN0czsgdGhlCi0gICAgICAgICAgICAgIHNjcmlwdCB3aWxsIHNpbXBseSBub3QgcnVuIHRoZSB0
ZXN0cyB0aGVyZS4gJ2InIHN0YW5kcyBmb3IKLSAgICAgICAgICAgICAgJ2J1aWx0IGRpcmVjdG9y
aWVzJy4KLQotUkVUVVJOIFZBTFVFCi0gICAgICAgUmV0dXJucyAwIGlmIGFsbCB0ZXN0cyBhcmUg
c3VjY2Vzc2Z1bDsgb3RoZXJ3aXNlIHJldHVybnMgMS4KLQotRVhBTVBMRVMKLSAgICAgICBydW5f
dGVzdHMucHkKLSAgICAgICAgICAgICAgUnVucyBhbGwgdGVzdHMgZm9yIHRoZSBkZWZhdWx0IGJ1
aWxkIGNvbmZpZ3VyYXRpb24uCi0gICAgICAgcnVuX3Rlc3RzLnB5IC1hCi0gICAgICAgICAgICAg
IFJ1bnMgYWxsIHRlc3RzIHdpdGggYmluYXJpZXMgaW4gS05PV04gQlVJTEQgRElSRUNUT1JJRVMu
Ci0gICAgICAgcnVuX3Rlc3RzLnB5IC1iCi0gICAgICAgICAgICAgIFJ1bnMgYWxsIHRlc3RzIGlu
IEtOT1dOIEJVSUxEIERJUkVDVE9SSUVTIHRoYXQgaGF2ZSBiZWVuCi0gICAgICAgICAgICAgIGJ1
aWx0LgotICAgICAgIHJ1bl90ZXN0cy5weSBmb28vCi0gICAgICAgICAgICAgIFJ1bnMgYWxsIHRl
c3RzIGluIHRoZSBmb28vIGRpcmVjdG9yeSBhbmQgYWxsIFB5dGhvbiB0ZXN0cyBpbgotICAgICAg
ICAgICAgICB0aGUgZGlyZWN0b3J5IHRlc3QuIFRoZSBQeXRob24gdGVzdHMgYXJlIGluc3RydWN0
ZWQgdG8gbG9vawotICAgICAgICAgICAgICBmb3IgYmluYXJpZXMgaW4gZm9vLy4KLSAgICAgICBy
dW5fdGVzdHMucHkgYmFyX3Rlc3QuZXhlIHRlc3QvYmF6X3Rlc3QuZXhlIGZvby8gYmFyLwotICAg
ICAgICAgICAgICBSdW5zIGZvby9iYXJfdGVzdC5leGUsIGJhci9iYXJfdGVzdC5leGUsIGZvby9i
YXpfdGVzdC5leGUsIGFuZAotICAgICAgICAgICAgICBiYXIvYmF6X3Rlc3QuZXhlLgotICAgICAg
IHJ1bl90ZXN0cy5weSBmb28gYmFyIHRlc3QvZm9vX3Rlc3QucHkKLSAgICAgICAgICAgICAgUnVu
cyB0ZXN0L2Zvb190ZXN0LnB5IHR3aWNlIGluc3RydWN0aW5nIGl0IHRvIGxvb2sgZm9yIGl0cwot
ICAgICAgICAgICAgICB0ZXN0IGJpbmFyaWVzIGluIHRoZSBkaXJlY3RvcmllcyBmb28gYW5kIGJh
ciwKLSAgICAgICAgICAgICAgY29ycmVzcG9uZGluZ2x5LgotCi1LTk9XTiBCVUlMRCBESVJFQ1RP
UklFUwotICAgICAgcnVuX3Rlc3RzLnB5IGtub3dzIGFib3V0IGRpcmVjdG9yaWVzIHdoZXJlIHRo
ZSBTQ29ucyBidWlsZCBzY3JpcHQKLSAgICAgIGRlcG9zaXRzIGl0cyBwcm9kdWN0cy4gVGhlc2Ug
YXJlIHRoZSBkaXJlY3RvcmllcyB3aGVyZSBydW5fdGVzdHMucHkKLSAgICAgIHdpbGwgYmUgbG9v
a2luZyBmb3IgaXRzIGJpbmFyaWVzLiBDdXJyZW50bHksICUocHJvailzJ3MgU0NvbnN0cnVjdCBm
aWxlCi0gICAgICBkZWZpbmVzIHRoZW0gYXMgZm9sbG93cyAodGhlIGRlZmF1bHQgYnVpbGQgZGly
ZWN0b3J5IGlzIHRoZSBmaXJzdCBvbmUKLSAgICAgIGxpc3RlZCBpbiBlYWNoIGdyb3VwKToKLSAg
ICAgIE9uIFdpbmRvd3M6Ci0gICAgICAgICAgICAgIDwlKHByb2opcyByb290Pi9zY29ucy9idWls
ZC93aW4tZGJnOC8lKHByb2opcy9zY29ucy8KLSAgICAgICAgICAgICAgPCUocHJvailzIHJvb3Q+
L3Njb25zL2J1aWxkL3dpbi1vcHQ4LyUocHJvailzL3Njb25zLwotICAgICAgT24gTWFjOgotICAg
ICAgICAgICAgICA8JShwcm9qKXMgcm9vdD4vc2NvbnMvYnVpbGQvbWFjLWRiZy8lKHByb2opcy9z
Y29ucy8KLSAgICAgICAgICAgICAgPCUocHJvailzIHJvb3Q+L3Njb25zL2J1aWxkL21hYy1vcHQv
JShwcm9qKXMvc2NvbnMvCi0gICAgICBPbiBvdGhlciBwbGF0Zm9ybXM6Ci0gICAgICAgICAgICAg
IDwlKHByb2opcyByb290Pi9zY29ucy9idWlsZC9kYmcvJShwcm9qKXMvc2NvbnMvCi0gICAgICAg
ICAgICAgIDwlKHByb2opcyByb290Pi9zY29ucy9idWlsZC9vcHQvJShwcm9qKXMvc2NvbnMvIiIi
Ci0KLUlTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdudCcKLUlTX01BQyA9IG9zLm5hbWUgPT0gJ3Bv
c2l4JyBhbmQgb3MudW5hbWUoKVswXSA9PSAnRGFyd2luJwotSVNfQ1lHV0lOID0gb3MubmFtZSA9
PSAncG9zaXgnIGFuZCAnQ1lHV0lOJyBpbiBvcy51bmFtZSgpWzBdCi0KLSMgRGVmaW5pdGlvbiBv
ZiBDT05GSUdTIG11c3QgbWF0Y2ggdGhhdCBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5IG5hbWVzIGlu
IHRoZQotIyBTQ29uc3RydWN0IHNjcmlwdC4gVGhlIGZpcnN0IGxpc3QgaXRlbSBpcyB0aGUgZGVm
YXVsdCBidWlsZCBjb25maWd1cmF0aW9uLgotaWYgSVNfV0lORE9XUzoKLSAgQ09ORklHUyA9ICgn
d2luLWRiZzgnLCAnd2luLW9wdDgnKQotZWxpZiBJU19NQUM6Ci0gIENPTkZJR1MgPSAoJ21hYy1k
YmcnLCAnbWFjLW9wdCcpCi1lbHNlOgotICBDT05GSUdTID0gKCdkYmcnLCAnb3B0JykKLQotaWYg
SVNfV0lORE9XUyBvciBJU19DWUdXSU46Ci0gIFBZVEhPTl9URVNUX1JFR0VYID0gcmUuY29tcGls
ZShyJ18odW5pdCk/dGVzdFwucHkkJywgcmUuSUdOT1JFQ0FTRSkKLSAgQklOQVJZX1RFU1RfUkVH
RVggPSByZS5jb21waWxlKHInXyh1bml0KT90ZXN0KFwuZXhlKT8kJywgcmUuSUdOT1JFQ0FTRSkK
LSAgQklOQVJZX1RFU1RfU0VBUkNIX1JFR0VYID0gcmUuY29tcGlsZShyJ18odW5pdCk/dGVzdFwu
ZXhlJCcsIHJlLklHTk9SRUNBU0UpCi1lbHNlOgotICBQWVRIT05fVEVTVF9SRUdFWCA9IHJlLmNv
bXBpbGUocidfKHVuaXQpP3Rlc3RcLnB5JCcpCi0gIEJJTkFSWV9URVNUX1JFR0VYID0gcmUuY29t
cGlsZShyJ18odW5pdCk/dGVzdCQnKQotICBCSU5BUllfVEVTVF9TRUFSQ0hfUkVHRVggPSBCSU5B
UllfVEVTVF9SRUdFWAotCi0KLWRlZiBfR2V0R3Rlc3RCdWlsZERpcihpbmplY3RlZF9vcywgc2Ny
aXB0X2RpciwgY29uZmlnKToKLSAgIiIiQ2FsY3VsYXRlcyBwYXRoIHRvIHRoZSBHb29nbGUgVGVz
dCBTQ29ucyBidWlsZCBkaXJlY3RvcnkuIiIiCi0KLSAgcmV0dXJuIGluamVjdGVkX29zLnBhdGgu
bm9ybXBhdGgoaW5qZWN0ZWRfb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NvbnMvYnVpbGQn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2d0ZXN0L3Njb25zJykpCi0KLQotZGVmIF9HZXRDb25maWdGcm9tQnVpbGRE
aXIoYnVpbGRfZGlyKToKLSAgIiIiRXh0cmFjdHMgdGhlIGNvbmZpZ3VyYXRpb24gbmFtZSBmcm9t
IHRoZSBidWlsZCBkaXJlY3RvcnkuIiIiCi0KLSAgIyBXZSBkb24ndCB3YW50IHRvIGRlcGVuZCBv
biBidWlsZF9kaXIgY29udGFpbmluZyB0aGUgY29ycmVjdCBwYXRoCi0gICMgc2VwYXJhdG9ycy4K
LSAgbSA9IHJlLm1hdGNoKHInLipbXFwvXShbXlxcL10rKVtcXC9dW15cXC9dK1tcXC9dc2NvbnNb
XFwvXT8kJywgYnVpbGRfZGlyKQotICBpZiBtOgotICAgIHJldHVybiBtLmdyb3VwKDEpCi0gIGVs
c2U6Ci0gICAgcHJpbnQgPj5zeXMuc3RkZXJyLCAoJyVzIGlzIGFuIGludmFsaWQgYnVpbGQgZGly
ZWN0b3J5IHRoYXQgZG9lcyBub3QgJwotICAgICAgICAgICAgICAgICAgICAgICAgICdjb3JyZXNw
b25kIHRvIGFueSBjb25maWd1cmF0aW9uLicgJSAoYnVpbGRfZGlyLCkpCi0gICAgcmV0dXJuICcn
Ci0KLQotIyBBbGwgcGF0aHMgaW4gdGhpcyBzY3JpcHQgYXJlIGVpdGhlciBhYnNvbHV0ZSBvciBy
ZWxhdGl2ZSB0byB0aGUgY3VycmVudAotIyB3b3JraW5nIGRpcmVjdG9yeSwgdW5sZXNzIG90aGVy
d2lzZSBzcGVjaWZpZWQuCi1jbGFzcyBUZXN0UnVubmVyKG9iamVjdCk6Ci0gICIiIlByb3ZpZGVz
IGZhY2lsaXRpZXMgZm9yIHJ1bm5pbmcgUHl0aG9uIGFuZCBiaW5hcnkgdGVzdHMgZm9yIEdvb2ds
ZSBUZXN0LiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLAotICAgICAgICAgICAgICAgc2NyaXB0
X2RpciwKLSAgICAgICAgICAgICAgIGJ1aWxkX2Rpcl92YXJfbmFtZT0nR1RFU1RfQlVJTERfRElS
JywKLSAgICAgICAgICAgICAgIGluamVjdGVkX29zPW9zLAotICAgICAgICAgICAgICAgaW5qZWN0
ZWRfc3VicHJvY2Vzcz1zdWJwcm9jZXNzLAotICAgICAgICAgICAgICAgaW5qZWN0ZWRfYnVpbGRf
ZGlyX2ZpbmRlcj1fR2V0R3Rlc3RCdWlsZERpcik6Ci0gICAgIiIiSW5pdGlhbGl6ZXMgYSBUZXN0
UnVubmVyIGluc3RhbmNlLgotCi0gICAgQXJnczoKLSAgICAgIHNjcmlwdF9kaXI6ICAgICAgICAg
ICAgICAgIEZpbGUgcGF0aCB0byB0aGUgY2FsbGluZyBzY3JpcHQuCi0gICAgICBidWlsZF9kaXJf
dmFyX25hbWU6ICAgICAgICBOYW1lIG9mIHRoZSBlbnYgdmFyaWFibGUgdXNlZCB0byBwYXNzIHRo
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIGRpcmVjdG9yeSBw
YXRoIHRvIHRoZSBpbnZva2VkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
cy4KLSAgICAgIGluamVjdGVkX29zOiAgICAgICAgICAgICAgIHN0YW5kYXJkIG9zIG1vZHVsZSBv
ciBhIG1vY2svc3R1YiBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rp
bmcuCi0gICAgICBpbmplY3RlZF9zdWJwcm9jZXNzOiAgICAgICBzdGFuZGFyZCBzdWJwcm9jZXNz
IG1vZHVsZSBvciBhIG1vY2svc3R1YgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yIHRlc3RpbmcKLSAgICAgIGluamVjdGVkX2J1aWxkX2Rpcl9maW5kZXI6IGZ1bmN0aW9uIHRo
YXQgZGV0ZXJtaW5lcyB0aGUgcGF0aCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KLSAgICAiIiIKLQotICAgIHNlbGYub3MgPSBpbmplY3Rl
ZF9vcwotICAgIHNlbGYuc3VicHJvY2VzcyA9IGluamVjdGVkX3N1YnByb2Nlc3MKLSAgICBzZWxm
LmJ1aWxkX2Rpcl9maW5kZXIgPSBpbmplY3RlZF9idWlsZF9kaXJfZmluZGVyCi0gICAgc2VsZi5i
dWlsZF9kaXJfdmFyX25hbWUgPSBidWlsZF9kaXJfdmFyX25hbWUKLSAgICBzZWxmLnNjcmlwdF9k
aXIgPSBzY3JpcHRfZGlyCi0KLSAgZGVmIF9HZXRCdWlsZERpckZvckNvbmZpZyhzZWxmLCBjb25m
aWcpOgotICAgICIiIlJldHVybnMgdGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgYSBnaXZlbiBjb25m
aWd1cmF0aW9uLiIiIgotCi0gICAgcmV0dXJuIHNlbGYuYnVpbGRfZGlyX2ZpbmRlcihzZWxmLm9z
LCBzZWxmLnNjcmlwdF9kaXIsIGNvbmZpZykKLQotICBkZWYgX1J1bihzZWxmLCBhcmdzKToKLSAg
ICAiIiJSdW5zIHRoZSBleGVjdXRhYmxlIHdpdGggZ2l2ZW4gYXJncyAoYXJnc1swXSBpcyB0aGUg
ZXhlY3V0YWJsZSBuYW1lKS4KLQotICAgIEFyZ3M6Ci0gICAgICBhcmdzOiBDb21tYW5kIGxpbmUg
YXJndW1lbnRzIGZvciB0aGUgcHJvY2Vzcy4KLQotICAgIFJldHVybnM6Ci0gICAgICBQcm9jZXNz
J3MgZXhpdCBjb2RlIGlmIGl0IGV4aXRzIG5vcm1hbGx5LCBvciAtc2lnbmFsIGlmIHRoZSBwcm9j
ZXNzIGlzCi0gICAgICBraWxsZWQgYnkgYSBzaWduYWwuCi0gICAgIiIiCi0KLSAgICBpZiBzZWxm
LnN1YnByb2Nlc3M6Ci0gICAgICByZXR1cm4gc2VsZi5zdWJwcm9jZXNzLlBvcGVuKGFyZ3MpLndh
aXQoKQotICAgIGVsc2U6Ci0gICAgICByZXR1cm4gc2VsZi5vcy5zcGF3bnYoc2VsZi5vcy5QX1dB
SVQsIGFyZ3NbMF0sIGFyZ3MpCi0KLSAgZGVmIF9SdW5CaW5hcnlUZXN0KHNlbGYsIHRlc3QpOgot
ICAgICIiIlJ1bnMgdGhlIGJpbmFyeSB0ZXN0IGdpdmVuIGl0cyBwYXRoLgotCi0gICAgQXJnczoK
LSAgICAgIHRlc3Q6IFBhdGggdG8gdGhlIHRlc3QgYmluYXJ5LgotCi0gICAgUmV0dXJuczoKLSAg
ICAgIFByb2Nlc3MncyBleGl0IGNvZGUgaWYgaXQgZXhpdHMgbm9ybWFsbHksIG9yIC1zaWduYWwg
aWYgdGhlIHByb2Nlc3MgaXMKLSAgICAgIGtpbGxlZCBieSBhIHNpZ25hbC4KLSAgICAiIiIKLQot
ICAgIHJldHVybiBzZWxmLl9SdW4oW3Rlc3RdKQotCi0gIGRlZiBfUnVuUHl0aG9uVGVzdChzZWxm
LCB0ZXN0LCBidWlsZF9kaXIpOgotICAgICIiIlJ1bnMgdGhlIFB5dGhvbiB0ZXN0IHNjcmlwdCB3
aXRoIHRoZSBzcGVjaWZpZWQgYnVpbGQgZGlyZWN0b3J5LgotCi0gICAgQXJnczoKLSAgICAgIHRl
c3Q6IFBhdGggdG8gdGhlIHRlc3QncyBQeXRob24gc2NyaXB0LgotICAgICAgYnVpbGRfZGlyOiBQ
YXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHRlc3QgYmluYXJ5IGlzIHRvIGJlIGZvdW5k
LgotCi0gICAgUmV0dXJuczoKLSAgICAgIFByb2Nlc3MncyBleGl0IGNvZGUgaWYgaXQgZXhpdHMg
bm9ybWFsbHksIG9yIC1zaWduYWwgaWYgdGhlIHByb2Nlc3MgaXMKLSAgICAgIGtpbGxlZCBieSBh
IHNpZ25hbC4KLSAgICAiIiIKLQotICAgIG9sZF9idWlsZF9kaXIgPSBzZWxmLm9zLmVudmlyb24u
Z2V0KHNlbGYuYnVpbGRfZGlyX3Zhcl9uYW1lKQotCi0gICAgdHJ5OgotICAgICAgc2VsZi5vcy5l
bnZpcm9uW3NlbGYuYnVpbGRfZGlyX3Zhcl9uYW1lXSA9IGJ1aWxkX2RpcgotCi0gICAgICAjIElm
IHRoaXMgc2NyaXB0IGlzIHJ1biBvbiBhIFdpbmRvd3MgbWFjaGluZSB0aGF0IGhhcyBubyBhc3Nv
Y2lhdGlvbgotICAgICAgIyBiZXR3ZWVuIHRoZSAucHkgZXh0ZW5zaW9uIGFuZCBhIHB5dGhvbiBp
bnRlcnByZXRlciwgc2ltcGx5IHBhc3NpbmcKLSAgICAgICMgdGhlIHNjcmlwdCBuYW1lIGludG8g
c3VicHJvY2Vzcy5Qb3Blbi9vcy5zcGF3biB3aWxsIG5vdCB3b3JrLgotICAgICAgcHJpbnQgJ1J1
bm5pbmcgJXMgLiAuIC4nICUgKHRlc3QsKQotICAgICAgcmV0dXJuIHNlbGYuX1J1bihbc3lzLmV4
ZWN1dGFibGUsIHRlc3RdKQotCi0gICAgZmluYWxseToKLSAgICAgIGlmIG9sZF9idWlsZF9kaXIg
aXMgTm9uZToKLSAgICAgICAgZGVsIHNlbGYub3MuZW52aXJvbltzZWxmLmJ1aWxkX2Rpcl92YXJf
bmFtZV0KLSAgICAgIGVsc2U6Ci0gICAgICAgIHNlbGYub3MuZW52aXJvbltzZWxmLmJ1aWxkX2Rp
cl92YXJfbmFtZV0gPSBvbGRfYnVpbGRfZGlyCi0KLSAgZGVmIF9GaW5kRmlsZXNCeVJlZ2V4KHNl
bGYsIGRpcmVjdG9yeSwgcmVnZXgpOgotICAgICIiIlJldHVybnMgZmlsZXMgaW4gYSBkaXJlY3Rv
cnkgd2hvc2UgbmFtZXMgbWF0Y2ggYSByZWd1bGFyIGV4cHJlc3Npb24uCi0KLSAgICBBcmdzOgot
ICAgICAgZGlyZWN0b3J5OiBQYXRoIHRvIHRoZSBkaXJlY3RvcnkgdG8gc2VhcmNoIGZvciBmaWxl
cy4KLSAgICAgIHJlZ2V4OiBSZWd1bGFyIGV4cHJlc3Npb24gdG8gZmlsdGVyIGZpbGUgbmFtZXMu
Ci0KLSAgICBSZXR1cm5zOgotICAgICAgVGhlIGxpc3Qgb2YgdGhlIHBhdGhzIHRvIHRoZSBmaWxl
cyBpbiB0aGUgZGlyZWN0b3J5LgotICAgICIiIgotCi0gICAgcmV0dXJuIFtzZWxmLm9zLnBhdGgu
am9pbihkaXJlY3RvcnksIGZpbGVfbmFtZSkKLSAgICAgICAgICAgIGZvciBmaWxlX25hbWUgaW4g
c2VsZi5vcy5saXN0ZGlyKGRpcmVjdG9yeSkKLSAgICAgICAgICAgIGlmIHJlLnNlYXJjaChyZWdl
eCwgZmlsZV9uYW1lKV0KLQotICAjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEltcGxlbWVudCBw
YXJzaW5nIG9mIHNjb25zL1NDb25zY3JpcHQgdG8gcnVuIGFsbAotICAjIHRlc3RzIGRlZmluZWQg
dGhlcmUgd2hlbiBubyB0ZXN0cyBhcmUgc3BlY2lmaWVkLgotICAjIFRPRE8odmxhZGxAZ29vZ2xl
LmNvbSk6IFVwZGF0ZSB0aGUgZG9jc3RyaW5nIGFmdGVyIHRoZSBjb2RlIGlzIGNoYW5nZWQgdG8K
LSAgIyB0cnkgdG8gdGVzdCBhbGwgYnVpbGRzIGRlZmluZWQgaW4gc2NvbnMvU0NvbnNjcmlwdC4K
LSAgZGVmIEdldFRlc3RzVG9SdW4oc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgYXJncywKLSAg
ICAgICAgICAgICAgICAgICAgbmFtZWRfY29uZmlndXJhdGlvbnMsCi0gICAgICAgICAgICAgICAg
ICAgIGJ1aWx0X2NvbmZpZ3VyYXRpb25zLAotICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVf
Y29uZmlndXJhdGlvbnM9Q09ORklHUywKLSAgICAgICAgICAgICAgICAgICAgcHl0aG9uX3Rlc3Rz
X3RvX3NraXA9Tm9uZSk6Ci0gICAgIiIiRGV0ZXJtaW5lcyB3aGF0IHRlc3RzIHNob3VsZCBiZSBy
dW4uCi0KLSAgICBBcmdzOgotICAgICAgYXJnczogVGhlIGxpc3Qgb2Ygbm9uLW9wdGlvbiBhcmd1
bWVudHMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgotICAgICAgbmFtZWRfY29uZmlndXJhdGlvbnM6
IFRoZSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIHNwZWNpZmllZCB2aWEgLWMgb3IgLWEuCi0gICAg
ICBidWlsdF9jb25maWd1cmF0aW9uczogVHJ1ZSBpZiAtYiBoYXMgYmVlbiBzcGVjaWZpZWQuCi0g
ICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM6IGEgbGlzdCBvZiBjb25maWd1cmF0aW9ucyBh
dmFpbGFibGUgb24gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCBwbGF0
Zm9ybSwgaW5qZWN0YWJsZSBmb3IgdGVzdGluZy4KLSAgICAgIHB5dGhvbl90ZXN0c190b19za2lw
OiBhIGNvbGxlY3Rpb24gb2YgKGNvbmZpZ3VyYXRpb24sIHB5dGhvbiB0ZXN0IG5hbWUpcwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgbmVlZCB0byBiZSBza2lwcGVkLgotCi0gICAg
UmV0dXJuczoKLSAgICAgIEEgdHVwbGUgd2l0aCAyIGVsZW1lbnRzOiB0aGUgbGlzdCBvZiBQeXRo
b24gdGVzdHMgdG8gcnVuIGFuZCB0aGUgbGlzdCBvZgotICAgICAgYmluYXJ5IHRlc3RzIHRvIHJ1
bi4KLSAgICAiIiIKLQotICAgIGlmIG5hbWVkX2NvbmZpZ3VyYXRpb25zID09ICdhbGwnOgotICAg
ICAgbmFtZWRfY29uZmlndXJhdGlvbnMgPSAnLCcuam9pbihhdmFpbGFibGVfY29uZmlndXJhdGlv
bnMpCi0KLSAgICBub3JtYWxpemVkX2FyZ3MgPSBbc2VsZi5vcy5wYXRoLm5vcm1wYXRoKGFyZykg
Zm9yIGFyZyBpbiBhcmdzXQotCi0gICAgIyBBIGZpbmFsIGxpc3Qgb2YgYnVpbGQgZGlyZWN0b3Jp
ZXMgd2hpY2ggd2lsbCBiZSBzZWFyY2hlZCBmb3IgdGhlIHRlc3QKLSAgICAjIGJpbmFyaWVzLiBG
aXJzdCwgYWRkIGRpcmVjdG9yaWVzIHNwZWNpZmllZCBkaXJlY3RseSBvbiB0aGUgY29tbWFuZAot
ICAgICMgbGluZS4KLSAgICBidWlsZF9kaXJzID0gZmlsdGVyKHNlbGYub3MucGF0aC5pc2Rpciwg
bm9ybWFsaXplZF9hcmdzKQotCi0gICAgIyBBZGRzIGJ1aWxkIGRpcmVjdG9yaWVzIHNwZWNpZmll
ZCB2aWEgdGhlaXIgYnVpbGQgY29uZmlndXJhdGlvbnMgdXNpbmcKLSAgICAjIHRoZSAtYyBvciAt
YSBvcHRpb25zLgotICAgIGlmIG5hbWVkX2NvbmZpZ3VyYXRpb25zOgotICAgICAgYnVpbGRfZGly
cyArPSBbc2VsZi5fR2V0QnVpbGREaXJGb3JDb25maWcoY29uZmlnKQotICAgICAgICAgICAgICAg
ICAgICAgZm9yIGNvbmZpZyBpbiBuYW1lZF9jb25maWd1cmF0aW9ucy5zcGxpdCgnLCcpXQotCi0g
ICAgIyBBZGRzIEtOT1dOIEJVSUxEIERJUkVDVE9SSUVTIGlmIC1iIGlzIHNwZWNpZmllZC4KLSAg
ICBpZiBidWlsdF9jb25maWd1cmF0aW9uczoKLSAgICAgIGJ1aWxkX2RpcnMgKz0gW3NlbGYuX0dl
dEJ1aWxkRGlyRm9yQ29uZmlnKGNvbmZpZykKLSAgICAgICAgICAgICAgICAgICAgIGZvciBjb25m
aWcgaW4gYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zCi0gICAgICAgICAgICAgICAgICAgICBpZiBz
ZWxmLm9zLnBhdGguaXNkaXIoc2VsZi5fR2V0QnVpbGREaXJGb3JDb25maWcoY29uZmlnKSldCi0K
LSAgICAjIElmIG5vIGRpcmVjdG9yaWVzIHdlcmUgc3BlY2lmaWVkIGVpdGhlciB2aWEgLWEsIC1i
LCAtYywgb3IgZGlyZWN0bHksIHVzZQotICAgICMgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbi4K
LSAgICBlbGlmIG5vdCBidWlsZF9kaXJzOgotICAgICAgYnVpbGRfZGlycyA9IFtzZWxmLl9HZXRC
dWlsZERpckZvckNvbmZpZyhhdmFpbGFibGVfY29uZmlndXJhdGlvbnNbMF0pXQotCi0gICAgIyBN
YWtlcyBzdXJlIHRoZXJlIGFyZSBubyBkdXBsaWNhdGlvbnMuCi0gICAgYnVpbGRfZGlycyA9IHNl
dHMuU2V0KGJ1aWxkX2RpcnMpCi0KLSAgICBlcnJvcnNfZm91bmQgPSBGYWxzZQotICAgIGxpc3Rl
ZF9weXRob25fdGVzdHMgPSBbXSAgIyBBbGwgUHl0aG9uIHRlc3RzIGxpc3RlZCBvbiB0aGUgY29t
bWFuZCBsaW5lLgotICAgIGxpc3RlZF9iaW5hcnlfdGVzdHMgPSBbXSAgIyBBbGwgYmluYXJ5IHRl
c3RzIGxpc3RlZCBvbiB0aGUgY29tbWFuZCBsaW5lLgotCi0gICAgdGVzdF9kaXIgPSBzZWxmLm9z
LnBhdGgubm9ybXBhdGgoc2VsZi5vcy5wYXRoLmpvaW4oc2VsZi5zY3JpcHRfZGlyLCAndGVzdCcp
KQotCi0gICAgIyBTaWZ0cyB0aHJvdWdoIG5vbi1kaXJlY3RvcnkgYXJndW1lbnRzIGZpc2hpbmcg
Zm9yIGFueSBQeXRob24gb3IgYmluYXJ5Ci0gICAgIyB0ZXN0cyBhbmQgZGV0ZWN0aW5nIGVycm9y
cy4KLSAgICBmb3IgYXJndW1lbnQgaW4gc2V0cy5TZXQobm9ybWFsaXplZF9hcmdzKSAtIGJ1aWxk
X2RpcnM6Ci0gICAgICBpZiByZS5zZWFyY2goUFlUSE9OX1RFU1RfUkVHRVgsIGFyZ3VtZW50KToK
LSAgICAgICAgcHl0aG9uX3BhdGggPSBzZWxmLm9zLnBhdGguam9pbih0ZXN0X2RpciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9zLnBhdGguYmFzZW5hbWUo
YXJndW1lbnQpKQotICAgICAgICBpZiBzZWxmLm9zLnBhdGguaXNmaWxlKHB5dGhvbl9wYXRoKToK
LSAgICAgICAgICBsaXN0ZWRfcHl0aG9uX3Rlc3RzLmFwcGVuZChweXRob25fcGF0aCkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdVbmFibGUgdG8gZmluZCBQeXRo
b24gdGVzdCAlcycgJSBhcmd1bWVudCkKLSAgICAgICAgICBlcnJvcnNfZm91bmQgPSBUcnVlCi0g
ICAgICBlbGlmIHJlLnNlYXJjaChCSU5BUllfVEVTVF9SRUdFWCwgYXJndW1lbnQpOgotICAgICAg
ICAjIFRoaXMgc2NyaXB0IGFsc28gYWNjZXB0cyBiaW5hcnkgdGVzdCBuYW1lcyBwcmVmaXhlZCB3
aXRoIHRlc3QvIGZvcgotICAgICAgICAjIHRoZSBjb252ZW5pZW5jZSBvZiB0eXBpbmcgdGhlbSAo
Y2FuIHVzZSBwYXRoIGNvbXBsZXRpb25zIGluIHRoZQotICAgICAgICAjIHNoZWxsKS4gIFN0cmlw
cyB0ZXN0LyBwcmVmaXggZnJvbSB0aGUgYmluYXJ5IHRlc3QgbmFtZXMuCi0gICAgICAgIGxpc3Rl
ZF9iaW5hcnlfdGVzdHMuYXBwZW5kKHNlbGYub3MucGF0aC5iYXNlbmFtZShhcmd1bWVudCkpCi0g
ICAgICBlbHNlOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCclcyBpcyBuZWl0aGVyIHRlc3Qg
bm9yIGJ1aWxkIGRpcmVjdG9yeScgJSBhcmd1bWVudCkKLSAgICAgICAgZXJyb3JzX2ZvdW5kID0g
VHJ1ZQotCi0gICAgaWYgZXJyb3JzX2ZvdW5kOgotICAgICAgcmV0dXJuIE5vbmUKLQotICAgIHVz
ZXJfaGFzX2xpc3RlZF90ZXN0cyA9IGxpc3RlZF9weXRob25fdGVzdHMgb3IgbGlzdGVkX2JpbmFy
eV90ZXN0cwotCi0gICAgaWYgdXNlcl9oYXNfbGlzdGVkX3Rlc3RzOgotICAgICAgc2VsZWN0ZWRf
cHl0aG9uX3Rlc3RzID0gbGlzdGVkX3B5dGhvbl90ZXN0cwotICAgIGVsc2U6Ci0gICAgICBzZWxl
Y3RlZF9weXRob25fdGVzdHMgPSBzZWxmLl9GaW5kRmlsZXNCeVJlZ2V4KHRlc3RfZGlyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWVRIT05f
VEVTVF9SRUdFWCkKLQotICAgICMgVE9ETyh2bGFkbEBnb29nbGUuY29tKTogc2tpcCB1bmJ1aWx0
IFB5dGhvbiB0ZXN0cyB3aGVuIC1iIGlzIHNwZWNpZmllZC4KLSAgICBweXRob25fdGVzdF9wYWly
cyA9IFtdCi0gICAgZm9yIGRpcmVjdG9yeSBpbiBidWlsZF9kaXJzOgotICAgICAgZm9yIHRlc3Qg
aW4gc2VsZWN0ZWRfcHl0aG9uX3Rlc3RzOgotICAgICAgICBjb25maWcgPSBfR2V0Q29uZmlnRnJv
bUJ1aWxkRGlyKGRpcmVjdG9yeSkKLSAgICAgICAgZmlsZV9uYW1lID0gb3MucGF0aC5iYXNlbmFt
ZSh0ZXN0KQotICAgICAgICBpZiBweXRob25fdGVzdHNfdG9fc2tpcCBhbmQgKGNvbmZpZywgZmls
ZV9uYW1lKSBpbiBweXRob25fdGVzdHNfdG9fc2tpcDoKLSAgICAgICAgICBwcmludCAoJ05PVEU6
ICVzIGlzIHNraXBwZWQgZm9yIGNvbmZpZ3VyYXRpb24gJXMsIGFzIGl0IGRvZXMgbm90ICcKLSAg
ICAgICAgICAgICAgICAgJ3dvcmsgdGhlcmUuJyAlIChmaWxlX25hbWUsIGNvbmZpZykpCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgcHl0aG9uX3Rlc3RfcGFpcnMuYXBwZW5kKChkaXJlY3Rvcnks
IHRlc3QpKQotCi0gICAgYmluYXJ5X3Rlc3RfcGFpcnMgPSBbXQotICAgIGZvciBkaXJlY3Rvcnkg
aW4gYnVpbGRfZGlyczoKLSAgICAgIGlmIHVzZXJfaGFzX2xpc3RlZF90ZXN0czoKLSAgICAgICAg
YmluYXJ5X3Rlc3RfcGFpcnMuZXh0ZW5kKAotICAgICAgICAgICAgWyhkaXJlY3RvcnksIHNlbGYu
b3MucGF0aC5qb2luKGRpcmVjdG9yeSwgdGVzdCkpCi0gICAgICAgICAgICAgZm9yIHRlc3QgaW4g
bGlzdGVkX2JpbmFyeV90ZXN0c10pCi0gICAgICBlbHNlOgotICAgICAgICB0ZXN0cyA9IHNlbGYu
X0ZpbmRGaWxlc0J5UmVnZXgoZGlyZWN0b3J5LCBCSU5BUllfVEVTVF9TRUFSQ0hfUkVHRVgpCi0g
ICAgICAgIGJpbmFyeV90ZXN0X3BhaXJzLmV4dGVuZChbKGRpcmVjdG9yeSwgdGVzdCkgZm9yIHRl
c3QgaW4gdGVzdHNdKQotCi0gICAgcmV0dXJuIChweXRob25fdGVzdF9wYWlycywgYmluYXJ5X3Rl
c3RfcGFpcnMpCi0KLSAgZGVmIFJ1blRlc3RzKHNlbGYsIHB5dGhvbl90ZXN0cywgYmluYXJ5X3Rl
c3RzKToKLSAgICAiIiJSdW5zIFB5dGhvbiBhbmQgYmluYXJ5IHRlc3RzIGFuZCByZXBvcnRzIHJl
c3VsdHMgdG8gdGhlIHN0YW5kYXJkIG91dHB1dC4KLQotICAgIEFyZ3M6Ci0gICAgICBweXRob25f
dGVzdHM6IExpc3Qgb2YgUHl0aG9uIHRlc3RzIHRvIHJ1biBpbiB0aGUgZm9ybSBvZiB0dXBsZXMK
LSAgICAgICAgICAgICAgICAgICAgKGJ1aWxkIGRpcmVjdG9yeSwgUHl0aG9uIHRlc3Qgc2NyaXB0
KS4KLSAgICAgIGJpbmFyeV90ZXN0czogTGlzdCBvZiBiaW5hcnkgdGVzdHMgdG8gcnVuIGluIHRo
ZSBmb3JtIG9mIHR1cGxlcwotICAgICAgICAgICAgICAgICAgICAoYnVpbGQgZGlyZWN0b3J5LCBi
aW5hcnkgZmlsZSkuCi0KLSAgICBSZXR1cm5zOgotICAgICAgVGhlIGV4aXQgY29kZSB0aGUgcHJv
Z3JhbSBzaG91bGQgcGFzcyBpbnRvIHN5cy5leGl0KCkuCi0gICAgIiIiCi0KLSAgICBpZiBweXRo
b25fdGVzdHMgb3IgYmluYXJ5X3Rlc3RzOgotICAgICAgcmVzdWx0cyA9IFtdCi0gICAgICBmb3Ig
ZGlyZWN0b3J5LCB0ZXN0IGluIHB5dGhvbl90ZXN0czoKLSAgICAgICAgcmVzdWx0cy5hcHBlbmQo
KGRpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9SdW5QeXRob25UZXN0KHRlc3QsIGRpcmVjdG9yeSkgPT0gMCkpCi0g
ICAgICBmb3IgZGlyZWN0b3J5LCB0ZXN0IGluIGJpbmFyeV90ZXN0czoKLSAgICAgICAgcmVzdWx0
cy5hcHBlbmQoKGRpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub3MucGF0
aC5iYXNlbmFtZSh0ZXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX1J1bkJpbmFy
eVRlc3QodGVzdCkgPT0gMCkpCi0KLSAgICAgIGZhaWxlZCA9IFsoZGlyZWN0b3J5LCB0ZXN0KQot
ICAgICAgICAgICAgICAgIGZvciAoZGlyZWN0b3J5LCB0ZXN0LCBzdWNjZXNzKSBpbiByZXN1bHRz
Ci0gICAgICAgICAgICAgICAgaWYgbm90IHN1Y2Nlc3NdCi0gICAgICBwcmludAotICAgICAgcHJp
bnQgJyVkIHRlc3RzIHJ1bi4nICUgbGVuKHJlc3VsdHMpCi0gICAgICBpZiBmYWlsZWQ6Ci0gICAg
ICAgIHByaW50ICdUaGUgZm9sbG93aW5nICVkIHRlc3RzIGZhaWxlZDonICUgbGVuKGZhaWxlZCkK
LSAgICAgICAgZm9yIChkaXJlY3RvcnksIHRlc3QpIGluIGZhaWxlZDoKLSAgICAgICAgICBwcmlu
dCAnJXMgaW4gJXMnICUgKHRlc3QsIGRpcmVjdG9yeSkKLSAgICAgICAgcmV0dXJuIDEKLSAgICAg
IGVsc2U6Ci0gICAgICAgIHByaW50ICdBbGwgdGVzdHMgcGFzc2VkIScKLSAgICBlbHNlOiAgIyBO
byB0ZXN0cyBkZWZpbmVkCi0gICAgICBwcmludCAnTm90aGluZyB0byB0ZXN0IC0gbm8gdGVzdHMg
c3BlY2lmaWVkIScKLQotICAgIHJldHVybiAwCi0KLQotZGVmIFBhcnNlQXJncyhwcm9qZWN0X25h
bWUsIGFyZ3Y9Tm9uZSwgaGVscF9jYWxsYmFjaz1Ob25lKToKLSAgIiIiUGFyc2VzIHRoZSBvcHRp
b25zIHJ1bl90ZXN0cy5weSB1c2VzLiIiIgotCi0gICMgU3VwcHJlc3NlcyBsaW50IHdhcm5pbmcg
b24gdW51c2VkIGFyZ3VtZW50cy4gIFRoZXNlIGFyZ3VtZW50cyBhcmUKLSAgIyByZXF1aXJlZCBi
eSBvcHRwYXJzZSwgZXZlbiB0aG91Z2ggdGhleSBhcmUgdW51c2VkLgotICAjIHB5bGludDogZGlz
YWJsZS1tc2c9VzA2MTMKLSAgZGVmIFByaW50SGVscChvcHRpb24sIG9wdCwgdmFsdWUsIHBhcnNl
cik6Ci0gICAgcHJpbnQgSEVMUF9NU0cgJSB7J3Byb2onOiBwcm9qZWN0X25hbWV9Ci0gICAgc3lz
LmV4aXQoMSkKLQotICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQotICBwYXJzZXIu
YWRkX29wdGlvbignLWMnLAotICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlJywKLSAg
ICAgICAgICAgICAgICAgICAgZGVzdD0nY29uZmlndXJhdGlvbnMnLAotICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PU5vbmUpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctYScsCi0gICAgICAgICAg
ICAgICAgICAgIGFjdGlvbj0nc3RvcmVfY29uc3QnLAotICAgICAgICAgICAgICAgICAgICBkZXN0
PSdjb25maWd1cmF0aW9ucycsCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAg
ICAgICAgICAgICAgICAgICAgY29uc3Q9J2FsbCcpCi0gIHBhcnNlci5hZGRfb3B0aW9uKCctYics
Ci0gICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfY29uc3QnLAotICAgICAgICAgICAg
ICAgICAgICBkZXN0PSdidWlsdF9jb25maWd1cmF0aW9ucycsCi0gICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0PVRydWUpCi0gICMgUmVw
bGFjZXMgdGhlIGJ1aWx0LWluIGhlbHAgd2l0aCBvdXJzLgotICBwYXJzZXIucmVtb3ZlX29wdGlv
bignLWgnKQotICBwYXJzZXIuYWRkX29wdGlvbignLWgnLCAnLS1oZWxwJywKLSAgICAgICAgICAg
ICAgICAgICAgYWN0aW9uPSdjYWxsYmFjaycsCi0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr
PWhlbHBfY2FsbGJhY2sgb3IgUHJpbnRIZWxwKQotICByZXR1cm4gcGFyc2VyLnBhcnNlX2FyZ3Mo
YXJndikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3Rz
X3V0aWxfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3Rlc3QvcnVuX3Rlc3RzX3V0
aWxfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOWM1NTcyNmZkNTBiMmEw
YzI1MDY4MTQxZDdlNjY5NDNmMGI2ZGU3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC90ZXN0L3J1bl90ZXN0c191
dGlsX3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2NzYgKzAsMCBAQAotIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0
cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJUZXN0cyBmb3IgcnVuX3Rlc3RzX3V0aWwu
cHkgdGVzdCBydW5uZXIgc2NyaXB0LiIiIgotCi1fX2F1dGhvcl9fID0gJ3ZsYWRsQGdvb2dsZS5j
b20gKFZsYWQgTG9zZXYpJwotCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNldHMKLWlt
cG9ydCB1bml0dGVzdAotCi1pbXBvcnQgcnVuX3Rlc3RzX3V0aWwKLQotCi1HVEVTVF9EQkdfRElS
ID0gJ3Njb25zL2J1aWxkL2RiZy9ndGVzdC9zY29ucycKLUdURVNUX09QVF9ESVIgPSAnc2NvbnMv
YnVpbGQvb3B0L2d0ZXN0L3Njb25zJwotR1RFU1RfT1RIRVJfRElSID0gJ3Njb25zL2J1aWxkL290
aGVyL2d0ZXN0L3Njb25zJwotCi0KLWRlZiBBZGRFeGVFeHRlbnNpb24ocGF0aCk6Ci0gICIiIkFw
cGVuZHMgLmV4ZSB0byB0aGUgcGF0aCBvbiBXaW5kb3dzIG9yIEN5Z3dpbi4iIiIKLQotICBpZiBy
dW5fdGVzdHNfdXRpbC5JU19XSU5ET1dTIG9yIHJ1bl90ZXN0c191dGlsLklTX0NZR1dJTjoKLSAg
ICByZXR1cm4gcGF0aCArICcuZXhlJwotICBlbHNlOgotICAgIHJldHVybiBwYXRoCi0KLQotY2xh
c3MgRmFrZVBhdGgob2JqZWN0KToKLSAgIiIiQSBmYWtlIG9zLnBhdGggbW9kdWxlIGZvciB0ZXN0
aW5nLiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBjdXJyZW50X2Rpcj1vcy5nZXRjd2QoKSwg
a25vd25fcGF0aHM9Tm9uZSk6Ci0gICAgc2VsZi5jdXJyZW50X2RpciA9IGN1cnJlbnRfZGlyCi0g
ICAgc2VsZi50cmVlID0ge30KLSAgICBzZWxmLnBhdGhfc2VwYXJhdG9yID0gb3Muc2VwCi0KLSAg
ICAjIGtub3duX3BhdGhzIGNvbnRhaW5zIGVpdGhlciBhYnNvbHV0ZSBvciByZWxhdGl2ZSBwYXRo
cy4gUmVsYXRpdmUgcGF0aHMKLSAgICAjIGFyZSBhYnNvbHV0aXplZCB3aXRoIHNlbGYuY3VycmVu
dF9kaXIuCi0gICAgaWYga25vd25fcGF0aHM6Ci0gICAgICBzZWxmLl9BZGRQYXRocyhrbm93bl9w
YXRocykKLQotICBkZWYgX0FkZFBhdGgoc2VsZiwgcGF0aCk6Ci0gICAgZW5kc193aXRoX3NsYXNo
ID0gcGF0aC5lbmRzd2l0aCgnLycpCi0gICAgcGF0aCA9IHNlbGYuYWJzcGF0aChwYXRoKQotICAg
IGlmIGVuZHNfd2l0aF9zbGFzaDoKLSAgICAgIHBhdGggKz0gc2VsZi5wYXRoX3NlcGFyYXRvcgot
ICAgIG5hbWVfbGlzdCA9IHBhdGguc3BsaXQoc2VsZi5wYXRoX3NlcGFyYXRvcikKLSAgICB0cmVl
ID0gc2VsZi50cmVlCi0gICAgZm9yIG5hbWUgaW4gbmFtZV9saXN0WzotMV06Ci0gICAgICBpZiBu
b3QgbmFtZToKLSAgICAgICAgY29udGludWUKLSAgICAgIGlmIG5hbWUgaW4gdHJlZToKLSAgICAg
ICAgdHJlZSA9IHRyZWVbbmFtZV0KLSAgICAgIGVsc2U6Ci0gICAgICAgIHRyZWVbbmFtZV0gPSB7
fQotICAgICAgICB0cmVlID0gdHJlZVtuYW1lXQotCi0gICAgbmFtZSA9IG5hbWVfbGlzdFstMV0K
LSAgICBpZiBuYW1lOgotICAgICAgaWYgbmFtZSBpbiB0cmVlOgotICAgICAgICBhc3NlcnQgdHJl
ZVtuYW1lXSA9PSAxCi0gICAgICBlbHNlOgotICAgICAgICB0cmVlW25hbWVdID0gMQotCi0gIGRl
ZiBfQWRkUGF0aHMoc2VsZiwgcGF0aHMpOgotICAgIGZvciBwYXRoIGluIHBhdGhzOgotICAgICAg
c2VsZi5fQWRkUGF0aChwYXRoKQotCi0gIGRlZiBQYXRoRWxlbWVudChzZWxmLCBwYXRoKToKLSAg
ICAiIiJSZXR1cm5zIGFuIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGRpcmVjdG9yeSB0cmVl
IGVudHJ5IGZvciBwYXRoLiIiIgotICAgIHRyZWUgPSBzZWxmLnRyZWUKLSAgICBuYW1lX2xpc3Qg
PSBzZWxmLmFic3BhdGgocGF0aCkuc3BsaXQoc2VsZi5wYXRoX3NlcGFyYXRvcikKLSAgICBmb3Ig
bmFtZSBpbiBuYW1lX2xpc3Q6Ci0gICAgICBpZiBub3QgbmFtZToKLSAgICAgICAgY29udGludWUK
LSAgICAgIHRyZWUgPSB0cmVlLmdldChuYW1lLCBOb25lKQotICAgICAgaWYgdHJlZSBpcyBOb25l
OgotICAgICAgICBicmVhawotCi0gICAgcmV0dXJuIHRyZWUKLQotICAjIFNpbGVuY2VzIHB5bGlu
dCB3YXJuaW5nIGFib3V0IHVzaW5nIHN0YW5kYXJkIG5hbWVzLgotICAjIHB5bGludDogZGlzYWJs
ZS1tc2c9QzY0MDkKLSAgZGVmIG5vcm1wYXRoKHNlbGYsIHBhdGgpOgotICAgIHJldHVybiBvcy5w
YXRoLm5vcm1wYXRoKHBhdGgpCi0KLSAgZGVmIGFic3BhdGgoc2VsZiwgcGF0aCk6Ci0gICAgcmV0
dXJuIHNlbGYubm9ybXBhdGgob3MucGF0aC5qb2luKHNlbGYuY3VycmVudF9kaXIsIHBhdGgpKQot
Ci0gIGRlZiBpc2ZpbGUoc2VsZiwgcGF0aCk6Ci0gICAgcmV0dXJuIHNlbGYuUGF0aEVsZW1lbnQo
c2VsZi5hYnNwYXRoKHBhdGgpKSA9PSAxCi0KLSAgZGVmIGlzZGlyKHNlbGYsIHBhdGgpOgotICAg
IHJldHVybiB0eXBlKHNlbGYuUGF0aEVsZW1lbnQoc2VsZi5hYnNwYXRoKHBhdGgpKSkgPT0gdHlw
ZShkaWN0KCkpCi0KLSAgZGVmIGJhc2VuYW1lKHNlbGYsIHBhdGgpOgotICAgIHJldHVybiBvcy5w
YXRoLmJhc2VuYW1lKHBhdGgpCi0KLSAgZGVmIGRpcm5hbWUoc2VsZiwgcGF0aCk6Ci0gICAgcmV0
dXJuIG9zLnBhdGguZGlybmFtZShwYXRoKQotCi0gIGRlZiBqb2luKHNlbGYsICprYXJncyk6Ci0g
ICAgcmV0dXJuIG9zLnBhdGguam9pbigqa2FyZ3MpCi0KLQotY2xhc3MgRmFrZU9zKG9iamVjdCk6
Ci0gICIiIkEgZmFrZSBvcyBtb2R1bGUgZm9yIHRlc3RpbmcuIiIiCi0gIFBfV0FJVCA9IG9zLlBf
V0FJVAotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBmYWtlX3BhdGhfbW9kdWxlKToKLSAgICBzZWxm
LnBhdGggPSBmYWtlX3BhdGhfbW9kdWxlCi0KLSAgICAjIFNvbWUgbWV0aG9kcy9hdHRyaWJ1dGVz
IGFyZSBkZWxlZ2F0ZWQgdG8gdGhlIHJlYWwgb3MgbW9kdWxlLgotICAgIHNlbGYuZW52aXJvbiA9
IG9zLmVudmlyb24KLQotICAjIHB5bGludDogZGlzYWJsZS1tc2c9QzY0MDkKLSAgZGVmIGxpc3Rk
aXIoc2VsZiwgcGF0aCk6Ci0gICAgYXNzZXJ0IHNlbGYucGF0aC5pc2RpcihwYXRoKQotICAgIHJl
dHVybiBzZWxmLnBhdGguUGF0aEVsZW1lbnQocGF0aCkuaXRlcmtleXMoKQotCi0gIGRlZiBzcGF3
bnYoc2VsZiwgd2FpdCwgZXhlY3V0YWJsZSwgKmthcmdzKToKLSAgICBhc3NlcnQgd2FpdCA9PSBG
YWtlT3MuUF9XQUlUCi0gICAgcmV0dXJuIHNlbGYuc3Bhd25faW1wbChleGVjdXRhYmxlLCBrYXJn
cykKLQotCi1jbGFzcyBHZXRUZXN0c1RvUnVuVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICIi
IkV4ZXJjaXNlcyBUZXN0UnVubmVyLkdldFRlc3RzVG9SdW4uIiIiCi0KLSAgZGVmIE5vcm1hbGl6
ZUdldFRlc3RzVG9SdW5SZXN1bHRzKHNlbGYsIHJlc3VsdHMpOgotICAgICIiIk5vcm1hbGl6ZXMg
cGF0aCBkYXRhIHJldHVybmVkIGZyb20gR2V0VGVzdHNUb1J1biBmb3IgY29tcGFyaXNvbi4iIiIK
LQotICAgIGRlZiBOb3JtYWxpemVQeXRob25UZXN0UGFpcihwYWlyKToKLSAgICAgICIiIk5vcm1h
bGl6ZXMgcGF0aCBkYXRhIGluIHRoZSAoZGlyZWN0b3J5LCBweXRob25fc2NyaXB0KSBwYWlyLiIi
IgotCi0gICAgICByZXR1cm4gKG9zLnBhdGgubm9ybXBhdGgocGFpclswXSksIG9zLnBhdGgubm9y
bXBhdGgocGFpclsxXSkpCi0KLSAgICBkZWYgTm9ybWFsaXplQmluYXJ5VGVzdFBhaXIocGFpcik6
Ci0gICAgICAiIiJOb3JtYWxpemVzIHBhdGggZGF0YSBpbiB0aGUgKGRpcmVjdG9yeSwgYmluYXJ5
X2V4ZWN1dGFibGUpIHBhaXIuIiIiCi0KLSAgICAgIGRpcmVjdG9yeSwgZXhlY3V0YWJsZSA9IG1h
cChvcy5wYXRoLm5vcm1wYXRoLCBwYWlyKQotCi0gICAgICAjIE9uIFdpbmRvd3MgYW5kIEN5Z3dp
biwgdGhlIHRlc3QgZmlsZSBuYW1lcyBoYXZlIHRoZSAuZXhlIGV4dGVuc2lvbiwgYnV0Ci0gICAg
ICAjIHRoZXkgY2FuIGJlIGludm9rZWQgZWl0aGVyIGJ5IG5hbWUgb3IgYnkgbmFtZStleHRlbnNp
b24uIE91ciB0ZXN0IG11c3QKLSAgICAgICMgYWNjb21tb2RhdGUgYm90aCBzaXR1YXRpb25zLgot
ICAgICAgaWYgcnVuX3Rlc3RzX3V0aWwuSVNfV0lORE9XUyBvciBydW5fdGVzdHNfdXRpbC5JU19D
WUdXSU46Ci0gICAgICAgIGV4ZWN1dGFibGUgPSByZS5zdWIocidcLmV4ZSQnLCAnJywgZXhlY3V0
YWJsZSkKLSAgICAgIHJldHVybiAoZGlyZWN0b3J5LCBleGVjdXRhYmxlKQotCi0gICAgcHl0aG9u
X3Rlc3RzID0gc2V0cy5TZXQobWFwKE5vcm1hbGl6ZVB5dGhvblRlc3RQYWlyLCByZXN1bHRzWzBd
KSkKLSAgICBiaW5hcnlfdGVzdHMgPSBzZXRzLlNldChtYXAoTm9ybWFsaXplQmluYXJ5VGVzdFBh
aXIsIHJlc3VsdHNbMV0pKQotICAgIHJldHVybiAocHl0aG9uX3Rlc3RzLCBiaW5hcnlfdGVzdHMp
Ci0KLSAgZGVmIEFzc2VydFJlc3VsdHNFcXVhbChzZWxmLCByZXN1bHRzLCBleHBlY3RlZCk6Ci0g
ICAgIiIiQXNzZXJ0cyByZXN1bHRzIHJldHVybmVkIGJ5IEdldFRlc3RzVG9SdW4gZXF1YWwgdG8g
ZXhwZWN0ZWQgcmVzdWx0cy4iIiIKLQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5Ob3JtYWxp
emVHZXRUZXN0c1RvUnVuUmVzdWx0cyhyZXN1bHRzKSwKLSAgICAgICAgICAgICAgICAgICAgIHNl
bGYuTm9ybWFsaXplR2V0VGVzdHNUb1J1blJlc3VsdHMoZXhwZWN0ZWQpLAotICAgICAgICAgICAg
ICAgICAgICAgJ0luY29ycmVjdCBzZXQgb2YgdGVzdHMgcmV0dXJuZWQ6XG4lc1xuZXhwZWN0ZWQ6
XG4lcycgJQotICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdHMsIGV4cGVjdGVkKSkKLQotICBk
ZWYgc2V0VXAoc2VsZik6Ci0gICAgc2VsZi5mYWtlX29zID0gRmFrZU9zKEZha2VQYXRoKAotICAg
ICAgICBjdXJyZW50X2Rpcj1vcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKHJ1bl90ZXN0
c191dGlsLl9fZmlsZV9fKSksCi0gICAgICAgIGtub3duX3BhdGhzPVtBZGRFeGVFeHRlbnNpb24o
R1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAgICAgICAgICAg
IEFkZEV4ZUV4dGVuc2lvbihHVEVTVF9PUFRfRElSICsgJy9ndGVzdF91bml0dGVzdCcpLAotICAg
ICAgICAgICAgICAgICAgICAgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weSddKSkKLSAgICBzZWxm
LmZha2VfY29uZmlndXJhdGlvbnMgPSBbJ2RiZycsICdvcHQnXQotICAgIHNlbGYudGVzdF9ydW5u
ZXIgPSBydW5fdGVzdHNfdXRpbC5UZXN0UnVubmVyKHNjcmlwdF9kaXI9Jy4nLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluamVjdGVkX29zPXNlbGYu
ZmFrZV9vcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmplY3RlZF9zdWJwcm9jZXNzPU5vbmUpCi0KLSAgZGVmIHRlc3RCaW5hcnlUZXN0c09ubHko
c2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3RzVG9SdW4gd2l0aCBwYXJhbWV0ZXJzIGRl
c2lnbmF0aW5nIGJpbmFyeSB0ZXN0cyBvbmx5LiIiIgotCi0gICAgIyBBIGRlZmF1bHQgYnVpbGQu
Ci0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIu
R2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAg
ICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmln
dXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFtdLAotICAgICAg
ICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkp
Ci0KLSAgICAjIEFuIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGRpcmVjdG9yeS4KLSAgICBzZWxmLkFz
c2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVu
KAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIsICdndGVzdF91bml0dGVzdCddLAotICAgICAg
ICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25m
aWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAg
ICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0Jyld
KSkKLQotICAgICMgQSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24uCi0gICAgc2VsZi5Bc3NlcnRS
ZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAg
ICAgICAgICAgIFsnZ3Rlc3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICdvdGhlcicsCi0gICAg
ICAgICAgICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxm
LmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX09U
SEVSX0RJUiwgR1RFU1RfT1RIRVJfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAj
IEFsbCBhdmFpbGFibGUgY29uZmlndXJhdGlvbnMKLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVh
bCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAg
WydndGVzdF91bml0dGVzdCddLAotICAgICAgICAgICAgJ2FsbCcsCi0gICAgICAgICAgICBGYWxz
ZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmln
dXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNU
X0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIs
IEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgQWxsIGJ1aWx0
IGNvbmZpZ3VyYXRpb25zICh1bmJ1aWx0IGRvbid0IGNhdXNlIGZhaWx1cmUpLgotICAgIHNlbGYu
QXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9S
dW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAnJywKLSAg
ICAgICAgICAgIFRydWUsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2Vs
Zi5mYWtlX2NvbmZpZ3VyYXRpb25zICsgWyd1bmJ1aWx0J10pLAotICAgICAgICAoW10sCi0gICAg
ICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0Jyks
Ci0gICAgICAgICAgKEdURVNUX09QVF9ESVIsIEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0
ZXN0JyldKSkKLQotICAgICMgQSBjb21iaW5hdGlvbiBvZiBhbiBleHBsaWNpdCBkaXJlY3Rvcnkg
YW5kIGEgY29uZmlndXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAg
ICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgW0dURVNUX0RC
R19ESVIsICdndGVzdF91bml0dGVzdCddLAotICAgICAgICAgICAgJ29wdCcsCi0gICAgICAgICAg
ICBGYWxzZSwKLSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2Vf
Y29uZmlndXJhdGlvbnMpLAotICAgICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIs
IEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgKEdURVNUX09Q
VF9ESVIsIEdURVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgU2Ft
ZSB0ZXN0IHNwZWNpZmllZCBpbiBhbiBleHBsaWNpdCBkaXJlY3RvcnkgYW5kIHZpYSBhIGNvbmZp
Z3VyYXRpb24uCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVz
dF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rl
c3RfdW5pdHRlc3QnXSwKLSAgICAgICAgICAgICdkYmcnLAotICAgICAgICAgICAgRmFsc2UsCi0g
ICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRp
b25zKSwKLSAgICAgICAgKFtdLAotICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdf
RElSICsgJy9ndGVzdF91bml0dGVzdCcpXSkpCi0KLSAgICAjIEFsbCBidWlsdCBjb25maWd1cmF0
aW9ucyArIGV4cGxpY2l0IGRpcmVjdG9yeSArIGV4cGxpY2l0IGNvbmZpZ3VyYXRpb24uCi0gICAg
c2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVz
dHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rlc3RfdW5pdHRlc3QnXSwK
LSAgICAgICAgICAgICdvcHQnLAotICAgICAgICAgICAgVHJ1ZSwKLSAgICAgICAgICAgIGF2YWls
YWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAo
W10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3Vu
aXR0ZXN0JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIsIEdURVNUX09QVF9ESVIgKyAnL2d0
ZXN0X3VuaXR0ZXN0JyldKSkKLQotICBkZWYgdGVzdFB5dGhvblRlc3RzT25seShzZWxmKToKLSAg
ICAiIiJFeGVyY2lzZXMgR2V0VGVzdHNUb1J1biB3aXRoIHBhcmFtZXRlcnMgZGVzaWduYXRpbmcg
UHl0aG9uIHRlc3RzIG9ubHkuIiIiCi0KLSAgICAjIEEgZGVmYXVsdCBidWlsZC4KLSAgICBzZWxm
LkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1Rv
UnVuKAotICAgICAgICAgICAgWydndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAn
JywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRp
b25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIs
ICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEFu
IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGRpcmVjdG9yeS4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNF
cXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAg
ICAgW0dURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAg
ICAgICcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmln
dXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJH
X0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAg
ICMgQSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24uCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1
YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAg
IFsnZ3Rlc3RfY29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJ290aGVyJywKLSAgICAgICAg
ICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFr
ZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbKEdURVNUX09USEVSX0RJUiwgJ3Rlc3QvZ3Rl
c3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAgICMgQWxsIGF2YWlsYWJs
ZSBjb25maWd1cmF0aW9ucwotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBz
ZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ3Rlc3QvZ3Rlc3Rf
Y29sb3JfdGVzdC5weSddLAotICAgICAgICAgICAgJ2FsbCcsCi0gICAgICAgICAgICBGYWxzZSwK
LSAgICAgICAgICAgIGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJh
dGlvbnMpLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0
LnB5JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Qu
cHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEFsbCBidWlsdCBjb25maWd1cmF0aW9ucyAo
dW5idWlsdCBkb24ndCBjYXVzZSBmYWlsdXJlKS4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVh
bCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAg
WydndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIFRy
dWUsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZp
Z3VyYXRpb25zICsgWyd1bmJ1aWx0J10pLAotICAgICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVz
dC9ndGVzdF9jb2xvcl90ZXN0LnB5JyksCi0gICAgICAgICAgKEdURVNUX09QVF9ESVIsICd0ZXN0
L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAgICAgICBbXSkpCi0KLSAgICAjIEEgY29tYmlu
YXRpb24gb2YgYW4gZXhwbGljaXQgZGlyZWN0b3J5IGFuZCBhIGNvbmZpZ3VyYXRpb24uCi0gICAg
c2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuR2V0VGVz
dHNUb1J1bigKLSAgICAgICAgICAgIFtHVEVTVF9EQkdfRElSLCAnZ3Rlc3RfY29sb3JfdGVzdC5w
eSddLAotICAgICAgICAgICAgJ29wdCcsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAg
IGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAg
ICAgICAoWyhHVEVTVF9EQkdfRElSLCAndGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5JyksCi0gICAg
ICAgICAgKEdURVNUX09QVF9ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0sCi0gICAg
ICAgICBbXSkpCi0KLSAgICAjIFNhbWUgdGVzdCBzcGVjaWZpZWQgaW4gYW4gZXhwbGljaXQgZGly
ZWN0b3J5IGFuZCB2aWEgYSBjb25maWd1cmF0aW9uLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0Vx
dWFsKAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAg
ICBbR1RFU1RfREJHX0RJUiwgJ2d0ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICdk
YmcnLAotICAgICAgICAgICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJh
dGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJ
UiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgIFtdKSkKLQotICAgICMg
QWxsIGJ1aWx0IGNvbmZpZ3VyYXRpb25zICsgZXhwbGljaXQgZGlyZWN0b3J5ICsgZXhwbGljaXQg
Y29uZmlndXJhdGlvbi4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2Vs
Zi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgW0dURVNUX0RCR19ESVIs
ICdndGVzdF9jb2xvcl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnb3B0JywKLSAgICAgICAgICAg
IFRydWUsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2Nv
bmZpZ3VyYXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29s
b3JfdGVzdC5weScpLAotICAgICAgICAgIChHVEVTVF9PUFRfRElSLCAndGVzdC9ndGVzdF9jb2xv
cl90ZXN0LnB5JyldLAotICAgICAgICAgW10pKQotCi0gIGRlZiB0ZXN0Q29tYmluYXRpb25PZkJp
bmFyeUFuZFB5dGhvblRlc3RzKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBHZXRUZXN0c1RvUnVu
IHdpdGggbWl4ZWQgYmluYXJ5L1B5dGhvbiB0ZXN0cy4iIiIKLQotICAgICMgVXNlIG9ubHkgZGVm
YXVsdCBjb25maWd1cmF0aW9uIGZvciB0aGlzIHRlc3QuCi0KLSAgICAjIE5laXRoZXIgYmluYXJ5
IG5vciBQeXRob24gdGVzdHMgYXJlIHNwZWNpZmllZCBzbyBmaW5kIGFsbC4KLSAgICBzZWxmLkFz
c2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVu
KAotICAgICAgICAgICAgW10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAot
ICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0
aW9ucyksCi0gICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Qu
cHknKV0sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0
X3VuaXR0ZXN0JyldKSkKLQotICAgICMgU3BlY2lmeWluZyBib3RoIGJpbmFyeSBhbmQgUHl0aG9u
IHRlc3RzLgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFsKAotICAgICAgICBzZWxmLnRlc3Rf
cnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBbJ2d0ZXN0X3VuaXR0ZXN0JywgJ2d0
ZXN0X2NvbG9yX3Rlc3QucHknXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgRmFsc2Us
Ci0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtlX2NvbmZpZ3Vy
YXRpb25zKSwKLSAgICAgICAgKFsoR1RFU1RfREJHX0RJUiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVz
dC5weScpXSwKLSAgICAgICAgIFsoR1RFU1RfREJHX0RJUiwgR1RFU1RfREJHX0RJUiArICcvZ3Rl
c3RfdW5pdHRlc3QnKV0pKQotCi0gICAgIyBTcGVjaWZ5aW5nIGJpbmFyeSB0ZXN0cyBzdXBwcmVz
c2VzIFB5dGhvbiB0ZXN0cy4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAg
c2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF91bml0
dGVzdCddLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICBGYWxzZSwKLSAgICAgICAgICAg
IGF2YWlsYWJsZV9jb25maWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAg
ICAgICAoW10sCi0gICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0
ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgIyBTcGVjaWZ5aW5nIFB5dGhvbiB0ZXN0cyBzdXBwcmVz
c2VzIGJpbmFyeSB0ZXN0cy4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAg
c2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF9jb2xv
cl90ZXN0LnB5J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAg
ICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyks
Ci0gICAgICAgIChbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHknKV0s
Ci0gICAgICAgICBbXSkpCi0KLSAgZGVmIHRlc3RJZ25vcmVzTm9uVGVzdEZpbGVzKHNlbGYpOgot
ICAgICIiIlZlcmlmaWVzIHRoYXQgR2V0VGVzdHNUb1J1biBpZ25vcmVzIG5vbi10ZXN0IGZpbGVz
IGluIHRoZSBmaWxlc3lzdGVtLiIiIgotCi0gICAgc2VsZi5mYWtlX29zID0gRmFrZU9zKEZha2VQ
YXRoKAotICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1l
KHJ1bl90ZXN0c191dGlsLl9fZmlsZV9fKSksCi0gICAgICAgIGtub3duX3BhdGhzPVtBZGRFeGVF
eHRlbnNpb24oR1RFU1RfREJHX0RJUiArICcvZ3Rlc3Rfbm9udGVzdCcpLAotICAgICAgICAgICAg
ICAgICAgICAgJ3Rlc3QvJ10pKQotICAgIHNlbGYudGVzdF9ydW5uZXIgPSBydW5fdGVzdHNfdXRp
bC5UZXN0UnVubmVyKHNjcmlwdF9kaXI9Jy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluamVjdGVkX29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3RlZF9zdWJwcm9j
ZXNzPU5vbmUpCi0gICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgIHNlbGYudGVz
dF9ydW5uZXIuR2V0VGVzdHNUb1J1bigKLSAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgJycs
Ci0gICAgICAgICAgICBUcnVlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25z
PXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAgICAgIChbXSwgW10pKQotCi0gIGRlZiB0
ZXN0V29ya3NGcm9tRGlmZmVyZW50RGlyKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBHZXRUZXN0
c1RvUnVuIGZyb20gYSBkaXJlY3RvcnkgZGlmZmVyZW50IGZyb20gcnVuX3Rlc3QucHkncy4iIiIK
LQotICAgICMgSGVyZSB3ZSBzaW11bGF0ZSBhbiB0ZXN0IHNjcmlwdCBpbiBkaXJlY3RvcnkgL2Qv
IGNhbGxlZCBmcm9tIHRoZQotICAgICMgZGlyZWN0b3J5IC9hL2IvYy8uCi0gICAgc2VsZi5mYWtl
X29zID0gRmFrZU9zKEZha2VQYXRoKAotICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRoLmFic3Bh
dGgoJy9hL2IvYycpLAotICAgICAgICBrbm93bl9wYXRocz1bCi0gICAgICAgICAgICAnL2EvYi9j
LycsCi0gICAgICAgICAgICBBZGRFeGVFeHRlbnNpb24oJy9kLycgKyBHVEVTVF9EQkdfRElSICsg
Jy9ndGVzdF91bml0dGVzdCcpLAotICAgICAgICAgICAgQWRkRXhlRXh0ZW5zaW9uKCcvZC8nICsg
R1RFU1RfT1BUX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKSwKLSAgICAgICAgICAgICcvZC90ZXN0
L2d0ZXN0X2NvbG9yX3Rlc3QucHknXSkpCi0gICAgc2VsZi5mYWtlX2NvbmZpZ3VyYXRpb25zID0g
WydkYmcnLCAnb3B0J10KLSAgICBzZWxmLnRlc3RfcnVubmVyID0gcnVuX3Rlc3RzX3V0aWwuVGVz
dFJ1bm5lcihzY3JpcHRfZGlyPScvZC8nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluamVjdGVkX29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3RlZF9zdWJwcm9jZXNz
PU5vbmUpCi0gICAgIyBBIGJpbmFyeSB0ZXN0LgotICAgIHNlbGYuQXNzZXJ0UmVzdWx0c0VxdWFs
KAotICAgICAgICBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAgICAgICBb
J2d0ZXN0X3VuaXR0ZXN0J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAot
ICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0
aW9ucyksCi0gICAgICAgIChbXSwKLSAgICAgICAgIFsoJy9kLycgKyBHVEVTVF9EQkdfRElSLCAn
L2QvJyArIEdURVNUX0RCR19ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldKSkKLQotICAgICMgQSBQ
eXRob24gdGVzdC4KLSAgICBzZWxmLkFzc2VydFJlc3VsdHNFcXVhbCgKLSAgICAgICAgc2VsZi50
ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgWydndGVzdF9jb2xvcl90ZXN0
LnB5J10sCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAg
YXZhaWxhYmxlX2NvbmZpZ3VyYXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyksCi0gICAg
ICAgIChbKCcvZC8nICsgR1RFU1RfREJHX0RJUiwgJy9kL3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5w
eScpXSwgW10pKQotCi0gIGRlZiB0ZXN0Tm9uVGVzdEJpbmFyeShzZWxmKToKLSAgICAiIiJFeGVy
Y2lzZXMgR2V0VGVzdHNUb1J1biB3aXRoIGEgbm9uLXRlc3QgcGFyYW1ldGVyLiIiIgotCi0gICAg
c2VsZi5hc3NlcnRfKAotICAgICAgICBub3Qgc2VsZi50ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVu
KAotICAgICAgICAgICAgWydndGVzdF91bml0dGVzdF9ub3RfcmVhbGx5J10sCi0gICAgICAgICAg
ICAnJywKLSAgICAgICAgICAgIEZhbHNlLAotICAgICAgICAgICAgYXZhaWxhYmxlX2NvbmZpZ3Vy
YXRpb25zPXNlbGYuZmFrZV9jb25maWd1cmF0aW9ucykpCi0KLSAgZGVmIHRlc3ROb25FeGlzdGlu
Z1B5dGhvblRlc3Qoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIEdldFRlc3RzVG9SdW4gd2l0aCBh
IG5vbi1leGlzdGVudCBQeXRob24gdGVzdCBwYXJhbWV0ZXIuIiIiCi0KLSAgICBzZWxmLmFzc2Vy
dF8oCi0gICAgICAgIG5vdCBzZWxmLnRlc3RfcnVubmVyLkdldFRlc3RzVG9SdW4oCi0gICAgICAg
ICAgICBbJ25vbmV4aXN0ZW50X3Rlc3QucHknXSwKLSAgICAgICAgICAgICcnLAotICAgICAgICAg
ICAgRmFsc2UsCi0gICAgICAgICAgICBhdmFpbGFibGVfY29uZmlndXJhdGlvbnM9c2VsZi5mYWtl
X2NvbmZpZ3VyYXRpb25zKSkKLQotICBpZiBydW5fdGVzdHNfdXRpbC5JU19XSU5ET1dTIG9yIHJ1
bl90ZXN0c191dGlsLklTX0NZR1dJTjoKLQotICAgIGRlZiB0ZXN0RG9lc05vdFBpY2tOb25FeGVG
aWxlc09uV2luZG93cyhzZWxmKToKLSAgICAgICIiIlZlcmlmaWVzIHRoYXQgR2V0VGVzdHNUb1J1
biBkb2VzIG5vdCBmaW5kIF90ZXN0IGZpbGVzIG9uIFdpbmRvd3MuIiIiCi0KLSAgICAgIHNlbGYu
ZmFrZV9vcyA9IEZha2VPcyhGYWtlUGF0aCgKLSAgICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRo
LmFic3BhdGgob3MucGF0aC5kaXJuYW1lKHJ1bl90ZXN0c191dGlsLl9fZmlsZV9fKSksCi0gICAg
ICAgICAga25vd25fcGF0aHM9WycvZC8nICsgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdGVzdCcs
ICd0ZXN0LyddKSkKLSAgICAgIHNlbGYudGVzdF9ydW5uZXIgPSBydW5fdGVzdHNfdXRpbC5UZXN0
UnVubmVyKHNjcmlwdF9kaXI9Jy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5qZWN0ZWRfb3M9c2VsZi5mYWtlX29zLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5qZWN0ZWRfc3VicHJvY2Vz
cz1Ob25lKQotICAgICAgc2VsZi5Bc3NlcnRSZXN1bHRzRXF1YWwoCi0gICAgICAgICAgc2VsZi50
ZXN0X3J1bm5lci5HZXRUZXN0c1RvUnVuKAotICAgICAgICAgICAgICBbXSwKLSAgICAgICAgICAg
ICAgJycsCi0gICAgICAgICAgICAgIFRydWUsCi0gICAgICAgICAgICAgIGF2YWlsYWJsZV9jb25m
aWd1cmF0aW9ucz1zZWxmLmZha2VfY29uZmlndXJhdGlvbnMpLAotICAgICAgICAgIChbXSwgW10p
KQotCi0KLWNsYXNzIFJ1blRlc3RzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICIiIkV4ZXJj
aXNlcyBUZXN0UnVubmVyLlJ1blRlc3RzLiIiIgotCi0gIGRlZiBTcGF3blN1Y2Nlc3Moc2VsZiwg
dW51c2VkX2V4ZWN1dGFibGUsIHVudXNlZF9hcmd2KToKLSAgICAiIiJGYWtlcyB0ZXN0IHN1Y2Nl
c3MgYnkgcmV0dXJuaW5nIDAgYXMgYW4gZXhpdCBjb2RlLiIiIgotCi0gICAgc2VsZi5udW1fc3Bh
d25fY2FsbHMgKz0gMQotICAgIHJldHVybiAwCi0KLSAgZGVmIFNwYXduRmFpbHVyZShzZWxmLCB1
bnVzZWRfZXhlY3V0YWJsZSwgdW51c2VkX2FyZ3YpOgotICAgICIiIkZha2VzIHRlc3Qgc3VjY2Vz
cyBieSByZXR1cm5pbmcgMSBhcyBhbiBleGl0IGNvZGUuIiIiCi0KLSAgICBzZWxmLm51bV9zcGF3
bl9jYWxscyArPSAxCi0gICAgcmV0dXJuIDEKLQotICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgc2Vs
Zi5mYWtlX29zID0gRmFrZU9zKEZha2VQYXRoKAotICAgICAgICBjdXJyZW50X2Rpcj1vcy5wYXRo
LmFic3BhdGgob3MucGF0aC5kaXJuYW1lKHJ1bl90ZXN0c191dGlsLl9fZmlsZV9fKSksCi0gICAg
ICAgIGtub3duX3BhdGhzPVsKLSAgICAgICAgICAgIEFkZEV4ZUV4dGVuc2lvbihHVEVTVF9EQkdf
RElSICsgJy9ndGVzdF91bml0dGVzdCcpLAotICAgICAgICAgICAgQWRkRXhlRXh0ZW5zaW9uKEdU
RVNUX09QVF9ESVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyksCi0gICAgICAgICAgICAndGVzdC9ndGVz
dF9jb2xvcl90ZXN0LnB5J10pKQotICAgIHNlbGYuZmFrZV9jb25maWd1cmF0aW9ucyA9IFsnZGJn
JywgJ29wdCddCi0gICAgc2VsZi50ZXN0X3J1bm5lciA9IHJ1bl90ZXN0c191dGlsLlRlc3RSdW5u
ZXIoCi0gICAgICAgIHNjcmlwdF9kaXI9b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSBvciAnLics
Ci0gICAgICAgIGluamVjdGVkX29zPXNlbGYuZmFrZV9vcywKLSAgICAgICAgaW5qZWN0ZWRfc3Vi
cHJvY2Vzcz1Ob25lKQotICAgIHNlbGYubnVtX3NwYXduX2NhbGxzID0gMCAgIyBBIG51bWJlciBv
ZiBjYWxscyB0byBzcGF3bi4KLQotICBkZWYgdGVzdFJ1blB5dGhvblRlc3RTdWNjZXNzKHNlbGYp
OgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0cyB0byBoYW5kbGUgYSBQeXRob24gdGVzdCBzdWNj
ZXNzLiIiIgotCi0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxmLlNwYXduU3VjY2Vz
cwotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuUnVuVGVz
dHMoCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsICd0ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Qu
cHknKV0sCi0gICAgICAgICAgICBbXSksCi0gICAgICAgIDApCi0gICAgc2VsZi5hc3NlcnRFcXVh
bChzZWxmLm51bV9zcGF3bl9jYWxscywgMSkKLQotICBkZWYgdGVzdFJ1bkJpbmFyeVRlc3RTdWNj
ZXNzKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0cyB0byBoYW5kbGUgYSBiaW5hcnkg
dGVzdCBzdWNjZXNzLiIiIgotCi0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxmLlNw
YXduU3VjY2VzcwotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5u
ZXIuUnVuVGVzdHMoCi0gICAgICAgICAgICBbXSwKLSAgICAgICAgICAgIFsoR1RFU1RfREJHX0RJ
UiwgR1RFU1RfREJHX0RJUiArICcvZ3Rlc3RfdW5pdHRlc3QnKV0pLAotICAgICAgICAwKQotICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5udW1fc3Bhd25fY2FsbHMsIDEpCi0KLSAgZGVmIHRlc3RS
dW5QeXRob25UZXN0RmF1aWx1cmUoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIFJ1blRlc3RzIHRv
IGhhbmRsZSBhIFB5dGhvbiB0ZXN0IGZhaWx1cmUuIiIiCi0KLSAgICBzZWxmLmZha2Vfb3Muc3Bh
d25faW1wbCA9IHNlbGYuU3Bhd25GYWlsdXJlCi0gICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAg
ICAgc2VsZi50ZXN0X3J1bm5lci5SdW5UZXN0cygKLSAgICAgICAgICAgIFsoR1RFU1RfREJHX0RJ
UiwgJ3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weScpXSwKLSAgICAgICAgICAgIFtdKSwKLSAgICAg
ICAgMSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnVtX3NwYXduX2NhbGxzLCAxKQotCi0g
IGRlZiB0ZXN0UnVuQmluYXJ5VGVzdEZhaWx1cmUoc2VsZik6Ci0gICAgIiIiRXhlcmNpc2VzIFJ1
blRlc3RzIHRvIGhhbmRsZSBhIGJpbmFyeSB0ZXN0IGZhaWx1cmUuIiIiCi0KLSAgICBzZWxmLmZh
a2Vfb3Muc3Bhd25faW1wbCA9IHNlbGYuU3Bhd25GYWlsdXJlCi0gICAgc2VsZi5hc3NlcnRFcXVh
bCgKLSAgICAgICAgc2VsZi50ZXN0X3J1bm5lci5SdW5UZXN0cygKLSAgICAgICAgICAgIFtdLAot
ICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0
dGVzdCcpXSksCi0gICAgICAgIDEpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm51bV9zcGF3
bl9jYWxscywgMSkKLQotICBkZWYgdGVzdENvbWJpbmVkVGVzdFN1Y2Nlc3Moc2VsZik6Ci0gICAg
IiIiRXhlcmNpc2VzIFJ1blRlc3RzIHRvIGhhbmRsZSBhIHN1Y2Nlc3Mgb2YgYm90aCBQeXRob24g
YW5kIGJpbmFyeSB0ZXN0LiIiIgotCi0gICAgc2VsZi5mYWtlX29zLnNwYXduX2ltcGwgPSBzZWxm
LlNwYXduU3VjY2VzcwotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9y
dW5uZXIuUnVuVGVzdHMoCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19E
SVIgKyAnL2d0ZXN0X3VuaXR0ZXN0JyldLAotICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBH
VEVTVF9EQkdfRElSICsgJy9ndGVzdF91bml0dGVzdCcpXSksCi0gICAgICAgIDApCi0gICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZWxmLm51bV9zcGF3bl9jYWxscywgMikKLQotICBkZWYgdGVzdENvbWJp
bmVkVGVzdFN1Y2Nlc3NBbmRGYWlsdXJlKHNlbGYpOgotICAgICIiIkV4ZXJjaXNlcyBSdW5UZXN0
cyB0byBoYW5kbGUgYSBzdWNjZXNzIG9mIGJvdGggUHl0aG9uIGFuZCBiaW5hcnkgdGVzdC4iIiIK
LQotICAgIGRlZiBTcGF3bkltcGwoZXhlY3V0YWJsZSwgYXJndik6Ci0gICAgICBzZWxmLm51bV9z
cGF3bl9jYWxscyArPSAxCi0gICAgICAjIFNpbXVsYXRlcyBmYWlsdXJlIG9mIGEgUHl0aG9uIHRl
c3QgYW5kIHN1Y2Nlc3Mgb2YgYSBiaW5hcnkgdGVzdC4KLSAgICAgIGlmICcucHknIGluIGV4ZWN1
dGFibGUgb3IgJy5weScgaW4gYXJndlswXToKLSAgICAgICAgcmV0dXJuIDEKLSAgICAgIGVsc2U6
Ci0gICAgICAgIHJldHVybiAwCi0KLSAgICBzZWxmLmZha2Vfb3Muc3Bhd25faW1wbCA9IFNwYXdu
SW1wbAotICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgIHNlbGYudGVzdF9ydW5uZXIuUnVu
VGVzdHMoCi0gICAgICAgICAgICBbKEdURVNUX0RCR19ESVIsIEdURVNUX0RCR19ESVIgKyAnL2d0
ZXN0X3VuaXR0ZXN0JyldLAotICAgICAgICAgICAgWyhHVEVTVF9EQkdfRElSLCBHVEVTVF9EQkdf
RElSICsgJy9ndGVzdF91bml0dGVzdCcpXSksCi0gICAgICAgIDApCi0gICAgc2VsZi5hc3NlcnRF
cXVhbChzZWxmLm51bV9zcGF3bl9jYWxscywgMikKLQotCi1jbGFzcyBQYXJzZUFyZ3NUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKLSAgIiIiRXhlcmNpc2VzIFBhcnNlQXJncy4iIiIKLQotICBkZWYg
dGVzdE5vT3B0aW9ucyhzZWxmKToKLSAgICBvcHRpb25zLCBhcmdzID0gcnVuX3Rlc3RzX3V0aWwu
UGFyc2VBcmdzKCdndGVzdCcsIGFyZ3Y9WydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydEVx
dWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRfKG9wdGlvbnMuY29uZmln
dXJhdGlvbnMgaXMgTm9uZSkKLSAgICBzZWxmLmFzc2VydEZhbHNlKG9wdGlvbnMuYnVpbHRfY29u
ZmlndXJhdGlvbnMpCi0KLSAgZGVmIHRlc3RPcHRpb25DKHNlbGYpOgotICAgIG9wdGlvbnMsIGFy
Z3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoCi0gICAgICAgICdndGVzdCcsIGFyZ3Y9Wydz
Y3JpcHQucHknLCAnLWMnLCAnZGJnJ10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBbJ3Nj
cmlwdC5weSddKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5jb25maWd1cmF0aW9ucywg
J2RiZycpCi0gICAgc2VsZi5hc3NlcnRGYWxzZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRpb25z
KQotCi0gIGRlZiB0ZXN0T3B0aW9uQShzZWxmKToKLSAgICBvcHRpb25zLCBhcmdzID0gcnVuX3Rl
c3RzX3V0aWwuUGFyc2VBcmdzKCdndGVzdCcsIGFyZ3Y9WydzY3JpcHQucHknLCAnLWEnXSkKLSAg
ICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRF
cXVhbChvcHRpb25zLmNvbmZpZ3VyYXRpb25zLCAnYWxsJykKLSAgICBzZWxmLmFzc2VydEZhbHNl
KG9wdGlvbnMuYnVpbHRfY29uZmlndXJhdGlvbnMpCi0KLSAgZGVmIHRlc3RPcHRpb25CKHNlbGYp
OgotICAgIG9wdGlvbnMsIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoJ2d0ZXN0Jywg
YXJndj1bJ3NjcmlwdC5weScsICctYiddKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgWydz
Y3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydF8ob3B0aW9ucy5jb25maWd1cmF0aW9ucyBpcyBO
b25lKQotICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcHRpb25zLmJ1aWx0X2NvbmZpZ3VyYXRpb25zKQot
Ci0gIGRlZiB0ZXN0T3B0aW9uQ0FuZE9wdGlvbkIoc2VsZik6Ci0gICAgb3B0aW9ucywgYXJncyA9
IHJ1bl90ZXN0c191dGlsLlBhcnNlQXJncygKLSAgICAgICAgJ2d0ZXN0JywgYXJndj1bJ3Njcmlw
dC5weScsICctYycsICdkYmcnLCAnLWInXSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsn
c2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLmNvbmZpZ3VyYXRpb25z
LCAnZGJnJykKLSAgICBzZWxmLmFzc2VydFRydWUob3B0aW9ucy5idWlsdF9jb25maWd1cmF0aW9u
cykKLQotICBkZWYgdGVzdE9wdGlvbkgoc2VsZik6Ci0gICAgaGVscF9jYWxsZWQgPSBbRmFsc2Vd
Ci0KLSAgICAjIFN1cHByZXNzZXMgbGludCB3YXJuaW5nIG9uIHVudXNlZCBhcmd1bWVudHMuICBU
aGVzZSBhcmd1bWVudHMgYXJlCi0gICAgIyByZXF1aXJlZCBieSBvcHRwYXJzZSwgZXZlbiB0aG91
Z2ggdGhleSBhcmUgdW51c2VkLgotICAgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1XMDYxMwotICAg
IGRlZiBWZXJpZnlIZWxwKG9wdGlvbiwgb3B0LCB2YWx1ZSwgcGFyc2VyKToKLSAgICAgIGhlbHBf
Y2FsbGVkWzBdID0gVHJ1ZQotCi0gICAgIyBWZXJpZmllcyB0aGF0IC1oIGNhdXNlcyB0aGUgaGVs
cCBjYWxsYmFjayB0byBiZSBjYWxsZWQuCi0gICAgaGVscF9jYWxsZWRbMF0gPSBGYWxzZQotICAg
IF8sIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoCi0gICAgICAgICdndGVzdCcsIGFy
Z3Y9WydzY3JpcHQucHknLCAnLWgnXSwgaGVscF9jYWxsYmFjaz1WZXJpZnlIZWxwKQotICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYXJncywgWydzY3JpcHQucHknXSkKLSAgICBzZWxmLmFzc2VydFRydWUo
aGVscF9jYWxsZWRbMF0pCi0KLSAgICAjIFZlcmlmaWVzIHRoYXQgLS1oZWxwIGNhdXNlcyB0aGUg
aGVscCBjYWxsYmFjayB0byBiZSBjYWxsZWQuCi0gICAgaGVscF9jYWxsZWRbMF0gPSBGYWxzZQot
ICAgIF8sIGFyZ3MgPSBydW5fdGVzdHNfdXRpbC5QYXJzZUFyZ3MoCi0gICAgICAgICdndGVzdCcs
IGFyZ3Y9WydzY3JpcHQucHknLCAnLS1oZWxwJ10sIGhlbHBfY2FsbGJhY2s9VmVyaWZ5SGVscCkK
LSAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIFsnc2NyaXB0LnB5J10pCi0gICAgc2VsZi5hc3Nl
cnRUcnVlKGhlbHBfY2FsbGVkWzBdKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0g
IHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNv
ZGUvQ29uZmlnL0RlYnVnUHJvamVjdC54Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3hjb2RlL0NvbmZpZy9EZWJ1Z1Byb2plY3QueGNjb25maWcKaW5kZXggNTc2ZjNkOWJmMGUyNGY2
ZWU5ODkxODEzZTRlMThlNGYxYzFiZTQ2Mi4uNzZmM2FiMjk1YTkxMDY3OGM1NWM1MGZhN2Y4YWM3
NGU3NzMwMmY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29u
ZmlnL0RlYnVnUHJvamVjdC54Y2NvbmZpZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94
Y29kZS9Db25maWcvRGVidWdQcm9qZWN0LnhjY29uZmlnCkBAIC01LDcgKzUsNyBAQAogLy8gIGV4
YW1wbGVzLiBJdCBpcyBzZXQgaW4gdGhlICJCYXNlZCBPbjoiIGRyb3Bkb3duIGluIHRoZSAiUHJv
amVjdCIgaW5mbwogLy8gIGRpYWxvZy4KIC8vICBUaGlzIGZpbGUgaXMgYmFzZWQgb24gdGhlIFhj
b2RlIENvbmZpZ3VyYXRpb24gZmlsZXMgaW46Ci0vLyAgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L2dvb2dsZS10b29sYm94LWZvci1tYWMvCisvLyAgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9n
b29nbGUtdG9vbGJveC1mb3ItbWFjCiAvLyAKIAogI2luY2x1ZGUgIkdlbmVyYWwueGNjb25maWci
CkBAIC0yOSw5ICsyOSw2IEBAIE9USEVSX0NGTEFHUyA9ICQoT1RIRVJfQ0ZMQUdTKSAtRERFQlVH
PTEKIC8vIC8vIFR1cm5zIG9uIHNwZWNpYWwgQysrIFNUTCBjaGVja3MgdG8gImVuY291cmFnZSIg
Z29vZCBTVEwgdXNlCiAvLyBHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChHQ0NfUFJF
UFJPQ0VTU09SX0RFRklOSVRJT05TKSBfR0xJQkNYWF9ERUJVR19QRURBTlRJQyBfR0xJQkNYWF9E
RUJVRyBfR0xJQkNQUF9DT05DRVBUX0NIRUNLUwogCi0vLyBVc2VkIGJ5IEhFQURFUl9TRUFSQ0hf
UEFUSFMgaW4gR2VuZXJhbC54Y2NvbmZpZwotV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSID0g
JChCVUlMVF9QUk9EVUNUU19ESVIpL1dlYkNvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwot
CiBPTkxZX0FDVElWRV9BUkNIID0gWUVTCiAKIFNES1JPT1QgPSAkKFNES1JPT1RfJChVU0VfSU5U
RVJOQUxfU0RLKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9D
b25maWcvRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3Qv
eGNvZGUvQ29uZmlnL0ZyYW1ld29ya1RhcmdldC54Y2NvbmZpZwppbmRleCBmNGRhOWQyMzk5MTYz
NWFiZGNkYTgyYjZhMDZlYWMzZmM4NTg5MGFkLi43ZDAyNGNkMjk0ODY3YzE1NzMyYmUyZTg5Yzc5
Yjg3ZWJhZWRhZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9D
b25maWcvRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3hjb2RlL0NvbmZpZy9GcmFtZXdvcmtUYXJnZXQueGNjb25maWcKQEAgLTQsNyArNCw3IEBA
CiAvLyAgVGhlc2UgYXJlIEZyYW1ld29yayB0YXJnZXQgc2V0dGluZ3MgZm9yIHRoZSBndGVzdCBm
cmFtZXdvcmsgYW5kIGV4YW1wbGVzLiBJdAogLy8gIGlzIHNldCBpbiB0aGUgIkJhc2VkIE9uOiIg
ZHJvcGRvd24gaW4gdGhlICJUYXJnZXQiIGluZm8gZGlhbG9nLgogLy8gIFRoaXMgZmlsZSBpcyBi
YXNlZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBpbjoKLS8vICBodHRwOi8vY29k
ZS5nb29nbGUuY29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8KKy8vICBodHRwczovL2dpdGh1
Yi5jb20vZ29vZ2xlL2dvb2dsZS10b29sYm94LWZvci1tYWMKIC8vIAogCiAvLyBEeW5hbWljIGxp
YnMgbmVlZCB0byBiZSBwb3NpdGlvbiBpbmRlcGVuZGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL0dlbmVyYWwueGNjb25maWcgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvR2VuZXJhbC54Y2NvbmZpZwppbmRleCAzYmQyYTU4
NmE1NzA1ZmNmNjZlYzJkOTU5MmFmYWMzZDhkNmQ3ZGUwLi41M2UwM2RlNTFjYzJmOWI3MTU2YmQ1
Njc0YTE3M2EwZjNhM2ZhNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94
Y29kZS9Db25maWcvR2VuZXJhbC54Y2NvbmZpZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVz
dC94Y29kZS9Db25maWcvR2VuZXJhbC54Y2NvbmZpZwpAQCAtMTgsNyArMTgsNyBAQCBHQ0NfVkVS
U0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CiAKIEFSQ0hTID0gJChB
UkNIU19TVEFOREFSRF8zMl82NF9CSVQpOwogCi1IRUFERVJfU0VBUkNIX1BBVEhTID0gJChCVUlM
VF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlICIkKFdFQkNPUkVfUFJJVkFURV9IRUFE
RVJTX0RJUikvRm9yd2FyZGluZ0hlYWRlcnMiIC4uLyAuLi9pbmNsdWRlLworSEVBREVSX1NFQVJD
SF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZSAuLi8gLi4v
aW5jbHVkZS8KIAogLy8gWmVyb2xpbmsgcHJldmVudHMgbGluayB3YXJuaW5ncyBzbyB0dXJuIGl0
IG9mZgogWkVST19MSU5LID0gTk8KQEAgLTU5LDggKzU5LDYgQEAgQUxXQVlTX1NFQVJDSF9VU0VS
X1BBVEhTID0gTk8KIC8vIFR1cm4gb24gcG9zaXRpb24gZGVwZW5kZW50IGNvZGUgZm9yIG1vc3Qg
Y2FzZXMgKG92ZXJyaWRkZW4gd2hlcmUgYXBwcm9wcmlhdGUpCiBHQ0NfRFlOQU1JQ19OT19QSUMg
PSBZRVMKIAotR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoR0NDX1BSRVBST0NFU1NP
Ul9ERUZJTklUSU9OUykgR1RFU1RfSEFTX1RSMV9UVVBMRT0wIEdURVNUX0hBU19SVFRJPTA7Ci0K
IENMQU5HX0NYWF9MSUJSQVJZID0gbGliYysrOwogCiBUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9N
QUpPUiA9ICQoTUFDX09TX1hfVkVSU0lPTl9NQUpPUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvUHJvZHVjdGlvblByb2plY3QueGNjb25maWcgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9Db25maWcvUHJvZHVjdGlvblByb2plY3QueGNj
b25maWcKaW5kZXggMDE2YzY4NzhlOTc2MTAxODhkYWE4NjI5ZDM1MjFhYjk0Nzc2YmFjNi4uZDky
NzVmMDJmODU3MmEwMTgzNWM4NTA3OTdhZGFiY2I1MDQ1NjE5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1Byb2R1Y3Rpb25Qcm9qZWN0LnhjY29uZmln
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9Qcm9kdWN0aW9uUHJv
amVjdC54Y2NvbmZpZwpAQCAtMTAsMjUgKzEwLDYgQEAKIAogI2luY2x1ZGUgIlJlbGVhc2VQcm9q
ZWN0LnhjY29uZmlnIgogCi0vLyBVc2VkIGJ5IEhFQURFUl9TRUFSQ0hfUEFUSFMgaW4gR2VuZXJh
bC54Y2NvbmZpZwotV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSID0gJChXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVJfJChXS19VU0VfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVIpKTsKLVdFQkNP
UkVfUFJJVkFURV9IRUFERVJTX0RJUl9OTyA9ICQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdv
cmtzL1dlYktpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL1dlYkNvcmUuZnJhbWV3
b3JrL1ByaXZhdGVIZWFkZXJzOwotV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSX1lFUyA9ICQo
V0tfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVIpL1dlYkNvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFk
ZXJzOwotCi1GUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gJChXS19RVU9URURfT1ZFUlJJREVfRlJB
TUVXT1JLU19ESVIpICQoaW5oZXJpdGVkKTsKLQogT05MWV9BQ1RJVkVfQVJDSCA9IE5PCiAKIFNE
S1JPT1QgPSBtYWNvc3guaW50ZXJuYWw7Ci0KLVdLX0VNUFRZXyA9IFlFUzsKLVdLX05PVF8gPSBZ
RVM7Ci1XS19OT1RfWUVTID0gTk87Ci0KLVdLX1VTRV9PVkVSUklERV9GUkFNRVdPUktTX0RJUltz
ZGs9bWFjb3N4Kl0gPSAkKFdLX05PVF8kKFdLX0VNUFRZXyQoV0tfT1ZFUlJJREVfRlJBTUVXT1JL
U19ESVIpKSk7Ci0KLVdLX09WRVJSSURFX0ZSQU1FV09SS1NfRElSID0gJChXS19PVkVSUklERV9G
UkFNRVdPUktTX0RJUl9VU0VfU1RBR0lOR19JTlNUQUxMX1BBVEhfJChVU0VfU1RBR0lOR19JTlNU
QUxMX1BBVEgpKTsKLVdLX09WRVJSSURFX0ZSQU1FV09SS1NfRElSX1VTRV9TVEFHSU5HX0lOU1RB
TExfUEFUSF9ZRVMgPSAkKFNZU1RFTV9MSUJSQVJZX0RJUikvU3RhZ2VkRnJhbWV3b3Jrcy9TYWZh
cmk7Ci0KLVdLX1FVT1RFRF9PVkVSUklERV9GUkFNRVdPUktTX0RJUiA9ICQoV0tfUVVPVEVEX09W
RVJSSURFX0ZSQU1FV09SS1NfRElSXyQoV0tfVVNFX09WRVJSSURFX0ZSQU1FV09SS1NfRElSKSk7
Ci1XS19RVU9URURfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVJfWUVTID0gIiQoV0tfT1ZFUlJJREVf
RlJBTUVXT1JLU19ESVIpIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hj
b2RlL0NvbmZpZy9SZWxlYXNlUHJvamVjdC54Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0
ZXN0L3hjb2RlL0NvbmZpZy9SZWxlYXNlUHJvamVjdC54Y2NvbmZpZwppbmRleCAxM2U5MTdmYmZh
MmRkZjJkM2VlNTMxNTk4ZGMwZmIwZjJiNWJmODc2Li5lMGRkYmU5NjRkOWIwMDY3YWM5MWI2NjNl
YzQwZWVhZjA4OTM0Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29k
ZS9Db25maWcvUmVsZWFzZVByb2plY3QueGNjb25maWcKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QveGNvZGUvQ29uZmlnL1JlbGVhc2VQcm9qZWN0LnhjY29uZmlnCkBAIC01LDcgKzUsNyBA
QAogLy8gIGFuZCBleGFtcGxlcy4gSXQgaXMgc2V0IGluIHRoZSAiQmFzZWQgT246IiBkcm9wZG93
biBpbiB0aGUgIlByb2plY3QiIGluZm8KIC8vICBkaWFsb2cuCiAvLyAgVGhpcyBmaWxlIGlzIGJh
c2VkIG9uIHRoZSBYY29kZSBDb25maWd1cmF0aW9uIGZpbGVzIGluOgotLy8gIGh0dHA6Ly9jb2Rl
Lmdvb2dsZS5jb20vcC9nb29nbGUtdG9vbGJveC1mb3ItbWFjLworLy8gIGh0dHBzOi8vZ2l0aHVi
LmNvbS9nb29nbGUvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYwogLy8gCiAKICNpbmNsdWRlICJHZW5l
cmFsLnhjY29uZmlnIgpAQCAtMzEsOSArMzEsNiBAQCBPVEhFUl9DRkxBR1MgPSAkKE9USEVSX0NG
TEFHUykgLUROREVCVUc9MSAtV25vLXVudXNlZC12YXJpYWJsZQogLy8gV2hlbiB3ZSBzdHJpcCB3
ZSB3YW50IHRvIHN0cmlwIGFsbCBzeW1ib2xzIGluIHJlbGVhc2UsIGJ1dCBzYXZlIGV4dGVybmFs
cy4KIFNUUklQX1NUWUxFID0gYWxsCiAKLS8vIFVzZWQgYnkgSEVBREVSX1NFQVJDSF9QQVRIUyBp
biBHZW5lcmFsLnhjY29uZmlnCi1XRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIgPSAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvV2ViQ29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnM7Ci0KIE9OTFlf
QUNUSVZFX0FSQ0ggPSBZRVMKIAogU0RLUk9PVCA9ICQoU0RLUk9PVF8kKFVTRV9JTlRFUk5BTF9T
REspKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL0NvbmZpZy9T
dGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNv
ZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcKaW5kZXggZGQzMzI1NWE5NDQ3
NzAyMGNmMTFmNzA1NWU0NGFlMjUyOGViOWY5Ny4uMDRiNzNiYzkyZDAxMjFkOTU4ZjVmODY5OWRh
ZjM3N2ViNjk4YzM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUv
Q29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QveGNvZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcKQEAgLTQs
NyArNCw3IEBACiAvLyAgVGhlc2UgYXJlIHN0YXRpYyBsaWJyYXJ5IHRhcmdldCBzZXR0aW5ncyBm
b3IgbGliZ3Rlc3QuYS4gSXQKIC8vICBpcyBzZXQgaW4gdGhlICJCYXNlZCBPbjoiIGRyb3Bkb3du
IGluIHRoZSAiVGFyZ2V0IiBpbmZvIGRpYWxvZy4KIC8vICBUaGlzIGZpbGUgaXMgYmFzZWQgb24g
dGhlIFhjb2RlIENvbmZpZ3VyYXRpb24gZmlsZXMgaW46Ci0vLyAgaHR0cDovL2NvZGUuZ29vZ2xl
LmNvbS9wL2dvb2dsZS10b29sYm94LWZvci1tYWMvCisvLyAgaHR0cHM6Ly9naXRodWIuY29tL2dv
b2dsZS9nb29nbGUtdG9vbGJveC1mb3ItbWFjCiAvLyAKIAogLy8gU3RhdGljIGxpYnMgY2FuIGJl
IGluY2x1ZGVkIGluIGJ1bmRsZXMgc28gbWFrZSB0aGVtIHBvc2l0aW9uIGluZGVwZW5kZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29y
a1NhbXBsZS93aWRnZXRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL1Nh
bXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjCmluZGV4IDYxYzBkMmZmZDc2ZDE4
MDZhYTM1OTc5ZDhhZTM2NDEwNjQ4YWFhMTUuLjg3MjU5OTQyMTg1MTQwOGU3NmFhYjZjNTYwYjgx
ODkyNDU5YmJkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlL1Nh
bXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldF90ZXN0LmNjCkBA
IC0zNiw3ICszNiw3IEBACiAvLyBUaGlzIGlzIGEgc2ltcGxlIHRlc3QgZmlsZSBmb3IgdGhlIFdp
ZGdldCBjbGFzcyBpbiB0aGUgV2lkZ2V0LmZyYW1ld29yawogCiAjaW5jbHVkZSA8c3RyaW5nPgot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKIAogI2lu
Y2x1ZGUgPFdpZGdldC93aWRnZXQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QveGNvZGUvU2NyaXB0cy92ZXJzaW9uZ2VuZXJhdGUucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdC94Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weQpvbGQgbW9kZSAxMDA2NDQK
bmV3IG1vZGUgMTAwNzU1CmluZGV4IDgxZGU4Yzk2YWM1ZDg2Y2E2Mzk0NTZjOTBjNDMzMDY3YmRm
ZDQwZTUuLmJkZDc1NDFhZDc5N2ZhNjczZjY1ZGEzODE2OGUxNTgwZmQ3ZGRlM2EKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2NyaXB0cy92ZXJzaW9uZ2VuZXJhdGUucHkKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUvU2NyaXB0cy92ZXJzaW9uZ2VuZXJhdGUu
cHkKQEAgLTI5LDcgKzI5LDcgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSIi
IkEgc2NyaXB0IHRvIHByZXBhcmUgdmVyc2lvbiBpbmZvcm10aW9uIGZvciB1c2UgdGhlIGd0ZXN0
IEluZm8ucGxpc3QgZmlsZS4KKyIiIkEgc2NyaXB0IHRvIHByZXBhcmUgdmVyc2lvbiBpbmZvcm1h
dGlvbiBmb3IgdXNlIHRoZSBndGVzdCBJbmZvLnBsaXN0IGZpbGUuCiAKICAgVGhpcyBzY3JpcHQg
ZXh0cmFjdHMgdGhlIHZlcnNpb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgY29uZmlndXJlLmFjIGZp
bGUgYW5kCiAgIHVzZXMgaXQgdG8gZ2VuZXJhdGUgYSBoZWFkZXIgZmlsZSBjb250YWluaW5nIHRo
ZSBzYW1lIGluZm9ybWF0aW9uLiBUaGUKQEAgLTQyLDcgKzQyLDcgQEAKICAgICAxLiBUaGUgQUNf
SU5JVCBtYWNybyB3aWxsIGJlIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGZpcnN0IDEwMjQgY2hhcmFj
dGVycwogICAgICAgIG9mIGNvbmZpZ3VyZS5hYwogICAgIDIuIFRoZSB2ZXJzaW9uIHN0cmluZyB3
aWxsIGJlIDMgaW50ZWdlcnMgc2VwYXJhdGVkIGJ5IHBlcmlvZHMgYW5kIHdpbGwgYmUKLSAgICAg
ICBzdXJyb3VuZGVkIGJ5IHNxdXJlIGJyYWNrZXRzLCAiWyIgYW5kICJdIiAoZS5nLiBbMS4wLjFd
KS4gVGhlIGZpcnN0CisgICAgICAgc3Vycm91bmRlZCBieSBzcXVhcmUgYnJhY2tldHMsICJbIiBh
bmQgIl0iIChlLmcuIFsxLjAuMV0pLiBUaGUgZmlyc3QKICAgICAgICBzZWdtZW50IHJlcHJlc2Vu
dHMgdGhlIG1ham9yIHZlcnNpb24sIHRoZSBzZWNvbmQgcmVwcmVzZW50cyB0aGUgbWlub3IKICAg
ICAgICB2ZXJzaW9uIGFuZCB0aGUgdGhpcmQgcmVwcmVzZW50cyB0aGUgZml4IHZlcnNpb24uCiAg
ICAgMy4gTm8gIikiIGNoYXJhY3RlciBleGlzdHMgYmV0d2VlbiB0aGUgb3BlbmluZyAiKCIgYW5k
IGNsb3NpbmcgIikiIG9mCkBAIC02OCw3ICs2OCw3IEBAIGNvbmZpZ19maWxlLmNsb3NlKCkKIAog
IyBFeHRyYWN0IHRoZSB2ZXJzaW9uIHN0cmluZyBmcm9tIHRoZSBBQ19JTklUIG1hY3JvCiAjICAg
VGhlIGZvbGxvd2luZyBpbml0X2V4cHJlc3Npb24gbWVhbnM6Ci0jICAgICBFeHRyYWN0IHRocmVl
IGludGVnZXJzIHNlcGFyYXRlZCBieSBwZXJpb2RzIGFuZCBzdXJyb3VuZGVkIGJ5IHNxdXJlCisj
ICAgICBFeHRyYWN0IHRocmVlIGludGVnZXJzIHNlcGFyYXRlZCBieSBwZXJpb2RzIGFuZCBzdXJy
b3VuZGVkIGJ5IHNxdWFyZQogIyAgICAgYnJhY2tldHMoZS5nLiAiWzEuMC4xXSIpIGJldHdlZW4g
IkFDX0lOSVQoIiBhbmQgIikiLiBEbyBub3QgYmUgZ3JlZWR5CiAjICAgICAoKj8gaXMgdGhlIG5v
bi1ncmVlZHkgZmxhZykgc2luY2UgdGhhdCB3b3VsZCBwdWxsIGluIGV2ZXJ5dGhpbmcgYmV0d2Vl
bgogIyAgICAgdGhlIGZpcnN0ICIoIiBhbmQgdGhlIGxhc3QgIikiIGluIHRoZSBmaWxlLgpAQCAt
ODgsNyArODgsNyBAQCBmaWxlX2RhdGEgPSAiIiIvLwogLy8gaXMgZXhlY3V0ZWQgaW4gYSAiUnVu
IFNjcmlwdCIgYnVpbGQgcGhhc2Ugd2hlbiBjcmVhdGluZyBndGVzdC5mcmFtZXdvcmsuIFRoaXMK
IC8vIGhlYWRlciBmaWxlIGlzIG5vdCB1c2VkIGR1cmluZyBjb21waWxhdGlvbiBvZiBDLXNvdXJj
ZS4gUmF0aGVyLCBpdCBzaW1wbHkKIC8vIGRlZmluZXMgc29tZSB2ZXJzaW9uIHN0cmluZ3MgZm9y
IHN1YnN0aXR1dGlvbiBpbiB0aGUgSW5mby5wbGlzdC4gQmVjYXVzZSBvZgotLy8gdGhpcywgd2Ug
YXJlIG5vdCBub3QgcmVzdHJpY3RlZCB0byBDLXN5bnRheCBub3IgYXJlIHdlIHVzaW5nIGluY2x1
ZGUgZ3VhcmRzLgorLy8gdGhpcywgd2UgYXJlIG5vdCByZXN0cmljdGVkIHRvIEMtc3ludGF4IG5v
ciBhcmUgd2UgdXNpbmcgaW5jbHVkZSBndWFyZHMuCiAvLwogCiAjZGVmaW5lIEdURVNUX1ZFUlNJ
T05JTkZPX1NIT1JUICVzLiVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94
Y29kZS9ndGVzdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QveGNvZGUvZ3Rlc3QueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZmYzZmJh
ZmVmYmFhYzNiODM4MjQ4YjE3ZDU2ODc2YjNkNWY2YmU4Li42YzcwZGI5MTRmMmQ2NGQwMzg4Mzc0
ODZiZTI5ODk2ZTc3MjZjOWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94
Y29kZS9ndGVzdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2d0ZXN0L3hjb2RlL2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3LDcg
KzM3LDYgQEAKIC8qIEVuZCBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwotCQkxQTBBNEM0NTE0QjdBM0I1MDA4OTUxMzUgLyog
SmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUEwQTRDNDQxNEI3QTNCNTAwODk1MTM1IC8qIEphdmFTY3JpcHRD
b3JlLmZyYW1ld29yayAqLzsgfTsKIAkJMjI0QTEyQTMwRTlFQURDQzAwQkQxN0ZEIC8qIGd0ZXN0
LXRlc3QtcGFydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMjI0QTEyQTIwRTlFQURDQzAwQkQxN0ZEIC8qIGd0ZXN0LXRlc3QtcGFydC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJM0JGNkYyQTAwRTc5QjVB
RDAwMEYyRUVFIC8qIGd0ZXN0LXR5cGUtdXRpbC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQkY2RjI5RjBFNzlCNUFEMDAwRjJF
RUUgLyogZ3Rlc3QtdHlwZS11dGlsLmggKi87IH07CiAJCTNCRjZGMkE1MEU3OUI2MTYwMDBGMkVF
RSAvKiBndGVzdC10eXBlZC10ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzQkY2RjJBNDBFNzlCNjE2MDAwRjJFRUUgLyogZ3Rlc3QtdHlwZWQtdGVz
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKQEAgLTQ3
LDcgKzQ2LDcgQEAKIAkJNDA0ODg0M0IwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNERTBFMkY3OTlC
MDBDRjc2NTggLyogZ3Rlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMs
ICk7IH07IH07CiAJCTQwNDg4NDNDMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcmVkX2ltcGwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0RG
MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcmVkX2ltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTQwNDg4NDNEMEUyRjc5OUIwMENGNzY1OCAv
KiBndGVzdF9wcm9kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MDQ4ODNFMDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3RfcHJvZC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJNDA0ODg0NTAwRTJGNzk5QjAw
Q0Y3NjU4IC8qIFJFQURNRSBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRSAqLzsgfTsKKwkJNDA0
ODg0NTAwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJF
QURNRS5tZCAqLzsgfTsKIAkJNDA0ODg0QTAwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRo
LXRlc3QtaW50ZXJuYWwuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRTIwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWRl
YXRoLXRlc3QtaW50ZXJuYWwuaCAqLzsgfTsKIAkJNDA0ODg0QTEwRTJGN0JFNjAwQ0Y3NjU4IC8q
IGd0ZXN0LWZpbGVwYXRoLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0UzMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1m
aWxlcGF0aC5oICovOyB9OwogCQk0MDQ4ODRBMjBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3QtaW50
ZXJuYWwuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDA0ODgzRTQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWludGVybmFsLmgg
Ki87IH07CkBAIC01NSw3ICs1NCw3IEBACiAJCTQwNDg4NEE0MEUyRjdCRTYwMENGNzY1OCAvKiBn
dGVzdC1zdHJpbmcuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRTYwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXN0cmlu
Zy5oICovOyB9OwogCQk0MDQ4ODRBQzBFMkY3Q0Q5MDBDRjc2NTggLyogQ0hBTkdFUyBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODg0QTkwRTJGN0NE
OTAwQ0Y3NjU4IC8qIENIQU5HRVMgKi87IH07CiAJCTQwNDg4NEFEMEUyRjdDRDkwMENGNzY1OCAv
KiBDT05UUklCVVRPUlMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQwNDg4NEFBMEUyRjdDRDkwMENGNzY1OCAvKiBDT05UUklCVVRPUlMgKi87IH07Ci0J
CTQwNDg4NEFFMEUyRjdDRDkwMENGNzY1OCAvKiBDT1BZSU5HIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyog
Q09QWUlORyAqLzsgfTsKKwkJNDA0ODg0QUUwRTJGN0NEOTAwQ0Y3NjU4IC8qIExJQ0VOU0UgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4NEFCMEUy
RjdDRDkwMENGNzY1OCAvKiBMSUNFTlNFICovOyB9OwogCQk0MDg5OUYzQTBGRkE3MEQ0MDAwQjI5
QUUgLyogZ3Rlc3QtYWxsLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMjI0QTEyQTEwRTlFQURBNzAwQkQxN0ZEIC8qIGd0ZXN0LWFsbC5jYyAqLzsgfTsK
IAkJNDA4OTlGNTAwRkZBNzI4MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggaW4gQ29weSBIZWFk
ZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwODk5RjRE
MEZGQTcyNzEwMDBCMjlBRSAvKiBndGVzdC10dXBsZS5oICovOyB9OwogCQk0MDg5OUY1MzBGRkE3
MkEwMDAwQjI5QUUgLyogZ3Rlc3RfdW5pdHRlc3QuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQjIzOEMxMjBFN0ZFMTNDMDA4NDZFMTEgLyogZ3Rlc3Rf
dW5pdHRlc3QuY2MgKi87IH07CkBAIC03OSw2ICs3OCwxNCBAQAogCQk0NTM5QzkzODBFQzI4MEUy
MDBBNzBGNEMgLyogZ3Rlc3QtbGlua2VkX3B0ci5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTM5QzkzNTBFQzI4MEUyMDBBNzBG
NEMgLyogZ3Rlc3QtbGlua2VkX3B0ci5oICovOyB9OwogCQk0NTM5QzkzOTBFQzI4MEUyMDBBNzBG
NEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJu
YWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUzOUM5MzYwRUMyODBFMjAw
QTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmggKi87IH07CiAJCTQ1MzlDOTNB
MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLmggaW4gQ29weSBIZWFkZXJzIElu
dGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MzlDOTM3MEVDMjgw
RTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLmggKi87IH07CisJCTQ1NjdDODE4MTI2NEZG
NzEwMDc3NDBCRSAvKiBndGVzdC1wcmludGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDU2N0M4MTcxMjY0RkY3MTAwNzc0MEJFIC8qIGd0ZXN0LXBy
aW50ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9Owor
CQlGNjdENEYzRTFDN0Y1RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdENEYzRDFDN0Y1RDhCMDAx
N0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggKi87IH07CisJCUY2N0Q0RjNGMUM3RjVEQTcwMDE3
QzcyOSAvKiBndGVzdC1wb3J0LWFyY2guaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGM0QxQzdGNUQ4QjAwMTdDNzI5IC8q
IGd0ZXN0LXBvcnQtYXJjaC5oICovOyB9OworCQlGNjdENEY0NDFDN0Y1REQwMDAxN0M3MjkgLyog
Z3Rlc3QtcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjY3RDRGNDExQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCAqLzsgfTsKKwkJRjY3
RDRGNDUxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdENEY0MjFDN0Y1REQwMDAxN0M3Mjkg
LyogZ3Rlc3QtcHJpbnRlcnMuaCAqLzsgfTsKKwkJRjY3RDRGNDYxQzdGNUREMDAwMTdDNzI5IC8q
IGd0ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NjdENEY0MzFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QuaCAqLzsgfTsKKwkJRjY3RDRGNDgxQzdG
NUUxNjAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgQ3Vz
dG9tICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2N0Q0RjQxMUM3RjVERDAw
MDE3QzcyOSAvKiBndGVzdC1wb3J0LmggKi87IH07CisJCUY2N0Q0RjQ5MUM3RjVFMjYwMDE3Qzcy
OSAvKiBndGVzdC1wcmludGVycy5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20gKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGNDIxQzdGNUREMDAwMTdDNzI5
IC8qIGd0ZXN0LXByaW50ZXJzLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTE4OCw2
ICsxOTUsNyBAQAogCQkJCTQ1MzlDOTM4MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1saW5rZWRf
cHRyLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLAogCQkJCTQ1MzlDOTM5MEVDMjgwRTIw
MEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIGluIENvcHkgSGVhZGVycyBJ
bnRlcm5hbCAqLywKIAkJCQk0NTM5QzkzQTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0t
dXRpbC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKKwkJCQlGNjdENEYzRjFDN0Y1REE3
MDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICov
LAogCQkJCTQwNDg4NEEzMEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1wb3J0LmggaW4gQ29weSBI
ZWFkZXJzIEludGVybmFsICovLAogCQkJCTQwNDg4NEE0MEUyRjdCRTYwMENGNzY1OCAvKiBndGVz
dC1zdHJpbmcuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8sCiAJCQkJNDA4OTlGNTAwRkZB
NzI4MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICov
LApAQCAtMTk2LDEwICsyMDQsMjEgQEAKIAkJCW5hbWUgPSAiQ29weSBIZWFkZXJzIEludGVybmFs
IjsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OworCQlG
NjdENEY0NzFDN0Y1REY2MDAxN0M3MjkgLyogQ29weSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAq
LyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IEhlYWRlcnMvaW50ZXJuYWwvY3VzdG9tOwor
CQkJZHN0U3ViZm9sZGVyU3BlYyA9IDY7CisJCQlmaWxlcyA9ICgKKwkJCQlGNjdENEY0ODFDN0Y1
RTE2MDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0
b20gKi8sCisJCQkJRjY3RDRGNDkxQzdGNUUyNjAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmgg
aW4gQ29weSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLywKKwkJCSk7CisJCQluYW1lID0gIkNv
cHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20iOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CisJCX07CiAvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCQkxQTBBNEM0
NDE0QjdBM0I1MDA4OTUxMzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7
IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTIyNEExMkExMEU5RUFEQTcwMEJEMTdGRCAvKiBndGVzdC1hbGwuY2Mg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gImd0ZXN0LWFsbC5jYyI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIyNEExMkEyMEU5RUFEQ0MwMEJEMTdGRCAvKiBn
dGVzdC10ZXN0LXBhcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVz
dC10ZXN0LXBhcnQuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNCMjM4QzEyMEU3
RkUxM0MwMDg0NkUxMSAvKiBndGVzdF91bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IGd0ZXN0X3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjE4LDExICsyMzcsMTEgQEAKIAkJNDA0ODgzRTQwRTJGNzk5QjAwQ0Y3NjU4IC8q
IGd0ZXN0LWludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVz
dC1pbnRlcm5hbC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDA0ODgzRTUwRTJG
Nzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gImd0ZXN0LXBvcnQuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwNDg4
M0U2MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gImd0ZXN0LXN0cmluZy5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBSRUFETUU7IHBhdGggPSAuLi9SRUFETUU7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9P
VDsgfTsKKwkJNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBSRUFETUUubWQ7IHBhdGggPSAuLi9SRUFETUUubWQ7IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKIAkJNDA0ODg0MEQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X21h
aW4uY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBndGVzdF9tYWluLmNj
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MDQ4ODRBOTBFMkY3Q0Q5MDBDRjc2NTgg
LyogQ0hBTkdFUyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDSEFOR0VTOyBwYXRoID0gLi4vQ0hB
TkdFUzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk0MDQ4ODRBQTBFMkY3Q0Q5MDBD
Rjc2NTggLyogQ09OVFJJQlVUT1JTICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IENPTlRSSUJVVE9S
UzsgcGF0aCA9IC4uL0NPTlRSSUJVVE9SUzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9Owot
CQk0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogQ09QWUlORyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5h
bWUgPSBDT1BZSU5HOyBwYXRoID0gLi4vQ09QWUlORzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OworCQk0MDQ4ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogTElDRU5TRSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IG5hbWUgPSBMSUNFTlNFOyBwYXRoID0gLi4vTElDRU5TRTsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OwogCQk0MDg5OUY0MzBGRkE3MTg0MDAwQjI5QUUgLyogZ3Rlc3RfdW5pdHRlc3Qt
ZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGgg
PSAiZ3Rlc3RfdW5pdHRlc3QtZnJhbWV3b3JrIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJNDA4OTlGNEQwRkZBNzI3MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC10dXBsZS5oIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDA4OTlGQjMwRkZBNzU2NzAwMEIyOUFFIC8qIFN0YXRpY0xp
YnJhcnlUYXJnZXQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU3Rh
dGljTGlicmFyeVRhcmdldC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI0NSw2ICsyNjQsMTEgQEAKIAkJNDUzOUM5MzUwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LWxp
bmtlZF9wdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LWxpbmtl
ZF9wdHIuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1MzlDOTM2MEVDMjgwRTIw
MEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1MzlDOTM3MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1w
YXJhbS11dGlsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1wYXJh
bS11dGlsLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NTY3QzgxNzEyNjRGRjcx
MDA3NzQwQkUgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gImd0ZXN0LXByaW50ZXJzLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
NjdENEYzRDFDN0Y1RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1wb3J0LWFyY2guaCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUY2N0Q0RjQxMUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC1wb3J0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1wb3J0LmgiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNjdENEY0MjFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3Qt
cHJpbnRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXByaW50
ZXJzLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNjdENEY0MzFDN0Y1REQwMDAx
N0M3MjkgLyogZ3Rlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZ3Rlc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNl
Y3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpA
QCAtMjg0LDE0ICszMDgsNiBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwotCQk0NDREMTE3MjE0QTI2MjhGMDA5RkVDM0YgLyogRnJhbWV3
b3JrcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwotCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCTFBMEE0QzQ1MTRCN0Ez
QjUwMDg5NTEzNSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywK
LQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsK
IC8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBC
WEdyb3VwIHNlY3Rpb24gKi8KQEAgLTMxNiw3ICszMzIsNiBAQAogCQkJCTA4RkI3N0FDRkU4NDE3
MDdDMDJBQUMwNyAvKiBTb3VyY2UgKi8sCiAJCQkJNDBENENGNEUwRTMwRjVFMjAwMjk0ODAxIC8q
IFJlc291cmNlcyAqLywKIAkJCQk0MDNFRTM3QjBFMzc3ODIyMDA0QkQxRTIgLyogU2NyaXB0cyAq
LywKLQkJCQkxQTBBNEM0NjE0QjdBM0JDMDA4OTUxMzUgLyogRnJhbWV3b3JrcyAqLywKIAkJCQkw
MzQ3NjhEREZGMzhBNDVBMTFEQjlDOEIgLyogUHJvZHVjdHMgKi8sCiAJCQkpOwogCQkJbmFtZSA9
IGd0ZXN0OwpAQCAtMzI3LDI0ICszNDIsMTYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTQwNDg4
NEE5MEUyRjdDRDkwMENGNzY1OCAvKiBDSEFOR0VTICovLAogCQkJCTQwNDg4NEFBMEUyRjdDRDkw
MENGNzY1OCAvKiBDT05UUklCVVRPUlMgKi8sCi0JCQkJNDA0ODg0QUIwRTJGN0NEOTAwQ0Y3NjU4
IC8qIENPUFlJTkcgKi8sCiAJCQkJNDA0ODgzRDkwRTJGNzk5QjAwQ0Y3NjU4IC8qIGluY2x1ZGUg
Ki8sCi0JCQkJNDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRSAqLywKKwkJCQk0MDQ4
ODRBQjBFMkY3Q0Q5MDBDRjc2NTggLyogTElDRU5TRSAqLywKIAkJCQk0MDg5QTAyRjBGRkFDRjg0
MDAwQjI5QUUgLyogc2FtcGxlcyAqLywKIAkJCQk0MDQ4ODQwNzBFMkY3OTlCMDBDRjc2NTggLyog
c3JjICovLAogCQkJCTNCMjM4QkYwMEU3RkUxM0IwMDg0NkUxMSAvKiB0ZXN0ICovLAorCQkJCTQw
NDg4M0Y2MEUyRjc5OUIwMENGNzY1OCAvKiBSRUFETUUubWQgKi8sCiAJCQkpOwogCQkJbmFtZSA9
IFNvdXJjZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTFBMEE0QzQ2MTRC
N0EzQkMwMDg5NTEzNSAvKiBGcmFtZXdvcmtzICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0J
CQljaGlsZHJlbiA9ICgKLQkJCQkxQTBBNEM0NDE0QjdBM0I1MDA4OTUxMzUgLyogSmF2YVNjcmlw
dENvcmUuZnJhbWV3b3JrICovLAotCQkJKTsKLQkJCW5hbWUgPSBGcmFtZXdvcmtzOwotCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJM0IyMzhCRjAwRTdGRTEzQjAwODQ2RTExIC8q
IHRlc3QgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMzc5
LDYgKzM4Niw3IEBACiAJCQkJNDA0ODgzREIwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRo
LXRlc3QuaCAqLywKIAkJCQk0MDQ4ODNEQzBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtbWVzc2Fn
ZS5oICovLAogCQkJCTQ1MzlDOTMzMEVDMjgwQUUwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS10ZXN0
LmggKi8sCisJCQkJNDU2N0M4MTcxMjY0RkY3MTAwNzc0MEJFIC8qIGd0ZXN0LXByaW50ZXJzLmgg
Ki8sCiAJCQkJNDA0ODgzREQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXNwaS5oICovLAogCQkJ
CTIyNEExMkEyMEU5RUFEQ0MwMEJEMTdGRCAvKiBndGVzdC10ZXN0LXBhcnQuaCAqLywKIAkJCQkz
QkY2RjJBNDBFNzlCNjE2MDAwRjJFRUUgLyogZ3Rlc3QtdHlwZWQtdGVzdC5oICovLApAQCAtMzky
LDEyICs0MDAsMTQgQEAKIAkJNDA0ODgzRTEwRTJGNzk5QjAwQ0Y3NjU4IC8qIGludGVybmFsICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlGNjdENEY0MDFD
N0Y1REQwMDAxN0M3MjkgLyogY3VzdG9tICovLAogCQkJCTQwNDg4M0UyMEUyRjc5OUIwMENGNzY1
OCAvKiBndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmggKi8sCiAJCQkJNDA0ODgzRTMwRTJGNzk5
QjAwQ0Y3NjU4IC8qIGd0ZXN0LWZpbGVwYXRoLmggKi8sCiAJCQkJNDA0ODgzRTQwRTJGNzk5QjAw
Q0Y3NjU4IC8qIGd0ZXN0LWludGVybmFsLmggKi8sCiAJCQkJNDUzOUM5MzUwRUMyODBFMjAwQTcw
RjRDIC8qIGd0ZXN0LWxpbmtlZF9wdHIuaCAqLywKIAkJCQk0NTM5QzkzNjBFQzI4MEUyMDBBNzBG
NEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCAqLywKIAkJCQk0NTM5QzkzNzBFQzI4
MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC5oICovLAorCQkJCUY2N0Q0RjNEMUM3RjVE
OEIwMDE3QzcyOSAvKiBndGVzdC1wb3J0LWFyY2guaCAqLywKIAkJCQk0MDQ4ODNFNTBFMkY3OTlC
MDBDRjc2NTggLyogZ3Rlc3QtcG9ydC5oICovLAogCQkJCTQwNDg4M0U2MEUyRjc5OUIwMENGNzY1
OCAvKiBndGVzdC1zdHJpbmcuaCAqLywKIAkJCQk0MDg5OUY0RDBGRkE3MjcxMDAwQjI5QUUgLyog
Z3Rlc3QtdHVwbGUuaCAqLywKQEAgLTQ0OCw2ICs0NTgsMTYgQEAKIAkJCXBhdGggPSBSZXNvdXJj
ZXM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlGNjdENEY0MDFDN0Y1REQw
MDAxN0M3MjkgLyogY3VzdG9tICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQlGNjdENEY0MTFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oICovLAor
CQkJCUY2N0Q0RjQyMUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC1wcmludGVycy5oICovLAorCQkJ
CUY2N0Q0RjQzMUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC5oICovLAorCQkJKTsKKwkJCXBhdGgg
PSBjdXN0b207CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogLyogRW5kIFBCWEdy
b3VwIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LwpAQCAtNDU4LDkgKzQ3OCwxNCBAQAogCQkJCTQwNDg4NDM4MEUyRjc5OUIwMENGNzY1OCAvKiBn
dGVzdC1kZWF0aC10ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MDQ4ODQzOTBFMkY3OTlCMDBD
Rjc2NTggLyogZ3Rlc3QtbWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDUzOUM5MzQwRUMy
ODBBRTAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXRlc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUY2
N0Q0RjNFMUM3RjVEOEIwMDE3QzcyOSAvKiBndGVzdC1wb3J0LWFyY2guaCBpbiBIZWFkZXJzICov
LAorCQkJCUY2N0Q0RjQ0MUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC1wb3J0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGNjdENEY0NTFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcHJpbnRlcnMuaCBp
biBIZWFkZXJzICovLAorCQkJCTQ1NjdDODE4MTI2NEZGNzEwMDc3NDBCRSAvKiBndGVzdC1wcmlu
dGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0M0EwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0
ZXN0LXNwaS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjI0QTEyQTMwRTlFQURDQzAwQkQxN0ZEIC8q
IGd0ZXN0LXRlc3QtcGFydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0JGNkYyQTUwRTc5QjYxNjAw
MEYyRUVFIC8qIGd0ZXN0LXR5cGVkLXRlc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUY2N0Q0RjQ2
MUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDA0ODg0M0Iw
RTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MDQ4ODQzQzBF
MkY3OTlCMDBDRjc2NTggLyogZ3Rlc3RfcHJlZF9pbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MDQ4ODQzRDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3RfcHJvZC5oIGluIEhlYWRlcnMgKi8sCkBA
IC01NzcsOCArNjAyLDggQEAKIAkJCQk4RDA3RjJDMTA0ODZDQzdBMDA3Q0QxRDAgLyogU291cmNl
cyAqLywKIAkJCQk4RDA3RjJCRDA0ODZDQzdBMDA3Q0QxRDAgLyogSGVhZGVycyAqLywKIAkJCQk0
MDQ4ODRBNTBFMkY3QzA0MDBDRjc2NTggLyogQ29weSBIZWFkZXJzIEludGVybmFsICovLAorCQkJ
CUY2N0Q0RjQ3MUM3RjVERjYwMDE3QzcyOSAvKiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgQ3VzdG9t
ICovLAogCQkJCThEMDdGMkJGMDQ4NkNDN0EwMDdDRDFEMCAvKiBSZXNvdXJjZXMgKi8sCi0JCQkJ
NDQ0RDExNzIxNEEyNjI4RjAwOUZFQzNGIC8qIEZyYW1ld29ya3MgKi8sCiAJCQkpOwogCQkJYnVp
bGRSdWxlcyA9ICgKIAkJCSk7CkBAIC02MzgsOSArNjYzLDkgQEAKIAkJCWZpbGVzID0gKAogCQkJ
CTQwNDg4NEFDMEUyRjdDRDkwMENGNzY1OCAvKiBDSEFOR0VTIGluIFJlc291cmNlcyAqLywKIAkJ
CQk0MDQ4ODRBRDBFMkY3Q0Q5MDBDRjc2NTggLyogQ09OVFJJQlVUT1JTIGluIFJlc291cmNlcyAq
LywKLQkJCQk0MDQ4ODRBRTBFMkY3Q0Q5MDBDRjc2NTggLyogQ09QWUlORyBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkJNDBDODQ5NzgxMDFBMzY1NDAwODM2NDJBIC8qIGxpYmd0ZXN0X21haW4uYSBpbiBS
ZXNvdXJjZXMgKi8sCi0JCQkJNDA0ODg0NTAwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRSBpbiBS
ZXNvdXJjZXMgKi8sCisJCQkJNDA0ODg0QUUwRTJGN0NEOTAwQ0Y3NjU4IC8qIExJQ0VOU0UgaW4g
UmVzb3VyY2VzICovLAorCQkJCTQwNDg4NDUwMEUyRjc5OUIwMENGNzY1OCAvKiBSRUFETUUubWQg
aW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtODI0LDcgKzg0OSw2IEBACiAJCQlidWlsZFNldHRpbmdzID0g
ewogCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CiAJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9S
TUFUID0gImR3YXJmLXdpdGgtZHN5bSI7Ci0JCQkJR0NDX0VOQUJMRV9GSVhfQU5EX0NPTlRJTlVF
ID0gTk87CiAJCQkJUFJPRFVDVF9OQU1FID0gQ2hlY2s7CiAJCQkJWkVST19MSU5LID0gTk87CiAJ
CQl9OwpAQCAtMTAxMCw3ICsxMDM0LDYgQEAKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CiAJCQkJQ09Q
WV9QSEFTRV9TVFJJUCA9IFlFUzsKIAkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdh
cmYtd2l0aC1kc3ltIjsKLQkJCQlHQ0NfRU5BQkxFX0ZJWF9BTkRfQ09OVElOVUUgPSBOTzsKIAkJ
CQlQUk9EVUNUX05BTUUgPSBDaGVjazsKIAkJCQlaRVJPX0xJTksgPSBOTzsKIAkJCX07CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWE0MzNhZWVm
NTA2YjZmNDY1NTYwMTNiZmJiNDM2MWJmMjE5YWMxYS4uMWFjZjMzODQ3ZjI2ODJlMDEzNzg1ZGM3
YmE5YWYzZTg3NzUwNDlhMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTA4LTMwICBSb3NzIEtpcnNsaW5nICA8
cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBVcGRhdGUgZ29vZ2xldGVzdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NzIyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL2NvbmZpZy5oOgorICAgICAgICBJbnN0ZWFkIG9mIG1vZGlmeWluZyB0aGUgZ3Rlc3Qgc291
cmNlLCBhZGQgdGhlIG5lY2Vzc2FyeSBXVEYgaW5jbHVkZXMgaGVyZS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZworICAgICAgICBSZW1vdmUg
b2Jzb2xldGVkIGRlZmluaXRpb25zIEdURVNUX0hBU19UUjFfVFVQTEU9MCBhbmQgR1RFU1RfSEFT
X1JUVEk9MC4KKwogMjAxOC0wOS0wMSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGln
YWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gMi4yMS45MSBmYWlscyB0byBidWlsZCB3aXRoIEVO
QUJMRV9NSU5JQlJPV1NFUgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1
cmF0aW9ucy9CYXNlLnhjY29uZmlnIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9u
cy9CYXNlLnhjY29uZmlnCmluZGV4IDNjMmU1OWViNmM1ZDQxYzNiMmYzNDlmZmNjZTUyODQ2OGJj
YWEyNWIuLjNmNGJkZmJjOWI2MTRkMjczODEwNzljZTQ2MDJhNjZlNDIyNmM0YmYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZworKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKQEAgLTM1
LDcgKzM1LDcgQEAgQ0xBTkdfV0FSTl9DWFgwWF9FWFRFTlNJT05TID0gTk87CiBIRUFERVJfU0VB
UkNIX1BBVEhTID0gJHtCVUlMVF9QUk9EVUNUU19ESVJ9L3Vzci9sb2NhbC9pbmNsdWRlICQoV0VC
Q09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9Gb3J3YXJkaW5nSGVhZGVycyAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvV2ViQ29yZVRlc3RTdXBwb3J0OwogCiBHQ0NfTk9fQ09NTU9OX0JMT0NLUyA9IFlF
UzsKLUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAkKERFQlVHX0RFRklORVMpICQoRkVB
VFVSRV9ERUZJTkVTKSBHVEVTVF9IQVNfVFIxX1RVUExFPTAgR1RFU1RfSEFTX1JUVEk9MCBVX0RJ
U0FCTEVfUkVOQU1JTkc9MSBVX1NIT1dfQ1BMVVNQTFVTX0FQST0wICQoR0NDX1BSRVBST0NFU1NP
Ul9ERUZJTklUSU9OU18kKFBMQVRGT1JNX05BTUUpKTsKK0dDQ19QUkVQUk9DRVNTT1JfREVGSU5J
VElPTlMgPSAkKERFQlVHX0RFRklORVMpICQoRkVBVFVSRV9ERUZJTkVTKSBVX0RJU0FCTEVfUkVO
QU1JTkc9MSBVX1NIT1dfQ1BMVVNQTFVTX0FQST0wICQoR0NDX1BSRVBST0NFU1NPUl9ERUZJTklU
SU9OU18kKFBMQVRGT1JNX05BTUUpKTsKIEdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlNfbWFj
b3N4ID0gRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUOwogREVCVUdfSU5GT1JNQVRJT05fRk9STUFU
ID0gZHdhcmYtd2l0aC1kc3ltOwogUFJFQklORElORyA9IE5PCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvbmZpZy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAppbmRl
eCBlZGY4YTZmMWY1NmIwYmVkZmZlODRlNjYwZWU4ZWY1MDRjNGM1MmNhLi4wYzJjNGFlN2JmMGU5
Y2U1ZTk4Nzk1OGU1NDg0M2VkNDM3NDYyMjQ2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvbmZpZy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKQEAgLTU3LDgg
KzU3LDE0IEBACiAKICNpZmRlZiBfX2NwbHVzcGx1cwogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyN1bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUK
KyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2VuZGlmCiAKKyNpbmNsdWRlIDx3dGYvRGlz
YWxsb3dDVHlwZS5oPgorCiAjaWZkZWYgX19jbGFuZ19fCiAvLyBGaW5pc2ggd29ya2luZyBhcm91
bmQgdGhlIGxlc3Mgc3RyaWN0IGNvZGluZyBzdGFuZGFyZHMgb2YgdGhlIGd0ZXN0IGZyYW1ld29y
ay4KICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AK
</data>

          </attachment>
      

    </bug>

</bugzilla>